<?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>237945</bug_id>
          
          <creation_ts>2022-03-15 23:56:36 -0700</creation_ts>
          <short_desc>Remove no longer used third party webrtc modules</short_desc>
          <delta_ts>2022-03-17 00:34:21 -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>WebRTC</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851673</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-15 23:56:36 -0700</bug_when>
    <thetext>Remove no longer used third party webrtc modules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851674</commentid>
    <comment_count>1</comment_count>
      <attachid>454806</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-16 00:02:13 -0700</bug_when>
    <thetext>Created attachment 454806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851706</commentid>
    <comment_count>2</comment_count>
      <attachid>454813</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-16 03:13:07 -0700</bug_when>
    <thetext>Created attachment 454813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852160</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-17 00:33:04 -0700</bug_when>
    <thetext>Committed r291391 (248521@main): &lt;https://commits.webkit.org/248521@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454813.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852161</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-17 00:34:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/90415588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454806</attachid>
            <date>2022-03-16 00:02:13 -0700</date>
            <delta_ts>2022-03-16 03:13:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237945-20220316080045.patch</filename>
            <type>text/plain</type>
            <size>7506422</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBjYzJiNDEyNGIzYmU2NzRhYWI3MTA3NmE2NDdjMTcwNTRlZmI4M2I4Li45MjJj
MTQ2ZGI2ZDc3MmIzNDc5ZTZhNjhmNzAwMTAyNTI2ZTE5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0xNSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG5vIGxvbmdlciB1c2Vk
IHRoaXJkIHBhcnR5IHdlYnJ0YyBtb2R1bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZm9sZGVycyB0aGF0IGhhdmUgbm90IGJlZW4gdXNl
ZCBmb3IgYSBsb25nIHRpbWUuCisKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
OiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0OiBSZW1v
dmVkLgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcDogUmVtb3ZlZC4KKwogMjAy
Mi0wMy0xNCAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTEyMzkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL0JVSUxELmduCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjQxYjdlY2JmY2ViMjVjYTY5Zjc4ZGIxZjJl
Y2ZhMTViZjE0ZmFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L0JVSUxELmduCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMp
IDIwMTQgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0j
Ci0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UKLSMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBvZiB0aGUgc291cmNlCi0jIHRyZWUuIEFuIGFkZGl0aW9uYWwgaW50ZWxsZWN0dWFsIHByb3Bl
cnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKLSMgaW4gdGhlIGZpbGUgUEFURU5UUy4gIEFs
bCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQotIyBiZSBmb3VuZCBpbiB0aGUgQVVU
SE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLQotaWYgKGlzX3dpbikg
ewotICBnZmxhZ3NfZ2VuX2FyY2hfcm9vdCA9ICJnZW4vd2luIgotfSBlbHNlIHsKLSAgZ2ZsYWdz
X2dlbl9hcmNoX3Jvb3QgPSAiZ2VuL3Bvc2l4IgotfQotCi1jb25maWcoImdmbGFnc19jb25maWci
KSB7Ci0gIGluY2x1ZGVfZGlycyA9IFsKLSAgICAiJGdmbGFnc19nZW5fYXJjaF9yb290L2luY2x1
ZGUiLCAgIyBGb3IgY29uZmlndXJlZCBmaWxlcy4KLSAgICAic3JjL3NyYyIsICAjIEZvciBldmVy
eXRoaW5nIGVsc2UuCi0gIF0KLQotICBkZWZpbmVzID0gWwotICAgICMgVGhlc2UgbWFjcm9zIGV4
aXN0IHNvIGZsYWdzIGFuZCBzeW1ib2xzIGFyZSBwcm9wZXJseSBleHBvcnRlZCB3aGVuCi0gICAg
IyBidWlsZGluZyBETExzLiBTaW5jZSB3ZSBkb24ndCBidWlsZCBETExzLCB3ZSBuZWVkIHRvIGRp
c2FibGUgdGhlbS4KLSAgICAiR0ZMQUdTX0RMTF9ERUNMPSIsCi0gICAgIkdGTEFHU19ETExfREVD
TEFSRV9GTEFHPSIsCi0gICAgIkdGTEFHU19ETExfREVGSU5FX0ZMQUc9IiwKLSAgXQotCi0gICMg
R04gb3JkZXJzIGZsYWdzIG9uIGEgdGFyZ2V0IGJlZm9yZSBmbGFncyBmcm9tIGNvbmZpZ3MuIFRo
ZSBkZWZhdWx0IGNvbmZpZwotICAjIGFkZHMgLVdhbGwsIGFuZCB0aGlzIGZsYWcgaGF2ZSB0byBi
ZSBhZnRlciAtV2FsbCAtLSBzbyB0aGV5IG5lZWQgdG8KLSAgIyBjb21lIGZyb20gYSBjb25maWcg
YW5kIGNhbid0IGJlIG9uIHRoZSB0YXJnZXQgZGlyZWN0bHkuCi0gIGlmIChpc19jbGFuZykgewot
ICAgIGNmbGFncyA9IFsgIi1Xbm8tdW51c2VkLWxvY2FsLXR5cGVkZWYiIF0KLSAgfQotfQotCi1z
b3VyY2Vfc2V0KCJnZmxhZ3MiKSB7Ci0gIGNmbGFncyA9IFtdCi0gIHNvdXJjZXMgPSBbCi0gICAg
InNyYy9zcmMvZ2ZsYWdzLmNjIiwKLSAgICAic3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuY2Mi
LAotICAgICJzcmMvc3JjL2dmbGFnc19yZXBvcnRpbmcuY2MiLAotICBdCi0gIGlmIChpc193aW4p
IHsKLSAgICBzb3VyY2VzICs9IFsgInNyYy9zcmMvd2luZG93c19wb3J0LmNjIiBdCi0KLSAgICBj
ZmxhZ3MgKz0gWwotICAgICAgIi93ZDQwMDUiLCAgIyBXSU4zMl9MRUFOX0FORF9NRUFOLgotICAg
ICAgIi93ZDQyNjciLCAgIyBDb252ZXJzaW9uIGZyb20gc2l6ZV90IHRvICJ0eXBlIi4KLSAgICBd
Ci0gIH0KLQotICBpbmNsdWRlX2RpcnMgPSBbCi0gICAgIiRnZmxhZ3NfZ2VuX2FyY2hfcm9vdC9p
bmNsdWRlL2dmbGFncyIsICAjIEZvciBjb25maWd1cmVkIGZpbGVzLgotICAgICIkZ2ZsYWdzX2dl
bl9hcmNoX3Jvb3QvaW5jbHVkZS9wcml2YXRlIiwgICMgRm9yIGNvbmZpZy5oCi0gIF0KLQotICBw
dWJsaWNfY29uZmlncyA9IFsgIjpnZmxhZ3NfY29uZmlnIiBdCi0KLSAgY29uZmlncyAtPSBbICIv
L2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCi0gIGNvbmZpZ3MgKz0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIgXQotCi0gIGlmIChpc193
aW4pIHsKLSAgICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL3dpbjp1bmljb2RlIiBdCi0g
IH0KLQotICBpZiAoaXNfY2xhbmcpIHsKLSAgICAjIFRPRE8oYW5kcmV3KTogTG9vayBpbnRvIGZp
eGluZyB0aGlzIHdhcm5pbmcgdXBzdHJlYW06Ci0gICAgIyBodHRwOi8vY29kZS5nb29nbGUuY29t
L3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NzYwCi0gICAgY29uZmlncyAtPSBbICIvL2J1aWxk
L2NvbmZpZy9jbGFuZzpleHRyYV93YXJuaW5ncyIgXQotICAgIGNmbGFncyArPSBbICItV25vLW1p
Y3Jvc29mdC1pbmNsdWRlIiBdCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL0xJQ0VOU0UgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9MSUNFTlNFCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTViMGMyNDEzNGRlOGNlMDE4NWFjMjJjYjJkZDk2
ZTIzOTExZmFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL0xJ
Q0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgKGMpIDIwMDYs
IEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3MvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3MvT1dORVJTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmYTgzMjY5YjE4OGUxYjk0MWVmYjI3ZWI3YzU5MGU3NmUyZGMzMDc0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL09XTkVSUworKysgL2Rldi9udWxsCkBAIC0x
LDYgKzAsMCBAQAota2plbGxhbmRlckB3ZWJydGMub3JnCi0KLSMgVGhlc2UgYXJlIGZvciB0aGUg
Y29tbW9uIGNhc2Ugb2YgYWRkaW5nIG9yIHJlbmFtaW5nIGZpbGVzLiBJZiB5b3UncmUgZG9pbmcK
LSMgc3RydWN0dXJhbCBjaGFuZ2VzLCBwbGVhc2UgZ2V0IGEgcmV2aWV3IGZyb20gYSByZXZpZXdl
ciBpbiB0aGlzIGZpbGUuCi1wZXItZmlsZSAqLmd5cD0qCi1wZXItZmlsZSAqLmd5cGk9KgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3MvUkVBRE1FLndlYnJ0YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL1JFQURNRS53ZWJydGMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE4YTk4MzBhNjFhMDdmNDNkZWQ0NGYzYWQ5MzhhODQ2NGVlN2YyNmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvUkVBRE1FLndlYnJ0YworKysgL2Rl
di9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVSTDogaHR0cHM6Ly9naXRodWIuY29tL2dmbGFncy9n
ZmxhZ3MKLVZlcnNpb246IDIuMS4yCi1MaWNlbnNlOiBOZXcgQlNECi1MaWNlbnNlIEZpbGU6IExJ
Q0VOU0UKLQotRGVzY3JpcHRpb246Ci1UaGUgZ2ZsYWdzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJy
YXJ5IHRoYXQgaW1wbGVtZW50cyBjb21tYW5kbGluZQotZmxhZ3MgcHJvY2Vzc2luZy4gQXMgc3Vj
aCBpdCdzIGEgcmVwbGFjZW1lbnQgZm9yIGdldG9wdCgpLiBJdCBoYXMKLWluY3JlYXNlZCBmbGV4
aWJpbGl0eSwgaW5jbHVkaW5nIGJ1aWx0LWluIHN1cHBvcnQgZm9yIEMrKyB0eXBlcyBsaWtlCi1z
dHJpbmcsIGFuZCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgZmxhZ3MgaW4gdGhlIHNvdXJjZSBmaWxl
IGluIHdoaWNoCi10aGV5J3JlIHVzZWQuCi0KLUxvY2FsIE1vZGlmaWNhdGlvbnM6IE5vbmUKLQot
Ci1Ib3cgdG8gdXBkYXRlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZXM6Ci1UaGUgZ2VuLyBk
aXJlY3RvcnkgY29udGFpbnMgcHJlLWdlbmVyYXRlZCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxl
cy4KLUhpc3RvcmljYWxseSwgYWxsIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBhcmNoaXRlY3R1cmVz
IGhhdmUgZ2VuZXJhdGVkCi1zaW1pbGFyIGNvbmZpZ3VyYXRpb25zIGV4Y2VwdCBmb3IgV2luZG93
cy4gVGhpcyBpcyB3aHkgdGhlcmUncyBvbmx5Ci1wb3NpeCBhbmQgd2luIGRpcmVjdG9yaWVzIGJl
bG93IGdlbi8uCi1XaGVuIHJvbGxpbmcgZ2ZsYWdzIHRvIGEgbmV3ZXIgdmVyc2lvbiwgaXQncyBh
IGdvb2QgaWRlYSB0byBjaGVjayBpZgotbmV3IGNvbmZpZ3VyYXRpb24gZmlsZXMgbmVlZHMgdG8g
YmUgZ2VuZXJhdGVkIGFzIHdlbGwuCi1EbyB0aGlzIGJ5IHJ1bm5pbmcgY21ha2UgaW4gdGhlIG5l
d2x5IGNoZWNrZWQgb3V0IHZlcnNpb24gb2YKLWdmbGFncy4gVGhlbiBkaWZmIHRoZSBnZW5lcmF0
ZWQgZmlsZXMgd2l0aCB0aGUgb25lcyBiZWxvdyBnZW4vLgotSWYgeW91IG5vdGljZSBhIGRpZmYs
IHVwZGF0ZSB0aGUgZmlsZXMgd2l0aCB0aGUgdXBkYXRlZCBvbmVzLgotSWYgeW91IHN1c3BlY3Qg
cGxhdGZvcm0gZGVwZW5kZW5kIGNoYW5nZXMgb3RoZXIgdGhhbiBXaW5kb3dzLCB5b3UnbGwKLWhh
dmUgdG8gY2hlY2tvdXQgZ2ZsYWdzIG9uIHRoZSBvdGhlciBwbGF0Zm9ybXMgYXMgd2VsbCBhbmQg
cnVuCi1jbWFrZSB0aGVyZSB0b28uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVkZS9nZmxhZ3Mv
Z2ZsYWdzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBkYjM4ZjVjODY4MjZiMzFlZWIxYWYxNWVhNmJlYzk3ZGFmZGJmZDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2lu
Y2x1ZGUvZ2ZsYWdzL2dmbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTczICswLDAgQEAKLS8v
IENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQot
Ly8gUmV2YW1wZWQgYW5kIHJlb3JnYW5pemVkIGJ5IENyYWlnIFNpbHZlcnN0ZWluCi0vLwotLy8g
VGhpcyBpcyB0aGUgZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBieSBhbnkgZmlsZSB3aGlj
aCBkZWNsYXJlcwotLy8gb3IgZGVmaW5lcyBhIGNvbW1hbmQgbGluZSBmbGFnIG9yIHdhbnRzIHRv
IHBhcnNlIGNvbW1hbmQgbGluZSBmbGFncwotLy8gb3IgcHJpbnQgYSBwcm9ncmFtIHVzYWdlIG1l
c3NhZ2UgKHdoaWNoIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dAotLy8gZmxhZ3MpLiAg
RXhlY3V0aXZlIHN1bW1hcnksIGluIHRoZSBmb3JtIG9mIGFuIGV4YW1wbGUgZm9vLmNjIGZpbGU6
Ci0vLwotLy8gICAgI2luY2x1ZGUgImZvby5oIiAgICAgICAgIC8vIGZvby5oIGhhcyBhIGxpbmUg
IkRFQ0xBUkVfaW50MzIoc3RhcnQpOyIKLS8vICAgICNpbmNsdWRlICJ2YWxpZGF0b3JzLmgiICAv
LyBoeXBvdGhldGljYWwgZmlsZSBkZWZpbmluZyBWYWxpZGF0ZUlzRmlsZSgpCi0vLwotLy8gICAg
REVGSU5FX2ludDMyKGVuZCwgMTAwMCwgIlRoZSBsYXN0IHJlY29yZCB0byByZWFkIik7Ci0vLwot
Ly8gICAgREVGSU5FX3N0cmluZyhmaWxlbmFtZSwgIm15X2ZpbGUudHh0IiwgIlRoZSBmaWxlIHRv
IHJlYWQiKTsKLS8vICAgIC8vIENyYXNoIGlmIHRoZSBzcGVjaWZpZWQgZmlsZSBkb2VzIG5vdCBl
eGlzdC4KLS8vICAgIHN0YXRpYyBib29sIGR1bW15ID0gUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZG
TEFHU19maWxlbmFtZSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZWYWxpZGF0ZUlzRmlsZSk7Ci0vLwotLy8gICAgREVDTEFSRV9ib29sKHZlcmJvc2Up
OyAvLyBzb21lIG90aGVyIGZpbGUgaGFzIGEgREVGSU5FX2Jvb2wodmVyYm9zZSwgLi4uKQotLy8K
LS8vICAgIHZvaWQgTXlGdW5jKCkgewotLy8gICAgICBpZiAoRkxBR1NfdmVyYm9zZSkgcHJpbnRm
KCJSZWNvcmRzICVkLSVkXG4iLCBGTEFHU19zdGFydCwgRkxBR1NfZW5kKTsKLS8vICAgIH0KLS8v
Ci0vLyAgICBUaGVuLCBhdCB0aGUgY29tbWFuZC1saW5lOgotLy8gICAgICAgLi9mb28gLS1ub3Zl
cmJvc2UgLS1zdGFydD01IC0tZW5kPTEwMAotLy8KLS8vIEZvciBtb3JlIGRldGFpbHMsIHNlZQot
Ly8gICAgZG9jL2dmbGFncy5odG1sCi0vLwotLy8gLS0tIEEgbm90ZSBhYm91dCB0aHJlYWQtc2Fm
ZXR5OgotLy8KLS8vIFdlIGRlc2NyaWJlIG1hbnkgZnVuY3Rpb25zIGluIHRoaXMgcm91dGluZSBh
cyBiZWluZyB0aHJlYWQtaG9zdGlsZSwKLS8vIHRocmVhZC1jb21wYXRpYmxlLCBvciB0aHJlYWQt
c2FmZS4gIEhlcmUgYXJlIHRoZSBtZWFuaW5ncyB3ZSB1c2U6Ci0vLwotLy8gdGhyZWFkLXNhZmU6
IGl0IGlzIHNhZmUgZm9yIG11bHRpcGxlIHRocmVhZHMgdG8gY2FsbCB0aGlzIHJvdXRpbmUKLS8v
ICAgKG9yLCB3aGVuIHJlZmVycmluZyB0byBhIGNsYXNzLCBtZXRob2RzIG9mIHRoaXMgY2xhc3Mp
Ci0vLyAgIGNvbmN1cnJlbnRseS4KLS8vIHRocmVhZC1ob3N0aWxlOiBpdCBpcyBub3Qgc2FmZSBm
b3IgbXVsdGlwbGUgdGhyZWFkcyB0byBjYWxsIHRoaXMKLS8vICAgcm91dGluZSAob3IgbWV0aG9k
cyBvZiB0aGlzIGNsYXNzKSBjb25jdXJyZW50bHkuICBJbiBnZmxhZ3MsCi0vLyAgIG1vc3QgdGhy
ZWFkLWhvc3RpbGUgcm91dGluZXMgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBlYXJseSBpbiwK
LS8vICAgb3IgZXZlbiBiZWZvcmUsIG1haW4oKSAtLSB0aGF0IGlzLCBiZWZvcmUgdGhyZWFkcyBh
cmUgc3Bhd25lZC4KLS8vIHRocmVhZC1jb21wYXRpYmxlOiBpdCBpcyBzYWZlIGZvciBtdWx0aXBs
ZSB0aHJlYWRzIHRvIHJlYWQgZnJvbQotLy8gICB0aGlzIHZhcmlhYmxlICh3aGVuIGFwcGxpZWQg
dG8gdmFyaWFibGVzKSwgb3IgdG8gY2FsbCBjb25zdAotLy8gICBtZXRob2RzIG9mIHRoaXMgY2xh
c3MgKHdoZW4gYXBwbGllZCB0byBjbGFzc2VzKSwgYXMgbG9uZyBhcyBubwotLy8gICBvdGhlciB0
aHJlYWQgaXMgd3JpdGluZyB0byB0aGUgdmFyaWFibGUgb3IgY2FsbGluZyBub24tY29uc3QKLS8v
ICAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgotCi0jaWZuZGVmIEdGTEFHU19HRkxBR1NfSF8KLSNk
ZWZpbmUgR0ZMQUdTX0dGTEFHU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZl
Y3Rvcj4KLQotI2luY2x1ZGUgImdmbGFnc19kZWNsYXJlLmgiIC8vIElXWVUgcHJhZ21hOiBleHBv
cnQKLQotCi0vLyBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgdmFyaWFibGVzIGRlZmluZWQgaW4g
dXNlciBjb2RlCi0jaWZuZGVmIEdGTEFHU19ETExfREVGSU5FX0ZMQUcKLSMgIGlmZGVmIF9NU0Nf
VkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFRklORV9GTEFHIF9fZGVjbHNwZWMoZGxsZXhw
b3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwotIyAgZW5k
aWYKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLy8gVG8gYWN0dWFsbHkgZGVmaW5lIGEgZmxhZyBpbiBhIGZpbGUsIHVzZSBERUZJ
TkVfYm9vbCwKLS8vIERFRklORV9zdHJpbmcsIGV0Yy4gYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZp
bGUuICBZb3UgbWF5IGFsc28gZmluZAotLy8gaXQgdXNlZnVsIHRvIHJlZ2lzdGVyIGEgdmFsaWRh
dG9yIHdpdGggdGhlIGZsYWcuICBUaGlzIGVuc3VyZXMgdGhhdAotLy8gd2hlbiB0aGUgZmxhZyBp
cyBwYXJzZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUsIG9yIGlzIGxhdGVyIHNldCB2aWEKLS8vIFNl
dENvbW1hbmRMaW5lT3B0aW9uLCB3ZSBjYWxsIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uLiBJdCBp
cyBfbm90XwotLy8gY2FsbGVkIHdoZW4geW91IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIGZsYWcg
ZGlyZWN0bHkgdXNpbmcgdGhlID0gb3BlcmF0b3IuCi0vLwotLy8gVGhlIHZhbGlkYXRpb24gZnVu
Y3Rpb24gc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBmbGFnIHZhbHVlIGlzIHZhbGlkLCBhbmQK
LS8vIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIHRo
ZSBuZXcgc2V0dGluZyBvZiB0aGUKLS8vIGZsYWcsIHRoZSBmbGFnIHdpbGwgcmV0YWluIGl0cyBj
dXJyZW50IHZhbHVlLiBJZiBpdCByZXR1cm5zIGZhbHNlIGZvciB0aGUKLS8vIGRlZmF1bHQgdmFs
dWUsIFBhcnNlQ29tbWFuZExpbmVGbGFncygpIHdpbGwgZGllLgotLy8KLS8vIFRoaXMgZnVuY3Rp
b24gaXMgc2FmZSB0byBjYWxsIGF0IGdsb2JhbCBjb25zdHJ1Y3QgdGltZSAoYXMgaW4gdGhlCi0v
LyBleGFtcGxlIGJlbG93KS4KLS8vCi0vLyBFeGFtcGxlIHVzZToKLS8vICAgIHN0YXRpYyBib29s
IFZhbGlkYXRlUG9ydChjb25zdCBjaGFyKiBmbGFnbmFtZSwgaW50MzIgdmFsdWUpIHsKLS8vICAg
ICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAzMjc2OCkgICAvLyB2YWx1ZSBpcyBvawotLy8g
ICAgICAgICByZXR1cm4gdHJ1ZTsKLS8vICAgICAgIHByaW50ZigiSW52YWxpZCB2YWx1ZSBmb3Ig
LS0lczogJWRcbiIsIGZsYWduYW1lLCAoaW50KXZhbHVlKTsKLS8vICAgICAgIHJldHVybiBmYWxz
ZTsKLS8vICAgIH0KLS8vICAgIERFRklORV9pbnQzMihwb3J0LCAwLCAiV2hhdCBwb3J0IHRvIGxp
c3RlbiBvbiIpOwotLy8gICAgc3RhdGljIGJvb2wgZHVtbXkgPSBSZWdpc3RlckZsYWdWYWxpZGF0
b3IoJkZMQUdTX3BvcnQsICZWYWxpZGF0ZVBvcnQpOwotCi0vLyBSZXR1cm5zIHRydWUgaWYgc3Vj
Y2Vzc2Z1bGx5IHJlZ2lzdGVyZWQsIGZhbHNlIGlmIG5vdCAoYmVjYXVzZSB0aGUKLS8vIGZpcnN0
IGFyZ3VtZW50IGRvZXNuJ3QgcG9pbnQgdG8gYSBjb21tYW5kLWxpbmUgZmxhZywgb3IgYmVjYXVz
ZSBhCi0vLyB2YWxpZGF0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB0aGlzIGZsYWcpLgot
ZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBi
b29sKiAgICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgYm9vbCkp
OwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25z
dCBpbnQzMiogICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgaW50
MzIpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3Io
Y29uc3QgaW50NjQqICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhcios
IGludDY0KSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVnaXN0ZXJGbGFnVmFsaWRh
dG9yKGNvbnN0IHVpbnQ2NCogICAgICBmbGFnLCBib29sICgqdmFsaWRhdGVfZm4pKGNvbnN0IGNo
YXIqLCB1aW50NjQpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdW
YWxpZGF0b3IoY29uc3QgZG91YmxlKiAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29u
c3QgY2hhciosIGRvdWJsZSkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVy
RmxhZ1ZhbGlkYXRvcihjb25zdCBzdGQ6OnN0cmluZyogZmxhZywgYm9vbCAoKnZhbGlkYXRlX2Zu
KShjb25zdCBjaGFyKiwgY29uc3Qgc3RkOjpzdHJpbmcmKSk7Ci0KLS8vIENvbnZlbmllbmNlIG1h
Y3JvIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgZmxhZyB2YWxpZGF0b3IKLSNkZWZpbmUgREVG
SU5FX3ZhbGlkYXRvcihuYW1lLCB2YWxpZGF0b3IpIFwKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBu
YW1lIyNfdmFsaWRhdG9yX3JlZ2lzdGVyZWQgPSBcCi0gICAgICAgICAgICBHRkxBR1NfTkFNRVNQ
QUNFOjpSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTXyMjbmFtZSwgdmFsaWRhdG9yKQotCi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBUaGVzZSBtZXRob2RzIGFyZSB0aGUgYmVzdCB3YXkgdG8gZ2V0
IGFjY2VzcyB0byBpbmZvIGFib3V0IHRoZQotLy8gbGlzdCBvZiBjb21tYW5kbGluZSBmbGFncy4g
IE5vdGUgdGhhdCB0aGVzZSByb3V0aW5lcyBhcmUgcHJldHR5IHNsb3cuCi0vLyAgIEdldEFsbEZs
YWdzOiBtb3N0bHktY29tcGxldGUgaW5mbyBhYm91dCB0aGUgbGlzdCwgc29ydGVkIGJ5IGZpbGUu
Ci0vLyAgIFNob3dVc2FnZVdpdGhGbGFnczogcHJldHR5LXByaW50cyB0aGUgbGlzdCB0byBzdGRv
dXQgKHdoYXQgLS1oZWxwIGRvZXMpCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0OiBs
aW1pdCB0byBmaWxlbmFtZXMgd2l0aCByZXN0cmljdCBhcyBhIHN1YnN0cgotLy8KLS8vIEluIGFk
ZGl0aW9uIHRvIGFjY2Vzc2luZyBmbGFncywgeW91IGNhbiBhbHNvIGFjY2VzcyBhcmd2WzBdICh0
aGUgcHJvZ3JhbQotLy8gbmFtZSkgYW5kIGFyZ3YgKHRoZSBlbnRpcmUgY29tbWFuZGxpbmUpLCB3
aGljaCB3ZSBzb2NrIGF3YXkgYSBjb3B5IG9mLgotLy8gVGhlc2UgdmFyaWFibGVzIGFyZSBzdGF0
aWMsIHNvIHlvdSBzaG91bGQgb25seSBzZXQgdGhlbSBvbmNlLgotLy8KLS8vIE5vIG5lZWQgdG8g
ZXhwb3J0IHRoaXMgZGF0YSBvbmx5IHN0cnVjdHVyZSBmcm9tIERMTCwgYXZvaWRpbmcgVlMgd2Fy
bmluZyA0MjUxLgotc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8gewotICBzdGQ6OnN0cmluZyBu
YW1lOyAgICAgICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIHR5
cGU7ICAgICAgICAgICAgLy8gdGhlIHR5cGUgb2YgdGhlIGZsYWc6IGludDMyLCBldGMKLSAgc3Rk
OjpzdHJpbmcgZGVzY3JpcHRpb247ICAgICAvLyB0aGUgImhlbHAgdGV4dCIgYXNzb2NpYXRlZCB3
aXRoIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIGN1cnJlbnRfdmFsdWU7ICAgLy8gdGhlIGN1cnJl
bnQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWU7ICAgLy8g
dGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGZpbGVuYW1lOyAg
ICAgICAgLy8gJ2NsZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5hbWUgaG9sZGluZyB0aGUgZmxhZwot
ICBib29sIGhhc192YWxpZGF0b3JfZm47ICAgICAgIC8vIHRydWUgaWYgUmVnaXN0ZXJGbGFnVmFs
aWRhdG9yIGNhbGxlZCBvbiB0aGlzIGZsYWcKLSAgYm9vbCBpc19kZWZhdWx0OyAgICAgICAgICAg
ICAvLyB0cnVlIGlmIHRoZSBmbGFnIGhhcyB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkgZnJv
bSB0aGUgY21kbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHZpYSBT
ZXRDb21tYW5kTGluZU9wdGlvbgotICBjb25zdCB2b2lkKiBmbGFnX3B0cjsgICAgICAgIC8vIHBv
aW50ZXIgdG8gdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlIChpLmUuIEZMQUdTX2ZvbykKLX07Ci0K
LS8vIFVzaW5nIHRoaXMgaW5zaWRlIG9mIGEgdmFsaWRhdG9yIGlzIGEgcmVjaXBlIGZvciBhIGRl
YWRsb2NrLgotLy8gVE9ETyh1c2VyKSBGaXggbG9ja2luZyB3aGVuIHZhbGlkYXRvcnMgYXJlIHJ1
bm5pbmcsIHRvIG1ha2UgaXQgc2FmZSB0bwotLy8gY2FsbCB2YWxpZGF0b3JzIGR1cmluZyBQYXJz
ZUFsbEZsYWdzLgotLy8gQWxzbyBtYWtlIHN1cmUgdGhlbiB0byB1bmNvbW1lbnQgdGhlIGNvcnJl
c3BvbmRpbmcgdW5pdCB0ZXN0IGluCi0vLyBnZmxhZ3NfdW5pdHRlc3Quc2gKLWV4dGVybiBHRkxB
R1NfRExMX0RFQ0wgdm9pZCBHZXRBbGxGbGFncyhzdGQ6OnZlY3RvcjxDb21tYW5kTGluZUZsYWdJ
bmZvPiogT1VUUFVUKTsKLS8vIFRoZXNlIHR3byBhcmUgYWN0dWFsbHkgZGVmaW5lZCBpbiBnZmxh
Z3NfcmVwb3J0aW5nLmNjLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIFNob3dVc2FnZVdp
dGhGbGFncyhjb25zdCBjaGFyICphcmd2MCk7ICAvLyB3aGF0IC0taGVscCBkb2VzCi1leHRlcm4g
R0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QoY29uc3QgY2hh
ciAqYXJndjAsIGNvbnN0IGNoYXIgKnJlc3RyaWN0KTsKLQotLy8gQ3JlYXRlIGEgZGVzY3JpcHRp
dmUgc3RyaW5nIGZvciBhIGZsYWcuCi0vLyBHb2VzIHRvIHNvbWUgdHJvdWJsZSB0byBtYWtlIHBy
ZXR0eSBsaW5lIGJyZWFrcy4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgRGVz
Y3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcpOwotCi0vLyBUaHJl
YWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUgc3Bh
d25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTZXRBcmd2KGludCBhcmdjLCBjb25z
dCBjaGFyKiogYXJndik7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0aHJlYWQt
c2FmZSBhcyBsb25nIGFzIFNldEFyZ3YoKSBpcwotLy8gb25seSBjYWxsZWQgYmVmb3JlIGFueSB0
aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mIEdldEFyZ3ZzKCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNo
YXIqIEdldEFyZ3YoKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG9mIGFyZ3YgYXMgYSBz
dHJpbmcKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogR2V0QXJndjAoKTsgICAg
ICAgICAgICAgICAgICAgICAvLyBvbmx5IGFyZ3YwCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHVp
bnQzMiBHZXRBcmd2U3VtKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2ltcGxlIGNoZWNr
c3VtIG9mIGFyZ3YKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUlu
dm9jYXRpb25OYW1lKCk7ICAgICAgICAvLyBhcmd2MCwgb3IgIlVOS05PV04iIGlmIG5vdCBzZXQK
LWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25TaG9y
dE5hbWUoKTsgICAvLyBiYXNlbmFtZShhcmd2MCkKLQotLy8gUHJvZ3JhbVVzYWdlKCkgaXMgdGhy
ZWFkLXNhZmUgYXMgbG9uZyBhcyBTZXRVc2FnZU1lc3NhZ2UoKSBpcyBvbmx5Ci0vLyBjYWxsZWQg
YmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBj
aGFyKiBQcm9ncmFtVXNhZ2UoKTsgICAgICAgICAgICAgICAgIC8vIHN0cmluZyBzZXQgYnkgU2V0
VXNhZ2VNZXNzYWdlKCkKLQotLy8gVmVyc2lvblN0cmluZygpIGlzIHRocmVhZC1zYWZlIGFzIGxv
bmcgYXMgU2V0VmVyc2lvblN0cmluZygpIGlzIG9ubHkKLS8vIGNhbGxlZCBiZWZvcmUgYW55IHRo
cmVhZHMgc3RhcnQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIFZlcnNpb25T
dHJpbmcoKTsgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHNldCBieSBTZXRWZXJzaW9uU3RyaW5n
KCkKLQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3JtYWxseSB5b3UgYWNjZXNzIGNvbW1hbmRs
aW5lIGZsYWdzIGJ5IGp1c3Qgc2F5aW5nICJpZiAoRkxBR1NfZm9vKSIKLS8vIG9yIHdoYXRldmVy
LCBhbmQgc2V0IHRoZW0gYnkgY2FsbGluZyAiRkxBR1NfZm9vID0gYmFyIiAob3IsIG1vcmUKLS8v
IGNvbW1vbmx5LCB2aWEgdGhlIERFRklORV9mb28gbWFjcm8pLiAgQnV0IGlmIHlvdSBuZWVkIGEg
Yml0IG1vcmUKLS8vIGNvbnRyb2wsIHdlIGhhdmUgcHJvZ3JhbW1hdGljIHdheXMgdG8gZ2V0L3Nl
dCB0aGUgZmxhZ3MgYXMgd2VsbC4KLS8vIFRoZXNlIHByb2dyYW1tYXRpYyB3YXlzIHRvIGFjY2Vz
cyBmbGFncyBhcmUgdGhyZWFkLXNhZmUsIGJ1dCBkaXJlY3QKLS8vIGFjY2VzcyBpcyBvbmx5IHRo
cmVhZC1jb21wYXRpYmxlLgotCi0vLyBSZXR1cm4gdHJ1ZSBpZmYgdGhlIGZsYWduYW1lIHdhcyBm
b3VuZC4KLS8vIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncyB2YWx1ZSwgb3IgdW5jaGFuZ2Vk
IGlmIHdlIHJldHVybiBmYWxzZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBHZXRDb21t
YW5kTGluZU9wdGlvbihjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OnN0cmluZyogT1VUUFVUKTsKLQot
Ly8gUmV0dXJuIHRydWUgaWZmIHRoZSBmbGFnbmFtZSB3YXMgZm91bmQuIE9VVFBVVCBpcyBzZXQg
dG8gdGhlIGZsYWcncwotLy8gQ29tbWFuZExpbmVGbGFnSW5mbyBvciB1bmNoYW5nZWQgaWYgd2Ug
cmV0dXJuIGZhbHNlLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIEdldENvbW1hbmRMaW5l
RmxhZ0luZm8oY29uc3QgY2hhciogbmFtZSwgQ29tbWFuZExpbmVGbGFnSW5mbyogT1VUUFVUKTsK
LQotLy8gUmV0dXJuIHRoZSBDb21tYW5kTGluZUZsYWdJbmZvIG9mIHRoZSBmbGFnbmFtZS4gIGV4
aXQoKSBpZiBuYW1lIG5vdCBmb3VuZC4KLS8vIEV4YW1wbGUgdXNhZ2UsIHRvIGNoZWNrIGlmIGEg
ZmxhZydzIHZhbHVlIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCB2YWx1ZToKLS8vICAgaWYgKEdl
dENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgiZm9vIikuaXNfZGVmYXVsdCkgLi4uCi1leHRlcm4g
R0ZMQUdTX0RMTF9ERUNMIENvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFuZExpbmVGbGFnSW5m
b09yRGllKGNvbnN0IGNoYXIqIG5hbWUpOwotCi1lbnVtIEdGTEFHU19ETExfREVDTCBGbGFnU2V0
dGluZ01vZGUgewotICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2YWx1ZSAoY2FuIGNhbGwgdGhpcyBt
dWx0aXBsZSB0aW1lcykuCi0gIFNFVF9GTEFHU19WQUxVRSwKLSAgLy8gdXBkYXRlIHRoZSBmbGFn
J3MgdmFsdWUsIGJ1dCAqb25seSBpZiogaXQgaGFzIG5vdCB5ZXQgYmVlbiB1cGRhdGVkCi0gIC8v
IHdpdGggU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxBR19JRl9ERUZBVUxULCBvciAiRkxBR1NfeHh4
ID0gbm9uZGVmIi4KLSAgU0VUX0ZMQUdfSUZfREVGQVVMVCwKLSAgLy8gc2V0IHRoZSBmbGFnJ3Mg
ZGVmYXVsdCB2YWx1ZSB0byB0aGlzLiAgSWYgdGhlIGZsYWcgaGFzIG5vdCB5ZXQgdXBkYXRlZAot
ICAvLyB5ZXQgKHZpYSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RFRkFVTFQsIG9yICJG
TEFHU194eHggPSBub25kZWYiKQotICAvLyBjaGFuZ2UgdGhlIGZsYWcncyBjdXJyZW50IHZhbHVl
IHRvIHRoZSBuZXcgZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgotICBTRVRfRkxBR1NfREVGQVVMVAot
fTsKLQotLy8gU2V0IGEgcGFydGljdWxhciBmbGFnICgiY29tbWFuZCBsaW5lIG9wdGlvbiIpLiAg
UmV0dXJucyBhIHN0cmluZwotLy8gZGVzY3JpYmluZyB0aGUgbmV3IHZhbHVlIHRoYXQgdGhlIG9w
dGlvbiBoYXMgYmVlbiBzZXQgdG8uICBUaGUKLS8vIHJldHVybiB2YWx1ZSBBUEkgaXMgbm90IHdl
bGwtc3BlY2lmaWVkLCBzbyBiYXNpY2FsbHkganVzdCBkZXBlbmQgb24KLS8vIGl0IHRvIGJlIGVt
cHR5IGlmIHRoZSBzZXR0aW5nIGZhaWxlZCBmb3Igc29tZSByZWFzb24gLS0gdGhlIG5hbWUgaXMK
LS8vIG5vdCBhIHZhbGlkIGZsYWcgbmFtZSwgb3IgdGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIHZh
bHVlIC0tIGFuZAotLy8gbm9uLWVtcHR5IGVsc2UuCi0KLS8vIFNldENvbW1hbmRMaW5lT3B0aW9u
IHVzZXMgc2V0X21vZGUgPT0gU0VUX0ZMQUdTX1ZBTFVFICh0aGUgY29tbW9uIGNhc2UpCi1leHRl
cm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uICAgICAg
ICAoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwotZXh0ZXJuIEdGTEFHU19E
TExfREVDTCBzdGQ6OnN0cmluZyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLCBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpOwot
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTYXZlcyB0aGUgc3RhdGVzICh2YWx1ZSwgZGVmYXVsdCB2
YWx1ZSwgd2hldGhlciB0aGUgdXNlciBoYXMgc2V0Ci0vLyB0aGUgZmxhZywgcmVnaXN0ZXJlZCB2
YWxpZGF0b3JzLCBldGMpIG9mIGFsbCBmbGFncywgYW5kIHJlc3RvcmVzCi0vLyB0aGVtIHdoZW4g
dGhlIEZsYWdTYXZlciBpcyBkZXN0cm95ZWQuICBUaGlzIGlzIHZlcnkgdXNlZnVsIGluCi0vLyB0
ZXN0cywgc2F5LCB3aGVuIHlvdSB3YW50IHRvIGxldCB5b3VyIHRlc3RzIGNoYW5nZSB0aGUgZmxh
Z3MsIGJ1dAotLy8gbWFrZSBzdXJlIHRoYXQgdGhleSBnZXQgcmV2ZXJ0ZWQgdG8gdGhlIG9yaWdp
bmFsIHN0YXRlcyB3aGVuIHlvdXIKLS8vIHRlc3QgaXMgY29tcGxldGUuCi0vLwotLy8gRXhhbXBs
ZSB1c2FnZToKLS8vICAgdm9pZCBUZXN0Rm9vKCkgewotLy8gICAgIEZsYWdTYXZlciBzMTsKLS8v
ICAgICBGTEFHX2ZvbyA9IGZhbHNlOwotLy8gICAgIEZMQUdfYmFyID0gInNvbWUgdmFsdWUiOwot
Ly8KLS8vICAgICAvLyB0ZXN0IGhhcHBlbnMgaGVyZS4gIFlvdSBjYW4gcmV0dXJuIGF0IGFueSB0
aW1lCi0vLyAgICAgLy8gd2l0aG91dCB3b3JyeWluZyBhYm91dCByZXN0b3JpbmcgdGhlIEZMQUcg
dmFsdWVzLgotLy8gICB9Ci0vLwotLy8gTm90ZTogVGhpcyBjbGFzcyBpcyBtYXJrZWQgd2l0aCBH
RkxBR1NfQVRUUklCVVRFX1VOVVNFRCBiZWNhdXNlIGFsbAotLy8gdGhlIHdvcmsgaXMgZG9uZSBp
biB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIHNvIGluIHRoZSBzdGFuZGFyZAotLy8g
dXNhZ2UgZXhhbXBsZSBhYm92ZSwgdGhlIGNvbXBpbGVyIHdvdWxkIGNvbXBsYWluIHRoYXQgaXQn
cyBhbgotLy8gdW51c2VkIHZhcmlhYmxlLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgdGhyZWFkLXNh
ZmUuICBIb3dldmVyLCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMgdG8KLS8vIGV4YWN0bHkgdGhlIHNl
dCBvZiBmbGFncyB0aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBkdXJpbmcgaXRzCi0vLyBsaWZldGlt
ZSwgc28gY29uY3VycmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8gdGhvc2UgZmxhZ3MKLS8vIChpLmUu
IEZMQUdTX2ZvbyBpbnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1hbmRMaW5lT3B0aW9uKCkpIGlzIHVu
c2FmZS4KLQotY2xhc3MgR0ZMQUdTX0RMTF9ERUNMIEZsYWdTYXZlciB7Ci0gcHVibGljOgotICBG
bGFnU2F2ZXIoKTsKLSAgfkZsYWdTYXZlcigpOwotCi0gcHJpdmF0ZToKLSAgY2xhc3MgRmxhZ1Nh
dmVySW1wbCogaW1wbF87ICAgLy8gd2UgdXNlIHBpbXBsIGhlcmUgdG8ga2VlcCBBUEkgc3RlYWR5
Ci0KLSAgRmxhZ1NhdmVyKGNvbnN0IEZsYWdTYXZlciYpOyAgLy8gbm8gY29weWluZyEKLSAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJik7Ci19X19hdHRyaWJ1dGUoKHVudXNlZCkpOwot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gU29tZSBkZXByZWNhdGVkIG9yIGhvcGVmdWxseS1zb29uLXRv
LWJlLWRlcHJlY2F0ZWQgZnVuY3Rpb25zLgotCi0vLyBUaGlzIGlzIG9mdGVuIHVzZWQgZm9yIGxv
Z2dpbmcuICBUT0RPKGNzaWx2ZXJzKTogZmlndXJlIG91dCBhIGJldHRlciB3YXkKLWV4dGVybiBH
RkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgQ29tbWFuZGxpbmVGbGFnc0ludG9TdHJpbmcoKTsK
LS8vIFVzdWFsbHkgd2hlcmUgdGhpcyBpcyB1c2VkLCBhIEZsYWdTYXZlciBzaG91bGQgYmUgdXNl
ZCBpbnN0ZWFkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTAotYm9vbCBSZWFkRmxhZ3NGcm9tU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBmbGFnZmlsZWNvbnRlbnRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHByb2dfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGVycm9yc19hcmVfZmF0YWwpOyAgLy8gdXNlcyBTRVRfRkxBR1NfVkFMVUUKLQotLy8g
VGhlc2UgbGV0IHlvdSBtYW51YWxseSBpbXBsZW1lbnQgLS1mbGFnZmlsZSBmdW5jdGlvbmFsaXR5
LgotLy8gREVQUkVDQVRFRC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBBcHBlbmRGbGFn
c0ludG9GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgY2hhciogcHJvZ19u
YW1lKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWFkRnJvbUZsYWdzRmlsZShjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNoYXIqIHByb2dfbmFtZSwgYm9vbCBlcnJv
cnNfYXJlX2ZhdGFsKTsgICAvLyB1c2VzIFNFVF9GTEFHU19WQUxVRQotCi0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBVc2VmdWwgcm91dGluZXMgZm9yIGluaXRpYWxpemluZyBmbGFncyBmcm9tIHRoZSBl
bnZpcm9ubWVudC4KLS8vIEluIGVhY2ggY2FzZSwgaWYgJ3Zhcm5hbWUnIGRvZXMgbm90IGV4aXN0
IGluIHRoZSBlbnZpcm9ubWVudAotLy8gcmV0dXJuIGRlZnZhbC4gIElmICd2YXJuYW1lJyBkb2Vz
IGV4aXN0IGJ1dCBpcyBub3QgdmFsaWQKLS8vIChlLmcuLCBub3QgYSBudW1iZXIgZm9yIGFuIGlu
dDMyIGZsYWcpLCBhYm9ydCB3aXRoIGFuIGVycm9yLgotLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhl
IHZhbHVlLiAgTk9URTogZm9yIGJvb2xlYW5zLCBmb3IgdHJ1ZSB1c2UKLS8vICd0JyBvciAnVCcg
b3IgJ3RydWUnIG9yICcxJywgZm9yIGZhbHNlICdmJyBvciAnRicgb3IgJ2ZhbHNlJyBvciAnMCcu
Ci0KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBCb29sRnJvbUVudihjb25zdCBjaGFyICp2
YXJuYW1lLCBib29sIGRlZnZhbCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGludDMyIEludDMy
RnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBpbnQzMiBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFH
U19ETExfREVDTCBpbnQ2NCBJbnQ2NEZyb21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgaW50NjQg
ZGVmdmFsKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWludDY0IFVpbnQ2NEZyb21FbnYoY29u
c3QgY2hhciAqdmFybmFtZSwgdWludDY0IGRlZnZhbCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IGRvdWJsZSBEb3VibGVGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIGRvdWJsZSBkZWZ2YWwp
OwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFyICpTdHJpbmdGcm9tRW52KGNvbnN0
IGNoYXIgKnZhcm5hbWUsIGNvbnN0IGNoYXIgKmRlZnZhbCk7Ci0KLQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIFRoZSBuZXh0IHR3byBmdW5jdGlvbnMgcGFyc2UgZ2ZsYWdzIGZyb20gbWFpbigpOgotCi0v
LyBTZXQgdGhlICJ1c2FnZSIgbWVzc2FnZSBmb3IgdGhpcyBwcm9ncmFtLiAgRm9yIGV4YW1wbGU6
Ci0vLyAgIHN0cmluZyB1c2FnZSgiVGhpcyBwcm9ncmFtIGRvZXMgbm90aGluZy4gIFNhbXBsZSB1
c2FnZTpcbiIpOwotLy8gICB1c2FnZSArPSBhcmd2WzBdICsgIiA8dXNlbGVzc2FyZzE+IDx1c2Vs
ZXNzYXJnMj4iOwotLy8gICBTZXRVc2FnZU1lc3NhZ2UodXNhZ2UpOwotLy8gRG8gbm90IGluY2x1
ZGUgY29tbWFuZGxpbmUgZmxhZ3MgaW4gdGhlIHVzYWdlOiB3ZSBkbyB0aGF0IGZvciB5b3UhCi0v
LyBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBh
cmUgc3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTZXRVc2FnZU1lc3NhZ2Uo
Y29uc3Qgc3RkOjpzdHJpbmcmIHVzYWdlKTsKLQotLy8gU2V0cyB0aGUgdmVyc2lvbiBzdHJpbmcs
IHdoaWNoIGlzIGVtaXR0ZWQgd2l0aCAtLXZlcnNpb24uCi0vLyBGb3IgaW5zdGFuY2U6IFNldFZl
cnNpb25TdHJpbmcoIjEuMyIpOwotLy8gVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxl
ZCBiZWZvcmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IHZvaWQgU2V0VmVyc2lvblN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmVyc2lvbik7Ci0KLQot
Ly8gTG9va3MgZm9yIGZsYWdzIGluIGFyZ3YgYW5kIHBhcnNlcyB0aGVtLiAgUmVhcnJhbmdlcyBh
cmd2IHRvIHB1dAotLy8gZmxhZ3MgZmlyc3QsIG9yIHJlbW92ZXMgdGhlbSBlbnRpcmVseSBpZiBy
ZW1vdmVfZmxhZ3MgaXMgdHJ1ZS4KLS8vIElmIGEgZmxhZyBpcyBkZWZpbmVkIG1vcmUgdGhhbiBv
bmNlIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgZmxhZwotLy8gZmlsZSwgdGhlIGxhc3QgZGVmaW5p
dGlvbiBpcyB1c2VkLiAgUmV0dXJucyB0aGUgaW5kZXggKGludG8gYXJndikKLS8vIG9mIHRoZSBm
aXJzdCBub24tZmxhZyBhcmd1bWVudC4KLS8vIFNlZSB0b3Atb2YtZmlsZSBmb3IgbW9yZSBkZXRh
aWxzIG9uIHRoaXMgZnVuY3Rpb24uCi0jaWZuZGVmIFNXSUcgICAvLyBJbiBzd2lnLCB1c2UgUGFy
c2VDb21tYW5kTGluZUZsYWdzU2NyaXB0KCkgaW5zdGVhZC4KLWV4dGVybiBHRkxBR1NfRExMX0RF
Q0wgdWludDMyIFBhcnNlQ29tbWFuZExpbmVGbGFncyhpbnQgKmFyZ2MsIGNoYXIqKiogYXJndiwg
Ym9vbCByZW1vdmVfZmxhZ3MpOwotI2VuZGlmCi0KLQotLy8gQ2FsbHMgdG8gUGFyc2VDb21tYW5k
TGluZU5vbkhlbHBGbGFncyBhbmQgdGhlbiB0bwotLy8gSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxh
Z3MgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIGNhbGwgdG8KLS8vIFBhcnNlQ29tbWFuZExpbmVG
bGFncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGluIG9yZGVyIHRvIGFsbG93IGZvcgotLy8gY2hh
bmdpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHNvbWUgRkxBR1MgKHZpYQotLy8gZS5nLiBTZXRDb21t
YW5kTGluZU9wdGlvbldpdGhNb2RlIGNhbGxzKSBiZXR3ZWVuIHRoZSB0aW1lIG9mCi0vLyBjb21t
YW5kIGxpbmUgcGFyc2luZyBhbmQgdGhlIHRpbWUgb2YgZHVtcGluZyBoZWxwIGluZm9ybWF0aW9u
IGZvcgotLy8gdGhlIGZsYWdzIGFzIGEgcmVzdWx0IG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nLiAg
SWYgYSBmbGFnIGlzCi0vLyBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBjb21tYW5kIGxp
bmUgb3IgZmxhZyBmaWxlLCB0aGUgbGFzdAotLy8gZGVmaW5pdGlvbiBpcyB1c2VkLiAgUmV0dXJu
cyB0aGUgaW5kZXggKGludG8gYXJndikgb2YgdGhlIGZpcnN0Ci0vLyBub24tZmxhZyBhcmd1bWVu
dC4gIChJZiByZW1vdmVfZmxhZ3MgaXMgdHJ1ZSwgd2lsbCBhbHdheXMgcmV0dXJuIDEuKQotZXh0
ZXJuIEdGTEFHU19ETExfREVDTCB1aW50MzIgUGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncyhp
bnQgKmFyZ2MsIGNoYXIqKiogYXJndiwgYm9vbCByZW1vdmVfZmxhZ3MpOwotCi0vLyBUaGlzIGlz
IGFjdHVhbGx5IGRlZmluZWQgaW4gZ2ZsYWdzX3JlcG9ydGluZy5jYy4KLS8vIFRoaXMgZnVuY3Rp
b24gaXMgbWlzbmFtZWQgKGl0IGFsc28gaGFuZGxlcyAtLXZlcnNpb24sIGV0Yy4pLCBidXQKLS8v
IGl0J3MgdG9vIGxhdGUgdG8gY2hhbmdlIHRoYXQgbm93LiA6LSgKLWV4dGVybiBHRkxBR1NfRExM
X0RFQ0wgdm9pZCBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpOyAgIC8vIGluIGdmbGFnc19y
ZXBvcnRpbmcuY2MKLQotLy8gQWxsb3cgY29tbWFuZCBsaW5lIHJlcGFyc2luZy4gIERpc2FibGVz
IHRoZSBlcnJvciBub3JtYWxseQotLy8gZ2VuZXJhdGVkIHdoZW4gYW4gdW5rbm93biBmbGFnIGlz
IGZvdW5kLCBzaW5jZSBpdCBtYXkgYmUgZm91bmQgaW4gYQotLy8gbGF0ZXIgcGFyc2UuICBUaHJl
YWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcwotLy8gYXJl
IHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgQWxsb3dDb21tYW5kTGluZVJl
cGFyc2luZygpOwotCi0vLyBSZXBhcnNlIHRoZSBmbGFncyB0aGF0IGhhdmUgbm90IHlldCBiZWVu
IHJlY29nbml6ZWQuICBPbmx5IGZsYWdzCi0vLyByZWdpc3RlcmVkIHNpbmNlIHRoZSBsYXN0IHBh
cnNlIHdpbGwgYmUgcmVjb2duaXplZC4gIEFueSBmbGFnIHZhbHVlCi0vLyBtdXN0IGJlIHByb3Zp
ZGVkIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50IHVzaW5nICI9Iiwgbm90IGFzIGEKLS8vIHNlcGFy
YXRlIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0aGF0IGZvbGxvd3MgdGhlIGZsYWcgYXJndW1lbnQu
Ci0vLyBJbnRlbmRlZCBmb3IgaGFuZGxpbmcgZmxhZ3MgZnJvbSBkeW5hbWljYWxseSBsb2FkZWQg
bGlicmFyaWVzLAotLy8gc2luY2UgdGhlaXIgZmxhZ3MgYXJlIG5vdCByZWdpc3RlcmVkIHVudGls
IHRoZXkgYXJlIGxvYWRlZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBSZXBhcnNlQ29t
bWFuZExpbmVOb25IZWxwRmxhZ3MoKTsKLQotLy8gQ2xlYW4gdXAgbWVtb3J5IGFsbG9jYXRlZCBi
eSBmbGFncy4gIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gcmVkdWNlCi0vLyB0aGUgcXVhbnRpdHkg
b2YgInBvdGVudGlhbGx5IGxlYWtlZCIgcmVwb3J0cyBlbWl0dGVkIGJ5IG1lbW9yeQotLy8gZGVi
dWdnaW5nIHRvb2xzIHN1Y2ggYXMgdmFsZ3JpbmQuICBJdCBpcyBub3QgcmVxdWlyZWQgZm9yIG5v
cm1hbAotLy8gb3BlcmF0aW9uLCBvciBmb3IgdGhlIGdvb2dsZSBwZXJmdG9vbHMgaGVhcC1jaGVj
a2VyLiAgSXQgbXVzdCBvbmx5Ci0vLyBiZSBjYWxsZWQgd2hlbiB0aGUgcHJvY2VzcyBpcyBhYm91
dCB0byBleGl0LCBhbmQgYWxsIHRocmVhZHMgdGhhdAotLy8gbWlnaHQgYWNjZXNzIGZsYWdzIGFy
ZSBxdWllc2NlbnQuICBSZWZlcmVuY2luZyBmbGFncyBhZnRlciB0aGlzIGlzCi0vLyBjYWxsZWQg
d2lsbCBoYXZlIHVuZXhwZWN0ZWQgY29uc2VxdWVuY2VzLiAgVGhpcyBpcyBub3Qgc2FmZSB0byBy
dW4KLS8vIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBtaWdodCBiZSBydW5uaW5nOiB0aGUgZnVuY3Rp
b24gaXMKLS8vIHRocmVhZC1ob3N0aWxlLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIFNo
dXREb3duQ29tbWFuZExpbmVGbGFncygpOwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3cgY29t
ZSB0aGUgY29tbWFuZCBsaW5lIGZsYWcgZGVjbGFyYXRpb24vZGVmaW5pdGlvbiBtYWNyb3MgdGhh
dAotLy8gd2lsbCBhY3R1YWxseSBiZSB1c2VkLiAgVGhleSdyZSBraW5kIG9mIGhhaXJ5LiAgQSBt
YWpvciByZWFzb24KLS8vIGZvciB0aGlzIGlzIGluaXRpYWxpemF0aW9uOiB3ZSB3YW50IHBlb3Bs
ZSB0byBiZSBhYmxlIHRvIGFjY2VzcwotLy8gdmFyaWFibGVzIGluIGdsb2JhbCBjb25zdHJ1Y3Rv
cnMgYW5kIGhhdmUgdGhhdCBub3QgY3Jhc2gsIGV2ZW4gaWYKLS8vIHRoZWlyIGdsb2JhbCBjb25z
dHJ1Y3RvciBydW5zIGJlZm9yZSB0aGUgZ2xvYmFsIGNvbnN0cnVjdG9yIGhlcmUuCi0vLyAoT2J2
aW91c2x5LCB3ZSBjYW4ndCBndWFyYW50ZWUgdGhlIGZsYWdzIHdpbGwgaGF2ZSB0aGUgY29ycmVj
dAotLy8gZGVmYXVsdCB2YWx1ZSBpbiB0aGF0IGNhc2UsIGJ1dCBhdCBsZWFzdCBhY2Nlc3Npbmcg
dGhlbSBpcyBzYWZlLikKLS8vIFRoZSBvbmx5IHdheSB0byBkbyB0aGF0IGlzIGhhdmUgZmxhZ3Mg
cG9pbnQgdG8gYSBzdGF0aWMgYnVmZmVyLgotLy8gU28gd2UgbWFrZSBvbmUsIHVzaW5nIGEgdW5p
b24gdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQsIGFuZAotLy8gdGhlbiB1c2UgcGxhY2VtZW50
LW5ldyB0byBhY3R1YWxseSBzZXQgdXAgdGhlIGZsYWcgd2l0aCB0aGUKLS8vIGNvcnJlY3QgZGVm
YXVsdCB2YWx1ZS4gIEluIHRoZSBzYW1lIHZlaW4sIHdlIGhhdmUgdG8gd29ycnkgYWJvdXQKLS8v
IGZsYWcgYWNjZXNzIGluIGdsb2JhbCBkZXN0cnVjdG9ycywgc28gRmxhZ1JlZ2lzdGVyZXIgaGFz
IHRvIGJlCi0vLyBjYXJlZnVsIG5ldmVyIHRvIGRlc3Ryb3kgdGhlIGZsYWctdmFsdWVzIGl0IGNv
bnN0cnVjdHMuCi0vLwotLy8gTm90ZSB0aGF0IHdoZW4gd2UgZGVmaW5lIGEgZmxhZyB2YXJpYWJs
ZSBGTEFHU188bmFtZT4sIHdlIGFsc28KLS8vIHByZWVtcHRpdmVseSBkZWZpbmUgYSBqdW5rIHZh
cmlhYmxlLCBGTEFHU19ubzxuYW1lPi4gIFRoaXMgaXMgdG8KLS8vIGNhdXNlIGEgbGluay10aW1l
IGVycm9yIGlmIHNvbWVvbmUgdHJpZXMgdG8gZGVmaW5lIDIgZmxhZ3Mgd2l0aAotLy8gbmFtZXMg
bGlrZSAibG9nZ2luZyIgYW5kICJub2xvZ2dpbmciLiAgV2UgZG8gdGhpcyBiZWNhdXNlIGEgYm9v
bAotLy8gZmxhZyBGTEFHIGNhbiBiZSBzZXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHRvIHRydWUg
d2l0aCBhICItRkxBRyIKLS8vIGFyZ3VtZW50LCBhbmQgdG8gZmFsc2Ugd2l0aCBhICItbm9GTEFH
IiBhcmd1bWVudCwgYW5kIHNvIHRoaXMgY2FuCi0vLyBwb3RlbnRpYWxseSBhdmVydCBjb25mdXNp
b24uCi0vLwotLy8gV2UgYWxzbyBwdXQgZmxhZ3MgaW50byB0aGVpciBvd24gbmFtZXNwYWNlLiAg
SXQgaXMgcHVycG9zZWZ1bGx5Ci0vLyBuYW1lZCBpbiBhbiBvcGFxdWUgd2F5IHRoYXQgcGVvcGxl
IHNob3VsZCBoYXZlIHRyb3VibGUgdHlwaW5nCi0vLyBkaXJlY3RseS4gIFRoZSBpZGVhIGlzIHRo
YXQgREVGSU5FIHB1dHMgdGhlIGZsYWcgaW4gdGhlIHdlaXJkCi0vLyBuYW1lc3BhY2UsIGFuZCBE
RUNMQVJFIGltcG9ydHMgdGhlIGZsYWcgZnJvbSB0aGVyZSBpbnRvIHRoZSBjdXJyZW50Ci0vLyBu
YW1lc3BhY2UuICBUaGUgbmV0IHJlc3VsdCBpcyB0byBmb3JjZSBwZW9wbGUgdG8gdXNlIERFQ0xB
UkUgdG8gZ2V0Ci0vLyBhY2Nlc3MgdG8gYSBmbGFnLCByYXRoZXIgdGhhbiBzYXlpbmcgImV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgYm9vbCBGTEFHU193aGF0ZXZlcjsiCi0vLyBvciBzb21lIHN1Y2gg
aW5zdGVhZC4gIFdlIHdhbnQgdGhpcyBzbyB3ZSBjYW4gcHV0IGV4dHJhCi0vLyBmdW5jdGlvbmFs
aXR5IChsaWtlIHNhbml0eS1jaGVja2luZykgaW4gREVDTEFSRSBpZiB3ZSB3YW50LCBhbmQKLS8v
IG1ha2Ugc3VyZSBpdCBpcyBwaWNrZWQgdXAgZXZlcnl3aGVyZS4KLS8vCi0vLyBXZSBhbHNvIHB1
dCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gdGhlIG5hbWVzcGFjZSwgc28gdGhhdAotLy8g
cGVvcGxlIGNhbid0IERFQ0xBUkVfaW50MzIgc29tZXRoaW5nIHRoYXQgdGhleSBERUZJTkVfYm9v
bCdkCi0vLyBlbHNld2hlcmUuCi0KLWNsYXNzIEdGTEFHU19ETExfREVDTCBGbGFnUmVnaXN0ZXJl
ciB7Ci0gcHVibGljOgotICBGbGFnUmVnaXN0ZXJlcihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBj
aGFyKiB0eXBlLAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBoZWxwLCBjb25zdCBjaGFy
KiBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgdm9pZCogY3VycmVudF9zdG9yYWdlLCB2b2lk
KiBkZWZ2YWx1ZV9zdG9yYWdlKTsKLX07Ci0KLS8vIElmIHlvdXIgYXBwbGljYXRpb24gI2RlZmlu
ZXMgU1RSSVBfRkxBR19IRUxQIHRvIGEgbm9uLXplcm8gdmFsdWUKLS8vIGJlZm9yZSAjaW5jbHVk
aW5nIHRoaXMgZmlsZSwgd2UgcmVtb3ZlIHRoZSBoZWxwIG1lc3NhZ2UgZnJvbSB0aGUKLS8vIGJp
bmFyeSBmaWxlLiBUaGlzIGNhbiByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBiaW5h
cnkKLS8vIHNvbWV3aGF0LCBhbmQgbWF5IGFsc28gYmUgdXNlZnVsIGZvciBzZWN1cml0eSByZWFz
b25zLgotCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIga1N0cmlwcGVkRmxhZ0hl
bHBbXTsKLQotCi19IC8vIG5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFCi0KLQotI2lmbmRlZiBT
V0lHICAvLyBJbiBzd2lnLCBpZ25vcmUgdGhlIG1haW4gZmxhZyBkZWNsYXJhdGlvbnMKLQotI2lm
IGRlZmluZWQoU1RSSVBfRkxBR19IRUxQKSAmJiBTVFJJUF9GTEFHX0hFTFAgPiAwCi0vLyBOZWVk
IHRoaXMgY29uc3RydWN0IHRvIGF2b2lkIHRoZSAnZGVmaW5lZCBidXQgbm90IHVzZWQnIHdhcm5p
bmcuCi0jZGVmaW5lIE1BWUJFX1NUUklQUEVEX0hFTFAodHh0KSBcCi0gICAoZmFsc2UgPyAodHh0
KSA6IEdGTEFHU19OQU1FU1BBQ0U6OmtTdHJpcHBlZEZsYWdIZWxwKQotI2Vsc2UKLSNkZWZpbmUg
TUFZQkVfU1RSSVBQRURfSEVMUCh0eHQpIHR4dAotI2VuZGlmCi0KLS8vIEVhY2ggY29tbWFuZC1s
aW5lIGZsYWcgaGFzIHR3byB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGl0OiBvbmUKLS8vIHdp
dGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCBvbmUgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZS4gIEhv
d2V2ZXIsCi0vLyB3ZSBoYXZlIGEgdGhpcmQgdmFyaWFibGUsIHdoaWNoIGlzIHdoZXJlIHZhbHVl
IGlzIGFzc2lnbmVkOyBpdCdzIGEKLS8vIGNvbnN0YW50LiAgVGhpcyBndWFyYW50ZWVzIHRoYXQg
RkxBR18jI3ZhbHVlIGlzIGluaXRpYWxpemVkIGF0Ci0vLyBzdGF0aWMgaW5pdGlhbGl6YXRpb24g
dGltZSAoZS5nLiBiZWZvcmUgcHJvZ3JhbS1zdGFydCkgcmF0aGVyIHRoYW4KLS8vIHRoYW4gZ2xv
YmFsIGNvbnN0cnVjdGlvbiB0aW1lICh3aGljaCBpcyBhZnRlciBwcm9ncmFtLXN0YXJ0IGJ1dAot
Ly8gYmVmb3JlIG1haW4pLCBhdCBsZWFzdCB3aGVuICd2YWx1ZScgaXMgYSBjb21waWxlLXRpbWUg
Y29uc3RhbnQuICBXZQotLy8gdXNlIGEgc21hbGwgdHJpY2sgZm9yIHRoZSAiZGVmYXVsdCB2YWx1
ZSIgdmFyaWFibGUsIGFuZCBjYWxsIGl0Ci0vLyBGTEFHU19ubzxuYW1lPi4gIFRoaXMgc2VydmVz
IHRoZSBzZWNvbmQgcHVycG9zZSBvZiBhc3N1cmluZyBhCi0vLyBjb21waWxlIGVycm9yIGlmIHNv
bWVvbmUgdHJpZXMgdG8gZGVmaW5lIGEgZmxhZyBuYW1lZCBubzxuYW1lPgotLy8gd2hpY2ggaXMg
aWxsZWdhbCAoLS1mb28gYW5kIC0tbm9mb28gYm90aCBhZmZlY3QgdGhlICJmb28iIGZsYWcpLgot
I2RlZmluZSBERUZJTkVfVkFSSUFCTEUodHlwZSwgc2hvcnR0eXBlLCBuYW1lLCB2YWx1ZSwgaGVs
cCkgICAgICAgICAgICAgXAotICBuYW1lc3BhY2UgZkwjI3Nob3J0dHlwZSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBjb25zdCB0eXBl
IEZMQUdTX25vbm8jI25hbWUgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IC8qIFdlIGFsd2F5cyB3YW50IHRvIGV4cG9ydCBkZWZpbmVkIHZhcmlhYmxlcywgZGxsIG9yIG5v
ICovICAgICAgICAgXAotICAgIEdGTEFHU19ETExfREVGSU5FX0ZMQUcgdHlwZSBGTEFHU18jI25h
bWUgPSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgXAotICAgIHR5cGUgRkxBR1Nfbm8jI25hbWUg
PSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0
YXRpYyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlciBvXyMjbmFtZSggICAgICAgICAg
ICAgICAgICAgXAotICAgICAgI25hbWUsICN0eXBlLCBNQVlCRV9TVFJJUFBFRF9IRUxQKGhlbHAp
LCBfX0ZJTEVfXywgICAgICAgICAgICAgICAgXAotICAgICAgJkZMQUdTXyMjbmFtZSwgJkZMQUdT
X25vIyNuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICB1c2luZyBmTCMjc2hvcnR0eXBlOjpGTEFHU18jI25hbWUKLQotLy8gRm9yIERF
RklORV9ib29sLCB3ZSB3YW50IHRvIGRvIHRoZSBleHRyYSBjaGVjayB0aGF0IHRoZSBwYXNzZWQt
aW4KLS8vIHZhbHVlIGlzIGFjdHVhbGx5IGEgYm9vbCwgYW5kIG5vdCBhIHN0cmluZyBvciBzb21l
dGhpbmcgdGhhdCBjYW4gYmUKLS8vIGNvZXJjZWQgdG8gYSBib29sLiAgVGhlc2UgZGVjbGFyYXRp
b25zIChubyBkZWZpbml0aW9uIG5lZWRlZCEpIHdpbGwKLS8vIGhlbHAgdXMgZG8gdGhhdCwgYW5k
IG5ldmVyIGV2YWx1YXRlIEZyb20sIHdoaWNoIGlzIGltcG9ydGFudC4KLS8vIFdlJ2xsIHVzZSAn
c2l6ZW9mKElzQm9vbCh2YWwpKScgdG8gZGlzdGluZ3Vpc2guIFRoaXMgY29kZSByZXF1aXJlcwot
Ly8gdGhhdCB0aGUgY29tcGlsZXIgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgZm9yIGJvb2wgJiBkb3Vi
bGUuIFNpbmNlCi0vLyB0aGlzIGlzIG5vdCBndWFyYW50ZWVkIGJ5IHRoZSBzdGFuZGFyZCwgd2Ug
Y2hlY2sgaXQgd2l0aCBhCi0vLyBDT01QSUxFX0FTU0VSVC4KLW5hbWVzcGFjZSBmTEIgewotc3Ry
dWN0IENvbXBpbGVBc3NlcnQge307Ci10eXBlZGVmIENvbXBpbGVBc3NlcnQgZXhwZWN0ZWRfc2l6
ZW9mX2RvdWJsZV9uZXFfc2l6ZW9mX2Jvb2xbCi0gICAgICAgICAgICAgICAgICAgICAgKHNpemVv
Zihkb3VibGUpICE9IHNpemVvZihib29sKSkgPyAxIDogLTFdOwotdGVtcGxhdGU8dHlwZW5hbWUg
RnJvbT4gZG91YmxlIEdGTEFHU19ETExfREVDTCBJc0Jvb2xGbGFnKGNvbnN0IEZyb20mIGZyb20p
OwotR0ZMQUdTX0RMTF9ERUNMIGJvb2wgSXNCb29sRmxhZyhib29sIGZyb20pOwotfSAgLy8gbmFt
ZXNwYWNlIGZMQgotCi0vLyBIZXJlIGFyZSB0aGUgYWN0dWFsIERFRklORV8qLW1hY3Jvcy4gVGhl
IHJlc3BlY3RpdmUgREVDTEFSRV8qLW1hY3JvcwotLy8gYXJlIGluIGEgc2VwYXJhdGUgaW5jbHVk
ZSwgZ2ZsYWdzX2RlY2xhcmUuaCwgZm9yIHJlZHVjaW5nCi0vLyB0aGUgcGh5c2ljYWwgdHJhbnNp
dGl2ZSBzaXplIGZvciBERUNMQVJFIHVzZS4KLSNkZWZpbmUgREVGSU5FX2Jvb2wobmFtZSwgdmFs
LCB0eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbmFtZXNwYWNl
IGZMQiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB0eXBlZGVmIDo6ZkxCOjpDb21waWxlQXNzZXJ0IEZMQUdfIyNuYW1lIyNfdmFs
dWVfaXNfbm90X2FfYm9vbFsgICAgIFwKLSAgICAgICAgICAgIChzaXplb2YoOjpmTEI6OklzQm9v
bEZsYWcodmFsKSkgIT0gc2l6ZW9mKGRvdWJsZSkpPyAxOiAtMV07IFwKLSAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgREVGSU5FX1ZBUklBQkxFKGJvb2wsIEIsIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5l
IERFRklORV9pbnQzMihuYW1lLCB2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKEdGTEFH
U19OQU1FU1BBQ0U6OmludDMyLCBJLCBcCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsLCB0
eHQpCi0KLSNkZWZpbmUgREVGSU5FX2ludDY0KG5hbWUsIHZhbCwgdHh0KSBcCi0gICBERUZJTkVf
VkFSSUFCTEUoR0ZMQUdTX05BTUVTUEFDRTo6aW50NjQsIEk2NCwgXAotICAgICAgICAgICAgICAg
ICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV91aW50NjQobmFtZSx2YWwsIHR4
dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OnVpbnQ2NCwgVTY0LCBc
Ci0gICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsLCB0eHQpCi0KLSNkZWZpbmUgREVGSU5FX2Rv
dWJsZShuYW1lLCB2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKGRvdWJsZSwgRCwgbmFt
ZSwgdmFsLCB0eHQpCi0KLS8vIFN0cmluZ3MgYXJlIHRyaWNraWVyLCBiZWNhdXNlIHRoZXkncmUg
bm90IGEgUE9ELCBzbyB3ZSBjYW4ndAotLy8gY29uc3RydWN0IHRoZW0gYXQgc3RhdGljLWluaXRp
YWxpemF0aW9uIHRpbWUgKGluc3RlYWQgdGhleSBnZXQKLS8vIGNvbnN0cnVjdGVkIGF0IGdsb2Jh
bC1jb25zdHJ1Y3RvciB0aW1lLCB3aGljaCBpcyBtdWNoIGxhdGVyKS4gIFRvCi0vLyB0cnkgdG8g
YXZvaWQgY3Jhc2hlcyBpbiB0aGF0IGNhc2UsIHdlIHVzZSBhIGNoYXIgYnVmZmVyIHRvIHN0b3Jl
Ci0vLyB0aGUgc3RyaW5nLCB3aGljaCB3ZSBjYW4gc3RhdGljLWluaXRpYWxpemUsIGFuZCB0aGVu
IHBsYWNlbWVudC1uZXcKLS8vIGludG8gaXQgbGF0ZXIuICBJdCdzIG5vdCBwZXJmZWN0LCBidXQg
dGhlIGJlc3Qgd2UgY2FuIGRvLgotCi1uYW1lc3BhY2UgZkxTIHsKLQotaW5saW5lIGNsc3RyaW5n
KiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmluZ3Nwb3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsdWUpIHsKLSAg
cmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0cmluZyh2YWx1ZSk7Ci19Ci1pbmxpbmUgY2xzdHJp
bmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJpbmcoY2hhciAqc3RyaW5nc3BvdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbHN0cmluZyAmdmFsdWUp
IHsKLSAgcmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0cmluZyh2YWx1ZSk7Ci19Ci1pbmxpbmUg
Y2xzdHJpbmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJpbmcoY2hhciAqc3RyaW5nc3BvdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpOwotfSAg
Ly8gbmFtZXNwYWNlIGZMUwotCi0vLyBXZSBuZWVkIHRvIGRlZmluZSBhIHZhciBuYW1lZCBGTEFH
U19ubyMjbmFtZSBzbyBwZW9wbGUgZG9uJ3QgZGVmaW5lCi0vLyAtLXN0cmluZyBhbmQgLS1ub3N0
cmluZy4gIEFuZCB3ZSBuZWVkIGEgdGVtcG9yYXJ5IHBsYWNlIHRvIHB1dCB2YWwKLS8vIHNvIHdl
IGRvbid0IGhhdmUgdG8gZXZhbHVhdGUgaXQgdHdpY2UuICBUd28gZ3JlYXQgbmVlZHMgdGhhdCBn
bwotLy8gZ3JlYXQgdG9nZXRoZXIhCi0vLyBUaGUgd2VpcmQgJ3VzaW5nJyArICdleHRlcm4nIGlu
c2lkZSB0aGUgZkxTIG5hbWVzcGFjZSBpcyB0byB3b3JrIGFyb3VuZAotLy8gYW4gdW5rbm93biBj
b21waWxlciBidWcvaXNzdWUgd2l0aCB0aGUgZ2NjIDQuMi4xIG9uIFNVU0UgMTAuICBTZWUKLS8v
ICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtZ2ZsYWdzL2lzc3Vlcy9kZXRhaWw/
aWQ9MjAKLSNkZWZpbmUgREVGSU5FX3N0cmluZyhuYW1lLCB2YWwsIHR4dCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIG5hbWVzcGFjZSBmTFMgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVz
aW5nIDo6ZkxTOjpjbHN0cmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdW5pb24geyB2b2lkKiBhbGlnbjsgY2hhciBzW3Np
emVvZihjbHN0cmluZyldOyB9IHNfIyNuYW1lWzJdOyAgICBcCi0gICAgY2xzdHJpbmcqIGNvbnN0
IEZMQUdTX25vIyNuYW1lID0gOjpmTFM6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X3Bhc3MwdG9ERUZJTkVf
c3RyaW5nKHNfIyNuYW1lWzBdLnMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpOyAgICAgICAgICBcCi0gICAgc3RhdGlj
IEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdSZWdpc3RlcmVyIG9fIyNuYW1lKCAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAjbmFtZSwgInN0cmluZyIsIE1BWUJFX1NUUklQUEVEX0hFTFAo
dHh0KSwgX19GSUxFX18sICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc18jI25hbWVbMF0ucywg
bmV3IChzXyMjbmFtZVsxXS5zKSBjbHN0cmluZygqRkxBR1Nfbm8jI25hbWUpKTsgICAgICBcCi0g
ICAgZXh0ZXJuIEdGTEFHU19ETExfREVGSU5FX0ZMQUcgY2xzdHJpbmcmIEZMQUdTXyMjbmFtZTsg
ICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGZMUzo6RkxBR1NfIyNuYW1lOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBjbHN0cmluZyYg
RkxBR1NfIyNuYW1lID0gKkZMQUdTX25vIyNuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB1c2luZyBmTFM6OkZMQUdTXyMjbmFtZQot
Ci0jZW5kaWYgIC8vIFNXSUcKLQotCi0vLyBJbXBvcnQgZ2ZsYWdzIGxpYnJhcnkgc3ltYm9scyBp
bnRvIGFsdGVybmF0aXZlL2RlcHJlY2F0ZWQgbmFtZXNwYWNlKHMpCi0jaW5jbHVkZSAiZ2ZsYWdz
X2dmbGFncy5oIgotCi0KLSNlbmRpZiAgLy8gR0ZMQUdTX0dGTEFHU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2Vu
L3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19jb21wbGV0aW9ucy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1
ZGUvZ2ZsYWdzL2dmbGFnc19jb21wbGV0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmOTUxYzFlMDJkMWZkOTZhZjI1ZTZiYmI3OTlhMDBkYWNlZDVmNTcyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFn
cy9nZmxhZ3NfY29tcGxldGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIC0t
LQotCi0vLwotLy8gSW1wbGVtZW50IGhlbHBmdWwgYmFzaC1zdHlsZSBjb21tYW5kIGxpbmUgZmxh
ZyBjb21wbGV0aW9ucwotLy8KLS8vICoqIEZ1bmN0aW9uYWwgQVBJOgotLy8gSGFuZGxlQ29tbWFu
ZExpbmVDb21wbGV0aW9ucygpIHNob3VsZCBiZSBjYWxsZWQgZWFybHkgZHVyaW5nCi0vLyBwcm9n
cmFtIHN0YXJ0dXAsIGJ1dCBhZnRlciBjb21tYW5kIGxpbmUgZmxhZyBjb2RlIGhhcyBiZWVuCi0v
LyBpbml0aWFsaXplZCwgc3VjaCBhcyB0aGUgYmVnaW5uaW5nIG9mIEhhbmRsZUNvbW1hbmRMaW5l
SGVscEZsYWdzKCkuCi0vLyBJdCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIC0tdGFiX2Nv
bXBsZXRpb25fd29yZC4gIElmIHRoaXMKLS8vIGZsYWcgaXMgZW1wdHksIG5vdGhpbmcgaGFwcGVu
cyBoZXJlLiAgSWYgaXQgY29udGFpbnMgYSBzdHJpbmcsCi0vLyBob3dldmVyLCB0aGVuIEhhbmRs
ZUNvbW1hbmRMaW5lQ29tcGxldGlvbnMoKSB3aWxsIGhpamFjayB0aGUKLS8vIHByb2Nlc3MsIGF0
dGVtcHRpbmcgdG8gaWRlbnRpZnkgdGhlIGludGVudGlvbiBiZWhpbmQgdGhpcwotLy8gY29tcGxl
dGlvbi4gIFJlZ2FyZGxlc3Mgb2YgdGhlIG91dGNvbWUgb2YgdGhpcyBkZWR1Y3Rpb24sIHRoZQot
Ly8gcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQsIHNpbWlsYXIgdG8gLS1oZWxwc2hvcnQgZmxh
ZwotLy8gaGFuZGxpbmcuCi0vLwotLy8gKiogT3ZlcnZpZXcgb2YgQmFzaCBjb21wbGV0aW9uczoK
LS8vIEJhc2ggY2FuIGJlIHRvbGQgdG8gcHJvZ3JhbWF0aWNhbGx5IGRldGVybWluZSBjb21wbGV0
aW9ucyBmb3IgdGhlCi0vLyBjdXJyZW50ICdjdXJzb3Igd29yZCcuICBJdCBkb2VzIHRoaXMgYnkg
KGluIHRoaXMgY2FzZSkgaW52b2tpbmcgYQotLy8gY29tbWFuZCB3aXRoIHNvbWUgYWRkaXRpb25h
bCBhcmd1bWVudHMgaWRlbnRpZnlpbmcgdGhlIGNvbW1hbmQKLS8vIGJlaW5nIGV4ZWN1dGVkLCB0
aGUgd29yZCBiZWluZyBjb21wbGV0ZWQsIGFuZCB0aGUgcHJldmlvdXMgd29yZAotLy8gKGlmIGFu
eSkuICBCYXNoIHRoZW4gZXhwZWN0cyBhIHNlcXVlbmNlIG9mIG91dHB1dCBsaW5lcyB0byBiZQot
Ly8gcHJpbnRlZCB0byBzdGRvdXQuICBJZiB0aGVzZSBsaW5lcyBhbGwgY29udGFpbiBhIGNvbW1v
biBwcmVmaXgKLS8vIGxvbmdlciB0aGFuIHRoZSBjdXJzb3Igd29yZCwgYmFzaCB3aWxsIHJlcGxh
Y2UgdGhlIGN1cnNvciB3b3JkCi0vLyB3aXRoIHRoYXQgY29tbW9uIHByZWZpeCwgYW5kIGRpc3Bs
YXkgbm90aGluZy4gIElmIHRoZXJlIGlzbid0IHN1Y2gKLS8vIGEgY29tbW9uIHByZWZpeCwgYmFz
aCB3aWxsIGRpc3BsYXkgdGhlIGxpbmVzIGluIHBhZ2VzIHVzaW5nICdtb3JlJy4KLS8vCi0vLyAq
KiBTdHJhdGVneSB0YWtlbiBmb3IgY29tbWFuZCBsaW5lIGNvbXBsZXRpb25zOgotLy8gSWYgd2Ug
Y2FuIGRlZHVjZSBlaXRoZXIgdGhlIGV4YWN0IGZsYWcgaW50ZW5kZWQsIG9yIGEgY29tbW9uIGZs
YWcKLS8vIHByZWZpeCwgd2UnbGwgb3V0cHV0IGV4YWN0bHkgdGhhdC4gIE90aGVyd2lzZSwgaWYg
aW5mb3JtYXRpb24KLS8vIG11c3QgYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLCB3ZSdsbCB0YWtl
IHRoZSBvcHBvcnR1bml0eSB0byBhZGQKLS8vIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiBiZXlv
bmQganVzdCB0aGUgZmxhZyBuYW1lIChzcGVjaWZpY2FsbHksCi0vLyB3ZSdsbCBpbmNsdWRlIHRo
ZSBkZWZhdWx0IGZsYWcgdmFsdWUgYW5kIGFzIG11Y2ggb2YgdGhlIGZsYWcncwotLy8gZGVzY3Jp
cHRpb24gYXMgY2FuIGZpdCBvbiBhIHNpbmdsZSB0ZXJtaW5hbCBsaW5lIHdpZHRoLCBhcyBzcGVj
aWZpZWQKLS8vIGJ5IHRoZSBmbGFnIC0tdGFiX2NvbXBsZXRpb25fY29sdW1ucykuICBGdXJ0aGVy
bW9yZSwgd2UnbGwgdHJ5IHRvCi0vLyBtYWtlIGJhc2ggb3JkZXIgdGhlIG91dHB1dCBzdWNoIHRo
YXQgdGhlIG1vc3QgdXNlZnVsIG9yIHJlbGV2ZW50Ci0vLyBmbGFncyBhcmUgdGhlIG1vc3QgbGlr
ZWx5IHRvIGJlIHNob3duIGF0IHRoZSB0b3AuCi0vLwotLy8gKiogQWRkaXRpb25hbCBmZWF0dXJl
czoKLS8vIFRvIGFzc2lzdCBpbiBmaW5kaW5nIHRoYXQgb25lIHJlYWxseSB1c2VmdWwgZmxhZywg
c3Vic3RyaW5nIG1hdGNoaW5nCi0vLyB3YXMgaW1wbGVtZW50ZWQuICBCZWZvcmUgcHJlc3Npbmcg
YSA8VEFCPiB0byBnZXQgY29tcGxldGlvbiBmb3IgdGhlCi0vLyBjdXJyZW50IHdvcmQsIHlvdSBj
YW4gYXBwZW5kIG9uZSBvciBtb3JlICc/JyB0byB0aGUgZmxhZyB0byBkbwotLy8gc3Vic3RyaW5n
IG1hdGNoaW5nLiAgSGVyZSdzIHRoZSBzZW1hbnRpY3M6Ci0vLyAgIC0tZm9vPFRBQj4gICAgIFNo
b3cgbWUgYWxsIGZsYWdzIHdpdGggbmFtZXMgcHJlZml4ZWQgYnkgJ2ZvbycKLS8vICAgLS1mb28/
PFRBQj4gICAgU2hvdyBtZSBhbGwgZmxhZ3Mgd2l0aCAnZm9vJyBzb21ld2hlcmUgaW4gdGhlIG5h
bWUKLS8vICAgLS1mb28/PzxUQUI+ICAgU2FtZSBhcyBwcmlvciBjYXNlLCBidXQgYWxzbyBzZWFy
Y2ggaW4gbW9kdWxlCi0vLyAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24gcGF0aCBmb3IgJ2Zv
bycKLS8vICAgLS1mb28/Pz88VEFCPiAgU2FtZSBhcyBwcmlvciBjYXNlLCBidXQgYWxzbyBzZWFy
Y2ggaW4gZmxhZwotLy8gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnMgZm9yICdmb28nCi0v
LyBGaW5hbGx5LCB3ZSdsbCB0cmltIHRoZSBvdXRwdXQgdG8gYSByZWxhdGl2ZWx5IHNtYWxsIG51
bWJlciBvZgotLy8gZmxhZ3MgdG8ga2VlcCBiYXNoIHF1aWV0IGFib3V0IHRoZSB2ZXJib3NpdHkg
b2Ygb3V0cHV0LiAgSWYgb25lCi0vLyByZWFsbHkgd2FudGVkIHRvIHNlZSBhbGwgcG9zc2libGUg
bWF0Y2hlcywgYXBwZW5kaW5nIGEgJysnIHRvIHRoZQotLy8gc2VhcmNoIHdvcmQgd2lsbCBmb3Jj
ZSB0aGUgZXhoYXVzdGl2ZSBsaXN0IG9mIG1hdGNoZXMgdG8gYmUgcHJpbnRlZC4KLS8vCi0vLyAq
KiBIb3cgdG8gaGF2ZSBiYXNoIGFjY2VwdCBjb21wbGV0aW9ucyBmcm9tIGEgYmluYXJ5OgotLy8g
QmFzaCByZXF1aXJlcyB0aGF0IGl0IGJlIGluZm9ybWVkIGFib3V0IGVhY2ggY29tbWFuZCB0aGF0
IHByb2dyYW1tYXRpYwotLy8gY29tcGxldGlvbiBzaG91bGQgYmUgZW5hYmxlZCBmb3IuICBFeGFt
cGxlIGFkZGl0aW9uIHRvIGEgLmJhc2hyYwotLy8gZmlsZSB3b3VsZCBiZSAoeW91ciBwYXRoIHRv
IGdmbGFnc19jb21wbGV0aW9ucy5zaCBmaWxlIG1heSBkaWZmZXIpOgotCi0vKgotJCBjb21wbGV0
ZSAtbyBiYXNoZGVmYXVsdCAtbyBkZWZhdWx0IC1vIG5vc3BhY2UgLUMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICcvaG9tZS9idWlsZC9lbmcvYmFzaC9iYXNoX2NvbXBsZXRpb25zLnNo
IC0tdGFiX2NvbXBsZXRpb25fY29sdW1ucyAkQ09MVU1OUycgXAotICB0aW1lICBlbnYgIGJpbmFy
eV9uYW1lICBhbm90aGVyX2JpbmFyeSAgWy4uLl0KLSovCi0KLS8vIFRoaXMgd291bGQgYWxsb3cg
dGhlIGZvbGxvd2luZyB0byB3b3JrOgotLy8gICAkIC9wYXRoL3RvL2JpbmFyeV9uYW1lIC0tdm1v
ZHVsZTxUQUI+Ci0vLyBPcjoKLS8vICAgJCAuL2Jpbi9wYXRoL2Fub3RoZXJfYmluYXJ5IC0tZ2Zz
X3U8VEFCPgotLy8gKGV0YykKLS8vCi0vLyBTYWRseSwgaXQgYXBwZWFycyB0aGF0IGJhc2ggZ2l2
ZXMgbm8gZWFzeSB3YXkgdG8gZm9yY2UgdGhpcyBiZWhhdmlvciBmb3IKLS8vIGFsbCBjb21tYW5k
cy4gIFRoYXQncyB3aGVyZSB0aGUgInRpbWUiIGluIHRoZSBhYm92ZSBleGFtcGxlIGNvbWVzIGlu
LgotLy8gSWYgeW91IGhhdmVuJ3Qgc3BlY2lmaWNhbGx5IGFkZGVkIGEgY29tbWFuZCB0byB0aGUg
bGlzdCBvZiBjb21wbGV0aW9uCi0vLyBzdXBwb3J0ZWQgY29tbWFuZHMsIHlvdSBjYW4gc3RpbGwg
Z2V0IGNvbXBsZXRpb25zIGJ5IHByZWZpeGluZyB0aGUKLS8vIGVudGlyZSBjb21tYW5kIHdpdGgg
ImVudiIuCi0vLyAgICQgZW52IC9zb21lL2JyYW5kL25ldy9iaW5hcnkgLS12bW9kPFRBQj4KLS8v
IEFzc3VtaW5nIHRoYXQgImJpbmFyeSIgaXMgYSBuZXdseSBjb21waWxlZCBiaW5hcnksIHRoaXMg
c2hvdWxkIHN0aWxsCi0vLyBwcm9kdWNlIHRoZSBleHBlY3RlZCBjb21wbGV0aW9uIG91dHB1dC4K
LQotCi0jaWZuZGVmIEdGTEFHU19DT01QTEVUSU9OU19IXwotI2RlZmluZSBHRkxBR1NfQ09NUExF
VElPTlNfSF8KLQotbmFtZXNwYWNlIGdvb2dsZSB7Ci0KLWV4dGVybiB2b2lkIEhhbmRsZUNvbW1h
bmRMaW5lQ29tcGxldGlvbnModm9pZCk7Ci0KLX0KLQotI2VuZGlmICAvLyBHRkxBR1NfQ09NUExF
VElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfZGVjbGFy
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxh
Z3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19kZWNsYXJlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkzNWEyMGU3NzVjYmUxOTc1YzNiNmZlNWJmZGFmNTU1ZTVlOTZi
YjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4
L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19kZWNsYXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAxOTk5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotLy8gLS0tCi0vLwotLy8gUmV2YW1wZWQgYW5kIHJlb3JnYW5pemVkIGJ5IENyYWlnIFNpbHZl
cnN0ZWluCi0vLwotLy8gVGhpcyBpcyB0aGUgZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBi
eSBhbnkgZmlsZSB3aGljaCBkZWNsYXJlcwotLy8gY29tbWFuZCBsaW5lIGZsYWcuCi0KLSNpZm5k
ZWYgR0ZMQUdTX0RFQ0xBUkVfSF8KLSNkZWZpbmUgR0ZMQUdTX0RFQ0xBUkVfSF8KLQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIE5hbWVzcGFjZSBvZiBnZmxhZ3MgbGlicmFyeSBzeW1ib2xz
LgotI2RlZmluZSBHRkxBR1NfTkFNRVNQQUNFIGdvb2dsZQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIFdpbmRvd3MgRExMIGltcG9ydC9leHBvcnQuCi0KLS8vIFdlIGFsd2F5cyB3YW50IHRv
IGltcG9ydCB0aGUgc3ltYm9scyBvZiB0aGUgZ2ZsYWdzIGxpYnJhcnkKLSNpZm5kZWYgR0ZMQUdT
X0RMTF9ERUNMCi0jICBpZiAwICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBHRkxB
R1NfRExMX0RFQ0wgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBlbHNlCi0jICAgIGRlZmluZSBH
RkxBR1NfRExMX0RFQ0wKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gV2UgYWx3YXlzIHdhbnQgdG8g
aW1wb3J0IHZhcmlhYmxlcyBkZWNsYXJlZCBpbiB1c2VyIGNvZGUKLSNpZm5kZWYgR0ZMQUdTX0RM
TF9ERUNMQVJFX0ZMQUcKLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExM
X0RFQ0xBUkVfRkxBRyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSMgIGVsc2UKLSMgICAgZGVmaW5l
IEdGTEFHU19ETExfREVDTEFSRV9GTEFHCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gRmxhZyB0eXBlcwotI2luY2x1ZGUgPHN0cmluZz4KLSNpZiAxCi0jICBp
bmNsdWRlIDxzdGRpbnQuaD4gICAgICAgICAgICAgICAgICAgLy8gdGhlIG5vcm1hbCBwbGFjZSB1
aW50MzJfdCBpcyBkZWZpbmVkCi0jZWxpZiAxCi0jICBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gICAg
ICAgICAgICAgICAgLy8gdGhlIG5vcm1hbCBwbGFjZSB1X2ludDMyX3QgaXMgZGVmaW5lZAotI2Vs
aWYgMQotIyAgaW5jbHVkZSA8aW50dHlwZXMuaD4gICAgICAgICAgICAgICAgIC8vIGEgdGhpcmQg
cGxhY2UgZm9yIHVpbnQzMl90IG9yIHVfaW50MzJfdAotI2VuZGlmCi0KLW5hbWVzcGFjZSBHRkxB
R1NfTkFNRVNQQUNFIHsKLQotI2lmIDEgLy8gQzk5Ci10eXBlZGVmIGludDMyX3QgICAgICAgICAg
aW50MzI7Ci10eXBlZGVmIHVpbnQzMl90ICAgICAgICAgdWludDMyOwotdHlwZWRlZiBpbnQ2NF90
ICAgICAgICAgIGludDY0OwotdHlwZWRlZiB1aW50NjRfdCAgICAgICAgIHVpbnQ2NDsKLSNlbGlm
IDAgLy8gQlNECi10eXBlZGVmIGludDMyX3QgICAgICAgICAgaW50MzI7Ci10eXBlZGVmIHVfaW50
MzJfdCAgICAgICAgdWludDMyOwotdHlwZWRlZiBpbnQ2NF90ICAgICAgICAgIGludDY0OwotdHlw
ZWRlZiB1X2ludDY0X3QgICAgICAgIHVpbnQ2NDsKLSNlbGlmIDAgLy8gV2luZG93cwotdHlwZWRl
ZiBfX2ludDMyICAgICAgICAgIGludDMyOwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVpbnQz
MjsKLXR5cGVkZWYgX19pbnQ2NCAgICAgICAgICBpbnQ2NDsKLXR5cGVkZWYgdW5zaWduZWQgX19p
bnQ2NCB1aW50NjQ7Ci0jZWxzZQotIyAgZXJyb3IgRG8gbm90IGtub3cgaG93IHRvIGRlZmluZSBh
IDMyLWJpdCBpbnRlZ2VyIHF1YW50aXR5IG9uIHlvdXIgc3lzdGVtCi0jZW5kaWYKLQotfSAvLyBu
YW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRQotCi0KLW5hbWVzcGFjZSBmTFMgewotCi0vLyBUaGUg
bWVhbmluZyBvZiAic3RyaW5nIiBtaWdodCBiZSBkaWZmZXJlbnQgYmV0d2VlbiBub3cgYW5kIHdo
ZW4gdGhlCi0vLyBtYWNyb3MgYmVsb3cgZ2V0IGludm9rZWQgKGUuZy4sIGlmIHNvbWVvbmUgaXMg
ZXhwZXJpbWVudGluZyB3aXRoCi0vLyBvdGhlciBzdHJpbmcgaW1wbGVtZW50YXRpb25zIHRoYXQg
Z2V0IGRlZmluZWQgYWZ0ZXIgdGhpcyBmaWxlIGlzCi0vLyBpbmNsdWRlZCkuICBTYXZlIHRoZSBj
dXJyZW50IG1lYW5pbmcgbm93IGFuZCB1c2UgaXQgaW4gdGhlIG1hY3Jvcy4KLXR5cGVkZWYgc3Rk
OjpzdHJpbmcgY2xzdHJpbmc7Ci0KLX0gLy8gbmFtZXNwYWNlIGZMUwotCi0KLSNkZWZpbmUgREVD
TEFSRV9WQVJJQUJMRSh0eXBlLCBzaG9ydHR5cGUsIG5hbWUpIFwKLSAgLyogV2UgYWx3YXlzIHdh
bnQgdG8gaW1wb3J0IGRlY2xhcmVkIHZhcmlhYmxlcywgZGxsIG9yIG5vICovIFwKLSAgbmFtZXNw
YWNlIGZMIyNzaG9ydHR5cGUgeyBleHRlcm4gR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcgdHlwZSBG
TEFHU18jI25hbWU7IH0gXAotICB1c2luZyBmTCMjc2hvcnR0eXBlOjpGTEFHU18jI25hbWUKLQot
I2RlZmluZSBERUNMQVJFX2Jvb2wobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxFKGJvb2wsIEIs
IG5hbWUpCi0KLSNkZWZpbmUgREVDTEFSRV9pbnQzMihuYW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFC
TEUoOjpHRkxBR1NfTkFNRVNQQUNFOjppbnQzMiwgSSwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJF
X2ludDY0KG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRSg6OkdGTEFHU19OQU1FU1BBQ0U6Omlu
dDY0LCBJNjQsIG5hbWUpCi0KLSNkZWZpbmUgREVDTEFSRV91aW50NjQobmFtZSkgXAotICBERUNM
QVJFX1ZBUklBQkxFKDo6R0ZMQUdTX05BTUVTUEFDRTo6dWludDY0LCBVNjQsIG5hbWUpCi0KLSNk
ZWZpbmUgREVDTEFSRV9kb3VibGUobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxFKGRvdWJsZSwg
RCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX3N0cmluZyhuYW1lKSBcCi0gIC8qIFdlIGFsd2F5
cyB3YW50IHRvIGltcG9ydCBkZWNsYXJlZCB2YXJpYWJsZXMsIGRsbCBvciBubyAqLyBcCi0gIG5h
bWVzcGFjZSBmTFMgeyBcCi0gIHVzaW5nIDo6ZkxTOjpjbHN0cmluZzsgXAotICBleHRlcm4gR0ZM
QUdTX0RMTF9ERUNMQVJFX0ZMQUcgOjpmTFM6OmNsc3RyaW5nJiBGTEFHU18jI25hbWU7IFwKLSAg
fSBcCi0gIHVzaW5nIGZMUzo6RkxBR1NfIyNuYW1lCi0KLQotI2VuZGlmICAvLyBHRkxBR1NfREVD
TEFSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19nZmxhZ3Mu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfZ2ZsYWdzLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBjMTc4MjVkZDYyMzcxZDBmMjgyN2NkZjg3NzNiNDAzZmU0MTBmNTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2lu
Y2x1ZGUvZ2ZsYWdzL2dmbGFnc19nZmxhZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCww
IEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQsIEFuZHJlYXMgU2NodWgKLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBJbXBvcnRzIHRoZSBnZmxhZ3MgbGlicmFyeSBz
eW1ib2xzIGludG8gYW4gYWx0ZXJuYXRpdmUvZGVwcmVjYXRlZCBuYW1lc3BhY2UuCi0KLSNpZm5k
ZWYgR0ZMQUdTX0dGTEFHU19IXwotIyAgZXJyb3IgVGhlIGludGVybmFsIGhlYWRlciBnZmxhZ3Nf
Z2ZsYWdzLmggbWF5IG9ubHkgYmUgaW5jbHVkZWQgYnkgZ2ZsYWdzLmgKLSNlbmRpZgotCi0jaWZu
ZGVmIEdGTEFHU19OU19HRkxBR1NfSF8KLSNkZWZpbmUgR0ZMQUdTX05TX0dGTEFHU19IXwotCi0K
LW5hbWVzcGFjZSBnZmxhZ3MgewotCi0KLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OmludDMyOwot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6dWludDMyOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6
aW50NjQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQ7Ci0KLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OlJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkNvbW1hbmRMaW5lRmxhZ0luZm87Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRBbGxGbGFn
czsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNob3dVc2FnZVdpdGhGbGFnczsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0OwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6RGVzY3JpYmVPbmVGbGFnOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0
QXJndjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFyZ3ZzOwotdXNpbmcgR0ZMQUdTX05B
TUVTUEFDRTo6R2V0QXJndjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFyZ3YwOwotdXNp
bmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndlN1bTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OlByb2dyYW1JbnZvY2F0aW9uTmFtZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlByb2dyYW1J
bnZvY2F0aW9uU2hvcnROYW1lOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UHJvZ3JhbVVzYWdl
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6VmVyc2lvblN0cmluZzsKLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OkdldENvbW1hbmRMaW5lT3B0aW9uOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6
R2V0Q29tbWFuZExpbmVGbGFnSW5mbzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldENvbW1h
bmRMaW5lRmxhZ0luZm9PckRpZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdTZXR0aW5n
TW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNFVF9GTEFHU19WQUxVRTsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlNFVF9GTEFHX0lGX0RFRkFVTFQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQ
QUNFOjpTRVRfRkxBR1NfREVGQVVMVDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldENvbW1h
bmRMaW5lT3B0aW9uOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdTYXZlcjsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OkNvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nOwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6UmVhZEZsYWdzRnJvbVN0cmluZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkFwcGVuZEZsYWdzSW50b0ZpbGU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpSZWFkRnJvbUZs
YWdzRmlsZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkJvb2xGcm9tRW52OwotdXNpbmcgR0ZM
QUdTX05BTUVTUEFDRTo6SW50MzJGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6SW50
NjRGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6VWludDY0RnJvbUVudjsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OkRvdWJsZUZyb21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpTdHJpbmdGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0VXNhZ2VNZXNzYWdl
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0VmVyc2lvblN0cmluZzsKLXVzaW5nIEdGTEFH
U19OQU1FU1BBQ0U6OlBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OkFsbG93Q29tbWFuZExpbmVSZXBhcnNpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpSZXBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFn
UmVnaXN0ZXJlcjsKLQotI2lmbmRlZiBTV0lHCi11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQYXJz
ZUNvbW1hbmRMaW5lRmxhZ3M7Ci0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSBnZmxhZ3MKLQot
Ci0jZW5kaWYgIC8vIEdGTEFHU19OU19HRkxBR1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNs
dWRlL3ByaXZhdGUvY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVkZS9wcml2YXRlL2NvbmZpZy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTJkNjFjNGMwNjdlZGRlMWVkNzcyNmMzNmE2
NjZhYTliMDIxNGRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L2dlbi9wb3NpeC9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTIgKzAsMCBAQAotLyogR2VuZXJhdGVkIGZyb20gY29uZmlnLmguaW4gZHVyaW5nIGJ1aWxkIGNv
bmZpZ3VyYXRpb24gdXNpbmcgQ01ha2UuICovCi0KLS8vIE5vdGU6IFRoaXMgaGVhZGVyIGZpbGUg
aXMgb25seSB1c2VkIGludGVybmFsbHkuIEl0IGlzIG5vdCBwYXJ0IG9mIHB1YmxpYyBpbnRlcmZh
Y2UhCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU3lzdGVtIGNoZWNrcwotCi0vLyBEZWZp
bmUgaWYgeW91IGJ1aWxkIHRoaXMgbGlicmFyeSBmb3IgYSBNUyBXaW5kb3dzIE9TLgotLyogI3Vu
ZGVmIE9TX1dJTkRPV1MgKi8KLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+
IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NURElOVF9ICi0KLS8vIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TWVNfVFlQ
RVNfSAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmls
ZS4KLSNkZWZpbmUgSEFWRV9JTlRUWVBFU19ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg
PHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NZU19TVEFUX0gKLQotLy8g
RGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBI
QVZFX1VOSVNURF9ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZubWF0Y2guaD4gaGVh
ZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfRk5NQVRDSF9ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2
ZSB0aGUgPHNobHdhcGkuaD4gaGVhZGVyIGZpbGUgKFdpbmRvd3MgMjAwMC9YUCkuCi0vKiAjdW5k
ZWYgSEFWRV9TSExXQVBJX0ggKi8KLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xs
IGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX1NUUlRPTEwKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZl
IHRoZSBzdHJ0b3EgZnVuY3Rpb24uCi0vKiAjdW5kZWYgSEFWRV9TVFJUT1EgKi8KLQotLy8gRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8cHRocmVhZC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFW
RV9QVEhSRUFECi0KLS8vIERlZmluZSBpZiB5b3VyIHB0aHJlYWQgbGlicmFyeSBkZWZpbmVzIHRo
ZSB0eXBlIHB0aHJlYWRfcndsb2NrX3QKLSNkZWZpbmUgSEFWRV9SV0xPQ0sKLQotLy8gZ2NjIHJl
cXVpcmVzIHRoaXMgdG8gZ2V0IFBSSWQ2NCwgZXRjLgotI2lmIGRlZmluZWQoSEFWRV9JTlRUWVBF
U19IKSAmJiAhZGVmaW5lZChfX1NURENfRk9STUFUX01BQ1JPUykKLSMgIGRlZmluZSBfX1NURENf
Rk9STUFUX01BQ1JPUyAxCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYWNr
YWdlIGluZm9ybWF0aW9uCi0KLS8vIE5hbWUgb2YgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRSBn
ZmxhZ3MKLQotLy8gRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLgotI2Rl
ZmluZSBQQUNLQUdFX05BTUUgZ2ZsYWdzCi0KLS8vIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFu
ZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgZ2ZsYWdz
IDIuMi4wCi0KLS8vIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMg
cGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FIGdmbGFncy0yLjIuMAotCi0vLyBEZWZp
bmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLgotI2RlZmluZSBQQUNLQUdFX1ZFUlNJ
T04gMi4yLjAKLQotLy8gVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZS4KLSNkZWZpbmUgVkVSU0lP
TiBQQUNLQUdFX1ZFUlNJT04KLQotLy8gRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyBy
ZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuCi0jZGVmaW5lIFBBQ0tBR0Vf
QlVHUkVQT1JUIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1aHNjaHVoL2dmbGFncy9pc3N1ZXMKLQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYXRoIHNlcGFyYXRvcgotI2lmbmRlZiBQQVRIX1NF
UEFSQVRPUgotIyAgaWZkZWYgT1NfV0lORE9XUwotIyAgICBkZWZpbmUgUEFUSF9TRVBBUkFUT1Ig
ICdcXCcKLSMgIGVsc2UKLSMgICAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICAnLycKLSMgIGVuZGlm
Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBXaW5kb3dzCi0KLS8vIFdoZXRo
ZXIgZ2ZsYWdzIGxpYnJhcnkgaXMgYSBETEwuCi0jaWZuZGVmIEdGTEFHU19JU19BX0RMTAotIyAg
ZGVmaW5lIEdGTEFHU19JU19BX0RMTCAwCi0jZW5kaWYKLQotLy8gQWx3YXlzIGV4cG9ydCBzeW1i
b2xzIHdoZW4gY29tcGlsaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXMgdGhpcyBmaWxlIGlzIG9ubHkK
LS8vIGluY2x1ZGVkIGJ5IGludGVybmFsIG1vZHVsZXMgd2hlbiBidWlsZGluZyB0aGUgZ2ZsYWdz
IGxpYnJhcnkgaXRzZWxmLgotLy8gVGhlIGdmbGFnc19kZWNsYXJlLmggaGVhZGVyIGZpbGUgd2ls
bCBzZXQgaXQgdG8gaW1wb3J0IHRoZXNlIHN5bWJvbHMgb3RoZXJ3aXNlLgotI2lmbmRlZiBHRkxB
R1NfRExMX0RFQ0wKLSMgIGlmIEdGTEFHU19JU19BX0RMTCAmJiBkZWZpbmVkKF9NU0NfVkVSKQot
IyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZWxz
ZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMCi0jICBlbmRpZgotI2VuZGlmCi0vLyBGbGFn
cyBkZWZpbmVkIGJ5IHRoZSBnZmxhZ3MgbGlicmFyeSBpdHNlbGYgbXVzdCBiZSBleHBvcnRlZAot
I2lmbmRlZiBHRkxBR1NfRExMX0RFRklORV9GTEFHCi0jICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJ
TkVfRkxBRyBHRkxBR1NfRExMX0RFQ0wKLSNlbmRpZgotCi0jaWZkZWYgT1NfV0lORE9XUwotLy8g
VGhlIHVuaXR0ZXN0cyBpbXBvcnQgdGhlIHN5bWJvbHMgb2YgdGhlIHNoYXJlZCBnZmxhZ3MgbGli
cmFyeQotIyAgaWYgR0ZMQUdTX0lTX0FfRExMICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRl
ZmluZSBHRkxBR1NfRExMX0RFQ0xfRk9SX1VOSVRURVNUUyBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
LSMgIGVuZGlmCi0jICBpbmNsdWRlICJ3aW5kb3dzX3BvcnQuaCIKLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
Z2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2Zs
YWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1N2VlYzZiZTdjZTJmNzE0ZGI5
YzVlOWNkYmFiNzhiMTEzMzM3ZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaAorKysgL2Rldi9udWxsCkBA
IC0xLDU3MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0vLyAtLS0KLS8vIFJldmFtcGVkIGFuZCByZW9yZ2FuaXplZCBieSBDcmFpZyBT
aWx2ZXJzdGVpbgotLy8KLS8vIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCBzaG91bGQgYmUgaW5jbHVk
ZWQgYnkgYW55IGZpbGUgd2hpY2ggZGVjbGFyZXMKLS8vIG9yIGRlZmluZXMgYSBjb21tYW5kIGxp
bmUgZmxhZyBvciB3YW50cyB0byBwYXJzZSBjb21tYW5kIGxpbmUgZmxhZ3MKLS8vIG9yIHByaW50
IGEgcHJvZ3JhbSB1c2FnZSBtZXNzYWdlICh3aGljaCB3aWxsIGluY2x1ZGUgaW5mb3JtYXRpb24g
YWJvdXQKLS8vIGZsYWdzKS4gIEV4ZWN1dGl2ZSBzdW1tYXJ5LCBpbiB0aGUgZm9ybSBvZiBhbiBl
eGFtcGxlIGZvby5jYyBmaWxlOgotLy8KLS8vICAgICNpbmNsdWRlICJmb28uaCIgICAgICAgICAv
LyBmb28uaCBoYXMgYSBsaW5lICJERUNMQVJFX2ludDMyKHN0YXJ0KTsiCi0vLyAgICAjaW5jbHVk
ZSAidmFsaWRhdG9ycy5oIiAgLy8gaHlwb3RoZXRpY2FsIGZpbGUgZGVmaW5pbmcgVmFsaWRhdGVJ
c0ZpbGUoKQotLy8KLS8vICAgIERFRklORV9pbnQzMihlbmQsIDEwMDAsICJUaGUgbGFzdCByZWNv
cmQgdG8gcmVhZCIpOwotLy8KLS8vICAgIERFRklORV9zdHJpbmcoZmlsZW5hbWUsICJteV9maWxl
LnR4dCIsICJUaGUgZmlsZSB0byByZWFkIik7Ci0vLyAgICAvLyBDcmFzaCBpZiB0aGUgc3BlY2lm
aWVkIGZpbGUgZG9lcyBub3QgZXhpc3QuCi0vLyAgICBzdGF0aWMgYm9vbCBkdW1teSA9IFJlZ2lz
dGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfZmlsZW5hbWUsCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmVmFsaWRhdGVJc0ZpbGUpOwotLy8KLS8vICAgIERF
Q0xBUkVfYm9vbCh2ZXJib3NlKTsgLy8gc29tZSBvdGhlciBmaWxlIGhhcyBhIERFRklORV9ib29s
KHZlcmJvc2UsIC4uLikKLS8vCi0vLyAgICB2b2lkIE15RnVuYygpIHsKLS8vICAgICAgaWYgKEZM
QUdTX3ZlcmJvc2UpIHByaW50ZigiUmVjb3JkcyAlZC0lZFxuIiwgRkxBR1Nfc3RhcnQsIEZMQUdT
X2VuZCk7Ci0vLyAgICB9Ci0vLwotLy8gICAgVGhlbiwgYXQgdGhlIGNvbW1hbmQtbGluZToKLS8v
ICAgICAgIC4vZm9vIC0tbm92ZXJib3NlIC0tc3RhcnQ9NSAtLWVuZD0xMDAKLS8vCi0vLyBGb3Ig
bW9yZSBkZXRhaWxzLCBzZWUKLS8vICAgIGRvYy9nZmxhZ3MuaHRtbAotLy8KLS8vIC0tLSBBIG5v
dGUgYWJvdXQgdGhyZWFkLXNhZmV0eToKLS8vCi0vLyBXZSBkZXNjcmliZSBtYW55IGZ1bmN0aW9u
cyBpbiB0aGlzIHJvdXRpbmUgYXMgYmVpbmcgdGhyZWFkLWhvc3RpbGUsCi0vLyB0aHJlYWQtY29t
cGF0aWJsZSwgb3IgdGhyZWFkLXNhZmUuICBIZXJlIGFyZSB0aGUgbWVhbmluZ3Mgd2UgdXNlOgot
Ly8KLS8vIHRocmVhZC1zYWZlOiBpdCBpcyBzYWZlIGZvciBtdWx0aXBsZSB0aHJlYWRzIHRvIGNh
bGwgdGhpcyByb3V0aW5lCi0vLyAgIChvciwgd2hlbiByZWZlcnJpbmcgdG8gYSBjbGFzcywgbWV0
aG9kcyBvZiB0aGlzIGNsYXNzKQotLy8gICBjb25jdXJyZW50bHkuCi0vLyB0aHJlYWQtaG9zdGls
ZTogaXQgaXMgbm90IHNhZmUgZm9yIG11bHRpcGxlIHRocmVhZHMgdG8gY2FsbCB0aGlzCi0vLyAg
IHJvdXRpbmUgKG9yIG1ldGhvZHMgb2YgdGhpcyBjbGFzcykgY29uY3VycmVudGx5LiAgSW4gZ2Zs
YWdzLAotLy8gICBtb3N0IHRocmVhZC1ob3N0aWxlIHJvdXRpbmVzIGFyZSBpbnRlbmRlZCB0byBi
ZSBjYWxsZWQgZWFybHkgaW4sCi0vLyAgIG9yIGV2ZW4gYmVmb3JlLCBtYWluKCkgLS0gdGhhdCBp
cywgYmVmb3JlIHRocmVhZHMgYXJlIHNwYXduZWQuCi0vLyB0aHJlYWQtY29tcGF0aWJsZTogaXQg
aXMgc2FmZSBmb3IgbXVsdGlwbGUgdGhyZWFkcyB0byByZWFkIGZyb20KLS8vICAgdGhpcyB2YXJp
YWJsZSAod2hlbiBhcHBsaWVkIHRvIHZhcmlhYmxlcyksIG9yIHRvIGNhbGwgY29uc3QKLS8vICAg
bWV0aG9kcyBvZiB0aGlzIGNsYXNzICh3aGVuIGFwcGxpZWQgdG8gY2xhc3NlcyksIGFzIGxvbmcg
YXMgbm8KLS8vICAgb3RoZXIgdGhyZWFkIGlzIHdyaXRpbmcgdG8gdGhlIHZhcmlhYmxlIG9yIGNh
bGxpbmcgbm9uLWNvbnN0Ci0vLyAgIG1ldGhvZHMgb2YgdGhpcyBjbGFzcy4KLQotI2lmbmRlZiBH
RkxBR1NfR0ZMQUdTX0hfCi0jZGVmaW5lIEdGTEFHU19HRkxBR1NfSF8KLQotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJnZmxhZ3NfZGVjbGFyZS5oIiAv
LyBJV1lVIHByYWdtYTogZXhwb3J0Ci0KLQotLy8gV2UgYWx3YXlzIHdhbnQgdG8gZXhwb3J0IHZh
cmlhYmxlcyBkZWZpbmVkIGluIHVzZXIgY29kZQotI2lmbmRlZiBHRkxBR1NfRExMX0RFRklORV9G
TEFHCi0jICBpZmRlZiBfTVNDX1ZFUgotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxB
RyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIEdGTEFHU19ETExf
REVGSU5FX0ZMQUcKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgR0ZMQUdTX05BTUVT
UEFDRSB7Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRvIGFjdHVhbGx5IGRlZmluZSBhIGZsYWcg
aW4gYSBmaWxlLCB1c2UgREVGSU5FX2Jvb2wsCi0vLyBERUZJTkVfc3RyaW5nLCBldGMuIGF0IHRo
ZSBib3R0b20gb2YgdGhpcyBmaWxlLiAgWW91IG1heSBhbHNvIGZpbmQKLS8vIGl0IHVzZWZ1bCB0
byByZWdpc3RlciBhIHZhbGlkYXRvciB3aXRoIHRoZSBmbGFnLiAgVGhpcyBlbnN1cmVzIHRoYXQK
LS8vIHdoZW4gdGhlIGZsYWcgaXMgcGFyc2VkIGZyb20gdGhlIGNvbW1hbmRsaW5lLCBvciBpcyBs
YXRlciBzZXQgdmlhCi0vLyBTZXRDb21tYW5kTGluZU9wdGlvbiwgd2UgY2FsbCB0aGUgdmFsaWRh
dGlvbiBmdW5jdGlvbi4gSXQgaXMgX25vdF8KLS8vIGNhbGxlZCB3aGVuIHlvdSBhc3NpZ24gdGhl
IHZhbHVlIHRvIHRoZSBmbGFnIGRpcmVjdGx5IHVzaW5nIHRoZSA9IG9wZXJhdG9yLgotLy8KLS8v
IFRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgZmxhZyB2
YWx1ZSBpcyB2YWxpZCwgYW5kCi0vLyBmYWxzZSBvdGhlcndpc2UuIElmIHRoZSBmdW5jdGlvbiBy
ZXR1cm5zIGZhbHNlIGZvciB0aGUgbmV3IHNldHRpbmcgb2YgdGhlCi0vLyBmbGFnLCB0aGUgZmxh
ZyB3aWxsIHJldGFpbiBpdHMgY3VycmVudCB2YWx1ZS4gSWYgaXQgcmV0dXJucyBmYWxzZSBmb3Ig
dGhlCi0vLyBkZWZhdWx0IHZhbHVlLCBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKSB3aWxsIGRpZS4K
LS8vCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIHNhZmUgdG8gY2FsbCBhdCBnbG9iYWwgY29uc3RydWN0
IHRpbWUgKGFzIGluIHRoZQotLy8gZXhhbXBsZSBiZWxvdykuCi0vLwotLy8gRXhhbXBsZSB1c2U6
Ci0vLyAgICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVBvcnQoY29uc3QgY2hhciogZmxhZ25hbWUsIGlu
dDMyIHZhbHVlKSB7Ci0vLyAgICAgICBpZiAodmFsdWUgPiAwICYmIHZhbHVlIDwgMzI3NjgpICAg
Ly8gdmFsdWUgaXMgb2sKLS8vICAgICAgICAgcmV0dXJuIHRydWU7Ci0vLyAgICAgICBwcmludGYo
IkludmFsaWQgdmFsdWUgZm9yIC0tJXM6ICVkXG4iLCBmbGFnbmFtZSwgKGludCl2YWx1ZSk7Ci0v
LyAgICAgICByZXR1cm4gZmFsc2U7Ci0vLyAgICB9Ci0vLyAgICBERUZJTkVfaW50MzIocG9ydCwg
MCwgIldoYXQgcG9ydCB0byBsaXN0ZW4gb24iKTsKLS8vICAgIHN0YXRpYyBib29sIGR1bW15ID0g
UmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU19wb3J0LCAmVmFsaWRhdGVQb3J0KTsKLQotLy8g
UmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLCBmYWxzZSBpZiBub3QgKGJl
Y2F1c2UgdGhlCi0vLyBmaXJzdCBhcmd1bWVudCBkb2Vzbid0IHBvaW50IHRvIGEgY29tbWFuZC1s
aW5lIGZsYWcsIG9yIGJlY2F1c2UgYQotLy8gdmFsaWRhdG9yIGlzIGFscmVhZHkgcmVnaXN0ZXJl
ZCBmb3IgdGhpcyBmbGFnKS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZs
YWdWYWxpZGF0b3IoY29uc3QgYm9vbCogICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbiko
Y29uc3QgY2hhciosIGJvb2wpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3Rl
ckZsYWdWYWxpZGF0b3IoY29uc3QgaW50MzIqICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9m
bikoY29uc3QgY2hhciosIGludDMyKSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IGludDY0KiAgICAgICBmbGFnLCBib29sICgqdmFsaWRh
dGVfZm4pKGNvbnN0IGNoYXIqLCBpbnQ2NCkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29s
IFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCB1aW50NjQqICAgICAgZmxhZywgYm9vbCAoKnZh
bGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgdWludDY0KSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IGJvb2wgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IGRvdWJsZSogICAgICBmbGFnLCBib29s
ICgqdmFsaWRhdGVfZm4pKGNvbnN0IGNoYXIqLCBkb3VibGUpKTsKLWV4dGVybiBHRkxBR1NfRExM
X0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3Qgc3RkOjpzdHJpbmcqIGZsYWcs
IGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGNvbnN0IHN0ZDo6c3RyaW5nJikpOwot
Ci0vLyBDb252ZW5pZW5jZSBtYWNybyBmb3IgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIGZsYWcgdmFs
aWRhdG9yCi0jZGVmaW5lIERFRklORV92YWxpZGF0b3IobmFtZSwgdmFsaWRhdG9yKSBcCi0gICAg
c3RhdGljIGNvbnN0IGJvb2wgbmFtZSMjX3ZhbGlkYXRvcl9yZWdpc3RlcmVkID0gXAotICAgICAg
ICAgICAgR0ZMQUdTX05BTUVTUEFDRTo6UmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU18jI25h
bWUsIHZhbGlkYXRvcikKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlc2UgbWV0aG9kcyBhcmUg
dGhlIGJlc3Qgd2F5IHRvIGdldCBhY2Nlc3MgdG8gaW5mbyBhYm91dCB0aGUKLS8vIGxpc3Qgb2Yg
Y29tbWFuZGxpbmUgZmxhZ3MuICBOb3RlIHRoYXQgdGhlc2Ugcm91dGluZXMgYXJlIHByZXR0eSBz
bG93LgotLy8gICBHZXRBbGxGbGFnczogbW9zdGx5LWNvbXBsZXRlIGluZm8gYWJvdXQgdGhlIGxp
c3QsIHNvcnRlZCBieSBmaWxlLgotLy8gICBTaG93VXNhZ2VXaXRoRmxhZ3M6IHByZXR0eS1wcmlu
dHMgdGhlIGxpc3QgdG8gc3Rkb3V0ICh3aGF0IC0taGVscCBkb2VzKQotLy8gICBTaG93VXNhZ2VX
aXRoRmxhZ3NSZXN0cmljdDogbGltaXQgdG8gZmlsZW5hbWVzIHdpdGggcmVzdHJpY3QgYXMgYSBz
dWJzdHIKLS8vCi0vLyBJbiBhZGRpdGlvbiB0byBhY2Nlc3NpbmcgZmxhZ3MsIHlvdSBjYW4gYWxz
byBhY2Nlc3MgYXJndlswXSAodGhlIHByb2dyYW0KLS8vIG5hbWUpIGFuZCBhcmd2ICh0aGUgZW50
aXJlIGNvbW1hbmRsaW5lKSwgd2hpY2ggd2Ugc29jayBhd2F5IGEgY29weSBvZi4KLS8vIFRoZXNl
IHZhcmlhYmxlcyBhcmUgc3RhdGljLCBzbyB5b3Ugc2hvdWxkIG9ubHkgc2V0IHRoZW0gb25jZS4K
LS8vCi0vLyBObyBuZWVkIHRvIGV4cG9ydCB0aGlzIGRhdGEgb25seSBzdHJ1Y3R1cmUgZnJvbSBE
TEwsIGF2b2lkaW5nIFZTIHdhcm5pbmcgNDI1MS4KLXN0cnVjdCBDb21tYW5kTGluZUZsYWdJbmZv
IHsKLSAgc3RkOjpzdHJpbmcgbmFtZTsgICAgICAgICAgICAvLyB0aGUgbmFtZSBvZiB0aGUgZmxh
ZwotICBzdGQ6OnN0cmluZyB0eXBlOyAgICAgICAgICAgIC8vIHRoZSB0eXBlIG9mIHRoZSBmbGFn
OiBpbnQzMiwgZXRjCi0gIHN0ZDo6c3RyaW5nIGRlc2NyaXB0aW9uOyAgICAgLy8gdGhlICJoZWxw
IHRleHQiIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmxhZwotICBzdGQ6OnN0cmluZyBjdXJyZW50X3Zh
bHVlOyAgIC8vIHRoZSBjdXJyZW50IHZhbHVlLCBhcyBhIHN0cmluZwotICBzdGQ6OnN0cmluZyBk
ZWZhdWx0X3ZhbHVlOyAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlLCBhcyBhIHN0cmluZwotICBzdGQ6
OnN0cmluZyBmaWxlbmFtZTsgICAgICAgIC8vICdjbGVhbmVkJyB2ZXJzaW9uIG9mIGZpbGVuYW1l
IGhvbGRpbmcgdGhlIGZsYWcKLSAgYm9vbCBoYXNfdmFsaWRhdG9yX2ZuOyAgICAgICAvLyB0cnVl
IGlmIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvciBjYWxsZWQgb24gdGhpcyBmbGFnCi0gIGJvb2wgaXNf
ZGVmYXVsdDsgICAgICAgICAgICAgLy8gdHJ1ZSBpZiB0aGUgZmxhZyBoYXMgdGhlIGRlZmF1bHQg
dmFsdWUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzIG5vdCBiZWVu
IHNldCBleHBsaWNpdGx5IGZyb20gdGhlIGNtZGxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBvciB2aWEgU2V0Q29tbWFuZExpbmVPcHRpb24KLSAgY29uc3Qgdm9pZCogZmxh
Z19wdHI7ICAgICAgICAvLyBwb2ludGVyIHRvIHRoZSBmbGFnJ3MgY3VycmVudCB2YWx1ZSAoaS5l
LiBGTEFHU19mb28pCi19OwotCi0vLyBVc2luZyB0aGlzIGluc2lkZSBvZiBhIHZhbGlkYXRvciBp
cyBhIHJlY2lwZSBmb3IgYSBkZWFkbG9jay4KLS8vIFRPRE8odXNlcikgRml4IGxvY2tpbmcgd2hl
biB2YWxpZGF0b3JzIGFyZSBydW5uaW5nLCB0byBtYWtlIGl0IHNhZmUgdG8KLS8vIGNhbGwgdmFs
aWRhdG9ycyBkdXJpbmcgUGFyc2VBbGxGbGFncy4KLS8vIEFsc28gbWFrZSBzdXJlIHRoZW4gdG8g
dW5jb21tZW50IHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgdGVzdCBpbgotLy8gZ2ZsYWdzX3VuaXR0
ZXN0LnNoCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgR2V0QWxsRmxhZ3Moc3RkOjp2ZWN0
b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4qIE9VVFBVVCk7Ci0vLyBUaGVzZSB0d28gYXJlIGFjdHVh
bGx5IGRlZmluZWQgaW4gZ2ZsYWdzX3JlcG9ydGluZy5jYy4KLWV4dGVybiBHRkxBR1NfRExMX0RF
Q0wgdm9pZCBTaG93VXNhZ2VXaXRoRmxhZ3MoY29uc3QgY2hhciAqYXJndjApOyAgLy8gd2hhdCAt
LWhlbHAgZG9lcwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIFNob3dVc2FnZVdpdGhGbGFn
c1Jlc3RyaWN0KGNvbnN0IGNoYXIgKmFyZ3YwLCBjb25zdCBjaGFyICpyZXN0cmljdCk7Ci0KLS8v
IENyZWF0ZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBmb3IgYSBmbGFnLgotLy8gR29lcyB0byBzb21l
IHRyb3VibGUgdG8gbWFrZSBwcmV0dHkgbGluZSBicmVha3MuCi1leHRlcm4gR0ZMQUdTX0RMTF9E
RUNMIHN0ZDo6c3RyaW5nIERlc2NyaWJlT25lRmxhZyhjb25zdCBDb21tYW5kTGluZUZsYWdJbmZv
JiBmbGFnKTsKLQotLy8gVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUg
YW55IHRocmVhZHMgYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2V0
QXJndihpbnQgYXJnYywgY29uc3QgY2hhcioqIGFyZ3YpOwotCi0vLyBUaGUgZm9sbG93aW5nIGZ1
bmN0aW9ucyBhcmUgdGhyZWFkLXNhZmUgYXMgbG9uZyBhcyBTZXRBcmd2KCkgaXMKLS8vIG9ubHkg
Y2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBzdGFydC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBHZXRBcmd2cygpOwotZXh0ZXJuIEdGTEFH
U19ETExfREVDTCBjb25zdCBjaGFyKiBHZXRBcmd2KCk7ICAgICAgICAgICAgICAgICAgICAgIC8v
IGFsbCBvZiBhcmd2IGFzIGEgc3RyaW5nCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNo
YXIqIEdldEFyZ3YwKCk7ICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhcmd2MAotZXh0ZXJu
IEdGTEFHU19ETExfREVDTCB1aW50MzIgR2V0QXJndlN1bSgpOyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHNpbXBsZSBjaGVja3N1bSBvZiBhcmd2Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNv
bnN0IGNoYXIqIFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpOyAgICAgICAgLy8gYXJndjAsIG9yICJV
TktOT1dOIiBpZiBub3Qgc2V0Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIFBy
b2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCk7ICAgLy8gYmFzZW5hbWUoYXJndjApCi0KLS8vIFBy
b2dyYW1Vc2FnZSgpIGlzIHRocmVhZC1zYWZlIGFzIGxvbmcgYXMgU2V0VXNhZ2VNZXNzYWdlKCkg
aXMgb25seQotLy8gY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBzdGFydC4KLWV4dGVybiBHRkxB
R1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbVVzYWdlKCk7ICAgICAgICAgICAgICAgICAv
LyBzdHJpbmcgc2V0IGJ5IFNldFVzYWdlTWVzc2FnZSgpCi0KLS8vIFZlcnNpb25TdHJpbmcoKSBp
cyB0aHJlYWQtc2FmZSBhcyBsb25nIGFzIFNldFZlcnNpb25TdHJpbmcoKSBpcyBvbmx5Ci0vLyBj
YWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBj
b25zdCBjaGFyKiBWZXJzaW9uU3RyaW5nKCk7ICAgICAgICAgICAgICAgIC8vIHN0cmluZyBzZXQg
YnkgU2V0VmVyc2lvblN0cmluZygpCi0KLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTm9ybWFsbHkg
eW91IGFjY2VzcyBjb21tYW5kbGluZSBmbGFncyBieSBqdXN0IHNheWluZyAiaWYgKEZMQUdTX2Zv
bykiCi0vLyBvciB3aGF0ZXZlciwgYW5kIHNldCB0aGVtIGJ5IGNhbGxpbmcgIkZMQUdTX2ZvbyA9
IGJhciIgKG9yLCBtb3JlCi0vLyBjb21tb25seSwgdmlhIHRoZSBERUZJTkVfZm9vIG1hY3JvKS4g
IEJ1dCBpZiB5b3UgbmVlZCBhIGJpdCBtb3JlCi0vLyBjb250cm9sLCB3ZSBoYXZlIHByb2dyYW1t
YXRpYyB3YXlzIHRvIGdldC9zZXQgdGhlIGZsYWdzIGFzIHdlbGwuCi0vLyBUaGVzZSBwcm9ncmFt
bWF0aWMgd2F5cyB0byBhY2Nlc3MgZmxhZ3MgYXJlIHRocmVhZC1zYWZlLCBidXQgZGlyZWN0Ci0v
LyBhY2Nlc3MgaXMgb25seSB0aHJlYWQtY29tcGF0aWJsZS4KLQotLy8gUmV0dXJuIHRydWUgaWZm
IHRoZSBmbGFnbmFtZSB3YXMgZm91bmQuCi0vLyBPVVRQVVQgaXMgc2V0IHRvIHRoZSBmbGFnJ3Mg
dmFsdWUsIG9yIHVuY2hhbmdlZCBpZiB3ZSByZXR1cm4gZmFsc2UuCi1leHRlcm4gR0ZMQUdTX0RM
TF9ERUNMIGJvb2wgR2V0Q29tbWFuZExpbmVPcHRpb24oY29uc3QgY2hhciogbmFtZSwgc3RkOjpz
dHJpbmcqIE9VVFBVVCk7Ci0KLS8vIFJldHVybiB0cnVlIGlmZiB0aGUgZmxhZ25hbWUgd2FzIGZv
dW5kLiBPVVRQVVQgaXMgc2V0IHRvIHRoZSBmbGFnJ3MKLS8vIENvbW1hbmRMaW5lRmxhZ0luZm8g
b3IgdW5jaGFuZ2VkIGlmIHdlIHJldHVybiBmYWxzZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
Ym9vbCBHZXRDb21tYW5kTGluZUZsYWdJbmZvKGNvbnN0IGNoYXIqIG5hbWUsIENvbW1hbmRMaW5l
RmxhZ0luZm8qIE9VVFBVVCk7Ci0KLS8vIFJldHVybiB0aGUgQ29tbWFuZExpbmVGbGFnSW5mbyBv
ZiB0aGUgZmxhZ25hbWUuICBleGl0KCkgaWYgbmFtZSBub3QgZm91bmQuCi0vLyBFeGFtcGxlIHVz
YWdlLCB0byBjaGVjayBpZiBhIGZsYWcncyB2YWx1ZSBpcyBjdXJyZW50bHkgdGhlIGRlZmF1bHQg
dmFsdWU6Ci0vLyAgIGlmIChHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoImZvbyIpLmlzX2Rl
ZmF1bHQpIC4uLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBDb21tYW5kTGluZUZsYWdJbmZvIEdl
dENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZShjb25zdCBjaGFyKiBuYW1lKTsKLQotZW51bSBHRkxB
R1NfRExMX0RFQ0wgRmxhZ1NldHRpbmdNb2RlIHsKLSAgLy8gdXBkYXRlIHRoZSBmbGFnJ3MgdmFs
dWUgKGNhbiBjYWxsIHRoaXMgbXVsdGlwbGUgdGltZXMpLgotICBTRVRfRkxBR1NfVkFMVUUsCi0g
IC8vIHVwZGF0ZSB0aGUgZmxhZydzIHZhbHVlLCBidXQgKm9ubHkgaWYqIGl0IGhhcyBub3QgeWV0
IGJlZW4gdXBkYXRlZAotICAvLyB3aXRoIFNFVF9GTEFHU19WQUxVRSwgU0VUX0ZMQUdfSUZfREVG
QVVMVCwgb3IgIkZMQUdTX3h4eCA9IG5vbmRlZiIuCi0gIFNFVF9GTEFHX0lGX0RFRkFVTFQsCi0g
IC8vIHNldCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgdG8gdGhpcy4gIElmIHRoZSBmbGFnIGhh
cyBub3QgeWV0IHVwZGF0ZWQKLSAgLy8geWV0ICh2aWEgU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxB
R19JRl9ERUZBVUxULCBvciAiRkxBR1NfeHh4ID0gbm9uZGVmIikKLSAgLy8gY2hhbmdlIHRoZSBm
bGFnJ3MgY3VycmVudCB2YWx1ZSB0byB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgYXMgd2VsbC4KLSAg
U0VUX0ZMQUdTX0RFRkFVTFQKLX07Ci0KLS8vIFNldCBhIHBhcnRpY3VsYXIgZmxhZyAoImNvbW1h
bmQgbGluZSBvcHRpb24iKS4gIFJldHVybnMgYSBzdHJpbmcKLS8vIGRlc2NyaWJpbmcgdGhlIG5l
dyB2YWx1ZSB0aGF0IHRoZSBvcHRpb24gaGFzIGJlZW4gc2V0IHRvLiAgVGhlCi0vLyByZXR1cm4g
dmFsdWUgQVBJIGlzIG5vdCB3ZWxsLXNwZWNpZmllZCwgc28gYmFzaWNhbGx5IGp1c3QgZGVwZW5k
IG9uCi0vLyBpdCB0byBiZSBlbXB0eSBpZiB0aGUgc2V0dGluZyBmYWlsZWQgZm9yIHNvbWUgcmVh
c29uIC0tIHRoZSBuYW1lIGlzCi0vLyBub3QgYSB2YWxpZCBmbGFnIG5hbWUsIG9yIHRoZSB2YWx1
ZSBpcyBub3QgYSB2YWxpZCB2YWx1ZSAtLSBhbmQKLS8vIG5vbi1lbXB0eSBlbHNlLgotCi0vLyBT
ZXRDb21tYW5kTGluZU9wdGlvbiB1c2VzIHNldF9tb2RlID09IFNFVF9GTEFHU19WQUxVRSAodGhl
IGNvbW1vbiBjYXNlKQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBzdGQ6OnN0cmluZyBTZXRDb21t
YW5kTGluZU9wdGlvbiAgICAgICAgKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVl
KTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgU2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSwgRmxhZ1NldHRp
bmdNb2RlIHNldF9tb2RlKTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU2F2ZXMgdGhlIHN0YXRl
cyAodmFsdWUsIGRlZmF1bHQgdmFsdWUsIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHNldAotLy8gdGhl
IGZsYWcsIHJlZ2lzdGVyZWQgdmFsaWRhdG9ycywgZXRjKSBvZiBhbGwgZmxhZ3MsIGFuZCByZXN0
b3JlcwotLy8gdGhlbSB3aGVuIHRoZSBGbGFnU2F2ZXIgaXMgZGVzdHJveWVkLiAgVGhpcyBpcyB2
ZXJ5IHVzZWZ1bCBpbgotLy8gdGVzdHMsIHNheSwgd2hlbiB5b3Ugd2FudCB0byBsZXQgeW91ciB0
ZXN0cyBjaGFuZ2UgdGhlIGZsYWdzLCBidXQKLS8vIG1ha2Ugc3VyZSB0aGF0IHRoZXkgZ2V0IHJl
dmVydGVkIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZXMgd2hlbiB5b3VyCi0vLyB0ZXN0IGlzIGNvbXBs
ZXRlLgotLy8KLS8vIEV4YW1wbGUgdXNhZ2U6Ci0vLyAgIHZvaWQgVGVzdEZvbygpIHsKLS8vICAg
ICBGbGFnU2F2ZXIgczE7Ci0vLyAgICAgRkxBR19mb28gPSBmYWxzZTsKLS8vICAgICBGTEFHX2Jh
ciA9ICJzb21lIHZhbHVlIjsKLS8vCi0vLyAgICAgLy8gdGVzdCBoYXBwZW5zIGhlcmUuICBZb3Ug
Y2FuIHJldHVybiBhdCBhbnkgdGltZQotLy8gICAgIC8vIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQg
cmVzdG9yaW5nIHRoZSBGTEFHIHZhbHVlcy4KLS8vICAgfQotLy8KLS8vIE5vdGU6IFRoaXMgY2xh
c3MgaXMgbWFya2VkIHdpdGggR0ZMQUdTX0FUVFJJQlVURV9VTlVTRUQgYmVjYXVzZSBhbGwKLS8v
IHRoZSB3b3JrIGlzIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLCBzbyBp
biB0aGUgc3RhbmRhcmQKLS8vIHVzYWdlIGV4YW1wbGUgYWJvdmUsIHRoZSBjb21waWxlciB3b3Vs
ZCBjb21wbGFpbiB0aGF0IGl0J3MgYW4KLS8vIHVudXNlZCB2YXJpYWJsZS4KLS8vCi0vLyBUaGlz
IGNsYXNzIGlzIHRocmVhZC1zYWZlLiAgSG93ZXZlciwgaXRzIGRlc3RydWN0b3Igd3JpdGVzIHRv
Ci0vLyBleGFjdGx5IHRoZSBzZXQgb2YgZmxhZ3MgdGhhdCBoYXZlIGNoYW5nZWQgdmFsdWUgZHVy
aW5nIGl0cwotLy8gbGlmZXRpbWUsIHNvIGNvbmN1cnJlbnQgX2RpcmVjdF8gYWNjZXNzIHRvIHRo
b3NlIGZsYWdzCi0vLyAoaS5lLiBGTEFHU19mb28gaW5zdGVhZCBvZiB7R2V0LFNldH1Db21tYW5k
TGluZU9wdGlvbigpKSBpcyB1bnNhZmUuCi0KLWNsYXNzIEdGTEFHU19ETExfREVDTCBGbGFnU2F2
ZXIgewotIHB1YmxpYzoKLSAgRmxhZ1NhdmVyKCk7Ci0gIH5GbGFnU2F2ZXIoKTsKLQotIHByaXZh
dGU6Ci0gIGNsYXNzIEZsYWdTYXZlckltcGwqIGltcGxfOyAgIC8vIHdlIHVzZSBwaW1wbCBoZXJl
IHRvIGtlZXAgQVBJIHN0ZWFkeQotCi0gIEZsYWdTYXZlcihjb25zdCBGbGFnU2F2ZXImKTsgIC8v
IG5vIGNvcHlpbmchCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEZsYWdTYXZlciYpOwotfTsKLQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIFNvbWUgZGVwcmVjYXRlZCBvciBob3BlZnVsbHktc29vbi10by1i
ZS1kZXByZWNhdGVkIGZ1bmN0aW9ucy4KLQotLy8gVGhpcyBpcyBvZnRlbiB1c2VkIGZvciBsb2dn
aW5nLiAgVE9ETyhjc2lsdmVycyk6IGZpZ3VyZSBvdXQgYSBiZXR0ZXIgd2F5Ci1leHRlcm4gR0ZM
QUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIENvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nKCk7Ci0v
LyBVc3VhbGx5IHdoZXJlIHRoaXMgaXMgdXNlZCwgYSBGbGFnU2F2ZXIgc2hvdWxkIGJlIHVzZWQg
aW5zdGVhZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wKLWJvb2wgUmVhZEZsYWdzRnJvbVN0cmlu
Zyhjb25zdCBzdGQ6OnN0cmluZyYgZmxhZ2ZpbGVjb250ZW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBwcm9nX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBlcnJvcnNfYXJlX2ZhdGFsKTsgIC8vIHVzZXMgU0VUX0ZMQUdTX1ZBTFVFCi0KLS8vIFRo
ZXNlIGxldCB5b3UgbWFudWFsbHkgaW1wbGVtZW50IC0tZmxhZ2ZpbGUgZnVuY3Rpb25hbGl0eS4K
LS8vIERFUFJFQ0FURUQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgQXBwZW5kRmxhZ3NJ
bnRvRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNoYXIqIHByb2dfbmFt
ZSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVhZEZyb21GbGFnc0ZpbGUoY29uc3Qg
c3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBwcm9nX25hbWUsIGJvb2wgZXJyb3Jz
X2FyZV9mYXRhbCk7ICAgLy8gdXNlcyBTRVRfRkxBR1NfVkFMVUUKLQotCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gVXNlZnVsIHJvdXRpbmVzIGZvciBpbml0aWFsaXppbmcgZmxhZ3MgZnJvbSB0aGUgZW52
aXJvbm1lbnQuCi0vLyBJbiBlYWNoIGNhc2UsIGlmICd2YXJuYW1lJyBkb2VzIG5vdCBleGlzdCBp
biB0aGUgZW52aXJvbm1lbnQKLS8vIHJldHVybiBkZWZ2YWwuICBJZiAndmFybmFtZScgZG9lcyBl
eGlzdCBidXQgaXMgbm90IHZhbGlkCi0vLyAoZS5nLiwgbm90IGEgbnVtYmVyIGZvciBhbiBpbnQz
MiBmbGFnKSwgYWJvcnQgd2l0aCBhbiBlcnJvci4KLS8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2
YWx1ZS4gIE5PVEU6IGZvciBib29sZWFucywgZm9yIHRydWUgdXNlCi0vLyAndCcgb3IgJ1QnIG9y
ICd0cnVlJyBvciAnMScsIGZvciBmYWxzZSAnZicgb3IgJ0YnIG9yICdmYWxzZScgb3IgJzAnLgot
Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgQm9vbEZyb21FbnYoY29uc3QgY2hhciAqdmFy
bmFtZSwgYm9vbCBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBpbnQzMiBJbnQzMkZy
b21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgaW50MzIgZGVmdmFsKTsKLWV4dGVybiBHRkxBR1Nf
RExMX0RFQ0wgaW50NjQgSW50NjRGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIGludDY0IGRl
ZnZhbCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQ2NCBVaW50NjRGcm9tRW52KGNvbnN0
IGNoYXIgKnZhcm5hbWUsIHVpbnQ2NCBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBk
b3VibGUgRG91YmxlRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBkb3VibGUgZGVmdmFsKTsK
LWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciAqU3RyaW5nRnJvbUVudihjb25zdCBj
aGFyICp2YXJuYW1lLCBjb25zdCBjaGFyICpkZWZ2YWwpOwotCi0KLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBUaGUgbmV4dCB0d28gZnVuY3Rpb25zIHBhcnNlIGdmbGFncyBmcm9tIG1haW4oKToKLQotLy8g
U2V0IHRoZSAidXNhZ2UiIG1lc3NhZ2UgZm9yIHRoaXMgcHJvZ3JhbS4gIEZvciBleGFtcGxlOgot
Ly8gICBzdHJpbmcgdXNhZ2UoIlRoaXMgcHJvZ3JhbSBkb2VzIG5vdGhpbmcuICBTYW1wbGUgdXNh
Z2U6XG4iKTsKLS8vICAgdXNhZ2UgKz0gYXJndlswXSArICIgPHVzZWxlc3NhcmcxPiA8dXNlbGVz
c2FyZzI+IjsKLS8vICAgU2V0VXNhZ2VNZXNzYWdlKHVzYWdlKTsKLS8vIERvIG5vdCBpbmNsdWRl
IGNvbW1hbmRsaW5lIGZsYWdzIGluIHRoZSB1c2FnZTogd2UgZG8gdGhhdCBmb3IgeW91IQotLy8g
VGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMgYXJl
IHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2V0VXNhZ2VNZXNzYWdlKGNv
bnN0IHN0ZDo6c3RyaW5nJiB1c2FnZSk7Ci0KLS8vIFNldHMgdGhlIHZlcnNpb24gc3RyaW5nLCB3
aGljaCBpcyBlbWl0dGVkIHdpdGggLS12ZXJzaW9uLgotLy8gRm9yIGluc3RhbmNlOiBTZXRWZXJz
aW9uU3RyaW5nKCIxLjMiKTsKLS8vIFRocmVhZC1ob3N0aWxlOyBtZWFudCB0byBiZSBjYWxsZWQg
YmVmb3JlIGFueSB0aHJlYWRzIGFyZSBzcGF3bmVkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2
b2lkIFNldFZlcnNpb25TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZlcnNpb24pOwotCi0KLS8v
IExvb2tzIGZvciBmbGFncyBpbiBhcmd2IGFuZCBwYXJzZXMgdGhlbS4gIFJlYXJyYW5nZXMgYXJn
diB0byBwdXQKLS8vIGZsYWdzIGZpcnN0LCBvciByZW1vdmVzIHRoZW0gZW50aXJlbHkgaWYgcmVt
b3ZlX2ZsYWdzIGlzIHRydWUuCi0vLyBJZiBhIGZsYWcgaXMgZGVmaW5lZCBtb3JlIHRoYW4gb25j
ZSBpbiB0aGUgY29tbWFuZCBsaW5lIG9yIGZsYWcKLS8vIGZpbGUsIHRoZSBsYXN0IGRlZmluaXRp
b24gaXMgdXNlZC4gIFJldHVybnMgdGhlIGluZGV4IChpbnRvIGFyZ3YpCi0vLyBvZiB0aGUgZmly
c3Qgbm9uLWZsYWcgYXJndW1lbnQuCi0vLyBTZWUgdG9wLW9mLWZpbGUgZm9yIG1vcmUgZGV0YWls
cyBvbiB0aGlzIGZ1bmN0aW9uLgotI2lmbmRlZiBTV0lHICAgLy8gSW4gc3dpZywgdXNlIFBhcnNl
Q29tbWFuZExpbmVGbGFnc1NjcmlwdCgpIGluc3RlYWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IHVpbnQzMiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoaW50ICphcmdjLCBjaGFyKioqIGFyZ3YsIGJv
b2wgcmVtb3ZlX2ZsYWdzKTsKLSNlbmRpZgotCi0KLS8vIENhbGxzIHRvIFBhcnNlQ29tbWFuZExp
bmVOb25IZWxwRmxhZ3MgYW5kIHRoZW4gdG8KLS8vIEhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdz
IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBjYWxsIHRvCi0vLyBQYXJzZUNvbW1hbmRMaW5lRmxh
Z3MgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBpbiBvcmRlciB0byBhbGxvdyBmb3IKLS8vIGNoYW5n
aW5nIGRlZmF1bHQgdmFsdWVzIGZvciBzb21lIEZMQUdTICh2aWEKLS8vIGUuZy4gU2V0Q29tbWFu
ZExpbmVPcHRpb25XaXRoTW9kZSBjYWxscykgYmV0d2VlbiB0aGUgdGltZSBvZgotLy8gY29tbWFu
ZCBsaW5lIHBhcnNpbmcgYW5kIHRoZSB0aW1lIG9mIGR1bXBpbmcgaGVscCBpbmZvcm1hdGlvbiBm
b3IKLS8vIHRoZSBmbGFncyBhcyBhIHJlc3VsdCBvZiBjb21tYW5kIGxpbmUgcGFyc2luZy4gIElm
IGEgZmxhZyBpcwotLy8gZGVmaW5lZCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgY29tbWFuZCBsaW5l
IG9yIGZsYWcgZmlsZSwgdGhlIGxhc3QKLS8vIGRlZmluaXRpb24gaXMgdXNlZC4gIFJldHVybnMg
dGhlIGluZGV4IChpbnRvIGFyZ3YpIG9mIHRoZSBmaXJzdAotLy8gbm9uLWZsYWcgYXJndW1lbnQu
ICAoSWYgcmVtb3ZlX2ZsYWdzIGlzIHRydWUsIHdpbGwgYWx3YXlzIHJldHVybiAxLikKLWV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgdWludDMyIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoaW50
ICphcmdjLCBjaGFyKioqIGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKTsKLQotLy8gVGhpcyBpcyBh
Y3R1YWxseSBkZWZpbmVkIGluIGdmbGFnc19yZXBvcnRpbmcuY2MuCi0vLyBUaGlzIGZ1bmN0aW9u
IGlzIG1pc25hbWVkIChpdCBhbHNvIGhhbmRsZXMgLS12ZXJzaW9uLCBldGMuKSwgYnV0Ci0vLyBp
dCdzIHRvbyBsYXRlIHRvIGNoYW5nZSB0aGF0IG5vdy4gOi0oCi1leHRlcm4gR0ZMQUdTX0RMTF9E
RUNMIHZvaWQgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKTsgICAvLyBpbiBnZmxhZ3NfcmVw
b3J0aW5nLmNjCi0KLS8vIEFsbG93IGNvbW1hbmQgbGluZSByZXBhcnNpbmcuICBEaXNhYmxlcyB0
aGUgZXJyb3Igbm9ybWFsbHkKLS8vIGdlbmVyYXRlZCB3aGVuIGFuIHVua25vd24gZmxhZyBpcyBm
b3VuZCwgc2luY2UgaXQgbWF5IGJlIGZvdW5kIGluIGEKLS8vIGxhdGVyIHBhcnNlLiAgVGhyZWFk
LWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMKLS8vIGFyZSBz
cGF3bmVkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIEFsbG93Q29tbWFuZExpbmVSZXBh
cnNpbmcoKTsKLQotLy8gUmVwYXJzZSB0aGUgZmxhZ3MgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBy
ZWNvZ25pemVkLiAgT25seSBmbGFncwotLy8gcmVnaXN0ZXJlZCBzaW5jZSB0aGUgbGFzdCBwYXJz
ZSB3aWxsIGJlIHJlY29nbml6ZWQuICBBbnkgZmxhZyB2YWx1ZQotLy8gbXVzdCBiZSBwcm92aWRl
ZCBhcyBwYXJ0IG9mIHRoZSBhcmd1bWVudCB1c2luZyAiPSIsIG5vdCBhcyBhCi0vLyBzZXBhcmF0
ZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdGhhdCBmb2xsb3dzIHRoZSBmbGFnIGFyZ3VtZW50Lgot
Ly8gSW50ZW5kZWQgZm9yIGhhbmRsaW5nIGZsYWdzIGZyb20gZHluYW1pY2FsbHkgbG9hZGVkIGxp
YnJhcmllcywKLS8vIHNpbmNlIHRoZWlyIGZsYWdzIGFyZSBub3QgcmVnaXN0ZXJlZCB1bnRpbCB0
aGV5IGFyZSBsb2FkZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgUmVwYXJzZUNvbW1h
bmRMaW5lTm9uSGVscEZsYWdzKCk7Ci0KLS8vIENsZWFuIHVwIG1lbW9yeSBhbGxvY2F0ZWQgYnkg
ZmxhZ3MuICBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHJlZHVjZQotLy8gdGhlIHF1YW50aXR5IG9m
ICJwb3RlbnRpYWxseSBsZWFrZWQiIHJlcG9ydHMgZW1pdHRlZCBieSBtZW1vcnkKLS8vIGRlYnVn
Z2luZyB0b29scyBzdWNoIGFzIHZhbGdyaW5kLiAgSXQgaXMgbm90IHJlcXVpcmVkIGZvciBub3Jt
YWwKLS8vIG9wZXJhdGlvbiwgb3IgZm9yIHRoZSBnb29nbGUgcGVyZnRvb2xzIGhlYXAtY2hlY2tl
ci4gIEl0IG11c3Qgb25seQotLy8gYmUgY2FsbGVkIHdoZW4gdGhlIHByb2Nlc3MgaXMgYWJvdXQg
dG8gZXhpdCwgYW5kIGFsbCB0aHJlYWRzIHRoYXQKLS8vIG1pZ2h0IGFjY2VzcyBmbGFncyBhcmUg
cXVpZXNjZW50LiAgUmVmZXJlbmNpbmcgZmxhZ3MgYWZ0ZXIgdGhpcyBpcwotLy8gY2FsbGVkIHdp
bGwgaGF2ZSB1bmV4cGVjdGVkIGNvbnNlcXVlbmNlcy4gIFRoaXMgaXMgbm90IHNhZmUgdG8gcnVu
Ci0vLyB3aGVuIG11bHRpcGxlIHRocmVhZHMgbWlnaHQgYmUgcnVubmluZzogdGhlIGZ1bmN0aW9u
IGlzCi0vLyB0aHJlYWQtaG9zdGlsZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTaHV0
RG93bkNvbW1hbmRMaW5lRmxhZ3MoKTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTm93IGNvbWUg
dGhlIGNvbW1hbmQgbGluZSBmbGFnIGRlY2xhcmF0aW9uL2RlZmluaXRpb24gbWFjcm9zIHRoYXQK
LS8vIHdpbGwgYWN0dWFsbHkgYmUgdXNlZC4gIFRoZXkncmUga2luZCBvZiBoYWlyeS4gIEEgbWFq
b3IgcmVhc29uCi0vLyBmb3IgdGhpcyBpcyBpbml0aWFsaXphdGlvbjogd2Ugd2FudCBwZW9wbGUg
dG8gYmUgYWJsZSB0byBhY2Nlc3MKLS8vIHZhcmlhYmxlcyBpbiBnbG9iYWwgY29uc3RydWN0b3Jz
IGFuZCBoYXZlIHRoYXQgbm90IGNyYXNoLCBldmVuIGlmCi0vLyB0aGVpciBnbG9iYWwgY29uc3Ry
dWN0b3IgcnVucyBiZWZvcmUgdGhlIGdsb2JhbCBjb25zdHJ1Y3RvciBoZXJlLgotLy8gKE9idmlv
dXNseSwgd2UgY2FuJ3QgZ3VhcmFudGVlIHRoZSBmbGFncyB3aWxsIGhhdmUgdGhlIGNvcnJlY3QK
LS8vIGRlZmF1bHQgdmFsdWUgaW4gdGhhdCBjYXNlLCBidXQgYXQgbGVhc3QgYWNjZXNzaW5nIHRo
ZW0gaXMgc2FmZS4pCi0vLyBUaGUgb25seSB3YXkgdG8gZG8gdGhhdCBpcyBoYXZlIGZsYWdzIHBv
aW50IHRvIGEgc3RhdGljIGJ1ZmZlci4KLS8vIFNvIHdlIG1ha2Ugb25lLCB1c2luZyBhIHVuaW9u
IHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50LCBhbmQKLS8vIHRoZW4gdXNlIHBsYWNlbWVudC1u
ZXcgdG8gYWN0dWFsbHkgc2V0IHVwIHRoZSBmbGFnIHdpdGggdGhlCi0vLyBjb3JyZWN0IGRlZmF1
bHQgdmFsdWUuICBJbiB0aGUgc2FtZSB2ZWluLCB3ZSBoYXZlIHRvIHdvcnJ5IGFib3V0Ci0vLyBm
bGFnIGFjY2VzcyBpbiBnbG9iYWwgZGVzdHJ1Y3RvcnMsIHNvIEZsYWdSZWdpc3RlcmVyIGhhcyB0
byBiZQotLy8gY2FyZWZ1bCBuZXZlciB0byBkZXN0cm95IHRoZSBmbGFnLXZhbHVlcyBpdCBjb25z
dHJ1Y3RzLgotLy8KLS8vIE5vdGUgdGhhdCB3aGVuIHdlIGRlZmluZSBhIGZsYWcgdmFyaWFibGUg
RkxBR1NfPG5hbWU+LCB3ZSBhbHNvCi0vLyBwcmVlbXB0aXZlbHkgZGVmaW5lIGEganVuayB2YXJp
YWJsZSwgRkxBR1Nfbm88bmFtZT4uICBUaGlzIGlzIHRvCi0vLyBjYXVzZSBhIGxpbmstdGltZSBl
cnJvciBpZiBzb21lb25lIHRyaWVzIHRvIGRlZmluZSAyIGZsYWdzIHdpdGgKLS8vIG5hbWVzIGxp
a2UgImxvZ2dpbmciIGFuZCAibm9sb2dnaW5nIi4gIFdlIGRvIHRoaXMgYmVjYXVzZSBhIGJvb2wK
LS8vIGZsYWcgRkxBRyBjYW4gYmUgc2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSB0byB0cnVlIHdp
dGggYSAiLUZMQUciCi0vLyBhcmd1bWVudCwgYW5kIHRvIGZhbHNlIHdpdGggYSAiLW5vRkxBRyIg
YXJndW1lbnQsIGFuZCBzbyB0aGlzIGNhbgotLy8gcG90ZW50aWFsbHkgYXZlcnQgY29uZnVzaW9u
LgotLy8KLS8vIFdlIGFsc28gcHV0IGZsYWdzIGludG8gdGhlaXIgb3duIG5hbWVzcGFjZS4gIEl0
IGlzIHB1cnBvc2VmdWxseQotLy8gbmFtZWQgaW4gYW4gb3BhcXVlIHdheSB0aGF0IHBlb3BsZSBz
aG91bGQgaGF2ZSB0cm91YmxlIHR5cGluZwotLy8gZGlyZWN0bHkuICBUaGUgaWRlYSBpcyB0aGF0
IERFRklORSBwdXRzIHRoZSBmbGFnIGluIHRoZSB3ZWlyZAotLy8gbmFtZXNwYWNlLCBhbmQgREVD
TEFSRSBpbXBvcnRzIHRoZSBmbGFnIGZyb20gdGhlcmUgaW50byB0aGUgY3VycmVudAotLy8gbmFt
ZXNwYWNlLiAgVGhlIG5ldCByZXN1bHQgaXMgdG8gZm9yY2UgcGVvcGxlIHRvIHVzZSBERUNMQVJF
IHRvIGdldAotLy8gYWNjZXNzIHRvIGEgZmxhZywgcmF0aGVyIHRoYW4gc2F5aW5nICJleHRlcm4g
R0ZMQUdTX0RMTF9ERUNMIGJvb2wgRkxBR1Nfd2hhdGV2ZXI7IgotLy8gb3Igc29tZSBzdWNoIGlu
c3RlYWQuICBXZSB3YW50IHRoaXMgc28gd2UgY2FuIHB1dCBleHRyYQotLy8gZnVuY3Rpb25hbGl0
eSAobGlrZSBzYW5pdHktY2hlY2tpbmcpIGluIERFQ0xBUkUgaWYgd2Ugd2FudCwgYW5kCi0vLyBt
YWtlIHN1cmUgaXQgaXMgcGlja2VkIHVwIGV2ZXJ5d2hlcmUuCi0vLwotLy8gV2UgYWxzbyBwdXQg
dGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGluIHRoZSBuYW1lc3BhY2UsIHNvIHRoYXQKLS8vIHBl
b3BsZSBjYW4ndCBERUNMQVJFX2ludDMyIHNvbWV0aGluZyB0aGF0IHRoZXkgREVGSU5FX2Jvb2wn
ZAotLy8gZWxzZXdoZXJlLgotCi1jbGFzcyBHRkxBR1NfRExMX0RFQ0wgRmxhZ1JlZ2lzdGVyZXIg
ewotIHB1YmxpYzoKLSAgRmxhZ1JlZ2lzdGVyZXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hh
ciogdHlwZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogaGVscCwgY29uc3QgY2hhciog
ZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgIHZvaWQqIGN1cnJlbnRfc3RvcmFnZSwgdm9pZCog
ZGVmdmFsdWVfc3RvcmFnZSk7Ci19OwotCi0vLyBJZiB5b3VyIGFwcGxpY2F0aW9uICNkZWZpbmVz
IFNUUklQX0ZMQUdfSEVMUCB0byBhIG5vbi16ZXJvIHZhbHVlCi0vLyBiZWZvcmUgI2luY2x1ZGlu
ZyB0aGlzIGZpbGUsIHdlIHJlbW92ZSB0aGUgaGVscCBtZXNzYWdlIGZyb20gdGhlCi0vLyBiaW5h
cnkgZmlsZS4gVGhpcyBjYW4gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgYmluYXJ5
Ci0vLyBzb21ld2hhdCwgYW5kIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igc2VjdXJpdHkgcmVhc29u
cy4KLQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFyIGtTdHJpcHBlZEZsYWdIZWxw
W107Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRQotCi0KLSNpZm5kZWYgU1dJ
RyAgLy8gSW4gc3dpZywgaWdub3JlIHRoZSBtYWluIGZsYWcgZGVjbGFyYXRpb25zCi0KLSNpZiBk
ZWZpbmVkKFNUUklQX0ZMQUdfSEVMUCkgJiYgU1RSSVBfRkxBR19IRUxQID4gMAotLy8gTmVlZCB0
aGlzIGNvbnN0cnVjdCB0byBhdm9pZCB0aGUgJ2RlZmluZWQgYnV0IG5vdCB1c2VkJyB3YXJuaW5n
LgotI2RlZmluZSBNQVlCRV9TVFJJUFBFRF9IRUxQKHR4dCkgXAotICAgKGZhbHNlID8gKHR4dCkg
OiBHRkxBR1NfTkFNRVNQQUNFOjprU3RyaXBwZWRGbGFnSGVscCkKLSNlbHNlCi0jZGVmaW5lIE1B
WUJFX1NUUklQUEVEX0hFTFAodHh0KSB0eHQKLSNlbmRpZgotCi0vLyBFYWNoIGNvbW1hbmQtbGlu
ZSBmbGFnIGhhcyB0d28gdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBpdDogb25lCi0vLyB3aXRo
IHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgb25lIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUuICBIb3dl
dmVyLAotLy8gd2UgaGF2ZSBhIHRoaXJkIHZhcmlhYmxlLCB3aGljaCBpcyB3aGVyZSB2YWx1ZSBp
cyBhc3NpZ25lZDsgaXQncyBhCi0vLyBjb25zdGFudC4gIFRoaXMgZ3VhcmFudGVlcyB0aGF0IEZM
QUdfIyN2YWx1ZSBpcyBpbml0aWFsaXplZCBhdAotLy8gc3RhdGljIGluaXRpYWxpemF0aW9uIHRp
bWUgKGUuZy4gYmVmb3JlIHByb2dyYW0tc3RhcnQpIHJhdGhlciB0aGFuCi0vLyB0aGFuIGdsb2Jh
bCBjb25zdHJ1Y3Rpb24gdGltZSAod2hpY2ggaXMgYWZ0ZXIgcHJvZ3JhbS1zdGFydCBidXQKLS8v
IGJlZm9yZSBtYWluKSwgYXQgbGVhc3Qgd2hlbiAndmFsdWUnIGlzIGEgY29tcGlsZS10aW1lIGNv
bnN0YW50LiAgV2UKLS8vIHVzZSBhIHNtYWxsIHRyaWNrIGZvciB0aGUgImRlZmF1bHQgdmFsdWUi
IHZhcmlhYmxlLCBhbmQgY2FsbCBpdAotLy8gRkxBR1Nfbm88bmFtZT4uICBUaGlzIHNlcnZlcyB0
aGUgc2Vjb25kIHB1cnBvc2Ugb2YgYXNzdXJpbmcgYQotLy8gY29tcGlsZSBlcnJvciBpZiBzb21l
b25lIHRyaWVzIHRvIGRlZmluZSBhIGZsYWcgbmFtZWQgbm88bmFtZT4KLS8vIHdoaWNoIGlzIGls
bGVnYWwgKC0tZm9vIGFuZCAtLW5vZm9vIGJvdGggYWZmZWN0IHRoZSAiZm9vIiBmbGFnKS4KLSNk
ZWZpbmUgREVGSU5FX1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwgbmFtZSwgdmFsdWUsIGhlbHAp
ICAgICAgICAgICAgIFwKLSAgbmFtZXNwYWNlIGZMIyNzaG9ydHR5cGUgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgY29uc3QgdHlwZSBG
TEFHU19ub25vIyNuYW1lID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAv
KiBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgZGVmaW5lZCB2YXJpYWJsZXMsIGRsbCBvciBubyAq
LyAgICAgICAgIFwKLSAgICBHRkxBR1NfRExMX0RFRklORV9GTEFHIHR5cGUgRkxBR1NfIyNuYW1l
ID0gRkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgIFwKLSAgICB0eXBlIEZMQUdTX25vIyNuYW1lID0g
RkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0
aWMgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1JlZ2lzdGVyZXIgb18jI25hbWUoICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICNuYW1lLCAjdHlwZSwgTUFZQkVfU1RSSVBQRURfSEVMUChoZWxwKSwg
X19GSUxFX18sICAgICAgICAgICAgICAgIFwKLSAgICAgICZGTEFHU18jI25hbWUsICZGTEFHU19u
byMjbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgdXNpbmcgZkwjI3Nob3J0dHlwZTo6RkxBR1NfIyNuYW1lCi0KLS8vIEZvciBERUZJ
TkVfYm9vbCwgd2Ugd2FudCB0byBkbyB0aGUgZXh0cmEgY2hlY2sgdGhhdCB0aGUgcGFzc2VkLWlu
Ci0vLyB2YWx1ZSBpcyBhY3R1YWxseSBhIGJvb2wsIGFuZCBub3QgYSBzdHJpbmcgb3Igc29tZXRo
aW5nIHRoYXQgY2FuIGJlCi0vLyBjb2VyY2VkIHRvIGEgYm9vbC4gIFRoZXNlIGRlY2xhcmF0aW9u
cyAobm8gZGVmaW5pdGlvbiBuZWVkZWQhKSB3aWxsCi0vLyBoZWxwIHVzIGRvIHRoYXQsIGFuZCBu
ZXZlciBldmFsdWF0ZSBGcm9tLCB3aGljaCBpcyBpbXBvcnRhbnQuCi0vLyBXZSdsbCB1c2UgJ3Np
emVvZihJc0Jvb2wodmFsKSknIHRvIGRpc3Rpbmd1aXNoLiBUaGlzIGNvZGUgcmVxdWlyZXMKLS8v
IHRoYXQgdGhlIGNvbXBpbGVyIGhhdmUgZGlmZmVyZW50IHNpemVzIGZvciBib29sICYgZG91Ymxl
LiBTaW5jZQotLy8gdGhpcyBpcyBub3QgZ3VhcmFudGVlZCBieSB0aGUgc3RhbmRhcmQsIHdlIGNo
ZWNrIGl0IHdpdGggYQotLy8gQ09NUElMRV9BU1NFUlQuCi1uYW1lc3BhY2UgZkxCIHsKLXN0cnVj
dCBDb21waWxlQXNzZXJ0IHt9OwotdHlwZWRlZiBDb21waWxlQXNzZXJ0IGV4cGVjdGVkX3NpemVv
Zl9kb3VibGVfbmVxX3NpemVvZl9ib29sWwotICAgICAgICAgICAgICAgICAgICAgIChzaXplb2Yo
ZG91YmxlKSAhPSBzaXplb2YoYm9vbCkpID8gMSA6IC0xXTsKLXRlbXBsYXRlPHR5cGVuYW1lIEZy
b20+IGRvdWJsZSBHRkxBR1NfRExMX0RFQ0wgSXNCb29sRmxhZyhjb25zdCBGcm9tJiBmcm9tKTsK
LUdGTEFHU19ETExfREVDTCBib29sIElzQm9vbEZsYWcoYm9vbCBmcm9tKTsKLX0gIC8vIG5hbWVz
cGFjZSBmTEIKLQotLy8gSGVyZSBhcmUgdGhlIGFjdHVhbCBERUZJTkVfKi1tYWNyb3MuIFRoZSBy
ZXNwZWN0aXZlIERFQ0xBUkVfKi1tYWNyb3MKLS8vIGFyZSBpbiBhIHNlcGFyYXRlIGluY2x1ZGUs
IGdmbGFnc19kZWNsYXJlLmgsIGZvciByZWR1Y2luZwotLy8gdGhlIHBoeXNpY2FsIHRyYW5zaXRp
dmUgc2l6ZSBmb3IgREVDTEFSRSB1c2UuCi0jZGVmaW5lIERFRklORV9ib29sKG5hbWUsIHZhbCwg
dHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIG5hbWVzcGFjZSBm
TEIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdHlwZWRlZiA6OmZMQjo6Q29tcGlsZUFzc2VydCBGTEFHXyMjbmFtZSMjX3ZhbHVl
X2lzX25vdF9hX2Jvb2xbICAgICBcCi0gICAgICAgICAgICAoc2l6ZW9mKDo6ZkxCOjpJc0Jvb2xG
bGFnKHZhbCkpICE9IHNpemVvZihkb3VibGUpKT8gMTogLTFdOyBcCi0gIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gIERFRklORV9WQVJJQUJMRShib29sLCBCLCBuYW1lLCB2YWwsIHR4dCkKLQotI2RlZmluZSBE
RUZJTkVfaW50MzIobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJMRShHRkxBR1Nf
TkFNRVNQQUNFOjppbnQzMiwgSSwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0
KQotCi0jZGVmaW5lIERFRklORV9pbnQ2NChuYW1lLCB2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZB
UklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OmludDY0LCBJNjQsIFwKLSAgICAgICAgICAgICAgICAg
ICBuYW1lLCB2YWwsIHR4dCkKLQotI2RlZmluZSBERUZJTkVfdWludDY0KG5hbWUsdmFsLCB0eHQp
IFwKLSAgIERFRklORV9WQVJJQUJMRShHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQsIFU2NCwgXAot
ICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV9kb3Vi
bGUobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJMRShkb3VibGUsIEQsIG5hbWUs
IHZhbCwgdHh0KQotCi0vLyBTdHJpbmdzIGFyZSB0cmlja2llciwgYmVjYXVzZSB0aGV5J3JlIG5v
dCBhIFBPRCwgc28gd2UgY2FuJ3QKLS8vIGNvbnN0cnVjdCB0aGVtIGF0IHN0YXRpYy1pbml0aWFs
aXphdGlvbiB0aW1lIChpbnN0ZWFkIHRoZXkgZ2V0Ci0vLyBjb25zdHJ1Y3RlZCBhdCBnbG9iYWwt
Y29uc3RydWN0b3IgdGltZSwgd2hpY2ggaXMgbXVjaCBsYXRlcikuICBUbwotLy8gdHJ5IHRvIGF2
b2lkIGNyYXNoZXMgaW4gdGhhdCBjYXNlLCB3ZSB1c2UgYSBjaGFyIGJ1ZmZlciB0byBzdG9yZQot
Ly8gdGhlIHN0cmluZywgd2hpY2ggd2UgY2FuIHN0YXRpYy1pbml0aWFsaXplLCBhbmQgdGhlbiBw
bGFjZW1lbnQtbmV3Ci0vLyBpbnRvIGl0IGxhdGVyLiAgSXQncyBub3QgcGVyZmVjdCwgYnV0IHRo
ZSBiZXN0IHdlIGNhbiBkby4KLQotbmFtZXNwYWNlIGZMUyB7Ci0KLWlubGluZSBjbHN0cmluZyog
ZG9udF9wYXNzMHRvREVGSU5FX3N0cmluZyhjaGFyICpzdHJpbmdzcG90LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKSB7Ci0gIHJl
dHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFsdWUpOwotfQotaW5saW5lIGNsc3RyaW5n
KiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmluZ3Nwb3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xzdHJpbmcgJnZhbHVlKSB7
Ci0gIHJldHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFsdWUpOwotfQotaW5saW5lIGNs
c3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmluZ3Nwb3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKTsKLX0gIC8v
IG5hbWVzcGFjZSBmTFMKLQotLy8gV2UgbmVlZCB0byBkZWZpbmUgYSB2YXIgbmFtZWQgRkxBR1Nf
bm8jI25hbWUgc28gcGVvcGxlIGRvbid0IGRlZmluZQotLy8gLS1zdHJpbmcgYW5kIC0tbm9zdHJp
bmcuICBBbmQgd2UgbmVlZCBhIHRlbXBvcmFyeSBwbGFjZSB0byBwdXQgdmFsCi0vLyBzbyB3ZSBk
b24ndCBoYXZlIHRvIGV2YWx1YXRlIGl0IHR3aWNlLiAgVHdvIGdyZWF0IG5lZWRzIHRoYXQgZ28K
LS8vIGdyZWF0IHRvZ2V0aGVyIQotLy8gVGhlIHdlaXJkICd1c2luZycgKyAnZXh0ZXJuJyBpbnNp
ZGUgdGhlIGZMUyBuYW1lc3BhY2UgaXMgdG8gd29yayBhcm91bmQKLS8vIGFuIHVua25vd24gY29t
cGlsZXIgYnVnL2lzc3VlIHdpdGggdGhlIGdjYyA0LjIuMSBvbiBTVVNFIDEwLiAgU2VlCi0vLyAg
ICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWdmbGFncy9pc3N1ZXMvZGV0YWlsP2lk
PTIwCi0jZGVmaW5lIERFRklORV9zdHJpbmcobmFtZSwgdmFsLCB0eHQpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICBuYW1lc3BhY2UgZkxTIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2lu
ZyA6OmZMUzo6Y2xzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgc3RhdGljIHVuaW9uIHsgdm9pZCogYWxpZ247IGNoYXIgc1tzaXpl
b2YoY2xzdHJpbmcpXTsgfSBzXyMjbmFtZVsyXTsgICAgXAotICAgIGNsc3RyaW5nKiBjb25zdCBG
TEFHU19ubyMjbmFtZSA9IDo6ZkxTOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9wYXNzMHRvREVGSU5FX3N0
cmluZyhzXyMjbmFtZVswXS5zLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsKTsgICAgICAgICAgXAotICAgIHN0YXRpYyBH
RkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlciBvXyMjbmFtZSggICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgI25hbWUsICJzdHJpbmciLCBNQVlCRV9TVFJJUFBFRF9IRUxQKHR4
dCksIF9fRklMRV9fLCAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNfIyNuYW1lWzBdLnMsIG5l
dyAoc18jI25hbWVbMV0ucykgY2xzdHJpbmcoKkZMQUdTX25vIyNuYW1lKSk7ICAgICAgXAotICAg
IGV4dGVybiBHRkxBR1NfRExMX0RFRklORV9GTEFHIGNsc3RyaW5nJiBGTEFHU18jI25hbWU7ICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBmTFM6OkZMQUdTXyMjbmFtZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2xzdHJpbmcmIEZM
QUdTXyMjbmFtZSA9ICpGTEFHU19ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdXNpbmcgZkxTOjpGTEFHU18jI25hbWUKLQot
I2VuZGlmICAvLyBTV0lHCi0KLQotLy8gSW1wb3J0IGdmbGFncyBsaWJyYXJ5IHN5bWJvbHMgaW50
byBhbHRlcm5hdGl2ZS9kZXByZWNhdGVkIG5hbWVzcGFjZShzKQotI2luY2x1ZGUgImdmbGFnc19n
ZmxhZ3MuaCIKLQotCi0jZW5kaWYgIC8vIEdGTEFHU19HRkxBR1NfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93
aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2Zs
YWdzL2dmbGFnc19jb21wbGV0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
OTUxYzFlMDJkMWZkOTZhZjI1ZTZiYmI3OTlhMDBkYWNlZDVmNTcyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdz
X2NvbXBsZXRpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyAtLS0KLQotLy8K
LS8vIEltcGxlbWVudCBoZWxwZnVsIGJhc2gtc3R5bGUgY29tbWFuZCBsaW5lIGZsYWcgY29tcGxl
dGlvbnMKLS8vCi0vLyAqKiBGdW5jdGlvbmFsIEFQSToKLS8vIEhhbmRsZUNvbW1hbmRMaW5lQ29t
cGxldGlvbnMoKSBzaG91bGQgYmUgY2FsbGVkIGVhcmx5IGR1cmluZwotLy8gcHJvZ3JhbSBzdGFy
dHVwLCBidXQgYWZ0ZXIgY29tbWFuZCBsaW5lIGZsYWcgY29kZSBoYXMgYmVlbgotLy8gaW5pdGlh
bGl6ZWQsIHN1Y2ggYXMgdGhlIGJlZ2lubmluZyBvZiBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFn
cygpLgotLy8gSXQgY2hlY2tzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyAtLXRhYl9jb21wbGV0aW9u
X3dvcmQuICBJZiB0aGlzCi0vLyBmbGFnIGlzIGVtcHR5LCBub3RoaW5nIGhhcHBlbnMgaGVyZS4g
IElmIGl0IGNvbnRhaW5zIGEgc3RyaW5nLAotLy8gaG93ZXZlciwgdGhlbiBIYW5kbGVDb21tYW5k
TGluZUNvbXBsZXRpb25zKCkgd2lsbCBoaWphY2sgdGhlCi0vLyBwcm9jZXNzLCBhdHRlbXB0aW5n
IHRvIGlkZW50aWZ5IHRoZSBpbnRlbnRpb24gYmVoaW5kIHRoaXMKLS8vIGNvbXBsZXRpb24uICBS
ZWdhcmRsZXNzIG9mIHRoZSBvdXRjb21lIG9mIHRoaXMgZGVkdWN0aW9uLCB0aGUKLS8vIHByb2Nl
c3Mgd2lsbCBiZSB0ZXJtaW5hdGVkLCBzaW1pbGFyIHRvIC0taGVscHNob3J0IGZsYWcKLS8vIGhh
bmRsaW5nLgotLy8KLS8vICoqIE92ZXJ2aWV3IG9mIEJhc2ggY29tcGxldGlvbnM6Ci0vLyBCYXNo
IGNhbiBiZSB0b2xkIHRvIHByb2dyYW1hdGljYWxseSBkZXRlcm1pbmUgY29tcGxldGlvbnMgZm9y
IHRoZQotLy8gY3VycmVudCAnY3Vyc29yIHdvcmQnLiAgSXQgZG9lcyB0aGlzIGJ5IChpbiB0aGlz
IGNhc2UpIGludm9raW5nIGEKLS8vIGNvbW1hbmQgd2l0aCBzb21lIGFkZGl0aW9uYWwgYXJndW1l
bnRzIGlkZW50aWZ5aW5nIHRoZSBjb21tYW5kCi0vLyBiZWluZyBleGVjdXRlZCwgdGhlIHdvcmQg
YmVpbmcgY29tcGxldGVkLCBhbmQgdGhlIHByZXZpb3VzIHdvcmQKLS8vIChpZiBhbnkpLiAgQmFz
aCB0aGVuIGV4cGVjdHMgYSBzZXF1ZW5jZSBvZiBvdXRwdXQgbGluZXMgdG8gYmUKLS8vIHByaW50
ZWQgdG8gc3Rkb3V0LiAgSWYgdGhlc2UgbGluZXMgYWxsIGNvbnRhaW4gYSBjb21tb24gcHJlZml4
Ci0vLyBsb25nZXIgdGhhbiB0aGUgY3Vyc29yIHdvcmQsIGJhc2ggd2lsbCByZXBsYWNlIHRoZSBj
dXJzb3Igd29yZAotLy8gd2l0aCB0aGF0IGNvbW1vbiBwcmVmaXgsIGFuZCBkaXNwbGF5IG5vdGhp
bmcuICBJZiB0aGVyZSBpc24ndCBzdWNoCi0vLyBhIGNvbW1vbiBwcmVmaXgsIGJhc2ggd2lsbCBk
aXNwbGF5IHRoZSBsaW5lcyBpbiBwYWdlcyB1c2luZyAnbW9yZScuCi0vLwotLy8gKiogU3RyYXRl
Z3kgdGFrZW4gZm9yIGNvbW1hbmQgbGluZSBjb21wbGV0aW9uczoKLS8vIElmIHdlIGNhbiBkZWR1
Y2UgZWl0aGVyIHRoZSBleGFjdCBmbGFnIGludGVuZGVkLCBvciBhIGNvbW1vbiBmbGFnCi0vLyBw
cmVmaXgsIHdlJ2xsIG91dHB1dCBleGFjdGx5IHRoYXQuICBPdGhlcndpc2UsIGlmIGluZm9ybWF0
aW9uCi0vLyBtdXN0IGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciwgd2UnbGwgdGFrZSB0aGUgb3Bw
b3J0dW5pdHkgdG8gYWRkCi0vLyBzb21lIGhlbHBmdWwgaW5mb3JtYXRpb24gYmV5b25kIGp1c3Qg
dGhlIGZsYWcgbmFtZSAoc3BlY2lmaWNhbGx5LAotLy8gd2UnbGwgaW5jbHVkZSB0aGUgZGVmYXVs
dCBmbGFnIHZhbHVlIGFuZCBhcyBtdWNoIG9mIHRoZSBmbGFnJ3MKLS8vIGRlc2NyaXB0aW9uIGFz
IGNhbiBmaXQgb24gYSBzaW5nbGUgdGVybWluYWwgbGluZSB3aWR0aCwgYXMgc3BlY2lmaWVkCi0v
LyBieSB0aGUgZmxhZyAtLXRhYl9jb21wbGV0aW9uX2NvbHVtbnMpLiAgRnVydGhlcm1vcmUsIHdl
J2xsIHRyeSB0bwotLy8gbWFrZSBiYXNoIG9yZGVyIHRoZSBvdXRwdXQgc3VjaCB0aGF0IHRoZSBt
b3N0IHVzZWZ1bCBvciByZWxldmVudAotLy8gZmxhZ3MgYXJlIHRoZSBtb3N0IGxpa2VseSB0byBi
ZSBzaG93biBhdCB0aGUgdG9wLgotLy8KLS8vICoqIEFkZGl0aW9uYWwgZmVhdHVyZXM6Ci0vLyBU
byBhc3Npc3QgaW4gZmluZGluZyB0aGF0IG9uZSByZWFsbHkgdXNlZnVsIGZsYWcsIHN1YnN0cmlu
ZyBtYXRjaGluZwotLy8gd2FzIGltcGxlbWVudGVkLiAgQmVmb3JlIHByZXNzaW5nIGEgPFRBQj4g
dG8gZ2V0IGNvbXBsZXRpb24gZm9yIHRoZQotLy8gY3VycmVudCB3b3JkLCB5b3UgY2FuIGFwcGVu
ZCBvbmUgb3IgbW9yZSAnPycgdG8gdGhlIGZsYWcgdG8gZG8KLS8vIHN1YnN0cmluZyBtYXRjaGlu
Zy4gIEhlcmUncyB0aGUgc2VtYW50aWNzOgotLy8gICAtLWZvbzxUQUI+ICAgICBTaG93IG1lIGFs
bCBmbGFncyB3aXRoIG5hbWVzIHByZWZpeGVkIGJ5ICdmb28nCi0vLyAgIC0tZm9vPzxUQUI+ICAg
IFNob3cgbWUgYWxsIGZsYWdzIHdpdGggJ2Zvbycgc29tZXdoZXJlIGluIHRoZSBuYW1lCi0vLyAg
IC0tZm9vPz88VEFCPiAgIFNhbWUgYXMgcHJpb3IgY2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIG1v
ZHVsZQotLy8gICAgICAgICAgICAgICAgICBkZWZpbml0aW9uIHBhdGggZm9yICdmb28nCi0vLyAg
IC0tZm9vPz8/PFRBQj4gIFNhbWUgYXMgcHJpb3IgY2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIGZs
YWcKLS8vICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zIGZvciAnZm9vJwotLy8gRmluYWxs
eSwgd2UnbGwgdHJpbSB0aGUgb3V0cHV0IHRvIGEgcmVsYXRpdmVseSBzbWFsbCBudW1iZXIgb2YK
LS8vIGZsYWdzIHRvIGtlZXAgYmFzaCBxdWlldCBhYm91dCB0aGUgdmVyYm9zaXR5IG9mIG91dHB1
dC4gIElmIG9uZQotLy8gcmVhbGx5IHdhbnRlZCB0byBzZWUgYWxsIHBvc3NpYmxlIG1hdGNoZXMs
IGFwcGVuZGluZyBhICcrJyB0byB0aGUKLS8vIHNlYXJjaCB3b3JkIHdpbGwgZm9yY2UgdGhlIGV4
aGF1c3RpdmUgbGlzdCBvZiBtYXRjaGVzIHRvIGJlIHByaW50ZWQuCi0vLwotLy8gKiogSG93IHRv
IGhhdmUgYmFzaCBhY2NlcHQgY29tcGxldGlvbnMgZnJvbSBhIGJpbmFyeToKLS8vIEJhc2ggcmVx
dWlyZXMgdGhhdCBpdCBiZSBpbmZvcm1lZCBhYm91dCBlYWNoIGNvbW1hbmQgdGhhdCBwcm9ncmFt
bWF0aWMKLS8vIGNvbXBsZXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgZm9yLiAgRXhhbXBsZSBhZGRp
dGlvbiB0byBhIC5iYXNocmMKLS8vIGZpbGUgd291bGQgYmUgKHlvdXIgcGF0aCB0byBnZmxhZ3Nf
Y29tcGxldGlvbnMuc2ggZmlsZSBtYXkgZGlmZmVyKToKLQotLyoKLSQgY29tcGxldGUgLW8gYmFz
aGRlZmF1bHQgLW8gZGVmYXVsdCAtbyBub3NwYWNlIC1DICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAnL2hvbWUvYnVpbGQvZW5nL2Jhc2gvYmFzaF9jb21wbGV0aW9ucy5zaCAtLXRhYl9j
b21wbGV0aW9uX2NvbHVtbnMgJENPTFVNTlMnIFwKLSAgdGltZSAgZW52ICBiaW5hcnlfbmFtZSAg
YW5vdGhlcl9iaW5hcnkgIFsuLi5dCi0qLwotCi0vLyBUaGlzIHdvdWxkIGFsbG93IHRoZSBmb2xs
b3dpbmcgdG8gd29yazoKLS8vICAgJCAvcGF0aC90by9iaW5hcnlfbmFtZSAtLXZtb2R1bGU8VEFC
PgotLy8gT3I6Ci0vLyAgICQgLi9iaW4vcGF0aC9hbm90aGVyX2JpbmFyeSAtLWdmc191PFRBQj4K
LS8vIChldGMpCi0vLwotLy8gU2FkbHksIGl0IGFwcGVhcnMgdGhhdCBiYXNoIGdpdmVzIG5vIGVh
c3kgd2F5IHRvIGZvcmNlIHRoaXMgYmVoYXZpb3IgZm9yCi0vLyBhbGwgY29tbWFuZHMuICBUaGF0
J3Mgd2hlcmUgdGhlICJ0aW1lIiBpbiB0aGUgYWJvdmUgZXhhbXBsZSBjb21lcyBpbi4KLS8vIElm
IHlvdSBoYXZlbid0IHNwZWNpZmljYWxseSBhZGRlZCBhIGNvbW1hbmQgdG8gdGhlIGxpc3Qgb2Yg
Y29tcGxldGlvbgotLy8gc3VwcG9ydGVkIGNvbW1hbmRzLCB5b3UgY2FuIHN0aWxsIGdldCBjb21w
bGV0aW9ucyBieSBwcmVmaXhpbmcgdGhlCi0vLyBlbnRpcmUgY29tbWFuZCB3aXRoICJlbnYiLgot
Ly8gICAkIGVudiAvc29tZS9icmFuZC9uZXcvYmluYXJ5IC0tdm1vZDxUQUI+Ci0vLyBBc3N1bWlu
ZyB0aGF0ICJiaW5hcnkiIGlzIGEgbmV3bHkgY29tcGlsZWQgYmluYXJ5LCB0aGlzIHNob3VsZCBz
dGlsbAotLy8gcHJvZHVjZSB0aGUgZXhwZWN0ZWQgY29tcGxldGlvbiBvdXRwdXQuCi0KLQotI2lm
bmRlZiBHRkxBR1NfQ09NUExFVElPTlNfSF8KLSNkZWZpbmUgR0ZMQUdTX0NPTVBMRVRJT05TX0hf
Ci0KLW5hbWVzcGFjZSBnb29nbGUgewotCi1leHRlcm4gdm9pZCBIYW5kbGVDb21tYW5kTGluZUNv
bXBsZXRpb25zKHZvaWQpOwotCi19Ci0KLSNlbmRpZiAgLy8gR0ZMQUdTX0NPTVBMRVRJT05TX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19kZWNsYXJlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2lu
L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19kZWNsYXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZiYzg0NjZmZDRjNzY4NmI3OGNkNTI5YWU4NDA2OTdhM2E3ZGY1ZjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL2dmbGFn
cy9nZmxhZ3NfZGVjbGFyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8vIENv
cHlyaWdodCAoYykgMTk5OSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8K
LS8vIFJldmFtcGVkIGFuZCByZW9yZ2FuaXplZCBieSBDcmFpZyBTaWx2ZXJzdGVpbgotLy8KLS8v
IFRoaXMgaXMgdGhlIGZpbGUgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgYnkgYW55IGZpbGUgd2hp
Y2ggZGVjbGFyZXMKLS8vIGNvbW1hbmQgbGluZSBmbGFnLgotCi0jaWZuZGVmIEdGTEFHU19ERUNM
QVJFX0hfCi0jZGVmaW5lIEdGTEFHU19ERUNMQVJFX0hfCi0KLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBOYW1lc3BhY2Ugb2YgZ2ZsYWdzIGxpYnJhcnkgc3ltYm9scy4KLSNkZWZpbmUgR0ZM
QUdTX05BTUVTUEFDRSBnb29nbGUKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBXaW5kb3dz
IERMTCBpbXBvcnQvZXhwb3J0LgotCi0vLyBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgdGhlIHN5
bWJvbHMgb2YgdGhlIGdmbGFncyBsaWJyYXJ5Ci0jaWZuZGVmIEdGTEFHU19ETExfREVDTAotIyAg
aWYgMCAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMIF9f
ZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNM
Ci0jICBlbmRpZgotI2VuZGlmCi0KLS8vIFdlIGFsd2F5cyB3YW50IHRvIGltcG9ydCB2YXJpYWJs
ZXMgZGVjbGFyZWQgaW4gdXNlciBjb2RlCi0jaWZuZGVmIEdGTEFHU19ETExfREVDTEFSRV9GTEFH
Ci0jICBpZmRlZiBfTVNDX1ZFUgotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBlbHNlCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RF
Q0xBUkVfRkxBRwotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IEZsYWcgdHlwZXMKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaWYgMQotIyAgaW5jbHVkZSA8c3RkaW50
Lmg+ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBub3JtYWwgcGxhY2UgdWludDMyX3QgaXMgZGVm
aW5lZAotI2VsaWYgMQotIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgICAgICAgICAgICAgIC8v
IHRoZSBub3JtYWwgcGxhY2UgdV9pbnQzMl90IGlzIGRlZmluZWQKLSNlbGlmIDAKLSMgIGluY2x1
ZGUgPGludHR5cGVzLmg+ICAgICAgICAgICAgICAgICAvLyBhIHRoaXJkIHBsYWNlIGZvciB1aW50
MzJfdCBvciB1X2ludDMyX3QKLSNlbmRpZgotCi1uYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRSB7
Ci0KLSNpZiAwIC8vIEM5OQotdHlwZWRlZiBpbnQzMl90ICAgICAgICAgIGludDMyOwotdHlwZWRl
ZiB1aW50MzJfdCAgICAgICAgIHVpbnQzMjsKLXR5cGVkZWYgaW50NjRfdCAgICAgICAgICBpbnQ2
NDsKLXR5cGVkZWYgdWludDY0X3QgICAgICAgICB1aW50NjQ7Ci0jZWxpZiAwIC8vIEJTRAotdHlw
ZWRlZiBpbnQzMl90ICAgICAgICAgIGludDMyOwotdHlwZWRlZiB1X2ludDMyX3QgICAgICAgIHVp
bnQzMjsKLXR5cGVkZWYgaW50NjRfdCAgICAgICAgICBpbnQ2NDsKLXR5cGVkZWYgdV9pbnQ2NF90
ICAgICAgICB1aW50NjQ7Ci0jZWxpZiAxIC8vIFdpbmRvd3MKLXR5cGVkZWYgX19pbnQzMiAgICAg
ICAgICBpbnQzMjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50MzI7Ci10eXBlZGVmIF9f
aW50NjQgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0Owot
I2Vsc2UKLSMgIGVycm9yIERvIG5vdCBrbm93IGhvdyB0byBkZWZpbmUgYSAzMi1iaXQgaW50ZWdl
ciBxdWFudGl0eSBvbiB5b3VyIHN5c3RlbQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIEdGTEFH
U19OQU1FU1BBQ0UKLQotCi1uYW1lc3BhY2UgZkxTIHsKLQotLy8gVGhlIG1lYW5pbmcgb2YgInN0
cmluZyIgbWlnaHQgYmUgZGlmZmVyZW50IGJldHdlZW4gbm93IGFuZCB3aGVuIHRoZQotLy8gbWFj
cm9zIGJlbG93IGdldCBpbnZva2VkIChlLmcuLCBpZiBzb21lb25lIGlzIGV4cGVyaW1lbnRpbmcg
d2l0aAotLy8gb3RoZXIgc3RyaW5nIGltcGxlbWVudGF0aW9ucyB0aGF0IGdldCBkZWZpbmVkIGFm
dGVyIHRoaXMgZmlsZSBpcwotLy8gaW5jbHVkZWQpLiAgU2F2ZSB0aGUgY3VycmVudCBtZWFuaW5n
IG5vdyBhbmQgdXNlIGl0IGluIHRoZSBtYWNyb3MuCi10eXBlZGVmIHN0ZDo6c3RyaW5nIGNsc3Ry
aW5nOwotCi19IC8vIG5hbWVzcGFjZSBmTFMKLQotCi0jZGVmaW5lIERFQ0xBUkVfVkFSSUFCTEUo
dHlwZSwgc2hvcnR0eXBlLCBuYW1lKSBcCi0gIC8qIFdlIGFsd2F5cyB3YW50IHRvIGltcG9ydCBk
ZWNsYXJlZCB2YXJpYWJsZXMsIGRsbCBvciBubyAqLyBcCi0gIG5hbWVzcGFjZSBmTCMjc2hvcnR0
eXBlIHsgZXh0ZXJuIEdGTEFHU19ETExfREVDTEFSRV9GTEFHIHR5cGUgRkxBR1NfIyNuYW1lOyB9
IFwKLSAgdXNpbmcgZkwjI3Nob3J0dHlwZTo6RkxBR1NfIyNuYW1lCi0KLSNkZWZpbmUgREVDTEFS
RV9ib29sKG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRShib29sLCBCLCBuYW1lKQotCi0jZGVm
aW5lIERFQ0xBUkVfaW50MzIobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxFKDo6R0ZMQUdTX05B
TUVTUEFDRTo6aW50MzIsIEksIG5hbWUpCi0KLSNkZWZpbmUgREVDTEFSRV9pbnQ2NChuYW1lKSBc
Ci0gIERFQ0xBUkVfVkFSSUFCTEUoOjpHRkxBR1NfTkFNRVNQQUNFOjppbnQ2NCwgSTY0LCBuYW1l
KQotCi0jZGVmaW5lIERFQ0xBUkVfdWludDY0KG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRSg6
OkdGTEFHU19OQU1FU1BBQ0U6OnVpbnQ2NCwgVTY0LCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVf
ZG91YmxlKG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRShkb3VibGUsIEQsIG5hbWUpCi0KLSNk
ZWZpbmUgREVDTEFSRV9zdHJpbmcobmFtZSkgXAotICAvKiBXZSBhbHdheXMgd2FudCB0byBpbXBv
cnQgZGVjbGFyZWQgdmFyaWFibGVzLCBkbGwgb3Igbm8gKi8gXAotICBuYW1lc3BhY2UgZkxTIHsg
XAotICB1c2luZyA6OmZMUzo6Y2xzdHJpbmc7IFwKLSAgZXh0ZXJuIEdGTEFHU19ETExfREVDTEFS
RV9GTEFHIDo6ZkxTOjpjbHN0cmluZyYgRkxBR1NfIyNuYW1lOyBcCi0gIH0gXAotICB1c2luZyBm
TFM6OkZMQUdTXyMjbmFtZQotCi0KLSNlbmRpZiAgLy8gR0ZMQUdTX0RFQ0xBUkVfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2Zs
YWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2dmbGFncy5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRl
L2dmbGFncy9nZmxhZ3NfZ2ZsYWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBj
MTc4MjVkZDYyMzcxZDBmMjgyN2NkZjg3NzNiNDAzZmU0MTBmNTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3Nf
Z2ZsYWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChj
KSAyMDE0LCBBbmRyZWFzIFNjaHVoCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gSW1wb3J0cyB0aGUgZ2ZsYWdzIGxpYnJhcnkgc3ltYm9scyBpbnRvIGFuIGFsdGVy
bmF0aXZlL2RlcHJlY2F0ZWQgbmFtZXNwYWNlLgotCi0jaWZuZGVmIEdGTEFHU19HRkxBR1NfSF8K
LSMgIGVycm9yIFRoZSBpbnRlcm5hbCBoZWFkZXIgZ2ZsYWdzX2dmbGFncy5oIG1heSBvbmx5IGJl
IGluY2x1ZGVkIGJ5IGdmbGFncy5oCi0jZW5kaWYKLQotI2lmbmRlZiBHRkxBR1NfTlNfR0ZMQUdT
X0hfCi0jZGVmaW5lIEdGTEFHU19OU19HRkxBR1NfSF8KLQotCi1uYW1lc3BhY2UgZ2ZsYWdzIHsK
LQotCi11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjppbnQzMjsKLXVzaW5nIEdGTEFHU19OQU1FU1BB
Q0U6OnVpbnQzMjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OmludDY0OwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6dWludDY0OwotCi11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpSZWdpc3RlckZs
YWdWYWxpZGF0b3I7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpDb21tYW5kTGluZUZsYWdJbmZv
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QWxsRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpTaG93VXNhZ2VXaXRoRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTaG93
VXNhZ2VXaXRoRmxhZ3NSZXN0cmljdDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkRlc2NyaWJl
T25lRmxhZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldEFyZ3Y7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpHZXRBcmd2czsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFyZ3Y7Ci11
c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRBcmd2MDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkdldEFyZ3ZTdW07Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQcm9ncmFtSW52b2NhdGlvbk5h
bWU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZTsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlByb2dyYW1Vc2FnZTsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OlZlcnNpb25TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRDb21tYW5k
TGluZU9wdGlvbjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldENvbW1hbmRMaW5lRmxhZ0lu
Zm87Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWU7
Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnU2V0dGluZ01vZGU7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpTRVRfRkxBR1NfVkFMVUU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTRVRf
RkxBR19JRl9ERUZBVUxUOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U0VUX0ZMQUdTX0RFRkFV
TFQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRDb21tYW5kTGluZU9wdGlvbjsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGU7Ci11c2luZyBH
RkxBR1NfTkFNRVNQQUNFOjpGbGFnU2F2ZXI7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpDb21t
YW5kbGluZUZsYWdzSW50b1N0cmluZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlJlYWRGbGFn
c0Zyb21TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpBcHBlbmRGbGFnc0ludG9GaWxl
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVhZEZyb21GbGFnc0ZpbGU7Ci11c2luZyBHRkxB
R1NfTkFNRVNQQUNFOjpCb29sRnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkludDMy
RnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkludDY0RnJvbUVudjsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlVpbnQ2NEZyb21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpE
b3VibGVGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U3RyaW5nRnJvbUVudjsKLXVz
aW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldFVzYWdlTWVzc2FnZTsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OlNldFZlcnNpb25TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQYXJzZUNv
bW1hbmRMaW5lTm9uSGVscEZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6SGFuZGxlQ29t
bWFuZExpbmVIZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpBbGxvd0NvbW1hbmRM
aW5lUmVwYXJzaW5nOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVwYXJzZUNvbW1hbmRMaW5l
Tm9uSGVscEZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2h1dERvd25Db21tYW5kTGlu
ZUZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1JlZ2lzdGVyZXI7Ci0KLSNpZm5k
ZWYgU1dJRwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UGFyc2VDb21tYW5kTGluZUZsYWdzOwot
I2VuZGlmCi0KLQotfSAvLyBuYW1lc3BhY2UgZ2ZsYWdzCi0KLQotI2VuZGlmICAvLyBHRkxBR1Nf
TlNfR0ZMQUdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvcHJpdmF0ZS9jb25maWcuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dl
bi93aW4vaW5jbHVkZS9wcml2YXRlL2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkNTQxNTgwZWFiMDY1Njg0OTNlY2M2NjExNWYwOWZiNzVlMGQ4ZTRjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9wcml2YXRl
L2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qIEdlbmVyYXRlZCBm
cm9tIGNvbmZpZy5oLmluIGR1cmluZyBidWlsZCBjb25maWd1cmF0aW9uIHVzaW5nIENNYWtlLiAq
LwotCi0vLyBOb3RlOiBUaGlzIGhlYWRlciBmaWxlIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LiBJ
dCBpcyBub3QgcGFydCBvZiBwdWJsaWMgaW50ZXJmYWNlIQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIFN5c3RlbSBjaGVja3MKLQotLy8gRGVmaW5lIGlmIHlvdSBidWlsZCB0aGlzIGxpYnJh
cnkgZm9yIGEgTVMgV2luZG93cyBPUy4KLSNkZWZpbmUgT1NfV0lORE9XUwotCi0vLyBEZWZpbmUg
aWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RE
SU5UX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBm
aWxlLgotI2RlZmluZSBIQVZFX1NZU19UWVBFU19ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLgotLyogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCAq
LwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4K
LSNkZWZpbmUgSEFWRV9TWVNfU1RBVF9ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVu
aXN0ZC5oPiBoZWFkZXIgZmlsZS4KLS8qICN1bmRlZiBIQVZFX1VOSVNURF9IICovCi0KLS8vIERl
ZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZubWF0Y2guaD4gaGVhZGVyIGZpbGUuCi0vKiAjdW5kZWYg
SEFWRV9GTk1BVENIX0ggKi8KLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c2hsd2FwaS5o
PiBoZWFkZXIgZmlsZSAoV2luZG93cyAyMDAwL1hQKS4KLSNkZWZpbmUgSEFWRV9TSExXQVBJX0gK
LQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xsIGZ1bmN0aW9uLgotLyogI3VuZGVm
IEhBVkVfU1RSVE9MTCAqLwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRvcSBmdW5j
dGlvbi4KLS8qICN1bmRlZiBIQVZFX1NUUlRPUSAqLwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxwdGhyZWFkLmg+IGhlYWRlciBmaWxlLgotLyogI3VuZGVmIEhBVkVfUFRIUkVBRCAqLwot
Ci0vLyBEZWZpbmUgaWYgeW91ciBwdGhyZWFkIGxpYnJhcnkgZGVmaW5lcyB0aGUgdHlwZSBwdGhy
ZWFkX3J3bG9ja190Ci0vKiAjdW5kZWYgSEFWRV9SV0xPQ0sgKi8KLQotLy8gZ2NjIHJlcXVpcmVz
IHRoaXMgdG8gZ2V0IFBSSWQ2NCwgZXRjLgotI2lmIGRlZmluZWQoSEFWRV9JTlRUWVBFU19IKSAm
JiAhZGVmaW5lZChfX1NURENfRk9STUFUX01BQ1JPUykKLSMgIGRlZmluZSBfX1NURENfRk9STUFU
X01BQ1JPUyAxCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYWNrYWdlIGlu
Zm9ybWF0aW9uCi0KLS8vIE5hbWUgb2YgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRSBnZmxhZ3MK
LQotLy8gRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLgotI2RlZmluZSBQ
QUNLQUdFX05BTUUgZ2ZsYWdzCi0KLS8vIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJz
aW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgZ2ZsYWdzIDIuMi4w
Ci0KLS8vIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2Fn
ZS4KLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FIGdmbGFncy0yLjIuMAotCi0vLyBEZWZpbmUgdG8g
dGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLgotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gMi4y
LjAKLQotLy8gVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZS4KLSNkZWZpbmUgVkVSU0lPTiBQQUNL
QUdFX1ZFUlNJT04KLQotLy8gRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRz
IGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQ
T1JUIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1aHNjaHVoL2dmbGFncy9pc3N1ZXMKLQotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBQYXRoIHNlcGFyYXRvcgotI2lmbmRlZiBQQVRIX1NFUEFSQVRP
UgotIyAgaWZkZWYgT1NfV0lORE9XUwotIyAgICBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgICdcXCcK
LSMgIGVsc2UKLSMgICAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICAnLycKLSMgIGVuZGlmCi0jZW5k
aWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBXaW5kb3dzCi0KLS8vIFdoZXRoZXIgZ2Zs
YWdzIGxpYnJhcnkgaXMgYSBETEwuCi0jaWZuZGVmIEdGTEFHU19JU19BX0RMTAotIyAgZGVmaW5l
IEdGTEFHU19JU19BX0RMTCAwCi0jZW5kaWYKLQotLy8gQWx3YXlzIGV4cG9ydCBzeW1ib2xzIHdo
ZW4gY29tcGlsaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXMgdGhpcyBmaWxlIGlzIG9ubHkKLS8vIGlu
Y2x1ZGVkIGJ5IGludGVybmFsIG1vZHVsZXMgd2hlbiBidWlsZGluZyB0aGUgZ2ZsYWdzIGxpYnJh
cnkgaXRzZWxmLgotLy8gVGhlIGdmbGFnc19kZWNsYXJlLmggaGVhZGVyIGZpbGUgd2lsbCBzZXQg
aXQgdG8gaW1wb3J0IHRoZXNlIHN5bWJvbHMgb3RoZXJ3aXNlLgotI2lmbmRlZiBHRkxBR1NfRExM
X0RFQ0wKLSMgIGlmIEdGTEFHU19JU19BX0RMTCAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBk
ZWZpbmUgR0ZMQUdTX0RMTF9ERUNMIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZWxzZQotIyAg
ICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMCi0jICBlbmRpZgotI2VuZGlmCi0vLyBGbGFncyBkZWZp
bmVkIGJ5IHRoZSBnZmxhZ3MgbGlicmFyeSBpdHNlbGYgbXVzdCBiZSBleHBvcnRlZAotI2lmbmRl
ZiBHRkxBR1NfRExMX0RFRklORV9GTEFHCi0jICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxB
RyBHRkxBR1NfRExMX0RFQ0wKLSNlbmRpZgotCi0jaWZkZWYgT1NfV0lORE9XUwotLy8gVGhlIHVu
aXR0ZXN0cyBpbXBvcnQgdGhlIHN5bWJvbHMgb2YgdGhlIHNoYXJlZCBnZmxhZ3MgbGlicmFyeQot
IyAgaWYgR0ZMQUdTX0lTX0FfRExMICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBH
RkxBR1NfRExMX0RFQ0xfRk9SX1VOSVRURVNUUyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSMgIGVu
ZGlmCi0jICBpbmNsdWRlICJ3aW5kb3dzX3BvcnQuaCIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2ZsYWdz
Lmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2Zs
YWdzL2dmbGFncy5neXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhODVlOTYyYjU5
ZjZjMjIxZGY3MTU3MzBkMTQ2ODhjM2FlZDcwODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3MvZ2ZsYWdzLmd5cAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMTEgR29vZ2xlIEluYy4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
LSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
LSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLXsKLSAgJ3ZhcmlhYmxlcyc6IHsKLSAgICAnZ2ZsYWdz
X3Jvb3QnOiAnPChERVBUSCkvdGhpcmRfcGFydHkvZ2ZsYWdzJywKLSAgICAnY29uZGl0aW9ucyc6
IFsKLSAgICAgIFsnT1M9PSJ3aW4iJywgewotICAgICAgICAnZ2ZsYWdzX2dlbl9hcmNoX3Jvb3Qn
OiAnPChnZmxhZ3Nfcm9vdCkvZ2VuL3dpbicsCi0gICAgICB9LCB7Ci0gICAgICAgICdnZmxhZ3Nf
Z2VuX2FyY2hfcm9vdCc6ICc8KGdmbGFnc19yb290KS9nZW4vcG9zaXgnLAotICAgICAgfV0sCi0g
ICAgXSwKLSAgfSwKLSAgJ3RhcmdldHMnOiBbCi0gICAgewotICAgICAgJ3RhcmdldF9uYW1lJzog
J2dmbGFncycsCi0gICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAnaW5jbHVk
ZV9kaXJzJzogWwotICAgICAgICAnPChnZmxhZ3NfZ2VuX2FyY2hfcm9vdCkvaW5jbHVkZS9nZmxh
Z3MnLCAgIyBGb3IgY29uZmlndXJlZCBmaWxlcy4KLSAgICAgICAgJzwoZ2ZsYWdzX2dlbl9hcmNo
X3Jvb3QpL2luY2x1ZGUvcHJpdmF0ZScsICAjIEZvciBjb25maWcuaAotICAgICAgICAnPChnZmxh
Z3Nfcm9vdCkvc3JjL3NyYycsICAjIEZvciBldmVyeXRoaW5nIGVsc2UuCi0gICAgICBdLAotICAg
ICAgJ2RlZmluZXMnOiBbCi0gICAgICAgICMgVGhlc2UgbWFjcm9zIGV4aXN0IHNvIGZsYWdzIGFu
ZCBzeW1ib2xzIGFyZSBwcm9wZXJseQotICAgICAgICAjIGV4cG9ydGVkIHdoZW4gYnVpbGRpbmcg
RExMcy4gU2luY2Ugd2UgZG9uJ3QgYnVpbGQgRExMcywgd2UKLSAgICAgICAgIyBuZWVkIHRvIGRp
c2FibGUgdGhlbS4KLSAgICAgICAgJ0dGTEFHU19ETExfREVDTD0nLAotICAgICAgICAnR0ZMQUdT
X0RMTF9ERUNMQVJFX0ZMQUc9JywKLSAgICAgICAgJ0dGTEFHU19ETExfREVGSU5FX0ZMQUc9JywK
LSAgICAgIF0sCi0gICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKLSAgICAgICAg
J2luY2x1ZGVfZGlycyc6IFsKLSAgICAgICAgICAnPChnZmxhZ3NfZ2VuX2FyY2hfcm9vdCkvaW5j
bHVkZScsICAjIEZvciBjb25maWd1cmVkIGZpbGVzLgotICAgICAgICAgICc8KGdmbGFnc19yb290
KS9zcmMvc3JjJywgICMgRm9yIGV2ZXJ5dGhpbmcgZWxzZS4KLSAgICAgICAgXSwKLSAgICAgICAg
J2RlZmluZXMnOiBbCi0gICAgICAgICAgJ0dGTEFHU19ETExfREVDTD0nLAotICAgICAgICAgICdH
RkxBR1NfRExMX0RFQ0xBUkVfRkxBRz0nLAotICAgICAgICAgICdHRkxBR1NfRExMX0RFRklORV9G
TEFHPScsCi0gICAgICAgIF0sCi0gICAgICB9LAotICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAg
ICdzcmMvc3JjL2dmbGFncy5jYycsCi0gICAgICAgICdzcmMvc3JjL2dmbGFnc19jb21wbGV0aW9u
cy5jYycsCi0gICAgICAgICdzcmMvc3JjL2dmbGFnc19yZXBvcnRpbmcuY2MnLAotICAgICAgXSwK
LSAgICAgICdjb25kaXRpb25zJzogWwotICAgICAgICBbJ09TPT0id2luIicsIHsKLSAgICAgICAg
ICAnc291cmNlcyc6IFsKLSAgICAgICAgICAgICdzcmMvc3JjL3dpbmRvd3NfcG9ydC5jYycsCi0g
ICAgICAgICAgXSwKLSAgICAgICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsKLSAgICAg
ICAgICAgIDQwMDUsICAjIFdJTjMyX0xFQU5fQU5EX01FQU4gcmVkZWZpbml0aW9uLgotICAgICAg
ICAgICAgNDI2NywgICMgQ29udmVyc2lvbiBmcm9tIHNpemVfdCB0byAidHlwZSIuCi0gICAgICAg
ICAgXSwKLSAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOiB7Ci0gICAgICAgICAgICAnQ29tbW9u
X0Jhc2UnOiB7Ci0gICAgICAgICAgICAgICdtc3ZzX2NvbmZpZ3VyYXRpb25fYXR0cmlidXRlcyc6
IHsKLSAgICAgICAgICAgICAgICAnQ2hhcmFjdGVyU2V0JzogJzInLCAgIyBVc2UgTXVsdGktYnl0
ZSBDaGFyYWN0ZXIgU2V0LgotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICB9LAotICAgICAgICB9XSwKLSAgICAgICAgIyBUT0RPKGFuZHJldyk6IExvb2sgaW50byBm
aXhpbmcgdGhpcyB3YXJuaW5nIHVwc3RyZWFtOgotICAgICAgICAjIGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03NjAKLSAgICAgICAgWydPUz09IndpbiIg
YW5kIGNsYW5nPT0xJywgewotICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzogewotICAgICAgICAg
ICAgJ1ZDQ0xDb21waWxlclRvb2wnOiB7Ci0gICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9u
cyc6IFsKLSAgICAgICAgICAgICAgICAnLVduby1taWNyb3NvZnQtaW5jbHVkZScsCi0gICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgIH0sCi0gICAgICAgIH1dLAotICAg
ICAgICBbJ2NsYW5nPT0xJywgewotICAgICAgICAgICdjZmxhZ3MnOiBbCi0gICAgICAgICAgICAn
LVduby1taWNyb3NvZnQtaW5jbHVkZScsCi0gICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAg
ICBdLAotICAgIH0sCi0gIF0sCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvLmdpdGF0dHJpYnV0ZXMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvLmdp
dGF0dHJpYnV0ZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZmU5YzAyN2VjNmJh
ZWE1MDY1ZjQ1YWVmNzFkYTRkZmMyYTJmM2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjLy5naXRhdHRyaWJ1dGVzCisrKyAvZGV2L251bGwKQEAgLTEsMyAr
MCwwIEBACi0jIHRyZWF0IGFsbCBmaWxlcyBpbiB0aGlzIHJlcG9zaXRvcnkgYXMgdGV4dCBmaWxl
cwotIyBhbmQgbm9ybWFsaXplIHRoZW0gdG8gTEYgbGluZSBlbmRpbmdzIHdoZW4gY29tbWl0dGVk
Ci0qIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy8uZ2l0bW9kdWxlcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy8uZ2l0bW9kdWxlcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyMDcyYzU3NWZlZTQwNmZkYjBiOTA0ZDZjMGZjYjNm
OTFhNzZlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMv
LmdpdG1vZHVsZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVtzdWJtb2R1bGUgImRv
YyJdCi0JcGF0aCA9IGRvYwotCXVybCA9IGh0dHBzOi8vZ2l0aHViLmNvbS9nZmxhZ3MvZ2ZsYWdz
LmdpdAotCWJyYW5jaCA9IGdoLXBhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvQVVUSE9SUy50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvQVVU
SE9SUy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NzkxOGJkMDBlMTBiMjBm
YzdlYzBlNGFkYWRmNjlmMjcyMzUwYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL0FVVEhPUlMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBA
Ci1nb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb20KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MzJiY2UzNmI0OWI4NzA4OTI1OGIwM2JhYzkxMjY4N2M2NWYxNDgyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDUxMCArMCwwIEBACi1jbWFrZV9taW5pbXVtX3JlcXVpcmVkIChWRVJTSU9OIDIu
OC4xMiBGQVRBTF9FUlJPUikKLQotaWYgKFBPTElDWSBDTVAwMDQyKQotICBjbWFrZV9wb2xpY3kg
KFNFVCBDTVAwMDQyIE5FVykKLWVuZGlmICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBp
bmNsdWRlcwotc2V0IChDTUFLRV9NT0RVTEVfUEFUSCAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2NtYWtlIikKLWluY2x1ZGUgKHV0aWxzKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg
cGFja2FnZSBpbmZvcm1hdGlvbgotc2V0IChQQUNLQUdFX05BTUUgICAgICAiZ2ZsYWdzIikKLXNl
dCAoUEFDS0FHRV9WRVJTSU9OICAgIjIuMi4wIikKLXNldCAoUEFDS0FHRV9TVFJJTkcgICAgIiR7
UEFDS0FHRV9OQU1FfSAke1BBQ0tBR0VfVkVSU0lPTn0iKQotc2V0IChQQUNLQUdFX1RBUk5BTUUg
ICAiJHtQQUNLQUdFX05BTUV9LSR7UEFDS0FHRV9WRVJTSU9OfSIpCi1zZXQgKFBBQ0tBR0VfQlVH
UkVQT1JUICJodHRwczovL2dpdGh1Yi5jb20vc2NodWhzY2h1aC9nZmxhZ3MvaXNzdWVzIikKLQot
cHJvamVjdCAoJHtQQUNLQUdFX05BTUV9IENYWCkKLWlmIChDTUFLRV9WRVJTSU9OIFZFUlNJT05f
TEVTUyAxMDApCi0gICMgQyBsYW5ndWFnZSBzdGlsbCBuZWVkZWQgYmVjYXVzZSB0aGUgZm9sbG93
aW5nIHJlcXVpcmVkIENNYWtlIG1vZHVsZXMKLSAgIyAob3IgdGhlaXIgZGVwZW5kZW5jaWVzLCBy
ZXNwZWN0aXZlbHkpIGFyZSBub3QgY29ycmVjdGx5IGhhbmRsaW5nCi0gICMgdGhlIGNhc2Ugd2hl
cmUgb25seSBDWFggaXMgZW5hYmxlZC4KLSAgIyAtIENoZWNrVHlwZVNpemUuY21ha2UgKGZpeGVk
IGluIENNYWtlIDMuMSwgY2YuIGh0dHA6Ly93d3cuY21ha2Uub3JnL0J1Zy92aWV3LnBocD9pZD0x
NDA1NikKLSAgIyAtIEZpbmRUaHJlYWRzLmNtYWtlICgtLT4gQ2hlY2tJbmNsdWRlRmlsZXMuY21h
a2UgPC0tKQotICBlbmFibGVfbGFuZ3VhZ2UgKEMpCi1lbmRpZiAoKQotCi12ZXJzaW9uX251bWJl
cnMgKAotICAke1BBQ0tBR0VfVkVSU0lPTn0KLSAgICBQQUNLQUdFX1ZFUlNJT05fTUFKT1IKLSAg
ICBQQUNLQUdFX1ZFUlNJT05fTUlOT1IKLSAgICBQQUNLQUdFX1ZFUlNJT05fUEFUQ0gKLSkKLQot
c2V0IChQQUNLQUdFX1NPVkVSU0lPTiAiJHtQQUNLQUdFX1ZFUlNJT05fTUFKT1J9IikKLQotIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0jIG9wdGlvbnMKLWlmIChOT1QgR0ZMQUdTX05BTUVTUEFDRSkK
LSAgIyBtYWludGFpbiBiaW5hcnkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBnZmxhZ3Mg
bGlicmFyeSB2ZXJzaW9uIDw9IDIuMCwKLSAgIyBidXQgYXQgdGhlIHNhbWUgdGltZSBlbmFibGUg
dGhlIHVzZSBvZiB0aGUgcHJlZmVycmVkIG5ldyAiZ2ZsYWdzIiBuYW1lc3BhY2UKLSAgc2V0IChH
RkxBR1NfTkFNRVNQQUNFICJnb29nbGU7JHtQQUNLQUdFX05BTUV9IiBDQUNIRSBTVFJJTkcgIk5h
bWUocykgb2YgbGlicmFyeSBuYW1lc3BhY2UgKHNlcGFyYXRlIG11bHRpcGxlIG9wdGlvbnMgYnkg
c2VtaWNvbG9uKSIpCi0gIG1hcmtfYXNfYWR2YW5jZWQgKEdGTEFHU19OQU1FU1BBQ0UpCi1lbmRp
ZiAoKQotc2V0IChHRkxBR1NfTkFNRVNQQUNFX1NFQ09OREFSWSAiJHtHRkxBR1NfTkFNRVNQQUNF
fSIpCi1saXN0IChSRU1PVkVfRFVQTElDQVRFUyBHRkxBR1NfTkFNRVNQQUNFX1NFQ09OREFSWSkK
LWlmIChOT1QgR0ZMQUdTX05BTUVTUEFDRV9TRUNPTkRBUlkpCi0gIG1lc3NhZ2UgKEZBVEFMX0VS
Uk9SICJHRkxBR1NfTkFNRVNQQUNFIG11c3QgYmUgc2V0IHRvIG9uZSAob3IgbW9yZSkgdmFsaWQg
QysrIG5hbWVzcGFjZSBpZGVudGlmaWVyKHMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbiBcIjtcIiku
IikKLWVuZGlmICgpCi1mb3JlYWNoIChucyBJTiBMSVNUUyBHRkxBR1NfTkFNRVNQQUNFX1NFQ09O
REFSWSkKLSAgaWYgKE5PVCBucyBNQVRDSEVTICJeW2EtekEtWl1bYS16QS1aMC05X10qJCIpCi0g
ICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkdGTEFHU19OQU1FU1BBQ0UgY29udGFpbnMgaW52YWxp
ZCBuYW1lc3BhY2UgaWRlbnRpZmllcjogJHtuc30iKQotICBlbmRpZiAoKQotZW5kZm9yZWFjaCAo
KQotbGlzdCAoR0VUICAgICAgIEdGTEFHU19OQU1FU1BBQ0VfU0VDT05EQVJZIDAgR0ZMQUdTX05B
TUVTUEFDRSkKLWxpc3QgKFJFTU9WRV9BVCBHRkxBR1NfTkFNRVNQQUNFX1NFQ09OREFSWSAwKQot
Ci1vcHRpb24gKEJVSUxEX1NIQVJFRF9MSUJTICAgICAgICAgICJSZXF1ZXN0IGJ1aWxkIG9mIHNo
YXJlZCBsaWJyYXJpZXMuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9G
RikKLW9wdGlvbiAoQlVJTERfU1RBVElDX0xJQlMgICAgICAgICAgIlJlcXVlc3QgYnVpbGQgb2Yg
c3RhdGljIGxpYnJhcmllcyAoZGVmYXVsdCBpZiBCVUlMRF9TSEFSRURfTElCUyBpcyBPRkYpLiIg
T0ZGKQotb3B0aW9uIChCVUlMRF9nZmxhZ3NfTElCICAgICAgICAgICAiUmVxdWVzdCBidWlsZCBv
ZiB0aGUgbXVsdGktdGhyZWFkZWQgZ2ZsYWdzIGxpYnJhcnkuIiAgICAgICAgICAgICAgICAgICAg
ICBPTikKLW9wdGlvbiAoQlVJTERfZ2ZsYWdzX25vdGhyZWFkc19MSUIgIlJlcXVlc3QgYnVpbGQg
b2YgdGhlIHNpbmdsZS10aHJlYWRlZCBnZmxhZ3MgbGlicmFyeS4iICAgICAgICAgICAgICAgICAg
ICAgT04pCi1vcHRpb24gKEJVSUxEX1BBQ0tBR0lORyAgICAgICAgICAgICJFbmFibGUgYnVpbGQg
b2YgZGlzdHJpYnV0aW9uIHBhY2thZ2VzIHVzaW5nIENQYWNrLiIgICAgICAgICAgICAgICAgICAg
ICAgIE9GRikKLW9wdGlvbiAoQlVJTERfVEVTVElORyAgICAgICAgICAgICAgIkVuYWJsZSBidWls
ZCBvZiB0aGUgdW5pdCB0ZXN0cyBhbmQgdGhlaXIgZXhlY3V0aW9uIHVzaW5nIENUZXN0LiIgICAg
ICAgICAgT0ZGKQotb3B0aW9uIChJTlNUQUxMX0hFQURFUlMgICAgICAgICAgICAiUmVxdWVzdCBw
YWNrYWdpbmcgb2YgaGVhZGVycyBhbmQgb3RoZXIgZGV2ZWxvcG1lbnQgZmlsZXMuIiAgICAgICAg
ICAgICAgICBPTikKLQotbWFya19hc19hZHZhbmNlZCAoQ0xFQVIgQ01BS0VfSU5TVEFMTF9QUkVG
SVgpCi1tYXJrX2FzX2FkdmFuY2VkIChDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTCi0gICAgICAg
ICAgICAgICAgICBCVUlMRF9TVEFUSUNfTElCUwotICAgICAgICAgICAgICAgICAgSU5TVEFMTF9I
RUFERVJTKQotaWYgKEFQUExFKQotICBtYXJrX2FzX2FkdmFuY2VkKENNQUtFX09TWF9BUkNISVRF
Q1RVUkVTCi0gICAgICAgICAgICAgICAgICAgQ01BS0VfT1NYX0RFUExPWU1FTlRfVEFSR0VUCi0g
ICAgICAgICAgICAgICAgICAgQ01BS0VfT1NYX1NZU1JPT1QpCi1lbmRpZiAoKQotCi1pZiAoTk9U
IEJVSUxEX1NIQVJFRF9MSUJTIEFORCBOT1QgQlVJTERfU1RBVElDX0xJQlMpCi0gIHNldCAoQlVJ
TERfU1RBVElDX0xJQlMgT04pCi1lbmRpZiAoKQotaWYgKE5PVCBCVUlMRF9nZmxhZ3NfTElCIEFO
RCBOT1QgQlVJTERfZ2ZsYWdzX25vdGhyZWFkc19MSUIpCi0gbWVzc2FnZSAoRkFUQUxfRVJST1Ig
IkF0IGxlYXN0IG9uZSBvZiBCVUlMRF9nZmxhZ3NfTElCIGFuZCBCVUlMRF9nZmxhZ3Nfbm90aHJl
YWRzX0xJQiBtdXN0IGJlIE9OLiIpCi1lbmRpZiAoKQotCi1pZiAoTk9UIENNQUtFX0JVSUxEX1RZ
UEUgQU5EIE5PVCBDTUFLRV9DWFhfRkxBR1MpCi0gIHNldF9wcm9wZXJ0eSAoQ0FDSEUgQ01BS0Vf
QlVJTERfVFlQRSBQUk9QRVJUWSBWQUxVRSBSZWxlYXNlKQotZW5kaWYgKCkKLQotaWYgKE5PVCBH
RkxBR1NfSU5DTFVERV9ESVIpCi0gIHNldCAoR0ZMQUdTX0lOQ0xVREVfRElSICIke1BBQ0tBR0Vf
TkFNRX0iIENBQ0hFIFNUUklORyAiTmFtZSBvZiBpbmNsdWRlIGRpcmVjdG9yeSBvZiBpbnN0YWxs
ZWQgaGVhZGVyIGZpbGVzIikKLSAgbWFya19hc19hZHZhbmNlZCAoR0ZMQUdTX0lOQ0xVREVfRElS
KQotZWxzZSAoKQotICBpZiAoSVNfQUJTT0xVVEUgR0ZMQUdTX0lOQ0xVREVfRElSKQotICAgIG1l
c3NhZ2UgKEZBVEFMX0VSUk9SICJHRkxBR1NfSU5DTFVERV9ESVIgbXVzdCBiZSBhIHBhdGggcmVs
YXRpdmUgdG8gQ01BS0VfSU5TVEFMTF9QUkVGSVgvaW5jbHVkZSIpCi0gIGVuZGlmICgpCi0gIGlm
IChHRkxBR1NfSU5DTFVERV9ESVIgTUFUQ0hFUyAiXlxcLlxcLlsvXFxdIikKLSAgICBtZXNzYWdl
IChGQVRBTF9FUlJPUiAiR0ZMQUdTX0lOQ0xVREVfRElSIG11c3Qgbm90IHN0YXJ0IHdpdGggcGFy
ZW50IGRpcmVjdG9yeSByZWZlcmVuY2UgKC4uLykiKQotICBlbmRpZiAoKQotZW5kaWYgKCkKLQot
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHN5c3RlbSBjaGVja3MKLWluY2x1ZGUgKENoZWNrVHlw
ZVNpemUpCi1pbmNsdWRlIChDaGVja0luY2x1ZGVGaWxlQ1hYKQotaW5jbHVkZSAoQ2hlY2tDWFhT
eW1ib2xFeGlzdHMpCi0KLWlmIChXSU4zMiBBTkQgTk9UIENZR1dJTikKLSAgc2V0IChPU19XSU5E
T1dTIDEpCi1lbHNlICgpCi0gIHNldCAoT1NfV0lORE9XUyAwKQotZW5kaWYgKCkKLQotaWYgKE1T
VkMpCi0gIHNldCAoSEFWRV9TWVNfVFlQRVNfSCAxKQotICBzZXQgKEhBVkVfU1RESU5UX0ggICAg
MSkKLSAgc2V0IChIQVZFX1NURERFRl9IICAgIDEpICMgdXNlZCBieSBDaGVja1R5cGVTaXplIG1v
ZHVsZQotICBzZXQgKEhBVkVfSU5UVFlQRVNfSCAgMCkKLSAgc2V0IChIQVZFX1VOSVNURF9IICAg
IDApCi0gIHNldCAoSEFWRV9TWVNfU1RBVF9IICAxKQotICBzZXQgKEhBVkVfU0hMV0FQSV9IICAg
MSkKLWVsc2UgKCkKLSAgZm9yZWFjaCAoZm5hbWUgSU4gSVRFTVMgdW5pc3RkIHN0ZGludCBpbnR0
eXBlcyBzeXMvdHlwZXMgc3lzL3N0YXQgZm5tYXRjaCkKLSAgICBzdHJpbmcgKFRPVVBQRVIgIiR7
Zm5hbWV9IiBGTkFNRSkKLSAgICBzdHJpbmcgKFJFUExBQ0UgIi8iICJfIiBGTkFNRSAiJHtGTkFN
RX0iKQotICAgIGlmIChOT1QgSEFWRV8ke0ZOQU1FfV9IKQotICAgICAgY2hlY2tfaW5jbHVkZV9m
aWxlX2N4eCAoIiR7Zm5hbWV9LmgiIEhBVkVfJHtGTkFNRX1fSCkKLSAgICBlbmRpZiAoKQotICBl
bmRmb3JlYWNoICgpCi0gICMgdGhlIGZvbGxvd2luZyBhcmUgdXNlZCBpbiAjaWYgZGlyZWN0aXZl
cyBub3QgI2lmZGVmCi0gIGJvb2xfdG9faW50IChIQVZFX1NURElOVF9IKQotICBib29sX3RvX2lu
dCAoSEFWRV9TWVNfVFlQRVNfSCkKLSAgYm9vbF90b19pbnQgKEhBVkVfSU5UVFlQRVNfSCkKLSAg
aWYgKE5PVCBIQVZFX0ZOTUFUQ0hfSCBBTkQgT1NfV0lORE9XUykKLSAgICBjaGVja19pbmNsdWRl
X2ZpbGVfY3h4ICgic2hsd2FwaS5oIiBIQVZFX1NITFdBUElfSCkKLSAgZW5kaWYgKCkKLWVuZGlm
ICgpCi0KLXNldCAoR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCAiIiBDQUNIRSBTVFJJTkcgIkZvcm1h
dCBvZiBpbnRlZ2VyIHR5cGVzOiBcIkM5OVwiICh1aW50MzJfdCksIFwiQlNEXCIgKHVfaW50MzJf
dCksIFwiVkM3XCIgKF9faW50MzIpIikKLXNldF9wcm9wZXJ0eSAoQ0FDSEUgR0ZMQUdTX0lOVFRZ
UEVTX0ZPUk1BVCBQUk9QRVJUWSBTVFJJTkdTICJDOTk7QlNEO1ZDNyIpCi1tYXJrX2FzX2FkdmFu
Y2VkIChHRkxBR1NfSU5UVFlQRVNfRk9STUFUKQotaWYgKE5PVCBHRkxBR1NfSU5UVFlQRVNfRk9S
TUFUKQotICBzZXQgKFRZUEVTIHVpbnQzMl90IHVfaW50MzJfdCkKLSAgaWYgKE1TVkMpCi0gICAg
bGlzdCAoSU5TRVJUIFRZUEVTIDAgX19pbnQzMikKLSAgZW5kaWYgKCkKLSAgZm9yZWFjaCAodHlw
ZSBJTiBMSVNUUyBUWVBFUykKLSAgICBjaGVja190eXBlX3NpemUgKCR7dHlwZX0gJHt0eXBlfSBM
QU5HVUFHRSBDWFgpCi0gICAgaWYgKEhBVkVfJHt0eXBlfSkKLSAgICAgIGJyZWFrICgpCi0gICAg
ZW5kaWYgKCkKLSAgZW5kZm9yZWFjaCAoKQotICBpZiAoSEFWRV91aW50MzJfdCkKLSAgICBzZXRf
cHJvcGVydHkgKENBQ0hFIEdGTEFHU19JTlRUWVBFU19GT1JNQVQgUFJPUEVSVFkgVkFMVUUgQzk5
KQotICBlbHNlaWYgKEhBVkVfdV9pbnQzMl90KQotICAgIHNldF9wcm9wZXJ0eSAoQ0FDSEUgR0ZM
QUdTX0lOVFRZUEVTX0ZPUk1BVCBQUk9QRVJUWSBWQUxVRSBCU0QpCi0gIGVsc2VpZiAoSEFWRV9f
X2ludDMyKQotICAgIHNldF9wcm9wZXJ0eSAoQ0FDSEUgR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCBQ
Uk9QRVJUWSBWQUxVRSBWQzcpCi0gIGVsc2UgKCkKLSAgICBtYXJrX2FzX2FkdmFuY2VkIChDTEVB
UiBHRkxBR1NfSU5UVFlQRVNfRk9STUFUKQotICAgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJEbyBu
b3Qga25vdyBob3cgdG8gZGVmaW5lIGEgMzItYml0IGludGVnZXIgcXVhbnRpdHkgb24geW91ciBz
eXN0ZW0hIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgTmVpdGhlciB1aW50MzJfdCwgdV9p
bnQzMl90LCBub3IgX19pbnQzMiBzZWVtIHRvIGJlIGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIiBTZXQgR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCB0byBlaXRoZXIgQzk5LCBC
U0QsIG9yIFZDNyBhbmQgdHJ5IGFnYWluLiIpCi0gIGVuZGlmICgpCi1lbmRpZiAoKQotIyB1c2Ug
b2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgdG8gY2lyY3VtdmVudCBidWcgIzAwMDgy
MjYKLWlmICgiXiR7R0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVH0kIiBTVFJFUVVBTCAiXldJTiQiKQot
ICBzZXRfcHJvcGVydHkgKENBQ0hFIEdGTEFHU19JTlRUWVBFU19GT1JNQVQgUFJPUEVSVFkgVkFM
VUUgVkM3KQotZW5kaWYgKCkKLWlmIChOT1QgR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCBNQVRDSEVT
ICJeKEM5OXxCU0R8VkM3KSQiKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiSW52YWxpZCB2YWx1
ZSBmb3IgR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCEgQ2hvb3NlIG9uZSBvZiBcIkM5OVwiLCBcIkJT
RFwiLCBvciBcIlZDN1wiIikKLWVuZGlmICgpCi1zZXQgKEdGTEFHU19JTlRUWVBFU19GT1JNQVRf
Qzk5IDApCi1zZXQgKEdGTEFHU19JTlRUWVBFU19GT1JNQVRfQlNEIDApCi1zZXQgKEdGTEFHU19J
TlRUWVBFU19GT1JNQVRfVkM3IDApCi1zZXQgKCJHRkxBR1NfSU5UVFlQRVNfRk9STUFUXyR7R0ZM
QUdTX0lOVFRZUEVTX0ZPUk1BVH0iIDEpCi0KLWlmIChNU1ZDKQotICBzZXQgKEhBVkVfc3RydG9s
bCAwKQotICBzZXQgKEhBVkVfc3RydG9xICAwKQotZWxzZSAoKQotICBjaGVja19jeHhfc3ltYm9s
X2V4aXN0cyAoc3RydG9sbCBzdGRsaWIuaCBIQVZFX1NUUlRPTEwpCi0gIGlmIChOT1QgSEFWRV9T
VFJUT0xMKQotICAgIGNoZWNrX2N4eF9zeW1ib2xfZXhpc3RzIChzdHJ0b3Egc3RkbGliLmggSEFW
RV9TVFJUT1EpCi0gIGVuZGlmICgpCi1lbmRpZiAoKQotCi1zZXQgKENNQUtFX1RIUkVBRF9QUkVG
RVJfUFRIUkVBRCBUUlVFKQotZmluZF9wYWNrYWdlIChUaHJlYWRzKQotaWYgKFRocmVhZHNfRk9V
TkQgQU5EIENNQUtFX1VTRV9QVEhSRUFEU19JTklUKQotICBzZXQgKEhBVkVfUFRIUkVBRCAxKQot
ICBjaGVja190eXBlX3NpemUgKHB0aHJlYWRfcndsb2NrX3QgUldMT0NLIExBTkdVQUdFIENYWCkK
LWVsc2UgKCkKLSAgc2V0IChIQVZFX1BUSFJFQUQgMCkKLWVuZGlmICgpCi0KLWlmIChVTklYIEFO
RCBOT1QgSEFWRV9QVEhSRUFEIEFORCBCVUlMRF9nZmxhZ3NfTElCKQotICBpZiAoQ01BS0VfSEFW
RV9QVEhSRUFEX0gpCi0gICAgc2V0ICh3aGF0ICJsaWJyYXJ5IikKLSAgZWxzZSAoKQotICAgIHNl
dCAod2hhdCAiLmggZmlsZSIpCi0gIGVuZGlmICgpCi0gIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJD
b3VsZCBub3QgZmluZCBwdGhyZWFkJHt3aGF0fS4gQ2hlY2sgdGhlIGxvZyBmaWxlIgotICAgICAg
ICAgICAgICAgICAgICAgICAiXG5cdCR7Q01BS0VfQklOQVJZX0RJUn0ke0NNQUtFX0ZJTEVTX0RJ
UkVDVE9SWX0vQ01ha2VFcnJvci5sb2ciCi0gICAgICAgICAgICAgICAgICAgICAgICJcbm9yIGRp
c2FibGUgdGhlIGJ1aWxkIG9mIHRoZSBtdWx0aS10aHJlYWRlZCBnZmxhZ3MgbGlicmFyeSAoQlVJ
TERfZ2ZsYWdzX0xJQj1PRkYpLiIpCi1lbmRpZiAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSMgc291cmNlIGZpbGVzIC0gZXhjbHVkaW5nIHJvb3Qgc3ViZGlyZWN0b3J5IGFuZC9vciAuaW4g
c3VmZml4Ci1zZXQgKFBVQkxJQ19IRFJTCi0gICJnZmxhZ3MuaCIKLSAgImdmbGFnc19kZWNsYXJl
LmgiCi0gICJnZmxhZ3NfY29tcGxldGlvbnMuaCIKLSkKLQotaWYgKEdGTEFHU19OQU1FU1BBQ0Vf
U0VDT05EQVJZKQotICBzZXQgKElOQ0xVREVfR0ZMQUdTX05TX0ggIi8vIEltcG9ydCBnZmxhZ3Mg
bGlicmFyeSBzeW1ib2xzIGludG8gYWx0ZXJuYXRpdmUvZGVwcmVjYXRlZCBuYW1lc3BhY2Uocyki
KQotICBmb3JlYWNoIChucyBJTiBMSVNUUyBHRkxBR1NfTkFNRVNQQUNFX1NFQ09OREFSWSkKLSAg
ICBzdHJpbmcgKFRPVVBQRVIgIiR7bnN9IiBOUykKLSAgICBzZXQgKGdmbGFnc19uc19oICIke1BS
T0pFQ1RfQklOQVJZX0RJUn0vaW5jbHVkZS8ke0dGTEFHU19JTkNMVURFX0RJUn0vZ2ZsYWdzXyR7
bnN9LmgiKQotICAgIGNvbmZpZ3VyZV9maWxlICgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy9n
ZmxhZ3NfbnMuaC5pbiIgIiR7Z2ZsYWdzX25zX2h9IiBAT05MWSkKLSAgICBsaXN0IChBUFBFTkQg
UFVCTElDX0hEUlMgIiR7Z2ZsYWdzX25zX2h9IikKLSAgICBzZXQgKElOQ0xVREVfR0ZMQUdTX05T
X0ggIiR7SU5DTFVERV9HRkxBR1NfTlNfSH1cbiNpbmNsdWRlIFwiZ2ZsYWdzXyR7bnN9LmhcIiIp
Ci0gIGVuZGZvcmVhY2ggKCkKLWVsc2UgKCkKLSAgc2V0IChJTkNMVURFX0dGTEFHU19OU19IKQot
ZW5kaWYgKCkKLQotc2V0IChQUklWQVRFX0hEUlMKLSAgImNvbmZpZy5oIgotICAidXRpbC5oIgot
ICAibXV0ZXguaCIKLSkKLQotc2V0IChHRkxBR1NfU1JDUwotICAiZ2ZsYWdzLmNjIgotICAiZ2Zs
YWdzX3JlcG9ydGluZy5jYyIKLSAgImdmbGFnc19jb21wbGV0aW9ucy5jYyIKLSkKLQotaWYgKE9T
X1dJTkRPV1MpCi0gIGxpc3QgKEFQUEVORCBQUklWQVRFX0hEUlMgIndpbmRvd3NfcG9ydC5oIikK
LSAgbGlzdCAoQVBQRU5EIEdGTEFHU19TUkNTICAid2luZG93c19wb3J0LmNjIikKLWVuZGlmICgp
Ci0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBjb25maWd1cmUgc291cmNlIGZpbGVzCi1pZiAo
Q01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQotICBzZXQgKEdGTEFHU19BVFRSSUJVVEVfVU5VU0VE
ICJfX2F0dHJpYnV0ZSgodW51c2VkKSkiKQotZWxzZSAoKQotICBzZXQgKEdGTEFHU19BVFRSSUJV
VEVfVU5VU0VEKQotZW5kaWYgKCkKLQotIyB3aGVuZXZlciB3ZSBidWlsZCBhIHNoYXJlZCBsaWJy
YXJ5IChETEwgb24gV2luZG93cyksIGNvbmZpZ3VyZSB0aGUgcHVibGljCi0jIGhlYWRlcnMgb2Yg
dGhlIEFQSSBmb3IgdXNlIG9mIHRoaXMgbGlicmFyeSByYXRoZXIgdGhhbiB0aGUgb3B0aW9uYWxs
eQotIyBhbHNvIGJ1aWxkIHN0YXRpY2FsbHkgbGlua2VkIGxpYnJhcnk7IHVzZXJzIGNhbiBvdmVy
cmlkZSBHRkxBR1NfRExMX0RFQ0wKLWlmIChCVUlMRF9TSEFSRURfTElCUykKLSAgc2V0IChHRkxB
R1NfSVNfQV9ETEwgMSkKLWVsc2UgKCkKLSAgc2V0IChHRkxBR1NfSVNfQV9ETEwgMCkKLWVuZGlm
ICgpCi0KLWNvbmZpZ3VyZV9oZWFkZXJzIChQVUJMSUNfSERSUyAgJHtQVUJMSUNfSERSU30pCi1j
b25maWd1cmVfc291cmNlcyAoUFJJVkFURV9IRFJTICR7UFJJVkFURV9IRFJTfSkKLWNvbmZpZ3Vy
ZV9zb3VyY2VzIChHRkxBR1NfU1JDUyAgJHtHRkxBR1NfU1JDU30pCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotIyBvdXRwdXQgZGlyZWN0b3JpZXMKLXNldCAoQ01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZICJiaW4iKQotc2V0IChDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUlkgImxp
YiIpCi1zZXQgKENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWSAibGliIikKLQotIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0jIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcwotaWYgKE9TX1dJTkRP
V1MpCi0gIHNldCAoUlVOVElNRV9JTlNUQUxMX0RJUiBCaW4pCi0gIHNldCAoTElCUkFSWV9JTlNU
QUxMX0RJUiBMaWIpCi0gIHNldCAoSU5DTFVERV9JTlNUQUxMX0RJUiBJbmNsdWRlKQotICBzZXQg
KENPTkZJR19JTlNUQUxMX0RJUiAgQ01ha2UpCi1lbHNlICgpCi0gIHNldCAoUlVOVElNRV9JTlNU
QUxMX0RJUiBiaW4pCi0gICMgVGhlIExJQl9JTlNUQUxMX0RJUiBhbmQgTElCX1NVRkZJWCB2YXJp
YWJsZXMgYXJlIHVzZWQgYnkgdGhlIEZlZG9yYQotICAjIHBhY2thZ2UgbWFpbnRhaW5lcnMuIEFs
c28gcGFja2FnZSBtYWludGFpbmVycyBvZiBvdGhlciBkaXN0cmlidXRpb24KLSAgIyBwYWNrYWdl
cyBuZWVkIHRvIGJlIGFibGUgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSBkaXJl
Y3RvcnkuCi0gIGlmIChOT1QgTElCX0lOU1RBTExfRElSKQotICAgIHNldCAoTElCX0lOU1RBTExf
RElSICJsaWIke0xJQl9TVUZGSVh9IikKLSAgZW5kaWYgKCkKLSAgc2V0IChMSUJSQVJZX0lOU1RB
TExfRElSICIke0xJQl9JTlNUQUxMX0RJUn0iCi0gICAgQ0FDSEUgUEFUSCAiRGlyZWN0b3J5IG9m
IGluc3RhbGxlZCBsaWJyYXJpZXMsIGUuZy4sIFwibGliNjRcIiIKLSAgKQotICBtYXJrX2FzX2Fk
dmFuY2VkIChMSUJSQVJZX0lOU1RBTExfRElSKQotICBzZXQgKElOQ0xVREVfSU5TVEFMTF9ESVIg
aW5jbHVkZSkKLSAgc2V0IChDT05GSUdfSU5TVEFMTF9ESVIgICR7TElCUkFSWV9JTlNUQUxMX0RJ
Un0vY21ha2UvJHtQQUNLQUdFX05BTUV9KQotZW5kaWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIGFkZCBsaWJyYXJ5IHRhcmdldHMKLXNldCAoVEFSR0VUUykKLSMgc3RhdGljIHZzLiBz
aGFyZWQKLWZvcmVhY2ggKFRZUEUgSU4gSVRFTVMgU1RBVElDIFNIQVJFRCkKLSAgaWYgKEJVSUxE
XyR7VFlQRX1fTElCUykKLSAgICAjIHdoZXRoZXIgb3Igbm90IHRhcmdldHMgYXJlIGEgRExMCi0g
ICAgaWYgKE9TX1dJTkRPV1MgQU5EICJeJHtUWVBFfSQiIFNUUkVRVUFMICJeU0hBUkVEJCIpCi0g
ICAgICBzZXQgKEdGTEFHU19JU19BX0RMTCAxKQotICAgIGVsc2UgKCkKLSAgICAgIHNldCAoR0ZM
QUdTX0lTX0FfRExMIDApCi0gICAgZW5kaWYgKCkKLSAgICBzdHJpbmcgKFRPTE9XRVIgIiR7VFlQ
RX0iIHR5cGUpCi0gICAgIyBtdWx0aS10aHJlYWRlZCB2cy4gc2luZ2xlLXRocmVhZGVkCi0gICAg
Zm9yZWFjaCAob3B0cyBJTiBJVEVNUyAiIiBfbm90aHJlYWRzKQotICAgICAgaWYgKEJVSUxEX2dm
bGFncyR7b3B0c31fTElCKQotICAgICAgICBhZGRfbGlicmFyeSAoZ2ZsYWdzJHtvcHRzfS0ke3R5
cGV9ICR7VFlQRX0gJHtHRkxBR1NfU1JDU30gJHtQUklWQVRFX0hEUlN9ICR7UFVCTElDX0hEUlN9
KQotICAgICAgICBzZXQgKGluY2x1ZGVfZGlycyAiJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNU
X0JJTkFSWV9ESVJ9L2luY2x1ZGU+IikKLSAgICAgICAgaWYgKElOU1RBTExfSEVBREVSUykKLSAg
ICAgICAgICBsaXN0IChBUFBFTkQgaW5jbHVkZV9kaXJzICIkPElOU1RBTExfSU5URVJGQUNFOiR7
SU5DTFVERV9JTlNUQUxMX0RJUn0+IikKLSAgICAgICAgZW5kaWYgKCkKLSAgICAgICAgdGFyZ2V0
X2luY2x1ZGVfZGlyZWN0b3JpZXMgKGdmbGFncyR7b3B0c30tJHt0eXBlfQotICAgICAgICAgIFBV
QkxJQyAgIiR7aW5jbHVkZV9kaXJzfSIKLSAgICAgICAgICBQUklWQVRFICIke1BST0pFQ1RfU09V
UkNFX0RJUn0vc3JjOyR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRlLyR7R0ZMQUdTX0lOQ0xV
REVfRElSfSIKLSAgICAgICAgKQotICAgICAgICBpZiAob3B0cyBNQVRDSEVTICJub3RocmVhZHMi
KQotICAgICAgICAgIHNldCAoZGVmaW5lcyAiR0ZMQUdTX0lTX0FfRExMPSR7R0ZMQUdTX0lTX0Ff
RExMfTtOT1RIUkVBRFMiKQotICAgICAgICBlbHNlICgpCi0gICAgICAgICAgc2V0IChkZWZpbmVz
ICJHRkxBR1NfSVNfQV9ETEw9JHtHRkxBR1NfSVNfQV9ETEx9IikKLSAgICAgICAgICBpZiAoQ01B
S0VfVVNFX1BUSFJFQURTX0lOSVQpCi0gICAgICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMg
KGdmbGFncyR7b3B0c30tJHt0eXBlfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQotICAgICAg
ICAgIGVuZGlmICgpCi0gICAgICAgIGVuZGlmICgpCi0gICAgICAgIHNldF90YXJnZXRfcHJvcGVy
dGllcyAoCi0gICAgICAgICAgZ2ZsYWdzJHtvcHRzfS0ke3R5cGV9IFBST1BFUlRJRVMgQ09NUElM
RV9ERUZJTklUSU9OUyAiJHtkZWZpbmVzfSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPVVRQVVRfTkFNRSAgICAgICAgICJnZmxhZ3Mke29wdHN9IgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFUlNJT04gICAgICAgICAgICAg
IiR7UEFDS0FHRV9WRVJTSU9OfSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTT1ZFUlNJT04gICAgICAgICAgICIke1BBQ0tBR0VfU09WRVJTSU9OfSIKLSAgICAg
ICAgKQotICAgICAgICBpZiAoSEFWRV9TSExXQVBJX0gpCi0gICAgICAgICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzIChnZmxhZ3Mke29wdHN9LSR7dHlwZX0gc2hsd2FwaS5saWIpCi0gICAgICAgIGVu
ZGlmICgpCi0gICAgICAgIGlmIChOT1QgVEFSR0VUIGdmbGFncyR7b3B0c30pCi0gICAgICAgICAg
YWRkX2N1c3RvbV90YXJnZXQgKGdmbGFncyR7b3B0c30pCi0gICAgICAgIGVuZGlmICgpCi0gICAg
ICAgIGFkZF9kZXBlbmRlbmNpZXMgKGdmbGFncyR7b3B0c30gZ2ZsYWdzJHtvcHRzfS0ke3R5cGV9
KQotICAgICAgICBsaXN0IChBUFBFTkQgVEFSR0VUUyBnZmxhZ3Mke29wdHN9LSR7dHlwZX0pCi0g
ICAgICBlbmRpZiAoKQotICAgIGVuZGZvcmVhY2ggKCkKLSAgZW5kaWYgKCkKLWVuZGZvcmVhY2gg
KCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGluc3RhbGxhdGlvbiBydWxlcwotZmlsZSAo
UkVMQVRJVkVfUEFUSCBJTlNUQUxMX1BSRUZJWF9SRUwyQ09ORklHX0RJUiAiJHtDTUFLRV9JTlNU
QUxMX1BSRUZJWH0vJHtDT05GSUdfSU5TVEFMTF9ESVJ9IiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJ
WH0iKQotY29uZmlndXJlX2ZpbGUgKGNtYWtlL2NvbmZpZy5jbWFrZS5pbiAgIiR7UFJPSkVDVF9C
SU5BUllfRElSfS8ke1BBQ0tBR0VfTkFNRX0tY29uZmlnLWluc3RhbGwuY21ha2UiIEBPTkxZKQot
Y29uZmlndXJlX2ZpbGUgKGNtYWtlL3ZlcnNpb24uY21ha2UuaW4gIiR7UFJPSkVDVF9CSU5BUllf
RElSfS8ke1BBQ0tBR0VfTkFNRX0tY29uZmlnLXZlcnNpb24uY21ha2UiIEBPTkxZKQotCi1pbnN0
YWxsIChUQVJHRVRTICR7VEFSR0VUU30gREVTVElOQVRJT04gJHtMSUJSQVJZX0lOU1RBTExfRElS
fSBFWFBPUlQgZ2ZsYWdzLWxpYikKLWlmIChJTlNUQUxMX0hFQURFUlMpCi0gIGluc3RhbGwgKEZJ
TEVTICR7UFVCTElDX0hEUlN9IERFU1RJTkFUSU9OICR7SU5DTFVERV9JTlNUQUxMX0RJUn0vJHtH
RkxBR1NfSU5DTFVERV9ESVJ9KQotICBpbnN0YWxsICgKLSAgICBGSUxFUyAiJHtQUk9KRUNUX0JJ
TkFSWV9ESVJ9LyR7UEFDS0FHRV9OQU1FfS1jb25maWctaW5zdGFsbC5jbWFrZSIKLSAgICBSRU5B
TUUgJHtQQUNLQUdFX05BTUV9LWNvbmZpZy5jbWFrZQotICAgIERFU1RJTkFUSU9OICR7Q09ORklH
X0lOU1RBTExfRElSfQotICApCi0gIGluc3RhbGwgKAotICAgIEZJTEVTICIke1BST0pFQ1RfQklO
QVJZX0RJUn0vJHtQQUNLQUdFX05BTUV9LWNvbmZpZy12ZXJzaW9uLmNtYWtlIgotICAgIERFU1RJ
TkFUSU9OICR7Q09ORklHX0lOU1RBTExfRElSfQotICApCi0gIGluc3RhbGwgKEVYUE9SVCBnZmxh
Z3MtbGliIERFU1RJTkFUSU9OICR7Q09ORklHX0lOU1RBTExfRElSfSBGSUxFICR7UEFDS0FHRV9O
QU1FfS1leHBvcnQuY21ha2UpCi0gIGlmIChVTklYKQotICAgIGluc3RhbGwgKFBST0dSQU1TIHNy
Yy9nZmxhZ3NfY29tcGxldGlvbnMuc2ggREVTVElOQVRJT04gJHtSVU5USU1FX0lOU1RBTExfRElS
fSkKLSAgZW5kaWYgKCkKLWVuZGlmICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzdXBw
b3J0IGRpcmVjdCB1c2Ugb2YgYnVpbGQgdHJlZQotc2V0IChJTlNUQUxMX1BSRUZJWF9SRUwyQ09O
RklHX0RJUiAuKQotZXhwb3J0IChUQVJHRVRTICR7VEFSR0VUU30gRklMRSAiJHtQUk9KRUNUX0JJ
TkFSWV9ESVJ9LyR7UEFDS0FHRV9OQU1FfS1leHBvcnQuY21ha2UiKQotZXhwb3J0IChQQUNLQUdF
IGdmbGFncykKLWNvbmZpZ3VyZV9maWxlIChjbWFrZS9jb25maWcuY21ha2UuaW4gIiR7UFJPSkVD
VF9CSU5BUllfRElSfS8ke1BBQ0tBR0VfTkFNRX0tY29uZmlnLmNtYWtlIiBAT05MWSkKLQotIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0jIHRlc3RpbmcgLSBNVVNUIGZvbGxvdyB0aGUgZ2VuZXJhdGlv
biBvZiB0aGUgYnVpbGQgdHJlZSBjb25maWcgZmlsZQotaWYgKEJVSUxEX1RFU1RJTkcpCi0gIGlu
Y2x1ZGUgKENUZXN0KQotICBlbmFibGVfdGVzdGluZyAoKQotICBhZGRfc3ViZGlyZWN0b3J5ICh0
ZXN0KQotZW5kaWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHBhY2thZ2luZwotaWYg
KEJVSUxEX1BBQ0tBR0lORykKLQotICBpZiAoTk9UIEJVSUxEX1NIQVJFRF9MSUJTIEFORCBOT1Qg
SU5TVEFMTF9IRUFERVJTKQotICAgIG1lc3NhZ2UgKFdBUk5JTkcgIlBhY2thZ2Ugd2lsbCBjb250
YWluIHN0YXRpYyBsaWJyYXJpZXMgd2l0aG91dCBoZWFkZXJzISIKLSAgICAgICAgICAgICAgICAg
ICAgICJcblJlY29tbWVuZGVkIG9wdGlvbnMgZm9yIGdlbmVyYXRpb24gb2YgcnVudGltZSBwYWNr
YWdlOiIKLSAgICAgICAgICAgICAgICAgICAgICJcbiAgQlVJTERfU0hBUkVEX0xJQlM9T04iCi0g
ICAgICAgICAgICAgICAgICAgICAiXG4gIEJVSUxEX1NUQVRJQ19MSUJTPU9GRiIKLSAgICAgICAg
ICAgICAgICAgICAgICJcbiAgSU5TVEFMTF9IRUFERVJTPU9GRiIKLSAgICAgICAgICAgICAgICAg
ICAgICJcblJlY29tbWVuZGVkIG9wdGlvbnMgZm9yIGdlbmVyYXRpb24gb2YgZGV2ZWxvcG1lbnQg
cGFja2FnZToiCi0gICAgICAgICAgICAgICAgICAgICAiXG4gIEJVSUxEX1NIQVJFRF9MSUJTPU9O
IgotICAgICAgICAgICAgICAgICAgICAgIlxuICBCVUlMRF9TVEFUSUNfTElCUz1PTiIKLSAgICAg
ICAgICAgICAgICAgICAgICJcbiAgSU5TVEFMTF9IRUFERVJTPU9OIikKLSAgZW5kaWYgKCkKLQot
ICAjIGRlZmF1bHQgcGFja2FnZSBnZW5lcmF0b3JzCi0gIGlmIChBUFBMRSkKLSAgICBzZXQgKFBB
Q0tBR0VfR0VORVJBVE9SICAgICAgICAiUGFja2FnZU1ha2VyIikKLSAgICBzZXQgKFBBQ0tBR0Vf
U09VUkNFX0dFTkVSQVRPUiAiVEdaO1pJUCIpCi0gIGVsc2VpZiAoVU5JWCkKLSAgICBzZXQgKFBB
Q0tBR0VfR0VORVJBVE9SICAgICAgICAiREVCO1JQTSIpCi0gICAgc2V0IChQQUNLQUdFX1NPVVJD
RV9HRU5FUkFUT1IgIlRHWjtaSVAiKQotICBlbHNlICgpCi0gICAgc2V0IChQQUNLQUdFX0dFTkVS
QVRPUiAgICAgICAgIlpJUCIpCi0gICAgc2V0IChQQUNLQUdFX1NPVVJDRV9HRU5FUkFUT1IgIlpJ
UCIpCi0gIGVuZGlmICgpCi0KLSAgIyB1c2VkIHBhY2thZ2UgZ2VuZXJhdG9ycwotICBzZXQgKENQ
QUNLX0dFTkVSQVRPUiAgICAgICAgIiR7UEFDS0FHRV9HRU5FUkFUT1J9IiAgICAgICAgQ0FDSEUg
U1RSSU5HICJMaXN0IG9mIGJpbmFyeSBwYWNrYWdlIGdlbmVyYXRvcnMgKENQYWNrKS4iKQotICBz
ZXQgKENQQUNLX1NPVVJDRV9HRU5FUkFUT1IgIiR7UEFDS0FHRV9TT1VSQ0VfR0VORVJBVE9SfSIg
Q0FDSEUgU1RSSU5HICJMaXN0IG9mIHNvdXJjZSBwYWNrYWdlIGdlbmVyYXRvcnMgKENQYWNrKS4i
KQotICBtYXJrX2FzX2FkdmFuY2VkIChDUEFDS19HRU5FUkFUT1IgQ1BBQ0tfU09VUkNFX0dFTkVS
QVRPUikKLQotICAjIHNvbWUgcGFja2FnZSBnZW5lcmF0b3JzIChlLmcuLCBQYWNrYWdlTWFrZXIp
IGRvIG5vdCBhbGxvdyAubWQgZXh0ZW5zaW9uCi0gIGNvbmZpZ3VyZV9maWxlICgiJHtDTUFLRV9D
VVJSRU5UX0xJU1RfRElSfS9SRUFETUUubWQiICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0v
UkVBRE1FLnR4dCIgQ09QWU9OTFkpCi0KLSAgIyBjb21tb24gcGFja2FnZSBpbmZvcm1hdGlvbgot
ICBzZXQgKENQQUNLX1BBQ0tBR0VfVkVORE9SICAgICAgICAgICAgICAiQW5kcmVhcyBTY2h1aCIp
Ci0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9DT05UQUNUICAgICAgICAgICAgICJnb29nbGUtZ2ZsYWdz
QGdvb2dsZWdyb3Vwcy5jb20iKQotICBzZXQgKENQQUNLX1BBQ0tBR0VfTkFNRSAgICAgICAgICAg
ICAgICAiJHtQQUNLQUdFX05BTUV9IikKLSAgc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT04gICAg
ICAgICAgICAgIiR7UEFDS0FHRV9WRVJTSU9OfSIpCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9WRVJT
SU9OX01BSk9SICAgICAgICIke1BBQ0tBR0VfVkVSU0lPTl9NQUpPUn0iKQotICBzZXQgKENQQUNL
X1BBQ0tBR0VfVkVSU0lPTl9NSU5PUiAgICAgICAiJHtQQUNLQUdFX1ZFUlNJT05fTUlOT1J9IikK
LSAgc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT05fUEFUQ0ggICAgICAgIiR7UEFDS0FHRV9WRVJT
SU9OX1BBVENIfSIpCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9ERVNDUklQVElPTl9TVU1NQVJZICJB
IGNvbW1hbmRsaW5lIGZsYWdzIGxpYnJhcnkgdGhhdCBhbGxvd3MgZm9yIGRpc3RyaWJ1dGVkIGZs
YWdzLiIpCi0gIHNldCAoQ1BBQ0tfUkVTT1VSQ0VfRklMRV9XRUxDT01FICAgICAgICIke0NNQUtF
X0NVUlJFTlRfQklOQVJZX0RJUn0vUkVBRE1FLnR4dCIpCi0gIHNldCAoQ1BBQ0tfUkVTT1VSQ0Vf
RklMRV9MSUNFTlNFICAgICAgICIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0NPUFlJTkcudHh0
IikKLSAgc2V0IChDUEFDS19QQUNLQUdFX0RFU0NSSVBUSU9OX0ZJTEUgICAgIiR7Q01BS0VfQ1VS
UkVOVF9CSU5BUllfRElSfS9SRUFETUUudHh0IikKLSAgc2V0IChDUEFDS19JTlNUQUxMX1BSRUZJ
WCAgICAgICAgICAgICAgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9IikKLSAgc2V0IChDUEFDS19P
VVRQVVRfRklMRV9QUkVGSVggICAgICAgICAgcGFja2FnZXMpCi0gIHNldCAoQ1BBQ0tfUEFDS0FH
RV9SRUxPQ0FUQUJMRSAgICAgICAgIFRSVUUpCi0gIHNldCAoQ1BBQ0tfTU9OT0xJVEhJQ19JTlNU
QUxMICAgICAgICAgIFRSVUUpCi0KLSAgIyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiAtLSB1c2Vk
IGluIGNtYWtlL3BhY2thZ2UuY21ha2UuaW4gYWxzbyBmb3IgREVCCi0gIHNldCAoQ1BBQ0tfUlBN
X1BBQ0tBR0VfR1JPVVAgICAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIikKLSAgc2V0IChDUEFDS19S
UE1fUEFDS0FHRV9MSUNFTlNFICJCU0QiKQotICBzZXQgKENQQUNLX1JQTV9QQUNLQUdFX1VSTCAg
ICAgImh0dHA6Ly9zY2h1aHNjaHVoLmdpdGh1Yi5jb20vZ2ZsYWdzIikKLSAgc2V0IChDUEFDS19S
UE1fQ0hBTkdFTE9HX0ZJTEUgICIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L0NoYW5nZUxvZy50
eHQiKQotCi0gIGlmIChJTlNUQUxMX0hFQURFUlMpCi0gICAgc2V0IChDUEFDS19SRVNPVVJDRV9G
SUxFX1JFQURNRSAiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9kb2MvaW5kZXguaHRtbCIpCi0g
IGVsc2UgKCkKLSAgICBzZXQgKENQQUNLX1JFU09VUkNFX0ZJTEVfUkVBRE1FICIke0NNQUtFX0NV
UlJFTlRfTElTVF9ESVJ9L2NtYWtlL1JFQURNRV9ydW50aW1lLnR4dCIpCi0gIGVuZGlmICgpCi0K
LSAgIyBzeXN0ZW0vYXJjaGl0ZWN0dXJlCi0gIGlmIChXSU5ET1dTKQotICAgIGlmIChDTUFLRV9D
TF82NCkKLSAgICAgIHNldCAoQ1BBQ0tfU1lTVEVNX05BTUUgIndpbjY0IikKLSAgICBlbHNlICgp
Ci0gICAgICBzZXQgKENQQUNLX1NZU1RFTV9OQU1FICJ3aW4zMiIpCi0gICAgZW5kaWYgKCkKLSAg
ICBzZXQgKENQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFKQotICBlbHNlaWYgKEFQUExFKQotICAg
IHNldCAoQ1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkUgZGFyd2luKQotICBlbHNlICgpCi0gICAg
c3RyaW5nIChUT0xPV0VSICIke0NNQUtFX1NZU1RFTV9OQU1FfSIgQ1BBQ0tfU1lTVEVNX05BTUUp
Ci0gICAgaWYgKENNQUtFX0NYWF9GTEFHUyBNQVRDSEVTICItbTMyIikKLSAgICAgIHNldCAoQ1BB
Q0tfUEFDS0FHRV9BUkNISVRFQ1RVUkUgaTM4NikKLSAgICBlbHNlICgpCi0gICAgICBleGVjdXRl
X3Byb2Nlc3MgKAotICAgICAgICBDT01NQU5EICAgICAgICAgZHBrZyAtLXByaW50LWFyY2hpdGVj
dHVyZQotICAgICAgICBSRVNVTFRfVkFSSUFCTEUgUlYKLSAgICAgICAgT1VUUFVUX1ZBUklBQkxF
IENQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFCi0gICAgICApCi0gICAgICBpZiAoUlYgRVFVQUwg
MCkKLQkgICAgICBzdHJpbmcgKFNUUklQICIke0NQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFfSIg
Q1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkUpCi0gICAgICBlbHNlICgpCi0gICAgICAgIGV4ZWN1
dGVfcHJvY2VzcyAoQ09NTUFORCB1bmFtZSAtbSBPVVRQVVRfVkFSSUFCTEUgQ1BBQ0tfUEFDS0FH
RV9BUkNISVRFQ1RVUkUpCi0gICAgICAgIGlmIChDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVSRSBN
QVRDSEVTICJ4ODZfNjQiKQotCSAgICAgICAgc2V0IChDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVS
RSBhbWQ2NCkKLSAgICAgICAgZWxzZSAoKQotICAgICAgICAgIHNldCAoQ1BBQ0tfUEFDS0FHRV9B
UkNISVRFQ1RVUkUgaTM4NikKLSAgICAgICAgZW5kaWYgKCkKLSAgICAgIGVuZGlmICgpCi0gICAg
ZW5kaWYgKCkKLSAgZW5kaWYgKCkKLQotICAjIHNvdXJjZSBwYWNrYWdlIHNldHRpbmdzCi0gIHNl
dCAoQ1BBQ0tfU09VUkNFX1RPUExFVkVMX1RBRyAgICAgICJzb3VyY2UiKQotICBzZXQgKENQQUNL
X1NPVVJDRV9QQUNLQUdFX0ZJTEVfTkFNRSAiJHtDUEFDS19QQUNLQUdFX05BTUV9LSR7Q1BBQ0tf
UEFDS0FHRV9WRVJTSU9OfSIpCi0gIHNldCAoQ1BBQ0tfU09VUkNFX0lHTk9SRV9GSUxFUyAgICAg
ICIvXFxcXC5naXQvO1xcXFwuc3dwJDtcXFxcLiM7LyM7XFxcXC4qfjtjc2NvcGVcXFxcLio7L1tC
Yl11aWxkWy4rLV9hLXpBLVowLTldKi8iKQotCi0gICMgZGVmYXVsdCBiaW5hcnkgcGFja2FnZSBz
ZXR0aW5ncwotICBzZXQgKENQQUNLX0lOQ0xVREVfVE9QTEVWRUxfRElSRUNUT1JZIFRSVUUpCi0g
IHNldCAoQ1BBQ0tfUEFDS0FHRV9GSUxFX05BTUUgICAgICAgICAgIiR7Q1BBQ0tfUEFDS0FHRV9O
QU1FfS0ke0NQQUNLX1BBQ0tBR0VfVkVSU0lPTn0tJHtDUEFDS19TWVNURU1fTkFNRX0iKQotICBp
ZiAoQ1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkUpCi0gICAgc2V0IChDUEFDS19QQUNLQUdFX0ZJ
TEVfTkFNRSAiJHtDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRX0tJHtDUEFDS19QQUNLQUdFX0FSQ0hJ
VEVDVFVSRX0iKQotICBlbmRpZiAoKQotCi0gICMgZ2VuZXJhdG9yIHNwZWNpZmljIGNvbmZpZ3Vy
YXRpb24gZmlsZQotICAjCi0gICMgYWxsb3cgcGFja2FnZSBtYWludGFpbmVycyB0byB1c2UgdGhl
aXIgb3duIGNvbmZpZ3VyYXRpb24gZmlsZQotICAjICQgY21ha2UgLURDUEFDS19QUk9KRUNUX0NP
TkZJR19GSUxFOkZJTEU9L3BhdGgvdG8vcGFja2FnZS9jb25maWcKLSAgaWYgKE5PVCBDUEFDS19Q
Uk9KRUNUX0NPTkZJR19GSUxFKQotICAgIGNvbmZpZ3VyZV9maWxlICgKLSAgICAgICIke0NNQUtF
X0NVUlJFTlRfTElTVF9ESVJ9L2NtYWtlL3BhY2thZ2UuY21ha2UuaW4iCi0gICAgICAiJHtQUk9K
RUNUX0JJTkFSWV9ESVJ9LyR7UEFDS0FHRV9OQU1FfS1wYWNrYWdlLmNtYWtlIiBAT05MWQotICAg
ICkKLSAgICBzZXQgKENQQUNLX1BST0pFQ1RfQ09ORklHX0ZJTEUgIiR7UFJPSkVDVF9CSU5BUllf
RElSfS8ke1BBQ0tBR0VfTkFNRX0tcGFja2FnZS5jbWFrZSIpCi0gIGVuZGlmICgpCi0KLSAgaW5j
bHVkZSAoQ1BhY2spCi0KLWVuZGlmICgpICMgQlVJTERfUEFDS0FHSU5HCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMv
Q09QWUlORy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dmbGFncy9zcmMvQ09QWUlORy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQxNWIwYzI0MTM0ZGU4Y2UwMTg1YWMyMmNiMmRkOTZlMjM5MTFmYWIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NPUFlJTkcudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMjggKzAsMCBAQAotQ29weXJpZ2h0IChjKSAyMDA2LCBHb29nbGUgSW5jLgotQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24u
Ci0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy9DaGFuZ2VMb2cudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NoYW5nZUxvZy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVlYTlmODM5NTBmYTM1MTQ1MDVjMjEzMmVlODU5NjYzNzhjNmI5NzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NoYW5nZUxvZy50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotKiBUdWUgTWFyIDI0IDIwMTQgLSBBbmRyZWFz
IFNjaHVoIDxhbmRyZWFzLnNjaHVoLjg0QGdtYWlsLmNvbT4KLQotLSBnZmxhZ3M6IHZlcnNpb24g
Mi4xLjIKLS0gTW92ZWQgcHJvamVjdCB0byBHaXRIdWIKLS0gQWRkZWQgR0ZMQUdTX05BTUVTUEFD
RSBkZWZpbml0aW9uIHRvIGdmbGFnc19kZWNsYXJlLmgKLS0gRml4ZWQgaXNzdWUgOTQ6IEtlZXAg
Imdvb2dsZSIgYXMgcHJpbWFyeSBuYW1lc3BhY2UgYW5kIGltcG9ydCBzeW1ib2xzIGludG8gImdm
bGFncyIgbmFtZXNwYWNlCi0tIEZpeGVkIGlzc3VlIDk2OiBGaXggYmluYXJ5IEFCSSBjb21wYXRp
YmlsaXR5IHdpdGggZ2ZsYWdzIDIuMCB1c2luZyAiZ29vZ2xlIiBhcyBwcmltYXJ5IG5hbWVzcGFj
ZQotLSBGaXhlZCBpc3N1ZSA5Ny8xMDE6IFJlbW92ZWQgKHBhdGNoZWQpIENNYWtlIG1vZHVsZXMg
YW5kIGVuYWJsZWQgQyBsYW5ndWFnZSBpbnN0ZWFkCi0tIEZpeGVkIGlzc3VlIDEwMzogU2V0IENN
YWtlIHBvbGljeSBDTVAwMDQyIHRvIHNpbGVuY2Ugd2FybmluZyByZWdhcmRpbmcgTUFDT1NfUlBB
VEggc2V0dGluZwotCi0qIFN1biBNYXIgMjAgMjAxNCAtIEFuZHJlYXMgU2NodWggPGdvb2dsZS1n
ZmxhZ3NAZ29vZ2xlZ3JvdXBzLmNvbT4KLQotLSBnZmxhZ3M6IHZlcnNpb24gMi4xLjEKLS0gRml4
ZWQgaXNzdWUgNzc6IEdGTEFHU19JU19BX0RMTCBleHBhbmRzIHRvIGVtcHR5IHN0cmluZyBpbiBn
ZmxhZ3NfZGVjbGFyZS5oCi0tIEZpeGVkIGlzc3VlIDc5OiBHRkxBR1NfTkFNRVNQQUNFIG5vdCBl
eHBhbmRlZCB0byBhY3R1YWwgbmFtZXNwYWNlIGluIGdmbGFnc19kZWNsYXJlLmgKLS0gRml4ZWQg
aXNzdWUgODA6IEFsbG93IGluY2x1ZGUgcGF0aCB0byBkaWZmZXIgZnJvbSBHRkxBR1NfTkFNRVNQ
QUNFCi0KLSogVGh1IE1hciAyMCAyMDE0IC0gQW5kcmVhcyBTY2h1aCA8Z29vZ2xlLWdmbGFnc0Bn
b29nbGVncm91cHMuY29tPgotCi0tIGdmbGFnczogdmVyc2lvbiAyLjEuMAotLSBCdWlsZCBzeXN0
ZW0gY29uZmlndXJhdGlvbiB1c2luZyBDTWFrZSBpbnN0ZWFkIG9mIGF1dG90b29scwotLSBDUGFj
ayBwYWNrYWdpbmcgc3VwcG9ydCBmb3IgRGViaWFuL1VidW50dSwgUmVkIEhhdCwgYW5kIE1hYyBP
UyBYCi0tIEZpeGVkIGlzc3VlIDU0OiBGaXggImludmFsaWQgc3VmZml4IG9uIGxpdGVyYWwiIChD
KysxMSkKLS0gRml4ZWQgaXNzdWUgNTc6IFVzZSBfc3RyZHVwIGluc3RlYWQgb2Ygc3RyZHVwIG9u
IFdpbmRvd3MKLS0gRml4ZWQgaXNzdWUgNjI6IENoYW5nZSBhbGwgcHJlcHJvY2Vzc29yIGluY2x1
ZGUgZ3VhcmRzIHRvIHN0YXJ0IHdpdGggR0ZMQUdTXwotLSBGaXhlZCBpc3N1ZSA2NDogQWRkIERF
RklORV92YWxpZGF0b3IgbWFjcm8KLS0gRml4ZWQgaXNzdWUgNzM6IFdhcm5pbmdzIGluIFZpc3Vh
bCBTdHVkaW8gMjAxMCBhbmQgdW5hYmxlIHRvIGNvbXBpbGUgdW5pdCB0ZXN0Ci0KLSogV2VkIEph
biAyNSAyMDEyIC0gR29vZ2xlIEluYy4gPGdvb2dsZS1nZmxhZ3NAZ29vZ2xlZ3JvdXBzLmNvbT4K
LQotLSBnZmxhZ3M6IHZlcnNpb24gMi4wCi0tIENoYW5nZWQgdGhlICdvZmZpY2lhbCcgZ2ZsYWdz
IGVtYWlsIGluIHNldHVwLnB5L2V0YwotLSBSZW5hbWVkIGdvb2dsZS1nZmxhZ3Muc2xuIHRvIGdm
bGFncy5zbG4KLS0gQ2hhbmdlZCBjb3B5cmlnaHQgdGV4dCB0byByZWZsZWN0IEdvb2dsZSdzIHJl
bGlucXVpc2hlZCBvd25lcnNoaXAKLQotKiBUdWUgRGVjIDIwIDIwMTEgLSBHb29nbGUgSW5jLiA8
b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS43Ci0t
IEFkZCBDb21tYW5kTGluZUZsYWdJbmZvOjpmbGFnX3B0ciBwb2ludGluZyB0byBjdXJyZW50IHN0
b3JhZ2UgKG11c2ppKQotLSBQT1JUSU5HOiBmbHVzaCBhZnRlciB3cml0aW5nIHRvIHN0ZGVyciwg
bmVlZGVkIG9uIGN5Z3dpbgotLSBQT1JUSU5HOiBDbGVhbiB1cCB0aGUgR0ZMQUdTX0RMTF9ERUNM
IHN0dWZmIGJldHRlcgotLSBGaXggYSBidWcgaW4gU3RyaW5nUHJpbnRmKCkgdGhhdCBhZmZlY3Rl
ZCBsYXJnZSBzdHJpbmdzIChjc2lsdmVycykKLS0gRGllIGF0IGNvbmZpZ3VyZS10aW1lIHdoZW4g
ZysrIGlzbid0IGluc3RhbGxlZAotCi0qIEZyaSBKdWwgMjkgMjAxMSAtIEdvb2dsZSBJbmMuIDxv
cGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAxLjYKLS0g
QlVHRklYOiBGaXggYSBidWcgd2hlcmUgd2Ugd2VyZSBsZWF2aW5nIG91dCBhIHJlcXVpcmVkICQo
dG9wX3NyY2RpcikKLS0gRml4IGRlZmluaXRpb24gb2YgY2xzdHJpbmcgKGp5cmtpKQotLSBTcGxp
dCB1cCBmbGFnIGRlY2xhcmVzIGludG8gaXRzIG93biBmaWxlIChqeXJraSkKLS0gQWRkIC0tdmVy
c2lvbiBzdXBwb3J0IChjc2lsdmVycykKLS0gVXBkYXRlIHRoZSBSRUFETUUgZm9yIGdmbGFncyB3
aXRoIHN0YXRpYyBsaWJzCi0tIFVwZGF0ZSBhY3hfcHRocmVhZC5tNCBmb3Igbm9zdGRsaWIKLS0g
Q2hhbmdlIFJlcGFyc2VDb21tYW5kTGluZUZsYWdzIHRvIHJldHVybiB2b2lkIChjc2lsdmVycykK
LS0gU29tZSBkb2MgdHlwb2ZpeGVzIGFuZCBleGFtcGxlIGF1Z21lbnRhdGlvbiAodmFyaW91cykK
LQotKiBNb24gSmFuIDI0IDIwMTEgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29t
PgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS41Ci0tIEJldHRlciByZXBvcnRpbmcgb2Yg
Y3VycmVudCB2cyBkZWZhdWx0IHZhbHVlIChoYW5kbGVyKQotLSBBZGQgQVBJIGZvciBjbGVhbmlu
ZyB1cCBvZiBtZW1vcnkgYXQgcHJvZ3JhbS1leGl0IChqbWFyYW50eikKLS0gRml4IG1hY3JvcyB0
byB3b3JrIGluc2lkZSBuYW1lc3BhY2VzIChjc2lsdmVycykKLS0gVXNlIG91ciBvd24gc3RyaW5n
IHR5cGVkZWYgaW4gY2FzZSBzdHJpbmcgaXMgcmVkZWZpbmVkIChjc2lsdmVycykKLS0gVXBkYXRl
ZCB0byBhdXRvY29uZiAyLjY1Ci0KLSogV2VkIE9jdCAxMyAyMDEwIC0gR29vZ2xlIEluYy4gPG9w
ZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDEuNAotLSBB
ZGQgYSBjaGVjayB0byBwcmV2ZW50IHBhc3NpbmcgMCB0byBERUZJTkVfc3RyaW5nIChqb3JnKQot
LSBSZWR1Y2UgY29tcGlsZSAoLm8pIHNpemUgKGp5cmtpKQotLSBTb21lIHNtYWxsIGNoYW5nZXMg
dG8gcXVpZXQgZGVidWcgY29tcGlsZXMgKGFsZXhrKQotLSBQT1JUSU5HOiBiZXR0ZXIgc3VwcG9y
dCBzdGF0aWMgbGlua2luZyBvbiB3aW5kb3dzIChjc2lsdmVycykKLS0gRE9DVU1FTlRBVElPTjog
Y2hhbmdlIGRlZmF1bHQgdmFsdWVzLCB1c2UgdmFsaWRhdG9ycywgZXRjLgotLSBVcGRhdGUgdGhl
IE5FV1MgZmlsZSB0byBiZSBub24tZW1wdHkKLS0gQWRkIHBrZy1jb25maWcgKC5wYykgZmlsZXMg
Zm9yIGxpYmdmbGFncyBhbmQgbGliZ2ZsYWdzX25vdGhyZWFkcwotCi0qIE1vbiBKYW4gIDQgMjAx
MCAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFn
czogdmVyc2lvbiAxLjMKLS0gUE9SVEFCSUxJVFk6IGNhbiBub3cgYnVpbGQgYW5kIHJ1biB0ZXN0
cyB1bmRlciBNU1ZDIChjc2lsdmVycykKLS0gUmVtb3ZlIHRoZSBweXRob24gZ2ZsYWdzIGNvZGUs
IHdoaWNoIGlzIG5vdyBpdHMgb3duIHBhY2thZ2UgKHRhbnNlbGwpCi0tIENsYXJpZnkgdGhhdCAi
bGFzdCBmbGFnIHdpbnMiIGluIHRoZSBkb2NzIChjc2lsdmVycykKLS0gQ29tbWVudCBkYW5nZXIg
b2YgdXNpbmcgR2V0QWxsRmxhZ3MgaW4gdmFsaWRhdG9ycyAod29qdGVrbSkKLS0gUE9SVEFCSUxJ
VFk6IFNvbWUgZml4ZXMgbmVjZXNzYXJ5IGZvciBjKysweCAobWJvZXJnZXIpCi0tIE1ha2VmaWxl
IGZpeDogJChzcmNkaXIpIC0+ICQodG9wX3NyY2RpcikgaW4gb25lIHBsYWNlIChjc2lsdnJlcykK
LS0gSU5TVEFMTDogYXV0b3Rvb2xzIHRvIGF1dG9jb25mIHYyLjY0ICsgYXV0b21ha2UgdjEuMTEg
KGNzaWx2ZXJzKQotCi0qIFRodSBTZXAgMTAgMjAwOSAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNl
QGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAxLjIKLS0gUE9SVEFCSUxJ
VFk6IGNhbiBub3cgYnVpbGQgYW5kIHJ1biB0ZXN0cyB1bmRlciBtaW5ndyAoY3NpbHZlcnMpCi0t
IFVzaW5nIGEgc3RyaW5nIGFyZyBmb3IgYSBib29sIGZsYWcgaXMgYSBjb21waWxlLXRpbWUgZXJy
b3IgKHJiYXlhcmRvKQotLSBBZGQgLS1oZWxweG1sIHRvIGdmbGFncy5weSAoc2FsY2lhbnUpCi0t
IFByb3RlY3QgYWdhaW5zdCBhIGh5cG90aGV0aWNhbCBnbG9iYWwgZCd0b3IgbXV0ZXggcHJvYmxl
bSAoY3NpbHZlcnMpCi0tIEJVR0ZJWDogY2FuIG5vdyBkZWZpbmUgYSBmbGFnIGFmdGVyICd1c2lu
ZyBuYW1lc3BhY2UgZ29vZ2xlJyAoaGFtYWppKQotCi0qIFR1ZSBBcHIgMTQgMjAwOSAtIEdvb2ds
ZSBJbmMuIDxvcGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lv
biAxLjEKLS0gQWRkIGJvdGggZm9vIGFuZCBub2ZvbyBmb3IgYm9vbGVhbiBmbGFncywgd2l0aCAt
LXVuZGVmb2sgKGFuZHljaHUpCi0tIEJldHRlciBkb2N1bWVudCBob3cgdmFsaWRhdG9ycyB3b3Jr
ICh3b2p0ZWttKQotLSBJbXByb3ZlIGJpbmFyeS1kZXRlY3Rpb24gZm9yIGJhc2gtY29tcGxldGlv
biAobXRhbXNreSkKLS0gUHl0aG9uOiBBZGQgYSBjb25jZXB0IG9mICJrZXkgZmxhZ3MiLCB1c2Vk
IHdpdGggLS1oZWxwIChzYWxjaWFudSkKLS0gUHl0aG9uOiBSb2J1c3RpZnkgZmxhZ192YWx1ZXMg
KHNhbGNpYW51KQotLSBQeXRob246IEFkZCBhIG5ldyBERUZJTkVfYm9vbCBhbGlhcyAoa2Vpciwg
YW5kcmV3bGl1KQotLSBQeXRob246IERvIG1vZHVsZSBpbnRyb3NwZWN0aW9uIGJhc2VkIG9uIG1v
ZHVsZSBuYW1lIChkc3R1cnRldmFudCkKLS0gRml4IGF1dG9jb25mIGEgYml0IGJldHRlciwgZXNw
ZWNpYWxseSBvbiB3aW5kb3dzIGFuZCBzb2xhcmlzIChhamVuam8pCi0tIEJVRyBGSVg6IGdmbGFn
c19ub3RocmVhZHMgd2FzIGxpbmtpbmcgYWdhaW5zdCB0aGUgd3JvbmcgbGliIChhamVuam8pCi0t
IEJVRyBGSVg6IHRocmVhZHMtZGV0ZWN0aW9uIGZhaWxlZCBvbiBGcmVlQlNEOyByZXBsYWNlIGl0
IChhamVuam8pCi0tIFBPUlRBQklMSVRZOiBRdWlldCBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJv
ciB3aXRoIFNVU0UgMTAgKGNzaWx2ZXJzKQotLSBQT1JUQUJJTElUWTogVXBkYXRlIGRlYi5zaCBm
b3IgbW9yZSByZWNlbnR5IGRlYnVpbGRzIChjc2lsdmVycykKLS0gUE9SVEFCSUxJVFk6ICNpbmNs
dWRlIG1vcmUgaGVhZGVycyB0byBzYXRpZnkgbmV3IGdjYydzIChjc2lsdmVycykKLS0gSU5TVEFM
TDogVXBkYXRlZCB0byBhdXRvY29uZiAyLjYxIGFuZCBsaWJ0b29sIDEuNS4yNiAoY3NpbHZlcnMp
Ci0KLSogRnJpIE9jdCAgMyAyMDA4IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNv
bT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDEuMAotLSBBZGQgYSBtaXNzaW5nIG5ld2xp
bmUgdG8gYW4gZXJyb3Igc3RyaW5nIChiY21pbGxzKQotLSAob3RoZXJ3aXNlIGV4YWN0bHkgdGhl
IHNhbWUgYXMgZ2ZsYWdzIDEuMHJjMikKLQotKiBUaHUgU2VwIDE4IDIwMDggLSBHb29nbGUgSW5j
LiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS4w
cmMyCi0tIFJlcG9ydCBjdXJyZW50IGZsYWcgdmFsdWVzIGluIC0taGVscHhtbCAoaGRuKQotLSBG
aXggY29tcGlsYXRpb24gdHJvdWJsZXMgd2l0aCBnY2MgNC4zLjMgKHNpbW9uYikKLS0gQlVHIEZJ
WDogSSB3YXMgbWlzc2luZyBhIHN0ZDo6IGluIERFQ0xBUkVfc3RyaW5nIChjc2lsdmVycykKLS0g
QlVHIEZJWDogQ2xhcmlmeSBpbiBkb2NzIGhvdyB0byBzcGVjaWZ5IC0tYm9vbCBmbGFncyAoY3Np
bHZlcnMpCi0tIEJVRyBGSVg6IEZpeCAtLWhlbHBzaG9ydCBmb3Igc291cmNlIGZpbGVzIG5vdCBp
biBhIHN1YmRpciAoY3NpbHZlcnMpCi0tIEJVRyBGSVg6IEZpeCBweXRob24gdW5pdHRlc3QgZm9y
IDY0LWJpdCBidWlsZHMgKGJjbWlsbHMpCi0KLSogVHVlIEF1ZyAxOSAyMDA4IC0gR29vZ2xlIElu
Yy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDEu
MHJjMQotLSBNb3ZlICNpbmNsdWRlIGZpbGVzIGZyb20gZ29vZ2xlLyB0byBnZmxhZ3MvIChjc2ls
dmVycykKLS0gU21hbGwgb3B0aW1pemF0aW9ucyB0byByZWR1Y2UgYmluYXJ5IChsaWJyYXJ5KSBz
aXplIChqeXJraSkKLS0gQlVHRklYOiBmb3Jnb3QgYSBzdGQ6OiBpbiBvbmUgb2YgdGhlIC5oIGZp
bGVzIChjc2lsdmVycykKLS0gU3BlZWQgdXAgbG9ja2luZyBieSBtYWtpbmcgc3VyZSBjYWxscyBh
cmUgaW5saW5lZCAoYWplbmpvKQotLSA2NC1CSVQgQ09NUEFUSUJJTElUWTogVXNlICVQUklkNjQg
aW5zdGVhZCBvZiAlbGxkIChjc2lsdmVycykKLS0gUE9SVEFCSUxJVFk6IGZpeCBNYWtlZmlsZSB0
byB3b3JrIHdpdGggQ3lnd2luIChhamVuam8pCi0tIFBPUlRBQklMSVRZOiBmaXggY29kZSB0byBj
b21waWxlIHVuZGVyIFZpc3VhbCBTdHVkaW8gKGFqZW5qbykKLS0gUE9SVEFCSUxJVFk6IGZpeCBj
b2RlIHRvIGNvbXBpbGUgdW5kZXIgU29sYXJpcyAxMCB3aXRoIENDIChjc2lsdmVycykKLQotKiBN
b24gSnVsIDIxIDIwMDggLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0t
IGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC45Ci0tIEFkZCB0aGUgYWJpbGl0eSB0byB2YWxpZGF0
ZSBhIGNvbW1hbmQtbGluZSBmbGFnIChjc2lsdmVycykKLS0gQWRkIGNvbXBsZXRpb24gc3VwcG9y
dCBmb3IgY29tbWFuZGxpbmUgZmxhZ3MgaW4gYmFzaCAoZGF2ZW4pCi0tIEFkZCAtVyBjb21waWxl
IGZsYWdzIHRvIE1ha2VmaWxlLCB3aGVuIHVzaW5nIGdjYyAoY3NpbHZlcnMpCi0tIEFsbG93IGhl
bHBzdHJpbmcgdG8gYmUgTlVMTCAoY3Jpc3RpYW5vYykKLS0gSW1wcm92ZWQgZG9jdW1lbnRhdGlv
biBvZiBjbGFzc2VzIGluIHRoZSAuY2MgZmlsZSAoY3NpbHZlcnMpCi0tIEZpeCBweXRob24gYnVn
IHdpdGggQXBwZW5kRmxhZ1ZhbHVlcyArIHNob3J0bmFtZXMgKGpqdHN3YW4pCi0tIFVzZSBib29s
IGluc3RlYWQgb2YgaW50IGZvciBib29sZWFuIGZsYWdzIGluIGdmbGFncy5weSAoYmNtaWxscykK
LS0gU2ltcGxpZnkgdGhlIHdheSB3ZSBkZWNsYXJlIGZsYWdzLCBub3cgbW9yZSBmb29scHJvb2Yg
KGNzaWx2ZXJzKQotLSBCZXR0ZXIgZXJyb3IgbWVzc2FnZXMgd2hlbiBib29sIGZsYWdzIGNvbGxp
ZGUgKGNvbG9oYW4pCi0tIE9ubHkgZXZhbHVhdGUgREVGSU5FX2ZvbyBtYWNybyBhcmdzIG9uY2Ug
KGNzaWx2ZXJzKQotCi0qIFdlZCBNYXIgMjYgMjAwOCAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNl
QGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAwLjgKLS0gRXhwb3J0IERl
c2NyaWJlT25lRmxhZygpIGluIHRoZSBBUEkKLS0gQWRkIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBs
aW5lIHdyYXBwaW5nIGF0IDgwIGNvbHMgZm9yIGdmbGFncy5weQotLSBCdWdmaXg6IGRvIG5vdCB0
cmVhdCBhbiBpc29sYXRlZCAiLSIgdGhlIHNhbWUgYXMgYW4gaXNvbGF0ZWQgIi0tIgotLSBVcGRh
dGUgcnBtIHNwZWMgdG8gcG9pbnQgdG8gR29vZ2xlIENvZGUgcmF0aGVyIHRoYW4gc291cmNlZm9y
Z2UgKCEpCi0tIEltcHJvdmUgZG9jdW1lbnRhdGlvbiAoaW5jbHVkaW5nIGRvY3VtZW50aW5nIHRo
cmVhZC1zYWZldHkpCi0tIEltcHJvdmUgI2luY2x1ZGUgaHlnaWVuZQotLSBJbXByb3ZlIHRlc3Rp
bmcKLQotKiBUaHUgT2N0IDE4IDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUu
Y29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC43Ci0tIERlYWwgZXZlbiBtb3JlIGNv
cnJlY3RseSB3aXRoIGxpYnB0aHJlYWQgbm90IGxpbmtlZCBpbiAoY3NpbHZlcnMpCi0tIEFkZCBT
VFJJUF9MT0csIGFuIGltcHJvdmVkIERPX05PVF9TSE9XX0NPTU1BTkRMSU5FX0hFTFAgKHNpb2Zm
ZSkKLS0gQmUgbW9yZSBhY2N1cmF0ZSBwcmludGluZyBkZWZhdWx0IGZsYWcgdmFsdWVzIGluIC0t
aGVscCAoZHN0dXJ0ZXZhbnQpCi0tIFJlZHVjZSAubyBmaWxlIHNpemUgYSBiaXQgYnkgdXNpbmcg
c2hvcnRlciBuYW1lc3BhY2UgbmFtZXMgKGplZmYpCi0tIFVzZSByZWxhdGl2ZSBpbnN0YWxsIHBh
dGgsIHNvICdzZXR1cC5weSAtLWhvbWUnIHdvcmtzIChjc2lsdmVycykKLS0gTm90aWNlIHdoZW4g
YSBib29sZWFuIGZsYWcgaGFzIGEgbm9uLWJvb2xlYW4gZGVmYXVsdCAoYm5tb3VsaSkKLS0gQnJv
YWRlbiAtLWhlbHBzaG9ydCB0byBtYXRjaCBmb28tbWFpbi5jYyBhbmQgZm9vX21haW4uY2MgKGhl
bmRyaWUpCi0tIEZpeCAibm8gbW9kdWxlcyBtYXRjaCIgbWVzc2FnZSBmb3IgLS1oZWxwc2hvcnQs
IGV0YyAoaGVuZHJpZSkKLQotKiBXZWQgQXVnIDE1IDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNv
dXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC42Ci0tIERlYWwg
Y29ycmVjdGx5IHdpdGggY2FzZSB0aGF0IGxpYnB0aHJlYWQgaXMgbm90IGxpbmtlZCBpbiAoY3Np
bHZlcnMpCi0tIFVwZGF0ZSBNYWtlZmlsZS90ZXN0cyBzbyB3ZSBwYXNzICJtYWtlIGRpc3RjaGVj
ayIgKGNzaWx2ZXJzKQotLSBEb2N1bWVudCBhbmQgdGVzdCB0aGF0IGxhc3QgYXNzaWdubWVudCB0
byBhIGZsYWcgd2lucyAod2FuKQotCi0qIFR1ZSBKdW4gMTIgMjAwNyAtIEdvb2dsZSBJbmMuIDxv
cGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAwLjUKLS0g
SW5jbHVkZSBhbGwgbTQgbWFjcm9zIGluIHRoZSBkaXN0cmlidXRpb24gKGNzaWx2ZXJzKQotLSBQ
eXRob246IEZpeCBicm9rZW4gZGF0YV9maWxlcyBmaWVsZCBpbiBzZXR1cC5weSAoc2lkbG9uKQot
LSBQeXRob246IGJldHRlciBzdHJpbmcgc2VybGlhaXppbmcgYW5kIHVucGFyc2luZyAoYWJvLCBj
c2ltbW9ucykKLS0gRml4IGNoZWNrcyBmb3IgTmFOIGFuZCBpbmYgdG8gd29yayB3aXRoIE1hYyBP
UyBYIChjc2lsdmVycykKLQotKiBUaHUgQXByIDE5IDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNv
dXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC40Ci0tIFJlbW92
ZSBpc19kZWZhdWx0IGZyb20gR2V0Q29tbWFuZExpbmVGbGFnSW5mbyAoY3NpbHZlcnMpCi0tIFBv
cnRhYmlsaXR5IGZpeGVzOiBpbmNsdWRlcywgc3RydG9sbCwgZ2NjNC4zIGVycm9ycyAoY3NpbHZl
cnMpCi0tIEEgZmV3IGRvYyB0eXBvIGNsZWFudXBzIChjc2lsdmVycykKLQotKiBXZWQgTWFyIDI4
IDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1n
ZmxhZ3M6IHZlcnNpb24gMC4zCi0tIHB5dGhvbiBwb3J0YWJpbGl0eSBmaXg6IHVzZSBwb3BlbiBp
bnN0ZWFkIG9mIHN1YnByb2Nlc3MgKGNzaWx2ZXJzKQotLSBBZGQgaXNfZGVmYXVsdCB0byBDb21t
YW5kTGluZUZsYWdJbmZvIChwY2hpZW4pCi0tIE1ha2UgZG9jcyBhIGJpdCBwcmV0dGllciAoY3Np
bHZlcnMpCi0tIEFjdHVhbGx5IGluY2x1ZGUgdGhlIHB5dGhvbiBmaWxlcyBpbiB0aGUgZGlzdHJp
YnV0aW9uISA6LS8gKGNzaWx2ZXJzKQotCi0qIE1vbiBKYW4gMjIgMjAwNyAtIEdvb2dsZSBJbmMu
IDxvcGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAwLjIK
LS0gYWRkZWQgc3VwcG9ydCBmb3IgcHl0aG9uIGNvbW1hbmRsaW5lZmxhZ3MsIGFzIHdlbGwgYXMg
YysrCi0tIGdmbGFnczJtYW4sIGEgc2NyaXB0IHRvIHR1cm4gZmxhZ3MgaW50byBhIG1hbiBwYWdl
IChkY2hyaXN0aWFuKQotCi0qIFdlZCBEZWMgMTMgMjAwNiAtIEdvb2dsZSBJbmMuIDxvcGVuc291
cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAwLjEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L3NyYy9JTlNUQUxMLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL0lOU1RBTEwubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI4OWQ4NmRlMmMwNDA3YjIwNTVlODFiZDA1OThmOWI2N2MwODI5MWYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0lOU1RBTEwubWQKKysrIC9kZXYv
bnVsbApAQCAtMSw2NyArMCwwIEBACi1JbnN0YWxsaW5nIGEgYmluYXJ5IGRpc3RyaWJ1dGlvbiBw
YWNrYWdlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLU5vIG9m
ZmljaWFsIGJpbmFyeSBkaXN0cmlidXRpb24gcGFja2FnZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBn
ZmxhZ3MgZGV2ZWxvcGVycy4KLVRoZXJlIG1heSwgaG93ZXZlciwgYmUgYmluYXJ5IHBhY2thZ2Vz
IGF2YWlsYWJsZSBmb3IgeW91ciBPUy4gUGxlYXNlIGNvbnN1bHQKLWFsc28gdGhlIHBhY2thZ2Ug
cmVwb3NpdG9yaWVzIG9mIHlvdXIgTGludXggZGlzdHJpYnV0aW9uLgotCi1Gb3IgZXhhbXBsZSBv
biBEZWJpYW4vVWJ1bnR1IExpbnV4LCBnZmxhZ3MgY2FuIGJlIGluc3RhbGxlZCB1c2luZyB0aGUK
LWZvbGxvd2luZyBjb21tYW5kOgotCi0gICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgZ2ZsYWdzCi0K
LQotQ29tcGlsaW5nIHRoZSBzb3VyY2UgY29kZQotPT09PT09PT09PT09PT09PT09PT09PT09PQot
Ci1UaGUgYnVpbGQgc3lzdGVtIG9mIGdmbGFncyBpcyBzaW5jZSB2ZXJzaW9uIDIuMSBiYXNlZCBv
biBbQ01ha2VdKGh0dHA6Ly9jbWFrZS5vcmcpLgotVGhlIGNvbW1vbiBzdGVwcyB0byBidWlsZCwg
dGVzdCwgYW5kIGluc3RhbGwgc29mdHdhcmUgYXJlIHRoZXJlZm9yZToKLQotMS4gRXh0cmFjdCBz
b3VyY2UgZmlsZXMuCi0yLiBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBjaGFuZ2UgdG8gaXQu
Ci0zLiBSdW4gQ01ha2UgdG8gY29uZmlndXJlIHRoZSBidWlsZCB0cmVlLgotNC4gQnVpbGQgdGhl
IHNvZnR3YXJlIHVzaW5nIHNlbGVjdGVkIGJ1aWxkIHRvb2wuCi01LiBUZXN0IHRoZSBidWlsdCBz
b2Z0d2FyZS4KLTYuIEluc3RhbGwgdGhlIGJ1aWx0IGZpbGVzLgotCi1PbiBVbml4LWxpa2Ugc3lz
dGVtcyB3aXRoIEdOVSBNYWtlIGFzIGJ1aWxkIHRvb2wsIHRoZXNlIGJ1aWxkIHN0ZXBzIGNhbiBi
ZQotc3VtbWFyaXplZCBieSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIGNvbW1hbmRzIGV4ZWN1
dGVkIGluIGEgc2hlbGwsCi13aGVyZSBgYGAkcGFja2FnZWBgYCBhbmQgYGBgJHZlcnNpb25gYGAg
YXJlIHNoZWxsIHZhcmlhYmxlcyB3aGljaCByZXByZXNlbnQKLXRoZSBuYW1lIG9mIHRoaXMgcGFj
a2FnZSBhbmQgdGhlIG9idGFpbmVkIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgotCi0gICAgJCB0
YXIgeHpmIGdmbGFncy0kdmVyc2lvbi1zb3VyY2UudGFyLmd6Ci0gICAgJCBjZCBnZmxhZ3MtJHZl
cnNpb24KLSAgICAkIG1rZGlyIGJ1aWxkICYmIGNkIGJ1aWxkCi0gICAgJCBjY21ha2UgLi4KLSAg
ICAKLSAgICAgIC0gUHJlc3MgJ2MnIHRvIGNvbmZpZ3VyZSB0aGUgYnVpbGQgc3lzdGVtIGFuZCAn
ZScgdG8gaWdub3JlIHdhcm5pbmdzLgotICAgICAgLSBTZXQgQ01BS0VfSU5TVEFMTF9QUkVGSVgg
YW5kIG90aGVyIENNYWtlIHZhcmlhYmxlcyBhbmQgb3B0aW9ucy4KLSAgICAgIC0gQ29udGludWUg
cHJlc3NpbmcgJ2MnIHVudGlsIHRoZSBvcHRpb24gJ2cnIGlzIGF2YWlsYWJsZS4KLSAgICAgIC0g
VGhlbiBwcmVzcyAnZycgdG8gZ2VuZXJhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIEdO
VSBNYWtlLgotICAgIAotICAgICQgbWFrZQotICAgICQgbWFrZSB0ZXN0ICAgIChvcHRpb25hbCkK
LSAgICAkIG1ha2UgaW5zdGFsbCAob3B0aW9uYWwpCi0KLUluIHRoZSBmb2xsb3dpbmcsIG9ubHkg
Z2ZsYWdzLXNwZWNpZmljIENNYWtlIHNldHRpbmdzIGF2YWlsYWJsZSB0bwotY29uZmlndXJlIHRo
ZSBidWlsZCBhbmQgaW5zdGFsbGF0aW9uIGFyZSBkb2N1bWVudGVkLiBOb3RlIHRoYXQgbW9zdCBv
ZiB0aGVzZQotdmFyaWFibGVzIGFyZSBmb3IgYWR2YW5jZWQgdXNlcnMgYW5kIGJpbmFyeSBwYWNr
YWdlIG1haW50YWluZXJzIG9ubHkuCi1UaGV5IHVzdWFsbHkgZG8gbm90IGhhdmUgdG8gYmUgbW9k
aWZpZWQuCi0KLQotQ01ha2UgT3B0aW9uICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUNNQUtFX0lOU1RBTExfUFJFRklYICAgICAgICB8
IEluc3RhbGxhdGlvbiBkaXJlY3RvcnksIGUuZy4sICIvdXNyL2xvY2FsIiBvbiBVbml4IGFuZCAi
QzpcUHJvZ3JhbSBGaWxlc1xnZmxhZ3MiIG9uIFdpbmRvd3MuCi1CVUlMRF9TSEFSRURfTElCUyAg
ICAgICAgICAgfCBSZXF1ZXN0IGJ1aWxkIG9mIGR5bmFtaWMgbGluayBsaWJyYXJpZXMuCi1CVUlM
RF9TVEFUSUNfTElCUyAgICAgICAgICAgfCBSZXF1ZXN0IGJ1aWxkIG9mIHN0YXRpYyBsaW5rIGxp
YnJhcmllcy4gSW1wbGllZCBpZiBCVUlMRF9TSEFSRURfTElCUyBpcyBPRkYuCi1CVUlMRF9QQUNL
QUdJTkcgICAgICAgICAgICAgfCBFbmFibGUgYmluYXJ5IHBhY2thZ2UgZ2VuZXJhdGlvbiB1c2lu
ZyBDUGFjay4KLUJVSUxEX1RFU1RJTkcgICAgICAgICAgICAgICB8IEJ1aWxkIHRlc3RzIGZvciBl
eGVjdXRpb24gYnkgQ1Rlc3QuCi1CVUlMRF9OQ19URVNUUyAgICAgICAgICAgICAgfCBSZXF1ZXN0
IGluY2x1c2lvbiBvZiBuZWdhdGl2ZSBjb21waWxhdGlvbiB0ZXN0cyAocmVxdWlyZXMgUHl0aG9u
KS4KLUJVSUxEX0NPTkZJR19URVNUUyAgICAgICAgICB8IFJlcXVlc3QgaW5jbHVzaW9uIG9mIHBh
Y2thZ2UgY29uZmlndXJhdGlvbiB0ZXN0cyAocmVxdWlyZXMgUHl0aG9uKS4KLUJVSUxEX2dmbGFn
c19MSUJTICAgICAgICAgICB8IFJlcXVlc3QgYnVpbGQgb2YgbXVsdGktdGhyZWFkZWQgZ2ZsYWdz
IGxpYnJhcmllcyAoaWYgdGhyZWFkaW5nIGxpYnJhcnkgZm91bmQpLgotQlVJTERfZ2ZsYWdzX25v
dGhyZWFkc19MSUJTIHwgUmVxdWVzdCBidWlsZCBvZiBzaW5nbGUtdGhyZWFkZWQgZ2ZsYWdzIGxp
YnJhcmllcy4KLUdGTEFHU19OQU1FU1BBQ0UgICAgICAgICAgICB8IE5hbWUgb2YgdGhlIEMrKyBu
YW1lc3BhY2UgdG8gYmUgdXNlZCBieSB0aGUgZ2ZsYWdzIGxpYnJhcnkuIE5vdGUgdGhhdCB0aGUg
cHVibGljIHNvdXJjZSBoZWFkZXIgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiBhIHN1YmRpcmVjdG9y
eSBuYW1lZCBhZnRlciB0aGlzIG5hbWVzcGFjZS4gVG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgd2l0aCB0aGUgR29vZ2xlIENvbW1hbmRsaW5lIEZsYWdzLCBzZXQgdGhpcyB2YXJp
YWJsZSB0byAiZ29vZ2xlIi4gVGhlIGRlZmF1bHQgaXMgImdmbGFncyIuCi1HRkxBR1NfSU5UVFlQ
RVNfRk9STUFUICAgICAgfCBTdHJpbmcgaWRlbnRpZnlpbmcgZm9ybWF0IG9mIGJ1aWx0LWluIGlu
dGVnZXIgdHlwZXMuCi1HRkxBR1NfSU5DTFVERV9ESVIgICAgICAgICAgfCBOYW1lIG9mIGhlYWRl
cnMgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSByZWxhdGl2ZSB0byBDTUFLRV9JTlNUQUxMX1BSRUZJ
WC4KLUxJQlJBUllfSU5TVEFMTF9ESVIgICAgICAgICB8IE5hbWUgb2YgbGlicmFyeSBpbnN0YWxs
YXRpb24gZGlyZWN0b3J5IHJlbGF0aXZlIHRvIENNQUtFX0lOU1RBTExfUFJFRklYLgotSU5TVEFM
TF9IRUFERVJTICAgICAgICAgICAgIHwgUmVxdWVzdCBpbnN0YWxsYXRpb24gb2YgcHVibGljIGhl
YWRlciBmaWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvUkVBRE1FLm1kCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWJkMjAyODYwMzcxMTY4YzM0NDIyZmU4ZTIwZmNlMjg3
MmVhZDY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9S
RUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotMjQgTWFyY2ggMjAxNQot
LS0tLS0tLS0tLS0tLQotCi1JJ3ZlIGp1c3QgcmVsZWFzZWQgZ2ZsYWdzIDIuMS4yLgotCi1UaGlz
IHJlbGVhc2UgY29tcGxldGVzIHRoZSBuYW1lc3BhY2UgY2hhbmdlIGZpeGVzLiBJbiBwYXJ0aWN1
bGFyLAotaXQgcmVzdG9yZXMgYmluYXJ5IEFCSSBjb21wYXRpYmlsaXR5IHdpdGggcmVsZWFzZSB2
ZXJzaW9uIDIuMC4KLVRoZSBkZXByZWNhdGVkICJnb29nbGUiIG5hbWVzcGFjZSBpcyBieSBkZWZh
dWx0IHN0aWxsIGtlcHQgYXMKLXByaW1hcnkgbmFtZXNwYWNlIHdoaWxlIHN5bWJvbHMgYXJlIGlt
cG9ydGVkIGludG8gdGhlIG5ldyAiZ2ZsYWdzIiBuYW1lc3BhY2UuCi1UaGlzIGNhbiBiZSBvdmVy
cmlkZGVuIHVzaW5nIHRoZSBDTWFrZSB2YXJpYWJsZSBHRkxBR1NfTkFNRVNQQUNFLgotCi1PdGhl
ciBmaXhlcyBvZiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBhcmUgcmVsYXRlZCB0byB0aGUgKHBh
dGNoZWQpCi1DTWFrZSBtb2R1bGVzIEZpbmRUaHJlYWRzLmNtYWtlIGFuZCBDaGVja1R5cGVTaXpl
LmNtYWtlLiBUaGVzZSBoYXZlCi1iZWVuIHJlbW92ZWQgYW5kIGluc3RlYWQgdGhlIEMgbGFuZ3Vh
Z2UgaXMgZW5hYmxlZCBhZ2FpbiBldmVuIHRob3VnaAotZ2ZsYWdzIGlzIHdyaXR0ZW4gaW4gQysr
IG9ubHkuCi0KLVRoaXMgcmVsZWFzZSBhbHNvIG1hcmtzIHRoZSBjb21wbGV0ZSBtb3ZlIG9mIHRo
ZSBnZmxhZ3MgcHJvamVjdAotZnJvbSBHb29nbGUgQ29kZSB0byBHaXRIdWIuIEVtYWlsIGFkZHJl
c3NlcyBvZiBvcmlnaW5hbCBpc3N1ZQotcmVwb3J0ZXJzIGdvdCBsb3N0IGluIHRoZSBwcm9jZXNz
LiBHaXZlbiB0aGUgYWdlIG9mIG1vc3QgaXNzdWUgcmVwb3J0cywKLXRoaXMgc2hvdWxkIGJlIG5l
Z2xpZ2FibGUuCi0KLVBsZWFzZSByZXBvcnQgYW55IGZ1cnRoZXIgaXNzdWVzIHVzaW5nIHRoZSBH
aXRIdWIgaXNzdWUgdHJhY2tlci4KLQotCi0zMCBNYXJjaCAyMDE0Ci0tLS0tLS0tLS0tLS0tCi0K
LUkndmUganVzdCByZWxlYXNlZCBnZmxhZ3MgMi4xLjEuCi0KLVRoaXMgcmVsZWFzZSBmaXhlcyBh
IGZldyBidWdzIGluIHRoZSBjb25maWd1cmF0aW9uIG9mIGdmbGFnc1xfZGVjbGFyZS5oCi1hbmQg
YWRkcyBhIHNlcGFyYXRlIEdGTEFHU1xfSU5DTFVERVxfRElSIENNYWtlIHZhcmlhYmxlIHRvIHRo
ZSBidWlsZCBjb25maWd1cmF0aW9uLgotU2V0dGluZyBHRkxBR1NcX05BTUVTUEFDRSB0byAiZ29v
Z2xlIiBubyBsb25nZXIgY2hhbmdlcyBhbHNvIHRoZSBpbmNsdWRlCi1wYXRoIG9mIHRoZSBwdWJs
aWMgaGVhZGVyIGZpbGVzLiBUaGlzIGFsbG93cyB0aGUgdXNlIG9mIHRoZSBsaWJyYXJ5IHdpdGgK
LW90aGVyIEdvb2dsZSBwcm9qZWN0cyBzdWNoIGFzIGdsb2cgd2hpY2ggc3RpbGwgdXNlIHRoZSBk
ZXByZWNhdGVkICJnb29nbGUiCi1uYW1lc3BhY2UgZm9yIHRoZSBnZmxhZ3MgbGlicmFyeSwgYnV0
IGluY2x1ZGUgaXQgYXMgImdmbGFncy9nZmxhZ3MuaCIuCi0KLTIwIE1hcmNoIDIwMTQKLS0tLS0t
LS0tLS0tLS0KLQotSSd2ZSBqdXN0IHJlbGVhc2VkIGdmbGFncyAyLjEuCi0KLVRoZSBtYWpvciBj
aGFuZ2VzIGFyZSB0aGUgdXNlIG9mIENNYWtlIGZvciB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBp
bnN0ZWFkCi1vZiB0aGUgYXV0b3Rvb2xzIGFuZCBwYWNrYWdpbmcgc3VwcG9ydCB0aHJvdWdoIENQ
YWNrLiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UKLW9mIGFsbCBDKysgc3ltYm9scyBpcyBub3cgImdm
bGFncyIgaW5zdGVhZCBvZiAiZ29vZ2xlIi4gVGhpcyBjYW4gYmUKLWNvbmZpZ3VyZWQgdmlhIHRo
ZSBHRkxBR1NcX05BTUVTUEFDRSB2YXJpYWJsZS4KLQotVGhpcyByZWxlYXNlIGNvbXBpbGVzIHdp
dGggYWxsIG1ham9yIGNvbXBpbGVycyB3aXRob3V0IHdhcm5pbmdzIGFuZCBwYXNzZWQKLXRoZSB1
bml0IHRlc3RzIG9uICBVYnVudHUgMTIuMDQsIFdpbmRvd3MgNyAoVmlzdWFsIFN0dWRpbyAyMDA4
IGFuZCAyMDEwLAotQ3lnd2luLCBNaW5HVyksIGFuZCBNYWMgT1MgWCAoWGNvZGUgNS4xKS4KLQot
VGhlIFNWTiByZXBvc2l0b3J5IG9uIEdvb2dsZSBDb2RlIGlzIG5vdyBmcm96ZW4gYW5kIHJlcGxh
Y2VkIGJ5IGEgR2l0Ci1yZXBvc2l0b3J5IHN1Y2ggdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBHaXQg
c3VibW9kdWxlIGJ5IHByb2plY3RzLiBUaGUgbWFpbgotaG9zdGluZyBvZiB0aGlzIHByb2plY3Qg
cmVtYWlucyBhdCBHb29nbGUgQ29kZS4gVGhhbmtzIHRvIHRoZSBkaXN0cmlidXRlZAotY2hhcmFj
dGVyIG9mIEdpdCwgSSBjYW4gcHVzaCAoYW5kIHB1bGwpIGNoYW5nZXMgZnJvbSBib3RoIEdpdEh1
YiBhbmQgR29vZ2xlIENvZGUKLWluIG9yZGVyIHRvIGtlZXAgdGhlIHR3byBwdWJsaWMgcmVwb3Np
dG9yaWVzIGluIHN5bmMuCi1XaGVuIGZpeGluZyBhbiBpc3N1ZSBmb3IgYSBwdWxsIHJlcXVlc3Qg
dGhyb3VnaCBlaXRoZXIgb2YgdGhlc2UgaG9zdGluZwotcGxhdGZvcm1zLCBwbGVhc2UgcmVmZXJl
bmNlIHRoZSBpc3N1ZSBudW1iZXIgYXMKLVtkZXNjcmliZWQgaGVyZV0oaHR0cHM6Ly9jb2RlLmdv
b2dsZS5jb20vcC9zdXBwb3J0L3dpa2kvSXNzdWVUcmFja2VyI0ludGVncmF0aW9uX3dpdGhfdmVy
c2lvbl9jb250cm9sKS4KLUZvciB0aGUgZnVydGhlciBkZXZlbG9wbWVudCwgSSBhbSBmb2xsb3dp
bmcgdGhlCi1bR2l0IGJyYW5jaGluZyBtb2RlbF0oaHR0cDovL252aWUuY29tL3Bvc3RzL2Etc3Vj
Y2Vzc2Z1bC1naXQtYnJhbmNoaW5nLW1vZGVsLykKLXdpdGggZmVhdHVyZSBicmFuY2ggbmFtZXMg
cHJlZml4ZWQgYnkgImZlYXR1cmUvIiBhbmQgYnVnZml4IGJyYW5jaCBuYW1lcwotcHJlZml4ZWQg
YnkgImJ1Z2ZpeC8iLCByZXNwZWN0aXZlbHkuCi0KLUJpbmFyeSBhbmQgc291cmNlIFtwYWNrYWdl
c10oaHR0cHM6Ly9naXRodWIuY29tL3NjaHVoc2NodWgvZ2ZsYWdzL3JlbGVhc2VzKSBhcmUgYXZh
aWxhYmxlIG9uIEdpdEh1Yi4KLQotCi0xNCBKYW51YXJ5IDIwMTQKLS0tLS0tLS0tLS0tLS0tLQot
Ci1UaGUgbWlncmF0aW9uIG9mIHRoZSBidWlsZCBzeXN0ZW0gdG8gQ01ha2UgaXMgYWxtb3N0IGNv
bXBsZXRlLgotV2hhdCByZW1haW5zIHRvIGJlIGRvbmUgaXMgcmV3cml0aW5nIHRoZSB0ZXN0cyBp
biBQeXRob24gc3VjaCB0aGV5IGNhbiBiZQotZXhlY3V0ZWQgb24gbm9uLVVuaXggcGxhdGZvcm1z
IGFuZCBzcGxpdHRpbmcgdGhlbSB1cCBpbnRvIHNlcGFyYXRlIENUZXN0IHRlc3RzLgotVGhvdWdo
IG1lcmdpbmcgdGhlc2UgY2hhbmdlcyBpbnRvIHRoZSBtYXN0ZXIgYnJhbmNoIHlldCByZW1haW5z
IHRvIGJlIGRvbmUsCi1pdCBpcyByZWNvbW1lbmRlZCB0byBhbHJlYWR5IHN0YXJ0IHVzaW5nIHRo
ZQotW2NtYWtlLW1pZ3JhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3NjaHVoc2NodWgvZ2ZsYWdz
L3RyZWUvY21ha2UtbWlncmF0aW9uKSBicmFuY2guCi0KLQotMjAgQXByaWwgMjAxMwotLS0tLS0t
LS0tLS0tLQotCi1Nb3JlIHRoYW4gYSB5ZWFyIGhhcyBwYXN0IHNpbmNlIEkgKEFuZHJlYXMpIHRv
b2sgb3ZlciB0aGUgbWFpbnRlbmFuY2UgZm9yCi1gZ2ZsYWdzYC4gT25seSBmZXcgbWlub3IgY2hh
bmdlcyBoYXZlIGJlZW4gbWFkZSBzaW5jZSB0aGVuLCBtdWNoIHRvIG15IHJlZ3JldC4KLVRvIGdl
dCBtb3JlIGludm9sdmVkIGFuZCBzdGltdWxhdGUgcGFydGljaXBhdGlvbiBpbiB0aGUgZnVydGhl
cgotZGV2ZWxvcG1lbnQgb2YgdGhlIGxpYnJhcnksIEkgbW92ZWQgdGhlIHByb2plY3Qgc291cmNl
IGNvZGUgdG9kYXkgdG8KLVtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1aHNjaHVoL2dm
bGFncykuCi1JIGJlbGlldmUgdGhhdCB0aGUgc3RyZW5ndGhzIG9mIFtHaXRdKGh0dHA6Ly9naXQt
c2NtLmNvbS8pIHdpbGwgYWxsb3cgZm9yIGJldHRlciBjb21tdW5pdHkgY29sbGFib3JhdGlvbgot
YXMgd2VsbCBhcyBlYXNlIHRoZSBpbnRlZ3JhdGlvbiBvZiBjaGFuZ2VzIG1hZGUgYnkgb3RoZXJz
LiBJIGVuY291cmFnZSBldmVyeW9uZQotd2hvIHdvdWxkIGxpa2UgdG8gY29udHJpYnV0ZSB0byBz
ZW5kIG1lIHB1bGwgcmVxdWVzdHMuCi1HaXQncyBsaWdodHdlaWdodCBmZWF0dXJlIGJyYW5jaGVz
IHdpbGwgYWxzbyBwcm92aWRlIHRoZSByaWdodCB0b29sIGZvciBtb3JlCi1yYWRpY2FsIGNoYW5n
ZXMgd2hpY2ggc2hvdWxkIG9ubHkgYmUgbWVyZ2VkIGJhY2sgaW50byB0aGUgbWFzdGVyIGJyYW5j
aAotYWZ0ZXIgdGhlc2UgYXJlIGNvbXBsZXRlIGFuZCBpbXBsZW1lbnQgdGhlIGRlc2lyZWQgYmVo
YXZpb3IuCi0KLVRoZSBTVk4gcmVwb3NpdG9yeSByZW1haW5zIGFjY2Vzc2libGUgYXQgR29vZ2xl
IENvZGUgYW5kIEkgd2lsbCBrZWVwIHRoZQotbWFzdGVyIGJyYW5jaCBvZiB0aGUgR2l0IHJlcG9z
aXRvcnkgaG9zdGVkIGF0IEdpdEh1YiBhbmQgdGhlIHRydW5rIG9mIHRoZQotU3VidmVyc2lvbiBy
ZXBvc2l0b3J5IHN5bmNocm9uaXplZC4gSW5pdGlhbGx5LCBJIHdhcyBnb2luZyB0byBzaW1wbHkg
c3dpdGNoIHRoZQotR29vZ2xlIENvZGUgcHJvamVjdCB0byBHaXQsIGJ1dCBpbiB0aGlzIGNhc2Ug
dGhlIFNWTiByZXBvc2l0b3J5IHdvdWxkIGJlCi1mcm96ZW4gYW5kIGZvcmNlIGV2ZXJ5b25lIHdo
byB3b3VsZCBsaWtlIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgY2hhbmdlcyB0bwotdXNlIEdpdCBh
cyB3ZWxsLiBUaGVyZWZvcmUgSSBkZWNpZGVkIHRvIGhvc3QgdGhlIHB1YmxpYyBHaXQgcmVwb3Np
dG9yeSBhdCBHaXRIdWIKLWluc3RlYWQuCi0KLVBsZWFzZSBjb250aW51ZSB0byByZXBvcnQgYW55
IGlzc3VlcyB3aXRoIGdmbGFncyBvbiBHb29nbGUgQ29kZS4gVGhlIEdpdEh1YiBwcm9qZWN0IHdp
bGwKLW9ubHkgYmUgdXNlZCB0byBob3N0IHRoZSBHaXQgcmVwb3NpdG9yeS4KLQotT25lIG1ham9y
IGNoYW5nZSBvZiB0aGUgcHJvamVjdCBzdHJ1Y3R1cmUgSSBoYXZlIGluIG1pbmQgZm9yIHRoZSBu
ZXh0IHdlZWtzCi1pcyB0aGUgbWlncmF0aW9uIGZyb20gYXV0b3Rvb2xzIHRvIFtDTWFrZV0oaHR0
cDovL3d3dy5jbWFrZS5vcmcvKS4KLUNoZWNrIG91dCB0aGUgKHVuc3RhYmxlISkKLVtjbWFrZS1t
aWdyYXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1aHNjaHVoL2dmbGFncy90cmVlL2NtYWtl
LW1pZ3JhdGlvbikKLWJyYW5jaCBvbiBHaXRIdWIgZm9yIGRldGFpbHMuCi0KLQotMjUgSmFudWFy
eSAyMDEyCi0tLS0tLS0tLS0tLS0tLS0KLQotSSd2ZSBqdXN0IHJlbGVhc2VkIGdmbGFncyAyLjAu
Ci0KLVRoZSBgZ29vZ2xlLWdmbGFnc2AgcHJvamVjdCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZmxh
Z3NgLiAgSQotKGNzaWx2ZXJzKSBhbSBzdGVwcGluZyBkb3duIGFzIG1haW50YWluZXIsIHRvIGJl
IHJlcGxhY2VkIGJ5IEFuZHJlYXMKLVNjaHVoLiAgV2VsY29tZSB0byB0aGUgdGVhbSwgQW5kcmVh
cyEgIEkndmUgc2VlbiB0aGUgZW5lcmd5IHlvdSBoYXZlCi1hcm91bmQgZ2ZsYWdzIGFuZCB0aGUg
aWRlYXMgeW91IGhhdmUgZm9yIHRoZSBwcm9qZWN0IGdvaW5nIGZvcndhcmQsCi1hbmQgbG9vayBm
b3J3YXJkIHRvIGhhdmluZyB5b3Ugb24gdGhlIHRlYW0uCi0KLUkgYnVtcGVkIHRoZSBtYWpvciB2
ZXJzaW9uIG51bWJlciB1cCB0byAyIHRvIHJlZmxlY3QgdGhlIG5ldyBjb21tdW5pdHkKLW93bmVy
c2hpcCBvZiB0aGUgcHJvamVjdC4gIEFsbCB0aGUgW2NoYW5nZXNdKENoYW5nZUxvZy50eHQpCi1h
cmUgcmVsYXRlZCB0byB0aGUgcmVuYW1pbmcuICBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFu
Z2VzIGZyb20KLWdmbGFncyAxLjcuICBJbiBwYXJ0aWN1bGFyLCBJJ3ZlIGtlcHQgdGhlIGNvZGUg
aW4gdGhlIG5hbWVzcGFjZQotYGdvb2dsZWAsIHRob3VnaCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIGl0
IHNob3VsZCBiZSByZW5hbWVkIHRvIGBnZmxhZ3NgLgotSSd2ZSBhbHNvIGtlcHQgdGhlIGAvdXNy
L2xvY2FsL2luY2x1ZGUvZ29vZ2xlL2Agc3ViZGlyZWN0b3J5IGFzCi1zeW5vbnltIG9mIGAvdXNy
L2xvY2FsL2luY2x1ZGUvZ2ZsYWdzL2AsIHRob3VnaCB0aGUgZm9ybWVyIG5hbWUgaGFzCi1iZWVu
IG9ic29sZXRlIGZvciBzb21lIHRpbWUgbm93LgotCi0KLTE4IEphbnVhcnkgMjAxMQotLS0tLS0t
LS0tLS0tLS0tCi0KLVRoZSBgZ29vZ2xlLWdmbGFnc2AgR29vZ2xlIENvZGUgcGFnZSBoYXMgYmVl
biByZW5hbWVkIHRvCi1gZ2ZsYWdzYCwgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBwcm9qZWN0IGJl
aW5nIHJlbmFtZWQgdG8KLWBnZmxhZ3NgLiAgSW4gdGhlIGNvbWluZyB3ZWVrcywgSSdsbCBiZSBz
dGVwcGluZyBkb3duIGFzCi1tYWludGFpbmVyIGZvciB0aGUgZ2ZsYWdzIHByb2plY3QsIGFuZCBh
cyBwYXJ0IG9mIHRoYXQgR29vZ2xlIGlzCi1yZWxpbnF1aXNoaW5nIG93bmVyc2hpcCBvZiB0aGUg
cHJvamVjdDsgaXQgd2lsbCBub3cgYmUgZW50aXJlbHkKLWNvbW11bml0eSBydW4uICBUaGUgbmFt
ZSBjaGFuZ2UgcmVmbGVjdHMgdGhhdCBzaGlmdC4KLQotCi0yMCBEZWNlbWJlciAyMDExCi0tLS0t
LS0tLS0tLS0tLS0tCi0KLUkndmUganVzdCByZWxlYXNlZCBnZmxhZ3MgMS43LiAgVGhpcyBpcyBh
IG1pbm9yIHJlbGVhc2U7IHRoZSBtYWpvcgotY2hhbmdlIGlzIHRoYXQgYENvbW1hbmRMaW5lRmxh
Z0luZm9gIG5vdyBleHBvcnRzIHRoZSBhZGRyZXNzIGluIG1lbW9yeQotd2hlcmUgdGhlIGZsYWcg
aXMgbG9jYXRlZC4gIFRoZXJlIGhhcyBhbHNvIGJlZW4gYSBidWdmaXggaW52b2x2aW5nCi12ZXJ5
IGxvbmcgLS1oZWxwIHN0cmluZ3MsIGFuZCBzb21lIG90aGVyIG1pbm9yIFtjaGFuZ2VzXShDaGFu
Z2VMb2cudHh0KS4KLQotMjkgSnVseSAyMDExCi0tLS0tLS0tLS0tLS0KLQotSSd2ZSBqdXN0IHJl
bGVhc2VkIGdmbGFncyAxLjYuICBUaGUgbWFqb3IgbmV3IGZlYXR1cmUgaW4gdGhpcyByZWxlYXNl
Ci1pcyBzdXBwb3J0IGZvciBzZXR0aW5nIHZlcnNpb24gaW5mbywgc28gdGhhdCAtLXZlcnNpb24g
ZG9lcyBzb21ldGhpbmcKLXVzZWZ1bC4KLQotT25lIG1pbm9yIGNoYW5nZSBoYXMgcmVxdWlyZWQg
YnVtcGluZyB0aGUgbGlicmFyeSBudW1iZXI6Ci1gUmVwYXJzZUNvbW1hbmRsaW5lRmxhZ3NgIG5v
dyByZXR1cm5zIGB2b2lkYCBpbnN0ZWFkIG9mIGBpbnRgICh0aGUgaW50Ci1yZXR1cm4gdmFsdWUg
d2FzIGFsd2F5cyBtZWFuaW5nbGVzcykuICBUaG91Z2ggSSBkb3VidCBhbnlvbmUgZXZlciB1c2Vk
Ci10aGlzIChtZWFuaW5nbGVzcykgcmV0dXJuIHZhbHVlLCB0ZWNobmljYWxseSBpdCdzIGEgY2hh
bmdlIHRvIHRoZSBBQkkKLXRoYXQgcmVxdWlyZXMgYSB2ZXJzaW9uIGJ1bXAuICBBIGJpdCBzYWQu
Ci0KLVRoZXJlJ3MgYWxzbyBhIHByb2NlZHVyYWwgY2hhbmdlIHdpdGggdGhpcyByZWxlYXNlOiBJ
J3ZlIGNoYW5nZWQgdGhlCi1pbnRlcm5hbCB0b29scyB1c2VkIHRvIGludGVncmF0ZSBHb29nbGUt
c3VwcGxpZWQgcGF0Y2hlcyBmb3IgZ2ZsYWdzCi1pbnRvIHRoZSBvcGVuc291cmNlIHJlbGVhc2Uu
ICBUaGVzZSBuZXcgdG9vbHMgc2hvdWxkIHJlc3VsdCBpbiBtb3JlCi1mcmVxdWVudCB1cGRhdGVz
IHdpdGggYmV0dGVyIGNoYW5nZSBkZXNjcmlwdGlvbnMuICBUaGV5IHdpbGwgYWxzbwotcmVzdWx0
IGluIGZ1dHVyZSBgQ2hhbmdlTG9nYCBlbnRyaWVzIGJlaW5nIG11Y2ggbW9yZSB2ZXJib3NlIChm
b3IgYmV0dGVyCi1vciBmb3Igd29yc2UpLgotCi1TZWUgdGhlIFtDaGFuZ2VMb2ddKENoYW5nZUxv
Zy50eHQpIGZvciBhIGZ1bGwgbGlzdCBvZiBjaGFuZ2VzIGZvciB0aGlzIHJlbGVhc2UuCi0KLTI0
IEphbnVhcnkgMjAxMQotLS0tLS0tLS0tLS0tLS0tCi0KLUkndmUganVzdCByZWxlYXNlZCBnZmxh
Z3MgMS41LiAgVGhpcyByZWxlYXNlIGhhcyBvbmx5IG1pbm9yIGNoYW5nZXMKLWZyb20gMS40LCBp
bmNsdWRpbmcgc29tZSBzbGlnaHRseSBiZXR0ZXIgcmVwb3J0aW5nIGluIC0taGVscCwgYW5kCi1h
biBuZXcgbWVtb3J5LWNsZWFudXAgZnVuY3Rpb24gdGhhdCBjYW4gaGVscCB3aGVuIHJ1bm5pbmcg
Z2ZsYWdzLXVzaW5nCi1saWJyYXJpZXMgdW5kZXIgdmFsZ3JpbmQuICBUaGUgbWFqb3IgY2hhbmdl
IGlzIHRvIGZpeCB1cCB0aGUgbWFjcm9zCi0oYERFRklORV9ib29sYCBhbmQgdGhlIGxpa2UpIHRv
IHdvcmsgbW9yZSByZWxpYWJseSBpbnNpZGUgbmFtZXNwYWNlcy4KLQotSWYgeW91IGhhdmUgbm90
IGhhZCBhIHByb2JsZW0gd2l0aCB0aGVzZSBtYWNyb3MsIGFuZCBkb24ndCBuZWVkIGFueSBvZgot
dGhlIG90aGVyIGNoYW5nZXMgZGVzY3JpYmVkLCB0aGVyZSBpcyBubyBuZWVkIHRvIHVwZ3JhZGUu
ICBTZWUgdGhlCi1bQ2hhbmdlTG9nXShDaGFuZ2VMb2cudHh0KSBmb3IgYSBmdWxsIGxpc3Qgb2Yg
Y2hhbmdlcyBmb3IgdGhpcyByZWxlYXNlLgotCi0xMSBPY3RvYmVyIDIwMTAKLS0tLS0tLS0tLS0t
LS0tLQotCi1JJ3ZlIGp1c3QgcmVsZWFzZWQgZ2ZsYWdzIDEuNC4gIFRoaXMgcmVsZWFzZSBoYXMg
b25seSBtaW5vciBjaGFuZ2VzCi1mcm9tIDEuMywgaW5jbHVkaW5nIHNvbWUgZG9jdW1lbnRhdGlv
biB0d2Vha3MgYW5kIHNvbWUgd29yayB0byBtYWtlCi10aGUgbGlicmFyeSBzbWFsbGVyLiAgSWYg
MS4zIGlzIHdvcmtpbmcgd2VsbCBmb3IgeW91LCB0aGVyZSdzIG5vCi1wYXJ0aWN1bGFyIHJlYXNv
biB0byB1cGdyYWRlLgotCi00IEphbnVhcnkgMjAxMAotLS0tLS0tLS0tLS0tLS0KLQotSSd2ZSBq
dXN0IHJlbGVhc2VkIGdmbGFncyAxLjMuICBnZmxhZ3Mgbm93IGNvbXBpbGVzIHVuZGVyIE1TVkMs
IGFuZAotYWxsIHRlc3RzIHBhc3MuICBJICoqcmVhbGx5KiogbmV2ZXIgdGhvdWdodCBub24tdW5p
eC15IFdpbmRvd3MgZm9sa3MKLXdvdWxkIHdhbnQgZ2ZsYWdzLCBidXQgYXQgbGVhc3Qgc29tZSBv
ZiB0aGVtIGRvLgotCi1UaGUgbWFqb3IgbmV3cywgdGhvdWdoLCBpcyB0aGF0IEkndmUgc2VwYXJh
dGVkIG91dCB0aGUgcHl0aG9uIHBhY2thZ2UKLWludG8gaXRzIG93biBsaWJyYXJ5LCBbcHl0aG9u
LWdmbGFnc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5dGhvbi1nZmxhZ3MpLgotSWYgeW91
J3JlIGludGVyZXN0ZWQgaW4gdGhlIFB5dGhvbiB2ZXJzaW9uIG9mIGdmbGFncywgdGhhdCdzIHRo
ZSBwbGFjZSB0bwotZ2V0IGl0IG5vdy4KLQotMTAgU2VwdGVtYmVyIDIwMDkKLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLUkndmUganVzdCByZWxlYXNlZCBnZmxhZ3MgMS4yLiAgVGhlIG1ham9yIGNoYW5n
ZSBmcm9tIGdmbGFncyAxLjEgaXMgaXQKLW5vdyBjb21waWxlcyB1bmRlciBNaW5HVyAoYXMgd2Vs
bCBhcyBjeWd3aW4pLCBhbmQgYWxsIHRlc3RzIHBhc3MuICBJCi1uZXZlciB0aG91Z2h0IFdpbmRv
d3MgZm9sa3Mgd291bGQgd2FudCB1bml4LXN0eWxlIGNvbW1hbmQtbGluZSBmbGFncywKLXNpbmNl
IHRoZXkncmUgc28gZGlmZmVyZW50IGZyb20gdGhlIFdpbmRvd3Mgc3R5bGUsIGJ1dCBJIGd1ZXNz
IEkgd2FzCi13cm9uZyEKLQotVGhlIG90aGVyIGNoYW5nZXMgYXJlIG1pbm9yLCBzdWNoIGFzIHN1
cHBvcnQgZm9yIC0taHRtbHhtbCBpbiB0aGUKLXB5dGhvbiB2ZXJzaW9uIG9mIGdmbGFncy4KLQot
MTUgQXByaWwgMjAwOQotLS0tLS0tLS0tLS0tLQotCi1JJ3ZlIGp1c3QgcmVsZWFzZWQgZ2ZsYWdz
IDEuMS4gIEl0IGhhcyBvbmx5IG1pbm9yIGNoYW5nZXMgZmRyb20gZ2ZsYWdzCi0xLjAgKHNlZSB0
aGUgW0NoYW5nZUxvZ10oQ2hhbmdlTG9nLnR4dCkgZm9yIGRldGFpbHMpLgotVGhlIG1ham9yIGNo
YW5nZSBpcyB0aGF0IEkgbW92ZWQgdG8gYSBuZXcgc3lzdGVtIGZvciBjcmVhdGluZyAuZGViIGFu
ZCAucnBtIGZpbGVzLgotVGhpcyBhbGxvd3MgbWUgdG8gY3JlYXRlIHg4NlxfNjQgZGViIGFuZCBy
cG0gZmlsZXMuCi0KLUluIHRoZSBwcm9jZXNzIG9mIG1vdmluZyB0byB0aGlzIG5ldyBzeXN0ZW0s
IEkgbm90aWNlZCBhbgotaW5jb25zaXN0ZW5jeTogdGhlIHRhci5neiBhbmQgLnJwbSBmaWxlcyBj
cmVhdGVkIGxpYnJhcmllcyBuYW1lZAotbGliZ2ZsYWdzLnNvLCBidXQgdGhlIGRlYiBmaWxlIGNy
ZWF0ZWQgbGliZ29vZ2xlLWdmbGFncy5zby4gIEkgaGF2ZQotZml4ZWQgdGhlIGRlYiBmaWxlIHRv
IGNyZWF0ZSBsaWJyYXJpZXMgbGlrZSB0aGUgb3RoZXJzLiAgSSdtIG5vIGV4cGVydAotaW4gZGVi
aWFuIHBhY2thZ2luZywgYnV0IEkgYmVsaWV2ZSB0aGlzIGhhcyBjYXVzZWQgdGhlIHBhY2thZ2Ug
bmFtZSB0bwotY2hhbmdlIGFzIHdlbGwuICBQbGVhc2UgbGV0IG1lIGtub3cgKGF0Ci1bW21haWx0
bzpnb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29nbGUtZ2ZsYWdzQGdv
b2dsZWdyb3Vwcy5jb20pCi1nb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb21dKSBpZiB0aGlz
IGNhdXNlcyBwcm9ibGVtcyBmb3IgeW91IC0tCi1lc3BlY2lhbGx5IGlmIHlvdSBrbm93IG9mIGEg
Zml4ISAgSSB3b3VsZCBiZSBoYXBweSB0byBjaGFuZ2UgdGhlIGRlYgotcGFja2FnZXMgdG8gYWRk
IHN5bWxpbmtzIGZyb20gdGhlIG9sZCBsaWJyYXJ5IG5hbWUgdG8gdGhlIG5ldwotKGxpYmdvb2ds
ZS1nZmxhZ3Muc28gLT4gbGliZ2ZsYWdzLnNvKSwgYnV0IHRoYXQgaXMgYmV5b25kIG15IGtub3ds
ZWRnZQotb2YgaG93IHRvIG1ha2UgLmRlYnMuCi0KLUlmIHlvdSd2ZSB0cmllZCB0byBpbnN0YWxs
IGEgLnJwbSBvciAuZGViIGFuZCBpdCBkb2Vzbid0IHdvcmsgZm9yIHlvdSwKLWxldCBtZSBrbm93
LiAgSSdtIGV4Y2l0ZWQgdG8gZmluYWxseSBoYXZlIDY0LWJpdCBwYWNrYWdlIGZpbGVzLCBidXQK
LXRoZXJlIG1heSBzdGlsbCBiZSBzb21lIHdyaW5rbGVzIGluIHRoZSBuZXcgc3lzdGVtIHRvIGly
b24gb3V0LgotCi0xIE9jdG9iZXIgMjAwOAotLS0tLS0tLS0tLS0tLS0KLQotZ2ZsYWdzIDEuMHJj
MiB3YXMgb3V0IGZvciBhIGZldyB3ZWVrcyB3aXRob3V0IGFueSBpc3N1ZXMsIHNvIGdmbGFncwot
MS4wIGlzIG5vdyByZWxlYXNlZC4gIFRoaXMgaXMgbXVjaCBsaWtlIGdmbGFncyAwLjkuICBUaGUg
bWFqb3IgY2hhbmdlCi1pcyB0aGF0IHRoZSAuaCBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgZnJvbSBg
L3Vzci9pbmNsdWRlL2dvb2dsZWAgdG8KLWAvdXNyL2luY2x1ZGUvZ2ZsYWdzYC4gIFdoaWxlIEkg
aGF2ZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQotZm9yd2FyZGluZyBoZWFkZWRzIGluIHBsYWNl
LCBwbGVhc2UgcmV3cml0ZSBleGlzdGluZyBjb2RlIHRvIHNheQotYGBgCi0gICAjaW5jbHVkZSA8
Z2ZsYWdzL2dmbGFncy5oPgotYGBgCi1pbnN0ZWFkIG9mCi1gYGAKLSAgICNpbmNsdWRlIDxnb29n
bGUvZ2ZsYWdzLmg+Ci1gYGAKLQotSSd2ZSBrZXB0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZSB0byBn
b29nbGUuICBZb3UgY2FuIHN0aWxsIGNoYW5nZSB3aXRoCi13aXRoIHRoZSBhcHByb3ByaWF0ZSBm
bGFnIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IChgLi9jb25maWd1cmUKLS0taGVscGAgdG8gc2Vl
IHRoZSBmbGFncykuICBJZiB5b3UgaGF2ZSBmZWVkYmFjayBhcyB0byB3aGV0aGVyIHRoZQotZGVm
YXVsdCBuYW1lc3BhY2Ugc2hvdWxkIGNoYW5nZSB0byBnZmxhZ3MsIHdoaWNoIHdvdWxkIGJlIGEK
LW5vbi1iYWNrd2FyZHMtY29tcGF0aWJsZSBjaGFuZ2UsIHNlbmQgbWFpbCB0bwotYGdvb2dsZS1n
ZmxhZ3NAZ29vZ2xlZ3JvdXBzLmNvbWAhCi0KLVZlcnNpb24gMS4wIGFsc28gaGFzIHNvbWUgbmVh
dCBuZXcgZmVhdHVyZXMsIGxpa2Ugc3VwcG9ydCBmb3IgYmFzaAotY29tbWFuZGxpbmUtY29tcGxl
dGlvbiBvZiBoZWxwIGZsYWdzLiAgU2VlIHRoZSBbQ2hhbmdlTG9nXShDaGFuZ2VMb2cudHh0KQot
Zm9yIG1vcmUgZGV0YWlscy4KLQotSWYgSSBkb24ndCBoZWFyIGFueSBiYWQgbmV3cyBmb3IgYSBm
ZXcgd2Vla3MsIEknbGwgcmVsZWFzZSAxLjAtZmluYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvUkVB
RE1FX3J1bnRpbWUudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL1JFQURNRV9ydW50aW1lLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDI1NTZiMmU4ZDQ5ZWY3YWQ4MjcyNjFiMDY5NDk1M2JjMmY1NjNh
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2Uv
UkVBRE1FX3J1bnRpbWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1UaGlzIHBh
Y2thZ2UgY29udGFpbnMgcnVudGltZSBsaWJyYXJpZXMgb25seSB3aGljaCBhcmUgcmVxdWlyZWQK
LWJ5IGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGVzZSBsaWJyYXJpZXMgZm9yIHRoZSBjb21tYW5k
bGluZSBmbGFncwotcHJvY2Vzc2luZy4gSWYgeW91IHdhbnQgdG8gZGV2ZWxvcCBzdWNoIGFwcGxp
Y2F0aW9uLCBkb3dubG9hZAotYW5kIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IHBhY2thZ2UgaW5z
dGVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9jb25maWcuY21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvY29uZmln
LmNtYWtlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQxOWMyYTU5MTgyZTZj
MTU3NzFkYWZmZGFkMWMzN2FkYWE1ZWEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9jb25maWcuY21ha2UuaW4KKysrIC9kZXYvbnVsbApAQCAt
MSwxMTEgKzAsMCBAQAotIyMgZ2ZsYWdzIENNYWtlIGNvbmZpZ3VyYXRpb24gZmlsZQotCi0jIGxp
YnJhcnkgdmVyc2lvbiBpbmZvcm1hdGlvbgotc2V0IChAUEFDS0FHRV9OQU1FQF9WRVJTSU9OX1NU
UklORyAiQFBBQ0tBR0VfVkVSU0lPTkAiKQotc2V0IChAUEFDS0FHRV9OQU1FQF9WRVJTSU9OX01B
Sk9SICBAUEFDS0FHRV9WRVJTSU9OX01BSk9SQCkKLXNldCAoQFBBQ0tBR0VfTkFNRUBfVkVSU0lP
Tl9NSU5PUiAgQFBBQ0tBR0VfVkVSU0lPTl9NSU5PUkApCi1zZXQgKEBQQUNLQUdFX05BTUVAX1ZF
UlNJT05fUEFUQ0ggIEBQQUNLQUdFX1ZFUlNJT05fUEFUQ0hAKQotCi0jIGltcG9ydCB0YXJnZXRz
Ci1pbmNsdWRlICgiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS9AUEFDS0FHRV9OQU1FQC1leHBv
cnQuY21ha2UiKQotCi0jIGluc3RhbGxhdGlvbiBwcmVmaXgKLWdldF9maWxlbmFtZV9jb21wb25l
bnQgKENNQUtFX0NVUlJFTlRfTElTVF9ESVIgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0ZJTEV9IiBQ
QVRIKQotZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCAoX0lOU1RBTExfUFJFRklYICIke0NNQUtFX0NV
UlJFTlRfTElTVF9ESVJ9L0BJTlNUQUxMX1BSRUZJWF9SRUwyQ09ORklHX0RJUkAiIEFCU09MVVRF
KQotCi0jIGluY2x1ZGUgZGlyZWN0b3J5Ci0jCi0jIE5ld2VyIHZlcnNpb25zIG9mIENNYWtlIHNl
dCB0aGUgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgcHJvcGVydHkKLSMgb2YgdGhlIGlt
cG9ydGVkIHRhcmdldHMuIEl0IGlzIGhlbmNlIG5vdCBuZWNlc3NhcnkgdG8gYWRkIHRoaXMgcGF0
aAotIyBtYW51YWxseSB0byB0aGUgaW5jbHVkZSBzZWFyY2ggcGF0aCBmb3IgdGFyZ2V0cyB3aGlj
aCBsaW5rIHRvIGdmbGFncy4KLXNldCAoQFBBQ0tBR0VfTkFNRUBfSU5DTFVERV9ESVIgIiR7X0lO
U1RBTExfUFJFRklYfS9ASU5DTFVERV9JTlNUQUxMX0RJUkAiKQotCi0jIGRlZmF1bHQgc2V0dGlu
Z3MKLWlmIChOT1QgREVGSU5FRCBAUEFDS0FHRV9OQU1FQF9TSEFSRUQpCi0gIGlmIChUQVJHRVQg
QFBBQ0tBR0VfTkFNRUAtc3RhdGljIE9SIFRBUkdFVCBAUEFDS0FHRV9OQU1FQF9ub3RocmVhZHMt
c3RhdGljKQotICAgIHNldCAoQFBBQ0tBR0VfTkFNRUBfU0hBUkVEIEZBTFNFKQotICBlbHNlICgp
Ci0gICAgc2V0IChAUEFDS0FHRV9OQU1FQF9TSEFSRUQgVFJVRSkKLSAgZW5kaWYgKCkKLWVuZGlm
ICgpCi1pZiAoTk9UIERFRklORUQgQFBBQ0tBR0VfTkFNRUBfTk9USFJFQURTKQotICBpZiAoVEFS
R0VUIEBQQUNLQUdFX05BTUVALXN0YXRpYyBPUiBUQVJHRVQgQFBBQ0tBR0VfTkFNRUAtc2hhcmVk
KQotICAgIHNldCAoQFBBQ0tBR0VfTkFNRUBfTk9USFJFQURTIEZBTFNFKQotICBlbHNlICgpCi0g
ICAgc2V0IChAUEFDS0FHRV9OQU1FQF9OT1RIUkVBRFMgVFJVRSkKLSAgZW5kaWYgKCkKLWVuZGlm
ICgpCi0KLSMgY2hvb3NlIGltcG9ydGVkIGxpYnJhcnkgdGFyZ2V0Ci1pZiAoTk9UIEBQQUNLQUdF
X05BTUVAX1RBUkdFVCkKLSAgaWYgKEBQQUNLQUdFX05BTUVAX1NIQVJFRCkKLSAgICBpZiAoQFBB
Q0tBR0VfTkFNRUBfTk9USFJFQURTKQotICAgICAgc2V0IChAUEFDS0FHRV9OQU1FQF9UQVJHRVQg
QFBBQ0tBR0VfTkFNRUBfbm90aHJlYWRzLXNoYXJlZCkKLSAgICBlbHNlICgpCi0gICAgICBzZXQg
KEBQQUNLQUdFX05BTUVAX1RBUkdFVCBAUEFDS0FHRV9OQU1FQC1zaGFyZWQpCi0gICAgZW5kaWYg
KCkKLSAgZWxzZSAoKQotICAgIGlmIChAUEFDS0FHRV9OQU1FQF9OT1RIUkVBRFMpCi0gICAgICBz
ZXQgKEBQQUNLQUdFX05BTUVAX1RBUkdFVCBAUEFDS0FHRV9OQU1FQF9ub3RocmVhZHMtc3RhdGlj
KQotICAgIGVsc2UgKCkKLSAgICAgIHNldCAoQFBBQ0tBR0VfTkFNRUBfVEFSR0VUIEBQQUNLQUdF
X05BTUVALXN0YXRpYykKLSAgICBlbmRpZiAoKQotICBlbmRpZiAoKQotZW5kaWYgKCkKLWlmIChO
T1QgVEFSR0VUICR7QFBBQ0tBR0VfTkFNRUBfVEFSR0VUfSkKLSAgbWVzc2FnZSAoRkFUQUxfRVJS
T1IgIllvdXIgQFBBQ0tBR0VfTkFNRUAgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSAk
e0BQQUNLQUdFX05BTUVAX1RBUkdFVH0gbGlicmFyeSB0YXJnZXQhIgotICAgICAgICAgICAgICAg
ICAgICAgICAiIFRyeSBhIGRpZmZlcmVudCBjb21iaW5hdGlvbiBvZiBAUEFDS0FHRV9OQU1FQF9T
SEFSRUQgYW5kIEBQQUNLQUdFX05BTUVAX05PVEhSRUFEUy4iKQotZW5kaWYgKCkKLQotIyBhZGQg
bW9yZSBjb252ZW5pZW50ICJAUEFDS0FHRV9OQU1FQCIgaW1wb3J0IHRhcmdldAotaWYgKE5PVCBU
QVJHRVQgQFBBQ0tBR0VfTkFNRUApCi0gIGlmIChAUEFDS0FHRV9OQU1FQF9TSEFSRUQpCi0gICAg
YWRkX2xpYnJhcnkgKEBQQUNLQUdFX05BTUVAIFNIQVJFRCBJTVBPUlRFRCkKLSAgZWxzZSAoKQot
ICAgIGFkZF9saWJyYXJ5IChAUEFDS0FHRV9OQU1FQCBTVEFUSUMgSU1QT1JURUQpCi0gIGVuZGlm
ICgpCi0gICMgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgZ2V0X3RhcmdldF9wcm9w
ZXJ0eSAoX0BQQUNLQUdFX05BTUVAX0lOQ0xVREVTICR7QFBBQ0tBR0VfTkFNRUBfVEFSR0VUfSBJ
TlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUykKLSAgaWYgKF9AUEFDS0FHRV9OQU1FQF9JTkNM
VURFUykKLSAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoQFBBQ0tBR0VfTkFNRUAgUFJPUEVSVElF
UwotICAgICAgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgIiR7X0BQQUNLQUdFX05BTUVA
X0lOQ0xVREVTfSIKLSAgICApCi0gIGVuZGlmICgpCi0gIHVuc2V0IChfQFBBQ0tBR0VfTkFNRUBf
SU5DTFVERVMpCi0gICMgc2V0IGNvbmZpZ3VyYXRpb24gc3BlY2lmaWMgcHJvcGVydGllcwotICBn
ZXRfdGFyZ2V0X3Byb3BlcnR5IChfQFBBQ0tBR0VfTkFNRUBfQ09ORklHVVJBVElPTlMgJHtAUEFD
S0FHRV9OQU1FQF9UQVJHRVR9IElNUE9SVEVEX0NPTkZJR1VSQVRJT05TKQotICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMgKEBQQUNLQUdFX05BTUVAIFBST1BFUlRJRVMgSU1QT1JURURfQ09ORklHVVJB
VElPTlMgIiR7X0BQQUNLQUdFX05BTUVAX0NPTkZJR1VSQVRJT05TfSIpCi0gIGZvcmVhY2ggKF9A
UEFDS0FHRV9OQU1FQF9DT05GSUcgSU4gTElTVFMgX0BQQUNLQUdFX05BTUVAX0NPTkZJR1VSQVRJ
T05TKQotICAgICMgSU1QT1JURURfTE9DQVRJT05fPGNvbmZpZz4KLSAgICBnZXRfdGFyZ2V0X3By
b3BlcnR5IChfQFBBQ0tBR0VfTkFNRUBfTE9DQVRJT04gJHtAUEFDS0FHRV9OQU1FQF9UQVJHRVR9
IElNUE9SVEVEX0xPQ0FUSU9OXyR7X0BQQUNLQUdFX05BTUVAX0NPTkZJR30pCi0gICAgaWYgKF9A
UEFDS0FHRV9OQU1FQF9MT0NBVElPTikKLSAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhAUEFD
S0FHRV9OQU1FQCBQUk9QRVJUSUVTCi0gICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OXyR7X0BQQUNL
QUdFX05BTUVAX0NPTkZJR30gIiR7X0BQQUNLQUdFX05BTUVAX0xPQ0FUSU9OfSIKLSAgICAgICkK
LSAgICBlbmRpZiAoKQotICAgIHVuc2V0IChfQFBBQ0tBR0VfTkFNRUBfTE9DQVRJT04pCi0gICAg
IyBJTVBPUlRFRF9MSU5LX0lOVEVSRkFDRV9MQU5HVUFHRVNfPGNvbmZpZz4gKHN0YXRpYykKLSAg
ICBnZXRfdGFyZ2V0X3Byb3BlcnR5IChfQFBBQ0tBR0VfTkFNRUBfTEFOR1VBR0VTICR7QFBBQ0tB
R0VfTkFNRUBfVEFSR0VUfSBJTVBPUlRFRF9MSU5LX0lOVEVSRkFDRV9MQU5HVUFHRVNfJHtfQFBB
Q0tBR0VfTkFNRUBfQ09ORklHfSkKLSAgICBpZiAoX0BQQUNLQUdFX05BTUVAX0xBTkdVQUdFUykK
LSAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhAUEFDS0FHRV9OQU1FQCBQUk9QRVJUSUVTCi0g
ICAgICAgIElNUE9SVEVEX0xJTktfSU5URVJGQUNFX0xBTkdVQUdFU18ke19AUEFDS0FHRV9OQU1F
QF9DT05GSUd9ICIke19AUEFDS0FHRV9OQU1FQF9MQU5HVUFHRVN9IgotICAgICAgKQotICAgIGVu
ZGlmICgpCi0gICAgdW5zZXQgKF9AUEFDS0FHRV9OQU1FQF9MQU5HVUFHRVMpCi0gICAgIyBJTVBP
UlRFRF9TT05BTUVfPGNvbmZpZz4gKHNoYXJlZCkKLSAgICBnZXRfdGFyZ2V0X3Byb3BlcnR5IChf
QFBBQ0tBR0VfTkFNRUBfU09OQU1FICR7QFBBQ0tBR0VfTkFNRUBfVEFSR0VUfSBJTVBPUlRFRF9T
T05BTUVfJHtfQFBBQ0tBR0VfTkFNRUBfQ09ORklHfSkKLSAgICBpZiAoX0BQQUNLQUdFX05BTUVA
X1NPTkFNRSkKLSAgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhAUEFDS0FHRV9OQU1FQCBQUk9Q
RVJUSUVTCi0gICAgICAgIElNUE9SVEVEX1NPTkFNRV8ke19AUEFDS0FHRV9OQU1FQF9DT05GSUd9
ICIke19AUEFDS0FHRV9OQU1FQF9TT05BTUV9IgotICAgICAgKQotICAgIGVuZGlmICgpCi0gICAg
dW5zZXQgKF9AUEFDS0FHRV9OQU1FQF9TT05BTUUpCi0gIGVuZGZvcmVhY2ggKCkKLSAgdW5zZXQg
KF9AUEFDS0FHRV9OQU1FQF9DT05GSUdVUkFUSU9OUykKLWVuZGlmICgpCi0KLSMgYWxpYXMgZm9y
IGRlZmF1bHQgaW1wb3J0IHRhcmdldCB0byBiZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgQ01ha2Ug
cGFja2FnZSBjb25maWd1cmF0aW9ucwotc2V0IChAUEFDS0FHRV9OQU1FQF9MSUJSQVJJRVMgIiR7
QFBBQ0tBR0VfTkFNRUBfVEFSR0VUfSIpCi0KLSMgdW5zZXQgcHJpdmF0ZSB2YXJpYWJsZXMKLXVu
c2V0IChfSU5TVEFMTF9QUkVGSVgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvZXhlY3V0ZV90ZXN0LmNt
YWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxh
Z3Mvc3JjL2NtYWtlL2V4ZWN1dGVfdGVzdC5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGYwMDhjZjQ2NWU0NDI0NTlmNzg4MTdiNDM5NDg5MDk2MGQzZjk5MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvZXhlY3V0ZV90ZXN0
LmNtYWtlCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIHNhbml0aXplIHN0cmluZyBzdG9yZWQgaW4gdmFyaWFibGUgZm9yIHVzZSBpbiByZWd1
bGFyIGV4cHJlc3Npb24uCi1tYWNybyAoc2FuaXRpemVfZm9yX3JlZ2V4IFNUUlZBUikKLSAgc3Ry
aW5nIChSRUdFWCBSRVBMQUNFICIoWy4rKj9eJCgpXSkiICJcXFxcXFwxIiAke1NUUlZBUn0gIiR7
JHtTVFJWQVJ9fSIpCi1lbmRtYWNybyAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgc2Ny
aXB0IGFyZ3VtZW50cwotaWYgKE5PVCBDT01NQU5EKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAi
VGVzdCBjb21tYW5kIG5vdCBzcGVjaWZpZWQhIikKLWVuZGlmICgpCi1pZiAoTk9UIERFRklORUQg
RVhQRUNURURfUkMpCi0gIHNldCAoRVhQRUNURURfUkMgMCkKLWVuZGlmICgpCi1pZiAoRVhQRUNU
RURfT1VUUFVUKQotICBzYW5pdGl6ZV9mb3JfcmVnZXgoRVhQRUNURURfT1VUUFVUKQotZW5kaWYg
KCkKLWlmIChVTkVYUEVDVEVEX09VVFBVVCkKLSAgc2FuaXRpemVfZm9yX3JlZ2V4KFVORVhQRUNU
RURfT1VUUFVUKQotZW5kaWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNldCBhIGZl
dyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHVzZWZ1bCBmb3IgLS10cnlmcm9tZW52KQotc2V0IChF
TlZ7RkxBR1NfdW5kZWZva30gImZvbyxiYXIiKQotc2V0IChFTlZ7RkxBR1Nfd2VpcmRvfSAgIiIp
Ci1zZXQgKEVOVntGTEFHU192ZXJzaW9ufSAidHJ1ZSIpCi1zZXQgKEVOVntGTEFHU19oZWxwfSAg
ICAiZmFsc2UiKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZXhlY3V0ZSB0ZXN0IGNvbW1h
bmQKLWV4ZWN1dGVfcHJvY2VzcygKLSAgQ09NTUFORCAke0NPTU1BTkR9Ci0gIFJFU1VMVF9WQVJJ
QUJMRSBSQwotICBPVVRQVVRfVkFSSUFCTEUgT1VUUFVUCi0gIEVSUk9SX1ZBUklBQkxFICBPVVRQ
VVQKLSkKLQotaWYgKE9VVFBVVCkKLSAgbWVzc2FnZSAoIiR7T1VUUFVUfSIpCi1lbmRpZiAoKQot
Ci0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgY2hlY2sgdGVzdCByZXN1bHQKLWlmIChOT1QgUkMg
RVFVQUwgRVhQRUNURURfUkMpCi0gIHN0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENPTU1BTkQgIiR7
Q09NTUFORH0iKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiQ29tbWFuZDpcblx0JHtDT01NQU5E
fVxuRXhpdCBzdGF0dXMgaXMgJHtSQ30sIGV4cGVjdGVkICR7RVhQRUNURURfUkN9IikKLWVuZGlm
ICgpCi1pZiAoRVhQRUNURURfT1VUUFVUIEFORCBOT1QgT1VUUFVUIE1BVENIRVMgIiR7RVhQRUNU
RURfT1VUUFVUfSIpCi0gIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJUZXN0IG91dHB1dCBkb2VzIG5v
dCBtYXRjaCBleHBlY3RlZCBvdXRwdXQ6ICR7RVhQRUNURURfT1VUUFVUfSIpCi1lbmRpZiAoKQot
aWYgKFVORVhQRUNURURfT1VUUFVUIEFORCBPVVRQVVQgTUFUQ0hFUyAiJHtVTkVYUEVDVEVEX09V
VFBVVH0iKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiVGVzdCBvdXRwdXQgbWF0Y2hlcyB1bmV4
cGVjdGVkIG91dHB1dDogJHtVTkVYUEVDVEVEX09VVFBVVH0iKQotZW5kaWYgKCkKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvcGFja2FnZS5jbWFrZS5pbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy9jbWFrZS9wYWNrYWdlLmNtYWtlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YWVjNzkyNWUzNGY3YzQwZTYzM2M1ZjNiZjY1MWQ3YzNiM2Q5YTBjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9wYWNrYWdlLmNtYWtlLmluCisr
KyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBQZXItZ2VuZXJhdG9yIENQYWNrIGNvbmZp
Z3VyYXRpb24gZmlsZS4gU2VlIENQQUNLX1BST0pFQ1RfQ09ORklHX0ZJTEUgZG9jdW1lbnRlZCBh
dAotIyBodHRwOi8vd3d3LmNtYWtlLm9yZy9jbWFrZS9oZWxwL3YyLjguMTIvY3BhY2suaHRtbCN2
YXJpYWJsZTpDUEFDS19QUk9KRUNUX0NPTkZJR19GSUxFCi0jCi0jIEFsbCBjb21tb24gQ1BBQ0tf
KiB2YXJpYWJsZXMgYXJlIHNldCBpbiBDTWFrZUxpc3RzLnR4dCBhbHJlYWR5LiBUaGlzIGZpbGUg
b25seQotIyBvdmVycmlkZXMgc29tZSBvZiB0aGVzZSB0byBwcm92aWRlIHBhY2thZ2UgZ2VuZXJh
dG9yIHNwZWNpZmljIHNldHRpbmdzLgotCi0jIHdoZXRoZXIgcGFja2FnZSBjb250YWlucyBhbGwg
ZGV2ZWxvcG1lbnQgZmlsZXMgb3Igb25seSBydW50aW1lIGZpbGVzCi1zZXQgKERFVkVMIEBJTlNU
QUxMX0hFQURFUlNAKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBNYWMgT1MgWCBwYWNr
YWdlCi1pZiAoQ1BBQ0tfR0VORVJBVE9SIE1BVENIRVMgIlBhY2thZ2VNYWtlcnxEcmFnTkRyb3Ai
KQotCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9GSUxFX05BTUUgIiR7Q1BBQ0tfUEFDS0FHRV9OQU1F
fSIpCi0gIGlmIChERVZFTCkKLSAgICBzZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICIke0NQ
QUNLX1BBQ0tBR0VfRklMRV9OQU1FfS1kZXZlbCIpCi0gIGVuZGlmICgpCi0gIHNldCAoQ1BBQ0tf
UEFDS0FHRV9GSUxFX05BTUUgIiR7Q1BBQ0tfUEFDS0FHRV9GSUxFX05BTUV9LSR7Q1BBQ0tfUEFD
S0FHRV9WRVJTSU9OfSIpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERlYmlhbiBwYWNr
YWdlCi1lbHNlaWYgKENQQUNLX0dFTkVSQVRPUiBNQVRDSEVTICJERUIiKQotCi0gIHNldCAoQ1BB
Q0tfUEFDS0FHRV9GSUxFX05BTUUgICAibGliJHtDUEFDS19QQUNLQUdFX05BTUV9IikKLSAgaWYg
KERFVkVMKQotICAgIHNldCAoQ1BBQ0tfUEFDS0FHRV9GSUxFX05BTUUgIiR7Q1BBQ0tfUEFDS0FH
RV9GSUxFX05BTUV9LWRldiIpCi0gIGVsc2UgKCkKLSAgICBzZXQgKENQQUNLX1BBQ0tBR0VfRklM
RV9OQU1FICIke0NQQUNLX1BBQ0tBR0VfRklMRV9OQU1FfTAiKQotICBlbmRpZiAoKQotICBzZXQg
KENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICAgIiR7Q1BBQ0tfUEFDS0FHRV9GSUxFX05BTUV9XyR7
Q1BBQ0tfUEFDS0FHRV9WRVJTSU9OfS0xXyR7Q1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkV9IikK
LQotICBzZXQgKENQQUNLX0RFQklBTl9QQUNLQUdFX0RFUEVORFMpCi0gIHNldCAoQ1BBQ0tfREVC
SUFOX1BBQ0tBR0VfU0VDVElPTiAgICAgICJkZXZlbCIpCi0gIHNldCAoQ1BBQ0tfREVCSUFOX1BB
Q0tBR0VfUFJJT1JJVFkgICAgICJvcHRpb25hbCIpCi0gIHNldCAoQ1BBQ0tfREVCSUFOX1BBQ0tB
R0VfSE9NRVBBR0UgICAgICIke0NQQUNLX1JQTV9QQUNLQUdFX1VSTH0iKQotICBzZXQgKENQQUNL
X0RFQklBTl9QQUNLQUdFX01BSU5UQUlORVIgICAiJHtDUEFDS19QQUNLQUdFX1ZFTkRPUn0iKQot
ICBzZXQgKENQQUNLX0RFQklBTl9QQUNLQUdFX0FSQ0hJVEVDVFVSRSAiJHtDUEFDS19QQUNLQUdF
X0FSQ0hJVEVDVFVSRX0iKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBSUE0gcGFja2Fn
ZQotZWxzZWlmIChDUEFDS19HRU5FUkFUT1IgTUFUQ0hFUyAiUlBNIikKLQotICBzZXQgKENQQUNL
X1BBQ0tBR0VfRklMRV9OQU1FICAgIiR7Q1BBQ0tfUEFDS0FHRV9OQU1FfSIpCi0gIGlmIChERVZF
TCkKLSAgICBzZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICIke0NQQUNLX1BBQ0tBR0VfRklM
RV9OQU1FfS1kZXZlbCIpCi0gIGVuZGlmICgpCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9GSUxFX05B
TUUgICAiJHtDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRX0tJHtDUEFDS19QQUNLQUdFX1ZFUlNJT059
LTEuJHtDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVSRX0iKQotCi1lbmRpZiAoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL2NtYWtlL3V0aWxzLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL3V0aWxzLmNtYWtlCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5Y2VmNDYzYzRhOGY1Njg3Mjg4ZjFhYjBlNGZhODkxMGE3OTc3NWZm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS91
dGlscy5jbWFrZQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLSMjIFV0aWxpdHkgQ01h
a2UgZnVuY3Rpb25zLgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMjIENvbnZlcnQgYm9vbGVh
biB2YWx1ZSB0byAwIG9yIDEKLW1hY3JvIChib29sX3RvX2ludCBWQVIpCi0gIGlmICgke1ZBUn0p
Ci0gICAgc2V0ICgke1ZBUn0gMSkKLSAgZWxzZSAoKQotICAgIHNldCAoJHtWQVJ9IDApCi0gIGVu
ZGlmICgpCi1lbmRtYWNybyAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMjIEV4dHJhY3Qg
dmVyc2lvbiBudW1iZXJzIGZyb20gdmVyc2lvbiBzdHJpbmcuCi1mdW5jdGlvbiAodmVyc2lvbl9u
dW1iZXJzIHZlcnNpb24gbWFqb3IgbWlub3IgcGF0Y2gpCi0gIGlmICh2ZXJzaW9uIE1BVENIRVMg
IihbMC05XSspKFxcLlswLTldKyk/KFxcLlswLTldKyk/KHJjWzEtOV1bMC05XSp8W2Etel0rKT8i
KQotICAgIGlmIChDTUFLRV9NQVRDSF8xKQotICAgICAgc2V0IChfbWFqb3IgJHtDTUFLRV9NQVRD
SF8xfSkKLSAgICBlbHNlICgpCi0gICAgICBzZXQgKF9tYWpvciAwKQotICAgIGVuZGlmICgpCi0g
ICAgaWYgKENNQUtFX01BVENIXzIpCi0gICAgICBzZXQgKF9taW5vciAke0NNQUtFX01BVENIXzJ9
KQotICAgICAgc3RyaW5nIChSRUdFWCBSRVBMQUNFICJeXFwuIiAiIiBfbWlub3IgIiR7X21pbm9y
fSIpCi0gICAgZWxzZSAoKQotICAgICAgc2V0IChfbWlub3IgMCkKLSAgICBlbmRpZiAoKQotICAg
IGlmIChDTUFLRV9NQVRDSF8zKQotICAgICAgc2V0IChfcGF0Y2ggJHtDTUFLRV9NQVRDSF8zfSkK
LSAgICAgIHN0cmluZyAoUkVHRVggUkVQTEFDRSAiXlxcLiIgIiIgX3BhdGNoICIke19wYXRjaH0i
KQotICAgIGVsc2UgKCkKLSAgICAgIHNldCAoX3BhdGNoIDApCi0gICAgZW5kaWYgKCkKLSAgZWxz
ZSAoKQotICAgIHNldCAoX21ham9yIDApCi0gICAgc2V0IChfbWlub3IgMCkKLSAgICBzZXQgKF9w
YXRjaCAwKQotICBlbmRpZiAoKQotICBzZXQgKCIke21ham9yfSIgIiR7X21ham9yfSIgUEFSRU5U
X1NDT1BFKQotICBzZXQgKCIke21pbm9yfSIgIiR7X21pbm9yfSIgUEFSRU5UX1NDT1BFKQotICBz
ZXQgKCIke3BhdGNofSIgIiR7X3BhdGNofSIgUEFSRU5UX1NDT1BFKQotZW5kZnVuY3Rpb24gKCkK
LQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIyBDb25maWd1cmUgcHVibGljIGhlYWRlciBmaWxl
cwotZnVuY3Rpb24gKGNvbmZpZ3VyZV9oZWFkZXJzIG91dCkKLSAgc2V0ICh0bXApCi0gIGZvcmVh
Y2ggKHNyYyBJTiBMSVNUUyBBUkdOKQotICAgIGlmIChJU19BQlNPTFVURSAiJHtzcmN9IikKLSAg
ICAgIGxpc3QgKEFQUEVORCB0bXAgIiR7c3JjfSIpCi0gICAgZWxzZWlmIChFWElTVFMgIiR7UFJP
SkVDVF9TT1VSQ0VfRElSfS9zcmMvJHtzcmN9LmluIikKLSAgICAgIGNvbmZpZ3VyZV9maWxlICgi
JHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy8ke3NyY30uaW4iICIke1BST0pFQ1RfQklOQVJZX0RJ
Un0vaW5jbHVkZS8ke0dGTEFHU19JTkNMVURFX0RJUn0vJHtzcmN9IiBAT05MWSkKLSAgICAgIGxp
c3QgKEFQUEVORCB0bXAgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRlLyR7R0ZMQUdTX0lO
Q0xVREVfRElSfS8ke3NyY30iKQotICAgIGVsc2UgKCkKLQkgICAgY29uZmlndXJlX2ZpbGUgKCIk
e1BST0pFQ1RfU09VUkNFX0RJUn0vc3JjLyR7c3JjfSIgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9p
bmNsdWRlLyR7R0ZMQUdTX0lOQ0xVREVfRElSfS8ke3NyY30iIENPUFlPTkxZKQotICAgICAgbGlz
dCAoQVBQRU5EIHRtcCAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUvJHtHRkxBR1NfSU5D
TFVERV9ESVJ9LyR7c3JjfSIpCi0gICAgZW5kaWYgKCkKLSAgZW5kZm9yZWFjaCAoKQotICBzZXQg
KCR7b3V0fSAiJHt0bXB9IiBQQVJFTlRfU0NPUEUpCi1lbmRmdW5jdGlvbiAoKQotCi0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSMjIENvbmZpZ3VyZSBzb3VyY2UgZmlsZXMgd2l0aCAuaW4gc3VmZml4
Ci1mdW5jdGlvbiAoY29uZmlndXJlX3NvdXJjZXMgb3V0KQotICBzZXQgKHRtcCkKLSAgZm9yZWFj
aCAoc3JjIElOIExJU1RTIEFSR04pCi0gICAgaWYgKHNyYyBNQVRDSEVTICIuaCQiIEFORCBFWElT
VFMgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvJHtzcmN9LmluIikKLSAgICAgIGNvbmZpZ3Vy
ZV9maWxlICgiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy8ke3NyY30uaW4iICIke1BST0pFQ1Rf
QklOQVJZX0RJUn0vaW5jbHVkZS8ke0dGTEFHU19JTkNMVURFX0RJUn0vJHtzcmN9IiBAT05MWSkK
LSAgICAgIGxpc3QgKEFQUEVORCB0bXAgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRlLyR7
R0ZMQUdTX0lOQ0xVREVfRElSfS8ke3NyY30iKQotICAgIGVsc2UgKCkKLSAgICAgIGxpc3QgKEFQ
UEVORCB0bXAgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvJHtzcmN9IikKLSAgICBlbmRpZiAo
KQotICBlbmRmb3JlYWNoICgpCi0gIHNldCAoJHtvdXR9ICIke3RtcH0iIFBBUkVOVF9TQ09QRSkK
LWVuZGZ1bmN0aW9uICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyMgQWRkIHVzYWdlIHRl
c3QKLSMKLSMgVXNpbmcgUEFTU19SRUdVTEFSX0VYUFJFU1NJT04gYW5kIEZBSUxfUkVHVUxBUl9F
WFBSRVNTSU9OIHdvdWxkCi0jIGRvIGFzIHdlbGwsIGJ1dCBDTWFrZS9DVGVzdCBkb2VzIG5vdCBh
bGxvdyB1cyB0byBzcGVjaWZ5IGFuCi0jIGV4cGVjdGVkIGV4aXQgc3RhdHVzLiBNb3Jlb3Zlciwg
dGhlIGV4ZWN1dGVfdGVzdC5jbWFrZSBzY3JpcHQKLSMgc2V0cyBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMgbmVlZGVkIGJ5IHRoZSAtLWZyb21lbnYvLS10cnlmcm9tZW52IHRlc3RzLgotbWFjcm8gKGFk
ZF9nZmxhZ3NfdGVzdCBuYW1lIGV4cGVjdGVkX3JjIGV4cGVjdGVkX291dHB1dCB1bmV4cGVjdGVk
X291dHB1dCBjbWQpCi0gIHNldCAoYXJncyAiLS10ZXN0X3RtcGRpcj0ke1BST0pFQ1RfQklOQVJZ
X0RJUn0vVGVzdGluZy9UZW1wb3JhcnkiCi0gICAgICAgICAgICAiLS1zcmNkaXI9JHtQUk9KRUNU
X1NPVVJDRV9ESVJ9L3Rlc3QiKQotICBhZGRfdGVzdCAoCi0gICAgTkFNRSAgICAke25hbWV9Ci0g
ICAgQ09NTUFORCAiJHtDTUFLRV9DT01NQU5EfSIgIi1EQ09NTUFORDpTVFJJTkc9JDxUQVJHRVRf
RklMRToke2NtZH0+OyR7YXJnc307JHtBUkdOfSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLURFWFBFQ1RFRF9SQzpTVFJJTkc9JHtleHBlY3RlZF9yY30iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi1ERVhQRUNURURfT1VUUFVUOlNUUklORz0ke2V4cGVjdGVkX291
dHB1dH0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EVU5FWFBFQ1RFRF9PVVRQ
VVQ6U1RSSU5HPSR7dW5leHBlY3RlZF9vdXRwdXR9IgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC1QICIke1BST0pFQ1RfU09VUkNFX0RJUn0vY21ha2UvZXhlY3V0ZV90ZXN0LmNtYWtl
IgotICAgIFdPUktJTkdfRElSRUNUT1JZICIke0dGTEFHU19GTEFHRklMRVNfRElSfSIKLSAgKQot
ZW5kbWFjcm8gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS92ZXJzaW9uLmNtYWtlLmluIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtl
L3ZlcnNpb24uY21ha2UuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMWFmMDUw
ZDk3NGZlOTBhMmFkZTNkNmEwZWEwYjgxYjA5MDc0MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL3ZlcnNpb24uY21ha2UuaW4KKysrIC9kZXYv
bnVsbApAQCAtMSwyMSArMCwwIEBACi0jIyBnZmxhZ3MgQ01ha2UgY29uZmlndXJhdGlvbiB2ZXJz
aW9uIGZpbGUKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBsaWJyYXJ5IHZlcnNpb24KLXNl
dCAoUEFDS0FHRV9WRVJTSU9OICJAUEFDS0FHRV9WRVJTSU9OQCIpCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLSMgY2hlY2sgY29tcGF0aWJpbGl0eQotCi0jIFBlcmZvcm0gY29tcGF0aWJpbGl0
eSBjaGVjayBoZXJlIHVzaW5nIHRoZSBpbnB1dCBDTWFrZSB2YXJpYWJsZXMuCi0jIFNlZSBleGFt
cGxlIGluIGh0dHA6Ly93d3cuY21ha2Uub3JnL1dpa2kvQ01ha2VfMi42X05vdGVzLgotCi1zZXQg
KFBBQ0tBR0VfVkVSU0lPTl9DT01QQVRJQkxFIFRSVUUpCi1zZXQgKFBBQ0tBR0VfVkVSU0lPTl9V
TlNVSVRBQkxFIEZBTFNFKQotCi1pZiAoIiR7UEFDS0FHRV9GSU5EX1ZFUlNJT05fTUFKT1J9IiBF
UVVBTCAiQFBBQ0tBR0VfVkVSU0lPTl9NQUpPUkAiIEFORAotICAgICIke1BBQ0tBR0VfRklORF9W
RVJTSU9OX01JTk9SfSIgRVFVQUwgIkBQQUNLQUdFX1ZFUlNJT05fTUlOT1JAIikKLSAgc2V0IChQ
QUNLQUdFX1ZFUlNJT05fRVhBQ1QgVFJVRSkKLWVsc2UgKCkKLSAgc2V0IChQQUNLQUdFX1ZFUlNJ
T05fRVhBQ1QgRkFMU0UpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9jb25maWcuaC5pbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy9zcmMvY29uZmlnLmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NzA4ZGE2
MTMzYmViNzg2MmQ3Y2JlNzhmYmUxMTEwNzRmNTcyMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9jb25maWcuaC5pbgorKysgL2Rldi9udWxsCkBA
IC0xLDExMiArMCwwIEBACi0vKiBHZW5lcmF0ZWQgZnJvbSBjb25maWcuaC5pbiBkdXJpbmcgYnVp
bGQgY29uZmlndXJhdGlvbiB1c2luZyBDTWFrZS4gKi8KLQotLy8gTm90ZTogVGhpcyBoZWFkZXIg
ZmlsZSBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseS4gSXQgaXMgbm90IHBhcnQgb2YgcHVibGljIGlu
dGVyZmFjZSEKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTeXN0ZW0gY2hlY2tzCi0KLS8v
IERlZmluZSBpZiB5b3UgYnVpbGQgdGhpcyBsaWJyYXJ5IGZvciBhIE1TIFdpbmRvd3MgT1MuCi0j
Y21ha2VkZWZpbmUgT1NfV0lORE9XUwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRp
bnQuaD4gaGVhZGVyIGZpbGUuCi0jY21ha2VkZWZpbmUgSEFWRV9TVERJTlRfSAotCi0vLyBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuCi0jY21ha2VkZWZp
bmUgSEFWRV9TWVNfVFlQRVNfSAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBl
cy5oPiBoZWFkZXIgZmlsZS4KLSNjbWFrZWRlZmluZSBIQVZFX0lOVFRZUEVTX0gKLQotLy8gRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuCi0jY21ha2VkZWZp
bmUgSEFWRV9TWVNfU1RBVF9ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5o
PiBoZWFkZXIgZmlsZS4KLSNjbWFrZWRlZmluZSBIQVZFX1VOSVNURF9ICi0KLS8vIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgPGZubWF0Y2guaD4gaGVhZGVyIGZpbGUuCi0jY21ha2VkZWZpbmUgSEFW
RV9GTk1BVENIX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c2hsd2FwaS5oPiBoZWFk
ZXIgZmlsZSAoV2luZG93cyAyMDAwL1hQKS4KLSNjbWFrZWRlZmluZSBIQVZFX1NITFdBUElfSAot
Ci0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRvbGwgZnVuY3Rpb24uCi0jY21ha2VkZWZp
bmUgSEFWRV9TVFJUT0xMCi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RydG9xIGZ1bmN0
aW9uLgotI2NtYWtlZGVmaW5lIEhBVkVfU1RSVE9RCi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0
aGUgPHB0aHJlYWQuaD4gaGVhZGVyIGZpbGUuCi0jY21ha2VkZWZpbmUgSEFWRV9QVEhSRUFECi0K
LS8vIERlZmluZSBpZiB5b3VyIHB0aHJlYWQgbGlicmFyeSBkZWZpbmVzIHRoZSB0eXBlIHB0aHJl
YWRfcndsb2NrX3QKLSNjbWFrZWRlZmluZSBIQVZFX1JXTE9DSwotCi0vLyBnY2MgcmVxdWlyZXMg
dGhpcyB0byBnZXQgUFJJZDY0LCBldGMuCi0jaWYgZGVmaW5lZChIQVZFX0lOVFRZUEVTX0gpICYm
ICFkZWZpbmVkKF9fU1REQ19GT1JNQVRfTUFDUk9TKQotIyAgZGVmaW5lIF9fU1REQ19GT1JNQVRf
TUFDUk9TIDEKLSNlbmRpZgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFBhY2thZ2UgaW5m
b3JtYXRpb24KLQotLy8gTmFtZSBvZiBwYWNrYWdlLgotI2RlZmluZSBQQUNLQUdFIEBQUk9KRUNU
X05BTUVACi0KLS8vIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4KLSNk
ZWZpbmUgUEFDS0FHRV9OQU1FIEBQQUNLQUdFX05BTUVACi0KLS8vIERlZmluZSB0byB0aGUgZnVs
bCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9TVFJJ
TkcgQFBBQ0tBR0VfU1RSSU5HQAotCi0vLyBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQg
bmFtZSBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSBAUEFDS0FHRV9U
QVJOQU1FQAotCi0vLyBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLgotI2Rl
ZmluZSBQQUNLQUdFX1ZFUlNJT04gQFBBQ0tBR0VfVkVSU0lPTkAKLQotLy8gVmVyc2lvbiBudW1i
ZXIgb2YgcGFja2FnZS4KLSNkZWZpbmUgVkVSU0lPTiBQQUNLQUdFX1ZFUlNJT04KLQotLy8gRGVm
aW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hv
dWxkIGJlIHNlbnQuCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUIEBQQUNLQUdFX0JVR1JFUE9S
VEAKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYXRoIHNlcGFyYXRvcgotI2lmbmRlZiBQ
QVRIX1NFUEFSQVRPUgotIyAgaWZkZWYgT1NfV0lORE9XUwotIyAgICBkZWZpbmUgUEFUSF9TRVBB
UkFUT1IgICdcXCcKLSMgIGVsc2UKLSMgICAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICAnLycKLSMg
IGVuZGlmCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBXaW5kb3dzCi0KLS8v
IFdoZXRoZXIgZ2ZsYWdzIGxpYnJhcnkgaXMgYSBETEwuCi0jaWZuZGVmIEdGTEFHU19JU19BX0RM
TAotIyAgZGVmaW5lIEdGTEFHU19JU19BX0RMTCAwCi0jZW5kaWYKLQotLy8gQWx3YXlzIGV4cG9y
dCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIGEgc2hhcmVkIGxpYnJhcnkgYXMgdGhpcyBmaWxlIGlz
IG9ubHkKLS8vIGluY2x1ZGVkIGJ5IGludGVybmFsIG1vZHVsZXMgd2hlbiBidWlsZGluZyB0aGUg
Z2ZsYWdzIGxpYnJhcnkgaXRzZWxmLgotLy8gVGhlIGdmbGFnc19kZWNsYXJlLmggaGVhZGVyIGZp
bGUgd2lsbCBzZXQgaXQgdG8gaW1wb3J0IHRoZXNlIHN5bWJvbHMgb3RoZXJ3aXNlLgotI2lmbmRl
ZiBHRkxBR1NfRExMX0RFQ0wKLSMgIGlmIEdGTEFHU19JU19BX0RMTCAmJiBkZWZpbmVkKF9NU0Nf
VkVSKQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQot
IyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMCi0jICBlbmRpZgotI2VuZGlmCi0v
LyBGbGFncyBkZWZpbmVkIGJ5IHRoZSBnZmxhZ3MgbGlicmFyeSBpdHNlbGYgbXVzdCBiZSBleHBv
cnRlZAotI2lmbmRlZiBHRkxBR1NfRExMX0RFRklORV9GTEFHCi0jICBkZWZpbmUgR0ZMQUdTX0RM
TF9ERUZJTkVfRkxBRyBHRkxBR1NfRExMX0RFQ0wKLSNlbmRpZgotCi0jaWZkZWYgT1NfV0lORE9X
UwotLy8gVGhlIHVuaXR0ZXN0cyBpbXBvcnQgdGhlIHN5bWJvbHMgb2YgdGhlIHNoYXJlZCBnZmxh
Z3MgbGlicmFyeQotIyAgaWYgR0ZMQUdTX0lTX0FfRExMICYmIGRlZmluZWQoX01TQ19WRVIpCi0j
ICAgIGRlZmluZSBHRkxBR1NfRExMX0RFQ0xfRk9SX1VOSVRURVNUUyBfX2RlY2xzcGVjKGRsbGlt
cG9ydCkKLSMgIGVuZGlmCi0jICBpbmNsdWRlICJ3aW5kb3dzX3BvcnQuaCIKLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3NyYy9nZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFncy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTM1YmJmZTY2NjQyZTNhZmExZmM5ZDhlZjA1N2IzYzNkZWZiNGQ5ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFn
cy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE5NjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAx
OTk5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8gLS0tCi0vLyBSZXZhbXBlZCBhbmQg
cmVvcmdhbml6ZWQgYnkgQ3JhaWcgU2lsdmVyc3RlaW4KLS8vCi0vLyBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFsbCBvdXIgY29tbWFuZCBsaW5lIGZsYWdzCi0vLyBz
dHVmZi4gIEhlcmUncyBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyCi0vLwotLy8gKiBGbGFn
UmVnaXN0cnkgb3ducyBDb21tYW5kTGluZUZsYWdzIG93bnMgRmxhZ1ZhbHVlLgotLy8gKiBGbGFn
U2F2ZXIgaG9sZHMgYSBGbGFnUmVnaXN0cnkgKHNhdmVzIGl0IGF0IGNvbnN0cnVjdCB0aW1lLAot
Ly8gICAgIHJlc3RvcmVzIGl0IGF0IGRlc3Ryb3kgdGltZSkuCi0vLyAqIENvbW1hbmRMaW5lRmxh
Z1BhcnNlciBsaXZlcyBvdXRzaWRlIHRoYXQgaGllcmFyY2h5LCBidXQgd29ya3Mgb24KLS8vICAg
ICBDb21tYW5kTGluZUZsYWdzIChtb2RpZnlpbmcgdGhlIEZsYWdWYWx1ZXMpLgotLy8gKiBGcmVl
IGZ1bmN0aW9ucyBsaWtlIFNldENvbW1hbmRMaW5lT3B0aW9uKCkgd29yayB2aWEgb25lIG9mIHRo
ZQotLy8gICAgIGFib3ZlIChzdWNoIGFzIENvbW1hbmRMaW5lRmxhZ1BhcnNlcikuCi0vLwotLy8g
SW4gbW9yZSBkZXRhaWw6Ci0vLwotLy8gLS0gVGhlIG1haW4gY2xhc3NlcyB0aGF0IGhvbGQgZmxh
ZyBkYXRhOgotLy8KLS8vIEZsYWdWYWx1ZSBob2xkcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIGZs
YWcuICBJdCdzCi0vLyBwc2V1ZG8tdGVtcGxhdGl6ZWQ6IGV2ZXJ5IG9wZXJhdGlvbiBvbiBhIEZs
YWdWYWx1ZSBpcyB0eXBlZC4gIEl0Ci0vLyBhbHNvIGRlYWxzIHdpdGggc3RvcmFnZS1saWZldGlt
ZSBpc3N1ZXMgKHNvIGZsYWcgdmFsdWVzIGRvbid0IGdvCi0vLyBhd2F5IGluIGEgZGVzdHJ1Y3Rv
ciksIHdoaWNoIGlzIHdoeSB3ZSBuZWVkIGEgd2hvbGUgY2xhc3MgdG8gaG9sZCBhCi0vLyB2YXJp
YWJsZSdzIHZhbHVlLgotLy8KLS8vIENvbW1hbmRMaW5lRmxhZyBpcyBhbGwgdGhlIGluZm9ybWF0
aW9uIGFib3V0IGEgc2luZ2xlIGNvbW1hbmQtbGluZQotLy8gZmxhZy4gIEl0IGhhcyBhIEZsYWdW
YWx1ZSBmb3IgdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlLCBidXQgYWxzbwotLy8gdGhlIGZsYWcn
cyBuYW1lLCB0eXBlLCBldGMuCi0vLwotLy8gRmxhZ1JlZ2lzdHJ5IGlzIGEgY29sbGVjdGlvbiBv
ZiBDb21tYW5kTGluZUZsYWdzLiAgVGhlcmUncyB0aGUKLS8vIGdsb2JhbCByZWdpc3RyeSwgd2hp
Y2ggaXMgd2hlcmUgZmxhZ3MgZGVmaW5lZCB2aWEgREVGSU5FX2ZvbygpCi0vLyBsaXZlLiAgQnV0
IGl0J3MgcG9zc2libGUgdG8gZGVmaW5lIHlvdXIgb3duIGZsYWcsIG1hbnVhbGx5LCBpbiBhCi0v
LyBkaWZmZXJlbnQgcmVnaXN0cnkgeW91IGNyZWF0ZS4gIChJbiBwcmFjdGljZSwgbXVsdGlwbGUg
cmVnaXN0cmllcwotLy8gYXJlIHVzZWQgb25seSBieSBGbGFnU2F2ZXIpLgotLy8KLS8vIEEgZ2l2
ZW4gRmxhZ1ZhbHVlIGlzIG93bmVkIGJ5IGV4YWN0bHkgb25lIENvbW1hbmRMaW5lRmxhZy4gIEEg
Z2l2ZW4KLS8vIENvbW1hbmRMaW5lRmxhZyBpcyBvd25lZCBieSBleGFjdGx5IG9uZSBGbGFnUmVn
aXN0cnkuICBGbGFnUmVnaXN0cnkKLS8vIGhhcyBhIGxvY2s7IGFueSBvcGVyYXRpb24gdGhhdCB3
cml0ZXMgdG8gYSBGbGFnVmFsdWUgb3IKLS8vIENvbW1hbmRMaW5lRmxhZyBvd25lZCBieSB0aGF0
IHJlZ2lzdHJ5IG11c3QgYWNxdWlyZSB0aGUKLS8vIEZsYWdSZWdpc3RyeSBsb2NrIGJlZm9yZSBk
b2luZyBzby4KLS8vCi0vLyAtLS0gU29tZSBvdGhlciBjbGFzc2VzIGFuZCBmcmVlIGZ1bmN0aW9u
czoKLS8vCi0vLyBDb21tYW5kTGluZUZsYWdJbmZvIGlzIGEgY2xpZW50LWV4cG9zZWQgdmVyc2lv
biBvZiBDb21tYW5kTGluZUZsYWcuCi0vLyBPbmNlIGl0J3MgaW5zdGFudGlhdGVkLCBpdCBoYXMg
bm8gZGVwZW5kZW5jaWVzIG9yIHJlbGF0aW9uc2hpcHMKLS8vIHdpdGggYW55IG90aGVyIHBhcnQg
b2YgdGhpcyBmaWxlLgotLy8KLS8vIEZsYWdSZWdpc3RlcmVyIGlzIHRoZSBoZWxwZXIgY2xhc3Mg
dXNlZCBieSB0aGUgREVGSU5FXyogbWFjcm9zIHRvCi0vLyBhbGxvdyB3b3JrIHRvIGJlIGRvbmUg
YXQgZ2xvYmFsIGluaXRpYWxpemF0aW9uIHRpbWUuCi0vLwotLy8gQ29tbWFuZExpbmVGbGFnUGFy
c2VyIGlzIHRoZSBjbGFzcyB0aGF0IHJlYWRzIGZyb20gdGhlIGNvbW1hbmRsaW5lCi0vLyBhbmQg
aW5zdGFudGlhdGVzIGZsYWcgdmFsdWVzIGJhc2VkIG9uIHRoYXQuICBJdCBuZWVkcyB0byBwb2tl
IGludG8KLS8vIHRoZSBpbm5hcmRzIG9mIHRoZSBGbGFnVmFsdWUtPkNvbW1hbmRMaW5lRmxhZy0+
RmxhZ1JlZ2lzdHJ5IGNsYXNzCi0vLyBoaWVyYXJjaHkgdG8gZG8gdGhhdC4gIEl0J3MgY2FyZWZ1
bCB0byBhY3F1aXJlIHRoZSBGbGFnUmVnaXN0cnkKLS8vIGxvY2sgYmVmb3JlIGRvaW5nIGFueSB3
cml0aW5nIG9yIG90aGVyIG5vbi1jb25zdCBhY3Rpb25zLgotLy8KLS8vIEdldENvbW1hbmRMaW5l
T3B0aW9uIGlzIGp1c3QgYSBob29rIGludG8gcmVnaXN0cnkgcm91dGluZXMgdG8KLS8vIHJldHJp
ZXZlIGEgZmxhZyBiYXNlZCBvbiBpdHMgbmFtZS4gIFNldENvbW1hbmRMaW5lT3B0aW9uLCBvbiB0
aGUKLS8vIG90aGVyIGhhbmQsIGhvb2tzIGludG8gQ29tbWFuZExpbmVGbGFnUGFyc2VyLiAgT3Ro
ZXIgQVBJIGZ1bmN0aW9ucwotLy8gYXJlLCBzaW1pbGFybHksIG1vc3RseSBob29rcyBpbnRvIHRo
ZSBmdW5jdGlvbmFsaXR5IGRlc2NyaWJlZCBhYm92ZS4KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgImdmbGFncy5oIgotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8Y3R5
cGUuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2lmIGRlZmluZWQoSEFWRV9GTk1BVENIX0gpCi0j
ICBpbmNsdWRlIDxmbm1hdGNoLmg+Ci0jZWxpZiBkZWZpbmVkKEhBVkVfU0hMV0FQSV9IKQotIyAg
aW5jbHVkZSA8c2hsd2FwaS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RkYXJnLmg+IC8vIEZvciB2
YV9saXN0IGFuZCByZWxhdGVkIG9wZXJhdGlvbnMKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPG1hcD4KLSNp
bmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gICAgIC8vIGZvciBwYWlyPD4KLSNp
bmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJtdXRleC5oIgotI2luY2x1ZGUgInV0aWwuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIE1VVEVYX05BTUVTUEFDRTsKLQotCi0vLyBTcGVjaWFsIGZsYWdz
LCB0eXBlIDE6IHRoZSAncmVjdXJzaXZlJyBmbGFncy4gIFRoZXkgc2V0IGFub3RoZXIgZmxhZydz
IHZhbC4KLURFRklORV9zdHJpbmcoZmxhZ2ZpbGUsICAgIiIsICJsb2FkIGZsYWdzIGZyb20gZmls
ZSIpOwotREVGSU5FX3N0cmluZyhmcm9tZW52LCAgICAiIiwgInNldCBmbGFncyBmcm9tIHRoZSBl
bnZpcm9ubWVudCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgW3VzZSAnZXhwb3J0
IEZMQUdTX2ZsYWcxPXZhbHVlJ10iKTsKLURFRklORV9zdHJpbmcodHJ5ZnJvbWVudiwgIiIsICJz
ZXQgZmxhZ3MgZnJvbSB0aGUgZW52aXJvbm1lbnQgaWYgcHJlc2VudCIpOwotCi0vLyBTcGVjaWFs
IGZsYWdzLCB0eXBlIDI6IHRoZSAncGFyc2luZycgZmxhZ3MuICBUaGV5IG1vZGlmeSBob3cgd2Ug
cGFyc2UuCi1ERUZJTkVfc3RyaW5nKHVuZGVmb2ssICIiLCAiY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YgZmxhZyBuYW1lcyB0aGF0IGl0IGlzIG9rYXkgdG8gc3BlY2lmeSAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAib24gdGhlIGNvbW1hbmQgbGluZSBldmVuIGlmIHRoZSBwcm9ncmFtIGRv
ZXMgbm90IGRlZmluZSBhIGZsYWcgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGgg
dGhhdCBuYW1lLiAgSU1QT1JUQU5UOiBmbGFncyBpbiB0aGlzIGxpc3QgdGhhdCBoYXZlICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudHMgTVVTVCB1c2UgdGhlIGZsYWc9dmFs
dWUgZm9ybWF0Iik7Ci0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotdXNpbmcgc3Rk
OjptYXA7Ci11c2luZyBzdGQ6OnBhaXI7Ci11c2luZyBzdGQ6OnNvcnQ7Ci11c2luZyBzdGQ6OnN0
cmluZzsKLXVzaW5nIHN0ZDo6dmVjdG9yOwotCi0vLyBUaGlzIGlzIHVzZWQgYnkgdGhlIHVuaXR0
ZXN0IHRvIHRlc3QgZXJyb3ItZXhpdCBjb2RlCi12b2lkIEdGTEFHU19ETExfREVDTCAoKmdmbGFn
c19leGl0ZnVuYykoaW50KSA9ICZleGl0OyAgLy8gZnJvbSBzdGRsaWIuaAotCi0KLS8vIFRoZSBo
ZWxwIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGF0IHRoZSBjb21tYW5kbGluZSBmbGFnIGhhcyBiZWVu
Ci0vLyAnc3RyaXBwZWQnLiBJdCB3aWxsIG5vdCBzaG93IHVwIHdoZW4gZG9pbmcgIi1oZWxwIiBh
bmQgaXRzCi0vLyB2YXJpYW50cy4gVGhlIGZsYWcgaXMgc3RyaXBwZWQgaWYgU1RSSVBfRkxBR19I
RUxQIGlzIHNldCB0byAxCi0vLyBiZWZvcmUgaW5jbHVkaW5nIGJhc2UvZ2ZsYWdzLmgKLQotLy8g
VGhpcyBpcyB1c2VkIGJ5IHRoaXMgZmlsZSwgYW5kIGFsc28gaW4gZ2ZsYWdzX3JlcG9ydGluZy5j
YwotY29uc3QgY2hhciBrU3RyaXBwZWRGbGFnSGVscFtdID0gIlwwMDFcMDAyXDAwM1wwMDQgKHVu
a25vd24pIFwwMDRcMDAzXDAwMlwwMDEiOwotCi1uYW1lc3BhY2UgewotCi0vLyBUaGVyZSBhcmUg
YWxzbyAncmVwb3J0aW5nJyBmbGFncywgaW4gZ2ZsYWdzX3JlcG9ydGluZy5jYy4KLQotc3RhdGlj
IGNvbnN0IGNoYXIga0Vycm9yW10gPSAiRVJST1I6ICI7Ci0KLS8vIEluZGljYXRlcyB0aGF0IHVu
ZGVmaW5lZCBvcHRpb25zIGFyZSB0byBiZSBpZ25vcmVkLgotLy8gRW5hYmxlcyBkZWZlcnJlZCBw
cm9jZXNzaW5nIG9mIGZsYWdzIGluIGR5bmFtaWNhbGx5IGxvYWRlZCBsaWJyYXJpZXMuCi1zdGF0
aWMgYm9vbCBhbGxvd19jb21tYW5kX2xpbmVfcmVwYXJzaW5nID0gZmFsc2U7Ci0KLXN0YXRpYyBi
b29sIGxvZ2dpbmdfaXNfcHJvYmFibHlfc2V0X3VwID0gZmFsc2U7Ci0KLS8vIFRoaXMgaXMgYSAn
cHJvdG90eXBlJyB2YWxpZGF0ZS1mdW5jdGlvbi4gICdSZWFsJyB2YWxpZGF0ZQotLy8gZnVuY3Rp
b25zLCB0YWtlIGEgZmxhZy12YWx1ZSBhcyBhbiBhcmd1bWVudDogVmFsaWRhdGVGbihib29sKSBv
cgotLy8gVmFsaWRhdGVGbih1aW50NjQpLiAgSG93ZXZlciwgZm9yIGVhc2llciBzdG9yYWdlLCB3
ZSBzdHJpcCBvZmYgdGhpcwotLy8gYXJndW1lbnQgYW5kIHRoZW4gcmVzdG9yZSBpdCB3aGVuIGFj
dHVhbGx5IGNhbGxpbmcgdGhlIGZ1bmN0aW9uIG9uCi0vLyBhIGZsYWcgdmFsdWUuCi10eXBlZGVm
IGJvb2wgKCpWYWxpZGF0ZUZuUHJvdG8pKCk7Ci0KLS8vIFdoZXRoZXIgd2Ugc2hvdWxkIGRpZSB3
aGVuIHJlcG9ydGluZyBhbiBlcnJvci4KLWVudW0gRGllV2hlblJlcG9ydGluZyB7IERJRSwgRE9f
Tk9UX0RJRSB9OwotCi0vLyBSZXBvcnQgRXJyb3IgYW5kIGV4aXQgaWYgcmVxdWVzdGVkLgotc3Rh
dGljIHZvaWQgUmVwb3J0RXJyb3IoRGllV2hlblJlcG9ydGluZyBzaG91bGRfZGllLCBjb25zdCBj
aGFyKiBmb3JtYXQsIC4uLikgewotICBjaGFyIGVycm9yX21lc3NhZ2VbMjU1XTsKLSAgdmFfbGlz
dCBhcDsKLSAgdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0gIHZzbnByaW50ZihlcnJvcl9tZXNzYWdl
LCBzaXplb2YoZXJyb3JfbWVzc2FnZSksIGZvcm1hdCwgYXApOwotICB2YV9lbmQoYXApOwotICBm
cHJpbnRmKHN0ZGVyciwgIiVzIiwgZXJyb3JfbWVzc2FnZSk7Ci0gIGZmbHVzaChzdGRlcnIpOyAg
IC8vIHNob3VsZCBiZSB1bm5lY2Vzc2FyeSwgYnV0IGN5Z3dpbidzIHJ4dnQgYnVmZmVycyBzdGRl
cnIKLSAgaWYgKHNob3VsZF9kaWUgPT0gRElFKSBnZmxhZ3NfZXhpdGZ1bmMoMSk7Ci19Ci0KLQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIEZsYWdWYWx1ZQotLy8gICAgVGhpcyByZXByZXNlbnQgdGhlIHZh
bHVlIGEgc2luZ2xlIGZsYWcgbWlnaHQgaGF2ZS4gIFRoZSBtYWpvcgotLy8gICAgZnVuY3Rpb25h
bGl0eSBpcyB0byBjb252ZXJ0IGZyb20gYSBzdHJpbmcgdG8gYW4gb2JqZWN0IG9mIGEKLS8vICAg
IGdpdmVuIHR5cGUsIGFuZCBiYWNrLiAgVGhyZWFkLWNvbXBhdGlibGUuCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1jbGFzcyBDb21tYW5kTGluZUZsYWc7Ci1jbGFzcyBGbGFnVmFsdWUgewotIHB1YmxpYzoK
LSAgRmxhZ1ZhbHVlKHZvaWQqIHZhbGJ1ZiwgY29uc3QgY2hhciogdHlwZSwgYm9vbCB0cmFuc2Zl
cl9vd25lcnNoaXBfb2ZfdmFsdWUpOwotICB+RmxhZ1ZhbHVlKCk7Ci0KLSAgYm9vbCBQYXJzZUZy
b20oY29uc3QgY2hhciogc3BlYyk7Ci0gIHN0cmluZyBUb1N0cmluZygpIGNvbnN0OwotCi0gcHJp
dmF0ZToKLSAgZnJpZW5kIGNsYXNzIENvbW1hbmRMaW5lRmxhZzsgIC8vIGZvciBtYW55IHRoaW5n
cywgaW5jbHVkaW5nIFZhbGlkYXRlKCkKLSAgZnJpZW5kIGNsYXNzIEdGTEFHU19OQU1FU1BBQ0U6
OkZsYWdTYXZlckltcGw7ICAvLyBjYWxscyBOZXcoKQotICBmcmllbmQgY2xhc3MgRmxhZ1JlZ2lz
dHJ5OyAgICAgLy8gY2hlY2tzIHZhbHVlX2J1ZmZlcl8gZm9yIGZsYWdzX2J5X3B0cl8gbWFwCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgVCBHZXRGcm9tRW52KGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKiwgVCk7Ci0gIGZyaWVuZCBib29sIFRyeVBhcnNlTG9ja2VkKGNvbnN0IENvbW1h
bmRMaW5lRmxhZyosIEZsYWdWYWx1ZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqLCBzdHJpbmcqKTsgIC8vIGZvciBOZXcoKSwgQ29weUZyb20oKQotCi0gIGVudW0g
VmFsdWVUeXBlIHsKLSAgICBGVl9CT09MID0gMCwKLSAgICBGVl9JTlQzMiA9IDEsCi0gICAgRlZf
SU5UNjQgPSAyLAotICAgIEZWX1VJTlQ2NCA9IDMsCi0gICAgRlZfRE9VQkxFID0gNCwKLSAgICBG
Vl9TVFJJTkcgPSA1LAotICAgIEZWX01BWF9JTkRFWCA9IDUsCi0gIH07Ci0gIGNvbnN0IGNoYXIq
IFR5cGVOYW1lKCkgY29uc3Q7Ci0gIGJvb2wgRXF1YWwoY29uc3QgRmxhZ1ZhbHVlJiB4KSBjb25z
dDsKLSAgRmxhZ1ZhbHVlKiBOZXcoKSBjb25zdDsgICAvLyBjcmVhdGVzIGEgbmV3IG9uZSB3aXRo
IGRlZmF1bHQgdmFsdWUKLSAgdm9pZCBDb3B5RnJvbShjb25zdCBGbGFnVmFsdWUmIHgpOwotICBp
bnQgVmFsdWVTaXplKCkgY29uc3Q7Ci0KLSAgLy8gQ2FsbHMgdGhlIGdpdmVuIHZhbGlkYXRlLWZu
IG9uIHZhbHVlX2J1ZmZlcl8sIGFuZCByZXR1cm5zCi0gIC8vIHdoYXRldmVyIGl0IHJldHVybnMu
ICBCdXQgZmlyc3QgY2FzdHMgdmFsaWRhdGVfZm5fcHJvdG8gdG8gYQotICAvLyBmdW5jdGlvbiB0
aGF0IHRha2VzIG91ciB2YWx1ZSBhcyBhbiBhcmd1bWVudCAoZWcgdm9pZAotICAvLyAoKnZhbGlk
YXRlX2ZuKShib29sKSBmb3IgYSBib29sIGZsYWcpLgotICBib29sIFZhbGlkYXRlKGNvbnN0IGNo
YXIqIGZsYWduYW1lLCBWYWxpZGF0ZUZuUHJvdG8gdmFsaWRhdGVfZm5fcHJvdG8pIGNvbnN0Owot
Ci0gIHZvaWQqIHZhbHVlX2J1ZmZlcl87ICAgICAgICAgIC8vIHBvaW50cyB0byB0aGUgYnVmZmVy
IGhvbGRpbmcgb3VyIGRhdGEKLSAgaW50OCB0eXBlXzsgICAgICAgICAgICAgICAgICAgLy8gaG93
IHRvIGludGVycHJldCB2YWx1ZV8KLSAgYm9vbCBvd25zX3ZhbHVlXzsgICAgICAgICAvLyB3aGV0
aGVyIHRvIGZyZWUgdmFsdWUgb24gZGVzdHJ1Y3QKLQotICBGbGFnVmFsdWUoY29uc3QgRmxhZ1Zh
bHVlJik7ICAgLy8gbm8gY29weWluZyEKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1ZhbHVl
Jik7Ci19OwotCi0KLS8vIFRoaXMgY291bGQgYmUgYSB0ZW1wbGF0ZWQgbWV0aG9kIG9mIEZsYWdW
YWx1ZSwgYnV0IGRvaW5nIHNvIGFkZHMgdG8gdGhlCi0vLyBzaXplIG9mIHRoZSAuby4gIFNpbmNl
IHRoZXJlJ3Mgbm8gdHlwZS1zYWZldHkgaGVyZSBhbnl3YXksIG1hY3JvIGlzIG9rLgotI2RlZmlu
ZSBWQUxVRV9BUyh0eXBlKSAgKnJlaW50ZXJwcmV0X2Nhc3Q8dHlwZSo+KHZhbHVlX2J1ZmZlcl8p
Ci0jZGVmaW5lIE9USEVSX1ZBTFVFX0FTKGZ2LCB0eXBlKSAgKnJlaW50ZXJwcmV0X2Nhc3Q8dHlw
ZSo+KGZ2LnZhbHVlX2J1ZmZlcl8pCi0jZGVmaW5lIFNFVF9WQUxVRV9BUyh0eXBlLCB2YWx1ZSkg
IFZBTFVFX0FTKHR5cGUpID0gKHZhbHVlKQotCi1GbGFnVmFsdWU6OkZsYWdWYWx1ZSh2b2lkKiB2
YWxidWYsIGNvbnN0IGNoYXIqIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5z
ZmVyX293bmVyc2hpcF9vZl92YWx1ZSkKLSAgICA6IHZhbHVlX2J1ZmZlcl8odmFsYnVmKSwKLSAg
ICAgIG93bnNfdmFsdWVfKHRyYW5zZmVyX293bmVyc2hpcF9vZl92YWx1ZSkgewotICBmb3IgKHR5
cGVfID0gMDsgdHlwZV8gPD0gRlZfTUFYX0lOREVYOyArK3R5cGVfKSB7Ci0gICAgaWYgKCFzdHJj
bXAodHlwZSwgVHlwZU5hbWUoKSkpIHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBhc3Nl
cnQodHlwZV8gPD0gRlZfTUFYX0lOREVYKTsgIC8vIFVua25vd24gdHlwZW5hbWUKLX0KLQotRmxh
Z1ZhbHVlOjp+RmxhZ1ZhbHVlKCkgewotICBpZiAoIW93bnNfdmFsdWVfKSB7Ci0gICAgcmV0dXJu
OwotICB9Ci0gIHN3aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6IGRlbGV0ZSByZWlu
dGVycHJldF9jYXN0PGJvb2wqPih2YWx1ZV9idWZmZXJfKTsgYnJlYWs7Ci0gICAgY2FzZSBGVl9J
TlQzMjogZGVsZXRlIHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzIqPih2YWx1ZV9idWZmZXJfKTsgYnJl
YWs7Ci0gICAgY2FzZSBGVl9JTlQ2NDogZGVsZXRlIHJlaW50ZXJwcmV0X2Nhc3Q8aW50NjQqPih2
YWx1ZV9idWZmZXJfKTsgYnJlYWs7Ci0gICAgY2FzZSBGVl9VSU5UNjQ6IGRlbGV0ZSByZWludGVy
cHJldF9jYXN0PHVpbnQ2NCo+KHZhbHVlX2J1ZmZlcl8pOyBicmVhazsKLSAgICBjYXNlIEZWX0RP
VUJMRTogZGVsZXRlIHJlaW50ZXJwcmV0X2Nhc3Q8ZG91YmxlKj4odmFsdWVfYnVmZmVyXyk7IGJy
ZWFrOwotICAgIGNhc2UgRlZfU1RSSU5HOiBkZWxldGUgcmVpbnRlcnByZXRfY2FzdDxzdHJpbmcq
Pih2YWx1ZV9idWZmZXJfKTsgYnJlYWs7Ci0gIH0KLX0KLQotYm9vbCBGbGFnVmFsdWU6OlBhcnNl
RnJvbShjb25zdCBjaGFyKiB2YWx1ZSkgewotICBpZiAodHlwZV8gPT0gRlZfQk9PTCkgewotICAg
IGNvbnN0IGNoYXIqIGtUcnVlW10gPSB7ICIxIiwgInQiLCAidHJ1ZSIsICJ5IiwgInllcyIgfTsK
LSAgICBjb25zdCBjaGFyKiBrRmFsc2VbXSA9IHsgIjAiLCAiZiIsICJmYWxzZSIsICJuIiwgIm5v
IiB9OwotICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihrVHJ1ZSkgPT0gc2l6ZW9mKGtGYWxzZSks
IHRydWVfZmFsc2VfZXF1YWwpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGtU
cnVlKS9zaXplb2YoKmtUcnVlKTsgKytpKSB7Ci0gICAgICBpZiAoc3RyY2FzZWNtcCh2YWx1ZSwg
a1RydWVbaV0pID09IDApIHsKLSAgICAgICAgU0VUX1ZBTFVFX0FTKGJvb2wsIHRydWUpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0gZWxzZSBpZiAoc3RyY2FzZWNtcCh2YWx1ZSwga0Zh
bHNlW2ldKSA9PSAwKSB7Ci0gICAgICAgIFNFVF9WQUxVRV9BUyhib29sLCBmYWxzZSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7ICAgLy8g
ZGlkbid0IG1hdGNoIGEgbGVnYWwgaW5wdXQKLQotICB9IGVsc2UgaWYgKHR5cGVfID09IEZWX1NU
UklORykgewotICAgIFNFVF9WQUxVRV9BUyhzdHJpbmcsIHZhbHVlKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLSAgfQotCi0gIC8vIE9LLCBpdCdzIGxpa2VseSB0byBiZSBudW1lcmljLCBhbmQgd2UnbGwg
YmUgdXNpbmcgYSBzdHJ0b1hYWCBtZXRob2QuCi0gIGlmICh2YWx1ZVswXSA9PSAnXDAnKSAgIC8v
IGVtcHR5LXN0cmluZyBpcyBvbmx5IGFsbG93ZWQgZm9yIHN0cmluZyB0eXBlLgotICAgIHJldHVy
biBmYWxzZTsKLSAgY2hhciogZW5kOwotICAvLyBMZWFkaW5nIDB4IHB1dHMgdXMgaW4gYmFzZSAx
Ni4gIEJ1dCBsZWFkaW5nIDAgZG9lcyBub3QgcHV0IHVzIGluIGJhc2UgOCEKLSAgLy8gSXQgY2F1
c2VkIHRvbyBtYW55IGJ1Z3Mgd2hlbiB3ZSBoYWQgdGhhdCBiZWhhdmlvci4KLSAgaW50IGJhc2Ug
PSAxMDsgICAgLy8gYnkgZGVmYXVsdAotICBpZiAodmFsdWVbMF0gPT0gJzAnICYmICh2YWx1ZVsx
XSA9PSAneCcgfHwgdmFsdWVbMV0gPT0gJ1gnKSkKLSAgICBiYXNlID0gMTY7Ci0gIGVycm5vID0g
MDsKLQotICBzd2l0Y2ggKHR5cGVfKSB7Ci0gICAgY2FzZSBGVl9JTlQzMjogewotICAgICAgY29u
c3QgaW50NjQgciA9IHN0cnRvNjQodmFsdWUsICZlbmQsIGJhc2UpOwotICAgICAgaWYgKGVycm5v
IHx8IGVuZCAhPSB2YWx1ZSArIHN0cmxlbih2YWx1ZSkpICByZXR1cm4gZmFsc2U7ICAvLyBiYWQg
cGFyc2UKLSAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMj4ocikgIT0gcikgIC8vIHdvcmtlZCwg
YnV0IG51bWJlciBvdXQgb2YgcmFuZ2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgU0VU
X1ZBTFVFX0FTKGludDMyLCBzdGF0aWNfY2FzdDxpbnQzMj4ocikpOwotICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIGNhc2UgRlZfSU5UNjQ6IHsKLSAgICAgIGNvbnN0IGludDY0IHIgPSBz
dHJ0bzY0KHZhbHVlLCAmZW5kLCBiYXNlKTsKLSAgICAgIGlmIChlcnJubyB8fCBlbmQgIT0gdmFs
dWUgKyBzdHJsZW4odmFsdWUpKSAgcmV0dXJuIGZhbHNlOyAgLy8gYmFkIHBhcnNlCi0gICAgICBT
RVRfVkFMVUVfQVMoaW50NjQsIHIpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNh
c2UgRlZfVUlOVDY0OiB7Ci0gICAgICB3aGlsZSAoKnZhbHVlID09ICcgJykgdmFsdWUrKzsKLSAg
ICAgIGlmICgqdmFsdWUgPT0gJy0nKSByZXR1cm4gZmFsc2U7ICAvLyBuZWdhdGl2ZSBudW1iZXIK
LSAgICAgIGNvbnN0IHVpbnQ2NCByID0gc3RydG91NjQodmFsdWUsICZlbmQsIGJhc2UpOwotICAg
ICAgaWYgKGVycm5vIHx8IGVuZCAhPSB2YWx1ZSArIHN0cmxlbih2YWx1ZSkpICByZXR1cm4gZmFs
c2U7ICAvLyBiYWQgcGFyc2UKLSAgICAgIFNFVF9WQUxVRV9BUyh1aW50NjQsIHIpOwotICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhc2UgRlZfRE9VQkxFOiB7Ci0gICAgICBjb25zdCBk
b3VibGUgciA9IHN0cnRvZCh2YWx1ZSwgJmVuZCk7Ci0gICAgICBpZiAoZXJybm8gfHwgZW5kICE9
IHZhbHVlICsgc3RybGVuKHZhbHVlKSkgIHJldHVybiBmYWxzZTsgIC8vIGJhZCBwYXJzZQotICAg
ICAgU0VUX1ZBTFVFX0FTKGRvdWJsZSwgcik7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgZGVmYXVsdDogewotICAgICAgYXNzZXJ0KGZhbHNlKTsgIC8vIHVua25vd24gdHlwZQotICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotfQotCi1zdHJpbmcgRmxhZ1ZhbHVlOjpUb1N0
cmluZygpIGNvbnN0IHsKLSAgY2hhciBpbnRidWZbNjRdOyAgICAvLyBlbm91Z2ggdG8gaG9sZCBl
dmVuIHRoZSBiaWdnZXN0IG51bWJlcgotICBzd2l0Y2ggKHR5cGVfKSB7Ci0gICAgY2FzZSBGVl9C
T09MOgotICAgICAgcmV0dXJuIFZBTFVFX0FTKGJvb2wpID8gInRydWUiIDogImZhbHNlIjsKLSAg
ICBjYXNlIEZWX0lOVDMyOgotICAgICAgc25wcmludGYoaW50YnVmLCBzaXplb2YoaW50YnVmKSwg
IiUiIFBSSWQzMiwgVkFMVUVfQVMoaW50MzIpKTsKLSAgICAgIHJldHVybiBpbnRidWY7Ci0gICAg
Y2FzZSBGVl9JTlQ2NDoKLSAgICAgIHNucHJpbnRmKGludGJ1Ziwgc2l6ZW9mKGludGJ1ZiksICIl
IiBQUklkNjQsIFZBTFVFX0FTKGludDY0KSk7Ci0gICAgICByZXR1cm4gaW50YnVmOwotICAgIGNh
c2UgRlZfVUlOVDY0OgotICAgICAgc25wcmludGYoaW50YnVmLCBzaXplb2YoaW50YnVmKSwgIiUi
IFBSSXU2NCwgVkFMVUVfQVModWludDY0KSk7Ci0gICAgICByZXR1cm4gaW50YnVmOwotICAgIGNh
c2UgRlZfRE9VQkxFOgotICAgICAgc25wcmludGYoaW50YnVmLCBzaXplb2YoaW50YnVmKSwgIiUu
MTdnIiwgVkFMVUVfQVMoZG91YmxlKSk7Ci0gICAgICByZXR1cm4gaW50YnVmOwotICAgIGNhc2Ug
RlZfU1RSSU5HOgotICAgICAgcmV0dXJuIFZBTFVFX0FTKHN0cmluZyk7Ci0gICAgZGVmYXVsdDoK
LSAgICAgIGFzc2VydChmYWxzZSk7Ci0gICAgICByZXR1cm4gIiI7ICAvLyB1bmtub3duIHR5cGUK
LSAgfQotfQotCi1ib29sIEZsYWdWYWx1ZTo6VmFsaWRhdGUoY29uc3QgY2hhciogZmxhZ25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGblByb3RvIHZhbGlkYXRlX2ZuX3By
b3RvKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6Ci0gICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxib29sICgqKShjb25zdCBjaGFyKiwgYm9vbCk+KAot
ICAgICAgICAgIHZhbGlkYXRlX2ZuX3Byb3RvKShmbGFnbmFtZSwgVkFMVUVfQVMoYm9vbCkpOwot
ICAgIGNhc2UgRlZfSU5UMzI6Ci0gICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxib29sICgq
KShjb25zdCBjaGFyKiwgaW50MzIpPigKLSAgICAgICAgICB2YWxpZGF0ZV9mbl9wcm90bykoZmxh
Z25hbWUsIFZBTFVFX0FTKGludDMyKSk7Ci0gICAgY2FzZSBGVl9JTlQ2NDoKLSAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGJvb2wgKCopKGNvbnN0IGNoYXIqLCBpbnQ2NCk+KAotICAgICAg
ICAgIHZhbGlkYXRlX2ZuX3Byb3RvKShmbGFnbmFtZSwgVkFMVUVfQVMoaW50NjQpKTsKLSAgICBj
YXNlIEZWX1VJTlQ2NDoKLSAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGJvb2wgKCopKGNv
bnN0IGNoYXIqLCB1aW50NjQpPigKLSAgICAgICAgICB2YWxpZGF0ZV9mbl9wcm90bykoZmxhZ25h
bWUsIFZBTFVFX0FTKHVpbnQ2NCkpOwotICAgIGNhc2UgRlZfRE9VQkxFOgotICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCAoKikoY29uc3QgY2hhciosIGRvdWJsZSk+KAotICAgICAg
ICAgIHZhbGlkYXRlX2ZuX3Byb3RvKShmbGFnbmFtZSwgVkFMVUVfQVMoZG91YmxlKSk7Ci0gICAg
Y2FzZSBGVl9TVFJJTkc6Ci0gICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxib29sICgqKShj
b25zdCBjaGFyKiwgY29uc3Qgc3RyaW5nJik+KAotICAgICAgICAgIHZhbGlkYXRlX2ZuX3Byb3Rv
KShmbGFnbmFtZSwgVkFMVUVfQVMoc3RyaW5nKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGFzc2Vy
dChmYWxzZSk7ICAvLyB1bmtub3duIHR5cGUKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQot
Ci1jb25zdCBjaGFyKiBGbGFnVmFsdWU6OlR5cGVOYW1lKCkgY29uc3QgewotICBzdGF0aWMgY29u
c3QgY2hhciB0eXBlc1tdID0KLSAgICAgICJib29sXDB4eCIKLSAgICAgICJpbnQzMlwweCIKLSAg
ICAgICJpbnQ2NFwweCIKLSAgICAgICJ1aW50NjRcMCIKLSAgICAgICJkb3VibGVcMCIKLSAgICAg
ICJzdHJpbmciOwotICBpZiAodHlwZV8gPiBGVl9NQVhfSU5ERVgpIHsKLSAgICBhc3NlcnQoZmFs
c2UpOwotICAgIHJldHVybiAiIjsKLSAgfQotICAvLyBEaXJlY3RseSBpbmRleGluZyB0aGUgc3Ry
aW5ncyBpbiB0aGUgJ3R5cGVzJyBzdHJpbmcsIGVhY2ggb2YgdGhlbSBpcyA3IGJ5dGVzIGxvbmcu
Ci0gIHJldHVybiAmdHlwZXNbdHlwZV8gKiA3XTsKLX0KLQotYm9vbCBGbGFnVmFsdWU6OkVxdWFs
KGNvbnN0IEZsYWdWYWx1ZSYgeCkgY29uc3QgewotICBpZiAodHlwZV8gIT0geC50eXBlXykKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIHN3aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6ICAg
cmV0dXJuIFZBTFVFX0FTKGJvb2wpID09IE9USEVSX1ZBTFVFX0FTKHgsIGJvb2wpOwotICAgIGNh
c2UgRlZfSU5UMzI6ICByZXR1cm4gVkFMVUVfQVMoaW50MzIpID09IE9USEVSX1ZBTFVFX0FTKHgs
IGludDMyKTsKLSAgICBjYXNlIEZWX0lOVDY0OiAgcmV0dXJuIFZBTFVFX0FTKGludDY0KSA9PSBP
VEhFUl9WQUxVRV9BUyh4LCBpbnQ2NCk7Ci0gICAgY2FzZSBGVl9VSU5UNjQ6IHJldHVybiBWQUxV
RV9BUyh1aW50NjQpID09IE9USEVSX1ZBTFVFX0FTKHgsIHVpbnQ2NCk7Ci0gICAgY2FzZSBGVl9E
T1VCTEU6IHJldHVybiBWQUxVRV9BUyhkb3VibGUpID09IE9USEVSX1ZBTFVFX0FTKHgsIGRvdWJs
ZSk7Ci0gICAgY2FzZSBGVl9TVFJJTkc6IHJldHVybiBWQUxVRV9BUyhzdHJpbmcpID09IE9USEVS
X1ZBTFVFX0FTKHgsIHN0cmluZyk7Ci0gICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTsgcmV0dXJu
IGZhbHNlOyAgLy8gdW5rbm93biB0eXBlCi0gIH0KLX0KLQotRmxhZ1ZhbHVlKiBGbGFnVmFsdWU6
Ok5ldygpIGNvbnN0IHsKLSAgY29uc3QgY2hhciAqdHlwZSA9IFR5cGVOYW1lKCk7Ci0gIHN3aXRj
aCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6ICAgcmV0dXJuIG5ldyBGbGFnVmFsdWUobmV3
IGJvb2woZmFsc2UpLCB0eXBlLCB0cnVlKTsKLSAgICBjYXNlIEZWX0lOVDMyOiAgcmV0dXJuIG5l
dyBGbGFnVmFsdWUobmV3IGludDMyKDApLCB0eXBlLCB0cnVlKTsKLSAgICBjYXNlIEZWX0lOVDY0
OiAgcmV0dXJuIG5ldyBGbGFnVmFsdWUobmV3IGludDY0KDApLCB0eXBlLCB0cnVlKTsKLSAgICBj
YXNlIEZWX1VJTlQ2NDogcmV0dXJuIG5ldyBGbGFnVmFsdWUobmV3IHVpbnQ2NCgwKSwgdHlwZSwg
dHJ1ZSk7Ci0gICAgY2FzZSBGVl9ET1VCTEU6IHJldHVybiBuZXcgRmxhZ1ZhbHVlKG5ldyBkb3Vi
bGUoMC4wKSwgdHlwZSwgdHJ1ZSk7Ci0gICAgY2FzZSBGVl9TVFJJTkc6IHJldHVybiBuZXcgRmxh
Z1ZhbHVlKG5ldyBzdHJpbmcsIHR5cGUsIHRydWUpOwotICAgIGRlZmF1bHQ6IGFzc2VydChmYWxz
ZSk7IHJldHVybiBOVUxMOyAgLy8gdW5rbm93biB0eXBlCi0gIH0KLX0KLQotdm9pZCBGbGFnVmFs
dWU6OkNvcHlGcm9tKGNvbnN0IEZsYWdWYWx1ZSYgeCkgewotICBhc3NlcnQodHlwZV8gPT0geC50
eXBlXyk7Ci0gIHN3aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6ICAgU0VUX1ZBTFVF
X0FTKGJvb2wsIE9USEVSX1ZBTFVFX0FTKHgsIGJvb2wpKTsgICAgICBicmVhazsKLSAgICBjYXNl
IEZWX0lOVDMyOiAgU0VUX1ZBTFVFX0FTKGludDMyLCBPVEhFUl9WQUxVRV9BUyh4LCBpbnQzMikp
OyAgICBicmVhazsKLSAgICBjYXNlIEZWX0lOVDY0OiAgU0VUX1ZBTFVFX0FTKGludDY0LCBPVEhF
Ul9WQUxVRV9BUyh4LCBpbnQ2NCkpOyAgICBicmVhazsKLSAgICBjYXNlIEZWX1VJTlQ2NDogU0VU
X1ZBTFVFX0FTKHVpbnQ2NCwgT1RIRVJfVkFMVUVfQVMoeCwgdWludDY0KSk7ICBicmVhazsKLSAg
ICBjYXNlIEZWX0RPVUJMRTogU0VUX1ZBTFVFX0FTKGRvdWJsZSwgT1RIRVJfVkFMVUVfQVMoeCwg
ZG91YmxlKSk7ICBicmVhazsKLSAgICBjYXNlIEZWX1NUUklORzogU0VUX1ZBTFVFX0FTKHN0cmlu
ZywgT1RIRVJfVkFMVUVfQVMoeCwgc3RyaW5nKSk7ICBicmVhazsKLSAgICBkZWZhdWx0OiBhc3Nl
cnQoZmFsc2UpOyAgLy8gdW5rbm93biB0eXBlCi0gIH0KLX0KLQotaW50IEZsYWdWYWx1ZTo6VmFs
dWVTaXplKCkgY29uc3QgewotICBpZiAodHlwZV8gPiBGVl9NQVhfSU5ERVgpIHsKLSAgICBhc3Nl
cnQoZmFsc2UpOyAgLy8gdW5rbm93biB0eXBlCi0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgc3RhdGlj
IGNvbnN0IHVpbnQ4IHZhbHVlc2l6ZVtdID0gewotICAgIHNpemVvZihib29sKSwKLSAgICBzaXpl
b2YoaW50MzIpLAotICAgIHNpemVvZihpbnQ2NCksCi0gICAgc2l6ZW9mKHVpbnQ2NCksCi0gICAg
c2l6ZW9mKGRvdWJsZSksCi0gICAgc2l6ZW9mKHN0cmluZyksCi0gIH07Ci0gIHJldHVybiB2YWx1
ZXNpemVbdHlwZV9dOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29tbWFuZExpbmVGbGFnCi0v
LyAgICBUaGlzIHJlcHJlc2VudHMgYSBzaW5nbGUgZmxhZywgaW5jbHVkaW5nIGl0cyBuYW1lLCBk
ZXNjcmlwdGlvbiwKLS8vICAgIGRlZmF1bHQgdmFsdWUsIGFuZCBjdXJyZW50IHZhbHVlLiAgTW9z
dGx5IHRoaXMgc2VydmVzIGFzIGEKLS8vICAgIHN0cnVjdCwgdGhvdWdoIGl0IGFsc28ga25vd3Mg
aG93IHRvIHJlZ2lzdGVyIGl0c2VsZi4KLS8vICAgICAgIEFsbCBDb21tYW5kTGluZUZsYWdzIGFy
ZSBvd25lZCBieSBhIChleGFjdGx5IG9uZSkKLS8vICAgIEZsYWdSZWdpc3RyeS4gIElmIHlvdSB3
aXNoIHRvIG1vZGlmeSBmaWVsZHMgaW4gdGhpcyBjbGFzcywgeW91Ci0vLyAgICBzaG91bGQgYWNx
dWlyZSB0aGUgRmxhZ1JlZ2lzdHJ5IGxvY2sgZm9yIHRoZSByZWdpc3RyeSB0aGF0IG93bnMKLS8v
ICAgIHRoaXMgZmxhZy4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIENvbW1hbmRMaW5lRmxhZyB7
Ci0gcHVibGljOgotICAvLyBOb3RlOiB3ZSB0YWtlIG92ZXIgbWVtb3J5LW93bmVyc2hpcCBvZiBj
dXJyZW50X3ZhbCBhbmQgZGVmYXVsdF92YWwuCi0gIENvbW1hbmRMaW5lRmxhZyhjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBjaGFyKiBoZWxwLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwKLSAgICAgICAg
ICAgICAgICAgIEZsYWdWYWx1ZSogY3VycmVudF92YWwsIEZsYWdWYWx1ZSogZGVmYXVsdF92YWwp
OwotICB+Q29tbWFuZExpbmVGbGFnKCk7Ci0KLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG5hbWVfOyB9Ci0gIGNvbnN0IGNoYXIqIGhlbHAoKSBjb25zdCB7IHJldHVybiBoZWxw
XzsgfQotICBjb25zdCBjaGFyKiBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9Ci0g
IGNvbnN0IGNoYXIqIENsZWFuRmlsZU5hbWUoKSBjb25zdDsgIC8vIG5peGVzIGlycmVsZXZhbnQg
cHJlZml4IHN1Y2ggYXMgaG9tZWRpcgotICBzdHJpbmcgY3VycmVudF92YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIGN1cnJlbnRfLT5Ub1N0cmluZygpOyB9Ci0gIHN0cmluZyBkZWZhdWx0X3ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gZGVmdmFsdWVfLT5Ub1N0cmluZygpOyB9Ci0gIGNvbnN0IGNoYXIqIHR5
cGVfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGRlZnZhbHVlXy0+VHlwZU5hbWUoKTsgfQotICBWYWxp
ZGF0ZUZuUHJvdG8gdmFsaWRhdGVfZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZV9m
bl9wcm90b187IH0KLSAgY29uc3Qgdm9pZCogZmxhZ19wdHIoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50Xy0+dmFsdWVfYnVmZmVyXzsgfQotCi0gIHZvaWQgRmlsbENvbW1hbmRMaW5lRmxhZ0luZm8o
c3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8qIHJlc3VsdCk7Ci0KLSAgLy8gSWYgdmFsaWRhdGVf
Zm5fcHJvdG9fIGlzIG5vbi1OVUxMLCBjYWxscyBpdCBvbiB2YWx1ZSwgcmV0dXJucyByZXN1bHQu
Ci0gIGJvb2wgVmFsaWRhdGUoY29uc3QgRmxhZ1ZhbHVlJiB2YWx1ZSkgY29uc3Q7Ci0gIGJvb2wg
VmFsaWRhdGVDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gVmFsaWRhdGUoKmN1cnJlbnRfKTsgfQot
Ci0gcHJpdmF0ZToKLSAgLy8gZm9yIFNldEZsYWdMb2NrZWQoKSBhbmQgc2V0dGluZyBmbGFnc19i
eV9wdHJfCi0gIGZyaWVuZCBjbGFzcyBGbGFnUmVnaXN0cnk7Ci0gIGZyaWVuZCBjbGFzcyBHRkxB
R1NfTkFNRVNQQUNFOjpGbGFnU2F2ZXJJbXBsOyAgLy8gZm9yIGNsb25pbmcgdGhlIHZhbHVlcwot
ICAvLyBzZXQgdmFsaWRhdGVfZm4KLSAgZnJpZW5kIGJvb2wgQWRkRmxhZ1ZhbGlkYXRvcihjb25z
dCB2b2lkKiwgVmFsaWRhdGVGblByb3RvKTsKLQotICAvLyBUaGlzIGNvcGllcyBhbGwgdGhlIG5v
bi1jb25zdCBtZW1iZXJzOiBtb2RpZmllZCwgcHJvY2Vzc2VkLCBkZWZ2YWx1ZSwgZXRjLgotICB2
b2lkIENvcHlGcm9tKGNvbnN0IENvbW1hbmRMaW5lRmxhZyYgc3JjKTsKLQotICB2b2lkIFVwZGF0
ZU1vZGlmaWVkQml0KCk7Ci0KLSAgY29uc3QgY2hhciogY29uc3QgbmFtZV87ICAgICAvLyBGbGFn
IG5hbWUKLSAgY29uc3QgY2hhciogY29uc3QgaGVscF87ICAgICAvLyBIZWxwIG1lc3NhZ2UKLSAg
Y29uc3QgY2hhciogY29uc3QgZmlsZV87ICAgICAvLyBXaGljaCBmaWxlIGRpZCB0aGlzIGNvbWUg
ZnJvbT8KLSAgYm9vbCBtb2RpZmllZF87ICAgICAgICAgICAgICAvLyBTZXQgYWZ0ZXIgZGVmYXVs
dCBhc3NpZ25tZW50PwotICBGbGFnVmFsdWUqIGRlZnZhbHVlXzsgICAgICAgIC8vIERlZmF1bHQg
dmFsdWUgZm9yIGZsYWcKLSAgRmxhZ1ZhbHVlKiBjdXJyZW50XzsgICAgICAgICAvLyBDdXJyZW50
IHZhbHVlIGZvciBmbGFnCi0gIC8vIFRoaXMgaXMgYSBjYXN0ZWQsICdnZW5lcmljJyB2ZXJzaW9u
IG9mIHZhbGlkYXRlX2ZuLCB3aGljaCBhY3R1YWxseQotICAvLyB0YWtlcyBhIGZsYWctdmFsdWUg
YXMgYW4gYXJnICh2b2lkICgqdmFsaWRhdGVfZm4pKGJvb2wpLCBzYXkpLgotICAvLyBXaGVuIHdl
IHBhc3MgdGhpcyB0byBjdXJyZW50Xy0+VmFsaWRhdGUoKSwgaXQgd2lsbCBjYXN0IGl0IGJhY2sg
dG8KLSAgLy8gdGhlIHByb3BlciB0eXBlLiAgVGhpcyBtYXkgYmUgTlVMTCB0byBtZWFuIHdlIGhh
dmUgbm8gdmFsaWRhdGVfZm4uCi0gIFZhbGlkYXRlRm5Qcm90byB2YWxpZGF0ZV9mbl9wcm90b187
Ci0KLSAgQ29tbWFuZExpbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZyYpOyAgIC8vIG5vIGNv
cHlpbmchCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENvbW1hbmRMaW5lRmxhZyYpOwotfTsKLQot
Q29tbWFuZExpbmVGbGFnOjpDb21tYW5kTGluZUZsYWcoY29uc3QgY2hhciogbmFtZSwgY29uc3Qg
Y2hhciogaGVscCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1ZhbHVlKiBj
dXJyZW50X3ZhbCwgRmxhZ1ZhbHVlKiBkZWZhdWx0X3ZhbCkKLSAgICA6IG5hbWVfKG5hbWUpLCBo
ZWxwXyhoZWxwKSwgZmlsZV8oZmlsZW5hbWUpLCBtb2RpZmllZF8oZmFsc2UpLAotICAgICAgZGVm
dmFsdWVfKGRlZmF1bHRfdmFsKSwgY3VycmVudF8oY3VycmVudF92YWwpLCB2YWxpZGF0ZV9mbl9w
cm90b18oTlVMTCkgewotfQotCi1Db21tYW5kTGluZUZsYWc6On5Db21tYW5kTGluZUZsYWcoKSB7
Ci0gIGRlbGV0ZSBjdXJyZW50XzsKLSAgZGVsZXRlIGRlZnZhbHVlXzsKLX0KLQotY29uc3QgY2hh
ciogQ29tbWFuZExpbmVGbGFnOjpDbGVhbkZpbGVOYW1lKCkgY29uc3QgewotICAvLyBDb21wdXRl
IHRvcC1sZXZlbCBkaXJlY3RvcnkgJiBmaWxlIHRoYXQgdGhpcyBhcHBlYXJzIGluCi0gIC8vIHNl
YXJjaCBmdWxsIHBhdGggYmFja3dhcmRzLgotICAvLyBTdG9wIGdvaW5nIGJhY2t3YXJkcyBhdCBr
Um9vdERpcjsgYW5kIHNraXAgYnkgdGhlIGZpcnN0IHNsYXNoLgotICBzdGF0aWMgY29uc3QgY2hh
ciBrUm9vdERpcltdID0gIiI7ICAgIC8vIGNhbiBzZXQgdGhpcyB0byByb290IGRpcmVjdG9yeSwK
LQotICBpZiAoc2l6ZW9mKGtSb290RGlyKS0xID09IDApICAgICAgICAgIC8vIG5vIHByZWZpeCB0
byBzdHJpcAotICAgIHJldHVybiBmaWxlbmFtZSgpOwotCi0gIGNvbnN0IGNoYXIqIGNsZWFuX25h
bWUgPSBmaWxlbmFtZSgpICsgc3RybGVuKGZpbGVuYW1lKCkpIC0gMTsKLSAgd2hpbGUgKCBjbGVh
bl9uYW1lID4gZmlsZW5hbWUoKSApIHsKLSAgICBpZiAoKmNsZWFuX25hbWUgPT0gUEFUSF9TRVBB
UkFUT1IpIHsKLSAgICAgIGlmIChzdHJuY21wKGNsZWFuX25hbWUsIGtSb290RGlyLCBzaXplb2Yo
a1Jvb3REaXIpLTEpID09IDApIHsKLSAgICAgICAgY2xlYW5fbmFtZSArPSBzaXplb2Yoa1Jvb3RE
aXIpLTE7ICAgIC8vIHBhc3Qgcm9vdC1kaXIKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAg
fQotICAgIC0tY2xlYW5fbmFtZTsKLSAgfQotICB3aGlsZSAoICpjbGVhbl9uYW1lID09IFBBVEhf
U0VQQVJBVE9SICkgKytjbGVhbl9uYW1lOyAgLy8gU2tpcCBhbnkgc2xhc2hlcwotICByZXR1cm4g
Y2xlYW5fbmFtZTsKLX0KLQotdm9pZCBDb21tYW5kTGluZUZsYWc6OkZpbGxDb21tYW5kTGluZUZs
YWdJbmZvKAotICAgIENvbW1hbmRMaW5lRmxhZ0luZm8qIHJlc3VsdCkgewotICByZXN1bHQtPm5h
bWUgPSBuYW1lKCk7Ci0gIHJlc3VsdC0+dHlwZSA9IHR5cGVfbmFtZSgpOwotICByZXN1bHQtPmRl
c2NyaXB0aW9uID0gaGVscCgpOwotICByZXN1bHQtPmN1cnJlbnRfdmFsdWUgPSBjdXJyZW50X3Zh
bHVlKCk7Ci0gIHJlc3VsdC0+ZGVmYXVsdF92YWx1ZSA9IGRlZmF1bHRfdmFsdWUoKTsKLSAgcmVz
dWx0LT5maWxlbmFtZSA9IENsZWFuRmlsZU5hbWUoKTsKLSAgVXBkYXRlTW9kaWZpZWRCaXQoKTsK
LSAgcmVzdWx0LT5pc19kZWZhdWx0ID0gIW1vZGlmaWVkXzsKLSAgcmVzdWx0LT5oYXNfdmFsaWRh
dG9yX2ZuID0gdmFsaWRhdGVfZnVuY3Rpb24oKSAhPSBOVUxMOwotICByZXN1bHQtPmZsYWdfcHRy
ID0gZmxhZ19wdHIoKTsKLX0KLQotdm9pZCBDb21tYW5kTGluZUZsYWc6OlVwZGF0ZU1vZGlmaWVk
Qml0KCkgewotICAvLyBVcGRhdGUgdGhlICJtb2RpZmllZCIgYml0IGluIGNhc2Ugc29tZWJvZHkg
YnlwYXNzZWQgdGhlCi0gIC8vIEZsYWdzIEFQSSBhbmQgd3JvdGUgZGlyZWN0bHkgdGhyb3VnaCB0
aGUgRkxBR1NfbmFtZSB2YXJpYWJsZS4KLSAgaWYgKCFtb2RpZmllZF8gJiYgIWN1cnJlbnRfLT5F
cXVhbCgqZGVmdmFsdWVfKSkgewotICAgIG1vZGlmaWVkXyA9IHRydWU7Ci0gIH0KLX0KLQotdm9p
ZCBDb21tYW5kTGluZUZsYWc6OkNvcHlGcm9tKGNvbnN0IENvbW1hbmRMaW5lRmxhZyYgc3JjKSB7
Ci0gIC8vIE5vdGUgd2Ugb25seSBjb3B5IHRoZSBub24tY29uc3QgbWVtYmVyczsgb3RoZXJzIGFy
ZSBmaXhlZCBhdCBjb25zdHJ1Y3QgdGltZQotICBpZiAobW9kaWZpZWRfICE9IHNyYy5tb2RpZmll
ZF8pIG1vZGlmaWVkXyA9IHNyYy5tb2RpZmllZF87Ci0gIGlmICghY3VycmVudF8tPkVxdWFsKCpz
cmMuY3VycmVudF8pKSBjdXJyZW50Xy0+Q29weUZyb20oKnNyYy5jdXJyZW50Xyk7Ci0gIGlmICgh
ZGVmdmFsdWVfLT5FcXVhbCgqc3JjLmRlZnZhbHVlXykpIGRlZnZhbHVlXy0+Q29weUZyb20oKnNy
Yy5kZWZ2YWx1ZV8pOwotICBpZiAodmFsaWRhdGVfZm5fcHJvdG9fICE9IHNyYy52YWxpZGF0ZV9m
bl9wcm90b18pCi0gICAgdmFsaWRhdGVfZm5fcHJvdG9fID0gc3JjLnZhbGlkYXRlX2ZuX3Byb3Rv
XzsKLX0KLQotYm9vbCBDb21tYW5kTGluZUZsYWc6OlZhbGlkYXRlKGNvbnN0IEZsYWdWYWx1ZSYg
dmFsdWUpIGNvbnN0IHsKLQotICBpZiAodmFsaWRhdGVfZnVuY3Rpb24oKSA9PSBOVUxMKQotICAg
IHJldHVybiB0cnVlOwotICBlbHNlCi0gICAgcmV0dXJuIHZhbHVlLlZhbGlkYXRlKG5hbWUoKSwg
dmFsaWRhdGVfZnVuY3Rpb24oKSk7Ci19Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEZsYWdSZWdp
c3RyeQotLy8gICAgQSBGbGFnUmVnaXN0cnkgc2luZ2xldG9uIG9iamVjdCBob2xkcyBhbGwgZmxh
ZyBvYmplY3RzIGluZGV4ZWQKLS8vICAgIGJ5IHRoZWlyIG5hbWVzIHNvIHRoYXQgaWYgeW91IGtu
b3cgYSBmbGFnJ3MgbmFtZSAoYXMgYSBDCi0vLyAgICBzdHJpbmcpLCB5b3UgY2FuIGFjY2VzcyBv
ciBzZXQgaXQuICBJZiB0aGUgZnVuY3Rpb24gaXMgbmFtZWQKLS8vICAgIEZvb0xvY2tlZCgpLCB5
b3UgbXVzdCBvd24gdGhlIHJlZ2lzdHJ5IGxvY2sgYmVmb3JlIGNhbGxpbmcKLS8vICAgIHRoZSBm
dW5jdGlvbjsgb3RoZXJ3aXNlLCB5b3Ugc2hvdWxkICpub3QqIGhvbGQgdGhlIGxvY2ssIGFuZAot
Ly8gICAgdGhlIGZ1bmN0aW9uIHdpbGwgYWNxdWlyZSBpdCBpdHNlbGYgaWYgbmVlZGVkLgotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotc3RydWN0IFN0cmluZ0NtcCB7ICAvLyBVc2VkIGJ5IHRoZSBGbGFnUmVn
aXN0cnkgbWFwIGNsYXNzIHRvIGNvbXBhcmUgY2hhcioncwotICBib29sIG9wZXJhdG9yKCkgKGNv
bnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgY29uc3QgewotICAgIHJldHVybiAoc3RyY21w
KHMxLCBzMikgPCAwKTsKLSAgfQotfTsKLQotCi1jbGFzcyBGbGFnUmVnaXN0cnkgewotIHB1Ymxp
YzoKLSAgRmxhZ1JlZ2lzdHJ5KCkgewotICB9Ci0gIH5GbGFnUmVnaXN0cnkoKSB7Ci0gICAgLy8g
Tm90IHVzaW5nIFNUTERlbGV0ZUVsZW1lbnRzIGFzIHRoYXQgcmVzaWRlcyBpbiB1dGlsIGFuZCB0
aGlzCi0gICAgLy8gY2xhc3MgaXMgYmFzZS4KLSAgICBmb3IgKEZsYWdNYXA6Oml0ZXJhdG9yIHAg
PSBmbGFnc18uYmVnaW4oKSwgZSA9IGZsYWdzXy5lbmQoKTsgcCAhPSBlOyArK3ApIHsKLSAgICAg
IENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IHAtPnNlY29uZDsKLSAgICAgIGRlbGV0ZSBmbGFnOwot
ICAgIH0KLSAgfQotCi0gIHN0YXRpYyB2b2lkIERlbGV0ZUdsb2JhbFJlZ2lzdHJ5KCkgewotICAg
IGRlbGV0ZSBnbG9iYWxfcmVnaXN0cnlfOwotICAgIGdsb2JhbF9yZWdpc3RyeV8gPSBOVUxMOwot
ICB9Ci0KLSAgLy8gU3RvcmUgYSBmbGFnIGluIHRoaXMgcmVnaXN0cnkuICBUYWtlcyBvd25lcnNo
aXAgb2YgdGhlIGdpdmVuIHBvaW50ZXIuCi0gIHZvaWQgUmVnaXN0ZXJGbGFnKENvbW1hbmRMaW5l
RmxhZyogZmxhZyk7Ci0KLSAgdm9pZCBMb2NrKCkgeyBsb2NrXy5Mb2NrKCk7IH0KLSAgdm9pZCBV
bmxvY2soKSB7IGxvY2tfLlVubG9jaygpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgZmxhZyBvYmpl
Y3QgZm9yIHRoZSBzcGVjaWZpZWQgbmFtZSwgb3IgTlVMTCBpZiBub3QgZm91bmQuCi0gIENvbW1h
bmRMaW5lRmxhZyogRmluZEZsYWdMb2NrZWQoY29uc3QgY2hhciogbmFtZSk7Ci0KLSAgLy8gUmV0
dXJucyB0aGUgZmxhZyBvYmplY3Qgd2hvc2UgY3VycmVudC12YWx1ZSBpcyBzdG9yZWQgYXQgZmxh
Z19wdHIuCi0gIC8vIFRoYXQgaXMsIGZvciB3aG9tIGN1cnJlbnRfLT52YWx1ZV9idWZmZXJfID09
IGZsYWdfcHRyCi0gIENvbW1hbmRMaW5lRmxhZyogRmluZEZsYWdWaWFQdHJMb2NrZWQoY29uc3Qg
dm9pZCogZmxhZ19wdHIpOwotCi0gIC8vIEEgZmFuY2llciBmb3JtIG9mIEZpbmRGbGFnIHRoYXQg
d29ya3MgY29ycmVjdGx5IGlmIG5hbWUgaXMgb2YgdGhlCi0gIC8vIGZvcm0gZmxhZz12YWx1ZS4g
IEluIHRoYXQgY2FzZSwgd2Ugc2V0IGtleSB0byBwb2ludCB0byBmbGFnLCBhbmQKLSAgLy8gbW9k
aWZ5IHYgdG8gcG9pbnQgdG8gdGhlIHZhbHVlIChpZiBwcmVzZW50KSwgYW5kIHJldHVybiB0aGUg
ZmxhZwotICAvLyB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgSWYgdGhlIGZsYWcgZG9lcyBub3QgZXhp
c3QsIHJldHVybnMgTlVMTAotICAvLyBhbmQgc2V0cyBlcnJvcl9tZXNzYWdlLgotICBDb21tYW5k
TGluZUZsYWcqIFNwbGl0QXJndW1lbnRMb2NrZWQoY29uc3QgY2hhciogYXJndW1lbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcqIGtleSwgY29uc3QgY2hh
cioqIHYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcqIGVy
cm9yX21lc3NhZ2UpOwotCi0gIC8vIFNldCB0aGUgdmFsdWUgb2YgYSBmbGFnLiAgSWYgdGhlIGZs
YWcgd2FzIHN1Y2Nlc3NmdWxseSBzZXQgdG8KLSAgLy8gdmFsdWUsIHNldCBtc2cgdG8gaW5kaWNh
dGUgdGhlIG5ldyBmbGFnLXZhbHVlLCBhbmQgcmV0dXJuIHRydWUuCi0gIC8vIE90aGVyd2lzZSwg
c2V0IG1zZyB0byBpbmRpY2F0ZSB0aGUgZXJyb3IsIGxlYXZlIGZsYWcgdW5jaGFuZ2VkLAotICAv
LyBhbmQgcmV0dXJuIGZhbHNlLiAgbXNnIGNhbiBiZSBOVUxMLgotICBib29sIFNldEZsYWdMb2Nr
ZWQoQ29tbWFuZExpbmVGbGFnKiBmbGFnLCBjb25zdCBjaGFyKiB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSwgc3RyaW5nKiBtc2cpOwotCi0gIHN0
YXRpYyBGbGFnUmVnaXN0cnkqIEdsb2JhbFJlZ2lzdHJ5KCk7ICAgLy8gcmV0dXJucyBhIHNpbmds
ZXRvbiByZWdpc3RyeQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIEdGTEFHU19OQU1FU1BB
Q0U6OkZsYWdTYXZlckltcGw7ICAvLyByZWFkcyBhbGwgdGhlIGZsYWdzIGluIG9yZGVyIHRvIGNv
cHkgdGhlbQotICBmcmllbmQgY2xhc3MgQ29tbWFuZExpbmVGbGFnUGFyc2VyOyAgICAvLyBmb3Ig
VmFsaWRhdGVBbGxGbGFncwotICBmcmllbmQgdm9pZCBHRkxBR1NfTkFNRVNQQUNFOjpHZXRBbGxG
bGFncyh2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4qKTsKLQotICAvLyBUaGUgbWFwIGZyb20g
bmFtZSB0byBmbGFnLCBmb3IgRmluZEZsYWdMb2NrZWQoKS4KLSAgdHlwZWRlZiBtYXA8Y29uc3Qg
Y2hhciosIENvbW1hbmRMaW5lRmxhZyosIFN0cmluZ0NtcD4gRmxhZ01hcDsKLSAgdHlwZWRlZiBG
bGFnTWFwOjppdGVyYXRvciBGbGFnSXRlcmF0b3I7Ci0gIHR5cGVkZWYgRmxhZ01hcDo6Y29uc3Rf
aXRlcmF0b3IgRmxhZ0NvbnN0SXRlcmF0b3I7Ci0gIEZsYWdNYXAgZmxhZ3NfOwotCi0gIC8vIFRo
ZSBtYXAgZnJvbSBjdXJyZW50LXZhbHVlIHBvaW50ZXIgdG8gZmxhZywgZm8gRmluZEZsYWdWaWFQ
dHJMb2NrZWQoKS4KLSAgdHlwZWRlZiBtYXA8Y29uc3Qgdm9pZCosIENvbW1hbmRMaW5lRmxhZyo+
IEZsYWdQdHJNYXA7Ci0gIEZsYWdQdHJNYXAgZmxhZ3NfYnlfcHRyXzsKLQotICBzdGF0aWMgRmxh
Z1JlZ2lzdHJ5KiBnbG9iYWxfcmVnaXN0cnlfOyAgIC8vIGEgc2luZ2xldG9uIHJlZ2lzdHJ5Ci0K
LSAgTXV0ZXggbG9ja187Ci0gIHN0YXRpYyBNdXRleCBnbG9iYWxfcmVnaXN0cnlfbG9ja187Ci0K
LSAgc3RhdGljIHZvaWQgSW5pdEdsb2JhbFJlZ2lzdHJ5KCk7Ci0KLSAgLy8gRGlzYWxsb3cKLSAg
RmxhZ1JlZ2lzdHJ5KGNvbnN0IEZsYWdSZWdpc3RyeSYpOwotICBGbGFnUmVnaXN0cnkmIG9wZXJh
dG9yPShjb25zdCBGbGFnUmVnaXN0cnkmKTsKLX07Ci0KLWNsYXNzIEZsYWdSZWdpc3RyeUxvY2sg
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRmxhZ1JlZ2lzdHJ5TG9jayhGbGFnUmVnaXN0cnkqIGZy
KSA6IGZyXyhmcikgeyBmcl8tPkxvY2soKTsgfQotICB+RmxhZ1JlZ2lzdHJ5TG9jaygpIHsgZnJf
LT5VbmxvY2soKTsgfQotIHByaXZhdGU6Ci0gIEZsYWdSZWdpc3RyeSAqY29uc3QgZnJfOwotfTsK
LQotCi12b2lkIEZsYWdSZWdpc3RyeTo6UmVnaXN0ZXJGbGFnKENvbW1hbmRMaW5lRmxhZyogZmxh
ZykgewotICBMb2NrKCk7Ci0gIHBhaXI8RmxhZ0l0ZXJhdG9yLCBib29sPiBpbnMgPQotICAgIGZs
YWdzXy5pbnNlcnQocGFpcjxjb25zdCBjaGFyKiwgQ29tbWFuZExpbmVGbGFnKj4oZmxhZy0+bmFt
ZSgpLCBmbGFnKSk7Ci0gIGlmIChpbnMuc2Vjb25kID09IGZhbHNlKSB7ICAgLy8gbWVhbnMgdGhl
IG5hbWUgd2FzIGFscmVhZHkgaW4gdGhlIG1hcAotICAgIGlmIChzdHJjbXAoaW5zLmZpcnN0LT5z
ZWNvbmQtPmZpbGVuYW1lKCksIGZsYWctPmZpbGVuYW1lKCkpICE9IDApIHsKLSAgICAgIFJlcG9y
dEVycm9yKERJRSwgIkVSUk9SOiBmbGFnICclcycgd2FzIGRlZmluZWQgbW9yZSB0aGFuIG9uY2Ug
IgotICAgICAgICAgICAgICAgICAgIihpbiBmaWxlcyAnJXMnIGFuZCAnJXMnKS5cbiIsCi0gICAg
ICAgICAgICAgICAgICBmbGFnLT5uYW1lKCksCi0gICAgICAgICAgICAgICAgICBpbnMuZmlyc3Qt
PnNlY29uZC0+ZmlsZW5hbWUoKSwKLSAgICAgICAgICAgICAgICAgIGZsYWctPmZpbGVuYW1lKCkp
OwotICAgIH0gZWxzZSB7Ci0gICAgICBSZXBvcnRFcnJvcihESUUsICJFUlJPUjogc29tZXRoaW5n
IHdyb25nIHdpdGggZmxhZyAnJXMnIGluIGZpbGUgJyVzJy4gICIKLSAgICAgICAgICAgICAgICAg
ICJPbmUgcG9zc2liaWxpdHk6IGZpbGUgJyVzJyBpcyBiZWluZyBsaW5rZWQgYm90aCBzdGF0aWNh
bGx5ICIKLSAgICAgICAgICAgICAgICAgICJhbmQgZHluYW1pY2FsbHkgaW50byB0aGlzIGV4ZWN1
dGFibGUuXG4iLAotICAgICAgICAgICAgICAgICAgZmxhZy0+bmFtZSgpLAotICAgICAgICAgICAg
ICAgICAgZmxhZy0+ZmlsZW5hbWUoKSwgZmxhZy0+ZmlsZW5hbWUoKSk7Ci0gICAgfQotICB9Ci0g
IC8vIEFsc28gYWRkIHRvIHRoZSBmbGFnc19ieV9wdHJfIG1hcC4KLSAgZmxhZ3NfYnlfcHRyX1tm
bGFnLT5jdXJyZW50Xy0+dmFsdWVfYnVmZmVyX10gPSBmbGFnOwotICBVbmxvY2soKTsKLX0KLQot
Q29tbWFuZExpbmVGbGFnKiBGbGFnUmVnaXN0cnk6OkZpbmRGbGFnTG9ja2VkKGNvbnN0IGNoYXIq
IG5hbWUpIHsKLSAgRmxhZ0NvbnN0SXRlcmF0b3IgaSA9IGZsYWdzXy5maW5kKG5hbWUpOwotICBp
ZiAoaSA9PSBmbGFnc18uZW5kKCkpIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfSBlbHNlIHsKLSAg
ICByZXR1cm4gaS0+c2Vjb25kOwotICB9Ci19Ci0KLUNvbW1hbmRMaW5lRmxhZyogRmxhZ1JlZ2lz
dHJ5OjpGaW5kRmxhZ1ZpYVB0ckxvY2tlZChjb25zdCB2b2lkKiBmbGFnX3B0cikgewotICBGbGFn
UHRyTWFwOjpjb25zdF9pdGVyYXRvciBpID0gZmxhZ3NfYnlfcHRyXy5maW5kKGZsYWdfcHRyKTsK
LSAgaWYgKGkgPT0gZmxhZ3NfYnlfcHRyXy5lbmQoKSkgewotICAgIHJldHVybiBOVUxMOwotICB9
IGVsc2UgewotICAgIHJldHVybiBpLT5zZWNvbmQ7Ci0gIH0KLX0KLQotQ29tbWFuZExpbmVGbGFn
KiBGbGFnUmVnaXN0cnk6OlNwbGl0QXJndW1lbnRMb2NrZWQoY29uc3QgY2hhciogYXJnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nKiBr
ZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiogdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZyogZXJyb3JfbWVzc2FnZSkgewotICAvLyBGaW5kIHRoZSBmbGFnIG9i
amVjdCBmb3IgdGhpcyBvcHRpb24KLSAgY29uc3QgY2hhciogZmxhZ19uYW1lOwotICBjb25zdCBj
aGFyKiB2YWx1ZSA9IHN0cmNocihhcmcsICc9Jyk7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0g
ICAga2V5LT5hc3NpZ24oYXJnKTsKLSAgICAqdiA9IE5VTEw7Ci0gIH0gZWxzZSB7Ci0gICAgLy8g
U3RyaXAgb3V0IHRoZSAiPXZhbHVlIiBwb3J0aW9uIGZyb20gYXJnCi0gICAga2V5LT5hc3NpZ24o
YXJnLCB2YWx1ZS1hcmcpOwotICAgICp2ID0gKyt2YWx1ZTsgICAgLy8gYWR2YW5jZSBwYXN0IHRo
ZSAnPScKLSAgfQotICBmbGFnX25hbWUgPSBrZXktPmNfc3RyKCk7Ci0KLSAgQ29tbWFuZExpbmVG
bGFnKiBmbGFnID0gRmluZEZsYWdMb2NrZWQoZmxhZ19uYW1lKTsKLQotICBpZiAoZmxhZyA9PSBO
VUxMKSB7Ci0gICAgLy8gSWYgd2UgY2FuJ3QgZmluZCB0aGUgZmxhZy1uYW1lLCB0aGVuIHdlIHNo
b3VsZCByZXR1cm4gYW4gZXJyb3IuCi0gICAgLy8gVGhlIG9uZSBleGNlcHRpb24gaXMgaWYgMSkg
dGhlIGZsYWctbmFtZSBpcyAnbm94JywgMikgdGhlcmUKLSAgICAvLyBleGlzdHMgYSBmbGFnIG5h
bWVkICd4JywgYW5kIDMpICd4JyBpcyBhIGJvb2xlYW4gZmxhZy4KLSAgICAvLyBJbiB0aGF0IGNh
c2UsIHdlIHdhbnQgdG8gcmV0dXJuIGZsYWcgJ3gnLgotICAgIGlmICghKGZsYWdfbmFtZVswXSA9
PSAnbicgJiYgZmxhZ19uYW1lWzFdID09ICdvJykpIHsKLSAgICAgIC8vIGZsYWctbmFtZSBpcyBu
b3QgJ25veCcsIHNvIHdlJ3JlIG5vdCBpbiB0aGUgZXhjZXB0aW9uIGNhc2UuCi0gICAgICAqZXJy
b3JfbWVzc2FnZSA9IFN0cmluZ1ByaW50ZigiJXN1bmtub3duIGNvbW1hbmQgbGluZSBmbGFnICcl
cydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRXJyb3IsIGtleS0+
Y19zdHIoKSk7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmxhZyA9IEZpbmRGbGFn
TG9ja2VkKGZsYWdfbmFtZSsyKTsKLSAgICBpZiAoZmxhZyA9PSBOVUxMKSB7Ci0gICAgICAvLyBO
byBmbGFnIG5hbWVkICd4JyBleGlzdHMsIHNvIHdlJ3JlIG5vdCBpbiB0aGUgZXhjZXB0aW9uIGNh
c2UuCi0gICAgICAqZXJyb3JfbWVzc2FnZSA9IFN0cmluZ1ByaW50ZigiJXN1bmtub3duIGNvbW1h
bmQgbGluZSBmbGFnICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrRXJyb3IsIGtleS0+Y19zdHIoKSk7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAg
aWYgKHN0cmNtcChmbGFnLT50eXBlX25hbWUoKSwgImJvb2wiKSAhPSAwKSB7Ci0gICAgICAvLyAn
eCcgZXhpc3RzIGJ1dCBpcyBub3QgYm9vbGVhbiwgc28gd2UncmUgbm90IGluIHRoZSBleGNlcHRp
b24gY2FzZS4KLSAgICAgICplcnJvcl9tZXNzYWdlID0gU3RyaW5nUHJpbnRmKAotICAgICAgICAg
ICIlc2Jvb2xlYW4gdmFsdWUgKCVzKSBzcGVjaWZpZWQgZm9yICVzIGNvbW1hbmQgbGluZSBmbGFn
XG4iLAotICAgICAgICAgIGtFcnJvciwga2V5LT5jX3N0cigpLCBmbGFnLT50eXBlX25hbWUoKSk7
Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgLy8gV2UncmUgaW4gdGhlIGV4Y2VwdGlv
biBjYXNlIQotICAgIC8vIE1ha2UgdXAgYSBmYWtlIHZhbHVlIHRvIHJlcGxhY2UgdGhlICJubyIg
d2Ugc3RyaXBwZWQgb3V0Ci0gICAga2V5LT5hc3NpZ24oZmxhZ19uYW1lKzIpOyAgIC8vIHRoZSBu
YW1lIHdpdGhvdXQgdGhlICJubyIKLSAgICAqdiA9ICIwIjsKLSAgfQotCi0gIC8vIEFzc2lnbiBh
IHZhbHVlIGlmIHRoaXMgaXMgYSBib29sZWFuIGZsYWcKLSAgaWYgKCp2ID09IE5VTEwgJiYgc3Ry
Y21wKGZsYWctPnR5cGVfbmFtZSgpLCAiYm9vbCIpID09IDApIHsKLSAgICAqdiA9ICIxIjsgICAg
Ly8gdGhlIC0tbm94IGNhc2Ugd2FzIGFscmVhZHkgaGFuZGxlZCwgc28gdGhpcyBpcyB0aGUgLS14
IGNhc2UKLSAgfQotCi0gIHJldHVybiBmbGFnOwotfQotCi1ib29sIFRyeVBhcnNlTG9ja2VkKGNv
bnN0IENvbW1hbmRMaW5lRmxhZyogZmxhZywgRmxhZ1ZhbHVlKiBmbGFnX3ZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSwgc3RyaW5nKiBtc2cpIHsKLSAgLy8gVXNl
IHRlbmF0aXZlX3ZhbHVlLCBub3QgZmxhZ192YWx1ZSwgdW50aWwgd2Uga25vdyB2YWx1ZSBpcyB2
YWxpZC4KLSAgRmxhZ1ZhbHVlKiB0ZW50YXRpdmVfdmFsdWUgPSBmbGFnX3ZhbHVlLT5OZXcoKTsK
LSAgaWYgKCF0ZW50YXRpdmVfdmFsdWUtPlBhcnNlRnJvbSh2YWx1ZSkpIHsKLSAgICBpZiAobXNn
KSB7Ci0gICAgICBTdHJpbmdBcHBlbmRGKG1zZywKLSAgICAgICAgICAgICAgICAgICAgIiVzaWxs
ZWdhbCB2YWx1ZSAnJXMnIHNwZWNpZmllZCBmb3IgJXMgZmxhZyAnJXMnXG4iLAotICAgICAgICAg
ICAgICAgICAgICBrRXJyb3IsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICBmbGFnLT50eXBl
X25hbWUoKSwgZmxhZy0+bmFtZSgpKTsKLSAgICB9Ci0gICAgZGVsZXRlIHRlbnRhdGl2ZV92YWx1
ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSBpZiAoIWZsYWctPlZhbGlkYXRlKCp0ZW50
YXRpdmVfdmFsdWUpKSB7Ci0gICAgaWYgKG1zZykgewotICAgICAgU3RyaW5nQXBwZW5kRihtc2cs
Ci0gICAgICAgICAgIiVzZmFpbGVkIHZhbGlkYXRpb24gb2YgbmV3IHZhbHVlICclcycgZm9yIGZs
YWcgJyVzJ1xuIiwKLSAgICAgICAgICBrRXJyb3IsIHRlbnRhdGl2ZV92YWx1ZS0+VG9TdHJpbmco
KS5jX3N0cigpLAotICAgICAgICAgIGZsYWctPm5hbWUoKSk7Ci0gICAgfQotICAgIGRlbGV0ZSB0
ZW50YXRpdmVfdmFsdWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIGZsYWdf
dmFsdWUtPkNvcHlGcm9tKCp0ZW50YXRpdmVfdmFsdWUpOwotICAgIGlmIChtc2cpIHsKLSAgICAg
IFN0cmluZ0FwcGVuZEYobXNnLCAiJXMgc2V0IHRvICVzXG4iLAotICAgICAgICAgICAgICAgICAg
ICBmbGFnLT5uYW1lKCksIGZsYWdfdmFsdWUtPlRvU3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgfQot
ICAgIGRlbGV0ZSB0ZW50YXRpdmVfdmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KLQot
Ym9vbCBGbGFnUmVnaXN0cnk6OlNldEZsYWdMb2NrZWQoQ29tbWFuZExpbmVGbGFnKiBmbGFnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcqIG1zZykgewotICBmbGFnLT5V
cGRhdGVNb2RpZmllZEJpdCgpOwotICBzd2l0Y2ggKHNldF9tb2RlKSB7Ci0gICAgY2FzZSBTRVRf
RkxBR1NfVkFMVUU6IHsKLSAgICAgIC8vIHNldCBvciBtb2RpZnkgdGhlIGZsYWcncyB2YWx1ZQot
ICAgICAgaWYgKCFUcnlQYXJzZUxvY2tlZChmbGFnLCBmbGFnLT5jdXJyZW50XywgdmFsdWUsIG1z
ZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGZsYWctPm1vZGlmaWVkXyA9IHRydWU7
Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBTRVRfRkxBR19JRl9ERUZBVUxUOiB7Ci0g
ICAgICAvLyBzZXQgdGhlIGZsYWcncyB2YWx1ZSwgYnV0IG9ubHkgaWYgaXQgaGFzbid0IGJlZW4g
c2V0IGJ5IHNvbWVvbmUgZWxzZQotICAgICAgaWYgKCFmbGFnLT5tb2RpZmllZF8pIHsKLSAgICAg
ICAgaWYgKCFUcnlQYXJzZUxvY2tlZChmbGFnLCBmbGFnLT5jdXJyZW50XywgdmFsdWUsIG1zZykp
Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmbGFnLT5tb2RpZmllZF8gPSB0cnVl
OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgKm1zZyA9IFN0cmluZ1ByaW50ZigiJXMgc2V0IHRv
ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnLT5uYW1lKCksIGZsYWctPmN1
cnJlbnRfdmFsdWUoKS5jX3N0cigpKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBjYXNlIFNFVF9GTEFHU19ERUZBVUxUOiB7Ci0gICAgICAvLyBtb2RpZnkgdGhlIGZsYWcncyBk
ZWZhdWx0LXZhbHVlCi0gICAgICBpZiAoIVRyeVBhcnNlTG9ja2VkKGZsYWcsIGZsYWctPmRlZnZh
bHVlXywgdmFsdWUsIG1zZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmICghZmxh
Zy0+bW9kaWZpZWRfKSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gc2V0IGJvdGggZGVmdmFsdWUgKmFu
ZCogY3VycmVudCwgaW4gdGhpcyBjYXNlCi0gICAgICAgIFRyeVBhcnNlTG9ja2VkKGZsYWcsIGZs
YWctPmN1cnJlbnRfLCB2YWx1ZSwgTlVMTCk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9
Ci0gICAgZGVmYXVsdDogewotICAgICAgLy8gdW5rbm93biBzZXRfbW9kZQotICAgICAgYXNzZXJ0
KGZhbHNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1
ZTsKLX0KLQotLy8gR2V0IHRoZSBzaW5nbGV0b24gRmxhZ1JlZ2lzdHJ5IG9iamVjdAotRmxhZ1Jl
Z2lzdHJ5KiBGbGFnUmVnaXN0cnk6Omdsb2JhbF9yZWdpc3RyeV8gPSBOVUxMOwotTXV0ZXggRmxh
Z1JlZ2lzdHJ5OjpnbG9iYWxfcmVnaXN0cnlfbG9ja18oTXV0ZXg6OkxJTktFUl9JTklUSUFMSVpF
RCk7Ci0KLUZsYWdSZWdpc3RyeSogRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpIHsKLSAg
TXV0ZXhMb2NrIGFjcXVpcmVfbG9jaygmZ2xvYmFsX3JlZ2lzdHJ5X2xvY2tfKTsKLSAgaWYgKCFn
bG9iYWxfcmVnaXN0cnlfKSB7Ci0gICAgZ2xvYmFsX3JlZ2lzdHJ5XyA9IG5ldyBGbGFnUmVnaXN0
cnk7Ci0gIH0KLSAgcmV0dXJuIGdsb2JhbF9yZWdpc3RyeV87Ci19Ci0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBDb21tYW5kTGluZUZsYWdQYXJzZXIKLS8vICAgIFBhcnNpbmcgaXMgZG9uZSBpbiB0d28g
c3RhZ2VzLiAgSW4gdGhlIGZpcnN0LCB3ZSBnbyB0aHJvdWdoCi0vLyAgICBhcmd2LiAgRm9yIGV2
ZXJ5IGZsYWctbGlrZSBhcmcgd2UgY2FuIG1ha2Ugc2Vuc2Ugb2YsIHdlIHBhcnNlCi0vLyAgICBp
dCBhbmQgc2V0IHRoZSBhcHByb3ByaWF0ZSBGTEFHU18qIHZhcmlhYmxlLiAgRm9yIGV2ZXJ5IGZs
YWctCi0vLyAgICBsaWtlIGFyZyB3ZSBjYW4ndCBtYWtlIHNlbnNlIG9mLCB3ZSBzdG9yZSBpdCBp
biBhIHZlY3RvciwKLS8vICAgIGFsb25nIHdpdGggYW4gZXhwbGFuYXRpb24gb2YgdGhlIHRyb3Vi
bGUuICBJbiBzdGFnZSAyLCB3ZQotLy8gICAgaGFuZGxlIHRoZSAncmVwb3J0aW5nJyBmbGFncyBs
aWtlIC0taGVscCBhbmQgLS1tcG1fdmVyc2lvbi4KLS8vICAgIChUaGlzIGlzIHZpYSBhIGNhbGwg
dG8gSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKSwgaW4KLS8vICAgIGdmbGFnc19yZXBvcnRp
bmcuY2MuKQotLy8gICAgQW4gb3B0aW9uYWwgc3RhZ2UgMyBwcmludHMgb3V0IHRoZSBlcnJvciBt
ZXNzYWdlcy4KLS8vICAgICAgIFRoaXMgaXMgYSBiaXQgb2YgYSBzaW1wbGlmaWNhdGlvbi4gIEZv
ciBpbnN0YW5jZSwgLS1mbGFnZmlsZQotLy8gICAgaXMgaGFuZGxlZCBhcyBzb29uIGFzIGl0J3Mg
c2VlbiBpbiBzdGFnZSAxLCBub3QgaW4gc3RhZ2UgMi4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNz
IENvbW1hbmRMaW5lRmxhZ1BhcnNlciB7Ci0gcHVibGljOgotICAvLyBUaGUgYXJndW1lbnQgaXMg
dGhlIGZsYWctcmVnaXN0cnkgdG8gcmVnaXN0ZXIgdGhlIHBhcnNlZCBmbGFncyBpbgotICBleHBs
aWNpdCBDb21tYW5kTGluZUZsYWdQYXJzZXIoRmxhZ1JlZ2lzdHJ5KiByZWcpIDogcmVnaXN0cnlf
KHJlZykge30KLSAgfkNvbW1hbmRMaW5lRmxhZ1BhcnNlcigpIHt9Ci0KLSAgLy8gU3RhZ2UgMTog
RXZlcnkgdGltZSB0aGlzIGlzIGNhbGxlZCwgaXQgcmVhZHMgYWxsIGZsYWdzIGluIGFyZ3YuCi0g
IC8vIEhvd2V2ZXIsIGl0IGlnbm9yZXMgYWxsIGZsYWdzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3Nm
dWxseSBzZXQKLSAgLy8gYmVmb3JlLiAgVHlwaWNhbGx5IHRoaXMgaXMgb25seSBjYWxsZWQgb25j
ZSwgc28gdGhpcyAncmVwYXJzaW5nJwotICAvLyBiZWhhdmlvciBpc24ndCBpbXBvcnRhbnQuICBJ
dCBjYW4gYmUgdXNlZnVsIHdoZW4gdHJ5aW5nIHRvCi0gIC8vIHJlcGFyc2UgYWZ0ZXIgbG9hZGlu
ZyBhIGRsbCwgdGhvdWdoLgotICB1aW50MzIgUGFyc2VOZXdDb21tYW5kTGluZUZsYWdzKGludCog
YXJnYywgY2hhcioqKiBhcmd2LCBib29sIHJlbW92ZV9mbGFncyk7Ci0KLSAgLy8gU3RhZ2UgMjog
cHJpbnQgcmVwb3J0aW5nIGluZm8gYW5kIGV4aXQsIGlmIHJlcXVlc3RlZC4KLSAgLy8gSW4gZ2Zs
YWdzX3JlcG9ydGluZy5jYzpIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpLgotCi0gIC8vIFN0
YWdlIDM6IHZhbGlkYXRlIGFsbCB0aGUgY29tbWFuZGxpbmUgZmxhZ3MgdGhhdCBoYXZlIHZhbGlk
YXRvcnMKLSAgLy8gcmVnaXN0ZXJlZC4KLSAgdm9pZCBWYWxpZGF0ZUFsbEZsYWdzKCk7Ci0KLSAg
Ly8gU3RhZ2UgNDogcmVwb3J0IGFueSBlcnJvcnMgYW5kIHJldHVybiB0cnVlIGlmIGFueSB3ZXJl
IGZvdW5kLgotICBib29sIFJlcG9ydEVycm9ycygpOwotCi0gIC8vIFNldCBhIHBhcnRpY3VsYXIg
Y29tbWFuZCBsaW5lIG9wdGlvbi4gICJuZXd2YWwiIGlzIGEgc3RyaW5nCi0gIC8vIGRlc2NyaWJp
bmcgdGhlIG5ldyB2YWx1ZSB0aGF0IHRoZSBvcHRpb24gaGFzIGJlZW4gc2V0IHRvLiAgSWYKLSAg
Ly8gb3B0aW9uX25hbWUgZG9lcyBub3Qgc3BlY2lmeSBhIHZhbGlkIG9wdGlvbiBuYW1lLCBvciB2
YWx1ZSBpcyBub3QKLSAgLy8gYSB2YWxpZCB2YWx1ZSBmb3Igb3B0aW9uX25hbWUsIG5ld3ZhbCBp
cyBlbXB0eS4gIERvZXMgcmVjdXJzaXZlCi0gIC8vIHByb2Nlc3NpbmcgZm9yIC0tZmxhZ2ZpbGUg
YW5kIC0tZnJvbWVudi4gIFJldHVybnMgdGhlIG5ldyB2YWx1ZQotICAvLyBpZiBldmVyeXRoaW5n
IHdlbnQgb2ssIG9yIGVtcHR5LXN0cmluZyBpZiBub3QuICAoQWN0dWFsbHksIHRoZQotICAvLyBy
ZXR1cm4tc3RyaW5nIGNvdWxkIGhvbGQgbWFueSBmbGFnL3ZhbHVlIHBhaXJzIGR1ZSB0byAtLWZs
YWdmaWxlLikKLSAgLy8gTkI6IE11c3QgaGF2ZSBjYWxsZWQgcmVnaXN0cnlfLT5Mb2NrKCkgYmVm
b3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KLSAgc3RyaW5nIFByb2Nlc3NTaW5nbGVPcHRpb25M
b2NrZWQoQ29tbWFuZExpbmVGbGFnKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlKTsKLQotICAvLyBTZXQgYSB3aG9sZSBiYXRj
aCBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucyBhcyBzcGVjaWZpZWQgYnkgY29udGVudGRhdGEsCi0g
IC8vIHdoaWNoIGlzIGluIGZsYWdmaWxlIGZvcm1hdCAoYW5kIHByb2JhYmx5IGhhcyBiZWVuIHJl
YWQgZnJvbSBhIGZsYWdmaWxlKS4KLSAgLy8gUmV0dXJucyB0aGUgbmV3IHZhbHVlIGlmIGV2ZXJ5
dGhpbmcgd2VudCBvaywgb3IgZW1wdHktc3RyaW5nIGlmCi0gIC8vIG5vdC4gIChBY3R1YWxseSwg
dGhlIHJldHVybi1zdHJpbmcgY291bGQgaG9sZCBtYW55IGZsYWcvdmFsdWUKLSAgLy8gcGFpcnMg
ZHVlIHRvIC0tZmxhZ2ZpbGUuKQotICAvLyBOQjogTXVzdCBoYXZlIGNhbGxlZCByZWdpc3RyeV8t
PkxvY2soKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgotICBzdHJpbmcgUHJvY2Vzc09w
dGlvbnNGcm9tU3RyaW5nTG9ja2VkKGNvbnN0IHN0cmluZyYgY29udGVudGRhdGEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2Rl
KTsKLQotICAvLyBUaGVzZSBhcmUgdGhlICdyZWN1cnNpdmUnIGZsYWdzLCBkZWZpbmVkIGF0IHRo
ZSB0b3Agb2YgdGhpcyBmaWxlLgotICAvLyBXaGVuZXZlciB3ZSBzZWUgdGhlc2UgZmxhZ3Mgb24g
dGhlIGNvbW1hbmRsaW5lLCB3ZSBtdXN0IHRha2UgYWN0aW9uLgotICAvLyBUaGVzZSBhcmUgY2Fs
bGVkIGJ5IFByb2Nlc3NTaW5nbGVPcHRpb25Mb2NrZWQgYW5kLCBzaW1pbGFybHksIHJldHVybgot
ICAvLyBuZXcgdmFsdWVzIGlmIGV2ZXJ5dGhpbmcgd2VudCBvaywgb3IgdGhlIGVtcHR5LXN0cmlu
ZyBpZiBub3QuCi0gIHN0cmluZyBQcm9jZXNzRmxhZ2ZpbGVMb2NrZWQoY29uc3Qgc3RyaW5nJiBm
bGFndmFsLCBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpOwotICAvLyBkaWZmIGZyb21lbnYvdHJ5
ZnJvbWVudgotICBzdHJpbmcgUHJvY2Vzc0Zyb21lbnZMb2NrZWQoY29uc3Qgc3RyaW5nJiBmbGFn
dmFsLCBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGVycm9yc19hcmVfZmF0YWwpOwotCi0gcHJpdmF0ZToKLSAgRmxhZ1JlZ2lzdHJ5
KiBjb25zdCByZWdpc3RyeV87Ci0gIG1hcDxzdHJpbmcsIHN0cmluZz4gZXJyb3JfZmxhZ3NfOyAg
ICAgIC8vIG1hcCBmcm9tIG5hbWUgdG8gZXJyb3IgbWVzc2FnZQotICAvLyBUaGlzIGNvdWxkIGJl
IGEgc2V0PHN0cmluZz4sIGJ1dCB3ZSByZXVzZSB0aGUgbWFwIHRvIG1pbmltaXplIHRoZSAubyBz
aXplCi0gIG1hcDxzdHJpbmcsIHN0cmluZz4gdW5kZWZpbmVkX25hbWVzXzsgIC8vIC0tW2ZsYWdd
IG5hbWUgd2FzIG5vdCByZWdpc3RlcmVkCi19OwotCi0KLS8vIFBhcnNlIGEgbGlzdCBvZiAoY29t
bWEtc2VwYXJhdGVkKSBmbGFncy4KLXN0YXRpYyB2b2lkIFBhcnNlRmxhZ0xpc3QoY29uc3QgY2hh
ciogdmFsdWUsIHZlY3RvcjxzdHJpbmc+KiBmbGFncykgewotICBmb3IgKGNvbnN0IGNoYXIgKnAg
PSB2YWx1ZTsgcCAmJiAqcDsgdmFsdWUgPSBwKSB7Ci0gICAgcCA9IHN0cmNocih2YWx1ZSwgJywn
KTsKLSAgICBzaXplX3QgbGVuOwotICAgIGlmIChwKSB7Ci0gICAgICBsZW4gPSBwIC0gdmFsdWU7
Ci0gICAgICBwKys7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGxlbiA9IHN0cmxlbih2YWx1ZSk7Ci0g
ICAgfQotCi0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgUmVwb3J0RXJyb3IoRElFLCAiRVJST1I6
IGVtcHR5IGZsYWdsaXN0IGVudHJ5XG4iKTsKLSAgICBpZiAodmFsdWVbMF0gPT0gJy0nKQotICAg
ICAgUmVwb3J0RXJyb3IoRElFLCAiRVJST1I6IGZsYWcgXCIlKnNcIiBiZWdpbnMgd2l0aCAnLSdc
biIsIGxlbiwgdmFsdWUpOwotCi0gICAgZmxhZ3MtPnB1c2hfYmFjayhzdHJpbmcodmFsdWUsIGxl
bikpOwotICB9Ci19Ci0KLS8vIFNuYXJmIGFuIGVudGlyZSBmaWxlIGludG8gYSBDKysgc3RyaW5n
LiAgVGhpcyBpcyBqdXN0IHNvIHRoYXQgd2UKLS8vIGNhbiBkbyBhbGwgdGhlIEkvTyBpbiBvbmUg
cGxhY2UgYW5kIG5vdCB3b3JyeSBhYm91dCBpdCBldmVyeXdoZXJlLgotLy8gUGx1cywgaXQncyBj
b252ZW5pZW50IHRvIGhhdmUgdGhlIHdob2xlIGZpbGUgY29udGVudHMgYXQgaGFuZC4KLS8vIEFk
ZHMgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0jZGVmaW5lIFBGQVRBTChzKSAg
ZG8geyBwZXJyb3Iocyk7IGdmbGFnc19leGl0ZnVuYygxKTsgfSB3aGlsZSAoMCkKLQotc3RhdGlj
IHN0cmluZyBSZWFkRmlsZUludG9TdHJpbmcoY29uc3QgY2hhciogZmlsZW5hbWUpIHsKLSAgY29u
c3QgaW50IGtCdWZTaXplID0gODA5MjsKLSAgY2hhciBidWZmZXJba0J1ZlNpemVdOwotICBzdHJp
bmcgczsKLSAgRklMRSogZnA7Ci0gIGlmICgoZXJybm8gPSBTYWZlRk9wZW4oJmZwLCBmaWxlbmFt
ZSwgInIiKSkgIT0gMCkgUEZBVEFMKGZpbGVuYW1lKTsKLSAgc2l6ZV90IG47Ci0gIHdoaWxlICgg
KG49ZnJlYWQoYnVmZmVyLCAxLCBrQnVmU2l6ZSwgZnApKSA+IDAgKSB7Ci0gICAgaWYgKGZlcnJv
cihmcCkpICBQRkFUQUwoZmlsZW5hbWUpOwotICAgIHMuYXBwZW5kKGJ1ZmZlciwgbik7Ci0gIH0K
LSAgZmNsb3NlKGZwKTsKLSAgcmV0dXJuIHM7Ci19Ci0KLXVpbnQzMiBDb21tYW5kTGluZUZsYWdQ
YXJzZXI6OlBhcnNlTmV3Q29tbWFuZExpbmVGbGFncyhpbnQqIGFyZ2MsIGNoYXIqKiogYXJndiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHJlbW92ZV9mbGFncykgewotICBjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBzdHJyY2hy
KCgqYXJndilbMF0sIFBBVEhfU0VQQVJBVE9SKTsgICAvLyBuaXggcGF0aAotICBwcm9ncmFtX25h
bWUgPSAocHJvZ3JhbV9uYW1lID09IE5VTEwgPyAoKmFyZ3YpWzBdIDogcHJvZ3JhbV9uYW1lKzEp
OwotCi0gIGludCBmaXJzdF9ub25vcHQgPSAqYXJnYzsgICAgICAgIC8vIGZvciBub24tb3B0aW9u
cyBtb3ZlZCB0byB0aGUgZW5kCi0KLSAgcmVnaXN0cnlfLT5Mb2NrKCk7Ci0gIGZvciAoaW50IGkg
PSAxOyBpIDwgZmlyc3Rfbm9ub3B0OyBpKyspIHsKLSAgICBjaGFyKiBhcmcgPSAoKmFyZ3YpW2ld
OwotCi0gICAgLy8gTGlrZSBnZXRvcHQoKSwgd2UgcGVybXV0ZSBub24tb3B0aW9uIGZsYWdzIHRv
IGJlIGF0IHRoZSBlbmQuCi0gICAgaWYgKGFyZ1swXSAhPSAnLScgfHwgICAgICAgICAgIC8vIG11
c3QgYmUgYSBwcm9ncmFtIGFyZ3VtZW50Ci0gICAgICAgIChhcmdbMF0gPT0gJy0nICYmIGFyZ1sx
XSA9PSAnXDAnKSkgeyAgLy8gIi0iIGlzIGFuIGFyZ3VtZW50LCBub3QgYSBmbGFnCi0gICAgICBt
ZW1tb3ZlKCgqYXJndikgKyBpLCAoKmFyZ3YpICsgaSsxLCAoKmFyZ2MgLSAoaSsxKSkgKiBzaXpl
b2YoKCphcmd2KVtpXSkpOwotICAgICAgKCphcmd2KVsqYXJnYy0xXSA9IGFyZzsgICAgICAvLyB3
ZSBnbyBsYXN0Ci0gICAgICBmaXJzdF9ub25vcHQtLTsgICAgICAgICAgICAgIC8vIHdlJ3ZlIGJl
ZW4gcHVzaGVkIG9udG8gdGhlIHN0YWNrCi0gICAgICBpLS07ICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRvIHVuZG8gdGhlIGkrKyBpbiB0aGUgbG9vcAotICAgICAgY29udGludWU7Ci0gICAg
fQotCi0gICAgaWYgKGFyZ1swXSA9PSAnLScpIGFyZysrOyAgICAgIC8vIGFsbG93IGxlYWRpbmcg
Jy0nCi0gICAgaWYgKGFyZ1swXSA9PSAnLScpIGFyZysrOyAgICAgIC8vIG9yIGxlYWRpbmcgJy0t
JwotCi0gICAgLy8gLS0gYWxvbmUgbWVhbnMgd2hhdCBpdCBkb2VzIGZvciBHTlU6IHN0b3Agb3B0
aW9ucyBwYXJzaW5nCi0gICAgaWYgKCphcmcgPT0gJ1wwJykgewotICAgICAgZmlyc3Rfbm9ub3B0
ID0gaSsxOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgLy8gRmluZCB0aGUgZmxhZyBvYmpl
Y3QgZm9yIHRoaXMgb3B0aW9uCi0gICAgc3RyaW5nIGtleTsKLSAgICBjb25zdCBjaGFyKiB2YWx1
ZTsKLSAgICBzdHJpbmcgZXJyb3JfbWVzc2FnZTsKLSAgICBDb21tYW5kTGluZUZsYWcqIGZsYWcg
PSByZWdpc3RyeV8tPlNwbGl0QXJndW1lbnRMb2NrZWQoYXJnLCAma2V5LCAmdmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZl
cnJvcl9tZXNzYWdlKTsKLSAgICBpZiAoZmxhZyA9PSBOVUxMKSB7Ci0gICAgICB1bmRlZmluZWRf
bmFtZXNfW2tleV0gPSAiIjsgICAgLy8gdmFsdWUgaXNuJ3QgYWN0dWFsbHkgdXNlZAotICAgICAg
ZXJyb3JfZmxhZ3NfW2tleV0gPSBlcnJvcl9tZXNzYWdlOwotICAgICAgY29udGludWU7Ci0gICAg
fQotCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgIC8vIEJvb2xlYW4gb3B0aW9ucyBh
cmUgYWx3YXlzIGFzc2lnbmVkIGEgdmFsdWUgYnkgU3BsaXRBcmd1bWVudExvY2tlZCgpCi0gICAg
ICBhc3NlcnQoc3RyY21wKGZsYWctPnR5cGVfbmFtZSgpLCAiYm9vbCIpICE9IDApOwotICAgICAg
aWYgKGkrMSA+PSBmaXJzdF9ub25vcHQpIHsKLSAgICAgICAgLy8gVGhpcyBmbGFnIG5lZWRzIGEg
dmFsdWUsIGJ1dCB0aGVyZSBpcyBub3RoaW5nIGF2YWlsYWJsZQotICAgICAgICBlcnJvcl9mbGFn
c19ba2V5XSA9IChzdHJpbmcoa0Vycm9yKSArICJmbGFnICciICsgKCphcmd2KVtpXSArICInIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaXMgbWlzc2luZyBpdHMgYXJndW1lbnQi
KTsKLSAgICAgICAgaWYgKGZsYWctPmhlbHAoKSAmJiBmbGFnLT5oZWxwKClbMF0gPiAnXDAwMScp
IHsKLSAgICAgICAgICAvLyBCZSB1c2VmdWwgaW4gY2FzZSB3ZSBoYXZlIGEgbm9uLXN0cmlwcGVk
IGRlc2NyaXB0aW9uLgotICAgICAgICAgIGVycm9yX2ZsYWdzX1trZXldICs9IHN0cmluZygiOyBm
bGFnIGRlc2NyaXB0aW9uOiAiKSArIGZsYWctPmhlbHAoKTsKLSAgICAgICAgfQotICAgICAgICBl
cnJvcl9mbGFnc19ba2V5XSArPSAiXG4iOwotICAgICAgICBicmVhazsgICAgLy8gd2UgdHJlYXQg
dGhpcyBhcyBhbiB1bnJlY292ZXJhYmxlIGVycm9yCi0gICAgICB9IGVsc2UgewotICAgICAgICB2
YWx1ZSA9ICgqYXJndilbKytpXTsgICAgICAgICAgICAgICAgICAgLy8gcmVhZCBuZXh0IGFyZyBm
b3IgdmFsdWUKLQotICAgICAgICAvLyBIZXVyaXN0aWMgdG8gZGV0ZWN0IHRoZSBjYXNlIHdoZXJl
IHNvbWVvbmUgdHJlYXRzIGEgc3RyaW5nIGFyZwotICAgICAgICAvLyBsaWtlIGEgYm9vbDoKLSAg
ICAgICAgLy8gLS1teV9zdHJpbmdfdmFyIC0tZm9vPWJhcgotICAgICAgICAvLyBXZSBsb29rIGZv
ciBhIGZsYWcgb2Ygc3RyaW5nIHR5cGUsIHdob3NlIHZhbHVlIGJlZ2lucyB3aXRoIGEKLSAgICAg
ICAgLy8gZGFzaCwgYW5kIHdoZXJlIHRoZSBmbGFnLW5hbWUgYW5kIHZhbHVlIGFyZSBzZXBhcmF0
ZWQgYnkgYQotICAgICAgICAvLyBzcGFjZSByYXRoZXIgdGhhbiBhbiAnPScuCi0gICAgICAgIC8v
IFRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcywgd2UgYWxzbyByZXF1aXJlIHRoZSB3b3JkICJ0cnVl
IgotICAgICAgICAvLyBvciAiZmFsc2UiIGluIHRoZSBoZWxwIHN0cmluZy4gIFdpdGhvdXQgdGhp
cywgYSB2YWxpZCB1c2FnZQotICAgICAgICAvLyAiLWxhdCAtMzAuNSIgd291bGQgdHJpZ2dlciB0
aGUgd2FybmluZy4gIFRoZSBjb21tb24gY2FzZXMgd2UKLSAgICAgICAgLy8gd2FudCB0byBzb2x2
ZSB0YWxrIGFib3V0IHRydWUgYW5kIGZhbHNlIGFzIHZhbHVlcy4KLSAgICAgICAgaWYgKHZhbHVl
WzBdID09ICctJwotICAgICAgICAgICAgJiYgc3RyY21wKGZsYWctPnR5cGVfbmFtZSgpLCAic3Ry
aW5nIikgPT0gMAotICAgICAgICAgICAgJiYgKHN0cnN0cihmbGFnLT5oZWxwKCksICJ0cnVlIikK
LSAgICAgICAgICAgICAgICB8fCBzdHJzdHIoZmxhZy0+aGVscCgpLCAiZmFsc2UiKSkpIHsKLSAg
ICAgICAgICBMT0coV0FSTklORykgPDwgIkRpZCB5b3UgcmVhbGx5IG1lYW4gdG8gc2V0IGZsYWcg
JyIKLSAgICAgICAgICAgICAgICAgICAgICAgPDwgZmxhZy0+bmFtZSgpIDw8ICInIHRvIHRoZSB2
YWx1ZSAnIgotICAgICAgICAgICAgICAgICAgICAgICA8PCB2YWx1ZSA8PCAiJz8iOwotICAgICAg
ICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gVE9ETyhjc2lsdmVycyk6IG9ubHkgc2V0IGEg
ZmxhZyBpZiB3ZSBoYWRuJ3Qgc2V0IGl0IGJlZm9yZSBoZXJlCi0gICAgUHJvY2Vzc1NpbmdsZU9w
dGlvbkxvY2tlZChmbGFnLCB2YWx1ZSwgU0VUX0ZMQUdTX1ZBTFVFKTsKLSAgfQotICByZWdpc3Ry
eV8tPlVubG9jaygpOwotCi0gIGlmIChyZW1vdmVfZmxhZ3MpIHsgICAvLyBGaXggdXAgYXJnYyBh
bmQgYXJndiBieSByZW1vdmluZyBjb21tYW5kIGxpbmUgZmxhZ3MKLSAgICAoKmFyZ3YpW2ZpcnN0
X25vbm9wdC0xXSA9ICgqYXJndilbMF07Ci0gICAgKCphcmd2KSArPSAoZmlyc3Rfbm9ub3B0LTEp
OwotICAgICgqYXJnYykgLT0gKGZpcnN0X25vbm9wdC0xKTsKLSAgICBmaXJzdF9ub25vcHQgPSAx
OyAgIC8vIGJlY2F1c2Ugd2Ugc3RpbGwgZG9uJ3QgY291bnQgYXJndlswXQotICB9Ci0KLSAgbG9n
Z2luZ19pc19wcm9iYWJseV9zZXRfdXAgPSB0cnVlOyAgIC8vIGJlY2F1c2Ugd2UndmUgcGFyc2Vk
IC0tbG9nZGlyLCBldGMuCi0KLSAgcmV0dXJuIGZpcnN0X25vbm9wdDsKLX0KLQotc3RyaW5nIENv
bW1hbmRMaW5lRmxhZ1BhcnNlcjo6UHJvY2Vzc0ZsYWdmaWxlTG9ja2VkKGNvbnN0IHN0cmluZyYg
ZmxhZ3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpIHsKLSAgaWYgKGZsYWd2YWwuZW1wdHkoKSkK
LSAgICByZXR1cm4gIiI7Ci0KLSAgc3RyaW5nIG1zZzsKLSAgdmVjdG9yPHN0cmluZz4gZmlsZW5h
bWVfbGlzdDsKLSAgUGFyc2VGbGFnTGlzdChmbGFndmFsLmNfc3RyKCksICZmaWxlbmFtZV9saXN0
KTsgIC8vIHRha2UgYSBsaXN0IG9mIGZpbGVuYW1lcwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZpbGVuYW1lX2xpc3Quc2l6ZSgpOyArK2kpIHsKLSAgICBjb25zdCBjaGFyKiBmaWxlID0gZmls
ZW5hbWVfbGlzdFtpXS5jX3N0cigpOwotICAgIG1zZyArPSBQcm9jZXNzT3B0aW9uc0Zyb21TdHJp
bmdMb2NrZWQoUmVhZEZpbGVJbnRvU3RyaW5nKGZpbGUpLCBzZXRfbW9kZSk7Ci0gIH0KLSAgcmV0
dXJuIG1zZzsKLX0KLQotc3RyaW5nIENvbW1hbmRMaW5lRmxhZ1BhcnNlcjo6UHJvY2Vzc0Zyb21l
bnZMb2NrZWQoY29uc3Qgc3RyaW5nJiBmbGFndmFsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlcnJv
cnNfYXJlX2ZhdGFsKSB7Ci0gIGlmIChmbGFndmFsLmVtcHR5KCkpCi0gICAgcmV0dXJuICIiOwot
Ci0gIHN0cmluZyBtc2c7Ci0gIHZlY3RvcjxzdHJpbmc+IGZsYWdsaXN0OwotICBQYXJzZUZsYWdM
aXN0KGZsYWd2YWwuY19zdHIoKSwgJmZsYWdsaXN0KTsKLQotICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZsYWdsaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgY29uc3QgY2hhciogZmxhZ25hbWUgPSBm
bGFnbGlzdFtpXS5jX3N0cigpOwotICAgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IHJlZ2lzdHJ5
Xy0+RmluZEZsYWdMb2NrZWQoZmxhZ25hbWUpOwotICAgIGlmIChmbGFnID09IE5VTEwpIHsKLSAg
ICAgIGVycm9yX2ZsYWdzX1tmbGFnbmFtZV0gPQotICAgICAgICAgIFN0cmluZ1ByaW50ZigiJXN1
bmtub3duIGNvbW1hbmQgbGluZSBmbGFnICclcycgIgotICAgICAgICAgICAgICAgICAgICAgICAi
KHZpYSAtLWZyb21lbnYgb3IgLS10cnlmcm9tZW52KVxuIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAga0Vycm9yLCBmbGFnbmFtZSk7Ci0gICAgICB1bmRlZmluZWRfbmFtZXNfW2ZsYWduYW1lXSA9
ICIiOwotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgY29uc3Qgc3RyaW5nIGVudm5hbWUg
PSBzdHJpbmcoIkZMQUdTXyIpICsgc3RyaW5nKGZsYWduYW1lKTsKLQlzdHJpbmcgZW52dmFsOwot
CWlmICghU2FmZUdldEVudihlbnZuYW1lLmNfc3RyKCksIGVudnZhbCkpIHsKLSAgICAgIGlmIChl
cnJvcnNfYXJlX2ZhdGFsKSB7Ci0gICAgICAgIGVycm9yX2ZsYWdzX1tmbGFnbmFtZV0gPSAoc3Ry
aW5nKGtFcnJvcikgKyBlbnZuYW1lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIG5vdCBmb3VuZCBpbiBlbnZpcm9ubWVudFxuIik7Ci0gICAgICB9Ci0gICAgICBjb250aW51
ZTsKLSAgICB9Ci0KLSAgICAvLyBBdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCi0gICAgaWYgKGVu
dnZhbCA9PSAiZnJvbWVudiIgfHwgZW52dmFsID09ICJ0cnlmcm9tZW52IikgewotICAgICAgZXJy
b3JfZmxhZ3NfW2ZsYWduYW1lXSA9Ci0gICAgICAgICAgU3RyaW5nUHJpbnRmKCIlc2luZmluaXRl
IHJlY3Vyc2lvbiBvbiBlbnZpcm9ubWVudCBmbGFnICclcydcbiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGtFcnJvciwgZW52dmFsLmNfc3RyKCkpOwotICAgICAgY29udGludWU7Ci0gICAgfQot
Ci0gICAgbXNnICs9IFByb2Nlc3NTaW5nbGVPcHRpb25Mb2NrZWQoZmxhZywgZW52dmFsLmNfc3Ry
KCksIHNldF9tb2RlKTsKLSAgfQotICByZXR1cm4gbXNnOwotfQotCi1zdHJpbmcgQ29tbWFuZExp
bmVGbGFnUGFyc2VyOjpQcm9jZXNzU2luZ2xlT3B0aW9uTG9ja2VkKAotICAgIENvbW1hbmRMaW5l
RmxhZyogZmxhZywgY29uc3QgY2hhciogdmFsdWUsIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSkg
ewotICBzdHJpbmcgbXNnOwotICBpZiAodmFsdWUgJiYgIXJlZ2lzdHJ5Xy0+U2V0RmxhZ0xvY2tl
ZChmbGFnLCB2YWx1ZSwgc2V0X21vZGUsICZtc2cpKSB7Ci0gICAgZXJyb3JfZmxhZ3NfW2ZsYWct
Pm5hbWUoKV0gPSBtc2c7Ci0gICAgcmV0dXJuICIiOwotICB9Ci0KLSAgLy8gVGhlIHJlY3Vyc2l2
ZSBmbGFncywgLS1mbGFnZmlsZSBhbmQgLS1mcm9tZW52IGFuZCAtLXRyeWZyb21lbnYsCi0gIC8v
IG11c3QgYmUgZGVhbHQgd2l0aCBhcyBzb29uIGFzIHRoZXkncmUgc2Vlbi4gIFRoZXkgd2lsbCBl
bWl0Ci0gIC8vIG1lc3NhZ2VzIG9mIHRoZWlyIG93bi4KLSAgaWYgKHN0cmNtcChmbGFnLT5uYW1l
KCksICJmbGFnZmlsZSIpID09IDApIHsKLSAgICBtc2cgKz0gUHJvY2Vzc0ZsYWdmaWxlTG9ja2Vk
KEZMQUdTX2ZsYWdmaWxlLCBzZXRfbW9kZSk7Ci0KLSAgfSBlbHNlIGlmIChzdHJjbXAoZmxhZy0+
bmFtZSgpLCAiZnJvbWVudiIpID09IDApIHsKLSAgICAvLyBsYXN0IGFyZyBpbmRpY2F0ZXMgZW52
dmFsLW5vdC1mb3VuZCBpcyBmYXRhbCAodW5saWtlIGluIC0tdHJ5ZnJvbWVudikKLSAgICBtc2cg
Kz0gUHJvY2Vzc0Zyb21lbnZMb2NrZWQoRkxBR1NfZnJvbWVudiwgc2V0X21vZGUsIHRydWUpOwot
Ci0gIH0gZWxzZSBpZiAoc3RyY21wKGZsYWctPm5hbWUoKSwgInRyeWZyb21lbnYiKSA9PSAwKSB7
Ci0gICAgbXNnICs9IFByb2Nlc3NGcm9tZW52TG9ja2VkKEZMQUdTX3RyeWZyb21lbnYsIHNldF9t
b2RlLCBmYWxzZSk7Ci0gIH0KLQotICByZXR1cm4gbXNnOwotfQotCi12b2lkIENvbW1hbmRMaW5l
RmxhZ1BhcnNlcjo6VmFsaWRhdGVBbGxGbGFncygpIHsKLSAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwo
cmVnaXN0cnlfKTsKLSAgZm9yIChGbGFnUmVnaXN0cnk6OkZsYWdDb25zdEl0ZXJhdG9yIGkgPSBy
ZWdpc3RyeV8tPmZsYWdzXy5iZWdpbigpOwotICAgICAgIGkgIT0gcmVnaXN0cnlfLT5mbGFnc18u
ZW5kKCk7ICsraSkgewotICAgIGlmICghaS0+c2Vjb25kLT5WYWxpZGF0ZUN1cnJlbnQoKSkgewot
ICAgICAgLy8gb25seSBzZXQgYSBtZXNzYWdlIGlmIG9uZSBpc24ndCBhbHJlYWR5IHRoZXJlLiAg
KElmIHRoZXJlJ3MKLSAgICAgIC8vIGFuIGVycm9yIG1lc3NhZ2UsIG91ciBqb2IgaXMgZG9uZSwg
ZXZlbiBpZiBpdCdzIG5vdCBleGFjdGx5Ci0gICAgICAvLyB0aGUgc2FtZSBlcnJvci4pCi0gICAg
ICBpZiAoZXJyb3JfZmxhZ3NfW2ktPnNlY29uZC0+bmFtZSgpXS5lbXB0eSgpKQotICAgICAgICBl
cnJvcl9mbGFnc19baS0+c2Vjb25kLT5uYW1lKCldID0KLSAgICAgICAgICAgIHN0cmluZyhrRXJy
b3IpICsgIi0tIiArIGktPnNlY29uZC0+bmFtZSgpICsKLSAgICAgICAgICAgICIgbXVzdCBiZSBz
ZXQgb24gdGhlIGNvbW1hbmRsaW5lIgotICAgICAgICAgICAgIiAoZGVmYXVsdCB2YWx1ZSBmYWls
cyB2YWxpZGF0aW9uKVxuIjsKLSAgICB9Ci0gIH0KLX0KLQotYm9vbCBDb21tYW5kTGluZUZsYWdQ
YXJzZXI6OlJlcG9ydEVycm9ycygpIHsKLSAgLy8gZXJyb3JfZmxhZ3NfIGluZGljYXRlcyBlcnJv
cnMgd2Ugc2F3IHdoaWxlIHBhcnNpbmcuCi0gIC8vIEJ1dCB3ZSBpZ25vcmUgdW5kZWZpbmVkLW5h
bWVzIGlmIG9rJ2VkIGJ5IC0tdW5kZWZfb2sKLSAgaWYgKCFGTEFHU191bmRlZm9rLmVtcHR5KCkp
IHsKLSAgICB2ZWN0b3I8c3RyaW5nPiBmbGFnbGlzdDsKLSAgICBQYXJzZUZsYWdMaXN0KEZMQUdT
X3VuZGVmb2suY19zdHIoKSwgJmZsYWdsaXN0KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZsYWdsaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAvLyBXZSBhbHNvIGRlYWwgd2l0aCAtLW5v
PGZsYWc+LCBpbiBjYXNlIHRoZSBmbGFnbmFtZSB3YXMgYm9vbGVhbgotICAgICAgY29uc3Qgc3Ry
aW5nIG5vX3ZlcnNpb24gPSBzdHJpbmcoIm5vIikgKyBmbGFnbGlzdFtpXTsKLSAgICAgIGlmICh1
bmRlZmluZWRfbmFtZXNfLmZpbmQoZmxhZ2xpc3RbaV0pICE9IHVuZGVmaW5lZF9uYW1lc18uZW5k
KCkpIHsKLSAgICAgICAgZXJyb3JfZmxhZ3NfW2ZsYWdsaXN0W2ldXSA9ICIiOyAgICAvLyBjbGVh
ciB0aGUgZXJyb3IgbWVzc2FnZQotICAgICAgfSBlbHNlIGlmICh1bmRlZmluZWRfbmFtZXNfLmZp
bmQobm9fdmVyc2lvbikgIT0gdW5kZWZpbmVkX25hbWVzXy5lbmQoKSkgewotICAgICAgICBlcnJv
cl9mbGFnc19bbm9fdmVyc2lvbl0gPSAiIjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgLy8gTGlr
ZXdpc2UsIGlmIHRoZXkgZGVjaWRlZCB0byBhbGxvdyByZXBhcnNpbmcsIGFsbCB1bmRlZmluZWQt
bmFtZXMKLSAgLy8gYXJlIG9rOyB3ZSBqdXN0IHNpbGVudGx5IGlnbm9yZSB0aGVtIG5vdywgYW5k
IGhvcGUgdGhhdCBhIGZ1dHVyZQotICAvLyBwYXJzZSB3aWxsIHBpY2sgdGhlbSB1cCBzb21laG93
LgotICBpZiAoYWxsb3dfY29tbWFuZF9saW5lX3JlcGFyc2luZykgewotICAgIGZvciAobWFwPHN0
cmluZywgc3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1bmRlZmluZWRfbmFtZXNfLmJlZ2lu
KCk7Ci0gICAgICAgICBpdCAhPSB1bmRlZmluZWRfbmFtZXNfLmVuZCgpOyAgKytpdCkKLSAgICAg
IGVycm9yX2ZsYWdzX1tpdC0+Zmlyc3RdID0gIiI7ICAgICAgLy8gY2xlYXIgdGhlIGVycm9yIG1l
c3NhZ2UKLSAgfQotCi0gIGJvb2wgZm91bmRfZXJyb3IgPSBmYWxzZTsKLSAgc3RyaW5nIGVycm9y
X21lc3NhZ2U7Ci0gIGZvciAobWFwPHN0cmluZywgc3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBlcnJvcl9mbGFnc18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBlcnJvcl9mbGFnc18uZW5kKCk7
ICsraXQpIHsKLSAgICBpZiAoIWl0LT5zZWNvbmQuZW1wdHkoKSkgewotICAgICAgZXJyb3JfbWVz
c2FnZS5hcHBlbmQoaXQtPnNlY29uZC5kYXRhKCksIGl0LT5zZWNvbmQuc2l6ZSgpKTsKLSAgICAg
IGZvdW5kX2Vycm9yID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLSAgaWYgKGZvdW5kX2Vycm9yKQotICAg
IFJlcG9ydEVycm9yKERPX05PVF9ESUUsICIlcyIsIGVycm9yX21lc3NhZ2UuY19zdHIoKSk7Ci0g
IHJldHVybiBmb3VuZF9lcnJvcjsKLX0KLQotc3RyaW5nIENvbW1hbmRMaW5lRmxhZ1BhcnNlcjo6
UHJvY2Vzc09wdGlvbnNGcm9tU3RyaW5nTG9ja2VkKAotICAgIGNvbnN0IHN0cmluZyYgY29udGVu
dGRhdGEsIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSkgewotICBzdHJpbmcgcmV0dmFsOwotICBj
b25zdCBjaGFyKiBmbGFnZmlsZV9jb250ZW50cyA9IGNvbnRlbnRkYXRhLmNfc3RyKCk7Ci0gIGJv
b2wgZmxhZ3NfYXJlX3JlbGV2YW50ID0gdHJ1ZTsgICAvLyBzZXQgdG8gZmFsc2Ugd2hlbiBmaWxl
bmFtZXMgZG9uJ3QgbWF0Y2gKLSAgYm9vbCBpbl9maWxlbmFtZV9zZWN0aW9uID0gZmFsc2U7Ci0K
LSAgY29uc3QgY2hhciogbGluZV9lbmQgPSBmbGFnZmlsZV9jb250ZW50czsKLSAgLy8gV2UgcmVh
ZCB0aGlzIGZpbGUgYSBsaW5lIGF0IGEgdGltZS4KLSAgZm9yICg7IGxpbmVfZW5kOyBmbGFnZmls
ZV9jb250ZW50cyA9IGxpbmVfZW5kICsgMSkgewotICAgIHdoaWxlICgqZmxhZ2ZpbGVfY29udGVu
dHMgJiYgaXNzcGFjZSgqZmxhZ2ZpbGVfY29udGVudHMpKQotICAgICAgKytmbGFnZmlsZV9jb250
ZW50czsKLSAgICBsaW5lX2VuZCA9IHN0cmNocihmbGFnZmlsZV9jb250ZW50cywgJ1xuJyk7Ci0g
ICAgc2l6ZV90IGxlbiA9IGxpbmVfZW5kID8gbGluZV9lbmQgLSBmbGFnZmlsZV9jb250ZW50cwot
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0cmxlbihmbGFnZmlsZV9jb250ZW50cyk7Ci0g
ICAgc3RyaW5nIGxpbmUoZmxhZ2ZpbGVfY29udGVudHMsIGxlbik7Ci0KLSAgICAvLyBFYWNoIGxp
bmUgY2FuIGJlIG9uZSBvZiBmb3VyIHRoaW5nczoKLSAgICAvLyAxKSBBIGNvbW1lbnQgbGluZSAt
LSB3ZSBza2lwIGl0Ci0gICAgLy8gMikgQW4gZW1wdHkgbGluZSAtLSB3ZSBza2lwIGl0Ci0gICAg
Ly8gMykgQSBsaXN0IG9mIGZpbGVuYW1lcyAtLSBzdGFydHMgYSBuZXcgZmlsZW5hbWVzK2ZsYWdz
IHNlY3Rpb24KLSAgICAvLyA0KSBBIC0tZmxhZz12YWx1ZSBsaW5lIC0tIGFwcGx5IGlmIHByZXZp
b3VzIGZpbGVuYW1lcyBtYXRjaAotICAgIGlmIChsaW5lLmVtcHR5KCkgfHwgbGluZVswXSA9PSAn
IycpIHsKLSAgICAgIC8vIGNvbW1lbnQgb3IgZW1wdHkgbGluZTsganVzdCBpZ25vcmUKLQotICAg
IH0gZWxzZSBpZiAobGluZVswXSA9PSAnLScpIHsgICAgLy8gZmxhZwotICAgICAgaW5fZmlsZW5h
bWVfc2VjdGlvbiA9IGZhbHNlOyAgLy8gaW5zdGVhZCwgaXQgd2FzIGEgZmxhZy1saW5lCi0gICAg
ICBpZiAoIWZsYWdzX2FyZV9yZWxldmFudCkgICAgICAvLyBza2lwIHRoaXMgZmxhZzsgYXBwbGll
cyB0byBzb21lb25lIGVsc2UKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIGNvbnN0IGNoYXIq
IG5hbWVfYW5kX3ZhbCA9IGxpbmUuY19zdHIoKSArIDE7ICAgIC8vIHNraXAgdGhlIGxlYWRpbmcg
LQotICAgICAgaWYgKCpuYW1lX2FuZF92YWwgPT0gJy0nKQotICAgICAgICBuYW1lX2FuZF92YWwr
KzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBzZWNvbmQgLSB0b28KLSAg
ICAgIHN0cmluZyBrZXk7Ci0gICAgICBjb25zdCBjaGFyKiB2YWx1ZTsKLSAgICAgIHN0cmluZyBl
cnJvcl9tZXNzYWdlOwotICAgICAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gcmVnaXN0cnlfLT5T
cGxpdEFyZ3VtZW50TG9ja2VkKG5hbWVfYW5kX3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmdmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmVycm9yX21lc3NhZ2UpOwotICAgICAgLy8gQnkgQVBJLCBlcnJvcnMgcGFyc2luZyBmbGFnZmls
ZSBsaW5lcyBhcmUgc2lsZW50bHkgaWdub3JlZC4KLSAgICAgIGlmIChmbGFnID09IE5VTEwpIHsK
LSAgICAgICAgLy8gIldBUk5JTkc6IGZsYWduYW1lICciICsga2V5ICsgIicgbm90IGZvdW5kXG4i
Ci0gICAgICB9IGVsc2UgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgLy8gIldBUk5JTkc6
IGZsYWduYW1lICciICsga2V5ICsgIicgbWlzc2luZyBhIHZhbHVlXG4iCi0gICAgICB9IGVsc2Ug
ewotICAgICAgICByZXR2YWwgKz0gUHJvY2Vzc1NpbmdsZU9wdGlvbkxvY2tlZChmbGFnLCB2YWx1
ZSwgc2V0X21vZGUpOwotICAgICAgfQotCi0gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBhIGZpbGVuYW1lIQotICAgICAgaWYgKCFpbl9maWxlbmFtZV9zZWN0aW9uKSB7ICAg
Ly8gc3RhcnQgb3ZlcjogYXNzdW1lIGZpbGVuYW1lcyBkb24ndCBtYXRjaAotICAgICAgICBpbl9m
aWxlbmFtZV9zZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgZmxhZ3NfYXJlX3JlbGV2YW50ID0gZmFs
c2U7Ci0gICAgICB9Ci0KLSAgICAgIC8vIFNwbGl0IHRoZSBsaW5lIHVwIGF0IHNwYWNlcyBpbnRv
IGdsb2ItcGF0dGVybnMKLSAgICAgIGNvbnN0IGNoYXIqIHNwYWNlID0gbGluZS5jX3N0cigpOyAg
IC8vIGp1c3QgaGFzIHRvIGJlIG5vbi1OVUxMCi0gICAgICBmb3IgKGNvbnN0IGNoYXIqIHdvcmQg
PSBsaW5lLmNfc3RyKCk7ICpzcGFjZTsgd29yZCA9IHNwYWNlKzEpIHsKLSAgICAgICAgaWYgKGZs
YWdzX2FyZV9yZWxldmFudCkgICAgIC8vIHdlIGNhbiBzdG9wIGFzIHNvb24gYXMgd2UgbWF0Y2gK
LSAgICAgICAgICBicmVhazsKLSAgICAgICAgc3BhY2UgPSBzdHJjaHIod29yZCwgJyAnKTsKLSAg
ICAgICAgaWYgKHNwYWNlID09IE5VTEwpCi0gICAgICAgICAgc3BhY2UgPSB3b3JkICsgc3RybGVu
KHdvcmQpOwotICAgICAgICBjb25zdCBzdHJpbmcgZ2xvYih3b3JkLCBzcGFjZSAtIHdvcmQpOwot
ICAgICAgICAvLyBXZSB0cnkgbWF0Y2hpbmcgYm90aCBhZ2FpbnN0IHRoZSBmdWxsIGFyZ3YwIGFu
ZCBiYXNlbmFtZShhcmd2MCkKLSAgICAgICAgaWYgKGdsb2IgPT0gUHJvZ3JhbUludm9jYXRpb25O
YW1lKCkgICAgICAgLy8gc21hbGwgb3B0aW1pemF0aW9uCi0gICAgICAgICAgICB8fCBnbG9iID09
IFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCkKLSNpZiBkZWZpbmVkKEhBVkVfRk5NQVRDSF9I
KQotICAgICAgICAgICAgfHwgZm5tYXRjaChnbG9iLmNfc3RyKCksIFByb2dyYW1JbnZvY2F0aW9u
TmFtZSgpLCAgICAgIEZOTV9QQVRITkFNRSkgPT0gMAotICAgICAgICAgICAgfHwgZm5tYXRjaChn
bG9iLmNfc3RyKCksIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCksIEZOTV9QQVRITkFNRSkg
PT0gMAotI2VsaWYgZGVmaW5lZChIQVZFX1NITFdBUElfSCkKLSAgICAgICAgICAgIHx8IFBhdGhN
YXRjaFNwZWMoZ2xvYi5jX3N0cigpLCBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSkKLSAgICAgICAg
ICAgIHx8IFBhdGhNYXRjaFNwZWMoZ2xvYi5jX3N0cigpLCBQcm9ncmFtSW52b2NhdGlvblNob3J0
TmFtZSgpKQotI2VuZGlmCi0gICAgICAgICAgICApIHsKLSAgICAgICAgICBmbGFnc19hcmVfcmVs
ZXZhbnQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiBy
ZXR2YWw7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBHZXRGcm9tRW52KCkKLS8vIEFkZEZsYWdW
YWxpZGF0b3IoKQotLy8gICAgVGhlc2UgYXJlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHJvdXRpbmVz
IGxpa2UgQm9vbEZyb21FbnYoKSBhbmQKLS8vICAgIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvciwgZGVm
aW5lZCBiZWxvdy4gIFRoZXkncmUgZGVmaW5lZCBoZXJlIHNvCi0vLyAgICB0aGV5IGNhbiBsaXZl
IGluIHRoZSB1bm5hbWVkIG5hbWVzcGFjZSAod2hpY2ggbWFrZXMgZnJpZW5kc2hpcAotLy8gICAg
ZGVjbGFyYXRpb25zIGZvciB0aGVzZSBjbGFzc2VzIHBvc3NpYmxlKS4KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UIEdldEZyb21FbnYoY29uc3QgY2hhciAqdmFybmFt
ZSwgY29uc3QgY2hhciogdHlwZSwgVCBkZmx0KSB7Ci0gIHN0ZDo6c3RyaW5nIHZhbHN0cjsKLSAg
aWYgKFNhZmVHZXRFbnYodmFybmFtZSwgdmFsc3RyKSkgewotICAgIEZsYWdWYWx1ZSBpZnYobmV3
IFQsIHR5cGUsIHRydWUpOwotICAgIGlmICghaWZ2LlBhcnNlRnJvbSh2YWxzdHIuY19zdHIoKSkp
IHsKLSAgICAgIFJlcG9ydEVycm9yKERJRSwgIkVSUk9SOiBlcnJvciBwYXJzaW5nIGVudiB2YXJp
YWJsZSAnJXMnIHdpdGggdmFsdWUgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgIHZhcm5hbWUs
IHZhbHN0ci5jX3N0cigpKTsKLQl9Ci0gICAgcmV0dXJuIE9USEVSX1ZBTFVFX0FTKGlmdiwgVCk7
Ci0gIH0gZWxzZSByZXR1cm4gZGZsdDsKLX0KLQotYm9vbCBBZGRGbGFnVmFsaWRhdG9yKGNvbnN0
IHZvaWQqIGZsYWdfcHRyLCBWYWxpZGF0ZUZuUHJvdG8gdmFsaWRhdGVfZm5fcHJvdG8pIHsKLSAg
Ly8gV2Ugd2FudCBhIGxvY2sgYXJvdW5kIHRoaXMgcm91dGluZSwgaW4gY2FzZSB0d28gdGhyZWFk
cyB0cnkgdG8KLSAgLy8gYWRkIGEgdmFsaWRhdG9yIChob3BlZnVsbHkgdGhlIHNhbWUgb25lISkg
YXQgb25jZS4gIFdlIGNvdWxkIHVzZQotICAvLyBvdXIgb3duIHRocmVhZCwgYnV0IHdlIG5lZWQg
dG8gbG9vb2sgYXQgdGhlIHJlZ2lzdHJ5IGFueXdheSwgc28KLSAgLy8gd2UganVzdCBzdGVhbCB0
aGF0IG9uZS4KLSAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6
R2xvYmFsUmVnaXN0cnkoKTsKLSAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwocmVnaXN0cnkpOwotICAv
LyBGaXJzdCwgZmluZCB0aGUgZmxhZyB3aG9zZSBjdXJyZW50LWZsYWcgc3RvcmFnZSBpcyAnZmxh
ZycuCi0gIC8vIFRoaXMgaXMgdGhlIENvbW1hbmRMaW5lRmxhZyB3aG9zZSBjdXJyZW50Xy0+dmFs
dWVfYnVmZmVyXyA9PSBmbGFnCi0gIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IHJlZ2lzdHJ5LT5G
aW5kRmxhZ1ZpYVB0ckxvY2tlZChmbGFnX3B0cik7Ci0gIGlmICghZmxhZykgewotICAgIExPRyhX
QVJOSU5HKSA8PCAiSWdub3JpbmcgUmVnaXN0ZXJWYWxpZGF0ZUZ1bmN0aW9uKCkgZm9yIGZsYWcg
cG9pbnRlciAiCi0gICAgICAgICAgICAgICAgIDw8IGZsYWdfcHRyIDw8ICI6IG5vIGZsYWcgZm91
bmQgYXQgdGhhdCBhZGRyZXNzIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSBpZiAodmFs
aWRhdGVfZm5fcHJvdG8gPT0gZmxhZy0+dmFsaWRhdGVfZnVuY3Rpb24oKSkgewotICAgIHJldHVy
biB0cnVlOyAgICAvLyBvayB0byByZWdpc3RlciB0aGUgc2FtZSBmdW5jdGlvbiBvdmVyIGFuZCBv
dmVyIGFnYWluCi0gIH0gZWxzZSBpZiAodmFsaWRhdGVfZm5fcHJvdG8gIT0gTlVMTCAmJiBmbGFn
LT52YWxpZGF0ZV9mdW5jdGlvbigpICE9IE5VTEwpIHsKLSAgICBMT0coV0FSTklORykgPDwgIkln
bm9yaW5nIFJlZ2lzdGVyVmFsaWRhdGVGdW5jdGlvbigpIGZvciBmbGFnICciCi0gICAgICAgICAg
ICAgICAgIDw8IGZsYWctPm5hbWUoKSA8PCAiJzogdmFsaWRhdGUtZm4gYWxyZWFkeSByZWdpc3Rl
cmVkIjsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAgZmxhZy0+dmFsaWRhdGVf
Zm5fcHJvdG9fID0gdmFsaWRhdGVfZm5fcHJvdG87Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0K
LQotfSAgLy8gZW5kIHVubmFtZWQgbmFtZXNwYWNlcwotCi0KLS8vIE5vdyBkZWZpbmUgdGhlIGZ1
bmN0aW9ucyB0aGF0IGFyZSBleHBvcnRlZCB2aWEgdGhlIC5oIGZpbGUKLQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIEZsYWdSZWdpc3RlcmVyCi0vLyAgICBUaGlzIGNsYXNzIGV4aXN0cyBtZXJlbHkgdG8g
aGF2ZSBhIGdsb2JhbCBjb25zdHJ1Y3RvciAodGhlCi0vLyAgICBraW5kIHRoYXQgcnVucyBiZWZv
cmUgbWFpbigpLCB0aGF0IGdvZXMgYW4gaW5pdGlhbGl6ZXMgZWFjaAotLy8gICAgZmxhZyB0aGF0
J3MgYmVlbiBkZWNsYXJlZC4gIE5vdGUgdGhhdCBpdCdzIHZlcnkgaW1wb3J0YW50IHdlCi0vLyAg
ICBkb24ndCBoYXZlIGEgZGVzdHJ1Y3RvciB0aGF0IGRlbGV0ZXMgZmxhZ18sIGJlY2F1c2UgdGhh
dCB3b3VsZAotLy8gICAgY2F1c2UgdXMgdG8gZGVsZXRlIGN1cnJlbnRfc3RvcmFnZS9kZWZ2YWx1
ZV9zdG9yYWdlIGFzIHdlbGwsCi0vLyAgICB3aGljaCBjYW4gY2F1c2UgYSBjcmFzaCBpZiBhbnl0
aGluZyB0cmllcyB0byBhY2Nlc3MgdGhlIGZsYWcKLS8vICAgIHZhbHVlcyBpbiBhIGdsb2JhbCBk
ZXN0cnVjdG9yLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotRmxhZ1JlZ2lzdGVyZXI6OkZsYWdSZWdpc3Rl
cmVyKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogaGVscCwgY29uc3QgY2hhciogZmlsZW5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogY3VycmVudF9zdG9yYWdlLCB2b2lk
KiBkZWZ2YWx1ZV9zdG9yYWdlKSB7Ci0gIGlmIChoZWxwID09IE5VTEwpCi0gICAgaGVscCA9ICIi
OwotICAvLyBGbGFnVmFsdWUgZXhwZWN0cyB0aGUgdHlwZS1uYW1lIHRvIG5vdCBpbmNsdWRlIGFu
eSBuYW1lc3BhY2UKLSAgLy8gY29tcG9uZW50cywgc28gd2UgZ2V0IHJpZCBvZiB0aG9zZSwgaWYg
YW55LgotICBpZiAoc3RyY2hyKHR5cGUsICc6JykpCi0gICAgdHlwZSA9IHN0cnJjaHIodHlwZSwg
JzonKSArIDE7Ci0gIEZsYWdWYWx1ZSogY3VycmVudCA9IG5ldyBGbGFnVmFsdWUoY3VycmVudF9z
dG9yYWdlLCB0eXBlLCBmYWxzZSk7Ci0gIEZsYWdWYWx1ZSogZGVmdmFsdWUgPSBuZXcgRmxhZ1Zh
bHVlKGRlZnZhbHVlX3N0b3JhZ2UsIHR5cGUsIGZhbHNlKTsKLSAgLy8gSW1wb3J0YW50bHksIGZs
YWdfIHdpbGwgbmV2ZXIgYmUgZGVsZXRlZCwgc28gc3RvcmFnZSBpcyBhbHdheXMgZ29vZC4KLSAg
Q29tbWFuZExpbmVGbGFnKiBmbGFnID0gbmV3IENvbW1hbmRMaW5lRmxhZyhuYW1lLCBoZWxwLCBm
aWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXJyZW50LCBkZWZ2YWx1ZSk7Ci0gIEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKS0+UmVn
aXN0ZXJGbGFnKGZsYWcpOyAgIC8vIGRlZmF1bHQgcmVnaXN0cnkKLX0KLQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS8vIEdldEFsbEZsYWdzKCkKLS8vICAgIFRoZSBtYWluIHdheSB0aGUgRmxhZ1JlZ2lzdHJ5
IGNsYXNzIGV4cG9zZXMgaXRzIGRhdGEuICBUaGlzCi0vLyAgICByZXR1cm5zLCBhcyBzdHJpbmdz
LCBhbGwgdGhlIGluZm8gYWJvdXQgYWxsIHRoZSBmbGFncyBpbgotLy8gICAgdGhlIG1haW4gcmVn
aXN0cnksIHNvcnRlZCBmaXJzdCBieSBmaWxlbmFtZSB0aGV5IGFyZSBkZWZpbmVkCi0vLyAgICBp
biwgYW5kIHRoZW4gYnkgZmxhZ25hbWUuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1zdHJ1Y3QgRmlsZW5h
bWVGbGFnbmFtZUNtcCB7Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBDb21tYW5kTGluZUZsYWdJ
bmZvJiBhLAotICAgICAgICAgICAgICAgICAgY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyYgYikg
Y29uc3QgewotICAgIGludCBjbXAgPSBzdHJjbXAoYS5maWxlbmFtZS5jX3N0cigpLCBiLmZpbGVu
YW1lLmNfc3RyKCkpOwotICAgIGlmIChjbXAgPT0gMCkKLSAgICAgIGNtcCA9IHN0cmNtcChhLm5h
bWUuY19zdHIoKSwgYi5uYW1lLmNfc3RyKCkpOyAgLy8gc2Vjb25kYXJ5IHNvcnQga2V5Ci0gICAg
cmV0dXJuIGNtcCA8IDA7Ci0gIH0KLX07Ci0KLXZvaWQgR2V0QWxsRmxhZ3ModmVjdG9yPENvbW1h
bmRMaW5lRmxhZ0luZm8+KiBPVVRQVVQpIHsKLSAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3Ry
eSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKTsKLSAgcmVnaXN0cnktPkxvY2soKTsK
LSAgZm9yIChGbGFnUmVnaXN0cnk6OkZsYWdDb25zdEl0ZXJhdG9yIGkgPSByZWdpc3RyeS0+Zmxh
Z3NfLmJlZ2luKCk7Ci0gICAgICAgaSAhPSByZWdpc3RyeS0+ZmxhZ3NfLmVuZCgpOyArK2kpIHsK
LSAgICBDb21tYW5kTGluZUZsYWdJbmZvIGZpOwotICAgIGktPnNlY29uZC0+RmlsbENvbW1hbmRM
aW5lRmxhZ0luZm8oJmZpKTsKLSAgICBPVVRQVVQtPnB1c2hfYmFjayhmaSk7Ci0gIH0KLSAgcmVn
aXN0cnktPlVubG9jaygpOwotICAvLyBOb3cgc29ydCB0aGUgZmxhZ3MsIGZpcnN0IGJ5IGZpbGVu
YW1lIHRoZXkgb2NjdXIgaW4sIHRoZW4gYWxwaGFiZXRpY2FsbHkKLSAgc29ydChPVVRQVVQtPmJl
Z2luKCksIE9VVFBVVC0+ZW5kKCksIEZpbGVuYW1lRmxhZ25hbWVDbXAoKSk7Ci19Ci0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBTZXRBcmd2KCkKLS8vIEdldEFyZ3ZzKCkKLS8vIEdldEFyZ3YoKQotLy8g
R2V0QXJndjAoKQotLy8gUHJvZ3JhbUludm9jYXRpb25OYW1lKCkKLS8vIFByb2dyYW1JbnZvY2F0
aW9uU2hvcnROYW1lKCkKLS8vIFNldFVzYWdlTWVzc2FnZSgpCi0vLyBQcm9ncmFtVXNhZ2UoKQot
Ly8gICAgRnVuY3Rpb25zIHRvIHNldCBhbmQgZ2V0IGFyZ3YuICBUeXBpY2FsbHkgdGhlIHNldHRl
ciBpcyBjYWxsZWQKLS8vICAgIGJ5IFBhcnNlQ29tbWFuZExpbmVGbGFncy4gIEFsc28gY2FuIGdl
dCB0aGUgUHJvZ3JhbVVzYWdlIHN0cmluZywKLS8vICAgIHNldCBieSBTZXRVc2FnZU1lc3NhZ2Uu
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0vLyBUaGVzZSB2YWx1ZXMgYXJlIG5vdCBwcm90ZWN0ZWQgYnkg
YSBNdXRleCBiZWNhdXNlIHRoZXkgYXJlIG5vcm1hbGx5Ci0vLyBzZXQgb25seSBvbmNlIGR1cmlu
ZyBwcm9ncmFtIHN0YXJ0dXAuCi1zdGF0aWMgY29uc3QgY2hhciogYXJndjAgPSAiVU5LTk9XTiI7
ICAgICAgLy8ganVzdCB0aGUgcHJvZ3JhbSBuYW1lCi1zdGF0aWMgY29uc3QgY2hhciogY21kbGlu
ZSA9ICIiOyAgICAgICAgICAgLy8gdGhlIGVudGlyZSBjb21tYW5kLWxpbmUKLXN0YXRpYyB2ZWN0
b3I8c3RyaW5nPiBhcmd2czsKLXN0YXRpYyB1aW50MzIgYXJndl9zdW0gPSAwOwotc3RhdGljIGNv
bnN0IGNoYXIqIHByb2dyYW1fdXNhZ2UgPSBOVUxMOwotCi12b2lkIFNldEFyZ3YoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqKiBhcmd2KSB7Ci0gIHN0YXRpYyBib29sIGNhbGxlZF9zZXRfYXJndiA9IGZh
bHNlOwotICBpZiAoY2FsbGVkX3NldF9hcmd2KSAgICAgICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBh
biBhcmd2IGZvciB5b3UKLSAgICByZXR1cm47Ci0KLSAgY2FsbGVkX3NldF9hcmd2ID0gdHJ1ZTsK
LQotICBhc3NlcnQoYXJnYyA+IDApOyAgICAgICAgICAgIC8vIGV2ZXJ5IHByb2dyYW0gaGFzIGF0
IGxlYXN0IGEgcHJvZ25hbWUKLSAgYXJndjAgPSBzdHJkdXAoYXJndlswXSk7ICAgICAvLyBzbWFs
bCBtZW1vcnkgbGVhaywgYnV0IGZuIG9ubHkgY2FsbGVkIG9uY2UKLSAgYXNzZXJ0KGFyZ3YwKTsK
LQotICBzdHJpbmcgY21kbGluZV9zdHJpbmc7ICAgICAgIC8vIGVhc2llciB0aGFuIGRvaW5nIHN0
cmNhdHMKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICBpZiAoaSAhPSAw
KSB7Ci0gICAgICBjbWRsaW5lX3N0cmluZyArPSAiICI7Ci0gICAgfQotICAgIGNtZGxpbmVfc3Ry
aW5nICs9IGFyZ3ZbaV07Ci0gICAgYXJndnMucHVzaF9iYWNrKGFyZ3ZbaV0pOwotICB9Ci0gIGNt
ZGxpbmUgPSBzdHJkdXAoY21kbGluZV9zdHJpbmcuY19zdHIoKSk7ICAvLyBhbm90aGVyIHNtYWxs
IG1lbW9yeSBsZWFrCi0gIGFzc2VydChjbWRsaW5lKTsKLQotICAvLyBDb21wdXRlIGEgc2ltcGxl
IHN1bSBvZiBhbGwgdGhlIGNoYXJzIGluIGFyZ3YKLSAgZm9yIChjb25zdCBjaGFyKiBjID0gY21k
bGluZTsgKmM7IGMrKykKLSAgICBhcmd2X3N1bSArPSAqYzsKLX0KLQotY29uc3QgdmVjdG9yPHN0
cmluZz4mIEdldEFyZ3ZzKCkgeyByZXR1cm4gYXJndnM7IH0KLWNvbnN0IGNoYXIqIEdldEFyZ3Yo
KSAgICAgICAgICAgIHsgcmV0dXJuIGNtZGxpbmU7IH0KLWNvbnN0IGNoYXIqIEdldEFyZ3YwKCkg
ICAgICAgICAgIHsgcmV0dXJuIGFyZ3YwOyB9Ci11aW50MzIgR2V0QXJndlN1bSgpICAgICAgICAg
ICAgICB7IHJldHVybiBhcmd2X3N1bTsgfQotY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25O
YW1lKCkgeyAgICAgICAgICAgICAvLyBsaWtlIHRoZSBHTlUgbGliYyBmbgotICByZXR1cm4gR2V0
QXJndjAoKTsKLX0KLWNvbnN0IGNoYXIqIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCkgeyAg
ICAgICAgLy8gbGlrZSB0aGUgR05VIGxpYmMgZm4KLSAgY29uc3QgY2hhciogc2xhc2ggPSBzdHJy
Y2hyKGFyZ3YwLCAnLycpOwotI2lmZGVmIE9TX1dJTkRPV1MKLSAgaWYgKCFzbGFzaCkgIHNsYXNo
ID0gc3RycmNocihhcmd2MCwgJ1xcJyk7Ci0jZW5kaWYKLSAgcmV0dXJuIHNsYXNoID8gc2xhc2gg
KyAxIDogYXJndjA7Ci19Ci0KLXZvaWQgU2V0VXNhZ2VNZXNzYWdlKGNvbnN0IHN0cmluZyYgdXNh
Z2UpIHsKLSAgaWYgKHByb2dyYW1fdXNhZ2UgIT0gTlVMTCkKLSAgICBSZXBvcnRFcnJvcihESUUs
ICJFUlJPUjogU2V0VXNhZ2VNZXNzYWdlKCkgY2FsbGVkIHR3aWNlXG4iKTsKLSAgcHJvZ3JhbV91
c2FnZSA9IHN0cmR1cCh1c2FnZS5jX3N0cigpKTsgICAgICAvLyBzbWFsbCBtZW1vcnkgbGVhawot
fQotCi1jb25zdCBjaGFyKiBQcm9ncmFtVXNhZ2UoKSB7Ci0gIGlmIChwcm9ncmFtX3VzYWdlKSB7
Ci0gICAgcmV0dXJuIHByb2dyYW1fdXNhZ2U7Ci0gIH0KLSAgcmV0dXJuICJXYXJuaW5nOiBTZXRV
c2FnZU1lc3NhZ2UoKSBuZXZlciBjYWxsZWQiOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU2V0
VmVyc2lvblN0cmluZygpCi0vLyBWZXJzaW9uU3RyaW5nKCkKLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0
YXRpYyBjb25zdCBjaGFyKiB2ZXJzaW9uX3N0cmluZyA9IE5VTEw7Ci0KLXZvaWQgU2V0VmVyc2lv
blN0cmluZyhjb25zdCBzdHJpbmcmIHZlcnNpb24pIHsKLSAgaWYgKHZlcnNpb25fc3RyaW5nICE9
IE5VTEwpCi0gICAgUmVwb3J0RXJyb3IoRElFLCAiRVJST1I6IFNldFZlcnNpb25TdHJpbmcoKSBj
YWxsZWQgdHdpY2VcbiIpOwotICB2ZXJzaW9uX3N0cmluZyA9IHN0cmR1cCh2ZXJzaW9uLmNfc3Ry
KCkpOyAgIC8vIHNtYWxsIG1lbW9yeSBsZWFrCi19Ci0KLWNvbnN0IGNoYXIqIFZlcnNpb25TdHJp
bmcoKSB7Ci0gIHJldHVybiB2ZXJzaW9uX3N0cmluZyA/IHZlcnNpb25fc3RyaW5nIDogIiI7Ci19
Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEdldENvbW1hbmRMaW5lT3B0aW9uKCkKLS8vIEdldENv
bW1hbmRMaW5lRmxhZ0luZm8oKQotLy8gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKCkKLS8v
IFNldENvbW1hbmRMaW5lT3B0aW9uKCkKLS8vIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUo
KQotLy8gICAgVGhlIHByb2dyYW1tYXRpYyB3YXkgdG8gc2V0IGEgZmxhZydzIHZhbHVlLCB1c2lu
ZyBhIHN0cmluZwotLy8gICAgZm9yIGl0cyBuYW1lIHJhdGhlciB0aGFuIHRoZSB2YXJpYWJsZSBp
dHNlbGYgKHRoYXQgaXMsCi0vLyAgICBTZXRDb21tYW5kTGluZU9wdGlvbigiZm9vIiwgeCkgcmF0
aGVyIHRoYW4gRkxBR1NfZm9vID0geCkuCi0vLyAgICBUaGVyZSdzIGFsc28gYSBiaXQgbW9yZSBm
bGV4aWJpbGl0eSBoZXJlIGR1ZSB0byB0aGUgdmFyaW91cwotLy8gICAgc2V0LW1vZGVzLCBidXQg
dHlwaWNhbGx5IHRoZXNlIGFyZSB1c2VkIHdoZW4geW91IG9ubHkgaGF2ZQotLy8gICAgdGhhdCBm
bGFnJ3MgbmFtZSBhcyBhIHN0cmluZywgcGVyaGFwcyBhdCBydW50aW1lLgotLy8gICAgQWxsIG9m
IHRoZXNlIHdvcmsgb24gdGhlIGRlZmF1bHQsIGdsb2JhbCByZWdpc3RyeS4KLS8vICAgICAgIEZv
ciBHZXRDb21tYW5kTGluZU9wdGlvbiwgcmV0dXJuIGZhbHNlIGlmIG5vIHN1Y2ggZmxhZwotLy8g
ICAgaXMga25vd24sIHRydWUgb3RoZXJ3aXNlLiAgV2UgY2xlYXIgInZhbHVlIiBpZiBhIHN1aXRh
YmxlCi0vLyAgICBmbGFnIGlzIGZvdW5kLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1ib29sIEdldENv
bW1hbmRMaW5lT3B0aW9uKGNvbnN0IGNoYXIqIG5hbWUsIHN0cmluZyogdmFsdWUpIHsKLSAgaWYg
KE5VTEwgPT0gbmFtZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGFzc2VydCh2YWx1ZSk7Ci0KLSAg
RmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0
cnkoKTsKLSAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwocmVnaXN0cnkpOwotICBDb21tYW5kTGluZUZs
YWcqIGZsYWcgPSByZWdpc3RyeS0+RmluZEZsYWdMb2NrZWQobmFtZSk7Ci0gIGlmIChmbGFnID09
IE5VTEwpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAgKnZhbHVlID0gZmxh
Zy0+Y3VycmVudF92YWx1ZSgpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci19Ci0KLWJvb2wgR2V0
Q29tbWFuZExpbmVGbGFnSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBDb21tYW5kTGluZUZsYWdJbmZv
KiBPVVRQVVQpIHsKLSAgaWYgKE5VTEwgPT0gbmFtZSkgcmV0dXJuIGZhbHNlOwotICBGbGFnUmVn
aXN0cnkqIGNvbnN0IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOwot
ICBGbGFnUmVnaXN0cnlMb2NrIGZybChyZWdpc3RyeSk7Ci0gIENvbW1hbmRMaW5lRmxhZyogZmxh
ZyA9IHJlZ2lzdHJ5LT5GaW5kRmxhZ0xvY2tlZChuYW1lKTsKLSAgaWYgKGZsYWcgPT0gTlVMTCkg
ewotICAgIHJldHVybiBmYWxzZTsKLSAgfSBlbHNlIHsKLSAgICBhc3NlcnQoT1VUUFVUKTsKLSAg
ICBmbGFnLT5GaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhPVVRQVVQpOwotICAgIHJldHVybiB0cnVl
OwotICB9Ci19Ci0KLUNvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09y
RGllKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgQ29tbWFuZExpbmVGbGFnSW5mbyBpbmZvOwotICBp
ZiAoIUdldENvbW1hbmRMaW5lRmxhZ0luZm8obmFtZSwgJmluZm8pKSB7Ci0gICAgZnByaW50Zihz
dGRlcnIsICJGQVRBTCBFUlJPUjogZmxhZyBuYW1lICclcycgZG9lc24ndCBleGlzdFxuIiwgbmFt
ZSk7Ci0gICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOyAgICAvLyBhbG1vc3QgY2VydGFpbmx5IGdmbGFn
c19leGl0ZnVuYygpCi0gIH0KLSAgcmV0dXJuIGluZm87Ci19Ci0KLXN0cmluZyBTZXRDb21tYW5k
TGluZU9wdGlvbldpdGhNb2RlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ1NldHRpbmdNb2RlIHNldF9t
b2RlKSB7Ci0gIHN0cmluZyByZXN1bHQ7Ci0gIEZsYWdSZWdpc3RyeSogY29uc3QgcmVnaXN0cnkg
PSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7Ci0gIEZsYWdSZWdpc3RyeUxvY2sgZnJs
KHJlZ2lzdHJ5KTsKLSAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gcmVnaXN0cnktPkZpbmRGbGFn
TG9ja2VkKG5hbWUpOwotICBpZiAoZmxhZykgewotICAgIENvbW1hbmRMaW5lRmxhZ1BhcnNlciBw
YXJzZXIocmVnaXN0cnkpOwotICAgIHJlc3VsdCA9IHBhcnNlci5Qcm9jZXNzU2luZ2xlT3B0aW9u
TG9ja2VkKGZsYWcsIHZhbHVlLCBzZXRfbW9kZSk7Ci0gICAgaWYgKCFyZXN1bHQuZW1wdHkoKSkg
eyAgIC8vIGluIHRoZSBlcnJvciBjYXNlLCB3ZSd2ZSBhbHJlYWR5IGxvZ2dlZAotICAgICAgLy8g
Q291bGQgY29uc2lkZXIgbG9nZ2luZyB0aGlzIGNoYW5nZQotICAgIH0KLSAgfQotICAvLyBUaGUg
QVBJIG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhhdCB3ZSByZXR1cm4gZW1wdHkgc3RyaW5nIG9uIGVy
cm9yCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0cmluZyBTZXRDb21tYW5kTGluZU9wdGlvbihj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkgewotICByZXR1cm4gU2V0Q29tbWFu
ZExpbmVPcHRpb25XaXRoTW9kZShuYW1lLCB2YWx1ZSwgU0VUX0ZMQUdTX1ZBTFVFKTsKLX0KLQot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vIEZsYWdTYXZlcgotLy8gRmxhZ1NhdmVySW1wbAotLy8gICAgVGhp
cyBjbGFzcyBzdG9yZXMgdGhlIHN0YXRlcyBvZiBhbGwgZmxhZ3MgYXQgY29uc3RydWN0IHRpbWUs
Ci0vLyAgICBhbmQgcmVzdG9yZXMgYWxsIGZsYWdzIHRvIHRoYXQgc3RhdGUgYXQgZGVzdHJ1Y3Qg
dGltZS4KLS8vICAgIEl0cyBtYWpvciBpbXBsZW1lbnRhdGlvbiBjaGFsbGVuZ2UgaXMgdGhhdCBp
dCBuZXZlciBtb2RpZmllcwotLy8gICAgcG9pbnRlcnMgaW4gdGhlICdtYWluJyByZWdpc3RyeSwg
c28gZ2xvYmFsIEZMQUdfKiB2YXJzIGFsd2F5cwotLy8gICAgcG9pbnQgdG8gdGhlIHJpZ2h0IHBs
YWNlLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgRmxhZ1NhdmVySW1wbCB7Ci0gcHVibGljOgot
ICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IEZsYWdTYXZlckltcGwgb2JqZWN0LgotICBleHBsaWNp
dCBGbGFnU2F2ZXJJbXBsKEZsYWdSZWdpc3RyeSogbWFpbl9yZWdpc3RyeSkKLSAgICAgIDogbWFp
bl9yZWdpc3RyeV8obWFpbl9yZWdpc3RyeSkgeyB9Ci0gIH5GbGFnU2F2ZXJJbXBsKCkgewotICAg
IC8vIHJlY2xhaW0gbWVtb3J5IGZyb20gZWFjaCBvZiBvdXIgQ29tbWFuZExpbmVGbGFncwotICAg
IHZlY3RvcjxDb21tYW5kTGluZUZsYWcqPjo6Y29uc3RfaXRlcmF0b3IgaXQ7Ci0gICAgZm9yIChp
dCA9IGJhY2t1cF9yZWdpc3RyeV8uYmVnaW4oKTsgaXQgIT0gYmFja3VwX3JlZ2lzdHJ5Xy5lbmQo
KTsgKytpdCkKLSAgICAgIGRlbGV0ZSAqaXQ7Ci0gIH0KLQotICAvLyBTYXZlcyB0aGUgZmxhZyBz
dGF0ZXMgZnJvbSB0aGUgZmxhZyByZWdpc3RyeSBpbnRvIHRoaXMgb2JqZWN0LgotICAvLyBJdCdz
IGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtb3JlIHRoYW4gb25jZS4KLSAgLy8gTXVzdCBiZSBjYWxs
ZWQgd2hlbiB0aGUgcmVnaXN0cnkgbXV0ZXggaXMgbm90IGhlbGQuCi0gIHZvaWQgU2F2ZUZyb21S
ZWdpc3RyeSgpIHsKLSAgICBGbGFnUmVnaXN0cnlMb2NrIGZybChtYWluX3JlZ2lzdHJ5Xyk7Ci0g
ICAgYXNzZXJ0KGJhY2t1cF9yZWdpc3RyeV8uZW1wdHkoKSk7ICAgLy8gY2FsbCBvbmx5IG9uY2Uh
Ci0gICAgZm9yIChGbGFnUmVnaXN0cnk6OkZsYWdDb25zdEl0ZXJhdG9yIGl0ID0gbWFpbl9yZWdp
c3RyeV8tPmZsYWdzXy5iZWdpbigpOwotICAgICAgICAgaXQgIT0gbWFpbl9yZWdpc3RyeV8tPmZs
YWdzXy5lbmQoKTsKLSAgICAgICAgICsraXQpIHsKLSAgICAgIGNvbnN0IENvbW1hbmRMaW5lRmxh
ZyogbWFpbiA9IGl0LT5zZWNvbmQ7Ci0gICAgICAvLyBTZXRzIHVwIGFsbCB0aGUgY29uc3QgdmFy
aWFibGVzIGluIGJhY2t1cCBjb3JyZWN0bHkKLSAgICAgIENvbW1hbmRMaW5lRmxhZyogYmFja3Vw
ID0gbmV3IENvbW1hbmRMaW5lRmxhZygKLSAgICAgICAgICBtYWluLT5uYW1lKCksIG1haW4tPmhl
bHAoKSwgbWFpbi0+ZmlsZW5hbWUoKSwKLSAgICAgICAgICBtYWluLT5jdXJyZW50Xy0+TmV3KCks
IG1haW4tPmRlZnZhbHVlXy0+TmV3KCkpOwotICAgICAgLy8gU2V0cyB1cCBhbGwgdGhlIG5vbi1j
b25zdCB2YXJpYWJsZXMgaW4gYmFja3VwIGNvcnJlY3RseQotICAgICAgYmFja3VwLT5Db3B5RnJv
bSgqbWFpbik7Ci0gICAgICBiYWNrdXBfcmVnaXN0cnlfLnB1c2hfYmFjayhiYWNrdXApOyAgIC8v
IGFkZCBpdCB0byBhIGNvbnZlbmllbnQgbGlzdAotICAgIH0KLSAgfQotCi0gIC8vIFJlc3RvcmVz
IHRoZSBzYXZlZCBmbGFnIHN0YXRlcyBpbnRvIHRoZSBmbGFnIHJlZ2lzdHJ5LiAgV2UKLSAgLy8g
YXNzdW1lIG5vIGZsYWdzIHdlcmUgYWRkZWQgb3IgZGVsZXRlZCBmcm9tIHRoZSByZWdpc3RyeSBz
aW5jZQotICAvLyB0aGUgU2F2ZUZyb21SZWdpc3RyeTsgaWYgdGhleSB3ZXJlLCB0aGF0J3MgdHJv
dWJsZSEgIE11c3QgYmUKLSAgLy8gY2FsbGVkIHdoZW4gdGhlIHJlZ2lzdHJ5IG11dGV4IGlzIG5v
dCBoZWxkLgotICB2b2lkIFJlc3RvcmVUb1JlZ2lzdHJ5KCkgewotICAgIEZsYWdSZWdpc3RyeUxv
Y2sgZnJsKG1haW5fcmVnaXN0cnlfKTsKLSAgICB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnKj46OmNv
bnN0X2l0ZXJhdG9yIGl0OwotICAgIGZvciAoaXQgPSBiYWNrdXBfcmVnaXN0cnlfLmJlZ2luKCk7
IGl0ICE9IGJhY2t1cF9yZWdpc3RyeV8uZW5kKCk7ICsraXQpIHsKLSAgICAgIENvbW1hbmRMaW5l
RmxhZyogbWFpbiA9IG1haW5fcmVnaXN0cnlfLT5GaW5kRmxhZ0xvY2tlZCgoKml0KS0+bmFtZSgp
KTsKLSAgICAgIGlmIChtYWluICE9IE5VTEwpIHsgICAgICAgLy8gaWYgTlVMTCwgZmxhZyBnb3Qg
ZGVsZXRlZCBmcm9tIHJlZ2lzdHJ5KCEpCi0gICAgICAgIG1haW4tPkNvcHlGcm9tKCoqaXQpOwot
ICAgICAgfQotICAgIH0KLSAgfQotCi0gcHJpdmF0ZToKLSAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCBt
YWluX3JlZ2lzdHJ5XzsKLSAgdmVjdG9yPENvbW1hbmRMaW5lRmxhZyo+IGJhY2t1cF9yZWdpc3Ry
eV87Ci0KLSAgRmxhZ1NhdmVySW1wbChjb25zdCBGbGFnU2F2ZXJJbXBsJik7ICAvLyBubyBjb3B5
aW5nIQotICB2b2lkIG9wZXJhdG9yPShjb25zdCBGbGFnU2F2ZXJJbXBsJik7Ci19OwotCi1GbGFn
U2F2ZXI6OkZsYWdTYXZlcigpCi0gICAgOiBpbXBsXyhuZXcgRmxhZ1NhdmVySW1wbChGbGFnUmVn
aXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCkpKSB7Ci0gIGltcGxfLT5TYXZlRnJvbVJlZ2lzdHJ5KCk7
Ci19Ci0KLUZsYWdTYXZlcjo6fkZsYWdTYXZlcigpIHsKLSAgaW1wbF8tPlJlc3RvcmVUb1JlZ2lz
dHJ5KCk7Ci0gIGRlbGV0ZSBpbXBsXzsKLX0KLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQ29tbWFu
ZGxpbmVGbGFnc0ludG9TdHJpbmcoKQotLy8gUmVhZEZsYWdzRnJvbVN0cmluZygpCi0vLyBBcHBl
bmRGbGFnc0ludG9GaWxlKCkKLS8vIFJlYWRGcm9tRmxhZ3NGaWxlKCkKLS8vICAgIFRoZXNlIGFy
ZSBtb3N0bHktZGVwcmVjYXRlZCByb3V0aW5lcyB0aGF0IHN0aWNrIHRoZQotLy8gICAgY29tbWFu
ZGxpbmUgZmxhZ3MgaW50byBhIGZpbGUvc3RyaW5nIGFuZCByZWFkIHRoZW0gYmFjawotLy8gICAg
b3V0IGFnYWluLiAgSSBjYW4gc2VlIGEgdXNlIGZvciBDb21tYW5kbGluZUZsYWdzSW50b1N0cmlu
ZywKLS8vICAgIGZvciBjcmVhdGluZyBhIGZsYWdmaWxlLCBidXQgdGhlIHJlc3QgZG9uJ3Qgc2Vl
bSB0aGF0IHVzZWZ1bAotLy8gICAgLS0gc29tZSwgSSB0aGluaywgYXJlIGEgcG9vci1tYW4ncyBh
dHRlbXB0IGF0IEZsYWdTYXZlciAtLQotLy8gICAgYW5kIGFyZSBpbmNsdWRlZCBvbmx5IHVudGls
IHdlIGNhbiBkZWxldGUgdGhlbSBmcm9tIGNhbGxlcnMuCi0vLyAgICBOb3RlIHRoZXkgZG9uJ3Qg
c2F2ZSAtLWZsYWdmaWxlIGZsYWdzICh0aG91Z2ggdGhleSBkbyBzYXZlCi0vLyAgICB0aGUgcmVz
dWx0IG9mIGhhdmluZyBjYWxsZWQgdGhlIGZsYWdmaWxlLCBvZiBjb3Vyc2UpLgotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotc3RhdGljIHN0cmluZyBUaGVzZUNvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nKAot
ICAgIGNvbnN0IHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiYgZmxhZ3MpIHsKLSAgdmVjdG9y
PENvbW1hbmRMaW5lRmxhZ0luZm8+Ojpjb25zdF9pdGVyYXRvciBpOwotCi0gIHNpemVfdCByZXR2
YWxfc3BhY2UgPSAwOwotICBmb3IgKGkgPSBmbGFncy5iZWdpbigpOyBpICE9IGZsYWdzLmVuZCgp
OyArK2kpIHsKLSAgICAvLyBBbiAob3Zlcillc3RpbWF0ZSBvZiBob3cgbXVjaCBzcGFjZSBpdCB3
aWxsIHRha2UgdG8gcHJpbnQgdGhpcyBmbGFnCi0gICAgcmV0dmFsX3NwYWNlICs9IGktPm5hbWUu
bGVuZ3RoKCkgKyBpLT5jdXJyZW50X3ZhbHVlLmxlbmd0aCgpICsgNTsKLSAgfQotCi0gIHN0cmlu
ZyByZXR2YWw7Ci0gIHJldHZhbC5yZXNlcnZlKHJldHZhbF9zcGFjZSk7Ci0gIGZvciAoaSA9IGZs
YWdzLmJlZ2luKCk7IGkgIT0gZmxhZ3MuZW5kKCk7ICsraSkgewotICAgIHJldHZhbCArPSAiLS0i
OwotICAgIHJldHZhbCArPSBpLT5uYW1lOwotICAgIHJldHZhbCArPSAiPSI7Ci0gICAgcmV0dmFs
ICs9IGktPmN1cnJlbnRfdmFsdWU7Ci0gICAgcmV0dmFsICs9ICJcbiI7Ci0gIH0KLSAgcmV0dXJu
IHJldHZhbDsKLX0KLQotc3RyaW5nIENvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nKCkgewotICB2
ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4gc29ydGVkX2ZsYWdzOwotICBHZXRBbGxGbGFncygm
c29ydGVkX2ZsYWdzKTsKLSAgcmV0dXJuIFRoZXNlQ29tbWFuZGxpbmVGbGFnc0ludG9TdHJpbmco
c29ydGVkX2ZsYWdzKTsKLX0KLQotYm9vbCBSZWFkRmxhZ3NGcm9tU3RyaW5nKGNvbnN0IHN0cmlu
ZyYgZmxhZ2ZpbGVjb250ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiAvKnByb2dfbmFtZSovLCAgLy8gVE9ETyhjc2lsdmVycyk6IG5peCB0aGlzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBlcnJvcnNfYXJlX2ZhdGFsKSB7Ci0gIEZsYWdSZWdpc3RyeSog
Y29uc3QgcmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7Ci0gIEZsYWdT
YXZlckltcGwgc2F2ZWRfc3RhdGVzKHJlZ2lzdHJ5KTsKLSAgc2F2ZWRfc3RhdGVzLlNhdmVGcm9t
UmVnaXN0cnkoKTsKLQotICBDb21tYW5kTGluZUZsYWdQYXJzZXIgcGFyc2VyKHJlZ2lzdHJ5KTsK
LSAgcmVnaXN0cnktPkxvY2soKTsKLSAgcGFyc2VyLlByb2Nlc3NPcHRpb25zRnJvbVN0cmluZ0xv
Y2tlZChmbGFnZmlsZWNvbnRlbnRzLCBTRVRfRkxBR1NfVkFMVUUpOwotICByZWdpc3RyeS0+VW5s
b2NrKCk7Ci0gIC8vIFNob3VsZCB3ZSBoYW5kbGUgLS1oZWxwIGFuZCBzdWNoIHdoZW4gcmVhZGlu
ZyBmbGFncyBmcm9tIGEgc3RyaW5nPyAgU3VyZS4KLSAgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxh
Z3MoKTsKLSAgaWYgKHBhcnNlci5SZXBvcnRFcnJvcnMoKSkgewotICAgIC8vIEVycm9yLiAgUmVz
dG9yZSBhbGwgZ2xvYmFsIGZsYWdzIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcy4KLSAgICBpZiAo
ZXJyb3JzX2FyZV9mYXRhbCkKLSAgICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLSAgICBzYXZlZF9z
dGF0ZXMuUmVzdG9yZVRvUmVnaXN0cnkoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLS8vIFRPRE8oY3NpbHZlcnMpOiBuaXggcHJvZ19uYW1lIGluIGZhdm9y
IG9mIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCkKLWJvb2wgQXBwZW5kRmxhZ3NJbnRvRmls
ZShjb25zdCBzdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBjaGFyICpwcm9nX25hbWUpIHsKLSAgRklM
RSAqZnA7Ci0gIGlmIChTYWZlRk9wZW4oJmZwLCBmaWxlbmFtZS5jX3N0cigpLCAiYSIpICE9IDAp
IHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBpZiAocHJvZ19uYW1lKQotICAgIGZwcmlu
dGYoZnAsICIlc1xuIiwgcHJvZ19uYW1lKTsKLQotICB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5m
bz4gZmxhZ3M7Ci0gIEdldEFsbEZsYWdzKCZmbGFncyk7Ci0gIC8vIEJ1dCB3ZSBkb24ndCB3YW50
IC0tZmxhZ2ZpbGUsIHdoaWNoIGxlYWRzIHRvIHdlaXJkIHJlY3Vyc2lvbiBpc3N1ZXMKLSAgdmVj
dG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+OjppdGVyYXRvciBpOwotICBmb3IgKGkgPSBmbGFncy5i
ZWdpbigpOyBpICE9IGZsYWdzLmVuZCgpOyArK2kpIHsKLSAgICBpZiAoc3RyY21wKGktPm5hbWUu
Y19zdHIoKSwgImZsYWdmaWxlIikgPT0gMCkgewotICAgICAgZmxhZ3MuZXJhc2UoaSk7Ci0gICAg
ICBicmVhazsKLSAgICB9Ci0gIH0KLSAgZnByaW50ZihmcCwgIiVzIiwgVGhlc2VDb21tYW5kbGlu
ZUZsYWdzSW50b1N0cmluZyhmbGFncykuY19zdHIoKSk7Ci0KLSAgZmNsb3NlKGZwKTsKLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZEZyb21GbGFnc0ZpbGUoY29uc3Qgc3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgY2hhciogcHJvZ19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBib29s
IGVycm9yc19hcmVfZmF0YWwpIHsKLSAgcmV0dXJuIFJlYWRGbGFnc0Zyb21TdHJpbmcoUmVhZEZp
bGVJbnRvU3RyaW5nKGZpbGVuYW1lLmNfc3RyKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9nX25hbWUsIGVycm9yc19hcmVfZmF0YWwpOwotfQotCi0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBCb29sRnJvbUVudigpCi0vLyBJbnQzMkZyb21FbnYoKQotLy8gSW50NjRGcm9tRW52KCkK
LS8vIFVpbnQ2NEZyb21FbnYoKQotLy8gRG91YmxlRnJvbUVudigpCi0vLyBTdHJpbmdGcm9tRW52
KCkKLS8vICAgIFJlYWRzIHRoZSB2YWx1ZSBmcm9tIHRoZSBlbnZpcm9ubWVudCBhbmQgcmV0dXJu
cyBpdC4KLS8vICAgIFdlIHVzZSBhbiBGbGFnVmFsdWUgdG8gbWFrZSB0aGUgcGFyc2luZyBlYXN5
LgotLy8gICAgRXhhbXBsZSB1c2FnZToKLS8vICAgICAgIERFRklORV9ib29sKG15ZmxhZywgQm9v
bEZyb21FbnYoIk1ZRkxBR19ERUZBVUxUIiwgZmFsc2UpLCAid2hhdGV2ZXIiKTsKLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLWJvb2wgQm9vbEZyb21FbnYoY29uc3QgY2hhciAqdiwgYm9vbCBkZmx0KSB7Ci0g
IHJldHVybiBHZXRGcm9tRW52KHYsICJib29sIiwgZGZsdCk7Ci19Ci1pbnQzMiBJbnQzMkZyb21F
bnYoY29uc3QgY2hhciAqdiwgaW50MzIgZGZsdCkgewotICByZXR1cm4gR2V0RnJvbUVudih2LCAi
aW50MzIiLCBkZmx0KTsKLX0KLWludDY0IEludDY0RnJvbUVudihjb25zdCBjaGFyICp2LCBpbnQ2
NCBkZmx0KSAgICB7Ci0gIHJldHVybiBHZXRGcm9tRW52KHYsICJpbnQ2NCIsIGRmbHQpOwotfQot
dWludDY0IFVpbnQ2NEZyb21FbnYoY29uc3QgY2hhciAqdiwgdWludDY0IGRmbHQpIHsKLSAgcmV0
dXJuIEdldEZyb21FbnYodiwgInVpbnQ2NCIsIGRmbHQpOwotfQotZG91YmxlIERvdWJsZUZyb21F
bnYoY29uc3QgY2hhciAqdiwgZG91YmxlIGRmbHQpIHsKLSAgcmV0dXJuIEdldEZyb21FbnYodiwg
ImRvdWJsZSIsIGRmbHQpOwotfQotCi0jaWZkZWYgX01TQ19WRVIKLSMgIHByYWdtYSB3YXJuaW5n
KHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2KSAvLyBpZ25vcmUgZ2V0ZW52
IHNlY3VyaXR5IHdhcm5pbmcKLSNlbmRpZgotY29uc3QgY2hhciAqU3RyaW5nRnJvbUVudihjb25z
dCBjaGFyICp2YXJuYW1lLCBjb25zdCBjaGFyICpkZmx0KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0
IHZhbCA9IGdldGVudih2YXJuYW1lKTsKLSAgcmV0dXJuIHZhbCA/IHZhbCA6IGRmbHQ7Ci19Ci0j
aWZkZWYgX01TQ19WRVIKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBSZWdpc3RlckZsYWdWYWxpZGF0b3IoKQotLy8gICAgUmVnaXN0ZXJGbGFn
VmFsaWRhdG9yKCkgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgY2xpZW50cyB1c2UgdG8KLS8vICAgICdk
ZWNvcmF0ZScgYSBmbGFnIHdpdGggYSB2YWxpZGF0aW9uIGZ1bmN0aW9uLiAgT25jZSB0aGlzIGlz
Ci0vLyAgICBkb25lLCBldmVyeSB0aW1lIHRoZSBmbGFnIGlzIHNldCAoaW5jbHVkaW5nIHdoZW4g
dGhlIGZsYWcKLS8vICAgIGlzIHBhcnNlZCBmcm9tIGFyZ3YpLCB0aGUgdmFsaWRhdG9yLWZ1bmN0
aW9uIGlzIGNhbGxlZC4KLS8vICAgICAgIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdHJ1ZSBpZiB0
aGUgdmFsaWRhdG9yIHdhcyBhZGRlZAotLy8gICAgc3VjY2Vzc2Z1bGx5LCBvciBmYWxzZSBpZiBu
b3Q6IHRoZSBmbGFnIGFscmVhZHkgaGFzIGEgdmFsaWRhdG9yLAotLy8gICAgKG9ubHkgb25lIGFs
bG93ZWQgcGVyIGZsYWcpLCB0aGUgMXN0IGFyZyBpc24ndCBhIGZsYWcsIGV0Yy4KLS8vICAgICAg
IFRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYm9v
bCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3QgYm9vbCogZmxhZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGJvb2wpKSB7Ci0g
IHJldHVybiBBZGRGbGFnVmFsaWRhdG9yKGZsYWcsIHJlaW50ZXJwcmV0X2Nhc3Q8VmFsaWRhdGVG
blByb3RvPih2YWxpZGF0ZV9mbikpOwotfQotYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29u
c3QgaW50MzIqIGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICgqdmFsaWRh
dGVfZm4pKGNvbnN0IGNoYXIqLCBpbnQzMikpIHsKLSAgcmV0dXJuIEFkZEZsYWdWYWxpZGF0b3Io
ZmxhZywgcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0ZUZuUHJvdG8+KHZhbGlkYXRlX2ZuKSk7Ci19
Ci1ib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBpbnQ2NCogZmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGludDY0
KSkgewotICByZXR1cm4gQWRkRmxhZ1ZhbGlkYXRvcihmbGFnLCByZWludGVycHJldF9jYXN0PFZh
bGlkYXRlRm5Qcm90bz4odmFsaWRhdGVfZm4pKTsKLX0KLWJvb2wgUmVnaXN0ZXJGbGFnVmFsaWRh
dG9yKGNvbnN0IHVpbnQ2NCogZmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
KCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIHVpbnQ2NCkpIHsKLSAgcmV0dXJuIEFkZEZsYWdW
YWxpZGF0b3IoZmxhZywgcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0ZUZuUHJvdG8+KHZhbGlkYXRl
X2ZuKSk7Ci19Ci1ib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBkb3VibGUqIGZsYWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICgqdmFsaWRhdGVfZm4pKGNvbnN0IGNo
YXIqLCBkb3VibGUpKSB7Ci0gIHJldHVybiBBZGRGbGFnVmFsaWRhdG9yKGZsYWcsIHJlaW50ZXJw
cmV0X2Nhc3Q8VmFsaWRhdGVGblByb3RvPih2YWxpZGF0ZV9mbikpOwotfQotYm9vbCBSZWdpc3Rl
ckZsYWdWYWxpZGF0b3IoY29uc3Qgc3RyaW5nKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgY29uc3Qgc3RyaW5nJikpIHsK
LSAgcmV0dXJuIEFkZEZsYWdWYWxpZGF0b3IoZmxhZywgcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0
ZUZuUHJvdG8+KHZhbGlkYXRlX2ZuKSk7Ci19Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFBhcnNl
Q29tbWFuZExpbmVGbGFncygpCi0vLyBQYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzKCkKLS8v
IEhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzKCkKLS8vICAgIFRoaXMgaXMgdGhlIG1haW4gZnVu
Y3Rpb24gY2FsbGVkIGZyb20gbWFpbigpLCB0byBhY3R1YWxseQotLy8gICAgcGFyc2UgdGhlIGNv
bW1hbmRsaW5lLiAgSXQgbW9kaWZpZXMgYXJnYyBhbmQgYXJndiBhcyBkZXNjcmliZWQKLS8vICAg
IGF0IHRoZSB0b3Agb2YgZ2ZsYWdzLmguICBZb3UgY2FuIGFsc28gZGl2aWRlIHRoaXMKLS8vICAg
IGZ1bmN0aW9uIGludG8gdHdvIHBhcnRzLCBpZiB5b3Ugd2FudCB0byBkbyB3b3JrIGJldHdlZW4K
LS8vICAgIHRoZSBwYXJzaW5nIG9mIHRoZSBmbGFncyBhbmQgdGhlIHByaW50aW5nIG9mIGFueSBo
ZWxwIG91dHB1dC4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXRpYyB1aW50MzIgUGFyc2VDb21tYW5k
TGluZUZsYWdzSW50ZXJuYWwoaW50KiBhcmdjLCBjaGFyKioqIGFyZ3YsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVtb3ZlX2ZsYWdzLCBib29sIGRv
X3JlcG9ydCkgewotICBTZXRBcmd2KCphcmdjLCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4oKmFy
Z3YpKTsgICAgLy8gc2F2ZSBpdCBmb3IgbGF0ZXIKLQotICBGbGFnUmVnaXN0cnkqIGNvbnN0IHJl
Z2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOwotICBDb21tYW5kTGluZUZs
YWdQYXJzZXIgcGFyc2VyKHJlZ2lzdHJ5KTsKLQotICAvLyBXaGVuIHdlIHBhcnNlIHRoZSBjb21t
YW5kbGluZSBmbGFncywgd2UnbGwgaGFuZGxlIC0tZmxhZ2ZpbGUsCi0gIC8vIC0tdHJ5ZnJvbWVu
diwgZXRjLiBhcyB3ZSBzZWUgdGhlbSAoc2luY2UgZmxhZy1ldmFsdWF0aW9uIG9yZGVyCi0gIC8v
IG1heSBiZSBpbXBvcnRhbnQpLiAgQnV0IHNvbWV0aW1lcyBhcHBzIHNldCBGTEFHU190cnlmcm9t
ZW52L2V0Yy4KLSAgLy8gbWFudWFsbHkgYmVmb3JlIGNhbGxpbmcgUGFyc2VDb21tYW5kTGluZUZs
YWdzLiAgV2Ugd2FudCB0byBldmFsdWF0ZQotICAvLyB0aG9zZSB0b28sIGFzIGlmIHRoZXkgd2Vy
ZSB0aGUgZmlyc3QgZmxhZ3Mgb24gdGhlIGNvbW1hbmRsaW5lLgotICByZWdpc3RyeS0+TG9jaygp
OwotICBwYXJzZXIuUHJvY2Vzc0ZsYWdmaWxlTG9ja2VkKEZMQUdTX2ZsYWdmaWxlLCBTRVRfRkxB
R1NfVkFMVUUpOwotICAvLyBMYXN0IGFyZyBoZXJlIGluZGljYXRlcyB3aGV0aGVyIGZsYWctbm90
LWZvdW5kIGlzIGEgZmF0YWwgZXJyb3Igb3Igbm90Ci0gIHBhcnNlci5Qcm9jZXNzRnJvbWVudkxv
Y2tlZChGTEFHU19mcm9tZW52LCBTRVRfRkxBR1NfVkFMVUUsIHRydWUpOwotICBwYXJzZXIuUHJv
Y2Vzc0Zyb21lbnZMb2NrZWQoRkxBR1NfdHJ5ZnJvbWVudiwgU0VUX0ZMQUdTX1ZBTFVFLCBmYWxz
ZSk7Ci0gIHJlZ2lzdHJ5LT5VbmxvY2soKTsKLQotICAvLyBOb3cgZ2V0IHRoZSBmbGFncyBzcGVj
aWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lCi0gIGNvbnN0IGludCByID0gcGFyc2VyLlBhcnNlTmV3
Q29tbWFuZExpbmVGbGFncyhhcmdjLCBhcmd2LCByZW1vdmVfZmxhZ3MpOwotCi0gIGlmIChkb19y
ZXBvcnQpCi0gICAgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKTsgICAvLyBtYXkgY2F1c2Ug
dXMgdG8gZXhpdCBvbiAtLWhlbHAsIGV0Yy4KLQotICAvLyBTZWUgaWYgYW55IG9mIHRoZSB1bnNl
dCBmbGFncyBmYWlsIHRoZWlyIHZhbGlkYXRpb24gY2hlY2tzCi0gIHBhcnNlci5WYWxpZGF0ZUFs
bEZsYWdzKCk7Ci0KLSAgaWYgKHBhcnNlci5SZXBvcnRFcnJvcnMoKSkgICAgICAgIC8vIG1heSBj
YXVzZSB1cyB0byBleGl0IG9uIGlsbGVnYWwgZmxhZ3MKLSAgICBnZmxhZ3NfZXhpdGZ1bmMoMSk7
Ci0gIHJldHVybiByOwotfQotCi11aW50MzIgUGFyc2VDb21tYW5kTGluZUZsYWdzKGludCogYXJn
YywgY2hhcioqKiBhcmd2LCBib29sIHJlbW92ZV9mbGFncykgewotICByZXR1cm4gUGFyc2VDb21t
YW5kTGluZUZsYWdzSW50ZXJuYWwoYXJnYywgYXJndiwgcmVtb3ZlX2ZsYWdzLCB0cnVlKTsKLX0K
LQotdWludDMyIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoaW50KiBhcmdjLCBjaGFyKioq
IGFyZ3YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlbW92ZV9m
bGFncykgewotICByZXR1cm4gUGFyc2VDb21tYW5kTGluZUZsYWdzSW50ZXJuYWwoYXJnYywgYXJn
diwgcmVtb3ZlX2ZsYWdzLCBmYWxzZSk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBBbGxvd0Nv
bW1hbmRMaW5lUmVwYXJzaW5nKCkKLS8vIFJlcGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncygp
Ci0vLyAgICBUaGlzIGlzIG1vc3QgdXNlZnVsIGZvciBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIGlk
ZWEgaXMgaWYKLS8vICAgIGEgZmxhZyBpcyBkZWZpbmVkIGluIGEgc2hhcmVkIGxpYnJhcnkgdGhh
dCBpcyBkbG9wZW4nZWQKLS8vICAgIHNvbWV0aW1lIGFmdGVyIG1haW4oKSwgeW91IGNhbiBQYXJz
ZUNvbW1hbmRMaW5lRmxhZ3MgYmVmb3JlCi0vLyAgICB0aGUgZGxvcGVuLCB0aGVuIFJlcGFyc2VD
b21tYW5kTGluZU5vbkhlbHBGbGFncygpIGFmdGVyIHRoZQotLy8gICAgZGxvcGVuLCB0byBnZXQg
dGhlIG5ldyBmbGFncy4gIEJ1dCB5b3UgaGF2ZSB0byBleHBsaWNpdGx5Ci0vLyAgICBBbGxvdygp
IGl0OyBvdGhlcndpc2UsIHlvdSBnZXQgdGhlIG5vcm1hbCBkZWZhdWx0IGJlaGF2aW9yCi0vLyAg
ICBvZiB1bnJlY29nbml6ZWQgZmxhZ3MgY2FsbGluZyBhIGZhdGFsIGVycm9yLgotLy8gVE9ETyhj
c2lsdmVycyk6IHRoaXMgaXNuJ3QgdXNlZC4gIEp1c3QgZGVsZXRlIGl0PwotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotdm9pZCBBbGxvd0NvbW1hbmRMaW5lUmVwYXJzaW5nKCkgewotICBhbGxvd19jb21tYW5k
X2xpbmVfcmVwYXJzaW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBSZXBhcnNlQ29tbWFuZExpbmVOb25I
ZWxwRmxhZ3MoKSB7Ci0gIC8vIFdlIG1ha2UgYSBjb3B5IG9mIGFyZ2MgYW5kIGFyZ3YgdG8gcGFz
cyBpbgotICBjb25zdCB2ZWN0b3I8c3RyaW5nPiYgYXJndnMgPSBHZXRBcmd2cygpOwotICBpbnQg
dG1wX2FyZ2MgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZ3ZzLnNpemUoKSk7Ci0gIGNoYXIqKiB0bXBf
YXJndiA9IG5ldyBjaGFyKiBbdG1wX2FyZ2MgKyAxXTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB0
bXBfYXJnYzsgKytpKQotICAgIHRtcF9hcmd2W2ldID0gc3RyZHVwKGFyZ3ZzW2ldLmNfc3RyKCkp
OyAgIC8vIFRPRE8oY3NpbHZlcnMpOiBkb24ndCBkdXAKLQotICBQYXJzZUNvbW1hbmRMaW5lTm9u
SGVscEZsYWdzKCZ0bXBfYXJnYywgJnRtcF9hcmd2LCBmYWxzZSk7Ci0KLSAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0bXBfYXJnYzsgKytpKQotICAgIGZyZWUodG1wX2FyZ3ZbaV0pOwotICBkZWxldGVb
XSB0bXBfYXJndjsKLX0KLQotdm9pZCBTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3MoKSB7Ci0gIEZs
YWdSZWdpc3RyeTo6RGVsZXRlR2xvYmFsUmVnaXN0cnkoKTsKLX0KLQotCi19IC8vIG5hbWVzcGFj
ZSBHRkxBR1NfTkFNRVNQQUNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFncy5oLmluIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9n
ZmxhZ3MuaC5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyNGQzOTAwOGNkZjc2
MjMzMWQwYzYyZjhlNmYzOTk5NmFiNjFiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFncy5oLmluCisrKyAvZGV2L251bGwKQEAgLTEsNTcy
ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLS8vIC0tLQotLy8gUmV2YW1wZWQgYW5kIHJlb3JnYW5pemVkIGJ5IENyYWlnIFNpbHZlcnN0
ZWluCi0vLwotLy8gVGhpcyBpcyB0aGUgZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBieSBh
bnkgZmlsZSB3aGljaCBkZWNsYXJlcwotLy8gb3IgZGVmaW5lcyBhIGNvbW1hbmQgbGluZSBmbGFn
IG9yIHdhbnRzIHRvIHBhcnNlIGNvbW1hbmQgbGluZSBmbGFncwotLy8gb3IgcHJpbnQgYSBwcm9n
cmFtIHVzYWdlIG1lc3NhZ2UgKHdoaWNoIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dAot
Ly8gZmxhZ3MpLiAgRXhlY3V0aXZlIHN1bW1hcnksIGluIHRoZSBmb3JtIG9mIGFuIGV4YW1wbGUg
Zm9vLmNjIGZpbGU6Ci0vLwotLy8gICAgI2luY2x1ZGUgImZvby5oIiAgICAgICAgIC8vIGZvby5o
IGhhcyBhIGxpbmUgIkRFQ0xBUkVfaW50MzIoc3RhcnQpOyIKLS8vICAgICNpbmNsdWRlICJ2YWxp
ZGF0b3JzLmgiICAvLyBoeXBvdGhldGljYWwgZmlsZSBkZWZpbmluZyBWYWxpZGF0ZUlzRmlsZSgp
Ci0vLwotLy8gICAgREVGSU5FX2ludDMyKGVuZCwgMTAwMCwgIlRoZSBsYXN0IHJlY29yZCB0byBy
ZWFkIik7Ci0vLwotLy8gICAgREVGSU5FX3N0cmluZyhmaWxlbmFtZSwgIm15X2ZpbGUudHh0Iiwg
IlRoZSBmaWxlIHRvIHJlYWQiKTsKLS8vICAgIC8vIENyYXNoIGlmIHRoZSBzcGVjaWZpZWQgZmls
ZSBkb2VzIG5vdCBleGlzdC4KLS8vICAgIHN0YXRpYyBib29sIGR1bW15ID0gUmVnaXN0ZXJGbGFn
VmFsaWRhdG9yKCZGTEFHU19maWxlbmFtZSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZWYWxpZGF0ZUlzRmlsZSk7Ci0vLwotLy8gICAgREVDTEFSRV9i
b29sKHZlcmJvc2UpOyAvLyBzb21lIG90aGVyIGZpbGUgaGFzIGEgREVGSU5FX2Jvb2wodmVyYm9z
ZSwgLi4uKQotLy8KLS8vICAgIHZvaWQgTXlGdW5jKCkgewotLy8gICAgICBpZiAoRkxBR1NfdmVy
Ym9zZSkgcHJpbnRmKCJSZWNvcmRzICVkLSVkXG4iLCBGTEFHU19zdGFydCwgRkxBR1NfZW5kKTsK
LS8vICAgIH0KLS8vCi0vLyAgICBUaGVuLCBhdCB0aGUgY29tbWFuZC1saW5lOgotLy8gICAgICAg
Li9mb28gLS1ub3ZlcmJvc2UgLS1zdGFydD01IC0tZW5kPTEwMAotLy8KLS8vIEZvciBtb3JlIGRl
dGFpbHMsIHNlZQotLy8gICAgZG9jL2dmbGFncy5odG1sCi0vLwotLy8gLS0tIEEgbm90ZSBhYm91
dCB0aHJlYWQtc2FmZXR5OgotLy8KLS8vIFdlIGRlc2NyaWJlIG1hbnkgZnVuY3Rpb25zIGluIHRo
aXMgcm91dGluZSBhcyBiZWluZyB0aHJlYWQtaG9zdGlsZSwKLS8vIHRocmVhZC1jb21wYXRpYmxl
LCBvciB0aHJlYWQtc2FmZS4gIEhlcmUgYXJlIHRoZSBtZWFuaW5ncyB3ZSB1c2U6Ci0vLwotLy8g
dGhyZWFkLXNhZmU6IGl0IGlzIHNhZmUgZm9yIG11bHRpcGxlIHRocmVhZHMgdG8gY2FsbCB0aGlz
IHJvdXRpbmUKLS8vICAgKG9yLCB3aGVuIHJlZmVycmluZyB0byBhIGNsYXNzLCBtZXRob2RzIG9m
IHRoaXMgY2xhc3MpCi0vLyAgIGNvbmN1cnJlbnRseS4KLS8vIHRocmVhZC1ob3N0aWxlOiBpdCBp
cyBub3Qgc2FmZSBmb3IgbXVsdGlwbGUgdGhyZWFkcyB0byBjYWxsIHRoaXMKLS8vICAgcm91dGlu
ZSAob3IgbWV0aG9kcyBvZiB0aGlzIGNsYXNzKSBjb25jdXJyZW50bHkuICBJbiBnZmxhZ3MsCi0v
LyAgIG1vc3QgdGhyZWFkLWhvc3RpbGUgcm91dGluZXMgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxl
ZCBlYXJseSBpbiwKLS8vICAgb3IgZXZlbiBiZWZvcmUsIG1haW4oKSAtLSB0aGF0IGlzLCBiZWZv
cmUgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLS8vIHRocmVhZC1jb21wYXRpYmxlOiBpdCBpcyBzYWZl
IGZvciBtdWx0aXBsZSB0aHJlYWRzIHRvIHJlYWQgZnJvbQotLy8gICB0aGlzIHZhcmlhYmxlICh3
aGVuIGFwcGxpZWQgdG8gdmFyaWFibGVzKSwgb3IgdG8gY2FsbCBjb25zdAotLy8gICBtZXRob2Rz
IG9mIHRoaXMgY2xhc3MgKHdoZW4gYXBwbGllZCB0byBjbGFzc2VzKSwgYXMgbG9uZyBhcyBubwot
Ly8gICBvdGhlciB0aHJlYWQgaXMgd3JpdGluZyB0byB0aGUgdmFyaWFibGUgb3IgY2FsbGluZyBu
b24tY29uc3QKLS8vICAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgotCi0jaWZuZGVmIEdGTEFHU19H
RkxBR1NfSF8KLSNkZWZpbmUgR0ZMQUdTX0dGTEFHU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImdmbGFnc19kZWNsYXJlLmgiIC8vIElXWVUg
cHJhZ21hOiBleHBvcnQKLQotCi0vLyBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgdmFyaWFibGVz
IGRlZmluZWQgaW4gdXNlciBjb2RlCi0jaWZuZGVmIEdGTEFHU19ETExfREVGSU5FX0ZMQUcKLSMg
IGlmZGVmIF9NU0NfVkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFRklORV9GTEFHIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVf
RkxBRwotIyAgZW5kaWYKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsK
LQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVG8gYWN0dWFsbHkgZGVmaW5lIGEgZmxhZyBpbiBhIGZp
bGUsIHVzZSBERUZJTkVfYm9vbCwKLS8vIERFRklORV9zdHJpbmcsIGV0Yy4gYXQgdGhlIGJvdHRv
bSBvZiB0aGlzIGZpbGUuICBZb3UgbWF5IGFsc28gZmluZAotLy8gaXQgdXNlZnVsIHRvIHJlZ2lz
dGVyIGEgdmFsaWRhdG9yIHdpdGggdGhlIGZsYWcuICBUaGlzIGVuc3VyZXMgdGhhdAotLy8gd2hl
biB0aGUgZmxhZyBpcyBwYXJzZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUsIG9yIGlzIGxhdGVyIHNl
dCB2aWEKLS8vIFNldENvbW1hbmRMaW5lT3B0aW9uLCB3ZSBjYWxsIHRoZSB2YWxpZGF0aW9uIGZ1
bmN0aW9uLiBJdCBpcyBfbm90XwotLy8gY2FsbGVkIHdoZW4geW91IGFzc2lnbiB0aGUgdmFsdWUg
dG8gdGhlIGZsYWcgZGlyZWN0bHkgdXNpbmcgdGhlID0gb3BlcmF0b3IuCi0vLwotLy8gVGhlIHZh
bGlkYXRpb24gZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBmbGFnIHZhbHVlIGlz
IHZhbGlkLCBhbmQKLS8vIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMg
ZmFsc2UgZm9yIHRoZSBuZXcgc2V0dGluZyBvZiB0aGUKLS8vIGZsYWcsIHRoZSBmbGFnIHdpbGwg
cmV0YWluIGl0cyBjdXJyZW50IHZhbHVlLiBJZiBpdCByZXR1cm5zIGZhbHNlIGZvciB0aGUKLS8v
IGRlZmF1bHQgdmFsdWUsIFBhcnNlQ29tbWFuZExpbmVGbGFncygpIHdpbGwgZGllLgotLy8KLS8v
IFRoaXMgZnVuY3Rpb24gaXMgc2FmZSB0byBjYWxsIGF0IGdsb2JhbCBjb25zdHJ1Y3QgdGltZSAo
YXMgaW4gdGhlCi0vLyBleGFtcGxlIGJlbG93KS4KLS8vCi0vLyBFeGFtcGxlIHVzZToKLS8vICAg
IHN0YXRpYyBib29sIFZhbGlkYXRlUG9ydChjb25zdCBjaGFyKiBmbGFnbmFtZSwgaW50MzIgdmFs
dWUpIHsKLS8vICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAzMjc2OCkgICAvLyB2YWx1
ZSBpcyBvawotLy8gICAgICAgICByZXR1cm4gdHJ1ZTsKLS8vICAgICAgIHByaW50ZigiSW52YWxp
ZCB2YWx1ZSBmb3IgLS0lczogJWRcbiIsIGZsYWduYW1lLCAoaW50KXZhbHVlKTsKLS8vICAgICAg
IHJldHVybiBmYWxzZTsKLS8vICAgIH0KLS8vICAgIERFRklORV9pbnQzMihwb3J0LCAwLCAiV2hh
dCBwb3J0IHRvIGxpc3RlbiBvbiIpOwotLy8gICAgc3RhdGljIGJvb2wgZHVtbXkgPSBSZWdpc3Rl
ckZsYWdWYWxpZGF0b3IoJkZMQUdTX3BvcnQsICZWYWxpZGF0ZVBvcnQpOwotCi0vLyBSZXR1cm5z
IHRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQsIGZhbHNlIGlmIG5vdCAoYmVjYXVzZSB0
aGUKLS8vIGZpcnN0IGFyZ3VtZW50IGRvZXNuJ3QgcG9pbnQgdG8gYSBjb21tYW5kLWxpbmUgZmxh
Zywgb3IgYmVjYXVzZSBhCi0vLyB2YWxpZGF0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB0
aGlzIGZsYWcpLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlk
YXRvcihjb25zdCBib29sKiAgICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBj
aGFyKiwgYm9vbCkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1Zh
bGlkYXRvcihjb25zdCBpbnQzMiogICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25z
dCBjaGFyKiwgaW50MzIpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZs
YWdWYWxpZGF0b3IoY29uc3QgaW50NjQqICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbiko
Y29uc3QgY2hhciosIGludDY0KSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVnaXN0
ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IHVpbnQ2NCogICAgICBmbGFnLCBib29sICgqdmFsaWRhdGVf
Zm4pKGNvbnN0IGNoYXIqLCB1aW50NjQpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBS
ZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3QgZG91YmxlKiAgICAgIGZsYWcsIGJvb2wgKCp2YWxp
ZGF0ZV9mbikoY29uc3QgY2hhciosIGRvdWJsZSkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBi
b29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBzdGQ6OnN0cmluZyogZmxhZywgYm9vbCAo
KnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgY29uc3Qgc3RkOjpzdHJpbmcmKSk7Ci0KLS8vIENv
bnZlbmllbmNlIG1hY3JvIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgZmxhZyB2YWxpZGF0b3IK
LSNkZWZpbmUgREVGSU5FX3ZhbGlkYXRvcihuYW1lLCB2YWxpZGF0b3IpIFwKLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBuYW1lIyNfdmFsaWRhdG9yX3JlZ2lzdGVyZWQgPSBcCi0gICAgICAgICAgICBH
RkxBR1NfTkFNRVNQQUNFOjpSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTXyMjbmFtZSwgdmFs
aWRhdG9yKQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBUaGVzZSBtZXRob2RzIGFyZSB0aGUgYmVz
dCB3YXkgdG8gZ2V0IGFjY2VzcyB0byBpbmZvIGFib3V0IHRoZQotLy8gbGlzdCBvZiBjb21tYW5k
bGluZSBmbGFncy4gIE5vdGUgdGhhdCB0aGVzZSByb3V0aW5lcyBhcmUgcHJldHR5IHNsb3cuCi0v
LyAgIEdldEFsbEZsYWdzOiBtb3N0bHktY29tcGxldGUgaW5mbyBhYm91dCB0aGUgbGlzdCwgc29y
dGVkIGJ5IGZpbGUuCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnczogcHJldHR5LXByaW50cyB0aGUg
bGlzdCB0byBzdGRvdXQgKHdoYXQgLS1oZWxwIGRvZXMpCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFn
c1Jlc3RyaWN0OiBsaW1pdCB0byBmaWxlbmFtZXMgd2l0aCByZXN0cmljdCBhcyBhIHN1YnN0cgot
Ly8KLS8vIEluIGFkZGl0aW9uIHRvIGFjY2Vzc2luZyBmbGFncywgeW91IGNhbiBhbHNvIGFjY2Vz
cyBhcmd2WzBdICh0aGUgcHJvZ3JhbQotLy8gbmFtZSkgYW5kIGFyZ3YgKHRoZSBlbnRpcmUgY29t
bWFuZGxpbmUpLCB3aGljaCB3ZSBzb2NrIGF3YXkgYSBjb3B5IG9mLgotLy8gVGhlc2UgdmFyaWFi
bGVzIGFyZSBzdGF0aWMsIHNvIHlvdSBzaG91bGQgb25seSBzZXQgdGhlbSBvbmNlLgotLy8KLS8v
IE5vIG5lZWQgdG8gZXhwb3J0IHRoaXMgZGF0YSBvbmx5IHN0cnVjdHVyZSBmcm9tIERMTCwgYXZv
aWRpbmcgVlMgd2FybmluZyA0MjUxLgotc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8gewotICBz
dGQ6OnN0cmluZyBuYW1lOyAgICAgICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBmbGFnCi0gIHN0
ZDo6c3RyaW5nIHR5cGU7ICAgICAgICAgICAgLy8gdGhlIHR5cGUgb2YgdGhlIGZsYWc6IGludDMy
LCBldGMKLSAgc3RkOjpzdHJpbmcgZGVzY3JpcHRpb247ICAgICAvLyB0aGUgImhlbHAgdGV4dCIg
YXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIGN1cnJlbnRfdmFsdWU7ICAg
Ly8gdGhlIGN1cnJlbnQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGRlZmF1bHRf
dmFsdWU7ICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5n
IGZpbGVuYW1lOyAgICAgICAgLy8gJ2NsZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5hbWUgaG9sZGlu
ZyB0aGUgZmxhZwotICBib29sIGhhc192YWxpZGF0b3JfZm47ICAgICAgIC8vIHRydWUgaWYgUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yIGNhbGxlZCBvbiB0aGlzIGZsYWcKLSAgYm9vbCBpc19kZWZhdWx0
OyAgICAgICAgICAgICAvLyB0cnVlIGlmIHRoZSBmbGFnIGhhcyB0aGUgZGVmYXVsdCB2YWx1ZSBh
bmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4
cGxpY2l0bHkgZnJvbSB0aGUgY21kbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG9yIHZpYSBTZXRDb21tYW5kTGluZU9wdGlvbgotICBjb25zdCB2b2lkKiBmbGFnX3B0cjsg
ICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlIChpLmUuIEZMQUdT
X2ZvbykKLX07Ci0KLS8vIFVzaW5nIHRoaXMgaW5zaWRlIG9mIGEgdmFsaWRhdG9yIGlzIGEgcmVj
aXBlIGZvciBhIGRlYWRsb2NrLgotLy8gVE9ETyh1c2VyKSBGaXggbG9ja2luZyB3aGVuIHZhbGlk
YXRvcnMgYXJlIHJ1bm5pbmcsIHRvIG1ha2UgaXQgc2FmZSB0bwotLy8gY2FsbCB2YWxpZGF0b3Jz
IGR1cmluZyBQYXJzZUFsbEZsYWdzLgotLy8gQWxzbyBtYWtlIHN1cmUgdGhlbiB0byB1bmNvbW1l
bnQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0IGluCi0vLyBnZmxhZ3NfdW5pdHRlc3Quc2gK
LWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBHZXRBbGxGbGFncyhzdGQ6OnZlY3RvcjxDb21t
YW5kTGluZUZsYWdJbmZvPiogT1VUUFVUKTsKLS8vIFRoZXNlIHR3byBhcmUgYWN0dWFsbHkgZGVm
aW5lZCBpbiBnZmxhZ3NfcmVwb3J0aW5nLmNjLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lk
IFNob3dVc2FnZVdpdGhGbGFncyhjb25zdCBjaGFyICphcmd2MCk7ICAvLyB3aGF0IC0taGVscCBk
b2VzCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJp
Y3QoY29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKnJlc3RyaWN0KTsKLQotLy8gQ3JlYXRl
IGEgZGVzY3JpcHRpdmUgc3RyaW5nIGZvciBhIGZsYWcuCi0vLyBHb2VzIHRvIHNvbWUgdHJvdWJs
ZSB0byBtYWtlIHByZXR0eSBsaW5lIGJyZWFrcy4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3Rk
OjpzdHJpbmcgRGVzY3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcp
OwotCi0vLyBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhy
ZWFkcyBhcmUgc3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTZXRBcmd2KGlu
dCBhcmdjLCBjb25zdCBjaGFyKiogYXJndik7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25z
IGFyZSB0aHJlYWQtc2FmZSBhcyBsb25nIGFzIFNldEFyZ3YoKSBpcwotLy8gb25seSBjYWxsZWQg
YmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIEdldEFyZ3ZzKCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9E
RUNMIGNvbnN0IGNoYXIqIEdldEFyZ3YoKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG9m
IGFyZ3YgYXMgYSBzdHJpbmcKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogR2V0
QXJndjAoKTsgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGFyZ3YwCi1leHRlcm4gR0ZMQUdT
X0RMTF9ERUNMIHVpbnQzMiBHZXRBcmd2U3VtKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8g
c2ltcGxlIGNoZWNrc3VtIG9mIGFyZ3YKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hh
ciogUHJvZ3JhbUludm9jYXRpb25OYW1lKCk7ICAgICAgICAvLyBhcmd2MCwgb3IgIlVOS05PV04i
IGlmIG5vdCBzZXQKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUlu
dm9jYXRpb25TaG9ydE5hbWUoKTsgICAvLyBiYXNlbmFtZShhcmd2MCkKLQotLy8gUHJvZ3JhbVVz
YWdlKCkgaXMgdGhyZWFkLXNhZmUgYXMgbG9uZyBhcyBTZXRVc2FnZU1lc3NhZ2UoKSBpcyBvbmx5
Ci0vLyBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExf
REVDTCBjb25zdCBjaGFyKiBQcm9ncmFtVXNhZ2UoKTsgICAgICAgICAgICAgICAgIC8vIHN0cmlu
ZyBzZXQgYnkgU2V0VXNhZ2VNZXNzYWdlKCkKLQotLy8gVmVyc2lvblN0cmluZygpIGlzIHRocmVh
ZC1zYWZlIGFzIGxvbmcgYXMgU2V0VmVyc2lvblN0cmluZygpIGlzIG9ubHkKLS8vIGNhbGxlZCBi
ZWZvcmUgYW55IHRocmVhZHMgc3RhcnQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNo
YXIqIFZlcnNpb25TdHJpbmcoKTsgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHNldCBieSBTZXRW
ZXJzaW9uU3RyaW5nKCkKLQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3JtYWxseSB5b3UgYWNj
ZXNzIGNvbW1hbmRsaW5lIGZsYWdzIGJ5IGp1c3Qgc2F5aW5nICJpZiAoRkxBR1NfZm9vKSIKLS8v
IG9yIHdoYXRldmVyLCBhbmQgc2V0IHRoZW0gYnkgY2FsbGluZyAiRkxBR1NfZm9vID0gYmFyIiAo
b3IsIG1vcmUKLS8vIGNvbW1vbmx5LCB2aWEgdGhlIERFRklORV9mb28gbWFjcm8pLiAgQnV0IGlm
IHlvdSBuZWVkIGEgYml0IG1vcmUKLS8vIGNvbnRyb2wsIHdlIGhhdmUgcHJvZ3JhbW1hdGljIHdh
eXMgdG8gZ2V0L3NldCB0aGUgZmxhZ3MgYXMgd2VsbC4KLS8vIFRoZXNlIHByb2dyYW1tYXRpYyB3
YXlzIHRvIGFjY2VzcyBmbGFncyBhcmUgdGhyZWFkLXNhZmUsIGJ1dCBkaXJlY3QKLS8vIGFjY2Vz
cyBpcyBvbmx5IHRocmVhZC1jb21wYXRpYmxlLgotCi0vLyBSZXR1cm4gdHJ1ZSBpZmYgdGhlIGZs
YWduYW1lIHdhcyBmb3VuZC4KLS8vIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncyB2YWx1ZSwg
b3IgdW5jaGFuZ2VkIGlmIHdlIHJldHVybiBmYWxzZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
Ym9vbCBHZXRDb21tYW5kTGluZU9wdGlvbihjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OnN0cmluZyog
T1VUUFVUKTsKLQotLy8gUmV0dXJuIHRydWUgaWZmIHRoZSBmbGFnbmFtZSB3YXMgZm91bmQuIE9V
VFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncwotLy8gQ29tbWFuZExpbmVGbGFnSW5mbyBvciB1bmNo
YW5nZWQgaWYgd2UgcmV0dXJuIGZhbHNlLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIEdl
dENvbW1hbmRMaW5lRmxhZ0luZm8oY29uc3QgY2hhciogbmFtZSwgQ29tbWFuZExpbmVGbGFnSW5m
byogT1VUUFVUKTsKLQotLy8gUmV0dXJuIHRoZSBDb21tYW5kTGluZUZsYWdJbmZvIG9mIHRoZSBm
bGFnbmFtZS4gIGV4aXQoKSBpZiBuYW1lIG5vdCBmb3VuZC4KLS8vIEV4YW1wbGUgdXNhZ2UsIHRv
IGNoZWNrIGlmIGEgZmxhZydzIHZhbHVlIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCB2YWx1ZToK
LS8vICAgaWYgKEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgiZm9vIikuaXNfZGVmYXVsdCkg
Li4uCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIENvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFu
ZExpbmVGbGFnSW5mb09yRGllKGNvbnN0IGNoYXIqIG5hbWUpOwotCi1lbnVtIEdGTEFHU19ETExf
REVDTCBGbGFnU2V0dGluZ01vZGUgewotICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2YWx1ZSAoY2Fu
IGNhbGwgdGhpcyBtdWx0aXBsZSB0aW1lcykuCi0gIFNFVF9GTEFHU19WQUxVRSwKLSAgLy8gdXBk
YXRlIHRoZSBmbGFnJ3MgdmFsdWUsIGJ1dCAqb25seSBpZiogaXQgaGFzIG5vdCB5ZXQgYmVlbiB1
cGRhdGVkCi0gIC8vIHdpdGggU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxBR19JRl9ERUZBVUxULCBv
ciAiRkxBR1NfeHh4ID0gbm9uZGVmIi4KLSAgU0VUX0ZMQUdfSUZfREVGQVVMVCwKLSAgLy8gc2V0
IHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSB0byB0aGlzLiAgSWYgdGhlIGZsYWcgaGFzIG5vdCB5
ZXQgdXBkYXRlZAotICAvLyB5ZXQgKHZpYSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RF
RkFVTFQsIG9yICJGTEFHU194eHggPSBub25kZWYiKQotICAvLyBjaGFuZ2UgdGhlIGZsYWcncyBj
dXJyZW50IHZhbHVlIHRvIHRoZSBuZXcgZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgotICBTRVRfRkxB
R1NfREVGQVVMVAotfTsKLQotLy8gU2V0IGEgcGFydGljdWxhciBmbGFnICgiY29tbWFuZCBsaW5l
IG9wdGlvbiIpLiAgUmV0dXJucyBhIHN0cmluZwotLy8gZGVzY3JpYmluZyB0aGUgbmV3IHZhbHVl
IHRoYXQgdGhlIG9wdGlvbiBoYXMgYmVlbiBzZXQgdG8uICBUaGUKLS8vIHJldHVybiB2YWx1ZSBB
UEkgaXMgbm90IHdlbGwtc3BlY2lmaWVkLCBzbyBiYXNpY2FsbHkganVzdCBkZXBlbmQgb24KLS8v
IGl0IHRvIGJlIGVtcHR5IGlmIHRoZSBzZXR0aW5nIGZhaWxlZCBmb3Igc29tZSByZWFzb24gLS0g
dGhlIG5hbWUgaXMKLS8vIG5vdCBhIHZhbGlkIGZsYWcgbmFtZSwgb3IgdGhlIHZhbHVlIGlzIG5v
dCBhIHZhbGlkIHZhbHVlIC0tIGFuZAotLy8gbm9uLWVtcHR5IGVsc2UuCi0KLS8vIFNldENvbW1h
bmRMaW5lT3B0aW9uIHVzZXMgc2V0X21vZGUgPT0gU0VUX0ZMQUdTX1ZBTFVFICh0aGUgY29tbW9u
IGNhc2UpCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIFNldENvbW1hbmRMaW5l
T3B0aW9uICAgICAgICAoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwotZXh0
ZXJuIEdGTEFHU19ETExfREVDTCBzdGQ6OnN0cmluZyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhN
b2RlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLCBGbGFnU2V0dGluZ01vZGUg
c2V0X21vZGUpOwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTYXZlcyB0aGUgc3RhdGVzICh2YWx1
ZSwgZGVmYXVsdCB2YWx1ZSwgd2hldGhlciB0aGUgdXNlciBoYXMgc2V0Ci0vLyB0aGUgZmxhZywg
cmVnaXN0ZXJlZCB2YWxpZGF0b3JzLCBldGMpIG9mIGFsbCBmbGFncywgYW5kIHJlc3RvcmVzCi0v
LyB0aGVtIHdoZW4gdGhlIEZsYWdTYXZlciBpcyBkZXN0cm95ZWQuICBUaGlzIGlzIHZlcnkgdXNl
ZnVsIGluCi0vLyB0ZXN0cywgc2F5LCB3aGVuIHlvdSB3YW50IHRvIGxldCB5b3VyIHRlc3RzIGNo
YW5nZSB0aGUgZmxhZ3MsIGJ1dAotLy8gbWFrZSBzdXJlIHRoYXQgdGhleSBnZXQgcmV2ZXJ0ZWQg
dG8gdGhlIG9yaWdpbmFsIHN0YXRlcyB3aGVuIHlvdXIKLS8vIHRlc3QgaXMgY29tcGxldGUuCi0v
LwotLy8gRXhhbXBsZSB1c2FnZToKLS8vICAgdm9pZCBUZXN0Rm9vKCkgewotLy8gICAgIEZsYWdT
YXZlciBzMTsKLS8vICAgICBGTEFHX2ZvbyA9IGZhbHNlOwotLy8gICAgIEZMQUdfYmFyID0gInNv
bWUgdmFsdWUiOwotLy8KLS8vICAgICAvLyB0ZXN0IGhhcHBlbnMgaGVyZS4gIFlvdSBjYW4gcmV0
dXJuIGF0IGFueSB0aW1lCi0vLyAgICAgLy8gd2l0aG91dCB3b3JyeWluZyBhYm91dCByZXN0b3Jp
bmcgdGhlIEZMQUcgdmFsdWVzLgotLy8gICB9Ci0vLwotLy8gTm90ZTogVGhpcyBjbGFzcyBpcyBt
YXJrZWQgd2l0aCBHRkxBR1NfQVRUUklCVVRFX1VOVVNFRCBiZWNhdXNlIGFsbAotLy8gdGhlIHdv
cmsgaXMgZG9uZSBpbiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIHNvIGluIHRoZSBz
dGFuZGFyZAotLy8gdXNhZ2UgZXhhbXBsZSBhYm92ZSwgdGhlIGNvbXBpbGVyIHdvdWxkIGNvbXBs
YWluIHRoYXQgaXQncyBhbgotLy8gdW51c2VkIHZhcmlhYmxlLgotLy8KLS8vIFRoaXMgY2xhc3Mg
aXMgdGhyZWFkLXNhZmUuICBIb3dldmVyLCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMgdG8KLS8vIGV4
YWN0bHkgdGhlIHNldCBvZiBmbGFncyB0aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBkdXJpbmcgaXRz
Ci0vLyBsaWZldGltZSwgc28gY29uY3VycmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8gdGhvc2UgZmxh
Z3MKLS8vIChpLmUuIEZMQUdTX2ZvbyBpbnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1hbmRMaW5lT3B0
aW9uKCkpIGlzIHVuc2FmZS4KLQotY2xhc3MgR0ZMQUdTX0RMTF9ERUNMIEZsYWdTYXZlciB7Ci0g
cHVibGljOgotICBGbGFnU2F2ZXIoKTsKLSAgfkZsYWdTYXZlcigpOwotCi0gcHJpdmF0ZToKLSAg
Y2xhc3MgRmxhZ1NhdmVySW1wbCogaW1wbF87ICAgLy8gd2UgdXNlIHBpbXBsIGhlcmUgdG8ga2Vl
cCBBUEkgc3RlYWR5Ci0KLSAgRmxhZ1NhdmVyKGNvbnN0IEZsYWdTYXZlciYpOyAgLy8gbm8gY29w
eWluZyEKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJik7Ci19QEdGTEFHU19BVFRS
SUJVVEVfVU5VU0VEQDsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFNvbWUgZGVwcmVjYXRlZCBvciBo
b3BlZnVsbHktc29vbi10by1iZS1kZXByZWNhdGVkIGZ1bmN0aW9ucy4KLQotLy8gVGhpcyBpcyBv
ZnRlbiB1c2VkIGZvciBsb2dnaW5nLiAgVE9ETyhjc2lsdmVycyk6IGZpZ3VyZSBvdXQgYSBiZXR0
ZXIgd2F5Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIENvbW1hbmRsaW5lRmxh
Z3NJbnRvU3RyaW5nKCk7Ci0vLyBVc3VhbGx5IHdoZXJlIHRoaXMgaXMgdXNlZCwgYSBGbGFnU2F2
ZXIgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wKLWJvb2wg
UmVhZEZsYWdzRnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgZmxhZ2ZpbGVjb250ZW50cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcm9nX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBlcnJvcnNfYXJlX2ZhdGFsKTsgIC8vIHVzZXMgU0VUX0ZM
QUdTX1ZBTFVFCi0KLS8vIFRoZXNlIGxldCB5b3UgbWFudWFsbHkgaW1wbGVtZW50IC0tZmxhZ2Zp
bGUgZnVuY3Rpb25hbGl0eS4KLS8vIERFUFJFQ0FURUQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IGJvb2wgQXBwZW5kRmxhZ3NJbnRvRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IGNoYXIqIHByb2dfbmFtZSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVhZEZy
b21GbGFnc0ZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBwcm9n
X25hbWUsIGJvb2wgZXJyb3JzX2FyZV9mYXRhbCk7ICAgLy8gdXNlcyBTRVRfRkxBR1NfVkFMVUUK
LQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVXNlZnVsIHJvdXRpbmVzIGZvciBpbml0aWFsaXppbmcg
ZmxhZ3MgZnJvbSB0aGUgZW52aXJvbm1lbnQuCi0vLyBJbiBlYWNoIGNhc2UsIGlmICd2YXJuYW1l
JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQKLS8vIHJldHVybiBkZWZ2YWwuICBJ
ZiAndmFybmFtZScgZG9lcyBleGlzdCBidXQgaXMgbm90IHZhbGlkCi0vLyAoZS5nLiwgbm90IGEg
bnVtYmVyIGZvciBhbiBpbnQzMiBmbGFnKSwgYWJvcnQgd2l0aCBhbiBlcnJvci4KLS8vIE90aGVy
d2lzZSwgcmV0dXJuIHRoZSB2YWx1ZS4gIE5PVEU6IGZvciBib29sZWFucywgZm9yIHRydWUgdXNl
Ci0vLyAndCcgb3IgJ1QnIG9yICd0cnVlJyBvciAnMScsIGZvciBmYWxzZSAnZicgb3IgJ0YnIG9y
ICdmYWxzZScgb3IgJzAnLgotCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgQm9vbEZyb21F
bnYoY29uc3QgY2hhciAqdmFybmFtZSwgYm9vbCBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExf
REVDTCBpbnQzMiBJbnQzMkZyb21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgaW50MzIgZGVmdmFs
KTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgaW50NjQgSW50NjRGcm9tRW52KGNvbnN0IGNoYXIg
KnZhcm5hbWUsIGludDY0IGRlZnZhbCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQ2NCBV
aW50NjRGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIHVpbnQ2NCBkZWZ2YWwpOwotZXh0ZXJu
IEdGTEFHU19ETExfREVDTCBkb3VibGUgRG91YmxlRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1l
LCBkb3VibGUgZGVmdmFsKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciAqU3Ry
aW5nRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBjb25zdCBjaGFyICpkZWZ2YWwpOwotCi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBUaGUgbmV4dCB0d28gZnVuY3Rpb25zIHBhcnNlIGdmbGFncyBm
cm9tIG1haW4oKToKLQotLy8gU2V0IHRoZSAidXNhZ2UiIG1lc3NhZ2UgZm9yIHRoaXMgcHJvZ3Jh
bS4gIEZvciBleGFtcGxlOgotLy8gICBzdHJpbmcgdXNhZ2UoIlRoaXMgcHJvZ3JhbSBkb2VzIG5v
dGhpbmcuICBTYW1wbGUgdXNhZ2U6XG4iKTsKLS8vICAgdXNhZ2UgKz0gYXJndlswXSArICIgPHVz
ZWxlc3NhcmcxPiA8dXNlbGVzc2FyZzI+IjsKLS8vICAgU2V0VXNhZ2VNZXNzYWdlKHVzYWdlKTsK
LS8vIERvIG5vdCBpbmNsdWRlIGNvbW1hbmRsaW5lIGZsYWdzIGluIHRoZSB1c2FnZTogd2UgZG8g
dGhhdCBmb3IgeW91IQotLy8gVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZv
cmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQg
U2V0VXNhZ2VNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2FnZSk7Ci0KLS8vIFNldHMgdGhl
IHZlcnNpb24gc3RyaW5nLCB3aGljaCBpcyBlbWl0dGVkIHdpdGggLS12ZXJzaW9uLgotLy8gRm9y
IGluc3RhbmNlOiBTZXRWZXJzaW9uU3RyaW5nKCIxLjMiKTsKLS8vIFRocmVhZC1ob3N0aWxlOyBt
ZWFudCB0byBiZSBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIGFyZSBzcGF3bmVkLgotZXh0ZXJu
IEdGTEFHU19ETExfREVDTCB2b2lkIFNldFZlcnNpb25TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IHZlcnNpb24pOwotCi0KLS8vIExvb2tzIGZvciBmbGFncyBpbiBhcmd2IGFuZCBwYXJzZXMgdGhl
bS4gIFJlYXJyYW5nZXMgYXJndiB0byBwdXQKLS8vIGZsYWdzIGZpcnN0LCBvciByZW1vdmVzIHRo
ZW0gZW50aXJlbHkgaWYgcmVtb3ZlX2ZsYWdzIGlzIHRydWUuCi0vLyBJZiBhIGZsYWcgaXMgZGVm
aW5lZCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgY29tbWFuZCBsaW5lIG9yIGZsYWcKLS8vIGZpbGUs
IHRoZSBsYXN0IGRlZmluaXRpb24gaXMgdXNlZC4gIFJldHVybnMgdGhlIGluZGV4IChpbnRvIGFy
Z3YpCi0vLyBvZiB0aGUgZmlyc3Qgbm9uLWZsYWcgYXJndW1lbnQuCi0vLyBTZWUgdG9wLW9mLWZp
bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzIGZ1bmN0aW9uLgotI2lmbmRlZiBTV0lHICAgLy8g
SW4gc3dpZywgdXNlIFBhcnNlQ29tbWFuZExpbmVGbGFnc1NjcmlwdCgpIGluc3RlYWQuCi1leHRl
cm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQzMiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoaW50ICphcmdj
LCBjaGFyKioqIGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKTsKLSNlbmRpZgotCi0KLS8vIENhbGxz
IHRvIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MgYW5kIHRoZW4gdG8KLS8vIEhhbmRsZUNv
bW1hbmRMaW5lSGVscEZsYWdzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBjYWxsIHRvCi0vLyBQ
YXJzZUNvbW1hbmRMaW5lRmxhZ3MgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBpbiBvcmRlciB0byBh
bGxvdyBmb3IKLS8vIGNoYW5naW5nIGRlZmF1bHQgdmFsdWVzIGZvciBzb21lIEZMQUdTICh2aWEK
LS8vIGUuZy4gU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSBjYWxscykgYmV0d2VlbiB0aGUg
dGltZSBvZgotLy8gY29tbWFuZCBsaW5lIHBhcnNpbmcgYW5kIHRoZSB0aW1lIG9mIGR1bXBpbmcg
aGVscCBpbmZvcm1hdGlvbiBmb3IKLS8vIHRoZSBmbGFncyBhcyBhIHJlc3VsdCBvZiBjb21tYW5k
IGxpbmUgcGFyc2luZy4gIElmIGEgZmxhZyBpcwotLy8gZGVmaW5lZCBtb3JlIHRoYW4gb25jZSBp
biB0aGUgY29tbWFuZCBsaW5lIG9yIGZsYWcgZmlsZSwgdGhlIGxhc3QKLS8vIGRlZmluaXRpb24g
aXMgdXNlZC4gIFJldHVybnMgdGhlIGluZGV4IChpbnRvIGFyZ3YpIG9mIHRoZSBmaXJzdAotLy8g
bm9uLWZsYWcgYXJndW1lbnQuICAoSWYgcmVtb3ZlX2ZsYWdzIGlzIHRydWUsIHdpbGwgYWx3YXlz
IHJldHVybiAxLikKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWludDMyIFBhcnNlQ29tbWFuZExp
bmVOb25IZWxwRmxhZ3MoaW50ICphcmdjLCBjaGFyKioqIGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdz
KTsKLQotLy8gVGhpcyBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGdmbGFnc19yZXBvcnRpbmcuY2Mu
Ci0vLyBUaGlzIGZ1bmN0aW9uIGlzIG1pc25hbWVkIChpdCBhbHNvIGhhbmRsZXMgLS12ZXJzaW9u
LCBldGMuKSwgYnV0Ci0vLyBpdCdzIHRvbyBsYXRlIHRvIGNoYW5nZSB0aGF0IG5vdy4gOi0oCi1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKTsg
ICAvLyBpbiBnZmxhZ3NfcmVwb3J0aW5nLmNjCi0KLS8vIEFsbG93IGNvbW1hbmQgbGluZSByZXBh
cnNpbmcuICBEaXNhYmxlcyB0aGUgZXJyb3Igbm9ybWFsbHkKLS8vIGdlbmVyYXRlZCB3aGVuIGFu
IHVua25vd24gZmxhZyBpcyBmb3VuZCwgc2luY2UgaXQgbWF5IGJlIGZvdW5kIGluIGEKLS8vIGxh
dGVyIHBhcnNlLiAgVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55
IHRocmVhZHMKLS8vIGFyZSBzcGF3bmVkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIEFs
bG93Q29tbWFuZExpbmVSZXBhcnNpbmcoKTsKLQotLy8gUmVwYXJzZSB0aGUgZmxhZ3MgdGhhdCBo
YXZlIG5vdCB5ZXQgYmVlbiByZWNvZ25pemVkLiAgT25seSBmbGFncwotLy8gcmVnaXN0ZXJlZCBz
aW5jZSB0aGUgbGFzdCBwYXJzZSB3aWxsIGJlIHJlY29nbml6ZWQuICBBbnkgZmxhZyB2YWx1ZQot
Ly8gbXVzdCBiZSBwcm92aWRlZCBhcyBwYXJ0IG9mIHRoZSBhcmd1bWVudCB1c2luZyAiPSIsIG5v
dCBhcyBhCi0vLyBzZXBhcmF0ZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdGhhdCBmb2xsb3dzIHRo
ZSBmbGFnIGFyZ3VtZW50LgotLy8gSW50ZW5kZWQgZm9yIGhhbmRsaW5nIGZsYWdzIGZyb20gZHlu
YW1pY2FsbHkgbG9hZGVkIGxpYnJhcmllcywKLS8vIHNpbmNlIHRoZWlyIGZsYWdzIGFyZSBub3Qg
cmVnaXN0ZXJlZCB1bnRpbCB0aGV5IGFyZSBsb2FkZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IHZvaWQgUmVwYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzKCk7Ci0KLS8vIENsZWFuIHVwIG1l
bW9yeSBhbGxvY2F0ZWQgYnkgZmxhZ3MuICBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHJlZHVjZQot
Ly8gdGhlIHF1YW50aXR5IG9mICJwb3RlbnRpYWxseSBsZWFrZWQiIHJlcG9ydHMgZW1pdHRlZCBi
eSBtZW1vcnkKLS8vIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIHZhbGdyaW5kLiAgSXQgaXMgbm90
IHJlcXVpcmVkIGZvciBub3JtYWwKLS8vIG9wZXJhdGlvbiwgb3IgZm9yIHRoZSBnb29nbGUgcGVy
ZnRvb2xzIGhlYXAtY2hlY2tlci4gIEl0IG11c3Qgb25seQotLy8gYmUgY2FsbGVkIHdoZW4gdGhl
IHByb2Nlc3MgaXMgYWJvdXQgdG8gZXhpdCwgYW5kIGFsbCB0aHJlYWRzIHRoYXQKLS8vIG1pZ2h0
IGFjY2VzcyBmbGFncyBhcmUgcXVpZXNjZW50LiAgUmVmZXJlbmNpbmcgZmxhZ3MgYWZ0ZXIgdGhp
cyBpcwotLy8gY2FsbGVkIHdpbGwgaGF2ZSB1bmV4cGVjdGVkIGNvbnNlcXVlbmNlcy4gIFRoaXMg
aXMgbm90IHNhZmUgdG8gcnVuCi0vLyB3aGVuIG11bHRpcGxlIHRocmVhZHMgbWlnaHQgYmUgcnVu
bmluZzogdGhlIGZ1bmN0aW9uIGlzCi0vLyB0aHJlYWQtaG9zdGlsZS4KLWV4dGVybiBHRkxBR1Nf
RExMX0RFQ0wgdm9pZCBTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3MoKTsKLQotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gTm93IGNvbWUgdGhlIGNvbW1hbmQgbGluZSBmbGFnIGRlY2xhcmF0aW9uL2RlZmlu
aXRpb24gbWFjcm9zIHRoYXQKLS8vIHdpbGwgYWN0dWFsbHkgYmUgdXNlZC4gIFRoZXkncmUga2lu
ZCBvZiBoYWlyeS4gIEEgbWFqb3IgcmVhc29uCi0vLyBmb3IgdGhpcyBpcyBpbml0aWFsaXphdGlv
bjogd2Ugd2FudCBwZW9wbGUgdG8gYmUgYWJsZSB0byBhY2Nlc3MKLS8vIHZhcmlhYmxlcyBpbiBn
bG9iYWwgY29uc3RydWN0b3JzIGFuZCBoYXZlIHRoYXQgbm90IGNyYXNoLCBldmVuIGlmCi0vLyB0
aGVpciBnbG9iYWwgY29uc3RydWN0b3IgcnVucyBiZWZvcmUgdGhlIGdsb2JhbCBjb25zdHJ1Y3Rv
ciBoZXJlLgotLy8gKE9idmlvdXNseSwgd2UgY2FuJ3QgZ3VhcmFudGVlIHRoZSBmbGFncyB3aWxs
IGhhdmUgdGhlIGNvcnJlY3QKLS8vIGRlZmF1bHQgdmFsdWUgaW4gdGhhdCBjYXNlLCBidXQgYXQg
bGVhc3QgYWNjZXNzaW5nIHRoZW0gaXMgc2FmZS4pCi0vLyBUaGUgb25seSB3YXkgdG8gZG8gdGhh
dCBpcyBoYXZlIGZsYWdzIHBvaW50IHRvIGEgc3RhdGljIGJ1ZmZlci4KLS8vIFNvIHdlIG1ha2Ug
b25lLCB1c2luZyBhIHVuaW9uIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50LCBhbmQKLS8vIHRo
ZW4gdXNlIHBsYWNlbWVudC1uZXcgdG8gYWN0dWFsbHkgc2V0IHVwIHRoZSBmbGFnIHdpdGggdGhl
Ci0vLyBjb3JyZWN0IGRlZmF1bHQgdmFsdWUuICBJbiB0aGUgc2FtZSB2ZWluLCB3ZSBoYXZlIHRv
IHdvcnJ5IGFib3V0Ci0vLyBmbGFnIGFjY2VzcyBpbiBnbG9iYWwgZGVzdHJ1Y3RvcnMsIHNvIEZs
YWdSZWdpc3RlcmVyIGhhcyB0byBiZQotLy8gY2FyZWZ1bCBuZXZlciB0byBkZXN0cm95IHRoZSBm
bGFnLXZhbHVlcyBpdCBjb25zdHJ1Y3RzLgotLy8KLS8vIE5vdGUgdGhhdCB3aGVuIHdlIGRlZmlu
ZSBhIGZsYWcgdmFyaWFibGUgRkxBR1NfPG5hbWU+LCB3ZSBhbHNvCi0vLyBwcmVlbXB0aXZlbHkg
ZGVmaW5lIGEganVuayB2YXJpYWJsZSwgRkxBR1Nfbm88bmFtZT4uICBUaGlzIGlzIHRvCi0vLyBj
YXVzZSBhIGxpbmstdGltZSBlcnJvciBpZiBzb21lb25lIHRyaWVzIHRvIGRlZmluZSAyIGZsYWdz
IHdpdGgKLS8vIG5hbWVzIGxpa2UgImxvZ2dpbmciIGFuZCAibm9sb2dnaW5nIi4gIFdlIGRvIHRo
aXMgYmVjYXVzZSBhIGJvb2wKLS8vIGZsYWcgRkxBRyBjYW4gYmUgc2V0IGZyb20gdGhlIGNvbW1h
bmQgbGluZSB0byB0cnVlIHdpdGggYSAiLUZMQUciCi0vLyBhcmd1bWVudCwgYW5kIHRvIGZhbHNl
IHdpdGggYSAiLW5vRkxBRyIgYXJndW1lbnQsIGFuZCBzbyB0aGlzIGNhbgotLy8gcG90ZW50aWFs
bHkgYXZlcnQgY29uZnVzaW9uLgotLy8KLS8vIFdlIGFsc28gcHV0IGZsYWdzIGludG8gdGhlaXIg
b3duIG5hbWVzcGFjZS4gIEl0IGlzIHB1cnBvc2VmdWxseQotLy8gbmFtZWQgaW4gYW4gb3BhcXVl
IHdheSB0aGF0IHBlb3BsZSBzaG91bGQgaGF2ZSB0cm91YmxlIHR5cGluZwotLy8gZGlyZWN0bHku
ICBUaGUgaWRlYSBpcyB0aGF0IERFRklORSBwdXRzIHRoZSBmbGFnIGluIHRoZSB3ZWlyZAotLy8g
bmFtZXNwYWNlLCBhbmQgREVDTEFSRSBpbXBvcnRzIHRoZSBmbGFnIGZyb20gdGhlcmUgaW50byB0
aGUgY3VycmVudAotLy8gbmFtZXNwYWNlLiAgVGhlIG5ldCByZXN1bHQgaXMgdG8gZm9yY2UgcGVv
cGxlIHRvIHVzZSBERUNMQVJFIHRvIGdldAotLy8gYWNjZXNzIHRvIGEgZmxhZywgcmF0aGVyIHRo
YW4gc2F5aW5nICJleHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgRkxBR1Nfd2hhdGV2ZXI7Igot
Ly8gb3Igc29tZSBzdWNoIGluc3RlYWQuICBXZSB3YW50IHRoaXMgc28gd2UgY2FuIHB1dCBleHRy
YQotLy8gZnVuY3Rpb25hbGl0eSAobGlrZSBzYW5pdHktY2hlY2tpbmcpIGluIERFQ0xBUkUgaWYg
d2Ugd2FudCwgYW5kCi0vLyBtYWtlIHN1cmUgaXQgaXMgcGlja2VkIHVwIGV2ZXJ5d2hlcmUuCi0v
LwotLy8gV2UgYWxzbyBwdXQgdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGluIHRoZSBuYW1lc3Bh
Y2UsIHNvIHRoYXQKLS8vIHBlb3BsZSBjYW4ndCBERUNMQVJFX2ludDMyIHNvbWV0aGluZyB0aGF0
IHRoZXkgREVGSU5FX2Jvb2wnZAotLy8gZWxzZXdoZXJlLgotCi1jbGFzcyBHRkxBR1NfRExMX0RF
Q0wgRmxhZ1JlZ2lzdGVyZXIgewotIHB1YmxpYzoKLSAgRmxhZ1JlZ2lzdGVyZXIoY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgY2hhciogdHlwZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
aGVscCwgY29uc3QgY2hhciogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgIHZvaWQqIGN1cnJl
bnRfc3RvcmFnZSwgdm9pZCogZGVmdmFsdWVfc3RvcmFnZSk7Ci19OwotCi0vLyBJZiB5b3VyIGFw
cGxpY2F0aW9uICNkZWZpbmVzIFNUUklQX0ZMQUdfSEVMUCB0byBhIG5vbi16ZXJvIHZhbHVlCi0v
LyBiZWZvcmUgI2luY2x1ZGluZyB0aGlzIGZpbGUsIHdlIHJlbW92ZSB0aGUgaGVscCBtZXNzYWdl
IGZyb20gdGhlCi0vLyBiaW5hcnkgZmlsZS4gVGhpcyBjYW4gcmVkdWNlIHRoZSBzaXplIG9mIHRo
ZSByZXN1bHRpbmcgYmluYXJ5Ci0vLyBzb21ld2hhdCwgYW5kIG1heSBhbHNvIGJlIHVzZWZ1bCBm
b3Igc2VjdXJpdHkgcmVhc29ucy4KLQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFy
IGtTdHJpcHBlZEZsYWdIZWxwW107Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFD
RQotCi0KLSNpZm5kZWYgU1dJRyAgLy8gSW4gc3dpZywgaWdub3JlIHRoZSBtYWluIGZsYWcgZGVj
bGFyYXRpb25zCi0KLSNpZiBkZWZpbmVkKFNUUklQX0ZMQUdfSEVMUCkgJiYgU1RSSVBfRkxBR19I
RUxQID4gMAotLy8gTmVlZCB0aGlzIGNvbnN0cnVjdCB0byBhdm9pZCB0aGUgJ2RlZmluZWQgYnV0
IG5vdCB1c2VkJyB3YXJuaW5nLgotI2RlZmluZSBNQVlCRV9TVFJJUFBFRF9IRUxQKHR4dCkgXAot
ICAgKGZhbHNlID8gKHR4dCkgOiBHRkxBR1NfTkFNRVNQQUNFOjprU3RyaXBwZWRGbGFnSGVscCkK
LSNlbHNlCi0jZGVmaW5lIE1BWUJFX1NUUklQUEVEX0hFTFAodHh0KSB0eHQKLSNlbmRpZgotCi0v
LyBFYWNoIGNvbW1hbmQtbGluZSBmbGFnIGhhcyB0d28gdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0
aCBpdDogb25lCi0vLyB3aXRoIHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgb25lIHdpdGggdGhlIGRl
ZmF1bHQgdmFsdWUuICBIb3dldmVyLAotLy8gd2UgaGF2ZSBhIHRoaXJkIHZhcmlhYmxlLCB3aGlj
aCBpcyB3aGVyZSB2YWx1ZSBpcyBhc3NpZ25lZDsgaXQncyBhCi0vLyBjb25zdGFudC4gIFRoaXMg
Z3VhcmFudGVlcyB0aGF0IEZMQUdfIyN2YWx1ZSBpcyBpbml0aWFsaXplZCBhdAotLy8gc3RhdGlj
IGluaXRpYWxpemF0aW9uIHRpbWUgKGUuZy4gYmVmb3JlIHByb2dyYW0tc3RhcnQpIHJhdGhlciB0
aGFuCi0vLyB0aGFuIGdsb2JhbCBjb25zdHJ1Y3Rpb24gdGltZSAod2hpY2ggaXMgYWZ0ZXIgcHJv
Z3JhbS1zdGFydCBidXQKLS8vIGJlZm9yZSBtYWluKSwgYXQgbGVhc3Qgd2hlbiAndmFsdWUnIGlz
IGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgV2UKLS8vIHVzZSBhIHNtYWxsIHRyaWNrIGZvciB0
aGUgImRlZmF1bHQgdmFsdWUiIHZhcmlhYmxlLCBhbmQgY2FsbCBpdAotLy8gRkxBR1Nfbm88bmFt
ZT4uICBUaGlzIHNlcnZlcyB0aGUgc2Vjb25kIHB1cnBvc2Ugb2YgYXNzdXJpbmcgYQotLy8gY29t
cGlsZSBlcnJvciBpZiBzb21lb25lIHRyaWVzIHRvIGRlZmluZSBhIGZsYWcgbmFtZWQgbm88bmFt
ZT4KLS8vIHdoaWNoIGlzIGlsbGVnYWwgKC0tZm9vIGFuZCAtLW5vZm9vIGJvdGggYWZmZWN0IHRo
ZSAiZm9vIiBmbGFnKS4KLSNkZWZpbmUgREVGSU5FX1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwg
bmFtZSwgdmFsdWUsIGhlbHApICAgICAgICAgICAgIFwKLSAgbmFtZXNwYWNlIGZMIyNzaG9ydHR5
cGUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBz
dGF0aWMgY29uc3QgdHlwZSBGTEFHU19ub25vIyNuYW1lID0gdmFsdWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAvKiBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgZGVmaW5lZCB2YXJp
YWJsZXMsIGRsbCBvciBubyAqLyAgICAgICAgIFwKLSAgICBHRkxBR1NfRExMX0RFRklORV9GTEFH
IHR5cGUgRkxBR1NfIyNuYW1lID0gRkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgIFwKLSAgICB0eXBl
IEZMQUdTX25vIyNuYW1lID0gRkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBzdGF0aWMgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1JlZ2lzdGVyZXIgb18j
I25hbWUoICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICNuYW1lLCAjdHlwZSwgTUFZQkVfU1RS
SVBQRURfSEVMUChoZWxwKSwgX19GSUxFX18sICAgICAgICAgICAgICAgIFwKLSAgICAgICZGTEFH
U18jI25hbWUsICZGTEFHU19ubyMjbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdXNpbmcgZkwjI3Nob3J0dHlwZTo6RkxBR1NfIyNu
YW1lCi0KLS8vIEZvciBERUZJTkVfYm9vbCwgd2Ugd2FudCB0byBkbyB0aGUgZXh0cmEgY2hlY2sg
dGhhdCB0aGUgcGFzc2VkLWluCi0vLyB2YWx1ZSBpcyBhY3R1YWxseSBhIGJvb2wsIGFuZCBub3Qg
YSBzdHJpbmcgb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlCi0vLyBjb2VyY2VkIHRvIGEgYm9vbC4g
IFRoZXNlIGRlY2xhcmF0aW9ucyAobm8gZGVmaW5pdGlvbiBuZWVkZWQhKSB3aWxsCi0vLyBoZWxw
IHVzIGRvIHRoYXQsIGFuZCBuZXZlciBldmFsdWF0ZSBGcm9tLCB3aGljaCBpcyBpbXBvcnRhbnQu
Ci0vLyBXZSdsbCB1c2UgJ3NpemVvZihJc0Jvb2wodmFsKSknIHRvIGRpc3Rpbmd1aXNoLiBUaGlz
IGNvZGUgcmVxdWlyZXMKLS8vIHRoYXQgdGhlIGNvbXBpbGVyIGhhdmUgZGlmZmVyZW50IHNpemVz
IGZvciBib29sICYgZG91YmxlLiBTaW5jZQotLy8gdGhpcyBpcyBub3QgZ3VhcmFudGVlZCBieSB0
aGUgc3RhbmRhcmQsIHdlIGNoZWNrIGl0IHdpdGggYQotLy8gQ09NUElMRV9BU1NFUlQuCi1uYW1l
c3BhY2UgZkxCIHsKLXN0cnVjdCBDb21waWxlQXNzZXJ0IHt9OwotdHlwZWRlZiBDb21waWxlQXNz
ZXJ0IGV4cGVjdGVkX3NpemVvZl9kb3VibGVfbmVxX3NpemVvZl9ib29sWwotICAgICAgICAgICAg
ICAgICAgICAgIChzaXplb2YoZG91YmxlKSAhPSBzaXplb2YoYm9vbCkpID8gMSA6IC0xXTsKLXRl
bXBsYXRlPHR5cGVuYW1lIEZyb20+IGRvdWJsZSBHRkxBR1NfRExMX0RFQ0wgSXNCb29sRmxhZyhj
b25zdCBGcm9tJiBmcm9tKTsKLUdGTEFHU19ETExfREVDTCBib29sIElzQm9vbEZsYWcoYm9vbCBm
cm9tKTsKLX0gIC8vIG5hbWVzcGFjZSBmTEIKLQotLy8gSGVyZSBhcmUgdGhlIGFjdHVhbCBERUZJ
TkVfKi1tYWNyb3MuIFRoZSByZXNwZWN0aXZlIERFQ0xBUkVfKi1tYWNyb3MKLS8vIGFyZSBpbiBh
IHNlcGFyYXRlIGluY2x1ZGUsIGdmbGFnc19kZWNsYXJlLmgsIGZvciByZWR1Y2luZwotLy8gdGhl
IHBoeXNpY2FsIHRyYW5zaXRpdmUgc2l6ZSBmb3IgREVDTEFSRSB1c2UuCi0jZGVmaW5lIERFRklO
RV9ib29sKG5hbWUsIHZhbCwgdHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gIG5hbWVzcGFjZSBmTEIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiA6OmZMQjo6Q29tcGlsZUFzc2VydCBG
TEFHXyMjbmFtZSMjX3ZhbHVlX2lzX25vdF9hX2Jvb2xbICAgICBcCi0gICAgICAgICAgICAoc2l6
ZW9mKDo6ZkxCOjpJc0Jvb2xGbGFnKHZhbCkpICE9IHNpemVvZihkb3VibGUpKT8gMTogLTFdOyBc
Ci0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gIERFRklORV9WQVJJQUJMRShib29sLCBCLCBuYW1lLCB2YWws
IHR4dCkKLQotI2RlZmluZSBERUZJTkVfaW50MzIobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklO
RV9WQVJJQUJMRShHRkxBR1NfTkFNRVNQQUNFOjppbnQzMiwgSSwgXAotICAgICAgICAgICAgICAg
ICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV9pbnQ2NChuYW1lLCB2YWwsIHR4
dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OmludDY0LCBJNjQsIFwK
LSAgICAgICAgICAgICAgICAgICBuYW1lLCB2YWwsIHR4dCkKLQotI2RlZmluZSBERUZJTkVfdWlu
dDY0KG5hbWUsdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJMRShHRkxBR1NfTkFNRVNQQUNF
Ojp1aW50NjQsIFU2NCwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0KQotCi0j
ZGVmaW5lIERFRklORV9kb3VibGUobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJM
RShkb3VibGUsIEQsIG5hbWUsIHZhbCwgdHh0KQotCi0vLyBTdHJpbmdzIGFyZSB0cmlja2llciwg
YmVjYXVzZSB0aGV5J3JlIG5vdCBhIFBPRCwgc28gd2UgY2FuJ3QKLS8vIGNvbnN0cnVjdCB0aGVt
IGF0IHN0YXRpYy1pbml0aWFsaXphdGlvbiB0aW1lIChpbnN0ZWFkIHRoZXkgZ2V0Ci0vLyBjb25z
dHJ1Y3RlZCBhdCBnbG9iYWwtY29uc3RydWN0b3IgdGltZSwgd2hpY2ggaXMgbXVjaCBsYXRlciku
ICBUbwotLy8gdHJ5IHRvIGF2b2lkIGNyYXNoZXMgaW4gdGhhdCBjYXNlLCB3ZSB1c2UgYSBjaGFy
IGJ1ZmZlciB0byBzdG9yZQotLy8gdGhlIHN0cmluZywgd2hpY2ggd2UgY2FuIHN0YXRpYy1pbml0
aWFsaXplLCBhbmQgdGhlbiBwbGFjZW1lbnQtbmV3Ci0vLyBpbnRvIGl0IGxhdGVyLiAgSXQncyBu
b3QgcGVyZmVjdCwgYnV0IHRoZSBiZXN0IHdlIGNhbiBkby4KLQotbmFtZXNwYWNlIGZMUyB7Ci0K
LWlubGluZSBjbHN0cmluZyogZG9udF9wYXNzMHRvREVGSU5FX3N0cmluZyhjaGFyICpzdHJpbmdz
cG90LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnZhbHVlKSB7Ci0gIHJldHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFsdWUpOwot
fQotaW5saW5lIGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmlu
Z3Nwb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2xzdHJpbmcgJnZhbHVlKSB7Ci0gIHJldHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFs
dWUpOwotfQotaW5saW5lIGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIg
KnN0cmluZ3Nwb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHZhbHVlKTsKLX0gIC8vIG5hbWVzcGFjZSBmTFMKLQotLy8gV2UgbmVlZCB0byBkZWZpbmUg
YSB2YXIgbmFtZWQgRkxBR1Nfbm8jI25hbWUgc28gcGVvcGxlIGRvbid0IGRlZmluZQotLy8gLS1z
dHJpbmcgYW5kIC0tbm9zdHJpbmcuICBBbmQgd2UgbmVlZCBhIHRlbXBvcmFyeSBwbGFjZSB0byBw
dXQgdmFsCi0vLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGV2YWx1YXRlIGl0IHR3aWNlLiAgVHdvIGdy
ZWF0IG5lZWRzIHRoYXQgZ28KLS8vIGdyZWF0IHRvZ2V0aGVyIQotLy8gVGhlIHdlaXJkICd1c2lu
ZycgKyAnZXh0ZXJuJyBpbnNpZGUgdGhlIGZMUyBuYW1lc3BhY2UgaXMgdG8gd29yayBhcm91bmQK
LS8vIGFuIHVua25vd24gY29tcGlsZXIgYnVnL2lzc3VlIHdpdGggdGhlIGdjYyA0LjIuMSBvbiBT
VVNFIDEwLiAgU2VlCi0vLyAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWdmbGFn
cy9pc3N1ZXMvZGV0YWlsP2lkPTIwCi0jZGVmaW5lIERFRklORV9zdHJpbmcobmFtZSwgdmFsLCB0
eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBuYW1lc3BhY2Ug
ZkxTIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB1c2luZyA6OmZMUzo6Y2xzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHVuaW9uIHsgdm9pZCog
YWxpZ247IGNoYXIgc1tzaXplb2YoY2xzdHJpbmcpXTsgfSBzXyMjbmFtZVsyXTsgICAgXAotICAg
IGNsc3RyaW5nKiBjb25zdCBGTEFHU19ubyMjbmFtZSA9IDo6ZkxTOjogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9u
dF9wYXNzMHRvREVGSU5FX3N0cmluZyhzXyMjbmFtZVswXS5zLCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsKTsgICAgICAg
ICAgXAotICAgIHN0YXRpYyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlciBvXyMjbmFt
ZSggICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgI25hbWUsICJzdHJpbmciLCBNQVlC
RV9TVFJJUFBFRF9IRUxQKHR4dCksIF9fRklMRV9fLCAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHNfIyNuYW1lWzBdLnMsIG5ldyAoc18jI25hbWVbMV0ucykgY2xzdHJpbmcoKkZMQUdTX25vIyNu
YW1lKSk7ICAgICAgXAotICAgIGV4dGVybiBHRkxBR1NfRExMX0RFRklORV9GTEFHIGNsc3RyaW5n
JiBGTEFHU18jI25hbWU7ICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBmTFM6OkZMQUdT
XyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgY2xzdHJpbmcmIEZMQUdTXyMjbmFtZSA9ICpGTEFHU19ubyMjbmFtZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdXNpbmcgZkxT
OjpGTEFHU18jI25hbWUKLQotI2VuZGlmICAvLyBTV0lHCi0KLQotQElOQ0xVREVfR0ZMQUdTX05T
X0hACi0KLQotI2VuZGlmICAvLyBHRkxBR1NfR0ZMQUdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dm
bGFnc19jb21wbGV0aW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25zLmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzA5N2NhZWVmNzM0ZWZhOGUwZjA0NGFkMTVjMjZjODM4
MTExMDI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9z
cmMvZ2ZsYWdzX2NvbXBsZXRpb25zLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzcxICswLDAgQEAK
LS8vIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
LS0tCi0KLS8vIEJhc2gtc3R5bGUgY29tbWFuZCBsaW5lIGZsYWcgY29tcGxldGlvbiBmb3IgQysr
IGJpbmFyaWVzCi0vLwotLy8gVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBiYXNoLXN0eWxlIGNvbXBs
ZXRpb25zLiAgSXQgYWNoaWV2ZXMgdGhpcwotLy8gZ29hbCBpbiB0aGUgZm9sbG93aW5nIGJyb2Fk
IGNodW5rczoKLS8vCi0vLyAgMSkgVGFrZSBhIHRvLWJlLWNvbXBsZXRlZCB3b3JkLCBhbmQgZXhh
bWluZSBpdCBmb3Igc2VhcmNoIGhpbnRzCi0vLyAgMikgSWRlbnRpZnkgYWxsIHBvdGVudGlhbGx5
IG1hdGNoaW5nIGZsYWdzCi0vLyAgICAgMmEpIElmIHRoZXJlIGFyZSBubyBtYXRjaGluZyBmbGFn
cywgZG8gbm90aGluZy4KLS8vICAgICAyYikgSWYgYWxsIG1hdGNoaW5nIGZsYWdzIHNoYXJlIGEg
Y29tbW9uIHByZWZpeCBsb25nZXIgdGhhbiB0aGUKLS8vICAgICAgICAgY29tcGxldGlvbiB3b3Jk
LCBvdXRwdXQganVzdCB0aGF0IG1hdGNoaW5nIHByZWZpeAotLy8gIDMpIENhdGVnb3JpemUgdGhv
c2UgZmxhZ3MgdG8gcHJvZHVjZSBhIHJvdWdoIG9yZGVyaW5nIG9mIHJlbGV2ZW5jZS4KLS8vICA0
KSBQb3RlbnRpYWxseSB0cmltIHRoZSBzZXQgb2YgZmxhZ3MgcmV0dXJuZWQgdG8gYSBzbWFsbGVy
IG51bWJlcgotLy8gICAgIHRoYXQgYmFzaCBpcyBoYXBwaWVyIHdpdGgKLS8vICA1KSBPdXRwdXQg
dGhlIG1hdGNoaW5nIGZsYWdzIGluIGdyb3VwcyBvcmRlcmVkIGJ5IHJlbGV2ZW5jZS4KLS8vICAg
ICA1YSkgRm9yY2UgYmFzaCB0byBwbGFjZSBtb3N0LXJlbGV2ZW50IGdyb3VwcyBhdCB0aGUgdG9w
IG9mIHRoZSBsaXN0Ci0vLyAgICAgNWIpIFRyaW0gbW9zdCBmbGFnJ3MgZGVzY3JpcHRpb25zIHRv
IGZpdCBvbiBhIHNpbmdsZSB0ZXJtaW5hbCBsaW5lCi0KLQotI2luY2x1ZGUgImdmbGFnc19jb21w
bGV0aW9ucy5oIgotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgot
I2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPiAgIC8vIGZvciBzdHJsZW4K
LQotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
LSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJnZmxhZ3MuaCIKLSNpbmNsdWRlICJ1dGls
LmgiCi0KLXVzaW5nIHN0ZDo6c2V0OwotdXNpbmcgc3RkOjpzdHJpbmc7Ci11c2luZyBzdGQ6OnZl
Y3RvcjsKLQotCi1ERUZJTkVfc3RyaW5nKHRhYl9jb21wbGV0aW9uX3dvcmQsICIiLAotICAgICAg
ICAgICAgICAiSWYgbm9uLWVtcHR5LCBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKCkgd2ls
bCBoaWphY2sgdGhlICIKLSAgICAgICAgICAgICAgInByb2Nlc3MgYW5kIGF0dGVtcHQgdG8gZG8g
YmFzaC1zdHlsZSBjb21tYW5kIGxpbmUgZmxhZyAiCi0gICAgICAgICAgICAgICJjb21wbGV0aW9u
IG9uIHRoaXMgdmFsdWUuIik7Ci1ERUZJTkVfaW50MzIodGFiX2NvbXBsZXRpb25fY29sdW1ucywg
ODAsCi0gICAgICAgICAgICAgIk51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBpbiBvdXRwdXQgZm9y
IHRhYiBjb21wbGV0aW9uIik7Ci0KLQotbmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UgewotCi0K
LW5hbWVzcGFjZSB7Ci0vLyBGdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBUeXBlIGZvcndhcmQgZGVj
bGFyYXRpb25zLiAgQ29kZSBtYXkgYmUKLS8vIG1vcmUgZWFzaWx5IHVuZGVyc3Rvb2QgaWYgaXQg
aXMgcm91Z2hseSBvcmRlcmVkIGFjY29yZGluZyB0bwotLy8gY29udHJvbCBmbG93LCByYXRoZXIg
dGhhbiBieSBDJ3MgImRlY2xhcmUgYmVmb3JlIHVzZSIgb3JkZXJpbmcKLXN0cnVjdCBDb21wbGV0
aW9uT3B0aW9uczsKLXN0cnVjdCBOb3RhYmxlRmxhZ3M7Ci0KLS8vIFRoZSBlbnRyeSBwb2ludCBp
ZiBmbGFnIGNvbXBsZXRpb24gaXMgdG8gYmUgdXNlZC4KLXN0YXRpYyB2b2lkIFByaW50RmxhZ0Nv
bXBsZXRpb25JbmZvKHZvaWQpOwotCi0KLS8vIDEpIEV4YW1pbmUgc2VhcmNoIHdvcmQKLXN0YXRp
YyB2b2lkIENhbm9uaWNhbGl6ZUN1cnNvcldvcmRBbmRTZWFyY2hPcHRpb25zKAotICAgIGNvbnN0
IHN0cmluZyAmY3Vyc29yX3dvcmQsCi0gICAgc3RyaW5nICpjYW5vbmljYWxfc2VhcmNoX3Rva2Vu
LAotICAgIENvbXBsZXRpb25PcHRpb25zICpvcHRpb25zKTsKLQotc3RhdGljIGJvb2wgUmVtb3Zl
VHJhaWxpbmdDaGFyKHN0cmluZyAqc3RyLCBjaGFyIGMpOwotCi0KLS8vIDIpIEZpbmQgYWxsIG1h
dGNoZXMKLXN0YXRpYyB2b2lkIEZpbmRNYXRjaGluZ0ZsYWdzKAotICAgIGNvbnN0IHZlY3RvcjxD
b21tYW5kTGluZUZsYWdJbmZvPiAmYWxsX2ZsYWdzLAotICAgIGNvbnN0IENvbXBsZXRpb25PcHRp
b25zICZvcHRpb25zLAotICAgIGNvbnN0IHN0cmluZyAmbWF0Y2hfdG9rZW4sCi0gICAgc2V0PGNv
bnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gKmFsbF9tYXRjaGVzLAotICAgIHN0cmluZyAqbG9u
Z2VzdF9jb21tb25fcHJlZml4KTsKLQotc3RhdGljIGJvb2wgRG9lc1NpbmdsZUZsYWdNYXRjaCgK
LSAgICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICZmbGFnLAotICAgIGNvbnN0IENvbXBsZXRp
b25PcHRpb25zICZvcHRpb25zLAotICAgIGNvbnN0IHN0cmluZyAmbWF0Y2hfdG9rZW4pOwotCi0K
LS8vIDMpIENhdGVnb3JpemUgbWF0Y2hlcwotc3RhdGljIHZvaWQgQ2F0ZWdvcml6ZUFsbE1hdGNo
aW5nRmxhZ3MoCi0gICAgY29uc3Qgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gJmFs
bF9tYXRjaGVzLAotICAgIGNvbnN0IHN0cmluZyAmc2VhcmNoX3Rva2VuLAotICAgIGNvbnN0IHN0
cmluZyAmbW9kdWxlLAotICAgIGNvbnN0IHN0cmluZyAmcGFja2FnZV9kaXIsCi0gICAgTm90YWJs
ZUZsYWdzICpub3RhYmxlX2ZsYWdzKTsKLQotc3RhdGljIHZvaWQgVHJ5RmluZE1vZHVsZUFuZFBh
Y2thZ2VEaXIoCi0gICAgY29uc3QgdmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+IGFsbF9mbGFn
cywKLSAgICBzdHJpbmcgKm1vZHVsZSwKLSAgICBzdHJpbmcgKnBhY2thZ2VfZGlyKTsKLQotCi0v
LyA0KSBEZWNpZGUgd2hpY2ggZmxhZ3MgdG8gdXNlCi1zdGF0aWMgdm9pZCBGaW5hbGl6ZUNvbXBs
ZXRpb25PdXRwdXQoCi0gICAgY29uc3Qgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4g
Jm1hdGNoaW5nX2ZsYWdzLAotICAgIENvbXBsZXRpb25PcHRpb25zICpvcHRpb25zLAotICAgIE5v
dGFibGVGbGFncyAqbm90YWJsZV9mbGFncywKLSAgICB2ZWN0b3I8c3RyaW5nPiAqY29tcGxldGlv
bnMpOwotCi1zdGF0aWMgdm9pZCBSZXRyaWV2ZVVudXNlZEZsYWdzKAotICAgIGNvbnN0IHNldDxj
b25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICZtYXRjaGluZ19mbGFncywKLSAgICBjb25zdCBO
b3RhYmxlRmxhZ3MgJm5vdGFibGVfZmxhZ3MsCi0gICAgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxh
Z0luZm8gKj4gKnVudXNlZF9mbGFncyk7Ci0KLQotLy8gNSkgT3V0cHV0IG1hdGNoZXMKLXN0YXRp
YyB2b2lkIE91dHB1dFNpbmdsZUdyb3VwV2l0aExpbWl0KAotICAgIGNvbnN0IHNldDxjb25zdCBD
b21tYW5kTGluZUZsYWdJbmZvICo+ICZncm91cCwKLSAgICBjb25zdCBzdHJpbmcgJmxpbmVfaW5k
ZW50YXRpb24sCi0gICAgY29uc3Qgc3RyaW5nICZoZWFkZXIsCi0gICAgY29uc3Qgc3RyaW5nICZm
b290ZXIsCi0gICAgYm9vbCBsb25nX291dHB1dF9mb3JtYXQsCi0gICAgaW50ICpyZW1haW5pbmdf
bGluZV9saW1pdCwKLSAgICBzaXplX3QgKmNvbXBsZXRpb25fZWxlbWVudHNfYWRkZWQsCi0gICAg
dmVjdG9yPHN0cmluZz4gKmNvbXBsZXRpb25zKTsKLQotLy8gKGhlbHBlcnMgZm9yICM1KQotc3Rh
dGljIHN0cmluZyBHZXRTaG9ydEZsYWdMaW5lKAotICAgIGNvbnN0IHN0cmluZyAmbGluZV9pbmRl
bnRhdGlvbiwKLSAgICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICZpbmZvKTsKLQotc3RhdGlj
IHN0cmluZyBHZXRMb25nRmxhZ0xpbmUoCi0gICAgY29uc3Qgc3RyaW5nICZsaW5lX2luZGVudGF0
aW9uLAotICAgIGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gJmluZm8pOwotCi0KLS8vCi0vLyBV
c2VmdWwgdHlwZXMKLQotLy8gVHJ5IHRvIGRlZHVjZSB0aGUgaW50ZW50aW9ucyBiZWhpbmQgdGhp
cyBjb21wbGV0aW9uIGF0dGVtcHQuICBSZXR1cm4gdGhlCi0vLyBjYW5vbmljYWwgc2VhcmNoIHRl
cm0gaW4gJ2Nhbm9uaWNhbF9zZWFyY2hfdG9rZW4nLiAgQmluYXJ5IHNlYXJjaCBvcHRpb25zCi0v
LyBhcmUgcmV0dXJuZWQgaW4gdGhlIHZhcmlvdXMgYm9vbGVhbnMsIHdoaWNoIHNob3VsZCBhbGwg
aGF2ZSBpbnR1aXRpdmUKLS8vIHNlbWFudGljcywgcG9zc2libHkgZXhjZXB0OgotLy8gIC0gcmV0
dXJuX2FsbF9tYXRjaGluZ19mbGFnczogR2VuZXJhbGx5LCB3ZSdsbCB0cmltIHRoZSBudW1iZXIg
b2YKLS8vICAgIHJldHVybmVkIGNhbmRpZGF0ZXMgdG8gc29tZSBzbWFsbCBudW1iZXIsIHNob3dp
bmcgdGhvc2UgdGhhdCBhcmUKLS8vICAgIG1vc3QgbGlrZWx5IHRvIGJlIHVzZWZ1bCBmaXJzdC4g
IElmIHRoaXMgaXMgc2V0LCBob3dldmVyLCB0aGUgdXNlcgotLy8gICAgcmVhbGx5IGRvZXMgd2Fu
dCB1cyB0byByZXR1cm4gZXZlcnkgc2luZ2xlIGZsYWcgYXMgYW4gb3B0aW9uLgotLy8gIC0gZm9y
Y2Vfbm9fdXBkYXRlOiBBbnkgdGltZSB3ZSBvdXRwdXQgbGluZXMsIGFsbCBvZiB3aGljaCBzaGFy
ZSBhCi0vLyAgICBjb21tb24gcHJlZml4LCBiYXNoIHdpbGwgJ2hlbHBmdWxseScgbm90IGV2ZW4g
Ym90aGVyIHRvIHNob3cgdGhlCi0vLyAgICBvdXRwdXQsIGluc3RlYWQgY2hhbmdpbmcgdGhlIGN1
cnJlbnQgd29yZCB0byBiZSB0aGF0IGNvbW1vbiBwcmVmaXguCi0vLyAgICBJZiBpdCdzIGNsZWFy
IHRoaXMgc2hvdWxkbid0IGhhcHBlbiwgd2UnbGwgc2V0IHRoaXMgYm9vbGVhbgotc3RydWN0IENv
bXBsZXRpb25PcHRpb25zIHsKLSAgYm9vbCBmbGFnX25hbWVfc3Vic3RyaW5nX3NlYXJjaDsKLSAg
Ym9vbCBmbGFnX2xvY2F0aW9uX3N1YnN0cmluZ19zZWFyY2g7Ci0gIGJvb2wgZmxhZ19kZXNjcmlw
dGlvbl9zdWJzdHJpbmdfc2VhcmNoOwotICBib29sIHJldHVybl9hbGxfbWF0Y2hpbmdfZmxhZ3M7
Ci0gIGJvb2wgZm9yY2Vfbm9fdXBkYXRlOwotfTsKLQotLy8gTm90YWJsZSBmbGFncyBhcmUgZmxh
Z3MgdGhhdCBhcmUgc3BlY2lhbCBvciBwcmVmZXJyZWQgZm9yIHNvbWUKLS8vIHJlYXNvbi4gIEZv
ciBleGFtcGxlLCBmbGFncyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBiaW5hcnkncyBtb2R1bGUK
LS8vIGFyZSBleHBlY3RlZCB0byBiZSBtdWNoIG1vcmUgcmVsZXZlbnQgdGhhbiBmbGFncyBkZWZp
bmVkIGluIHNvbWUKLS8vIG90aGVyIHJhbmRvbSBsb2NhdGlvbi4gIFRoZXNlIHNldHMgYXJlIHNw
ZWNpZmllZCByb3VnaGx5IGluIHByZWNlZGVuY2UKLS8vIG9yZGVyLiAgT25jZSBhIGZsYWcgaXMg
cGxhY2VkIGluIG9uZSBvZiB0aGVzZSAnaGlnaGVyJyBzZXRzLCBpdCB3b24ndAotLy8gYmUgcGxh
Y2VkIGluIGFueSBvZiB0aGUgJ2xvd2VyJyBzZXRzLgotc3RydWN0IE5vdGFibGVGbGFncyB7Ci0g
IHR5cGVkZWYgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gRmxhZ1NldDsKLSAgRmxh
Z1NldCBwZXJmZWN0X21hdGNoX2ZsYWc7Ci0gIEZsYWdTZXQgbW9kdWxlX2ZsYWdzOyAgICAgICAv
LyBGb3VuZCBpbiBtb2R1bGUgZmlsZQotICBGbGFnU2V0IHBhY2thZ2VfZmxhZ3M7ICAgICAgLy8g
Rm91bmQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgbW9kdWxlIGZpbGUKLSAgRmxhZ1NldCBtb3N0X2Nv
bW1vbl9mbGFnczsgIC8vIE9uZSBvZiB0aGUgWFhYIG1vc3QgY29tbW9ubHkgc3VwcGxpZWQgZmxh
Z3MKLSAgRmxhZ1NldCBzdWJwYWNrYWdlX2ZsYWdzOyAgIC8vIEZvdW5kIGluIHN1YmRpcmVjdG9y
aWVzIG9mIHBhY2thZ2UKLX07Ci0KLQotLy8KLS8vIFRhYiBjb21wbGV0aW9uIGltcGxlbWVudGF0
aW9uIC0gZW50cnkgcG9pbnQKLXN0YXRpYyB2b2lkIFByaW50RmxhZ0NvbXBsZXRpb25JbmZvKHZv
aWQpIHsKLSAgc3RyaW5nIGN1cnNvcl93b3JkID0gRkxBR1NfdGFiX2NvbXBsZXRpb25fd29yZDsK
LSAgc3RyaW5nIGNhbm9uaWNhbF90b2tlbjsKLSAgQ29tcGxldGlvbk9wdGlvbnMgb3B0aW9ucyA9
IHsgfTsKLSAgQ2Fub25pY2FsaXplQ3Vyc29yV29yZEFuZFNlYXJjaE9wdGlvbnMoCi0gICAgICBj
dXJzb3Jfd29yZCwKLSAgICAgICZjYW5vbmljYWxfdG9rZW4sCi0gICAgICAmb3B0aW9ucyk7Ci0K
LSAgRFZMT0coMSkgPDwgIklkZW50aWZpZWQgY2Fub25pY2FsX3Rva2VuOiAnIiA8PCBjYW5vbmlj
YWxfdG9rZW4gPDwgIiciOwotCi0gIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBhbGxfZmxh
Z3M7Ci0gIHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+IG1hdGNoaW5nX2ZsYWdzOwot
ICBHZXRBbGxGbGFncygmYWxsX2ZsYWdzKTsKLSAgRFZMT0coMikgPDwgIkZvdW5kICIgPDwgYWxs
X2ZsYWdzLnNpemUoKSA8PCAiIGZsYWdzIG92ZXJhbGwiOwotCi0gIHN0cmluZyBsb25nZXN0X2Nv
bW1vbl9wcmVmaXg7Ci0gIEZpbmRNYXRjaGluZ0ZsYWdzKAotICAgICAgYWxsX2ZsYWdzLAotICAg
ICAgb3B0aW9ucywKLSAgICAgIGNhbm9uaWNhbF90b2tlbiwKLSAgICAgICZtYXRjaGluZ19mbGFn
cywKLSAgICAgICZsb25nZXN0X2NvbW1vbl9wcmVmaXgpOwotICBEVkxPRygxKSA8PCAiSWRlbnRp
ZmllZCAiIDw8IG1hdGNoaW5nX2ZsYWdzLnNpemUoKSA8PCAiIG1hdGNoaW5nIGZsYWdzIjsKLSAg
RFZMT0coMSkgPDwgIklkZW50aWZpZWQgIiA8PCBsb25nZXN0X2NvbW1vbl9wcmVmaXgKLSAgICAg
ICAgICA8PCAiIGFzIGxvbmdlc3QgY29tbW9uIHByZWZpeC4iOwotICBpZiAobG9uZ2VzdF9jb21t
b25fcHJlZml4LnNpemUoKSA+IGNhbm9uaWNhbF90b2tlbi5zaXplKCkpIHsKLSAgICAvLyBUaGVy
ZSdzIGFjdHVhbGx5IGEgc2hhcmVkIGNvbW1vbiBwcmVmaXggdG8gYWxsIG1hdGNoaW5nIGZsYWdz
LAotICAgIC8vIHNvIG1heSBhcyB3ZWxsIG91dHB1dCB0aGF0IGFuZCBxdWl0IHF1aWNrbHkuCi0g
ICAgRFZMT0coMSkgPDwgIlRoZSBjb21tb24gcHJlZml4ICciIDw8IGxvbmdlc3RfY29tbW9uX3By
ZWZpeAotICAgICAgICAgICAgPDwgIicgd2FzIGxvbmdlciB0aGFuIHRoZSB0b2tlbiAnIiA8PCBj
YW5vbmljYWxfdG9rZW4KLSAgICAgICAgICAgIDw8ICInLiAgUmV0dXJuaW5nIGp1c3QgdGhpcyBw
cmVmaXggZm9yIGNvbXBsZXRpb24uIjsKLSAgICBmcHJpbnRmKHN0ZG91dCwgIi0tJXMiLCBsb25n
ZXN0X2NvbW1vbl9wcmVmaXguY19zdHIoKSk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIGlmIChtYXRj
aGluZ19mbGFncy5lbXB0eSgpKSB7Ci0gICAgVkxPRygxKSA8PCAiVGhlcmUgd2VyZSBubyBtYXRj
aGluZyBmbGFncywgcmV0dXJuaW5nIG5vdGhpbmcuIjsKLSAgICByZXR1cm47Ci0gIH0KLQotICBz
dHJpbmcgbW9kdWxlOwotICBzdHJpbmcgcGFja2FnZV9kaXI7Ci0gIFRyeUZpbmRNb2R1bGVBbmRQ
YWNrYWdlRGlyKGFsbF9mbGFncywgJm1vZHVsZSwgJnBhY2thZ2VfZGlyKTsKLSAgRFZMT0coMSkg
PDwgIklkZW50aWZpZWQgbW9kdWxlOiAnIiA8PCBtb2R1bGUgPDwgIiciOwotICBEVkxPRygxKSA8
PCAiSWRlbnRpZmllZCBwYWNrYWdlX2RpcjogJyIgPDwgcGFja2FnZV9kaXIgPDwgIiciOwotCi0g
IE5vdGFibGVGbGFncyBub3RhYmxlX2ZsYWdzOwotICBDYXRlZ29yaXplQWxsTWF0Y2hpbmdGbGFn
cygKLSAgICAgIG1hdGNoaW5nX2ZsYWdzLAotICAgICAgY2Fub25pY2FsX3Rva2VuLAotICAgICAg
bW9kdWxlLAotICAgICAgcGFja2FnZV9kaXIsCi0gICAgICAmbm90YWJsZV9mbGFncyk7Ci0gIERW
TE9HKDIpIDw8ICJDYXRlZ29yaXplZCBtYXRjaGluZyBmbGFnczoiOwotICBEVkxPRygyKSA8PCAi
IHBlcmZlY3RfbWF0Y2g6ICIgPDwgbm90YWJsZV9mbGFncy5wZXJmZWN0X21hdGNoX2ZsYWcuc2l6
ZSgpOwotICBEVkxPRygyKSA8PCAiIG1vZHVsZTogIiA8PCBub3RhYmxlX2ZsYWdzLm1vZHVsZV9m
bGFncy5zaXplKCk7Ci0gIERWTE9HKDIpIDw8ICIgcGFja2FnZTogIiA8PCBub3RhYmxlX2ZsYWdz
LnBhY2thZ2VfZmxhZ3Muc2l6ZSgpOwotICBEVkxPRygyKSA8PCAiIG1vc3QgY29tbW9uOiAiIDw8
IG5vdGFibGVfZmxhZ3MubW9zdF9jb21tb25fZmxhZ3Muc2l6ZSgpOwotICBEVkxPRygyKSA8PCAi
IHN1YnBhY2thZ2U6ICIgPDwgbm90YWJsZV9mbGFncy5zdWJwYWNrYWdlX2ZsYWdzLnNpemUoKTsK
LQotICB2ZWN0b3I8c3RyaW5nPiBjb21wbGV0aW9uczsKLSAgRmluYWxpemVDb21wbGV0aW9uT3V0
cHV0KAotICAgICAgbWF0Y2hpbmdfZmxhZ3MsCi0gICAgICAmb3B0aW9ucywKLSAgICAgICZub3Rh
YmxlX2ZsYWdzLAotICAgICAgJmNvbXBsZXRpb25zKTsKLQotICBpZiAob3B0aW9ucy5mb3JjZV9u
b191cGRhdGUpCi0gICAgY29tcGxldGlvbnMucHVzaF9iYWNrKCJ+Iik7Ci0KLSAgRFZMT0coMSkg
PDwgIkZpbmFsaXplZCB3aXRoICIgPDwgY29tcGxldGlvbnMuc2l6ZSgpCi0gICAgICAgICAgPDwg
IiBjaG9zZW4gY29tcGxldGlvbnMiOwotCi0gIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gY29tcGxldGlvbnMuYmVnaW4oKTsKLSAgICAgIGl0ICE9IGNvbXBsZXRpb25z
LmVuZCgpOwotICAgICAgKytpdCkgewotICAgIERWTE9HKDkpIDw8ICIgIENvbXBsZXRpb24gZW50
cnk6ICciIDw8ICppdCA8PCAiJyI7Ci0gICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgaXQtPmNf
c3RyKCkpOwotICB9Ci19Ci0KLQotLy8gMSkgRXhhbWluZSBzZWFyY2ggd29yZCAoYW5kIGhlbHBl
ciBtZXRob2QpCi1zdGF0aWMgdm9pZCBDYW5vbmljYWxpemVDdXJzb3JXb3JkQW5kU2VhcmNoT3B0
aW9ucygKLSAgICBjb25zdCBzdHJpbmcgJmN1cnNvcl93b3JkLAotICAgIHN0cmluZyAqY2Fub25p
Y2FsX3NlYXJjaF90b2tlbiwKLSAgICBDb21wbGV0aW9uT3B0aW9ucyAqb3B0aW9ucykgewotICAq
Y2Fub25pY2FsX3NlYXJjaF90b2tlbiA9IGN1cnNvcl93b3JkOwotICBpZiAoY2Fub25pY2FsX3Nl
YXJjaF90b2tlbi0+ZW1wdHkoKSkgcmV0dXJuOwotCi0gIC8vIEdldCByaWQgb2YgbGVhZGluZyBx
dW90ZXMgYW5kIGRhc2hlcyBpbiB0aGUgc2VhcmNoIHRlcm0KLSAgaWYgKCgqY2Fub25pY2FsX3Nl
YXJjaF90b2tlbilbMF0gPT0gJyInKQotICAgICpjYW5vbmljYWxfc2VhcmNoX3Rva2VuID0gY2Fu
b25pY2FsX3NlYXJjaF90b2tlbi0+c3Vic3RyKDEpOwotICB3aGlsZSAoKCpjYW5vbmljYWxfc2Vh
cmNoX3Rva2VuKVswXSA9PSAnLScpCi0gICAgKmNhbm9uaWNhbF9zZWFyY2hfdG9rZW4gPSBjYW5v
bmljYWxfc2VhcmNoX3Rva2VuLT5zdWJzdHIoMSk7Ci0KLSAgb3B0aW9ucy0+ZmxhZ19uYW1lX3N1
YnN0cmluZ19zZWFyY2ggPSBmYWxzZTsKLSAgb3B0aW9ucy0+ZmxhZ19sb2NhdGlvbl9zdWJzdHJp
bmdfc2VhcmNoID0gZmFsc2U7Ci0gIG9wdGlvbnMtPmZsYWdfZGVzY3JpcHRpb25fc3Vic3RyaW5n
X3NlYXJjaCA9IGZhbHNlOwotICBvcHRpb25zLT5yZXR1cm5fYWxsX21hdGNoaW5nX2ZsYWdzID0g
ZmFsc2U7Ci0gIG9wdGlvbnMtPmZvcmNlX25vX3VwZGF0ZSA9IGZhbHNlOwotCi0gIC8vIExvb2sg
Zm9yIGFsbCBzZWFyY2ggb3B0aW9ucyB3ZSBjYW4gZGVkdWNlIG5vdy4gIERvIHRoaXMgYnkgd2Fs
a2luZwotICAvLyBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgdGVybSwgbG9va2luZyBmb3IgdXAgdG8g
dGhyZWUgJz8nIGFuZCB1cCB0bwotICAvLyBvbmUgJysnIGFzIHN1ZmZpeGVkIGNoYXJhY3RlcnMu
ICBDb25zdW1lIHRoZW0gaWYgZm91bmQsIGFuZCByZW1vdmUKLSAgLy8gdGhlbSBmcm9tIHRoZSBj
YW5vbmljYWwgc2VhcmNoIHRva2VuLgotICBpbnQgZm91bmRfcXVlc3Rpb25fbWFya3MgPSAwOwot
ICBpbnQgZm91bmRfcGx1c3NlcyA9IDA7Ci0gIHdoaWxlICh0cnVlKSB7Ci0gICAgaWYgKGZvdW5k
X3F1ZXN0aW9uX21hcmtzIDwgMyAmJgotICAgICAgICBSZW1vdmVUcmFpbGluZ0NoYXIoY2Fub25p
Y2FsX3NlYXJjaF90b2tlbiwgJz8nKSkgewotICAgICAgKytmb3VuZF9xdWVzdGlvbl9tYXJrczsK
LSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBpZiAoZm91bmRfcGx1c3NlcyA8IDEgJiYKLSAg
ICAgICAgUmVtb3ZlVHJhaWxpbmdDaGFyKGNhbm9uaWNhbF9zZWFyY2hfdG9rZW4sICcrJykpIHsK
LSAgICAgICsrZm91bmRfcGx1c3NlczsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBicmVh
azsKLSAgfQotCi0gIHN3aXRjaCAoZm91bmRfcXVlc3Rpb25fbWFya3MpIHsgIC8vIGFsbCBmYWxs
dGhyb3VnaHMKLSAgICBjYXNlIDM6IG9wdGlvbnMtPmZsYWdfZGVzY3JpcHRpb25fc3Vic3RyaW5n
X3NlYXJjaCA9IHRydWU7Ci0gICAgY2FzZSAyOiBvcHRpb25zLT5mbGFnX2xvY2F0aW9uX3N1YnN0
cmluZ19zZWFyY2ggPSB0cnVlOwotICAgIGNhc2UgMTogb3B0aW9ucy0+ZmxhZ19uYW1lX3N1YnN0
cmluZ19zZWFyY2ggPSB0cnVlOwotICB9OwotCi0gIG9wdGlvbnMtPnJldHVybl9hbGxfbWF0Y2hp
bmdfZmxhZ3MgPSAoZm91bmRfcGx1c3NlcyA+IDApOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWYg
YSBjaGFyIHdhcyByZW1vdmVkCi1zdGF0aWMgYm9vbCBSZW1vdmVUcmFpbGluZ0NoYXIoc3RyaW5n
ICpzdHIsIGNoYXIgYykgewotICBpZiAoc3RyLT5lbXB0eSgpKSByZXR1cm4gZmFsc2U7Ci0gIGlm
ICgoKnN0cilbc3RyLT5zaXplKCkgLSAxXSA9PSBjKSB7Ci0gICAgKnN0ciA9IHN0ci0+c3Vic3Ry
KDAsIHN0ci0+c2l6ZSgpIC0gMSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZh
bHNlOwotfQotCi0KLS8vIDIpIEZpbmQgYWxsIG1hdGNoZXMgKGFuZCBoZWxwZXIgbWV0aG9kcykK
LXN0YXRpYyB2b2lkIEZpbmRNYXRjaGluZ0ZsYWdzKAotICAgIGNvbnN0IHZlY3RvcjxDb21tYW5k
TGluZUZsYWdJbmZvPiAmYWxsX2ZsYWdzLAotICAgIGNvbnN0IENvbXBsZXRpb25PcHRpb25zICZv
cHRpb25zLAotICAgIGNvbnN0IHN0cmluZyAmbWF0Y2hfdG9rZW4sCi0gICAgc2V0PGNvbnN0IENv
bW1hbmRMaW5lRmxhZ0luZm8gKj4gKmFsbF9tYXRjaGVzLAotICAgIHN0cmluZyAqbG9uZ2VzdF9j
b21tb25fcHJlZml4KSB7Ci0gIGFsbF9tYXRjaGVzLT5jbGVhcigpOwotICBib29sIGZpcnN0X21h
dGNoID0gdHJ1ZTsKLSAgZm9yICh2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gYWxsX2ZsYWdzLmJlZ2luKCk7Ci0gICAgICBpdCAhPSBhbGxfZmxhZ3MuZW5k
KCk7Ci0gICAgICArK2l0KSB7Ci0gICAgaWYgKERvZXNTaW5nbGVGbGFnTWF0Y2goKml0LCBvcHRp
b25zLCBtYXRjaF90b2tlbikpIHsKLSAgICAgIGFsbF9tYXRjaGVzLT5pbnNlcnQoJippdCk7Ci0g
ICAgICBpZiAoZmlyc3RfbWF0Y2gpIHsKLSAgICAgICAgZmlyc3RfbWF0Y2ggPSBmYWxzZTsKLSAg
ICAgICAgKmxvbmdlc3RfY29tbW9uX3ByZWZpeCA9IGl0LT5uYW1lOwotICAgICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKGxvbmdlc3RfY29tbW9uX3ByZWZpeC0+ZW1wdHkoKSB8fCBpdC0+bmFtZS5l
bXB0eSgpKSB7Ci0gICAgICAgICAgbG9uZ2VzdF9jb21tb25fcHJlZml4LT5jbGVhcigpOwotICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHN0cmluZzo6c2l6ZV90eXBlIHBv
cyA9IDA7Ci0gICAgICAgIHdoaWxlIChwb3MgPCBsb25nZXN0X2NvbW1vbl9wcmVmaXgtPnNpemUo
KSAmJgotICAgICAgICAgICAgcG9zIDwgaXQtPm5hbWUuc2l6ZSgpICYmCi0gICAgICAgICAgICAo
Kmxvbmdlc3RfY29tbW9uX3ByZWZpeClbcG9zXSA9PSBpdC0+bmFtZVtwb3NdKQotICAgICAgICAg
ICsrcG9zOwotICAgICAgICBsb25nZXN0X2NvbW1vbl9wcmVmaXgtPmVyYXNlKHBvcyk7Ci0gICAg
ICB9Ci0gICAgfQotICB9Ci19Ci0KLS8vIEdpdmVuIHRoZSBzZXQgb2YgYWxsIGZsYWdzLCB0aGUg
cGFyc2VkIG1hdGNoIG9wdGlvbnMsIGFuZCB0aGUKLS8vIGNhbm9uaWNhbCBzZWFyY2ggdG9rZW4s
IHByb2R1Y2UgdGhlIHNldCBvZiBhbGwgY2FuZGlkYXRlIG1hdGNoaW5nCi0vLyBmbGFncyBmb3Ig
c3Vic2VxdWVudCBhbmFseXNpcyBvciBmaWx0ZXJpbmcuCi1zdGF0aWMgYm9vbCBEb2VzU2luZ2xl
RmxhZ01hdGNoKAotICAgIGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gJmZsYWcsCi0gICAgY29u
c3QgQ29tcGxldGlvbk9wdGlvbnMgJm9wdGlvbnMsCi0gICAgY29uc3Qgc3RyaW5nICZtYXRjaF90
b2tlbikgewotICAvLyBJcyB0aGVyZSBhIHByZWZpeCBtYXRjaD8KLSAgc3RyaW5nOjpzaXplX3R5
cGUgcG9zID0gZmxhZy5uYW1lLmZpbmQobWF0Y2hfdG9rZW4pOwotICBpZiAocG9zID09IDApIHJl
dHVybiB0cnVlOwotCi0gIC8vIElzIHRoZXJlIGEgc3Vic3RyaW5nIG1hdGNoIGlmIHdlIHdhbnQg
aXQ/Ci0gIGlmIChvcHRpb25zLmZsYWdfbmFtZV9zdWJzdHJpbmdfc2VhcmNoICYmCi0gICAgICBw
b3MgIT0gc3RyaW5nOjpucG9zKQotICAgIHJldHVybiB0cnVlOwotCi0gIC8vIElzIHRoZXJlIGEg
bG9jYXRpb24gbWF0Y2ggaWYgd2Ugd2FudCBpdD8KLSAgaWYgKG9wdGlvbnMuZmxhZ19sb2NhdGlv
bl9zdWJzdHJpbmdfc2VhcmNoICYmCi0gICAgICBmbGFnLmZpbGVuYW1lLmZpbmQobWF0Y2hfdG9r
ZW4pICE9IHN0cmluZzo6bnBvcykKLSAgICByZXR1cm4gdHJ1ZTsKLQotICAvLyBUT0RPKHVzZXIp
OiBBbGwgc2VhcmNoZXMgc2hvdWxkIHByb2JhYmx5IGJlIGNhc2UtaW5zZW5zaXRpdmUKLSAgLy8g
KGVzcGVjaWFsbHkgdGhpcyBvbmUuLi4pCi0gIGlmIChvcHRpb25zLmZsYWdfZGVzY3JpcHRpb25f
c3Vic3RyaW5nX3NlYXJjaCAmJgotICAgICAgZmxhZy5kZXNjcmlwdGlvbi5maW5kKG1hdGNoX3Rv
a2VuKSAhPSBzdHJpbmc6Om5wb3MpCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLyAzKSBDYXRlZ29yaXplIG1hdGNoZXMgKGFuZCBoZWxwZXIgbWV0aG9kKQotCi0v
LyBHaXZlbiBhIHNldCBvZiBtYXRjaGluZyBmbGFncywgY2F0ZWdvcml6ZSB0aGVtIGJ5Ci0vLyBs
aWtlbHkgcmVsZXZlbmNlIHRvIHRoaXMgc3BlY2lmaWMgYmluYXJ5Ci1zdGF0aWMgdm9pZCBDYXRl
Z29yaXplQWxsTWF0Y2hpbmdGbGFncygKLSAgICBjb25zdCBzZXQ8Y29uc3QgQ29tbWFuZExpbmVG
bGFnSW5mbyAqPiAmYWxsX21hdGNoZXMsCi0gICAgY29uc3Qgc3RyaW5nICZzZWFyY2hfdG9rZW4s
Ci0gICAgY29uc3Qgc3RyaW5nICZtb2R1bGUsICAvLyBlbXB0eSBpZiB3ZSBjb3VsZG4ndCBmaW5k
IGFueQotICAgIGNvbnN0IHN0cmluZyAmcGFja2FnZV9kaXIsICAvLyBlbXB0eSBpZiB3ZSBjb3Vs
ZG4ndCBmaW5kIGFueQotICAgIE5vdGFibGVGbGFncyAqbm90YWJsZV9mbGFncykgewotICBub3Rh
YmxlX2ZsYWdzLT5wZXJmZWN0X21hdGNoX2ZsYWcuY2xlYXIoKTsKLSAgbm90YWJsZV9mbGFncy0+
bW9kdWxlX2ZsYWdzLmNsZWFyKCk7Ci0gIG5vdGFibGVfZmxhZ3MtPnBhY2thZ2VfZmxhZ3MuY2xl
YXIoKTsKLSAgbm90YWJsZV9mbGFncy0+bW9zdF9jb21tb25fZmxhZ3MuY2xlYXIoKTsKLSAgbm90
YWJsZV9mbGFncy0+c3VicGFja2FnZV9mbGFncy5jbGVhcigpOwotCi0gIGZvciAoc2V0PGNvbnN0
IENvbW1hbmRMaW5lRmxhZ0luZm8gKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KLSAgICAgICAgYWxs
X21hdGNoZXMuYmVnaW4oKTsKLSAgICAgIGl0ICE9IGFsbF9tYXRjaGVzLmVuZCgpOwotICAgICAg
KytpdCkgewotICAgIERWTE9HKDIpIDw8ICJFeGFtaW5pbmcgbWF0Y2ggJyIgPDwgKCppdCktPm5h
bWUgPDwgIiciOwotICAgIERWTE9HKDcpIDw8ICIgIGZpbGVuYW1lOiAnIiA8PCAoKml0KS0+Zmls
ZW5hbWUgPDwgIiciOwotICAgIHN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IHN0cmluZzo6bnBvczsK
LSAgICBpZiAoIXBhY2thZ2VfZGlyLmVtcHR5KCkpCi0gICAgICBwb3MgPSAoKml0KS0+ZmlsZW5h
bWUuZmluZChwYWNrYWdlX2Rpcik7Ci0gICAgc3RyaW5nOjpzaXplX3R5cGUgc2xhc2ggPSBzdHJp
bmc6Om5wb3M7Ci0gICAgaWYgKHBvcyAhPSBzdHJpbmc6Om5wb3MpICAvLyBjYW5kaWRhdGUgZm9y
IHBhY2thZ2Ugb3Igc3VicGFja2FnZSBtYXRjaAotICAgICAgc2xhc2ggPSAoKml0KS0+ZmlsZW5h
bWUuZmluZCgKLSAgICAgICAgICBQQVRIX1NFUEFSQVRPUiwKLSAgICAgICAgICBwb3MgKyBwYWNr
YWdlX2Rpci5zaXplKCkgKyAxKTsKLQotICAgIGlmICgoKml0KS0+bmFtZSA9PSBzZWFyY2hfdG9r
ZW4pIHsKLSAgICAgIC8vIEV4YWN0IG1hdGNoIG9uIHNvbWUgZmxhZydzIG5hbWUKLSAgICAgIG5v
dGFibGVfZmxhZ3MtPnBlcmZlY3RfbWF0Y2hfZmxhZy5pbnNlcnQoKml0KTsKLSAgICAgIERWTE9H
KDMpIDw8ICJSZXN1bHQ6IHBlcmZlY3QgbWF0Y2giOwotICAgIH0gZWxzZSBpZiAoIW1vZHVsZS5l
bXB0eSgpICYmICgqaXQpLT5maWxlbmFtZSA9PSBtb2R1bGUpIHsKLSAgICAgIC8vIEV4YWN0IG1h
dGNoIG9uIG1vZHVsZSBmaWxlbmFtZQotICAgICAgbm90YWJsZV9mbGFncy0+bW9kdWxlX2ZsYWdz
Lmluc2VydCgqaXQpOwotICAgICAgRFZMT0coMykgPDwgIlJlc3VsdDogbW9kdWxlIG1hdGNoIjsK
LSAgICB9IGVsc2UgaWYgKCFwYWNrYWdlX2Rpci5lbXB0eSgpICYmCi0gICAgICAgIHBvcyAhPSBz
dHJpbmc6Om5wb3MgJiYgc2xhc2ggPT0gc3RyaW5nOjpucG9zKSB7Ci0gICAgICAvLyBJbiB0aGUg
cGFja2FnZSwgc2luY2UgdGhlcmUgd2FzIG5vIHNsYXNoIGFmdGVyIHRoZSBwYWNrYWdlIHBvcnRp
b24KLSAgICAgIG5vdGFibGVfZmxhZ3MtPnBhY2thZ2VfZmxhZ3MuaW5zZXJ0KCppdCk7Ci0gICAg
ICBEVkxPRygzKSA8PCAiUmVzdWx0OiBwYWNrYWdlIG1hdGNoIjsKLSAgICB9IGVsc2UgaWYgKGZh
bHNlKSB7Ci0gICAgICAvLyBJbiB0aGUgbGlzdCBvZiB0aGUgWFhYIG1vc3QgY29tbW9ubHkgc3Vw
cGxpZWQgZmxhZ3Mgb3ZlcmFsbAotICAgICAgLy8gVE9ETyh1c2VyKTogQ29tcGlsZSB0aGlzIGxp
c3QuCi0gICAgICBEVkxPRygzKSA8PCAiUmVzdWx0OiBtb3N0LWNvbW1vbiBtYXRjaCI7Ci0gICAg
fSBlbHNlIGlmICghcGFja2FnZV9kaXIuZW1wdHkoKSAmJgotICAgICAgICBwb3MgIT0gc3RyaW5n
OjpucG9zICYmIHNsYXNoICE9IHN0cmluZzo6bnBvcykgewotICAgICAgLy8gSW4gYSBzdWJkaXJl
Y3Rvcnkgb2YgdGhlIHBhY2thZ2UKLSAgICAgIG5vdGFibGVfZmxhZ3MtPnN1YnBhY2thZ2VfZmxh
Z3MuaW5zZXJ0KCppdCk7Ci0gICAgICBEVkxPRygzKSA8PCAiUmVzdWx0OiBzdWJwYWNrYWdlIG1h
dGNoIjsKLSAgICB9Ci0KLSAgICBEVkxPRygzKSA8PCAiUmVzdWx0OiBub3Qgc3BlY2lhbCBtYXRj
aCI7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQgUHVzaE5hbWVXaXRoU3VmZml4KHZlY3RvcjxzdHJp
bmc+KiBzdWZmaXhlcywgY29uc3QgY2hhciogc3VmZml4KSB7Ci0gIHN1ZmZpeGVzLT5wdXNoX2Jh
Y2soCi0gICAgICBTdHJpbmdQcmludGYoIi8lcyVzIiwgUHJvZ3JhbUludm9jYXRpb25TaG9ydE5h
bWUoKSwgc3VmZml4KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIFRyeUZpbmRNb2R1bGVBbmRQYWNrYWdl
RGlyKAotICAgIGNvbnN0IHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBhbGxfZmxhZ3MsCi0g
ICAgc3RyaW5nICptb2R1bGUsCi0gICAgc3RyaW5nICpwYWNrYWdlX2RpcikgewotICBtb2R1bGUt
PmNsZWFyKCk7Ci0gIHBhY2thZ2VfZGlyLT5jbGVhcigpOwotCi0gIHZlY3RvcjxzdHJpbmc+IHN1
ZmZpeGVzOwotICAvLyBUT0RPKHVzZXIpOiBUaGVyZSdzIHNvbWUgaW5oZXJhbnQgYW1iaWd1aXR5
IGhlcmUgLSBtdWx0aXBsZSBkaXJlY3RvcmllcwotICAvLyBjb3VsZCBzaGFyZSB0aGUgc2FtZSB0
cmFpbGluZyBmb2xkZXIgYW5kIGZpbGUgc3RydWN0dXJlIChhbmQgZXZlbiB3b3JzZSwKLSAgLy8g
c2FtZSBmaWxlIG5hbWVzKSwgY2F1c2luZyB1cyB0byBiZSB1bnN1cmUgYXMgdG8gd2hpY2ggb2Yg
dGhlIHR3byBpcyB0aGUKLSAgLy8gYWN0dWFsIHBhY2thZ2UgZm9yIHRoaXMgYmluYXJ5LiAgSW4g
dGhpcyBjYXNlLCB3ZSdsbCBhcmJpdHJhcmlseSBjaG9vc2UuCi0gIFB1c2hOYW1lV2l0aFN1ZmZp
eCgmc3VmZml4ZXMsICIuIik7Ci0gIFB1c2hOYW1lV2l0aFN1ZmZpeCgmc3VmZml4ZXMsICItbWFp
bi4iKTsKLSAgUHVzaE5hbWVXaXRoU3VmZml4KCZzdWZmaXhlcywgIl9tYWluLiIpOwotICAvLyBU
aGVzZSBmb3VyIGFyZSBuZXcgYnV0IHByb2JhYmx5IG1lcml0ZWQ/Ci0gIFB1c2hOYW1lV2l0aFN1
ZmZpeCgmc3VmZml4ZXMsICItdGVzdC4iKTsKLSAgUHVzaE5hbWVXaXRoU3VmZml4KCZzdWZmaXhl
cywgIl90ZXN0LiIpOwotICBQdXNoTmFtZVdpdGhTdWZmaXgoJnN1ZmZpeGVzLCAiLXVuaXR0ZXN0
LiIpOwotICBQdXNoTmFtZVdpdGhTdWZmaXgoJnN1ZmZpeGVzLCAiX3VuaXR0ZXN0LiIpOwotCi0g
IGZvciAodmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFs
bF9mbGFncy5iZWdpbigpOwotICAgICAgaXQgIT0gYWxsX2ZsYWdzLmVuZCgpOwotICAgICAgKytp
dCkgewotICAgIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHN1ZmZpeCA9IHN1
ZmZpeGVzLmJlZ2luKCk7Ci0gICAgICAgIHN1ZmZpeCAhPSBzdWZmaXhlcy5lbmQoKTsKLSAgICAg
ICAgKytzdWZmaXgpIHsKLSAgICAgIC8vIFRPRE8odXNlcik6IE1ha2Ugc3VyZSB0aGUgbWF0Y2gg
aXMgbmVhciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKLSAgICAgIGlmIChpdC0+ZmlsZW5hbWUuZmlu
ZCgqc3VmZml4KSAhPSBzdHJpbmc6Om5wb3MpIHsKLSAgICAgICAgKm1vZHVsZSA9IGl0LT5maWxl
bmFtZTsKLSAgICAgICAgc3RyaW5nOjpzaXplX3R5cGUgc2VwID0gaXQtPmZpbGVuYW1lLnJmaW5k
KFBBVEhfU0VQQVJBVE9SKTsKLSAgICAgICAgKnBhY2thZ2VfZGlyID0gaXQtPmZpbGVuYW1lLnN1
YnN0cigwLCAoc2VwID09IHN0cmluZzo6bnBvcykgPyAwIDogc2VwKTsKLSAgICAgICAgcmV0dXJu
OwotICAgICAgfQotICAgIH0KLSAgfQotfQotCi0vLyBDYW4ndCBzcGVjaWFsaXplIHRlbXBsYXRl
IHR5cGUgb24gYSBsb2NhbGx5IGRlZmluZWQgdHlwZS4gIFNpbGx5IEMrKy4uLgotc3RydWN0IERp
c3BsYXlJbmZvR3JvdXAgewotICBjb25zdCBjaGFyKiBoZWFkZXI7Ci0gIGNvbnN0IGNoYXIqIGZv
b3RlcjsKLSAgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gKmdyb3VwOwotCi0gIGlu
dCBTaXplSW5MaW5lcygpIGNvbnN0IHsKLSAgICBpbnQgc2l6ZV9pbl9saW5lcyA9IHN0YXRpY19j
YXN0PGludD4oZ3JvdXAtPnNpemUoKSkgKyAxOwotICAgIGlmIChzdHJsZW4oaGVhZGVyKSA+IDAp
IHsKLSAgICAgIHNpemVfaW5fbGluZXMrKzsKLSAgICB9Ci0gICAgaWYgKHN0cmxlbihmb290ZXIp
ID4gMCkgewotICAgICAgc2l6ZV9pbl9saW5lcysrOwotICAgIH0KLSAgICByZXR1cm4gc2l6ZV9p
bl9saW5lczsKLSAgfQotfTsKLQotLy8gNCkgRmluYWxpemUgYW5kIHRyaW0gb3V0cHV0IGZsYWcg
c2V0Ci1zdGF0aWMgdm9pZCBGaW5hbGl6ZUNvbXBsZXRpb25PdXRwdXQoCi0gICAgY29uc3Qgc2V0
PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gJm1hdGNoaW5nX2ZsYWdzLAotICAgIENvbXBs
ZXRpb25PcHRpb25zICpvcHRpb25zLAotICAgIE5vdGFibGVGbGFncyAqbm90YWJsZV9mbGFncywK
LSAgICB2ZWN0b3I8c3RyaW5nPiAqY29tcGxldGlvbnMpIHsKLQotICAvLyBXZSB3YW50IHRvIG91
dHB1dCBsaW5lcyBpbiBncm91cHMuICBFYWNoIGdyb3VwIG5lZWRzIHRvIGJlIGluZGVudGVkCi0g
IC8vIHRoZSBzYW1lIHRvIGtlZXAgaXRzIGxpbmVzIHRvZ2V0aGVyLiAgVW5sZXNzIG90aGVyd2lz
ZSByZXF1aXJlZCwKLSAgLy8gb25seSA5OSBsaW5lcyBzaG91bGQgYmUgb3V0cHV0IHRvIHByZXZl
bnQgYmFzaCBmcm9tIGhhcmFzc2luZyB0aGUKLSAgLy8gdXNlci4KLQotICAvLyBGaXJzdCwgZmln
dXJlIG91dCB3aGljaCBvdXRwdXQgZ3JvdXBzIHdlJ2xsIGFjdHVhbGx5IHVzZS4gIEZvciBlYWNo
Ci0gIC8vIG5vbmVtcHR5IGdyb3VwLCB0aGVyZSB3aWxsIGJlIH4zIGxpbmVzIG9mIGhlYWRlciAm
IGZvb3RlciwgcGx1cyBhbGwKLSAgLy8gb3V0cHV0IGxpbmVzIHRoZW1zZWx2ZXMuCi0gIGludCBt
YXhfZGVzaXJlZF9saW5lcyA9ICAvLyAiOTk5OTk5IGZsYWdzIHNob3VsZCBiZSBlbm91Z2ggZm9y
IGFueW9uZS4gIC1kYXZlIgotICAgIChvcHRpb25zLT5yZXR1cm5fYWxsX21hdGNoaW5nX2ZsYWdz
ID8gOTk5OTk5IDogOTgpOwotICBpbnQgbGluZXNfc29fZmFyID0gMDsKLQotICB2ZWN0b3I8RGlz
cGxheUluZm9Hcm91cD4gb3V0cHV0X2dyb3VwczsKLSAgYm9vbCBwZXJmZWN0X21hdGNoX2ZvdW5k
ID0gZmFsc2U7Ci0gIGlmIChsaW5lc19zb19mYXIgPCBtYXhfZGVzaXJlZF9saW5lcyAmJgotICAg
ICAgIW5vdGFibGVfZmxhZ3MtPnBlcmZlY3RfbWF0Y2hfZmxhZy5lbXB0eSgpKSB7Ci0gICAgcGVy
ZmVjdF9tYXRjaF9mb3VuZCA9IHRydWU7Ci0gICAgRGlzcGxheUluZm9Hcm91cCBncm91cCA9Ci0g
ICAgICAgIHsgIiIsCi0gICAgICAgICAgIj09PT09PT09PT0iLAotICAgICAgICAgICZub3RhYmxl
X2ZsYWdzLT5wZXJmZWN0X21hdGNoX2ZsYWcgfTsKLSAgICBsaW5lc19zb19mYXIgKz0gZ3JvdXAu
U2l6ZUluTGluZXMoKTsKLSAgICBvdXRwdXRfZ3JvdXBzLnB1c2hfYmFjayhncm91cCk7Ci0gIH0K
LSAgaWYgKGxpbmVzX3NvX2ZhciA8IG1heF9kZXNpcmVkX2xpbmVzICYmCi0gICAgICAhbm90YWJs
ZV9mbGFncy0+bW9kdWxlX2ZsYWdzLmVtcHR5KCkpIHsKLSAgICBEaXNwbGF5SW5mb0dyb3VwIGdy
b3VwID0gewotICAgICAgICAiLSogTWF0Y2hpbmcgbW9kdWxlIGZsYWdzICotIiwKLSAgICAgICAg
Ij09PT09PT09PT09PT09PT09PT09PT09PT09PSIsCi0gICAgICAgICZub3RhYmxlX2ZsYWdzLT5t
b2R1bGVfZmxhZ3MgfTsKLSAgICBsaW5lc19zb19mYXIgKz0gZ3JvdXAuU2l6ZUluTGluZXMoKTsK
LSAgICBvdXRwdXRfZ3JvdXBzLnB1c2hfYmFjayhncm91cCk7Ci0gIH0KLSAgaWYgKGxpbmVzX3Nv
X2ZhciA8IG1heF9kZXNpcmVkX2xpbmVzICYmCi0gICAgICAhbm90YWJsZV9mbGFncy0+cGFja2Fn
ZV9mbGFncy5lbXB0eSgpKSB7Ci0gICAgRGlzcGxheUluZm9Hcm91cCBncm91cCA9IHsKLSAgICAg
ICAgIi0qIE1hdGNoaW5nIHBhY2thZ2UgZmxhZ3MgKi0iLAotICAgICAgICAiPT09PT09PT09PT09
PT09PT09PT09PT09PT09PSIsCi0gICAgICAgICZub3RhYmxlX2ZsYWdzLT5wYWNrYWdlX2ZsYWdz
IH07Ci0gICAgbGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxpbmVzKCk7Ci0gICAgb3V0cHV0
X2dyb3Vwcy5wdXNoX2JhY2soZ3JvdXApOwotICB9Ci0gIGlmIChsaW5lc19zb19mYXIgPCBtYXhf
ZGVzaXJlZF9saW5lcyAmJgotICAgICAgIW5vdGFibGVfZmxhZ3MtPm1vc3RfY29tbW9uX2ZsYWdz
LmVtcHR5KCkpIHsKLSAgICBEaXNwbGF5SW5mb0dyb3VwIGdyb3VwID0gewotICAgICAgICAiLSog
Q29tbW9ubHkgdXNlZCBmbGFncyAqLSIsCi0gICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09
PT09IiwKLSAgICAgICAgJm5vdGFibGVfZmxhZ3MtPm1vc3RfY29tbW9uX2ZsYWdzIH07Ci0gICAg
bGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxpbmVzKCk7Ci0gICAgb3V0cHV0X2dyb3Vwcy5w
dXNoX2JhY2soZ3JvdXApOwotICB9Ci0gIGlmIChsaW5lc19zb19mYXIgPCBtYXhfZGVzaXJlZF9s
aW5lcyAmJgotICAgICAgIW5vdGFibGVfZmxhZ3MtPnN1YnBhY2thZ2VfZmxhZ3MuZW1wdHkoKSkg
ewotICAgIERpc3BsYXlJbmZvR3JvdXAgZ3JvdXAgPSB7Ci0gICAgICAgICItKiBNYXRjaGluZyBz
dWItcGFja2FnZSBmbGFncyAqLSIsCi0gICAgICAgICI9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSIsCi0gICAgICAgICZub3RhYmxlX2ZsYWdzLT5zdWJwYWNrYWdlX2ZsYWdzIH07Ci0g
ICAgbGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxpbmVzKCk7Ci0gICAgb3V0cHV0X2dyb3Vw
cy5wdXNoX2JhY2soZ3JvdXApOwotICB9Ci0KLSAgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0lu
Zm8gKj4gb2JzY3VyZV9mbGFnczsgIC8vIGZsYWdzIG5vdCBub3RhYmxlCi0gIGlmIChsaW5lc19z
b19mYXIgPCBtYXhfZGVzaXJlZF9saW5lcykgewotICAgIFJldHJpZXZlVW51c2VkRmxhZ3MobWF0
Y2hpbmdfZmxhZ3MsICpub3RhYmxlX2ZsYWdzLCAmb2JzY3VyZV9mbGFncyk7Ci0gICAgaWYgKCFv
YnNjdXJlX2ZsYWdzLmVtcHR5KCkpIHsKLSAgICAgIERpc3BsYXlJbmZvR3JvdXAgZ3JvdXAgPSB7
Ci0gICAgICAgICAgIi0qIE90aGVyIGZsYWdzICotIiwKLSAgICAgICAgICAiIiwKLSAgICAgICAg
ICAmb2JzY3VyZV9mbGFncyB9OwotICAgICAgbGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxp
bmVzKCk7Ci0gICAgICBvdXRwdXRfZ3JvdXBzLnB1c2hfYmFjayhncm91cCk7Ci0gICAgfQotICB9
Ci0KLSAgLy8gU2Vjb25kLCBnbyB0aHJvdWdoIGVhY2ggb2YgdGhlIGNob3NlbiBvdXRwdXQgZ3Jv
dXBzIGFuZCBvdXRwdXQKLSAgLy8gYXMgbWFueSBvZiB0aG9zZSBmbGFncyBhcyB3ZSBjYW4sIHdo
aWxlIHJlbWFpbmluZyBiZWxvdyBvdXIgbGltaXQKLSAgaW50IHJlbWFpbmluZ19saW5lcyA9IG1h
eF9kZXNpcmVkX2xpbmVzOwotICBzaXplX3QgY29tcGxldGlvbnNfb3V0cHV0ID0gMDsKLSAgaW50
IGluZGVudCA9IHN0YXRpY19jYXN0PGludD4ob3V0cHV0X2dyb3Vwcy5zaXplKCkpIC0gMTsKLSAg
Zm9yICh2ZWN0b3I8RGlzcGxheUluZm9Hcm91cD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0KLSAgICAg
ICAgb3V0cHV0X2dyb3Vwcy5iZWdpbigpOwotICAgICAgaXQgIT0gb3V0cHV0X2dyb3Vwcy5lbmQo
KTsKLSAgICAgICsraXQsIC0taW5kZW50KSB7Ci0gICAgT3V0cHV0U2luZ2xlR3JvdXBXaXRoTGlt
aXQoCi0gICAgICAgICppdC0+Z3JvdXAsICAvLyBncm91cAotICAgICAgICBzdHJpbmcoaW5kZW50
LCAnICcpLCAgLy8gbGluZSBpbmRlbnRhdGlvbgotICAgICAgICBzdHJpbmcoaXQtPmhlYWRlciks
ICAvLyBoZWFkZXIKLSAgICAgICAgc3RyaW5nKGl0LT5mb290ZXIpLCAgLy8gZm9vdGVyCi0gICAg
ICAgIHBlcmZlY3RfbWF0Y2hfZm91bmQsICAvLyBsb25nIGZvcm1hdAotICAgICAgICAmcmVtYWlu
aW5nX2xpbmVzLCAgLy8gbGluZSBsaW1pdCAtIHJlZHVjZXMgdGhpcyBieSBudW1iZXIgcHJpbnRl
ZAotICAgICAgICAmY29tcGxldGlvbnNfb3V0cHV0LCAgLy8gY29tcGxldGlvbnMgKG5vdCBsaW5l
cykgYWRkZWQKLSAgICAgICAgY29tcGxldGlvbnMpOyAgLy8gcHJvZHVjZWQgY29tcGxldGlvbnMK
LSAgICBwZXJmZWN0X21hdGNoX2ZvdW5kID0gZmFsc2U7Ci0gIH0KLQotICBpZiAoY29tcGxldGlv
bnNfb3V0cHV0ICE9IG1hdGNoaW5nX2ZsYWdzLnNpemUoKSkgewotICAgIG9wdGlvbnMtPmZvcmNl
X25vX3VwZGF0ZSA9IGZhbHNlOwotICAgIGNvbXBsZXRpb25zLT5wdXNoX2JhY2soIn4gKFJlbWFp
bmluZyBmbGFncyBoaWRkZW4pIH4iKTsKLSAgfSBlbHNlIHsKLSAgICBvcHRpb25zLT5mb3JjZV9u
b191cGRhdGUgPSB0cnVlOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIFJldHJpZXZlVW51c2VkRmxh
Z3MoCi0gICAgY29uc3Qgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gJm1hdGNoaW5n
X2ZsYWdzLAotICAgIGNvbnN0IE5vdGFibGVGbGFncyAmbm90YWJsZV9mbGFncywKLSAgICBzZXQ8
Y29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyAqPiAqdW51c2VkX2ZsYWdzKSB7Ci0gIC8vIFJlbW92
ZSBmcm9tICdtYXRjaGluZ19mbGFncycgc2V0IGFsbCBtZW1iZXJzIG9mIHRoZSBzZXRzIG9mCi0g
IC8vIGZsYWdzIHdlJ3ZlIGFscmVhZHkgcHJpbnRlZCAoc3BlY2lmaWNhbGx5LCB0aG9zZSBpbiBu
b3RhYmxlX2ZsYWdzKQotICBmb3IgKHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9Ci0gICAgICAgIG1hdGNoaW5nX2ZsYWdzLmJlZ2luKCk7Ci0gICAg
ICBpdCAhPSBtYXRjaGluZ19mbGFncy5lbmQoKTsKLSAgICAgICsraXQpIHsKLSAgICBpZiAobm90
YWJsZV9mbGFncy5wZXJmZWN0X21hdGNoX2ZsYWcuY291bnQoKml0KSB8fAotICAgICAgICBub3Rh
YmxlX2ZsYWdzLm1vZHVsZV9mbGFncy5jb3VudCgqaXQpIHx8Ci0gICAgICAgIG5vdGFibGVfZmxh
Z3MucGFja2FnZV9mbGFncy5jb3VudCgqaXQpIHx8Ci0gICAgICAgIG5vdGFibGVfZmxhZ3MubW9z
dF9jb21tb25fZmxhZ3MuY291bnQoKml0KSB8fAotICAgICAgICBub3RhYmxlX2ZsYWdzLnN1YnBh
Y2thZ2VfZmxhZ3MuY291bnQoKml0KSkKLSAgICAgIGNvbnRpbnVlOwotICAgIHVudXNlZF9mbGFn
cy0+aW5zZXJ0KCppdCk7Ci0gIH0KLX0KLQotLy8gNSkgT3V0cHV0IG1hdGNoZXMgKGFuZCBoZWxw
ZXIgbWV0aG9kcykKLQotc3RhdGljIHZvaWQgT3V0cHV0U2luZ2xlR3JvdXBXaXRoTGltaXQoCi0g
ICAgY29uc3Qgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gKj4gJmdyb3VwLAotICAgIGNv
bnN0IHN0cmluZyAmbGluZV9pbmRlbnRhdGlvbiwKLSAgICBjb25zdCBzdHJpbmcgJmhlYWRlciwK
LSAgICBjb25zdCBzdHJpbmcgJmZvb3RlciwKLSAgICBib29sIGxvbmdfb3V0cHV0X2Zvcm1hdCwK
LSAgICBpbnQgKnJlbWFpbmluZ19saW5lX2xpbWl0LAotICAgIHNpemVfdCAqY29tcGxldGlvbl9l
bGVtZW50c19vdXRwdXQsCi0gICAgdmVjdG9yPHN0cmluZz4gKmNvbXBsZXRpb25zKSB7Ci0gIGlm
IChncm91cC5lbXB0eSgpKSByZXR1cm47Ci0gIGlmICghaGVhZGVyLmVtcHR5KCkpIHsKLSAgICBp
ZiAoKnJlbWFpbmluZ19saW5lX2xpbWl0IDwgMikgcmV0dXJuOwotICAgICpyZW1haW5pbmdfbGlu
ZV9saW1pdCAtPSAyOwotICAgIGNvbXBsZXRpb25zLT5wdXNoX2JhY2sobGluZV9pbmRlbnRhdGlv
biArIGhlYWRlcik7Ci0gICAgY29tcGxldGlvbnMtPnB1c2hfYmFjayhsaW5lX2luZGVudGF0aW9u
ICsgc3RyaW5nKGhlYWRlci5zaXplKCksICctJykpOwotICB9Ci0gIGZvciAoc2V0PGNvbnN0IENv
bW1hbmRMaW5lRmxhZ0luZm8gKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZ3JvdXAuYmVnaW4oKTsK
LSAgICAgIGl0ICE9IGdyb3VwLmVuZCgpICYmICpyZW1haW5pbmdfbGluZV9saW1pdCA+IDA7Ci0g
ICAgICArK2l0KSB7Ci0gICAgLS0qcmVtYWluaW5nX2xpbmVfbGltaXQ7Ci0gICAgKysqY29tcGxl
dGlvbl9lbGVtZW50c19vdXRwdXQ7Ci0gICAgY29tcGxldGlvbnMtPnB1c2hfYmFjaygKLSAgICAg
ICAgKGxvbmdfb3V0cHV0X2Zvcm1hdAotICAgICAgICAgID8gR2V0TG9uZ0ZsYWdMaW5lKGxpbmVf
aW5kZW50YXRpb24sICoqaXQpCi0gICAgICAgICAgOiBHZXRTaG9ydEZsYWdMaW5lKGxpbmVfaW5k
ZW50YXRpb24sICoqaXQpKSk7Ci0gIH0KLSAgaWYgKCFmb290ZXIuZW1wdHkoKSkgewotICAgIGlm
ICgqcmVtYWluaW5nX2xpbmVfbGltaXQgPCAxKSByZXR1cm47Ci0gICAgLS0qcmVtYWluaW5nX2xp
bmVfbGltaXQ7Ci0gICAgY29tcGxldGlvbnMtPnB1c2hfYmFjayhsaW5lX2luZGVudGF0aW9uICsg
Zm9vdGVyKTsKLSAgfQotfQotCi1zdGF0aWMgc3RyaW5nIEdldFNob3J0RmxhZ0xpbmUoCi0gICAg
Y29uc3Qgc3RyaW5nICZsaW5lX2luZGVudGF0aW9uLAotICAgIGNvbnN0IENvbW1hbmRMaW5lRmxh
Z0luZm8gJmluZm8pIHsKLSAgc3RyaW5nIHByZWZpeDsKLSAgYm9vbCBpc19zdHJpbmcgPSAoaW5m
by50eXBlID09ICJzdHJpbmciKTsKLSAgU1N0cmluZ1ByaW50ZigmcHJlZml4LCAiJXMtLSVzIFsl
cyVzJXNdICIsCi0gICAgICAgICAgICAgICAgbGluZV9pbmRlbnRhdGlvbi5jX3N0cigpLAotICAg
ICAgICAgICAgICAgIGluZm8ubmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgIChpc19zdHJp
bmcgPyAiJyIgOiAiIiksCi0gICAgICAgICAgICAgICAgaW5mby5kZWZhdWx0X3ZhbHVlLmNfc3Ry
KCksCi0gICAgICAgICAgICAgICAgKGlzX3N0cmluZyA/ICInIiA6ICIiKSk7Ci0gIGludCByZW1h
aW5kZXIgPQotICAgICAgRkxBR1NfdGFiX2NvbXBsZXRpb25fY29sdW1ucyAtIHN0YXRpY19jYXN0
PGludD4ocHJlZml4LnNpemUoKSk7Ci0gIHN0cmluZyBzdWZmaXg7Ci0gIGlmIChyZW1haW5kZXIg
PiAwKQotICAgIHN1ZmZpeCA9Ci0gICAgICAgIChzdGF0aWNfY2FzdDxpbnQ+KGluZm8uZGVzY3Jp
cHRpb24uc2l6ZSgpKSA+IHJlbWFpbmRlciA/Ci0gICAgICAgICAoaW5mby5kZXNjcmlwdGlvbi5z
dWJzdHIoMCwgcmVtYWluZGVyIC0gMykgKyAiLi4uIikuY19zdHIoKSA6Ci0gICAgICAgICBpbmZv
LmRlc2NyaXB0aW9uLmNfc3RyKCkpOwotICByZXR1cm4gcHJlZml4ICsgc3VmZml4OwotfQotCi1z
dGF0aWMgc3RyaW5nIEdldExvbmdGbGFnTGluZSgKLSAgICBjb25zdCBzdHJpbmcgJmxpbmVfaW5k
ZW50YXRpb24sCi0gICAgY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyAmaW5mbykgewotCi0gIHN0
cmluZyBvdXRwdXQgPSBEZXNjcmliZU9uZUZsYWcoaW5mbyk7Ci0KLSAgLy8gUmVwbGFjZSAnLScg
d2l0aCAnLS0nLCBhbmQgcmVtb3ZlIHRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIGFwcGVuZGluZwot
ICAvLyB0aGUgbW9kdWxlIGRlZmluaXRpb24gbG9jYXRpb24uCi0gIHN0cmluZyBvbGRfZmxhZ25h
bWUgPSAiLSIgKyBpbmZvLm5hbWU7Ci0gIG91dHB1dC5yZXBsYWNlKAotICAgICAgb3V0cHV0LmZp
bmQob2xkX2ZsYWduYW1lKSwKLSAgICAgIG9sZF9mbGFnbmFtZS5zaXplKCksCi0gICAgICAiLSIg
KyBvbGRfZmxhZ25hbWUpOwotICAvLyBTdGljayBhIG5ld2xpbmUgYW5kIGluZGVudGF0aW9uIGlu
IGZyb250IG9mIHRoZSB0eXBlIGFuZCBkZWZhdWx0Ci0gIC8vIHBvcnRpb25zIG9mIERlc2NyaWJl
T25lRmxhZygpcyBkZXNjcmlwdGlvbgotICBzdGF0aWMgY29uc3QgY2hhciBrTmV3bGluZVdpdGhJ
bmRlbnRbXSA9ICJcbiAgICAiOwotICBvdXRwdXQucmVwbGFjZShvdXRwdXQuZmluZCgiIHR5cGU6
IiksIDEsIHN0cmluZyhrTmV3bGluZVdpdGhJbmRlbnQpKTsKLSAgb3V0cHV0LnJlcGxhY2Uob3V0
cHV0LmZpbmQoIiBkZWZhdWx0OiIpLCAxLCBzdHJpbmcoa05ld2xpbmVXaXRoSW5kZW50KSk7Ci0g
IG91dHB1dCA9IFN0cmluZ1ByaW50ZigiJXMgRGV0YWlscyBmb3IgJy0tJXMnOlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgIiVzICAgIGRlZmluZWQ6ICVzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmVfaW5kZW50YXRpb24uY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGluZm8ubmFtZS5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmNfc3Ry
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmZpbGVuYW1lLmNfc3RyKCkpOwotCi0g
IC8vIEVsaW1pbmF0ZSBhbnkgZG91YmxlZCBuZXdsaW5lcyB0aGF0IGNyZXB0IGluLiAgU3BlY2lm
aWNhbGx5LCBpZgotICAvLyBEZXNjcmliZU9uZUZsYWcoKSBkZWNpZGVkIHRvIGJyZWFrIHRoZSBs
aW5lIGp1c3QgYmVmb3JlICJ0eXBlIgotICAvLyBvciAiZGVmYXVsdCIsIHdlIGRvbid0IHdhbnQg
dG8gaW50cm9kdWNlIGFuIGV4dHJhIGJsYW5rIGxpbmUKLSAgc3RhdGljIGNvbnN0IHN0cmluZyBs
aW5lX29mX3NwYWNlcyhGTEFHU190YWJfY29tcGxldGlvbl9jb2x1bW5zLCAnICcpOwotICBzdGF0
aWMgY29uc3QgY2hhciBrRG91YmxlZE5ld2xpbmVzW10gPSAiXG4gICAgIFxuIjsKLSAgZm9yIChz
dHJpbmc6OnNpemVfdHlwZSBuZXdsaW5lcyA9IG91dHB1dC5maW5kKGtEb3VibGVkTmV3bGluZXMp
OwotICAgICAgbmV3bGluZXMgIT0gc3RyaW5nOjpucG9zOwotICAgICAgbmV3bGluZXMgPSBvdXRw
dXQuZmluZChrRG91YmxlZE5ld2xpbmVzKSkKLSAgICAvLyBSZXBsYWNlIGVhY2ggJ2RvdWJsZWQg
bmV3bGluZScgd2l0aCBhIHNpbmdsZSBuZXdsaW5lCi0gICAgb3V0cHV0LnJlcGxhY2UobmV3bGlu
ZXMsIHNpemVvZihrRG91YmxlZE5ld2xpbmVzKSAtIDEsIHN0cmluZygiXG4iKSk7Ci0KLSAgZm9y
IChzdHJpbmc6OnNpemVfdHlwZSBuZXdsaW5lID0gb3V0cHV0LmZpbmQoJ1xuJyk7Ci0gICAgICBu
ZXdsaW5lICE9IHN0cmluZzo6bnBvczsKLSAgICAgIG5ld2xpbmUgPSBvdXRwdXQuZmluZCgnXG4n
KSkgewotICAgIGludCBuZXdsaW5lX3BvcyA9IHN0YXRpY19jYXN0PGludD4obmV3bGluZSkgJSBG
TEFHU190YWJfY29tcGxldGlvbl9jb2x1bW5zOwotICAgIGludCBtaXNzaW5nX3NwYWNlcyA9IEZM
QUdTX3RhYl9jb21wbGV0aW9uX2NvbHVtbnMgLSBuZXdsaW5lX3BvczsKLSAgICBvdXRwdXQucmVw
bGFjZShuZXdsaW5lLCAxLCBsaW5lX29mX3NwYWNlcywgMSwgbWlzc2luZ19zcGFjZXMpOwotICB9
Ci0gIHJldHVybiBvdXRwdXQ7Ci19Ci19ICAvLyBhbm9ueW1vdXMKLQotdm9pZCBIYW5kbGVDb21t
YW5kTGluZUNvbXBsZXRpb25zKHZvaWQpIHsKLSAgaWYgKEZMQUdTX3RhYl9jb21wbGV0aW9uX3dv
cmQuZW1wdHkoKSkgcmV0dXJuOwotICBQcmludEZsYWdDb21wbGV0aW9uSW5mbygpOwotICBnZmxh
Z3NfZXhpdGZ1bmMoMCk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuaC5pbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2Nv
bXBsZXRpb25zLmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyN2U1ZmRhMTE0
NDBhMjg4MWEzYTE2ZmZmNDI0MGI2ZTRkNTNkOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuaC5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIC0tLQotCi0vLwotLy8gSW1wbGVtZW50IGhlbHBmdWwg
YmFzaC1zdHlsZSBjb21tYW5kIGxpbmUgZmxhZyBjb21wbGV0aW9ucwotLy8KLS8vICoqIEZ1bmN0
aW9uYWwgQVBJOgotLy8gSGFuZGxlQ29tbWFuZExpbmVDb21wbGV0aW9ucygpIHNob3VsZCBiZSBj
YWxsZWQgZWFybHkgZHVyaW5nCi0vLyBwcm9ncmFtIHN0YXJ0dXAsIGJ1dCBhZnRlciBjb21tYW5k
IGxpbmUgZmxhZyBjb2RlIGhhcyBiZWVuCi0vLyBpbml0aWFsaXplZCwgc3VjaCBhcyB0aGUgYmVn
aW5uaW5nIG9mIEhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzKCkuCi0vLyBJdCBjaGVja3MgdGhl
IHZhbHVlIG9mIHRoZSBmbGFnIC0tdGFiX2NvbXBsZXRpb25fd29yZC4gIElmIHRoaXMKLS8vIGZs
YWcgaXMgZW1wdHksIG5vdGhpbmcgaGFwcGVucyBoZXJlLiAgSWYgaXQgY29udGFpbnMgYSBzdHJp
bmcsCi0vLyBob3dldmVyLCB0aGVuIEhhbmRsZUNvbW1hbmRMaW5lQ29tcGxldGlvbnMoKSB3aWxs
IGhpamFjayB0aGUKLS8vIHByb2Nlc3MsIGF0dGVtcHRpbmcgdG8gaWRlbnRpZnkgdGhlIGludGVu
dGlvbiBiZWhpbmQgdGhpcwotLy8gY29tcGxldGlvbi4gIFJlZ2FyZGxlc3Mgb2YgdGhlIG91dGNv
bWUgb2YgdGhpcyBkZWR1Y3Rpb24sIHRoZQotLy8gcHJvY2VzcyB3aWxsIGJlIHRlcm1pbmF0ZWQs
IHNpbWlsYXIgdG8gLS1oZWxwc2hvcnQgZmxhZwotLy8gaGFuZGxpbmcuCi0vLwotLy8gKiogT3Zl
cnZpZXcgb2YgQmFzaCBjb21wbGV0aW9uczoKLS8vIEJhc2ggY2FuIGJlIHRvbGQgdG8gcHJvZ3Jh
bWF0aWNhbGx5IGRldGVybWluZSBjb21wbGV0aW9ucyBmb3IgdGhlCi0vLyBjdXJyZW50ICdjdXJz
b3Igd29yZCcuICBJdCBkb2VzIHRoaXMgYnkgKGluIHRoaXMgY2FzZSkgaW52b2tpbmcgYQotLy8g
Y29tbWFuZCB3aXRoIHNvbWUgYWRkaXRpb25hbCBhcmd1bWVudHMgaWRlbnRpZnlpbmcgdGhlIGNv
bW1hbmQKLS8vIGJlaW5nIGV4ZWN1dGVkLCB0aGUgd29yZCBiZWluZyBjb21wbGV0ZWQsIGFuZCB0
aGUgcHJldmlvdXMgd29yZAotLy8gKGlmIGFueSkuICBCYXNoIHRoZW4gZXhwZWN0cyBhIHNlcXVl
bmNlIG9mIG91dHB1dCBsaW5lcyB0byBiZQotLy8gcHJpbnRlZCB0byBzdGRvdXQuICBJZiB0aGVz
ZSBsaW5lcyBhbGwgY29udGFpbiBhIGNvbW1vbiBwcmVmaXgKLS8vIGxvbmdlciB0aGFuIHRoZSBj
dXJzb3Igd29yZCwgYmFzaCB3aWxsIHJlcGxhY2UgdGhlIGN1cnNvciB3b3JkCi0vLyB3aXRoIHRo
YXQgY29tbW9uIHByZWZpeCwgYW5kIGRpc3BsYXkgbm90aGluZy4gIElmIHRoZXJlIGlzbid0IHN1
Y2gKLS8vIGEgY29tbW9uIHByZWZpeCwgYmFzaCB3aWxsIGRpc3BsYXkgdGhlIGxpbmVzIGluIHBh
Z2VzIHVzaW5nICdtb3JlJy4KLS8vCi0vLyAqKiBTdHJhdGVneSB0YWtlbiBmb3IgY29tbWFuZCBs
aW5lIGNvbXBsZXRpb25zOgotLy8gSWYgd2UgY2FuIGRlZHVjZSBlaXRoZXIgdGhlIGV4YWN0IGZs
YWcgaW50ZW5kZWQsIG9yIGEgY29tbW9uIGZsYWcKLS8vIHByZWZpeCwgd2UnbGwgb3V0cHV0IGV4
YWN0bHkgdGhhdC4gIE90aGVyd2lzZSwgaWYgaW5mb3JtYXRpb24KLS8vIG11c3QgYmUgZGlzcGxh
eWVkIHRvIHRoZSB1c2VyLCB3ZSdsbCB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBhZGQKLS8vIHNv
bWUgaGVscGZ1bCBpbmZvcm1hdGlvbiBiZXlvbmQganVzdCB0aGUgZmxhZyBuYW1lIChzcGVjaWZp
Y2FsbHksCi0vLyB3ZSdsbCBpbmNsdWRlIHRoZSBkZWZhdWx0IGZsYWcgdmFsdWUgYW5kIGFzIG11
Y2ggb2YgdGhlIGZsYWcncwotLy8gZGVzY3JpcHRpb24gYXMgY2FuIGZpdCBvbiBhIHNpbmdsZSB0
ZXJtaW5hbCBsaW5lIHdpZHRoLCBhcyBzcGVjaWZpZWQKLS8vIGJ5IHRoZSBmbGFnIC0tdGFiX2Nv
bXBsZXRpb25fY29sdW1ucykuICBGdXJ0aGVybW9yZSwgd2UnbGwgdHJ5IHRvCi0vLyBtYWtlIGJh
c2ggb3JkZXIgdGhlIG91dHB1dCBzdWNoIHRoYXQgdGhlIG1vc3QgdXNlZnVsIG9yIHJlbGV2ZW50
Ci0vLyBmbGFncyBhcmUgdGhlIG1vc3QgbGlrZWx5IHRvIGJlIHNob3duIGF0IHRoZSB0b3AuCi0v
LwotLy8gKiogQWRkaXRpb25hbCBmZWF0dXJlczoKLS8vIFRvIGFzc2lzdCBpbiBmaW5kaW5nIHRo
YXQgb25lIHJlYWxseSB1c2VmdWwgZmxhZywgc3Vic3RyaW5nIG1hdGNoaW5nCi0vLyB3YXMgaW1w
bGVtZW50ZWQuICBCZWZvcmUgcHJlc3NpbmcgYSA8VEFCPiB0byBnZXQgY29tcGxldGlvbiBmb3Ig
dGhlCi0vLyBjdXJyZW50IHdvcmQsIHlvdSBjYW4gYXBwZW5kIG9uZSBvciBtb3JlICc/JyB0byB0
aGUgZmxhZyB0byBkbwotLy8gc3Vic3RyaW5nIG1hdGNoaW5nLiAgSGVyZSdzIHRoZSBzZW1hbnRp
Y3M6Ci0vLyAgIC0tZm9vPFRBQj4gICAgIFNob3cgbWUgYWxsIGZsYWdzIHdpdGggbmFtZXMgcHJl
Zml4ZWQgYnkgJ2ZvbycKLS8vICAgLS1mb28/PFRBQj4gICAgU2hvdyBtZSBhbGwgZmxhZ3Mgd2l0
aCAnZm9vJyBzb21ld2hlcmUgaW4gdGhlIG5hbWUKLS8vICAgLS1mb28/PzxUQUI+ICAgU2FtZSBh
cyBwcmlvciBjYXNlLCBidXQgYWxzbyBzZWFyY2ggaW4gbW9kdWxlCi0vLyAgICAgICAgICAgICAg
ICAgIGRlZmluaXRpb24gcGF0aCBmb3IgJ2ZvbycKLS8vICAgLS1mb28/Pz88VEFCPiAgU2FtZSBh
cyBwcmlvciBjYXNlLCBidXQgYWxzbyBzZWFyY2ggaW4gZmxhZwotLy8gICAgICAgICAgICAgICAg
ICBkZXNjcmlwdGlvbnMgZm9yICdmb28nCi0vLyBGaW5hbGx5LCB3ZSdsbCB0cmltIHRoZSBvdXRw
dXQgdG8gYSByZWxhdGl2ZWx5IHNtYWxsIG51bWJlciBvZgotLy8gZmxhZ3MgdG8ga2VlcCBiYXNo
IHF1aWV0IGFib3V0IHRoZSB2ZXJib3NpdHkgb2Ygb3V0cHV0LiAgSWYgb25lCi0vLyByZWFsbHkg
d2FudGVkIHRvIHNlZSBhbGwgcG9zc2libGUgbWF0Y2hlcywgYXBwZW5kaW5nIGEgJysnIHRvIHRo
ZQotLy8gc2VhcmNoIHdvcmQgd2lsbCBmb3JjZSB0aGUgZXhoYXVzdGl2ZSBsaXN0IG9mIG1hdGNo
ZXMgdG8gYmUgcHJpbnRlZC4KLS8vCi0vLyAqKiBIb3cgdG8gaGF2ZSBiYXNoIGFjY2VwdCBjb21w
bGV0aW9ucyBmcm9tIGEgYmluYXJ5OgotLy8gQmFzaCByZXF1aXJlcyB0aGF0IGl0IGJlIGluZm9y
bWVkIGFib3V0IGVhY2ggY29tbWFuZCB0aGF0IHByb2dyYW1tYXRpYwotLy8gY29tcGxldGlvbiBz
aG91bGQgYmUgZW5hYmxlZCBmb3IuICBFeGFtcGxlIGFkZGl0aW9uIHRvIGEgLmJhc2hyYwotLy8g
ZmlsZSB3b3VsZCBiZSAoeW91ciBwYXRoIHRvIGdmbGFnc19jb21wbGV0aW9ucy5zaCBmaWxlIG1h
eSBkaWZmZXIpOgotCi0vKgotJCBjb21wbGV0ZSAtbyBiYXNoZGVmYXVsdCAtbyBkZWZhdWx0IC1v
IG5vc3BhY2UgLUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICcvaG9tZS9idWlsZC9l
bmcvYmFzaC9iYXNoX2NvbXBsZXRpb25zLnNoIC0tdGFiX2NvbXBsZXRpb25fY29sdW1ucyAkQ09M
VU1OUycgXAotICB0aW1lICBlbnYgIGJpbmFyeV9uYW1lICBhbm90aGVyX2JpbmFyeSAgWy4uLl0K
LSovCi0KLS8vIFRoaXMgd291bGQgYWxsb3cgdGhlIGZvbGxvd2luZyB0byB3b3JrOgotLy8gICAk
IC9wYXRoL3RvL2JpbmFyeV9uYW1lIC0tdm1vZHVsZTxUQUI+Ci0vLyBPcjoKLS8vICAgJCAuL2Jp
bi9wYXRoL2Fub3RoZXJfYmluYXJ5IC0tZ2ZzX3U8VEFCPgotLy8gKGV0YykKLS8vCi0vLyBTYWRs
eSwgaXQgYXBwZWFycyB0aGF0IGJhc2ggZ2l2ZXMgbm8gZWFzeSB3YXkgdG8gZm9yY2UgdGhpcyBi
ZWhhdmlvciBmb3IKLS8vIGFsbCBjb21tYW5kcy4gIFRoYXQncyB3aGVyZSB0aGUgInRpbWUiIGlu
IHRoZSBhYm92ZSBleGFtcGxlIGNvbWVzIGluLgotLy8gSWYgeW91IGhhdmVuJ3Qgc3BlY2lmaWNh
bGx5IGFkZGVkIGEgY29tbWFuZCB0byB0aGUgbGlzdCBvZiBjb21wbGV0aW9uCi0vLyBzdXBwb3J0
ZWQgY29tbWFuZHMsIHlvdSBjYW4gc3RpbGwgZ2V0IGNvbXBsZXRpb25zIGJ5IHByZWZpeGluZyB0
aGUKLS8vIGVudGlyZSBjb21tYW5kIHdpdGggImVudiIuCi0vLyAgICQgZW52IC9zb21lL2JyYW5k
L25ldy9iaW5hcnkgLS12bW9kPFRBQj4KLS8vIEFzc3VtaW5nIHRoYXQgImJpbmFyeSIgaXMgYSBu
ZXdseSBjb21waWxlZCBiaW5hcnksIHRoaXMgc2hvdWxkIHN0aWxsCi0vLyBwcm9kdWNlIHRoZSBl
eHBlY3RlZCBjb21wbGV0aW9uIG91dHB1dC4KLQotCi0jaWZuZGVmIEdGTEFHU19DT01QTEVUSU9O
U19IXwotI2RlZmluZSBHRkxBR1NfQ09NUExFVElPTlNfSF8KLQotbmFtZXNwYWNlIEBHRkxBR1Nf
TkFNRVNQQUNFQCB7Ci0KLWV4dGVybiB2b2lkIEhhbmRsZUNvbW1hbmRMaW5lQ29tcGxldGlvbnMo
dm9pZCk7Ci0KLX0KLQotI2VuZGlmICAvLyBHRkxBR1NfQ09NUExFVElPTlNfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25zLnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMu
c2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM1ZmI3ZTZiYzU3YmY3MWZmMTQ4NzIx
ZmYxODA4MDc4NDlhYzNiNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTcgKzAsMCBAQAotIyEvYmluL2Jhc2gKLQotIyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIwotIyAtLS0K
LSMgQXV0aG9yOiBEYXZlIE5pY3BvbnNraQotIwotIyBUaGlzIHNjcmlwdCBpcyBpbnZva2VkIGJ5
IGJhc2ggaW4gcmVzcG9uc2UgdG8gYSBtYXRjaGluZyBjb21wc3BlYy4gIFdoZW4KLSMgdGhpcyBo
YXBwZW5zLCBiYXNoIGNhbGxzIHRoaXMgc2NyaXB0IHVzaW5nIHRoZSBjb21tYW5kIHNob3duIGlu
IHRoZSAtQwotIyBibG9jayBvZiB0aGUgY29tcGxldGUgZW50cnksIGJ1dCBhbHNvIGFwcGVuZHMg
MyBhcmd1bWVudHMuICBUaGV5IGFyZToKLSMgICAtIFRoZSBjb21tYW5kIGJlaW5nIHVzZWQgZm9y
IGNvbXBsZXRpb24KLSMgICAtIFRoZSB3b3JkIGJlaW5nIGNvbXBsZXRlZAotIyAgIC0gVGhlIHdv
cmQgcHJlY2VkaW5nIHRoZSBjb21wbGV0aW9uIHdvcmQuCi0jCi0jIEhlcmUncyBhbiBleGFtcGxl
IG9mIGhvdyB5b3UgbWlnaHQgdXNlIHRoaXMgc2NyaXB0OgotIyAkIGNvbXBsZXRlIC1vIGJhc2hk
ZWZhdWx0IC1vIGRlZmF1bHQgLW8gbm9zcGFjZSAtQyAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0jICAgJy91c3IvbG9jYWwvYmluL2dmbGFnc19jb21wbGV0aW9ucy5zaCAtLXRhYl9jb21wbGV0
aW9uX2NvbHVtbnMgJENPTFVNTlMnIFwKLSMgICB0aW1lICBlbnYgIGJpbmFyeV9uYW1lICBhbm90
aGVyX2JpbmFyeSAgWy4uLl0KLQotIyBjb21wbGV0aW9uX3dvcmRfaW5kZXggZ2V0cyB0aGUgaW5k
ZXggb2YgdGhlIChOLTEpdGggYXJndW1lbnQgZm9yCi0jIHRoaXMgY29tbWFuZCBsaW5lLiAgY29t
cGxldGlvbl93b3JkIGdldHMgdGhlIGFjdHVhbCBhcmd1bWVudCBmcm9tCi0jIHRoaXMgY29tbWFu
ZCBsaW5lIGF0IHRoZSAoTi0xKXRoIHBvc2l0aW9uCi1jb21wbGV0aW9uX3dvcmRfaW5kZXg9IiQo
KCQjIC0gMSkpIgotY29tcGxldGlvbl93b3JkPSIkeyFjb21wbGV0aW9uX3dvcmRfaW5kZXh9Igot
Ci0jIFRPRE8odXNlcik6IFJlcGxhY2UgdGhpcyBvbmNlIGdmbGFnc19jb21wbGV0aW9ucy5jYyBo
YXMKLSMgYSBib29sIHBhcmFtZXRlciBpbmRpY2F0aW5nIHVuYW1iaWd1b3VzbHkgdG8gaGlqYWNr
IHRoZSBwcm9jZXNzIGZvcgotIyBjb21wbGV0aW9uIHB1cnBvc2VzLgotaWYgWyAteiAiJGNvbXBs
ZXRpb25fd29yZCIgXTsgdGhlbgotICAjIFVudGlsIGFuIGVtcHR5IHZhbHVlIGZvciB0aGUgY29t
cGxldGlvbiB3b3JkIHN0b3BzIGJlaW5nIG1pc3VuZGVyc3Rvb2QKLSAgIyBieSBiaW5hcmllcywg
ZG9uJ3QgYWN0dWFsbHkgZXhlY3V0ZSB0aGUgYmluYXJ5IG9yIHRoZSBwcm9jZXNzCi0gICMgd29u
J3QgYmUgaGlqYWNrZWQhCi0gIGV4aXQgMAotZmkKLQotIyBiaW5hcnlfaW5kZXggZ2V0cyB0aGUg
aW5kZXggb2YgdGhlIGNvbW1hbmQgYmVpbmcgY29tcGxldGVkICh3aGljaCBiYXNoCi0jIHBsYWNl
cyBpbiB0aGUgKE4tMiluZCBwb3NpdGlvbi4gIGJpbmFyeSBnZXRzIHRoZSBhY3R1YWwgY29tbWFu
ZCBmcm9tCi0jIHRoaXMgY29tbWFuZCBsaW5lIGF0IHRoYXQgKE4tMiluZCBwb3NpdGlvbgotYmlu
YXJ5X2luZGV4PSIkKCgkIyAtIDIpKSIKLWJpbmFyeT0iJHshYmluYXJ5X2luZGV4fSIKLQotIyBG
b3IgY29tcGxldGlvbnMgdG8gYmUgdW5pdmVyc2FsLCB3ZSBtYXkgaGF2ZSBzZXR1cCB0aGUgY29t
cHNwZWMgdG8KLSMgdHJpZ2dlciBvbiAnaGFybWxlc3MgcGFzcy10aHJvdWdoJyBjb21tYW5kcywg
bGlrZSAndGltZScgb3IgJ2VudicuCi0jIElmIHRoZSBjb21tYW5kIGJlaW5nIGNvbXBsZXRlZCBp
cyBvbmUgb2YgdGhvc2UgdHdvLCB3ZSdsbCBuZWVkIHRvCi0jIGlkZW50aWZ5IHRoZSBhY3R1YWwg
Y29tbWFuZCBiZWluZyBleGVjdXRlZC4gIFRvIGRvIHRoaXMsIHdlIG5lZWQKLSMgdGhlIGFjdHVh
bCBjb21tYW5kIGxpbmUgdGhhdCB0aGUgPFRBQj4gd2FzIHByZXNzZWQgb24uICBCYXNoIGhlbHBm
dWxseQotIyBwbGFjZXMgdGhpcyBpbiB0aGUgJENPTVBfTElORSB2YXJpYWJsZS4KLWlmIFsgIiRi
aW5hcnkiID09ICJ0aW1lIiBdIHx8IFsgIiRiaW5hcnkiID09ICJlbnYiIF07IHRoZW4KLSAgIyB3
ZSdsbCBhc3N1bWUgdGhhdCB0aGUgZmlyc3QgJ2FyZ3VtZW50JyBpcyBhY3R1YWxseSB0aGUKLSAg
IyBiaW5hcnkKLQotCi0gICMgVE9ETyh1c2VyKTogVGhpcyBpcyBub3QgcGVyZmVjdCAtIHRoZSAn
ZW52JyBjb21tYW5kLCBmb3IgaW5zdGFuY2UsCi0gICMgICBpcyBhbGxvd2VkIHRvIGhhdmUgb3B0
aW9ucyBiZXR3ZWVuIHRoZSAnZW52JyBhbmQgJ3RoZSBjb21tYW5kIHRvCi0gICMgICBiZSBleGVj
dXRlZCcuICBGb3IgZXhhbXBsZSwgY29uc2lkZXI6Ci0gICMgJCBlbnYgRk9PPSJiYXIiICBiaW4v
ZG9fc29tZXRoaW5nICAtLWhlbHA8VEFCPgotICAjIEluIHRoaXMgY2FzZSwgd2UnbGwgbWlzdGFr
ZSB0aGUgRk9PPSJiYXIiIHBvcnRpb24gYXMgdGhlIGJpbmFyeS4KLSAgIyAgIFBlcmhhcHMgd2Ug
c2hvdWxkIGNvbnRpbnVpbmcgY29uc3VtaW5nIGxlYWRpbmcgd29yZHMgdW50aWwgd2UKLSAgIyAg
IGVpdGhlciBydW4gb3V0IG9mIHdvcmRzLCBvciBmaW5kIGEgd29yZCB0aGF0IGlzIGEgdmFsaWQg
ZmlsZQotICAjICAgbWFya2VkIGFzIGV4ZWN1dGFibGUuICBJIGNhbid0IHRoaW5rIG9mIGFueSBy
ZWFzb24gdGhpcyB3b3VsZG4ndAotICAjICAgd29yay4KLQotICAjIEJyZWFrIHVwIHRoZSAnb3Jp
Z2luYWwgY29tbWFuZCBsaW5lJyAobm90IHRoaXMgc2NyaXB0J3MgY29tbWFuZCBsaW5lLAotICAj
IHJhdGhlciB0aGUgb25lIHRoZSA8VEFCPiB3YXMgcHJlc3NlZCBvbikgYW5kIGZpbmQgdGhlIHNl
Y29uZCB3b3JkLgotICBwYXJ0cz0oICR7Q09NUF9MSU5FfSApCi0gIGJpbmFyeT0ke3BhcnRzWzFd
fQotZmkKLQotIyBCdWlsZCB0aGUgY29tbWFuZCBsaW5lIHRvIHVzZSBmb3IgY29tcGxldGlvbi4g
IEJhc2ljYWxseSBpdCBpbnZvbHZlcwotIyBwYXNzaW5nIHRocm91Z2ggYWxsIHRoZSBhcmd1bWVu
dHMgZ2l2ZW4gdG8gdGhpcyBzY3JpcHQgKGV4Y2VwdCB0aGUgMwotIyB0aGF0IGJhc2ggYWRkZWQp
LCBhbmQgYXBwZW5kaW5nIGEgJy0tdGFiX2NvbXBsZXRpb25fd29yZCAiV09SRCInIHRvCi0jIHRo
ZSBhcmd1bWVudHMuCi1wYXJhbXM9IiIKLWZvciAoKGk9MTsgaTw9JCgoJCMgLSAzKSk7ICsraSkp
OyBkbyAKLSAgcGFyYW1zPSIkcGFyYW1zIFwiJHshaX1cIiI7Ci1kb25lCi1wYXJhbXM9IiRwYXJh
bXMgLS10YWJfY29tcGxldGlvbl93b3JkIFwiJGNvbXBsZXRpb25fd29yZFwiIgotCi0jIFRPRE8o
dXNlcik6IFBlcmhhcHMgc3Rhc2ggdGhlIG91dHB1dCBpbiBhIHRlbXBvcmFyeSBmaWxlIHNvbWV3
aGVyZQotIyBpbiAvdG1wLCBhbmQgb25seSBjYXQgaXQgdG8gc3Rkb3V0IGlmIHRoZSBjb21tYW5k
IHJldHVybmVkIGEgc3VjY2VzcwotIyBjb2RlLCB0byBwcmV2ZW50IGZhbHNlIHBvc2l0aXZlcwot
Ci0jIElmIHdlIHRoaW5rIHdlIGhhdmUgYSByZWFzb25hYmxlIGNvbW1hbmQgdG8gZXhlY3V0ZSwg
dGhlbiBleGVjdXRlIGl0Ci0jIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KLWNhbmRpZGF0ZT0kKHR5
cGUgLXAgIiRiaW5hcnkiKQotaWYgWyAhIC16ICIkY2FuZGlkYXRlIiBdOyB0aGVuCi0gIGV2YWwg
IiRjYW5kaWRhdGUgMj4vZGV2L251bGwgJHBhcmFtcyIKLWVsaWYgWyAtZiAiJGJpbmFyeSIgXSAm
JiBbIC14ICIkYmluYXJ5IiBdOyB0aGVuCi0gIGV2YWwgIiRiaW5hcnkgMj4vZGV2L251bGwgJHBh
cmFtcyIKLWZpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19kZWNsYXJlLmguaW4gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dm
bGFnc19kZWNsYXJlLmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRiMjQ1
ZmZlYTZkYmE0OTE2OTBhNjFlNzk0MTI1YmY5ZDMxNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfZGVjbGFyZS5oLmluCisrKyAvZGV2
L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMTk5OSwgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8KLS8vIFJldmFtcGVkIGFuZCByZW9yZ2FuaXpl
ZCBieSBDcmFpZyBTaWx2ZXJzdGVpbgotLy8KLS8vIFRoaXMgaXMgdGhlIGZpbGUgdGhhdCBzaG91
bGQgYmUgaW5jbHVkZWQgYnkgYW55IGZpbGUgd2hpY2ggZGVjbGFyZXMKLS8vIGNvbW1hbmQgbGlu
ZSBmbGFnLgotCi0jaWZuZGVmIEdGTEFHU19ERUNMQVJFX0hfCi0jZGVmaW5lIEdGTEFHU19ERUNM
QVJFX0hfCi0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOYW1lc3BhY2Ugb2YgZ2ZsYWdz
IGxpYnJhcnkgc3ltYm9scy4KLSNkZWZpbmUgR0ZMQUdTX05BTUVTUEFDRSBAR0ZMQUdTX05BTUVT
UEFDRUAKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBXaW5kb3dzIERMTCBpbXBvcnQvZXhw
b3J0LgotCi0vLyBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgdGhlIHN5bWJvbHMgb2YgdGhlIGdm
bGFncyBsaWJyYXJ5Ci0jaWZuZGVmIEdGTEFHU19ETExfREVDTAotIyAgaWYgQEdGTEFHU19JU19B
X0RMTEAgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTCBf
X2RlY2xzcGVjKGRsbGltcG9ydCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVD
TAotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgdmFyaWFi
bGVzIGRlY2xhcmVkIGluIHVzZXIgY29kZQotI2lmbmRlZiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxB
RwotIyAgaWZkZWYgX01TQ19WRVIKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTEFSRV9GTEFH
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9E
RUNMQVJFX0ZMQUcKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0v
LyBGbGFnIHR5cGVzCi0jaW5jbHVkZSA8c3RyaW5nPgotI2lmIEBIQVZFX1NURElOVF9IQAotIyAg
aW5jbHVkZSA8c3RkaW50Lmg+ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBub3JtYWwgcGxhY2Ug
dWludDMyX3QgaXMgZGVmaW5lZAotI2VsaWYgQEhBVkVfU1lTX1RZUEVTX0hACi0jICBpbmNsdWRl
IDxzeXMvdHlwZXMuaD4gICAgICAgICAgICAgICAgLy8gdGhlIG5vcm1hbCBwbGFjZSB1X2ludDMy
X3QgaXMgZGVmaW5lZAotI2VsaWYgQEhBVkVfSU5UVFlQRVNfSEAKLSMgIGluY2x1ZGUgPGludHR5
cGVzLmg+ICAgICAgICAgICAgICAgICAvLyBhIHRoaXJkIHBsYWNlIGZvciB1aW50MzJfdCBvciB1
X2ludDMyX3QKLSNlbmRpZgotCi1uYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRSB7Ci0KLSNpZiBA
R0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVF9DOTlAIC8vIEM5OQotdHlwZWRlZiBpbnQzMl90ICAgICAg
ICAgIGludDMyOwotdHlwZWRlZiB1aW50MzJfdCAgICAgICAgIHVpbnQzMjsKLXR5cGVkZWYgaW50
NjRfdCAgICAgICAgICBpbnQ2NDsKLXR5cGVkZWYgdWludDY0X3QgICAgICAgICB1aW50NjQ7Ci0j
ZWxpZiBAR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVF9CU0RAIC8vIEJTRAotdHlwZWRlZiBpbnQzMl90
ICAgICAgICAgIGludDMyOwotdHlwZWRlZiB1X2ludDMyX3QgICAgICAgIHVpbnQzMjsKLXR5cGVk
ZWYgaW50NjRfdCAgICAgICAgICBpbnQ2NDsKLXR5cGVkZWYgdV9pbnQ2NF90ICAgICAgICB1aW50
NjQ7Ci0jZWxpZiBAR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVF9WQzdAIC8vIFdpbmRvd3MKLXR5cGVk
ZWYgX19pbnQzMiAgICAgICAgICBpbnQzMjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50
MzI7Ci10eXBlZGVmIF9faW50NjQgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIF9f
aW50NjQgdWludDY0OwotI2Vsc2UKLSMgIGVycm9yIERvIG5vdCBrbm93IGhvdyB0byBkZWZpbmUg
YSAzMi1iaXQgaW50ZWdlciBxdWFudGl0eSBvbiB5b3VyIHN5c3RlbQotI2VuZGlmCi0KLX0gLy8g
bmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UKLQotCi1uYW1lc3BhY2UgZkxTIHsKLQotLy8gVGhl
IG1lYW5pbmcgb2YgInN0cmluZyIgbWlnaHQgYmUgZGlmZmVyZW50IGJldHdlZW4gbm93IGFuZCB3
aGVuIHRoZQotLy8gbWFjcm9zIGJlbG93IGdldCBpbnZva2VkIChlLmcuLCBpZiBzb21lb25lIGlz
IGV4cGVyaW1lbnRpbmcgd2l0aAotLy8gb3RoZXIgc3RyaW5nIGltcGxlbWVudGF0aW9ucyB0aGF0
IGdldCBkZWZpbmVkIGFmdGVyIHRoaXMgZmlsZSBpcwotLy8gaW5jbHVkZWQpLiAgU2F2ZSB0aGUg
Y3VycmVudCBtZWFuaW5nIG5vdyBhbmQgdXNlIGl0IGluIHRoZSBtYWNyb3MuCi10eXBlZGVmIHN0
ZDo6c3RyaW5nIGNsc3RyaW5nOwotCi19IC8vIG5hbWVzcGFjZSBmTFMKLQotCi0jZGVmaW5lIERF
Q0xBUkVfVkFSSUFCTEUodHlwZSwgc2hvcnR0eXBlLCBuYW1lKSBcCi0gIC8qIFdlIGFsd2F5cyB3
YW50IHRvIGltcG9ydCBkZWNsYXJlZCB2YXJpYWJsZXMsIGRsbCBvciBubyAqLyBcCi0gIG5hbWVz
cGFjZSBmTCMjc2hvcnR0eXBlIHsgZXh0ZXJuIEdGTEFHU19ETExfREVDTEFSRV9GTEFHIHR5cGUg
RkxBR1NfIyNuYW1lOyB9IFwKLSAgdXNpbmcgZkwjI3Nob3J0dHlwZTo6RkxBR1NfIyNuYW1lCi0K
LSNkZWZpbmUgREVDTEFSRV9ib29sKG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRShib29sLCBC
LCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfaW50MzIobmFtZSkgXAotICBERUNMQVJFX1ZBUklB
QkxFKDo6R0ZMQUdTX05BTUVTUEFDRTo6aW50MzIsIEksIG5hbWUpCi0KLSNkZWZpbmUgREVDTEFS
RV9pbnQ2NChuYW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFCTEUoOjpHRkxBR1NfTkFNRVNQQUNFOjpp
bnQ2NCwgSTY0LCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfdWludDY0KG5hbWUpIFwKLSAgREVD
TEFSRV9WQVJJQUJMRSg6OkdGTEFHU19OQU1FU1BBQ0U6OnVpbnQ2NCwgVTY0LCBuYW1lKQotCi0j
ZGVmaW5lIERFQ0xBUkVfZG91YmxlKG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRShkb3VibGUs
IEQsIG5hbWUpCi0KLSNkZWZpbmUgREVDTEFSRV9zdHJpbmcobmFtZSkgXAotICAvKiBXZSBhbHdh
eXMgd2FudCB0byBpbXBvcnQgZGVjbGFyZWQgdmFyaWFibGVzLCBkbGwgb3Igbm8gKi8gXAotICBu
YW1lc3BhY2UgZkxTIHsgXAotICB1c2luZyA6OmZMUzo6Y2xzdHJpbmc7IFwKLSAgZXh0ZXJuIEdG
TEFHU19ETExfREVDTEFSRV9GTEFHIDo6ZkxTOjpjbHN0cmluZyYgRkxBR1NfIyNuYW1lOyBcCi0g
IH0gXAotICB1c2luZyBmTFM6OkZMQUdTXyMjbmFtZQotCi0KLSNlbmRpZiAgLy8gR0ZMQUdTX0RF
Q0xBUkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX25zLmguaW4gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19u
cy5oLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjkyNjY2Y2RiNDYzZTY0YzY5
ZjFmNDEzOWI2MjUxYjNiZGZmNmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX25zLmguaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMDEg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAyMDE0LCBBbmRyZWFzIFNjaHVoCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gSW1wb3J0cyB0aGUgZ2ZsYWdzIGxpYnJh
cnkgc3ltYm9scyBpbnRvIGFuIGFsdGVybmF0aXZlL2RlcHJlY2F0ZWQgbmFtZXNwYWNlLgotCi0j
aWZuZGVmIEdGTEFHU19HRkxBR1NfSF8KLSMgIGVycm9yIFRoZSBpbnRlcm5hbCBoZWFkZXIgZ2Zs
YWdzX0Buc0AuaCBtYXkgb25seSBiZSBpbmNsdWRlZCBieSBnZmxhZ3MuaAotI2VuZGlmCi0KLSNp
Zm5kZWYgR0ZMQUdTX05TX0BOU0BfSF8KLSNkZWZpbmUgR0ZMQUdTX05TX0BOU0BfSF8KLQotCi1u
YW1lc3BhY2UgQG5zQCB7Ci0KLQotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6aW50MzI7Ci11c2lu
ZyBHRkxBR1NfTkFNRVNQQUNFOjp1aW50MzI7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjppbnQ2
NDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OnVpbnQ2NDsKLQotdXNpbmcgR0ZMQUdTX05BTUVT
UEFDRTo6UmVnaXN0ZXJGbGFnVmFsaWRhdG9yOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6Q29t
bWFuZExpbmVGbGFnSW5mbzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFsbEZsYWdzOwot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2hvd1VzYWdlV2l0aEZsYWdzOwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6U2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3Q7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpEZXNjcmliZU9uZUZsYWc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRBcmd2
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndnM7Ci11c2luZyBHRkxBR1NfTkFNRVNQ
QUNFOjpHZXRBcmd2OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndjA7Ci11c2luZyBH
RkxBR1NfTkFNRVNQQUNFOjpHZXRBcmd2U3VtOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UHJv
Z3JhbUludm9jYXRpb25OYW1lOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UHJvZ3JhbUludm9j
YXRpb25TaG9ydE5hbWU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQcm9ncmFtVXNhZ2U7Ci11
c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpWZXJzaW9uU3RyaW5nOwotdXNpbmcgR0ZMQUdTX05BTUVT
UEFDRTo6R2V0Q29tbWFuZExpbmVPcHRpb247Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRD
b21tYW5kTGluZUZsYWdJbmZvOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0Q29tbWFuZExp
bmVGbGFnSW5mb09yRGllOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1NldHRpbmdNb2Rl
OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U0VUX0ZMQUdTX1ZBTFVFOwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6U0VUX0ZMQUdfSUZfREVGQVVMVDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OlNFVF9GTEFHU19ERUZBVUxUOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0Q29tbWFuZExp
bmVPcHRpb247Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRDb21tYW5kTGluZU9wdGlvbldp
dGhNb2RlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1NhdmVyOwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6Q29tbWFuZGxpbmVGbGFnc0ludG9TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpSZWFkRmxhZ3NGcm9tU3RyaW5nOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6QXBw
ZW5kRmxhZ3NJbnRvRmlsZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlJlYWRGcm9tRmxhZ3NG
aWxlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6Qm9vbEZyb21FbnY7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpJbnQzMkZyb21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpJbnQ2NEZy
b21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpVaW50NjRGcm9tRW52OwotdXNpbmcgR0ZM
QUdTX05BTUVTUEFDRTo6RG91YmxlRnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlN0
cmluZ0Zyb21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRVc2FnZU1lc3NhZ2U7Ci11
c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRWZXJzaW9uU3RyaW5nOwotdXNpbmcgR0ZMQUdTX05B
TUVTUEFDRTo6UGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OkhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFD
RTo6QWxsb3dDb21tYW5kTGluZVJlcGFyc2luZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlJl
cGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNo
dXREb3duQ29tbWFuZExpbmVGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdSZWdp
c3RlcmVyOwotCi0jaWZuZGVmIFNXSUcKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlBhcnNlQ29t
bWFuZExpbmVGbGFnczsKLSNlbmRpZgotCi0KLX0gLy8gbmFtZXNwYWNlIEBuc0AKLQotCi0jZW5k
aWYgIC8vIEdGTEFHU19OU19ATlNAX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19yZXBvcnRp
bmcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvc3JjL2dmbGFnc19yZXBvcnRpbmcuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDljYzQxYTc0ODhjZTVkY2ZkMDRjOTQ0MzFlZTQ3M2I4N2I1YTM4MWQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfcmVwb3J0
aW5nLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDQxICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykg
MTk5OSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8KLS8vIFJldmFtcGVk
IGFuZCByZW9yZ2FuaXplZCBieSBDcmFpZyBTaWx2ZXJzdGVpbgotLy8KLS8vIFRoaXMgZmlsZSBj
b250YWlucyBjb2RlIGZvciBoYW5kbGluZyB0aGUgJ3JlcG9ydGluZycgZmxhZ3MuICBUaGVzZQot
Ly8gYXJlIGZsYWdzIHRoYXQsIHdoZW4gcHJlc2VudCwgY2F1c2UgdGhlIHByb2dyYW0gdG8gcmVw
b3J0IHNvbWUKLS8vIGluZm9ybWF0aW9uIGFuZCB0aGVuIGV4aXQuICAtLWhlbHAgYW5kIC0tdmVy
c2lvbiBhcmUgdGhlIGNhbm9uaWNhbAotLy8gcmVwb3J0aW5nIGZsYWdzLCBidXQgd2UgYWxzbyBo
YXZlIGZsYWdzIGxpa2UgLS1oZWxweG1sLCBldGMuCi0vLwotLy8gVGhlcmUncyBvbmx5IG9uZSBm
dW5jdGlvbiB0aGF0J3MgbWVhbnQgdG8gYmUgY2FsbGVkIGV4dGVybmFsbHk6Ci0vLyBIYW5kbGVD
b21tYW5kTGluZUhlbHBGbGFncygpLiAgKFdlbGwsIGFjdHVhbGx5LCBTaG93VXNhZ2VXaXRoRmxh
Z3MoKSwKLS8vIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0KCksIGFuZCBEZXNjcmliZU9uZUZs
YWcoKSBjYW4gYmUgY2FsbGVkCi0vLyBleHRlcm5hbGx5IHRvbywgYnV0IHRoZXJlJ3MgbGl0dGxl
IG5lZWQgZm9yIGl0LikgIFRoZXNlIGFyZSBhbGwKLS8vIGRlY2xhcmVkIGluIHRoZSBtYWluIGdm
bGFncy5oIGhlYWRlciBmaWxlLgotLy8KLS8vIEhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzKCkg
d2lsbCBjaGVjayB3aGF0ICdyZXBvcnRpbmcnIGZsYWdzIGhhdmUKLS8vIGJlZW4gZGVmaW5lZCwg
aWYgYW55IC0tIHRoZSAiaGVscCIgcGFydCBvZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyBhCi0vLyBi
aXQgbWlzbGVhZGluZyAtLSBhbmQgZG8gdGhlIHJlbGV2YW50IHJlcG9ydGluZy4gIEl0IHNob3Vs
ZCBiZQotLy8gY2FsbGVkIGFmdGVyIGFsbCBmbGFnLXZhbHVlcyBoYXZlIGJlZW4gYXNzaWduZWQs
IHRoYXQgaXMsIGFmdGVyCi0vLyBwYXJzaW5nIHRoZSBjb21tYW5kLWxpbmUuCi0KLSNpbmNsdWRl
IDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5j
bHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImdmbGFncy5oIgotI2luY2x1ZGUgImdmbGFn
c19jb21wbGV0aW9ucy5oIgotI2luY2x1ZGUgInV0aWwuaCIKLQotCi0vLyBUaGUgJ3JlcG9ydGlu
ZycgZmxhZ3MuICBUaGV5IGFsbCBjYWxsIGdmbGFnc19leGl0ZnVuYygpLgotREVGSU5FX2Jvb2wg
IChoZWxwLCAgICAgICAgZmFsc2UsICJzaG93IGhlbHAgb24gYWxsIGZsYWdzIFt0aXA6IGFsbCBm
bGFncyBjYW4gaGF2ZSB0d28gZGFzaGVzXSIpOwotREVGSU5FX2Jvb2wgIChoZWxwZnVsbCwgICAg
ZmFsc2UsICJzaG93IGhlbHAgb24gYWxsIGZsYWdzIC0tIHNhbWUgYXMgLWhlbHAiKTsKLURFRklO
RV9ib29sICAoaGVscHNob3J0LCAgIGZhbHNlLCAic2hvdyBoZWxwIG9uIG9ubHkgdGhlIG1haW4g
bW9kdWxlIGZvciB0aGlzIHByb2dyYW0iKTsKLURFRklORV9zdHJpbmcoaGVscG9uLCAgICAgICIi
LCAgICAic2hvdyBoZWxwIG9uIHRoZSBtb2R1bGVzIG5hbWVkIGJ5IHRoaXMgZmxhZyB2YWx1ZSIp
OwotREVGSU5FX3N0cmluZyhoZWxwbWF0Y2gsICAgIiIsICAgICJzaG93IGhlbHAgb24gbW9kdWxl
cyB3aG9zZSBuYW1lIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgc3Vic3RyIik7Ci1ERUZJTkVfYm9v
bCAgKGhlbHBwYWNrYWdlLCBmYWxzZSwgInNob3cgaGVscCBvbiBhbGwgbW9kdWxlcyBpbiB0aGUg
bWFpbiBwYWNrYWdlIik7Ci1ERUZJTkVfYm9vbCAgKGhlbHB4bWwsICAgICBmYWxzZSwgInByb2R1
Y2UgYW4geG1sIHZlcnNpb24gb2YgaGVscCIpOwotREVGSU5FX2Jvb2wgICh2ZXJzaW9uLCAgICAg
ZmFsc2UsICJzaG93IHZlcnNpb24gYW5kIGJ1aWxkIGluZm8gYW5kIGV4aXQiKTsKLQotCi1uYW1l
c3BhY2UgR0ZMQUdTX05BTUVTUEFDRSB7Ci0KLQotdXNpbmcgc3RkOjpzdHJpbmc7Ci11c2luZyBz
dGQ6OnZlY3RvcjsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRGVzY3JpYmVPbmVGbGFnKCkKLS8v
IERlc2NyaWJlT25lRmxhZ0luWE1MKCkKLS8vICAgIFJvdXRpbmVzIHRoYXQgcHJldHR5LXByaW50
IGluZm8gYWJvdXQgYSBmbGFnLiAgVGhlc2UgdXNlCi0vLyAgICBhIENvbW1hbmRMaW5lRmxhZ0lu
Zm8sIHdoaWNoIGlzIHRoZSB3YXkgdGhlIGdmbGFncwotLy8gICAgQVBJIGV4cG9zZXMgc3RhdGlj
IGluZm8gYWJvdXQgYSBmbGFnLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGNvbnN0IGludCBr
TGluZUxlbmd0aCA9IDgwOwotCi1zdGF0aWMgdm9pZCBBZGRTdHJpbmcoY29uc3Qgc3RyaW5nJiBz
LAotICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyogZmluYWxfc3RyaW5nLCBpbnQqIGNoYXJz
X2luX2xpbmUpIHsKLSAgY29uc3QgaW50IHNsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHMubGVuZ3Ro
KCkpOwotICBpZiAoKmNoYXJzX2luX2xpbmUgKyAxICsgc2xlbiA+PSBrTGluZUxlbmd0aCkgeyAg
Ly8gPCA4MCBjaGFycy9saW5lCi0gICAgKmZpbmFsX3N0cmluZyArPSAiXG4gICAgICAiOwotICAg
ICpjaGFyc19pbl9saW5lID0gNjsKLSAgfSBlbHNlIHsKLSAgICAqZmluYWxfc3RyaW5nICs9ICIg
IjsKLSAgICAqY2hhcnNfaW5fbGluZSArPSAxOwotICB9Ci0gICpmaW5hbF9zdHJpbmcgKz0gczsK
LSAgKmNoYXJzX2luX2xpbmUgKz0gc2xlbjsKLX0KLQotc3RhdGljIHN0cmluZyBQcmludFN0cmlu
Z0ZsYWdzV2l0aFF1b3Rlcyhjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvJiBmbGFnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIHRleHQsIGJv
b2wgY3VycmVudCkgewotICBjb25zdCBjaGFyKiBjX3N0cmluZyA9IChjdXJyZW50ID8gZmxhZy5j
dXJyZW50X3ZhbHVlLmNfc3RyKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnLmRl
ZmF1bHRfdmFsdWUuY19zdHIoKSk7Ci0gIGlmIChzdHJjbXAoZmxhZy50eXBlLmNfc3RyKCksICJz
dHJpbmciKSA9PSAwKSB7ICAvLyBhZGQgcXVvdGVzIGZvciBzdHJpbmdzCi0gICAgcmV0dXJuIFN0
cmluZ1ByaW50ZigiJXM6IFwiJXNcIiIsIHRleHQuY19zdHIoKSwgY19zdHJpbmcpOwotICB9IGVs
c2UgewotICAgIHJldHVybiBTdHJpbmdQcmludGYoIiVzOiAlcyIsIHRleHQuY19zdHIoKSwgY19z
dHJpbmcpOwotICB9Ci19Ci0KLS8vIENyZWF0ZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBmb3IgYSBm
bGFnLgotLy8gR29lcyB0byBzb21lIHRyb3VibGUgdG8gbWFrZSBwcmV0dHkgbGluZSBicmVha3Mu
Ci1zdHJpbmcgRGVzY3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcp
IHsKLSAgc3RyaW5nIG1haW5fcGFydDsKLSAgU1N0cmluZ1ByaW50ZigmbWFpbl9wYXJ0LCAiICAg
IC0lcyAoJXMpIiwKLSAgICAgICAgICAgICAgICBmbGFnLm5hbWUuY19zdHIoKSwKLSAgICAgICAg
ICAgICAgICBmbGFnLmRlc2NyaXB0aW9uLmNfc3RyKCkpOwotICBjb25zdCBjaGFyKiBjX3N0cmlu
ZyA9IG1haW5fcGFydC5jX3N0cigpOwotICBpbnQgY2hhcnNfbGVmdCA9IHN0YXRpY19jYXN0PGlu
dD4obWFpbl9wYXJ0Lmxlbmd0aCgpKTsKLSAgc3RyaW5nIGZpbmFsX3N0cmluZyA9ICIiOwotICBp
bnQgY2hhcnNfaW5fbGluZSA9IDA7ICAvLyBob3cgbWFueSBjaGFycyBpbiBjdXJyZW50IGxpbmUg
c28gZmFyPwotICB3aGlsZSAoMSkgewotICAgIGFzc2VydChjaGFyc19sZWZ0ID09IHN0cmxlbihj
X3N0cmluZykpOyAgLy8gVW5sZXNzIHRoZXJlJ3MgYSBcMCBpbiB0aGVyZT8KLSAgICBjb25zdCBj
aGFyKiBuZXdsaW5lID0gc3RyY2hyKGNfc3RyaW5nLCAnXG4nKTsKLSAgICBpZiAobmV3bGluZSA9
PSBOVUxMICYmIGNoYXJzX2luX2xpbmUrY2hhcnNfbGVmdCA8IGtMaW5lTGVuZ3RoKSB7Ci0gICAg
ICAvLyBUaGUgd2hvbGUgcmVtYWluZGVyIG9mIHRoZSBzdHJpbmcgZml0cyBvbiB0aGlzIGxpbmUK
LSAgICAgIGZpbmFsX3N0cmluZyArPSBjX3N0cmluZzsKLSAgICAgIGNoYXJzX2luX2xpbmUgKz0g
Y2hhcnNfbGVmdDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAobmV3bGluZSAhPSBOVUxM
ICYmIG5ld2xpbmUgLSBjX3N0cmluZyA8IGtMaW5lTGVuZ3RoIC0gY2hhcnNfaW5fbGluZSkgewot
ICAgICAgaW50IG4gPSBzdGF0aWNfY2FzdDxpbnQ+KG5ld2xpbmUgLSBjX3N0cmluZyk7Ci0gICAg
ICBmaW5hbF9zdHJpbmcuYXBwZW5kKGNfc3RyaW5nLCBuKTsKLSAgICAgIGNoYXJzX2xlZnQgLT0g
biArIDE7Ci0gICAgICBjX3N0cmluZyArPSBuICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgLy8g
RmluZCB0aGUgbGFzdCB3aGl0ZXNwYWNlIG9uIHRoaXMgODAtY2hhciBsaW5lCi0gICAgICBpbnQg
d2hpdGVzcGFjZSA9IGtMaW5lTGVuZ3RoLWNoYXJzX2luX2xpbmUtMTsgIC8vIDwgODAgY2hhcnMv
bGluZQotICAgICAgd2hpbGUgKCB3aGl0ZXNwYWNlID4gMCAmJiAhaXNzcGFjZShjX3N0cmluZ1t3
aGl0ZXNwYWNlXSkgKSB7Ci0gICAgICAgIC0td2hpdGVzcGFjZTsKLSAgICAgIH0KLSAgICAgIGlm
ICh3aGl0ZXNwYWNlIDw9IDApIHsKLSAgICAgICAgLy8gQ291bGRuJ3QgZmluZCBhbnkgd2hpdGVz
cGFjZSB0byBtYWtlIGEgbGluZSBicmVhay4gIEp1c3QgZHVtcCB0aGUKLSAgICAgICAgLy8gcmVz
dCBvdXQhCi0gICAgICAgIGZpbmFsX3N0cmluZyArPSBjX3N0cmluZzsKLSAgICAgICAgY2hhcnNf
aW5fbGluZSA9IGtMaW5lTGVuZ3RoOyAgLy8gbmV4dCBwYXJ0IGdldHMgaXRzIG93biBsaW5lIGZv
ciBzdXJlIQotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGZpbmFsX3N0cmluZyArPSBz
dHJpbmcoY19zdHJpbmcsIHdoaXRlc3BhY2UpOwotICAgICAgY2hhcnNfaW5fbGluZSArPSB3aGl0
ZXNwYWNlOwotICAgICAgd2hpbGUgKGlzc3BhY2UoY19zdHJpbmdbd2hpdGVzcGFjZV0pKSAgKyt3
aGl0ZXNwYWNlOwotICAgICAgY19zdHJpbmcgKz0gd2hpdGVzcGFjZTsKLSAgICAgIGNoYXJzX2xl
ZnQgLT0gd2hpdGVzcGFjZTsKLSAgICB9Ci0gICAgaWYgKCpjX3N0cmluZyA9PSAnXDAnKQotICAg
ICAgYnJlYWs7Ci0gICAgU3RyaW5nQXBwZW5kRigmZmluYWxfc3RyaW5nLCAiXG4gICAgICAiKTsK
LSAgICBjaGFyc19pbl9saW5lID0gNjsKLSAgfQotCi0gIC8vIEFwcGVuZCBkYXRhIHR5cGUKLSAg
QWRkU3RyaW5nKHN0cmluZygidHlwZTogIikgKyBmbGFnLnR5cGUsICZmaW5hbF9zdHJpbmcsICZj
aGFyc19pbl9saW5lKTsKLSAgLy8gVGhlIGxpc3RlZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdGhl
IGFjdHVhbCBkZWZhdWx0IGZyb20gdGhlIGZsYWcKLSAgLy8gZGVmaW5pdGlvbiBpbiB0aGUgb3Jp
Z2luYXRpbmcgc291cmNlIGZpbGUsIHVubGVzcyB0aGUgdmFsdWUgaGFzCi0gIC8vIHN1YnNlcXVl
bnRseSBiZWVuIG1vZGlmaWVkIHVzaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoKSB3
aXRoIG1vZGUKLSAgLy8gU0VUX0ZMQUdTX0RFRkFVTFQsIG9yIGJ5IHNldHRpbmcgRkxBR1NfZm9v
ID0gYmFyIGJlZm9yZSBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKS4KLSAgQWRkU3RyaW5nKFByaW50
U3RyaW5nRmxhZ3NXaXRoUXVvdGVzKGZsYWcsICJkZWZhdWx0IiwgZmFsc2UpLCAmZmluYWxfc3Ry
aW5nLAotICAgICAgICAgICAgJmNoYXJzX2luX2xpbmUpOwotICBpZiAoIWZsYWcuaXNfZGVmYXVs
dCkgewotICAgIEFkZFN0cmluZyhQcmludFN0cmluZ0ZsYWdzV2l0aFF1b3RlcyhmbGFnLCAiY3Vy
cmVudGx5IiwgdHJ1ZSksCi0gICAgICAgICAgICAgICZmaW5hbF9zdHJpbmcsICZjaGFyc19pbl9s
aW5lKTsKLSAgfQotCi0gIFN0cmluZ0FwcGVuZEYoJmZpbmFsX3N0cmluZywgIlxuIik7Ci0gIHJl
dHVybiBmaW5hbF9zdHJpbmc7Ci19Ci0KLS8vIFNpbXBsZSByb3V0aW5lIHRvIHhtbC1lc2NhcGUg
YSBzdHJpbmc6IGVzY2FwZSAmIGFuZCA8IG9ubHkuCi1zdGF0aWMgc3RyaW5nIFhNTFRleHQoY29u
c3Qgc3RyaW5nJiB0eHQpIHsKLSAgc3RyaW5nIGFucyA9IHR4dDsKLSAgZm9yIChzdHJpbmc6OnNp
emVfdHlwZSBwb3MgPSAwOyAocG9zID0gYW5zLmZpbmQoIiYiLCBwb3MpKSAhPSBzdHJpbmc6Om5w
b3M7ICkKLSAgICBhbnMucmVwbGFjZShwb3MrKywgMSwgIiZhbXA7Iik7Ci0gIGZvciAoc3RyaW5n
OjpzaXplX3R5cGUgcG9zID0gMDsgKHBvcyA9IGFucy5maW5kKCI8IiwgcG9zKSkgIT0gc3RyaW5n
OjpucG9zOyApCi0gICAgYW5zLnJlcGxhY2UocG9zKyssIDEsICImbHQ7Iik7Ci0gIHJldHVybiBh
bnM7Ci19Ci0KLXN0YXRpYyB2b2lkIEFkZFhNTFRhZyhzdHJpbmcqIHIsIGNvbnN0IGNoYXIqIHRh
ZywgY29uc3Qgc3RyaW5nJiB0eHQpIHsKLSAgU3RyaW5nQXBwZW5kRihyLCAiPCVzPiVzPC8lcz4i
LCB0YWcsIFhNTFRleHQodHh0KS5jX3N0cigpLCB0YWcpOwotfQotCi0KLXN0YXRpYyBzdHJpbmcg
RGVzY3JpYmVPbmVGbGFnSW5YTUwoY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyYgZmxhZykgewot
ICAvLyBUaGUgZmlsZSBhbmQgZmxhZ25hbWUgY291bGQgaGF2ZSBiZWVuIGF0dHJpYnV0ZXMsIGJ1
dCBkZWZhdWx0Ci0gIC8vIGFuZCBtZWFuaW5nIG5lZWQgdG8gYXZvaWQgYXR0cmlidXRlIG5vcm1h
bGl6YXRpb24uICBUaGlzIHdheSBpdAotICAvLyBjYW4gYmUgcGFyc2VkIGJ5IHNpbXBsZSBwcm9n
cmFtcywgaW4gYWRkaXRpb24gdG8geG1sIHBhcnNlcnMuCi0gIHN0cmluZyByKCI8ZmxhZz4iKTsK
LSAgQWRkWE1MVGFnKCZyLCAiZmlsZSIsIGZsYWcuZmlsZW5hbWUpOwotICBBZGRYTUxUYWcoJnIs
ICJuYW1lIiwgZmxhZy5uYW1lKTsKLSAgQWRkWE1MVGFnKCZyLCAibWVhbmluZyIsIGZsYWcuZGVz
Y3JpcHRpb24pOwotICBBZGRYTUxUYWcoJnIsICJkZWZhdWx0IiwgZmxhZy5kZWZhdWx0X3ZhbHVl
KTsKLSAgQWRkWE1MVGFnKCZyLCAiY3VycmVudCIsIGZsYWcuY3VycmVudF92YWx1ZSk7Ci0gIEFk
ZFhNTFRhZygmciwgInR5cGUiLCBmbGFnLnR5cGUpOwotICByICs9ICI8L2ZsYWc+IjsKLSAgcmV0
dXJuIHI7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTaG93VXNhZ2VXaXRoRmxhZ3MoKQotLy8g
U2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QoKQotLy8gU2hvd1hNTE9mRmxhZ3MoKQotLy8gICAg
VGhlc2Ugcm91dGluZXMgdmFyaW91c2x5IGV4cG9zZSB0aGUgcmVnaXN0cnkncyBsaXN0IG9mIGZs
YWcKLS8vICAgIHZhbHVlcy4gIFNob3dVc2FnZSooKSBwcmludHMgdGhlIGZsYWctdmFsdWUgaW5m
b3JtYXRpb24KLS8vICAgIHRvIHN0ZG91dCBpbiBhIHVzZXItcmVhZGFibGUgZm9ybWF0ICh0aGF0
J3Mgd2hhdCAtLWhlbHAgdXNlcykuCi0vLyAgICBUaGUgUmVzdHJpY3QoKSB2ZXJzaW9uIGxpbWl0
cyB3aGF0IGZsYWdzIGFyZSBzaG93bi4KLS8vICAgIFNob3dYTUxPZkZsYWdzKCkgcHJpbnRzIHRo
ZSBmbGFnLXZhbHVlIGluZm9ybWF0aW9uIHRvIHN0ZG91dAotLy8gICAgaW4gYSBtYWNoaW5lLXJl
YWRhYmxlIGZvcm1hdC4gIEluIGFsbCBjYXNlcywgdGhlIGZsYWdzIGFyZQotLy8gICAgc29ydGVk
OiBmaXJzdCBieSBmaWxlbmFtZSB0aGV5IGFyZSBkZWZpbmVkIGluLCB0aGVuIGJ5IGZsYWduYW1l
LgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGNvbnN0IGNoYXIqIEJhc2VuYW1lKGNvbnN0IGNo
YXIqIGZpbGVuYW1lKSB7Ci0gIGNvbnN0IGNoYXIqIHNlcCA9IHN0cnJjaHIoZmlsZW5hbWUsIFBB
VEhfU0VQQVJBVE9SKTsKLSAgcmV0dXJuIHNlcCA/IHNlcCArIDEgOiBmaWxlbmFtZTsKLX0KLQot
c3RhdGljIHN0cmluZyBEaXJuYW1lKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUpIHsKLSAgc3RyaW5n
OjpzaXplX3R5cGUgc2VwID0gZmlsZW5hbWUucmZpbmQoUEFUSF9TRVBBUkFUT1IpOwotICByZXR1
cm4gZmlsZW5hbWUuc3Vic3RyKDAsIChzZXAgPT0gc3RyaW5nOjpucG9zKSA/IDAgOiBzZXApOwot
fQotCi0vLyBUZXN0IHdoZXRoZXIgYSBmaWxlbmFtZSBjb250YWlucyBhdCBsZWFzdCBvbmUgb2Yg
dGhlIHN1YnN0cmluZ3MuCi1zdGF0aWMgYm9vbCBGaWxlTWF0Y2hlc1N1YnN0cmluZyhjb25zdCBz
dHJpbmcmIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dmVjdG9yPHN0cmluZz4mIHN1YnN0cmluZ3MpIHsKLSAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29u
c3RfaXRlcmF0b3IgdGFyZ2V0ID0gc3Vic3RyaW5ncy5iZWdpbigpOwotICAgICAgIHRhcmdldCAh
PSBzdWJzdHJpbmdzLmVuZCgpOwotICAgICAgICsrdGFyZ2V0KSB7Ci0gICAgaWYgKHN0cnN0cihm
aWxlbmFtZS5jX3N0cigpLCB0YXJnZXQtPmNfc3RyKCkpICE9IE5VTEwpCi0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAvLyBJZiB0aGUgc3Vic3RyaW5nIHN0YXJ0cyB3aXRoIGEgJy8nLCB0aGF0IG1l
YW5zIHRoYXQgd2Ugd2FudAotICAgIC8vIHRoZSBzdHJpbmcgdG8gYmUgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBhIGRpcmVjdG9yeSBjb21wb25lbnQuCi0gICAgLy8gVGhhdCBzaG91bGQgbWF0Y2ggdGhl
IGZpcnN0IGRpcmVjdG9yeSBjb21wb25lbnQgYXMgd2VsbCwgc28KLSAgICAvLyB3ZSBhbGxvdyAn
L2ZvbycgdG8gbWF0Y2ggYSBmaWxlbmFtZSBvZiAnZm9vJy4KLSAgICBpZiAoIXRhcmdldC0+ZW1w
dHkoKSAmJiAoKnRhcmdldClbMF0gPT0gUEFUSF9TRVBBUkFUT1IgJiYKLSAgICAgICAgc3RybmNt
cChmaWxlbmFtZS5jX3N0cigpLCB0YXJnZXQtPmNfc3RyKCkgKyAxLAotICAgICAgICAgICAgICAg
IHN0cmxlbih0YXJnZXQtPmNfc3RyKCkgKyAxKSkgPT0gMCkKLSAgICAgIHJldHVybiB0cnVlOwot
ICB9Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotLy8gU2hvdyBoZWxwIGZvciBldmVyeSBmaWxlbmFt
ZSB3aGljaCBtYXRjaGVzIGFueSBvZiB0aGUgdGFyZ2V0IHN1YnN0cmluZ3MuCi0vLyBJZiBzdWJz
dHJpbmdzIGlzIGVtcHR5LCBzaG93cyBoZWxwIGZvciBldmVyeSBmaWxlLiBJZiBhIGZsYWcncyBo
ZWxwIG1lc3NhZ2UKLS8vIGhhcyBiZWVuIHN0cmlwcGVkIChlLmcuIGJ5IGFkZGluZyAnI2RlZmlu
ZSBTVFJJUF9GTEFHX0hFTFAgMScKLS8vIGJlZm9yZSBpbmNsdWRpbmcgZ2ZsYWdzL2dmbGFncy5o
KSwgdGhlbiB0aGlzIGZsYWcgd2lsbCBub3QgYmUgZGlzcGxheWVkCi0vLyBieSAnLS1oZWxwJyBh
bmQgaXRzIHZhcmlhbnRzLgotc3RhdGljIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzTWF0Y2hpbmco
Y29uc3QgY2hhciAqYXJndjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2ZWN0b3I8c3RyaW5nPiAmc3Vic3RyaW5ncykgewotICBmcHJpbnRmKHN0ZG91dCwg
IiVzOiAlc1xuIiwgQmFzZW5hbWUoYXJndjApLCBQcm9ncmFtVXNhZ2UoKSk7Ci0KLSAgdmVjdG9y
PENvbW1hbmRMaW5lRmxhZ0luZm8+IGZsYWdzOwotICBHZXRBbGxGbGFncygmZmxhZ3MpOyAgICAg
ICAgICAgLy8gZmxhZ3MgYXJlIHNvcnRlZCBieSBmaWxlbmFtZSwgdGhlbiBmbGFnbmFtZQotCi0g
IHN0cmluZyBsYXN0X2ZpbGVuYW1lOyAgICAgICAgICAvLyBzbyB3ZSBrbm93IHdoZW4gd2UncmUg
YXQgYSBuZXcgZmlsZQotICBib29sIGZpcnN0X2RpcmVjdG9yeSA9IHRydWU7ICAgLy8gY29udHJv
bHMgYmxhbmsgbGluZXMgYmV0d2VlbiBkaXJzCi0gIGJvb2wgZm91bmRfbWF0Y2ggPSBmYWxzZTsg
ICAgICAvLyBzdGF5cyBmYWxzZSBpZmYgbm8gZGlyIG1hdGNoZXMgcmVzdHJpY3QKLSAgZm9yICh2
ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGZsYWcgPSBmbGFncy5i
ZWdpbigpOwotICAgICAgIGZsYWcgIT0gZmxhZ3MuZW5kKCk7Ci0gICAgICAgKytmbGFnKSB7Ci0g
ICAgaWYgKHN1YnN0cmluZ3MuZW1wdHkoKSB8fAotICAgICAgICBGaWxlTWF0Y2hlc1N1YnN0cmlu
ZyhmbGFnLT5maWxlbmFtZSwgc3Vic3RyaW5ncykpIHsKLSAgICAgIC8vIElmIHRoZSBmbGFnIGhh
cyBiZWVuIHN0cmlwcGVkLCBwcmV0ZW5kIHRoYXQgaXQgZG9lc24ndCBleGlzdC4KLSAgICAgIGlm
IChmbGFnLT5kZXNjcmlwdGlvbiA9PSBrU3RyaXBwZWRGbGFnSGVscCkgY29udGludWU7Ci0gICAg
ICBmb3VuZF9tYXRjaCA9IHRydWU7ICAgICAvLyB0aGlzIGZsYWcgcGFzc2VkIHRoZSBtYXRjaCEK
LSAgICAgIGlmIChmbGFnLT5maWxlbmFtZSAhPSBsYXN0X2ZpbGVuYW1lKSB7ICAgICAgICAgICAg
ICAgICAgICAgIC8vIG5ldyBmaWxlCi0gICAgICAgIGlmIChEaXJuYW1lKGZsYWctPmZpbGVuYW1l
KSAhPSBEaXJuYW1lKGxhc3RfZmlsZW5hbWUpKSB7ICAvLyBuZXcgZGlyIQotICAgICAgICAgIGlm
ICghZmlyc3RfZGlyZWN0b3J5KQotICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJcblxuIik7
ICAgLy8gcHV0IGJsYW5rIGxpbmVzIGJldHdlZW4gZGlyZWN0b3JpZXMKLSAgICAgICAgICBmaXJz
dF9kaXJlY3RvcnkgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZG91dCwg
IlxuICBGbGFncyBmcm9tICVzOlxuIiwgZmxhZy0+ZmlsZW5hbWUuY19zdHIoKSk7Ci0gICAgICAg
IGxhc3RfZmlsZW5hbWUgPSBmbGFnLT5maWxlbmFtZTsKLSAgICAgIH0KLSAgICAgIC8vIE5vdyBw
cmludCB0aGlzIGZsYWcKLSAgICAgIGZwcmludGYoc3Rkb3V0LCAiJXMiLCBEZXNjcmliZU9uZUZs
YWcoKmZsYWcpLmNfc3RyKCkpOwotICAgIH0KLSAgfQotICBpZiAoIWZvdW5kX21hdGNoICYmICFz
dWJzdHJpbmdzLmVtcHR5KCkpIHsKLSAgICBmcHJpbnRmKHN0ZG91dCwgIlxuICBObyBtb2R1bGVz
IG1hdGNoZWQ6IHVzZSAtaGVscFxuIik7Ci0gIH0KLX0KLQotdm9pZCBTaG93VXNhZ2VXaXRoRmxh
Z3NSZXN0cmljdChjb25zdCBjaGFyICphcmd2MCwgY29uc3QgY2hhciAqcmVzdHJpY3QpIHsKLSAg
dmVjdG9yPHN0cmluZz4gc3Vic3RyaW5nczsKLSAgaWYgKHJlc3RyaWN0ICE9IE5VTEwgJiYgKnJl
c3RyaWN0ICE9ICdcMCcpIHsKLSAgICBzdWJzdHJpbmdzLnB1c2hfYmFjayhyZXN0cmljdCk7Ci0g
IH0KLSAgU2hvd1VzYWdlV2l0aEZsYWdzTWF0Y2hpbmcoYXJndjAsIHN1YnN0cmluZ3MpOwotfQot
Ci12b2lkIFNob3dVc2FnZVdpdGhGbGFncyhjb25zdCBjaGFyICphcmd2MCkgewotICBTaG93VXNh
Z2VXaXRoRmxhZ3NSZXN0cmljdChhcmd2MCwgIiIpOwotfQotCi0vLyBDb252ZXJ0IHRoZSBoZWxw
LCBwcm9ncmFtLCBhbmQgdXNhZ2UgdG8geG1sLgotc3RhdGljIHZvaWQgU2hvd1hNTE9mRmxhZ3Mo
Y29uc3QgY2hhciAqcHJvZ19uYW1lKSB7Ci0gIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBm
bGFnczsKLSAgR2V0QWxsRmxhZ3MoJmZsYWdzKTsgICAvLyBmbGFncyBhcmUgc29ydGVkOiBieSBm
aWxlbmFtZSwgdGhlbiBmbGFnbmFtZQotCi0gIC8vIFhNTC4gIFRoZXJlIGlzIG5vIGNvcnJlc3Bv
bmRpbmcgc2NoZW1hIHlldAotICBmcHJpbnRmKHN0ZG91dCwgIjw/eG1sIHZlcnNpb249XCIxLjBc
Ij8+XG4iKTsKLSAgLy8gVGhlIGRvY3VtZW50Ci0gIGZwcmludGYoc3Rkb3V0LCAiPEFsbEZsYWdz
PlxuIik7Ci0gIC8vIHRoZSBwcm9ncmFtIG5hbWUgYW5kIHVzYWdlCi0gIGZwcmludGYoc3Rkb3V0
LCAiPHByb2dyYW0+JXM8L3Byb2dyYW0+XG4iLAotICAgICAgICAgIFhNTFRleHQoQmFzZW5hbWUo
cHJvZ19uYW1lKSkuY19zdHIoKSk7Ci0gIGZwcmludGYoc3Rkb3V0LCAiPHVzYWdlPiVzPC91c2Fn
ZT5cbiIsCi0gICAgICAgICAgWE1MVGV4dChQcm9ncmFtVXNhZ2UoKSkuY19zdHIoKSk7Ci0gIC8v
IEFsbCB0aGUgZmxhZ3MKLSAgZm9yICh2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz46OmNvbnN0
X2l0ZXJhdG9yIGZsYWcgPSBmbGFncy5iZWdpbigpOwotICAgICAgIGZsYWcgIT0gZmxhZ3MuZW5k
KCk7Ci0gICAgICAgKytmbGFnKSB7Ci0gICAgaWYgKGZsYWctPmRlc2NyaXB0aW9uICE9IGtTdHJp
cHBlZEZsYWdIZWxwKQotICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgRGVzY3JpYmVPbmVG
bGFnSW5YTUwoKmZsYWcpLmNfc3RyKCkpOwotICB9Ci0gIC8vIFRoZSBlbmQgb2YgdGhlIGRvY3Vt
ZW50Ci0gIGZwcmludGYoc3Rkb3V0LCAiPC9BbGxGbGFncz5cbiIpOwotfQotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gU2hvd1ZlcnNpb24oKQotLy8gICAgQ2FsbGVkIHVwb24gLS12ZXJzaW9uLiAgUHJp
bnRzIGJ1aWxkLXJlbGF0ZWQgaW5mby4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXRpYyB2b2lkIFNo
b3dWZXJzaW9uKCkgewotICBjb25zdCBjaGFyKiB2ZXJzaW9uX3N0cmluZyA9IFZlcnNpb25TdHJp
bmcoKTsKLSAgaWYgKHZlcnNpb25fc3RyaW5nICYmICp2ZXJzaW9uX3N0cmluZykgewotICAgIGZw
cmludGYoc3Rkb3V0LCAiJXMgdmVyc2lvbiAlc1xuIiwKLSAgICAgICAgICAgIFByb2dyYW1JbnZv
Y2F0aW9uU2hvcnROYW1lKCksIHZlcnNpb25fc3RyaW5nKTsKLSAgfSBlbHNlIHsKLSAgICBmcHJp
bnRmKHN0ZG91dCwgIiVzXG4iLCBQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZSgpKTsKLSAgfQot
IyBpZiAhZGVmaW5lZChOREVCVUcpCi0gIGZwcmludGYoc3Rkb3V0LCAiRGVidWcgYnVpbGQgKE5E
RUJVRyBub3QgI2RlZmluZWQpXG4iKTsKLSMgZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgQXBwZW5k
UHJvZ25hbWVTdHJpbmdzKHZlY3RvcjxzdHJpbmc+KiBzdWJzdHJpbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByb2duYW1lKSB7Ci0gIHN0cmluZyBy
KCIiKTsKLSAgciArPSBQQVRIX1NFUEFSQVRPUjsKLSAgciArPSBwcm9nbmFtZTsKLSAgc3Vic3Ry
aW5ncy0+cHVzaF9iYWNrKHIgKyAiLiIpOwotICBzdWJzdHJpbmdzLT5wdXNoX2JhY2sociArICIt
bWFpbi4iKTsKLSAgc3Vic3RyaW5ncy0+cHVzaF9iYWNrKHIgKyAiX21haW4uIik7Ci19Ci0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpCi0vLyAgICBDaGVj
a3MgYWxsIHRoZSAncmVwb3J0aW5nJyBjb21tYW5kbGluZSBmbGFncyB0byBzZWUgaWYgYW55Ci0v
LyAgICBoYXZlIGJlZW4gc2V0LiAgSWYgc28sIGhhbmRsZXMgdGhlbSBhcHByb3ByaWF0ZWx5LiAg
Tm90ZQotLy8gICAgdGhhdCBhbGwgb2YgdGhlbSwgYnkgZGVmaW5pdGlvbiwgY2F1c2UgdGhlIHBy
b2dyYW0gdG8gZXhpdAotLy8gICAgaWYgdGhleSB0cmlnZ2VyLgotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
dm9pZCBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpIHsKLSAgY29uc3QgY2hhciogcHJvZ25h
bWUgPSBQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZSgpOwotCi0gIEhhbmRsZUNvbW1hbmRMaW5l
Q29tcGxldGlvbnMoKTsKLQotICB2ZWN0b3I8c3RyaW5nPiBzdWJzdHJpbmdzOwotICBBcHBlbmRQ
cm9nbmFtZVN0cmluZ3MoJnN1YnN0cmluZ3MsIHByb2duYW1lKTsKLQotICBpZiAoRkxBR1NfaGVs
cHNob3J0KSB7Ci0gICAgLy8gc2hvdyBvbmx5IGZsYWdzIHJlbGF0ZWQgdG8gdGhpcyBiaW5hcnk6
Ci0gICAgLy8gRS5nLiBmb3IgZmlsZXV0aWwuY2MsIHdhbnQgZmxhZ3MgY29udGFpbmluZyAgIC4u
LiAiL2ZpbGV1dGlsLiIgY2MKLSAgICBTaG93VXNhZ2VXaXRoRmxhZ3NNYXRjaGluZyhwcm9nbmFt
ZSwgc3Vic3RyaW5ncyk7Ci0gICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAo
RkxBR1NfaGVscCB8fCBGTEFHU19oZWxwZnVsbCkgewotICAgIC8vIHNob3cgYWxsIG9wdGlvbnMK
LSAgICBTaG93VXNhZ2VXaXRoRmxhZ3NSZXN0cmljdChwcm9nbmFtZSwgIiIpOyAgIC8vIGVtcHR5
IHJlc3RyaWN0Ci0gICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAoIUZMQUdT
X2hlbHBvbi5lbXB0eSgpKSB7Ci0gICAgc3RyaW5nIHJlc3RyaWN0ID0gUEFUSF9TRVBBUkFUT1Ig
KyBGTEFHU19oZWxwb24gKyAiLiI7Ci0gICAgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QocHJv
Z25hbWUsIHJlc3RyaWN0LmNfc3RyKCkpOwotICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLQotICB9
IGVsc2UgaWYgKCFGTEFHU19oZWxwbWF0Y2guZW1wdHkoKSkgewotICAgIFNob3dVc2FnZVdpdGhG
bGFnc1Jlc3RyaWN0KHByb2duYW1lLCBGTEFHU19oZWxwbWF0Y2guY19zdHIoKSk7Ci0gICAgZ2Zs
YWdzX2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAoRkxBR1NfaGVscHBhY2thZ2UpIHsKLSAg
ICAvLyBTaG93cyBoZWxwIGZvciBhbGwgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIG1h
aW4oKS4gIFdlCi0gICAgLy8gZG9uJ3Qgd2FudCB0byByZXNvcnQgdG8gbG9va2luZyBhdCBkaXJu
YW1lKHByb2duYW1lKSwgYmVjYXVzZQotICAgIC8vIHRoZSB1c2VyIGNhbiBwaWNrIHByb2duYW1l
LCBhbmQgaXQgbWF5IG5vdCByZWxhdGUgdG8gdGhlIGZpbGUKLSAgICAvLyB3aGVyZSBtYWluKCkg
cmVzaWRlcy4gIFNvIGluc3RlYWQsIHdlIHNlYXJjaCB0aGUgZmxhZ3MgZm9yIGEKLSAgICAvLyBm
aWxlbmFtZSBsaWtlICIvcHJvZ25hbWUuY2MiLCBhbmQgdGFrZSB0aGUgZGlybmFtZSBvZiB0aGF0
LgotICAgIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBmbGFnczsKLSAgICBHZXRBbGxGbGFn
cygmZmxhZ3MpOwotICAgIHN0cmluZyBsYXN0X3BhY2thZ2U7Ci0gICAgZm9yICh2ZWN0b3I8Q29t
bWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGZsYWcgPSBmbGFncy5iZWdpbigpOwot
ICAgICAgICAgZmxhZyAhPSBmbGFncy5lbmQoKTsKLSAgICAgICAgICsrZmxhZykgewotICAgICAg
aWYgKCFGaWxlTWF0Y2hlc1N1YnN0cmluZyhmbGFnLT5maWxlbmFtZSwgc3Vic3RyaW5ncykpCi0g
ICAgICAgIGNvbnRpbnVlOwotICAgICAgY29uc3Qgc3RyaW5nIHBhY2thZ2UgPSBEaXJuYW1lKGZs
YWctPmZpbGVuYW1lKSArIFBBVEhfU0VQQVJBVE9SOwotICAgICAgaWYgKHBhY2thZ2UgIT0gbGFz
dF9wYWNrYWdlKSB7Ci0gICAgICAgIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0KHByb2duYW1l
LCBwYWNrYWdlLmNfc3RyKCkpOwotICAgICAgICBWTE9HKDcpIDw8ICJGb3VuZCBwYWNrYWdlOiAi
IDw8IHBhY2thZ2U7Ci0gICAgICAgIGlmICghbGFzdF9wYWNrYWdlLmVtcHR5KCkpIHsgICAgICAv
LyBtZWFucyB0aGlzIGlzbid0IG91ciBmaXJzdCBwa2cKLSAgICAgICAgICBMT0coV0FSTklORykg
PDwgIk11bHRpcGxlIHBhY2thZ2VzIGNvbnRhaW4gYSBmaWxlPSIgPDwgcHJvZ25hbWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgbGFzdF9wYWNrYWdlID0gcGFja2FnZTsKLSAgICAgIH0KLSAgICB9Ci0g
ICAgaWYgKGxhc3RfcGFja2FnZS5lbXB0eSgpKSB7ICAgLy8gbmV2ZXIgZm91bmQgYSBwYWNrYWdl
IHRvIHByaW50Ci0gICAgICBMT0coV0FSTklORykgPDwgIlVuYWJsZSB0byBmaW5kIGEgcGFja2Fn
ZSBmb3IgZmlsZT0iIDw8IHByb2duYW1lOwotICAgIH0KLSAgICBnZmxhZ3NfZXhpdGZ1bmMoMSk7
Ci0KLSAgfSBlbHNlIGlmIChGTEFHU19oZWxweG1sKSB7Ci0gICAgU2hvd1hNTE9mRmxhZ3MocHJv
Z25hbWUpOwotICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLQotICB9IGVsc2UgaWYgKEZMQUdTX3Zl
cnNpb24pIHsKLSAgICBTaG93VmVyc2lvbigpOwotICAgIC8vIFVubGlrZSBoZWxwLCB3ZSBtYXkg
YmUgYXNraW5nIGZvciB2ZXJzaW9uIGluIGEgc2NyaXB0LCBzbyByZXR1cm4gMAotICAgIGdmbGFn
c19leGl0ZnVuYygwKTsKLQotICB9Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVT
UEFDRQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9tdXRleC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9tdXRleC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZjk2ZjJiNjdmN2U5NzMzNjBlYTEwNTY1OTU1MGRkYjQ5ZGZl
YjE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMv
bXV0ZXguaAorKysgL2Rldi9udWxsCkBAIC0xLDM0OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMp
IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vIAotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8gCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8gCi0vLyAtLS0KLS8vCi0vLyBB
IHNpbXBsZSBtdXRleCB3cmFwcGVyLCBzdXBwb3J0aW5nIGxvY2tzIGFuZCByZWFkLXdyaXRlIGxv
Y2tzLgotLy8gWW91IHNob3VsZCBhc3N1bWUgdGhlIGxvY2tzIGFyZSAqbm90KiByZS1lbnRyYW50
LgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgbWVhbnQgdG8gYmUgaW50ZXJuYWwtb25seSBhbmQgc2hv
dWxkIGJlIHdyYXBwZWQgYnkgYW4KLS8vIGludGVybmFsIG5hbWVzcGFjZS4gIEJlZm9yZSB5b3Ug
dXNlIHRoaXMgbW9kdWxlLCBwbGVhc2UgZ2l2ZSB0aGUKLS8vIG5hbWUgb2YgeW91ciBpbnRlcm5h
bCBuYW1lc3BhY2UgZm9yIHRoaXMgbW9kdWxlLiAgT3IsIGlmIHlvdSB3YW50Ci0vLyB0byBleHBv
c2UgaXQsIHlvdSdsbCB3YW50IHRvIG1vdmUgaXQgdG8gdGhlIEdvb2dsZSBuYW1lc3BhY2UuICBX
ZQotLy8gY2Fubm90IHB1dCB0aGlzIGNsYXNzIGluIGdsb2JhbCBuYW1lc3BhY2UgYmVjYXVzZSB0
aGVyZSBjYW4gYmUgc29tZQotLy8gcHJvYmxlbXMgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIHZlcnNp
b25zIG9mIE11dGV4IGluIGVhY2ggc2hhcmVkIG9iamVjdC4KLS8vCi0vLyBOT1RFOiBieSBkZWZh
dWx0LCB3ZSBoYXZlICNpZmRlZidlZCBvdXQgdGhlIFRyeUxvY2soKSBtZXRob2QuCi0vLyAgICAg
ICBUaGlzIGlzIGZvciB0d28gcmVhc29uczoKLS8vIDEpIFRyeUxvY2soKSB1bmRlciBXaW5kb3dz
IGlzIGEgYml0IGFubm95aW5nIChpdCByZXF1aXJlcyBhCi0vLyAgICAjZGVmaW5lIHRvIGJlIGRl
ZmluZWQgdmVyeSBlYXJseSkuCi0vLyAyKSBUcnlMb2NrKCkgaXMgYnJva2VuIGZvciBOT19USFJF
QURTIG1vZGUsIGF0IGxlYXN0IGluIE5ERUJVRwotLy8gICAgbW9kZS4KLS8vIElmIHlvdSBuZWVk
IFRyeUxvY2soKSwgYW5kIGVpdGhlciB0aGVzZSB0d28gY2F2ZWF0cyBhcmUgbm90IGEKLS8vIHBy
b2JsZW0gZm9yIHlvdSwgb3IgeW91J3JlIHdpbGxpbmcgdG8gd29yayBhcm91bmQgdGhlbSwgdGhl
bgotLy8gZmVlbCBmcmVlIHRvICNkZWZpbmUgR01VVEVYX1RSWUxPQ0ssIG9yIHRvIHJlbW92ZSB0
aGUgI2lmZGVmcwotLy8gaW4gdGhlIGNvZGUgYmVsb3cuCi0vLwotLy8gQ1lHV0lOIE5PVEU6IEN5
Z3dpbiBzdXBwb3J0IGZvciByd2xvY2sgc2VlbXMgdG8gYmUgYnVnZ3k6Ci0vLyAgICBodHRwOi8v
d3d3LmN5Z3dpbi5jb20vbWwvY3lnd2luLzIwMDgtMTIvbXNnMDAwMTcuaHRtbAotLy8gQmVjYXVz
ZSBvZiB0aGF0LCB3ZSBtaWdodCBhcyB3ZWxsIHVzZSB3aW5kb3dzIGxvY2tzIGZvcgotLy8gY3ln
d2luLiAgVGhleSBzZWVtIHRvIGJlIG1vcmUgcmVsaWFibGUgdGhhbiB0aGUgY3lnd2luIHB0aHJl
YWRzIGxheWVyLgotLy8KLS8vIFRSSUNLWSBJTVBMRU1FTlRBVElPTiBOT1RFOgotLy8gVGhpcyBj
bGFzcyBpcyBkZXNpZ25lZCB0byBiZSBzYWZlIHRvIHVzZSBkdXJpbmcKLS8vIGR5bmFtaWMtaW5p
dGlhbGl6YXRpb24gLS0gdGhhdCBpcywgYnkgZ2xvYmFsIGNvbnN0cnVjdG9ycyB0aGF0IGFyZQot
Ly8gcnVuIGJlZm9yZSBtYWluKCkgc3RhcnRzLiAgVGhlIGlzc3VlIGluIHRoaXMgY2FzZSBpcyB0
aGF0Ci0vLyBkeW5hbWljLWluaXRpYWxpemF0aW9uIGhhcHBlbnMgaW4gYW4gdW5wcmVkaWN0YWJs
ZSBvcmRlciwgYW5kIGl0Ci0vLyBjb3VsZCBiZSB0aGF0IHNvbWVvbmUgZWxzZSdzIGR5bmFtaWMg
aW5pdGlhbGl6ZXIgY291bGQgY2FsbCBhCi0vLyBmdW5jdGlvbiB0aGF0IHRyaWVzIHRvIGFjcXVp
cmUgdGhpcyBtdXRleCAtLSBidXQgdGhhdCBhbGwgaGFwcGVucwotLy8gYmVmb3JlIHRoaXMgbXV0
ZXgncyBjb25zdHJ1Y3RvciBoYXMgcnVuLiAgKFRoaXMgY2FuIGhhcHBlbiBldmVuIGlmCi0vLyB0
aGUgbXV0ZXggYW5kIHRoZSBmdW5jdGlvbiB0aGF0IHVzZXMgdGhlIG11dGV4IGFyZSBpbiB0aGUg
c2FtZSAuY2MKLS8vIGZpbGUuKSAgQmFzaWNhbGx5LCBiZWNhdXNlIE11dGV4IGRvZXMgbm9uLXRy
aXZpYWwgd29yayBpbiBpdHMKLS8vIGNvbnN0cnVjdG9yLCBpdCdzIG5vdCwgaW4gdGhlIG5haXZl
IGltcGxlbWVudGF0aW9uLCBzYWZlIHRvIHVzZQotLy8gYmVmb3JlIGR5bmFtaWMgaW5pdGlhbGl6
YXRpb24gaGFzIHJ1biBvbiBpdC4KLS8vCi0vLyBUaGUgc29sdXRpb24gdXNlZCBoZXJlIGlzIHRv
IHBhaXIgdGhlIGFjdHVhbCBtdXRleCBwcmltaXRpdmUgd2l0aCBhCi0vLyBib29sIHRoYXQgaXMg
c2V0IHRvIHRydWUgd2hlbiB0aGUgbXV0ZXggaXMgZHluYW1pY2FsbHkgaW5pdGlhbGl6ZWQuCi0v
LyAoQmVmb3JlIHRoYXQgaXQncyBmYWxzZS4pICBUaGVuIHdlIG1vZGlmeSBhbGwgbXV0ZXggcm91
dGluZXMgdG8KLS8vIGxvb2sgYXQgdGhlIGJvb2wsIGFuZCBub3QgdHJ5IHRvIGxvY2svdW5sb2Nr
IHVudGlsIHRoZSBib29sIG1ha2VzCi0vLyBpdCB0byB0cnVlICh3aGljaCBoYXBwZW5zIGFmdGVy
IHRoZSBNdXRleCBjb25zdHJ1Y3RvciBoYXMgcnVuLikKLS8vCi0vLyBUaGlzIHdvcmtzIGJlY2F1
c2UgYmVmb3JlIG1haW4oKSBzdGFydHMgLS0gcGFydGljdWxhcmx5LCBkdXJpbmcKLS8vIGR5bmFt
aWMgaW5pdGlhbGl6YXRpb24gLS0gdGhlcmUgYXJlIG5vIHRocmVhZHMsIHNvIGEpIGl0J3Mgb2sg
dGhhdAotLy8gdGhlIG11dGV4IG9wZXJhdGlvbnMgYXJlIGEgbm8tb3AsIHNpbmNlIHdlIGRvbid0
IG5lZWQgbG9ja2luZyB0aGVuCi0vLyBhbnl3YXk7IGFuZCBiKSB3ZSBjYW4gYmUgcXVpdGUgY29u
ZmlkZW50IG91ciBib29sIHdvbid0IGNoYW5nZQotLy8gc3RhdGUgYmV0d2VlbiBhIGNhbGwgdG8g
TG9jaygpIGFuZCBhIGNhbGwgdG8gVW5sb2NrKCkgKHRoYXQgd291bGQKLS8vIHJlcXVpcmUgYSBn
bG9iYWwgY29uc3RydWN0b3IgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQgdG8gY2FsbCBMb2NrKCkK
LS8vIGFuZCBhbm90aGVyIGdsb2JhbCBjb25zdHJ1Y3RvciBpbiBhbm90aGVyIHRyYW5zbGF0aW9u
IHVuaXQgdG8gY2FsbAotLy8gVW5sb2NrKCkgbGF0ZXIsIHdoaWNoIGlzIHByZXR0eSBwZXJ2ZXJz
ZSkuCi0vLwotLy8gVGhhdCBzYWlkLCBpdCdzIHRyaWNreSwgYW5kIGNhbiBjb25jZWl2YWJseSBm
YWlsOyBpdCdzIHNhZmVzdCB0bwotLy8gYXZvaWQgdHJ5aW5nIHRvIGFjcXVpcmUgYSBtdXRleCBp
biBhIGdsb2JhbCBjb25zdHJ1Y3RvciwgaWYgeW91Ci0vLyBjYW4uICBPbmUgd2F5IGl0IGNhbiBm
YWlsIGlzIHRoYXQgYSByZWFsbHkgc21hcnQgY29tcGlsZXIgbWlnaHQKLS8vIGluaXRpYWxpemUg
dGhlIGJvb2wgdG8gdHJ1ZSBhdCBzdGF0aWMtaW5pdGlhbGl6YXRpb24gdGltZSAodG9vCi0vLyBl
YXJseSkgcmF0aGVyIHRoYW4gYXQgZHluYW1pYy1pbml0aWFsaXphdGlvbiB0aW1lLiAgVG8gZGlz
Y291cmFnZQotLy8gdGhhdCwgd2Ugc2V0IGlzX3NhZmVfIHRvIHRydWUgaW4gY29kZSAobm90IHRo
ZSBjb25zdHJ1Y3RvcgotLy8gY29sb24taW5pdGlhbGl6ZXIpIGFuZCBzZXQgaXQgdG8gdHJ1ZSB2
aWEgYSBmdW5jdGlvbiB0aGF0IGFsd2F5cwotLy8gZXZhbHVhdGVzIHRvIHRydWUsIGJ1dCB0aGF0
IHRoZSBjb21waWxlciBjYW4ndCBrbm93IGFsd2F5cwotLy8gZXZhbHVhdGVzIHRvIHRydWUuICBU
aGlzIHNob3VsZCBiZSBnb29kIGVub3VnaC4KLS8vCi0vLyBBIHJlbGF0ZWQgaXNzdWUgaXMgY29k
ZSB0aGF0IGNvdWxkIHRyeSB0byBhY2Nlc3MgdGhlIG11dGV4Ci0vLyBhZnRlciBpdCdzIGJlZW4g
ZGVzdHJveWVkIGluIHRoZSBnbG9iYWwgZGVzdHJ1Y3RvcnMgKGJlY2F1c2UKLS8vIHRoZSBNdXRl
eCBnbG9iYWwgZGVzdHJ1Y3RvciBydW5zIGJlZm9yZSBzb21lIG90aGVyIGdsb2JhbAotLy8gZGVz
dHJ1Y3RvciwgdGhhdCB0cmllcyB0byBhY3F1aXJlIHRoZSBtdXRleCkuICBUaGUgd2F5IHdlCi0v
LyBkZWFsIHdpdGggdGhpcyBpcyBieSB0YWtpbmcgYSBjb25zdHJ1Y3RvciBhcmcgdGhhdCBnbG9i
YWwKLS8vIG11dGV4ZXMgc2hvdWxkIHBhc3MgaW4sIHRoYXQgY2F1c2VzIHRoZSBkZXN0cnVjdG9y
IHRvIGRvIG5vCi0vLyB3b3JrLiAgV2Ugc3RpbGwgZGVwZW5kIG9uIHRoZSBjb21waWxlciBub3Qg
ZG9pbmcgYW55dGhpbmcKLS8vIHdlaXJkIHRvIGEgTXV0ZXgncyBtZW1vcnkgYWZ0ZXIgaXQgaXMg
ZGVzdHJveWVkLCBidXQgZm9yIGEKLS8vIHN0YXRpYyBnbG9iYWwgdmFyaWFibGUsIHRoYXQncyBw
cmV0dHkgc2FmZS4KLQotI2lmbmRlZiBHRkxBR1NfTVVURVhfSF8KLSNkZWZpbmUgR0ZMQUdTX01V
VEVYX0hfCi0KLSNpbmNsdWRlICJnZmxhZ3NfZGVjbGFyZS5oIiAgICAgLy8gdG8gZmlndXJlIG91
dCBwdGhyZWFkcyBzdXBwb3J0Ci0KLSNpZiBkZWZpbmVkKE5PX1RIUkVBRFMpCi0gIHR5cGVkZWYg
aW50IE11dGV4VHlwZTsgICAgICAgIC8vIHRvIGtlZXAgYSBsb2NrLWNvdW50Ci0jZWxpZiBkZWZp
bmVkKE9TX1dJTkRPV1MpCi0jIGlmbmRlZiBXSU4zMl9MRUFOX0FORF9NRUFOCi0jICAgZGVmaW5l
IFdJTjMyX0xFQU5fQU5EX01FQU4gIC8vIFdlIG9ubHkgbmVlZCBtaW5pbWFsIGluY2x1ZGVzCi0j
IGVuZGlmCi0jIGlmbmRlZiBOT01JTk1BWAotIyAgIGRlZmluZSBOT01JTk1BWCAgICAgICAgICAg
ICAvLyBEb24ndCB3YW50IHdpbmRvd3MgdG8gb3ZlcnJpZGUgbWluKCkvbWF4KCkKLSMgZW5kaWYK
LSMgaWZkZWYgR01VVEVYX1RSWUxPQ0sKLSAgLy8gV2UgbmVlZCBXaW5kb3dzIE5UIG9yIGxhdGVy
IGZvciBUcnlFbnRlckNyaXRpY2FsU2VjdGlvbigpLiAgSWYgeW91Ci0gIC8vIGRvbid0IG5lZWQg
dGhhdCBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIHJlbW92ZSB0aGVzZSBfV0lOMzJfV0lOTlQKLSAg
Ly8gbGluZXMsIGFuZCBjaGFuZ2UgVHJ5TG9jaygpIHRvIGFzc2VydCgwKSBvciBzb21ldGhpbmcu
Ci0jICAgaWZuZGVmIF9XSU4zMl9XSU5OVAotIyAgICAgZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA0
MDAKLSMgICBlbmRpZgotIyBlbmRpZgotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gIHR5cGVkZWYg
Q1JJVElDQUxfU0VDVElPTiBNdXRleFR5cGU7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRCkg
JiYgZGVmaW5lZChIQVZFX1JXTE9DSykKLSAgLy8gTmVlZGVkIGZvciBwdGhyZWFkX3J3bG9ja18q
LiAgSWYgaXQgY2F1c2VzIHByb2JsZW1zLCB5b3UgY291bGQgdGFrZSBpdAotICAvLyBvdXQsIGJ1
dCB0aGVuIHlvdSdkIGhhdmUgdG8gdW5zZXQgSEFWRV9SV0xPQ0sgKGF0IGxlYXN0IG9uIGxpbnV4
IC0tIGl0Ci0gIC8vICpkb2VzKiBjYXVzZSBwcm9ibGVtcyBmb3IgRnJlZUJTRCwgb3IgTWFjT1NY
LCBidXQgaXNuJ3QgbmVlZGVkCi0gIC8vIGZvciBsb2NraW5nIHRoZXJlLikKLSMgaWZkZWYgX19s
aW51eF9fCi0jICAgaWYgX1hPUEVOX1NPVVJDRSA8IDUwMCAgICAgIC8vIGluY2x1ZGluZyBub3Qg
YmVpbmcgZGVmaW5lZCBhdCBhbGwKLSMgICAgIHVuZGVmIF9YT1BFTl9TT1VSQ0UKLSMgICAgIGRl
ZmluZSBfWE9QRU5fU09VUkNFIDUwMCAgLy8gbWF5IGJlIG5lZWRlZCB0byBnZXQgdGhlIHJ3bG9j
ayBjYWxscwotIyAgIGVuZGlmCi0jIGVuZGlmCi0jIGluY2x1ZGUgPHB0aHJlYWQuaD4KLSAgdHlw
ZWRlZiBwdGhyZWFkX3J3bG9ja190IE11dGV4VHlwZTsKLSNlbGlmIGRlZmluZWQoSEFWRV9QVEhS
RUFEKQotIyBpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gIHR5cGVkZWYgcHRocmVhZF9tdXRleF90IE11
dGV4VHlwZTsKLSNlbHNlCi0jIGVycm9yIE5lZWQgdG8gaW1wbGVtZW50IG11dGV4LmggZm9yIHlv
dXIgYXJjaGl0ZWN0dXJlLCBvciAjZGVmaW5lIE5PX1RIUkVBRFMKLSNlbmRpZgotCi0jaW5jbHVk
ZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgLy8gZm9yIGFib3J0KCkKLQot
I2RlZmluZSBNVVRFWF9OQU1FU1BBQ0UgZ2ZsYWdzX211dGV4X25hbWVzcGFjZQotCi1uYW1lc3Bh
Y2UgTVVURVhfTkFNRVNQQUNFIHsKLQotY2xhc3MgTXV0ZXggewotIHB1YmxpYzoKLSAgLy8gVGhp
cyBpcyB1c2VkIGZvciB0aGUgc2luZ2xlLWFyZyBjb25zdHJ1Y3RvcgotICBlbnVtIExpbmtlcklu
aXRpYWxpemVkIHsgTElOS0VSX0lOSVRJQUxJWkVEIH07Ci0KLSAgLy8gQ3JlYXRlIGEgTXV0ZXgg
dGhhdCBpcyBub3QgaGVsZCBieSBhbnlib2R5LiAgVGhpcyBjb25zdHJ1Y3RvciBpcwotICAvLyB0
eXBpY2FsbHkgdXNlZCBmb3IgTXV0ZXhlcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgb3IgdGhlIHN0
YWNrLgotICBpbmxpbmUgTXV0ZXgoKTsKLSAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgYmUg
dXNlZCBmb3IgZ2xvYmFsLCBzdGF0aWMgTXV0ZXggb2JqZWN0cy4KLSAgLy8gSXQgaW5oaWJpdHMg
d29yayBiZWluZyBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLCB3aGljaCBtYWtlcyBpdAotICAvLyBz
YWZlciBmb3IgY29kZSB0aGF0IHRyaWVzIHRvIGFjcWl1cmUgdGhpcyBtdXRleCBpbiB0aGVpciBn
bG9iYWwKLSAgLy8gZGVzdHJ1Y3Rvci4KLSAgaW5saW5lIE11dGV4KExpbmtlckluaXRpYWxpemVk
KTsKLQotICAvLyBEZXN0cnVjdG9yCi0gIGlubGluZSB+TXV0ZXgoKTsKLQotICBpbmxpbmUgdm9p
ZCBMb2NrKCk7ICAgIC8vIEJsb2NrIGlmIG5lZWRlZCB1bnRpbCBmcmVlIHRoZW4gYWNxdWlyZSBl
eGNsdXNpdmVseQotICBpbmxpbmUgdm9pZCBVbmxvY2soKTsgIC8vIFJlbGVhc2UgYSBsb2NrIGFj
cXVpcmVkIHZpYSBMb2NrKCkKLSNpZmRlZiBHTVVURVhfVFJZTE9DSwotICBpbmxpbmUgYm9vbCBU
cnlMb2NrKCk7IC8vIElmIGZyZWUsIExvY2soKSBhbmQgcmV0dXJuIHRydWUsIGVsc2UgcmV0dXJu
IGZhbHNlCi0jZW5kaWYKLSAgLy8gTm90ZSB0aGF0IG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBw
b3J0IHJlYWQtd3JpdGUgbG9ja3MsIHRoZXNlIG1heQotICAvLyBiZSBpbXBsZW1lbnRlZCBhcyBz
eW5vbnltcyB0byBMb2NrKCkgYW5kIFVubG9jaygpLiAgU28geW91IGNhbiB1c2UKLSAgLy8gdGhl
c2UgZm9yIGVmZmljaWVuY3ksIGJ1dCBkb24ndCB1c2UgdGhlbSBhbnlwbGFjZSB3aGVyZSBiZWlu
ZyBhYmxlCi0gIC8vIHRvIGRvIHNoYXJlZCByZWFkcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgZGVh
ZGxvY2suCi0gIGlubGluZSB2b2lkIFJlYWRlckxvY2soKTsgICAvLyBCbG9jayB1bnRpbCBmcmVl
IG9yIHNoYXJlZCB0aGVuIGFjcXVpcmUgYSBzaGFyZQotICBpbmxpbmUgdm9pZCBSZWFkZXJVbmxv
Y2soKTsgLy8gUmVsZWFzZSBhIHJlYWQgc2hhcmUgb2YgdGhpcyBNdXRleAotICBpbmxpbmUgdm9p
ZCBXcml0ZXJMb2NrKCkgeyBMb2NrKCk7IH0gICAgIC8vIEFjcXVpcmUgYW4gZXhjbHVzaXZlIGxv
Y2sKLSAgaW5saW5lIHZvaWQgV3JpdGVyVW5sb2NrKCkgeyBVbmxvY2soKTsgfSAvLyBSZWxlYXNl
IGEgbG9jayBmcm9tIFdyaXRlckxvY2soKQotCi0gcHJpdmF0ZToKLSAgTXV0ZXhUeXBlIG11dGV4
XzsKLSAgLy8gV2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY29tcGlsZXIgc2V0cyBpc19z
YWZlXyB0byB0cnVlIG9ubHkKLSAgLy8gd2hlbiB3ZSB0ZWxsIGl0IHRvLCBhbmQgbmV2ZXIgbWFr
ZXMgYXNzdW1wdGlvbnMgaXNfc2FmZV8gaXMKLSAgLy8gYWx3YXlzIHRydWUuICB2b2xhdGlsZSBp
cyB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZG8gdGhhdC4KLSAgdm9sYXRpbGUgYm9vbCBpc19z
YWZlXzsKLSAgLy8gVGhpcyBpbmRpY2F0ZXMgd2hpY2ggY29uc3RydWN0b3Igd2FzIGNhbGxlZC4K
LSAgYm9vbCBkZXN0cm95XzsKLQotICBpbmxpbmUgdm9pZCBTZXRJc1NhZmUoKSB7IGlzX3NhZmVf
ID0gdHJ1ZTsgfQotCi0gIC8vIENhdGNoIHRoZSBlcnJvciBvZiB3cml0aW5nIE11dGV4IHdoZW4g
aW50ZW5kaW5nIE11dGV4TG9jay4KLSAgTXV0ZXgoTXV0ZXgqIC8qaWdub3JlZCovKSB7fQotICAv
LyBEaXNhbGxvdyAiZXZpbCIgY29uc3RydWN0b3JzCi0gIE11dGV4KGNvbnN0IE11dGV4Jik7Ci0g
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IE11dGV4Jik7Ci19OwotCi0vLyBOb3cgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIE11dGV4IGZvciB2YXJpb3VzIHN5c3RlbXMKLSNpZiBkZWZpbmVkKE5PX1RIUkVB
RFMpCi0KLS8vIFdoZW4gd2UgZG9uJ3QgaGF2ZSB0aHJlYWRzLCB3ZSBjYW4gYmUgZWl0aGVyIHJl
YWRpbmcgb3Igd3JpdGluZywKLS8vIGJ1dCBub3QgYm90aC4gIFdlIGNhbiBoYXZlIGxvdHMgb2Yg
cmVhZGVycyBhdCBvbmNlIChpbiBuby10aHJlYWRzCi0vLyBtb2RlLCB0aGF0J3MgbW9zdCBsaWtl
bHkgdG8gaGFwcGVuIGluIHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyksCi0vLyBidXQgb25seSBv
bmUgd3JpdGVyLiAgV2UgcmVwcmVzZW50IHRoaXMgYnkgaGF2aW5nIG11dGV4XyBiZSAtMSB3aGVu
Ci0vLyB3cml0aW5nIGFuZCBhIG51bWJlciA+IDAgd2hlbiByZWFkaW5nIChhbmQgMCB3aGVuIG5v
IGxvY2sgaXMgaGVsZCkuCi0vLwotLy8gSW4gZGVidWcgbW9kZSwgd2UgYXNzZXJ0IHRoZXNlIGlu
dmFyaWFudHMsIHdoaWxlIGluIG5vbi1kZWJ1ZyBtb2RlCi0vLyB3ZSBkbyBub3RoaW5nLCBmb3Ig
ZWZmaWNpZW5jeS4gIFRoYXQncyB3aHkgZXZlcnl0aGluZyBpcyBpbiBhbgotLy8gYXNzZXJ0Lgot
Ci1NdXRleDo6TXV0ZXgoKSA6IG11dGV4XygwKSB7IH0KLU11dGV4OjpNdXRleChNdXRleDo6TGlu
a2VySW5pdGlhbGl6ZWQpIDogbXV0ZXhfKDApIHsgfQotTXV0ZXg6On5NdXRleCgpICAgICAgICAg
ICAgeyBhc3NlcnQobXV0ZXhfID09IDApOyB9Ci12b2lkIE11dGV4OjpMb2NrKCkgICAgICAgICB7
IGFzc2VydCgtLW11dGV4XyA9PSAtMSk7IH0KLXZvaWQgTXV0ZXg6OlVubG9jaygpICAgICAgIHsg
YXNzZXJ0KG11dGV4XysrID09IC0xKTsgfQotI2lmZGVmIEdNVVRFWF9UUllMT0NLCi1ib29sIE11
dGV4OjpUcnlMb2NrKCkgICAgICB7IGlmIChtdXRleF8pIHJldHVybiBmYWxzZTsgTG9jaygpOyBy
ZXR1cm4gdHJ1ZTsgfQotI2VuZGlmCi12b2lkIE11dGV4OjpSZWFkZXJMb2NrKCkgICB7IGFzc2Vy
dCgrK211dGV4XyA+IDApOyB9Ci12b2lkIE11dGV4OjpSZWFkZXJVbmxvY2soKSB7IGFzc2VydCht
dXRleF8tLSA+IDApOyB9Ci0KLSNlbGlmIGRlZmluZWQoT1NfV0lORE9XUykKLQotTXV0ZXg6Ok11
dGV4KCkgOiBkZXN0cm95Xyh0cnVlKSB7Ci0gIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJm11
dGV4Xyk7Ci0gIFNldElzU2FmZSgpOwotfQotTXV0ZXg6Ok11dGV4KExpbmtlckluaXRpYWxpemVk
KSA6IGRlc3Ryb3lfKGZhbHNlKSB7Ci0gIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oJm11dGV4
Xyk7Ci0gIFNldElzU2FmZSgpOwotfQotTXV0ZXg6On5NdXRleCgpICAgICAgICAgICAgeyBpZiAo
ZGVzdHJveV8pIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmbXV0ZXhfKTsgfQotdm9pZCBNdXRleDo6
TG9jaygpICAgICAgICAgeyBpZiAoaXNfc2FmZV8pIEVudGVyQ3JpdGljYWxTZWN0aW9uKCZtdXRl
eF8pOyB9Ci12b2lkIE11dGV4OjpVbmxvY2soKSAgICAgICB7IGlmIChpc19zYWZlXykgTGVhdmVD
cml0aWNhbFNlY3Rpb24oJm11dGV4Xyk7IH0KLSNpZmRlZiBHTVVURVhfVFJZTE9DSwotYm9vbCBN
dXRleDo6VHJ5TG9jaygpICAgICAgeyByZXR1cm4gaXNfc2FmZV8gPwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHJ5RW50ZXJDcml0aWNhbFNlY3Rpb24oJm11dGV4XykgIT0gMCA6
IHRydWU7IH0KLSNlbmRpZgotdm9pZCBNdXRleDo6UmVhZGVyTG9jaygpICAgeyBMb2NrKCk7IH0g
ICAgICAvLyB3ZSBkb24ndCBoYXZlIHJlYWQtd3JpdGUgbG9ja3MKLXZvaWQgTXV0ZXg6OlJlYWRl
clVubG9jaygpIHsgVW5sb2NrKCk7IH0KLQotI2VsaWYgZGVmaW5lZChIQVZFX1BUSFJFQUQpICYm
IGRlZmluZWQoSEFWRV9SV0xPQ0spCi0KLSNkZWZpbmUgU0FGRV9QVEhSRUFEKGZuY2FsbCkgIGRv
IHsgICAvKiBydW4gZm5jYWxsIGlmIGlzX3NhZmVfIGlzIHRydWUgKi8gIFwKLSAgaWYgKGlzX3Nh
ZmVfICYmIGZuY2FsbCgmbXV0ZXhfKSAhPSAwKSBhYm9ydCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLX0gd2hpbGUgKDApCi0KLU11dGV4OjpNdXRleCgpIDogZGVzdHJveV8odHJ1ZSkg
ewotICBTZXRJc1NhZmUoKTsKLSAgaWYgKGlzX3NhZmVfICYmIHB0aHJlYWRfcndsb2NrX2luaXQo
Jm11dGV4XywgTlVMTCkgIT0gMCkgYWJvcnQoKTsKLX0KLU11dGV4OjpNdXRleChNdXRleDo6TGlu
a2VySW5pdGlhbGl6ZWQpIDogZGVzdHJveV8oZmFsc2UpIHsKLSAgU2V0SXNTYWZlKCk7Ci0gIGlm
IChpc19zYWZlXyAmJiBwdGhyZWFkX3J3bG9ja19pbml0KCZtdXRleF8sIE5VTEwpICE9IDApIGFi
b3J0KCk7Ci19Ci1NdXRleDo6fk11dGV4KCkgICAgICAgeyBpZiAoZGVzdHJveV8pIFNBRkVfUFRI
UkVBRChwdGhyZWFkX3J3bG9ja19kZXN0cm95KTsgfQotdm9pZCBNdXRleDo6TG9jaygpICAgICAg
ICAgeyBTQUZFX1BUSFJFQUQocHRocmVhZF9yd2xvY2tfd3Jsb2NrKTsgfQotdm9pZCBNdXRleDo6
VW5sb2NrKCkgICAgICAgeyBTQUZFX1BUSFJFQUQocHRocmVhZF9yd2xvY2tfdW5sb2NrKTsgfQot
I2lmZGVmIEdNVVRFWF9UUllMT0NLCi1ib29sIE11dGV4OjpUcnlMb2NrKCkgICAgICB7IHJldHVy
biBpc19zYWZlXyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9yd2xv
Y2tfdHJ5d3Jsb2NrKCZtdXRleF8pID09IDAgOiB0cnVlOyB9Ci0jZW5kaWYKLXZvaWQgTXV0ZXg6
OlJlYWRlckxvY2soKSAgIHsgU0FGRV9QVEhSRUFEKHB0aHJlYWRfcndsb2NrX3JkbG9jayk7IH0K
LXZvaWQgTXV0ZXg6OlJlYWRlclVubG9jaygpIHsgU0FGRV9QVEhSRUFEKHB0aHJlYWRfcndsb2Nr
X3VubG9jayk7IH0KLSN1bmRlZiBTQUZFX1BUSFJFQUQKLQotI2VsaWYgZGVmaW5lZChIQVZFX1BU
SFJFQUQpCi0KLSNkZWZpbmUgU0FGRV9QVEhSRUFEKGZuY2FsbCkgIGRvIHsgICAvKiBydW4gZm5j
YWxsIGlmIGlzX3NhZmVfIGlzIHRydWUgKi8gIFwKLSAgaWYgKGlzX3NhZmVfICYmIGZuY2FsbCgm
bXV0ZXhfKSAhPSAwKSBhYm9ydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gd2hp
bGUgKDApCi0KLU11dGV4OjpNdXRleCgpIDogZGVzdHJveV8odHJ1ZSkgewotICBTZXRJc1NhZmUo
KTsKLSAgaWYgKGlzX3NhZmVfICYmIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSAh
PSAwKSBhYm9ydCgpOwotfQotTXV0ZXg6Ok11dGV4KE11dGV4OjpMaW5rZXJJbml0aWFsaXplZCkg
OiBkZXN0cm95XyhmYWxzZSkgewotICBTZXRJc1NhZmUoKTsKLSAgaWYgKGlzX3NhZmVfICYmIHB0
aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSAhPSAwKSBhYm9ydCgpOwotfQotTXV0ZXg6
On5NdXRleCgpICAgICAgIHsgaWYgKGRlc3Ryb3lfKSBTQUZFX1BUSFJFQUQocHRocmVhZF9tdXRl
eF9kZXN0cm95KTsgfQotdm9pZCBNdXRleDo6TG9jaygpICAgICAgICAgeyBTQUZFX1BUSFJFQUQo
cHRocmVhZF9tdXRleF9sb2NrKTsgfQotdm9pZCBNdXRleDo6VW5sb2NrKCkgICAgICAgeyBTQUZF
X1BUSFJFQUQocHRocmVhZF9tdXRleF91bmxvY2spOyB9Ci0jaWZkZWYgR01VVEVYX1RSWUxPQ0sK
LWJvb2wgTXV0ZXg6OlRyeUxvY2soKSAgICAgIHsgcmV0dXJuIGlzX3NhZmVfID8KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmbXV0ZXhfKSA9
PSAwIDogdHJ1ZTsgfQotI2VuZGlmCi12b2lkIE11dGV4OjpSZWFkZXJMb2NrKCkgICB7IExvY2so
KTsgfQotdm9pZCBNdXRleDo6UmVhZGVyVW5sb2NrKCkgeyBVbmxvY2soKTsgfQotI3VuZGVmIFNB
RkVfUFRIUkVBRAotCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFNvbWUgaGVs
cGVyIGNsYXNzZXMKLQotLy8gTXV0ZXhMb2NrKG11KSBhY3F1aXJlcyBtdSB3aGVuIGNvbnN0cnVj
dGVkIGFuZCByZWxlYXNlcyBpdCB3aGVuIGRlc3Ryb3llZC4KLWNsYXNzIE11dGV4TG9jayB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBNdXRleExvY2soTXV0ZXggKm11KSA6IG11XyhtdSkgeyBtdV8t
PkxvY2soKTsgfQotICB+TXV0ZXhMb2NrKCkgeyBtdV8tPlVubG9jaygpOyB9Ci0gcHJpdmF0ZToK
LSAgTXV0ZXggKiBjb25zdCBtdV87Ci0gIC8vIERpc2FsbG93ICJldmlsIiBjb25zdHJ1Y3RvcnMK
LSAgTXV0ZXhMb2NrKGNvbnN0IE11dGV4TG9jayYpOwotICB2b2lkIG9wZXJhdG9yPShjb25zdCBN
dXRleExvY2smKTsKLX07Ci0KLS8vIFJlYWRlck11dGV4TG9jayBhbmQgV3JpdGVyTXV0ZXhMb2Nr
IGRvIHRoZSBzYW1lLCBmb3Igcndsb2NrcwotY2xhc3MgUmVhZGVyTXV0ZXhMb2NrIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IFJlYWRlck11dGV4TG9jayhNdXRleCAqbXUpIDogbXVfKG11KSB7IG11
Xy0+UmVhZGVyTG9jaygpOyB9Ci0gIH5SZWFkZXJNdXRleExvY2soKSB7IG11Xy0+UmVhZGVyVW5s
b2NrKCk7IH0KLSBwcml2YXRlOgotICBNdXRleCAqIGNvbnN0IG11XzsKLSAgLy8gRGlzYWxsb3cg
ImV2aWwiIGNvbnN0cnVjdG9ycwotICBSZWFkZXJNdXRleExvY2soY29uc3QgUmVhZGVyTXV0ZXhM
b2NrJik7Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFJlYWRlck11dGV4TG9jayYpOwotfTsKLQot
Y2xhc3MgV3JpdGVyTXV0ZXhMb2NrIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdyaXRlck11dGV4
TG9jayhNdXRleCAqbXUpIDogbXVfKG11KSB7IG11Xy0+V3JpdGVyTG9jaygpOyB9Ci0gIH5Xcml0
ZXJNdXRleExvY2soKSB7IG11Xy0+V3JpdGVyVW5sb2NrKCk7IH0KLSBwcml2YXRlOgotICBNdXRl
eCAqIGNvbnN0IG11XzsKLSAgLy8gRGlzYWxsb3cgImV2aWwiIGNvbnN0cnVjdG9ycwotICBXcml0
ZXJNdXRleExvY2soY29uc3QgV3JpdGVyTXV0ZXhMb2NrJik7Ci0gIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFdyaXRlck11dGV4TG9jayYpOwotfTsKLQotLy8gQ2F0Y2ggYnVnIHdoZXJlIHZhcmlhYmxl
IG5hbWUgaXMgb21pdHRlZCwgZS5nLiBNdXRleExvY2sgKCZtdSk7Ci0jZGVmaW5lIE11dGV4TG9j
ayh4KSBDT01QSUxFX0FTU0VSVCgwLCBtdXRleF9sb2NrX2RlY2xfbWlzc2luZ192YXJfbmFtZSkK
LSNkZWZpbmUgUmVhZGVyTXV0ZXhMb2NrKHgpIENPTVBJTEVfQVNTRVJUKDAsIHJtdXRleF9sb2Nr
X2RlY2xfbWlzc2luZ192YXJfbmFtZSkKLSNkZWZpbmUgV3JpdGVyTXV0ZXhMb2NrKHgpIENPTVBJ
TEVfQVNTRVJUKDAsIHdtdXRleF9sb2NrX2RlY2xfbWlzc2luZ192YXJfbmFtZSkKLQotfSAgLy8g
bmFtZXNwYWNlIE1VVEVYX05BTUVTUEFDRQotCi0KLSNlbmRpZiAgLyogI2RlZmluZSBHRkxBR1Nf
TVVURVhfSF9fICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvdXRpbC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjU5YjM4ZGRjNGQ4MDllYmI0OTI2ZDY4NzEyNTMw
MmZjOGU0MmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy9zcmMvdXRpbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzc0ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAoYykgMjAxMSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLyAtLS0KLS8vCi0vLyBTb21l
IGdlbmVyaWNhbGx5IHVzZWZ1bCB1dGlsaXR5IHJvdXRpbmVzIHRoYXQgaW4gZ29vZ2xlLWxhbmQg
d291bGQKLS8vIGJlIHRoZWlyIG93biBwcm9qZWN0cy4gIFdlIG1ha2UgYSBzaG9ydGVuZWQgdmVy
c2lvbiBoZXJlLgotCi0jaWZuZGVmIEdGTEFHU19VVElMX0hfCi0jZGVmaW5lIEdGTEFHU19VVElM
X0hfCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1
ZGUgPGNvbmZpZy5oPgotI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotIyAgaW5jbHVkZSA8aW50dHlw
ZXMuaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGFyZy5oPiAgICAgLy8gZm9yIHZhXyoKLSNpbmNs
dWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPgot
I2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2lmZGVmIEhBVkVfU1lTX1NU
QVRfSAotIyAgaW5jbHVkZSA8c3lzL3N0YXQuaD4gLy8gZm9yIG1rZGlyCi0jZW5kaWYKLQotCi1u
YW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRSB7Ci0KLQotLy8gVGhpcyBpcyB1c2VkIGZvciB1bml0
dGVzdHMgZm9yIGRlYXRoLXRlc3RpbmcuICBJdCBpcyBkZWZpbmVkIGluIGdmbGFncy5jYy4KLWV4
dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCAoKmdmbGFnc19leGl0ZnVuYykoaW50KTsKLQotLy8g
V29yayBwcm9wZXJseSBpZiBlaXRoZXIgc3RydG9sbCBvciBzdHJ0b3EgaXMgb24gdGhpcyBzeXN0
ZW0uCi0jaWYgZGVmaW5lZChzdHJ0b2xsKSB8fCBkZWZpbmVkKEhBVkVfU1RSVE9MTCkKLSMgIGRl
ZmluZSBzdHJ0bzY0ICBzdHJ0b2xsCi0jICBkZWZpbmUgc3RydG91NjQgc3RydG91bGwKLSNlbGlm
IGRlZmluZWQoSEFWRV9TVFJUT1EpCi0jICBkZWZpbmUgc3RydG82NCAgc3RydG9xCi0jICBkZWZp
bmUgc3RydG91NjQgc3RydG91cQotLy8gTmVpdGhlciBzdHJ0b2xsIG5vciBzdHJ0b3EgYXJlIGRl
ZmluZWQuICBJIGhvcGUgc3RydG9sIHdvcmtzIQotI2Vsc2UKLSMgIGRlZmluZSBzdHJ0bzY0ICBz
dHJ0b2wKLSMgIGRlZmluZSBzdHJ0b3U2NCBzdHJ0b3VsCi0jZW5kaWYKLQotLy8gSWYgd2UgaGF2
ZSBpbnR0eXBlcy5oLCBpdCB3aWxsIGhhdmUgZGVmaW5lZCBQUklkMzIvZXRjIGZvciB1cy4KLS8v
IElmIG5vdCwgdGFrZSBvdXIgYmVzdCBndWVzcy4KLSNpZm5kZWYgUFJJZDMyCi0jICBkZWZpbmUg
UFJJZDMyICJkIgotI2VuZGlmCi0jaWZuZGVmIFBSSWQ2NAotIyAgZGVmaW5lIFBSSWQ2NCAibGxk
IgotI2VuZGlmCi0jaWZuZGVmIFBSSXU2NAotIyAgZGVmaW5lIFBSSXU2NCAibGx1IgotI2VuZGlm
Ci0KLXR5cGVkZWYgc2lnbmVkIGNoYXIgaW50ODsKLXR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50
ODsKLQotLy8gLS0gdXRpbGl0eSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlIDxib29sIGI+IHN0cnVjdCBD
b21waWxlQXNzZXJ0OwotdGVtcGxhdGUgPD4gc3RydWN0IENvbXBpbGVBc3NlcnQ8dHJ1ZT4ge307
Ci0jZGVmaW5lIENPTVBJTEVfQVNTRVJUKGV4cHIsIG1zZykgXAotICBlbnVtIHsgYXNzZXJ0XyMj
bXNnID0gc2l6ZW9mKENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4pIH0KLQotLy8gUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFuIGFycmF5LgotI2RlZmluZSBhcnJheXNpemUoYXJy
KSAoc2l6ZW9mKGFycikvc2l6ZW9mKCooYXJyKSkpCi0KLQotLy8gLS0gbG9nZ2luZyBhbmQgdGVz
dGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotLy8gRm9yIG5vdywgd2UgaWdub3JlIHRoZSBsZXZlbCBmb3IgbG9nZ2luZywgYW5kIGRvbid0
IHNob3cgKlZMT0cncyBhdAotLy8gYWxsLCBleGNlcHQgYnkgaGFuZC1lZGl0aW5nIHRoZSBsaW5l
cyBiZWxvdwotI2RlZmluZSBMT0cobGV2ZWwpICAgIHN0ZDo6Y2VycgotI2RlZmluZSBWTE9HKGxl
dmVsKSAgIGlmICh0cnVlKSB7fSBlbHNlIHN0ZDo6Y2VycgotI2RlZmluZSBEVkxPRyhsZXZlbCkg
IGlmICh0cnVlKSB7fSBlbHNlIHN0ZDo6Y2VycgotCi0vLyBDSEVDSyBkaWVzIHdpdGggYSBmYXRh
bCBlcnJvciBpZiBjb25kaXRpb24gaXMgbm90IHRydWUuICBJdCBpcyAqbm90KgotLy8gY29udHJv
bGxlZCBieSBOREVCVUcsIHNvIHRoZSBjaGVjayB3aWxsIGJlIGV4ZWN1dGVkIHJlZ2FyZGxlc3Mg
b2YKLS8vIGNvbXBpbGF0aW9uIG1vZGUuICBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gZG8gdGhp
bmdzIGxpa2U6Ci0vLyAgICBDSEVDSyhmcC0+V3JpdGUoeCkgPT0gNCkKLS8vIFdlIGFsbG93IHN0
cmVhbS1saWtlIG9iamVjdHMgYWZ0ZXIgdGhpcyBmb3IgZGVidWdnaW5nLCBidXQgdGhleSdyZSBp
Z25vcmVkLgotI2RlZmluZSBFWFBFQ1RfVFJVRShjb25kaXRpb24pICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgaWYgKHRydWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCEoY29uZGl0aW9uKSkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgZnByaW50ZihzdGRl
cnIsICJDaGVjayBmYWlsZWQ6ICVzXG4iLCAjY29uZGl0aW9uKTsgICAgICAgIFwKLSAgICAgIGV4
aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICB9IGVsc2Ugc3RkOjpjZXJyIDw8ICIiCi0KLSNkZWZpbmUgRVhQRUNUX09Q
KG9wLCB2YWwxLCB2YWwyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgaWYgKHRydWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoISgodmFsMSkgb3AgKHZhbDIpKSkgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGZwcmludGYoc3RkZXJy
LCAiQ2hlY2sgZmFpbGVkOiAlcyAlcyAlc1xuIiwgI3ZhbDEsICNvcCwgI3ZhbDIpOyAgIFwKLSAg
ICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSBlbHNlIHN0ZDo6Y2VyciA8PCAi
IgotCi0jZGVmaW5lIEVYUEVDVF9FUSh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoPT0sIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9ORSh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoIT0sIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9MRSh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoPD0sIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9MVCh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoPCAsIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9HRSh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoPj0sIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9HVCh2YWwxLCB2YWwyKSBFWFBFQ1RfT1AoPiAsIHZhbDEsIHZh
bDIpCi0jZGVmaW5lIEVYUEVDVF9GQUxTRShjb25kKSAgICBFWFBFQ1RfVFJVRSghKGNvbmQpKQot
Ci0vLyBDOTkgZGVjbGFyZXMgaXNuYW4gYW5kIGlzaW5mIHNob3VsZCBiZSBtYWNyb3MsIHNvIHRo
ZSAjaWZkZWYgdGVzdAotLy8gc2hvdWxkIGJlIHJlbGlhYmxlIGV2ZXJ5d2hlcmUuICBPZiBjb3Vy
c2UsIGl0J3Mgbm90LCBidXQgdGhlc2UKLS8vIGFyZSB0ZXN0aW5nIHBlcnR0eSBtYXJnaW5hbCBm
dW5jdGlvbmFsaXR5IGFueXdheSwgc28gaXQncyBvayB0bwotLy8gbm90LXJ1biB0aGVtIGV2ZW4g
aW4gc2l0dWF0aW9ucyB0aGV5IG1pZ2h0LCB3aXRoIGVmZm9ydCwgYmUgbWFkZSB0byB3b3JrLgot
I2lmZGVmIGlzbmFuICAvLyBTb21lIGNvbXBpbGVycywgbGlrZSBzdW4ncyBmb3IgU29sYXJpcyAx
MCwgZG9uJ3QgZGVmaW5lIHRoaXMKLSNkZWZpbmUgRVhQRUNUX05BTihhcmcpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICghaXNuYW4o
YXJnKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
IGZwcmludGYoc3RkZXJyLCAiQ2hlY2sgZmFpbGVkOiBpc25hbiglcylcbiIsICNhcmcpOyAgICAg
ICBcCi0gICAgICBleGl0KDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSB3aGlsZSAoMCkKLSNlbHNlCi0jZGVmaW5lIEVY
UEVDVF9OQU4oYXJnKQotI2VuZGlmCi0KLSNpZmRlZiBpc2luZiAgLy8gU29tZSBjb21waWxlcnMs
IGxpa2Ugc3VuJ3MgZm9yIFNvbGFyaXMgMTAsIGRvbid0IGRlZmluZSB0aGlzCi0jZGVmaW5lIEVY
UEVDVF9JTkYoYXJnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBpZiAoIWlzaW5mKGFyZykpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkNoZWNrIGZhaWxlZDog
aXNpbmYoJXMpXG4iLCAjYXJnKTsgICAgICAgXAotICAgICAgZXhpdCgxKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gd2hp
bGUgKDApCi0jZWxzZQotI2RlZmluZSBFWFBFQ1RfSU5GKGFyZykKLSNlbmRpZgotCi0jZGVmaW5l
IEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFsMikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCgodmFsMSkgPCAodmFsMikgLSAw
LjAwMSB8fCAodmFsMSkgPiAodmFsMikgKyAwLjAwMSkpIHsgICAgICAgICBcCi0gICAgICBmcHJp
bnRmKHN0ZGVyciwgIkNoZWNrIGZhaWxlZDogJXMgPT0gJXNcbiIsICN2YWwxLCAjdmFsMik7ICAg
ICAgICBcCi0gICAgICBleGl0KDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gd2hpbGUgKDAp
Ci0KLSNkZWZpbmUgRVhQRUNUX1NUUkVRKHZhbDEsIHZhbDIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RyY21wKCh2
YWwxKSwgKHZhbDIpKSAhPSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2hlY2sgZmFpbGVkOiBzdHJlcSglcywgJXMpXG4iLCAj
dmFsMSwgI3ZhbDIpOyAgIFwKLSAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
fSB3aGlsZSAoMCkKLQotLy8gQ2FsbCB0aGlzIGluIGEgLmNjIGZpbGUgd2hlcmUgeW91IHdpbGwg
bGF0ZXIgY2FsbCBSVU5fQUxMX1RFU1RTIGluIG1haW4oKS4KLSNkZWZpbmUgVEVTVF9JTklUICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
c3RhdGljIHN0ZDo6dmVjdG9yPHZvaWQgKCopKCk+IGdfdGVzdGxpc3Q7ICAvKiB0aGUgdGVzdHMg
dG8gcnVuICovICAgIFwKLSAgc3RhdGljIGludCBSVU5fQUxMX1RFU1RTKCkgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGQ6OnZlY3Rvcjx2b2lkICgq
KSgpPjo6Y29uc3RfaXRlcmF0b3IgaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBm
b3IgKGl0ID0gZ190ZXN0bGlzdC5iZWdpbigpOyBpdCAhPSBnX3Rlc3RsaXN0LmVuZCgpOyArK2l0
KSB7ICAgICAgIFwKLSAgICAgICgqaXQpKCk7ICAgLyogVGhlIHRlc3Qgd2lsbCBlcnJvci1leGl0
IGlmIHRoZXJlJ3MgYSBwcm9ibGVtLiAqLyAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIlxuUGFzc2VkICVkIHRlc3RzXG5cblBBU1NcbiIsICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oZ190ZXN0bGlzdC5zaXplKCkp
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0vLyBO
b3RlIHRoYXQgdGhpcyBtYWNybyB1c2VzIGEgRmxhZ1NhdmVyIHRvIGtlZXAgdGVzdHMgaXNvbGF0
ZWQuCi0jZGVmaW5lIFRFU1QoYSwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgc3RydWN0IFRlc3RfIyNhIyNfIyNiIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFRlc3RfIyNhIyNfIyNiKCkgeyBnX3Rlc3RsaXN0LnB1c2hfYmFjaygmUnVu
KTsgfSAgICBcCi0gICAgc3RhdGljIHZvaWQgUnVuKCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgIEZsYWdTYXZlciBmczsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgZnByaW50ZihzdGRlcnIsICJSdW5uaW5nIHRlc3QgJXMvJXNc
biIsICNhLCAjYik7ICBcCi0gICAgICBSdW5UZXN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyB2b2lkIFJ1blRlc3QoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RhdGljIFRlc3RfIyNhIyNfIyNiIGdfdGVzdF8j
I2EjI18jI2I7ICAgICAgICAgICAgICAgXAotICB2b2lkIFRlc3RfIyNhIyNfIyNiOjpSdW5UZXN0
KCkKLQotLy8gVGhpcyBpcyBhIGR1bW15IGNsYXNzIHRoYXQgZWFzZXMgdGhlIGdvb2dsZS0+b3Bl
bnNvdXJjZSB0cmFuc2l0aW9uLgotbmFtZXNwYWNlIHRlc3RpbmcgewotY2xhc3MgVGVzdCB7fTsK
LX0KLQotLy8gQ2FsbCB0aGlzIGluIGEgLmNjIGZpbGUgd2hlcmUgeW91IHdpbGwgbGF0ZXIgY2Fs
bCBFWFBFQ1RfREVBVEgKLSNkZWZpbmUgRVhQRUNUX0RFQVRIX0lOSVQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICBzdGF0aWMgYm9vbCBnX2NhbGxlZF9leGl0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gIHN0YXRpYyB2b2lkIENhbGxlZEV4aXQoaW50KSB7IGdfY2Fs
bGVkX2V4aXQgPSB0cnVlOyB9Ci0KLSNkZWZpbmUgRVhQRUNUX0RFQVRIKGZuLCBtc2cpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBnX2NhbGxlZF9leGl0ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBnZmxhZ3NfZXhpdGZ1bmMgPSAmQ2FsbGVkRXhpdDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZuOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdmbGFnc19l
eGl0ZnVuYyA9ICZleGl0OyAgICAvKiBzZXQgYmFjayB0byBpdHMgZGVmYXVsdCAqLyBcCi0gICAg
aWYgKCFnX2NhbGxlZF9leGl0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkZ1bmN0aW9uIGRpZG4ndCBkaWUg
KCVzKTogJXNcbiIsIG1zZywgI2ZuKTsgICAgICBcCi0gICAgICBleGl0KDEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgR1RFU1RfSEFTX0RFQVRIX1RFU1Qg
MQotCi0vLyAtLSBwYXRoIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gVHJpZXMgdG8gY3JlYXRlIHRoZSBkaXJl
Y3RvcnkgcGF0aCBhcyBhIHRlbXAtZGlyLiAgSWYgaXQgZmFpbHMsCi0vLyBjaGFuZ2VzIHBhdGgg
dG8gc29tZSBkaXJlY3RvcnkgaXQgKmNhbiogY3JlYXRlLgotI2lmIGRlZmluZWQoX19NSU5HVzMy
X18pCi0jaW5jbHVkZSA8aW8uaD4KLWlubGluZSB2b2lkIE1ha2VUbXBkaXIoc3RkOjpzdHJpbmcq
IHBhdGgpIHsKLSAgaWYgKCFwYXRoLT5lbXB0eSgpKSB7Ci0JcGF0aC0+YXBwZW5kKCIvZ2ZsYWdz
X3VuaXR0ZXN0X3Rlc3RkaXIiKTsKLQlpbnQgZXJyID0gbWtkaXIocGF0aC0+Y19zdHIoKSk7Ci0J
aWYgKGVyciA9PSAwIHx8IGVycm5vID09IEVFWElTVCkgcmV0dXJuOwotICB9Ci0gIC8vIEkgaGFk
IHRyb3VibGUgY3JlYXRpbmcgYSBkaXJlY3RvcnkgaW4gL3RtcCBmcm9tIG1pbmd3Ci0gICpwYXRo
ID0gIi4vZ2ZsYWdzX3VuaXR0ZXN0IjsKLSAgbWtkaXIocGF0aC0+Y19zdHIoKSk7Ci19Ci0jZWxp
ZiBkZWZpbmVkKF9NU0NfVkVSKQotI2luY2x1ZGUgPGRpcmVjdC5oPgotaW5saW5lIHZvaWQgTWFr
ZVRtcGRpcihzdGQ6OnN0cmluZyogcGF0aCkgewotICBpZiAoIXBhdGgtPmVtcHR5KCkpIHsKLQlp
bnQgZXJyID0gX21rZGlyKHBhdGgtPmNfc3RyKCkpOwotCWlmIChlcnIgPT0gMCB8fCBlcnJubyA9
PSBFRVhJU1QpIHJldHVybjsKLSAgfQotICBjaGFyIHRtcHBhdGhfYnVmZmVyWzEwMjRdOwotICBp
bnQgdG1wcGF0aF9sZW4gPSBHZXRUZW1wUGF0aEEoc2l6ZW9mKHRtcHBhdGhfYnVmZmVyKSwgdG1w
cGF0aF9idWZmZXIpOwotICBhc3NlcnQodG1wcGF0aF9sZW4gPiAwICYmIHRtcHBhdGhfbGVuIDwg
c2l6ZW9mKHRtcHBhdGhfYnVmZmVyKSk7Ci0gIGFzc2VydCh0bXBwYXRoX2J1ZmZlclt0bXBwYXRo
X2xlbiAtIDFdID09ICdcXCcpOyAgIC8vIEFQSSBndWFyYW50ZWVzIGl0Ci0gICpwYXRoID0gc3Rk
OjpzdHJpbmcodG1wcGF0aF9idWZmZXIpICsgImdmbGFnc191bml0dGVzdCI7Ci0gIF9ta2Rpcihw
YXRoLT5jX3N0cigpKTsKLX0KLSNlbHNlCi1pbmxpbmUgdm9pZCBNYWtlVG1wZGlyKHN0ZDo6c3Ry
aW5nKiBwYXRoKSB7Ci0gIGlmICghcGF0aC0+ZW1wdHkoKSkgewotCWludCBlcnIgPSBta2Rpcihw
YXRoLT5jX3N0cigpLCAwNzU1KTsKLQlpZiAoZXJyID09IDAgfHwgZXJybm8gPT0gRUVYSVNUKSBy
ZXR1cm47Ci0gIH0KLSAgbWtkaXIoIi90bXAvZ2ZsYWdzX3VuaXR0ZXN0IiwgMDc1NSk7Ci19Ci0j
ZW5kaWYKLQotLy8gLS0gc3RyaW5nIHJvdXRpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSB2b2lkIEludGVybmFsU3Ry
aW5nUHJpbnRmKHN0ZDo6c3RyaW5nKiBvdXRwdXQsIGNvbnN0IGNoYXIqIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXApIHsKLSAgY2hhciBzcGFjZVsx
MjhdOyAgICAvLyB0cnkgYSBzbWFsbCBidWZmZXIgYW5kIGhvcGUgaXQgZml0cwotCi0gIC8vIEl0
J3MgcG9zc2libGUgZm9yIG1ldGhvZHMgdGhhdCB1c2UgYSB2YV9saXN0IHRvIGludmFsaWRhdGUK
LSAgLy8gdGhlIGRhdGEgaW4gaXQgdXBvbiB1c2UuICBUaGUgZml4IGlzIHRvIG1ha2UgYSBjb3B5
Ci0gIC8vIG9mIHRoZSBzdHJ1Y3R1cmUgYmVmb3JlIHVzaW5nIGl0IGFuZCB1c2UgdGhhdCBjb3B5
IGluc3RlYWQuCi0gIHZhX2xpc3QgYmFja3VwX2FwOwotICB2YV9jb3B5KGJhY2t1cF9hcCwgYXAp
OwotICBpbnQgYnl0ZXNfd3JpdHRlbiA9IHZzbnByaW50ZihzcGFjZSwgc2l6ZW9mKHNwYWNlKSwg
Zm9ybWF0LCBiYWNrdXBfYXApOwotICB2YV9lbmQoYmFja3VwX2FwKTsKLQotICBpZiAoKGJ5dGVz
X3dyaXR0ZW4gPj0gMCkgJiYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNfd3JpdHRlbikgPCBz
aXplb2Yoc3BhY2UpKSkgewotICAgIG91dHB1dC0+YXBwZW5kKHNwYWNlLCBieXRlc193cml0dGVu
KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBSZXBlYXRlZGx5IGluY3JlYXNlIGJ1ZmZlciBz
aXplIHVudGlsIGl0IGZpdHMuCi0gIGludCBsZW5ndGggPSBzaXplb2Yoc3BhY2UpOwotICB3aGls
ZSAodHJ1ZSkgewotICAgIGlmIChieXRlc193cml0dGVuIDwgMCkgewotICAgICAgLy8gT2xkZXIg
c25wcmludGYoKSBiZWhhdmlvci4gOi0oICBKdXN0IHRyeSBkb3VibGluZyB0aGUgYnVmZmVyIHNp
emUKLSAgICAgIGxlbmd0aCAqPSAyOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBXZSBuZWVkIGV4
YWN0bHkgImJ5dGVzX3dyaXR0ZW4rMSIgY2hhcmFjdGVycwotICAgICAgbGVuZ3RoID0gYnl0ZXNf
d3JpdHRlbisxOwotICAgIH0KLSAgICBjaGFyKiBidWYgPSBuZXcgY2hhcltsZW5ndGhdOwotCi0g
ICAgLy8gUmVzdG9yZSB0aGUgdmFfbGlzdCBiZWZvcmUgd2UgdXNlIGl0IGFnYWluCi0gICAgdmFf
Y29weShiYWNrdXBfYXAsIGFwKTsKLSAgICBieXRlc193cml0dGVuID0gdnNucHJpbnRmKGJ1Ziwg
bGVuZ3RoLCBmb3JtYXQsIGJhY2t1cF9hcCk7Ci0gICAgdmFfZW5kKGJhY2t1cF9hcCk7Ci0KLSAg
ICBpZiAoKGJ5dGVzX3dyaXR0ZW4gPj0gMCkgJiYgKGJ5dGVzX3dyaXR0ZW4gPCBsZW5ndGgpKSB7
Ci0gICAgICBvdXRwdXQtPmFwcGVuZChidWYsIGJ5dGVzX3dyaXR0ZW4pOwotICAgICAgZGVsZXRl
W10gYnVmOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBkZWxldGVbXSBidWY7Ci0gIH0KLX0K
LQotLy8gQ2xlYXJzIG91dHB1dCBiZWZvcmUgd3JpdGluZyB0byBpdC4KLWlubGluZSB2b2lkIFNT
dHJpbmdQcmludGYoc3RkOjpzdHJpbmcqIG91dHB1dCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
IHsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0gIG91dHB1dC0+Y2xl
YXIoKTsKLSAgSW50ZXJuYWxTdHJpbmdQcmludGYob3V0cHV0LCBmb3JtYXQsIGFwKTsKLSAgdmFf
ZW5kKGFwKTsKLX0KLQotaW5saW5lIHZvaWQgU3RyaW5nQXBwZW5kRihzdGQ6OnN0cmluZyogb3V0
cHV0LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFwOwotICB2YV9zdGFy
dChhcCwgZm9ybWF0KTsKLSAgSW50ZXJuYWxTdHJpbmdQcmludGYob3V0cHV0LCBmb3JtYXQsIGFw
KTsKLSAgdmFfZW5kKGFwKTsKLX0KLQotaW5saW5lIHN0ZDo6c3RyaW5nIFN0cmluZ1ByaW50Zihj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikgewotICB2YV9saXN0IGFwOwotICB2YV9zdGFydChhcCwg
Zm9ybWF0KTsKLSAgc3RkOjpzdHJpbmcgb3V0cHV0OwotICBJbnRlcm5hbFN0cmluZ1ByaW50Zigm
b3V0cHV0LCBmb3JtYXQsIGFwKTsKLSAgdmFfZW5kKGFwKTsKLSAgcmV0dXJuIG91dHB1dDsKLX0K
LQotaW5saW5lIGJvb2wgU2FmZUdldEVudihjb25zdCBjaGFyICp2YXJuYW1lLCBzdGQ6OnN0cmlu
ZyAmdmFsc3RyKQotewotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAK
LQljaGFyICAqdmFsOwotCXNpemVfdCBzejsKLQlpZiAoX2R1cGVudl9zKCZ2YWwsICZzeiwgdmFy
bmFtZSkgIT0gMCB8fCAhdmFsKSByZXR1cm4gZmFsc2U7Ci0JdmFsc3RyID0gdmFsOwotCWZyZWUo
dmFsKTsKLSNlbHNlCi0JY29uc3QgY2hhciAqIGNvbnN0IHZhbCA9IGdldGVudih2YXJuYW1lKTsK
LQlpZiAoIXZhbCkgcmV0dXJuIGZhbHNlOwotCXZhbHN0ciA9IHZhbDsKLSNlbmRpZgotCXJldHVy
biB0cnVlOwotfQotCi1pbmxpbmUgaW50IFNhZmVGT3BlbihGSUxFICoqZnAsIGNvbnN0IGNoYXIq
IGZuYW1lLCBjb25zdCBjaGFyICptb2RlKQotewotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9N
U0NfVkVSID49IDE0MDAKLQlyZXR1cm4gZm9wZW5fcyhmcCwgZm5hbWUsIG1vZGUpOwotI2Vsc2UK
LQlhc3NlcnQoZnAgIT0gTlVMTCk7Ci0JKmZwID0gZm9wZW4oZm5hbWUsIG1vZGUpOwotICAgIC8v
IGVycm5vIG9ubHkgZ3VhcmFudGVlZCB0byBiZSBzZXQgb24gZmFpbHVyZQotCXJldHVybiAoKCpm
cCA9PSBOVUxMKSA/IGVycm5vIDogMCk7Ci0jZW5kaWYKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBH
RkxBR1NfTkFNRVNQQUNFCi0KLQotI2VuZGlmICAvLyBHRkxBR1NfVVRJTF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3NyYy93aW5kb3dzX3BvcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3dpbmRvd3NfcG9ydC5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjViNzE5NGM5YTQxZDY2ZjcwMGU1ZGFlMWU2ZjNlOWJiYjcw
NmRjYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3Jj
L3dpbmRvd3NfcG9ydC5jYworKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qIENvcHly
aWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICogLS0tCi0g
KiBBdXRob3I6IENyYWlnIFNpbHZlcnN0ZWluCi0gKi8KLQotI2lmbmRlZiBfV0lOMzIKLSMgIGVy
cm9yIFlvdSBzaG91bGQgb25seSBiZSBpbmNsdWRpbmcgd2luZG93cy9wb3J0LmNjIGluIGEgd2lu
ZG93cyBlbnZpcm9ubWVudCEKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAgIC8vIGZv
ciBzdHJsZW4oKSwgbWVtc2V0KCksIG1lbWNtcCgpCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5j
bHVkZSA8c3RkYXJnLmg+ICAgIC8vIGZvciB2YV9saXN0LCB2YV9zdGFydCwgdmFfZW5kCi0jaW5j
bHVkZSA8d2luZG93cy5oPgotCi0jaW5jbHVkZSAid2luZG93c19wb3J0LmgiCi0KLS8vIFRoZXNl
IGNhbGwgdGhlIHdpbmRvd3MgX3ZzbnByaW50ZiwgYnV0IGFsd2F5cyBOVUwtdGVybWluYXRlLgot
I2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfX01JTkdXNjRfXykgIC8qIG1p
bmd3IGFscmVhZHkgZGVmaW5lcyAqLwotI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19W
RVIgPj0gMTkwMCkgIC8qIG1zdmMgMjAxNSBhbHJlYWR5IGRlZmluZXMgKi8KLQotI2lmZGVmIF9N
U0NfVkVSCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDk5NikgLy8gaWdub3JlIF92c25wcmludGYgc2VjdXJpdHkgd2FybmluZwotI2VuZGlmCi1p
bnQgc2FmZV92c25wcmludGYoY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9y
bWF0LCB2YV9saXN0IGFwKSB7Ci0gIGlmIChzaXplID09IDApICAgICAgICAvLyBub3QgZXZlbiBy
b29tIGZvciBhIFwwPwotICAgIHJldHVybiAtMTsgICAgICAgICAgLy8gbm90IHdoYXQgQzk5IHNh
eXMgdG8gZG8sIGJ1dCB3aGF0IHdpbmRvd3MgZG9lcwotICBzdHJbc2l6ZS0xXSA9ICdcMCc7IAot
ICByZXR1cm4gX3ZzbnByaW50ZihzdHIsIHNpemUtMSwgZm9ybWF0LCBhcCk7Ci19Ci0jaWZkZWYg
X01TQ19WRVIKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1pbnQgc25wcmludGYo
Y2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHsKLSAgaW50
IHI7Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotICByID0gdnNucHJp
bnRmKHN0ciwgc2l6ZSwgZm9ybWF0LCBhcCk7Ci0gIHZhX2VuZChhcCk7Ci0gIHJldHVybiByOwot
fQotCi0jZW5kaWYgIC8qIGlmICEoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkw
MCkgICovCi0jZW5kaWYgIC8qICNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmluZWQo
X19NSU5HVzY0X18pICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3dpbmRvd3NfcG9ydC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy93
aW5kb3dzX3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0YjljOWMyY2Ew
OTFhZjMzYWJmNDRkMzM1ZGRiZGQ2MTczZDQyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3dpbmRvd3NfcG9ydC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTI5ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4KLSAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKgotICogLS0tCi0gKiBBdXRob3I6IENyYWlnIFNpbHZlcnN0ZWluCi0gKgotICog
VGhlc2UgYXJlIHNvbWUgcG9ydGFiaWxpdHkgdHlwZWRlZnMgYW5kIGRlZmluZXMgdG8gbWFrZSBp
dCBhIGJpdAotICogZWFzaWVyIHRvIGNvbXBpbGUgdGhpcyBjb2RlIHVuZGVyIFZDKysuCi0gKgot
ICogU2V2ZXJhbCBvZiB0aGVzZSBhcmUgdGFrZW4gZnJvbSBnbGliOgotICogICAgaHR0cDovL2Rl
dmVsb3Blci5nbm9tZS5vcmcvZG9jL0FQSS9nbGliL2dsaWItd2luZG93cy1jb21wYXRhYmlsaXR5
LWZ1bmN0aW9ucy5odG1sCi0gKi8KLQotI2lmbmRlZiBHRkxBR1NfV0lORE9XU19QT1JUX0hfCi0j
ZGVmaW5lIEdGTEFHU19XSU5ET1dTX1BPUlRfSF8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0v
LyBUaGlzIG11c3QgYmUgZGVmaW5lZCBiZWZvcmUgdGhlIHdpbmRvd3MuaCBpcyBpbmNsdWRlZC4K
LS8vIEl0J3MgbmVlZGVkIGZvciBtdXRleC5oLCB0byBnaXZlIGFjY2VzcyB0byB0aGUgVHJ5TG9j
ayBtZXRob2QuCi0jICBpZiAhZGVmaW5lZChfV0lOMzJfV0lOTlQpICYmICEoZGVmaW5lZCggX19N
SU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pKQotIyAgICBkZWZpbmUgX1dJTjMyX1dJ
Tk5UIDB4MDQwMAotIyAgZW5kaWYKLS8vIFdlIGFsd2F5cyB3YW50IG1pbmltYWwgaW5jbHVkZXMK
LSNpZm5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01F
QU4KLSNlbmRpZgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxkaXJlY3QuaD4gICAg
ICAgICAgLyogZm9yIG1rZGlyICovCi0jaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgICAgIC8qIGZv
ciBfcHV0ZW52LCBnZXRlbnYgKi8KLSNpbmNsdWRlIDxzdGRpby5oPiAgICAgICAgICAgLyogbmVl
ZCB0aGlzIHRvIG92ZXJyaWRlIHN0ZGlvJ3Mgc25wcmludGYsIGFsc28gZGVmaW5lcyBfdW5saW5r
IHVzZWQgYnkgdW5pdCB0ZXN0cyAqLwotI2luY2x1ZGUgPHN0ZGFyZy5oPiAgICAgICAgICAvKiB1
dGlsLmggdXNlcyB2YV9jb3B5ICovCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAgICAgICAgIC8qIGZv
ciBfc3RyaWNtcCBhbmQgX3N0cmR1cCAqLwotCi0vKiBXZSBjYW4ndCBqdXN0IHVzZSBfdnNucHJp
bnRmIGFuZCBfc25wcmludGYgYXMgZHJvcC1pbi1yZXBsYWNlbWVudHMsCi0gKiBiZWNhdXNlIHRo
ZXkgZG9uJ3QgYWx3YXlzIE5VTC10ZXJtaW5hdGUuIDotKCAgV2UgYWxzbyBjYW4ndCB1c2UgdGhl
Ci0gKiBuYW1lIHZzbnByaW50Ziwgc2luY2Ugd2luZG93cyBkZWZpbmVzIHRoYXQgKGJ1dCBub3Qg
c25wcmludGYgKCEpKS4KLSAqLwotI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5l
ZChfX01JTkdXNjRfXykgIC8qIG1pbmd3IGFscmVhZHkgZGVmaW5lcyAqLwotI2lmICEoZGVmaW5l
ZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkwMCkgIC8qIG1zdmMgMjAxNSBhbHJlYWR5IGRl
ZmluZXMgKi8KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgaW50IHNucHJpbnRmKGNoYXIgKnN0ciwg
c2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpmb3JtYXQsIC4uLik7Ci1leHRlcm4gaW50IEdGTEFHU19ETExfREVDTCBzYWZlX3Zz
bnByaW50ZihjaGFyICpzdHIsIHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFwKTsKLSNk
ZWZpbmUgdnNucHJpbnRmKHN0ciwgc2l6ZSwgZm9ybWF0LCBhcCkgIHNhZmVfdnNucHJpbnRmKHN0
ciwgc2l6ZSwgZm9ybWF0LCBhcCkKLSNkZWZpbmUgdmFfY29weShkc3QsIHNyYykgIChkc3QpID0g
KHNyYykKLSNlbmRpZgotI2VuZGlmICAvKiAjaWYgIWRlZmluZWQoX19NSU5HVzMyX18pICYmICFk
ZWZpbmVkKF9fTUlOR1c2NF9fKSAqLwotCi0jaWZkZWYgX01TQ19WRVIKLSMgIHByYWdtYSB3YXJu
aW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0OTk2KSAvLyBpZ25vcmUgZ2V0
ZW52IHNlY3VyaXR5IHdhcm5pbmcKLSNlbmRpZgotaW5saW5lIHZvaWQgc2V0ZW52KGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQpIHsKLSAgLy8gSW4gd2luZG93cywgaXQn
cyBpbXBvc3NpYmxlIHRvIHNldCBhIHZhcmlhYmxlIHRvIHRoZSBlbXB0eSBzdHJpbmcuCi0gIC8v
IFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgaXQgdG8gIjAiIGFuZCB0aGUgTlVMLWluZyBvdXQg
dGhlIFwwLgotICAvLyBUaGF0IGlzLCB3ZSBwdXRlbnYoIkZPTz0wIikgYW5kIHRoZW4gZmluZCBv
dXQgd2hlcmUgaW4gbWVtb3J5IHRoZQotICAvLyBwdXRlbnYgd3JvdGUgIkZPTz0wIiwgYW5kIGNo
YW5nZSBpdCBpbi1wbGFjZSB0byAiRk9PPVwwIi4KLSAgLy8gYy5mLiBodHRwOi8vc3ZuLmFwYWNo
ZS5vcmcvdmlld3ZjL3N0ZGN4eC90cnVuay90ZXN0cy9zcmMvZW52aXJvbi5jcHA/cjE9NjExNDUx
JnIyPTYzNzUwOCZwYXRocmV2PTYzNzUwOAotICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga0Zh
a2VaZXJvID0gIjAiOwotICBpZiAoKnZhbHVlID09ICdcMCcpCi0gICAgdmFsdWUgPSBrRmFrZVpl
cm87Ci0gIC8vIEFwcGFyZW50bHkgdGhlIHNlbWFudGljcyBvZiBwdXRlbnYoKSBpcyB0aGF0IHRo
ZSBpbnB1dAotICAvLyBtdXN0IGxpdmUgZm9yZXZlciwgc28gd2UgbGVhayBtZW1vcnkgaGVyZS4g
Oi0oCi0gIGNvbnN0IHNpemVfdCBuYW1ldmFsX2xlbiA9IHN0cmxlbihuYW1lKSArIDEgKyBzdHJs
ZW4odmFsdWUpICsgMTsKLSAgY2hhciogbmFtZXZhbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG1hbGxvYyhuYW1ldmFsX2xlbikpOwotICBzbnByaW50ZihuYW1ldmFsLCBuYW1ldmFsX2xlbiwg
IiVzPSVzIiwgbmFtZSwgdmFsdWUpOwotICBfcHV0ZW52KG5hbWV2YWwpOwotICBpZiAodmFsdWUg
PT0ga0Zha2VaZXJvKSB7Ci0gICAgbmFtZXZhbFtuYW1ldmFsX2xlbiAtIDJdID0gJ1wwJzsgICAv
LyB3b3JrcyB3aGVuIHB1dGVudigpIG1ha2VzIG5vIGNvcHkKLSAgICBpZiAoKmdldGVudihuYW1l
KSAhPSAnXDAnKQotICAgICAgKmdldGVudihuYW1lKSA9ICdcMCc7ICAgICAgICAgICAgLy8gd29y
a3Mgd2hlbiBwdXRlbnYoKSBjb3BpZXMgbmFtZXZhbAotICB9Ci19Ci0jaWZkZWYgX01TQ19WRVIK
LSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZGVmaW5lIHN0cmNhc2VjbXAgX3N0
cmljbXAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAKLSNkZWZp
bmUgc3RyZHVwICAgX3N0cmR1cAotI2RlZmluZSB1bmxpbmsgICBfdW5saW5rCi0jZW5kaWYKLQot
I2RlZmluZSBQUklkMzIgICJkIgotI2RlZmluZSBQUkl1MzIgICJ1IgotI2RlZmluZSBQUklkNjQg
ICJJNjRkIgotI2RlZmluZSBQUkl1NjQgICJJNjR1IgotCi0jaWYgIWRlZmluZWQoX19NSU5HVzMy
X18pICYmICFkZWZpbmVkKF9fTUlOR1c2NF9fKQotI2RlZmluZSBzdHJ0b3EgICBfc3RydG9pNjQK
LSNkZWZpbmUgc3RydG91cSAgX3N0cnRvdWk2NAotI2RlZmluZSBzdHJ0b2xsICBfc3RydG9pNjQK
LSNkZWZpbmUgc3RydG91bGwgX3N0cnRvdWk2NAotI2RlZmluZSBhdG9sbCAgICBfYXRvaTY0Ci0j
ZW5kaWYKLQotI2lmbmRlZiBQQVRIX01BWAotI2RlZmluZSBQQVRIX01BWCAxMDI0Ci0jZW5kaWYK
LQotI2VuZGlmICAvKiBHRkxBR1NfV0lORE9XU19QT1JUX0hfICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3N2I1ODJmZTY5OGU3NjE3YWE3NmIzZWY5M2IyMTA3NGZlMTU1ZjQ3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L0NNYWtl
TGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLSMjIGdmbGFncyB0ZXN0
cwotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgb3V0cHV0IGRpcmVjdG9yaWVzCi1zZXQgKENN
QUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2JpbiIp
Ci1zZXQgKENNQUtFX0xJQlJBUllfT1VUUFVUX0RJUkVDVE9SWSAiJHtQUk9KRUNUX0JJTkFSWV9E
SVJ9L2xpYiIpCi1zZXQgKENNQUtFX0FSQ0hJVkVfT1VUUFVUX0RJUkVDVE9SWSAiJHtQUk9KRUNU
X0JJTkFSWV9ESVJ9L2xpYiIpCi0KLSMgc2V0IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRlc3QgY29t
bWFuZHMKLXNldCAoR0ZMQUdTX0ZMQUdGSUxFU19ESVIgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0Vf
RElSfSIpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBjb21tb24gaW5jbHVkZSBkaXJlY3Rv
cmllcyBhbmQgbGluayBsaWJyYXJpZXMKLWluY2x1ZGVfZGlyZWN0b3JpZXMgKCIke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0iKQotaW5jbHVkZV9kaXJlY3RvcmllcyAoIiR7Z2ZsYWdzX1NPVVJD
RV9ESVJ9L3NyYyIpCi1pbmNsdWRlX2RpcmVjdG9yaWVzICgiJHtnZmxhZ3NfQklOQVJZX0RJUn0v
aW5jbHVkZSIpCi1pbmNsdWRlX2RpcmVjdG9yaWVzICgiJHtnZmxhZ3NfQklOQVJZX0RJUn0vaW5j
bHVkZS9nZmxhZ3MiKQotCi1pZiAoQlVJTERfU0hBUkVEX0xJQlMpCi0gIHNldCAodHlwZSBzaGFy
ZWQpCi1lbHNlICgpCi0gIHNldCAodHlwZSBzdGF0aWMpCi1lbmRpZiAoKQotaWYgKEJVSUxEX2dm
bGFnc19MSUIpCi0gIGxpbmtfbGlicmFyaWVzIChnZmxhZ3MtJHt0eXBlfSkKLWVsc2UgKCkKLSAg
bGlua19saWJyYXJpZXMgKGdmbGFnc19ub3RocmVhZHMtJHt0eXBlfSkKLWVuZGlmICgpCi0KLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotIyBTVFJJUF9GTEFHX0hFTFAKLWFkZF9leGVjdXRhYmxlIChn
ZmxhZ3Nfc3RyaXBfZmxhZ3NfdGVzdCBnZmxhZ3Nfc3RyaXBfZmxhZ3NfdGVzdC5jYykKLSMgTWFr
ZSBzdXJlIHRoZSAtLWhlbHAgb3V0cHV0IGRvZXNuJ3QgcHJpbnQgdGhlIHN0cmlwcGVkIHRleHQu
Ci1hZGRfZ2ZsYWdzX3Rlc3QgKHN0cmlwX2ZsYWdzX2hlbHAgMSAiIiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBzdHJpcHBlZCBvdXQiIGdmbGFnc19zdHJpcF9mbGFnc190ZXN0IC0taGVscCkKLSMgTWFr
ZSBzdXJlIHRoZSBzdHJpcHBlZCB0ZXh0IGlzbid0IGluIHRoZSBiaW5hcnkgYXQgYWxsLgotYWRk
X3Rlc3QgKAotICBOQU1FIHN0cmlwX2ZsYWdzX2JpbmFyeQotICBDT01NQU5EICIke0NNQUtFX0NP
TU1BTkR9IiAiLURCSU5BUlk9JDxUQVJHRVRfRklMRTpnZmxhZ3Nfc3RyaXBfZmxhZ3NfdGVzdD4i
Ci0gICAgICAgICAgLVAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9nZmxhZ3Nfc3RyaXBf
ZmxhZ3NfdGVzdC5jbWFrZSIKLSkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHVuaXQgdGVz
dHMKLWNvbmZpZ3VyZV9maWxlIChnZmxhZ3NfdW5pdHRlc3QuY2MgZ2ZsYWdzX3VuaXR0ZXN0LW1h
aW4uY2MgQ09QWU9OTFkpCi1jb25maWd1cmVfZmlsZSAoZ2ZsYWdzX3VuaXR0ZXN0LmNjIGdmbGFn
c191bml0dGVzdF9tYWluLmNjIENPUFlPTkxZKQotCi1hZGRfZXhlY3V0YWJsZSAoZ2ZsYWdzX3Vu
aXR0ZXN0ICAgICAgZ2ZsYWdzX3VuaXR0ZXN0LmNjKQotYWRkX2V4ZWN1dGFibGUgKGdmbGFnc191
bml0dGVzdC1tYWluIGdmbGFnc191bml0dGVzdC1tYWluLmNjKQotYWRkX2V4ZWN1dGFibGUgKGdm
bGFnc191bml0dGVzdF9tYWluIGdmbGFnc191bml0dGVzdF9tYWluLmNjKQotCi1pZiAoT1NfV0lO
RE9XUykKLSAgc2V0IChTTEFTSCAiXFxcXCIpCi1lbHNlICgpCi0gIHNldCAoU0xBU0ggIi8iKQot
ZW5kaWYgKCkKLQotIyBGaXJzdCwganVzdCBtYWtlIHN1cmUgdGhlICBnZmxhZ3NfdW5pdHRlc3Qg
IHdvcmtzIGFzLWlzCi1hZGRfZ2ZsYWdzX3Rlc3QodW5pdHRlc3QgMCAiIiAiIiBnZmxhZ3NfdW5p
dHRlc3QpCi0KLSMgLS1oZWxwIHNob3VsZCBzaG93IGFsbCBmbGFncywgaW5jbHVkaW5nIGZsYWdz
IGZyb20gZ2ZsYWdzX3JlcG9ydGluZwotYWRkX2dmbGFnc190ZXN0KGhlbHAtcmVwb3J0aW5nIDEg
IiR7U0xBU0h9Z2ZsYWdzX3JlcG9ydGluZy5jYzoiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVs
cCkKLQotIyBNYWtlIHN1cmUgdGhhdCAtLWhlbHAgcHJpbnRzIGV2ZW4gdmVyeSBsb25nIGhlbHBz
dHJpbmdzLgotYWRkX2dmbGFnc190ZXN0KGxvbmctaGVscHN0cmluZyAxICJlbmQgb2YgYSBsb25n
IGhlbHBzdHJpbmciICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscCkKLQotIyBNYWtlIHN1cmUg
LS1oZWxwIHJlZmxlY3RzIGZsYWcgY2hhbmdlcyBtYWRlIGJlZm9yZSBmbGFnLXBhcnNpbmcKLWFk
ZF9nZmxhZ3NfdGVzdChjaGFuZ2VkX2Jvb2wxIDEgIi1jaGFuZ2VkX2Jvb2wxIChjaGFuZ2VkKSB0
eXBlOiBib29sIGRlZmF1bHQ6IHRydWUiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscCkKLWFk
ZF9nZmxhZ3NfdGVzdChjaGFuZ2VkX2Jvb2wyIDEgIi1jaGFuZ2VkX2Jvb2wyIChjaGFuZ2VkKSB0
eXBlOiBib29sIGRlZmF1bHQ6IGZhbHNlIGN1cnJlbnRseTogdHJ1ZSIgIiIgIGdmbGFnc191bml0
dGVzdCAgLS1oZWxwKQotIyBBbmQgb24gdGhlIGNvbW1hbmQtbGluZSwgdG9vCi1hZGRfZ2ZsYWdz
X3Rlc3QoY2hhbmdlYWJsZV9zdHJpbmdfdmFyIDEgIi1jaGFuZ2VhYmxlX3N0cmluZ192YXIgKCkg
dHlwZTogc3RyaW5nIGRlZmF1bHQ6IFwiMVwiIGN1cnJlbnRseTogXCIyXCIiICIiICBnZmxhZ3Nf
dW5pdHRlc3QgIC0tY2hhbmdlYWJsZV9zdHJpbmdfdmFyIDIgLS1oZWxwKQotCi0jIC0tbm9oZWxw
IGFuZCAtLWhlbHA9ZmFsc2Ugc2hvdWxkIGJlIGFzIGlmIHdlIGRpZG4ndCBzYXkgYW55dGhpbmcK
LWFkZF9nZmxhZ3NfdGVzdChub2hlbHAgICAgIDAgIlBBU1MiICIiICBnZmxhZ3NfdW5pdHRlc3Qg
IC0tbm9oZWxwKQotYWRkX2dmbGFnc190ZXN0KGhlbHA9ZmFsc2UgMCAiUEFTUyIgIiIgIGdmbGFn
c191bml0dGVzdCAgLS1oZWxwPWZhbHNlKQotCi0jIC0taGVscGZ1bGwgaXMgdGhlIHNhbWUgYXMg
aGVscAotYWRkX2dmbGFnc190ZXN0KGhlbHBmdWxsIDEgIiR7U0xBU0h9Z2ZsYWdzX3JlcG9ydGlu
Zy5jYzoiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscGZ1bGwpCi0KLSMgLS1oZWxwc2hvcnQg
c2hvdWxkIHNob3cgb25seSBmbGFncyBmcm9tIHRoZSAgZ2ZsYWdzX3VuaXR0ZXN0ICBpdHNlbGYK
LWFkZF9nZmxhZ3NfdGVzdChoZWxwc2hvcnQgMSAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6
IiAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0aW5nLmNjOiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxw
c2hvcnQpCi0KLSMgLS1oZWxwc2hvcnQgc2hvdWxkIHNob3cgdGhlIHRsZGZsYWcgd2UgY3JlYXRl
ZCBpbiB0aGUgIGdmbGFnc191bml0dGVzdCAgZGlyCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscHNob3J0
LXRsZGZsYWcxIDEgInRsZGZsYWcxIiAiJHtTTEFTSH1nb29nbGUuY2M6IiAgZ2ZsYWdzX3VuaXR0
ZXN0ICAtLWhlbHBzaG9ydCkKLWFkZF9nZmxhZ3NfdGVzdChoZWxwc2hvcnQtdGxkZmxhZzIgMSAi
dGxkZmxhZzIiICIke1NMQVNIfWdvb2dsZS5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscHNo
b3J0KQotCi0jIC0taGVscHNob3J0IHNob3VsZCB3b3JrIGlmIHRoZSBtYWluIHNvdXJjZSBmaWxl
IGlzIHN1ZmZpeGVkIHdpdGggW18tXW1haW4KLWFkZF9nZmxhZ3NfdGVzdChoZWxwc2hvcnQtbWFp
biAxICIke1NMQVNIfWdmbGFnc191bml0dGVzdC1tYWluLmNjOiIgIiR7U0xBU0h9Z2ZsYWdzX3Jl
cG9ydGluZy5jYzoiIGdmbGFnc191bml0dGVzdC1tYWluIC0taGVscHNob3J0KQotYWRkX2dmbGFn
c190ZXN0KGhlbHBzaG9ydF9tYWluIDEgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0X21haW4uY2M6
IiAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0aW5nLmNjOiIgZ2ZsYWdzX3VuaXR0ZXN0X21haW4gLS1o
ZWxwc2hvcnQpCi0KLSMgLS1oZWxwb24gbmVlZHMgYW4gYXJndW1lbnQKLWFkZF9nZmxhZ3NfdGVz
dChoZWxwb24gMSAiJy0taGVscG9uJyBpcyBtaXNzaW5nIGl0cyBhcmd1bWVudDsgZmxhZyBkZXNj
cmlwdGlvbjogc2hvdyBoZWxwIG9uIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWhlbHBvbikKLSMg
LS1oZWxwb24gYXJndW1lbnQgaW5kaWNhdGVzIHdoYXQgZmlsZSB3ZSdsbCBzaG93IGFyZ3MgZnJv
bQotYWRkX2dmbGFnc190ZXN0KGhlbHBvbj1nZmxhZ3MgMSAiJHtTTEFTSH1nZmxhZ3MuY2M6IiAi
JHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWhlbHBvbj1n
ZmxhZ3MpCi0jIGFub3RoZXIgd2F5IG9mIHNwZWNpZnlpbmcgdGhlIGFyZ3VtZW50Ci1hZGRfZ2Zs
YWdzX3Rlc3QoaGVscG9uX2dmbGFncyAxICIke1NMQVNIfWdmbGFncy5jYzoiICIke1NMQVNIfWdm
bGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscG9uIGdmbGFncykKLSMg
dGVzdCBhbm90aGVyIGFyZ3VtZW50Ci1hZGRfZ2ZsYWdzX3Rlc3QoaGVscG9uPWdmbGFnc191bml0
dGVzdCAxICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoiICIke1NMQVNIfWdmbGFncy5jYzoi
ICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscG9uPWdmbGFnc191bml0dGVzdCkKLQotIyBoZWxwbWF0
Y2ggaXMgbGlrZSBoZWxwb24gYnV0IHRha2VzIHN1YnN0cmluZ3MKLWFkZF9nZmxhZ3NfdGVzdCho
ZWxwbWF0Y2hfcmVwb3J0aW5nIDEgIiR7U0xBU0h9Z2ZsYWdzX3JlcG9ydGluZy5jYzoiICIke1NM
QVNIfWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC1oZWxwbWF0Y2ggcmVw
b3J0aW5nKQotYWRkX2dmbGFnc190ZXN0KGhlbHBtYXRjaD11bml0dGVzdCAgMSAiJHtTTEFTSH1n
ZmxhZ3NfdW5pdHRlc3QuY2M6IiAiJHtTTEFTSH1nZmxhZ3MuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0
ICAtaGVscG1hdGNoPXVuaXR0ZXN0KQotCi0jIGlmIG5vIGZsYWdzIGFyZSBmb3VuZCB3aXRoIGhl
bHBtYXRjaCBvciBoZWxwb24sIHN1Z2dlc3QgLS1oZWxwCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscG1h
dGNoPW5vc3VjaHN1YnN0cmluZyAxICJObyBtb2R1bGVzIG1hdGNoZWQiICIke1NMQVNIfWdmbGFn
c191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC1oZWxwbWF0Y2g9bm9zdWNoc3Vic3Ry
aW5nKQotYWRkX2dmbGFnc190ZXN0KGhlbHBvbj1ub3N1Y2htb2R1bGUgICAgICAgMSAiTm8gbW9k
dWxlcyBtYXRjaGVkIiAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3VuaXR0
ZXN0ICAtaGVscG9uPW5vc3VjaG1vZHVsZSkKLQotIyBoZWxwcGFja2FnZSBzaG93cyBhbGwgdGhl
IGZsYWdzIGluIHRoZSBzYW1lIGRpciBhcyB0aGlzIHVuaXR0ZXN0Ci0jIC0taGVscCBzaG91bGQg
c2hvdyBhbGwgZmxhZ3MsIGluY2x1ZGluZyBmbGFncyBmcm9tIGdvb2dsZS5jYwotYWRkX2dmbGFn
c190ZXN0KGhlbHBwYWNrYWdlIDEgIiR7U0xBU0h9Z2ZsYWdzX3JlcG9ydGluZy5jYzoiICIiICBn
ZmxhZ3NfdW5pdHRlc3QgIC0taGVscHBhY2thZ2UpCi0KLSMgeG1sIQotYWRkX2dmbGFnc190ZXN0
KGhlbHB4bWwgMSAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M8L2ZpbGU+IiAiJHtTTEFTSH1n
ZmxhZ3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWhlbHB4bWwpCi0KLSMganVz
dCBwcmludCB0aGUgdmVyc2lvbiBpbmZvIGFuZCBleGl0Ci1hZGRfZ2ZsYWdzX3Rlc3QodmVyc2lv
bi0xIDAgImdmbGFnc191bml0dGVzdCIgICAgICAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6
IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXZlcnNpb24pCi1hZGRfZ2ZsYWdzX3Rlc3QodmVyc2lvbi0y
IDAgInZlcnNpb24gdGVzdF92ZXJzaW9uIiAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6IiAg
Z2ZsYWdzX3VuaXR0ZXN0ICAtLXZlcnNpb24pCi0KLSMgLS11bmRlZm9rIGlzIGEgZnVuIGZsYWcu
Li4KLWFkZF9nZmxhZ3NfdGVzdCh1bmRlZm9rLTEgMSAidW5rbm93biBjb21tYW5kIGxpbmUgZmxh
ZyAnZm9vJyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS11bmRlZm9rPSAtLWZvbyAtLXVudXNlZF9i
b29sKQotYWRkX2dmbGFnc190ZXN0KHVuZGVmb2stMiAwICJQQVNTIiAiIiAgZ2ZsYWdzX3VuaXR0
ZXN0ICAtLXVuZGVmb2s9Zm9vIC0tZm9vIC0tdW51c2VkX2Jvb2wpCi0jIElmIHlvdSBzYXkgZm9v
IGlzIG9rIHRvIGJlIHVuZGVmaW5lZCwgd2UnbGwgYWNjZXB0IC0tbm9mb28gYXMgd2VsbAotYWRk
X2dmbGFnc190ZXN0KHVuZGVmb2stMyAwICJQQVNTIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXVu
ZGVmb2s9Zm9vIC0tbm9mb28gLS11bnVzZWRfYm9vbCkKLSMgSXQncyBvayBpZiB0aGUgZm9vIGlz
IGluIHRoZSBtaWRkbGUKLWFkZF9nZmxhZ3NfdGVzdCh1bmRlZm9rLTQgMCAiUEFTUyIgIiIgIGdm
bGFnc191bml0dGVzdCAgLS11bmRlZm9rPWZlZSxmaSxmb28sZnVtIC0tZm9vIC0tdW51c2VkX2Jv
b2wpCi0jIEJ1dCB0aGUgc3BlbGxpbmcgaGFzIHRvIGJlIGp1c3QgcmlnaHQuLi4KLWFkZF9nZmxh
Z3NfdGVzdCh1bmRlZm9rLTUgMSAidW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnZm9vJyIgIiIg
IGdmbGFnc191bml0dGVzdCAgLS11bmRlZm9rPWZvIC0tZm9vIC0tdW51c2VkX2Jvb2wpCi1hZGRf
Z2ZsYWdzX3Rlc3QodW5kZWZvay02IDEgInVua25vd24gY29tbWFuZCBsaW5lIGZsYWcgJ2Zvbyci
ICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0tdW5kZWZvaz1mb290IC0tZm9vIC0tdW51c2VkX2Jvb2wp
Ci0KLSMgU2VlIGlmIHdlIGNhbiBzdWNjZXNzZnVsbHkgbG9hZCBvdXIgZmxhZ3MgZnJvbSB0aGUg
ZmxhZ2ZpbGUKLWFkZF9nZmxhZ3NfdGVzdChmbGFnZmlsZS4xIDAgImdmbGFnc191bml0dGVzdCIg
IiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVzdCAgIi0tZmxhZ2Zp
bGU9ZmxhZ2ZpbGUuMSIpCi1hZGRfZ2ZsYWdzX3Rlc3QoZmxhZ2ZpbGUuMiAwICJQQVNTIiAiIiAg
Z2ZsYWdzX3VuaXR0ZXN0ICAiLS1mbGFnZmlsZT1mbGFnZmlsZS4yIikKLWFkZF9nZmxhZ3NfdGVz
dChmbGFnZmlsZS4zIDAgIlBBU1MiICIiICBnZmxhZ3NfdW5pdHRlc3QgICItLWZsYWdmaWxlPWZs
YWdmaWxlLjMiKQotCi0jIEFsc28gdHJ5IHRvIGxvYWQgZmxhZ3MgZnJvbSB0aGUgZW52aXJvbm1l
bnQKLWFkZF9nZmxhZ3NfdGVzdChmcm9tZW52PXZlcnNpb24gICAgICAwICJnZmxhZ3NfdW5pdHRl
c3QiICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0tZnJv
bWVudj12ZXJzaW9uKQotYWRkX2dmbGFnc190ZXN0KHRyeWZyb21lbnY9dmVyc2lvbiAgIDAgImdm
bGFnc191bml0dGVzdCIgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0
dGVzdCAgLS10cnlmcm9tZW52PXZlcnNpb24pCi1hZGRfZ2ZsYWdzX3Rlc3QoZnJvbWVudj1oZWxw
ICAgICAgICAgMCAiUEFTUyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1mcm9tZW52PWhlbHApCi1h
ZGRfZ2ZsYWdzX3Rlc3QodHJ5ZnJvbWVudj1oZWxwICAgICAgMCAiUEFTUyIgIiIgIGdmbGFnc191
bml0dGVzdCAgLS10cnlmcm9tZW52PWhlbHApCi1hZGRfZ2ZsYWdzX3Rlc3QoZnJvbWVudj1oZWxw
ZnVsbCAgICAgMSAiaGVscGZ1bGwgbm90IGZvdW5kIGluIGVudmlyb25tZW50IiAiIiAgZ2ZsYWdz
X3VuaXR0ZXN0ICAtLWZyb21lbnY9aGVscGZ1bGwpCi1hZGRfZ2ZsYWdzX3Rlc3QodHJ5ZnJvbWVu
dj1oZWxwZnVsbCAgMCAiUEFTUyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS10cnlmcm9tZW52PWhl
bHBmdWxsKQotYWRkX2dmbGFnc190ZXN0KHRyeWZyb21lbnY9dW5kZWZvayAgIDAgIlBBU1MiICIi
ICBnZmxhZ3NfdW5pdHRlc3QgIC0tdHJ5ZnJvbWVudj11bmRlZm9rIC0tZm9vKQotYWRkX2dmbGFn
c190ZXN0KHRyeWZyb21lbnY9d2VpcmRvICAgIDEgInVua25vd24gY29tbWFuZCBsaW5lIGZsYWci
ICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0tdHJ5ZnJvbWVudj13ZWlyZG8pCi1hZGRfZ2ZsYWdzX3Rl
c3QodHJ5ZnJvbWVudi1tdWx0aXBsZSAgMCAiZ2ZsYWdzX3VuaXR0ZXN0IiAiJHtTTEFTSH1nZmxh
Z3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXRyeWZyb21lbnY9dGVzdF9ib29s
LHZlcnNpb24sdW51c2VkX2Jvb2wpCi1hZGRfZ2ZsYWdzX3Rlc3QoZnJvbWVudj10ZXN0X2Jvb2wg
ICAgMSAibm90IGZvdW5kIGluIGVudmlyb25tZW50IiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWZy
b21lbnY9dGVzdF9ib29sKQotYWRkX2dmbGFnc190ZXN0KGZyb21lbnY9dGVzdF9ib29sLW9rIDEg
InVua25vd24gY29tbWFuZCBsaW5lIGZsYWciICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0tZnJvbWVu
dj10ZXN0X2Jvb2wsb2spCi0jIEhlcmUsIHRoZSAtLXZlcnNpb24gb3ZlcnJpZGVzIHRoZSBmcm9t
ZW52Ci1hZGRfZ2ZsYWdzX3Rlc3QodmVyc2lvbi1vdmVycmlkZXMtZnJvbWVudiAwICJnZmxhZ3Nf
dW5pdHRlc3QiICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3Qg
IC0tZnJvbWVudj10ZXN0X2Jvb2wsdmVyc2lvbixvaykKLQotIyBNYWtlIHN1cmUgLS0gYnkgaXRz
ZWxmIHN0b3BzIGFyZ3YgcHJvY2Vzc2luZwotYWRkX2dmbGFnc190ZXN0KGRhc2hkYXNoIDAgIlBB
U1MiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0tIC0taGVscCkKLQotIyBBbmQgd2Ugc2hvdWxkIGRp
ZSBpZiB0aGUgZmxhZyB2YWx1ZSBkb2Vzbid0IHBhc3MgdGhlIHZhbGlkYXRvcgotYWRkX2dmbGFn
c190ZXN0KGFsd2F5c19mYWlsIDEgIkVSUk9SOiBmYWlsZWQgdmFsaWRhdGlvbiBvZiBuZXcgdmFs
dWUgJ3RydWUnIGZvciBmbGFnICdhbHdheXNfZmFpbCciICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0t
YWx3YXlzX2ZhaWwpCi0KLSMgQW5kIGlmIGxvY2tpbmcgaW4gdmFsaWRhdG9ycyBmYWlscwotIyBU
T0RPKGFuZHJlYXMpOiBXb3JrZWQgb24gV2luZG93cyA3IFJlbGVhc2UgY29uZmlndXJhdGlvbiwg
YnV0IGNhdXNlcwotIyAgICAgICAgICAgICAgICBkZWJ1Z2dlciBhYm9ydCgpIGludGVydmVudGlv
biBpbiBjYXNlIG9mIERlYnVnIGNvbmZpZ3VyYXRpb24uCi0jYWRkX2dmbGFnc190ZXN0KGRlYWRs
b2NrX2lmX2NhbnRfbG9jayAwICJQQVNTIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWRlYWRsb2Nr
X2lmX2NhbnRfbG9jaykKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHVzZSBnZmxhZ3NfZGVj
bGFyZS5oCi1hZGRfZXhlY3V0YWJsZSAoZ2ZsYWdzX2RlY2xhcmVfdGVzdCBnZmxhZ3NfZGVjbGFy
ZV90ZXN0LmNjIGdmbGFnc19kZWNsYXJlX2ZsYWdzLmNjKQotCi1hZGRfdGVzdChOQU1FIGdmbGFn
c19kZWNsYXJlIENPTU1BTkQgZ2ZsYWdzX2RlY2xhcmVfdGVzdCAtLW1lc3NhZ2UgIkhlbGxvIGdm
bGFncyEiKQotc2V0X3Rlc3RzX3Byb3BlcnRpZXMoZ2ZsYWdzX2RlY2xhcmUgUFJPUEVSVElFUyBQ
QVNTX1JFR1VMQVJfRVhQUkVTU0lPTiAiSGVsbG8gZ2ZsYWdzISIpCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotIyBjb25maWd1cmUgUHl0aG9uIHNjcmlwdCB3aGljaCBjb25maWd1cmVzIGFuZCBi
dWlsZHMgYSB0ZXN0IHByb2plY3QKLWlmIChCVUlMRF9OQ19URVNUUyBPUiBCVUlMRF9DT05GSUdf
VEVTVFMpCi0gIGZpbmRfcGFja2FnZSAoUHl0aG9uSW50ZXJwKQotICBpZiAoTk9UIFBZVEhPTl9F
WEVDVVRBQkxFKQotICAgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJObyBQeXRob24gaW5zdGFsbGF0
aW9uIGZvdW5kISBJdCBpcyByZXF1aXJlZCBieSB0aGUgKG5lZ2F0aXZlKSBjb21waWxhdGlvbiB0
ZXN0cy4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiBFaXRoZXIgaW5zdGFsbCBQeXRob24g
b3Igc2V0IEJVSUxEX05DX1RFU1RTIGFuZCBCVUlMRF9DT05GSUdfVEVTVFMgdG8gRkFMU0UuIikK
LSAgZW5kaWYgKCkKLSAgc2V0IChUTVBESVIgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9UZXN0aW5n
L1RlbXBvcmFyeSIpCi0gIGNvbmZpZ3VyZV9maWxlIChnZmxhZ3NfYnVpbGQucHkuaW4gIiR7Q01B
S0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9idWlsZC5weSIgQE9OTFkpCi0gIGZ1bmN0aW9u
IChhZGRfZ2ZsYWdzX2J1aWxkX3Rlc3QgbmFtZSBzcmNkaXIgZXhwZWN0X2ZhaWwpCi0gICAgc2V0
IChzcmNkaXIgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8ke3NyY2Rpcn0iKQotICAgIGFk
ZF90ZXN0ICgKLSAgICAgIE5BTUUgICAgIiR7bmFtZX0iCi0gICAgICBDT01NQU5EICIke1BZVEhP
Tl9FWEVDVVRBQkxFfSIgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9idWlsZC5w
eSIgCi0gICAgICAgICAgICAgICAgICAgICR7bmFtZX0gJHtzcmNkaXJ9ICR7ZXhwZWN0X2ZhaWx9
Ci0gICAgKQotICBlbmRmdW5jdGlvbiAoKQotZW5kaWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIG5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzCi1vcHRpb24gKEJVSUxEX05DX1RFU1RT
ICJSZXF1ZXN0IGFkZGl0aW9uIG9mIG5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzLiIgT0ZGKQot
bWFya19hc19hZHZhbmNlZCAoQlVJTERfTkNfVEVTVFMpCi1pZiAoQlVJTERfTkNfVEVTVFMpCi0g
IGFkZF9nZmxhZ3NfYnVpbGRfdGVzdCAobmNfc2FuaXR5ICAgICAgICAgICAgICAgbmMgMCkKLSAg
YWRkX2dmbGFnc19idWlsZF90ZXN0IChuY19zd2FwcGVkX2FyZ3MgICAgICAgICBuYyAxKQotICBh
ZGRfZ2ZsYWdzX2J1aWxkX3Rlc3QgKG5jX2ludF9pbnN0ZWFkX29mX2Jvb2wgIG5jIDEpCi0gIGFk
ZF9nZmxhZ3NfYnVpbGRfdGVzdCAobmNfYm9vbF9pbl9xdW90ZXMgICAgICAgbmMgMSkKLSAgYWRk
X2dmbGFnc19idWlsZF90ZXN0IChuY19kZWZpbmVfc3RyaW5nX3dpdGhfMCBuYyAxKQotZW5kaWYg
KCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdGVzdAot
b3B0aW9uIChCVUlMRF9DT05GSUdfVEVTVFMgIlJlcXVlc3QgYWRkaXRpb24gb2YgcGFja2FnZSBj
b25maWd1cmF0aW9uIHRlc3RzLiIgT0ZGKQotbWFya19hc19hZHZhbmNlZCAoQlVJTERfQ09ORklH
X1RFU1RTKQotaWYgKEJVSUxEX0NPTkZJR19URVNUUykKLSAgYWRkX2dmbGFnc19idWlsZF90ZXN0
IChjbWFrZV9jb25maWcgY29uZmlnIDApCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvY29u
ZmlnL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvY29uZmlnL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWJjMjgyOTZmNGZhMGI0YzlkZGViM2MxY2UwZjFjMzI3
MTAxNmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90
ZXN0L2NvbmZpZy9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAK
LSMjIGdmbGFncyBwYWNrYWdlIGNvbmZpZ3VyYXRpb24gdGVzdHMKLQotY21ha2VfbWluaW11bV9y
ZXF1aXJlZCAoVkVSU0lPTiAyLjgpCi0KLXByb2plY3QgKGdmbGFnc18ke1RFU1RfTkFNRX0pCi0K
LWZpbmRfcGFja2FnZSAoZ2ZsYWdzIFJFUVVJUkVEKQotCi1hZGRfZXhlY3V0YWJsZSAoZm9vIG1h
aW4uY2MpCi10YXJnZXRfbGlua19saWJyYXJpZXMgKGZvbyBnZmxhZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMv
dGVzdC9jb25maWcvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2NvbmZpZy9tYWluLmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5YjJiODk4YWQ5ZGFmZGNlYmU4NDJlNDFiNzBiYjJkYjk4YmUxMzAz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2Nv
bmZpZy9tYWluLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI2luY2x1ZGUgPGlv
c3RyZWFtPgotI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3MuaD4KLQotREVGSU5FX3N0cmluZyhtZXNz
YWdlLCAiSGVsbG8gV29ybGQhIiwgIlRoZSBtZXNzYWdlIHRvIHByaW50Iik7Ci0KLWludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgZ2ZsYWdzOjpTZXRVc2FnZU1lc3NhZ2UoIlRl
c3QgQ01ha2UgY29uZmlndXJhdGlvbiBvZiBnZmxhZ3MgbGlicmFyeSAoZ2ZsYWdzLWNvbmZpZy5j
bWFrZSkiKTsKLSAgZ2ZsYWdzOjpQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZhcmd2LCB0
cnVlKTsKLSAgc3RkOjpjb3V0IDw8IEZMQUdTX21lc3NhZ2UgPDwgc3RkOjplbmRsOwotICByZXR1
cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2NvbmZpZ19mb3JfdW5pdHRlc3RzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9jb25maWdfZm9yX3VuaXR0ZXN0cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
MTQ1NzFiMzZiOTk2MzVhY2Q4YTJhMmUwY2VjMmIwYWJhNTQ5ZGFiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2NvbmZpZ19mb3JfdW5pdHRlc3Rz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDcs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vIAotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8gCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyAtLS0KLS8vIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0vLwotLy8KLS8vIFRoaXMgZmlsZSBpcyBuZWVkZWQgZm9yIHdpbmRvd3MgLS0gdW5p
dHRlc3RzIGFyZSBub3QgcGFydCBvZiB0aGUKLS8vIGdmbGFncyBkbGwsIGJ1dCBzdGlsbCB3YW50
IHRvIGluY2x1ZGUgY29uZmlnLmgganVzdCBsaWtlIHRoZQotLy8gZGxsIGRvZXMsIHNvIHRoZXkg
Y2FuIHVzZSBpbnRlcm5hbCB0b29scyBhbmQgQVBJcyBmb3IgdGVzdGluZy4KLS8vCi0vLyBUaGUg
cHJvYmxlbSBpcyB0aGF0IGNvbmZpZy5oIGRlY2xhcmVzIEdGTEFHU19ETExfREVDTCB0byBiZQot
Ly8gZm9yIGV4cG9ydGluZyBzeW1ib2xzLCBidXQgdGhlIHVuaXR0ZXN0IG5lZWRzIHRvICppbXBv
cnQqIHN5bWJvbHMKLS8vIChzaW5jZSBpdCdzIG5vdCB0aGUgZGxsKS4KLS8vCi0vLyBUaGUgc29s
dXRpb24gaXMgdG8gaGF2ZSB0aGlzIGZpbGUsIHdoaWNoIGlzIGp1c3QgbGlrZSBjb25maWcuaCBi
dXQKLS8vIHNldHMgR0ZMQUdTX0RMTF9ERUNMIHRvIGRvIGEgZGxsaW1wb3J0IGluc3RlYWQgb2Yg
YSBkbGxleHBvcnQuCi0vLwotLy8gVGhlIHJlYXNvbiB3ZSBuZWVkIHRoaXMgZXh0cmEgR0ZMQUdT
X0RMTF9ERUNMX0ZPUl9VTklUVEVTVFMKLS8vIHZhcmlhYmxlIGlzIGluIGNhc2UgcGVvcGxlIHdh
bnQgdG8gc2V0IEdGTEFHU19ETExfREVDTCBleHBsaWNpdGx5Ci0vLyB0byBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkuICBJbiB0aGF0IGNhc2UsIHRoZXkKLS8vIG1h
eSB3YW50IHRvIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBfX2RlY2xzcGVjKGRsbGltcG9ydCkg
Zm9yIHRoZQotLy8gdW5pdHRlc3QgY2FzZS4gIEZvciB0aGF0LCB3ZSBhbGxvdyBmb2xrcyB0byBk
ZWZpbmUgYm90aAotLy8gR0ZMQUdTX0RMTF9ERUNMIGFuZCBHRkxBR1NfRExMX0RFQ0xfRk9SX1VO
SVRURVNUUyBleHBsaWNpdGx5LgotLy8KLS8vIE5PVEU6IFRoaXMgZmlsZSBpcyBlcXVpdmFsZW50
IHRvIGNvbmZpZy5oIG9uIG5vbi13aW5kb3dzIHN5c3RlbXMsCi0vLyB3aGljaCBuZXZlciBkZWZp
bmVkIEdGTEFHU19ETExfREVDTF9GT1JfVU5JVFRFU1RTIGFuZCBhbHdheXMKLS8vIGRlZmluZSBH
RkxBR1NfRExMX0RFQ0wgdG8gdGhlIGVtcHR5IHN0cmluZy4KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotCi0jaWZkZWYgR0ZMQUdTX0RMTF9ERUNMCi0jICB1bmRlZiBHRkxBR1NfRExMX0RFQ0wKLSNl
bmRpZgotI2lmZGVmIEdGTEFHU19ETExfREVGSU5FX0ZMQUcKLSMgIHVuZGVmIEdGTEFHU19ETExf
REVGSU5FX0ZMQUcKLSNlbmRpZgotI2lmZGVmIEdGTEFHU19ETExfREVDTEFSRV9GTEFHCi0jICB1
bmRlZiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRwotI2VuZGlmCi0KLSNpZmRlZiBHRkxBR1NfRExM
X0RFQ0xfRk9SX1VOSVRURVNUUwotIyAgZGVmaW5lIEdGTEFHU19ETExfREVDTCAgR0ZMQUdTX0RM
TF9ERUNMX0ZPUl9VTklUVEVTVFMKLSNlbHNlCi0jICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMICAv
LyBpZiBETExfREVDTF9GT1JfVU5JVFRFU1RTIGlzbid0IGRlZmluZWQsIHVzZSAiIgotI2VuZGlm
Ci0KLS8vIEltcG9ydCBmbGFncyBkZWZpbmVkIGJ5IGdmbGFncy5jYwotI2lmIEdGTEFHU19JU19B
X0RMTCAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgZGVmaW5lIEdGTEFHU19ETExfREVDTEFSRV9G
TEFHIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotI2Vsc2UKLSMgIGRlZmluZSBHRkxBR1NfRExMX0RF
Q0xBUkVfRkxBRwotI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3Rlc3QvZmxhZ2ZpbGUuMSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjEKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUwZjkyMTc2OWNmMDI5YjMwZjlmN2VmYzg1MjY3Y2Y3YWRmMDdlNTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZmxhZ2Zp
bGUuMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS0tdmVyc2lvbgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjIgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9mbGFn
ZmlsZS4yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjRmOGU4YTEzODU1MmE5NWUw
MGI4ZTRkOWFmOTI2ODM0Nzk5M2VkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLS0tZm9vPWJhcgotLS1ub3VudXNlZF9ib29sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZmxhZ2ZpbGUuMyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZDkyYmIxZTBmYzc3ZmE1NDc0MjBkYzQ5Zjc2MzZm
OTM2ZTAxMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L3Rlc3QvZmxhZ2ZpbGUuMworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS0tZmxhZ2ZpbGU9
ZmxhZ2ZpbGUuMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0
L2dmbGFnc19idWlsZC5weS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19idWlsZC5weS5pbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYThjYmEyYmY1YzA2MTE2Yzg4MzVhNTgyY2ViNWYyOTQ4Mzc2
MjlmYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9nZmxhZ3NfYnVpbGQucHkuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJv
Y2VzcwotaW1wb3J0IHNodXRpbAotCi1DTUFLRSAgICAgICAgICAgID0gJ0BDTUFLRV9DT01NQU5E
QCcKLUNNQUtFX0JVSUxEX1RZUEUgPSAnQENNQUtFX0JVSUxEX1RZUEVAJwotVE1QRElSICAgICAg
ICAgICA9ICdAVE1QRElSQCcKLVNSQ0RJUiAgICAgICAgICAgPSAnQFNSQ0RJUkAnCi1HRkxBR1Nf
RElSICAgICAgID0gJ0BnZmxhZ3NfQklOQVJZX0RJUkAnCi0KLWlmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6Ci0gIGlmIGxlbihzeXMuYXJndikgIT0gNDoKLSAgICBzeXMuc3RkZXJyLndyaXRlKCcg
Jy5qb2luKFsndXNhZ2U6Jywgc3lzLmFyZ3ZbMF0sICc8dGVzdF9uYW1lPiA8c3JjZGlyPiA8ZXhw
ZWN0X2ZhaWw6MHwxPlxuJ10pKQotICAgIHN5cy5leGl0KDEpCi0gIHRlc3RfbmFtZSAgID0gc3lz
LmFyZ3ZbMV0KLSAgc3JjZGlyICAgICAgPSBzeXMuYXJndlsyXQotICBleHBlY3RfZmFpbCA9IChz
eXMuYXJndlszXS5sb3dlcigpIGluIFsndHJ1ZScsICd5ZXMnLCAnb24nLCAnMSddKQotICBiaW5k
aXIgICAgICA9IG9zLnBhdGguam9pbihUTVBESVIsIHRlc3RfbmFtZSkKLSAgaWYgVE1QRElSID09
ICcnOgotICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RlbXBvcmFyeSBkaXJlY3Rvcnkgbm90IHNldCFc
bicpCi0gICAgc3lzLmV4aXQoMSkKLSAgIyBjcmVhdGUgYnVpbGQgZGlyZWN0b3J5Ci0gIGlmIG9z
LnBhdGguaXNkaXIoYmluZGlyKTogc2h1dGlsLnJtdHJlZShiaW5kaXIpCi0gIG9zLm1ha2VkaXJz
KGJpbmRpcikKLSAgIyBjb25maWd1cmUgdGhlIGJ1aWxkIHRyZWUKLSAgaWYgc3VicHJvY2Vzcy5j
YWxsKFtDTUFLRSwgJy1EQ01BS0VfQlVJTERfVFlQRTpTVFJJTkc9JytDTUFLRV9CVUlMRF9UWVBF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURnZmxhZ3NfRElSOlBBVEg9JytHRkxB
R1NfRElSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURURVNUX05BTUU6U1RSSU5H
PScrdGVzdF9uYW1lLCBzcmNkaXJdLCBjd2Q9YmluZGlyKSAhPSAwOgotICAgIHN5cy5zdGRlcnIu
d3JpdGUoJ0ZhaWxlZCB0byBjb25maWd1cmUgdGhlIGJ1aWxkIHRyZWUhXG4nKQotICAgIHN5cy5l
eGl0KDEpCi0gICMgYnVpbGQgdGhlIHRlc3QgcHJvamVjdAotICBleGl0X2NvZGUgPSBzdWJwcm9j
ZXNzLmNhbGwoW0NNQUtFLCAnLS1idWlsZCcsIGJpbmRpciwgJy0tY29uZmlnJywgQ01BS0VfQlVJ
TERfVFlQRV0sIGN3ZD1iaW5kaXIpCi0gIGlmIGV4cGVjdF9mYWlsID09IFRydWU6Ci0gICAgaWYg
ZXhpdF9jb2RlID09IDA6Ci0gICAgICBzeXMuc3RkZXJyLndyaXRlKCdCdWlsZCBleHBlY3RlZCB0
byBmYWlsLCBidXQgaXQgc3VjY2VlZGVkIVxuJykKLSAgICAgIHN5cy5leGl0KDEpCi0gICAgZWxz
ZToKLSAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0J1aWxkIGZhaWxlZCBhcyBleHBlY3RlZFxuJykK
LSAgICAgIGV4aXRfY29kZSA9IDAKLSAgc3lzLmV4aXQoZXhpdF9jb2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L3Rlc3QvZ2ZsYWdzX2RlY2xhcmVfZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVjbGFyZV9mbGFn
cy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ5MTY4NjFjYzY5MWU3OWM3OGNk
NDFiZDBiMGMyYWFlYzU3ODBlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVjbGFyZV9mbGFncy5jYworKysgL2Rldi9udWxsCkBA
IC0xLDEwICswLDAgQEAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxnZmxhZ3MvZ2Zs
YWdzX2RlY2xhcmUuaD4KLQotREVDTEFSRV9zdHJpbmcobWVzc2FnZSk7IC8vIGluIGdmbGFnc19k
ZWxjYXJlX3Rlc3QuY2MKLQotdm9pZCBwcmludF9tZXNzYWdlKCk7Ci12b2lkIHByaW50X21lc3Nh
Z2UoKQotewotICBzdGQ6OmNvdXQgPDwgRkxBR1NfbWVzc2FnZSA8PCBzdGQ6OmVuZGw7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVjbGFyZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2Rl
Y2xhcmVfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA3YmNjMDdkMDM0
Mzg1MGQ1MjhkZjQwMTUxZGY3Yjg5Mzk5YTU4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVjbGFyZV90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMTIgKzAsMCBAQAotI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3MuaD4KLQotREVG
SU5FX3N0cmluZyhtZXNzYWdlLCAiIiwgIlRoZSBtZXNzYWdlIHRvIHByaW50Iik7Ci12b2lkIHBy
aW50X21lc3NhZ2UoKTsgLy8gaW4gZ2ZsYWdzX2RlY2xhcmVfZmxhZ3MuY2MKLQotaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICBnZmxhZ3M6OlNldFVzYWdlTWVzc2FnZSgiVGVz
dCBjb21waWxhdGlvbiBhbmQgdXNlIG9mIGdmbGFnc19kZWNsYXJlLmgiKTsKLSAgZ2ZsYWdzOjpQ
YXJzZUNvbW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZhcmd2LCB0cnVlKTsKLSAgcHJpbnRfbWVzc2Fn
ZSgpOwotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19zdHJpcF9mbGFn
c190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI1ZWY1M2E1YmQ5NTFkNTk2N2ZhOWFmMDdhMTIwNGY3MzU5YmQ0
MzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3Qv
Z2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IC0tLQotLy8gQXV0aG9yOiBjc2lsdmVyc0Bnb29nbGUuY29tIChDcmFpZyBTaWx2ZXJzdGVpbikK
LS8vCi0vLyBBIHNpbXBsZSBwcm9ncmFtIHRoYXQgdXNlcyBTVFJJUF9GTEFHX0hFTFAuICBXZSds
bCBoYXZlIGEgc2hlbGwKLS8vIHNjcmlwdCB0aGF0IHJ1bnMgJ3N0cmluZ3MnIG92ZXIgdGhpcyBw
cm9ncmFtIGFuZCBtYWtlcyBzdXJlCi0vLyB0aGF0IHRoZSBoZWxwIHN0cmluZyBpcyBub3QgaW4g
dGhlcmUuCi0KLSNpbmNsdWRlICJjb25maWdfZm9yX3VuaXR0ZXN0cy5oIgotI2RlZmluZSBTVFJJ
UF9GTEFHX0hFTFAgMQotI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3MuaD4KLQotI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0KLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldFVzYWdlTWVzc2FnZTsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlBhcnNlQ29tbWFuZExpbmVGbGFnczsKLQotCi1ERUZJTkVfYm9v
bCh0ZXN0LCB0cnVlLCAiVGhpcyB0ZXh0IHNob3VsZCBiZSBzdHJpcHBlZCBvdXQiKTsKLQotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIFNldFVzYWdlTWVzc2FnZSgiVXNhZ2Ug
bWVzc2FnZSIpOwotICBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZhcmd2LCBmYWxzZSk7
Ci0KLSAgLy8gVW5mb3J0dW5hdGVseSwgZm9yIHVzLCBsaWJ0b29sIGNhbiByZXBsYWNlIGV4ZWN1
dGFibGVzIHdpdGggYSBzaGVsbAotICAvLyBzY3JpcHQgdGhhdCBkb2VzIHNvbWUgd29yayBiZWZv
cmUgY2FsbGluZyB0aGUgJ3JlYWwnIGV4ZWN1dGFibGUKLSAgLy8gdW5kZXIgYSBkaWZmZXJlbnQg
bmFtZS4gIFdlIG5lZWQgdGhlICdyZWFsJyBleGVjdXRhYmxlIG5hbWUgdG8gcnVuCi0gIC8vICdz
dHJpbmdzJyBvbiBpdCwgc28gd2UgY29uc3RydWN0IHRoaXMgYmluYXJ5IHRvIHByaW50IHRoZSBy
ZWFsCi0gIC8vIG5hbWUgKGFyZ3ZbMF0pIG9uIHN0ZG91dCB3aGVuIHJ1bi4KLSAgcHV0cyhhcmd2
WzBdKTsKLQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19zdHJpcF9m
bGFnc190ZXN0LmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QuY21ha2UKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDE5YzRmMGY0YjY0NGY2NzlmMDgyNGJmOTc1
ZmY1OTM4OWEyOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QuY21ha2UKKysrIC9kZXYvbnVsbApAQCAt
MSw3ICswLDAgQEAKLWlmIChOT1QgQklOQVJZKQotICBtZXNzYWdlIChGQVRBbF9FUlJPUiAiQklO
QVJZIGZpbGUgdG8gY2hlY2sgbm90IHNwZWNpZmllZCEiKQotZW5kaWYgKCkKLWZpbGUgKFNUUklO
R1MgIiR7QklOQVJZfSIgc3RyaW5ncyBSRUdFWCAiVGhpcyB0ZXh0IHNob3VsZCBiZSBzdHJpcHBl
ZCBvdXQiKQotaWYgKHN0cmluZ3MpCi0gIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJUZXh0IG5vdCBz
dHJpcHBlZCBmcm9tIGJpbmFyeSBsaWtlIGl0IHNob3VsZCBiZTogJHtCSU5BUll9IikKLWVuZGlm
ICgpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdz
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYzMwNDliZmExOTgxYjU2YTQyNGQ4MmFkMDY3NmQ2ZDU5YzVlM2VhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFn
c191bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1MzYgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IChjKSAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8gLS0tCi0vLwotLy8g
Rm9yIG5vdywgdGhpcyB1bml0IHRlc3QgZG9lcyBub3QgY292ZXIgYWxsIGZlYXR1cmVzIG9mCi0v
LyBnZmxhZ3MuY2MKLQotI2luY2x1ZGUgImNvbmZpZ19mb3JfdW5pdHRlc3RzLmgiCi0jaW5jbHVk
ZSA8Z2ZsYWdzL2dmbGFncy5oPgotCi0jaW5jbHVkZSA8bWF0aC5oPiAgICAgICAvLyBmb3IgaXNp
bmYoKSBhbmQgaXNuYW4oKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaWZkZWYgSEFWRV9VTklTVERfSAotIyAgaW5jbHVkZSA8
dW5pc3RkLmg+ICAgLy8gZm9yIHVubGluaygpCi0jZW5kaWYKLSNpbmNsdWRlIDx2ZWN0b3I+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgInV0aWwuaCIKLVRFU1RfSU5JVAotRVhQRUNUX0RF
QVRIX0lOSVQKLQotLy8gSSBkb24ndCBhY3R1YWxseSB1c2UgdGhpcyBoZWFkZXIgZmlsZSwgYnV0
ICNpbmNsdWRlIGl0IHVuZGVyIHRoZQotLy8gb2xkIGxvY2F0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0
IHRoZSBpbmNsdWRlLWhlYWRlci1mb3J3YXJkaW5nCi0vLyB3b3Jrcy4gIEJ1dCBkb24ndCBib3Ro
ZXIgb24gd2luZG93czsgdGhlIHdpbmRvd3MgcG9ydCBpcyBzbyBuZXcKLS8vIGl0IG5ldmVyIGhh
ZCB0aGUgb2xkIGxvY2F0aW9uLW5hbWVzLgotI2lmbmRlZiBfTVNDX1ZFUgotI2luY2x1ZGUgPGdm
bGFncy9nZmxhZ3NfY29tcGxldGlvbnMuaD4KLXZvaWQgKCp1bnVzZWRfZm4pKCkgPSAmR0ZMQUdT
X05BTUVTUEFDRTo6SGFuZGxlQ29tbWFuZExpbmVDb21wbGV0aW9uczsKLSNlbmRpZgotCi11c2lu
ZyBzdGQ6OnN0cmluZzsKLXVzaW5nIHN0ZDo6dmVjdG9yOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFD
RTo6aW50MzI7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlcjsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlN0cmluZ0Zyb21FbnY7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpSZWdpc3RlckZsYWdWYWxpZGF0b3I7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpDb21tYW5k
TGluZUZsYWdJbmZvOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QWxsRmxhZ3M7Ci0KLURF
RklORV9zdHJpbmcodGVzdF90bXBkaXIsICIiLCAiRGlyIHdlIHVzZSBmb3IgdGVtcCBmaWxlcyIp
OwotREVGSU5FX3N0cmluZyhzcmNkaXIsIFN0cmluZ0Zyb21FbnYoIlNSQ0RJUiIsICIuIiksICJT
b3VyY2UtZGlyIHJvb3QsIG5lZWRlZCB0byBmaW5kIGdmbGFnc191bml0dGVzdF9mbGFnZmlsZSIp
OwotCi1ERUNMQVJFX3N0cmluZyh0cnlmcm9tZW52KTsgICAvLyBpbiBnZmxhZ3MuY2MKLQotREVG
SU5FX2Jvb2wodGVzdF9ib29sLCBmYWxzZSwgInRlc3RzIGJvb2wtbmVzcyIpOwotREVGSU5FX2lu
dDMyKHRlc3RfaW50MzIsIC0xLCAiIik7Ci1ERUZJTkVfaW50NjQodGVzdF9pbnQ2NCwgLTIsICIi
KTsKLURFRklORV91aW50NjQodGVzdF91aW50NjQsIDIsICIiKTsKLURFRklORV9kb3VibGUodGVz
dF9kb3VibGUsIC0xLjAsICIiKTsKLURFRklORV9zdHJpbmcodGVzdF9zdHJpbmcsICJpbml0aWFs
IiwgIiIpOwotCi0vLwotLy8gVGhlIGJlbG93IHVnbGluZXNzIGdldHMgc29tZSBhZGRpdGlvbmFs
IGNvZGUgY292ZXJhZ2UgaW4gdGhlIC1oZWxweG1sCi0vLyBhbmQgLWhlbHBtYXRjaCB0ZXN0IGNh
c2VzIGhhdmluZyB0byBkbyB3aXRoIHN0cmluZyBsZW5ndGhzIGFuZCBmb3JtYXR0aW5nCi0vLwot
REVGSU5FX2Jvb2wodGVzdF9ib29sX3dpdGhfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVf
cXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfcXVpdGVfbG9u
Z19uYW1lLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAiZXh0cmVtZWx5X2V4dHJl
bWVseV9leHRyZW1lbHlfZXh0cmVtZWx5X2V4dHJlbWVseV9leHRyZW1lbHlfZXh0cmVtZWx5X2V4
dHJlbWVseV9sb25nX21lYW5pbmciKTsKLQotREVGSU5FX3N0cmluZyh0ZXN0X3N0cjEsICJpbml0
aWFsIiwgIiIpOwotREVGSU5FX3N0cmluZyh0ZXN0X3N0cjIsICJpbml0aWFsIiwgIiIpOwotREVG
SU5FX3N0cmluZyh0ZXN0X3N0cjMsICJpbml0aWFsIiwgIiIpOwotCi0vLyBUaGlzIGlzIHVzZWQg
dG8gdGVzdCBzZXR0aW5nIHRyeWZyb21lbnYgbWFudWFsbHkKLURFRklORV9zdHJpbmcodGVzdF90
cnlmcm9tZW52LCAiaW5pdGlhbCIsICIiKTsKLQotLy8gRG9uJ3QgdHJ5IHRoaXMgYXQgaG9tZSEK
LXN0YXRpYyBpbnQgY2hhbmdlYWJsZV92YXIgPSAxMjsKLURFRklORV9pbnQzMihjaGFuZ2VhYmxl
X3ZhciwgKytjaGFuZ2VhYmxlX3ZhciwgIiIpOwotCi1zdGF0aWMgaW50IGNoYW5nZWFibGVfYm9v
bF92YXIgPSA4MDA4OwotREVGSU5FX2Jvb2woY2hhbmdlYWJsZV9ib29sX3ZhciwgKytjaGFuZ2Vh
YmxlX2Jvb2xfdmFyID09IDgwMDksICIiKTsKLQotc3RhdGljIGludCBjaGFuZ2VhYmxlX3N0cmlu
Z192YXIgPSAwOwotc3RhdGljIHN0cmluZyBDaGFuZ2VhYmxlU3RyaW5nKCkgewotICBjaGFyIHJb
XSA9IHtzdGF0aWNfY2FzdDxjaGFyPignMCcgKyArK2NoYW5nZWFibGVfc3RyaW5nX3ZhciksICdc
MCd9OwotICByZXR1cm4gcjsKLX0KLURFRklORV9zdHJpbmcoY2hhbmdlYWJsZV9zdHJpbmdfdmFy
LCBDaGFuZ2VhYmxlU3RyaW5nKCksICIiKTsKLQotLy8gVGhlc2UgYXJlIG5ldmVyIHVzZWQgaW4g
dGhpcyB1bml0dGVzdCwgYnV0IGNhbiBiZSB1c2VkIGJ5Ci0vLyBnZmxhZ3NfdW5pdHRlc3Quc2gg
d2hlbiBpdCBuZWVkcyB0byBzcGVjaWZ5IGZsYWdzCi0vLyB0aGF0IGFyZSBsZWdhbCBmb3IgZ2Zs
YWdzX3VuaXR0ZXN0IGJ1dCBkb24ndCBuZWVkIHRvCi0vLyBiZSBhIHBhcnRpY3VsYXIgdmFsdWUu
Ci1ERUZJTkVfYm9vbCh1bnVzZWRfYm9vbCwgdHJ1ZSwgInVudXNlZCBib29sLW5lc3MiKTsKLURF
RklORV9pbnQzMih1bnVzZWRfaW50MzIsIC0xMDAxLCAiIik7Ci1ERUZJTkVfaW50NjQodW51c2Vk
X2ludDY0LCAtMjAwMSwgIiIpOwotREVGSU5FX3VpbnQ2NCh1bnVzZWRfdWludDY0LCAyMDAwLCAi
Iik7Ci1ERUZJTkVfZG91YmxlKHVudXNlZF9kb3VibGUsIC0xMDAwLjAsICIiKTsKLURFRklORV9z
dHJpbmcodW51c2VkX3N0cmluZywgInVudXNlZCIsICIiKTsKLQotLy8gVGhlc2UgZmxhZ3MgYXJl
IHVzZWQgYnkgZ2ZsYWdzX3VuaXR0ZXN0LnNoCi1ERUZJTkVfYm9vbChjaGFuZ2VkX2Jvb2wxLCBm
YWxzZSwgImNoYW5nZWQiKTsKLURFRklORV9ib29sKGNoYW5nZWRfYm9vbDIsIGZhbHNlLCAiY2hh
bmdlZCIpOwotREVGSU5FX2Jvb2wobG9uZ19oZWxwc3RyaW5nLCBmYWxzZSwKLSAgICAgICAgICAg
ICJUaGlzIGhlbHBzdHJpbmcgZ29lcyBvbiBmb3JldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBl
dmVyIGFuZCAiCi0gICAgICAgICAgICAiZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBh
bmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgIgotICAgICAgICAgICAgImV2ZXIgYW5kIGV2
ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kICIKLSAg
ICAgICAgICAgICJldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBl
dmVyIGFuZCBldmVyIGFuZCAiCi0gICAgICAgICAgICAiZXZlciBhbmQgZXZlciBhbmQgZXZlciBh
bmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgIgotICAgICAgICAgICAgImV2
ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIg
YW5kICIKLSAgICAgICAgICAgICJldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBl
dmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCAiCi0gICAgICAgICAgICAiZXZlciBhbmQgZXZlciBh
bmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgIgotICAgICAg
ICAgICAgImV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIg
YW5kIGV2ZXIgYW5kICIKLSAgICAgICAgICAgICJldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBl
dmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCAiCi0gICAgICAgICAgICAiZXZlci4g
IFRoaXMgaXMgdGhlIGVuZCBvZiBhIGxvbmcgaGVscHN0cmluZyIpOwotCi0KLXN0YXRpYyBib29s
IEFsd2F5c0ZhaWwoY29uc3QgY2hhciogZmxhZywgYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
PT0gZmFsc2U7IH0KLURFRklORV9ib29sKGFsd2F5c19mYWlsLCBmYWxzZSwgIndpbGwgZmFpbCB0
byB2YWxpZGF0ZSB3aGVuIHlvdSBzZXQgaXQiKTsKLURFRklORV92YWxpZGF0b3IoYWx3YXlzX2Zh
aWwsIEFsd2F5c0ZhaWwpOwotCi0vLyBTZWUgdGhlIGNvbW1lbnQgYnkgR2V0QWxsRmxhZ3MgaW4g
Z2ZsYWdzLmgKLXN0YXRpYyBib29sIERlYWRsb2NrSWZDYW50TG9ja0luVmFsaWRhdG9ycyhjb25z
dCBjaGFyKiBmbGFnLCBib29sIHZhbHVlKSB7Ci0gIGlmICghdmFsdWUpIHsKLSAgICByZXR1cm4g
dHJ1ZTsKLSAgfQotICB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4gZHVtbXk7Ci0gIEdldEFs
bEZsYWdzKCZkdW1teSk7Ci0gIHJldHVybiB0cnVlOwotfQotREVGSU5FX2Jvb2woZGVhZGxvY2tf
aWZfY2FudF9sb2NrLAotICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAid2lsbCBkZWFk
bG9jayBpZiBzZXQgdG8gdHJ1ZSBhbmQgIgotICAgICAgICAgICAgImlmIGxvY2tpbmcgb2YgcmVn
aXN0cnkgaW4gdmFsaWRhdG9ycyBmYWlscy4iKTsKLURFRklORV92YWxpZGF0b3IoZGVhZGxvY2tf
aWZfY2FudF9sb2NrLCBEZWFkbG9ja0lmQ2FudExvY2tJblZhbGlkYXRvcnMpOwotCi0jZGVmaW5l
IE1BS0VGTEFHKHgpIERFRklORV9pbnQzMih0ZXN0X2ZsYWdfbnVtIyN4LCB4LCAiVGVzdCBmbGFn
IikKLQotLy8gRGVmaW5lIDEwIGZsYWdzCi0jZGVmaW5lIE1BS0VGTEFHMTAoeCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzApOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzEpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gIE1BS0VGTEFHKHgjIzIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gIE1BS0VGTEFHKHgjIzMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE1B
S0VGTEFHKHgjIzQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFH
KHgjIzUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzYp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzcpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gIE1BS0VGTEFHKHgjIzkpCi0KLS8vIERlZmluZSAxMDAg
ZmxhZ3MKLSNkZWZpbmUgTUFLRUZMQUcxMDAoeCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgTUFLRUZMQUcxMCh4IyMwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFL
RUZMQUcxMCh4IyMxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcx
MCh4IyMyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyMz
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyM0KTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyM1KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyM2KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyM3KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgTUFLRUZMQUcxMCh4IyM4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgTUFLRUZMQUcxMCh4IyM5KQotCi0vLyBEZWZpbmUgYSBidW5jaCBvZiBjb21tYW5kLWxp
bmUgZmxhZ3MuICBFYWNoIG9jY3VycmVuY2Ugb2YgdGhlIE1BS0VGTEFHMTAwCi0vLyBtYWNybyBk
ZWZpbmVzIDEwMCBpbnRlZ2VyIGZsYWdzLiAgVGhpcyBsZXRzIHVzIHRlc3QgdGhlIGVmZmVjdCBv
ZiBoYXZpbmcKLS8vIG1hbnkgZmxhZ3Mgb24gc3RhcnR1cCB0aW1lLgotTUFLRUZMQUcxMDAoMSk7
Ci1NQUtFRkxBRzEwMCgyKTsKLU1BS0VGTEFHMTAwKDMpOwotTUFLRUZMQUcxMDAoNCk7Ci1NQUtF
RkxBRzEwMCg1KTsKLU1BS0VGTEFHMTAwKDYpOwotTUFLRUZMQUcxMDAoNyk7Ci1NQUtFRkxBRzEw
MCg4KTsKLU1BS0VGTEFHMTAwKDkpOwotTUFLRUZMQUcxMDAoMTApOwotTUFLRUZMQUcxMDAoMTEp
OwotTUFLRUZMQUcxMDAoMTIpOwotTUFLRUZMQUcxMDAoMTMpOwotTUFLRUZMQUcxMDAoMTQpOwot
TUFLRUZMQUcxMDAoMTUpOwotCi0jdW5kZWYgTUFLRUZMQUcxMDAKLSN1bmRlZiBNQUtFRkxBRzEw
Ci0jdW5kZWYgTUFLRUZMQUcKLQotLy8gVGhpcyBpcyBhIHBzZXVkby1mbGFnIC0tIHdlIHdhbnQg
dG8gcmVnaXN0ZXIgYSBmbGFnIHdpdGggYSBmaWxlbmFtZQotLy8gYXQgdGhlIHRvcCBsZXZlbCwg
YnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0aGlzIGV4Y2VwdCBieSBmYWtpbmcKLS8vIHRoZSBm
aWxlbmFtZS4KLW5hbWVzcGFjZSBmTEkgewotICBzdGF0aWMgY29uc3QgaW50MzIgRkxBR1Nfbm9u
b3RsZGZsYWcxID0gMTI7Ci0gIGludDMyIEZMQUdTX3RsZGZsYWcxID0gRkxBR1Nfbm9ub3RsZGZs
YWcxOwotICBpbnQzMiBGTEFHU19ub3RsZGZsYWcxID0gRkxBR1Nfbm9ub3RsZGZsYWcxOwotICBz
dGF0aWMgRmxhZ1JlZ2lzdGVyZXIgb190bGRmbGFnMSgKLSAgICAidGxkZmxhZzEiLCAiaW50MzIi
LAotICAgICJzaG91bGQgc2hvdyB1cCBpbiAtLWhlbHBzaG9ydCIsICJnZmxhZ3NfdW5pdHRlc3Qu
Y2MiLAotICAgICZGTEFHU190bGRmbGFnMSwgJkZMQUdTX25vdGxkZmxhZzEpOwotfQotdXNpbmcg
ZkxJOjpGTEFHU190bGRmbGFnMTsKLQotbmFtZXNwYWNlIGZMSSB7Ci0gIHN0YXRpYyBjb25zdCBp
bnQzMiBGTEFHU19ub25vdGxkZmxhZzIgPSAyMzsKLSAgaW50MzIgRkxBR1NfdGxkZmxhZzIgPSBG
TEFHU19ub25vdGxkZmxhZzI7Ci0gIGludDMyIEZMQUdTX25vdGxkZmxhZzIgPSBGTEFHU19ub25v
dGxkZmxhZzI7Ci0gIHN0YXRpYyBGbGFnUmVnaXN0ZXJlciBvX3RsZGZsYWcyKAotICAgICJ0bGRm
bGFnMiIsICJpbnQzMiIsCi0gICAgInNob3VsZCBzaG93IHVwIGluIC0taGVscHNob3J0IiwgImdm
bGFnc191bml0dGVzdC4iLAotICAgICZGTEFHU190bGRmbGFnMiwgJkZMQUdTX25vdGxkZmxhZzIp
OwotfQotdXNpbmcgZkxJOjpGTEFHU190bGRmbGFnMjsKLQotbmFtZXNwYWNlIEdGTEFHU19OQU1F
U1BBQ0UgewotCi1uYW1lc3BhY2UgewotCi0KLXN0YXRpYyBzdHJpbmcgVG1wRmlsZShjb25zdCBz
dHJpbmcmIGJhc2VuYW1lKSB7Ci0jaWZkZWYgX01TQ19WRVIKLSAgcmV0dXJuIEZMQUdTX3Rlc3Rf
dG1wZGlyICsgIlxcIiArIGJhc2VuYW1lOwotI2Vsc2UKLSAgcmV0dXJuIEZMQUdTX3Rlc3RfdG1w
ZGlyICsgIi8iICsgYmFzZW5hbWU7Ci0jZW5kaWYKLX0KLQotLy8gUmV0dXJucyB0aGUgZGVmaW5p
dGlvbiBvZiB0aGUgLS1mbGFnZmlsZSBmbGFnIHRvIGJlIHVzZWQgaW4gdGhlIHRlc3RzLgotLy8g
TXVzdCBiZSBjYWxsZWQgYWZ0ZXIgUGFyc2VDb21tYW5kTGluZUZsYWdzKCkuCi1zdGF0aWMgY29u
c3QgY2hhciogR2V0RmxhZ0ZpbGVGbGFnKCkgewotI2lmZGVmIF9NU0NfVkVSCi0gIHN0YXRpYyBj
b25zdCBzdHJpbmcgZmxhZ2ZpbGUgPSBGTEFHU19zcmNkaXIgKyAiXFxnZmxhZ3NfdW5pdHRlc3Rf
ZmxhZ2ZpbGUiOwotI2Vsc2UKLSAgc3RhdGljIGNvbnN0IHN0cmluZyBmbGFnZmlsZSA9IEZMQUdT
X3NyY2RpciArICIvZ2ZsYWdzX3VuaXR0ZXN0X2ZsYWdmaWxlIjsKLSNlbmRpZgotICBzdGF0aWMg
Y29uc3Qgc3RyaW5nIGZsYWdmaWxlX2ZsYWcgPSBzdHJpbmcoIi0tZmxhZ2ZpbGU9IikgKyBmbGFn
ZmlsZTsKLSAgcmV0dXJuIGZsYWdmaWxlX2ZsYWcuY19zdHIoKTsKLX0KLQotCi0vLyBEZWZpbmlu
ZyBhIHZhcmlhYmxlIG9mIHR5cGUgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIFQyPiB3aWxs
IGNhdXNlIGEKLS8vIGNvbXBpbGVyIGVycm9yIGlmZiBUMSBhbmQgVDIgYXJlIGRpZmZlcmVudCB0
eXBlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWw7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPFQsIFQ+IHsKLX07Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEV4
cGVjdGVkLCB0eXBlbmFtZSBBY3R1YWw+Ci12b2lkIEFzc2VydElzVHlwZShBY3R1YWwmIHgpIHsK
LSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8RXhwZWN0ZWQsIEFjdHVhbD4oKTsKLX0KLQotLy8g
VmVyaWZ5IGFsbCB0aGUgZmxhZ3MgYXJlIHRoZSByaWdodCB0eXBlLgotVEVTVChGbGFnVHlwZXMs
IEZsYWdUeXBlcykgewotICBBc3NlcnRJc1R5cGU8Ym9vbD4oRkxBR1NfdGVzdF9ib29sKTsKLSAg
QXNzZXJ0SXNUeXBlPGludDMyPihGTEFHU190ZXN0X2ludDMyKTsKLSAgQXNzZXJ0SXNUeXBlPGlu
dDY0PihGTEFHU190ZXN0X2ludDY0KTsKLSAgQXNzZXJ0SXNUeXBlPHVpbnQ2ND4oRkxBR1NfdGVz
dF91aW50NjQpOwotICBBc3NlcnRJc1R5cGU8ZG91YmxlPihGTEFHU190ZXN0X2RvdWJsZSk7Ci0g
IEFzc2VydElzVHlwZTxzdHJpbmc+KEZMQUdTX3Rlc3Rfc3RyaW5nKTsKLX0KLQotI2lmZGVmIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0vLyBEZWF0aCB0ZXN0cyBmb3IgImhlbHAiIG9wdGlvbnMuCi0v
LwotLy8gVGhlIGhlbHAgc3lzdGVtIGF1dG9tYXRpY2FsbHkgY2FsbHMgZ2ZsYWdzX2V4aXRmdW5j
KDEpIHdoZW4geW91IHNwZWNpZnkgYW55IG9mCi0vLyB0aGUgaGVscC1yZWxhdGVkIGZsYWdzICgi
LWhlbHBtYXRjaCIsICItaGVscHhtbCIpIHNvIHdlIGNhbid0IHRlc3QKLS8vIHRob3NlIG1haW5s
aW5lLgotCi0vLyBUZXN0cyB0aGF0ICItaGVscG1hdGNoIiBjYXVzZXMgdGhlIHByb2Nlc3MgdG8g
ZGllLgotVEVTVChSZWFkRmxhZ3NGcm9tU3RyaW5nRGVhdGhUZXN0LCBIZWxwTWF0Y2gpIHsKLSAg
RVhQRUNUX0RFQVRIKFJlYWRGbGFnc0Zyb21TdHJpbmcoIi1oZWxwbWF0Y2g9YmFzZSIsIEdldEFy
Z3YwKCksIHRydWUpLAotICAgICAgICAgICAgICAgIiIpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQg
Ii1oZWxweG1sIiBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllLgotVEVTVChSZWFkRmxhZ3NGcm9t
U3RyaW5nRGVhdGhUZXN0LCBIZWxwWG1sKSB7Ci0gIEVYUEVDVF9ERUFUSChSZWFkRmxhZ3NGcm9t
U3RyaW5nKCItaGVscHhtbCIsIEdldEFyZ3YwKCksIHRydWUpLAotICAgICAgICAgICAgICAgIiIp
OwotfQotI2VuZGlmCi0KLQotLy8gQSBzdWJyb3V0aW5lIG5lZWRlZCBmb3IgdGVzdGluZyByZWFk
aW5nIGZsYWdzIGZyb20gYSBzdHJpbmcuCi12b2lkIFRlc3RGbGFnU3RyaW5nKGNvbnN0IHN0cmlu
ZyYgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgZXhwZWN0ZWRfc3Ry
aW5nLAotICAgICAgICAgICAgICAgICAgICBib29sIGV4cGVjdGVkX2Jvb2wsCi0gICAgICAgICAg
ICAgICAgICAgIGludDMyIGV4cGVjdGVkX2ludDMyLAotICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgZXhwZWN0ZWRfZG91YmxlKSB7Ci0gIEVYUEVDVF9UUlVFKFJlYWRGbGFnc0Zyb21TdHJpbmco
ZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0QXJndjAoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcnJvcnMgYXJlIGZhdGFsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpOwotCi0gIEVYUEVDVF9FUShleHBl
Y3RlZF9zdHJpbmcsIEZMQUdTX3Rlc3Rfc3RyaW5nKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX2Jv
b2wsIEZMQUdTX3Rlc3RfYm9vbCk7Ci0gIEVYUEVDVF9FUShleHBlY3RlZF9pbnQzMiwgRkxBR1Nf
dGVzdF9pbnQzMik7Ci0gIEVYUEVDVF9ET1VCTEVfRVEoZXhwZWN0ZWRfZG91YmxlLCBGTEFHU190
ZXN0X2RvdWJsZSk7Ci19Ci0KLQotLy8gVGVzdHMgcmVhZGluZyBmbGFncyBmcm9tIGEgc3RyaW5n
LgotVEVTVChGbGFnRmlsZVRlc3QsIFJlYWRGbGFnc0Zyb21TdHJpbmcpIHsKLSAgVGVzdEZsYWdT
dHJpbmcoCi0gICAgICAvLyBGbGFnIHN0cmluZwotICAgICAgIi10ZXN0X3N0cmluZz1jb250aW51
ZWRcbiIKLSAgICAgICIjIHNvbWUgY29tbWVudHMgYXJlIGluIG9yZGVyXG4iCi0gICAgICAiIyBz
b21lXG4iCi0gICAgICAiICAjIGNvbW1lbnRzXG4iCi0gICAgICAiI2FyZVxuIgotICAgICAgIiAg
ICAgICAgICAgICAgICAgICN0cmlja2llclxuIgotICAgICAgIiMgdGhhbiBvdGhlcnNcbiIKLSAg
ICAgICItdGVzdF9ib29sPXRydWVcbiIKLSAgICAgICIgICAgIC10ZXN0X2ludDMyPTFcbiIKLSAg
ICAgICItdGVzdF9kb3VibGU9MC4wXG4iLAotICAgICAgLy8gRXhwZWN0ZWQgdmFsdWVzCi0gICAg
ICAiY29udGludWVkIiwKLSAgICAgIHRydWUsCi0gICAgICAxLAotICAgICAgMC4wKTsKLQotICBU
ZXN0RmxhZ1N0cmluZygKLSAgICAgIC8vIEZsYWcgc3RyaW5nCi0gICAgICAiIyBsZXQncyBtYWtl
IHN1cmUgaXQgY2FuIHVwZGF0ZSB2YWx1ZXNcbiIKLSAgICAgICItdGVzdF9zdHJpbmc9aW5pdGlh
bFxuIgotICAgICAgIi10ZXN0X2Jvb2w9ZmFsc2VcbiIKLSAgICAgICItdGVzdF9pbnQzMj0xMjNc
biIKLSAgICAgICItdGVzdF9kb3VibGU9MTIzLjBcbiIsCi0gICAgICAvLyBFeHBlY3RlZCB2YWx1
ZXMKLSAgICAgICJpbml0aWFsIiwKLSAgICAgIGZhbHNlLAotICAgICAgMTIzLAotICAgICAgMTIz
LjApOwotfQotCi0vLyBUZXN0cyB0aGUgZmlsZW5hbWUgcGFydCBvZiB0aGUgZmxhZ2ZpbGUKLVRF
U1QoRmxhZ0ZpbGVUZXN0LCBGaWxlbmFtZXNPdXJmaWxlTGFzdCkgewotICBGTEFHU190ZXN0X3N0
cmluZyA9ICJpbml0aWFsIjsKLSAgRkxBR1NfdGVzdF9ib29sID0gZmFsc2U7Ci0gIEZMQUdTX3Rl
c3RfaW50MzIgPSAtMTsKLSAgRkxBR1NfdGVzdF9kb3VibGUgPSAtMS4wOwotICBUZXN0RmxhZ1N0
cmluZygKLSAgICAgIC8vIEZsYWcgc3RyaW5nCi0gICAgICAiLXRlc3Rfc3RyaW5nPWNvbnRpbnVl
ZFxuIgotICAgICAgIiMgc29tZSBjb21tZW50cyBhcmUgaW4gb3JkZXJcbiIKLSAgICAgICIjIHNv
bWVcbiIKLSAgICAgICIgICMgY29tbWVudHNcbiIKLSAgICAgICIjYXJlXG4iCi0gICAgICAiICAg
ICAgICAgICAgICAgICAgI3RyaWNraWVyXG4iCi0gICAgICAiIyB0aGFuIG90aGVyc1xuIgotICAg
ICAgIm5vdF9vdXJfZmlsZW5hbWVcbiIKLSAgICAgICItdGVzdF9ib29sPXRydWVcbiIKLSAgICAg
ICIgICAgIC10ZXN0X2ludDMyPTFcbiIKLSAgICAgICJnZmxhZ3NfdW5pdHRlc3RcbiIKLSAgICAg
ICItdGVzdF9kb3VibGU9MTAwMC4wXG4iLAotICAgICAgLy8gRXhwZWN0ZWQgdmFsdWVzCi0gICAg
ICAiY29udGludWVkIiwKLSAgICAgIGZhbHNlLAotICAgICAgLTEsCi0gICAgICAxMDAwLjApOwot
fQotCi1URVNUKEZsYWdGaWxlVGVzdCwgRmlsZW5hbWVzT3VyZmlsZUZpcnN0KSB7Ci0gIEZMQUdT
X3Rlc3Rfc3RyaW5nID0gImluaXRpYWwiOwotICBGTEFHU190ZXN0X2Jvb2wgPSBmYWxzZTsKLSAg
RkxBR1NfdGVzdF9pbnQzMiA9IC0xOwotICBGTEFHU190ZXN0X2RvdWJsZSA9IC0xLjA7Ci0gIFRl
c3RGbGFnU3RyaW5nKAotICAgICAgLy8gRmxhZyBzdHJpbmcKLSAgICAgICItdGVzdF9zdHJpbmc9
Y29udGludWVkXG4iCi0gICAgICAiIyBzb21lIGNvbW1lbnRzIGFyZSBpbiBvcmRlclxuIgotICAg
ICAgIiMgc29tZVxuIgotICAgICAgIiAgIyBjb21tZW50c1xuIgotICAgICAgIiNhcmVcbiIKLSAg
ICAgICIgICAgICAgICAgICAgICAgICAjdHJpY2tpZXJcbiIKLSAgICAgICIjIHRoYW4gb3RoZXJz
XG4iCi0gICAgICAiZ2ZsYWdzX3VuaXR0ZXN0XG4iCi0gICAgICAiLXRlc3RfYm9vbD10cnVlXG4i
Ci0gICAgICAiICAgICAtdGVzdF9pbnQzMj0xXG4iCi0gICAgICAibm90X291cl9maWxlbmFtZVxu
IgotICAgICAgIi10ZXN0X2RvdWJsZT0xMDAwLjBcbiIsCi0gICAgICAvLyBFeHBlY3RlZCB2YWx1
ZXMKLSAgICAgICJjb250aW51ZWQiLAotICAgICAgdHJ1ZSwKLSAgICAgIDEsCi0gICAgICAtMS4w
KTsKLX0KLQotI2lmIGRlZmluZWQoSEFWRV9GTk1BVENIX0gpIHx8IGRlZmluZWQoSEFWRV9TSExX
QVBJX0gpICAvLyBvdGhlcndpc2UgZ2xvYiBpc24ndCBzdXBwb3J0ZWQKLVRFU1QoRmxhZ0ZpbGVU
ZXN0LCBGaWxlbmFtZXNPdXJmaWxlR2xvYikgewotICBGTEFHU190ZXN0X3N0cmluZyA9ICJpbml0
aWFsIjsKLSAgRkxBR1NfdGVzdF9ib29sID0gZmFsc2U7Ci0gIEZMQUdTX3Rlc3RfaW50MzIgPSAt
MTsKLSAgRkxBR1NfdGVzdF9kb3VibGUgPSAtMS4wOwotICBUZXN0RmxhZ1N0cmluZygKLSAgICAg
IC8vIEZsYWcgc3RyaW5nCi0gICAgICAiLXRlc3Rfc3RyaW5nPWNvbnRpbnVlZFxuIgotICAgICAg
IiMgc29tZSBjb21tZW50cyBhcmUgaW4gb3JkZXJcbiIKLSAgICAgICIjIHNvbWVcbiIKLSAgICAg
ICIgICMgY29tbWVudHNcbiIKLSAgICAgICIjYXJlXG4iCi0gICAgICAiICAgICAgICAgICAgICAg
ICAgI3RyaWNraWVyXG4iCi0gICAgICAiIyB0aGFuIG90aGVyc1xuIgotICAgICAgIipmbGFncypc
biIKLSAgICAgICItdGVzdF9ib29sPXRydWVcbiIKLSAgICAgICIgICAgIC10ZXN0X2ludDMyPTFc
biIKLSAgICAgICJmbGFnc1xuIgotICAgICAgIi10ZXN0X2RvdWJsZT0xMDAwLjBcbiIsCi0gICAg
ICAvLyBFeHBlY3RlZCB2YWx1ZXMKLSAgICAgICJjb250aW51ZWQiLAotICAgICAgdHJ1ZSwKLSAg
ICAgIDEsCi0gICAgICAtMS4wKTsKLX0KLQotVEVTVChGbGFnRmlsZVRlc3QsIEZpbGVuYW1lc091
cmZpbGVJbkJpZ0xpc3QpIHsKLSAgRkxBR1NfdGVzdF9zdHJpbmcgPSAiaW5pdGlhbCI7Ci0gIEZM
QUdTX3Rlc3RfYm9vbCA9IGZhbHNlOwotICBGTEFHU190ZXN0X2ludDMyID0gLTE7Ci0gIEZMQUdT
X3Rlc3RfZG91YmxlID0gLTEuMDsKLSAgVGVzdEZsYWdTdHJpbmcoCi0gICAgICAvLyBGbGFnIHN0
cmluZwotICAgICAgIi10ZXN0X3N0cmluZz1jb250aW51ZWRcbiIKLSAgICAgICIjIHNvbWUgY29t
bWVudHMgYXJlIGluIG9yZGVyXG4iCi0gICAgICAiIyBzb21lXG4iCi0gICAgICAiICAjIGNvbW1l
bnRzXG4iCi0gICAgICAiI2FyZVxuIgotICAgICAgIiAgICAgICAgICAgICAgICAgICN0cmlja2ll
clxuIgotICAgICAgIiMgdGhhbiBvdGhlcnNcbiIKLSAgICAgICIqZmlyc3QqICpmbGFncyogKnRo
aXJkKlxuIgotICAgICAgIi10ZXN0X2Jvb2w9dHJ1ZVxuIgotICAgICAgIiAgICAgLXRlc3RfaW50
MzI9MVxuIgotICAgICAgImZsYWdzXG4iCi0gICAgICAiLXRlc3RfZG91YmxlPTEwMDAuMFxuIiwK
LSAgICAgIC8vIEV4cGVjdGVkIHZhbHVlcwotICAgICAgImNvbnRpbnVlZCIsCi0gICAgICB0cnVl
LAotICAgICAgMSwKLSAgICAgIC0xLjApOwotfQotI2VuZGlmICAvLyBkZWZpbmVkKEhBVkVfRk5N
QVRDSF9IKSB8fCBkZWZpbmVkKEhBVkVfU0hMV0FQSV9IKQotCi0vLyBUZXN0cyB0aGF0IGEgZmFp
bGVkIGZsYWctZnJvbS1zdHJpbmcgcmVhZCBrZWVwcyBmbGFncyBhdCBkZWZhdWx0IHZhbHVlcwot
VEVTVChGbGFnRmlsZVRlc3QsIEZhaWxSZWFkRmxhZ3NGcm9tU3RyaW5nKSB7Ci0gIEZMQUdTX3Rl
c3RfaW50MzIgPSAxMTk7Ci0gIHN0cmluZyBmbGFncygiIyBsZXQncyBtYWtlIHN1cmUgaXQgY2Fu
IHVwZGF0ZSB2YWx1ZXNcbiIKLSAgICAgICAgICAgICAgICItdGVzdF9zdHJpbmc9bm9uX2luaXRp
YWxcbiIKLSAgICAgICAgICAgICAgICItdGVzdF9ib29sPWZhbHNlXG4iCi0gICAgICAgICAgICAg
ICAiLXRlc3RfaW50MzI9MTIzXG4iCi0gICAgICAgICAgICAgICAiLXRlc3RfZG91YmxlPWlsbGVn
YWxcbiIpOwotCi0gIEVYUEVDVF9GQUxTRShSZWFkRmxhZ3NGcm9tU3RyaW5nKGZsYWdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRBcmd2MCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBlcnJvcnMgYXJlIGZhdGFsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKSk7Ci0KLSAgRVhQRUNUX0VRKDExOSwgRkxBR1Nf
dGVzdF9pbnQzMik7Ci0gIEVYUEVDVF9FUSgiaW5pdGlhbCIsIEZMQUdTX3Rlc3Rfc3RyaW5nKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBmbGFncyBjYW4gYmUgc2V0IHRvIG9yZGluYXJ5IHZhbHVlcy4K
LVRFU1QoU2V0RmxhZ1ZhbHVlVGVzdCwgT3JkaW5hcnlWYWx1ZXMpIHsKLSAgRVhQRUNUX0VRKCJp
bml0aWFsIiwgRkxBR1NfdGVzdF9zdHIxKTsKLQotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhN
b2RlKCJ0ZXN0X3N0cjEiLCAic2Vjb25kIiwgU0VUX0ZMQUdfSUZfREVGQVVMVCk7Ci0gIEVYUEVD
VF9FUSgic2Vjb25kIiwgRkxBR1NfdGVzdF9zdHIxKTsgIC8vIHNldDsgd2FzIGRlZmF1bHQKLQot
ICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjEiLCAidGhpcmQiLCBTRVRf
RkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0X3N0cjEp
OyAgLy8gYWxyZWFkeSBzZXQgb25jZQotCi0gIEZMQUdTX3Rlc3Rfc3RyMSA9ICJpbml0aWFsIjsK
LSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIxIiwgInRoaXJkIiwgU0VU
X0ZMQUdfSUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgiaW5pdGlhbCIsIEZMQUdTX3Rlc3Rfc3Ry
MSk7ICAvLyBzdGlsbCBhbHJlYWR5IHNldCBiZWZvcmUKLQotICBTZXRDb21tYW5kTGluZU9wdGlv
bldpdGhNb2RlKCJ0ZXN0X3N0cjEiLCAidGhpcmQiLCBTRVRfRkxBR1NfVkFMVUUpOwotICBFWFBF
Q1RfRVEoInRoaXJkIiwgRkxBR1NfdGVzdF9zdHIxKTsgIC8vIGNoYW5nZWQgdmFsdWUKLQotICBT
ZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjEiLCAiZm91cnRoIiwgU0VUX0ZM
QUdTX0RFRkFVTFQpOwotICBFWFBFQ1RfRVEoInRoaXJkIiwgRkxBR1NfdGVzdF9zdHIxKTsKLSAg
Ly8gdmFsdWUgbm90IGNoYW5nZWQgKGFscmVhZHkgc2V0IGJlZm9yZSkKLQotICBFWFBFQ1RfRVEo
ImluaXRpYWwiLCBGTEFHU190ZXN0X3N0cjIpOwotCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0
aE1vZGUoInRlc3Rfc3RyMiIsICJzZWNvbmQiLCBTRVRfRkxBR1NfREVGQVVMVCk7Ci0gIEVYUEVD
VF9FUSgic2Vjb25kIiwgRkxBR1NfdGVzdF9zdHIyKTsgIC8vIGNoYW5nZWQgKHdhcyBkZWZhdWx0
KQotCi0gIEZMQUdTX3Rlc3Rfc3RyMiA9ICJleHRyYSI7Ci0gIEVYUEVDVF9FUSgiZXh0cmEiLCBG
TEFHU190ZXN0X3N0cjIpOwotCi0gIEZMQUdTX3Rlc3Rfc3RyMiA9ICJzZWNvbmQiOwotICBTZXRD
b21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjIiLCAidGhpcmQiLCBTRVRfRkxBR1Nf
REVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgidGhpcmQiLCBGTEFHU190ZXN0X3N0cjIpOyAgLy8gc3Rp
bGwgY2hhbmdlZCAod2FzIGVxdWFsIHRvIGRlZmF1bHQpCi0KLSAgU2V0Q29tbWFuZExpbmVPcHRp
b25XaXRoTW9kZSgidGVzdF9zdHIyIiwgImZvdXJ0aCIsIFNFVF9GTEFHX0lGX0RFRkFVTFQpOwot
ICBFWFBFQ1RfRVEoImZvdXJ0aCIsIEZMQUdTX3Rlc3Rfc3RyMik7ICAvLyBjaGFuZ2VkICh3YXMg
ZGVmYXVsdCkKLQotICBFWFBFQ1RfRVEoImluaXRpYWwiLCBGTEFHU190ZXN0X3N0cjMpOwotCi0g
IFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMyIsICJzZWNvbmQiLCBTRVRf
RkxBR1NfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgic2Vjb25kIiwgRkxBR1NfdGVzdF9zdHIzKTsg
IC8vIGNoYW5nZWQKLQotICBGTEFHU190ZXN0X3N0cjMgPSAidGhpcmQiOwotICBTZXRDb21tYW5k
TGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjMiLCAiZm91cnRoIiwgU0VUX0ZMQUdTX0RFRkFV
TFQpOwotICBFWFBFQ1RfRVEoInRoaXJkIiwgRkxBR1NfdGVzdF9zdHIzKTsgIC8vIG5vdCBjaGFu
Z2VkICh3YXMgc2V0KQotCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3Ry
MyIsICJmb3VydGgiLCBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJ0aGlyZCIs
IEZMQUdTX3Rlc3Rfc3RyMyk7ICAvLyBub3QgY2hhbmdlZCAod2FzIHNldCkKLQotICBTZXRDb21t
YW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjMiLCAiZm91cnRoIiwgU0VUX0ZMQUdTX1ZB
TFVFKTsKLSAgRVhQRUNUX0VRKCJmb3VydGgiLCBGTEFHU190ZXN0X3N0cjMpOyAgLy8gY2hhbmdl
ZCB2YWx1ZQotfQotCi0KLS8vIFRlc3RzIHRoYXQgZmxhZ3MgY2FuIGJlIHNldCB0byBleGNlcHRp
b25hbCB2YWx1ZXMuCi0vLyBOb3RlOiBhcHBhcmVudGx5IE1JTkdXIGRvZXNuJ3QgcGFyc2UgaW5m
IGFuZCBuYW4gY29ycmVjdGx5OgotLy8gICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2J1
Zy1nbnVsaWJAZ251Lm9yZy9tc2cwOTU3My5odG1sCi0vLyBUaGlzIHVybCBzYXlzIEZyZWVCU0Qg
YWxzbyBoYXMgYSBwcm9ibGVtLCBidXQgSSBkaWRuJ3Qgc2VlIHRoYXQuCi1URVNUKFNldEZsYWdW
YWx1ZVRlc3QsIEV4Y2VwdGlvbmFsVmFsdWVzKSB7Ci0jaWYgZGVmaW5lZChpc2luZikgJiYgIWRl
ZmluZWQoX19NSU5HVzMyX18pCi0gIEVYUEVDVF9FUSgidGVzdF9kb3VibGUgc2V0IHRvIGluZlxu
IiwKLSAgICAgICAgICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2RvdWJsZSIsICJpbmYi
KSk7Ci0gIEVYUEVDVF9JTkYoRkxBR1NfdGVzdF9kb3VibGUpOwotCi0gIEVYUEVDVF9FUSgidGVz
dF9kb3VibGUgc2V0IHRvIGluZlxuIiwKLSAgICAgICAgICAgIFNldENvbW1hbmRMaW5lT3B0aW9u
KCJ0ZXN0X2RvdWJsZSIsICJJTkYiKSk7Ci0gIEVYUEVDVF9JTkYoRkxBR1NfdGVzdF9kb3VibGUp
OwotI2VuZGlmCi0KLSAgLy8gc2V0IHNvbWUgYmFkIHZhbHVlcwotICBFWFBFQ1RfRVEoIiIsCi0g
ICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9kb3VibGUiLCAiMC4xeHh4Iikp
OwotICBFWFBFQ1RfRVEoIiIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVz
dF9kb3VibGUiLCAiICIpKTsKLSAgRVhQRUNUX0VRKCIiLAotICAgICAgICAgICAgU2V0Q29tbWFu
ZExpbmVPcHRpb24oInRlc3RfZG91YmxlIiwgIiIpKTsKLSNpZiBkZWZpbmVkKGlzaW5mKSAmJiAh
ZGVmaW5lZChfX01JTkdXMzJfXykKLSAgRVhQRUNUX0VRKCJ0ZXN0X2RvdWJsZSBzZXQgdG8gLWlu
ZlxuIiwKLSAgICAgICAgICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2RvdWJsZSIsICIt
aW5mIikpOwotICBFWFBFQ1RfSU5GKEZMQUdTX3Rlc3RfZG91YmxlKTsKLSAgRVhQRUNUX0dUKDAs
IEZMQUdTX3Rlc3RfZG91YmxlKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChpc25hbikgJiYgIWRl
ZmluZWQoX19NSU5HVzMyX18pCi0gIEVYUEVDVF9FUSgidGVzdF9kb3VibGUgc2V0IHRvIG5hblxu
IiwKLSAgICAgICAgICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2RvdWJsZSIsICJOYU4i
KSk7Ci0gIEVYUEVDVF9OQU4oRkxBR1NfdGVzdF9kb3VibGUpOwotI2VuZGlmCi19Ci0KLS8vIFRl
c3RzIHRoYXQgaW50ZWdlciBmbGFncyBjYW4gYmUgc3BlY2lmaWVkIGluIG1hbnkgd2F5cwotVEVT
VChTZXRGbGFnVmFsdWVUZXN0LCBEaWZmZXJlbnRSYWRpY2VzKSB7Ci0gIEVYUEVDVF9FUSgidGVz
dF9pbnQzMiBzZXQgdG8gMTJcbiIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigi
dGVzdF9pbnQzMiIsICIxMiIpKTsKLQotICBFWFBFQ1RfRVEoInRlc3RfaW50MzIgc2V0IHRvIDE2
XG4iLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50MzIiLCAiMHgx
MCIpKTsKLQotICBFWFBFQ1RfRVEoInRlc3RfaW50MzIgc2V0IHRvIDM0XG4iLAotICAgICAgICAg
ICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50MzIiLCAiMFgyMiIpKTsKLQotICAvLyBM
ZWFkaW5nIDAgaXMgKm5vdCogb2N0YWw7IGl0J3Mgc3RpbGwgZGVjaW1hbAotICBFWFBFQ1RfRVEo
InRlc3RfaW50MzIgc2V0IHRvIDEwXG4iLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRp
b24oInRlc3RfaW50MzIiLCAiMDEwIikpOwotfQotCi0vLyBUZXN0cyB3aGF0IGhhcHBlbnMgd2hl
biB5b3UgdHJ5IHRvIHNldCBhIGZsYWcgdG8gYW4gaWxsZWdhbCB2YWx1ZQotVEVTVChTZXRGbGFn
VmFsdWVUZXN0LCBJbGxlZ2FsVmFsdWVzKSB7Ci0gIEZMQUdTX3Rlc3RfYm9vbCA9IHRydWU7Ci0g
IEZMQUdTX3Rlc3RfaW50MzIgPSAxMTk7Ci0gIEZMQUdTX3Rlc3RfaW50NjQgPSAxMTkxOwotICBG
TEFHU190ZXN0X3VpbnQ2NCA9IDExOTExOwotCi0gIEVYUEVDVF9FUSgiIiwKLSAgICAgICAgICAg
IFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2Jvb2wiLCAiMTIiKSk7Ci0KLSAgRVhQRUNUX0VR
KCIiLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50MzIiLCAiNzAw
MDAwMDAwMDAwMCIpKTsKLQotICBFWFBFQ1RfRVEoIiIsCi0gICAgICAgICAgICBTZXRDb21tYW5k
TGluZU9wdGlvbigidGVzdF91aW50NjQiLCAiLTEiKSk7Ci0KLSAgRVhQRUNUX0VRKCIiLAotICAg
ICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50NjQiLCAibm90IGEgbnVtYmVy
ISIpKTsKLQotICAvLyBUZXN0IHRoZSBlbXB0eSBzdHJpbmcgd2l0aCBlYWNoIHR5cGUgb2YgaW5w
dXQKLSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9ib29sIiwgIiIp
KTsKLSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICIi
KSk7Ci0gIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50NjQiLCAi
IikpOwotICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X3VpbnQ2NCIs
ICIiKSk7Ci0gIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfZG91Ymxl
IiwgIiIpKTsKLSAgRVhQRUNUX0VRKCJ0ZXN0X3N0cmluZyBzZXQgdG8gXG4iLCBTZXRDb21tYW5k
TGluZU9wdGlvbigidGVzdF9zdHJpbmciLCAiIikpOwotCi0gIEVYUEVDVF9UUlVFKEZMQUdTX3Rl
c3RfYm9vbCk7Ci0gIEVYUEVDVF9FUSgxMTksIEZMQUdTX3Rlc3RfaW50MzIpOwotICBFWFBFQ1Rf
RVEoMTE5MSwgRkxBR1NfdGVzdF9pbnQ2NCk7Ci0gIEVYUEVDVF9FUSgxMTkxMSwgRkxBR1NfdGVz
dF91aW50NjQpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQgd2Ugb25seSBldmFsdWF0ZSBtYWNybyBh
cmdzIG9uY2UKLVRFU1QoTWFjcm9BcmdzLCBFdmFsdWF0ZU9uY2UpIHsKLSAgRVhQRUNUX0VRKDEz
LCBGTEFHU19jaGFuZ2VhYmxlX3Zhcik7Ci0gIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCArKyB0aGUg
dmFsdWUgc29tZWhvdywgd2hlbiBldmFsdWF0aW5nIHRoZSBmbGFnLgotICBFWFBFQ1RfRVEoMTMs
IEZMQUdTX2NoYW5nZWFibGVfdmFyKTsKLSAgLy8gTWFrZSBzdXJlIHRoZSBtYWNybyBvbmx5IGV2
YWx1YXRlZCB0aGlzIHZhciBvbmNlLgotICBFWFBFQ1RfRVEoMTMsIGNoYW5nZWFibGVfdmFyKTsK
LSAgLy8gTWFrZSBzdXJlIHRoZSBhY3R1YWwgdmFsdWUgYW5kIGRlZmF1bHQgdmFsdWUgYXJlIHRo
ZSBzYW1lCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImNoYW5nZWFibGVfdmFyIiwg
IjIxIiwgU0VUX0ZMQUdfSUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgyMSwgRkxBR1NfY2hhbmdl
YWJsZV92YXIpOwotfQotCi1URVNUKE1hY3JvQXJncywgRXZhbHVhdGVPbmNlQm9vbCkgewotICBF
WFBFQ1RfVFJVRShGTEFHU19jaGFuZ2VhYmxlX2Jvb2xfdmFyKTsKLSAgRVhQRUNUX1RSVUUoRkxB
R1NfY2hhbmdlYWJsZV9ib29sX3Zhcik7Ci0gIEVYUEVDVF9FUSg4MDA5LCBjaGFuZ2VhYmxlX2Jv
b2xfdmFyKTsKLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiY2hhbmdlYWJsZV9ib29s
X3ZhciIsICJmYWxzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZMQUdf
SUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9GQUxTRShGTEFHU19jaGFuZ2VhYmxlX2Jvb2xfdmFyKTsK
LX0KLQotVEVTVChNYWNyb0FyZ3MsIEV2YWx1YXRlT25jZVN0cmluZ3MpIHsKLSAgRVhQRUNUX0VR
KCIxIiwgRkxBR1NfY2hhbmdlYWJsZV9zdHJpbmdfdmFyKTsKLSAgRVhQRUNUX0VRKCIxIiwgRkxB
R1NfY2hhbmdlYWJsZV9zdHJpbmdfdmFyKTsKLSAgRVhQRUNUX0VRKDEsIGNoYW5nZWFibGVfc3Ry
aW5nX3Zhcik7Ci0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImNoYW5nZWFibGVfc3Ry
aW5nX3ZhciIsICJkaWZmZXJlbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNF
VF9GTEFHX0lGX0RFRkFVTFQpOwotICBFWFBFQ1RfRVEoImRpZmZlcmVudCIsIEZMQUdTX2NoYW5n
ZWFibGVfc3RyaW5nX3Zhcik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEZvb0Zyb21FbnYgZG9l
cyB0aGUgcmlnaHQgdGhpbmcKLVRFU1QoRnJvbUVudlRlc3QsIExlZ2FsVmFsdWVzKSB7Ci0gIHNl
dGVudigiQk9PTF9WQUwxIiwgInRydWUiLCAxKTsKLSAgc2V0ZW52KCJCT09MX1ZBTDIiLCAiZmFs
c2UiLCAxKTsKLSAgc2V0ZW52KCJCT09MX1ZBTDMiLCAiMSIsIDEpOwotICBzZXRlbnYoIkJPT0xf
VkFMNCIsICJGIiwgMSk7Ci0gIEVYUEVDVF9UUlVFKEJvb2xGcm9tRW52KCJCT09MX1ZBTDEiLCBm
YWxzZSkpOwotICBFWFBFQ1RfRkFMU0UoQm9vbEZyb21FbnYoIkJPT0xfVkFMMiIsIHRydWUpKTsK
LSAgRVhQRUNUX1RSVUUoQm9vbEZyb21FbnYoIkJPT0xfVkFMMyIsIGZhbHNlKSk7Ci0gIEVYUEVD
VF9GQUxTRShCb29sRnJvbUVudigiQk9PTF9WQUw0IiwgdHJ1ZSkpOwotICBFWFBFQ1RfVFJVRShC
b29sRnJvbUVudigiQk9PTF9WQUxfVU5LTk9XTiIsIHRydWUpKTsKLSAgRVhQRUNUX0ZBTFNFKEJv
b2xGcm9tRW52KCJCT09MX1ZBTF9VTktOT1dOIiwgZmFsc2UpKTsKLQotICBzZXRlbnYoIklOVF9W
QUwxIiwgIjEiLCAxKTsKLSAgc2V0ZW52KCJJTlRfVkFMMiIsICItMSIsIDEpOwotICBFWFBFQ1Rf
RVEoMSwgSW50MzJGcm9tRW52KCJJTlRfVkFMMSIsIDEwKSk7Ci0gIEVYUEVDVF9FUSgtMSwgSW50
MzJGcm9tRW52KCJJTlRfVkFMMiIsIDEwKSk7Ci0gIEVYUEVDVF9FUSgxMCwgSW50MzJGcm9tRW52
KCJJTlRfVkFMX1VOS05PV04iLCAxMCkpOwotCi0gIHNldGVudigiSU5UX1ZBTDMiLCAiMTA5OTUx
MTYyNzc3NiIsIDEpOwotICBFWFBFQ1RfRVEoMSwgSW50NjRGcm9tRW52KCJJTlRfVkFMMSIsIDIw
KSk7Ci0gIEVYUEVDVF9FUSgtMSwgSW50NjRGcm9tRW52KCJJTlRfVkFMMiIsIDIwKSk7Ci0gIEVY
UEVDVF9FUSgxMDk5NTExNjI3Nzc2TEwsIEludDY0RnJvbUVudigiSU5UX1ZBTDMiLCAyMCkpOwot
ICBFWFBFQ1RfRVEoMjAsIEludDY0RnJvbUVudigiSU5UX1ZBTF9VTktOT1dOIiwgMjApKTsKLQot
ICBFWFBFQ1RfRVEoMSwgVWludDY0RnJvbUVudigiSU5UX1ZBTDEiLCAzMCkpOwotICBFWFBFQ1Rf
RVEoMTA5OTUxMTYyNzc3NlVMTCwgVWludDY0RnJvbUVudigiSU5UX1ZBTDMiLCAzMCkpOwotICBF
WFBFQ1RfRVEoMzAsIFVpbnQ2NEZyb21FbnYoIklOVF9WQUxfVU5LTk9XTiIsIDMwKSk7Ci0KLSAg
Ly8gSSBwaWNrIHZhbHVlcyBoZXJlIHRoYXQgY2FuIGJlIGVhc2lseSByZXByZXNlbnRlZCBleGFj
dGx5IGluIGZsb2F0aW5nLXBvaW50Ci0gIHNldGVudigiRE9VQkxFX1ZBTDEiLCAiMC4wIiwgMSk7
Ci0gIHNldGVudigiRE9VQkxFX1ZBTDIiLCAiMS4wIiwgMSk7Ci0gIHNldGVudigiRE9VQkxFX1ZB
TDMiLCAiLTEuMCIsIDEpOwotICBFWFBFQ1RfRVEoMC4wLCBEb3VibGVGcm9tRW52KCJET1VCTEVf
VkFMMSIsIDQwLjApKTsKLSAgRVhQRUNUX0VRKDEuMCwgRG91YmxlRnJvbUVudigiRE9VQkxFX1ZB
TDIiLCA0MC4wKSk7Ci0gIEVYUEVDVF9FUSgtMS4wLCBEb3VibGVGcm9tRW52KCJET1VCTEVfVkFM
MyIsIDQwLjApKTsKLSAgRVhQRUNUX0VRKDQwLjAsIERvdWJsZUZyb21FbnYoIkRPVUJMRV9WQUxf
VU5LTk9XTiIsIDQwLjApKTsKLQotICBzZXRlbnYoIlNUUklOR19WQUwxIiwgIiIsIDEpOwotICBz
ZXRlbnYoIlNUUklOR19WQUwyIiwgIm15IGhhcHB5IHN0cmluZyEiLCAxKTsKLSAgRVhQRUNUX1NU
UkVRKCIiLCBTdHJpbmdGcm9tRW52KCJTVFJJTkdfVkFMMSIsICJ1bmtub3duIikpOwotICBFWFBF
Q1RfU1RSRVEoIm15IGhhcHB5IHN0cmluZyEiLCBTdHJpbmdGcm9tRW52KCJTVFJJTkdfVkFMMiIs
ICJ1bmtub3duIikpOwotICBFWFBFQ1RfU1RSRVEoInVua25vd24iLCBTdHJpbmdGcm9tRW52KCJT
VFJJTkdfVkFMX1VOS05PV04iLCAidW5rbm93biIpKTsKLX0KLQotI2lmZGVmIEdURVNUX0hBU19E
RUFUSF9URVNUCi0vLyBUZXN0cyB0aGF0IHRoZSBGb29Gcm9tRW52IGRpZXMgb24gcGFyc2UtZXJy
b3IKLVRFU1QoRnJvbUVudkRlYXRoVGVzdCwgSWxsZWdhbFZhbHVlcykgewotICBzZXRlbnYoIkJP
T0xfQkFEMSIsICJzbyB0cnVlISIsIDEpOwotICBzZXRlbnYoIkJPT0xfQkFEMiIsICIiLCAxKTsK
LSAgRVhQRUNUX0RFQVRIKEJvb2xGcm9tRW52KCJCT09MX0JBRDEiLCBmYWxzZSksICJlcnJvciBw
YXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoQm9vbEZyb21FbnYoIkJPT0xf
QkFEMiIsIHRydWUpLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLQotICBzZXRlbnYo
IklOVF9CQUQxIiwgIm9uZSIsIDEpOwotICBzZXRlbnYoIklOVF9CQUQyIiwgIjEwMDAwMDAwMDAw
MDAwMDAwMCIsIDEpOwotICBzZXRlbnYoIklOVF9CQUQzIiwgIjB4eDEwIiwgMSk7Ci0gIHNldGVu
digiSU5UX0JBRDQiLCAiIiwgMSk7Ci0gIEVYUEVDVF9ERUFUSChJbnQzMkZyb21FbnYoIklOVF9C
QUQxIiwgMTApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLSAgRVhQRUNUX0RFQVRI
KEludDMyRnJvbUVudigiSU5UX0JBRDIiLCAxMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJs
ZSIpOwotICBFWFBFQ1RfREVBVEgoSW50MzJGcm9tRW52KCJJTlRfQkFEMyIsIDEwKSwgImVycm9y
IHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFUSChJbnQzMkZyb21FbnYoIklO
VF9CQUQ0IiwgMTApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLQotICBzZXRlbnYo
IkJJR0lOVF9CQUQxIiwgIjE4NDQ2NzQ0MDczNzA5NTUxNjE2MDAwIiwgMSk7Ci0gIEVYUEVDVF9E
RUFUSChJbnQ2NEZyb21FbnYoIklOVF9CQUQxIiwgMjApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFy
aWFibGUiKTsKLSAgRVhQRUNUX0RFQVRIKEludDY0RnJvbUVudigiSU5UX0JBRDMiLCAyMCksICJl
cnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoSW50NjRGcm9tRW52
KCJJTlRfQkFENCIsIDIwKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVD
VF9ERUFUSChJbnQ2NEZyb21FbnYoIkJJR0lOVF9CQUQxIiwgMjAwKSwgImVycm9yIHBhcnNpbmcg
ZW52IHZhcmlhYmxlIik7Ci0KLSAgc2V0ZW52KCJCSUdJTlRfQkFEMiIsICItMSIsIDEpOwotICBF
WFBFQ1RfREVBVEgoVWludDY0RnJvbUVudigiSU5UX0JBRDEiLCAzMCksICJlcnJvciBwYXJzaW5n
IGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoVWludDY0RnJvbUVudigiSU5UX0JBRDMi
LCAzMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoVWlu
dDY0RnJvbUVudigiSU5UX0JBRDQiLCAzMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIp
OwotICBFWFBFQ1RfREVBVEgoVWludDY0RnJvbUVudigiQklHSU5UX0JBRDEiLCAzMCksICJlcnJv
ciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICAvLyBUT0RPKGNzaWx2ZXJzKTogdW5jb21tZW50
IHRoaXMgd2hlbiB3ZSBkaXNhbGxvdyBuZWdhdGl2ZSBudW1iZXJzIGZvciB1aW50NjQKLSNpZiAw
Ci0gIEVYUEVDVF9ERUFUSChVaW50NjRGcm9tRW52KCJCSUdJTlRfQkFEMiIsIDMwKSwgImVycm9y
IHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0jZW5kaWYKLQotICBzZXRlbnYoIkRPVUJMRV9CQUQx
IiwgIjAuMC4wIiwgMSk7Ci0gIHNldGVudigiRE9VQkxFX0JBRDIiLCAiIiwgMSk7Ci0gIEVYUEVD
VF9ERUFUSChEb3VibGVGcm9tRW52KCJET1VCTEVfQkFEMSIsIDQwLjApLCAiZXJyb3IgcGFyc2lu
ZyBlbnYgdmFyaWFibGUiKTsKLSAgRVhQRUNUX0RFQVRIKERvdWJsZUZyb21FbnYoIkRPVUJMRV9C
QUQyIiwgNDAuMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwotfQotI2VuZGlmCi0K
LQotLy8gVGVzdHMgdGhhdCBGbGFnU2F2ZXIgY2FuIHNhdmUgdGhlIHN0YXRlcyBvZiBzdHJpbmcg
ZmxhZ3MuCi1URVNUKEZsYWdTYXZlclRlc3QsIENhblNhdmVTdHJpbmdGbGFnU3RhdGVzKSB7Ci0g
IC8vIDEuIEluaXRpYWxpemVzIHRoZSBmbGFncy4KLQotICAvLyBTdGF0ZSBvZiBmbGFnIHRlc3Rf
c3RyMToKLSAgLy8gICBkZWZhdWx0IHZhbHVlIC0gImluaXRpYWwiCi0gIC8vICAgY3VycmVudCB2
YWx1ZSAtICJpbml0aWFsIgotICAvLyAgIG5vdCBzZXQgICAgICAgLSB0cnVlCi0KLSAgU2V0Q29t
bWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIyIiwgInNlY29uZCIsIFNFVF9GTEFHU19W
QUxVRSk7Ci0gIC8vIFN0YXRlIG9mIGZsYWcgdGVzdF9zdHIyOgotICAvLyAgIGRlZmF1bHQgdmFs
dWUgLSAiaW5pdGlhbCIKLSAgLy8gICBjdXJyZW50IHZhbHVlIC0gInNlY29uZCIKLSAgLy8gICBu
b3Qgc2V0ICAgICAgIC0gZmFsc2UKLQotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0
ZXN0X3N0cjMiLCAic2Vjb25kIiwgU0VUX0ZMQUdTX0RFRkFVTFQpOwotICAvLyBTdGF0ZSBvZiBm
bGFnIHRlc3Rfc3RyMzoKLSAgLy8gICBkZWZhdWx0IHZhbHVlIC0gInNlY29uZCIKLSAgLy8gICBj
dXJyZW50IHZhbHVlIC0gInNlY29uZCIKLSAgLy8gICBub3Qgc2V0ICAgICAgIC0gdHJ1ZQotCi0g
IC8vIDIuIFNhdmVzIHRoZSBmbGFnIHN0YXRlcy4KLQotICB7Ci0gICAgRmxhZ1NhdmVyIGZzOwot
Ci0gICAgLy8gMy4gTW9kaWZpZXMgdGhlIGZsYWcgc3RhdGVzLgotCi0gICAgU2V0Q29tbWFuZExp
bmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIxIiwgInNlY29uZCIsIFNFVF9GTEFHU19WQUxVRSk7
Ci0gICAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0X3N0cjEpOwotICAgIC8vIFN0YXRl
IG9mIGZsYWcgdGVzdF9zdHIxOgotICAgIC8vICAgZGVmYXVsdCB2YWx1ZSAtICJzZWNvbmQiCi0g
ICAgLy8gICBjdXJyZW50IHZhbHVlIC0gInNlY29uZCIKLSAgICAvLyAgIG5vdCBzZXQgICAgICAg
LSB0cnVlCi0KLSAgICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjIiLCAi
dGhpcmQiLCBTRVRfRkxBR1NfREVGQVVMVCk7Ci0gICAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFH
U190ZXN0X3N0cjIpOwotICAgIC8vIFN0YXRlIG9mIGZsYWcgdGVzdF9zdHIyOgotICAgIC8vICAg
ZGVmYXVsdCB2YWx1ZSAtICJ0aGlyZCIKLSAgICAvLyAgIGN1cnJlbnQgdmFsdWUgLSAic2Vjb25k
IgotICAgIC8vICAgbm90IHNldCAgICAgICAtIGZhbHNlCi0KLSAgICBTZXRDb21tYW5kTGluZU9w
dGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjMiLCAidGhpcmQiLCBTRVRfRkxBR1NfVkFMVUUpOwotICAg
IEVYUEVDVF9FUSgidGhpcmQiLCBGTEFHU190ZXN0X3N0cjMpOwotICAgIC8vIFN0YXRlIG9mIGZs
YWcgdGVzdF9zdHIxOgotICAgIC8vICAgZGVmYXVsdCB2YWx1ZSAtICJzZWNvbmQiCi0gICAgLy8g
ICBjdXJyZW50IHZhbHVlIC0gInRoaXJkIgotICAgIC8vICAgbm90IHNldCAgICAgICAtIGZhbHNl
Ci0KLSAgICAvLyA0LiBSZXN0b3JlcyB0aGUgZmxhZyBzdGF0ZXMuCi0gIH0KLQotICAvLyA1LiBW
ZXJpZmllcyB0aGF0IHRoZSBzdGF0ZXMgd2VyZSByZXN0b3JlZC4KLQotICAvLyBWZXJpZmllcyB0
aGF0IHRoZSB2YWx1ZSBvZiB0ZXN0X3N0cjEgd2FzIHJlc3RvcmVkLgotICBFWFBFQ1RfRVEoImlu
aXRpYWwiLCBGTEFHU190ZXN0X3N0cjEpOwotICAvLyBWZXJpZmllcyB0aGF0IHRoZSAibm90IHNl
dCIgYXR0cmlidXRlIG9mIHRlc3Rfc3RyMSB3YXMgcmVzdG9yZWQgdG8gdHJ1ZS4KLSAgU2V0Q29t
bWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIxIiwgInNlY29uZCIsIFNFVF9GTEFHX0lG
X0RFRkFVTFQpOwotICBFWFBFQ1RfRVEoInNlY29uZCIsIEZMQUdTX3Rlc3Rfc3RyMSk7Ci0KLSAg
Ly8gVmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgb2YgdGVzdF9zdHIyIHdhcyByZXN0b3JlZC4KLSAg
RVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0X3N0cjIpOwotICAvLyBWZXJpZmllcyB0aGF0
IHRoZSAibm90IHNldCIgYXR0cmlidXRlIG9mIHRlc3Rfc3RyMiB3YXMgcmVzdG9yZWQgdG8gZmFs
c2UuCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMiIsICJmb3VydGgi
LCBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0
X3N0cjIpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHZhbHVlIG9mIHRlc3Rfc3RyMyB3YXMg
cmVzdG9yZWQuCi0gIEVYUEVDVF9FUSgic2Vjb25kIiwgRkxBR1NfdGVzdF9zdHIzKTsKLSAgLy8g
VmVyaWZpZXMgdGhhdCB0aGUgIm5vdCBzZXQiIGF0dHJpYnV0ZSBvZiB0ZXN0X3N0cjMgd2FzIHJl
c3RvcmVkIHRvIHRydWUuCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3Ry
MyIsICJmb3VydGgiLCBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJmb3VydGgi
LCBGTEFHU190ZXN0X3N0cjMpOwotfQotCi0KLS8vIFRlc3RzIHRoYXQgRmxhZ1NhdmVyIGNhbiBz
YXZlIHRoZSB2YWx1ZXMgb2YgdmFyaW91cy10eXBlZCBmbGFncy4KLVRFU1QoRmxhZ1NhdmVyVGVz
dCwgQ2FuU2F2ZVZhcmlvdXNUeXBlZEZsYWdWYWx1ZXMpIHsKLSAgLy8gSW5pdGlhbGl6ZXMgdGhl
IGZsYWdzLgotICBGTEFHU190ZXN0X2Jvb2wgPSBmYWxzZTsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9
IC0xOwotICBGTEFHU190ZXN0X2ludDY0ID0gLTI7Ci0gIEZMQUdTX3Rlc3RfdWludDY0ID0gMzsK
LSAgRkxBR1NfdGVzdF9kb3VibGUgPSA0LjA7Ci0gIEZMQUdTX3Rlc3Rfc3RyaW5nID0gImdvb2Qi
OwotCi0gIC8vIFNhdmVzIHRoZSBmbGFnIHN0YXRlcy4KLSAgewotICAgIEZsYWdTYXZlciBmczsK
LQotICAgIC8vIE1vZGlmaWVzIHRoZSBmbGFncy4KLSAgICBGTEFHU190ZXN0X2Jvb2wgPSB0cnVl
OwotICAgIEZMQUdTX3Rlc3RfaW50MzIgPSAtNTsKLSAgICBGTEFHU190ZXN0X2ludDY0ID0gLTY7
Ci0gICAgRkxBR1NfdGVzdF91aW50NjQgPSA3OwotICAgIEZMQUdTX3Rlc3RfZG91YmxlID0gOC4w
OwotICAgIEZMQUdTX3Rlc3Rfc3RyaW5nID0gImJhZCI7Ci0KLSAgICAvLyBSZXN0b3JlcyB0aGUg
ZmxhZyBzdGF0ZXMuCi0gIH0KLQotICAvLyBWZXJpZmllcyB0aGUgZmxhZyB2YWx1ZXMgd2VyZSBy
ZXN0b3JlZC4KLSAgRVhQRUNUX0ZBTFNFKEZMQUdTX3Rlc3RfYm9vbCk7Ci0gIEVYUEVDVF9FUSgt
MSwgRkxBR1NfdGVzdF9pbnQzMik7Ci0gIEVYUEVDVF9FUSgtMiwgRkxBR1NfdGVzdF9pbnQ2NCk7
Ci0gIEVYUEVDVF9FUSgzLCBGTEFHU190ZXN0X3VpbnQ2NCk7Ci0gIEVYUEVDVF9ET1VCTEVfRVEo
NC4wLCBGTEFHU190ZXN0X2RvdWJsZSk7Ci0gIEVYUEVDVF9FUSgiZ29vZCIsIEZMQUdTX3Rlc3Rf
c3RyaW5nKTsKLX0KLQotVEVTVChHZXRBbGxGbGFnc1Rlc3QsIEJhc2VUZXN0KSB7Ci0gIHZlY3Rv
cjxDb21tYW5kTGluZUZsYWdJbmZvPiBmbGFnczsKLSAgR2V0QWxsRmxhZ3MoJmZsYWdzKTsKLSAg
Ym9vbCBmb3VuZF90ZXN0X2Jvb2wgPSBmYWxzZTsKLSAgdmVjdG9yPENvbW1hbmRMaW5lRmxhZ0lu
Zm8+Ojpjb25zdF9pdGVyYXRvciBpOwotICBmb3IgKGkgPSBmbGFncy5iZWdpbigpOyBpICE9IGZs
YWdzLmVuZCgpOyArK2kpIHsKLSAgICBpZiAoaS0+bmFtZSA9PSAidGVzdF9ib29sIikgewotICAg
ICAgZm91bmRfdGVzdF9ib29sID0gdHJ1ZTsKLSAgICAgIEVYUEVDVF9FUShpLT50eXBlLCAiYm9v
bCIpOwotICAgICAgRVhQRUNUX0VRKGktPmRlZmF1bHRfdmFsdWUsICJmYWxzZSIpOwotICAgICAg
RVhQRUNUX0VRKGktPmZsYWdfcHRyLCAmRkxBR1NfdGVzdF9ib29sKTsKLSAgICAgIGJyZWFrOwot
ICAgIH0KLSAgfQotICBFWFBFQ1RfVFJVRShmb3VuZF90ZXN0X2Jvb2wpOwotfQotCi1URVNUKFNo
b3dVc2FnZVdpdGhGbGFnc1Rlc3QsIEJhc2VUZXN0KSB7Ci0gIC8vIFRPRE8oY3NpbHZlcnMpOiB0
ZXN0IHRoaXMgYnkgYWxsb3dpbmcgb3V0cHV0IG90aGVyIHRoYW4gdG8gc3Rkb3V0LgotICAvLyBO
b3QgdXJnZW50IHNpbmNlIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB0ZXN0ZWQgdmlhCi0gIC8vIGdm
bGFnc191bml0dGVzdC5zaCwgdGhvdWdoIG9ubHkgdGhyb3VnaCB1c2Ugb2YgLS1oZWxwLgotfQot
Ci1URVNUKFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0VGVzdCwgQmFzZVRlc3QpIHsKLSAgLy8g
VE9ETyhjc2lsdmVycyk6IHRlc3QgdGhpcyBieSBhbGxvd2luZyBvdXRwdXQgb3RoZXIgdGhhbiB0
byBzdGRvdXQuCi0gIC8vIE5vdCB1cmdlbnQgc2luY2UgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRl
c3RlZCB2aWEKLSAgLy8gZ2ZsYWdzX3VuaXR0ZXN0LnNoLCB0aG91Z2ggb25seSB0aHJvdWdoIHVz
ZSBvZiAtLWhlbHBtYXRjaC4KLX0KLQotLy8gTm90ZTogYWxsIHRoZXNlIGFyZ3YtYmFzZWQgdGVz
dHMgZGVwZW5kIG9uIFNldEFyZ3YgYmVpbmcgY2FsbGVkCi0vLyBiZWZvcmUgUGFyc2VDb21tYW5k
TGluZUZsYWdzKCkgaW4gbWFpbigpLCBiZWxvdy4KLVRFU1QoR2V0QXJndnNUZXN0LCBCYXNlVGVz
dCkgewotICB2ZWN0b3I8c3RyaW5nPiBhcmd2cyA9IEdldEFyZ3ZzKCk7Ci0gIEVYUEVDVF9FUSg0
LCBhcmd2cy5zaXplKCkpOwotICBFWFBFQ1RfRVEoIi90ZXN0L2FyZ3YvZm9yL2dmbGFnc191bml0
dGVzdCIsIGFyZ3ZzWzBdKTsKLSAgRVhQRUNUX0VRKCJhcmd2IDIiLCBhcmd2c1sxXSk7Ci0gIEVY
UEVDVF9FUSgiM3JkIGFyZ3YiLCBhcmd2c1syXSk7Ci0gIEVYUEVDVF9FUSgiYXJndiAjNCIsIGFy
Z3ZzWzNdKTsKLX0KLQotVEVTVChHZXRBcmd2VGVzdCwgQmFzZVRlc3QpIHsKLSAgRVhQRUNUX1NU
UkVRKCIvdGVzdC9hcmd2L2Zvci9nZmxhZ3NfdW5pdHRlc3QgIgotICAgICAgICAgICAgICAgImFy
Z3YgMiAzcmQgYXJndiBhcmd2ICM0IiwgR2V0QXJndigpKTsKLX0KLQotVEVTVChHZXRBcmd2MFRl
c3QsIEJhc2VUZXN0KSB7Ci0gIEVYUEVDVF9TVFJFUSgiL3Rlc3QvYXJndi9mb3IvZ2ZsYWdzX3Vu
aXR0ZXN0IiwgR2V0QXJndjAoKSk7Ci19Ci0KLVRFU1QoR2V0QXJndlN1bVRlc3QsIEJhc2VUZXN0
KSB7Ci0gIC8vIFRoaXMgbnVtYmVyIGlzIGp1c3QgdGhlIHN1bSBvZiB0aGUgQVNDSUkgdmFsdWVz
IG9mIGFsbCB0aGUgY2hhcnMKLSAgLy8gaW4gR2V0QXJndigpLgotICBFWFBFQ1RfRVEoNDkwNCwg
R2V0QXJndlN1bSgpKTsKLX0KLQotVEVTVChQcm9ncmFtSW52b2NhdGlvbk5hbWVUZXN0LCBCYXNl
VGVzdCkgewotICBFWFBFQ1RfU1RSRVEoIi90ZXN0L2FyZ3YvZm9yL2dmbGFnc191bml0dGVzdCIs
Ci0gICAgICAgICAgICAgICBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSk7Ci19Ci0KLVRFU1QoUHJv
Z3JhbUludm9jYXRpb25TaG9ydE5hbWVUZXN0LCBCYXNlVGVzdCkgewotICBFWFBFQ1RfU1RSRVEo
ImdmbGFnc191bml0dGVzdCIsIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCkpOwotfQotCi1U
RVNUKFByb2dyYW1Vc2FnZVRlc3QsIEJhc2VUZXN0KSB7ICAvLyBEZXBlbmRzIG9uIDFzdCBhcmcg
dG8gUGFyc2VDb21tYW5kTGluZUZsYWdzKCkKLSAgRVhQRUNUX1NUUkVRKCIvdGVzdC9hcmd2L2Zv
ci9nZmxhZ3NfdW5pdHRlc3Q6ICIKLSAgICAgICAgICAgICAgICI8dXNlbGVzcyBmbGFnPiBbLi4u
XVxuRG9lcyBzb21ldGhpbmcgdXNlbGVzcy5cbiIsCi0gICAgICAgICAgICAgICBQcm9ncmFtVXNh
Z2UoKSk7Ci19Ci0KLVRFU1QoR2V0Q29tbWFuZExpbmVPcHRpb25UZXN0LCBOYW1lRXhpc3RzQW5k
SXNEZWZhdWx0KSB7Ci0gIHN0cmluZyB2YWx1ZSgid2lsbCBiZSBjaGFuZ2VkIik7Ci0gIGJvb2wg
ciA9IEdldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2Jvb2wiLCAmdmFsdWUpOwotICBFWFBFQ1Rf
VFJVRShyKTsKLSAgRVhQRUNUX0VRKCJmYWxzZSIsIHZhbHVlKTsKLQotICByID0gR2V0Q29tbWFu
ZExpbmVPcHRpb24oInRlc3RfaW50MzIiLCAmdmFsdWUpOwotICBFWFBFQ1RfVFJVRShyKTsKLSAg
RVhQRUNUX0VRKCItMSIsIHZhbHVlKTsKLX0KLQotVEVTVChHZXRDb21tYW5kTGluZU9wdGlvblRl
c3QsIE5hbWVFeGlzdHNBbmRXYXNBc3NpZ25lZCkgewotICBGTEFHU190ZXN0X2ludDMyID0gNDAw
OwotICBzdHJpbmcgdmFsdWUoIndpbGwgYmUgY2hhbmdlZCIpOwotICBjb25zdCBib29sIHIgPSBH
ZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICZ2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVF
KHIpOwotICBFWFBFQ1RfRVEoIjQwMCIsIHZhbHVlKTsKLX0KLQotVEVTVChHZXRDb21tYW5kTGlu
ZU9wdGlvblRlc3QsIE5hbWVFeGlzdHNBbmRXYXNTZXQpIHsKLSAgU2V0Q29tbWFuZExpbmVPcHRp
b24oInRlc3RfaW50MzIiLCAiNzAwIik7Ci0gIHN0cmluZyB2YWx1ZSgid2lsbCBiZSBjaGFuZ2Vk
Iik7Ci0gIGNvbnN0IGJvb2wgciA9IEdldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ludDMyIiwg
JnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUocik7Ci0gIEVYUEVDVF9FUSgiNzAwIiwgdmFsdWUpOwot
fQotCi1URVNUKEdldENvbW1hbmRMaW5lT3B0aW9uVGVzdCwgTmFtZUV4aXN0c0FuZFdhc05vdFNl
dCkgewotICAvLyBUaGlzIGRvZXNuJ3Qgc2V0IHRoZSBmbGFnJ3MgdmFsdWUsIGJ1dCByYXRoZXIg
aXRzIGRlZmF1bHQgdmFsdWUuCi0gIC8vIGlzX2RlZmF1bHQgaXMgc3RpbGwgdHJ1ZSwgYnV0IHRo
ZSAnZGVmYXVsdCcgdmFsdWUgcmV0dXJuZWQgaGFzIGNoYW5nZWQhCi0gIFNldENvbW1hbmRMaW5l
T3B0aW9uV2l0aE1vZGUoInRlc3RfaW50MzIiLCAiODAwIiwgU0VUX0ZMQUdTX0RFRkFVTFQpOwot
ICBzdHJpbmcgdmFsdWUoIndpbGwgYmUgY2hhbmdlZCIpOwotICBjb25zdCBib29sIHIgPSBHZXRD
b21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICZ2YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKHIp
OwotICBFWFBFQ1RfRVEoIjgwMCIsIHZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoR2V0Q29tbWFuZExp
bmVGbGFnSW5mb09yRGllKCJ0ZXN0X2ludDMyIikuaXNfZGVmYXVsdCk7Ci19Ci0KLVRFU1QoR2V0
Q29tbWFuZExpbmVPcHRpb25UZXN0LCBOYW1lRXhpc3RzQW5kV2FzQ29uZGl0aW9uYWxseVNldCkg
ewotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X2ludDMyIiwgIjkwMCIsIFNF
VF9GTEFHX0lGX0RFRkFVTFQpOwotICBzdHJpbmcgdmFsdWUoIndpbGwgYmUgY2hhbmdlZCIpOwot
ICBjb25zdCBib29sIHIgPSBHZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICZ2YWx1
ZSk7Ci0gIEVYUEVDVF9UUlVFKHIpOwotICBFWFBFQ1RfRVEoIjkwMCIsIHZhbHVlKTsKLX0KLQot
VEVTVChHZXRDb21tYW5kTGluZU9wdGlvblRlc3QsIE5hbWVEb2VzTm90RXhpc3QpIHsKLSAgc3Ry
aW5nIHZhbHVlKCJ3aWxsIG5vdCBiZSBjaGFuZ2VkIik7Ci0gIGNvbnN0IGJvb2wgciA9IEdldENv
bW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ludDMyMTAiLCAmdmFsdWUpOwotICBFWFBFQ1RfRkFMU0Uo
cik7Ci0gIEVYUEVDVF9FUSgid2lsbCBub3QgYmUgY2hhbmdlZCIsIHZhbHVlKTsKLX0KLQotVEVT
VChHZXRDb21tYW5kTGluZUZsYWdJbmZvVGVzdCwgRmxhZ0V4aXN0cykgewotICBDb21tYW5kTGlu
ZUZsYWdJbmZvIGluZm87Ci0gIGJvb2wgciA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm8oInRlc3Rf
aW50MzIiLCAmaW5mbyk7Ci0gIEVYUEVDVF9UUlVFKHIpOwotICBFWFBFQ1RfRVEoInRlc3RfaW50
MzIiLCBpbmZvLm5hbWUpOwotICBFWFBFQ1RfRVEoImludDMyIiwgaW5mby50eXBlKTsKLSAgRVhQ
RUNUX0VRKCIiLCBpbmZvLmRlc2NyaXB0aW9uKTsKLSAgRVhQRUNUX0VRKCItMSIsIGluZm8uY3Vy
cmVudF92YWx1ZSk7Ci0gIEVYUEVDVF9FUSgiLTEiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwotICBF
WFBFQ1RfVFJVRShpbmZvLmlzX2RlZmF1bHQpOwotICBFWFBFQ1RfRkFMU0UoaW5mby5oYXNfdmFs
aWRhdG9yX2ZuKTsKLSAgRVhQRUNUX0VRKCZGTEFHU190ZXN0X2ludDMyLCBpbmZvLmZsYWdfcHRy
KTsKLQotICBGTEFHU190ZXN0X2Jvb2wgPSB0cnVlOwotICByID0gR2V0Q29tbWFuZExpbmVGbGFn
SW5mbygidGVzdF9ib29sIiwgJmluZm8pOwotICBFWFBFQ1RfVFJVRShyKTsKLSAgRVhQRUNUX0VR
KCJ0ZXN0X2Jvb2wiLCBpbmZvLm5hbWUpOwotICBFWFBFQ1RfRVEoImJvb2wiLCBpbmZvLnR5cGUp
OwotICBFWFBFQ1RfRVEoInRlc3RzIGJvb2wtbmVzcyIsIGluZm8uZGVzY3JpcHRpb24pOwotICBF
WFBFQ1RfRVEoInRydWUiLCBpbmZvLmN1cnJlbnRfdmFsdWUpOwotICBFWFBFQ1RfRVEoImZhbHNl
IiwgaW5mby5kZWZhdWx0X3ZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaXNfZGVmYXVsdCk7
Ci0gIEVYUEVDVF9GQUxTRShpbmZvLmhhc192YWxpZGF0b3JfZm4pOwotICBFWFBFQ1RfRVEoJkZM
QUdTX3Rlc3RfYm9vbCwgaW5mby5mbGFnX3B0cik7Ci0KLSAgRkxBR1NfdGVzdF9ib29sID0gZmFs
c2U7Ci0gIHIgPSBHZXRDb21tYW5kTGluZUZsYWdJbmZvKCJ0ZXN0X2Jvb2wiLCAmaW5mbyk7Ci0g
IEVYUEVDVF9UUlVFKHIpOwotICBFWFBFQ1RfRVEoInRlc3RfYm9vbCIsIGluZm8ubmFtZSk7Ci0g
IEVYUEVDVF9FUSgiYm9vbCIsIGluZm8udHlwZSk7Ci0gIEVYUEVDVF9FUSgidGVzdHMgYm9vbC1u
ZXNzIiwgaW5mby5kZXNjcmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgiZmFsc2UiLCBpbmZvLmN1cnJl
bnRfdmFsdWUpOwotICBFWFBFQ1RfRVEoImZhbHNlIiwgaW5mby5kZWZhdWx0X3ZhbHVlKTsKLSAg
RVhQRUNUX0ZBTFNFKGluZm8uaXNfZGVmYXVsdCk7ICAvLyB2YWx1ZSBpcyBzYW1lLCBidXQgZmxh
ZyAqd2FzKiBtb2RpZmllZAotICBFWFBFQ1RfRkFMU0UoaW5mby5oYXNfdmFsaWRhdG9yX2ZuKTsK
LSAgRVhQRUNUX0VRKCZGTEFHU190ZXN0X2Jvb2wsIGluZm8uZmxhZ19wdHIpOwotfQotCi1URVNU
KEdldENvbW1hbmRMaW5lRmxhZ0luZm9UZXN0LCBGbGFnRG9lc05vdEV4aXN0KSB7Ci0gIENvbW1h
bmRMaW5lRmxhZ0luZm8gaW5mbzsKLSAgLy8gU2V0IHRvIHNvbWUgcmFuZG9tIHZhbHVlcyB0aGF0
IEdldENvbW1hbmRMaW5lRmxhZ0luZm8gc2hvdWxkIG5vdCBjaGFuZ2UKLSAgaW5mby5uYW1lID0g
Im5hbWUiOwotICBpbmZvLnR5cGUgPSAidHlwZSI7Ci0gIGluZm8uY3VycmVudF92YWx1ZSA9ICJj
dXJyIjsKLSAgaW5mby5kZWZhdWx0X3ZhbHVlID0gImRlZiI7Ci0gIGluZm8uZmlsZW5hbWUgPSAi
LyI7Ci0gIGluZm8uaXNfZGVmYXVsdCA9IGZhbHNlOwotICBpbmZvLmhhc192YWxpZGF0b3JfZm4g
PSB0cnVlOwotICBpbmZvLmZsYWdfcHRyID0gTlVMTDsKLSAgYm9vbCByID0gR2V0Q29tbWFuZExp
bmVGbGFnSW5mbygidGVzdF9pbnQzMjEwIiwgJmluZm8pOwotICBFWFBFQ1RfRkFMU0Uocik7Ci0g
IEVYUEVDVF9FUSgibmFtZSIsIGluZm8ubmFtZSk7Ci0gIEVYUEVDVF9FUSgidHlwZSIsIGluZm8u
dHlwZSk7Ci0gIEVYUEVDVF9FUSgiIiwgaW5mby5kZXNjcmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgi
Y3VyciIsIGluZm8uY3VycmVudF92YWx1ZSk7Ci0gIEVYUEVDVF9FUSgiZGVmIiwgaW5mby5kZWZh
dWx0X3ZhbHVlKTsKLSAgRVhQRUNUX0VRKCIvIiwgaW5mby5maWxlbmFtZSk7Ci0gIEVYUEVDVF9G
QUxTRShpbmZvLmlzX2RlZmF1bHQpOwotICBFWFBFQ1RfVFJVRShpbmZvLmhhc192YWxpZGF0b3Jf
Zm4pOwotICBFWFBFQ1RfRVEoTlVMTCwgaW5mby5mbGFnX3B0cik7Ci19Ci0KLVRFU1QoR2V0Q29t
bWFuZExpbmVGbGFnSW5mb09yRGllVGVzdCwgRmxhZ0V4aXN0c0FuZElzRGVmYXVsdCkgewotICBD
b21tYW5kTGluZUZsYWdJbmZvIGluZm87Ci0gIGluZm8gPSBHZXRDb21tYW5kTGluZUZsYWdJbmZv
T3JEaWUoInRlc3RfaW50MzIiKTsKLSAgRVhQRUNUX0VRKCJ0ZXN0X2ludDMyIiwgaW5mby5uYW1l
KTsKLSAgRVhQRUNUX0VRKCJpbnQzMiIsIGluZm8udHlwZSk7Ci0gIEVYUEVDVF9FUSgiIiwgaW5m
by5kZXNjcmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgiLTEiLCBpbmZvLmN1cnJlbnRfdmFsdWUpOwot
ICBFWFBFQ1RfRVEoIi0xIiwgaW5mby5kZWZhdWx0X3ZhbHVlKTsKLSAgRVhQRUNUX1RSVUUoaW5m
by5pc19kZWZhdWx0KTsKLSAgRVhQRUNUX0VRKCZGTEFHU190ZXN0X2ludDMyLCBpbmZvLmZsYWdf
cHRyKTsKLSAgaW5mbyA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgidGVzdF9ib29sIik7
Ci0gIEVYUEVDVF9FUSgidGVzdF9ib29sIiwgaW5mby5uYW1lKTsKLSAgRVhQRUNUX0VRKCJib29s
IiwgaW5mby50eXBlKTsKLSAgRVhQRUNUX0VRKCJ0ZXN0cyBib29sLW5lc3MiLCBpbmZvLmRlc2Ny
aXB0aW9uKTsKLSAgRVhQRUNUX0VRKCJmYWxzZSIsIGluZm8uY3VycmVudF92YWx1ZSk7Ci0gIEVY
UEVDVF9FUSgiZmFsc2UiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwotICBFWFBFQ1RfVFJVRShpbmZv
LmlzX2RlZmF1bHQpOwotICBFWFBFQ1RfRkFMU0UoaW5mby5oYXNfdmFsaWRhdG9yX2ZuKTsKLSAg
RVhQRUNUX0VRKCZGTEFHU190ZXN0X2Jvb2wsIGluZm8uZmxhZ19wdHIpOwotfQotCi1URVNUKEdl
dENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZVRlc3QsIEZsYWdFeGlzdHNBbmRXYXNBc3NpZ25lZCkg
ewotICBGTEFHU190ZXN0X2ludDMyID0gNDAwOwotICBDb21tYW5kTGluZUZsYWdJbmZvIGluZm87
Ci0gIGluZm8gPSBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoInRlc3RfaW50MzIiKTsKLSAg
RVhQRUNUX0VRKCJ0ZXN0X2ludDMyIiwgaW5mby5uYW1lKTsKLSAgRVhQRUNUX0VRKCJpbnQzMiIs
IGluZm8udHlwZSk7Ci0gIEVYUEVDVF9FUSgiIiwgaW5mby5kZXNjcmlwdGlvbik7Ci0gIEVYUEVD
VF9FUSgiNDAwIiwgaW5mby5jdXJyZW50X3ZhbHVlKTsKLSAgRVhQRUNUX0VRKCItMSIsIGluZm8u
ZGVmYXVsdF92YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShpbmZvLmlzX2RlZmF1bHQpOwotICBFWFBF
Q1RfRVEoJkZMQUdTX3Rlc3RfaW50MzIsIGluZm8uZmxhZ19wdHIpOwotICBGTEFHU190ZXN0X2Jv
b2wgPSB0cnVlOwotICBpbmZvID0gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKCJ0ZXN0X2Jv
b2wiKTsKLSAgRVhQRUNUX0VRKCJ0ZXN0X2Jvb2wiLCBpbmZvLm5hbWUpOwotICBFWFBFQ1RfRVEo
ImJvb2wiLCBpbmZvLnR5cGUpOwotICBFWFBFQ1RfRVEoInRlc3RzIGJvb2wtbmVzcyIsIGluZm8u
ZGVzY3JpcHRpb24pOwotICBFWFBFQ1RfRVEoInRydWUiLCBpbmZvLmN1cnJlbnRfdmFsdWUpOwot
ICBFWFBFQ1RfRVEoImZhbHNlIiwgaW5mby5kZWZhdWx0X3ZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNF
KGluZm8uaXNfZGVmYXVsdCk7Ci0gIEVYUEVDVF9GQUxTRShpbmZvLmhhc192YWxpZGF0b3JfZm4p
OwotICBFWFBFQ1RfRVEoJkZMQUdTX3Rlc3RfYm9vbCwgaW5mby5mbGFnX3B0cik7Ci19Ci0KLSNp
ZmRlZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotVEVTVChHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JE
aWVEZWF0aFRlc3QsIEZsYWdEb2VzTm90RXhpc3QpIHsKLSAgRVhQRUNUX0RFQVRIKEdldENvbW1h
bmRMaW5lRmxhZ0luZm9PckRpZSgidGVzdF9pbnQzMjEwIiksCi0gICAgICAgICAgICAgICAiLio6
IGZsYWcgdGVzdF9pbnQzMjEwIGRvZXMgbm90IGV4aXN0Iik7Ci19Ci0jZW5kaWYKLQotCi0vLyBU
aGVzZSBhcmUgbGlnaHRseSB0ZXN0ZWQgYmVjYXVzZSB0aGV5J3JlIGRlcHJlY2F0ZWQuICBCYXNp
Y2FsbHksCi0vLyB0aGUgdGVzdHMgYXJlIG1lYW50IHRvIGNvdmVyIGhvdyBleGlzdGluZyB1c2Vy
cyB1c2UgdGhlc2UgZnVuY3Rpb25zLAotLy8gYnV0IG5vdCBuZWNlc3NhcmlseSBob3cgbmV3IHVz
ZXJzIGNvdWxkIHVzZSB0aGVtLgotVEVTVChEZXByZWNhdGVkRnVuY3Rpb25zVGVzdCwgQ29tbWFu
ZGxpbmVGbGFnc0ludG9TdHJpbmcpIHsKLSAgc3RyaW5nIHMgPSBDb21tYW5kbGluZUZsYWdzSW50
b1N0cmluZygpOwotICBFWFBFQ1RfTkUoc3RyaW5nOjpucG9zLCBzLmZpbmQoIi0tdGVzdF9ib29s
PSIpKTsKLX0KLQotVEVTVChEZXByZWNhdGVkRnVuY3Rpb25zVGVzdCwgQXBwZW5kRmxhZ3NJbnRv
RmlsZSkgewotICBGTEFHU190ZXN0X2ludDMyID0gMTA7ICAgICAvLyBqdXN0IHRvIG1ha2UgdGhl
IHRlc3QgbW9yZSBpbnRlcmVzdGluZwotICBzdHJpbmcgZmlsZW5hbWUoVG1wRmlsZSgiZmxhZ2Zp
bGUiKSk7Ci0gIHVubGluayhmaWxlbmFtZS5jX3N0cigpKTsgIC8vIGp1c3QgdG8gYmUgc2FmZQot
ICBjb25zdCBib29sIHIgPSBBcHBlbmRGbGFnc0ludG9GaWxlKGZpbGVuYW1lLCAibm90IHRoZSBy
ZWFsIGFyZ3YwIik7Ci0gIEVYUEVDVF9UUlVFKHIpOwotCi0gIEZJTEUqIGZwOwotICBFWFBFQ1Rf
RVEoMCwgU2FmZUZPcGVuKCZmcCwgZmlsZW5hbWUuY19zdHIoKSwgInIiKSk7Ci0gIEVYUEVDVF9U
UlVFKGZwICE9IE5VTEwpOwotICBjaGFyIGxpbmVbODE5Ml07Ci0gIEVYUEVDVF9UUlVFKGZnZXRz
KGxpbmUsIHNpemVvZihsaW5lKS0xLCBmcCkgIT0gTlVMTCk7ICAvLyBnZXQgdGhlIGZpcnN0IGxp
bmUKLSAgLy8gRmlyc3QgbGluZSBzaG91bGQgYmUgcHJvZ25hbWUuCi0gIEVYUEVDVF9TVFJFUSgi
bm90IHRoZSByZWFsIGFyZ3YwXG4iLCBsaW5lKTsKLQotICBib29sIGZvdW5kX2Jvb2wgPSBmYWxz
ZSwgZm91bmRfaW50MzIgPSBmYWxzZTsKLSAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5l
KS0xLCBmcCkpIHsKLSAgICBsaW5lW3NpemVvZihsaW5lKS0xXSA9ICdcMCc7ICAgIC8vIGp1c3Qg
dG8gYmUgc2FmZQotICAgIGlmIChzdHJjbXAobGluZSwgIi0tdGVzdF9ib29sPWZhbHNlXG4iKSA9
PSAwKQotICAgICAgZm91bmRfYm9vbCA9IHRydWU7Ci0gICAgaWYgKHN0cmNtcChsaW5lLCAiLS10
ZXN0X2ludDMyPTEwXG4iKSA9PSAwKQotICAgICAgZm91bmRfaW50MzIgPSB0cnVlOwotICB9Ci0g
IEVYUEVDVF9UUlVFKGZvdW5kX2ludDMyKTsKLSAgRVhQRUNUX1RSVUUoZm91bmRfYm9vbCk7Ci0g
IGZjbG9zZShmcCk7Ci19Ci0KLVRFU1QoRGVwcmVjYXRlZEZ1bmN0aW9uc1Rlc3QsIFJlYWRGcm9t
RmxhZ3NGaWxlKSB7Ci0gIEZMQUdTX3Rlc3RfaW50MzIgPSAtMTA7ICAgIC8vIGp1c3QgdG8gbWFr
ZSB0aGUgdGVzdCBtb3JlIGludGVyZXN0aW5nCi0gIHN0cmluZyBmaWxlbmFtZShUbXBGaWxlKCJm
bGFnZmlsZTIiKSk7Ci0gIHVubGluayhmaWxlbmFtZS5jX3N0cigpKTsgIC8vIGp1c3QgdG8gYmUg
c2FmZQotICBib29sIHIgPSBBcHBlbmRGbGFnc0ludG9GaWxlKGZpbGVuYW1lLCBHZXRBcmd2MCgp
KTsKLSAgRVhQRUNUX1RSVUUocik7Ci0KLSAgRkxBR1NfdGVzdF9pbnQzMiA9IC0xMTsKLSAgciA9
IFJlYWRGcm9tRmxhZ3NGaWxlKGZpbGVuYW1lLCBHZXRBcmd2MCgpLCB0cnVlKTsKLSAgRVhQRUNU
X1RSVUUocik7Ci0gIEVYUEVDVF9FUSgtMTAsIEZMQUdTX3Rlc3RfaW50MzIpOwotfSAgLy8gdW5u
YW1lZCBuYW1lc3BhY2UKLQotVEVTVChEZXByZWNhdGVkRnVuY3Rpb25zVGVzdCwgUmVhZEZyb21G
bGFnc0ZpbGVGYWlsdXJlKSB7Ci0gIEZMQUdTX3Rlc3RfaW50MzIgPSAtMjA7Ci0gIHN0cmluZyBm
aWxlbmFtZShUbXBGaWxlKCJmbGFnZmlsZTMiKSk7Ci0gIEZJTEUqIGZwOwotICBFWFBFQ1RfRVEo
MCwgU2FmZUZPcGVuKCZmcCwgZmlsZW5hbWUuY19zdHIoKSwgInciKSk7Ci0gIEVYUEVDVF9UUlVF
KGZwICE9IE5VTEwpOwotICAvLyBOb3RlIHRoZSBlcnJvciBpbiB0aGUgYm9vbCBhc3NpZ25tZW50
IGJlbG93Li4uCi0gIGZwcmludGYoZnAsICIlc1xuLS10ZXN0X2ludDMyPS0yMVxuLS10ZXN0X2Jv
b2w9bm90X2FfYm9vbCFcbiIsIEdldEFyZ3YwKCkpOwotICBmY2xvc2UoZnApOwotCi0gIEZMQUdT
X3Rlc3RfaW50MzIgPSAtMjI7Ci0gIGNvbnN0IGJvb2wgciA9IFJlYWRGcm9tRmxhZ3NGaWxlKGZp
bGVuYW1lLCBHZXRBcmd2MCgpLCBmYWxzZSk7Ci0gIEVYUEVDVF9GQUxTRShyKTsKLSAgRVhQRUNU
X0VRKC0yMiwgRkxBR1NfdGVzdF9pbnQzMik7ICAgLy8gdGhlIC0yMSBmcm9tIHRoZSBmbGFnc2Zp
bGUgZGlkbid0IHRha2UKLX0KLQotVEVTVChGbGFnc1NldEJlZm9yZUluaXRUZXN0LCBUcnlGcm9t
RW52KSB7Ci0gIEVYUEVDVF9FUSgicHJlLXNldCIsIEZMQUdTX3Rlc3RfdHJ5ZnJvbWVudik7Ci19
Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQgUGFyc2VDb21tYW5k
TGluZUZsYWdzKCkgYW5kCi0vLyBQYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzKCkgdXNlcyB0
aGUgbGFzdCBkZWZpbml0aW9uIG9mIGEgZmxhZwotLy8gaW4gY2FzZSBpdCdzIGRlZmluZWQgbW9y
ZSB0aGFuIG9uY2UuCi0KLURFRklORV9pbnQzMih0ZXN0X2ZsYWcsIC0xLCAidXNlZCBmb3IgdGVz
dGluZyBnZmxhZ3MuY2MiKTsKLQotLy8gUGFyc2VzIGFuZCByZXR1cm5zIHRoZSAtLXRlc3RfZmxh
ZyBmbGFnLgotLy8gSWYgd2l0aF9oZWxwIGlzIHRydWUsIGNhbGxzIFBhcnNlQ29tbWFuZExpbmVG
bGFnczsgb3RoZXJ3aXNlIGNhbGxzCi0vLyBQYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzLgot
aW50MzIgUGFyc2VUZXN0RmxhZyhib29sIHdpdGhfaGVscCwgaW50IGFyZ2MsIGNvbnN0IGNoYXIq
KiBjb25zdF9hcmd2KSB7Ci0gIEZsYWdTYXZlciBmczsgIC8vIFJlc3RvcmVzIHRoZSBmbGFncyBi
ZWZvcmUgcmV0dXJuaW5nLgotCi0gIC8vIE1ha2VzIGEgY29weSBvZiB0aGUgaW5wdXQgYXJyYXkg
cy50LiBpdCBjYW4gYmUgcmV1c2VkCi0gIC8vIChQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKSB3aWxs
IGFsdGVyIHRoZSBhcnJheSkuCi0gIGNoYXIqKiBjb25zdCBhcmd2X3NhdmUgPSBuZXcgY2hhcipb
YXJnYyArIDFdOwotICBjaGFyKiogYXJndiA9IGFyZ3Zfc2F2ZTsKLSAgbWVtY3B5KGFyZ3YsIGNv
bnN0X2FyZ3YsIHNpemVvZigqYXJndikqKGFyZ2MgKyAxKSk7Ci0KLSAgaWYgKHdpdGhfaGVscCkg
ewotICAgIFBhcnNlQ29tbWFuZExpbmVGbGFncygmYXJnYywgJmFyZ3YsIHRydWUpOwotICB9IGVs
c2UgewotICAgIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoJmFyZ2MsICZhcmd2LCB0cnVl
KTsKLSAgfQotCi0gIGRlbGV0ZVtdIGFyZ3Zfc2F2ZTsKLSAgcmV0dXJuIEZMQUdTX3Rlc3RfZmxh
ZzsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxhZ3NVc2VzTGFzdERlZmluaXRpb25UZXN0
LAotICAgICBXaGVuRmxhZ0lzRGVmaW5lZFR3aWNlT25Db21tYW5kTGluZSkgewotICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgICItLXRlc3RfZmxhZz0xIiwKLSAg
ICAiLS10ZXN0X2ZsYWc9MiIsCi0gICAgTlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfRVEoMiwgUGFy
c2VUZXN0RmxhZyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci0gIEVYUEVDVF9F
USgyLCBQYXJzZVRlc3RGbGFnKGZhbHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci19
Ci0KLVRFU1QoUGFyc2VDb21tYW5kTGluZUZsYWdzVXNlc0xhc3REZWZpbml0aW9uVGVzdCwKLSAg
ICAgV2hlbkZsYWdJc0RlZmluZWRUd2ljZUluRmxhZ0ZpbGUpIHsKLSAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgICJteV90ZXN0IiwKLSAgICBHZXRGbGFnRmlsZUZsYWcoKSwKLSAgICBOVUxM
LAotICB9OwotCi0gIEVYUEVDVF9FUSgyLCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShh
cmd2KSAtIDEsIGFyZ3YpKTsKLSAgRVhQRUNUX0VRKDIsIFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFy
cmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxh
Z3NVc2VzTGFzdERlZmluaXRpb25UZXN0LAotICAgICBXaGVuRmxhZ0lzRGVmaW5lZEluQ29tbWFu
ZExpbmVBbmRUaGVuRmxhZ0ZpbGUpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJt
eV90ZXN0IiwKLSAgICAiLS10ZXN0X2ZsYWc9MCIsCi0gICAgR2V0RmxhZ0ZpbGVGbGFnKCksCi0g
ICAgTlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfRVEoMiwgUGFyc2VUZXN0RmxhZyh0cnVlLCBhcnJh
eXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci0gIEVYUEVDVF9FUSgyLCBQYXJzZVRlc3RGbGFnKGZh
bHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci19Ci0KLVRFU1QoUGFyc2VDb21tYW5k
TGluZUZsYWdzVXNlc0xhc3REZWZpbml0aW9uVGVzdCwKLSAgICAgV2hlbkZsYWdJc0RlZmluZWRJ
bkZsYWdGaWxlQW5kVGhlbkNvbW1hbmRMaW5lKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsK
LSAgICAibXlfdGVzdCIsCi0gICAgR2V0RmxhZ0ZpbGVGbGFnKCksCi0gICAgIi0tdGVzdF9mbGFn
PTMiLAotICAgIE5VTEwsCi0gIH07Ci0KLSAgRVhQRUNUX0VRKDMsIFBhcnNlVGVzdEZsYWcodHJ1
ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotICBFWFBFQ1RfRVEoMywgUGFyc2VUZXN0
RmxhZyhmYWxzZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotfQotCi1URVNUKFBhcnNl
Q29tbWFuZExpbmVGbGFnc1VzZXNMYXN0RGVmaW5pdGlvblRlc3QsCi0gICAgIFdoZW5GbGFnSXNE
ZWZpbmVkSW5Db21tYW5kTGluZUFuZEZsYWdGaWxlQW5kVGhlbkNvbW1hbmRMaW5lKSB7Ci0gIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAibXlfdGVzdCIsCi0gICAgIi0tdGVzdF9mbGFnPTAi
LAotICAgIEdldEZsYWdGaWxlRmxhZygpLAotICAgICItLXRlc3RfZmxhZz0zIiwKLSAgICBOVUxM
LAotICB9OwotCi0gIEVYUEVDVF9FUSgzLCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShh
cmd2KSAtIDEsIGFyZ3YpKTsKLSAgRVhQRUNUX0VRKDMsIFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFy
cmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxh
Z3NBbmREYXNoQXJncywgVHdvRGFzaEFyZ0ZpcnN0KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKLSAgICAibXlfdGVzdCIsCi0gICAgIi0tIiwKLSAgICAiLS10ZXN0X2ZsYWc9MCIsCi0gICAg
TlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfRVEoLTEsIFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlz
aXplKGFyZ3YpIC0gMSwgYXJndikpOwotICBFWFBFQ1RfRVEoLTEsIFBhcnNlVGVzdEZsYWcoZmFs
c2UsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRM
aW5lRmxhZ3NBbmREYXNoQXJncywgVHdvRGFzaEFyZ01pZGRsZSkgewotICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgICItLXRlc3RfZmxhZz03IiwKLSAgICAiLS0i
LAotICAgICItLXRlc3RfZmxhZz0wIiwKLSAgICBOVUxMLAotICB9OwotCi0gIEVYUEVDVF9FUSg3
LCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLSAgRVhQ
RUNUX0VRKDcsIFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3Yp
KTsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxhZ3NBbmREYXNoQXJncywgT25lRGFzaEFy
ZykgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgICItIiwK
LSAgICAiLS10ZXN0X2ZsYWc9MCIsCi0gICAgTlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfRVEoMCwg
UGFyc2VUZXN0RmxhZyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci0gIEVYUEVD
VF9FUSgwLCBQYXJzZVRlc3RGbGFnKGZhbHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7
Ci19Ci0KLSNpZmRlZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotVEVTVChQYXJzZUNvbW1hbmRMaW5l
RmxhZ3NVbmtub3duRmxhZ0RlYXRoVGVzdCwKLSAgICAgRmxhZ0lzQ29tcGxldGVseVVua25vd24p
IHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICAiLS10aGlz
X2ZsYWdfZG9lc19ub3RfZXhpc3QiLAotICAgIE5VTEwsCi0gIH07Ci0KLSAgRVhQRUNUX0RFQVRI
KFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndiksCi0gICAgICAg
ICAgICAgICAidW5rbm93biBjb21tYW5kIGxpbmUgZmxhZy4qIik7Ci0gIEVYUEVDVF9ERUFUSChQ
YXJzZVRlc3RGbGFnKGZhbHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSwKLSAgICAgICAg
ICAgICAgICJ1bmtub3duIGNvbW1hbmQgbGluZSBmbGFnLioiKTsKLX0KLQotVEVTVChQYXJzZUNv
bW1hbmRMaW5lRmxhZ3NVbmtub3duRmxhZ0RlYXRoVGVzdCwKLSAgICAgQm9vbEZsYWdJc0NvbXBs
ZXRlbHlVbmtub3duKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAibXlfdGVzdCIs
Ci0gICAgIi0tbm90aGlzX2ZsYWdfZG9lc19ub3RfZXhpc3QiLAotICAgIE5VTEwsCi0gIH07Ci0K
LSAgRVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwg
YXJndiksCi0gICAgICAgICAgICAgICAidW5rbm93biBjb21tYW5kIGxpbmUgZmxhZy4qIik7Ci0g
IEVYUEVDVF9ERUFUSChQYXJzZVRlc3RGbGFnKGZhbHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBh
cmd2KSwKLSAgICAgICAgICAgICAgICJ1bmtub3duIGNvbW1hbmQgbGluZSBmbGFnLioiKTsKLX0K
LQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxhZ3NVbmtub3duRmxhZ0RlYXRoVGVzdCwKLSAgICAg
RmxhZ0lzTm90QUJvb2wpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJteV90ZXN0
IiwKLSAgICAiLS1ub3Rlc3Rfc3RyaW5nIiwKLSAgICBOVUxMLAotICB9OwotCi0gIEVYUEVDVF9E
RUFUSChQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpLAotICAg
ICAgICAgICAgICAgImJvb2xlYW4gdmFsdWUgLiogc3BlY2lmaWVkIGZvciAuKiBjb21tYW5kIGxp
bmUgZmxhZyIpOwotICBFWFBFQ1RfREVBVEgoUGFyc2VUZXN0RmxhZyhmYWxzZSwgYXJyYXlzaXpl
KGFyZ3YpIC0gMSwgYXJndiksCi0gICAgICAgICAgICAgICAiYm9vbGVhbiB2YWx1ZSAuKiBzcGVj
aWZpZWQgZm9yIC4qIGNvbW1hbmQgbGluZSBmbGFnIik7Ci19Ci0jZW5kaWYKLQotVEVTVChQYXJz
ZUNvbW1hbmRMaW5lRmxhZ3NXcm9uZ0ZpZWxkcywKLSAgICAgRGVzY3JpcHRpb25Jc0ludmFsaWQp
IHsKLSAgLy8gVGhlc2UgbXVzdCBub3QgYmUgYXV0b21hdGljIHZhcmlhYmxlcywgc2luY2UgY29t
bWFuZCBsaW5lIGZsYWdzCi0gIC8vIGFyZW4ndCB1bnJlZ2lzdGVyZWQgYW5kIGdVbml0IHVzZXMg
RmxhZ1NhdmVyIHRvIHNhdmUgYW5kIHJlc3RvcmUKLSAgLy8gY29tbWFuZCBsaW5lIGZsYWdzJyB2
YWx1ZXMuICBJZiB0aGVzZSBhcmUgb24gdGhlIHN0YWNrLCB0aGVuIHdoZW4KLSAgLy8gbGF0ZXIg
dGVzdHMgYXR0ZW1wdCB0byBzYXZlIGFuZCByZXN0b3JlIHRoZWlyIHZhbHVlcywgdGhlIHN0YWNr
Ci0gIC8vIGFkZHJlc3NlcyBvZiB0aGVzZSB2YXJpYWJsZXMgd2lsbCBiZSBvdmVyd3JpdHRlbi4u
LiAgU3RhY2sgc21hc2ghCi0gIHN0YXRpYyBib29sIGN1cnJlbnRfc3RvcmFnZTsKLSAgc3RhdGlj
IGJvb2wgZGVmdmFsdWVfc3RvcmFnZTsKLSAgRmxhZ1JlZ2lzdGVyZXIgZnIoImZsYWdfbmFtZSIs
ICJib29sIiwgMCwgImZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfc3Rv
cmFnZSwgJmRlZnZhbHVlX3N0b3JhZ2UpOwotICBDb21tYW5kTGluZUZsYWdJbmZvIGZpOwotICBF
WFBFQ1RfVFJVRShHZXRDb21tYW5kTGluZUZsYWdJbmZvKCJmbGFnX25hbWUiLCAmZmkpKTsKLSAg
RVhQRUNUX0VRKCIiLCBmaS5kZXNjcmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgmY3VycmVudF9zdG9y
YWdlLCBmaS5mbGFnX3B0cik7Ci19Ci0KLXN0YXRpYyBib29sIFZhbGlkYXRlVGVzdEZsYWdJczUo
Y29uc3QgY2hhciogZmxhZ25hbWUsIGludDMyIGZsYWd2YWwpIHsKLSAgaWYgKGZsYWd2YWwgPT0g
NSkKLSAgICByZXR1cm4gdHJ1ZTsKLSAgcHJpbnRmKCIlcyBpc24ndCA1IVxuIiwgZmxhZ25hbWUp
OwotICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBib29sIFZhbGlkYXRlVGVzdEZsYWdJczEw
KGNvbnN0IGNoYXIqIGZsYWduYW1lLCBpbnQzMiBmbGFndmFsKSB7Ci0gIHJldHVybiBmbGFndmFs
ID09IDEwOwotfQotCi0KLVRFU1QoRmxhZ3NWYWxpZGF0b3IsIFZhbGlkRmxhZ1ZpYUFyZ3YpIHsK
LSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICAiLS10ZXN0X2Zs
YWc9NSIsCi0gICAgTlVMTCwKLSAgfTsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRh
dG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7Ci0gIEVYUEVDVF9F
USg1LCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLSAg
Ly8gVW5kbyB0aGUgZmxhZyB2YWxpZGF0b3Igc2V0dGluZwotICBFWFBFQ1RfVFJVRShSZWdpc3Rl
ckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgTlVMTCkpOwotfQotCi1URVNUKEZsYWdz
VmFsaWRhdG9yLCBWYWxpZEZsYWdWaWFTZXREZWZhdWx0KSB7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lz
dGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkp
OwotICAvLyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlIHJldHVybnMgdGhlIGVtcHR5IHN0
cmluZyBvbiBlcnJvci4KLSAgRVhQRUNUX05FKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhN
b2RlKCJ0ZXN0X2ZsYWciLCAiNSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTRVRfRkxBR19JRl9ERUZBVUxUKSk7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVy
RmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCBOVUxMKSk7Ci19Ci0KLVRFU1QoRmxhZ3NW
YWxpZGF0b3IsIFZhbGlkRmxhZ1ZpYVNldFZhbHVlKSB7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVy
RmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwot
ICBGTEFHU190ZXN0X2ZsYWcgPSAxMDA7ICAgLy8gZG9lc24ndCB0cmlnZ2VyIHRoZSB2YWxpZGF0
b3IKLSAgLy8gU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSByZXR1cm5zIHRoZSBlbXB0eSBz
dHJpbmcgb24gZXJyb3IuCi0gIEVYUEVDVF9ORSgiIiwgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRo
TW9kZSgidGVzdF9mbGFnIiwgIjUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0VUX0ZMQUdTX1ZBTFVFKSk7Ci0gIEVYUEVDVF9ORSgiIiwgU2V0Q29tbWFu
ZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9mbGFnIiwgIjUiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZMQUdTX0RFRkFVTFQpKTsKLSAgRVhQRUNU
X05FKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9mbGFnIiwgIjUiKSk7Ci0gIEVYUEVD
VF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCBOVUxMKSk7Ci19
Ci0KLSNpZmRlZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotVEVTVChGbGFnc1ZhbGlkYXRvckRlYXRo
VGVzdCwgSW52YWxpZEZsYWdWaWFBcmd2KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAg
ICAibXlfdGVzdCIsCi0gICAgIi0tdGVzdF9mbGFnPTUwIiwKLSAgICBOVUxMLAotICB9OwotICBF
WFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlk
YXRlVGVzdEZsYWdJczUpKTsKLSAgRVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJy
YXlzaXplKGFyZ3YpIC0gMSwgYXJndiksCi0gICAgICAgICAgICAgICAiRVJST1I6IGZhaWxlZCB2
YWxpZGF0aW9uIG9mIG5ldyB2YWx1ZSAnNTAnIGZvciBmbGFnICd0ZXN0X2ZsYWcnIik7Ci0gIEVY
UEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCBOVUxMKSk7
Ci19Ci0jZW5kaWYKLQotVEVTVChGbGFnc1ZhbGlkYXRvciwgSW52YWxpZEZsYWdWaWFTZXREZWZh
dWx0KSB7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9m
bGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICAvLyBTZXRDb21tYW5kTGluZU9wdGlvbldp
dGhNb2RlIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KLSAgRVhQRUNUX0VRKCIi
LCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X2ZsYWciLCAiNTAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZMQUdfSUZfREVGQVVM
VCkpOwotICBFWFBFQ1RfRVEoLTEsIEZMQUdTX3Rlc3RfZmxhZyk7ICAgLy8gdGhlIHNldHRpbmct
dG8tNTAgc2hvdWxkIGhhdmUgZmFpbGVkCi0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlk
YXRvcigmRkxBR1NfdGVzdF9mbGFnLCBOVUxMKSk7Ci19Ci0KLVRFU1QoRmxhZ3NWYWxpZGF0b3Is
IEludmFsaWRGbGFnVmlhU2V0VmFsdWUpIHsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFs
aWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7Ci0gIEZMQUdT
X3Rlc3RfZmxhZyA9IDEwMDsgICAvLyBkb2Vzbid0IHRyaWdnZXIgdGhlIHZhbGlkYXRvcgotICAv
LyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBv
biBlcnJvci4KLSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0
ZXN0X2ZsYWciLCAiNTAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0VUX0ZMQUdTX1ZBTFVFKSk7Ci0gIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExpbmVP
cHRpb25XaXRoTW9kZSgidGVzdF9mbGFnIiwgIjUwIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNFVF9GTEFHU19ERUZBVUxUKSk7Ci0gIEVYUEVDVF9FUSgi
IiwgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfZmxhZyIsICI1MCIpKTsKLSAgRVhQRUNUX0VR
KDEwMCwgRkxBR1NfdGVzdF9mbGFnKTsgICAvLyB0aGUgc2V0dGluZy10by01MCBzaG91bGQgaGF2
ZSBmYWlsZWQKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0
X2ZsYWcsIE5VTEwpKTsKLX0KLQotI2lmZGVmIEdURVNUX0hBU19ERUFUSF9URVNUCi1URVNUKEZs
YWdzVmFsaWRhdG9yRGVhdGhUZXN0LCBJbnZhbGlkRmxhZ05ldmVyU2V0KSB7Ci0gIC8vIElmIGEg
ZmxhZyBrZWVwcyBpdHMgZGVmYXVsdCB2YWx1ZSwgYW5kIHRoYXQgZGVmYXVsdCB2YWx1ZSBpcwot
ICAvLyBpbnZhbGlkLCB3ZSBzaG91bGQgZGllIGF0IGFyZ3YtcGFyc2UgdGltZS4KLSAgY29uc3Qg
Y2hhciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICBOVUxMLAotICB9OwotICBFWFBF
Q1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRl
VGVzdEZsYWdJczUpKTsKLSAgRVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlz
aXplKGFyZ3YpIC0gMSwgYXJndiksCi0gICAgICAgICAgICAgICAiRVJST1I6IC0tdGVzdF9mbGFn
IG11c3QgYmUgc2V0IG9uIHRoZSBjb21tYW5kbGluZSIpOwotfQotI2VuZGlmCi0KLVRFU1QoRmxh
Z3NWYWxpZGF0b3IsIEludmFsaWRGbGFnUHRyKSB7Ci0gIGludDMyIGR1bW15OwotICBFWFBFQ1Rf
RkFMU0UoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKE5VTEwsICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7
Ci0gIEVYUEVDVF9GQUxTRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJmR1bW15LCAmVmFsaWRhdGVU
ZXN0RmxhZ0lzNSkpOwotfQotCi1URVNUKEZsYWdzVmFsaWRhdG9yLCBSZWdpc3RlclZhbGlkYXRv
clR3aWNlKSB7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVz
dF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICBFWFBFQ1RfVFJVRShSZWdpc3RlckZs
YWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRlVGVzdEZsYWdJczUpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCAmVmFs
aWRhdGVUZXN0RmxhZ0lzMTApKTsKLSAgRVhQRUNUX0ZBTFNFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRv
cigmRkxBR1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzMTApKTsKLSAgRVhQRUNUX1RS
VUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RG
bGFnSXM1KSk7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVz
dF9mbGFnLCBOVUxMKSk7Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxB
R1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzMTApKTsKLSAgRVhQRUNUX1RSVUUoUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsIE5VTEwpKTsKLX0KLQotVEVTVChG
bGFnc1ZhbGlkYXRvciwgQ29tbWFuZExpbmVGbGFnSW5mbykgewotICBDb21tYW5kTGluZUZsYWdJ
bmZvIGluZm87Ci0gIGluZm8gPSBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoInRlc3RfZmxh
ZyIpOwotICBFWFBFQ1RfRkFMU0UoaW5mby5oYXNfdmFsaWRhdG9yX2ZuKTsKLQotICBFWFBFQ1Rf
VFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRlVGVz
dEZsYWdJczUpKTsKLSAgaW5mbyA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgidGVzdF9m
bGFnIik7Ci0gIEVYUEVDVF9UUlVFKGluZm8uaGFzX3ZhbGlkYXRvcl9mbik7Ci0KLSAgRVhQRUNU
X1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsIE5VTEwpKTsKLSAg
aW5mbyA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgidGVzdF9mbGFnIik7Ci0gIEVYUEVD
VF9GQUxTRShpbmZvLmhhc192YWxpZGF0b3JfZm4pOwotfQotCi1URVNUKEZsYWdzVmFsaWRhdG9y
LCBGbGFnU2F2ZXIpIHsKLSAgewotICAgIEZsYWdTYXZlciBmczsKLSAgICBFWFBFQ1RfVFJVRShS
ZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRlVGVzdEZsYWdJ
czUpKTsKLSAgICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ZsYWci
LCAiNTAiKSk7ICAvLyBmYWlscyB2YWxpZGF0aW9uCi0gIH0KLSAgRVhQRUNUX05FKCIiLCBTZXRD
b21tYW5kTGluZU9wdGlvbigidGVzdF9mbGFnIiwgIjUwIikpOyAgLy8gdmFsaWRhdG9yIGlzIGdv
bmUKLQotICBFWFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxh
ZywgJlZhbGlkYXRlVGVzdEZsYWdJczUpKTsKLSAgewotICAgIEZsYWdTYXZlciBmczsKLSAgICBF
WFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgTlVMTCkp
OwotICAgIEVYUEVDVF9ORSgiIiwgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfZmxhZyIsICI1
MCIpKTsgIC8vIG5vIHZhbGlkYXRvcgotICB9Ci0gIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExp
bmVPcHRpb24oInRlc3RfZmxhZyIsICI1MCIpKTsgIC8vIHZhbGlkYXRvciBpcyBiYWNrCi19Ci0K
LQotfSAgLy8gdW5uYW1lZCBuYW1lc3BhY2UKLQotc3RhdGljIGludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewotCi0gIC8vIFJ1biB1bml0IHRlc3RzIG9ubHkgaWYgY2FsbGVkIHdpdGhv
dXQgYXJndW1lbnRzLCBvdGhlcndpc2UgdGhpcyBwcm9ncmFtCi0gIC8vIGlzIHVzZWQgYnkgYW4g
ImV4dGVybmFsIiB1c2FnZSB0ZXN0Ci0gIGNvbnN0IGJvb2wgcnVuX3Rlc3RzID0gKGFyZ2MgPT0g
MSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBjYWxsIFNldEFyZ3YgYmVmb3JlIHBhcnNpbmcgZmxhZ3Ms
IHNvIG91ciAidGVzdCIgYXJndiB3aWxsCi0gIC8vIHdpbiBvdXQgb3ZlciB0aGlzIGV4ZWN1dGFi
bGUncyByZWFsIGFyZ3YuICBUaGF0IG1ha2VzIHJ1bm5pbmcgdGhpcwotICAvLyB0ZXN0IHdpdGgg
YSByZWFsIC0taGVscCBmbGFnIGtpbmRhIGFubm95aW5nLCB1bmZvcnR1bmF0ZWx5LgotICBjb25z
dCBjaGFyKiB0ZXN0X2FyZ3ZbXSA9IHsgIi90ZXN0L2FyZ3YvZm9yL2dmbGFnc191bml0dGVzdCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndiAyIiwgIjNyZCBhcmd2IiwgImFy
Z3YgIzQiIH07Ci0gIFNldEFyZ3YoYXJyYXlzaXplKHRlc3RfYXJndiksIHRlc3RfYXJndik7Ci0K
LSAgLy8gVGhlIGZpcnN0IGFyZyBpcyB0aGUgdXNhZ2UgbWVzc2FnZSwgYWxzbyBpbXBvcnRhbnQg
Zm9yIHRlc3RpbmcuCi0gIHN0cmluZyB1c2FnZV9tZXNzYWdlID0gKHN0cmluZyhHZXRBcmd2MCgp
KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI6IDx1c2VsZXNzIGZsYWc+IFsuLi5dXG5E
b2VzIHNvbWV0aGluZyB1c2VsZXNzLlxuIik7Ci0KLSAgLy8gV2UgdGVzdCBzZXR0aW5nIHRyeWZy
b21lbnYgbWFudWFsbHksIGFuZCBtYWtpbmcgc3VyZQotICAvLyBQYXJzZUNvbW1hbmRMaW5lRmxh
Z3Mgc3RpbGwgZXZhbHVhdGVzIGl0LgotICBGTEFHU190cnlmcm9tZW52ID0gInRlc3RfdHJ5ZnJv
bWVudiI7Ci0gIHNldGVudigiRkxBR1NfdGVzdF90cnlmcm9tZW52IiwgInByZS1zZXQiLCAxKTsK
LQotICAvLyBNb2RpZnkgZmxhZyB2YWx1ZXMgZnJvbSBkZWNsYXJlZCBkZWZhdWx0IHZhbHVlIGlu
IHR3byB3YXlzLgotICAvLyBUaGUgcmVjb21tZW5kZWQgd2F5OgotICBTZXRDb21tYW5kTGluZU9w
dGlvbldpdGhNb2RlKCJjaGFuZ2VkX2Jvb2wxIiwgInRydWUiLCBTRVRfRkxBR1NfREVGQVVMVCk7
Ci0KLSAgLy8gVGhlIG5vbi1yZWNvbW1lbmRlZCB3YXk6Ci0gIEZMQUdTX2NoYW5nZWRfYm9vbDIg
PSB0cnVlOwotCi0gIFNldFVzYWdlTWVzc2FnZSh1c2FnZV9tZXNzYWdlLmNfc3RyKCkpOwotICBT
ZXRWZXJzaW9uU3RyaW5nKCJ0ZXN0X3ZlcnNpb24iKTsKLSAgUGFyc2VDb21tYW5kTGluZUZsYWdz
KCZhcmdjLCAmYXJndiwgdHJ1ZSk7Ci0gIE1ha2VUbXBkaXIoJkZMQUdTX3Rlc3RfdG1wZGlyKTsK
LQotICBpbnQgZXhpdF9zdGF0dXMgPSAwOwotICBpZiAocnVuX3Rlc3RzKSB7Ci0JICBmcHJpbnRm
KHN0ZG91dCwgIlJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMgbm93Li4uXG5cbiIpOyBmZmx1c2goc3Rk
b3V0KTsKLQkgIGV4aXRfc3RhdHVzID0gUlVOX0FMTF9URVNUUygpOwotICB9IGVsc2UgZnByaW50
ZihzdGRlcnIsICJcblxuUEFTU1xuIik7Ci0gIFNodXREb3duQ29tbWFuZExpbmVGbGFncygpOwot
ICByZXR1cm4gZXhpdF9zdGF0dXM7Ci19Ci0KLX0gLy8gR0ZMQUdTX05BTUVTUEFDRQotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgcmV0dXJuIEdGTEFHU19OQU1FU1BBQ0U6
Om1haW4oYXJnYywgYXJndik7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc191bml0dGVz
dF9mbGFnZmlsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc191bml0dGVzdF9mbGFnZmlsZQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjRmYTBjNGQ1YzVlODc1OWJkNzZmMDU5YTMxZmZmYTA2YmFmYzhl
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9n
ZmxhZ3NfdW5pdHRlc3RfZmxhZ2ZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS0t
dGVzdF9mbGFnPTEKLS0tdGVzdF9mbGFnPTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L25jL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3Rlc3QvbmMvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU0MjVkOTFlYzgyYjZiMmQxOGEwNThiNGE4YjdlMDVhMjA1YmFjNzkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvbmMvQ01ha2VMaXN0
cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jIyBnZmxhZ3MgbmVnYXRpdmUg
Y29tcGlsYXRpb24gdGVzdHMKLQotY21ha2VfbWluaW11bV9yZXF1aXJlZCAoVkVSU0lPTiAyLjgp
Ci0KLWlmIChOT1QgVEVTVF9OQU1FKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiTWlzc2luZyBU
RVNUX05BTUUgQ01ha2UgZmxhZyIpCi1lbmRpZiAoKQotc3RyaW5nIChUT1VQUEVSICR7VEVTVF9O
QU1FfSBURVNUX05BTUVfVVBQRVIpCi0KLXByb2plY3QgKGdmbGFnc18ke1RFU1RfTkFNRX0pCi0K
LWZpbmRfcGFja2FnZSAoZ2ZsYWdzIFJFUVVJUkVEKQotaW5jbHVkZV9kaXJlY3RvcmllcyAoIiR7
Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLiIpCi1hZGRfZGVmaW5pdGlvbnMgKC1EVEVTVF8k
e1RFU1RfTkFNRV9VUFBFUn0pCi1hZGRfZXhlY3V0YWJsZSAoZ2ZsYWdzXyR7VEVTVF9OQU1FfSBn
ZmxhZ3NfbmMuY2MpCi10YXJnZXRfbGlua19saWJyYXJpZXMoZ2ZsYWdzXyR7VEVTVF9OQU1FfSAk
e2dmbGFnc19MSUJSQVJJRVN9KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvbmMvZ2ZsYWdzX25jLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L3Rlc3QvbmMvZ2ZsYWdzX25jLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTkw
YzMwYTZhOTA3YTg1OWNkYTViNzcwNDI1ZDc0MjgwNGRhMjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L25jL2dmbGFnc19uYy5jYworKysgL2Rl
di9udWxsCkBAIC0xLDczICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8KLS8vIEEgbmVnYXRpdmUgY29taXBsZSB0ZXN0
IGZvciBnZmxhZ3MuCi0KLSNpbmNsdWRlIDxnZmxhZ3MvZ2ZsYWdzLmg+Ci0KLSNpZiBkZWZpbmVk
KFRFU1RfTkNfU1dBUFBFRF9BUkdTKQotCi1ERUZJTkVfYm9vbChzb21lX2Jvb2xfZmxhZywKLSAg
ICAgICAgICAgICJ0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgZ28gaGVyZSwgbm90IHRoZSBkZXNj
cmlwdGlvbiIsCi0gICAgICAgICAgICBmYWxzZSk7Ci0KLQotI2VsaWYgZGVmaW5lZChURVNUX05D
X0lOVF9JTlNURUFEX09GX0JPT0wpCi0KLURFRklORV9ib29sKHNvbWVfYm9vbF9mbGFnXzIsCi0g
ICAgICAgICAgICAwLAotICAgICAgICAgICAgInNob3VsZCBoYXZlIGJlZW4gYW4gaW50MzIgZmxh
ZyBidXQgbWlzdGFrZW5seSB1c2VkIGJvb2wgaW5zdGVhZCIpOwotCi0jZWxpZiBkZWZpbmVkKFRF
U1RfTkNfQk9PTF9JTl9RVU9URVMpCi0KLQotREVGSU5FX2Jvb2woc29tZV9ib29sX2ZsYWdfMywK
LSAgICAgICAgICAgICJmYWxzZSIsCi0gICAgICAgICAgICAiZmFsc2UgaW4gaW4gcXVvdGVzLCB3
aGljaCBpcyB3cm9uZyIpOwotCi0jZWxpZiBkZWZpbmVkKFRFU1RfTkNfU0FOSVRZKQotCi1ERUZJ
TkVfYm9vbChzb21lX2Jvb2xfZmxhZ180LAotICAgICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAg
ICJ0aGlzIGlzIHRoZSBjb3JyZWN0IHVzYWdlIG9mIERFRklORV9ib29sIik7Ci0KLSNlbGlmIGRl
ZmluZWQoVEVTVF9OQ19ERUZJTkVfU1RSSU5HX1dJVEhfMCkKLQotREVGSU5FX3N0cmluZyhzb21l
X3N0cmluZ19mbGFnLAotICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAiVHJ5aW5nIHRv
IGNvbnN0cnVjdCBhIHN0cmluZyBieSBwYXNzaW5nIDAgd291bGQgY2F1c2UgYSBjcmFzaC4iKTsK
LQotI2VuZGlmCi0KLWludCBtYWluKGludCwgY2hhciAqKikKLXsKLSAgcmV0dXJuIDA7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvLmdpdGlnbm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8uZ2l0aWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NGU3NDY2YWQ5MzU3MjljNWI4YWQ5YTBkZDlhOGI1MzUzOGY2Y2ZjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8uZ2l0aWdub3JlCisr
KyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIElnbm9yZSBDSSBidWlsZCBkaXJlY3RvcnkK
LWJ1aWxkLwoteGN1c2VyZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Ly50cmF2aXMueW1sIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Ly50cmF2aXMu
eW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjA0ZGZhYzE3ZDdjZTZiMWY0NzVj
MWFjYWVhNGVhOWRmMzgyYjcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC8udHJhdmlzLnltbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLSMg
QnVpbGQgbWF0cml4IC8gZW52aXJvbm1lbnQgdmFyaWFibGUgYXJlIGV4cGxhaW5lZCBvbjoKLSMg
aHR0cDovL2Fib3V0LnRyYXZpcy1jaS5vcmcvZG9jcy91c2VyL2J1aWxkLWNvbmZpZ3VyYXRpb24v
Ci0jIFRoaXMgZmlsZSBjYW4gYmUgdmFsaWRhdGVkIG9uOgotIyBodHRwOi8vbGludC50cmF2aXMt
Y2kub3JnLwotCi1pbnN0YWxsOgotIyAvdXNyL2Jpbi9nY2MgaXMgNC42IGFsd2F5cywgYnV0IGdj
Yy1YLlkgaXMgYXZhaWxhYmxlLgotLSBpZiBbICIkQ1hYIiA9ICJnKysiIF07IHRoZW4gZXhwb3J0
IENYWD0iZysrLTQuOSIgQ0M9ImdjYy00LjkiOyBmaQotIyAvdXNyL2Jpbi9jbGFuZyBpcyAzLjQs
IGxldHMgb3ZlcnJpZGUgd2l0aCBtb2Rlcm4gb25lLgotLSBpZiBbICIkQ1hYIiA9ICJjbGFuZysr
IiBdICYmIFsgIiRUUkFWSVNfT1NfTkFNRSIgPSAibGludXgiIF07IHRoZW4gZXhwb3J0IENYWD0i
Y2xhbmcrKy0zLjciIENDPSJjbGFuZy0zLjciOyBmaQotLSBlY2hvICR7UEFUSH0KLS0gZWNobyAk
e0NYWH0KLS0gJHtDWFh9IC0tdmVyc2lvbgotLSAke0NYWH0gLXYKLWFkZG9uczoKLSAgYXB0Ogot
ICAgICMgTGlzdCBvZiB3aGl0ZWxpc3RlZCBpbiB0cmF2aXMgcGFja2FnZXMgZm9yIHVidW50dS1w
cmVjaXNlIGNhbiBiZSBmb3VuZCBoZXJlOgotICAgICMgICBodHRwczovL2dpdGh1Yi5jb20vdHJh
dmlzLWNpL2FwdC1wYWNrYWdlLXdoaXRlbGlzdC9ibG9iL21hc3Rlci91YnVudHUtcHJlY2lzZQot
ICAgICMgTGlzdCBvZiB3aGl0ZWxpc3RlZCBpbiB0cmF2aXMgYXB0LXNvdXJjZXM6Ci0gICAgIyAg
IGh0dHBzOi8vZ2l0aHViLmNvbS90cmF2aXMtY2kvYXB0LXNvdXJjZS13aGl0ZWxpc3QvYmxvYi9t
YXN0ZXIvdWJ1bnR1Lmpzb24KLSAgICBzb3VyY2VzOgotICAgIC0gdWJ1bnR1LXRvb2xjaGFpbi1y
LXRlc3QKLSAgICAtIGxsdm0tdG9vbGNoYWluLXByZWNpc2UtMy43Ci0gICAgcGFja2FnZXM6Ci0g
ICAgLSBnY2MtNC45Ci0gICAgLSBnKystNC45Ci0gICAgLSBjbGFuZy0zLjcKLSAgICAtIHZhbGdy
aW5kCi1vczoKLSAgLSBsaW51eAotICAtIG9zeAotbGFuZ3VhZ2U6IGNwcAotY29tcGlsZXI6Ci0g
IC0gZ2NjCi0gIC0gY2xhbmcKLXNjcmlwdDogLi90cmF2aXMuc2gKLWVudjoKLSAgbWF0cml4Ogot
ICAgIC0gR1RFU1RfVEFSR0VUPWdvb2dsZXRlc3QgU0hBUkVEX0xJQj1PRkYgU1RBVElDX0xJQj1P
TiBDTUFLRV9QS0c9T0ZGIEJVSUxEX1RZUEU9ZGVidWcgICBWRVJCT1NFX01BS0U9dHJ1ZSBWRVJC
T1NFCi0gICAgLSBHVEVTVF9UQVJHRVQ9Z29vZ2xlbW9jayBTSEFSRURfTElCPU9GRiBTVEFUSUNf
TElCPU9OIENNQUtFX1BLRz1PRkYgQlVJTERfVFlQRT1kZWJ1ZyAgIFZFUkJPU0VfTUFLRT10cnVl
IFZFUkJPU0UKLSAgICAtIEdURVNUX1RBUkdFVD1nb29nbGVtb2NrIFNIQVJFRF9MSUI9T0ZGIFNU
QVRJQ19MSUI9T04gQ01BS0VfUEtHPU9GRiBCVUlMRF9UWVBFPWRlYnVnIENYWF9GTEFHUz0tc3Rk
PWMrKzExICBWRVJCT1NFX01BS0U9dHJ1ZSBWRVJCT1NFCi0jICAgIC0gR1RFU1RfVEFSR0VUPWdv
b2dsZXRlc3QgU0hBUkVEX0xJQj1PTiAgU1RBVElDX0xJQj1PTiBDTUFLRV9QS0c9T04gIEJVSUxE
X1RZUEU9cmVsZWFzZSBWRVJCT1NFX01BS0U9ZmFsc2UKLSMgICAgLSBHVEVTVF9UQVJHRVQ9Z29v
Z2xlbW9jayBTSEFSRURfTElCPU9OICBTVEFUSUNfTElCPU9OIENNQUtFX1BLRz1PTiAgQlVJTERf
VFlQRT1yZWxlYXNlIFZFUkJPU0VfTUFLRT1mYWxzZQotbm90aWZpY2F0aW9uczoKLSAgZW1haWw6
IGZhbHNlCi1zdWRvOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L0NNYWtl
TGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzU0OTkyZThjZWY3MGNm
YjY0NWY4ZDY3NmVjZjdmNjAyNWY4NjlkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICsw
LDAgQEAKLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjYuNCkKLQotcHJvamVjdCgg
Z29vZ2xldGVzdC1kaXN0cmlidXRpb24gKQotCi1lbmFibGVfdGVzdGluZygpCi0KLW9wdGlvbihC
VUlMRF9HVEVTVCAiQnVpbGRzIHRoZSBnb29nbGV0ZXN0IHN1YnByb2plY3QiIE9GRikKLQotI05v
dGUgdGhhdCBnb29nbGVtb2NrIHRhcmdldCBhbHJlYWR5IGJ1aWxkcyBnb29nbGV0ZXN0Ci1vcHRp
b24oQlVJTERfR01PQ0sgIkJ1aWxkcyB0aGUgZ29vZ2xlbW9jayBzdWJwcm9qZWN0IiBPTikKLQot
aWYoQlVJTERfR01PQ0spCi0gIGFkZF9zdWJkaXJlY3RvcnkoIGdvb2dsZW1vY2sgKQotZWxzZWlm
KEJVSUxEX0dURVNUKQotICBhZGRfc3ViZGlyZWN0b3J5KCBnb29nbGV0ZXN0ICkKLWVuZGlmKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNzY0ODRlNGZhZDkyMjI5YmQxNWY2MjA5NzJhZTY2ZjM4NGQxMTQ1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9SRUFETUUubWQKKysr
IC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0jIEdvb2dsZSBUZXN0ICMKLQotWyFbQnVp
bGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvZ29vZ2xlL2dvb2dsZXRlc3Quc3ZnP2Jy
YW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZ29vZ2xlL2dvb2dsZXRlc3QpCi1b
IVtCdWlsZCBzdGF0dXNdKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9zdGF0
dXMvNG8zOHBsdDB4Ym8xdWJjOC9icmFuY2gvbWFzdGVyP3N2Zz10cnVlKV0oaHR0cHM6Ly9jaS5h
cHB2ZXlvci5jb20vcHJvamVjdC9CaWxseURvbmFodWUvZ29vZ2xldGVzdC9icmFuY2gvbWFzdGVy
KQotCi1XZWxjb21lIHRvICoqR29vZ2xlIFRlc3QqKiwgR29vZ2xlJ3MgQysrIHRlc3QgZnJhbWV3
b3JrIQotCi1UaGlzIHJlcG9zaXRvcnkgaXMgYSBtZXJnZXIgb2YgdGhlIGZvcm1lcmx5IHNlcGFy
YXRlIEdvb2dsZVRlc3QgYW5kCi1Hb29nbGVNb2NrIHByb2plY3RzLiBUaGVzZSB3ZXJlIHNvIGNs
b3NlbHkgcmVsYXRlZCB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvCi1tYWludGFpbiBhbmQgcmVsZWFz
ZSB0aGVtIHRvZ2V0aGVyLgotCi1QbGVhc2Ugc2VlIHRoZSBwcm9qZWN0IHBhZ2UgYWJvdmUgZm9y
IG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1haWxpbmcgbGlzdCBmb3IgcXVlc3Rp
b25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAgVGhlcmUgaXMKLWFsc28gYW4gSVJD
IGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rlc3QgYXZhaWxhYmxlLiAgUGxlYXNl
Ci1qb2luIHVzIQotCi1HZXR0aW5nIHN0YXJ0ZWQgaW5mb3JtYXRpb24gZm9yICoqR29vZ2xlIFRl
c3QqKiBpcyBhdmFpbGFibGUgaW4gdGhlIAotW0dvb2dsZSBUZXN0IFByaW1lcl0oZ29vZ2xldGVz
dC9kb2NzL1ByaW1lci5tZCkgZG9jdW1lbnRhdGlvbi4KLQotKipHb29nbGUgTW9jayoqIGlzIGFu
IGV4dGVuc2lvbiB0byBHb29nbGUgVGVzdCBmb3Igd3JpdGluZyBhbmQgdXNpbmcgQysrIG1vY2sK
LWNsYXNzZXMuICBTZWUgdGhlIHNlcGFyYXRlIFtHb29nbGUgTW9jayBkb2N1bWVudGF0aW9uXShn
b29nbGVtb2NrL1JFQURNRS5tZCkuCi0KLU1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBmb3Ig
Z29vZ2xldGVzdCAoaW5jbHVkaW5nIGJ1aWxkIGluc3RydWN0aW9ucykgYXJlCi1pbiBpdHMgaW50
ZXJpb3IgW2dvb2dsZXRlc3QvUkVBRE1FLm1kXShnb29nbGV0ZXN0L1JFQURNRS5tZCkgZmlsZS4K
LQotIyMgRmVhdHVyZXMgIyMKLQotICAqIEFuIFtYVW5pdF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvWFVuaXQpIHRlc3QgZnJhbWV3b3JrLgotICAqIFRlc3QgZGlzY292ZXJ5LgotICAq
IEEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucy4KLSAgKiBVc2VyLWRlZmluZWQgYXNzZXJ0aW9ucy4K
LSAgKiBEZWF0aCB0ZXN0cy4KLSAgKiBGYXRhbCBhbmQgbm9uLWZhdGFsIGZhaWx1cmVzLgotICAq
IFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICogVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
LgotICAqIFZhcmlvdXMgb3B0aW9ucyBmb3IgcnVubmluZyB0aGUgdGVzdHMuCi0gICogWE1MIHRl
c3QgcmVwb3J0IGdlbmVyYXRpb24uCi0KLSMjIFBsYXRmb3JtcyAjIwotCi1Hb29nbGUgdGVzdCBo
YXMgYmVlbiB1c2VkIG9uIGEgdmFyaWV0eSBvZiBwbGF0Zm9ybXM6Ci0KLSAgKiBMaW51eAotICAq
IE1hYyBPUyBYCi0gICogV2luZG93cwotICAqIEN5Z3dpbgotICAqIE1pbkdXCi0gICogV2luZG93
cyBNb2JpbGUKLSAgKiBTeW1iaWFuCi0KLSMjIFdobyBJcyBVc2luZyBHb29nbGUgVGVzdD8gIyMK
LQotSW4gYWRkaXRpb24gdG8gbWFueSBpbnRlcm5hbCBwcm9qZWN0cyBhdCBHb29nbGUsIEdvb2ds
ZSBUZXN0IGlzIGFsc28gdXNlZCBieQotdGhlIGZvbGxvd2luZyBub3RhYmxlIHByb2plY3RzOgot
Ci0gICogVGhlIFtDaHJvbWl1bSBwcm9qZWN0c10oaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvKSAo
YmVoaW5kIHRoZSBDaHJvbWUKLSAgICBicm93c2VyIGFuZCBDaHJvbWUgT1MpLgotICAqIFRoZSBb
TExWTV0oaHR0cDovL2xsdm0ub3JnLykgY29tcGlsZXIuCi0gICogW1Byb3RvY29sIEJ1ZmZlcnNd
KGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYpLCBHb29nbGUncyBkYXRhCi0gICAg
aW50ZXJjaGFuZ2UgZm9ybWF0LgotICAqIFRoZSBbT3BlbkNWXShodHRwOi8vb3BlbmN2Lm9yZy8p
IGNvbXB1dGVyIHZpc2lvbiBsaWJyYXJ5LgotCi0jIyBSZWxhdGVkIE9wZW4gU291cmNlIFByb2pl
Y3RzICMjCi0KLVtHb29nbGUgVGVzdCBVSV0oaHR0cHM6Ly9naXRodWIuY29tL29zcGVjdG9yL2d0
ZXN0LWdiYXIpIGlzIHRlc3QgcnVubmVyIHRoYXQgcnVucwoteW91ciB0ZXN0IGJpbmFyeSwgYWxs
b3dzIHlvdSB0byB0cmFjayBpdHMgcHJvZ3Jlc3MgdmlhIGEgcHJvZ3Jlc3MgYmFyLCBhbmQKLWRp
c3BsYXlzIGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzLiBDbGlja2luZyBvbiBvbmUgc2hvd3MgZmFp
bHVyZSB0ZXh0LiBHb29nbGUKLVRlc3QgVUkgaXMgd3JpdHRlbiBpbiBDIy4KLQotW0dUZXN0IFRB
UCBMaXN0ZW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL2tpbm93L2d0ZXN0LXRhcC1saXN0ZW5lcikg
aXMgYW4gZXZlbnQKLWxpc3RlbmVyIGZvciBHb29nbGUgVGVzdCB0aGF0IGltcGxlbWVudHMgdGhl
Ci1bVEFQIHByb3RvY29sXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UZXN0X0FueXRo
aW5nX1Byb3RvY29sKSBmb3IgdGVzdAotcmVzdWx0IG91dHB1dC4gSWYgeW91ciB0ZXN0IHJ1bm5l
ciB1bmRlcnN0YW5kcyBUQVAsIHlvdSBtYXkgZmluZCBpdCB1c2VmdWwuCi0KLSMjIFJlcXVpcmVt
ZW50cyAjIwotCi1Hb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBoYXZlIGZhaXJseSBtaW5pbWFs
IHJlcXVpcmVtZW50cyB0byBidWlsZAotYW5kIHVzZSB3aXRoIHlvdXIgcHJvamVjdHMsIGJ1dCB0
aGVyZSBhcmUgc29tZS4gIEN1cnJlbnRseSwgd2Ugc3VwcG9ydAotTGludXgsIFdpbmRvd3MsIE1h
YyBPUyBYLCBhbmQgQ3lnd2luLiAgV2Ugd2lsbCBhbHNvIG1ha2Ugb3VyIGJlc3QKLWVmZm9ydCB0
byBzdXBwb3J0IG90aGVyIHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzLCBBSVgsIGFuZCB6L09TKS4K
LUhvd2V2ZXIsIHNpbmNlIGNvcmUgbWVtYmVycyBvZiB0aGUgR29vZ2xlIFRlc3QgcHJvamVjdCBo
YXZlIG5vIGFjY2VzcwotdG8gdGhlc2UgcGxhdGZvcm1zLCBHb29nbGUgVGVzdCBtYXkgaGF2ZSBv
dXRzdGFuZGluZyBpc3N1ZXMgdGhlcmUuICBJZgoteW91IG5vdGljZSBhbnkgcHJvYmxlbXMgb24g
eW91ciBwbGF0Zm9ybSwgcGxlYXNlIG5vdGlmeQotPGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xl
Z3JvdXBzLmNvbT4uIFBhdGNoZXMgZm9yIGZpeGluZyB0aGVtIGFyZQotZXZlbiBtb3JlIHdlbGNv
bWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMjCi0KLVRoZXNlIGFyZSB0aGUgYmFzZSBy
ZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29nbGUgVGVzdCBmcm9tIGEgc291cmNlCi1w
YWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotCi0gICogR05VLWNvbXBhdGlibGUgTWFrZSBv
ciBnbWFrZQotICAqIFBPU0lYLXN0YW5kYXJkIHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIg
RXhwcmVzc2lvbnMgKHJlZ2V4LmgpCi0gICogQSBDKys5OC1zdGFuZGFyZC1jb21wbGlhbnQgY29t
cGlsZXIKLQotIyMjIFdpbmRvd3MgUmVxdWlyZW1lbnRzICMjIwotCi0gICogTWljcm9zb2Z0IFZp
c3VhbCBDKysgdjcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2luIFJlcXVpcmVtZW50cyAjIyMKLQot
ICAqIEN5Z3dpbiB2MS41LjI1LTE0IG9yIG5ld2VyCi0KLSMjIyBNYWMgT1MgWCBSZXF1aXJlbWVu
dHMgIyMjCi0KLSAgKiBNYWMgT1MgWCB2MTAuNCBUaWdlciBvciBuZXdlcgotICAqIFhjb2RlIERl
dmVsb3BlciBUb29scwotCi0jIyMgUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMgIyMjCi0K
LVdlIHdlbGNvbWUgcGF0Y2hlcy4gIElmIHlvdSBwbGFuIHRvIGNvbnRyaWJ1dGUgYSBwYXRjaCwg
eW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBpdHMgb3duIHRlc3RzIGZyb20gYSBn
aXQgY2hlY2tvdXQgKGRlc2NyaWJlZAotYmVsb3cpLCB3aGljaCBoYXMgZnVydGhlciByZXF1aXJl
bWVudHM6Ci0KLSAgKiBbUHl0aG9uXShodHRwczovL3d3dy5weXRob24ub3JnLykgdjIuMyBvciBu
ZXdlciAoZm9yIHJ1bm5pbmcgc29tZSBvZgotICAgIHRoZSB0ZXN0cyBhbmQgcmUtZ2VuZXJhdGlu
ZyBjZXJ0YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRlcykKLSAgKiBbQ01ha2VdKGh0dHBz
Oi8vY21ha2Uub3JnLykgdjIuNi40IG9yIG5ld2VyCi0KLSMjIFJlZ2VuZXJhdGluZyBTb3VyY2Ug
RmlsZXMgIyMKLQotU29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJjZSBmaWxlcyBhcmUgZ2VuZXJh
dGVkIGZyb20gdGVtcGxhdGVzIChub3QKLWluIHRoZSBDKysgc2Vuc2UpIHVzaW5nIGEgc2NyaXB0
LgotRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR5
cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQotZ3Rlc3QtdHlwZS11dGlsLmggaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Zb3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCByZWdl
bmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcwotdW5sZXNzIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGVt
LiAgWW91IHdvdWxkIHRoZW4gbW9kaWZ5IHRoZQotY29ycmVzcG9uZGluZyBgLnB1bXBgIGZpbGVz
IGFuZCBydW4gdGhlICdbcHVtcC5weV0oZ29vZ2xldGVzdC9zY3JpcHRzL3B1bXAucHkpJwotZ2Vu
ZXJhdG9yIHNjcmlwdC4gIFNlZSB0aGUgW1B1bXAgTWFudWFsXShnb29nbGV0ZXN0L2RvY3MvUHVt
cE1hbnVhbC5tZCkuCi0KLSMjIyBDb250cmlidXRpbmcgQ29kZSAjIyMKLQotV2Ugd2VsY29tZSBw
YXRjaGVzLiAgUGxlYXNlIHJlYWQgdGhlCi1bRGV2ZWxvcGVyJ3MgR3VpZGVdKGdvb2dsZXRlc3Qv
ZG9jcy9EZXZHdWlkZS5tZCkKLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiBJbiBwYXJ0aWN1
bGFyLCBtYWtlIHN1cmUgeW91IGhhdmUgc2lnbmVkCi10aGUgQ29udHJpYnV0b3IgTGljZW5zZSBB
Z3JlZW1lbnQsIG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYWNjZXB0IHRoZQotcGF0Y2guCi0KLUhh
cHB5IHRlc3RpbmchCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvYXBwdmV5b3IueW1sIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2FwcHZleW9yLnltbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYxM2ZkNjAyNzgxMWRmODQyNzQzYThmMDIy
NzFiNWFmNTgzMjViZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvYXBwdmV5b3IueW1sCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotdmVyc2lv
bjogJ3tidWlsZH0nCi0KLW9zOiBWaXN1YWwgU3R1ZGlvIDIwMTUKLQotZW52aXJvbm1lbnQ6Ci0g
IG1hdHJpeDoKLSAgLSBUb29sc2V0OiB2MTQwCi0gIC0gVG9vbHNldDogdjEyMAotICAtIFRvb2xz
ZXQ6IHYxMTAKLSAgLSBUb29sc2V0OiB2MTAwCi0KLXBsYXRmb3JtOgotICAtIFdpbjMyCi0gIC0g
eDY0Ci0KLWNvbmZpZ3VyYXRpb246Ci0jICAtIFJlbGVhc2UKLSAgLSBEZWJ1ZwotCi1idWlsZDoK
LSAgdmVyYm9zaXR5OiBtaW5pbWFsCi0KLWFydGlmYWN0czoKLSAgLSBwYXRoOiAnX2J1aWxkL1Rl
c3RpbmcvVGVtcG9yYXJ5LyonCi0gICAgbmFtZTogdGVzdF9yZXN1bHRzCi0KLWJlZm9yZV9idWls
ZDoKLS0gcHM6IHwKLSAgICBXcml0ZS1PdXRwdXQgIkNvbmZpZ3VyYXRpb246ICRlbnY6Q09ORklH
VVJBVElPTiIKLSAgICBXcml0ZS1PdXRwdXQgIlBsYXRmb3JtOiAkZW52OlBMQVRGT1JNIgotICAg
ICRnZW5lcmF0b3IgPSBzd2l0Y2ggKCRlbnY6VE9PTFNFVCkKLSAgICB7Ci0gICAgICAgICJ2MTQw
IiB7IlZpc3VhbCBTdHVkaW8gMTQgMjAxNSJ9Ci0gICAgICAgICJ2MTIwIiB7IlZpc3VhbCBTdHVk
aW8gMTIgMjAxMyJ9Ci0gICAgICAgICJ2MTEwIiB7IlZpc3VhbCBTdHVkaW8gMTEgMjAxMiJ9Ci0g
ICAgICAgICJ2MTAwIiB7IlZpc3VhbCBTdHVkaW8gMTAgMjAxMCJ9Ci0gICAgfQotICAgIGlmICgk
ZW52OlBMQVRGT1JNIC1lcSAieDY0IikKLSAgICB7Ci0gICAgICAgICRnZW5lcmF0b3IgPSAiJGdl
bmVyYXRvciBXaW42NCIKLSAgICB9Ci0KLWJ1aWxkX3NjcmlwdDoKLS0gcHM6IHwKLSAgICBpZiAo
KCRlbnY6VE9PTFNFVCAtZXEgInYxMDAiKSAtYW5kICgkZW52OlBMQVRGT1JNIC1lcSAieDY0Iikp
Ci0gICAgewotICAgICAgICByZXR1cm4KLSAgICB9Ci0gICAgbWQgX2J1aWxkIC1Gb3JjZSB8IE91
dC1OdWxsCi0gICAgY2QgX2J1aWxkCi0KLSAgICAmIGNtYWtlIC1HICIkZ2VuZXJhdG9yIiAtRENN
QUtFX0NPTkZJR1VSQVRJT05fVFlQRVM9IkRlYnVnO1JlbGVhc2UiIC1EZ3Rlc3RfYnVpbGRfdGVz
dHM9T04gLURndGVzdF9idWlsZF9zYW1wbGVzPU9OIC1EZ21vY2tfYnVpbGRfdGVzdHM9T04gLi4K
LSAgICBpZiAoJExhc3RFeGl0Q29kZSAtbmUgMCkgewotICAgICAgICB0aHJvdyAiRXhlYzogJEVy
cm9yTWVzc2FnZSIKLSAgICB9Ci0gICAgJiBjbWFrZSAtLWJ1aWxkIC4gLS1jb25maWcgJGVudjpD
T05GSUdVUkFUSU9OCi0gICAgaWYgKCRMYXN0RXhpdENvZGUgLW5lIDApIHsKLSAgICAgICAgdGhy
b3cgIkV4ZWM6ICRFcnJvck1lc3NhZ2UiCi0gICAgfQotCi10ZXN0X3NjcmlwdDoKLS0gcHM6IHwK
LSAgICBpZiAoKCRlbnY6VG9vbHNldCAtZXEgInYxMDAiKSAtYW5kICgkZW52OlBMQVRGT1JNIC1l
cSAieDY0IikpCi0gICAgewotICAgICAgICByZXR1cm4KLSAgICB9Ci0KLSAgICAmIGN0ZXN0IC1D
ICRlbnY6Q09ORklHVVJBVElPTiAtLW91dHB1dC1vbi1mYWlsdXJlCi0gICAgaWYgKCRMYXN0RXhp
dENvZGUgLW5lIDApIHsKLSAgICAgICAgdGhyb3cgIkV4ZWM6ICRFcnJvck1lc3NhZ2UiCi0gICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ0hBTkdFUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NIQU5HRVMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2ZjJmNzYwZTM0MjQ3MTUyNjJlYzE0ZjMx
OGUxZGY5ZGFjOTA5YmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svQ0hBTkdFUworKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBA
Ci1DaGFuZ2VzIGZvciAxLjcuMDoKLQotKiBBbGwgbmV3IGltcHJvdmVtZW50cyBpbiBHb29nbGUg
VGVzdCAxLjcuMC4KLSogTmV3IGZlYXR1cmU6IG1hdGNoZXJzIERvdWJsZU5lYXIoKSwgRmxvYXRO
ZWFyKCksCi0gIE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoKSwgTmFuU2Vuc2l0aXZlRmxvYXROZWFy
KCksCi0gIFVub3JkZXJlZEVsZW1lbnRzQXJlKCksIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
KSwgV2hlblNvcnRlZCgpLAotICBXaGVuU29ydGVkQnkoKSwgSXNFbXB0eSgpLCBhbmQgU2l6ZUlz
KCkuCi0qIEltcHJvdmVtZW50OiBHb29nbGUgTW9jayBjYW4gbm93IGJlIGJ1aWx0IGFzIGEgRExM
LgotKiBJbXByb3ZlbWVudDogd2hlbiBjb21waWxlZCBieSBhIEMrKzExIGNvbXBpbGVyLCBtYXRj
aGVycyBBbGxPZigpCi0gIGFuZCBBbnlPZigpIGNhbiBhY2NlcHQgYW4gYXJiaXRyYXJ5IG51bWJl
ciBvZiBtYXRjaGVycy4KLSogSW1wcm92ZW1lbnQ6IHdoZW4gY29tcGlsZWQgYnkgYSBDKysxMSBj
b21waWxlciwgbWF0Y2hlcnMKLSAgRWxlbWVudHNBcmVBcnJheSgpIGNhbiBhY2NlcHQgYW4gaW5p
dGlhbGl6ZXIgbGlzdC4KLSogSW1wcm92ZW1lbnQ6IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxl
ZCwgYSBtb2NrIG1ldGhvZCB3aXRoIG5vCi0gIGRlZmF1bHQgYWN0aW9uIG5vdyB0aHJvd3MgaW5z
dGVhZCBjcmFzaGluZyB0aGUgdGVzdC4KLSogSW1wcm92ZW1lbnQ6IGFkZGVkIGNsYXNzIHRlc3Rp
bmc6OlN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgdG8gYWlkCi0gIGRlZmluaXRpb24gb2YgY29t
cG9zaXRlIG1hdGNoZXJzLgotKiBJbXByb3ZlbWVudDogZnVuY3Rpb24gcmV0dXJuIHR5cGVzIHVz
ZWQgaW4gTU9DS19NRVRIT0QqKCkgbWFjcm9zIGNhbgotICBub3cgY29udGFpbiB1bnByb3RlY3Rl
ZCBjb21tYXMuCi0qIEltcHJvdmVtZW50IChwb3RlbnRpYWxseSBicmVha2luZyk6IEVYUEVDVF9U
SEFUKCkgYW5kIEFTU0VSVF9USEFUKCkKLSAgYXJlIG5vdyBtb3JlIHN0cmljdCBpbiBlbnN1cmlu
ZyB0aGF0IHRoZSB2YWx1ZSB0eXBlIGFuZCB0aGUgbWF0Y2hlcgotICB0eXBlIGFyZSBjb21wYXRp
YmxlLCBjYXRjaGluZyBwb3RlbnRpYWwgYnVncyBpbiB0ZXN0cy4KLSogSW1wcm92ZW1lbnQ6IFBv
aW50ZWUoKSBub3cgd29ya3Mgb24gYW4gb3B0aW9uYWw8VD4uCi0qIEltcHJvdmVtZW50OiB0aGUg
RWxlbWVudHNBcmVBcnJheSgpIG1hdGNoZXIgY2FuIG5vdyB0YWtlIGEgdmVjdG9yIG9yCi0gIGl0
ZXJhdG9yIHJhbmdlIGFzIGlucHV0LCBhbmQgbWFrZXMgYSBjb3B5IG9mIGl0cyBpbnB1dCBlbGVt
ZW50cwotICBiZWZvcmUgdGhlIGNvbnZlcnNpb24gdG8gYSBNYXRjaGVyLgotKiBJbXByb3ZlbWVu
dDogdGhlIEdvb2dsZSBNb2NrIEdlbmVyYXRvciBjYW4gbm93IGdlbmVyYXRlIG1vY2tzIGZvcgot
ICBzb21lIGNsYXNzIHRlbXBsYXRlcy4KLSogQnVnIGZpeDogbW9jayBvYmplY3QgZGVzdHJ1Y3Rp
b24gdHJpZ2dlcnJlZCBieSBhbm90aGVyIG1vY2sgb2JqZWN0J3MKLSAgZGVzdHJ1Y3Rpb24gbm8g
bG9uZ2VyIGhhbmdzLgotKiBJbXByb3ZlbWVudDogR29vZ2xlIE1vY2sgRG9jdG9yIHdvcmtzIGJl
dHRlciB3aXRoIG5ld2VyIENsYW5nIGFuZAotICBHQ0Mgbm93LgotKiBDb21wYXRpYmlsaXR5IGZp
eGVzLgotKiBCdWcvd2FybmluZyBmaXhlcy4KLQotQ2hhbmdlcyBmb3IgMS42LjA6Ci0KLSogQ29t
cGlsYXRpb24gaXMgbXVjaCBmYXN0ZXIgYW5kIHVzZXMgbXVjaCBsZXNzIG1lbW9yeSwgZXNwZWNp
YWxseQotICB3aGVuIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiBhIG1vY2sgY2xh
c3MgYXJlIG1vdmVkIG91dCBvZgotICB0aGUgY2xhc3MgYm9keS4KLSogTmV3IG1hdGNoZXJzOiBQ
b2ludHdpc2UoKSwgRWFjaCgpLgotKiBOZXcgYWN0aW9uczogUmV0dXJuUG9pbnRlZSgpIGFuZCBS
ZXR1cm5SZWZPZkNvcHkoKS4KLSogQ01ha2Ugc3VwcG9ydC4KLSogUHJvamVjdCBmaWxlcyBmb3Ig
VmlzdWFsIFN0dWRpbyAyMDEwLgotKiBBbGxPZigpIGFuZCBBbnlPZigpIGNhbiBoYW5kbGUgdXAt
dG8gMTAgYXJndW1lbnRzIG5vdy4KLSogR29vZ2xlIE1vY2sgZG9jdG9yIHVuZGVyc3RhbmRzIENs
YW5nIGVycm9yIG1lc3NhZ2VzIG5vdy4KLSogU2V0QXJnUG9pbnRlZTw+IG5vdyBhY2NlcHRzIHN0
cmluZyBsaXRlcmFscy4KLSogZ21vY2tfZ2VuLnB5IGhhbmRsZXMgc3RvcmFnZSBzcGVjaWZpZXIg
bWFjcm9zIGFuZCB0ZW1wbGF0ZSByZXR1cm4KLSAgdHlwZXMgbm93LgotKiBDb21wYXRpYmlsaXR5
IGZpeGVzLgotKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLSogUG90
ZW50aWFsbHkgaW5jb21wYXRpYmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtl
IGluc3RhbGwnCi0gIGNvbW1hbmQgaW4gYXV0b3Rvb2xzLgotCi1Qb3RlbnRpYWxseSBicmVha2lu
ZyBjaGFuZ2VzOgotCi0qIFRoZSBkZXNjcmlwdGlvbiBzdHJpbmcgZm9yIE1BVENIRVIqKCkgY2hh
bmdlcyBmcm9tIFB5dGhvbi1zdHlsZQotICBpbnRlcnBvbGF0aW9uIHRvIGFuIG9yZGluYXJ5IEMr
KyBzdHJpbmcgZXhwcmVzc2lvbi4KLSogU2V0QXJndW1lbnRQb2ludGVlIGlzIGRlcHJlY2F0ZWQg
aW4gZmF2b3Igb2YgU2V0QXJnUG9pbnRlZS4KLSogU29tZSBub24tZXNzZW50aWFsIHByb2plY3Qg
ZmlsZXMgZm9yIFZpc3VhbCBTdHVkaW8gMjAwNSBhcmUgcmVtb3ZlZC4KLQotQ2hhbmdlcyBmb3Ig
MS41LjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiBHb29nbGUgTW9jayBjYW4gYmUgc2FmZWx5IHVzZWQg
aW4gbXVsdGktdGhyZWFkZWQgdGVzdHMKLSAgIG9uIHBsYXRmb3JtcyBoYXZpbmcgcHRocmVhZHMu
Ci0gKiBOZXcgZmVhdHVyZTogZnVuY3Rpb24gZm9yIHByaW50aW5nIGEgdmFsdWUgb2YgYXJiaXRy
YXJ5IHR5cGUuCi0gKiBOZXcgZmVhdHVyZTogZnVuY3Rpb24gRXhwbGFpbk1hdGNoUmVzdWx0KCkg
Zm9yIGVhc3kgZGVmaW5pdGlvbiBvZgotICAgY29tcG9zaXRlIG1hdGNoZXJzLgotICogVGhlIG5l
dyBtYXRjaGVyIEFQSSBsZXRzIHVzZXItZGVmaW5lZCBtYXRjaGVycyBnZW5lcmF0ZSBjdXN0b20K
LSAgIGV4cGxhbmF0aW9ucyBtb3JlIGRpcmVjdGx5IGFuZCBlZmZpY2llbnRseS4KLSAqIEJldHRl
ciBmYWlsdXJlIG1lc3NhZ2VzIGFsbCBhcm91bmQuCi0gKiBOb3ROdWxsKCkgYW5kIElzTnVsbCgp
IG5vdyB3b3JrIHdpdGggc21hcnQgcG9pbnRlcnMuCi0gKiBGaWVsZCgpIGFuZCBQcm9wZXJ0eSgp
IG5vdyB3b3JrIHdoZW4gdGhlIG1hdGNoZXIgYXJndW1lbnQgaXMgYSBwb2ludGVyCi0gICBwYXNz
ZWQgYnkgcmVmZXJlbmNlLgotICogUmVndWxhciBleHByZXNzaW9uIG1hdGNoZXJzIG9uIGFsbCBw
bGF0Zm9ybXMuCi0gKiBBZGRlZCBHQ0MgNC4wIHN1cHBvcnQgZm9yIEdvb2dsZSBNb2NrIERvY3Rv
ci4KLSAqIEFkZGVkIGdtb2NrX2FsbF90ZXN0LmNjIGZvciBjb21waWxpbmcgbW9zdCBHb29nbGUg
TW9jayB0ZXN0cwotICAgaW4gYSBzaW5nbGUgZmlsZS4KLSAqIFNpZ25pZmljYW50bHkgY2xlYW5l
ZCB1cCBjb21waWxlciB3YXJuaW5ncy4KLSAqIEJ1ZyBmaXhlcywgYmV0dGVyIHRlc3QgY292ZXJh
Z2UsIGFuZCBpbXBsZW1lbnRhdGlvbiBjbGVhbi11cHMuCi0KLSBQb3RlbnRpYWxseSBicmVha2lu
ZyBjaGFuZ2VzOgotCi0gKiBDdXN0b20gbWF0Y2hlcnMgZGVmaW5lZCB1c2luZyBNYXRjaGVySW50
ZXJmYWNlIG9yIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKQotICAgbmVlZCB0byBiZSB1cGRhdGVk
IGFmdGVyIHVwZ3JhZGluZyB0byBHb29nbGUgTW9jayAxLjUuMDsgbWF0Y2hlcnMgZGVmaW5lZAot
ICAgdXNpbmcgTUFUQ0hFUiBvciBNQVRDSEVSX1AqIGFyZW4ndCBhZmZlY3RlZC4KLSAqIERyb3Bw
ZWQgc3VwcG9ydCBmb3IgJ21ha2UgaW5zdGFsbCcuCi0KLUNoYW5nZXMgZm9yIDEuNC4wICh3ZSBz
a2lwcGVkIDEuMi4qIGFuZCAxLjMuKiB0byBtYXRjaCB0aGUgdmVyc2lvbiBvZgotR29vZ2xlIFRl
c3QpOgotCi0gKiBXb3JrcyBpbiBtb3JlIGVudmlyb25tZW50czogU3ltYmlhbiBhbmQgbWluR1cs
IFZpc3VhbCBDKysgNy4xLgotICogTGlnaHRlciB3ZWlnaHQ6IGNvbWVzIHdpdGggb3VyIG93biBp
bXBsZW1lbnRhdGlvbiBvZiBUUjEgdHVwbGUgKG5vCi0gICBtb3JlIGRlcGVuZGVuY3kgb24gQm9v
c3QhKS4KLSAqIE5ldyBmZWF0dXJlOiAtLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2NrcyBmb3IgZGV0
ZWN0aW5nIGxlYWtlZCBtb2Nrcy4KLSAqIE5ldyBmZWF0dXJlOiBBQ1RJT05fVEVNUExBVEUgZm9y
IGRlZmluaW5nIHRlbXBsYXRpemVkIGFjdGlvbnMuCi0gKiBOZXcgZmVhdHVyZTogdGhlIC5BZnRl
cigpIGNsYXVzZSBmb3Igc3BlY2lmeWluZyBleHBlY3RhdGlvbiBvcmRlci4KLSAqIE5ldyBmZWF0
dXJlOiB0aGUgLldpdGgoKSBjbGF1c2UgZm9yIGZvciBzcGVjaWZ5aW5nIGludGVyLWFyZ3VtZW50
Ci0gICBjb25zdHJhaW50cy4KLSAqIE5ldyBmZWF0dXJlOiBhY3Rpb25zIFJldHVybkFyZzxrPigp
LCBSZXR1cm5OZXc8VD4oLi4uKSwgYW5kCi0gICBEZWxldGVBcmc8az4oKS4KLSAqIE5ldyBmZWF0
dXJlOiBtYXRjaGVycyBLZXkoKSwgUGFpcigpLCBBcmdzPC4uLj4oKSwgQWxsQXJncygpLCBJc051
bGwoKSwKLSAgIGFuZCBDb250YWlucygpLgotICogTmV3IGZlYXR1cmU6IHV0aWxpdHkgY2xhc3Mg
TW9ja0Z1bmN0aW9uPEY+LCB1c2VmdWwgZm9yIGNoZWNrcG9pbnRzLCBldGMuCi0gKiBOZXcgZmVh
dHVyZTogZnVuY3Rpb25zIFZhbHVlKHgsIG0pIGFuZCBTYWZlTWF0Y2hlckNhc3Q8VD4obSkuCi0g
KiBOZXcgZmVhdHVyZTogY29weWluZyBhIG1vY2sgb2JqZWN0IGlzIHJlamVjdGVkIGF0IGNvbXBp
bGUgdGltZS4KLSAqIE5ldyBmZWF0dXJlOiBhIHNjcmlwdCBmb3IgZnVzaW5nIGFsbCBHb29nbGUg
TW9jayBhbmQgR29vZ2xlIFRlc3QKLSAgIHNvdXJjZSBmaWxlcyBmb3IgZWFzeSBkZXBsb3ltZW50
LgotICogSW1wcm92ZWQgdGhlIEdvb2dsZSBNb2NrIGRvY3RvciB0byBkaWFnbm9zZSBtb3JlIGRp
c2Vhc2VzLgotICogSW1wcm92ZWQgdGhlIEdvb2dsZSBNb2NrIGdlbmVyYXRvciBzY3JpcHQuCi0g
KiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBNYWMgT1MgWCBhbmQgZ2NjLgotICogQnVnIGZpeGVz
IGFuZCBpbXBsZW1lbnRhdGlvbiBjbGVhbi11cHMuCi0KLUNoYW5nZXMgZm9yIDEuMS4wOgotCi0g
KiBOZXcgZmVhdHVyZTogYWJpbGl0eSB0byB1c2UgR29vZ2xlIE1vY2sgd2l0aCBhbnkgdGVzdGlu
ZyBmcmFtZXdvcmsuCi0gKiBOZXcgZmVhdHVyZTogbWFjcm9zIGZvciBlYXNpbHkgZGVmaW5pbmcg
bmV3IG1hdGNoZXJzCi0gKiBOZXcgZmVhdHVyZTogbWFjcm9zIGZvciBlYXNpbHkgZGVmaW5pbmcg
bmV3IGFjdGlvbnMuCi0gKiBOZXcgZmVhdHVyZTogbW9yZSBjb250YWluZXIgbWF0Y2hlcnMuCi0g
KiBOZXcgZmVhdHVyZTogYWN0aW9ucyBmb3IgYWNjZXNzaW5nIGZ1bmN0aW9uIGFyZ3VtZW50cyBh
bmQgdGhyb3dpbmcKLSAgIGV4Y2VwdGlvbnMuCi0gKiBJbXByb3ZlZCB0aGUgR29vZ2xlIE1vY2sg
ZG9jdG9yIHNjcmlwdCBmb3IgZGlhZ25vc2luZyBjb21waWxlciBlcnJvcnMuCi0gKiBCdWcgZml4
ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLQotQ2hhbmdlcyBmb3IgMS4wLjA6Ci0K
LSAqIEluaXRpYWwgT3BlbiBTb3VyY2UgcmVsZWFzZSBvZiBHb29nbGUgTW9jawpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiOTZhNGJmNjk4NGZhYmRkYjAyZWFi
NzY3ZGMwODNjNDEwZTk4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIw
MiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ01ha2UgYnVpbGQgc2NyaXB0IGZvciBHb29n
bGUgTW9jay4KLSMKLSMgVG8gcnVuIHRoZSB0ZXN0cyBmb3IgR29vZ2xlIE1vY2sgaXRzZWxmIG9u
IExpbnV4LCB1c2UgJ21ha2UgdGVzdCcgb3IKLSMgY3Rlc3QuICBZb3UgY2FuIHNlbGVjdCB3aGlj
aCB0ZXN0cyB0byBydW4gdXNpbmcgJ2N0ZXN0IC1SIHJlZ2V4Jy4KLSMgRm9yIG1vcmUgb3B0aW9u
cywgcnVuICdjdGVzdCAtLWhlbHAnLgotCi0jIEJVSUxEX1NIQVJFRF9MSUJTIGlzIGEgc3RhbmRh
cmQgQ01ha2UgdmFyaWFibGUsIGJ1dCB3ZSBkZWNsYXJlIGl0IGhlcmUgdG8KLSMgbWFrZSBpdCBw
cm9taW5lbnQgaW4gdGhlIEdVSS4KLW9wdGlvbihCVUlMRF9TSEFSRURfTElCUyAiQnVpbGQgc2hh
cmVkIGxpYnJhcmllcyAoRExMcykuIiBPRkYpCi0KLW9wdGlvbihnbW9ja19idWlsZF90ZXN0cyAi
QnVpbGQgYWxsIG9mIEdvb2dsZSBNb2NrJ3Mgb3duIHRlc3RzLiIgT0ZGKQotCi0jIEEgZGlyZWN0
b3J5IHRvIGZpbmQgR29vZ2xlIFRlc3Qgc291cmNlcy4KLWlmIChFWElTVFMgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9ndGVzdC9DTWFrZUxpc3RzLnR4dCIpCi0gIHNldChndGVzdF9kaXIg
Z3Rlc3QpCi1lbHNlKCkKLSAgc2V0KGd0ZXN0X2RpciAuLi9nb29nbGV0ZXN0KQotZW5kaWYoKQot
Ci0jIERlZmluZXMgcHJlX3Byb2plY3Rfc2V0X3VwX2hlcm1ldGljX2J1aWxkKCkgYW5kIHNldF91
cF9oZXJtZXRpY19idWlsZCgpLgotaW5jbHVkZSgiJHtndGVzdF9kaXJ9L2NtYWtlL2hlcm1ldGlj
X2J1aWxkLmNtYWtlIiBPUFRJT05BTCkKLQotaWYgKENPTU1BTkQgcHJlX3Byb2plY3Rfc2V0X3Vw
X2hlcm1ldGljX2J1aWxkKQotICAjIEdvb2dsZSBUZXN0IGFsc28gY2FsbHMgaGVybWV0aWMgc2V0
dXAgZnVuY3Rpb25zIGZyb20gYWRkX3N1YmRpcmVjdG9yeSwKLSAgIyBhbHRob3VnaCBpdHMgY2hh
bmdlcyB3aWxsIG5vdCBhZmZlY3QgdGhpbmdzIGF0IHRoZSBjdXJyZW50IHNjb3BlLgotICBwcmVf
cHJvamVjdF9zZXRfdXBfaGVybWV0aWNfYnVpbGQoKQotZW5kaWYoKQotCi0jIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKLSMKLSMgUHJvamVjdC13aWRlIHNldHRpbmdzCi0KLSMgTmFtZSBvZiB0aGUgcHJvamVjdC4K
LSMKLSMgQ01ha2UgZmlsZXMgaW4gdGhpcyBwcm9qZWN0IGNhbiByZWZlciB0byB0aGUgcm9vdCBz
b3VyY2UgZGlyZWN0b3J5Ci0jIGFzICR7Z21vY2tfU09VUkNFX0RJUn0gYW5kIHRvIHRoZSByb290
IGJpbmFyeSBkaXJlY3RvcnkgYXMKLSMgJHtnbW9ja19CSU5BUllfRElSfS4KLSMgTGFuZ3VhZ2Ug
IkMiIGlzIHJlcXVpcmVkIGZvciBmaW5kX3BhY2thZ2UoVGhyZWFkcykuCi1wcm9qZWN0KGdtb2Nr
IENYWCBDKQotY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuNi40KQotCi1pZiAoQ09N
TUFORCBzZXRfdXBfaGVybWV0aWNfYnVpbGQpCi0gIHNldF91cF9oZXJtZXRpY19idWlsZCgpCi1l
bmRpZigpCi0KLSMgSW5zdHJ1Y3RzIENNYWtlIHRvIHByb2Nlc3MgR29vZ2xlIFRlc3QncyBDTWFr
ZUxpc3RzLnR4dCBhbmQgYWRkIGl0cwotIyB0YXJnZXRzIHRvIHRoZSBjdXJyZW50IHNjb3BlLiAg
V2UgYXJlIHBsYWNpbmcgR29vZ2xlIFRlc3QncyBiaW5hcnkKLSMgZGlyZWN0b3J5IGluIGEgc3Vi
ZGlyZWN0b3J5IG9mIG91ciBvd24gYXMgVkMgY29tcGlsYXRpb24gbWF5IGJyZWFrCi0jIGlmIHRo
ZXkgYXJlIHRoZSBzYW1lICh0aGUgZGVmYXVsdCkuCi1hZGRfc3ViZGlyZWN0b3J5KCIke2d0ZXN0
X2Rpcn0iICIke2dtb2NrX0JJTkFSWV9ESVJ9L2d0ZXN0IikKLQotIyBBbHRob3VnaCBHb29nbGUg
VGVzdCdzIENNYWtlTGlzdHMudHh0IGNhbGxzIHRoaXMgZnVuY3Rpb24sIHRoZQotIyBjaGFuZ2Vz
IHRoZXJlIGRvbid0IGFmZmVjdCB0aGUgY3VycmVudCBzY29wZS4gIFRoZXJlZm9yZSB3ZSBoYXZl
IHRvCi0jIGNhbGwgaXQgYWdhaW4gaGVyZS4KLWNvbmZpZ19jb21waWxlcl9hbmRfbGlua2VyKCkg
ICMgZnJvbSAke2d0ZXN0X2Rpcn0vY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKLQotIyBBZGRz
IEdvb2dsZSBNb2NrJ3MgYW5kIEdvb2dsZSBUZXN0J3MgaGVhZGVyIGRpcmVjdG9yaWVzIHRvIHRo
ZSBzZWFyY2ggcGF0aC4KLWluY2x1ZGVfZGlyZWN0b3JpZXMoIiR7Z21vY2tfU09VUkNFX0RJUn0v
aW5jbHVkZSIKLSAgICAgICAgICAgICAgICAgICAgIiR7Z21vY2tfU09VUkNFX0RJUn0iCi0gICAg
ICAgICAgICAgICAgICAgICIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUiCi0gICAgICAgICAg
ICAgICAgICAgICMgVGhpcyBkaXJlY3RvcnkgaXMgbmVlZGVkIHRvIGJ1aWxkIGRpcmVjdGx5IGZy
b20gR29vZ2xlCi0gICAgICAgICAgICAgICAgICAgICMgVGVzdCBzb3VyY2VzLgotICAgICAgICAg
ICAgICAgICAgICAiJHtndGVzdF9TT1VSQ0VfRElSfSIpCi0KLSMgU3VtbWFyeSBvZiB0dXBsZSBz
dXBwb3J0IGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbzoKLSMgQ29tcGlsZXIgICAgdmVyc2lv
bihNUykgIHZlcnNpb24oY21ha2UpICBTdXBwb3J0Ci0jIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0t
ICAtLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgPD0gVlMg
MjAxMCAgPD0gMTAgICAgICAgIDw9IDE2MDAgICAgICAgICBVc2UgR29vZ2xlIFRlc3RzJ3Mgb3du
IHR1cGxlLgotIyBWUyAyMDEyICAgICAxMSAgICAgICAgICAgMTcwMCAgICAgICAgICAgIHN0ZDo6
dHIxOjp0dXBsZSArIF9WQVJJQURJQ19NQVg9MTAKLSMgVlMgMjAxMyAgICAgMTIgICAgICAgICAg
IDE4MDAgICAgICAgICAgICBzdGQ6OnRyMTo6dHVwbGUKLWlmIChNU1ZDIEFORCBNU1ZDX1ZFUlNJ
T04gRVFVQUwgMTcwMCkKLSAgYWRkX2RlZmluaXRpb25zKC9EIF9WQVJJQURJQ19NQVg9MTApCi1l
bmRpZigpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBEZWZpbmVzIHRoZSBnbW9jayAmIGdtb2Nr
X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91bGQgbGluawotIyB3aXRoIG9uZSBvZiB0
aGVtLgotCi0jIEdvb2dsZSBNb2NrIGxpYnJhcmllcy4gIFdlIGJ1aWxkIHRoZW0gdXNpbmcgbW9y
ZSBzdHJpY3Qgd2FybmluZ3MgdGhhbiB3aGF0Ci0jIGFyZSB1c2VkIGZvciBvdGhlciB0YXJnZXRz
LCB0byBlbnN1cmUgdGhhdCBHb29nbGUgTW9jayBjYW4gYmUgY29tcGlsZWQgYnkKLSMgYSB1c2Vy
IGFnZ3Jlc3NpdmUgYWJvdXQgd2FybmluZ3MuCi1jeHhfbGlicmFyeShnbW9jawotICAgICAgICAg
ICAgIiR7Y3h4X3N0cmljdH0iCi0gICAgICAgICAgICAiJHtndGVzdF9kaXJ9L3NyYy9ndGVzdC1h
bGwuY2MiCi0gICAgICAgICAgICBzcmMvZ21vY2stYWxsLmNjKQotCi1jeHhfbGlicmFyeShnbW9j
a19tYWluCi0gICAgICAgICAgICAiJHtjeHhfc3RyaWN0fSIKLSAgICAgICAgICAgICIke2d0ZXN0
X2Rpcn0vc3JjL2d0ZXN0LWFsbC5jYyIKLSAgICAgICAgICAgIHNyYy9nbW9jay1hbGwuY2MKLSAg
ICAgICAgICAgIHNyYy9nbW9ja19tYWluLmNjKQotCi0jIElmIHRoZSBDTWFrZSB2ZXJzaW9uIHN1
cHBvcnRzIGl0LCBhdHRhY2ggaGVhZGVyIGRpcmVjdG9yeSBpbmZvcm1hdGlvbgotIyB0byB0aGUg
dGFyZ2V0cyBmb3Igd2hlbiB3ZSBhcmUgcGFydCBvZiBhIHBhcmVudCBidWlsZCAoaWUgYmVpbmcg
cHVsbGVkCi0jIGluIHZpYSBhZGRfc3ViZGlyZWN0b3J5KCkgcmF0aGVyIHRoYW4gYmVpbmcgYSBz
dGFuZGFsb25lIGJ1aWxkKS4KLWlmIChERUZJTkVEIENNQUtFX1ZFUlNJT04gQU5EIE5PVCAiJHtD
TUFLRV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICIyLjguMTEiKQotICB0YXJnZXRfaW5jbHVkZV9k
aXJlY3RvcmllcyhnbW9jayAgICAgIElOVEVSRkFDRSAiJHtnbW9ja19TT1VSQ0VfRElSfS9pbmNs
dWRlIikKLSAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ21vY2tfbWFpbiBJTlRFUkZBQ0Ug
IiR7Z21vY2tfU09VUkNFX0RJUn0vaW5jbHVkZSIpCi1lbmRpZigpCi0KLSMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwotIwotIyBJbnN0YWxsIHJ1bGVzCi1pbnN0YWxsKFRBUkdFVFMgZ21vY2sgZ21vY2tfbWFpbgot
ICBERVNUSU5BVElPTiBsaWIpCi1pbnN0YWxsKERJUkVDVE9SWSAke2dtb2NrX1NPVVJDRV9ESVJ9
L2luY2x1ZGUvZ21vY2sKLSAgREVTVElOQVRJT04gaW5jbHVkZSkKLQotIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Ci0jCi0jIEdvb2dsZSBNb2NrJ3Mgb3duIHRlc3RzLgotIwotIyBZb3UgY2FuIHNraXAgdGhpcyBz
ZWN0aW9uIGlmIHlvdSBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0ZXN0aW5nCi0jIEdvb2dsZSBNb2Nr
IGl0c2VsZi4KLSMKLSMgVGhlIHRlc3RzIGFyZSBub3QgYnVpbHQgYnkgZGVmYXVsdC4gIFRvIGJ1
aWxkIHRoZW0sIHNldCB0aGUKLSMgZ21vY2tfYnVpbGRfdGVzdHMgb3B0aW9uIHRvIE9OLiAgWW91
IGNhbiBkbyBpdCBieSBydW5uaW5nIGNjbWFrZQotIyBvciBzcGVjaWZ5aW5nIHRoZSAtRGdtb2Nr
X2J1aWxkX3Rlc3RzPU9OIGZsYWcgd2hlbiBydW5uaW5nIGNtYWtlLgotCi1pZiAoZ21vY2tfYnVp
bGRfdGVzdHMpCi0gICMgVGhpcyBtdXN0IGJlIHNldCBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgZm9y
IHRoZSB0ZXN0cyB0byBiZSBydW4gYnkKLSAgIyAnbWFrZSB0ZXN0JyBvciBjdGVzdC4KLSAgZW5h
YmxlX3Rlc3RpbmcoKQotCi0gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAjIEMrKyB0ZXN0cyBidWlsdCB3aXRoIHN0YW5kYXJk
IGNvbXBpbGVyIGZsYWdzLgotCi0gIGN4eF90ZXN0KGdtb2NrLWFjdGlvbnNfdGVzdCBnbW9ja19t
YWluKQotICBjeHhfdGVzdChnbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3QgZ21vY2tfbWFpbikKLSAg
Y3h4X3Rlc3QoZ21vY2tfZXhfdGVzdCBnbW9ja19tYWluKQotICBjeHhfdGVzdChnbW9jay1nZW5l
cmF0ZWQtYWN0aW9uc190ZXN0IGdtb2NrX21haW4pCi0gIGN4eF90ZXN0KGdtb2NrLWdlbmVyYXRl
ZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QgZ21vY2tfbWFpbikKLSAgY3h4X3Rlc3QoZ21vY2stZ2Vu
ZXJhdGVkLWludGVybmFsLXV0aWxzX3Rlc3QgZ21vY2tfbWFpbikKLSAgY3h4X3Rlc3QoZ21vY2st
Z2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QgZ21vY2tfbWFpbikKLSAgY3h4X3Rlc3QoZ21vY2staW50
ZXJuYWwtdXRpbHNfdGVzdCBnbW9ja19tYWluKQotICBjeHhfdGVzdChnbW9jay1tYXRjaGVyc190
ZXN0IGdtb2NrX21haW4pCi0gIGN4eF90ZXN0KGdtb2NrLW1vcmUtYWN0aW9uc190ZXN0IGdtb2Nr
X21haW4pCi0gIGN4eF90ZXN0KGdtb2NrLW5pY2Utc3RyaWN0X3Rlc3QgZ21vY2tfbWFpbikKLSAg
Y3h4X3Rlc3QoZ21vY2stcG9ydF90ZXN0IGdtb2NrX21haW4pCi0gIGN4eF90ZXN0KGdtb2NrLXNw
ZWMtYnVpbGRlcnNfdGVzdCBnbW9ja19tYWluKQotICBjeHhfdGVzdChnbW9ja19saW5rX3Rlc3Qg
Z21vY2tfbWFpbiB0ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MpCi0gIGN4eF90ZXN0KGdtb2NrX3Rl
c3QgZ21vY2tfbWFpbikKLQotICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpCi0gICAgY3h4
X3Rlc3QoZ21vY2tfc3RyZXNzX3Rlc3QgZ21vY2spCi0gIGVuZGlmKCkKLQotICAjIGdtb2NrX2Fs
bF90ZXN0IGlzIGNvbW1lbnRlZCB0byBzYXZlIHRpbWUgYnVpbGRpbmcgYW5kIHJ1bm5pbmcgdGVz
dHMuCi0gICMgVW5jb21tZW50IGlmIG5lY2Vzc2FyeS4KLSAgIyBjeHhfdGVzdChnbW9ja19hbGxf
dGVzdCBnbW9ja19tYWluKQotCi0gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAjIEMrKyB0ZXN0cyBidWlsdCB3aXRoIG5vbi1z
dGFuZGFyZCBjb21waWxlciBmbGFncy4KLQotICBjeHhfbGlicmFyeShnbW9ja19tYWluX25vX2V4
Y2VwdGlvbiAiJHtjeHhfbm9fZXhjZXB0aW9ufSIKLSAgICAiJHtndGVzdF9kaXJ9L3NyYy9ndGVz
dC1hbGwuY2MiIHNyYy9nbW9jay1hbGwuY2Mgc3JjL2dtb2NrX21haW4uY2MpCi0KLSAgY3h4X2xp
YnJhcnkoZ21vY2tfbWFpbl9ub19ydHRpICIke2N4eF9ub19ydHRpfSIKLSAgICAiJHtndGVzdF9k
aXJ9L3NyYy9ndGVzdC1hbGwuY2MiIHNyYy9nbW9jay1hbGwuY2Mgc3JjL2dtb2NrX21haW4uY2Mp
Ci0KLSAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lPTiBMRVNTIDE2MDApICAjIDE2MDAgaXMg
VmlzdWFsIFN0dWRpbyAyMDEwLgotICAgICMgVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQg
MjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0Ci0gICAgIyBjb25mbGljdCB3aXRo
IG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMg
bm90Ci0gICAgIyB3b3JrIG9uIHRob3NlIGNvbXBpbGVycy4KLSAgICBjeHhfbGlicmFyeShnbW9j
a19tYWluX3VzZV9vd25fdHVwbGUgIiR7Y3h4X3VzZV9vd25fdHVwbGV9IgotICAgICAgIiR7Z3Rl
c3RfZGlyfS9zcmMvZ3Rlc3QtYWxsLmNjIiBzcmMvZ21vY2stYWxsLmNjIHNyYy9nbW9ja19tYWlu
LmNjKQotCi0gICAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhnbW9ja191c2Vfb3duX3R1cGxlX3Rlc3Qg
IiR7Y3h4X3VzZV9vd25fdHVwbGV9IgotICAgICAgZ21vY2tfbWFpbl91c2Vfb3duX3R1cGxlIHRl
c3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjKQotICBlbmRpZigpCi0KLSAgY3h4X3Rlc3Rf
d2l0aF9mbGFncyhnbW9jay1tb3JlLWFjdGlvbnNfbm9fZXhjZXB0aW9uX3Rlc3QgIiR7Y3h4X25v
X2V4Y2VwdGlvbn0iCi0gICAgZ21vY2tfbWFpbl9ub19leGNlcHRpb24gdGVzdC9nbW9jay1tb3Jl
LWFjdGlvbnNfdGVzdC5jYykKLQotICBjeHhfdGVzdF93aXRoX2ZsYWdzKGdtb2NrX25vX3J0dGlf
dGVzdCAiJHtjeHhfbm9fcnR0aX0iCi0gICAgZ21vY2tfbWFpbl9ub19ydHRpIHRlc3QvZ21vY2st
c3BlYy1idWlsZGVyc190ZXN0LmNjKQotCi0gIGN4eF9zaGFyZWRfbGlicmFyeShzaGFyZWRfZ21v
Y2tfbWFpbiAiJHtjeHhfZGVmYXVsdH0iCi0gICAgIiR7Z3Rlc3RfZGlyfS9zcmMvZ3Rlc3QtYWxs
LmNjIiBzcmMvZ21vY2stYWxsLmNjIHNyYy9nbW9ja19tYWluLmNjKQotCi0gICMgVGVzdHMgdGhh
dCBhIGJpbmFyeSBjYW4gYmUgYnVpbHQgd2l0aCBHb29nbGUgTW9jayBhcyBhIHNoYXJlZCBsaWJy
YXJ5LiAgT24KLSAgIyBzb21lIHN5c3RlbSBjb25maWd1cmF0aW9ucywgaXQgbWF5IG5vdCBwb3Nz
aWJsZSB0byBydW4gdGhlIGJpbmFyeSB3aXRob3V0Ci0gICMga25vd2luZyBtb3JlIGRldGFpbHMg
YWJvdXQgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gV2UgZG8gbm90IHRyeSB0byBydW4KLSAg
IyB0aGlzIGJpbmFyeS4gVG8gZ2V0IGEgbW9yZSByb2J1c3Qgc2hhcmVkIGxpYnJhcnkgY292ZXJh
Z2UsIGNvbmZpZ3VyZSB3aXRoCi0gICMgLURCVUlMRF9TSEFSRURfTElCUz1PTi4KLSAgY3h4X2V4
ZWN1dGFibGVfd2l0aF9mbGFncyhzaGFyZWRfZ21vY2tfdGVzdF8gIiR7Y3h4X2RlZmF1bHR9Igot
ICAgIHNoYXJlZF9nbW9ja19tYWluIHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjKQot
ICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoc2hhcmVkX2dtb2NrX3Rlc3RfCi0gICAgUFJPUEVSVElF
UwotICAgIENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFS
WT0xIikKLQotICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKLSAgIyBQeXRob24gdGVzdHMuCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ21v
Y2tfbGVha190ZXN0XyB0ZXN0IGdtb2NrX21haW4pCi0gIHB5X3Rlc3QoZ21vY2tfbGVha190ZXN0
KQotCi0gIGN4eF9leGVjdXRhYmxlKGdtb2NrX291dHB1dF90ZXN0XyB0ZXN0IGdtb2NrKQotICBw
eV90ZXN0KGdtb2NrX291dHB1dF90ZXN0KQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svQ09OVFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ09OVFJJQlVUT1JTCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2ZTlhZTM2MmI2MGMzODRjNzQzY2Q2NTQ5MDNlYzI4N2ZiNmEyNzBj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL0NPTlRSSUJVVE9SUworKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLSMgVGhpcyBm
aWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUgd2hvJ3ZlIG1hZGUgbm9uLXRyaXZpYWwKLSMg
Y29udHJpYnV0aW9uIHRvIHRoZSBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrIHByb2plY3Qu
ICBQZW9wbGUKLSMgd2hvIGNvbW1pdCBjb2RlIHRvIHRoZSBwcm9qZWN0IGFyZSBlbmNvdXJhZ2Vk
IHRvIGFkZCB0aGVpciBuYW1lcwotIyBoZXJlLiAgUGxlYXNlIGtlZXAgdGhlIGxpc3Qgc29ydGVk
IGJ5IGZpcnN0IG5hbWVzLgotCi1CZW5vaXQgU2lnb3VyZSA8dHN1bmFAZ29vZ2xlLmNvbT4KLUJv
Z2RhbiBQaWxvY2EgPGJvb0Bnb29nbGUuY29tPgotQ2hhbmRsZXIgQ2FycnV0aCA8Y2hhbmRsZXJj
QGdvb2dsZS5jb20+Ci1EYXZlIE1hY0xhY2hsYW4gPGRtYWNsYWNoQGdtYWlsLmNvbT4KLURhdmlk
IEFuZGVyc29uIDxkYW5kZXJzb25AZ29vZ2xlLmNvbT4KLURlYW4gU3R1cnRldmFudAotR2VuZSBW
b2xvdmljaCA8Z3ZAY2l0ZS5jb20+Ci1IYWwgQnVyY2ggPGdtb2NrQGhidXJjaC5jb20+Ci1KZWZm
cmV5IFlhc3NraW4gPGp5YXNza2luQGdvb2dsZS5jb20+Ci1KaW0gS2VsbGVyIDxqaW1rZWxsZXJA
Z29vZ2xlLmNvbT4KLUpvZSBXYWxuZXMgPGpvZUB0cnVlbWVzaC5jb20+Ci1Kb24gV3JheSA8andy
YXlAZ29vZ2xlLmNvbT4KLUtlaXIgTWllcmxlIDxtaWVybGVAZ21haWwuY29tPgotS2VpdGggUmF5
IDxrZWl0aC5yYXlAZ21haWwuY29tPgotS29zdHlhIFNlcmVicnlhbnkgPGtjY0Bnb29nbGUuY29t
PgotTGV2IE1ha2hsaXMKLU1hbnVlbCBLbGltZWsgPGtsaW1la0Bnb29nbGUuY29tPgotTWFyaW8g
VGFuZXYgPHJhZGl4QGdvb2dsZS5jb20+Ci1NYXJrIFBhc2tpbgotTWFya3VzIEhldWxlIDxtYXJr
dXMuaGV1bGVAZ21haWwuY29tPgotTWF0dGhldyBTaW1tb25zIDxzaW1tb25tdEBhY20ub3JnPgot
TWlrZSBCbGFuZCA8bWJsYW5kQGdvb2dsZS5jb20+Ci1OZWFsIE5vcndpdHogPG5ub3J3aXR6QGdt
YWlsLmNvbT4KLU5lcm1pbiBPemtpcmFuYXJ0bGkgPG5lcm1pbkBnb29nbGUuY29tPgotT3dlbiBD
YXJsc2VuIDxvY2FybHNlbkBnb29nbGUuY29tPgotUGFuZWVuZHJhIEJhIDxwYW5lZW5kcmFAZ29v
Z2xlLmNvbT4KLVBhdWwgTWVuYWdlIDxtZW5hZ2VAZ29vZ2xlLmNvbT4KLVBpb3RyIEthbWluc2tp
IDxwaW90cmtAZ29vZ2xlLmNvbT4KLVJ1c3MgUnVmZXIgPHJ1c3NAcGVudGFkLmNvbT4KLVN2ZXJy
ZSBTdW5kc2RhbCA8c3VuZHNkYWxAZ21haWwuY29tPgotVGFrZXNoaSBZb3NoaW5vIDx0eW9zaGlu
b0Bnb29nbGUuY29tPgotVmFkaW0gQmVybWFuIDx2YWRpbWJAZ29vZ2xlLmNvbT4KLVZsYWQgTG9z
ZXYgPHZsYWRsQGdvb2dsZS5jb20+Ci1Xb2xmZ2FuZyBLbGllciA8d2tsaWVyQGdvb2dsZS5jb20+
Ci1aaGFueW9uZyBXYW4gPHdhbkBnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
TElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE5NDFhMTFmOGNlOTQzODkxNjBiNDU4OTI3YTI5YmEyMTc1NDI4MTguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svTElDRU5TRQor
KysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6
Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmli
dXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1E
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZGJjNTE2M2RkNzE5MWExNGE4ODdhMzg0
ZmI1ZDZkMjk1NmI0NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAs
MCBAQAotIyBBdXRvbWFrZSBmaWxlCi0KLSMgTm9uc3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3Ig
ZGlzdHJpYnV0aW9uLgotRVhUUkFfRElTVCA9IExJQ0VOU0UKLQotIyBXZSBtYXkgbmVlZCB0byBi
dWlsZCBvdXIgaW50ZXJuYWxseSBwYWNrYWdlZCBndGVzdC4gSWYgc28sIGl0IHdpbGwgYmUKLSMg
aW5jbHVkZWQgaW4gdGhlICdzdWJkaXJzJyB2YXJpYWJsZS4KLVNVQkRJUlMgPSAkKHN1YmRpcnMp
Ci0KLSMgVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIGNsZWFu
IGl0IGZvciBkaXN0cmlidXRpb24uCi1ESVNUQ0xFQU5GSUxFUyA9IHNjcmlwdHMvZ21vY2stY29u
ZmlnCi0KLSMgV2UgZGVmaW5lIHRoZSBnbG9iYWwgQU1fQ1BQRkxBR1MgYXMgZXZlcnl0aGluZyB3
ZSBjb21waWxlIGluY2x1ZGVzIGZyb20gdGhlc2UKLSMgZGlyZWN0b3JpZXMuCi1BTV9DUFBGTEFH
UyA9ICQoR1RFU1RfQ1BQRkxBR1MpIC1JJChzcmNkaXIpL2luY2x1ZGUKLQotIyBNb2RpZmllcyBj
b21waWxlciBhbmQgbGlua2VyIGZsYWdzIGZvciBwdGhyZWFkcyBjb21wYXRpYmlsaXR5LgotaWYg
SEFWRV9QVEhSRUFEUwotICBBTV9DWFhGTEFHUyA9IEBQVEhSRUFEX0NGTEFHU0AgLURHVEVTVF9I
QVNfUFRIUkVBRD0xCi0gIEFNX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAotZW5kaWYKLQotIyBCdWls
ZCBydWxlcyBmb3IgbGlicmFyaWVzLgotbGliX0xUTElCUkFSSUVTID0gbGliL2xpYmdtb2NrLmxh
IGxpYi9saWJnbW9ja19tYWluLmxhCi0KLWxpYl9saWJnbW9ja19sYV9TT1VSQ0VTID0gc3JjL2dt
b2NrLWFsbC5jYwotCi1wa2dpbmNsdWRlX0hFQURFUlMgPSBcCi0gIGluY2x1ZGUvZ21vY2svZ21v
Y2stYWN0aW9ucy5oIFwKLSAgaW5jbHVkZS9nbW9jay9nbW9jay1jYXJkaW5hbGl0aWVzLmggXAot
ICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmggXAotICBpbmNsdWRlL2dt
b2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmggXAotICBpbmNsdWRlL2dtb2Nr
L2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIFwKLSAgaW5jbHVkZS9nbW9jay9nbW9jay1nZW5l
cmF0ZWQtbmljZS1zdHJpY3QuaCBcCi0gIGluY2x1ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMuaCBc
Ci0gIGluY2x1ZGUvZ21vY2svZ21vY2stbW9yZS1hY3Rpb25zLmggXAotICBpbmNsdWRlL2dtb2Nr
L2dtb2NrLW1vcmUtbWF0Y2hlcnMuaCBcCi0gIGluY2x1ZGUvZ21vY2svZ21vY2stc3BlYy1idWls
ZGVycy5oIFwKLSAgaW5jbHVkZS9nbW9jay9nbW9jay5oCi0KLXBrZ2luY2x1ZGVfaW50ZXJuYWxk
aXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFsCi1wa2dpbmNsdWRlX2ludGVybmFsX0hFQURF
UlMgPSBcCi0gIGluY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFs
LXV0aWxzLmggXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxz
LmggXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCBcCi0gIGluY2x1ZGUv
Z21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmggXAotICBpbmNs
dWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5oIFwKLSAgaW5jbHVkZS9n
bW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stcG9ydC5oCi0KLWxpYl9saWJnbW9ja19tYWluX2xh
X1NPVVJDRVMgPSBzcmMvZ21vY2tfbWFpbi5jYwotbGliX2xpYmdtb2NrX21haW5fbGFfTElCQURE
ID0gbGliL2xpYmdtb2NrLmxhCi0KLSMgQnVpbGQgcnVsZXMgZm9yIHRlc3RzLiBBdXRvbWFrZSdz
IG5hbWluZyBmb3Igc29tZSBvZiB0aGVzZSB2YXJpYWJsZXMgaXNuJ3QKLSMgdGVycmlibHkgb2J2
aW91cywgc28gdGhpcyBpcyBhIGJyaWVmIHJlZmVyZW5jZToKLSMKLSMgVEVTVFMgLS0gUHJvZ3Jh
bXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2UgY2hlY2siCi0jIGNoZWNrX1BST0dSQU1TIC0t
IFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNrIiBidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bgot
Ci1URVNUUz0KLWNoZWNrX1BST0dSQU1TPQotQU1fTERGTEFHUyA9ICQoR1RFU1RfTERGTEFHUykK
LQotIyBUaGlzIGV4ZXJjaXNlcyBhbGwgbWFqb3IgY29tcG9uZW50cyBvZiBHb29nbGUgTW9jay4g
IEl0IGFsc28KLSMgdmVyaWZpZXMgdGhhdCBsaWJnbW9jayB3b3Jrcy4KLVRFU1RTICs9IHRlc3Qv
Z21vY2stc3BlYy1idWlsZGVyc190ZXN0Ci1jaGVja19QUk9HUkFNUyArPSB0ZXN0L2dtb2NrLXNw
ZWMtYnVpbGRlcnNfdGVzdAotdGVzdF9nbW9ja19zcGVjX2J1aWxkZXJzX3Rlc3RfU09VUkNFUyA9
IHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjCi10ZXN0X2dtb2NrX3NwZWNfYnVpbGRl
cnNfdGVzdF9MREFERCA9ICQoR1RFU1RfTElCUykgbGliL2xpYmdtb2NrLmxhCi0KLSMgVGhpcyB0
ZXN0cyB1c2luZyBHb29nbGUgTW9jayBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gIEl0
IGFsc28KLSMgdmVyaWZpZXMgdGhhdCBsaWJnbW9ja19tYWluIGFuZCBsaWJnbW9jayB3b3JrLgot
VEVTVFMgKz0gdGVzdC9nbW9ja19saW5rX3Rlc3QKLWNoZWNrX1BST0dSQU1TICs9IHRlc3QvZ21v
Y2tfbGlua190ZXN0Ci10ZXN0X2dtb2NrX2xpbmtfdGVzdF9TT1VSQ0VTID0gXAotICB0ZXN0L2dt
b2NrX2xpbmsyX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrX2xpbmtfdGVzdC5jYyBcCi0gIHRlc3Qv
Z21vY2tfbGlua190ZXN0LmgKLXRlc3RfZ21vY2tfbGlua190ZXN0X0xEQUREID0gJChHVEVTVF9M
SUJTKSBsaWIvbGliZ21vY2tfbWFpbi5sYSAgbGliL2xpYmdtb2NrLmxhCi0KLWlmIEhBVkVfUFlU
SE9OCi0gICMgVGVzdHMgdGhhdCBmdXNlZCBnbW9jayBmaWxlcyBjb21waWxlIGFuZCB3b3JrLgot
ICBURVNUUyArPSB0ZXN0L2dtb2NrX2Z1c2VkX3Rlc3QKLSAgY2hlY2tfUFJPR1JBTVMgKz0gdGVz
dC9nbW9ja19mdXNlZF90ZXN0Ci0gIHRlc3RfZ21vY2tfZnVzZWRfdGVzdF9TT1VSQ0VTID0gXAot
ICAgIGZ1c2VkLXNyYy9nbW9jay1ndGVzdC1hbGwuY2MgXAotICAgIGZ1c2VkLXNyYy9nbW9jay9n
bW9jay5oIFwKLSAgICBmdXNlZC1zcmMvZ21vY2tfbWFpbi5jYyBcCi0gICAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LmggXAotICAgIHRlc3QvZ21vY2tfdGVzdC5jYwotICB0ZXN0X2dtb2NrX2Z1c2Vk
X3Rlc3RfQ1BQRkxBR1MgPSAtSSIkKHNyY2RpcikvZnVzZWQtc3JjIgotZW5kaWYKLQotIyBHb29n
bGUgTW9jayBzb3VyY2UgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LgotR01P
Q0tfU09VUkNFX0lOR0xVREVTID0gXAotICBzcmMvZ21vY2stY2FyZGluYWxpdGllcy5jYyBcCi0g
IHNyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYyBcCi0gIHNyYy9nbW9jay1tYXRjaGVycy5jYyBc
Ci0gIHNyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjIFwKLSAgc3JjL2dtb2NrLmNjCi0KLUVYVFJB
X0RJU1QgKz0gJChHTU9DS19TT1VSQ0VfSU5HTFVERVMpCi0KLSMgQysrIHRlc3RzIHRoYXQgd2Ug
ZG9uJ3QgY29tcGlsZSB1c2luZyBhdXRvdG9vbHMuCi1FWFRSQV9ESVNUICs9IFwKLSAgdGVzdC9n
bW9jay1hY3Rpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrX2FsbF90ZXN0LmNjIFwKLSAgdGVz
dC9nbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrX2V4X3Rlc3QuY2Mg
XAotICB0ZXN0L2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2Nr
LWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLWdlbmVy
YXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjIFwKLSAgdGVzdC9nbW9jay1nZW5lcmF0ZWQtbWF0
Y2hlcnNfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2staW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBcCi0g
IHRlc3QvZ21vY2stbWF0Y2hlcnNfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2stbW9yZS1hY3Rpb25z
X3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLW5pY2Utc3RyaWN0X3Rlc3QuY2MgXAotICB0ZXN0L2dt
b2NrLXBvcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2tfc3RyZXNzX3Rlc3QuY2MKLQotIyBQeXRo
b24gdGVzdHMsIHdoaWNoIHdlIGRvbid0IHJ1biB1c2luZyBhdXRvdG9vbHMuCi1FWFRSQV9ESVNU
ICs9IFwKLSAgdGVzdC9nbW9ja19sZWFrX3Rlc3QucHkgXAotICB0ZXN0L2dtb2NrX2xlYWtfdGVz
dF8uY2MgXAotICB0ZXN0L2dtb2NrX291dHB1dF90ZXN0LnB5IFwKLSAgdGVzdC9nbW9ja19vdXRw
dXRfdGVzdF8uY2MgXAotICB0ZXN0L2dtb2NrX291dHB1dF90ZXN0X2dvbGRlbi50eHQgXAotICB0
ZXN0L2dtb2NrX3Rlc3RfdXRpbHMucHkKLQotIyBOb25zdGFuZGFyZCBwYWNrYWdlIGZpbGVzIGZv
ciBkaXN0cmlidXRpb24uCi1FWFRSQV9ESVNUICs9IFwKLSAgQ0hBTkdFUyBcCi0gIENPTlRSSUJV
VE9SUyBcCi0gIG1ha2UvTWFrZWZpbGUKLQotIyBQdW1wIHNjcmlwdHMgZm9yIGdlbmVyYXRpbmcg
R29vZ2xlIE1vY2sgaGVhZGVycy4KLSMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IGF1dG9t
YXRlIHRoZSBnZW5lcmF0aW9uIG9mICouaCBmcm9tICouaC5wdW1wLgotRVhUUkFfRElTVCArPSBc
Ci0gIGluY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5wdW1wIFwKLSAgaW5j
bHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oLnB1bXAgXAotICBp
bmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oLnB1bXAgXAotICBpbmNsdWRl
L2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oLnB1bXAgXAotICBpbmNsdWRlL2dt
b2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oLnB1bXAgXAotICBp
bmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1
bXAKLQotIyBTY3JpcHQgZm9yIGZ1c2luZyBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3Qgc291
cmNlIGZpbGVzLgotRVhUUkFfRElTVCArPSBzY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkKLQot
IyBUaGUgR29vZ2xlIE1vY2sgR2VuZXJhdG9yIHRvb2wgZnJvbSB0aGUgY3BwY2xlYW4gcHJvamVj
dC4KLUVYVFJBX0RJU1QgKz0gXAotICBzY3JpcHRzL2dlbmVyYXRvci9MSUNFTlNFIFwKLSAgc2Ny
aXB0cy9nZW5lcmF0b3IvUkVBRE1FIFwKLSAgc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FLmNwcGNs
ZWFuIFwKLSAgc2NyaXB0cy9nZW5lcmF0b3IvY3BwL19faW5pdF9fLnB5IFwKLSAgc2NyaXB0cy9n
ZW5lcmF0b3IvY3BwL2FzdC5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19jbGFz
cy5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weSBcCi0gIHNjcmlwdHMv
Z2VuZXJhdG9yL2NwcC90b2tlbml6ZS5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC91dGls
cy5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2dtb2NrX2dlbi5weQotCi0jIFNjcmlwdCBmb3Ig
ZGlhZ25vc2luZyBjb21waWxlciBlcnJvcnMgaW4gcHJvZ3JhbXMgdGhhdCB1c2UgR29vZ2xlCi0j
IE1vY2suCi1FWFRSQV9ESVNUICs9IHNjcmlwdHMvZ21vY2tfZG9jdG9yLnB5Ci0KLSMgQ01ha2Ug
c2NyaXB0cy4KLUVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dAotCi0jIE1pY3Jvc29m
dCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdHMuCi1FWFRSQV9ESVNUICs9IFwKLSAgbXN2Yy8y
MDA1L2dtb2NrLnNsbiBcCi0gIG1zdmMvMjAwNS9nbW9jay52Y3Byb2ogXAotICBtc3ZjLzIwMDUv
Z21vY2tfY29uZmlnLnZzcHJvcHMgXAotICBtc3ZjLzIwMDUvZ21vY2tfbWFpbi52Y3Byb2ogXAot
ICBtc3ZjLzIwMDUvZ21vY2tfdGVzdC52Y3Byb2oKLQotIyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
byAyMDEwIHByb2plY3RzLgotRVhUUkFfRElTVCArPSBcCi0gIG1zdmMvMjAxMC9nbW9jay5zbG4g
XAotICBtc3ZjLzIwMTAvZ21vY2sudmN4cHJvaiBcCi0gIG1zdmMvMjAxMC9nbW9ja19jb25maWcu
cHJvcHMgXAotICBtc3ZjLzIwMTAvZ21vY2tfbWFpbi52Y3hwcm9qIFwKLSAgbXN2Yy8yMDEwL2dt
b2NrX3Rlc3QudmN4cHJvagotCi1pZiBIQVZFX1BZVEhPTgotIyBnbW9ja190ZXN0LmNjIGRvZXMg
bm90IHJlYWxseSBkZXBlbmQgb24gZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZQotIyBmdXNlZC1nbW9j
ay1pbnRlcm5hbCBydWxlLiAgSG93ZXZlciwgZ21vY2tfdGVzdC5vIGRvZXMsIGFuZCBpdCBpcwot
IyBpbXBvcnRhbnQgdG8gaW5jbHVkZSB0ZXN0L2dtb2NrX3Rlc3QuY2MgYXMgcGFydCBvZiB0aGlz
IHJ1bGUgaW4gb3JkZXIgdG8KLSMgcHJldmVudCBjb21waWxpbmcgZ21vY2tfdGVzdC5vIHVudGls
IGFsbCBkZXBlbmRlbnQgZmlsZXMgaGF2ZSBiZWVuCi0jIGdlbmVyYXRlZC4KLSQodGVzdF9nbW9j
a19mdXNlZF90ZXN0X1NPVVJDRVMpOiBmdXNlZC1nbW9jay1pbnRlcm5hbAotCi0jIFRPRE8odmxh
ZGxAZ29vZ2xlLmNvbSk6IEZpbmQgYSB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0cydzIHNvdXJjZXMg
aGVyZS4KLWZ1c2VkLWdtb2NrLWludGVybmFsOiAkKHBrZ2luY2x1ZGVfSEVBREVSUykgJChwa2dp
bmNsdWRlX2ludGVybmFsX0hFQURFUlMpIFwKLSAgICAgICAgICAgICAgICAgICAgICAkKGxpYl9s
aWJnbW9ja19sYV9TT1VSQ0VTKSAkKEdNT0NLX1NPVVJDRV9JTkdMVURFUykgXAotICAgICAgICAg
ICAgICAgICAgICAgICQobGliX2xpYmdtb2NrX21haW5fbGFfU09VUkNFUykgXAotICAgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdHMvZnVzZV9nbW9ja19maWxlcy5weQotCW1rZGlyIC1wICIkKHNy
Y2RpcikvZnVzZWQtc3JjIgotCWNobW9kIC1SIHUrdyAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQly
bSAtZiAiJChzcmNkaXIpL2Z1c2VkLXNyYy9ndGVzdC9ndGVzdC5oIgotCXJtIC1mICIkKHNyY2Rp
cikvZnVzZWQtc3JjL2dtb2NrL2dtb2NrLmgiCi0Jcm0gLWYgIiQoc3JjZGlyKS9mdXNlZC1zcmMv
Z21vY2stZ3Rlc3QtYWxsLmNjIgotCSIkKHNyY2Rpcikvc2NyaXB0cy9mdXNlX2dtb2NrX2ZpbGVz
LnB5IiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQljcCAtZiAiJChzcmNkaXIpL3NyYy9nbW9ja19t
YWluLmNjIiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDoK
LQlybSAtcmYgIiQoc3JjZGlyKS9mdXNlZC1zcmMiCi1lbmRpZgotCi0jIERlYXRoIHRlc3RzIG1h
eSBwcm9kdWNlIGNvcmUgZHVtcHMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gSW4gY2FzZQotIyB0
aGlzIGhhcHBlbnMsIGNsZWFuIHRoZW0gdG8ga2VlcCBkaXN0Y2xlYW5jaGVjayBoYXBweS4KLUNM
RUFORklMRVMgPSBjb3JlCi0KLSMgRGlzYWJsZXMgJ21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGlu
ZyBhIGNvbXBpbGVkIHZlcnNpb24gb2YgR29vZ2xlCi0jIE1vY2sgY2FuIGxlYWQgdG8gdW5kZWZp
bmVkIGJlaGF2aW9yIGR1ZSB0byB2aW9sYXRpb24gb2YgdGhlCi0jIE9uZS1EZWZpbml0aW9uIFJ1
bGUuCi0KLWluc3RhbGwtZXhlYy1sb2NhbDoKLQllY2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5n
ZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3RlYWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBp
bnRlZ3JhdGUgR29vZ2xlIE1vY2sgaW50byB5b3VyIGJ1aWxkIHN5c3RlbS4iCi0JZmFsc2UKLQot
aW5zdGFsbC1kYXRhLWxvY2FsOgotCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBh
bmQgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0
ZSBHb29nbGUgTW9jayBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKLQlmYWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjEzYTZkMzU3ZTMxMmRlZWI3ZTk1OTc4NjAwMDk1YTYx
ODEzOGJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0jIyBH
b29nbGUgTW9jayAjIwotCi1UaGUgR29vZ2xlIEMrKyBtb2NraW5nIGZyYW1ld29yay4KLQotIyMj
IE92ZXJ2aWV3ICMjIwotCi1Hb29nbGUncyBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgYW5kIHVzaW5n
IEMrKyBtb2NrIGNsYXNzZXMuCi1JdCBjYW4gaGVscCB5b3UgZGVyaXZlIGJldHRlciBkZXNpZ25z
IG9mIHlvdXIgc3lzdGVtIGFuZCB3cml0ZSBiZXR0ZXIgdGVzdHMuCi0KLUl0IGlzIGluc3BpcmVk
IGJ5OgotCi0gICogW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pLAotICAqIFtFYXN5TW9j
a10oaHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSwgYW5kCi0gICogW0hhbWNyZXN0XShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvaGFtY3Jlc3QvKSwKLQotYW5kIGRlc2lnbmVkIHdpdGggQysrJ3Mg
c3BlY2lmaWNzIGluIG1pbmQuCi0KLUdvb2dsZSBtb2NrOgotCi0gICogbGV0cyB5b3UgY3JlYXRl
IG1vY2sgY2xhc3NlcyB0cml2aWFsbHkgdXNpbmcgc2ltcGxlIG1hY3Jvcy4KLSAgKiBzdXBwb3J0
cyBhIHJpY2ggc2V0IG9mIG1hdGNoZXJzIGFuZCBhY3Rpb25zLgotICAqIGhhbmRsZXMgdW5vcmRl
cmVkLCBwYXJ0aWFsbHkgb3JkZXJlZCwgb3IgY29tcGxldGVseSBvcmRlcmVkIGV4cGVjdGF0aW9u
cy4KLSAgKiBpcyBleHRlbnNpYmxlIGJ5IHVzZXJzLgotCi1XZSBob3BlIHlvdSBmaW5kIGl0IHVz
ZWZ1bCEKLQotIyMjIEZlYXR1cmVzICMjIwotCi0gICogUHJvdmlkZXMgYSBkZWNsYXJhdGl2ZSBz
eW50YXggZm9yIGRlZmluaW5nIG1vY2tzLgotICAqIENhbiBlYXNpbHkgZGVmaW5lIHBhcnRpYWwg
KGh5YnJpZCkgbW9ja3MsIHdoaWNoIGFyZSBhIGNyb3NzIG9mIHJlYWwKLSAgICBhbmQgbW9jayBv
YmplY3RzLgotICAqIEhhbmRsZXMgZnVuY3Rpb25zIG9mIGFyYml0cmFyeSB0eXBlcyBhbmQgb3Zl
cmxvYWRlZCBmdW5jdGlvbnMuCi0gICogQ29tZXMgd2l0aCBhIHJpY2ggc2V0IG9mIG1hdGNoZXJz
IGZvciB2YWxpZGF0aW5nIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLSAgKiBVc2VzIGFuIGludHVpdGl2
ZSBzeW50YXggZm9yIGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciBvZiBhIG1vY2suCi0gICogRG9l
cyBhdXRvbWF0aWMgdmVyaWZpY2F0aW9uIG9mIGV4cGVjdGF0aW9ucyAobm8gcmVjb3JkLWFuZC1y
ZXBsYXkgbmVlZGVkKS4KLSAgKiBBbGxvd3MgYXJiaXRyYXJ5IChwYXJ0aWFsKSBvcmRlcmluZyBj
b25zdHJhaW50cyBvbgotICAgIGZ1bmN0aW9uIGNhbGxzIHRvIGJlIGV4cHJlc3NlZCwuCi0gICog
TGV0cyBhIHVzZXIgZXh0ZW5kIGl0IGJ5IGRlZmluaW5nIG5ldyBtYXRjaGVycyBhbmQgYWN0aW9u
cy4KLSAgKiBEb2VzIG5vdCB1c2UgZXhjZXB0aW9ucy4KLSAgKiBJcyBlYXN5IHRvIGxlYXJuIGFu
ZCB1c2UuCi0KLVBsZWFzZSBzZWUgdGhlIHByb2plY3QgcGFnZSBhYm92ZSBmb3IgbW9yZSBpbmZv
cm1hdGlvbiBhcyB3ZWxsIGFzIHRoZQotbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMsIGRpc2N1
c3Npb25zLCBhbmQgZGV2ZWxvcG1lbnQuICBUaGVyZSBpcwotYWxzbyBhbiBJUkMgY2hhbm5lbCBv
biBPRlRDIChpcmMub2Z0Yy5uZXQpICNndGVzdCBhdmFpbGFibGUuICBQbGVhc2UKLWpvaW4gdXMh
Ci0KLVBsZWFzZSBub3RlIHRoYXQgY29kZSB1bmRlciBbc2NyaXB0cy9nZW5lcmF0b3JdKHNjcmlw
dHMvZ2VuZXJhdG9yLykgaXMKLWZyb20gW2NwcGNsZWFuXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvY3BwY2xlYW4vKSBhbmQgcmVsZWFzZWQgdW5kZXIKLXRoZSBBcGFjaGUgTGljZW5zZSwgd2hp
Y2ggaXMgZGlmZmVyZW50IGZyb20gR29vZ2xlIE1vY2sncyBsaWNlbnNlLgotCi0jIyBHZXR0aW5n
IFN0YXJ0ZWQgIyMKLQotSWYgeW91IGFyZSBuZXcgdG8gdGhlIHByb2plY3QsIHdlIHN1Z2dlc3Qg
dGhhdCB5b3UgcmVhZCB0aGUgdXNlcgotZG9jdW1lbnRhdGlvbiBpbiB0aGUgZm9sbG93aW5nIG9y
ZGVyOgotCi0gICogTGVhcm4gdGhlIFtiYXNpY3NdKC4uLy4uL21hc3Rlci9nb29nbGV0ZXN0L2Rv
Y3MvUHJpbWVyLm1kKSBvZgotICAgIEdvb2dsZSBUZXN0LCBpZiB5b3UgY2hvb3NlIHRvIHVzZSBH
b29nbGUgTW9jayB3aXRoIGl0IChyZWNvbW1lbmRlZCkuCi0gICogUmVhZCBbR29vZ2xlIE1vY2sg
Zm9yIER1bW1pZXNdKC4uLy4uL21hc3Rlci9nb29nbGVtb2NrL2RvY3MvRm9yRHVtbWllcy5tZCku
Ci0gICogUmVhZCB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93IG9uIGhvdyB0byBidWlsZCBHb29nbGUg
TW9jay4KLQotWW91IGNhbiBhbHNvIHdhdGNoIFpoYW55b25nJ3MgW3RhbGtdKGh0dHA6Ly93d3cu
eW91dHViZS5jb20vd2F0Y2g/dj1zWXBDeUxJNDdyTSkgb24gR29vZ2xlIE1vY2sncyB1c2FnZSBh
bmQgaW1wbGVtZW50YXRpb24uCi0KLU9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljcywgY2hl
Y2sgb3V0IHRoZSByZXN0IG9mIHRoZSBkb2NzOgotCi0gICogW0NoZWF0U2hlZXRdKC4uLy4uL21h
c3Rlci9nb29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCkgLSBhbGwgdGhlIGNvbW1vbmx5IHVz
ZWQgc3R1ZmYKLSAgICBhdCBhIGdsYW5jZS4KLSAgKiBbQ29va0Jvb2tdKC4uLy4uL21hc3Rlci9n
b29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQpIC0gcmVjaXBlcyBmb3IgZ2V0dGluZyB0aGluZ3Mg
ZG9uZSwKLSAgICBpbmNsdWRpbmcgYWR2YW5jZWQgdGVjaG5pcXVlcy4KLQotSWYgeW91IG5lZWQg
aGVscCwgcGxlYXNlIGNoZWNrIHRoZQotW0tub3duSXNzdWVzXShkb2NzL0tub3duSXNzdWVzLm1k
KSBhbmQKLVtGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKGRvY3MvRnJlcXVlbnRseUFza2VkUXVl
c3Rpb25zLm1kKSBiZWZvcmUKLXBvc3RpbmcgYSBxdWVzdGlvbiBvbiB0aGUKLVtkaXNjdXNzaW9u
IGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykuCi0KLQot
IyMjIFVzaW5nIEdvb2dsZSBNb2NrIFdpdGhvdXQgR29vZ2xlIFRlc3QgIyMjCi0KLUdvb2dsZSBN
b2NrIGlzIG5vdCBhIHRlc3RpbmcgZnJhbWV3b3JrIGl0c2VsZi4gIEluc3RlYWQsIGl0IG5lZWRz
IGEKLXRlc3RpbmcgZnJhbWV3b3JrIGZvciB3cml0aW5nIHRlc3RzLiAgR29vZ2xlIE1vY2sgd29y
a3Mgc2VhbWxlc3NseQotd2l0aCBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0LyksIGJ1dAoteW91IGNhbiBhbHNvIHVzZSBpdCB3aXRoIFthbnkgQysrIHRl
c3RpbmcgZnJhbWV3b3JrXSguLi8uLi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0ZvckR1bW1pZXMu
bWQjdXNpbmctZ29vZ2xlLW1vY2std2l0aC1hbnktdGVzdGluZy1mcmFtZXdvcmspLgotCi0jIyMg
UmVxdWlyZW1lbnRzIGZvciBFbmQgVXNlcnMgIyMjCi0KLUdvb2dsZSBNb2NrIGlzIGltcGxlbWVu
dGVkIG9uIHRvcCBvZiBbR29vZ2xlIFRlc3RdKAotaHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dv
b2dsZXRlc3QvKSwgYW5kIGRlcGVuZHMgb24gaXQuCi1Zb3UgbXVzdCB1c2UgdGhlIGJ1bmRsZWQg
dmVyc2lvbiBvZiBHb29nbGUgVGVzdCB3aGVuIHVzaW5nIEdvb2dsZSBNb2NrLgotCi1Zb3UgY2Fu
IGFsc28gZWFzaWx5IGNvbmZpZ3VyZSBHb29nbGUgTW9jayB0byB3b3JrIHdpdGggYW5vdGhlciB0
ZXN0aW5nCi1mcmFtZXdvcmssIGFsdGhvdWdoIGl0IHdpbGwgc3RpbGwgbmVlZCBHb29nbGUgVGVz
dC4gIFBsZWFzZSByZWFkCi1bIlVzaW5nX0dvb2dsZV9Nb2NrX3dpdGhfQW55X1Rlc3RpbmdfRnJh
bWV3b3JrIl0oCi0gICAgLi4vLi4vbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Gb3JEdW1taWVzLm1k
I3VzaW5nLWdvb2dsZS1tb2NrLXdpdGgtYW55LXRlc3RpbmctZnJhbWV3b3JrKQotZm9yIGluc3Ry
dWN0aW9ucy4KLQotR29vZ2xlIE1vY2sgZGVwZW5kcyBvbiBhZHZhbmNlZCBDKysgZmVhdHVyZXMg
YW5kIHRodXMgcmVxdWlyZXMgYSBtb3JlCi1tb2Rlcm4gY29tcGlsZXIuIFRoZSBmb2xsb3dpbmcg
YXJlIG5lZWRlZCB0byB1c2UgR29vZ2xlIE1vY2s6Ci0KLSMjIyMgTGludXggUmVxdWlyZW1lbnRz
ICMjIyMKLQotICAqIEdOVS1jb21wYXRpYmxlIE1ha2Ugb3IgImdtYWtlIgotICAqIFBPU0lYLXN0
YW5kYXJkIHNoZWxsCi0gICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4Lmgp
Ci0gICogQysrOTgtc3RhbmRhcmQtY29tcGxpYW50IGNvbXBpbGVyIChlLmcuIEdDQyAzLjQgb3Ig
bmV3ZXIpCi0KLSMjIyMgV2luZG93cyBSZXF1aXJlbWVudHMgIyMjIwotCi0gICogTWljcm9zb2Z0
IFZpc3VhbCBDKysgOC4wIFNQMSBvciBuZXdlcgotCi0jIyMjIE1hYyBPUyBYIFJlcXVpcmVtZW50
cyAjIyMjCi0KLSAgKiBNYWMgT1MgWCAxMC40IFRpZ2VyIG9yIG5ld2VyCi0gICogRGV2ZWxvcGVy
IFRvb2xzIEluc3RhbGxlZAotCi0jIyMgUmVxdWlyZW1lbnRzIGZvciBDb250cmlidXRvcnMgIyMj
Ci0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gSWYgeW91IHBsYW4gdG8gY29udHJpYnV0ZSBhIHBhdGNo
LCB5b3UgbmVlZCB0bwotYnVpbGQgR29vZ2xlIE1vY2sgYW5kIGl0cyB0ZXN0cywgd2hpY2ggaGFz
IGZ1cnRoZXIgcmVxdWlyZW1lbnRzOgotCi0gICogQXV0b21ha2UgdmVyc2lvbiAxLjkgb3IgbmV3
ZXIKLSAgKiBBdXRvY29uZiB2ZXJzaW9uIDIuNTkgb3IgbmV3ZXIKLSAgKiBMaWJ0b29sIC8gTGli
dG9vbGl6ZQotICAqIFB5dGhvbiB2ZXJzaW9uIDIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcgc29t
ZSBvZiB0aGUgdGVzdHMgYW5kCi0gICAgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBmaWxl
cyBmcm9tIHRlbXBsYXRlcykKLQotIyMjIEJ1aWxkaW5nIEdvb2dsZSBNb2NrICMjIwotCi1JZiB5
b3UgaGF2ZSBDTWFrZSBhdmFpbGFibGUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGZvbGxv
dyB0aGUKLVtidWlsZCBpbnN0cnVjdGlvbnNdW2d0ZXN0X2NtYWtlYnVpbGRdCi1hcyBkZXNjcmli
ZWQgZm9yIEdvb2dsZSBUZXN0LiBJZiBhcmUgdXNpbmcgR29vZ2xlIE1vY2sgd2l0aCBhbgotZXhp
c3RpbmcgQ01ha2UgcHJvamVjdCwgdGhlIHNlY3Rpb24KLVtJbmNvcnBvcmF0aW5nIEludG8gQW4g
RXhpc3RpbmcgQ01ha2UgUHJvamVjdF1bZ3Rlc3RfaW5jb3JwY21ha2VdCi1tYXkgYmUgb2YgcGFy
dGljdWxhciBpbnRlcmVzdC4gT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zCi1kZXRh
aWwgaG93IHRvIGJ1aWxkIEdvb2dsZSBNb2NrIHdpdGhvdXQgQ01ha2UuCi0KLSMjIyMgUHJlcGFy
aW5nIHRvIEJ1aWxkIChVbml4IG9ubHkpICMjIyMKLQotSWYgeW91IGFyZSB1c2luZyBhIFVuaXgg
c3lzdGVtIGFuZCBwbGFuIHRvIHVzZSB0aGUgR05VIEF1dG90b29scyBidWlsZAotc3lzdGVtIHRv
IGJ1aWxkIEdvb2dsZSBNb2NrIChkZXNjcmliZWQgYmVsb3cpLCB5b3UnbGwgbmVlZCB0bwotY29u
ZmlndXJlIGl0IG5vdy4KLQotVG8gcHJlcGFyZSB0aGUgQXV0b3Rvb2xzIGJ1aWxkIHN5c3RlbToK
LQotICAgIGNkIGdvb2dsZW1vY2sKLSAgICBhdXRvcmVjb25mIC1mdmkKLQotVG8gYnVpbGQgR29v
Z2xlIE1vY2sgYW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVkIHRvIHRlbGwgeW91
cgotYnVpbGQgc3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5kIHNvdXJjZSBmaWxl
cy4gIFRoZSBleGFjdAotd2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2ggYnVpbGQgc3lzdGVt
IHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5Ci1zdHJhaWdodGZvcndhcmQuCi0KLVRoaXMgc2VjdGlv
biBzaG93cyBob3cgeW91IGNhbiBpbnRlZ3JhdGUgR29vZ2xlIE1vY2sgaW50byB5b3VyCi1leGlz
dGluZyBidWlsZCBzeXN0ZW0uCi0KLVN1cHBvc2UgeW91IHB1dCBHb29nbGUgTW9jayBpbiBkaXJl
Y3RvcnkgYCR7R01PQ0tfRElSfWAgYW5kIEdvb2dsZSBUZXN0Ci1pbiBgJHtHVEVTVF9ESVJ9YCAo
dGhlIGxhdHRlciBpcyBgJHtHTU9DS19ESVJ9L2d0ZXN0YCBieSBkZWZhdWx0KS4gIFRvCi1idWls
ZCBHb29nbGUgTW9jaywgY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVj
dCBhcwotY2FsbGVkIGJ5IFZpc3VhbCBTdHVkaW8gYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAg
ICAke0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYyBhbmQgJHtHTU9DS19ESVJ9L3NyYy9nbW9j
ay1hbGwuY2MKLQotd2l0aAotCi0gICAgJHtHVEVTVF9ESVJ9L2luY2x1ZGUgYW5kICR7R01PQ0tf
RElSfS9pbmNsdWRlCi0KLWluIHRoZSBzeXN0ZW0gaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQKLQot
ICAgICR7R1RFU1RfRElSfSBhbmQgJHtHTU9DS19ESVJ9Ci0KLWluIHRoZSBub3JtYWwgaGVhZGVy
IHNlYXJjaCBwYXRoLiAgQXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAotc29t
ZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyB3aWxsIGRvOgotCi0gICAgZysrIC1pc3lzdGVtICR7
R1RFU1RfRElSfS9pbmNsdWRlIC1JJHtHVEVTVF9ESVJ9IFwKLSAgICAgICAgLWlzeXN0ZW0gJHtH
TU9DS19ESVJ9L2luY2x1ZGUgLUkke0dNT0NLX0RJUn0gXAotICAgICAgICAtcHRocmVhZCAtYyAk
e0dURVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJ
Un0vaW5jbHVkZSAtSSR7R1RFU1RfRElSfSBcCi0gICAgICAgIC1pc3lzdGVtICR7R01PQ0tfRElS
fS9pbmNsdWRlIC1JJHtHTU9DS19ESVJ9IFwKLSAgICAgICAgLXB0aHJlYWQgLWMgJHtHTU9DS19E
SVJ9L3NyYy9nbW9jay1hbGwuY2MKLSAgICBhciAtcnYgbGliZ21vY2suYSBndGVzdC1hbGwubyBn
bW9jay1hbGwubwotCi0oV2UgbmVlZCAtcHRocmVhZCBhcyBHb29nbGUgVGVzdCBhbmQgR29vZ2xl
IE1vY2sgdXNlIHRocmVhZHMuKQotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0
IHNvdXJjZSBmaWxlIHdpdGgKLSR7R1RFU1RcX0RJUn0vaW5jbHVkZSBhbmQgJHtHTU9DS1xfRElS
fS9pbmNsdWRlIGluIHRoZSBoZWFkZXIgc2VhcmNoCi1wYXRoLCBhbmQgbGluayBpdCB3aXRoIGdt
b2NrIGFuZCBhbnkgb3RoZXIgbmVjZXNzYXJ5IGxpYnJhcmllczoKLQotICAgIGcrKyAtaXN5c3Rl
bSAke0dURVNUX0RJUn0vaW5jbHVkZSAtaXN5c3RlbSAke0dNT0NLX0RJUn0vaW5jbHVkZSBcCi0g
ICAgICAgIC1wdGhyZWFkIHBhdGgvdG8veW91cl90ZXN0LmNjIGxpYmdtb2NrLmEgLW8geW91cl90
ZXN0Ci0KLUFzIGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtl
ZmlsZSB0aGF0IHlvdSBjYW4KLXVzZSB0byBidWlsZCBHb29nbGUgTW9jayBvbiBzeXN0ZW1zIHdo
ZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZQotKGUuZy4gTGludXgsIE1hYyBPUyBYLCBhbmQgQ3ln
d2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1aWxkIEdvb2dsZQotTW9jaydzIG93biB0ZXN0cy4g
IEluc3RlYWQsIGl0IGp1c3QgYnVpbGRzIHRoZSBHb29nbGUgTW9jayBsaWJyYXJ5IGFuZAotYSBz
YW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdXIg
b3duIGJ1aWxkCi1zY3JpcHQuCi0KLUlmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBjb3JyZWN0
IGZvciB5b3VyIGVudmlyb25tZW50LCB0aGUKLWZvbGxvd2luZyBjb21tYW5kcyBzaG91bGQgc3Vj
Y2VlZDoKLQotICAgIGNkICR7R01PQ0tfRElSfS9tYWtlCi0gICAgbWFrZQotICAgIC4vZ21vY2tf
dGVzdAotCi1JZiB5b3Ugc2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRoZSBjb250ZW50cyBvZgot
W21ha2UvTWFrZWZpbGVdKG1ha2UvTWFrZWZpbGUpIHRvIG1ha2UgdGhlbSBnbyBhd2F5LgotCi0j
IyMgV2luZG93cyAjIyMKLQotVGhlIG1zdmMvMjAwNSBkaXJlY3RvcnkgY29udGFpbnMgVkMrKyAy
MDA1IHByb2plY3RzIGFuZCB0aGUgbXN2Yy8yMDEwCi1kaXJlY3RvcnkgY29udGFpbnMgVkMrKyAy
MDEwIHByb2plY3RzIGZvciBidWlsZGluZyBHb29nbGUgTW9jayBhbmQKLXNlbGVjdGVkIHRlc3Rz
LgotCi1DaGFuZ2UgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBhbmQgcnVuICJtc2J1aWxk
IGdtb2NrLnNsbiIgdG8KLWJ1aWxkIHRoZSBsaWJyYXJ5IGFuZCB0ZXN0cyAob3Igb3BlbiB0aGUg
Z21vY2suc2xuIGluIHRoZSBNU1ZDIElERSkuCi1JZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBv
d24gcHJvamVjdCB0byB1c2Ugd2l0aCBHb29nbGUgTW9jaywgeW91J2xsCi1oYXZlIHRvIGNvbmZp
Z3VyZSBpdCB0byB1c2UgdGhlIGBnbW9ja19jb25maWdgIHByb3BldHkgc2hlZXQuICBGb3IgdGhh
dDoKLQotICogT3BlbiB0aGUgUHJvcGVydHkgTWFuYWdlciB3aW5kb3cgKFZpZXcgfCBPdGhlciBX
aW5kb3dzIHwgUHJvcGVydHkgTWFuYWdlcikKLSAqIFJpZ2h0LWNsaWNrIG9uIHlvdXIgcHJvamVj
dCBhbmQgc2VsZWN0ICJBZGQgRXhpc3RpbmcgUHJvcGVydHkgU2hlZXQuLi4iCi0gKiBOYXZpZ2F0
ZSB0byBgZ21vY2tfY29uZmlnLnZzcHJvcHNgIG9yIGBnbW9ja19jb25maWcucHJvcHNgIGFuZCBz
ZWxlY3QgaXQuCi0gKiBJbiBQcm9qZWN0IFByb3BlcnRpZXMgfCBDb25maWd1cmF0aW9uIFByb3Bl
cnRpZXMgfCBHZW5lcmFsIHwgQWRkaXRpb25hbAotICAgSW5jbHVkZSBEaXJlY3RvcmllcywgdHlw
ZSA8cGF0aCB0byBHb29nbGUgTW9jaz4vaW5jbHVkZS4KLQotIyMjIFR3ZWFraW5nIEdvb2dsZSBN
b2NrICMjIwotCi1Hb29nbGUgTW9jayBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50
cy4gIFRoZSBkZWZhdWx0Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3
b3JrIHdlbGwpIG91dCBvZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIs
IHlvdSBjYW4gZWFzaWx5IHR3ZWFrIEdvb2dsZSBNb2NrIGJ5Ci1kZWZpbmluZyBjb250cm9sIG1h
Y3JvcyBvbiB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAotdGhlc2UgbWFj
cm9zIGFyZSBuYW1lZCBsaWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVmaW5lIHRoZW0gdG8gZWl0
aGVyIDEKLW9yIDAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWluIGZlYXR1cmUuCi0KLVdl
IGxpc3QgdGhlIG1vc3QgZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxvdy4gIEZvciBhIGNvbXBs
ZXRlIGxpc3QsCi1zZWUgZmlsZSBbJHtHVEVTVFxfRElSfS9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXBvcnQuaF0oCi0uLi9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oKS4KLQotIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJhcnkgIyMjCi0KLUdv
b2dsZSBNb2NrIHVzZXMgdGhlIEMrKyBUZWNobmljYWwgUmVwb3J0IDEgKFRSMSkgdHVwbGUgbGli
cmFyeQotaGVhdmlseS4gIFVuZm9ydHVuYXRlbHkgVFIxIHR1cGxlIGlzIG5vdCB5ZXQgd2lkZWx5
IGF2YWlsYWJsZSB3aXRoIGFsbAotY29tcGlsZXJzLiAgVGhlIGdvb2QgbmV3cyBpcyB0aGF0IEdv
b2dsZSBUZXN0IDEuNC4wKyBpbXBsZW1lbnRzIGEKLXN1YnNldCBvZiBUUjEgdHVwbGUgdGhhdCdz
IGVub3VnaCBmb3IgR29vZ2xlIE1vY2sncyBuZWVkLiAgR29vZ2xlIE1vY2sKLXdpbGwgYXV0b21h
dGljYWxseSB1c2UgdGhhdCBpbXBsZW1lbnRhdGlvbiB3aGVuIHRoZSBjb21waWxlciBkb2Vzbid0
Ci1wcm92aWRlIFRSMSB0dXBsZS4KLQotVXN1YWxseSB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFi
b3V0IHdoaWNoIHR1cGxlIGxpYnJhcnkgR29vZ2xlIFRlc3QKLWFuZCBHb29nbGUgTW9jayB1c2Uu
ICBIb3dldmVyLCBpZiB5b3VyIHByb2plY3QgYWxyZWFkeSB1c2VzIFRSMSB0dXBsZSwKLXlvdSBu
ZWVkIHRvIHRlbGwgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2NrIHRvIHVzZSB0aGUgc2FtZSBU
UjEgdHVwbGUKLWxpYnJhcnkgdGhlIHJlc3Qgb2YgeW91ciBwcm9qZWN0IHVzZXMsIG9yIHRoZSB0
d28gdHVwbGUKLWltcGxlbWVudGF0aW9ucyB3aWxsIGNsYXNoLiAgVG8gZG8gdGhhdCwgYWRkCi0K
LSAgICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdz
IHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCwgR29vZ2xlIE1vY2ssIGFuZAoteW91ciB0ZXN0
cy4gIElmIHlvdSB3YW50IHRvIGZvcmNlIEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jayB0byB1
c2UKLXRoZWlyIG93biB0dXBsZSBsaWJyYXJ5LCBqdXN0IGFkZAotCi0gICAgLURHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRT0xCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgotCi1JZiB5
b3Ugd2FudCB0byB1c2UgQm9vc3QncyBUUjEgdHVwbGUgbGlicmFyeSB3aXRoIEdvb2dsZSBNb2Nr
LCBwbGVhc2UKLXJlZmVyIHRvIHRoZSBCb29zdCB3ZWJzaXRlIChodHRwOi8vd3d3LmJvb3N0Lm9y
Zy8pIGZvciBob3cgdG8gb2J0YWluCi1pdCBhbmQgc2V0IGl0IHVwLgotCi0jIyMgQXMgYSBTaGFy
ZWQgTGlicmFyeSAoRExMKSAjIyMKLQotR29vZ2xlIE1vY2sgaXMgY29tcGFjdCwgc28gbW9zdCB1
c2VycyBjYW4gYnVpbGQgYW5kIGxpbmsgaXQgYXMgYSBzdGF0aWMKLWxpYnJhcnkgZm9yIHRoZSBz
aW1wbGljaXR5LiAgR29vZ2xlIE1vY2sgY2FuIGJlIHVzZWQgYXMgYSBETEwsIGJ1dCB0aGUKLXNh
bWUgRExMIG11c3QgY29udGFpbiBHb29nbGUgVGVzdCBhcyB3ZWxsLiAgU2VlCi1bR29vZ2xlIFRl
c3QncyBSRUFETUVdW2d0ZXN0X3JlYWRtZV0KLWZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHNl
dCB1cCBuZWNlc3NhcnkgY29tcGlsZXIgc2V0dGluZ3MuCi0KLSMjIyBUd2Vha2luZyBHb29nbGUg
TW9jayAjIyMKLQotTW9zdCBvZiBHb29nbGUgVGVzdCdzIGNvbnRyb2wgbWFjcm9zIGFwcGx5IHRv
IEdvb2dsZSBNb2NrIGFzIHdlbGwuCi1QbGVhc2Ugc2VlIFtHb29nbGUgVGVzdCdzIFJFQURNRV1b
Z3Rlc3RfcmVhZG1lXSBmb3IgaG93IHRvIHR3ZWFrIHRoZW0uCi0KLSMjIyBVcGdyYWRpbmcgZnJv
bSBhbiBFYXJsaWVyIFZlcnNpb24gIyMjCi0KLVdlIHN0cml2ZSB0byBrZWVwIEdvb2dsZSBNb2Nr
IHJlbGVhc2VzIGJhY2t3YXJkIGNvbXBhdGlibGUuCi1Tb21ldGltZXMsIHRob3VnaCwgd2UgaGF2
ZSB0byBtYWtlIHNvbWUgYnJlYWtpbmcgY2hhbmdlcyBmb3IgdGhlCi11c2VycycgbG9uZy10ZXJt
IGJlbmVmaXRzLiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB3aGF0IHlvdSdsbCBuZWVkIHRvCi1k
byBpZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiBHb29nbGUg
TW9jay4KLQotIyMjIyBVcGdyYWRpbmcgZnJvbSAxLjEuMCBvciBFYXJsaWVyICMjIyMKLQotWW91
IG1heSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3QncyBv
d24gVFIxCi10dXBsZSBsaWJyYXJ5LiAgU2VlIHRoZSBpbnN0cnVjdGlvbnMgaW4gc2VjdGlvbiAi
W0Nob29zaW5nIGEgVFIxIFR1cGxlCi1MaWJyYXJ5XSguLi9nb29nbGV0ZXN0LyNjaG9vc2luZy1h
LXRyMS10dXBsZS1saWJyYXJ5KSIuCi0KLSMjIyMgVXBncmFkaW5nIGZyb20gMS40LjAgb3IgRWFy
bGllciAjIyMjCi0KLU9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2
YWlsYWJsZSwgR29vZ2xlIFRlc3QgYW5kCi1Hb29nbGUgTW9jayB1c2UgaXQgaW4gb3JkZXIgdG8g
YmUgdGhyZWFkLXNhZmUuICBGb3IgdGhpcyB0byB3b3JrLCB5b3UKLW1heSBuZWVkIHRvIHR3ZWFr
IHlvdXIgY29tcGlsZXIgYW5kL29yIGxpbmtlciBmbGFncy4gIFBsZWFzZSBzZWUgdGhlCi0iW011
bHRpLXRocmVhZGVkIFRlc3RzXSguLi9nb29nbGV0ZXN0I211bHRpLXRocmVhZGVkLXRlc3RzCi0p
IiBzZWN0aW9uIGluIGZpbGUgR29vZ2xlIFRlc3QncyBSRUFETUUgZm9yIHdoYXQgeW91IG1heSBu
ZWVkIHRvIGRvLgotCi1JZiB5b3UgaGF2ZSBjdXN0b20gbWF0Y2hlcnMgZGVmaW5lZCB1c2luZyBg
TWF0Y2hlckludGVyZmFjZWAgb3IKLWBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLCB5b3UnbGwg
bmVlZCB0byB1cGRhdGUgdGhlaXIgZGVmaW5pdGlvbnMgdG8KLXVzZSB0aGUgbmV3IG1hdGNoZXIg
QVBJICgKLVttb25vbW9ycGhpY10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2sv
d2lraS9Db29rQm9vayNXcml0aW5nX05ld19Nb25vbW9ycGhpY19NYXRjaGVycyksCi1bcG9seW1v
cnBoaWNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvQ29va0Jvb2sj
V3JpdGluZ19OZXdfUG9seW1vcnBoaWNfTWF0Y2hlcnMpKS4KLU1hdGNoZXJzIGRlZmluZWQgdXNp
bmcgYE1BVENIRVIoKWAgb3IgYE1BVENIRVJfUCooKWAgYXJlbid0IGFmZmVjdGVkLgotCi0jIyMg
RGV2ZWxvcGluZyBHb29nbGUgTW9jayAjIyMKLQotVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBob3cg
dG8gbWFrZSB5b3VyIG93biBjaGFuZ2VzIHRvIEdvb2dsZSBNb2NrLgotCi0jIyMjIFRlc3Rpbmcg
R29vZ2xlIE1vY2sgSXRzZWxmICMjIyMKLQotVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3b3Jr
IGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVuY3Rpb25hbGl0eSwgeW91
J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgotRm9y
IHRoYXQgeW91J2xsIG5lZWQgQXV0b3Rvb2xzLiAgRmlyc3QsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBm
b2xsb3dlZAotdGhlIGluc3RydWN0aW9ucyBhYm92ZSB0byBjb25maWd1cmUgR29vZ2xlIE1vY2su
Ci1UaGVuLCBjcmVhdGUgYSBidWlsZCBvdXRwdXQgZGlyZWN0b3J5IGFuZCBlbnRlciBpdC4gIE5l
eHQsCi0KLSAgICAke0dNT0NLX0RJUn0vY29uZmlndXJlICAjIHRyeSAtLWhlbHAgZm9yIG1vcmUg
aW5mbwotCi1PbmNlIHlvdSBoYXZlIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkIEdvb2dsZSBNb2Nr
LCB0aGUgYnVpbGQgc3RlcHMgYXJlCi1zdGFuZGFyZCBmb3IgR05VLXN0eWxlIE9TUyBwYWNrYWdl
cy4KLQotICAgIG1ha2UgICAgICAgICMgU3RhbmRhcmQgbWFrZWZpbGUgZm9sbG93aW5nIEdOVSBj
b252ZW50aW9ucwotICAgIG1ha2UgY2hlY2sgICMgQnVpbGRzIGFuZCBydW5zIGFsbCB0ZXN0cyAt
IGFsbCBzaG91bGQgcGFzcy4KLQotTm90ZSB0aGF0IHdoZW4gYnVpbGRpbmcgeW91ciBwcm9qZWN0
IGFnYWluc3QgR29vZ2xlIE1vY2ssIHlvdSBhcmUgYnVpbGRpbmcKLWFnYWluc3QgR29vZ2xlIFRl
c3QgYXMgd2VsbC4gIFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uZmlndXJlIEdvb2dsZSBUZXN0Ci1z
ZXBhcmF0ZWx5LgotCi0jIyMjIENvbnRyaWJ1dGluZyBhIFBhdGNoICMjIyMKLQotV2Ugd2VsY29t
ZSBwYXRjaGVzLgotUGxlYXNlIHJlYWQgdGhlIFtEZXZlbG9wZXIncyBHdWlkZV0oZG9jcy9EZXZH
dWlkZS5tZCkKLWZvciBob3cgeW91IGNhbiBjb250cmlidXRlLiBJbiBwYXJ0aWN1bGFyLCBtYWtl
IHN1cmUgeW91IGhhdmUgc2lnbmVkCi10aGUgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQs
IG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYWNjZXB0IHRoZQotcGF0Y2guCi0KLUhhcHB5IHRlc3Rp
bmchCi0KLVtndGVzdF9yZWFkbWVdOiAuLi9nb29nbGV0ZXN0L1JFQURNRS5tZCAiZ29vZ2xldGVz
dCIKLVtndGVzdF9jbWFrZWJ1aWxkXTogIC4uL2dvb2dsZXRlc3QvUkVBRE1FLm1kI3VzaW5nLWNt
YWtlICJVc2luZyBDTWFrZSIKLVtndGVzdF9pbmNvcnBjbWFrZV06IC4uL2dvb2dsZXRlc3QvUkVB
RE1FLm1kI2luY29ycG9yYXRpbmctaW50by1hbi1leGlzdGluZy1jbWFrZS1wcm9qZWN0ICJJbmNv
cnBvcmF0aW5nIEludG8gQW4gRXhpc3RpbmcgQ01ha2UgUHJvamVjdCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2NvbmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2NvbmZpZ3VyZS5hYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3NDBmMjA1ZTU1MjhiOTFiNDJhNTZmN2Q3YzMxMjdk
ZTZlNDAyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9jb25maWd1cmUuYWMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAot
bTRfaW5jbHVkZSguLi9nb29nbGV0ZXN0L200L2FjeF9wdGhyZWFkLm00KQotCi1BQ19JTklUKFtH
b29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrXSwKLSAgICAgICAgWzEuNy4wXSwKLSAgICAgICAg
W2dvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbV0sCi0gICAgICAgIFtnbW9ja10pCi0KLSMgUHJv
dmlkZSB2YXJpb3VzIG9wdGlvbnMgdG8gaW5pdGlhbGl6ZSB0aGUgQXV0b2NvbmYgYW5kIGNvbmZp
Z3VyZSBwcm9jZXNzZXMuCi1BQ19QUkVSRVEoWzIuNTldKQotQUNfQ09ORklHX1NSQ0RJUihbLi9M
SUNFTlNFXSkKLUFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQotQUNfQ09ORklHX0hFQURF
UlMoW2J1aWxkLWF1eC9jb25maWcuaF0pCi1BQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKLUFD
X0NPTkZJR19GSUxFUyhbc2NyaXB0cy9nbW9jay1jb25maWddLCBbY2htb2QgK3ggc2NyaXB0cy9n
bW9jay1jb25maWddKQotCi0jIEluaXRpYWxpemUgQXV0b21ha2Ugd2l0aCB2YXJpb3VzIG9wdGlv
bnMuIFdlIHJlcXVpcmUgYXQgbGVhc3QgdjEuOSwgcHJldmVudAotIyBwZWRhbnRpYyBjb21wbGFp
bnRzIGFib3V0IHBhY2thZ2UgZmlsZXMsIGFuZCBlbmFibGUgdmFyaW91cyBkaXN0cmlidXRpb24K
LSMgdGFyZ2V0cy4KLUFNX0lOSVRfQVVUT01BS0UoWzEuOSBkaXN0LWJ6aXAyIGRpc3QtemlwIGZv
cmVpZ24gc3ViZGlyLW9iamVjdHNdKQotCi0jIENoZWNrIGZvciBwcm9ncmFtcyB1c2VkIGluIGJ1
aWxkaW5nIEdvb2dsZSBUZXN0LgotQUNfUFJPR19DQwotQUNfUFJPR19DWFgKLUFDX0xBTkcoW0Mr
K10pCi1BQ19QUk9HX0xJQlRPT0wKLQotIyBUT0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKTogQ3Vy
cmVudGx5IHdlIGFyZW4ndCBydW5uaW5nIHRoZSBQeXRob24gdGVzdHMKLSMgYWdhaW5zdCB0aGUg
aW50ZXJwcmV0ZXIgZGV0ZWN0ZWQgYnkgQU1fUEFUSF9QWVRIT04sIGFuZCBzbyB3ZSBjb25kaXRp
b24KLSMgSEFWRV9QWVRIT04gYnkgcmVxdWlyaW5nICJweXRob24iIHRvIGJlIGluIHRoZSBQQVRI
LCBhbmQgdGhhdCBpbnRlcnByZXRlcidzCi0jIHZlcnNpb24gdG8gYmUgPj0gMi4zLiBUaGlzIHdp
bGwgYWxsb3cgdGhlIHNjcmlwdHMgdG8gdXNlIGEgIi91c3IvYmluL2VudiIKLSMgaGFzaGJhbmcu
Ci1QWVRIT049ICAjIFdlICpkbyBub3QqIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYSBweXRo
b24gaW50ZXJwcmV0ZXIKLUFDX1BBVEhfUFJPRyhbUFlUSE9OXSxbcHl0aG9uXSxbOl0pCi1BU19J
RihbdGVzdCAiJFBZVEhPTiIgIT0gIjoiXSwKLSAgICAgIFtBTV9QWVRIT05fQ0hFQ0tfVkVSU0lP
TihbJFBZVEhPTl0sWzIuM10sWzpdLFtQWVRIT049IjoiXSldKQotQU1fQ09ORElUSU9OQUwoW0hB
VkVfUFlUSE9OXSxbdGVzdCAiJFBZVEhPTiIgIT0gIjoiXSkKLQotIyBUT0RPKGNoYW5kbGVyY0Bn
b29nbGUuY29tKSBDaGVjayBmb3IgdGhlIG5lY2Vzc2FyeSBzeXN0ZW0gaGVhZGVycy4KLQotIyBD
b25maWd1cmUgcHRocmVhZHMuCi1BQ19BUkdfV0lUSChbcHRocmVhZHNdLAotICAgICAgICAgICAg
W0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcHRocmVhZHNdLAotICAgICAgICAgICAgICAgW3VzZSBw
dGhyZWFkcyAoZGVmYXVsdCBpcyB5ZXMpXSldLAotICAgICAgICAgICAgW3dpdGhfcHRocmVhZHM9
JHdpdGh2YWxdLAotICAgICAgICAgICAgW3dpdGhfcHRocmVhZHM9Y2hlY2tdKQotCi1oYXZlX3B0
aHJlYWRzPW5vCi1BU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAhPSAieG5vIl0sCi0gICAg
ICBbQUNYX1BUSFJFQUQoCi0gICAgICAgIFtdLAotICAgICAgICBbQVNfSUYoW3Rlc3QgIngkd2l0
aF9wdGhyZWFkcyIgIT0gInhjaGVjayJdLAotICAgICAgICAgICAgICAgW0FDX01TR19GQUlMVVJF
KAotICAgICAgICAgICAgICAgICBbLS13aXRoLXB0aHJlYWRzIHdhcyBzcGVjaWZpZWQsIGJ1dCB1
bmFibGUgdG8gYmUgdXNlZF0pXSldKQotICAgICAgIGhhdmVfcHRocmVhZHM9IiRhY3hfcHRocmVh
ZF9vayJdKQotQU1fQ09ORElUSU9OQUwoW0hBVkVfUFRIUkVBRFNdLFt0ZXN0ICJ4JGhhdmVfcHRo
cmVhZHMiID09ICJ4eWVzIl0pCi1BQ19TVUJTVChQVEhSRUFEX0NGTEFHUykKLUFDX1NVQlNUKFBU
SFJFQURfTElCUykKLQotIyBHb29nbGVNb2NrIGN1cnJlbnRseSBoYXMgaGFyZCBkZXBlbmRlbmNp
ZXMgdXBvbiBHb29nbGVUZXN0IGFib3ZlIGFuZCBiZXlvbmQKLSMgcnVubmluZyBpdHMgb3duIHRl
c3Qgc3VpdGUsIHNvIHdlIGJvdGggcHJvdmlkZSBvdXIgb3duIHZlcnNpb24gaW4KLSMgYSBzdWJk
aXJlY3RvcnkgYW5kIHByb3ZpZGUgc29tZSBsb2dpYyB0byB1c2UgYSBjdXN0b20gdmVyc2lvbiBv
ciBhIHN5c3RlbQotIyBpbnN0YWxsZWQgdmVyc2lvbi4KLUFDX0FSR19XSVRIKFtndGVzdF0sCi0g
ICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ndGVzdF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1NwZWNpZmllcyBob3cgdG8gZmluZCB0aGUgZ3Rlc3QgcGFja2FnZS4g
SWYgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIGdpdmVuLCB0
aGUgZGVmYXVsdCBiZWhhdmlvciwgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Rl
bSBpbnN0YWxsZWQgZ3Rlc3Qgd2lsbCBiZSB1c2VkIGlmIHByZXNlbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5kIGFuIGludGVybmFsIHZlcnNpb24gYnVpbHQgb3RoZXJ3aXNlLiBJ
ZiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBpcyBwcm92aWRlZCwgdGhlIGd0
ZXN0IGJ1aWx0IG9yIGluc3RhbGxlZCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
YXQgcHJlZml4IHdpbGwgYmUgdXNlZC5dKV0sCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAg
IFt3aXRoX2d0ZXN0PXllc10pCi1BQ19BUkdfRU5BQkxFKFtleHRlcm5hbC1ndGVzdF0sCi0gICAg
ICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWV4dGVybmFsLWd0ZXN0XSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXNhYmxlcyBhbnkgZGV0ZWN0aW9uIG9yIHVz
ZSBvZiBhIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIG9y
IHVzZXIgcHJvdmlkZWQgZ3Rlc3QuIEFueSBvcHRpb24gdG8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLXdpdGgtZ3Rlc3QnIGlzIGlnbm9yZWQuIChEZWZhdWx0IGlzIGVuYWJsZWQu
KV0pCi0gICAgICAgICAgICAgIF0sIFtdLCBbZW5hYmxlX2V4dGVybmFsX2d0ZXN0PXllc10pCi1B
U19JRihbdGVzdCAieCR3aXRoX2d0ZXN0IiA9PSAieG5vIl0sCi0gICAgICBbQUNfTVNHX0VSUk9S
KFtkbmwKLVN1cHBvcnQgZm9yIEdvb2dsZVRlc3Qgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuIEN1
cnJlbnRseSBHb29nbGVNb2NrIGhhcyBhIGhhcmQKLWRlcGVuZGVuY3kgdXBvbiBHb29nbGVUZXN0
IHRvIGJ1aWxkLCBwbGVhc2UgcHJvdmlkZSBhIHZlcnNpb24sIG9yIGFsbG93Ci1Hb29nbGVNb2Nr
IHRvIHVzZSBhbnkgaW5zdGFsbGVkIHZlcnNpb24gYW5kIGZhbGwgYmFjayB1cG9uIGl0cyBpbnRl
cm5hbAotdmVyc2lvbi5dKV0pCi0KLSMgU2V0dXAgdmFyaW91cyBHVEVTVCB2YXJpYWJsZXMuIFRP
RE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBXaGVuIHRoZXNlIGFyZQotIyB1c2VkIGJlbG93LCB0
aGV5IHNob3VsZCBiZSB1c2VkIHN1Y2ggdGhhdCBhbnkgcHJlLWV4aXN0aW5nIHZhbHVlcyBhbHdh
eXMKLSMgdHJ1bXAgdmFsdWVzIHdlIHNldCB0aGVtIHRvLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHVz
ZWQgdG8gc2VsZWN0aXZlbHkgb3ZlcnJpZGUKLSMgZGV0YWlscyBvZiB0aGUgZGV0ZWN0aW9uIHBy
b2Nlc3MuCi1BQ19BUkdfVkFSKFtHVEVTVF9DT05GSUddLAotICAgICAgICAgICBbVGhlIGV4YWN0
IHBhdGggb2YgR29vZ2xlIFRlc3QncyAnZ3Rlc3QtY29uZmlnJyBzY3JpcHQuXSkKLUFDX0FSR19W
QVIoW0dURVNUX0NQUEZMQUdTXSwKLSAgICAgICAgICAgW0MtbGlrZSBwcmVwcm9jZXNzb3IgZmxh
Z3MgZm9yIEdvb2dsZSBUZXN0Ll0pCi1BQ19BUkdfVkFSKFtHVEVTVF9DWFhGTEFHU10sCi0gICAg
ICAgICAgIFtDKysgY29tcGlsZSBmbGFncyBmb3IgR29vZ2xlIFRlc3QuXSkKLUFDX0FSR19WQVIo
W0dURVNUX0xERkxBR1NdLAotICAgICAgICAgICBbTGlua2VyIHBhdGggYW5kIG9wdGlvbiBmbGFn
cyBmb3IgR29vZ2xlIFRlc3QuXSkKLUFDX0FSR19WQVIoW0dURVNUX0xJQlNdLAotICAgICAgICAg
ICBbTGlicmFyeSBsaW5raW5nIGZsYWdzIGZvciBHb29nbGUgVGVzdC5dKQotQUNfQVJHX1ZBUihb
R1RFU1RfVkVSU0lPTl0sCi0gICAgICAgICAgIFtUaGUgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCBh
dmFpbGFibGUuXSkKLUhBVkVfQlVJTFRfR1RFU1Q9Im5vIgotCi1HVEVTVF9NSU5fVkVSU0lPTj0i
MS43LjAiCi0KLUFTX0lGKFt0ZXN0ICJ4JHtlbmFibGVfZXh0ZXJuYWxfZ3Rlc3R9IiA9ICJ4eWVz
Il0sCi0gICAgICBbIyBCZWdpbiBmaWxsaW5nIGluIHZhcmlhYmxlcyBhcyB3ZSBhcmUgYWJsZS4K
LSAgICAgIEFTX0lGKFt0ZXN0ICJ4JHt3aXRoX2d0ZXN0fSIgIT0gInh5ZXMiXSwKLSAgICAgICAg
ICAgIFtBU19JRihbdGVzdCAteCAiJHt3aXRoX2d0ZXN0fS9zY3JpcHRzL2d0ZXN0LWNvbmZpZyJd
LAotICAgICAgICAgICAgICAgICAgIFtHVEVTVF9DT05GSUc9IiR7d2l0aF9ndGVzdH0vc2NyaXB0
cy9ndGVzdC1jb25maWciXSwKLSAgICAgICAgICAgICAgICAgICBbR1RFU1RfQ09ORklHPSIke3dp
dGhfZ3Rlc3R9L2Jpbi9ndGVzdC1jb25maWciXSkKLSAgICAgICAgICAgIEFTX0lGKFt0ZXN0IC14
ICIke0dURVNUX0NPTkZJR30iXSwgW10sCi0gICAgICAgICAgICAgICAgICBbQUNfTVNHX0VSUk9S
KFtkbmwKLVVuYWJsZSB0byBsb2NhdGUgZWl0aGVyIGEgYnVpbHQgb3IgaW5zdGFsbGVkIEdvb2ds
ZSBUZXN0IGF0ICcke3dpdGhfZ3Rlc3R9Jy5dKQotICAgICAgICAgICAgICAgICAgXSldKQotCi0g
ICAgICBBU19JRihbdGVzdCAteCAiJHtHVEVTVF9DT05GSUd9Il0sIFtdLAotICAgICAgICAgICAg
W0FDX1BBVEhfUFJPRyhbR1RFU1RfQ09ORklHXSwgW2d0ZXN0LWNvbmZpZ10pXSkKLSAgICAgIEFT
X0lGKFt0ZXN0IC14ICIke0dURVNUX0NPTkZJR30iXSwKLSAgICAgICAgICAgIFtBQ19NU0dfQ0hF
Q0tJTkcoW2ZvciBHb29nbGUgVGVzdCB2ZXJzaW9uID49ICR7R1RFU1RfTUlOX1ZFUlNJT059XSkK
LSAgICAgICAgICAgIEFTX0lGKFske0dURVNUX0NPTkZJR30gLS1taW4tdmVyc2lvbj0ke0dURVNU
X01JTl9WRVJTSU9OfV0sCi0gICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSkK
LSAgICAgICAgICAgICAgICAgIEhBVkVfQlVJTFRfR1RFU1Q9InllcyJdLAotICAgICAgICAgICAg
ICAgICAgW0FDX01TR19SRVNVTFQoW25vXSldKV0pXSkKLQotQVNfSUYoW3Rlc3QgIngke0hBVkVf
QlVJTFRfR1RFU1R9IiA9ICJ4eWVzIl0sCi0gICAgICBbR1RFU1RfQ1BQRkxBR1M9YCR7R1RFU1Rf
Q09ORklHfSAtLWNwcGZsYWdzYAotICAgICAgR1RFU1RfQ1hYRkxBR1M9YCR7R1RFU1RfQ09ORklH
fSAtLWN4eGZsYWdzYAotICAgICAgR1RFU1RfTERGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tbGRm
bGFnc2AKLSAgICAgIEdURVNUX0xJQlM9YCR7R1RFU1RfQ09ORklHfSAtLWxpYnNgCi0gICAgICBH
VEVTVF9WRVJTSU9OPWAke0dURVNUX0NPTkZJR30gLS12ZXJzaW9uYF0sCi0gICAgICBbQUNfQ09O
RklHX1NVQkRJUlMoWy4uL2dvb2dsZXRlc3RdKQotICAgICAgIyBHVEVTVF9DT05GSUcgbmVlZHMg
dG8gYmUgZXhlY3V0YWJsZSBib3RoIGluIGEgTWFrZWZpbGUgZW52aXJvbm1vbnQgYW5kCi0gICAg
ICAjIGluIGEgc2hlbGwgc2NyaXB0IGVudmlyb25tZW50LCBzbyByZXNvbHZlIGFuIGFic29sdXRl
IHBhdGggZm9yIGl0IGhlcmUuCi0gICAgICBHVEVTVF9DT05GSUc9ImBwd2QgLVBgLy4uL2dvb2ds
ZXRlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWciCi0gICAgICBHVEVTVF9DUFBGTEFHUz0nLUkkKHRv
cF9zcmNkaXIpLy4uL2dvb2dsZXRlc3QvaW5jbHVkZScKLSAgICAgIEdURVNUX0NYWEZMQUdTPSct
ZycKLSAgICAgIEdURVNUX0xERkxBR1M9JycKLSAgICAgIEdURVNUX0xJQlM9JyQodG9wX2J1aWxk
ZGlyKS8uLi9nb29nbGV0ZXN0L2xpYi9saWJndGVzdC5sYScKLSAgICAgIEdURVNUX1ZFUlNJT049
IiR7R1RFU1RfTUlOX1ZFUlNJT059Il0pCi0KLSMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSkg
Q2hlY2sgdGhlIHR5cGVzLCBzdHJ1Y3R1cmVzLCBhbmQgb3RoZXIgY29tcGlsZXIKLSMgYW5kIGFy
Y2hpdGVjdHVyZSBjaGFyYWN0ZXJpc3RpY3MuCi0KLSMgT3V0cHV0IHRoZSBnZW5lcmF0ZWQgZmls
ZXMuIE5vIGZ1cnRoZXIgYXV0b2NvbmYgbWFjcm9zIG1heSBiZSB1c2VkLgotQUNfT1VUUFVUCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0NoZWF0U2hlZXQubWQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9k
b2NzL0NoZWF0U2hlZXQubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNDQ1MWI4
Nzg2NTRmMzFkZTE0MjhmY2YwMGU1NWI4YWEyMGNkZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kCisr
KyAvZGV2L251bGwKQEAgLTEsNTYyICswLDAgQEAKLQotCi0jIERlZmluaW5nIGEgTW9jayBDbGFz
cyAjCi0KLSMjIE1vY2tpbmcgYSBOb3JtYWwgQ2xhc3MgIyMKLQotR2l2ZW4KLWBgYAotY2xhc3Mg
Rm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgfkZvbygpOwotICB2aXJ0dWFsIGludCBHZXRTaXplKCkg
Y29uc3QgPSAwOwotICB2aXJ0dWFsIHN0cmluZyBEZXNjcmliZShjb25zdCBjaGFyKiBuYW1lKSA9
IDA7Ci0gIHZpcnR1YWwgc3RyaW5nIERlc2NyaWJlKGludCB0eXBlKSA9IDA7Ci0gIHZpcnR1YWwg
Ym9vbCBQcm9jZXNzKEJhciBlbGVtLCBpbnQgY291bnQpID0gMDsKLX07Ci1gYGAKLShub3RlIHRo
YXQgYH5Gb28oKWAgKiptdXN0KiogYmUgdmlydHVhbCkgd2UgY2FuIGRlZmluZSBpdHMgbW9jayBh
cwotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28gewotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U2l6ZSwgaW50KCkpOwotICBNT0NLX01F
VEhPRDEoRGVzY3JpYmUsIHN0cmluZyhjb25zdCBjaGFyKiBuYW1lKSk7Ci0gIE1PQ0tfTUVUSE9E
MShEZXNjcmliZSwgc3RyaW5nKGludCB0eXBlKSk7Ci0gIE1PQ0tfTUVUSE9EMihQcm9jZXNzLCBi
b29sKEJhciBlbGVtLCBpbnQgY291bnQpKTsKLX07Ci1gYGAKLQotVG8gY3JlYXRlIGEgIm5pY2Ui
IG1vY2sgb2JqZWN0IHdoaWNoIGlnbm9yZXMgYWxsIHVuaW50ZXJlc3RpbmcgY2FsbHMsCi1vciBh
ICJzdHJpY3QiIG1vY2sgb2JqZWN0LCB3aGljaCB0cmVhdHMgdGhlbSBhcyBmYWlsdXJlczoKLWBg
YAotTmljZU1vY2s8TW9ja0Zvbz4gbmljZV9mb287ICAgICAvLyBUaGUgdHlwZSBpcyBhIHN1YmNs
YXNzIG9mIE1vY2tGb28uCi1TdHJpY3RNb2NrPE1vY2tGb28+IHN0cmljdF9mb287IC8vIFRoZSB0
eXBlIGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0Zvby4KLWBgYAotCi0jIyBNb2NraW5nIGEgQ2xhc3Mg
VGVtcGxhdGUgIyMKLQotVG8gbW9jawotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNs
YXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIH5TdGFja0lu
dGVyZmFjZSgpOwotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFs
IHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19OwotYGBgCi0obm90ZSB0aGF0IGB+U3Rh
Y2tJbnRlcmZhY2UoKWAgKiptdXN0KiogYmUgdmlydHVhbCkganVzdCBhcHBlbmQgYF9UYCB0byB0
aGUgYE1PQ0tfKmAgbWFjcm9zOgotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNz
IE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7Ci0gcHVibGljOgotICAu
Li4KLSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50KCkpOwotICBNT0NLX01FVEhP
RDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKLX07Ci1gYGAKLQotIyMgU3BlY2lmeWlu
ZyBDYWxsaW5nIENvbnZlbnRpb25zIGZvciBNb2NrIEZ1bmN0aW9ucyAjIwotCi1JZiB5b3VyIG1v
Y2sgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIGRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uLCB5
b3UKLWNhbiBzcGVjaWZ5IGl0IGJ5IGFwcGVuZGluZyBgX1dJVEhfQ0FMTFRZUEVgIHRvIGFueSBv
ZiB0aGUgbWFjcm9zCi1kZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHR3byBzZWN0aW9ucyBhbmQg
c3VwcGx5aW5nIHRoZSBjYWxsaW5nCi1jb252ZW50aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0
byB0aGUgbWFjcm8uIEZvciBleGFtcGxlLAotYGBgCi0gIE1PQ0tfTUVUSE9EXzFfV0lUSF9DQUxM
VFlQRShTVERNRVRIT0RDQUxMVFlQRSwgRm9vLCBib29sKGludCBuKSk7Ci0gIE1PQ0tfQ09OU1Rf
TUVUSE9EMl9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBCYXIsIGludChkb3VibGUg
eCwgZG91YmxlIHkpKTsKLWBgYAotd2hlcmUgYFNURE1FVEhPRENBTExUWVBFYCBpcyBkZWZpbmVk
IGJ5IGA8b2JqYmFzZS5oPmAgb24gV2luZG93cy4KLQotIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAj
Ci0KLVRoZSB0eXBpY2FsIGZsb3cgaXM6Ci0gIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFt
ZXMgeW91IG5lZWQgdG8gdXNlLiBBbGwgR29vZ2xlIE1vY2sgbmFtZXMgYXJlIGluIHRoZSBgdGVz
dGluZ2AgbmFtZXNwYWNlIHVubGVzcyB0aGV5IGFyZSBtYWNyb3Mgb3Igb3RoZXJ3aXNlIG5vdGVk
LgotICAxLiBDcmVhdGUgdGhlIG1vY2sgb2JqZWN0cy4KLSAgMS4gT3B0aW9uYWxseSwgc2V0IHRo
ZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0cy4KLSAgMS4gU2V0IHlvdXIgZXhw
ZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdHMgKEhvdyB3aWxsIHRoZXkgYmUgY2FsbGVkPyBX
aGF0IHdpbCB0aGV5IGRvPykuCi0gIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2Nr
IG9iamVjdHM7IGlmIG5lY2Vzc2FyeSwgY2hlY2sgdGhlIHJlc3VsdCB1c2luZyBbR29vZ2xlIFRl
c3RdKC4uLy4uL2dvb2dsZXRlc3QvKSBhc3NlcnRpb25zLgotICAxLiBXaGVuIGEgbW9jayBvYmpl
Y3RzIGlzIGRlc3RydWN0ZWQsIEdvb2dsZSBNb2NrIGF1dG9tYXRpY2FsbHkgdmVyaWZpZXMgdGhh
dCBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhlcmUgaXMg
YW4gZXhhbXBsZToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICMxCi0KLVRFU1QoQmFyVGVzdCwgRG9lc1RoaXMpIHsKLSAgTW9ja0Zv
byBmb287ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzIKLQotICBPTl9D
QUxMKGZvbywgR2V0U2l6ZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMwotICAgICAg
LldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgLy8gLi4uIG90aGVyIGRlZmF1bHQgYWN0aW9u
cyAuLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIERlc2NyaWJlKDUpKSAgICAgICAgICAgICAgICAg
ICAvLyAjNAotICAgICAgLlRpbWVzKDMpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJD
YXRlZ29yeSA1IikpOwotICAvLyAuLi4gb3RoZXIgZXhwZWN0YXRpb25zIC4uLgotCi0gIEVYUEVD
VF9FUSgiZ29vZCIsIE15UHJvZHVjdGlvbkZ1bmN0aW9uKCZmb28pKTsgIC8vICM1Ci19ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICM2Ci1gYGAKLQot
IyBTZXR0aW5nIERlZmF1bHQgQWN0aW9ucyAjCi0KLUdvb2dsZSBNb2NrIGhhcyBhICoqYnVpbHQt
aW4gZGVmYXVsdCBhY3Rpb24qKiBmb3IgYW55IGZ1bmN0aW9uIHRoYXQKLXJldHVybnMgYHZvaWRg
LCBgYm9vbGAsIGEgbnVtZXJpYyB2YWx1ZSwgb3IgYSBwb2ludGVyLgotCi1UbyBjdXN0b21pemUg
dGhlIGRlZmF1bHQgYWN0aW9uIGZvciBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdHlwZSBgVGAgZ2xv
YmFsbHk6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlOwotCi0vLyBTZXRzIHRo
ZSBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVybmVkLiBUIG11c3QgYmUgQ29weUNvbnN0cnVjdGli
bGUuCi1EZWZhdWx0VmFsdWU8VD46OlNldCh2YWx1ZSk7Ci0vLyBTZXRzIGEgZmFjdG9yeS4gV2ls
bCBiZSBpbnZva2VkIG9uIGRlbWFuZC4gVCBtdXN0IGJlIE1vdmVDb25zdHJ1Y3RpYmxlLgotLy8g
ICBUIE1ha2VUKCk7Ci1EZWZhdWx0VmFsdWU8VD46OlNldEZhY3RvcnkoJk1ha2VUKTsKLS8vIC4u
LiB1c2UgdGhlIG1vY2tzIC4uLgotLy8gUmVzZXRzIHRoZSBkZWZhdWx0IHZhbHVlLgotRGVmYXVs
dFZhbHVlPFQ+OjpDbGVhcigpOwotYGBgCi0KLVRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rp
b24gZm9yIGEgcGFydGljdWxhciBtZXRob2QsIHVzZSBgT05fQ0FMTCgpYDoKLWBgYAotT05fQ0FM
TChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVu
dF9tYXRjaGVyKSAgPwotICAgIC5XaWxsQnlEZWZhdWx0KGFjdGlvbik7Ci1gYGAKLQotIyBTZXR0
aW5nIEV4cGVjdGF0aW9ucyAjCi0KLWBFWFBFQ1RfQ0FMTCgpYCBzZXRzICoqZXhwZWN0YXRpb25z
Kiogb24gYSBtb2NrIG1ldGhvZCAoSG93IHdpbGwgaXQgYmUKLWNhbGxlZD8gV2hhdCB3aWxsIGl0
IGRvPyk6Ci1gYGAKLUVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQot
ICAgIC5XaXRoKG11bHRpX2FyZ3VtZW50X21hdGNoZXIpICA/Ci0gICAgLlRpbWVzKGNhcmRpbmFs
aXR5KSAgICAgICAgICAgID8KLSAgICAuSW5TZXF1ZW5jZShzZXF1ZW5jZXMpICAgICAgICAgKgot
ICAgIC5BZnRlcihleHBlY3RhdGlvbnMpICAgICAgICAgICAqCi0gICAgLldpbGxPbmNlKGFjdGlv
bikgICAgICAgICAgICAgICoKLSAgICAuV2lsbFJlcGVhdGVkbHkoYWN0aW9uKSAgICAgICAgPwot
ICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7ICAgICAgICA/Ci1gYGAKLQotSWYgYFRpbWVzKClg
IGlzIG9taXR0ZWQsIHRoZSBjYXJkaW5hbGl0eSBpcyBhc3N1bWVkIHRvIGJlOgotCi0gICogYFRp
bWVzKDEpYCB3aGVuIHRoZXJlIGlzIG5laXRoZXIgYFdpbGxPbmNlKClgIG5vciBgV2lsbFJlcGVh
dGVkbHkoKWA7Ci0gICogYFRpbWVzKG4pYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMg
YnV0IG5vIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDE7IG9yCi0gICogYFRpbWVz
KEF0TGVhc3QobikpYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYW5kIGEgYFdpbGxS
ZXBlYXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMC4KLQotQSBtZXRob2Qgd2l0aCBubyBgRVhQRUNU
X0NBTEwoKWAgaXMgZnJlZSB0byBiZSBpbnZva2VkIF9hbnkgbnVtYmVyIG9mIHRpbWVzXywgYW5k
IHRoZSBkZWZhdWx0IGFjdGlvbiB3aWxsIGJlIHRha2VuIGVhY2ggdGltZS4KLQotIyBNYXRjaGVy
cyAjCi0KLUEgKiptYXRjaGVyKiogbWF0Y2hlcyBhIF9zaW5nbGVfIGFyZ3VtZW50LiAgWW91IGNh
biB1c2UgaXQgaW5zaWRlCi1gT05fQ0FMTCgpYCBvciBgRVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBp
dCB0byB2YWxpZGF0ZSBhIHZhbHVlCi1kaXJlY3RseToKLQotfCBgRVhQRUNUX1RIQVQodmFsdWUs
IG1hdGNoZXIpYCB8IEFzc2VydHMgdGhhdCBgdmFsdWVgIG1hdGNoZXMgYG1hdGNoZXJgLiB8Ci18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUg
c2FtZSBhcyBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2Vu
ZXJhdGVzIGEgKipmYXRhbCoqIGZhaWx1cmUuIHwKLQotQnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJl
IGBhcmd1bWVudGAgaXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50KSBhcmUKLWRpdmlkZWQgaW50byBz
ZXZlcmFsIGNhdGVnb3JpZXM6Ci0KLSMjIFdpbGRjYXJkICMjCi18YF9gfGBhcmd1bWVudGAgY2Fu
IGJlIGFueSB2YWx1ZSBvZiB0aGUgY29ycmVjdCB0eXBlLnwKLXw6LS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBPHR5cGU+KClgIG9yIGBBbjx0
eXBlPigpYHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdHlwZSBgdHlwZWAuICAgICB8
Ci0KLSMjIEdlbmVyaWMgQ29tcGFyaXNvbiAjIwotCi18YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxg
YXJndW1lbnQgPT0gdmFsdWVgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLXwKLXxgR2UodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA+PSB2YWx1ZWB8Ci18
YEd0KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPiB2YWx1ZWAgfAotfGBMZSh2YWx1ZSlg
ICAgICAgICAgICB8YGFyZ3VtZW50IDw9IHZhbHVlYHwKLXxgTHQodmFsdWUpYCAgICAgICAgICAg
fGBhcmd1bWVudCA8IHZhbHVlYCB8Ci18YE5lKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQg
IT0gdmFsdWVgfAotfGBJc051bGwoKWAgICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxM
YCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKLXxgTm90TnVsbCgpYCAgICAgICAgICAgfGBhcmd1
bWVudGAgaXMgYSBub24tbnVsbCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKLXxgUmVmKHZhcmlh
YmxlKWAgICAgICAgfGBhcmd1bWVudGAgaXMgYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC58Ci18
YFR5cGVkRXE8dHlwZT4odmFsdWUpYHxgYXJndW1lbnRgIGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMg
ZXF1YWwgdG8gYHZhbHVlYC4gWW91IG1heSBuZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgYEVx
KHZhbHVlKWAgd2hlbiB0aGUgbW9jayBmdW5jdGlvbiBpcyBvdmVybG9hZGVkLnwKLQotRXhjZXB0
IGBSZWYoKWAsIHRoZXNlIG1hdGNoZXJzIG1ha2UgYSBfY29weV8gb2YgYHZhbHVlYCBpbiBjYXNl
IGl0J3MKLW1vZGlmaWVkIG9yIGRlc3RydWN0ZWQgbGF0ZXIuIElmIHRoZSBjb21waWxlciBjb21w
bGFpbnMgdGhhdCBgdmFsdWVgCi1kb2Vzbid0IGhhdmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3Rv
ciwgdHJ5IHdyYXAgaXQgaW4gYEJ5UmVmKClgLAotZS5nLiBgRXEoQnlSZWYobm9uX2NvcHlhYmxl
X3ZhbHVlKSlgLiBJZiB5b3UgZG8gdGhhdCwgbWFrZSBzdXJlCi1gbm9uX2NvcHlhYmxlX3ZhbHVl
YCBpcyBub3QgY2hhbmdlZCBhZnRlcndhcmRzLCBvciB0aGUgbWVhbmluZyBvZiB5b3VyCi1tYXRj
aGVyIHdpbGwgYmUgY2hhbmdlZC4KLQotIyMgRmxvYXRpbmctUG9pbnQgTWF0Y2hlcnMgIyMKLQot
fGBEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHBy
b3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1
YWwufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfGBGbG9hdEVxKGFfZmxvYXQpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRg
IHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFfZmxvYXRgLCB0cmVhdGluZyB0d28gTmFO
cyBhcyB1bmVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1
bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJs
ZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVGbG9hdEVx
KGFfZmxvYXQpYHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVx
dWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKLQotVGhl
IGFib3ZlIG1hdGNoZXJzIHVzZSBVTFAtYmFzZWQgY29tcGFyaXNvbiAodGhlIHNhbWUgYXMgdXNl
ZCBpbgotW0dvb2dsZSBUZXN0XSguLi8uLi9nb29nbGV0ZXN0LykpLiBUaGV5Ci1hdXRvbWF0aWNh
bGx5IHBpY2sgYSByZWFzb25hYmxlIGVycm9yIGJvdW5kIGJhc2VkIG9uIHRoZSBhYnNvbHV0ZQot
dmFsdWUgb2YgdGhlIGV4cGVjdGVkIHZhbHVlLiAgYERvdWJsZUVxKClgIGFuZCBgRmxvYXRFcSgp
YCBjb25mb3JtIHRvCi10aGUgSUVFRSBzdGFuZGFyZCwgd2hpY2ggcmVxdWlyZXMgY29tcGFyaW5n
IHR3byBOYU5zIGZvciBlcXVhbGl0eSB0bwotcmV0dXJuIGZhbHNlLiBUaGUgYE5hblNlbnNpdGl2
ZSpgIHZlcnNpb24gaW5zdGVhZCB0cmVhdHMgdHdvIE5hTnMgYXMKLWVxdWFsLCB3aGljaCBpcyBv
ZnRlbiB3aGF0IGEgdXNlciB3YW50cy4KLQotfGBEb3VibGVOZWFyKGFfZG91YmxlLCBtYXhfYWJz
X2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBkb3VibGVgIHZhbHVlIGNsb3NlIHRvIGBhX2RvdWJs
ZWAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBOYU5z
IGFzIHVuZXF1YWwufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotfGBGbG9hdE5lYXIoYV9mbG9hdCwgbWF4X2Fic19lcnJvcilgICB8YGFyZ3VtZW50YCBpcyBh
IGBmbG9hdGAgdmFsdWUgY2xvc2UgdG8gYGFfZmxvYXRgIChhYnNvbHV0ZSBlcnJvciA8PSBgbWF4
X2Fic19lcnJvcmApLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLiAgfAotfGBOYW5TZW5z
aXRpdmVEb3VibGVOZWFyKGFfZG91YmxlLCBtYXhfYWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBh
IGBkb3VibGVgIHZhbHVlIGNsb3NlIHRvIGBhX2RvdWJsZWAgKGFic29sdXRlIGVycm9yIDw9IGBt
YXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgfAotfGBOYW5TZW5z
aXRpdmVGbG9hdE5lYXIoYV9mbG9hdCwgbWF4X2Fic19lcnJvcilgfGBhcmd1bWVudGAgaXMgYSBg
ZmxvYXRgIHZhbHVlIGNsb3NlIHRvIGBhX2Zsb2F0YCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9h
YnNfZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKLQotIyMgU3RyaW5n
IE1hdGNoZXJzICMjCi0KLVRoZSBgYXJndW1lbnRgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBv
ciBhIEMrKyBzdHJpbmcgb2JqZWN0OgotCi18YENvbnRhaW5zUmVnZXgoc3RyaW5nKWB8YGFyZ3Vt
ZW50YCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24ufAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXxgRW5kc1dpdGgoc3VmZml4KWAgICAgIHxgYXJndW1lbnRgIGVuZHMgd2l0aCBzdHJp
bmcgYHN1ZmZpeGAuICAgICAgICAgICB8Ci18YEhhc1N1YnN0cihzdHJpbmcpYCAgICB8YGFyZ3Vt
ZW50YCBjb250YWlucyBgc3RyaW5nYCBhcyBhIHN1Yi1zdHJpbmcuICAgfAotfGBNYXRjaGVzUmVn
ZXgoc3RyaW5nKWAgfGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNz
aW9uIHdpdGggdGhlIG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGVu
ZGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIufAotfGBTdGFydHNXaXRoKHByZWZpeClgICAgfGBh
cmd1bWVudGAgc3RhcnRzIHdpdGggc3RyaW5nIGBwcmVmaXhgLiAgICAgICAgIHwKLXxgU3RyQ2Fz
ZUVxKHN0cmluZylgICAgIHxgYXJndW1lbnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmlu
ZyBjYXNlLiB8Ci18YFN0ckNhc2VOZShzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1
YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5nIGNhc2UufAotfGBTdHJFcShzdHJpbmcpYCAgICAgICAg
fGBhcmd1bWVudGAgaXMgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgICAgIHwKLXxgU3Ry
TmUoc3RyaW5nKWAgICAgICAgIHxgYXJndW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYC4g
ICAgICAgICAgICB8Ci0KLWBDb250YWluc1JlZ2V4KClgIGFuZCBgTWF0Y2hlc1JlZ2V4KClgIHVz
ZSB0aGUgcmVndWxhciBleHByZXNzaW9uCi1zeW50YXggZGVmaW5lZAotW2hlcmVdKC4uLy4uL2dv
b2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRlLm1kI3JlZ3VsYXItZXhwcmVzc2lvbi1zeW50YXgp
LgotYFN0ckNhc2VFcSgpYCwgYFN0ckNhc2VOZSgpYCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClg
IHdvcmsgZm9yIHdpZGUKLXN0cmluZ3MgYXMgd2VsbC4KLQotIyMgQ29udGFpbmVyIE1hdGNoZXJz
ICMjCi0KLU1vc3QgU1RMLXN0eWxlIGNvbnRhaW5lcnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2Fu
IHVzZQotYEVxKGV4cGVjdGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFp
bmVyYCB0byBtYXRjaCBhCi1jb250YWluZXIgZXhhY3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0
ZSB0aGUgZWxlbWVudHMgaW4tbGluZSwKLW1hdGNoIHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0
IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMsIHlvdSBjYW4gdXNlOgotCi18IGBDb250YWluZXJF
cShjb250YWluZXIpYCB8IFRoZSBzYW1lIGFzIGBFcShjb250YWluZXIpYCBleGNlcHQgdGhhdCB0
aGUgZmFpbHVyZSBtZXNzYWdlIGFsc28gaW5jbHVkZXMgd2hpY2ggZWxlbWVudHMgYXJlIGluIG9u
ZSBjb250YWluZXIgYnV0IG5vdCB0aGUgb3RoZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgQ29udGFpbnMoZSlgICAgICAgICAgICAgfCBgYXJn
dW1lbnRgIGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJl
IGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBFYWNoKGUpYCAgICAgICAgICAgICAgICB8IGBhcmd1bWVudGAgaXMg
YSBjb250YWluZXIgd2hlcmUgX2V2ZXJ5XyBlbGVtZW50IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4g
YmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLXwgYEVsZW1lbnRzQXJlKGUwLCBlMSwgLi4uLCBlbilgIHwgYGFyZ3VtZW50YCBoYXMgYG4g
KyAxYCBlbGVtZW50cywgd2hlcmUgdGhlIGktdGggZWxlbWVudCBtYXRjaGVzIGBlaWAsIHdoaWNo
IGNhbiBiZSBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFsbG93
ZWQuIHwKLXwgYEVsZW1lbnRzQXJlQXJyYXkoeyBlMCwgZTEsIC4uLiwgZW4gfSlgLCBgRWxlbWVu
dHNBcmVBcnJheShhcnJheSlgLCBvciBgRWxlbWVudHNBcmVBcnJheShhcnJheSwgY291bnQpYCB8
IFRoZSBzYW1lIGFzIGBFbGVtZW50c0FyZSgpYCBleGNlcHQgdGhhdCB0aGUgZXhwZWN0ZWQgZWxl
bWVudCB2YWx1ZXMvbWF0Y2hlcnMgY29tZSBmcm9tIGFuIGluaXRpYWxpemVyIGxpc3QsIFNUTC1z
dHlsZSBjb250YWluZXIsIG9yIEMtc3R5bGUgYXJyYXkuIHwKLXwgYElzRW1wdHkoKWAgICAgICAg
ICAgICAgIHwgYGFyZ3VtZW50YCBpcyBhbiBlbXB0eSBjb250YWluZXIgKGBjb250YWluZXIuZW1w
dHkoKWApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgUG9pbnR3aXNlKG0sIGNvbnRhaW5lcilgIHwg
YGFyZ3VtZW50YCBjb250YWlucyB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMgYXMgaW4gYGNv
bnRhaW5lcmAsIGFuZCBmb3IgYWxsIGksICh0aGUgaS10aCBlbGVtZW50IGluIGBhcmd1bWVudGAs
IHRoZSBpLXRoIGVsZW1lbnQgaW4gYGNvbnRhaW5lcmApIG1hdGNoIGBtYCwgd2hpY2ggaXMgYSBt
YXRjaGVyIG9uIDItdHVwbGVzLiBFLmcuIGBQb2ludHdpc2UoTGUoKSwgdXBwZXJfYm91bmRzKWAg
dmVyaWZpZXMgdGhhdCBlYWNoIGVsZW1lbnQgaW4gYGFyZ3VtZW50YCBkb2Vzbid0IGV4Y2VlZCB0
aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIGB1cHBlcl9ib3VuZHNgLiBTZWUgbW9yZSBkZXRh
aWwgYmVsb3cuIHwKLXwgYFNpemVJcyhtKWAgICAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBpcyBh
IGNvbnRhaW5lciB3aG9zZSBzaXplIG1hdGNoZXMgYG1gLiBFLmcuIGBTaXplSXMoMilgIG9yIGBT
aXplSXMoTHQoMikpYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAotfCBgVW5vcmRlcmVkRWxlbWVudHNBcmUoZTAsIGUxLCAuLi4sIGVuKWAgfCBgYXJndW1lbnRg
IGhhcyBgbiArIDFgIGVsZW1lbnRzLCBhbmQgdW5kZXIgc29tZSBwZXJtdXRhdGlvbiBlYWNoIGVs
ZW1lbnQgbWF0Y2hlcyBhbiBgZWlgIChmb3IgYSBkaWZmZXJlbnQgYGlgKSwgd2hpY2ggY2FuIGJl
IGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAwIHRvIDEwIGFyZ3VtZW50cyBhcmUgYWxsb3dlZC4gfAot
fCBgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7IGUwLCBlMSwgLi4uLCBlbiB9KWAsIGBVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5KGFycmF5KWAsIG9yIGBVbm9yZGVyZWRFbGVtZW50c0FyZUFy
cmF5KGFycmF5LCBjb3VudClgIHwgVGhlIHNhbWUgYXMgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClg
IGV4Y2VwdCB0aGF0IHRoZSBleHBlY3RlZCBlbGVtZW50IHZhbHVlcy9tYXRjaGVycyBjb21lIGZy
b20gYW4gaW5pdGlhbGl6ZXIgbGlzdCwgU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgQy1zdHlsZSBh
cnJheS4gfAotfCBgV2hlblNvcnRlZChtKWAgICAgICAgICAgfCBXaGVuIGBhcmd1bWVudGAgaXMg
c29ydGVkIHVzaW5nIHRoZSBgPGAgb3BlcmF0b3IsIGl0IG1hdGNoZXMgY29udGFpbmVyIG1hdGNo
ZXIgYG1gLiBFLmcuIGBXaGVuU29ydGVkKFVub3JkZXJlZEVsZW1lbnRzQXJlKDEsIDIsIDMpKWAg
dmVyaWZpZXMgdGhhdCBgYXJndW1lbnRgIGNvbnRhaW5zIGVsZW1lbnRzIGAxYCwgYDJgLCBhbmQg
YDNgLCBpZ25vcmluZyBvcmRlci4gfAotfCBgV2hlblNvcnRlZEJ5KGNvbXBhcmF0b3IsIG0pYCB8
IFRoZSBzYW1lIGFzIGBXaGVuU29ydGVkKG0pYCwgZXhjZXB0IHRoYXQgdGhlIGdpdmVuIGNvbXBh
cmF0b3IgaW5zdGVhZCBvZiBgPGAgaXMgdXNlZCB0byBzb3J0IGBhcmd1bWVudGAuIEUuZy4gYFdo
ZW5Tb3J0ZWRCeShzdGQ6OmdyZWF0ZXI8aW50PigpLCBFbGVtZW50c0FyZSgzLCAyLCAxKSlgLiB8
Ci0KLU5vdGVzOgotCi0gICogVGhlc2UgbWF0Y2hlcnMgY2FuIGFsc28gbWF0Y2g6Ci0gICAgMS4g
YSBuYXRpdmUgYXJyYXkgcGFzc2VkIGJ5IHJlZmVyZW5jZSAoZS5nLiBpbiBgRm9vKGNvbnN0IGlu
dCAoJmEpWzVdKWApLCBhbmQKLSAgICAxLiBhbiBhcnJheSBwYXNzZWQgYXMgYSBwb2ludGVyIGFu
ZCBhIGNvdW50IChlLmcuIGluIGBCYXIoY29uc3QgVCogYnVmZmVyLCBpbnQgbGVuKWAgLS0gc2Vl
IFtNdWx0aS1hcmd1bWVudCBNYXRjaGVyc10oI011bHRpYXJndW1lbnRfTWF0Y2hlcnMubWQpKS4K
LSAgKiBUaGUgYXJyYXkgYmVpbmcgbWF0Y2hlZCBtYXkgYmUgbXVsdGktZGltZW5zaW9uYWwgKGku
ZS4gaXRzIGVsZW1lbnRzIGNhbiBiZSBhcnJheXMpLgotICAqIGBtYCBpbiBgUG9pbnR3aXNlKG0s
IC4uLilgIHNob3VsZCBiZSBhIG1hdGNoZXIgZm9yIGA6OnRlc3Rpbmc6OnR1cGxlPFQsIFU+YCB3
aGVyZSBgVGAgYW5kIGBVYCBhcmUgdGhlIGVsZW1lbnQgdHlwZSBvZiB0aGUgYWN0dWFsIGNvbnRh
aW5lciBhbmQgdGhlIGV4cGVjdGVkIGNvbnRhaW5lciwgcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBs
ZSwgdG8gY29tcGFyZSB0d28gYEZvb2AgY29udGFpbmVycyB3aGVyZSBgRm9vYCBkb2Vzbid0IHN1
cHBvcnQgYG9wZXJhdG9yPT1gIGJ1dCBoYXMgYW4gYEVxdWFscygpYCBtZXRob2QsIG9uZSBtaWdo
dCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OmdldDsKLU1BVENIRVIoRm9vRXEsICIi
KSB7Ci0gIHJldHVybiBnZXQ8MD4oYXJnKS5FcXVhbHMoZ2V0PDE+KGFyZykpOwotfQotLi4uCi1F
WFBFQ1RfVEhBVChhY3R1YWxfZm9vcywgUG9pbnR3aXNlKEZvb0VxKCksIGV4cGVjdGVkX2Zvb3Mp
KTsKLWBgYAotCi0jIyBNZW1iZXIgTWF0Y2hlcnMgIyMKLQotfGBGaWVsZCgmY2xhc3M6OmZpZWxk
LCBtKWB8YGFyZ3VtZW50LmZpZWxkYCAob3IgYGFyZ3VtZW50LT5maWVsZGAgd2hlbiBgYXJndW1l
bnRgIGlzIGEgcGxhaW4gcG9pbnRlcikgbWF0Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGFyZ3Vt
ZW50YCBpcyBhbiBvYmplY3Qgb2YgdHlwZSBfY2xhc3NfLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEtleShlKWAgICAgICAgICAg
ICAgICAgIHxgYXJndW1lbnQuZmlyc3RgIG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVy
IGEgdmFsdWUgb3IgYSBtYXRjaGVyLiBFLmcuIGBDb250YWlucyhLZXkoTGUoNSkpKWAgY2FuIHZl
cmlmeSB0aGF0IGEgYG1hcGAgY29udGFpbnMgYSBrZXkgYDw9IDVgLnwKLXxgUGFpcihtMSwgbTIp
YCAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYW4gYHN0ZDo6cGFpcmAgd2hvc2UgYGZpcnN0YCBm
aWVsZCBtYXRjaGVzIGBtMWAgYW5kIGBzZWNvbmRgIGZpZWxkIG1hdGNoZXMgYG0yYC4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFByb3BlcnR5KCZj
bGFzczo6cHJvcGVydHksIG0pYHxgYXJndW1lbnQucHJvcGVydHkoKWAgKG9yIGBhcmd1bWVudC0+
cHJvcGVydHkoKWAgd2hlbiBgYXJndW1lbnRgIGlzIGEgcGxhaW4gcG9pbnRlcikgbWF0Y2hlcyBt
YXRjaGVyIGBtYCwgd2hlcmUgYGFyZ3VtZW50YCBpcyBhbiBvYmplY3Qgb2YgdHlwZSBfY2xhc3Nf
LnwKLQotIyMgTWF0Y2hpbmcgdGhlIFJlc3VsdCBvZiBhIEZ1bmN0aW9uIG9yIEZ1bmN0b3IgIyMK
LQotfGBSZXN1bHRPZihmLCBtKWB8YGYoYXJndW1lbnQpYCBtYXRjaGVzIG1hdGNoZXIgYG1gLCB3
aGVyZSBgZmAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yLnwKLXw6LS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Ci0KLSMjIFBvaW50ZXIgTWF0Y2hlcnMgIyMKLQotfGBQb2ludGVlKG0pYHxg
YXJndW1lbnRgIChlaXRoZXIgYSBzbWFydCBwb2ludGVyIG9yIGEgcmF3IHBvaW50ZXIpIHBvaW50
cyB0byBhIHZhbHVlIHRoYXQgbWF0Y2hlcyBtYXRjaGVyIGBtYC58Ci18Oi0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgV2hlbkR5bmFtaWNDYXN0
VG88VD4obSlgfCB3aGVuIGBhcmd1bWVudGAgaXMgcGFzc2VkIHRocm91Z2ggYGR5bmFtaWNfY2Fz
dDxUPigpYCwgaXQgbWF0Y2hlcyBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICAgIHwKLQotIyMg
TXVsdGlhcmd1bWVudCBNYXRjaGVycyAjIwotCi1UZWNobmljYWxseSwgYWxsIG1hdGNoZXJzIG1h
dGNoIGEgX3NpbmdsZV8gdmFsdWUuIEEgIm11bHRpLWFyZ3VtZW50IgotbWF0Y2hlciBpcyBqdXN0
IG9uZSB0aGF0IG1hdGNoZXMgYSBfdHVwbGVfLiBUaGUgZm9sbG93aW5nIG1hdGNoZXJzIGNhbgot
YmUgdXNlZCB0byBtYXRjaCBhIHR1cGxlIGAoeCwgeSlgOgotCi18YEVxKClgfGB4ID09IHlgfAot
fDotLS0tLXw6LS0tLS0tLXwKLXxgR2UoKWB8YHggPj0geWB8Ci18YEd0KClgfGB4ID4geWAgfAot
fGBMZSgpYHxgeCA8PSB5YHwKLXxgTHQoKWB8YHggPCB5YCB8Ci18YE5lKClgfGB4ICE9IHlgfAot
Ci1Zb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNlbGVjdG9ycyB0byBwaWNrIGEgc3Vic2V0IG9m
IHRoZSBhcmd1bWVudHMKLShvciByZW9yZGVyIHRoZW0pIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBt
YXRjaGluZzoKLQotfGBBbGxBcmdzKG0pYHxFcXVpdmFsZW50IHRvIGBtYC4gVXNlZnVsIGFzIHN5
bnRhY3RpYyBzdWdhciBpbiBgLldpdGgoQWxsQXJncyhtKSlgLnwKLXw6LS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Ci18YEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihtKWB8VGhlIHR1cGxlIG9mIHRoZSBg
a2Agc2VsZWN0ZWQgKHVzaW5nIDAtYmFzZWQgaW5kaWNlcykgYXJndW1lbnRzIG1hdGNoZXMgYG1g
LCBlLmcuIGBBcmdzPDEsIDI+KEVxKCkpYC58Ci0KLSMjIENvbXBvc2l0ZSBNYXRjaGVycyAjIwot
Ci1Zb3UgY2FuIG1ha2UgYSBtYXRjaGVyIGZyb20gb25lIG9yIG1vcmUgb3RoZXIgbWF0Y2hlcnM6
Ci0KLXxgQWxsT2YobTEsIG0yLCAuLi4sIG1uKWB8YGFyZ3VtZW50YCBtYXRjaGVzIGFsbCBvZiB0
aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQW55
T2YobTEsIG0yLCAuLi4sIG1uKWB8YGFyZ3VtZW50YCBtYXRjaGVzIGF0IGxlYXN0IG9uZSBvZiB0
aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwKLXxgTm90KG0pYCAgICAgICAgICAgICAgICB8YGFy
Z3VtZW50YCBkb2Vzbid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAgICAgICAgICAgIHwKLQotIyMg
QWRhcHRlcnMgZm9yIE1hdGNoZXJzICMjCi0KLXxgTWF0Y2hlckNhc3Q8VD4obSlgfGNhc3RzIG1h
dGNoZXIgYG1gIHRvIHR5cGUgYE1hdGNoZXI8VD5gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgU2FmZU1hdGNoZXJDYXN0
PFQ+KG0pYHwgW3NhZmVseSBjYXN0c10oQ29va0Jvb2subWQjY2FzdGluZy1tYXRjaGVycykgbWF0
Y2hlciBgbWAgdG8gdHlwZSBgTWF0Y2hlcjxUPmAuIHwKLXxgVHJ1bHkocHJlZGljYXRlKWAgfGBw
cmVkaWNhdGUoYXJndW1lbnQpYCByZXR1cm5zIHNvbWV0aGluZyBjb25zaWRlcmVkIGJ5IEMrKyB0
byBiZSB0cnVlLCB3aGVyZSBgcHJlZGljYXRlYCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAot
Ci0jIyBNYXRjaGVycyBhcyBQcmVkaWNhdGVzICMjCi0KLXxgTWF0Y2hlcyhtKSh2YWx1ZSlgfGV2
YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYC4gWW91IGNhbiB1c2UgYE1h
dGNoZXMobSlgIGFsb25lIGFzIGEgdW5hcnkgZnVuY3Rvci58Ci18Oi0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFeHBsYWluTWF0Y2hS
ZXN1bHQobSwgdmFsdWUsIHJlc3VsdF9saXN0ZW5lcilgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYg
YHZhbHVlYCBtYXRjaGVzIGBtYCwgZXhwbGFpbmluZyB0aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlz
dGVuZXJgLiAgICAgICB8Ci18YFZhbHVlKHZhbHVlLCBtKWAgIHxldmFsdWF0ZXMgdG8gYHRydWVg
IGlmIGB2YWx1ZWAgbWF0Y2hlcyBgbWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotCi0jIyBEZWZpbmluZyBNYXRjaGVycyAjIwotCi18IGBNQVRD
SEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChhcmcgJSAyKSA9PSAwOyB9YCB8IERlZmluZXMgYSBt
YXRjaGVyIGBJc0V2ZW4oKWAgdG8gbWF0Y2ggYW4gZXZlbiBudW1iZXIuIHwKLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgTUFUQ0hFUl9QKElz
RGl2aXNpYmxlQnksIG4sICIiKSB7ICpyZXN1bHRfbGlzdGVuZXIgPDwgIndoZXJlIHRoZSByZW1h
aW5kZXIgaXMgIiA8PCAoYXJnICUgbik7IHJldHVybiAoYXJnICUgbikgPT0gMDsgfWAgfCBEZWZp
bmVzIGEgbWFjaGVyIGBJc0RpdmlzaWJsZUJ5KG4pYCB0byBtYXRjaCBhIG51bWJlciBkaXZpc2li
bGUgYnkgYG5gLiB8Ci18IGBNQVRDSEVSX1AyKElzQmV0d2VlbiwgYSwgYiwgc3RkOjpzdHJpbmco
bmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikgKyAiIGJldHdlZW4gIiArIFByaW50VG9TdHJpbmco
YSkgKyAiIGFuZCAiICsgUHJpbnRUb1N0cmluZyhiKSkgeyByZXR1cm4gYSA8PSBhcmcgJiYgYXJn
IDw9IGI7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElzQmV0d2VlbihhLCBiKWAgdG8gbWF0Y2gg
YSB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2BhYCwgYGJgXS4gfAotCi0qKk5vdGVzOioqCi0KLSAgMS4g
VGhlIGBNQVRDSEVSKmAgbWFjcm9zIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9y
IGNsYXNzLgotICAxLiBUaGUgbWF0Y2hlciBib2R5IG11c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFs
XyAoaS5lLiBpdCBjYW5ub3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11
c3Qgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRj
aGVkIGFuZCB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJzKS4KLSAgMS4gWW91IGNhbiB1c2UgYFByaW50
VG9TdHJpbmcoeClgIHRvIGNvbnZlcnQgYSB2YWx1ZSBgeGAgb2YgYW55IHR5cGUgdG8gYSBzdHJp
bmcuCi0KLSMjIE1hdGNoZXJzIGFzIFRlc3QgQXNzZXJ0aW9ucyAjIwotCi18YEFTU0VSVF9USEFU
KGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBbZmF0YWwgZmFpbHVyZV0oLi4vLi4vZ29vZ2xl
dGVzdC9kb2NzL1ByaW1lci5tZCNhc3NlcnRpb25zKSBpZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Np
b25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEVYUEVDVF9USEFUKGV4cHJl
c3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFpbHVyZSBpZiB0aGUgdmFsdWUgb2Yg
YGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQotIyBBY3Rpb25zICMK
LQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5jdGlvbiBzaG91bGQgZG8gd2hl
biBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIwotCi18YFJldHVybigpYHxSZXR1
cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKLXw6LS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBSZXR1cm4odmFsdWUpYHxSZXR1cm4gYHZhbHVl
YC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBpcyBkaWZmZXJlbnQgdG8gdGhlIG1vY2sgZnVuY3Rp
b24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxhdHRlciB0eXBl
IDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQ8L2k+LCBub3Qgd2hlbiB0aGUg
YWN0aW9uIGlzIGV4ZWN1dGVkLnwKLXxgUmV0dXJuQXJnPE4+KClgfFJldHVybiB0aGUgYE5gLXRo
ICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJldHVybk5ldzxUPihhMSwgLi4uLCBhaylgfFJldHVy
biBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0IGlzIGNyZWF0ZWQgZWFj
aCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBvaW50ZXIuICAgICAgICAg
ICAgIHwKLXxgUmV0dXJuUG9pbnRlZShwdHIpYHxSZXR1cm4gdGhlIHZhbHVlIHBvaW50ZWQgdG8g
YnkgYHB0cmAufAotfGBSZXR1cm5SZWYodmFyaWFibGUpYHxSZXR1cm4gYSByZWZlcmVuY2UgdG8g
YHZhcmlhYmxlYC4gIHwKLXxgUmV0dXJuUmVmT2ZDb3B5KHZhbHVlKWB8UmV0dXJuIGEgcmVmZXJl
bmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0aGUgY29weSBsaXZlcyBhcyBsb25nIGFzIHRoZSBh
Y3Rpb24ufAotCi0jIyBTaWRlIEVmZmVjdHMgIyMKLQotfGBBc3NpZ24oJnZhcmlhYmxlLCB2YWx1
ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlhYmxlLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBEZWxldGVBcmc8Tj4oKWAgICAg
ICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBi
ZSBhIHBvaW50ZXIuIHwKLXwgYFNhdmVBcmc8Tj4ocG9pbnRlcilgICAgIHwgU2F2ZSB0aGUgYE5g
LXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8Ci18IGBTYXZlQXJnUG9pbnRl
ZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKLXwgYFNldEFyZ1JlZmVyZWU8Tj4o
dmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBieSB0aGUg
YE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAotfGBTZXRBcmdQb2ludGVlPE4+KHZhbHVlKWAg
fEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJpYWJsZSBwb2ludGVkIGJ5IHRoZSBgTmAtdGggKDAt
YmFzZWQpIGFyZ3VtZW50LnwKLXxgU2V0QXJndW1lbnRQb2ludGVlPE4+KHZhbHVlKWB8U2FtZSBh
cyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgLiBEZXByZWNhdGVkLiBXaWxsIGJlIHJlbW92ZWQg
aW4gdjEuNy4wLnwKLXxgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClgfENvcGllcyB0
aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIFtgZmlyc3RgLCBgbGFzdGApIHRvIHRoZSBhcnJh
eSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGljaCBjYW4g
YmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBpdGVyYXRvci4gVGhlIGFjdGlvbiBkb2VzIG5vdCB0
YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSByYW5nZS58Ci18YFNl
dEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1ZSlgfFNldCBgZXJybm9gIHRvIGBlcnJvcmAgYW5k
IHJldHVybiBgdmFsdWVgLnwKLXxgVGhyb3coZXhjZXB0aW9uKWAgICAgICAgIHxUaHJvd3MgdGhl
IGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2FuIGJlIGFueSBjb3B5YWJsZSB2YWx1ZS4gQXZhaWxh
YmxlIHNpbmNlIHYxLjEuMC58Ci0KLSMjIFVzaW5nIGEgRnVuY3Rpb24gb3IgYSBGdW5jdG9yIGFz
IGFuIEFjdGlvbiAjIwotCi18YEludm9rZShmKWB8SW52b2tlIGBmYCB3aXRoIHRoZSBhcmd1bWVu
dHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLCB3aGVyZSBgZmAgY2FuIGJlIGEgZ2xvYmFs
L3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0b3IufAotfDotLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgSW52b2tl
KG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUge21ldGhvZCBvbiB0
aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG1vY2sgZnVuY3Rpb24u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mo
ZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rpb24gb3Ig
YSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAg
ICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mob2JqZWN0X3BvaW50ZXIsICZjbGFzczo6bWV0aG9k
KWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgd2hpY2ggdGFrZXMgbm8gYXJndW1l
bnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAotfGBJbnZva2VBcmd1bWVudDxOPihhcmcxLCBhcmcyLCAuLi4sIGFyZ2spYHxJbnZva2Ug
dGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGljaCBtdXN0
IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLCB3aXRoIHRoZSBga2AgYXJndW1lbnRzLnwKLQot
VGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBy
ZXR1cm4gdmFsdWUKLW9mIHRoZSBhY3Rpb24uCi0KLVdoZW4gZGVmaW5pbmcgYSBmdW5jdGlvbiBv
ciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBgSW52b2tlKigpYCwgeW91IGNhbiBkZWNsYXJlIGFu
eSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51c2VkYDoKLWBgYAotICBkb3VibGUgRGlzdGFuY2Uo
VW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsgfQot
ICAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKCJIaSIsIF8sIF8pKS5XaWxsT25jZShJbnZv
a2UoRGlzdGFuY2UpKTsKLWBgYAotCi1JbiBgSW52b2tlQXJndW1lbnQ8Tj4oLi4uKWAsIGlmIGFu
IGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3NlZCBieSByZWZlcmVuY2UsIHdyYXAgaXQgaW5zaWRl
IGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCi1gYGAKLSAgSW52b2tlQXJndW1lbnQ8Mj4oNSwgc3Ry
aW5nKCJIaSIpLCBCeVJlZihmb28pKQotYGBgCi1jYWxscyB0aGUgbW9jayBmdW5jdGlvbidzICMy
IGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1YCBhbmQgYHN0cmluZygiSGkiKWAgYnkgdmFsdWUs
IGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCi0KLSMjIERlZmF1bHQgQWN0aW9uICMjCi0KLXxgRG9E
ZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFjdGlvbiAoc3BlY2lmaWVkIGJ5IGBPTl9DQUxMKClg
IG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKLXw6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQot
KipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwgcmVhc29ucywgYERvRGVmYXVsdCgpYCBjYW5ub3Qg
YmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRlIGFjdGlvbiAtIHRyeWluZyB0byBkbyBzbyB3aWxs
IHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLgotCi0jIyBDb21wb3NpdGUgQWN0aW9ucyAjIwot
Ci18YERvQWxsKGExLCBhMiwgLi4uLCBhbilgfERvIGFsbCBhY3Rpb25zIGBhMWAgdG8gYGFuYCBh
bmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFuYCBpbiBlYWNoIGludm9jYXRpb24uIFRoZSBmaXJz
dCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3QgcmV0dXJuIHZvaWQuIHwKLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBJZ25vcmVSZXN1bHQoYSlgICAgICAgIHxQZXJm
b3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBpdHMgcmVzdWx0LiBgYWAgbXVzdCBub3QgcmV0dXJu
IHZvaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Ci18YFdpdGhBcmc8Tj4oYSlgICAgICAgICAgfFBhc3MgdGhlIGBOYC10aCAoMC1i
YXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVy
Zm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgV2l0
aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8UGFzcyB0aGUgc2VsZWN0ZWQgKDAtYmFzZWQpIGFy
Z3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24gYGFgIGFuZCBwZXJmb3JtIGl0
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBXaXRob3V0QXJncyhh
KWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgd2l0aG91dCBhbnkgYXJndW1lbnRzLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSMjIERlZmluaW5nIEFjdGlvbnMgIyMKLQotfCBg
QUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCArIGFyZzE7IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24g
YFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50
ICMwIGFuZCAjMS4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgQUNUSU9OX1AoUGx1cywgbikgeyBy
ZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24gYFBsdXMobilgIHRvIHJldHVy
biB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgIzAgYW5kIGBuYC4gfAot
fCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgc3RhdGVtZW50czsgfWAgfCBEZWZpbmVz
IGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZvbyhwMSwgLi4uLCBwaylgIHRvIGV4ZWN1dGUgdGhl
IGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8Ci0KLVRoZSBgQUNUSU9OKmAgbWFjcm9zIGNhbm5vdCBi
ZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotCi0jIENhcmRpbmFsaXRpZXMgIwot
Ci1UaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMoKWAgdG8gc3BlY2lmeSBob3cgbWFueSB0aW1lcyBh
IG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQ6Ci0KLXxgQW55TnVtYmVyKClgfFRoZSBmdW5j
dGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMufAotfDotLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEF0TGVh
c3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBsZWFzdCBgbmAgdGltZXMuICAgICAgIHwK
LXxgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0IG1vc3QgYG5gIHRpbWVzLiAg
ICAgICAgfAotfGBCZXR3ZWVuKG0sIG4pYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBiZXR3ZWVuIGBt
YCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVzLnwKLXxgRXhhY3RseShuKSBvciBuYHxUaGUgY2Fs
bCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0aW1lcy4gSW4gcGFydGljdWxhciwgdGhlIGNhbGwg
c2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBuYCBpcyAwLnwKLQotIyBFeHBlY3RhdGlvbiBPcmRl
ciAjCi0KLUJ5IGRlZmF1bHQsIHRoZSBleHBlY3RhdGlvbnMgY2FuIGJlIG1hdGNoZWQgaW4gX2Fu
eV8gb3JkZXIuICBJZiBzb21lCi1vciBhbGwgZXhwZWN0YXRpb25zIG11c3QgYmUgbWF0Y2hlZCBp
biBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUgdHdvCi13YXlzIHRvIHNwZWNpZnkgaXQuICBUaGV5
IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVuZGVudGx5IG9yCi10b2dldGhlci4KLQotIyMgVGhl
IEFmdGVyIENsYXVzZSAjIwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RXhwZWN0YXRpb247Ci0u
Li4KLUV4cGVjdGF0aW9uIGluaXRfeCA9IEVYUEVDVF9DQUxMKGZvbywgSW5pdFgoKSk7Ci1FeHBl
Y3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRZKCkpOwotRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoaW5pdF94LCBpbml0X3kpOwotYGBgCi1zYXlzIHRoYXQg
YEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgYm90aCBgSW5pdFgoKWAgYW5kCi1gSW5p
dFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KLQotSWYgeW91IGRvbid0IGtub3cgaG93IG1hbnkgcHJl
LXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24gaGFzIHdoZW4geW91Ci13cml0ZSBpdCwgeW91IGNh
biB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0byBjb2xsZWN0IHRoZW06Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKLS4uLgotRXhwZWN0YXRpb25TZXQgYWxsX2luaXRz
OwotZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50X2NvdW50OyBpKyspIHsKLSAgYWxsX2luaXRz
ICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVsZW1lbnQoaSkpOwotfQotRVhQRUNUX0NBTEwoZm9v
LCBCYXIoKSkKLSAgICAuQWZ0ZXIoYWxsX2luaXRzKTsKLWBgYAotc2F5cyB0aGF0IGBCYXIoKWAg
Y2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFsbCBlbGVtZW50cyBoYXZlIGJlZW4KLWluaXRpYWxp
emVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBlbGVtZW50cyBnZXQgaW5pdGlhbGl6
ZWQKLWJlZm9yZSB0aGUgb3RoZXJzKS4KLQotTW9kaWZ5aW5nIGFuIGBFeHBlY3RhdGlvblNldGAg
YWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRlcigpYCBkb2Vzbid0Ci1hZmZlY3QgdGhlIG1lYW5p
bmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCi0KLSMjIFNlcXVlbmNlcyAjIwotCi1XaGVuIHlvdSBoYXZl
IGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFsIGV4cGVjdGF0aW9ucywgaXQncyBlYXNpZXIgdG8K
LXNwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoqc2VxdWVuY2VzKiosIHdoaWNoIGRvbid0IHJlcXVp
cmUgeW91IHRvIGdpdmVuCi1lYWNoIGV4cGVjdGF0aW9uIGluIHRoZSBjaGFpbiBhIGRpZmZlcmVu
dCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJyPgotY2FsbHM8L2k+IGluIHRoZSBzYW1lIHNlcXVl
bmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi1zcGVjaWZpZWQuCi0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLVNlcXVlbmNlIHMxLCBzMjsKLS4uLgotRVhQRUNU
X0NBTEwoZm9vLCBSZXNldCgpKQotICAgIC5JblNlcXVlbmNlKHMxLCBzMikKLSAgICAuV2lsbE9u
Y2UoUmV0dXJuKHRydWUpKTsKLUVYUEVDVF9DQUxMKGZvbywgR2V0U2l6ZSgpKQotICAgIC5JblNl
cXVlbmNlKHMxKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotRVhQRUNUX0NBTEwoZm9vLCBE
ZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkKLSAgICAuSW5TZXF1ZW5jZShzMikKLSAgICAuV2ls
bE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKLWBgYAotc2F5cyB0aGF0IGBSZXNldCgpYCBtdXN0IGJl
IGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRTaXplKClgIF9hbmRfCi1gRGVzY3JpYmUoKWAsIGFu
ZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIgaW4gYW55IG9yZGVyLgotCi1UbyBwdXQgbWFueSBl
eHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBjb252ZW5pZW50bHk6Ci1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6SW5TZXF1ZW5jZTsKLXsKLSAgSW5TZXF1ZW5jZSBkdW1teTsKLQotICBFWFBFQ1RfQ0FM
TCguLi4pLi4uOwotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICAuLi4KLSAgRVhQRUNUX0NBTEwo
Li4uKS4uLjsKLX0KLWBgYAotc2F5cyB0aGF0IGFsbCBleHBlY3RlZCBjYWxscyBpbiB0aGUgc2Nv
cGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGluCi1zdHJpY3Qgb3JkZXIuIFRoZSBuYW1lIGBkdW1t
eWAgaXMgaXJyZWxldmFudC4pCi0KLSMgVmVyaWZ5aW5nIGFuZCBSZXNldHRpbmcgYSBNb2NrICMK
LQotR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0aW9ucyBvbiBhIG1vY2sgb2Jq
ZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwgb3IgeW91IGNhbiBkbyBpdCBlYXJsaWVyOgotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0uLi4KLS8vIFZlcmlmaWVzIGFuZCByZW1vdmVzIHRo
ZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7Ci0vLyByZXR1cm5zIHRydWUgaWZmIHN1Y2Nlc3Nm
dWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmopOwotLi4uCi0v
LyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2JqOwotLy8g
YWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc2V0IGJ5IE9OX0NBTEwoKTsKLS8vIHJl
dHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLU1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2NrX29i
aik7Ci1gYGAKLQotWW91IGNhbiBhbHNvIHRlbGwgR29vZ2xlIE1vY2sgdGhhdCBhIG1vY2sgb2Jq
ZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNuJ3QKLW5lZWQgdG8gYmUgdmVyaWZpZWQ6Ci1gYGAK
LU1vY2s6OkFsbG93TGVhaygmbW9ja19vYmopOwotYGBgCi0KLSMgTW9jayBDbGFzc2VzICMKLQot
R29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZlbmllbnQgbW9jayBjbGFzcyB0ZW1wbGF0ZQotYGBg
Ci1jbGFzcyBNb2NrRnVuY3Rpb248UihBMSwgLi4uLCBBbik+IHsKLSBwdWJsaWM6Ci0gIE1PQ0tf
TUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFuKSk7Ci19OwotYGBgCi1TZWUgdGhpcyBbcmVjaXBl
XShDb29rQm9vay5tZCN1c2luZy1jaGVjay1wb2ludHMpIGZvciBvbmUgYXBwbGljYXRpb24gb2Yg
aXQuCi0KLSMgRmxhZ3MgIwotCi18IGAtLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0wYCB8IERv
bid0IHJlcG9ydCBsZWFrZWQgbW9jayBvYmplY3RzIGFzIGZhaWx1cmVzLiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Ci18IGAtLWdtb2NrX3ZlcmJvc2U9TEVWRUxgICAgICAgICB8IFNldHMg
dGhlIGRlZmF1bHQgdmVyYm9zaXR5IGxldmVsIChgaW5mb2AsIGB3YXJuaW5nYCwgb3IgYGVycm9y
YCkgb2YgR29vZ2xlIE1vY2sgbWVzc2FnZXMuIHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2Rv
Y3MvQ29va0Jvb2subWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwNDYwZDM1N2Y2ZGI0OTYzOWU4ZWNlZTE1NDZlZGE4N2VjYWIx
YzUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2RvY3MvQ29va0Jvb2subWQKKysrIC9kZXYvbnVsbApAQCAtMSwzNjc1ICswLDAgQEAK
LQotCi1Zb3UgY2FuIGZpbmQgcmVjaXBlcyBmb3IgdXNpbmcgR29vZ2xlIE1vY2sgaGVyZS4gSWYg
eW91IGhhdmVuJ3QgeWV0LAotcGxlYXNlIHJlYWQgdGhlIFtGb3JEdW1taWVzXShGb3JEdW1taWVz
Lm1kKSBkb2N1bWVudCBmaXJzdCB0byBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKLXRoZSBiYXNp
Y3MuCi0KLSoqTm90ZToqKiBHb29nbGUgTW9jayBsaXZlcyBpbiB0aGUgYHRlc3RpbmdgIG5hbWUg
c3BhY2UuIEZvcgotcmVhZGFiaWxpdHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHdyaXRlIGB1c2lu
ZyA6OnRlc3Rpbmc6OkZvbztgIG9uY2UgaW4KLXlvdXIgZmlsZSBiZWZvcmUgdXNpbmcgdGhlIG5h
bWUgYEZvb2AgZGVmaW5lZCBieSBHb29nbGUgTW9jay4gV2Ugb21pdAotc3VjaCBgdXNpbmdgIHN0
YXRlbWVudHMgaW4gdGhpcyBwYWdlIGZvciBicmV2aXR5LCBidXQgeW91IHNob3VsZCBkbyBpdAot
aW4geW91ciBvd24gY29kZS4KLQotIyBDcmVhdGluZyBNb2NrIENsYXNzZXMgIwotCi0jIyBNb2Nr
aW5nIFByaXZhdGUgb3IgUHJvdGVjdGVkIE1ldGhvZHMgIyMKLQotWW91IG11c3QgYWx3YXlzIHB1
dCBhIG1vY2sgbWV0aG9kIGRlZmluaXRpb24gKGBNT0NLX01FVEhPRCpgKSBpbiBhCi1gcHVibGlj
OmAgc2VjdGlvbiBvZiB0aGUgbW9jayBjbGFzcywgcmVnYXJkbGVzcyBvZiB0aGUgbWV0aG9kIGJl
aW5nCi1tb2NrZWQgYmVpbmcgYHB1YmxpY2AsIGBwcm90ZWN0ZWRgLCBvciBgcHJpdmF0ZWAgaW4g
dGhlIGJhc2UgY2xhc3MuCi1UaGlzIGFsbG93cyBgT05fQ0FMTGAgYW5kIGBFWFBFQ1RfQ0FMTGAg
dG8gcmVmZXJlbmNlIHRoZSBtb2NrIGZ1bmN0aW9uCi1mcm9tIG91dHNpZGUgb2YgdGhlIG1vY2sg
Y2xhc3MuICAoWWVzLCBDKysgYWxsb3dzIGEgc3ViY2xhc3MgdG8gY2hhbmdlCi10aGUgYWNjZXNz
IGxldmVsIG9mIGEgdmlydHVhbCBmdW5jdGlvbiBpbiB0aGUgYmFzZSBjbGFzcy4pICBFeGFtcGxl
OgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIFRy
YW5zZm9ybShHYWRnZXQqIGcpID0gMDsKLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFJl
c3VtZSgpOwotCi0gcHJpdmF0ZToKLSAgdmlydHVhbCBpbnQgR2V0VGltZU91dCgpOwotfTsKLQot
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLi4uCi0gIE1PQ0tfTUVU
SE9EMShUcmFuc2Zvcm0sIGJvb2woR2FkZ2V0KiBnKSk7Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBt
dXN0IGJlIGluIHRoZSBwdWJsaWMgc2VjdGlvbiwgZXZlbiB0aG91Z2ggdGhlCi0gIC8vIG1ldGhv
ZHMgYXJlIHByb3RlY3RlZCBvciBwcml2YXRlIGluIHRoZSBiYXNlIGNsYXNzLgotICBNT0NLX01F
VEhPRDAoUmVzdW1lLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDAoR2V0VGltZU91dCwgaW50KCkp
OwotfTsKLWBgYAotCi0jIyBNb2NraW5nIE92ZXJsb2FkZWQgTWV0aG9kcyAjIwotCi1Zb3UgY2Fu
IG1vY2sgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgYXMgdXN1YWwuIE5vIHNwZWNpYWwgYXR0ZW50aW9u
IGlzIHJlcXVpcmVkOgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotCi0gIC8vIE11c3QgYmUg
dmlydHVhbCBhcyB3ZSdsbCBpbmhlcml0IGZyb20gRm9vLgotICB2aXJ0dWFsIH5Gb28oKTsKLQot
ICAvLyBPdmVybG9hZGVkIG9uIHRoZSB0eXBlcyBhbmQvb3IgbnVtYmVycyBvZiBhcmd1bWVudHMu
Ci0gIHZpcnR1YWwgaW50IEFkZChFbGVtZW50IHgpOwotICB2aXJ0dWFsIGludCBBZGQoaW50IHRp
bWVzLCBFbGVtZW50IHgpOwotCi0gIC8vIE92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2Yg
dGhpcyBvYmplY3QuCi0gIHZpcnR1YWwgQmFyJiBHZXRCYXIoKTsKLSAgdmlydHVhbCBjb25zdCBC
YXImIEdldEJhcigpIGNvbnN0OwotfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewot
ICAuLi4KLSAgTU9DS19NRVRIT0QxKEFkZCwgaW50KEVsZW1lbnQgeCkpOwotICBNT0NLX01FVEhP
RDIoQWRkLCBpbnQoaW50IHRpbWVzLCBFbGVtZW50IHgpOwotCi0gIE1PQ0tfTUVUSE9EMChHZXRC
YXIsIEJhciYoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRCYXIsIGNvbnN0IEJhciYoKSk7
Ci19OwotYGBgCi0KLSoqTm90ZToqKiBpZiB5b3UgZG9uJ3QgbW9jayBhbGwgdmVyc2lvbnMgb2Yg
dGhlIG92ZXJsb2FkZWQgbWV0aG9kLCB0aGUKLWNvbXBpbGVyIHdpbGwgZ2l2ZSB5b3UgYSB3YXJu
aW5nIGFib3V0IHNvbWUgbWV0aG9kcyBpbiB0aGUgYmFzZSBjbGFzcwotYmVpbmcgaGlkZGVuLiBU
byBmaXggdGhhdCwgdXNlIGB1c2luZ2AgdG8gYnJpbmcgdGhlbSBpbiBzY29wZToKLQotYGBgCi1j
bGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4uLgotICB1c2luZyBGb286OkFkZDsKLSAg
TU9DS19NRVRIT0QxKEFkZCwgaW50KEVsZW1lbnQgeCkpOwotICAvLyBXZSBkb24ndCB3YW50IHRv
IG1vY2sgaW50IEFkZChpbnQgdGltZXMsIEVsZW1lbnQgeCk7Ci0gIC4uLgotfTsKLWBgYAotCi0j
IyBNb2NraW5nIENsYXNzIFRlbXBsYXRlcyAjIwotCi1UbyBtb2NrIGEgY2xhc3MgdGVtcGxhdGUs
IGFwcGVuZCBgX1RgIHRvIHRoZSBgTU9DS18qYCBtYWNyb3M6Ci0KLWBgYAotdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW0+Ci1jbGFzcyBTdGFja0ludGVyZmFjZSB7Ci0gIC4uLgotICAvLyBNdXN0IGJl
IHZpcnR1YWwgYXMgd2UnbGwgaW5oZXJpdCBmcm9tIFN0YWNrSW50ZXJmYWNlLgotICB2aXJ0dWFs
IH5TdGFja0ludGVyZmFjZSgpOwotCi0gIHZpcnR1YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7
Ci0gIHZpcnR1YWwgdm9pZCBQdXNoKGNvbnN0IEVsZW0mIHgpID0gMDsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtPgotY2xhc3MgTW9ja1N0YWNrIDogcHVibGljIFN0YWNrSW50ZXJmYWNl
PEVsZW0+IHsKLSAgLi4uCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsK
LSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChjb25zdCBFbGVtJiB4KSk7Ci19OwotYGBgCi0K
LSMjIE1vY2tpbmcgTm9udmlydHVhbCBNZXRob2RzICMjCi0KLUdvb2dsZSBNb2NrIGNhbiBtb2Nr
IG5vbi12aXJ0dWFsIGZ1bmN0aW9ucyB0byBiZSB1c2VkIGluIHdoYXQgd2UgY2FsbCBfaGktcGVy
ZgotZGVwZW5kZW5jeSBpbmplY3Rpb25fLgotCi1JbiB0aGlzIGNhc2UsIGluc3RlYWQgb2Ygc2hh
cmluZyBhIGNvbW1vbiBiYXNlIGNsYXNzIHdpdGggdGhlIHJlYWwKLWNsYXNzLCB5b3VyIG1vY2sg
Y2xhc3Mgd2lsbCBiZSBfdW5yZWxhdGVkXyB0byB0aGUgcmVhbCBjbGFzcywgYnV0Ci1jb250YWlu
IG1ldGhvZHMgd2l0aCB0aGUgc2FtZSBzaWduYXR1cmVzLiAgVGhlIHN5bnRheCBmb3IgbW9ja2lu
Zwotbm9uLXZpcnR1YWwgbWV0aG9kcyBpcyB0aGUgX3NhbWVfIGFzIG1vY2tpbmcgdmlydHVhbCBt
ZXRob2RzOgotCi1gYGAKLS8vIEEgc2ltcGxlIHBhY2tldCBzdHJlYW0gY2xhc3MuICBOb25lIG9m
IGl0cyBtZW1iZXJzIGlzIHZpcnR1YWwuCi1jbGFzcyBDb25jcmV0ZVBhY2tldFN0cmVhbSB7Ci0g
cHVibGljOgotICB2b2lkIEFwcGVuZFBhY2tldChQYWNrZXQqIG5ld19wYWNrZXQpOwotICBjb25z
dCBQYWNrZXQqIEdldFBhY2tldChzaXplX3QgcGFja2V0X251bWJlcikgY29uc3Q7Ci0gIHNpemVf
dCBOdW1iZXJPZlBhY2tldHMoKSBjb25zdDsKLSAgLi4uCi19OwotCi0vLyBBIG1vY2sgcGFja2V0
IHN0cmVhbSBjbGFzcy4gIEl0IGluaGVyaXRzIGZyb20gbm8gb3RoZXIsIGJ1dCBkZWZpbmVzCi0v
LyBHZXRQYWNrZXQoKSBhbmQgTnVtYmVyT2ZQYWNrZXRzKCkuCi1jbGFzcyBNb2NrUGFja2V0U3Ry
ZWFtIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMShHZXRQYWNrZXQsIGNvbnN0IFBh
Y2tldCooc2l6ZV90IHBhY2tldF9udW1iZXIpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKE51bWJl
ck9mUGFja2V0cywgc2l6ZV90KCkpOwotICAuLi4KLX07Ci1gYGAKLQotTm90ZSB0aGF0IHRoZSBt
b2NrIGNsYXNzIGRvZXNuJ3QgZGVmaW5lIGBBcHBlbmRQYWNrZXQoKWAsIHVubGlrZSB0aGUKLXJl
YWwgY2xhc3MuIFRoYXQncyBmaW5lIGFzIGxvbmcgYXMgdGhlIHRlc3QgZG9lc24ndCBuZWVkIHRv
IGNhbGwgaXQuCi0KLU5leHQsIHlvdSBuZWVkIGEgd2F5IHRvIHNheSB0aGF0IHlvdSB3YW50IHRv
IHVzZQotYENvbmNyZXRlUGFja2V0U3RyZWFtYCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2Ug
YE1vY2tQYWNrZXRTdHJlYW1gCi1pbiB0ZXN0cy4gIFNpbmNlIHRoZSBmdW5jdGlvbnMgYXJlIG5v
dCB2aXJ0dWFsIGFuZCB0aGUgdHdvIGNsYXNzZXMgYXJlCi11bnJlbGF0ZWQsIHlvdSBtdXN0IHNw
ZWNpZnkgeW91ciBjaG9pY2UgYXQgX2NvbXBpbGUgdGltZV8gKGFzIG9wcG9zZWQKLXRvIHJ1biB0
aW1lKS4KLQotT25lIHdheSB0byBkbyBpdCBpcyB0byB0ZW1wbGF0aXplIHlvdXIgY29kZSB0aGF0
IG5lZWRzIHRvIHVzZSBhIHBhY2tldAotc3RyZWFtLiAgTW9yZSBzcGVjaWZpY2FsbHksIHlvdSB3
aWxsIGdpdmUgeW91ciBjb2RlIGEgdGVtcGxhdGUgdHlwZQotYXJndW1lbnQgZm9yIHRoZSB0eXBl
IG9mIHRoZSBwYWNrZXQgc3RyZWFtLiAgSW4gcHJvZHVjdGlvbiwgeW91IHdpbGwKLWluc3RhbnRp
YXRlIHlvdXIgdGVtcGxhdGUgd2l0aCBgQ29uY3JldGVQYWNrZXRTdHJlYW1gIGFzIHRoZSB0eXBl
Ci1hcmd1bWVudC4gIEluIHRlc3RzLCB5b3Ugd2lsbCBpbnN0YW50aWF0ZSB0aGUgc2FtZSB0ZW1w
bGF0ZSB3aXRoCi1gTW9ja1BhY2tldFN0cmVhbWAuICBGb3IgZXhhbXBsZSwgeW91IG1heSB3cml0
ZToKLQotYGBgCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0U3RyZWFtPgotdm9pZCBDcmVhdGVDb25u
ZWN0aW9uKFBhY2tldFN0cmVhbSogc3RyZWFtKSB7IC4uLiB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBQ
YWNrZXRTdHJlYW0+Ci1jbGFzcyBQYWNrZXRSZWFkZXIgewotIHB1YmxpYzoKLSAgdm9pZCBSZWFk
UGFja2V0cyhQYWNrZXRTdHJlYW0qIHN0cmVhbSwgc2l6ZV90IHBhY2tldF9udW0pOwotfTsKLWBg
YAotCi1UaGVuIHlvdSBjYW4gdXNlIGBDcmVhdGVDb25uZWN0aW9uPENvbmNyZXRlUGFja2V0U3Ry
ZWFtPigpYCBhbmQKLWBQYWNrZXRSZWFkZXI8Q29uY3JldGVQYWNrZXRTdHJlYW0+YCBpbiBwcm9k
dWN0aW9uIGNvZGUsIGFuZCB1c2UKLWBDcmVhdGVDb25uZWN0aW9uPE1vY2tQYWNrZXRTdHJlYW0+
KClgIGFuZAotYFBhY2tldFJlYWRlcjxNb2NrUGFja2V0U3RyZWFtPmAgaW4gdGVzdHMuCi0KLWBg
YAotICBNb2NrUGFja2V0U3RyZWFtIG1vY2tfc3RyZWFtOwotICBFWFBFQ1RfQ0FMTChtb2NrX3N0
cmVhbSwgLi4uKS4uLjsKLSAgLi4gc2V0IG1vcmUgZXhwZWN0YXRpb25zIG9uIG1vY2tfc3RyZWFt
IC4uLgotICBQYWNrZXRSZWFkZXI8TW9ja1BhY2tldFN0cmVhbT4gcmVhZGVyKCZtb2NrX3N0cmVh
bSk7Ci0gIC4uLiBleGVyY2lzZSByZWFkZXIgLi4uCi1gYGAKLQotIyMgTW9ja2luZyBGcmVlIEZ1
bmN0aW9ucyAjIwotCi1JdCdzIHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgTW9jayB0byBtb2NrIGEg
ZnJlZSBmdW5jdGlvbiAoaS5lLiBhCi1DLXN0eWxlIGZ1bmN0aW9uIG9yIGEgc3RhdGljIG1ldGhv
ZCkuICBZb3UganVzdCBuZWVkIHRvIHJld3JpdGUgeW91cgotY29kZSB0byB1c2UgYW4gaW50ZXJm
YWNlIChhYnN0cmFjdCBjbGFzcykuCi0KLUluc3RlYWQgb2YgY2FsbGluZyBhIGZyZWUgZnVuY3Rp
b24gKHNheSwgYE9wZW5GaWxlYCkgZGlyZWN0bHksCi1pbnRyb2R1Y2UgYW4gaW50ZXJmYWNlIGZv
ciBpdCBhbmQgaGF2ZSBhIGNvbmNyZXRlIHN1YmNsYXNzIHRoYXQgY2FsbHMKLXRoZSBmcmVlIGZ1
bmN0aW9uOgotCi1gYGAKLWNsYXNzIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0g
IHZpcnR1YWwgYm9vbCBPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpID0g
MDsKLX07Ci0KLWNsYXNzIEZpbGUgOiBwdWJsaWMgRmlsZUludGVyZmFjZSB7Ci0gcHVibGljOgot
ICAuLi4KLSAgdmlydHVhbCBib29sIE9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciog
bW9kZSkgewotICAgIHJldHVybiBPcGVuRmlsZShwYXRoLCBtb2RlKTsKLSAgfQotfTsKLWBgYAot
Ci1Zb3VyIGNvZGUgc2hvdWxkIHRhbGsgdG8gYEZpbGVJbnRlcmZhY2VgIHRvIG9wZW4gYSBmaWxl
LiAgTm93IGl0J3MKLWVhc3kgdG8gbW9jayBvdXQgdGhlIGZ1bmN0aW9uLgotCi1UaGlzIG1heSBz
ZWVtIG11Y2ggaGFzc2xlLCBidXQgaW4gcHJhY3RpY2UgeW91IG9mdGVuIGhhdmUgbXVsdGlwbGUK
LXJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgeW91IGNhbiBwdXQgaW4gdGhlIHNhbWUgaW50ZXJmYWNl
LCBzbyB0aGUKLXBlci1mdW5jdGlvbiBzeW50YWN0aWMgb3ZlcmhlYWQgd2lsbCBiZSBtdWNoIGxv
d2VyLgotCi1JZiB5b3UgYXJlIGNvbmNlcm5lZCBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb3Zlcmhl
YWQgaW5jdXJyZWQgYnkKLXZpcnR1YWwgZnVuY3Rpb25zLCBhbmQgcHJvZmlsaW5nIGNvbmZpcm1z
IHlvdXIgY29uY2VybiwgeW91IGNhbgotY29tYmluZSB0aGlzIHdpdGggdGhlIHJlY2lwZSBmb3Ig
W21vY2tpbmcgbm9uLXZpcnR1YWwgbWV0aG9kc10oI21vY2tpbmctbm9udmlydHVhbC1tZXRob2Rz
KS4KLQotIyMgVGhlIE5pY2UsIHRoZSBTdHJpY3QsIGFuZCB0aGUgTmFnZ3kgIyMKLQotSWYgYSBt
b2NrIG1ldGhvZCBoYXMgbm8gYEVYUEVDVF9DQUxMYCBzcGVjIGJ1dCBpcyBjYWxsZWQsIEdvb2ds
ZSBNb2NrCi13aWxsIHByaW50IGEgd2FybmluZyBhYm91dCB0aGUgInVuaW50ZXJlc3RpbmcgY2Fs
bCIuIFRoZSByYXRpb25hbGUgaXM6Ci0KLSAgKiBOZXcgbWV0aG9kcyBtYXkgYmUgYWRkZWQgdG8g
YW4gaW50ZXJmYWNlIGFmdGVyIGEgdGVzdCBpcyB3cml0dGVuLiBXZSBzaG91bGRuJ3QgZmFpbCBh
IHRlc3QganVzdCBiZWNhdXNlIGEgbWV0aG9kIGl0IGRvZXNuJ3Qga25vdyBhYm91dCBpcyBjYWxs
ZWQuCi0gICogSG93ZXZlciwgdGhpcyBtYXkgYWxzbyBtZWFuIHRoZXJlJ3MgYSBidWcgaW4gdGhl
IHRlc3QsIHNvIEdvb2dsZSBNb2NrIHNob3VsZG4ndCBiZSBzaWxlbnQgZWl0aGVyLiBJZiB0aGUg
dXNlciBiZWxpZXZlcyB0aGVzZSBjYWxscyBhcmUgaGFybWxlc3MsIGhlIGNhbiBhZGQgYW4gYEVY
UEVDVF9DQUxMKClgIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLgotCi1Ib3dldmVyLCBzb21ldGlt
ZXMgeW91IG1heSB3YW50IHRvIHN1cHByZXNzIGFsbCAidW5pbnRlcmVzdGluZyBjYWxsIgotd2Fy
bmluZ3MsIHdoaWxlIHNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlIG9wcG9zaXRlLCBpLmUuIHRv
IHRyZWF0IGFsbAotb2YgdGhlbSBhcyBlcnJvcnMuIEdvb2dsZSBNb2NrIGxldHMgeW91IG1ha2Ug
dGhlIGRlY2lzaW9uIG9uIGEKLXBlci1tb2NrLW9iamVjdCBiYXNpcy4KLQotU3VwcG9zZSB5b3Vy
IHRlc3QgdXNlcyBhIG1vY2sgY2xhc3MgYE1vY2tGb29gOgotCi1gYGAKLVRFU1QoLi4uKSB7Ci0g
IE1vY2tGb28gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0g
IC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBgYAotCi1JZiBhIG1ldGhvZCBv
ZiBgbW9ja19mb29gIG90aGVyIHRoYW4gYERvVGhpcygpYCBpcyBjYWxsZWQsIGl0IHdpbGwgYmUK
LXJlcG9ydGVkIGJ5IEdvb2dsZSBNb2NrIGFzIGEgd2FybmluZy4gSG93ZXZlciwgaWYgeW91IHJl
d3JpdGUgeW91cgotdGVzdCB0byB1c2UgYE5pY2VNb2NrPE1vY2tGb28+YCBpbnN0ZWFkLCB0aGUg
d2FybmluZyB3aWxsIGJlIGdvbmUsCi1yZXN1bHRpbmcgaW4gYSBjbGVhbmVyIHRlc3Qgb3V0cHV0
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TmljZU1vY2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIE5p
Y2VNb2NrPE1vY2tGb28+IG1vY2tfZm9vOwotICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlz
KCkpOwotICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCi19Ci1gYGAKLQotYE5pY2VN
b2NrPE1vY2tGb28+YCBpcyBhIHN1YmNsYXNzIG9mIGBNb2NrRm9vYCwgc28gaXQgY2FuIGJlIHVz
ZWQKLXdoZXJldmVyIGBNb2NrRm9vYCBpcyBhY2NlcHRlZC4KLQotSXQgYWxzbyB3b3JrcyBpZiBg
TW9ja0Zvb2AncyBjb25zdHJ1Y3RvciB0YWtlcyBzb21lIGFyZ3VtZW50cywgYXMKLWBOaWNlTW9j
azxNb2NrRm9vPmAgImluaGVyaXRzIiBgTW9ja0Zvb2AncyBjb25zdHJ1Y3RvcnM6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpOaWNlTW9jazsKLQotVEVTVCguLi4pIHsKLSAgTmljZU1vY2s8TW9j
a0Zvbz4gbW9ja19mb28oNSwgImhpIik7ICAvLyBDYWxscyBNb2NrRm9vKDUsICJoaSIpLgotICBF
WFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOwotICAuLi4gY29kZSB0aGF0IHVzZXMgbW9j
a19mb28gLi4uCi19Ci1gYGAKLQotVGhlIHVzYWdlIG9mIGBTdHJpY3RNb2NrYCBpcyBzaW1pbGFy
LCBleGNlcHQgdGhhdCBpdCBtYWtlcyBhbGwKLXVuaW50ZXJlc3RpbmcgY2FsbHMgZmFpbHVyZXM6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTdHJpY3RNb2NrOwotCi1URVNUKC4uLikgewotICBT
dHJpY3RNb2NrPE1vY2tGb28+IG1vY2tfZm9vOwotICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9U
aGlzKCkpOwotICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCi0KLSAgLy8gVGhlIHRl
c3Qgd2lsbCBmYWlsIGlmIGEgbWV0aG9kIG9mIG1vY2tfZm9vIG90aGVyIHRoYW4gRG9UaGlzKCkK
LSAgLy8gaXMgY2FsbGVkLgotfQotYGBgCi0KLVRoZXJlIGFyZSBzb21lIGNhdmVhdHMgdGhvdWdo
IChJIGRvbid0IGxpa2UgdGhlbSBqdXN0IGFzIG11Y2ggYXMgdGhlCi1uZXh0IGd1eSwgYnV0IHNh
ZGx5IHRoZXkgYXJlIHNpZGUgZWZmZWN0cyBvZiBDKysncyBsaW1pdGF0aW9ucyk6Ci0KLSAgMS4g
YE5pY2VNb2NrPE1vY2tGb28+YCBhbmQgYFN0cmljdE1vY2s8TW9ja0Zvbz5gIG9ubHkgd29yayBm
b3IgbW9jayBtZXRob2RzIGRlZmluZWQgdXNpbmcgdGhlIGBNT0NLX01FVEhPRCpgIGZhbWlseSBv
ZiBtYWNyb3MgKipkaXJlY3RseSoqIGluIHRoZSBgTW9ja0Zvb2AgY2xhc3MuIElmIGEgbW9jayBt
ZXRob2QgaXMgZGVmaW5lZCBpbiBhICoqYmFzZSBjbGFzcyoqIG9mIGBNb2NrRm9vYCwgdGhlICJu
aWNlIiBvciAic3RyaWN0IiBtb2RpZmllciBtYXkgbm90IGFmZmVjdCBpdCwgZGVwZW5kaW5nIG9u
IHRoZSBjb21waWxlci4gSW4gcGFydGljdWxhciwgbmVzdGluZyBgTmljZU1vY2tgIGFuZCBgU3Ry
aWN0TW9ja2AgKGUuZy4gYE5pY2VNb2NrPFN0cmljdE1vY2s8TW9ja0Zvbz4gPmApIGlzICoqbm90
Kiogc3VwcG9ydGVkLgotICAxLiBUaGUgY29uc3RydWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sgKGBN
b2NrRm9vYCkgY2Fubm90IGhhdmUgYXJndW1lbnRzIHBhc3NlZCBieSBub24tY29uc3QgcmVmZXJl
bmNlLCB3aGljaCBoYXBwZW5zIHRvIGJlIGJhbm5lZCBieSB0aGUgW0dvb2dsZSBDKysgc3R5bGUg
Z3VpZGVdKGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsv
Y3BwZ3VpZGUueG1sKS4KLSAgMS4gRHVyaW5nIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9y
IG9mIGBNb2NrRm9vYCwgdGhlIG1vY2sgb2JqZWN0IGlzIF9ub3RfIG5pY2Ugb3Igc3RyaWN0LiAg
VGhpcyBtYXkgY2F1c2Ugc3VycHJpc2VzIGlmIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9y
IGNhbGxzIGEgbW9jayBtZXRob2Qgb24gYHRoaXNgIG9iamVjdC4gKFRoaXMgYmVoYXZpb3IsIGhv
d2V2ZXIsIGlzIGNvbnNpc3RlbnQgd2l0aCBDKysncyBnZW5lcmFsIHJ1bGU6IGlmIGEgY29uc3Ry
dWN0b3Igb3IgZGVzdHJ1Y3RvciBjYWxscyBhIHZpcnR1YWwgbWV0aG9kIG9mIGB0aGlzYCBvYmpl
Y3QsIHRoYXQgbWV0aG9kIGlzIHRyZWF0ZWQgYXMgbm9uLXZpcnR1YWwuICBJbiBvdGhlciB3b3Jk
cywgdG8gdGhlIGJhc2UgY2xhc3MncyBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCBgdGhpc2Ag
b2JqZWN0IGJlaGF2ZXMgbGlrZSBhbiBpbnN0YW5jZSBvZiB0aGUgYmFzZSBjbGFzcywgbm90IHRo
ZSBkZXJpdmVkIGNsYXNzLiAgVGhpcyBydWxlIGlzIHJlcXVpcmVkIGZvciBzYWZldHkuICBPdGhl
cndpc2UgYSBiYXNlIGNvbnN0cnVjdG9yIG1heSB1c2UgbWVtYmVycyBvZiBhIGRlcml2ZWQgY2xh
c3MgYmVmb3JlIHRoZXkgYXJlIGluaXRpYWxpemVkLCBvciBhIGJhc2UgZGVzdHJ1Y3RvciBtYXkg
dXNlIG1lbWJlcnMgb2YgYSBkZXJpdmVkIGNsYXNzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGRlc3Ry
b3llZC4pCi0KLUZpbmFsbHksIHlvdSBzaG91bGQgYmUgKip2ZXJ5IGNhdXRpb3VzKiogYWJvdXQg
d2hlbiB0byB1c2UgbmFnZ3kgb3Igc3RyaWN0IG1vY2tzLCBhcyB0aGV5IHRlbmQgdG8gbWFrZSB0
ZXN0cyBtb3JlIGJyaXR0bGUgYW5kIGhhcmRlciB0byBtYWludGFpbi4gV2hlbiB5b3UgcmVmYWN0
b3IgeW91ciBjb2RlIHdpdGhvdXQgY2hhbmdpbmcgaXRzIGV4dGVybmFsbHkgdmlzaWJsZSBiZWhh
dmlvciwgaWRlYWxseSB5b3Ugc2hvdWxkJ3QgbmVlZCB0byB1cGRhdGUgYW55IHRlc3RzLiBJZiB5
b3VyIGNvZGUgaW50ZXJhY3RzIHdpdGggYSBuYWdneSBtb2NrLCBob3dldmVyLCB5b3UgbWF5IHN0
YXJ0IHRvIGdldCBzcGFtbWVkIHdpdGggd2FybmluZ3MgYXMgdGhlIHJlc3VsdCBvZiB5b3VyIGNo
YW5nZS4gV29yc2UsIGlmIHlvdXIgY29kZSBpbnRlcmFjdHMgd2l0aCBhIHN0cmljdCBtb2NrLCB5
b3VyIHRlc3RzIG1heSBzdGFydCB0byBmYWlsIGFuZCB5b3UnbGwgYmUgZm9yY2VkIHRvIGZpeCB0
aGVtLiBPdXIgZ2VuZXJhbCByZWNvbW1lbmRhdGlvbiBpcyB0byB1c2UgbmljZSBtb2NrcyAobm90
IHlldCB0aGUgZGVmYXVsdCkgbW9zdCBvZiB0aGUgdGltZSwgdXNlIG5hZ2d5IG1vY2tzICh0aGUg
Y3VycmVudCBkZWZhdWx0KSB3aGVuIGRldmVsb3Bpbmcgb3IgZGVidWdnaW5nIHRlc3RzLCBhbmQg
dXNlIHN0cmljdCBtb2NrcyBvbmx5IGFzIHRoZSBsYXN0IHJlc29ydC4KLQotIyMgU2ltcGxpZnlp
bmcgdGhlIEludGVyZmFjZSB3aXRob3V0IEJyZWFraW5nIEV4aXN0aW5nIENvZGUgIyMKLQotU29t
ZXRpbWVzIGEgbWV0aG9kIGhhcyBhIGxvbmcgbGlzdCBvZiBhcmd1bWVudHMgdGhhdCBpcyBtb3N0
bHkKLXVuaW50ZXJlc3RpbmcuIEZvciBleGFtcGxlLAotCi1gYGAKLWNsYXNzIExvZ1Npbmsgewot
IHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBzZW5kKExvZ1NldmVyaXR5IHNldmVyaXR5
LCBjb25zdCBjaGFyKiBmdWxsX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBiYXNlX2ZpbGVuYW1lLCBpbnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IHRtKiB0bV90aW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNz
YWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pID0gMDsKLX07Ci1gYGAKLQotVGhpcyBtZXRob2QncyBh
cmd1bWVudCBsaXN0IGlzIGxlbmd0aHkgYW5kIGhhcmQgdG8gd29yayB3aXRoIChsZXQncwotc2F5
IHRoYXQgdGhlIGBtZXNzYWdlYCBhcmd1bWVudCBpcyBub3QgZXZlbiAwLXRlcm1pbmF0ZWQpLiBJ
ZiB3ZSBtb2NrCi1pdCBhcyBpcywgdXNpbmcgdGhlIG1vY2sgd2lsbCBiZSBhd2t3YXJkLiBJZiwg
aG93ZXZlciwgd2UgdHJ5IHRvCi1zaW1wbGlmeSB0aGlzIGludGVyZmFjZSwgd2UnbGwgbmVlZCB0
byBmaXggYWxsIGNsaWVudHMgZGVwZW5kaW5nIG9uCi1pdCwgd2hpY2ggaXMgb2Z0ZW4gaW5mZWFz
aWJsZS4KLQotVGhlIHRyaWNrIGlzIHRvIHJlLWRpc3BhdGNoIHRoZSBtZXRob2QgaW4gdGhlIG1v
Y2sgY2xhc3M6Ci0KLWBgYAotY2xhc3MgU2NvcGVkTW9ja0xvZyA6IHB1YmxpYyBMb2dTaW5rIHsK
LSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0
eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsIGNvbnN0IHRtKiB0bV90aW1lLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pIHsK
LSAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsb2cgc2V2ZXJpdHksIGZ1bGwg
ZmlsZSBuYW1lLCBhbmQKLSAgICAvLyBsb2cgbWVzc2FnZS4KLSAgICBMb2coc2V2ZXJpdHksIGZ1
bGxfZmlsZW5hbWUsIHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKSk7Ci0gIH0KLQot
ICAvLyBJbXBsZW1lbnRzIHRoZSBtb2NrIG1ldGhvZDoKLSAgLy8KLSAgLy8gICB2b2lkIExvZyhM
b2dTZXZlcml0eSBzZXZlcml0eSwKLSAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIGZpbGVf
cGF0aCwKLSAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpOwotICBNT0NLX01F
VEhPRDMoTG9nLCB2b2lkKExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBzdHJpbmcmIGZpbGVf
cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpKTsK
LX07Ci1gYGAKLQotQnkgZGVmaW5pbmcgYSBuZXcgbW9jayBtZXRob2Qgd2l0aCBhIHRyaW1tZWQg
YXJndW1lbnQgbGlzdCwgd2UgbWFrZQotdGhlIG1vY2sgY2xhc3MgbXVjaCBtb3JlIHVzZXItZnJp
ZW5kbHkuCi0KLSMjIEFsdGVybmF0aXZlIHRvIE1vY2tpbmcgQ29uY3JldGUgQ2xhc3NlcyAjIwot
Ci1PZnRlbiB5b3UgbWF5IGZpbmQgeW91cnNlbGYgdXNpbmcgY2xhc3NlcyB0aGF0IGRvbid0IGlt
cGxlbWVudAotaW50ZXJmYWNlcy4gSW4gb3JkZXIgdG8gdGVzdCB5b3VyIGNvZGUgdGhhdCB1c2Vz
IHN1Y2ggYSBjbGFzcyAobGV0J3MKLWNhbGwgaXQgYENvbmNyZXRlYCksIHlvdSBtYXkgYmUgdGVt
cHRlZCB0byBtYWtlIHRoZSBtZXRob2RzIG9mCi1gQ29uY3JldGVgIHZpcnR1YWwgYW5kIHRoZW4g
bW9jayBpdC4KLQotVHJ5IG5vdCB0byBkbyB0aGF0LgotCi1NYWtpbmcgYSBub24tdmlydHVhbCBm
dW5jdGlvbiB2aXJ0dWFsIGlzIGEgYmlnIGRlY2lzaW9uLiBJdCBjcmVhdGVzIGFuCi1leHRlbnNp
b24gcG9pbnQgd2hlcmUgc3ViY2xhc3NlcyBjYW4gdHdlYWsgeW91ciBjbGFzcycgYmVoYXZpb3Iu
IFRoaXMKLXdlYWtlbnMgeW91ciBjb250cm9sIG9uIHRoZSBjbGFzcyBiZWNhdXNlIG5vdyBpdCdz
IGhhcmRlciB0byBtYWludGFpbgotdGhlIGNsYXNzJyBpbnZhcmlhbnRzLiBZb3Ugc2hvdWxkIG1h
a2UgYSBmdW5jdGlvbiB2aXJ0dWFsIG9ubHkgd2hlbgotdGhlcmUgaXMgYSB2YWxpZCByZWFzb24g
Zm9yIGEgc3ViY2xhc3MgdG8gb3ZlcnJpZGUgaXQuCi0KLU1vY2tpbmcgY29uY3JldGUgY2xhc3Nl
cyBkaXJlY3RseSBpcyBwcm9ibGVtYXRpYyBhcyBpdCBjcmVhdGVzIGEgdGlnaHQKLWNvdXBsaW5n
IGJldHdlZW4gdGhlIGNsYXNzIGFuZCB0aGUgdGVzdHMgLSBhbnkgc21hbGwgY2hhbmdlIGluIHRo
ZQotY2xhc3MgbWF5IGludmFsaWRhdGUgeW91ciB0ZXN0cyBhbmQgbWFrZSB0ZXN0IG1haW50ZW5h
bmNlIGEgcGFpbi4KLQotVG8gYXZvaWQgc3VjaCBwcm9ibGVtcywgbWFueSBwcm9ncmFtbWVycyBo
YXZlIGJlZW4gcHJhY3RpY2luZyAiY29kaW5nCi10byBpbnRlcmZhY2VzIjogaW5zdGVhZCBvZiB0
YWxraW5nIHRvIHRoZSBgQ29uY3JldGVgIGNsYXNzLCB5b3VyIGNvZGUKLXdvdWxkIGRlZmluZSBh
biBpbnRlcmZhY2UgYW5kIHRhbGsgdG8gaXQuIFRoZW4geW91IGltcGxlbWVudCB0aGF0Ci1pbnRl
cmZhY2UgYXMgYW4gYWRhcHRvciBvbiB0b3Agb2YgYENvbmNyZXRlYC4gSW4gdGVzdHMsIHlvdSBj
YW4gZWFzaWx5Ci1tb2NrIHRoYXQgaW50ZXJmYWNlIHRvIG9ic2VydmUgaG93IHlvdXIgY29kZSBp
cyBkb2luZy4KLQotVGhpcyB0ZWNobmlxdWUgaW5jdXJzIHNvbWUgb3ZlcmhlYWQ6Ci0KLSAgKiBZ
b3UgcGF5IHRoZSBjb3N0IG9mIHZpcnR1YWwgZnVuY3Rpb24gY2FsbHMgKHVzdWFsbHkgbm90IGEg
cHJvYmxlbSkuCi0gICogVGhlcmUgaXMgbW9yZSBhYnN0cmFjdGlvbiBmb3IgdGhlIHByb2dyYW1t
ZXJzIHRvIGxlYXJuLgotCi1Ib3dldmVyLCBpdCBjYW4gYWxzbyBicmluZyBzaWduaWZpY2FudCBi
ZW5lZml0cyBpbiBhZGRpdGlvbiB0byBiZXR0ZXIKLXRlc3RhYmlsaXR5OgotCi0gICogYENvbmNy
ZXRlYCdzIEFQSSBtYXkgbm90IGZpdCB5b3VyIHByb2JsZW0gZG9tYWluIHZlcnkgd2VsbCwgYXMg
eW91IG1heSBub3QgYmUgdGhlIG9ubHkgY2xpZW50IGl0IHRyaWVzIHRvIHNlcnZlLiBCeSBkZXNp
Z25pbmcgeW91ciBvd24gaW50ZXJmYWNlLCB5b3UgaGF2ZSBhIGNoYW5jZSB0byB0YWlsb3IgaXQg
dG8geW91ciBuZWVkIC0geW91IG1heSBhZGQgaGlnaGVyLWxldmVsIGZ1bmN0aW9uYWxpdGllcywg
cmVuYW1lIHN0dWZmLCBldGMgaW5zdGVhZCBvZiBqdXN0IHRyaW1taW5nIHRoZSBjbGFzcy4gVGhp
cyBhbGxvd3MgeW91IHRvIHdyaXRlIHlvdXIgY29kZSAodXNlciBvZiB0aGUgaW50ZXJmYWNlKSBp
biBhIG1vcmUgbmF0dXJhbCB3YXksIHdoaWNoIG1lYW5zIGl0IHdpbGwgYmUgbW9yZSByZWFkYWJs
ZSwgbW9yZSBtYWludGFpbmFibGUsIGFuZCB5b3UnbGwgYmUgbW9yZSBwcm9kdWN0aXZlLgotICAq
IElmIGBDb25jcmV0ZWAncyBpbXBsZW1lbnRhdGlvbiBldmVyIGhhcyB0byBjaGFuZ2UsIHlvdSBk
b24ndCBoYXZlIHRvIHJld3JpdGUgZXZlcnl3aGVyZSBpdCBpcyB1c2VkLiBJbnN0ZWFkLCB5b3Ug
Y2FuIGFic29yYiB0aGUgY2hhbmdlIGluIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVy
ZmFjZSwgYW5kIHlvdXIgb3RoZXIgY29kZSBhbmQgdGVzdHMgd2lsbCBiZSBpbnN1bGF0ZWQgZnJv
bSB0aGlzIGNoYW5nZS4KLQotU29tZSBwZW9wbGUgd29ycnkgdGhhdCBpZiBldmVyeW9uZSBpcyBw
cmFjdGljaW5nIHRoaXMgdGVjaG5pcXVlLCB0aGV5Ci13aWxsIGVuZCB1cCB3cml0aW5nIGxvdHMg
b2YgcmVkdW5kYW50IGNvZGUuIFRoaXMgY29uY2VybiBpcyB0b3RhbGx5Ci11bmRlcnN0YW5kYWJs
ZS4gSG93ZXZlciwgdGhlcmUgYXJlIHR3byByZWFzb25zIHdoeSBpdCBtYXkgbm90IGJlIHRoZQot
Y2FzZToKLQotICAqIERpZmZlcmVudCBwcm9qZWN0cyBtYXkgbmVlZCB0byB1c2UgYENvbmNyZXRl
YCBpbiBkaWZmZXJlbnQgd2F5cywgc28gdGhlIGJlc3QgaW50ZXJmYWNlcyBmb3IgdGhlbSB3aWxs
IGJlIGRpZmZlcmVudC4gVGhlcmVmb3JlLCBlYWNoIG9mIHRoZW0gd2lsbCBoYXZlIGl0cyBvd24g
ZG9tYWluLXNwZWNpZmljIGludGVyZmFjZSBvbiB0b3Agb2YgYENvbmNyZXRlYCwgYW5kIHRoZXkg
d2lsbCBub3QgYmUgdGhlIHNhbWUgY29kZS4KLSAgKiBJZiBlbm91Z2ggcHJvamVjdHMgd2FudCB0
byB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlLCB0aGV5IGNhbiBhbHdheXMgc2hhcmUgaXQsIGp1c3Qg
bGlrZSB0aGV5IGhhdmUgYmVlbiBzaGFyaW5nIGBDb25jcmV0ZWAuIFlvdSBjYW4gY2hlY2sgaW4g
dGhlIGludGVyZmFjZSBhbmQgdGhlIGFkYXB0b3Igc29tZXdoZXJlIG5lYXIgYENvbmNyZXRlYCAo
cGVyaGFwcyBpbiBhIGBjb250cmliYCBzdWItZGlyZWN0b3J5KSBhbmQgbGV0IG1hbnkgcHJvamVj
dHMgdXNlIGl0LgotCi1Zb3UgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVs
bHkgZm9yIHlvdXIgcGFydGljdWxhcgotcHJvYmxlbSwgYnV0IEknZCBsaWtlIHRvIGFzc3VyZSB5
b3UgdGhhdCB0aGUgSmF2YSBjb21tdW5pdHkgaGFzIGJlZW4KLXByYWN0aWNpbmcgdGhpcyBmb3Ig
YSBsb25nIHRpbWUgYW5kIGl0J3MgYSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZQotYXBwbGlj
YWJsZSBpbiBhIHdpZGUgdmFyaWV0eSBvZiBzaXR1YXRpb25zLiA6LSkKLQotIyMgRGVsZWdhdGlu
ZyBDYWxscyB0byBhIEZha2UgIyMKLQotU29tZSB0aW1lcyB5b3UgaGF2ZSBhIG5vbi10cml2aWFs
IGZha2UgaW1wbGVtZW50YXRpb24gb2YgYW4KLWludGVyZmFjZS4gRm9yIGV4YW1wbGU6Ci0KLWBg
YAotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZvbygpIHt9Ci0gIHZpcnR1YWwg
Y2hhciBEb1RoaXMoaW50IG4pID0gMDsKLSAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFy
KiBzLCBpbnQqIHApID0gMDsKLX07Ci0KLWNsYXNzIEZha2VGb28gOiBwdWJsaWMgRm9vIHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgY2hhciBEb1RoaXMoaW50IG4pIHsKLSAgICByZXR1cm4gKG4gPiAw
KSA/ICcrJyA6Ci0gICAgICAgIChuIDwgMCkgPyAnLScgOiAnMCc7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgRG9UaGF0KGNvbnN0IGNoYXIqIHMsIGludCogcCkgewotICAgICpwID0gc3RybGVuKHMp
OwotICB9Ci19OwotYGBgCi0KLU5vdyB5b3Ugd2FudCB0byBtb2NrIHRoaXMgaW50ZXJmYWNlIHN1
Y2ggdGhhdCB5b3UgY2FuIHNldCBleHBlY3RhdGlvbnMKLW9uIGl0LiBIb3dldmVyLCB5b3UgYWxz
byB3YW50IHRvIHVzZSBgRmFrZUZvb2AgZm9yIHRoZSBkZWZhdWx0Ci1iZWhhdmlvciwgYXMgZHVw
bGljYXRpbmcgaXQgaW4gdGhlIG1vY2sgb2JqZWN0IGlzLCB3ZWxsLCBhIGxvdCBvZgotd29yay4K
LQotV2hlbiB5b3UgZGVmaW5lIHRoZSBtb2NrIGNsYXNzIHVzaW5nIEdvb2dsZSBNb2NrLCB5b3Ug
Y2FuIGhhdmUgaXQKLWRlbGVnYXRlIGl0cyBkZWZhdWx0IGFjdGlvbiB0byBhIGZha2UgY2xhc3Mg
eW91IGFscmVhZHkgaGF2ZSwgdXNpbmcKLXRoaXMgcGF0dGVybjoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLy8gTm9ybWFsIG1vY2sgbWV0aG9kIGRlZmluaXRpb25z
IHVzaW5nIEdvb2dsZSBNb2NrLgotICBNT0NLX01FVEhPRDEoRG9UaGlzLCBjaGFyKGludCBuKSk7
Ci0gIE1PQ0tfTUVUSE9EMihEb1RoYXQsIHZvaWQoY29uc3QgY2hhciogcywgaW50KiBwKSk7Ci0K
LSAgLy8gRGVsZWdhdGVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1ldGhvZHMgdG8gYSBG
YWtlRm9vIG9iamVjdC4KLSAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYmVmb3JlKiB0aGUgY3Vz
dG9tIE9OX0NBTEwoKSBzdGF0ZW1lbnRzLgotICB2b2lkIERlbGVnYXRlVG9GYWtlKCkgewotICAg
IE9OX0NBTEwoKnRoaXMsIERvVGhpcyhfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tl
KCZmYWtlXywgJkZha2VGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChf
LCBfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRv
VGhhdCkpOwotICB9Ci0gcHJpdmF0ZToKLSAgRmFrZUZvbyBmYWtlXzsgIC8vIEtlZXBzIGFuIGlu
c3RhbmNlIG9mIHRoZSBmYWtlIGluIHRoZSBtb2NrLgotfTsKLWBgYAotCi1XaXRoIHRoYXQsIHlv
dSBjYW4gdXNlIGBNb2NrRm9vYCBpbiB5b3VyIHRlc3RzIGFzIHVzdWFsLiBKdXN0IHJlbWVtYmVy
Ci10aGF0IGlmIHlvdSBkb24ndCBleHBsaWNpdGx5IHNldCBhbiBhY3Rpb24gaW4gYW4gYE9OX0NB
TEwoKWAgb3IKLWBFWFBFQ1RfQ0FMTCgpYCwgdGhlIGZha2Ugd2lsbCBiZSBjYWxsZWQgdXBvbiB0
byBkbyBpdDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0KLVRFU1QoQWJjVGVzdCwgWHl6
KSB7Ci0gIE1vY2tGb28gZm9vOwotICBmb28uRGVsZWdhdGVUb0Zha2UoKTsgLy8gRW5hYmxlcyB0
aGUgZmFrZSBmb3IgZGVsZWdhdGlvbi4KLQotICAvLyBQdXQgeW91ciBPTl9DQUxMKGZvbywgLi4u
KXMgaGVyZSwgaWYgYW55LgotCi0gIC8vIE5vIGFjdGlvbiBzcGVjaWZpZWQsIG1lYW5pbmcgdG8g
dXNlIHRoZSBkZWZhdWx0IGFjdGlvbi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBfKSk7Ci0KLSAgaW50IG4gPSAwOwotICBFWFBF
Q1RfRVEoJysnLCBmb28uRG9UaGlzKDUpKTsgIC8vIEZha2VGb286OkRvVGhpcygpIGlzIGludm9r
ZWQuCi0gIGZvby5Eb1RoYXQoIkhpIiwgJm4pOyAgICAgICAgICAgLy8gRmFrZUZvbzo6RG9UaGF0
KCkgaXMgaW52b2tlZC4KLSAgRVhQRUNUX0VRKDIsIG4pOwotfQotYGBgCi0KLSoqU29tZSB0aXBz
OioqCi0KLSAgKiBJZiB5b3Ugd2FudCwgeW91IGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgZGVmYXVs
dCBhY3Rpb24gYnkgcHJvdmlkaW5nIHlvdXIgb3duIGBPTl9DQUxMKClgIG9yIHVzaW5nIGAuV2ls
bE9uY2UoKWAgLyBgLldpbGxSZXBlYXRlZGx5KClgIGluIGBFWFBFQ1RfQ0FMTCgpYC4KLSAgKiBJ
biBgRGVsZWdhdGVUb0Zha2UoKWAsIHlvdSBvbmx5IG5lZWQgdG8gZGVsZWdhdGUgdGhlIG1ldGhv
ZHMgd2hvc2UgZmFrZSBpbXBsZW1lbnRhdGlvbiB5b3UgaW50ZW5kIHRvIHVzZS4KLSAgKiBUaGUg
Z2VuZXJhbCB0ZWNobmlxdWUgZGlzY3Vzc2VkIGhlcmUgd29ya3MgZm9yIG92ZXJsb2FkZWQgbWV0
aG9kcywgYnV0IHlvdSdsbCBuZWVkIHRvIHRlbGwgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24g
eW91IG1lYW4uIFRvIGRpc2FtYmlndWF0ZSBhIG1vY2sgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHNw
ZWNpZnkgaW5zaWRlIHRoZSBwYXJlbnRoZXNlcyBvZiBgT05fQ0FMTCgpYCksIHNlZSB0aGUgIlNl
bGVjdGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zIiBzZWN0aW9uIG9uIHRoaXMgcGFn
ZTsgdG8gZGlzYW1iaWd1YXRlIGEgZmFrZSBmdW5jdGlvbiAodGhlIG9uZSB5b3UgcGxhY2UgaW5z
aWRlIGBJbnZva2UoKWApLCB1c2UgYSBgc3RhdGljX2Nhc3RgIHRvIHNwZWNpZnkgdGhlIGZ1bmN0
aW9uJ3MgdHlwZS4gRm9yIGluc3RhbmNlLCBpZiBjbGFzcyBgRm9vYCBoYXMgbWV0aG9kcyBgY2hh
ciBEb1RoaXMoaW50IG4pYCBhbmQgYGJvb2wgRG9UaGlzKGRvdWJsZSB4KSBjb25zdGAsIGFuZCB5
b3Ugd2FudCB0byBpbnZva2UgdGhlIGxhdHRlciwgeW91IG5lZWQgdG8gd3JpdGUgYEludm9rZSgm
ZmFrZV8sIHN0YXRpY19jYXN0PGJvb2wgKEZha2VGb286OiopKGRvdWJsZSkgY29uc3Q+KCZGYWtl
Rm9vOjpEb1RoaXMpKWAgaW5zdGVhZCBvZiBgSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRvVGhp
cylgIChUaGUgc3RyYW5nZS1sb29raW5nIHRoaW5nIGluc2lkZSB0aGUgYW5nbGVkIGJyYWNrZXRz
IG9mIGBzdGF0aWNfY2FzdGAgaXMgdGhlIHR5cGUgb2YgYSBmdW5jdGlvbiBwb2ludGVyIHRvIHRo
ZSBzZWNvbmQgYERvVGhpcygpYCBtZXRob2QuKS4KLSAgKiBIYXZpbmcgdG8gbWl4IGEgbW9jayBh
bmQgYSBmYWtlIGlzIG9mdGVuIGEgc2lnbiBvZiBzb21ldGhpbmcgZ29uZSB3cm9uZy4gUGVyaGFw
cyB5b3UgaGF2ZW4ndCBnb3QgdXNlZCB0byB0aGUgaW50ZXJhY3Rpb24tYmFzZWQgd2F5IG9mIHRl
c3RpbmcgeWV0LiBPciBwZXJoYXBzIHlvdXIgaW50ZXJmYWNlIGlzIHRha2luZyBvbiB0b28gbWFu
eSByb2xlcyBhbmQgc2hvdWxkIGJlIHNwbGl0IHVwLiBUaGVyZWZvcmUsICoqZG9uJ3QgYWJ1c2Ug
dGhpcyoqLiBXZSB3b3VsZCBvbmx5IHJlY29tbWVuZCB0byBkbyBpdCBhcyBhbiBpbnRlcm1lZGlh
dGUgc3RlcCB3aGVuIHlvdSBhcmUgcmVmYWN0b3JpbmcgeW91ciBjb2RlLgotCi1SZWdhcmRpbmcg
dGhlIHRpcCBvbiBtaXhpbmcgYSBtb2NrIGFuZCBhIGZha2UsIGhlcmUncyBhbiBleGFtcGxlIG9u
Ci13aHkgaXQgbWF5IGJlIGEgYmFkIHNpZ246IFN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyBgU3lz
dGVtYCBmb3IKLWxvdy1sZXZlbCBzeXN0ZW0gb3BlcmF0aW9ucy4gSW4gcGFydGljdWxhciwgaXQg
ZG9lcyBmaWxlIGFuZCBJL08KLW9wZXJhdGlvbnMuIEFuZCBzdXBwb3NlIHlvdSB3YW50IHRvIHRl
c3QgaG93IHlvdXIgY29kZSB1c2VzIGBTeXN0ZW1gCi10byBkbyBJL08sIGFuZCB5b3UganVzdCB3
YW50IHRoZSBmaWxlIG9wZXJhdGlvbnMgdG8gd29yayBub3JtYWxseS4gSWYKLXlvdSBtb2NrIG91
dCB0aGUgZW50aXJlIGBTeXN0ZW1gIGNsYXNzLCB5b3UnbGwgaGF2ZSB0byBwcm92aWRlIGEgZmFr
ZQotaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmaWxlIG9wZXJhdGlvbiBwYXJ0LCB3aGljaCBzdWdn
ZXN0cyB0aGF0Ci1gU3lzdGVtYCBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMuCi0KLUluc3Rl
YWQsIHlvdSBjYW4gZGVmaW5lIGEgYEZpbGVPcHNgIGludGVyZmFjZSBhbmQgYW4gYElPT3BzYCBp
bnRlcmZhY2UKLWFuZCBzcGxpdCBgU3lzdGVtYCdzIGZ1bmN0aW9uYWxpdGllcyBpbnRvIHRoZSB0
d28uIFRoZW4geW91IGNhbiBtb2NrCi1gSU9PcHNgIHdpdGhvdXQgbW9ja2luZyBgRmlsZU9wc2Au
Ci0KLSMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBSZWFsIE9iamVjdCAjIwotCi1XaGVuIHVzaW5n
IHRlc3RpbmcgZG91YmxlcyAobW9ja3MsIGZha2VzLCBzdHVicywgYW5kIGV0YyksIHNvbWV0aW1l
cwotdGhlaXIgYmVoYXZpb3JzIHdpbGwgZGlmZmVyIGZyb20gdGhvc2Ugb2YgdGhlIHJlYWwgb2Jq
ZWN0cy4gVGhpcwotZGlmZmVyZW5jZSBjb3VsZCBiZSBlaXRoZXIgaW50ZW50aW9uYWwgKGFzIGlu
IHNpbXVsYXRpbmcgYW4gZXJyb3Igc3VjaAotdGhhdCB5b3UgY2FuIHRlc3QgdGhlIGVycm9yIGhh
bmRsaW5nIGNvZGUpIG9yIHVuaW50ZW50aW9uYWwuIElmIHlvdXIKLW1vY2tzIGhhdmUgZGlmZmVy
ZW50IGJlaGF2aW9ycyB0aGFuIHRoZSByZWFsIG9iamVjdHMgYnkgbWlzdGFrZSwgeW91Ci1jb3Vs
ZCBlbmQgdXAgd2l0aCBjb2RlIHRoYXQgcGFzc2VzIHRoZSB0ZXN0cyBidXQgZmFpbHMgaW4gcHJv
ZHVjdGlvbi4KLQotWW91IGNhbiB1c2UgdGhlIF9kZWxlZ2F0aW5nLXRvLXJlYWxfIHRlY2huaXF1
ZSB0byBlbnN1cmUgdGhhdCB5b3VyCi1tb2NrIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyB0aGUg
cmVhbCBvYmplY3Qgd2hpbGUgcmV0YWluaW5nIHRoZQotYWJpbGl0eSB0byB2YWxpZGF0ZSBjYWxs
cy4gVGhpcyB0ZWNobmlxdWUgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZQotZGVsZWdhdGluZy10by1m
YWtlIHRlY2huaXF1ZSwgdGhlIGRpZmZlcmVuY2UgYmVpbmcgdGhhdCB3ZSB1c2UgYSByZWFsCi1v
YmplY3QgaW5zdGVhZCBvZiBhIGZha2UuIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QXRMZWFzdDsKLXVzaW5nIDo6dGVzdGlu
Zzo6SW52b2tlOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBN
b2NrRm9vKCkgewotICAgIC8vIEJ5IGRlZmF1bHQsIGFsbCBjYWxscyBhcmUgZGVsZWdhdGVkIHRv
IHRoZSByZWFsIG9iamVjdC4KLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoKSkKLSAgICAgICAg
LldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZvbzo6RG9UaGlzKSk7Ci0gICAgT05fQ0FM
TCgqdGhpcywgRG9UaGF0KF8pKQotICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJnJlYWxf
LCAmRm9vOjpEb1RoYXQpKTsKLSAgICAuLi4KLSAgfQotICBNT0NLX01FVEhPRDAoRG9UaGlzLCAu
Li4pOwotICBNT0NLX01FVEhPRDEoRG9UaGF0LCAuLi4pOwotICAuLi4KLSBwcml2YXRlOgotICBG
b28gcmVhbF87Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBtb2NrOwotCi0gIEVYUEVDVF9DQUxMKG1v
Y2ssIERvVGhpcygpKQotICAgICAgLlRpbWVzKDMpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1Ro
YXQoIkhpIikpCi0gICAgICAuVGltZXMoQXRMZWFzdCgxKSk7Ci0gIC4uLiB1c2UgbW9jayBpbiB0
ZXN0IC4uLgotYGBgCi0KLVdpdGggdGhpcywgR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhhdCB5
b3VyIGNvZGUgbWFkZSB0aGUgcmlnaHQgY2FsbHMKLSh3aXRoIHRoZSByaWdodCBhcmd1bWVudHMs
IGluIHRoZSByaWdodCBvcmRlciwgY2FsbGVkIHRoZSByaWdodCBudW1iZXIKLW9mIHRpbWVzLCBl
dGMpLCBhbmQgYSByZWFsIG9iamVjdCB3aWxsIGFuc3dlciB0aGUgY2FsbHMgKHNvIHRoZQotYmVo
YXZpb3Igd2lsbCBiZSB0aGUgc2FtZSBhcyBpbiBwcm9kdWN0aW9uKS4gVGhpcyBnaXZlcyB5b3Ug
dGhlIGJlc3QKLW9mIGJvdGggd29ybGRzLgotCi0jIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUGFy
ZW50IENsYXNzICMjCi0KLUlkZWFsbHksIHlvdSBzaG91bGQgY29kZSB0byBpbnRlcmZhY2VzLCB3
aG9zZSBtZXRob2RzIGFyZSBhbGwgcHVyZQotdmlydHVhbC4gSW4gcmVhbGl0eSwgc29tZXRpbWVz
IHlvdSBkbyBuZWVkIHRvIG1vY2sgYSB2aXJ0dWFsIG1ldGhvZAotdGhhdCBpcyBub3QgcHVyZSAo
aS5lLCBpdCBhbHJlYWR5IGhhcyBhbiBpbXBsZW1lbnRhdGlvbikuIEZvciBleGFtcGxlOgotCi1g
YGAKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5Gb28oKTsKLQotICB2aXJ0dWFs
IHZvaWQgUHVyZShpbnQgbikgPSAwOwotICB2aXJ0dWFsIGludCBDb25jcmV0ZShjb25zdCBjaGFy
KiBzdHIpIHsgLi4uIH0KLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJs
aWM6Ci0gIC8vIE1vY2tpbmcgYSBwdXJlIG1ldGhvZC4KLSAgTU9DS19NRVRIT0QxKFB1cmUsIHZv
aWQoaW50IG4pKTsKLSAgLy8gTW9ja2luZyBhIGNvbmNyZXRlIG1ldGhvZC4gIEZvbzo6Q29uY3Jl
dGUoKSBpcyBzaGFkb3dlZC4KLSAgTU9DS19NRVRIT0QxKENvbmNyZXRlLCBpbnQoY29uc3QgY2hh
ciogc3RyKSk7Ci19OwotYGBgCi0KLVNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gY2FsbCBgRm9v
OjpDb25jcmV0ZSgpYCBpbnN0ZWFkIG9mCi1gTW9ja0Zvbzo6Q29uY3JldGUoKWAuIFBlcmhhcHMg
eW91IHdhbnQgdG8gZG8gaXQgYXMgcGFydCBvZiBhIHN0dWIKLWFjdGlvbiwgb3IgcGVyaGFwcyB5
b3VyIHRlc3QgZG9lc24ndCBuZWVkIHRvIG1vY2sgYENvbmNyZXRlKClgIGF0IGFsbAotKGJ1dCBp
dCB3b3VsZCBiZSBvaC1zbyBwYWluZnVsIHRvIGhhdmUgdG8gZGVmaW5lIGEgbmV3IG1vY2sgY2xh
c3MKLXdoZW5ldmVyIHlvdSBkb24ndCBuZWVkIHRvIG1vY2sgb25lIG9mIGl0cyBtZXRob2RzKS4K
LQotVGhlIHRyaWNrIGlzIHRvIGxlYXZlIGEgYmFjayBkb29yIGluIHlvdXIgbW9jayBjbGFzcyBm
b3IgYWNjZXNzaW5nIHRoZQotcmVhbCBtZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzOgotCi1gYGAK
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE1vY2tpbmcgYSBw
dXJlIG1ldGhvZC4KLSAgTU9DS19NRVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKLSAgLy8gTW9j
a2luZyBhIGNvbmNyZXRlIG1ldGhvZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KLSAg
TU9DS19NRVRIT0QxKENvbmNyZXRlLCBpbnQoY29uc3QgY2hhciogc3RyKSk7Ci0KLSAgLy8gVXNl
IHRoaXMgdG8gY2FsbCBDb25jcmV0ZSgpIGRlZmluZWQgaW4gRm9vLgotICBpbnQgRm9vQ29uY3Jl
dGUoY29uc3QgY2hhciogc3RyKSB7IHJldHVybiBGb286OkNvbmNyZXRlKHN0cik7IH0KLX07Ci1g
YGAKLQotTm93LCB5b3UgY2FuIGNhbGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zaWRlIGFuIGFjdGlv
biBieToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIENvbmNyZXRlKF8pKQotICAgICAgLldpbGxPbmNl
KEludm9rZSgmZm9vLCAmTW9ja0Zvbzo6Rm9vQ29uY3JldGUpKTsKLWBgYAotCi1vciB0ZWxsIHRo
ZSBtb2NrIG9iamVjdCB0aGF0IHlvdSBkb24ndCB3YW50IHRvIG1vY2sgYENvbmNyZXRlKClgOgot
Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotLi4uCi0gIE9OX0NBTEwoZm9vLCBDb25j
cmV0ZShfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZm9vLCAmTW9ja0Zvbzo6Rm9v
Q29uY3JldGUpKTsKLWBgYAotCi0oV2h5IGRvbid0IHdlIGp1c3Qgd3JpdGUgYEludm9rZSgmZm9v
LCAmRm9vOjpDb25jcmV0ZSlgPyBJZiB5b3UgZG8KLXRoYXQsIGBNb2NrRm9vOjpDb25jcmV0ZSgp
YCB3aWxsIGJlIGNhbGxlZCAoYW5kIGNhdXNlIGFuIGluZmluaXRlCi1yZWN1cnNpb24pIHNpbmNl
IGBGb286OkNvbmNyZXRlKClgIGlzIHZpcnR1YWwuIFRoYXQncyBqdXN0IGhvdyBDKysKLXdvcmtz
LikKLQotIyBVc2luZyBNYXRjaGVycyAjCi0KLSMjIE1hdGNoaW5nIEFyZ3VtZW50IFZhbHVlcyBF
eGFjdGx5ICMjCi0KLVlvdSBjYW4gc3BlY2lmeSBleGFjdGx5IHdoaWNoIGFyZ3VtZW50cyBhIG1v
Y2sgbWV0aG9kIGlzIGV4cGVjdGluZzoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsK
LS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4oJ2EnKSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCJIZWxsbyIsIGJhcikpOwotYGBg
Ci0KLSMjIFVzaW5nIFNpbXBsZSBNYXRjaGVycyAjIwotCi1Zb3UgY2FuIHVzZSBtYXRjaGVycyB0
byBtYXRjaCBhcmd1bWVudHMgdGhhdCBoYXZlIGEgY2VydGFpbiBwcm9wZXJ0eToKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6OkdlOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoR2UoNSkpKSAg
Ly8gVGhlIGFyZ3VtZW50IG11c3QgYmUgPj0gNS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2En
KSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCJIZWxsbyIsIE5vdE51bGwoKSkpOwotICAv
LyBUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3Qgbm90IGJlIE5VTEwuCi1gYGAKLQotQSBmcmVxdWVu
dGx5IHVzZWQgbWF0Y2hlciBpcyBgX2AsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmc6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotLi4uCi0gIEVY
UEVDVF9DQUxMKGZvbywgRG9UaGF0KF8sIE5vdE51bGwoKSkpOwotYGBgCi0KLSMjIENvbWJpbmlu
ZyBNYXRjaGVycyAjIwotCi1Zb3UgY2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBleGlz
dGluZyBvbmVzIHVzaW5nIGBBbGxPZigpYCwKLWBBbnlPZigpYCwgYW5kIGBOb3QoKWA6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci11c2luZyA6
OnRlc3Rpbmc6Okhhc1N1YnN0cjsKLXVzaW5nIDo6dGVzdGluZzo6TmU7Ci11c2luZyA6OnRlc3Rp
bmc6Ok5vdDsKLS4uLgotICAvLyBUaGUgYXJndW1lbnQgbXVzdCBiZSA+IDUgYW5kICE9IDEwLgot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhBbGxPZihHdCg1KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmUoMTApKSkpOwotCi0gIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0
IG5vdCBjb250YWluIHN1Yi1zdHJpbmcgImJsYWgiLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhh
dChOb3QoSGFzU3Vic3RyKCJibGFoIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KSk7Ci1gYGAKLQotIyMgQ2FzdGluZyBNYXRjaGVycyAjIwotCi1Hb29nbGUgTW9jayBtYXRjaGVy
cyBhcmUgc3RhdGljYWxseSB0eXBlZCwgbWVhbmluZyB0aGF0IHRoZSBjb21waWxlcgotY2FuIGNh
dGNoIHlvdXIgbWlzdGFrZSBpZiB5b3UgdXNlIGEgbWF0Y2hlciBvZiB0aGUgd3JvbmcgdHlwZSAo
Zm9yCi1leGFtcGxlLCBpZiB5b3UgdXNlIGBFcSg1KWAgdG8gbWF0Y2ggYSBgc3RyaW5nYCBhcmd1
bWVudCkuIEdvb2QgZm9yCi15b3UhCi0KLVNvbWV0aW1lcywgaG93ZXZlciwgeW91IGtub3cgd2hh
dCB5b3UncmUgZG9pbmcgYW5kIHdhbnQgdGhlIGNvbXBpbGVyCi10byBnaXZlIHlvdSBzb21lIHNs
YWNrLiBPbmUgZXhhbXBsZSBpcyB0aGF0IHlvdSBoYXZlIGEgbWF0Y2hlciBmb3IKLWBsb25nYCBh
bmQgdGhlIGFyZ3VtZW50IHlvdSB3YW50IHRvIG1hdGNoIGlzIGBpbnRgLiBXaGlsZSB0aGUgdHdv
Ci10eXBlcyBhcmVuJ3QgZXhhY3RseSB0aGUgc2FtZSwgdGhlcmUgaXMgbm90aGluZyByZWFsbHkg
d3Jvbmcgd2l0aAotdXNpbmcgYSBgTWF0Y2hlcjxsb25nPmAgdG8gbWF0Y2ggYW4gYGludGAgLSBh
ZnRlciBhbGwsIHdlIGNhbiBmaXJzdAotY29udmVydCB0aGUgYGludGAgYXJndW1lbnQgdG8gYSBg
bG9uZ2AgYmVmb3JlIGdpdmluZyBpdCB0byB0aGUKLW1hdGNoZXIuCi0KLVRvIHN1cHBvcnQgdGhp
cyBuZWVkLCBHb29nbGUgTW9jayBnaXZlcyB5b3UgdGhlCi1gU2FmZU1hdGNoZXJDYXN0PFQ+KG0p
YCBmdW5jdGlvbi4gSXQgY2FzdHMgYSBtYXRjaGVyIGBtYCB0byB0eXBlCi1gTWF0Y2hlcjxUPmAu
IFRvIGVuc3VyZSBzYWZldHksIEdvb2dsZSBNb2NrIGNoZWNrcyB0aGF0IChsZXQgYFVgIGJlIHRo
ZQotdHlwZSBgbWAgYWNjZXB0cyk6Ci0KLSAgMS4gVHlwZSBgVGAgY2FuIGJlIGltcGxpY2l0bHkg
Y2FzdCB0byB0eXBlIGBVYDsKLSAgMS4gV2hlbiBib3RoIGBUYCBhbmQgYFVgIGFyZSBidWlsdC1p
biBhcml0aG1ldGljIHR5cGVzIChgYm9vbGAsIGludGVnZXJzLCBhbmQgZmxvYXRpbmctcG9pbnQg
bnVtYmVycyksIHRoZSBjb252ZXJzaW9uIGZyb20gYFRgIHRvIGBVYCBpcyBub3QgbG9zc3kgKGlu
IG90aGVyIHdvcmRzLCBhbnkgdmFsdWUgcmVwcmVzZW50YWJsZSBieSBgVGAgY2FuIGFsc28gYmUg
cmVwcmVzZW50ZWQgYnkgYFVgKTsgYW5kCi0gIDEuIFdoZW4gYFVgIGlzIGEgcmVmZXJlbmNlLCBg
VGAgbXVzdCBhbHNvIGJlIGEgcmVmZXJlbmNlIChhcyB0aGUgdW5kZXJseWluZyBtYXRjaGVyIG1h
eSBiZSBpbnRlcmVzdGVkIGluIHRoZSBhZGRyZXNzIG9mIHRoZSBgVWAgdmFsdWUpLgotCi1UaGUg
Y29kZSB3b24ndCBjb21waWxlIGlmIGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGlzbid0IG1ldC4K
LQotSGVyZSdzIG9uZSBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6U2FmZU1hdGNo
ZXJDYXN0OwotCi0vLyBBIGJhc2UgY2xhc3MgYW5kIGEgY2hpbGQgY2xhc3MuCi1jbGFzcyBCYXNl
IHsgLi4uIH07Ci1jbGFzcyBEZXJpdmVkIDogcHVibGljIEJhc2UgeyAuLi4gfTsKLQotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKERvVGhpcywg
dm9pZChEZXJpdmVkKiBkZXJpdmVkKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIC8v
IG0gaXMgYSBNYXRjaGVyPEJhc2UqPiB3ZSBnb3QgZnJvbSBzb21ld2hlcmUuCi0gIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGlzKFNhZmVNYXRjaGVyQ2FzdDxEZXJpdmVkKj4obSkpKTsKLWBgYAotCi1J
ZiB5b3UgZmluZCBgU2FmZU1hdGNoZXJDYXN0PFQ+KG0pYCB0b28gbGltaXRpbmcsIHlvdSBjYW4g
dXNlIGEgc2ltaWxhcgotZnVuY3Rpb24gYE1hdGNoZXJDYXN0PFQ+KG0pYC4gVGhlIGRpZmZlcmVu
Y2UgaXMgdGhhdCBgTWF0Y2hlckNhc3RgIHdvcmtzCi1hcyBsb25nIGFzIHlvdSBjYW4gYHN0YXRp
Y19jYXN0YCB0eXBlIGBUYCB0byB0eXBlIGBVYC4KLQotYE1hdGNoZXJDYXN0YCBlc3NlbnRpYWxs
eSBsZXRzIHlvdSBieXBhc3MgQysrJ3MgdHlwZSBzeXN0ZW0KLShgc3RhdGljX2Nhc3RgIGlzbid0
IGFsd2F5cyBzYWZlIGFzIGl0IGNvdWxkIHRocm93IGF3YXkgaW5mb3JtYXRpb24sCi1mb3IgZXhh
bXBsZSksIHNvIGJlIGNhcmVmdWwgbm90IHRvIG1pc3VzZS9hYnVzZSBpdC4KLQotIyMgU2VsZWN0
aW5nIEJldHdlZW4gT3ZlcmxvYWRlZCBGdW5jdGlvbnMgIyMKLQotSWYgeW91IGV4cGVjdCBhbiBv
dmVybG9hZGVkIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgdGhlIGNvbXBpbGVyIG1heQotbmVlZCBz
b21lIGhlbHAgb24gd2hpY2ggb3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IGlzLgotCi1UbyBkaXNhbWJp
Z3VhdGUgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmpl
Y3QsCi11c2UgdGhlIGBDb25zdCgpYCBhcmd1bWVudCB3cmFwcGVyLgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6UmV0dXJuUmVmOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4u
LgotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAo
R2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBCYXIg
YmFyMSwgYmFyMjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkgICAgICAgICAvLyBUaGUg
bm9uLWNvbnN0IEdldEJhcigpLgotICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIxKSk7Ci0g
IEVYUEVDVF9DQUxMKENvbnN0KGZvbyksIEdldEJhcigpKSAgLy8gVGhlIGNvbnN0IEdldEJhcigp
LgotICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIyKSk7Ci1gYGAKLQotKGBDb25zdCgpYCBp
cyBkZWZpbmVkIGJ5IEdvb2dsZSBNb2NrIGFuZCByZXR1cm5zIGEgYGNvbnN0YCByZWZlcmVuY2UK
LXRvIGl0cyBhcmd1bWVudC4pCi0KLVRvIGRpc2FtYmlndWF0ZSBvdmVybG9hZGVkIGZ1bmN0aW9u
cyB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMKLWJ1dCBkaWZmZXJlbnQgYXJndW1l
bnQgdHlwZXMsIHlvdSBtYXkgbmVlZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlCi1vZiBhIG1h
dGNoZXIsIGVpdGhlciBieSB3cmFwcGluZyB5b3VyIG1hdGNoZXIgaW4gYE1hdGNoZXI8dHlwZT4o
KWAsIG9yCi11c2luZyBhIG1hdGNoZXIgd2hvc2UgdHlwZSBpcyBmaXhlZCAoYFR5cGVkRXE8dHlw
ZT5gLCBgQW48dHlwZT4oKWAsCi1ldGMpOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW47Ci11
c2luZyA6OnRlc3Rpbmc6Okx0OwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVyOwotdXNpbmcgOjp0
ZXN0aW5nOjpUeXBlZEVxOwotCi1jbGFzcyBNb2NrUHJpbnRlciA6IHB1YmxpYyBQcmludGVyIHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShQcmludCwgdm9pZChpbnQgbikpOwotICBNT0NLX01F
VEhPRDEoUHJpbnQsIHZvaWQoY2hhciBjKSk7Ci19OwotCi1URVNUKFByaW50ZXJUZXN0LCBQcmlu
dCkgewotICBNb2NrUHJpbnRlciBwcmludGVyOwotCi0gIEVYUEVDVF9DQUxMKHByaW50ZXIsIFBy
aW50KEFuPGludD4oKSkpOyAgICAgICAgICAgIC8vIHZvaWQgUHJpbnQoaW50KTsKLSAgRVhQRUNU
X0NBTEwocHJpbnRlciwgUHJpbnQoTWF0Y2hlcjxpbnQ+KEx0KDUpKSkpOyAgLy8gdm9pZCBQcmlu
dChpbnQpOwotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChUeXBlZEVxPGNoYXI+KCdhJykp
KTsgICAvLyB2b2lkIFByaW50KGNoYXIpOwotCi0gIHByaW50ZXIuUHJpbnQoMyk7Ci0gIHByaW50
ZXIuUHJpbnQoNik7Ci0gIHByaW50ZXIuUHJpbnQoJ2EnKTsKLX0KLWBgYAotCi0jIyBQZXJmb3Jt
aW5nIERpZmZlcmVudCBBY3Rpb25zIEJhc2VkIG9uIHRoZSBBcmd1bWVudHMgIyMKLQotV2hlbiBh
IG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwgdGhlIF9sYXN0XyBtYXRjaGluZyBleHBlY3RhdGlvbiB0
aGF0J3MKLXN0aWxsIGFjdGl2ZSB3aWxsIGJlIHNlbGVjdGVkICh0aGluayAibmV3ZXIgb3ZlcnJp
ZGVzIG9sZGVyIikuIFNvLCB5b3UKLWNhbiBtYWtlIGEgbWV0aG9kIGRvIGRpZmZlcmVudCB0aGlu
Z3MgZGVwZW5kaW5nIG9uIGl0cyBhcmd1bWVudCB2YWx1ZXMKLWxpa2UgdGhpczoKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okx0OwotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Ci0uLi4KLSAgLy8gVGhlIGRlZmF1bHQgY2FzZS4KLSAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoaXMoXykpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdiJykpOwotCi0gIC8v
IFRoZSBtb3JlIHNwZWNpZmljIGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEx0KDUp
KSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJ2EnKSk7Ci1gYGAKLQotTm93LCBpZiBg
Zm9vLkRvVGhpcygpYCBpcyBjYWxsZWQgd2l0aCBhIHZhbHVlIGxlc3MgdGhhbiA1LCBgJ2EnYCB3
aWxsCi1iZSByZXR1cm5lZDsgb3RoZXJ3aXNlIGAnYidgIHdpbGwgYmUgcmV0dXJuZWQuCi0KLSMj
IE1hdGNoaW5nIE11bHRpcGxlIEFyZ3VtZW50cyBhcyBhIFdob2xlICMjCi0KLVNvbWV0aW1lcyBp
dCdzIG5vdCBlbm91Z2ggdG8gbWF0Y2ggdGhlIGFyZ3VtZW50cyBpbmRpdmlkdWFsbHkuIEZvcgot
ZXhhbXBsZSwgd2UgbWF5IHdhbnQgdG8gc2F5IHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qg
YmUgbGVzcyB0aGFuCi10aGUgc2Vjb25kIGFyZ3VtZW50LiBUaGUgYFdpdGgoKWAgY2xhdXNlIGFs
bG93cyB1cyB0byBtYXRjaAotYWxsIGFyZ3VtZW50cyBvZiBhIG1vY2sgZnVuY3Rpb24gYXMgYSB3
aG9sZS4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6TmU7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9v
LCBJblJhbmdlKE5lKDApLCBfKSkKLSAgICAgIC5XaXRoKEx0KCkpOwotYGBgCi0KLXNheXMgdGhh
dCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgYEluUmFuZ2UoKWAgbXVzdCBub3QgYmUgMCwgYW5kIG11
c3QgYmUKLWxlc3MgdGhhbiB0aGUgc2Vjb25kIGFyZ3VtZW50LgotCi1UaGUgZXhwcmVzc2lvbiBp
bnNpZGUgYFdpdGgoKWAgbXVzdCBiZSBhIG1hdGNoZXIgb2YgdHlwZQotYE1hdGNoZXI8IDo6dGVz
dGluZzo6dHVwbGU8QTEsIC4uLiwgQW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBBbmAgYXJlIHRo
ZQotdHlwZXMgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLQotWW91IGNhbiBhbHNvIHdyaXRl
IGBBbGxBcmdzKG0pYCBpbnN0ZWFkIG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBUaGUKLXR3byBm
b3JtcyBhcmUgZXF1aXZhbGVudCwgYnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAgaXMgbW9yZSBy
ZWFkYWJsZQotdGhhbiBgLldpdGgoTHQoKSlgLgotCi1Zb3UgY2FuIHVzZSBgQXJnczxrMSwgLi4u
LCBrbj4obSlgIHRvIG1hdGNoIHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCi0oYXMgYSB0dXBs
ZSkgYWdhaW5zdCBgbWAuIEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LXVzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6OkFyZ3M7Ci11c2luZyA6
OnRlc3Rpbmc6Okx0OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmxhaChfLCBfLCBfKSkKLSAg
ICAgIC5XaXRoKEFsbE9mKEFyZ3M8MCwgMT4oTHQoKSksIEFyZ3M8MSwgMj4oTHQoKSkpKTsKLWBg
YAotCi1zYXlzIHRoYXQgYEJsYWgoKWAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgYHhg
LCBgeWAsIGFuZCBgemAgd2hlcmUKLWB4IDwgeSA8IHpgLgotCi1BcyBhIGNvbnZlbmllbmNlIGFu
ZCBleGFtcGxlLCBHb29nbGUgTW9jayBwcm92aWRlcyBzb21lIG1hdGNoZXJzIGZvcgotMi10dXBs
ZXMsIGluY2x1ZGluZyB0aGUgYEx0KClgIG1hdGNoZXIgYWJvdmUuIFNlZSB0aGUgW0NoZWF0U2hl
ZXRdKENoZWF0U2hlZXQubWQpIGZvcgotdGhlIGNvbXBsZXRlIGxpc3QuCi0KLU5vdGUgdGhhdCBp
ZiB5b3Ugd2FudCB0byBwYXNzIHRoZSBhcmd1bWVudHMgdG8gYSBwcmVkaWNhdGUgb2YgeW91ciBv
d24KLShlLmcuIGAuV2l0aChBcmdzPDAsIDE+KFRydWx5KCZNeVByZWRpY2F0ZSkpKWApLCB0aGF0
IHByZWRpY2F0ZSBNVVNUIGJlCi13cml0dGVuIHRvIHRha2UgYSBgOjp0ZXN0aW5nOjp0dXBsZWAg
YXMgaXRzIGFyZ3VtZW50OyBHb29nbGUgTW9jayB3aWxsIHBhc3MgdGhlIGBuYCBzZWxlY3RlZCBh
cmd1bWVudHMgYXMgX29uZV8gc2luZ2xlIHR1cGxlIHRvIHRoZSBwcmVkaWNhdGUuCi0KLSMjIFVz
aW5nIE1hdGNoZXJzIGFzIFByZWRpY2F0ZXMgIyMKLQotSGF2ZSB5b3Ugbm90aWNlZCB0aGF0IGEg
bWF0Y2hlciBpcyBqdXN0IGEgZmFuY3kgcHJlZGljYXRlIHRoYXQgYWxzbwota25vd3MgaG93IHRv
IGRlc2NyaWJlIGl0c2VsZj8gTWFueSBleGlzdGluZyBhbGdvcml0aG1zIHRha2UgcHJlZGljYXRl
cwotYXMgYXJndW1lbnRzIChlLmcuIHRob3NlIGRlZmluZWQgaW4gU1RMJ3MgYDxhbGdvcml0aG0+
YCBoZWFkZXIpLCBhbmQKLWl0IHdvdWxkIGJlIGEgc2hhbWUgaWYgR29vZ2xlIE1vY2sgbWF0Y2hl
cnMgYXJlIG5vdCBhbGxvd2VkIHRvCi1wYXJ0aWNpcGF0ZS4KLQotTHVja2lseSwgeW91IGNhbiB1
c2UgYSBtYXRjaGVyIHdoZXJlIGEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IgaXMKLWV4cGVjdGVk
IGJ5IHdyYXBwaW5nIGl0IGluc2lkZSB0aGUgYE1hdGNoZXMoKWAgZnVuY3Rpb24uIEZvciBleGFt
cGxlLAotCi1gYGAKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1z
dGQ6OnZlY3RvcjxpbnQ+IHY7Ci0uLi4KLS8vIEhvdyBtYW55IGVsZW1lbnRzIGluIHYgYXJlID49
IDEwPwotY29uc3QgaW50IGNvdW50ID0gY291bnRfaWYodi5iZWdpbigpLCB2LmVuZCgpLCBNYXRj
aGVzKEdlKDEwKSkpOwotYGBgCi0KLVNpbmNlIHlvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVy
cyBmcm9tIHNpbXBsZXIgb25lcyBlYXNpbHkgdXNpbmcKLUdvb2dsZSBNb2NrLCB0aGlzIGdpdmVz
IHlvdSBhIHdheSB0byBjb252ZW5pZW50bHkgY29uc3RydWN0IGNvbXBvc2l0ZQotcHJlZGljYXRl
cyAoZG9pbmcgdGhlIHNhbWUgdXNpbmcgU1RMJ3MgYDxmdW5jdGlvbmFsPmAgaGVhZGVyIGlzIGp1
c3QKLXBhaW5mdWwpLiBGb3IgZXhhbXBsZSwgaGVyZSdzIGEgcHJlZGljYXRlIHRoYXQncyBzYXRp
c2ZpZWQgYnkgYW55Ci1udW1iZXIgdGhhdCBpcyA+PSAwLCA8PSAxMDAsIGFuZCAhPSA1MDoKLQot
YGBgCi1NYXRjaGVzKEFsbE9mKEdlKDApLCBMZSgxMDApLCBOZSg1MCkpKQotYGBgCi0KLSMjIFVz
aW5nIE1hdGNoZXJzIGluIEdvb2dsZSBUZXN0IEFzc2VydGlvbnMgIyMKLQotU2luY2UgbWF0Y2hl
cnMgYXJlIGJhc2ljYWxseSBwcmVkaWNhdGVzIHRoYXQgYWxzbyBrbm93IGhvdyB0byBkZXNjcmli
ZQotdGhlbXNlbHZlcywgdGhlcmUgaXMgYSB3YXkgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlbSBp
bgotW0dvb2dsZSBUZXN0XSguLi8uLi9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4gSXQncwotY2Fs
bGVkIGBBU1NFUlRfVEhBVGAgYW5kIGBFWFBFQ1RfVEhBVGA6Ci0KLWBgYAotICBBU1NFUlRfVEhB
VCh2YWx1ZSwgbWF0Y2hlcik7ICAvLyBBc3NlcnRzIHRoYXQgdmFsdWUgbWF0Y2hlcyBtYXRjaGVy
LgotICBFWFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7ICAvLyBUaGUgbm9uLWZhdGFsIHZlcnNp
b24uCi1gYGAKLQotRm9yIGV4YW1wbGUsIGluIGEgR29vZ2xlIFRlc3QgdGVzdCB5b3UgY2FuIHdy
aXRlOgotCi1gYGAKLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotCi11c2luZyA6OnRlc3Rpbmc6
OkFsbE9mOwotdXNpbmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6TGU7Ci11c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXNSZWdleDsKLXVzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsK
LS4uLgotCi0gIEVYUEVDVF9USEFUKEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKLSAgRVhQ
RUNUX1RIQVQoQmFyKCksIE1hdGNoZXNSZWdleCgiTGluZSBcXGQrIikpOwotICBBU1NFUlRfVEhB
VChCYXooKSwgQWxsT2YoR2UoNSksIExlKDEwKSkpOwotYGBgCi0KLXdoaWNoIChhcyB5b3UgY2Fu
IHByb2JhYmx5IGd1ZXNzKSBleGVjdXRlcyBgRm9vKClgLCBgQmFyKClgLCBhbmQKLWBCYXooKWAs
IGFuZCB2ZXJpZmllcyB0aGF0OgotCi0gICogYEZvbygpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQg
c3RhcnRzIHdpdGggYCJIZWxsbyJgLgotICAqIGBCYXIoKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0
IG1hdGNoZXMgcmVndWxhciBleHByZXNzaW9uIGAiTGluZSBcXGQrImAuCi0gICogYEJheigpYCBy
ZXR1cm5zIGEgbnVtYmVyIGluIHRoZSByYW5nZSBbNSwgMTBdLgotCi1UaGUgbmljZSB0aGluZyBh
Ym91dCB0aGVzZSBtYWNyb3MgaXMgdGhhdCBfdGhleSByZWFkIGxpa2UKLUVuZ2xpc2hfLiBUaGV5
IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzIHRvby4gRm9yIGV4YW1wbGUsIGlmIHRoZQot
Zmlyc3QgYEVYUEVDVF9USEFUKClgIGFib3ZlIGZhaWxzLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNv
bWV0aGluZyBsaWtlOgotCi1gYGAKLVZhbHVlIG9mOiBGb28oKQotICBBY3R1YWw6ICJIaSwgd29y
bGQhIgotRXhwZWN0ZWQ6IHN0YXJ0cyB3aXRoICJIZWxsbyIKLWBgYAotCi0qKkNyZWRpdDoqKiBU
aGUgaWRlYSBvZiBgKEFTU0VSVHxFWFBFQ1QpX1RIQVRgIHdhcyBzdG9sZW4gZnJvbSB0aGUKLVtI
YW1jcmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2hhbWNyZXN0LykgcHJvamVjdCwgd2hpY2ggYWRk
cwotYGFzc2VydFRoYXQoKWAgdG8gSlVuaXQuCi0KLSMjIFVzaW5nIFByZWRpY2F0ZXMgYXMgTWF0
Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBidWlsdC1pbiBzZXQgb2YgbWF0Y2hl
cnMuIEluIGNhc2UgeW91IGZpbmQgdGhlbQotbGFja2luZywgeW91IGNhbiB1c2UgYW4gYXJiaXRy
YXkgdW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IKLWFzIGEgbWF0Y2hlciAtIGFz
IGxvbmcgYXMgdGhlIHByZWRpY2F0ZSBhY2NlcHRzIGEgdmFsdWUgb2YgdGhlIHR5cGUKLXlvdSB3
YW50LiBZb3UgZG8gdGhpcyBieSB3cmFwcGluZyB0aGUgcHJlZGljYXRlIGluc2lkZSB0aGUgYFRy
dWx5KClgCi1mdW5jdGlvbiwgZm9yIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpU
cnVseTsKLQotaW50IElzRXZlbihpbnQgbikgeyByZXR1cm4gKG4gJSAyKSA9PSAwID8gMSA6IDA7
IH0KLS4uLgotCi0gIC8vIEJhcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYW4gZXZlbiBudW1iZXIu
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKFRydWx5KElzRXZlbikpKTsKLWBgYAotCi1Ob3RlIHRo
YXQgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiAvIGZ1bmN0b3IgZG9lc24ndCBoYXZlIHRvIHJldHVy
bgotYGJvb2xgLiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIHVz
ZWQgYXMgdGhlCi1jb25kaXRpb24gaW4gc3RhdGVtZW50IGBpZiAoY29uZGl0aW9uKSAuLi5gLgot
Ci0jIyBNYXRjaGluZyBBcmd1bWVudHMgdGhhdCBBcmUgTm90IENvcHlhYmxlICMjCi0KLVdoZW4g
eW91IGRvIGFuIGBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKGJhcikpYCwgR29vZ2xlIE1vY2sg
c2F2ZXMKLWF3YXkgYSBjb3B5IG9mIGBiYXJgLiBXaGVuIGBGb28oKWAgaXMgY2FsbGVkIGxhdGVy
LCBHb29nbGUgTW9jawotY29tcGFyZXMgdGhlIGFyZ3VtZW50IHRvIGBGb28oKWAgd2l0aCB0aGUg
c2F2ZWQgY29weSBvZiBgYmFyYC4gVGhpcwotd2F5LCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCBgYmFyYCBiZWluZyBtb2RpZmllZCBvciBkZXN0cm95ZWQKLWFmdGVyIHRoZSBgRVhQRUNU
X0NBTEwoKWAgaXMgZXhlY3V0ZWQuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB5b3UgdXNlCi1tYXRj
aGVycyBsaWtlIGBFcShiYXIpYCwgYExlKGJhcilgLCBhbmQgc28gb24uCi0KLUJ1dCB3aGF0IGlm
IGBiYXJgIGNhbm5vdCBiZSBjb3BpZWQgKGkuZS4gaGFzIG5vIGNvcHkgY29uc3RydWN0b3IpPyBZ
b3UKLWNvdWxkIGRlZmluZSB5b3VyIG93biBtYXRjaGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQgd2l0
aCBgVHJ1bHkoKWAsIGFzCi10aGUgcHJldmlvdXMgY291cGxlIG9mIHJlY2lwZXMgaGF2ZSBzaG93
bi4gT3IsIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQKLWF3YXkgZnJvbSBpdCBpZiB5b3UgY2FuIGd1
YXJhbnRlZSB0aGF0IGBiYXJgIHdvbid0IGJlIGNoYW5nZWQgYWZ0ZXIKLXRoZSBgRVhQRUNUX0NB
TEwoKWAgaXMgZXhlY3V0ZWQuIEp1c3QgdGVsbCBHb29nbGUgTW9jayB0aGF0IGl0IHNob3VsZAot
c2F2ZSBhIHJlZmVyZW5jZSB0byBgYmFyYCwgaW5zdGVhZCBvZiBhIGNvcHkgb2YgaXQuIEhlcmUn
cyBob3c6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFcTsKLXVzaW5nIDo6dGVzdGluZzo6QnlS
ZWY7Ci11c2luZyA6OnRlc3Rpbmc6Okx0OwotLi4uCi0gIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdz
IGFyZ3VtZW50ID09IGJhci4KLSAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhFcShCeVJlZihi
YXIpKSkpOwotCi0gIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50IDwgYmFyLgotICBF
WFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKEx0KEJ5UmVmKGJhcikpKSk7Ci1gYGAKLQotUmVtZW1i
ZXI6IGlmIHlvdSBkbyB0aGlzLCBkb24ndCBjaGFuZ2UgYGJhcmAgYWZ0ZXIgdGhlCi1gRVhQRUNU
X0NBTEwoKWAsIG9yIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotCi0jIyBWYWxpZGF0aW5nIGEg
TWVtYmVyIG9mIGFuIE9iamVjdCAjIwotCi1PZnRlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSBy
ZWZlcmVuY2UgdG8gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBXaGVuCi1tYXRjaGluZyB0aGUgYXJn
dW1lbnQsIHlvdSBtYXkgbm90IHdhbnQgdG8gY29tcGFyZSB0aGUgZW50aXJlIG9iamVjdAotYWdh
aW5zdCBhIGZpeGVkIG9iamVjdCwgYXMgdGhhdCBtYXkgYmUgb3Zlci1zcGVjaWZpY2F0aW9uLiBJ
bnN0ZWFkLAoteW91IG1heSBuZWVkIHRvIHZhbGlkYXRlIGEgY2VydGFpbiBtZW1iZXIgdmFyaWFi
bGUgb3IgdGhlIHJlc3VsdCBvZiBhCi1jZXJ0YWluIGdldHRlciBtZXRob2Qgb2YgdGhlIG9iamVj
dC4gWW91IGNhbiBkbyB0aGlzIHdpdGggYEZpZWxkKClgCi1hbmQgYFByb3BlcnR5KClgLiBNb3Jl
IHNwZWNpZmljYWxseSwKLQotYGBgCi1GaWVsZCgmRm9vOjpiYXIsIG0pCi1gYGAKLQotaXMgYSBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBgYmFyYCBtZW1iZXIgdmFy
aWFibGUKLXNhdGlzZmllcyBtYXRjaGVyIGBtYC4KLQotYGBgCi1Qcm9wZXJ0eSgmRm9vOjpiYXos
IG0pCi1gYGAKLQotaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9z
ZSBgYmF6KClgIG1ldGhvZCByZXR1cm5zCi1hIHZhbHVlIHRoYXQgc2F0aXNmaWVzIG1hdGNoZXIg
YG1gLgotCi1Gb3IgZXhhbXBsZToKLQotPiB8IGBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKWAg
fCBNYXRjaGVzIGB4YCB3aGVyZSBgeC5udW1iZXIgPj0gM2AuIHwKLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotPiB8
IGBQcm9wZXJ0eSgmRm9vOjpuYW1lLCBTdGFydHNXaXRoKCJKb2huICIpKWAgfCBNYXRjaGVzIGB4
YCB3aGVyZSBgeC5uYW1lKClgIHN0YXJ0cyB3aXRoIGAiSm9obiAiYC4gfAotCi1Ob3RlIHRoYXQg
aW4gYFByb3BlcnR5KCZGb286OmJheiwgLi4uKWAsIG1ldGhvZCBgYmF6KClgIG11c3QgdGFrZSBu
bwotYXJndW1lbnQgYW5kIGJlIGRlY2xhcmVkIGFzIGBjb25zdGAuCi0KLUJUVywgYEZpZWxkKClg
IGFuZCBgUHJvcGVydHkoKWAgY2FuIGFsc28gbWF0Y2ggcGxhaW4gcG9pbnRlcnMgdG8KLW9iamVj
dHMuIEZvciBpbnN0YW5jZSwKLQotYGBgCi1GaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKQotYGBg
Ci0KLW1hdGNoZXMgYSBwbGFpbiBwb2ludGVyIGBwYCB3aGVyZSBgcC0+bnVtYmVyID49IDNgLiBJ
ZiBgcGAgaXMgYE5VTExgLAotdGhlIG1hdGNoIHdpbGwgYWx3YXlzIGZhaWwgcmVnYXJkbGVzcyBv
ZiB0aGUgaW5uZXIgbWF0Y2hlci4KLQotV2hhdCBpZiB5b3Ugd2FudCB0byB2YWxpZGF0ZSBtb3Jl
IHRoYW4gb25lIG1lbWJlcnMgYXQgdGhlIHNhbWUgdGltZT8KLVJlbWVtYmVyIHRoYXQgdGhlcmUg
aXMgYEFsbE9mKClgLgotCi0jIyBWYWxpZGF0aW5nIHRoZSBWYWx1ZSBQb2ludGVkIHRvIGJ5IGEg
UG9pbnRlciBBcmd1bWVudCAjIwotCi1DKysgZnVuY3Rpb25zIG9mdGVuIHRha2UgcG9pbnRlcnMg
YXMgYXJndW1lbnRzLiBZb3UgY2FuIHVzZSBtYXRjaGVycwotbGlrZSBgSXNOdWxsKClgLCBgTm90
TnVsbCgpYCwgYW5kIG90aGVyIGNvbXBhcmlzb24gbWF0Y2hlcnMgdG8gbWF0Y2ggYQotcG9pbnRl
ciwgYnV0IHdoYXQgaWYgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBfcG9pbnRlZCB0
b18gYnkKLXRoZSBwb2ludGVyLCBpbnN0ZWFkIG9mIHRoZSBwb2ludGVyIGl0c2VsZiwgaGFzIGEg
Y2VydGFpbiBwcm9wZXJ0eT8KLVdlbGwsIHlvdSBjYW4gdXNlIHRoZSBgUG9pbnRlZShtKWAgbWF0
Y2hlci4KLQotYFBvaW50ZWUobSlgIG1hdGNoZXMgYSBwb2ludGVyIGlmZiBgbWAgbWF0Y2hlcyB0
aGUgdmFsdWUgdGhlIHBvaW50ZXIKLXBvaW50cyB0by4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKLS4uLgotICBFWFBF
Q1RfQ0FMTChmb28sIEJhcihQb2ludGVlKEdlKDMpKSkpOwotYGBgCi0KLWV4cGVjdHMgYGZvby5C
YXIoKWAgdG8gYmUgY2FsbGVkIHdpdGggYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgdmFsdWUK
LWdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAzLgotCi1PbmUgbmljZSB0aGluZyBhYm91dCBgUG9p
bnRlZSgpYCBpcyB0aGF0IGl0IHRyZWF0cyBhIGBOVUxMYCBwb2ludGVyIGFzCi1hIG1hdGNoIGZh
aWx1cmUsIHNvIHlvdSBjYW4gd3JpdGUgYFBvaW50ZWUobSlgIGluc3RlYWQgb2YKLQotYGBgCi0g
IEFsbE9mKE5vdE51bGwoKSwgUG9pbnRlZShtKSkKLWBgYAotCi13aXRob3V0IHdvcnJ5aW5nIHRo
YXQgYSBgTlVMTGAgcG9pbnRlciB3aWxsIGNyYXNoIHlvdXIgdGVzdC4KLQotQWxzbywgZGlkIHdl
IHRlbGwgeW91IHRoYXQgYFBvaW50ZWUoKWAgd29ya3Mgd2l0aCBib3RoIHJhdyBwb2ludGVycwot
KiphbmQqKiBzbWFydCBwb2ludGVycyAoYGxpbmtlZF9wdHJgLCBgc2hhcmVkX3B0cmAsIGBzY29w
ZWRfcHRyYCwgYW5kCi1ldGMpPwotCi1XaGF0IGlmIHlvdSBoYXZlIGEgcG9pbnRlciB0byBwb2lu
dGVyPyBZb3UgZ3Vlc3NlZCBpdCAtIHlvdSBjYW4gdXNlCi1uZXN0ZWQgYFBvaW50ZWUoKWAgdG8g
cHJvYmUgZGVlcGVyIGluc2lkZSB0aGUgdmFsdWUuIEZvciBleGFtcGxlLAotYFBvaW50ZWUoUG9p
bnRlZShMdCgzKSkpYCBtYXRjaGVzIGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHBvaW50ZXIK
LXRoYXQgcG9pbnRzIHRvIGEgbnVtYmVyIGxlc3MgdGhhbiAzICh3aGF0IGEgbW91dGhmdWwuLi4p
LgotCi0jIyBUZXN0aW5nIGEgQ2VydGFpbiBQcm9wZXJ0eSBvZiBhbiBPYmplY3QgIyMKLQotU29t
ZXRpbWVzIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbiBvYmplY3QgYXJndW1lbnQgaGFzIGEg
Y2VydGFpbgotcHJvcGVydHksIGJ1dCB0aGVyZSBpcyBubyBleGlzdGluZyBtYXRjaGVyIHRoYXQg
ZG9lcyB0aGlzLiBJZiB5b3Ugd2FudAotZ29vZCBlcnJvciBtZXNzYWdlcywgeW91IHNob3VsZCBk
ZWZpbmUgYSBtYXRjaGVyLiBJZiB5b3Ugd2FudCB0byBkbyBpdAotcXVpY2sgYW5kIGRpcnR5LCB5
b3UgY291bGQgZ2V0IGF3YXkgd2l0aCB3cml0aW5nIGFuIG9yZGluYXJ5IGZ1bmN0aW9uLgotCi1M
ZXQncyBzYXkgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4gb2JqZWN0IG9m
IHR5cGUgYEZvb2AsCi13aGljaCBoYXMgYW4gYGludCBiYXIoKWAgbWV0aG9kIGFuZCBhbiBgaW50
IGJheigpYCBtZXRob2QsIGFuZCB5b3UKLXdhbnQgdG8gY29uc3RyYWluIHRoYXQgdGhlIGFyZ3Vt
ZW50J3MgYGJhcigpYCB2YWx1ZSBwbHVzIGl0cyBgYmF6KClgCi12YWx1ZSBpcyBhIGdpdmVuIG51
bWJlci4gSGVyZSdzIGhvdyB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8gaXQ6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpN
YXRjaFJlc3VsdExpc3RlbmVyOwotCi1jbGFzcyBCYXJQbHVzQmF6RXFNYXRjaGVyIDogcHVibGlj
IE1hdGNoZXJJbnRlcmZhY2U8Y29uc3QgRm9vJj4gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQmFy
UGx1c0JhekVxTWF0Y2hlcihpbnQgZXhwZWN0ZWRfc3VtKQotICAgICAgOiBleHBlY3RlZF9zdW1f
KGV4cGVjdGVkX3N1bSkge30KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0
IEZvbyYgZm9vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIChmb28uYmFyKCkgKyBmb28uYmF6
KCkpID09IGV4cGVjdGVkX3N1bV87Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImJhcigpICsgYmF6KCkgZXF1
YWxzICIgPDwgZXhwZWN0ZWRfc3VtXzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5l
Z2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJiYXIoKSAr
IGJheigpIGRvZXMgbm90IGVxdWFsICIgPDwgZXhwZWN0ZWRfc3VtXzsKLSAgfQotIHByaXZhdGU6
Ci0gIGNvbnN0IGludCBleHBlY3RlZF9zdW1fOwotfTsKLQotaW5saW5lIE1hdGNoZXI8Y29uc3Qg
Rm9vJj4gQmFyUGx1c0JhekVxKGludCBleHBlY3RlZF9zdW0pIHsKLSAgcmV0dXJuIE1ha2VNYXRj
aGVyKG5ldyBCYXJQbHVzQmF6RXFNYXRjaGVyKGV4cGVjdGVkX3N1bSkpOwotfQotCi0uLi4KLQot
ICBFWFBFQ1RfQ0FMTCguLi4sIERvVGhpcyhCYXJQbHVzQmF6RXEoNSkpKS4uLjsKLWBgYAotCi0j
IyBNYXRjaGluZyBDb250YWluZXJzICMjCi0KLVNvbWV0aW1lcyBhbiBTVEwgY29udGFpbmVyIChl
LmcuIGxpc3QsIHZlY3RvciwgbWFwLCAuLi4pIGlzIHBhc3NlZCB0bwotYSBtb2NrIGZ1bmN0aW9u
IGFuZCB5b3UgbWF5IHdhbnQgdG8gdmFsaWRhdGUgaXQuIFNpbmNlIG1vc3QgU1RMCi1jb250YWlu
ZXJzIHN1cHBvcnQgdGhlIGA9PWAgb3BlcmF0b3IsIHlvdSBjYW4gd3JpdGUKLWBFcShleHBlY3Rl
ZF9jb250YWluZXIpYCBvciBzaW1wbHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAgdG8gbWF0Y2ggYQot
Y29udGFpbmVyIGV4YWN0bHkuCi0KLVNvbWV0aW1lcywgdGhvdWdoLCB5b3UgbWF5IHdhbnQgdG8g
YmUgbW9yZSBmbGV4aWJsZSAoZm9yIGV4YW1wbGUsIHRoZQotZmlyc3QgZWxlbWVudCBtdXN0IGJl
IGFuIGV4YWN0IG1hdGNoLCBidXQgdGhlIHNlY29uZCBlbGVtZW50IGNhbiBiZQotYW55IHBvc2l0
aXZlIG51bWJlciwgYW5kIHNvIG9uKS4gQWxzbywgY29udGFpbmVycyB1c2VkIGluIHRlc3RzIG9m
dGVuCi1oYXZlIGEgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzLCBhbmQgaGF2aW5nIHRvIGRlZmlu
ZSB0aGUgZXhwZWN0ZWQKLWNvbnRhaW5lciBvdXQtb2YtbGluZSBpcyBhIGJpdCBvZiBhIGhhc3Ns
ZS4KLQotWW91IGNhbiB1c2UgdGhlIGBFbGVtZW50c0FyZSgpYCBvciBgVW5vcmRlcmVkRWxlbWVu
dHNBcmUoKWAgbWF0Y2hlciBpbgotc3VjaCBjYXNlczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlOwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsK
LS4uLgotCi0gIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29uc3QgdmVjdG9yPGludD4mIG51bWJl
cnMpKTsKLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZSgxLCBHdCgw
KSwgXywgNSkpKTsKLWBgYAotCi1UaGUgYWJvdmUgbWF0Y2hlciBzYXlzIHRoYXQgdGhlIGNvbnRh
aW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywgd2hpY2gKLW11c3QgYmUgMSwgZ3JlYXRlciB0aGFu
IDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZlbHkuCi0KLUlmIHlvdSBpbnN0ZWFkIHdyaXRl
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci11c2lu
ZyA6OnRlc3Rpbmc6OlVub3JkZXJlZEVsZW1lbnRzQXJlOwotLi4uCi0KLSAgTU9DS19NRVRIT0Qx
KEZvbywgdm9pZChjb25zdCB2ZWN0b3I8aW50PiYgbnVtYmVycykpOwotLi4uCi0KLSAgRVhQRUNU
X0NBTEwobW9jaywgRm9vKFVub3JkZXJlZEVsZW1lbnRzQXJlKDEsIEd0KDApLCBfLCA1KSkpOwot
YGBgCi0KLUl0IG1lYW5zIHRoYXQgdGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywg
d2hpY2ggdW5kZXIgc29tZQotcGVybXV0YXRpb24gbXVzdCBiZSAxLCBncmVhdGVyIHRoYW4gMCwg
YW55dGhpbmcsIGFuZCA1IHJlc3BlY3RpdmVseS4KLQotYEVsZW1lbnRzQXJlKClgIGFuZCBgVW5v
cmRlcmVkRWxlbWVudHNBcmUoKWAgYXJlIG92ZXJsb2FkZWQgdG8gdGFrZSAwCi10byAxMCBhcmd1
bWVudHMuIElmIG1vcmUgYXJlIG5lZWRlZCwgeW91IGNhbiBwbGFjZSB0aGVtIGluIGEgQy1zdHls
ZQotYXJyYXkgYW5kIHVzZSBgRWxlbWVudHNBcmVBcnJheSgpYCBvciBgVW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheSgpYAotaW5zdGVhZDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRz
QXJlQXJyYXk7Ci0uLi4KLQotICAvLyBFbGVtZW50c0FyZUFycmF5IGFjY2VwdHMgYW4gYXJyYXkg
b2YgZWxlbWVudCB2YWx1ZXMuCi0gIGNvbnN0IGludCBleHBlY3RlZF92ZWN0b3IxW10gPSB7IDEs
IDUsIDIsIDQsIC4uLiB9OwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJh
eShleHBlY3RlZF92ZWN0b3IxKSkpOwotCi0gIC8vIE9yLCBhbiBhcnJheSBvZiBlbGVtZW50IG1h
dGNoZXJzLgotICBNYXRjaGVyPGludD4gZXhwZWN0ZWRfdmVjdG9yMiA9IHsgMSwgR3QoMiksIF8s
IDMsIC4uLiB9OwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBl
Y3RlZF92ZWN0b3IyKSkpOwotYGBgCi0KLUluIGNhc2UgdGhlIGFycmF5IG5lZWRzIHRvIGJlIGR5
bmFtaWNhbGx5IGNyZWF0ZWQgKGFuZCB0aGVyZWZvcmUgdGhlCi1hcnJheSBzaXplIGNhbm5vdCBi
ZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIpLCB5b3UgY2FuIGdpdmUKLWBFbGVtZW50c0FyZUFy
cmF5KClgIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gc3BlY2lmeSB0aGUgYXJyYXkgc2l6ZToK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7Ci0uLi4KLSAgaW50KiBj
b25zdCBleHBlY3RlZF92ZWN0b3IzID0gbmV3IGludFtjb3VudF07Ci0gIC4uLiBmaWxsIGV4cGVj
dGVkX3ZlY3RvcjMgd2l0aCB2YWx1ZXMgLi4uCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVt
ZW50c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjMsIGNvdW50KSkpOwotYGBgCi0KLSoqVGlwczoq
KgotCi0gICogYEVsZW1lbnRzQXJlKigpYCBjYW4gYmUgdXNlZCB0byBtYXRjaCBfYW55XyBjb250
YWluZXIgdGhhdCBpbXBsZW1lbnRzIHRoZSBTVEwgaXRlcmF0b3IgcGF0dGVybiAoaS5lLiBpdCBo
YXMgYSBgY29uc3RfaXRlcmF0b3JgIHR5cGUgYW5kIHN1cHBvcnRzIGBiZWdpbigpL2VuZCgpYCks
IG5vdCBqdXN0IHRoZSBvbmVzIGRlZmluZWQgaW4gU1RMLiBJdCB3aWxsIGV2ZW4gd29yayB3aXRo
IGNvbnRhaW5lciB0eXBlcyB5ZXQgdG8gYmUgd3JpdHRlbiAtIGFzIGxvbmcgYXMgdGhleSBmb2xs
b3dzIHRoZSBhYm92ZSBwYXR0ZXJuLgotICAqIFlvdSBjYW4gdXNlIG5lc3RlZCBgRWxlbWVudHNB
cmUqKClgIHRvIG1hdGNoIG5lc3RlZCAobXVsdGktZGltZW5zaW9uYWwpIGNvbnRhaW5lcnMuCi0g
ICogSWYgdGhlIGNvbnRhaW5lciBpcyBwYXNzZWQgYnkgcG9pbnRlciBpbnN0ZWFkIG9mIGJ5IHJl
ZmVyZW5jZSwganVzdCB3cml0ZSBgUG9pbnRlZShFbGVtZW50c0FyZSooLi4uKSlgLgotICAqIFRo
ZSBvcmRlciBvZiBlbGVtZW50cyBfbWF0dGVyc18gZm9yIGBFbGVtZW50c0FyZSooKWAuIFRoZXJl
Zm9yZSBkb24ndCB1c2UgaXQgd2l0aCBjb250YWluZXJzIHdob3NlIGVsZW1lbnQgb3JkZXIgaXMg
dW5kZWZpbmVkIChlLmcuIGBoYXNoX21hcGApLgotCi0jIyBTaGFyaW5nIE1hdGNoZXJzICMjCi0K
LVVuZGVyIHRoZSBob29kLCBhIEdvb2dsZSBNb2NrIG1hdGNoZXIgb2JqZWN0IGNvbnNpc3RzIG9m
IGEgcG9pbnRlciB0bwotYSByZWYtY291bnRlZCBpbXBsZW1lbnRhdGlvbiBvYmplY3QuIENvcHlp
bmcgbWF0Y2hlcnMgaXMgYWxsb3dlZCBhbmQKLXZlcnkgZWZmaWNpZW50LCBhcyBvbmx5IHRoZSBw
b2ludGVyIGlzIGNvcGllZC4gV2hlbiB0aGUgbGFzdCBtYXRjaGVyCi10aGF0IHJlZmVyZW5jZXMg
dGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1wbGVtZW50YXRpb24KLW9iamVj
dCB3aWxsIGJlIGRlbGV0ZWQuCi0KLVRoZXJlZm9yZSwgaWYgeW91IGhhdmUgc29tZSBjb21wbGV4
IG1hdGNoZXIgdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4KLWFuZCBhZ2FpbiwgdGhlcmUgaXMg
bm8gbmVlZCB0byBidWlsZCBpdCBldmVyeXRpbWUuIEp1c3QgYXNzaWduIGl0IHRvIGEKLW1hdGNo
ZXIgdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkhIEZvciBleGFtcGxl
LAotCi1gYGAKLSAgTWF0Y2hlcjxpbnQ+IGluX3JhbmdlID0gQWxsT2YoR3QoNSksIExlKDEwKSk7
Ci0gIC4uLiB1c2UgaW5fcmFuZ2UgYXMgYSBtYXRjaGVyIGluIG11bHRpcGxlIEVYUEVDVF9DQUxM
cyAuLi4KLWBgYAotCi0jIFNldHRpbmcgRXhwZWN0YXRpb25zICMKLQotIyMgS25vd2luZyBXaGVu
IHRvIEV4cGVjdCAjIwotCi1gT05fQ0FMTGAgaXMgbGlrZWx5IHRoZSBzaW5nbGUgbW9zdCB1bmRl
ci11dGlsaXplZCBjb25zdHJ1Y3QgaW4gR29vZ2xlIE1vY2suCi0KLVRoZXJlIGFyZSBiYXNpY2Fs
bHkgdHdvIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIHRoZSBiZWhhdmlvciBvZiBhIG1vY2sgb2Jq
ZWN0OiBgT05fQ0FMTGAgYW5kIGBFWFBFQ1RfQ0FMTGAuIFRoZSBkaWZmZXJlbmNlPyBgT05fQ0FM
TGAgZGVmaW5lcyB3aGF0IGhhcHBlbnMgd2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwgYnV0
IF9kb2Vzbid0IGltcGx5IGFueSBleHBlY3RhdGlvbiBvbiB0aGUgbWV0aG9kIGJlaW5nIGNhbGxl
ZC5fIGBFWFBFQ1RfQ0FMTGAgbm90IG9ubHkgZGVmaW5lcyB0aGUgYmVoYXZpb3IsIGJ1dCBhbHNv
IHNldHMgYW4gZXhwZWN0YXRpb24gdGhhdCBfdGhlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aXRo
IHRoZSBnaXZlbiBhcmd1bWVudHMsIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHRpbWVzXyAoYW5k
IF9pbiB0aGUgZ2l2ZW4gb3JkZXJfIHdoZW4geW91IHNwZWNpZnkgdGhlIG9yZGVyIHRvbykuCi0K
LVNpbmNlIGBFWFBFQ1RfQ0FMTGAgZG9lcyBtb3JlLCBpc24ndCBpdCBiZXR0ZXIgdGhhbiBgT05f
Q0FMTGA/IE5vdCByZWFsbHkuIEV2ZXJ5IGBFWFBFQ1RfQ0FMTGAgYWRkcyBhIGNvbnN0cmFpbnQg
b24gdGhlIGJlaGF2aW9yIG9mIHRoZSBjb2RlIHVuZGVyIHRlc3QuIEhhdmluZyBtb3JlIGNvbnN0
cmFpbnRzIHRoYW4gbmVjZXNzYXJ5IGlzIF9iYWFhZF8gLSBldmVuIHdvcnNlIHRoYW4gbm90IGhh
dmluZyBlbm91Z2ggY29uc3RyYWludHMuCi0KLVRoaXMgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZl
LiBIb3cgY291bGQgdGVzdHMgdGhhdCB2ZXJpZnkgbW9yZSBiZSB3b3JzZSB0aGFuIHRlc3RzIHRo
YXQgdmVyaWZ5IGxlc3M/IElzbid0IHZlcmlmaWNhdGlvbiB0aGUgd2hvbGUgcG9pbnQgb2YgdGVz
dHM/Ci0KLVRoZSBhbnN3ZXIsIGxpZXMgaW4gX3doYXRfIGEgdGVzdCBzaG91bGQgdmVyaWZ5LiAq
KkEgZ29vZCB0ZXN0IHZlcmlmaWVzIHRoZSBjb250cmFjdCBvZiB0aGUgY29kZS4qKiBJZiBhIHRl
c3Qgb3Zlci1zcGVjaWZpZXMsIGl0IGRvZXNuJ3QgbGVhdmUgZW5vdWdoIGZyZWVkb20gdG8gdGhl
IGltcGxlbWVudGF0aW9uLiBBcyBhIHJlc3VsdCwgY2hhbmdpbmcgdGhlIGltcGxlbWVudGF0aW9u
IHdpdGhvdXQgYnJlYWtpbmcgdGhlIGNvbnRyYWN0IChlLmcuIHJlZmFjdG9yaW5nIGFuZCBvcHRp
bWl6YXRpb24pLCB3aGljaCBzaG91bGQgYmUgcGVyZmVjdGx5IGZpbmUgdG8gZG8sIGNhbiBicmVh
ayBzdWNoIHRlc3RzLiBUaGVuIHlvdSBoYXZlIHRvIHNwZW5kIHRpbWUgZml4aW5nIHRoZW0sIG9u
bHkgdG8gc2VlIHRoZW0gYnJva2VuIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhlIGltcGxlbWVudGF0
aW9uIGlzIGNoYW5nZWQuCi0KLUtlZXAgaW4gbWluZCB0aGF0IG9uZSBkb2Vzbid0IGhhdmUgdG8g
dmVyaWZ5IG1vcmUgdGhhbiBvbmUgcHJvcGVydHkgaW4gb25lIHRlc3QuIEluIGZhY3QsICoqaXQn
cyBhIGdvb2Qgc3R5bGUgdG8gdmVyaWZ5IG9ubHkgb25lIHRoaW5nIGluIG9uZSB0ZXN0LioqIElm
IHlvdSBkbyB0aGF0LCBhIGJ1ZyB3aWxsIGxpa2VseSBicmVhayBvbmx5IG9uZSBvciB0d28gdGVz
dHMgaW5zdGVhZCBvZiBkb3plbnMgKHdoaWNoIGNhc2Ugd291bGQgeW91IHJhdGhlciBkZWJ1Zz8p
LiBJZiB5b3UgYXJlIGFsc28gaW4gdGhlIGhhYml0IG9mIGdpdmluZyB0ZXN0cyBkZXNjcmlwdGl2
ZSBuYW1lcyB0aGF0IHRlbGwgd2hhdCB0aGV5IHZlcmlmeSwgeW91IGNhbiBvZnRlbiBlYXNpbHkg
Z3Vlc3Mgd2hhdCdzIHdyb25nIGp1c3QgZnJvbSB0aGUgdGVzdCBsb2cgaXRzZWxmLgotCi1TbyB1
c2UgYE9OX0NBTExgIGJ5IGRlZmF1bHQsIGFuZCBvbmx5IHVzZSBgRVhQRUNUX0NBTExgIHdoZW4g
eW91IGFjdHVhbGx5IGludGVuZCB0byB2ZXJpZnkgdGhhdCB0aGUgY2FsbCBpcyBtYWRlLiBGb3Ig
ZXhhbXBsZSwgeW91IG1heSBoYXZlIGEgYnVuY2ggb2YgYE9OX0NBTExgcyBpbiB5b3VyIHRlc3Qg
Zml4dHVyZSB0byBzZXQgdGhlIGNvbW1vbiBtb2NrIGJlaGF2aW9yIHNoYXJlZCBieSBhbGwgdGVz
dHMgaW4gdGhlIHNhbWUgZ3JvdXAsIGFuZCB3cml0ZSAoc2NhcmNlbHkpIGRpZmZlcmVudCBgRVhQ
RUNUX0NBTExgcyBpbiBkaWZmZXJlbnQgYFRFU1RfRmBzIHRvIHZlcmlmeSBkaWZmZXJlbnQgYXNw
ZWN0cyBvZiB0aGUgY29kZSdzIGJlaGF2aW9yLiBDb21wYXJlZCB3aXRoIHRoZSBzdHlsZSB3aGVy
ZSBlYWNoIGBURVNUYCBoYXMgbWFueSBgRVhQRUNUX0NBTExgcywgdGhpcyBsZWFkcyB0byB0ZXN0
cyB0aGF0IGFyZSBtb3JlIHJlc2lsaWVudCB0byBpbXBsZW1lbnRhdGlvbmFsIGNoYW5nZXMgKGFu
ZCB0aHVzIGxlc3MgbGlrZWx5IHRvIHJlcXVpcmUgbWFpbnRlbmFuY2UpIGFuZCBtYWtlcyB0aGUg
aW50ZW50IG9mIHRoZSB0ZXN0cyBtb3JlIG9idmlvdXMgKHNvIHRoZXkgYXJlIGVhc2llciB0byBt
YWludGFpbiB3aGVuIHlvdSBkbyBuZWVkIHRvIG1haW50YWluIHRoZW0pLgotCi1JZiB5b3UgYXJl
IGJvdGhlcmVkIGJ5IHRoZSAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiIG1lc3Nh
Z2UgcHJpbnRlZCB3aGVuIGEgbW9jayBtZXRob2Qgd2l0aG91dCBhbiBgRVhQRUNUX0NBTExgIGlz
IGNhbGxlZCwgeW91IG1heSB1c2UgYSBgTmljZU1vY2tgIGluc3RlYWQgdG8gc3VwcHJlc3MgYWxs
IHN1Y2ggbWVzc2FnZXMgZm9yIHRoZSBtb2NrIG9iamVjdCwgb3Igc3VwcHJlc3MgdGhlIG1lc3Nh
Z2UgZm9yIHNwZWNpZmljIG1ldGhvZHMgYnkgYWRkaW5nIGBFWFBFQ1RfQ0FMTCguLi4pLlRpbWVz
KEFueU51bWJlcigpKWAuIERPIE5PVCBzdXBwcmVzcyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBg
RVhQRUNUX0NBTEwoLi4uKWAsIG9yIHlvdSdsbCBoYXZlIGEgdGVzdCB0aGF0J3MgYSBwYWluIHRv
IG1haW50YWluLgotCi0jIyBJZ25vcmluZyBVbmludGVyZXN0aW5nIENhbGxzICMjCi0KLUlmIHlv
dSBhcmUgbm90IGludGVyZXN0ZWQgaW4gaG93IGEgbW9jayBtZXRob2QgaXMgY2FsbGVkLCBqdXN0
IGRvbid0Ci1zYXkgYW55dGhpbmcgYWJvdXQgaXQuIEluIHRoaXMgY2FzZSwgaWYgdGhlIG1ldGhv
ZCBpcyBldmVyIGNhbGxlZCwKLUdvb2dsZSBNb2NrIHdpbGwgcGVyZm9ybSBpdHMgZGVmYXVsdCBh
Y3Rpb24gdG8gYWxsb3cgdGhlIHRlc3QgcHJvZ3JhbQotdG8gY29udGludWUuIElmIHlvdSBhcmUg
bm90IGhhcHB5IHdpdGggdGhlIGRlZmF1bHQgYWN0aW9uIHRha2VuIGJ5Ci1Hb29nbGUgTW9jaywg
eW91IGNhbiBvdmVycmlkZSBpdCB1c2luZyBgRGVmYXVsdFZhbHVlPFQ+OjpTZXQoKWAKLShkZXNj
cmliZWQgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudCkgb3IgYE9OX0NBTEwoKWAuCi0KLVBsZWFzZSBu
b3RlIHRoYXQgb25jZSB5b3UgZXhwcmVzc2VkIGludGVyZXN0IGluIGEgcGFydGljdWxhciBtb2Nr
Ci1tZXRob2QgKHZpYSBgRVhQRUNUX0NBTEwoKWApLCBhbGwgaW52b2NhdGlvbnMgdG8gaXQgbXVz
dCBtYXRjaCBzb21lCi1leHBlY3RhdGlvbi4gSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnV0
IHRoZSBhcmd1bWVudHMgZG9uJ3QgbWF0Y2gKLWFueSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50
LCBpdCB3aWxsIGJlIGFuIGVycm9yLgotCi0jIyBEaXNhbGxvd2luZyBVbmV4cGVjdGVkIENhbGxz
ICMjCi0KLUlmIGEgbW9jayBtZXRob2Qgc2hvdWxkbid0IGJlIGNhbGxlZCBhdCBhbGwsIGV4cGxp
Y2l0bHkgc2F5IHNvOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgotICBFWFBFQ1Rf
Q0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5UaW1lcygwKTsKLWBgYAotCi1JZiBzb21lIGNhbGxz
IHRvIHRoZSBtZXRob2QgYXJlIGFsbG93ZWQsIGJ1dCB0aGUgcmVzdCBhcmUgbm90LCBqdXN0Ci1s
aXN0IGFsbCB0aGUgZXhwZWN0ZWQgY2FsbHM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpBbnlO
dW1iZXI7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFy
KDUpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoR3QoMTApKSkKLSAgICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci1gYGAKLQotQSBjYWxsIHRvIGBmb28uQmFyKClgIHRoYXQgZG9lc24ndCBtYXRj
aCBhbnkgb2YgdGhlIGBFWFBFQ1RfQ0FMTCgpYAotc3RhdGVtZW50cyB3aWxsIGJlIGFuIGVycm9y
LgotCi0jIyBVbmRlcnN0YW5kaW5nIFVuaW50ZXJlc3RpbmcgdnMgVW5leHBlY3RlZCBDYWxscyAj
IwotCi1fVW5pbnRlcmVzdGluZ18gY2FsbHMgYW5kIF91bmV4cGVjdGVkXyBjYWxscyBhcmUgZGlm
ZmVyZW50IGNvbmNlcHRzIGluIEdvb2dsZSBNb2NrLiBfVmVyeV8gZGlmZmVyZW50LgotCi1BIGNh
bGwgYHguWSguLi4pYCBpcyAqKnVuaW50ZXJlc3RpbmcqKiBpZiB0aGVyZSdzIF9ub3QgZXZlbiBh
IHNpbmdsZV8gYEVYUEVDVF9DQUxMKHgsIFkoLi4uKSlgIHNldC4gSW4gb3RoZXIgd29yZHMsIHRo
ZSB0ZXN0IGlzbid0IGludGVyZXN0ZWQgaW4gdGhlIGB4LlkoKWAgbWV0aG9kIGF0IGFsbCwgYXMg
ZXZpZGVudCBpbiB0aGF0IHRoZSB0ZXN0IGRvZXNuJ3QgY2FyZSB0byBzYXkgYW55dGhpbmcgYWJv
dXQgaXQuCi0KLUEgY2FsbCBgeC5ZKC4uLilgIGlzICoqdW5leHBlY3RlZCoqIGlmIHRoZXJlIGFy
ZSBzb21lIGBFWFBFQ1RfQ0FMTCh4LCBZKC4uLikpc2Agc2V0LCBidXQgbm9uZSBvZiB0aGVtIG1h
dGNoZXMgdGhlIGNhbGwuIFB1dCBhbm90aGVyIHdheSwgdGhlIHRlc3QgaXMgaW50ZXJlc3RlZCBp
biB0aGUgYHguWSgpYCBtZXRob2QgKHRoZXJlZm9yZSBpdCBfZXhwbGljaXRseV8gc2V0cyBzb21l
IGBFWFBFQ1RfQ0FMTGAgdG8gdmVyaWZ5IGhvdyBpdCdzIGNhbGxlZCk7IGhvd2V2ZXIsIHRoZSB2
ZXJpZmljYXRpb24gZmFpbHMgYXMgdGhlIHRlc3QgZG9lc24ndCBleHBlY3QgdGhpcyBwYXJ0aWN1
bGFyIGNhbGwgdG8gaGFwcGVuLgotCi0qKkFuIHVuZXhwZWN0ZWQgY2FsbCBpcyBhbHdheXMgYW4g
ZXJyb3IsKiogYXMgdGhlIGNvZGUgdW5kZXIgdGVzdCBkb2Vzbid0IGJlaGF2ZSB0aGUgd2F5IHRo
ZSB0ZXN0IGV4cGVjdHMgaXQgdG8gYmVoYXZlLgotCi0qKkJ5IGRlZmF1bHQsIGFuIHVuaW50ZXJl
c3RpbmcgY2FsbCBpcyBub3QgYW4gZXJyb3IsKiogYXMgaXQgdmlvbGF0ZXMgbm8gY29uc3RyYWlu
dCBzcGVjaWZpZWQgYnkgdGhlIHRlc3QuIChHb29nbGUgTW9jaydzIHBoaWxvc29waHkgaXMgdGhh
dCBzYXlpbmcgbm90aGluZyBtZWFucyB0aGVyZSBpcyBubyBjb25zdHJhaW50LikgSG93ZXZlciwg
aXQgbGVhZHMgdG8gYSB3YXJuaW5nLCBhcyBpdCBfbWlnaHRfIGluZGljYXRlIGEgcHJvYmxlbSAo
ZS5nLiB0aGUgdGVzdCBhdXRob3IgbWlnaHQgaGF2ZSBmb3Jnb3R0ZW4gdG8gc3BlY2lmeSBhIGNv
bnN0cmFpbnQpLgotCi1JbiBHb29nbGUgTW9jaywgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1vY2tg
IGNhbiBiZSB1c2VkIHRvIG1ha2UgYSBtb2NrIGNsYXNzICJuaWNlIiBvciAic3RyaWN0Ii4gSG93
IGRvZXMgdGhpcyBhZmZlY3QgdW5pbnRlcmVzdGluZyBjYWxscyBhbmQgdW5leHBlY3RlZCBjYWxs
cz8KLQotQSAqKm5pY2UgbW9jayoqIHN1cHByZXNzZXMgdW5pbnRlcmVzdGluZyBjYWxsIHdhcm5p
bmdzLiBJdCBpcyBsZXNzIGNoYXR0eSB0aGFuIHRoZSBkZWZhdWx0IG1vY2ssIGJ1dCBvdGhlcndp
c2UgaXMgdGhlIHNhbWUuIElmIGEgdGVzdCBmYWlscyB3aXRoIGEgZGVmYXVsdCBtb2NrLCBpdCB3
aWxsIGFsc28gZmFpbCB1c2luZyBhIG5pY2UgbW9jayBpbnN0ZWFkLiBBbmQgdmljZSB2ZXJzYS4g
RG9uJ3QgZXhwZWN0IG1ha2luZyBhIG1vY2sgbmljZSB0byBjaGFuZ2UgdGhlIHRlc3QncyByZXN1
bHQuCi0KLUEgKipzdHJpY3QgbW9jayoqIHR1cm5zIHVuaW50ZXJlc3RpbmcgY2FsbCB3YXJuaW5n
cyBpbnRvIGVycm9ycy4gU28gbWFraW5nIGEgbW9jayBzdHJpY3QgbWF5IGNoYW5nZSB0aGUgdGVz
dCdzIHJlc3VsdC4KLQotTGV0J3MgbG9vayBhdCBhbiBleGFtcGxlOgotCi1gYGAKLVRFU1QoLi4u
KSB7Ci0gIE5pY2VNb2NrPE1vY2tEb21haW5SZWdpc3RyeT4gbW9ja19yZWdpc3RyeTsKLSAgRVhQ
RUNUX0NBTEwobW9ja19yZWdpc3RyeSwgR2V0RG9tYWluT3duZXIoImdvb2dsZS5jb20iKSkKLSAg
ICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJMYXJyeSBQYWdlIikpOwotCi0gIC8vIFVz
ZSBtb2NrX3JlZ2lzdHJ5IGluIGNvZGUgdW5kZXIgdGVzdC4KLSAgLi4uICZtb2NrX3JlZ2lzdHJ5
IC4uLgotfQotYGBgCi0KLVRoZSBzb2xlIGBFWFBFQ1RfQ0FMTGAgaGVyZSBzYXlzIHRoYXQgYWxs
IGNhbGxzIHRvIGBHZXREb21haW5Pd25lcigpYCBtdXN0IGhhdmUgYCJnb29nbGUuY29tImAgYXMg
dGhlIGFyZ3VtZW50LiBJZiBgR2V0RG9tYWluT3duZXIoInlhaG9vLmNvbSIpYCBpcyBjYWxsZWQs
IGl0IHdpbGwgYmUgYW4gdW5leHBlY3RlZCBjYWxsLCBhbmQgdGh1cyBhbiBlcnJvci4gSGF2aW5n
IGEgbmljZSBtb2NrIGRvZXNuJ3QgY2hhbmdlIHRoZSBzZXZlcml0eSBvZiBhbiB1bmV4cGVjdGVk
IGNhbGwuCi0KLVNvIGhvdyBkbyB3ZSB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYEdldERvbWFpbk93
bmVyKClgIGNhbiBiZSBjYWxsZWQgd2l0aCBzb21lIG90aGVyIGFyZ3VtZW50cyBhcyB3ZWxsPyBU
aGUgc3RhbmRhcmQgdGVjaG5pcXVlIGlzIHRvIGFkZCBhICJjYXRjaCBhbGwiIGBFWFBFQ1RfQ0FM
TGA6Ci0KLWBgYAotICBFWFBFQ1RfQ0FMTChtb2NrX3JlZ2lzdHJ5LCBHZXREb21haW5Pd25lcihf
KSkKLSAgICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsgIC8vIGNhdGNoZXMgYWxsIG90aGVyIGNh
bGxzIHRvIHRoaXMgbWV0aG9kLgotICBFWFBFQ1RfQ0FMTChtb2NrX3JlZ2lzdHJ5LCBHZXREb21h
aW5Pd25lcigiZ29vZ2xlLmNvbSIpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJM
YXJyeSBQYWdlIikpOwotYGBgCi0KLVJlbWVtYmVyIHRoYXQgYF9gIGlzIHRoZSB3aWxkY2FyZCBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZy4gV2l0aCB0aGlzLCBpZiBgR2V0RG9tYWluT3du
ZXIoImdvb2dsZS5jb20iKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGRvIHdoYXQgdGhlIHNlY29uZCBg
RVhQRUNUX0NBTExgIHNheXM7IGlmIGl0IGlzIGNhbGxlZCB3aXRoIGEgZGlmZmVyZW50IGFyZ3Vt
ZW50LCBpdCB3aWxsIGRvIHdoYXQgdGhlIGZpcnN0IGBFWFBFQ1RfQ0FMTGAgc2F5cy4KLQotTm90
ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgdHdvIGBFWFBFQ1RfQ0FMTHNgIGlzIGltcG9ydGFudCwg
YXMgYSBuZXdlciBgRVhQRUNUX0NBTExgIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhbiBvbGRlciBv
bmUuCi0KLUZvciBtb3JlIG9uIHVuaW50ZXJlc3RpbmcgY2FsbHMsIG5pY2UgbW9ja3MsIGFuZCBz
dHJpY3QgbW9ja3MsIHJlYWQgWyJUaGUgTmljZSwgdGhlIFN0cmljdCwgYW5kIHRoZSBOYWdneSJd
KCN0aGUtbmljZS10aGUtc3RyaWN0LWFuZC10aGUtbmFnZ3kpLgotCi0jIyBFeHBlY3RpbmcgT3Jk
ZXJlZCBDYWxscyAjIwotCi1BbHRob3VnaCBhbiBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGRl
ZmluZWQgZWFybGllciB0YWtlcyBwcmVjZWRlbmNlCi13aGVuIEdvb2dsZSBNb2NrIHRyaWVzIHRv
IG1hdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGFuIGV4cGVjdGF0aW9uLAotYnkgZGVmYXVsdCBj
YWxscyBkb24ndCBoYXZlIHRvIGhhcHBlbiBpbiB0aGUgb3JkZXIgYEVYUEVDVF9DQUxMKClgCi1z
dGF0ZW1lbnRzIGFyZSB3cml0dGVuLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGFyZ3VtZW50cyBtYXRj
aCB0aGUKLW1hdGNoZXJzIGluIHRoZSB0aGlyZCBgRVhQRUNUX0NBTEwoKWAsIGJ1dCBub3QgdGhv
c2UgaW4gdGhlIGZpcnN0IHR3bywKLXRoZW4gdGhlIHRoaXJkIGV4cGVjdGF0aW9uIHdpbGwgYmUg
dXNlZC4KLQotSWYgeW91IHdvdWxkIHJhdGhlciBoYXZlIGFsbCBjYWxscyBvY2N1ciBpbiB0aGUg
b3JkZXIgb2YgdGhlCi1leHBlY3RhdGlvbnMsIHB1dCB0aGUgYEVYUEVDVF9DQUxMKClgIHN0YXRl
bWVudHMgaW4gYSBibG9jayB3aGVyZSB5b3UKLWRlZmluZSBhIHZhcmlhYmxlIG9mIHR5cGUgYElu
U2VxdWVuY2VgOgotCi1gYGAKLSAgdXNpbmcgOjp0ZXN0aW5nOjpfOwotICB1c2luZyA6OnRlc3Rp
bmc6OkluU2VxdWVuY2U7Ci0KLSAgewotICAgIEluU2VxdWVuY2UgczsKLQotICAgIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGlzKDUpKTsKLSAgICBFWFBFQ1RfQ0FMTChiYXIsIERvVGhhdChfKSkKLSAg
ICAgICAgLlRpbWVzKDIpOwotICAgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDYpKTsKLSAgfQot
YGBgCi0KLUluIHRoaXMgZXhhbXBsZSwgd2UgZXhwZWN0IGEgY2FsbCB0byBgZm9vLkRvVGhpcyg1
KWAsIGZvbGxvd2VkIGJ5IHR3bwotY2FsbHMgdG8gYGJhci5Eb1RoYXQoKWAgd2hlcmUgdGhlIGFy
Z3VtZW50IGNhbiBiZSBhbnl0aGluZywgd2hpY2ggYXJlCi1pbiB0dXJuIGZvbGxvd2VkIGJ5IGEg
Y2FsbCB0byBgZm9vLkRvVGhpcyg2KWAuIElmIGEgY2FsbCBvY2N1cnJlZAotb3V0LW9mLW9yZGVy
LCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJvci4KLQotIyMgRXhwZWN0aW5nIFBhcnRp
YWxseSBPcmRlcmVkIENhbGxzICMjCi0KLVNvbWV0aW1lcyByZXF1aXJpbmcgZXZlcnl0aGluZyB0
byBvY2N1ciBpbiBhIHByZWRldGVybWluZWQgb3JkZXIgY2FuCi1sZWFkIHRvIGJyaXR0bGUgdGVz
dHMuIEZvciBleGFtcGxlLCB3ZSBtYXkgY2FyZSBhYm91dCBgQWAgb2NjdXJyaW5nCi1iZWZvcmUg
Ym90aCBgQmAgYW5kIGBDYCwgYnV0IGFyZW4ndCBpbnRlcmVzdGVkIGluIHRoZSByZWxhdGl2ZSBv
cmRlcgotb2YgYEJgIGFuZCBgQ2AuIEluIHRoaXMgY2FzZSwgdGhlIHRlc3Qgc2hvdWxkIHJlZmxl
Y3Qgb3VyIHJlYWwgaW50ZW50LAotaW5zdGVhZCBvZiBiZWluZyBvdmVybHkgY29uc3RyYWluaW5n
LgotCi1Hb29nbGUgTW9jayBhbGxvd3MgeW91IHRvIGltcG9zZSBhbiBhcmJpdHJhcnkgREFHIChk
aXJlY3RlZCBhY3ljbGljCi1ncmFwaCkgb24gdGhlIGNhbGxzLiBPbmUgd2F5IHRvIGV4cHJlc3Mg
dGhlIERBRyBpcyB0byB1c2UgdGhlCi1bQWZ0ZXJdKENoZWF0U2hlZXQubWQjdGhlLWFmdGVyLWNs
YXVzZSkgY2xhdXNlIG9mIGBFWFBFQ1RfQ0FMTGAuCi0KLUFub3RoZXIgd2F5IGlzIHZpYSB0aGUg
YEluU2VxdWVuY2UoKWAgY2xhdXNlIChub3QgdGhlIHNhbWUgYXMgdGhlCi1gSW5TZXF1ZW5jZWAg
Y2xhc3MpLCB3aGljaCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVzcwotZmxleGli
bGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBsb25n
IGNoYWlucwotb2Ygc2VxdWVudGlhbCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1aXJlIHlvdSB0
byBjb21lIHVwIHdpdGgKLWRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0aW9ucyBpbiB0
aGUgY2hhaW5zLiAgSGVyZSdzIGhvdyBpdAotd29ya3M6Ci0KLUlmIHdlIHZpZXcgYEVYUEVDVF9D
QUxMKClgIHN0YXRlbWVudHMgYXMgbm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBhbgotZWRnZSBm
cm9tIG5vZGUgQSB0byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9yZSBCLCB3ZSBj
YW4gZ2V0Ci1hIERBRy4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVhbiBhIGRpcmVj
dGVkIHBhdGggaW4gdGhpcwotREFHLiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUgREFHIGludG8g
c2VxdWVuY2VzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdwotd2hpY2ggc2VxdWVuY2VzIGVhY2ggYEVY
UEVDVF9DQUxMKClgIGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bwotcmVjb25zdHJ1
Y3QgdGhlIG9yZ2luYWwgREFHLgotCi1TbywgdG8gc3BlY2lmeSB0aGUgcGFydGlhbCBvcmRlciBv
biB0aGUgZXhwZWN0YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdvCi10aGluZ3M6IGZpcnN0IHRvIGRl
ZmluZSBzb21lIGBTZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gKLWBFWFBFQ1Rf
Q0FMTCgpYCBzYXkgd2hpY2ggYFNlcXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQKLW9mLiBFeHBl
Y3RhdGlvbnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUgb3JkZXIgdGhl
eSBhcmUKLXdyaXR0ZW4uIEZvciBleGFtcGxlLAotCi1gYGAKLSAgdXNpbmcgOjp0ZXN0aW5nOjpT
ZXF1ZW5jZTsKLQotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBBKCkp
Ci0gICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChiYXIsIEIoKSkKLSAg
ICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCi0gICAgICAuSW5T
ZXF1ZW5jZShzMik7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRCgpKQotICAgICAgLkluU2VxdWVuY2Uo
czIpOwotYGBgCi0KLXNwZWNpZmllcyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUgYHMxYCBpcyBg
QSAtPiBCYCwgYW5kIGBzMmAgaXMgYEEgLT4KLUMgLT4gRGApOgotCi1gYGAKLSAgICAgICArLS0t
PiBCCi0gICAgICAgfAotICBBIC0tLXwKLSAgICAgICB8Ci0gICAgICAgKy0tLT4gQyAtLS0+IEQK
LWBgYAotCi1UaGlzIG1lYW5zIHRoYXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFuZCBDLCBhbmQg
QyBtdXN0IG9jY3VyIGJlZm9yZQotRC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBhYm91dCB0aGUg
b3JkZXIgb3RoZXIgdGhhbiB0aGVzZS4KLQotIyMgQ29udHJvbGxpbmcgV2hlbiBhbiBFeHBlY3Rh
dGlvbiBSZXRpcmVzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIEdvb2dsZSBN
b2NrIG9ubHkgY29uc2lkZXIgZXhwZWN0YXRpb25zCi10aGF0IGFyZSBzdGlsbCBhY3RpdmUuIEFu
IGV4cGVjdGF0aW9uIGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQsIGFuZAotYmVjb21lcyBpbmFjdGl2
ZSAoYWthIF9yZXRpcmVzXykgd2hlbiBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIgbGF0ZXIKLWhh
cyBvY2N1cnJlZC4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6Ol87
Ci0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEsIHMyOwotCi0g
IEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgICAg
IC8vICMxCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwg
czIpOwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBzZXQgaXMgZW1w
dHkuIikpICAvLyAjMgotICAgICAgLkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1RfQ0FMTChsb2cs
IExvZyhXQVJOSU5HLCBfLCAiVXNlciBub3QgZm91bmQuIikpICAgICAvLyAjMwotICAgICAgLklu
U2VxdWVuY2UoczIpOwotYGBgCi0KLWFzIHNvb24gYXMgZWl0aGVyICMyIG9yICMzIGlzIG1hdGNo
ZWQsICMxIHdpbGwgcmV0aXJlLiBJZiBhIHdhcm5pbmcKLWAiRmlsZSB0b28gbGFyZ2UuImAgaXMg
bG9nZ2VkIGFmdGVyIHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCi0KLU5vdGUgdGhhdCBhbiBl
eHBlY3RhdGlvbiBkb2Vzbid0IHJldGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQncwotc2F0dXJh
dGVkLiBGb3IgZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQ
RUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAgIC8vICMx
Ci0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSk7
ICAvLyAjMgotYGBgCi0KLXNheXMgdGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25lIHdhcm5p
bmcgd2l0aCB0aGUgbWVzc2FnZSBgIkZpbGUKLXRvbyBsYXJnZS4iYC4gSWYgdGhlIHNlY29uZCB3
YXJuaW5nIGNvbnRhaW5zIHRoaXMgbWVzc2FnZSB0b28sICMyIHdpbGwKLW1hdGNoIGFnYWluIGFu
ZCByZXN1bHQgaW4gYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZXJyb3IuCi0KLUlmIHRoaXMgaXMg
bm90IHdoYXQgeW91IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRvIHJldGlyZSBh
cwotc29vbiBhcyBpdCBiZWNvbWVzIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAg
ICAgICAgICAgLy8gIzEKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUg
dG9vIGxhcmdlLiIpKSAgLy8gIzIKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1gYGAK
LQotSGVyZSAjMiBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZlIHR3byB3YXJu
aW5ncyB3aXRoIHRoZQotbWVzc2FnZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUgZmlyc3Qgd2ls
bCBtYXRjaCAjMiBhbmQgdGhlIHNlY29uZAotd2lsbCBtYXRjaCAjMSAtIHRoZXJlIHdpbGwgYmUg
bm8gZXJyb3IuCi0KLSMgVXNpbmcgQWN0aW9ucyAjCi0KLSMjIFJldHVybmluZyBSZWZlcmVuY2Vz
IGZyb20gTW9jayBNZXRob2RzICMjCi0KLUlmIGEgbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBl
IGlzIGEgcmVmZXJlbmNlLCB5b3UgbmVlZCB0byB1c2UKLWBSZXR1cm5SZWYoKWAgaW5zdGVhZCBv
ZiBgUmV0dXJuKClgIHRvIHJldHVybiBhIHJlc3VsdDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAg
TU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsK
LSAgQmFyIGJhcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkKLSAgICAgIC5XaWxsT25j
ZShSZXR1cm5SZWYoYmFyKSk7Ci1gYGAKLQotIyMgUmV0dXJuaW5nIExpdmUgVmFsdWVzIGZyb20g
TW9jayBNZXRob2RzICMjCi0KLVRoZSBgUmV0dXJuKHgpYCBhY3Rpb24gc2F2ZXMgYSBjb3B5IG9m
IGB4YCB3aGVuIHRoZSBhY3Rpb24gaXMKLV9jcmVhdGVkXywgYW5kIGFsd2F5cyByZXR1cm5zIHRo
ZSBzYW1lIHZhbHVlIHdoZW5ldmVyIGl0J3MKLWV4ZWN1dGVkLiBTb21ldGltZXMgeW91IG1heSB3
YW50IHRvIGluc3RlYWQgcmV0dXJuIHRoZSBfbGl2ZV8gdmFsdWUgb2YKLWB4YCAoaS5lLiBpdHMg
dmFsdWUgYXQgdGhlIHRpbWUgd2hlbiB0aGUgYWN0aW9uIGlzIF9leGVjdXRlZF8uKS4KLQotSWYg
dGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IGNhbiBk
byBpdCB1c2luZwotYFJldHVyblJlZih4KWAsIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyByZWNp
cGUgKCJSZXR1cm5pbmcgUmVmZXJlbmNlcwotZnJvbSBNb2NrIE1ldGhvZHMiKS4gSG93ZXZlciwg
R29vZ2xlIE1vY2sgZG9lc24ndCBsZXQgeW91IHVzZQotYFJldHVyblJlZigpYCBpbiBhIG1vY2sg
ZnVuY3Rpb24gd2hvc2UgcmV0dXJuIHR5cGUgaXMgbm90IGEgcmVmZXJlbmNlLAotYXMgZG9pbmcg
dGhhdCB1c3VhbGx5IGluZGljYXRlcyBhIHVzZXIgZXJyb3IuIFNvLCB3aGF0IHNoYWxsIHlvdSBk
bz8KLQotWW91IG1heSBiZSB0ZW1wdGVkIHRvIHRyeSBgQnlSZWYoKWA6Ci0KLWBgYAotdXNpbmcg
dGVzdGluZzo6QnlSZWY7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci0KLWNsYXNzIE1vY2tGb28g
OiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChHZXRWYWx1ZSwgaW50KCkp
OwotfTsKLS4uLgotICBpbnQgeCA9IDA7Ci0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChm
b28sIEdldFZhbHVlKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5UmVmKHgpKSk7
Ci0gIHggPSA0MjsKLSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7Ci1gYGAKLQotVW5m
b3J0dW5hdGVseSwgaXQgZG9lc24ndCB3b3JrIGhlcmUuIFRoZSBhYm92ZSBjb2RlIHdpbGwgZmFp
bCB3aXRoIGVycm9yOgotCi1gYGAKLVZhbHVlIG9mOiBmb28uR2V0VmFsdWUoKQotICBBY3R1YWw6
IDAKLUV4cGVjdGVkOiA0MgotYGBgCi0KLVRoZSByZWFzb24gaXMgdGhhdCBgUmV0dXJuKHZhbHVl
KWAgY29udmVydHMgYHZhbHVlYCB0byB0aGUgYWN0dWFsCi1yZXR1cm4gdHlwZSBvZiB0aGUgbW9j
ayBmdW5jdGlvbiBhdCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMKLV9jcmVhdGVkXywgbm90
IHdoZW4gaXQgaXMgX2V4ZWN1dGVkXy4gKFRoaXMgYmVoYXZpb3Igd2FzIGNob3NlbiBmb3IKLXRo
ZSBhY3Rpb24gdG8gYmUgc2FmZSB3aGVuIGB2YWx1ZWAgaXMgYSBwcm94eSBvYmplY3QgdGhhdCBy
ZWZlcmVuY2VzCi1zb21lIHRlbXBvcmFyeSBvYmplY3RzLikgQXMgYSByZXN1bHQsIGBCeVJlZih4
KWAgaXMgY29udmVydGVkIHRvIGFuCi1gaW50YCB2YWx1ZSAoaW5zdGVhZCBvZiBhIGBjb25zdCBp
bnQmYCkgd2hlbiB0aGUgZXhwZWN0YXRpb24gaXMgc2V0LAotYW5kIGBSZXR1cm4oQnlSZWYoeCkp
YCB3aWxsIGFsd2F5cyByZXR1cm4gMC4KLQotYFJldHVyblBvaW50ZWUocG9pbnRlcilgIHdhcyBw
cm92aWRlZCB0byBzb2x2ZSB0aGlzIHByb2JsZW0KLXNwZWNpZmljYWxseS4gSXQgcmV0dXJucyB0
aGUgdmFsdWUgcG9pbnRlZCB0byBieSBgcG9pbnRlcmAgYXQgdGhlIHRpbWUKLXRoZSBhY3Rpb24g
aXMgX2V4ZWN1dGVkXzoKLQotYGBgCi11c2luZyB0ZXN0aW5nOjpSZXR1cm5Qb2ludGVlOwotLi4u
Ci0gIGludCB4ID0gMDsKLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0VmFs
dWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZ4KSk7ICAvLyBOb3Rl
IHRoZSAmIGhlcmUuCi0gIHggPSA0MjsKLSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7
ICAvLyBUaGlzIHdpbGwgc3VjY2VlZCBub3cuCi1gYGAKLQotIyMgQ29tYmluaW5nIEFjdGlvbnMg
IyMKLQotV2FudCB0byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5jdGlvbiBpcyBj
YWxsZWQ/IFRoYXQncwotZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBzZXF1ZW5jZSBv
ZiBhY3Rpb25zIGV2ZXJ5IHRpbWUuIE9ubHkKLXRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxhc3Qg
YWN0aW9uIGluIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpEb0FsbDsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAg
TU9DS19NRVRIT0QxKEJhciwgYm9vbChpbnQgbikpOwotfTsKLS4uLgotCi0gIEVYUEVDVF9DQUxM
KGZvbywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbl8yLAotICAgICAgICAgICAgICAgICAgICAgIC4uLgotICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbl9uKSk7Ci1gYGAKLQotIyMgTW9ja2luZyBTaWRlIEVmZmVj
dHMgIyMKLQotU29tZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qgbm90IHZpYSBy
ZXR1cm5pbmcgYSB2YWx1ZSBidXQKLXZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFtcGxlLCBpdCBt
YXkgY2hhbmdlIHNvbWUgZ2xvYmFsIHN0YXRlIG9yCi1tb2RpZnkgYW4gb3V0cHV0IGFyZ3VtZW50
LiBUbyBtb2NrIHNpZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCi1kZWZpbmUgeW91ciBv
d24gYWN0aW9uIGJ5IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2VgLgot
Ci1JZiBhbGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBhcmd1bWVudCwg
dGhlIGJ1aWx0LWluCi1gU2V0QXJnUG9pbnRlZSgpYCBhY3Rpb24gaXMgY29udmVuaWVudDoKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci0KLWNsYXNzIE1vY2tNdXRhdG9y
IDogcHVibGljIE11dGF0b3IgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9p
ZChib29sIG11dGF0ZSwgaW50KiB2YWx1ZSkpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2NrTXV0
YXRvciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUodHJ1ZSwgXykpCi0g
ICAgICAuV2lsbE9uY2UoU2V0QXJnUG9pbnRlZTwxPig1KSk7Ci1gYGAKLQotSW4gdGhpcyBleGFt
cGxlLCB3aGVuIGBtdXRhdG9yLk11dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwgYXNzaWduIDUK
LXRvIHRoZSBgaW50YCB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMxCi0oMC1iYXNl
ZCkuCi0KLWBTZXRBcmdQb2ludGVlKClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBpbnRlcm5hbCBj
b3B5IG9mIHRoZQotdmFsdWUgeW91IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBuZWVkIHRvIGtl
ZXAgdGhlIHZhbHVlIGluIHNjb3BlIGFuZAotYWxpdmUuIFRoZSBpbXBsaWNhdGlvbiBob3dldmVy
IGlzIHRoYXQgdGhlIHZhbHVlIG11c3QgaGF2ZSBhIGNvcHkKLWNvbnN0cnVjdG9yIGFuZCBhc3Np
Z25tZW50IG9wZXJhdG9yLgotCi1JZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVkcyB0byByZXR1
cm4gYSB2YWx1ZSBhcyB3ZWxsLCB5b3UgY2FuIGNoYWluCi1gU2V0QXJnUG9pbnRlZSgpYCB3aXRo
IGBSZXR1cm4oKWAgdXNpbmcgYERvQWxsKClgOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotdXNpbmcgOjp0ZXN0aW5nOjpTZXRBcmdQb2ludGVl
OwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIC4u
LgotICBNT0NLX01FVEhPRDEoTXV0YXRlSW50LCBib29sKGludCogdmFsdWUpKTsKLX07Ci0uLi4K
LQotICBNb2NrTXV0YXRvciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGVJ
bnQoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwKLSAgICAg
ICAgICAgICAgICAgICAgICBSZXR1cm4odHJ1ZSkpKTsKLWBgYAotCi1JZiB0aGUgb3V0cHV0IGFy
Z3VtZW50IGlzIGFuIGFycmF5LCB1c2UgdGhlCi1gU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwg
bGFzdClgIGFjdGlvbiBpbnN0ZWFkLiBJdCBjb3BpZXMgdGhlCi1lbGVtZW50cyBpbiBzb3VyY2Ug
cmFuZ2UgYFtmaXJzdCwgbGFzdClgIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5Ci10aGUgYE5g
LXRoICgwLWJhc2VkKSBhcmd1bWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7
Ci11c2luZyA6OnRlc3Rpbmc6OlNldEFycmF5QXJndW1lbnQ7Ci0KLWNsYXNzIE1vY2tBcnJheU11
dGF0b3IgOiBwdWJsaWMgQXJyYXlNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihN
dXRhdGUsIHZvaWQoaW50KiB2YWx1ZXMsIGludCBudW1fdmFsdWVzKSk7Ci0gIC4uLgotfTsKLS4u
LgotCi0gIE1vY2tBcnJheU11dGF0b3IgbXV0YXRvcjsKLSAgaW50IHZhbHVlc1s1XSA9IHsgMSwg
MiwgMywgNCwgNSB9OwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90TnVsbCgpLCA1
KSkKLSAgICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywgdmFsdWVzICsg
NSkpOwotYGBgCi0KLVRoaXMgYWxzbyB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBvdXRw
dXQgaXRlcmF0b3I6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5n
OjpTZUFycmF5QXJndW1lbnQ7Ci0KLWNsYXNzIE1vY2tSb2xvZGV4IDogcHVibGljIFJvbG9kZXgg
ewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6YmFja19pbnNl
cnRfaXRlcmF0b3I8dmVjdG9yPHN0cmluZz4gPikpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2Nr
Um9sb2RleCByb2xvZGV4OwotICB2ZWN0b3I8c3RyaW5nPiBuYW1lczsKLSAgbmFtZXMucHVzaF9i
YWNrKCJHZW9yZ2UiKTsKLSAgbmFtZXMucHVzaF9iYWNrKCJKb2huIik7Ci0gIG5hbWVzLnB1c2hf
YmFjaygiVGhvbWFzIik7Ci0gIEVYUEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVzKF8pKQotICAg
ICAgLldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwgbmFtZXMuZW5k
KCkpKTsKLWBgYAotCi0jIyBDaGFuZ2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZpb3IgQmFzZWQg
b24gdGhlIFN0YXRlICMjCi0KLUlmIHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5nZSB0aGUgYmVo
YXZpb3Igb2YgYSBtb2NrIG9iamVjdCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6SW5TZXF1ZW5j
ZWAgdG8gc3BlY2lmeSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNh
bGw6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Ci0KLS4uLgotICB7Ci0gICAgSW5TZXF1ZW5jZSBzZXE7Ci0gICAgRVhQRUNUX0NB
TEwobXlfbW9jaywgSXNEaXJ0eSgpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRy
dWUpKTsKLSAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBGbHVzaCgpKTsKLSAgICBFWFBFQ1RfQ0FM
TChteV9tb2NrLCBJc0RpcnR5KCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oZmFs
c2UpKTsKLSAgfQotICBteV9tb2NrLkZsdXNoSWZEaXJ0eSgpOwotYGBgCi0KLVRoaXMgbWFrZXMg
YG15X21vY2suSXNEaXJ0eSgpYCByZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9jay5GbHVzaCgp
YCBpcyBjYWxsZWQgYW5kIHJldHVybiBgZmFsc2VgIGFmdGVyd2FyZHMuCi0KLUlmIHRoZSBiZWhh
dmlvciBjaGFuZ2UgaXMgbW9yZSBjb21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBlZmZlY3RzIGlu
IGEgdmFyaWFibGUgYW5kIG1ha2UgYSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVybiB2YWx1ZSBm
cm9tIHRoYXQgdmFyaWFibGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpTYXZlQXJnOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0KLUFDVElPTl9QKFJl
dHVyblBvaW50ZWUsIHApIHsgcmV0dXJuICpwOyB9Ci0uLi4KLSAgaW50IHByZXZpb3VzX3ZhbHVl
ID0gMDsKLSAgRVhQRUNUX0NBTEwobXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCi0gICAgICAuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuUG9pbnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKLSAgRVhQRUNUX0NB
TEwobXlfbW9jaywgVXBkYXRlVmFsdWUoXykpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoU2F2ZUFy
ZzwwPigmcHJldmlvdXNfdmFsdWUpKTsKLSAgbXlfbW9jay5Eb1NvbWV0aGluZ1RvVXBkYXRlVmFs
dWUoKTsKLWBgYAotCi1IZXJlIGBteV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxsIGFsd2F5cyBy
ZXR1cm4gdGhlIGFyZ3VtZW50IG9mIHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBjYWxsLgotCi0j
IyBTZXR0aW5nIHRoZSBEZWZhdWx0IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMjCi0KLUlmIGEg
bW9jayBtZXRob2QncyByZXR1cm4gdHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBlIG9yIHBvaW50
ZXIsIGJ5Ci1kZWZhdWx0IGl0IHdpbGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBBbHNvLCBpbiBD
KysgMTEgYW5kIGFib3ZlLCBhIG1vY2sKLW1ldGhvZCB3aG9zZSByZXR1cm4gdHlwZSBoYXMgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yIHdpbGwgcmV0dXJuIGEgZGVmYXVsdC1jb25zdHJ1Y3RlZAotdmFs
dWUgYnkgZGVmYXVsdC4gIFlvdSBvbmx5IG5lZWQgdG8gc3BlY2lmeSBhbgotYWN0aW9uIGlmIHRo
aXMgZGVmYXVsdCB2YWx1ZSBkb2Vzbid0IHdvcmsgZm9yIHlvdS4KLQotU29tZXRpbWVzLCB5b3Ug
bWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgZGVmYXVsdCB2YWx1ZSwgb3IgeW91IG1heSB3YW50Ci10
byBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZXMgR29vZ2xlIE1vY2sgZG9lc24ndCBr
bm93Ci1hYm91dC4gWW91IGNhbiBkbyB0aGlzIHVzaW5nIHRoZSBgOjp0ZXN0aW5nOjpEZWZhdWx0
VmFsdWVgIGNsYXNzCi10ZW1wbGF0ZToKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZv
byB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAoQ2FsY3VsYXRlQmFyLCBCYXIoKSk7Ci19Owot
Li4uCi0KLSAgQmFyIGRlZmF1bHRfYmFyOwotICAvLyBTZXRzIHRoZSBkZWZhdWx0IHJldHVybiB2
YWx1ZSBmb3IgdHlwZSBCYXIuCi0gIERlZmF1bHRWYWx1ZTxCYXI+OjpTZXQoZGVmYXVsdF9iYXIp
OwotCi0gIE1vY2tGb28gZm9vOwotCi0gIC8vIFdlIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbiBh
Y3Rpb24gaGVyZSwgYXMgdGhlIGRlZmF1bHQKLSAgLy8gcmV0dXJuIHZhbHVlIHdvcmtzIGZvciB1
cy4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxjdWxhdGVCYXIoKSk7Ci0KLSAgZm9vLkNhbGN1bGF0
ZUJhcigpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIGRlZmF1bHRfYmFyLgotCi0gIC8vIFVuc2V0
cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUuCi0gIERlZmF1bHRWYWx1ZTxCYXI+OjpDbGVhcigp
OwotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgY2hhbmdpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9y
IGEgdHlwZSBjYW4gbWFrZSB5b3UKLXRlc3RzIGhhcmQgdG8gdW5kZXJzdGFuZC4gV2UgcmVjb21t
ZW5kIHlvdSB0byB1c2UgdGhpcyBmZWF0dXJlCi1qdWRpY2lvdXNseS4gRm9yIGV4YW1wbGUsIHlv
dSBtYXkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGBTZXQoKWAgYW5kCi1gQ2xlYXIoKWAgY2FsbHMg
YXJlIHJpZ2h0IG5leHQgdG8gdGhlIGNvZGUgdGhhdCB1c2VzIHlvdXIgbW9jay4KLQotIyMgU2V0
dGluZyB0aGUgRGVmYXVsdCBBY3Rpb25zIGZvciBhIE1vY2sgTWV0aG9kICMjCi0KLVlvdSd2ZSBs
ZWFybmVkIGhvdyB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBnaXZlbgotdHlwZS4g
SG93ZXZlciwgdGhpcyBtYXkgYmUgdG9vIGNvYXJzZSBmb3IgeW91ciBwdXJwb3NlOiBwZXJoYXBz
IHlvdQotaGF2ZSB0d28gbW9jayBtZXRob2RzIHdpdGggdGhlIHNhbWUgcmV0dXJuIHR5cGUgYW5k
IHlvdSB3YW50IHRoZW0gdG8KLWhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycy4gVGhlIGBPTl9DQUxM
KClgIG1hY3JvIGFsbG93cyB5b3UgdG8KLWN1c3RvbWl6ZSB5b3VyIG1vY2sncyBiZWhhdmlvciBh
dCB0aGUgbWV0aG9kIGxldmVsOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6
dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsKLXVzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOwotLi4uCi0gIE9OX0NBTEwoZm9vLCBTaWduKF8pKQotICAgICAgLldpbGxCeURl
ZmF1bHQoUmV0dXJuKC0xKSk7Ci0gIE9OX0NBTEwoZm9vLCBTaWduKDApKQotICAgICAgLldpbGxC
eURlZmF1bHQoUmV0dXJuKDApKTsKLSAgT05fQ0FMTChmb28sIFNpZ24oR3QoMCkpKQotICAgICAg
LldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIFNpZ24oXykp
Ci0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gIGZvby5TaWduKDUpOyAgIC8vIFRoaXMg
c2hvdWxkIHJldHVybiAxLgotICBmb28uU2lnbigtOSk7ICAvLyBUaGlzIHNob3VsZCByZXR1cm4g
LTEuCi0gIGZvby5TaWduKDApOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAwLgotYGBgCi0KLUFz
IHlvdSBtYXkgaGF2ZSBndWVzc2VkLCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBPTl9D
QUxMKClgCi1zdGF0ZW1lbnRzLCB0aGUgbmV3cyBvcmRlciB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0
aGUgb2xkZXIgb25lcy4gSW4KLW90aGVyIHdvcmRzLCB0aGUgKipsYXN0Kiogb25lIHRoYXQgbWF0
Y2hlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHdpbGwKLWJlIHVzZWQuIFRoaXMgbWF0Y2hpbmcg
b3JkZXIgYWxsb3dzIHlvdSB0byBzZXQgdXAgdGhlIGNvbW1vbiBiZWhhdmlvcgotaW4gYSBtb2Nr
IG9iamVjdCdzIGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2Ug
YW5kCi1zcGVjaWFsaXplIHRoZSBtb2NrJ3MgYmVoYXZpb3IgbGF0ZXIuCi0KLSMjIFVzaW5nIEZ1
bmN0aW9ucy9NZXRob2RzL0Z1bmN0b3JzIGFzIEFjdGlvbnMgIyMKLQotSWYgdGhlIGJ1aWx0LWlu
IGFjdGlvbnMgZG9uJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gZWFzaWx5IHVzZSBhbiBleGlzdGluZwot
ZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciBhcyBhbiBhY3Rpb246Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tGb28g
OiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihTdW0sIGludChpbnQgeCwg
aW50IHkpKTsKLSAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IHgpKTsKLX07Ci0K
LWludCBDYWxjdWxhdGVTdW0oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICsgeTsgfQotCi1jbGFz
cyBIZWxwZXIgewotIHB1YmxpYzoKLSAgYm9vbCBDb21wbGV4Sm9iKGludCB4KTsKLX07Ci0uLi4K
LQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBT
dW0oXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKENhbGN1bGF0ZVN1bSkpOwotICBFWFBF
Q1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKCZoZWxw
ZXIsICZIZWxwZXI6OkNvbXBsZXhKb2IpKTsKLQotICBmb28uU3VtKDUsIDYpOyAgICAgICAvLyBJ
bnZva2VzIENhbGN1bGF0ZVN1bSg1LCA2KS4KLSAgZm9vLkNvbXBsZXhKb2IoMTApOyAgLy8gSW52
b2tlcyBoZWxwZXIuQ29tcGxleEpvYigxMCk7Ci1gYGAKLQotVGhlIG9ubHkgcmVxdWlyZW1lbnQg
aXMgdGhhdCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGV0YyBtdXN0IGJlCi1fY29tcGF0aWJs
ZV8gd2l0aCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBtZWFuaW5nIHRoYXQg
dGhlCi1sYXR0ZXIncyBhcmd1bWVudHMgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRo
ZSBjb3JyZXNwb25kaW5nCi1hcmd1bWVudHMgb2YgdGhlIGZvcm1lciwgYW5kIHRoZSBmb3JtZXIn
cyByZXR1cm4gdHlwZSBjYW4gYmUKLWltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoYXQgb2YgdGhl
IGxhdHRlci4gU28sIHlvdSBjYW4gaW52b2tlCi1zb21ldGhpbmcgd2hvc2UgdHlwZSBpcyBfbm90
XyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBtb2NrIGZ1bmN0aW9uLAotYXMgbG9uZyBhcyBpdCdz
IHNhZmUgdG8gZG8gc28gLSBuaWNlLCBodWg/Ci0KLSMjIEludm9raW5nIGEgRnVuY3Rpb24vTWV0
aG9kL0Z1bmN0b3IgV2l0aG91dCBBcmd1bWVudHMgIyMKLQotYEludm9rZSgpYCBpcyB2ZXJ5IHVz
ZWZ1bCBmb3IgZG9pbmcgYWN0aW9ucyB0aGF0IGFyZSBtb3JlIGNvbXBsZXguIEl0Ci1wYXNzZXMg
dGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIG9yIGZ1bmN0b3Ig
YmVpbmcKLWludm9rZWQgc3VjaCB0aGF0IHRoZSBjYWxsZWUgaGFzIHRoZSBmdWxsIGNvbnRleHQg
b2YgdGhlIGNhbGwgdG8gd29yawotd2l0aC4gSWYgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgbm90
IGludGVyZXN0ZWQgaW4gc29tZSBvciBhbGwgb2YgdGhlCi1hcmd1bWVudHMsIGl0IGNhbiBzaW1w
bHkgaWdub3JlIHRoZW0uCi0KLVlldCwgYSBjb21tb24gcGF0dGVybiBpcyB0aGF0IGEgdGVzdCBh
dXRob3Igd2FudHMgdG8gaW52b2tlIGEgZnVuY3Rpb24KLXdpdGhvdXQgdGhlIGFyZ3VtZW50cyBv
ZiB0aGUgbW9jayBmdW5jdGlvbi4gYEludm9rZSgpYCBhbGxvd3MgaGVyIHRvCi1kbyB0aGF0IHVz
aW5nIGEgd3JhcHBlciBmdW5jdGlvbiB0aGF0IHRocm93cyBhd2F5IHRoZSBhcmd1bWVudHMgYmVm
b3JlCi1pbnZva2luZyBhbiB1bmRlcmxpbmluZyBudWxsYXJ5IGZ1bmN0aW9uLiBOZWVkbGVzcyB0
byBzYXksIHRoaXMgY2FuIGJlCi10ZWRpb3VzIGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9mIHRo
ZSB0ZXN0LgotCi1gSW52b2tlV2l0aG91dEFyZ3MoKWAgc29sdmVzIHRoaXMgcHJvYmxlbS4gSXQn
cyBsaWtlIGBJbnZva2UoKWAgZXhjZXB0Ci10aGF0IGl0IGRvZXNuJ3QgcGFzcyB0aGUgbW9jayBm
dW5jdGlvbidzIGFyZ3VtZW50cyB0byB0aGUKLWNhbGxlZS4gSGVyZSdzIGFuIGV4YW1wbGU6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VXaXRob3V0
QXJnczsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19N
RVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IG4pKTsKLX07Ci0KLWJvb2wgSm9iMSgpIHsgLi4u
IH0KLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2Io
XykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlV2l0aG91dEFyZ3MoSm9iMSkpOwotCi0gIGZvby5D
b21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgSm9iMSgpLgotYGBgCi0KLSMjIEludm9raW5nIGFu
IEFyZ3VtZW50IG9mIHRoZSBNb2NrIEZ1bmN0aW9uICMjCi0KLVNvbWV0aW1lcyBhIG1vY2sgZnVu
Y3Rpb24gd2lsbCByZWNlaXZlIGEgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IKLShpbiBv
dGhlciB3b3JkcywgYSAiY2FsbGFibGUiKSBhcyBhbiBhcmd1bWVudCwgZS5nLgotCi1gYGAKLWNs
YXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihEb1Ro
aXMsIGJvb2woaW50IG4sIGJvb2wgKCpmcCkoaW50KSkpOwotfTsKLWBgYAotCi1hbmQgeW91IG1h
eSB3YW50IHRvIGludm9rZSB0aGlzIGNhbGxhYmxlIGFyZ3VtZW50OgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6XzsKLS4uLgotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1Ro
aXMoXywgXykpCi0gICAgICAuV2lsbE9uY2UoLi4uKTsKLSAgLy8gV2lsbCBleGVjdXRlICgqZnAp
KDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2Vp
dmVzLgotYGBgCi0KLUFyZ2hoLCB5b3UgbmVlZCB0byByZWZlciB0byBhIG1vY2sgZnVuY3Rpb24g
YXJndW1lbnQgYnV0IEMrKyBoYXMgbm8KLWxhbWJkYSAoeWV0KSwgc28geW91IGhhdmUgdG8gZGVm
aW5lIHlvdXIgb3duIGFjdGlvbi4gOi0oIE9yIGRvIHlvdQotcmVhbGx5PwotCi1XZWxsLCBHb29n
bGUgTW9jayBoYXMgYW4gYWN0aW9uIHRvIHNvbHZlIF9leGFjdGx5XyB0aGlzIHByb2JsZW06Ci0K
LWBgYAotICBJbnZva2VBcmd1bWVudDxOPihhcmdfMSwgYXJnXzIsIC4uLiwgYXJnX20pCi1gYGAK
LQotd2lsbCBpbnZva2UgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgdGhlIG1vY2sgZnVu
Y3Rpb24gcmVjZWl2ZXMsCi13aXRoIGBhcmdfMWAsIGBhcmdfMmAsIC4uLiwgYW5kIGBhcmdfbWAu
IE5vIG1hdHRlciBpZiB0aGUgYXJndW1lbnQgaXMKLWEgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1
bmN0b3IsIEdvb2dsZSBNb2NrIGhhbmRsZXMgdGhlbSBib3RoLgotCi1XaXRoIHRoYXQsIHlvdSBj
b3VsZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6
Okludm9rZUFyZ3VtZW50OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQot
ICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDE+KDUpKTsKLSAgLy8gV2lsbCBleGVjdXRl
ICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygp
IHJlY2VpdmVzLgotYGBgCi0KLVdoYXQgaWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50
IGJ5IHJlZmVyZW5jZT8gTm8gcHJvYmxlbSAtIGp1c3QKLXdyYXAgaXQgaW5zaWRlIGBCeVJlZigp
YDoKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChib29sICgqZnApKGludCwg
Y29uc3QgSGVscGVyJikpKTsKLS4uLgotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0
aW5nOjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7Ci0uLi4KLQotICBN
b2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywg
QmFyKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUsIEJ5UmVmKGhlbHBl
cikpKTsKLSAgLy8gQnlSZWYoaGVscGVyKSBndWFyYW50ZWVzIHRoYXQgYSByZWZlcmVuY2UgdG8g
aGVscGVyLCBub3QgYSBjb3B5IG9mIGl0LAotICAvLyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2Fs
bGFibGUuCi1gYGAKLQotV2hhdCBpZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkg
cmVmZXJlbmNlIGFuZCB3ZSBkbyAqKm5vdCoqCi13cmFwIHRoZSBhcmd1bWVudCBpbiBgQnlSZWYo
KWA/IFRoZW4gYEludm9rZUFyZ3VtZW50KClgIHdpbGwgX21ha2UgYQotY29weV8gb2YgdGhlIGFy
Z3VtZW50LCBhbmQgcGFzcyBhIF9yZWZlcmVuY2UgdG8gdGhlIGNvcHlfLCBpbnN0ZWFkIG9mCi1h
IHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUsIHRvIHRoZSBjYWxsYWJsZS4gVGhpcyBp
cyBlc3BlY2lhbGx5Ci1oYW5keSB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHRlbXBvcmFyeSB2YWx1
ZToKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKERvVGhhdCwgYm9vbChib29sICgqZikoY29u
c3QgZG91YmxlJiB4LCBjb25zdCBzdHJpbmcmIHMpKSk7Ci0uLi4KLXVzaW5nIDo6dGVzdGluZzo6
XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7Ci0uLi4KLQotICBNb2NrRm9vIGZv
bzsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8pKQotICAgICAgLldpbGxPbmNl
KEludm9rZUFyZ3VtZW50PDA+KDUuMCwgc3RyaW5nKCJIaSIpKSk7Ci0gIC8vIFdpbGwgZXhlY3V0
ZSAoKmYpKDUuMCwgc3RyaW5nKCJIaSIpKSwgd2hlcmUgZiBpcyB0aGUgZnVuY3Rpb24gcG9pbnRl
cgotICAvLyBEb1RoYXQoKSByZWNlaXZlcy4gIE5vdGUgdGhhdCB0aGUgdmFsdWVzIDUuMCBhbmQg
c3RyaW5nKCJIaSIpIGFyZQotICAvLyB0ZW1wb3JhcnkgYW5kIGRlYWQgb25jZSB0aGUgRVhQRUNU
X0NBTEwoKSBzdGF0ZW1lbnQgZmluaXNoZXMuICBZZXQKLSAgLy8gaXQncyBmaW5lIHRvIHBlcmZv
cm0gdGhpcyBhY3Rpb24gbGF0ZXIsIHNpbmNlIGEgY29weSBvZiB0aGUgdmFsdWVzCi0gIC8vIGFy
ZSBrZXB0IGluc2lkZSB0aGUgSW52b2tlQXJndW1lbnQgYWN0aW9uLgotYGBgCi0KLSMjIElnbm9y
aW5nIGFuIEFjdGlvbidzIFJlc3VsdCAjIwotCi1Tb21ldGltZXMgeW91IGhhdmUgYW4gYWN0aW9u
IHRoYXQgcmV0dXJucyBfc29tZXRoaW5nXywgYnV0IHlvdSBuZWVkIGFuCi1hY3Rpb24gdGhhdCBy
ZXR1cm5zIGB2b2lkYCAocGVyaGFwcyB5b3Ugd2FudCB0byB1c2UgaXQgaW4gYSBtb2NrCi1mdW5j
dGlvbiB0aGF0IHJldHVybnMgYHZvaWRgLCBvciBwZXJoYXBzIGl0IG5lZWRzIHRvIGJlIHVzZWQg
aW4KLWBEb0FsbCgpYCBhbmQgaXQncyBub3QgdGhlIGxhc3QgaW4gdGhlIGxpc3QpLiBgSWdub3Jl
UmVzdWx0KClgIGxldHMKLXlvdSBkbyB0aGF0LiBGb3IgZXhhbXBsZToKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6dGVzdGluZzo6
UmV0dXJuOwotCi1pbnQgUHJvY2Vzcyhjb25zdCBNeURhdGEmIGRhdGEpOwotc3RyaW5nIERvU29t
ZXRoaW5nKCk7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1P
Q0tfTUVUSE9EMShBYmMsIHZvaWQoY29uc3QgTXlEYXRhJiBkYXRhKSk7Ci0gIE1PQ0tfTUVUSE9E
MChYeXosIGJvb2woKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxM
KGZvbywgQWJjKF8pKQotICAvLyAuV2lsbE9uY2UoSW52b2tlKFByb2Nlc3MpKTsKLSAgLy8gVGhl
IGFib3ZlIGxpbmUgd29uJ3QgY29tcGlsZSBhcyBQcm9jZXNzKCkgcmV0dXJucyBpbnQgYnV0IEFi
YygpIG5lZWRzCi0gIC8vIHRvIHJldHVybiB2b2lkLgotICAgICAgLldpbGxPbmNlKElnbm9yZVJl
c3VsdChJbnZva2UoUHJvY2VzcykpKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIFh5eigpKQotICAg
ICAgLldpbGxPbmNlKERvQWxsKElnbm9yZVJlc3VsdChJbnZva2UoRG9Tb21ldGhpbmcpKSwKLSAg
ICAgIC8vIElnbm9yZXMgdGhlIHN0cmluZyBEb1NvbWV0aGluZygpIHJldHVybnMuCi0gICAgICAg
ICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSAqKmNh
bm5vdCoqIHVzZSBgSWdub3JlUmVzdWx0KClgIG9uIGFuIGFjdGlvbiB0aGF0IGFscmVhZHkKLXJl
dHVybnMgYHZvaWRgLiBEb2luZyBzbyB3aWxsIGxlYWQgdG8gdWdseSBjb21waWxlciBlcnJvcnMu
Ci0KLSMjIFNlbGVjdGluZyBhbiBBY3Rpb24ncyBBcmd1bWVudHMgIyMKLQotU2F5IHlvdSBoYXZl
IGEgbW9jayBmdW5jdGlvbiBgRm9vKClgIHRoYXQgdGFrZXMgc2V2ZW4gYXJndW1lbnRzLCBhbmQK
LXlvdSBoYXZlIGEgY3VzdG9tIGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIGludm9rZSB3aGVuIGBG
b28oKWAgaXMKLWNhbGxlZC4gVHJvdWJsZSBpcywgdGhlIGN1c3RvbSBhY3Rpb24gb25seSB3YW50
cyB0aHJlZSBhcmd1bWVudHM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgTU9DS19NRVRIT0Q3KEZvbywgYm9vbChib29sIHZpc2li
bGUsIGNvbnN0IHN0cmluZyYgbmFtZSwgaW50IHgsIGludCB5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG1hcDxwYWlyPGludCwgaW50PiwgZG91YmxlPiYgd2VpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtaW5fd2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0KSk7
Ci0uLi4KLQotYm9vbCBJc1Zpc2libGVJblF1YWRyYW50MShib29sIHZpc2libGUsIGludCB4LCBp
bnQgeSkgewotICByZXR1cm4gdmlzaWJsZSAmJiB4ID49IDAgJiYgeSA+PSAwOwotfQotLi4uCi0K
LSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQotICAgICAgLldp
bGxPbmNlKEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpOyAgLy8gVWgsIHdvbid0IGNvbXBp
bGUuIDotKAotYGBgCi0KLVRvIHBsZWFzZSB0aGUgY29tcGlsZXIgR29kLCB5b3UgY2FuIHRvIGRl
ZmluZSBhbiAiYWRhcHRvciIgdGhhdCBoYXMKLXRoZSBzYW1lIHNpZ25hdHVyZSBhcyBgRm9vKClg
IGFuZCBjYWxscyB0aGUgY3VzdG9tIGFjdGlvbiB3aXRoIHRoZQotcmlnaHQgYXJndW1lbnRzOgot
Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1i
b29sIE15SXNWaXNpYmxlSW5RdWFkcmFudDEoYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5h
bWUsIGludCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8
cGFpcjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkgewotICByZXR1cm4gSXNW
aXNpYmxlSW5RdWFkcmFudDEodmlzaWJsZSwgeCwgeSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FM
TChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tl
KE15SXNWaXNpYmxlSW5RdWFkcmFudDEpKTsgIC8vIE5vdyBpdCB3b3Jrcy4KLWBgYAotCi1CdXQg
aXNuJ3QgdGhpcyBhd2t3YXJkPwotCi1Hb29nbGUgTW9jayBwcm92aWRlcyBhIGdlbmVyaWMgX2Fj
dGlvbiBhZGFwdG9yXywgc28geW91IGNhbiBzcGVuZCB5b3VyCi10aW1lIG1pbmRpbmcgbW9yZSBp
bXBvcnRhbnQgYnVzaW5lc3MgdGhhbiB3cml0aW5nIHlvdXIgb3duCi1hZGFwdG9ycy4gSGVyZSdz
IHRoZSBzeW50YXg6Ci0KLWBgYAotICBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFjdGlvbikK
LWBgYAotCi1jcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcyB0aGUgYXJndW1lbnRzIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uIGF0Ci10aGUgZ2l2ZW4gaW5kaWNlcyAoMC1iYXNlZCkgdG8gdGhlIGlu
bmVyIGBhY3Rpb25gIGFuZCBwZXJmb3JtcwotaXQuIFVzaW5nIGBXaXRoQXJnc2AsIG91ciBvcmln
aW5hbCBleGFtcGxlIGNhbiBiZSB3cml0dGVuIGFzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotdXNpbmcgOjp0ZXN0aW5nOjpXaXRoQXJnczsK
LS4uLgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0gICAg
ICAuV2lsbE9uY2UoV2l0aEFyZ3M8MCwgMiwgMz4oSW52b2tlKElzVmlzaWJsZUluUXVhZHJhbnQx
KSkpOwotICAgICAgLy8gTm8gbmVlZCB0byBkZWZpbmUgeW91ciBvd24gYWRhcHRvci4KLWBgYAot
Ci1Gb3IgYmV0dGVyIHJlYWRhYmlsaXR5LCBHb29nbGUgTW9jayBhbHNvIGdpdmVzIHlvdToKLQot
ICAqIGBXaXRob3V0QXJncyhhY3Rpb24pYCB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBf
bm9fIGFyZ3VtZW50LCBhbmQKLSAgKiBgV2l0aEFyZzxOPihhY3Rpb24pYCAobm8gYHNgIGFmdGVy
IGBBcmdgKSB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfb25lXyBhcmd1bWVudC4KLQot
QXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBgSW52b2tlV2l0aG91dEFyZ3MoLi4uKWAgaXMganVz
dCBzeW50YWN0aWMKLXN1Z2FyIGZvciBgV2l0aG91dEFyZ3MoSW52b2tlKC4uLikpYC4KLQotSGVy
ZSBhcmUgbW9yZSB0aXBzOgotCi0gICogVGhlIGlubmVyIGFjdGlvbiB1c2VkIGluIGBXaXRoQXJn
c2AgYW5kIGZyaWVuZHMgZG9lcyBub3QgaGF2ZSB0byBiZSBgSW52b2tlKClgIC0tIGl0IGNhbiBi
ZSBhbnl0aGluZy4KLSAgKiBZb3UgY2FuIHJlcGVhdCBhbiBhcmd1bWVudCBpbiB0aGUgYXJndW1l
bnQgbGlzdCBpZiBuZWNlc3NhcnksIGUuZy4gYFdpdGhBcmdzPDIsIDMsIDMsIDU+KC4uLilgLgot
ICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgYXJndW1lbnRzLCBlLmcuIGBXaXRo
QXJnczwzLCAyLCAxPiguLi4pYC4KLSAgKiBUaGUgdHlwZXMgb2YgdGhlIHNlbGVjdGVkIGFyZ3Vt
ZW50cyBkbyBfbm90XyBoYXZlIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIGlubmVyIGFj
dGlvbiBleGFjdGx5LiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZXkgY2FuIGJlIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50cyBvZiB0aGUgaW5uZXIgYWN0
aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIDQtdGggYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rp
b24gaXMgYW4gYGludGAgYW5kIGBteV9hY3Rpb25gIHRha2VzIGEgYGRvdWJsZWAsIGBXaXRoQXJn
PDQ+KG15X2FjdGlvbilgIHdpbGwgd29yay4KLQotIyMgSWdub3JpbmcgQXJndW1lbnRzIGluIEFj
dGlvbiBGdW5jdGlvbnMgIyMKLQotVGhlIHNlbGVjdGluZy1hbi1hY3Rpb24ncy1hcmd1bWVudHMg
cmVjaXBlIHNob3dlZCB1cyBvbmUgd2F5IHRvIG1ha2UgYQotbW9jayBmdW5jdGlvbiBhbmQgYW4g
YWN0aW9uIHdpdGggaW5jb21wYXRpYmxlIGFyZ3VtZW50IGxpc3RzIGZpdAotdG9nZXRoZXIuIFRo
ZSBkb3duc2lkZSBpcyB0aGF0IHdyYXBwaW5nIHRoZSBhY3Rpb24gaW4KLWBXaXRoQXJnczwuLi4+
KClgIGNhbiBnZXQgdGVkaW91cyBmb3IgcGVvcGxlIHdyaXRpbmcgdGhlIHRlc3RzLgotCi1JZiB5
b3UgYXJlIGRlZmluaW5nIGEgZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciB0byBiZSB1c2Vk
IHdpdGgKLWBJbnZva2UqKClgLCBhbmQgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBzb21lIG9m
IGl0cyBhcmd1bWVudHMsIGFuCi1hbHRlcm5hdGl2ZSB0byBgV2l0aEFyZ3NgIGlzIHRvIGRlY2xh
cmUgdGhlIHVuaW50ZXJlc3RpbmcgYXJndW1lbnRzIGFzCi1gVW51c2VkYC4gVGhpcyBtYWtlcyB0
aGUgZGVmaW5pdGlvbiBsZXNzIGNsdXR0ZXJlZCBhbmQgbGVzcyBmcmFnaWxlIGluCi1jYXNlIHRo
ZSB0eXBlcyBvZiB0aGUgdW5pbnRlcmVzdGluZyBhcmd1bWVudHMgY2hhbmdlLiBJdCBjb3VsZCBh
bHNvCi1pbmNyZWFzZSB0aGUgY2hhbmNlIHRoZSBhY3Rpb24gZnVuY3Rpb24gY2FuIGJlIHJldXNl
ZC4gRm9yIGV4YW1wbGUsCi1naXZlbgotCi1gYGAKLSAgTU9DS19NRVRIT0QzKEZvbywgZG91Ymxl
KGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkpOwotICBNT0NLX01FVEhP
RDMoQmFyLCBkb3VibGUoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpKTsKLWBgYAotCi1p
bnN0ZWFkIG9mCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJ
bnZva2U7Ci0KLWRvdWJsZSBEaXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYg
bGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwot
fQotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbldpdGhJbmRleChpbnQgaW5kZXgsIGRvdWJsZSB4
LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0KLSAgRVhF
UENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2Uo
RGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbCkpOwotICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwg
XywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgp
KTsKLWBgYAotCi15b3UgY291bGQgd3JpdGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11
c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6dGVzdGluZzo6VW51c2VkOwotCi1kb3Vi
bGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1
cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0KLSAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJh
YmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbikpOwot
ICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tl
KERpc3RhbmNlVG9PcmlnaW4pKTsKLWBgYAotCi0jIyBTaGFyaW5nIEFjdGlvbnMgIyMKLQotSnVz
dCBsaWtlIG1hdGNoZXJzLCBhIEdvb2dsZSBNb2NrIGFjdGlvbiBvYmplY3QgY29uc2lzdHMgb2Yg
YSBwb2ludGVyCi10byBhIHJlZi1jb3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4gVGhlcmVm
b3JlIGNvcHlpbmcgYWN0aW9ucyBpcwotYWxzbyBhbGxvd2VkIGFuZCB2ZXJ5IGVmZmljaWVudC4g
V2hlbiB0aGUgbGFzdCBhY3Rpb24gdGhhdCByZWZlcmVuY2VzCi10aGUgaW1wbGVtZW50YXRpb24g
b2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3Qgd2lsbCBiZQotZGVsZXRlZC4K
LQotSWYgeW91IGhhdmUgc29tZSBjb21wbGV4IGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHVzZSBh
Z2FpbiBhbmQgYWdhaW4sCi15b3UgbWF5IG5vdCBoYXZlIHRvIGJ1aWxkIGl0IGZyb20gc2NyYXRj
aCBldmVyeXRpbWUuIElmIHRoZSBhY3Rpb24KLWRvZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBzdGF0
ZSAoaS5lLiBpZiBpdCBhbHdheXMgZG9lcyB0aGUgc2FtZSB0aGluZwotbm8gbWF0dGVyIGhvdyBt
YW55IHRpbWVzIGl0IGhhcyBiZWVuIGNhbGxlZCksIHlvdSBjYW4gYXNzaWduIGl0IHRvIGFuCi1h
Y3Rpb24gdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkuIEZvciBleGFt
cGxlOgotCi1gYGAKLSAgQWN0aW9uPGJvb2woaW50Kik+IHNldF9mbGFnID0gRG9BbGwoU2V0QXJn
UG9pbnRlZTwwPig1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0
dXJuKHRydWUpKTsKLSAgLi4uIHVzZSBzZXRfZmxhZyBpbiAuV2lsbE9uY2UoKSBhbmQgLldpbGxS
ZXBlYXRlZGx5KCkgLi4uCi1gYGAKLQotSG93ZXZlciwgaWYgdGhlIGFjdGlvbiBoYXMgaXRzIG93
biBzdGF0ZSwgeW91IG1heSBiZSBzdXJwcmlzZWQgaWYgeW91Ci1zaGFyZSB0aGUgYWN0aW9uIG9i
amVjdC4gU3VwcG9zZSB5b3UgaGF2ZSBhbiBhY3Rpb24gZmFjdG9yeQotYEluY3JlbWVudENvdW50
ZXIoaW5pdClgIHdoaWNoIGNyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW5jcmVtZW50cyBhbmQKLXJl
dHVybnMgYSBjb3VudGVyIHdob3NlIGluaXRpYWwgdmFsdWUgaXMgYGluaXRgLCB1c2luZyB0d28g
YWN0aW9ucwotY3JlYXRlZCBmcm9tIHRoZSBzYW1lIGV4cHJlc3Npb24gYW5kIHVzaW5nIGEgc2hh
cmVkIGFjdGlvbiB3aWxsCi1leGloaWJpdCBkaWZmZXJlbnQgYmVoYXZpb3JzLiBFeGFtcGxlOgot
Ci1gYGAKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRs
eShJbmNyZW1lbnRDb3VudGVyKDApKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKLSAg
ICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1lbnRDb3VudGVyKDApKTsKLSAgZm9vLkRvVGhpcygp
OyAgLy8gUmV0dXJucyAxLgotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCi0gIGZvby5E
b1RoYXQoKTsgIC8vIFJldHVybnMgMSAtIEJsYWgoKSB1c2VzIGEgZGlmZmVyZW50Ci0gICAgICAg
ICAgICAgICAgIC8vIGNvdW50ZXIgdGhhbiBCYXIoKSdzLgotYGBgCi0KLXZlcnN1cwotCi1gYGAK
LSAgQWN0aW9uPGludCgpPiBpbmNyZW1lbnQgPSBJbmNyZW1lbnRDb3VudGVyKDApOwotCi0gIEVY
UEVDVF9DQUxMKGZvbywgRG9UaGlzKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50
KTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShp
bmNyZW1lbnQpOwotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDEuCi0gIGZvby5Eb1RoaXMo
KTsgIC8vIFJldHVybnMgMi4KLSAgZm9vLkRvVGhhdCgpOyAgLy8gUmV0dXJucyAzIC0gdGhlIGNv
dW50ZXIgaXMgc2hhcmVkLgotYGBgCi0KLSMgTWlzYyBSZWNpcGVzIG9uIFVzaW5nIEdvb2dsZSBN
b2NrICMKLQotIyMgTW9ja2luZyBNZXRob2RzIFRoYXQgVXNlIE1vdmUtT25seSBUeXBlcyAjIwot
Ci1DKysxMSBpbnRyb2R1Y2VkIDxlbT5tb3ZlLW9ubHkgdHlwZXM8L2VtPi4gIEEgbW92ZS1vbmx5
LXR5cGVkIHZhbHVlIGNhbiBiZSBtb3ZlZCBmcm9tIG9uZSBvYmplY3QgdG8gYW5vdGhlciwgYnV0
IGNhbm5vdCBiZSBjb3BpZWQuICBgc3RkOjp1bmlxdWVfcHRyPFQ+YCBpcyBwcm9iYWJseSB0aGUg
bW9zdCBjb21tb25seSB1c2VkIG1vdmUtb25seSB0eXBlLgotCi1Nb2NraW5nIGEgbWV0aG9kIHRo
YXQgdGFrZXMgYW5kL29yIHJldHVybnMgbW92ZS1vbmx5IHR5cGVzIHByZXNlbnRzIHNvbWUgY2hh
bGxlbmdlcywgYnV0IG5vdGhpbmcgaW5zdXJtb3VudGFibGUuICBUaGlzIHJlY2lwZSBzaG93cyB5
b3UgaG93IHlvdSBjYW4gZG8gaXQuCi0KLUxldOKAmXMgc2F5IHdlIGFyZSB3b3JraW5nIG9uIGEg
ZmljdGlvbmFsIHByb2plY3QgdGhhdCBsZXRzIG9uZSBwb3N0IGFuZCBzaGFyZSBzbmlwcGV0cyBj
YWxsZWQg4oCcYnV6emVz4oCdLiAgWW91ciBjb2RlIHVzZXMgdGhlc2UgdHlwZXM6Ci0KLWBgYAot
ZW51bSBjbGFzcyBBY2Nlc3NMZXZlbCB7IGtJbnRlcm5hbCwga1B1YmxpYyB9OwotCi1jbGFzcyBC
dXp6IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEJ1enooQWNjZXNzTGV2ZWwgYWNjZXNzKSB7IOKA
piB9Ci0gIC4uLgotfTsKLQotY2xhc3MgQnV6emVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkJ1
enplcigpIHt9Ci0gIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEJ1eno+IE1ha2VCdXp6KGNvbnN0
IHN0ZDo6c3RyaW5nJiB0ZXh0KSA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBTaGFyZUJ1enooc3RkOjp1
bmlxdWVfcHRyPEJ1eno+IGJ1enosIFRpbWUgdGltZXN0YW1wKSA9IDA7Ci0gIC4uLgotfTsKLWBg
YAotCi1BIGBCdXp6YCBvYmplY3QgcmVwcmVzZW50cyBhIHNuaXBwZXQgYmVpbmcgcG9zdGVkLiAg
QSBjbGFzcyB0aGF0IGltcGxlbWVudHMgdGhlIGBCdXp6ZXJgIGludGVyZmFjZSBpcyBjYXBhYmxl
IG9mIGNyZWF0aW5nIGFuZCBzaGFyaW5nIGBCdXp6YC4gIE1ldGhvZHMgaW4gYEJ1enplcmAgbWF5
IHJldHVybiBhIGB1bmlxdWVfcHRyPEJ1eno+YCBvciB0YWtlIGEgYHVuaXF1ZV9wdHI8QnV6ej5g
LiAgTm93IHdlIG5lZWQgdG8gbW9jayBgQnV6emVyYCBpbiBvdXIgdGVzdHMuCi0KLVRvIG1vY2sg
YSBtZXRob2QgdGhhdCByZXR1cm5zIGEgbW92ZS1vbmx5IHR5cGUsIHlvdSBqdXN0IHVzZSB0aGUg
ZmFtaWxpYXIgYE1PQ0tfTUVUSE9EYCBzeW50YXggYXMgdXN1YWw6Ci0KLWBgYAotY2xhc3MgTW9j
a0J1enplciA6IHB1YmxpYyBCdXp6ZXIgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKE1ha2VC
dXp6LCBzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4oY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQpKTsKLSAg
4oCmCi19OwotYGBgCi0KLUhvd2V2ZXIsIGlmIHlvdSBhdHRlbXB0IHRvIHVzZSB0aGUgc2FtZSBg
TU9DS19NRVRIT0RgIHBhdHRlcm4gdG8gbW9jayBhIG1ldGhvZCB0aGF0IHRha2VzIGEgbW92ZS1v
bmx5IHBhcmFtZXRlciwgeW914oCZbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgY3VycmVudGx5Ogot
Ci1gYGAKLSAgLy8gRG9lcyBOT1QgY29tcGlsZSEKLSAgTU9DS19NRVRIT0QyKFNoYXJlQnV6eiwg
Ym9vbChzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4gYnV6eiwgVGltZSB0aW1lc3RhbXApKTsKLWBgYAot
Ci1XaGlsZSBpdOKAmXMgaGlnaGx5IGRlc2lyYWJsZSB0byBtYWtlIHRoaXMgc3ludGF4IGp1c3Qg
d29yaywgaXTigJlzIG5vdCB0cml2aWFsIGFuZCB0aGUgd29yayBoYXNu4oCZdCBiZWVuIGRvbmUg
eWV0LiAgRm9ydHVuYXRlbHksIHRoZXJlIGlzIGEgdHJpY2sgeW91IGNhbiBhcHBseSB0b2RheSB0
byBnZXQgc29tZXRoaW5nIHRoYXQgd29ya3MgbmVhcmx5IGFzIHdlbGwgYXMgdGhpcy4KLQotVGhl
IHRyaWNrLCBpcyB0byBkZWxlZ2F0ZSB0aGUgYFNoYXJlQnV6eigpYCBtZXRob2QgdG8gYSBtb2Nr
IG1ldGhvZCAobGV04oCZcyBjYWxsIGl0IGBEb1NoYXJlQnV6eigpYCkgdGhhdCBkb2VzIG5vdCB0
YWtlIG1vdmUtb25seSBwYXJhbWV0ZXJzOgotCi1gYGAKLWNsYXNzIE1vY2tCdXp6ZXIgOiBwdWJs
aWMgQnV6emVyIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShNYWtlQnV6eiwgc3RkOjp1bmlx
dWVfcHRyPEJ1eno+KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KSk7Ci0gIE1PQ0tfTUVUSE9EMihE
b1NoYXJlQnV6eiwgYm9vbChCdXp6KiBidXp6LCBUaW1lIHRpbWVzdGFtcCkpOwotICBib29sIFNo
YXJlQnV6eihzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4gYnV6eiwgVGltZSB0aW1lc3RhbXApIHsKLSAg
ICByZXR1cm4gRG9TaGFyZUJ1enooYnV6ei5nZXQoKSwgdGltZXN0YW1wKTsKLSAgfQotfTsKLWBg
YAotCi1Ob3RlIHRoYXQgdGhlcmUncyBubyBuZWVkIHRvIGRlZmluZSBvciBkZWNsYXJlIGBEb1No
YXJlQnV6eigpYCBpbiBhIGJhc2UgY2xhc3MuICBZb3Ugb25seSBuZWVkIHRvIGRlZmluZSBpdCBh
cyBhIGBNT0NLX01FVEhPRGAgaW4gdGhlIG1vY2sgY2xhc3MuCi0KLU5vdyB0aGF0IHdlIGhhdmUg
dGhlIG1vY2sgY2xhc3MgZGVmaW5lZCwgd2UgY2FuIHVzZSBpdCBpbiB0ZXN0cy4gIEluIHRoZSBm
b2xsb3dpbmcgY29kZSBleGFtcGxlcywgd2UgYXNzdW1lIHRoYXQgd2UgaGF2ZSBkZWZpbmVkIGEg
YE1vY2tCdXp6ZXJgIG9iamVjdCBuYW1lZCBgbW9ja19idXp6ZXJfYDoKLQotYGBgCi0gIE1vY2tC
dXp6ZXIgbW9ja19idXp6ZXJfOwotYGBgCi0KLUZpcnN0IGxldOKAmXMgc2VlIGhvdyB3ZSBjYW4g
c2V0IGV4cGVjdGF0aW9ucyBvbiB0aGUgYE1ha2VCdXp6KClgIG1ldGhvZCwgd2hpY2ggcmV0dXJu
cyBhIGB1bmlxdWVfcHRyPEJ1eno+YC4KLQotQXMgdXN1YWwsIGlmIHlvdSBzZXQgYW4gZXhwZWN0
YXRpb24gd2l0aG91dCBhbiBhY3Rpb24gKGkuZS4gdGhlIGAuV2lsbE9uY2UoKWAgb3IgYC5XaWxs
UmVwZWF0ZWQoKWAgY2xhdXNlKSwgd2hlbiB0aGF0IGV4cGVjdGF0aW9uIGZpcmVzLCB0aGUgZGVm
YXVsdCBhY3Rpb24gZm9yIHRoYXQgbWV0aG9kIHdpbGwgYmUgdGFrZW4uICBTaW5jZSBgdW5pcXVl
X3B0cjw+YCBoYXMgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIHRoYXQgcmV0dXJucyBhIG51bGwgYHVu
aXF1ZV9wdHJgLCB0aGF04oCZcyB3aGF0IHlvdeKAmWxsIGdldCBpZiB5b3UgZG9u4oCZdCBzcGVj
aWZ5IGFuIGFjdGlvbjoKLQotYGBgCi0gIC8vIFVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCi0gIEVY
UEVDVF9DQUxMKG1vY2tfYnV6emVyXywgTWFrZUJ1enooImhlbGxvIikpOwotCi0gIC8vIFRyaWdn
ZXJzIHRoZSBwcmV2aW91cyBFWFBFQ1RfQ0FMTC4KLSAgRVhQRUNUX0VRKG51bGxwdHIsIG1vY2tf
YnV6emVyXy5NYWtlQnV6eigiaGVsbG8iKSk7Ci1gYGAKLQotSWYgeW91IGFyZSBub3QgaGFwcHkg
d2l0aCB0aGUgZGVmYXVsdCBhY3Rpb24sIHlvdSBjYW4gdHdlYWsgaXQuICBEZXBlbmRpbmcgb24g
d2hhdCB5b3UgbmVlZCwgeW91IG1heSBlaXRoZXIgdHdlYWsgdGhlIGRlZmF1bHQgYWN0aW9uIGZv
ciBhIHNwZWNpZmljIChtb2NrIG9iamVjdCwgbW9jayBtZXRob2QpIGNvbWJpbmF0aW9uIHVzaW5n
IGBPTl9DQUxMKClgLCBvciB5b3UgbWF5IHR3ZWFrIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYWxs
IG1vY2sgbWV0aG9kcyB0aGF0IHJldHVybiBhIHNwZWNpZmljIHR5cGUuICBUaGUgdXNhZ2Ugb2Yg
YE9OX0NBTEwoKWAgaXMgc2ltaWxhciB0byBgRVhQRUNUX0NBTEwoKWAsIHNvIHdl4oCZbGwgc2tp
cCBpdCBhbmQganVzdCBleHBsYWluIGhvdyB0byBkbyB0aGUgbGF0dGVyICh0d2Vha2luZyB0aGUg
ZGVmYXVsdCBhY3Rpb24gZm9yIGEgc3BlY2lmaWMgcmV0dXJuIHR5cGUpLiAgWW91IGRvIHRoaXMg
dmlhIHRoZSBgRGVmYXVsdFZhbHVlPD46OlNldEZhY3RvcnkoKWAgYW5kIGBEZWZhdWx0VmFsdWU8
Pjo6Q2xlYXIoKWAgQVBJOgotCi1gYGAKLSAgLy8gU2V0cyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9y
IHJldHVybiB0eXBlIHN0ZDo6dW5pcXVlX3B0cjxCdXp6PiB0bwotICAvLyBjcmVhdGluZyBhIG5l
dyBCdXp6IGV2ZXJ5IHRpbWUuCi0gIERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4+
OjpTZXRGYWN0b3J5KAotICAgICAgW10geyByZXR1cm4gTWFrZVVuaXF1ZTxCdXp6PihBY2Nlc3NM
ZXZlbDo6a0ludGVybmFsKTsgfSk7Ci0KLSAgLy8gV2hlbiB0aGlzIGZpcmVzLCB0aGUgZGVmYXVs
dCBhY3Rpb24gb2YgTWFrZUJ1enooKSB3aWxsIHJ1biwgd2hpY2gKLSAgLy8gd2lsbCByZXR1cm4g
YSBuZXcgQnV6eiBvYmplY3QuCi0gIEVYUEVDVF9DQUxMKG1vY2tfYnV6emVyXywgTWFrZUJ1enoo
ImhlbGxvIikpLlRpbWVzKEFueU51bWJlcigpKTsKLQotICBhdXRvIGJ1enoxID0gbW9ja19idXp6
ZXJfLk1ha2VCdXp6KCJoZWxsbyIpOwotICBhdXRvIGJ1enoyID0gbW9ja19idXp6ZXJfLk1ha2VC
dXp6KCJoZWxsbyIpOwotICBFWFBFQ1RfTkUobnVsbHB0ciwgYnV6ejEpOwotICBFWFBFQ1RfTkUo
bnVsbHB0ciwgYnV6ejIpOwotICBFWFBFQ1RfTkUoYnV6ejEsIGJ1enoyKTsKLQotICAvLyBSZXNl
dHMgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciByZXR1cm4gdHlwZSBzdGQ6OnVuaXF1ZV9wdHI8QnV6
ej4sCi0gIC8vIHRvIGF2b2lkIGludGVyZmVyZSB3aXRoIG90aGVyIHRlc3RzLgotICBEZWZhdWx0
VmFsdWU8c3RkOjp1bmlxdWVfcHRyPEJ1eno+Pjo6Q2xlYXIoKTsKLWBgYAotCi1XaGF0IGlmIHlv
dSB3YW50IHRoZSBtZXRob2QgdG8gZG8gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQg
YWN0aW9uPyAgSWYgeW91IGp1c3QgbmVlZCB0byByZXR1cm4gYSBwcmUtZGVmaW5lZCBtb3ZlLW9u
bHkgdmFsdWUsIHlvdSBjYW4gdXNlIHRoZSBgUmV0dXJuKEJ5TW92ZSguLi4pKWAgYWN0aW9uOgot
Ci1gYGAKLSAgLy8gV2hlbiB0aGlzIGZpcmVzLCB0aGUgdW5pcXVlX3B0cjw+IHNwZWNpZmllZCBi
eSBCeU1vdmUoLi4uKSB3aWxsCi0gIC8vIGJlIHJldHVybmVkLgotICBFWFBFQ1RfQ0FMTChtb2Nr
X2J1enplcl8sIE1ha2VCdXp6KCJ3b3JsZCIpKQotICAgICAgLldpbGxPbmNlKFJldHVybihCeU1v
dmUoTWFrZVVuaXF1ZTxCdXp6PihBY2Nlc3NMZXZlbDo6a0ludGVybmFsKSkpKTsKLQotICBFWFBF
Q1RfTkUobnVsbHB0ciwgbW9ja19idXp6ZXJfLk1ha2VCdXp6KCJ3b3JsZCIpKTsKLWBgYAotCi1O
b3RlIHRoYXQgYEJ5TW92ZSgpYCBpcyBlc3NlbnRpYWwgaGVyZSAtIGlmIHlvdSBkcm9wIGl0LCB0
aGUgY29kZSB3b27igJl0IGNvbXBpbGUuCi0KLVF1aXogdGltZSEgIFdoYXQgZG8geW91IHRoaW5r
IHdpbGwgaGFwcGVuIGlmIGEgYFJldHVybihCeU1vdmUoLi4uKSlgIGFjdGlvbiBpcyBwZXJmb3Jt
ZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4geW91IHdyaXRlIGDigKYuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKEJ5TW92ZSguLi4pKSk7YCk/ICBDb21lIHRoaW5rIG9mIGl0LCBhZnRlciB0aGUgZmlyc3Qg
dGltZSB0aGUgYWN0aW9uIHJ1bnMsIHRoZSBzb3VyY2UgdmFsdWUgd2lsbCBiZSBjb25zdW1lZCAo
c2luY2UgaXTigJlzIGEgbW92ZS1vbmx5IHZhbHVlKSwgc28gdGhlIG5leHQgdGltZSBhcm91bmQs
IHRoZXJl4oCZcyBubyB2YWx1ZSB0byBtb3ZlIGZyb20gLS0geW914oCZbGwgZ2V0IGEgcnVuLXRp
bWUgZXJyb3IgdGhhdCBgUmV0dXJuKEJ5TW92ZSguLi4pKWAgY2FuIG9ubHkgYmUgcnVuIG9uY2Uu
Ci0KLUlmIHlvdSBuZWVkIHlvdXIgbW9jayBtZXRob2QgdG8gZG8gbW9yZSB0aGFuIGp1c3QgbW92
aW5nIGEgcHJlLWRlZmluZWQgdmFsdWUsIHJlbWVtYmVyIHRoYXQgeW91IGNhbiBhbHdheXMgdXNl
IGBJbnZva2UoKWAgdG8gY2FsbCBhIGxhbWJkYSBvciBhIGNhbGxhYmxlIG9iamVjdCwgd2hpY2gg
Y2FuIGRvIHByZXR0eSBtdWNoIGFueXRoaW5nIHlvdSB3YW50OgotCi1gYGAKLSAgRVhQRUNUX0NB
TEwobW9ja19idXp6ZXJfLCBNYWtlQnV6eigieCIpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KElu
dm9rZShbXShjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCkgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCdXp6PihBY2Nlc3NMZXZlbDo6a0ludGVybmFsKTsKLSAgICAgIH0pKTsKLQot
ICBFWFBFQ1RfTkUobnVsbHB0ciwgbW9ja19idXp6ZXJfLk1ha2VCdXp6KCJ4IikpOwotICBFWFBF
Q1RfTkUobnVsbHB0ciwgbW9ja19idXp6ZXJfLk1ha2VCdXp6KCJ4IikpOwotYGBgCi0KLUV2ZXJ5
IHRpbWUgdGhpcyBgRVhQRUNUX0NBTExgIGZpcmVzLCBhIG5ldyBgdW5pcXVlX3B0cjxCdXp6PmAg
d2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZC4gIFlvdSBjYW5ub3QgZG8gdGhpcyB3aXRoIGBS
ZXR1cm4oQnlNb3ZlKC4uLikpYC4KLQotTm93IHRoZXJl4oCZcyBvbmUgdG9waWMgd2UgaGF2ZW7i
gJl0IGNvdmVyZWQ6IGhvdyBkbyB5b3Ugc2V0IGV4cGVjdGF0aW9ucyBvbiBgU2hhcmVCdXp6KClg
LCB3aGljaCB0YWtlcyBhIG1vdmUtb25seS10eXBlZCBwYXJhbWV0ZXI/ICBUaGUgYW5zd2VyIGlz
IHlvdSBkb27igJl0LiAgSW5zdGVhZCwgeW91IHNldCBleHBlY3RhdGlvbnMgb24gdGhlIGBEb1No
YXJlQnV6eigpYCBtb2NrIG1ldGhvZCAocmVtZW1iZXIgdGhhdCB3ZSBkZWZpbmVkIGEgYE1PQ0tf
TUVUSE9EYCBmb3IgYERvU2hhcmVCdXp6KClgLCBub3QgYFNoYXJlQnV6eigpYCk6Ci0KLWBgYAot
ICBFWFBFQ1RfQ0FMTChtb2NrX2J1enplcl8sIERvU2hhcmVCdXp6KE5vdE51bGwoKSwgXykpOwot
Ci0gIC8vIFdoZW4gb25lIGNhbGxzIFNoYXJlQnV6eigpIG9uIHRoZSBNb2NrQnV6emVyIGxpa2Ug
dGhpcywgdGhlIGNhbGwgaXMKLSAgLy8gZm9yd2FyZGVkIHRvIERvU2hhcmVCdXp6KCksIHdoaWNo
IGlzIG1vY2tlZC4gIFRoZXJlZm9yZSB0aGlzIHN0YXRlbWVudAotICAvLyB3aWxsIHRyaWdnZXIg
dGhlIGFib3ZlIEVYUEVDVF9DQUxMLgotICBtb2NrX2J1enplcl8uU2hhcmVCdXp6KE1ha2VVbmlx
dWUmbHQ7QnV6eiZndDsoQWNjZXNzTGV2ZWw6OmtJbnRlcm5hbCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgOjpiYXNlOjpOb3coKSk7Ci1gYGAKLQotU29tZSBvZiB5b3UgbWF5IGhhdmUgc3Bv
dHRlZCBvbmUgcHJvYmxlbSB3aXRoIHRoaXMgYXBwcm9hY2g6IHRoZSBgRG9TaGFyZUJ1enooKWAg
bW9jayBtZXRob2QgZGlmZmVycyBmcm9tIHRoZSByZWFsIGBTaGFyZUJ1enooKWAgbWV0aG9kIGlu
IHRoYXQgaXQgY2Fubm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBidXp6IHBhcmFtZXRlciAtIGBT
aGFyZUJ1enooKWAgd2lsbCBhbHdheXMgZGVsZXRlIGJ1enogYWZ0ZXIgYERvU2hhcmVCdXp6KClg
IHJldHVybnMuICBXaGF0IGlmIHlvdSBuZWVkIHRvIHNhdmUgdGhlIGJ1enogb2JqZWN0IHNvbWV3
aGVyZSBmb3IgbGF0ZXIgdXNlIHdoZW4gYFNoYXJlQnV6eigpYCBpcyBjYWxsZWQ/ICBJbmRlZWQs
IHlvdSdkIGJlIHN0dWNrLgotCi1Bbm90aGVyIHByb2JsZW0gd2l0aCB0aGUgYERvU2hhcmVCdXp6
KClgIHdlIGhhZCBpcyB0aGF0IGl0IGNhbiBzdXJwcmlzZSBwZW9wbGUgcmVhZGluZyBvciBtYWlu
dGFpbmluZyB0aGUgdGVzdCwgYXMgb25lIHdvdWxkIGV4cGVjdCB0aGF0IGBEb1NoYXJlQnV6eigp
YCBoYXMgKGxvZ2ljYWxseSkgdGhlIHNhbWUgY29udHJhY3QgYXMgYFNoYXJlQnV6eigpYC4KLQot
Rm9ydHVuYXRlbHksIHRoZXNlIHByb2JsZW1zIGNhbiBiZSBmaXhlZCB3aXRoIGEgYml0IG1vcmUg
Y29kZS4gIExldCdzIHRyeSB0byBnZXQgaXQgcmlnaHQgdGhpcyB0aW1lOgotCi1gYGAKLWNsYXNz
IE1vY2tCdXp6ZXIgOiBwdWJsaWMgQnV6emVyIHsKLSBwdWJsaWM6Ci0gIE1vY2tCdXp6ZXIoKSB7
Ci0gICAgLy8gU2luY2UgRG9TaGFyZUJ1enooYnV6eiwgdGltZSkgaXMgc3VwcG9zZWQgdG8gdGFr
ZSBvd25lcnNoaXAgb2YKLSAgICAvLyBidXp6LCBkZWZpbmUgYSBkZWZhdWx0IGJlaGF2aW9yIGZv
ciBEb1NoYXJlQnV6eihidXp6LCB0aW1lKSB0bwotICAgIC8vIGRlbGV0ZSBidXp6LgotICAgIE9O
X0NBTEwoKnRoaXMsIERvU2hhcmVCdXp6KF8sIF8pKQotICAgICAgICAuV2lsbEJ5RGVmYXVsdChJ
bnZva2UoW10oQnV6eiogYnV6eiwgVGltZSB0aW1lc3RhbXApIHsKLSAgICAgICAgICBkZWxldGUg
YnV6ejsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSkpOwotICB9Ci0KLSAgTU9D
S19NRVRIT0QxKE1ha2VCdXp6LCBzdGQ6OnVuaXF1ZV9wdHI8QnV6ej4oY29uc3Qgc3RkOjpzdHJp
bmcmIHRleHQpKTsKLQotICAvLyBUYWtlcyBvd25lcnNoaXAgb2YgYnV6ei4KLSAgTU9DS19NRVRI
T0QyKERvU2hhcmVCdXp6LCBib29sKEJ1enoqIGJ1enosIFRpbWUgdGltZXN0YW1wKSk7Ci0gIGJv
b2wgU2hhcmVCdXp6KHN0ZDo6dW5pcXVlX3B0cjxCdXp6PiBidXp6LCBUaW1lIHRpbWVzdGFtcCkg
ewotICAgIHJldHVybiBEb1NoYXJlQnV6eihidXp6LnJlbGVhc2UoKSwgdGltZXN0YW1wKTsKLSAg
fQotfTsKLWBgYAotCi1Ob3csIHRoZSBtb2NrIGBEb1NoYXJlQnV6eigpYCBtZXRob2QgaXMgZnJl
ZSB0byBzYXZlIHRoZSBidXp6IGFyZ3VtZW50IGZvciBsYXRlciB1c2UgaWYgdGhpcyBpcyB3aGF0
IHlvdSB3YW50OgotCi1gYGAKLSAgc3RkOjp1bmlxdWVfcHRyPEJ1eno+IGludGVyY2VwdGVkX2J1
eno7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfYnV6emVyXywgRG9TaGFyZUJ1enooTm90TnVsbCgpLCBf
KSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoWyZhbXA7aW50ZXJjZXB0ZWRfYnV6el0oQnV6eiog
YnV6eiwgVGltZSB0aW1lc3RhbXApIHsKLSAgICAgICAgLy8gU2F2ZSBidXp6IGluIGludGVyY2Vw
dGVkX2J1enogZm9yIGFuYWx5c2lzIGxhdGVyLgotICAgICAgICBpbnRlcmNlcHRlZF9idXp6LnJl
c2V0KGJ1enopOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9KSk7Ci0KLSAgbW9ja19i
dXp6ZXJfLlNoYXJlQnV6eihzdGQ6Om1ha2VfdW5pcXVlPEJ1eno+KEFjY2Vzc0xldmVsOjprSW50
ZXJuYWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5vdygpKTsKLSAgRVhQRUNUX05FKG51
bGxwdHIsIGludGVyY2VwdGVkX2J1enopOwotYGBgCi0KLVVzaW5nIHRoZSB0cmlja3MgY292ZXJl
ZCBpbiB0aGlzIHJlY2lwZSwgeW91IGFyZSBub3cgYWJsZSB0byBtb2NrIG1ldGhvZHMgdGhhdCB0
YWtlIGFuZC9vciByZXR1cm4gbW92ZS1vbmx5IHR5cGVzLiAgUHV0IHlvdXIgbmV3bHktYWNxdWly
ZWQgcG93ZXIgdG8gZ29vZCB1c2UgLSB3aGVuIHlvdSBkZXNpZ24gYSBuZXcgQVBJLCB5b3UgY2Fu
IG5vdyBmZWVsIGNvbWZvcnRhYmxlIHVzaW5nIGB1bmlxdWVfcHRyc2AgYXMgYXBwcm9wcmlhdGUs
IHdpdGhvdXQgZmVhcmluZyB0aGF0IGRvaW5nIHNvIHdpbGwgY29tcHJvbWlzZSB5b3VyIHRlc3Rz
LgotCi0jIyBNYWtpbmcgdGhlIENvbXBpbGF0aW9uIEZhc3RlciAjIwotCi1CZWxpZXZlIGl0IG9y
IG5vdCwgdGhlIF92YXN0IG1ham9yaXR5XyBvZiB0aGUgdGltZSBzcGVudCBvbiBjb21waWxpbmcK
LWEgbW9jayBjbGFzcyBpcyBpbiBnZW5lcmF0aW5nIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvciwgYXMgdGhleQotcGVyZm9ybSBub24tdHJpdmlhbCB0YXNrcyAoZS5nLiB2ZXJpZmljYXRp
b24gb2YgdGhlCi1leHBlY3RhdGlvbnMpLiBXaGF0J3MgbW9yZSwgbW9jayBtZXRob2RzIHdpdGgg
ZGlmZmVyZW50IHNpZ25hdHVyZXMKLWhhdmUgZGlmZmVyZW50IHR5cGVzIGFuZCB0aHVzIHRoZWly
IGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBuZWVkIHRvCi1iZSBnZW5lcmF0ZWQgYnkgdGhlIGNv
bXBpbGVyIHNlcGFyYXRlbHkuIEFzIGEgcmVzdWx0LCBpZiB5b3UgbW9jayBtYW55Ci1kaWZmZXJl
bnQgdHlwZXMgb2YgbWV0aG9kcywgY29tcGlsaW5nIHlvdXIgbW9jayBjbGFzcyBjYW4gZ2V0IHJl
YWxseQotc2xvdy4KLQotSWYgeW91IGFyZSBleHBlcmllbmNpbmcgc2xvdyBjb21waWxhdGlvbiwg
eW91IGNhbiBtb3ZlIHRoZSBkZWZpbml0aW9uCi1vZiB5b3VyIG1vY2sgY2xhc3MnIGNvbnN0cnVj
dG9yIGFuZCBkZXN0cnVjdG9yIG91dCBvZiB0aGUgY2xhc3MgYm9keQotYW5kIGludG8gYSBgLmNw
cGAgZmlsZS4gVGhpcyB3YXksIGV2ZW4gaWYgeW91IGAjaW5jbHVkZWAgeW91ciBtb2NrCi1jbGFz
cyBpbiBOIGZpbGVzLCB0aGUgY29tcGlsZXIgb25seSBuZWVkcyB0byBnZW5lcmF0ZSBpdHMgY29u
c3RydWN0b3IKLWFuZCBkZXN0cnVjdG9yIG9uY2UsIHJlc3VsdGluZyBpbiBhIG11Y2ggZmFzdGVy
IGNvbXBpbGF0aW9uLgotCi1MZXQncyBpbGx1c3RyYXRlIHRoZSBpZGVhIHVzaW5nIGFuIGV4YW1w
bGUuIEhlcmUncyB0aGUgZGVmaW5pdGlvbiBvZiBhCi1tb2NrIGNsYXNzIGJlZm9yZSBhcHBseWlu
ZyB0aGlzIHJlY2lwZToKLQotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmguCi0uLi4KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIFNpbmNlIHdlIGRvbid0IGRlY2xh
cmUgdGhlIGNvbnN0cnVjdG9yIG9yIHRoZSBkZXN0cnVjdG9yLAotICAvLyB0aGUgY29tcGlsZXIg
d2lsbCBnZW5lcmF0ZSB0aGVtIGluIGV2ZXJ5IHRyYW5zbGF0aW9uIHVuaXQKLSAgLy8gd2hlcmUg
dGhpcyBtb2NrIGNsYXNzIGlzIHVzZWQuCi0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50KCkp
OwotICBNT0NLX01FVEhPRDEoRG9UaGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOwotICAuLi4g
bW9yZSBtb2NrIG1ldGhvZHMgLi4uCi19OwotYGBgCi0KLUFmdGVyIHRoZSBjaGFuZ2UsIGl0IHdv
dWxkIGxvb2sgbGlrZToKLQotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmguCi0uLi4KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvciBhcmUgZGVjbGFyZWQsIGJ1dCBub3QgZGVmaW5lZCwgaGVyZS4KLSAgTW9ja0Zv
bygpOwotICB2aXJ0dWFsIH5Nb2NrRm9vKCk7Ci0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50
KCkpOwotICBNT0NLX01FVEhPRDEoRG9UaGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOwotICAu
Li4gbW9yZSBtb2NrIG1ldGhvZHMgLi4uCi19OwotYGBgCi1hbmQKLWBgYAotLy8gRmlsZSBtb2Nr
X2Zvby5jcHAuCi0jaW5jbHVkZSAicGF0aC90by9tb2NrX2Zvby5oIgotCi0vLyBUaGUgZGVmaW5p
dGlvbnMgbWF5IGFwcGVhciB0cml2aWFsLCBidXQgdGhlIGZ1bmN0aW9ucyBhY3R1YWxseSBkbyBh
Ci0vLyBsb3Qgb2YgdGhpbmdzIHRocm91Z2ggdGhlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBv
ZiB0aGUgbWVtYmVyCi0vLyB2YXJpYWJsZXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIG1vY2sgbWV0
aG9kcy4KLU1vY2tGb286Ok1vY2tGb28oKSB7fQotTW9ja0Zvbzo6fk1vY2tGb28oKSB7fQotYGBg
Ci0KLSMjIEZvcmNpbmcgYSBWZXJpZmljYXRpb24gIyMKLQotV2hlbiBpdCdzIGJlaW5nIGRlc3Rv
eWVkLCB5b3VyIGZyaWVuZGx5IG1vY2sgb2JqZWN0IHdpbGwgYXV0b21hdGljYWxseQotdmVyaWZ5
IHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgd2ls
bAotZ2VuZXJhdGUgW0dvb2dsZSBUZXN0XSguLi8uLi9nb29nbGV0ZXN0LykgZmFpbHVyZXMKLWlm
IG5vdC4gVGhpcyBpcyBjb252ZW5pZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUgbGVzcyB0
aGluZyB0bwotd29ycnkgYWJvdXQuIFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBzdXJlIGlm
IHlvdXIgbW9jayBvYmplY3Qgd2lsbAotYmUgZGVzdG95ZWQuCi0KLUhvdyBjb3VsZCBpdCBiZSB0
aGF0IHlvdXIgbW9jayBvYmplY3Qgd29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/Ci1XZWxs
LCBpdCBtaWdodCBiZSBjcmVhdGVkIG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUgY29kZSB5
b3UgYXJlCi10ZXN0aW5nLiBTdXBwb3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2RlIGFuZCBp
dCBkb2Vzbid0IGRlbGV0ZSB0aGUKLW1vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNvdWxkIGVu
ZCB1cCB3aXRoIGEgcGFzc2luZyB0ZXN0IHdoZW4KLXRoZXJlJ3MgYWN0dWFsbHkgYSBidWcuCi0K
LVVzaW5nIGEgaGVhcCBjaGVja2VyIGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZpYXRlIHRo
ZSBjb25jZXJuLCBidXQKLWl0cyBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUgcmVsaWFi
bGUuIFNvLCBzb21ldGltZXMgeW91IGRvIHdhbnQKLXRvIF9mb3JjZV8gR29vZ2xlIE1vY2sgdG8g
dmVyaWZ5IGEgbW9jayBvYmplY3QgYmVmb3JlIGl0IGlzCi0oaG9wZWZ1bGx5KSBkZXN0cnVjdGVk
LiBZb3UgY2FuIGRvIHRoaXMgd2l0aAotYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtb2NrX29iamVjdClgOgotCi1gYGAKLVRFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNzZXNSZXF1
ZXN0KSB7Ci0gIHVzaW5nIDo6dGVzdGluZzo6TW9jazsKLQotICBNb2NrRm9vKiBjb25zdCBmb28g
PSBuZXcgTW9ja0ZvbzsKLSAgRVhQRUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKLSAgLy8gLi4uIG90
aGVyIGV4cGVjdGF0aW9ucyAuLi4KLQotICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgotICBNeVNl
cnZlciBzZXJ2ZXIoZm9vKTsKLSAgc2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7Ci0KLSAgLy8g
SW4gY2FzZSB0aGF0IHNlcnZlcidzIGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVsZXRlIGZv
bywKLSAgLy8gdGhpcyB3aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4KLSAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoZm9vKTsKLX0gIC8vIHNlcnZlciBpcyBkZXN0
cm95ZWQgd2hlbiBpdCBnb2VzIG91dCBvZiBzY29wZSBoZXJlLgotYGBgCi0KLSoqVGlwOioqIFRo
ZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0dXJucyBh
Ci1gYm9vbGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNz
ZnVsIChgdHJ1ZWAgZm9yCi15ZXMpLCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlvbiBjYWxs
IGluc2lkZSBhIGBBU1NFUlRfVFJVRSgpYCBpZgotdGhlcmUgaXMgbm8gcG9pbnQgZ29pbmcgZnVy
dGhlciB3aGVuIHRoZSB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4KLQotIyMgVXNpbmcgQ2hlY2sg
UG9pbnRzICMjCi0KLVNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1vY2sgb2Jq
ZWN0IGF0IHZhcmlvdXMgY2hlY2sKLXBvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2ggY2hlY2sg
cG9pbnQsIHlvdSB2ZXJpZnkgdGhhdCBhbGwgZXhpc3RpbmcKLWV4cGVjdGF0aW9ucyBvbiB0aGUg
bW9jayBvYmplY3QgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAotc29tZSBu
ZXcgZXhwZWN0YXRpb25zIG9uIGl0IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhpcyBhbGxv
d3MgeW91Ci10byB3b3JrIHdpdGggYSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9zZSBzaXpl
cyBhcmUgZWFjaAotbWFuYWdlYWJsZS4KLQotT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhhdCBpbiB5
b3VyIHRlc3QncyBgU2V0VXAoKWAgZnVuY3Rpb24sIHlvdSBtYXkKLXdhbnQgdG8gcHV0IHRoZSBv
YmplY3QgeW91IGFyZSB0ZXN0aW5nIGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRoZQotaGVs
cCBmcm9tIGEgbW9jayBvYmplY3QuIE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlvdSB3YW50
IHRvIGNsZWFyCi1hbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQgaW4gdGhl
IGBURVNUX0ZgIGJvZHkgeW91IGNhbgotc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBpdC4KLQot
QXMgeW91IG1heSBoYXZlIGZpZ3VyZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKClgCi1mdW5jdGlvbiB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lwZSBjYW4g
aGVscCB5b3UgaGVyZS4gT3IsIGlmIHlvdQotYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRvIHNldCBk
ZWZhdWx0IGFjdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGFuZAotd2FudCB0byBjbGVhciB0aGUg
ZGVmYXVsdCBhY3Rpb25zIGFzIHdlbGwsIHVzZQotYE1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2Nr
X29iamVjdClgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gZG9lcyB3aGF0Ci1gTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJucyB0aGUK
LXNhbWUgYGJvb2xgLCAqKnBsdXMqKiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0YXRlbWVu
dHMgb24KLWBtb2NrX29iamVjdGAgdG9vLgotCi1Bbm90aGVyIHRyaWNrIHlvdSBjYW4gdXNlIHRv
IGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGlzIHRvIHB1dCB0aGUKLWV4cGVjdGF0aW9ucyBpbiBz
ZXF1ZW5jZXMgYW5kIGluc2VydCBjYWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIKLWZ1bmN0
aW9uIGF0IHNwZWNpZmljIHBsYWNlcy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBtb2Nr
Ci1mdW5jdGlvbiBjYWxscyBkbyBoYXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBleGFtcGxl
LCBpZiB5b3UgYXJlCi1leGVyY2lzaW5nIGNvZGU6Ci0KLWBgYAotRm9vKDEpOwotRm9vKDIpOwot
Rm9vKDMpOwotYGBgCi0KLWFuZCB3YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFuZCBgRm9v
KDMpYCBib3RoIGludm9rZQotYG1vY2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9lc24ndCBp
bnZva2UgYW55dGhpbmcuIFlvdSBjYW4gd3JpdGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpN
b2NrRnVuY3Rpb247Ci0KLVRFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgewotICBN
eU1vY2sgbW9jazsKLSAgLy8gQ2xhc3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5IG9uZSBt
b2NrIG1ldGhvZC4gIEl0IGlzIG5hbWVkCi0gIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUgRi4KLSAg
TW9ja0Z1bmN0aW9uPHZvaWQoc3RyaW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsKLSAgewot
ICAgIEluU2VxdWVuY2UgczsKLQotICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKLSAg
ICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMSIpKTsKLSAgICBFWFBFQ1RfQ0FMTChjaGVjaywg
Q2FsbCgiMiIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0gIH0KLSAgRm9v
KDEpOwotICBjaGVjay5DYWxsKCIxIik7Ci0gIEZvbygyKTsKLSAgY2hlY2suQ2FsbCgiMiIpOwot
ICBGb28oMyk7Ci19Ci1gYGAKLQotVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRoZSBm
aXJzdCBgQmFyKCJhIilgIG11c3QgaGFwcGVuIGJlZm9yZQotY2hlY2sgcG9pbnQgIjEiLCB0aGUg
c2Vjb25kIGBCYXIoImEiKWAgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIiLAotYW5k
IG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRzLiBUaGUg
ZXhwbGljaXQKLWNoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBgQmFyKCJh
IilgIGlzIGNhbGxlZCBieSB3aGljaAotY2FsbCB0byBgRm9vKClgLgotCi0jIyBNb2NraW5nIERl
c3RydWN0b3JzICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBtb2NrIG9i
amVjdCBpcyBkZXN0cnVjdGVkIGF0IHRoZQotcmlnaHQgdGltZSwgZS5nLiBhZnRlciBgYmFyLT5B
KClgIGlzIGNhbGxlZCBidXQgYmVmb3JlIGBiYXItPkIoKWAgaXMKLWNhbGxlZC4gV2UgYWxyZWFk
eSBrbm93IHRoYXQgeW91IGNhbiBzcGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRlcgotb2Yg
bW9jayBmdW5jdGlvbiBjYWxscywgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9jayB0aGUg
ZGVzdHJ1Y3Rvcgotb2YgdGhlIG1vY2sgZnVuY3Rpb24uCi0KLVRoaXMgc291bmRzIHNpbXBsZSwg
ZXhjZXB0IGZvciBvbmUgcHJvYmxlbTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAotZnVuY3Rp
b24gd2l0aCBzcGVjaWFsIHN5bnRheCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0aGUKLWBN
T0NLX01FVEhPRDBgIG1hY3JvIGRvZXNuJ3Qgd29yayBmb3IgaXQ6Ci0KLWBgYAotICBNT0NLX01F
VEhPRDAofk1vY2tGb28sIHZvaWQoKSk7ICAvLyBXb24ndCBjb21waWxlIQotYGBgCi0KLVRoZSBn
b29kIG5ld3MgaXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFjaGlldmUg
dGhlIHNhbWUKLWVmZmVjdC4gRmlyc3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgpYCB0byB5
b3VyIG1vY2sgY2xhc3MgYW5kIGNhbGwKLWl0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtlIHRoaXM6
Ci0KLWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgLy8gQWRkIHRo
ZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHRvIHRoZSBtb2NrIGNsYXNzLgotICBNT0NLX01FVEhPRDAo
RGllLCB2b2lkKCkpOwotICB2aXJ0dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQotfTsKLWBgYAot
Ci0oSWYgdGhlIG5hbWUgYERpZSgpYCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3ltYm9sLCBj
aG9vc2UgYW5vdGhlcgotbmFtZS4pIE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBwcm9ibGVt
IG9mIHRlc3Rpbmcgd2hlbiBhIGBNb2NrRm9vYAotb2JqZWN0IGRpZXMgdG8gdGVzdGluZyB3aGVu
IGl0cyBgRGllKClgIG1ldGhvZCBpcyBjYWxsZWQ6Ci0KLWBgYAotICBNb2NrRm9vKiBmb28gPSBu
ZXcgTW9ja0ZvbzsKLSAgTW9ja0JhciogYmFyID0gbmV3IE1vY2tCYXI7Ci0gIC4uLgotICB7Ci0g
ICAgSW5TZXF1ZW5jZSBzOwotCi0gICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRlciBiYXIt
PkEoKSBhbmQgYmVmb3JlIGJhci0+QigpLgotICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEoKSk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmZvbywgRGllKCkpOwotICAgIEVYUEVDVF9DQUxMKCpiYXIsIEIoKSk7
Ci0gIH0KLWBgYAotCi1BbmQgdGhhdCdzIHRoYXQuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIGFu
ZCBUaHJlYWRzICMjCi0KLSoqSU1QT1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmliZSBpbiB0
aGlzIHJlY2lwZSBpcyAqKk9OTFkqKiB0cnVlIG9uCi1wbGF0Zm9ybXMgd2hlcmUgR29vZ2xlIE1v
Y2sgaXMgdGhyZWFkLXNhZmUuIEN1cnJlbnRseSB0aGVzZSBhcmUgb25seQotcGxhdGZvcm1zIHRo
YXQgc3VwcG9ydCB0aGUgcHRocmVhZHMgbGlicmFyeSAodGhpcyBpbmNsdWRlcyBMaW51eCBhbmQg
TWFjKS4KLVRvIG1ha2UgaXQgdGhyZWFkLXNhZmUgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG9ubHkg
bmVlZCB0byBpbXBsZW1lbnQKLXNvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4gYCJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYC4KLQotSW4gYSAqKnVuaXQqKiB0ZXN0LCBpdCdz
IGJlc3QgaWYgeW91IGNvdWxkIGlzb2xhdGUgYW5kIHRlc3QgYSBwaWVjZSBvZgotY29kZSBpbiBh
IHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBUaGF0IGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgYW5k
Ci1kZWFkIGxvY2tzLCBhbmQgbWFrZXMgZGVidWdnaW5nIHlvdXIgdGVzdCBtdWNoIGVhc2llci4K
LQotWWV0IG1hbnkgcHJvZ3JhbXMgYXJlIG11bHRpLXRocmVhZGVkLCBhbmQgc29tZXRpbWVzIHRv
IHRlc3Qgc29tZXRoaW5nCi13ZSBuZWVkIHRvIHBvdW5kIG9uIGl0IGZyb20gbW9yZSB0aGFuIG9u
ZSB0aHJlYWQuIEdvb2dsZSBNb2NrIHdvcmtzCi1mb3IgdGhpcyBwdXJwb3NlIHRvby4KLQotUmVt
ZW1iZXIgdGhlIHN0ZXBzIGZvciB1c2luZyBhIG1vY2s6Ci0KLSAgMS4gQ3JlYXRlIGEgbW9jayBv
YmplY3QgYGZvb2AuCi0gIDEuIFNldCBpdHMgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlv
bnMgdXNpbmcgYE9OX0NBTEwoKWAgYW5kIGBFWFBFQ1RfQ0FMTCgpYC4KLSAgMS4gVGhlIGNvZGUg
dW5kZXIgdGVzdCBjYWxscyBtZXRob2RzIG9mIGBmb29gLgotICAxLiBPcHRpb25hbGx5LCB2ZXJp
ZnkgYW5kIHJlc2V0IHRoZSBtb2NrLgotICAxLiBEZXN0cm95IHRoZSBtb2NrIHlvdXJzZWxmLCBv
ciBsZXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBkZXN0cm95IGl0LiBUaGUgZGVzdHJ1Y3RvciB3aWxs
IGF1dG9tYXRpY2FsbHkgdmVyaWZ5IGl0LgotCi1JZiB5b3UgZm9sbG93IHRoZSBmb2xsb3dpbmcg
c2ltcGxlIHJ1bGVzLCB5b3VyIG1vY2tzIGFuZCB0aHJlYWRzIGNhbgotbGl2ZSBoYXBwaWx5IHRv
Z2V0aGVyOgotCi0gICogRXhlY3V0ZSB5b3VyIF90ZXN0IGNvZGVfIChhcyBvcHBvc2VkIHRvIHRo
ZSBjb2RlIGJlaW5nIHRlc3RlZCkgaW4gX29uZV8gdGhyZWFkLiBUaGlzIG1ha2VzIHlvdXIgdGVz
dCBlYXN5IHRvIGZvbGxvdy4KLSAgKiBPYnZpb3VzbHksIHlvdSBjYW4gZG8gc3RlcCAjMSB3aXRo
b3V0IGxvY2tpbmcuCi0gICogV2hlbiBkb2luZyBzdGVwICMyIGFuZCAjNSwgbWFrZSBzdXJlIG5v
IG90aGVyIHRocmVhZCBpcyBhY2Nlc3NpbmcgYGZvb2AuIE9idmlvdXMgdG9vLCBodWg/Ci0gICog
IzMgYW5kICM0IGNhbiBiZSBkb25lIGVpdGhlciBpbiBvbmUgdGhyZWFkIG9yIGluIG11bHRpcGxl
IHRocmVhZHMgLSBhbnl3YXkgeW91IHdhbnQuIEdvb2dsZSBNb2NrIHRha2VzIGNhcmUgb2YgdGhl
IGxvY2tpbmcsIHNvIHlvdSBkb24ndCBoYXZlIHRvIGRvIGFueSAtIHVubGVzcyByZXF1aXJlZCBi
eSB5b3VyIHRlc3QgbG9naWMuCi0KLUlmIHlvdSB2aW9sYXRlIHRoZSBydWxlcyAoZm9yIGV4YW1w
bGUsIGlmIHlvdSBzZXQgZXhwZWN0YXRpb25zIG9uIGEKLW1vY2sgd2hpbGUgYW5vdGhlciB0aHJl
YWQgaXMgY2FsbGluZyBpdHMgbWV0aG9kcyksIHlvdSBnZXQgdW5kZWZpbmVkCi1iZWhhdmlvci4g
VGhhdCdzIG5vdCBmdW4sIHNvIGRvbid0IGRvIGl0LgotCi1Hb29nbGUgTW9jayBndWFyYW50ZWVz
IHRoYXQgdGhlIGFjdGlvbiBmb3IgYSBtb2NrIGZ1bmN0aW9uIGlzIGRvbmUgaW4KLXRoZSBzYW1l
IHRocmVhZCB0aGF0IGNhbGxlZCB0aGUgbW9jayBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIGluCi0K
LWBgYAotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oMSkpCi0gICAgICAuV2lsbE9uY2UoYWN0aW9u
MSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygyKSkKLSAgICAgIC5XaWxsT25jZShhY3Rpb24y
KTsKLWBgYAotCi1pZiBgRm9vKDEpYCBpcyBjYWxsZWQgaW4gdGhyZWFkIDEgYW5kIGBGb28oMilg
IGlzIGNhbGxlZCBpbiB0aHJlYWQgMiwKLUdvb2dsZSBNb2NrIHdpbGwgZXhlY3V0ZSBgYWN0aW9u
MWAgaW4gdGhyZWFkIDEgYW5kIGBhY3Rpb24yYCBpbiB0aHJlYWQKLTIuCi0KLUdvb2dsZSBNb2Nr
IGRvZXMgX25vdF8gaW1wb3NlIGEgc2VxdWVuY2Ugb24gYWN0aW9ucyBwZXJmb3JtZWQgaW4KLWRp
ZmZlcmVudCB0aHJlYWRzIChkb2luZyBzbyBtYXkgY3JlYXRlIGRlYWRsb2NrcyBhcyB0aGUgYWN0
aW9ucyBtYXkKLW5lZWQgdG8gY29vcGVyYXRlKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBleGVjdXRp
b24gb2YgYGFjdGlvbjFgIGFuZAotYGFjdGlvbjJgIGluIHRoZSBhYm92ZSBleGFtcGxlIF9tYXlf
IGludGVybGVhdmUuIElmIHRoaXMgaXMgYSBwcm9ibGVtLAoteW91IHNob3VsZCBhZGQgcHJvcGVy
IHN5bmNocm9uaXphdGlvbiBsb2dpYyB0byBgYWN0aW9uMWAgYW5kIGBhY3Rpb24yYAotdG8gbWFr
ZSB0aGUgdGVzdCB0aHJlYWQtc2FmZS4KLQotCi1BbHNvLCByZW1lbWJlciB0aGF0IGBEZWZhdWx0
VmFsdWU8VD5gIGlzIGEgZ2xvYmFsIHJlc291cmNlIHRoYXQKLXBvdGVudGlhbGx5IGFmZmVjdHMg
X2FsbF8gbGl2aW5nIG1vY2sgb2JqZWN0cyBpbiB5b3VyCi1wcm9ncmFtLiBOYXR1cmFsbHksIHlv
dSB3b24ndCB3YW50IHRvIG1lc3Mgd2l0aCBpdCBmcm9tIG11bHRpcGxlCi10aHJlYWRzIG9yIHdo
ZW4gdGhlcmUgc3RpbGwgYXJlIG1vY2tzIGluIGFjdGlvbi4KLQotIyMgQ29udHJvbGxpbmcgSG93
IE11Y2ggSW5mb3JtYXRpb24gR29vZ2xlIE1vY2sgUHJpbnRzICMjCi0KLVdoZW4gR29vZ2xlIE1v
Y2sgc2VlcyBzb21ldGhpbmcgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCBvZiBiZWluZyBhbgotZXJy
b3IgKGUuZy4gYSBtb2NrIGZ1bmN0aW9uIHdpdGggbm8gZXhwZWN0YXRpb24gaXMgY2FsbGVkLCBh
LmsuYS4gYW4KLXVuaW50ZXJlc3RpbmcgY2FsbCwgd2hpY2ggaXMgYWxsb3dlZCBidXQgcGVyaGFw
cyB5b3UgZm9yZ290IHRvCi1leHBsaWNpdGx5IGJhbiB0aGUgY2FsbCksIGl0IHByaW50cyBzb21l
IHdhcm5pbmcgbWVzc2FnZXMsIGluY2x1ZGluZwotdGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rp
b24gYW5kIHRoZSByZXR1cm4gdmFsdWUuIEhvcGVmdWxseSB0aGlzCi13aWxsIHJlbWluZCB5b3Ug
dG8gdGFrZSBhIGxvb2sgYW5kIHNlZSBpZiB0aGVyZSBpcyBpbmRlZWQgYSBwcm9ibGVtLgotCi1T
b21ldGltZXMgeW91IGFyZSBjb25maWRlbnQgdGhhdCB5b3VyIHRlc3RzIGFyZSBjb3JyZWN0IGFu
ZCBtYXkgbm90Ci1hcHByZWNpYXRlIHN1Y2ggZnJpZW5kbHkgbWVzc2FnZXMuIFNvbWUgb3RoZXIg
dGltZXMsIHlvdSBhcmUgZGVidWdnaW5nCi15b3VyIHRlc3RzIG9yIGxlYXJuaW5nIGFib3V0IHRo
ZSBiZWhhdmlvciBvZiB0aGUgY29kZSB5b3UgYXJlIHRlc3RpbmcsCi1hbmQgd2lzaCB5b3UgY291
bGQgb2JzZXJ2ZSBldmVyeSBtb2NrIGNhbGwgdGhhdCBoYXBwZW5zIChpbmNsdWRpbmcKLWFyZ3Vt
ZW50IHZhbHVlcyBhbmQgdGhlIHJldHVybiB2YWx1ZSkuIENsZWFybHksIG9uZSBzaXplIGRvZXNu
J3QgZml0Ci1hbGwuCi0KLVlvdSBjYW4gY29udHJvbCBob3cgbXVjaCBHb29nbGUgTW9jayB0ZWxs
cyB5b3UgdXNpbmcgdGhlCi1gLS1nbW9ja192ZXJib3NlPUxFVkVMYCBjb21tYW5kLWxpbmUgZmxh
Zywgd2hlcmUgYExFVkVMYCBpcyBhIHN0cmluZwotd2l0aCB0aHJlZSBwb3NzaWJsZSB2YWx1ZXM6
Ci0KLSAgKiBgaW5mb2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgYWxsIGluZm9ybWF0aW9uYWwg
bWVzc2FnZXMsIHdhcm5pbmdzLCBhbmQgZXJyb3JzIChtb3N0IHZlcmJvc2UpLiBBdCB0aGlzIHNl
dHRpbmcsIEdvb2dsZSBNb2NrIHdpbGwgYWxzbyBsb2cgYW55IGNhbGxzIHRvIHRoZSBgT05fQ0FM
TC9FWFBFQ1RfQ0FMTGAgbWFjcm9zLgotICAqIGB3YXJuaW5nYDogR29vZ2xlIE1vY2sgd2lsbCBw
cmludCBib3RoIHdhcm5pbmdzIGFuZCBlcnJvcnMgKGxlc3MgdmVyYm9zZSkuIFRoaXMgaXMgdGhl
IGRlZmF1bHQuCi0gICogYGVycm9yYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBlcnJvcnMgb25s
eSAobGVhc3QgdmVyYm9zZSkuCi0KLUFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWRqdXN0IHRoZSB2
YWx1ZSBvZiB0aGF0IGZsYWcgZnJvbSB3aXRoaW4geW91cgotdGVzdHMgbGlrZSBzbzoKLQotYGBg
Ci0gIDo6dGVzdGluZzo6RkxBR1NfZ21vY2tfdmVyYm9zZSA9ICJlcnJvciI7Ci1gYGAKLQotTm93
LCBqdWRpY2lvdXNseSB1c2UgdGhlIHJpZ2h0IGZsYWcgdG8gZW5hYmxlIEdvb2dsZSBNb2NrIHNl
cnZlIHlvdSBiZXR0ZXIhCi0KLSMjIEdhaW5pbmcgU3VwZXIgVmlzaW9uIGludG8gTW9jayBDYWxs
cyAjIwotCi1Zb3UgaGF2ZSBhIHRlc3QgdXNpbmcgR29vZ2xlIE1vY2suIEl0IGZhaWxzOiBHb29n
bGUgTW9jayB0ZWxscyB5b3UKLXRoYXQgc29tZSBleHBlY3RhdGlvbnMgYXJlbid0IHNhdGlzZmll
ZC4gSG93ZXZlciwgeW91IGFyZW4ndCBzdXJlIHdoeToKLUlzIHRoZXJlIGEgdHlwbyBzb21ld2hl
cmUgaW4gdGhlIG1hdGNoZXJzPyBEaWQgeW91IG1lc3MgdXAgdGhlIG9yZGVyCi1vZiB0aGUgYEVY
UEVDVF9DQUxMYHM/IE9yIGlzIHRoZSBjb2RlIHVuZGVyIHRlc3QgZG9pbmcgc29tZXRoaW5nCi13
cm9uZz8gIEhvdyBjYW4geW91IGZpbmQgb3V0IHRoZSBjYXVzZT8KLQotV29uJ3QgaXQgYmUgbmlj
ZSBpZiB5b3UgaGF2ZSBYLXJheSB2aXNpb24gYW5kIGNhbiBhY3R1YWxseSBzZWUgdGhlCi10cmFj
ZSBvZiBhbGwgYEVYUEVDVF9DQUxMYHMgYW5kIG1vY2sgbWV0aG9kIGNhbGxzIGFzIHRoZXkgYXJl
IG1hZGU/Ci1Gb3IgZWFjaCBjYWxsLCB3b3VsZCB5b3UgbGlrZSB0byBzZWUgaXRzIGFjdHVhbCBh
cmd1bWVudCB2YWx1ZXMgYW5kCi13aGljaCBgRVhQRUNUX0NBTExgIEdvb2dsZSBNb2NrIHRoaW5r
cyBpdCBtYXRjaGVzPwotCi1Zb3UgY2FuIHVubG9jayB0aGlzIHBvd2VyIGJ5IHJ1bm5pbmcgeW91
ciB0ZXN0IHdpdGggdGhlCi1gLS1nbW9ja192ZXJib3NlPWluZm9gIGZsYWcuIEZvciBleGFtcGxl
LCBnaXZlbiB0aGUgdGVzdCBwcm9ncmFtOgotCi1gYGAKLXVzaW5nIHRlc3Rpbmc6Ol87Ci11c2lu
ZyB0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci0KLWNsYXNzIE1v
Y2tGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKEYsIHZvaWQoY29uc3Qgc3RyaW5nJiB4
LCBjb25zdCBzdHJpbmcmIHkpKTsKLX07Ci0KLVRFU1QoRm9vLCBCYXIpIHsKLSAgTW9ja0ZvbyBt
b2NrOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGKF8sIF8pKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
KSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEYoImEiLCAiYiIpKTsKLSAgRVhQRUNUX0NBTEwobW9j
aywgRigiYyIsIEhhc1N1YnN0cigiZCIpKSk7Ci0KLSAgbW9jay5GKCJhIiwgImdvb2QiKTsKLSAg
bW9jay5GKCJhIiwgImIiKTsKLX0KLWBgYAotCi1pZiB5b3UgcnVuIGl0IHdpdGggYC0tZ21vY2tf
dmVyYm9zZT1pbmZvYCwgeW91IHdpbGwgc2VlIHRoaXMgb3V0cHV0OgotCi1gYGAKLVsgUlVOICAg
ICAgXSBGb28uQmFyCi0KLWZvb190ZXN0LmNjOjE0OiBFWFBFQ1RfQ0FMTChtb2NrLCBGKF8sIF8p
KSBpbnZva2VkCi1mb29fdGVzdC5jYzoxNTogRVhQRUNUX0NBTEwobW9jaywgRigiYSIsICJiIikp
IGludm9rZWQKLWZvb190ZXN0LmNjOjE2OiBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJjIiwgSGFzU3Vi
c3RyKCJkIikpKSBpbnZva2VkCi1mb29fdGVzdC5jYzoxNDogTW9jayBmdW5jdGlvbiBjYWxsIG1h
dGNoZXMgRVhQRUNUX0NBTEwobW9jaywgRihfLCBfKSkuLi4KLSAgICBGdW5jdGlvbiBjYWxsOiBG
KEAweDdmZmY3YzhkYWQ0MCJhIiwgQDB4N2ZmZjdjOGRhZDEwImdvb2QiKQotZm9vX3Rlc3QuY2M6
MTU6IE1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKG1vY2ssIEYoImEiLCAi
YiIpKS4uLgotICAgIEZ1bmN0aW9uIGNhbGw6IEYoQDB4N2ZmZjdjOGRhZGEwImEiLCBAMHg3ZmZm
N2M4ZGFkNzAiYiIpCi1mb29fdGVzdC5jYzoxNjogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNh
bGwgY291bnQgZG9lc24ndCBtYXRjaCBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJjIiwgSGFzU3Vic3Ry
KCJkIikpKS4uLgotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAg
ICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJ
TEVEICBdIEZvby5CYXIKLWBgYAotCi1TdXBwb3NlIHRoZSBidWcgaXMgdGhhdCB0aGUgYCJjImAg
aW4gdGhlIHRoaXJkIGBFWFBFQ1RfQ0FMTGAgaXMgYSB0eXBvCi1hbmQgc2hvdWxkIGFjdHVhbGx5
IGJlIGAiYSJgLiBXaXRoIHRoZSBhYm92ZSBtZXNzYWdlLCB5b3Ugc2hvdWxkIHNlZQotdGhhdCB0
aGUgYWN0dWFsIGBGKCJhIiwgImdvb2QiKWAgY2FsbCBpcyBtYXRjaGVkIGJ5IHRoZSBmaXJzdAot
YEVYUEVDVF9DQUxMYCwgbm90IHRoZSB0aGlyZCBhcyB5b3UgdGhvdWdodC4gRnJvbSB0aGF0IGl0
IHNob3VsZCBiZQotb2J2aW91cyB0aGF0IHRoZSB0aGlyZCBgRVhQRUNUX0NBTExgIGlzIHdyaXR0
ZW4gd3JvbmcuIENhc2Ugc29sdmVkLgotCi0jIyBSdW5uaW5nIFRlc3RzIGluIEVtYWNzICMjCi0K
LUlmIHlvdSBidWlsZCBhbmQgcnVuIHlvdXIgdGVzdHMgaW4gRW1hY3MsIHRoZSBzb3VyY2UgZmls
ZSBsb2NhdGlvbnMgb2YKLUdvb2dsZSBNb2NrIGFuZCBbR29vZ2xlIFRlc3RdKC4uLy4uL2dvb2ds
ZXRlc3QvKQotZXJyb3JzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxFbnRlcj5g
IG9uIG9uZSBvZiB0aGVtIGFuZAoteW91J2xsIGJlIHRha2VuIHRvIHRoZSBvZmZlbmRpbmcgbGlu
ZS4gT3IsIHlvdSBjYW4ganVzdCB0eXBlIGBDLXggYGAKLXRvIGp1bXAgdG8gdGhlIG5leHQgZXJy
b3IuCi0KLVRvIG1ha2UgaXQgZXZlbiBlYXNpZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xsb3dpbmcg
bGluZXMgdG8geW91cgotYH4vLmVtYWNzYCBmaWxlOgotCi1gYGAKLShnbG9iYWwtc2V0LWtleSAi
XE0tbSIgICAnY29tcGlsZSkgIDsgbSBpcyBmb3IgbWFrZQotKGdsb2JhbC1zZXQta2V5IFtNLWRv
d25dICduZXh0LWVycm9yKQotKGdsb2JhbC1zZXQta2V5IFtNLXVwXSAgICcobGFtYmRhICgpIChp
bnRlcmFjdGl2ZSkgKG5leHQtZXJyb3IgLTEpKSkKLWBgYAotCi1UaGVuIHlvdSBjYW4gdHlwZSBg
TS1tYCB0byBzdGFydCBhIGJ1aWxkLCBvciBgTS11cGAvYE0tZG93bmAgdG8gbW92ZQotYmFjayBh
bmQgZm9ydGggYmV0d2VlbiBlcnJvcnMuCi0KLSMjIEZ1c2luZyBHb29nbGUgTW9jayBTb3VyY2Ug
RmlsZXMgIyMKLQotR29vZ2xlIE1vY2sncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBkb3pl
bnMgb2YgZmlsZXMgKGV4Y2x1ZGluZwotaXRzIG93biB0ZXN0cykuICBTb21ldGltZXMgeW91IG1h
eSB3YW50IHRoZW0gdG8gYmUgcGFja2FnZWQgdXAgaW4KLWZld2VyIGZpbGVzIGluc3RlYWQsIHN1
Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0
YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAot
UHl0aG9uIHNjcmlwdCBgZnVzZV9nbW9ja19maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGly
ZWN0b3J5Ci0oc3RhcnRpbmcgd2l0aCByZWxlYXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlvdSBoYXZl
IFB5dGhvbiAyLjQgb3IgYWJvdmUKLWluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QgZ28g
dG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9nbW9ja19maWxlcy5w
eSBPVVRQVVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBk
aXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAsIGBnbW9j
ay9nbW9jay5oYCwgYW5kIGBnbW9jay1ndGVzdC1hbGwuY2NgIGluIGl0LgotVGhlc2UgdGhyZWUg
ZmlsZXMgY29udGFpbiBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jayAoYW5k
Ci1Hb29nbGUgVGVzdCkuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZSB5b3Ugd2FudCBhbmQg
eW91IGFyZSByZWFkeQotdG8gd3JpdGUgdGVzdHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBjYW4gdXNl
IHRoZQotW3NjcnB0cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpIGZp
bGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzCi1hZ2FpbnN0IHRo
ZW0uCi0KLSMgRXh0ZW5kaW5nIEdvb2dsZSBNb2NrICMKLQotIyMgV3JpdGluZyBOZXcgTWF0Y2hl
cnMgUXVpY2tseSAjIwotCi1UaGUgYE1BVENIRVIqYCBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1
c2VkIHRvIGRlZmluZSBjdXN0b20gbWF0Y2hlcnMKLWVhc2lseS4gIFRoZSBzeW50YXg6Ci0KLWBg
YAotTUFUQ0hFUihuYW1lLCBkZXNjcmlwdGlvbl9zdHJpbmdfZXhwcmVzc2lvbikgeyBzdGF0ZW1l
bnRzOyB9Ci1gYGAKLQotd2lsbCBkZWZpbmUgYSBtYXRjaGVyIHdpdGggdGhlIGdpdmVuIG5hbWUg
dGhhdCBleGVjdXRlcyB0aGUKLXN0YXRlbWVudHMsIHdoaWNoIG11c3QgcmV0dXJuIGEgYGJvb2xg
IHRvIGluZGljYXRlIGlmIHRoZSBtYXRjaAotc3VjY2VlZHMuICBJbnNpZGUgdGhlIHN0YXRlbWVu
dHMsIHlvdSBjYW4gcmVmZXIgdG8gdGhlIHZhbHVlIGJlaW5nCi1tYXRjaGVkIGJ5IGBhcmdgLCBh
bmQgcmVmZXIgdG8gaXRzIHR5cGUgYnkgYGFyZ190eXBlYC4KLQotVGhlIGRlc2NyaXB0aW9uIHN0
cmluZyBpcyBhIGBzdHJpbmdgLXR5cGVkIGV4cHJlc3Npb24gdGhhdCBkb2N1bWVudHMKLXdoYXQg
dGhlIG1hdGNoZXIgZG9lcywgYW5kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGZhaWx1cmUgbWVz
c2FnZQotd2hlbiB0aGUgbWF0Y2ggZmFpbHMuICBJdCBjYW4gKGFuZCBzaG91bGQpIHJlZmVyZW5j
ZSB0aGUgc3BlY2lhbAotYGJvb2xgIHZhcmlhYmxlIGBuZWdhdGlvbmAsIGFuZCBzaG91bGQgZXZh
bHVhdGUgdG8gdGhlIGRlc2NyaXB0aW9uIG9mCi10aGUgbWF0Y2hlciB3aGVuIGBuZWdhdGlvbmAg
aXMgYGZhbHNlYCwgb3IgdGhhdCBvZiB0aGUgbWF0Y2hlcidzCi1uZWdhdGlvbiB3aGVuIGBuZWdh
dGlvbmAgaXMgYHRydWVgLgotCi1Gb3IgY29udmVuaWVuY2UsIHdlIGFsbG93IHRoZSBkZXNjcmlw
dGlvbiBzdHJpbmcgdG8gYmUgZW1wdHkgKGAiImApLAotaW4gd2hpY2ggY2FzZSBHb29nbGUgTW9j
ayB3aWxsIHVzZSB0aGUgc2VxdWVuY2Ugb2Ygd29yZHMgaW4gdGhlCi1tYXRjaGVyIG5hbWUgYXMg
dGhlIGRlc2NyaXB0aW9uLgotCi1Gb3IgZXhhbXBsZToKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJs
ZUJ5NywgIiIpIHsgcmV0dXJuIChhcmcgJSA3KSA9PSAwOyB9Ci1gYGAKLWFsbG93cyB5b3UgdG8g
d3JpdGUKLWBgYAotICAvLyBFeHBlY3RzIG1vY2tfZm9vLkJhcihuKSB0byBiZSBjYWxsZWQgd2hl
cmUgbiBpcyBkaXZpc2libGUgYnkgNy4KLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIEJhcihJc0Rp
dmlzaWJsZUJ5NygpKSk7Ci1gYGAKLW9yLAotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok5vdDsKLS4u
LgotICBFWFBFQ1RfVEhBVChzb21lX2V4cHJlc3Npb24sIElzRGl2aXNpYmxlQnk3KCkpOwotICBF
WFBFQ1RfVEhBVChzb21lX290aGVyX2V4cHJlc3Npb24sIE5vdChJc0RpdmlzaWJsZUJ5NygpKSk7
Ci1gYGAKLUlmIHRoZSBhYm92ZSBhc3NlcnRpb25zIGZhaWwsIHRoZXkgd2lsbCBwcmludCBzb21l
dGhpbmcgbGlrZToKLWBgYAotICBWYWx1ZSBvZjogc29tZV9leHByZXNzaW9uCi0gIEV4cGVjdGVk
OiBpcyBkaXZpc2libGUgYnkgNwotICAgIEFjdHVhbDogMjcKLS4uLgotICBWYWx1ZSBvZjogc29t
ZV9vdGhlcl9leHByZXNzaW9uCi0gIEV4cGVjdGVkOiBub3QgKGlzIGRpdmlzaWJsZSBieSA3KQot
ICAgIEFjdHVhbDogMjEKLWBgYAotd2hlcmUgdGhlIGRlc2NyaXB0aW9ucyBgImlzIGRpdmlzaWJs
ZSBieSA3ImAgYW5kIGAibm90IChpcyBkaXZpc2libGUKLWJ5IDcpImAgYXJlIGF1dG9tYXRpY2Fs
bHkgY2FsY3VsYXRlZCBmcm9tIHRoZSBtYXRjaGVyIG5hbWUKLWBJc0RpdmlzaWJsZUJ5N2AuCi0K
LUFzIHlvdSBtYXkgaGF2ZSBub3RpY2VkLCB0aGUgYXV0by1nZW5lcmF0ZWQgZGVzY3JpcHRpb25z
IChlc3BlY2lhbGx5Ci10aG9zZSBmb3IgdGhlIG5lZ2F0aW9uKSBtYXkgbm90IGJlIHNvIGdyZWF0
LiBZb3UgY2FuIGFsd2F5cyBvdmVycmlkZQotdGhlbSB3aXRoIGEgc3RyaW5nIGV4cHJlc3Npb24g
b2YgeW91ciBvd246Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2libGVCeTcsIHN0ZDo6c3RyaW5nKG5l
Z2F0aW9uID8gImlzbid0IiA6ICJpcyIpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgZGl2
aXNpYmxlIGJ5IDciKSB7Ci0gIHJldHVybiAoYXJnICUgNykgPT0gMDsKLX0KLWBgYAotCi1PcHRp
b25hbGx5LCB5b3UgY2FuIHN0cmVhbSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGEgaGlkZGVu
IGFyZ3VtZW50Ci1uYW1lZCBgcmVzdWx0X2xpc3RlbmVyYCB0byBleHBsYWluIHRoZSBtYXRjaCBy
ZXN1bHQuIEZvciBleGFtcGxlLCBhCi1iZXR0ZXIgZGVmaW5pdGlvbiBvZiBgSXNEaXZpc2libGVC
eTdgIGlzOgotYGBgCi1NQVRDSEVSKElzRGl2aXNpYmxlQnk3LCAiIikgewotICBpZiAoKGFyZyAl
IDcpID09IDApCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgKnJlc3VsdF9saXN0ZW5lciA8PCAidGhl
IHJlbWFpbmRlciBpcyAiIDw8IChhcmcgJSA3KTsKLSAgcmV0dXJuIGZhbHNlOwotfQotYGBgCi0K
LVdpdGggdGhpcyBkZWZpbml0aW9uLCB0aGUgYWJvdmUgYXNzZXJ0aW9uIHdpbGwgZ2l2ZSBhIGJl
dHRlciBtZXNzYWdlOgotYGBgCi0gIFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24KLSAgRXhwZWN0
ZWQ6IGlzIGRpdmlzaWJsZSBieSA3Ci0gICAgQWN0dWFsOiAyNyAodGhlIHJlbWFpbmRlciBpcyA2
KQotYGBgCi0KLVlvdSBzaG91bGQgbGV0IGBNYXRjaEFuZEV4cGxhaW4oKWAgcHJpbnQgX2FueSBh
ZGRpdGlvbmFsIGluZm9ybWF0aW9uXwotdGhhdCBjYW4gaGVscCBhIHVzZXIgdW5kZXJzdGFuZCB0
aGUgbWF0Y2ggcmVzdWx0LiBOb3RlIHRoYXQgaXQgc2hvdWxkCi1leHBsYWluIHdoeSB0aGUgbWF0
Y2ggc3VjY2VlZHMgaW4gY2FzZSBvZiBhIHN1Y2Nlc3MgKHVubGVzcyBpdCdzCi1vYnZpb3VzKSAt
IHRoaXMgaXMgdXNlZnVsIHdoZW4gdGhlIG1hdGNoZXIgaXMgdXNlZCBpbnNpZGUKLWBOb3QoKWAu
IFRoZXJlIGlzIG5vIG5lZWQgdG8gcHJpbnQgdGhlIGFyZ3VtZW50IHZhbHVlIGl0c2VsZiwgYXMK
LUdvb2dsZSBNb2NrIGFscmVhZHkgcHJpbnRzIGl0IGZvciB5b3UuCi0KLSoqTm90ZXM6KioKLQot
ICAxLiBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCAoYGFyZ190eXBlYCkgaXMg
ZGV0ZXJtaW5lZCBieSB0aGUgY29udGV4dCBpbiB3aGljaCB5b3UgdXNlIHRoZSBtYXRjaGVyIGFu
ZCBpcyBzdXBwbGllZCB0byB5b3UgYnkgdGhlIGNvbXBpbGVyLCBzbyB5b3UgZG9uJ3QgbmVlZCB0
byB3b3JyeSBhYm91dCBkZWNsYXJpbmcgaXQgKG5vciBjYW4geW91KS4gIFRoaXMgYWxsb3dzIHRo
ZSBtYXRjaGVyIHRvIGJlIHBvbHltb3JwaGljLiAgRm9yIGV4YW1wbGUsIGBJc0RpdmlzaWJsZUJ5
NygpYCBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbnkgdHlwZSB3aGVyZSB0aGUgdmFsdWUgb2YgYChh
cmcgJSA3KSA9PSAwYCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBgYm9vbGAuICBJ
biB0aGUgYEJhcihJc0RpdmlzaWJsZUJ5NygpKWAgZXhhbXBsZSBhYm92ZSwgaWYgbWV0aG9kIGBC
YXIoKWAgdGFrZXMgYW4gYGludGAsIGBhcmdfdHlwZWAgd2lsbCBiZSBgaW50YDsgaWYgaXQgdGFr
ZXMgYW4gYHVuc2lnbmVkIGxvbmdgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYHVuc2lnbmVkIGxvbmdg
OyBhbmQgc28gb24uCi0gIDEuIEdvb2dsZSBNb2NrIGRvZXNuJ3QgZ3VhcmFudGVlIHdoZW4gb3Ig
aG93IG1hbnkgdGltZXMgYSBtYXRjaGVyIHdpbGwgYmUgaW52b2tlZC4gVGhlcmVmb3JlIHRoZSBt
YXRjaGVyIGxvZ2ljIG11c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5ub3Qg
aGF2ZSBhbnkgc2lkZSBlZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBvbiBh
bnl0aGluZyBvdGhlciB0aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hl
ciBwYXJhbWV0ZXJzKS4gVGhpcyByZXF1aXJlbWVudCBtdXN0IGJlIHNhdGlzZmllZCBubyBtYXR0
ZXIgaG93IHlvdSBkZWZpbmUgdGhlIG1hdGNoZXIgKGUuZy4gdXNpbmcgb25lIG9mIHRoZSBtZXRo
b2RzIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHJlY2lwZXMpLiBJbiBwYXJ0aWN1bGFyLCBh
IG1hdGNoZXIgY2FuIG5ldmVyIGNhbGwgYSBtb2NrIGZ1bmN0aW9uLCBhcyB0aGF0IHdpbGwgYWZm
ZWN0IHRoZSBzdGF0ZSBvZiB0aGUgbW9jayBvYmplY3QgYW5kIEdvb2dsZSBNb2NrLgotCi0jIyBX
cml0aW5nIE5ldyBQYXJhbWV0ZXJpemVkIE1hdGNoZXJzIFF1aWNrbHkgIyMKLQotU29tZXRpbWVz
IHlvdSdsbCB3YW50IHRvIGRlZmluZSBhIG1hdGNoZXIgdGhhdCBoYXMgcGFyYW1ldGVycy4gIEZv
ciB0aGF0IHlvdQotY2FuIHVzZSB0aGUgbWFjcm86Ci1gYGAKLU1BVENIRVJfUChuYW1lLCBwYXJh
bV9uYW1lLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQotYGBgCi13aGVyZSB0
aGUgZGVzY3JpcHRpb24gc3RyaW5nIGNhbiBiZSBlaXRoZXIgYCIiYCBvciBhIHN0cmluZyBleHBy
ZXNzaW9uCi10aGF0IHJlZmVyZW5jZXMgYG5lZ2F0aW9uYCBhbmQgYHBhcmFtX25hbWVgLgotCi1G
b3IgZXhhbXBsZToKLWBgYAotTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlLCAiIikg
eyByZXR1cm4gYWJzKGFyZykgPT0gdmFsdWU7IH0KLWBgYAotd2lsbCBhbGxvdyB5b3UgdG8gd3Jp
dGU6Ci1gYGAKLSAgRVhQRUNUX1RIQVQoQmxhaCgiYSIpLCBIYXNBYnNvbHV0ZVZhbHVlKG4pKTsK
LWBgYAotd2hpY2ggbWF5IGxlYWQgdG8gdGhpcyBtZXNzYWdlIChhc3N1bWluZyBgbmAgaXMgMTAp
OgotYGBgCi0gIFZhbHVlIG9mOiBCbGFoKCJhIikKLSAgRXhwZWN0ZWQ6IGhhcyBhYnNvbHV0ZSB2
YWx1ZSAxMAotICAgIEFjdHVhbDogLTkKLWBgYAotCi1Ob3RlIHRoYXQgYm90aCB0aGUgbWF0Y2hl
ciBkZXNjcmlwdGlvbiBhbmQgaXRzIHBhcmFtZXRlciBhcmUKLXByaW50ZWQsIG1ha2luZyB0aGUg
bWVzc2FnZSBodW1hbi1mcmllbmRseS4KLQotSW4gdGhlIG1hdGNoZXIgZGVmaW5pdGlvbiBib2R5
LCB5b3UgY2FuIHdyaXRlIGBmb29fdHlwZWAgdG8KLXJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBh
cmFtZXRlciBuYW1lZCBgZm9vYC4gIEZvciBleGFtcGxlLCBpbiB0aGUKLWJvZHkgb2YgYE1BVENI
RVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSlgIGFib3ZlLCB5b3UgY2FuIHdyaXRlCi1gdmFs
dWVfdHlwZWAgdG8gcmVmZXIgdG8gdGhlIHR5cGUgb2YgYHZhbHVlYC4KLQotR29vZ2xlIE1vY2sg
YWxzbyBwcm92aWRlcyBgTUFUQ0hFUl9QMmAsIGBNQVRDSEVSX1AzYCwgLi4uLCB1cCB0bwotYE1B
VENIRVJfUDEwYCB0byBzdXBwb3J0IG11bHRpLXBhcmFtZXRlciBtYXRjaGVyczoKLWBgYAotTUFU
Q0hFUl9QayhuYW1lLCBwYXJhbV8xLCAuLi4sIHBhcmFtX2ssIGRlc2NyaXB0aW9uX3N0cmluZykg
eyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLQotUGxlYXNlIG5vdGUgdGhhdCB0aGUgY3VzdG9tIGRlc2Ny
aXB0aW9uIHN0cmluZyBpcyBmb3IgYSBwYXJ0aWN1bGFyCi0qKmluc3RhbmNlKiogb2YgdGhlIG1h
dGNoZXIsIHdoZXJlIHRoZSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBib3VuZCB0bwotYWN0dWFsIHZh
bHVlcy4gIFRoZXJlZm9yZSB1c3VhbGx5IHlvdSdsbCB3YW50IHRoZSBwYXJhbWV0ZXIgdmFsdWVz
IHRvCi1iZSBwYXJ0IG9mIHRoZSBkZXNjcmlwdGlvbi4gIEdvb2dsZSBNb2NrIGxldHMgeW91IGRv
IHRoYXQgYnkKLXJlZmVyZW5jaW5nIHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMgaW4gdGhlIGRlc2Ny
aXB0aW9uIHN0cmluZwotZXhwcmVzc2lvbi4KLQotRm9yIGV4YW1wbGUsCi1gYGAKLSAgdXNpbmcg
Ojp0ZXN0aW5nOjpQcmludFRvU3RyaW5nOwotICBNQVRDSEVSX1AyKEluQ2xvc2VkUmFuZ2UsIGxv
dywgaGksCi0gICAgICAgICAgICAgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlz
IikgKyAiIGluIHJhbmdlIFsiICsKLSAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxvdykgKyAi
LCAiICsgUHJpbnRUb1N0cmluZyhoaSkgKyAiXSIpIHsKLSAgICByZXR1cm4gbG93IDw9IGFyZyAm
JiBhcmcgPD0gaGk7Ci0gIH0KLSAgLi4uCi0gIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2Uo
NCwgNikpOwotYGBgCi13b3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUgdGhhdCBjb250YWlucyB0aGUg
bWVzc2FnZToKLWBgYAotICBFeHBlY3RlZDogaXMgaW4gcmFuZ2UgWzQsIDZdCi1gYGAKLQotSWYg
eW91IHNwZWNpZnkgYCIiYCBhcyB0aGUgZGVzY3JpcHRpb24sIHRoZSBmYWlsdXJlIG1lc3NhZ2Ug
d2lsbAotY29udGFpbiB0aGUgc2VxdWVuY2Ugb2Ygd29yZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBm
b2xsb3dlZCBieSB0aGUKLXBhcmFtZXRlciB2YWx1ZXMgcHJpbnRlZCBhcyBhIHR1cGxlLiAgRm9y
IGV4YW1wbGUsCi1gYGAKLSAgTUFUQ0hFUl9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLCAiIikg
eyAuLi4gfQotICAuLi4KLSAgRVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci1g
YGAKLXdvdWxkIGdlbmVyYXRlIGEgZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSB0ZXh0OgotYGBg
Ci0gIEV4cGVjdGVkOiBpbiBjbG9zZWQgcmFuZ2UgKDQsIDYpCi1gYGAKLQotRm9yIHRoZSBwdXJw
b3NlIG9mIHR5cGluZywgeW91IGNhbiB2aWV3Ci1gYGAKLU1BVENIRVJfUGsoRm9vLCBwMSwgLi4u
LCBwaywgZGVzY3JpcHRpb25fc3RyaW5nKSB7IC4uLiB9Ci1gYGAKLWFzIHNob3J0aGFuZCBmb3IK
LWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIHAxX3R5cGUsIC4uLiwgdHlwZW5hbWUgcGtfdHlwZT4K
LUZvb01hdGNoZXJQazxwMV90eXBlLCAuLi4sIHBrX3R5cGU+Ci1Gb28ocDFfdHlwZSBwMSwgLi4u
LCBwa190eXBlIHBrKSB7IC4uLiB9Ci1gYGAKLQotV2hlbiB5b3Ugd3JpdGUgYEZvbyh2MSwgLi4u
LCB2aylgLCB0aGUgY29tcGlsZXIgaW5mZXJzIHRoZSB0eXBlcyBvZgotdGhlIHBhcmFtZXRlcnMg
YHYxYCwgLi4uLCBhbmQgYHZrYCBmb3IgeW91LiAgSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aAot
dGhlIHJlc3VsdCBvZiB0aGUgdHlwZSBpbmZlcmVuY2UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgdHlw
ZXMgYnkKLWV4cGxpY2l0bHkgaW5zdGFudGlhdGluZyB0aGUgdGVtcGxhdGUsIGFzIGluIGBGb288
bG9uZywgYm9vbD4oNSwgZmFsc2UpYC4KLUFzIHNhaWQgZWFybGllciwgeW91IGRvbid0IGdldCB0
byAob3IgbmVlZCB0bykgc3BlY2lmeQotYGFyZ190eXBlYCBhcyB0aGF0J3MgZGV0ZXJtaW5lZCBi
eSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGUgbWF0Y2hlcgotaXMgdXNlZC4KLQotWW91IGNhbiBh
c3NpZ24gdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBhCi12
YXJpYWJsZSBvZiB0eXBlIGBGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPmAuICBU
aGlzIGNhbiBiZQotdXNlZnVsIHdoZW4gY29tcG9zaW5nIG1hdGNoZXJzLiAgTWF0Y2hlcnMgdGhh
dCBkb24ndCBoYXZlIGEgcGFyYW1ldGVyCi1vciBoYXZlIG9ubHkgb25lIHBhcmFtZXRlciBoYXZl
IHNwZWNpYWwgdHlwZXM6IHlvdSBjYW4gYXNzaWduIGBGb28oKWAKLXRvIGEgYEZvb01hdGNoZXJg
LXR5cGVkIHZhcmlhYmxlLCBhbmQgYXNzaWduIGBGb28ocClgIHRvIGEKLWBGb29NYXRjaGVyUDxw
X3R5cGU+YC10eXBlZCB2YXJpYWJsZS4KLQotV2hpbGUgeW91IGNhbiBpbnN0YW50aWF0ZSBhIG1h
dGNoZXIgdGVtcGxhdGUgd2l0aCByZWZlcmVuY2UgdHlwZXMsCi1wYXNzaW5nIHRoZSBwYXJhbWV0
ZXJzIGJ5IHBvaW50ZXIgdXN1YWxseSBtYWtlcyB5b3VyIGNvZGUgbW9yZQotcmVhZGFibGUuICBJ
ZiwgaG93ZXZlciwgeW91IHN0aWxsIHdhbnQgdG8gcGFzcyBhIHBhcmFtZXRlciBieQotcmVmZXJl
bmNlLCBiZSBhd2FyZSB0aGF0IGluIHRoZSBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRo
ZQotbWF0Y2hlciB5b3Ugd2lsbCBzZWUgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVj
dCBidXQgbm90IGl0cwotYWRkcmVzcy4KLQotWW91IGNhbiBvdmVybG9hZCBtYXRjaGVycyB3aXRo
IGRpZmZlcmVudCBudW1iZXJzIG9mIHBhcmFtZXRlcnM6Ci1gYGAKLU1BVENIRVJfUChCbGFoLCBh
LCBkZXNjcmlwdGlvbl9zdHJpbmdfMSkgeyAuLi4gfQotTUFUQ0hFUl9QMihCbGFoLCBhLCBiLCBk
ZXNjcmlwdGlvbl9zdHJpbmdfMikgeyAuLi4gfQotYGBgCi0KLVdoaWxlIGl0J3MgdGVtcHRpbmcg
dG8gYWx3YXlzIHVzZSB0aGUgYE1BVENIRVIqYCBtYWNyb3Mgd2hlbiBkZWZpbmluZwotYSBuZXcg
bWF0Y2hlciwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxlbWVudGluZwotYE1hdGNoZXJJ
bnRlcmZhY2VgIG9yIHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgIGluc3RlYWQgKHNl
ZQotdGhlIHJlY2lwZXMgdGhhdCBmb2xsb3cpLCBlc3BlY2lhbGx5IGlmIHlvdSBuZWVkIHRvIHVz
ZSB0aGUgbWF0Y2hlciBhCi1sb3QuICBXaGlsZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9y
ZSB3b3JrLCB0aGV5IGdpdmUgeW91IG1vcmUKLWNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSB2
YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hlcgotcGFyYW1ldGVycywgd2hpY2ggaW4g
Z2VuZXJhbCBsZWFkcyB0byBiZXR0ZXIgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMKLXRoYXQgcGF5
IG9mZiBpbiB0aGUgbG9uZyBydW4uICBUaGV5IGFsc28gYWxsb3cgb3ZlcmxvYWRpbmcgbWF0Y2hl
cnMKLWJhc2VkIG9uIHBhcmFtZXRlciB0eXBlcyAoYXMgb3Bwb3NlZCB0byBqdXN0IGJhc2VkIG9u
IHRoZSBudW1iZXIgb2YKLXBhcmFtZXRlcnMpLgotCi0jIyBXcml0aW5nIE5ldyBNb25vbW9ycGhp
YyBNYXRjaGVycyAjIwotCi1BIG1hdGNoZXIgb2YgYXJndW1lbnQgdHlwZSBgVGAgaW1wbGVtZW50
cwotYDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTxUPmAgYW5kIGRvZXMgdHdvIHRoaW5nczog
aXQgdGVzdHMgd2hldGhlciBhCi12YWx1ZSBvZiB0eXBlIGBUYCBtYXRjaGVzIHRoZSBtYXRjaGVy
LCBhbmQgY2FuIGRlc2NyaWJlIHdoYXQga2luZCBvZgotdmFsdWVzIGl0IG1hdGNoZXMuIFRoZSBs
YXR0ZXIgYWJpbGl0eSBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIHJlYWRhYmxlCi1lcnJvciBtZXNz
YWdlcyB3aGVuIGV4cGVjdGF0aW9ucyBhcmUgdmlvbGF0ZWQuCi0KLVRoZSBpbnRlcmZhY2UgbG9v
a3MgbGlrZSB0aGlzOgotCi1gYGAKLWNsYXNzIE1hdGNoUmVzdWx0TGlzdGVuZXIgewotIHB1Ymxp
YzoKLSAgLi4uCi0gIC8vIFN0cmVhbXMgeCB0byB0aGUgdW5kZXJseWluZyBvc3RyZWFtOyBkb2Vz
IG5vdGhpbmcgaWYgdGhlIG9zdHJlYW0KLSAgLy8gaXMgTlVMTC4KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci0gIE1hdGNoUmVzdWx0TGlzdGVuZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgeCk7Ci0K
LSAgLy8gUmV0dXJucyB0aGUgdW5kZXJseWluZyBvc3RyZWFtLgotICA6OnN0ZDo6b3N0cmVhbSog
c3RyZWFtKCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXJJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+TWF0Y2hlckludGVyZmFjZSgpOwotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIG1hdGNoZXIgbWF0Y2hlcyB4OyBhbHNvIGV4cGxhaW5zIHRo
ZSBtYXRjaAotICAvLyByZXN1bHQgdG8gJ2xpc3RlbmVyJy4KLSAgdmlydHVhbCBib29sIE1hdGNo
QW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCA9IDA7
Ci0KLSAgLy8gRGVzY3JpYmVzIHRoaXMgbWF0Y2hlciB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLQotICAvLyBE
ZXNjcmliZXMgdGhlIG5lZ2F0aW9uIG9mIHRoaXMgbWF0Y2hlciB0byBhbiBvc3RyZWFtLgotICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7
Ci19OwotYGBgCi0KLUlmIHlvdSBuZWVkIGEgY3VzdG9tIG1hdGNoZXIgYnV0IGBUcnVseSgpYCBp
cyBub3QgYSBnb29kIG9wdGlvbiAoZm9yCi1leGFtcGxlLCB5b3UgbWF5IG5vdCBiZSBoYXBweSB3
aXRoIHRoZSB3YXkgYFRydWx5KHByZWRpY2F0ZSlgCi1kZXNjcmliZXMgaXRzZWxmLCBvciB5b3Ug
bWF5IHdhbnQgeW91ciBtYXRjaGVyIHRvIGJlIHBvbHltb3JwaGljIGFzCi1gRXEodmFsdWUpYCBp
cyksIHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byBkbyB3aGF0ZXZlciB5b3Ugd2FudCBpbgot
dHdvIHN0ZXBzOiBmaXJzdCBpbXBsZW1lbnQgdGhlIG1hdGNoZXIgaW50ZXJmYWNlLCBhbmQgdGhl
biBkZWZpbmUgYQotZmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBtYXRjaGVyIGluc3RhbmNl
LiBUaGUgc2Vjb25kIHN0ZXAgaXMgbm90Ci1zdHJpY3RseSBuZWVkZWQgYnV0IGl0IG1ha2VzIHRo
ZSBzeW50YXggb2YgdXNpbmcgdGhlIG1hdGNoZXIgbmljZXIuCi0KLUZvciBleGFtcGxlLCB5b3Ug
Y2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gdGVzdCB3aGV0aGVyIGFuIGBpbnRgIGlzCi1kaXZpc2li
bGUgYnkgNyBhbmQgdGhlbiB1c2UgaXQgbGlrZSB0aGlzOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ok1ha2VNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5n
OjpNYXRjaGVySW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVy
OwotCi1jbGFzcyBEaXZpc2libGVCeTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8
aW50PiB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBuLCBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiAobiAlIDcp
ID09IDA7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGRpdmlzaWJsZSBieSA3IjsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7
Ci0gICAgKm9zIDw8ICJpcyBub3QgZGl2aXNpYmxlIGJ5IDciOwotICB9Ci19OwotCi1pbmxpbmUg
TWF0Y2hlcjxpbnQ+IERpdmlzaWJsZUJ5NygpIHsKLSAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBE
aXZpc2libGVCeTdNYXRjaGVyKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKERp
dmlzaWJsZUJ5NygpKSk7Ci1gYGAKLQotWW91IG1heSBpbXByb3ZlIHRoZSBtYXRjaGVyIG1lc3Nh
Z2UgYnkgc3RyZWFtaW5nIGFkZGl0aW9uYWwKLWluZm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJg
IGFyZ3VtZW50IGluIGBNYXRjaEFuZEV4cGxhaW4oKWA6Ci0KLWBgYAotY2xhc3MgRGl2aXNpYmxl
Qnk3TWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAg
dmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihpbnQgbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIGNv
bnN0IGludCByZW1haW5kZXIgPSBuICUgNzsKLSAgICBpZiAocmVtYWluZGVyICE9IDApIHsKLSAg
ICAgICpsaXN0ZW5lciA8PCAidGhlIHJlbWFpbmRlciBpcyAiIDw8IHJlbWFpbmRlcjsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlbWFpbmRlciA9PSAwOwotICB9Ci0gIC4uLgotfTsKLWBgYAotCi1UaGVu
LCBgRVhQRUNUX1RIQVQoeCwgRGl2aXNpYmxlQnk3KCkpO2AgbWF5IGdlbmVyYWwgYSBtZXNzYWdl
IGxpa2UgdGhpczoKLWBgYAotVmFsdWUgb2Y6IHgKLUV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkg
NwotICBBY3R1YWw6IDIzICh0aGUgcmVtYWluZGVyIGlzIDIpCi1gYGAKLQotIyMgV3JpdGluZyBO
ZXcgUG9seW1vcnBoaWMgTWF0Y2hlcnMgIyMKLQotWW91J3ZlIGxlYXJuZWQgaG93IHRvIHdyaXRl
IHlvdXIgb3duIG1hdGNoZXJzIGluIHRoZSBwcmV2aW91cwotcmVjaXBlLiBKdXN0IG9uZSBwcm9i
bGVtOiBhIG1hdGNoZXIgY3JlYXRlZCB1c2luZyBgTWFrZU1hdGNoZXIoKWAgb25seQotd29ya3Mg
Zm9yIG9uZSBwYXJ0aWN1bGFyIHR5cGUgb2YgYXJndW1lbnRzLiBJZiB5b3Ugd2FudCBhCi1fcG9s
eW1vcnBoaWNfIG1hdGNoZXIgdGhhdCB3b3JrcyB3aXRoIGFyZ3VtZW50cyBvZiBzZXZlcmFsIHR5
cGVzIChmb3IKLWluc3RhbmNlLCBgRXEoeClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGEgYHZhbHVl
YCBhcyBsb25nIGFzIGB2YWx1ZWAgPT0KLWB4YCBjb21waWxlcyAtLSBgdmFsdWVgIGFuZCBgeGAg
ZG9uJ3QgaGF2ZSB0byBzaGFyZSB0aGUgc2FtZSB0eXBlKSwKLXlvdSBjYW4gbGVhcm4gdGhlIHRy
aWNrIGZyb20gYCJnbW9jay9nbW9jay1tYXRjaGVycy5oImAgYnV0IGl0J3MgYSBiaXQKLWludm9s
dmVkLgotCi1Gb3J0dW5hdGVseSwgbW9zdCBvZiB0aGUgdGltZSB5b3UgY2FuIGRlZmluZSBhIHBv
bHltb3JwaGljIG1hdGNoZXIKLWVhc2lseSB3aXRoIHRoZSBoZWxwIG9mIGBNYWtlUG9seW1vcnBo
aWNNYXRjaGVyKClgLiBIZXJlJ3MgaG93IHlvdSBjYW4KLWRlZmluZSBgTm90TnVsbCgpYCBhcyBh
biBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hl
cjsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLXVzaW5nIDo6dGVzdGlu
Zzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGluZzo6UG9seW1vcnBoaWNNYXRjaGVyOwotCi1jbGFz
cyBOb3ROdWxsTWF0Y2hlciB7Ci0gcHVibGljOgotICAvLyBUbyBpbXBsZW1lbnQgYSBwb2x5bW9y
cGhpYyBtYXRjaGVyLCBmaXJzdCBkZWZpbmUgYSBDT1BZQUJMRSBjbGFzcwotICAvLyB0aGF0IGhh
cyB0aHJlZSBtZW1iZXJzIE1hdGNoQW5kRXhwbGFpbigpLCBEZXNjcmliZVRvKCksIGFuZAotICAv
LyBEZXNjcmliZU5lZ2F0aW9uVG8oKSwgbGlrZSB0aGUgZm9sbG93aW5nLgotCi0gIC8vIEluIHRo
aXMgZXhhbXBsZSwgd2Ugd2FudCB0byB1c2UgTm90TnVsbCgpIHdpdGggYW55IHBvaW50ZXIsIHNv
Ci0gIC8vIE1hdGNoQW5kRXhwbGFpbigpIGFjY2VwdHMgYSBwb2ludGVyIG9mIGFueSB0eXBlIGFz
IGl0cyBmaXJzdCBhcmd1bWVudC4KLSAgLy8gSW4gZ2VuZXJhbCwgeW91IGNhbiBkZWZpbmUgTWF0
Y2hBbmRFeHBsYWluKCkgYXMgYW4gb3JkaW5hcnkgbWV0aG9kIG9yCi0gIC8vIGEgbWV0aG9kIHRl
bXBsYXRlLCBvciBldmVuIG92ZXJsb2FkIGl0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oVCogcCwKLSAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKLSAgICByZXR1cm4gcCAhPSBO
VUxMOwotICB9Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIG1hdGNo
aW5nIHRoaXMgbWF0Y2hlci4KLSAgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgeyAqb3MgPDwgImlzIG5vdCBOVUxMIjsgfQotCi0gIC8vIERlc2NyaWJlcyB0aGUgcHJv
cGVydHkgb2YgYSB2YWx1ZSBOT1QgbWF0Y2hpbmcgdGhpcyBtYXRjaGVyLgotICB2b2lkIERlc2Ny
aWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBOVUxM
IjsgfQotfTsKLQotLy8gVG8gY29uc3RydWN0IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgcGFzcyBh
biBpbnN0YW5jZSBvZiB0aGUgY2xhc3MKLS8vIHRvIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKS4g
IE5vdGUgdGhlIHJldHVybiB0eXBlLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxOb3ROdWxs
TWF0Y2hlcj4gTm90TnVsbCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTm90
TnVsbE1hdGNoZXIoKSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihOb3ROdWxs
KCkpKTsgIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbm9uLU5VTEwgcG9pbnRlci4KLWBgYAot
Ci0qKk5vdGU6KiogWW91ciBwb2x5bW9ycGhpYyBtYXRjaGVyIGNsYXNzIGRvZXMgKipub3QqKiBu
ZWVkIHRvIGluaGVyaXQgZnJvbQotYE1hdGNoZXJJbnRlcmZhY2VgIG9yIGFueSBvdGhlciBjbGFz
cywgYW5kIGl0cyBtZXRob2RzIGRvICoqbm90KiogbmVlZAotdG8gYmUgdmlydHVhbC4KLQotTGlr
ZSBpbiBhIG1vbm9tb3JwaGljIG1hdGNoZXIsIHlvdSBtYXkgZXhwbGFpbiB0aGUgbWF0Y2ggcmVz
dWx0IGJ5Ci1zdHJlYW1pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byB0aGUgYGxpc3RlbmVy
YCBhcmd1bWVudCBpbgotYE1hdGNoQW5kRXhwbGFpbigpYC4KLQotIyMgV3JpdGluZyBOZXcgQ2Fy
ZGluYWxpdGllcyAjIwotCi1BIGNhcmRpbmFsaXR5IGlzIHVzZWQgaW4gYFRpbWVzKClgIHRvIHRl
bGwgR29vZ2xlIE1vY2sgaG93IG1hbnkgdGltZXMKLXlvdSBleHBlY3QgYSBjYWxsIHRvIG9jY3Vy
LiBJdCBkb2Vzbid0IGhhdmUgdG8gYmUgZXhhY3QuIEZvciBleGFtcGxlLAoteW91IGNhbiBzYXkg
YEF0TGVhc3QoNSlgIG9yIGBCZXR3ZWVuKDIsIDQpYC4KLQotSWYgdGhlIGJ1aWx0LWluIHNldCBv
ZiBjYXJkaW5hbGl0aWVzIGRvZXNuJ3Qgc3VpdCB5b3UsIHlvdSBhcmUgZnJlZSB0bwotZGVmaW5l
IHlvdXIgb3duIGJ5IGltcGxlbWVudGluZyB0aGUgZm9sbG93aW5nIGludGVyZmFjZSAoaW4gbmFt
ZXNwYWNlCi1gdGVzdGluZ2ApOgotCi1gYGAKLWNsYXNzIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkNhcmRpbmFsaXR5SW50ZXJmYWNlKCk7Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRpbmFs
aXR5LgotICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3Vu
dCkgY29uc3QgPSAwOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3
aWxsIHNhdHVyYXRlIHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdHVyYXRl
ZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gRGVzY3JpYmVz
IHNlbGYgdG8gYW4gb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCA9IDA7Ci19OwotYGBgCi0KLUZvciBleGFtcGxlLCB0byBzcGVjaWZ5
IHRoYXQgYSBjYWxsIG11c3Qgb2NjdXIgZXZlbiBudW1iZXIgb2YgdGltZXMsCi15b3UgY2FuIHdy
aXRlCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpDYXJkaW5hbGl0eTsKLXVzaW5nIDo6dGVzdGlu
Zzo6Q2FyZGluYWxpdHlJbnRlcmZhY2U7Ci11c2luZyA6OnRlc3Rpbmc6Ok1ha2VDYXJkaW5hbGl0
eTsKLQotY2xhc3MgRXZlbk51bWJlckNhcmRpbmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50
KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAgcmV0dXJuIChjYWxsX2NvdW50ICUgMikgPT0g
MDsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBJc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxs
X2NvdW50KSBjb25zdCB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJjYWxs
ZWQgZXZlbiBudW1iZXIgb2YgdGltZXMiOwotICB9Ci19OwotCi1DYXJkaW5hbGl0eSBFdmVuTnVt
YmVyKCkgewotICByZXR1cm4gTWFrZUNhcmRpbmFsaXR5KG5ldyBFdmVuTnVtYmVyQ2FyZGluYWxp
dHkpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoMykpCi0gICAgICAuVGltZXMo
RXZlbk51bWJlcigpKTsKLWBgYAotCi0jIyBXcml0aW5nIE5ldyBBY3Rpb25zIFF1aWNrbHkgIyMK
LQotSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMgZG9uJ3Qgd29yayBmb3IgeW91LCBhbmQgeW91IGZp
bmQgaXQKLWluY29udmVuaWVudCB0byB1c2UgYEludm9rZSgpYCwgeW91IGNhbiB1c2UgYSBtYWNy
byBmcm9tIHRoZSBgQUNUSU9OKmAKLWZhbWlseSB0byBxdWlja2x5IGRlZmluZSBhIG5ldyBhY3Rp
b24gdGhhdCBjYW4gYmUgdXNlZCBpbiB5b3VyIGNvZGUgYXMKLWlmIGl0J3MgYSBidWlsdC1pbiBh
Y3Rpb24uCi0KLUJ5IHdyaXRpbmcKLWBgYAotQUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQot
YGBgCi1pbiBhIG5hbWVzcGFjZSBzY29wZSAoaS5lLiBub3QgaW5zaWRlIGEgY2xhc3Mgb3IgZnVu
Y3Rpb24pLCB5b3Ugd2lsbAotZGVmaW5lIGFuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIHRo
YXQgZXhlY3V0ZXMgdGhlIHN0YXRlbWVudHMuCi1UaGUgdmFsdWUgcmV0dXJuZWQgYnkgYHN0YXRl
bWVudHNgIHdpbGwgYmUgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mCi10aGUgYWN0aW9uLiAg
SW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSBLLXRoCi0oMC1iYXNl
ZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYGFyZ0tgLiAgRm9yIGV4YW1wbGU6
Ci1gYGAKLUFDVElPTihJbmNyZW1lbnRBcmcxKSB7IHJldHVybiArKygqYXJnMSk7IH0KLWBgYAot
YWxsb3dzIHlvdSB0byB3cml0ZQotYGBgCi0uLi4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsK
LWBgYAotCi1Ob3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2Yg
dGhlIG1vY2sgZnVuY3Rpb24KLWFyZ3VtZW50cy4gIFJlc3QgYXNzdXJlZCB0aGF0IHlvdXIgY29k
ZSBpcyB0eXBlLXNhZmUgdGhvdWdoOgoteW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIGAq
YXJnMWAgZG9lc24ndCBzdXBwb3J0IHRoZSBgKytgCi1vcGVyYXRvciwgb3IgaWYgdGhlIHR5cGUg
b2YgYCsrKCphcmcxKWAgaXNuJ3QgY29tcGF0aWJsZSB3aXRoIHRoZSBtb2NrCi1mdW5jdGlvbidz
IHJldHVybiB0eXBlLgotCi1Bbm90aGVyIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28pIHsKLSAg
KCphcmcyKSg1KTsKLSAgQmxhaCgpOwotICAqYXJnMSA9IDA7Ci0gIHJldHVybiBhcmcwOwotfQot
YGBgCi1kZWZpbmVzIGFuIGFjdGlvbiBgRm9vKClgIHRoYXQgaW52b2tlcyBhcmd1bWVudCAjMiAo
YSBmdW5jdGlvbiBwb2ludGVyKQotd2l0aCA1LCBjYWxscyBmdW5jdGlvbiBgQmxhaCgpYCwgc2V0
cyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBhcmd1bWVudAotIzEgdG8gMCwgYW5kIHJldHVybnMg
YXJndW1lbnQgIzAuCi0KLUZvciBtb3JlIGNvbnZlbmllbmNlIGFuZCBmbGV4aWJpbGl0eSwgeW91
IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5nCi1wcmUtZGVmaW5lZCBzeW1ib2xzIGluIHRoZSBi
b2R5IG9mIGBBQ1RJT05gOgotCi18IGBhcmdLX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIEstdGgg
KDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHwKLXw6LS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfCBgYXJnc2AgICAgICB8IEFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rp
b24gYXMgYSB0dXBsZSAgICAgICAgICAgICAgICB8Ci18IGBhcmdzX3R5cGVgIHwgVGhlIHR5cGUg
b2YgYWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgIHwKLXwg
YHJldHVybl90eXBlYCB8IFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICB8Ci18IGBmdW5jdGlvbl90eXBlYCB8IFRoZSB0eXBlIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLUZvciBl
eGFtcGxlLCB3aGVuIHVzaW5nIGFuIGBBQ1RJT05gIGFzIGEgc3R1YiBhY3Rpb24gZm9yIG1vY2sg
ZnVuY3Rpb246Ci1gYGAKLWludCBEb1NvbWV0aGluZyhib29sIGZsYWcsIGludCogcHRyKTsKLWBg
YAotd2UgaGF2ZToKLXwgKipQcmUtZGVmaW5lZCBTeW1ib2wqKiB8ICoqSXMgQm91bmQgVG8qKiB8
Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tfAotfCBgYXJnMGAg
ICAgICAgICAgICAgICAgIHwgdGhlIHZhbHVlIG9mIGBmbGFnYCB8Ci18IGBhcmcwX3R5cGVgICAg
ICAgICAgICAgfCB0aGUgdHlwZSBgYm9vbGAgfAotfCBgYXJnMWAgICAgICAgICAgICAgICAgIHwg
dGhlIHZhbHVlIG9mIGBwdHJgIHwKLXwgYGFyZzFfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBl
IGBpbnQqYCB8Ci18IGBhcmdzYCAgICAgICAgICAgICAgICAgfCB0aGUgdHVwbGUgYChmbGFnLCBw
dHIpYCB8Ci18IGBhcmdzX3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBgOjp0ZXN0aW5nOjp0
dXBsZTxib29sLCBpbnQqPmAgfAotfCBgcmV0dXJuX3R5cGVgICAgICAgICAgIHwgdGhlIHR5cGUg
YGludGAgIHwKLXwgYGZ1bmN0aW9uX3R5cGVgICAgICAgICB8IHRoZSB0eXBlIGBpbnQoYm9vbCwg
aW50KilgIHwKLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBBY3Rpb25zIFF1aWNrbHkg
IyMKLQotU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSBhbiBhY3Rpb24geW91
IGRlZmluZS4gIEZvciB0aGF0Ci13ZSBoYXZlIGFub3RoZXIgbWFjcm8KLWBgYAotQUNUSU9OX1Ao
bmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLUZvciBleGFtcGxlLAotYGBgCi1B
Q1RJT05fUChBZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci1gYGAKLXdpbGwgYWxsb3cgeW91
IHRvIHdyaXRlCi1gYGAKLS8vIFJldHVybnMgYXJndW1lbnQgIzAgKyA1LgotLi4uIFdpbGxPbmNl
KEFkZCg1KSk7Ci1gYGAKLQotRm9yIGNvbnZlbmllbmNlLCB3ZSB1c2UgdGhlIHRlcm0gX2FyZ3Vt
ZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNlZCB0bwotaW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9uLCBh
bmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNfIGZvciB0aGUgdmFsdWVzCi11c2VkIHRvIGluc3RhbnRp
YXRlIGFuIGFjdGlvbi4KLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHByb3ZpZGUgdGhl
IHR5cGUgb2YgdGhlIHBhcmFtZXRlciBlaXRoZXIuCi1TdXBwb3NlIHRoZSBwYXJhbWV0ZXIgaXMg
bmFtZWQgYHBhcmFtYCwgeW91IGNhbiBhbHNvIHVzZSB0aGUKLUdvb2dsZS1Nb2NrLWRlZmluZWQg
c3ltYm9sIGBwYXJhbV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiB0aGUKLXBhcmFtZXRl
ciBhcyBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGJvZHkg
b2YKLWBBQ1RJT05fUChBZGQsIG4pYCBhYm92ZSwgeW91IGNhbiB3cml0ZSBgbl90eXBlYCBmb3Ig
dGhlIHR5cGUgb2YgYG5gLgotCi1Hb29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBBQ1RJT05fUDJg
LCBgQUNUSU9OX1AzYCwgYW5kIGV0YyB0byBzdXBwb3J0Ci1tdWx0aS1wYXJhbWV0ZXIgYWN0aW9u
cy4gIEZvciBleGFtcGxlLAotYGBgCi1BQ1RJT05fUDIoUmV0dXJuRGlzdGFuY2VUbywgeCwgeSkg
ewotICBkb3VibGUgZHggPSBhcmcwIC0geDsKLSAgZG91YmxlIGR5ID0gYXJnMSAtIHk7Ci0gIHJl
dHVybiBzcXJ0KGR4KmR4ICsgZHkqZHkpOwotfQotYGBgCi1sZXRzIHlvdSB3cml0ZQotYGBgCi0u
Li4gV2lsbE9uY2UoUmV0dXJuRGlzdGFuY2VUbyg1LjAsIDI2LjUpKTsKLWBgYAotCi1Zb3UgY2Fu
IHZpZXcgYEFDVElPTmAgYXMgYSBkZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVkIGFjdGlvbiB3aGVy
ZSB0aGUKLW51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIDAuCi0KLVlvdSBjYW4gYWxzbyBlYXNpbHkg
ZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnM6Ci1g
YGAKLUFDVElPTl9QKFBsdXMsIGEpIHsgLi4uIH0KLUFDVElPTl9QMihQbHVzLCBhLCBiKSB7IC4u
LiB9Ci1gYGAKLQotIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJndW1lbnQgb3IgUGFy
YW1ldGVyIGluIGFuIEFDVElPTiAjIwotCi1Gb3IgbWF4aW11bSBicmV2aXR5IGFuZCByZXVzYWJp
bGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgYXNrCi15b3UgdG8gcHJvdmlkZSB0aGUg
dHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uCi1wYXJh
bWV0ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUgdHlwZXMgZm9y
IHVzLgotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1vcmUgZXhwbGlj
aXQgYWJvdXQgdGhlIHR5cGVzLgotVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRvIGRvIHRoYXQu
ICBGb3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAvLyBNYWtlcyBzdXJlIGFyZzAg
Y2FuIGJlIGNvbnZlcnRlZCB0byBpbnQuCi0gIGludCBuID0gYXJnMDsKLSAgLi4uIHVzZSBuIGlu
c3RlYWQgb2YgYXJnMCBoZXJlIC4uLgotfQotCi1BQ1RJT05fUChCYXIsIHBhcmFtKSB7Ci0gIC8v
IE1ha2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KLSAgOjp0ZXN0aW5n
OjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsKLQotICAvLyBN
YWtlcyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KLSAgYm9vbCBmbGFnID0g
cGFyYW07Ci19Ci1gYGAKLXdoZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEgY29tcGlsZS10
aW1lIGFzc2VydGlvbiBpbiBHb29nbGUgVGVzdAotdGhhdCB2ZXJpZmllcyB0d28gdHlwZXMgYXJl
IHRoZSBzYW1lLgotCi0jIyBXcml0aW5nIE5ldyBBY3Rpb24gVGVtcGxhdGVzIFF1aWNrbHkgIyMK
LQotU29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0IHRlbXBsYXRl
IHBhcmFtZXRlcnMgdGhhdAotY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZhbHVlIHBhcmFt
ZXRlcnMuICBgQUNUSU9OX1RFTVBMQVRFKClgCi1zdXBwb3J0cyB0aGF0IGFuZCBjYW4gYmUgdmll
d2VkIGFzIGFuIGV4dGVuc2lvbiB0byBgQUNUSU9OKClgIGFuZAotYEFDVElPTl9QKigpYC4KLQot
VGhlIHN5bnRheDoKLWBgYAotQUNUSU9OX1RFTVBMQVRFKEFjdGlvbk5hbWUsCi0gICAgICAgICAg
ICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBraW5kX20sIG5h
bWVfbSksCi0gICAgICAgICAgICAgICAgQU5EX25fVkFMVUVfUEFSQU1TKHAxLCAuLi4sIHBfbikp
IHsgc3RhdGVtZW50czsgfQotYGBgCi0KLWRlZmluZXMgYW4gYWN0aW9uIHRlbXBsYXRlIHRoYXQg
dGFrZXMgX21fIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMKLWFuZCBfbl8gdmFsdWUgcGFy
YW1ldGVycywgd2hlcmUgX21fIGlzIGJldHdlZW4gMSBhbmQgMTAsIGFuZCBfbl8gaXMKLWJldHdl
ZW4gMCBhbmQgMTAuICBgbmFtZV9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB0ZW1wbGF0ZQot
cGFyYW1ldGVyLCBhbmQgYGtpbmRfaWAgc3BlY2lmaWVzIHdoZXRoZXIgaXQncyBhIGB0eXBlbmFt
ZWAsIGFuCi1pbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIGBwX2lgIGlzIHRoZSBu
YW1lIG9mIHRoZSBpLXRoIHZhbHVlCi1wYXJhbWV0ZXIuCi0KLUV4YW1wbGU6Ci1gYGAKLS8vIER1
cGxpY2F0ZUFyZzxrLCBUPihvdXRwdXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRo
ZSBtb2NrCi0vLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGllcyBpdCB0byAqb3V0cHV0Lgot
QUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRo
ZSBjb21tYSBiZXR3ZWVuIGludCBhbmQgazoKLSAgICAgICAgICAgICAgICBIQVNfMl9URU1QTEFU
RV9QQVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzFfVkFM
VUVfUEFSQU1TKG91dHB1dCkpIHsKLSAgKm91dHB1dCA9IFQoOjp0ZXN0aW5nOjpnZXQ8az4oYXJn
cykpOwotfQotYGBgCi0KLVRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxh
dGUsIHdyaXRlOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tPih2MSwgLi4uLCB2X24p
Ci1gYGAKLXdoZXJlIHRoZSBgdGBzIGFyZSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzIGFuZCB0aGUK
LWB2YHMgYXJlIHRoZSB2YWx1ZSBhcmd1bWVudHMuICBUaGUgdmFsdWUgYXJndW1lbnQKLXR5cGVz
IGFyZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZToKLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotLi4uCi0gIGludCBuOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywg
XykpCi0gICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7
Ci1gYGAKLQotSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1
bWVudCB0eXBlcywgeW91IGNhbgotcHJvdmlkZSBhZGRpdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50
czoKLWBgYAotICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4u
LCB2X24pCi1gYGAKLXdoZXJlIGB1X2lgIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2YgYHZfaWAuCi0K
LWBBQ1RJT05fVEVNUExBVEVgIGFuZCBgQUNUSU9OYC9gQUNUSU9OX1AqYCBjYW4gYmUgb3Zlcmxv
YWRlZCBvbiB0aGUKLW51bWJlciBvZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBu
dW1iZXIgb2YgdGVtcGxhdGUKLXBhcmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwg
dGhlIG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZyBpcwotdW5jbGVhcjoKLQotYGBgCi0gIE92ZXJs
b2FkZWRBY3Rpb248aW50LCBib29sPih4KTsKLWBgYAotCi1BcmUgd2UgdXNpbmcgYSBzaW5nbGUt
dGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSBgYm9vbGAgcmVmZXJzIHRvCi10aGUgdHlw
ZSBvZiBgeGAsIG9yIGEgdHdvLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hlcmUgdGhlIGNv
bXBpbGVyCi1pcyBhc2tlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBgeGA/Ci0KLSMjIFVzaW5nIHRo
ZSBBQ1RJT04gT2JqZWN0J3MgVHlwZSAjIwotCi1JZiB5b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0LCB5b3UnbGwKLW5lZWQgdG8ga25vdyBp
dHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVmaW5lCi10
aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVs
eSBzaW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiogfCAqKkhh
cyBUeXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAgICB8IGBG
b29BY3Rpb25gICB8Ci18IGBBQ1RJT05fVEVNUExBVEUoRm9vLCBIQVNfbV9URU1QTEFURV9QQVJB
TVMoLi4uKSwgQU5EXzBfVkFMVUVfUEFSQU1TKCkpYCB8CWBGb288dDEsIC4uLiwgdF9tPigpYCB8
IGBGb29BY3Rpb248dDEsIC4uLiwgdF9tPmAgfAotfCBgQUNUSU9OX1AoQmFyLCBwYXJhbSlgIHwg
YEJhcihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGludD5gIHwKLXwgYEFDVElPTl9URU1QTEFU
RShCYXIsIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMV9WQUxVRV9QQVJBTVMocDEp
KWAgfCBgQmFyPHQxLCAuLi4sIHRfbT4oaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDx0MSwgLi4u
LCB0X20sIGludD5gIHwKLXwgYEFDVElPTl9QMihCYXosIHAxLCBwMilgIHwgYEJheihib29sX3Zh
bHVlLCBpbnRfdmFsdWUpYCB8IGBCYXpBY3Rpb25QMjxib29sLCBpbnQ+YCB8Ci18IGBBQ1RJT05f
VEVNUExBVEUoQmF6LCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzJfVkFMVUVfUEFS
QU1TKHAxLCBwMikpYCB8IGBCYXo8dDEsIC4uLiwgdF9tPihib29sX3ZhbHVlLCBpbnRfdmFsdWUp
YCB8IGBGb29BY3Rpb25QMjx0MSwgLi4uLCB0X20sIGJvb2wsIGludD5gIHwKLXwgLi4uICAgICAg
ICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4uLiAgICAgICAgICB8Ci0KLU5vdGUgdGhh
dCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwgYEFjdGlvblBg
LAotYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVy
cyBvZiB2YWx1ZQotcGFyYW1ldGVycywgb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBjYW5ub3Qg
YmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB0aGVtLgotCi0jIyBXcml0aW5nIE5ldyBN
b25vbW9ycGhpYyBBY3Rpb25zICMjCi0KLVdoaWxlIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGFyZSB2
ZXJ5IGNvbnZlbmllbnQsIHNvbWV0aW1lcyB0aGV5IGFyZQotaW5hcHByb3ByaWF0ZS4gIEZvciBl
eGFtcGxlLCBkZXNwaXRlIHRoZSB0cmlja3Mgc2hvd24gaW4gdGhlIHByZXZpb3VzCi1yZWNpcGVz
LCB0aGV5IGRvbid0IGxldCB5b3UgZGlyZWN0bHkgc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1v
Y2sKLWZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzLCB3aGljaCBp
biBnZW5lcmFsIGxlYWRzCi10byB1bm9wdGltaXplZCBjb21waWxlciBlcnJvciBtZXNzYWdlcyB0
aGF0IGNhbiBiYWZmbGUgdW5mYW1pbGlhcgotdXNlcnMuICBUaGV5IGFsc28gZG9uJ3QgYWxsb3cg
b3ZlcmxvYWRpbmcgYWN0aW9ucyBiYXNlZCBvbiBwYXJhbWV0ZXIKLXR5cGVzIHdpdGhvdXQganVt
cGluZyB0aHJvdWdoIHNvbWUgaG9vcHMuCi0KLUFuIGFsdGVybmF0aXZlIHRvIHRoZSBgQUNUSU9O
KmAgbWFjcm9zIGlzIHRvIGltcGxlbWVudAotYDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+
YCwgd2hlcmUgYEZgIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2NrCi1mdW5jdGlvbiBpbiB3aGljaCB0
aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdGVtcGxhdGUgPHR5
cGVuYW1lIEY+Y2xhc3MgQWN0aW9uSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkFj
dGlvbkludGVyZmFjZSgpOwotCi0gIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBSZXN1bHQgaXMg
dGhlIHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUKLSAgLy8gRiwgYW5kIEFyZ3VtZW50VHVw
bGUgaXMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50cyBvZiBGLgotICAvLwotICAvLyBGb3IgZXhhbXBs
ZSwgaWYgRiBpcyBpbnQoYm9vbCwgY29uc3Qgc3RyaW5nJiksIHRoZW4gUmVzdWx0IHdvdWxkCi0g
IC8vIGJlIGludCwgYW5kIEFyZ3VtZW50VHVwbGUgd291bGQgYmUgOjp0ZXN0aW5nOjp0dXBsZTxi
b29sLCBjb25zdCBzdHJpbmcmPi4KLSAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSA9IDA7Ci19OwotCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6
OnRlc3Rpbmc6OkFjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwotdXNp
bmcgOjp0ZXN0aW5nOjpNYWtlQWN0aW9uOwotCi10eXBlZGVmIGludCBJbmNyZW1lbnRNZXRob2Qo
aW50Kik7Ci0KLWNsYXNzIEluY3JlbWVudEFyZ3VtZW50QWN0aW9uIDogcHVibGljIEFjdGlvbklu
dGVyZmFjZTxJbmNyZW1lbnRNZXRob2Q+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IFBlcmZv
cm0oY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxpbnQqPiYgYXJncykgewotICAgIGludCogcCA9IDo6
dGVzdGluZzo6Z2V0PDA+KGFyZ3MpOyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50LgotICAg
IHJldHVybiAqcCsrOwotICB9Ci19OwotCi1BY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJbmNyZW1l
bnRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFyZ3VtZW50
QWN0aW9uKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQotICAgICAgLldp
bGxPbmNlKEluY3JlbWVudEFyZ3VtZW50KCkpOwotCi0gIGludCBuID0gNTsKLSAgZm9vLkJheigm
bik7ICAvLyBTaG91bGQgcmV0dXJuIDUgYW5kIGNoYW5nZSBuIHRvIDYuCi1gYGAKLQotIyMgV3Jp
dGluZyBOZXcgUG9seW1vcnBoaWMgQWN0aW9ucyAjIwotCi1UaGUgcHJldmlvdXMgcmVjaXBlIHNo
b3dlZCB5b3UgaG93IHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKLWFsbCBnb29k
LCBleGNlcHQgdGhhdCB5b3UgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBp
bgotd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNhbiBiZSBh
IHByb2JsZW0uIEZvcgotZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rpb24gaW4g
ZnVuY3Rpb25zIHdpdGggX2RpZmZlcmVudF8KLXR5cGVzIChlLmcuIGxpa2UgYFJldHVybigpYCBh
bmQgYFNldEFyZ1BvaW50ZWUoKWApLgotCi1JZiBhbiBhY3Rpb24gY2FuIGJlIHVzZWQgaW4gc2V2
ZXJhbCB0eXBlcyBvZiBtb2NrIGZ1bmN0aW9ucywgd2Ugc2F5Ci1pdCdzIF9wb2x5bW9ycGhpY18u
IFRoZSBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIGZ1bmN0aW9uIHRlbXBsYXRlCi1tYWtlcyBp
dCBlYXN5IHRvIGRlZmluZSBzdWNoIGFuIGFjdGlvbjoKLQotYGBgCi1uYW1lc3BhY2UgdGVzdGlu
ZyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgotUG9seW1vcnBoaWNBY3Rpb248SW1wbD4g
TWFrZVBvbHltb3JwaGljQWN0aW9uKGNvbnN0IEltcGwmIGltcGwpOwotCi19ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwotYGBgCi0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGRlZmluZSBhbiBhY3Rpb24g
dGhhdCByZXR1cm5zIHRoZSBzZWNvbmQgYXJndW1lbnQKLWluIHRoZSBtb2NrIGZ1bmN0aW9uJ3Mg
YXJndW1lbnQgbGlzdC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGVmaW5lIGFuCi1pbXBsZW1lbnRh
dGlvbiBjbGFzczoKLQotYGBgCi1jbGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbiB7Ci0g
cHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1
cGxlPgotICBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7
Ci0gICAgLy8gVG8gZ2V0IHRoZSBpLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgdXNlIDo6dGVzdGlu
Zzo6Z2V0PGk+KGFyZ3MpLgotICAgIHJldHVybiA6OnRlc3Rpbmc6OmdldDwxPihhcmdzKTsKLSAg
fQotfTsKLWBgYAotCi1UaGlzIGltcGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgX25vdF8gbmVlZCB0
byBpbmhlcml0IGZyb20gYW55Ci1wYXJ0aWN1bGFyIGNsYXNzLiBXaGF0IG1hdHRlcnMgaXMgdGhh
dCBpdCBtdXN0IGhhdmUgYSBgUGVyZm9ybSgpYAotbWV0aG9kIHRlbXBsYXRlLiBUaGlzIG1ldGhv
ZCB0ZW1wbGF0ZSB0YWtlcyB0aGUgbW9jayBmdW5jdGlvbidzCi1hcmd1bWVudHMgYXMgYSB0dXBs
ZSBpbiBhICoqc2luZ2xlKiogYXJndW1lbnQsIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YKLXRo
ZSBhY3Rpb24uIEl0IGNhbiBiZSBlaXRoZXIgYGNvbnN0YCBvciBub3QsIGJ1dCBtdXN0IGJlIGlu
dm9rYWJsZQotd2l0aCBleGFjdGx5IG9uZSB0ZW1wbGF0ZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhl
IHJlc3VsdCB0eXBlLiBJbiBvdGhlcgotd29yZHMsIHlvdSBtdXN0IGJlIGFibGUgdG8gY2FsbCBg
UGVyZm9ybTxSPihhcmdzKWAgd2hlcmUgYFJgIGlzIHRoZQotbW9jayBmdW5jdGlvbidzIHJldHVy
biB0eXBlIGFuZCBgYXJnc2AgaXMgaXRzIGFyZ3VtZW50cyBpbiBhIHR1cGxlLgotCi1OZXh0LCB3
ZSB1c2UgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCB0byB0dXJuIGFuIGluc3RhbmNlIG9mIHRo
ZQotaW1wbGVtZW50YXRpb24gY2xhc3MgaW50byB0aGUgcG9seW1vcnBoaWMgYWN0aW9uIHdlIG5l
ZWQuIEl0IHdpbGwgYmUKLWNvbnZlbmllbnQgdG8gaGF2ZSBhIHdyYXBwZXIgZm9yIHRoaXM6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNBY3Rpb247Ci11c2luZyA6OnRl
c3Rpbmc6OlBvbHltb3JwaGljQWN0aW9uOwotCi1Qb2x5bW9ycGhpY0FjdGlvbjxSZXR1cm5TZWNv
bmRBcmd1bWVudEFjdGlvbj4gUmV0dXJuU2Vjb25kQXJndW1lbnQoKSB7Ci0gIHJldHVybiBNYWtl
UG9seW1vcnBoaWNBY3Rpb24oUmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24oKSk7Ci19Ci1gYGAK
LQotTm93LCB5b3UgY2FuIHVzZSB0aGlzIHBvbHltb3JwaGljIGFjdGlvbiB0aGUgc2FtZSB3YXkg
eW91IHVzZSB0aGUKLWJ1aWx0LWluIG9uZXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwot
Ci1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIo
RG9UaGlzLCBpbnQoYm9vbCBmbGFnLCBpbnQgbikpOwotICBNT0NLX01FVEhPRDMoRG9UaGF0LCBz
dHJpbmcoaW50IHgsIGNvbnN0IGNoYXIqIHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIpKTsKLX07Ci0u
Li4KLQotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7Ci0gIEVYUEVDVF9DQUxMKGZv
bywgRG9UaGF0KF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKFJldHVyblNlY29uZEFyZ3VtZW50
KCkpOwotICAuLi4KLSAgZm9vLkRvVGhpcyh0cnVlLCA1KTsgICAgICAgICAvLyBXaWxsIHJldHVy
biA1LgotICBmb28uRG9UaGF0KDEsICJIaSIsICJCeWUiKTsgIC8vIFdpbGwgcmV0dXJuICJIaSIu
Ci1gYGAKLQotIyMgVGVhY2hpbmcgR29vZ2xlIE1vY2sgSG93IHRvIFByaW50IFlvdXIgVmFsdWVz
ICMjCi0KLVdoZW4gYW4gdW5pbnRlcmVzdGluZyBvciB1bmV4cGVjdGVkIGNhbGwgb2NjdXJzLCBH
b29nbGUgTW9jayBwcmludHMgdGhlCi1hcmd1bWVudCB2YWx1ZXMgYW5kIHRoZSBzdGFjayB0cmFj
ZSB0byBoZWxwIHlvdSBkZWJ1Zy4gIEFzc2VydGlvbgotbWFjcm9zIGxpa2UgYEVYUEVDVF9USEFU
YCBhbmQgYEVYUEVDVF9FUWAgYWxzbyBwcmludCB0aGUgdmFsdWVzIGluCi1xdWVzdGlvbiB3aGVu
IHRoZSBhc3NlcnRpb24gZmFpbHMuICBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QgZG8gdGhp
cyB1c2luZwotR29vZ2xlIFRlc3QncyB1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRlci4KLQot
VGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2
ZSBhcnJheXMsIFNUTAotY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhl
IGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKLXR5cGVzLCBpdCBwcmludHMgdGhlIHJhdyBieXRl
cyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQotdXNlciBjYW4gZmlndXJlIGl0
IG91dC4KLVtHb29nbGUgVGVzdCdzIGFkdmFuY2VkIGd1aWRlXSguLi8uLi9nb29nbGV0ZXN0L2Rv
Y3MvQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVzdC1ob3ctdG8tcHJpbnQteW91
ci12YWx1ZXMpCi1leHBsYWlucyBob3cgdG8gZXh0ZW5kIHRoZSBwcmludGVyIHRvIGRvIGEgYmV0
dGVyIGpvYiBhdAotcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wIHRo
ZSBieXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRGVzaWduRG9jLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svZG9jcy9EZXNpZ25Eb2MubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNmNTE1YzNiNmRkNmY2ODk4ZjcyNDEzZjM2OGQ0MjA3NWM4NWRiYjQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXNpZ25E
b2MubWQKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBAQAotVGhpcyBwYWdlIGRpc2N1c3Nl
cyB0aGUgZGVzaWduIG9mIG5ldyBHb29nbGUgTW9jayBmZWF0dXJlcy4KLQotCi0KLSMgTWFjcm9z
IGZvciBEZWZpbmluZyBBY3Rpb25zICMKLQotIyMgUHJvYmxlbSAjIwotCi1EdWUgdG8gdGhlIGxh
Y2sgb2YgY2xvc3VyZXMgaW4gQysrLCBpdCBjdXJyZW50bHkgcmVxdWlyZXMgc29tZQotbm9uLXRy
aXZpYWwgZWZmb3J0IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24gaW4gR29vZ2xlIE1vY2suICBG
b3IKLWV4YW1wbGUsIHN1cHBvc2UgeW91IHdhbnQgdG8gImluY3JlbWVudCB0aGUgdmFsdWUgcG9p
bnRlZCB0byBieSB0aGUKLXNlY29uZCBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiBhbmQg
cmV0dXJuIGl0IiwgeW91IGNvdWxkIHdyaXRlOgotCi1gYGAKLWludCBJbmNyZW1lbnRBcmcxKFVu
dXNlZCwgaW50KiBwLCBVbnVzZWQpIHsKLSAgcmV0dXJuICsrKCpwKTsKLX0KLQotLi4uIFdpbGxP
bmNlKEludm9rZShJbmNyZW1lbnRBcmcxKSk7Ci1gYGAKLQotVGhlcmUgYXJlIHNldmVyYWwgdGhp
bmdzIHVuc2F0aXNmYWN0b3J5IGFib3V0IHRoaXMgYXBwcm9hY2g6Ci0KLSAgKiBFdmVuIHRob3Vn
aCB0aGUgYWN0aW9uIG9ubHkgY2FyZXMgYWJvdXQgdGhlIHNlY29uZCBhcmd1bWVudCBvZiB0aGUg
bW9jayBmdW5jdGlvbiwgaXRzIGRlZmluaXRpb24gbmVlZHMgdG8gbGlzdCBvdGhlciBhcmd1bWVu
dHMgYXMgZHVtbWllcy4gIFRoaXMgaXMgdGVkaW91cy4KLSAgKiBUaGUgZGVmaW5lZCBhY3Rpb24g
aXMgdXNhYmxlIG9ubHkgaW4gbW9jayBmdW5jdGlvbnMgdGhhdCB0YWtlcyBleGFjdGx5IDMgYXJn
dW1lbnRzIC0gYW4gdW5uZWNlc3NhcnkgcmVzdHJpY3Rpb24uCi0gICogVG8gdXNlIHRoZSBhY3Rp
b24sIG9uZSBoYXMgdG8gc2F5IGBJbnZva2UoSW5jcmVtZW50QXJnMSlgLCB3aGljaCBpc24ndCBh
cyBuaWNlIGFzIGBJbmNyZW1lbnRBcmcxKClgLgotCi1UaGUgbGF0dGVyIHR3byBwcm9ibGVtcyBj
YW4gYmUgb3ZlcmNvbWUgdXNpbmcgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCwKLWJ1dCBpdCBy
ZXF1aXJlcyBtdWNoIG1vcmUgYm9pbGVycGxhdGUgY29kZToKLQotYGBgCi1jbGFzcyBJbmNyZW1l
bnRBcmcxQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVw
bGUmIGFyZ3MpIGNvbnN0IHsKLSAgICByZXR1cm4gKysoKnRyMTo6Z2V0PDE+KGFyZ3MpKTsKLSAg
fQotfTsKLQotUG9seW1vcnBoaWNBY3Rpb248SW5jcmVtZW50QXJnMUFjdGlvbj4gSW5jcmVtZW50
QXJnMSgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihJbmNyZW1lbnRBcmcxQWN0
aW9uKCkpOwotfQotCi0uLi4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKLWBgYAotCi1PdXIg
Z29hbCBpcyB0byBhbGxvdyBkZWZpbmluZyBjdXN0b20gYWN0aW9ucyB3aXRoIHRoZSBsZWFzdCBh
bW91bnQgb2YKLWJvaWxlci1wbGF0ZSBDKysgcmVxdWlyZXMuCi0KLSMjIFNvbHV0aW9uICMjCi0K
LVdlIHByb3Bvc2UgdG8gaW50cm9kdWNlIGEgbmV3IG1hY3JvOgotYGBgCi1BQ1RJT04obmFtZSkg
eyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLQotVXNpbmcgdGhpcyBpbiBhIG5hbWVzcGFjZSBzY29wZSB3
aWxsIGRlZmluZSBhbiBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4KLW5hbWUgdGhhdCBleGVjdXRlcyB0
aGUgc3RhdGVtZW50cy4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbgotcmVmZXIgdG8g
dGhlIEstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGBhcmdL
YC4KLUZvciBleGFtcGxlOgotYGBgCi1BQ1RJT04oSW5jcmVtZW50QXJnMSkgeyByZXR1cm4gKyso
KmFyZzEpOyB9Ci1gYGAKLWFsbG93cyB5b3UgdG8gd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKElu
Y3JlbWVudEFyZzEoKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNp
ZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCi1hcmd1bWVudHMsIGFzIGJyZXZpdHkg
aXMgYSB0b3AgZGVzaWduIGdvYWwgaGVyZS4gIFJlc3QgYXNzdXJlZCB0aGF0Ci15b3VyIGNvZGUg
aXMgc3RpbGwgdHlwZS1zYWZlIHRob3VnaDogeW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlm
Ci1gKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYCsrYCBvcGVyYXRvciwgb3IgaWYgdGhlIHR5
cGUgb2YKLWArKygqYXJnMSlgIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUgbW9jayBmdW5jdGlv
bidzIHJldHVybiB0eXBlLgotCi1Bbm90aGVyIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28pIHsK
LSAgKCphcmcyKSg1KTsKLSAgQmxhaCgpOwotICAqYXJnMSA9IDA7Ci0gIHJldHVybiBhcmcwOwot
fQotYGBgCi1kZWZpbmVzIGFuIGFjdGlvbiBgRm9vKClgIHRoYXQgaW52b2tlcyBhcmd1bWVudCAj
MiAoYSBmdW5jdGlvbiBwb2ludGVyKQotd2l0aCA1LCBjYWxscyBmdW5jdGlvbiBgQmxhaCgpYCwg
c2V0cyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBhcmd1bWVudAotIzEgdG8gMCwgYW5kIHJldHVy
bnMgYXJndW1lbnQgIzAuCi0KLUZvciBtb3JlIGNvbnZlbmllbmNlIGFuZCBmbGV4aWJpbGl0eSwg
eW91IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5nCi1wcmUtZGVmaW5lZCBzeW1ib2xzIGluIHRo
ZSBib2R5IG9mIGBBQ1RJT05gOgotCi18IGBhcmdLX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIEst
dGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHwKLXw6LS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfCBgYXJnc2AgICAgICB8IEFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gYXMgYSB0dXBsZSAgICAgICAgICAgICAgICB8Ci18IGBhcmdzX3R5cGVgIHwgVGhlIHR5
cGUgb2YgYWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgIHwK
LXwgYHJldHVybl90eXBlYCB8IFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBmdW5jdGlvbl90eXBlYCB8IFRoZSB0eXBlIG9m
IHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLUZv
ciBleGFtcGxlLCB3aGVuIHVzaW5nIGFuIGBBQ1RJT05gIGFzIGEgc3R1YiBhY3Rpb24gZm9yIG1v
Y2sgZnVuY3Rpb246Ci1gYGAKLWludCBEb1NvbWV0aGluZyhib29sIGZsYWcsIGludCogcHRyKTsK
LWBgYAotd2UgaGF2ZToKLXwgKipQcmUtZGVmaW5lZCBTeW1ib2wqKiB8ICoqSXMgQm91bmQgVG8q
KiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tfAotfCBgYXJn
MGAgICAgICAgICAgICAgICAgIHwgdGhlIHZhbHVlIG9mIGBmbGFnYCB8Ci18IGBhcmcwX3R5cGVg
ICAgICAgICAgICAgfCB0aGUgdHlwZSBgYm9vbGAgfAotfCBgYXJnMWAgICAgICAgICAgICAgICAg
IHwgdGhlIHZhbHVlIG9mIGBwdHJgIHwKLXwgYGFyZzFfdHlwZWAgICAgICAgICAgICB8IHRoZSB0
eXBlIGBpbnQqYCB8Ci18IGBhcmdzYCAgICAgICAgICAgICAgICAgfCB0aGUgdHVwbGUgYChmbGFn
LCBwdHIpYCB8Ci18IGBhcmdzX3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBgc3RkOjp0cjE6
OnR1cGxlPGJvb2wsIGludCo+YCB8Ci18IGByZXR1cm5fdHlwZWAgICAgICAgICAgfCB0aGUgdHlw
ZSBgaW50YCAgfAotfCBgZnVuY3Rpb25fdHlwZWAgICAgICAgIHwgdGhlIHR5cGUgYGludChib29s
LCBpbnQqKWAgfAotCi0jIyBQYXJhbWV0ZXJpemVkIGFjdGlvbnMgIyMKLQotU29tZXRpbWVzIHlv
dSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSB0aGUgYWN0aW9uLiAgIEZvciB0aGF0IHdlIHByb3Bv
c2UKLWFub3RoZXIgbWFjcm8KLWBgYAotQUNUSU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50
czsgfQotYGBgCi0KLUZvciBleGFtcGxlLAotYGBgCi1BQ1RJT05fUChBZGQsIG4pIHsgcmV0dXJu
IGFyZzAgKyBuOyB9Ci1gYGAKLXdpbGwgYWxsb3cgeW91IHRvIHdyaXRlCi1gYGAKLS8vIFJldHVy
bnMgYXJndW1lbnQgIzAgKyA1LgotLi4uIFdpbGxPbmNlKEFkZCg1KSk7Ci1gYGAKLQotRm9yIGNv
bnZlbmllbmNlLCB3ZSB1c2UgdGhlIHRlcm0gX2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNl
ZCB0bwotaW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNf
IGZvciB0aGUgdmFsdWVzCi11c2VkIHRvIGluc3RhbnRpYXRlIGFuIGFjdGlvbi4KLQotTm90ZSB0
aGF0IHlvdSBkb24ndCBuZWVkIHRvIHByb3ZpZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBl
aXRoZXIuCi1TdXBwb3NlIHRoZSBwYXJhbWV0ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNhbiBh
bHNvIHVzZSB0aGUKLUdvb2dsZS1Nb2NrLWRlZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0byBy
ZWZlciB0byB0aGUgdHlwZSBvZiB0aGUKLXBhcmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUgY29t
cGlsZXIuCi0KLVdlIHdpbGwgYWxzbyBwcm92aWRlIGBBQ1RJT05fUDJgLCBgQUNUSU9OX1AzYCwg
YW5kIGV0YyB0byBzdXBwb3J0Ci1tdWx0aS1wYXJhbWV0ZXIgYWN0aW9ucy4gIEZvciBleGFtcGxl
LAotYGBgCi1BQ1RJT05fUDIoUmV0dXJuRGlzdGFuY2VUbywgeCwgeSkgewotICBkb3VibGUgZHgg
PSBhcmcwIC0geDsKLSAgZG91YmxlIGR5ID0gYXJnMSAtIHk7Ci0gIHJldHVybiBzcXJ0KGR4KmR4
ICsgZHkqZHkpOwotfQotYGBgCi1sZXRzIHlvdSB3cml0ZQotYGBgCi0uLi4gV2lsbE9uY2UoUmV0
dXJuRGlzdGFuY2VUbyg1LjAsIDI2LjUpKTsKLWBgYAotCi1Zb3UgY2FuIHZpZXcgYEFDVElPTmAg
YXMgYSBkZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVkIGFjdGlvbiB3aGVyZSB0aGUKLW51bWJlciBv
ZiBwYXJhbWV0ZXJzIGlzIDAuCi0KLSMjIEFkdmFuY2VkIFVzYWdlcyAjIwotCi0jIyMgT3Zlcmxv
YWRpbmcgQWN0aW9ucyAjIyMKLQotWW91IGNhbiBlYXNpbHkgZGVmaW5lIGFjdGlvbnMgb3Zlcmxv
YWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnM6Ci1gYGAKLUFDVElPTl9QKFBsdXMsIGEp
IHsgLi4uIH0KLUFDVElPTl9QMihQbHVzLCBhLCBiKSB7IC4uLiB9Ci1gYGAKLQotIyMjIFJlc3Ry
aWN0aW5nIHRoZSBUeXBlIG9mIGFuIEFyZ3VtZW50IG9yIFBhcmFtZXRlciAjIyMKLQotRm9yIG1h
eGltdW0gYnJldml0eSBhbmQgcmV1c2FiaWxpdHksIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGRvbid0
IGxldAoteW91IHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50
cyBhbmQgdGhlIGFjdGlvbgotcGFyYW1ldGVycy4gIEluc3RlYWQsIHdlIGxldCB0aGUgY29tcGls
ZXIgaW5mZXIgdGhlIHR5cGVzIGZvciB1cy4KLQotU29tZXRpbWVzLCBob3dldmVyLCB3ZSBtYXkg
d2FudCB0byBiZSBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJlIGFyZSBzZXZl
cmFsIHRyaWNrcyB0byBkbyB0aGF0LiAgRm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28pIHsK
LSAgLy8gTWFrZXMgc3VyZSBhcmcwIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50LgotICBpbnQgbiA9
IGFyZzA7Ci0gIC4uLiB1c2UgbiBpbnN0ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0KLQotQUNUSU9O
X1AoQmFyLCBwYXJhbSkgewotICAvLyBNYWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFyZzEgaXMgY29u
c3QgY2hhciouCi0gIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIqLCBh
cmcxX3R5cGU+KCk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29udmVydGVkIHRv
IGJvb2wuCi0gIGJvb2wgZmxhZyA9IHBhcmFtOwotfQotYGBgCi13aGVyZSBgU3RhdGljQXNzZXJ0
VHlwZUVxYCBpcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gd2UgcGxhbiB0byBhZGQgdG8KLUdv
b2dsZSBUZXN0ICh0aGUgbmFtZSBpcyBjaG9zZW4gdG8gbWF0Y2ggYHN0YXRpY19hc3NlcnRgIGlu
IEMrKzB4KS4KLQotIyMjIFVzaW5nIHRoZSBBQ1RJT04gT2JqZWN0J3MgVHlwZSAjIyMKLQotSWYg
eW91IGFyZSB3cml0aW5nIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGBBQ1RJT05gIG9iamVj
dCwgeW91J2xsCi1uZWVkIHRvIGtub3cgaXRzIHR5cGUuICBUaGUgdHlwZSBkZXBlbmRzIG9uIHRo
ZSBtYWNybyB1c2VkIHRvIGRlZmluZQotdGhlIGFjdGlvbiBhbmQgdGhlIHBhcmFtZXRlciB0eXBl
cy4gIFRoZSBydWxlIGlzIHJlbGF0aXZlbHkgc2ltcGxlOgotfCAqKkdpdmVuIERlZmluaXRpb24q
KiB8ICoqRXhwcmVzc2lvbioqIHwgKipIYXMgVHlwZSoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBQ1RJT04oRm9vKWAgICAg
ICAgIHwgYEZvbygpYCAgICAgICAgfCBgRm9vQWN0aW9uYCAgfAotfCBgQUNUSU9OX1AoQmFyLCBw
YXJhbSlgIHwgYEJhcihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGludD5gIHwKLXwgYEFDVElP
Tl9QMihCYXosIHAxLCBwMilgIHwgYEJheihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBCYXpB
Y3Rpb25QMjxib29sLCBpbnQ+YCB8Ci18IC4uLiAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAg
ICAgICAgfCAuLi4gICAgICAgICAgfAotCi1Ob3RlIHRoYXQgd2UgaGF2ZSB0byBwaWNrIGRpZmZl
cmVudCBzdWZmaXhlcyAoYEFjdGlvbmAsIGBBY3Rpb25QYCwKLWBBY3Rpb25QMmAsIGFuZCBldGMp
IGZvciBhY3Rpb25zIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgcGFyYW1ldGVycywKLW9yIHRo
ZSBhY3Rpb24gZGVmaW5pdGlvbnMgY2Fubm90IGJlIG92ZXJsb2FkZWQgb24gdGhlIG51bWJlciBv
ZgotcGFyYW1ldGVycy4KLQotIyMgV2hlbiB0byBVc2UgIyMKLQotV2hpbGUgdGhlIG5ldyBtYWNy
b3MgYXJlIHZlcnkgY29udmVuaWVudCwgcGxlYXNlIGFsc28gY29uc2lkZXIgb3RoZXIKLW1lYW5z
IG9mIGltcGxlbWVudGluZyBhY3Rpb25zIChlLmcuIHZpYSBgQWN0aW9uSW50ZXJmYWNlYCBvcgot
YE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCksIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gdXNl
IHRoZSBkZWZpbmVkCi1hY3Rpb24gYSBsb3QuICBXaGlsZSB0aGUgb3RoZXIgYXBwcm9hY2hlcyBy
ZXF1aXJlIG1vcmUgd29yaywgdGhleSBnaXZlCi15b3UgbW9yZSBjb250cm9sIG9uIHRoZSB0eXBl
cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcmd1bWVudHMgYW5kIHRoZQotYWN0aW9uIHBhcmFtZXRl
cnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yCi1tZXNz
YWdlcyB0aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhleSBhbHNvIGFsbG93IG92ZXJs
b2FkaW5nCi1hY3Rpb25zIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlcywgYXMgb3Bwb3NlZCB0byBq
dXN0IHRoZSBudW1iZXIgb2YKLXBhcmFtZXRlcnMuCi0KLSMjIFJlbGF0ZWQgV29yayAjIwotCi1B
cyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIHRoZSBgQUNUSU9OKmAgbWFjcm9zIHJlc2VtYmxlIGNs
b3N1cmVzIChhbHNvCi1rbm93biBhcyBsYW1iZGEgZXhwcmVzc2lvbnMgb3IgYW5vbnltb3VzIGZ1
bmN0aW9ucykuICBJbmRlZWQsIGJvdGggb2YKLXRoZW0gc2VlayB0byBsb3dlciB0aGUgc3ludGFj
dGljIG92ZXJoZWFkIGZvciBkZWZpbmluZyBhIGZ1bmN0aW9uLgotCi1DKysweCB3aWxsIHN1cHBv
cnQgbGFtYmRhcywgYnV0IHRoZXkgYXJlIG5vdCBwYXJ0IG9mIEMrKyByaWdodCBub3cuCi1Tb21l
IG5vbi1zdGFuZGFyZCBsaWJyYXJpZXMgKG1vc3Qgbm90YWJseSBCTEwgb3IgQm9vc3QgTGFtYmRh
IExpYnJhcnkpCi10cnkgdG8gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbS4gIEhvd2V2ZXIsIHRoZXkg
YXJlIG5vdCBhIGdvb2QgY2hvaWNlCi1mb3IgZGVmaW5pbmcgYWN0aW9ucyBhczoKLQotICAqIFRo
ZXkgYXJlIG5vbi1zdGFuZGFyZCBhbmQgbm90IHdpZGVseSBpbnN0YWxsZWQuICBHb29nbGUgTW9j
ayBvbmx5IGRlcGVuZHMgb24gc3RhbmRhcmQgbGlicmFyaWVzIGFuZCBgdHIxOjp0dXBsZWAsIHdo
aWNoIGlzIHBhcnQgb2YgdGhlIG5ldyBDKysgc3RhbmRhcmQgYW5kIGNvbWVzIHdpdGggZ2NjIDQr
LiAgV2Ugd2FudCB0byBrZWVwIGl0IHRoYXQgd2F5LgotICAqIFRoZXkgYXJlIG5vdCB0cml2aWFs
IHRvIGxlYXJuLgotICAqIFRoZXkgd2lsbCBiZWNvbWUgb2Jzb2xldGUgd2hlbiBDKysweCdzIGxh
bWJkYSBmZWF0dXJlIGlzIHdpZGVseSBzdXBwb3J0ZWQuICBXZSBkb24ndCB3YW50IHRvIG1ha2Ug
b3VyIHVzZXJzIHVzZSBhIGR5aW5nIGxpYnJhcnkuCi0gICogU2luY2UgdGhleSBhcmUgYmFzZWQg
b24gb3BlcmF0b3JzLCB0aGV5IGFyZSByYXRoZXIgYWQgaG9jOiB5b3UgY2Fubm90IHVzZSBzdGF0
ZW1lbnRzLCBhbmQgeW91IGNhbm5vdCBwYXNzIHRoZSBsYW1iZGEgYXJndW1lbnRzIHRvIGEgZnVu
Y3Rpb24sIGZvciBleGFtcGxlLgotICAqIFRoZXkgaGF2ZSBzdWJ0bGUgc2VtYW50aWNzIHRoYXQg
ZWFzaWx5IGNvbmZ1c2VzIG5ldyB1c2Vycy4gIEZvciBleGFtcGxlLCBpbiBleHByZXNzaW9uIGBf
MSsrICsgZm9vKytgLCBgZm9vYCB3aWxsIGJlIGluY3JlbWVudGVkIG9ubHkgb25jZSB3aGVyZSB0
aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIHdoaWxlIGBfMWAgd2lsbCBiZSBpbmNyZW1lbnRl
ZCBldmVyeSB0aW1lIHRoZSB1bm5hbWVkIGZ1bmN0aW9uIGlzIGludm9rZWQuICBUaGlzIGlzIGZh
ciBmcm9tIGludHVpdGl2ZS4KLQotYEFDVElPTipgIGF2b2lkIGFsbCB0aGVzZSBwcm9ibGVtcy4K
LQotIyMgRnV0dXJlIEltcHJvdmVtZW50cyAjIwotCi1UaGVyZSBtYXkgYmUgYSBuZWVkIGZvciBj
b21wb3NpbmcgYEFDVElPTipgIGRlZmluaXRpb25zIChpLmUuIGludm9raW5nCi1hbm90aGVyIGBB
Q1RJT05gIGluc2lkZSB0aGUgZGVmaW5pdGlvbiBvZiBvbmUgYEFDVElPTipgKS4gIFdlIGFyZSBu
b3QKLXN1cmUgd2Ugd2FudCBpdCB5ZXQsIGFzIG9uZSBjYW4gZ2V0IGEgc2ltaWxhciBlZmZlY3Qg
YnkgcHV0dGluZwotYEFDVElPTmAgZGVmaW5pdGlvbnMgaW4gZnVuY3Rpb24gdGVtcGxhdGVzIGFu
ZCBjb21wb3NpbmcgdGhlIGZ1bmN0aW9uCi10ZW1wbGF0ZXMuICBXZSdsbCByZXZpc2l0IHRoaXMg
YmFzZWQgb24gdXNlciBmZWVkYmFjay4KLQotVGhlIHJlYXNvbiB3ZSBkb24ndCBhbGxvdyBgQUNU
SU9OKigpYCBpbnNpZGUgYSBmdW5jdGlvbiBib2R5IGlzIHRoYXQKLXRoZSBjdXJyZW50IEMrKyBz
dGFuZGFyZCBkb2Vzbid0IGFsbG93IGZ1bmN0aW9uLWxvY2FsIHR5cGVzIHRvIGJlIHVzZWQKLXRv
IGluc3RhbnRpYXRlIHRlbXBsYXRlcy4gIFRoZSB1cGNvbWluZyBDKysweCBzdGFuZGFyZCB3aWxs
IGxpZnQgdGhpcwotcmVzdHJpY3Rpb24uICBPbmNlIHRoaXMgZmVhdHVyZSBpcyB3aWRlbHkgc3Vw
cG9ydGVkIGJ5IGNvbXBpbGVycywgd2UKLWNhbiByZXZpc2l0IHRoZSBpbXBsZW1lbnRhdGlvbiBh
bmQgYWRkIHN1cHBvcnQgZm9yIHVzaW5nIGBBQ1RJT04qKClgCi1pbnNpZGUgYSBmdW5jdGlvbi4K
LQotQysrMHggd2lsbCBhbHNvIHN1cHBvcnQgbGFtYmRhIGV4cHJlc3Npb25zLiAgV2hlbiB0aGV5
IGJlY29tZQotYXZhaWxhYmxlLCB3ZSBtYXkgd2FudCB0byBzdXBwb3J0IHVzaW5nIGxhbWJkYXMg
YXMgYWN0aW9ucy4KLQotIyBNYWNyb3MgZm9yIERlZmluaW5nIE1hdGNoZXJzICMKLQotT25jZSB0
aGUgbWFjcm9zIGZvciBkZWZpbmluZyBhY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCwgd2UgcGxhbiB0
byBkbwotdGhlIHNhbWUgZm9yIG1hdGNoZXJzOgotCi1gYGAKLU1BVENIRVIobmFtZSkgeyBzdGF0
ZW1lbnRzOyB9Ci1gYGAKLQotd2hlcmUgeW91IGNhbiByZWZlciB0byB0aGUgdmFsdWUgYmVpbmcg
bWF0Y2hlZCBhcyBgYXJnYC4gIEZvciBleGFtcGxlLAotZ2l2ZW46Ci0KLWBgYAotTUFUQ0hFUihJ
c1Bvc2l0aXZlKSB7IHJldHVybiBhcmcgPiAwOyB9Ci1gYGAKLQoteW91IGNhbiB1c2UgYElzUG9z
aXRpdmUoKWAgYXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHZhbHVlIGlmZiBpdCBpcwotZ3Jl
YXRlciB0aGFuIDAuCi0KLVdlIHdpbGwgYWxzbyBhZGQgYE1BVENIRVJfUGAsIGBNQVRDSEVSX1Ay
YCwgYW5kIGV0YyBmb3IgcGFyYW1ldGVyaXplZAotbWF0Y2hlcnMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2RvY3MvRGV2R3VpZGUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGY0YmFiNzVjYTdiOTIwMDg3MWI3OWMxNTVlZGY0YTNlNjYwOWQ0ODguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlk
ZS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0KLQotSWYgeW91IGFyZSBpbnRl
cmVzdGVkIGluIHVuZGVyc3RhbmRpbmcgdGhlIGludGVybmFscyBvZiBHb29nbGUgTW9jaywKLWJ1
aWxkaW5nIGZyb20gc291cmNlLCBvciBjb250cmlidXRpbmcgaWRlYXMgb3IgbW9kaWZpY2F0aW9u
cyB0byB0aGUKLXByb2plY3QsIHRoZW4gdGhpcyBkb2N1bWVudCBpcyBmb3IgeW91LgotCi0jIElu
dHJvZHVjdGlvbiAjCi0KLUZpcnN0LCBsZXQncyBnaXZlIHlvdSBzb21lIGJhY2tncm91bmQgb2Yg
dGhlIHByb2plY3QuCi0KLSMjIExpY2Vuc2luZyAjIwotCi1BbGwgR29vZ2xlIE1vY2sgc291cmNl
IGFuZCBwcmUtYnVpbHQgcGFja2FnZXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZSBbTmV3IEJTRCBM
aWNlbnNlXShodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBo
cCkuCi0KLSMjIFRoZSBHb29nbGUgTW9jayBDb21tdW5pdHkgIyMKLQotVGhlIEdvb2dsZSBNb2Nr
IGNvbW11bml0eSBleGlzdHMgcHJpbWFyaWx5IHRocm91Z2ggdGhlIFtkaXNjdXNzaW9uIGdyb3Vw
XShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jayksIHRoZQotW2lzc3Vl
IHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9pc3N1ZXMpIGFu
ZCwgdG8gYSBsZXNzZXIgZXh0ZW50LCB0aGUgW3NvdXJjZSBjb250cm9sIHJlcG9zaXRvcnldKC4u
LykuIFlvdSBhcmUgZGVmaW5pdGVseSBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlCi1k
aXNjdXNzaW9uIGFuZCB5b3UgY2FuIGFsc28gaGVscCB1cyB0byBrZWVwIHRoZSBlZmZlY3RpdmVu
ZXNzIG9mIHRoZQotZ3JvdXAgaGlnaCBieSBmb2xsb3dpbmcgYW5kIHByb21vdGluZyB0aGUgZ3Vp
ZGVsaW5lcyBsaXN0ZWQgaGVyZS4KLQotIyMjIFBsZWFzZSBCZSBGcmllbmRseSAjIyMKLQotU2hv
d2luZyBjb3VydGVzeSBhbmQgcmVzcGVjdCB0byBvdGhlcnMgaXMgYSB2aXRhbCBwYXJ0IG9mIHRo
ZSBHb29nbGUKLWN1bHR1cmUsIGFuZCB3ZSBzdHJvbmdseSBlbmNvdXJhZ2UgZXZlcnlvbmUgcGFy
dGljaXBhdGluZyBpbiBHb29nbGUKLU1vY2sgZGV2ZWxvcG1lbnQgdG8gam9pbiB1cyBpbiBhY2Nl
cHRpbmcgbm90aGluZyBsZXNzLiBPZiBjb3Vyc2UsCi1iZWluZyBjb3VydGVvdXMgaXMgbm90IHRo
ZSBzYW1lIGFzIGZhaWxpbmcgdG8gY29uc3RydWN0aXZlbHkgZGlzYWdyZWUKLXdpdGggZWFjaCBv
dGhlciwgYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHdlIHNob3VsZCBiZSByZXNwZWN0ZnVsIG9mIGVh
Y2gKLW90aGVyIHdoZW4gZW51bWVyYXRpbmcgdGhlIDQyIHRlY2huaWNhbCByZWFzb25zIHRoYXQg
YSBwYXJ0aWN1bGFyCi1wcm9wb3NhbCBtYXkgbm90IGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlcmUn
cyBuZXZlciBhIHJlYXNvbiB0byBiZQotYW50YWdvbmlzdGljIG9yIGRpc21pc3NpdmUgdG93YXJk
IGFueW9uZSB3aG8gaXMgc2luY2VyZWx5IHRyeWluZyB0bwotY29udHJpYnV0ZSB0byBhIGRpc2N1
c3Npb24uCi0KLVN1cmUsIEMrKyB0ZXN0aW5nIGlzIHNlcmlvdXMgYnVzaW5lc3MgYW5kIGFsbCB0
aGF0LCBidXQgaXQncyBhbHNvCi1hIGxvdCBvZiBmdW4uIExldCdzIGtlZXAgaXQgdGhhdCB3YXku
IExldCdzIHN0cml2ZSB0byBiZSBvbmUgb2YgdGhlCi1mcmllbmRsaWVzdCBjb21tdW5pdGllcyBp
biBhbGwgb2Ygb3BlbiBzb3VyY2UuCi0KLSMjIyBXaGVyZSB0byBEaXNjdXNzIEdvb2dsZSBNb2Nr
ICMjIwotCi1BcyBhbHdheXMsIGRpc2N1c3MgR29vZ2xlIE1vY2sgaW4gdGhlIG9mZmljaWFsIFtH
b29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrIGRpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91
cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKS4gIFlvdSBkb24ndCBoYXZlIHRvIGFjdHVh
bGx5IHN1Ym1pdAotY29kZSBpbiBvcmRlciB0byBzaWduIHVwLiBZb3VyIHBhcnRpY2lwYXRpb24g
aXRzZWxmIGlzIGEgdmFsdWFibGUKLWNvbnRyaWJ1dGlvbi4KLQotIyBXb3JraW5nIHdpdGggdGhl
IENvZGUgIwotCi1JZiB5b3Ugd2FudCB0byBnZXQgeW91ciBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBj
b2RlIGluc2lkZSBHb29nbGUgTW9jaywKLXRoaXMgaXMgdGhlIHNlY3Rpb24gZm9yIHlvdS4KLQot
IyMgQ2hlY2tpbmcgT3V0IHRoZSBTb3VyY2UgZnJvbSBTdWJ2ZXJzaW9uICMjCi0KLUNoZWNraW5n
IG91dCB0aGUgR29vZ2xlIE1vY2sgc291cmNlIGlzIG1vc3QgdXNlZnVsIGlmIHlvdSBwbGFuIHRv
Ci10d2VhayBpdCB5b3Vyc2VsZi4gIFlvdSBjaGVjayBvdXQgdGhlIHNvdXJjZSBmb3IgR29vZ2xl
IE1vY2sgdXNpbmcgYQotW1N1YnZlcnNpb25dKGh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcv
KSBjbGllbnQgYXMgeW91IHdvdWxkIGZvciBhbnkKLW90aGVyIHByb2plY3QgaG9zdGVkIG9uIEdv
b2dsZSBDb2RlLiAgUGxlYXNlIHNlZSB0aGUgaW5zdHJ1Y3Rpb24gb24KLXRoZSBbc291cmNlIGNv
ZGUgYWNjZXNzIHBhZ2VdKC4uLykgZm9yIGhvdyB0byBkbyBpdC4KLQotIyMgQ29tcGlsaW5nIGZy
b20gU291cmNlICMjCi0KLU9uY2UgeW91IGNoZWNrIG91dCB0aGUgY29kZSwgeW91IGNhbiBmaW5k
IGluc3RydWN0aW9ucyBvbiBob3cgdG8KLWNvbXBpbGUgaXQgaW4gdGhlIFtSRUFETUVdKC4uL1JF
QURNRS5tZCkgZmlsZS4KLQotIyMgVGVzdGluZyAjIwotCi1BIG1vY2tpbmcgZnJhbWV3b3JrIGlz
IG9mIG5vIGdvb2QgaWYgaXRzZWxmIGlzIG5vdCB0aG9yb3VnaGx5IHRlc3RlZC4KLVRlc3RzIHNo
b3VsZCBiZSB3cml0dGVuIGZvciBhbnkgbmV3IGNvZGUsIGFuZCBjaGFuZ2VzIHNob3VsZCBiZQot
dmVyaWZpZWQgdG8gbm90IGJyZWFrIGV4aXN0aW5nIHRlc3RzIGJlZm9yZSB0aGV5IGFyZSBzdWJt
aXR0ZWQgZm9yCi1yZXZpZXcuIFRvIHBlcmZvcm0gdGhlIHRlc3RzLCBmb2xsb3cgdGhlIGluc3Ry
dWN0aW9ucyBpbiBbUkVBRE1FXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9z
b3VyY2UvYnJvd3NlL3RydW5rL1JFQURNRSkgYW5kCi12ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8g
ZmFpbHVyZXMuCi0KLSMgQ29udHJpYnV0aW5nIENvZGUgIwotCi1XZSBhcmUgZXhjaXRlZCB0aGF0
IEdvb2dsZSBNb2NrIGlzIG5vdyBvcGVuIHNvdXJjZSwgYW5kIGhvcGUgdG8gZ2V0Ci1ncmVhdCBw
YXRjaGVzIGZyb20gdGhlIGNvbW11bml0eS4gQmVmb3JlIHlvdSBmaXJlIHVwIHlvdXIgZmF2b3Jp
dGUgSURFCi1hbmQgYmVnaW4gaGFtbWVyaW5nIGF3YXkgYXQgdGhhdCBuZXcgZmVhdHVyZSwgdGhv
dWdoLCBwbGVhc2UgdGFrZSB0aGUKLXRpbWUgdG8gcmVhZCB0aGlzIHNlY3Rpb24gYW5kIHVuZGVy
c3RhbmQgdGhlIHByb2Nlc3MuIFdoaWxlIGl0IHNlZW1zCi1yaWdvcm91cywgd2Ugd2FudCB0byBr
ZWVwIGEgaGlnaCBzdGFuZGFyZCBvZiBxdWFsaXR5IGluIHRoZSBjb2RlCi1iYXNlLgotCi0jIyBD
b250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudHMgIyMKLQotWW91IG11c3Qgc2lnbiBhIENvbnRy
aWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGJlZm9yZSB3ZSBjYW4KLWFjY2VwdCBhbnkg
Y29kZS4gIFRoZSBDTEEgcHJvdGVjdHMgeW91IGFuZCB1cy4KLQotICAqIElmIHlvdSBhcmUgYW4g
aW5kaXZpZHVhbCB3cml0aW5nIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGFuZCB5b3UncmUgc3VyZSB5
b3Ugb3duIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHksIHRoZW4geW91J2xsIG5lZWQgdG8gc2ln
biBhbiBbaW5kaXZpZHVhbCBDTEFdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vbGVnYWwvaW5kaXZp
ZHVhbC1jbGEtdjEuMC5odG1sKS4KLSAgKiBJZiB5b3Ugd29yayBmb3IgYSBjb21wYW55IHRoYXQg
d2FudHMgdG8gYWxsb3cgeW91IHRvIGNvbnRyaWJ1dGUgeW91ciB3b3JrIHRvIEdvb2dsZSBNb2Nr
LCB0aGVuIHlvdSdsbCBuZWVkIHRvIHNpZ24gYSBbY29ycG9yYXRlIENMQV0oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9sZWdhbC9jb3Jwb3JhdGUtY2xhLXYxLjAuaHRtbCkuCi0KLUZvbGxvdyBlaXRo
ZXIgb2YgdGhlIHR3byBsaW5rcyBhYm92ZSB0byBhY2Nlc3MgdGhlIGFwcHJvcHJpYXRlIENMQSBh
bmQKLWluc3RydWN0aW9ucyBmb3IgaG93IHRvIHNpZ24gYW5kIHJldHVybiBpdC4KLQotIyMgQ29k
aW5nIFN0eWxlICMjCi0KLVRvIGtlZXAgdGhlIHNvdXJjZSBjb25zaXN0ZW50LCByZWFkYWJsZSwg
ZGlmZmFibGUgYW5kIGVhc3kgdG8gbWVyZ2UsCi13ZSB1c2UgYSBmYWlybHkgcmlnaWQgY29kaW5n
IHN0eWxlLCBhcyBkZWZpbmVkIGJ5IHRoZSBbZ29vZ2xlLXN0eWxlZ3VpZGVdKGh0dHBzOi8vZ2l0
aHViLmNvbS9nb29nbGUvc3R5bGVndWlkZSkgcHJvamVjdC4gIEFsbCBwYXRjaGVzIHdpbGwgYmUg
ZXhwZWN0ZWQKLXRvIGNvbmZvcm0gdG8gdGhlIHN0eWxlIG91dGxpbmVkIFtoZXJlXShodHRwczov
L2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxlZ3VpZGUvYmxvYi9naC1wYWdlcy9jcHBndWlkZS54bWwp
LgotCi0jIyBTdWJtaXR0aW5nIFBhdGNoZXMgIyMKLQotUGxlYXNlIGRvIHN1Ym1pdCBjb2RlLiBI
ZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBkbzoKLQotICAxLiBOb3JtYWxseSB5b3Ugc2hvdWxkIG1h
a2UgeW91ciBjaGFuZ2UgYWdhaW5zdCB0aGUgU1ZOIHRydW5rIGluc3RlYWQgb2YgYSBicmFuY2gg
b3IgYSB0YWcsIGFzIHRoZSBsYXR0ZXIgdHdvIGFyZSBmb3IgcmVsZWFzZSBjb250cm9sIGFuZCBz
aG91bGQgYmUgdHJlYXRlZCBtb3N0bHkgYXMgcmVhZC1vbmx5LgotICAxLiBEZWNpZGUgd2hpY2gg
Y29kZSB5b3Ugd2FudCB0byBzdWJtaXQuIEEgc3VibWlzc2lvbiBzaG91bGQgYmUgYSBzZXQgb2Yg
Y2hhbmdlcyB0aGF0IGFkZHJlc3NlcyBvbmUgaXNzdWUgaW4gdGhlIFtHb29nbGUgTW9jayBpc3N1
ZSB0cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlz
dCkuIFBsZWFzZSBkb24ndCBtaXggbW9yZSB0aGFuIG9uZSBsb2dpY2FsIGNoYW5nZSBwZXIgc3Vi
bWl0dGFsLCBiZWNhdXNlIGl0IG1ha2VzIHRoZSBoaXN0b3J5IGhhcmQgdG8gZm9sbG93LiBJZiB5
b3Ugd2FudCB0byBtYWtlIGEgY2hhbmdlIHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVzcG9uZGlu
ZyBpc3N1ZSBpbiB0aGUgaXNzdWUgdHJhY2tlciwgcGxlYXNlIGNyZWF0ZSBvbmUuCi0gIDEuIEFs
c28sIGNvb3JkaW5hdGUgd2l0aCB0ZWFtIG1lbWJlcnMgdGhhdCBhcmUgbGlzdGVkIG9uIHRoZSBp
c3N1ZSBpbiBxdWVzdGlvbi4gVGhpcyBlbnN1cmVzIHRoYXQgd29yayBpc24ndCBiZWluZyBkdXBs
aWNhdGVkIGFuZCBjb21tdW5pY2F0aW5nIHlvdXIgcGxhbiBlYXJseSBhbHNvIGdlbmVyYWxseSBs
ZWFkcyB0byBiZXR0ZXIgcGF0Y2hlcy4KLSAgMS4gRW5zdXJlIHRoYXQgeW91ciBjb2RlIGFkaGVy
ZXMgdG8gdGhlIFtHb29nbGUgTW9jayBzb3VyY2UgY29kZSBzdHlsZV0oI0NvZGluZ19TdHlsZS5t
ZCkuCi0gIDEuIEVuc3VyZSB0aGF0IHRoZXJlIGFyZSB1bml0IHRlc3RzIGZvciB5b3VyIGNvZGUu
Ci0gIDEuIFNpZ24gYSBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudC4KLSAgMS4gQ3JlYXRl
IGEgcGF0Y2ggZmlsZSB1c2luZyBgc3ZuIGRpZmZgLgotICAxLiBXZSB1c2UgW1JpZXR2ZWxkXSho
dHRwOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8pIHRvIGRvIHdlYi1iYXNlZCBjb2RlIHJldmll
d3MuICBZb3UgY2FuIHJlYWQgYWJvdXQgdGhlIHRvb2wgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNv
bS9yaWV0dmVsZC1jb2RlcmV2aWV3L3JpZXR2ZWxkL3dpa2kpLiAgV2hlbiB5b3UgYXJlIHJlYWR5
LCB1cGxvYWQgeW91ciBwYXRjaCB2aWEgUmlldHZlbGQgYW5kIG5vdGlmeSBgZ29vZ2xlbW9ja0Bn
b29nbGVncm91cHMuY29tYCB0byByZXZpZXcgaXQuICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRv
IHVwbG9hZCB0aGUgcGF0Y2guICBXZSByZWNvbW1lbmQgdXNpbmcgdGhlIFt1cGxvYWRcX2dtb2Nr
LnB5XSguLi9zY3JpcHRzL3VwbG9hZF9nbW9jay5weSkgc2NyaXB0LCB3aGljaCB5b3UgY2FuIGZp
bmQgaW4gdGhlIGBzY3JpcHRzL2AgZm9sZGVyIGluIHRoZSBTVk4gdHJ1bmsuCi0KLSMjIEdvb2ds
ZSBNb2NrIENvbW1pdHRlcnMgIyMKLQotVGhlIGN1cnJlbnQgbWVtYmVycyBvZiB0aGUgR29vZ2xl
IE1vY2sgZW5naW5lZXJpbmcgdGVhbSBhcmUgdGhlIG9ubHkKLWNvbW1pdHRlcnMgYXQgcHJlc2Vu
dC4gSW4gdGhlIGdyZWF0IHRyYWRpdGlvbiBvZiBlYXRpbmcgb25lJ3Mgb3duCi1kb2dmb29kLCB3
ZSB3aWxsIGJlIHJlcXVpcmluZyBlYWNoIG5ldyBHb29nbGUgTW9jayBlbmdpbmVlcmluZyB0ZWFt
Ci1tZW1iZXIgdG8gZWFybiB0aGUgcmlnaHQgdG8gYmVjb21lIGEgY29tbWl0dGVyIGJ5IGZvbGxv
d2luZyB0aGUKLXByb2NlZHVyZXMgaW4gdGhpcyBkb2N1bWVudCwgd3JpdGluZyBjb25zaXN0ZW50
bHkgZ3JlYXQgY29kZSwgYW5kCi1kZW1vbnN0cmF0aW5nIHJlcGVhdGVkbHkgdGhhdCBoZSBvciBz
aGUgdHJ1bHkgZ2V0cyB0aGUgemVuIG9mIEdvb2dsZQotTW9jay4KLQotIyBSZWxlYXNlIFByb2Nl
c3MgIwotCi1XZSBmb2xsb3cgdGhlIHR5cGljYWwgcmVsZWFzZSBwcm9jZXNzIGZvciBTdWJ2ZXJz
aW9uLWJhc2VkIHByb2plY3RzOgotCi0gIDEuIEEgcmVsZWFzZSBicmFuY2ggbmFtZWQgYHJlbGVh
c2UtWC5ZYCBpcyBjcmVhdGVkLgotICAxLiBCdWdzIGFyZSBmaXhlZCBhbmQgZmVhdHVyZXMgYXJl
IGFkZGVkIGluIHRydW5rOyB0aG9zZSBpbmRpdmlkdWFsIHBhdGNoZXMgYXJlIG1lcmdlZCBpbnRv
IHRoZSByZWxlYXNlIGJyYW5jaCB1bnRpbCBpdCdzIHN0YWJsZS4KLSAgMS4gQW4gaW5kaXZpZHVh
bCBwb2ludCByZWxlYXNlICh0aGUgYFpgIGluIGBYLlkuWmApIGlzIG1hZGUgYnkgY3JlYXRpbmcg
YSB0YWcgZnJvbSB0aGUgYnJhbmNoLgotICAxLiBSZXBlYXQgc3RlcHMgMiBhbmQgMyB0aHJvdWdo
b3V0IG9uZSByZWxlYXNlIGN5Y2xlIChhcyBkZXRlcm1pbmVkIGJ5IGZlYXR1cmVzIG9yIHRpbWUp
LgotICAxLiBHbyBiYWNrIHRvIHN0ZXAgMSB0byBjcmVhdGUgYW5vdGhlciByZWxlYXNlIGJyYW5j
aCBhbmQgc28gb24uCi0KLQotLS0tCi0KLVRoaXMgcGFnZSBpcyBiYXNlZCBvbiB0aGUgW01ha2lu
ZyBHV1QgQmV0dGVyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3dlYnRvb2xraXQvbWFraW5nZ3d0
YmV0dGVyLmh0bWwpIGd1aWRlIGZyb20gdGhlIFtHb29nbGUgV2ViIFRvb2xraXRdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vd2VidG9vbGtpdC8pIHByb2plY3QuICBFeGNlcHQgYXMgb3RoZXJ3aXNl
IFtub3RlZF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wb2xpY2llcy5odG1sI3Jlc3RyaWN0aW9u
cyksIHRoZSBjb250ZW50IG9mIHRoaXMgcGFnZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW0NyZWF0
aXZlIENvbW1vbnMgQXR0cmlidXRpb24gMi41IExpY2Vuc2VdKGh0dHA6Ly9jcmVhdGl2ZWNvbW1v
bnMub3JnL2xpY2Vuc2VzL2J5LzIuNS8pLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9E
b2N1bWVudGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Eb2N1bWVudGF0aW9uLm1kCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQxNTFlZTllZDdlYzQzYmQxMTRiZDFjOWNkMGQz
NDlkYmM0MzFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL2RvY3MvRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9udWxsCkBAIC0xLDEy
ICswLDAgQEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZv
ciBHb29nbGUgTW9jayAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioKLS0gKippZiB5b3UgdXNl
IGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgcGxlYXNlIHJlYWQgdGhlIGRvY3Vt
ZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCi0KLSAgKiBbRm9y
RHVtbWllc10oRm9yRHVtbWllcy5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBH
b29nbGUgTW9jay4KLSAgKiBbQ2hlYXRTaGVldF0oQ2hlYXRTaGVldC5tZCkgLS0gYSBxdWljayBy
ZWZlcmVuY2UuCi0gICogW0Nvb2tCb29rXShDb29rQm9vay5tZCkgLS0gcmVjaXBlcyBmb3IgZG9p
bmcgdmFyaW91cyB0YXNrcyB1c2luZyBHb29nbGUgTW9jay4KLSAgKiBbRnJlcXVlbnRseUFza2Vk
UXVlc3Rpb25zXShGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQpIC0tIGNoZWNrIGhlcmUgYmVm
b3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCi0KLVRvIGNvbnRyaWJ1
dGUgY29kZSB0byBHb29nbGUgTW9jaywgcmVhZDoKLQotICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUu
bWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICog
W1B1bXAgTWFudWFsXSguLi9nb29nbGV0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdl
IGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIE1vY2sncyBzb3VyY2UgZmlsZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9kb2NzL0ZvckR1bW1pZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0ZvckR1
bW1pZXMubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYTRjYmUyN2I4ZDE0MWFh
MzA4MzM0YmE2NTMyZDUzMTgyZTc0YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Gb3JEdW1taWVzLm1kCisrKyAvZGV2L251
bGwKQEAgLTEsNDM5ICswLDAgQEAKLQotCi0oKipOb3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIg
ZXJyb3JzIHRoYXQgeW91IGRvbid0IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29v
Z2xlIE1vY2sgRG9jdG9yXShGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQjaG93LWFtLWktc3Vw
cG9zZWQtdG8tbWFrZS1zZW5zZS1vZi10aGVzZS1ob3JyaWJsZS10ZW1wbGF0ZS1lcnJvcnMpLikK
LQotIyBXaGF0IElzIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcms/ICMKLVdoZW4geW91IHdy
aXRlIGEgcHJvdG90eXBlIG9yIHRlc3QsIG9mdGVuIGl0J3Mgbm90IGZlYXNpYmxlIG9yIHdpc2Ug
dG8gcmVseSBvbiByZWFsIG9iamVjdHMgZW50aXJlbHkuIEEgKiptb2NrIG9iamVjdCoqIGltcGxl
bWVudHMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGEgcmVhbCBvYmplY3QgKHNvIGl0IGNhbiBiZSB1
c2VkIGFzIG9uZSksIGJ1dCBsZXRzIHlvdSBzcGVjaWZ5IGF0IHJ1biB0aW1lIGhvdyBpdCB3aWxs
IGJlIHVzZWQgYW5kIHdoYXQgaXQgc2hvdWxkIGRvICh3aGljaCBtZXRob2RzIHdpbGwgYmUgY2Fs
bGVkPyBpbiB3aGljaCBvcmRlcj8gaG93IG1hbnkgdGltZXM/IHdpdGggd2hhdCBhcmd1bWVudHM/
IHdoYXQgd2lsbCB0aGV5IHJldHVybj8gZXRjKS4KLQotKipOb3RlOioqIEl0IGlzIGVhc3kgdG8g
Y29uZnVzZSB0aGUgdGVybSBfZmFrZSBvYmplY3RzXyB3aXRoIG1vY2sgb2JqZWN0cy4gRmFrZXMg
YW5kIG1vY2tzIGFjdHVhbGx5IG1lYW4gdmVyeSBkaWZmZXJlbnQgdGhpbmdzIGluIHRoZSBUZXN0
LURyaXZlbiBEZXZlbG9wbWVudCAoVEREKSBjb21tdW5pdHk6Ci0KLSAgKiAqKkZha2UqKiBvYmpl
Y3RzIGhhdmUgd29ya2luZyBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB1c3VhbGx5IHRha2Ugc29tZSBz
aG9ydGN1dCAocGVyaGFwcyB0byBtYWtlIHRoZSBvcGVyYXRpb25zIGxlc3MgZXhwZW5zaXZlKSwg
d2hpY2ggbWFrZXMgdGhlbSBub3Qgc3VpdGFibGUgZm9yIHByb2R1Y3Rpb24uIEFuIGluLW1lbW9y
eSBmaWxlIHN5c3RlbSB3b3VsZCBiZSBhbiBleGFtcGxlIG9mIGEgZmFrZS4KLSAgKiAqKk1vY2tz
KiogYXJlIG9iamVjdHMgcHJlLXByb2dyYW1tZWQgd2l0aCBfZXhwZWN0YXRpb25zXywgd2hpY2gg
Zm9ybSBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGNhbGxzIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJl
Y2VpdmUuCi0KLUlmIGFsbCB0aGlzIHNlZW1zIHRvbyBhYnN0cmFjdCBmb3IgeW91LCBkb24ndCB3
b3JyeSAtIHRoZSBtb3N0IGltcG9ydGFudCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGEgbW9j
ayBhbGxvd3MgeW91IHRvIGNoZWNrIHRoZSBfaW50ZXJhY3Rpb25fIGJldHdlZW4gaXRzZWxmIGFu
ZCBjb2RlIHRoYXQgdXNlcyBpdC4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBmYWtlcyBhbmQgbW9j
a3Mgd2lsbCBiZWNvbWUgbXVjaCBjbGVhcmVyIG9uY2UgeW91IHN0YXJ0IHRvIHVzZSBtb2Nrcy4K
LQotKipHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrKiogKG9yICoqR29vZ2xlIE1vY2sqKiBm
b3Igc2hvcnQpIGlzIGEgbGlicmFyeSAoc29tZXRpbWVzIHdlIGFsc28gY2FsbCBpdCBhICJmcmFt
ZXdvcmsiIHRvIG1ha2UgaXQgc291bmQgY29vbCkgZm9yIGNyZWF0aW5nIG1vY2sgY2xhc3NlcyBh
bmQgdXNpbmcgdGhlbS4gSXQgZG9lcyB0byBDKysgd2hhdCBbak1vY2tdKGh0dHA6Ly93d3cuam1v
Y2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSBkbyB0byBK
YXZhLgotCi1Vc2luZyBHb29nbGUgTW9jayBpbnZvbHZlcyB0aHJlZSBiYXNpYyBzdGVwczoKLQot
ICAxLiBVc2Ugc29tZSBzaW1wbGUgbWFjcm9zIHRvIGRlc2NyaWJlIHRoZSBpbnRlcmZhY2UgeW91
IHdhbnQgdG8gbW9jaywgYW5kIHRoZXkgd2lsbCBleHBhbmQgdG8gdGhlIGltcGxlbWVudGF0aW9u
IG9mIHlvdXIgbW9jayBjbGFzczsKLSAgMS4gQ3JlYXRlIHNvbWUgbW9jayBvYmplY3RzIGFuZCBz
cGVjaWZ5IGl0cyBleHBlY3RhdGlvbnMgYW5kIGJlaGF2aW9yIHVzaW5nIGFuIGludHVpdGl2ZSBz
eW50YXg7Ci0gIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHMuIEdv
b2dsZSBNb2NrIHdpbGwgY2F0Y2ggYW55IHZpb2xhdGlvbiBvZiB0aGUgZXhwZWN0YXRpb25zIGFz
IHNvb24gYXMgaXQgYXJpc2VzLgotCi0jIFdoeSBHb29nbGUgTW9jaz8gIwotV2hpbGUgbW9jayBv
YmplY3RzIGhlbHAgeW91IHJlbW92ZSB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgaW4gdGVzdHMg
YW5kIG1ha2UgdGhlbSBmYXN0IGFuZCByZWxpYWJsZSwgdXNpbmcgbW9ja3MgbWFudWFsbHkgaW4g
QysrIGlzIF9oYXJkXzoKLQotICAqIFNvbWVvbmUgaGFzIHRvIGltcGxlbWVudCB0aGUgbW9ja3Mu
IFRoZSBqb2IgaXMgdXN1YWxseSB0ZWRpb3VzIGFuZCBlcnJvci1wcm9uZS4gTm8gd29uZGVyIHBl
b3BsZSBnbyBncmVhdCBkaXN0YW5jZSB0byBhdm9pZCBpdC4KLSAgKiBUaGUgcXVhbGl0eSBvZiB0
aG9zZSBtYW51YWxseSB3cml0dGVuIG1vY2tzIGlzIGEgYml0LCB1aCwgdW5wcmVkaWN0YWJsZS4g
WW91IG1heSBzZWUgc29tZSByZWFsbHkgcG9saXNoZWQgb25lcywgYnV0IHlvdSBtYXkgYWxzbyBz
ZWUgc29tZSB0aGF0IHdlcmUgaGFja2VkIHVwIGluIGEgaHVycnkgYW5kIGhhdmUgYWxsIHNvcnRz
IG9mIGFkIGhvYyByZXN0cmljdGlvbnMuCi0gICogVGhlIGtub3dsZWRnZSB5b3UgZ2FpbmVkIGZy
b20gdXNpbmcgb25lIG1vY2sgZG9lc24ndCB0cmFuc2ZlciB0byB0aGUgbmV4dC4KLQotSW4gY29u
dHJhc3QsIEphdmEgYW5kIFB5dGhvbiBwcm9ncmFtbWVycyBoYXZlIHNvbWUgZmluZSBtb2NrIGZy
YW1ld29ya3MsIHdoaWNoIGF1dG9tYXRlIHRoZSBjcmVhdGlvbiBvZiBtb2Nrcy4gQXMgYSByZXN1
bHQsIG1vY2tpbmcgaXMgYSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZSBhbmQgd2lkZWx5IGFk
b3B0ZWQgcHJhY3RpY2UgaW4gdGhvc2UgY29tbXVuaXRpZXMuIEhhdmluZyB0aGUgcmlnaHQgdG9v
bCBhYnNvbHV0ZWx5IG1ha2VzIHRoZSBkaWZmZXJlbmNlLgotCi1Hb29nbGUgTW9jayB3YXMgYnVp
bHQgdG8gaGVscCBDKysgcHJvZ3JhbW1lcnMuIEl0IHdhcyBpbnNwaXJlZCBieSBbak1vY2tdKGh0
dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDovL3d3dy5lYXN5bW9jay5v
cmcvKSwgYnV0IGRlc2lnbmVkIHdpdGggQysrJ3Mgc3BlY2lmaWNzIGluIG1pbmQuIEl0IGlzIHlv
dXIgZnJpZW5kIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIHByb2JsZW1zIGlzIGJvdGhlcmluZyB5
b3U6Ci0KLSAgKiBZb3UgYXJlIHN0dWNrIHdpdGggYSBzdWItb3B0aW1hbCBkZXNpZ24gYW5kIHdp
c2ggeW91IGhhZCBkb25lIG1vcmUgcHJvdG90eXBpbmcgYmVmb3JlIGl0IHdhcyB0b28gbGF0ZSwg
YnV0IHByb3RvdHlwaW5nIGluIEMrKyBpcyBieSBubyBtZWFucyAicmFwaWQiLgotICAqIFlvdXIg
dGVzdHMgYXJlIHNsb3cgYXMgdGhleSBkZXBlbmQgb24gdG9vIG1hbnkgbGlicmFyaWVzIG9yIHVz
ZSBleHBlbnNpdmUgcmVzb3VyY2VzIChlLmcuIGEgZGF0YWJhc2UpLgotICAqIFlvdXIgdGVzdHMg
YXJlIGJyaXR0bGUgYXMgc29tZSByZXNvdXJjZXMgdGhleSB1c2UgYXJlIHVucmVsaWFibGUgKGUu
Zy4gdGhlIG5ldHdvcmspLgotICAqIFlvdSB3YW50IHRvIHRlc3QgaG93IHlvdXIgY29kZSBoYW5k
bGVzIGEgZmFpbHVyZSAoZS5nLiBhIGZpbGUgY2hlY2tzdW0gZXJyb3IpLCBidXQgaXQncyBub3Qg
ZWFzeSB0byBjYXVzZSBvbmUuCi0gICogWW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91ciBt
b2R1bGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBpbiB0aGUgcmlnaHQgd2F5LCBidXQg
aXQncyBoYXJkIHRvIG9ic2VydmUgdGhlIGludGVyYWN0aW9uOyB0aGVyZWZvcmUgeW91IHJlc29y
dCB0byBvYnNlcnZpbmcgdGhlIHNpZGUgZWZmZWN0cyBhdCB0aGUgZW5kIG9mIHRoZSBhY3Rpb24s
IHdoaWNoIGlzIGF3a3dhcmQgYXQgYmVzdC4KLSAgKiBZb3Ugd2FudCB0byAibW9jayBvdXQiIHlv
dXIgZGVwZW5kZW5jaWVzLCBleGNlcHQgdGhhdCB0aGV5IGRvbid0IGhhdmUgbW9jayBpbXBsZW1l
bnRhdGlvbnMgeWV0OyBhbmQsIGZyYW5rbHksIHlvdSBhcmVuJ3QgdGhyaWxsZWQgYnkgc29tZSBv
ZiB0aG9zZSBoYW5kLXdyaXR0ZW4gbW9ja3MuCi0KLVdlIGVuY291cmFnZSB5b3UgdG8gdXNlIEdv
b2dsZSBNb2NrIGFzOgotCi0gICogYSBfZGVzaWduXyB0b29sLCBmb3IgaXQgbGV0cyB5b3UgZXhw
ZXJpbWVudCB3aXRoIHlvdXIgaW50ZXJmYWNlIGRlc2lnbiBlYXJseSBhbmQgb2Z0ZW4uIE1vcmUg
aXRlcmF0aW9ucyBsZWFkIHRvIGJldHRlciBkZXNpZ25zIQotICAqIGEgX3Rlc3RpbmdfIHRvb2wg
dG8gY3V0IHlvdXIgdGVzdHMnIG91dGJvdW5kIGRlcGVuZGVuY2llcyBhbmQgcHJvYmUgdGhlIGlu
dGVyYWN0aW9uIGJldHdlZW4geW91ciBtb2R1bGUgYW5kIGl0cyBjb2xsYWJvcmF0b3JzLgotCi0j
IEdldHRpbmcgU3RhcnRlZCAjCi1Vc2luZyBHb29nbGUgTW9jayBpcyBlYXN5ISBJbnNpZGUgeW91
ciBDKysgc291cmNlIGZpbGUsIGp1c3QgYCNpbmNsdWRlYCBgImd0ZXN0L2d0ZXN0LmgiYCBhbmQg
YCJnbW9jay9nbW9jay5oImAsIGFuZCB5b3UgYXJlIHJlYWR5IHRvIGdvLgotCi0jIEEgQ2FzZSBm
b3IgTW9jayBUdXJ0bGVzICMKLUxldCdzIGxvb2sgYXQgYW4gZXhhbXBsZS4gU3VwcG9zZSB5b3Ug
YXJlIGRldmVsb3BpbmcgYSBncmFwaGljcyBwcm9ncmFtIHRoYXQgcmVsaWVzIG9uIGEgTE9HTy1s
aWtlIEFQSSBmb3IgZHJhd2luZy4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgaXQgZG9lcyB0aGUg
cmlnaHQgdGhpbmc/IFdlbGwsIHlvdSBjYW4gcnVuIGl0IGFuZCBjb21wYXJlIHRoZSBzY3JlZW4g
d2l0aCBhIGdvbGRlbiBzY3JlZW4gc25hcHNob3QsIGJ1dCBsZXQncyBhZG1pdCBpdDogdGVzdHMg
bGlrZSB0aGlzIGFyZSBleHBlbnNpdmUgdG8gcnVuIGFuZCBmcmFnaWxlIChXaGF0IGlmIHlvdSBq
dXN0IHVwZ3JhZGVkIHRvIGEgc2hpbnkgbmV3IGdyYXBoaWNzIGNhcmQgdGhhdCBoYXMgYmV0dGVy
IGFudGktYWxpYXNpbmc/IFN1ZGRlbmx5IHlvdSBoYXZlIHRvIHVwZGF0ZSBhbGwgeW91ciBnb2xk
ZW4gaW1hZ2VzLikuIEl0IHdvdWxkIGJlIHRvbyBwYWluZnVsIGlmIGFsbCB5b3VyIHRlc3RzIGFy
ZSBsaWtlIHRoaXMuIEZvcnR1bmF0ZWx5LCB5b3UgbGVhcm5lZCBhYm91dCBEZXBlbmRlbmN5IElu
amVjdGlvbiBhbmQga25vdyB0aGUgcmlnaHQgdGhpbmcgdG8gZG86IGluc3RlYWQgb2YgaGF2aW5n
IHlvdXIgYXBwbGljYXRpb24gdGFsayB0byB0aGUgZHJhd2luZyBBUEkgZGlyZWN0bHksIHdyYXAg
dGhlIEFQSSBpbiBhbiBpbnRlcmZhY2UgKHNheSwgYFR1cnRsZWApIGFuZCBjb2RlIHRvIHRoYXQg
aW50ZXJmYWNlOgotCi1gYGAKLWNsYXNzIFR1cnRsZSB7Ci0gIC4uLgotICB2aXJ0dWFsIH5UdXJ0
bGUoKSB7fQotICB2aXJ0dWFsIHZvaWQgUGVuVXAoKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQZW5E
b3duKCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgRm9yd2FyZChpbnQgZGlzdGFuY2UpID0gMDsKLSAg
dmlydHVhbCB2b2lkIFR1cm4oaW50IGRlZ3JlZXMpID0gMDsKLSAgdmlydHVhbCB2b2lkIEdvVG8o
aW50IHgsIGludCB5KSA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFgoKSBjb25zdCA9IDA7Ci0gIHZp
cnR1YWwgaW50IEdldFkoKSBjb25zdCA9IDA7Ci19OwotYGBgCi0KLShOb3RlIHRoYXQgdGhlIGRl
c3RydWN0b3Igb2YgYFR1cnRsZWAgKiptdXN0KiogYmUgdmlydHVhbCwgYXMgaXMgdGhlIGNhc2Ug
Zm9yICoqYWxsKiogY2xhc3NlcyB5b3UgaW50ZW5kIHRvIGluaGVyaXQgZnJvbSAtIG90aGVyd2lz
ZSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgZGVyaXZlZCBjbGFzcyB3aWxsIG5vdCBiZSBjYWxsZWQg
d2hlbiB5b3UgZGVsZXRlIGFuIG9iamVjdCB0aHJvdWdoIGEgYmFzZSBwb2ludGVyLCBhbmQgeW91
J2xsIGdldCBjb3JydXB0ZWQgcHJvZ3JhbSBzdGF0ZXMgbGlrZSBtZW1vcnkgbGVha3MuKQotCi1Z
b3UgY2FuIGNvbnRyb2wgd2hldGhlciB0aGUgdHVydGxlJ3MgbW92ZW1lbnQgd2lsbCBsZWF2ZSBh
IHRyYWNlIHVzaW5nIGBQZW5VcCgpYCBhbmQgYFBlbkRvd24oKWAsIGFuZCBjb250cm9sIGl0cyBt
b3ZlbWVudCB1c2luZyBgRm9yd2FyZCgpYCwgYFR1cm4oKWAsIGFuZCBgR29UbygpYC4gRmluYWxs
eSwgYEdldFgoKWAgYW5kIGBHZXRZKClgIHRlbGwgeW91IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9m
IHRoZSB0dXJ0bGUuCi0KLVlvdXIgcHJvZ3JhbSB3aWxsIG5vcm1hbGx5IHVzZSBhIHJlYWwgaW1w
bGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuIEluIHRlc3RzLCB5b3UgY2FuIHVzZSBhIG1v
Y2sgaW1wbGVtZW50YXRpb24gaW5zdGVhZC4gVGhpcyBhbGxvd3MgeW91IHRvIGVhc2lseSBjaGVj
ayB3aGF0IGRyYXdpbmcgcHJpbWl0aXZlcyB5b3VyIHByb2dyYW0gaXMgY2FsbGluZywgd2l0aCB3
aGF0IGFyZ3VtZW50cywgYW5kIGluIHdoaWNoIG9yZGVyLiBUZXN0cyB3cml0dGVuIHRoaXMgd2F5
IGFyZSBtdWNoIG1vcmUgcm9idXN0ICh0aGV5IHdvbid0IGJyZWFrIGJlY2F1c2UgeW91ciBuZXcg
bWFjaGluZSBkb2VzIGFudGktYWxpYXNpbmcgZGlmZmVyZW50bHkpLCBlYXNpZXIgdG8gcmVhZCBh
bmQgbWFpbnRhaW4gKHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGlzIGV4cHJlc3NlZCBpbiB0aGUgY29k
ZSwgbm90IGluIHNvbWUgYmluYXJ5IGltYWdlcyksIGFuZCBydW4gX211Y2gsIG11Y2ggZmFzdGVy
Xy4KLQotIyBXcml0aW5nIHRoZSBNb2NrIENsYXNzICMKLUlmIHlvdSBhcmUgbHVja3ksIHRoZSBt
b2NrcyB5b3UgbmVlZCB0byB1c2UgaGF2ZSBhbHJlYWR5IGJlZW4gaW1wbGVtZW50ZWQgYnkgc29t
ZSBuaWNlIHBlb3BsZS4gSWYsIGhvd2V2ZXIsIHlvdSBmaW5kIHlvdXJzZWxmIGluIHRoZSBwb3Np
dGlvbiB0byB3cml0ZSBhIG1vY2sgY2xhc3MsIHJlbGF4IC0gR29vZ2xlIE1vY2sgdHVybnMgdGhp
cyB0YXNrIGludG8gYSBmdW4gZ2FtZSEgKFdlbGwsIGFsbW9zdC4pCi0KLSMjIEhvdyB0byBEZWZp
bmUgSXQgIyMKLVVzaW5nIHRoZSBgVHVydGxlYCBpbnRlcmZhY2UgYXMgZXhhbXBsZSwgaGVyZSBh
cmUgdGhlIHNpbXBsZSBzdGVwcyB5b3UgbmVlZCB0byBmb2xsb3c6Ci0KLSAgMS4gRGVyaXZlIGEg
Y2xhc3MgYE1vY2tUdXJ0bGVgIGZyb20gYFR1cnRsZWAuCi0gIDEuIFRha2UgYSBfdmlydHVhbF8g
ZnVuY3Rpb24gb2YgYFR1cnRsZWAgKHdoaWxlIGl0J3MgcG9zc2libGUgdG8gW21vY2sgbm9uLXZp
cnR1YWwgbWV0aG9kcyB1c2luZyB0ZW1wbGF0ZXNdKENvb2tCb29rLm1kI21vY2tpbmctbm9udmly
dHVhbC1tZXRob2RzKSwgaXQncyBtdWNoIG1vcmUgaW52b2x2ZWQpLiBDb3VudCBob3cgbWFueSBh
cmd1bWVudHMgaXQgaGFzLgotICAxLiBJbiB0aGUgYHB1YmxpYzpgIHNlY3Rpb24gb2YgdGhlIGNo
aWxkIGNsYXNzLCB3cml0ZSBgTU9DS19NRVRIT0RuKCk7YCAob3IgYE1PQ0tfQ09OU1RfTUVUSE9E
bigpO2AgaWYgeW91IGFyZSBtb2NraW5nIGEgYGNvbnN0YCBtZXRob2QpLCB3aGVyZSBgbmAgaXMg
dGhlIG51bWJlciBvZiB0aGUgYXJndW1lbnRzOyBpZiB5b3UgY291bnRlZCB3cm9uZywgc2hhbWUg
b24geW91LCBhbmQgYSBjb21waWxlciBlcnJvciB3aWxsIHRlbGwgeW91IHNvLgotICAxLiBOb3cg
Y29tZXMgdGhlIGZ1biBwYXJ0OiB5b3UgdGFrZSB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBjdXQt
YW5kLXBhc3RlIHRoZSBfZnVuY3Rpb24gbmFtZV8gYXMgdGhlIF9maXJzdF8gYXJndW1lbnQgdG8g
dGhlIG1hY3JvLCBhbmQgbGVhdmUgd2hhdCdzIGxlZnQgYXMgdGhlIF9zZWNvbmRfIGFyZ3VtZW50
IChpbiBjYXNlIHlvdSdyZSBjdXJpb3VzLCB0aGlzIGlzIHRoZSBfdHlwZSBvZiB0aGUgZnVuY3Rp
b25fKS4KLSAgMS4gUmVwZWF0IHVudGlsIGFsbCB2aXJ0dWFsIGZ1bmN0aW9ucyB5b3Ugd2FudCB0
byBtb2NrIGFyZSBkb25lLgotCi1BZnRlciB0aGUgcHJvY2VzcywgeW91IHNob3VsZCBoYXZlIHNv
bWV0aGluZyBsaWtlOgotCi1gYGAKLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIiAgLy8gQnJpbmdz
IGluIEdvb2dsZSBNb2NrLgotY2xhc3MgTW9ja1R1cnRsZSA6IHB1YmxpYyBUdXJ0bGUgewotIHB1
YmxpYzoKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMChQZW5VcCwgdm9pZCgpKTsKLSAgTU9DS19NRVRI
T0QwKFBlbkRvd24sIHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShGb3J3YXJkLCB2b2lkKGludCBk
aXN0YW5jZSkpOwotICBNT0NLX01FVEhPRDEoVHVybiwgdm9pZChpbnQgZGVncmVlcykpOwotICBN
T0NLX01FVEhPRDIoR29Ubywgdm9pZChpbnQgeCwgaW50IHkpKTsKLSAgTU9DS19DT05TVF9NRVRI
T0QwKEdldFgsIGludCgpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldFksIGludCgpKTsKLX07
Ci1gYGAKLQotWW91IGRvbid0IG5lZWQgdG8gZGVmaW5lIHRoZXNlIG1vY2sgbWV0aG9kcyBzb21l
d2hlcmUgZWxzZSAtIHRoZSBgTU9DS19NRVRIT0QqYCBtYWNyb3Mgd2lsbCBnZW5lcmF0ZSB0aGUg
ZGVmaW5pdGlvbnMgZm9yIHlvdS4gSXQncyB0aGF0IHNpbXBsZSEgT25jZSB5b3UgZ2V0IHRoZSBo
YW5nIG9mIGl0LCB5b3UgY2FuIHB1bXAgb3V0IG1vY2sgY2xhc3NlcyBmYXN0ZXIgdGhhbiB5b3Vy
IHNvdXJjZS1jb250cm9sIHN5c3RlbSBjYW4gaGFuZGxlIHlvdXIgY2hlY2staW5zLgotCi0qKlRp
cDoqKiBJZiBldmVuIHRoaXMgaXMgdG9vIG11Y2ggd29yayBmb3IgeW91LCB5b3UnbGwgZmluZCB0
aGUKLWBnbW9ja19nZW4ucHlgIHRvb2wgaW4gR29vZ2xlIE1vY2sncyBgc2NyaXB0cy9nZW5lcmF0
b3IvYCBkaXJlY3RvcnkgKGNvdXJ0ZXN5IG9mIHRoZSBbY3BwY2xlYW5dKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9jcHBjbGVhbi8pIHByb2plY3QpIHVzZWZ1bC4gIFRoaXMgY29tbWFuZC1saW5l
Ci10b29sIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgUHl0aG9uIDIuNCBpbnN0YWxsZWQuICBZb3Ug
Z2l2ZSBpdCBhIEMrKyBmaWxlIGFuZCB0aGUgbmFtZSBvZiBhbiBhYnN0cmFjdCBjbGFzcyBkZWZp
bmVkIGluIGl0LAotYW5kIGl0IHdpbGwgcHJpbnQgdGhlIGRlZmluaXRpb24gb2YgdGhlIG1vY2sg
Y2xhc3MgZm9yIHlvdS4gIER1ZSB0byB0aGUKLWNvbXBsZXhpdHkgb2YgdGhlIEMrKyBsYW5ndWFn
ZSwgdGhpcyBzY3JpcHQgbWF5IG5vdCBhbHdheXMgd29yaywgYnV0Ci1pdCBjYW4gYmUgcXVpdGUg
aGFuZHkgd2hlbiBpdCBkb2VzLiAgRm9yIG1vcmUgZGV0YWlscywgcmVhZCB0aGUgW3VzZXIgZG9j
dW1lbnRhdGlvbl0oLi4vc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FKS4KLQotIyMgV2hlcmUgdG8g
UHV0IEl0ICMjCi1XaGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVlZCB0byBkZWNp
ZGUgd2hlcmUgdG8gcHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBlb3BsZSBwdXQgaXQgaW4gYSBg
Kl90ZXN0LmNjYC4gVGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVyZmFjZSBiZWluZyBtb2NrZWQg
KHNheSwgYEZvb2ApIGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFtLiBPdGhlcndp
c2UsIHdoZW4gdGhlIG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQsIHlvdXIgdGVzdCBjb3VsZCBi
cmVhay4gKFlvdSBjYW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5lciB0byBmaXgg
ZXZlcnkgdGVzdCB0aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQotCi1TbywgdGhlIHJ1bGUgb2Yg
dGh1bWIgaXM6IGlmIHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3duZWQgYnkgb3Ro
ZXJzLCBkZWZpbmUgdGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBwYWNrYWdlIChiZXR0ZXIsIGlu
IGEgYHRlc3RpbmdgIHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFybHkgc2VwYXJh
dGUgcHJvZHVjdGlvbiBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBwdXQgaXQgaW4g
YSBgbW9ja19mb28uaGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9ja19mb28uaGAg
ZnJvbSB0aGVpciB0ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBpcyBvbmx5IG9u
ZSBjb3B5IG9mIGBNb2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRoYXQgZGVwZW5k
IG9uIHRoZSBjaGFuZ2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhlZC4KLQotQW5vdGhlciB3YXkg
dG8gZG8gaXQ6IHlvdSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXllciBgRm9vQWRhcHRvcmAgb24g
dG9wIG9mIGBGb29gIGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVyZmFjZS4gU2luY2UgeW91IG93
biBgRm9vQWRhcHRvcmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMgaW4gYEZvb2AgbXVjaCBtb3Jl
IGVhc2lseS4gV2hpbGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJlZnVsbHkgY2hv
b3NpbmcgdGhlIGFkYXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlvdXIgY29kZSBlYXNpZXIgdG8g
d3JpdGUgYW5kIG1vcmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBydW4pLCBhcyB5
b3UgY2FuIGNob29zZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIgc3BlY2lmaWMgZG9tYWluIG11
Y2ggYmV0dGVyIHRoYW4gYEZvb2AgZG9lcy4KLQotIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCi1P
bmNlIHlvdSBoYXZlIGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMgZWFzeS4gVGhlIHR5cGljYWwg
d29yayBmbG93IGlzOgotCi0gIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgZnJvbSB0
aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNhbiB1c2UgdGhlbSB1bnF1YWxp
ZmllZCAoWW91IG9ubHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBmaWxlLiBSZW1lbWJlciB0aGF0
IG5hbWVzcGFjZXMgYXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZvciB5b3VyIGhlYWx0aC4pLgot
ICAxLiBDcmVhdGUgc29tZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNwZWNpZnkgeW91ciBleHBlY3Rh
dGlvbnMgb24gdGhlbSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1ldGhvZCBiZSBjYWxsZWQ/IFdp
dGggd2hhdCBhcmd1bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBldGMuKS4KLSAgMS4gRXhlcmNp
c2Ugc29tZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNoZWNrIHRoZSBy
ZXN1bHQgdXNpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBj
YWxsZWQgbW9yZSB0aGFuIGV4cGVjdGVkIG9yIHdpdGggd3JvbmcgYXJndW1lbnRzLCB5b3UnbGwg
Z2V0IGFuIGVycm9yIGltbWVkaWF0ZWx5LgotICAxLiBXaGVuIGEgbW9jayBpcyBkZXN0cnVjdGVk
LCBHb29nbGUgTW9jayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgd2hldGhlciBhbGwgZXhwZWN0
YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhlcmUncyBhbiBleGFtcGxlOgot
Ci1gYGAKLSNpbmNsdWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgiCi0jaW5jbHVkZSAiZ21vY2sv
Z21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotdXNpbmcgOjp0ZXN0aW5nOjpBdExl
YXN0OyAgICAgICAgICAgICAgICAgICAgIC8vICMxCi0KLVRFU1QoUGFpbnRlclRlc3QsIENhbkRy
YXdTb21ldGhpbmcpIHsKLSAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAjMgotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSkgICAgICAgICAgICAg
IC8vICMzCi0gICAgICAuVGltZXMoQXRMZWFzdCgxKSk7Ci0KLSAgUGFpbnRlciBwYWludGVyKCZ0
dXJ0bGUpOyAgICAgICAgICAgICAgICAgICAvLyAjNAotCi0gIEVYUEVDVF9UUlVFKHBhaW50ZXIu
RHJhd0NpcmNsZSgwLCAwLCAxMCkpOwotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vICM1Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewot
ICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRlZCB0byBpbml0aWFsaXplIEdv
b2dsZSBNb2NrCi0gIC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0
cy4KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0gIHJldHVybiBS
VU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotQXMgeW91IG1pZ2h0IGhhdmUgZ3Vlc3NlZCwgdGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLiBJ
ZiB0aGUgYHBhaW50ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwgeW91ciB0ZXN0
IHdpbGwgZmFpbCB3aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0KLWBgYAotcGF0aC90by9teV90
ZXN0LmNjOjExOTogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBt
YXRjaCB0aGlzIGV4cGVjdGF0aW9uOgotQWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsKLUV4cGVjdGVk
OiBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KLWBgYAotCi0qKlRpcCAxOioqIElmIHlvdSBydW4gdGhl
IHRlc3QgZnJvbSBhbiBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+YCBvbiB0aGUg
bGluZSBudW1iZXIgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1bXAgcmlnaHQg
dG8gdGhlIGZhaWxlZCBleHBlY3RhdGlvbi4KLQotKipUaXAgMjoqKiBJZiB5b3VyIG1vY2sgb2Jq
ZWN0cyBhcmUgbmV2ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3b24ndCBoYXBw
ZW4uIFRoZXJlZm9yZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVhayBjaGVja2Vy
IGluIHlvdXIgdGVzdHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhlYXAuCi0KLSoq
SW1wb3J0YW50IG5vdGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRpb25zIHRvIGJl
IHNldCAqKmJlZm9yZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBvdGhlcndpc2Ug
dGhlIGJlaGF2aW9yIGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRpY3VsYXIsIHlvdSBtdXN0bid0
IGludGVybGVhdmUgYEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgZnVuY3Rp
b25zLgotCi1UaGlzIG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVhZCBhcyBleHBl
Y3RpbmcgdGhhdCBhIGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5vdCB0aGF0IGEg
Y2FsbCBoYXMgb2NjdXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlrZSB0aGF0PyBX
ZWxsLCBzcGVjaWZ5aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93cyBHb29nbGUg
TW9jayB0byByZXBvcnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBpdCBhcmlzZXMsIHdoZW4gdGhl
IGNvbnRleHQgKHN0YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBtYWtl
cyBkZWJ1Z2dpbmcgbXVjaCBlYXNpZXIuCi0KLUFkbWl0dGVkbHksIHRoaXMgdGVzdCBpcyBjb250
cml2ZWQgYW5kIGRvZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2ZSB0aGUgc2Ft
ZSBlZmZlY3Qgd2l0aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93ZXZlciwgYXMgd2Ugc2hhbGwg
cmV2ZWFsIHNvb24sIEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gZG8gX211Y2ggbW9yZV8gd2l0
aCB0aGUgbW9ja3MuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggQW55IFRlc3RpbmcgRnJh
bWV3b3JrICMjCi1JZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gR29vZ2xl
IFRlc3QgKGUuZy4gW0NwcFVuaXRdKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvY3Bw
dW5pdC8pIG9yCi1bQ3h4VGVzdF0oaHR0cDovL2N4eHRlc3QudGlncmlzLm9yZy8pKSBhcyB5b3Vy
IHRlc3RpbmcgZnJhbWV3b3JrLCBqdXN0IGNoYW5nZSB0aGUgYG1haW4oKWAgZnVuY3Rpb24gaW4g
dGhlIHByZXZpb3VzIHNlY3Rpb24gdG86Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikgewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgY2F1c2VzIEdvb2dsZSBNb2NrIHRvIHRo
cm93IGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLAotICAvLyB3aGljaCB3aWxsIGJlIGludGVycHJl
dGVkIGJ5IHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgYXMgYSB0ZXN0IGZhaWx1cmUuCi0gIDo6dGVz
dGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7Ci0gIDo6dGVzdGluZzo6
SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGFyZ3YpOwotICAuLi4gd2hhdGV2ZXIgeW91ciB0ZXN0aW5n
IGZyYW1ld29yayByZXF1aXJlcyAuLi4KLX0KLWBgYAotCi1UaGlzIGFwcHJvYWNoIGhhcyBhIGNh
dGNoOiBpdCBtYWtlcyBHb29nbGUgTW9jayB0aHJvdyBhbiBleGNlcHRpb24KLWZyb20gYSBtb2Nr
IG9iamVjdCdzIGRlc3RydWN0b3Igc29tZXRpbWVzLiAgV2l0aCBzb21lIGNvbXBpbGVycywgdGhp
cwotc29tZXRpbWVzIGNhdXNlcyB0aGUgdGVzdCBwcm9ncmFtIHRvIGNyYXNoLiAgWW91J2xsIHN0
aWxsIGJlIGFibGUgdG8KLW5vdGljZSB0aGF0IHRoZSB0ZXN0IGhhcyBmYWlsZWQsIGJ1dCBpdCdz
IG5vdCBhIGdyYWNlZnVsIGZhaWx1cmUuCi0KLUEgYmV0dGVyIHNvbHV0aW9uIGlzIHRvIHVzZSBH
b29nbGUgVGVzdCdzCi1bZXZlbnQgbGlzdGVuZXIgQVBJXSguLi8uLi9nb29nbGV0ZXN0L2RvY3Mv
QWR2YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFuZGxpbmctdGVzdC1l
dmVudHMpCi10byByZXBvcnQgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0aW5nIGZyYW1ld29y
ayBwcm9wZXJseS4gIFlvdSdsbCBuZWVkIHRvCi1pbXBsZW1lbnQgdGhlIGBPblRlc3RQYXJ0UmVz
dWx0KClgIG1ldGhvZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgaW50ZXJmYWNlLCBidXQgaXQKLXNo
b3VsZCBiZSBzdHJhaWdodGZvcndhcmQuCi0KLUlmIHRoaXMgdHVybnMgb3V0IHRvIGJlIHRvbyBt
dWNoIHdvcmssIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RpY2sgd2l0aAotR29vZ2xlIFRlc3QsIHdo
aWNoIHdvcmtzIHdpdGggR29vZ2xlIE1vY2sgc2VhbWxlc3NseSAoaW4gZmFjdCwgaXQgaXMKLXRl
Y2huaWNhbGx5IHBhcnQgb2YgR29vZ2xlIE1vY2suKS4gIElmIHRoZXJlIGlzIGEgcmVhc29uIHRo
YXQgeW91Ci1jYW5ub3QgdXNlIEdvb2dsZSBUZXN0LCBwbGVhc2UgbGV0IHVzIGtub3cuCi0KLSMg
U2V0dGluZyBFeHBlY3RhdGlvbnMgIwotVGhlIGtleSB0byB1c2luZyBhIG1vY2sgb2JqZWN0IHN1
Y2Nlc3NmdWxseSBpcyB0byBzZXQgdGhlIF9yaWdodCBleHBlY3RhdGlvbnNfIG9uIGl0LiBJZiB5
b3Ugc2V0IHRoZSBleHBlY3RhdGlvbnMgdG9vIHN0cmljdCwgeW91ciB0ZXN0IHdpbGwgZmFpbCBh
cyB0aGUgcmVzdWx0IG9mIHVucmVsYXRlZCBjaGFuZ2VzLiBJZiB5b3Ugc2V0IHRoZW0gdG9vIGxv
b3NlLCBidWdzIGNhbiBzbGlwIHRocm91Z2guIFlvdSB3YW50IHRvIGRvIGl0IGp1c3QgcmlnaHQg
c3VjaCB0aGF0IHlvdXIgdGVzdCBjYW4gY2F0Y2ggZXhhY3RseSB0aGUga2luZCBvZiBidWdzIHlv
dSBpbnRlbmQgaXQgdG8gY2F0Y2guIEdvb2dsZSBNb2NrIHByb3ZpZGVzIHRoZSBuZWNlc3Nhcnkg
bWVhbnMgZm9yIHlvdSB0byBkbyBpdCAianVzdCByaWdodC4iCi0KLSMjIEdlbmVyYWwgU3ludGF4
ICMjCi1JbiBHb29nbGUgTW9jayB3ZSB1c2UgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBtYWNybyB0byBz
ZXQgYW4gZXhwZWN0YXRpb24gb24gYSBtb2NrIG1ldGhvZC4gVGhlIGdlbmVyYWwgc3ludGF4IGlz
OgotCi1gYGAKLUVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQotICAg
IC5UaW1lcyhjYXJkaW5hbGl0eSkKLSAgICAuV2lsbE9uY2UoYWN0aW9uKQotICAgIC5XaWxsUmVw
ZWF0ZWRseShhY3Rpb24pOwotYGBgCi0KLVRoZSBtYWNybyBoYXMgdHdvIGFyZ3VtZW50czogZmly
c3QgdGhlIG1vY2sgb2JqZWN0LCBhbmQgdGhlbiB0aGUgbWV0aG9kIGFuZCBpdHMgYXJndW1lbnRz
LiBOb3RlIHRoYXQgdGhlIHR3byBhcmUgc2VwYXJhdGVkIGJ5IGEgY29tbWEgKGAsYCksIG5vdCBh
IHBlcmlvZCAoYC5gKS4gKFdoeSB1c2luZyBhIGNvbW1hPyBUaGUgYW5zd2VyIGlzIHRoYXQgaXQg
d2FzIG5lY2Vzc2FyeSBmb3IgdGVjaG5pY2FsIHJlYXNvbnMuKQotCi1UaGUgbWFjcm8gY2FuIGJl
IGZvbGxvd2VkIGJ5IHNvbWUgb3B0aW9uYWwgX2NsYXVzZXNfIHRoYXQgcHJvdmlkZSBtb3JlIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBleHBlY3RhdGlvbi4gV2UnbGwgZGlzY3VzcyBob3cgZWFjaCBj
bGF1c2Ugd29ya3MgaW4gdGhlIGNvbWluZyBzZWN0aW9ucy4KLQotVGhpcyBzeW50YXggaXMgZGVz
aWduZWQgdG8gbWFrZSBhbiBleHBlY3RhdGlvbiByZWFkIGxpa2UgRW5nbGlzaC4gRm9yIGV4YW1w
bGUsIHlvdSBjYW4gcHJvYmFibHkgZ3Vlc3MgdGhhdAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
UmV0dXJuOy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0gICAgLlRpbWVzKDUpCi0g
ICAgLldpbGxPbmNlKFJldHVybigxMDApKQotICAgIC5XaWxsT25jZShSZXR1cm4oMTUwKSkKLSAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIwMCkpOwotYGBgCi0KLXNheXMgdGhhdCB0aGUgYHR1
cnRsZWAgb2JqZWN0J3MgYEdldFgoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZpdmUgdGltZXMs
IGl0IHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMTUwIHRoZSBzZWNvbmQgdGltZSwg
YW5kIHRoZW4gMjAwIGV2ZXJ5IHRpbWUuIFNvbWUgcGVvcGxlIGxpa2UgdG8gY2FsbCB0aGlzIHN0
eWxlIG9mIHN5bnRheCBhIERvbWFpbi1TcGVjaWZpYyBMYW5ndWFnZSAoRFNMKS4KLQotKipOb3Rl
OioqIFdoeSBkbyB3ZSB1c2UgYSBtYWNybyB0byBkbyB0aGlzPyBJdCBzZXJ2ZXMgdHdvIHB1cnBv
c2VzOiBmaXJzdCBpdCBtYWtlcyBleHBlY3RhdGlvbnMgZWFzaWx5IGlkZW50aWZpYWJsZSAoZWl0
aGVyIGJ5IGBncmVwYCBvciBieSBhIGh1bWFuIHJlYWRlciksIGFuZCBzZWNvbmQgaXQgYWxsb3dz
IEdvb2dsZSBNb2NrIHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9uIG9mIGEgZmFp
bGVkIGV4cGVjdGF0aW9uIGluIG1lc3NhZ2VzLCBtYWtpbmcgZGVidWdnaW5nIGVhc2llci4KLQot
IyMgTWF0Y2hlcnM6IFdoYXQgQXJndW1lbnRzIERvIFdlIEV4cGVjdD8gIyMKLVdoZW4gYSBtb2Nr
IGZ1bmN0aW9uIHRha2VzIGFyZ3VtZW50cywgd2UgbXVzdCBzcGVjaWZ5IHdoYXQgYXJndW1lbnRz
IHdlIGFyZSBleHBlY3Rpbmc7IGZvciBleGFtcGxlOgotCi1gYGAKLS8vIEV4cGVjdHMgdGhlIHR1
cnRsZSB0byBtb3ZlIGZvcndhcmQgYnkgMTAwIHVuaXRzLgotRVhQRUNUX0NBTEwodHVydGxlLCBG
b3J3YXJkKDEwMCkpOwotYGBgCi0KLVNvbWV0aW1lcyB5b3UgbWF5IG5vdCB3YW50IHRvIGJlIHRv
byBzcGVjaWZpYyAoUmVtZW1iZXIgdGhhdCB0YWxrIGFib3V0IHRlc3RzIGJlaW5nIHRvbyByaWdp
ZD8gT3ZlciBzcGVjaWZpY2F0aW9uIGxlYWRzIHRvIGJyaXR0bGUgdGVzdHMgYW5kIG9ic2N1cmVz
IHRoZSBpbnRlbnQgb2YgdGVzdHMuIFRoZXJlZm9yZSB3ZSBlbmNvdXJhZ2UgeW91IHRvIHNwZWNp
Znkgb25seSB3aGF0J3MgbmVjZXNzYXJ5IC0gbm8gbW9yZSwgbm8gbGVzcy4pLiBJZiB5b3UgY2Fy
ZSB0byBjaGVjayB0aGF0IGBGb3J3YXJkKClgIHdpbGwgYmUgY2FsbGVkIGJ1dCBhcmVuJ3QgaW50
ZXJlc3RlZCBpbiBpdHMgYWN0dWFsIGFyZ3VtZW50LCB3cml0ZSBgX2AgYXMgdGhlIGFyZ3VtZW50
LCB3aGljaCBtZWFucyAiYW55dGhpbmcgZ29lcyI6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
OwotLi4uCi0vLyBFeHBlY3RzIHRoZSB0dXJ0bGUgdG8gbW92ZSBmb3J3YXJkLgotRVhQRUNUX0NB
TEwodHVydGxlLCBGb3J3YXJkKF8pKTsKLWBgYAotCi1gX2AgaXMgYW4gaW5zdGFuY2Ugb2Ygd2hh
dCB3ZSBjYWxsICoqbWF0Y2hlcnMqKi4gQSBtYXRjaGVyIGlzIGxpa2UgYSBwcmVkaWNhdGUgYW5k
IGNhbiB0ZXN0IHdoZXRoZXIgYW4gYXJndW1lbnQgaXMgd2hhdCB3ZSdkIGV4cGVjdC4gWW91IGNh
biB1c2UgYSBtYXRjaGVyIGluc2lkZSBgRVhQRUNUX0NBTEwoKWAgd2hlcmV2ZXIgYSBmdW5jdGlv
biBhcmd1bWVudCBpcyBleHBlY3RlZC4KLQotQSBsaXN0IG9mIGJ1aWx0LWluIG1hdGNoZXJzIGNh
biBiZSBmb3VuZCBpbiB0aGUgW0NoZWF0U2hlZXRdKENoZWF0U2hlZXQubWQpLiBGb3IgZXhhbXBs
ZSwgaGVyZSdzIHRoZSBgR2VgIChncmVhdGVyIHRoYW4gb3IgZXF1YWwpIG1hdGNoZXI6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpHZTsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZChH
ZSgxMDApKSk7Ci1gYGAKLQotVGhpcyBjaGVja3MgdGhhdCB0aGUgdHVydGxlIHdpbGwgYmUgdG9s
ZCB0byBnbyBmb3J3YXJkIGJ5IGF0IGxlYXN0IDEwMCB1bml0cy4KLQotIyMgQ2FyZGluYWxpdGll
czogSG93IE1hbnkgVGltZXMgV2lsbCBJdCBCZSBDYWxsZWQ/ICMjCi1UaGUgZmlyc3QgY2xhdXNl
IHdlIGNhbiBzcGVjaWZ5IGZvbGxvd2luZyBhbiBgRVhQRUNUX0NBTEwoKWAgaXMgYFRpbWVzKClg
LiBXZSBjYWxsIGl0cyBhcmd1bWVudCBhICoqY2FyZGluYWxpdHkqKiBhcyBpdCB0ZWxscyBfaG93
IG1hbnkgdGltZXNfIHRoZSBjYWxsIHNob3VsZCBvY2N1ci4gSXQgYWxsb3dzIHVzIHRvIHJlcGVh
dCBhbiBleHBlY3RhdGlvbiBtYW55IHRpbWVzIHdpdGhvdXQgYWN0dWFsbHkgd3JpdGluZyBpdCBh
cyBtYW55IHRpbWVzLiBNb3JlIGltcG9ydGFudGx5LCBhIGNhcmRpbmFsaXR5IGNhbiBiZSAiZnV6
enkiLCBqdXN0IGxpa2UgYSBtYXRjaGVyIGNhbiBiZS4gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIGV4
cHJlc3MgdGhlIGludGVudCBvZiBhIHRlc3QgZXhhY3RseS4KLQotQW4gaW50ZXJlc3Rpbmcgc3Bl
Y2lhbCBjYXNlIGlzIHdoZW4gd2Ugc2F5IGBUaW1lcygwKWAuIFlvdSBtYXkgaGF2ZSBndWVzc2Vk
IC0gaXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIHRo
ZSBnaXZlbiBhcmd1bWVudHMgYXQgYWxsLCBhbmQgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYSBH
b29nbGUgVGVzdCBmYWlsdXJlIHdoZW5ldmVyIHRoZSBmdW5jdGlvbiBpcyAod3JvbmdmdWxseSkg
Y2FsbGVkLgotCi1XZSd2ZSBzZWVuIGBBdExlYXN0KG4pYCBhcyBhbiBleGFtcGxlIG9mIGZ1enp5
IGNhcmRpbmFsaXRpZXMgZWFybGllci4gRm9yIHRoZSBsaXN0IG9mIGJ1aWx0LWluIGNhcmRpbmFs
aXRpZXMgeW91IGNhbiB1c2UsIHNlZSB0aGUgW0NoZWF0U2hlZXRdKENoZWF0U2hlZXQubWQpLgot
Ci1UaGUgYFRpbWVzKClgIGNsYXVzZSBjYW4gYmUgb21pdHRlZC4gKipJZiB5b3Ugb21pdCBgVGlt
ZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgaW5mZXIgdGhlIGNhcmRpbmFsaXR5IGZvciB5b3UuKiog
VGhlIHJ1bGVzIGFyZSBlYXN5IHRvIHJlbWVtYmVyOgotCi0gICogSWYgKipuZWl0aGVyKiogYFdp
bGxPbmNlKClgICoqbm9yKiogYFdpbGxSZXBlYXRlZGx5KClgIGlzIGluIHRoZSBgRVhQRUNUX0NB
TEwoKWAsIHRoZSBpbmZlcnJlZCBjYXJkaW5hbGl0eSBpcyBgVGltZXMoMSlgLgotICAqIElmIHRo
ZXJlIGFyZSBgbiBXaWxsT25jZSgpYCdzIGJ1dCAqKm5vKiogYFdpbGxSZXBlYXRlZGx5KClgLCB3
aGVyZSBgbmAgPj0gMSwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhuKWAuCi0gICogSWYgdGhl
cmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYW5kICoqb25lKiogYFdpbGxSZXBlYXRlZGx5KClgLCB3
aGVyZSBgbmAgPj0gMCwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhBdExlYXN0KG4pKWAuCi0K
LSoqUXVpY2sgcXVpejoqKiB3aGF0IGRvIHlvdSB0aGluayB3aWxsIGhhcHBlbiBpZiBhIGZ1bmN0
aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQgYWN0dWFsbHkgY2FsbGVkIGZv
dXIgdGltZXM/Ci0KLSMjIEFjdGlvbnM6IFdoYXQgU2hvdWxkIEl0IERvPyAjIwotUmVtZW1iZXIg
dGhhdCBhIG1vY2sgb2JqZWN0IGRvZXNuJ3QgcmVhbGx5IGhhdmUgYSB3b3JraW5nIGltcGxlbWVu
dGF0aW9uPyBXZSBhcyB1c2VycyBoYXZlIHRvIHRlbGwgaXQgd2hhdCB0byBkbyB3aGVuIGEgbWV0
aG9kIGlzIGludm9rZWQuIFRoaXMgaXMgZWFzeSBpbiBHb29nbGUgTW9jay4KLQotRmlyc3QsIGlm
IHRoZSByZXR1cm4gdHlwZSBvZiBhIG1vY2sgZnVuY3Rpb24gaXMgYSBidWlsdC1pbiB0eXBlIG9y
IGEgcG9pbnRlciwgdGhlIGZ1bmN0aW9uIGhhcyBhICoqZGVmYXVsdCBhY3Rpb24qKiAoYSBgdm9p
ZGAgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgYSBgYm9vbGAgZnVuY3Rpb24gd2lsbCByZXR1
cm4gYGZhbHNlYCwgYW5kIG90aGVyIGZ1bmN0aW9ucyB3aWxsIHJldHVybiAwKS4gSW4gYWRkaXRp
b24sIGluIEMrKyAxMSBhbmQgYWJvdmUsIGEgbW9jayBmdW5jdGlvbiB3aG9zZSByZXR1cm4gdHlw
ZSBpcyBkZWZhdWx0LWNvbnN0cnVjdGlibGUgKGkuZS4gaGFzIGEgZGVmYXVsdCBjb25zdHJ1Y3Rv
cikgaGFzIGEgZGVmYXVsdCBhY3Rpb24gb2YgcmV0dXJuaW5nIGEgZGVmYXVsdC1jb25zdHJ1Y3Rl
ZCB2YWx1ZS4gIElmIHlvdSBkb24ndCBzYXkgYW55dGhpbmcsIHRoaXMgYmVoYXZpb3Igd2lsbCBi
ZSB1c2VkLgotCi1TZWNvbmQsIGlmIGEgbW9jayBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYSBkZWZh
dWx0IGFjdGlvbiwgb3IgdGhlIGRlZmF1bHQgYWN0aW9uIGRvZXNuJ3Qgc3VpdCB5b3UsIHlvdSBj
YW4gc3BlY2lmeSB0aGUgYWN0aW9uIHRvIGJlIHRha2VuIGVhY2ggdGltZSB0aGUgZXhwZWN0YXRp
b24gbWF0Y2hlcyB1c2luZyBhIHNlcmllcyBvZiBgV2lsbE9uY2UoKWAgY2xhdXNlcyBmb2xsb3dl
ZCBieSBhbiBvcHRpb25hbCBgV2lsbFJlcGVhdGVkbHkoKWAuIEZvciBleGFtcGxlLAotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkp
Ci0gICAgLldpbGxPbmNlKFJldHVybigxMDApKQotICAgIC5XaWxsT25jZShSZXR1cm4oMjAwKSkK
LSAgICAuV2lsbE9uY2UoUmV0dXJuKDMwMCkpOwotYGBgCi0KLVRoaXMgc2F5cyB0aGF0IGB0dXJ0
bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBfZXhhY3RseSB0aHJlZSB0aW1lc18gKEdvb2dsZSBN
b2NrIGluZmVycmVkIHRoaXMgZnJvbSBob3cgbWFueSBgV2lsbE9uY2UoKWAgY2xhdXNlcyB3ZSd2
ZSB3cml0dGVuLCBzaW5jZSB3ZSBkaWRuJ3QgZXhwbGljaXRseSB3cml0ZSBgVGltZXMoKWApLCBh
bmQgd2lsbCByZXR1cm4gMTAwLCAyMDAsIGFuZCAzMDAgcmVzcGVjdGl2ZWx5LgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBHZXRZKCkpCi0g
ICAgLldpbGxPbmNlKFJldHVybigxMDApKQotICAgIC5XaWxsT25jZShSZXR1cm4oMjAwKSkKLSAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDMwMCkpOwotYGBgCi0KLXNheXMgdGhhdCBgdHVydGxl
LkdldFkoKWAgd2lsbCBiZSBjYWxsZWQgX2F0IGxlYXN0IHR3aWNlXyAoR29vZ2xlIE1vY2sga25v
d3MgdGhpcyBhcyB3ZSd2ZSB3cml0dGVuIHR3byBgV2lsbE9uY2UoKWAgY2xhdXNlcyBhbmQgYSBg
V2lsbFJlcGVhdGVkbHkoKWAgd2hpbGUgaGF2aW5nIG5vIGV4cGxpY2l0IGBUaW1lcygpYCksIHdp
bGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMjAwIHRoZSBzZWNvbmQgdGltZSwgYW5kIDMw
MCBmcm9tIHRoZSB0aGlyZCB0aW1lIG9uLgotCi1PZiBjb3Vyc2UsIGlmIHlvdSBleHBsaWNpdGx5
IHdyaXRlIGEgYFRpbWVzKClgLCBHb29nbGUgTW9jayB3aWxsIG5vdCB0cnkgdG8gaW5mZXIgdGhl
IGNhcmRpbmFsaXR5IGl0c2VsZi4gV2hhdCBpZiB0aGUgbnVtYmVyIHlvdSBzcGVjaWZpZWQgaXMg
bGFyZ2VyIHRoYW4gdGhlcmUgYXJlIGBXaWxsT25jZSgpYCBjbGF1c2VzPyBXZWxsLCBhZnRlciBh
bGwgYFdpbGxPbmNlKClgcyBhcmUgdXNlZCB1cCwgR29vZ2xlIE1vY2sgd2lsbCBkbyB0aGUgX2Rl
ZmF1bHRfIGFjdGlvbiBmb3IgdGhlIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUgKHVubGVzcywgb2YgY291
cnNlLCB5b3UgaGF2ZSBhIGBXaWxsUmVwZWF0ZWRseSgpYC4pLgotCi1XaGF0IGNhbiB3ZSBkbyBp
bnNpZGUgYFdpbGxPbmNlKClgIGJlc2lkZXMgYFJldHVybigpYD8gWW91IGNhbiByZXR1cm4gYSBy
ZWZlcmVuY2UgdXNpbmcgYFJldHVyblJlZih2YXJpYWJsZSlgLCBvciBpbnZva2UgYSBwcmUtZGVm
aW5lZCBmdW5jdGlvbiwgYW1vbmcgW290aGVyc10oQ2hlYXRTaGVldC5tZCNhY3Rpb25zKS4KLQot
KipJbXBvcnRhbnQgbm90ZToqKiBUaGUgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBldmFsdWF0
ZXMgdGhlIGFjdGlvbiBjbGF1c2Ugb25seSBvbmNlLCBldmVuIHRob3VnaCB0aGUgYWN0aW9uIG1h
eSBiZSBwZXJmb3JtZWQgbWFueSB0aW1lcy4gVGhlcmVmb3JlIHlvdSBtdXN0IGJlIGNhcmVmdWwg
YWJvdXQgc2lkZSBlZmZlY3RzLiBUaGUgZm9sbG93aW5nIG1heSBub3QgZG8gd2hhdCB5b3Ugd2Fu
dDoKLQotYGBgCi1pbnQgbiA9IDEwMDsKLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotLlRp
bWVzKDQpCi0uV2lsbFJlcGVhdGVkbHkoUmV0dXJuKG4rKykpOwotYGBgCi0KLUluc3RlYWQgb2Yg
cmV0dXJuaW5nIDEwMCwgMTAxLCAxMDIsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpcyBtb2NrIGZ1
bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAxMDAgYXMgYG4rK2AgaXMgb25seSBldmFsdWF0ZWQg
b25jZS4gU2ltaWxhcmx5LCBgUmV0dXJuKG5ldyBGb28pYCB3aWxsIGNyZWF0ZSBhIG5ldyBgRm9v
YCBvYmplY3Qgd2hlbiB0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLCBhbmQgd2lsbCBy
ZXR1cm4gdGhlIHNhbWUgcG9pbnRlciBldmVyeSB0aW1lLiBJZiB5b3Ugd2FudCB0aGUgc2lkZSBl
ZmZlY3QgdG8gaGFwcGVuIGV2ZXJ5IHRpbWUsIHlvdSBuZWVkIHRvIGRlZmluZSBhIGN1c3RvbSBh
Y3Rpb24sIHdoaWNoIHdlJ2xsIHRlYWNoIGluIHRoZSBbQ29va0Jvb2tdKENvb2tCb29rLm1kKS4K
LQotVGltZSBmb3IgYW5vdGhlciBxdWl6ISBXaGF0IGRvIHlvdSB0aGluayB0aGUgZm9sbG93aW5n
IG1lYW5zPwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQRUNUX0NBTEwo
dHVydGxlLCBHZXRZKCkpCi0uVGltZXMoNCkKLS5XaWxsT25jZShSZXR1cm4oMTAwKSk7Ci1gYGAK
LQotT2J2aW91c2x5IGB0dXJ0bGUuR2V0WSgpYCBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZm91
ciB0aW1lcy4gQnV0IGlmIHlvdSB0aGluayBpdCB3aWxsIHJldHVybiAxMDAgZXZlcnkgdGltZSwg
dGhpbmsgdHdpY2UhIFJlbWVtYmVyIHRoYXQgb25lIGBXaWxsT25jZSgpYCBjbGF1c2Ugd2lsbCBi
ZSBjb25zdW1lZCBlYWNoIHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGludm9rZWQgYW5kIHRoZSBkZWZh
dWx0IGFjdGlvbiB3aWxsIGJlIHRha2VuIGFmdGVyd2FyZHMuIFNvIHRoZSByaWdodCBhbnN3ZXIg
aXMgdGhhdCBgdHVydGxlLkdldFkoKWAgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCBi
dXQgKipyZXR1cm4gMCBmcm9tIHRoZSBzZWNvbmQgdGltZSBvbioqLCBhcyByZXR1cm5pbmcgMCBp
cyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGBpbnRgIGZ1bmN0aW9ucy4KLQotIyMgVXNpbmcgTXVs
dGlwbGUgRXhwZWN0YXRpb25zICMjCi1TbyBmYXIgd2UndmUgb25seSBzaG93biBleGFtcGxlcyB3
aGVyZSB5b3UgaGF2ZSBhIHNpbmdsZSBleHBlY3RhdGlvbi4gTW9yZSByZWFsaXN0aWNhbGx5LCB5
b3UncmUgZ29pbmcgdG8gc3BlY2lmeSBleHBlY3RhdGlvbnMgb24gbXVsdGlwbGUgbW9jayBtZXRo
b2RzLCB3aGljaCBtYXkgYmUgZnJvbSBtdWx0aXBsZSBtb2NrIG9iamVjdHMuCi0KLUJ5IGRlZmF1
bHQsIHdoZW4gYSBtb2NrIG1ldGhvZCBpcyBpbnZva2VkLCBHb29nbGUgTW9jayB3aWxsIHNlYXJj
aCB0aGUgZXhwZWN0YXRpb25zIGluIHRoZSAqKnJldmVyc2Ugb3JkZXIqKiB0aGV5IGFyZSBkZWZp
bmVkLCBhbmQgc3RvcCB3aGVuIGFuIGFjdGl2ZSBleHBlY3RhdGlvbiB0aGF0IG1hdGNoZXMgdGhl
IGFyZ3VtZW50cyBpcyBmb3VuZCAoeW91IGNhbiB0aGluayBvZiBpdCBhcyAibmV3ZXIgcnVsZXMg
b3ZlcnJpZGUgb2xkZXIgb25lcy4iKS4gSWYgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9uIGNhbm5v
dCB0YWtlIGFueSBtb3JlIGNhbGxzLCB5b3Ugd2lsbCBnZXQgYW4gdXBwZXItYm91bmQtdmlvbGF0
ZWQgZmFpbHVyZS4gSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
Oy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKF8pKTsgIC8vICMxCi1FWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEZvcndhcmQoMTApKSAgLy8gIzIKLSAgICAuVGltZXMoMik7Ci1gYGAKLQotSWYg
YEZvcndhcmQoMTApYCBpcyBjYWxsZWQgdGhyZWUgdGltZXMgaW4gYSByb3csIHRoZSB0aGlyZCB0
aW1lIGl0IHdpbGwgYmUgYW4gZXJyb3IsIGFzIHRoZSBsYXN0IG1hdGNoaW5nIGV4cGVjdGF0aW9u
ICgjMikgaGFzIGJlZW4gc2F0dXJhdGVkLiBJZiwgaG93ZXZlciwgdGhlIHRoaXJkIGBGb3J3YXJk
KDEwKWAgY2FsbCBpcyByZXBsYWNlZCBieSBgRm9yd2FyZCgyMClgLCB0aGVuIGl0IHdvdWxkIGJl
IE9LLCBhcyBub3cgIzEgd2lsbCBiZSB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24uCi0KLSoqU2lk
ZSBub3RlOioqIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJjaCBmb3IgYSBtYXRjaCBpbiB0aGUg
X3JldmVyc2VfIG9yZGVyIG9mIHRoZSBleHBlY3RhdGlvbnM/IFRoZSByZWFzb24gaXMgdGhhdCB0
aGlzIGFsbG93cyBhIHVzZXIgdG8gc2V0IHVwIHRoZSBkZWZhdWx0IGV4cGVjdGF0aW9ucyBpbiBh
IG1vY2sgb2JqZWN0J3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBw
aGFzZSBhbmQgdGhlbiBjdXN0b21pemUgdGhlIG1vY2sgYnkgd3JpdGluZyBtb3JlIHNwZWNpZmlj
IGV4cGVjdGF0aW9ucyBpbiB0aGUgdGVzdCBib2R5LiBTbywgaWYgeW91IGhhdmUgdHdvIGV4cGVj
dGF0aW9ucyBvbiB0aGUgc2FtZSBtZXRob2QsIHlvdSB3YW50IHRvIHB1dCB0aGUgb25lIHdpdGgg
bW9yZSBzcGVjaWZpYyBtYXRjaGVycyAqKmFmdGVyKiogdGhlIG90aGVyLCBvciB0aGUgbW9yZSBz
cGVjaWZpYyBydWxlIHdvdWxkIGJlIHNoYWRvd2VkIGJ5IHRoZSBtb3JlIGdlbmVyYWwgb25lIHRo
YXQgY29tZXMgYWZ0ZXIgaXQuCi0KLSMjIE9yZGVyZWQgdnMgVW5vcmRlcmVkIENhbGxzICMjCi1C
eSBkZWZhdWx0LCBhbiBleHBlY3RhdGlvbiBjYW4gbWF0Y2ggYSBjYWxsIGV2ZW4gdGhvdWdoIGFu
IGVhcmxpZXIgZXhwZWN0YXRpb24gaGFzbid0IGJlZW4gc2F0aXNmaWVkLiBJbiBvdGhlciB3b3Jk
cywgdGhlIGNhbGxzIGRvbid0IGhhdmUgdG8gb2NjdXIgaW4gdGhlIG9yZGVyIHRoZSBleHBlY3Rh
dGlvbnMgYXJlIHNwZWNpZmllZC4KLQotU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgYWxsIHRoZSBl
eHBlY3RlZCBjYWxscyB0byBvY2N1ciBpbiBhIHN0cmljdCBvcmRlci4gVG8gc2F5IHRoaXMgaW4g
R29vZ2xlIE1vY2sgaXMgZWFzeToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7
Li4uCi1URVNUKEZvb1Rlc3QsIERyYXdzTGluZVNlZ21lbnQpIHsKLSAgLi4uCi0gIHsKLSAgICBJ
blNlcXVlbmNlIGR1bW15OwotCi0gICAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5Eb3duKCkpOwot
ICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMDApKTsKLSAgICBFWFBFQ1RfQ0FMTCh0
dXJ0bGUsIFBlblVwKCkpOwotICB9Ci0gIEZvbygpOwotfQotYGBgCi0KLUJ5IGNyZWF0aW5nIGFu
IG9iamVjdCBvZiB0eXBlIGBJblNlcXVlbmNlYCwgYWxsIGV4cGVjdGF0aW9ucyBpbiBpdHMgc2Nv
cGUgYXJlIHB1dCBpbnRvIGEgX3NlcXVlbmNlXyBhbmQgaGF2ZSB0byBvY2N1ciBfc2VxdWVudGlh
bGx5Xy4gU2luY2Ugd2UgYXJlIGp1c3QgcmVseWluZyBvbiB0aGUgY29uc3RydWN0b3IgYW5kIGRl
c3RydWN0b3Igb2YgdGhpcyBvYmplY3QgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLCBpdHMgbmFtZSBp
cyByZWFsbHkgaXJyZWxldmFudC4KLQotSW4gdGhpcyBleGFtcGxlLCB3ZSB0ZXN0IHRoYXQgYEZv
bygpYCBjYWxscyB0aGUgdGhyZWUgZXhwZWN0ZWQgZnVuY3Rpb25zIGluIHRoZSBvcmRlciBhcyB3
cml0dGVuLiBJZiBhIGNhbGwgaXMgbWFkZSBvdXQtb2Ytb3JkZXIsIGl0IHdpbGwgYmUgYW4gZXJy
b3IuCi0KLShXaGF0IGlmIHlvdSBjYXJlIGFib3V0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBzb21l
IG9mIHRoZSBjYWxscywgYnV0IG5vdCBhbGwgb2YgdGhlbT8gQ2FuIHlvdSBzcGVjaWZ5IGFuIGFy
Yml0cmFyeSBwYXJ0aWFsIG9yZGVyPyBUaGUgYW5zd2VyIGlzIC4uLiB5ZXMhIElmIHlvdSBhcmUg
aW1wYXRpZW50LCB0aGUgZGV0YWlscyBjYW4gYmUgZm91bmQgaW4gdGhlIFtDb29rQm9va10oQ29v
a0Jvb2sjRXhwZWN0aW5nX1BhcnRpYWxseV9PcmRlcmVkX0NhbGxzLm1kKS4pCi0KLSMjIEFsbCBF
eHBlY3RhdGlvbnMgQXJlIFN0aWNreSAoVW5sZXNzIFNhaWQgT3RoZXJ3aXNlKSAjIwotTm93IGxl
dCdzIGRvIGEgcXVpY2sgcXVpeiB0byBzZWUgaG93IHdlbGwgeW91IGNhbiB1c2UgdGhpcyBtb2Nr
IHN0dWZmIGFscmVhZHkuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0IHRoZSB0dXJ0bGUgaXMgYXNr
ZWQgdG8gZ28gdG8gdGhlIG9yaWdpbiBfZXhhY3RseSB0d2ljZV8gKHlvdSB3YW50IHRvIGlnbm9y
ZSBhbnkgb3RoZXIgaW5zdHJ1Y3Rpb25zIGl0IHJlY2VpdmVzKT8KLQotQWZ0ZXIgeW91J3ZlIGNv
bWUgdXAgd2l0aCB5b3VyIGFuc3dlciwgdGFrZSBhIGxvb2sgYXQgb3VycyBhbmQgY29tcGFyZSBu
b3RlcyAoc29sdmUgaXQgeW91cnNlbGYgZmlyc3QgLSBkb24ndCBjaGVhdCEpOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6XzsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR29UbyhfLCBfKSkgIC8v
ICMxCi0gICAgLlRpbWVzKEFueU51bWJlcigpKTsKLUVYUEVDVF9DQUxMKHR1cnRsZSwgR29Ubygw
LCAwKSkgIC8vICMyCi0gICAgLlRpbWVzKDIpOwotYGBgCi0KLVN1cHBvc2UgYHR1cnRsZS5Hb1Rv
KDAsIDApYCBpcyBjYWxsZWQgdGhyZWUgdGltZXMuIEluIHRoZSB0aGlyZCB0aW1lLCBHb29nbGUg
TW9jayB3aWxsIHNlZSB0aGF0IHRoZSBhcmd1bWVudHMgbWF0Y2ggZXhwZWN0YXRpb24gIzIgKHJl
bWVtYmVyIHRoYXQgd2UgYWx3YXlzIHBpY2sgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24p
LiBOb3csIHNpbmNlIHdlIHNhaWQgdGhhdCB0aGVyZSBzaG91bGQgYmUgb25seSB0d28gc3VjaCBj
YWxscywgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IgaW1tZWRpYXRlbHkuIFRoaXMg
aXMgYmFzaWNhbGx5IHdoYXQgd2UndmUgdG9sZCB5b3UgaW4gdGhlICJVc2luZyBNdWx0aXBsZSBF
eHBlY3RhdGlvbnMiIHNlY3Rpb24gYWJvdmUuCi0KLVRoaXMgZXhhbXBsZSBzaG93cyB0aGF0ICoq
ZXhwZWN0YXRpb25zIGluIEdvb2dsZSBNb2NrIGFyZSAic3RpY2t5IiBieSBkZWZhdWx0KiosIGlu
IHRoZSBzZW5zZSB0aGF0IHRoZXkgcmVtYWluIGFjdGl2ZSBldmVuIGFmdGVyIHdlIGhhdmUgcmVh
Y2hlZCB0aGVpciBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kcy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQg
cnVsZSB0byByZW1lbWJlciwgYXMgaXQgYWZmZWN0cyB0aGUgbWVhbmluZyBvZiB0aGUgc3BlYywg
YW5kIGlzICoqZGlmZmVyZW50KiogdG8gaG93IGl0J3MgZG9uZSBpbiBtYW55IG90aGVyIG1vY2tp
bmcgZnJhbWV3b3JrcyAoV2h5J2Qgd2UgZG8gdGhhdD8gQmVjYXVzZSB3ZSB0aGluayBvdXIgcnVs
ZSBtYWtlcyB0aGUgY29tbW9uIGNhc2VzIGVhc2llciB0byBleHByZXNzIGFuZCB1bmRlcnN0YW5k
LikuCi0KLVNpbXBsZT8gTGV0J3Mgc2VlIGlmIHlvdSd2ZSByZWFsbHkgdW5kZXJzdG9vZCBpdDog
d2hhdCBkb2VzIHRoZSBmb2xsb3dpbmcgY29kZSBzYXk/Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Ci0uLi4KLWZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7Ci0gIEVYUEVDVF9D
QUxMKHR1cnRsZSwgR2V0WCgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxMCppKSk7Ci19Ci1g
YGAKLQotSWYgeW91IHRoaW5rIGl0IHNheXMgdGhhdCBgdHVydGxlLkdldFgoKWAgd2lsbCBiZSBj
YWxsZWQgYG5gIHRpbWVzIGFuZCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAuLi4sIGNvbnNlY3V0
aXZlbHksIHRoaW5rIHR3aWNlISBUaGUgcHJvYmxlbSBpcyB0aGF0LCBhcyB3ZSBzYWlkLCBleHBl
Y3RhdGlvbnMgYXJlIHN0aWNreS4gU28sIHRoZSBzZWNvbmQgdGltZSBgdHVydGxlLkdldFgoKWAg
aXMgY2FsbGVkLCB0aGUgbGFzdCAobGF0ZXN0KSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IHdp
bGwgbWF0Y2gsIGFuZCB3aWxsIGltbWVkaWF0ZWx5IGxlYWQgdG8gYW4gInVwcGVyIGJvdW5kIGV4
Y2VlZGVkIiBlcnJvciAtIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBub3QgdmVyeSB1c2VmdWwhCi0K
LU9uZSBjb3JyZWN0IHdheSBvZiBzYXlpbmcgdGhhdCBgdHVydGxlLkdldFgoKWAgd2lsbCByZXR1
cm4gMTAsIDIwLCAzMCwgLi4uLCBpcyB0byBleHBsaWNpdGx5IHNheSB0aGF0IHRoZSBleHBlY3Rh
dGlvbnMgYXJlIF9ub3RfIHN0aWNreS4gSW4gb3RoZXIgd29yZHMsIHRoZXkgc2hvdWxkIF9yZXRp
cmVfIGFzIHNvb24gYXMgdGhleSBhcmUgc2F0dXJhdGVkOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOwotLi4uCi1mb3IgKGludCBpID0gbjsgaSA+IDA7IGktLSkgewotICBFWFBFQ1Rf
Q0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKQotICAgIC5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotQW5kLCB0aGVyZSdzIGEgYmV0dGVyIHdh
eSB0byBkbyBpdDogaW4gdGhpcyBjYXNlLCB3ZSBleHBlY3QgdGhlIGNhbGxzIHRvIG9jY3VyIGlu
IGEgc3BlY2lmaWMgb3JkZXIsIGFuZCB3ZSBsaW5lIHVwIHRoZSBhY3Rpb25zIHRvIG1hdGNoIHRo
ZSBvcmRlci4gU2luY2UgdGhlIG9yZGVyIGlzIGltcG9ydGFudCBoZXJlLCB3ZSBzaG91bGQgbWFr
ZSBpdCBleHBsaWNpdCB1c2luZyBhIHNlcXVlbmNlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
SW5TZXF1ZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi17Ci0gIEluU2VxdWVu
Y2UgczsKLQotICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKLSAgICBFWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEdldFgoKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigxMCppKSkKLSAgICAg
ICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgfQotfQotYGBgCi0KLUJ5IHRoZSB3YXksIHRo
ZSBvdGhlciBzaXR1YXRpb24gd2hlcmUgYW4gZXhwZWN0YXRpb24gbWF5IF9ub3RfIGJlIHN0aWNr
eSBpcyB3aGVuIGl0J3MgaW4gYSBzZXF1ZW5jZSAtIGFzIHNvb24gYXMgYW5vdGhlciBleHBlY3Rh
dGlvbiB0aGF0IGNvbWVzIGFmdGVyIGl0IGluIHRoZSBzZXF1ZW5jZSBoYXMgYmVlbiB1c2VkLCBp
dCBhdXRvbWF0aWNhbGx5IHJldGlyZXMgKGFuZCB3aWxsIG5ldmVyIGJlIHVzZWQgdG8gbWF0Y2gg
YW55IGNhbGwpLgotCi0jIyBVbmludGVyZXN0aW5nIENhbGxzICMjCi1BIG1vY2sgb2JqZWN0IG1h
eSBoYXZlIG1hbnkgbWV0aG9kcywgYW5kIG5vdCBhbGwgb2YgdGhlbSBhcmUgdGhhdCBpbnRlcmVz
dGluZy4gRm9yIGV4YW1wbGUsIGluIHNvbWUgdGVzdHMgd2UgbWF5IG5vdCBjYXJlIGFib3V0IGhv
dyBtYW55IHRpbWVzIGBHZXRYKClgIGFuZCBgR2V0WSgpYCBnZXQgY2FsbGVkLgotCi1JbiBHb29n
bGUgTW9jaywgaWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBhIG1ldGhvZCwganVzdCBkb24n
dCBzYXkgYW55dGhpbmcgYWJvdXQgaXQuIElmIGEgY2FsbCB0byB0aGlzIG1ldGhvZCBvY2N1cnMs
IHlvdSdsbCBzZWUgYSB3YXJuaW5nIGluIHRoZSB0ZXN0IG91dHB1dCwgYnV0IGl0IHdvbid0IGJl
IGEgZmFpbHVyZS4KLQotIyBXaGF0IE5vdz8gIwotQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbGVh
cm5lZCBlbm91Z2ggYWJvdXQgR29vZ2xlIE1vY2sgdG8gc3RhcnQgdXNpbmcgaXQuIE5vdywgeW91
IG1pZ2h0IHdhbnQgdG8gam9pbiB0aGUgW2dvb2dsZW1vY2tdKGh0dHA6Ly9ncm91cHMuZ29vZ2xl
LmNvbS9ncm91cC9nb29nbGVtb2NrKSBkaXNjdXNzaW9uIGdyb3VwIGFuZCBhY3R1YWxseSB3cml0
ZSBzb21lIHRlc3RzIHVzaW5nIEdvb2dsZSBNb2NrIC0gaXQgd2lsbCBiZSBmdW4uIEhleSwgaXQg
bWF5IGV2ZW4gYmUgYWRkaWN0aXZlIC0geW91J3ZlIGJlZW4gd2FybmVkLgotCi1UaGVuLCBpZiB5
b3UgZmVlbCBsaWtlIGluY3JlYXNpbmcgeW91ciBtb2NrIHF1b3RpZW50LCB5b3Ugc2hvdWxkIG1v
dmUgb24gdG8gdGhlIFtDb29rQm9va10oQ29va0Jvb2subWQpLiBZb3UgY2FuIGxlYXJuIG1hbnkg
YWR2YW5jZWQgZmVhdHVyZXMgb2YgR29vZ2xlIE1vY2sgdGhlcmUgLS0gYW5kIGFkdmFuY2UgeW91
ciBsZXZlbCBvZiBlbmpveW1lbnQgYW5kIHRlc3RpbmcgYmxpc3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9kb2NzL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2Rv
Y3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ZWFjODNmNGI5ODAwYmMyNzkwZjM3NDJiNjI0YTY2MWIxY2I3MGZiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJl
cXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNjI4ICswLDAgQEAK
LQotCi1QbGVhc2Ugc2VuZCB5b3VyIHF1ZXN0aW9ucyB0byB0aGUKLVtnb29nbGVtb2NrXShodHRw
Oi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykgZGlzY3Vzc2lvbgotZ3JvdXAu
IElmIHlvdSBuZWVkIGhlbHAgd2l0aCBjb21waWxlciBlcnJvcnMsIG1ha2Ugc3VyZSB5b3UgaGF2
ZQotdHJpZWQgW0dvb2dsZSBNb2NrIERvY3Rvcl0oI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vf
c2Vuc2Vfb2ZfdGhlc2VfaG9ycmlibGVfdGVtcGxhdGVfZXJyb3IubWQpIGZpcnN0LgotCi0jIyBX
aGVuIEkgY2FsbCBhIG1ldGhvZCBvbiBteSBtb2NrIG9iamVjdCwgdGhlIG1ldGhvZCBmb3IgdGhl
IHJlYWwgb2JqZWN0IGlzIGludm9rZWQgaW5zdGVhZC4gIFdoYXQncyB0aGUgcHJvYmxlbT8gIyMK
LQotSW4gb3JkZXIgZm9yIGEgbWV0aG9kIHRvIGJlIG1vY2tlZCwgaXQgbXVzdCBiZSBfdmlydHVh
bF8sIHVubGVzcyB5b3UgdXNlIHRoZSBbaGlnaC1wZXJmIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHRl
Y2huaXF1ZV0oQ29va0Jvb2subWQjbW9ja2luZy1ub252aXJ0dWFsLW1ldGhvZHMpLgotCi0jIyBJ
IHdyb3RlIHNvbWUgbWF0Y2hlcnMuICBBZnRlciBJIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24g
b2YgR29vZ2xlIE1vY2ssIHRoZXkgbm8gbG9uZ2VyIGNvbXBpbGUuICBXaGF0J3MgZ29pbmcgb24/
ICMjCi0KLUFmdGVyIHZlcnNpb24gMS40LjAgb2YgR29vZ2xlIE1vY2sgd2FzIHJlbGVhc2VkLCB3
ZSBoYWQgYW4gaWRlYSBvbiBob3cKLXRvIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIG1hdGNoZXJz
IHRoYXQgY2FuIGdlbmVyYXRlIGluZm9ybWF0aXZlCi1tZXNzYWdlcyBlZmZpY2llbnRseS4gIFdl
IGV4cGVyaW1lbnRlZCB3aXRoIHRoaXMgaWRlYSBhbmQgbGlrZWQgd2hhdAotd2Ugc2F3LiAgVGhl
cmVmb3JlIHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGl0LgotCi1VbmZvcnR1bmF0ZWx5LCB0aGlz
IG1lYW5zIHRoYXQgaWYgeW91IGhhdmUgZGVmaW5lZCB5b3VyIG93biBtYXRjaGVycwotYnkgaW1w
bGVtZW50aW5nIGBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0
Y2hlcigpYCwKLXlvdXIgZGVmaW5pdGlvbnMgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIE1hdGNo
ZXJzIGRlZmluZWQgdXNpbmcgdGhlCi1gTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgYXJlIG5v
dCBhZmZlY3RlZC4KLQotU29ycnkgZm9yIHRoZSBoYXNzbGUgaWYgeW91ciBtYXRjaGVycyBhcmUg
YWZmZWN0ZWQuICBXZSBiZWxpZXZlIGl0J3MKLWluIGV2ZXJ5b25lJ3MgbG9uZy10ZXJtIGludGVy
ZXN0IHRvIG1ha2UgdGhpcyBjaGFuZ2Ugc29vbmVyIHRoYW4KLWxhdGVyLiAgRm9ydHVuYXRlbHks
IGl0J3MgdXN1YWxseSBub3QgaGFyZCB0byBtaWdyYXRlIGFuIGV4aXN0aW5nCi1tYXRjaGVyIHRv
IHRoZSBuZXcgQVBJLiAgSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0KLUlmIHlvdSB3cm90
ZSB5b3VyIG1hdGNoZXIgbGlrZSB0aGlzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4u
Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+
IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSBpdCB0bzoK
LWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVz
dCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxN
YXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAu
Li4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNv
bnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICByZXR1cm4g
dmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotKGkuZS4gcmVuYW1lIGBN
YXRjaGVzKClgIHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kIGdpdmUgaXQgYSBzZWNvbmQKLWFy
Z3VtZW50IG9mIHR5cGUgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYC4pCi0KLUlmIHlvdSB3ZXJlIGFs
c28gdXNpbmcgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvIGltcHJvdmUgdGhlIG1hdGNoZXIK
LW1lc3NhZ2U6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdv
cmsgd2l0aCB0aGUgbGFzdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1h
dGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBN
YXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9v
bCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2
YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oTXlUeXBlIHZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0g
ICAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gICAg
Ly8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gp
LgotICAgICpvcyA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOwot
ICB9Ci0gIC4uLgotfTsKLWBgYAotCi15b3Ugc2hvdWxkIG1vdmUgdGhlIGxvZ2ljIG9mIGBFeHBs
YWluTWF0Y2hSZXN1bHRUbygpYCBpbnRvCi1gTWF0Y2hBbmRFeHBsYWluKClgLCB1c2luZyB0aGUg
YE1hdGNoUmVzdWx0TGlzdGVuZXJgIGFyZ3VtZW50IHdoZXJlCi10aGUgYDo6c3RkOjpvc3RyZWFt
YCB3YXMgdXNlZDoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdp
dGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3Mg
TXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0g
cHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciog
bGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4K
LSAgICAqbGlzdGVuZXIgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRGb28o
KTsKLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAot
Ci1JZiB5b3VyIG1hdGNoZXIgaXMgZGVmaW5lZCB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hl
cigpYDoKLWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3
aXRoIHRoZSBsYXRlc3QKLS8vIEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgot
ICAuLi4KLSAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQy
OwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRj
aGVyKCkpIC4uLgotYGBgCi0KLXlvdSBzaG91bGQgcmVuYW1lIHRoZSBgTWF0Y2hlcygpYCBtZXRo
b2QgdG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQKLWFkZCBhIGBNYXRjaFJlc3VsdExpc3RlbmVy
KmAgYXJndW1lbnQgKHRoZSBzYW1lIGFzIHdoYXQgeW91IG5lZWQgdG8gZG8KLWZvciBtYXRjaGVy
cyBkZWZpbmVkIGJ5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFjZWApOgotYGBgCi0vLyBO
ZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBN
b2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0
ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7
Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2
YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUlmIHlvdXIgcG9seW1vcnBoaWMg
bWF0Y2hlciB1c2VzIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBmb3IgYmV0dGVyCi1mYWlsdXJl
IG1lc3NhZ2VzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3
b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1h
a2VQb2x5bW9ycGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIC4uLgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigp
IDwgNDI7Ci0gIH0KLSAgLi4uCi19Owotdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhjb25zdCBN
eUdyZWF0TWF0Y2hlciYgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUeXBl
IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
LSAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gIC8v
IGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1hdGNoKS4K
LSAgKm9zIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7Ci19Ci0u
Li4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KLWBgYAotCi15
b3UnbGwgbmVlZCB0byBtb3ZlIHRoZSBsb2dpYyBpbnNpZGUgYEV4cGxhaW5NYXRjaFJlc3VsdFRv
KClgIHRvCi1gTWF0Y2hBbmRFeHBsYWluKClgOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0
aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0
aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3Vs
dExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEJhciBwcm9w
ZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEJhcigpOwotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8
IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRN
YXRjaGVyKCkpIC4uLgotYGBgCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uLCB5b3UgY2FuIHJlYWQg
dGhlc2UKLVt0d29dKENvb2tCb29rLm1kI3dyaXRpbmctbmV3LW1vbm9tb3JwaGljLW1hdGNoZXJz
KQotW3JlY2lwZXNdKENvb2tCb29rLm1kI3dyaXRpbmctbmV3LXBvbHltb3JwaGljLW1hdGNoZXJz
KQotZnJvbSB0aGUgY29va2Jvb2suICBBcyBhbHdheXMsIHlvdQotYXJlIHdlbGNvbWUgdG8gcG9z
dCBxdWVzdGlvbnMgb24gYGdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYgeW91Ci1uZWVk
IGFueSBoZWxwLgotCi0jIyBXaGVuIHVzaW5nIEdvb2dsZSBNb2NrLCBkbyBJIGhhdmUgdG8gdXNl
IEdvb2dsZSBUZXN0IGFzIHRoZSB0ZXN0aW5nIGZyYW1ld29yaz8gIEkgaGF2ZSBteSBmYXZvcml0
ZSB0ZXN0aW5nIGZyYW1ld29yayBhbmQgZG9uJ3Qgd2FudCB0byBzd2l0Y2guICMjCi0KLUdvb2ds
ZSBNb2NrIHdvcmtzIG91dCBvZiB0aGUgYm94IHdpdGggR29vZ2xlIFRlc3QuICBIb3dldmVyLCBp
dCdzIGVhc3kKLXRvIGNvbmZpZ3VyZSBpdCB0byB3b3JrIHdpdGggYW55IHRlc3RpbmcgZnJhbWV3
b3JrIG9mIHlvdXIgY2hvaWNlLgotW0hlcmVdKEZvckR1bW1pZXMubWQjdXNpbmctZ29vZ2xlLW1v
Y2std2l0aC1hbnktdGVzdGluZy1mcmFtZXdvcmspIGlzIGhvdy4KLQotIyMgSG93IGFtIEkgc3Vw
cG9zZWQgdG8gbWFrZSBzZW5zZSBvZiB0aGVzZSBob3JyaWJsZSB0ZW1wbGF0ZSBlcnJvcnM/ICMj
Ci0KLUlmIHlvdSBhcmUgY29uZnVzZWQgYnkgdGhlIGNvbXBpbGVyIGVycm9ycyBnY2MgdGhyZXcg
YXQgeW91LAotdHJ5IGNvbnN1bHRpbmcgdGhlIF9Hb29nbGUgTW9jayBEb2N0b3JfIHRvb2wgZmly
c3QuICBXaGF0IGl0IGRvZXMgaXMgdG8KLXNjYW4gc3RkaW4gZm9yIGdjYyBlcnJvciBtZXNzYWdl
cywgYW5kIHNwaXQgb3V0IGRpYWdub3NlcyBvbiB0aGUKLXByb2JsZW1zICh3ZSBjYWxsIHRoZW0g
ZGlzZWFzZXMpIHlvdXIgY29kZSBoYXMuCi0KLVRvICJpbnN0YWxsIiwgcnVuIGNvbW1hbmQ6Ci1g
YGAKLWFsaWFzIGdtZD0nPHBhdGggdG8gZ29vZ2xlbW9jaz4vc2NyaXB0cy9nbW9ja19kb2N0b3Iu
cHknCi1gYGAKLQotVG8gdXNlIGl0LCBkbzoKLWBgYAotPHlvdXItZmF2b3JpdGUtYnVpbGQtY29t
bWFuZD4gPHlvdXItdGVzdD4gMj4mMSB8IGdtZAotYGBgCi0KLUZvciBleGFtcGxlOgotYGBgCi1t
YWtlIG15X3Rlc3QgMj4mMSB8IGdtZAotYGBgCi0KLU9yIHlvdSBjYW4gcnVuIGBnbWRgIGFuZCBj
b3B5LW4tcGFzdGUgZ2NjJ3MgZXJyb3IgbWVzc2FnZXMgdG8gaXQuCi0KLSMjIENhbiBJIG1vY2sg
YSB2YXJpYWRpYyBmdW5jdGlvbj8gIyMKLQotWW91IGNhbm5vdCBtb2NrIGEgdmFyaWFkaWMgZnVu
Y3Rpb24gKGkuZS4gYSBmdW5jdGlvbiB0YWtpbmcgZWxsaXBzaXMKLShgLi4uYCkgYXJndW1lbnRz
KSBkaXJlY3RseSBpbiBHb29nbGUgTW9jay4KLQotVGhlIHByb2JsZW0gaXMgdGhhdCBpbiBnZW5l
cmFsLCB0aGVyZSBpcyBfbm8gd2F5XyBmb3IgYSBtb2NrIG9iamVjdCB0bwota25vdyBob3cgbWFu
eSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdmFyaWFkaWMgbWV0aG9kLCBhbmQgd2hhdAot
dGhlIGFyZ3VtZW50cycgdHlwZXMgYXJlLiAgT25seSB0aGUgX2F1dGhvciBvZiB0aGUgYmFzZSBj
bGFzc18ga25vd3MKLXRoZSBwcm90b2NvbCwgYW5kIHdlIGNhbm5vdCBsb29rIGludG8gaGlzIGhl
YWQuCi0KLVRoZXJlZm9yZSwgdG8gbW9jayBzdWNoIGEgZnVuY3Rpb24sIHRoZSBfdXNlcl8gbXVz
dCB0ZWFjaCB0aGUgbW9jawotb2JqZWN0IGhvdyB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2Yg
YXJndW1lbnRzIGFuZCB0aGVpciB0eXBlcy4gIE9uZQotd2F5IHRvIGRvIGl0IGlzIHRvIHByb3Zp
ZGUgb3ZlcmxvYWRlZCB2ZXJzaW9ucyBvZiB0aGUgZnVuY3Rpb24uCi0KLUVsbGlwc2lzIGFyZ3Vt
ZW50cyBhcmUgaW5oZXJpdGVkIGZyb20gQyBhbmQgbm90IHJlYWxseSBhIEMrKyBmZWF0dXJlLgot
VGhleSBhcmUgdW5zYWZlIHRvIHVzZSBhbmQgZG9uJ3Qgd29yayB3aXRoIGFyZ3VtZW50cyB0aGF0
IGhhdmUKLWNvbnN0cnVjdG9ycyBvciBkZXN0cnVjdG9ycy4gIFRoZXJlZm9yZSB3ZSByZWNvbW1l
bmQgdG8gYXZvaWQgdGhlbSBpbgotQysrIGFzIG11Y2ggYXMgcG9zc2libGUuCi0KLSMjIE1TVkMg
Z2l2ZXMgbWUgd2FybmluZyBDNDMwMSBvciBDNDM3MyB3aGVuIEkgZGVmaW5lIGEgbW9jayBtZXRo
b2Qgd2l0aCBhIGNvbnN0IHBhcmFtZXRlci4gIFdoeT8gIyMKLQotSWYgeW91IGNvbXBpbGUgdGhp
cyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1IFNQMToKLWBgYAotY2xhc3MgRm9vIHsK
LSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIoY29uc3QgaW50IGkpID0gMDsKLX07Ci0KLWNsYXNz
IE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShCYXIsIHZvaWQo
Y29uc3QgaW50IGkpKTsKLX07Ci1gYGAKLVlvdSBtYXkgZ2V0IHRoZSBmb2xsb3dpbmcgd2Fybmlu
ZzoKLWBgYAotd2FybmluZyBDNDMwMTogJ01vY2tGb286OkJhcic6IG92ZXJyaWRpbmcgdmlydHVh
bCBmdW5jdGlvbiBvbmx5IGRpZmZlcnMgZnJvbSAnRm9vOjpCYXInIGJ5IGNvbnN0L3ZvbGF0aWxl
IHF1YWxpZmllcgotYGBgCi0KLVRoaXMgaXMgYSBNU1ZDIGJ1Zy4gIFRoZSBzYW1lIGNvZGUgY29t
cGlsZXMgZmluZSB3aXRoIGdjYyAsZm9yCi1leGFtcGxlLiAgSWYgeW91IHVzZSBWaXN1YWwgQysr
IDIwMDggU1AxLCB5b3Ugd291bGQgZ2V0IHRoZSB3YXJuaW5nOgotYGBgCi13YXJuaW5nIEM0Mzcz
OiAnTW9ja0Zvbzo6QmFyJzogdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZXMgJ0Zvbzo6QmFyJywg
cHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3ZlcnJpZGUgd2hlbiBw
YXJhbWV0ZXJzIG9ubHkgZGlmZmVyZWQgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVycwotYGBg
Ci0KLUluIEMrKywgaWYgeW91IF9kZWNsYXJlXyBhIGZ1bmN0aW9uIHdpdGggYSBgY29uc3RgIHBh
cmFtZXRlciwgdGhlCi1gY29uc3RgIG1vZGlmaWVyIGlzIF9pZ25vcmVkXy4gIFRoZXJlZm9yZSwg
dGhlIGBGb29gIGJhc2UgY2xhc3MgYWJvdmUKLWlzIGVxdWl2YWxlbnQgdG86Ci1gYGAKLWNsYXNz
IEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgQmFyKGludCBpKSA9IDA7ICAvLyBpbnQgb3Ig
Y29uc3QgaW50PyAgTWFrZXMgbm8gZGlmZmVyZW5jZS4KLX07Ci1gYGAKLQotSW4gZmFjdCwgeW91
IGNhbiBfZGVjbGFyZV8gQmFyKCkgd2l0aCBhbiBgaW50YCBwYXJhbWV0ZXIsIGFuZCBfZGVmaW5l
XwotaXQgd2l0aCBhIGBjb25zdCBpbnRgIHBhcmFtZXRlci4gIFRoZSBjb21waWxlciB3aWxsIHN0
aWxsIG1hdGNoIHRoZW0KLXVwLgotCi1TaW5jZSBtYWtpbmcgYSBwYXJhbWV0ZXIgYGNvbnN0YCBp
cyBtZWFuaW5nbGVzcyBpbiB0aGUgbWV0aG9kCi1fZGVjbGFyYXRpb25fLCB3ZSByZWNvbW1lbmQg
dG8gcmVtb3ZlIGl0IGluIGJvdGggYEZvb2AgYW5kIGBNb2NrRm9vYC4KLVRoYXQgc2hvdWxkIHdv
cmthcm91bmQgdGhlIFZDIGJ1Zy4KLQotTm90ZSB0aGF0IHdlIGFyZSB0YWxraW5nIGFib3V0IHRo
ZSBfdG9wLWxldmVsXyBgY29uc3RgIG1vZGlmaWVyIGhlcmUuCi1JZiB0aGUgZnVuY3Rpb24gcGFy
YW1ldGVyIGlzIHBhc3NlZCBieSBwb2ludGVyIG9yIHJlZmVyZW5jZSwgZGVjbGFyaW5nCi10aGUg
X3BvaW50ZWVfIG9yIF9yZWZlcmVlXyBhcyBgY29uc3RgIGlzIHN0aWxsIG1lYW5pbmdmdWwuICBG
b3IKLWV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIGRlY2xhcmF0aW9ucyBhcmUgX25vdF8gZXF1
aXZhbGVudDoKLWBgYAotdm9pZCBCYXIoaW50KiBwKTsgICAgICAgIC8vIE5laXRoZXIgcCBub3Ig
KnAgaXMgY29uc3QuCi12b2lkIEJhcihjb25zdCBpbnQqIHApOyAgLy8gcCBpcyBub3QgY29uc3Qs
IGJ1dCAqcCBpcy4KLWBgYAotCi0jIyBJIGhhdmUgYSBodWdlIG1vY2sgY2xhc3MsIGFuZCBNaWNy
b3NvZnQgVmlzdWFsIEMrKyBydW5zIG91dCBvZiBtZW1vcnkgd2hlbiBjb21waWxpbmcgaXQuICBX
aGF0IGNhbiBJIGRvPyAjIwotCi1XZSd2ZSBub3RpY2VkIHRoYXQgd2hlbiB0aGUgYC9jbHJgIGNv
bXBpbGVyIGZsYWcgaXMgdXNlZCwgVmlzdWFsIEMrKwotdXNlcyA1fjYgdGltZXMgYXMgbXVjaCBt
ZW1vcnkgd2hlbiBjb21waWxpbmcgYSBtb2NrIGNsYXNzLiAgV2Ugc3VnZ2VzdAotdG8gYXZvaWQg
YC9jbHJgIHdoZW4gY29tcGlsaW5nIG5hdGl2ZSBDKysgbW9ja3MuCi0KLSMjIEkgY2FuJ3QgZmln
dXJlIG91dCB3aHkgR29vZ2xlIE1vY2sgdGhpbmtzIG15IGV4cGVjdGF0aW9ucyBhcmUgbm90IHNh
dGlzZmllZC4gIFdoYXQgc2hvdWxkIEkgZG8/ICMjCi0KLVlvdSBtaWdodCB3YW50IHRvIHJ1biB5
b3VyIHRlc3Qgd2l0aAotYC0tZ21vY2tfdmVyYm9zZT1pbmZvYC4gIFRoaXMgZmxhZyBsZXRzIEdv
b2dsZSBNb2NrIHByaW50IGEgdHJhY2UKLW9mIGV2ZXJ5IG1vY2sgZnVuY3Rpb24gY2FsbCBpdCBy
ZWNlaXZlcy4gIEJ5IHN0dWR5aW5nIHRoZSB0cmFjZSwKLXlvdSdsbCBnYWluIGluc2lnaHRzIG9u
IHdoeSB0aGUgZXhwZWN0YXRpb25zIHlvdSBzZXQgYXJlIG5vdCBtZXQuCi0KLSMjIEhvdyBjYW4g
SSBhc3NlcnQgdGhhdCBhIGZ1bmN0aW9uIGlzIE5FVkVSIGNhbGxlZD8gIyMKLQotYGBgCi1FWFBF
Q1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAuVGltZXMoMCk7Ci1gYGAKLQotIyMgSSBoYXZlIGEg
ZmFpbGVkIHRlc3Qgd2hlcmUgR29vZ2xlIE1vY2sgdGVsbHMgbWUgVFdJQ0UgdGhhdCBhIHBhcnRp
Y3VsYXIgZXhwZWN0YXRpb24gaXMgbm90IHNhdGlzZmllZC4gIElzbid0IHRoaXMgcmVkdW5kYW50
PyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIGRldGVjdHMgYSBmYWlsdXJlLCBpdCBwcmludHMgcmVs
ZXZhbnQgaW5mb3JtYXRpb24KLSh0aGUgbW9jayBmdW5jdGlvbiBhcmd1bWVudHMsIHRoZSBzdGF0
ZSBvZiByZWxldmFudCBleHBlY3RhdGlvbnMsIGFuZAotZXRjKSB0byBoZWxwIHRoZSB1c2VyIGRl
YnVnLiAgSWYgYW5vdGhlciBmYWlsdXJlIGlzIGRldGVjdGVkLCBHb29nbGUKLU1vY2sgd2lsbCBk
byB0aGUgc2FtZSwgaW5jbHVkaW5nIHByaW50aW5nIHRoZSBzdGF0ZSBvZiByZWxldmFudAotZXhw
ZWN0YXRpb25zLgotCi1Tb21ldGltZXMgYW4gZXhwZWN0YXRpb24ncyBzdGF0ZSBkaWRuJ3QgY2hh
bmdlIGJldHdlZW4gdHdvIGZhaWx1cmVzLAotYW5kIHlvdSdsbCBzZWUgdGhlIHNhbWUgZGVzY3Jp
cHRpb24gb2YgdGhlIHN0YXRlIHR3aWNlLiAgVGhleSBhcmUKLWhvd2V2ZXIgX25vdF8gcmVkdW5k
YW50LCBhcyB0aGV5IHJlZmVyIHRvIF9kaWZmZXJlbnQgcG9pbnRzIGluIHRpbWVfLgotVGhlIGZh
Y3QgdGhleSBhcmUgdGhlIHNhbWUgX2lzXyBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbi4KLQotIyMg
SSBnZXQgYSBoZWFwIGNoZWNrIGZhaWx1cmUgd2hlbiB1c2luZyBhIG1vY2sgb2JqZWN0LCBidXQg
dXNpbmcgYSByZWFsIG9iamVjdCBpcyBmaW5lLiAgV2hhdCBjYW4gYmUgd3Jvbmc/ICMjCi0KLURv
ZXMgdGhlIGNsYXNzIChob3BlZnVsbHkgYSBwdXJlIGludGVyZmFjZSkgeW91IGFyZSBtb2NraW5n
IGhhdmUgYQotdmlydHVhbCBkZXN0cnVjdG9yPwotCi1XaGVuZXZlciB5b3UgZGVyaXZlIGZyb20g
YSBiYXNlIGNsYXNzLCBtYWtlIHN1cmUgaXRzIGRlc3RydWN0b3IgaXMKLXZpcnR1YWwuICBPdGhl
cndpc2UgQmFkIFRoaW5ncyB3aWxsIGhhcHBlbi4gIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcKLWNv
ZGU6Ci0KLWBgYAotY2xhc3MgQmFzZSB7Ci0gcHVibGljOgotICAvLyBOb3QgdmlydHVhbCwgYnV0
IHNob3VsZCBiZS4KLSAgfkJhc2UoKSB7IC4uLiB9Ci0gIC4uLgotfTsKLQotY2xhc3MgRGVyaXZl
ZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0ZDo6c3Ry
aW5nIHZhbHVlXzsKLX07Ci0KLS4uLgotICBCYXNlKiBwID0gbmV3IERlcml2ZWQ7Ci0gIC4uLgot
ICBkZWxldGUgcDsgIC8vIFN1cnByaXNlISB+QmFzZSgpIHdpbGwgYmUgY2FsbGVkLCBidXQgfkRl
cml2ZWQoKSB3aWxsIG5vdAotICAgICAgICAgICAgIC8vIC0gdmFsdWVfIGlzIGxlYWtlZC4KLWBg
YAotCi1CeSBjaGFuZ2luZyBgfkJhc2UoKWAgdG8gdmlydHVhbCwgYH5EZXJpdmVkKClgIHdpbGwg
YmUgY29ycmVjdGx5Ci1jYWxsZWQgd2hlbiBgZGVsZXRlIHBgIGlzIGV4ZWN1dGVkLCBhbmQgdGhl
IGhlYXAgY2hlY2tlcgotd2lsbCBiZSBoYXBweS4KLQotIyMgVGhlICJuZXdlciBleHBlY3RhdGlv
bnMgb3ZlcnJpZGUgb2xkZXIgb25lcyIgcnVsZSBtYWtlcyB3cml0aW5nIGV4cGVjdGF0aW9ucyBh
d2t3YXJkLiAgV2h5IGRvZXMgR29vZ2xlIE1vY2sgZG8gdGhhdD8gIyMKLQotV2hlbiBwZW9wbGUg
Y29tcGxhaW4gYWJvdXQgdGhpcywgb2Z0ZW4gdGhleSBhcmUgcmVmZXJyaW5nIHRvIGNvZGUgbGlr
ZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEg
dGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgSG93ZXZl
ciwgSSBoYXZlIHRvIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlCi0vLyByZXZlcnNlIG9y
ZGVyLiAgVGhpcyBzdWNrcyBiaWcgdGltZSEhIQotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAg
ICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1FWFBF
Q1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgLlJldGly
ZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkgZGlkbid0
IHBpY2sgdGhlICoqYmVzdCoqIHdheSB0byBleHByZXNzIHRoZSB0ZXN0J3MKLWludGVudC4KLQot
QnkgZGVmYXVsdCwgZXhwZWN0YXRpb25zIGRvbid0IGhhdmUgdG8gYmUgbWF0Y2hlZCBpbiBfYW55
XyBwYXJ0aWN1bGFyCi1vcmRlci4gIElmIHlvdSB3YW50IHRoZW0gdG8gbWF0Y2ggaW4gYSBjZXJ0
YWluIG9yZGVyLCB5b3UgbmVlZCB0byBiZQotZXhwbGljaXQuICBUaGlzIGlzIEdvb2dsZSBNb2Nr
J3MgKGFuZCBqTW9jaydzKSBmdW5kYW1lbnRhbCBwaGlsb3NvcGh5OiBpdCdzCi1lYXN5IHRvIGFj
Y2lkZW50YWxseSBvdmVyLXNwZWNpZnkgeW91ciB0ZXN0cywgYW5kIHdlIHdhbnQgdG8gbWFrZSBp
dAotaGFyZGVyIHRvIGRvIHNvLgotCi1UaGVyZSBhcmUgdHdvIGJldHRlciB3YXlzIHRvIHdyaXRl
IHRoZSB0ZXN0IHNwZWMuICBZb3UgY291bGQgZWl0aGVyCi1wdXQgdGhlIGV4cGVjdGF0aW9ucyBp
biBzZXF1ZW5jZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwg
cmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1l
LiAgVXNpbmcgYSBzZXF1ZW5jZSwgd2UgY2FuIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMKLS8vIGlu
IHRoZWlyIG5hdHVyYWwgb3JkZXIuCi17Ci0gIEluU2VxdWVuY2UgczsKLSAgRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuUmV0aXJlc09u
U2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgICAgLldpbGxPbmNl
KFJldHVybigyKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotb3Ig
eW91IGNhbiBwdXQgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgaW4gdGhlIHNhbWUgZXhwZWN0YXRp
b246Ci0KLWBgYAotLy8gZm9vLkJhcigpIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UsIHJldHVybiAx
IHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCi0vLyAyIHRoZSBzZWNvbmQgdGltZS4KLUVYUEVD
VF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAuV2lsbE9u
Y2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1gYGAKLQotQmFjayB0
byB0aGUgb3JpZ2luYWwgcXVlc3Rpb25zOiB3aHkgZG9lcyBHb29nbGUgTW9jayBzZWFyY2ggdGhl
Ci1leHBlY3RhdGlvbnMgKGFuZCBgT05fQ0FMTGBzKSBmcm9tIGJhY2sgdG8gZnJvbnQ/ICBCZWNh
dXNlIHRoaXMKLWFsbG93cyBhIHVzZXIgdG8gc2V0IHVwIGEgbW9jaydzIGJlaGF2aW9yIGZvciB0
aGUgY29tbW9uIGNhc2UgZWFybHkKLShlLmcuIGluIHRoZSBtb2NrJ3MgY29uc3RydWN0b3Igb3Ig
dGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSkKLWFuZCBjdXN0b21pemUgaXQgd2l0aCBt
b3JlIHNwZWNpZmljIHJ1bGVzIGxhdGVyLiAgSWYgR29vZ2xlIE1vY2sKLXNlYXJjaGVzIGZyb20g
ZnJvbnQgdG8gYmFjaywgdGhpcyB2ZXJ5IHVzZWZ1bCBwYXR0ZXJuIHdvbid0IGJlCi1wb3NzaWJs
ZS4KLQotIyMgR29vZ2xlIE1vY2sgcHJpbnRzIGEgd2FybmluZyB3aGVuIGEgZnVuY3Rpb24gd2l0
aG91dCBFWFBFQ1RcX0NBTEwgaXMgY2FsbGVkLCBldmVuIGlmIEkgaGF2ZSBzZXQgaXRzIGJlaGF2
aW9yIHVzaW5nIE9OXF9DQUxMLiAgV291bGQgaXQgYmUgcmVhc29uYWJsZSBub3QgdG8gc2hvdyB0
aGUgd2FybmluZyBpbiB0aGlzIGNhc2U/ICMjCi0KLVdoZW4gY2hvb3NpbmcgYmV0d2VlbiBiZWlu
ZyBuZWF0IGFuZCBiZWluZyBzYWZlLCB3ZSBsZWFuIHRvd2FyZCB0aGUKLWxhdHRlci4gIFNvIHRo
ZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0aGluayBpdCdzIGJldHRlciB0byBzaG93IHRoZQotd2Fybmlu
Zy4KLQotT2Z0ZW4gcGVvcGxlIHdyaXRlIGBPTl9DQUxMYHMgaW4gdGhlIG1vY2sgb2JqZWN0J3MK
LWNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCwgYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgcmFyZWx5
IGNoYW5nZXMgZnJvbQotdGVzdCB0byB0ZXN0LiAgVGhlbiBpbiB0aGUgdGVzdCBib2R5IHRoZXkg
c2V0IHRoZSBleHBlY3RhdGlvbnMsIHdoaWNoCi1hcmUgb2Z0ZW4gZGlmZmVyZW50IGZvciBlYWNo
IHRlc3QuICBIYXZpbmcgYW4gYE9OX0NBTExgIGluIHRoZSBzZXQtdXAKLXBhcnQgb2YgYSB0ZXN0
IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBjYWxscyBhcmUgZXhwZWN0ZWQuICBJZiB0aGVyZSdzCi1u
byBgRVhQRUNUX0NBTExgIGFuZCB0aGUgbWV0aG9kIGlzIGNhbGxlZCwgaXQncyBwb3NzaWJseSBh
biBlcnJvci4gIElmCi13ZSBxdWlldGx5IGxldCB0aGUgY2FsbCBnbyB0aHJvdWdoIHdpdGhvdXQg
bm90aWZ5aW5nIHRoZSB1c2VyLCBidWdzCi1tYXkgY3JlZXAgaW4gdW5ub3RpY2VkLgotCi1JZiwg
aG93ZXZlciwgeW91IGFyZSBzdXJlIHRoYXQgdGhlIGNhbGxzIGFyZSBPSywgeW91IGNhbiB3cml0
ZQotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5XaWxsUmVwZWF0ZWRseSgu
Li4pOwotYGBgCi0KLWluc3RlYWQgb2YKLQotYGBgCi1PTl9DQUxMKGZvbywgQmFyKF8pKQotICAg
IC5XaWxsQnlEZWZhdWx0KC4uLik7Ci1gYGAKLQotVGhpcyB0ZWxscyBHb29nbGUgTW9jayB0aGF0
IHlvdSBkbyBleHBlY3QgdGhlIGNhbGxzIGFuZCBubyB3YXJuaW5nIHNob3VsZCBiZQotcHJpbnRl
ZC4KLQotQWxzbywgeW91IGNhbiBjb250cm9sIHRoZSB2ZXJib3NpdHkgdXNpbmcgdGhlIGAtLWdt
b2NrX3ZlcmJvc2VgIGZsYWcuCi1JZiB5b3UgZmluZCB0aGUgb3V0cHV0IHRvbyBub2lzeSB3aGVu
IGRlYnVnZ2luZywganVzdCBjaG9vc2UgYSBsZXNzCi12ZXJib3NlIGxldmVsLgotCi0jIyBIb3cg
Y2FuIEkgZGVsZXRlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgaW4gYW4gYWN0aW9uPyAj
IwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHBlcmZvcm0gc29tZSBhY3Rpb24g
dGhhdCdzIG5vdAotc3VwcG9ydGVkIGJ5IEdvb2dsZSBNb2NrIGRpcmVjdGx5LCByZW1lbWJlciB0
aGF0IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duCi1hY3Rpb25zIHVzaW5nCi1bTWFrZUFjdGlvbigp
XShDb29rQm9vay5tZCN3cml0aW5nLW5ldy1hY3Rpb25zKSBvcgotW01ha2VQb2x5bW9ycGhpY0Fj
dGlvbigpXShDb29rQm9vay5tZCN3cml0aW5nX25ld19wb2x5bW9ycGhpY19hY3Rpb25zKSwKLW9y
IHlvdSBjYW4gd3JpdGUgYSBzdHViIGZ1bmN0aW9uIGFuZCBpbnZva2UgaXQgdXNpbmcKLVtJbnZv
a2UoKV0oQ29va0Jvb2subWQjdXNpbmctZnVuY3Rpb25zX21ldGhvZHNfZnVuY3RvcnMpLgotCi0j
IyBNT0NLXF9NRVRIT0RuKCkncyBzZWNvbmQgYXJndW1lbnQgbG9va3MgZnVubnkuICBXaHkgZG9u
J3QgeW91IHVzZSB0aGUgTU9DS1xfTUVUSE9EbihNZXRob2QsIHJldHVyblxfdHlwZSwgYXJnXF8x
LCAuLi4sIGFyZ1xfbikgc3ludGF4PyAjIwotCi1XaGF0PyEgIEkgdGhpbmsgaXQncyBiZWF1dGlm
dWwuIDotKQotCi1XaGlsZSB3aGljaCBzeW50YXggbG9va3MgbW9yZSBuYXR1cmFsIGlzIGEgc3Vi
amVjdGl2ZSBtYXR0ZXIgdG8gc29tZQotZXh0ZW50LCBHb29nbGUgTW9jaydzIHN5bnRheCB3YXMg
Y2hvc2VuIGZvciBzZXZlcmFsIHByYWN0aWNhbCBhZHZhbnRhZ2VzIGl0Ci1oYXMuCi0KLVRyeSB0
byBtb2NrIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIG1hcCBhcyBhbiBhcmd1bWVudDoKLWBgYAot
dmlydHVhbCBpbnQgR2V0U2l6ZShjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBg
Ci0KLVVzaW5nIHRoZSBwcm9wb3NlZCBzeW50YXgsIGl0IHdvdWxkIGJlOgotYGBgCi1NT0NLX01F
VEhPRDEoR2V0U2l6ZSwgaW50LCBjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBg
Ci0KLUd1ZXNzIHdoYXQ/ICBZb3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgYXMgdGhlIGNvbXBp
bGVyIHRoaW5rcyB0aGF0Ci1gY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtYCBhcmUgKip0
d28qKiwgbm90IG9uZSwgYXJndW1lbnRzLiBUbyB3b3JrCi1hcm91bmQgdGhpcyB5b3UgY2FuIHVz
ZSBgdHlwZWRlZmAgdG8gZ2l2ZSB0aGUgbWFwIHR5cGUgYSBuYW1lLCBidXQKLXRoYXQgZ2V0cyBp
biB0aGUgd2F5IG9mIHlvdXIgd29yay4gIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IGF2b2lkcyB0aGlz
Ci1wcm9ibGVtIGFzIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IHR5cGVzIGFyZSBwcm90ZWN0ZWQg
aW5zaWRlIGEgcGFpcgotb2YgcGFyZW50aGVzZXM6Ci1gYGAKLS8vIFRoaXMgY29tcGlsZXMgZmlu
ZS4KLU1PQ0tfTUVUSE9EMShHZXRTaXplLCBpbnQoY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+
JiBtKSk7Ci1gYGAKLQotWW91IHN0aWxsIG5lZWQgYSBgdHlwZWRlZmAgaWYgdGhlIHJldHVybiB0
eXBlIGNvbnRhaW5zIGFuIHVucHJvdGVjdGVkCi1jb21tYSwgYnV0IHRoYXQncyBtdWNoIHJhcmVy
LgotCi1PdGhlciBhZHZhbnRhZ2VzIGluY2x1ZGU6Ci0gIDEuIGBNT0NLX01FVEhPRDEoRm9vLCBp
bnQsIGJvb2wpYCBjYW4gbGVhdmUgYSByZWFkZXIgd29uZGVyIHdoZXRoZXIgdGhlIG1ldGhvZCBy
ZXR1cm5zIGBpbnRgIG9yIGBib29sYCwgd2hpbGUgdGhlcmUgd29uJ3QgYmUgc3VjaCBjb25mdXNp
b24gdXNpbmcgR29vZ2xlIE1vY2sncyBzeW50YXguCi0gIDEuIFRoZSB3YXkgR29vZ2xlIE1vY2sg
ZGVzY3JpYmVzIGEgZnVuY3Rpb24gdHlwZSBpcyBub3RoaW5nIG5ldywgYWx0aG91Z2ggbWFueSBw
ZW9wbGUgbWF5IG5vdCBiZSBmYW1pbGlhciB3aXRoIGl0LiAgVGhlIHNhbWUgc3ludGF4IHdhcyB1
c2VkIGluIEMsIGFuZCB0aGUgYGZ1bmN0aW9uYCBsaWJyYXJ5IGluIGB0cjFgIHVzZXMgdGhpcyBz
eW50YXggZXh0ZW5zaXZlbHkuICBTaW5jZSBgdHIxYCB3aWxsIGJlY29tZSBhIHBhcnQgb2YgdGhl
IG5ldyB2ZXJzaW9uIG9mIFNUTCwgd2UgZmVlbCB2ZXJ5IGNvbWZvcnRhYmxlIHRvIGJlIGNvbnNp
c3RlbnQgd2l0aCBpdC4KLSAgMS4gVGhlIGZ1bmN0aW9uIHR5cGUgc3ludGF4IGlzIGFsc28gdXNl
ZCBpbiBvdGhlciBwYXJ0cyBvZiBHb29nbGUgTW9jaydzIEFQSSAoZS5nLiB0aGUgYWN0aW9uIGlu
dGVyZmFjZSkgaW4gb3JkZXIgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gdHJhY3RhYmxlLiBB
IHVzZXIgbmVlZHMgdG8gbGVhcm4gaXQgYW55d2F5IGluIG9yZGVyIHRvIHV0aWxpemUgR29vZ2xl
IE1vY2sncyBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzLiAgV2UnZCBhcyB3ZWxsIHN0aWNrIHRvIHRo
ZSBzYW1lIHN5bnRheCBpbiBgTU9DS19NRVRIT0QqYCEKLQotIyMgTXkgY29kZSBjYWxscyBhIHN0
YXRpYy9nbG9iYWwgZnVuY3Rpb24uICBDYW4gSSBtb2NrIGl0PyAjIwotCi1Zb3UgY2FuLCBidXQg
eW91IG5lZWQgdG8gbWFrZSBzb21lIGNoYW5nZXMuCi0KLUluIGdlbmVyYWwsIGlmIHlvdSBmaW5k
IHlvdXJzZWxmIG5lZWRpbmcgdG8gbW9jayBhIHN0YXRpYyBmdW5jdGlvbiwKLWl0J3MgYSBzaWdu
IHRoYXQgeW91ciBtb2R1bGVzIGFyZSB0b28gdGlnaHRseSBjb3VwbGVkIChhbmQgbGVzcwotZmxl
eGlibGUsIGxlc3MgcmV1c2FibGUsIGxlc3MgdGVzdGFibGUsIGV0YykuICBZb3UgYXJlIHByb2Jh
Ymx5IGJldHRlcgotb2ZmIGRlZmluaW5nIGEgc21hbGwgaW50ZXJmYWNlIGFuZCBjYWxsIHRoZSBm
dW5jdGlvbiB0aHJvdWdoIHRoYXQKLWludGVyZmFjZSwgd2hpY2ggdGhlbiBjYW4gYmUgZWFzaWx5
IG1vY2tlZC4gIEl0J3MgYSBiaXQgb2Ygd29yawotaW5pdGlhbGx5LCBidXQgdXN1YWxseSBwYXlz
IGZvciBpdHNlbGYgcXVpY2tseS4KLQotVGhpcyBHb29nbGUgVGVzdGluZyBCbG9nCi1bcG9zdF0o
aHR0cDovL2dvb2dsZXRlc3RpbmcuYmxvZ3Nwb3QuY29tLzIwMDgvMDYvZGVmZWF0LXN0YXRpYy1j
bGluZy5odG1sKQotc2F5cyBpdCBleGNlbGxlbnRseS4gIENoZWNrIGl0IG91dC4KLQotIyMgTXkg
bW9jayBvYmplY3QgbmVlZHMgdG8gZG8gY29tcGxleCBzdHVmZi4gIEl0J3MgYSBsb3Qgb2YgcGFp
biB0byBzcGVjaWZ5IHRoZSBhY3Rpb25zLiAgR29vZ2xlIE1vY2sgc3Vja3MhICMjCi0KLUkga25v
dyBpdCdzIG5vdCBhIHF1ZXN0aW9uLCBidXQgeW91IGdldCBhbiBhbnN3ZXIgZm9yIGZyZWUgYW55
IHdheS4gOi0pCi0KLVdpdGggR29vZ2xlIE1vY2ssIHlvdSBjYW4gY3JlYXRlIG1vY2tzIGluIEMr
KyBlYXNpbHkuICBBbmQgcGVvcGxlIG1pZ2h0IGJlCi10ZW1wdGVkIHRvIHVzZSB0aGVtIGV2ZXJ5
d2hlcmUuIFNvbWV0aW1lcyB0aGV5IHdvcmsgZ3JlYXQsIGFuZAotc29tZXRpbWVzIHlvdSBtYXkg
ZmluZCB0aGVtLCB3ZWxsLCBhIHBhaW4gdG8gdXNlLiBTbywgd2hhdCdzIHdyb25nIGluCi10aGUg
bGF0dGVyIGNhc2U/Ci0KLVdoZW4geW91IHdyaXRlIGEgdGVzdCB3aXRob3V0IHVzaW5nIG1vY2tz
LCB5b3UgZXhlcmNpc2UgdGhlIGNvZGUgYW5kCi1hc3NlcnQgdGhhdCBpdCByZXR1cm5zIHRoZSBj
b3JyZWN0IHZhbHVlIG9yIHRoYXQgdGhlIHN5c3RlbSBpcyBpbiBhbgotZXhwZWN0ZWQgc3RhdGUu
ICBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgInN0YXRlLWJhc2VkIHRlc3RpbmciLgotCi1Nb2Nr
cyBhcmUgZ3JlYXQgZm9yIHdoYXQgc29tZSBjYWxsICJpbnRlcmFjdGlvbi1iYXNlZCIgdGVzdGlu
ZzoKLWluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHN5c3RlbSBzdGF0ZSBhdCB0aGUgdmVyeSBlbmQs
IG1vY2sgb2JqZWN0cwotdmVyaWZ5IHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aGUgcmlnaHQgd2F5
IGFuZCByZXBvcnQgYW4gZXJyb3IgYXMgc29vbgotYXMgaXQgYXJpc2VzLCBnaXZpbmcgeW91IGEg
aGFuZGxlIG9uIHRoZSBwcmVjaXNlIGNvbnRleHQgaW4gd2hpY2ggdGhlCi1lcnJvciB3YXMgdHJp
Z2dlcmVkLiAgVGhpcyBpcyBvZnRlbiBtb3JlIGVmZmVjdGl2ZSBhbmQgZWNvbm9taWNhbCB0bwot
ZG8gdGhhbiBzdGF0ZS1iYXNlZCB0ZXN0aW5nLgotCi1JZiB5b3UgYXJlIGRvaW5nIHN0YXRlLWJh
c2VkIHRlc3RpbmcgYW5kIHVzaW5nIGEgdGVzdCBkb3VibGUganVzdCB0bwotc2ltdWxhdGUgdGhl
IHJlYWwgb2JqZWN0LCB5b3UgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgYSBmYWtlLgot
VXNpbmcgYSBtb2NrIGluIHRoaXMgY2FzZSBjYXVzZXMgcGFpbiwgYXMgaXQncyBub3QgYSBzdHJv
bmcgcG9pbnQgZm9yCi1tb2NrcyB0byBwZXJmb3JtIGNvbXBsZXggYWN0aW9ucy4gIElmIHlvdSBl
eHBlcmllbmNlIHRoaXMgYW5kIHRoaW5rCi10aGF0IG1vY2tzIHN1Y2ssIHlvdSBhcmUganVzdCBu
b3QgdXNpbmcgdGhlIHJpZ2h0IHRvb2wgZm9yIHlvdXIKLXByb2JsZW0uIE9yLCB5b3UgbWlnaHQg
YmUgdHJ5aW5nIHRvIHNvbHZlIHRoZSB3cm9uZyBwcm9ibGVtLiA6LSkKLQotIyMgSSBnb3QgYSB3
YXJuaW5nICJVbmludGVyZXN0aW5nIGZ1bmN0aW9uIGNhbGwgZW5jb3VudGVyZWQgLSBkZWZhdWx0
IGFjdGlvbiB0YWtlbi4uIiAgU2hvdWxkIEkgcGFuaWM/ICMjCi0KLUJ5IGFsbCBtZWFucywgTk8h
ICBJdCdzIGp1c3QgYW4gRllJLgotCi1XaGF0IGl0IG1lYW5zIGlzIHRoYXQgeW91IGhhdmUgYSBt
b2NrIGZ1bmN0aW9uLCB5b3UgaGF2ZW4ndCBzZXQgYW55Ci1leHBlY3RhdGlvbnMgb24gaXQgKGJ5
IEdvb2dsZSBNb2NrJ3MgcnVsZSB0aGlzIG1lYW5zIHRoYXQgeW91IGFyZSBub3QKLWludGVyZXN0
ZWQgaW4gY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgdGhlcmVmb3JlIGl0IGNhbiBiZSBjYWxs
ZWQKLWFueSBudW1iZXIgb2YgdGltZXMpLCBhbmQgaXQgaXMgY2FsbGVkLiAgVGhhdCdzIE9LIC0g
eW91IGRpZG4ndCBzYXkKLWl0J3Mgbm90IE9LIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIQotCi1XaGF0
IGlmIHlvdSBhY3R1YWxseSBtZWFudCB0byBkaXNhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNh
bGxlZCwgYnV0Ci1mb3Jnb3QgdG8gd3JpdGUgYEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpLlRpbWVz
KDApYD8gIFdoaWxlCi1vbmUgY2FuIGFyZ3VlIHRoYXQgaXQncyB0aGUgdXNlcidzIGZhdWx0LCBH
b29nbGUgTW9jayB0cmllcyB0byBiZSBuaWNlIGFuZAotcHJpbnRzIHlvdSBhIG5vdGUuCi0KLVNv
LCB3aGVuIHlvdSBzZWUgdGhlIG1lc3NhZ2UgYW5kIGJlbGlldmUgdGhhdCB0aGVyZSBzaG91bGRu
J3QgYmUgYW55Ci11bmludGVyZXN0aW5nIGNhbGxzLCB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHdo
YXQncyBnb2luZyBvbi4gIFRvIG1ha2UKLXlvdXIgbGlmZSBlYXNpZXIsIEdvb2dsZSBNb2NrIHBy
aW50cyB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgYXJndW1lbnRzCi13aGVuIGFuIHVuaW50ZXJlc3Rp
bmcgY2FsbCBpcyBlbmNvdW50ZXJlZC4KLQotIyMgSSB3YW50IHRvIGRlZmluZSBhIGN1c3RvbSBh
Y3Rpb24uICBTaG91bGQgSSB1c2UgSW52b2tlKCkgb3IgaW1wbGVtZW50IHRoZSBhY3Rpb24gaW50
ZXJmYWNlPyAjIwotCi1FaXRoZXIgd2F5IGlzIGZpbmUgLSB5b3Ugd2FudCB0byBjaG9vc2UgdGhl
IG9uZSB0aGF0J3MgbW9yZSBjb252ZW5pZW50Ci1mb3IgeW91ciBjaXJjdW1zdGFuY2UuCi0KLVVz
dWFsbHksIGlmIHlvdXIgYWN0aW9uIGlzIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSwg
ZGVmaW5pbmcgaXQKLXVzaW5nIGBJbnZva2UoKWAgc2hvdWxkIGJlIGVhc2llcjsgaWYgeW91ciBh
Y3Rpb24gY2FuIGJlIHVzZWQgaW4KLWZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4g
aWYgeW91IGFyZSBkZWZpbmluZwotYFJldHVybih2YWx1ZSlgKSwgYE1ha2VQb2x5bW9ycGhpY0Fj
dGlvbigpYCBpcwotZWFzaWVzdC4gIFNvbWV0aW1lcyB5b3Ugd2FudCBwcmVjaXNlIGNvbnRyb2wg
b24gd2hhdCB0eXBlcyBvZgotZnVuY3Rpb25zIHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQgaW4sIGFu
ZCBpbXBsZW1lbnRpbmcKLWBBY3Rpb25JbnRlcmZhY2VgIGlzIHRoZSB3YXkgdG8gZ28gaGVyZS4g
U2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgotYFJldHVybigpYCBpbiBgaW5jbHVkZS9nbW9jay9n
bW9jay1hY3Rpb25zLmhgIGZvciBhbiBleGFtcGxlLgotCi0jIyBJJ20gdXNpbmcgdGhlIHNldC1h
cmd1bWVudC1wb2ludGVlIGFjdGlvbiwgYW5kIHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQg
ImNvbmZsaWN0aW5nIHJldHVybiB0eXBlIHNwZWNpZmllZCIuICBXaGF0IGRvZXMgaXQgbWVhbj8g
IyMKLQotWW91IGdvdCB0aGlzIGVycm9yIGFzIEdvb2dsZSBNb2NrIGhhcyBubyBpZGVhIHdoYXQg
dmFsdWUgaXQgc2hvdWxkIHJldHVybgotd2hlbiB0aGUgbW9jayBtZXRob2QgaXMgY2FsbGVkLiAg
YFNldEFyZ1BvaW50ZWUoKWAgc2F5cyB3aGF0IHRoZQotc2lkZSBlZmZlY3QgaXMsIGJ1dCBkb2Vz
bid0IHNheSB3aGF0IHRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlLiAgWW91Ci1uZWVkIGBEb0Fs
bCgpYCB0byBjaGFpbiBhIGBTZXRBcmdQb2ludGVlKClgIHdpdGggYSBgUmV0dXJuKClgLgotCi1T
ZWUgdGhpcyBbcmVjaXBlXShDb29rQm9vay5tZCNtb2NraW5nX3NpZGVfZWZmZWN0cykgZm9yIG1v
cmUgZGV0YWlscyBhbmQgYW4gZXhhbXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4g
eW91ciBGQVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVl
c3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNh
biB1c2U6Ci0KLSAgMS4gcmVhZCBvdGhlciBbZG9jdW1lbnRhdGlvbl0oRG9jdW1lbnRhdGlvbi5t
ZCksCi0gIDEuIHNlYXJjaCB0aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBz
Lmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jay90b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dv
b2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBz
LmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVx
dWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29v
Z2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFz
ZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0
cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2lzc3VlcykgaXMgX25vdF8KLWEgZ29v
ZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5
IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcgYSBxdWVz
dGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxvd2luZyBp
bmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdz
Ci1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICogdGhlIHZl
cnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNWTiBk
aXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29vZ2xlIE1vY2sgaXMgdW5kZXIgYWN0
aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBi
ZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5nIHN5c3Rl
bSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAqIHRoZSBj
b21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKLSAg
KiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBp
cyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEg
bWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVu
Y291bnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvS25vd25Jc3N1ZXMubWQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL0tub3duSXNzdWVzLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhZGFkZjUxNDRiMWI1YmE2YjRiZGE3Y2E4NjA4N2UyODQ2MWE4MTk5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvS25v
d25Jc3N1ZXMubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1BcyBhbnkgbm9uLXRy
aXZpYWwgc29mdHdhcmUgc3lzdGVtLCBHb29nbGUgTW9jayBoYXMgc29tZSBrbm93biBsaW1pdGF0
aW9ucyBhbmQgcHJvYmxlbXMuICBXZSBhcmUgd29ya2luZyBvbiBpbXByb3ZpbmcgaXQsIGFuZCB3
ZWxjb21lIHlvdXIgaGVscCEgIFRoZSBmb2xsb3cgaXMgYSBsaXN0IG9mIGlzc3VlcyB3ZSBrbm93
IGFib3V0LgotCi0KLQotIyMgUkVBRE1FIGNvbnRhaW5zIG91dGRhdGVkIGluZm9ybWF0aW9uIG9u
IEdvb2dsZSBNb2NrJ3MgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jr
cyAjIwotCi1UaGUgYFJFQURNRWAgZmlsZSBpbiByZWxlYXNlIDEuMS4wIHN0aWxsIHNheXMgdGhh
dCBHb29nbGUgTW9jayBvbmx5IHdvcmtzIHdpdGggR29vZ2xlIFRlc3QuICBBY3R1YWxseSwgeW91
IGNhbiBjb25maWd1cmUgR29vZ2xlIE1vY2sgdG8gd29yayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1l
d29yayB5b3UgY2hvb3NlLgotCi0jIyBUZXN0cyBmYWlsaW5nIG9uIG1hY2hpbmVzIHVzaW5nIFBv
d2VyIFBDIENQVXMgKGUuZy4gc29tZSBNYWNzKSAjIwotCi1gZ21vY2tfb3V0cHV0X3Rlc3RgIGFu
ZCBgZ21vY2stcHJpbnRlcnNfdGVzdGAgYXJlIGtub3duIHRvIGZhaWwgd2l0aCBQb3dlciBQQyBD
UFVzLiAgVGhpcyBpcyBkdWUgdG8gcG9ydGFiaWxpdHkgaXNzdWVzIHdpdGggdGhlc2UgdGVzdHMs
IGFuZCBpcyBub3QgYW4gaW5kaWNhdGlvbiBvZiBwcm9ibGVtcyBpbiBHb29nbGUgTW9jayBpdHNl
bGYuICBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlbS4KLQotIyMgRmFpbGVkIHRvIHJlc29sdmUg
bGliZ3Rlc3Quc28uMCBpbiB0ZXN0cyB3aGVuIGJ1aWx0IGFnYWluc3QgaW5zdGFsbGVkIEdvb2ds
ZSBUZXN0ICMjCi0KLVRoaXMgb25seSBhcHBsaWVzIGlmIHlvdSBtYW51YWxseSBidWlsdCBhbmQg
aW5zdGFsbGVkIEdvb2dsZSBUZXN0LCBhbmQgdGhlbiBidWlsdCBhIEdvb2dsZSBNb2NrIGFnYWlu
c3QgaXQgKGVpdGhlciBleHBsaWNpdGx5LCBvciBiZWNhdXNlIGd0ZXN0LWNvbmZpZyB3YXMgaW4g
eW91ciBwYXRoIHBvc3QtaW5zdGFsbCkuIEluIHRoaXMgc2l0dWF0aW9uLCBMaWJ0b29sIGhhcyBh
IGtub3duIGlzc3VlIHdpdGggY2VydGFpbiBzeXN0ZW1zJyBsZGNvbmZpZyBzZXR1cDoKLQotaHR0
cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3lzdXRpbHMuYXV0b21ha2UuZ2VuZXJh
bC85MDI1Ci0KLVRoaXMgcmVxdWlyZXMgYSBtYW51YWwgcnVuIG9mICJzdWRvIGxkY29uZmlnIiBh
ZnRlciB0aGUgInN1ZG8gbWFrZSBpbnN0YWxsIiBmb3IgR29vZ2xlIFRlc3QgYmVmb3JlIGFueSBi
aW5hcmllcyB3aGljaCBsaW5rIGFnYWluc3QgaXQgY2FuIGJlIGV4ZWN1dGVkLiBUaGlzIGlzbid0
IGEgYnVnIGluIG91ciBpbnN0YWxsLCBidXQgd2Ugc2hvdWxkIGF0IGxlYXN0IGhhdmUgZG9jdW1l
bnRlZCBpdCBvciBoYWNrZWQgYSB3b3JrLWFyb3VuZCBpbnRvIG91ciBpbnN0YWxsLiBXZSBzaG91
bGQgaGF2ZSBvbmUgb2YgdGhlc2Ugc29sdXRpb25zIGluIG91ciBuZXh0IHJlbGVhc2UuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81
L0NoZWF0U2hlZXQubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvQ2hlYXRTaGVldC5tZApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3YmVkNGM2ZmJmZDE1YzYwZjdhNDA2Yzc3M2I5
YmJmMjNmNmNhNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvQ2hlYXRTaGVldC5tZAorKysgL2Rldi9udWxsCkBAIC0x
LDUyNSArMCwwIEBACi0KLQotIyBEZWZpbmluZyBhIE1vY2sgQ2xhc3MgIwotCi0jIyBNb2NraW5n
IGEgTm9ybWFsIENsYXNzICMjCi0KLUdpdmVuCi1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2
aXJ0dWFsIH5Gb28oKTsKLSAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmly
dHVhbCBzdHJpbmcgRGVzY3JpYmUoY29uc3QgY2hhciogbmFtZSkgPSAwOwotICB2aXJ0dWFsIHN0
cmluZyBEZXNjcmliZShpbnQgdHlwZSkgPSAwOwotICB2aXJ0dWFsIGJvb2wgUHJvY2VzcyhCYXIg
ZWxlbSwgaW50IGNvdW50KSA9IDA7Ci19OwotYGBgCi0obm90ZSB0aGF0IGB+Rm9vKClgICoqbXVz
dCoqIGJlIHZpcnR1YWwpIHdlIGNhbiBkZWZpbmUgaXRzIG1vY2sgYXMKLWBgYAotI2luY2x1ZGUg
PGdtb2NrL2dtb2NrLmg+Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgTU9DS19D
T05TVF9NRVRIT0QwKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERlc2NyaWJlLCBz
dHJpbmcoY29uc3QgY2hhciogbmFtZSkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmlu
ZyhpbnQgdHlwZSkpOwotICBNT0NLX01FVEhPRDIoUHJvY2VzcywgYm9vbChCYXIgZWxlbSwgaW50
IGNvdW50KSk7Ci19OwotYGBgCi0KLVRvIGNyZWF0ZSBhICJuaWNlIiBtb2NrIG9iamVjdCB3aGlj
aCBpZ25vcmVzIGFsbCB1bmludGVyZXN0aW5nIGNhbGxzLAotb3IgYSAic3RyaWN0IiBtb2NrIG9i
amVjdCwgd2hpY2ggdHJlYXRzIHRoZW0gYXMgZmFpbHVyZXM6Ci1gYGAKLU5pY2VNb2NrPE1vY2tG
b28+IG5pY2VfZm9vOyAgICAgLy8gVGhlIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vLgot
U3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOyAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNz
IG9mIE1vY2tGb28uCi1gYGAKLQotIyMgTW9ja2luZyBhIENsYXNzIFRlbXBsYXRlICMjCi0KLVRv
IG1vY2sKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBTdGFja0ludGVyZmFj
ZSB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKLSAgdmly
dHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCB2b2lkIFB1c2goY29uc3Qg
RWxlbSYgeCkgPSAwOwotfTsKLWBgYAotKG5vdGUgdGhhdCBgflN0YWNrSW50ZXJmYWNlKClgICoq
bXVzdCoqIGJlIHZpcnR1YWwpIGp1c3QgYXBwZW5kIGBfVGAgdG8gdGhlIGBNT0NLXypgIG1hY3Jv
czoKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBNb2NrU3RhY2sgOiBwdWJs
aWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIE1PQ0tfQ09OU1Rf
TUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChj
b25zdCBFbGVtJiB4KSk7Ci19OwotYGBgCi0KLSMjIFNwZWNpZnlpbmcgQ2FsbGluZyBDb252ZW50
aW9ucyBmb3IgTW9jayBGdW5jdGlvbnMgIyMKLQotSWYgeW91ciBtb2NrIGZ1bmN0aW9uIGRvZXNu
J3QgdXNlIHRoZSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbiwgeW91Ci1jYW4gc3BlY2lmeSBp
dCBieSBhcHBlbmRpbmcgYF9XSVRIX0NBTExUWVBFYCB0byBhbnkgb2YgdGhlIG1hY3JvcwotZGVz
Y3JpYmVkIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgYW5kIHN1cHBseWluZyB0aGUgY2Fs
bGluZwotY29udmVudGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1hY3JvLiBGb3Ig
ZXhhbXBsZSwKLWBgYAotICBNT0NLX01FVEhPRF8xX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FM
TFRZUEUsIEZvbywgYm9vbChpbnQgbikpOwotICBNT0NLX0NPTlNUX01FVEhPRDJfV0lUSF9DQUxM
VFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQmFyLCBpbnQoZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci1g
YGAKLXdoZXJlIGBTVERNRVRIT0RDQUxMVFlQRWAgaXMgZGVmaW5lZCBieSBgPG9iamJhc2UuaD5g
IG9uIFdpbmRvd3MuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVzdHMgIwotCi1UaGUgdHlwaWNhbCBm
bG93IGlzOgotICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVzIHlvdSBuZWVkIHRvIHVz
ZS4gQWxsIEdvb2dsZSBNb2NrIG5hbWVzIGFyZSBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSB1
bmxlc3MgdGhleSBhcmUgbWFjcm9zIG9yIG90aGVyd2lzZSBub3RlZC4KLSAgMS4gQ3JlYXRlIHRo
ZSBtb2NrIG9iamVjdHMuCi0gIDEuIE9wdGlvbmFsbHksIHNldCB0aGUgZGVmYXVsdCBhY3Rpb25z
IG9mIHRoZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNldCB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGUg
bW9jayBvYmplY3RzIChIb3cgd2lsbCB0aGV5IGJlIGNhbGxlZD8gV2hhdCB3aWwgdGhleSBkbz8p
LgotICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzOyBpZiBuZWNl
c3NhcnksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMuCi0gIDEuIFdoZW4gYSBtb2NrIG9i
amVjdHMgaXMgZGVzdHJ1Y3RlZCwgR29vZ2xlIE1vY2sgYXV0b21hdGljYWxseSB2ZXJpZmllcyB0
aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlzZmllZC4KLQotSGVyZSBp
cyBhbiBleGFtcGxlOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gIzEKLQotVEVTVChCYXJUZXN0LCBEb2VzVGhpcykgewotICBNb2Nr
Rm9vIGZvbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgotCi0gIE9O
X0NBTEwoZm9vLCBHZXRTaXplKCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMzCi0gICAg
ICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICAvLyAuLi4gb3RoZXIgZGVmYXVsdCBhY3Rp
b25zIC4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoNSkpICAgICAgICAgICAgICAg
ICAgIC8vICM0Ci0gICAgICAuVGltZXMoMykKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
IkNhdGVnb3J5IDUiKSk7Ci0gIC8vIC4uLiBvdGhlciBleHBlY3RhdGlvbnMgLi4uCi0KLSAgRVhQ
RUNUX0VRKCJnb29kIiwgTXlQcm9kdWN0aW9uRnVuY3Rpb24oJmZvbykpOyAgLy8gIzUKLX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzYKLWBgYAot
Ci0jIFNldHRpbmcgRGVmYXVsdCBBY3Rpb25zICMKLQotR29vZ2xlIE1vY2sgaGFzIGEgKipidWls
dC1pbiBkZWZhdWx0IGFjdGlvbioqIGZvciBhbnkgZnVuY3Rpb24gdGhhdAotcmV0dXJucyBgdm9p
ZGAsIGBib29sYCwgYSBudW1lcmljIHZhbHVlLCBvciBhIHBvaW50ZXIuCi0KLVRvIGN1c3RvbWl6
ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGZ1bmN0aW9ucyB3aXRoIHJldHVybiB0eXBlIGBUYCBn
bG9iYWxseToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWU7Ci0KLURlZmF1bHRW
YWx1ZTxUPjo6U2V0KHZhbHVlKTsgIC8vIFNldHMgdGhlIGRlZmF1bHQgdmFsdWUgdG8gYmUgcmV0
dXJuZWQuCi0vLyAuLi4gdXNlIHRoZSBtb2NrcyAuLi4KLURlZmF1bHRWYWx1ZTxUPjo6Q2xlYXIo
KTsgICAgIC8vIFJlc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4KLWBgYAotCi1UbyBjdXN0b21pemUg
dGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9kLCB1c2UgYE9OX0NBTEwo
KWA6Ci1gYGAKLU9OX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAgLldp
dGgobXVsdGlfYXJndW1lbnRfbWF0Y2hlcikgID8KLSAgICAuV2lsbEJ5RGVmYXVsdChhY3Rpb24p
OwotYGBgCi0KLSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwotCi1gRVhQRUNUX0NBTEwoKWAgc2V0
cyAqKmV4cGVjdGF0aW9ucyoqIG9uIGEgbW9jayBtZXRob2QgKEhvdyB3aWxsIGl0IGJlCi1jYWxs
ZWQ/IFdoYXQgd2lsbCBpdCBkbz8pOgotYGBgCi1FWFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0
aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPwotICAg
IC5UaW1lcyhjYXJkaW5hbGl0eSkgICAgICAgICAgICA/Ci0gICAgLkluU2VxdWVuY2Uoc2VxdWVu
Y2VzKSAgICAgICAgICoKLSAgICAuQWZ0ZXIoZXhwZWN0YXRpb25zKSAgICAgICAgICAgKgotICAg
IC5XaWxsT25jZShhY3Rpb24pICAgICAgICAgICAgICAqCi0gICAgLldpbGxSZXBlYXRlZGx5KGFj
dGlvbikgICAgICAgID8KLSAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOyAgICAgICAgPwotYGBg
Ci0KLUlmIGBUaW1lcygpYCBpcyBvbWl0dGVkLCB0aGUgY2FyZGluYWxpdHkgaXMgYXNzdW1lZCB0
byBiZToKLQotICAqIGBUaW1lcygxKWAgd2hlbiB0aGVyZSBpcyBuZWl0aGVyIGBXaWxsT25jZSgp
YCBub3IgYFdpbGxSZXBlYXRlZGx5KClgOwotICAqIGBUaW1lcyhuKWAgd2hlbiB0aGVyZSBhcmUg
YG4gV2lsbE9uY2UoKWBzIGJ1dCBubyBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAx
OyBvcgotICAqIGBUaW1lcyhBdExlYXN0KG4pKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9uY2Uo
KWBzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDAuCi0KLUEgbWV0aG9k
IHdpdGggbm8gYEVYUEVDVF9DQUxMKClgIGlzIGZyZWUgdG8gYmUgaW52b2tlZCBfYW55IG51bWJl
ciBvZiB0aW1lc18sIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBiZSB0YWtlbiBlYWNoIHRp
bWUuCi0KLSMgTWF0Y2hlcnMgIwotCi1BICoqbWF0Y2hlcioqIG1hdGNoZXMgYSBfc2luZ2xlXyBh
cmd1bWVudC4gIFlvdSBjYW4gdXNlIGl0IGluc2lkZQotYE9OX0NBTEwoKWAgb3IgYEVYUEVDVF9D
QUxMKClgLCBvciB1c2UgaXQgdG8gdmFsaWRhdGUgYSB2YWx1ZQotZGlyZWN0bHk6Ci0KLXwgYEVY
UEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBBc3NlcnRzIHRoYXQgYHZhbHVlYCBtYXRjaGVz
IGBtYXRjaGVyYC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVEhBVCh2YWx1ZSwg
bWF0Y2hlcilgIHwgVGhlIHNhbWUgYXMgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAsIGV4
Y2VwdCB0aGF0IGl0IGdlbmVyYXRlcyBhICoqZmF0YWwqKiBmYWlsdXJlLiB8Ci0KLUJ1aWx0LWlu
IG1hdGNoZXJzICh3aGVyZSBgYXJndW1lbnRgIGlzIHRoZSBmdW5jdGlvbiBhcmd1bWVudCkgYXJl
Ci1kaXZpZGVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOgotCi0jIyBXaWxkY2FyZCAjIwotfGBf
YHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdGhlIGNvcnJlY3QgdHlwZS58Ci18Oi0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQTx0
eXBlPigpYCBvciBgQW48dHlwZT4oKWB8YGFyZ3VtZW50YCBjYW4gYmUgYW55IHZhbHVlIG9mIHR5
cGUgYHR5cGVgLiAgICAgfAotCi0jIyBHZW5lcmljIENvbXBhcmlzb24gIyMKLQotfGBFcSh2YWx1
ZSlgIG9yIGB2YWx1ZWB8YGFyZ3VtZW50ID09IHZhbHVlYHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS18Ci18YEdlKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1l
bnQgPj0gdmFsdWVgfAotfGBHdCh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ID4gdmFsdWVg
IHwKLXxgTGUodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8PSB2YWx1ZWB8Ci18YEx0KHZh
bHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPCB2YWx1ZWAgfAotfGBOZSh2YWx1ZSlgICAgICAg
ICAgICB8YGFyZ3VtZW50ICE9IHZhbHVlYHwKLXxgSXNOdWxsKClgICAgICAgICAgICAgfGBhcmd1
bWVudGAgaXMgYSBgTlVMTGAgcG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Ci18YE5vdE51bGwoKWAg
ICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgbm9uLW51bGwgcG9pbnRlciAocmF3IG9yIHNtYXJ0
KS58Ci18YFJlZih2YXJpYWJsZSlgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgcmVmZXJlbmNlIHRv
IGB2YXJpYWJsZWAufAotfGBUeXBlZEVxPHR5cGU+KHZhbHVlKWB8YGFyZ3VtZW50YCBoYXMgdHlw
ZSBgdHlwZWAgYW5kIGlzIGVxdWFsIHRvIGB2YWx1ZWAuIFlvdSBtYXkgbmVlZCB0byB1c2UgdGhp
cyBpbnN0ZWFkIG9mIGBFcSh2YWx1ZSlgIHdoZW4gdGhlIG1vY2sgZnVuY3Rpb24gaXMgb3Zlcmxv
YWRlZC58Ci0KLUV4Y2VwdCBgUmVmKClgLCB0aGVzZSBtYXRjaGVycyBtYWtlIGEgX2NvcHlfIG9m
IGB2YWx1ZWAgaW4gY2FzZSBpdCdzCi1tb2RpZmllZCBvciBkZXN0cnVjdGVkIGxhdGVyLiBJZiB0
aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYHZhbHVlYAotZG9lc24ndCBoYXZlIGEgcHVibGlj
IGNvcHkgY29uc3RydWN0b3IsIHRyeSB3cmFwIGl0IGluIGBCeVJlZigpYCwKLWUuZy4gYEVxKEJ5
UmVmKG5vbl9jb3B5YWJsZV92YWx1ZSkpYC4gSWYgeW91IGRvIHRoYXQsIG1ha2Ugc3VyZQotYG5v
bl9jb3B5YWJsZV92YWx1ZWAgaXMgbm90IGNoYW5nZWQgYWZ0ZXJ3YXJkcywgb3IgdGhlIG1lYW5p
bmcgb2YgeW91cgotbWF0Y2hlciB3aWxsIGJlIGNoYW5nZWQuCi0KLSMjIEZsb2F0aW5nLVBvaW50
IE1hdGNoZXJzICMjCi0KLXxgRG91YmxlRXEoYV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRv
dWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0
d28gTmFOcyBhcyB1bmVxdWFsLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRmxvYXRFcShhX2Zsb2F0KWAgIHxgYXJndW1l
bnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwg
dHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwKLXxgTmFuU2Vuc2l0aXZlRG91YmxlRXEo
YV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBl
cXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBhcyBlcXVhbC4gIHwKLXxgTmFu
U2Vuc2l0aXZlRmxvYXRFcShhX2Zsb2F0KWB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUg
YXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9mbG9hdGAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVx
dWFsLiAgICB8Ci0KLVRoZSBhYm92ZSBtYXRjaGVycyB1c2UgVUxQLWJhc2VkIGNvbXBhcmlzb24g
KHRoZSBzYW1lIGFzIHVzZWQgaW4KLVtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3QvKSkuIFRoZXkKLWF1dG9tYXRpY2FsbHkgcGljayBhIHJlYXNvbmFibGUg
ZXJyb3IgYm91bmQgYmFzZWQgb24gdGhlIGFic29sdXRlCi12YWx1ZSBvZiB0aGUgZXhwZWN0ZWQg
dmFsdWUuICBgRG91YmxlRXEoKWAgYW5kIGBGbG9hdEVxKClgIGNvbmZvcm0gdG8KLXRoZSBJRUVF
IHN0YW5kYXJkLCB3aGljaCByZXF1aXJlcyBjb21wYXJpbmcgdHdvIE5hTnMgZm9yIGVxdWFsaXR5
IHRvCi1yZXR1cm4gZmFsc2UuIFRoZSBgTmFuU2Vuc2l0aXZlKmAgdmVyc2lvbiBpbnN0ZWFkIHRy
ZWF0cyB0d28gTmFOcyBhcwotZXF1YWwsIHdoaWNoIGlzIG9mdGVuIHdoYXQgYSB1c2VyIHdhbnRz
LgotCi0jIyBTdHJpbmcgTWF0Y2hlcnMgIyMKLQotVGhlIGBhcmd1bWVudGAgY2FuIGJlIGVpdGhl
ciBhIEMgc3RyaW5nIG9yIGEgQysrIHN0cmluZyBvYmplY3Q6Ci0KLXxgQ29udGFpbnNSZWdleChz
dHJpbmcpYHxgYXJndW1lbnRgIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi58
Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFbmRzV2l0aChzdWZmaXgpYCAgICAgfGBhcmd1bWVudGAg
ZW5kcyB3aXRoIHN0cmluZyBgc3VmZml4YC4gICAgICAgICAgIHwKLXxgSGFzU3Vic3RyKHN0cmlu
ZylgICAgIHxgYXJndW1lbnRgIGNvbnRhaW5zIGBzdHJpbmdgIGFzIGEgc3ViLXN0cmluZy4gICB8
Ci18YE1hdGNoZXNSZWdleChzdHJpbmcpYCB8YGFyZ3VtZW50YCBtYXRjaGVzIHRoZSBnaXZlbiBy
ZWd1bGFyIGV4cHJlc3Npb24gd2l0aCB0aGUgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGNo
YXJhY3RlciBhbmQgZW5kaW5nIGF0IHRoZSBsYXN0IGNoYXJhY3Rlci58Ci18YFN0YXJ0c1dpdGgo
cHJlZml4KWAgICB8YGFyZ3VtZW50YCBzdGFydHMgd2l0aCBzdHJpbmcgYHByZWZpeGAuICAgICAg
ICAgfAotfGBTdHJDYXNlRXEoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgaXMgZXF1YWwgdG8gYHN0
cmluZ2AsIGlnbm9yaW5nIGNhc2UuIHwKLXxgU3RyQ2FzZU5lKHN0cmluZylgICAgIHxgYXJndW1l
bnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2FzZS58Ci18YFN0ckVxKHN0
cmluZylgICAgICAgICB8YGFyZ3VtZW50YCBpcyBlcXVhbCB0byBgc3RyaW5nYC4gICAgICAgICAg
ICAgICAgfAotfGBTdHJOZShzdHJpbmcpYCAgICAgICAgfGBhcmd1bWVudGAgaXMgbm90IGVxdWFs
IHRvIGBzdHJpbmdgLiAgICAgICAgICAgIHwKLQotYFN0ckNhc2VFcSgpYCwgYFN0ckNhc2VOZSgp
YCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClgIHdvcmsgZm9yIHdpZGUKLXN0cmluZ3MgYXMgd2Vs
bC4KLQotIyMgQ29udGFpbmVyIE1hdGNoZXJzICMjCi0KLU1vc3QgU1RMLXN0eWxlIGNvbnRhaW5l
cnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2FuIHVzZQotYEVxKGV4cGVjdGVkX2NvbnRhaW5lcilg
IG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCi1jb250YWluZXIgZXhh
Y3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0ZSB0aGUgZWxlbWVudHMgaW4tbGluZSwKLW1hdGNo
IHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMsIHlv
dSBjYW4gdXNlOgotCi18IGBDb250YWlucyhlKWAgfCBgYXJndW1lbnRgIGNvbnRhaW5zIGFuIGVs
ZW1lbnQgdGhhdCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEg
bWF0Y2hlci4gfAotfDotLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLXxgRWxlbWVudHNBcmUoZTAsIGUxLCAuLi4sIGVuKWB8YGFyZ3VtZW50YCBoYXMg
YG4gKyAxYCBlbGVtZW50cywgd2hlcmUgdGhlIGktdGggZWxlbWVudCBtYXRjaGVzIGBlaWAsIHdo
aWNoIGNhbiBiZSBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFs
bG93ZWQufAotfGBFbGVtZW50c0FyZUFycmF5KGFycmF5KWAgb3IgYEVsZW1lbnRzQXJlQXJyYXko
YXJyYXksIGNvdW50KWB8VGhlIHNhbWUgYXMgYEVsZW1lbnRzQXJlKClgIGV4Y2VwdCB0aGF0IHRo
ZSBleHBlY3RlZCBlbGVtZW50IHZhbHVlcy9tYXRjaGVycyBjb21lIGZyb20gYSBDLXN0eWxlIGFy
cmF5LnwKLXwgYENvbnRhaW5lckVxKGNvbnRhaW5lcilgIHwgVGhlIHNhbWUgYXMgYEVxKGNvbnRh
aW5lcilgIGV4Y2VwdCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYWxzbyBpbmNsdWRlcyB3aGlj
aCBlbGVtZW50cyBhcmUgaW4gb25lIGNvbnRhaW5lciBidXQgbm90IHRoZSBvdGhlci4gfAotCi1U
aGVzZSBtYXRjaGVycyBjYW4gYWxzbyBtYXRjaDoKLQotICAxLiBhIG5hdGl2ZSBhcnJheSBwYXNz
ZWQgYnkgcmVmZXJlbmNlIChlLmcuIGluIGBGb28oY29uc3QgaW50ICgmYSlbNV0pYCksIGFuZAot
ICAxLiBhbiBhcnJheSBwYXNzZWQgYXMgYSBwb2ludGVyIGFuZCBhIGNvdW50IChlLmcuIGluIGBC
YXIoY29uc3QgVCogYnVmZmVyLCBpbnQgbGVuKWAgLS0gc2VlIFtNdWx0aS1hcmd1bWVudCBNYXRj
aGVyc10oI011bHRpYXJndW1lbnRfTWF0Y2hlcnMubWQpKS4KLQotd2hlcmUgdGhlIGFycmF5IG1h
eSBiZSBtdWx0aS1kaW1lbnNpb25hbCAoaS5lLiBpdHMgZWxlbWVudHMgY2FuIGJlIGFycmF5cyku
Ci0KLSMjIE1lbWJlciBNYXRjaGVycyAjIwotCi18YEZpZWxkKCZjbGFzczo6ZmllbGQsIG0pYHxg
YXJndW1lbnQuZmllbGRgIChvciBgYXJndW1lbnQtPmZpZWxkYCB3aGVuIGBhcmd1bWVudGAgaXMg
YSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1hdGNoZXIgYG1gLCB3aGVyZSBgYXJndW1lbnRgIGlz
IGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18ufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgS2V5KGUpYCAgICAgICAgICAgICAgICAg
fGBhcmd1bWVudC5maXJzdGAgbWF0Y2hlcyBgZWAsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSB2YWx1
ZSBvciBhIG1hdGNoZXIuIEUuZy4gYENvbnRhaW5zKEtleShMZSg1KSkpYCBjYW4gdmVyaWZ5IHRo
YXQgYSBgbWFwYCBjb250YWlucyBhIGtleSBgPD0gNWAufAotfGBQYWlyKG0xLCBtMilgICAgICAg
ICAgICB8YGFyZ3VtZW50YCBpcyBhbiBgc3RkOjpwYWlyYCB3aG9zZSBgZmlyc3RgIGZpZWxkIG1h
dGNoZXMgYG0xYCBhbmQgYHNlY29uZGAgZmllbGQgbWF0Y2hlcyBgbTJgLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgUHJvcGVydHkoJmNsYXNzOjpw
cm9wZXJ0eSwgbSlgfGBhcmd1bWVudC5wcm9wZXJ0eSgpYCAob3IgYGFyZ3VtZW50LT5wcm9wZXJ0
eSgpYCB3aGVuIGBhcmd1bWVudGAgaXMgYSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1hdGNoZXIg
YG1gLCB3aGVyZSBgYXJndW1lbnRgIGlzIGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18ufAotCi0j
IyBNYXRjaGluZyB0aGUgUmVzdWx0IG9mIGEgRnVuY3Rpb24gb3IgRnVuY3RvciAjIwotCi18YFJl
c3VsdE9mKGYsIG0pYHxgZihhcmd1bWVudClgIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBm
YCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAotfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLQotIyMgUG9pbnRlciBNYXRjaGVycyAjIwotCi18YFBvaW50ZWUobSlgfGBhcmd1bWVu
dGAgKGVpdGhlciBhIHNtYXJ0IHBvaW50ZXIgb3IgYSByYXcgcG9pbnRlcikgcG9pbnRzIHRvIGEg
dmFsdWUgdGhhdCBtYXRjaGVzIG1hdGNoZXIgYG1gLnwKLXw6LS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBNdWx0aWFyZ3VtZW50IE1hdGNo
ZXJzICMjCi0KLVRoZXNlIGFyZSBtYXRjaGVycyBvbiB0dXBsZSB0eXBlcy4gVGhleSBjYW4gYmUg
dXNlZCBpbgotYC5XaXRoKClgLiBUaGUgZm9sbG93aW5nIGNhbiBiZSB1c2VkIG9uIGZ1bmN0aW9u
cyB3aXRoIDxpPnR3bzxicj4KLWFyZ3VtZW50czwvaT4gYHhgIGFuZCBgeWA6Ci0KLXxgRXEoKWB8
YHggPT0geWB8Ci18Oi0tLS0tfDotLS0tLS0tfAotfGBHZSgpYHxgeCA+PSB5YHwKLXxgR3QoKWB8
YHggPiB5YCB8Ci18YExlKClgfGB4IDw9IHlgfAotfGBMdCgpYHxgeCA8IHlgIHwKLXxgTmUoKWB8
YHggIT0geWB8Ci0KLVlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgc2VsZWN0b3JzIHRvIHBpY2sg
YSBzdWJzZXQgb2YgdGhlIGFyZ3VtZW50cwotKG9yIHJlb3JkZXIgdGhlbSkgdG8gcGFydGljaXBh
dGUgaW4gdGhlIG1hdGNoaW5nOgotCi18YEFsbEFyZ3MobSlgfEVxdWl2YWxlbnQgdG8gYG1gLiBV
c2VmdWwgYXMgc3ludGFjdGljIHN1Z2FyIGluIGAuV2l0aChBbGxBcmdzKG0pKWAufAotfDotLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQXJnczxOMSwgTjIsIC4uLiwgTms+KG0pYHxUaGUgYGtg
IHNlbGVjdGVkICh1c2luZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50cyBtYXRjaCBgbWAsIGUu
Zy4gYEFyZ3M8MSwgMj4oQ29udGFpbnMoNSkpYC58Ci0KLSMjIENvbXBvc2l0ZSBNYXRjaGVycyAj
IwotCi1Zb3UgY2FuIG1ha2UgYSBtYXRjaGVyIGZyb20gb25lIG9yIG1vcmUgb3RoZXIgbWF0Y2hl
cnM6Ci0KLXxgQWxsT2YobTEsIG0yLCAuLi4sIG1uKWB8YGFyZ3VtZW50YCBtYXRjaGVzIGFsbCBv
ZiB0aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxg
QW55T2YobTEsIG0yLCAuLi4sIG1uKWB8YGFyZ3VtZW50YCBtYXRjaGVzIGF0IGxlYXN0IG9uZSBv
ZiB0aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwKLXxgTm90KG0pYCAgICAgICAgICAgICAgICB8
YGFyZ3VtZW50YCBkb2Vzbid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAgICAgICAgICAgIHwKLQot
IyMgQWRhcHRlcnMgZm9yIE1hdGNoZXJzICMjCi0KLXxgTWF0Y2hlckNhc3Q8VD4obSlgfGNhc3Rz
IG1hdGNoZXIgYG1gIHRvIHR5cGUgYE1hdGNoZXI8VD5gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgU2FmZU1hdGNoZXJD
YXN0PFQ+KG0pYHwgW3NhZmVseSBjYXN0c10oVjFfNV9Db29rQm9vayNDYXN0aW5nX01hdGNoZXJz
Lm1kKSBtYXRjaGVyIGBtYCB0byB0eXBlIGBNYXRjaGVyPFQ+YC4gfAotfGBUcnVseShwcmVkaWNh
dGUpYCB8YHByZWRpY2F0ZShhcmd1bWVudClgIHJldHVybnMgc29tZXRoaW5nIGNvbnNpZGVyZWQg
YnkgQysrIHRvIGJlIHRydWUsIHdoZXJlIGBwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVu
Y3Rvci58Ci0KLSMjIE1hdGNoZXJzIGFzIFByZWRpY2F0ZXMgIyMKLQotfGBNYXRjaGVzKG0pYHxh
IHVuYXJ5IGZ1bmN0b3IgdGhhdCByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnQgbWF0Y2hl
cyBgbWAufAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFeHBsYWluTWF0Y2hSZXN1bHQobSwg
dmFsdWUsIHJlc3VsdF9saXN0ZW5lcilgfHJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgbWF0Y2hl
cyBgbWAsIGV4cGxhaW5pbmcgdGhlIHJlc3VsdCB0byBgcmVzdWx0X2xpc3RlbmVyYC58Ci18YFZh
bHVlKHgsIG0pYHxyZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgb2YgYHhgIG1hdGNoZXMgYG1g
LiAgICAgICAgICAgICAgICAgfAotCi0jIyBEZWZpbmluZyBNYXRjaGVycyAjIwotCi18IGBNQVRD
SEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChhcmcgJSAyKSA9PSAwOyB9YCB8IERlZmluZXMgYSBt
YXRjaGVyIGBJc0V2ZW4oKWAgdG8gbWF0Y2ggYW4gZXZlbiBudW1iZXIuIHwKLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgTUFUQ0hFUl9QKElz
RGl2aXNpYmxlQnksIG4sICIiKSB7ICpyZXN1bHRfbGlzdGVuZXIgPDwgIndoZXJlIHRoZSByZW1h
aW5kZXIgaXMgIiA8PCAoYXJnICUgbik7IHJldHVybiAoYXJnICUgbikgPT0gMDsgfWAgfCBEZWZp
bmVzIGEgbWFjaGVyIGBJc0RpdmlzaWJsZUJ5KG4pYCB0byBtYXRjaCBhIG51bWJlciBkaXZpc2li
bGUgYnkgYG5gLiB8Ci18IGBNQVRDSEVSX1AyKElzQmV0d2VlbiwgYSwgYiwgImlzIGJldHdlZW4g
JShhKXMgYW5kICUoYilzIikgeyByZXR1cm4gYSA8PSBhcmcgJiYgYXJnIDw9IGI7IH1gIHwgRGVm
aW5lcyBhIG1hdGNoZXIgYElzQmV0d2VlbihhLCBiKWAgdG8gbWF0Y2ggYSB2YWx1ZSBpbiB0aGUg
cmFuZ2UgW2BhYCwgYGJgXS4gfAotCi0qKk5vdGVzOioqCi0KLSAgMS4gVGhlIGBNQVRDSEVSKmAg
bWFjcm9zIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotICAxLiBU
aGUgbWF0Y2hlciBib2R5IG11c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5u
b3QgaGF2ZSBhbnkgc2lkZSBlZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBv
biBhbnl0aGluZyBvdGhlciB0aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0
Y2hlciBwYXJhbWV0ZXJzKS4KLSAgMS4gWW91IGNhbiB1c2UgYFByaW50VG9TdHJpbmcoeClgIHRv
IGNvbnZlcnQgYSB2YWx1ZSBgeGAgb2YgYW55IHR5cGUgdG8gYSBzdHJpbmcuCi0KLSMjIE1hdGNo
ZXJzIGFzIFRlc3QgQXNzZXJ0aW9ucyAjIwotCi18YEFTU0VSVF9USEFUKGV4cHJlc3Npb24sIG0p
YHxHZW5lcmF0ZXMgYSBbZmF0YWwgZmFpbHVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dv
b2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0UHJpbWVyI0Fzc2VydGlvbnMpIGlmIHRoZSB2YWx1ZSBv
ZiBgZXhwcmVzc2lvbmAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC58Ci18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Ci18YEVYUEVDVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFp
bHVyZSBpZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBg
bWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci0KLSMgQWN0aW9ucyAjCi0KLSoqQWN0aW9ucyoqIHNwZWNpZnkgd2hh
dCBhIG1vY2sgZnVuY3Rpb24gc2hvdWxkIGRvIHdoZW4gaW52b2tlZC4KLQotIyMgUmV0dXJuaW5n
IGEgVmFsdWUgIyMKLQotfGBSZXR1cm4oKWB8UmV0dXJuIGZyb20gYSBgdm9pZGAgbW9jayBmdW5j
dGlvbi58Ci18Oi0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
LXxgUmV0dXJuKHZhbHVlKWB8UmV0dXJuIGB2YWx1ZWAuICAgICAgICAgICAgICAgICAgICB8Ci18
YFJldHVybkFyZzxOPigpYHxSZXR1cm4gdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQufAot
fGBSZXR1cm5OZXc8VD4oYTEsIC4uLiwgYWspYHxSZXR1cm4gYG5ldyBUKGExLCAuLi4sIGFrKWA7
IGEgZGlmZmVyZW50IG9iamVjdCBpcyBjcmVhdGVkIGVhY2ggdGltZS58Ci18YFJldHVybk51bGwo
KWB8UmV0dXJuIGEgbnVsbCBwb2ludGVyLiAgICAgICAgICAgICB8Ci18YFJldHVyblJlZih2YXJp
YWJsZSlgfFJldHVybiBhIHJlZmVyZW5jZSB0byBgdmFyaWFibGVgLiAgfAotCi0jIyBTaWRlIEVm
ZmVjdHMgIyMKLQotfGBBc3NpZ24oJnZhcmlhYmxlLCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRv
IHZhcmlhYmxlLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Ci18IGBEZWxldGVBcmc8Tj4oKWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5g
LXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIHBvaW50ZXIuIHwKLXwgYFNh
dmVBcmc8Tj4ocG9pbnRlcilgICAgIHwgU2F2ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCB0byBgKnBvaW50ZXJgLiB8Ci18IGBTZXRBcmdSZWZlcmVlPE4+KHZhbHVlKWAgfAlBc3NpZ24g
dmFsdWUgdG8gdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkgdGhlIGBOYC10aCAoMC1iYXNlZCkg
YXJndW1lbnQuIHwKLXxgU2V0QXJndW1lbnRQb2ludGVlPE4+KHZhbHVlKWB8QXNzaWduIGB2YWx1
ZWAgdG8gdGhlIHZhcmlhYmxlIHBvaW50ZWQgYnkgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1l
bnQufAotfGBTZXRBcnJheUFyZ3VtZW50PE4+KGZpcnN0LCBsYXN0KWB8Q29waWVzIHRoZSBlbGVt
ZW50cyBpbiBzb3VyY2UgcmFuZ2UgW2BmaXJzdGAsIGBsYXN0YCkgdG8gdGhlIGFycmF5IHBvaW50
ZWQgdG8gYnkgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIGNhbiBiZSBlaXRo
ZXIgYSBwb2ludGVyIG9yIGFuIGl0ZXJhdG9yLiBUaGUgYWN0aW9uIGRvZXMgbm90IHRha2Ugb3du
ZXJzaGlwIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc291cmNlIHJhbmdlLnwKLXxgU2V0RXJybm9B
bmRSZXR1cm4oZXJyb3IsIHZhbHVlKWB8U2V0IGBlcnJub2AgdG8gYGVycm9yYCBhbmQgcmV0dXJu
IGB2YWx1ZWAufAotfGBUaHJvdyhleGNlcHRpb24pYCAgICAgICAgfFRocm93cyB0aGUgZ2l2ZW4g
ZXhjZXB0aW9uLCB3aGljaCBjYW4gYmUgYW55IGNvcHlhYmxlIHZhbHVlLiBBdmFpbGFibGUgc2lu
Y2UgdjEuMS4wLnwKLQotIyMgVXNpbmcgYSBGdW5jdGlvbiBvciBhIEZ1bmN0b3IgYXMgYW4gQWN0
aW9uICMjCi0KLXxgSW52b2tlKGYpYHxJbnZva2UgYGZgIHdpdGggdGhlIGFyZ3VtZW50cyBwYXNz
ZWQgdG8gdGhlIG1vY2sgZnVuY3Rpb24sIHdoZXJlIGBmYCBjYW4gYmUgYSBnbG9iYWwvc3RhdGlj
IGZ1bmN0aW9uIG9yIGEgZnVuY3Rvci58Ci18Oi0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBJbnZva2Uob2JqZWN0
X3BvaW50ZXIsICZjbGFzczo6bWV0aG9kKWB8SW52b2tlIHRoZSB7bWV0aG9kIG9uIHRoZSBvYmpl
Y3Qgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgbW9jayBmdW5jdGlvbi4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBJbnZva2VXaXRob3V0QXJncyhmKWB8SW52
b2tlIGBmYCwgd2hpY2ggY2FuIGJlIGEgZ2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0
b3IuIGBmYCBtdXN0IHRha2Ugbm8gYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgfAot
fGBJbnZva2VXaXRob3V0QXJncyhvYmplY3RfcG9pbnRlciwgJmNsYXNzOjptZXRob2QpYHxJbnZv
a2UgdGhlIG1ldGhvZCBvbiB0aGUgb2JqZWN0LCB3aGljaCB0YWtlcyBubyBhcmd1bWVudHMuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18
YEludm9rZUFyZ3VtZW50PE4+KGFyZzEsIGFyZzIsIC4uLiwgYXJnaylgfEludm9rZSB0aGUgbW9j
ayBmdW5jdGlvbidzIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIG11c3QgYmUgYSBm
dW5jdGlvbiBvciBhIGZ1bmN0b3IsIHdpdGggdGhlIGBrYCBhcmd1bWVudHMufAotCi1UaGUgcmV0
dXJuIHZhbHVlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2
YWx1ZQotb2YgdGhlIGFjdGlvbi4KLQotV2hlbiBkZWZpbmluZyBhIGZ1bmN0aW9uIG9yIGZ1bmN0
b3IgdG8gYmUgdXNlZCB3aXRoIGBJbnZva2UqKClgLCB5b3UgY2FuIGRlY2xhcmUgYW55IHVudXNl
ZCBwYXJhbWV0ZXJzIGFzIGBVbnVzZWRgOgotYGBgCi0gIGRvdWJsZSBEaXN0YW5jZShVbnVzZWQs
IGRvdWJsZSB4LCBkb3VibGUgeSkgeyByZXR1cm4gc3FydCh4KnggKyB5KnkpOyB9Ci0gIC4uLgot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oIkhpIiwgXywgXykpLldpbGxPbmNlKEludm9rZShEaXN0
YW5jZSkpOwotYGBgCi0KLUluIGBJbnZva2VBcmd1bWVudDxOPiguLi4pYCwgaWYgYW4gYXJndW1l
bnQgbmVlZHMgdG8gYmUgcGFzc2VkIGJ5IHJlZmVyZW5jZSwgd3JhcCBpdCBpbnNpZGUgYEJ5UmVm
KClgLiBGb3IgZXhhbXBsZSwKLWBgYAotICBJbnZva2VBcmd1bWVudDwyPig1LCBzdHJpbmcoIkhp
IiksIEJ5UmVmKGZvbykpCi1gYGAKLWNhbGxzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgIzIgYXJndW1l
bnQsIHBhc3NpbmcgdG8gaXQgYDVgIGFuZCBgc3RyaW5nKCJIaSIpYCBieSB2YWx1ZSwgYW5kIGBm
b29gIGJ5IHJlZmVyZW5jZS4KLQotIyMgRGVmYXVsdCBBY3Rpb24gIyMKLQotfGBEb0RlZmF1bHQo
KWB8RG8gdGhlIGRlZmF1bHQgYWN0aW9uIChzcGVjaWZpZWQgYnkgYE9OX0NBTEwoKWAgb3IgdGhl
IGJ1aWx0LWluIG9uZSkufAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0qKk5vdGU6
KiogZHVlIHRvIHRlY2huaWNhbCByZWFzb25zLCBgRG9EZWZhdWx0KClgIGNhbm5vdCBiZSB1c2Vk
IGluc2lkZSAgYSBjb21wb3NpdGUgYWN0aW9uIC0gdHJ5aW5nIHRvIGRvIHNvIHdpbGwgcmVzdWx0
IGluIGEgcnVuLXRpbWUgZXJyb3IuCi0KLSMjIENvbXBvc2l0ZSBBY3Rpb25zICMjCi0KLXxgRG9B
bGwoYTEsIGEyLCAuLi4sIGFuKWB8RG8gYWxsIGFjdGlvbnMgYGExYCB0byBgYW5gIGFuZCByZXR1
cm4gdGhlIHJlc3VsdCBvZiBgYW5gIGluIGVhY2ggaW52b2NhdGlvbi4gVGhlIGZpcnN0IGBuIC0g
MWAgc3ViLWFjdGlvbnMgbXVzdCByZXR1cm4gdm9pZC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Ci18YElnbm9yZVJlc3VsdChhKWAgICAgICAgfFBlcmZvcm0gYWN0
aW9uIGBhYCBhbmQgaWdub3JlIGl0cyByZXN1bHQuIGBhYCBtdXN0IG5vdCByZXR1cm4gdm9pZC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLXxgV2l0aEFyZzxOPihhKWAgICAgICAgICB8UGFzcyB0aGUgYE5gLXRoICgwLWJhc2VkKSBh
cmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24gYGFgIGFuZCBwZXJmb3JtIGl0
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBXaXRoQXJnczxO
MSwgTjIsIC4uLiwgTms+KGEpYHxQYXNzIHRoZSBzZWxlY3RlZCAoMC1iYXNlZCkgYXJndW1lbnRz
IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5kIHBlcmZvcm0gaXQuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFdpdGhvdXRBcmdzKGEpYCAgICAg
ICAgfFBlcmZvcm0gYWN0aW9uIGBhYCB3aXRob3V0IGFueSBhcmd1bWVudHMuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKLQotIyMgRGVmaW5pbmcgQWN0aW9ucyAjIwotCi18IGBBQ1RJT04o
U3VtKSB7IHJldHVybiBhcmcwICsgYXJnMTsgfWAgfCBEZWZpbmVzIGFuIGFjdGlvbiBgU3VtKClg
IHRvIHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgIzAgYW5k
ICMxLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBBQ1RJT05fUChQbHVzLCBuKSB7IHJldHVybiBh
cmcwICsgbjsgfWAgfCBEZWZpbmVzIGFuIGFjdGlvbiBgUGx1cyhuKWAgdG8gcmV0dXJuIHRoZSBz
dW0gb2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCAjMCBhbmQgYG5gLiB8Ci18IGBBQ1RJ
T05fUGsoRm9vLCBwMSwgLi4uLCBwaykgeyBzdGF0ZW1lbnRzOyB9YCB8IERlZmluZXMgYSBwYXJh
bWV0ZXJpemVkIGFjdGlvbiBgRm9vKHAxLCAuLi4sIHBrKWAgdG8gZXhlY3V0ZSB0aGUgZ2l2ZW4g
YHN0YXRlbWVudHNgLiAgIHwKLQotVGhlIGBBQ1RJT04qYCBtYWNyb3MgY2Fubm90IGJlIHVzZWQg
aW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3MuCi0KLSMgQ2FyZGluYWxpdGllcyAjCi0KLVRoZXNl
IGFyZSB1c2VkIGluIGBUaW1lcygpYCB0byBzcGVjaWZ5IGhvdyBtYW55IHRpbWVzIGEgbW9jayBm
dW5jdGlvbiB3aWxsIGJlIGNhbGxlZDoKLQotfGBBbnlOdW1iZXIoKWB8VGhlIGZ1bmN0aW9uIGNh
biBiZSBjYWxsZWQgYW55IG51bWJlciBvZiB0aW1lcy58Ci18Oi0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQXRMZWFzdChuKWAg
fFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0IGxlYXN0IGBuYCB0aW1lcy4gICAgICAgfAotfGBBdE1v
c3QobilgICB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYXQgbW9zdCBgbmAgdGltZXMuICAgICAgICB8
Ci18YEJldHdlZW4obSwgbilgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGJldHdlZW4gYG1gIGFuZCBg
bmAgKGluY2x1c2l2ZSkgdGltZXMufAotfGBFeGFjdGx5KG4pIG9yIG5gfFRoZSBjYWxsIGlzIGV4
cGVjdGVkIGV4YWN0bHkgYG5gIHRpbWVzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2FsbCBzaG91bGQg
bmV2ZXIgaGFwcGVuIHdoZW4gYG5gIGlzIDAufAotCi0jIEV4cGVjdGF0aW9uIE9yZGVyICMKLQot
QnkgZGVmYXVsdCwgdGhlIGV4cGVjdGF0aW9ucyBjYW4gYmUgbWF0Y2hlZCBpbiBfYW55XyBvcmRl
ci4gIElmIHNvbWUKLW9yIGFsbCBleHBlY3RhdGlvbnMgbXVzdCBiZSBtYXRjaGVkIGluIGEgZ2l2
ZW4gb3JkZXIsIHRoZXJlIGFyZSB0d28KLXdheXMgdG8gc3BlY2lmeSBpdC4gIFRoZXkgY2FuIGJl
IHVzZWQgZWl0aGVyIGluZGVwZW5kZW50bHkgb3IKLXRvZ2V0aGVyLgotCi0jIyBUaGUgQWZ0ZXIg
Q2xhdXNlICMjCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvbjsKLS4uLgotRXhw
ZWN0YXRpb24gaW5pdF94ID0gRVhQRUNUX0NBTEwoZm9vLCBJbml0WCgpKTsKLUV4cGVjdGF0aW9u
IGluaXRfeSA9IEVYUEVDVF9DQUxMKGZvbywgSW5pdFkoKSk7Ci1FWFBFQ1RfQ0FMTChmb28sIEJh
cigpKQotICAgIC5BZnRlcihpbml0X3gsIGluaXRfeSk7Ci1gYGAKLXNheXMgdGhhdCBgQmFyKClg
IGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBib3RoIGBJbml0WCgpYCBhbmQKLWBJbml0WSgpYCBo
YXZlIGJlZW4gY2FsbGVkLgotCi1JZiB5b3UgZG9uJ3Qga25vdyBob3cgbWFueSBwcmUtcmVxdWlz
aXRlcyBhbiBleHBlY3RhdGlvbiBoYXMgd2hlbiB5b3UKLXdyaXRlIGl0LCB5b3UgY2FuIHVzZSBh
biBgRXhwZWN0YXRpb25TZXRgIHRvIGNvbGxlY3QgdGhlbToKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OkV4cGVjdGF0aW9uU2V0OwotLi4uCi1FeHBlY3RhdGlvblNldCBhbGxfaW5pdHM7Ci1mb3Ig
KGludCBpID0gMDsgaSA8IGVsZW1lbnRfY291bnQ7IGkrKykgewotICBhbGxfaW5pdHMgKz0gRVhQ
RUNUX0NBTEwoZm9vLCBJbml0RWxlbWVudChpKSk7Ci19Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigp
KQotICAgIC5BZnRlcihhbGxfaW5pdHMpOwotYGBgCi1zYXlzIHRoYXQgYEJhcigpYCBjYW4gYmUg
Y2FsbGVkIG9ubHkgYWZ0ZXIgYWxsIGVsZW1lbnRzIGhhdmUgYmVlbgotaW5pdGlhbGl6ZWQgKGJ1
dCB3ZSBkb24ndCBjYXJlIGFib3V0IHdoaWNoIGVsZW1lbnRzIGdldCBpbml0aWFsaXplZAotYmVm
b3JlIHRoZSBvdGhlcnMpLgotCi1Nb2RpZnlpbmcgYW4gYEV4cGVjdGF0aW9uU2V0YCBhZnRlciB1
c2luZyBpdCBpbiBhbiBgLkFmdGVyKClgIGRvZXNuJ3QKLWFmZmVjdCB0aGUgbWVhbmluZyBvZiB0
aGUgYC5BZnRlcigpYC4KLQotIyMgU2VxdWVuY2VzICMjCi0KLVdoZW4geW91IGhhdmUgYSBsb25n
IGNoYWluIG9mIHNlcXVlbnRpYWwgZXhwZWN0YXRpb25zLCBpdCdzIGVhc2llciB0bwotc3BlY2lm
eSB0aGUgb3JkZXIgdXNpbmcgKipzZXF1ZW5jZXMqKiwgd2hpY2ggZG9uJ3QgcmVxdWlyZSB5b3Ug
dG8gZ2l2ZW4KLWVhY2ggZXhwZWN0YXRpb24gaW4gdGhlIGNoYWluIGEgZGlmZmVyZW50IG5hbWUu
ICA8aT5BbGwgZXhwZWN0ZWQ8YnI+Ci1jYWxsczwvaT4gaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVz
dCBvY2N1ciBpbiB0aGUgb3JkZXIgdGhleSBhcmUKLXNwZWNpZmllZC4KLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OlNlcXVlbmNlOwotU2VxdWVuY2UgczEsIHMyOwotLi4uCi1FWFBFQ1RfQ0FMTChm
b28sIFJlc2V0KCkpCi0gICAgLkluU2VxdWVuY2UoczEsIHMyKQotICAgIC5XaWxsT25jZShSZXR1
cm4odHJ1ZSkpOwotRVhQRUNUX0NBTEwoZm9vLCBHZXRTaXplKCkpCi0gICAgLkluU2VxdWVuY2Uo
czEpCi0gICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci1FWFBFQ1RfQ0FMTChmb28sIERlc2NyaWJl
KEE8Y29uc3QgY2hhcio+KCkpKQotICAgIC5JblNlcXVlbmNlKHMyKQotICAgIC5XaWxsT25jZShS
ZXR1cm4oImR1bW15IikpOwotYGBgCi1zYXlzIHRoYXQgYFJlc2V0KClgIG11c3QgYmUgY2FsbGVk
IGJlZm9yZSBfYm90aF8gYEdldFNpemUoKWAgX2FuZF8KLWBEZXNjcmliZSgpYCwgYW5kIHRoZSBs
YXR0ZXIgdHdvIGNhbiBvY2N1ciBpbiBhbnkgb3JkZXIuCi0KLVRvIHB1dCBtYW55IGV4cGVjdGF0
aW9ucyBpbiBhIHNlcXVlbmNlIGNvbnZlbmllbnRseToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJ
blNlcXVlbmNlOwotewotICBJblNlcXVlbmNlIGR1bW15OwotCi0gIEVYUEVDVF9DQUxMKC4uLiku
Li47Ci0gIEVYUEVDVF9DQUxMKC4uLikuLi47Ci0gIC4uLgotICBFWFBFQ1RfQ0FMTCguLi4pLi4u
OwotfQotYGBgCi1zYXlzIHRoYXQgYWxsIGV4cGVjdGVkIGNhbGxzIGluIHRoZSBzY29wZSBvZiBg
ZHVtbXlgIG11c3Qgb2NjdXIgaW4KLXN0cmljdCBvcmRlci4gVGhlIG5hbWUgYGR1bW15YCBpcyBp
cnJlbGV2YW50LikKLQotIyBWZXJpZnlpbmcgYW5kIFJlc2V0dGluZyBhIE1vY2sgIwotCi1Hb29n
bGUgTW9jayB3aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIG9uIGEgbW9jayBvYmplY3Qgd2hl
biBpdCBpcyBkZXN0cnVjdGVkLCBvciB5b3UgY2FuIGRvIGl0IGVhcmxpZXI6Ci1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6TW9jazsKLS4uLgotLy8gVmVyaWZpZXMgYW5kIHJlbW92ZXMgdGhlIGV4cGVj
dGF0aW9ucyBvbiBtb2NrX29iajsKLS8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLU1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrX29iaik7Ci0uLi4KLS8vIFZlcmlm
aWVzIGFuZCByZW1vdmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7Ci0vLyBhbHNvIHJl
bW92ZXMgdGhlIGRlZmF1bHQgYWN0aW9ucyBzZXQgYnkgT05fQ0FMTCgpOwotLy8gcmV0dXJucyB0
cnVlIGlmZiBzdWNjZXNzZnVsLgotTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJm1vY2tfb2JqKTsKLWBg
YAotCi1Zb3UgY2FuIGFsc28gdGVsbCBHb29nbGUgTW9jayB0aGF0IGEgbW9jayBvYmplY3QgY2Fu
IGJlIGxlYWtlZCBhbmQgZG9lc24ndAotbmVlZCB0byBiZSB2ZXJpZmllZDoKLWBgYAotTW9jazo6
QWxsb3dMZWFrKCZtb2NrX29iaik7Ci1gYGAKLQotIyBNb2NrIENsYXNzZXMgIwotCi1Hb29nbGUg
TW9jayBkZWZpbmVzIGEgY29udmVuaWVudCBtb2NrIGNsYXNzIHRlbXBsYXRlCi1gYGAKLWNsYXNz
IE1vY2tGdW5jdGlvbjxSKEExLCAuLi4sIEFuKT4gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0Ru
KENhbGwsIFIoQTEsIC4uLiwgQW4pKTsKLX07Ci1gYGAKLVNlZSB0aGlzIFtyZWNpcGVdKFYxXzVf
Q29va0Jvb2sjVXNpbmdfQ2hlY2tfUG9pbnRzLm1kKSBmb3Igb25lIGFwcGxpY2F0aW9uIG9mIGl0
LgotCi0jIEZsYWdzICMKLQotfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAgfCBEb24n
dCByZXBvcnQgbGVha2VkIG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBTZXRzIHRo
ZSBkZWZhdWx0IHZlcmJvc2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBlcnJvcmAp
IG9mIEdvb2dsZSBNb2NrIG1lc3NhZ2VzLiB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0Nvb2tCb29rLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svZG9jcy92MV81L0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
NmUxNTNjNmJhOWU1MDlkOGJiNWE5Y2E5NDcwZDM4ZDM2OTRlM2NkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9Db29r
Qm9vay5tZAorKysgL2Rldi9udWxsCkBAIC0xLDMyNTAgKzAsMCBAQAotCi0KLVlvdSBjYW4gZmlu
ZCByZWNpcGVzIGZvciB1c2luZyBHb29nbGUgTW9jayBoZXJlLiBJZiB5b3UgaGF2ZW4ndCB5ZXQs
Ci1wbGVhc2UgcmVhZCB0aGUgW0ZvckR1bW1pZXNdKFYxXzVfRm9yRHVtbWllcy5tZCkgZG9jdW1l
bnQgZmlyc3QgdG8gbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi10aGUgYmFzaWNzLgotCi0qKk5v
dGU6KiogR29vZ2xlIE1vY2sgbGl2ZXMgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lIHNwYWNlLiBGb3IK
LXJlYWRhYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB3cml0ZSBgdXNpbmcgOjp0ZXN0aW5n
OjpGb287YCBvbmNlIGluCi15b3VyIGZpbGUgYmVmb3JlIHVzaW5nIHRoZSBuYW1lIGBGb29gIGRl
ZmluZWQgYnkgR29vZ2xlIE1vY2suIFdlIG9taXQKLXN1Y2ggYHVzaW5nYCBzdGF0ZW1lbnRzIGlu
IHRoaXMgcGFnZSBmb3IgYnJldml0eSwgYnV0IHlvdSBzaG91bGQgZG8gaXQKLWluIHlvdXIgb3du
IGNvZGUuCi0KLSMgQ3JlYXRpbmcgTW9jayBDbGFzc2VzICMKLQotIyMgTW9ja2luZyBQcml2YXRl
IG9yIFByb3RlY3RlZCBNZXRob2RzICMjCi0KLVlvdSBtdXN0IGFsd2F5cyBwdXQgYSBtb2NrIG1l
dGhvZCBkZWZpbml0aW9uIChgTU9DS19NRVRIT0QqYCkgaW4gYQotYHB1YmxpYzpgIHNlY3Rpb24g
b2YgdGhlIG1vY2sgY2xhc3MsIHJlZ2FyZGxlc3Mgb2YgdGhlIG1ldGhvZCBiZWluZwotbW9ja2Vk
IGJlaW5nIGBwdWJsaWNgLCBgcHJvdGVjdGVkYCwgb3IgYHByaXZhdGVgIGluIHRoZSBiYXNlIGNs
YXNzLgotVGhpcyBhbGxvd3MgYE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgIHRvIHJlZmVyZW5j
ZSB0aGUgbW9jayBmdW5jdGlvbgotZnJvbSBvdXRzaWRlIG9mIHRoZSBtb2NrIGNsYXNzLiAgKFll
cywgQysrIGFsbG93cyBhIHN1YmNsYXNzIHRvIGNoYW5nZQotdGhlIGFjY2VzcyBsZXZlbCBvZiBh
IHZpcnR1YWwgZnVuY3Rpb24gaW4gdGhlIGJhc2UgY2xhc3MuKSAgRXhhbXBsZToKLQotYGBgCi1j
bGFzcyBGb28gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBUcmFuc2Zvcm0oR2Fk
Z2V0KiBnKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBSZXN1bWUoKTsKLQot
IHByaXZhdGU6Ci0gIHZpcnR1YWwgaW50IEdldFRpbWVPdXQoKTsKLX07Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoVHJhbnNm
b3JtLCBib29sKEdhZGdldCogZykpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBiZSBpbiB0
aGUgcHVibGljIHNlY3Rpb24sIGV2ZW4gdGhvdWdoIHRoZQotICAvLyBtZXRob2RzIGFyZSBwcm90
ZWN0ZWQgb3IgcHJpdmF0ZSBpbiB0aGUgYmFzZSBjbGFzcy4KLSAgTU9DS19NRVRIT0QwKFJlc3Vt
ZSwgdm9pZCgpKTsKLSAgTU9DS19NRVRIT0QwKEdldFRpbWVPdXQsIGludCgpKTsKLX07Ci1gYGAK
LQotIyMgTW9ja2luZyBPdmVybG9hZGVkIE1ldGhvZHMgIyMKLQotWW91IGNhbiBtb2NrIG92ZXJs
b2FkZWQgZnVuY3Rpb25zIGFzIHVzdWFsLiBObyBzcGVjaWFsIGF0dGVudGlvbiBpcyByZXF1aXJl
ZDoKLQotYGBgCi1jbGFzcyBGb28gewotICAuLi4KLQotICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMg
d2UnbGwgaW5oZXJpdCBmcm9tIEZvby4KLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgLy8gT3Zlcmxv
YWRlZCBvbiB0aGUgdHlwZXMgYW5kL29yIG51bWJlcnMgb2YgYXJndW1lbnRzLgotICB2aXJ0dWFs
IGludCBBZGQoRWxlbWVudCB4KTsKLSAgdmlydHVhbCBpbnQgQWRkKGludCB0aW1lcywgRWxlbWVu
dCB4KTsKLQotICAvLyBPdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0
LgotICB2aXJ0dWFsIEJhciYgR2V0QmFyKCk7Ci0gIHZpcnR1YWwgY29uc3QgQmFyJiBHZXRCYXIo
KSBjb25zdDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1P
Q0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgTU9DS19NRVRIT0QyKEFkZCwgaW50
KGludCB0aW1lcywgRWxlbWVudCB4KTsKLQotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXImKCkp
OwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsKLWBgYAot
Ci0qKk5vdGU6KiogaWYgeW91IGRvbid0IG1vY2sgYWxsIHZlcnNpb25zIG9mIHRoZSBvdmVybG9h
ZGVkIG1ldGhvZCwgdGhlCi1jb21waWxlciB3aWxsIGdpdmUgeW91IGEgd2FybmluZyBhYm91dCBz
b21lIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3MKLWJlaW5nIGhpZGRlbi4gVG8gZml4IHRoYXQs
IHVzZSBgdXNpbmdgIHRvIGJyaW5nIHRoZW0gaW4gc2NvcGU6Ci0KLWBgYAotY2xhc3MgTW9ja0Zv
byA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgdXNpbmcgRm9vOjpBZGQ7Ci0gIE1PQ0tfTUVUSE9E
MShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtb2NrIGludCBB
ZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOwotICAuLi4KLX07Ci1gYGAKLQotIyMgTW9ja2luZyBD
bGFzcyBUZW1wbGF0ZXMgIyMKLQotVG8gbW9jayBhIGNsYXNzIHRlbXBsYXRlLCBhcHBlbmQgYF9U
YCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
PgotY2xhc3MgU3RhY2tJbnRlcmZhY2UgewotICAuLi4KLSAgLy8gTXVzdCBiZSB2aXJ0dWFsIGFz
IHdlJ2xsIGluaGVyaXQgZnJvbSBTdGFja0ludGVyZmFjZS4KLSAgdmlydHVhbCB+U3RhY2tJbnRl
cmZhY2UoKTsKLQotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFs
IHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7Ci0g
IC4uLgotICBNT0NLX0NPTlNUX01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7Ci0gIE1PQ0tfTUVU
SE9EMV9UKFB1c2gsIHZvaWQoY29uc3QgRWxlbSYgeCkpOwotfTsKLWBgYAotCi0jIyBNb2NraW5n
IE5vbnZpcnR1YWwgTWV0aG9kcyAjIwotCi1Hb29nbGUgTW9jayBjYW4gbW9jayBub24tdmlydHVh
bCBmdW5jdGlvbnMgdG8gYmUgdXNlZCBpbiB3aGF0IHdlIGNhbGwgX2hpLXBlcmYKLWRlcGVuZGVu
Y3kgaW5qZWN0aW9uXy4KLQotSW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIHNoYXJpbmcgYSBjb21t
b24gYmFzZSBjbGFzcyB3aXRoIHRoZSByZWFsCi1jbGFzcywgeW91ciBtb2NrIGNsYXNzIHdpbGwg
YmUgX3VucmVsYXRlZF8gdG8gdGhlIHJlYWwgY2xhc3MsIGJ1dAotY29udGFpbiBtZXRob2RzIHdp
dGggdGhlIHNhbWUgc2lnbmF0dXJlcy4gIFRoZSBzeW50YXggZm9yIG1vY2tpbmcKLW5vbi12aXJ0
dWFsIG1ldGhvZHMgaXMgdGhlIF9zYW1lXyBhcyBtb2NraW5nIHZpcnR1YWwgbWV0aG9kczoKLQot
YGBgCi0vLyBBIHNpbXBsZSBwYWNrZXQgc3RyZWFtIGNsYXNzLiAgTm9uZSBvZiBpdHMgbWVtYmVy
cyBpcyB2aXJ0dWFsLgotY2xhc3MgQ29uY3JldGVQYWNrZXRTdHJlYW0gewotIHB1YmxpYzoKLSAg
dm9pZCBBcHBlbmRQYWNrZXQoUGFja2V0KiBuZXdfcGFja2V0KTsKLSAgY29uc3QgUGFja2V0KiBH
ZXRQYWNrZXQoc2l6ZV90IHBhY2tldF9udW1iZXIpIGNvbnN0OwotICBzaXplX3QgTnVtYmVyT2ZQ
YWNrZXRzKCkgY29uc3Q7Ci0gIC4uLgotfTsKLQotLy8gQSBtb2NrIHBhY2tldCBzdHJlYW0gY2xh
c3MuICBJdCBpbmhlcml0cyBmcm9tIG5vIG90aGVyLCBidXQgZGVmaW5lcwotLy8gR2V0UGFja2V0
KCkgYW5kIE51bWJlck9mUGFja2V0cygpLgotY2xhc3MgTW9ja1BhY2tldFN0cmVhbSB7Ci0gcHVi
bGljOgotICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0UGFja2V0LCBjb25zdCBQYWNrZXQqKHNpemVf
dCBwYWNrZXRfbnVtYmVyKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChOdW1iZXJPZlBhY2tldHMs
IHNpemVfdCgpKTsKLSAgLi4uCi19OwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgbW9jayBjbGFzcyBk
b2Vzbid0IGRlZmluZSBgQXBwZW5kUGFja2V0KClgLCB1bmxpa2UgdGhlCi1yZWFsIGNsYXNzLiBU
aGF0J3MgZmluZSBhcyBsb25nIGFzIHRoZSB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjYWxsIGl0Lgot
Ci1OZXh0LCB5b3UgbmVlZCBhIHdheSB0byBzYXkgdGhhdCB5b3Ugd2FudCB0byB1c2UKLWBDb25j
cmV0ZVBhY2tldFN0cmVhbWAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlIGBNb2NrUGFja2V0
U3RyZWFtYAotaW4gdGVzdHMuICBTaW5jZSB0aGUgZnVuY3Rpb25zIGFyZSBub3QgdmlydHVhbCBh
bmQgdGhlIHR3byBjbGFzc2VzIGFyZQotdW5yZWxhdGVkLCB5b3UgbXVzdCBzcGVjaWZ5IHlvdXIg
Y2hvaWNlIGF0IF9jb21waWxlIHRpbWVfIChhcyBvcHBvc2VkCi10byBydW4gdGltZSkuCi0KLU9u
ZSB3YXkgdG8gZG8gaXQgaXMgdG8gdGVtcGxhdGl6ZSB5b3VyIGNvZGUgdGhhdCBuZWVkcyB0byB1
c2UgYSBwYWNrZXQKLXN0cmVhbS4gIE1vcmUgc3BlY2lmaWNhbGx5LCB5b3Ugd2lsbCBnaXZlIHlv
dXIgY29kZSBhIHRlbXBsYXRlIHR5cGUKLWFyZ3VtZW50IGZvciB0aGUgdHlwZSBvZiB0aGUgcGFj
a2V0IHN0cmVhbS4gIEluIHByb2R1Y3Rpb24sIHlvdSB3aWxsCi1pbnN0YW50aWF0ZSB5b3VyIHRl
bXBsYXRlIHdpdGggYENvbmNyZXRlUGFja2V0U3RyZWFtYCBhcyB0aGUgdHlwZQotYXJndW1lbnQu
ICBJbiB0ZXN0cywgeW91IHdpbGwgaW5zdGFudGlhdGUgdGhlIHNhbWUgdGVtcGxhdGUgd2l0aAot
YE1vY2tQYWNrZXRTdHJlYW1gLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd3JpdGU6Ci0KLWBgYAot
dGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0cmVhbT4KLXZvaWQgQ3JlYXRlQ29ubmVjdGlvbihQYWNr
ZXRTdHJlYW0qIHN0cmVhbSkgeyAuLi4gfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0U3RyZWFt
PgotY2xhc3MgUGFja2V0UmVhZGVyIHsKLSBwdWJsaWM6Ci0gIHZvaWQgUmVhZFBhY2tldHMoUGFj
a2V0U3RyZWFtKiBzdHJlYW0sIHNpemVfdCBwYWNrZXRfbnVtKTsKLX07Ci1gYGAKLQotVGhlbiB5
b3UgY2FuIHVzZSBgQ3JlYXRlQ29ubmVjdGlvbjxDb25jcmV0ZVBhY2tldFN0cmVhbT4oKWAgYW5k
Ci1gUGFja2V0UmVhZGVyPENvbmNyZXRlUGFja2V0U3RyZWFtPmAgaW4gcHJvZHVjdGlvbiBjb2Rl
LCBhbmQgdXNlCi1gQ3JlYXRlQ29ubmVjdGlvbjxNb2NrUGFja2V0U3RyZWFtPigpYCBhbmQKLWBQ
YWNrZXRSZWFkZXI8TW9ja1BhY2tldFN0cmVhbT5gIGluIHRlc3RzLgotCi1gYGAKLSAgTW9ja1Bh
Y2tldFN0cmVhbSBtb2NrX3N0cmVhbTsKLSAgRVhQRUNUX0NBTEwobW9ja19zdHJlYW0sIC4uLiku
Li47Ci0gIC4uIHNldCBtb3JlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX3N0cmVhbSAuLi4KLSAgUGFj
a2V0UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+IHJlYWRlcigmbW9ja19zdHJlYW0pOwotICAuLi4g
ZXhlcmNpc2UgcmVhZGVyIC4uLgotYGBgCi0KLSMjIE1vY2tpbmcgRnJlZSBGdW5jdGlvbnMgIyMK
LQotSXQncyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIE1vY2sgdG8gbW9jayBhIGZyZWUgZnVuY3Rp
b24gKGkuZS4gYQotQy1zdHlsZSBmdW5jdGlvbiBvciBhIHN0YXRpYyBtZXRob2QpLiAgWW91IGp1
c3QgbmVlZCB0byByZXdyaXRlIHlvdXIKLWNvZGUgdG8gdXNlIGFuIGludGVyZmFjZSAoYWJzdHJh
Y3QgY2xhc3MpLgotCi1JbnN0ZWFkIG9mIGNhbGxpbmcgYSBmcmVlIGZ1bmN0aW9uIChzYXksIGBP
cGVuRmlsZWApIGRpcmVjdGx5LAotaW50cm9kdWNlIGFuIGludGVyZmFjZSBmb3IgaXQgYW5kIGhh
dmUgYSBjb25jcmV0ZSBzdWJjbGFzcyB0aGF0IGNhbGxzCi10aGUgZnJlZSBmdW5jdGlvbjoKLQot
YGBgCi1jbGFzcyBGaWxlSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJv
b2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSA9IDA7Ci19OwotCi1j
bGFzcyBGaWxlIDogcHVibGljIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0gIHZp
cnR1YWwgYm9vbCBPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsKLSAg
ICByZXR1cm4gT3BlbkZpbGUocGF0aCwgbW9kZSk7Ci0gIH0KLX07Ci1gYGAKLQotWW91ciBjb2Rl
IHNob3VsZCB0YWxrIHRvIGBGaWxlSW50ZXJmYWNlYCB0byBvcGVuIGEgZmlsZS4gIE5vdyBpdCdz
Ci1lYXN5IHRvIG1vY2sgb3V0IHRoZSBmdW5jdGlvbi4KLQotVGhpcyBtYXkgc2VlbSBtdWNoIGhh
c3NsZSwgYnV0IGluIHByYWN0aWNlIHlvdSBvZnRlbiBoYXZlIG11bHRpcGxlCi1yZWxhdGVkIGZ1
bmN0aW9ucyB0aGF0IHlvdSBjYW4gcHV0IGluIHRoZSBzYW1lIGludGVyZmFjZSwgc28gdGhlCi1w
ZXItZnVuY3Rpb24gc3ludGFjdGljIG92ZXJoZWFkIHdpbGwgYmUgbXVjaCBsb3dlci4KLQotSWYg
eW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG92ZXJoZWFkIGluY3VycmVk
IGJ5Ci12aXJ0dWFsIGZ1bmN0aW9ucywgYW5kIHByb2ZpbGluZyBjb25maXJtcyB5b3VyIGNvbmNl
cm4sIHlvdSBjYW4KLWNvbWJpbmUgdGhpcyB3aXRoIHRoZSByZWNpcGUgZm9yIFttb2NraW5nIG5v
bi12aXJ0dWFsIG1ldGhvZHNdKCNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcy5tZCkuCi0KLSMj
IE5pY2UgTW9ja3MgYW5kIFN0cmljdCBNb2NrcyAjIwotCi1JZiBhIG1vY2sgbWV0aG9kIGhhcyBu
byBgRVhQRUNUX0NBTExgIHNwZWMgYnV0IGlzIGNhbGxlZCwgR29vZ2xlIE1vY2sKLXdpbGwgcHJp
bnQgYSB3YXJuaW5nIGFib3V0IHRoZSAidW5pbnRlcmVzdGluZyBjYWxsIi4gVGhlIHJhdGlvbmFs
ZSBpczoKLQotICAqIE5ldyBtZXRob2RzIG1heSBiZSBhZGRlZCB0byBhbiBpbnRlcmZhY2UgYWZ0
ZXIgYSB0ZXN0IGlzIHdyaXR0ZW4uIFdlIHNob3VsZG4ndCBmYWlsIGEgdGVzdCBqdXN0IGJlY2F1
c2UgYSBtZXRob2QgaXQgZG9lc24ndCBrbm93IGFib3V0IGlzIGNhbGxlZC4KLSAgKiBIb3dldmVy
LCB0aGlzIG1heSBhbHNvIG1lYW4gdGhlcmUncyBhIGJ1ZyBpbiB0aGUgdGVzdCwgc28gR29vZ2xl
IE1vY2sgc2hvdWxkbid0IGJlIHNpbGVudCBlaXRoZXIuIElmIHRoZSB1c2VyIGJlbGlldmVzIHRo
ZXNlIGNhbGxzIGFyZSBoYXJtbGVzcywgaGUgY2FuIGFkZCBhbiBgRVhQRUNUX0NBTEwoKWAgdG8g
c3VwcHJlc3MgdGhlIHdhcm5pbmcuCi0KLUhvd2V2ZXIsIHNvbWV0aW1lcyB5b3UgbWF5IHdhbnQg
dG8gc3VwcHJlc3MgYWxsICJ1bmludGVyZXN0aW5nIGNhbGwiCi13YXJuaW5ncywgd2hpbGUgc29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0aGUgb3Bwb3NpdGUsIGkuZS4gdG8gdHJlYXQgYWxsCi1vZiB0
aGVtIGFzIGVycm9ycy4gR29vZ2xlIE1vY2sgbGV0cyB5b3UgbWFrZSB0aGUgZGVjaXNpb24gb24g
YQotcGVyLW1vY2stb2JqZWN0IGJhc2lzLgotCi1TdXBwb3NlIHlvdXIgdGVzdCB1c2VzIGEgbW9j
ayBjbGFzcyBgTW9ja0Zvb2A6Ci0KLWBgYAotVEVTVCguLi4pIHsKLSAgTW9ja0ZvbyBtb2NrX2Zv
bzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1
c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLUlmIGEgbWV0aG9kIG9mIGBtb2NrX2Zvb2Agb3Ro
ZXIgdGhhbiBgRG9UaGlzKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBiZQotcmVwb3J0ZWQgYnkgR29v
Z2xlIE1vY2sgYXMgYSB3YXJuaW5nLiBIb3dldmVyLCBpZiB5b3UgcmV3cml0ZSB5b3VyCi10ZXN0
IHRvIHVzZSBgTmljZU1vY2s8TW9ja0Zvbz5gIGluc3RlYWQsIHRoZSB3YXJuaW5nIHdpbGwgYmUg
Z29uZSwKLXJlc3VsdGluZyBpbiBhIGNsZWFuZXIgdGVzdCBvdXRwdXQ6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpOaWNlTW9jazsKLQotVEVTVCguLi4pIHsKLSAgTmljZU1vY2s8TW9ja0Zvbz4g
bW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2Rl
IHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBgYAotCi1gTmljZU1vY2s8TW9ja0Zvbz5gIGlz
IGEgc3ViY2xhc3Mgb2YgYE1vY2tGb29gLCBzbyBpdCBjYW4gYmUgdXNlZAotd2hlcmV2ZXIgYE1v
Y2tGb29gIGlzIGFjY2VwdGVkLgotCi1JdCBhbHNvIHdvcmtzIGlmIGBNb2NrRm9vYCdzIGNvbnN0
cnVjdG9yIHRha2VzIHNvbWUgYXJndW1lbnRzLCBhcwotYE5pY2VNb2NrPE1vY2tGb28+YCAiaW5o
ZXJpdHMiIGBNb2NrRm9vYCdzIGNvbnN0cnVjdG9yczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2Zvbyg1
LCAiaGkiKTsgIC8vIENhbGxzIE1vY2tGb28oNSwgImhpIikuCi0gIEVYUEVDVF9DQUxMKG1vY2tf
Zm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBg
YAotCi1UaGUgdXNhZ2Ugb2YgYFN0cmljdE1vY2tgIGlzIHNpbWlsYXIsIGV4Y2VwdCB0aGF0IGl0
IG1ha2VzIGFsbAotdW5pbnRlcmVzdGluZyBjYWxscyBmYWlsdXJlczoKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OlN0cmljdE1vY2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIFN0cmljdE1vY2s8TW9ja0Zv
bz4gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBj
b2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLQotICAvLyBUaGUgdGVzdCB3aWxsIGZhaWwgaWYg
YSBtZXRob2Qgb2YgbW9ja19mb28gb3RoZXIgdGhhbiBEb1RoaXMoKQotICAvLyBpcyBjYWxsZWQu
Ci19Ci1gYGAKLQotVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB0aG91Z2ggKEkgZG9uJ3QgbGlrZSB0
aGVtIGp1c3QgYXMgbXVjaCBhcyB0aGUKLW5leHQgZ3V5LCBidXQgc2FkbHkgdGhleSBhcmUgc2lk
ZSBlZmZlY3RzIG9mIEMrKydzIGxpbWl0YXRpb25zKToKLQotICAxLiBgTmljZU1vY2s8TW9ja0Zv
bz5gIGFuZCBgU3RyaWN0TW9jazxNb2NrRm9vPmAgb25seSB3b3JrIGZvciBtb2NrIG1ldGhvZHMg
ZGVmaW5lZCB1c2luZyB0aGUgYE1PQ0tfTUVUSE9EKmAgZmFtaWx5IG9mIG1hY3JvcyAqKmRpcmVj
dGx5KiogaW4gdGhlIGBNb2NrRm9vYCBjbGFzcy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBkZWZpbmVk
IGluIGEgKipiYXNlIGNsYXNzKiogb2YgYE1vY2tGb29gLCB0aGUgIm5pY2UiIG9yICJzdHJpY3Qi
IG1vZGlmaWVyIG1heSBub3QgYWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyLiBJ
biBwYXJ0aWN1bGFyLCBuZXN0aW5nIGBOaWNlTW9ja2AgYW5kIGBTdHJpY3RNb2NrYCAoZS5nLiBg
TmljZU1vY2s8U3RyaWN0TW9jazxNb2NrRm9vPiA+YCkgaXMgKipub3QqKiBzdXBwb3J0ZWQuCi0g
IDEuIFRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIGJhc2UgbW9jayAoYE1vY2tGb29gKSBjYW5ub3Qg
aGF2ZSBhcmd1bWVudHMgcGFzc2VkIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdoaWNoIGhhcHBl
bnMgdG8gYmUgYmFubmVkIGJ5IHRoZSBbR29vZ2xlIEMrKyBzdHlsZSBndWlkZV0oaHR0cDovL2dv
b2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwpLgot
ICAxLiBEdXJpbmcgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3Igb2YgYE1vY2tGb29gLCB0
aGUgbW9jayBvYmplY3QgaXMgX25vdF8gbmljZSBvciBzdHJpY3QuICBUaGlzIG1heSBjYXVzZSBz
dXJwcmlzZXMgaWYgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMgYSBtb2NrIG1l
dGhvZCBvbiBgdGhpc2Agb2JqZWN0LiAoVGhpcyBiZWhhdmlvciwgaG93ZXZlciwgaXMgY29uc2lz
dGVudCB3aXRoIEMrKydzIGdlbmVyYWwgcnVsZTogaWYgYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVj
dG9yIGNhbGxzIGEgdmlydHVhbCBtZXRob2Qgb2YgYHRoaXNgIG9iamVjdCwgdGhhdCBtZXRob2Qg
aXMgdHJlYXRlZCBhcyBub24tdmlydHVhbC4gIEluIG90aGVyIHdvcmRzLCB0byB0aGUgYmFzZSBj
bGFzcydzIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIGB0aGlzYCBvYmplY3QgYmVoYXZlcyBs
aWtlIGFuIGluc3RhbmNlIG9mIHRoZSBiYXNlIGNsYXNzLCBub3QgdGhlIGRlcml2ZWQgY2xhc3Mu
ICBUaGlzIHJ1bGUgaXMgcmVxdWlyZWQgZm9yIHNhZmV0eS4gIE90aGVyd2lzZSBhIGJhc2UgY29u
c3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBiZWZvcmUgdGhleSBh
cmUgaW5pdGlhbGl6ZWQsIG9yIGEgYmFzZSBkZXN0cnVjdG9yIG1heSB1c2UgbWVtYmVycyBvZiBh
IGRlcml2ZWQgY2xhc3MgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZGVzdHJveWVkLikKLQotRmluYWxs
eSwgeW91IHNob3VsZCBiZSAqKnZlcnkgY2F1dGlvdXMqKiB3aGVuIHVzaW5nIHRoaXMgZmVhdHVy
ZSwgYXMgdGhlCi1kZWNpc2lvbiB5b3UgbWFrZSBhcHBsaWVzIHRvICoqYWxsKiogZnV0dXJlIGNo
YW5nZXMgdG8gdGhlIG1vY2sKLWNsYXNzLiBJZiBhbiBpbXBvcnRhbnQgY2hhbmdlIGlzIG1hZGUg
aW4gdGhlIGludGVyZmFjZSB5b3UgYXJlIG1vY2tpbmcKLShhbmQgdGh1cyBpbiB0aGUgbW9jayBj
bGFzcyksIGl0IGNvdWxkIGJyZWFrIHlvdXIgdGVzdHMgKGlmIHlvdSB1c2UKLWBTdHJpY3RNb2Nr
YCkgb3IgbGV0IGJ1Z3MgcGFzcyB0aHJvdWdoIHdpdGhvdXQgYSB3YXJuaW5nIChpZiB5b3UgdXNl
Ci1gTmljZU1vY2tgKS4gVGhlcmVmb3JlLCB0cnkgdG8gc3BlY2lmeSB0aGUgbW9jaydzIGJlaGF2
aW9yIHVzaW5nCi1leHBsaWNpdCBgRVhQRUNUX0NBTExgIGZpcnN0LCBhbmQgb25seSB0dXJuIHRv
IGBOaWNlTW9ja2Agb3IKLWBTdHJpY3RNb2NrYCBhcyB0aGUgbGFzdCByZXNvcnQuCi0KLSMjIFNp
bXBsaWZ5aW5nIHRoZSBJbnRlcmZhY2Ugd2l0aG91dCBCcmVha2luZyBFeGlzdGluZyBDb2RlICMj
Ci0KLVNvbWV0aW1lcyBhIG1ldGhvZCBoYXMgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQg
aXMgbW9zdGx5Ci11bmludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1jbGFzcyBMb2dT
aW5rIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBz
ZXZlcml0eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cnVjdCB0bSogdG1fdGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSA9IDA7Ci19OwotYGBgCi0KLVRoaXMgbWV0
aG9kJ3MgYXJndW1lbnQgbGlzdCBpcyBsZW5ndGh5IGFuZCBoYXJkIHRvIHdvcmsgd2l0aCAobGV0
J3MKLXNheSB0aGF0IHRoZSBgbWVzc2FnZWAgYXJndW1lbnQgaXMgbm90IGV2ZW4gMC10ZXJtaW5h
dGVkKS4gSWYgd2UgbW9jawotaXQgYXMgaXMsIHVzaW5nIHRoZSBtb2NrIHdpbGwgYmUgYXdrd2Fy
ZC4gSWYsIGhvd2V2ZXIsIHdlIHRyeSB0bwotc2ltcGxpZnkgdGhpcyBpbnRlcmZhY2UsIHdlJ2xs
IG5lZWQgdG8gZml4IGFsbCBjbGllbnRzIGRlcGVuZGluZyBvbgotaXQsIHdoaWNoIGlzIG9mdGVu
IGluZmVhc2libGUuCi0KLVRoZSB0cmljayBpcyB0byByZS1kaXNwYXRjaCB0aGUgbWV0aG9kIGlu
IHRoZSBtb2NrIGNsYXNzOgotCi1gYGAKLWNsYXNzIFNjb3BlZE1vY2tMb2cgOiBwdWJsaWMgTG9n
U2luayB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2ZXJpdHkg
c2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZ1bGxfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGJhc2VfZmlsZW5hbWUsIGludCBsaW5lLCBjb25zdCB0bSogdG1fdGltZSwK
LSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2Vf
bGVuKSB7Ci0gICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG9nIHNldmVyaXR5
LCBmdWxsIGZpbGUgbmFtZSwgYW5kCi0gICAgLy8gbG9nIG1lc3NhZ2UuCi0gICAgTG9nKHNldmVy
aXR5LCBmdWxsX2ZpbGVuYW1lLCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBtZXNzYWdlX2xlbikpOwot
ICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgbW9jayBtZXRob2Q6Ci0gIC8vCi0gIC8vICAgdm9p
ZCBMb2coTG9nU2V2ZXJpdHkgc2V2ZXJpdHksCi0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5n
JiBmaWxlX3BhdGgsCi0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKTsKLSAg
TU9DS19NRVRIT0QzKExvZywgdm9pZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RyaW5n
JiBmaWxlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNz
YWdlKSk7Ci19OwotYGBgCi0KLUJ5IGRlZmluaW5nIGEgbmV3IG1vY2sgbWV0aG9kIHdpdGggYSB0
cmltbWVkIGFyZ3VtZW50IGxpc3QsIHdlIG1ha2UKLXRoZSBtb2NrIGNsYXNzIG11Y2ggbW9yZSB1
c2VyLWZyaWVuZGx5LgotCi0jIyBBbHRlcm5hdGl2ZSB0byBNb2NraW5nIENvbmNyZXRlIENsYXNz
ZXMgIyMKLQotT2Z0ZW4geW91IG1heSBmaW5kIHlvdXJzZWxmIHVzaW5nIGNsYXNzZXMgdGhhdCBk
b24ndCBpbXBsZW1lbnQKLWludGVyZmFjZXMuIEluIG9yZGVyIHRvIHRlc3QgeW91ciBjb2RlIHRo
YXQgdXNlcyBzdWNoIGEgY2xhc3MgKGxldCdzCi1jYWxsIGl0IGBDb25jcmV0ZWApLCB5b3UgbWF5
IGJlIHRlbXB0ZWQgdG8gbWFrZSB0aGUgbWV0aG9kcyBvZgotYENvbmNyZXRlYCB2aXJ0dWFsIGFu
ZCB0aGVuIG1vY2sgaXQuCi0KLVRyeSBub3QgdG8gZG8gdGhhdC4KLQotTWFraW5nIGEgbm9uLXZp
cnR1YWwgZnVuY3Rpb24gdmlydHVhbCBpcyBhIGJpZyBkZWNpc2lvbi4gSXQgY3JlYXRlcyBhbgot
ZXh0ZW5zaW9uIHBvaW50IHdoZXJlIHN1YmNsYXNzZXMgY2FuIHR3ZWFrIHlvdXIgY2xhc3MnIGJl
aGF2aW9yLiBUaGlzCi13ZWFrZW5zIHlvdXIgY29udHJvbCBvbiB0aGUgY2xhc3MgYmVjYXVzZSBu
b3cgaXQncyBoYXJkZXIgdG8gbWFpbnRhaW4KLXRoZSBjbGFzcycgaW52YXJpYW50cy4gWW91IHNo
b3VsZCBtYWtlIGEgZnVuY3Rpb24gdmlydHVhbCBvbmx5IHdoZW4KLXRoZXJlIGlzIGEgdmFsaWQg
cmVhc29uIGZvciBhIHN1YmNsYXNzIHRvIG92ZXJyaWRlIGl0LgotCi1Nb2NraW5nIGNvbmNyZXRl
IGNsYXNzZXMgZGlyZWN0bHkgaXMgcHJvYmxlbWF0aWMgYXMgaXQgY3JlYXRlcyBhIHRpZ2h0Ci1j
b3VwbGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBhbmQgdGhlIHRlc3RzIC0gYW55IHNtYWxsIGNoYW5n
ZSBpbiB0aGUKLWNsYXNzIG1heSBpbnZhbGlkYXRlIHlvdXIgdGVzdHMgYW5kIG1ha2UgdGVzdCBt
YWludGVuYW5jZSBhIHBhaW4uCi0KLVRvIGF2b2lkIHN1Y2ggcHJvYmxlbXMsIG1hbnkgcHJvZ3Jh
bW1lcnMgaGF2ZSBiZWVuIHByYWN0aWNpbmcgImNvZGluZwotdG8gaW50ZXJmYWNlcyI6IGluc3Rl
YWQgb2YgdGFsa2luZyB0byB0aGUgYENvbmNyZXRlYCBjbGFzcywgeW91ciBjb2RlCi13b3VsZCBk
ZWZpbmUgYW4gaW50ZXJmYWNlIGFuZCB0YWxrIHRvIGl0LiBUaGVuIHlvdSBpbXBsZW1lbnQgdGhh
dAotaW50ZXJmYWNlIGFzIGFuIGFkYXB0b3Igb24gdG9wIG9mIGBDb25jcmV0ZWAuIEluIHRlc3Rz
LCB5b3UgY2FuIGVhc2lseQotbW9jayB0aGF0IGludGVyZmFjZSB0byBvYnNlcnZlIGhvdyB5b3Vy
IGNvZGUgaXMgZG9pbmcuCi0KLVRoaXMgdGVjaG5pcXVlIGluY3VycyBzb21lIG92ZXJoZWFkOgot
Ci0gICogWW91IHBheSB0aGUgY29zdCBvZiB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzICh1c3VhbGx5
IG5vdCBhIHByb2JsZW0pLgotICAqIFRoZXJlIGlzIG1vcmUgYWJzdHJhY3Rpb24gZm9yIHRoZSBw
cm9ncmFtbWVycyB0byBsZWFybi4KLQotSG93ZXZlciwgaXQgY2FuIGFsc28gYnJpbmcgc2lnbmlm
aWNhbnQgYmVuZWZpdHMgaW4gYWRkaXRpb24gdG8gYmV0dGVyCi10ZXN0YWJpbGl0eToKLQotICAq
IGBDb25jcmV0ZWAncyBBUEkgbWF5IG5vdCBmaXQgeW91ciBwcm9ibGVtIGRvbWFpbiB2ZXJ5IHdl
bGwsIGFzIHlvdSBtYXkgbm90IGJlIHRoZSBvbmx5IGNsaWVudCBpdCB0cmllcyB0byBzZXJ2ZS4g
QnkgZGVzaWduaW5nIHlvdXIgb3duIGludGVyZmFjZSwgeW91IGhhdmUgYSBjaGFuY2UgdG8gdGFp
bG9yIGl0IHRvIHlvdXIgbmVlZCAtIHlvdSBtYXkgYWRkIGhpZ2hlci1sZXZlbCBmdW5jdGlvbmFs
aXRpZXMsIHJlbmFtZSBzdHVmZiwgZXRjIGluc3RlYWQgb2YganVzdCB0cmltbWluZyB0aGUgY2xh
c3MuIFRoaXMgYWxsb3dzIHlvdSB0byB3cml0ZSB5b3VyIGNvZGUgKHVzZXIgb2YgdGhlIGludGVy
ZmFjZSkgaW4gYSBtb3JlIG5hdHVyYWwgd2F5LCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIG1vcmUg
cmVhZGFibGUsIG1vcmUgbWFpbnRhaW5hYmxlLCBhbmQgeW91J2xsIGJlIG1vcmUgcHJvZHVjdGl2
ZS4KLSAgKiBJZiBgQ29uY3JldGVgJ3MgaW1wbGVtZW50YXRpb24gZXZlciBoYXMgdG8gY2hhbmdl
LCB5b3UgZG9uJ3QgaGF2ZSB0byByZXdyaXRlIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZC4gSW5zdGVh
ZCwgeW91IGNhbiBhYnNvcmIgdGhlIGNoYW5nZSBpbiB5b3VyIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBpbnRlcmZhY2UsIGFuZCB5b3VyIG90aGVyIGNvZGUgYW5kIHRlc3RzIHdpbGwgYmUgaW5zdWxh
dGVkIGZyb20gdGhpcyBjaGFuZ2UuCi0KLVNvbWUgcGVvcGxlIHdvcnJ5IHRoYXQgaWYgZXZlcnlv
bmUgaXMgcHJhY3RpY2luZyB0aGlzIHRlY2huaXF1ZSwgdGhleQotd2lsbCBlbmQgdXAgd3JpdGlu
ZyBsb3RzIG9mIHJlZHVuZGFudCBjb2RlLiBUaGlzIGNvbmNlcm4gaXMgdG90YWxseQotdW5kZXJz
dGFuZGFibGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgaXQgbWF5IG5vdCBi
ZSB0aGUKLWNhc2U6Ci0KLSAgKiBEaWZmZXJlbnQgcHJvamVjdHMgbWF5IG5lZWQgdG8gdXNlIGBD
b25jcmV0ZWAgaW4gZGlmZmVyZW50IHdheXMsIHNvIHRoZSBiZXN0IGludGVyZmFjZXMgZm9yIHRo
ZW0gd2lsbCBiZSBkaWZmZXJlbnQuIFRoZXJlZm9yZSwgZWFjaCBvZiB0aGVtIHdpbGwgaGF2ZSBp
dHMgb3duIGRvbWFpbi1zcGVjaWZpYyBpbnRlcmZhY2Ugb24gdG9wIG9mIGBDb25jcmV0ZWAsIGFu
ZCB0aGV5IHdpbGwgbm90IGJlIHRoZSBzYW1lIGNvZGUuCi0gICogSWYgZW5vdWdoIHByb2plY3Rz
IHdhbnQgdG8gdXNlIHRoZSBzYW1lIGludGVyZmFjZSwgdGhleSBjYW4gYWx3YXlzIHNoYXJlIGl0
LCBqdXN0IGxpa2UgdGhleSBoYXZlIGJlZW4gc2hhcmluZyBgQ29uY3JldGVgLiBZb3UgY2FuIGNo
ZWNrIGluIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBhZGFwdG9yIHNvbWV3aGVyZSBuZWFyIGBDb25j
cmV0ZWAgKHBlcmhhcHMgaW4gYSBgY29udHJpYmAgc3ViLWRpcmVjdG9yeSkgYW5kIGxldCBtYW55
IHByb2plY3RzIHVzZSBpdC4KLQotWW91IG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMg
Y2FyZWZ1bGx5IGZvciB5b3VyIHBhcnRpY3VsYXIKLXByb2JsZW0sIGJ1dCBJJ2QgbGlrZSB0byBh
c3N1cmUgeW91IHRoYXQgdGhlIEphdmEgY29tbXVuaXR5IGhhcyBiZWVuCi1wcmFjdGljaW5nIHRo
aXMgZm9yIGEgbG9uZyB0aW1lIGFuZCBpdCdzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUK
LWFwcGxpY2FibGUgaW4gYSB3aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gOi0pCi0KLSMjIERl
bGVnYXRpbmcgQ2FsbHMgdG8gYSBGYWtlICMjCi0KLVNvbWUgdGltZXMgeW91IGhhdmUgYSBub24t
dHJpdmlhbCBmYWtlIGltcGxlbWVudGF0aW9uIG9mIGFuCi1pbnRlcmZhY2UuIEZvciBleGFtcGxl
OgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5Gb28oKSB7fQotICB2
aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBEb1RoYXQoY29u
c3QgY2hhciogcywgaW50KiBwKSA9IDA7Ci19OwotCi1jbGFzcyBGYWtlRm9vIDogcHVibGljIEZv
byB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSB7Ci0gICAgcmV0dXJu
IChuID4gMCkgPyAnKycgOgotICAgICAgICAobiA8IDApID8gJy0nIDogJzAnOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBzLCBpbnQqIHApIHsKLSAgICAqcCA9IHN0
cmxlbihzKTsKLSAgfQotfTsKLWBgYAotCi1Ob3cgeW91IHdhbnQgdG8gbW9jayB0aGlzIGludGVy
ZmFjZSBzdWNoIHRoYXQgeW91IGNhbiBzZXQgZXhwZWN0YXRpb25zCi1vbiBpdC4gSG93ZXZlciwg
eW91IGFsc28gd2FudCB0byB1c2UgYEZha2VGb29gIGZvciB0aGUgZGVmYXVsdAotYmVoYXZpb3Is
IGFzIGR1cGxpY2F0aW5nIGl0IGluIHRoZSBtb2NrIG9iamVjdCBpcywgd2VsbCwgYSBsb3Qgb2YK
LXdvcmsuCi0KLVdoZW4geW91IGRlZmluZSB0aGUgbW9jayBjbGFzcyB1c2luZyBHb29nbGUgTW9j
aywgeW91IGNhbiBoYXZlIGl0Ci1kZWxlZ2F0ZSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8gYSBmYWtl
IGNsYXNzIHlvdSBhbHJlYWR5IGhhdmUsIHVzaW5nCi10aGlzIHBhdHRlcm46Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE5vcm1hbCBtb2NrIG1ldGhvZCBkZWZp
bml0aW9ucyB1c2luZyBHb29nbGUgTW9jay4KLSAgTU9DS19NRVRIT0QxKERvVGhpcywgY2hhcihp
bnQgbikpOwotICBNT0NLX01FVEhPRDIoRG9UaGF0LCB2b2lkKGNvbnN0IGNoYXIqIHMsIGludCog
cCkpOwotCi0gIC8vIERlbGVnYXRlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtZXRob2Rz
IHRvIGEgRmFrZUZvbyBvYmplY3QuCi0gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJlZm9yZSog
dGhlIGN1c3RvbSBPTl9DQUxMKCkgc3RhdGVtZW50cy4KLSAgdm9pZCBEZWxlZ2F0ZVRvRmFrZSgp
IHsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0
KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMpKTsKLSAgICBPTl9DQUxMKCp0aGlzLCBE
b1RoYXQoXywgXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtl
Rm9vOjpEb1RoYXQpKTsKLSAgfQotIHByaXZhdGU6Ci0gIEZha2VGb28gZmFrZV87ICAvLyBLZWVw
cyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFrZSBpbiB0aGUgbW9jay4KLX07Ci1gYGAKLQotV2l0aCB0
aGF0LCB5b3UgY2FuIHVzZSBgTW9ja0Zvb2AgaW4geW91ciB0ZXN0cyBhcyB1c3VhbC4gSnVzdCBy
ZW1lbWJlcgotdGhhdCBpZiB5b3UgZG9uJ3QgZXhwbGljaXRseSBzZXQgYW4gYWN0aW9uIGluIGFu
IGBPTl9DQUxMKClgIG9yCi1gRVhQRUNUX0NBTEwoKWAsIHRoZSBmYWtlIHdpbGwgYmUgY2FsbGVk
IHVwb24gdG8gZG8gaXQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1URVNUKEFiY1Rl
c3QsIFh5eikgewotICBNb2NrRm9vIGZvbzsKLSAgZm9vLkRlbGVnYXRlVG9GYWtlKCk7IC8vIEVu
YWJsZXMgdGhlIGZha2UgZm9yIGRlbGVnYXRpb24uCi0KLSAgLy8gUHV0IHlvdXIgT05fQ0FMTChm
b28sIC4uLilzIGhlcmUsIGlmIGFueS4KLQotICAvLyBObyBhY3Rpb24gc3BlY2lmaWVkLCBtZWFu
aW5nIHRvIHVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlz
KDUpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXykpOwotCi0gIGludCBuID0gMDsK
LSAgRVhQRUNUX0VRKCcrJywgZm9vLkRvVGhpcyg1KSk7ICAvLyBGYWtlRm9vOjpEb1RoaXMoKSBp
cyBpbnZva2VkLgotICBmb28uRG9UaGF0KCJIaSIsICZuKTsgICAgICAgICAgIC8vIEZha2VGb286
OkRvVGhhdCgpIGlzIGludm9rZWQuCi0gIEVYUEVDVF9FUSgyLCBuKTsKLX0KLWBgYAotCi0qKlNv
bWUgdGlwczoqKgotCi0gICogSWYgeW91IHdhbnQsIHlvdSBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhl
IGRlZmF1bHQgYWN0aW9uIGJ5IHByb3ZpZGluZyB5b3VyIG93biBgT05fQ0FMTCgpYCBvciB1c2lu
ZyBgLldpbGxPbmNlKClgIC8gYC5XaWxsUmVwZWF0ZWRseSgpYCBpbiBgRVhQRUNUX0NBTEwoKWAu
Ci0gICogSW4gYERlbGVnYXRlVG9GYWtlKClgLCB5b3Ugb25seSBuZWVkIHRvIGRlbGVnYXRlIHRo
ZSBtZXRob2RzIHdob3NlIGZha2UgaW1wbGVtZW50YXRpb24geW91IGludGVuZCB0byB1c2UuCi0g
ICogVGhlIGdlbmVyYWwgdGVjaG5pcXVlIGRpc2N1c3NlZCBoZXJlIHdvcmtzIGZvciBvdmVybG9h
ZGVkIG1ldGhvZHMsIGJ1dCB5b3UnbGwgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxlciB3aGljaCB2
ZXJzaW9uIHlvdSBtZWFuLiBUbyBkaXNhbWJpZ3VhdGUgYSBtb2NrIGZ1bmN0aW9uICh0aGUgb25l
IHlvdSBzcGVjaWZ5IGluc2lkZSB0aGUgcGFyZW50aGVzZXMgb2YgYE9OX0NBTEwoKWApLCBzZWUg
dGhlICJTZWxlY3RpbmcgQmV0d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyIgc2VjdGlvbiBvbiB0
aGlzIHBhZ2U7IHRvIGRpc2FtYmlndWF0ZSBhIGZha2UgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHBs
YWNlIGluc2lkZSBgSW52b2tlKClgKSwgdXNlIGEgYHN0YXRpY19jYXN0YCB0byBzcGVjaWZ5IHRo
ZSBmdW5jdGlvbidzIHR5cGUuCi0gICogSGF2aW5nIHRvIG1peCBhIG1vY2sgYW5kIGEgZmFrZSBp
cyBvZnRlbiBhIHNpZ24gb2Ygc29tZXRoaW5nIGdvbmUgd3JvbmcuIFBlcmhhcHMgeW91IGhhdmVu
J3QgZ290IHVzZWQgdG8gdGhlIGludGVyYWN0aW9uLWJhc2VkIHdheSBvZiB0ZXN0aW5nIHlldC4g
T3IgcGVyaGFwcyB5b3VyIGludGVyZmFjZSBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMgYW5k
IHNob3VsZCBiZSBzcGxpdCB1cC4gVGhlcmVmb3JlLCAqKmRvbid0IGFidXNlIHRoaXMqKi4gV2Ug
d291bGQgb25seSByZWNvbW1lbmQgdG8gZG8gaXQgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hl
biB5b3UgYXJlIHJlZmFjdG9yaW5nIHlvdXIgY29kZS4KLQotUmVnYXJkaW5nIHRoZSB0aXAgb24g
bWl4aW5nIGEgbW9jayBhbmQgYSBmYWtlLCBoZXJlJ3MgYW4gZXhhbXBsZSBvbgotd2h5IGl0IG1h
eSBiZSBhIGJhZCBzaWduOiBTdXBwb3NlIHlvdSBoYXZlIGEgY2xhc3MgYFN5c3RlbWAgZm9yCi1s
b3ctbGV2ZWwgc3lzdGVtIG9wZXJhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGRvZXMgZmlsZSBh
bmQgSS9PCi1vcGVyYXRpb25zLiBBbmQgc3VwcG9zZSB5b3Ugd2FudCB0byB0ZXN0IGhvdyB5b3Vy
IGNvZGUgdXNlcyBgU3lzdGVtYAotdG8gZG8gSS9PLCBhbmQgeW91IGp1c3Qgd2FudCB0aGUgZmls
ZSBvcGVyYXRpb25zIHRvIHdvcmsgbm9ybWFsbHkuIElmCi15b3UgbW9jayBvdXQgdGhlIGVudGly
ZSBgU3lzdGVtYCBjbGFzcywgeW91J2xsIGhhdmUgdG8gcHJvdmlkZSBhIGZha2UKLWltcGxlbWVu
dGF0aW9uIGZvciB0aGUgZmlsZSBvcGVyYXRpb24gcGFydCwgd2hpY2ggc3VnZ2VzdHMgdGhhdAot
YFN5c3RlbWAgaXMgdGFraW5nIG9uIHRvbyBtYW55IHJvbGVzLgotCi1JbnN0ZWFkLCB5b3UgY2Fu
IGRlZmluZSBhIGBGaWxlT3BzYCBpbnRlcmZhY2UgYW5kIGFuIGBJT09wc2AgaW50ZXJmYWNlCi1h
bmQgc3BsaXQgYFN5c3RlbWAncyBmdW5jdGlvbmFsaXRpZXMgaW50byB0aGUgdHdvLiBUaGVuIHlv
dSBjYW4gbW9jawotYElPT3BzYCB3aXRob3V0IG1vY2tpbmcgYEZpbGVPcHNgLgotCi0jIyBEZWxl
Z2F0aW5nIENhbGxzIHRvIGEgUmVhbCBPYmplY3QgIyMKLQotV2hlbiB1c2luZyB0ZXN0aW5nIGRv
dWJsZXMgKG1vY2tzLCBmYWtlcywgc3R1YnMsIGFuZCBldGMpLCBzb21ldGltZXMKLXRoZWlyIGJl
aGF2aW9ycyB3aWxsIGRpZmZlciBmcm9tIHRob3NlIG9mIHRoZSByZWFsIG9iamVjdHMuIFRoaXMK
LWRpZmZlcmVuY2UgY291bGQgYmUgZWl0aGVyIGludGVudGlvbmFsIChhcyBpbiBzaW11bGF0aW5n
IGFuIGVycm9yIHN1Y2gKLXRoYXQgeW91IGNhbiB0ZXN0IHRoZSBlcnJvciBoYW5kbGluZyBjb2Rl
KSBvciB1bmludGVudGlvbmFsLiBJZiB5b3VyCi1tb2NrcyBoYXZlIGRpZmZlcmVudCBiZWhhdmlv
cnMgdGhhbiB0aGUgcmVhbCBvYmplY3RzIGJ5IG1pc3Rha2UsIHlvdQotY291bGQgZW5kIHVwIHdp
dGggY29kZSB0aGF0IHBhc3NlcyB0aGUgdGVzdHMgYnV0IGZhaWxzIGluIHByb2R1Y3Rpb24uCi0K
LVlvdSBjYW4gdXNlIHRoZSBfZGVsZWdhdGluZy10by1yZWFsXyB0ZWNobmlxdWUgdG8gZW5zdXJl
IHRoYXQgeW91cgotbW9jayBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIHJlYWwgb2JqZWN0
IHdoaWxlIHJldGFpbmluZyB0aGUKLWFiaWxpdHkgdG8gdmFsaWRhdGUgY2FsbHMuIFRoaXMgdGVj
aG5pcXVlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKLWRlbGVnYXRpbmctdG8tZmFrZSB0ZWNobmlx
dWUsIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHRoYXQgd2UgdXNlIGEgcmVhbAotb2JqZWN0IGluc3Rl
YWQgb2YgYSBmYWtlLiBIZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsK
LQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTW9ja0ZvbygpIHsK
LSAgICAvLyBCeSBkZWZhdWx0LCBhbGwgY2FsbHMgYXJlIGRlbGVnYXRlZCB0byB0aGUgcmVhbCBv
YmplY3QuCi0gICAgT05fQ0FMTCgqdGhpcywgRG9UaGlzKCkpCi0gICAgICAgIC5XaWxsQnlEZWZh
dWx0KEludm9rZSgmcmVhbF8sICZGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRoaXMsIERv
VGhhdChfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZvbzo6RG9U
aGF0KSk7Ci0gICAgLi4uCi0gIH0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgLi4uKTsKLSAgTU9D
S19NRVRIT0QxKERvVGhhdCwgLi4uKTsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgRm9vIHJlYWxfOwot
fTsKLS4uLgotCi0gIE1vY2tGb28gbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoaXMo
KSkKLSAgICAgIC5UaW1lcygzKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGF0KCJIaSIpKQot
ICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwotICAuLi4gdXNlIG1vY2sgaW4gdGVzdCAuLi4KLWBg
YAotCi1XaXRoIHRoaXMsIEdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoYXQgeW91ciBjb2RlIG1h
ZGUgdGhlIHJpZ2h0IGNhbGxzCi0od2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLCBpbiB0aGUgcmln
aHQgb3JkZXIsIGNhbGxlZCB0aGUgcmlnaHQgbnVtYmVyCi1vZiB0aW1lcywgZXRjKSwgYW5kIGEg
cmVhbCBvYmplY3Qgd2lsbCBhbnN3ZXIgdGhlIGNhbGxzIChzbyB0aGUKLWJlaGF2aW9yIHdpbGwg
YmUgdGhlIHNhbWUgYXMgaW4gcHJvZHVjdGlvbikuIFRoaXMgZ2l2ZXMgeW91IHRoZSBiZXN0Ci1v
ZiBib3RoIHdvcmxkcy4KLQotIyMgRGVsZWdhdGluZyBDYWxscyB0byBhIFBhcmVudCBDbGFzcyAj
IwotCi1JZGVhbGx5LCB5b3Ugc2hvdWxkIGNvZGUgdG8gaW50ZXJmYWNlcywgd2hvc2UgbWV0aG9k
cyBhcmUgYWxsIHB1cmUKLXZpcnR1YWwuIEluIHJlYWxpdHksIHNvbWV0aW1lcyB5b3UgZG8gbmVl
ZCB0byBtb2NrIGEgdmlydHVhbCBtZXRob2QKLXRoYXQgaXMgbm90IHB1cmUgKGkuZSwgaXQgYWxy
ZWFkeSBoYXMgYW4gaW1wbGVtZW50YXRpb24pLiBGb3IgZXhhbXBsZToKLQotYGBgCi1jbGFzcyBG
b28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgdmlydHVhbCB2b2lkIFB1cmUo
aW50IG4pID0gMDsKLSAgdmlydHVhbCBpbnQgQ29uY3JldGUoY29uc3QgY2hhciogc3RyKSB7IC4u
LiB9Ci19OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBN
b2NraW5nIGEgcHVyZSBtZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7
Ci0gIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hh
ZG93ZWQuCi0gIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwot
fTsKLWBgYAotCi1Tb21ldGltZXMgeW91IG1heSB3YW50IHRvIGNhbGwgYEZvbzo6Q29uY3JldGUo
KWAgaW5zdGVhZCBvZgotYE1vY2tGb286OkNvbmNyZXRlKClgLiBQZXJoYXBzIHlvdSB3YW50IHRv
IGRvIGl0IGFzIHBhcnQgb2YgYSBzdHViCi1hY3Rpb24sIG9yIHBlcmhhcHMgeW91ciB0ZXN0IGRv
ZXNuJ3QgbmVlZCB0byBtb2NrIGBDb25jcmV0ZSgpYCBhdCBhbGwKLShidXQgaXQgd291bGQgYmUg
b2gtc28gcGFpbmZ1bCB0byBoYXZlIHRvIGRlZmluZSBhIG5ldyBtb2NrIGNsYXNzCi13aGVuZXZl
ciB5b3UgZG9uJ3QgbmVlZCB0byBtb2NrIG9uZSBvZiBpdHMgbWV0aG9kcykuCi0KLVRoZSB0cmlj
ayBpcyB0byBsZWF2ZSBhIGJhY2sgZG9vciBpbiB5b3VyIG1vY2sgY2xhc3MgZm9yIGFjY2Vzc2lu
ZyB0aGUKLXJlYWwgbWV0aG9kcyBpbiB0aGUgYmFzZSBjbGFzczoKLQotYGBgCi1jbGFzcyBNb2Nr
Rm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2Qu
Ci0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBjb25j
cmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVUSE9E
MShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwotCi0gIC8vIFVzZSB0aGlzIHRvIGNh
bGwgQ29uY3JldGUoKSBkZWZpbmVkIGluIEZvby4KLSAgaW50IEZvb0NvbmNyZXRlKGNvbnN0IGNo
YXIqIHN0cikgeyByZXR1cm4gRm9vOjpDb25jcmV0ZShzdHIpOyB9Ci19OwotYGBgCi0KLU5vdywg
eW91IGNhbiBjYWxsIGBGb286OkNvbmNyZXRlKClgIGluc2lkZSBhbiBhY3Rpb24gYnk6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAg
RVhQRUNUX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoJmZv
bywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Ci1gYGAKLQotb3IgdGVsbCB0aGUgbW9jayBvYmpl
Y3QgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBtb2NrIGBDb25jcmV0ZSgpYDoKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6Okludm9rZTsKLS4uLgotICBPTl9DQUxMKGZvbywgQ29uY3JldGUoXykpCi0g
ICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7
Ci1gYGAKLQotKFdoeSBkb24ndCB3ZSBqdXN0IHdyaXRlIGBJbnZva2UoJmZvbywgJkZvbzo6Q29u
Y3JldGUpYD8gSWYgeW91IGRvCi10aGF0LCBgTW9ja0Zvbzo6Q29uY3JldGUoKWAgd2lsbCBiZSBj
YWxsZWQgKGFuZCBjYXVzZSBhbiBpbmZpbml0ZQotcmVjdXJzaW9uKSBzaW5jZSBgRm9vOjpDb25j
cmV0ZSgpYCBpcyB2aXJ0dWFsLiBUaGF0J3MganVzdCBob3cgQysrCi13b3Jrcy4pCi0KLSMgVXNp
bmcgTWF0Y2hlcnMgIwotCi0jIyBNYXRjaGluZyBBcmd1bWVudCBWYWx1ZXMgRXhhY3RseSAjIwot
Ci1Zb3UgY2FuIHNwZWNpZnkgZXhhY3RseSB3aGljaCBhcmd1bWVudHMgYSBtb2NrIG1ldGhvZCBp
cyBleHBlY3Rpbmc6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLSAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBiYXIpKTsKLWBgYAotCi0jIyBVc2lu
ZyBTaW1wbGUgTWF0Y2hlcnMgIyMKLQotWW91IGNhbiB1c2UgbWF0Y2hlcnMgdG8gbWF0Y2ggYXJn
dW1lbnRzIHRoYXQgaGF2ZSBhIGNlcnRhaW4gcHJvcGVydHk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEdlKDUpKSkgIC8vIFRoZSBhcmd1
bWVudCBtdXN0IGJlID49IDUuCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwotICBFWFBF
Q1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBOb3ROdWxsKCkpKTsKLSAgLy8gVGhlIHNlY29u
ZCBhcmd1bWVudCBtdXN0IG5vdCBiZSBOVUxMLgotYGBgCi0KLUEgZnJlcXVlbnRseSB1c2VkIG1h
dGNoZXIgaXMgYF9gLCB3aGljaCBtYXRjaGVzIGFueXRoaW5nOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLS4uLgotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhhdChfLCBOb3ROdWxsKCkpKTsKLWBgYAotCi0jIyBDb21iaW5pbmcgTWF0Y2hlcnMg
IyMKLQotWW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gZXhpc3Rpbmcgb25lcyB1
c2luZyBgQWxsT2YoKWAsCi1gQW55T2YoKWAsIGFuZCBgTm90KClgOgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpI
YXNTdWJzdHI7Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3Q7Ci0u
Li4KLSAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUgPiA1IGFuZCAhPSAxMC4KLSAgRVhQRUNUX0NB
TEwoZm9vLCBEb1RoaXMoQWxsT2YoR3QoNSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5lKDEwKSkpKTsKLQotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgY29udGFp
biBzdWItc3RyaW5nICJibGFoIi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoTm90KEhhc1N1
YnN0cigiYmxhaCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwotYGBgCi0K
LSMjIENhc3RpbmcgTWF0Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIHN0YXRp
Y2FsbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUgY29tcGlsZXIKLWNhbiBjYXRjaCB5b3VyIG1p
c3Rha2UgaWYgeW91IHVzZSBhIG1hdGNoZXIgb2YgdGhlIHdyb25nIHR5cGUgKGZvcgotZXhhbXBs
ZSwgaWYgeW91IHVzZSBgRXEoNSlgIHRvIG1hdGNoIGEgYHN0cmluZ2AgYXJndW1lbnQpLiBHb29k
IGZvcgoteW91IQotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHlvdSBrbm93IHdoYXQgeW91J3JlIGRv
aW5nIGFuZCB3YW50IHRoZSBjb21waWxlcgotdG8gZ2l2ZSB5b3Ugc29tZSBzbGFjay4gT25lIGV4
YW1wbGUgaXMgdGhhdCB5b3UgaGF2ZSBhIG1hdGNoZXIgZm9yCi1gbG9uZ2AgYW5kIHRoZSBhcmd1
bWVudCB5b3Ugd2FudCB0byBtYXRjaCBpcyBgaW50YC4gV2hpbGUgdGhlIHR3bwotdHlwZXMgYXJl
bid0IGV4YWN0bHkgdGhlIHNhbWUsIHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHdyb25nIHdpdGgK
LXVzaW5nIGEgYE1hdGNoZXI8bG9uZz5gIHRvIG1hdGNoIGFuIGBpbnRgIC0gYWZ0ZXIgYWxsLCB3
ZSBjYW4gZmlyc3QKLWNvbnZlcnQgdGhlIGBpbnRgIGFyZ3VtZW50IHRvIGEgYGxvbmdgIGJlZm9y
ZSBnaXZpbmcgaXQgdG8gdGhlCi1tYXRjaGVyLgotCi1UbyBzdXBwb3J0IHRoaXMgbmVlZCwgR29v
Z2xlIE1vY2sgZ2l2ZXMgeW91IHRoZQotYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgZnVuY3Rpb24u
IEl0IGNhc3RzIGEgbWF0Y2hlciBgbWAgdG8gdHlwZQotYE1hdGNoZXI8VD5gLiBUbyBlbnN1cmUg
c2FmZXR5LCBHb29nbGUgTW9jayBjaGVja3MgdGhhdCAobGV0IGBVYCBiZSB0aGUKLXR5cGUgYG1g
IGFjY2VwdHMpOgotCi0gIDEuIFR5cGUgYFRgIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gdHlw
ZSBgVWA7Ci0gIDEuIFdoZW4gYm90aCBgVGAgYW5kIGBVYCBhcmUgYnVpbHQtaW4gYXJpdGhtZXRp
YyB0eXBlcyAoYGJvb2xgLCBpbnRlZ2VycywgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMpLCB0
aGUgY29udmVyc2lvbiBmcm9tIGBUYCB0byBgVWAgaXMgbm90IGxvc3N5IChpbiBvdGhlciB3b3Jk
cywgYW55IHZhbHVlIHJlcHJlc2VudGFibGUgYnkgYFRgIGNhbiBhbHNvIGJlIHJlcHJlc2VudGVk
IGJ5IGBVYCk7IGFuZAotICAxLiBXaGVuIGBVYCBpcyBhIHJlZmVyZW5jZSwgYFRgIG11c3QgYWxz
byBiZSBhIHJlZmVyZW5jZSAoYXMgdGhlIHVuZGVybHlpbmcgbWF0Y2hlciBtYXkgYmUgaW50ZXJl
c3RlZCBpbiB0aGUgYWRkcmVzcyBvZiB0aGUgYFVgIHZhbHVlKS4KLQotVGhlIGNvZGUgd29uJ3Qg
Y29tcGlsZSBpZiBhbnkgb2YgdGhlc2UgY29uZGl0aW9ucyBpc24ndCBtZXQuCi0KLUhlcmUncyBv
bmUgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDsKLQot
Ly8gQSBiYXNlIGNsYXNzIGFuZCBhIGNoaWxkIGNsYXNzLgotY2xhc3MgQmFzZSB7IC4uLiB9Owot
Y2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsgLi4uIH07Ci0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIHZvaWQoRGVyaXZl
ZCogZGVyaXZlZCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICAvLyBtIGlzIGEgTWF0
Y2hlcjxCYXNlKj4gd2UgZ290IGZyb20gc29tZXdoZXJlLgotICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcyhTYWZlTWF0Y2hlckNhc3Q8RGVyaXZlZCo+KG0pKSk7Ci1gYGAKLQotSWYgeW91IGZpbmQg
YFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgdG9vIGxpbWl0aW5nLCB5b3UgY2FuIHVzZSBhIHNpbWls
YXIKLWZ1bmN0aW9uIGBNYXRjaGVyQ2FzdDxUPihtKWAuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQg
YE1hdGNoZXJDYXN0YCB3b3JrcwotYXMgbG9uZyBhcyB5b3UgY2FuIGBzdGF0aWNfY2FzdGAgdHlw
ZSBgVGAgdG8gdHlwZSBgVWAuCi0KLWBNYXRjaGVyQ2FzdGAgZXNzZW50aWFsbHkgbGV0cyB5b3Ug
YnlwYXNzIEMrKydzIHR5cGUgc3lzdGVtCi0oYHN0YXRpY19jYXN0YCBpc24ndCBhbHdheXMgc2Fm
ZSBhcyBpdCBjb3VsZCB0aHJvdyBhd2F5IGluZm9ybWF0aW9uLAotZm9yIGV4YW1wbGUpLCBzbyBi
ZSBjYXJlZnVsIG5vdCB0byBtaXN1c2UvYWJ1c2UgaXQuCi0KLSMjIFNlbGVjdGluZyBCZXR3ZWVu
IE92ZXJsb2FkZWQgRnVuY3Rpb25zICMjCi0KLUlmIHlvdSBleHBlY3QgYW4gb3ZlcmxvYWRlZCBm
dW5jdGlvbiB0byBiZSBjYWxsZWQsIHRoZSBjb21waWxlciBtYXkKLW5lZWQgc29tZSBoZWxwIG9u
IHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiBpdCBpcy4KLQotVG8gZGlzYW1iaWd1YXRlIGZ1bmN0
aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LAotdXNlIHRo
ZSBgQ29uc3QoKWAgYXJndW1lbnQgd3JhcHBlci4KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJl
dHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgTU9DS19N
RVRIT0QwKEdldEJhciwgQmFyJigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJhciwgY29u
c3QgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjEsIGJhcjI7
Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0QmFyKCkpICAgICAgICAgLy8gVGhlIG5vbi1jb25zdCBH
ZXRCYXIoKS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMSkpOwotICBFWFBFQ1RfQ0FM
TChDb25zdChmb28pLCBHZXRCYXIoKSkgIC8vIFRoZSBjb25zdCBHZXRCYXIoKS4KLSAgICAgIC5X
aWxsT25jZShSZXR1cm5SZWYoYmFyMikpOwotYGBgCi0KLShgQ29uc3QoKWAgaXMgZGVmaW5lZCBi
eSBHb29nbGUgTW9jayBhbmQgcmV0dXJucyBhIGBjb25zdGAgcmVmZXJlbmNlCi10byBpdHMgYXJn
dW1lbnQuKQotCi1UbyBkaXNhbWJpZ3VhdGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgd2l0aCB0aGUg
c2FtZSBudW1iZXIgb2YgYXJndW1lbnRzCi1idXQgZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLCB5
b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgZXhhY3QgdHlwZQotb2YgYSBtYXRjaGVyLCBlaXRo
ZXIgYnkgd3JhcHBpbmcgeW91ciBtYXRjaGVyIGluIGBNYXRjaGVyPHR5cGU+KClgLCBvcgotdXNp
bmcgYSBtYXRjaGVyIHdob3NlIHR5cGUgaXMgZml4ZWQgKGBUeXBlZEVxPHR5cGU+YCwgYEFuPHR5
cGU+KClgLAotZXRjKToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFuOwotdXNpbmcgOjp0ZXN0
aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6VHlw
ZWRFcTsKLQotY2xhc3MgTW9ja1ByaW50ZXIgOiBwdWJsaWMgUHJpbnRlciB7Ci0gcHVibGljOgot
ICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0QxKFByaW50
LCB2b2lkKGNoYXIgYykpOwotfTsKLQotVEVTVChQcmludGVyVGVzdCwgUHJpbnQpIHsKLSAgTW9j
a1ByaW50ZXIgcHJpbnRlcjsKLQotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChBbjxpbnQ+
KCkpKTsgICAgICAgICAgICAvLyB2b2lkIFByaW50KGludCk7Ci0gIEVYUEVDVF9DQUxMKHByaW50
ZXIsIFByaW50KE1hdGNoZXI8aW50PihMdCg1KSkpKTsgIC8vIHZvaWQgUHJpbnQoaW50KTsKLSAg
RVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoVHlwZWRFcTxjaGFyPignYScpKSk7ICAgLy8gdm9p
ZCBQcmludChjaGFyKTsKLQotICBwcmludGVyLlByaW50KDMpOwotICBwcmludGVyLlByaW50KDYp
OwotICBwcmludGVyLlByaW50KCdhJyk7Ci19Ci1gYGAKLQotIyMgUGVyZm9ybWluZyBEaWZmZXJl
bnQgQWN0aW9ucyBCYXNlZCBvbiB0aGUgQXJndW1lbnRzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhv
ZCBpcyBjYWxsZWQsIHRoZSBfbGFzdF8gbWF0Y2hpbmcgZXhwZWN0YXRpb24gdGhhdCdzCi1zdGls
bCBhY3RpdmUgd2lsbCBiZSBzZWxlY3RlZCAodGhpbmsgIm5ld2VyIG92ZXJyaWRlcyBvbGRlciIp
LiBTbywgeW91Ci1jYW4gbWFrZSBhIG1ldGhvZCBkbyBkaWZmZXJlbnQgdGhpbmdzIGRlcGVuZGlu
ZyBvbiBpdHMgYXJndW1lbnQgdmFsdWVzCi1saWtlIHRoaXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwot
Li4uCi0gIC8vIFRoZSBkZWZhdWx0IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8p
KQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybignYicpKTsKLQotICAvLyBUaGUgbW9yZSBz
cGVjaWZpYyBjYXNlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhMdCg1KSkpCi0gICAgICAu
V2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdhJykpOwotYGBgCi0KLU5vdywgaWYgYGZvby5Eb1RoaXMo
KWAgaXMgY2FsbGVkIHdpdGggYSB2YWx1ZSBsZXNzIHRoYW4gNSwgYCdhJ2Agd2lsbAotYmUgcmV0
dXJuZWQ7IG90aGVyd2lzZSBgJ2InYCB3aWxsIGJlIHJldHVybmVkLgotCi0jIyBNYXRjaGluZyBN
dWx0aXBsZSBBcmd1bWVudHMgYXMgYSBXaG9sZSAjIwotCi1Tb21ldGltZXMgaXQncyBub3QgZW5v
dWdoIHRvIG1hdGNoIHRoZSBhcmd1bWVudHMgaW5kaXZpZHVhbGx5LiBGb3IKLWV4YW1wbGUsIHdl
IG1heSB3YW50IHRvIHNheSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGxlc3MgdGhh
bgotdGhlIHNlY29uZCBhcmd1bWVudC4gVGhlIGBXaXRoKClgIGNsYXVzZSBhbGxvd3MgdXMgdG8g
bWF0Y2gKLWFsbCBhcmd1bWVudHMgb2YgYSBtb2NrIGZ1bmN0aW9uIGFzIGEgd2hvbGUuIEZvciBl
eGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6THQ7
Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgSW5SYW5nZShO
ZSgwKSwgXykpCi0gICAgICAuV2l0aChMdCgpKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhlIGZpcnN0
IGFyZ3VtZW50IG9mIGBJblJhbmdlKClgIG11c3Qgbm90IGJlIDAsIGFuZCBtdXN0IGJlCi1sZXNz
IHRoYW4gdGhlIHNlY29uZCBhcmd1bWVudC4KLQotVGhlIGV4cHJlc3Npb24gaW5zaWRlIGBXaXRo
KClgIG11c3QgYmUgYSBtYXRjaGVyIG9mIHR5cGUKLWBNYXRjaGVyPHRyMTo6dHVwbGU8QTEsIC4u
LiwgQW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBBbmAgYXJlIHRoZQotdHlwZXMgb2YgdGhlIGZ1
bmN0aW9uIGFyZ3VtZW50cy4KLQotWW91IGNhbiBhbHNvIHdyaXRlIGBBbGxBcmdzKG0pYCBpbnN0
ZWFkIG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBUaGUKLXR3byBmb3JtcyBhcmUgZXF1aXZhbGVu
dCwgYnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAgaXMgbW9yZSByZWFkYWJsZQotdGhhbiBgLldp
dGgoTHQoKSlgLgotCi1Zb3UgY2FuIHVzZSBgQXJnczxrMSwgLi4uLCBrbj4obSlgIHRvIG1hdGNo
IHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCi1hZ2FpbnN0IGBtYC4gRm9yIGV4YW1wbGUsCi0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKLXVzaW5n
IDo6dGVzdGluZzo6QXJnczsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci0uLi4KLSAgRVhQRUNUX0NB
TEwoZm9vLCBCbGFoKF8sIF8sIF8pKQotICAgICAgLldpdGgoQWxsT2YoQXJnczwwLCAxPihMdCgp
KSwgQXJnczwxLCAyPihMdCgpKSkpOwotYGBgCi0KLXNheXMgdGhhdCBgQmxhaCgpYCB3aWxsIGJl
IGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBgeGAsIGB5YCwgYW5kIGB6YCB3aGVyZQotYHggPCB5IDwg
emAuCi0KLUFzIGEgY29udmVuaWVuY2UgYW5kIGV4YW1wbGUsIEdvb2dsZSBNb2NrIHByb3ZpZGVz
IHNvbWUgbWF0Y2hlcnMgZm9yCi0yLXR1cGxlcywgaW5jbHVkaW5nIHRoZSBgTHQoKWAgbWF0Y2hl
ciBhYm92ZS4gU2VlIHRoZSBbQ2hlYXRTaGVldF0oVjFfNV9DaGVhdFNoZWV0Lm1kKSBmb3IKLXRo
ZSBjb21wbGV0ZSBsaXN0LgotCi0jIyBVc2luZyBNYXRjaGVycyBhcyBQcmVkaWNhdGVzICMjCi0K
LUhhdmUgeW91IG5vdGljZWQgdGhhdCBhIG1hdGNoZXIgaXMganVzdCBhIGZhbmN5IHByZWRpY2F0
ZSB0aGF0IGFsc28KLWtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGY/IE1hbnkgZXhpc3Rpbmcg
YWxnb3JpdGhtcyB0YWtlIHByZWRpY2F0ZXMKLWFzIGFyZ3VtZW50cyAoZS5nLiB0aG9zZSBkZWZp
bmVkIGluIFNUTCdzIGA8YWxnb3JpdGhtPmAgaGVhZGVyKSwgYW5kCi1pdCB3b3VsZCBiZSBhIHNo
YW1lIGlmIEdvb2dsZSBNb2NrIG1hdGNoZXJzIGFyZSBub3QgYWxsb3dlZCB0bwotcGFydGljaXBh
dGUuCi0KLUx1Y2tpbHksIHlvdSBjYW4gdXNlIGEgbWF0Y2hlciB3aGVyZSBhIHVuYXJ5IHByZWRp
Y2F0ZSBmdW5jdG9yIGlzCi1leHBlY3RlZCBieSB3cmFwcGluZyBpdCBpbnNpZGUgdGhlIGBNYXRj
aGVzKClgIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi0jaW5jbHVkZSA8YWxnb3JpdGht
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotc3RkOjp2ZWN0b3I8aW50PiB2OwotLi4uCi0vLyBIb3cg
bWFueSBlbGVtZW50cyBpbiB2IGFyZSA+PSAxMD8KLWNvbnN0IGludCBjb3VudCA9IGNvdW50X2lm
KHYuYmVnaW4oKSwgdi5lbmQoKSwgTWF0Y2hlcyhHZSgxMCkpKTsKLWBgYAotCi1TaW5jZSB5b3Ug
Y2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBzaW1wbGVyIG9uZXMgZWFzaWx5IHVzaW5n
Ci1Hb29nbGUgTW9jaywgdGhpcyBnaXZlcyB5b3UgYSB3YXkgdG8gY29udmVuaWVudGx5IGNvbnN0
cnVjdCBjb21wb3NpdGUKLXByZWRpY2F0ZXMgKGRvaW5nIHRoZSBzYW1lIHVzaW5nIFNUTCdzIGA8
ZnVuY3Rpb25hbD5gIGhlYWRlciBpcyBqdXN0Ci1wYWluZnVsKS4gRm9yIGV4YW1wbGUsIGhlcmUn
cyBhIHByZWRpY2F0ZSB0aGF0J3Mgc2F0aXNmaWVkIGJ5IGFueQotbnVtYmVyIHRoYXQgaXMgPj0g
MCwgPD0gMTAwLCBhbmQgIT0gNTA6Ci0KLWBgYAotTWF0Y2hlcyhBbGxPZihHZSgwKSwgTGUoMTAw
KSwgTmUoNTApKSkKLWBgYAotCi0jIyBVc2luZyBNYXRjaGVycyBpbiBHb29nbGUgVGVzdCBBc3Nl
cnRpb25zICMjCi0KLVNpbmNlIG1hdGNoZXJzIGFyZSBiYXNpY2FsbHkgcHJlZGljYXRlcyB0aGF0
IGFsc28ga25vdyBob3cgdG8gZGVzY3JpYmUKLXRoZW1zZWx2ZXMsIHRoZXJlIGlzIGEgd2F5IHRv
IHRha2UgYWR2YW50YWdlIG9mIHRoZW0gaW4KLVtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3QvKSBhc3NlcnRpb25zLiBJdCdzCi1jYWxsZWQgYEFTU0VSVF9U
SEFUYCBhbmQgYEVYUEVDVF9USEFUYDoKLQotYGBgCi0gIEFTU0VSVF9USEFUKHZhbHVlLCBtYXRj
aGVyKTsgIC8vIEFzc2VydHMgdGhhdCB2YWx1ZSBtYXRjaGVzIG1hdGNoZXIuCi0gIEVYUEVDVF9U
SEFUKHZhbHVlLCBtYXRjaGVyKTsgIC8vIFRoZSBub24tZmF0YWwgdmVyc2lvbi4KLWBgYAotCi1G
b3IgZXhhbXBsZSwgaW4gYSBHb29nbGUgVGVzdCB0ZXN0IHlvdSBjYW4gd3JpdGU6Ci0KLWBgYAot
I2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+Ci0KLXVzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11c2lu
ZyA6OnRlc3Rpbmc6OkdlOwotdXNpbmcgOjp0ZXN0aW5nOjpMZTsKLXVzaW5nIDo6dGVzdGluZzo6
TWF0Y2hlc1JlZ2V4OwotdXNpbmcgOjp0ZXN0aW5nOjpTdGFydHNXaXRoOwotLi4uCi0KLSAgRVhQ
RUNUX1RIQVQoRm9vKCksIFN0YXJ0c1dpdGgoIkhlbGxvIikpOwotICBFWFBFQ1RfVEhBVChCYXIo
KSwgTWF0Y2hlc1JlZ2V4KCJMaW5lIFxcZCsiKSk7Ci0gIEFTU0VSVF9USEFUKEJheigpLCBBbGxP
ZihHZSg1KSwgTGUoMTApKSk7Ci1gYGAKLQotd2hpY2ggKGFzIHlvdSBjYW4gcHJvYmFibHkgZ3Vl
c3MpIGV4ZWN1dGVzIGBGb28oKWAsIGBCYXIoKWAsIGFuZAotYEJheigpYCwgYW5kIHZlcmlmaWVz
IHRoYXQ6Ci0KLSAgKiBgRm9vKClgIHJldHVybnMgYSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCBg
IkhlbGxvImAuCi0gICogYEJhcigpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyByZWd1
bGFyIGV4cHJlc3Npb24gYCJMaW5lIFxcZCsiYC4KLSAgKiBgQmF6KClgIHJldHVybnMgYSBudW1i
ZXIgaW4gdGhlIHJhbmdlIFs1LCAxMF0uCi0KLVRoZSBuaWNlIHRoaW5nIGFib3V0IHRoZXNlIG1h
Y3JvcyBpcyB0aGF0IF90aGV5IHJlYWQgbGlrZQotRW5nbGlzaF8uIFRoZXkgZ2VuZXJhdGUgaW5m
b3JtYXRpdmUgbWVzc2FnZXMgdG9vLiBGb3IgZXhhbXBsZSwgaWYgdGhlCi1maXJzdCBgRVhQRUNU
X1RIQVQoKWAgYWJvdmUgZmFpbHMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc29tZXRoaW5nIGxpa2U6
Ci0KLWBgYAotVmFsdWUgb2Y6IEZvbygpCi0gIEFjdHVhbDogIkhpLCB3b3JsZCEiCi1FeHBlY3Rl
ZDogc3RhcnRzIHdpdGggIkhlbGxvIgotYGBgCi0KLSoqQ3JlZGl0OioqIFRoZSBpZGVhIG9mIGAo
QVNTRVJUfEVYUEVDVClfVEhBVGAgd2FzIHN0b2xlbiBmcm9tIHRoZQotW0hhbWNyZXN0XShodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvaGFtY3Jlc3QvKSBwcm9qZWN0LCB3aGljaCBhZGRzCi1gYXNz
ZXJ0VGhhdCgpYCB0byBKVW5pdC4KLQotIyMgVXNpbmcgUHJlZGljYXRlcyBhcyBNYXRjaGVycyAj
IwotCi1Hb29nbGUgTW9jayBwcm92aWRlcyBhIGJ1aWx0LWluIHNldCBvZiBtYXRjaGVycy4gSW4g
Y2FzZSB5b3UgZmluZCB0aGVtCi1sYWNraW5nLCB5b3UgY2FuIHVzZSBhbiBhcmJpdHJheSB1bmFy
eSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3RvcgotYXMgYSBtYXRjaGVyIC0gYXMgbG9uZyBh
cyB0aGUgcHJlZGljYXRlIGFjY2VwdHMgYSB2YWx1ZSBvZiB0aGUgdHlwZQoteW91IHdhbnQuIFlv
dSBkbyB0aGlzIGJ5IHdyYXBwaW5nIHRoZSBwcmVkaWNhdGUgaW5zaWRlIHRoZSBgVHJ1bHkoKWAK
LWZ1bmN0aW9uLCBmb3IgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlRydWx5Owot
Ci1pbnQgSXNFdmVuKGludCBuKSB7IHJldHVybiAobiAlIDIpID09IDAgPyAxIDogMDsgfQotLi4u
Ci0KLSAgLy8gQmFyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhbiBldmVuIG51bWJlci4KLSAgRVhQ
RUNUX0NBTEwoZm9vLCBCYXIoVHJ1bHkoSXNFdmVuKSkpOwotYGBgCi0KLU5vdGUgdGhhdCB0aGUg
cHJlZGljYXRlIGZ1bmN0aW9uIC8gZnVuY3RvciBkb2Vzbid0IGhhdmUgdG8gcmV0dXJuCi1gYm9v
bGAuIEl0IHdvcmtzIGFzIGxvbmcgYXMgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgdXNlZCBhcyB0
aGUKLWNvbmRpdGlvbiBpbiBzdGF0ZW1lbnQgYGlmIChjb25kaXRpb24pIC4uLmAuCi0KLSMjIE1h
dGNoaW5nIEFyZ3VtZW50cyB0aGF0IEFyZSBOb3QgQ29weWFibGUgIyMKLQotV2hlbiB5b3UgZG8g
YW4gYEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBGb28oYmFyKSlgLCBHb29nbGUgTW9jayBzYXZlcwot
YXdheSBhIGNvcHkgb2YgYGJhcmAuIFdoZW4gYEZvbygpYCBpcyBjYWxsZWQgbGF0ZXIsIEdvb2ds
ZSBNb2NrCi1jb21wYXJlcyB0aGUgYXJndW1lbnQgdG8gYEZvbygpYCB3aXRoIHRoZSBzYXZlZCBj
b3B5IG9mIGBiYXJgLiBUaGlzCi13YXksIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGBi
YXJgIGJlaW5nIG1vZGlmaWVkIG9yIGRlc3Ryb3llZAotYWZ0ZXIgdGhlIGBFWFBFQ1RfQ0FMTCgp
YCBpcyBleGVjdXRlZC4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHlvdSB1c2UKLW1hdGNoZXJzIGxp
a2UgYEVxKGJhcilgLCBgTGUoYmFyKWAsIGFuZCBzbyBvbi4KLQotQnV0IHdoYXQgaWYgYGJhcmAg
Y2Fubm90IGJlIGNvcGllZCAoaS5lLiBoYXMgbm8gY29weSBjb25zdHJ1Y3Rvcik/IFlvdQotY291
bGQgZGVmaW5lIHlvdXIgb3duIG1hdGNoZXIgZnVuY3Rpb24gYW5kIHVzZSBpdCB3aXRoIGBUcnVs
eSgpYCwgYXMKLXRoZSBwcmV2aW91cyBjb3VwbGUgb2YgcmVjaXBlcyBoYXZlIHNob3duLiBPciwg
eW91IG1heSBiZSBhYmxlIHRvIGdldAotYXdheSBmcm9tIGl0IGlmIHlvdSBjYW4gZ3VhcmFudGVl
IHRoYXQgYGJhcmAgd29uJ3QgYmUgY2hhbmdlZCBhZnRlcgotdGhlIGBFWFBFQ1RfQ0FMTCgpYCBp
cyBleGVjdXRlZC4gSnVzdCB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgaXQgc2hvdWxkCi1zYXZlIGEg
cmVmZXJlbmNlIHRvIGBiYXJgLCBpbnN0ZWFkIG9mIGEgY29weSBvZiBpdC4gSGVyZSdzIGhvdzoK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkVxOwotdXNpbmcgOjp0ZXN0aW5nOjpCeVJlZjsKLXVz
aW5nIDo6dGVzdGluZzo6THQ7Ci0uLi4KLSAgLy8gRXhwZWN0cyB0aGF0IEZvbygpJ3MgYXJndW1l
bnQgPT0gYmFyLgotICBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKEVxKEJ5UmVmKGJhcikpKSk7
Ci0KLSAgLy8gRXhwZWN0cyB0aGF0IEZvbygpJ3MgYXJndW1lbnQgPCBiYXIuCi0gIEVYUEVDVF9D
QUxMKG1vY2tfb2JqLCBGb28oTHQoQnlSZWYoYmFyKSkpKTsKLWBgYAotCi1SZW1lbWJlcjogaWYg
eW91IGRvIHRoaXMsIGRvbid0IGNoYW5nZSBgYmFyYCBhZnRlciB0aGUKLWBFWFBFQ1RfQ0FMTCgp
YCwgb3IgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCi0KLSMjIFZhbGlkYXRpbmcgYSBNZW1iZXIg
b2YgYW4gT2JqZWN0ICMjCi0KLU9mdGVuIGEgbW9jayBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5j
ZSB0byBvYmplY3QgYXMgYW4gYXJndW1lbnQuIFdoZW4KLW1hdGNoaW5nIHRoZSBhcmd1bWVudCwg
eW91IG1heSBub3Qgd2FudCB0byBjb21wYXJlIHRoZSBlbnRpcmUgb2JqZWN0Ci1hZ2FpbnN0IGEg
Zml4ZWQgb2JqZWN0LCBhcyB0aGF0IG1heSBiZSBvdmVyLXNwZWNpZmljYXRpb24uIEluc3RlYWQs
Ci15b3UgbWF5IG5lZWQgdG8gdmFsaWRhdGUgYSBjZXJ0YWluIG1lbWJlciB2YXJpYWJsZSBvciB0
aGUgcmVzdWx0IG9mIGEKLWNlcnRhaW4gZ2V0dGVyIG1ldGhvZCBvZiB0aGUgb2JqZWN0LiBZb3Ug
Y2FuIGRvIHRoaXMgd2l0aCBgRmllbGQoKWAKLWFuZCBgUHJvcGVydHkoKWAuIE1vcmUgc3BlY2lm
aWNhbGx5LAotCi1gYGAKLUZpZWxkKCZGb286OmJhciwgbSkKLWBgYAotCi1pcyBhIG1hdGNoZXIg
dGhhdCBtYXRjaGVzIGEgYEZvb2Agb2JqZWN0IHdob3NlIGBiYXJgIG1lbWJlciB2YXJpYWJsZQot
c2F0aXNmaWVzIG1hdGNoZXIgYG1gLgotCi1gYGAKLVByb3BlcnR5KCZGb286OmJheiwgbSkKLWBg
YAotCi1pcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgYEZvb2Agb2JqZWN0IHdob3NlIGBiYXoo
KWAgbWV0aG9kIHJldHVybnMKLWEgdmFsdWUgdGhhdCBzYXRpc2ZpZXMgbWF0Y2hlciBgbWAuCi0K
LUZvciBleGFtcGxlOgotCi0+IHwgYEZpZWxkKCZGb286Om51bWJlciwgR2UoMykpYCB8IE1hdGNo
ZXMgYHhgIHdoZXJlIGB4Lm51bWJlciA+PSAzYC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0+IHwgYFByb3Bl
cnR5KCZGb286Om5hbWUsIFN0YXJ0c1dpdGgoIkpvaG4gIikpYCB8IE1hdGNoZXMgYHhgIHdoZXJl
IGB4Lm5hbWUoKWAgc3RhcnRzIHdpdGggYCJKb2huICJgLiB8Ci0KLU5vdGUgdGhhdCBpbiBgUHJv
cGVydHkoJkZvbzo6YmF6LCAuLi4pYCwgbWV0aG9kIGBiYXooKWAgbXVzdCB0YWtlIG5vCi1hcmd1
bWVudCBhbmQgYmUgZGVjbGFyZWQgYXMgYGNvbnN0YC4KLQotQlRXLCBgRmllbGQoKWAgYW5kIGBQ
cm9wZXJ0eSgpYCBjYW4gYWxzbyBtYXRjaCBwbGFpbiBwb2ludGVycyB0bwotb2JqZWN0cy4gRm9y
IGluc3RhbmNlLAotCi1gYGAKLUZpZWxkKCZGb286Om51bWJlciwgR2UoMykpCi1gYGAKLQotbWF0
Y2hlcyBhIHBsYWluIHBvaW50ZXIgYHBgIHdoZXJlIGBwLT5udW1iZXIgPj0gM2AuIElmIGBwYCBp
cyBgTlVMTGAsCi10aGUgbWF0Y2ggd2lsbCBhbHdheXMgZmFpbCByZWdhcmRsZXNzIG9mIHRoZSBp
bm5lciBtYXRjaGVyLgotCi1XaGF0IGlmIHlvdSB3YW50IHRvIHZhbGlkYXRlIG1vcmUgdGhhbiBv
bmUgbWVtYmVycyBhdCB0aGUgc2FtZSB0aW1lPwotUmVtZW1iZXIgdGhhdCB0aGVyZSBpcyBgQWxs
T2YoKWAuCi0KLSMjIFZhbGlkYXRpbmcgdGhlIFZhbHVlIFBvaW50ZWQgdG8gYnkgYSBQb2ludGVy
IEFyZ3VtZW50ICMjCi0KLUMrKyBmdW5jdGlvbnMgb2Z0ZW4gdGFrZSBwb2ludGVycyBhcyBhcmd1
bWVudHMuIFlvdSBjYW4gdXNlIG1hdGNoZXJzCi1saWtlIGBOVUxMYCwgYE5vdE51bGwoKWAsIGFu
ZCBvdGhlciBjb21wYXJpc29uIG1hdGNoZXJzIHRvIG1hdGNoIGEKLXBvaW50ZXIsIGJ1dCB3aGF0
IGlmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgdmFsdWUgX3BvaW50ZWQgdG9fIGJ5Ci10aGUg
cG9pbnRlciwgaW5zdGVhZCBvZiB0aGUgcG9pbnRlciBpdHNlbGYsIGhhcyBhIGNlcnRhaW4gcHJv
cGVydHk/Ci1XZWxsLCB5b3UgY2FuIHVzZSB0aGUgYFBvaW50ZWUobSlgIG1hdGNoZXIuCi0KLWBQ
b2ludGVlKG0pYCBtYXRjaGVzIGEgcG9pbnRlciBpZmYgYG1gIG1hdGNoZXMgdGhlIHZhbHVlIHRo
ZSBwb2ludGVyCi1wb2ludHMgdG8uIEZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6R2U7Ci11c2luZyA6OnRlc3Rpbmc6OlBvaW50ZWU7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9v
LCBCYXIoUG9pbnRlZShHZSgzKSkpKTsKLWBgYAotCi1leHBlY3RzIGBmb28uQmFyKClgIHRvIGJl
IGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHZhbHVlCi1ncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gMy4KLQotT25lIG5pY2UgdGhpbmcgYWJvdXQgYFBvaW50ZWUoKWAgaXMg
dGhhdCBpdCB0cmVhdHMgYSBgTlVMTGAgcG9pbnRlciBhcwotYSBtYXRjaCBmYWlsdXJlLCBzbyB5
b3UgY2FuIHdyaXRlIGBQb2ludGVlKG0pYCBpbnN0ZWFkIG9mCi0KLWBgYAotICBBbGxPZihOb3RO
dWxsKCksIFBvaW50ZWUobSkpCi1gYGAKLQotd2l0aG91dCB3b3JyeWluZyB0aGF0IGEgYE5VTExg
IHBvaW50ZXIgd2lsbCBjcmFzaCB5b3VyIHRlc3QuCi0KLUFsc28sIGRpZCB3ZSB0ZWxsIHlvdSB0
aGF0IGBQb2ludGVlKClgIHdvcmtzIHdpdGggYm90aCByYXcgcG9pbnRlcnMKLSoqYW5kKiogc21h
cnQgcG9pbnRlcnMgKGBsaW5rZWRfcHRyYCwgYHNoYXJlZF9wdHJgLCBgc2NvcGVkX3B0cmAsIGFu
ZAotZXRjKT8KLQotV2hhdCBpZiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gcG9pbnRlcj8gWW91IGd1
ZXNzZWQgaXQgLSB5b3UgY2FuIHVzZQotbmVzdGVkIGBQb2ludGVlKClgIHRvIHByb2JlIGRlZXBl
ciBpbnNpZGUgdGhlIHZhbHVlLiBGb3IgZXhhbXBsZSwKLWBQb2ludGVlKFBvaW50ZWUoTHQoMykp
KWAgbWF0Y2hlcyBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSBwb2ludGVyCi10aGF0IHBvaW50
cyB0byBhIG51bWJlciBsZXNzIHRoYW4gMyAod2hhdCBhIG1vdXRoZnVsLi4uKS4KLQotIyMgVGVz
dGluZyBhIENlcnRhaW4gUHJvcGVydHkgb2YgYW4gT2JqZWN0ICMjCi0KLVNvbWV0aW1lcyB5b3Ug
d2FudCB0byBzcGVjaWZ5IHRoYXQgYW4gb2JqZWN0IGFyZ3VtZW50IGhhcyBhIGNlcnRhaW4KLXBy
b3BlcnR5LCBidXQgdGhlcmUgaXMgbm8gZXhpc3RpbmcgbWF0Y2hlciB0aGF0IGRvZXMgdGhpcy4g
SWYgeW91IHdhbnQKLWdvb2QgZXJyb3IgbWVzc2FnZXMsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0
Y2hlci4gSWYgeW91IHdhbnQgdG8gZG8gaXQKLXF1aWNrIGFuZCBkaXJ0eSwgeW91IGNvdWxkIGdl
dCBhd2F5IHdpdGggd3JpdGluZyBhbiBvcmRpbmFyeSBmdW5jdGlvbi4KLQotTGV0J3Mgc2F5IHlv
dSBoYXZlIGEgbW9jayBmdW5jdGlvbiB0aGF0IHRha2VzIGFuIG9iamVjdCBvZiB0eXBlIGBGb29g
LAotd2hpY2ggaGFzIGFuIGBpbnQgYmFyKClgIG1ldGhvZCBhbmQgYW4gYGludCBiYXooKWAgbWV0
aG9kLCBhbmQgeW91Ci13YW50IHRvIGNvbnN0cmFpbiB0aGF0IHRoZSBhcmd1bWVudCdzIGBiYXIo
KWAgdmFsdWUgcGx1cyBpdHMgYGJheigpYAotdmFsdWUgaXMgYSBnaXZlbiBudW1iZXIuIEhlcmUn
cyBob3cgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIGRvIGl0OgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRM
aXN0ZW5lcjsKLQotY2xhc3MgQmFyUGx1c0JhekVxTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50
ZXJmYWNlPGNvbnN0IEZvbyY+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEJhclBsdXNCYXpFcU1h
dGNoZXIoaW50IGV4cGVjdGVkX3N1bSkKLSAgICAgIDogZXhwZWN0ZWRfc3VtXyhleHBlY3RlZF9z
dW0pIHt9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBGb28mIGZvbywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0
ZW5lcikgY29uc3QgewotICAgIHJldHVybiAoZm9vLmJhcigpICsgZm9vLmJheigpKSA9PSBleHBl
Y3RlZF9zdW1fOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJiYXIoKSArIGJheigpIGVxdWFscyAiIDw8IGV4
cGVjdGVkX3N1bV87Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBkb2Vz
IG5vdCBlcXVhbCAiIDw8IGV4cGVjdGVkX3N1bV87Ci0gIH0KLSBwcml2YXRlOgotICBjb25zdCBp
bnQgZXhwZWN0ZWRfc3VtXzsKLX07Ci0KLWlubGluZSBNYXRjaGVyPGNvbnN0IEZvbyY+IEJhclBs
dXNCYXpFcShpbnQgZXhwZWN0ZWRfc3VtKSB7Ci0gIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgQmFy
UGx1c0JhekVxTWF0Y2hlcihleHBlY3RlZF9zdW0pKTsKLX0KLQotLi4uCi0KLSAgRVhQRUNUX0NB
TEwoLi4uLCBEb1RoaXMoQmFyUGx1c0JhekVxKDUpKSkuLi47Ci1gYGAKLQotIyMgTWF0Y2hpbmcg
Q29udGFpbmVycyAjIwotCi1Tb21ldGltZXMgYW4gU1RMIGNvbnRhaW5lciAoZS5nLiBsaXN0LCB2
ZWN0b3IsIG1hcCwgLi4uKSBpcyBwYXNzZWQgdG8KLWEgbW9jayBmdW5jdGlvbiBhbmQgeW91IG1h
eSB3YW50IHRvIHZhbGlkYXRlIGl0LiBTaW5jZSBtb3N0IFNUTAotY29udGFpbmVycyBzdXBwb3J0
IHRoZSBgPT1gIG9wZXJhdG9yLCB5b3UgY2FuIHdyaXRlCi1gRXEoZXhwZWN0ZWRfY29udGFpbmVy
KWAgb3Igc2ltcGx5IGBleHBlY3RlZF9jb250YWluZXJgIHRvIG1hdGNoIGEKLWNvbnRhaW5lciBl
eGFjdGx5LgotCi1Tb21ldGltZXMsIHRob3VnaCwgeW91IG1heSB3YW50IHRvIGJlIG1vcmUgZmxl
eGlibGUgKGZvciBleGFtcGxlLCB0aGUKLWZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBleGFjdCBt
YXRjaCwgYnV0IHRoZSBzZWNvbmQgZWxlbWVudCBjYW4gYmUKLWFueSBwb3NpdGl2ZSBudW1iZXIs
IGFuZCBzbyBvbikuIEFsc28sIGNvbnRhaW5lcnMgdXNlZCBpbiB0ZXN0cyBvZnRlbgotaGF2ZSBh
IHNtYWxsIG51bWJlciBvZiBlbGVtZW50cywgYW5kIGhhdmluZyB0byBkZWZpbmUgdGhlIGV4cGVj
dGVkCi1jb250YWluZXIgb3V0LW9mLWxpbmUgaXMgYSBiaXQgb2YgYSBoYXNzbGUuCi0KLVlvdSBj
YW4gdXNlIHRoZSBgRWxlbWVudHNBcmUoKWAgbWF0Y2hlciBpbiBzdWNoIGNhc2VzOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2lu
ZyA6OnRlc3Rpbmc6Okd0OwotLi4uCi0KLSAgTU9DS19NRVRIT0QxKEZvbywgdm9pZChjb25zdCB2
ZWN0b3I8aW50PiYgbnVtYmVycykpOwotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVs
ZW1lbnRzQXJlKDEsIEd0KDApLCBfLCA1KSkpOwotYGBgCi0KLVRoZSBhYm92ZSBtYXRjaGVyIHNh
eXMgdGhhdCB0aGUgY29udGFpbmVyIG11c3QgaGF2ZSA0IGVsZW1lbnRzLCB3aGljaAotbXVzdCBi
ZSAxLCBncmVhdGVyIHRoYW4gMCwgYW55dGhpbmcsIGFuZCA1IHJlc3BlY3RpdmVseS4KLQotYEVs
ZW1lbnRzQXJlKClgIGlzIG92ZXJsb2FkZWQgdG8gdGFrZSAwIHRvIDEwIGFyZ3VtZW50cy4gSWYg
bW9yZSBhcmUKLW5lZWRlZCwgeW91IGNhbiBwbGFjZSB0aGVtIGluIGEgQy1zdHlsZSBhcnJheSBh
bmQgdXNlCi1gRWxlbWVudHNBcmVBcnJheSgpYCBpbnN0ZWFkOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6RWxlbWVudHNBcmVBcnJheTsKLS4uLgotCi0gIC8vIEVsZW1lbnRzQXJlQXJyYXkgYWNj
ZXB0cyBhbiBhcnJheSBvZiBlbGVtZW50IHZhbHVlcy4KLSAgY29uc3QgaW50IGV4cGVjdGVkX3Zl
Y3RvcjFbXSA9IHsgMSwgNSwgMiwgNCwgLi4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhF
bGVtZW50c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjEpKSk7Ci0KLSAgLy8gT3IsIGFuIGFycmF5
IG9mIGVsZW1lbnQgbWF0Y2hlcnMuCi0gIE1hdGNoZXI8aW50PiBleHBlY3RlZF92ZWN0b3IyID0g
eyAxLCBHdCgyKSwgXywgMywgLi4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50
c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjIpKSk7Ci1gYGAKLQotSW4gY2FzZSB0aGUgYXJyYXkg
bmVlZHMgdG8gYmUgZHluYW1pY2FsbHkgY3JlYXRlZCAoYW5kIHRoZXJlZm9yZSB0aGUKLWFycmF5
IHNpemUgY2Fubm90IGJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlciksIHlvdSBjYW4gZ2l2ZQot
YEVsZW1lbnRzQXJlQXJyYXkoKWAgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBzcGVjaWZ5IHRo
ZSBhcnJheSBzaXplOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsK
LS4uLgotICBpbnQqIGNvbnN0IGV4cGVjdGVkX3ZlY3RvcjMgPSBuZXcgaW50W2NvdW50XTsKLSAg
Li4uIGZpbGwgZXhwZWN0ZWRfdmVjdG9yMyB3aXRoIHZhbHVlcyAuLi4KLSAgRVhQRUNUX0NBTEwo
bW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMywgY291bnQpKSk7Ci1g
YGAKLQotKipUaXBzOioqCi0KLSAgKiBgRWxlbWVudEFyZSooKWAgd29ya3Mgd2l0aCBfYW55XyBj
b250YWluZXIgdGhhdCBpbXBsZW1lbnRzIHRoZSBTVEwgaXRlcmF0b3IgY29uY2VwdCAoaS5lLiBp
dCBoYXMgYSBgY29uc3RfaXRlcmF0b3JgIHR5cGUgYW5kIHN1cHBvcnRzIGBiZWdpbigpL2VuZCgp
YCkgYW5kIHN1cHBvcnRzIGBzaXplKClgLCBub3QganVzdCB0aGUgb25lcyBkZWZpbmVkIGluIFNU
TC4gSXQgd2lsbCBldmVuIHdvcmsgd2l0aCBjb250YWluZXIgdHlwZXMgeWV0IHRvIGJlIHdyaXR0
ZW4gLSBhcyBsb25nIGFzIHRoZXkgZm9sbG93cyB0aGUgYWJvdmUgcGF0dGVybi4KLSAgKiBZb3Ug
Y2FuIHVzZSBuZXN0ZWQgYEVsZW1lbnRBcmUqKClgIHRvIG1hdGNoIG5lc3RlZCAobXVsdGktZGlt
ZW5zaW9uYWwpIGNvbnRhaW5lcnMuCi0gICogSWYgdGhlIGNvbnRhaW5lciBpcyBwYXNzZWQgYnkg
cG9pbnRlciBpbnN0ZWFkIG9mIGJ5IHJlZmVyZW5jZSwganVzdCB3cml0ZSBgUG9pbnRlZShFbGVt
ZW50c0FyZSooLi4uKSlgLgotICAqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBfbWF0dGVyc18gZm9y
IGBFbGVtZW50c0FyZSooKWAuIFRoZXJlZm9yZSBkb24ndCB1c2UgaXQgd2l0aCBjb250YWluZXJz
IHdob3NlIGVsZW1lbnQgb3JkZXIgaXMgdW5kZWZpbmVkIChlLmcuIGBoYXNoX21hcGApLgotCi0j
IyBTaGFyaW5nIE1hdGNoZXJzICMjCi0KLVVuZGVyIHRoZSBob29kLCBhIEdvb2dsZSBNb2NrIG1h
dGNoZXIgb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlciB0bwotYSByZWYtY291bnRlZCBpbXBs
ZW1lbnRhdGlvbiBvYmplY3QuIENvcHlpbmcgbWF0Y2hlcnMgaXMgYWxsb3dlZCBhbmQKLXZlcnkg
ZWZmaWNpZW50LCBhcyBvbmx5IHRoZSBwb2ludGVyIGlzIGNvcGllZC4gV2hlbiB0aGUgbGFzdCBt
YXRjaGVyCi10aGF0IHJlZmVyZW5jZXMgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0
aGUgaW1wbGVtZW50YXRpb24KLW9iamVjdCB3aWxsIGJlIGRlbGV0ZWQuCi0KLVRoZXJlZm9yZSwg
aWYgeW91IGhhdmUgc29tZSBjb21wbGV4IG1hdGNoZXIgdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdh
aW4KLWFuZCBhZ2FpbiwgdGhlcmUgaXMgbm8gbmVlZCB0byBidWlsZCBpdCBldmVyeXRpbWUuIEp1
c3QgYXNzaWduIGl0IHRvIGEKLW1hdGNoZXIgdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxl
IHJlcGVhdGVkbHkhIEZvciBleGFtcGxlLAotCi1gYGAKLSAgTWF0Y2hlcjxpbnQ+IGluX3Jhbmdl
ID0gQWxsT2YoR3QoNSksIExlKDEwKSk7Ci0gIC4uLiB1c2UgaW5fcmFuZ2UgYXMgYSBtYXRjaGVy
IGluIG11bHRpcGxlIEVYUEVDVF9DQUxMcyAuLi4KLWBgYAotCi0jIFNldHRpbmcgRXhwZWN0YXRp
b25zICMKLQotIyMgSWdub3JpbmcgVW5pbnRlcmVzdGluZyBDYWxscyAjIwotCi1JZiB5b3UgYXJl
IG5vdCBpbnRlcmVzdGVkIGluIGhvdyBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwganVzdCBkb24n
dAotc2F5IGFueXRoaW5nIGFib3V0IGl0LiBJbiB0aGlzIGNhc2UsIGlmIHRoZSBtZXRob2QgaXMg
ZXZlciBjYWxsZWQsCi1Hb29nbGUgTW9jayB3aWxsIHBlcmZvcm0gaXRzIGRlZmF1bHQgYWN0aW9u
IHRvIGFsbG93IHRoZSB0ZXN0IHByb2dyYW0KLXRvIGNvbnRpbnVlLiBJZiB5b3UgYXJlIG5vdCBo
YXBweSB3aXRoIHRoZSBkZWZhdWx0IGFjdGlvbiB0YWtlbiBieQotR29vZ2xlIE1vY2ssIHlvdSBj
YW4gb3ZlcnJpZGUgaXQgdXNpbmcgYERlZmF1bHRWYWx1ZTxUPjo6U2V0KClgCi0oZGVzY3JpYmVk
IGxhdGVyIGluIHRoaXMgZG9jdW1lbnQpIG9yIGBPTl9DQUxMKClgLgotCi1QbGVhc2Ugbm90ZSB0
aGF0IG9uY2UgeW91IGV4cHJlc3NlZCBpbnRlcmVzdCBpbiBhIHBhcnRpY3VsYXIgbW9jawotbWV0
aG9kICh2aWEgYEVYUEVDVF9DQUxMKClgKSwgYWxsIGludm9jYXRpb25zIHRvIGl0IG11c3QgbWF0
Y2ggc29tZQotZXhwZWN0YXRpb24uIElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ1dCB0aGUg
YXJndW1lbnRzIGRvbid0IG1hdGNoCi1hbnkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCwgaXQg
d2lsbCBiZSBhbiBlcnJvci4KLQotIyMgRGlzYWxsb3dpbmcgVW5leHBlY3RlZCBDYWxscyAjIwot
Ci1JZiBhIG1vY2sgbWV0aG9kIHNob3VsZG4ndCBiZSBjYWxsZWQgYXQgYWxsLCBleHBsaWNpdGx5
IHNheSBzbzoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoXykpCi0gICAgICAuVGltZXMoMCk7Ci1gYGAKLQotSWYgc29tZSBjYWxscyB0byB0
aGUgbWV0aG9kIGFyZSBhbGxvd2VkLCBidXQgdGhlIHJlc3QgYXJlIG5vdCwganVzdAotbGlzdCBh
bGwgdGhlIGV4cGVjdGVkIGNhbGxzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVy
OwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcig1KSk7
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKEd0KDEwKSkpCi0gICAgICAuVGltZXMoQW55TnVtYmVy
KCkpOwotYGBgCi0KLUEgY2FsbCB0byBgZm9vLkJhcigpYCB0aGF0IGRvZXNuJ3QgbWF0Y2ggYW55
IG9mIHRoZSBgRVhQRUNUX0NBTEwoKWAKLXN0YXRlbWVudHMgd2lsbCBiZSBhbiBlcnJvci4KLQot
IyMgRXhwZWN0aW5nIE9yZGVyZWQgQ2FsbHMgIyMKLQotQWx0aG91Z2ggYW4gYEVYUEVDVF9DQUxM
KClgIHN0YXRlbWVudCBkZWZpbmVkIGVhcmxpZXIgdGFrZXMgcHJlY2VkZW5jZQotd2hlbiBHb29n
bGUgTW9jayB0cmllcyB0byBtYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBleHBlY3RhdGlv
biwKLWJ5IGRlZmF1bHQgY2FsbHMgZG9uJ3QgaGF2ZSB0byBoYXBwZW4gaW4gdGhlIG9yZGVyIGBF
WFBFQ1RfQ0FMTCgpYAotc3RhdGVtZW50cyBhcmUgd3JpdHRlbi4gRm9yIGV4YW1wbGUsIGlmIHRo
ZSBhcmd1bWVudHMgbWF0Y2ggdGhlCi1tYXRjaGVycyBpbiB0aGUgdGhpcmQgYEVYUEVDVF9DQUxM
KClgLCBidXQgbm90IHRob3NlIGluIHRoZSBmaXJzdCB0d28sCi10aGVuIHRoZSB0aGlyZCBleHBl
Y3RhdGlvbiB3aWxsIGJlIHVzZWQuCi0KLUlmIHlvdSB3b3VsZCByYXRoZXIgaGF2ZSBhbGwgY2Fs
bHMgb2NjdXIgaW4gdGhlIG9yZGVyIG9mIHRoZQotZXhwZWN0YXRpb25zLCBwdXQgdGhlIGBFWFBF
Q1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGluIGEgYmxvY2sgd2hlcmUgeW91Ci1kZWZpbmUgYSB2YXJp
YWJsZSBvZiB0eXBlIGBJblNlcXVlbmNlYDoKLQotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6XzsK
LSAgdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotCi0gIHsKLSAgICBJblNlcXVlbmNlIHM7
Ci0KLSAgICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSk7Ci0gICAgRVhQRUNUX0NBTEwoYmFy
LCBEb1RoYXQoXykpCi0gICAgICAgIC5UaW1lcygyKTsKLSAgICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcyg2KSk7Ci0gIH0KLWBgYAotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIGV4cGVjdCBhIGNhbGwg
dG8gYGZvby5Eb1RoaXMoNSlgLCBmb2xsb3dlZCBieSB0d28KLWNhbGxzIHRvIGBiYXIuRG9UaGF0
KClgIHdoZXJlIHRoZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcsIHdoaWNoIGFyZQotaW4gdHVy
biBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNilgLiBJZiBhIGNhbGwgb2NjdXJy
ZWQKLW91dC1vZi1vcmRlciwgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IuCi0KLSMj
IEV4cGVjdGluZyBQYXJ0aWFsbHkgT3JkZXJlZCBDYWxscyAjIwotCi1Tb21ldGltZXMgcmVxdWly
aW5nIGV2ZXJ5dGhpbmcgdG8gb2NjdXIgaW4gYSBwcmVkZXRlcm1pbmVkIG9yZGVyIGNhbgotbGVh
ZCB0byBicml0dGxlIHRlc3RzLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGNhcmUgYWJvdXQgYEFgIG9j
Y3VycmluZwotYmVmb3JlIGJvdGggYEJgIGFuZCBgQ2AsIGJ1dCBhcmVuJ3QgaW50ZXJlc3RlZCBp
biB0aGUgcmVsYXRpdmUgb3JkZXIKLW9mIGBCYCBhbmQgYENgLiBJbiB0aGlzIGNhc2UsIHRoZSB0
ZXN0IHNob3VsZCByZWZsZWN0IG91ciByZWFsIGludGVudCwKLWluc3RlYWQgb2YgYmVpbmcgb3Zl
cmx5IGNvbnN0cmFpbmluZy4KLQotR29vZ2xlIE1vY2sgYWxsb3dzIHlvdSB0byBpbXBvc2UgYW4g
YXJiaXRyYXJ5IERBRyAoZGlyZWN0ZWQgYWN5Y2xpYwotZ3JhcGgpIG9uIHRoZSBjYWxscy4gT25l
IHdheSB0byBleHByZXNzIHRoZSBEQUcgaXMgdG8gdXNlIHRoZQotW0FmdGVyXShWMV81X0NoZWF0
U2hlZXQjVGhlX0FmdGVyX0NsYXVzZS5tZCkgY2xhdXNlIG9mIGBFWFBFQ1RfQ0FMTGAuCi0KLUFu
b3RoZXIgd2F5IGlzIHZpYSB0aGUgYEluU2VxdWVuY2UoKWAgY2xhdXNlIChub3QgdGhlIHNhbWUg
YXMgdGhlCi1gSW5TZXF1ZW5jZWAgY2xhc3MpLCB3aGljaCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2Nr
IDIuIEl0J3MgbGVzcwotZmxleGlibGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmll
bnQgd2hlbiB5b3UgaGF2ZSBsb25nIGNoYWlucwotb2Ygc2VxdWVudGlhbCBjYWxscywgYXMgaXQg
ZG9lc24ndCByZXF1aXJlIHlvdSB0byBjb21lIHVwIHdpdGgKLWRpZmZlcmVudCBuYW1lcyBmb3Ig
dGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgY2hhaW5zLiAgSGVyZSdzIGhvdyBpdAotd29ya3M6Ci0K
LUlmIHdlIHZpZXcgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudHMgYXMgbm9kZXMgaW4gYSBncmFw
aCwgYW5kIGFkZCBhbgotZWRnZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0
IG9jY3VyIGJlZm9yZSBCLCB3ZSBjYW4gZ2V0Ci1hIERBRy4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1
ZW5jZSIgdG8gbWVhbiBhIGRpcmVjdGVkIHBhdGggaW4gdGhpcwotREFHLiBOb3csIGlmIHdlIGRl
Y29tcG9zZSB0aGUgREFHIGludG8gc2VxdWVuY2VzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdwotd2hp
Y2ggc2VxdWVuY2VzIGVhY2ggYEVYUEVDVF9DQUxMKClgIGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8g
YmUgYWJsZSB0bwotcmVjb25zdHJ1Y3QgdGhlIG9yZ2luYWwgREFHLgotCi1TbywgdG8gc3BlY2lm
eSB0aGUgcGFydGlhbCBvcmRlciBvbiB0aGUgZXhwZWN0YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdv
Ci10aGluZ3M6IGZpcnN0IHRvIGRlZmluZSBzb21lIGBTZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRo
ZW4gZm9yIGVhY2gKLWBFWFBFQ1RfQ0FMTCgpYCBzYXkgd2hpY2ggYFNlcXVlbmNlYCBvYmplY3Rz
IGl0IGlzIHBhcnQKLW9mLiBFeHBlY3RhdGlvbnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBv
Y2N1ciBpbiB0aGUgb3JkZXIgdGhleSBhcmUKLXdyaXR0ZW4uIEZvciBleGFtcGxlLAotCi1gYGAK
LSAgdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLQotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAg
RVhQRUNUX0NBTEwoZm9vLCBBKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBF
Q1RfQ0FMTChiYXIsIEIoKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwo
YmFyLCBDKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMik7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRCgp
KQotICAgICAgLkluU2VxdWVuY2UoczIpOwotYGBgCi0KLXNwZWNpZmllcyB0aGUgZm9sbG93aW5n
IERBRyAod2hlcmUgYHMxYCBpcyBgQSAtPiBCYCwgYW5kIGBzMmAgaXMgYEEgLT4KLUMgLT4gRGAp
OgotCi1gYGAKLSAgICAgICArLS0tPiBCCi0gICAgICAgfAotICBBIC0tLXwKLSAgICAgICB8Ci0g
ICAgICAgKy0tLT4gQyAtLS0+IEQKLWBgYAotCi1UaGlzIG1lYW5zIHRoYXQgQSBtdXN0IG9jY3Vy
IGJlZm9yZSBCIGFuZCBDLCBhbmQgQyBtdXN0IG9jY3VyIGJlZm9yZQotRC4gVGhlcmUncyBubyBy
ZXN0cmljdGlvbiBhYm91dCB0aGUgb3JkZXIgb3RoZXIgdGhhbiB0aGVzZS4KLQotIyMgQ29udHJv
bGxpbmcgV2hlbiBhbiBFeHBlY3RhdGlvbiBSZXRpcmVzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhv
ZCBpcyBjYWxsZWQsIEdvb2dsZSBNb2NrIG9ubHkgY29uc2lkZXIgZXhwZWN0YXRpb25zCi10aGF0
IGFyZSBzdGlsbCBhY3RpdmUuIEFuIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQs
IGFuZAotYmVjb21lcyBpbmFjdGl2ZSAoYWthIF9yZXRpcmVzXykgd2hlbiBhIGNhbGwgdGhhdCBo
YXMgdG8gb2NjdXIgbGF0ZXIKLWhhcyBvY2N1cnJlZC4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAot
ICB1c2luZyA6OnRlc3Rpbmc6Ol87Ci0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAg
U2VxdWVuY2UgczEsIHMyOwotCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJG
aWxlIHRvbyBsYXJnZS4iKSkgICAgIC8vICMxCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0g
ICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5H
LCBfLCAiRGF0YSBzZXQgaXMgZW1wdHkuIikpICAvLyAjMgotICAgICAgLkluU2VxdWVuY2UoczEp
OwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiVXNlciBub3QgZm91bmQuIikp
ICAgICAvLyAjMwotICAgICAgLkluU2VxdWVuY2UoczIpOwotYGBgCi0KLWFzIHNvb24gYXMgZWl0
aGVyICMyIG9yICMzIGlzIG1hdGNoZWQsICMxIHdpbGwgcmV0aXJlLiBJZiBhIHdhcm5pbmcKLWAi
RmlsZSB0b28gbGFyZ2UuImAgaXMgbG9nZ2VkIGFmdGVyIHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJy
b3IuCi0KLU5vdGUgdGhhdCBhbiBleHBlY3RhdGlvbiBkb2Vzbid0IHJldGlyZSBhdXRvbWF0aWNh
bGx5IHdoZW4gaXQncwotc2F0dXJhdGVkLiBGb3IgZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAg
ICAgICAgICAgICAgICAgIC8vICMxCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8s
ICJGaWxlIHRvbyBsYXJnZS4iKSk7ICAvLyAjMgotYGBgCi0KLXNheXMgdGhhdCB0aGVyZSB3aWxs
IGJlIGV4YWN0bHkgb25lIHdhcm5pbmcgd2l0aCB0aGUgbWVzc2FnZSBgIkZpbGUKLXRvbyBsYXJn
ZS4iYC4gSWYgdGhlIHNlY29uZCB3YXJuaW5nIGNvbnRhaW5zIHRoaXMgbWVzc2FnZSB0b28sICMy
IHdpbGwKLW1hdGNoIGFnYWluIGFuZCByZXN1bHQgaW4gYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQg
ZXJyb3IuCi0KLUlmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4
cGVjdGF0aW9uIHRvIHJldGlyZSBhcwotc29vbiBhcyBpdCBiZWNvbWVzIHNhdHVyYXRlZDoKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FS
TklORywgXywgXykpOyAgICAgICAgICAgICAgICAgLy8gIzEKLSAgRVhQRUNUX0NBTEwobG9nLCBM
b2coV0FSTklORywgXywgIkZpbGUgdG9vIGxhcmdlLiIpKSAgLy8gIzIKLSAgICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7Ci1gYGAKLQotSGVyZSAjMiBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNv
IGlmIHlvdSBoYXZlIHR3byB3YXJuaW5ncyB3aXRoIHRoZQotbWVzc2FnZSBgIkZpbGUgdG9vIGxh
cmdlLiJgLCB0aGUgZmlyc3Qgd2lsbCBtYXRjaCAjMiBhbmQgdGhlIHNlY29uZAotd2lsbCBtYXRj
aCAjMSAtIHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IuCi0KLSMgVXNpbmcgQWN0aW9ucyAjCi0KLSMj
IFJldHVybmluZyBSZWZlcmVuY2VzIGZyb20gTW9jayBNZXRob2RzICMjCi0KLUlmIGEgbW9jayBm
dW5jdGlvbidzIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3UgbmVlZCB0byB1c2UKLWBS
ZXR1cm5SZWYoKWAgaW5zdGVhZCBvZiBgUmV0dXJuKClgIHRvIHJldHVybiBhIHJlc3VsdDoKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLX07Ci0u
Li4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRC
YXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyKSk7Ci1gYGAKLQotIyMgQ29tYmlu
aW5nIEFjdGlvbnMgIyMKLQotV2FudCB0byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBm
dW5jdGlvbiBpcyBjYWxsZWQ/IFRoYXQncwotZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBk
byBzZXF1ZW5jZSBvZiBhY3Rpb25zIGV2ZXJ5IHRpbWUuIE9ubHkKLXRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIGxhc3QgYWN0aW9uIGluIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCi0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpEb0FsbDsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewot
IHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChpbnQgbikpOwotfTsKLS4uLgotCi0g
IEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8x
LAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl8yLAotICAgICAgICAgICAgICAgICAgICAg
IC4uLgotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9uKSk7Ci1gYGAKLQotIyMgTW9ja2lu
ZyBTaWRlIEVmZmVjdHMgIyMKLQotU29tZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZl
Y3Qgbm90IHZpYSByZXR1cm5pbmcgYSB2YWx1ZSBidXQKLXZpYSBzaWRlIGVmZmVjdHMuIEZvciBl
eGFtcGxlLCBpdCBtYXkgY2hhbmdlIHNvbWUgZ2xvYmFsIHN0YXRlIG9yCi1tb2RpZnkgYW4gb3V0
cHV0IGFyZ3VtZW50LiBUbyBtb2NrIHNpZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCi1k
ZWZpbmUgeW91ciBvd24gYWN0aW9uIGJ5IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25J
bnRlcmZhY2VgLgotCi1JZiBhbGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1
dCBhcmd1bWVudCwgdGhlIGJ1aWx0LWluCi1gU2V0QXJndW1lbnRQb2ludGVlKClgIGFjdGlvbiBp
cyBjb252ZW5pZW50OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6U2V0QXJndW1lbnRQb2ludGVl
OwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1P
Q0tfTUVUSE9EMihNdXRhdGUsIHZvaWQoYm9vbCBtdXRhdGUsIGludCogdmFsdWUpKTsKLSAgLi4u
Ci19OwotLi4uCi0KLSAgTW9ja011dGF0b3IgbXV0YXRvcjsKLSAgRVhQRUNUX0NBTEwobXV0YXRv
ciwgTXV0YXRlKHRydWUsIF8pKQotICAgICAgLldpbGxPbmNlKFNldEFyZ3VtZW50UG9pbnRlZTwx
Pig1KSk7Ci1gYGAKLQotSW4gdGhpcyBleGFtcGxlLCB3aGVuIGBtdXRhdG9yLk11dGF0ZSgpYCBp
cyBjYWxsZWQsIHdlIHdpbGwgYXNzaWduIDUKLXRvIHRoZSBgaW50YCB2YXJpYWJsZSBwb2ludGVk
IHRvIGJ5IGFyZ3VtZW50ICMxCi0oMC1iYXNlZCkuCi0KLWBTZXRBcmd1bWVudFBvaW50ZWUoKWAg
Y29udmVuaWVudGx5IG1ha2VzIGFuIGludGVybmFsIGNvcHkgb2YgdGhlCi12YWx1ZSB5b3UgcGFz
cyB0byBpdCwgcmVtb3ZpbmcgdGhlIG5lZWQgdG8ga2VlcCB0aGUgdmFsdWUgaW4gc2NvcGUgYW5k
Ci1hbGl2ZS4gVGhlIGltcGxpY2F0aW9uIGhvd2V2ZXIgaXMgdGhhdCB0aGUgdmFsdWUgbXVzdCBo
YXZlIGEgY29weQotY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0KLUlmIHRo
ZSBtb2NrIG1ldGhvZCBhbHNvIG5lZWRzIHRvIHJldHVybiBhIHZhbHVlIGFzIHdlbGwsIHlvdSBj
YW4gY2hhaW4KLWBTZXRBcmd1bWVudFBvaW50ZWUoKWAgd2l0aCBgUmV0dXJuKClgIHVzaW5nIGBE
b0FsbCgpYDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlJl
dHVybjsKLXVzaW5nIDo6dGVzdGluZzo6U2V0QXJndW1lbnRQb2ludGVlOwotCi1jbGFzcyBNb2Nr
TXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhP
RDEoTXV0YXRlSW50LCBib29sKGludCogdmFsdWUpKTsKLX07Ci0uLi4KLQotICBNb2NrTXV0YXRv
ciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGVJbnQoXykpCi0gICAgICAu
V2lsbE9uY2UoRG9BbGwoU2V0QXJndW1lbnRQb2ludGVlPDA+KDUpLAotICAgICAgICAgICAgICAg
ICAgICAgIFJldHVybih0cnVlKSkpOwotYGBgCi0KLUlmIHRoZSBvdXRwdXQgYXJndW1lbnQgaXMg
YW4gYXJyYXksIHVzZSB0aGUKLWBTZXRBcnJheUFyZ3VtZW50PE4+KGZpcnN0LCBsYXN0KWAgYWN0
aW9uIGluc3RlYWQuIEl0IGNvcGllcyB0aGUKLWVsZW1lbnRzIGluIHNvdXJjZSByYW5nZSBgW2Zp
cnN0LCBsYXN0KWAgdG8gdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkKLXRoZSBgTmAtdGggKDAtYmFz
ZWQpIGFyZ3VtZW50OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6
dGVzdGluZzo6U2V0QXJyYXlBcmd1bWVudDsKLQotY2xhc3MgTW9ja0FycmF5TXV0YXRvciA6IHB1
YmxpYyBBcnJheU11dGF0b3IgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9p
ZChpbnQqIHZhbHVlcywgaW50IG51bV92YWx1ZXMpKTsKLSAgLi4uCi19OwotLi4uCi0KLSAgTW9j
a0FycmF5TXV0YXRvciBtdXRhdG9yOwotICBpbnQgdmFsdWVzWzVdID0geyAxLCAyLCAzLCA0LCA1
IH07Ci0gIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11dGF0ZShOb3ROdWxsKCksIDUpKQotICAgICAg
LldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4odmFsdWVzLCB2YWx1ZXMgKyA1KSk7Ci1gYGAK
LQotVGhpcyBhbHNvIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIG91dHB1dCBpdGVyYXRv
cjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlNlQXJyYXlB
cmd1bWVudDsKLQotY2xhc3MgTW9ja1JvbG9kZXggOiBwdWJsaWMgUm9sb2RleCB7Ci0gcHVibGlj
OgotICBNT0NLX01FVEhPRDEoR2V0TmFtZXMsIHZvaWQoc3RkOjpiYWNrX2luc2VydF9pdGVyYXRv
cjx2ZWN0b3I8c3RyaW5nPiA+KSk7Ci0gIC4uLgotfTsKLS4uLgotCi0gIE1vY2tSb2xvZGV4IHJv
bG9kZXg7Ci0gIHZlY3RvcjxzdHJpbmc+IG5hbWVzOwotICBuYW1lcy5wdXNoX2JhY2soIkdlb3Jn
ZSIpOwotICBuYW1lcy5wdXNoX2JhY2soIkpvaG4iKTsKLSAgbmFtZXMucHVzaF9iYWNrKCJUaG9t
YXMiKTsKLSAgRVhQRUNUX0NBTEwocm9sb2RleCwgR2V0TmFtZXMoXykpCi0gICAgICAuV2lsbE9u
Y2UoU2V0QXJyYXlBcmd1bWVudDwwPihuYW1lcy5iZWdpbigpLCBuYW1lcy5lbmQoKSkpOwotYGBg
Ci0KLSMjIENoYW5naW5nIGEgTW9jayBPYmplY3QncyBCZWhhdmlvciBCYXNlZCBvbiB0aGUgU3Rh
dGUgIyMKLQotSWYgeW91IGV4cGVjdCBhIGNhbGwgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBh
IG1vY2sgb2JqZWN0LCB5b3UgY2FuIHVzZSBgOjp0ZXN0aW5nOjpJblNlcXVlbmNlYCB0byBzcGVj
aWZ5IGRpZmZlcmVudCBiZWhhdmlvcnMgYmVmb3JlIGFuZCBhZnRlciB0aGUgY2FsbDoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsK
LQotLi4uCi0gIHsKLSAgICBJblNlcXVlbmNlIHNlcTsKLSAgICBFWFBFQ1RfQ0FMTChteV9tb2Nr
LCBJc0RpcnR5KCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4odHJ1ZSkpOwotICAg
IEVYUEVDVF9DQUxMKG15X21vY2ssIEZsdXNoKCkpOwotICAgIEVYUEVDVF9DQUxMKG15X21vY2ss
IElzRGlydHkoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihmYWxzZSkpOwotICB9
Ci0gIG15X21vY2suRmx1c2hJZkRpcnR5KCk7Ci1gYGAKLQotVGhpcyBtYWtlcyBgbXlfbW9jay5J
c0RpcnR5KClgIHJldHVybiBgdHJ1ZWAgYmVmb3JlIGBteV9tb2NrLkZsdXNoKClgIGlzIGNhbGxl
ZCBhbmQgcmV0dXJuIGBmYWxzZWAgYWZ0ZXJ3YXJkcy4KLQotSWYgdGhlIGJlaGF2aW9yIGNoYW5n
ZSBpcyBtb3JlIGNvbXBsZXgsIHlvdSBjYW4gc3RvcmUgdGhlIGVmZmVjdHMgaW4gYSB2YXJpYWJs
ZSBhbmQgbWFrZSBhIG1vY2sgbWV0aG9kIGdldCBpdHMgcmV0dXJuIHZhbHVlIGZyb20gdGhhdCB2
YXJpYWJsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlNh
dmVBcmc7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotQUNUSU9OX1AoUmV0dXJuUG9pbnRl
ZSwgcCkgeyByZXR1cm4gKnA7IH0KLS4uLgotICBpbnQgcHJldmlvdXNfdmFsdWUgPSAwOwotICBF
WFBFQ1RfQ0FMTChteV9tb2NrLCBHZXRQcmV2VmFsdWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRs
eShSZXR1cm5Qb2ludGVlKCZwcmV2aW91c192YWx1ZSkpOwotICBFWFBFQ1RfQ0FMTChteV9tb2Nr
LCBVcGRhdGVWYWx1ZShfKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShTYXZlQXJnPDA+KCZwcmV2
aW91c192YWx1ZSkpOwotICBteV9tb2NrLkRvU29tZXRoaW5nVG9VcGRhdGVWYWx1ZSgpOwotYGBg
Ci0KLUhlcmUgYG15X21vY2suR2V0UHJldlZhbHVlKClgIHdpbGwgYWx3YXlzIHJldHVybiB0aGUg
YXJndW1lbnQgb2YgdGhlIGxhc3QgYFVwZGF0ZVZhbHVlKClgIGNhbGwuCi0KLSMjIFNldHRpbmcg
dGhlIERlZmF1bHQgVmFsdWUgZm9yIGEgUmV0dXJuIFR5cGUgIyMKLQotSWYgYSBtb2NrIG1ldGhv
ZCdzIHJldHVybiB0eXBlIGlzIGEgYnVpbHQtaW4gQysrIHR5cGUgb3IgcG9pbnRlciwgYnkKLWRl
ZmF1bHQgaXQgd2lsbCByZXR1cm4gMCB3aGVuIGludm9rZWQuIFlvdSBvbmx5IG5lZWQgdG8gc3Bl
Y2lmeSBhbgotYWN0aW9uIGlmIHRoaXMgZGVmYXVsdCB2YWx1ZSBkb2Vzbid0IHdvcmsgZm9yIHlv
dS4KLQotU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgZGVmYXVsdCB2YWx1
ZSwgb3IgeW91IG1heSB3YW50Ci10byBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZXMg
R29vZ2xlIE1vY2sgZG9lc24ndCBrbm93Ci1hYm91dC4gWW91IGNhbiBkbyB0aGlzIHVzaW5nIHRo
ZSBgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWVgIGNsYXNzCi10ZW1wbGF0ZToKLQotYGBgCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAoQ2FsY3Vs
YXRlQmFyLCBCYXIoKSk7Ci19OwotLi4uCi0KLSAgQmFyIGRlZmF1bHRfYmFyOwotICAvLyBTZXRz
IHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBmb3IgdHlwZSBCYXIuCi0gIERlZmF1bHRWYWx1ZTxC
YXI+OjpTZXQoZGVmYXVsdF9iYXIpOwotCi0gIE1vY2tGb28gZm9vOwotCi0gIC8vIFdlIGRvbid0
IG5lZWQgdG8gc3BlY2lmeSBhbiBhY3Rpb24gaGVyZSwgYXMgdGhlIGRlZmF1bHQKLSAgLy8gcmV0
dXJuIHZhbHVlIHdvcmtzIGZvciB1cy4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxjdWxhdGVCYXIo
KSk7Ci0KLSAgZm9vLkNhbGN1bGF0ZUJhcigpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIGRlZmF1
bHRfYmFyLgotCi0gIC8vIFVuc2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUuCi0gIERlZmF1
bHRWYWx1ZTxCYXI+OjpDbGVhcigpOwotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgY2hhbmdpbmcg
dGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgdHlwZSBjYW4gbWFrZSB5b3UKLXRlc3RzIGhhcmQgdG8g
dW5kZXJzdGFuZC4gV2UgcmVjb21tZW5kIHlvdSB0byB1c2UgdGhpcyBmZWF0dXJlCi1qdWRpY2lv
dXNseS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGBTZXQoKWAg
YW5kCi1gQ2xlYXIoKWAgY2FsbHMgYXJlIHJpZ2h0IG5leHQgdG8gdGhlIGNvZGUgdGhhdCB1c2Vz
IHlvdXIgbW9jay4KLQotIyMgU2V0dGluZyB0aGUgRGVmYXVsdCBBY3Rpb25zIGZvciBhIE1vY2sg
TWV0aG9kICMjCi0KLVlvdSd2ZSBsZWFybmVkIGhvdyB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFs
dWUgb2YgYSBnaXZlbgotdHlwZS4gSG93ZXZlciwgdGhpcyBtYXkgYmUgdG9vIGNvYXJzZSBmb3Ig
eW91ciBwdXJwb3NlOiBwZXJoYXBzIHlvdQotaGF2ZSB0d28gbW9jayBtZXRob2RzIHdpdGggdGhl
IHNhbWUgcmV0dXJuIHR5cGUgYW5kIHlvdSB3YW50IHRoZW0gdG8KLWhhdmUgZGlmZmVyZW50IGJl
aGF2aW9ycy4gVGhlIGBPTl9DQUxMKClgIG1hY3JvIGFsbG93cyB5b3UgdG8KLWN1c3RvbWl6ZSB5
b3VyIG1vY2sncyBiZWhhdmlvciBhdCB0aGUgbWV0aG9kIGxldmVsOgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0ZXN0aW5n
OjpHdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIE9OX0NBTEwoZm9vLCBTaWdu
KF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKC0xKSk7Ci0gIE9OX0NBTEwoZm9vLCBT
aWduKDApKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDApKTsKLSAgT05fQ0FMTChmb28s
IFNpZ24oR3QoMCkpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLQotICBFWFBF
Q1RfQ0FMTChmb28sIFNpZ24oXykpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gIGZv
by5TaWduKDUpOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAxLgotICBmb28uU2lnbigtOSk7ICAv
LyBUaGlzIHNob3VsZCByZXR1cm4gLTEuCi0gIGZvby5TaWduKDApOyAgIC8vIFRoaXMgc2hvdWxk
IHJldHVybiAwLgotYGBgCi0KLUFzIHlvdSBtYXkgaGF2ZSBndWVzc2VkLCB3aGVuIHRoZXJlIGFy
ZSBtb3JlIHRoYW4gb25lIGBPTl9DQUxMKClgCi1zdGF0ZW1lbnRzLCB0aGUgbmV3cyBvcmRlciB0
YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgb2xkZXIgb25lcy4gSW4KLW90aGVyIHdvcmRzLCB0aGUg
KipsYXN0Kiogb25lIHRoYXQgbWF0Y2hlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHdpbGwKLWJl
IHVzZWQuIFRoaXMgbWF0Y2hpbmcgb3JkZXIgYWxsb3dzIHlvdSB0byBzZXQgdXAgdGhlIGNvbW1v
biBiZWhhdmlvcgotaW4gYSBtb2NrIG9iamVjdCdzIGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZp
eHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kCi1zcGVjaWFsaXplIHRoZSBtb2NrJ3MgYmVoYXZpb3Ig
bGF0ZXIuCi0KLSMjIFVzaW5nIEZ1bmN0aW9ucy9NZXRob2RzL0Z1bmN0b3JzIGFzIEFjdGlvbnMg
IyMKLQotSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMgZG9uJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gZWFz
aWx5IHVzZSBhbiBleGlzdGluZwotZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciBhcyBhbiBh
Y3Rpb246Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZv
a2U7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVU
SE9EMihTdW0sIGludChpbnQgeCwgaW50IHkpKTsKLSAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2Is
IGJvb2woaW50IHgpKTsKLX07Ci0KLWludCBDYWxjdWxhdGVTdW0oaW50IHgsIGludCB5KSB7IHJl
dHVybiB4ICsgeTsgfQotCi1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgYm9vbCBDb21wbGV4
Sm9iKGludCB4KTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsK
LSAgRVhQRUNUX0NBTEwoZm9vLCBTdW0oXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKENh
bGN1bGF0ZVN1bSkpOwotICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0gICAgICAu
V2lsbE9uY2UoSW52b2tlKCZoZWxwZXIsICZIZWxwZXI6OkNvbXBsZXhKb2IpKTsKLQotICBmb28u
U3VtKDUsIDYpOyAgICAgICAvLyBJbnZva2VzIENhbGN1bGF0ZVN1bSg1LCA2KS4KLSAgZm9vLkNv
bXBsZXhKb2IoMTApOyAgLy8gSW52b2tlcyBoZWxwZXIuQ29tcGxleEpvYigxMCk7Ci1gYGAKLQot
VGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGV0
YyBtdXN0IGJlCi1fY29tcGF0aWJsZV8gd2l0aCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uLCBtZWFuaW5nIHRoYXQgdGhlCi1sYXR0ZXIncyBhcmd1bWVudHMgY2FuIGJlIGltcGxp
Y2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCi1hcmd1bWVudHMgb2YgdGhlIGZv
cm1lciwgYW5kIHRoZSBmb3JtZXIncyByZXR1cm4gdHlwZSBjYW4gYmUKLWltcGxpY2l0bHkgY29u
dmVydGVkIHRvIHRoYXQgb2YgdGhlIGxhdHRlci4gU28sIHlvdSBjYW4gaW52b2tlCi1zb21ldGhp
bmcgd2hvc2UgdHlwZSBpcyBfbm90XyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBtb2NrIGZ1bmN0
aW9uLAotYXMgbG9uZyBhcyBpdCdzIHNhZmUgdG8gZG8gc28gLSBuaWNlLCBodWg/Ci0KLSMjIElu
dm9raW5nIGEgRnVuY3Rpb24vTWV0aG9kL0Z1bmN0b3IgV2l0aG91dCBBcmd1bWVudHMgIyMKLQot
YEludm9rZSgpYCBpcyB2ZXJ5IHVzZWZ1bCBmb3IgZG9pbmcgYWN0aW9ucyB0aGF0IGFyZSBtb3Jl
IGNvbXBsZXguIEl0Ci1wYXNzZXMgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhl
IGZ1bmN0aW9uIG9yIGZ1bmN0b3IgYmVpbmcKLWludm9rZWQgc3VjaCB0aGF0IHRoZSBjYWxsZWUg
aGFzIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGNhbGwgdG8gd29yawotd2l0aC4gSWYgdGhlIGlu
dm9rZWQgZnVuY3Rpb24gaXMgbm90IGludGVyZXN0ZWQgaW4gc29tZSBvciBhbGwgb2YgdGhlCi1h
cmd1bWVudHMsIGl0IGNhbiBzaW1wbHkgaWdub3JlIHRoZW0uCi0KLVlldCwgYSBjb21tb24gcGF0
dGVybiBpcyB0aGF0IGEgdGVzdCBhdXRob3Igd2FudHMgdG8gaW52b2tlIGEgZnVuY3Rpb24KLXdp
dGhvdXQgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbi4gYEludm9rZSgpYCBhbGxv
d3MgaGVyIHRvCi1kbyB0aGF0IHVzaW5nIGEgd3JhcHBlciBmdW5jdGlvbiB0aGF0IHRocm93cyBh
d2F5IHRoZSBhcmd1bWVudHMgYmVmb3JlCi1pbnZva2luZyBhbiB1bmRlcmxpbmluZyBudWxsYXJ5
IGZ1bmN0aW9uLiBOZWVkbGVzcyB0byBzYXksIHRoaXMgY2FuIGJlCi10ZWRpb3VzIGFuZCBvYnNj
dXJlcyB0aGUgaW50ZW50IG9mIHRoZSB0ZXN0LgotCi1gSW52b2tlV2l0aG91dEFyZ3MoKWAgc29s
dmVzIHRoaXMgcHJvYmxlbS4gSXQncyBsaWtlIGBJbnZva2UoKWAgZXhjZXB0Ci10aGF0IGl0IGRv
ZXNuJ3QgcGFzcyB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50cyB0byB0aGUKLWNhbGxlZS4g
SGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
ewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IG4pKTsKLX07
Ci0KLWJvb2wgSm9iMSgpIHsgLi4uIH0KLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1Rf
Q0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlV2l0aG91dEFy
Z3MoSm9iMSkpOwotCi0gIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgSm9iMSgpLgot
YGBgCi0KLSMjIEludm9raW5nIGFuIEFyZ3VtZW50IG9mIHRoZSBNb2NrIEZ1bmN0aW9uICMjCi0K
LVNvbWV0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGEgZnVuY3Rpb24gcG9pbnRl
ciBvciBhIGZ1bmN0b3IKLShpbiBvdGhlciB3b3JkcywgYSAiY2FsbGFibGUiKSBhcyBhbiBhcmd1
bWVudCwgZS5nLgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6
Ci0gIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGJvb2woaW50IG4sIGJvb2wgKCpmcCkoaW50KSkpOwot
fTsKLWBgYAotCi1hbmQgeW91IG1heSB3YW50IHRvIGludm9rZSB0aGlzIGNhbGxhYmxlIGFyZ3Vt
ZW50OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgotICBNb2NrRm9vIGZvbzsKLSAg
RVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCi0gICAgICAuV2lsbE9uY2UoLi4uKTsKLSAg
Ly8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vjb25kIGFy
Z3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgotYGBgCi0KLUFyZ2hoLCB5b3UgbmVlZCB0byByZWZl
ciB0byBhIG1vY2sgZnVuY3Rpb24gYXJndW1lbnQgYnV0IEMrKyBoYXMgbm8KLWxhbWJkYSAoeWV0
KSwgc28geW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gOi0oIE9yIGRvIHlvdQot
cmVhbGx5PwotCi1XZWxsLCBHb29nbGUgTW9jayBoYXMgYW4gYWN0aW9uIHRvIHNvbHZlIF9leGFj
dGx5XyB0aGlzIHByb2JsZW06Ci0KLWBgYAotICBJbnZva2VBcmd1bWVudDxOPihhcmdfMSwgYXJn
XzIsIC4uLiwgYXJnX20pCi1gYGAKLQotd2lsbCBpbnZva2UgdGhlIGBOYC10aCAoMC1iYXNlZCkg
YXJndW1lbnQgdGhlIG1vY2sgZnVuY3Rpb24gcmVjZWl2ZXMsCi13aXRoIGBhcmdfMWAsIGBhcmdf
MmAsIC4uLiwgYW5kIGBhcmdfbWAuIE5vIG1hdHRlciBpZiB0aGUgYXJndW1lbnQgaXMKLWEgZnVu
Y3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IsIEdvb2dsZSBNb2NrIGhhbmRsZXMgdGhlbSBib3Ro
LgotCi1XaXRoIHRoYXQsIHlvdSBjb3VsZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDE+KDUp
KTsKLSAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vj
b25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgotYGBgCi0KLVdoYXQgaWYgdGhlIGNhbGxh
YmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZT8gTm8gcHJvYmxlbSAtIGp1c3QKLXdy
YXAgaXQgaW5zaWRlIGBCeVJlZigpYDoKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKEJhciwg
Ym9vbChib29sICgqZnApKGludCwgY29uc3QgSGVscGVyJikpKTsKLS4uLgotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tl
QXJndW1lbnQ7Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsKLSAgLi4u
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3Vt
ZW50PDA+KDUsIEJ5UmVmKGhlbHBlcikpKTsKLSAgLy8gQnlSZWYoaGVscGVyKSBndWFyYW50ZWVz
IHRoYXQgYSByZWZlcmVuY2UgdG8gaGVscGVyLCBub3QgYSBjb3B5IG9mIGl0LAotICAvLyB3aWxs
IGJlIHBhc3NlZCB0byB0aGUgY2FsbGFibGUuCi1gYGAKLQotV2hhdCBpZiB0aGUgY2FsbGFibGUg
dGFrZXMgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlIGFuZCB3ZSBkbyAqKm5vdCoqCi13cmFwIHRo
ZSBhcmd1bWVudCBpbiBgQnlSZWYoKWA/IFRoZW4gYEludm9rZUFyZ3VtZW50KClgIHdpbGwgX21h
a2UgYQotY29weV8gb2YgdGhlIGFyZ3VtZW50LCBhbmQgcGFzcyBhIF9yZWZlcmVuY2UgdG8gdGhl
IGNvcHlfLCBpbnN0ZWFkIG9mCi1hIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUsIHRv
IHRoZSBjYWxsYWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5Ci1oYW5keSB3aGVuIHRoZSBhcmd1bWVu
dCBpcyBhIHRlbXBvcmFyeSB2YWx1ZToKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKERvVGhh
dCwgYm9vbChib29sICgqZikoY29uc3QgZG91YmxlJiB4LCBjb25zdCBzdHJpbmcmIHMpKSk7Ci0u
Li4KLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7
Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0
KF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUuMCwgc3RyaW5nKCJIaSIp
KSk7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmYpKDUuMCwgc3RyaW5nKCJIaSIpKSwgd2hlcmUgZiBp
cyB0aGUgZnVuY3Rpb24gcG9pbnRlcgotICAvLyBEb1RoYXQoKSByZWNlaXZlcy4gIE5vdGUgdGhh
dCB0aGUgdmFsdWVzIDUuMCBhbmQgc3RyaW5nKCJIaSIpIGFyZQotICAvLyB0ZW1wb3JhcnkgYW5k
IGRlYWQgb25jZSB0aGUgRVhQRUNUX0NBTEwoKSBzdGF0ZW1lbnQgZmluaXNoZXMuICBZZXQKLSAg
Ly8gaXQncyBmaW5lIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24gbGF0ZXIsIHNpbmNlIGEgY29weSBv
ZiB0aGUgdmFsdWVzCi0gIC8vIGFyZSBrZXB0IGluc2lkZSB0aGUgSW52b2tlQXJndW1lbnQgYWN0
aW9uLgotYGBgCi0KLSMjIElnbm9yaW5nIGFuIEFjdGlvbidzIFJlc3VsdCAjIwotCi1Tb21ldGlt
ZXMgeW91IGhhdmUgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBfc29tZXRoaW5nXywgYnV0IHlvdSBu
ZWVkIGFuCi1hY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCAocGVyaGFwcyB5b3Ugd2FudCB0byB1
c2UgaXQgaW4gYSBtb2NrCi1mdW5jdGlvbiB0aGF0IHJldHVybnMgYHZvaWRgLCBvciBwZXJoYXBz
IGl0IG5lZWRzIHRvIGJlIHVzZWQgaW4KLWBEb0FsbCgpYCBhbmQgaXQncyBub3QgdGhlIGxhc3Qg
aW4gdGhlIGxpc3QpLiBgSWdub3JlUmVzdWx0KClgIGxldHMKLXlvdSBkbyB0aGF0LiBGb3IgZXhh
bXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi1pbnQgUHJvY2Vzcyhjb25zdCBNeURhdGEm
IGRhdGEpOwotc3RyaW5nIERvU29tZXRoaW5nKCk7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShBYmMsIHZvaWQoY29uc3QgTXlEYXRhJiBk
YXRhKSk7Ci0gIE1PQ0tfTUVUSE9EMChYeXosIGJvb2woKSk7Ci19OwotLi4uCi0KLSAgTW9ja0Zv
byBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgQWJjKF8pKQotICAvLyAuV2lsbE9uY2UoSW52b2tl
KFByb2Nlc3MpKTsKLSAgLy8gVGhlIGFib3ZlIGxpbmUgd29uJ3QgY29tcGlsZSBhcyBQcm9jZXNz
KCkgcmV0dXJucyBpbnQgYnV0IEFiYygpIG5lZWRzCi0gIC8vIHRvIHJldHVybiB2b2lkLgotICAg
ICAgLldpbGxPbmNlKElnbm9yZVJlc3VsdChJbnZva2UoUHJvY2VzcykpKTsKLQotICBFWFBFQ1Rf
Q0FMTChmb28sIFh5eigpKQotICAgICAgLldpbGxPbmNlKERvQWxsKElnbm9yZVJlc3VsdChJbnZv
a2UoRG9Tb21ldGhpbmcpKSwKLSAgICAgIC8vIElnbm9yZXMgdGhlIHN0cmluZyBEb1NvbWV0aGlu
ZygpIHJldHVybnMuCi0gICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKSk7Ci1gYGAK
LQotTm90ZSB0aGF0IHlvdSAqKmNhbm5vdCoqIHVzZSBgSWdub3JlUmVzdWx0KClgIG9uIGFuIGFj
dGlvbiB0aGF0IGFscmVhZHkKLXJldHVybnMgYHZvaWRgLiBEb2luZyBzbyB3aWxsIGxlYWQgdG8g
dWdseSBjb21waWxlciBlcnJvcnMuCi0KLSMjIFNlbGVjdGluZyBhbiBBY3Rpb24ncyBBcmd1bWVu
dHMgIyMKLQotU2F5IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiBgRm9vKClgIHRoYXQgdGFrZXMg
c2V2ZW4gYXJndW1lbnRzLCBhbmQKLXlvdSBoYXZlIGEgY3VzdG9tIGFjdGlvbiB0aGF0IHlvdSB3
YW50IHRvIGludm9rZSB3aGVuIGBGb28oKWAgaXMKLWNhbGxlZC4gVHJvdWJsZSBpcywgdGhlIGN1
c3RvbSBhY3Rpb24gb25seSB3YW50cyB0aHJlZSBhcmd1bWVudHM6Ci0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgTU9DS19NRVRIT0Q3
KEZvbywgYm9vbChib29sIHZpc2libGUsIGNvbnN0IHN0cmluZyYgbmFtZSwgaW50IHgsIGludCB5
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcDxwYWlyPGludCwgaW50PiwgZG91
YmxlPiYgd2VpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtaW5fd2VpZ2h0
LCBkb3VibGUgbWF4X3dpZ2h0KSk7Ci0uLi4KLQotYm9vbCBJc1Zpc2libGVJblF1YWRyYW50MShi
b29sIHZpc2libGUsIGludCB4LCBpbnQgeSkgewotICByZXR1cm4gdmlzaWJsZSAmJiB4ID49IDAg
JiYgeSA+PSAwOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8s
IF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkp
OyAgLy8gVWgsIHdvbid0IGNvbXBpbGUuIDotKAotYGBgCi0KLVRvIHBsZWFzZSB0aGUgY29tcGls
ZXIgR29kLCB5b3UgY2FuIHRvIGRlZmluZSBhbiAiYWRhcHRvciIgdGhhdCBoYXMKLXRoZSBzYW1l
IHNpZ25hdHVyZSBhcyBgRm9vKClgIGFuZCBjYWxscyB0aGUgY3VzdG9tIGFjdGlvbiB3aXRoIHRo
ZQotcmlnaHQgYXJndW1lbnRzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6
dGVzdGluZzo6SW52b2tlOwotCi1ib29sIE15SXNWaXNpYmxlSW5RdWFkcmFudDEoYm9vbCB2aXNp
YmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93
aWdodCkgewotICByZXR1cm4gSXNWaXNpYmxlSW5RdWFkcmFudDEodmlzaWJsZSwgeCwgeSk7Ci19
Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0g
ICAgICAuV2lsbE9uY2UoSW52b2tlKE15SXNWaXNpYmxlSW5RdWFkcmFudDEpKTsgIC8vIE5vdyBp
dCB3b3Jrcy4KLWBgYAotCi1CdXQgaXNuJ3QgdGhpcyBhd2t3YXJkPwotCi1Hb29nbGUgTW9jayBw
cm92aWRlcyBhIGdlbmVyaWMgX2FjdGlvbiBhZGFwdG9yXywgc28geW91IGNhbiBzcGVuZCB5b3Vy
Ci10aW1lIG1pbmRpbmcgbW9yZSBpbXBvcnRhbnQgYnVzaW5lc3MgdGhhbiB3cml0aW5nIHlvdXIg
b3duCi1hZGFwdG9ycy4gSGVyZSdzIHRoZSBzeW50YXg6Ci0KLWBgYAotICBXaXRoQXJnczxOMSwg
TjIsIC4uLiwgTms+KGFjdGlvbikKLWBgYAotCi1jcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3Nl
cyB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGF0Ci10aGUgZ2l2ZW4gaW5kaWNl
cyAoMC1iYXNlZCkgdG8gdGhlIGlubmVyIGBhY3Rpb25gIGFuZCBwZXJmb3JtcwotaXQuIFVzaW5n
IGBXaXRoQXJnc2AsIG91ciBvcmlnaW5hbCBleGFtcGxlIGNhbiBiZSB3cml0dGVuIGFzOgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotdXNpbmcg
Ojp0ZXN0aW5nOjpXaXRoQXJnczsKLS4uLgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywg
XywgXywgXywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8MCwgMiwgMz4oSW52b2tl
KElzVmlzaWJsZUluUXVhZHJhbnQxKSkpOwotICAgICAgLy8gTm8gbmVlZCB0byBkZWZpbmUgeW91
ciBvd24gYWRhcHRvci4KLWBgYAotCi1Gb3IgYmV0dGVyIHJlYWRhYmlsaXR5LCBHb29nbGUgTW9j
ayBhbHNvIGdpdmVzIHlvdToKLQotICAqIGBXaXRob3V0QXJncyhhY3Rpb24pYCB3aGVuIHRoZSBp
bm5lciBgYWN0aW9uYCB0YWtlcyBfbm9fIGFyZ3VtZW50LCBhbmQKLSAgKiBgV2l0aEFyZzxOPihh
Y3Rpb24pYCAobm8gYHNgIGFmdGVyIGBBcmdgKSB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtl
cyBfb25lXyBhcmd1bWVudC4KLQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBgSW52b2tlV2l0
aG91dEFyZ3MoLi4uKWAgaXMganVzdCBzeW50YWN0aWMKLXN1Z2FyIGZvciBgV2l0aG91dEFyZ3Mo
SW5vdmtlKC4uLikpYC4KLQotSGVyZSBhcmUgbW9yZSB0aXBzOgotCi0gICogVGhlIGlubmVyIGFj
dGlvbiB1c2VkIGluIGBXaXRoQXJnc2AgYW5kIGZyaWVuZHMgZG9lcyBub3QgaGF2ZSB0byBiZSBg
SW52b2tlKClgIC0tIGl0IGNhbiBiZSBhbnl0aGluZy4KLSAgKiBZb3UgY2FuIHJlcGVhdCBhbiBh
cmd1bWVudCBpbiB0aGUgYXJndW1lbnQgbGlzdCBpZiBuZWNlc3NhcnksIGUuZy4gYFdpdGhBcmdz
PDIsIDMsIDMsIDU+KC4uLilgLgotICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUg
YXJndW1lbnRzLCBlLmcuIGBXaXRoQXJnczwzLCAyLCAxPiguLi4pYC4KLSAgKiBUaGUgdHlwZXMg
b2YgdGhlIHNlbGVjdGVkIGFyZ3VtZW50cyBkbyBfbm90XyBoYXZlIHRvIG1hdGNoIHRoZSBzaWdu
YXR1cmUgb2YgdGhlIGlubmVyIGFjdGlvbiBleGFjdGx5LiBJdCB3b3JrcyBhcyBsb25nIGFzIHRo
ZXkgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3Vt
ZW50cyBvZiB0aGUgaW5uZXIgYWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIDQtdGggYXJndW1l
bnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gaXMgYW4gYGludGAgYW5kIGBteV9hY3Rpb25gIHRha2Vz
IGEgYGRvdWJsZWAsIGBXaXRoQXJnPDQ+KG15X2FjdGlvbilgIHdpbGwgd29yay4KLQotIyMgSWdu
b3JpbmcgQXJndW1lbnRzIGluIEFjdGlvbiBGdW5jdGlvbnMgIyMKLQotVGhlIHNlbGVjdGluZy1h
bi1hY3Rpb24ncy1hcmd1bWVudHMgcmVjaXBlIHNob3dlZCB1cyBvbmUgd2F5IHRvIG1ha2UgYQot
bW9jayBmdW5jdGlvbiBhbmQgYW4gYWN0aW9uIHdpdGggaW5jb21wYXRpYmxlIGFyZ3VtZW50IGxp
c3RzIGZpdAotdG9nZXRoZXIuIFRoZSBkb3duc2lkZSBpcyB0aGF0IHdyYXBwaW5nIHRoZSBhY3Rp
b24gaW4KLWBXaXRoQXJnczwuLi4+KClgIGNhbiBnZXQgdGVkaW91cyBmb3IgcGVvcGxlIHdyaXRp
bmcgdGhlIHRlc3RzLgotCi1JZiB5b3UgYXJlIGRlZmluaW5nIGEgZnVuY3Rpb24sIG1ldGhvZCwg
b3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGgKLWBJbnZva2UqKClgLCBhbmQgeW91IGFyZSBub3Qg
aW50ZXJlc3RlZCBpbiBzb21lIG9mIGl0cyBhcmd1bWVudHMsIGFuCi1hbHRlcm5hdGl2ZSB0byBg
V2l0aEFyZ3NgIGlzIHRvIGRlY2xhcmUgdGhlIHVuaW50ZXJlc3RpbmcgYXJndW1lbnRzIGFzCi1g
VW51c2VkYC4gVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBsZXNzIGNsdXR0ZXJlZCBhbmQgbGVz
cyBmcmFnaWxlIGluCi1jYXNlIHRoZSB0eXBlcyBvZiB0aGUgdW5pbnRlcmVzdGluZyBhcmd1bWVu
dHMgY2hhbmdlLiBJdCBjb3VsZCBhbHNvCi1pbmNyZWFzZSB0aGUgY2hhbmNlIHRoZSBhY3Rpb24g
ZnVuY3Rpb24gY2FuIGJlIHJldXNlZC4gRm9yIGV4YW1wbGUsCi1naXZlbgotCi1gYGAKLSAgTU9D
S19NRVRIT0QzKEZvbywgZG91YmxlKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3Vi
bGUgeSkpOwotICBNT0NLX01FVEhPRDMoQmFyLCBkb3VibGUoaW50IGluZGV4LCBkb3VibGUgeCwg
ZG91YmxlIHkpKTsKLWBgYAotCi1pbnN0ZWFkIG9mCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
OwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWRvdWJsZSBEaXN0YW5jZVRvT3JpZ2luV2l0
aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1
cm4gc3FydCh4KnggKyB5KnkpOwotfQotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbldpdGhJbmRl
eChpbnQgaW5kZXgsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5
KnkpOwotfQotLi4uCi0KLSAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLSAg
ICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbCkpOwotICBFWEVQ
Q1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3Rh
bmNlVG9PcmlnaW5XaXRoSW5kZXgpKTsKLWBgYAotCi15b3UgY291bGQgd3JpdGUKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6dGVz
dGluZzo6VW51c2VkOwotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4
LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0KLSAgRVhF
UENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2Uo
RGlzdGFuY2VUb09yaWdpbikpOwotICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCi0g
ICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLWBgYAotCi0jIyBTaGFy
aW5nIEFjdGlvbnMgIyMKLQotSnVzdCBsaWtlIG1hdGNoZXJzLCBhIEdvb2dsZSBNb2NrIGFjdGlv
biBvYmplY3QgY29uc2lzdHMgb2YgYSBwb2ludGVyCi10byBhIHJlZi1jb3VudGVkIGltcGxlbWVu
dGF0aW9uIG9iamVjdC4gVGhlcmVmb3JlIGNvcHlpbmcgYWN0aW9ucyBpcwotYWxzbyBhbGxvd2Vk
IGFuZCB2ZXJ5IGVmZmljaWVudC4gV2hlbiB0aGUgbGFzdCBhY3Rpb24gdGhhdCByZWZlcmVuY2Vz
Ci10aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmpl
Y3Qgd2lsbCBiZQotZGVsZXRlZC4KLQotSWYgeW91IGhhdmUgc29tZSBjb21wbGV4IGFjdGlvbiB0
aGF0IHlvdSB3YW50IHRvIHVzZSBhZ2FpbiBhbmQgYWdhaW4sCi15b3UgbWF5IG5vdCBoYXZlIHRv
IGJ1aWxkIGl0IGZyb20gc2NyYXRjaCBldmVyeXRpbWUuIElmIHRoZSBhY3Rpb24KLWRvZXNuJ3Qg
aGF2ZSBhbiBpbnRlcm5hbCBzdGF0ZSAoaS5lLiBpZiBpdCBhbHdheXMgZG9lcyB0aGUgc2FtZSB0
aGluZwotbm8gbWF0dGVyIGhvdyBtYW55IHRpbWVzIGl0IGhhcyBiZWVuIGNhbGxlZCksIHlvdSBj
YW4gYXNzaWduIGl0IHRvIGFuCi1hY3Rpb24gdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxl
IHJlcGVhdGVkbHkuIEZvciBleGFtcGxlOgotCi1gYGAKLSAgQWN0aW9uPGJvb2woaW50Kik+IHNl
dF9mbGFnID0gRG9BbGwoU2V0QXJndW1lbnRQb2ludGVlPDA+KDUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4odHJ1ZSkpOwotICAuLi4gdXNlIHNldF9mbGFn
IGluIC5XaWxsT25jZSgpIGFuZCAuV2lsbFJlcGVhdGVkbHkoKSAuLi4KLWBgYAotCi1Ib3dldmVy
LCBpZiB0aGUgYWN0aW9uIGhhcyBpdHMgb3duIHN0YXRlLCB5b3UgbWF5IGJlIHN1cnByaXNlZCBp
ZiB5b3UKLXNoYXJlIHRoZSBhY3Rpb24gb2JqZWN0LiBTdXBwb3NlIHlvdSBoYXZlIGFuIGFjdGlv
biBmYWN0b3J5Ci1gSW5jcmVtZW50Q291bnRlcihpbml0KWAgd2hpY2ggY3JlYXRlcyBhbiBhY3Rp
b24gdGhhdCBpbmNyZW1lbnRzIGFuZAotcmV0dXJucyBhIGNvdW50ZXIgd2hvc2UgaW5pdGlhbCB2
YWx1ZSBpcyBgaW5pdGAsIHVzaW5nIHR3byBhY3Rpb25zCi1jcmVhdGVkIGZyb20gdGhlIHNhbWUg
ZXhwcmVzc2lvbiBhbmQgdXNpbmcgYSBzaGFyZWQgYWN0aW9uIHdpbGwKLWV4aWhpYml0IGRpZmZl
cmVudCBiZWhhdmlvcnMuIEV4YW1wbGU6Ci0KLWBgYAotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhp
cygpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KEluY3JlbWVudENvdW50ZXIoMCkpOwotICBFWFBF
Q1RfQ0FMTChmb28sIERvVGhhdCgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KEluY3JlbWVudENv
dW50ZXIoMCkpOwotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDEuCi0gIGZvby5Eb1RoaXMo
KTsgIC8vIFJldHVybnMgMi4KLSAgZm9vLkRvVGhhdCgpOyAgLy8gUmV0dXJucyAxIC0gQmxhaCgp
IHVzZXMgYSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgLy8gY291bnRlciB0aGFuIEJhcigp
J3MuCi1gYGAKLQotdmVyc3VzCi0KLWBgYAotICBBY3Rpb248aW50KCk+IGluY3JlbWVudCA9IElu
Y3JlbWVudENvdW50ZXIoMCk7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoKSkKLSAgICAg
IC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgp
KQotICAgICAgLldpbGxSZXBlYXRlZGx5KGluY3JlbWVudCk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8v
IFJldHVybnMgMS4KLSAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAyLgotICBmb28uRG9UaGF0
KCk7ICAvLyBSZXR1cm5zIDMgLSB0aGUgY291bnRlciBpcyBzaGFyZWQuCi1gYGAKLQotIyBNaXNj
IFJlY2lwZXMgb24gVXNpbmcgR29vZ2xlIE1vY2sgIwotCi0jIyBGb3JjaW5nIGEgVmVyaWZpY2F0
aW9uICMjCi0KLVdoZW4gaXQncyBiZWluZyBkZXN0b3llZCwgeW91ciBmcmllbmRseSBtb2NrIG9i
amVjdCB3aWxsIGF1dG9tYXRpY2FsbHkKLXZlcmlmeSB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24g
aXQgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHdpbGwKLWdlbmVyYXRlIFtHb29nbGUgVGVzdF0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKSBmYWlsdXJlcwotaWYgbm90LiBU
aGlzIGlzIGNvbnZlbmllbnQgYXMgaXQgbGVhdmVzIHlvdSB3aXRoIG9uZSBsZXNzIHRoaW5nIHRv
Ci13b3JyeSBhYm91dC4gVGhhdCBpcywgdW5sZXNzIHlvdSBhcmUgbm90IHN1cmUgaWYgeW91ciBt
b2NrIG9iamVjdCB3aWxsCi1iZSBkZXN0b3llZC4KLQotSG93IGNvdWxkIGl0IGJlIHRoYXQgeW91
ciBtb2NrIG9iamVjdCB3b24ndCBldmVudHVhbGx5IGJlIGRlc3Ryb3llZD8KLVdlbGwsIGl0IG1p
Z2h0IGJlIGNyZWF0ZWQgb24gdGhlIGhlYXAgYW5kIG93bmVkIGJ5IHRoZSBjb2RlIHlvdSBhcmUK
LXRlc3RpbmcuIFN1cHBvc2UgdGhlcmUncyBhIGJ1ZyBpbiB0aGF0IGNvZGUgYW5kIGl0IGRvZXNu
J3QgZGVsZXRlIHRoZQotbW9jayBvYmplY3QgcHJvcGVybHkgLSB5b3UgY291bGQgZW5kIHVwIHdp
dGggYSBwYXNzaW5nIHRlc3Qgd2hlbgotdGhlcmUncyBhY3R1YWxseSBhIGJ1Zy4KLQotVXNpbmcg
YSBoZWFwIGNoZWNrZXIgaXMgYSBnb29kIGlkZWEgYW5kIGNhbiBhbGxldmlhdGUgdGhlIGNvbmNl
cm4sIGJ1dAotaXRzIGltcGxlbWVudGF0aW9uIG1heSBub3QgYmUgMTAwJSByZWxpYWJsZS4gU28s
IHNvbWV0aW1lcyB5b3UgZG8gd2FudAotdG8gX2ZvcmNlXyBHb29nbGUgTW9jayB0byB2ZXJpZnkg
YSBtb2NrIG9iamVjdCBiZWZvcmUgaXQgaXMKLShob3BlZnVsbHkpIGRlc3RydWN0ZWQuIFlvdSBj
YW4gZG8gdGhpcyB3aXRoCi1gTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tf
b2JqZWN0KWA6Ci0KLWBgYAotVEVTVChNeVNlcnZlclRlc3QsIFByb2Nlc3Nlc1JlcXVlc3QpIHsK
LSAgdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwotCi0gIE1vY2tGb28qIGNvbnN0IGZvbyA9IG5ldyBN
b2NrRm9vOwotICBFWFBFQ1RfQ0FMTCgqZm9vLCAuLi4pLi4uOwotICAvLyAuLi4gb3RoZXIgZXhw
ZWN0YXRpb25zIC4uLgotCi0gIC8vIHNlcnZlciBub3cgb3ducyBmb28uCi0gIE15U2VydmVyIHNl
cnZlcihmb28pOwotICBzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoLi4uKTsKLQotICAvLyBJbiBjYXNl
IHRoYXQgc2VydmVyJ3MgZGVzdHJ1Y3RvciB3aWxsIGZvcmdldCB0byBkZWxldGUgZm9vLAotICAv
LyB0aGlzIHdpbGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgYW55d2F5LgotICBNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucyhmb28pOwotfSAgLy8gc2VydmVyIGlzIGRlc3Ryb3llZCB3
aGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlIGhlcmUuCi1gYGAKLQotKipUaXA6KiogVGhlIGBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpYCBmdW5jdGlvbiByZXR1cm5zIGEKLWBib29s
YCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB2ZXJpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGB0
cnVlYCBmb3IKLXllcyksIHNvIHlvdSBjYW4gd3JhcCB0aGF0IGZ1bmN0aW9uIGNhbGwgaW5zaWRl
IGEgYEFTU0VSVF9UUlVFKClgIGlmCi10aGVyZSBpcyBubyBwb2ludCBnb2luZyBmdXJ0aGVyIHdo
ZW4gdGhlIHZlcmlmaWNhdGlvbiBoYXMgZmFpbGVkLgotCi0jIyBVc2luZyBDaGVjayBQb2ludHMg
IyMKLQotU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byAicmVzZXQiIGEgbW9jayBvYmplY3QgYXQg
dmFyaW91cyBjaGVjawotcG9pbnRzIGluIHlvdXIgdGVzdDogYXQgZWFjaCBjaGVjayBwb2ludCwg
eW91IHZlcmlmeSB0aGF0IGFsbCBleGlzdGluZwotZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9i
amVjdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgdGhlbiB5b3Ugc2V0Ci1zb21lIG5ldyBleHBl
Y3RhdGlvbnMgb24gaXQgYXMgaWYgaXQncyBuZXdseSBjcmVhdGVkLiBUaGlzIGFsbG93cyB5b3UK
LXRvIHdvcmsgd2l0aCBhIG1vY2sgb2JqZWN0IGluICJwaGFzZXMiIHdob3NlIHNpemVzIGFyZSBl
YWNoCi1tYW5hZ2VhYmxlLgotCi1PbmUgc3VjaCBzY2VuYXJpbyBpcyB0aGF0IGluIHlvdXIgdGVz
dCdzIGBTZXRVcCgpYCBmdW5jdGlvbiwgeW91IG1heQotd2FudCB0byBwdXQgdGhlIG9iamVjdCB5
b3UgYXJlIHRlc3RpbmcgaW50byBhIGNlcnRhaW4gc3RhdGUsIHdpdGggdGhlCi1oZWxwIGZyb20g
YSBtb2NrIG9iamVjdC4gT25jZSBpbiB0aGUgZGVzaXJlZCBzdGF0ZSwgeW91IHdhbnQgdG8gY2xl
YXIKLWFsbCBleHBlY3RhdGlvbnMgb24gdGhlIG1vY2ssIHN1Y2ggdGhhdCBpbiB0aGUgYFRFU1Rf
RmAgYm9keSB5b3UgY2FuCi1zZXQgZnJlc2ggZXhwZWN0YXRpb25zIG9uIGl0LgotCi1BcyB5b3Ug
bWF5IGhhdmUgZmlndXJlZCBvdXQsIHRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoKWAKLWZ1bmN0aW9uIHdlIHNhdyBpbiB0aGUgcHJldmlvdXMgcmVjaXBlIGNhbiBoZWxwIHlv
dSBoZXJlLiBPciwgaWYgeW91Ci1hcmUgdXNpbmcgYE9OX0NBTEwoKWAgdG8gc2V0IGRlZmF1bHQg
YWN0aW9ucyBvbiB0aGUgbW9jayBvYmplY3QgYW5kCi13YW50IHRvIGNsZWFyIHRoZSBkZWZhdWx0
IGFjdGlvbnMgYXMgd2VsbCwgdXNlCi1gTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJm1vY2tfb2JqZWN0
KWAgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiBkb2VzIHdoYXQKLWBNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbW9ja19vYmplY3QpYCBkb2VzIGFuZCByZXR1cm5zIHRoZQotc2FtZSBg
Ym9vbGAsICoqcGx1cyoqIGl0IGNsZWFycyB0aGUgYE9OX0NBTEwoKWAgc3RhdGVtZW50cyBvbgot
YG1vY2tfb2JqZWN0YCB0b28uCi0KLUFub3RoZXIgdHJpY2sgeW91IGNhbiB1c2UgdG8gYWNoaWV2
ZSB0aGUgc2FtZSBlZmZlY3QgaXMgdG8gcHV0IHRoZQotZXhwZWN0YXRpb25zIGluIHNlcXVlbmNl
cyBhbmQgaW5zZXJ0IGNhbGxzIHRvIGEgZHVtbXkgImNoZWNrLXBvaW50IgotZnVuY3Rpb24gYXQg
c3BlY2lmaWMgcGxhY2VzLiBUaGVuIHlvdSBjYW4gdmVyaWZ5IHRoYXQgdGhlIG1vY2sKLWZ1bmN0
aW9uIGNhbGxzIGRvIGhhcHBlbiBhdCB0aGUgcmlnaHQgdGltZS4gRm9yIGV4YW1wbGUsIGlmIHlv
dSBhcmUKLWV4ZXJjaXNpbmcgY29kZToKLQotYGBgCi1Gb28oMSk7Ci1Gb28oMik7Ci1Gb28oMyk7
Ci1gYGAKLQotYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYEZvbygxKWAgYW5kIGBGb28oMylgIGJv
dGggaW52b2tlCi1gbW9jay5CYXIoImEiKWAsIGJ1dCBgRm9vKDIpYCBkb2Vzbid0IGludm9rZSBh
bnl0aGluZy4gWW91IGNhbiB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2tGdW5j
dGlvbjsKLQotVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29ycmVjdGx5KSB7Ci0gIE15TW9jayBt
b2NrOwotICAvLyBDbGFzcyBNb2NrRnVuY3Rpb248Rj4gaGFzIGV4YWN0bHkgb25lIG1vY2sgbWV0
aG9kLiAgSXQgaXMgbmFtZWQKLSAgLy8gQ2FsbCgpIGFuZCBoYXMgdHlwZSBGLgotICBNb2NrRnVu
Y3Rpb248dm9pZChzdHJpbmcgY2hlY2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotICB7Ci0gICAgSW5T
ZXF1ZW5jZSBzOwotCi0gICAgRVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotICAgIEVYUEVD
VF9DQUxMKGNoZWNrLCBDYWxsKCIxIikpOwotICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxsKCIy
IikpOwotICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKLSAgfQotICBGb28oMSk7Ci0g
IGNoZWNrLkNhbGwoIjEiKTsKLSAgRm9vKDIpOwotICBjaGVjay5DYWxsKCIyIik7Ci0gIEZvbygz
KTsKLX0KLWBgYAotCi1UaGUgZXhwZWN0YXRpb24gc3BlYyBzYXlzIHRoYXQgdGhlIGZpcnN0IGBC
YXIoImEiKWAgbXVzdCBoYXBwZW4gYmVmb3JlCi1jaGVjayBwb2ludCAiMSIsIHRoZSBzZWNvbmQg
YEJhcigiYSIpYCBtdXN0IGhhcHBlbiBhZnRlciBjaGVjayBwb2ludCAiMiIsCi1hbmQgbm90aGlu
ZyBzaG91bGQgaGFwcGVuIGJldHdlZW4gdGhlIHR3byBjaGVjayBwb2ludHMuIFRoZSBleHBsaWNp
dAotY2hlY2sgcG9pbnRzIG1ha2UgaXQgZWFzeSB0byB0ZWxsIHdoaWNoIGBCYXIoImEiKWAgaXMg
Y2FsbGVkIGJ5IHdoaWNoCi1jYWxsIHRvIGBGb28oKWAuCi0KLSMjIE1vY2tpbmcgRGVzdHJ1Y3Rv
cnMgIyMKLQotU29tZXRpbWVzIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSBhIG1vY2sgb2JqZWN0IGlz
IGRlc3RydWN0ZWQgYXQgdGhlCi1yaWdodCB0aW1lLCBlLmcuIGFmdGVyIGBiYXItPkEoKWAgaXMg
Y2FsbGVkIGJ1dCBiZWZvcmUgYGJhci0+QigpYCBpcwotY2FsbGVkLiBXZSBhbHJlYWR5IGtub3cg
dGhhdCB5b3UgY2FuIHNwZWNpZnkgY29uc3RyYWludHMgb24gdGhlIG9yZGVyCi1vZiBtb2NrIGZ1
bmN0aW9uIGNhbGxzLCBzbyBhbGwgd2UgbmVlZCB0byBkbyBpcyB0byBtb2NrIHRoZSBkZXN0cnVj
dG9yCi1vZiB0aGUgbW9jayBmdW5jdGlvbi4KLQotVGhpcyBzb3VuZHMgc2ltcGxlLCBleGNlcHQg
Zm9yIG9uZSBwcm9ibGVtOiBhIGRlc3RydWN0b3IgaXMgYSBzcGVjaWFsCi1mdW5jdGlvbiB3aXRo
IHNwZWNpYWwgc3ludGF4IGFuZCBzcGVjaWFsIHNlbWFudGljcywgYW5kIHRoZQotYE1PQ0tfTUVU
SE9EMGAgbWFjcm8gZG9lc24ndCB3b3JrIGZvciBpdDoKLQotYGBgCi0gIE1PQ0tfTUVUSE9EMCh+
TW9ja0Zvbywgdm9pZCgpKTsgIC8vIFdvbid0IGNvbXBpbGUhCi1gYGAKLQotVGhlIGdvb2QgbmV3
cyBpcyB0aGF0IHlvdSBjYW4gdXNlIGEgc2ltcGxlIHBhdHRlcm4gdG8gYWNoaWV2ZSB0aGUgc2Ft
ZQotZWZmZWN0LiBGaXJzdCwgYWRkIGEgbW9jayBmdW5jdGlvbiBgRGllKClgIHRvIHlvdXIgbW9j
ayBjbGFzcyBhbmQgY2FsbAotaXQgaW4gdGhlIGRlc3RydWN0b3IsIGxpa2UgdGhpczoKLQotYGBg
Ci1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4uLgotICAvLyBBZGQgdGhlIGZvbGxv
d2luZyB0d28gbGluZXMgdG8gdGhlIG1vY2sgY2xhc3MuCi0gIE1PQ0tfTUVUSE9EMChEaWUsIHZv
aWQoKSk7Ci0gIHZpcnR1YWwgfk1vY2tGb28oKSB7IERpZSgpOyB9Ci19OwotYGBgCi0KLShJZiB0
aGUgbmFtZSBgRGllKClgIGNsYXNoZXMgd2l0aCBhbiBleGlzdGluZyBzeW1ib2wsIGNob29zZSBh
bm90aGVyCi1uYW1lLikgTm93LCB3ZSBoYXZlIHRyYW5zbGF0ZWQgdGhlIHByb2JsZW0gb2YgdGVz
dGluZyB3aGVuIGEgYE1vY2tGb29gCi1vYmplY3QgZGllcyB0byB0ZXN0aW5nIHdoZW4gaXRzIGBE
aWUoKWAgbWV0aG9kIGlzIGNhbGxlZDoKLQotYGBgCi0gIE1vY2tGb28qIGZvbyA9IG5ldyBNb2Nr
Rm9vOwotICBNb2NrQmFyKiBiYXIgPSBuZXcgTW9ja0JhcjsKLSAgLi4uCi0gIHsKLSAgICBJblNl
cXVlbmNlIHM7Ci0KLSAgICAvLyBFeHBlY3RzICpmb28gdG8gZGllIGFmdGVyIGJhci0+QSgpIGFu
ZCBiZWZvcmUgYmFyLT5CKCkuCi0gICAgRVhQRUNUX0NBTEwoKmJhciwgQSgpKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqZm9vLCBEaWUoKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmJhciwgQigpKTsKLSAgfQot
YGBgCi0KLUFuZCB0aGF0J3MgdGhhdC4KLQotIyMgVXNpbmcgR29vZ2xlIE1vY2sgYW5kIFRocmVh
ZHMgIyMKLQotKipJTVBPUlRBTlQgTk9URToqKiBXaGF0IHdlIGRlc2NyaWJlIGluIHRoaXMgcmVj
aXBlIGlzICoqTk9UKiogdHJ1ZSB5ZXQsCi1hcyBHb29nbGUgTW9jayBpcyBub3QgY3VycmVudGx5
IHRocmVhZC1zYWZlLiAgSG93ZXZlciwgYWxsIHdlIG5lZWQgdG8KLW1ha2UgaXQgdGhyZWFkLXNh
ZmUgaXMgdG8gaW1wbGVtZW50IHNvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4KLWA8
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPmAgLSBhbmQgdGhlbiB0aGUgaW5mb3JtYXRpb24g
YmVsb3cgd2lsbAotYmVjb21lIHRydWUuCi0KLUluIGEgKip1bml0KiogdGVzdCwgaXQncyBiZXN0
IGlmIHlvdSBjb3VsZCBpc29sYXRlIGFuZCB0ZXN0IGEgcGllY2Ugb2YKLWNvZGUgaW4gYSBzaW5n
bGUtdGhyZWFkZWQgY29udGV4dC4gVGhhdCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGFuZAotZGVh
ZCBsb2NrcywgYW5kIG1ha2VzIGRlYnVnZ2luZyB5b3VyIHRlc3QgbXVjaCBlYXNpZXIuCi0KLVll
dCBtYW55IHByb2dyYW1zIGFyZSBtdWx0aS10aHJlYWRlZCwgYW5kIHNvbWV0aW1lcyB0byB0ZXN0
IHNvbWV0aGluZwotd2UgbmVlZCB0byBwb3VuZCBvbiBpdCBmcm9tIG1vcmUgdGhhbiBvbmUgdGhy
ZWFkLiBHb29nbGUgTW9jayB3b3JrcwotZm9yIHRoaXMgcHVycG9zZSB0b28uCi0KLVJlbWVtYmVy
IHRoZSBzdGVwcyBmb3IgdXNpbmcgYSBtb2NrOgotCi0gIDEuIENyZWF0ZSBhIG1vY2sgb2JqZWN0
IGBmb29gLgotICAxLiBTZXQgaXRzIGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIHVz
aW5nIGBPTl9DQUxMKClgIGFuZCBgRVhQRUNUX0NBTEwoKWAuCi0gIDEuIFRoZSBjb2RlIHVuZGVy
IHRlc3QgY2FsbHMgbWV0aG9kcyBvZiBgZm9vYC4KLSAgMS4gT3B0aW9uYWxseSwgdmVyaWZ5IGFu
ZCByZXNldCB0aGUgbW9jay4KLSAgMS4gRGVzdHJveSB0aGUgbW9jayB5b3Vyc2VsZiwgb3IgbGV0
IHRoZSBjb2RlIHVuZGVyIHRlc3QgZGVzdHJveSBpdC4gVGhlIGRlc3RydWN0b3Igd2lsbCBhdXRv
bWF0aWNhbGx5IHZlcmlmeSBpdC4KLQotSWYgeW91IGZvbGxvdyB0aGUgZm9sbG93aW5nIHNpbXBs
ZSBydWxlcywgeW91ciBtb2NrcyBhbmQgdGhyZWFkcyBjYW4KLWxpdmUgaGFwcGlseSB0b2dldGVy
OgotCi0gICogRXhlY3V0ZSB5b3VyIF90ZXN0IGNvZGVfIChhcyBvcHBvc2VkIHRvIHRoZSBjb2Rl
IGJlaW5nIHRlc3RlZCkgaW4gX29uZV8gdGhyZWFkLiBUaGlzIG1ha2VzIHlvdXIgdGVzdCBlYXN5
IHRvIGZvbGxvdy4KLSAgKiBPYnZpb3VzbHksIHlvdSBjYW4gZG8gc3RlcCAjMSB3aXRob3V0IGxv
Y2tpbmcuCi0gICogV2hlbiBkb2luZyBzdGVwICMyIGFuZCAjNSwgbWFrZSBzdXJlIG5vIG90aGVy
IHRocmVhZCBpcyBhY2Nlc3NpbmcgYGZvb2AuIE9idmlvdXMgdG9vLCBodWg/Ci0gICogIzMgYW5k
ICM0IGNhbiBiZSBkb25lIGVpdGhlciBpbiBvbmUgdGhyZWFkIG9yIGluIG11bHRpcGxlIHRocmVh
ZHMgLSBhbnl3YXkgeW91IHdhbnQuIEdvb2dsZSBNb2NrIHRha2VzIGNhcmUgb2YgdGhlIGxvY2tp
bmcsIHNvIHlvdSBkb24ndCBoYXZlIHRvIGRvIGFueSAtIHVubGVzcyByZXF1aXJlZCBieSB5b3Vy
IHRlc3QgbG9naWMuCi0KLUlmIHlvdSB2aW9sYXRlIHRoZSBydWxlcyAoZm9yIGV4YW1wbGUsIGlm
IHlvdSBzZXQgZXhwZWN0YXRpb25zIG9uIGEKLW1vY2sgd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMg
Y2FsbGluZyBpdHMgbWV0aG9kcyksIHlvdSBnZXQgdW5kZWZpbmVkCi1iZWhhdmlvci4gVGhhdCdz
IG5vdCBmdW4sIHNvIGRvbid0IGRvIGl0LgotCi1Hb29nbGUgTW9jayBndWFyYW50ZWVzIHRoYXQg
dGhlIGFjdGlvbiBmb3IgYSBtb2NrIGZ1bmN0aW9uIGlzIGRvbmUgaW4KLXRoZSBzYW1lIHRocmVh
ZCB0aGF0IGNhbGxlZCB0aGUgbW9jayBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oMSkpCi0gICAgICAuV2lsbE9uY2UoYWN0aW9uMSk7Ci0g
IEVYUEVDVF9DQUxMKG1vY2ssIEZvbygyKSkKLSAgICAgIC5XaWxsT25jZShhY3Rpb24yKTsKLWBg
YAotCi1pZiBgRm9vKDEpYCBpcyBjYWxsZWQgaW4gdGhyZWFkIDEgYW5kIGBGb28oMilgIGlzIGNh
bGxlZCBpbiB0aHJlYWQgMiwKLUdvb2dsZSBNb2NrIHdpbGwgZXhlY3V0ZSBgYWN0aW9uMWAgaW4g
dGhyZWFkIDEgYW5kIGBhY3Rpb24yYCBpbiB0aHJlYWQKLTIuCi0KLUdvb2dsZSBNb2NrIGRvZXMg
X25vdF8gaW1wb3NlIGEgc2VxdWVuY2Ugb24gYWN0aW9ucyBwZXJmb3JtZWQgaW4KLWRpZmZlcmVu
dCB0aHJlYWRzIChkb2luZyBzbyBtYXkgY3JlYXRlIGRlYWRsb2NrcyBhcyB0aGUgYWN0aW9ucyBt
YXkKLW5lZWQgdG8gY29vcGVyYXRlKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBleGVjdXRpb24gb2Yg
YGFjdGlvbjFgIGFuZAotYGFjdGlvbjJgIGluIHRoZSBhYm92ZSBleGFtcGxlIF9tYXlfIGludGVy
bGVhdmUuIElmIHRoaXMgaXMgYSBwcm9ibGVtLAoteW91IHNob3VsZCBhZGQgcHJvcGVyIHN5bmNo
cm9uaXphdGlvbiBsb2dpYyB0byBgYWN0aW9uMWAgYW5kIGBhY3Rpb24yYAotdG8gbWFrZSB0aGUg
dGVzdCB0aHJlYWQtc2FmZS4KLQotCi1BbHNvLCByZW1lbWJlciB0aGF0IGBEZWZhdWx0VmFsdWU8
VD5gIGlzIGEgZ2xvYmFsIHJlc291cmNlIHRoYXQKLXBvdGVudGlhbGx5IGFmZmVjdHMgX2FsbF8g
bGl2aW5nIG1vY2sgb2JqZWN0cyBpbiB5b3VyCi1wcm9ncmFtLiBOYXR1cmFsbHksIHlvdSB3b24n
dCB3YW50IHRvIG1lc3Mgd2l0aCBpdCBmcm9tIG11bHRpcGxlCi10aHJlYWRzIG9yIHdoZW4gdGhl
cmUgc3RpbGwgYXJlIG1vY2tzIGluIGFjdGlvbi4KLQotIyMgQ29udHJvbGxpbmcgSG93IE11Y2gg
SW5mb3JtYXRpb24gR29vZ2xlIE1vY2sgUHJpbnRzICMjCi0KLVdoZW4gR29vZ2xlIE1vY2sgc2Vl
cyBzb21ldGhpbmcgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCBvZiBiZWluZyBhbgotZXJyb3IgKGUu
Zy4gYSBtb2NrIGZ1bmN0aW9uIHdpdGggbm8gZXhwZWN0YXRpb24gaXMgY2FsbGVkLCBhLmsuYS4g
YW4KLXVuaW50ZXJlc3RpbmcgY2FsbCwgd2hpY2ggaXMgYWxsb3dlZCBidXQgcGVyaGFwcyB5b3Ug
Zm9yZ290IHRvCi1leHBsaWNpdGx5IGJhbiB0aGUgY2FsbCksIGl0IHByaW50cyBzb21lIHdhcm5p
bmcgbWVzc2FnZXMsIGluY2x1ZGluZwotdGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24gYW5k
IHRoZSByZXR1cm4gdmFsdWUuIEhvcGVmdWxseSB0aGlzCi13aWxsIHJlbWluZCB5b3UgdG8gdGFr
ZSBhIGxvb2sgYW5kIHNlZSBpZiB0aGVyZSBpcyBpbmRlZWQgYSBwcm9ibGVtLgotCi1Tb21ldGlt
ZXMgeW91IGFyZSBjb25maWRlbnQgdGhhdCB5b3VyIHRlc3RzIGFyZSBjb3JyZWN0IGFuZCBtYXkg
bm90Ci1hcHByZWNpYXRlIHN1Y2ggZnJpZW5kbHkgbWVzc2FnZXMuIFNvbWUgb3RoZXIgdGltZXMs
IHlvdSBhcmUgZGVidWdnaW5nCi15b3VyIHRlc3RzIG9yIGxlYXJuaW5nIGFib3V0IHRoZSBiZWhh
dmlvciBvZiB0aGUgY29kZSB5b3UgYXJlIHRlc3RpbmcsCi1hbmQgd2lzaCB5b3UgY291bGQgb2Jz
ZXJ2ZSBldmVyeSBtb2NrIGNhbGwgdGhhdCBoYXBwZW5zIChpbmNsdWRpbmcKLWFyZ3VtZW50IHZh
bHVlcyBhbmQgdGhlIHJldHVybiB2YWx1ZSkuIENsZWFybHksIG9uZSBzaXplIGRvZXNuJ3QgZml0
Ci1hbGwuCi0KLVlvdSBjYW4gY29udHJvbCBob3cgbXVjaCBHb29nbGUgTW9jayB0ZWxscyB5b3Ug
dXNpbmcgdGhlCi1gLS1nbW9ja192ZXJib3NlPUxFVkVMYCBjb21tYW5kLWxpbmUgZmxhZywgd2hl
cmUgYExFVkVMYCBpcyBhIHN0cmluZwotd2l0aCB0aHJlZSBwb3NzaWJsZSB2YWx1ZXM6Ci0KLSAg
KiBgaW5mb2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgYWxsIGluZm9ybWF0aW9uYWwgbWVzc2Fn
ZXMsIHdhcm5pbmdzLCBhbmQgZXJyb3JzIChtb3N0IHZlcmJvc2UpLiBBdCB0aGlzIHNldHRpbmcs
IEdvb2dsZSBNb2NrIHdpbGwgYWxzbyBsb2cgYW55IGNhbGxzIHRvIHRoZSBgT05fQ0FMTC9FWFBF
Q1RfQ0FMTGAgbWFjcm9zLgotICAqIGB3YXJuaW5nYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBi
b3RoIHdhcm5pbmdzIGFuZCBlcnJvcnMgKGxlc3MgdmVyYm9zZSkuIFRoaXMgaXMgdGhlIGRlZmF1
bHQuCi0gICogYGVycm9yYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBlcnJvcnMgb25seSAobGVh
c3QgdmVyYm9zZSkuCi0KLUFsdGVybmF0aXZlbHksIHlvdSBjYW4gYWRqdXN0IHRoZSB2YWx1ZSBv
ZiB0aGF0IGZsYWcgZnJvbSB3aXRoaW4geW91cgotdGVzdHMgbGlrZSBzbzoKLQotYGBgCi0gIDo6
dGVzdGluZzo6RkxBR1NfZ21vY2tfdmVyYm9zZSA9ICJlcnJvciI7Ci1gYGAKLQotTm93LCBqdWRp
Y2lvdXNseSB1c2UgdGhlIHJpZ2h0IGZsYWcgdG8gZW5hYmxlIEdvb2dsZSBNb2NrIHNlcnZlIHlv
dSBiZXR0ZXIhCi0KLSMjIFJ1bm5pbmcgVGVzdHMgaW4gRW1hY3MgIyMKLQotSWYgeW91IGJ1aWxk
IGFuZCBydW4geW91ciB0ZXN0cyBpbiBFbWFjcywgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBv
ZgotR29vZ2xlIE1vY2sgYW5kIFtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZXRlc3QvKQotZXJyb3JzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxF
bnRlcj5gIG9uIG9uZSBvZiB0aGVtIGFuZAoteW91J2xsIGJlIHRha2VuIHRvIHRoZSBvZmZlbmRp
bmcgbGluZS4gT3IsIHlvdSBjYW4ganVzdCB0eXBlIGBDLXggYGAKLXRvIGp1bXAgdG8gdGhlIG5l
eHQgZXJyb3IuCi0KLVRvIG1ha2UgaXQgZXZlbiBlYXNpZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xs
b3dpbmcgbGluZXMgdG8geW91cgotYH4vLmVtYWNzYCBmaWxlOgotCi1gYGAKLShnbG9iYWwtc2V0
LWtleSAiXE0tbSIgICAnY29tcGlsZSkgIDsgbSBpcyBmb3IgbWFrZQotKGdsb2JhbC1zZXQta2V5
IFtNLWRvd25dICduZXh0LWVycm9yKQotKGdsb2JhbC1zZXQta2V5IFtNLXVwXSAgICcobGFtYmRh
ICgpIChpbnRlcmFjdGl2ZSkgKG5leHQtZXJyb3IgLTEpKSkKLWBgYAotCi1UaGVuIHlvdSBjYW4g
dHlwZSBgTS1tYCB0byBzdGFydCBhIGJ1aWxkLCBvciBgTS11cGAvYE0tZG93bmAgdG8gbW92ZQot
YmFjayBhbmQgZm9ydGggYmV0d2VlbiBlcnJvcnMuCi0KLSMjIEZ1c2luZyBHb29nbGUgTW9jayBT
b3VyY2UgRmlsZXMgIyMKLQotR29vZ2xlIE1vY2sncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBv
ZiBkb3plbnMgb2YgZmlsZXMgKGV4Y2x1ZGluZwotaXRzIG93biB0ZXN0cykuICBTb21ldGltZXMg
eW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2FnZWQgdXAgaW4KLWZld2VyIGZpbGVzIGluc3Rl
YWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUg
YW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1l
bnRhbAotUHl0aG9uIHNjcmlwdCBgZnVzZV9nbW9ja19maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRz
L2AgZGlyZWN0b3J5Ci0oc3RhcnRpbmcgd2l0aCByZWxlYXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlv
dSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUKLWluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1
c3QgZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9nbW9ja19m
aWxlcy5weSBPVVRQVVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRf
RElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAs
IGBnbW9jay9nbW9jay5oYCwgYW5kIGBnbW9jay1ndGVzdC1hbGwuY2NgIGluIGl0LgotVGhlc2Ug
dGhyZWUgZmlsZXMgY29udGFpbiBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgTW9j
ayAoYW5kCi1Hb29nbGUgVGVzdCkuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZSB5b3Ugd2Fu
dCBhbmQgeW91IGFyZSByZWFkeQotdG8gd3JpdGUgdGVzdHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBj
YW4gdXNlIHRoZQotW3NjcnB0cy90ZXN0L01ha2VmaWxlXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xlbW9jay9zb3VyY2UvYnJvd3NlL3RydW5rL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkg
ZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21waWxlIHlvdXIgdGVzdHMKLWFnYWluc3Qg
dGhlbS4KLQotIyBFeHRlbmRpbmcgR29vZ2xlIE1vY2sgIwotCi0jIyBXcml0aW5nIE5ldyBNYXRj
aGVycyBRdWlja2x5ICMjCi0KLVRoZSBgTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJl
IHVzZWQgdG8gZGVmaW5lIGN1c3RvbSBtYXRjaGVycwotZWFzaWx5LiAgVGhlIHN5bnRheDoKLQot
YGBgCi1NQVRDSEVSKG5hbWUsICJkZXNjcmlwdGlvbiBzdHJpbmciKSB7IHN0YXRlbWVudHM7IH0K
LWBgYAotCi13aWxsIGRlZmluZSBhIG1hdGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4
ZWN1dGVzIHRoZQotc3RhdGVtZW50cywgd2hpY2ggbXVzdCByZXR1cm4gYSBgYm9vbGAgdG8gaW5k
aWNhdGUgaWYgdGhlIG1hdGNoCi1zdWNjZWVkcy4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91
IGNhbiByZWZlciB0byB0aGUgdmFsdWUgYmVpbmcKLW1hdGNoZWQgYnkgYGFyZ2AsIGFuZCByZWZl
ciB0byBpdHMgdHlwZSBieSBgYXJnX3R5cGVgLgotCi1UaGUgZGVzY3JpcHRpb24gc3RyaW5nIGRv
Y3VtZW50cyB3aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkIHRvCi1nZW5lcmF0ZSB0
aGUgZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgU2luY2UgYQotYE1BVENI
RVIoKWAgaXMgdXN1YWxseSBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUgc2hhcmVkIGJ5IG11bHRp
cGxlIEMrKwotc291cmNlIGZpbGVzLCB3ZSByZXF1aXJlIHRoZSBkZXNjcmlwdGlvbiB0byBiZSBh
IEMtc3RyaW5nIF9saXRlcmFsXyB0bwotYXZvaWQgcG9zc2libGUgc2lkZSBlZmZlY3RzLiAgSXQg
Y2FuIGJlIGVtcHR5IChgIiJgKSwgaW4gd2hpY2ggY2FzZQotR29vZ2xlIE1vY2sgd2lsbCB1c2Ug
dGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgYXMgdGhlCi1kZXNjcmlw
dGlvbi4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2libGVCeTcsICIiKSB7
IHJldHVybiAoYXJnICUgNykgPT0gMDsgfQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAK
LSAgLy8gRXhwZWN0cyBtb2NrX2Zvby5CYXIobikgdG8gYmUgY2FsbGVkIHdoZXJlIG4gaXMgZGl2
aXNpYmxlIGJ5IDcuCi0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNEaXZpc2libGVCeTco
KSkpOwotYGBgCi1vciwKLWBgYAotICAvLyBWZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBzb21l
X2V4cHJlc3Npb24gaXMgZGl2aXNpYmxlIGJ5IDcuCi0gIEVYUEVDVF9USEFUKHNvbWVfZXhwcmVz
c2lvbiwgSXNEaXZpc2libGVCeTcoKSk7Ci1gYGAKLUlmIHRoZSBhYm92ZSBhc3NlcnRpb24gZmFp
bHMsIGl0IHdpbGwgcHJpbnQgc29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgVmFsdWUgb2Y6IHNvbWVf
ZXhwcmVzc2lvbgotICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1YWw6IDI3
Ci1gYGAKLXdoZXJlIHRoZSBkZXNjcmlwdGlvbiBgImlzIGRpdmlzaWJsZSBieSA3ImAgaXMgYXV0
b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20gdGhlCi1tYXRjaGVyIG5hbWUgYElzRGl2aXNpYmxl
Qnk3YC4KLQotT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRkaXRpb25hbCBpbmZvcm1hdGlv
biB0byBhIGhpZGRlbiBhcmd1bWVudAotbmFtZWQgYHJlc3VsdF9saXN0ZW5lcmAgdG8gZXhwbGFp
biB0aGUgbWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQotYmV0dGVyIGRlZmluaXRpb24gb2Yg
YElzRGl2aXNpYmxlQnk3YCBpczoKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsK
LSAgaWYgKChhcmcgJSA3KSA9PSAwKQotICAgIHJldHVybiB0cnVlOwotCi0gICpyZXN1bHRfbGlz
dGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7Ci0gIHJldHVybiBmYWxz
ZTsKLX0KLWBgYAotCi1XaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFib3ZlIGFzc2VydGlvbiB3
aWxsIGdpdmUgYSBiZXR0ZXIgbWVzc2FnZToKLWBgYAotICBWYWx1ZSBvZjogc29tZV9leHByZXNz
aW9uCi0gIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNwotICAgIEFjdHVhbDogMjcgKHRoZSBy
ZW1haW5kZXIgaXMgNikKLWBgYAotCi1Zb3Ugc2hvdWxkIGxldCBgTWF0Y2hBbmRFeHBsYWluKClg
IHByaW50IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KLXRoYXQgY2FuIGhlbHAgYSB1c2Vy
IHVuZGVyc3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0IHNob3VsZAotZXhwbGFp
biB3aHkgdGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNjZXNzICh1bmxlc3MgaXQn
cwotb2J2aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgaW5z
aWRlCi1gTm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50IHRoZSBhcmd1bWVudCB2YWx1
ZSBpdHNlbGYsIGFzCi1Hb29nbGUgTW9jayBhbHJlYWR5IHByaW50cyBpdCBmb3IgeW91LgotCi0q
Kk5vdGVzOioqCi0KLSAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgKGBh
cmdfdHlwZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0
aGUgbWF0Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBjb21waWxlciwgc28geW91
IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0IChub3IgY2FuIHlvdSkuICBU
aGlzIGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBg
SXNEaXZpc2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgd2hlcmUgdGhl
IHZhbHVlIG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRv
IGEgYGJvb2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTcoKSlgIGV4YW1wbGUgYWJvdmUs
IGlmIG1ldGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYGlu
dGA7IGlmIGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFyZ190eXBlYCB3aWxsIGJlIGB1
bnNpZ25lZCBsb25nYDsgYW5kIHNvIG9uLgotICAxLiBHb29nbGUgTW9jayBkb2Vzbid0IGd1YXJh
bnRlZSB3aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3aWxsIGJlIGludm9rZWQuIFRo
ZXJlZm9yZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGku
ZS4gaXQgY2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5v
dCBkZXBlbmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBh
bmQgdGhlIG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWlyZW1lbnQgbXVzdCBiZSBzYXRp
c2ZpZWQgbm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVyIChlLmcuIHVzaW5nIG9u
ZSBvZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyByZWNpcGVzKS4gSW4g
cGFydGljdWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEgbW9jayBmdW5jdGlvbiwgYXMg
dGhhdCB3aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2JqZWN0IGFuZCBHb29nbGUg
TW9jay4KLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRjaGVycyBRdWlja2x5ICMj
Ci0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBtYXRjaGVyIHRoYXQgaGFzIHBh
cmFtZXRlcnMuICBGb3IgdGhhdCB5b3UKLWNhbiB1c2UgdGhlIG1hY3JvOgotYGBgCi1NQVRDSEVS
X1AobmFtZSwgcGFyYW1fbmFtZSwgImRlc2NyaXB0aW9uIHN0cmluZyIpIHsgc3RhdGVtZW50czsg
fQotYGBgCi0KLUZvciBleGFtcGxlOgotYGBgCi1NQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwg
dmFsdWUsICIiKSB7IHJldHVybiBhYnMoYXJnKSA9PSB2YWx1ZTsgfQotYGBgCi13aWxsIGFsbG93
IHlvdSB0byB3cml0ZToKLWBgYAotICBFWFBFQ1RfVEhBVChCbGFoKCJhIiksIEhhc0Fic29sdXRl
VmFsdWUobikpOwotYGBgCi13aGljaCBtYXkgbGVhZCB0byB0aGlzIG1lc3NhZ2UgKGFzc3VtaW5n
IGBuYCBpcyAxMCk6Ci1gYGAKLSAgVmFsdWUgb2Y6IEJsYWgoImEiKQotICBFeHBlY3RlZDogaGFz
IGFic29sdXRlIHZhbHVlIDEwCi0gICAgQWN0dWFsOiAtOQotYGBgCi0KLU5vdGUgdGhhdCBib3Ro
IHRoZSBtYXRjaGVyIGRlc2NyaXB0aW9uIGFuZCBpdHMgcGFyYW1ldGVyIGFyZQotcHJpbnRlZCwg
bWFraW5nIHRoZSBtZXNzYWdlIGh1bWFuLWZyaWVuZGx5LgotCi1JbiB0aGUgbWF0Y2hlciBkZWZp
bml0aW9uIGJvZHksIHlvdSBjYW4gd3JpdGUgYGZvb190eXBlYCB0bwotcmVmZXJlbmNlIHRoZSB0
eXBlIG9mIGEgcGFyYW1ldGVyIG5hbWVkIGBmb29gLiAgRm9yIGV4YW1wbGUsIGluIHRoZQotYm9k
eSBvZiBgTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKWAgYWJvdmUsIHlvdSBjYW4g
d3JpdGUKLWB2YWx1ZV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiBgdmFsdWVgLgotCi1H
b29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBNQVRDSEVSX1AyYCwgYE1BVENIRVJfUDNgLCAuLi4s
IHVwIHRvCi1gTUFUQ0hFUl9QMTBgIHRvIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVyIG1hdGNoZXJz
OgotYGBgCi1NQVRDSEVSX1BrKG5hbWUsIHBhcmFtXzEsIC4uLiwgcGFyYW1faywgImRlc2NyaXB0
aW9uIHN0cmluZyIpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhl
IGN1c3RvbSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFydGljdWxhcgotKippbnN0YW5j
ZSoqIG9mIHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYm91bmQg
dG8KLWFjdHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5b3UnbGwgd2FudCB0aGUgcGFy
YW1ldGVyIHZhbHVlcyB0bwotYmUgcGFydCBvZiB0aGUgZGVzY3JpcHRpb24uICBHb29nbGUgTW9j
ayBsZXRzIHlvdSBkbyB0aGF0IHVzaW5nCi1QeXRob24tc3R5bGUgaW50ZXJwb2xhdGlvbnMuICBU
aGUgZm9sbG93aW5nIHN5bnRheGVzIGFyZSBzdXBwb3J0ZWQKLWN1cnJlbnRseToKLQotfCBgJSVg
IHwgYSBzaW5nbGUgYCVgIGNoYXJhY3RlciB8Ci18Oi0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXwgYCUoKilzYCB8IGFsbCBwYXJhbWV0ZXJzIG9mIHRoZSBtYXRjaGVyIHByaW50ZWQg
YXMgYSB0dXBsZSB8Ci18IGAlKGZvbylzYCB8IHZhbHVlIG9mIHRoZSBtYXRjaGVyIHBhcmFtZXRl
ciBuYW1lZCBgZm9vYCB8Ci0KLUZvciBleGFtcGxlLAotYGBgCi0gIE1BVENIRVJfUDIoSW5DbG9z
ZWRSYW5nZSwgbG93LCBoaSwgImlzIGluIHJhbmdlIFslKGxvdylzLCAlKGhpKXNdIikgewotICAg
IHJldHVybiBsb3cgPD0gYXJnICYmIGFyZyA8PSBoaTsKLSAgfQotICAuLi4KLSAgRVhQRUNUX1RI
QVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci1gYGAKLXdvdWxkIGdlbmVyYXRlIGEgZmFpbHVy
ZSB0aGF0IGNvbnRhaW5zIHRoZSBtZXNzYWdlOgotYGBgCi0gIEV4cGVjdGVkOiBpcyBpbiByYW5n
ZSBbNCwgNl0KLWBgYAotCi1JZiB5b3Ugc3BlY2lmeSBgIiJgIGFzIHRoZSBkZXNjcmlwdGlvbiwg
dGhlIGZhaWx1cmUgbWVzc2FnZSB3aWxsCi1jb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBp
biB0aGUgbWF0Y2hlciBuYW1lIGZvbGxvd2VkIGJ5IHRoZQotcGFyYW1ldGVyIHZhbHVlcyBwcmlu
dGVkIGFzIGEgdHVwbGUuICBGb3IgZXhhbXBsZSwKLWBgYAotICBNQVRDSEVSX1AyKEluQ2xvc2Vk
UmFuZ2UsIGxvdywgaGksICIiKSB7IC4uLiB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgzLCBJbkNs
b3NlZFJhbmdlKDQsIDYpKTsKLWBgYAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQgY29u
dGFpbnMgdGhlIHRleHQ6Ci1gYGAKLSAgRXhwZWN0ZWQ6IGluIGNsb3NlZCByYW5nZSAoNCwgNikK
LWBgYAotCi1Gb3IgdGhlIHB1cnBvc2Ugb2YgdHlwaW5nLCB5b3UgY2FuIHZpZXcKLWBgYAotTUFU
Q0hFUl9QayhGb28sIHAxLCAuLi4sIHBrLCAiZGVzY3JpcHRpb24gc3RyaW5nIikgeyAuLi4gfQot
YGBgCi1hcyBzaG9ydGhhbmQgZm9yCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAu
Li4sIHR5cGVuYW1lIHBrX3R5cGU+Ci1Gb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBl
PgotRm9vKHAxX3R5cGUgcDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotYGBgCi0KLVdoZW4g
eW91IHdyaXRlIGBGb28odjEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlw
ZXMgb2YKLXRoZSBwYXJhbWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4gIElmIHlv
dSBhcmUgbm90IGhhcHB5IHdpdGgKLXRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5
b3UgY2FuIHNwZWNpZnkgdGhlIHR5cGVzIGJ5Ci1leHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhl
IHRlbXBsYXRlLCBhcyBpbiBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCi1BcyBzYWlkIGVh
cmxpZXIsIHlvdSBkb24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLWBhcmdfdHlwZWAg
YXMgdGhhdCdzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIK
LWlzIHVzZWQuCi0KLVlvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBgRm9v
KHAxLCAuLi4sIHBrKWAgdG8gYQotdmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBrPHAxX3R5
cGUsIC4uLiwgcGtfdHlwZT5gLiAgVGhpcyBjYW4gYmUKLXVzZWZ1bCB3aGVuIGNvbXBvc2luZyBt
YXRjaGVycy4gIE1hdGNoZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgotb3IgaGF2ZSBv
bmx5IG9uZSBwYXJhbWV0ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2lnbiBgRm9v
KClgCi10byBhIGBGb29NYXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBgRm9vKHAp
YCB0byBhCi1gRm9vTWF0Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCi0KLVdoaWxlIHlv
dSBjYW4gaW5zdGFudGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVz
LAotcGFzc2luZyB0aGUgcGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMgeW91ciBj
b2RlIG1vcmUKLXJlYWRhYmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3Mg
YSBwYXJhbWV0ZXIgYnkKLXJlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBt
ZXNzYWdlIGdlbmVyYXRlZCBieSB0aGUKLW1hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBv
ZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QgYnV0IG5vdCBpdHMKLWFkZHJlc3MuCi0KLVlvdSBjYW4g
b3ZlcmxvYWQgbWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgot
YGBgCi1NQVRDSEVSX1AoQmxhaCwgYSwgImRlc2NyaXB0aW9uIHN0cmluZyAxIikgeyAuLi4gfQot
TUFUQ0hFUl9QMihCbGFoLCBhLCBiLCAiZGVzY3JpcHRpb24gc3RyaW5nIDIiKSB7IC4uLiB9Ci1g
YGAKLQotV2hpbGUgaXQncyB0ZW1wdGluZyB0byBhbHdheXMgdXNlIHRoZSBgTUFUQ0hFUipgIG1h
Y3JvcyB3aGVuIGRlZmluaW5nCi1hIG5ldyBtYXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lk
ZXIgaW1wbGVtZW50aW5nCi1gTWF0Y2hlckludGVyZmFjZWAgb3IgdXNpbmcgYE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoKWAgaW5zdGVhZCAoc2VlCi10aGUgcmVjaXBlcyB0aGF0IGZvbGxvdyksIGVz
cGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gdXNlIHRoZSBtYXRjaGVyIGEKLWxvdC4gIFdoaWxlIHRo
ZXNlIGFwcHJvYWNoZXMgcmVxdWlyZSBtb3JlIHdvcmssIHRoZXkgZ2l2ZSB5b3UgbW9yZQotY29u
dHJvbCBvbiB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRj
aGVyCi1wYXJhbWV0ZXJzLCB3aGljaCBpbiBnZW5lcmFsIGxlYWRzIHRvIGJldHRlciBjb21waWxl
ciBlcnJvciBtZXNzYWdlcwotdGhhdCBwYXkgb2ZmIGluIHRoZSBsb25nIHJ1bi4gIFRoZXkgYWxz
byBhbGxvdyBvdmVybG9hZGluZyBtYXRjaGVycwotYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChh
cyBvcHBvc2VkIHRvIGp1c3QgYmFzZWQgb24gdGhlIG51bWJlciBvZgotcGFyYW1ldGVycykuCi0K
LSMjIFdyaXRpbmcgTmV3IE1vbm9tb3JwaGljIE1hdGNoZXJzICMjCi0KLUEgbWF0Y2hlciBvZiBh
cmd1bWVudCB0eXBlIGBUYCBpbXBsZW1lbnRzCi1gOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNl
PFQ+YCBhbmQgZG9lcyB0d28gdGhpbmdzOiBpdCB0ZXN0cyB3aGV0aGVyIGEKLXZhbHVlIG9mIHR5
cGUgYFRgIG1hdGNoZXMgdGhlIG1hdGNoZXIsIGFuZCBjYW4gZGVzY3JpYmUgd2hhdCBraW5kIG9m
Ci12YWx1ZXMgaXQgbWF0Y2hlcy4gVGhlIGxhdHRlciBhYmlsaXR5IGlzIHVzZWQgZm9yIGdlbmVy
YXRpbmcgcmVhZGFibGUKLWVycm9yIG1lc3NhZ2VzIHdoZW4gZXhwZWN0YXRpb25zIGFyZSB2aW9s
YXRlZC4KLQotVGhlIGludGVyZmFjZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYAotY2xhc3MgTWF0
Y2hSZXN1bHRMaXN0ZW5lciB7Ci0gcHVibGljOgotICAuLi4KLSAgLy8gU3RyZWFtcyB4IHRvIHRo
ZSB1bmRlcmx5aW5nIG9zdHJlYW07IGRvZXMgbm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAvLyBp
cyBOVUxMLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5lciYg
b3BlcmF0b3I8PChjb25zdCBUJiB4KTsKLQotICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIG9z
dHJlYW0uCi0gIDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0oKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgTWF0Y2hlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5N
YXRjaGVySW50ZXJmYWNlKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBt
YXRjaGVzIHg7IGFsc28gZXhwbGFpbnMgdGhlIG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlzdGVu
ZXInLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMgdGhpcyBtYXRjaGVy
IHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBt
YXRjaGVyIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsKLX07Ci1gYGAKLQotSWYgeW91IG5lZWQgYSBjdXN0
b20gbWF0Y2hlciBidXQgYFRydWx5KClgIGlzIG5vdCBhIGdvb2Qgb3B0aW9uIChmb3IKLWV4YW1w
bGUsIHlvdSBtYXkgbm90IGJlIGhhcHB5IHdpdGggdGhlIHdheSBgVHJ1bHkocHJlZGljYXRlKWAK
LWRlc2NyaWJlcyBpdHNlbGYsIG9yIHlvdSBtYXkgd2FudCB5b3VyIG1hdGNoZXIgdG8gYmUgcG9s
eW1vcnBoaWMgYXMKLWBFcSh2YWx1ZSlgIGlzKSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRv
IGRvIHdoYXRldmVyIHlvdSB3YW50IGluCi10d28gc3RlcHM6IGZpcnN0IGltcGxlbWVudCB0aGUg
bWF0Y2hlciBpbnRlcmZhY2UsIGFuZCB0aGVuIGRlZmluZSBhCi1mYWN0b3J5IGZ1bmN0aW9uIHRv
IGNyZWF0ZSBhIG1hdGNoZXIgaW5zdGFuY2UuIFRoZSBzZWNvbmQgc3RlcCBpcyBub3QKLXN0cmlj
dGx5IG5lZWRlZCBidXQgaXQgbWFrZXMgdGhlIHN5bnRheCBvZiB1c2luZyB0aGUgbWF0Y2hlciBu
aWNlci4KLQotRm9yIGV4YW1wbGUsIHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byB0ZXN0IHdo
ZXRoZXIgYW4gYGludGAgaXMKLWRpdmlzaWJsZSBieSA3IGFuZCB0aGVuIHVzZSBpdCBsaWtlIHRo
aXM6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWFrZU1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6
Ok1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRl
c3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci0KLWNsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgcmV0dXJuIChuICUgNykgPT0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgZGl2
aXNpYmxlIGJ5IDciOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIG5vdCBkaXZpc2libGUg
YnkgNyI7Ci0gIH0KLX07Ci0KLWlubGluZSBNYXRjaGVyPGludD4gRGl2aXNpYmxlQnk3KCkgewot
ICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IERpdmlzaWJsZUJ5N01hdGNoZXIpOwotfQotLi4uCi0K
LSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoRGl2aXNpYmxlQnk3KCkpKTsKLWBgYAotCi1Zb3UgbWF5
IGltcHJvdmUgdGhlIG1hdGNoZXIgbWVzc2FnZSBieSBzdHJlYW1pbmcgYWRkaXRpb25hbAotaW5m
b3JtYXRpb24gdG8gdGhlIGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4gYE1hdGNoQW5kRXhwbGFpbigp
YDoKLQotYGBgCi1jbGFzcyBEaXZpc2libGVCeTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRl
cmZhY2U8aW50PiB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGlu
dCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIq
IGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgY29uc3QgaW50IHJlbWFpbmRlciA9IG4gJSA3OwotICAg
IGlmIChyZW1haW5kZXIgIT0gMCkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVy
IGlzICIgPDwgcmVtYWluZGVyOwotICAgIH0KLSAgICByZXR1cm4gcmVtYWluZGVyID09IDA7Ci0g
IH0KLSAgLi4uCi19OwotYGBgCi0KLVRoZW4sIGBFWFBFQ1RfVEhBVCh4LCBEaXZpc2libGVCeTco
KSk7YCBtYXkgZ2VuZXJhbCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgotYGBgCi1WYWx1ZSBvZjogeAot
RXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3Ci0gIEFjdHVhbDogMjMgKHRoZSByZW1haW5kZXIg
aXMgMikKLWBgYAotCi0jIyBXcml0aW5nIE5ldyBQb2x5bW9ycGhpYyBNYXRjaGVycyAjIwotCi1Z
b3UndmUgbGVhcm5lZCBob3cgdG8gd3JpdGUgeW91ciBvd24gbWF0Y2hlcnMgaW4gdGhlIHByZXZp
b3VzCi1yZWNpcGUuIEp1c3Qgb25lIHByb2JsZW06IGEgbWF0Y2hlciBjcmVhdGVkIHVzaW5nIGBN
YWtlTWF0Y2hlcigpYCBvbmx5Ci13b3JrcyBmb3Igb25lIHBhcnRpY3VsYXIgdHlwZSBvZiBhcmd1
bWVudHMuIElmIHlvdSB3YW50IGEKLV9wb2x5bW9ycGhpY18gbWF0Y2hlciB0aGF0IHdvcmtzIHdp
dGggYXJndW1lbnRzIG9mIHNldmVyYWwgdHlwZXMgKGZvcgotaW5zdGFuY2UsIGBFcSh4KWAgY2Fu
IGJlIHVzZWQgdG8gbWF0Y2ggYSBgdmFsdWVgIGFzIGxvbmcgYXMgYHZhbHVlYCA9PQotYHhgIGNv
bXBpbGVzIC0tIGB2YWx1ZWAgYW5kIGB4YCBkb24ndCBoYXZlIHRvIHNoYXJlIHRoZSBzYW1lIHR5
cGUpLAoteW91IGNhbiBsZWFybiB0aGUgdHJpY2sgZnJvbSBgPGdtb2NrL2dtb2NrLW1hdGNoZXJz
Lmg+YCBidXQgaXQncyBhIGJpdAotaW52b2x2ZWQuCi0KLUZvcnR1bmF0ZWx5LCBtb3N0IG9mIHRo
ZSB0aW1lIHlvdSBjYW4gZGVmaW5lIGEgcG9seW1vcnBoaWMgbWF0Y2hlcgotZWFzaWx5IHdpdGgg
dGhlIGhlbHAgb2YgYE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKWAuIEhlcmUncyBob3cgeW91IGNh
bgotZGVmaW5lIGBOb3ROdWxsKClgIGFzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3Vs
dExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpQ
b2x5bW9ycGhpY01hdGNoZXI7Ci0KLWNsYXNzIE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0g
IC8vIFRvIGltcGxlbWVudCBhIHBvbHltb3JwaGljIG1hdGNoZXIsIGZpcnN0IGRlZmluZSBhIENP
UFlBQkxFIGNsYXNzCi0gIC8vIHRoYXQgaGFzIHRocmVlIG1lbWJlcnMgTWF0Y2hBbmRFeHBsYWlu
KCksIERlc2NyaWJlVG8oKSwgYW5kCi0gIC8vIERlc2NyaWJlTmVnYXRpb25UbygpLCBsaWtlIHRo
ZSBmb2xsb3dpbmcuCi0KLSAgLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB3YW50IHRvIHVzZSBOb3RO
dWxsKCkgd2l0aCBhbnkgcG9pbnRlciwgc28KLSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgYWNjZXB0
cyBhIHBvaW50ZXIgb2YgYW55IHR5cGUgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LgotICAvLyBJbiBn
ZW5lcmFsLCB5b3UgY2FuIGRlZmluZSBNYXRjaEFuZEV4cGxhaW4oKSBhcyBhbiBvcmRpbmFyeSBt
ZXRob2Qgb3IKLSAgLy8gYSBtZXRob2QgdGVtcGxhdGUsIG9yIGV2ZW4gb3ZlcmxvYWQgaXQuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihUKiBwLAotICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykg
Y29uc3QgewotICAgIHJldHVybiBwICE9IE5VTEw7Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgdGhl
IHByb3BlcnR5IG9mIGEgdmFsdWUgbWF0Y2hpbmcgdGhpcyBtYXRjaGVyLgotICB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgbm90IE5VTEwiOyB9
Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIE5PVCBtYXRjaGluZyB0
aGlzIG1hdGNoZXIuCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeyAqb3MgPDwgImlzIE5VTEwiOyB9Ci19OwotCi0vLyBUbyBjb25zdHJ1Y3QgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyLCBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcwotLy8gdG8g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcigpLiAgTm90ZSB0aGUgcmV0dXJuIHR5cGUuCi1pbmxpbmUg
UG9seW1vcnBoaWNNYXRjaGVyPE5vdE51bGxNYXRjaGVyPiBOb3ROdWxsKCkgewotICByZXR1cm4g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcihOb3ROdWxsTWF0Y2hlcigpKTsKLX0KLS4uLgotCi0gIEVY
UEVDVF9DQUxMKGZvbywgQmFyKE5vdE51bGwoKSkpOyAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tTlVMTCBwb2ludGVyLgotYGBgCi0KLSoqTm90ZToqKiBZb3VyIHBvbHltb3JwaGljIG1h
dGNoZXIgY2xhc3MgZG9lcyAqKm5vdCoqIG5lZWQgdG8gaW5oZXJpdCBmcm9tCi1gTWF0Y2hlcklu
dGVyZmFjZWAgb3IgYW55IG90aGVyIGNsYXNzLCBhbmQgaXRzIG1ldGhvZHMgZG8gKipub3QqKiBu
ZWVkCi10byBiZSB2aXJ0dWFsLgotCi1MaWtlIGluIGEgbW9ub21vcnBoaWMgbWF0Y2hlciwgeW91
IG1heSBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQgYnkKLXN0cmVhbWluZyBhZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJgIGFyZ3VtZW50IGluCi1gTWF0Y2hBbmRFeHBsYWlu
KClgLgotCi0jIyBXcml0aW5nIE5ldyBDYXJkaW5hbGl0aWVzICMjCi0KLUEgY2FyZGluYWxpdHkg
aXMgdXNlZCBpbiBgVGltZXMoKWAgdG8gdGVsbCBHb29nbGUgTW9jayBob3cgbWFueSB0aW1lcwot
eW91IGV4cGVjdCBhIGNhbGwgdG8gb2NjdXIuIEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBleGFjdC4g
Rm9yIGV4YW1wbGUsCi15b3UgY2FuIHNheSBgQXRMZWFzdCg1KWAgb3IgYEJldHdlZW4oMiwgNClg
LgotCi1JZiB0aGUgYnVpbHQtaW4gc2V0IG9mIGNhcmRpbmFsaXRpZXMgZG9lc24ndCBzdWl0IHlv
dSwgeW91IGFyZSBmcmVlIHRvCi1kZWZpbmUgeW91ciBvd24gYnkgaW1wbGVtZW50aW5nIHRoZSBm
b2xsb3dpbmcgaW50ZXJmYWNlIChpbiBuYW1lc3BhY2UKLWB0ZXN0aW5nYCk6Ci0KLWBgYAotY2xh
c3MgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Q2FyZGluYWxp
dHlJbnRlcmZhY2UoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMg
d2lsbCBzYXRpc2Z5IHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmll
ZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4K
LSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNv
bnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci1gYGAK
LQotRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhhdCBhIGNhbGwgbXVzdCBvY2N1ciBldmVuIG51
bWJlciBvZiB0aW1lcywKLXlvdSBjYW4gd3JpdGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkNh
cmRpbmFsaXR5OwotdXNpbmcgOjp0ZXN0aW5nOjpDYXJkaW5hbGl0eUludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWFrZUNhcmRpbmFsaXR5OwotCi1jbGFzcyBFdmVuTnVtYmVyQ2FyZGluYWxp
dHkgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCBi
b29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gKGNhbGxfY291bnQgJSAyKSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCBib29sIElzU2F0
dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0IHsKLSAgICAqb3MgPDwgImNhbGxlZCBldmVuIG51bWJlciBvZiB0aW1lcyI7Ci0gIH0K
LX07Ci0KLUNhcmRpbmFsaXR5IEV2ZW5OdW1iZXIoKSB7Ci0gIHJldHVybiBNYWtlQ2FyZGluYWxp
dHkobmV3IEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChm
b28sIEJhcigzKSkKLSAgICAgIC5UaW1lcyhFdmVuTnVtYmVyKCkpOwotYGBgCi0KLSMjIFdyaXRp
bmcgTmV3IEFjdGlvbnMgUXVpY2tseSAjIwotCi1JZiB0aGUgYnVpbHQtaW4gYWN0aW9ucyBkb24n
dCB3b3JrIGZvciB5b3UsIGFuZCB5b3UgZmluZCBpdAotaW5jb252ZW5pZW50IHRvIHVzZSBgSW52
b2tlKClgLCB5b3UgY2FuIHVzZSBhIG1hY3JvIGZyb20gdGhlIGBBQ1RJT04qYAotZmFtaWx5IHRv
IHF1aWNrbHkgZGVmaW5lIGEgbmV3IGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHlvdXIgY29k
ZSBhcwotaWYgaXQncyBhIGJ1aWx0LWluIGFjdGlvbi4KLQotQnkgd3JpdGluZwotYGBgCi1BQ1RJ
T04obmFtZSkgeyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLWluIGEgbmFtZXNwYWNlIHNjb3BlIChpLmUu
IG5vdCBpbnNpZGUgYSBjbGFzcyBvciBmdW5jdGlvbiksIHlvdSB3aWxsCi1kZWZpbmUgYW4gYWN0
aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cy4KLVRo
ZSB2YWx1ZSByZXR1cm5lZCBieSBgc3RhdGVtZW50c2Agd2lsbCBiZSB1c2VkIGFzIHRoZSByZXR1
cm4gdmFsdWUgb2YKLXRoZSBhY3Rpb24uICBJbnNpZGUgdGhlIHN0YXRlbWVudHMsIHlvdSBjYW4g
cmVmZXIgdG8gdGhlIEstdGgKLSgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlv
biBhcyBgYXJnS2AuICBGb3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEluY3JlbWVudEFyZzEpIHsg
cmV0dXJuICsrKCphcmcxKTsgfQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLS4uLiBX
aWxsT25jZShJbmNyZW1lbnRBcmcxKCkpOwotYGBgCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVl
ZCB0byBzcGVjaWZ5IHRoZSB0eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbgotYXJndW1lbnRzLiAg
UmVzdCBhc3N1cmVkIHRoYXQgeW91ciBjb2RlIGlzIHR5cGUtc2FmZSB0aG91Z2g6Ci15b3UnbGwg
Z2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgYCphcmcxYCBkb2Vzbid0IHN1cHBvcnQgdGhlIGArK2AK
LW9wZXJhdG9yLCBvciBpZiB0aGUgdHlwZSBvZiBgKysoKmFyZzEpYCBpc24ndCBjb21wYXRpYmxl
IHdpdGggdGhlIG1vY2sKLWZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0KLUFub3RoZXIgZXhhbXBs
ZToKLWBgYAotQUNUSU9OKEZvbykgewotICAoKmFyZzIpKDUpOwotICBCbGFoKCk7Ci0gICphcmcx
ID0gMDsKLSAgcmV0dXJuIGFyZzA7Ci19Ci1gYGAKLWRlZmluZXMgYW4gYWN0aW9uIGBGb28oKWAg
dGhhdCBpbnZva2VzIGFyZ3VtZW50ICMyIChhIGZ1bmN0aW9uIHBvaW50ZXIpCi13aXRoIDUsIGNh
bGxzIGZ1bmN0aW9uIGBCbGFoKClgLCBzZXRzIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGFyZ3Vt
ZW50Ci0jMSB0byAwLCBhbmQgcmV0dXJucyBhcmd1bWVudCAjMC4KLQotRm9yIG1vcmUgY29udmVu
aWVuY2UgYW5kIGZsZXhpYmlsaXR5LCB5b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcKLXBy
ZS1kZWZpbmVkIHN5bWJvbHMgaW4gdGhlIGJvZHkgb2YgYEFDVElPTmA6Ci0KLXwgYGFyZ0tfdHlw
ZWAgfCBUaGUgdHlwZSBvZiB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gfAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBhcmdzYCAgICAgIHwgQWxsIGFy
Z3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgICAgICAgICAgICAgIHwK
LXwgYGFyZ3NfdHlwZWAgfCBUaGUgdHlwZSBvZiBhbGwgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uIGFzIGEgdHVwbGUgICAgfAotfCBgcmV0dXJuX3R5cGVgIHwgVGhlIHJldHVybiB0eXBl
IG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGZ1bmN0
aW9uX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKLQotRm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgYW4gYEFDVElPTmAg
YXMgYSBzdHViIGFjdGlvbiBmb3IgbW9jayBmdW5jdGlvbjoKLWBgYAotaW50IERvU29tZXRoaW5n
KGJvb2wgZmxhZywgaW50KiBwdHIpOwotYGBgCi13ZSBoYXZlOgotfCAqKlByZS1kZWZpbmVkIFN5
bWJvbCoqIHwgKipJcyBCb3VuZCBUbyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS18Ci18IGBhcmcwYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2Yg
YGZsYWdgIHwKLXwgYGFyZzBfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBib29sYCB8Ci18
IGBhcmcxYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYHB0cmAgfAotfCBgYXJnMV90
eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGludCpgIHwKLXwgYGFyZ3NgICAgICAgICAgICAg
ICAgICB8IHRoZSB0dXBsZSBgKGZsYWcsIHB0cilgIHwKLXwgYGFyZ3NfdHlwZWAgICAgICAgICAg
ICB8IHRoZSB0eXBlIGBzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKLXwgYHJldHVybl90
eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBpbnRgICB8Ci18IGBmdW5jdGlvbl90eXBlYCAgICAg
ICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGludCopYCB8Ci0KLSMjIFdyaXRpbmcgTmV3IFBhcmFt
ZXRlcml6ZWQgQWN0aW9ucyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBw
YXJhbWV0ZXJpemUgYW4gYWN0aW9uIHlvdSBkZWZpbmUuICBGb3IgdGhhdAotd2UgaGF2ZSBhbm90
aGVyIG1hY3JvCi1gYGAKLUFDVElPTl9QKG5hbWUsIHBhcmFtKSB7IHN0YXRlbWVudHM7IH0KLWBg
YAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1AoQWRkLCBuKSB7IHJldHVybiBhcmcwICsg
bjsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0ZQotYGBgCi0vLyBSZXR1cm5zIGFyZ3Vt
ZW50ICMwICsgNS4KLS4uLiBXaWxsT25jZShBZGQoNSkpOwotYGBgCi0KLUZvciBjb252ZW5pZW5j
ZSwgd2UgdXNlIHRoZSB0ZXJtIF9hcmd1bWVudHNfIGZvciB0aGUgdmFsdWVzIHVzZWQgdG8KLWlu
dm9rZSB0aGUgbW9jayBmdW5jdGlvbiwgYW5kIHRoZSB0ZXJtIF9wYXJhbWV0ZXJzXyBmb3IgdGhl
IHZhbHVlcwotdXNlZCB0byBpbnN0YW50aWF0ZSBhbiBhY3Rpb24uCi0KLU5vdGUgdGhhdCB5b3Ug
ZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgZWl0aGVyLgot
U3VwcG9zZSB0aGUgcGFyYW1ldGVyIGlzIG5hbWVkIGBwYXJhbWAsIHlvdSBjYW4gYWxzbyB1c2Ug
dGhlCi1Hb29nbGUtTW9jay1kZWZpbmVkIHN5bWJvbCBgcGFyYW1fdHlwZWAgdG8gcmVmZXIgdG8g
dGhlIHR5cGUgb2YgdGhlCi1wYXJhbWV0ZXIgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAg
Rm9yIGV4YW1wbGUsIGluIHRoZSBib2R5IG9mCi1gQUNUSU9OX1AoQWRkLCBuKWAgYWJvdmUsIHlv
dSBjYW4gd3JpdGUgYG5fdHlwZWAgZm9yIHRoZSB0eXBlIG9mIGBuYC4KLQotR29vZ2xlIE1vY2sg
YWxzbyBwcm92aWRlcyBgQUNUSU9OX1AyYCwgYEFDVElPTl9QM2AsIGFuZCBldGMgdG8gc3VwcG9y
dAotbXVsdGktcGFyYW1ldGVyIGFjdGlvbnMuICBGb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1Ay
KFJldHVybkRpc3RhbmNlVG8sIHgsIHkpIHsKLSAgZG91YmxlIGR4ID0gYXJnMCAtIHg7Ci0gIGRv
dWJsZSBkeSA9IGFyZzEgLSB5OwotICByZXR1cm4gc3FydChkeCpkeCArIGR5KmR5KTsKLX0KLWBg
YAotbGV0cyB5b3Ugd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKFJldHVybkRpc3RhbmNlVG8oNS4w
LCAyNi41KSk7Ci1gYGAKLQotWW91IGNhbiB2aWV3IGBBQ1RJT05gIGFzIGEgZGVnZW5lcmF0ZWQg
cGFyYW1ldGVyaXplZCBhY3Rpb24gd2hlcmUgdGhlCi1udW1iZXIgb2YgcGFyYW1ldGVycyBpcyAw
LgotCi1Zb3UgY2FuIGFsc28gZWFzaWx5IGRlZmluZSBhY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhl
IG51bWJlciBvZiBwYXJhbWV0ZXJzOgotYGBgCi1BQ1RJT05fUChQbHVzLCBhKSB7IC4uLiB9Ci1B
Q1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQotYGBgCi0KLSMjIFJlc3RyaWN0aW5nIHRoZSBU
eXBlIG9mIGFuIEFyZ3VtZW50IG9yIFBhcmFtZXRlciBpbiBhbiBBQ1RJT04gIyMKLQotRm9yIG1h
eGltdW0gYnJldml0eSBhbmQgcmV1c2FiaWxpdHksIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGRvbid0
IGFzawoteW91IHRvIHByb3ZpZGUgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3Vt
ZW50cyBhbmQgdGhlIGFjdGlvbgotcGFyYW1ldGVycy4gIEluc3RlYWQsIHdlIGxldCB0aGUgY29t
cGlsZXIgaW5mZXIgdGhlIHR5cGVzIGZvciB1cy4KLQotU29tZXRpbWVzLCBob3dldmVyLCB3ZSBt
YXkgd2FudCB0byBiZSBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJlIGFyZSBz
ZXZlcmFsIHRyaWNrcyB0byBkbyB0aGF0LiAgRm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28p
IHsKLSAgLy8gTWFrZXMgc3VyZSBhcmcwIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50LgotICBpbnQg
biA9IGFyZzA7Ci0gIC4uLiB1c2UgbiBpbnN0ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0KLQotQUNU
SU9OX1AoQmFyLCBwYXJhbSkgewotICAvLyBNYWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFyZzEgaXMg
Y29uc3QgY2hhciouCi0gIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIq
LCBhcmcxX3R5cGU+KCk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29udmVydGVk
IHRvIGJvb2wuCi0gIGJvb2wgZmxhZyA9IHBhcmFtOwotfQotYGBgCi13aGVyZSBgU3RhdGljQXNz
ZXJ0VHlwZUVxYCBpcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gaW4gR29vZ2xlIFRlc3QKLXRo
YXQgdmVyaWZpZXMgdHdvIHR5cGVzIGFyZSB0aGUgc2FtZS4KLQotIyMgV3JpdGluZyBOZXcgQWN0
aW9uIFRlbXBsYXRlcyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFu
IGFjdGlvbiBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKLWNhbm5vdCBiZSBpbmZl
cnJlZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0ZXJzLiAgYEFDVElPTl9URU1QTEFURSgpYAotc3Vw
cG9ydHMgdGhhdCBhbmQgY2FuIGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gYEFDVElPTigp
YCBhbmQKLWBBQ1RJT05fUCooKWAuCi0KLVRoZSBzeW50YXg6Ci1gYGAKLUFDVElPTl9URU1QTEFU
RShBY3Rpb25OYW1lLAotICAgICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5k
MSwgbmFtZTEsIC4uLiwga2luZF9tLCBuYW1lX20pLAotICAgICAgICAgICAgICAgIEFORF9uX1ZB
TFVFX1BBUkFNUyhwMSwgLi4uLCBwX24pKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1kZWZpbmVz
IGFuIGFjdGlvbiB0ZW1wbGF0ZSB0aGF0IHRha2VzIF9tXyBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJh
bWV0ZXJzCi1hbmQgX25fIHZhbHVlIHBhcmFtZXRlcnMsIHdoZXJlIF9tXyBpcyBiZXR3ZWVuIDEg
YW5kIDEwLCBhbmQgX25fIGlzCi1iZXR3ZWVuIDAgYW5kIDEwLiAgYG5hbWVfaWAgaXMgdGhlIG5h
bWUgb2YgdGhlIGktdGggdGVtcGxhdGUKLXBhcmFtZXRlciwgYW5kIGBraW5kX2lgIHNwZWNpZmll
cyB3aGV0aGVyIGl0J3MgYSBgdHlwZW5hbWVgLCBhbgotaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEg
dGVtcGxhdGUuICBgcF9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB2YWx1ZQotcGFyYW1ldGVy
LgotCi1FeGFtcGxlOgotYGBgCi0vLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0
cyB0aGUgay10aCBhcmd1bWVudCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24gdG8gdHlwZSBUIGFu
ZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KLUFDVElPTl9URU1QTEFURShEdXBsaWNhdGVBcmcsCi0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgY29tbWEgYmV0d2VlbiBpbnQgYW5kIGs6Ci0gICAg
ICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUsIFQpLAot
ICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0gICpvdXRwdXQg
PSBUKHN0ZDo6dHIxOjpnZXQ8az4oYXJncykpOwotfQotYGBgCi0KLVRvIGNyZWF0ZSBhbiBpbnN0
YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxhdGUsIHdyaXRlOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEs
IC4uLiwgdF9tPih2MSwgLi4uLCB2X24pCi1gYGAKLXdoZXJlIHRoZSBgdGBzIGFyZSB0aGUgdGVt
cGxhdGUgYXJndW1lbnRzIGFuZCB0aGUKLWB2YHMgYXJlIHRoZSB2YWx1ZSBhcmd1bWVudHMuICBU
aGUgdmFsdWUgYXJndW1lbnQKLXR5cGVzIGFyZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBG
b3IgZXhhbXBsZToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIGludCBuOwotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXykpCi0gICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJn
PDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7Ci1gYGAKLQotSWYgeW91IHdhbnQgdG8gZXhwbGljaXRs
eSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgotcHJvdmlkZSBhZGRp
dGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoKLWBgYAotICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRf
bSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24pCi1gYGAKLXdoZXJlIGB1X2lgIGlzIHRoZSBk
ZXNpcmVkIHR5cGUgb2YgYHZfaWAuCi0KLWBBQ1RJT05fVEVNUExBVEVgIGFuZCBgQUNUSU9OYC9g
QUNUSU9OX1AqYCBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB2YWx1ZSBwYXJh
bWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIgb2YgdGVtcGxhdGUKLXBhcmFtZXRlcnMuICBX
aXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhlIG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZyBpcwot
dW5jbGVhcjoKLQotYGBgCi0gIE92ZXJsb2FkZWRBY3Rpb248aW50LCBib29sPih4KTsKLWBgYAot
Ci1BcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSBg
Ym9vbGAgcmVmZXJzIHRvCi10aGUgdHlwZSBvZiBgeGAsIG9yIGEgdHdvLXRlbXBsYXRlLXBhcmFt
ZXRlciBhY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyCi1pcyBhc2tlZCB0byBpbmZlciB0aGUgdHlw
ZSBvZiBgeGA/Ci0KLSMjIFVzaW5nIHRoZSBBQ1RJT04gT2JqZWN0J3MgVHlwZSAjIwotCi1JZiB5
b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0
LCB5b3UnbGwKLW5lZWQgdG8ga25vdyBpdHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhl
IG1hY3JvIHVzZWQgdG8gZGVmaW5lCi10aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVz
LiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVseSBzaW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioq
IHwgKipFeHByZXNzaW9uKiogfCAqKkhhcyBUeXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAg
ICAgfCBgRm9vKClgICAgICAgICB8IGBGb29BY3Rpb25gICB8Ci18IGBBQ1RJT05fVEVNUExBVEUo
Rm9vLCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzBfVkFMVUVfUEFSQU1TKCkpYCB8
CWBGb288dDEsIC4uLiwgdF9tPigpYCB8IGBGb29BY3Rpb248dDEsIC4uLiwgdF9tPmAgfAotfCBg
QUNUSU9OX1AoQmFyLCBwYXJhbSlgIHwgYEJhcihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGlu
dD5gIHwKLXwgYEFDVElPTl9URU1QTEFURShCYXIsIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4p
LCBBTkRfMV9WQUxVRV9QQVJBTVMocDEpKWAgfCBgQmFyPHQxLCAuLi4sIHRfbT4oaW50X3ZhbHVl
KWAgfCBgRm9vQWN0aW9uUDx0MSwgLi4uLCB0X20sIGludD5gIHwKLXwgYEFDVElPTl9QMihCYXos
IHAxLCBwMilgIHwgYEJheihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBCYXpBY3Rpb25QMjxi
b29sLCBpbnQ+YCB8Ci18IGBBQ1RJT05fVEVNUExBVEUoQmF6LCBIQVNfbV9URU1QTEFURV9QQVJB
TVMoLi4uKSwgQU5EXzJfVkFMVUVfUEFSQU1TKHAxLCBwMikpYCB8IGBCYXo8dDEsIC4uLiwgdF9t
Pihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBGb29BY3Rpb25QMjx0MSwgLi4uLCB0X20sIGJv
b2wsIGludD5gIHwKLXwgLi4uICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4u
LiAgICAgICAgICB8Ci0KLU5vdGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZp
eGVzIChgQWN0aW9uYCwgYEFjdGlvblBgLAotYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlv
bnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiB2YWx1ZQotcGFyYW1ldGVycywgb3IgdGhlIGFj
dGlvbiBkZWZpbml0aW9ucyBjYW5ub3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB0
aGVtLgotCi0jIyBXcml0aW5nIE5ldyBNb25vbW9ycGhpYyBBY3Rpb25zICMjCi0KLVdoaWxlIHRo
ZSBgQUNUSU9OKmAgbWFjcm9zIGFyZSB2ZXJ5IGNvbnZlbmllbnQsIHNvbWV0aW1lcyB0aGV5IGFy
ZQotaW5hcHByb3ByaWF0ZS4gIEZvciBleGFtcGxlLCBkZXNwaXRlIHRoZSB0cmlja3Mgc2hvd24g
aW4gdGhlIHByZXZpb3VzCi1yZWNpcGVzLCB0aGV5IGRvbid0IGxldCB5b3UgZGlyZWN0bHkgc3Bl
Y2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sKLWZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFj
dGlvbiBwYXJhbWV0ZXJzLCB3aGljaCBpbiBnZW5lcmFsIGxlYWRzCi10byB1bm9wdGltaXplZCBj
b21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiYWZmbGUgdW5mYW1pbGlhcgotdXNlcnMu
ICBUaGV5IGFsc28gZG9uJ3QgYWxsb3cgb3ZlcmxvYWRpbmcgYWN0aW9ucyBiYXNlZCBvbiBwYXJh
bWV0ZXIKLXR5cGVzIHdpdGhvdXQganVtcGluZyB0aHJvdWdoIHNvbWUgaG9vcHMuCi0KLUFuIGFs
dGVybmF0aXZlIHRvIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGlzIHRvIGltcGxlbWVudAotYDo6dGVz
dGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+YCwgd2hlcmUgYEZgIGlzIHRoZSB0eXBlIG9mIHRoZSBt
b2NrCi1mdW5jdGlvbiBpbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gRm9yIGV4YW1w
bGU6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Y2xhc3MgQWN0aW9uSW50ZXJmYWNlIHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkFjdGlvbkludGVyZmFjZSgpOwotCi0gIC8vIFBlcmZvcm1z
IHRoZSBhY3Rpb24uICBSZXN1bHQgaXMgdGhlIHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUK
LSAgLy8gRiwgYW5kIEFyZ3VtZW50VHVwbGUgaXMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50cyBvZiBG
LgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwgaWYgRiBpcyBpbnQoYm9vbCwgY29uc3Qgc3RyaW5n
JiksIHRoZW4gUmVzdWx0IHdvdWxkCi0gIC8vIGJlIGludCwgYW5kIEFyZ3VtZW50VHVwbGUgd291
bGQgYmUgdHIxOjp0dXBsZTxib29sLCBjb25zdCBzdHJpbmcmPi4KLSAgdmlydHVhbCBSZXN1bHQg
UGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSA9IDA7Ci19OwotCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6QWN0
aW9uSW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlQWN0aW9uOwotCi10eXBlZGVmIGlu
dCBJbmNyZW1lbnRNZXRob2QoaW50Kik7Ci0KLWNsYXNzIEluY3JlbWVudEFyZ3VtZW50QWN0aW9u
IDogcHVibGljIEFjdGlvbkludGVyZmFjZTxJbmNyZW1lbnRNZXRob2Q+IHsKLSBwdWJsaWM6Ci0g
IHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3QgdHIxOjp0dXBsZTxpbnQqPiYgYXJncykgewotICAg
IGludCogcCA9IHRyMTo6Z2V0PDA+KGFyZ3MpOyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50
LgotICAgIHJldHVybiAqcCsrOwotICB9Ci19OwotCi1BY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJ
bmNyZW1lbnRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFy
Z3VtZW50QWN0aW9uKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQotICAg
ICAgLldpbGxPbmNlKEluY3JlbWVudEFyZ3VtZW50KCkpOwotCi0gIGludCBuID0gNTsKLSAgZm9v
LkJheigmbik7ICAvLyBTaG91bGQgcmV0dXJuIDUgYW5kIGNoYW5nZSBuIHRvIDYuCi1gYGAKLQot
IyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMgQWN0aW9ucyAjIwotCi1UaGUgcHJldmlvdXMgcmVj
aXBlIHNob3dlZCB5b3UgaG93IHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKLWFs
bCBnb29kLCBleGNlcHQgdGhhdCB5b3UgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5j
dGlvbiBpbgotd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNh
biBiZSBhIHByb2JsZW0uIEZvcgotZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rp
b24gaW4gZnVuY3Rpb25zIHdpdGggX2RpZmZlcmVudF8KLXR5cGVzIChlLmcuIGxpa2UgYFJldHVy
bigpYCBhbmQgYFNldEFyZ3VtZW50UG9pbnRlZSgpYCkuCi0KLUlmIGFuIGFjdGlvbiBjYW4gYmUg
dXNlZCBpbiBzZXZlcmFsIHR5cGVzIG9mIG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKLWl0J3MgX3Bv
bHltb3JwaGljXy4gVGhlIGBNYWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxh
dGUKLW1ha2VzIGl0IGVhc3kgdG8gZGVmaW5lIHN1Y2ggYW4gYWN0aW9uOgotCi1gYGAKLW5hbWVz
cGFjZSB0ZXN0aW5nIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+Ci1Qb2x5bW9ycGhpY0Fj
dGlvbjxJbXBsPiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7Ci0KLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi1gYGAKLQotQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5l
IGFuIGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIHNlY29uZCBhcmd1bWVudAotaW4gdGhlIG1vY2sg
ZnVuY3Rpb24ncyBhcmd1bWVudCBsaXN0LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4K
LWltcGxlbWVudGF0aW9uIGNsYXNzOgotCi1gYGAKLWNsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50
QWN0aW9uIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1l
IEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFy
Z3MpIGNvbnN0IHsKLSAgICAvLyBUbyBnZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1
c2UgdHIxOjpnZXQ8aT4oYXJncykuCi0gICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOwotICB9
Ci19OwotYGBgCi0KLVRoaXMgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRv
IGluaGVyaXQgZnJvbSBhbnkKLXBhcnRpY3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0
IGl0IG11c3QgaGF2ZSBhIGBQZXJmb3JtKClgCi1tZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9k
IHRlbXBsYXRlIHRha2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MKLWFyZ3VtZW50cyBhcyBhIHR1cGxl
IGluIGEgKipzaW5nbGUqKiBhcmd1bWVudCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgotdGhl
IGFjdGlvbi4gSXQgY2FuIGJlIGVpdGhlciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52
b2thYmxlCi13aXRoIGV4YWN0bHkgb25lIHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUg
cmVzdWx0IHR5cGUuIEluIG90aGVyCi13b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQ
ZXJmb3JtPFI+KGFyZ3MpYCB3aGVyZSBgUmAgaXMgdGhlCi1tb2NrIGZ1bmN0aW9uJ3MgcmV0dXJu
IHR5cGUgYW5kIGBhcmdzYCBpcyBpdHMgYXJndW1lbnRzIGluIGEgdHVwbGUuCi0KLU5leHQsIHdl
IHVzZSBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhl
Ci1pbXBsZW1lbnRhdGlvbiBjbGFzcyBpbnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVl
ZC4gSXQgd2lsbCBiZQotY29udmVuaWVudCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsKLXVzaW5nIDo6dGVz
dGluZzo6UG9seW1vcnBoaWNBY3Rpb247Ci0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29u
ZEFyZ3VtZW50QWN0aW9uPiBSZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQ
b2x5bW9ycGhpY0FjdGlvbihSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLWBgYAot
Ci1Ob3csIHlvdSBjYW4gdXNlIHRoaXMgcG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5
b3UgdXNlIHRoZQotYnVpbHQtaW4gb25lczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0K
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihE
b1RoaXMsIGludChib29sIGZsYWcsIGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0
cmluZyhpbnQgeCwgY29uc3QgY2hhciogc3RyMSwgY29uc3QgY2hhciogc3RyMikpOwotfTsKLS4u
LgotCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAg
ICAgIC5XaWxsT25jZShSZXR1cm5TZWNvbmRBcmd1bWVudCgpKTsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoYXQoXywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQo
KSk7Ci0gIC4uLgotICBmb28uRG9UaGlzKHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJu
IDUuCi0gIGZvby5Eb1RoYXQoMSwgIkhpIiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4K
LWBgYAotCi0jIyBUZWFjaGluZyBHb29nbGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMg
IyMKLQotV2hlbiBhbiB1bmludGVyZXN0aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdv
b2dsZSBNb2NrIHByaW50cwotdGhlIGFyZ3VtZW50IHZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4g
IFRoZSBgRVhQRUNUX1RIQVRgIGFuZAotYEFTU0VSVF9USEFUYCBhc3NlcnRpb25zIGFsc28gcHJp
bnQgdGhlIHZhbHVlIGJlaW5nIHZhbGlkYXRlZCB3aGVuIHRoZQotdGVzdCBmYWlscy4gIEdvb2ds
ZSBNb2NrIGRvZXMgdGhpcyB1c2luZyB0aGUgdXNlci1leHRlbnNpYmxlIHZhbHVlCi1wcmludGVy
IGRlZmluZWQgaW4gYDxnbW9jay9nbW9jay1wcmludGVycy5oPmAuCi0KLVRoaXMgcHJpbnRlciBr
bm93cyBob3cgdG8gcHJpbnQgdGhlIGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywK
LVNUTCBjb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVy
YXRvci4gRm9yCi1vdGhlciB0eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZh
bHVlIGFuZCBob3BlIHlvdSB0aGUKLXVzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCi0KLURpZCBJIHNh
eSB0aGF0IHRoZSBwcmludGVyIGlzIGBleHRlbnNpYmxlYD8gVGhhdCBtZWFucyB5b3UgY2FuIHRl
YWNoCi1pdCB0byBkbyBhIGJldHRlciBqb2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5
cGUgdGhhbiB0byBkdW1wCi10aGUgYnl0ZXMuIFRvIGRvIHRoYXQsIHlvdSBqdXN0IG5lZWQgdG8g
ZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKLQotYGBgCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0K
LW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBGb28geyAuLi4gfTsKLQotLy8gSXQncyBpbXBvcnRh
bnQgdGhhdCB0aGUgPDwgb3BlcmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQotLy8gbmFtZXNw
YWNlIHRoYXQgZGVmaW5lcyBGb28uICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4K
LTo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRm9v
JiBmb28pIHsKLSAgcmV0dXJuIG9zIDw8IGZvby5EZWJ1Z1N0cmluZygpOyAgLy8gV2hhdGV2ZXIg
bmVlZGVkIHRvIHByaW50IGZvbyB0byBvcy4KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBg
Ci0KLVNvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uLiBGb3IgZXhhbXBsZSwg
eW91ciB0ZWFtIG1heQotY29uc2lkZXIgaXQgZGFuZ2Vyb3VzIG9yIGJhZCBzdHlsZSB0byBoYXZl
IGEgYDw8YCBvcGVyYXRvciBmb3IgYEZvb2AsCi1vciBgRm9vYCBtYXkgYWxyZWFkeSBoYXZlIGEg
YDw8YCBvcGVyYXRvciB0aGF0IGRvZXNuJ3QgZG8gd2hhdCB5b3UKLXdhbnQgKGFuZCB5b3UgY2Fu
bm90IGNoYW5nZSBpdCkuIERvbid0IGRlc3BhaXIgdGhvdWdoIC0gR29vZ2xlIE1vY2sKLWdpdmVz
IHlvdSBhIHNlY29uZCBjaGFuY2UgdG8gZ2V0IGl0IHJpZ2h0LiBOYW1lbHksIHlvdSBjYW4gZGVm
aW5lIGEKLWBQcmludFRvKClgIGZ1bmN0aW9uIGxpa2UgdGhpczoKLQotYGBgCi0jaW5jbHVkZSA8
aW9zdHJlYW0+Ci0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBGb28geyAuLi4gfTsKLQotLy8g
SXQncyBpbXBvcnRhbnQgdGhhdCBQcmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQotLy8g
bmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBGb28uICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24g
dGhhdC4KLXZvaWQgUHJpbnRUbyhjb25zdCBGb28mIGZvbywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
Ci0gICpvcyA8PCBmb28uRGVidWdTdHJpbmcoKTsgIC8vIFdoYXRldmVyIG5lZWRlZCB0byBwcmlu
dCBmb28gdG8gb3MuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1XaGF0IGlmIHlv
dSBoYXZlIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWA/IEluIHRoaXMgY2FzZSwgdGhlIGxhdHRl
cgotd2lsbCBvdmVycmlkZSB0aGUgZm9ybWVyIHdoZW4gR29vZ2xlIE1vY2sgaXMgY29uY2VybmVk
LiBUaGlzIGFsbG93cwoteW91IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVlIHNob3VsZCBhcHBl
YXIgaW4gR29vZ2xlIE1vY2sncyBvdXRwdXQKLXdpdGhvdXQgYWZmZWN0aW5nIGNvZGUgdGhhdCBy
ZWxpZXMgb24gdGhlIGJlaGF2aW9yIG9mIGl0cyBgPDxgCi1vcGVyYXRvci4KLQotKipOb3RlOioq
IFdoZW4gcHJpbnRpbmcgYSBwb2ludGVyIG9mIHR5cGUgYFQqYCwgR29vZ2xlIE1vY2sgY2FsbHMK
LWBQcmludFRvKFQqLCBzdGQ6Om9zdHJlYW0qIG9zKWAgaW5zdGVhZCBvZiBgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mLCBUKilgLgotVGhlcmVmb3JlIHRoZSBvbmx5IHdheSB0byBhZmZlY3QgaG93
IGEgcG9pbnRlciBpcyBwcmludGVkIGJ5IEdvb2dsZQotTW9jayBpcyB0byBkZWZpbmUgYFByaW50
VG8oKWAgZm9yIGl0LiBBbHNvIG5vdGUgdGhhdCBgVCpgIGFuZCBgY29uc3QgVCpgCi1hcmUgZGlm
ZmVyZW50IHR5cGVzLCBzbyB5b3UgbWF5IG5lZWQgdG8gZGVmaW5lIGBQcmludFRvKClgIGZvciBi
b3RoLgotCi1XaHkgZG9lcyBHb29nbGUgTW9jayB0cmVhdCBwb2ludGVycyBzcGVjaWFsbHk/IFRo
ZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnM6Ci0KLSAgKiBXZSBjYW5ub3QgdXNlIGBvcGVyYXRvcjw8
YCB0byBwcmludCBhIGBzaWduZWQgY2hhcipgIG9yIGB1bnNpZ25lZCBjaGFyKmAsIHNpbmNlIGl0
IHdpbGwgcHJpbnQgdGhlIHBvaW50ZXIgYXMgYSBOVUwtdGVybWluYXRlZCBDIHN0cmluZywgd2hp
Y2ggbGlrZWx5IHdpbGwgY2F1c2UgYW4gYWNjZXNzIHZpb2xhdGlvbi4KLSAgKiBXZSB3YW50IGBO
VUxMYCBwb2ludGVycyB0byBiZSBwcmludGVkIGFzIGAiTlVMTCJgLCBidXQgYG9wZXJhdG9yPDxg
IHByaW50cyBpdCBhcyBgIjAiYCwgYCJudWxscHRyImAsIG9yIHNvbWV0aGluZyBlbHNlLCBkZXBl
bmRpbmcgb24gdGhlIGNvbXBpbGVyLgotICAqIFdpdGggc29tZSBjb21waWxlcnMsIHByaW50aW5n
IGEgYE5VTExgIGBjaGFyKmAgdXNpbmcgYG9wZXJhdG9yPDxgIHdpbGwgc2VnZmF1bHQuCi0gICog
YG9wZXJhdG9yPDxgIHByaW50cyBhIGZ1bmN0aW9uIHBvaW50ZXIgYXMgYSBgYm9vbGAgKGhlbmNl
IGl0IGFsd2F5cyBwcmludHMgYCIxImApLCB3aGljaCBpcyBub3QgdmVyeSB1c2VmdWwuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81
L0RvY3VtZW50YXRpb24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRG9jdW1lbnRhdGlvbi5t
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE1YjBhMjk4OWFkNDY2N2NjYWUyYjA5
ZmExYzcyZmE4OGNmNmVkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDExICswLDAgQEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3
aWtpIHBhZ2VzIGZvciBHb29nbGUgTW9jayAqKnZlcnNpb24gMS41LjAqKiAtLSAqKmlmIHlvdSB1
c2UgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgcGxlYXNlIHJlYWQgdGhlIGRv
Y3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCi0KLSAgKiBb
Rm9yRHVtbWllc10oVjFfNV9Gb3JEdW1taWVzLm1kKSAtLSBzdGFydCBoZXJlIGlmIHlvdSBhcmUg
bmV3IHRvIEdvb2dsZSBNb2NrLgotICAqIFtDaGVhdFNoZWV0XShWMV81X0NoZWF0U2hlZXQubWQp
IC0tIGEgcXVpY2sgcmVmZXJlbmNlLgotICAqIFtDb29rQm9va10oVjFfNV9Db29rQm9vay5tZCkg
LS0gcmVjaXBlcyBmb3IgZG9pbmcgdmFyaW91cyB0YXNrcyB1c2luZyBHb29nbGUgTW9jay4KLSAg
KiBbRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXShWMV81X0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9u
cy5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhlIG1haWxp
bmcgbGlzdC4KLQotVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBNb2NrLCByZWFkOgotCi0g
ICogRGV2R3VpZGUgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRj
aC4KLSAgKiBbUHVtcCBNYW51YWxdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
L3dpa2kvUHVtcE1hbnVhbCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIE1vY2sn
cyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svZG9jcy92MV81L0ZvckR1bW1pZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3Yx
XzUvRm9yRHVtbWllcy5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNjM2I1NjE3
NDcwMzE1NGI5ZGQxZDA1MTQ5YTVmMTBjYTczOTcyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRm9yRHVtbWllcy5t
ZAorKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCwwIEBACi0KLQotKCoqTm90ZToqKiBJZiB5b3Ug
Z2V0IGNvbXBpbGVyIGVycm9ycyB0aGF0IHlvdSBkb24ndCB1bmRlcnN0YW5kLCBiZSBzdXJlIHRv
IGNvbnN1bHQgW0dvb2dsZSBNb2NrIERvY3Rvcl0oVjFfNV9GcmVxdWVudGx5QXNrZWRRdWVzdGlv
bnMjSG93X2FtX0lfc3VwcG9zZWRfdG9fbWFrZV9zZW5zZV9vZl90aGVzZV9ob3JyaWJsZV90ZW1w
bGF0ZV9lcnJvci5tZCkuKQotCi0jIFdoYXQgSXMgR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29y
az8gIwotV2hlbiB5b3Ugd3JpdGUgYSBwcm90b3R5cGUgb3IgdGVzdCwgb2Z0ZW4gaXQncyBub3Qg
ZmVhc2libGUgb3Igd2lzZSB0byByZWx5IG9uIHJlYWwgb2JqZWN0cyBlbnRpcmVseS4gQSAqKm1v
Y2sgb2JqZWN0KiogaW1wbGVtZW50cyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYSByZWFsIG9iamVj
dCAoc28gaXQgY2FuIGJlIHVzZWQgYXMgb25lKSwgYnV0IGxldHMgeW91IHNwZWNpZnkgYXQgcnVu
IHRpbWUgaG93IGl0IHdpbGwgYmUgdXNlZCBhbmQgd2hhdCBpdCBzaG91bGQgZG8gKHdoaWNoIG1l
dGhvZHMgd2lsbCBiZSBjYWxsZWQ/IGluIHdoaWNoIG9yZGVyPyBob3cgbWFueSB0aW1lcz8gd2l0
aCB3aGF0IGFyZ3VtZW50cz8gd2hhdCB3aWxsIHRoZXkgcmV0dXJuPyBldGMpLgotCi0qKk5vdGU6
KiogSXQgaXMgZWFzeSB0byBjb25mdXNlIHRoZSB0ZXJtIF9mYWtlIG9iamVjdHNfIHdpdGggbW9j
ayBvYmplY3RzLiBGYWtlcyBhbmQgbW9ja3MgYWN0dWFsbHkgbWVhbiB2ZXJ5IGRpZmZlcmVudCB0
aGluZ3MgaW4gdGhlIFRlc3QtRHJpdmVuIERldmVsb3BtZW50IChUREQpIGNvbW11bml0eToKLQot
ICAqICoqRmFrZSoqIG9iamVjdHMgaGF2ZSB3b3JraW5nIGltcGxlbWVudGF0aW9ucywgYnV0IHVz
dWFsbHkgdGFrZSBzb21lIHNob3J0Y3V0IChwZXJoYXBzIHRvIG1ha2UgdGhlIG9wZXJhdGlvbnMg
bGVzcyBleHBlbnNpdmUpLCB3aGljaCBtYWtlcyB0aGVtIG5vdCBzdWl0YWJsZSBmb3IgcHJvZHVj
dGlvbi4gQW4gaW4tbWVtb3J5IGZpbGUgc3lzdGVtIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgYSBm
YWtlLgotICAqICoqTW9ja3MqKiBhcmUgb2JqZWN0cyBwcmUtcHJvZ3JhbW1lZCB3aXRoIF9leHBl
Y3RhdGlvbnNfLCB3aGljaCBmb3JtIGEgc3BlY2lmaWNhdGlvbiBvZiB0aGUgY2FsbHMgdGhleSBh
cmUgZXhwZWN0ZWQgdG8gcmVjZWl2ZS4KLQotSWYgYWxsIHRoaXMgc2VlbXMgdG9vIGFic3RyYWN0
IGZvciB5b3UsIGRvbid0IHdvcnJ5IC0gdGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIHRvIHJlbWVt
YmVyIGlzIHRoYXQgYSBtb2NrIGFsbG93cyB5b3UgdG8gY2hlY2sgdGhlIF9pbnRlcmFjdGlvbl8g
YmV0d2VlbiBpdHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIGl0LiBUaGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIGZha2VzIGFuZCBtb2NrcyB3aWxsIGJlY29tZSBtdWNoIGNsZWFyZXIgb25jZSB5b3Ugc3Rh
cnQgdG8gdXNlIG1vY2tzLgotCi0qKkdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsqKiAob3Ig
KipHb29nbGUgTW9jayoqIGZvciBzaG9ydCkgaXMgYSBsaWJyYXJ5IChzb21ldGltZXMgd2UgYWxz
byBjYWxsIGl0IGEgImZyYW1ld29yayIgdG8gbWFrZSBpdCBzb3VuZCBjb29sKSBmb3IgY3JlYXRp
bmcgbW9jayBjbGFzc2VzIGFuZCB1c2luZyB0aGVtLiBJdCBkb2VzIHRvIEMrKyB3aGF0IFtqTW9j
a10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBhbmQgW0Vhc3lNb2NrXShodHRwOi8vd3d3LmVhc3lt
b2NrLm9yZy8pIGRvIHRvIEphdmEuCi0KLVVzaW5nIEdvb2dsZSBNb2NrIGludm9sdmVzIHRocmVl
IGJhc2ljIHN0ZXBzOgotCi0gIDEuIFVzZSBzb21lIHNpbXBsZSBtYWNyb3MgdG8gZGVzY3JpYmUg
dGhlIGludGVyZmFjZSB5b3Ugd2FudCB0byBtb2NrLCBhbmQgdGhleSB3aWxsIGV4cGFuZCB0byB0
aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBtb2NrIGNsYXNzOwotICAxLiBDcmVhdGUgc29tZSBt
b2NrIG9iamVjdHMgYW5kIHNwZWNpZnkgaXRzIGV4cGVjdGF0aW9ucyBhbmQgYmVoYXZpb3IgdXNp
bmcgYW4gaW50dWl0aXZlIHN5bnRheDsKLSAgMS4gRXhlcmNpc2UgY29kZSB0aGF0IHVzZXMgdGhl
IG1vY2sgb2JqZWN0cy4gR29vZ2xlIE1vY2sgd2lsbCBjYXRjaCBhbnkgdmlvbGF0aW9uIG9mIHRo
ZSBleHBlY3RhdGlvbnMgYXMgc29vbiBhcyBpdCBhcmlzZXMuCi0KLSMgV2h5IEdvb2dsZSBNb2Nr
PyAjCi1XaGlsZSBtb2NrIG9iamVjdHMgaGVscCB5b3UgcmVtb3ZlIHVubmVjZXNzYXJ5IGRlcGVu
ZGVuY2llcyBpbiB0ZXN0cyBhbmQgbWFrZSB0aGVtIGZhc3QgYW5kIHJlbGlhYmxlLCB1c2luZyBt
b2NrcyBtYW51YWxseSBpbiBDKysgaXMgX2hhcmRfOgotCi0gICogU29tZW9uZSBoYXMgdG8gaW1w
bGVtZW50IHRoZSBtb2Nrcy4gVGhlIGpvYiBpcyB1c3VhbGx5IHRlZGlvdXMgYW5kIGVycm9yLXBy
b25lLiBObyB3b25kZXIgcGVvcGxlIGdvIGdyZWF0IGRpc3RhbmNlIHRvIGF2b2lkIGl0LgotICAq
IFRoZSBxdWFsaXR5IG9mIHRob3NlIG1hbnVhbGx5IHdyaXR0ZW4gbW9ja3MgaXMgYSBiaXQsIHVo
LCB1bnByZWRpY3RhYmxlLiBZb3UgbWF5IHNlZSBzb21lIHJlYWxseSBwb2xpc2hlZCBvbmVzLCBi
dXQgeW91IG1heSBhbHNvIHNlZSBzb21lIHRoYXQgd2VyZSBoYWNrZWQgdXAgaW4gYSBodXJyeSBh
bmQgaGF2ZSBhbGwgc29ydHMgb2YgYWQgaG9jIHJlc3RyaWN0aW9ucy4KLSAgKiBUaGUga25vd2xl
ZGdlIHlvdSBnYWluZWQgZnJvbSB1c2luZyBvbmUgbW9jayBkb2Vzbid0IHRyYW5zZmVyIHRvIHRo
ZSBuZXh0LgotCi1JbiBjb250cmFzdCwgSmF2YSBhbmQgUHl0aG9uIHByb2dyYW1tZXJzIGhhdmUg
c29tZSBmaW5lIG1vY2sgZnJhbWV3b3Jrcywgd2hpY2ggYXV0b21hdGUgdGhlIGNyZWF0aW9uIG9m
IG1vY2tzLiBBcyBhIHJlc3VsdCwgbW9ja2luZyBpcyBhIHByb3ZlbiBlZmZlY3RpdmUgdGVjaG5p
cXVlIGFuZCB3aWRlbHkgYWRvcHRlZCBwcmFjdGljZSBpbiB0aG9zZSBjb21tdW5pdGllcy4gSGF2
aW5nIHRoZSByaWdodCB0b29sIGFic29sdXRlbHkgbWFrZXMgdGhlIGRpZmZlcmVuY2UuCi0KLUdv
b2dsZSBNb2NrIHdhcyBidWlsdCB0byBoZWxwIEMrKyBwcm9ncmFtbWVycy4gSXQgd2FzIGluc3Bp
cmVkIGJ5IFtqTW9ja10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBhbmQgW0Vhc3lNb2NrXShodHRw
Oi8vd3d3LmVhc3ltb2NrLm9yZy8pLCBidXQgZGVzaWduZWQgd2l0aCBDKysncyBzcGVjaWZpY3Mg
aW4gbWluZC4gSXQgaXMgeW91ciBmcmllbmQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcHJvYmxl
bXMgaXMgYm90aGVyaW5nIHlvdToKLQotICAqIFlvdSBhcmUgc3R1Y2sgd2l0aCBhIHN1Yi1vcHRp
bWFsIGRlc2lnbiBhbmQgd2lzaCB5b3UgaGFkIGRvbmUgbW9yZSBwcm90b3R5cGluZyBiZWZvcmUg
aXQgd2FzIHRvbyBsYXRlLCBidXQgcHJvdG90eXBpbmcgaW4gQysrIGlzIGJ5IG5vIG1lYW5zICJy
YXBpZCIuCi0gICogWW91ciB0ZXN0cyBhcmUgc2xvdyBhcyB0aGV5IGRlcGVuZCBvbiB0b28gbWFu
eSBsaWJyYXJpZXMgb3IgdXNlIGV4cGVuc2l2ZSByZXNvdXJjZXMgKGUuZy4gYSBkYXRhYmFzZSku
Ci0gICogWW91ciB0ZXN0cyBhcmUgYnJpdHRsZSBhcyBzb21lIHJlc291cmNlcyB0aGV5IHVzZSBh
cmUgdW5yZWxpYWJsZSAoZS5nLiB0aGUgbmV0d29yaykuCi0gICogWW91IHdhbnQgdG8gdGVzdCBo
b3cgeW91ciBjb2RlIGhhbmRsZXMgYSBmYWlsdXJlIChlLmcuIGEgZmlsZSBjaGVja3N1bSBlcnJv
ciksIGJ1dCBpdCdzIG5vdCBlYXN5IHRvIGNhdXNlIG9uZS4KLSAgKiBZb3UgbmVlZCB0byBtYWtl
IHN1cmUgdGhhdCB5b3VyIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCBvdGhlciBtb2R1bGVzIGluIHRo
ZSByaWdodCB3YXksIGJ1dCBpdCdzIGhhcmQgdG8gb2JzZXJ2ZSB0aGUgaW50ZXJhY3Rpb247IHRo
ZXJlZm9yZSB5b3UgcmVzb3J0IHRvIG9ic2VydmluZyB0aGUgc2lkZSBlZmZlY3RzIGF0IHRoZSBl
bmQgb2YgdGhlIGFjdGlvbiwgd2hpY2ggaXMgYXdrd2FyZCBhdCBiZXN0LgotICAqIFlvdSB3YW50
IHRvICJtb2NrIG91dCIgeW91ciBkZXBlbmRlbmNpZXMsIGV4Y2VwdCB0aGF0IHRoZXkgZG9uJ3Qg
aGF2ZSBtb2NrIGltcGxlbWVudGF0aW9ucyB5ZXQ7IGFuZCwgZnJhbmtseSwgeW91IGFyZW4ndCB0
aHJpbGxlZCBieSBzb21lIG9mIHRob3NlIGhhbmQtd3JpdHRlbiBtb2Nrcy4KLQotV2UgZW5jb3Vy
YWdlIHlvdSB0byB1c2UgR29vZ2xlIE1vY2sgYXM6Ci0KLSAgKiBhIF9kZXNpZ25fIHRvb2wsIGZv
ciBpdCBsZXRzIHlvdSBleHBlcmltZW50IHdpdGggeW91ciBpbnRlcmZhY2UgZGVzaWduIGVhcmx5
IGFuZCBvZnRlbi4gTW9yZSBpdGVyYXRpb25zIGxlYWQgdG8gYmV0dGVyIGRlc2lnbnMhCi0gICog
YSBfdGVzdGluZ18gdG9vbCB0byBjdXQgeW91ciB0ZXN0cycgb3V0Ym91bmQgZGVwZW5kZW5jaWVz
IGFuZCBwcm9iZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB5b3VyIG1vZHVsZSBhbmQgaXRzIGNv
bGxhYm9yYXRvcnMuCi0KLSMgR2V0dGluZyBTdGFydGVkICMKLVVzaW5nIEdvb2dsZSBNb2NrIGlz
IGVhc3khIEluc2lkZSB5b3VyIEMrKyBzb3VyY2UgZmlsZSwganVzdCBgI2luY2x1ZGVgIGA8Z3Rl
c3QvZ3Rlc3QuaD5gIGFuZCBgPGdtb2NrL2dtb2NrLmg+YCwgYW5kIHlvdSBhcmUgcmVhZHkgdG8g
Z28uCi0KLSMgQSBDYXNlIGZvciBNb2NrIFR1cnRsZXMgIwotTGV0J3MgbG9vayBhdCBhbiBleGFt
cGxlLiBTdXBwb3NlIHlvdSBhcmUgZGV2ZWxvcGluZyBhIGdyYXBoaWNzIHByb2dyYW0gdGhhdCBy
ZWxpZXMgb24gYSBMT0dPLWxpa2UgQVBJIGZvciBkcmF3aW5nLiBIb3cgd291bGQgeW91IHRlc3Qg
dGhhdCBpdCBkb2VzIHRoZSByaWdodCB0aGluZz8gV2VsbCwgeW91IGNhbiBydW4gaXQgYW5kIGNv
bXBhcmUgdGhlIHNjcmVlbiB3aXRoIGEgZ29sZGVuIHNjcmVlbiBzbmFwc2hvdCwgYnV0IGxldCdz
IGFkbWl0IGl0OiB0ZXN0cyBsaWtlIHRoaXMgYXJlIGV4cGVuc2l2ZSB0byBydW4gYW5kIGZyYWdp
bGUgKFdoYXQgaWYgeW91IGp1c3QgdXBncmFkZWQgdG8gYSBzaGlueSBuZXcgZ3JhcGhpY3MgY2Fy
ZCB0aGF0IGhhcyBiZXR0ZXIgYW50aS1hbGlhc2luZz8gU3VkZGVubHkgeW91IGhhdmUgdG8gdXBk
YXRlIGFsbCB5b3VyIGdvbGRlbiBpbWFnZXMuKS4gSXQgd291bGQgYmUgdG9vIHBhaW5mdWwgaWYg
YWxsIHlvdXIgdGVzdHMgYXJlIGxpa2UgdGhpcy4gRm9ydHVuYXRlbHksIHlvdSBsZWFybmVkIGFi
b3V0IERlcGVuZGVuY3kgSW5qZWN0aW9uIGFuZCBrbm93IHRoZSByaWdodCB0aGluZyB0byBkbzog
aW5zdGVhZCBvZiBoYXZpbmcgeW91ciBhcHBsaWNhdGlvbiB0YWxrIHRvIHRoZSBkcmF3aW5nIEFQ
SSBkaXJlY3RseSwgd3JhcCB0aGUgQVBJIGluIGFuIGludGVyZmFjZSAoc2F5LCBgVHVydGxlYCkg
YW5kIGNvZGUgdG8gdGhhdCBpbnRlcmZhY2U6Ci0KLWBgYAotY2xhc3MgVHVydGxlIHsKLSAgLi4u
Ci0gIHZpcnR1YWwgflR1cnRsZSgpIHt9Ci0gIHZpcnR1YWwgdm9pZCBQZW5VcCgpID0gMDsKLSAg
dmlydHVhbCB2b2lkIFBlbkRvd24oKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBGb3J3YXJkKGludCBk
aXN0YW5jZSkgPSAwOwotICB2aXJ0dWFsIHZvaWQgVHVybihpbnQgZGVncmVlcykgPSAwOwotICB2
aXJ0dWFsIHZvaWQgR29UbyhpbnQgeCwgaW50IHkpID0gMDsKLSAgdmlydHVhbCBpbnQgR2V0WCgp
IGNvbnN0ID0gMDsKLSAgdmlydHVhbCBpbnQgR2V0WSgpIGNvbnN0ID0gMDsKLX07Ci1gYGAKLQot
KE5vdGUgdGhhdCB0aGUgZGVzdHJ1Y3RvciBvZiBgVHVydGxlYCAqKm11c3QqKiBiZSB2aXJ0dWFs
LCBhcyBpcyB0aGUgY2FzZSBmb3IgKiphbGwqKiBjbGFzc2VzIHlvdSBpbnRlbmQgdG8gaW5oZXJp
dCBmcm9tIC0gb3RoZXJ3aXNlIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBkZXJpdmVkIGNsYXNzIHdp
bGwgbm90IGJlIGNhbGxlZCB3aGVuIHlvdSBkZWxldGUgYW4gb2JqZWN0IHRocm91Z2ggYSBiYXNl
IHBvaW50ZXIsIGFuZCB5b3UnbGwgZ2V0IGNvcnJ1cHRlZCBwcm9ncmFtIHN0YXRlcyBsaWtlIG1l
bW9yeSBsZWFrcy4pCi0KLVlvdSBjYW4gY29udHJvbCB3aGV0aGVyIHRoZSB0dXJ0bGUncyBtb3Zl
bWVudCB3aWxsIGxlYXZlIGEgdHJhY2UgdXNpbmcgYFBlblVwKClgIGFuZCBgUGVuRG93bigpYCwg
YW5kIGNvbnRyb2wgaXRzIG1vdmVtZW50IHVzaW5nIGBGb3J3YXJkKClgLCBgVHVybigpYCwgYW5k
IGBHb1RvKClgLiBGaW5hbGx5LCBgR2V0WCgpYCBhbmQgYEdldFkoKWAgdGVsbCB5b3UgdGhlIGN1
cnJlbnQgcG9zaXRpb24gb2YgdGhlIHR1cnRsZS4KLQotWW91ciBwcm9ncmFtIHdpbGwgbm9ybWFs
bHkgdXNlIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZS4gSW4gdGVzdHMs
IHlvdSBjYW4gdXNlIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLiBUaGlzIGFsbG93cyB5
b3UgdG8gZWFzaWx5IGNoZWNrIHdoYXQgZHJhd2luZyBwcmltaXRpdmVzIHlvdXIgcHJvZ3JhbSBp
cyBjYWxsaW5nLCB3aXRoIHdoYXQgYXJndW1lbnRzLCBhbmQgaW4gd2hpY2ggb3JkZXIuIFRlc3Rz
IHdyaXR0ZW4gdGhpcyB3YXkgYXJlIG11Y2ggbW9yZSByb2J1c3QgKHRoZXkgd29uJ3QgYnJlYWsg
YmVjYXVzZSB5b3VyIG5ldyBtYWNoaW5lIGRvZXMgYW50aS1hbGlhc2luZyBkaWZmZXJlbnRseSks
IGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbiAodGhlIGludGVudCBvZiBhIHRlc3QgaXMgZXhw
cmVzc2VkIGluIHRoZSBjb2RlLCBub3QgaW4gc29tZSBiaW5hcnkgaW1hZ2VzKSwgYW5kIHJ1biBf
bXVjaCwgbXVjaCBmYXN0ZXJfLgotCi0jIFdyaXRpbmcgdGhlIE1vY2sgQ2xhc3MgIwotSWYgeW91
IGFyZSBsdWNreSwgdGhlIG1vY2tzIHlvdSBuZWVkIHRvIHVzZSBoYXZlIGFscmVhZHkgYmVlbiBp
bXBsZW1lbnRlZCBieSBzb21lIG5pY2UgcGVvcGxlLiBJZiwgaG93ZXZlciwgeW91IGZpbmQgeW91
cnNlbGYgaW4gdGhlIHBvc2l0aW9uIHRvIHdyaXRlIGEgbW9jayBjbGFzcywgcmVsYXggLSBHb29n
bGUgTW9jayB0dXJucyB0aGlzIHRhc2sgaW50byBhIGZ1biBnYW1lISAoV2VsbCwgYWxtb3N0LikK
LQotIyMgSG93IHRvIERlZmluZSBJdCAjIwotVXNpbmcgdGhlIGBUdXJ0bGVgIGludGVyZmFjZSBh
cyBleGFtcGxlLCBoZXJlIGFyZSB0aGUgc2ltcGxlIHN0ZXBzIHlvdSBuZWVkIHRvIGZvbGxvdzoK
LQotICAxLiBEZXJpdmUgYSBjbGFzcyBgTW9ja1R1cnRsZWAgZnJvbSBgVHVydGxlYC4KLSAgMS4g
VGFrZSBhIHZpcnR1YWwgZnVuY3Rpb24gb2YgYFR1cnRsZWAuIENvdW50IGhvdyBtYW55IGFyZ3Vt
ZW50cyBpdCBoYXMuCi0gIDEuIEluIHRoZSBgcHVibGljOmAgc2VjdGlvbiBvZiB0aGUgY2hpbGQg
Y2xhc3MsIHdyaXRlIGBNT0NLX01FVEhPRG4oKTtgIChvciBgTU9DS19DT05TVF9NRVRIT0RuKCk7
YCBpZiB5b3UgYXJlIG1vY2tpbmcgYSBgY29uc3RgIG1ldGhvZCksIHdoZXJlIGBuYCBpcyB0aGUg
bnVtYmVyIG9mIHRoZSBhcmd1bWVudHM7IGlmIHlvdSBjb3VudGVkIHdyb25nLCBzaGFtZSBvbiB5
b3UsIGFuZCBhIGNvbXBpbGVyIGVycm9yIHdpbGwgdGVsbCB5b3Ugc28uCi0gIDEuIE5vdyBjb21l
cyB0aGUgZnVuIHBhcnQ6IHlvdSB0YWtlIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGN1dC1hbmQt
cGFzdGUgdGhlIF9mdW5jdGlvbiBuYW1lXyBhcyB0aGUgX2ZpcnN0XyBhcmd1bWVudCB0byB0aGUg
bWFjcm8sIGFuZCBsZWF2ZSB3aGF0J3MgbGVmdCBhcyB0aGUgX3NlY29uZF8gYXJndW1lbnQgKGlu
IGNhc2UgeW91J3JlIGN1cmlvdXMsIHRoaXMgaXMgdGhlIF90eXBlIG9mIHRoZSBmdW5jdGlvbl8p
LgotICAxLiBSZXBlYXQgdW50aWwgYWxsIHZpcnR1YWwgZnVuY3Rpb25zIHlvdSB3YW50IHRvIG1v
Y2sgYXJlIGRvbmUuCi0KLUFmdGVyIHRoZSBwcm9jZXNzLCB5b3Ugc2hvdWxkIGhhdmUgc29tZXRo
aW5nIGxpa2U6Ci0KLWBgYAotI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+ICAvLyBCcmluZ3MgaW4g
R29vZ2xlIE1vY2suCi1jbGFzcyBNb2NrVHVydGxlIDogcHVibGljIFR1cnRsZSB7Ci0gcHVibGlj
OgotICAuLi4KLSAgTU9DS19NRVRIT0QwKFBlblVwLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDAo
UGVuRG93biwgdm9pZCgpKTsKLSAgTU9DS19NRVRIT0QxKEZvcndhcmQsIHZvaWQoaW50IGRpc3Rh
bmNlKSk7Ci0gIE1PQ0tfTUVUSE9EMShUdXJuLCB2b2lkKGludCBkZWdyZWVzKSk7Ci0gIE1PQ0tf
TUVUSE9EMihHb1RvLCB2b2lkKGludCB4LCBpbnQgeSkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAo
R2V0WCwgaW50KCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0WSwgaW50KCkpOwotfTsKLWBg
YAotCi1Zb3UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgdGhlc2UgbW9jayBtZXRob2RzIHNvbWV3aGVy
ZSBlbHNlIC0gdGhlIGBNT0NLX01FVEhPRCpgIG1hY3JvcyB3aWxsIGdlbmVyYXRlIHRoZSBkZWZp
bml0aW9ucyBmb3IgeW91LiBJdCdzIHRoYXQgc2ltcGxlISBPbmNlIHlvdSBnZXQgdGhlIGhhbmcg
b2YgaXQsIHlvdSBjYW4gcHVtcCBvdXQgbW9jayBjbGFzc2VzIGZhc3RlciB0aGFuIHlvdXIgc291
cmNlLWNvbnRyb2wgc3lzdGVtIGNhbiBoYW5kbGUgeW91ciBjaGVjay1pbnMuCi0KLSoqVGlwOioq
IElmIGV2ZW4gdGhpcyBpcyB0b28gbXVjaCB3b3JrIGZvciB5b3UsIHlvdSdsbCBmaW5kIHRoZQot
YGdtb2NrX2dlbi5weWAgdG9vbCBpbiBHb29nbGUgTW9jaydzIGBzY3JpcHRzL2dlbmVyYXRvci9g
IGRpcmVjdG9yeSAoY291cnRlc3kgb2YgdGhlIFtjcHBjbGVhbl0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2NwcGNsZWFuLykgcHJvamVjdCkgdXNlZnVsLiAgVGhpcyBjb21tYW5kLWxpbmUKLXRv
b2wgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBQeXRob24gMi40IGluc3RhbGxlZC4gIFlvdSBnaXZl
IGl0IGEgQysrIGZpbGUgYW5kIHRoZSBuYW1lIG9mIGFuIGFic3RyYWN0IGNsYXNzIGRlZmluZWQg
aW4gaXQsCi1hbmQgaXQgd2lsbCBwcmludCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbW9jayBjbGFz
cyBmb3IgeW91LiAgRHVlIHRvIHRoZQotY29tcGxleGl0eSBvZiB0aGUgQysrIGxhbmd1YWdlLCB0
aGlzIHNjcmlwdCBtYXkgbm90IGFsd2F5cyB3b3JrLCBidXQKLWl0IGNhbiBiZSBxdWl0ZSBoYW5k
eSB3aGVuIGl0IGRvZXMuICBGb3IgbW9yZSBkZXRhaWxzLCByZWFkIHRoZSBbdXNlciBkb2N1bWVu
dGF0aW9uXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9zb3VyY2UvYnJvd3Nl
L3RydW5rL3NjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRSkuCi0KLSMjIFdoZXJlIHRvIFB1dCBJdCAj
IwotV2hlbiB5b3UgZGVmaW5lIGEgbW9jayBjbGFzcywgeW91IG5lZWQgdG8gZGVjaWRlIHdoZXJl
IHRvIHB1dCBpdHMgZGVmaW5pdGlvbi4gU29tZSBwZW9wbGUgcHV0IGl0IGluIGEgYCpfdGVzdC5j
Y2AuIFRoaXMgaXMgZmluZSB3aGVuIHRoZSBpbnRlcmZhY2UgYmVpbmcgbW9ja2VkIChzYXksIGBG
b29gKSBpcyBvd25lZCBieSB0aGUgc2FtZSBwZXJzb24gb3IgdGVhbS4gT3RoZXJ3aXNlLCB3aGVu
IHRoZSBvd25lciBvZiBgRm9vYCBjaGFuZ2VzIGl0LCB5b3VyIHRlc3QgY291bGQgYnJlYWsuIChZ
b3UgY2FuJ3QgcmVhbGx5IGV4cGVjdCBgRm9vYCdzIG1haW50YWluZXIgdG8gZml4IGV2ZXJ5IHRl
c3QgdGhhdCB1c2VzIGBGb29gLCBjYW4geW91PykKLQotU28sIHRoZSBydWxlIG9mIHRodW1iIGlz
OiBpZiB5b3UgbmVlZCB0byBtb2NrIGBGb29gIGFuZCBpdCdzIG93bmVkIGJ5IG90aGVycywgZGVm
aW5lIHRoZSBtb2NrIGNsYXNzIGluIGBGb29gJ3MgcGFja2FnZSAoYmV0dGVyLCBpbiBhIGB0ZXN0
aW5nYCBzdWItcGFja2FnZSBzdWNoIHRoYXQgeW91IGNhbiBjbGVhcmx5IHNlcGFyYXRlIHByb2R1
Y3Rpb24gY29kZSBhbmQgdGVzdGluZyB1dGlsaXRpZXMpLCBhbmQgcHV0IGl0IGluIGEgYG1vY2tf
Zm9vLmhgLiBUaGVuIGV2ZXJ5b25lIGNhbiByZWZlcmVuY2UgYG1vY2tfZm9vLmhgIGZyb20gdGhl
aXIgdGVzdHMuIElmIGBGb29gIGV2ZXIgY2hhbmdlcywgdGhlcmUgaXMgb25seSBvbmUgY29weSBv
ZiBgTW9ja0Zvb2AgdG8gY2hhbmdlLCBhbmQgb25seSB0ZXN0cyB0aGF0IGRlcGVuZCBvbiB0aGUg
Y2hhbmdlZCBtZXRob2RzIG5lZWQgdG8gYmUgZml4ZWQuCi0KLUFub3RoZXIgd2F5IHRvIGRvIGl0
OiB5b3UgY2FuIGludHJvZHVjZSBhIHRoaW4gbGF5ZXIgYEZvb0FkYXB0b3JgIG9uIHRvcCBvZiBg
Rm9vYCBhbmQgY29kZSB0byB0aGlzIG5ldyBpbnRlcmZhY2UuIFNpbmNlIHlvdSBvd24gYEZvb0Fk
YXB0b3JgLCB5b3UgY2FuIGFic29yYiBjaGFuZ2VzIGluIGBGb29gIG11Y2ggbW9yZSBlYXNpbHku
IFdoaWxlIHRoaXMgaXMgbW9yZSB3b3JrIGluaXRpYWxseSwgY2FyZWZ1bGx5IGNob29zaW5nIHRo
ZSBhZGFwdG9yIGludGVyZmFjZSBjYW4gbWFrZSB5b3VyIGNvZGUgZWFzaWVyIHRvIHdyaXRlIGFu
ZCBtb3JlIHJlYWRhYmxlIChhIG5ldCB3aW4gaW4gdGhlIGxvbmcgcnVuKSwgYXMgeW91IGNhbiBj
aG9vc2UgYEZvb0FkYXB0b3JgIHRvIGZpdCB5b3VyIHNwZWNpZmljIGRvbWFpbiBtdWNoIGJldHRl
ciB0aGFuIGBGb29gIGRvZXMuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVzdHMgIwotT25jZSB5b3Ug
aGF2ZSBhIG1vY2sgY2xhc3MsIHVzaW5nIGl0IGlzIGVhc3kuIFRoZSB0eXBpY2FsIHdvcmsgZmxv
dyBpczoKLQotICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVzIGZyb20gdGhlIGB0ZXN0
aW5nYCBuYW1lc3BhY2Ugc3VjaCB0aGF0IHlvdSBjYW4gdXNlIHRoZW0gdW5xdWFsaWZpZWQgKFlv
dSBvbmx5IGhhdmUgdG8gZG8gaXQgb25jZSBwZXIgZmlsZS4gUmVtZW1iZXIgdGhhdCBuYW1lc3Bh
Y2VzIGFyZSBhIGdvb2QgaWRlYSBhbmQgZ29vZCBmb3IgeW91ciBoZWFsdGguKS4KLSAgMS4gQ3Jl
YXRlIHNvbWUgbW9jayBvYmplY3RzLgotICAxLiBTcGVjaWZ5IHlvdXIgZXhwZWN0YXRpb25zIG9u
IHRoZW0gKEhvdyBtYW55IHRpbWVzIHdpbGwgYSBtZXRob2QgYmUgY2FsbGVkPyBXaXRoIHdoYXQg
YXJndW1lbnRzPyBXaGF0IHNob3VsZCBpdCBkbz8gZXRjLikuCi0gIDEuIEV4ZXJjaXNlIHNvbWUg
Y29kZSB0aGF0IHVzZXMgdGhlIG1vY2tzOyBvcHRpb25hbGx5LCBjaGVjayB0aGUgcmVzdWx0IHVz
aW5nIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMuIElmIGEgbW9jayBtZXRob2QgaXMgY2FsbGVkIG1v
cmUgdGhhbiBleHBlY3RlZCBvciB3aXRoIHdyb25nIGFyZ3VtZW50cywgeW91J2xsIGdldCBhbiBl
cnJvciBpbW1lZGlhdGVseS4KLSAgMS4gV2hlbiBhIG1vY2sgaXMgZGVzdHJ1Y3RlZCwgR29vZ2xl
IE1vY2sgd2lsbCBhdXRvbWF0aWNhbGx5IGNoZWNrIHdoZXRoZXIgYWxsIGV4cGVjdGF0aW9ucyBv
biBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgotCi1IZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi0j
aW5jbHVkZSAicGF0aC90by9tb2NrLXR1cnRsZS5oIgotI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLXVzaW5nIDo6dGVzdGluZzo6QXRMZWFzdDsgICAg
ICAgICAgICAgICAgICAgICAvLyAjMQotCi1URVNUKFBhaW50ZXJUZXN0LCBDYW5EcmF3U29tZXRo
aW5nKSB7Ci0gIE1vY2tUdXJ0bGUgdHVydGxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
IzIKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5Eb3duKCkpICAgICAgICAgICAgICAvLyAjMwot
ICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwotCi0gIFBhaW50ZXIgcGFpbnRlcigmdHVydGxlKTsg
ICAgICAgICAgICAgICAgICAgLy8gIzQKLQotICBFWFBFQ1RfVFJVRShwYWludGVyLkRyYXdDaXJj
bGUoMCwgMCwgMTApKTsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAjNQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgLy8gVGhl
IGZvbGxvd2luZyBsaW5lIG11c3QgYmUgZXhlY3V0ZWQgdG8gaW5pdGlhbGl6ZSBHb29nbGUgTW9j
awotICAvLyAoYW5kIEdvb2dsZSBUZXN0KSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdHMuCi0gIDo6
dGVzdGluZzo6SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGFyZ3YpOwotICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOwotfQotYGBgCi0KLUFzIHlvdSBtaWdodCBoYXZlIGd1ZXNzZWQsIHRoaXMgdGVzdCBj
aGVja3MgdGhhdCBgUGVuRG93bigpYCBpcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4gSWYgdGhlIGBw
YWludGVyYCBvYmplY3QgZGlkbid0IGNhbGwgdGhpcyBtZXRob2QsIHlvdXIgdGVzdCB3aWxsIGZh
aWwgd2l0aCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgotCi1gYGAKLXBhdGgvdG8vbXlfdGVzdC5jYzox
MTk6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggdGhp
cyBleHBlY3RhdGlvbjoKLUFjdHVhbGx5OiBuZXZlciBjYWxsZWQ7Ci1FeHBlY3RlZDogY2FsbGVk
IGF0IGxlYXN0IG9uY2UuCi1gYGAKLQotKipUaXAgMToqKiBJZiB5b3UgcnVuIHRoZSB0ZXN0IGZy
b20gYW4gRW1hY3MgYnVmZmVyLCB5b3UgY2FuIGhpdCBgPEVudGVyPmAgb24gdGhlIGxpbmUgbnVt
YmVyIGRpc3BsYXllZCBpbiB0aGUgZXJyb3IgbWVzc2FnZSB0byBqdW1wIHJpZ2h0IHRvIHRoZSBm
YWlsZWQgZXhwZWN0YXRpb24uCi0KLSoqVGlwIDI6KiogSWYgeW91ciBtb2NrIG9iamVjdHMgYXJl
IG5ldmVyIGRlbGV0ZWQsIHRoZSBmaW5hbCB2ZXJpZmljYXRpb24gd29uJ3QgaGFwcGVuLiBUaGVy
ZWZvcmUgaXQncyBhIGdvb2QgaWRlYSB0byB1c2UgYSBoZWFwIGxlYWsgY2hlY2tlciBpbiB5b3Vy
IHRlc3RzIHdoZW4geW91IGFsbG9jYXRlIG1vY2tzIG9uIHRoZSBoZWFwLgotCi0qKkltcG9ydGFu
dCBub3RlOioqIEdvb2dsZSBNb2NrIHJlcXVpcmVzIGV4cGVjdGF0aW9ucyB0byBiZSBzZXQgKipi
ZWZvcmUqKiB0aGUgbW9jayBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgb3RoZXJ3aXNlIHRoZSBiZWhh
dmlvciBpcyAqKnVuZGVmaW5lZCoqLiBJbiBwYXJ0aWN1bGFyLCB5b3UgbXVzdG4ndCBpbnRlcmxl
YXZlIGBFWFBFQ1RfQ0FMTCgpYHMgYW5kIGNhbGxzIHRvIHRoZSBtb2NrIGZ1bmN0aW9ucy4KLQot
VGhpcyBtZWFucyBgRVhQRUNUX0NBTEwoKWAgc2hvdWxkIGJlIHJlYWQgYXMgZXhwZWN0aW5nIHRo
YXQgYSBjYWxsIHdpbGwgb2NjdXIgX2luIHRoZSBmdXR1cmVfLCBub3QgdGhhdCBhIGNhbGwgaGFz
IG9jY3VycmVkLiBXaHkgZG9lcyBHb29nbGUgTW9jayB3b3JrIGxpa2UgdGhhdD8gV2VsbCwgc3Bl
Y2lmeWluZyB0aGUgZXhwZWN0YXRpb24gYmVmb3JlaGFuZCBhbGxvd3MgR29vZ2xlIE1vY2sgdG8g
cmVwb3J0IGEgdmlvbGF0aW9uIGFzIHNvb24gYXMgaXQgYXJpc2VzLCB3aGVuIHRoZSBjb250ZXh0
IChzdGFjayB0cmFjZSwgZXRjKSBpcyBzdGlsbCBhdmFpbGFibGUuIFRoaXMgbWFrZXMgZGVidWdn
aW5nIG11Y2ggZWFzaWVyLgotCi1BZG1pdHRlZGx5LCB0aGlzIHRlc3QgaXMgY29udHJpdmVkIGFu
ZCBkb2Vzbid0IGRvIG11Y2guIFlvdSBjYW4gZWFzaWx5IGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0
IHdpdGhvdXQgdXNpbmcgR29vZ2xlIE1vY2suIEhvd2V2ZXIsIGFzIHdlIHNoYWxsIHJldmVhbCBz
b29uLCBHb29nbGUgTW9jayBhbGxvd3MgeW91IHRvIGRvIF9tdWNoIG1vcmVfIHdpdGggdGhlIG1v
Y2tzLgotCi0jIyBVc2luZyBHb29nbGUgTW9jayB3aXRoIEFueSBUZXN0aW5nIEZyYW1ld29yayAj
IwotSWYgeW91IHdhbnQgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIEdvb2dsZSBUZXN0IChl
LmcuIFtDcHBVbml0XShodHRwOi8vYXBwcy5zb3VyY2Vmb3JnZS5uZXQvbWVkaWF3aWtpL2NwcHVu
aXQvaW5kZXgucGhwP3RpdGxlPU1haW5fUGFnZSkgb3IKLVtDeHhUZXN0XShodHRwOi8vY3h4dGVz
dC50aWdyaXMub3JnLykpIGFzIHlvdXIgdGVzdGluZyBmcmFtZXdvcmssIGp1c3QgY2hhbmdlIHRo
ZSBgbWFpbigpYCBmdW5jdGlvbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiB0bzoKLWBgYAotaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBj
YXVzZXMgR29vZ2xlIE1vY2sgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUsCi0gIC8v
IHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBhcyBh
IHRlc3QgZmFpbHVyZS4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUp
ID0gdHJ1ZTsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0gIC4u
LiB3aGF0ZXZlciB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgotfQotYGBgCi0K
LVRoaXMgYXBwcm9hY2ggaGFzIGEgY2F0Y2g6IGl0IG1ha2VzIEdvb2dsZSBNb2NrIHRocm93IGFu
IGV4Y2VwdGlvbgotZnJvbSBhIG1vY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBzb21ldGltZXMuICBX
aXRoIHNvbWUgY29tcGlsZXJzLCB0aGlzCi1zb21ldGltZXMgY2F1c2VzIHRoZSB0ZXN0IHByb2dy
YW0gdG8gY3Jhc2guICBZb3UnbGwgc3RpbGwgYmUgYWJsZSB0bwotbm90aWNlIHRoYXQgdGhlIHRl
c3QgaGFzIGZhaWxlZCwgYnV0IGl0J3Mgbm90IGEgZ3JhY2VmdWwgZmFpbHVyZS4KLQotQSBiZXR0
ZXIgc29sdXRpb24gaXMgdG8gdXNlIEdvb2dsZSBUZXN0J3MKLVtldmVudCBsaXN0ZW5lciBBUEld
KGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvR29vZ2xlVGVzdEFkdmFu
Y2VkR3VpZGUjRXh0ZW5kaW5nX0dvb2dsZV9UZXN0X2J5X0hhbmRsaW5nX1Rlc3RfRXZlbnRzKQot
dG8gcmVwb3J0IGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcHJvcGVy
bHkuICBZb3UnbGwgbmVlZCB0bwotaW1wbGVtZW50IHRoZSBgT25UZXN0UGFydFJlc3VsdCgpYCBt
ZXRob2Qgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGludGVyZmFjZSwgYnV0IGl0Ci1zaG91bGQgYmUg
c3RyYWlnaHRmb3J3YXJkLgotCi1JZiB0aGlzIHR1cm5zIG91dCB0byBiZSB0b28gbXVjaCB3b3Jr
LCB3ZSBzdWdnZXN0IHRoYXQgeW91IHN0aWNrIHdpdGgKLUdvb2dsZSBUZXN0LCB3aGljaCB3b3Jr
cyB3aXRoIEdvb2dsZSBNb2NrIHNlYW1sZXNzbHkgKGluIGZhY3QsIGl0IGlzCi10ZWNobmljYWxs
eSBwYXJ0IG9mIEdvb2dsZSBNb2NrLikuICBJZiB0aGVyZSBpcyBhIHJlYXNvbiB0aGF0IHlvdQot
Y2Fubm90IHVzZSBHb29nbGUgVGVzdCwgcGxlYXNlIGxldCB1cyBrbm93LgotCi0jIFNldHRpbmcg
RXhwZWN0YXRpb25zICMKLVRoZSBrZXkgdG8gdXNpbmcgYSBtb2NrIG9iamVjdCBzdWNjZXNzZnVs
bHkgaXMgdG8gc2V0IHRoZSBfcmlnaHQgZXhwZWN0YXRpb25zXyBvbiBpdC4gSWYgeW91IHNldCB0
aGUgZXhwZWN0YXRpb25zIHRvbyBzdHJpY3QsIHlvdXIgdGVzdCB3aWxsIGZhaWwgYXMgdGhlIHJl
c3VsdCBvZiB1bnJlbGF0ZWQgY2hhbmdlcy4gSWYgeW91IHNldCB0aGVtIHRvbyBsb29zZSwgYnVn
cyBjYW4gc2xpcCB0aHJvdWdoLiBZb3Ugd2FudCB0byBkbyBpdCBqdXN0IHJpZ2h0IHN1Y2ggdGhh
dCB5b3VyIHRlc3QgY2FuIGNhdGNoIGV4YWN0bHkgdGhlIGtpbmQgb2YgYnVncyB5b3UgaW50ZW5k
IGl0IHRvIGNhdGNoLiBHb29nbGUgTW9jayBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IG1lYW5zIGZv
ciB5b3UgdG8gZG8gaXQgImp1c3QgcmlnaHQuIgotCi0jIyBHZW5lcmFsIFN5bnRheCAjIwotSW4g
R29vZ2xlIE1vY2sgd2UgdXNlIHRoZSBgRVhQRUNUX0NBTEwoKWAgbWFjcm8gdG8gc2V0IGFuIGV4
cGVjdGF0aW9uIG9uIGEgbW9jayBtZXRob2QuIFRoZSBnZW5lcmFsIHN5bnRheCBpczoKLQotYGBg
Ci1FWFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKLSAgICAuVGltZXMo
Y2FyZGluYWxpdHkpCi0gICAgLldpbGxPbmNlKGFjdGlvbikKLSAgICAuV2lsbFJlcGVhdGVkbHko
YWN0aW9uKTsKLWBgYAotCi1UaGUgbWFjcm8gaGFzIHR3byBhcmd1bWVudHM6IGZpcnN0IHRoZSBt
b2NrIG9iamVjdCwgYW5kIHRoZW4gdGhlIG1ldGhvZCBhbmQgaXRzIGFyZ3VtZW50cy4gTm90ZSB0
aGF0IHRoZSB0d28gYXJlIHNlcGFyYXRlZCBieSBhIGNvbW1hIChgLGApLCBub3QgYSBwZXJpb2Qg
KGAuYCkuIChXaHkgdXNpbmcgYSBjb21tYT8gVGhlIGFuc3dlciBpcyB0aGF0IGl0IHdhcyBuZWNl
c3NhcnkgZm9yIHRlY2huaWNhbCByZWFzb25zLikKLQotVGhlIG1hY3JvIGNhbiBiZSBmb2xsb3dl
ZCBieSBzb21lIG9wdGlvbmFsIF9jbGF1c2VzXyB0aGF0IHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZXhwZWN0YXRpb24uIFdlJ2xsIGRpc2N1c3MgaG93IGVhY2ggY2xhdXNlIHdv
cmtzIGluIHRoZSBjb21pbmcgc2VjdGlvbnMuCi0KLVRoaXMgc3ludGF4IGlzIGRlc2lnbmVkIHRv
IG1ha2UgYW4gZXhwZWN0YXRpb24gcmVhZCBsaWtlIEVuZ2xpc2guIEZvciBleGFtcGxlLCB5b3Ug
Y2FuIHByb2JhYmx5IGd1ZXNzIHRoYXQKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsu
Li4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgIC5UaW1lcyg1KQotICAgIC5XaWxs
T25jZShSZXR1cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDE1MCkpCi0gICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybigyMDApKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhlIGB0dXJ0bGVgIG9i
amVjdCdzIGBHZXRYKClgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmaXZlIHRpbWVzLCBpdCB3aWxs
IHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIDE1MCB0aGUgc2Vjb25kIHRpbWUsIGFuZCB0aGVu
IDIwMCBldmVyeSB0aW1lLiBTb21lIHBlb3BsZSBsaWtlIHRvIGNhbGwgdGhpcyBzdHlsZSBvZiBz
eW50YXggYSBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UgKERTTCkuCi0KLSoqTm90ZToqKiBXaHkg
ZG8gd2UgdXNlIGEgbWFjcm8gdG8gZG8gdGhpcz8gSXQgc2VydmVzIHR3byBwdXJwb3NlczogZmly
c3QgaXQgbWFrZXMgZXhwZWN0YXRpb25zIGVhc2lseSBpZGVudGlmaWFibGUgKGVpdGhlciBieSBg
Z3JlcGAgb3IgYnkgYSBodW1hbiByZWFkZXIpLCBhbmQgc2Vjb25kIGl0IGFsbG93cyBHb29nbGUg
TW9jayB0byBpbmNsdWRlIHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlvbiBvZiBhIGZhaWxlZCBleHBl
Y3RhdGlvbiBpbiBtZXNzYWdlcywgbWFraW5nIGRlYnVnZ2luZyBlYXNpZXIuCi0KLSMjIE1hdGNo
ZXJzOiBXaGF0IEFyZ3VtZW50cyBEbyBXZSBFeHBlY3Q/ICMjCi1XaGVuIGEgbW9jayBmdW5jdGlv
biB0YWtlcyBhcmd1bWVudHMsIHdlIG11c3Qgc3BlY2lmeSB3aGF0IGFyZ3VtZW50cyB3ZSBhcmUg
ZXhwZWN0aW5nOyBmb3IgZXhhbXBsZToKLQotYGBgCi0vLyBFeHBlY3RzIHRoZSB0dXJ0bGUgdG8g
bW92ZSBmb3J3YXJkIGJ5IDEwMCB1bml0cy4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgx
MDApKTsKLWBgYAotCi1Tb21ldGltZXMgeW91IG1heSBub3Qgd2FudCB0byBiZSB0b28gc3BlY2lm
aWMgKFJlbWVtYmVyIHRoYXQgdGFsayBhYm91dCB0ZXN0cyBiZWluZyB0b28gcmlnaWQ/IE92ZXIg
c3BlY2lmaWNhdGlvbiBsZWFkcyB0byBicml0dGxlIHRlc3RzIGFuZCBvYnNjdXJlcyB0aGUgaW50
ZW50IG9mIHRlc3RzLiBUaGVyZWZvcmUgd2UgZW5jb3VyYWdlIHlvdSB0byBzcGVjaWZ5IG9ubHkg
d2hhdCdzIG5lY2Vzc2FyeSAtIG5vIG1vcmUsIG5vIGxlc3MuKS4gSWYgeW91IGNhcmUgdG8gY2hl
Y2sgdGhhdCBgRm9yd2FyZCgpYCB3aWxsIGJlIGNhbGxlZCBidXQgYXJlbid0IGludGVyZXN0ZWQg
aW4gaXRzIGFjdHVhbCBhcmd1bWVudCwgd3JpdGUgYF9gIGFzIHRoZSBhcmd1bWVudCwgd2hpY2gg
bWVhbnMgImFueXRoaW5nIGdvZXMiOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgot
Ly8gRXhwZWN0cyB0aGUgdHVydGxlIHRvIG1vdmUgZm9yd2FyZC4KLUVYUEVDVF9DQUxMKHR1cnRs
ZSwgRm9yd2FyZChfKSk7Ci1gYGAKLQotYF9gIGlzIGFuIGluc3RhbmNlIG9mIHdoYXQgd2UgY2Fs
bCAqKm1hdGNoZXJzKiouIEEgbWF0Y2hlciBpcyBsaWtlIGEgcHJlZGljYXRlIGFuZCBjYW4gdGVz
dCB3aGV0aGVyIGFuIGFyZ3VtZW50IGlzIHdoYXQgd2UnZCBleHBlY3QuIFlvdSBjYW4gdXNlIGEg
bWF0Y2hlciBpbnNpZGUgYEVYUEVDVF9DQUxMKClgIHdoZXJldmVyIGEgZnVuY3Rpb24gYXJndW1l
bnQgaXMgZXhwZWN0ZWQuCi0KLUEgbGlzdCBvZiBidWlsdC1pbiBtYXRjaGVycyBjYW4gYmUgZm91
bmQgaW4gdGhlIFtDaGVhdFNoZWV0XShWMV81X0NoZWF0U2hlZXQubWQpLiBGb3IgZXhhbXBsZSwg
aGVyZSdzIHRoZSBgR2VgIChncmVhdGVyIHRoYW4gb3IgZXF1YWwpIG1hdGNoZXI6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpHZTsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZChHZSgx
MDApKSk7Ci1gYGAKLQotVGhpcyBjaGVja3MgdGhhdCB0aGUgdHVydGxlIHdpbGwgYmUgdG9sZCB0
byBnbyBmb3J3YXJkIGJ5IGF0IGxlYXN0IDEwMCB1bml0cy4KLQotIyMgQ2FyZGluYWxpdGllczog
SG93IE1hbnkgVGltZXMgV2lsbCBJdCBCZSBDYWxsZWQ/ICMjCi1UaGUgZmlyc3QgY2xhdXNlIHdl
IGNhbiBzcGVjaWZ5IGZvbGxvd2luZyBhbiBgRVhQRUNUX0NBTEwoKWAgaXMgYFRpbWVzKClgLiBX
ZSBjYWxsIGl0cyBhcmd1bWVudCBhICoqY2FyZGluYWxpdHkqKiBhcyBpdCB0ZWxscyBfaG93IG1h
bnkgdGltZXNfIHRoZSBjYWxsIHNob3VsZCBvY2N1ci4gSXQgYWxsb3dzIHVzIHRvIHJlcGVhdCBh
biBleHBlY3RhdGlvbiBtYW55IHRpbWVzIHdpdGhvdXQgYWN0dWFsbHkgd3JpdGluZyBpdCBhcyBt
YW55IHRpbWVzLiBNb3JlIGltcG9ydGFudGx5LCBhIGNhcmRpbmFsaXR5IGNhbiBiZSAiZnV6enki
LCBqdXN0IGxpa2UgYSBtYXRjaGVyIGNhbiBiZS4gVGhpcyBhbGxvd3MgYSB1c2VyIHRvIGV4cHJl
c3MgdGhlIGludGVudCBvZiBhIHRlc3QgZXhhY3RseS4KLQotQW4gaW50ZXJlc3Rpbmcgc3BlY2lh
bCBjYXNlIGlzIHdoZW4gd2Ugc2F5IGBUaW1lcygwKWAuIFlvdSBtYXkgaGF2ZSBndWVzc2VkIC0g
aXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIHRoZSBn
aXZlbiBhcmd1bWVudHMgYXQgYWxsLCBhbmQgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYSBHb29n
bGUgVGVzdCBmYWlsdXJlIHdoZW5ldmVyIHRoZSBmdW5jdGlvbiBpcyAod3JvbmdmdWxseSkgY2Fs
bGVkLgotCi1XZSd2ZSBzZWVuIGBBdExlYXN0KG4pYCBhcyBhbiBleGFtcGxlIG9mIGZ1enp5IGNh
cmRpbmFsaXRpZXMgZWFybGllci4gRm9yIHRoZSBsaXN0IG9mIGJ1aWx0LWluIGNhcmRpbmFsaXRp
ZXMgeW91IGNhbiB1c2UsIHNlZSB0aGUgW0NoZWF0U2hlZXRdKFYxXzVfQ2hlYXRTaGVldC5tZCku
Ci0KLVRoZSBgVGltZXMoKWAgY2xhdXNlIGNhbiBiZSBvbWl0dGVkLiAqKklmIHlvdSBvbWl0IGBU
aW1lcygpYCwgR29vZ2xlIE1vY2sgd2lsbCBpbmZlciB0aGUgY2FyZGluYWxpdHkgZm9yIHlvdS4q
KiBUaGUgcnVsZXMgYXJlIGVhc3kgdG8gcmVtZW1iZXI6Ci0KLSAgKiBJZiAqKm5laXRoZXIqKiBg
V2lsbE9uY2UoKWAgKipub3IqKiBgV2lsbFJlcGVhdGVkbHkoKWAgaXMgaW4gdGhlIGBFWFBFQ1Rf
Q0FMTCgpYCwgdGhlIGluZmVycmVkIGNhcmRpbmFsaXR5IGlzIGBUaW1lcygxKWAuCi0gICogSWYg
dGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYnV0ICoqbm8qKiBgV2lsbFJlcGVhdGVkbHkoKWAs
IHdoZXJlIGBuYCA+PSAxLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRpbWVzKG4pYC4KLSAgKiBJZiB0
aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBhbmQgKipvbmUqKiBgV2lsbFJlcGVhdGVkbHkoKWAs
IHdoZXJlIGBuYCA+PSAwLCB0aGUgY2FyZGluYWxpdHkgaXMgYFRpbWVzKEF0TGVhc3QobikpYC4K
LQotKipRdWljayBxdWl6OioqIHdoYXQgZG8geW91IHRoaW5rIHdpbGwgaGFwcGVuIGlmIGEgZnVu
Y3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHR3aWNlIGJ1dCBhY3R1YWxseSBjYWxsZWQg
Zm91ciB0aW1lcz8KLQotIyMgQWN0aW9uczogV2hhdCBTaG91bGQgSXQgRG8/ICMjCi1SZW1lbWJl
ciB0aGF0IGEgbW9jayBvYmplY3QgZG9lc24ndCByZWFsbHkgaGF2ZSBhIHdvcmtpbmcgaW1wbGVt
ZW50YXRpb24/IFdlIGFzIHVzZXJzIGhhdmUgdG8gdGVsbCBpdCB3aGF0IHRvIGRvIHdoZW4gYSBt
ZXRob2QgaXMgaW52b2tlZC4gVGhpcyBpcyBlYXN5IGluIEdvb2dsZSBNb2NrLgotCi1GaXJzdCwg
aWYgdGhlIHJldHVybiB0eXBlIG9mIGEgbW9jayBmdW5jdGlvbiBpcyBhIGJ1aWx0LWluIHR5cGUg
b3IgYSBwb2ludGVyLCB0aGUgZnVuY3Rpb24gaGFzIGEgKipkZWZhdWx0IGFjdGlvbioqIChhIGB2
b2lkYCBmdW5jdGlvbiB3aWxsIGp1c3QgcmV0dXJuLCBhIGBib29sYCBmdW5jdGlvbiB3aWxsIHJl
dHVybiBgZmFsc2VgLCBhbmQgb3RoZXIgZnVuY3Rpb25zIHdpbGwgcmV0dXJuIDApLiBJZiB5b3Ug
ZG9uJ3Qgc2F5IGFueXRoaW5nLCB0aGlzIGJlaGF2aW9yIHdpbGwgYmUgdXNlZC4KLQotU2Vjb25k
LCBpZiBhIG1vY2sgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGEgZGVmYXVsdCBhY3Rpb24sIG9yIHRo
ZSBkZWZhdWx0IGFjdGlvbiBkb2Vzbid0IHN1aXQgeW91LCB5b3UgY2FuIHNwZWNpZnkgdGhlIGFj
dGlvbiB0byBiZSB0YWtlbiBlYWNoIHRpbWUgdGhlIGV4cGVjdGF0aW9uIG1hdGNoZXMgdXNpbmcg
YSBzZXJpZXMgb2YgYFdpbGxPbmNlKClgIGNsYXVzZXMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwg
YFdpbGxSZXBlYXRlZGx5KClgLiBGb3IgZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgIC5XaWxsT25jZShS
ZXR1cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIwMCkpCi0gICAgLldpbGxPbmNlKFJl
dHVybigzMDApKTsKLWBgYAotCi1UaGlzIHNheXMgdGhhdCBgdHVydGxlLkdldFgoKWAgd2lsbCBi
ZSBjYWxsZWQgX2V4YWN0bHkgdGhyZWUgdGltZXNfIChHb29nbGUgTW9jayBpbmZlcnJlZCB0aGlz
IGZyb20gaG93IG1hbnkgYFdpbGxPbmNlKClgIGNsYXVzZXMgd2UndmUgd3JpdHRlbiwgc2luY2Ug
d2UgZGlkbid0IGV4cGxpY2l0bHkgd3JpdGUgYFRpbWVzKClgKSwgYW5kIHdpbGwgcmV0dXJuIDEw
MCwgMjAwLCBhbmQgMzAwIHJlc3BlY3RpdmVseS4KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJl
dHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgpKQotICAgIC5XaWxsT25jZShSZXR1
cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIwMCkpCi0gICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybigzMDApKTsKLWBgYAotCi1zYXlzIHRoYXQgYHR1cnRsZS5HZXRZKClgIHdpbGwgYmUg
Y2FsbGVkIF9hdCBsZWFzdCB0d2ljZV8gKEdvb2dsZSBNb2NrIGtub3dzIHRoaXMgYXMgd2UndmUg
d3JpdHRlbiB0d28gYFdpbGxPbmNlKClgIGNsYXVzZXMgYW5kIGEgYFdpbGxSZXBlYXRlZGx5KClg
IHdoaWxlIGhhdmluZyBubyBleHBsaWNpdCBgVGltZXMoKWApLCB3aWxsIHJldHVybiAxMDAgdGhl
IGZpcnN0IHRpbWUsIDIwMCB0aGUgc2Vjb25kIHRpbWUsIGFuZCAzMDAgZnJvbSB0aGUgdGhpcmQg
dGltZSBvbi4KLQotT2YgY291cnNlLCBpZiB5b3UgZXhwbGljaXRseSB3cml0ZSBhIGBUaW1lcygp
YCwgR29vZ2xlIE1vY2sgd2lsbCBub3QgdHJ5IHRvIGluZmVyIHRoZSBjYXJkaW5hbGl0eSBpdHNl
bGYuIFdoYXQgaWYgdGhlIG51bWJlciB5b3Ugc3BlY2lmaWVkIGlzIGxhcmdlciB0aGFuIHRoZXJl
IGFyZSBgV2lsbE9uY2UoKWAgY2xhdXNlcz8gV2VsbCwgYWZ0ZXIgYWxsIGBXaWxsT25jZSgpYHMg
YXJlIHVzZWQgdXAsIEdvb2dsZSBNb2NrIHdpbGwgZG8gdGhlIF9kZWZhdWx0XyBhY3Rpb24gZm9y
IHRoZSBmdW5jdGlvbiBldmVyeSB0aW1lICh1bmxlc3MsIG9mIGNvdXJzZSwgeW91IGhhdmUgYSBg
V2lsbFJlcGVhdGVkbHkoKWAuKS4KLQotV2hhdCBjYW4gd2UgZG8gaW5zaWRlIGBXaWxsT25jZSgp
YCBiZXNpZGVzIGBSZXR1cm4oKWA/IFlvdSBjYW4gcmV0dXJuIGEgcmVmZXJlbmNlIHVzaW5nIGBS
ZXR1cm5SZWYodmFyaWFibGUpYCwgb3IgaW52b2tlIGEgcHJlLWRlZmluZWQgZnVuY3Rpb24sIGFt
b25nIFtvdGhlcnNdKFYxXzVfQ2hlYXRTaGVldCNBY3Rpb25zLm1kKS4KLQotKipJbXBvcnRhbnQg
bm90ZToqKiBUaGUgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGFjdGlv
biBjbGF1c2Ugb25seSBvbmNlLCBldmVuIHRob3VnaCB0aGUgYWN0aW9uIG1heSBiZSBwZXJmb3Jt
ZWQgbWFueSB0aW1lcy4gVGhlcmVmb3JlIHlvdSBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgc2lkZSBl
ZmZlY3RzLiBUaGUgZm9sbG93aW5nIG1heSBub3QgZG8gd2hhdCB5b3Ugd2FudDoKLQotYGBgCi1p
bnQgbiA9IDEwMDsKLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotLlRpbWVzKDQpCi0uV2ls
bE9uY2UoUmV0dXJuKG4rKykpOwotYGBgCi0KLUluc3RlYWQgb2YgcmV0dXJuaW5nIDEwMCwgMTAx
LCAxMDIsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpbGwgYWx3YXlz
IHJldHVybiAxMDAgYXMgYG4rK2AgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gU2ltaWxhcmx5LCBg
UmV0dXJuKG5ldyBGb28pYCB3aWxsIGNyZWF0ZSBhIG5ldyBgRm9vYCBvYmplY3Qgd2hlbiB0aGUg
YEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLCBhbmQgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9p
bnRlciBldmVyeSB0aW1lLiBJZiB5b3Ugd2FudCB0aGUgc2lkZSBlZmZlY3QgdG8gaGFwcGVuIGV2
ZXJ5IHRpbWUsIHlvdSBuZWVkIHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24sIHdoaWNoIHdlJ2xs
IHRlYWNoIGluIHRoZSBbQ29va0Jvb2tdKFYxXzVfQ29va0Jvb2subWQpLgotCi1UaW1lIGZvciBh
bm90aGVyIHF1aXohIFdoYXQgZG8geW91IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFko
KSkKLS5UaW1lcyg0KQotLldpbGxPbmNlKFJldHVybigxMDApKTsKLWBgYAotCi1PYnZpb3VzbHkg
YHR1cnRsZS5HZXRZKClgIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQg
aWYgeW91IHRoaW5rIGl0IHdpbGwgcmV0dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEg
UmVtZW1iZXIgdGhhdCBvbmUgYFdpbGxPbmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVh
Y2ggdGltZSB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdp
bGwgYmUgdGFrZW4gYWZ0ZXJ3YXJkcy4gU28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0
bGUuR2V0WSgpYCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAw
IGZyb20gdGhlIHNlY29uZCB0aW1lIG9uKiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0
IGFjdGlvbiBmb3IgYGludGAgZnVuY3Rpb25zLgotCi0jIyBVc2luZyBNdWx0aXBsZSBFeHBlY3Rh
dGlvbnMgIyMKLVNvIGZhciB3ZSd2ZSBvbmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZl
IGEgc2luZ2xlIGV4cGVjdGF0aW9uLiBNb3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0
byBzcGVjaWZ5IGV4cGVjdGF0aW9ucyBvbiBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1h
eSBiZSBmcm9tIG11bHRpcGxlIG1vY2sgb2JqZWN0cy4KLQotQnkgZGVmYXVsdCwgd2hlbiBhIG1v
Y2sgbWV0aG9kIGlzIGludm9rZWQsIEdvb2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3Rh
dGlvbnMgaW4gdGhlICoqcmV2ZXJzZSBvcmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9w
IHdoZW4gYW4gYWN0aXZlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlz
IGZvdW5kICh5b3UgY2FuIHRoaW5rIG9mIGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRl
ciBvbmVzLiIpLiBJZiB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1v
cmUgY2FsbHMsIHlvdSB3aWxsIGdldCBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBI
ZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4uCi1FWFBFQ1Rf
Q0FMTCh0dXJ0bGUsIEZvcndhcmQoXykpOyAgLy8gIzEKLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9y
d2FyZCgxMCkpICAvLyAjMgotICAgIC5UaW1lcygyKTsKLWBgYAotCi1JZiBgRm9yd2FyZCgxMClg
IGlzIGNhbGxlZCB0aHJlZSB0aW1lcyBpbiBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBi
ZSBhbiBlcnJvciwgYXMgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVl
biBzYXR1cmF0ZWQuIElmLCBob3dldmVyLCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlz
IHJlcGxhY2VkIGJ5IGBGb3J3YXJkKDIwKWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAj
MSB3aWxsIGJlIHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbi4KLQotKipTaWRlIG5vdGU6KiogV2h5
IGRvZXMgR29vZ2xlIE1vY2sgc2VhcmNoIGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3Jk
ZXIgb2YgdGhlIGV4cGVjdGF0aW9ucz8gVGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEg
dXNlciB0byBzZXQgdXAgdGhlIGRlZmF1bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3Qn
cyBjb25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVu
IGN1c3RvbWl6ZSB0aGUgbW9jayBieSB3cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25z
IGluIHRoZSB0ZXN0IGJvZHkuIFNvLCBpZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRo
ZSBzYW1lIG1ldGhvZCwgeW91IHdhbnQgdG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmlj
IG1hdGNoZXJzICoqYWZ0ZXIqKiB0aGUgb3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUg
d291bGQgYmUgc2hhZG93ZWQgYnkgdGhlIG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRl
ciBpdC4KLQotIyMgT3JkZXJlZCB2cyBVbm9yZGVyZWQgQ2FsbHMgIyMKLUJ5IGRlZmF1bHQsIGFu
IGV4cGVjdGF0aW9uIGNhbiBtYXRjaCBhIGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBl
Y3RhdGlvbiBoYXNuJ3QgYmVlbiBzYXRpc2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMg
ZG9uJ3QgaGF2ZSB0byBvY2N1ciBpbiB0aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3Bl
Y2lmaWVkLgotCi1Tb21ldGltZXMsIHlvdSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxz
IHRvIG9jY3VyIGluIGEgc3RyaWN0IG9yZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBp
cyBlYXN5OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KLVRFU1QoRm9v
VGVzdCwgRHJhd3NMaW5lU2VnbWVudCkgewotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgZHVt
bXk7Ci0KLSAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSk7Ci0gICAgRVhQRUNUX0NB
TEwodHVydGxlLCBGb3J3YXJkKDEwMCkpOwotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAo
KSk7Ci0gIH0KLSAgRm9vKCk7Ci19Ci1gYGAKLQotQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5
cGUgYEluU2VxdWVuY2VgLCBhbGwgZXhwZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGlu
dG8gYSBfc2VxdWVuY2VfIGFuZCBoYXZlIHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3
ZSBhcmUganVzdCByZWx5aW5nIG9uIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0
aGlzIG9iamVjdCB0byBkbyB0aGUgYWN0dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJl
bGV2YW50LgotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRo
ZSB0aHJlZSBleHBlY3RlZCBmdW5jdGlvbnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEg
Y2FsbCBpcyBtYWRlIG91dC1vZi1vcmRlciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotKFdoYXQg
aWYgeW91IGNhcmUgYWJvdXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxz
LCBidXQgbm90IGFsbCBvZiB0aGVtPyBDYW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRp
YWwgb3JkZXI/IFRoZSBhbnN3ZXIgaXMgLi4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRo
ZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0Nvb2tCb29rXShWMV81X0Nvb2tCb29rLm1k
KS4pCi0KLSMjIEFsbCBFeHBlY3RhdGlvbnMgQXJlIFN0aWNreSAoVW5sZXNzIFNhaWQgT3RoZXJ3
aXNlKSAjIwotTm93IGxldCdzIGRvIGEgcXVpY2sgcXVpeiB0byBzZWUgaG93IHdlbGwgeW91IGNh
biB1c2UgdGhpcyBtb2NrIHN0dWZmIGFscmVhZHkuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0IHRo
ZSB0dXJ0bGUgaXMgYXNrZWQgdG8gZ28gdG8gdGhlIG9yaWdpbiBfZXhhY3RseSB0d2ljZV8gKHlv
dSB3YW50IHRvIGlnbm9yZSBhbnkgb3RoZXIgaW5zdHJ1Y3Rpb25zIGl0IHJlY2VpdmVzKT8KLQot
QWZ0ZXIgeW91J3ZlIGNvbWUgdXAgd2l0aCB5b3VyIGFuc3dlciwgdGFrZSBhIGxvb2sgYXQgb3Vy
cyBhbmQgY29tcGFyZSBub3RlcyAoc29sdmUgaXQgeW91cnNlbGYgZmlyc3QgLSBkb24ndCBjaGVh
dCEpOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwg
R29UbyhfLCBfKSkgIC8vICMxCi0gICAgLlRpbWVzKEFueU51bWJlcigpKTsKLUVYUEVDVF9DQUxM
KHR1cnRsZSwgR29UbygwLCAwKSkgIC8vICMyCi0gICAgLlRpbWVzKDIpOwotYGBgCi0KLVN1cHBv
c2UgYHR1cnRsZS5Hb1RvKDAsIDApYCBpcyBjYWxsZWQgdGhyZWUgdGltZXMuIEluIHRoZSB0aGly
ZCB0aW1lLCBHb29nbGUgTW9jayB3aWxsIHNlZSB0aGF0IHRoZSBhcmd1bWVudHMgbWF0Y2ggZXhw
ZWN0YXRpb24gIzIgKHJlbWVtYmVyIHRoYXQgd2UgYWx3YXlzIHBpY2sgdGhlIGxhc3QgbWF0Y2hp
bmcgZXhwZWN0YXRpb24pLiBOb3csIHNpbmNlIHdlIHNhaWQgdGhhdCB0aGVyZSBzaG91bGQgYmUg
b25seSB0d28gc3VjaCBjYWxscywgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IgaW1t
ZWRpYXRlbHkuIFRoaXMgaXMgYmFzaWNhbGx5IHdoYXQgd2UndmUgdG9sZCB5b3UgaW4gdGhlICJV
c2luZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMiIHNlY3Rpb24gYWJvdmUuCi0KLVRoaXMgZXhhbXBs
ZSBzaG93cyB0aGF0ICoqZXhwZWN0YXRpb25zIGluIEdvb2dsZSBNb2NrIGFyZSAic3RpY2t5IiBi
eSBkZWZhdWx0KiosIGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgcmVtYWluIGFjdGl2ZSBldmVuIGFm
dGVyIHdlIGhhdmUgcmVhY2hlZCB0aGVpciBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kcy4gVGhpcyBp
cyBhbiBpbXBvcnRhbnQgcnVsZSB0byByZW1lbWJlciwgYXMgaXQgYWZmZWN0cyB0aGUgbWVhbmlu
ZyBvZiB0aGUgc3BlYywgYW5kIGlzICoqZGlmZmVyZW50KiogdG8gaG93IGl0J3MgZG9uZSBpbiBt
YW55IG90aGVyIG1vY2tpbmcgZnJhbWV3b3JrcyAoV2h5J2Qgd2UgZG8gdGhhdD8gQmVjYXVzZSB3
ZSB0aGluayBvdXIgcnVsZSBtYWtlcyB0aGUgY29tbW9uIGNhc2VzIGVhc2llciB0byBleHByZXNz
IGFuZCB1bmRlcnN0YW5kLikuCi0KLVNpbXBsZT8gTGV0J3Mgc2VlIGlmIHlvdSd2ZSByZWFsbHkg
dW5kZXJzdG9vZCBpdDogd2hhdCBkb2VzIHRoZSBmb2xsb3dpbmcgY29kZSBzYXk/Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLWZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0t
KSB7Ci0gIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgICAgLldpbGxPbmNlKFJldHVy
bigxMCppKSk7Ci19Ci1gYGAKLQotSWYgeW91IHRoaW5rIGl0IHNheXMgdGhhdCBgdHVydGxlLkdl
dFgoKWAgd2lsbCBiZSBjYWxsZWQgYG5gIHRpbWVzIGFuZCB3aWxsIHJldHVybiAxMCwgMjAsIDMw
LCAuLi4sIGNvbnNlY3V0aXZlbHksIHRoaW5rIHR3aWNlISBUaGUgcHJvYmxlbSBpcyB0aGF0LCBh
cyB3ZSBzYWlkLCBleHBlY3RhdGlvbnMgYXJlIHN0aWNreS4gU28sIHRoZSBzZWNvbmQgdGltZSBg
dHVydGxlLkdldFgoKWAgaXMgY2FsbGVkLCB0aGUgbGFzdCAobGF0ZXN0KSBgRVhQRUNUX0NBTEwo
KWAgc3RhdGVtZW50IHdpbGwgbWF0Y2gsIGFuZCB3aWxsIGltbWVkaWF0ZWx5IGxlYWQgdG8gYW4g
InVwcGVyIGJvdW5kIGV4Y2VlZGVkIiBlcnJvciAtIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBub3Qg
dmVyeSB1c2VmdWwhCi0KLU9uZSBjb3JyZWN0IHdheSBvZiBzYXlpbmcgdGhhdCBgdHVydGxlLkdl
dFgoKWAgd2lsbCByZXR1cm4gMTAsIDIwLCAzMCwgLi4uLCBpcyB0byBleHBsaWNpdGx5IHNheSB0
aGF0IHRoZSBleHBlY3RhdGlvbnMgYXJlIF9ub3RfIHN0aWNreS4gSW4gb3RoZXIgd29yZHMsIHRo
ZXkgc2hvdWxkIF9yZXRpcmVfIGFzIHNvb24gYXMgdGhleSBhcmUgc2F0dXJhdGVkOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi1mb3IgKGludCBpID0gbjsgaSA+IDA7IGkt
LSkgewotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJu
KDEwKmkpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotQW5kLCB0aGVy
ZSdzIGEgYmV0dGVyIHdheSB0byBkbyBpdDogaW4gdGhpcyBjYXNlLCB3ZSBleHBlY3QgdGhlIGNh
bGxzIHRvIG9jY3VyIGluIGEgc3BlY2lmaWMgb3JkZXIsIGFuZCB3ZSBsaW5lIHVwIHRoZSBhY3Rp
b25zIHRvIG1hdGNoIHRoZSBvcmRlci4gU2luY2UgdGhlIG9yZGVyIGlzIGltcG9ydGFudCBoZXJl
LCB3ZSBzaG91bGQgbWFrZSBpdCBleHBsaWNpdCB1c2luZyBhIHNlcXVlbmNlOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4u
Ci17Ci0gIEluU2VxdWVuY2UgczsKLQotICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsK
LSAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVy
bigxMCppKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgfQotfQotYGBgCi0K
LUJ5IHRoZSB3YXksIHRoZSBvdGhlciBzaXR1YXRpb24gd2hlcmUgYW4gZXhwZWN0YXRpb24gbWF5
IF9ub3RfIGJlIHN0aWNreSBpcyB3aGVuIGl0J3MgaW4gYSBzZXF1ZW5jZSAtIGFzIHNvb24gYXMg
YW5vdGhlciBleHBlY3RhdGlvbiB0aGF0IGNvbWVzIGFmdGVyIGl0IGluIHRoZSBzZXF1ZW5jZSBo
YXMgYmVlbiB1c2VkLCBpdCBhdXRvbWF0aWNhbGx5IHJldGlyZXMgKGFuZCB3aWxsIG5ldmVyIGJl
IHVzZWQgdG8gbWF0Y2ggYW55IGNhbGwpLgotCi0jIyBVbmludGVyZXN0aW5nIENhbGxzICMjCi1B
IG1vY2sgb2JqZWN0IG1heSBoYXZlIG1hbnkgbWV0aG9kcywgYW5kIG5vdCBhbGwgb2YgdGhlbSBh
cmUgdGhhdCBpbnRlcmVzdGluZy4gRm9yIGV4YW1wbGUsIGluIHNvbWUgdGVzdHMgd2UgbWF5IG5v
dCBjYXJlIGFib3V0IGhvdyBtYW55IHRpbWVzIGBHZXRYKClgIGFuZCBgR2V0WSgpYCBnZXQgY2Fs
bGVkLgotCi1JbiBHb29nbGUgTW9jaywgaWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBhIG1l
dGhvZCwganVzdCBkb24ndCBzYXkgYW55dGhpbmcgYWJvdXQgaXQuIElmIGEgY2FsbCB0byB0aGlz
IG1ldGhvZCBvY2N1cnMsIHlvdSdsbCBzZWUgYSB3YXJuaW5nIGluIHRoZSB0ZXN0IG91dHB1dCwg
YnV0IGl0IHdvbid0IGJlIGEgZmFpbHVyZS4KLQotIyBXaGF0IE5vdz8gIwotQ29uZ3JhdHVsYXRp
b25zISBZb3UndmUgbGVhcm5lZCBlbm91Z2ggYWJvdXQgR29vZ2xlIE1vY2sgdG8gc3RhcnQgdXNp
bmcgaXQuIE5vdywgeW91IG1pZ2h0IHdhbnQgdG8gam9pbiB0aGUgW2dvb2dsZW1vY2tdKGh0dHA6
Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKSBkaXNjdXNzaW9uIGdyb3VwIGFu
ZCBhY3R1YWxseSB3cml0ZSBzb21lIHRlc3RzIHVzaW5nIEdvb2dsZSBNb2NrIC0gaXQgd2lsbCBi
ZSBmdW4uIEhleSwgaXQgbWF5IGV2ZW4gYmUgYWRkaWN0aXZlIC0geW91J3ZlIGJlZW4gd2FybmVk
LgotCi1UaGVuLCBpZiB5b3UgZmVlbCBsaWtlIGluY3JlYXNpbmcgeW91ciBtb2NrIHF1b3RpZW50
LCB5b3Ugc2hvdWxkIG1vdmUgb24gdG8gdGhlIFtDb29rQm9va10oVjFfNV9Db29rQm9vay5tZCku
IFlvdSBjYW4gbGVhcm4gbWFueSBhZHZhbmNlZCBmZWF0dXJlcyBvZiBHb29nbGUgTW9jayB0aGVy
ZSAtLSBhbmQgYWR2YW5jZSB5b3VyIGxldmVsIG9mIGVuam95bWVudCBhbmQgdGVzdGluZyBibGlz
cy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9k
b2NzL3YxXzUvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92
MV81L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzU5MzI0M2MzYWY4NTljYTIxZDlkODQzZTZjNGUxOTFiMGU0ZWZmYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3Yx
XzUvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNjI0ICsw
LDAgQEAKLQotCi1QbGVhc2Ugc2VuZCB5b3VyIHF1ZXN0aW9ucyB0byB0aGUKLVtnb29nbGVtb2Nr
XShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykgZGlzY3Vzc2lvbgot
Z3JvdXAuIElmIHlvdSBuZWVkIGhlbHAgd2l0aCBjb21waWxlciBlcnJvcnMsIG1ha2Ugc3VyZSB5
b3UgaGF2ZQotdHJpZWQgW0dvb2dsZSBNb2NrIERvY3Rvcl0oI0hvd19hbV9JX3N1cHBvc2VkX3Rv
X21ha2Vfc2Vuc2Vfb2ZfdGhlc2VfaG9ycmlibGVfdGVtcGxhdGVfZXJyb3IubWQpIGZpcnN0Lgot
Ci0jIyBJIHdyb3RlIHNvbWUgbWF0Y2hlcnMuICBBZnRlciBJIHVwZ3JhZGVkIHRvIGEgbmV3IHZl
cnNpb24gb2YgR29vZ2xlIE1vY2ssIHRoZXkgbm8gbG9uZ2VyIGNvbXBpbGUuICBXaGF0J3MgZ29p
bmcgb24/ICMjCi0KLUFmdGVyIHZlcnNpb24gMS40LjAgb2YgR29vZ2xlIE1vY2sgd2FzIHJlbGVh
c2VkLCB3ZSBoYWQgYW4gaWRlYSBvbiBob3cKLXRvIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIG1h
dGNoZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGluZm9ybWF0aXZlCi1tZXNzYWdlcyBlZmZpY2llbnRs
eS4gIFdlIGV4cGVyaW1lbnRlZCB3aXRoIHRoaXMgaWRlYSBhbmQgbGlrZWQgd2hhdAotd2Ugc2F3
LiAgVGhlcmVmb3JlIHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGl0LgotCi1VbmZvcnR1bmF0ZWx5
LCB0aGlzIG1lYW5zIHRoYXQgaWYgeW91IGhhdmUgZGVmaW5lZCB5b3VyIG93biBtYXRjaGVycwot
YnkgaW1wbGVtZW50aW5nIGBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3Jw
aGljTWF0Y2hlcigpYCwKLXlvdXIgZGVmaW5pdGlvbnMgd2lsbCBubyBsb25nZXIgY29tcGlsZS4g
IE1hdGNoZXJzIGRlZmluZWQgdXNpbmcgdGhlCi1gTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3Mg
YXJlIG5vdCBhZmZlY3RlZC4KLQotU29ycnkgZm9yIHRoZSBoYXNzbGUgaWYgeW91ciBtYXRjaGVy
cyBhcmUgYWZmZWN0ZWQuICBXZSBiZWxpZXZlIGl0J3MKLWluIGV2ZXJ5b25lJ3MgbG9uZy10ZXJt
IGludGVyZXN0IHRvIG1ha2UgdGhpcyBjaGFuZ2Ugc29vbmVyIHRoYW4KLWxhdGVyLiAgRm9ydHVu
YXRlbHksIGl0J3MgdXN1YWxseSBub3QgaGFyZCB0byBtaWdyYXRlIGFuIGV4aXN0aW5nCi1tYXRj
aGVyIHRvIHRoZSBuZXcgQVBJLiAgSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0KLUlmIHlv
dSB3cm90ZSB5b3VyIG1hdGNoZXIgbGlrZSB0aGlzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZp
bml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2su
Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVy
ZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoK
LSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRG
b28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSBp
dCB0bzoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhl
IGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsK
LXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25k
ZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGlj
OgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVu
ZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICBy
ZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotKGkuZS4gcmVu
YW1lIGBNYXRjaGVzKClgIHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kIGdpdmUgaXQgYSBzZWNv
bmQKLWFyZ3VtZW50IG9mIHR5cGUgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYC4pCi0KLUlmIHlvdSB3
ZXJlIGFsc28gdXNpbmcgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvIGltcHJvdmUgdGhlIG1h
dGNoZXIKLW1lc3NhZ2U6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vz
bid0IHdvcmsgd2l0aCB0aGUgbGFzdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1
YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1
YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oTXlUeXBlIHZhbHVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25z
dCB7Ci0gICAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxw
Ci0gICAgLy8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3Qg
bWF0Y2gpLgotICAgICpvcyA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZv
bygpOwotICB9Ci0gIC4uLgotfTsKLWBgYAotCi15b3Ugc2hvdWxkIG1vdmUgdGhlIGxvZ2ljIG9m
IGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBpbnRvCi1gTWF0Y2hBbmRFeHBsYWluKClgLCB1c2lu
ZyB0aGUgYE1hdGNoUmVzdWx0TGlzdGVuZXJgIGFyZ3VtZW50IHdoZXJlCi10aGUgYDo6c3RkOjpv
c3RyZWFtYCB3YXMgdXNlZDoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdv
cmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hl
ckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgot
Y2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBl
PiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5
cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0
Y2hlcy4KLSAgICAqbGlzdGVuZXIgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5H
ZXRGb28oKTsKLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsK
LWBgYAotCi1JZiB5b3VyIG1hdGNoZXIgaXMgZGVmaW5lZCB1c2luZyBgTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcigpYDoKLWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qg
d29yayB3aXRoIHRoZSBsYXRlc3QKLS8vIEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpN
YWtlUG9seW1vcnBoaWNNYXRjaGVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVi
bGljOgotICAuLi4KLSAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIo
KSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3Jl
YXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLXlvdSBzaG91bGQgcmVuYW1lIHRoZSBgTWF0Y2hlcygp
YCBtZXRob2QgdG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQKLWFkZCBhIGBNYXRjaFJlc3VsdExp
c3RlbmVyKmAgYXJndW1lbnQgKHRoZSBzYW1lIGFzIHdoYXQgeW91IG5lZWQgdG8gZG8KLWZvciBt
YXRjaGVycyBkZWZpbmVkIGJ5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFjZWApOgotYGBg
Ci0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdv
b2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNp
bmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0
Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJl
dHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1v
cnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUlmIHlvdXIgcG9seW1v
cnBoaWMgbWF0Y2hlciB1c2VzIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBmb3IgYmV0dGVyCi1m
YWlsdXJlIG1lc3NhZ2VzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9l
c24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rp
bmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsK
LSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0g
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdl
dEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19Owotdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhj
b25zdCBNeUdyZWF0TWF0Y2hlciYgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
TXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxw
Ci0gIC8vIGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1h
dGNoKS4KLSAgKm9zIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7
Ci19Ci0uLi4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KLWBg
YAotCi15b3UnbGwgbmVlZCB0byBtb3ZlIHRoZSBsb2dpYyBpbnNpZGUgYEV4cGxhaW5NYXRjaFJl
c3VsdFRvKClgIHRvCi1gTWF0Y2hBbmRFeHBsYWluKClgOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBk
ZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcg
Ojp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRj
aFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgot
ICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEJh
ciBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEJhcigpOwotICAgIHJldHVybiB2YWx1ZS5HZXRC
YXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15
R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uLCB5b3UgY2Fu
IHJlYWQgdGhlc2UKLVt0d29dKFYxXzVfQ29va0Jvb2sjV3JpdGluZ19OZXdfTW9ub21vcnBoaWNf
TWF0Y2hlcnMubWQpCi1bcmVjaXBlc10oVjFfNV9Db29rQm9vayNXcml0aW5nX05ld19Qb2x5bW9y
cGhpY19NYXRjaGVycy5tZCkKLWZyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKLWFy
ZSB3ZWxjb21lIHRvIHBvc3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5j
b21gIGlmIHlvdQotbmVlZCBhbnkgaGVscC4KLQotIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywg
ZG8gSSBoYXZlIHRvIHVzZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJ
IGhhdmUgbXkgZmF2b3JpdGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dp
dGNoLiAjIwotCi1Hb29nbGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBU
ZXN0LiAgSG93ZXZlciwgaXQncyBlYXN5Ci10byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFu
eSB0ZXN0aW5nIGZyYW1ld29yayBvZiB5b3VyIGNob2ljZS4KLVtIZXJlXShWMV81X0ZvckR1bW1p
ZXMjVXNpbmdfR29vZ2xlX01vY2tfd2l0aF9BbnlfVGVzdGluZ19GcmFtZXdvcmsubWQpIGlzIGhv
dy4KLQotIyMgSG93IGFtIEkgc3VwcG9zZWQgdG8gbWFrZSBzZW5zZSBvZiB0aGVzZSBob3JyaWJs
ZSB0ZW1wbGF0ZSBlcnJvcnM/ICMjCi0KLUlmIHlvdSBhcmUgY29uZnVzZWQgYnkgdGhlIGNvbXBp
bGVyIGVycm9ycyBnY2MgdGhyZXcgYXQgeW91LAotdHJ5IGNvbnN1bHRpbmcgdGhlIF9Hb29nbGUg
TW9jayBEb2N0b3JfIHRvb2wgZmlyc3QuICBXaGF0IGl0IGRvZXMgaXMgdG8KLXNjYW4gc3RkaW4g
Zm9yIGdjYyBlcnJvciBtZXNzYWdlcywgYW5kIHNwaXQgb3V0IGRpYWdub3NlcyBvbiB0aGUKLXBy
b2JsZW1zICh3ZSBjYWxsIHRoZW0gZGlzZWFzZXMpIHlvdXIgY29kZSBoYXMuCi0KLVRvICJpbnN0
YWxsIiwgcnVuIGNvbW1hbmQ6Ci1gYGAKLWFsaWFzIGdtZD0nPHBhdGggdG8gZ29vZ2xlbW9jaz4v
c2NyaXB0cy9nbW9ja19kb2N0b3IucHknCi1gYGAKLQotVG8gdXNlIGl0LCBkbzoKLWBgYAotPHlv
dXItZmF2b3JpdGUtYnVpbGQtY29tbWFuZD4gPHlvdXItdGVzdD4gMj4mMSB8IGdtZAotYGBgCi0K
LUZvciBleGFtcGxlOgotYGBgCi1tYWtlIG15X3Rlc3QgMj4mMSB8IGdtZAotYGBgCi0KLU9yIHlv
dSBjYW4gcnVuIGBnbWRgIGFuZCBjb3B5LW4tcGFzdGUgZ2NjJ3MgZXJyb3IgbWVzc2FnZXMgdG8g
aXQuCi0KLSMjIENhbiBJIG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbj8gIyMKLQotWW91IGNhbm5v
dCBtb2NrIGEgdmFyaWFkaWMgZnVuY3Rpb24gKGkuZS4gYSBmdW5jdGlvbiB0YWtpbmcgZWxsaXBz
aXMKLShgLi4uYCkgYXJndW1lbnRzKSBkaXJlY3RseSBpbiBHb29nbGUgTW9jay4KLQotVGhlIHBy
b2JsZW0gaXMgdGhhdCBpbiBnZW5lcmFsLCB0aGVyZSBpcyBfbm8gd2F5XyBmb3IgYSBtb2NrIG9i
amVjdCB0bwota25vdyBob3cgbWFueSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdmFyaWFk
aWMgbWV0aG9kLCBhbmQgd2hhdAotdGhlIGFyZ3VtZW50cycgdHlwZXMgYXJlLiAgT25seSB0aGUg
X2F1dGhvciBvZiB0aGUgYmFzZSBjbGFzc18ga25vd3MKLXRoZSBwcm90b2NvbCwgYW5kIHdlIGNh
bm5vdCBsb29rIGludG8gaGlzIGhlYWQuCi0KLVRoZXJlZm9yZSwgdG8gbW9jayBzdWNoIGEgZnVu
Y3Rpb24sIHRoZSBfdXNlcl8gbXVzdCB0ZWFjaCB0aGUgbW9jawotb2JqZWN0IGhvdyB0byBmaWd1
cmUgb3V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aGVpciB0eXBlcy4gIE9uZQotd2F5
IHRvIGRvIGl0IGlzIHRvIHByb3ZpZGUgb3ZlcmxvYWRlZCB2ZXJzaW9ucyBvZiB0aGUgZnVuY3Rp
b24uCi0KLUVsbGlwc2lzIGFyZ3VtZW50cyBhcmUgaW5oZXJpdGVkIGZyb20gQyBhbmQgbm90IHJl
YWxseSBhIEMrKyBmZWF0dXJlLgotVGhleSBhcmUgdW5zYWZlIHRvIHVzZSBhbmQgZG9uJ3Qgd29y
ayB3aXRoIGFyZ3VtZW50cyB0aGF0IGhhdmUKLWNvbnN0cnVjdG9ycyBvciBkZXN0cnVjdG9ycy4g
IFRoZXJlZm9yZSB3ZSByZWNvbW1lbmQgdG8gYXZvaWQgdGhlbSBpbgotQysrIGFzIG11Y2ggYXMg
cG9zc2libGUuCi0KLSMjIE1TVkMgZ2l2ZXMgbWUgd2FybmluZyBDNDMwMSBvciBDNDM3MyB3aGVu
IEkgZGVmaW5lIGEgbW9jayBtZXRob2Qgd2l0aCBhIGNvbnN0IHBhcmFtZXRlci4gIFdoeT8gIyMK
LQotSWYgeW91IGNvbXBpbGUgdGhpcyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1IFNQ
MToKLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIoY29uc3QgaW50
IGkpID0gMDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1P
Q0tfTUVUSE9EMShCYXIsIHZvaWQoY29uc3QgaW50IGkpKTsKLX07Ci1gYGAKLVlvdSBtYXkgZ2V0
IHRoZSBmb2xsb3dpbmcgd2FybmluZzoKLWBgYAotd2FybmluZyBDNDMwMTogJ01vY2tGb286OkJh
cic6IG92ZXJyaWRpbmcgdmlydHVhbCBmdW5jdGlvbiBvbmx5IGRpZmZlcnMgZnJvbSAnRm9vOjpC
YXInIGJ5IGNvbnN0L3ZvbGF0aWxlIHF1YWxpZmllcgotYGBgCi0KLVRoaXMgaXMgYSBNU1ZDIGJ1
Zy4gIFRoZSBzYW1lIGNvZGUgY29tcGlsZXMgZmluZSB3aXRoIGdjYyAsZm9yCi1leGFtcGxlLiAg
SWYgeW91IHVzZSBWaXN1YWwgQysrIDIwMDggU1AxLCB5b3Ugd291bGQgZ2V0IHRoZSB3YXJuaW5n
OgotYGBgCi13YXJuaW5nIEM0MzczOiAnTW9ja0Zvbzo6QmFyJzogdmlydHVhbCBmdW5jdGlvbiBv
dmVycmlkZXMgJ0Zvbzo6QmFyJywgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyIGRp
ZCBub3Qgb3ZlcnJpZGUgd2hlbiBwYXJhbWV0ZXJzIG9ubHkgZGlmZmVyZWQgYnkgY29uc3Qvdm9s
YXRpbGUgcXVhbGlmaWVycwotYGBgCi0KLUluIEMrKywgaWYgeW91IF9kZWNsYXJlXyBhIGZ1bmN0
aW9uIHdpdGggYSBgY29uc3RgIHBhcmFtZXRlciwgdGhlCi1gY29uc3RgIG1vZGlmaWVyIGlzIF9p
Z25vcmVkXy4gIFRoZXJlZm9yZSwgdGhlIGBGb29gIGJhc2UgY2xhc3MgYWJvdmUKLWlzIGVxdWl2
YWxlbnQgdG86Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgQmFyKGlu
dCBpKSA9IDA7ICAvLyBpbnQgb3IgY29uc3QgaW50PyAgTWFrZXMgbm8gZGlmZmVyZW5jZS4KLX07
Ci1gYGAKLQotSW4gZmFjdCwgeW91IGNhbiBfZGVjbGFyZV8gQmFyKCkgd2l0aCBhbiBgaW50YCBw
YXJhbWV0ZXIsIGFuZCBfZGVmaW5lXwotaXQgd2l0aCBhIGBjb25zdCBpbnRgIHBhcmFtZXRlci4g
IFRoZSBjb21waWxlciB3aWxsIHN0aWxsIG1hdGNoIHRoZW0KLXVwLgotCi1TaW5jZSBtYWtpbmcg
YSBwYXJhbWV0ZXIgYGNvbnN0YCBpcyBtZWFuaW5nbGVzcyBpbiB0aGUgbWV0aG9kCi1fZGVjbGFy
YXRpb25fLCB3ZSByZWNvbW1lbmQgdG8gcmVtb3ZlIGl0IGluIGJvdGggYEZvb2AgYW5kIGBNb2Nr
Rm9vYC4KLVRoYXQgc2hvdWxkIHdvcmthcm91bmQgdGhlIFZDIGJ1Zy4KLQotTm90ZSB0aGF0IHdl
IGFyZSB0YWxraW5nIGFib3V0IHRoZSBfdG9wLWxldmVsXyBgY29uc3RgIG1vZGlmaWVyIGhlcmUu
Ci1JZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIHBhc3NlZCBieSBwb2ludGVyIG9yIHJlZmVy
ZW5jZSwgZGVjbGFyaW5nCi10aGUgX3BvaW50ZWVfIG9yIF9yZWZlcmVlXyBhcyBgY29uc3RgIGlz
IHN0aWxsIG1lYW5pbmdmdWwuICBGb3IKLWV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIGRlY2xh
cmF0aW9ucyBhcmUgX25vdF8gZXF1aXZhbGVudDoKLWBgYAotdm9pZCBCYXIoaW50KiBwKTsgICAg
ICAgIC8vIE5laXRoZXIgcCBub3IgKnAgaXMgY29uc3QuCi12b2lkIEJhcihjb25zdCBpbnQqIHAp
OyAgLy8gcCBpcyBub3QgY29uc3QsIGJ1dCAqcCBpcy4KLWBgYAotCi0jIyBJIGhhdmUgYSBodWdl
IG1vY2sgY2xhc3MsIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBydW5zIG91dCBvZiBtZW1vcnkg
d2hlbiBjb21waWxpbmcgaXQuICBXaGF0IGNhbiBJIGRvPyAjIwotCi1XZSd2ZSBub3RpY2VkIHRo
YXQgd2hlbiB0aGUgYC9jbHJgIGNvbXBpbGVyIGZsYWcgaXMgdXNlZCwgVmlzdWFsIEMrKwotdXNl
cyA1fjYgdGltZXMgYXMgbXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcgYSBtb2NrIGNsYXNzLiAg
V2Ugc3VnZ2VzdAotdG8gYXZvaWQgYC9jbHJgIHdoZW4gY29tcGlsaW5nIG5hdGl2ZSBDKysgbW9j
a3MuCi0KLSMjIEkgY2FuJ3QgZmlndXJlIG91dCB3aHkgR29vZ2xlIE1vY2sgdGhpbmtzIG15IGV4
cGVjdGF0aW9ucyBhcmUgbm90IHNhdGlzZmllZC4gIFdoYXQgc2hvdWxkIEkgZG8/ICMjCi0KLVlv
dSBtaWdodCB3YW50IHRvIHJ1biB5b3VyIHRlc3Qgd2l0aAotYC0tZ21vY2tfdmVyYm9zZT1pbmZv
YC4gIFRoaXMgZmxhZyBsZXRzIEdvb2dsZSBNb2NrIHByaW50IGEgdHJhY2UKLW9mIGV2ZXJ5IG1v
Y2sgZnVuY3Rpb24gY2FsbCBpdCByZWNlaXZlcy4gIEJ5IHN0dWR5aW5nIHRoZSB0cmFjZSwKLXlv
dSdsbCBnYWluIGluc2lnaHRzIG9uIHdoeSB0aGUgZXhwZWN0YXRpb25zIHlvdSBzZXQgYXJlIG5v
dCBtZXQuCi0KLSMjIEhvdyBjYW4gSSBhc3NlcnQgdGhhdCBhIGZ1bmN0aW9uIGlzIE5FVkVSIGNh
bGxlZD8gIyMKLQotYGBgCi1FWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAuVGltZXMoMCk7
Ci1gYGAKLQotIyMgSSBoYXZlIGEgZmFpbGVkIHRlc3Qgd2hlcmUgR29vZ2xlIE1vY2sgdGVsbHMg
bWUgVFdJQ0UgdGhhdCBhIHBhcnRpY3VsYXIgZXhwZWN0YXRpb24gaXMgbm90IHNhdGlzZmllZC4g
IElzbid0IHRoaXMgcmVkdW5kYW50PyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIGRldGVjdHMgYSBm
YWlsdXJlLCBpdCBwcmludHMgcmVsZXZhbnQgaW5mb3JtYXRpb24KLSh0aGUgbW9jayBmdW5jdGlv
biBhcmd1bWVudHMsIHRoZSBzdGF0ZSBvZiByZWxldmFudCBleHBlY3RhdGlvbnMsIGFuZAotZXRj
KSB0byBoZWxwIHRoZSB1c2VyIGRlYnVnLiAgSWYgYW5vdGhlciBmYWlsdXJlIGlzIGRldGVjdGVk
LCBHb29nbGUKLU1vY2sgd2lsbCBkbyB0aGUgc2FtZSwgaW5jbHVkaW5nIHByaW50aW5nIHRoZSBz
dGF0ZSBvZiByZWxldmFudAotZXhwZWN0YXRpb25zLgotCi1Tb21ldGltZXMgYW4gZXhwZWN0YXRp
b24ncyBzdGF0ZSBkaWRuJ3QgY2hhbmdlIGJldHdlZW4gdHdvIGZhaWx1cmVzLAotYW5kIHlvdSds
bCBzZWUgdGhlIHNhbWUgZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRlIHR3aWNlLiAgVGhleSBhcmUK
LWhvd2V2ZXIgX25vdF8gcmVkdW5kYW50LCBhcyB0aGV5IHJlZmVyIHRvIF9kaWZmZXJlbnQgcG9p
bnRzIGluIHRpbWVfLgotVGhlIGZhY3QgdGhleSBhcmUgdGhlIHNhbWUgX2lzXyBpbnRlcmVzdGlu
ZyBpbmZvcm1hdGlvbi4KLQotIyMgSSBnZXQgYSBoZWFwIGNoZWNrIGZhaWx1cmUgd2hlbiB1c2lu
ZyBhIG1vY2sgb2JqZWN0LCBidXQgdXNpbmcgYSByZWFsIG9iamVjdCBpcyBmaW5lLiAgV2hhdCBj
YW4gYmUgd3Jvbmc/ICMjCi0KLURvZXMgdGhlIGNsYXNzIChob3BlZnVsbHkgYSBwdXJlIGludGVy
ZmFjZSkgeW91IGFyZSBtb2NraW5nIGhhdmUgYQotdmlydHVhbCBkZXN0cnVjdG9yPwotCi1XaGVu
ZXZlciB5b3UgZGVyaXZlIGZyb20gYSBiYXNlIGNsYXNzLCBtYWtlIHN1cmUgaXRzIGRlc3RydWN0
b3IgaXMKLXZpcnR1YWwuICBPdGhlcndpc2UgQmFkIFRoaW5ncyB3aWxsIGhhcHBlbi4gIENvbnNp
ZGVyIHRoZSBmb2xsb3dpbmcKLWNvZGU6Ci0KLWBgYAotY2xhc3MgQmFzZSB7Ci0gcHVibGljOgot
ICAvLyBOb3QgdmlydHVhbCwgYnV0IHNob3VsZCBiZS4KLSAgfkJhc2UoKSB7IC4uLiB9Ci0gIC4u
LgotfTsKLQotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6Ci0gIC4uLgot
IHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLS4uLgotICBCYXNlKiBwID0g
bmV3IERlcml2ZWQ7Ci0gIC4uLgotICBkZWxldGUgcDsgIC8vIFN1cnByaXNlISB+QmFzZSgpIHdp
bGwgYmUgY2FsbGVkLCBidXQgfkRlcml2ZWQoKSB3aWxsIG5vdAotICAgICAgICAgICAgIC8vIC0g
dmFsdWVfIGlzIGxlYWtlZC4KLWBgYAotCi1CeSBjaGFuZ2luZyBgfkJhc2UoKWAgdG8gdmlydHVh
bCwgYH5EZXJpdmVkKClgIHdpbGwgYmUgY29ycmVjdGx5Ci1jYWxsZWQgd2hlbiBgZGVsZXRlIHBg
IGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGhlYXAgY2hlY2tlcgotd2lsbCBiZSBoYXBweS4KLQotIyMg
VGhlICJuZXdlciBleHBlY3RhdGlvbnMgb3ZlcnJpZGUgb2xkZXIgb25lcyIgcnVsZSBtYWtlcyB3
cml0aW5nIGV4cGVjdGF0aW9ucyBhd2t3YXJkLiAgV2h5IGRvZXMgR29vZ2xlIE1vY2sgZG8gdGhh
dD8gIyMKLQotV2hlbiBwZW9wbGUgY29tcGxhaW4gYWJvdXQgdGhpcywgb2Z0ZW4gdGhleSBhcmUg
cmVmZXJyaW5nIHRvIGNvZGUgbGlrZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNh
bGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhl
IHNlY29uZCB0aW1lLiAgSG93ZXZlciwgSSBoYXZlIHRvIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMg
aW4gdGhlCi0vLyByZXZlcnNlIG9yZGVyLiAgVGhpcyBzdWNrcyBiaWcgdGltZSEhIQotRVhQRUNU
X0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5XaWxsT25jZShS
ZXR1cm4oMSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1UaGUgcHJvYmxl
bSBpcyB0aGF0IHRoZXkgZGlkbid0IHBpY2sgdGhlICoqYmVzdCoqIHdheSB0byBleHByZXNzIHRo
ZSB0ZXN0J3MKLWludGVudC4KLQotQnkgZGVmYXVsdCwgZXhwZWN0YXRpb25zIGRvbid0IGhhdmUg
dG8gYmUgbWF0Y2hlZCBpbiBfYW55XyBwYXJ0aWN1bGFyCi1vcmRlci4gIElmIHlvdSB3YW50IHRo
ZW0gdG8gbWF0Y2ggaW4gYSBjZXJ0YWluIG9yZGVyLCB5b3UgbmVlZCB0byBiZQotZXhwbGljaXQu
ICBUaGlzIGlzIEdvb2dsZSBNb2NrJ3MgKGFuZCBqTW9jaydzKSBmdW5kYW1lbnRhbCBwaGlsb3Nv
cGh5OiBpdCdzCi1lYXN5IHRvIGFjY2lkZW50YWxseSBvdmVyLXNwZWNpZnkgeW91ciB0ZXN0cywg
YW5kIHdlIHdhbnQgdG8gbWFrZSBpdAotaGFyZGVyIHRvIGRvIHNvLgotCi1UaGVyZSBhcmUgdHdv
IGJldHRlciB3YXlzIHRvIHdyaXRlIHRoZSB0ZXN0IHNwZWMuICBZb3UgY291bGQgZWl0aGVyCi1w
dXQgdGhlIGV4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hv
dWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4K
LS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgVXNpbmcgYSBzZXF1ZW5jZSwgd2UgY2FuIHdyaXRlIHRo
ZSBleHBlY3RhdGlvbnMKLS8vIGluIHRoZWlyIG5hdHVyYWwgb3JkZXIuCi17Ci0gIEluU2VxdWVu
Y2UgczsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4o
MSkpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJh
cigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7Ci19Ci1gYGAKLQotb3IgeW91IGNhbiBwdXQgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMg
aW4gdGhlIHNhbWUgZXhwZWN0YXRpb246Ci0KLWBgYAotLy8gZm9vLkJhcigpIHNob3VsZCBiZSBj
YWxsZWQgdHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCi0vLyAyIHRo
ZSBzZWNvbmQgdGltZS4KLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldpbGxPbmNlKFJl
dHVybigxKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7Ci1gYGAKLQotQmFjayB0byB0aGUgb3JpZ2luYWwgcXVlc3Rpb25zOiB3aHkgZG9lcyBH
b29nbGUgTW9jayBzZWFyY2ggdGhlCi1leHBlY3RhdGlvbnMgKGFuZCBgT05fQ0FMTGBzKSBmcm9t
IGJhY2sgdG8gZnJvbnQ/ICBCZWNhdXNlIHRoaXMKLWFsbG93cyBhIHVzZXIgdG8gc2V0IHVwIGEg
bW9jaydzIGJlaGF2aW9yIGZvciB0aGUgY29tbW9uIGNhc2UgZWFybHkKLShlLmcuIGluIHRoZSBt
b2NrJ3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSkKLWFu
ZCBjdXN0b21pemUgaXQgd2l0aCBtb3JlIHNwZWNpZmljIHJ1bGVzIGxhdGVyLiAgSWYgR29vZ2xl
IE1vY2sKLXNlYXJjaGVzIGZyb20gZnJvbnQgdG8gYmFjaywgdGhpcyB2ZXJ5IHVzZWZ1bCBwYXR0
ZXJuIHdvbid0IGJlCi1wb3NzaWJsZS4KLQotIyMgR29vZ2xlIE1vY2sgcHJpbnRzIGEgd2Fybmlu
ZyB3aGVuIGEgZnVuY3Rpb24gd2l0aG91dCBFWFBFQ1RcX0NBTEwgaXMgY2FsbGVkLCBldmVuIGlm
IEkgaGF2ZSBzZXQgaXRzIGJlaGF2aW9yIHVzaW5nIE9OXF9DQUxMLiAgV291bGQgaXQgYmUgcmVh
c29uYWJsZSBub3QgdG8gc2hvdyB0aGUgd2FybmluZyBpbiB0aGlzIGNhc2U/ICMjCi0KLVdoZW4g
Y2hvb3NpbmcgYmV0d2VlbiBiZWluZyBuZWF0IGFuZCBiZWluZyBzYWZlLCB3ZSBsZWFuIHRvd2Fy
ZCB0aGUKLWxhdHRlci4gIFNvIHRoZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0aGluayBpdCdzIGJldHRl
ciB0byBzaG93IHRoZQotd2FybmluZy4KLQotT2Z0ZW4gcGVvcGxlIHdyaXRlIGBPTl9DQUxMYHMg
aW4gdGhlIG1vY2sgb2JqZWN0J3MKLWNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCwgYXMgdGhlIGRl
ZmF1bHQgYmVoYXZpb3IgcmFyZWx5IGNoYW5nZXMgZnJvbQotdGVzdCB0byB0ZXN0LiAgVGhlbiBp
biB0aGUgdGVzdCBib2R5IHRoZXkgc2V0IHRoZSBleHBlY3RhdGlvbnMsIHdoaWNoCi1hcmUgb2Z0
ZW4gZGlmZmVyZW50IGZvciBlYWNoIHRlc3QuICBIYXZpbmcgYW4gYE9OX0NBTExgIGluIHRoZSBz
ZXQtdXAKLXBhcnQgb2YgYSB0ZXN0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBjYWxscyBhcmUgZXhw
ZWN0ZWQuICBJZiB0aGVyZSdzCi1ubyBgRVhQRUNUX0NBTExgIGFuZCB0aGUgbWV0aG9kIGlzIGNh
bGxlZCwgaXQncyBwb3NzaWJseSBhbiBlcnJvci4gIElmCi13ZSBxdWlldGx5IGxldCB0aGUgY2Fs
bCBnbyB0aHJvdWdoIHdpdGhvdXQgbm90aWZ5aW5nIHRoZSB1c2VyLCBidWdzCi1tYXkgY3JlZXAg
aW4gdW5ub3RpY2VkLgotCi1JZiwgaG93ZXZlciwgeW91IGFyZSBzdXJlIHRoYXQgdGhlIGNhbGxz
IGFyZSBPSywgeW91IGNhbiB3cml0ZQotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQot
ICAgIC5XaWxsUmVwZWF0ZWRseSguLi4pOwotYGBgCi0KLWluc3RlYWQgb2YKLQotYGBgCi1PTl9D
QUxMKGZvbywgQmFyKF8pKQotICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7Ci1gYGAKLQotVGhpcyB0
ZWxscyBHb29nbGUgTW9jayB0aGF0IHlvdSBkbyBleHBlY3QgdGhlIGNhbGxzIGFuZCBubyB3YXJu
aW5nIHNob3VsZCBiZQotcHJpbnRlZC4KLQotQWxzbywgeW91IGNhbiBjb250cm9sIHRoZSB2ZXJi
b3NpdHkgdXNpbmcgdGhlIGAtLWdtb2NrX3ZlcmJvc2VgIGZsYWcuCi1JZiB5b3UgZmluZCB0aGUg
b3V0cHV0IHRvbyBub2lzeSB3aGVuIGRlYnVnZ2luZywganVzdCBjaG9vc2UgYSBsZXNzCi12ZXJi
b3NlIGxldmVsLgotCi0jIyBIb3cgY2FuIEkgZGVsZXRlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJn
dW1lbnQgaW4gYW4gYWN0aW9uPyAjIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRv
IHBlcmZvcm0gc29tZSBhY3Rpb24gdGhhdCdzIG5vdAotc3VwcG9ydGVkIGJ5IEdvb2dsZSBNb2Nr
IGRpcmVjdGx5LCByZW1lbWJlciB0aGF0IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duCi1hY3Rpb25z
IHVzaW5nCi1bTWFrZUFjdGlvbigpXShWMV81X0Nvb2tCb29rI1dyaXRpbmdfTmV3X0FjdGlvbnMu
bWQpIG9yCi1bTWFrZVBvbHltb3JwaGljQWN0aW9uKCldKFYxXzVfQ29va0Jvb2sjV3JpdGluZ19O
ZXdfUG9seW1vcnBoaWNfQWN0aW9ucy5tZCksCi1vciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5j
dGlvbiBhbmQgaW52b2tlIGl0IHVzaW5nCi1bSW52b2tlKCldKFYxXzVfQ29va0Jvb2sjVXNpbmdf
RnVuY3Rpb25zX01ldGhvZHNfRnVuY3RvcnMubWQpLgotCi0jIyBNT0NLXF9NRVRIT0RuKCkncyBz
ZWNvbmQgYXJndW1lbnQgbG9va3MgZnVubnkuICBXaHkgZG9uJ3QgeW91IHVzZSB0aGUgTU9DS1xf
TUVUSE9EbihNZXRob2QsIHJldHVyblxfdHlwZSwgYXJnXF8xLCAuLi4sIGFyZ1xfbikgc3ludGF4
PyAjIwotCi1XaGF0PyEgIEkgdGhpbmsgaXQncyBiZWF1dGlmdWwuIDotKQotCi1XaGlsZSB3aGlj
aCBzeW50YXggbG9va3MgbW9yZSBuYXR1cmFsIGlzIGEgc3ViamVjdGl2ZSBtYXR0ZXIgdG8gc29t
ZQotZXh0ZW50LCBHb29nbGUgTW9jaydzIHN5bnRheCB3YXMgY2hvc2VuIGZvciBzZXZlcmFsIHBy
YWN0aWNhbCBhZHZhbnRhZ2VzIGl0Ci1oYXMuCi0KLVRyeSB0byBtb2NrIGEgZnVuY3Rpb24gdGhh
dCB0YWtlcyBhIG1hcCBhcyBhbiBhcmd1bWVudDoKLWBgYAotdmlydHVhbCBpbnQgR2V0U2l6ZShj
b25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLVVzaW5nIHRoZSBwcm9wb3Nl
ZCBzeW50YXgsIGl0IHdvdWxkIGJlOgotYGBgCi1NT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50LCBj
b25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLUd1ZXNzIHdoYXQ/ICBZb3Un
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgYXMgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0Ci1gY29u
c3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtYCBhcmUgKip0d28qKiwgbm90IG9uZSwgYXJndW1l
bnRzLiBUbyB3b3JrCi1hcm91bmQgdGhpcyB5b3UgY2FuIHVzZSBgdHlwZWRlZmAgdG8gZ2l2ZSB0
aGUgbWFwIHR5cGUgYSBuYW1lLCBidXQKLXRoYXQgZ2V0cyBpbiB0aGUgd2F5IG9mIHlvdXIgd29y
ay4gIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IGF2b2lkcyB0aGlzCi1wcm9ibGVtIGFzIHRoZSBmdW5j
dGlvbidzIGFyZ3VtZW50IHR5cGVzIGFyZSBwcm90ZWN0ZWQgaW5zaWRlIGEgcGFpcgotb2YgcGFy
ZW50aGVzZXM6Ci1gYGAKLS8vIFRoaXMgY29tcGlsZXMgZmluZS4KLU1PQ0tfTUVUSE9EMShHZXRT
aXplLCBpbnQoY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtKSk7Ci1gYGAKLQotWW91IHN0
aWxsIG5lZWQgYSBgdHlwZWRlZmAgaWYgdGhlIHJldHVybiB0eXBlIGNvbnRhaW5zIGFuIHVucHJv
dGVjdGVkCi1jb21tYSwgYnV0IHRoYXQncyBtdWNoIHJhcmVyLgotCi1PdGhlciBhZHZhbnRhZ2Vz
IGluY2x1ZGU6Ci0gIDEuIGBNT0NLX01FVEhPRDEoRm9vLCBpbnQsIGJvb2wpYCBjYW4gbGVhdmUg
YSByZWFkZXIgd29uZGVyIHdoZXRoZXIgdGhlIG1ldGhvZCByZXR1cm5zIGBpbnRgIG9yIGBib29s
YCwgd2hpbGUgdGhlcmUgd29uJ3QgYmUgc3VjaCBjb25mdXNpb24gdXNpbmcgR29vZ2xlIE1vY2sn
cyBzeW50YXguCi0gIDEuIFRoZSB3YXkgR29vZ2xlIE1vY2sgZGVzY3JpYmVzIGEgZnVuY3Rpb24g
dHlwZSBpcyBub3RoaW5nIG5ldywgYWx0aG91Z2ggbWFueSBwZW9wbGUgbWF5IG5vdCBiZSBmYW1p
bGlhciB3aXRoIGl0LiAgVGhlIHNhbWUgc3ludGF4IHdhcyB1c2VkIGluIEMsIGFuZCB0aGUgYGZ1
bmN0aW9uYCBsaWJyYXJ5IGluIGB0cjFgIHVzZXMgdGhpcyBzeW50YXggZXh0ZW5zaXZlbHkuICBT
aW5jZSBgdHIxYCB3aWxsIGJlY29tZSBhIHBhcnQgb2YgdGhlIG5ldyB2ZXJzaW9uIG9mIFNUTCwg
d2UgZmVlbCB2ZXJ5IGNvbWZvcnRhYmxlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBpdC4KLSAgMS4g
VGhlIGZ1bmN0aW9uIHR5cGUgc3ludGF4IGlzIGFsc28gdXNlZCBpbiBvdGhlciBwYXJ0cyBvZiBH
b29nbGUgTW9jaydzIEFQSSAoZS5nLiB0aGUgYWN0aW9uIGludGVyZmFjZSkgaW4gb3JkZXIgdG8g
bWFrZSB0aGUgaW1wbGVtZW50YXRpb24gdHJhY3RhYmxlLiBBIHVzZXIgbmVlZHMgdG8gbGVhcm4g
aXQgYW55d2F5IGluIG9yZGVyIHRvIHV0aWxpemUgR29vZ2xlIE1vY2sncyBtb3JlIGFkdmFuY2Vk
IGZlYXR1cmVzLiAgV2UnZCBhcyB3ZWxsIHN0aWNrIHRvIHRoZSBzYW1lIHN5bnRheCBpbiBgTU9D
S19NRVRIT0QqYCEKLQotIyMgTXkgY29kZSBjYWxscyBhIHN0YXRpYy9nbG9iYWwgZnVuY3Rpb24u
ICBDYW4gSSBtb2NrIGl0PyAjIwotCi1Zb3UgY2FuLCBidXQgeW91IG5lZWQgdG8gbWFrZSBzb21l
IGNoYW5nZXMuCi0KLUluIGdlbmVyYWwsIGlmIHlvdSBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8g
bW9jayBhIHN0YXRpYyBmdW5jdGlvbiwKLWl0J3MgYSBzaWduIHRoYXQgeW91ciBtb2R1bGVzIGFy
ZSB0b28gdGlnaHRseSBjb3VwbGVkIChhbmQgbGVzcwotZmxleGlibGUsIGxlc3MgcmV1c2FibGUs
IGxlc3MgdGVzdGFibGUsIGV0YykuICBZb3UgYXJlIHByb2JhYmx5IGJldHRlcgotb2ZmIGRlZmlu
aW5nIGEgc21hbGwgaW50ZXJmYWNlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiB0aHJvdWdoIHRoYXQK
LWludGVyZmFjZSwgd2hpY2ggdGhlbiBjYW4gYmUgZWFzaWx5IG1vY2tlZC4gIEl0J3MgYSBiaXQg
b2Ygd29yawotaW5pdGlhbGx5LCBidXQgdXN1YWxseSBwYXlzIGZvciBpdHNlbGYgcXVpY2tseS4K
LQotVGhpcyBHb29nbGUgVGVzdGluZyBCbG9nCi1bcG9zdF0oaHR0cDovL2dvb2dsZXRlc3Rpbmcu
YmxvZ3Nwb3QuY29tLzIwMDgvMDYvZGVmZWF0LXN0YXRpYy1jbGluZy5odG1sKQotc2F5cyBpdCBl
eGNlbGxlbnRseS4gIENoZWNrIGl0IG91dC4KLQotIyMgTXkgbW9jayBvYmplY3QgbmVlZHMgdG8g
ZG8gY29tcGxleCBzdHVmZi4gIEl0J3MgYSBsb3Qgb2YgcGFpbiB0byBzcGVjaWZ5IHRoZSBhY3Rp
b25zLiAgR29vZ2xlIE1vY2sgc3Vja3MhICMjCi0KLUkga25vdyBpdCdzIG5vdCBhIHF1ZXN0aW9u
LCBidXQgeW91IGdldCBhbiBhbnN3ZXIgZm9yIGZyZWUgYW55IHdheS4gOi0pCi0KLVdpdGggR29v
Z2xlIE1vY2ssIHlvdSBjYW4gY3JlYXRlIG1vY2tzIGluIEMrKyBlYXNpbHkuICBBbmQgcGVvcGxl
IG1pZ2h0IGJlCi10ZW1wdGVkIHRvIHVzZSB0aGVtIGV2ZXJ5d2hlcmUuIFNvbWV0aW1lcyB0aGV5
IHdvcmsgZ3JlYXQsIGFuZAotc29tZXRpbWVzIHlvdSBtYXkgZmluZCB0aGVtLCB3ZWxsLCBhIHBh
aW4gdG8gdXNlLiBTbywgd2hhdCdzIHdyb25nIGluCi10aGUgbGF0dGVyIGNhc2U/Ci0KLVdoZW4g
eW91IHdyaXRlIGEgdGVzdCB3aXRob3V0IHVzaW5nIG1vY2tzLCB5b3UgZXhlcmNpc2UgdGhlIGNv
ZGUgYW5kCi1hc3NlcnQgdGhhdCBpdCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlIG9yIHRoYXQg
dGhlIHN5c3RlbSBpcyBpbiBhbgotZXhwZWN0ZWQgc3RhdGUuICBUaGlzIGlzIHNvbWV0aW1lcyBj
YWxsZWQgInN0YXRlLWJhc2VkIHRlc3RpbmciLgotCi1Nb2NrcyBhcmUgZ3JlYXQgZm9yIHdoYXQg
c29tZSBjYWxsICJpbnRlcmFjdGlvbi1iYXNlZCIgdGVzdGluZzoKLWluc3RlYWQgb2YgY2hlY2tp
bmcgdGhlIHN5c3RlbSBzdGF0ZSBhdCB0aGUgdmVyeSBlbmQsIG1vY2sgb2JqZWN0cwotdmVyaWZ5
IHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aGUgcmlnaHQgd2F5IGFuZCByZXBvcnQgYW4gZXJyb3Ig
YXMgc29vbgotYXMgaXQgYXJpc2VzLCBnaXZpbmcgeW91IGEgaGFuZGxlIG9uIHRoZSBwcmVjaXNl
IGNvbnRleHQgaW4gd2hpY2ggdGhlCi1lcnJvciB3YXMgdHJpZ2dlcmVkLiAgVGhpcyBpcyBvZnRl
biBtb3JlIGVmZmVjdGl2ZSBhbmQgZWNvbm9taWNhbCB0bwotZG8gdGhhbiBzdGF0ZS1iYXNlZCB0
ZXN0aW5nLgotCi1JZiB5b3UgYXJlIGRvaW5nIHN0YXRlLWJhc2VkIHRlc3RpbmcgYW5kIHVzaW5n
IGEgdGVzdCBkb3VibGUganVzdCB0bwotc2ltdWxhdGUgdGhlIHJlYWwgb2JqZWN0LCB5b3UgYXJl
IHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgYSBmYWtlLgotVXNpbmcgYSBtb2NrIGluIHRoaXMg
Y2FzZSBjYXVzZXMgcGFpbiwgYXMgaXQncyBub3QgYSBzdHJvbmcgcG9pbnQgZm9yCi1tb2NrcyB0
byBwZXJmb3JtIGNvbXBsZXggYWN0aW9ucy4gIElmIHlvdSBleHBlcmllbmNlIHRoaXMgYW5kIHRo
aW5rCi10aGF0IG1vY2tzIHN1Y2ssIHlvdSBhcmUganVzdCBub3QgdXNpbmcgdGhlIHJpZ2h0IHRv
b2wgZm9yIHlvdXIKLXByb2JsZW0uIE9yLCB5b3UgbWlnaHQgYmUgdHJ5aW5nIHRvIHNvbHZlIHRo
ZSB3cm9uZyBwcm9ibGVtLiA6LSkKLQotIyMgSSBnb3QgYSB3YXJuaW5nICJVbmludGVyZXN0aW5n
IGZ1bmN0aW9uIGNhbGwgZW5jb3VudGVyZWQgLSBkZWZhdWx0IGFjdGlvbiB0YWtlbi4uIiAgU2hv
dWxkIEkgcGFuaWM/ICMjCi0KLUJ5IGFsbCBtZWFucywgTk8hICBJdCdzIGp1c3QgYW4gRllJLgot
Ci1XaGF0IGl0IG1lYW5zIGlzIHRoYXQgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uLCB5b3UgaGF2
ZW4ndCBzZXQgYW55Ci1leHBlY3RhdGlvbnMgb24gaXQgKGJ5IEdvb2dsZSBNb2NrJ3MgcnVsZSB0
aGlzIG1lYW5zIHRoYXQgeW91IGFyZSBub3QKLWludGVyZXN0ZWQgaW4gY2FsbHMgdG8gdGhpcyBm
dW5jdGlvbiBhbmQgdGhlcmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQKLWFueSBudW1iZXIgb2YgdGlt
ZXMpLCBhbmQgaXQgaXMgY2FsbGVkLiAgVGhhdCdzIE9LIC0geW91IGRpZG4ndCBzYXkKLWl0J3Mg
bm90IE9LIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIQotCi1XaGF0IGlmIHlvdSBhY3R1YWxseSBtZWFu
dCB0byBkaXNhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0Ci1mb3Jnb3QgdG8g
d3JpdGUgYEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpLlRpbWVzKDApYD8gIFdoaWxlCi1vbmUgY2Fu
IGFyZ3VlIHRoYXQgaXQncyB0aGUgdXNlcidzIGZhdWx0LCBHb29nbGUgTW9jayB0cmllcyB0byBi
ZSBuaWNlIGFuZAotcHJpbnRzIHlvdSBhIG5vdGUuCi0KLVNvLCB3aGVuIHlvdSBzZWUgdGhlIG1l
c3NhZ2UgYW5kIGJlbGlldmUgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55Ci11bmludGVyZXN0
aW5nIGNhbGxzLCB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHdoYXQncyBnb2luZyBvbi4gIFRvIG1h
a2UKLXlvdXIgbGlmZSBlYXNpZXIsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUgZnVuY3Rpb24gbmFt
ZSBhbmQgYXJndW1lbnRzCi13aGVuIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBlbmNvdW50ZXJl
ZC4KLQotIyMgSSB3YW50IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24uICBTaG91bGQgSSB1c2Ug
SW52b2tlKCkgb3IgaW1wbGVtZW50IHRoZSBhY3Rpb24gaW50ZXJmYWNlPyAjIwotCi1FaXRoZXIg
d2F5IGlzIGZpbmUgLSB5b3Ugd2FudCB0byBjaG9vc2UgdGhlIG9uZSB0aGF0J3MgbW9yZSBjb252
ZW5pZW50Ci1mb3IgeW91ciBjaXJjdW1zdGFuY2UuCi0KLVVzdWFsbHksIGlmIHlvdXIgYWN0aW9u
IGlzIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSwgZGVmaW5pbmcgaXQKLXVzaW5nIGBJ
bnZva2UoKWAgc2hvdWxkIGJlIGVhc2llcjsgaWYgeW91ciBhY3Rpb24gY2FuIGJlIHVzZWQgaW4K
LWZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4gaWYgeW91IGFyZSBkZWZpbmluZwot
YFJldHVybih2YWx1ZSlgKSwgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCBpcwotZWFzaWVzdC4g
IFNvbWV0aW1lcyB5b3Ugd2FudCBwcmVjaXNlIGNvbnRyb2wgb24gd2hhdCB0eXBlcyBvZgotZnVu
Y3Rpb25zIHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQgaW4sIGFuZCBpbXBsZW1lbnRpbmcKLWBBY3Rp
b25JbnRlcmZhY2VgIGlzIHRoZSB3YXkgdG8gZ28gaGVyZS4gU2VlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZgotYFJldHVybigpYCBpbiBgaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25zLmhgIGZvciBh
biBleGFtcGxlLgotCi0jIyBJJ20gdXNpbmcgdGhlIHNldC1hcmd1bWVudC1wb2ludGVlIGFjdGlv
biwgYW5kIHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImNvbmZsaWN0aW5nIHJldHVybiB0
eXBlIHNwZWNpZmllZCIuICBXaGF0IGRvZXMgaXQgbWVhbj8gIyMKLQotWW91IGdvdCB0aGlzIGVy
cm9yIGFzIEdvb2dsZSBNb2NrIGhhcyBubyBpZGVhIHdoYXQgdmFsdWUgaXQgc2hvdWxkIHJldHVy
bgotd2hlbiB0aGUgbW9jayBtZXRob2QgaXMgY2FsbGVkLiAgYFNldEFyZ3VtZW50UG9pbnRlZSgp
YCBzYXlzIHdoYXQgdGhlCi1zaWRlIGVmZmVjdCBpcywgYnV0IGRvZXNuJ3Qgc2F5IHdoYXQgdGhl
IHJldHVybiB2YWx1ZSBzaG91bGQgYmUuICBZb3UKLW5lZWQgYERvQWxsKClgIHRvIGNoYWluIGEg
YFNldEFyZ3VtZW50UG9pbnRlZSgpYCB3aXRoIGEgYFJldHVybigpYC4KLQotU2VlIHRoaXMgW3Jl
Y2lwZV0oVjFfNV9Db29rQm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cy5tZCkgZm9yIG1vcmUgZGV0
YWlscyBhbmQgYW4gZXhhbXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBG
QVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24g
aW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6
Ci0KLSAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZW1vY2svdy9saXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hp
dmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrL3RvcGljcyksCi0g
IDEuIGFzayBpdCBvbiBbZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xl
bW9ja0Bnb29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJl
dmVudCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0o
aHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJlZm9yZSB5b3UgY2Fu
IHBvc3QuKS4KLQotUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKLVtp
c3N1ZSB0cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMv
bGlzdCkgaXMgX25vdF8KLWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBt
b25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4K
LQotV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVj
aCBvZiB0aGUKLWZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5v
dCBoZWxwIHlvdSBpZiB0aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVl
c3Rpb24pOgotCi0gICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91
IGNoZWNrIG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29v
Z2xlIE1vY2sgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRo
YXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAq
IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3Vy
IGNvbXBpbGVyLAotICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUg
dG8geW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1
YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBo
YXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvQ2hlYXRTaGVldC5tZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2RvY3MvdjFfNi9DaGVhdFNoZWV0Lm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5MWRlMWQyMTBlNGQ1NTJhYzI4NzIzNTk0MTM0MDdiNzc2NmVhZTViLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFf
Ni9DaGVhdFNoZWV0Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotCi0jIERl
ZmluaW5nIGEgTW9jayBDbGFzcyAjCi0KLSMjIE1vY2tpbmcgYSBOb3JtYWwgQ2xhc3MgIyMKLQot
R2l2ZW4KLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgfkZvbygpOwotICB2aXJ0
dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHN0cmluZyBEZXNjcmliZShj
b25zdCBjaGFyKiBuYW1lKSA9IDA7Ci0gIHZpcnR1YWwgc3RyaW5nIERlc2NyaWJlKGludCB0eXBl
KSA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBQcm9jZXNzKEJhciBlbGVtLCBpbnQgY291bnQpID0gMDsK
LX07Ci1gYGAKLShub3RlIHRoYXQgYH5Gb28oKWAgKiptdXN0KiogYmUgdmlydHVhbCkgd2UgY2Fu
IGRlZmluZSBpdHMgbW9jayBhcwotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotY2xh
c3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U2l6ZSwg
aW50KCkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmluZyhjb25zdCBjaGFyKiBuYW1l
KSk7Ci0gIE1PQ0tfTUVUSE9EMShEZXNjcmliZSwgc3RyaW5nKGludCB0eXBlKSk7Ci0gIE1PQ0tf
TUVUSE9EMihQcm9jZXNzLCBib29sKEJhciBlbGVtLCBpbnQgY291bnQpKTsKLX07Ci1gYGAKLQot
VG8gY3JlYXRlIGEgIm5pY2UiIG1vY2sgb2JqZWN0IHdoaWNoIGlnbm9yZXMgYWxsIHVuaW50ZXJl
c3RpbmcgY2FsbHMsCi1vciBhICJzdHJpY3QiIG1vY2sgb2JqZWN0LCB3aGljaCB0cmVhdHMgdGhl
bSBhcyBmYWlsdXJlczoKLWBgYAotTmljZU1vY2s8TW9ja0Zvbz4gbmljZV9mb287ICAgICAvLyBU
aGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28uCi1TdHJpY3RNb2NrPE1vY2tGb28+IHN0
cmljdF9mb287IC8vIFRoZSB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0Zvby4KLWBgYAotCi0j
IyBNb2NraW5nIGEgQ2xhc3MgVGVtcGxhdGUgIyMKLQotVG8gbW9jawotYGBgCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbT4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgot
ICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgpOwotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29u
c3QgPSAwOwotICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19OwotYGBg
Ci0obm90ZSB0aGF0IGB+U3RhY2tJbnRlcmZhY2UoKWAgKiptdXN0KiogYmUgdmlydHVhbCkganVz
dCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotYGBgCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVt
PiB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50
KCkpOwotICBNT0NLX01FVEhPRDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKLX07Ci1g
YGAKLQotIyMgU3BlY2lmeWluZyBDYWxsaW5nIENvbnZlbnRpb25zIGZvciBNb2NrIEZ1bmN0aW9u
cyAjIwotCi1JZiB5b3VyIG1vY2sgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIGRlZmF1bHQgY2Fs
bGluZyBjb252ZW50aW9uLCB5b3UKLWNhbiBzcGVjaWZ5IGl0IGJ5IGFwcGVuZGluZyBgX1dJVEhf
Q0FMTFRZUEVgIHRvIGFueSBvZiB0aGUgbWFjcm9zCi1kZXNjcmliZWQgaW4gdGhlIHByZXZpb3Vz
IHR3byBzZWN0aW9ucyBhbmQgc3VwcGx5aW5nIHRoZSBjYWxsaW5nCi1jb252ZW50aW9uIGFzIHRo
ZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWFjcm8uIEZvciBleGFtcGxlLAotYGBgCi0gIE1PQ0tf
TUVUSE9EXzFfV0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgRm9vLCBib29sKGludCBu
KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMl9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBF
LCBCYXIsIGludChkb3VibGUgeCwgZG91YmxlIHkpKTsKLWBgYAotd2hlcmUgYFNURE1FVEhPRENB
TExUWVBFYCBpcyBkZWZpbmVkIGJ5IGA8b2JqYmFzZS5oPmAgb24gV2luZG93cy4KLQotIyBVc2lu
ZyBNb2NrcyBpbiBUZXN0cyAjCi0KLVRoZSB0eXBpY2FsIGZsb3cgaXM6Ci0gIDEuIEltcG9ydCB0
aGUgR29vZ2xlIE1vY2sgbmFtZXMgeW91IG5lZWQgdG8gdXNlLiBBbGwgR29vZ2xlIE1vY2sgbmFt
ZXMgYXJlIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlIHVubGVzcyB0aGV5IGFyZSBtYWNyb3Mg
b3Igb3RoZXJ3aXNlIG5vdGVkLgotICAxLiBDcmVhdGUgdGhlIG1vY2sgb2JqZWN0cy4KLSAgMS4g
T3B0aW9uYWxseSwgc2V0IHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0cy4K
LSAgMS4gU2V0IHlvdXIgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdHMgKEhvdyB3aWxs
IHRoZXkgYmUgY2FsbGVkPyBXaGF0IHdpbCB0aGV5IGRvPykuCi0gIDEuIEV4ZXJjaXNlIGNvZGUg
dGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHM7IGlmIG5lY2Vzc2FyeSwgY2hlY2sgdGhlIHJlc3Vs
dCB1c2luZyBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
LykgYXNzZXJ0aW9ucy4KLSAgMS4gV2hlbiBhIG1vY2sgb2JqZWN0cyBpcyBkZXN0cnVjdGVkLCBH
b29nbGUgTW9jayBhdXRvbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBv
biBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgotCi1IZXJlIGlzIGFuIGV4YW1wbGU6Ci1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6UmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMQot
Ci1URVNUKEJhclRlc3QsIERvZXNUaGlzKSB7Ci0gIE1vY2tGb28gZm9vOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICMyCi0KLSAgT05fQ0FMTChmb28sIEdldFNpemUoKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzMKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVy
bigxKSk7Ci0gIC8vIC4uLiBvdGhlciBkZWZhdWx0IGFjdGlvbnMgLi4uCi0KLSAgRVhQRUNUX0NB
TEwoZm9vLCBEZXNjcmliZSg1KSkgICAgICAgICAgICAgICAgICAgLy8gIzQKLSAgICAgIC5UaW1l
cygzKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigiQ2F0ZWdvcnkgNSIpKTsKLSAgLy8g
Li4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4KLQotICBFWFBFQ1RfRVEoImdvb2QiLCBNeVByb2R1
Y3Rpb25GdW5jdGlvbigmZm9vKSk7ICAvLyAjNQotfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAjNgotYGBgCi0KLSMgU2V0dGluZyBEZWZhdWx0IEFj
dGlvbnMgIwotCi1Hb29nbGUgTW9jayBoYXMgYSAqKmJ1aWx0LWluIGRlZmF1bHQgYWN0aW9uKiog
Zm9yIGFueSBmdW5jdGlvbiB0aGF0Ci1yZXR1cm5zIGB2b2lkYCwgYGJvb2xgLCBhIG51bWVyaWMg
dmFsdWUsIG9yIGEgcG9pbnRlci4KLQotVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlvbiBm
b3IgZnVuY3Rpb25zIHdpdGggcmV0dXJuIHR5cGUgYFRgIGdsb2JhbGx5OgotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKLQotRGVmYXVsdFZhbHVlPFQ+OjpTZXQodmFsdWUpOyAg
Ly8gU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSB0byBiZSByZXR1cm5lZC4KLS8vIC4uLiB1c2UgdGhl
IG1vY2tzIC4uLgotRGVmYXVsdFZhbHVlPFQ+OjpDbGVhcigpOyAgICAgLy8gUmVzZXRzIHRoZSBk
ZWZhdWx0IHZhbHVlLgotYGBgCi0KLVRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9y
IGEgcGFydGljdWxhciBtZXRob2QsIHVzZSBgT05fQ0FMTCgpYDoKLWBgYAotT05fQ0FMTChtb2Nr
X29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRj
aGVyKSAgPwotICAgIC5XaWxsQnlEZWZhdWx0KGFjdGlvbik7Ci1gYGAKLQotIyBTZXR0aW5nIEV4
cGVjdGF0aW9ucyAjCi0KLWBFWFBFQ1RfQ0FMTCgpYCBzZXRzICoqZXhwZWN0YXRpb25zKiogb24g
YSBtb2NrIG1ldGhvZCAoSG93IHdpbGwgaXQgYmUKLWNhbGxlZD8gV2hhdCB3aWxsIGl0IGRvPyk6
Ci1gYGAKLUVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQotICAgIC5X
aXRoKG11bHRpX2FyZ3VtZW50X21hdGNoZXIpICA/Ci0gICAgLlRpbWVzKGNhcmRpbmFsaXR5KSAg
ICAgICAgICAgID8KLSAgICAuSW5TZXF1ZW5jZShzZXF1ZW5jZXMpICAgICAgICAgKgotICAgIC5B
ZnRlcihleHBlY3RhdGlvbnMpICAgICAgICAgICAqCi0gICAgLldpbGxPbmNlKGFjdGlvbikgICAg
ICAgICAgICAgICoKLSAgICAuV2lsbFJlcGVhdGVkbHkoYWN0aW9uKSAgICAgICAgPwotICAgIC5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7ICAgICAgICA/Ci1gYGAKLQotSWYgYFRpbWVzKClgIGlzIG9t
aXR0ZWQsIHRoZSBjYXJkaW5hbGl0eSBpcyBhc3N1bWVkIHRvIGJlOgotCi0gICogYFRpbWVzKDEp
YCB3aGVuIHRoZXJlIGlzIG5laXRoZXIgYFdpbGxPbmNlKClgIG5vciBgV2lsbFJlcGVhdGVkbHko
KWA7Ci0gICogYFRpbWVzKG4pYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYnV0IG5v
IGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDE7IG9yCi0gICogYFRpbWVzKEF0TGVh
c3QobikpYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYW5kIGEgYFdpbGxSZXBlYXRl
ZGx5KClgLCB3aGVyZSBgbmAgPj0gMC4KLQotQSBtZXRob2Qgd2l0aCBubyBgRVhQRUNUX0NBTEwo
KWAgaXMgZnJlZSB0byBiZSBpbnZva2VkIF9hbnkgbnVtYmVyIG9mIHRpbWVzXywgYW5kIHRoZSBk
ZWZhdWx0IGFjdGlvbiB3aWxsIGJlIHRha2VuIGVhY2ggdGltZS4KLQotIyBNYXRjaGVycyAjCi0K
LUEgKiptYXRjaGVyKiogbWF0Y2hlcyBhIF9zaW5nbGVfIGFyZ3VtZW50LiAgWW91IGNhbiB1c2Ug
aXQgaW5zaWRlCi1gT05fQ0FMTCgpYCBvciBgRVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBpdCB0byB2
YWxpZGF0ZSBhIHZhbHVlCi1kaXJlY3RseToKLQotfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNo
ZXIpYCB8IEFzc2VydHMgdGhhdCBgdmFsdWVgIG1hdGNoZXMgYG1hdGNoZXJgLiB8Ci18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUgc2FtZSBh
cyBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2VuZXJhdGVz
IGEgKipmYXRhbCoqIGZhaWx1cmUuIHwKLQotQnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJlIGBhcmd1
bWVudGAgaXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50KSBhcmUKLWRpdmlkZWQgaW50byBzZXZlcmFs
IGNhdGVnb3JpZXM6Ci0KLSMjIFdpbGRjYXJkICMjCi18YF9gfGBhcmd1bWVudGAgY2FuIGJlIGFu
eSB2YWx1ZSBvZiB0aGUgY29ycmVjdCB0eXBlLnwKLXw6LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBPHR5cGU+KClgIG9yIGBBbjx0eXBlPigp
YHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdHlwZSBgdHlwZWAuICAgICB8Ci0KLSMj
IEdlbmVyaWMgQ29tcGFyaXNvbiAjIwotCi18YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxgYXJndW1l
bnQgPT0gdmFsdWVgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LXwKLXxgR2UodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA+PSB2YWx1ZWB8Ci18YEd0KHZh
bHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPiB2YWx1ZWAgfAotfGBMZSh2YWx1ZSlgICAgICAg
ICAgICB8YGFyZ3VtZW50IDw9IHZhbHVlYHwKLXxgTHQodmFsdWUpYCAgICAgICAgICAgfGBhcmd1
bWVudCA8IHZhbHVlYCB8Ci18YE5lKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgIT0gdmFs
dWVgfAotfGBJc051bGwoKWAgICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxMYCBwb2lu
dGVyIChyYXcgb3Igc21hcnQpLnwKLXxgTm90TnVsbCgpYCAgICAgICAgICAgfGBhcmd1bWVudGAg
aXMgYSBub24tbnVsbCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKLXxgUmVmKHZhcmlhYmxlKWAg
ICAgICAgfGBhcmd1bWVudGAgaXMgYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC58Ci18YFR5cGVk
RXE8dHlwZT4odmFsdWUpYHxgYXJndW1lbnRgIGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMgZXF1YWwg
dG8gYHZhbHVlYC4gWW91IG1heSBuZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgYEVxKHZhbHVl
KWAgd2hlbiB0aGUgbW9jayBmdW5jdGlvbiBpcyBvdmVybG9hZGVkLnwKLQotRXhjZXB0IGBSZWYo
KWAsIHRoZXNlIG1hdGNoZXJzIG1ha2UgYSBfY29weV8gb2YgYHZhbHVlYCBpbiBjYXNlIGl0J3MK
LW1vZGlmaWVkIG9yIGRlc3RydWN0ZWQgbGF0ZXIuIElmIHRoZSBjb21waWxlciBjb21wbGFpbnMg
dGhhdCBgdmFsdWVgCi1kb2Vzbid0IGhhdmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3RvciwgdHJ5
IHdyYXAgaXQgaW4gYEJ5UmVmKClgLAotZS5nLiBgRXEoQnlSZWYobm9uX2NvcHlhYmxlX3ZhbHVl
KSlgLiBJZiB5b3UgZG8gdGhhdCwgbWFrZSBzdXJlCi1gbm9uX2NvcHlhYmxlX3ZhbHVlYCBpcyBu
b3QgY2hhbmdlZCBhZnRlcndhcmRzLCBvciB0aGUgbWVhbmluZyBvZiB5b3VyCi1tYXRjaGVyIHdp
bGwgYmUgY2hhbmdlZC4KLQotIyMgRmxvYXRpbmctUG9pbnQgTWF0Y2hlcnMgIyMKLQotfGBEb3Vi
bGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0
ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwufAot
fDotLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAotfGBGbG9hdEVxKGFfZmxvYXQpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVl
IGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFfZmxvYXRgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1
bmVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAg
aXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRy
ZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVGbG9hdEVxKGFfZmxv
YXQpYHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRv
IGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKLQotVGhlc2UgbWF0
Y2hlcnMgdXNlIFVMUC1iYXNlZCBjb21wYXJpc29uICh0aGUgc2FtZSBhcyB1c2VkIGluCi1bR29v
Z2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykpLiBUaGV5Ci1h
dXRvbWF0aWNhbGx5IHBpY2sgYSByZWFzb25hYmxlIGVycm9yIGJvdW5kIGJhc2VkIG9uIHRoZSBh
YnNvbHV0ZQotdmFsdWUgb2YgdGhlIGV4cGVjdGVkIHZhbHVlLiAgYERvdWJsZUVxKClgIGFuZCBg
RmxvYXRFcSgpYCBjb25mb3JtIHRvCi10aGUgSUVFRSBzdGFuZGFyZCwgd2hpY2ggcmVxdWlyZXMg
Y29tcGFyaW5nIHR3byBOYU5zIGZvciBlcXVhbGl0eSB0bwotcmV0dXJuIGZhbHNlLiBUaGUgYE5h
blNlbnNpdGl2ZSpgIHZlcnNpb24gaW5zdGVhZCB0cmVhdHMgdHdvIE5hTnMgYXMKLWVxdWFsLCB3
aGljaCBpcyBvZnRlbiB3aGF0IGEgdXNlciB3YW50cy4KLQotIyMgU3RyaW5nIE1hdGNoZXJzICMj
Ci0KLVRoZSBgYXJndW1lbnRgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBhIEMrKyBzdHJp
bmcgb2JqZWN0OgotCi18YENvbnRhaW5zUmVnZXgoc3RyaW5nKWB8YGFyZ3VtZW50YCBtYXRjaGVz
IHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24ufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRW5k
c1dpdGgoc3VmZml4KWAgICAgIHxgYXJndW1lbnRgIGVuZHMgd2l0aCBzdHJpbmcgYHN1ZmZpeGAu
ICAgICAgICAgICB8Ci18YEhhc1N1YnN0cihzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBjb250YWlu
cyBgc3RyaW5nYCBhcyBhIHN1Yi1zdHJpbmcuICAgfAotfGBNYXRjaGVzUmVnZXgoc3RyaW5nKWAg
fGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIHdpdGggdGhl
IG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGVuZGluZyBhdCB0aGUg
bGFzdCBjaGFyYWN0ZXIufAotfGBTdGFydHNXaXRoKHByZWZpeClgICAgfGBhcmd1bWVudGAgc3Rh
cnRzIHdpdGggc3RyaW5nIGBwcmVmaXhgLiAgICAgICAgIHwKLXxgU3RyQ2FzZUVxKHN0cmluZylg
ICAgIHxgYXJndW1lbnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmluZyBjYXNlLiB8Ci18
YFN0ckNhc2VOZShzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmlu
Z2AsIGlnbm9yaW5nIGNhc2UufAotfGBTdHJFcShzdHJpbmcpYCAgICAgICAgfGBhcmd1bWVudGAg
aXMgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgICAgIHwKLXxgU3RyTmUoc3RyaW5nKWAg
ICAgICAgIHxgYXJndW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYC4gICAgICAgICAgICB8
Ci0KLWBDb250YWluc1JlZ2V4KClgIGFuZCBgTWF0Y2hlc1JlZ2V4KClgIHVzZSB0aGUgcmVndWxh
ciBleHByZXNzaW9uCi1zeW50YXggZGVmaW5lZAotW2hlcmVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L3dpa2kvVjFfNl9BZHZhbmNlZEd1aWRlI1JlZ3VsYXJfRXhwcmVzc2lv
bl9TeW50YXgpLgotYFN0ckNhc2VFcSgpYCwgYFN0ckNhc2VOZSgpYCwgYFN0ckVxKClgLCBhbmQg
YFN0ck5lKClgIHdvcmsgZm9yIHdpZGUKLXN0cmluZ3MgYXMgd2VsbC4KLQotIyMgQ29udGFpbmVy
IE1hdGNoZXJzICMjCi0KLU1vc3QgU1RMLXN0eWxlIGNvbnRhaW5lcnMgc3VwcG9ydCBgPT1gLCBz
byB5b3UgY2FuIHVzZQotYEVxKGV4cGVjdGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0
ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCi1jb250YWluZXIgZXhhY3RseS4gICBJZiB5b3Ugd2Fu
dCB0byB3cml0ZSB0aGUgZWxlbWVudHMgaW4tbGluZSwKLW1hdGNoIHRoZW0gbW9yZSBmbGV4aWJs
eSwgb3IgZ2V0IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMsIHlvdSBjYW4gdXNlOgotCi18IGBD
b250YWlucyhlKWAgfCBgYXJndW1lbnRgIGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVz
IGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gfAotfDotLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYEVhY2go
ZSlgICAgICB8IGBhcmd1bWVudGAgaXMgYSBjb250YWluZXIgd2hlcmUgX2V2ZXJ5XyBlbGVtZW50
IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiB8
Ci18IGBFbGVtZW50c0FyZShlMCwgZTEsIC4uLiwgZW4pYCB8IGBhcmd1bWVudGAgaGFzIGBuICsg
MWAgZWxlbWVudHMsIHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgbWF0Y2hlcyBgZWlgLCB3aGljaCBj
YW4gYmUgYSB2YWx1ZSBvciBhIG1hdGNoZXIuIDAgdG8gMTAgYXJndW1lbnRzIGFyZSBhbGxvd2Vk
LiB8Ci18IGBFbGVtZW50c0FyZUFycmF5KGFycmF5KWAgb3IgYEVsZW1lbnRzQXJlQXJyYXkoYXJy
YXksIGNvdW50KWAgfCBUaGUgc2FtZSBhcyBgRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhl
IGV4cGVjdGVkIGVsZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhIEMtc3R5bGUgYXJy
YXkuIHwKLXwgYENvbnRhaW5lckVxKGNvbnRhaW5lcilgIHwgVGhlIHNhbWUgYXMgYEVxKGNvbnRh
aW5lcilgIGV4Y2VwdCB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgYWxzbyBpbmNsdWRlcyB3aGlj
aCBlbGVtZW50cyBhcmUgaW4gb25lIGNvbnRhaW5lciBidXQgbm90IHRoZSBvdGhlci4gfAotfCBg
UG9pbnR3aXNlKG0sIGNvbnRhaW5lcilgIHwgYGFyZ3VtZW50YCBjb250YWlucyB0aGUgc2FtZSBu
dW1iZXIgb2YgZWxlbWVudHMgYXMgaW4gYGNvbnRhaW5lcmAsIGFuZCBmb3IgYWxsIGksICh0aGUg
aS10aCBlbGVtZW50IGluIGBhcmd1bWVudGAsIHRoZSBpLXRoIGVsZW1lbnQgaW4gYGNvbnRhaW5l
cmApIG1hdGNoIGBtYCwgd2hpY2ggaXMgYSBtYXRjaGVyIG9uIDItdHVwbGVzLiBFLmcuIGBQb2lu
dHdpc2UoTGUoKSwgdXBwZXJfYm91bmRzKWAgdmVyaWZpZXMgdGhhdCBlYWNoIGVsZW1lbnQgaW4g
YGFyZ3VtZW50YCBkb2Vzbid0IGV4Y2VlZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIGB1
cHBlcl9ib3VuZHNgLiB8Ci0KLVRoZXNlIG1hdGNoZXJzIGNhbiBhbHNvIG1hdGNoOgotCi0gIDEu
IGEgbmF0aXZlIGFycmF5IHBhc3NlZCBieSByZWZlcmVuY2UgKGUuZy4gaW4gYEZvbyhjb25zdCBp
bnQgKCZhKVs1XSlgKSwgYW5kCi0gIDEuIGFuIGFycmF5IHBhc3NlZCBhcyBhIHBvaW50ZXIgYW5k
IGEgY291bnQgKGUuZy4gaW4gYEJhcihjb25zdCBUKiBidWZmZXIsIGludCBsZW4pYCAtLSBzZWUg
W011bHRpLWFyZ3VtZW50IE1hdGNoZXJzXSgjTXVsdGlhcmd1bWVudF9NYXRjaGVycy5tZCkpLgot
Ci13aGVyZSB0aGUgYXJyYXkgbWF5IGJlIG11bHRpLWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVt
ZW50cyBjYW4gYmUgYXJyYXlzKS4KLQotIyMgTWVtYmVyIE1hdGNoZXJzICMjCi0KLXxgRmllbGQo
JmNsYXNzOjpmaWVsZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9yIGBhcmd1bWVudC0+ZmllbGRg
IHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAs
IHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Ci18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBLZXko
ZSlgICAgICAgICAgICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBtYXRjaGVzIGBlYCwgd2hpY2gg
Y2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5nLiBgQ29udGFpbnMoS2V5KExl
KDUpKSlgIGNhbiB2ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5zIGEga2V5IGA8PSA1YC58Ci18
YFBhaXIobTEsIG0yKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGFuIGBzdGQ6OnBhaXJgIHdo
b3NlIGBmaXJzdGAgZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vjb25kYCBmaWVsZCBtYXRjaGVz
IGBtMmAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
fGBQcm9wZXJ0eSgmY2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3VtZW50LnByb3BlcnR5KClgIChv
ciBgYXJndW1lbnQtPnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50
ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9m
IHR5cGUgX2NsYXNzXy58Ci0KLSMjIE1hdGNoaW5nIHRoZSBSZXN1bHQgb2YgYSBGdW5jdGlvbiBv
ciBGdW5jdG9yICMjCi0KLXxgUmVzdWx0T2YoZiwgbSlgfGBmKGFyZ3VtZW50KWAgbWF0Y2hlcyBt
YXRjaGVyIGBtYCwgd2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Ci18Oi0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBQb2ludGVyIE1hdGNoZXJzICMjCi0KLXxg
UG9pbnRlZShtKWB8YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBw
b2ludGVyKSBwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgbWF0Y2hlciBgbWAufAotfDot
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLSMj
IE11bHRpYXJndW1lbnQgTWF0Y2hlcnMgIyMKLQotVGVjaG5pY2FsbHksIGFsbCBtYXRjaGVycyBt
YXRjaCBhIF9zaW5nbGVfIHZhbHVlLiBBICJtdWx0aS1hcmd1bWVudCIKLW1hdGNoZXIgaXMganVz
dCBvbmUgdGhhdCBtYXRjaGVzIGEgX3R1cGxlXy4gVGhlIGZvbGxvd2luZyBtYXRjaGVycyBjYW4K
LWJlIHVzZWQgdG8gbWF0Y2ggYSB0dXBsZSBgKHgsIHkpYDoKLQotfGBFcSgpYHxgeCA9PSB5YHwK
LXw6LS0tLS18Oi0tLS0tLS18Ci18YEdlKClgfGB4ID49IHlgfAotfGBHdCgpYHxgeCA+IHlgIHwK
LXxgTGUoKWB8YHggPD0geWB8Ci18YEx0KClgfGB4IDwgeWAgfAotfGBOZSgpYHxgeCAhPSB5YHwK
LQotWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGljayBhIHN1YnNldCBv
ZiB0aGUgYXJndW1lbnRzCi0ob3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUg
bWF0Y2hpbmc6Ci0KLXxgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAuIFVzZWZ1bCBhcyBz
eW50YWN0aWMgc3VnYXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58Ci18Oi0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSB0dXBsZSBvZiB0aGUg
YGtgIHNlbGVjdGVkICh1c2luZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50cyBtYXRjaGVzIGBt
YCwgZS5nLiBgQXJnczwxLCAyPihFcSgpKWAufAotCi0jIyBDb21wb3NpdGUgTWF0Y2hlcnMgIyMK
LQotWW91IGNhbiBtYWtlIGEgbWF0Y2hlciBmcm9tIG9uZSBvciBtb3JlIG90aGVyIG1hdGNoZXJz
OgotCi18YEFsbE9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhbGwgb2Yg
dGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEFu
eU9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2Yg
dGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18YE5vdChtKWAgICAgICAgICAgICAgICAgfGBh
cmd1bWVudGAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICB8Ci0KLSMj
IEFkYXB0ZXJzIGZvciBNYXRjaGVycyAjIwotCi18YE1hdGNoZXJDYXN0PFQ+KG0pYHxjYXN0cyBt
YXRjaGVyIGBtYCB0byB0eXBlIGBNYXRjaGVyPFQ+YC58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YFNhZmVNYXRjaGVyQ2Fz
dDxUPihtKWB8IFtzYWZlbHkgY2FzdHNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVt
b2NrL3dpa2kvVjFfNl9Db29rQm9vayNDYXN0aW5nX01hdGNoZXJzKSBtYXRjaGVyIGBtYCB0byB0
eXBlIGBNYXRjaGVyPFQ+YC4gfAotfGBUcnVseShwcmVkaWNhdGUpYCB8YHByZWRpY2F0ZShhcmd1
bWVudClgIHJldHVybnMgc29tZXRoaW5nIGNvbnNpZGVyZWQgYnkgQysrIHRvIGJlIHRydWUsIHdo
ZXJlIGBwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Ci0KLSMjIE1hdGNoZXJz
IGFzIFByZWRpY2F0ZXMgIyMKLQotfGBNYXRjaGVzKG0pKHZhbHVlKWB8ZXZhbHVhdGVzIHRvIGB0
cnVlYCBpZiBgdmFsdWVgIG1hdGNoZXMgYG1gLiBZb3UgY2FuIHVzZSBgTWF0Y2hlcyhtKWAgYWxv
bmUgYXMgYSB1bmFyeSBmdW5jdG9yLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEV4cGxhaW5NYXRjaFJlc3VsdChtLCB2YWx1
ZSwgcmVzdWx0X2xpc3RlbmVyKWB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFsdWVgIG1hdGNo
ZXMgYG1gLCBleHBsYWluaW5nIHRoZSByZXN1bHQgdG8gYHJlc3VsdF9saXN0ZW5lcmAuICAgICAg
IHwKLXxgVmFsdWUodmFsdWUsIG0pYCAgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBt
YXRjaGVzIGBtYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Ci0KLSMjIERlZmluaW5nIE1hdGNoZXJzICMjCi0KLXwgYE1BVENIRVIoSXNFdmVuLCAi
IikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElzRXZl
bigpYCB0byBtYXRjaCBhbiBldmVuIG51bWJlci4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBNQVRDSEVSX1AoSXNEaXZpc2libGVCeSwg
biwgIiIpIHsgKnJlc3VsdF9saXN0ZW5lciA8PCAid2hlcmUgdGhlIHJlbWFpbmRlciBpcyAiIDw8
IChhcmcgJSBuKTsgcmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYWNoZXIg
YElzRGl2aXNpYmxlQnkobilgIHRvIG1hdGNoIGEgbnVtYmVyIGRpdmlzaWJsZSBieSBgbmAuIHwK
LXwgYE1BVENIRVJfUDIoSXNCZXR3ZWVuLCBhLCBiLCBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJp
c24ndCIgOiAiaXMiKSArICIgYmV0d2VlbiAiICsgUHJpbnRUb1N0cmluZyhhKSArICIgYW5kICIg
KyBQcmludFRvU3RyaW5nKGIpKSB7IHJldHVybiBhIDw9IGFyZyAmJiBhcmcgPD0gYjsgfWAgfCBE
ZWZpbmVzIGEgbWF0Y2hlciBgSXNCZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBhIHZhbHVlIGluIHRo
ZSByYW5nZSBbYGFgLCBgYmBdLiB8Ci0KLSoqTm90ZXM6KioKLQotICAxLiBUaGUgYE1BVENIRVIq
YCBtYWNyb3MgY2Fubm90IGJlIHVzZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3MuCi0gIDEu
IFRoZSBtYXRjaGVyIGJvZHkgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUuIGl0IGNh
bm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3QgZGVwZW5k
IG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBt
YXRjaGVyIHBhcmFtZXRlcnMpLgotICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRUb1N0cmluZyh4KWAg
dG8gY29udmVydCBhIHZhbHVlIGB4YCBvZiBhbnkgdHlwZSB0byBhIHN0cmluZy4KLQotIyMgTWF0
Y2hlcnMgYXMgVGVzdCBBc3NlcnRpb25zICMjCi0KLXxgQVNTRVJUX1RIQVQoZXhwcmVzc2lvbiwg
bSlgfEdlbmVyYXRlcyBhIFtmYXRhbCBmYWlsdXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xldGVzdC93aWtpL1YxXzZfUHJpbWVyI0Fzc2VydGlvbnMpIGlmIHRoZSB2YWx1ZSBvZiBg
ZXhwcmVzc2lvbmAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC58Ci18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFWFBF
Q1RfVEhBVChleHByZXNzaW9uLCBtKWB8R2VuZXJhdGVzIGEgbm9uLWZhdGFsIGZhaWx1cmUgaWYg
dGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vzbid0IG1hdGNoIG1hdGNoZXIgYG1gLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLQotIyBBY3Rpb25zICMKLQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5j
dGlvbiBzaG91bGQgZG8gd2hlbiBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIwot
Ci18YFJldHVybigpYHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKLXw6LS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBSZXR1cm4odmFs
dWUpYHxSZXR1cm4gYHZhbHVlYC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBpcyBkaWZmZXJlbnQg
dG8gdGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBpcyBjb252ZXJ0ZWQg
dG8gdGhlIGxhdHRlciB0eXBlIDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQ8
L2k+LCBub3Qgd2hlbiB0aGUgYWN0aW9uIGlzIGV4ZWN1dGVkLnwKLXxgUmV0dXJuQXJnPE4+KClg
fFJldHVybiB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJldHVybk5ldzxUPihh
MSwgLi4uLCBhaylgfFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2Jq
ZWN0IGlzIGNyZWF0ZWQgZWFjaCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxs
IHBvaW50ZXIuICAgICAgICAgICAgIHwKLXxgUmV0dXJuUG9pbnRlZShwdHIpYHxSZXR1cm4gdGhl
IHZhbHVlIHBvaW50ZWQgdG8gYnkgYHB0cmAufAotfGBSZXR1cm5SZWYodmFyaWFibGUpYHxSZXR1
cm4gYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC4gIHwKLXxgUmV0dXJuUmVmT2ZDb3B5KHZhbHVl
KWB8UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0aGUgY29weSBsaXZl
cyBhcyBsb25nIGFzIHRoZSBhY3Rpb24ufAotCi0jIyBTaWRlIEVmZmVjdHMgIyMKLQotfGBBc3Np
Z24oJnZhcmlhYmxlLCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlhYmxlLnwKLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBE
ZWxldGVBcmc8Tj4oKWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1
bWVudCwgd2hpY2ggbXVzdCBiZSBhIHBvaW50ZXIuIHwKLXwgYFNhdmVBcmc8Tj4ocG9pbnRlcilg
ICAgIHwgU2F2ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8
Ci18IGBTYXZlQXJnUG9pbnRlZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2YWx1ZSBwb2ludGVk
IHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKLXwg
YFNldEFyZ1JlZmVyZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUg
cmVmZXJlbmNlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAotfGBTZXRBcmdQ
b2ludGVlPE4+KHZhbHVlKWAgfEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJpYWJsZSBwb2ludGVk
IGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LnwKLXxgU2V0QXJndW1lbnRQb2ludGVl
PE4+KHZhbHVlKWB8U2FtZSBhcyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgLiBEZXByZWNhdGVk
LiBXaWxsIGJlIHJlbW92ZWQgaW4gdjEuNy4wLnwKLXxgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJz
dCwgbGFzdClgfENvcGllcyB0aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIFtgZmlyc3RgLCBg
bGFzdGApIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFy
Z3VtZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBpdGVyYXRvci4gVGhl
IGFjdGlvbiBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNv
dXJjZSByYW5nZS58Ci18YFNldEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1ZSlgfFNldCBgZXJy
bm9gIHRvIGBlcnJvcmAgYW5kIHJldHVybiBgdmFsdWVgLnwKLXxgVGhyb3coZXhjZXB0aW9uKWAg
ICAgICAgIHxUaHJvd3MgdGhlIGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2FuIGJlIGFueSBjb3B5
YWJsZSB2YWx1ZS4gQXZhaWxhYmxlIHNpbmNlIHYxLjEuMC58Ci0KLSMjIFVzaW5nIGEgRnVuY3Rp
b24gb3IgYSBGdW5jdG9yIGFzIGFuIEFjdGlvbiAjIwotCi18YEludm9rZShmKWB8SW52b2tlIGBm
YCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLCB3aGVyZSBg
ZmAgY2FuIGJlIGEgZ2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0b3IufAotfDotLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLXxgSW52b2tlKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9r
ZSB0aGUge21ldGhvZCBvbiB0aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8g
dGhlIG1vY2sgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxg
SW52b2tlV2l0aG91dEFyZ3MoZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBiZSBhIGdsb2JhbC9z
dGF0aWMgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5vIGFyZ3VtZW50cy4g
ICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mob2JqZWN0X3BvaW50
ZXIsICZjbGFzczo6bWV0aG9kKWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgd2hp
Y2ggdGFrZXMgbm8gYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAotfGBJbnZva2VBcmd1bWVudDxOPihhcmcxLCBhcmcyLCAu
Li4sIGFyZ2spYHxJbnZva2UgdGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGggKDAtYmFzZWQpIGFy
Z3VtZW50LCB3aGljaCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLCB3aXRoIHRoZSBg
a2AgYXJndW1lbnRzLnwKLQotVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlv
biBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUKLW9mIHRoZSBhY3Rpb24uCi0KLVdoZW4gZGVm
aW5pbmcgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBgSW52b2tlKigpYCwg
eW91IGNhbiBkZWNsYXJlIGFueSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51c2VkYDoKLWBgYAot
ICBkb3VibGUgRGlzdGFuY2UoVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIHNx
cnQoeCp4ICsgeSp5KTsgfQotICAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKCJIaSIsIF8s
IF8pKS5XaWxsT25jZShJbnZva2UoRGlzdGFuY2UpKTsKLWBgYAotCi1JbiBgSW52b2tlQXJndW1l
bnQ8Tj4oLi4uKWAsIGlmIGFuIGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3NlZCBieSByZWZlcmVu
Y2UsIHdyYXAgaXQgaW5zaWRlIGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCi1gYGAKLSAgSW52b2tl
QXJndW1lbnQ8Mj4oNSwgc3RyaW5nKCJIaSIpLCBCeVJlZihmb28pKQotYGBgCi1jYWxscyB0aGUg
bW9jayBmdW5jdGlvbidzICMyIGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1YCBhbmQgYHN0cmlu
ZygiSGkiKWAgYnkgdmFsdWUsIGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCi0KLSMjIERlZmF1bHQg
QWN0aW9uICMjCi0KLXxgRG9EZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFjdGlvbiAoc3BlY2lm
aWVkIGJ5IGBPTl9DQUxMKClgIG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKLXw6LS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLQotKipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwgcmVhc29ucywgYERv
RGVmYXVsdCgpYCBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRlIGFjdGlvbiAtIHRy
eWluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLgotCi0jIyBDb21w
b3NpdGUgQWN0aW9ucyAjIwotCi18YERvQWxsKGExLCBhMiwgLi4uLCBhbilgfERvIGFsbCBhY3Rp
b25zIGBhMWAgdG8gYGFuYCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFuYCBpbiBlYWNoIGlu
dm9jYXRpb24uIFRoZSBmaXJzdCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3QgcmV0dXJuIHZvaWQu
IHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBJZ25vcmVSZXN1
bHQoYSlgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBpdHMgcmVzdWx0LiBg
YWAgbXVzdCBub3QgcmV0dXJuIHZvaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFdpdGhBcmc8Tj4oYSlgICAgICAgICAgfFBh
c3MgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8g
YWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKLXxgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8UGFzcyB0aGUgc2Vs
ZWN0ZWQgKDAtYmFzZWQpIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24g
YGFgIGFuZCBwZXJmb3JtIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAotfGBXaXRob3V0QXJncyhhKWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgd2l0aG91dCBh
bnkgYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSMjIERlZmluaW5n
IEFjdGlvbnMgIyMKLQotfCBgQUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCArIGFyZzE7IH1gIHwg
RGVmaW5lcyBhbiBhY3Rpb24gYFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBm
dW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCAjMS4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgQUNU
SU9OX1AoUGx1cywgbikgeyByZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24g
YFBsdXMobilgIHRvIHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1l
bnQgIzAgYW5kIGBuYC4gfAotfCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgc3RhdGVt
ZW50czsgfWAgfCBEZWZpbmVzIGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZvbyhwMSwgLi4uLCBw
aylgIHRvIGV4ZWN1dGUgdGhlIGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8Ci0KLVRoZSBgQUNUSU9O
KmAgbWFjcm9zIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotCi0j
IENhcmRpbmFsaXRpZXMgIwotCi1UaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMoKWAgdG8gc3BlY2lm
eSBob3cgbWFueSB0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQ6Ci0KLXxgQW55
TnVtYmVyKClgfFRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMu
fAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Ci18YEF0TGVhc3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBsZWFzdCBg
bmAgdGltZXMuICAgICAgIHwKLXxgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0
IG1vc3QgYG5gIHRpbWVzLiAgICAgICAgfAotfGBCZXR3ZWVuKG0sIG4pYHxUaGUgY2FsbCBpcyBl
eHBlY3RlZCBiZXR3ZWVuIGBtYCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVzLnwKLXxgRXhhY3Rs
eShuKSBvciBuYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0aW1lcy4gSW4gcGFy
dGljdWxhciwgdGhlIGNhbGwgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBuYCBpcyAwLnwKLQot
IyBFeHBlY3RhdGlvbiBPcmRlciAjCi0KLUJ5IGRlZmF1bHQsIHRoZSBleHBlY3RhdGlvbnMgY2Fu
IGJlIG1hdGNoZWQgaW4gX2FueV8gb3JkZXIuICBJZiBzb21lCi1vciBhbGwgZXhwZWN0YXRpb25z
IG11c3QgYmUgbWF0Y2hlZCBpbiBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUgdHdvCi13YXlzIHRv
IHNwZWNpZnkgaXQuICBUaGV5IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVuZGVudGx5IG9yCi10
b2dldGhlci4KLQotIyMgVGhlIEFmdGVyIENsYXVzZSAjIwotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6RXhwZWN0YXRpb247Ci0uLi4KLUV4cGVjdGF0aW9uIGluaXRfeCA9IEVYUEVDVF9DQUxMKGZv
bywgSW5pdFgoKSk7Ci1FeHBlY3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRZ
KCkpOwotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoaW5pdF94LCBpbml0X3kp
OwotYGBgCi1zYXlzIHRoYXQgYEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgYm90aCBg
SW5pdFgoKWAgYW5kCi1gSW5pdFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KLQotSWYgeW91IGRvbid0
IGtub3cgaG93IG1hbnkgcHJlLXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24gaGFzIHdoZW4geW91
Ci13cml0ZSBpdCwgeW91IGNhbiB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0byBjb2xsZWN0IHRo
ZW06Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKLS4uLgotRXhwZWN0
YXRpb25TZXQgYWxsX2luaXRzOwotZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50X2NvdW50OyBp
KyspIHsKLSAgYWxsX2luaXRzICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVsZW1lbnQoaSkpOwot
fQotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoYWxsX2luaXRzKTsKLWBgYAot
c2F5cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFsbCBlbGVtZW50cyBo
YXZlIGJlZW4KLWluaXRpYWxpemVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBlbGVt
ZW50cyBnZXQgaW5pdGlhbGl6ZWQKLWJlZm9yZSB0aGUgb3RoZXJzKS4KLQotTW9kaWZ5aW5nIGFu
IGBFeHBlY3RhdGlvblNldGAgYWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRlcigpYCBkb2Vzbid0
Ci1hZmZlY3QgdGhlIG1lYW5pbmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCi0KLSMjIFNlcXVlbmNlcyAj
IwotCi1XaGVuIHlvdSBoYXZlIGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFsIGV4cGVjdGF0aW9u
cywgaXQncyBlYXNpZXIgdG8KLXNwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoqc2VxdWVuY2VzKios
IHdoaWNoIGRvbid0IHJlcXVpcmUgeW91IHRvIGdpdmVuCi1lYWNoIGV4cGVjdGF0aW9uIGluIHRo
ZSBjaGFpbiBhIGRpZmZlcmVudCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJyPgotY2FsbHM8L2k+
IGluIHRoZSBzYW1lIHNlcXVlbmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi1z
cGVjaWZpZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLVNlcXVlbmNlIHMx
LCBzMjsKLS4uLgotRVhQRUNUX0NBTEwoZm9vLCBSZXNldCgpKQotICAgIC5JblNlcXVlbmNlKHMx
LCBzMikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLUVYUEVDVF9DQUxMKGZvbywgR2V0
U2l6ZSgpKQotICAgIC5JblNlcXVlbmNlKHMxKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwot
RVhQRUNUX0NBTEwoZm9vLCBEZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkKLSAgICAuSW5TZXF1
ZW5jZShzMikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKLWBgYAotc2F5cyB0aGF0
IGBSZXNldCgpYCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRTaXplKClgIF9hbmRf
Ci1gRGVzY3JpYmUoKWAsIGFuZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIgaW4gYW55IG9yZGVy
LgotCi1UbyBwdXQgbWFueSBleHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBjb252ZW5pZW50bHk6
Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXsKLSAgSW5TZXF1ZW5jZSBkdW1t
eTsKLQotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICAu
Li4KLSAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKLX0KLWBgYAotc2F5cyB0aGF0IGFsbCBleHBlY3Rl
ZCBjYWxscyBpbiB0aGUgc2NvcGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGluCi1zdHJpY3Qgb3Jk
ZXIuIFRoZSBuYW1lIGBkdW1teWAgaXMgaXJyZWxldmFudC4pCi0KLSMgVmVyaWZ5aW5nIGFuZCBS
ZXNldHRpbmcgYSBNb2NrICMKLQotR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0
aW9ucyBvbiBhIG1vY2sgb2JqZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwgb3IgeW91IGNhbiBk
byBpdCBlYXJsaWVyOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0uLi4KLS8vIFZlcmlm
aWVzIGFuZCByZW1vdmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7Ci0vLyByZXR1cm5z
IHRydWUgaWZmIHN1Y2Nlc3NmdWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
bW9ja19vYmopOwotLi4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25z
IG9uIG1vY2tfb2JqOwotLy8gYWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc2V0IGJ5
IE9OX0NBTEwoKTsKLS8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLU1vY2s6OlZlcmlm
eUFuZENsZWFyKCZtb2NrX29iaik7Ci1gYGAKLQotWW91IGNhbiBhbHNvIHRlbGwgR29vZ2xlIE1v
Y2sgdGhhdCBhIG1vY2sgb2JqZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNuJ3QKLW5lZWQgdG8g
YmUgdmVyaWZpZWQ6Ci1gYGAKLU1vY2s6OkFsbG93TGVhaygmbW9ja19vYmopOwotYGBgCi0KLSMg
TW9jayBDbGFzc2VzICMKLQotR29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZlbmllbnQgbW9jayBj
bGFzcyB0ZW1wbGF0ZQotYGBgCi1jbGFzcyBNb2NrRnVuY3Rpb248UihBMSwgLi4uLCBBbik+IHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFuKSk7Ci19OwotYGBg
Ci1TZWUgdGhpcyBbcmVjaXBlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93
aWtpL1YxXzZfQ29va0Jvb2sjVXNpbmdfQ2hlY2tfUG9pbnRzKSBmb3Igb25lIGFwcGxpY2F0aW9u
IG9mIGl0LgotCi0jIEZsYWdzICMKLQotfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAg
fCBEb24ndCByZXBvcnQgbGVha2VkIG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBT
ZXRzIHRoZSBkZWZhdWx0IHZlcmJvc2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBl
cnJvcmApIG9mIEdvb2dsZSBNb2NrIG1lc3NhZ2VzLiB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0Nvb2tCb29rLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svZG9jcy92MV82L0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmNTk3NWEwMDM1YzMyZTJiNWE2MTJlM2Y2YjdlMWFiYzk5OTNmMmY2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFf
Ni9Db29rQm9vay5tZAorKysgL2Rldi9udWxsCkBAIC0xLDMzNDIgKzAsMCBAQAotCi0KLVlvdSBj
YW4gZmluZCByZWNpcGVzIGZvciB1c2luZyBHb29nbGUgTW9jayBoZXJlLiBJZiB5b3UgaGF2ZW4n
dCB5ZXQsCi1wbGVhc2UgcmVhZCB0aGUgW0ZvckR1bW1pZXNdKFYxXzZfRm9yRHVtbWllcy5tZCkg
ZG9jdW1lbnQgZmlyc3QgdG8gbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi10aGUgYmFzaWNzLgot
Ci0qKk5vdGU6KiogR29vZ2xlIE1vY2sgbGl2ZXMgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lIHNwYWNl
LiBGb3IKLXJlYWRhYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB3cml0ZSBgdXNpbmcgOjp0
ZXN0aW5nOjpGb287YCBvbmNlIGluCi15b3VyIGZpbGUgYmVmb3JlIHVzaW5nIHRoZSBuYW1lIGBG
b29gIGRlZmluZWQgYnkgR29vZ2xlIE1vY2suIFdlIG9taXQKLXN1Y2ggYHVzaW5nYCBzdGF0ZW1l
bnRzIGluIHRoaXMgcGFnZSBmb3IgYnJldml0eSwgYnV0IHlvdSBzaG91bGQgZG8gaXQKLWluIHlv
dXIgb3duIGNvZGUuCi0KLSMgQ3JlYXRpbmcgTW9jayBDbGFzc2VzICMKLQotIyMgTW9ja2luZyBQ
cml2YXRlIG9yIFByb3RlY3RlZCBNZXRob2RzICMjCi0KLVlvdSBtdXN0IGFsd2F5cyBwdXQgYSBt
b2NrIG1ldGhvZCBkZWZpbml0aW9uIChgTU9DS19NRVRIT0QqYCkgaW4gYQotYHB1YmxpYzpgIHNl
Y3Rpb24gb2YgdGhlIG1vY2sgY2xhc3MsIHJlZ2FyZGxlc3Mgb2YgdGhlIG1ldGhvZCBiZWluZwot
bW9ja2VkIGJlaW5nIGBwdWJsaWNgLCBgcHJvdGVjdGVkYCwgb3IgYHByaXZhdGVgIGluIHRoZSBi
YXNlIGNsYXNzLgotVGhpcyBhbGxvd3MgYE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgIHRvIHJl
ZmVyZW5jZSB0aGUgbW9jayBmdW5jdGlvbgotZnJvbSBvdXRzaWRlIG9mIHRoZSBtb2NrIGNsYXNz
LiAgKFllcywgQysrIGFsbG93cyBhIHN1YmNsYXNzIHRvIGNoYW5nZQotdGhlIGFjY2VzcyBsZXZl
bCBvZiBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gdGhlIGJhc2UgY2xhc3MuKSAgRXhhbXBsZToKLQot
YGBgCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBUcmFuc2Zv
cm0oR2FkZ2V0KiBnKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBSZXN1bWUo
KTsKLQotIHByaXZhdGU6Ci0gIHZpcnR1YWwgaW50IEdldFRpbWVPdXQoKTsKLX07Ci0KLWNsYXNz
IE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEo
VHJhbnNmb3JtLCBib29sKEdhZGdldCogZykpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBi
ZSBpbiB0aGUgcHVibGljIHNlY3Rpb24sIGV2ZW4gdGhvdWdoIHRoZQotICAvLyBtZXRob2RzIGFy
ZSBwcm90ZWN0ZWQgb3IgcHJpdmF0ZSBpbiB0aGUgYmFzZSBjbGFzcy4KLSAgTU9DS19NRVRIT0Qw
KFJlc3VtZSwgdm9pZCgpKTsKLSAgTU9DS19NRVRIT0QwKEdldFRpbWVPdXQsIGludCgpKTsKLX07
Ci1gYGAKLQotIyMgTW9ja2luZyBPdmVybG9hZGVkIE1ldGhvZHMgIyMKLQotWW91IGNhbiBtb2Nr
IG92ZXJsb2FkZWQgZnVuY3Rpb25zIGFzIHVzdWFsLiBObyBzcGVjaWFsIGF0dGVudGlvbiBpcyBy
ZXF1aXJlZDoKLQotYGBgCi1jbGFzcyBGb28gewotICAuLi4KLQotICAvLyBNdXN0IGJlIHZpcnR1
YWwgYXMgd2UnbGwgaW5oZXJpdCBmcm9tIEZvby4KLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgLy8g
T3ZlcmxvYWRlZCBvbiB0aGUgdHlwZXMgYW5kL29yIG51bWJlcnMgb2YgYXJndW1lbnRzLgotICB2
aXJ0dWFsIGludCBBZGQoRWxlbWVudCB4KTsKLSAgdmlydHVhbCBpbnQgQWRkKGludCB0aW1lcywg
RWxlbWVudCB4KTsKLQotICAvLyBPdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMg
b2JqZWN0LgotICB2aXJ0dWFsIEJhciYgR2V0QmFyKCk7Ci0gIHZpcnR1YWwgY29uc3QgQmFyJiBH
ZXRCYXIoKSBjb25zdDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4u
Ci0gIE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgTU9DS19NRVRIT0QyKEFk
ZCwgaW50KGludCB0aW1lcywgRWxlbWVudCB4KTsKLQotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBC
YXImKCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsK
LWBgYAotCi0qKk5vdGU6KiogaWYgeW91IGRvbid0IG1vY2sgYWxsIHZlcnNpb25zIG9mIHRoZSBv
dmVybG9hZGVkIG1ldGhvZCwgdGhlCi1jb21waWxlciB3aWxsIGdpdmUgeW91IGEgd2FybmluZyBh
Ym91dCBzb21lIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3MKLWJlaW5nIGhpZGRlbi4gVG8gZml4
IHRoYXQsIHVzZSBgdXNpbmdgIHRvIGJyaW5nIHRoZW0gaW4gc2NvcGU6Ci0KLWBgYAotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgdXNpbmcgRm9vOjpBZGQ7Ci0gIE1PQ0tf
TUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtb2Nr
IGludCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOwotICAuLi4KLX07Ci1gYGAKLQotIyMgTW9j
a2luZyBDbGFzcyBUZW1wbGF0ZXMgIyMKLQotVG8gbW9jayBhIGNsYXNzIHRlbXBsYXRlLCBhcHBl
bmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtPgotY2xhc3MgU3RhY2tJbnRlcmZhY2UgewotICAuLi4KLSAgLy8gTXVzdCBiZSB2aXJ0
dWFsIGFzIHdlJ2xsIGluaGVyaXQgZnJvbSBTdGFja0ludGVyZmFjZS4KLSAgdmlydHVhbCB+U3Rh
Y2tJbnRlcmZhY2UoKTsKLQotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2
aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVt
PiB7Ci0gIC4uLgotICBNT0NLX0NPTlNUX01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7Ci0gIE1P
Q0tfTUVUSE9EMV9UKFB1c2gsIHZvaWQoY29uc3QgRWxlbSYgeCkpOwotfTsKLWBgYAotCi0jIyBN
b2NraW5nIE5vbnZpcnR1YWwgTWV0aG9kcyAjIwotCi1Hb29nbGUgTW9jayBjYW4gbW9jayBub24t
dmlydHVhbCBmdW5jdGlvbnMgdG8gYmUgdXNlZCBpbiB3aGF0IHdlIGNhbGwgX2hpLXBlcmYKLWRl
cGVuZGVuY3kgaW5qZWN0aW9uXy4KLQotSW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIHNoYXJpbmcg
YSBjb21tb24gYmFzZSBjbGFzcyB3aXRoIHRoZSByZWFsCi1jbGFzcywgeW91ciBtb2NrIGNsYXNz
IHdpbGwgYmUgX3VucmVsYXRlZF8gdG8gdGhlIHJlYWwgY2xhc3MsIGJ1dAotY29udGFpbiBtZXRo
b2RzIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlcy4gIFRoZSBzeW50YXggZm9yIG1vY2tpbmcKLW5v
bi12aXJ0dWFsIG1ldGhvZHMgaXMgdGhlIF9zYW1lXyBhcyBtb2NraW5nIHZpcnR1YWwgbWV0aG9k
czoKLQotYGBgCi0vLyBBIHNpbXBsZSBwYWNrZXQgc3RyZWFtIGNsYXNzLiAgTm9uZSBvZiBpdHMg
bWVtYmVycyBpcyB2aXJ0dWFsLgotY2xhc3MgQ29uY3JldGVQYWNrZXRTdHJlYW0gewotIHB1Ymxp
YzoKLSAgdm9pZCBBcHBlbmRQYWNrZXQoUGFja2V0KiBuZXdfcGFja2V0KTsKLSAgY29uc3QgUGFj
a2V0KiBHZXRQYWNrZXQoc2l6ZV90IHBhY2tldF9udW1iZXIpIGNvbnN0OwotICBzaXplX3QgTnVt
YmVyT2ZQYWNrZXRzKCkgY29uc3Q7Ci0gIC4uLgotfTsKLQotLy8gQSBtb2NrIHBhY2tldCBzdHJl
YW0gY2xhc3MuICBJdCBpbmhlcml0cyBmcm9tIG5vIG90aGVyLCBidXQgZGVmaW5lcwotLy8gR2V0
UGFja2V0KCkgYW5kIE51bWJlck9mUGFja2V0cygpLgotY2xhc3MgTW9ja1BhY2tldFN0cmVhbSB7
Ci0gcHVibGljOgotICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0UGFja2V0LCBjb25zdCBQYWNrZXQq
KHNpemVfdCBwYWNrZXRfbnVtYmVyKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChOdW1iZXJPZlBh
Y2tldHMsIHNpemVfdCgpKTsKLSAgLi4uCi19OwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgbW9jayBj
bGFzcyBkb2Vzbid0IGRlZmluZSBgQXBwZW5kUGFja2V0KClgLCB1bmxpa2UgdGhlCi1yZWFsIGNs
YXNzLiBUaGF0J3MgZmluZSBhcyBsb25nIGFzIHRoZSB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjYWxs
IGl0LgotCi1OZXh0LCB5b3UgbmVlZCBhIHdheSB0byBzYXkgdGhhdCB5b3Ugd2FudCB0byB1c2UK
LWBDb25jcmV0ZVBhY2tldFN0cmVhbWAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlIGBNb2Nr
UGFja2V0U3RyZWFtYAotaW4gdGVzdHMuICBTaW5jZSB0aGUgZnVuY3Rpb25zIGFyZSBub3Qgdmly
dHVhbCBhbmQgdGhlIHR3byBjbGFzc2VzIGFyZQotdW5yZWxhdGVkLCB5b3UgbXVzdCBzcGVjaWZ5
IHlvdXIgY2hvaWNlIGF0IF9jb21waWxlIHRpbWVfIChhcyBvcHBvc2VkCi10byBydW4gdGltZSku
Ci0KLU9uZSB3YXkgdG8gZG8gaXQgaXMgdG8gdGVtcGxhdGl6ZSB5b3VyIGNvZGUgdGhhdCBuZWVk
cyB0byB1c2UgYSBwYWNrZXQKLXN0cmVhbS4gIE1vcmUgc3BlY2lmaWNhbGx5LCB5b3Ugd2lsbCBn
aXZlIHlvdXIgY29kZSBhIHRlbXBsYXRlIHR5cGUKLWFyZ3VtZW50IGZvciB0aGUgdHlwZSBvZiB0
aGUgcGFja2V0IHN0cmVhbS4gIEluIHByb2R1Y3Rpb24sIHlvdSB3aWxsCi1pbnN0YW50aWF0ZSB5
b3VyIHRlbXBsYXRlIHdpdGggYENvbmNyZXRlUGFja2V0U3RyZWFtYCBhcyB0aGUgdHlwZQotYXJn
dW1lbnQuICBJbiB0ZXN0cywgeW91IHdpbGwgaW5zdGFudGlhdGUgdGhlIHNhbWUgdGVtcGxhdGUg
d2l0aAotYE1vY2tQYWNrZXRTdHJlYW1gLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd3JpdGU6Ci0K
LWBgYAotdGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0cmVhbT4KLXZvaWQgQ3JlYXRlQ29ubmVjdGlv
bihQYWNrZXRTdHJlYW0qIHN0cmVhbSkgeyAuLi4gfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0
U3RyZWFtPgotY2xhc3MgUGFja2V0UmVhZGVyIHsKLSBwdWJsaWM6Ci0gIHZvaWQgUmVhZFBhY2tl
dHMoUGFja2V0U3RyZWFtKiBzdHJlYW0sIHNpemVfdCBwYWNrZXRfbnVtKTsKLX07Ci1gYGAKLQot
VGhlbiB5b3UgY2FuIHVzZSBgQ3JlYXRlQ29ubmVjdGlvbjxDb25jcmV0ZVBhY2tldFN0cmVhbT4o
KWAgYW5kCi1gUGFja2V0UmVhZGVyPENvbmNyZXRlUGFja2V0U3RyZWFtPmAgaW4gcHJvZHVjdGlv
biBjb2RlLCBhbmQgdXNlCi1gQ3JlYXRlQ29ubmVjdGlvbjxNb2NrUGFja2V0U3RyZWFtPigpYCBh
bmQKLWBQYWNrZXRSZWFkZXI8TW9ja1BhY2tldFN0cmVhbT5gIGluIHRlc3RzLgotCi1gYGAKLSAg
TW9ja1BhY2tldFN0cmVhbSBtb2NrX3N0cmVhbTsKLSAgRVhQRUNUX0NBTEwobW9ja19zdHJlYW0s
IC4uLikuLi47Ci0gIC4uIHNldCBtb3JlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX3N0cmVhbSAuLi4K
LSAgUGFja2V0UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+IHJlYWRlcigmbW9ja19zdHJlYW0pOwot
ICAuLi4gZXhlcmNpc2UgcmVhZGVyIC4uLgotYGBgCi0KLSMjIE1vY2tpbmcgRnJlZSBGdW5jdGlv
bnMgIyMKLQotSXQncyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIE1vY2sgdG8gbW9jayBhIGZyZWUg
ZnVuY3Rpb24gKGkuZS4gYQotQy1zdHlsZSBmdW5jdGlvbiBvciBhIHN0YXRpYyBtZXRob2QpLiAg
WW91IGp1c3QgbmVlZCB0byByZXdyaXRlIHlvdXIKLWNvZGUgdG8gdXNlIGFuIGludGVyZmFjZSAo
YWJzdHJhY3QgY2xhc3MpLgotCi1JbnN0ZWFkIG9mIGNhbGxpbmcgYSBmcmVlIGZ1bmN0aW9uIChz
YXksIGBPcGVuRmlsZWApIGRpcmVjdGx5LAotaW50cm9kdWNlIGFuIGludGVyZmFjZSBmb3IgaXQg
YW5kIGhhdmUgYSBjb25jcmV0ZSBzdWJjbGFzcyB0aGF0IGNhbGxzCi10aGUgZnJlZSBmdW5jdGlv
bjoKLQotYGBgCi1jbGFzcyBGaWxlSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0
dWFsIGJvb2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSA9IDA7Ci19
OwotCi1jbGFzcyBGaWxlIDogcHVibGljIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4u
Ci0gIHZpcnR1YWwgYm9vbCBPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUp
IHsKLSAgICByZXR1cm4gT3BlbkZpbGUocGF0aCwgbW9kZSk7Ci0gIH0KLX07Ci1gYGAKLQotWW91
ciBjb2RlIHNob3VsZCB0YWxrIHRvIGBGaWxlSW50ZXJmYWNlYCB0byBvcGVuIGEgZmlsZS4gIE5v
dyBpdCdzCi1lYXN5IHRvIG1vY2sgb3V0IHRoZSBmdW5jdGlvbi4KLQotVGhpcyBtYXkgc2VlbSBt
dWNoIGhhc3NsZSwgYnV0IGluIHByYWN0aWNlIHlvdSBvZnRlbiBoYXZlIG11bHRpcGxlCi1yZWxh
dGVkIGZ1bmN0aW9ucyB0aGF0IHlvdSBjYW4gcHV0IGluIHRoZSBzYW1lIGludGVyZmFjZSwgc28g
dGhlCi1wZXItZnVuY3Rpb24gc3ludGFjdGljIG92ZXJoZWFkIHdpbGwgYmUgbXVjaCBsb3dlci4K
LQotSWYgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG92ZXJoZWFkIGlu
Y3VycmVkIGJ5Ci12aXJ0dWFsIGZ1bmN0aW9ucywgYW5kIHByb2ZpbGluZyBjb25maXJtcyB5b3Vy
IGNvbmNlcm4sIHlvdSBjYW4KLWNvbWJpbmUgdGhpcyB3aXRoIHRoZSByZWNpcGUgZm9yIFttb2Nr
aW5nIG5vbi12aXJ0dWFsIG1ldGhvZHNdKCNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcy5tZCku
Ci0KLSMjIE5pY2UgTW9ja3MgYW5kIFN0cmljdCBNb2NrcyAjIwotCi1JZiBhIG1vY2sgbWV0aG9k
IGhhcyBubyBgRVhQRUNUX0NBTExgIHNwZWMgYnV0IGlzIGNhbGxlZCwgR29vZ2xlIE1vY2sKLXdp
bGwgcHJpbnQgYSB3YXJuaW5nIGFib3V0IHRoZSAidW5pbnRlcmVzdGluZyBjYWxsIi4gVGhlIHJh
dGlvbmFsZSBpczoKLQotICAqIE5ldyBtZXRob2RzIG1heSBiZSBhZGRlZCB0byBhbiBpbnRlcmZh
Y2UgYWZ0ZXIgYSB0ZXN0IGlzIHdyaXR0ZW4uIFdlIHNob3VsZG4ndCBmYWlsIGEgdGVzdCBqdXN0
IGJlY2F1c2UgYSBtZXRob2QgaXQgZG9lc24ndCBrbm93IGFib3V0IGlzIGNhbGxlZC4KLSAgKiBI
b3dldmVyLCB0aGlzIG1heSBhbHNvIG1lYW4gdGhlcmUncyBhIGJ1ZyBpbiB0aGUgdGVzdCwgc28g
R29vZ2xlIE1vY2sgc2hvdWxkbid0IGJlIHNpbGVudCBlaXRoZXIuIElmIHRoZSB1c2VyIGJlbGll
dmVzIHRoZXNlIGNhbGxzIGFyZSBoYXJtbGVzcywgaGUgY2FuIGFkZCBhbiBgRVhQRUNUX0NBTEwo
KWAgdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmcuCi0KLUhvd2V2ZXIsIHNvbWV0aW1lcyB5b3UgbWF5
IHdhbnQgdG8gc3VwcHJlc3MgYWxsICJ1bmludGVyZXN0aW5nIGNhbGwiCi13YXJuaW5ncywgd2hp
bGUgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0aGUgb3Bwb3NpdGUsIGkuZS4gdG8gdHJlYXQgYWxs
Ci1vZiB0aGVtIGFzIGVycm9ycy4gR29vZ2xlIE1vY2sgbGV0cyB5b3UgbWFrZSB0aGUgZGVjaXNp
b24gb24gYQotcGVyLW1vY2stb2JqZWN0IGJhc2lzLgotCi1TdXBwb3NlIHlvdXIgdGVzdCB1c2Vz
IGEgbW9jayBjbGFzcyBgTW9ja0Zvb2A6Ci0KLWBgYAotVEVTVCguLi4pIHsKLSAgTW9ja0ZvbyBt
b2NrX2ZvbzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUg
dGhhdCB1c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLUlmIGEgbWV0aG9kIG9mIGBtb2NrX2Zv
b2Agb3RoZXIgdGhhbiBgRG9UaGlzKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBiZQotcmVwb3J0ZWQg
YnkgR29vZ2xlIE1vY2sgYXMgYSB3YXJuaW5nLiBIb3dldmVyLCBpZiB5b3UgcmV3cml0ZSB5b3Vy
Ci10ZXN0IHRvIHVzZSBgTmljZU1vY2s8TW9ja0Zvbz5gIGluc3RlYWQsIHRoZSB3YXJuaW5nIHdp
bGwgYmUgZ29uZSwKLXJlc3VsdGluZyBpbiBhIGNsZWFuZXIgdGVzdCBvdXRwdXQ6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpOaWNlTW9jazsKLQotVEVTVCguLi4pIHsKLSAgTmljZU1vY2s8TW9j
a0Zvbz4gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4u
LiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBgYAotCi1gTmljZU1vY2s8TW9ja0Zv
bz5gIGlzIGEgc3ViY2xhc3Mgb2YgYE1vY2tGb29gLCBzbyBpdCBjYW4gYmUgdXNlZAotd2hlcmV2
ZXIgYE1vY2tGb29gIGlzIGFjY2VwdGVkLgotCi1JdCBhbHNvIHdvcmtzIGlmIGBNb2NrRm9vYCdz
IGNvbnN0cnVjdG9yIHRha2VzIHNvbWUgYXJndW1lbnRzLCBhcwotYE5pY2VNb2NrPE1vY2tGb28+
YCAiaW5oZXJpdHMiIGBNb2NrRm9vYCdzIGNvbnN0cnVjdG9yczoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2Nr
X2Zvbyg1LCAiaGkiKTsgIC8vIENhbGxzIE1vY2tGb28oNSwgImhpIikuCi0gIEVYUEVDVF9DQUxM
KG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4K
LX0KLWBgYAotCi1UaGUgdXNhZ2Ugb2YgYFN0cmljdE1vY2tgIGlzIHNpbWlsYXIsIGV4Y2VwdCB0
aGF0IGl0IG1ha2VzIGFsbAotdW5pbnRlcmVzdGluZyBjYWxscyBmYWlsdXJlczoKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6OlN0cmljdE1vY2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIFN0cmljdE1vY2s8
TW9ja0Zvbz4gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0g
IC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLQotICAvLyBUaGUgdGVzdCB3aWxsIGZh
aWwgaWYgYSBtZXRob2Qgb2YgbW9ja19mb28gb3RoZXIgdGhhbiBEb1RoaXMoKQotICAvLyBpcyBj
YWxsZWQuCi19Ci1gYGAKLQotVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB0aG91Z2ggKEkgZG9uJ3Qg
bGlrZSB0aGVtIGp1c3QgYXMgbXVjaCBhcyB0aGUKLW5leHQgZ3V5LCBidXQgc2FkbHkgdGhleSBh
cmUgc2lkZSBlZmZlY3RzIG9mIEMrKydzIGxpbWl0YXRpb25zKToKLQotICAxLiBgTmljZU1vY2s8
TW9ja0Zvbz5gIGFuZCBgU3RyaWN0TW9jazxNb2NrRm9vPmAgb25seSB3b3JrIGZvciBtb2NrIG1l
dGhvZHMgZGVmaW5lZCB1c2luZyB0aGUgYE1PQ0tfTUVUSE9EKmAgZmFtaWx5IG9mIG1hY3JvcyAq
KmRpcmVjdGx5KiogaW4gdGhlIGBNb2NrRm9vYCBjbGFzcy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBk
ZWZpbmVkIGluIGEgKipiYXNlIGNsYXNzKiogb2YgYE1vY2tGb29gLCB0aGUgIm5pY2UiIG9yICJz
dHJpY3QiIG1vZGlmaWVyIG1heSBub3QgYWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBp
bGVyLiBJbiBwYXJ0aWN1bGFyLCBuZXN0aW5nIGBOaWNlTW9ja2AgYW5kIGBTdHJpY3RNb2NrYCAo
ZS5nLiBgTmljZU1vY2s8U3RyaWN0TW9jazxNb2NrRm9vPiA+YCkgaXMgKipub3QqKiBzdXBwb3J0
ZWQuCi0gIDEuIFRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIGJhc2UgbW9jayAoYE1vY2tGb29gKSBj
YW5ub3QgaGF2ZSBhcmd1bWVudHMgcGFzc2VkIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdoaWNo
IGhhcHBlbnMgdG8gYmUgYmFubmVkIGJ5IHRoZSBbR29vZ2xlIEMrKyBzdHlsZSBndWlkZV0oaHR0
cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54
bWwpLgotICAxLiBEdXJpbmcgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3Igb2YgYE1vY2tG
b29gLCB0aGUgbW9jayBvYmplY3QgaXMgX25vdF8gbmljZSBvciBzdHJpY3QuICBUaGlzIG1heSBj
YXVzZSBzdXJwcmlzZXMgaWYgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMgYSBt
b2NrIG1ldGhvZCBvbiBgdGhpc2Agb2JqZWN0LiAoVGhpcyBiZWhhdmlvciwgaG93ZXZlciwgaXMg
Y29uc2lzdGVudCB3aXRoIEMrKydzIGdlbmVyYWwgcnVsZTogaWYgYSBjb25zdHJ1Y3RvciBvciBk
ZXN0cnVjdG9yIGNhbGxzIGEgdmlydHVhbCBtZXRob2Qgb2YgYHRoaXNgIG9iamVjdCwgdGhhdCBt
ZXRob2QgaXMgdHJlYXRlZCBhcyBub24tdmlydHVhbC4gIEluIG90aGVyIHdvcmRzLCB0byB0aGUg
YmFzZSBjbGFzcydzIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIGB0aGlzYCBvYmplY3QgYmVo
YXZlcyBsaWtlIGFuIGluc3RhbmNlIG9mIHRoZSBiYXNlIGNsYXNzLCBub3QgdGhlIGRlcml2ZWQg
Y2xhc3MuICBUaGlzIHJ1bGUgaXMgcmVxdWlyZWQgZm9yIHNhZmV0eS4gIE90aGVyd2lzZSBhIGJh
c2UgY29uc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBiZWZvcmUg
dGhleSBhcmUgaW5pdGlhbGl6ZWQsIG9yIGEgYmFzZSBkZXN0cnVjdG9yIG1heSB1c2UgbWVtYmVy
cyBvZiBhIGRlcml2ZWQgY2xhc3MgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZGVzdHJveWVkLikKLQot
RmluYWxseSwgeW91IHNob3VsZCBiZSAqKnZlcnkgY2F1dGlvdXMqKiB3aGVuIHVzaW5nIHRoaXMg
ZmVhdHVyZSwgYXMgdGhlCi1kZWNpc2lvbiB5b3UgbWFrZSBhcHBsaWVzIHRvICoqYWxsKiogZnV0
dXJlIGNoYW5nZXMgdG8gdGhlIG1vY2sKLWNsYXNzLiBJZiBhbiBpbXBvcnRhbnQgY2hhbmdlIGlz
IG1hZGUgaW4gdGhlIGludGVyZmFjZSB5b3UgYXJlIG1vY2tpbmcKLShhbmQgdGh1cyBpbiB0aGUg
bW9jayBjbGFzcyksIGl0IGNvdWxkIGJyZWFrIHlvdXIgdGVzdHMgKGlmIHlvdSB1c2UKLWBTdHJp
Y3RNb2NrYCkgb3IgbGV0IGJ1Z3MgcGFzcyB0aHJvdWdoIHdpdGhvdXQgYSB3YXJuaW5nIChpZiB5
b3UgdXNlCi1gTmljZU1vY2tgKS4gVGhlcmVmb3JlLCB0cnkgdG8gc3BlY2lmeSB0aGUgbW9jaydz
IGJlaGF2aW9yIHVzaW5nCi1leHBsaWNpdCBgRVhQRUNUX0NBTExgIGZpcnN0LCBhbmQgb25seSB0
dXJuIHRvIGBOaWNlTW9ja2Agb3IKLWBTdHJpY3RNb2NrYCBhcyB0aGUgbGFzdCByZXNvcnQuCi0K
LSMjIFNpbXBsaWZ5aW5nIHRoZSBJbnRlcmZhY2Ugd2l0aG91dCBCcmVha2luZyBFeGlzdGluZyBD
b2RlICMjCi0KLVNvbWV0aW1lcyBhIG1ldGhvZCBoYXMgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRz
IHRoYXQgaXMgbW9zdGx5Ci11bmludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1jbGFz
cyBMb2dTaW5rIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZl
cml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0cnVjdCB0bSogdG1fdGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSA9IDA7Ci19OwotYGBgCi0KLVRo
aXMgbWV0aG9kJ3MgYXJndW1lbnQgbGlzdCBpcyBsZW5ndGh5IGFuZCBoYXJkIHRvIHdvcmsgd2l0
aCAobGV0J3MKLXNheSB0aGF0IHRoZSBgbWVzc2FnZWAgYXJndW1lbnQgaXMgbm90IGV2ZW4gMC10
ZXJtaW5hdGVkKS4gSWYgd2UgbW9jawotaXQgYXMgaXMsIHVzaW5nIHRoZSBtb2NrIHdpbGwgYmUg
YXdrd2FyZC4gSWYsIGhvd2V2ZXIsIHdlIHRyeSB0bwotc2ltcGxpZnkgdGhpcyBpbnRlcmZhY2Us
IHdlJ2xsIG5lZWQgdG8gZml4IGFsbCBjbGllbnRzIGRlcGVuZGluZyBvbgotaXQsIHdoaWNoIGlz
IG9mdGVuIGluZmVhc2libGUuCi0KLVRoZSB0cmljayBpcyB0byByZS1kaXNwYXRjaCB0aGUgbWV0
aG9kIGluIHRoZSBtb2NrIGNsYXNzOgotCi1gYGAKLWNsYXNzIFNjb3BlZE1vY2tMb2cgOiBwdWJs
aWMgTG9nU2luayB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2
ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZ1bGxfZmlsZW5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJhc2VfZmlsZW5hbWUsIGludCBsaW5lLCBjb25zdCB0bSogdG1f
dGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1l
c3NhZ2VfbGVuKSB7Ci0gICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG9nIHNl
dmVyaXR5LCBmdWxsIGZpbGUgbmFtZSwgYW5kCi0gICAgLy8gbG9nIG1lc3NhZ2UuCi0gICAgTG9n
KHNldmVyaXR5LCBmdWxsX2ZpbGVuYW1lLCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBtZXNzYWdlX2xl
bikpOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgbW9jayBtZXRob2Q6Ci0gIC8vCi0gIC8v
ICAgdm9pZCBMb2coTG9nU2V2ZXJpdHkgc2V2ZXJpdHksCi0gIC8vICAgICAgICAgICAgY29uc3Qg
c3RyaW5nJiBmaWxlX3BhdGgsCi0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdl
KTsKLSAgTU9DS19NRVRIT0QzKExvZywgdm9pZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qg
c3RyaW5nJiBmaWxlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5n
JiBtZXNzYWdlKSk7Ci19OwotYGBgCi0KLUJ5IGRlZmluaW5nIGEgbmV3IG1vY2sgbWV0aG9kIHdp
dGggYSB0cmltbWVkIGFyZ3VtZW50IGxpc3QsIHdlIG1ha2UKLXRoZSBtb2NrIGNsYXNzIG11Y2gg
bW9yZSB1c2VyLWZyaWVuZGx5LgotCi0jIyBBbHRlcm5hdGl2ZSB0byBNb2NraW5nIENvbmNyZXRl
IENsYXNzZXMgIyMKLQotT2Z0ZW4geW91IG1heSBmaW5kIHlvdXJzZWxmIHVzaW5nIGNsYXNzZXMg
dGhhdCBkb24ndCBpbXBsZW1lbnQKLWludGVyZmFjZXMuIEluIG9yZGVyIHRvIHRlc3QgeW91ciBj
b2RlIHRoYXQgdXNlcyBzdWNoIGEgY2xhc3MgKGxldCdzCi1jYWxsIGl0IGBDb25jcmV0ZWApLCB5
b3UgbWF5IGJlIHRlbXB0ZWQgdG8gbWFrZSB0aGUgbWV0aG9kcyBvZgotYENvbmNyZXRlYCB2aXJ0
dWFsIGFuZCB0aGVuIG1vY2sgaXQuCi0KLVRyeSBub3QgdG8gZG8gdGhhdC4KLQotTWFraW5nIGEg
bm9uLXZpcnR1YWwgZnVuY3Rpb24gdmlydHVhbCBpcyBhIGJpZyBkZWNpc2lvbi4gSXQgY3JlYXRl
cyBhbgotZXh0ZW5zaW9uIHBvaW50IHdoZXJlIHN1YmNsYXNzZXMgY2FuIHR3ZWFrIHlvdXIgY2xh
c3MnIGJlaGF2aW9yLiBUaGlzCi13ZWFrZW5zIHlvdXIgY29udHJvbCBvbiB0aGUgY2xhc3MgYmVj
YXVzZSBub3cgaXQncyBoYXJkZXIgdG8gbWFpbnRhaW4KLXRoZSBjbGFzcycgaW52YXJpYW50cy4g
WW91IHNob3VsZCBtYWtlIGEgZnVuY3Rpb24gdmlydHVhbCBvbmx5IHdoZW4KLXRoZXJlIGlzIGEg
dmFsaWQgcmVhc29uIGZvciBhIHN1YmNsYXNzIHRvIG92ZXJyaWRlIGl0LgotCi1Nb2NraW5nIGNv
bmNyZXRlIGNsYXNzZXMgZGlyZWN0bHkgaXMgcHJvYmxlbWF0aWMgYXMgaXQgY3JlYXRlcyBhIHRp
Z2h0Ci1jb3VwbGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBhbmQgdGhlIHRlc3RzIC0gYW55IHNtYWxs
IGNoYW5nZSBpbiB0aGUKLWNsYXNzIG1heSBpbnZhbGlkYXRlIHlvdXIgdGVzdHMgYW5kIG1ha2Ug
dGVzdCBtYWludGVuYW5jZSBhIHBhaW4uCi0KLVRvIGF2b2lkIHN1Y2ggcHJvYmxlbXMsIG1hbnkg
cHJvZ3JhbW1lcnMgaGF2ZSBiZWVuIHByYWN0aWNpbmcgImNvZGluZwotdG8gaW50ZXJmYWNlcyI6
IGluc3RlYWQgb2YgdGFsa2luZyB0byB0aGUgYENvbmNyZXRlYCBjbGFzcywgeW91ciBjb2RlCi13
b3VsZCBkZWZpbmUgYW4gaW50ZXJmYWNlIGFuZCB0YWxrIHRvIGl0LiBUaGVuIHlvdSBpbXBsZW1l
bnQgdGhhdAotaW50ZXJmYWNlIGFzIGFuIGFkYXB0b3Igb24gdG9wIG9mIGBDb25jcmV0ZWAuIElu
IHRlc3RzLCB5b3UgY2FuIGVhc2lseQotbW9jayB0aGF0IGludGVyZmFjZSB0byBvYnNlcnZlIGhv
dyB5b3VyIGNvZGUgaXMgZG9pbmcuCi0KLVRoaXMgdGVjaG5pcXVlIGluY3VycyBzb21lIG92ZXJo
ZWFkOgotCi0gICogWW91IHBheSB0aGUgY29zdCBvZiB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzICh1
c3VhbGx5IG5vdCBhIHByb2JsZW0pLgotICAqIFRoZXJlIGlzIG1vcmUgYWJzdHJhY3Rpb24gZm9y
IHRoZSBwcm9ncmFtbWVycyB0byBsZWFybi4KLQotSG93ZXZlciwgaXQgY2FuIGFsc28gYnJpbmcg
c2lnbmlmaWNhbnQgYmVuZWZpdHMgaW4gYWRkaXRpb24gdG8gYmV0dGVyCi10ZXN0YWJpbGl0eToK
LQotICAqIGBDb25jcmV0ZWAncyBBUEkgbWF5IG5vdCBmaXQgeW91ciBwcm9ibGVtIGRvbWFpbiB2
ZXJ5IHdlbGwsIGFzIHlvdSBtYXkgbm90IGJlIHRoZSBvbmx5IGNsaWVudCBpdCB0cmllcyB0byBz
ZXJ2ZS4gQnkgZGVzaWduaW5nIHlvdXIgb3duIGludGVyZmFjZSwgeW91IGhhdmUgYSBjaGFuY2Ug
dG8gdGFpbG9yIGl0IHRvIHlvdXIgbmVlZCAtIHlvdSBtYXkgYWRkIGhpZ2hlci1sZXZlbCBmdW5j
dGlvbmFsaXRpZXMsIHJlbmFtZSBzdHVmZiwgZXRjIGluc3RlYWQgb2YganVzdCB0cmltbWluZyB0
aGUgY2xhc3MuIFRoaXMgYWxsb3dzIHlvdSB0byB3cml0ZSB5b3VyIGNvZGUgKHVzZXIgb2YgdGhl
IGludGVyZmFjZSkgaW4gYSBtb3JlIG5hdHVyYWwgd2F5LCB3aGljaCBtZWFucyBpdCB3aWxsIGJl
IG1vcmUgcmVhZGFibGUsIG1vcmUgbWFpbnRhaW5hYmxlLCBhbmQgeW91J2xsIGJlIG1vcmUgcHJv
ZHVjdGl2ZS4KLSAgKiBJZiBgQ29uY3JldGVgJ3MgaW1wbGVtZW50YXRpb24gZXZlciBoYXMgdG8g
Y2hhbmdlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZXdyaXRlIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZC4g
SW5zdGVhZCwgeW91IGNhbiBhYnNvcmIgdGhlIGNoYW5nZSBpbiB5b3VyIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBpbnRlcmZhY2UsIGFuZCB5b3VyIG90aGVyIGNvZGUgYW5kIHRlc3RzIHdpbGwgYmUg
aW5zdWxhdGVkIGZyb20gdGhpcyBjaGFuZ2UuCi0KLVNvbWUgcGVvcGxlIHdvcnJ5IHRoYXQgaWYg
ZXZlcnlvbmUgaXMgcHJhY3RpY2luZyB0aGlzIHRlY2huaXF1ZSwgdGhleQotd2lsbCBlbmQgdXAg
d3JpdGluZyBsb3RzIG9mIHJlZHVuZGFudCBjb2RlLiBUaGlzIGNvbmNlcm4gaXMgdG90YWxseQot
dW5kZXJzdGFuZGFibGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgaXQgbWF5
IG5vdCBiZSB0aGUKLWNhc2U6Ci0KLSAgKiBEaWZmZXJlbnQgcHJvamVjdHMgbWF5IG5lZWQgdG8g
dXNlIGBDb25jcmV0ZWAgaW4gZGlmZmVyZW50IHdheXMsIHNvIHRoZSBiZXN0IGludGVyZmFjZXMg
Zm9yIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQuIFRoZXJlZm9yZSwgZWFjaCBvZiB0aGVtIHdpbGwg
aGF2ZSBpdHMgb3duIGRvbWFpbi1zcGVjaWZpYyBpbnRlcmZhY2Ugb24gdG9wIG9mIGBDb25jcmV0
ZWAsIGFuZCB0aGV5IHdpbGwgbm90IGJlIHRoZSBzYW1lIGNvZGUuCi0gICogSWYgZW5vdWdoIHBy
b2plY3RzIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGludGVyZmFjZSwgdGhleSBjYW4gYWx3YXlzIHNo
YXJlIGl0LCBqdXN0IGxpa2UgdGhleSBoYXZlIGJlZW4gc2hhcmluZyBgQ29uY3JldGVgLiBZb3Ug
Y2FuIGNoZWNrIGluIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBhZGFwdG9yIHNvbWV3aGVyZSBuZWFy
IGBDb25jcmV0ZWAgKHBlcmhhcHMgaW4gYSBgY29udHJpYmAgc3ViLWRpcmVjdG9yeSkgYW5kIGxl
dCBtYW55IHByb2plY3RzIHVzZSBpdC4KLQotWW91IG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5k
IGNvbnMgY2FyZWZ1bGx5IGZvciB5b3VyIHBhcnRpY3VsYXIKLXByb2JsZW0sIGJ1dCBJJ2QgbGlr
ZSB0byBhc3N1cmUgeW91IHRoYXQgdGhlIEphdmEgY29tbXVuaXR5IGhhcyBiZWVuCi1wcmFjdGlj
aW5nIHRoaXMgZm9yIGEgbG9uZyB0aW1lIGFuZCBpdCdzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNo
bmlxdWUKLWFwcGxpY2FibGUgaW4gYSB3aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gOi0pCi0K
LSMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBGYWtlICMjCi0KLVNvbWUgdGltZXMgeW91IGhhdmUg
YSBub24tdHJpdmlhbCBmYWtlIGltcGxlbWVudGF0aW9uIG9mIGFuCi1pbnRlcmZhY2UuIEZvciBl
eGFtcGxlOgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5Gb28oKSB7
fQotICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBEb1Ro
YXQoY29uc3QgY2hhciogcywgaW50KiBwKSA9IDA7Ci19OwotCi1jbGFzcyBGYWtlRm9vIDogcHVi
bGljIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSB7Ci0gICAg
cmV0dXJuIChuID4gMCkgPyAnKycgOgotICAgICAgICAobiA8IDApID8gJy0nIDogJzAnOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBzLCBpbnQqIHApIHsKLSAgICAq
cCA9IHN0cmxlbihzKTsKLSAgfQotfTsKLWBgYAotCi1Ob3cgeW91IHdhbnQgdG8gbW9jayB0aGlz
IGludGVyZmFjZSBzdWNoIHRoYXQgeW91IGNhbiBzZXQgZXhwZWN0YXRpb25zCi1vbiBpdC4gSG93
ZXZlciwgeW91IGFsc28gd2FudCB0byB1c2UgYEZha2VGb29gIGZvciB0aGUgZGVmYXVsdAotYmVo
YXZpb3IsIGFzIGR1cGxpY2F0aW5nIGl0IGluIHRoZSBtb2NrIG9iamVjdCBpcywgd2VsbCwgYSBs
b3Qgb2YKLXdvcmsuCi0KLVdoZW4geW91IGRlZmluZSB0aGUgbW9jayBjbGFzcyB1c2luZyBHb29n
bGUgTW9jaywgeW91IGNhbiBoYXZlIGl0Ci1kZWxlZ2F0ZSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8g
YSBmYWtlIGNsYXNzIHlvdSBhbHJlYWR5IGhhdmUsIHVzaW5nCi10aGlzIHBhdHRlcm46Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNz
IE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE5vcm1hbCBtb2NrIG1ldGhv
ZCBkZWZpbml0aW9ucyB1c2luZyBHb29nbGUgTW9jay4KLSAgTU9DS19NRVRIT0QxKERvVGhpcywg
Y2hhcihpbnQgbikpOwotICBNT0NLX01FVEhPRDIoRG9UaGF0LCB2b2lkKGNvbnN0IGNoYXIqIHMs
IGludCogcCkpOwotCi0gIC8vIERlbGVnYXRlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBt
ZXRob2RzIHRvIGEgRmFrZUZvbyBvYmplY3QuCi0gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJl
Zm9yZSogdGhlIGN1c3RvbSBPTl9DQUxMKCkgc3RhdGVtZW50cy4KLSAgdm9pZCBEZWxlZ2F0ZVRv
RmFrZSgpIHsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoXykpCi0gICAgICAgIC5XaWxsQnlE
ZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMpKTsKLSAgICBPTl9DQUxMKCp0
aGlzLCBEb1RoYXQoXywgXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8s
ICZGYWtlRm9vOjpEb1RoYXQpKTsKLSAgfQotIHByaXZhdGU6Ci0gIEZha2VGb28gZmFrZV87ICAv
LyBLZWVwcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFrZSBpbiB0aGUgbW9jay4KLX07Ci1gYGAKLQot
V2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBgTW9ja0Zvb2AgaW4geW91ciB0ZXN0cyBhcyB1c3VhbC4g
SnVzdCByZW1lbWJlcgotdGhhdCBpZiB5b3UgZG9uJ3QgZXhwbGljaXRseSBzZXQgYW4gYWN0aW9u
IGluIGFuIGBPTl9DQUxMKClgIG9yCi1gRVhQRUNUX0NBTEwoKWAsIHRoZSBmYWtlIHdpbGwgYmUg
Y2FsbGVkIHVwb24gdG8gZG8gaXQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1URVNU
KEFiY1Rlc3QsIFh5eikgewotICBNb2NrRm9vIGZvbzsKLSAgZm9vLkRlbGVnYXRlVG9GYWtlKCk7
IC8vIEVuYWJsZXMgdGhlIGZha2UgZm9yIGRlbGVnYXRpb24uCi0KLSAgLy8gUHV0IHlvdXIgT05f
Q0FMTChmb28sIC4uLilzIGhlcmUsIGlmIGFueS4KLQotICAvLyBObyBhY3Rpb24gc3BlY2lmaWVk
LCBtZWFuaW5nIHRvIHVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCi0gIEVYUEVDVF9DQUxMKGZvbywg
RG9UaGlzKDUpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXykpOwotCi0gIGludCBu
ID0gMDsKLSAgRVhQRUNUX0VRKCcrJywgZm9vLkRvVGhpcyg1KSk7ICAvLyBGYWtlRm9vOjpEb1Ro
aXMoKSBpcyBpbnZva2VkLgotICBmb28uRG9UaGF0KCJIaSIsICZuKTsgICAgICAgICAgIC8vIEZh
a2VGb286OkRvVGhhdCgpIGlzIGludm9rZWQuCi0gIEVYUEVDVF9FUSgyLCBuKTsKLX0KLWBgYAot
Ci0qKlNvbWUgdGlwczoqKgotCi0gICogSWYgeW91IHdhbnQsIHlvdSBjYW4gc3RpbGwgb3ZlcnJp
ZGUgdGhlIGRlZmF1bHQgYWN0aW9uIGJ5IHByb3ZpZGluZyB5b3VyIG93biBgT05fQ0FMTCgpYCBv
ciB1c2luZyBgLldpbGxPbmNlKClgIC8gYC5XaWxsUmVwZWF0ZWRseSgpYCBpbiBgRVhQRUNUX0NB
TEwoKWAuCi0gICogSW4gYERlbGVnYXRlVG9GYWtlKClgLCB5b3Ugb25seSBuZWVkIHRvIGRlbGVn
YXRlIHRoZSBtZXRob2RzIHdob3NlIGZha2UgaW1wbGVtZW50YXRpb24geW91IGludGVuZCB0byB1
c2UuCi0gICogVGhlIGdlbmVyYWwgdGVjaG5pcXVlIGRpc2N1c3NlZCBoZXJlIHdvcmtzIGZvciBv
dmVybG9hZGVkIG1ldGhvZHMsIGJ1dCB5b3UnbGwgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxlciB3
aGljaCB2ZXJzaW9uIHlvdSBtZWFuLiBUbyBkaXNhbWJpZ3VhdGUgYSBtb2NrIGZ1bmN0aW9uICh0
aGUgb25lIHlvdSBzcGVjaWZ5IGluc2lkZSB0aGUgcGFyZW50aGVzZXMgb2YgYE9OX0NBTEwoKWAp
LCBzZWUgdGhlICJTZWxlY3RpbmcgQmV0d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyIgc2VjdGlv
biBvbiB0aGlzIHBhZ2U7IHRvIGRpc2FtYmlndWF0ZSBhIGZha2UgZnVuY3Rpb24gKHRoZSBvbmUg
eW91IHBsYWNlIGluc2lkZSBgSW52b2tlKClgKSwgdXNlIGEgYHN0YXRpY19jYXN0YCB0byBzcGVj
aWZ5IHRoZSBmdW5jdGlvbidzIHR5cGUuCi0gICogSGF2aW5nIHRvIG1peCBhIG1vY2sgYW5kIGEg
ZmFrZSBpcyBvZnRlbiBhIHNpZ24gb2Ygc29tZXRoaW5nIGdvbmUgd3JvbmcuIFBlcmhhcHMgeW91
IGhhdmVuJ3QgZ290IHVzZWQgdG8gdGhlIGludGVyYWN0aW9uLWJhc2VkIHdheSBvZiB0ZXN0aW5n
IHlldC4gT3IgcGVyaGFwcyB5b3VyIGludGVyZmFjZSBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9s
ZXMgYW5kIHNob3VsZCBiZSBzcGxpdCB1cC4gVGhlcmVmb3JlLCAqKmRvbid0IGFidXNlIHRoaXMq
Ki4gV2Ugd291bGQgb25seSByZWNvbW1lbmQgdG8gZG8gaXQgYXMgYW4gaW50ZXJtZWRpYXRlIHN0
ZXAgd2hlbiB5b3UgYXJlIHJlZmFjdG9yaW5nIHlvdXIgY29kZS4KLQotUmVnYXJkaW5nIHRoZSB0
aXAgb24gbWl4aW5nIGEgbW9jayBhbmQgYSBmYWtlLCBoZXJlJ3MgYW4gZXhhbXBsZSBvbgotd2h5
IGl0IG1heSBiZSBhIGJhZCBzaWduOiBTdXBwb3NlIHlvdSBoYXZlIGEgY2xhc3MgYFN5c3RlbWAg
Zm9yCi1sb3ctbGV2ZWwgc3lzdGVtIG9wZXJhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGRvZXMg
ZmlsZSBhbmQgSS9PCi1vcGVyYXRpb25zLiBBbmQgc3VwcG9zZSB5b3Ugd2FudCB0byB0ZXN0IGhv
dyB5b3VyIGNvZGUgdXNlcyBgU3lzdGVtYAotdG8gZG8gSS9PLCBhbmQgeW91IGp1c3Qgd2FudCB0
aGUgZmlsZSBvcGVyYXRpb25zIHRvIHdvcmsgbm9ybWFsbHkuIElmCi15b3UgbW9jayBvdXQgdGhl
IGVudGlyZSBgU3lzdGVtYCBjbGFzcywgeW91J2xsIGhhdmUgdG8gcHJvdmlkZSBhIGZha2UKLWlt
cGxlbWVudGF0aW9uIGZvciB0aGUgZmlsZSBvcGVyYXRpb24gcGFydCwgd2hpY2ggc3VnZ2VzdHMg
dGhhdAotYFN5c3RlbWAgaXMgdGFraW5nIG9uIHRvbyBtYW55IHJvbGVzLgotCi1JbnN0ZWFkLCB5
b3UgY2FuIGRlZmluZSBhIGBGaWxlT3BzYCBpbnRlcmZhY2UgYW5kIGFuIGBJT09wc2AgaW50ZXJm
YWNlCi1hbmQgc3BsaXQgYFN5c3RlbWAncyBmdW5jdGlvbmFsaXRpZXMgaW50byB0aGUgdHdvLiBU
aGVuIHlvdSBjYW4gbW9jawotYElPT3BzYCB3aXRob3V0IG1vY2tpbmcgYEZpbGVPcHNgLgotCi0j
IyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUmVhbCBPYmplY3QgIyMKLQotV2hlbiB1c2luZyB0ZXN0
aW5nIGRvdWJsZXMgKG1vY2tzLCBmYWtlcywgc3R1YnMsIGFuZCBldGMpLCBzb21ldGltZXMKLXRo
ZWlyIGJlaGF2aW9ycyB3aWxsIGRpZmZlciBmcm9tIHRob3NlIG9mIHRoZSByZWFsIG9iamVjdHMu
IFRoaXMKLWRpZmZlcmVuY2UgY291bGQgYmUgZWl0aGVyIGludGVudGlvbmFsIChhcyBpbiBzaW11
bGF0aW5nIGFuIGVycm9yIHN1Y2gKLXRoYXQgeW91IGNhbiB0ZXN0IHRoZSBlcnJvciBoYW5kbGlu
ZyBjb2RlKSBvciB1bmludGVudGlvbmFsLiBJZiB5b3VyCi1tb2NrcyBoYXZlIGRpZmZlcmVudCBi
ZWhhdmlvcnMgdGhhbiB0aGUgcmVhbCBvYmplY3RzIGJ5IG1pc3Rha2UsIHlvdQotY291bGQgZW5k
IHVwIHdpdGggY29kZSB0aGF0IHBhc3NlcyB0aGUgdGVzdHMgYnV0IGZhaWxzIGluIHByb2R1Y3Rp
b24uCi0KLVlvdSBjYW4gdXNlIHRoZSBfZGVsZWdhdGluZy10by1yZWFsXyB0ZWNobmlxdWUgdG8g
ZW5zdXJlIHRoYXQgeW91cgotbW9jayBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIHJlYWwg
b2JqZWN0IHdoaWxlIHJldGFpbmluZyB0aGUKLWFiaWxpdHkgdG8gdmFsaWRhdGUgY2FsbHMuIFRo
aXMgdGVjaG5pcXVlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKLWRlbGVnYXRpbmctdG8tZmFrZSB0
ZWNobmlxdWUsIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHRoYXQgd2UgdXNlIGEgcmVhbAotb2JqZWN0
IGluc3RlYWQgb2YgYSBmYWtlLiBIZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Oklu
dm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTW9ja0Zv
bygpIHsKLSAgICAvLyBCeSBkZWZhdWx0LCBhbGwgY2FsbHMgYXJlIGRlbGVnYXRlZCB0byB0aGUg
cmVhbCBvYmplY3QuCi0gICAgT05fQ0FMTCgqdGhpcywgRG9UaGlzKCkpCi0gICAgICAgIC5XaWxs
QnlEZWZhdWx0KEludm9rZSgmcmVhbF8sICZGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRo
aXMsIERvVGhhdChfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZv
bzo6RG9UaGF0KSk7Ci0gICAgLi4uCi0gIH0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgLi4uKTsK
LSAgTU9DS19NRVRIT0QxKERvVGhhdCwgLi4uKTsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgRm9vIHJl
YWxfOwotfTsKLS4uLgotCi0gIE1vY2tGb28gbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBE
b1RoaXMoKSkKLSAgICAgIC5UaW1lcygzKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGF0KCJI
aSIpKQotICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwotICAuLi4gdXNlIG1vY2sgaW4gdGVzdCAu
Li4KLWBgYAotCi1XaXRoIHRoaXMsIEdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoYXQgeW91ciBj
b2RlIG1hZGUgdGhlIHJpZ2h0IGNhbGxzCi0od2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLCBpbiB0
aGUgcmlnaHQgb3JkZXIsIGNhbGxlZCB0aGUgcmlnaHQgbnVtYmVyCi1vZiB0aW1lcywgZXRjKSwg
YW5kIGEgcmVhbCBvYmplY3Qgd2lsbCBhbnN3ZXIgdGhlIGNhbGxzIChzbyB0aGUKLWJlaGF2aW9y
IHdpbGwgYmUgdGhlIHNhbWUgYXMgaW4gcHJvZHVjdGlvbikuIFRoaXMgZ2l2ZXMgeW91IHRoZSBi
ZXN0Ci1vZiBib3RoIHdvcmxkcy4KLQotIyMgRGVsZWdhdGluZyBDYWxscyB0byBhIFBhcmVudCBD
bGFzcyAjIwotCi1JZGVhbGx5LCB5b3Ugc2hvdWxkIGNvZGUgdG8gaW50ZXJmYWNlcywgd2hvc2Ug
bWV0aG9kcyBhcmUgYWxsIHB1cmUKLXZpcnR1YWwuIEluIHJlYWxpdHksIHNvbWV0aW1lcyB5b3Ug
ZG8gbmVlZCB0byBtb2NrIGEgdmlydHVhbCBtZXRob2QKLXRoYXQgaXMgbm90IHB1cmUgKGkuZSwg
aXQgYWxyZWFkeSBoYXMgYW4gaW1wbGVtZW50YXRpb24pLiBGb3IgZXhhbXBsZToKLQotYGBgCi1j
bGFzcyBGb28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgdmlydHVhbCB2b2lk
IFB1cmUoaW50IG4pID0gMDsKLSAgdmlydHVhbCBpbnQgQ29uY3JldGUoY29uc3QgY2hhciogc3Ry
KSB7IC4uLiB9Ci19OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgot
ICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGlu
dCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkg
aXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0
cikpOwotfTsKLWBgYAotCi1Tb21ldGltZXMgeW91IG1heSB3YW50IHRvIGNhbGwgYEZvbzo6Q29u
Y3JldGUoKWAgaW5zdGVhZCBvZgotYE1vY2tGb286OkNvbmNyZXRlKClgLiBQZXJoYXBzIHlvdSB3
YW50IHRvIGRvIGl0IGFzIHBhcnQgb2YgYSBzdHViCi1hY3Rpb24sIG9yIHBlcmhhcHMgeW91ciB0
ZXN0IGRvZXNuJ3QgbmVlZCB0byBtb2NrIGBDb25jcmV0ZSgpYCBhdCBhbGwKLShidXQgaXQgd291
bGQgYmUgb2gtc28gcGFpbmZ1bCB0byBoYXZlIHRvIGRlZmluZSBhIG5ldyBtb2NrIGNsYXNzCi13
aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0byBtb2NrIG9uZSBvZiBpdHMgbWV0aG9kcykuCi0KLVRo
ZSB0cmljayBpcyB0byBsZWF2ZSBhIGJhY2sgZG9vciBpbiB5b3VyIG1vY2sgY2xhc3MgZm9yIGFj
Y2Vzc2luZyB0aGUKLXJlYWwgbWV0aG9kcyBpbiB0aGUgYmFzZSBjbGFzczoKLQotYGBgCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBt
ZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcg
YSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tf
TUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwotCi0gIC8vIFVzZSB0aGlz
IHRvIGNhbGwgQ29uY3JldGUoKSBkZWZpbmVkIGluIEZvby4KLSAgaW50IEZvb0NvbmNyZXRlKGNv
bnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRm9vOjpDb25jcmV0ZShzdHIpOyB9Ci19OwotYGBgCi0K
LU5vdywgeW91IGNhbiBjYWxsIGBGb286OkNvbmNyZXRlKClgIGluc2lkZSBhbiBhY3Rpb24gYnk6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0u
Li4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKLSAgICAgIC5XaWxsT25jZShJbnZv
a2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Ci1gYGAKLQotb3IgdGVsbCB0aGUgbW9j
ayBvYmplY3QgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBtb2NrIGBDb25jcmV0ZSgpYDoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLS4uLgotICBPTl9DQUxMKGZvbywgQ29uY3JldGUo
XykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNy
ZXRlKSk7Ci1gYGAKLQotKFdoeSBkb24ndCB3ZSBqdXN0IHdyaXRlIGBJbnZva2UoJmZvbywgJkZv
bzo6Q29uY3JldGUpYD8gSWYgeW91IGRvCi10aGF0LCBgTW9ja0Zvbzo6Q29uY3JldGUoKWAgd2ls
bCBiZSBjYWxsZWQgKGFuZCBjYXVzZSBhbiBpbmZpbml0ZQotcmVjdXJzaW9uKSBzaW5jZSBgRm9v
OjpDb25jcmV0ZSgpYCBpcyB2aXJ0dWFsLiBUaGF0J3MganVzdCBob3cgQysrCi13b3Jrcy4pCi0K
LSMgVXNpbmcgTWF0Y2hlcnMgIwotCi0jIyBNYXRjaGluZyBBcmd1bWVudCBWYWx1ZXMgRXhhY3Rs
eSAjIwotCi1Zb3UgY2FuIHNwZWNpZnkgZXhhY3RseSB3aGljaCBhcmd1bWVudHMgYSBtb2NrIG1l
dGhvZCBpcyBleHBlY3Rpbmc6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4K
LSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdh
JykpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBiYXIpKTsKLWBgYAotCi0j
IyBVc2luZyBTaW1wbGUgTWF0Y2hlcnMgIyMKLQotWW91IGNhbiB1c2UgbWF0Y2hlcnMgdG8gbWF0
Y2ggYXJndW1lbnRzIHRoYXQgaGF2ZSBhIGNlcnRhaW4gcHJvcGVydHk6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEdlKDUpKSkgIC8vIFRo
ZSBhcmd1bWVudCBtdXN0IGJlID49IDUuCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBOb3ROdWxsKCkpKTsKLSAgLy8gVGhl
IHNlY29uZCBhcmd1bWVudCBtdXN0IG5vdCBiZSBOVUxMLgotYGBgCi0KLUEgZnJlcXVlbnRseSB1
c2VkIG1hdGNoZXIgaXMgYF9gLCB3aGljaCBtYXRjaGVzIGFueXRoaW5nOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLS4uLgotICBFWFBFQ1Rf
Q0FMTChmb28sIERvVGhhdChfLCBOb3ROdWxsKCkpKTsKLWBgYAotCi0jIyBDb21iaW5pbmcgTWF0
Y2hlcnMgIyMKLQotWW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gZXhpc3Rpbmcg
b25lcyB1c2luZyBgQWxsT2YoKWAsCi1gQW55T2YoKWAsIGFuZCBgTm90KClgOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0
aW5nOjpIYXNTdWJzdHI7Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotdXNpbmcgOjp0ZXN0aW5nOjpO
b3Q7Ci0uLi4KLSAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUgPiA1IGFuZCAhPSAxMC4KLSAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoaXMoQWxsT2YoR3QoNSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5lKDEwKSkpKTsKLQotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3Qg
Y29udGFpbiBzdWItc3RyaW5nICJibGFoIi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoTm90
KEhhc1N1YnN0cigiYmxhaCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwot
YGBgCi0KLSMjIENhc3RpbmcgTWF0Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJl
IHN0YXRpY2FsbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUgY29tcGlsZXIKLWNhbiBjYXRjaCB5
b3VyIG1pc3Rha2UgaWYgeW91IHVzZSBhIG1hdGNoZXIgb2YgdGhlIHdyb25nIHR5cGUgKGZvcgot
ZXhhbXBsZSwgaWYgeW91IHVzZSBgRXEoNSlgIHRvIG1hdGNoIGEgYHN0cmluZ2AgYXJndW1lbnQp
LiBHb29kIGZvcgoteW91IQotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHlvdSBrbm93IHdoYXQgeW91
J3JlIGRvaW5nIGFuZCB3YW50IHRoZSBjb21waWxlcgotdG8gZ2l2ZSB5b3Ugc29tZSBzbGFjay4g
T25lIGV4YW1wbGUgaXMgdGhhdCB5b3UgaGF2ZSBhIG1hdGNoZXIgZm9yCi1gbG9uZ2AgYW5kIHRo
ZSBhcmd1bWVudCB5b3Ugd2FudCB0byBtYXRjaCBpcyBgaW50YC4gV2hpbGUgdGhlIHR3bwotdHlw
ZXMgYXJlbid0IGV4YWN0bHkgdGhlIHNhbWUsIHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHdyb25n
IHdpdGgKLXVzaW5nIGEgYE1hdGNoZXI8bG9uZz5gIHRvIG1hdGNoIGFuIGBpbnRgIC0gYWZ0ZXIg
YWxsLCB3ZSBjYW4gZmlyc3QKLWNvbnZlcnQgdGhlIGBpbnRgIGFyZ3VtZW50IHRvIGEgYGxvbmdg
IGJlZm9yZSBnaXZpbmcgaXQgdG8gdGhlCi1tYXRjaGVyLgotCi1UbyBzdXBwb3J0IHRoaXMgbmVl
ZCwgR29vZ2xlIE1vY2sgZ2l2ZXMgeW91IHRoZQotYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgZnVu
Y3Rpb24uIEl0IGNhc3RzIGEgbWF0Y2hlciBgbWAgdG8gdHlwZQotYE1hdGNoZXI8VD5gLiBUbyBl
bnN1cmUgc2FmZXR5LCBHb29nbGUgTW9jayBjaGVja3MgdGhhdCAobGV0IGBVYCBiZSB0aGUKLXR5
cGUgYG1gIGFjY2VwdHMpOgotCi0gIDEuIFR5cGUgYFRgIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3Qg
dG8gdHlwZSBgVWA7Ci0gIDEuIFdoZW4gYm90aCBgVGAgYW5kIGBVYCBhcmUgYnVpbHQtaW4gYXJp
dGhtZXRpYyB0eXBlcyAoYGJvb2xgLCBpbnRlZ2VycywgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMpLCB0aGUgY29udmVyc2lvbiBmcm9tIGBUYCB0byBgVWAgaXMgbm90IGxvc3N5IChpbiBvdGhl
ciB3b3JkcywgYW55IHZhbHVlIHJlcHJlc2VudGFibGUgYnkgYFRgIGNhbiBhbHNvIGJlIHJlcHJl
c2VudGVkIGJ5IGBVYCk7IGFuZAotICAxLiBXaGVuIGBVYCBpcyBhIHJlZmVyZW5jZSwgYFRgIG11
c3QgYWxzbyBiZSBhIHJlZmVyZW5jZSAoYXMgdGhlIHVuZGVybHlpbmcgbWF0Y2hlciBtYXkgYmUg
aW50ZXJlc3RlZCBpbiB0aGUgYWRkcmVzcyBvZiB0aGUgYFVgIHZhbHVlKS4KLQotVGhlIGNvZGUg
d29uJ3QgY29tcGlsZSBpZiBhbnkgb2YgdGhlc2UgY29uZGl0aW9ucyBpc24ndCBtZXQuCi0KLUhl
cmUncyBvbmUgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2Fz
dDsKLQotLy8gQSBiYXNlIGNsYXNzIGFuZCBhIGNoaWxkIGNsYXNzLgotY2xhc3MgQmFzZSB7IC4u
LiB9OwotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsgLi4uIH07Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIHZvaWQo
RGVyaXZlZCogZGVyaXZlZCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICAvLyBtIGlz
IGEgTWF0Y2hlcjxCYXNlKj4gd2UgZ290IGZyb20gc29tZXdoZXJlLgotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyhTYWZlTWF0Y2hlckNhc3Q8RGVyaXZlZCo+KG0pKSk7Ci1gYGAKLQotSWYgeW91
IGZpbmQgYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgdG9vIGxpbWl0aW5nLCB5b3UgY2FuIHVzZSBh
IHNpbWlsYXIKLWZ1bmN0aW9uIGBNYXRjaGVyQ2FzdDxUPihtKWAuIFRoZSBkaWZmZXJlbmNlIGlz
IHRoYXQgYE1hdGNoZXJDYXN0YCB3b3JrcwotYXMgbG9uZyBhcyB5b3UgY2FuIGBzdGF0aWNfY2Fz
dGAgdHlwZSBgVGAgdG8gdHlwZSBgVWAuCi0KLWBNYXRjaGVyQ2FzdGAgZXNzZW50aWFsbHkgbGV0
cyB5b3UgYnlwYXNzIEMrKydzIHR5cGUgc3lzdGVtCi0oYHN0YXRpY19jYXN0YCBpc24ndCBhbHdh
eXMgc2FmZSBhcyBpdCBjb3VsZCB0aHJvdyBhd2F5IGluZm9ybWF0aW9uLAotZm9yIGV4YW1wbGUp
LCBzbyBiZSBjYXJlZnVsIG5vdCB0byBtaXN1c2UvYWJ1c2UgaXQuCi0KLSMjIFNlbGVjdGluZyBC
ZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zICMjCi0KLUlmIHlvdSBleHBlY3QgYW4gb3Zlcmxv
YWRlZCBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIHRoZSBjb21waWxlciBtYXkKLW5lZWQgc29tZSBo
ZWxwIG9uIHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiBpdCBpcy4KLQotVG8gZGlzYW1iaWd1YXRl
IGZ1bmN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LAot
dXNlIHRoZSBgQ29uc3QoKWAgYXJndW1lbnQgd3JhcHBlci4KLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAg
TU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJh
ciwgY29uc3QgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjEs
IGJhcjI7Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0QmFyKCkpICAgICAgICAgLy8gVGhlIG5vbi1j
b25zdCBHZXRCYXIoKS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMSkpOwotICBFWFBF
Q1RfQ0FMTChDb25zdChmb28pLCBHZXRCYXIoKSkgIC8vIFRoZSBjb25zdCBHZXRCYXIoKS4KLSAg
ICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMikpOwotYGBgCi0KLShgQ29uc3QoKWAgaXMgZGVm
aW5lZCBieSBHb29nbGUgTW9jayBhbmQgcmV0dXJucyBhIGBjb25zdGAgcmVmZXJlbmNlCi10byBp
dHMgYXJndW1lbnQuKQotCi1UbyBkaXNhbWJpZ3VhdGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgd2l0
aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzCi1idXQgZGlmZmVyZW50IGFyZ3VtZW50IHR5
cGVzLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgZXhhY3QgdHlwZQotb2YgYSBtYXRjaGVy
LCBlaXRoZXIgYnkgd3JhcHBpbmcgeW91ciBtYXRjaGVyIGluIGBNYXRjaGVyPHR5cGU+KClgLCBv
cgotdXNpbmcgYSBtYXRjaGVyIHdob3NlIHR5cGUgaXMgZml4ZWQgKGBUeXBlZEVxPHR5cGU+YCwg
YEFuPHR5cGU+KClgLAotZXRjKToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFuOwotdXNpbmcg
Ojp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGlu
Zzo6VHlwZWRFcTsKLQotY2xhc3MgTW9ja1ByaW50ZXIgOiBwdWJsaWMgUHJpbnRlciB7Ci0gcHVi
bGljOgotICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0Qx
KFByaW50LCB2b2lkKGNoYXIgYykpOwotfTsKLQotVEVTVChQcmludGVyVGVzdCwgUHJpbnQpIHsK
LSAgTW9ja1ByaW50ZXIgcHJpbnRlcjsKLQotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChB
bjxpbnQ+KCkpKTsgICAgICAgICAgICAvLyB2b2lkIFByaW50KGludCk7Ci0gIEVYUEVDVF9DQUxM
KHByaW50ZXIsIFByaW50KE1hdGNoZXI8aW50PihMdCg1KSkpKTsgIC8vIHZvaWQgUHJpbnQoaW50
KTsKLSAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoVHlwZWRFcTxjaGFyPignYScpKSk7ICAg
Ly8gdm9pZCBQcmludChjaGFyKTsKLQotICBwcmludGVyLlByaW50KDMpOwotICBwcmludGVyLlBy
aW50KDYpOwotICBwcmludGVyLlByaW50KCdhJyk7Ci19Ci1gYGAKLQotIyMgUGVyZm9ybWluZyBE
aWZmZXJlbnQgQWN0aW9ucyBCYXNlZCBvbiB0aGUgQXJndW1lbnRzICMjCi0KLVdoZW4gYSBtb2Nr
IG1ldGhvZCBpcyBjYWxsZWQsIHRoZSBfbGFzdF8gbWF0Y2hpbmcgZXhwZWN0YXRpb24gdGhhdCdz
Ci1zdGlsbCBhY3RpdmUgd2lsbCBiZSBzZWxlY3RlZCAodGhpbmsgIm5ld2VyIG92ZXJyaWRlcyBv
bGRlciIpLiBTbywgeW91Ci1jYW4gbWFrZSBhIG1ldGhvZCBkbyBkaWZmZXJlbnQgdGhpbmdzIGRl
cGVuZGluZyBvbiBpdHMgYXJndW1lbnQgdmFsdWVzCi1saWtlIHRoaXM6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOwotLi4uCi0gIC8vIFRoZSBkZWZhdWx0IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9U
aGlzKF8pKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybignYicpKTsKLQotICAvLyBUaGUg
bW9yZSBzcGVjaWZpYyBjYXNlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhMdCg1KSkpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdhJykpOwotYGBgCi0KLU5vdywgaWYgYGZvby5E
b1RoaXMoKWAgaXMgY2FsbGVkIHdpdGggYSB2YWx1ZSBsZXNzIHRoYW4gNSwgYCdhJ2Agd2lsbAot
YmUgcmV0dXJuZWQ7IG90aGVyd2lzZSBgJ2InYCB3aWxsIGJlIHJldHVybmVkLgotCi0jIyBNYXRj
aGluZyBNdWx0aXBsZSBBcmd1bWVudHMgYXMgYSBXaG9sZSAjIwotCi1Tb21ldGltZXMgaXQncyBu
b3QgZW5vdWdoIHRvIG1hdGNoIHRoZSBhcmd1bWVudHMgaW5kaXZpZHVhbGx5LiBGb3IKLWV4YW1w
bGUsIHdlIG1heSB3YW50IHRvIHNheSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGxl
c3MgdGhhbgotdGhlIHNlY29uZCBhcmd1bWVudC4gVGhlIGBXaXRoKClgIGNsYXVzZSBhbGxvd3Mg
dXMgdG8gbWF0Y2gKLWFsbCBhcmd1bWVudHMgb2YgYSBtb2NrIGZ1bmN0aW9uIGFzIGEgd2hvbGUu
IEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGlu
Zzo6THQ7Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgSW5S
YW5nZShOZSgwKSwgXykpCi0gICAgICAuV2l0aChMdCgpKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhl
IGZpcnN0IGFyZ3VtZW50IG9mIGBJblJhbmdlKClgIG11c3Qgbm90IGJlIDAsIGFuZCBtdXN0IGJl
Ci1sZXNzIHRoYW4gdGhlIHNlY29uZCBhcmd1bWVudC4KLQotVGhlIGV4cHJlc3Npb24gaW5zaWRl
IGBXaXRoKClgIG11c3QgYmUgYSBtYXRjaGVyIG9mIHR5cGUKLWBNYXRjaGVyPHRyMTo6dHVwbGU8
QTEsIC4uLiwgQW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBBbmAgYXJlIHRoZQotdHlwZXMgb2Yg
dGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLQotWW91IGNhbiBhbHNvIHdyaXRlIGBBbGxBcmdzKG0p
YCBpbnN0ZWFkIG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBUaGUKLXR3byBmb3JtcyBhcmUgZXF1
aXZhbGVudCwgYnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAgaXMgbW9yZSByZWFkYWJsZQotdGhh
biBgLldpdGgoTHQoKSlgLgotCi1Zb3UgY2FuIHVzZSBgQXJnczxrMSwgLi4uLCBrbj4obSlgIHRv
IG1hdGNoIHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCi0oYXMgYSB0dXBsZSkgYWdhaW5zdCBg
bWAuIEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVz
dGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6OkFyZ3M7Ci11c2luZyA6OnRlc3Rpbmc6Okx0
OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmxhaChfLCBfLCBfKSkKLSAgICAgIC5XaXRoKEFs
bE9mKEFyZ3M8MCwgMT4oTHQoKSksIEFyZ3M8MSwgMj4oTHQoKSkpKTsKLWBgYAotCi1zYXlzIHRo
YXQgYEJsYWgoKWAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgYHhgLCBgeWAsIGFuZCBg
emAgd2hlcmUKLWB4IDwgeSA8IHpgLgotCi1BcyBhIGNvbnZlbmllbmNlIGFuZCBleGFtcGxlLCBH
b29nbGUgTW9jayBwcm92aWRlcyBzb21lIG1hdGNoZXJzIGZvcgotMi10dXBsZXMsIGluY2x1ZGlu
ZyB0aGUgYEx0KClgIG1hdGNoZXIgYWJvdmUuIFNlZSB0aGUgW0NoZWF0U2hlZXRdKFYxXzZfQ2hl
YXRTaGVldC5tZCkgZm9yCi10aGUgY29tcGxldGUgbGlzdC4KLQotTm90ZSB0aGF0IGlmIHlvdSB3
YW50IHRvIHBhc3MgdGhlIGFyZ3VtZW50cyB0byBhIHByZWRpY2F0ZSBvZiB5b3VyIG93bgotKGUu
Zy4gYC5XaXRoKEFyZ3M8MCwgMT4oVHJ1bHkoJk15UHJlZGljYXRlKSkpYCksIHRoYXQgcHJlZGlj
YXRlIE1VU1QgYmUKLXdyaXR0ZW4gdG8gdGFrZSBhIGB0cjE6OnR1cGxlYCBhcyBpdHMgYXJndW1l
bnQ7IEdvb2dsZSBNb2NrIHdpbGwgcGFzcyB0aGUgYG5gCi1zZWxlY3RlZCBhcmd1bWVudHMgYXMg
X29uZV8gc2luZ2xlIHR1cGxlIHRvIHRoZSBwcmVkaWNhdGUuCi0KLSMjIFVzaW5nIE1hdGNoZXJz
IGFzIFByZWRpY2F0ZXMgIyMKLQotSGF2ZSB5b3Ugbm90aWNlZCB0aGF0IGEgbWF0Y2hlciBpcyBq
dXN0IGEgZmFuY3kgcHJlZGljYXRlIHRoYXQgYWxzbwota25vd3MgaG93IHRvIGRlc2NyaWJlIGl0
c2VsZj8gTWFueSBleGlzdGluZyBhbGdvcml0aG1zIHRha2UgcHJlZGljYXRlcwotYXMgYXJndW1l
bnRzIChlLmcuIHRob3NlIGRlZmluZWQgaW4gU1RMJ3MgYDxhbGdvcml0aG0+YCBoZWFkZXIpLCBh
bmQKLWl0IHdvdWxkIGJlIGEgc2hhbWUgaWYgR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIG5vdCBh
bGxvd2VkIHRvCi1wYXJ0aWNpcGF0ZS4KLQotTHVja2lseSwgeW91IGNhbiB1c2UgYSBtYXRjaGVy
IHdoZXJlIGEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IgaXMKLWV4cGVjdGVkIGJ5IHdyYXBwaW5n
IGl0IGluc2lkZSB0aGUgYE1hdGNoZXMoKWAgZnVuY3Rpb24uIEZvciBleGFtcGxlLAotCi1gYGAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1zdGQ6OnZlY3Rvcjxp
bnQ+IHY7Ci0uLi4KLS8vIEhvdyBtYW55IGVsZW1lbnRzIGluIHYgYXJlID49IDEwPwotY29uc3Qg
aW50IGNvdW50ID0gY291bnRfaWYodi5iZWdpbigpLCB2LmVuZCgpLCBNYXRjaGVzKEdlKDEwKSkp
OwotYGBgCi0KLVNpbmNlIHlvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVycyBmcm9tIHNpbXBs
ZXIgb25lcyBlYXNpbHkgdXNpbmcKLUdvb2dsZSBNb2NrLCB0aGlzIGdpdmVzIHlvdSBhIHdheSB0
byBjb252ZW5pZW50bHkgY29uc3RydWN0IGNvbXBvc2l0ZQotcHJlZGljYXRlcyAoZG9pbmcgdGhl
IHNhbWUgdXNpbmcgU1RMJ3MgYDxmdW5jdGlvbmFsPmAgaGVhZGVyIGlzIGp1c3QKLXBhaW5mdWwp
LiBGb3IgZXhhbXBsZSwgaGVyZSdzIGEgcHJlZGljYXRlIHRoYXQncyBzYXRpc2ZpZWQgYnkgYW55
Ci1udW1iZXIgdGhhdCBpcyA+PSAwLCA8PSAxMDAsIGFuZCAhPSA1MDoKLQotYGBgCi1NYXRjaGVz
KEFsbE9mKEdlKDApLCBMZSgxMDApLCBOZSg1MCkpKQotYGBgCi0KLSMjIFVzaW5nIE1hdGNoZXJz
IGluIEdvb2dsZSBUZXN0IEFzc2VydGlvbnMgIyMKLQotU2luY2UgbWF0Y2hlcnMgYXJlIGJhc2lj
YWxseSBwcmVkaWNhdGVzIHRoYXQgYWxzbyBrbm93IGhvdyB0byBkZXNjcmliZQotdGhlbXNlbHZl
cywgdGhlcmUgaXMgYSB3YXkgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlbSBpbgotW0dvb2dsZSBU
ZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMuIEl0
J3MKLWNhbGxlZCBgQVNTRVJUX1RIQVRgIGFuZCBgRVhQRUNUX1RIQVRgOgotCi1gYGAKLSAgQVNT
RVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gQXNzZXJ0cyB0aGF0IHZhbHVlIG1hdGNoZXMg
bWF0Y2hlci4KLSAgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gVGhlIG5vbi1mYXRh
bCB2ZXJzaW9uLgotYGBgCi0KLUZvciBleGFtcGxlLCBpbiBhIEdvb2dsZSBUZXN0IHRlc3QgeW91
IGNhbiB3cml0ZToKLQotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotdXNpbmcgOjp0
ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6R2U7Ci11c2luZyA6OnRlc3Rpbmc6Okxl
OwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVzUmVnZXg7Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXJ0
c1dpdGg7Ci0uLi4KLQotICBFWFBFQ1RfVEhBVChGb28oKSwgU3RhcnRzV2l0aCgiSGVsbG8iKSk7
Ci0gIEVYUEVDVF9USEFUKEJhcigpLCBNYXRjaGVzUmVnZXgoIkxpbmUgXFxkKyIpKTsKLSAgQVNT
RVJUX1RIQVQoQmF6KCksIEFsbE9mKEdlKDUpLCBMZSgxMCkpKTsKLWBgYAotCi13aGljaCAoYXMg
eW91IGNhbiBwcm9iYWJseSBndWVzcykgZXhlY3V0ZXMgYEZvbygpYCwgYEJhcigpYCwgYW5kCi1g
QmF6KClgLCBhbmQgdmVyaWZpZXMgdGhhdDoKLQotICAqIGBGb28oKWAgcmV0dXJucyBhIHN0cmlu
ZyB0aGF0IHN0YXJ0cyB3aXRoIGAiSGVsbG8iYC4KLSAgKiBgQmFyKClgIHJldHVybnMgYSBzdHJp
bmcgdGhhdCBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBgIkxpbmUgXFxkKyJgLgotICAqIGBC
YXooKWAgcmV0dXJucyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzUsIDEwXS4KLQotVGhlIG5pY2Ug
dGhpbmcgYWJvdXQgdGhlc2UgbWFjcm9zIGlzIHRoYXQgX3RoZXkgcmVhZCBsaWtlCi1FbmdsaXNo
Xy4gVGhleSBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdlcyB0b28uIEZvciBleGFtcGxlLCBp
ZiB0aGUKLWZpcnN0IGBFWFBFQ1RfVEhBVCgpYCBhYm92ZSBmYWlscywgdGhlIG1lc3NhZ2Ugd2ls
bCBiZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi1WYWx1ZSBvZjogRm9vKCkKLSAgQWN0dWFsOiAi
SGksIHdvcmxkISIKLUV4cGVjdGVkOiBzdGFydHMgd2l0aCAiSGVsbG8iCi1gYGAKLQotKipDcmVk
aXQ6KiogVGhlIGlkZWEgb2YgYChBU1NFUlR8RVhQRUNUKV9USEFUYCB3YXMgc3RvbGVuIGZyb20g
dGhlCi1bSGFtY3Jlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9oYW1jcmVzdC8pIHByb2pl
Y3QsIHdoaWNoIGFkZHMKLWBhc3NlcnRUaGF0KClgIHRvIEpVbml0LgotCi0jIyBVc2luZyBQcmVk
aWNhdGVzIGFzIE1hdGNoZXJzICMjCi0KLUdvb2dsZSBNb2NrIHByb3ZpZGVzIGEgYnVpbHQtaW4g
c2V0IG9mIG1hdGNoZXJzLiBJbiBjYXNlIHlvdSBmaW5kIHRoZW0KLWxhY2tpbmcsIHlvdSBjYW4g
dXNlIGFuIGFyYml0cmF5IHVuYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yCi1hcyBh
IG1hdGNoZXIgLSBhcyBsb25nIGFzIHRoZSBwcmVkaWNhdGUgYWNjZXB0cyBhIHZhbHVlIG9mIHRo
ZSB0eXBlCi15b3Ugd2FudC4gWW91IGRvIHRoaXMgYnkgd3JhcHBpbmcgdGhlIHByZWRpY2F0ZSBp
bnNpZGUgdGhlIGBUcnVseSgpYAotZnVuY3Rpb24sIGZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6VHJ1bHk7Ci0KLWludCBJc0V2ZW4oaW50IG4pIHsgcmV0dXJuIChuICUgMikg
PT0gMCA/IDEgOiAwOyB9Ci0uLi4KLQotICAvLyBCYXIoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGFu
IGV2ZW4gbnVtYmVyLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihUcnVseShJc0V2ZW4pKSk7Ci1g
YGAKLQotTm90ZSB0aGF0IHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gLyBmdW5jdG9yIGRvZXNuJ3Qg
aGF2ZSB0byByZXR1cm4KLWBib29sYC4gSXQgd29ya3MgYXMgbG9uZyBhcyB0aGUgcmV0dXJuIHZh
bHVlIGNhbiBiZSB1c2VkIGFzIHRoZQotY29uZGl0aW9uIGluIHN0YXRlbWVudCBgaWYgKGNvbmRp
dGlvbikgLi4uYC4KLQotIyMgTWF0Y2hpbmcgQXJndW1lbnRzIHRoYXQgQXJlIE5vdCBDb3B5YWJs
ZSAjIwotCi1XaGVuIHlvdSBkbyBhbiBgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhiYXIpKWAs
IEdvb2dsZSBNb2NrIHNhdmVzCi1hd2F5IGEgY29weSBvZiBgYmFyYC4gV2hlbiBgRm9vKClgIGlz
IGNhbGxlZCBsYXRlciwgR29vZ2xlIE1vY2sKLWNvbXBhcmVzIHRoZSBhcmd1bWVudCB0byBgRm9v
KClgIHdpdGggdGhlIHNhdmVkIGNvcHkgb2YgYGJhcmAuIFRoaXMKLXdheSwgeW91IGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgYGJhcmAgYmVpbmcgbW9kaWZpZWQgb3IgZGVzdHJveWVkCi1hZnRl
ciB0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4g
eW91IHVzZQotbWF0Y2hlcnMgbGlrZSBgRXEoYmFyKWAsIGBMZShiYXIpYCwgYW5kIHNvIG9uLgot
Ci1CdXQgd2hhdCBpZiBgYmFyYCBjYW5ub3QgYmUgY29waWVkIChpLmUuIGhhcyBubyBjb3B5IGNv
bnN0cnVjdG9yKT8gWW91Ci1jb3VsZCBkZWZpbmUgeW91ciBvd24gbWF0Y2hlciBmdW5jdGlvbiBh
bmQgdXNlIGl0IHdpdGggYFRydWx5KClgLCBhcwotdGhlIHByZXZpb3VzIGNvdXBsZSBvZiByZWNp
cGVzIGhhdmUgc2hvd24uIE9yLCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0Ci1hd2F5IGZyb20gaXQg
aWYgeW91IGNhbiBndWFyYW50ZWUgdGhhdCBgYmFyYCB3b24ndCBiZSBjaGFuZ2VkIGFmdGVyCi10
aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBKdXN0IHRlbGwgR29vZ2xlIE1vY2sgdGhh
dCBpdCBzaG91bGQKLXNhdmUgYSByZWZlcmVuY2UgdG8gYGJhcmAsIGluc3RlYWQgb2YgYSBjb3B5
IG9mIGl0LiBIZXJlJ3MgaG93OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RXE7Ci11c2luZyA6
OnRlc3Rpbmc6OkJ5UmVmOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLS4uLgotICAvLyBFeHBlY3Rz
IHRoYXQgRm9vKCkncyBhcmd1bWVudCA9PSBiYXIuCi0gIEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBG
b28oRXEoQnlSZWYoYmFyKSkpKTsKLQotICAvLyBFeHBlY3RzIHRoYXQgRm9vKCkncyBhcmd1bWVu
dCA8IGJhci4KLSAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhMdChCeVJlZihiYXIpKSkpOwot
YGBgCi0KLVJlbWVtYmVyOiBpZiB5b3UgZG8gdGhpcywgZG9uJ3QgY2hhbmdlIGBiYXJgIGFmdGVy
IHRoZQotYEVYUEVDVF9DQUxMKClgLCBvciB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLQotIyMg
VmFsaWRhdGluZyBhIE1lbWJlciBvZiBhbiBPYmplY3QgIyMKLQotT2Z0ZW4gYSBtb2NrIGZ1bmN0
aW9uIHRha2VzIGEgcmVmZXJlbmNlIHRvIG9iamVjdCBhcyBhbiBhcmd1bWVudC4gV2hlbgotbWF0
Y2hpbmcgdGhlIGFyZ3VtZW50LCB5b3UgbWF5IG5vdCB3YW50IHRvIGNvbXBhcmUgdGhlIGVudGly
ZSBvYmplY3QKLWFnYWluc3QgYSBmaXhlZCBvYmplY3QsIGFzIHRoYXQgbWF5IGJlIG92ZXItc3Bl
Y2lmaWNhdGlvbi4gSW5zdGVhZCwKLXlvdSBtYXkgbmVlZCB0byB2YWxpZGF0ZSBhIGNlcnRhaW4g
bWVtYmVyIHZhcmlhYmxlIG9yIHRoZSByZXN1bHQgb2YgYQotY2VydGFpbiBnZXR0ZXIgbWV0aG9k
IG9mIHRoZSBvYmplY3QuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIGBGaWVsZCgpYAotYW5kIGBQcm9w
ZXJ0eSgpYC4gTW9yZSBzcGVjaWZpY2FsbHksCi0KLWBgYAotRmllbGQoJkZvbzo6YmFyLCBtKQot
YGBgCi0KLWlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBgRm9vYCBvYmplY3Qgd2hvc2UgYGJh
cmAgbWVtYmVyIHZhcmlhYmxlCi1zYXRpc2ZpZXMgbWF0Y2hlciBgbWAuCi0KLWBgYAotUHJvcGVy
dHkoJkZvbzo6YmF6LCBtKQotYGBgCi0KLWlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBgRm9v
YCBvYmplY3Qgd2hvc2UgYGJheigpYCBtZXRob2QgcmV0dXJucwotYSB2YWx1ZSB0aGF0IHNhdGlz
ZmllcyBtYXRjaGVyIGBtYC4KLQotRm9yIGV4YW1wbGU6Ci0KLT4gfCBgRmllbGQoJkZvbzo6bnVt
YmVyLCBHZSgzKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubnVtYmVyID49IDNgLiB8Ci18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLT4gfCBgUHJvcGVydHkoJkZvbzo6bmFtZSwgU3RhcnRzV2l0aCgiSm9obiAiKSlg
IHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubmFtZSgpYCBzdGFydHMgd2l0aCBgIkpvaG4gImAuIHwK
LQotTm90ZSB0aGF0IGluIGBQcm9wZXJ0eSgmRm9vOjpiYXosIC4uLilgLCBtZXRob2QgYGJheigp
YCBtdXN0IHRha2Ugbm8KLWFyZ3VtZW50IGFuZCBiZSBkZWNsYXJlZCBhcyBgY29uc3RgLgotCi1C
VFcsIGBGaWVsZCgpYCBhbmQgYFByb3BlcnR5KClgIGNhbiBhbHNvIG1hdGNoIHBsYWluIHBvaW50
ZXJzIHRvCi1vYmplY3RzLiBGb3IgaW5zdGFuY2UsCi0KLWBgYAotRmllbGQoJkZvbzo6bnVtYmVy
LCBHZSgzKSkKLWBgYAotCi1tYXRjaGVzIGEgcGxhaW4gcG9pbnRlciBgcGAgd2hlcmUgYHAtPm51
bWJlciA+PSAzYC4gSWYgYHBgIGlzIGBOVUxMYCwKLXRoZSBtYXRjaCB3aWxsIGFsd2F5cyBmYWls
IHJlZ2FyZGxlc3Mgb2YgdGhlIGlubmVyIG1hdGNoZXIuCi0KLVdoYXQgaWYgeW91IHdhbnQgdG8g
dmFsaWRhdGUgbW9yZSB0aGFuIG9uZSBtZW1iZXJzIGF0IHRoZSBzYW1lIHRpbWU/Ci1SZW1lbWJl
ciB0aGF0IHRoZXJlIGlzIGBBbGxPZigpYC4KLQotIyMgVmFsaWRhdGluZyB0aGUgVmFsdWUgUG9p
bnRlZCB0byBieSBhIFBvaW50ZXIgQXJndW1lbnQgIyMKLQotQysrIGZ1bmN0aW9ucyBvZnRlbiB0
YWtlIHBvaW50ZXJzIGFzIGFyZ3VtZW50cy4gWW91IGNhbiB1c2UgbWF0Y2hlcnMKLWxpa2UgYE5V
TExgLCBgTm90TnVsbCgpYCwgYW5kIG90aGVyIGNvbXBhcmlzb24gbWF0Y2hlcnMgdG8gbWF0Y2gg
YQotcG9pbnRlciwgYnV0IHdoYXQgaWYgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBf
cG9pbnRlZCB0b18gYnkKLXRoZSBwb2ludGVyLCBpbnN0ZWFkIG9mIHRoZSBwb2ludGVyIGl0c2Vs
ZiwgaGFzIGEgY2VydGFpbiBwcm9wZXJ0eT8KLVdlbGwsIHlvdSBjYW4gdXNlIHRoZSBgUG9pbnRl
ZShtKWAgbWF0Y2hlci4KLQotYFBvaW50ZWUobSlgIG1hdGNoZXMgYSBwb2ludGVyIGlmZiBgbWAg
bWF0Y2hlcyB0aGUgdmFsdWUgdGhlIHBvaW50ZXIKLXBvaW50cyB0by4gRm9yIGV4YW1wbGU6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6UG9pbnRlZTsKLS4u
LgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihQb2ludGVlKEdlKDMpKSkpOwotYGBgCi0KLWV4cGVj
dHMgYGZvby5CYXIoKWAgdG8gYmUgY2FsbGVkIHdpdGggYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRv
IGEgdmFsdWUKLWdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAzLgotCi1PbmUgbmljZSB0aGluZyBh
Ym91dCBgUG9pbnRlZSgpYCBpcyB0aGF0IGl0IHRyZWF0cyBhIGBOVUxMYCBwb2ludGVyIGFzCi1h
IG1hdGNoIGZhaWx1cmUsIHNvIHlvdSBjYW4gd3JpdGUgYFBvaW50ZWUobSlgIGluc3RlYWQgb2YK
LQotYGBgCi0gIEFsbE9mKE5vdE51bGwoKSwgUG9pbnRlZShtKSkKLWBgYAotCi13aXRob3V0IHdv
cnJ5aW5nIHRoYXQgYSBgTlVMTGAgcG9pbnRlciB3aWxsIGNyYXNoIHlvdXIgdGVzdC4KLQotQWxz
bywgZGlkIHdlIHRlbGwgeW91IHRoYXQgYFBvaW50ZWUoKWAgd29ya3Mgd2l0aCBib3RoIHJhdyBw
b2ludGVycwotKiphbmQqKiBzbWFydCBwb2ludGVycyAoYGxpbmtlZF9wdHJgLCBgc2hhcmVkX3B0
cmAsIGBzY29wZWRfcHRyYCwgYW5kCi1ldGMpPwotCi1XaGF0IGlmIHlvdSBoYXZlIGEgcG9pbnRl
ciB0byBwb2ludGVyPyBZb3UgZ3Vlc3NlZCBpdCAtIHlvdSBjYW4gdXNlCi1uZXN0ZWQgYFBvaW50
ZWUoKWAgdG8gcHJvYmUgZGVlcGVyIGluc2lkZSB0aGUgdmFsdWUuIEZvciBleGFtcGxlLAotYFBv
aW50ZWUoUG9pbnRlZShMdCgzKSkpYCBtYXRjaGVzIGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBh
IHBvaW50ZXIKLXRoYXQgcG9pbnRzIHRvIGEgbnVtYmVyIGxlc3MgdGhhbiAzICh3aGF0IGEgbW91
dGhmdWwuLi4pLgotCi0jIyBUZXN0aW5nIGEgQ2VydGFpbiBQcm9wZXJ0eSBvZiBhbiBPYmplY3Qg
IyMKLQotU29tZXRpbWVzIHlvdSB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbiBvYmplY3QgYXJndW1l
bnQgaGFzIGEgY2VydGFpbgotcHJvcGVydHksIGJ1dCB0aGVyZSBpcyBubyBleGlzdGluZyBtYXRj
aGVyIHRoYXQgZG9lcyB0aGlzLiBJZiB5b3Ugd2FudAotZ29vZCBlcnJvciBtZXNzYWdlcywgeW91
IHNob3VsZCBkZWZpbmUgYSBtYXRjaGVyLiBJZiB5b3Ugd2FudCB0byBkbyBpdAotcXVpY2sgYW5k
IGRpcnR5LCB5b3UgY291bGQgZ2V0IGF3YXkgd2l0aCB3cml0aW5nIGFuIG9yZGluYXJ5IGZ1bmN0
aW9uLgotCi1MZXQncyBzYXkgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4g
b2JqZWN0IG9mIHR5cGUgYEZvb2AsCi13aGljaCBoYXMgYW4gYGludCBiYXIoKWAgbWV0aG9kIGFu
ZCBhbiBgaW50IGJheigpYCBtZXRob2QsIGFuZCB5b3UKLXdhbnQgdG8gY29uc3RyYWluIHRoYXQg
dGhlIGFyZ3VtZW50J3MgYGJhcigpYCB2YWx1ZSBwbHVzIGl0cyBgYmF6KClgCi12YWx1ZSBpcyBh
IGdpdmVuIG51bWJlci4gSGVyZSdzIGhvdyB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8g
aXQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwotdXNpbmcgOjp0
ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotCi1jbGFzcyBCYXJQbHVzQmF6RXFNYXRjaGVy
IDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8Y29uc3QgRm9vJj4gewotIHB1YmxpYzoKLSAgZXhw
bGljaXQgQmFyUGx1c0JhekVxTWF0Y2hlcihpbnQgZXhwZWN0ZWRfc3VtKQotICAgICAgOiBleHBl
Y3RlZF9zdW1fKGV4cGVjdGVkX3N1bSkge30KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBs
YWluKGNvbnN0IEZvbyYgZm9vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIChmb28uYmFyKCkg
KyBmb28uYmF6KCkpID09IGV4cGVjdGVkX3N1bV87Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVz
Y3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImJhcigpICsg
YmF6KCkgZXF1YWxzICIgPDwgZXhwZWN0ZWRfc3VtXzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8
ICJiYXIoKSArIGJheigpIGRvZXMgbm90IGVxdWFsICIgPDwgZXhwZWN0ZWRfc3VtXzsKLSAgfQot
IHByaXZhdGU6Ci0gIGNvbnN0IGludCBleHBlY3RlZF9zdW1fOwotfTsKLQotaW5saW5lIE1hdGNo
ZXI8Y29uc3QgRm9vJj4gQmFyUGx1c0JhekVxKGludCBleHBlY3RlZF9zdW0pIHsKLSAgcmV0dXJu
IE1ha2VNYXRjaGVyKG5ldyBCYXJQbHVzQmF6RXFNYXRjaGVyKGV4cGVjdGVkX3N1bSkpOwotfQot
Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTCguLi4sIERvVGhpcyhCYXJQbHVzQmF6RXEoNSkpKS4uLjsK
LWBgYAotCi0jIyBNYXRjaGluZyBDb250YWluZXJzICMjCi0KLVNvbWV0aW1lcyBhbiBTVEwgY29u
dGFpbmVyIChlLmcuIGxpc3QsIHZlY3RvciwgbWFwLCAuLi4pIGlzIHBhc3NlZCB0bwotYSBtb2Nr
IGZ1bmN0aW9uIGFuZCB5b3UgbWF5IHdhbnQgdG8gdmFsaWRhdGUgaXQuIFNpbmNlIG1vc3QgU1RM
Ci1jb250YWluZXJzIHN1cHBvcnQgdGhlIGA9PWAgb3BlcmF0b3IsIHlvdSBjYW4gd3JpdGUKLWBF
cShleHBlY3RlZF9jb250YWluZXIpYCBvciBzaW1wbHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAgdG8g
bWF0Y2ggYQotY29udGFpbmVyIGV4YWN0bHkuCi0KLVNvbWV0aW1lcywgdGhvdWdoLCB5b3UgbWF5
IHdhbnQgdG8gYmUgbW9yZSBmbGV4aWJsZSAoZm9yIGV4YW1wbGUsIHRoZQotZmlyc3QgZWxlbWVu
dCBtdXN0IGJlIGFuIGV4YWN0IG1hdGNoLCBidXQgdGhlIHNlY29uZCBlbGVtZW50IGNhbiBiZQot
YW55IHBvc2l0aXZlIG51bWJlciwgYW5kIHNvIG9uKS4gQWxzbywgY29udGFpbmVycyB1c2VkIGlu
IHRlc3RzIG9mdGVuCi1oYXZlIGEgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzLCBhbmQgaGF2aW5n
IHRvIGRlZmluZSB0aGUgZXhwZWN0ZWQKLWNvbnRhaW5lciBvdXQtb2YtbGluZSBpcyBhIGJpdCBv
ZiBhIGhhc3NsZS4KLQotWW91IGNhbiB1c2UgdGhlIGBFbGVtZW50c0FyZSgpYCBtYXRjaGVyIGlu
IHN1Y2ggY2FzZXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5n
OjpFbGVtZW50c0FyZTsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci0uLi4KLQotICBNT0NLX01FVEhP
RDEoRm9vLCB2b2lkKGNvbnN0IHZlY3RvcjxpbnQ+JiBudW1iZXJzKSk7Ci0uLi4KLQotICBFWFBF
Q1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmUoMSwgR3QoMCksIF8sIDUpKSk7Ci1gYGAKLQot
VGhlIGFib3ZlIG1hdGNoZXIgc2F5cyB0aGF0IHRoZSBjb250YWluZXIgbXVzdCBoYXZlIDQgZWxl
bWVudHMsIHdoaWNoCi1tdXN0IGJlIDEsIGdyZWF0ZXIgdGhhbiAwLCBhbnl0aGluZywgYW5kIDUg
cmVzcGVjdGl2ZWx5LgotCi1gRWxlbWVudHNBcmUoKWAgaXMgb3ZlcmxvYWRlZCB0byB0YWtlIDAg
dG8gMTAgYXJndW1lbnRzLiBJZiBtb3JlIGFyZQotbmVlZGVkLCB5b3UgY2FuIHBsYWNlIHRoZW0g
aW4gYSBDLXN0eWxlIGFycmF5IGFuZCB1c2UKLWBFbGVtZW50c0FyZUFycmF5KClgIGluc3RlYWQ6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwotLi4uCi0KLSAgLy8g
RWxlbWVudHNBcmVBcnJheSBhY2NlcHRzIGFuIGFycmF5IG9mIGVsZW1lbnQgdmFsdWVzLgotICBj
b25zdCBpbnQgZXhwZWN0ZWRfdmVjdG9yMVtdID0geyAxLCA1LCAyLCA0LCAuLi4gfTsKLSAgRVhQ
RUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMSkpKTsK
LQotICAvLyBPciwgYW4gYXJyYXkgb2YgZWxlbWVudCBtYXRjaGVycy4KLSAgTWF0Y2hlcjxpbnQ+
IGV4cGVjdGVkX3ZlY3RvcjIgPSB7IDEsIEd0KDIpLCBfLCAzLCAuLi4gfTsKLSAgRVhQRUNUX0NB
TEwobW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMikpKTsKLWBgYAot
Ci1JbiBjYXNlIHRoZSBhcnJheSBuZWVkcyB0byBiZSBkeW5hbWljYWxseSBjcmVhdGVkIChhbmQg
dGhlcmVmb3JlIHRoZQotYXJyYXkgc2l6ZSBjYW5ub3QgYmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBp
bGVyKSwgeW91IGNhbiBnaXZlCi1gRWxlbWVudHNBcmVBcnJheSgpYCBhbiBhZGRpdGlvbmFsIGFy
Z3VtZW50IHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpFbGVtZW50c0FyZUFycmF5OwotLi4uCi0gIGludCogY29uc3QgZXhwZWN0ZWRfdmVjdG9yMyA9
IG5ldyBpbnRbY291bnRdOwotICAuLi4gZmlsbCBleHBlY3RlZF92ZWN0b3IzIHdpdGggdmFsdWVz
IC4uLgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92
ZWN0b3IzLCBjb3VudCkpKTsKLWBgYAotCi0qKlRpcHM6KioKLQotICAqIGBFbGVtZW50QXJlKigp
YCB3b3JrcyB3aXRoIF9hbnlfIGNvbnRhaW5lciB0aGF0IGltcGxlbWVudHMgdGhlIFNUTCBpdGVy
YXRvciBjb25jZXB0IChpLmUuIGl0IGhhcyBhIGBjb25zdF9pdGVyYXRvcmAgdHlwZSBhbmQgc3Vw
cG9ydHMgYGJlZ2luKCkvZW5kKClgKSBhbmQgc3VwcG9ydHMgYHNpemUoKWAsIG5vdCBqdXN0IHRo
ZSBvbmVzIGRlZmluZWQgaW4gU1RMLiBJdCB3aWxsIGV2ZW4gd29yayB3aXRoIGNvbnRhaW5lciB0
eXBlcyB5ZXQgdG8gYmUgd3JpdHRlbiAtIGFzIGxvbmcgYXMgdGhleSBmb2xsb3dzIHRoZSBhYm92
ZSBwYXR0ZXJuLgotICAqIFlvdSBjYW4gdXNlIG5lc3RlZCBgRWxlbWVudEFyZSooKWAgdG8gbWF0
Y2ggbmVzdGVkIChtdWx0aS1kaW1lbnNpb25hbCkgY29udGFpbmVycy4KLSAgKiBJZiB0aGUgY29u
dGFpbmVyIGlzIHBhc3NlZCBieSBwb2ludGVyIGluc3RlYWQgb2YgYnkgcmVmZXJlbmNlLCBqdXN0
IHdyaXRlIGBQb2ludGVlKEVsZW1lbnRzQXJlKiguLi4pKWAuCi0gICogVGhlIG9yZGVyIG9mIGVs
ZW1lbnRzIF9tYXR0ZXJzXyBmb3IgYEVsZW1lbnRzQXJlKigpYC4gVGhlcmVmb3JlIGRvbid0IHVz
ZSBpdCB3aXRoIGNvbnRhaW5lcnMgd2hvc2UgZWxlbWVudCBvcmRlciBpcyB1bmRlZmluZWQgKGUu
Zy4gYGhhc2hfbWFwYCkuCi0KLSMjIFNoYXJpbmcgTWF0Y2hlcnMgIyMKLQotVW5kZXIgdGhlIGhv
b2QsIGEgR29vZ2xlIE1vY2sgbWF0Y2hlciBvYmplY3QgY29uc2lzdHMgb2YgYSBwb2ludGVyIHRv
Ci1hIHJlZi1jb3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4gQ29weWluZyBtYXRjaGVycyBp
cyBhbGxvd2VkIGFuZAotdmVyeSBlZmZpY2llbnQsIGFzIG9ubHkgdGhlIHBvaW50ZXIgaXMgY29w
aWVkLiBXaGVuIHRoZSBsYXN0IG1hdGNoZXIKLXRoYXQgcmVmZXJlbmNlcyB0aGUgaW1wbGVtZW50
YXRpb24gb2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlvbgotb2JqZWN0IHdpbGwgYmUgZGVs
ZXRlZC4KLQotVGhlcmVmb3JlLCBpZiB5b3UgaGF2ZSBzb21lIGNvbXBsZXggbWF0Y2hlciB0aGF0
IHlvdSB3YW50IHRvIHVzZSBhZ2FpbgotYW5kIGFnYWluLCB0aGVyZSBpcyBubyBuZWVkIHRvIGJ1
aWxkIGl0IGV2ZXJ5dGltZS4gSnVzdCBhc3NpZ24gaXQgdG8gYQotbWF0Y2hlciB2YXJpYWJsZSBh
bmQgdXNlIHRoYXQgdmFyaWFibGUgcmVwZWF0ZWRseSEgRm9yIGV4YW1wbGUsCi0KLWBgYAotICBN
YXRjaGVyPGludD4gaW5fcmFuZ2UgPSBBbGxPZihHdCg1KSwgTGUoMTApKTsKLSAgLi4uIHVzZSBp
bl9yYW5nZSBhcyBhIG1hdGNoZXIgaW4gbXVsdGlwbGUgRVhQRUNUX0NBTExzIC4uLgotYGBgCi0K
LSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwotCi0jIyBJZ25vcmluZyBVbmludGVyZXN0aW5nIENh
bGxzICMjCi0KLUlmIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gaG93IGEgbW9jayBtZXRob2Qg
aXMgY2FsbGVkLCBqdXN0IGRvbid0Ci1zYXkgYW55dGhpbmcgYWJvdXQgaXQuIEluIHRoaXMgY2Fz
ZSwgaWYgdGhlIG1ldGhvZCBpcyBldmVyIGNhbGxlZCwKLUdvb2dsZSBNb2NrIHdpbGwgcGVyZm9y
bSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8gYWxsb3cgdGhlIHRlc3QgcHJvZ3JhbQotdG8gY29udGlu
dWUuIElmIHlvdSBhcmUgbm90IGhhcHB5IHdpdGggdGhlIGRlZmF1bHQgYWN0aW9uIHRha2VuIGJ5
Ci1Hb29nbGUgTW9jaywgeW91IGNhbiBvdmVycmlkZSBpdCB1c2luZyBgRGVmYXVsdFZhbHVlPFQ+
OjpTZXQoKWAKLShkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudCkgb3IgYE9OX0NBTEwo
KWAuCi0KLVBsZWFzZSBub3RlIHRoYXQgb25jZSB5b3UgZXhwcmVzc2VkIGludGVyZXN0IGluIGEg
cGFydGljdWxhciBtb2NrCi1tZXRob2QgKHZpYSBgRVhQRUNUX0NBTEwoKWApLCBhbGwgaW52b2Nh
dGlvbnMgdG8gaXQgbXVzdCBtYXRjaCBzb21lCi1leHBlY3RhdGlvbi4gSWYgdGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgYnV0IHRoZSBhcmd1bWVudHMgZG9uJ3QgbWF0Y2gKLWFueSBgRVhQRUNUX0NB
TEwoKWAgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGFuIGVycm9yLgotCi0jIyBEaXNhbGxvd2luZyBV
bmV4cGVjdGVkIENhbGxzICMjCi0KLUlmIGEgbW9jayBtZXRob2Qgc2hvdWxkbid0IGJlIGNhbGxl
ZCBhdCBhbGwsIGV4cGxpY2l0bHkgc2F5IHNvOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5UaW1lcygwKTsKLWBgYAot
Ci1JZiBzb21lIGNhbGxzIHRvIHRoZSBtZXRob2QgYXJlIGFsbG93ZWQsIGJ1dCB0aGUgcmVzdCBh
cmUgbm90LCBqdXN0Ci1saXN0IGFsbCB0aGUgZXhwZWN0ZWQgY2FsbHM6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpBbnlOdW1iZXI7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotLi4uCi0gIEVYUEVD
VF9DQUxMKGZvbywgQmFyKDUpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoR3QoMTApKSkKLSAg
ICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci1gYGAKLQotQSBjYWxsIHRvIGBmb28uQmFyKClgIHRo
YXQgZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIGBFWFBFQ1RfQ0FMTCgpYAotc3RhdGVtZW50cyB3
aWxsIGJlIGFuIGVycm9yLgotCi0jIyBFeHBlY3RpbmcgT3JkZXJlZCBDYWxscyAjIwotCi1BbHRo
b3VnaCBhbiBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGRlZmluZWQgZWFybGllciB0YWtlcyBw
cmVjZWRlbmNlCi13aGVuIEdvb2dsZSBNb2NrIHRyaWVzIHRvIG1hdGNoIGEgZnVuY3Rpb24gY2Fs
bCB3aXRoIGFuIGV4cGVjdGF0aW9uLAotYnkgZGVmYXVsdCBjYWxscyBkb24ndCBoYXZlIHRvIGhh
cHBlbiBpbiB0aGUgb3JkZXIgYEVYUEVDVF9DQUxMKClgCi1zdGF0ZW1lbnRzIGFyZSB3cml0dGVu
LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGFyZ3VtZW50cyBtYXRjaCB0aGUKLW1hdGNoZXJzIGluIHRo
ZSB0aGlyZCBgRVhQRUNUX0NBTEwoKWAsIGJ1dCBub3QgdGhvc2UgaW4gdGhlIGZpcnN0IHR3bywK
LXRoZW4gdGhlIHRoaXJkIGV4cGVjdGF0aW9uIHdpbGwgYmUgdXNlZC4KLQotSWYgeW91IHdvdWxk
IHJhdGhlciBoYXZlIGFsbCBjYWxscyBvY2N1ciBpbiB0aGUgb3JkZXIgb2YgdGhlCi1leHBlY3Rh
dGlvbnMsIHB1dCB0aGUgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudHMgaW4gYSBibG9jayB3aGVy
ZSB5b3UKLWRlZmluZSBhIHZhcmlhYmxlIG9mIHR5cGUgYEluU2VxdWVuY2VgOgotCi1gYGAKLSAg
dXNpbmcgOjp0ZXN0aW5nOjpfOwotICB1c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci0KLSAg
ewotICAgIEluU2VxdWVuY2UgczsKLQotICAgIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKTsK
LSAgICBFWFBFQ1RfQ0FMTChiYXIsIERvVGhhdChfKSkKLSAgICAgICAgLlRpbWVzKDIpOwotICAg
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDYpKTsKLSAgfQotYGBgCi0KLUluIHRoaXMgZXhhbXBs
ZSwgd2UgZXhwZWN0IGEgY2FsbCB0byBgZm9vLkRvVGhpcyg1KWAsIGZvbGxvd2VkIGJ5IHR3bwot
Y2FsbHMgdG8gYGJhci5Eb1RoYXQoKWAgd2hlcmUgdGhlIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGlu
Zywgd2hpY2ggYXJlCi1pbiB0dXJuIGZvbGxvd2VkIGJ5IGEgY2FsbCB0byBgZm9vLkRvVGhpcyg2
KWAuIElmIGEgY2FsbCBvY2N1cnJlZAotb3V0LW9mLW9yZGVyLCBHb29nbGUgTW9jayB3aWxsIHJl
cG9ydCBhbiBlcnJvci4KLQotIyMgRXhwZWN0aW5nIFBhcnRpYWxseSBPcmRlcmVkIENhbGxzICMj
Ci0KLVNvbWV0aW1lcyByZXF1aXJpbmcgZXZlcnl0aGluZyB0byBvY2N1ciBpbiBhIHByZWRldGVy
bWluZWQgb3JkZXIgY2FuCi1sZWFkIHRvIGJyaXR0bGUgdGVzdHMuIEZvciBleGFtcGxlLCB3ZSBt
YXkgY2FyZSBhYm91dCBgQWAgb2NjdXJyaW5nCi1iZWZvcmUgYm90aCBgQmAgYW5kIGBDYCwgYnV0
IGFyZW4ndCBpbnRlcmVzdGVkIGluIHRoZSByZWxhdGl2ZSBvcmRlcgotb2YgYEJgIGFuZCBgQ2Au
IEluIHRoaXMgY2FzZSwgdGhlIHRlc3Qgc2hvdWxkIHJlZmxlY3Qgb3VyIHJlYWwgaW50ZW50LAot
aW5zdGVhZCBvZiBiZWluZyBvdmVybHkgY29uc3RyYWluaW5nLgotCi1Hb29nbGUgTW9jayBhbGxv
d3MgeW91IHRvIGltcG9zZSBhbiBhcmJpdHJhcnkgREFHIChkaXJlY3RlZCBhY3ljbGljCi1ncmFw
aCkgb24gdGhlIGNhbGxzLiBPbmUgd2F5IHRvIGV4cHJlc3MgdGhlIERBRyBpcyB0byB1c2UgdGhl
Ci1bQWZ0ZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9D
aGVhdFNoZWV0I1RoZV9BZnRlcl9DbGF1c2UpIGNsYXVzZSBvZiBgRVhQRUNUX0NBTExgLgotCi1B
bm90aGVyIHdheSBpcyB2aWEgdGhlIGBJblNlcXVlbmNlKClgIGNsYXVzZSAobm90IHRoZSBzYW1l
IGFzIHRoZQotYEluU2VxdWVuY2VgIGNsYXNzKSwgd2hpY2ggd2UgYm9ycm93ZWQgZnJvbSBqTW9j
ayAyLiBJdCdzIGxlc3MKLWZsZXhpYmxlIHRoYW4gYEFmdGVyKClgLCBidXQgbW9yZSBjb252ZW5p
ZW50IHdoZW4geW91IGhhdmUgbG9uZyBjaGFpbnMKLW9mIHNlcXVlbnRpYWwgY2FsbHMsIGFzIGl0
IGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gY29tZSB1cCB3aXRoCi1kaWZmZXJlbnQgbmFtZXMgZm9y
IHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlIGNoYWlucy4gIEhlcmUncyBob3cgaXQKLXdvcmtzOgot
Ci1JZiB3ZSB2aWV3IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGFzIG5vZGVzIGluIGEgZ3Jh
cGgsIGFuZCBhZGQgYW4KLWVkZ2UgZnJvbSBub2RlIEEgdG8gbm9kZSBCIHdoZXJldmVyIEEgbXVz
dCBvY2N1ciBiZWZvcmUgQiwgd2UgY2FuIGdldAotYSBEQUcuIFdlIHVzZSB0aGUgdGVybSAic2Vx
dWVuY2UiIHRvIG1lYW4gYSBkaXJlY3RlZCBwYXRoIGluIHRoaXMKLURBRy4gTm93LCBpZiB3ZSBk
ZWNvbXBvc2UgdGhlIERBRyBpbnRvIHNlcXVlbmNlcywgd2UganVzdCBuZWVkIHRvIGtub3cKLXdo
aWNoIHNlcXVlbmNlcyBlYWNoIGBFWFBFQ1RfQ0FMTCgpYCBiZWxvbmdzIHRvIGluIG9yZGVyIHRv
IGJlIGFibGUgdG8KLXJlY29uc3RydWN0IHRoZSBvcmdpbmFsIERBRy4KLQotU28sIHRvIHNwZWNp
ZnkgdGhlIHBhcnRpYWwgb3JkZXIgb24gdGhlIGV4cGVjdGF0aW9ucyB3ZSBuZWVkIHRvIGRvIHR3
bwotdGhpbmdzOiBmaXJzdCB0byBkZWZpbmUgc29tZSBgU2VxdWVuY2VgIG9iamVjdHMsIGFuZCB0
aGVuIGZvciBlYWNoCi1gRVhQRUNUX0NBTEwoKWAgc2F5IHdoaWNoIGBTZXF1ZW5jZWAgb2JqZWN0
cyBpdCBpcyBwYXJ0Ci1vZi4gRXhwZWN0YXRpb25zIGluIHRoZSBzYW1lIHNlcXVlbmNlIG11c3Qg
b2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi13cml0dGVuLiBGb3IgZXhhbXBsZSwKLQotYGBg
Ci0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEsIHMyOwotCi0g
IEVYUEVDVF9DQUxMKGZvbywgQSgpKQotICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKLSAgRVhQ
RUNUX0NBTEwoYmFyLCBCKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSk7Ci0gIEVYUEVDVF9DQUxM
KGJhciwgQygpKQotICAgICAgLkluU2VxdWVuY2UoczIpOwotICBFWFBFQ1RfQ0FMTChmb28sIEQo
KSkKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLWBgYAotCi1zcGVjaWZpZXMgdGhlIGZvbGxvd2lu
ZyBEQUcgKHdoZXJlIGBzMWAgaXMgYEEgLT4gQmAsIGFuZCBgczJgIGlzIGBBIC0+Ci1DIC0+IERg
KToKLQotYGBgCi0gICAgICAgKy0tLT4gQgotICAgICAgIHwKLSAgQSAtLS18Ci0gICAgICAgfAot
ICAgICAgICstLS0+IEMgLS0tPiBECi1gYGAKLQotVGhpcyBtZWFucyB0aGF0IEEgbXVzdCBvY2N1
ciBiZWZvcmUgQiBhbmQgQywgYW5kIEMgbXVzdCBvY2N1ciBiZWZvcmUKLUQuIFRoZXJlJ3Mgbm8g
cmVzdHJpY3Rpb24gYWJvdXQgdGhlIG9yZGVyIG90aGVyIHRoYW4gdGhlc2UuCi0KLSMjIENvbnRy
b2xsaW5nIFdoZW4gYW4gRXhwZWN0YXRpb24gUmV0aXJlcyAjIwotCi1XaGVuIGEgbW9jayBtZXRo
b2QgaXMgY2FsbGVkLCBHb29nbGUgTW9jayBvbmx5IGNvbnNpZGVyIGV4cGVjdGF0aW9ucwotdGhh
dCBhcmUgc3RpbGwgYWN0aXZlLiBBbiBleHBlY3RhdGlvbiBpcyBhY3RpdmUgd2hlbiBjcmVhdGVk
LCBhbmQKLWJlY29tZXMgaW5hY3RpdmUgKGFrYSBfcmV0aXJlc18pIHdoZW4gYSBjYWxsIHRoYXQg
aGFzIHRvIG9jY3VyIGxhdGVyCi1oYXMgb2NjdXJyZWQuIEZvciBleGFtcGxlLCBpbgotCi1gYGAK
LSAgdXNpbmcgOjp0ZXN0aW5nOjpfOwotICB1c2luZyA6OnRlc3Rpbmc6OlNlcXVlbmNlOwotCi0g
IFNlcXVlbmNlIHMxLCBzMjsKLQotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAi
RmlsZSB0b28gbGFyZ2UuIikpICAgICAvLyAjMQotICAgICAgLlRpbWVzKEFueU51bWJlcigpKQot
ICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklO
RywgXywgIkRhdGEgc2V0IGlzIGVtcHR5LiIpKSAgLy8gIzIKLSAgICAgIC5JblNlcXVlbmNlKHMx
KTsKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIlVzZXIgbm90IGZvdW5kLiIp
KSAgICAgLy8gIzMKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLWBgYAotCi1hcyBzb29uIGFzIGVp
dGhlciAjMiBvciAjMyBpcyBtYXRjaGVkLCAjMSB3aWxsIHJldGlyZS4gSWYgYSB3YXJuaW5nCi1g
IkZpbGUgdG9vIGxhcmdlLiJgIGlzIGxvZ2dlZCBhZnRlciB0aGlzLCBpdCB3aWxsIGJlIGFuIGVy
cm9yLgotCi1Ob3RlIHRoYXQgYW4gZXhwZWN0YXRpb24gZG9lc24ndCByZXRpcmUgYXV0b21hdGlj
YWxseSB3aGVuIGl0J3MKLXNhdHVyYXRlZC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sIF8pKTsg
ICAgICAgICAgICAgICAgICAvLyAjMQotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBf
LCAiRmlsZSB0b28gbGFyZ2UuIikpOyAgLy8gIzIKLWBgYAotCi1zYXlzIHRoYXQgdGhlcmUgd2ls
bCBiZSBleGFjdGx5IG9uZSB3YXJuaW5nIHdpdGggdGhlIG1lc3NhZ2UgYCJGaWxlCi10b28gbGFy
Z2UuImAuIElmIHRoZSBzZWNvbmQgd2FybmluZyBjb250YWlucyB0aGlzIG1lc3NhZ2UgdG9vLCAj
MiB3aWxsCi1tYXRjaCBhZ2FpbiBhbmQgcmVzdWx0IGluIGFuIHVwcGVyLWJvdW5kLXZpb2xhdGVk
IGVycm9yLgotCi1JZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCB5b3UgY2FuIGFzayBhbiBl
eHBlY3RhdGlvbiB0byByZXRpcmUgYXMKLXNvb24gYXMgaXQgYmVjb21lcyBzYXR1cmF0ZWQ6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdB
Uk5JTkcsIF8sIF8pKTsgICAgICAgICAgICAgICAgIC8vICMxCi0gIEVYUEVDVF9DQUxMKGxvZywg
TG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgIC8vICMyCi0gICAgICAuUmV0aXJl
c09uU2F0dXJhdGlvbigpOwotYGBgCi0KLUhlcmUgIzIgY2FuIGJlIHVzZWQgb25seSBvbmNlLCBz
byBpZiB5b3UgaGF2ZSB0d28gd2FybmluZ3Mgd2l0aCB0aGUKLW1lc3NhZ2UgYCJGaWxlIHRvbyBs
YXJnZS4iYCwgdGhlIGZpcnN0IHdpbGwgbWF0Y2ggIzIgYW5kIHRoZSBzZWNvbmQKLXdpbGwgbWF0
Y2ggIzEgLSB0aGVyZSB3aWxsIGJlIG5vIGVycm9yLgotCi0jIFVzaW5nIEFjdGlvbnMgIwotCi0j
IyBSZXR1cm5pbmcgUmVmZXJlbmNlcyBmcm9tIE1vY2sgTWV0aG9kcyAjIwotCi1JZiBhIG1vY2sg
ZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IG5lZWQgdG8gdXNlCi1g
UmV0dXJuUmVmKClgIGluc3RlYWQgb2YgYFJldHVybigpYCB0byByZXR1cm4gYSByZXN1bHQ6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm5SZWY7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJs
aWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7Ci19Owot
Li4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEJhciBiYXI7Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0
QmFyKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcikpOwotYGBgCi0KLSMjIFJldHVy
bmluZyBMaXZlIFZhbHVlcyBmcm9tIE1vY2sgTWV0aG9kcyAjIwotCi1UaGUgYFJldHVybih4KWAg
YWN0aW9uIHNhdmVzIGEgY29weSBvZiBgeGAgd2hlbiB0aGUgYWN0aW9uIGlzCi1fY3JlYXRlZF8s
IGFuZCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSB3aGVuZXZlciBpdCdzCi1leGVjdXRl
ZC4gU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBpbnN0ZWFkIHJldHVybiB0aGUgX2xpdmVfIHZh
bHVlIG9mCi1geGAgKGkuZS4gaXRzIHZhbHVlIGF0IHRoZSB0aW1lIHdoZW4gdGhlIGFjdGlvbiBp
cyBfZXhlY3V0ZWRfLikuCi0KLUlmIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaXMg
YSByZWZlcmVuY2UsIHlvdSBjYW4gZG8gaXQgdXNpbmcKLWBSZXR1cm5SZWYoeClgLCBhcyBzaG93
biBpbiB0aGUgcHJldmlvdXMgcmVjaXBlICgiUmV0dXJuaW5nIFJlZmVyZW5jZXMKLWZyb20gTW9j
ayBNZXRob2RzIikuIEhvd2V2ZXIsIEdvb2dsZSBNb2NrIGRvZXNuJ3QgbGV0IHlvdSB1c2UKLWBS
ZXR1cm5SZWYoKWAgaW4gYSBtb2NrIGZ1bmN0aW9uIHdob3NlIHJldHVybiB0eXBlIGlzIG5vdCBh
IHJlZmVyZW5jZSwKLWFzIGRvaW5nIHRoYXQgdXN1YWxseSBpbmRpY2F0ZXMgYSB1c2VyIGVycm9y
LiBTbywgd2hhdCBzaGFsbCB5b3UgZG8/Ci0KLVlvdSBtYXkgYmUgdGVtcHRlZCB0byB0cnkgYEJ5
UmVmKClgOgotCi1gYGAKLXVzaW5nIHRlc3Rpbmc6OkJ5UmVmOwotdXNpbmcgdGVzdGluZzo6UmV0
dXJuOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01F
VEhPRDAoR2V0VmFsdWUsIGludCgpKTsKLX07Ci0uLi4KLSAgaW50IHggPSAwOwotICBNb2NrRm9v
IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRWYWx1ZSgpKQotICAgICAgLldpbGxSZXBlYXRl
ZGx5KFJldHVybihCeVJlZih4KSkpOwotICB4ID0gNDI7Ci0gIEVYUEVDVF9FUSg0MiwgZm9vLkdl
dFZhbHVlKCkpOwotYGBgCi0KLVVuZm9ydHVuYXRlbHksIGl0IGRvZXNuJ3Qgd29yayBoZXJlLiBU
aGUgYWJvdmUgY29kZSB3aWxsIGZhaWwgd2l0aCBlcnJvcjoKLQotYGBgCi1WYWx1ZSBvZjogZm9v
LkdldFZhbHVlKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogNDIKLWBgYAotCi1UaGUgcmVhc29u
IGlzIHRoYXQgYFJldHVybih2YWx1ZSlgIGNvbnZlcnRzIGB2YWx1ZWAgdG8gdGhlIGFjdHVhbAot
cmV0dXJuIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXQgdGhlIHRpbWUgd2hlbiB0aGUgYWN0
aW9uIGlzCi1fY3JlYXRlZF8sIG5vdCB3aGVuIGl0IGlzIF9leGVjdXRlZF8uIChUaGlzIGJlaGF2
aW9yIHdhcyBjaG9zZW4gZm9yCi10aGUgYWN0aW9uIHRvIGJlIHNhZmUgd2hlbiBgdmFsdWVgIGlz
IGEgcHJveHkgb2JqZWN0IHRoYXQgcmVmZXJlbmNlcwotc29tZSB0ZW1wb3Jhcnkgb2JqZWN0cy4p
IEFzIGEgcmVzdWx0LCBgQnlSZWYoeClgIGlzIGNvbnZlcnRlZCB0byBhbgotYGludGAgdmFsdWUg
KGluc3RlYWQgb2YgYSBgY29uc3QgaW50JmApIHdoZW4gdGhlIGV4cGVjdGF0aW9uIGlzIHNldCwK
LWFuZCBgUmV0dXJuKEJ5UmVmKHgpKWAgd2lsbCBhbHdheXMgcmV0dXJuIDAuCi0KLWBSZXR1cm5Q
b2ludGVlKHBvaW50ZXIpYCB3YXMgcHJvdmlkZWQgdG8gc29sdmUgdGhpcyBwcm9ibGVtCi1zcGVj
aWZpY2FsbHkuIEl0IHJldHVybnMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYHBvaW50ZXJgIGF0
IHRoZSB0aW1lCi10aGUgYWN0aW9uIGlzIF9leGVjdXRlZF86Ci0KLWBgYAotdXNpbmcgdGVzdGlu
Zzo6UmV0dXJuUG9pbnRlZTsKLS4uLgotICBpbnQgeCA9IDA7Ci0gIE1vY2tGb28gZm9vOwotICBF
WFBFQ1RfQ0FMTChmb28sIEdldFZhbHVlKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
UG9pbnRlZSgmeCkpOyAgLy8gTm90ZSB0aGUgJiBoZXJlLgotICB4ID0gNDI7Ci0gIEVYUEVDVF9F
USg0MiwgZm9vLkdldFZhbHVlKCkpOyAgLy8gVGhpcyB3aWxsIHN1Y2NlZWQgbm93LgotYGBgCi0K
LSMjIENvbWJpbmluZyBBY3Rpb25zICMjCi0KLVdhbnQgdG8gZG8gbW9yZSB0aGFuIG9uZSB0aGlu
ZyB3aGVuIGEgZnVuY3Rpb24gaXMgY2FsbGVkPyBUaGF0J3MKLWZpbmUuIGBEb0FsbCgpYCBhbGxv
dyB5b3UgdG8gZG8gc2VxdWVuY2Ugb2YgYWN0aW9ucyBldmVyeSB0aW1lLiBPbmx5Ci10aGUgcmV0
dXJuIHZhbHVlIG9mIHRoZSBsYXN0IGFjdGlvbiBpbiB0aGUgc2VxdWVuY2Ugd2lsbCBiZSB1c2Vk
LgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RG9BbGw7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJs
aWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShCYXIsIGJvb2woaW50IG4pKTsKLX07
Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5XaWxsT25jZShEb0Fs
bChhY3Rpb25fMSwKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fMiwKLSAgICAgICAgICAg
ICAgICAgICAgICAuLi4KLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbikpOwotYGBgCi0K
LSMjIE1vY2tpbmcgU2lkZSBFZmZlY3RzICMjCi0KLVNvbWV0aW1lcyBhIG1ldGhvZCBleGhpYml0
cyBpdHMgZWZmZWN0IG5vdCB2aWEgcmV0dXJuaW5nIGEgdmFsdWUgYnV0Ci12aWEgc2lkZSBlZmZl
Y3RzLiBGb3IgZXhhbXBsZSwgaXQgbWF5IGNoYW5nZSBzb21lIGdsb2JhbCBzdGF0ZSBvcgotbW9k
aWZ5IGFuIG91dHB1dCBhcmd1bWVudC4gVG8gbW9jayBzaWRlIGVmZmVjdHMsIGluIGdlbmVyYWwg
eW91IGNhbgotZGVmaW5lIHlvdXIgb3duIGFjdGlvbiBieSBpbXBsZW1lbnRpbmcgYDo6dGVzdGlu
Zzo6QWN0aW9uSW50ZXJmYWNlYC4KLQotSWYgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHRvIGNoYW5n
ZSBhbiBvdXRwdXQgYXJndW1lbnQsIHRoZSBidWlsdC1pbgotYFNldEFyZ1BvaW50ZWUoKWAgYWN0
aW9uIGlzIGNvbnZlbmllbnQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXRBcmdQb2ludGVl
OwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1P
Q0tfTUVUSE9EMihNdXRhdGUsIHZvaWQoYm9vbCBtdXRhdGUsIGludCogdmFsdWUpKTsKLSAgLi4u
Ci19OwotLi4uCi0KLSAgTW9ja011dGF0b3IgbXV0YXRvcjsKLSAgRVhQRUNUX0NBTEwobXV0YXRv
ciwgTXV0YXRlKHRydWUsIF8pKQotICAgICAgLldpbGxPbmNlKFNldEFyZ1BvaW50ZWU8MT4oNSkp
OwotYGBgCi0KLUluIHRoaXMgZXhhbXBsZSwgd2hlbiBgbXV0YXRvci5NdXRhdGUoKWAgaXMgY2Fs
bGVkLCB3ZSB3aWxsIGFzc2lnbiA1Ci10byB0aGUgYGludGAgdmFyaWFibGUgcG9pbnRlZCB0byBi
eSBhcmd1bWVudCAjMQotKDAtYmFzZWQpLgotCi1gU2V0QXJnUG9pbnRlZSgpYCBjb252ZW5pZW50
bHkgbWFrZXMgYW4gaW50ZXJuYWwgY29weSBvZiB0aGUKLXZhbHVlIHlvdSBwYXNzIHRvIGl0LCBy
ZW1vdmluZyB0aGUgbmVlZCB0byBrZWVwIHRoZSB2YWx1ZSBpbiBzY29wZSBhbmQKLWFsaXZlLiBU
aGUgaW1wbGljYXRpb24gaG93ZXZlciBpcyB0aGF0IHRoZSB2YWx1ZSBtdXN0IGhhdmUgYSBjb3B5
Ci1jb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvci4KLQotSWYgdGhlIG1vY2sgbWV0
aG9kIGFsc28gbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUgYXMgd2VsbCwgeW91IGNhbiBjaGFpbgot
YFNldEFyZ1BvaW50ZWUoKWAgd2l0aCBgUmV0dXJuKClgIHVzaW5nIGBEb0FsbCgpYDoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIDo6
dGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKLQotY2xhc3MgTW9ja011dGF0b3IgOiBwdWJsaWMgTXV0
YXRvciB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19NRVRIT0QxKE11dGF0ZUludCwgYm9vbChp
bnQqIHZhbHVlKSk7Ci19OwotLi4uCi0KLSAgTW9ja011dGF0b3IgbXV0YXRvcjsKLSAgRVhQRUNU
X0NBTEwobXV0YXRvciwgTXV0YXRlSW50KF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFy
Z1BvaW50ZWU8MD4oNSksCi0gICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKSk7Ci1g
YGAKLQotSWYgdGhlIG91dHB1dCBhcmd1bWVudCBpcyBhbiBhcnJheSwgdXNlIHRoZQotYFNldEFy
cmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYCBhY3Rpb24gaW5zdGVhZC4gSXQgY29waWVzIHRo
ZQotZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIGBbZmlyc3QsIGxhc3QpYCB0byB0aGUgYXJyYXkg
cG9pbnRlZCB0byBieQotdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQ6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpTZXRBcnJheUFyZ3VtZW50
OwotCi1jbGFzcyBNb2NrQXJyYXlNdXRhdG9yIDogcHVibGljIEFycmF5TXV0YXRvciB7Ci0gcHVi
bGljOgotICBNT0NLX01FVEhPRDIoTXV0YXRlLCB2b2lkKGludCogdmFsdWVzLCBpbnQgbnVtX3Zh
bHVlcykpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2NrQXJyYXlNdXRhdG9yIG11dGF0b3I7Ci0g
IGludCB2YWx1ZXNbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKLSAgRVhQRUNUX0NBTEwobXV0YXRv
ciwgTXV0YXRlKE5vdE51bGwoKSwgNSkpCi0gICAgICAuV2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVu
dDwwPih2YWx1ZXMsIHZhbHVlcyArIDUpKTsKLWBgYAotCi1UaGlzIGFsc28gd29ya3Mgd2hlbiB0
aGUgYXJndW1lbnQgaXMgYW4gb3V0cHV0IGl0ZXJhdG9yOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6U2VBcnJheUFyZ3VtZW50OwotCi1jbGFzcyBNb2NrUm9s
b2RleCA6IHB1YmxpYyBSb2xvZGV4IHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShHZXROYW1l
cywgdm9pZChzdGQ6OmJhY2tfaW5zZXJ0X2l0ZXJhdG9yPHZlY3RvcjxzdHJpbmc+ID4pKTsKLSAg
Li4uCi19OwotLi4uCi0KLSAgTW9ja1JvbG9kZXggcm9sb2RleDsKLSAgdmVjdG9yPHN0cmluZz4g
bmFtZXM7Ci0gIG5hbWVzLnB1c2hfYmFjaygiR2VvcmdlIik7Ci0gIG5hbWVzLnB1c2hfYmFjaygi
Sm9obiIpOwotICBuYW1lcy5wdXNoX2JhY2soIlRob21hcyIpOwotICBFWFBFQ1RfQ0FMTChyb2xv
ZGV4LCBHZXROYW1lcyhfKSkKLSAgICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KG5h
bWVzLmJlZ2luKCksIG5hbWVzLmVuZCgpKSk7Ci1gYGAKLQotIyMgQ2hhbmdpbmcgYSBNb2NrIE9i
amVjdCdzIEJlaGF2aW9yIEJhc2VkIG9uIHRoZSBTdGF0ZSAjIwotCi1JZiB5b3UgZXhwZWN0IGEg
Y2FsbCB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGEgbW9jayBvYmplY3QsIHlvdSBjYW4gdXNl
IGA6OnRlc3Rpbmc6OkluU2VxdWVuY2VgIHRvIHNwZWNpZnkgZGlmZmVyZW50IGJlaGF2aW9ycyBi
ZWZvcmUgYW5kIGFmdGVyIHRoZSBjYWxsOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1
ZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi0uLi4KLSAgewotICAgIEluU2VxdWVu
Y2Ugc2VxOwotICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIElzRGlydHkoKSkKLSAgICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybih0cnVlKSk7Ci0gICAgRVhQRUNUX0NBTEwobXlfbW9jaywgRmx1
c2goKSk7Ci0gICAgRVhQRUNUX0NBTEwobXlfbW9jaywgSXNEaXJ0eSgpKQotICAgICAgICAuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuKGZhbHNlKSk7Ci0gIH0KLSAgbXlfbW9jay5GbHVzaElmRGlydHko
KTsKLWBgYAotCi1UaGlzIG1ha2VzIGBteV9tb2NrLklzRGlydHkoKWAgcmV0dXJuIGB0cnVlYCBi
ZWZvcmUgYG15X21vY2suRmx1c2goKWAgaXMgY2FsbGVkIGFuZCByZXR1cm4gYGZhbHNlYCBhZnRl
cndhcmRzLgotCi1JZiB0aGUgYmVoYXZpb3IgY2hhbmdlIGlzIG1vcmUgY29tcGxleCwgeW91IGNh
biBzdG9yZSB0aGUgZWZmZWN0cyBpbiBhIHZhcmlhYmxlIGFuZCBtYWtlIGEgbW9jayBtZXRob2Qg
Z2V0IGl0cyByZXR1cm4gdmFsdWUgZnJvbSB0aGF0IHZhcmlhYmxlOgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6U2F2ZUFyZzsKLXVzaW5nIDo6dGVzdGluZzo6
UmV0dXJuOwotCi1BQ1RJT05fUChSZXR1cm5Qb2ludGVlLCBwKSB7IHJldHVybiAqcDsgfQotLi4u
Ci0gIGludCBwcmV2aW91c192YWx1ZSA9IDA7Ci0gIEVYUEVDVF9DQUxMKG15X21vY2ssIEdldFBy
ZXZWYWx1ZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVyblBvaW50ZWUoJnByZXZpb3Vz
X3ZhbHVlKSk7Ci0gIEVYUEVDVF9DQUxMKG15X21vY2ssIFVwZGF0ZVZhbHVlKF8pKQotICAgICAg
LldpbGxSZXBlYXRlZGx5KFNhdmVBcmc8MD4oJnByZXZpb3VzX3ZhbHVlKSk7Ci0gIG15X21vY2su
RG9Tb21ldGhpbmdUb1VwZGF0ZVZhbHVlKCk7Ci1gYGAKLQotSGVyZSBgbXlfbW9jay5HZXRQcmV2
VmFsdWUoKWAgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBhcmd1bWVudCBvZiB0aGUgbGFzdCBgVXBk
YXRlVmFsdWUoKWAgY2FsbC4KLQotIyMgU2V0dGluZyB0aGUgRGVmYXVsdCBWYWx1ZSBmb3IgYSBS
ZXR1cm4gVHlwZSAjIwotCi1JZiBhIG1vY2sgbWV0aG9kJ3MgcmV0dXJuIHR5cGUgaXMgYSBidWls
dC1pbiBDKysgdHlwZSBvciBwb2ludGVyLCBieQotZGVmYXVsdCBpdCB3aWxsIHJldHVybiAwIHdo
ZW4gaW52b2tlZC4gWW91IG9ubHkgbmVlZCB0byBzcGVjaWZ5IGFuCi1hY3Rpb24gaWYgdGhpcyBk
ZWZhdWx0IHZhbHVlIGRvZXNuJ3Qgd29yayBmb3IgeW91LgotCi1Tb21ldGltZXMsIHlvdSBtYXkg
d2FudCB0byBjaGFuZ2UgdGhpcyBkZWZhdWx0IHZhbHVlLCBvciB5b3UgbWF5IHdhbnQKLXRvIHNw
ZWNpZnkgYSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlcyBHb29nbGUgTW9jayBkb2Vzbid0IGtub3cK
LWFib3V0LiBZb3UgY2FuIGRvIHRoaXMgdXNpbmcgdGhlIGA6OnRlc3Rpbmc6OkRlZmF1bHRWYWx1
ZWAgY2xhc3MKLXRlbXBsYXRlOgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChDYWxjdWxhdGVCYXIsIEJhcigpKTsKLX07Ci0uLi4K
LQotICBCYXIgZGVmYXVsdF9iYXI7Ci0gIC8vIFNldHMgdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVl
IGZvciB0eXBlIEJhci4KLSAgRGVmYXVsdFZhbHVlPEJhcj46OlNldChkZWZhdWx0X2Jhcik7Ci0K
LSAgTW9ja0ZvbyBmb287Ci0KLSAgLy8gV2UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IGFuIGFjdGlv
biBoZXJlLCBhcyB0aGUgZGVmYXVsdAotICAvLyByZXR1cm4gdmFsdWUgd29ya3MgZm9yIHVzLgot
ICBFWFBFQ1RfQ0FMTChmb28sIENhbGN1bGF0ZUJhcigpKTsKLQotICBmb28uQ2FsY3VsYXRlQmFy
KCk7ICAvLyBUaGlzIHNob3VsZCByZXR1cm4gZGVmYXVsdF9iYXIuCi0KLSAgLy8gVW5zZXRzIHRo
ZSBkZWZhdWx0IHJldHVybiB2YWx1ZS4KLSAgRGVmYXVsdFZhbHVlPEJhcj46OkNsZWFyKCk7Ci1g
YGAKLQotUGxlYXNlIG5vdGUgdGhhdCBjaGFuZ2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYSB0
eXBlIGNhbiBtYWtlIHlvdQotdGVzdHMgaGFyZCB0byB1bmRlcnN0YW5kLiBXZSByZWNvbW1lbmQg
eW91IHRvIHVzZSB0aGlzIGZlYXR1cmUKLWp1ZGljaW91c2x5LiBGb3IgZXhhbXBsZSwgeW91IG1h
eSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYFNldCgpYCBhbmQKLWBDbGVhcigpYCBjYWxscyBhcmUg
cmlnaHQgbmV4dCB0byB0aGUgY29kZSB0aGF0IHVzZXMgeW91ciBtb2NrLgotCi0jIyBTZXR0aW5n
IHRoZSBEZWZhdWx0IEFjdGlvbnMgZm9yIGEgTW9jayBNZXRob2QgIyMKLQotWW91J3ZlIGxlYXJu
ZWQgaG93IHRvIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGdpdmVuCi10eXBlLiBIb3dl
dmVyLCB0aGlzIG1heSBiZSB0b28gY29hcnNlIGZvciB5b3VyIHB1cnBvc2U6IHBlcmhhcHMgeW91
Ci1oYXZlIHR3byBtb2NrIG1ldGhvZHMgd2l0aCB0aGUgc2FtZSByZXR1cm4gdHlwZSBhbmQgeW91
IHdhbnQgdGhlbSB0bwotaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3JzLiBUaGUgYE9OX0NBTEwoKWAg
bWFjcm8gYWxsb3dzIHlvdSB0bwotY3VzdG9taXplIHlvdXIgbW9jaydzIGJlaGF2aW9yIGF0IHRo
ZSBtZXRob2QgbGV2ZWw6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0
aW5nOjpBbnlOdW1iZXI7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpS
ZXR1cm47Ci0uLi4KLSAgT05fQ0FMTChmb28sIFNpZ24oXykpCi0gICAgICAuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oLTEpKTsKLSAgT05fQ0FMTChmb28sIFNpZ24oMCkpCi0gICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oMCkpOwotICBPTl9DQUxMKGZvbywgU2lnbihHdCgwKSkpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotCi0gIEVYUEVDVF9DQUxMKGZvbywgU2lnbihfKSkKLSAg
ICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0KLSAgZm9vLlNpZ24oNSk7ICAgLy8gVGhpcyBzaG91
bGQgcmV0dXJuIDEuCi0gIGZvby5TaWduKC05KTsgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAtMS4K
LSAgZm9vLlNpZ24oMCk7ICAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIDAuCi1gYGAKLQotQXMgeW91
IG1heSBoYXZlIGd1ZXNzZWQsIHdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgYE9OX0NBTEwo
KWAKLXN0YXRlbWVudHMsIHRoZSBuZXdzIG9yZGVyIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBv
bGRlciBvbmVzLiBJbgotb3RoZXIgd29yZHMsIHRoZSAqKmxhc3QqKiBvbmUgdGhhdCBtYXRjaGVz
IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgd2lsbAotYmUgdXNlZC4gVGhpcyBtYXRjaGluZyBvcmRl
ciBhbGxvd3MgeW91IHRvIHNldCB1cCB0aGUgY29tbW9uIGJlaGF2aW9yCi1pbiBhIG1vY2sgb2Jq
ZWN0J3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSBhbmQK
LXNwZWNpYWxpemUgdGhlIG1vY2sncyBiZWhhdmlvciBsYXRlci4KLQotIyMgVXNpbmcgRnVuY3Rp
b25zL01ldGhvZHMvRnVuY3RvcnMgYXMgQWN0aW9ucyAjIwotCi1JZiB0aGUgYnVpbHQtaW4gYWN0
aW9ucyBkb24ndCBzdWl0IHlvdSwgeW91IGNhbiBlYXNpbHkgdXNlIGFuIGV4aXN0aW5nCi1mdW5j
dGlvbiwgbWV0aG9kLCBvciBmdW5jdG9yIGFzIGFuIGFjdGlvbjoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKFN1bSwgaW50KGludCB4LCBpbnQg
eSkpOwotICBNT0NLX01FVEhPRDEoQ29tcGxleEpvYiwgYm9vbChpbnQgeCkpOwotfTsKLQotaW50
IENhbGN1bGF0ZVN1bShpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHggKyB5OyB9Ci0KLWNsYXNzIEhl
bHBlciB7Ci0gcHVibGljOgotICBib29sIENvbXBsZXhKb2IoaW50IHgpOwotfTsKLS4uLgotCi0g
IE1vY2tGb28gZm9vOwotICBIZWxwZXIgaGVscGVyOwotICBFWFBFQ1RfQ0FMTChmb28sIFN1bShf
LCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoQ2FsY3VsYXRlU3VtKSk7Ci0gIEVYUEVDVF9D
QUxMKGZvbywgQ29tcGxleEpvYihfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoJmhlbHBlciwg
JkhlbHBlcjo6Q29tcGxleEpvYikpOwotCi0gIGZvby5TdW0oNSwgNik7ICAgICAgIC8vIEludm9r
ZXMgQ2FsY3VsYXRlU3VtKDUsIDYpLgotICBmb28uQ29tcGxleEpvYigxMCk7ICAvLyBJbnZva2Vz
IGhlbHBlci5Db21wbGV4Sm9iKDEwKTsKLWBgYAotCi1UaGUgb25seSByZXF1aXJlbWVudCBpcyB0
aGF0IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiwgZXRjIG11c3QgYmUKLV9jb21wYXRpYmxlXyB3
aXRoIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1vY2sgZnVuY3Rpb24sIG1lYW5pbmcgdGhhdCB0aGUK
LWxhdHRlcidzIGFyZ3VtZW50cyBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdGhlIGNv
cnJlc3BvbmRpbmcKLWFyZ3VtZW50cyBvZiB0aGUgZm9ybWVyLCBhbmQgdGhlIGZvcm1lcidzIHJl
dHVybiB0eXBlIGNhbiBiZQotaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gdGhhdCBvZiB0aGUgbGF0
dGVyLiBTbywgeW91IGNhbiBpbnZva2UKLXNvbWV0aGluZyB3aG9zZSB0eXBlIGlzIF9ub3RfIGV4
YWN0bHkgdGhlIHNhbWUgYXMgdGhlIG1vY2sgZnVuY3Rpb24sCi1hcyBsb25nIGFzIGl0J3Mgc2Fm
ZSB0byBkbyBzbyAtIG5pY2UsIGh1aD8KLQotIyMgSW52b2tpbmcgYSBGdW5jdGlvbi9NZXRob2Qv
RnVuY3RvciBXaXRob3V0IEFyZ3VtZW50cyAjIwotCi1gSW52b2tlKClgIGlzIHZlcnkgdXNlZnVs
IGZvciBkb2luZyBhY3Rpb25zIHRoYXQgYXJlIG1vcmUgY29tcGxleC4gSXQKLXBhc3NlcyB0aGUg
bW9jayBmdW5jdGlvbidzIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gb3IgZnVuY3RvciBiZWlu
ZwotaW52b2tlZCBzdWNoIHRoYXQgdGhlIGNhbGxlZSBoYXMgdGhlIGZ1bGwgY29udGV4dCBvZiB0
aGUgY2FsbCB0byB3b3JrCi13aXRoLiBJZiB0aGUgaW52b2tlZCBmdW5jdGlvbiBpcyBub3QgaW50
ZXJlc3RlZCBpbiBzb21lIG9yIGFsbCBvZiB0aGUKLWFyZ3VtZW50cywgaXQgY2FuIHNpbXBseSBp
Z25vcmUgdGhlbS4KLQotWWV0LCBhIGNvbW1vbiBwYXR0ZXJuIGlzIHRoYXQgYSB0ZXN0IGF1dGhv
ciB3YW50cyB0byBpbnZva2UgYSBmdW5jdGlvbgotd2l0aG91dCB0aGUgYXJndW1lbnRzIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uLiBgSW52b2tlKClgIGFsbG93cyBoZXIgdG8KLWRvIHRoYXQgdXNpbmcg
YSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgdGhyb3dzIGF3YXkgdGhlIGFyZ3VtZW50cyBiZWZvcmUK
LWludm9raW5nIGFuIHVuZGVybGluaW5nIG51bGxhcnkgZnVuY3Rpb24uIE5lZWRsZXNzIHRvIHNh
eSwgdGhpcyBjYW4gYmUKLXRlZGlvdXMgYW5kIG9ic2N1cmVzIHRoZSBpbnRlbnQgb2YgdGhlIHRl
c3QuCi0KLWBJbnZva2VXaXRob3V0QXJncygpYCBzb2x2ZXMgdGhpcyBwcm9ibGVtLiBJdCdzIGxp
a2UgYEludm9rZSgpYCBleGNlcHQKLXRoYXQgaXQgZG9lc24ndCBwYXNzIHRoZSBtb2NrIGZ1bmN0
aW9uJ3MgYXJndW1lbnRzIHRvIHRoZQotY2FsbGVlLiBIZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZVdpdGhvdXRBcmdz
OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhP
RDEoQ29tcGxleEpvYiwgYm9vbChpbnQgbikpOwotfTsKLQotYm9vbCBKb2IxKCkgeyAuLi4gfQot
Li4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgQ29tcGxleEpvYihfKSkK
LSAgICAgIC5XaWxsT25jZShJbnZva2VXaXRob3V0QXJncyhKb2IxKSk7Ci0KLSAgZm9vLkNvbXBs
ZXhKb2IoMTApOyAgLy8gSW52b2tlcyBKb2IxKCkuCi1gYGAKLQotIyMgSW52b2tpbmcgYW4gQXJn
dW1lbnQgb2YgdGhlIE1vY2sgRnVuY3Rpb24gIyMKLQotU29tZXRpbWVzIGEgbW9jayBmdW5jdGlv
biB3aWxsIHJlY2VpdmUgYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgZnVuY3RvcgotKGluIG90aGVy
IHdvcmRzLCBhICJjYWxsYWJsZSIpIGFzIGFuIGFyZ3VtZW50LCBlLmcuCi0KLWBgYAotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKERvVGhpcywg
Ym9vbChpbnQgbiwgYm9vbCAoKmZwKShpbnQpKSk7Ci19OwotYGBgCi0KLWFuZCB5b3UgbWF5IHdh
bnQgdG8gaW52b2tlIHRoaXMgY2FsbGFibGUgYXJndW1lbnQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotLi4uCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhf
LCBfKSkKLSAgICAgIC5XaWxsT25jZSguLi4pOwotICAvLyBXaWxsIGV4ZWN1dGUgKCpmcCkoNSks
IHdoZXJlIGZwIGlzIHRoZQotICAvLyBzZWNvbmQgYXJndW1lbnQgRG9UaGlzKCkgcmVjZWl2ZXMu
Ci1gYGAKLQotQXJnaGgsIHlvdSBuZWVkIHRvIHJlZmVyIHRvIGEgbW9jayBmdW5jdGlvbiBhcmd1
bWVudCBidXQgQysrIGhhcyBubwotbGFtYmRhICh5ZXQpLCBzbyB5b3UgaGF2ZSB0byBkZWZpbmUg
eW91ciBvd24gYWN0aW9uLiA6LSggT3IgZG8geW91Ci1yZWFsbHk/Ci0KLVdlbGwsIEdvb2dsZSBN
b2NrIGhhcyBhbiBhY3Rpb24gdG8gc29sdmUgX2V4YWN0bHlfIHRoaXMgcHJvYmxlbToKLQotYGBg
Ci0gIEludm9rZUFyZ3VtZW50PE4+KGFyZ18xLCBhcmdfMiwgLi4uLCBhcmdfbSkKLWBgYAotCi13
aWxsIGludm9rZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0aGUgbW9jayBmdW5jdGlv
biByZWNlaXZlcywKLXdpdGggYGFyZ18xYCwgYGFyZ18yYCwgLi4uLCBhbmQgYGFyZ19tYC4gTm8g
bWF0dGVyIGlmIHRoZSBhcmd1bWVudCBpcwotYSBmdW5jdGlvbiBwb2ludGVyIG9yIGEgZnVuY3Rv
ciwgR29vZ2xlIE1vY2sgaGFuZGxlcyB0aGVtIGJvdGguCi0KLVdpdGggdGhhdCwgeW91IGNvdWxk
IHdyaXRlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52
b2tlQXJndW1lbnQ7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCi0gICAg
ICAuV2lsbE9uY2UoSW52b2tlQXJndW1lbnQ8MT4oNSkpOwotICAvLyBXaWxsIGV4ZWN1dGUgKCpm
cCkoNSksIHdoZXJlIGZwIGlzIHRoZQotICAvLyBzZWNvbmQgYXJndW1lbnQgRG9UaGlzKCkgcmVj
ZWl2ZXMuCi1gYGAKLQotV2hhdCBpZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkg
cmVmZXJlbmNlPyBObyBwcm9ibGVtIC0ganVzdAotd3JhcCBpdCBpbnNpZGUgYEJ5UmVmKClgOgot
Ci1gYGAKLS4uLgotICBNT0NLX01FVEhPRDEoQmFyLCBib29sKGJvb2wgKCpmcCkoaW50LCBjb25z
dCBIZWxwZXImKSkpOwotLi4uCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6
OkJ5UmVmOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLS4uLgotCi0gIE1vY2tG
b28gZm9vOwotICBIZWxwZXIgaGVscGVyOwotICAuLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIo
XykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlQXJndW1lbnQ8MD4oNSwgQnlSZWYoaGVscGVyKSkp
OwotICAvLyBCeVJlZihoZWxwZXIpIGd1YXJhbnRlZXMgdGhhdCBhIHJlZmVyZW5jZSB0byBoZWxw
ZXIsIG5vdCBhIGNvcHkgb2YgaXQsCi0gIC8vIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjYWxsYWJs
ZS4KLWBgYAotCi1XaGF0IGlmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZl
cmVuY2UgYW5kIHdlIGRvICoqbm90KioKLXdyYXAgdGhlIGFyZ3VtZW50IGluIGBCeVJlZigpYD8g
VGhlbiBgSW52b2tlQXJndW1lbnQoKWAgd2lsbCBfbWFrZSBhCi1jb3B5XyBvZiB0aGUgYXJndW1l
bnQsIGFuZCBwYXNzIGEgX3JlZmVyZW5jZSB0byB0aGUgY29weV8sIGluc3RlYWQgb2YKLWEgcmVm
ZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSwgdG8gdGhlIGNhbGxhYmxlLiBUaGlzIGlzIGVz
cGVjaWFsbHkKLWhhbmR5IHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgdGVtcG9yYXJ5IHZhbHVlOgot
Ci1gYGAKLS4uLgotICBNT0NLX01FVEhPRDEoRG9UaGF0LCBib29sKGJvb2wgKCpmKShjb25zdCBk
b3VibGUmIHgsIGNvbnN0IHN0cmluZyYgcykpKTsKLS4uLgotdXNpbmcgOjp0ZXN0aW5nOjpfOwot
dXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwot
ICAuLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXykpCi0gICAgICAuV2lsbE9uY2UoSW52
b2tlQXJndW1lbnQ8MD4oNS4wLCBzdHJpbmcoIkhpIikpKTsKLSAgLy8gV2lsbCBleGVjdXRlICgq
ZikoNS4wLCBzdHJpbmcoIkhpIikpLCB3aGVyZSBmIGlzIHRoZSBmdW5jdGlvbiBwb2ludGVyCi0g
IC8vIERvVGhhdCgpIHJlY2VpdmVzLiAgTm90ZSB0aGF0IHRoZSB2YWx1ZXMgNS4wIGFuZCBzdHJp
bmcoIkhpIikgYXJlCi0gIC8vIHRlbXBvcmFyeSBhbmQgZGVhZCBvbmNlIHRoZSBFWFBFQ1RfQ0FM
TCgpIHN0YXRlbWVudCBmaW5pc2hlcy4gIFlldAotICAvLyBpdCdzIGZpbmUgdG8gcGVyZm9ybSB0
aGlzIGFjdGlvbiBsYXRlciwgc2luY2UgYSBjb3B5IG9mIHRoZSB2YWx1ZXMKLSAgLy8gYXJlIGtl
cHQgaW5zaWRlIHRoZSBJbnZva2VBcmd1bWVudCBhY3Rpb24uCi1gYGAKLQotIyMgSWdub3Jpbmcg
YW4gQWN0aW9uJ3MgUmVzdWx0ICMjCi0KLVNvbWV0aW1lcyB5b3UgaGF2ZSBhbiBhY3Rpb24gdGhh
dCByZXR1cm5zIF9zb21ldGhpbmdfLCBidXQgeW91IG5lZWQgYW4KLWFjdGlvbiB0aGF0IHJldHVy
bnMgYHZvaWRgIChwZXJoYXBzIHlvdSB3YW50IHRvIHVzZSBpdCBpbiBhIG1vY2sKLWZ1bmN0aW9u
IHRoYXQgcmV0dXJucyBgdm9pZGAsIG9yIHBlcmhhcHMgaXQgbmVlZHMgdG8gYmUgdXNlZCBpbgot
YERvQWxsKClgIGFuZCBpdCdzIG5vdCB0aGUgbGFzdCBpbiB0aGUgbGlzdCkuIGBJZ25vcmVSZXN1
bHQoKWAgbGV0cwoteW91IGRvIHRoYXQuIEZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm47Ci0KLWludCBQcm9jZXNzKGNvbnN0IE15RGF0YSYgZGF0YSk7Ci1zdHJpbmcgRG9Tb21ldGhp
bmcoKTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19N
RVRIT0QxKEFiYywgdm9pZChjb25zdCBNeURhdGEmIGRhdGEpKTsKLSAgTU9DS19NRVRIT0QwKFh5
eiwgYm9vbCgpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBBYmMoXykpCi0gIC8vIC5XaWxsT25jZShJbnZva2UoUHJvY2VzcykpOwotICAvLyBUaGUgYWJv
dmUgbGluZSB3b24ndCBjb21waWxlIGFzIFByb2Nlc3MoKSByZXR1cm5zIGludCBidXQgQWJjKCkg
bmVlZHMKLSAgLy8gdG8gcmV0dXJuIHZvaWQuCi0gICAgICAuV2lsbE9uY2UoSWdub3JlUmVzdWx0
KEludm9rZShQcm9jZXNzKSkpOwotCi0gIEVYUEVDVF9DQUxMKGZvbywgWHl6KCkpCi0gICAgICAu
V2lsbE9uY2UoRG9BbGwoSWdub3JlUmVzdWx0KEludm9rZShEb1NvbWV0aGluZykpLAotICAgICAg
Ly8gSWdub3JlcyB0aGUgc3RyaW5nIERvU29tZXRoaW5nKCkgcmV0dXJucy4KLSAgICAgICAgICAg
ICAgICAgICAgICBSZXR1cm4odHJ1ZSkpKTsKLWBgYAotCi1Ob3RlIHRoYXQgeW91ICoqY2Fubm90
KiogdXNlIGBJZ25vcmVSZXN1bHQoKWAgb24gYW4gYWN0aW9uIHRoYXQgYWxyZWFkeQotcmV0dXJu
cyBgdm9pZGAuIERvaW5nIHNvIHdpbGwgbGVhZCB0byB1Z2x5IGNvbXBpbGVyIGVycm9ycy4KLQot
IyMgU2VsZWN0aW5nIGFuIEFjdGlvbidzIEFyZ3VtZW50cyAjIwotCi1TYXkgeW91IGhhdmUgYSBt
b2NrIGZ1bmN0aW9uIGBGb28oKWAgdGhhdCB0YWtlcyBzZXZlbiBhcmd1bWVudHMsIGFuZAoteW91
IGhhdmUgYSBjdXN0b20gYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gaW52b2tlIHdoZW4gYEZvbygp
YCBpcwotY2FsbGVkLiBUcm91YmxlIGlzLCB0aGUgY3VzdG9tIGFjdGlvbiBvbmx5IHdhbnRzIHRo
cmVlIGFyZ3VtZW50czoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6Okludm9rZTsKLS4uLgotICBNT0NLX01FVEhPRDcoRm9vLCBib29sKGJvb2wgdmlzaWJsZSwg
Y29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBkb3VibGU+JiB3ZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlIG1pbl93ZWlnaHQsIGRvdWJsZSBtYXhfd2lnaHQpKTsKLS4u
LgotCi1ib29sIElzVmlzaWJsZUluUXVhZHJhbnQxKGJvb2wgdmlzaWJsZSwgaW50IHgsIGludCB5
KSB7Ci0gIHJldHVybiB2aXNpYmxlICYmIHggPj0gMCAmJiB5ID49IDA7Ci19Ci0uLi4KLQotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0gICAgICAuV2lsbE9u
Y2UoSW52b2tlKElzVmlzaWJsZUluUXVhZHJhbnQxKSk7ICAvLyBVaCwgd29uJ3QgY29tcGlsZS4g
Oi0oCi1gYGAKLQotVG8gcGxlYXNlIHRoZSBjb21waWxlciBHb2QsIHlvdSBjYW4gdG8gZGVmaW5l
IGFuICJhZGFwdG9yIiB0aGF0IGhhcwotdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGBGb28oKWAgYW5k
IGNhbGxzIHRoZSBjdXN0b20gYWN0aW9uIHdpdGggdGhlCi1yaWdodCBhcmd1bWVudHM6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWJvb2wg
TXlJc1Zpc2libGVJblF1YWRyYW50MShib29sIHZpc2libGUsIGNvbnN0IHN0cmluZyYgbmFtZSwg
aW50IHgsIGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcDxwYWly
PGludCwgaW50PiwgZG91YmxlPiYgd2VpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBtaW5fd2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0KSB7Ci0gIHJldHVybiBJc1Zpc2li
bGVJblF1YWRyYW50MSh2aXNpYmxlLCB4LCB5KTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1v
Y2ssIEZvbyhfLCBfLCBfLCBfLCBfLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoTXlJ
c1Zpc2libGVJblF1YWRyYW50MSkpOyAgLy8gTm93IGl0IHdvcmtzLgotYGBgCi0KLUJ1dCBpc24n
dCB0aGlzIGF3a3dhcmQ/Ci0KLUdvb2dsZSBNb2NrIHByb3ZpZGVzIGEgZ2VuZXJpYyBfYWN0aW9u
IGFkYXB0b3JfLCBzbyB5b3UgY2FuIHNwZW5kIHlvdXIKLXRpbWUgbWluZGluZyBtb3JlIGltcG9y
dGFudCBidXNpbmVzcyB0aGFuIHdyaXRpbmcgeW91ciBvd24KLWFkYXB0b3JzLiBIZXJlJ3MgdGhl
IHN5bnRheDoKLQotYGBgCi0gIFdpdGhBcmdzPE4xLCBOMiwgLi4uLCBOaz4oYWN0aW9uKQotYGBg
Ci0KLWNyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcGFzc2VzIHRoZSBhcmd1bWVudHMgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gYXQKLXRoZSBnaXZlbiBpbmRpY2VzICgwLWJhc2VkKSB0byB0aGUgaW5uZXIg
YGFjdGlvbmAgYW5kIHBlcmZvcm1zCi1pdC4gVXNpbmcgYFdpdGhBcmdzYCwgb3VyIG9yaWdpbmFs
IGV4YW1wbGUgY2FuIGJlIHdyaXR0ZW4gYXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwot
dXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci11c2luZyA6OnRlc3Rpbmc6OldpdGhBcmdzOwotLi4u
Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhfLCBfLCBfLCBfLCBfLCBfLCBfKSkKLSAgICAgIC5X
aWxsT25jZShXaXRoQXJnczwwLCAyLCAzPihJbnZva2UoSXNWaXNpYmxlSW5RdWFkcmFudDEpKSk7
Ci0gICAgICAvLyBObyBuZWVkIHRvIGRlZmluZSB5b3VyIG93biBhZGFwdG9yLgotYGBgCi0KLUZv
ciBiZXR0ZXIgcmVhZGFiaWxpdHksIEdvb2dsZSBNb2NrIGFsc28gZ2l2ZXMgeW91OgotCi0gICog
YFdpdGhvdXRBcmdzKGFjdGlvbilgIHdoZW4gdGhlIGlubmVyIGBhY3Rpb25gIHRha2VzIF9ub18g
YXJndW1lbnQsIGFuZAotICAqIGBXaXRoQXJnPE4+KGFjdGlvbilgIChubyBgc2AgYWZ0ZXIgYEFy
Z2ApIHdoZW4gdGhlIGlubmVyIGBhY3Rpb25gIHRha2VzIF9vbmVfIGFyZ3VtZW50LgotCi1BcyB5
b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIGBJbnZva2VXaXRob3V0QXJncyguLi4pYCBpcyBqdXN0IHN5
bnRhY3RpYwotc3VnYXIgZm9yIGBXaXRob3V0QXJncyhJbm92a2UoLi4uKSlgLgotCi1IZXJlIGFy
ZSBtb3JlIHRpcHM6Ci0KLSAgKiBUaGUgaW5uZXIgYWN0aW9uIHVzZWQgaW4gYFdpdGhBcmdzYCBh
bmQgZnJpZW5kcyBkb2VzIG5vdCBoYXZlIHRvIGJlIGBJbnZva2UoKWAgLS0gaXQgY2FuIGJlIGFu
eXRoaW5nLgotICAqIFlvdSBjYW4gcmVwZWF0IGFuIGFyZ3VtZW50IGluIHRoZSBhcmd1bWVudCBs
aXN0IGlmIG5lY2Vzc2FyeSwgZS5nLiBgV2l0aEFyZ3M8MiwgMywgMywgNT4oLi4uKWAuCi0gICog
WW91IGNhbiBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhcmd1bWVudHMsIGUuZy4gYFdpdGhBcmdz
PDMsIDIsIDE+KC4uLilgLgotICAqIFRoZSB0eXBlcyBvZiB0aGUgc2VsZWN0ZWQgYXJndW1lbnRz
IGRvIF9ub3RfIGhhdmUgdG8gbWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiB0aGUgaW5uZXIgYWN0aW9u
IGV4YWN0bHkuIEl0IHdvcmtzIGFzIGxvbmcgYXMgdGhleSBjYW4gYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnRzIG9mIHRoZSBpbm5lciBhY3Rpb24u
IEZvciBleGFtcGxlLCBpZiB0aGUgNC10aCBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiBp
cyBhbiBgaW50YCBhbmQgYG15X2FjdGlvbmAgdGFrZXMgYSBgZG91YmxlYCwgYFdpdGhBcmc8ND4o
bXlfYWN0aW9uKWAgd2lsbCB3b3JrLgotCi0jIyBJZ25vcmluZyBBcmd1bWVudHMgaW4gQWN0aW9u
IEZ1bmN0aW9ucyAjIwotCi1UaGUgc2VsZWN0aW5nLWFuLWFjdGlvbidzLWFyZ3VtZW50cyByZWNp
cGUgc2hvd2VkIHVzIG9uZSB3YXkgdG8gbWFrZSBhCi1tb2NrIGZ1bmN0aW9uIGFuZCBhbiBhY3Rp
b24gd2l0aCBpbmNvbXBhdGlibGUgYXJndW1lbnQgbGlzdHMgZml0Ci10b2dldGhlci4gVGhlIGRv
d25zaWRlIGlzIHRoYXQgd3JhcHBpbmcgdGhlIGFjdGlvbiBpbgotYFdpdGhBcmdzPC4uLj4oKWAg
Y2FuIGdldCB0ZWRpb3VzIGZvciBwZW9wbGUgd3JpdGluZyB0aGUgdGVzdHMuCi0KLUlmIHlvdSBh
cmUgZGVmaW5pbmcgYSBmdW5jdGlvbiwgbWV0aG9kLCBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0
aAotYEludm9rZSooKWAsIGFuZCB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIHNvbWUgb2YgaXRz
IGFyZ3VtZW50cywgYW4KLWFsdGVybmF0aXZlIHRvIGBXaXRoQXJnc2AgaXMgdG8gZGVjbGFyZSB0
aGUgdW5pbnRlcmVzdGluZyBhcmd1bWVudHMgYXMKLWBVbnVzZWRgLiBUaGlzIG1ha2VzIHRoZSBk
ZWZpbml0aW9uIGxlc3MgY2x1dHRlcmVkIGFuZCBsZXNzIGZyYWdpbGUgaW4KLWNhc2UgdGhlIHR5
cGVzIG9mIHRoZSB1bmludGVyZXN0aW5nIGFyZ3VtZW50cyBjaGFuZ2UuIEl0IGNvdWxkIGFsc28K
LWluY3JlYXNlIHRoZSBjaGFuY2UgdGhlIGFjdGlvbiBmdW5jdGlvbiBjYW4gYmUgcmV1c2VkLiBG
b3IgZXhhbXBsZSwKLWdpdmVuCi0KLWBgYAotICBNT0NLX01FVEhPRDMoRm9vLCBkb3VibGUoY29u
c3Qgc3RyaW5nJiBsYWJlbCwgZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci0gIE1PQ0tfTUVUSE9EMyhC
YXIsIGRvdWJsZShpbnQgaW5kZXgsIGRvdWJsZSB4LCBkb3VibGUgeSkpOwotYGBgCi0KLWluc3Rl
YWQgb2YKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKLQotZG91YmxlIERpc3RhbmNlVG9PcmlnaW5XaXRoTGFiZWwoY29uc3Qgc3RyaW5nJiBsYWJl
bCwgZG91YmxlIHgsIGRvdWJsZSB5KSB7Ci0gIHJldHVybiBzcXJ0KHgqeCArIHkqeSk7Ci19Ci0K
LWRvdWJsZSBEaXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KGludCBpbmRleCwgZG91YmxlIHgsIGRv
dWJsZSB5KSB7Ci0gIHJldHVybiBzcXJ0KHgqeCArIHkqeSk7Ci19Ci0uLi4KLQotICBFWEVQQ1Rf
Q0FMTChtb2NrLCBGb28oImFiYyIsIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0
YW5jZVRvT3JpZ2luV2l0aExhYmVsKSk7Ci0gIEVYRVBDVF9DQUxMKG1vY2ssIEJhcig1LCBfLCBf
KSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbldpdGhJbmRleCkpOwot
YGBgCi0KLXlvdSBjb3VsZCB3cml0ZQotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5n
IDo6dGVzdGluZzo6SW52b2tlOwotdXNpbmcgOjp0ZXN0aW5nOjpVbnVzZWQ7Ci0KLWRvdWJsZSBE
aXN0YW5jZVRvT3JpZ2luKFVudXNlZCwgZG91YmxlIHgsIGRvdWJsZSB5KSB7Ci0gIHJldHVybiBz
cXJ0KHgqeCArIHkqeSk7Ci19Ci0uLi4KLQotICBFWEVQQ1RfQ0FMTChtb2NrLCBGb28oImFiYyIs
IF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7Ci0gIEVY
RVBDVF9DQUxMKG1vY2ssIEJhcig1LCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoRGlz
dGFuY2VUb09yaWdpbikpOwotYGBgCi0KLSMjIFNoYXJpbmcgQWN0aW9ucyAjIwotCi1KdXN0IGxp
a2UgbWF0Y2hlcnMsIGEgR29vZ2xlIE1vY2sgYWN0aW9uIG9iamVjdCBjb25zaXN0cyBvZiBhIHBv
aW50ZXIKLXRvIGEgcmVmLWNvdW50ZWQgaW1wbGVtZW50YXRpb24gb2JqZWN0LiBUaGVyZWZvcmUg
Y29weWluZyBhY3Rpb25zIGlzCi1hbHNvIGFsbG93ZWQgYW5kIHZlcnkgZWZmaWNpZW50LiBXaGVu
IHRoZSBsYXN0IGFjdGlvbiB0aGF0IHJlZmVyZW5jZXMKLXRoZSBpbXBsZW1lbnRhdGlvbiBvYmpl
Y3QgZGllcywgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCB3aWxsIGJlCi1kZWxldGVkLgotCi1J
ZiB5b3UgaGF2ZSBzb21lIGNvbXBsZXggYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gdXNlIGFnYWlu
IGFuZCBhZ2FpbiwKLXlvdSBtYXkgbm90IGhhdmUgdG8gYnVpbGQgaXQgZnJvbSBzY3JhdGNoIGV2
ZXJ5dGltZS4gSWYgdGhlIGFjdGlvbgotZG9lc24ndCBoYXZlIGFuIGludGVybmFsIHN0YXRlIChp
LmUuIGlmIGl0IGFsd2F5cyBkb2VzIHRoZSBzYW1lIHRoaW5nCi1ubyBtYXR0ZXIgaG93IG1hbnkg
dGltZXMgaXQgaGFzIGJlZW4gY2FsbGVkKSwgeW91IGNhbiBhc3NpZ24gaXQgdG8gYW4KLWFjdGlv
biB2YXJpYWJsZSBhbmQgdXNlIHRoYXQgdmFyaWFibGUgcmVwZWF0ZWRseS4gRm9yIGV4YW1wbGU6
Ci0KLWBgYAotICBBY3Rpb248Ym9vbChpbnQqKT4gc2V0X2ZsYWcgPSBEb0FsbChTZXRBcmdQb2lu
dGVlPDA+KDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4o
dHJ1ZSkpOwotICAuLi4gdXNlIHNldF9mbGFnIGluIC5XaWxsT25jZSgpIGFuZCAuV2lsbFJlcGVh
dGVkbHkoKSAuLi4KLWBgYAotCi1Ib3dldmVyLCBpZiB0aGUgYWN0aW9uIGhhcyBpdHMgb3duIHN0
YXRlLCB5b3UgbWF5IGJlIHN1cnByaXNlZCBpZiB5b3UKLXNoYXJlIHRoZSBhY3Rpb24gb2JqZWN0
LiBTdXBwb3NlIHlvdSBoYXZlIGFuIGFjdGlvbiBmYWN0b3J5Ci1gSW5jcmVtZW50Q291bnRlcihp
bml0KWAgd2hpY2ggY3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBpbmNyZW1lbnRzIGFuZAotcmV0dXJu
cyBhIGNvdW50ZXIgd2hvc2UgaW5pdGlhbCB2YWx1ZSBpcyBgaW5pdGAsIHVzaW5nIHR3byBhY3Rp
b25zCi1jcmVhdGVkIGZyb20gdGhlIHNhbWUgZXhwcmVzc2lvbiBhbmQgdXNpbmcgYSBzaGFyZWQg
YWN0aW9uIHdpbGwKLWV4aWhpYml0IGRpZmZlcmVudCBiZWhhdmlvcnMuIEV4YW1wbGU6Ci0KLWBg
YAotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcygpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KElu
Y3JlbWVudENvdW50ZXIoMCkpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgpKQotICAgICAg
LldpbGxSZXBlYXRlZGx5KEluY3JlbWVudENvdW50ZXIoMCkpOwotICBmb28uRG9UaGlzKCk7ICAv
LyBSZXR1cm5zIDEuCi0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMi4KLSAgZm9vLkRvVGhh
dCgpOyAgLy8gUmV0dXJucyAxIC0gQmxhaCgpIHVzZXMgYSBkaWZmZXJlbnQKLSAgICAgICAgICAg
ICAgICAgLy8gY291bnRlciB0aGFuIEJhcigpJ3MuCi1gYGAKLQotdmVyc3VzCi0KLWBgYAotICBB
Y3Rpb248aW50KCk+IGluY3JlbWVudCA9IEluY3JlbWVudENvdW50ZXIoMCk7Ci0KLSAgRVhQRUNU
X0NBTEwoZm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KGluY3Jl
bWVudCk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4KLSAgZm9vLkRvVGhpcygpOyAg
Ly8gUmV0dXJucyAyLgotICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1cm5zIDMgLSB0aGUgY291bnRl
ciBpcyBzaGFyZWQuCi1gYGAKLQotIyBNaXNjIFJlY2lwZXMgb24gVXNpbmcgR29vZ2xlIE1vY2sg
IwotCi0jIyBNYWtpbmcgdGhlIENvbXBpbGF0aW9uIEZhc3RlciAjIwotCi1CZWxpZXZlIGl0IG9y
IG5vdCwgdGhlIF92YXN0IG1ham9yaXR5XyBvZiB0aGUgdGltZSBzcGVudCBvbiBjb21waWxpbmcK
LWEgbW9jayBjbGFzcyBpcyBpbiBnZW5lcmF0aW5nIGl0cyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvciwgYXMgdGhleQotcGVyZm9ybSBub24tdHJpdmlhbCB0YXNrcyAoZS5nLiB2ZXJpZmljYXRp
b24gb2YgdGhlCi1leHBlY3RhdGlvbnMpLiBXaGF0J3MgbW9yZSwgbW9jayBtZXRob2RzIHdpdGgg
ZGlmZmVyZW50IHNpZ25hdHVyZXMKLWhhdmUgZGlmZmVyZW50IHR5cGVzIGFuZCB0aHVzIHRoZWly
IGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBuZWVkIHRvCi1iZSBnZW5lcmF0ZWQgYnkgdGhlIGNv
bXBpbGVyIHNlcGFyYXRlbHkuIEFzIGEgcmVzdWx0LCBpZiB5b3UgbW9jayBtYW55Ci1kaWZmZXJl
bnQgdHlwZXMgb2YgbWV0aG9kcywgY29tcGlsaW5nIHlvdXIgbW9jayBjbGFzcyBjYW4gZ2V0IHJl
YWxseQotc2xvdy4KLQotSWYgeW91IGFyZSBleHBlcmllbmNpbmcgc2xvdyBjb21waWxhdGlvbiwg
eW91IGNhbiBtb3ZlIHRoZSBkZWZpbml0aW9uCi1vZiB5b3VyIG1vY2sgY2xhc3MnIGNvbnN0cnVj
dG9yIGFuZCBkZXN0cnVjdG9yIG91dCBvZiB0aGUgY2xhc3MgYm9keQotYW5kIGludG8gYSBgLmNw
cGAgZmlsZS4gVGhpcyB3YXksIGV2ZW4gaWYgeW91IGAjaW5jbHVkZWAgeW91ciBtb2NrCi1jbGFz
cyBpbiBOIGZpbGVzLCB0aGUgY29tcGlsZXIgb25seSBuZWVkcyB0byBnZW5lcmF0ZSBpdHMgY29u
c3RydWN0b3IKLWFuZCBkZXN0cnVjdG9yIG9uY2UsIHJlc3VsdGluZyBpbiBhIG11Y2ggZmFzdGVy
IGNvbXBpbGF0aW9uLgotCi1MZXQncyBpbGx1c3RyYXRlIHRoZSBpZGVhIHVzaW5nIGFuIGV4YW1w
bGUuIEhlcmUncyB0aGUgZGVmaW5pdGlvbiBvZiBhCi1tb2NrIGNsYXNzIGJlZm9yZSBhcHBseWlu
ZyB0aGlzIHJlY2lwZToKLQotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmguCi0uLi4KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIFNpbmNlIHdlIGRvbid0IGRlY2xh
cmUgdGhlIGNvbnN0cnVjdG9yIG9yIHRoZSBkZXN0cnVjdG9yLAotICAvLyB0aGUgY29tcGlsZXIg
d2lsbCBnZW5lcmF0ZSB0aGVtIGluIGV2ZXJ5IHRyYW5zbGF0aW9uIHVuaXQKLSAgLy8gd2hlcmUg
dGhpcyBtb2NrIGNsYXNzIGlzIHVzZWQuCi0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50KCkp
OwotICBNT0NLX01FVEhPRDEoRG9UaGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOwotICAuLi4g
bW9yZSBtb2NrIG1ldGhvZHMgLi4uCi19OwotYGBgCi0KLUFmdGVyIHRoZSBjaGFuZ2UsIGl0IHdv
dWxkIGxvb2sgbGlrZToKLQotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmguCi0uLi4KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvciBhcmUgZGVjbGFyZWQsIGJ1dCBub3QgZGVmaW5lZCwgaGVyZS4KLSAgTW9ja0Zv
bygpOwotICB2aXJ0dWFsIH5Nb2NrRm9vKCk7Ci0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgaW50
KCkpOwotICBNT0NLX01FVEhPRDEoRG9UaGF0LCBib29sKGNvbnN0IGNoYXIqIHN0cikpOwotICAu
Li4gbW9yZSBtb2NrIG1ldGhvZHMgLi4uCi19OwotYGBgCi1hbmQKLWBgYAotLy8gRmlsZSBtb2Nr
X2Zvby5jcHAuCi0jaW5jbHVkZSAicGF0aC90by9tb2NrX2Zvby5oIgotCi0vLyBUaGUgZGVmaW5p
dGlvbnMgbWF5IGFwcGVhciB0cml2aWFsLCBidXQgdGhlIGZ1bmN0aW9ucyBhY3R1YWxseSBkbyBh
Ci0vLyBsb3Qgb2YgdGhpbmdzIHRocm91Z2ggdGhlIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyBv
ZiB0aGUgbWVtYmVyCi0vLyB2YXJpYWJsZXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIG1vY2sgbWV0
aG9kcy4KLU1vY2tGb286Ok1vY2tGb28oKSB7fQotTW9ja0Zvbzo6fk1vY2tGb28oKSB7fQotYGBg
Ci0KLSMjIEZvcmNpbmcgYSBWZXJpZmljYXRpb24gIyMKLQotV2hlbiBpdCdzIGJlaW5nIGRlc3Rv
eWVkLCB5b3VyIGZyaWVuZGx5IG1vY2sgb2JqZWN0IHdpbGwgYXV0b21hdGljYWxseQotdmVyaWZ5
IHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgd2ls
bAotZ2VuZXJhdGUgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
dGVzdC8pIGZhaWx1cmVzCi1pZiBub3QuIFRoaXMgaXMgY29udmVuaWVudCBhcyBpdCBsZWF2ZXMg
eW91IHdpdGggb25lIGxlc3MgdGhpbmcgdG8KLXdvcnJ5IGFib3V0LiBUaGF0IGlzLCB1bmxlc3Mg
eW91IGFyZSBub3Qgc3VyZSBpZiB5b3VyIG1vY2sgb2JqZWN0IHdpbGwKLWJlIGRlc3RveWVkLgot
Ci1Ib3cgY291bGQgaXQgYmUgdGhhdCB5b3VyIG1vY2sgb2JqZWN0IHdvbid0IGV2ZW50dWFsbHkg
YmUgZGVzdHJveWVkPwotV2VsbCwgaXQgbWlnaHQgYmUgY3JlYXRlZCBvbiB0aGUgaGVhcCBhbmQg
b3duZWQgYnkgdGhlIGNvZGUgeW91IGFyZQotdGVzdGluZy4gU3VwcG9zZSB0aGVyZSdzIGEgYnVn
IGluIHRoYXQgY29kZSBhbmQgaXQgZG9lc24ndCBkZWxldGUgdGhlCi1tb2NrIG9iamVjdCBwcm9w
ZXJseSAtIHlvdSBjb3VsZCBlbmQgdXAgd2l0aCBhIHBhc3NpbmcgdGVzdCB3aGVuCi10aGVyZSdz
IGFjdHVhbGx5IGEgYnVnLgotCi1Vc2luZyBhIGhlYXAgY2hlY2tlciBpcyBhIGdvb2QgaWRlYSBh
bmQgY2FuIGFsbGV2aWF0ZSB0aGUgY29uY2VybiwgYnV0Ci1pdHMgaW1wbGVtZW50YXRpb24gbWF5
IG5vdCBiZSAxMDAlIHJlbGlhYmxlLiBTbywgc29tZXRpbWVzIHlvdSBkbyB3YW50Ci10byBfZm9y
Y2VfIEdvb2dsZSBNb2NrIHRvIHZlcmlmeSBhIG1vY2sgb2JqZWN0IGJlZm9yZSBpdCBpcwotKGhv
cGVmdWxseSkgZGVzdHJ1Y3RlZC4gWW91IGNhbiBkbyB0aGlzIHdpdGgKLWBNb2NrOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmplY3QpYDoKLQotYGBgCi1URVNUKE15U2VydmVy
VGVzdCwgUHJvY2Vzc2VzUmVxdWVzdCkgewotICB1c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0KLSAg
TW9ja0ZvbyogY29uc3QgZm9vID0gbmV3IE1vY2tGb287Ci0gIEVYUEVDVF9DQUxMKCpmb28sIC4u
LikuLi47Ci0gIC8vIC4uLiBvdGhlciBleHBlY3RhdGlvbnMgLi4uCi0KLSAgLy8gc2VydmVyIG5v
dyBvd25zIGZvby4KLSAgTXlTZXJ2ZXIgc2VydmVyKGZvbyk7Ci0gIHNlcnZlci5Qcm9jZXNzUmVx
dWVzdCguLi4pOwotCi0gIC8vIEluIGNhc2UgdGhhdCBzZXJ2ZXIncyBkZXN0cnVjdG9yIHdpbGwg
Zm9yZ2V0IHRvIGRlbGV0ZSBmb28sCi0gIC8vIHRoaXMgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0
aW9ucyBhbnl3YXkuCi0gIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKGZvbyk7Ci19
ICAvLyBzZXJ2ZXIgaXMgZGVzdHJveWVkIHdoZW4gaXQgZ29lcyBvdXQgb2Ygc2NvcGUgaGVyZS4K
LWBgYAotCi0qKlRpcDoqKiBUaGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKClg
IGZ1bmN0aW9uIHJldHVybnMgYQotYGJvb2xgIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIHZlcmlm
aWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYHRydWVgIGZvcgoteWVzKSwgc28geW91IGNhbiB3cmFw
IHRoYXQgZnVuY3Rpb24gY2FsbCBpbnNpZGUgYSBgQVNTRVJUX1RSVUUoKWAgaWYKLXRoZXJlIGlz
IG5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgd2hlbiB0aGUgdmVyaWZpY2F0aW9uIGhhcyBmYWlsZWQu
Ci0KLSMjIFVzaW5nIENoZWNrIFBvaW50cyAjIwotCi1Tb21ldGltZXMgeW91IG1heSB3YW50IHRv
ICJyZXNldCIgYSBtb2NrIG9iamVjdCBhdCB2YXJpb3VzIGNoZWNrCi1wb2ludHMgaW4geW91ciB0
ZXN0OiBhdCBlYWNoIGNoZWNrIHBvaW50LCB5b3UgdmVyaWZ5IHRoYXQgYWxsIGV4aXN0aW5nCi1l
eHBlY3RhdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGhhdmUgYmVlbiBzYXRpc2ZpZWQsIGFuZCB0
aGVuIHlvdSBzZXQKLXNvbWUgbmV3IGV4cGVjdGF0aW9ucyBvbiBpdCBhcyBpZiBpdCdzIG5ld2x5
IGNyZWF0ZWQuIFRoaXMgYWxsb3dzIHlvdQotdG8gd29yayB3aXRoIGEgbW9jayBvYmplY3QgaW4g
InBoYXNlcyIgd2hvc2Ugc2l6ZXMgYXJlIGVhY2gKLW1hbmFnZWFibGUuCi0KLU9uZSBzdWNoIHNj
ZW5hcmlvIGlzIHRoYXQgaW4geW91ciB0ZXN0J3MgYFNldFVwKClgIGZ1bmN0aW9uLCB5b3UgbWF5
Ci13YW50IHRvIHB1dCB0aGUgb2JqZWN0IHlvdSBhcmUgdGVzdGluZyBpbnRvIGEgY2VydGFpbiBz
dGF0ZSwgd2l0aCB0aGUKLWhlbHAgZnJvbSBhIG1vY2sgb2JqZWN0LiBPbmNlIGluIHRoZSBkZXNp
cmVkIHN0YXRlLCB5b3Ugd2FudCB0byBjbGVhcgotYWxsIGV4cGVjdGF0aW9ucyBvbiB0aGUgbW9j
aywgc3VjaCB0aGF0IGluIHRoZSBgVEVTVF9GYCBib2R5IHlvdSBjYW4KLXNldCBmcmVzaCBleHBl
Y3RhdGlvbnMgb24gaXQuCi0KLUFzIHlvdSBtYXkgaGF2ZSBmaWd1cmVkIG91dCwgdGhlIGBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpYAotZnVuY3Rpb24gd2Ugc2F3IGluIHRoZSBw
cmV2aW91cyByZWNpcGUgY2FuIGhlbHAgeW91IGhlcmUuIE9yLCBpZiB5b3UKLWFyZSB1c2luZyBg
T05fQ0FMTCgpYCB0byBzZXQgZGVmYXVsdCBhY3Rpb25zIG9uIHRoZSBtb2NrIG9iamVjdCBhbmQK
LXdhbnQgdG8gY2xlYXIgdGhlIGRlZmF1bHQgYWN0aW9ucyBhcyB3ZWxsLCB1c2UKLWBNb2NrOjpW
ZXJpZnlBbmRDbGVhcigmbW9ja19vYmplY3QpYCBpbnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIGRvZXMg
d2hhdAotYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrX29iamVjdClgIGRv
ZXMgYW5kIHJldHVybnMgdGhlCi1zYW1lIGBib29sYCwgKipwbHVzKiogaXQgY2xlYXJzIHRoZSBg
T05fQ0FMTCgpYCBzdGF0ZW1lbnRzIG9uCi1gbW9ja19vYmplY3RgIHRvby4KLQotQW5vdGhlciB0
cmljayB5b3UgY2FuIHVzZSB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBpcyB0byBwdXQgdGhl
Ci1leHBlY3RhdGlvbnMgaW4gc2VxdWVuY2VzIGFuZCBpbnNlcnQgY2FsbHMgdG8gYSBkdW1teSAi
Y2hlY2stcG9pbnQiCi1mdW5jdGlvbiBhdCBzcGVjaWZpYyBwbGFjZXMuIFRoZW4geW91IGNhbiB2
ZXJpZnkgdGhhdCB0aGUgbW9jawotZnVuY3Rpb24gY2FsbHMgZG8gaGFwcGVuIGF0IHRoZSByaWdo
dCB0aW1lLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZQotZXhlcmNpc2luZyBjb2RlOgotCi1gYGAK
LUZvbygxKTsKLUZvbygyKTsKLUZvbygzKTsKLWBgYAotCi1hbmQgd2FudCB0byB2ZXJpZnkgdGhh
dCBgRm9vKDEpYCBhbmQgYEZvbygzKWAgYm90aCBpbnZva2UKLWBtb2NrLkJhcigiYSIpYCwgYnV0
IGBGb28oMilgIGRvZXNuJ3QgaW52b2tlIGFueXRoaW5nLiBZb3UgY2FuIHdyaXRlOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6TW9ja0Z1bmN0aW9uOwotCi1URVNUKEZvb1Rlc3QsIEludm9rZXNC
YXJDb3JyZWN0bHkpIHsKLSAgTXlNb2NrIG1vY2s7Ci0gIC8vIENsYXNzIE1vY2tGdW5jdGlvbjxG
PiBoYXMgZXhhY3RseSBvbmUgbW9jayBtZXRob2QuICBJdCBpcyBuYW1lZAotICAvLyBDYWxsKCkg
YW5kIGhhcyB0eXBlIEYuCi0gIE1vY2tGdW5jdGlvbjx2b2lkKHN0cmluZyBjaGVja19wb2ludF9u
YW1lKT4gY2hlY2s7Ci0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0KLSAgICBFWFBFQ1RfQ0FMTCht
b2NrLCBCYXIoImEiKSk7Ci0gICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwoIjEiKSk7Ci0gICAg
RVhQRUNUX0NBTEwoY2hlY2ssIENhbGwoIjIiKSk7Ci0gICAgRVhQRUNUX0NBTEwobW9jaywgQmFy
KCJhIikpOwotICB9Ci0gIEZvbygxKTsKLSAgY2hlY2suQ2FsbCgiMSIpOwotICBGb28oMik7Ci0g
IGNoZWNrLkNhbGwoIjIiKTsKLSAgRm9vKDMpOwotfQotYGBgCi0KLVRoZSBleHBlY3RhdGlvbiBz
cGVjIHNheXMgdGhhdCB0aGUgZmlyc3QgYEJhcigiYSIpYCBtdXN0IGhhcHBlbiBiZWZvcmUKLWNo
ZWNrIHBvaW50ICIxIiwgdGhlIHNlY29uZCBgQmFyKCJhIilgIG11c3QgaGFwcGVuIGFmdGVyIGNo
ZWNrIHBvaW50ICIyIiwKLWFuZCBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmV0d2VlbiB0aGUgdHdv
IGNoZWNrIHBvaW50cy4gVGhlIGV4cGxpY2l0Ci1jaGVjayBwb2ludHMgbWFrZSBpdCBlYXN5IHRv
IHRlbGwgd2hpY2ggYEJhcigiYSIpYCBpcyBjYWxsZWQgYnkgd2hpY2gKLWNhbGwgdG8gYEZvbygp
YC4KLQotIyMgTW9ja2luZyBEZXN0cnVjdG9ycyAjIwotCi1Tb21ldGltZXMgeW91IHdhbnQgdG8g
bWFrZSBzdXJlIGEgbW9jayBvYmplY3QgaXMgZGVzdHJ1Y3RlZCBhdCB0aGUKLXJpZ2h0IHRpbWUs
IGUuZy4gYWZ0ZXIgYGJhci0+QSgpYCBpcyBjYWxsZWQgYnV0IGJlZm9yZSBgYmFyLT5CKClgIGlz
Ci1jYWxsZWQuIFdlIGFscmVhZHkga25vdyB0aGF0IHlvdSBjYW4gc3BlY2lmeSBjb25zdHJhaW50
cyBvbiB0aGUgb3JkZXIKLW9mIG1vY2sgZnVuY3Rpb24gY2FsbHMsIHNvIGFsbCB3ZSBuZWVkIHRv
IGRvIGlzIHRvIG1vY2sgdGhlIGRlc3RydWN0b3IKLW9mIHRoZSBtb2NrIGZ1bmN0aW9uLgotCi1U
aGlzIHNvdW5kcyBzaW1wbGUsIGV4Y2VwdCBmb3Igb25lIHByb2JsZW06IGEgZGVzdHJ1Y3RvciBp
cyBhIHNwZWNpYWwKLWZ1bmN0aW9uIHdpdGggc3BlY2lhbCBzeW50YXggYW5kIHNwZWNpYWwgc2Vt
YW50aWNzLCBhbmQgdGhlCi1gTU9DS19NRVRIT0QwYCBtYWNybyBkb2Vzbid0IHdvcmsgZm9yIGl0
OgotCi1gYGAKLSAgTU9DS19NRVRIT0QwKH5Nb2NrRm9vLCB2b2lkKCkpOyAgLy8gV29uJ3QgY29t
cGlsZSEKLWBgYAotCi1UaGUgZ29vZCBuZXdzIGlzIHRoYXQgeW91IGNhbiB1c2UgYSBzaW1wbGUg
cGF0dGVybiB0byBhY2hpZXZlIHRoZSBzYW1lCi1lZmZlY3QuIEZpcnN0LCBhZGQgYSBtb2NrIGZ1
bmN0aW9uIGBEaWUoKWAgdG8geW91ciBtb2NrIGNsYXNzIGFuZCBjYWxsCi1pdCBpbiB0aGUgZGVz
dHJ1Y3RvciwgbGlrZSB0aGlzOgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
LSAgLi4uCi0gIC8vIEFkZCB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyB0byB0aGUgbW9jayBjbGFz
cy4KLSAgTU9DS19NRVRIT0QwKERpZSwgdm9pZCgpKTsKLSAgdmlydHVhbCB+TW9ja0ZvbygpIHsg
RGllKCk7IH0KLX07Ci1gYGAKLQotKElmIHRoZSBuYW1lIGBEaWUoKWAgY2xhc2hlcyB3aXRoIGFu
IGV4aXN0aW5nIHN5bWJvbCwgY2hvb3NlIGFub3RoZXIKLW5hbWUuKSBOb3csIHdlIGhhdmUgdHJh
bnNsYXRlZCB0aGUgcHJvYmxlbSBvZiB0ZXN0aW5nIHdoZW4gYSBgTW9ja0Zvb2AKLW9iamVjdCBk
aWVzIHRvIHRlc3Rpbmcgd2hlbiBpdHMgYERpZSgpYCBtZXRob2QgaXMgY2FsbGVkOgotCi1gYGAK
LSAgTW9ja0ZvbyogZm9vID0gbmV3IE1vY2tGb287Ci0gIE1vY2tCYXIqIGJhciA9IG5ldyBNb2Nr
QmFyOwotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgczsKLQotICAgIC8vIEV4cGVjdHMgKmZv
byB0byBkaWUgYWZ0ZXIgYmFyLT5BKCkgYW5kIGJlZm9yZSBiYXItPkIoKS4KLSAgICBFWFBFQ1Rf
Q0FMTCgqYmFyLCBBKCkpOwotICAgIEVYUEVDVF9DQUxMKCpmb28sIERpZSgpKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqYmFyLCBCKCkpOwotICB9Ci1gYGAKLQotQW5kIHRoYXQncyB0aGF0LgotCi0jIyBV
c2luZyBHb29nbGUgTW9jayBhbmQgVGhyZWFkcyAjIwotCi0qKklNUE9SVEFOVCBOT1RFOioqIFdo
YXQgd2UgZGVzY3JpYmUgaW4gdGhpcyByZWNpcGUgaXMgKipPTkxZKiogdHJ1ZSBvbgotcGxhdGZv
cm1zIHdoZXJlIEdvb2dsZSBNb2NrIGlzIHRocmVhZC1zYWZlLiBDdXJyZW50bHkgdGhlc2UgYXJl
IG9ubHkKLXBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlIHB0aHJlYWRzIGxpYnJhcnkgKHRoaXMg
aW5jbHVkZXMgTGludXggYW5kIE1hYykuCi1UbyBtYWtlIGl0IHRocmVhZC1zYWZlIG9uIG90aGVy
IHBsYXRmb3JtcyB3ZSBvbmx5IG5lZWQgdG8gaW1wbGVtZW50Ci1zb21lIHN5bmNocm9uaXphdGlv
biBvcGVyYXRpb25zIGluIGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oImAuCi0KLUluIGEg
Kip1bml0KiogdGVzdCwgaXQncyBiZXN0IGlmIHlvdSBjb3VsZCBpc29sYXRlIGFuZCB0ZXN0IGEg
cGllY2Ugb2YKLWNvZGUgaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gVGhhdCBhdm9pZHMg
cmFjZSBjb25kaXRpb25zIGFuZAotZGVhZCBsb2NrcywgYW5kIG1ha2VzIGRlYnVnZ2luZyB5b3Vy
IHRlc3QgbXVjaCBlYXNpZXIuCi0KLVlldCBtYW55IHByb2dyYW1zIGFyZSBtdWx0aS10aHJlYWRl
ZCwgYW5kIHNvbWV0aW1lcyB0byB0ZXN0IHNvbWV0aGluZwotd2UgbmVlZCB0byBwb3VuZCBvbiBp
dCBmcm9tIG1vcmUgdGhhbiBvbmUgdGhyZWFkLiBHb29nbGUgTW9jayB3b3JrcwotZm9yIHRoaXMg
cHVycG9zZSB0b28uCi0KLVJlbWVtYmVyIHRoZSBzdGVwcyBmb3IgdXNpbmcgYSBtb2NrOgotCi0g
IDEuIENyZWF0ZSBhIG1vY2sgb2JqZWN0IGBmb29gLgotICAxLiBTZXQgaXRzIGRlZmF1bHQgYWN0
aW9ucyBhbmQgZXhwZWN0YXRpb25zIHVzaW5nIGBPTl9DQUxMKClgIGFuZCBgRVhQRUNUX0NBTEwo
KWAuCi0gIDEuIFRoZSBjb2RlIHVuZGVyIHRlc3QgY2FsbHMgbWV0aG9kcyBvZiBgZm9vYC4KLSAg
MS4gT3B0aW9uYWxseSwgdmVyaWZ5IGFuZCByZXNldCB0aGUgbW9jay4KLSAgMS4gRGVzdHJveSB0
aGUgbW9jayB5b3Vyc2VsZiwgb3IgbGV0IHRoZSBjb2RlIHVuZGVyIHRlc3QgZGVzdHJveSBpdC4g
VGhlIGRlc3RydWN0b3Igd2lsbCBhdXRvbWF0aWNhbGx5IHZlcmlmeSBpdC4KLQotSWYgeW91IGZv
bGxvdyB0aGUgZm9sbG93aW5nIHNpbXBsZSBydWxlcywgeW91ciBtb2NrcyBhbmQgdGhyZWFkcyBj
YW4KLWxpdmUgaGFwcGlseSB0b2dldGVyOgotCi0gICogRXhlY3V0ZSB5b3VyIF90ZXN0IGNvZGVf
IChhcyBvcHBvc2VkIHRvIHRoZSBjb2RlIGJlaW5nIHRlc3RlZCkgaW4gX29uZV8gdGhyZWFkLiBU
aGlzIG1ha2VzIHlvdXIgdGVzdCBlYXN5IHRvIGZvbGxvdy4KLSAgKiBPYnZpb3VzbHksIHlvdSBj
YW4gZG8gc3RlcCAjMSB3aXRob3V0IGxvY2tpbmcuCi0gICogV2hlbiBkb2luZyBzdGVwICMyIGFu
ZCAjNSwgbWFrZSBzdXJlIG5vIG90aGVyIHRocmVhZCBpcyBhY2Nlc3NpbmcgYGZvb2AuIE9idmlv
dXMgdG9vLCBodWg/Ci0gICogIzMgYW5kICM0IGNhbiBiZSBkb25lIGVpdGhlciBpbiBvbmUgdGhy
ZWFkIG9yIGluIG11bHRpcGxlIHRocmVhZHMgLSBhbnl3YXkgeW91IHdhbnQuIEdvb2dsZSBNb2Nr
IHRha2VzIGNhcmUgb2YgdGhlIGxvY2tpbmcsIHNvIHlvdSBkb24ndCBoYXZlIHRvIGRvIGFueSAt
IHVubGVzcyByZXF1aXJlZCBieSB5b3VyIHRlc3QgbG9naWMuCi0KLUlmIHlvdSB2aW9sYXRlIHRo
ZSBydWxlcyAoZm9yIGV4YW1wbGUsIGlmIHlvdSBzZXQgZXhwZWN0YXRpb25zIG9uIGEKLW1vY2sg
d2hpbGUgYW5vdGhlciB0aHJlYWQgaXMgY2FsbGluZyBpdHMgbWV0aG9kcyksIHlvdSBnZXQgdW5k
ZWZpbmVkCi1iZWhhdmlvci4gVGhhdCdzIG5vdCBmdW4sIHNvIGRvbid0IGRvIGl0LgotCi1Hb29n
bGUgTW9jayBndWFyYW50ZWVzIHRoYXQgdGhlIGFjdGlvbiBmb3IgYSBtb2NrIGZ1bmN0aW9uIGlz
IGRvbmUgaW4KLXRoZSBzYW1lIHRocmVhZCB0aGF0IGNhbGxlZCB0aGUgbW9jayBmdW5jdGlvbi4g
Rm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oMSkpCi0gICAg
ICAuV2lsbE9uY2UoYWN0aW9uMSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygyKSkKLSAgICAg
IC5XaWxsT25jZShhY3Rpb24yKTsKLWBgYAotCi1pZiBgRm9vKDEpYCBpcyBjYWxsZWQgaW4gdGhy
ZWFkIDEgYW5kIGBGb28oMilgIGlzIGNhbGxlZCBpbiB0aHJlYWQgMiwKLUdvb2dsZSBNb2NrIHdp
bGwgZXhlY3V0ZSBgYWN0aW9uMWAgaW4gdGhyZWFkIDEgYW5kIGBhY3Rpb24yYCBpbiB0aHJlYWQK
LTIuCi0KLUdvb2dsZSBNb2NrIGRvZXMgX25vdF8gaW1wb3NlIGEgc2VxdWVuY2Ugb24gYWN0aW9u
cyBwZXJmb3JtZWQgaW4KLWRpZmZlcmVudCB0aHJlYWRzIChkb2luZyBzbyBtYXkgY3JlYXRlIGRl
YWRsb2NrcyBhcyB0aGUgYWN0aW9ucyBtYXkKLW5lZWQgdG8gY29vcGVyYXRlKS4gVGhpcyBtZWFu
cyB0aGF0IHRoZSBleGVjdXRpb24gb2YgYGFjdGlvbjFgIGFuZAotYGFjdGlvbjJgIGluIHRoZSBh
Ym92ZSBleGFtcGxlIF9tYXlfIGludGVybGVhdmUuIElmIHRoaXMgaXMgYSBwcm9ibGVtLAoteW91
IHNob3VsZCBhZGQgcHJvcGVyIHN5bmNocm9uaXphdGlvbiBsb2dpYyB0byBgYWN0aW9uMWAgYW5k
IGBhY3Rpb24yYAotdG8gbWFrZSB0aGUgdGVzdCB0aHJlYWQtc2FmZS4KLQotCi1BbHNvLCByZW1l
bWJlciB0aGF0IGBEZWZhdWx0VmFsdWU8VD5gIGlzIGEgZ2xvYmFsIHJlc291cmNlIHRoYXQKLXBv
dGVudGlhbGx5IGFmZmVjdHMgX2FsbF8gbGl2aW5nIG1vY2sgb2JqZWN0cyBpbiB5b3VyCi1wcm9n
cmFtLiBOYXR1cmFsbHksIHlvdSB3b24ndCB3YW50IHRvIG1lc3Mgd2l0aCBpdCBmcm9tIG11bHRp
cGxlCi10aHJlYWRzIG9yIHdoZW4gdGhlcmUgc3RpbGwgYXJlIG1vY2tzIGluIGFjdGlvbi4KLQot
IyMgQ29udHJvbGxpbmcgSG93IE11Y2ggSW5mb3JtYXRpb24gR29vZ2xlIE1vY2sgUHJpbnRzICMj
Ci0KLVdoZW4gR29vZ2xlIE1vY2sgc2VlcyBzb21ldGhpbmcgdGhhdCBoYXMgdGhlIHBvdGVudGlh
bCBvZiBiZWluZyBhbgotZXJyb3IgKGUuZy4gYSBtb2NrIGZ1bmN0aW9uIHdpdGggbm8gZXhwZWN0
YXRpb24gaXMgY2FsbGVkLCBhLmsuYS4gYW4KLXVuaW50ZXJlc3RpbmcgY2FsbCwgd2hpY2ggaXMg
YWxsb3dlZCBidXQgcGVyaGFwcyB5b3UgZm9yZ290IHRvCi1leHBsaWNpdGx5IGJhbiB0aGUgY2Fs
bCksIGl0IHByaW50cyBzb21lIHdhcm5pbmcgbWVzc2FnZXMsIGluY2x1ZGluZwotdGhlIGFyZ3Vt
ZW50cyBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZSByZXR1cm4gdmFsdWUuIEhvcGVmdWxseSB0aGlz
Ci13aWxsIHJlbWluZCB5b3UgdG8gdGFrZSBhIGxvb2sgYW5kIHNlZSBpZiB0aGVyZSBpcyBpbmRl
ZWQgYSBwcm9ibGVtLgotCi1Tb21ldGltZXMgeW91IGFyZSBjb25maWRlbnQgdGhhdCB5b3VyIHRl
c3RzIGFyZSBjb3JyZWN0IGFuZCBtYXkgbm90Ci1hcHByZWNpYXRlIHN1Y2ggZnJpZW5kbHkgbWVz
c2FnZXMuIFNvbWUgb3RoZXIgdGltZXMsIHlvdSBhcmUgZGVidWdnaW5nCi15b3VyIHRlc3RzIG9y
IGxlYXJuaW5nIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZSB5b3UgYXJlIHRlc3Rpbmcs
Ci1hbmQgd2lzaCB5b3UgY291bGQgb2JzZXJ2ZSBldmVyeSBtb2NrIGNhbGwgdGhhdCBoYXBwZW5z
IChpbmNsdWRpbmcKLWFyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHJldHVybiB2YWx1ZSkuIENsZWFy
bHksIG9uZSBzaXplIGRvZXNuJ3QgZml0Ci1hbGwuCi0KLVlvdSBjYW4gY29udHJvbCBob3cgbXVj
aCBHb29nbGUgTW9jayB0ZWxscyB5b3UgdXNpbmcgdGhlCi1gLS1nbW9ja192ZXJib3NlPUxFVkVM
YCBjb21tYW5kLWxpbmUgZmxhZywgd2hlcmUgYExFVkVMYCBpcyBhIHN0cmluZwotd2l0aCB0aHJl
ZSBwb3NzaWJsZSB2YWx1ZXM6Ci0KLSAgKiBgaW5mb2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQg
YWxsIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMsIHdhcm5pbmdzLCBhbmQgZXJyb3JzIChtb3N0IHZl
cmJvc2UpLiBBdCB0aGlzIHNldHRpbmcsIEdvb2dsZSBNb2NrIHdpbGwgYWxzbyBsb2cgYW55IGNh
bGxzIHRvIHRoZSBgT05fQ0FMTC9FWFBFQ1RfQ0FMTGAgbWFjcm9zLgotICAqIGB3YXJuaW5nYDog
R29vZ2xlIE1vY2sgd2lsbCBwcmludCBib3RoIHdhcm5pbmdzIGFuZCBlcnJvcnMgKGxlc3MgdmVy
Ym9zZSkuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCi0gICogYGVycm9yYDogR29vZ2xlIE1vY2sgd2ls
bCBwcmludCBlcnJvcnMgb25seSAobGVhc3QgdmVyYm9zZSkuCi0KLUFsdGVybmF0aXZlbHksIHlv
dSBjYW4gYWRqdXN0IHRoZSB2YWx1ZSBvZiB0aGF0IGZsYWcgZnJvbSB3aXRoaW4geW91cgotdGVz
dHMgbGlrZSBzbzoKLQotYGBgCi0gIDo6dGVzdGluZzo6RkxBR1NfZ21vY2tfdmVyYm9zZSA9ICJl
cnJvciI7Ci1gYGAKLQotTm93LCBqdWRpY2lvdXNseSB1c2UgdGhlIHJpZ2h0IGZsYWcgdG8gZW5h
YmxlIEdvb2dsZSBNb2NrIHNlcnZlIHlvdSBiZXR0ZXIhCi0KLSMjIFJ1bm5pbmcgVGVzdHMgaW4g
RW1hY3MgIyMKLQotSWYgeW91IGJ1aWxkIGFuZCBydW4geW91ciB0ZXN0cyBpbiBFbWFjcywgdGhl
IHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBvZgotR29vZ2xlIE1vY2sgYW5kIFtHb29nbGUgVGVzdF0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKQotZXJyb3JzIHdpbGwgYmUgaGln
aGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxFbnRlcj5gIG9uIG9uZSBvZiB0aGVtIGFuZAoteW91J2xs
IGJlIHRha2VuIHRvIHRoZSBvZmZlbmRpbmcgbGluZS4gT3IsIHlvdSBjYW4ganVzdCB0eXBlIGBD
LXggYGAKLXRvIGp1bXAgdG8gdGhlIG5leHQgZXJyb3IuCi0KLVRvIG1ha2UgaXQgZXZlbiBlYXNp
ZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8geW91cgotYH4vLmVtYWNzYCBm
aWxlOgotCi1gYGAKLShnbG9iYWwtc2V0LWtleSAiXE0tbSIgICAnY29tcGlsZSkgIDsgbSBpcyBm
b3IgbWFrZQotKGdsb2JhbC1zZXQta2V5IFtNLWRvd25dICduZXh0LWVycm9yKQotKGdsb2JhbC1z
ZXQta2V5IFtNLXVwXSAgICcobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkgKG5leHQtZXJyb3IgLTEp
KSkKLWBgYAotCi1UaGVuIHlvdSBjYW4gdHlwZSBgTS1tYCB0byBzdGFydCBhIGJ1aWxkLCBvciBg
TS11cGAvYE0tZG93bmAgdG8gbW92ZQotYmFjayBhbmQgZm9ydGggYmV0d2VlbiBlcnJvcnMuCi0K
LSMjIEZ1c2luZyBHb29nbGUgTW9jayBTb3VyY2UgRmlsZXMgIyMKLQotR29vZ2xlIE1vY2sncyBp
bXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBkb3plbnMgb2YgZmlsZXMgKGV4Y2x1ZGluZwotaXRz
IG93biB0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2FnZWQg
dXAgaW4KLWZld2VyIGZpbGVzIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5
IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhp
cyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAotUHl0aG9uIHNjcmlwdCBgZnVzZV9nbW9ja19m
aWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5Ci0oc3RhcnRpbmcgd2l0aCByZWxl
YXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUKLWluc3Rh
bGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QgZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgot
YGBgCi1weXRob24gZnVzZV9nbW9ja19maWxlcy5weSBPVVRQVVRfRElSCi1gYGAKLQotYW5kIHlv
dSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRo
IGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAsIGBnbW9jay9nbW9jay5oYCwgYW5kIGBnbW9jay1ndGVz
dC1hbGwuY2NgIGluIGl0LgotVGhlc2UgdGhyZWUgZmlsZXMgY29udGFpbiBldmVyeXRoaW5nIHlv
dSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jayAoYW5kCi1Hb29nbGUgVGVzdCkuICBKdXN0IGNvcHkg
dGhlbSB0byBhbnl3aGVyZSB5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeQotdG8gd3JpdGUgdGVz
dHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBjYW4gdXNlIHRoZQotW3NjcnB0cy90ZXN0L01ha2VmaWxl
XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9zb3VyY2UvYnJvd3NlL3RydW5r
L3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkgZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21w
aWxlIHlvdXIgdGVzdHMKLWFnYWluc3QgdGhlbS4KLQotIyBFeHRlbmRpbmcgR29vZ2xlIE1vY2sg
IwotCi0jIyBXcml0aW5nIE5ldyBNYXRjaGVycyBRdWlja2x5ICMjCi0KLVRoZSBgTUFUQ0hFUipg
IGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGN1c3RvbSBtYXRjaGVycwot
ZWFzaWx5LiAgVGhlIHN5bnRheDoKLQotYGBgCi1NQVRDSEVSKG5hbWUsIGRlc2NyaXB0aW9uX3N0
cmluZ19leHByZXNzaW9uKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi13aWxsIGRlZmluZSBhIG1h
dGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZQotc3RhdGVtZW50cywg
d2hpY2ggbXVzdCByZXR1cm4gYSBgYm9vbGAgdG8gaW5kaWNhdGUgaWYgdGhlIG1hdGNoCi1zdWNj
ZWVkcy4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbiByZWZlciB0byB0aGUgdmFsdWUg
YmVpbmcKLW1hdGNoZWQgYnkgYGFyZ2AsIGFuZCByZWZlciB0byBpdHMgdHlwZSBieSBgYXJnX3R5
cGVgLgotCi1UaGUgZGVzY3JpcHRpb24gc3RyaW5nIGlzIGEgYHN0cmluZ2AtdHlwZWQgZXhwcmVz
c2lvbiB0aGF0IGRvY3VtZW50cwotd2hhdCB0aGUgbWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZCB0
byBnZW5lcmF0ZSB0aGUgZmFpbHVyZSBtZXNzYWdlCi13aGVuIHRoZSBtYXRjaCBmYWlscy4gIEl0
IGNhbiAoYW5kIHNob3VsZCkgcmVmZXJlbmNlIHRoZSBzcGVjaWFsCi1gYm9vbGAgdmFyaWFibGUg
YG5lZ2F0aW9uYCwgYW5kIHNob3VsZCBldmFsdWF0ZSB0byB0aGUgZGVzY3JpcHRpb24gb2YKLXRo
ZSBtYXRjaGVyIHdoZW4gYG5lZ2F0aW9uYCBpcyBgZmFsc2VgLCBvciB0aGF0IG9mIHRoZSBtYXRj
aGVyJ3MKLW5lZ2F0aW9uIHdoZW4gYG5lZ2F0aW9uYCBpcyBgdHJ1ZWAuCi0KLUZvciBjb252ZW5p
ZW5jZSwgd2UgYWxsb3cgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyB0byBiZSBlbXB0eSAoYCIiYCks
Ci1pbiB3aGljaCBjYXNlIEdvb2dsZSBNb2NrIHdpbGwgdXNlIHRoZSBzZXF1ZW5jZSBvZiB3b3Jk
cyBpbiB0aGUKLW1hdGNoZXIgbmFtZSBhcyB0aGUgZGVzY3JpcHRpb24uCi0KLUZvciBleGFtcGxl
OgotYGBgCi1NQVRDSEVSKElzRGl2aXNpYmxlQnk3LCAiIikgeyByZXR1cm4gKGFyZyAlIDcpID09
IDA7IH0KLWBgYAotYWxsb3dzIHlvdSB0byB3cml0ZQotYGBgCi0gIC8vIEV4cGVjdHMgbW9ja19m
b28uQmFyKG4pIHRvIGJlIGNhbGxlZCB3aGVyZSBuIGlzIGRpdmlzaWJsZSBieSA3LgotICBFWFBF
Q1RfQ0FMTChtb2NrX2ZvbywgQmFyKElzRGl2aXNpYmxlQnk3KCkpKTsKLWBgYAotb3IsCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6Tm90OwotLi4uCi0gIEVYUEVDVF9USEFUKHNvbWVfZXhwcmVzc2lv
biwgSXNEaXZpc2libGVCeTcoKSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfb3RoZXJfZXhwcmVzc2lv
biwgTm90KElzRGl2aXNpYmxlQnk3KCkpKTsKLWBgYAotSWYgdGhlIGFib3ZlIGFzc2VydGlvbnMg
ZmFpbCwgdGhleSB3aWxsIHByaW50IHNvbWV0aGluZyBsaWtlOgotYGBgCi0gIFZhbHVlIG9mOiBz
b21lX2V4cHJlc3Npb24KLSAgRXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3Ci0gICAgQWN0dWFs
OiAyNwotLi4uCi0gIFZhbHVlIG9mOiBzb21lX290aGVyX2V4cHJlc3Npb24KLSAgRXhwZWN0ZWQ6
IG5vdCAoaXMgZGl2aXNpYmxlIGJ5IDcpCi0gICAgQWN0dWFsOiAyMQotYGBgCi13aGVyZSB0aGUg
ZGVzY3JpcHRpb25zIGAiaXMgZGl2aXNpYmxlIGJ5IDciYCBhbmQgYCJub3QgKGlzIGRpdmlzaWJs
ZQotYnkgNykiYCBhcmUgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20gdGhlIG1hdGNoZXIg
bmFtZQotYElzRGl2aXNpYmxlQnk3YC4KLQotQXMgeW91IG1heSBoYXZlIG5vdGljZWQsIHRoZSBh
dXRvLWdlbmVyYXRlZCBkZXNjcmlwdGlvbnMgKGVzcGVjaWFsbHkKLXRob3NlIGZvciB0aGUgbmVn
YXRpb24pIG1heSBub3QgYmUgc28gZ3JlYXQuIFlvdSBjYW4gYWx3YXlzIG92ZXJyaWRlCi10aGVt
IHdpdGggYSBzdHJpbmcgZXhwcmVzc2lvbiBvZiB5b3VyIG93bjoKLWBgYAotTUFUQ0hFUihJc0Rp
dmlzaWJsZUJ5Nywgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgIiBkaXZpc2libGUgYnkgNyIpIHsKLSAgcmV0dXJuIChhcmcg
JSA3KSA9PSAwOwotfQotYGBgCi0KLU9wdGlvbmFsbHksIHlvdSBjYW4gc3RyZWFtIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gdG8gYSBoaWRkZW4gYXJndW1lbnQKLW5hbWVkIGByZXN1bHRfbGlzdGVu
ZXJgIHRvIGV4cGxhaW4gdGhlIG1hdGNoIHJlc3VsdC4gRm9yIGV4YW1wbGUsIGEKLWJldHRlciBk
ZWZpbml0aW9uIG9mIGBJc0RpdmlzaWJsZUJ5N2AgaXM6Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2li
bGVCeTcsICIiKSB7Ci0gIGlmICgoYXJnICUgNykgPT0gMCkKLSAgICByZXR1cm4gdHJ1ZTsKLQot
ICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVyIGlzICIgPDwgKGFyZyAlIDcpOwot
ICByZXR1cm4gZmFsc2U7Ci19Ci1gYGAKLQotV2l0aCB0aGlzIGRlZmluaXRpb24sIHRoZSBhYm92
ZSBhc3NlcnRpb24gd2lsbCBnaXZlIGEgYmV0dGVyIG1lc3NhZ2U6Ci1gYGAKLSAgVmFsdWUgb2Y6
IHNvbWVfZXhwcmVzc2lvbgotICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1
YWw6IDI3ICh0aGUgcmVtYWluZGVyIGlzIDYpCi1gYGAKLQotWW91IHNob3VsZCBsZXQgYE1hdGNo
QW5kRXhwbGFpbigpYCBwcmludCBfYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb25fCi10aGF0IGNh
biBoZWxwIGEgdXNlciB1bmRlcnN0YW5kIHRoZSBtYXRjaCByZXN1bHQuIE5vdGUgdGhhdCBpdCBz
aG91bGQKLWV4cGxhaW4gd2h5IHRoZSBtYXRjaCBzdWNjZWVkcyBpbiBjYXNlIG9mIGEgc3VjY2Vz
cyAodW5sZXNzIGl0J3MKLW9idmlvdXMpIC0gdGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgbWF0Y2hl
ciBpcyB1c2VkIGluc2lkZQotYE5vdCgpYC4gVGhlcmUgaXMgbm8gbmVlZCB0byBwcmludCB0aGUg
YXJndW1lbnQgdmFsdWUgaXRzZWxmLCBhcwotR29vZ2xlIE1vY2sgYWxyZWFkeSBwcmludHMgaXQg
Zm9yIHlvdS4KLQotKipOb3RlczoqKgotCi0gIDEuIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWlu
ZyBtYXRjaGVkIChgYXJnX3R5cGVgKSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdo
aWNoIHlvdSB1c2UgdGhlIG1hdGNoZXIgYW5kIGlzIHN1cHBsaWVkIHRvIHlvdSBieSB0aGUgY29t
cGlsZXIsIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGRlY2xhcmluZyBpdCAobm9y
IGNhbiB5b3UpLiAgVGhpcyBhbGxvd3MgdGhlIG1hdGNoZXIgdG8gYmUgcG9seW1vcnBoaWMuICBG
b3IgZXhhbXBsZSwgYElzRGl2aXNpYmxlQnk3KClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFueSB0
eXBlIHdoZXJlIHRoZSB2YWx1ZSBvZiBgKGFyZyAlIDcpID09IDBgIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byBhIGBib29sYC4gIEluIHRoZSBgQmFyKElzRGl2aXNpYmxlQnk3KCkpYCBl
eGFtcGxlIGFib3ZlLCBpZiBtZXRob2QgYEJhcigpYCB0YWtlcyBhbiBgaW50YCwgYGFyZ190eXBl
YCB3aWxsIGJlIGBpbnRgOyBpZiBpdCB0YWtlcyBhbiBgdW5zaWduZWQgbG9uZ2AsIGBhcmdfdHlw
ZWAgd2lsbCBiZSBgdW5zaWduZWQgbG9uZ2A7IGFuZCBzbyBvbi4KLSAgMS4gR29vZ2xlIE1vY2sg
ZG9lc24ndCBndWFyYW50ZWUgd2hlbiBvciBob3cgbWFueSB0aW1lcyBhIG1hdGNoZXIgd2lsbCBi
ZSBpbnZva2VkLiBUaGVyZWZvcmUgdGhlIG1hdGNoZXIgbG9naWMgbXVzdCBiZSBfcHVyZWx5IGZ1
bmN0aW9uYWxfIChpLmUuIGl0IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSBy
ZXN1bHQgbXVzdCBub3QgZGVwZW5kIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJl
aW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMpLiBUaGlzIHJlcXVpcmVtZW50
IG11c3QgYmUgc2F0aXNmaWVkIG5vIG1hdHRlciBob3cgeW91IGRlZmluZSB0aGUgbWF0Y2hlciAo
ZS5nLiB1c2luZyBvbmUgb2YgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcg
cmVjaXBlcykuIEluIHBhcnRpY3VsYXIsIGEgbWF0Y2hlciBjYW4gbmV2ZXIgY2FsbCBhIG1vY2sg
ZnVuY3Rpb24sIGFzIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHN0YXRlIG9mIHRoZSBtb2NrIG9iamVj
dCBhbmQgR29vZ2xlIE1vY2suCi0KLSMjIFdyaXRpbmcgTmV3IFBhcmFtZXRlcml6ZWQgTWF0Y2hl
cnMgUXVpY2tseSAjIwotCi1Tb21ldGltZXMgeW91J2xsIHdhbnQgdG8gZGVmaW5lIGEgbWF0Y2hl
ciB0aGF0IGhhcyBwYXJhbWV0ZXJzLiAgRm9yIHRoYXQgeW91Ci1jYW4gdXNlIHRoZSBtYWNybzoK
LWBgYAotTUFUQ0hFUl9QKG5hbWUsIHBhcmFtX25hbWUsIGRlc2NyaXB0aW9uX3N0cmluZykgeyBz
dGF0ZW1lbnRzOyB9Ci1gYGAKLXdoZXJlIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcgY2FuIGJlIGVp
dGhlciBgIiJgIG9yIGEgc3RyaW5nIGV4cHJlc3Npb24KLXRoYXQgcmVmZXJlbmNlcyBgbmVnYXRp
b25gIGFuZCBgcGFyYW1fbmFtZWAuCi0KLUZvciBleGFtcGxlOgotYGBgCi1NQVRDSEVSX1AoSGFz
QWJzb2x1dGVWYWx1ZSwgdmFsdWUsICIiKSB7IHJldHVybiBhYnMoYXJnKSA9PSB2YWx1ZTsgfQot
YGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0ZToKLWBgYAotICBFWFBFQ1RfVEhBVChCbGFoKCJh
IiksIEhhc0Fic29sdXRlVmFsdWUobikpOwotYGBgCi13aGljaCBtYXkgbGVhZCB0byB0aGlzIG1l
c3NhZ2UgKGFzc3VtaW5nIGBuYCBpcyAxMCk6Ci1gYGAKLSAgVmFsdWUgb2Y6IEJsYWgoImEiKQot
ICBFeHBlY3RlZDogaGFzIGFic29sdXRlIHZhbHVlIDEwCi0gICAgQWN0dWFsOiAtOQotYGBgCi0K
LU5vdGUgdGhhdCBib3RoIHRoZSBtYXRjaGVyIGRlc2NyaXB0aW9uIGFuZCBpdHMgcGFyYW1ldGVy
IGFyZQotcHJpbnRlZCwgbWFraW5nIHRoZSBtZXNzYWdlIGh1bWFuLWZyaWVuZGx5LgotCi1JbiB0
aGUgbWF0Y2hlciBkZWZpbml0aW9uIGJvZHksIHlvdSBjYW4gd3JpdGUgYGZvb190eXBlYCB0bwot
cmVmZXJlbmNlIHRoZSB0eXBlIG9mIGEgcGFyYW1ldGVyIG5hbWVkIGBmb29gLiAgRm9yIGV4YW1w
bGUsIGluIHRoZQotYm9keSBvZiBgTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKWAg
YWJvdmUsIHlvdSBjYW4gd3JpdGUKLWB2YWx1ZV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBv
ZiBgdmFsdWVgLgotCi1Hb29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBNQVRDSEVSX1AyYCwgYE1B
VENIRVJfUDNgLCAuLi4sIHVwIHRvCi1gTUFUQ0hFUl9QMTBgIHRvIHN1cHBvcnQgbXVsdGktcGFy
YW1ldGVyIG1hdGNoZXJzOgotYGBgCi1NQVRDSEVSX1BrKG5hbWUsIHBhcmFtXzEsIC4uLiwgcGFy
YW1faywgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1QbGVhc2Ug
bm90ZSB0aGF0IHRoZSBjdXN0b20gZGVzY3JpcHRpb24gc3RyaW5nIGlzIGZvciBhIHBhcnRpY3Vs
YXIKLSoqaW5zdGFuY2UqKiBvZiB0aGUgbWF0Y2hlciwgd2hlcmUgdGhlIHBhcmFtZXRlcnMgaGF2
ZSBiZWVuIGJvdW5kIHRvCi1hY3R1YWwgdmFsdWVzLiAgVGhlcmVmb3JlIHVzdWFsbHkgeW91J2xs
IHdhbnQgdGhlIHBhcmFtZXRlciB2YWx1ZXMgdG8KLWJlIHBhcnQgb2YgdGhlIGRlc2NyaXB0aW9u
LiAgR29vZ2xlIE1vY2sgbGV0cyB5b3UgZG8gdGhhdCBieQotcmVmZXJlbmNpbmcgdGhlIG1hdGNo
ZXIgcGFyYW1ldGVycyBpbiB0aGUgZGVzY3JpcHRpb24gc3RyaW5nCi1leHByZXNzaW9uLgotCi1G
b3IgZXhhbXBsZSwKLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmc7Ci0gIE1B
VENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwKLSAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArICIgaW4gcmFuZ2UgWyIgKwotICAgICAgICAg
ICAgIFByaW50VG9TdHJpbmcobG93KSArICIsICIgKyBQcmludFRvU3RyaW5nKGhpKSArICJdIikg
ewotICAgIHJldHVybiBsb3cgPD0gYXJnICYmIGFyZyA8PSBoaTsKLSAgfQotICAuLi4KLSAgRVhQ
RUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci1gYGAKLXdvdWxkIGdlbmVyYXRlIGEg
ZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBtZXNzYWdlOgotYGBgCi0gIEV4cGVjdGVkOiBpcyBp
biByYW5nZSBbNCwgNl0KLWBgYAotCi1JZiB5b3Ugc3BlY2lmeSBgIiJgIGFzIHRoZSBkZXNjcmlw
dGlvbiwgdGhlIGZhaWx1cmUgbWVzc2FnZSB3aWxsCi1jb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3
b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1lIGZvbGxvd2VkIGJ5IHRoZQotcGFyYW1ldGVyIHZhbHVl
cyBwcmludGVkIGFzIGEgdHVwbGUuICBGb3IgZXhhbXBsZSwKLWBgYAotICBNQVRDSEVSX1AyKElu
Q2xvc2VkUmFuZ2UsIGxvdywgaGksICIiKSB7IC4uLiB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgz
LCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKLWBgYAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRo
YXQgY29udGFpbnMgdGhlIHRleHQ6Ci1gYGAKLSAgRXhwZWN0ZWQ6IGluIGNsb3NlZCByYW5nZSAo
NCwgNikKLWBgYAotCi1Gb3IgdGhlIHB1cnBvc2Ugb2YgdHlwaW5nLCB5b3UgY2FuIHZpZXcKLWBg
YAotTUFUQ0hFUl9QayhGb28sIHAxLCAuLi4sIHBrLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgLi4u
IH0KLWBgYAotYXMgc2hvcnRoYW5kIGZvcgotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgcDFfdHlw
ZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgotRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtf
dHlwZT4KLUZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUgcGspIHsgLi4uIH0KLWBgYAotCi1X
aGVuIHlvdSB3cml0ZSBgRm9vKHYxLCAuLi4sIHZrKWAsIHRoZSBjb21waWxlciBpbmZlcnMgdGhl
IHR5cGVzIG9mCi10aGUgcGFyYW1ldGVycyBgdjFgLCAuLi4sIGFuZCBgdmtgIGZvciB5b3UuICBJ
ZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoCi10aGUgcmVzdWx0IG9mIHRoZSB0eXBlIGluZmVyZW5j
ZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSB0eXBlcyBieQotZXhwbGljaXRseSBpbnN0YW50aWF0aW5n
IHRoZSB0ZW1wbGF0ZSwgYXMgaW4gYEZvbzxsb25nLCBib29sPig1LCBmYWxzZSlgLgotQXMgc2Fp
ZCBlYXJsaWVyLCB5b3UgZG9uJ3QgZ2V0IHRvIChvciBuZWVkIHRvKSBzcGVjaWZ5Ci1gYXJnX3R5
cGVgIGFzIHRoYXQncyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBtYXRj
aGVyCi1pcyB1c2VkLgotCi1Zb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24g
YEZvbyhwMSwgLi4uLCBwaylgIHRvIGEKLXZhcmlhYmxlIG9mIHR5cGUgYEZvb01hdGNoZXJQazxw
MV90eXBlLCAuLi4sIHBrX3R5cGU+YC4gIFRoaXMgY2FuIGJlCi11c2VmdWwgd2hlbiBjb21wb3Np
bmcgbWF0Y2hlcnMuICBNYXRjaGVycyB0aGF0IGRvbid0IGhhdmUgYSBwYXJhbWV0ZXIKLW9yIGhh
dmUgb25seSBvbmUgcGFyYW1ldGVyIGhhdmUgc3BlY2lhbCB0eXBlczogeW91IGNhbiBhc3NpZ24g
YEZvbygpYAotdG8gYSBgRm9vTWF0Y2hlcmAtdHlwZWQgdmFyaWFibGUsIGFuZCBhc3NpZ24gYEZv
byhwKWAgdG8gYQotYEZvb01hdGNoZXJQPHBfdHlwZT5gLXR5cGVkIHZhcmlhYmxlLgotCi1XaGls
ZSB5b3UgY2FuIGluc3RhbnRpYXRlIGEgbWF0Y2hlciB0ZW1wbGF0ZSB3aXRoIHJlZmVyZW5jZSB0
eXBlcywKLXBhc3NpbmcgdGhlIHBhcmFtZXRlcnMgYnkgcG9pbnRlciB1c3VhbGx5IG1ha2VzIHlv
dXIgY29kZSBtb3JlCi1yZWFkYWJsZS4gIElmLCBob3dldmVyLCB5b3Ugc3RpbGwgd2FudCB0byBw
YXNzIGEgcGFyYW1ldGVyIGJ5Ci1yZWZlcmVuY2UsIGJlIGF3YXJlIHRoYXQgaW4gdGhlIGZhaWx1
cmUgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgdGhlCi1tYXRjaGVyIHlvdSB3aWxsIHNlZSB0aGUgdmFs
dWUgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGJ1dCBub3QgaXRzCi1hZGRyZXNzLgotCi1Zb3Ug
Y2FuIG92ZXJsb2FkIG1hdGNoZXJzIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgcGFyYW1ldGVy
czoKLWBgYAotTUFUQ0hFUl9QKEJsYWgsIGEsIGRlc2NyaXB0aW9uX3N0cmluZ18xKSB7IC4uLiB9
Ci1NQVRDSEVSX1AyKEJsYWgsIGEsIGIsIGRlc2NyaXB0aW9uX3N0cmluZ18yKSB7IC4uLiB9Ci1g
YGAKLQotV2hpbGUgaXQncyB0ZW1wdGluZyB0byBhbHdheXMgdXNlIHRoZSBgTUFUQ0hFUipgIG1h
Y3JvcyB3aGVuIGRlZmluaW5nCi1hIG5ldyBtYXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lk
ZXIgaW1wbGVtZW50aW5nCi1gTWF0Y2hlckludGVyZmFjZWAgb3IgdXNpbmcgYE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoKWAgaW5zdGVhZCAoc2VlCi10aGUgcmVjaXBlcyB0aGF0IGZvbGxvdyksIGVz
cGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gdXNlIHRoZSBtYXRjaGVyIGEKLWxvdC4gIFdoaWxlIHRo
ZXNlIGFwcHJvYWNoZXMgcmVxdWlyZSBtb3JlIHdvcmssIHRoZXkgZ2l2ZSB5b3UgbW9yZQotY29u
dHJvbCBvbiB0aGUgdHlwZXMgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRj
aGVyCi1wYXJhbWV0ZXJzLCB3aGljaCBpbiBnZW5lcmFsIGxlYWRzIHRvIGJldHRlciBjb21waWxl
ciBlcnJvciBtZXNzYWdlcwotdGhhdCBwYXkgb2ZmIGluIHRoZSBsb25nIHJ1bi4gIFRoZXkgYWxz
byBhbGxvdyBvdmVybG9hZGluZyBtYXRjaGVycwotYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChh
cyBvcHBvc2VkIHRvIGp1c3QgYmFzZWQgb24gdGhlIG51bWJlciBvZgotcGFyYW1ldGVycykuCi0K
LSMjIFdyaXRpbmcgTmV3IE1vbm9tb3JwaGljIE1hdGNoZXJzICMjCi0KLUEgbWF0Y2hlciBvZiBh
cmd1bWVudCB0eXBlIGBUYCBpbXBsZW1lbnRzCi1gOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNl
PFQ+YCBhbmQgZG9lcyB0d28gdGhpbmdzOiBpdCB0ZXN0cyB3aGV0aGVyIGEKLXZhbHVlIG9mIHR5
cGUgYFRgIG1hdGNoZXMgdGhlIG1hdGNoZXIsIGFuZCBjYW4gZGVzY3JpYmUgd2hhdCBraW5kIG9m
Ci12YWx1ZXMgaXQgbWF0Y2hlcy4gVGhlIGxhdHRlciBhYmlsaXR5IGlzIHVzZWQgZm9yIGdlbmVy
YXRpbmcgcmVhZGFibGUKLWVycm9yIG1lc3NhZ2VzIHdoZW4gZXhwZWN0YXRpb25zIGFyZSB2aW9s
YXRlZC4KLQotVGhlIGludGVyZmFjZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYAotY2xhc3MgTWF0
Y2hSZXN1bHRMaXN0ZW5lciB7Ci0gcHVibGljOgotICAuLi4KLSAgLy8gU3RyZWFtcyB4IHRvIHRo
ZSB1bmRlcmx5aW5nIG9zdHJlYW07IGRvZXMgbm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAvLyBp
cyBOVUxMLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5lciYg
b3BlcmF0b3I8PChjb25zdCBUJiB4KTsKLQotICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIG9z
dHJlYW0uCi0gIDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0oKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgTWF0Y2hlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5N
YXRjaGVySW50ZXJmYWNlKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBt
YXRjaGVzIHg7IGFsc28gZXhwbGFpbnMgdGhlIG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlzdGVu
ZXInLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMgdGhpcyBtYXRjaGVy
IHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBt
YXRjaGVyIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsKLX07Ci1gYGAKLQotSWYgeW91IG5lZWQgYSBjdXN0
b20gbWF0Y2hlciBidXQgYFRydWx5KClgIGlzIG5vdCBhIGdvb2Qgb3B0aW9uIChmb3IKLWV4YW1w
bGUsIHlvdSBtYXkgbm90IGJlIGhhcHB5IHdpdGggdGhlIHdheSBgVHJ1bHkocHJlZGljYXRlKWAK
LWRlc2NyaWJlcyBpdHNlbGYsIG9yIHlvdSBtYXkgd2FudCB5b3VyIG1hdGNoZXIgdG8gYmUgcG9s
eW1vcnBoaWMgYXMKLWBFcSh2YWx1ZSlgIGlzKSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRv
IGRvIHdoYXRldmVyIHlvdSB3YW50IGluCi10d28gc3RlcHM6IGZpcnN0IGltcGxlbWVudCB0aGUg
bWF0Y2hlciBpbnRlcmZhY2UsIGFuZCB0aGVuIGRlZmluZSBhCi1mYWN0b3J5IGZ1bmN0aW9uIHRv
IGNyZWF0ZSBhIG1hdGNoZXIgaW5zdGFuY2UuIFRoZSBzZWNvbmQgc3RlcCBpcyBub3QKLXN0cmlj
dGx5IG5lZWRlZCBidXQgaXQgbWFrZXMgdGhlIHN5bnRheCBvZiB1c2luZyB0aGUgbWF0Y2hlciBu
aWNlci4KLQotRm9yIGV4YW1wbGUsIHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byB0ZXN0IHdo
ZXRoZXIgYW4gYGludGAgaXMKLWRpdmlzaWJsZSBieSA3IGFuZCB0aGVuIHVzZSBpdCBsaWtlIHRo
aXM6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWFrZU1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6
Ok1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRl
c3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci0KLWNsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgcmV0dXJuIChuICUgNykgPT0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgZGl2
aXNpYmxlIGJ5IDciOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIG5vdCBkaXZpc2libGUg
YnkgNyI7Ci0gIH0KLX07Ci0KLWlubGluZSBNYXRjaGVyPGludD4gRGl2aXNpYmxlQnk3KCkgewot
ICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IERpdmlzaWJsZUJ5N01hdGNoZXIpOwotfQotLi4uCi0K
LSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoRGl2aXNpYmxlQnk3KCkpKTsKLWBgYAotCi1Zb3UgbWF5
IGltcHJvdmUgdGhlIG1hdGNoZXIgbWVzc2FnZSBieSBzdHJlYW1pbmcgYWRkaXRpb25hbAotaW5m
b3JtYXRpb24gdG8gdGhlIGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4gYE1hdGNoQW5kRXhwbGFpbigp
YDoKLQotYGBgCi1jbGFzcyBEaXZpc2libGVCeTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRl
cmZhY2U8aW50PiB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGlu
dCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIq
IGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgY29uc3QgaW50IHJlbWFpbmRlciA9IG4gJSA3OwotICAg
IGlmIChyZW1haW5kZXIgIT0gMCkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVy
IGlzICIgPDwgcmVtYWluZGVyOwotICAgIH0KLSAgICByZXR1cm4gcmVtYWluZGVyID09IDA7Ci0g
IH0KLSAgLi4uCi19OwotYGBgCi0KLVRoZW4sIGBFWFBFQ1RfVEhBVCh4LCBEaXZpc2libGVCeTco
KSk7YCBtYXkgZ2VuZXJhbCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgotYGBgCi1WYWx1ZSBvZjogeAot
RXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3Ci0gIEFjdHVhbDogMjMgKHRoZSByZW1haW5kZXIg
aXMgMikKLWBgYAotCi0jIyBXcml0aW5nIE5ldyBQb2x5bW9ycGhpYyBNYXRjaGVycyAjIwotCi1Z
b3UndmUgbGVhcm5lZCBob3cgdG8gd3JpdGUgeW91ciBvd24gbWF0Y2hlcnMgaW4gdGhlIHByZXZp
b3VzCi1yZWNpcGUuIEp1c3Qgb25lIHByb2JsZW06IGEgbWF0Y2hlciBjcmVhdGVkIHVzaW5nIGBN
YWtlTWF0Y2hlcigpYCBvbmx5Ci13b3JrcyBmb3Igb25lIHBhcnRpY3VsYXIgdHlwZSBvZiBhcmd1
bWVudHMuIElmIHlvdSB3YW50IGEKLV9wb2x5bW9ycGhpY18gbWF0Y2hlciB0aGF0IHdvcmtzIHdp
dGggYXJndW1lbnRzIG9mIHNldmVyYWwgdHlwZXMgKGZvcgotaW5zdGFuY2UsIGBFcSh4KWAgY2Fu
IGJlIHVzZWQgdG8gbWF0Y2ggYSBgdmFsdWVgIGFzIGxvbmcgYXMgYHZhbHVlYCA9PQotYHhgIGNv
bXBpbGVzIC0tIGB2YWx1ZWAgYW5kIGB4YCBkb24ndCBoYXZlIHRvIHNoYXJlIHRoZSBzYW1lIHR5
cGUpLAoteW91IGNhbiBsZWFybiB0aGUgdHJpY2sgZnJvbSBgImdtb2NrL2dtb2NrLW1hdGNoZXJz
LmgiYCBidXQgaXQncyBhIGJpdAotaW52b2x2ZWQuCi0KLUZvcnR1bmF0ZWx5LCBtb3N0IG9mIHRo
ZSB0aW1lIHlvdSBjYW4gZGVmaW5lIGEgcG9seW1vcnBoaWMgbWF0Y2hlcgotZWFzaWx5IHdpdGgg
dGhlIGhlbHAgb2YgYE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKWAuIEhlcmUncyBob3cgeW91IGNh
bgotZGVmaW5lIGBOb3ROdWxsKClgIGFzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3Vs
dExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpQ
b2x5bW9ycGhpY01hdGNoZXI7Ci0KLWNsYXNzIE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0g
IC8vIFRvIGltcGxlbWVudCBhIHBvbHltb3JwaGljIG1hdGNoZXIsIGZpcnN0IGRlZmluZSBhIENP
UFlBQkxFIGNsYXNzCi0gIC8vIHRoYXQgaGFzIHRocmVlIG1lbWJlcnMgTWF0Y2hBbmRFeHBsYWlu
KCksIERlc2NyaWJlVG8oKSwgYW5kCi0gIC8vIERlc2NyaWJlTmVnYXRpb25UbygpLCBsaWtlIHRo
ZSBmb2xsb3dpbmcuCi0KLSAgLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB3YW50IHRvIHVzZSBOb3RO
dWxsKCkgd2l0aCBhbnkgcG9pbnRlciwgc28KLSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgYWNjZXB0
cyBhIHBvaW50ZXIgb2YgYW55IHR5cGUgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LgotICAvLyBJbiBn
ZW5lcmFsLCB5b3UgY2FuIGRlZmluZSBNYXRjaEFuZEV4cGxhaW4oKSBhcyBhbiBvcmRpbmFyeSBt
ZXRob2Qgb3IKLSAgLy8gYSBtZXRob2QgdGVtcGxhdGUsIG9yIGV2ZW4gb3ZlcmxvYWQgaXQuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihUKiBwLAotICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykg
Y29uc3QgewotICAgIHJldHVybiBwICE9IE5VTEw7Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgdGhl
IHByb3BlcnR5IG9mIGEgdmFsdWUgbWF0Y2hpbmcgdGhpcyBtYXRjaGVyLgotICB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgbm90IE5VTEwiOyB9
Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIE5PVCBtYXRjaGluZyB0
aGlzIG1hdGNoZXIuCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgeyAqb3MgPDwgImlzIE5VTEwiOyB9Ci19OwotCi0vLyBUbyBjb25zdHJ1Y3QgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyLCBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcwotLy8gdG8g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcigpLiAgTm90ZSB0aGUgcmV0dXJuIHR5cGUuCi1pbmxpbmUg
UG9seW1vcnBoaWNNYXRjaGVyPE5vdE51bGxNYXRjaGVyPiBOb3ROdWxsKCkgewotICByZXR1cm4g
TWFrZVBvbHltb3JwaGljTWF0Y2hlcihOb3ROdWxsTWF0Y2hlcigpKTsKLX0KLS4uLgotCi0gIEVY
UEVDVF9DQUxMKGZvbywgQmFyKE5vdE51bGwoKSkpOyAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUg
YSBub24tTlVMTCBwb2ludGVyLgotYGBgCi0KLSoqTm90ZToqKiBZb3VyIHBvbHltb3JwaGljIG1h
dGNoZXIgY2xhc3MgZG9lcyAqKm5vdCoqIG5lZWQgdG8gaW5oZXJpdCBmcm9tCi1gTWF0Y2hlcklu
dGVyZmFjZWAgb3IgYW55IG90aGVyIGNsYXNzLCBhbmQgaXRzIG1ldGhvZHMgZG8gKipub3QqKiBu
ZWVkCi10byBiZSB2aXJ0dWFsLgotCi1MaWtlIGluIGEgbW9ub21vcnBoaWMgbWF0Y2hlciwgeW91
IG1heSBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQgYnkKLXN0cmVhbWluZyBhZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJgIGFyZ3VtZW50IGluCi1gTWF0Y2hBbmRFeHBsYWlu
KClgLgotCi0jIyBXcml0aW5nIE5ldyBDYXJkaW5hbGl0aWVzICMjCi0KLUEgY2FyZGluYWxpdHkg
aXMgdXNlZCBpbiBgVGltZXMoKWAgdG8gdGVsbCBHb29nbGUgTW9jayBob3cgbWFueSB0aW1lcwot
eW91IGV4cGVjdCBhIGNhbGwgdG8gb2NjdXIuIEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBleGFjdC4g
Rm9yIGV4YW1wbGUsCi15b3UgY2FuIHNheSBgQXRMZWFzdCg1KWAgb3IgYEJldHdlZW4oMiwgNClg
LgotCi1JZiB0aGUgYnVpbHQtaW4gc2V0IG9mIGNhcmRpbmFsaXRpZXMgZG9lc24ndCBzdWl0IHlv
dSwgeW91IGFyZSBmcmVlIHRvCi1kZWZpbmUgeW91ciBvd24gYnkgaW1wbGVtZW50aW5nIHRoZSBm
b2xsb3dpbmcgaW50ZXJmYWNlIChpbiBuYW1lc3BhY2UKLWB0ZXN0aW5nYCk6Ci0KLWBgYAotY2xh
c3MgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Q2FyZGluYWxp
dHlJbnRlcmZhY2UoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMg
d2lsbCBzYXRpc2Z5IHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmll
ZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4K
LSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNv
bnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci1gYGAK
LQotRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhhdCBhIGNhbGwgbXVzdCBvY2N1ciBldmVuIG51
bWJlciBvZiB0aW1lcywKLXlvdSBjYW4gd3JpdGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkNh
cmRpbmFsaXR5OwotdXNpbmcgOjp0ZXN0aW5nOjpDYXJkaW5hbGl0eUludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWFrZUNhcmRpbmFsaXR5OwotCi1jbGFzcyBFdmVuTnVtYmVyQ2FyZGluYWxp
dHkgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCBi
b29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gKGNhbGxfY291bnQgJSAyKSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCBib29sIElzU2F0
dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0IHsKLSAgICAqb3MgPDwgImNhbGxlZCBldmVuIG51bWJlciBvZiB0aW1lcyI7Ci0gIH0K
LX07Ci0KLUNhcmRpbmFsaXR5IEV2ZW5OdW1iZXIoKSB7Ci0gIHJldHVybiBNYWtlQ2FyZGluYWxp
dHkobmV3IEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChm
b28sIEJhcigzKSkKLSAgICAgIC5UaW1lcyhFdmVuTnVtYmVyKCkpOwotYGBgCi0KLSMjIFdyaXRp
bmcgTmV3IEFjdGlvbnMgUXVpY2tseSAjIwotCi1JZiB0aGUgYnVpbHQtaW4gYWN0aW9ucyBkb24n
dCB3b3JrIGZvciB5b3UsIGFuZCB5b3UgZmluZCBpdAotaW5jb252ZW5pZW50IHRvIHVzZSBgSW52
b2tlKClgLCB5b3UgY2FuIHVzZSBhIG1hY3JvIGZyb20gdGhlIGBBQ1RJT04qYAotZmFtaWx5IHRv
IHF1aWNrbHkgZGVmaW5lIGEgbmV3IGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHlvdXIgY29k
ZSBhcwotaWYgaXQncyBhIGJ1aWx0LWluIGFjdGlvbi4KLQotQnkgd3JpdGluZwotYGBgCi1BQ1RJ
T04obmFtZSkgeyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLWluIGEgbmFtZXNwYWNlIHNjb3BlIChpLmUu
IG5vdCBpbnNpZGUgYSBjbGFzcyBvciBmdW5jdGlvbiksIHlvdSB3aWxsCi1kZWZpbmUgYW4gYWN0
aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cy4KLVRo
ZSB2YWx1ZSByZXR1cm5lZCBieSBgc3RhdGVtZW50c2Agd2lsbCBiZSB1c2VkIGFzIHRoZSByZXR1
cm4gdmFsdWUgb2YKLXRoZSBhY3Rpb24uICBJbnNpZGUgdGhlIHN0YXRlbWVudHMsIHlvdSBjYW4g
cmVmZXIgdG8gdGhlIEstdGgKLSgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlv
biBhcyBgYXJnS2AuICBGb3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEluY3JlbWVudEFyZzEpIHsg
cmV0dXJuICsrKCphcmcxKTsgfQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLS4uLiBX
aWxsT25jZShJbmNyZW1lbnRBcmcxKCkpOwotYGBgCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVl
ZCB0byBzcGVjaWZ5IHRoZSB0eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbgotYXJndW1lbnRzLiAg
UmVzdCBhc3N1cmVkIHRoYXQgeW91ciBjb2RlIGlzIHR5cGUtc2FmZSB0aG91Z2g6Ci15b3UnbGwg
Z2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgYCphcmcxYCBkb2Vzbid0IHN1cHBvcnQgdGhlIGArK2AK
LW9wZXJhdG9yLCBvciBpZiB0aGUgdHlwZSBvZiBgKysoKmFyZzEpYCBpc24ndCBjb21wYXRpYmxl
IHdpdGggdGhlIG1vY2sKLWZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0KLUFub3RoZXIgZXhhbXBs
ZToKLWBgYAotQUNUSU9OKEZvbykgewotICAoKmFyZzIpKDUpOwotICBCbGFoKCk7Ci0gICphcmcx
ID0gMDsKLSAgcmV0dXJuIGFyZzA7Ci19Ci1gYGAKLWRlZmluZXMgYW4gYWN0aW9uIGBGb28oKWAg
dGhhdCBpbnZva2VzIGFyZ3VtZW50ICMyIChhIGZ1bmN0aW9uIHBvaW50ZXIpCi13aXRoIDUsIGNh
bGxzIGZ1bmN0aW9uIGBCbGFoKClgLCBzZXRzIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGFyZ3Vt
ZW50Ci0jMSB0byAwLCBhbmQgcmV0dXJucyBhcmd1bWVudCAjMC4KLQotRm9yIG1vcmUgY29udmVu
aWVuY2UgYW5kIGZsZXhpYmlsaXR5LCB5b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcKLXBy
ZS1kZWZpbmVkIHN5bWJvbHMgaW4gdGhlIGJvZHkgb2YgYEFDVElPTmA6Ci0KLXwgYGFyZ0tfdHlw
ZWAgfCBUaGUgdHlwZSBvZiB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gfAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBhcmdzYCAgICAgIHwgQWxsIGFy
Z3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgICAgICAgICAgICAgIHwK
LXwgYGFyZ3NfdHlwZWAgfCBUaGUgdHlwZSBvZiBhbGwgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uIGFzIGEgdHVwbGUgICAgfAotfCBgcmV0dXJuX3R5cGVgIHwgVGhlIHJldHVybiB0eXBl
IG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGZ1bmN0
aW9uX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKLQotRm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgYW4gYEFDVElPTmAg
YXMgYSBzdHViIGFjdGlvbiBmb3IgbW9jayBmdW5jdGlvbjoKLWBgYAotaW50IERvU29tZXRoaW5n
KGJvb2wgZmxhZywgaW50KiBwdHIpOwotYGBgCi13ZSBoYXZlOgotfCAqKlByZS1kZWZpbmVkIFN5
bWJvbCoqIHwgKipJcyBCb3VuZCBUbyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS18Ci18IGBhcmcwYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2Yg
YGZsYWdgIHwKLXwgYGFyZzBfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBib29sYCB8Ci18
IGBhcmcxYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYHB0cmAgfAotfCBgYXJnMV90
eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGludCpgIHwKLXwgYGFyZ3NgICAgICAgICAgICAg
ICAgICB8IHRoZSB0dXBsZSBgKGZsYWcsIHB0cilgIHwKLXwgYGFyZ3NfdHlwZWAgICAgICAgICAg
ICB8IHRoZSB0eXBlIGBzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKLXwgYHJldHVybl90
eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBpbnRgICB8Ci18IGBmdW5jdGlvbl90eXBlYCAgICAg
ICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGludCopYCB8Ci0KLSMjIFdyaXRpbmcgTmV3IFBhcmFt
ZXRlcml6ZWQgQWN0aW9ucyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBw
YXJhbWV0ZXJpemUgYW4gYWN0aW9uIHlvdSBkZWZpbmUuICBGb3IgdGhhdAotd2UgaGF2ZSBhbm90
aGVyIG1hY3JvCi1gYGAKLUFDVElPTl9QKG5hbWUsIHBhcmFtKSB7IHN0YXRlbWVudHM7IH0KLWBg
YAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1AoQWRkLCBuKSB7IHJldHVybiBhcmcwICsg
bjsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0ZQotYGBgCi0vLyBSZXR1cm5zIGFyZ3Vt
ZW50ICMwICsgNS4KLS4uLiBXaWxsT25jZShBZGQoNSkpOwotYGBgCi0KLUZvciBjb252ZW5pZW5j
ZSwgd2UgdXNlIHRoZSB0ZXJtIF9hcmd1bWVudHNfIGZvciB0aGUgdmFsdWVzIHVzZWQgdG8KLWlu
dm9rZSB0aGUgbW9jayBmdW5jdGlvbiwgYW5kIHRoZSB0ZXJtIF9wYXJhbWV0ZXJzXyBmb3IgdGhl
IHZhbHVlcwotdXNlZCB0byBpbnN0YW50aWF0ZSBhbiBhY3Rpb24uCi0KLU5vdGUgdGhhdCB5b3Ug
ZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgZWl0aGVyLgot
U3VwcG9zZSB0aGUgcGFyYW1ldGVyIGlzIG5hbWVkIGBwYXJhbWAsIHlvdSBjYW4gYWxzbyB1c2Ug
dGhlCi1Hb29nbGUtTW9jay1kZWZpbmVkIHN5bWJvbCBgcGFyYW1fdHlwZWAgdG8gcmVmZXIgdG8g
dGhlIHR5cGUgb2YgdGhlCi1wYXJhbWV0ZXIgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAg
Rm9yIGV4YW1wbGUsIGluIHRoZSBib2R5IG9mCi1gQUNUSU9OX1AoQWRkLCBuKWAgYWJvdmUsIHlv
dSBjYW4gd3JpdGUgYG5fdHlwZWAgZm9yIHRoZSB0eXBlIG9mIGBuYC4KLQotR29vZ2xlIE1vY2sg
YWxzbyBwcm92aWRlcyBgQUNUSU9OX1AyYCwgYEFDVElPTl9QM2AsIGFuZCBldGMgdG8gc3VwcG9y
dAotbXVsdGktcGFyYW1ldGVyIGFjdGlvbnMuICBGb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1Ay
KFJldHVybkRpc3RhbmNlVG8sIHgsIHkpIHsKLSAgZG91YmxlIGR4ID0gYXJnMCAtIHg7Ci0gIGRv
dWJsZSBkeSA9IGFyZzEgLSB5OwotICByZXR1cm4gc3FydChkeCpkeCArIGR5KmR5KTsKLX0KLWBg
YAotbGV0cyB5b3Ugd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKFJldHVybkRpc3RhbmNlVG8oNS4w
LCAyNi41KSk7Ci1gYGAKLQotWW91IGNhbiB2aWV3IGBBQ1RJT05gIGFzIGEgZGVnZW5lcmF0ZWQg
cGFyYW1ldGVyaXplZCBhY3Rpb24gd2hlcmUgdGhlCi1udW1iZXIgb2YgcGFyYW1ldGVycyBpcyAw
LgotCi1Zb3UgY2FuIGFsc28gZWFzaWx5IGRlZmluZSBhY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhl
IG51bWJlciBvZiBwYXJhbWV0ZXJzOgotYGBgCi1BQ1RJT05fUChQbHVzLCBhKSB7IC4uLiB9Ci1B
Q1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQotYGBgCi0KLSMjIFJlc3RyaWN0aW5nIHRoZSBU
eXBlIG9mIGFuIEFyZ3VtZW50IG9yIFBhcmFtZXRlciBpbiBhbiBBQ1RJT04gIyMKLQotRm9yIG1h
eGltdW0gYnJldml0eSBhbmQgcmV1c2FiaWxpdHksIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGRvbid0
IGFzawoteW91IHRvIHByb3ZpZGUgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3Vt
ZW50cyBhbmQgdGhlIGFjdGlvbgotcGFyYW1ldGVycy4gIEluc3RlYWQsIHdlIGxldCB0aGUgY29t
cGlsZXIgaW5mZXIgdGhlIHR5cGVzIGZvciB1cy4KLQotU29tZXRpbWVzLCBob3dldmVyLCB3ZSBt
YXkgd2FudCB0byBiZSBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJlIGFyZSBz
ZXZlcmFsIHRyaWNrcyB0byBkbyB0aGF0LiAgRm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28p
IHsKLSAgLy8gTWFrZXMgc3VyZSBhcmcwIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50LgotICBpbnQg
biA9IGFyZzA7Ci0gIC4uLiB1c2UgbiBpbnN0ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0KLQotQUNU
SU9OX1AoQmFyLCBwYXJhbSkgewotICAvLyBNYWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFyZzEgaXMg
Y29uc3QgY2hhciouCi0gIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIq
LCBhcmcxX3R5cGU+KCk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29udmVydGVk
IHRvIGJvb2wuCi0gIGJvb2wgZmxhZyA9IHBhcmFtOwotfQotYGBgCi13aGVyZSBgU3RhdGljQXNz
ZXJ0VHlwZUVxYCBpcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gaW4gR29vZ2xlIFRlc3QKLXRo
YXQgdmVyaWZpZXMgdHdvIHR5cGVzIGFyZSB0aGUgc2FtZS4KLQotIyMgV3JpdGluZyBOZXcgQWN0
aW9uIFRlbXBsYXRlcyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFu
IGFjdGlvbiBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKLWNhbm5vdCBiZSBpbmZl
cnJlZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0ZXJzLiAgYEFDVElPTl9URU1QTEFURSgpYAotc3Vw
cG9ydHMgdGhhdCBhbmQgY2FuIGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gYEFDVElPTigp
YCBhbmQKLWBBQ1RJT05fUCooKWAuCi0KLVRoZSBzeW50YXg6Ci1gYGAKLUFDVElPTl9URU1QTEFU
RShBY3Rpb25OYW1lLAotICAgICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5k
MSwgbmFtZTEsIC4uLiwga2luZF9tLCBuYW1lX20pLAotICAgICAgICAgICAgICAgIEFORF9uX1ZB
TFVFX1BBUkFNUyhwMSwgLi4uLCBwX24pKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1kZWZpbmVz
IGFuIGFjdGlvbiB0ZW1wbGF0ZSB0aGF0IHRha2VzIF9tXyBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJh
bWV0ZXJzCi1hbmQgX25fIHZhbHVlIHBhcmFtZXRlcnMsIHdoZXJlIF9tXyBpcyBiZXR3ZWVuIDEg
YW5kIDEwLCBhbmQgX25fIGlzCi1iZXR3ZWVuIDAgYW5kIDEwLiAgYG5hbWVfaWAgaXMgdGhlIG5h
bWUgb2YgdGhlIGktdGggdGVtcGxhdGUKLXBhcmFtZXRlciwgYW5kIGBraW5kX2lgIHNwZWNpZmll
cyB3aGV0aGVyIGl0J3MgYSBgdHlwZW5hbWVgLCBhbgotaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEg
dGVtcGxhdGUuICBgcF9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB2YWx1ZQotcGFyYW1ldGVy
LgotCi1FeGFtcGxlOgotYGBgCi0vLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0
cyB0aGUgay10aCBhcmd1bWVudCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24gdG8gdHlwZSBUIGFu
ZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KLUFDVElPTl9URU1QTEFURShEdXBsaWNhdGVBcmcsCi0g
ICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgY29tbWEgYmV0d2VlbiBpbnQgYW5kIGs6Ci0gICAg
ICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUsIFQpLAot
ICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0gICpvdXRwdXQg
PSBUKHN0ZDo6dHIxOjpnZXQ8az4oYXJncykpOwotfQotYGBgCi0KLVRvIGNyZWF0ZSBhbiBpbnN0
YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxhdGUsIHdyaXRlOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEs
IC4uLiwgdF9tPih2MSwgLi4uLCB2X24pCi1gYGAKLXdoZXJlIHRoZSBgdGBzIGFyZSB0aGUgdGVt
cGxhdGUgYXJndW1lbnRzIGFuZCB0aGUKLWB2YHMgYXJlIHRoZSB2YWx1ZSBhcmd1bWVudHMuICBU
aGUgdmFsdWUgYXJndW1lbnQKLXR5cGVzIGFyZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBG
b3IgZXhhbXBsZToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIGludCBuOwotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXykpCi0gICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJn
PDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7Ci1gYGAKLQotSWYgeW91IHdhbnQgdG8gZXhwbGljaXRs
eSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgotcHJvdmlkZSBhZGRp
dGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoKLWBgYAotICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRf
bSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24pCi1gYGAKLXdoZXJlIGB1X2lgIGlzIHRoZSBk
ZXNpcmVkIHR5cGUgb2YgYHZfaWAuCi0KLWBBQ1RJT05fVEVNUExBVEVgIGFuZCBgQUNUSU9OYC9g
QUNUSU9OX1AqYCBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB2YWx1ZSBwYXJh
bWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIgb2YgdGVtcGxhdGUKLXBhcmFtZXRlcnMuICBX
aXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhlIG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZyBpcwot
dW5jbGVhcjoKLQotYGBgCi0gIE92ZXJsb2FkZWRBY3Rpb248aW50LCBib29sPih4KTsKLWBgYAot
Ci1BcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSBg
Ym9vbGAgcmVmZXJzIHRvCi10aGUgdHlwZSBvZiBgeGAsIG9yIGEgdHdvLXRlbXBsYXRlLXBhcmFt
ZXRlciBhY3Rpb24gd2hlcmUgdGhlIGNvbXBpbGVyCi1pcyBhc2tlZCB0byBpbmZlciB0aGUgdHlw
ZSBvZiBgeGA/Ci0KLSMjIFVzaW5nIHRoZSBBQ1RJT04gT2JqZWN0J3MgVHlwZSAjIwotCi1JZiB5
b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0
LCB5b3UnbGwKLW5lZWQgdG8ga25vdyBpdHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhl
IG1hY3JvIHVzZWQgdG8gZGVmaW5lCi10aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVz
LiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVseSBzaW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioq
IHwgKipFeHByZXNzaW9uKiogfCAqKkhhcyBUeXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAg
ICAgfCBgRm9vKClgICAgICAgICB8IGBGb29BY3Rpb25gICB8Ci18IGBBQ1RJT05fVEVNUExBVEUo
Rm9vLCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzBfVkFMVUVfUEFSQU1TKCkpYCB8
CWBGb288dDEsIC4uLiwgdF9tPigpYCB8IGBGb29BY3Rpb248dDEsIC4uLiwgdF9tPmAgfAotfCBg
QUNUSU9OX1AoQmFyLCBwYXJhbSlgIHwgYEJhcihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGlu
dD5gIHwKLXwgYEFDVElPTl9URU1QTEFURShCYXIsIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4p
LCBBTkRfMV9WQUxVRV9QQVJBTVMocDEpKWAgfCBgQmFyPHQxLCAuLi4sIHRfbT4oaW50X3ZhbHVl
KWAgfCBgRm9vQWN0aW9uUDx0MSwgLi4uLCB0X20sIGludD5gIHwKLXwgYEFDVElPTl9QMihCYXos
IHAxLCBwMilgIHwgYEJheihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBCYXpBY3Rpb25QMjxi
b29sLCBpbnQ+YCB8Ci18IGBBQ1RJT05fVEVNUExBVEUoQmF6LCBIQVNfbV9URU1QTEFURV9QQVJB
TVMoLi4uKSwgQU5EXzJfVkFMVUVfUEFSQU1TKHAxLCBwMikpYCB8IGBCYXo8dDEsIC4uLiwgdF9t
Pihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBGb29BY3Rpb25QMjx0MSwgLi4uLCB0X20sIGJv
b2wsIGludD5gIHwKLXwgLi4uICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4u
LiAgICAgICAgICB8Ci0KLU5vdGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZp
eGVzIChgQWN0aW9uYCwgYEFjdGlvblBgLAotYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlv
bnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiB2YWx1ZQotcGFyYW1ldGVycywgb3IgdGhlIGFj
dGlvbiBkZWZpbml0aW9ucyBjYW5ub3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB0
aGVtLgotCi0jIyBXcml0aW5nIE5ldyBNb25vbW9ycGhpYyBBY3Rpb25zICMjCi0KLVdoaWxlIHRo
ZSBgQUNUSU9OKmAgbWFjcm9zIGFyZSB2ZXJ5IGNvbnZlbmllbnQsIHNvbWV0aW1lcyB0aGV5IGFy
ZQotaW5hcHByb3ByaWF0ZS4gIEZvciBleGFtcGxlLCBkZXNwaXRlIHRoZSB0cmlja3Mgc2hvd24g
aW4gdGhlIHByZXZpb3VzCi1yZWNpcGVzLCB0aGV5IGRvbid0IGxldCB5b3UgZGlyZWN0bHkgc3Bl
Y2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sKLWZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFj
dGlvbiBwYXJhbWV0ZXJzLCB3aGljaCBpbiBnZW5lcmFsIGxlYWRzCi10byB1bm9wdGltaXplZCBj
b21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiYWZmbGUgdW5mYW1pbGlhcgotdXNlcnMu
ICBUaGV5IGFsc28gZG9uJ3QgYWxsb3cgb3ZlcmxvYWRpbmcgYWN0aW9ucyBiYXNlZCBvbiBwYXJh
bWV0ZXIKLXR5cGVzIHdpdGhvdXQganVtcGluZyB0aHJvdWdoIHNvbWUgaG9vcHMuCi0KLUFuIGFs
dGVybmF0aXZlIHRvIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGlzIHRvIGltcGxlbWVudAotYDo6dGVz
dGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+YCwgd2hlcmUgYEZgIGlzIHRoZSB0eXBlIG9mIHRoZSBt
b2NrCi1mdW5jdGlvbiBpbiB3aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gRm9yIGV4YW1w
bGU6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Y2xhc3MgQWN0aW9uSW50ZXJmYWNlIHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkFjdGlvbkludGVyZmFjZSgpOwotCi0gIC8vIFBlcmZvcm1z
IHRoZSBhY3Rpb24uICBSZXN1bHQgaXMgdGhlIHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUK
LSAgLy8gRiwgYW5kIEFyZ3VtZW50VHVwbGUgaXMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50cyBvZiBG
LgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwgaWYgRiBpcyBpbnQoYm9vbCwgY29uc3Qgc3RyaW5n
JiksIHRoZW4gUmVzdWx0IHdvdWxkCi0gIC8vIGJlIGludCwgYW5kIEFyZ3VtZW50VHVwbGUgd291
bGQgYmUgdHIxOjp0dXBsZTxib29sLCBjb25zdCBzdHJpbmcmPi4KLSAgdmlydHVhbCBSZXN1bHQg
UGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSA9IDA7Ci19OwotCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6QWN0
aW9uSW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlQWN0aW9uOwotCi10eXBlZGVmIGlu
dCBJbmNyZW1lbnRNZXRob2QoaW50Kik7Ci0KLWNsYXNzIEluY3JlbWVudEFyZ3VtZW50QWN0aW9u
IDogcHVibGljIEFjdGlvbkludGVyZmFjZTxJbmNyZW1lbnRNZXRob2Q+IHsKLSBwdWJsaWM6Ci0g
IHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3QgdHIxOjp0dXBsZTxpbnQqPiYgYXJncykgewotICAg
IGludCogcCA9IHRyMTo6Z2V0PDA+KGFyZ3MpOyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50
LgotICAgIHJldHVybiAqcCsrOwotICB9Ci19OwotCi1BY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJ
bmNyZW1lbnRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFy
Z3VtZW50QWN0aW9uKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQotICAg
ICAgLldpbGxPbmNlKEluY3JlbWVudEFyZ3VtZW50KCkpOwotCi0gIGludCBuID0gNTsKLSAgZm9v
LkJheigmbik7ICAvLyBTaG91bGQgcmV0dXJuIDUgYW5kIGNoYW5nZSBuIHRvIDYuCi1gYGAKLQot
IyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMgQWN0aW9ucyAjIwotCi1UaGUgcHJldmlvdXMgcmVj
aXBlIHNob3dlZCB5b3UgaG93IHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKLWFs
bCBnb29kLCBleGNlcHQgdGhhdCB5b3UgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5j
dGlvbiBpbgotd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNh
biBiZSBhIHByb2JsZW0uIEZvcgotZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rp
b24gaW4gZnVuY3Rpb25zIHdpdGggX2RpZmZlcmVudF8KLXR5cGVzIChlLmcuIGxpa2UgYFJldHVy
bigpYCBhbmQgYFNldEFyZ1BvaW50ZWUoKWApLgotCi1JZiBhbiBhY3Rpb24gY2FuIGJlIHVzZWQg
aW4gc2V2ZXJhbCB0eXBlcyBvZiBtb2NrIGZ1bmN0aW9ucywgd2Ugc2F5Ci1pdCdzIF9wb2x5bW9y
cGhpY18uIFRoZSBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIGZ1bmN0aW9uIHRlbXBsYXRlCi1t
YWtlcyBpdCBlYXN5IHRvIGRlZmluZSBzdWNoIGFuIGFjdGlvbjoKLQotYGBgCi1uYW1lc3BhY2Ug
dGVzdGluZyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgotUG9seW1vcnBoaWNBY3Rpb248
SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGNvbnN0IEltcGwmIGltcGwpOwotCi19ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwotYGBgCi0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGRlZmluZSBhbiBh
Y3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNvbmQgYXJndW1lbnQKLWluIHRoZSBtb2NrIGZ1bmN0
aW9uJ3MgYXJndW1lbnQgbGlzdC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGVmaW5lIGFuCi1pbXBs
ZW1lbnRhdGlvbiBjbGFzczoKLQotYGBgCi1jbGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlv
biB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1
bWVudFR1cGxlPgotICBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBj
b25zdCB7Ci0gICAgLy8gVG8gZ2V0IHRoZSBpLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgdXNlIHRy
MTo6Z2V0PGk+KGFyZ3MpLgotICAgIHJldHVybiB0cjE6OmdldDwxPihhcmdzKTsKLSAgfQotfTsK
LWBgYAotCi1UaGlzIGltcGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgX25vdF8gbmVlZCB0byBpbmhl
cml0IGZyb20gYW55Ci1wYXJ0aWN1bGFyIGNsYXNzLiBXaGF0IG1hdHRlcnMgaXMgdGhhdCBpdCBt
dXN0IGhhdmUgYSBgUGVyZm9ybSgpYAotbWV0aG9kIHRlbXBsYXRlLiBUaGlzIG1ldGhvZCB0ZW1w
bGF0ZSB0YWtlcyB0aGUgbW9jayBmdW5jdGlvbidzCi1hcmd1bWVudHMgYXMgYSB0dXBsZSBpbiBh
ICoqc2luZ2xlKiogYXJndW1lbnQsIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgb2YKLXRoZSBhY3Rp
b24uIEl0IGNhbiBiZSBlaXRoZXIgYGNvbnN0YCBvciBub3QsIGJ1dCBtdXN0IGJlIGludm9rYWJs
ZQotd2l0aCBleGFjdGx5IG9uZSB0ZW1wbGF0ZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlIHJlc3Vs
dCB0eXBlLiBJbiBvdGhlcgotd29yZHMsIHlvdSBtdXN0IGJlIGFibGUgdG8gY2FsbCBgUGVyZm9y
bTxSPihhcmdzKWAgd2hlcmUgYFJgIGlzIHRoZQotbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBl
IGFuZCBgYXJnc2AgaXMgaXRzIGFyZ3VtZW50cyBpbiBhIHR1cGxlLgotCi1OZXh0LCB3ZSB1c2Ug
YE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCB0byB0dXJuIGFuIGluc3RhbmNlIG9mIHRoZQotaW1w
bGVtZW50YXRpb24gY2xhc3MgaW50byB0aGUgcG9seW1vcnBoaWMgYWN0aW9uIHdlIG5lZWQuIEl0
IHdpbGwgYmUKLWNvbnZlbmllbnQgdG8gaGF2ZSBhIHdyYXBwZXIgZm9yIHRoaXM6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNBY3Rpb247Ci11c2luZyA6OnRlc3Rpbmc6
OlBvbHltb3JwaGljQWN0aW9uOwotCi1Qb2x5bW9ycGhpY0FjdGlvbjxSZXR1cm5TZWNvbmRBcmd1
bWVudEFjdGlvbj4gUmV0dXJuU2Vjb25kQXJndW1lbnQoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1v
cnBoaWNBY3Rpb24oUmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24oKSk7Ci19Ci1gYGAKLQotTm93
LCB5b3UgY2FuIHVzZSB0aGlzIHBvbHltb3JwaGljIGFjdGlvbiB0aGUgc2FtZSB3YXkgeW91IHVz
ZSB0aGUKLWJ1aWx0LWluIG9uZXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIoRG9UaGlz
LCBpbnQoYm9vbCBmbGFnLCBpbnQgbikpOwotICBNT0NLX01FVEhPRDMoRG9UaGF0LCBzdHJpbmco
aW50IHgsIGNvbnN0IGNoYXIqIHN0cjEsIGNvbnN0IGNoYXIqIHN0cjIpKTsKLX07Ci0uLi4KLQot
ICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCi0gICAgICAu
V2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9U
aGF0KF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKFJldHVyblNlY29uZEFyZ3VtZW50KCkpOwot
ICAuLi4KLSAgZm9vLkRvVGhpcyh0cnVlLCA1KTsgICAgICAgICAvLyBXaWxsIHJldHVybiA1Lgot
ICBmb28uRG9UaGF0KDEsICJIaSIsICJCeWUiKTsgIC8vIFdpbGwgcmV0dXJuICJIaSIuCi1gYGAK
LQotIyMgVGVhY2hpbmcgR29vZ2xlIE1vY2sgSG93IHRvIFByaW50IFlvdXIgVmFsdWVzICMjCi0K
LVdoZW4gYW4gdW5pbnRlcmVzdGluZyBvciB1bmV4cGVjdGVkIGNhbGwgb2NjdXJzLCBHb29nbGUg
TW9jayBwcmludHMgdGhlCi1hcmd1bWVudCB2YWx1ZXMgYW5kIHRoZSBzdGFjayB0cmFjZSB0byBo
ZWxwIHlvdSBkZWJ1Zy4gIEFzc2VydGlvbgotbWFjcm9zIGxpa2UgYEVYUEVDVF9USEFUYCBhbmQg
YEVYUEVDVF9FUWAgYWxzbyBwcmludCB0aGUgdmFsdWVzIGluCi1xdWVzdGlvbiB3aGVuIHRoZSBh
c3NlcnRpb24gZmFpbHMuICBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QgZG8gdGhpcyB1c2lu
ZwotR29vZ2xlIFRlc3QncyB1c2VyLWV4dGVuc2libGUgdmFsdWUgcHJpbnRlci4KLQotVGhpcyBw
cmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2ZSBhcnJh
eXMsIFNUTAotY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGA8PGAg
b3BlcmF0b3IuICBGb3Igb3RoZXIKLXR5cGVzLCBpdCBwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0
aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQotdXNlciBjYW4gZmlndXJlIGl0IG91dC4K
LVtHb29nbGUgVGVzdCdzIGFkdmFuY2VkIGd1aWRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xldGVzdC93aWtpL1YxXzZfQWR2YW5jZWRHdWlkZSNUZWFjaGluZ19Hb29nbGVfVGVzdF9I
b3dfdG9fUHJpbnRfWW91cl9WYWx1ZXMpCi1leHBsYWlucyBob3cgdG8gZXh0ZW5kIHRoZSBwcmlu
dGVyIHRvIGRvIGEgYmV0dGVyIGpvYiBhdAotcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUg
dGhhbiB0byBkdW1wIHRoZSBieXRlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvRG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2RvY3MvdjFfNi9Eb2N1bWVudGF0aW9uLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkY2M5MTU2YzJhMTIwMjdiZTBjZTBiNzY4ZGFiZGZmZjdlMjE2NTUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFf
Ni9Eb2N1bWVudGF0aW9uLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyBw
YWdlIGxpc3RzIGFsbCBkb2N1bWVudGF0aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBNb2NrICoq
MS42KioKLS0gKippZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywg
cGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBp
bnN0ZWFkLioqCi0KLSAgKiBbRm9yRHVtbWllc10oVjFfNl9Gb3JEdW1taWVzLm1kKSAtLSBzdGFy
dCBoZXJlIGlmIHlvdSBhcmUgbmV3IHRvIEdvb2dsZSBNb2NrLgotICAqIFtDaGVhdFNoZWV0XShW
MV82X0NoZWF0U2hlZXQubWQpIC0tIGEgcXVpY2sgcmVmZXJlbmNlLgotICAqIFtDb29rQm9va10o
VjFfNl9Db29rQm9vay5tZCkgLS0gcmVjaXBlcyBmb3IgZG9pbmcgdmFyaW91cyB0YXNrcyB1c2lu
ZyBHb29nbGUgTW9jay4KLSAgKiBbRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXShWMV82X0ZyZXF1
ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVl
c3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4KLQotVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2ds
ZSBNb2NrLCByZWFkOgotCi0gICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlz
IF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KLSAgKiBbUHVtcCBNYW51YWxdKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvVjFfNl9QdW1wTWFudWFsKSAt
LSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUgTW9jaydzIHNvdXJjZSBmaWxlcy4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3Yx
XzYvRm9yRHVtbWllcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Gb3JEdW1taWVzLm1kCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWVlNjNhYjBjMjg3OTEwZTE2NDMxNDBmNzdk
NWFjMjk5YzZhYmY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Gb3JEdW1taWVzLm1kCisrKyAvZGV2L251bGwKQEAg
LTEsNDM5ICswLDAgQEAKLQotCi0oKipOb3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIgZXJyb3Jz
IHRoYXQgeW91IGRvbid0IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29vZ2xlIE1v
Y2sgRG9jdG9yXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZf
RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vf
b2ZfdGhlc2VfaG9ycmlibGVfdGVtcGxhdGVfZXJyb3IpLikKLQotIyBXaGF0IElzIEdvb2dsZSBD
KysgTW9ja2luZyBGcmFtZXdvcms/ICMKLVdoZW4geW91IHdyaXRlIGEgcHJvdG90eXBlIG9yIHRl
c3QsIG9mdGVuIGl0J3Mgbm90IGZlYXNpYmxlIG9yIHdpc2UgdG8gcmVseSBvbiByZWFsIG9iamVj
dHMgZW50aXJlbHkuIEEgKiptb2NrIG9iamVjdCoqIGltcGxlbWVudHMgdGhlIHNhbWUgaW50ZXJm
YWNlIGFzIGEgcmVhbCBvYmplY3QgKHNvIGl0IGNhbiBiZSB1c2VkIGFzIG9uZSksIGJ1dCBsZXRz
IHlvdSBzcGVjaWZ5IGF0IHJ1biB0aW1lIGhvdyBpdCB3aWxsIGJlIHVzZWQgYW5kIHdoYXQgaXQg
c2hvdWxkIGRvICh3aGljaCBtZXRob2RzIHdpbGwgYmUgY2FsbGVkPyBpbiB3aGljaCBvcmRlcj8g
aG93IG1hbnkgdGltZXM/IHdpdGggd2hhdCBhcmd1bWVudHM/IHdoYXQgd2lsbCB0aGV5IHJldHVy
bj8gZXRjKS4KLQotKipOb3RlOioqIEl0IGlzIGVhc3kgdG8gY29uZnVzZSB0aGUgdGVybSBfZmFr
ZSBvYmplY3RzXyB3aXRoIG1vY2sgb2JqZWN0cy4gRmFrZXMgYW5kIG1vY2tzIGFjdHVhbGx5IG1l
YW4gdmVyeSBkaWZmZXJlbnQgdGhpbmdzIGluIHRoZSBUZXN0LURyaXZlbiBEZXZlbG9wbWVudCAo
VEREKSBjb21tdW5pdHk6Ci0KLSAgKiAqKkZha2UqKiBvYmplY3RzIGhhdmUgd29ya2luZyBpbXBs
ZW1lbnRhdGlvbnMsIGJ1dCB1c3VhbGx5IHRha2Ugc29tZSBzaG9ydGN1dCAocGVyaGFwcyB0byBt
YWtlIHRoZSBvcGVyYXRpb25zIGxlc3MgZXhwZW5zaXZlKSwgd2hpY2ggbWFrZXMgdGhlbSBub3Qg
c3VpdGFibGUgZm9yIHByb2R1Y3Rpb24uIEFuIGluLW1lbW9yeSBmaWxlIHN5c3RlbSB3b3VsZCBi
ZSBhbiBleGFtcGxlIG9mIGEgZmFrZS4KLSAgKiAqKk1vY2tzKiogYXJlIG9iamVjdHMgcHJlLXBy
b2dyYW1tZWQgd2l0aCBfZXhwZWN0YXRpb25zXywgd2hpY2ggZm9ybSBhIHNwZWNpZmljYXRpb24g
b2YgdGhlIGNhbGxzIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJlY2VpdmUuCi0KLUlmIGFsbCB0aGlz
IHNlZW1zIHRvbyBhYnN0cmFjdCBmb3IgeW91LCBkb24ndCB3b3JyeSAtIHRoZSBtb3N0IGltcG9y
dGFudCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGEgbW9jayBhbGxvd3MgeW91IHRvIGNoZWNr
IHRoZSBfaW50ZXJhY3Rpb25fIGJldHdlZW4gaXRzZWxmIGFuZCBjb2RlIHRoYXQgdXNlcyBpdC4g
VGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBmYWtlcyBhbmQgbW9ja3Mgd2lsbCBiZWNvbWUgbXVjaCBj
bGVhcmVyIG9uY2UgeW91IHN0YXJ0IHRvIHVzZSBtb2Nrcy4KLQotKipHb29nbGUgQysrIE1vY2tp
bmcgRnJhbWV3b3JrKiogKG9yICoqR29vZ2xlIE1vY2sqKiBmb3Igc2hvcnQpIGlzIGEgbGlicmFy
eSAoc29tZXRpbWVzIHdlIGFsc28gY2FsbCBpdCBhICJmcmFtZXdvcmsiIHRvIG1ha2UgaXQgc291
bmQgY29vbCkgZm9yIGNyZWF0aW5nIG1vY2sgY2xhc3NlcyBhbmQgdXNpbmcgdGhlbS4gSXQgZG9l
cyB0byBDKysgd2hhdCBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9j
a10oaHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSBkbyB0byBKYXZhLgotCi1Vc2luZyBHb29nbGUg
TW9jayBpbnZvbHZlcyB0aHJlZSBiYXNpYyBzdGVwczoKLQotICAxLiBVc2Ugc29tZSBzaW1wbGUg
bWFjcm9zIHRvIGRlc2NyaWJlIHRoZSBpbnRlcmZhY2UgeW91IHdhbnQgdG8gbW9jaywgYW5kIHRo
ZXkgd2lsbCBleHBhbmQgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9jayBjbGFzczsK
LSAgMS4gQ3JlYXRlIHNvbWUgbW9jayBvYmplY3RzIGFuZCBzcGVjaWZ5IGl0cyBleHBlY3RhdGlv
bnMgYW5kIGJlaGF2aW9yIHVzaW5nIGFuIGludHVpdGl2ZSBzeW50YXg7Ci0gIDEuIEV4ZXJjaXNl
IGNvZGUgdGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHMuIEdvb2dsZSBNb2NrIHdpbGwgY2F0Y2gg
YW55IHZpb2xhdGlvbiBvZiB0aGUgZXhwZWN0YXRpb25zIGFzIHNvb24gYXMgaXQgYXJpc2VzLgot
Ci0jIFdoeSBHb29nbGUgTW9jaz8gIwotV2hpbGUgbW9jayBvYmplY3RzIGhlbHAgeW91IHJlbW92
ZSB1bm5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMgaW4gdGVzdHMgYW5kIG1ha2UgdGhlbSBmYXN0IGFu
ZCByZWxpYWJsZSwgdXNpbmcgbW9ja3MgbWFudWFsbHkgaW4gQysrIGlzIF9oYXJkXzoKLQotICAq
IFNvbWVvbmUgaGFzIHRvIGltcGxlbWVudCB0aGUgbW9ja3MuIFRoZSBqb2IgaXMgdXN1YWxseSB0
ZWRpb3VzIGFuZCBlcnJvci1wcm9uZS4gTm8gd29uZGVyIHBlb3BsZSBnbyBncmVhdCBkaXN0YW5j
ZSB0byBhdm9pZCBpdC4KLSAgKiBUaGUgcXVhbGl0eSBvZiB0aG9zZSBtYW51YWxseSB3cml0dGVu
IG1vY2tzIGlzIGEgYml0LCB1aCwgdW5wcmVkaWN0YWJsZS4gWW91IG1heSBzZWUgc29tZSByZWFs
bHkgcG9saXNoZWQgb25lcywgYnV0IHlvdSBtYXkgYWxzbyBzZWUgc29tZSB0aGF0IHdlcmUgaGFj
a2VkIHVwIGluIGEgaHVycnkgYW5kIGhhdmUgYWxsIHNvcnRzIG9mIGFkIGhvYyByZXN0cmljdGlv
bnMuCi0gICogVGhlIGtub3dsZWRnZSB5b3UgZ2FpbmVkIGZyb20gdXNpbmcgb25lIG1vY2sgZG9l
c24ndCB0cmFuc2ZlciB0byB0aGUgbmV4dC4KLQotSW4gY29udHJhc3QsIEphdmEgYW5kIFB5dGhv
biBwcm9ncmFtbWVycyBoYXZlIHNvbWUgZmluZSBtb2NrIGZyYW1ld29ya3MsIHdoaWNoIGF1dG9t
YXRlIHRoZSBjcmVhdGlvbiBvZiBtb2Nrcy4gQXMgYSByZXN1bHQsIG1vY2tpbmcgaXMgYSBwcm92
ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZSBhbmQgd2lkZWx5IGFkb3B0ZWQgcHJhY3RpY2UgaW4gdGhv
c2UgY29tbXVuaXRpZXMuIEhhdmluZyB0aGUgcmlnaHQgdG9vbCBhYnNvbHV0ZWx5IG1ha2VzIHRo
ZSBkaWZmZXJlbmNlLgotCi1Hb29nbGUgTW9jayB3YXMgYnVpbHQgdG8gaGVscCBDKysgcHJvZ3Jh
bW1lcnMuIEl0IHdhcyBpbnNwaXJlZCBieSBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykg
YW5kIFtFYXN5TW9ja10oaHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSwgYnV0IGRlc2lnbmVkIHdp
dGggQysrJ3Mgc3BlY2lmaWNzIGluIG1pbmQuIEl0IGlzIHlvdXIgZnJpZW5kIGlmIGFueSBvZiB0
aGUgZm9sbG93aW5nIHByb2JsZW1zIGlzIGJvdGhlcmluZyB5b3U6Ci0KLSAgKiBZb3UgYXJlIHN0
dWNrIHdpdGggYSBzdWItb3B0aW1hbCBkZXNpZ24gYW5kIHdpc2ggeW91IGhhZCBkb25lIG1vcmUg
cHJvdG90eXBpbmcgYmVmb3JlIGl0IHdhcyB0b28gbGF0ZSwgYnV0IHByb3RvdHlwaW5nIGluIEMr
KyBpcyBieSBubyBtZWFucyAicmFwaWQiLgotICAqIFlvdXIgdGVzdHMgYXJlIHNsb3cgYXMgdGhl
eSBkZXBlbmQgb24gdG9vIG1hbnkgbGlicmFyaWVzIG9yIHVzZSBleHBlbnNpdmUgcmVzb3VyY2Vz
IChlLmcuIGEgZGF0YWJhc2UpLgotICAqIFlvdXIgdGVzdHMgYXJlIGJyaXR0bGUgYXMgc29tZSBy
ZXNvdXJjZXMgdGhleSB1c2UgYXJlIHVucmVsaWFibGUgKGUuZy4gdGhlIG5ldHdvcmspLgotICAq
IFlvdSB3YW50IHRvIHRlc3QgaG93IHlvdXIgY29kZSBoYW5kbGVzIGEgZmFpbHVyZSAoZS5nLiBh
IGZpbGUgY2hlY2tzdW0gZXJyb3IpLCBidXQgaXQncyBub3QgZWFzeSB0byBjYXVzZSBvbmUuCi0g
ICogWW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91ciBtb2R1bGUgaW50ZXJhY3RzIHdpdGgg
b3RoZXIgbW9kdWxlcyBpbiB0aGUgcmlnaHQgd2F5LCBidXQgaXQncyBoYXJkIHRvIG9ic2VydmUg
dGhlIGludGVyYWN0aW9uOyB0aGVyZWZvcmUgeW91IHJlc29ydCB0byBvYnNlcnZpbmcgdGhlIHNp
ZGUgZWZmZWN0cyBhdCB0aGUgZW5kIG9mIHRoZSBhY3Rpb24sIHdoaWNoIGlzIGF3a3dhcmQgYXQg
YmVzdC4KLSAgKiBZb3Ugd2FudCB0byAibW9jayBvdXQiIHlvdXIgZGVwZW5kZW5jaWVzLCBleGNl
cHQgdGhhdCB0aGV5IGRvbid0IGhhdmUgbW9jayBpbXBsZW1lbnRhdGlvbnMgeWV0OyBhbmQsIGZy
YW5rbHksIHlvdSBhcmVuJ3QgdGhyaWxsZWQgYnkgc29tZSBvZiB0aG9zZSBoYW5kLXdyaXR0ZW4g
bW9ja3MuCi0KLVdlIGVuY291cmFnZSB5b3UgdG8gdXNlIEdvb2dsZSBNb2NrIGFzOgotCi0gICog
YSBfZGVzaWduXyB0b29sLCBmb3IgaXQgbGV0cyB5b3UgZXhwZXJpbWVudCB3aXRoIHlvdXIgaW50
ZXJmYWNlIGRlc2lnbiBlYXJseSBhbmQgb2Z0ZW4uIE1vcmUgaXRlcmF0aW9ucyBsZWFkIHRvIGJl
dHRlciBkZXNpZ25zIQotICAqIGEgX3Rlc3RpbmdfIHRvb2wgdG8gY3V0IHlvdXIgdGVzdHMnIG91
dGJvdW5kIGRlcGVuZGVuY2llcyBhbmQgcHJvYmUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4geW91
ciBtb2R1bGUgYW5kIGl0cyBjb2xsYWJvcmF0b3JzLgotCi0jIEdldHRpbmcgU3RhcnRlZCAjCi1V
c2luZyBHb29nbGUgTW9jayBpcyBlYXN5ISBJbnNpZGUgeW91ciBDKysgc291cmNlIGZpbGUsIGp1
c3QgYCNpbmNsdWRlYCBgImd0ZXN0L2d0ZXN0LmgiYCBhbmQgYCJnbW9jay9nbW9jay5oImAsIGFu
ZCB5b3UgYXJlIHJlYWR5IHRvIGdvLgotCi0jIEEgQ2FzZSBmb3IgTW9jayBUdXJ0bGVzICMKLUxl
dCdzIGxvb2sgYXQgYW4gZXhhbXBsZS4gU3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBncmFw
aGljcyBwcm9ncmFtIHRoYXQgcmVsaWVzIG9uIGEgTE9HTy1saWtlIEFQSSBmb3IgZHJhd2luZy4g
SG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgaXQgZG9lcyB0aGUgcmlnaHQgdGhpbmc/IFdlbGwsIHlv
dSBjYW4gcnVuIGl0IGFuZCBjb21wYXJlIHRoZSBzY3JlZW4gd2l0aCBhIGdvbGRlbiBzY3JlZW4g
c25hcHNob3QsIGJ1dCBsZXQncyBhZG1pdCBpdDogdGVzdHMgbGlrZSB0aGlzIGFyZSBleHBlbnNp
dmUgdG8gcnVuIGFuZCBmcmFnaWxlIChXaGF0IGlmIHlvdSBqdXN0IHVwZ3JhZGVkIHRvIGEgc2hp
bnkgbmV3IGdyYXBoaWNzIGNhcmQgdGhhdCBoYXMgYmV0dGVyIGFudGktYWxpYXNpbmc/IFN1ZGRl
bmx5IHlvdSBoYXZlIHRvIHVwZGF0ZSBhbGwgeW91ciBnb2xkZW4gaW1hZ2VzLikuIEl0IHdvdWxk
IGJlIHRvbyBwYWluZnVsIGlmIGFsbCB5b3VyIHRlc3RzIGFyZSBsaWtlIHRoaXMuIEZvcnR1bmF0
ZWx5LCB5b3UgbGVhcm5lZCBhYm91dCBEZXBlbmRlbmN5IEluamVjdGlvbiBhbmQga25vdyB0aGUg
cmlnaHQgdGhpbmcgdG8gZG86IGluc3RlYWQgb2YgaGF2aW5nIHlvdXIgYXBwbGljYXRpb24gdGFs
ayB0byB0aGUgZHJhd2luZyBBUEkgZGlyZWN0bHksIHdyYXAgdGhlIEFQSSBpbiBhbiBpbnRlcmZh
Y2UgKHNheSwgYFR1cnRsZWApIGFuZCBjb2RlIHRvIHRoYXQgaW50ZXJmYWNlOgotCi1gYGAKLWNs
YXNzIFR1cnRsZSB7Ci0gIC4uLgotICB2aXJ0dWFsIH5UdXJ0bGUoKSB7fQotICB2aXJ0dWFsIHZv
aWQgUGVuVXAoKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQZW5Eb3duKCkgPSAwOwotICB2aXJ0dWFs
IHZvaWQgRm9yd2FyZChpbnQgZGlzdGFuY2UpID0gMDsKLSAgdmlydHVhbCB2b2lkIFR1cm4oaW50
IGRlZ3JlZXMpID0gMDsKLSAgdmlydHVhbCB2b2lkIEdvVG8oaW50IHgsIGludCB5KSA9IDA7Ci0g
IHZpcnR1YWwgaW50IEdldFgoKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFkoKSBjb25z
dCA9IDA7Ci19OwotYGBgCi0KLShOb3RlIHRoYXQgdGhlIGRlc3RydWN0b3Igb2YgYFR1cnRsZWAg
KiptdXN0KiogYmUgdmlydHVhbCwgYXMgaXMgdGhlIGNhc2UgZm9yICoqYWxsKiogY2xhc3NlcyB5
b3UgaW50ZW5kIHRvIGluaGVyaXQgZnJvbSAtIG90aGVyd2lzZSB0aGUgZGVzdHJ1Y3RvciBvZiB0
aGUgZGVyaXZlZCBjbGFzcyB3aWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIGFuIG9i
amVjdCB0aHJvdWdoIGEgYmFzZSBwb2ludGVyLCBhbmQgeW91J2xsIGdldCBjb3JydXB0ZWQgcHJv
Z3JhbSBzdGF0ZXMgbGlrZSBtZW1vcnkgbGVha3MuKQotCi1Zb3UgY2FuIGNvbnRyb2wgd2hldGhl
ciB0aGUgdHVydGxlJ3MgbW92ZW1lbnQgd2lsbCBsZWF2ZSBhIHRyYWNlIHVzaW5nIGBQZW5VcCgp
YCBhbmQgYFBlbkRvd24oKWAsIGFuZCBjb250cm9sIGl0cyBtb3ZlbWVudCB1c2luZyBgRm9yd2Fy
ZCgpYCwgYFR1cm4oKWAsIGFuZCBgR29UbygpYC4gRmluYWxseSwgYEdldFgoKWAgYW5kIGBHZXRZ
KClgIHRlbGwgeW91IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSB0dXJ0bGUuCi0KLVlvdXIg
cHJvZ3JhbSB3aWxsIG5vcm1hbGx5IHVzZSBhIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBp
bnRlcmZhY2UuIEluIHRlc3RzLCB5b3UgY2FuIHVzZSBhIG1vY2sgaW1wbGVtZW50YXRpb24gaW5z
dGVhZC4gVGhpcyBhbGxvd3MgeW91IHRvIGVhc2lseSBjaGVjayB3aGF0IGRyYXdpbmcgcHJpbWl0
aXZlcyB5b3VyIHByb2dyYW0gaXMgY2FsbGluZywgd2l0aCB3aGF0IGFyZ3VtZW50cywgYW5kIGlu
IHdoaWNoIG9yZGVyLiBUZXN0cyB3cml0dGVuIHRoaXMgd2F5IGFyZSBtdWNoIG1vcmUgcm9idXN0
ICh0aGV5IHdvbid0IGJyZWFrIGJlY2F1c2UgeW91ciBuZXcgbWFjaGluZSBkb2VzIGFudGktYWxp
YXNpbmcgZGlmZmVyZW50bHkpLCBlYXNpZXIgdG8gcmVhZCBhbmQgbWFpbnRhaW4gKHRoZSBpbnRl
bnQgb2YgYSB0ZXN0IGlzIGV4cHJlc3NlZCBpbiB0aGUgY29kZSwgbm90IGluIHNvbWUgYmluYXJ5
IGltYWdlcyksIGFuZCBydW4gX211Y2gsIG11Y2ggZmFzdGVyXy4KLQotIyBXcml0aW5nIHRoZSBN
b2NrIENsYXNzICMKLUlmIHlvdSBhcmUgbHVja3ksIHRoZSBtb2NrcyB5b3UgbmVlZCB0byB1c2Ug
aGF2ZSBhbHJlYWR5IGJlZW4gaW1wbGVtZW50ZWQgYnkgc29tZSBuaWNlIHBlb3BsZS4gSWYsIGhv
d2V2ZXIsIHlvdSBmaW5kIHlvdXJzZWxmIGluIHRoZSBwb3NpdGlvbiB0byB3cml0ZSBhIG1vY2sg
Y2xhc3MsIHJlbGF4IC0gR29vZ2xlIE1vY2sgdHVybnMgdGhpcyB0YXNrIGludG8gYSBmdW4gZ2Ft
ZSEgKFdlbGwsIGFsbW9zdC4pCi0KLSMjIEhvdyB0byBEZWZpbmUgSXQgIyMKLVVzaW5nIHRoZSBg
VHVydGxlYCBpbnRlcmZhY2UgYXMgZXhhbXBsZSwgaGVyZSBhcmUgdGhlIHNpbXBsZSBzdGVwcyB5
b3UgbmVlZCB0byBmb2xsb3c6Ci0KLSAgMS4gRGVyaXZlIGEgY2xhc3MgYE1vY2tUdXJ0bGVgIGZy
b20gYFR1cnRsZWAuCi0gIDEuIFRha2UgYSBfdmlydHVhbF8gZnVuY3Rpb24gb2YgYFR1cnRsZWAg
KHdoaWxlIGl0J3MgcG9zc2libGUgdG8gW21vY2sgbm9uLXZpcnR1YWwgbWV0aG9kcyB1c2luZyB0
ZW1wbGF0ZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9D
b29rQm9vayNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcyksIGl0J3MgbXVjaCBtb3JlIGludm9s
dmVkKS4gQ291bnQgaG93IG1hbnkgYXJndW1lbnRzIGl0IGhhcy4KLSAgMS4gSW4gdGhlIGBwdWJs
aWM6YCBzZWN0aW9uIG9mIHRoZSBjaGlsZCBjbGFzcywgd3JpdGUgYE1PQ0tfTUVUSE9EbigpO2Ag
KG9yIGBNT0NLX0NPTlNUX01FVEhPRG4oKTtgIGlmIHlvdSBhcmUgbW9ja2luZyBhIGBjb25zdGAg
bWV0aG9kKSwgd2hlcmUgYG5gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGFyZ3VtZW50czsgaWYgeW91
IGNvdW50ZWQgd3JvbmcsIHNoYW1lIG9uIHlvdSwgYW5kIGEgY29tcGlsZXIgZXJyb3Igd2lsbCB0
ZWxsIHlvdSBzby4KLSAgMS4gTm93IGNvbWVzIHRoZSBmdW4gcGFydDogeW91IHRha2UgdGhlIGZ1
bmN0aW9uIHNpZ25hdHVyZSwgY3V0LWFuZC1wYXN0ZSB0aGUgX2Z1bmN0aW9uIG5hbWVfIGFzIHRo
ZSBfZmlyc3RfIGFyZ3VtZW50IHRvIHRoZSBtYWNybywgYW5kIGxlYXZlIHdoYXQncyBsZWZ0IGFz
IHRoZSBfc2Vjb25kXyBhcmd1bWVudCAoaW4gY2FzZSB5b3UncmUgY3VyaW91cywgdGhpcyBpcyB0
aGUgX3R5cGUgb2YgdGhlIGZ1bmN0aW9uXykuCi0gIDEuIFJlcGVhdCB1bnRpbCBhbGwgdmlydHVh
bCBmdW5jdGlvbnMgeW91IHdhbnQgdG8gbW9jayBhcmUgZG9uZS4KLQotQWZ0ZXIgdGhlIHByb2Nl
c3MsIHlvdSBzaG91bGQgaGF2ZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi0jaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIgIC8vIEJyaW5ncyBpbiBHb29nbGUgTW9jay4KLWNsYXNzIE1vY2tUdXJ0bGUg
OiBwdWJsaWMgVHVydGxlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDAoUGVuVXAs
IHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMChQZW5Eb3duLCB2b2lkKCkpOwotICBNT0NLX01FVEhP
RDEoRm9yd2FyZCwgdm9pZChpbnQgZGlzdGFuY2UpKTsKLSAgTU9DS19NRVRIT0QxKFR1cm4sIHZv
aWQoaW50IGRlZ3JlZXMpKTsKLSAgTU9DS19NRVRIT0QyKEdvVG8sIHZvaWQoaW50IHgsIGludCB5
KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRYLCBpbnQoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVU
SE9EMChHZXRZLCBpbnQoKSk7Ci19OwotYGBgCi0KLVlvdSBkb24ndCBuZWVkIHRvIGRlZmluZSB0
aGVzZSBtb2NrIG1ldGhvZHMgc29tZXdoZXJlIGVsc2UgLSB0aGUgYE1PQ0tfTUVUSE9EKmAgbWFj
cm9zIHdpbGwgZ2VuZXJhdGUgdGhlIGRlZmluaXRpb25zIGZvciB5b3UuIEl0J3MgdGhhdCBzaW1w
bGUhIE9uY2UgeW91IGdldCB0aGUgaGFuZyBvZiBpdCwgeW91IGNhbiBwdW1wIG91dCBtb2NrIGNs
YXNzZXMgZmFzdGVyIHRoYW4geW91ciBzb3VyY2UtY29udHJvbCBzeXN0ZW0gY2FuIGhhbmRsZSB5
b3VyIGNoZWNrLWlucy4KLQotKipUaXA6KiogSWYgZXZlbiB0aGlzIGlzIHRvbyBtdWNoIHdvcmsg
Zm9yIHlvdSwgeW91J2xsIGZpbmQgdGhlCi1gZ21vY2tfZ2VuLnB5YCB0b29sIGluIEdvb2dsZSBN
b2NrJ3MgYHNjcmlwdHMvZ2VuZXJhdG9yL2AgZGlyZWN0b3J5IChjb3VydGVzeSBvZiB0aGUgW2Nw
cGNsZWFuXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY3BwY2xlYW4vKSBwcm9qZWN0KSB1c2Vm
dWwuICBUaGlzIGNvbW1hbmQtbGluZQotdG9vbCByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIFB5dGhv
biAyLjQgaW5zdGFsbGVkLiAgWW91IGdpdmUgaXQgYSBDKysgZmlsZSBhbmQgdGhlIG5hbWUgb2Yg
YW4gYWJzdHJhY3QgY2xhc3MgZGVmaW5lZCBpbiBpdCwKLWFuZCBpdCB3aWxsIHByaW50IHRoZSBk
ZWZpbml0aW9uIG9mIHRoZSBtb2NrIGNsYXNzIGZvciB5b3UuICBEdWUgdG8gdGhlCi1jb21wbGV4
aXR5IG9mIHRoZSBDKysgbGFuZ3VhZ2UsIHRoaXMgc2NyaXB0IG1heSBub3QgYWx3YXlzIHdvcmss
IGJ1dAotaXQgY2FuIGJlIHF1aXRlIGhhbmR5IHdoZW4gaXQgZG9lcy4gIEZvciBtb3JlIGRldGFp
bHMsIHJlYWQgdGhlIFt1c2VyIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1F
KS4KLQotIyMgV2hlcmUgdG8gUHV0IEl0ICMjCi1XaGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNz
LCB5b3UgbmVlZCB0byBkZWNpZGUgd2hlcmUgdG8gcHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBl
b3BsZSBwdXQgaXQgaW4gYSBgKl90ZXN0LmNjYC4gVGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVy
ZmFjZSBiZWluZyBtb2NrZWQgKHNheSwgYEZvb2ApIGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNv
biBvciB0ZWFtLiBPdGhlcndpc2UsIHdoZW4gdGhlIG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQs
IHlvdXIgdGVzdCBjb3VsZCBicmVhay4gKFlvdSBjYW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3Mg
bWFpbnRhaW5lciB0byBmaXggZXZlcnkgdGVzdCB0aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQot
Ci1TbywgdGhlIHJ1bGUgb2YgdGh1bWIgaXM6IGlmIHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5k
IGl0J3Mgb3duZWQgYnkgb3RoZXJzLCBkZWZpbmUgdGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBw
YWNrYWdlIChiZXR0ZXIsIGluIGEgYHRlc3RpbmdgIHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3Ug
Y2FuIGNsZWFybHkgc2VwYXJhdGUgcHJvZHVjdGlvbiBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGll
cyksIGFuZCBwdXQgaXQgaW4gYSBgbW9ja19mb28uaGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVy
ZW5jZSBgbW9ja19mb28uaGAgZnJvbSB0aGVpciB0ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2Vz
LCB0aGVyZSBpcyBvbmx5IG9uZSBjb3B5IG9mIGBNb2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5
IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHRoZSBjaGFuZ2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhl
ZC4KLQotQW5vdGhlciB3YXkgdG8gZG8gaXQ6IHlvdSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXll
ciBgRm9vQWRhcHRvcmAgb24gdG9wIG9mIGBGb29gIGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVy
ZmFjZS4gU2luY2UgeW91IG93biBgRm9vQWRhcHRvcmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMg
aW4gYEZvb2AgbXVjaCBtb3JlIGVhc2lseS4gV2hpbGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlh
bGx5LCBjYXJlZnVsbHkgY2hvb3NpbmcgdGhlIGFkYXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlv
dXIgY29kZSBlYXNpZXIgdG8gd3JpdGUgYW5kIG1vcmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0
aGUgbG9uZyBydW4pLCBhcyB5b3UgY2FuIGNob29zZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIg
c3BlY2lmaWMgZG9tYWluIG11Y2ggYmV0dGVyIHRoYW4gYEZvb2AgZG9lcy4KLQotIyBVc2luZyBN
b2NrcyBpbiBUZXN0cyAjCi1PbmNlIHlvdSBoYXZlIGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMg
ZWFzeS4gVGhlIHR5cGljYWwgd29yayBmbG93IGlzOgotCi0gIDEuIEltcG9ydCB0aGUgR29vZ2xl
IE1vY2sgbmFtZXMgZnJvbSB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNh
biB1c2UgdGhlbSB1bnF1YWxpZmllZCAoWW91IG9ubHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBm
aWxlLiBSZW1lbWJlciB0aGF0IG5hbWVzcGFjZXMgYXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZv
ciB5b3VyIGhlYWx0aC4pLgotICAxLiBDcmVhdGUgc29tZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNw
ZWNpZnkgeW91ciBleHBlY3RhdGlvbnMgb24gdGhlbSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1l
dGhvZCBiZSBjYWxsZWQ/IFdpdGggd2hhdCBhcmd1bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBl
dGMuKS4KLSAgMS4gRXhlcmNpc2Ugc29tZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlv
bmFsbHksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYg
YSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIGV4cGVjdGVkIG9yIHdpdGggd3Jvbmcg
YXJndW1lbnRzLCB5b3UnbGwgZ2V0IGFuIGVycm9yIGltbWVkaWF0ZWx5LgotICAxLiBXaGVuIGEg
bW9jayBpcyBkZXN0cnVjdGVkLCBHb29nbGUgTW9jayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sg
d2hldGhlciBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhl
cmUncyBhbiBleGFtcGxlOgotCi1gYGAKLSNpbmNsdWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgi
Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotdXNp
bmcgOjp0ZXN0aW5nOjpBdExlYXN0OyAgICAgICAgICAgICAgICAgICAgIC8vICMxCi0KLVRFU1Qo
UGFpbnRlclRlc3QsIENhbkRyYXdTb21ldGhpbmcpIHsKLSAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRv
d24oKSkgICAgICAgICAgICAgIC8vICMzCi0gICAgICAuVGltZXMoQXRMZWFzdCgxKSk7Ci0KLSAg
UGFpbnRlciBwYWludGVyKCZ0dXJ0bGUpOyAgICAgICAgICAgICAgICAgICAvLyAjNAotCi0gIEVY
UEVDVF9UUlVFKHBhaW50ZXIuRHJhd0NpcmNsZSgwLCAwLCAxMCkpOwotfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICM1Ci0KLWludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRl
ZCB0byBpbml0aWFsaXplIEdvb2dsZSBNb2NrCi0gIC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9y
ZSBydW5uaW5nIHRoZSB0ZXN0cy4KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywg
YXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotQXMgeW91IG1pZ2h0
IGhhdmUgZ3Vlc3NlZCwgdGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxl
ZCBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgYHBhaW50ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlz
IG1ldGhvZCwgeW91ciB0ZXN0IHdpbGwgZmFpbCB3aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0K
LWBgYAotcGF0aC90by9teV90ZXN0LmNjOjExOTogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNh
bGwgY291bnQgZG9lc24ndCBtYXRjaCB0aGlzIGV4cGVjdGF0aW9uOgotQWN0dWFsbHk6IG5ldmVy
IGNhbGxlZDsKLUV4cGVjdGVkOiBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KLWBgYAotCi0qKlRpcCAx
OioqIElmIHlvdSBydW4gdGhlIHRlc3QgZnJvbSBhbiBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0
IGA8RW50ZXI+YCBvbiB0aGUgbGluZSBudW1iZXIgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNz
YWdlIHRvIGp1bXAgcmlnaHQgdG8gdGhlIGZhaWxlZCBleHBlY3RhdGlvbi4KLQotKipUaXAgMjoq
KiBJZiB5b3VyIG1vY2sgb2JqZWN0cyBhcmUgbmV2ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlm
aWNhdGlvbiB3b24ndCBoYXBwZW4uIFRoZXJlZm9yZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBh
IGhlYXAgbGVhayBjaGVja2VyIGluIHlvdXIgdGVzdHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mg
b24gdGhlIGhlYXAuCi0KLSoqSW1wb3J0YW50IG5vdGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMg
ZXhwZWN0YXRpb25zIHRvIGJlIHNldCAqKmJlZm9yZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUg
Y2FsbGVkLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRp
Y3VsYXIsIHlvdSBtdXN0bid0IGludGVybGVhdmUgYEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMg
dG8gdGhlIG1vY2sgZnVuY3Rpb25zLgotCi1UaGlzIG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91
bGQgYmUgcmVhZCBhcyBleHBlY3RpbmcgdGhhdCBhIGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1
dHVyZV8sIG5vdCB0aGF0IGEgY2FsbCBoYXMgb2NjdXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2Nr
IHdvcmsgbGlrZSB0aGF0PyBXZWxsLCBzcGVjaWZ5aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVo
YW5kIGFsbG93cyBHb29nbGUgTW9jayB0byByZXBvcnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBp
dCBhcmlzZXMsIHdoZW4gdGhlIGNvbnRleHQgKHN0YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2
YWlsYWJsZS4gVGhpcyBtYWtlcyBkZWJ1Z2dpbmcgbXVjaCBlYXNpZXIuCi0KLUFkbWl0dGVkbHks
IHRoaXMgdGVzdCBpcyBjb250cml2ZWQgYW5kIGRvZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNp
bHkgYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93
ZXZlciwgYXMgd2Ugc2hhbGwgcmV2ZWFsIHNvb24sIEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8g
ZG8gX211Y2ggbW9yZV8gd2l0aCB0aGUgbW9ja3MuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIHdp
dGggQW55IFRlc3RpbmcgRnJhbWV3b3JrICMjCi1JZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5n
IG90aGVyIHRoYW4gR29vZ2xlIFRlc3QgKGUuZy4gW0NwcFVuaXRdKGh0dHA6Ly9hcHBzLnNvdXJj
ZWZvcmdlLm5ldC9tZWRpYXdpa2kvY3BwdW5pdC9pbmRleC5waHA/dGl0bGU9TWFpbl9QYWdlKSBv
cgotW0N4eFRlc3RdKGh0dHA6Ly9jeHh0ZXN0LnRpZ3Jpcy5vcmcvKSkgYXMgeW91ciB0ZXN0aW5n
IGZyYW1ld29yaywganVzdCBjaGFuZ2UgdGhlIGBtYWluKClgIGZ1bmN0aW9uIGluIHRoZSBwcmV2
aW91cyBzZWN0aW9uIHRvOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsK
LSAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIGNhdXNlcyBHb29nbGUgTW9jayB0byB0aHJvdyBhbiBl
eGNlcHRpb24gb24gZmFpbHVyZSwKLSAgLy8gd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBieSB5
b3VyIHRlc3RpbmcgZnJhbWV3b3JrIGFzIGEgdGVzdCBmYWlsdXJlLgotICA6OnRlc3Rpbmc6OkdU
RVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwotICA6OnRlc3Rpbmc6OkluaXRHb29n
bGVNb2NrKCZhcmdjLCBhcmd2KTsKLSAgLi4uIHdoYXRldmVyIHlvdXIgdGVzdGluZyBmcmFtZXdv
cmsgcmVxdWlyZXMgLi4uCi19Ci1gYGAKLQotVGhpcyBhcHByb2FjaCBoYXMgYSBjYXRjaDogaXQg
bWFrZXMgR29vZ2xlIE1vY2sgdGhyb3cgYW4gZXhjZXB0aW9uCi1mcm9tIGEgbW9jayBvYmplY3Qn
cyBkZXN0cnVjdG9yIHNvbWV0aW1lcy4gIFdpdGggc29tZSBjb21waWxlcnMsIHRoaXMKLXNvbWV0
aW1lcyBjYXVzZXMgdGhlIHRlc3QgcHJvZ3JhbSB0byBjcmFzaC4gIFlvdSdsbCBzdGlsbCBiZSBh
YmxlIHRvCi1ub3RpY2UgdGhhdCB0aGUgdGVzdCBoYXMgZmFpbGVkLCBidXQgaXQncyBub3QgYSBn
cmFjZWZ1bCBmYWlsdXJlLgotCi1BIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgR29vZ2xlIFRl
c3QncwotW2V2ZW50IGxpc3RlbmVyIEFQSV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZXRlc3Qvd2lraS9WMV82X0FkdmFuY2VkR3VpZGUjRXh0ZW5kaW5nX0dvb2dsZV9UZXN0X2J5X0hh
bmRsaW5nX1Rlc3RfRXZlbnRzKQotdG8gcmVwb3J0IGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVz
dGluZyBmcmFtZXdvcmsgcHJvcGVybHkuICBZb3UnbGwgbmVlZCB0bwotaW1wbGVtZW50IHRoZSBg
T25UZXN0UGFydFJlc3VsdCgpYCBtZXRob2Qgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGludGVyZmFj
ZSwgYnV0IGl0Ci1zaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLgotCi1JZiB0aGlzIHR1cm5zIG91
dCB0byBiZSB0b28gbXVjaCB3b3JrLCB3ZSBzdWdnZXN0IHRoYXQgeW91IHN0aWNrIHdpdGgKLUdv
b2dsZSBUZXN0LCB3aGljaCB3b3JrcyB3aXRoIEdvb2dsZSBNb2NrIHNlYW1sZXNzbHkgKGluIGZh
Y3QsIGl0IGlzCi10ZWNobmljYWxseSBwYXJ0IG9mIEdvb2dsZSBNb2NrLikuICBJZiB0aGVyZSBp
cyBhIHJlYXNvbiB0aGF0IHlvdQotY2Fubm90IHVzZSBHb29nbGUgVGVzdCwgcGxlYXNlIGxldCB1
cyBrbm93LgotCi0jIFNldHRpbmcgRXhwZWN0YXRpb25zICMKLVRoZSBrZXkgdG8gdXNpbmcgYSBt
b2NrIG9iamVjdCBzdWNjZXNzZnVsbHkgaXMgdG8gc2V0IHRoZSBfcmlnaHQgZXhwZWN0YXRpb25z
XyBvbiBpdC4gSWYgeW91IHNldCB0aGUgZXhwZWN0YXRpb25zIHRvbyBzdHJpY3QsIHlvdXIgdGVz
dCB3aWxsIGZhaWwgYXMgdGhlIHJlc3VsdCBvZiB1bnJlbGF0ZWQgY2hhbmdlcy4gSWYgeW91IHNl
dCB0aGVtIHRvbyBsb29zZSwgYnVncyBjYW4gc2xpcCB0aHJvdWdoLiBZb3Ugd2FudCB0byBkbyBp
dCBqdXN0IHJpZ2h0IHN1Y2ggdGhhdCB5b3VyIHRlc3QgY2FuIGNhdGNoIGV4YWN0bHkgdGhlIGtp
bmQgb2YgYnVncyB5b3UgaW50ZW5kIGl0IHRvIGNhdGNoLiBHb29nbGUgTW9jayBwcm92aWRlcyB0
aGUgbmVjZXNzYXJ5IG1lYW5zIGZvciB5b3UgdG8gZG8gaXQgImp1c3QgcmlnaHQuIgotCi0jIyBH
ZW5lcmFsIFN5bnRheCAjIwotSW4gR29vZ2xlIE1vY2sgd2UgdXNlIHRoZSBgRVhQRUNUX0NBTEwo
KWAgbWFjcm8gdG8gc2V0IGFuIGV4cGVjdGF0aW9uIG9uIGEgbW9jayBtZXRob2QuIFRoZSBnZW5l
cmFsIHN5bnRheCBpczoKLQotYGBgCi1FWFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1h
dGNoZXJzKSkKLSAgICAuVGltZXMoY2FyZGluYWxpdHkpCi0gICAgLldpbGxPbmNlKGFjdGlvbikK
LSAgICAuV2lsbFJlcGVhdGVkbHkoYWN0aW9uKTsKLWBgYAotCi1UaGUgbWFjcm8gaGFzIHR3byBh
cmd1bWVudHM6IGZpcnN0IHRoZSBtb2NrIG9iamVjdCwgYW5kIHRoZW4gdGhlIG1ldGhvZCBhbmQg
aXRzIGFyZ3VtZW50cy4gTm90ZSB0aGF0IHRoZSB0d28gYXJlIHNlcGFyYXRlZCBieSBhIGNvbW1h
IChgLGApLCBub3QgYSBwZXJpb2QgKGAuYCkuIChXaHkgdXNpbmcgYSBjb21tYT8gVGhlIGFuc3dl
ciBpcyB0aGF0IGl0IHdhcyBuZWNlc3NhcnkgZm9yIHRlY2huaWNhbCByZWFzb25zLikKLQotVGhl
IG1hY3JvIGNhbiBiZSBmb2xsb3dlZCBieSBzb21lIG9wdGlvbmFsIF9jbGF1c2VzXyB0aGF0IHBy
b3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXhwZWN0YXRpb24uIFdlJ2xsIGRpc2N1
c3MgaG93IGVhY2ggY2xhdXNlIHdvcmtzIGluIHRoZSBjb21pbmcgc2VjdGlvbnMuCi0KLVRoaXMg
c3ludGF4IGlzIGRlc2lnbmVkIHRvIG1ha2UgYW4gZXhwZWN0YXRpb24gcmVhZCBsaWtlIEVuZ2xp
c2guIEZvciBleGFtcGxlLCB5b3UgY2FuIHByb2JhYmx5IGd1ZXNzIHRoYXQKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAg
IC5UaW1lcyg1KQotICAgIC5XaWxsT25jZShSZXR1cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0
dXJuKDE1MCkpCi0gICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyMDApKTsKLWBgYAotCi1zYXlz
IHRoYXQgdGhlIGB0dXJ0bGVgIG9iamVjdCdzIGBHZXRYKClgIG1ldGhvZCB3aWxsIGJlIGNhbGxl
ZCBmaXZlIHRpbWVzLCBpdCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIDE1MCB0aGUg
c2Vjb25kIHRpbWUsIGFuZCB0aGVuIDIwMCBldmVyeSB0aW1lLiBTb21lIHBlb3BsZSBsaWtlIHRv
IGNhbGwgdGhpcyBzdHlsZSBvZiBzeW50YXggYSBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UgKERT
TCkuCi0KLSoqTm90ZToqKiBXaHkgZG8gd2UgdXNlIGEgbWFjcm8gdG8gZG8gdGhpcz8gSXQgc2Vy
dmVzIHR3byBwdXJwb3NlczogZmlyc3QgaXQgbWFrZXMgZXhwZWN0YXRpb25zIGVhc2lseSBpZGVu
dGlmaWFibGUgKGVpdGhlciBieSBgZ3JlcGAgb3IgYnkgYSBodW1hbiByZWFkZXIpLCBhbmQgc2Vj
b25kIGl0IGFsbG93cyBHb29nbGUgTW9jayB0byBpbmNsdWRlIHRoZSBzb3VyY2UgZmlsZSBsb2Nh
dGlvbiBvZiBhIGZhaWxlZCBleHBlY3RhdGlvbiBpbiBtZXNzYWdlcywgbWFraW5nIGRlYnVnZ2lu
ZyBlYXNpZXIuCi0KLSMjIE1hdGNoZXJzOiBXaGF0IEFyZ3VtZW50cyBEbyBXZSBFeHBlY3Q/ICMj
Ci1XaGVuIGEgbW9jayBmdW5jdGlvbiB0YWtlcyBhcmd1bWVudHMsIHdlIG11c3Qgc3BlY2lmeSB3
aGF0IGFyZ3VtZW50cyB3ZSBhcmUgZXhwZWN0aW5nOyBmb3IgZXhhbXBsZToKLQotYGBgCi0vLyBF
eHBlY3RzIHRoZSB0dXJ0bGUgdG8gbW92ZSBmb3J3YXJkIGJ5IDEwMCB1bml0cy4KLUVYUEVDVF9D
QUxMKHR1cnRsZSwgRm9yd2FyZCgxMDApKTsKLWBgYAotCi1Tb21ldGltZXMgeW91IG1heSBub3Qg
d2FudCB0byBiZSB0b28gc3BlY2lmaWMgKFJlbWVtYmVyIHRoYXQgdGFsayBhYm91dCB0ZXN0cyBi
ZWluZyB0b28gcmlnaWQ/IE92ZXIgc3BlY2lmaWNhdGlvbiBsZWFkcyB0byBicml0dGxlIHRlc3Rz
IGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9mIHRlc3RzLiBUaGVyZWZvcmUgd2UgZW5jb3VyYWdl
IHlvdSB0byBzcGVjaWZ5IG9ubHkgd2hhdCdzIG5lY2Vzc2FyeSAtIG5vIG1vcmUsIG5vIGxlc3Mu
KS4gSWYgeW91IGNhcmUgdG8gY2hlY2sgdGhhdCBgRm9yd2FyZCgpYCB3aWxsIGJlIGNhbGxlZCBi
dXQgYXJlbid0IGludGVyZXN0ZWQgaW4gaXRzIGFjdHVhbCBhcmd1bWVudCwgd3JpdGUgYF9gIGFz
IHRoZSBhcmd1bWVudCwgd2hpY2ggbWVhbnMgImFueXRoaW5nIGdvZXMiOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLS4uLgotLy8gRXhwZWN0cyB0aGUgdHVydGxlIHRvIG1vdmUgZm9yd2Fy
ZC4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZChfKSk7Ci1gYGAKLQotYF9gIGlzIGFuIGlu
c3RhbmNlIG9mIHdoYXQgd2UgY2FsbCAqKm1hdGNoZXJzKiouIEEgbWF0Y2hlciBpcyBsaWtlIGEg
cHJlZGljYXRlIGFuZCBjYW4gdGVzdCB3aGV0aGVyIGFuIGFyZ3VtZW50IGlzIHdoYXQgd2UnZCBl
eHBlY3QuIFlvdSBjYW4gdXNlIGEgbWF0Y2hlciBpbnNpZGUgYEVYUEVDVF9DQUxMKClgIHdoZXJl
dmVyIGEgZnVuY3Rpb24gYXJndW1lbnQgaXMgZXhwZWN0ZWQuCi0KLUEgbGlzdCBvZiBidWlsdC1p
biBtYXRjaGVycyBjYW4gYmUgZm91bmQgaW4gdGhlIFtDaGVhdFNoZWV0XShWMV82X0NoZWF0U2hl
ZXQubWQpLiBGb3IgZXhhbXBsZSwgaGVyZSdzIHRoZSBgR2VgIChncmVhdGVyIHRoYW4gb3IgZXF1
YWwpIG1hdGNoZXI6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpHZTsuLi4KLUVYUEVDVF9DQUxM
KHR1cnRsZSwgRm9yd2FyZChHZSgxMDApKSk7Ci1gYGAKLQotVGhpcyBjaGVja3MgdGhhdCB0aGUg
dHVydGxlIHdpbGwgYmUgdG9sZCB0byBnbyBmb3J3YXJkIGJ5IGF0IGxlYXN0IDEwMCB1bml0cy4K
LQotIyMgQ2FyZGluYWxpdGllczogSG93IE1hbnkgVGltZXMgV2lsbCBJdCBCZSBDYWxsZWQ/ICMj
Ci1UaGUgZmlyc3QgY2xhdXNlIHdlIGNhbiBzcGVjaWZ5IGZvbGxvd2luZyBhbiBgRVhQRUNUX0NB
TEwoKWAgaXMgYFRpbWVzKClgLiBXZSBjYWxsIGl0cyBhcmd1bWVudCBhICoqY2FyZGluYWxpdHkq
KiBhcyBpdCB0ZWxscyBfaG93IG1hbnkgdGltZXNfIHRoZSBjYWxsIHNob3VsZCBvY2N1ci4gSXQg
YWxsb3dzIHVzIHRvIHJlcGVhdCBhbiBleHBlY3RhdGlvbiBtYW55IHRpbWVzIHdpdGhvdXQgYWN0
dWFsbHkgd3JpdGluZyBpdCBhcyBtYW55IHRpbWVzLiBNb3JlIGltcG9ydGFudGx5LCBhIGNhcmRp
bmFsaXR5IGNhbiBiZSAiZnV6enkiLCBqdXN0IGxpa2UgYSBtYXRjaGVyIGNhbiBiZS4gVGhpcyBh
bGxvd3MgYSB1c2VyIHRvIGV4cHJlc3MgdGhlIGludGVudCBvZiBhIHRlc3QgZXhhY3RseS4KLQot
QW4gaW50ZXJlc3Rpbmcgc3BlY2lhbCBjYXNlIGlzIHdoZW4gd2Ugc2F5IGBUaW1lcygwKWAuIFlv
dSBtYXkgaGF2ZSBndWVzc2VkIC0gaXQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gc2hvdWxkbid0
IGJlIGNhbGxlZCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYXQgYWxsLCBhbmQgR29vZ2xlIE1v
Y2sgd2lsbCByZXBvcnQgYSBHb29nbGUgVGVzdCBmYWlsdXJlIHdoZW5ldmVyIHRoZSBmdW5jdGlv
biBpcyAod3JvbmdmdWxseSkgY2FsbGVkLgotCi1XZSd2ZSBzZWVuIGBBdExlYXN0KG4pYCBhcyBh
biBleGFtcGxlIG9mIGZ1enp5IGNhcmRpbmFsaXRpZXMgZWFybGllci4gRm9yIHRoZSBsaXN0IG9m
IGJ1aWx0LWluIGNhcmRpbmFsaXRpZXMgeW91IGNhbiB1c2UsIHNlZSB0aGUgW0NoZWF0U2hlZXRd
KFYxXzZfQ2hlYXRTaGVldC5tZCkuCi0KLVRoZSBgVGltZXMoKWAgY2xhdXNlIGNhbiBiZSBvbWl0
dGVkLiAqKklmIHlvdSBvbWl0IGBUaW1lcygpYCwgR29vZ2xlIE1vY2sgd2lsbCBpbmZlciB0aGUg
Y2FyZGluYWxpdHkgZm9yIHlvdS4qKiBUaGUgcnVsZXMgYXJlIGVhc3kgdG8gcmVtZW1iZXI6Ci0K
LSAgKiBJZiAqKm5laXRoZXIqKiBgV2lsbE9uY2UoKWAgKipub3IqKiBgV2lsbFJlcGVhdGVkbHko
KWAgaXMgaW4gdGhlIGBFWFBFQ1RfQ0FMTCgpYCwgdGhlIGluZmVycmVkIGNhcmRpbmFsaXR5IGlz
IGBUaW1lcygxKWAuCi0gICogSWYgdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYnV0ICoqbm8q
KiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAxLCB0aGUgY2FyZGluYWxpdHkgaXMg
YFRpbWVzKG4pYC4KLSAgKiBJZiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWAncyBhbmQgKipvbmUq
KiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAwLCB0aGUgY2FyZGluYWxpdHkgaXMg
YFRpbWVzKEF0TGVhc3QobikpYC4KLQotKipRdWljayBxdWl6OioqIHdoYXQgZG8geW91IHRoaW5r
IHdpbGwgaGFwcGVuIGlmIGEgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHR3aWNl
IGJ1dCBhY3R1YWxseSBjYWxsZWQgZm91ciB0aW1lcz8KLQotIyMgQWN0aW9uczogV2hhdCBTaG91
bGQgSXQgRG8/ICMjCi1SZW1lbWJlciB0aGF0IGEgbW9jayBvYmplY3QgZG9lc24ndCByZWFsbHkg
aGF2ZSBhIHdvcmtpbmcgaW1wbGVtZW50YXRpb24/IFdlIGFzIHVzZXJzIGhhdmUgdG8gdGVsbCBp
dCB3aGF0IHRvIGRvIHdoZW4gYSBtZXRob2QgaXMgaW52b2tlZC4gVGhpcyBpcyBlYXN5IGluIEdv
b2dsZSBNb2NrLgotCi1GaXJzdCwgaWYgdGhlIHJldHVybiB0eXBlIG9mIGEgbW9jayBmdW5jdGlv
biBpcyBhIGJ1aWx0LWluIHR5cGUgb3IgYSBwb2ludGVyLCB0aGUgZnVuY3Rpb24gaGFzIGEgKipk
ZWZhdWx0IGFjdGlvbioqIChhIGB2b2lkYCBmdW5jdGlvbiB3aWxsIGp1c3QgcmV0dXJuLCBhIGBi
b29sYCBmdW5jdGlvbiB3aWxsIHJldHVybiBgZmFsc2VgLCBhbmQgb3RoZXIgZnVuY3Rpb25zIHdp
bGwgcmV0dXJuIDApLiBJZiB5b3UgZG9uJ3Qgc2F5IGFueXRoaW5nLCB0aGlzIGJlaGF2aW9yIHdp
bGwgYmUgdXNlZC4KLQotU2Vjb25kLCBpZiBhIG1vY2sgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGEg
ZGVmYXVsdCBhY3Rpb24sIG9yIHRoZSBkZWZhdWx0IGFjdGlvbiBkb2Vzbid0IHN1aXQgeW91LCB5
b3UgY2FuIHNwZWNpZnkgdGhlIGFjdGlvbiB0byBiZSB0YWtlbiBlYWNoIHRpbWUgdGhlIGV4cGVj
dGF0aW9uIG1hdGNoZXMgdXNpbmcgYSBzZXJpZXMgb2YgYFdpbGxPbmNlKClgIGNsYXVzZXMgZm9s
bG93ZWQgYnkgYW4gb3B0aW9uYWwgYFdpbGxSZXBlYXRlZGx5KClgLiBGb3IgZXhhbXBsZSwKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0
WCgpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIw
MCkpCi0gICAgLldpbGxPbmNlKFJldHVybigzMDApKTsKLWBgYAotCi1UaGlzIHNheXMgdGhhdCBg
dHVydGxlLkdldFgoKWAgd2lsbCBiZSBjYWxsZWQgX2V4YWN0bHkgdGhyZWUgdGltZXNfIChHb29n
bGUgTW9jayBpbmZlcnJlZCB0aGlzIGZyb20gaG93IG1hbnkgYFdpbGxPbmNlKClgIGNsYXVzZXMg
d2UndmUgd3JpdHRlbiwgc2luY2Ugd2UgZGlkbid0IGV4cGxpY2l0bHkgd3JpdGUgYFRpbWVzKClg
KSwgYW5kIHdpbGwgcmV0dXJuIDEwMCwgMjAwLCBhbmQgMzAwIHJlc3BlY3RpdmVseS4KLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgp
KQotICAgIC5XaWxsT25jZShSZXR1cm4oMTAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIwMCkp
Ci0gICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigzMDApKTsKLWBgYAotCi1zYXlzIHRoYXQgYHR1
cnRsZS5HZXRZKClgIHdpbGwgYmUgY2FsbGVkIF9hdCBsZWFzdCB0d2ljZV8gKEdvb2dsZSBNb2Nr
IGtub3dzIHRoaXMgYXMgd2UndmUgd3JpdHRlbiB0d28gYFdpbGxPbmNlKClgIGNsYXVzZXMgYW5k
IGEgYFdpbGxSZXBlYXRlZGx5KClgIHdoaWxlIGhhdmluZyBubyBleHBsaWNpdCBgVGltZXMoKWAp
LCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIDIwMCB0aGUgc2Vjb25kIHRpbWUsIGFu
ZCAzMDAgZnJvbSB0aGUgdGhpcmQgdGltZSBvbi4KLQotT2YgY291cnNlLCBpZiB5b3UgZXhwbGlj
aXRseSB3cml0ZSBhIGBUaW1lcygpYCwgR29vZ2xlIE1vY2sgd2lsbCBub3QgdHJ5IHRvIGluZmVy
IHRoZSBjYXJkaW5hbGl0eSBpdHNlbGYuIFdoYXQgaWYgdGhlIG51bWJlciB5b3Ugc3BlY2lmaWVk
IGlzIGxhcmdlciB0aGFuIHRoZXJlIGFyZSBgV2lsbE9uY2UoKWAgY2xhdXNlcz8gV2VsbCwgYWZ0
ZXIgYWxsIGBXaWxsT25jZSgpYHMgYXJlIHVzZWQgdXAsIEdvb2dsZSBNb2NrIHdpbGwgZG8gdGhl
IF9kZWZhdWx0XyBhY3Rpb24gZm9yIHRoZSBmdW5jdGlvbiBldmVyeSB0aW1lICh1bmxlc3MsIG9m
IGNvdXJzZSwgeW91IGhhdmUgYSBgV2lsbFJlcGVhdGVkbHkoKWAuKS4KLQotV2hhdCBjYW4gd2Ug
ZG8gaW5zaWRlIGBXaWxsT25jZSgpYCBiZXNpZGVzIGBSZXR1cm4oKWA/IFlvdSBjYW4gcmV0dXJu
IGEgcmVmZXJlbmNlIHVzaW5nIGBSZXR1cm5SZWYodmFyaWFibGUpYCwgb3IgaW52b2tlIGEgcHJl
LWRlZmluZWQgZnVuY3Rpb24sIGFtb25nIFtvdGhlcnNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGVtb2NrL3dpa2kvVjFfNl9DaGVhdFNoZWV0I0FjdGlvbnMpLgotCi0qKkltcG9ydGFu
dCBub3RlOioqIFRoZSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0
aW9uIGNsYXVzZSBvbmx5IG9uY2UsIGV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZv
cm1lZCBtYW55IHRpbWVzLiBUaGVyZWZvcmUgeW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRl
IGVmZmVjdHMuIFRoZSBmb2xsb3dpbmcgbWF5IG5vdCBkbyB3aGF0IHlvdSB3YW50OgotCi1gYGAK
LWludCBuID0gMTAwOwotRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0uVGltZXMoNCkKLS5X
aWxsUmVwZWF0ZWRseShSZXR1cm4obisrKSk7Ci1gYGAKLQotSW5zdGVhZCBvZiByZXR1cm5pbmcg
MTAwLCAxMDEsIDEwMiwgLi4uLCBjb25zZWN1dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2ls
bCBhbHdheXMgcmV0dXJuIDEwMCBhcyBgbisrYCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1p
bGFybHksIGBSZXR1cm4obmV3IEZvbylgIHdpbGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3
aGVuIHRoZSBgRVhQRUNUX0NBTEwoKWAgaXMgZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUg
c2FtZSBwb2ludGVyIGV2ZXJ5IHRpbWUuIElmIHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBo
YXBwZW4gZXZlcnkgdGltZSwgeW91IG5lZWQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hp
Y2ggd2UnbGwgdGVhY2ggaW4gdGhlIFtDb29rQm9va10oVjFfNl9Db29rQm9vay5tZCkuCi0KLVRp
bWUgZm9yIGFub3RoZXIgcXVpeiEgV2hhdCBkbyB5b3UgdGhpbmsgdGhlIGZvbGxvd2luZyBtZWFu
cz8KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRs
ZSwgR2V0WSgpKQotLlRpbWVzKDQpCi0uV2lsbE9uY2UoUmV0dXJuKDEwMCkpOwotYGBgCi0KLU9i
dmlvdXNseSBgdHVydGxlLkdldFkoKWAgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZvdXIgdGlt
ZXMuIEJ1dCBpZiB5b3UgdGhpbmsgaXQgd2lsbCByZXR1cm4gMTAwIGV2ZXJ5IHRpbWUsIHRoaW5r
IHR3aWNlISBSZW1lbWJlciB0aGF0IG9uZSBgV2lsbE9uY2UoKWAgY2xhdXNlIHdpbGwgYmUgY29u
c3VtZWQgZWFjaCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBpbnZva2VkIGFuZCB0aGUgZGVmYXVsdCBh
Y3Rpb24gd2lsbCBiZSB0YWtlbiBhZnRlcndhcmRzLiBTbyB0aGUgcmlnaHQgYW5zd2VyIGlzIHRo
YXQgYHR1cnRsZS5HZXRZKClgIHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgYnV0ICoq
cmV0dXJuIDAgZnJvbSB0aGUgc2Vjb25kIHRpbWUgb24qKiwgYXMgcmV0dXJuaW5nIDAgaXMgdGhl
IGRlZmF1bHQgYWN0aW9uIGZvciBgaW50YCBmdW5jdGlvbnMuCi0KLSMjIFVzaW5nIE11bHRpcGxl
IEV4cGVjdGF0aW9ucyAjIwotU28gZmFyIHdlJ3ZlIG9ubHkgc2hvd24gZXhhbXBsZXMgd2hlcmUg
eW91IGhhdmUgYSBzaW5nbGUgZXhwZWN0YXRpb24uIE1vcmUgcmVhbGlzdGljYWxseSwgeW91J3Jl
IGdvaW5nIHRvIHNwZWNpZnkgZXhwZWN0YXRpb25zIG9uIG11bHRpcGxlIG1vY2sgbWV0aG9kcywg
d2hpY2ggbWF5IGJlIGZyb20gbXVsdGlwbGUgbW9jayBvYmplY3RzLgotCi1CeSBkZWZhdWx0LCB3
aGVuIGEgbW9jayBtZXRob2QgaXMgaW52b2tlZCwgR29vZ2xlIE1vY2sgd2lsbCBzZWFyY2ggdGhl
IGV4cGVjdGF0aW9ucyBpbiB0aGUgKipyZXZlcnNlIG9yZGVyKiogdGhleSBhcmUgZGVmaW5lZCwg
YW5kIHN0b3Agd2hlbiBhbiBhY3RpdmUgZXhwZWN0YXRpb24gdGhhdCBtYXRjaGVzIHRoZSBhcmd1
bWVudHMgaXMgZm91bmQgKHlvdSBjYW4gdGhpbmsgb2YgaXQgYXMgIm5ld2VyIHJ1bGVzIG92ZXJy
aWRlIG9sZGVyIG9uZXMuIikuIElmIHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbiBjYW5ub3QgdGFr
ZSBhbnkgbW9yZSBjYWxscywgeW91IHdpbGwgZ2V0IGFuIHVwcGVyLWJvdW5kLXZpb2xhdGVkIGZh
aWx1cmUuIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsuLi4K
LUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZChfKSk7ICAvLyAjMQotRVhQRUNUX0NBTEwodHVy
dGxlLCBGb3J3YXJkKDEwKSkgIC8vICMyCi0gICAgLlRpbWVzKDIpOwotYGBgCi0KLUlmIGBGb3J3
YXJkKDEwKWAgaXMgY2FsbGVkIHRocmVlIHRpbWVzIGluIGEgcm93LCB0aGUgdGhpcmQgdGltZSBp
dCB3aWxsIGJlIGFuIGVycm9yLCBhcyB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiAoIzIp
IGhhcyBiZWVuIHNhdHVyYXRlZC4gSWYsIGhvd2V2ZXIsIHRoZSB0aGlyZCBgRm9yd2FyZCgxMClg
IGNhbGwgaXMgcmVwbGFjZWQgYnkgYEZvcndhcmQoMjApYCwgdGhlbiBpdCB3b3VsZCBiZSBPSywg
YXMgbm93ICMxIHdpbGwgYmUgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9uLgotCi0qKlNpZGUgbm90
ZToqKiBXaHkgZG9lcyBHb29nbGUgTW9jayBzZWFyY2ggZm9yIGEgbWF0Y2ggaW4gdGhlIF9yZXZl
cnNlXyBvcmRlciBvZiB0aGUgZXhwZWN0YXRpb25zPyBUaGUgcmVhc29uIGlzIHRoYXQgdGhpcyBh
bGxvd3MgYSB1c2VyIHRvIHNldCB1cCB0aGUgZGVmYXVsdCBleHBlY3RhdGlvbnMgaW4gYSBtb2Nr
IG9iamVjdCdzIGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2Ug
YW5kIHRoZW4gY3VzdG9taXplIHRoZSBtb2NrIGJ5IHdyaXRpbmcgbW9yZSBzcGVjaWZpYyBleHBl
Y3RhdGlvbnMgaW4gdGhlIHRlc3QgYm9keS4gU28sIGlmIHlvdSBoYXZlIHR3byBleHBlY3RhdGlv
bnMgb24gdGhlIHNhbWUgbWV0aG9kLCB5b3Ugd2FudCB0byBwdXQgdGhlIG9uZSB3aXRoIG1vcmUg
c3BlY2lmaWMgbWF0Y2hlcnMgKiphZnRlcioqIHRoZSBvdGhlciwgb3IgdGhlIG1vcmUgc3BlY2lm
aWMgcnVsZSB3b3VsZCBiZSBzaGFkb3dlZCBieSB0aGUgbW9yZSBnZW5lcmFsIG9uZSB0aGF0IGNv
bWVzIGFmdGVyIGl0LgotCi0jIyBPcmRlcmVkIHZzIFVub3JkZXJlZCBDYWxscyAjIwotQnkgZGVm
YXVsdCwgYW4gZXhwZWN0YXRpb24gY2FuIG1hdGNoIGEgY2FsbCBldmVuIHRob3VnaCBhbiBlYXJs
aWVyIGV4cGVjdGF0aW9uIGhhc24ndCBiZWVuIHNhdGlzZmllZC4gSW4gb3RoZXIgd29yZHMsIHRo
ZSBjYWxscyBkb24ndCBoYXZlIHRvIG9jY3VyIGluIHRoZSBvcmRlciB0aGUgZXhwZWN0YXRpb25z
IGFyZSBzcGVjaWZpZWQuCi0KLVNvbWV0aW1lcywgeW91IG1heSB3YW50IGFsbCB0aGUgZXhwZWN0
ZWQgY2FsbHMgdG8gb2NjdXIgaW4gYSBzdHJpY3Qgb3JkZXIuIFRvIHNheSB0aGlzIGluIEdvb2ds
ZSBNb2NrIGlzIGVhc3k6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOy4uLgot
VEVTVChGb29UZXN0LCBEcmF3c0xpbmVTZWdtZW50KSB7Ci0gIC4uLgotICB7Ci0gICAgSW5TZXF1
ZW5jZSBkdW1teTsKLQotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuRG93bigpKTsKLSAgICBF
WFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoMTAwKSk7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxl
LCBQZW5VcCgpKTsKLSAgfQotICBGb28oKTsKLX0KLWBgYAotCi1CeSBjcmVhdGluZyBhbiBvYmpl
Y3Qgb2YgdHlwZSBgSW5TZXF1ZW5jZWAsIGFsbCBleHBlY3RhdGlvbnMgaW4gaXRzIHNjb3BlIGFy
ZSBwdXQgaW50byBhIF9zZXF1ZW5jZV8gYW5kIGhhdmUgdG8gb2NjdXIgX3NlcXVlbnRpYWxseV8u
IFNpbmNlIHdlIGFyZSBqdXN0IHJlbHlpbmcgb24gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVj
dG9yIG9mIHRoaXMgb2JqZWN0IHRvIGRvIHRoZSBhY3R1YWwgd29yaywgaXRzIG5hbWUgaXMgcmVh
bGx5IGlycmVsZXZhbnQuCi0KLUluIHRoaXMgZXhhbXBsZSwgd2UgdGVzdCB0aGF0IGBGb28oKWAg
Y2FsbHMgdGhlIHRocmVlIGV4cGVjdGVkIGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgYXMgd3JpdHRl
bi4gSWYgYSBjYWxsIGlzIG1hZGUgb3V0LW9mLW9yZGVyLCBpdCB3aWxsIGJlIGFuIGVycm9yLgot
Ci0oV2hhdCBpZiB5b3UgY2FyZSBhYm91dCB0aGUgcmVsYXRpdmUgb3JkZXIgb2Ygc29tZSBvZiB0
aGUgY2FsbHMsIGJ1dCBub3QgYWxsIG9mIHRoZW0/IENhbiB5b3Ugc3BlY2lmeSBhbiBhcmJpdHJh
cnkgcGFydGlhbCBvcmRlcj8gVGhlIGFuc3dlciBpcyAuLi4geWVzISBJZiB5b3UgYXJlIGltcGF0
aWVudCwgdGhlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBbQ29va0Jvb2tdKFYxXzZfQ29v
a0Jvb2subWQpLikKLQotIyMgQWxsIEV4cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2Fp
ZCBPdGhlcndpc2UpICMjCi1Ob3cgbGV0J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2Vs
bCB5b3UgY2FuIHVzZSB0aGlzIG1vY2sgc3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0
IHRoYXQgdGhlIHR1cnRsZSBpcyBhc2tlZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3
aWNlXyAoeW91IHdhbnQgdG8gaWdub3JlIGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2
ZXMpPwotCi1BZnRlciB5b3UndmUgY29tZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9v
ayBhdCBvdXJzIGFuZCBjb21wYXJlIG5vdGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRv
bid0IGNoZWF0ISk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOy4uLgotRVhQRUNUX0NBTEwo
dHVydGxlLCBHb1RvKF8sIF8pKSAgLy8gIzEKLSAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotRVhQ
RUNUX0NBTEwodHVydGxlLCBHb1RvKDAsIDApKSAgLy8gIzIKLSAgICAuVGltZXMoMik7Ci1gYGAK
LQotU3VwcG9zZSBgdHVydGxlLkdvVG8oMCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4g
dGhlIHRoaXJkIHRpbWUsIEdvb2dsZSBNb2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBt
YXRjaCBleHBlY3RhdGlvbiAjMiAocmVtZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFz
dCBtYXRjaGluZyBleHBlY3RhdGlvbikuIE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNo
b3VsZCBiZSBvbmx5IHR3byBzdWNoIGNhbGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBl
cnJvciBpbW1lZGlhdGVseS4gVGhpcyBpcyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBp
biB0aGUgIlVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KLQotVGhp
cyBleGFtcGxlIHNob3dzIHRoYXQgKipleHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJz
dGlja3kiIGJ5IGRlZmF1bHQqKiwgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZl
IGV2ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFjaGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRz
LiBUaGlzIGlzIGFuIGltcG9ydGFudCBydWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRo
ZSBtZWFuaW5nIG9mIHRoZSBzcGVjLCBhbmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBk
b25lIGluIG1hbnkgb3RoZXIgbW9ja2luZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBC
ZWNhdXNlIHdlIHRoaW5rIG91ciBydWxlIG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRv
IGV4cHJlc3MgYW5kIHVuZGVyc3RhbmQuKS4KLQotU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3Zl
IHJlYWxseSB1bmRlcnN0b29kIGl0OiB3aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8K
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotZm9yIChpbnQgaSA9IG47IGkg
PiAwOyBpLS0pIHsKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0gICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEwKmkpKTsKLX0KLWBgYAotCi1JZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0
dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEw
LCAyMCwgMzAsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlz
IHRoYXQsIGFzIHdlIHNhaWQsIGV4cGVjdGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29u
ZCB0aW1lIGB0dXJ0bGUuR2V0WCgpYCBpcyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBF
Q1RfQ0FMTCgpYCBzdGF0ZW1lbnQgd2lsbCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVh
ZCB0byBhbiAidXBwZXIgYm91bmQgZXhjZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2Rl
IGlzIG5vdCB2ZXJ5IHVzZWZ1bCEKLQotT25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0
dXJ0bGUuR2V0WCgpYCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0
bHkgc2F5IHRoYXQgdGhlIGV4cGVjdGF0aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3
b3JkcywgdGhleSBzaG91bGQgX3JldGlyZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLWZvciAoaW50IGkgPSBuOyBp
ID4gMDsgaS0tKSB7Ci0gIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgIC5XaWxsT25j
ZShSZXR1cm4oMTAqaSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLX0KLWBgYAotCi1B
bmQsIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVj
dCB0aGUgY2FsbHMgdG8gb2NjdXIgaW4gYSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAg
dGhlIGFjdGlvbnMgdG8gbWF0Y2ggdGhlIG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0
YW50IGhlcmUsIHdlIHNob3VsZCBtYWtlIGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm47Ci0uLi4KLXsKLSAgSW5TZXF1ZW5jZSBzOwotCi0gIGZvciAoaW50IGkgPSAxOyBpIDw9IG47
IGkrKykgewotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEwKmkpKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICB9Ci19
Ci1gYGAKLQotQnkgdGhlIHdheSwgdGhlIG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3Rh
dGlvbiBtYXkgX25vdF8gYmUgc3RpY2t5IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMg
c29vbiBhcyBhbm90aGVyIGV4cGVjdGF0aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNl
cXVlbmNlIGhhcyBiZWVuIHVzZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwg
bmV2ZXIgYmUgdXNlZCB0byBtYXRjaCBhbnkgY2FsbCkuCi0KLSMjIFVuaW50ZXJlc3RpbmcgQ2Fs
bHMgIyMKLUEgbW9jayBvYmplY3QgbWF5IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBv
ZiB0aGVtIGFyZSB0aGF0IGludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3
ZSBtYXkgbm90IGNhcmUgYWJvdXQgaG93IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClg
IGdldCBjYWxsZWQuCi0KLUluIEdvb2dsZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVk
IGluIGEgbWV0aG9kLCBqdXN0IGRvbid0IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxs
IHRvIHRoaXMgbWV0aG9kIG9jY3VycywgeW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qg
b3V0cHV0LCBidXQgaXQgd29uJ3QgYmUgYSBmYWlsdXJlLgotCi0jIFdoYXQgTm93PyAjCi1Db25n
cmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBz
dGFydCB1c2luZyBpdC4gTm93LCB5b3UgbWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9j
a10oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24g
Z3JvdXAgYW5kIGFjdHVhbGx5IHdyaXRlIHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBp
dCB3aWxsIGJlIGZ1bi4gSGV5LCBpdCBtYXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVl
biB3YXJuZWQuCi0KLVRoZW4sIGlmIHlvdSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sg
cXVvdGllbnQsIHlvdSBzaG91bGQgbW92ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShWMV82X0Nvb2tC
b29rLm1kKS4gWW91IGNhbiBsZWFybiBtYW55IGFkdmFuY2VkIGZlYXR1cmVzIG9mIEdvb2dsZSBN
b2NrIHRoZXJlIC0tIGFuZCBhZHZhbmNlIHlvdXIgbGV2ZWwgb2YgZW5qb3ltZW50IGFuZCB0ZXN0
aW5nIGJsaXNzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2RvY3MvdjFfNi9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9kb2NzL3YxXzYvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNzQ3MTVkMmUzN2Y2NDI1OTNhOTk3ZmM0ZTFhZTk1MTY3MjhhMzZlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvdjFfNi9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQKKysrIC9kZXYvbnVsbApAQCAt
MSw2MjggKzAsMCBAQAotCi0KLVBsZWFzZSBzZW5kIHlvdXIgcXVlc3Rpb25zIHRvIHRoZQotW2dv
b2dsZW1vY2tdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKSBkaXNj
dXNzaW9uCi1ncm91cC4gSWYgeW91IG5lZWQgaGVscCB3aXRoIGNvbXBpbGVyIGVycm9ycywgbWFr
ZSBzdXJlIHlvdSBoYXZlCi10cmllZCBbR29vZ2xlIE1vY2sgRG9jdG9yXSgjSG93X2FtX0lfc3Vw
cG9zZWRfdG9fbWFrZV9zZW5zZV9vZl90aGVzZV9ob3JyaWJsZV90ZW1wbGF0ZV9lcnJvci5tZCkg
Zmlyc3QuCi0KLSMjIFdoZW4gSSBjYWxsIGEgbWV0aG9kIG9uIG15IG1vY2sgb2JqZWN0LCB0aGUg
bWV0aG9kIGZvciB0aGUgcmVhbCBvYmplY3QgaXMgaW52b2tlZCBpbnN0ZWFkLiAgV2hhdCdzIHRo
ZSBwcm9ibGVtPyAjIwotCi1JbiBvcmRlciBmb3IgYSBtZXRob2QgdG8gYmUgbW9ja2VkLCBpdCBt
dXN0IGJlIF92aXJ0dWFsXywgdW5sZXNzIHlvdSB1c2UgdGhlIFtoaWdoLXBlcmYgZGVwZW5kZW5j
eSBpbmplY3Rpb24gdGVjaG5pcXVlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9j
ay93aWtpL1YxXzZfQ29va0Jvb2sjTW9ja2luZ19Ob252aXJ0dWFsX01ldGhvZHMpLgotCi0jIyBJ
IHdyb3RlIHNvbWUgbWF0Y2hlcnMuICBBZnRlciBJIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24g
b2YgR29vZ2xlIE1vY2ssIHRoZXkgbm8gbG9uZ2VyIGNvbXBpbGUuICBXaGF0J3MgZ29pbmcgb24/
ICMjCi0KLUFmdGVyIHZlcnNpb24gMS40LjAgb2YgR29vZ2xlIE1vY2sgd2FzIHJlbGVhc2VkLCB3
ZSBoYWQgYW4gaWRlYSBvbiBob3cKLXRvIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIG1hdGNoZXJz
IHRoYXQgY2FuIGdlbmVyYXRlIGluZm9ybWF0aXZlCi1tZXNzYWdlcyBlZmZpY2llbnRseS4gIFdl
IGV4cGVyaW1lbnRlZCB3aXRoIHRoaXMgaWRlYSBhbmQgbGlrZWQgd2hhdAotd2Ugc2F3LiAgVGhl
cmVmb3JlIHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGl0LgotCi1VbmZvcnR1bmF0ZWx5LCB0aGlz
IG1lYW5zIHRoYXQgaWYgeW91IGhhdmUgZGVmaW5lZCB5b3VyIG93biBtYXRjaGVycwotYnkgaW1w
bGVtZW50aW5nIGBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0
Y2hlcigpYCwKLXlvdXIgZGVmaW5pdGlvbnMgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIE1hdGNo
ZXJzIGRlZmluZWQgdXNpbmcgdGhlCi1gTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgYXJlIG5v
dCBhZmZlY3RlZC4KLQotU29ycnkgZm9yIHRoZSBoYXNzbGUgaWYgeW91ciBtYXRjaGVycyBhcmUg
YWZmZWN0ZWQuICBXZSBiZWxpZXZlIGl0J3MKLWluIGV2ZXJ5b25lJ3MgbG9uZy10ZXJtIGludGVy
ZXN0IHRvIG1ha2UgdGhpcyBjaGFuZ2Ugc29vbmVyIHRoYW4KLWxhdGVyLiAgRm9ydHVuYXRlbHks
IGl0J3MgdXN1YWxseSBub3QgaGFyZCB0byBtaWdyYXRlIGFuIGV4aXN0aW5nCi1tYXRjaGVyIHRv
IHRoZSBuZXcgQVBJLiAgSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0KLUlmIHlvdSB3cm90
ZSB5b3VyIG1hdGNoZXIgbGlrZSB0aGlzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4u
Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+
IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSBpdCB0bzoK
LWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVz
dCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxN
YXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAu
Li4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNv
bnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICByZXR1cm4g
dmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotKGkuZS4gcmVuYW1lIGBN
YXRjaGVzKClgIHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kIGdpdmUgaXQgYSBzZWNvbmQKLWFy
Z3VtZW50IG9mIHR5cGUgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYC4pCi0KLUlmIHlvdSB3ZXJlIGFs
c28gdXNpbmcgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvIGltcHJvdmUgdGhlIG1hdGNoZXIK
LW1lc3NhZ2U6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdv
cmsgd2l0aCB0aGUgbGFzdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1h
dGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBN
YXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9v
bCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2
YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oTXlUeXBlIHZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0g
ICAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gICAg
Ly8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gp
LgotICAgICpvcyA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOwot
ICB9Ci0gIC4uLgotfTsKLWBgYAotCi15b3Ugc2hvdWxkIG1vdmUgdGhlIGxvZ2ljIG9mIGBFeHBs
YWluTWF0Y2hSZXN1bHRUbygpYCBpbnRvCi1gTWF0Y2hBbmRFeHBsYWluKClgLCB1c2luZyB0aGUg
YE1hdGNoUmVzdWx0TGlzdGVuZXJgIGFyZ3VtZW50IHdoZXJlCi10aGUgYDo6c3RkOjpvc3RyZWFt
YCB3YXMgdXNlZDoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdp
dGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3Mg
TXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0g
cHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciog
bGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4K
LSAgICAqbGlzdGVuZXIgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRGb28o
KTsKLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAot
Ci1JZiB5b3VyIG1hdGNoZXIgaXMgZGVmaW5lZCB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hl
cigpYDoKLWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3
aXRoIHRoZSBsYXRlc3QKLS8vIEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgot
ICAuLi4KLSAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQy
OwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRj
aGVyKCkpIC4uLgotYGBgCi0KLXlvdSBzaG91bGQgcmVuYW1lIHRoZSBgTWF0Y2hlcygpYCBtZXRo
b2QgdG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQKLWFkZCBhIGBNYXRjaFJlc3VsdExpc3RlbmVy
KmAgYXJndW1lbnQgKHRoZSBzYW1lIGFzIHdoYXQgeW91IG5lZWQgdG8gZG8KLWZvciBtYXRjaGVy
cyBkZWZpbmVkIGJ5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFjZWApOgotYGBgCi0vLyBO
ZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBN
b2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0
ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7
Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2
YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUlmIHlvdXIgcG9seW1vcnBoaWMg
bWF0Y2hlciB1c2VzIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBmb3IgYmV0dGVyCi1mYWlsdXJl
IG1lc3NhZ2VzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3
b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1h
a2VQb2x5bW9ycGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIC4uLgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigp
IDwgNDI7Ci0gIH0KLSAgLi4uCi19Owotdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhjb25zdCBN
eUdyZWF0TWF0Y2hlciYgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUeXBl
IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
LSAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gIC8v
IGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1hdGNoKS4K
LSAgKm9zIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7Ci19Ci0u
Li4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KLWBgYAotCi15
b3UnbGwgbmVlZCB0byBtb3ZlIHRoZSBsb2dpYyBpbnNpZGUgYEV4cGxhaW5NYXRjaFJlc3VsdFRv
KClgIHRvCi1gTWF0Y2hBbmRFeHBsYWluKClgOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0
aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0
aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3Vs
dExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEJhciBwcm9w
ZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEJhcigpOwotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8
IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRN
YXRjaGVyKCkpIC4uLgotYGBgCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uLCB5b3UgY2FuIHJlYWQg
dGhlc2UKLVt0d29dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFf
Nl9Db29rQm9vayNXcml0aW5nX05ld19Nb25vbW9ycGhpY19NYXRjaGVycykKLVtyZWNpcGVzXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjV3Jp
dGluZ19OZXdfUG9seW1vcnBoaWNfTWF0Y2hlcnMpCi1mcm9tIHRoZSBjb29rYm9vay4gIEFzIGFs
d2F5cywgeW91Ci1hcmUgd2VsY29tZSB0byBwb3N0IHF1ZXN0aW9ucyBvbiBgZ29vZ2xlbW9ja0Bn
b29nbGVncm91cHMuY29tYCBpZiB5b3UKLW5lZWQgYW55IGhlbHAuCi0KLSMjIFdoZW4gdXNpbmcg
R29vZ2xlIE1vY2ssIGRvIEkgaGF2ZSB0byB1c2UgR29vZ2xlIFRlc3QgYXMgdGhlIHRlc3Rpbmcg
ZnJhbWV3b3JrPyAgSSBoYXZlIG15IGZhdm9yaXRlIHRlc3RpbmcgZnJhbWV3b3JrIGFuZCBkb24n
dCB3YW50IHRvIHN3aXRjaC4gIyMKLQotR29vZ2xlIE1vY2sgd29ya3Mgb3V0IG9mIHRoZSBib3gg
d2l0aCBHb29nbGUgVGVzdC4gIEhvd2V2ZXIsIGl0J3MgZWFzeQotdG8gY29uZmlndXJlIGl0IHRv
IHdvcmsgd2l0aCBhbnkgdGVzdGluZyBmcmFtZXdvcmsgb2YgeW91ciBjaG9pY2UuCi1bSGVyZV0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0ZvckR1bW1pZXMj
VXNpbmdfR29vZ2xlX01vY2tfd2l0aF9BbnlfVGVzdGluZ19GcmFtZXdvcmspIGlzIGhvdy4KLQot
IyMgSG93IGFtIEkgc3VwcG9zZWQgdG8gbWFrZSBzZW5zZSBvZiB0aGVzZSBob3JyaWJsZSB0ZW1w
bGF0ZSBlcnJvcnM/ICMjCi0KLUlmIHlvdSBhcmUgY29uZnVzZWQgYnkgdGhlIGNvbXBpbGVyIGVy
cm9ycyBnY2MgdGhyZXcgYXQgeW91LAotdHJ5IGNvbnN1bHRpbmcgdGhlIF9Hb29nbGUgTW9jayBE
b2N0b3JfIHRvb2wgZmlyc3QuICBXaGF0IGl0IGRvZXMgaXMgdG8KLXNjYW4gc3RkaW4gZm9yIGdj
YyBlcnJvciBtZXNzYWdlcywgYW5kIHNwaXQgb3V0IGRpYWdub3NlcyBvbiB0aGUKLXByb2JsZW1z
ICh3ZSBjYWxsIHRoZW0gZGlzZWFzZXMpIHlvdXIgY29kZSBoYXMuCi0KLVRvICJpbnN0YWxsIiwg
cnVuIGNvbW1hbmQ6Ci1gYGAKLWFsaWFzIGdtZD0nPHBhdGggdG8gZ29vZ2xlbW9jaz4vc2NyaXB0
cy9nbW9ja19kb2N0b3IucHknCi1gYGAKLQotVG8gdXNlIGl0LCBkbzoKLWBgYAotPHlvdXItZmF2
b3JpdGUtYnVpbGQtY29tbWFuZD4gPHlvdXItdGVzdD4gMj4mMSB8IGdtZAotYGBgCi0KLUZvciBl
eGFtcGxlOgotYGBgCi1tYWtlIG15X3Rlc3QgMj4mMSB8IGdtZAotYGBgCi0KLU9yIHlvdSBjYW4g
cnVuIGBnbWRgIGFuZCBjb3B5LW4tcGFzdGUgZ2NjJ3MgZXJyb3IgbWVzc2FnZXMgdG8gaXQuCi0K
LSMjIENhbiBJIG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbj8gIyMKLQotWW91IGNhbm5vdCBtb2Nr
IGEgdmFyaWFkaWMgZnVuY3Rpb24gKGkuZS4gYSBmdW5jdGlvbiB0YWtpbmcgZWxsaXBzaXMKLShg
Li4uYCkgYXJndW1lbnRzKSBkaXJlY3RseSBpbiBHb29nbGUgTW9jay4KLQotVGhlIHByb2JsZW0g
aXMgdGhhdCBpbiBnZW5lcmFsLCB0aGVyZSBpcyBfbm8gd2F5XyBmb3IgYSBtb2NrIG9iamVjdCB0
bwota25vdyBob3cgbWFueSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdmFyaWFkaWMgbWV0
aG9kLCBhbmQgd2hhdAotdGhlIGFyZ3VtZW50cycgdHlwZXMgYXJlLiAgT25seSB0aGUgX2F1dGhv
ciBvZiB0aGUgYmFzZSBjbGFzc18ga25vd3MKLXRoZSBwcm90b2NvbCwgYW5kIHdlIGNhbm5vdCBs
b29rIGludG8gaGlzIGhlYWQuCi0KLVRoZXJlZm9yZSwgdG8gbW9jayBzdWNoIGEgZnVuY3Rpb24s
IHRoZSBfdXNlcl8gbXVzdCB0ZWFjaCB0aGUgbW9jawotb2JqZWN0IGhvdyB0byBmaWd1cmUgb3V0
IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aGVpciB0eXBlcy4gIE9uZQotd2F5IHRvIGRv
IGl0IGlzIHRvIHByb3ZpZGUgb3ZlcmxvYWRlZCB2ZXJzaW9ucyBvZiB0aGUgZnVuY3Rpb24uCi0K
LUVsbGlwc2lzIGFyZ3VtZW50cyBhcmUgaW5oZXJpdGVkIGZyb20gQyBhbmQgbm90IHJlYWxseSBh
IEMrKyBmZWF0dXJlLgotVGhleSBhcmUgdW5zYWZlIHRvIHVzZSBhbmQgZG9uJ3Qgd29yayB3aXRo
IGFyZ3VtZW50cyB0aGF0IGhhdmUKLWNvbnN0cnVjdG9ycyBvciBkZXN0cnVjdG9ycy4gIFRoZXJl
Zm9yZSB3ZSByZWNvbW1lbmQgdG8gYXZvaWQgdGhlbSBpbgotQysrIGFzIG11Y2ggYXMgcG9zc2li
bGUuCi0KLSMjIE1TVkMgZ2l2ZXMgbWUgd2FybmluZyBDNDMwMSBvciBDNDM3MyB3aGVuIEkgZGVm
aW5lIGEgbW9jayBtZXRob2Qgd2l0aCBhIGNvbnN0IHBhcmFtZXRlci4gIFdoeT8gIyMKLQotSWYg
eW91IGNvbXBpbGUgdGhpcyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1IFNQMToKLWBg
YAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIoY29uc3QgaW50IGkpID0g
MDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVU
SE9EMShCYXIsIHZvaWQoY29uc3QgaW50IGkpKTsKLX07Ci1gYGAKLVlvdSBtYXkgZ2V0IHRoZSBm
b2xsb3dpbmcgd2FybmluZzoKLWBgYAotd2FybmluZyBDNDMwMTogJ01vY2tGb286OkJhcic6IG92
ZXJyaWRpbmcgdmlydHVhbCBmdW5jdGlvbiBvbmx5IGRpZmZlcnMgZnJvbSAnRm9vOjpCYXInIGJ5
IGNvbnN0L3ZvbGF0aWxlIHF1YWxpZmllcgotYGBgCi0KLVRoaXMgaXMgYSBNU1ZDIGJ1Zy4gIFRo
ZSBzYW1lIGNvZGUgY29tcGlsZXMgZmluZSB3aXRoIGdjYyAsZm9yCi1leGFtcGxlLiAgSWYgeW91
IHVzZSBWaXN1YWwgQysrIDIwMDggU1AxLCB5b3Ugd291bGQgZ2V0IHRoZSB3YXJuaW5nOgotYGBg
Ci13YXJuaW5nIEM0MzczOiAnTW9ja0Zvbzo6QmFyJzogdmlydHVhbCBmdW5jdGlvbiBvdmVycmlk
ZXMgJ0Zvbzo6QmFyJywgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyIGRpZCBub3Qg
b3ZlcnJpZGUgd2hlbiBwYXJhbWV0ZXJzIG9ubHkgZGlmZmVyZWQgYnkgY29uc3Qvdm9sYXRpbGUg
cXVhbGlmaWVycwotYGBgCi0KLUluIEMrKywgaWYgeW91IF9kZWNsYXJlXyBhIGZ1bmN0aW9uIHdp
dGggYSBgY29uc3RgIHBhcmFtZXRlciwgdGhlCi1gY29uc3RgIG1vZGlmaWVyIGlzIF9pZ25vcmVk
Xy4gIFRoZXJlZm9yZSwgdGhlIGBGb29gIGJhc2UgY2xhc3MgYWJvdmUKLWlzIGVxdWl2YWxlbnQg
dG86Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgQmFyKGludCBpKSA9
IDA7ICAvLyBpbnQgb3IgY29uc3QgaW50PyAgTWFrZXMgbm8gZGlmZmVyZW5jZS4KLX07Ci1gYGAK
LQotSW4gZmFjdCwgeW91IGNhbiBfZGVjbGFyZV8gQmFyKCkgd2l0aCBhbiBgaW50YCBwYXJhbWV0
ZXIsIGFuZCBfZGVmaW5lXwotaXQgd2l0aCBhIGBjb25zdCBpbnRgIHBhcmFtZXRlci4gIFRoZSBj
b21waWxlciB3aWxsIHN0aWxsIG1hdGNoIHRoZW0KLXVwLgotCi1TaW5jZSBtYWtpbmcgYSBwYXJh
bWV0ZXIgYGNvbnN0YCBpcyBtZWFuaW5nbGVzcyBpbiB0aGUgbWV0aG9kCi1fZGVjbGFyYXRpb25f
LCB3ZSByZWNvbW1lbmQgdG8gcmVtb3ZlIGl0IGluIGJvdGggYEZvb2AgYW5kIGBNb2NrRm9vYC4K
LVRoYXQgc2hvdWxkIHdvcmthcm91bmQgdGhlIFZDIGJ1Zy4KLQotTm90ZSB0aGF0IHdlIGFyZSB0
YWxraW5nIGFib3V0IHRoZSBfdG9wLWxldmVsXyBgY29uc3RgIG1vZGlmaWVyIGhlcmUuCi1JZiB0
aGUgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIHBhc3NlZCBieSBwb2ludGVyIG9yIHJlZmVyZW5jZSwg
ZGVjbGFyaW5nCi10aGUgX3BvaW50ZWVfIG9yIF9yZWZlcmVlXyBhcyBgY29uc3RgIGlzIHN0aWxs
IG1lYW5pbmdmdWwuICBGb3IKLWV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIGRlY2xhcmF0aW9u
cyBhcmUgX25vdF8gZXF1aXZhbGVudDoKLWBgYAotdm9pZCBCYXIoaW50KiBwKTsgICAgICAgIC8v
IE5laXRoZXIgcCBub3IgKnAgaXMgY29uc3QuCi12b2lkIEJhcihjb25zdCBpbnQqIHApOyAgLy8g
cCBpcyBub3QgY29uc3QsIGJ1dCAqcCBpcy4KLWBgYAotCi0jIyBJIGhhdmUgYSBodWdlIG1vY2sg
Y2xhc3MsIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBydW5zIG91dCBvZiBtZW1vcnkgd2hlbiBj
b21waWxpbmcgaXQuICBXaGF0IGNhbiBJIGRvPyAjIwotCi1XZSd2ZSBub3RpY2VkIHRoYXQgd2hl
biB0aGUgYC9jbHJgIGNvbXBpbGVyIGZsYWcgaXMgdXNlZCwgVmlzdWFsIEMrKwotdXNlcyA1fjYg
dGltZXMgYXMgbXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcgYSBtb2NrIGNsYXNzLiAgV2Ugc3Vn
Z2VzdAotdG8gYXZvaWQgYC9jbHJgIHdoZW4gY29tcGlsaW5nIG5hdGl2ZSBDKysgbW9ja3MuCi0K
LSMjIEkgY2FuJ3QgZmlndXJlIG91dCB3aHkgR29vZ2xlIE1vY2sgdGhpbmtzIG15IGV4cGVjdGF0
aW9ucyBhcmUgbm90IHNhdGlzZmllZC4gIFdoYXQgc2hvdWxkIEkgZG8/ICMjCi0KLVlvdSBtaWdo
dCB3YW50IHRvIHJ1biB5b3VyIHRlc3Qgd2l0aAotYC0tZ21vY2tfdmVyYm9zZT1pbmZvYC4gIFRo
aXMgZmxhZyBsZXRzIEdvb2dsZSBNb2NrIHByaW50IGEgdHJhY2UKLW9mIGV2ZXJ5IG1vY2sgZnVu
Y3Rpb24gY2FsbCBpdCByZWNlaXZlcy4gIEJ5IHN0dWR5aW5nIHRoZSB0cmFjZSwKLXlvdSdsbCBn
YWluIGluc2lnaHRzIG9uIHdoeSB0aGUgZXhwZWN0YXRpb25zIHlvdSBzZXQgYXJlIG5vdCBtZXQu
Ci0KLSMjIEhvdyBjYW4gSSBhc3NlcnQgdGhhdCBhIGZ1bmN0aW9uIGlzIE5FVkVSIGNhbGxlZD8g
IyMKLQotYGBgCi1FWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAuVGltZXMoMCk7Ci1gYGAK
LQotIyMgSSBoYXZlIGEgZmFpbGVkIHRlc3Qgd2hlcmUgR29vZ2xlIE1vY2sgdGVsbHMgbWUgVFdJ
Q0UgdGhhdCBhIHBhcnRpY3VsYXIgZXhwZWN0YXRpb24gaXMgbm90IHNhdGlzZmllZC4gIElzbid0
IHRoaXMgcmVkdW5kYW50PyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIGRldGVjdHMgYSBmYWlsdXJl
LCBpdCBwcmludHMgcmVsZXZhbnQgaW5mb3JtYXRpb24KLSh0aGUgbW9jayBmdW5jdGlvbiBhcmd1
bWVudHMsIHRoZSBzdGF0ZSBvZiByZWxldmFudCBleHBlY3RhdGlvbnMsIGFuZAotZXRjKSB0byBo
ZWxwIHRoZSB1c2VyIGRlYnVnLiAgSWYgYW5vdGhlciBmYWlsdXJlIGlzIGRldGVjdGVkLCBHb29n
bGUKLU1vY2sgd2lsbCBkbyB0aGUgc2FtZSwgaW5jbHVkaW5nIHByaW50aW5nIHRoZSBzdGF0ZSBv
ZiByZWxldmFudAotZXhwZWN0YXRpb25zLgotCi1Tb21ldGltZXMgYW4gZXhwZWN0YXRpb24ncyBz
dGF0ZSBkaWRuJ3QgY2hhbmdlIGJldHdlZW4gdHdvIGZhaWx1cmVzLAotYW5kIHlvdSdsbCBzZWUg
dGhlIHNhbWUgZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRlIHR3aWNlLiAgVGhleSBhcmUKLWhvd2V2
ZXIgX25vdF8gcmVkdW5kYW50LCBhcyB0aGV5IHJlZmVyIHRvIF9kaWZmZXJlbnQgcG9pbnRzIGlu
IHRpbWVfLgotVGhlIGZhY3QgdGhleSBhcmUgdGhlIHNhbWUgX2lzXyBpbnRlcmVzdGluZyBpbmZv
cm1hdGlvbi4KLQotIyMgSSBnZXQgYSBoZWFwIGNoZWNrIGZhaWx1cmUgd2hlbiB1c2luZyBhIG1v
Y2sgb2JqZWN0LCBidXQgdXNpbmcgYSByZWFsIG9iamVjdCBpcyBmaW5lLiAgV2hhdCBjYW4gYmUg
d3Jvbmc/ICMjCi0KLURvZXMgdGhlIGNsYXNzIChob3BlZnVsbHkgYSBwdXJlIGludGVyZmFjZSkg
eW91IGFyZSBtb2NraW5nIGhhdmUgYQotdmlydHVhbCBkZXN0cnVjdG9yPwotCi1XaGVuZXZlciB5
b3UgZGVyaXZlIGZyb20gYSBiYXNlIGNsYXNzLCBtYWtlIHN1cmUgaXRzIGRlc3RydWN0b3IgaXMK
LXZpcnR1YWwuICBPdGhlcndpc2UgQmFkIFRoaW5ncyB3aWxsIGhhcHBlbi4gIENvbnNpZGVyIHRo
ZSBmb2xsb3dpbmcKLWNvZGU6Ci0KLWBgYAotY2xhc3MgQmFzZSB7Ci0gcHVibGljOgotICAvLyBO
b3QgdmlydHVhbCwgYnV0IHNob3VsZCBiZS4KLSAgfkJhc2UoKSB7IC4uLiB9Ci0gIC4uLgotfTsK
LQotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotIHByaXZh
dGU6Ci0gIHN0ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLS4uLgotICBCYXNlKiBwID0gbmV3IERl
cml2ZWQ7Ci0gIC4uLgotICBkZWxldGUgcDsgIC8vIFN1cnByaXNlISB+QmFzZSgpIHdpbGwgYmUg
Y2FsbGVkLCBidXQgfkRlcml2ZWQoKSB3aWxsIG5vdAotICAgICAgICAgICAgIC8vIC0gdmFsdWVf
IGlzIGxlYWtlZC4KLWBgYAotCi1CeSBjaGFuZ2luZyBgfkJhc2UoKWAgdG8gdmlydHVhbCwgYH5E
ZXJpdmVkKClgIHdpbGwgYmUgY29ycmVjdGx5Ci1jYWxsZWQgd2hlbiBgZGVsZXRlIHBgIGlzIGV4
ZWN1dGVkLCBhbmQgdGhlIGhlYXAgY2hlY2tlcgotd2lsbCBiZSBoYXBweS4KLQotIyMgVGhlICJu
ZXdlciBleHBlY3RhdGlvbnMgb3ZlcnJpZGUgb2xkZXIgb25lcyIgcnVsZSBtYWtlcyB3cml0aW5n
IGV4cGVjdGF0aW9ucyBhd2t3YXJkLiAgV2h5IGRvZXMgR29vZ2xlIE1vY2sgZG8gdGhhdD8gIyMK
LQotV2hlbiBwZW9wbGUgY29tcGxhaW4gYWJvdXQgdGhpcywgb2Z0ZW4gdGhleSBhcmUgcmVmZXJy
aW5nIHRvIGNvZGUgbGlrZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0
d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29u
ZCB0aW1lLiAgSG93ZXZlciwgSSBoYXZlIHRvIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhl
Ci0vLyByZXZlcnNlIG9yZGVyLiAgVGhpcyBzdWNrcyBiaWcgdGltZSEhIQotRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1
cmF0aW9uKCk7Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5XaWxsT25jZShSZXR1cm4o
MSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1UaGUgcHJvYmxlbSBpcyB0
aGF0IHRoZXkgZGlkbid0IHBpY2sgdGhlICoqYmVzdCoqIHdheSB0byBleHByZXNzIHRoZSB0ZXN0
J3MKLWludGVudC4KLQotQnkgZGVmYXVsdCwgZXhwZWN0YXRpb25zIGRvbid0IGhhdmUgdG8gYmUg
bWF0Y2hlZCBpbiBfYW55XyBwYXJ0aWN1bGFyCi1vcmRlci4gIElmIHlvdSB3YW50IHRoZW0gdG8g
bWF0Y2ggaW4gYSBjZXJ0YWluIG9yZGVyLCB5b3UgbmVlZCB0byBiZQotZXhwbGljaXQuICBUaGlz
IGlzIEdvb2dsZSBNb2NrJ3MgKGFuZCBqTW9jaydzKSBmdW5kYW1lbnRhbCBwaGlsb3NvcGh5OiBp
dCdzCi1lYXN5IHRvIGFjY2lkZW50YWxseSBvdmVyLXNwZWNpZnkgeW91ciB0ZXN0cywgYW5kIHdl
IHdhbnQgdG8gbWFrZSBpdAotaGFyZGVyIHRvIGRvIHNvLgotCi1UaGVyZSBhcmUgdHdvIGJldHRl
ciB3YXlzIHRvIHdyaXRlIHRoZSB0ZXN0IHNwZWMuICBZb3UgY291bGQgZWl0aGVyCi1wdXQgdGhl
IGV4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJl
IGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIg
dGhlIHNlY29uZCB0aW1lLiAgVXNpbmcgYSBzZXF1ZW5jZSwgd2UgY2FuIHdyaXRlIHRoZSBleHBl
Y3RhdGlvbnMKLS8vIGluIHRoZWlyIG5hdHVyYWwgb3JkZXIuCi17Ci0gIEluU2VxdWVuY2UgczsK
LSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0g
ICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQot
ICAgICAgLldpbGxPbmNlKFJldHVybigyKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
Ci19Ci1gYGAKLQotb3IgeW91IGNhbiBwdXQgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgaW4gdGhl
IHNhbWUgZXhwZWN0YXRpb246Ci0KLWBgYAotLy8gZm9vLkJhcigpIHNob3VsZCBiZSBjYWxsZWQg
dHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCi0vLyAyIHRoZSBzZWNv
bmQgdGltZS4KLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigx
KSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
Ci1gYGAKLQotQmFjayB0byB0aGUgb3JpZ2luYWwgcXVlc3Rpb25zOiB3aHkgZG9lcyBHb29nbGUg
TW9jayBzZWFyY2ggdGhlCi1leHBlY3RhdGlvbnMgKGFuZCBgT05fQ0FMTGBzKSBmcm9tIGJhY2sg
dG8gZnJvbnQ/ICBCZWNhdXNlIHRoaXMKLWFsbG93cyBhIHVzZXIgdG8gc2V0IHVwIGEgbW9jaydz
IGJlaGF2aW9yIGZvciB0aGUgY29tbW9uIGNhc2UgZWFybHkKLShlLmcuIGluIHRoZSBtb2NrJ3Mg
Y29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSkKLWFuZCBjdXN0
b21pemUgaXQgd2l0aCBtb3JlIHNwZWNpZmljIHJ1bGVzIGxhdGVyLiAgSWYgR29vZ2xlIE1vY2sK
LXNlYXJjaGVzIGZyb20gZnJvbnQgdG8gYmFjaywgdGhpcyB2ZXJ5IHVzZWZ1bCBwYXR0ZXJuIHdv
bid0IGJlCi1wb3NzaWJsZS4KLQotIyMgR29vZ2xlIE1vY2sgcHJpbnRzIGEgd2FybmluZyB3aGVu
IGEgZnVuY3Rpb24gd2l0aG91dCBFWFBFQ1RcX0NBTEwgaXMgY2FsbGVkLCBldmVuIGlmIEkgaGF2
ZSBzZXQgaXRzIGJlaGF2aW9yIHVzaW5nIE9OXF9DQUxMLiAgV291bGQgaXQgYmUgcmVhc29uYWJs
ZSBub3QgdG8gc2hvdyB0aGUgd2FybmluZyBpbiB0aGlzIGNhc2U/ICMjCi0KLVdoZW4gY2hvb3Np
bmcgYmV0d2VlbiBiZWluZyBuZWF0IGFuZCBiZWluZyBzYWZlLCB3ZSBsZWFuIHRvd2FyZCB0aGUK
LWxhdHRlci4gIFNvIHRoZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0aGluayBpdCdzIGJldHRlciB0byBz
aG93IHRoZQotd2FybmluZy4KLQotT2Z0ZW4gcGVvcGxlIHdyaXRlIGBPTl9DQUxMYHMgaW4gdGhl
IG1vY2sgb2JqZWN0J3MKLWNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCwgYXMgdGhlIGRlZmF1bHQg
YmVoYXZpb3IgcmFyZWx5IGNoYW5nZXMgZnJvbQotdGVzdCB0byB0ZXN0LiAgVGhlbiBpbiB0aGUg
dGVzdCBib2R5IHRoZXkgc2V0IHRoZSBleHBlY3RhdGlvbnMsIHdoaWNoCi1hcmUgb2Z0ZW4gZGlm
ZmVyZW50IGZvciBlYWNoIHRlc3QuICBIYXZpbmcgYW4gYE9OX0NBTExgIGluIHRoZSBzZXQtdXAK
LXBhcnQgb2YgYSB0ZXN0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBjYWxscyBhcmUgZXhwZWN0ZWQu
ICBJZiB0aGVyZSdzCi1ubyBgRVhQRUNUX0NBTExgIGFuZCB0aGUgbWV0aG9kIGlzIGNhbGxlZCwg
aXQncyBwb3NzaWJseSBhbiBlcnJvci4gIElmCi13ZSBxdWlldGx5IGxldCB0aGUgY2FsbCBnbyB0
aHJvdWdoIHdpdGhvdXQgbm90aWZ5aW5nIHRoZSB1c2VyLCBidWdzCi1tYXkgY3JlZXAgaW4gdW5u
b3RpY2VkLgotCi1JZiwgaG93ZXZlciwgeW91IGFyZSBzdXJlIHRoYXQgdGhlIGNhbGxzIGFyZSBP
SywgeW91IGNhbiB3cml0ZQotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5X
aWxsUmVwZWF0ZWRseSguLi4pOwotYGBgCi0KLWluc3RlYWQgb2YKLQotYGBgCi1PTl9DQUxMKGZv
bywgQmFyKF8pKQotICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7Ci1gYGAKLQotVGhpcyB0ZWxscyBH
b29nbGUgTW9jayB0aGF0IHlvdSBkbyBleHBlY3QgdGhlIGNhbGxzIGFuZCBubyB3YXJuaW5nIHNo
b3VsZCBiZQotcHJpbnRlZC4KLQotQWxzbywgeW91IGNhbiBjb250cm9sIHRoZSB2ZXJib3NpdHkg
dXNpbmcgdGhlIGAtLWdtb2NrX3ZlcmJvc2VgIGZsYWcuCi1JZiB5b3UgZmluZCB0aGUgb3V0cHV0
IHRvbyBub2lzeSB3aGVuIGRlYnVnZ2luZywganVzdCBjaG9vc2UgYSBsZXNzCi12ZXJib3NlIGxl
dmVsLgotCi0jIyBIb3cgY2FuIEkgZGVsZXRlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQg
aW4gYW4gYWN0aW9uPyAjIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHBlcmZv
cm0gc29tZSBhY3Rpb24gdGhhdCdzIG5vdAotc3VwcG9ydGVkIGJ5IEdvb2dsZSBNb2NrIGRpcmVj
dGx5LCByZW1lbWJlciB0aGF0IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duCi1hY3Rpb25zIHVzaW5n
Ci1bTWFrZUFjdGlvbigpXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtp
L1YxXzZfQ29va0Jvb2sjV3JpdGluZ19OZXdfQWN0aW9ucykgb3IKLVtNYWtlUG9seW1vcnBoaWNB
Y3Rpb24oKV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0Nv
b2tCb29rI1dyaXRpbmdfTmV3X1BvbHltb3JwaGljX0FjdGlvbnMpLAotb3IgeW91IGNhbiB3cml0
ZSBhIHN0dWIgZnVuY3Rpb24gYW5kIGludm9rZSBpdCB1c2luZwotW0ludm9rZSgpXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjVXNpbmdfRnVu
Y3Rpb25zX01ldGhvZHNfRnVuY3RvcnMpLgotCi0jIyBNT0NLXF9NRVRIT0RuKCkncyBzZWNvbmQg
YXJndW1lbnQgbG9va3MgZnVubnkuICBXaHkgZG9uJ3QgeW91IHVzZSB0aGUgTU9DS1xfTUVUSE9E
bihNZXRob2QsIHJldHVyblxfdHlwZSwgYXJnXF8xLCAuLi4sIGFyZ1xfbikgc3ludGF4PyAjIwot
Ci1XaGF0PyEgIEkgdGhpbmsgaXQncyBiZWF1dGlmdWwuIDotKQotCi1XaGlsZSB3aGljaCBzeW50
YXggbG9va3MgbW9yZSBuYXR1cmFsIGlzIGEgc3ViamVjdGl2ZSBtYXR0ZXIgdG8gc29tZQotZXh0
ZW50LCBHb29nbGUgTW9jaydzIHN5bnRheCB3YXMgY2hvc2VuIGZvciBzZXZlcmFsIHByYWN0aWNh
bCBhZHZhbnRhZ2VzIGl0Ci1oYXMuCi0KLVRyeSB0byBtb2NrIGEgZnVuY3Rpb24gdGhhdCB0YWtl
cyBhIG1hcCBhcyBhbiBhcmd1bWVudDoKLWBgYAotdmlydHVhbCBpbnQgR2V0U2l6ZShjb25zdCBt
YXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLVVzaW5nIHRoZSBwcm9wb3NlZCBzeW50
YXgsIGl0IHdvdWxkIGJlOgotYGBgCi1NT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50LCBjb25zdCBt
YXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLUd1ZXNzIHdoYXQ/ICBZb3UnbGwgZ2V0
IGEgY29tcGlsZXIgZXJyb3IgYXMgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0Ci1gY29uc3QgbWFw
PGludCwgc3RkOjpzdHJpbmc+JiBtYCBhcmUgKip0d28qKiwgbm90IG9uZSwgYXJndW1lbnRzLiBU
byB3b3JrCi1hcm91bmQgdGhpcyB5b3UgY2FuIHVzZSBgdHlwZWRlZmAgdG8gZ2l2ZSB0aGUgbWFw
IHR5cGUgYSBuYW1lLCBidXQKLXRoYXQgZ2V0cyBpbiB0aGUgd2F5IG9mIHlvdXIgd29yay4gIEdv
b2dsZSBNb2NrJ3Mgc3ludGF4IGF2b2lkcyB0aGlzCi1wcm9ibGVtIGFzIHRoZSBmdW5jdGlvbidz
IGFyZ3VtZW50IHR5cGVzIGFyZSBwcm90ZWN0ZWQgaW5zaWRlIGEgcGFpcgotb2YgcGFyZW50aGVz
ZXM6Ci1gYGAKLS8vIFRoaXMgY29tcGlsZXMgZmluZS4KLU1PQ0tfTUVUSE9EMShHZXRTaXplLCBp
bnQoY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtKSk7Ci1gYGAKLQotWW91IHN0aWxsIG5l
ZWQgYSBgdHlwZWRlZmAgaWYgdGhlIHJldHVybiB0eXBlIGNvbnRhaW5zIGFuIHVucHJvdGVjdGVk
Ci1jb21tYSwgYnV0IHRoYXQncyBtdWNoIHJhcmVyLgotCi1PdGhlciBhZHZhbnRhZ2VzIGluY2x1
ZGU6Ci0gIDEuIGBNT0NLX01FVEhPRDEoRm9vLCBpbnQsIGJvb2wpYCBjYW4gbGVhdmUgYSByZWFk
ZXIgd29uZGVyIHdoZXRoZXIgdGhlIG1ldGhvZCByZXR1cm5zIGBpbnRgIG9yIGBib29sYCwgd2hp
bGUgdGhlcmUgd29uJ3QgYmUgc3VjaCBjb25mdXNpb24gdXNpbmcgR29vZ2xlIE1vY2sncyBzeW50
YXguCi0gIDEuIFRoZSB3YXkgR29vZ2xlIE1vY2sgZGVzY3JpYmVzIGEgZnVuY3Rpb24gdHlwZSBp
cyBub3RoaW5nIG5ldywgYWx0aG91Z2ggbWFueSBwZW9wbGUgbWF5IG5vdCBiZSBmYW1pbGlhciB3
aXRoIGl0LiAgVGhlIHNhbWUgc3ludGF4IHdhcyB1c2VkIGluIEMsIGFuZCB0aGUgYGZ1bmN0aW9u
YCBsaWJyYXJ5IGluIGB0cjFgIHVzZXMgdGhpcyBzeW50YXggZXh0ZW5zaXZlbHkuICBTaW5jZSBg
dHIxYCB3aWxsIGJlY29tZSBhIHBhcnQgb2YgdGhlIG5ldyB2ZXJzaW9uIG9mIFNUTCwgd2UgZmVl
bCB2ZXJ5IGNvbWZvcnRhYmxlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBpdC4KLSAgMS4gVGhlIGZ1
bmN0aW9uIHR5cGUgc3ludGF4IGlzIGFsc28gdXNlZCBpbiBvdGhlciBwYXJ0cyBvZiBHb29nbGUg
TW9jaydzIEFQSSAoZS5nLiB0aGUgYWN0aW9uIGludGVyZmFjZSkgaW4gb3JkZXIgdG8gbWFrZSB0
aGUgaW1wbGVtZW50YXRpb24gdHJhY3RhYmxlLiBBIHVzZXIgbmVlZHMgdG8gbGVhcm4gaXQgYW55
d2F5IGluIG9yZGVyIHRvIHV0aWxpemUgR29vZ2xlIE1vY2sncyBtb3JlIGFkdmFuY2VkIGZlYXR1
cmVzLiAgV2UnZCBhcyB3ZWxsIHN0aWNrIHRvIHRoZSBzYW1lIHN5bnRheCBpbiBgTU9DS19NRVRI
T0QqYCEKLQotIyMgTXkgY29kZSBjYWxscyBhIHN0YXRpYy9nbG9iYWwgZnVuY3Rpb24uICBDYW4g
SSBtb2NrIGl0PyAjIwotCi1Zb3UgY2FuLCBidXQgeW91IG5lZWQgdG8gbWFrZSBzb21lIGNoYW5n
ZXMuCi0KLUluIGdlbmVyYWwsIGlmIHlvdSBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gbW9jayBh
IHN0YXRpYyBmdW5jdGlvbiwKLWl0J3MgYSBzaWduIHRoYXQgeW91ciBtb2R1bGVzIGFyZSB0b28g
dGlnaHRseSBjb3VwbGVkIChhbmQgbGVzcwotZmxleGlibGUsIGxlc3MgcmV1c2FibGUsIGxlc3Mg
dGVzdGFibGUsIGV0YykuICBZb3UgYXJlIHByb2JhYmx5IGJldHRlcgotb2ZmIGRlZmluaW5nIGEg
c21hbGwgaW50ZXJmYWNlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiB0aHJvdWdoIHRoYXQKLWludGVy
ZmFjZSwgd2hpY2ggdGhlbiBjYW4gYmUgZWFzaWx5IG1vY2tlZC4gIEl0J3MgYSBiaXQgb2Ygd29y
awotaW5pdGlhbGx5LCBidXQgdXN1YWxseSBwYXlzIGZvciBpdHNlbGYgcXVpY2tseS4KLQotVGhp
cyBHb29nbGUgVGVzdGluZyBCbG9nCi1bcG9zdF0oaHR0cDovL2dvb2dsZXRlc3RpbmcuYmxvZ3Nw
b3QuY29tLzIwMDgvMDYvZGVmZWF0LXN0YXRpYy1jbGluZy5odG1sKQotc2F5cyBpdCBleGNlbGxl
bnRseS4gIENoZWNrIGl0IG91dC4KLQotIyMgTXkgbW9jayBvYmplY3QgbmVlZHMgdG8gZG8gY29t
cGxleCBzdHVmZi4gIEl0J3MgYSBsb3Qgb2YgcGFpbiB0byBzcGVjaWZ5IHRoZSBhY3Rpb25zLiAg
R29vZ2xlIE1vY2sgc3Vja3MhICMjCi0KLUkga25vdyBpdCdzIG5vdCBhIHF1ZXN0aW9uLCBidXQg
eW91IGdldCBhbiBhbnN3ZXIgZm9yIGZyZWUgYW55IHdheS4gOi0pCi0KLVdpdGggR29vZ2xlIE1v
Y2ssIHlvdSBjYW4gY3JlYXRlIG1vY2tzIGluIEMrKyBlYXNpbHkuICBBbmQgcGVvcGxlIG1pZ2h0
IGJlCi10ZW1wdGVkIHRvIHVzZSB0aGVtIGV2ZXJ5d2hlcmUuIFNvbWV0aW1lcyB0aGV5IHdvcmsg
Z3JlYXQsIGFuZAotc29tZXRpbWVzIHlvdSBtYXkgZmluZCB0aGVtLCB3ZWxsLCBhIHBhaW4gdG8g
dXNlLiBTbywgd2hhdCdzIHdyb25nIGluCi10aGUgbGF0dGVyIGNhc2U/Ci0KLVdoZW4geW91IHdy
aXRlIGEgdGVzdCB3aXRob3V0IHVzaW5nIG1vY2tzLCB5b3UgZXhlcmNpc2UgdGhlIGNvZGUgYW5k
Ci1hc3NlcnQgdGhhdCBpdCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlIG9yIHRoYXQgdGhlIHN5
c3RlbSBpcyBpbiBhbgotZXhwZWN0ZWQgc3RhdGUuICBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQg
InN0YXRlLWJhc2VkIHRlc3RpbmciLgotCi1Nb2NrcyBhcmUgZ3JlYXQgZm9yIHdoYXQgc29tZSBj
YWxsICJpbnRlcmFjdGlvbi1iYXNlZCIgdGVzdGluZzoKLWluc3RlYWQgb2YgY2hlY2tpbmcgdGhl
IHN5c3RlbSBzdGF0ZSBhdCB0aGUgdmVyeSBlbmQsIG1vY2sgb2JqZWN0cwotdmVyaWZ5IHRoYXQg
dGhleSBhcmUgaW52b2tlZCB0aGUgcmlnaHQgd2F5IGFuZCByZXBvcnQgYW4gZXJyb3IgYXMgc29v
bgotYXMgaXQgYXJpc2VzLCBnaXZpbmcgeW91IGEgaGFuZGxlIG9uIHRoZSBwcmVjaXNlIGNvbnRl
eHQgaW4gd2hpY2ggdGhlCi1lcnJvciB3YXMgdHJpZ2dlcmVkLiAgVGhpcyBpcyBvZnRlbiBtb3Jl
IGVmZmVjdGl2ZSBhbmQgZWNvbm9taWNhbCB0bwotZG8gdGhhbiBzdGF0ZS1iYXNlZCB0ZXN0aW5n
LgotCi1JZiB5b3UgYXJlIGRvaW5nIHN0YXRlLWJhc2VkIHRlc3RpbmcgYW5kIHVzaW5nIGEgdGVz
dCBkb3VibGUganVzdCB0bwotc2ltdWxhdGUgdGhlIHJlYWwgb2JqZWN0LCB5b3UgYXJlIHByb2Jh
Ymx5IGJldHRlciBvZmYgdXNpbmcgYSBmYWtlLgotVXNpbmcgYSBtb2NrIGluIHRoaXMgY2FzZSBj
YXVzZXMgcGFpbiwgYXMgaXQncyBub3QgYSBzdHJvbmcgcG9pbnQgZm9yCi1tb2NrcyB0byBwZXJm
b3JtIGNvbXBsZXggYWN0aW9ucy4gIElmIHlvdSBleHBlcmllbmNlIHRoaXMgYW5kIHRoaW5rCi10
aGF0IG1vY2tzIHN1Y2ssIHlvdSBhcmUganVzdCBub3QgdXNpbmcgdGhlIHJpZ2h0IHRvb2wgZm9y
IHlvdXIKLXByb2JsZW0uIE9yLCB5b3UgbWlnaHQgYmUgdHJ5aW5nIHRvIHNvbHZlIHRoZSB3cm9u
ZyBwcm9ibGVtLiA6LSkKLQotIyMgSSBnb3QgYSB3YXJuaW5nICJVbmludGVyZXN0aW5nIGZ1bmN0
aW9uIGNhbGwgZW5jb3VudGVyZWQgLSBkZWZhdWx0IGFjdGlvbiB0YWtlbi4uIiAgU2hvdWxkIEkg
cGFuaWM/ICMjCi0KLUJ5IGFsbCBtZWFucywgTk8hICBJdCdzIGp1c3QgYW4gRllJLgotCi1XaGF0
IGl0IG1lYW5zIGlzIHRoYXQgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uLCB5b3UgaGF2ZW4ndCBz
ZXQgYW55Ci1leHBlY3RhdGlvbnMgb24gaXQgKGJ5IEdvb2dsZSBNb2NrJ3MgcnVsZSB0aGlzIG1l
YW5zIHRoYXQgeW91IGFyZSBub3QKLWludGVyZXN0ZWQgaW4gY2FsbHMgdG8gdGhpcyBmdW5jdGlv
biBhbmQgdGhlcmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQKLWFueSBudW1iZXIgb2YgdGltZXMpLCBh
bmQgaXQgaXMgY2FsbGVkLiAgVGhhdCdzIE9LIC0geW91IGRpZG4ndCBzYXkKLWl0J3Mgbm90IE9L
IHRvIGNhbGwgdGhlIGZ1bmN0aW9uIQotCi1XaGF0IGlmIHlvdSBhY3R1YWxseSBtZWFudCB0byBk
aXNhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0Ci1mb3Jnb3QgdG8gd3JpdGUg
YEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpLlRpbWVzKDApYD8gIFdoaWxlCi1vbmUgY2FuIGFyZ3Vl
IHRoYXQgaXQncyB0aGUgdXNlcidzIGZhdWx0LCBHb29nbGUgTW9jayB0cmllcyB0byBiZSBuaWNl
IGFuZAotcHJpbnRzIHlvdSBhIG5vdGUuCi0KLVNvLCB3aGVuIHlvdSBzZWUgdGhlIG1lc3NhZ2Ug
YW5kIGJlbGlldmUgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55Ci11bmludGVyZXN0aW5nIGNh
bGxzLCB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHdoYXQncyBnb2luZyBvbi4gIFRvIG1ha2UKLXlv
dXIgbGlmZSBlYXNpZXIsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUgZnVuY3Rpb24gbmFtZSBhbmQg
YXJndW1lbnRzCi13aGVuIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBlbmNvdW50ZXJlZC4KLQot
IyMgSSB3YW50IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24uICBTaG91bGQgSSB1c2UgSW52b2tl
KCkgb3IgaW1wbGVtZW50IHRoZSBhY3Rpb24gaW50ZXJmYWNlPyAjIwotCi1FaXRoZXIgd2F5IGlz
IGZpbmUgLSB5b3Ugd2FudCB0byBjaG9vc2UgdGhlIG9uZSB0aGF0J3MgbW9yZSBjb252ZW5pZW50
Ci1mb3IgeW91ciBjaXJjdW1zdGFuY2UuCi0KLVVzdWFsbHksIGlmIHlvdXIgYWN0aW9uIGlzIGZv
ciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSwgZGVmaW5pbmcgaXQKLXVzaW5nIGBJbnZva2Uo
KWAgc2hvdWxkIGJlIGVhc2llcjsgaWYgeW91ciBhY3Rpb24gY2FuIGJlIHVzZWQgaW4KLWZ1bmN0
aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4gaWYgeW91IGFyZSBkZWZpbmluZwotYFJldHVy
bih2YWx1ZSlgKSwgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCBpcwotZWFzaWVzdC4gIFNvbWV0
aW1lcyB5b3Ugd2FudCBwcmVjaXNlIGNvbnRyb2wgb24gd2hhdCB0eXBlcyBvZgotZnVuY3Rpb25z
IHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQgaW4sIGFuZCBpbXBsZW1lbnRpbmcKLWBBY3Rpb25JbnRl
cmZhY2VgIGlzIHRoZSB3YXkgdG8gZ28gaGVyZS4gU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgot
YFJldHVybigpYCBpbiBgaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25zLmhgIGZvciBhbiBleGFt
cGxlLgotCi0jIyBJJ20gdXNpbmcgdGhlIHNldC1hcmd1bWVudC1wb2ludGVlIGFjdGlvbiwgYW5k
IHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImNvbmZsaWN0aW5nIHJldHVybiB0eXBlIHNw
ZWNpZmllZCIuICBXaGF0IGRvZXMgaXQgbWVhbj8gIyMKLQotWW91IGdvdCB0aGlzIGVycm9yIGFz
IEdvb2dsZSBNb2NrIGhhcyBubyBpZGVhIHdoYXQgdmFsdWUgaXQgc2hvdWxkIHJldHVybgotd2hl
biB0aGUgbW9jayBtZXRob2QgaXMgY2FsbGVkLiAgYFNldEFyZ1BvaW50ZWUoKWAgc2F5cyB3aGF0
IHRoZQotc2lkZSBlZmZlY3QgaXMsIGJ1dCBkb2Vzbid0IHNheSB3aGF0IHRoZSByZXR1cm4gdmFs
dWUgc2hvdWxkIGJlLiAgWW91Ci1uZWVkIGBEb0FsbCgpYCB0byBjaGFpbiBhIGBTZXRBcmdQb2lu
dGVlKClgIHdpdGggYSBgUmV0dXJuKClgLgotCi1TZWUgdGhpcyBbcmVjaXBlXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjTW9ja2luZ19TaWRl
X0VmZmVjdHMpIGZvciBtb3JlIGRldGFpbHMgYW5kIGFuIGV4YW1wbGUuCi0KLQotIyMgTXkgcXVl
c3Rpb24gaXMgbm90IGluIHlvdXIgRkFRISAjIwotCi1JZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFu
c3dlciB0byB5b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKLXNvbWUgb3RoZXIg
cmVzb3VyY2VzIHlvdSBjYW4gdXNlOgotCi0gIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3cvbGlzdCksCi0gIDEuIHNlYXJjaCB0
aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAv
Z29vZ2xlbW9jay90b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dvb2dsZW1vY2tAZ29vZ2xlZ3Jv
dXBzLmNvbV0obWFpbHRvOmdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUg
d2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0
aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29n
bGVtb2NrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFzZSBub3RlIHRoYXQgY3JlYXRp
bmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZW1vY2svaXNzdWVzL2xpc3QpIGlzIF9ub3RfCi1hIGdvb2Qgd2F5IHRvIGdldCB5
b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVkIGluZnJlcXVlbnRseSBieSBhCi12ZXJ5IHNt
YWxsIG51bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4gYXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVs
cGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlCi1mb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMg
cG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5b3UgaWYgdGhlcmUncwotbm90IGVub3VnaCBp
bmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToKLQotICAqIHRoZSB2ZXJzaW9uIChvciB0aGUg
cmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBvdXQgZnJvbSBTVk4gZGlyZWN0bHkpIG9mIEdv
b2dsZSBNb2NrIHlvdSB1c2UgKEdvb2dsZSBNb2NrIGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVu
dCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIgcHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4g
YSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0sCi0gICogdGhlIG5h
bWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tbWFu
ZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIgY29tcGlsZXIsCi0gICogdGhlIGNvbXBsZXRl
IGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGls
YXRpb24pLAotICAqIHRoZSBfYWN0dWFsXyBjb2RlIChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNv
bXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBwcm9ibGVtIHlvdSBlbmNvdW50ZXIuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83
L0NoZWF0U2hlZXQubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvQ2hlYXRTaGVldC5tZApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI0MjFlNTFiZTY1NjY5OTExMjU0ZTkzZTM5M2I2
YWRlZDI1NjA4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvQ2hlYXRTaGVldC5tZAorKysgL2Rldi9udWxsCkBAIC0x
LDU1NiArMCwwIEBACi0KLQotIyBEZWZpbmluZyBhIE1vY2sgQ2xhc3MgIwotCi0jIyBNb2NraW5n
IGEgTm9ybWFsIENsYXNzICMjCi0KLUdpdmVuCi1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2
aXJ0dWFsIH5Gb28oKTsKLSAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmly
dHVhbCBzdHJpbmcgRGVzY3JpYmUoY29uc3QgY2hhciogbmFtZSkgPSAwOwotICB2aXJ0dWFsIHN0
cmluZyBEZXNjcmliZShpbnQgdHlwZSkgPSAwOwotICB2aXJ0dWFsIGJvb2wgUHJvY2VzcyhCYXIg
ZWxlbSwgaW50IGNvdW50KSA9IDA7Ci19OwotYGBgCi0obm90ZSB0aGF0IGB+Rm9vKClgICoqbXVz
dCoqIGJlIHZpcnR1YWwpIHdlIGNhbiBkZWZpbmUgaXRzIG1vY2sgYXMKLWBgYAotI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiCi0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgTU9DS19D
T05TVF9NRVRIT0QwKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERlc2NyaWJlLCBz
dHJpbmcoY29uc3QgY2hhciogbmFtZSkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmlu
ZyhpbnQgdHlwZSkpOwotICBNT0NLX01FVEhPRDIoUHJvY2VzcywgYm9vbChCYXIgZWxlbSwgaW50
IGNvdW50KSk7Ci19OwotYGBgCi0KLVRvIGNyZWF0ZSBhICJuaWNlIiBtb2NrIG9iamVjdCB3aGlj
aCBpZ25vcmVzIGFsbCB1bmludGVyZXN0aW5nIGNhbGxzLAotb3IgYSAic3RyaWN0IiBtb2NrIG9i
amVjdCwgd2hpY2ggdHJlYXRzIHRoZW0gYXMgZmFpbHVyZXM6Ci1gYGAKLU5pY2VNb2NrPE1vY2tG
b28+IG5pY2VfZm9vOyAgICAgLy8gVGhlIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vLgot
U3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOyAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNz
IG9mIE1vY2tGb28uCi1gYGAKLQotIyMgTW9ja2luZyBhIENsYXNzIFRlbXBsYXRlICMjCi0KLVRv
IG1vY2sKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBTdGFja0ludGVyZmFj
ZSB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKLSAgdmly
dHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCB2b2lkIFB1c2goY29uc3Qg
RWxlbSYgeCkgPSAwOwotfTsKLWBgYAotKG5vdGUgdGhhdCBgflN0YWNrSW50ZXJmYWNlKClgICoq
bXVzdCoqIGJlIHZpcnR1YWwpIGp1c3QgYXBwZW5kIGBfVGAgdG8gdGhlIGBNT0NLXypgIG1hY3Jv
czoKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBNb2NrU3RhY2sgOiBwdWJs
aWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIE1PQ0tfQ09OU1Rf
TUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChj
b25zdCBFbGVtJiB4KSk7Ci19OwotYGBgCi0KLSMjIFNwZWNpZnlpbmcgQ2FsbGluZyBDb252ZW50
aW9ucyBmb3IgTW9jayBGdW5jdGlvbnMgIyMKLQotSWYgeW91ciBtb2NrIGZ1bmN0aW9uIGRvZXNu
J3QgdXNlIHRoZSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbiwgeW91Ci1jYW4gc3BlY2lmeSBp
dCBieSBhcHBlbmRpbmcgYF9XSVRIX0NBTExUWVBFYCB0byBhbnkgb2YgdGhlIG1hY3JvcwotZGVz
Y3JpYmVkIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgYW5kIHN1cHBseWluZyB0aGUgY2Fs
bGluZwotY29udmVudGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1hY3JvLiBGb3Ig
ZXhhbXBsZSwKLWBgYAotICBNT0NLX01FVEhPRF8xX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FM
TFRZUEUsIEZvbywgYm9vbChpbnQgbikpOwotICBNT0NLX0NPTlNUX01FVEhPRDJfV0lUSF9DQUxM
VFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQmFyLCBpbnQoZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci1g
YGAKLXdoZXJlIGBTVERNRVRIT0RDQUxMVFlQRWAgaXMgZGVmaW5lZCBieSBgPG9iamJhc2UuaD5g
IG9uIFdpbmRvd3MuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVzdHMgIwotCi1UaGUgdHlwaWNhbCBm
bG93IGlzOgotICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVzIHlvdSBuZWVkIHRvIHVz
ZS4gQWxsIEdvb2dsZSBNb2NrIG5hbWVzIGFyZSBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSB1
bmxlc3MgdGhleSBhcmUgbWFjcm9zIG9yIG90aGVyd2lzZSBub3RlZC4KLSAgMS4gQ3JlYXRlIHRo
ZSBtb2NrIG9iamVjdHMuCi0gIDEuIE9wdGlvbmFsbHksIHNldCB0aGUgZGVmYXVsdCBhY3Rpb25z
IG9mIHRoZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNldCB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGUg
bW9jayBvYmplY3RzIChIb3cgd2lsbCB0aGV5IGJlIGNhbGxlZD8gV2hhdCB3aWwgdGhleSBkbz8p
LgotICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzOyBpZiBuZWNl
c3NhcnksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMuCi0gIDEuIFdoZW4gYSBtb2NrIG9i
amVjdHMgaXMgZGVzdHJ1Y3RlZCwgR29vZ2xlIE1vY2sgYXV0b21hdGljYWxseSB2ZXJpZmllcyB0
aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlzZmllZC4KLQotSGVyZSBp
cyBhbiBleGFtcGxlOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gIzEKLQotVEVTVChCYXJUZXN0LCBEb2VzVGhpcykgewotICBNb2Nr
Rm9vIGZvbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgotCi0gIE9O
X0NBTEwoZm9vLCBHZXRTaXplKCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMzCi0gICAg
ICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICAvLyAuLi4gb3RoZXIgZGVmYXVsdCBhY3Rp
b25zIC4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoNSkpICAgICAgICAgICAgICAg
ICAgIC8vICM0Ci0gICAgICAuVGltZXMoMykKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
IkNhdGVnb3J5IDUiKSk7Ci0gIC8vIC4uLiBvdGhlciBleHBlY3RhdGlvbnMgLi4uCi0KLSAgRVhQ
RUNUX0VRKCJnb29kIiwgTXlQcm9kdWN0aW9uRnVuY3Rpb24oJmZvbykpOyAgLy8gIzUKLX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzYKLWBgYAot
Ci0jIFNldHRpbmcgRGVmYXVsdCBBY3Rpb25zICMKLQotR29vZ2xlIE1vY2sgaGFzIGEgKipidWls
dC1pbiBkZWZhdWx0IGFjdGlvbioqIGZvciBhbnkgZnVuY3Rpb24gdGhhdAotcmV0dXJucyBgdm9p
ZGAsIGBib29sYCwgYSBudW1lcmljIHZhbHVlLCBvciBhIHBvaW50ZXIuCi0KLVRvIGN1c3RvbWl6
ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGZ1bmN0aW9ucyB3aXRoIHJldHVybiB0eXBlIGBUYCBn
bG9iYWxseToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWU7Ci0KLURlZmF1bHRW
YWx1ZTxUPjo6U2V0KHZhbHVlKTsgIC8vIFNldHMgdGhlIGRlZmF1bHQgdmFsdWUgdG8gYmUgcmV0
dXJuZWQuCi0vLyAuLi4gdXNlIHRoZSBtb2NrcyAuLi4KLURlZmF1bHRWYWx1ZTxUPjo6Q2xlYXIo
KTsgICAgIC8vIFJlc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4KLWBgYAotCi1UbyBjdXN0b21pemUg
dGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9kLCB1c2UgYE9OX0NBTEwo
KWA6Ci1gYGAKLU9OX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAgLldp
dGgobXVsdGlfYXJndW1lbnRfbWF0Y2hlcikgID8KLSAgICAuV2lsbEJ5RGVmYXVsdChhY3Rpb24p
OwotYGBgCi0KLSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwotCi1gRVhQRUNUX0NBTEwoKWAgc2V0
cyAqKmV4cGVjdGF0aW9ucyoqIG9uIGEgbW9jayBtZXRob2QgKEhvdyB3aWxsIGl0IGJlCi1jYWxs
ZWQ/IFdoYXQgd2lsbCBpdCBkbz8pOgotYGBgCi1FWFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0
aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPwotICAg
IC5UaW1lcyhjYXJkaW5hbGl0eSkgICAgICAgICAgICA/Ci0gICAgLkluU2VxdWVuY2Uoc2VxdWVu
Y2VzKSAgICAgICAgICoKLSAgICAuQWZ0ZXIoZXhwZWN0YXRpb25zKSAgICAgICAgICAgKgotICAg
IC5XaWxsT25jZShhY3Rpb24pICAgICAgICAgICAgICAqCi0gICAgLldpbGxSZXBlYXRlZGx5KGFj
dGlvbikgICAgICAgID8KLSAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOyAgICAgICAgPwotYGBg
Ci0KLUlmIGBUaW1lcygpYCBpcyBvbWl0dGVkLCB0aGUgY2FyZGluYWxpdHkgaXMgYXNzdW1lZCB0
byBiZToKLQotICAqIGBUaW1lcygxKWAgd2hlbiB0aGVyZSBpcyBuZWl0aGVyIGBXaWxsT25jZSgp
YCBub3IgYFdpbGxSZXBlYXRlZGx5KClgOwotICAqIGBUaW1lcyhuKWAgd2hlbiB0aGVyZSBhcmUg
YG4gV2lsbE9uY2UoKWBzIGJ1dCBubyBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAx
OyBvcgotICAqIGBUaW1lcyhBdExlYXN0KG4pKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9uY2Uo
KWBzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDAuCi0KLUEgbWV0aG9k
IHdpdGggbm8gYEVYUEVDVF9DQUxMKClgIGlzIGZyZWUgdG8gYmUgaW52b2tlZCBfYW55IG51bWJl
ciBvZiB0aW1lc18sIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBiZSB0YWtlbiBlYWNoIHRp
bWUuCi0KLSMgTWF0Y2hlcnMgIwotCi1BICoqbWF0Y2hlcioqIG1hdGNoZXMgYSBfc2luZ2xlXyBh
cmd1bWVudC4gIFlvdSBjYW4gdXNlIGl0IGluc2lkZQotYE9OX0NBTEwoKWAgb3IgYEVYUEVDVF9D
QUxMKClgLCBvciB1c2UgaXQgdG8gdmFsaWRhdGUgYSB2YWx1ZQotZGlyZWN0bHk6Ci0KLXwgYEVY
UEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBBc3NlcnRzIHRoYXQgYHZhbHVlYCBtYXRjaGVz
IGBtYXRjaGVyYC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVEhBVCh2YWx1ZSwg
bWF0Y2hlcilgIHwgVGhlIHNhbWUgYXMgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAsIGV4
Y2VwdCB0aGF0IGl0IGdlbmVyYXRlcyBhICoqZmF0YWwqKiBmYWlsdXJlLiB8Ci0KLUJ1aWx0LWlu
IG1hdGNoZXJzICh3aGVyZSBgYXJndW1lbnRgIGlzIHRoZSBmdW5jdGlvbiBhcmd1bWVudCkgYXJl
Ci1kaXZpZGVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOgotCi0jIyBXaWxkY2FyZCAjIwotfGBf
YHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdGhlIGNvcnJlY3QgdHlwZS58Ci18Oi0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQTx0
eXBlPigpYCBvciBgQW48dHlwZT4oKWB8YGFyZ3VtZW50YCBjYW4gYmUgYW55IHZhbHVlIG9mIHR5
cGUgYHR5cGVgLiAgICAgfAotCi0jIyBHZW5lcmljIENvbXBhcmlzb24gIyMKLQotfGBFcSh2YWx1
ZSlgIG9yIGB2YWx1ZWB8YGFyZ3VtZW50ID09IHZhbHVlYHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS18Ci18YEdlKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1l
bnQgPj0gdmFsdWVgfAotfGBHdCh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ID4gdmFsdWVg
IHwKLXxgTGUodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8PSB2YWx1ZWB8Ci18YEx0KHZh
bHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPCB2YWx1ZWAgfAotfGBOZSh2YWx1ZSlgICAgICAg
ICAgICB8YGFyZ3VtZW50ICE9IHZhbHVlYHwKLXxgSXNOdWxsKClgICAgICAgICAgICAgfGBhcmd1
bWVudGAgaXMgYSBgTlVMTGAgcG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Ci18YE5vdE51bGwoKWAg
ICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgbm9uLW51bGwgcG9pbnRlciAocmF3IG9yIHNtYXJ0
KS58Ci18YFJlZih2YXJpYWJsZSlgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgcmVmZXJlbmNlIHRv
IGB2YXJpYWJsZWAufAotfGBUeXBlZEVxPHR5cGU+KHZhbHVlKWB8YGFyZ3VtZW50YCBoYXMgdHlw
ZSBgdHlwZWAgYW5kIGlzIGVxdWFsIHRvIGB2YWx1ZWAuIFlvdSBtYXkgbmVlZCB0byB1c2UgdGhp
cyBpbnN0ZWFkIG9mIGBFcSh2YWx1ZSlgIHdoZW4gdGhlIG1vY2sgZnVuY3Rpb24gaXMgb3Zlcmxv
YWRlZC58Ci0KLUV4Y2VwdCBgUmVmKClgLCB0aGVzZSBtYXRjaGVycyBtYWtlIGEgX2NvcHlfIG9m
IGB2YWx1ZWAgaW4gY2FzZSBpdCdzCi1tb2RpZmllZCBvciBkZXN0cnVjdGVkIGxhdGVyLiBJZiB0
aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYHZhbHVlYAotZG9lc24ndCBoYXZlIGEgcHVibGlj
IGNvcHkgY29uc3RydWN0b3IsIHRyeSB3cmFwIGl0IGluIGBCeVJlZigpYCwKLWUuZy4gYEVxKEJ5
UmVmKG5vbl9jb3B5YWJsZV92YWx1ZSkpYC4gSWYgeW91IGRvIHRoYXQsIG1ha2Ugc3VyZQotYG5v
bl9jb3B5YWJsZV92YWx1ZWAgaXMgbm90IGNoYW5nZWQgYWZ0ZXJ3YXJkcywgb3IgdGhlIG1lYW5p
bmcgb2YgeW91cgotbWF0Y2hlciB3aWxsIGJlIGNoYW5nZWQuCi0KLSMjIEZsb2F0aW5nLVBvaW50
IE1hdGNoZXJzICMjCi0KLXxgRG91YmxlRXEoYV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRv
dWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0
d28gTmFOcyBhcyB1bmVxdWFsLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRmxvYXRFcShhX2Zsb2F0KWAgIHxgYXJndW1l
bnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwg
dHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwKLXxgTmFuU2Vuc2l0aXZlRG91YmxlRXEo
YV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBl
cXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBhcyBlcXVhbC4gIHwKLXxgTmFu
U2Vuc2l0aXZlRmxvYXRFcShhX2Zsb2F0KWB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUg
YXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9mbG9hdGAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVx
dWFsLiAgICB8Ci0KLVRoZSBhYm92ZSBtYXRjaGVycyB1c2UgVUxQLWJhc2VkIGNvbXBhcmlzb24g
KHRoZSBzYW1lIGFzIHVzZWQgaW4KLVtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3QvKSkuIFRoZXkKLWF1dG9tYXRpY2FsbHkgcGljayBhIHJlYXNvbmFibGUg
ZXJyb3IgYm91bmQgYmFzZWQgb24gdGhlIGFic29sdXRlCi12YWx1ZSBvZiB0aGUgZXhwZWN0ZWQg
dmFsdWUuICBgRG91YmxlRXEoKWAgYW5kIGBGbG9hdEVxKClgIGNvbmZvcm0gdG8KLXRoZSBJRUVF
IHN0YW5kYXJkLCB3aGljaCByZXF1aXJlcyBjb21wYXJpbmcgdHdvIE5hTnMgZm9yIGVxdWFsaXR5
IHRvCi1yZXR1cm4gZmFsc2UuIFRoZSBgTmFuU2Vuc2l0aXZlKmAgdmVyc2lvbiBpbnN0ZWFkIHRy
ZWF0cyB0d28gTmFOcyBhcwotZXF1YWwsIHdoaWNoIGlzIG9mdGVuIHdoYXQgYSB1c2VyIHdhbnRz
LgotCi18YERvdWJsZU5lYXIoYV9kb3VibGUsIG1heF9hYnNfZXJyb3IpYHxgYXJndW1lbnRgIGlz
IGEgYGRvdWJsZWAgdmFsdWUgY2xvc2UgdG8gYGFfZG91YmxlYCAoYWJzb2x1dGUgZXJyb3IgPD0g
YG1heF9hYnNfZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC58Ci18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEZsb2F0TmVhcihhX2Zsb2F0
LCBtYXhfYWJzX2Vycm9yKWAgIHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBjbG9zZSB0
byBgYV9mbG9hdGAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5n
IHR3byBOYU5zIGFzIHVuZXF1YWwuICB8Ci18YE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoYV9kb3Vi
bGUsIG1heF9hYnNfZXJyb3IpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgY2xvc2Ug
dG8gYGFfZG91YmxlYCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9hYnNfZXJyb3JgKSwgdHJlYXRp
bmcgdHdvIE5hTnMgYXMgZXF1YWwuICB8Ci18YE5hblNlbnNpdGl2ZUZsb2F0TmVhcihhX2Zsb2F0
LCBtYXhfYWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgY2xvc2UgdG8g
YGFfZmxvYXRgIChhYnNvbHV0ZSBlcnJvciA8PSBgbWF4X2Fic19lcnJvcmApLCB0cmVhdGluZyB0
d28gTmFOcyBhcyBlcXVhbC4gICAgfAotCi0jIyBTdHJpbmcgTWF0Y2hlcnMgIyMKLQotVGhlIGBh
cmd1bWVudGAgY2FuIGJlIGVpdGhlciBhIEMgc3RyaW5nIG9yIGEgQysrIHN0cmluZyBvYmplY3Q6
Ci0KLXxgQ29udGFpbnNSZWdleChzdHJpbmcpYHxgYXJndW1lbnRgIG1hdGNoZXMgdGhlIGdpdmVu
IHJlZ3VsYXIgZXhwcmVzc2lvbi58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFbmRzV2l0aChzdWZm
aXgpYCAgICAgfGBhcmd1bWVudGAgZW5kcyB3aXRoIHN0cmluZyBgc3VmZml4YC4gICAgICAgICAg
IHwKLXxgSGFzU3Vic3RyKHN0cmluZylgICAgIHxgYXJndW1lbnRgIGNvbnRhaW5zIGBzdHJpbmdg
IGFzIGEgc3ViLXN0cmluZy4gICB8Ci18YE1hdGNoZXNSZWdleChzdHJpbmcpYCB8YGFyZ3VtZW50
YCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24gd2l0aCB0aGUgbWF0Y2ggc3Rh
cnRpbmcgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgZW5kaW5nIGF0IHRoZSBsYXN0IGNoYXJh
Y3Rlci58Ci18YFN0YXJ0c1dpdGgocHJlZml4KWAgICB8YGFyZ3VtZW50YCBzdGFydHMgd2l0aCBz
dHJpbmcgYHByZWZpeGAuICAgICAgICAgfAotfGBTdHJDYXNlRXEoc3RyaW5nKWAgICAgfGBhcmd1
bWVudGAgaXMgZXF1YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5nIGNhc2UuIHwKLXxgU3RyQ2FzZU5l
KHN0cmluZylgICAgIHxgYXJndW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3Jp
bmcgY2FzZS58Ci18YFN0ckVxKHN0cmluZylgICAgICAgICB8YGFyZ3VtZW50YCBpcyBlcXVhbCB0
byBgc3RyaW5nYC4gICAgICAgICAgICAgICAgfAotfGBTdHJOZShzdHJpbmcpYCAgICAgICAgfGBh
cmd1bWVudGAgaXMgbm90IGVxdWFsIHRvIGBzdHJpbmdgLiAgICAgICAgICAgIHwKLQotYENvbnRh
aW5zUmVnZXgoKWAgYW5kIGBNYXRjaGVzUmVnZXgoKWAgdXNlIHRoZSByZWd1bGFyIGV4cHJlc3Np
b24KLXN5bnRheCBkZWZpbmVkCi1baGVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZXRlc3Qvd2lraS9BZHZhbmNlZEd1aWRlI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgotYFN0
ckNhc2VFcSgpYCwgYFN0ckNhc2VOZSgpYCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClgIHdvcmsg
Zm9yIHdpZGUKLXN0cmluZ3MgYXMgd2VsbC4KLQotIyMgQ29udGFpbmVyIE1hdGNoZXJzICMjCi0K
LU1vc3QgU1RMLXN0eWxlIGNvbnRhaW5lcnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2FuIHVzZQot
YEVxKGV4cGVjdGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0
byBtYXRjaCBhCi1jb250YWluZXIgZXhhY3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0ZSB0aGUg
ZWxlbWVudHMgaW4tbGluZSwKLW1hdGNoIHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0IG1vcmUg
aW5mb3JtYXRpdmUgbWVzc2FnZXMsIHlvdSBjYW4gdXNlOgotCi18IGBDb250YWluZXJFcShjb250
YWluZXIpYCB8IFRoZSBzYW1lIGFzIGBFcShjb250YWluZXIpYCBleGNlcHQgdGhhdCB0aGUgZmFp
bHVyZSBtZXNzYWdlIGFsc28gaW5jbHVkZXMgd2hpY2ggZWxlbWVudHMgYXJlIGluIG9uZSBjb250
YWluZXIgYnV0IG5vdCB0aGUgb3RoZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAotfCBgQ29udGFpbnMoZSlgICAgICAgICAgICAgfCBgYXJndW1lbnRg
IGNvbnRhaW5zIGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhl
ciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Ci18IGBFYWNoKGUpYCAgICAgICAgICAgICAgICB8IGBhcmd1bWVudGAgaXMgYSBjb250
YWluZXIgd2hlcmUgX2V2ZXJ5XyBlbGVtZW50IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0
aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwg
YEVsZW1lbnRzQXJlKGUwLCBlMSwgLi4uLCBlbilgIHwgYGFyZ3VtZW50YCBoYXMgYG4gKyAxYCBl
bGVtZW50cywgd2hlcmUgdGhlIGktdGggZWxlbWVudCBtYXRjaGVzIGBlaWAsIHdoaWNoIGNhbiBi
ZSBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFsbG93ZWQuIHwK
LXwgYEVsZW1lbnRzQXJlQXJyYXkoeyBlMCwgZTEsIC4uLiwgZW4gfSlgLCBgRWxlbWVudHNBcmVB
cnJheShhcnJheSlgLCBvciBgRWxlbWVudHNBcmVBcnJheShhcnJheSwgY291bnQpYCB8IFRoZSBz
YW1lIGFzIGBFbGVtZW50c0FyZSgpYCBleGNlcHQgdGhhdCB0aGUgZXhwZWN0ZWQgZWxlbWVudCB2
YWx1ZXMvbWF0Y2hlcnMgY29tZSBmcm9tIGFuIGluaXRpYWxpemVyIGxpc3QsIHZlY3Rvciwgb3Ig
Qy1zdHlsZSBhcnJheS4gfAotfCBgSXNFbXB0eSgpYCAgICAgICAgICAgICAgfCBgYXJndW1lbnRg
IGlzIGFuIGVtcHR5IGNvbnRhaW5lciAoYGNvbnRhaW5lci5lbXB0eSgpYCkuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Ci18IGBQb2ludHdpc2UobSwgY29udGFpbmVyKWAgfCBgYXJndW1lbnRgIGNvbnRhaW5z
IHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cyBhcyBpbiBgY29udGFpbmVyYCwgYW5kIGZvciBh
bGwgaSwgKHRoZSBpLXRoIGVsZW1lbnQgaW4gYGFyZ3VtZW50YCwgdGhlIGktdGggZWxlbWVudCBp
biBgY29udGFpbmVyYCkgbWF0Y2ggYG1gLCB3aGljaCBpcyBhIG1hdGNoZXIgb24gMi10dXBsZXMu
IEUuZy4gYFBvaW50d2lzZShMZSgpLCB1cHBlcl9ib3VuZHMpYCB2ZXJpZmllcyB0aGF0IGVhY2gg
ZWxlbWVudCBpbiBgYXJndW1lbnRgIGRvZXNuJ3QgZXhjZWVkIHRoZSBjb3JyZXNwb25kaW5nIGVs
ZW1lbnQgaW4gYHVwcGVyX2JvdW5kc2AuIFNlZSBtb3JlIGRldGFpbCBiZWxvdy4gfAotfCBgU2l6
ZUlzKG0pYCAgICAgICAgICAgICAgfCBgYXJndW1lbnRgIGlzIGEgY29udGFpbmVyIHdob3NlIHNp
emUgbWF0Y2hlcyBgbWAuIEUuZy4gYFNpemVJcygyKWAgb3IgYFNpemVJcyhMdCgyKSlgLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBVbm9yZGVyZWRFbGVt
ZW50c0FyZShlMCwgZTEsIC4uLiwgZW4pYCB8IGBhcmd1bWVudGAgaGFzIGBuICsgMWAgZWxlbWVu
dHMsIGFuZCB1bmRlciBzb21lIHBlcm11dGF0aW9uIGVhY2ggZWxlbWVudCBtYXRjaGVzIGFuIGBl
aWAgKGZvciBhIGRpZmZlcmVudCBgaWApLCB3aGljaCBjYW4gYmUgYSB2YWx1ZSBvciBhIG1hdGNo
ZXIuIDAgdG8gMTAgYXJndW1lbnRzIGFyZSBhbGxvd2VkLiB8Ci18IGBVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5KHsgZTAsIGUxLCAuLi4sIGVuIH0pYCwgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJy
YXkoYXJyYXkpYCwgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoYXJyYXksIGNvdW50KWAg
fCBUaGUgc2FtZSBhcyBgVW5vcmRlcmVkRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhlIGV4
cGVjdGVkIGVsZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhbiBpbml0aWFsaXplciBs
aXN0LCB2ZWN0b3IsIG9yIEMtc3R5bGUgYXJyYXkuIHwKLXwgYFdoZW5Tb3J0ZWQobSlgICAgICAg
ICAgIHwgV2hlbiBgYXJndW1lbnRgIGlzIHNvcnRlZCB1c2luZyB0aGUgYDxgIG9wZXJhdG9yLCBp
dCBtYXRjaGVzIGNvbnRhaW5lciBtYXRjaGVyIGBtYC4gRS5nLiBgV2hlblNvcnRlZChVbm9yZGVy
ZWRFbGVtZW50c0FyZSgxLCAyLCAzKSlgIHZlcmlmaWVzIHRoYXQgYGFyZ3VtZW50YCBjb250YWlu
cyBlbGVtZW50cyBgMWAsIGAyYCwgYW5kIGAzYCwgaWdub3Jpbmcgb3JkZXIuIHwKLXwgYFdoZW5T
b3J0ZWRCeShjb21wYXJhdG9yLCBtKWAgfCBUaGUgc2FtZSBhcyBgV2hlblNvcnRlZChtKWAsIGV4
Y2VwdCB0aGF0IHRoZSBnaXZlbiBjb21wYXJhdG9yIGluc3RlYWQgb2YgYDxgIGlzIHVzZWQgdG8g
c29ydCBgYXJndW1lbnRgLiBFLmcuIGBXaGVuU29ydGVkQnkoc3RkOjpncmVhdGVyPGludD4oKSwg
RWxlbWVudHNBcmUoMywgMiwgMSkpYC4gfAotCi1Ob3RlczoKLQotICAqIFRoZXNlIG1hdGNoZXJz
IGNhbiBhbHNvIG1hdGNoOgotICAgIDEuIGEgbmF0aXZlIGFycmF5IHBhc3NlZCBieSByZWZlcmVu
Y2UgKGUuZy4gaW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlgKSwgYW5kCi0gICAgMS4gYW4gYXJy
YXkgcGFzc2VkIGFzIGEgcG9pbnRlciBhbmQgYSBjb3VudCAoZS5nLiBpbiBgQmFyKGNvbnN0IFQq
IGJ1ZmZlciwgaW50IGxlbilgIC0tIHNlZSBbTXVsdGktYXJndW1lbnQgTWF0Y2hlcnNdKCNNdWx0
aWFyZ3VtZW50X01hdGNoZXJzLm1kKSkuCi0gICogVGhlIGFycmF5IGJlaW5nIG1hdGNoZWQgbWF5
IGJlIG11bHRpLWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVtZW50cyBjYW4gYmUgYXJyYXlzKS4K
LSAgKiBgbWAgaW4gYFBvaW50d2lzZShtLCAuLi4pYCBzaG91bGQgYmUgYSBtYXRjaGVyIGZvciBg
c3RkOjp0cjE6OnR1cGxlPFQsIFU+YCB3aGVyZSBgVGAgYW5kIGBVYCBhcmUgdGhlIGVsZW1lbnQg
dHlwZSBvZiB0aGUgYWN0dWFsIGNvbnRhaW5lciBhbmQgdGhlIGV4cGVjdGVkIGNvbnRhaW5lciwg
cmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZSwgdG8gY29tcGFyZSB0d28gYEZvb2AgY29udGFpbmVy
cyB3aGVyZSBgRm9vYCBkb2Vzbid0IHN1cHBvcnQgYG9wZXJhdG9yPT1gIGJ1dCBoYXMgYW4gYEVx
dWFscygpYCBtZXRob2QsIG9uZSBtaWdodCB3cml0ZToKLQotYGBgCi11c2luZyA6OnN0ZDo6dHIx
OjpnZXQ7Ci1NQVRDSEVSKEZvb0VxLCAiIikgewotICByZXR1cm4gZ2V0PDA+KGFyZykuRXF1YWxz
KGdldDwxPihhcmcpKTsKLX0KLS4uLgotRVhQRUNUX1RIQVQoYWN0dWFsX2Zvb3MsIFBvaW50d2lz
ZShGb29FcSgpLCBleHBlY3RlZF9mb29zKSk7Ci1gYGAKLQotIyMgTWVtYmVyIE1hdGNoZXJzICMj
Ci0KLXxgRmllbGQoJmNsYXNzOjpmaWVsZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9yIGBhcmd1
bWVudC0+ZmllbGRgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMg
bWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNz
Xy58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAotfGBLZXkoZSlgICAgICAgICAgICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBtYXRjaGVz
IGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5nLiBgQ29u
dGFpbnMoS2V5KExlKDUpKSlgIGNhbiB2ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5zIGEga2V5
IGA8PSA1YC58Ci18YFBhaXIobTEsIG0yKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGFuIGBz
dGQ6OnBhaXJgIHdob3NlIGBmaXJzdGAgZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vjb25kYCBm
aWVsZCBtYXRjaGVzIGBtMmAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAotfGBQcm9wZXJ0eSgmY2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3VtZW50LnBy
b3BlcnR5KClgIChvciBgYXJndW1lbnQtPnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50YCBpcyBh
IHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMg
YW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Ci0KLSMjIE1hdGNoaW5nIHRoZSBSZXN1bHQgb2Yg
YSBGdW5jdGlvbiBvciBGdW5jdG9yICMjCi0KLXxgUmVzdWx0T2YoZiwgbSlgfGBmKGFyZ3VtZW50
KWAgbWF0Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rv
ci58Ci18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBQb2ludGVyIE1hdGNo
ZXJzICMjCi0KLXxgUG9pbnRlZShtKWB8YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQgcG9pbnRl
ciBvciBhIHJhdyBwb2ludGVyKSBwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgbWF0Y2hl
ciBgbWAufAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Ci0KLSMjIE11bHRpYXJndW1lbnQgTWF0Y2hlcnMgIyMKLQotVGVjaG5pY2FsbHksIGFs
bCBtYXRjaGVycyBtYXRjaCBhIF9zaW5nbGVfIHZhbHVlLiBBICJtdWx0aS1hcmd1bWVudCIKLW1h
dGNoZXIgaXMganVzdCBvbmUgdGhhdCBtYXRjaGVzIGEgX3R1cGxlXy4gVGhlIGZvbGxvd2luZyBt
YXRjaGVycyBjYW4KLWJlIHVzZWQgdG8gbWF0Y2ggYSB0dXBsZSBgKHgsIHkpYDoKLQotfGBFcSgp
YHxgeCA9PSB5YHwKLXw6LS0tLS18Oi0tLS0tLS18Ci18YEdlKClgfGB4ID49IHlgfAotfGBHdCgp
YHxgeCA+IHlgIHwKLXxgTGUoKWB8YHggPD0geWB8Ci18YEx0KClgfGB4IDwgeWAgfAotfGBOZSgp
YHxgeCAhPSB5YHwKLQotWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGlj
ayBhIHN1YnNldCBvZiB0aGUgYXJndW1lbnRzCi0ob3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNp
cGF0ZSBpbiB0aGUgbWF0Y2hpbmc6Ci0KLXxgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAu
IFVzZWZ1bCBhcyBzeW50YWN0aWMgc3VnYXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58Ci18Oi0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSB0
dXBsZSBvZiB0aGUgYGtgIHNlbGVjdGVkICh1c2luZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50
cyBtYXRjaGVzIGBtYCwgZS5nLiBgQXJnczwxLCAyPihFcSgpKWAufAotCi0jIyBDb21wb3NpdGUg
TWF0Y2hlcnMgIyMKLQotWW91IGNhbiBtYWtlIGEgbWF0Y2hlciBmcm9tIG9uZSBvciBtb3JlIG90
aGVyIG1hdGNoZXJzOgotCi18YEFsbE9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0
Y2hlcyBhbGwgb2YgdGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Ci18YEFueU9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhdCBs
ZWFzdCBvbmUgb2YgdGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18YE5vdChtKWAgICAgICAg
ICAgICAgICAgfGBhcmd1bWVudGAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAg
ICAgICB8Ci0KLSMjIEFkYXB0ZXJzIGZvciBNYXRjaGVycyAjIwotCi18YE1hdGNoZXJDYXN0PFQ+
KG0pYHxjYXN0cyBtYXRjaGVyIGBtYCB0byB0eXBlIGBNYXRjaGVyPFQ+YC58Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YFNh
ZmVNYXRjaGVyQ2FzdDxUPihtKWB8IFtzYWZlbHkgY2FzdHNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNDYXN0aW5nX01hdGNoZXJzKSBtYXRj
aGVyIGBtYCB0byB0eXBlIGBNYXRjaGVyPFQ+YC4gfAotfGBUcnVseShwcmVkaWNhdGUpYCB8YHBy
ZWRpY2F0ZShhcmd1bWVudClgIHJldHVybnMgc29tZXRoaW5nIGNvbnNpZGVyZWQgYnkgQysrIHRv
IGJlIHRydWUsIHdoZXJlIGBwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Ci0K
LSMjIE1hdGNoZXJzIGFzIFByZWRpY2F0ZXMgIyMKLQotfGBNYXRjaGVzKG0pKHZhbHVlKWB8ZXZh
bHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFsdWVgIG1hdGNoZXMgYG1gLiBZb3UgY2FuIHVzZSBgTWF0
Y2hlcyhtKWAgYWxvbmUgYXMgYSB1bmFyeSBmdW5jdG9yLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEV4cGxhaW5NYXRjaFJl
c3VsdChtLCB2YWx1ZSwgcmVzdWx0X2xpc3RlbmVyKWB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBg
dmFsdWVgIG1hdGNoZXMgYG1gLCBleHBsYWluaW5nIHRoZSByZXN1bHQgdG8gYHJlc3VsdF9saXN0
ZW5lcmAuICAgICAgIHwKLXxgVmFsdWUodmFsdWUsIG0pYCAgfGV2YWx1YXRlcyB0byBgdHJ1ZWAg
aWYgYHZhbHVlYCBtYXRjaGVzIGBtYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8Ci0KLSMjIERlZmluaW5nIE1hdGNoZXJzICMjCi0KLXwgYE1BVENI
RVIoSXNFdmVuLCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH1gIHwgRGVmaW5lcyBhIG1h
dGNoZXIgYElzRXZlbigpYCB0byBtYXRjaCBhbiBldmVuIG51bWJlci4gfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBNQVRDSEVSX1AoSXNE
aXZpc2libGVCeSwgbiwgIiIpIHsgKnJlc3VsdF9saXN0ZW5lciA8PCAid2hlcmUgdGhlIHJlbWFp
bmRlciBpcyAiIDw8IChhcmcgJSBuKTsgcmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9YCB8IERlZmlu
ZXMgYSBtYWNoZXIgYElzRGl2aXNpYmxlQnkobilgIHRvIG1hdGNoIGEgbnVtYmVyIGRpdmlzaWJs
ZSBieSBgbmAuIHwKLXwgYE1BVENIRVJfUDIoSXNCZXR3ZWVuLCBhLCBiLCBzdGQ6OnN0cmluZyhu
ZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArICIgYmV0d2VlbiAiICsgUHJpbnRUb1N0cmluZyhh
KSArICIgYW5kICIgKyBQcmludFRvU3RyaW5nKGIpKSB7IHJldHVybiBhIDw9IGFyZyAmJiBhcmcg
PD0gYjsgfWAgfCBEZWZpbmVzIGEgbWF0Y2hlciBgSXNCZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBh
IHZhbHVlIGluIHRoZSByYW5nZSBbYGFgLCBgYmBdLiB8Ci0KLSoqTm90ZXM6KioKLQotICAxLiBU
aGUgYE1BVENIRVIqYCBtYWNyb3MgY2Fubm90IGJlIHVzZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3Ig
Y2xhc3MuCi0gIDEuIFRoZSBtYXRjaGVyIGJvZHkgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxf
IChpLmUuIGl0IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVz
dCBub3QgZGVwZW5kIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNo
ZWQgYW5kIHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMpLgotICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRU
b1N0cmluZyh4KWAgdG8gY29udmVydCBhIHZhbHVlIGB4YCBvZiBhbnkgdHlwZSB0byBhIHN0cmlu
Zy4KLQotIyMgTWF0Y2hlcnMgYXMgVGVzdCBBc3NlcnRpb25zICMjCi0KLXxgQVNTRVJUX1RIQVQo
ZXhwcmVzc2lvbiwgbSlgfEdlbmVyYXRlcyBhIFtmYXRhbCBmYWlsdXJlXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1ByaW1lciNBc3NlcnRpb25zKSBpZiB0aGUgdmFs
dWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAufAotfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEVY
UEVDVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFpbHVyZSBp
ZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LQotIyBBY3Rpb25zICMKLQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5jdGlv
biBzaG91bGQgZG8gd2hlbiBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIwotCi18
YFJldHVybigpYHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKLXw6LS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBSZXR1cm4odmFsdWUp
YHxSZXR1cm4gYHZhbHVlYC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBpcyBkaWZmZXJlbnQgdG8g
dGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBpcyBjb252ZXJ0ZWQgdG8g
dGhlIGxhdHRlciB0eXBlIDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQ8L2k+
LCBub3Qgd2hlbiB0aGUgYWN0aW9uIGlzIGV4ZWN1dGVkLnwKLXxgUmV0dXJuQXJnPE4+KClgfFJl
dHVybiB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJldHVybk5ldzxUPihhMSwg
Li4uLCBhaylgfFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0
IGlzIGNyZWF0ZWQgZWFjaCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBv
aW50ZXIuICAgICAgICAgICAgIHwKLXxgUmV0dXJuUG9pbnRlZShwdHIpYHxSZXR1cm4gdGhlIHZh
bHVlIHBvaW50ZWQgdG8gYnkgYHB0cmAufAotfGBSZXR1cm5SZWYodmFyaWFibGUpYHxSZXR1cm4g
YSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC4gIHwKLXxgUmV0dXJuUmVmT2ZDb3B5KHZhbHVlKWB8
UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0aGUgY29weSBsaXZlcyBh
cyBsb25nIGFzIHRoZSBhY3Rpb24ufAotCi0jIyBTaWRlIEVmZmVjdHMgIyMKLQotfGBBc3NpZ24o
JnZhcmlhYmxlLCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlhYmxlLnwKLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBEZWxl
dGVBcmc8Tj4oKWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVu
dCwgd2hpY2ggbXVzdCBiZSBhIHBvaW50ZXIuIHwKLXwgYFNhdmVBcmc8Tj4ocG9pbnRlcilgICAg
IHwgU2F2ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8Ci18
IGBTYXZlQXJnUG9pbnRlZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2YWx1ZSBwb2ludGVkIHRv
IGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKLXwgYFNl
dEFyZ1JlZmVyZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUgcmVm
ZXJlbmNlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAotfGBTZXRBcmdQb2lu
dGVlPE4+KHZhbHVlKWAgfEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJpYWJsZSBwb2ludGVkIGJ5
IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LnwKLXxgU2V0QXJndW1lbnRQb2ludGVlPE4+
KHZhbHVlKWB8U2FtZSBhcyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgLiBEZXByZWNhdGVkLiBX
aWxsIGJlIHJlbW92ZWQgaW4gdjEuNy4wLnwKLXxgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwg
bGFzdClgfENvcGllcyB0aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIFtgZmlyc3RgLCBgbGFz
dGApIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3Vt
ZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBpdGVyYXRvci4gVGhlIGFj
dGlvbiBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNvdXJj
ZSByYW5nZS58Ci18YFNldEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1ZSlgfFNldCBgZXJybm9g
IHRvIGBlcnJvcmAgYW5kIHJldHVybiBgdmFsdWVgLnwKLXxgVGhyb3coZXhjZXB0aW9uKWAgICAg
ICAgIHxUaHJvd3MgdGhlIGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2FuIGJlIGFueSBjb3B5YWJs
ZSB2YWx1ZS4gQXZhaWxhYmxlIHNpbmNlIHYxLjEuMC58Ci0KLSMjIFVzaW5nIGEgRnVuY3Rpb24g
b3IgYSBGdW5jdG9yIGFzIGFuIEFjdGlvbiAjIwotCi18YEludm9rZShmKWB8SW52b2tlIGBmYCB3
aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLCB3aGVyZSBgZmAg
Y2FuIGJlIGEgZ2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0b3IufAotfDotLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXxgSW52b2tlKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0
aGUge21ldGhvZCBvbiB0aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhl
IG1vY2sgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52
b2tlV2l0aG91dEFyZ3MoZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBiZSBhIGdsb2JhbC9zdGF0
aWMgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5vIGFyZ3VtZW50cy4gICAg
ICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mob2JqZWN0X3BvaW50ZXIs
ICZjbGFzczo6bWV0aG9kKWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgd2hpY2gg
dGFrZXMgbm8gYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotfGBJbnZva2VBcmd1bWVudDxOPihhcmcxLCBhcmcyLCAuLi4s
IGFyZ2spYHxJbnZva2UgdGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGggKDAtYmFzZWQpIGFyZ3Vt
ZW50LCB3aGljaCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLCB3aXRoIHRoZSBga2Ag
YXJndW1lbnRzLnwKLQotVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbiBp
cyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUKLW9mIHRoZSBhY3Rpb24uCi0KLVdoZW4gZGVmaW5p
bmcgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBgSW52b2tlKigpYCwgeW91
IGNhbiBkZWNsYXJlIGFueSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51c2VkYDoKLWBgYAotICBk
b3VibGUgRGlzdGFuY2UoVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIHNxcnQo
eCp4ICsgeSp5KTsgfQotICAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKCJIaSIsIF8sIF8p
KS5XaWxsT25jZShJbnZva2UoRGlzdGFuY2UpKTsKLWBgYAotCi1JbiBgSW52b2tlQXJndW1lbnQ8
Tj4oLi4uKWAsIGlmIGFuIGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3NlZCBieSByZWZlcmVuY2Us
IHdyYXAgaXQgaW5zaWRlIGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCi1gYGAKLSAgSW52b2tlQXJn
dW1lbnQ8Mj4oNSwgc3RyaW5nKCJIaSIpLCBCeVJlZihmb28pKQotYGBgCi1jYWxscyB0aGUgbW9j
ayBmdW5jdGlvbidzICMyIGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1YCBhbmQgYHN0cmluZygi
SGkiKWAgYnkgdmFsdWUsIGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCi0KLSMjIERlZmF1bHQgQWN0
aW9uICMjCi0KLXxgRG9EZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFjdGlvbiAoc3BlY2lmaWVk
IGJ5IGBPTl9DQUxMKClgIG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKLXw6LS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLQotKipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwgcmVhc29ucywgYERvRGVm
YXVsdCgpYCBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRlIGFjdGlvbiAtIHRyeWlu
ZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLgotCi0jIyBDb21wb3Np
dGUgQWN0aW9ucyAjIwotCi18YERvQWxsKGExLCBhMiwgLi4uLCBhbilgfERvIGFsbCBhY3Rpb25z
IGBhMWAgdG8gYGFuYCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFuYCBpbiBlYWNoIGludm9j
YXRpb24uIFRoZSBmaXJzdCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3QgcmV0dXJuIHZvaWQuIHwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBJZ25vcmVSZXN1bHQo
YSlgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBpdHMgcmVzdWx0LiBgYWAg
bXVzdCBub3QgcmV0dXJuIHZvaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFdpdGhBcmc8Tj4oYSlgICAgICAgICAgfFBhc3Mg
dGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0
aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXxgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8UGFzcyB0aGUgc2VsZWN0
ZWQgKDAtYmFzZWQpIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24gYGFg
IGFuZCBwZXJmb3JtIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
fGBXaXRob3V0QXJncyhhKWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgd2l0aG91dCBhbnkg
YXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSMjIERlZmluaW5nIEFj
dGlvbnMgIyMKLQotfCBgQUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCArIGFyZzE7IH1gIHwgRGVm
aW5lcyBhbiBhY3Rpb24gYFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5j
dGlvbidzIGFyZ3VtZW50ICMwIGFuZCAjMS4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgQUNUSU9O
X1AoUGx1cywgbikgeyByZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24gYFBs
dXMobilgIHRvIHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQg
IzAgYW5kIGBuYC4gfAotfCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgc3RhdGVtZW50
czsgfWAgfCBEZWZpbmVzIGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZvbyhwMSwgLi4uLCBwaylg
IHRvIGV4ZWN1dGUgdGhlIGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8Ci0KLVRoZSBgQUNUSU9OKmAg
bWFjcm9zIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotCi0jIENh
cmRpbmFsaXRpZXMgIwotCi1UaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMoKWAgdG8gc3BlY2lmeSBo
b3cgbWFueSB0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQ6Ci0KLXxgQW55TnVt
YmVyKClgfFRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMufAot
fDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Ci18YEF0TGVhc3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBsZWFzdCBgbmAg
dGltZXMuICAgICAgIHwKLXxgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0IG1v
c3QgYG5gIHRpbWVzLiAgICAgICAgfAotfGBCZXR3ZWVuKG0sIG4pYHxUaGUgY2FsbCBpcyBleHBl
Y3RlZCBiZXR3ZWVuIGBtYCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVzLnwKLXxgRXhhY3RseShu
KSBvciBuYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0aW1lcy4gSW4gcGFydGlj
dWxhciwgdGhlIGNhbGwgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBuYCBpcyAwLnwKLQotIyBF
eHBlY3RhdGlvbiBPcmRlciAjCi0KLUJ5IGRlZmF1bHQsIHRoZSBleHBlY3RhdGlvbnMgY2FuIGJl
IG1hdGNoZWQgaW4gX2FueV8gb3JkZXIuICBJZiBzb21lCi1vciBhbGwgZXhwZWN0YXRpb25zIG11
c3QgYmUgbWF0Y2hlZCBpbiBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUgdHdvCi13YXlzIHRvIHNw
ZWNpZnkgaXQuICBUaGV5IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVuZGVudGx5IG9yCi10b2dl
dGhlci4KLQotIyMgVGhlIEFmdGVyIENsYXVzZSAjIwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
RXhwZWN0YXRpb247Ci0uLi4KLUV4cGVjdGF0aW9uIGluaXRfeCA9IEVYUEVDVF9DQUxMKGZvbywg
SW5pdFgoKSk7Ci1FeHBlY3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRZKCkp
OwotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoaW5pdF94LCBpbml0X3kpOwot
YGBgCi1zYXlzIHRoYXQgYEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgYm90aCBgSW5p
dFgoKWAgYW5kCi1gSW5pdFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KLQotSWYgeW91IGRvbid0IGtu
b3cgaG93IG1hbnkgcHJlLXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24gaGFzIHdoZW4geW91Ci13
cml0ZSBpdCwgeW91IGNhbiB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0byBjb2xsZWN0IHRoZW06
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKLS4uLgotRXhwZWN0YXRp
b25TZXQgYWxsX2luaXRzOwotZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50X2NvdW50OyBpKysp
IHsKLSAgYWxsX2luaXRzICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVsZW1lbnQoaSkpOwotfQot
RVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoYWxsX2luaXRzKTsKLWBgYAotc2F5
cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFsbCBlbGVtZW50cyBoYXZl
IGJlZW4KLWluaXRpYWxpemVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBlbGVtZW50
cyBnZXQgaW5pdGlhbGl6ZWQKLWJlZm9yZSB0aGUgb3RoZXJzKS4KLQotTW9kaWZ5aW5nIGFuIGBF
eHBlY3RhdGlvblNldGAgYWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRlcigpYCBkb2Vzbid0Ci1h
ZmZlY3QgdGhlIG1lYW5pbmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCi0KLSMjIFNlcXVlbmNlcyAjIwot
Ci1XaGVuIHlvdSBoYXZlIGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFsIGV4cGVjdGF0aW9ucywg
aXQncyBlYXNpZXIgdG8KLXNwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoqc2VxdWVuY2VzKiosIHdo
aWNoIGRvbid0IHJlcXVpcmUgeW91IHRvIGdpdmVuCi1lYWNoIGV4cGVjdGF0aW9uIGluIHRoZSBj
aGFpbiBhIGRpZmZlcmVudCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJyPgotY2FsbHM8L2k+IGlu
IHRoZSBzYW1lIHNlcXVlbmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi1zcGVj
aWZpZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLVNlcXVlbmNlIHMxLCBz
MjsKLS4uLgotRVhQRUNUX0NBTEwoZm9vLCBSZXNldCgpKQotICAgIC5JblNlcXVlbmNlKHMxLCBz
MikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLUVYUEVDVF9DQUxMKGZvbywgR2V0U2l6
ZSgpKQotICAgIC5JblNlcXVlbmNlKHMxKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotRVhQ
RUNUX0NBTEwoZm9vLCBEZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkKLSAgICAuSW5TZXF1ZW5j
ZShzMikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKLWBgYAotc2F5cyB0aGF0IGBS
ZXNldCgpYCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRTaXplKClgIF9hbmRfCi1g
RGVzY3JpYmUoKWAsIGFuZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIgaW4gYW55IG9yZGVyLgot
Ci1UbyBwdXQgbWFueSBleHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBjb252ZW5pZW50bHk6Ci1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXsKLSAgSW5TZXF1ZW5jZSBkdW1teTsK
LQotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICAuLi4K
LSAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKLX0KLWBgYAotc2F5cyB0aGF0IGFsbCBleHBlY3RlZCBj
YWxscyBpbiB0aGUgc2NvcGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGluCi1zdHJpY3Qgb3JkZXIu
IFRoZSBuYW1lIGBkdW1teWAgaXMgaXJyZWxldmFudC4pCi0KLSMgVmVyaWZ5aW5nIGFuZCBSZXNl
dHRpbmcgYSBNb2NrICMKLQotR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0aW9u
cyBvbiBhIG1vY2sgb2JqZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwgb3IgeW91IGNhbiBkbyBp
dCBlYXJsaWVyOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0uLi4KLS8vIFZlcmlmaWVz
IGFuZCByZW1vdmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7Ci0vLyByZXR1cm5zIHRy
dWUgaWZmIHN1Y2Nlc3NmdWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9j
a19vYmopOwotLi4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9u
IG1vY2tfb2JqOwotLy8gYWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc2V0IGJ5IE9O
X0NBTEwoKTsKLS8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLU1vY2s6OlZlcmlmeUFu
ZENsZWFyKCZtb2NrX29iaik7Ci1gYGAKLQotWW91IGNhbiBhbHNvIHRlbGwgR29vZ2xlIE1vY2sg
dGhhdCBhIG1vY2sgb2JqZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNuJ3QKLW5lZWQgdG8gYmUg
dmVyaWZpZWQ6Ci1gYGAKLU1vY2s6OkFsbG93TGVhaygmbW9ja19vYmopOwotYGBgCi0KLSMgTW9j
ayBDbGFzc2VzICMKLQotR29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZlbmllbnQgbW9jayBjbGFz
cyB0ZW1wbGF0ZQotYGBgCi1jbGFzcyBNb2NrRnVuY3Rpb248UihBMSwgLi4uLCBBbik+IHsKLSBw
dWJsaWM6Ci0gIE1PQ0tfTUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFuKSk7Ci19OwotYGBgCi1T
ZWUgdGhpcyBbcmVjaXBlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtp
L1YxXzdfQ29va0Jvb2sjVXNpbmdfQ2hlY2tfUG9pbnRzKSBmb3Igb25lIGFwcGxpY2F0aW9uIG9m
IGl0LgotCi0jIEZsYWdzICMKLQotfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAgfCBE
b24ndCByZXBvcnQgbGVha2VkIG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAotfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAotfCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBTZXRz
IHRoZSBkZWZhdWx0IHZlcmJvc2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBlcnJv
cmApIG9mIEdvb2dsZSBNb2NrIG1lc3NhZ2VzLiB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0Nvb2tCb29rLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svZG9jcy92MV83L0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0MTlhMDAxMDcxMjVlZmQ5MGZmZDg2ODQwMThjZGMwZjdjNmZmMDNlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9D
b29rQm9vay5tZAorKysgL2Rldi9udWxsCkBAIC0xLDM0MzIgKzAsMCBAQAotCi0KLVlvdSBjYW4g
ZmluZCByZWNpcGVzIGZvciB1c2luZyBHb29nbGUgTW9jayBoZXJlLiBJZiB5b3UgaGF2ZW4ndCB5
ZXQsCi1wbGVhc2UgcmVhZCB0aGUgW0ZvckR1bW1pZXNdKFYxXzdfRm9yRHVtbWllcy5tZCkgZG9j
dW1lbnQgZmlyc3QgdG8gbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi10aGUgYmFzaWNzLgotCi0q
Kk5vdGU6KiogR29vZ2xlIE1vY2sgbGl2ZXMgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lIHNwYWNlLiBG
b3IKLXJlYWRhYmlsaXR5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB3cml0ZSBgdXNpbmcgOjp0ZXN0
aW5nOjpGb287YCBvbmNlIGluCi15b3VyIGZpbGUgYmVmb3JlIHVzaW5nIHRoZSBuYW1lIGBGb29g
IGRlZmluZWQgYnkgR29vZ2xlIE1vY2suIFdlIG9taXQKLXN1Y2ggYHVzaW5nYCBzdGF0ZW1lbnRz
IGluIHRoaXMgcGFnZSBmb3IgYnJldml0eSwgYnV0IHlvdSBzaG91bGQgZG8gaXQKLWluIHlvdXIg
b3duIGNvZGUuCi0KLSMgQ3JlYXRpbmcgTW9jayBDbGFzc2VzICMKLQotIyMgTW9ja2luZyBQcml2
YXRlIG9yIFByb3RlY3RlZCBNZXRob2RzICMjCi0KLVlvdSBtdXN0IGFsd2F5cyBwdXQgYSBtb2Nr
IG1ldGhvZCBkZWZpbml0aW9uIChgTU9DS19NRVRIT0QqYCkgaW4gYQotYHB1YmxpYzpgIHNlY3Rp
b24gb2YgdGhlIG1vY2sgY2xhc3MsIHJlZ2FyZGxlc3Mgb2YgdGhlIG1ldGhvZCBiZWluZwotbW9j
a2VkIGJlaW5nIGBwdWJsaWNgLCBgcHJvdGVjdGVkYCwgb3IgYHByaXZhdGVgIGluIHRoZSBiYXNl
IGNsYXNzLgotVGhpcyBhbGxvd3MgYE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgIHRvIHJlZmVy
ZW5jZSB0aGUgbW9jayBmdW5jdGlvbgotZnJvbSBvdXRzaWRlIG9mIHRoZSBtb2NrIGNsYXNzLiAg
KFllcywgQysrIGFsbG93cyBhIHN1YmNsYXNzIHRvIGNoYW5nZQotdGhlIGFjY2VzcyBsZXZlbCBv
ZiBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gdGhlIGJhc2UgY2xhc3MuKSAgRXhhbXBsZToKLQotYGBg
Ci1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBUcmFuc2Zvcm0o
R2FkZ2V0KiBnKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBSZXN1bWUoKTsK
LQotIHByaXZhdGU6Ci0gIHZpcnR1YWwgaW50IEdldFRpbWVPdXQoKTsKLX07Ci0KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoVHJh
bnNmb3JtLCBib29sKEdhZGdldCogZykpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBiZSBp
biB0aGUgcHVibGljIHNlY3Rpb24sIGV2ZW4gdGhvdWdoIHRoZQotICAvLyBtZXRob2RzIGFyZSBw
cm90ZWN0ZWQgb3IgcHJpdmF0ZSBpbiB0aGUgYmFzZSBjbGFzcy4KLSAgTU9DS19NRVRIT0QwKFJl
c3VtZSwgdm9pZCgpKTsKLSAgTU9DS19NRVRIT0QwKEdldFRpbWVPdXQsIGludCgpKTsKLX07Ci1g
YGAKLQotIyMgTW9ja2luZyBPdmVybG9hZGVkIE1ldGhvZHMgIyMKLQotWW91IGNhbiBtb2NrIG92
ZXJsb2FkZWQgZnVuY3Rpb25zIGFzIHVzdWFsLiBObyBzcGVjaWFsIGF0dGVudGlvbiBpcyByZXF1
aXJlZDoKLQotYGBgCi1jbGFzcyBGb28gewotICAuLi4KLQotICAvLyBNdXN0IGJlIHZpcnR1YWwg
YXMgd2UnbGwgaW5oZXJpdCBmcm9tIEZvby4KLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgLy8gT3Zl
cmxvYWRlZCBvbiB0aGUgdHlwZXMgYW5kL29yIG51bWJlcnMgb2YgYXJndW1lbnRzLgotICB2aXJ0
dWFsIGludCBBZGQoRWxlbWVudCB4KTsKLSAgdmlydHVhbCBpbnQgQWRkKGludCB0aW1lcywgRWxl
bWVudCB4KTsKLQotICAvLyBPdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2Jq
ZWN0LgotICB2aXJ0dWFsIEJhciYgR2V0QmFyKCk7Ci0gIHZpcnR1YWwgY29uc3QgQmFyJiBHZXRC
YXIoKSBjb25zdDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0g
IE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgTU9DS19NRVRIT0QyKEFkZCwg
aW50KGludCB0aW1lcywgRWxlbWVudCB4KTsKLQotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXIm
KCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsKLWBg
YAotCi0qKk5vdGU6KiogaWYgeW91IGRvbid0IG1vY2sgYWxsIHZlcnNpb25zIG9mIHRoZSBvdmVy
bG9hZGVkIG1ldGhvZCwgdGhlCi1jb21waWxlciB3aWxsIGdpdmUgeW91IGEgd2FybmluZyBhYm91
dCBzb21lIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3MKLWJlaW5nIGhpZGRlbi4gVG8gZml4IHRo
YXQsIHVzZSBgdXNpbmdgIHRvIGJyaW5nIHRoZW0gaW4gc2NvcGU6Ci0KLWBgYAotY2xhc3MgTW9j
a0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgdXNpbmcgRm9vOjpBZGQ7Ci0gIE1PQ0tfTUVU
SE9EMShBZGQsIGludChFbGVtZW50IHgpKTsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtb2NrIGlu
dCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOwotICAuLi4KLX07Ci1gYGAKLQotIyMgTW9ja2lu
ZyBDbGFzcyBUZW1wbGF0ZXMgIyMKLQotVG8gbW9jayBhIGNsYXNzIHRlbXBsYXRlLCBhcHBlbmQg
YF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtPgotY2xhc3MgU3RhY2tJbnRlcmZhY2UgewotICAuLi4KLSAgLy8gTXVzdCBiZSB2aXJ0dWFs
IGFzIHdlJ2xsIGluaGVyaXQgZnJvbSBTdGFja0ludGVyZmFjZS4KLSAgdmlydHVhbCB+U3RhY2tJ
bnRlcmZhY2UoKTsKLQotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0
dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7
Ci0gIC4uLgotICBNT0NLX0NPTlNUX01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7Ci0gIE1PQ0tf
TUVUSE9EMV9UKFB1c2gsIHZvaWQoY29uc3QgRWxlbSYgeCkpOwotfTsKLWBgYAotCi0jIyBNb2Nr
aW5nIE5vbnZpcnR1YWwgTWV0aG9kcyAjIwotCi1Hb29nbGUgTW9jayBjYW4gbW9jayBub24tdmly
dHVhbCBmdW5jdGlvbnMgdG8gYmUgdXNlZCBpbiB3aGF0IHdlIGNhbGwgX2hpLXBlcmYKLWRlcGVu
ZGVuY3kgaW5qZWN0aW9uXy4KLQotSW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIHNoYXJpbmcgYSBj
b21tb24gYmFzZSBjbGFzcyB3aXRoIHRoZSByZWFsCi1jbGFzcywgeW91ciBtb2NrIGNsYXNzIHdp
bGwgYmUgX3VucmVsYXRlZF8gdG8gdGhlIHJlYWwgY2xhc3MsIGJ1dAotY29udGFpbiBtZXRob2Rz
IHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlcy4gIFRoZSBzeW50YXggZm9yIG1vY2tpbmcKLW5vbi12
aXJ0dWFsIG1ldGhvZHMgaXMgdGhlIF9zYW1lXyBhcyBtb2NraW5nIHZpcnR1YWwgbWV0aG9kczoK
LQotYGBgCi0vLyBBIHNpbXBsZSBwYWNrZXQgc3RyZWFtIGNsYXNzLiAgTm9uZSBvZiBpdHMgbWVt
YmVycyBpcyB2aXJ0dWFsLgotY2xhc3MgQ29uY3JldGVQYWNrZXRTdHJlYW0gewotIHB1YmxpYzoK
LSAgdm9pZCBBcHBlbmRQYWNrZXQoUGFja2V0KiBuZXdfcGFja2V0KTsKLSAgY29uc3QgUGFja2V0
KiBHZXRQYWNrZXQoc2l6ZV90IHBhY2tldF9udW1iZXIpIGNvbnN0OwotICBzaXplX3QgTnVtYmVy
T2ZQYWNrZXRzKCkgY29uc3Q7Ci0gIC4uLgotfTsKLQotLy8gQSBtb2NrIHBhY2tldCBzdHJlYW0g
Y2xhc3MuICBJdCBpbmhlcml0cyBmcm9tIG5vIG90aGVyLCBidXQgZGVmaW5lcwotLy8gR2V0UGFj
a2V0KCkgYW5kIE51bWJlck9mUGFja2V0cygpLgotY2xhc3MgTW9ja1BhY2tldFN0cmVhbSB7Ci0g
cHVibGljOgotICBNT0NLX0NPTlNUX01FVEhPRDEoR2V0UGFja2V0LCBjb25zdCBQYWNrZXQqKHNp
emVfdCBwYWNrZXRfbnVtYmVyKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChOdW1iZXJPZlBhY2tl
dHMsIHNpemVfdCgpKTsKLSAgLi4uCi19OwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgbW9jayBjbGFz
cyBkb2Vzbid0IGRlZmluZSBgQXBwZW5kUGFja2V0KClgLCB1bmxpa2UgdGhlCi1yZWFsIGNsYXNz
LiBUaGF0J3MgZmluZSBhcyBsb25nIGFzIHRoZSB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjYWxsIGl0
LgotCi1OZXh0LCB5b3UgbmVlZCBhIHdheSB0byBzYXkgdGhhdCB5b3Ugd2FudCB0byB1c2UKLWBD
b25jcmV0ZVBhY2tldFN0cmVhbWAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlIGBNb2NrUGFj
a2V0U3RyZWFtYAotaW4gdGVzdHMuICBTaW5jZSB0aGUgZnVuY3Rpb25zIGFyZSBub3QgdmlydHVh
bCBhbmQgdGhlIHR3byBjbGFzc2VzIGFyZQotdW5yZWxhdGVkLCB5b3UgbXVzdCBzcGVjaWZ5IHlv
dXIgY2hvaWNlIGF0IF9jb21waWxlIHRpbWVfIChhcyBvcHBvc2VkCi10byBydW4gdGltZSkuCi0K
LU9uZSB3YXkgdG8gZG8gaXQgaXMgdG8gdGVtcGxhdGl6ZSB5b3VyIGNvZGUgdGhhdCBuZWVkcyB0
byB1c2UgYSBwYWNrZXQKLXN0cmVhbS4gIE1vcmUgc3BlY2lmaWNhbGx5LCB5b3Ugd2lsbCBnaXZl
IHlvdXIgY29kZSBhIHRlbXBsYXRlIHR5cGUKLWFyZ3VtZW50IGZvciB0aGUgdHlwZSBvZiB0aGUg
cGFja2V0IHN0cmVhbS4gIEluIHByb2R1Y3Rpb24sIHlvdSB3aWxsCi1pbnN0YW50aWF0ZSB5b3Vy
IHRlbXBsYXRlIHdpdGggYENvbmNyZXRlUGFja2V0U3RyZWFtYCBhcyB0aGUgdHlwZQotYXJndW1l
bnQuICBJbiB0ZXN0cywgeW91IHdpbGwgaW5zdGFudGlhdGUgdGhlIHNhbWUgdGVtcGxhdGUgd2l0
aAotYE1vY2tQYWNrZXRTdHJlYW1gLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd3JpdGU6Ci0KLWBg
YAotdGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0cmVhbT4KLXZvaWQgQ3JlYXRlQ29ubmVjdGlvbihQ
YWNrZXRTdHJlYW0qIHN0cmVhbSkgeyAuLi4gfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0U3Ry
ZWFtPgotY2xhc3MgUGFja2V0UmVhZGVyIHsKLSBwdWJsaWM6Ci0gIHZvaWQgUmVhZFBhY2tldHMo
UGFja2V0U3RyZWFtKiBzdHJlYW0sIHNpemVfdCBwYWNrZXRfbnVtKTsKLX07Ci1gYGAKLQotVGhl
biB5b3UgY2FuIHVzZSBgQ3JlYXRlQ29ubmVjdGlvbjxDb25jcmV0ZVBhY2tldFN0cmVhbT4oKWAg
YW5kCi1gUGFja2V0UmVhZGVyPENvbmNyZXRlUGFja2V0U3RyZWFtPmAgaW4gcHJvZHVjdGlvbiBj
b2RlLCBhbmQgdXNlCi1gQ3JlYXRlQ29ubmVjdGlvbjxNb2NrUGFja2V0U3RyZWFtPigpYCBhbmQK
LWBQYWNrZXRSZWFkZXI8TW9ja1BhY2tldFN0cmVhbT5gIGluIHRlc3RzLgotCi1gYGAKLSAgTW9j
a1BhY2tldFN0cmVhbSBtb2NrX3N0cmVhbTsKLSAgRVhQRUNUX0NBTEwobW9ja19zdHJlYW0sIC4u
LikuLi47Ci0gIC4uIHNldCBtb3JlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX3N0cmVhbSAuLi4KLSAg
UGFja2V0UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+IHJlYWRlcigmbW9ja19zdHJlYW0pOwotICAu
Li4gZXhlcmNpc2UgcmVhZGVyIC4uLgotYGBgCi0KLSMjIE1vY2tpbmcgRnJlZSBGdW5jdGlvbnMg
IyMKLQotSXQncyBwb3NzaWJsZSB0byB1c2UgR29vZ2xlIE1vY2sgdG8gbW9jayBhIGZyZWUgZnVu
Y3Rpb24gKGkuZS4gYQotQy1zdHlsZSBmdW5jdGlvbiBvciBhIHN0YXRpYyBtZXRob2QpLiAgWW91
IGp1c3QgbmVlZCB0byByZXdyaXRlIHlvdXIKLWNvZGUgdG8gdXNlIGFuIGludGVyZmFjZSAoYWJz
dHJhY3QgY2xhc3MpLgotCi1JbnN0ZWFkIG9mIGNhbGxpbmcgYSBmcmVlIGZ1bmN0aW9uIChzYXks
IGBPcGVuRmlsZWApIGRpcmVjdGx5LAotaW50cm9kdWNlIGFuIGludGVyZmFjZSBmb3IgaXQgYW5k
IGhhdmUgYSBjb25jcmV0ZSBzdWJjbGFzcyB0aGF0IGNhbGxzCi10aGUgZnJlZSBmdW5jdGlvbjoK
LQotYGBgCi1jbGFzcyBGaWxlSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFs
IGJvb2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSA9IDA7Ci19Owot
Ci1jbGFzcyBGaWxlIDogcHVibGljIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0g
IHZpcnR1YWwgYm9vbCBPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsK
LSAgICByZXR1cm4gT3BlbkZpbGUocGF0aCwgbW9kZSk7Ci0gIH0KLX07Ci1gYGAKLQotWW91ciBj
b2RlIHNob3VsZCB0YWxrIHRvIGBGaWxlSW50ZXJmYWNlYCB0byBvcGVuIGEgZmlsZS4gIE5vdyBp
dCdzCi1lYXN5IHRvIG1vY2sgb3V0IHRoZSBmdW5jdGlvbi4KLQotVGhpcyBtYXkgc2VlbSBtdWNo
IGhhc3NsZSwgYnV0IGluIHByYWN0aWNlIHlvdSBvZnRlbiBoYXZlIG11bHRpcGxlCi1yZWxhdGVk
IGZ1bmN0aW9ucyB0aGF0IHlvdSBjYW4gcHV0IGluIHRoZSBzYW1lIGludGVyZmFjZSwgc28gdGhl
Ci1wZXItZnVuY3Rpb24gc3ludGFjdGljIG92ZXJoZWFkIHdpbGwgYmUgbXVjaCBsb3dlci4KLQot
SWYgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG92ZXJoZWFkIGluY3Vy
cmVkIGJ5Ci12aXJ0dWFsIGZ1bmN0aW9ucywgYW5kIHByb2ZpbGluZyBjb25maXJtcyB5b3VyIGNv
bmNlcm4sIHlvdSBjYW4KLWNvbWJpbmUgdGhpcyB3aXRoIHRoZSByZWNpcGUgZm9yIFttb2NraW5n
IG5vbi12aXJ0dWFsIG1ldGhvZHNdKCNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcy5tZCkuCi0K
LSMjIFRoZSBOaWNlLCB0aGUgU3RyaWN0LCBhbmQgdGhlIE5hZ2d5ICMjCi0KLUlmIGEgbW9jayBt
ZXRob2QgaGFzIG5vIGBFWFBFQ1RfQ0FMTGAgc3BlYyBidXQgaXMgY2FsbGVkLCBHb29nbGUgTW9j
awotd2lsbCBwcmludCBhIHdhcm5pbmcgYWJvdXQgdGhlICJ1bmludGVyZXN0aW5nIGNhbGwiLiBU
aGUgcmF0aW9uYWxlIGlzOgotCi0gICogTmV3IG1ldGhvZHMgbWF5IGJlIGFkZGVkIHRvIGFuIGlu
dGVyZmFjZSBhZnRlciBhIHRlc3QgaXMgd3JpdHRlbi4gV2Ugc2hvdWxkbid0IGZhaWwgYSB0ZXN0
IGp1c3QgYmVjYXVzZSBhIG1ldGhvZCBpdCBkb2Vzbid0IGtub3cgYWJvdXQgaXMgY2FsbGVkLgot
ICAqIEhvd2V2ZXIsIHRoaXMgbWF5IGFsc28gbWVhbiB0aGVyZSdzIGEgYnVnIGluIHRoZSB0ZXN0
LCBzbyBHb29nbGUgTW9jayBzaG91bGRuJ3QgYmUgc2lsZW50IGVpdGhlci4gSWYgdGhlIHVzZXIg
YmVsaWV2ZXMgdGhlc2UgY2FsbHMgYXJlIGhhcm1sZXNzLCBoZSBjYW4gYWRkIGFuIGBFWFBFQ1Rf
Q0FMTCgpYCB0byBzdXBwcmVzcyB0aGUgd2FybmluZy4KLQotSG93ZXZlciwgc29tZXRpbWVzIHlv
dSBtYXkgd2FudCB0byBzdXBwcmVzcyBhbGwgInVuaW50ZXJlc3RpbmcgY2FsbCIKLXdhcm5pbmdz
LCB3aGlsZSBzb21ldGltZXMgeW91IG1heSB3YW50IHRoZSBvcHBvc2l0ZSwgaS5lLiB0byB0cmVh
dCBhbGwKLW9mIHRoZW0gYXMgZXJyb3JzLiBHb29nbGUgTW9jayBsZXRzIHlvdSBtYWtlIHRoZSBk
ZWNpc2lvbiBvbiBhCi1wZXItbW9jay1vYmplY3QgYmFzaXMuCi0KLVN1cHBvc2UgeW91ciB0ZXN0
IHVzZXMgYSBtb2NrIGNsYXNzIGBNb2NrRm9vYDoKLQotYGBgCi1URVNUKC4uLikgewotICBNb2Nr
Rm9vIG1vY2tfZm9vOwotICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOwotICAuLi4g
Y29kZSB0aGF0IHVzZXMgbW9ja19mb28gLi4uCi19Ci1gYGAKLQotSWYgYSBtZXRob2Qgb2YgYG1v
Y2tfZm9vYCBvdGhlciB0aGFuIGBEb1RoaXMoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGJlCi1yZXBv
cnRlZCBieSBHb29nbGUgTW9jayBhcyBhIHdhcm5pbmcuIEhvd2V2ZXIsIGlmIHlvdSByZXdyaXRl
IHlvdXIKLXRlc3QgdG8gdXNlIGBOaWNlTW9jazxNb2NrRm9vPmAgaW5zdGVhZCwgdGhlIHdhcm5p
bmcgd2lsbCBiZSBnb25lLAotcmVzdWx0aW5nIGluIGEgY2xlYW5lciB0ZXN0IG91dHB1dDoKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9j
azxNb2NrRm9vPiBtb2NrX2ZvbzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsK
LSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLWBOaWNlTW9jazxN
b2NrRm9vPmAgaXMgYSBzdWJjbGFzcyBvZiBgTW9ja0Zvb2AsIHNvIGl0IGNhbiBiZSB1c2VkCi13
aGVyZXZlciBgTW9ja0Zvb2AgaXMgYWNjZXB0ZWQuCi0KLUl0IGFsc28gd29ya3MgaWYgYE1vY2tG
b29gJ3MgY29uc3RydWN0b3IgdGFrZXMgc29tZSBhcmd1bWVudHMsIGFzCi1gTmljZU1vY2s8TW9j
a0Zvbz5gICJpbmhlcml0cyIgYE1vY2tGb29gJ3MgY29uc3RydWN0b3JzOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6TmljZU1vY2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+
IG1vY2tfZm9vKDUsICJoaSIpOyAgLy8gQ2FsbHMgTW9ja0Zvbyg1LCAiaGkiKS4KLSAgRVhQRUNU
X0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9v
IC4uLgotfQotYGBgCi0KLVRoZSB1c2FnZSBvZiBgU3RyaWN0TW9ja2AgaXMgc2ltaWxhciwgZXhj
ZXB0IHRoYXQgaXQgbWFrZXMgYWxsCi11bmludGVyZXN0aW5nIGNhbGxzIGZhaWx1cmVzOgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6U3RyaWN0TW9jazsKLQotVEVTVCguLi4pIHsKLSAgU3RyaWN0
TW9jazxNb2NrRm9vPiBtb2NrX2ZvbzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygp
KTsKLSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgotCi0gIC8vIFRoZSB0ZXN0IHdp
bGwgZmFpbCBpZiBhIG1ldGhvZCBvZiBtb2NrX2ZvbyBvdGhlciB0aGFuIERvVGhpcygpCi0gIC8v
IGlzIGNhbGxlZC4KLX0KLWBgYAotCi1UaGVyZSBhcmUgc29tZSBjYXZlYXRzIHRob3VnaCAoSSBk
b24ndCBsaWtlIHRoZW0ganVzdCBhcyBtdWNoIGFzIHRoZQotbmV4dCBndXksIGJ1dCBzYWRseSB0
aGV5IGFyZSBzaWRlIGVmZmVjdHMgb2YgQysrJ3MgbGltaXRhdGlvbnMpOgotCi0gIDEuIGBOaWNl
TW9jazxNb2NrRm9vPmAgYW5kIGBTdHJpY3RNb2NrPE1vY2tGb28+YCBvbmx5IHdvcmsgZm9yIG1v
Y2sgbWV0aG9kcyBkZWZpbmVkIHVzaW5nIHRoZSBgTU9DS19NRVRIT0QqYCBmYW1pbHkgb2YgbWFj
cm9zICoqZGlyZWN0bHkqKiBpbiB0aGUgYE1vY2tGb29gIGNsYXNzLiBJZiBhIG1vY2sgbWV0aG9k
IGlzIGRlZmluZWQgaW4gYSAqKmJhc2UgY2xhc3MqKiBvZiBgTW9ja0Zvb2AsIHRoZSAibmljZSIg
b3IgInN0cmljdCIgbW9kaWZpZXIgbWF5IG5vdCBhZmZlY3QgaXQsIGRlcGVuZGluZyBvbiB0aGUg
Y29tcGlsZXIuIEluIHBhcnRpY3VsYXIsIG5lc3RpbmcgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1v
Y2tgIChlLmcuIGBOaWNlTW9jazxTdHJpY3RNb2NrPE1vY2tGb28+ID5gKSBpcyAqKm5vdCoqIHN1
cHBvcnRlZC4KLSAgMS4gVGhlIGNvbnN0cnVjdG9ycyBvZiB0aGUgYmFzZSBtb2NrIChgTW9ja0Zv
b2ApIGNhbm5vdCBoYXZlIGFyZ3VtZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwg
d2hpY2ggaGFwcGVucyB0byBiZSBiYW5uZWQgYnkgdGhlIFtHb29nbGUgQysrIHN0eWxlIGd1aWRl
XShodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1
aWRlLnhtbCkuCi0gIDEuIER1cmluZyB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBvZiBg
TW9ja0Zvb2AsIHRoZSBtb2NrIG9iamVjdCBpcyBfbm90XyBuaWNlIG9yIHN0cmljdC4gIFRoaXMg
bWF5IGNhdXNlIHN1cnByaXNlcyBpZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBjYWxs
cyBhIG1vY2sgbWV0aG9kIG9uIGB0aGlzYCBvYmplY3QuIChUaGlzIGJlaGF2aW9yLCBob3dldmVy
LCBpcyBjb25zaXN0ZW50IHdpdGggQysrJ3MgZ2VuZXJhbCBydWxlOiBpZiBhIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IgY2FsbHMgYSB2aXJ0dWFsIG1ldGhvZCBvZiBgdGhpc2Agb2JqZWN0LCB0
aGF0IG1ldGhvZCBpcyB0cmVhdGVkIGFzIG5vbi12aXJ0dWFsLiAgSW4gb3RoZXIgd29yZHMsIHRv
IHRoZSBiYXNlIGNsYXNzJ3MgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgYHRoaXNgIG9iamVj
dCBiZWhhdmVzIGxpa2UgYW4gaW5zdGFuY2Ugb2YgdGhlIGJhc2UgY2xhc3MsIG5vdCB0aGUgZGVy
aXZlZCBjbGFzcy4gIFRoaXMgcnVsZSBpcyByZXF1aXJlZCBmb3Igc2FmZXR5LiAgT3RoZXJ3aXNl
IGEgYmFzZSBjb25zdHJ1Y3RvciBtYXkgdXNlIG1lbWJlcnMgb2YgYSBkZXJpdmVkIGNsYXNzIGJl
Zm9yZSB0aGV5IGFyZSBpbml0aWFsaXplZCwgb3IgYSBiYXNlIGRlc3RydWN0b3IgbWF5IHVzZSBt
ZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBhZnRlciB0aGV5IGhhdmUgYmVlbiBkZXN0cm95ZWQu
KQotCi1GaW5hbGx5LCB5b3Ugc2hvdWxkIGJlICoqdmVyeSBjYXV0aW91cyoqIGFib3V0IHdoZW4g
dG8gdXNlIG5hZ2d5IG9yIHN0cmljdCBtb2NrcywgYXMgdGhleSB0ZW5kIHRvIG1ha2UgdGVzdHMg
bW9yZSBicml0dGxlIGFuZCBoYXJkZXIgdG8gbWFpbnRhaW4uIFdoZW4geW91IHJlZmFjdG9yIHlv
dXIgY29kZSB3aXRob3V0IGNoYW5naW5nIGl0cyBleHRlcm5hbGx5IHZpc2libGUgYmVoYXZpb3Is
IGlkZWFsbHkgeW91IHNob3VsZCd0IG5lZWQgdG8gdXBkYXRlIGFueSB0ZXN0cy4gSWYgeW91ciBj
b2RlIGludGVyYWN0cyB3aXRoIGEgbmFnZ3kgbW9jaywgaG93ZXZlciwgeW91IG1heSBzdGFydCB0
byBnZXQgc3BhbW1lZCB3aXRoIHdhcm5pbmdzIGFzIHRoZSByZXN1bHQgb2YgeW91ciBjaGFuZ2Uu
IFdvcnNlLCBpZiB5b3VyIGNvZGUgaW50ZXJhY3RzIHdpdGggYSBzdHJpY3QgbW9jaywgeW91ciB0
ZXN0cyBtYXkgc3RhcnQgdG8gZmFpbCBhbmQgeW91J2xsIGJlIGZvcmNlZCB0byBmaXggdGhlbS4g
T3VyIGdlbmVyYWwgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIG5pY2UgbW9ja3MgKG5vdCB5ZXQg
dGhlIGRlZmF1bHQpIG1vc3Qgb2YgdGhlIHRpbWUsIHVzZSBuYWdneSBtb2NrcyAodGhlIGN1cnJl
bnQgZGVmYXVsdCkgd2hlbiBkZXZlbG9waW5nIG9yIGRlYnVnZ2luZyB0ZXN0cywgYW5kIHVzZSBz
dHJpY3QgbW9ja3Mgb25seSBhcyB0aGUgbGFzdCByZXNvcnQuCi0KLSMjIFNpbXBsaWZ5aW5nIHRo
ZSBJbnRlcmZhY2Ugd2l0aG91dCBCcmVha2luZyBFeGlzdGluZyBDb2RlICMjCi0KLVNvbWV0aW1l
cyBhIG1ldGhvZCBoYXMgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgaXMgbW9zdGx5Ci11
bmludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1jbGFzcyBMb2dTaW5rIHsKLSBwdWJs
aWM6Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29u
c3QgY2hhciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YmFzZV9maWxlbmFtZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCB0bSogdG1fdGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwg
c2l6ZV90IG1lc3NhZ2VfbGVuKSA9IDA7Ci19OwotYGBgCi0KLVRoaXMgbWV0aG9kJ3MgYXJndW1l
bnQgbGlzdCBpcyBsZW5ndGh5IGFuZCBoYXJkIHRvIHdvcmsgd2l0aCAobGV0J3MKLXNheSB0aGF0
IHRoZSBgbWVzc2FnZWAgYXJndW1lbnQgaXMgbm90IGV2ZW4gMC10ZXJtaW5hdGVkKS4gSWYgd2Ug
bW9jawotaXQgYXMgaXMsIHVzaW5nIHRoZSBtb2NrIHdpbGwgYmUgYXdrd2FyZC4gSWYsIGhvd2V2
ZXIsIHdlIHRyeSB0bwotc2ltcGxpZnkgdGhpcyBpbnRlcmZhY2UsIHdlJ2xsIG5lZWQgdG8gZml4
IGFsbCBjbGllbnRzIGRlcGVuZGluZyBvbgotaXQsIHdoaWNoIGlzIG9mdGVuIGluZmVhc2libGUu
Ci0KLVRoZSB0cmljayBpcyB0byByZS1kaXNwYXRjaCB0aGUgbWV0aG9kIGluIHRoZSBtb2NrIGNs
YXNzOgotCi1gYGAKLWNsYXNzIFNjb3BlZE1vY2tMb2cgOiBwdWJsaWMgTG9nU2luayB7Ci0gcHVi
bGljOgotICAuLi4KLSAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNv
bnN0IGNoYXIqIGZ1bGxfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGJhc2VfZmlsZW5hbWUsIGludCBsaW5lLCBjb25zdCB0bSogdG1fdGltZSwKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSB7Ci0gICAg
Ly8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG9nIHNldmVyaXR5LCBmdWxsIGZpbGUg
bmFtZSwgYW5kCi0gICAgLy8gbG9nIG1lc3NhZ2UuCi0gICAgTG9nKHNldmVyaXR5LCBmdWxsX2Zp
bGVuYW1lLCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBtZXNzYWdlX2xlbikpOwotICB9Ci0KLSAgLy8g
SW1wbGVtZW50cyB0aGUgbW9jayBtZXRob2Q6Ci0gIC8vCi0gIC8vICAgdm9pZCBMb2coTG9nU2V2
ZXJpdHkgc2V2ZXJpdHksCi0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgs
Ci0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKTsKLSAgTU9DS19NRVRIT0Qz
KExvZywgdm9pZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKSk7Ci19Owot
YGBgCi0KLUJ5IGRlZmluaW5nIGEgbmV3IG1vY2sgbWV0aG9kIHdpdGggYSB0cmltbWVkIGFyZ3Vt
ZW50IGxpc3QsIHdlIG1ha2UKLXRoZSBtb2NrIGNsYXNzIG11Y2ggbW9yZSB1c2VyLWZyaWVuZGx5
LgotCi0jIyBBbHRlcm5hdGl2ZSB0byBNb2NraW5nIENvbmNyZXRlIENsYXNzZXMgIyMKLQotT2Z0
ZW4geW91IG1heSBmaW5kIHlvdXJzZWxmIHVzaW5nIGNsYXNzZXMgdGhhdCBkb24ndCBpbXBsZW1l
bnQKLWludGVyZmFjZXMuIEluIG9yZGVyIHRvIHRlc3QgeW91ciBjb2RlIHRoYXQgdXNlcyBzdWNo
IGEgY2xhc3MgKGxldCdzCi1jYWxsIGl0IGBDb25jcmV0ZWApLCB5b3UgbWF5IGJlIHRlbXB0ZWQg
dG8gbWFrZSB0aGUgbWV0aG9kcyBvZgotYENvbmNyZXRlYCB2aXJ0dWFsIGFuZCB0aGVuIG1vY2sg
aXQuCi0KLVRyeSBub3QgdG8gZG8gdGhhdC4KLQotTWFraW5nIGEgbm9uLXZpcnR1YWwgZnVuY3Rp
b24gdmlydHVhbCBpcyBhIGJpZyBkZWNpc2lvbi4gSXQgY3JlYXRlcyBhbgotZXh0ZW5zaW9uIHBv
aW50IHdoZXJlIHN1YmNsYXNzZXMgY2FuIHR3ZWFrIHlvdXIgY2xhc3MnIGJlaGF2aW9yLiBUaGlz
Ci13ZWFrZW5zIHlvdXIgY29udHJvbCBvbiB0aGUgY2xhc3MgYmVjYXVzZSBub3cgaXQncyBoYXJk
ZXIgdG8gbWFpbnRhaW4KLXRoZSBjbGFzcycgaW52YXJpYW50cy4gWW91IHNob3VsZCBtYWtlIGEg
ZnVuY3Rpb24gdmlydHVhbCBvbmx5IHdoZW4KLXRoZXJlIGlzIGEgdmFsaWQgcmVhc29uIGZvciBh
IHN1YmNsYXNzIHRvIG92ZXJyaWRlIGl0LgotCi1Nb2NraW5nIGNvbmNyZXRlIGNsYXNzZXMgZGly
ZWN0bHkgaXMgcHJvYmxlbWF0aWMgYXMgaXQgY3JlYXRlcyBhIHRpZ2h0Ci1jb3VwbGluZyBiZXR3
ZWVuIHRoZSBjbGFzcyBhbmQgdGhlIHRlc3RzIC0gYW55IHNtYWxsIGNoYW5nZSBpbiB0aGUKLWNs
YXNzIG1heSBpbnZhbGlkYXRlIHlvdXIgdGVzdHMgYW5kIG1ha2UgdGVzdCBtYWludGVuYW5jZSBh
IHBhaW4uCi0KLVRvIGF2b2lkIHN1Y2ggcHJvYmxlbXMsIG1hbnkgcHJvZ3JhbW1lcnMgaGF2ZSBi
ZWVuIHByYWN0aWNpbmcgImNvZGluZwotdG8gaW50ZXJmYWNlcyI6IGluc3RlYWQgb2YgdGFsa2lu
ZyB0byB0aGUgYENvbmNyZXRlYCBjbGFzcywgeW91ciBjb2RlCi13b3VsZCBkZWZpbmUgYW4gaW50
ZXJmYWNlIGFuZCB0YWxrIHRvIGl0LiBUaGVuIHlvdSBpbXBsZW1lbnQgdGhhdAotaW50ZXJmYWNl
IGFzIGFuIGFkYXB0b3Igb24gdG9wIG9mIGBDb25jcmV0ZWAuIEluIHRlc3RzLCB5b3UgY2FuIGVh
c2lseQotbW9jayB0aGF0IGludGVyZmFjZSB0byBvYnNlcnZlIGhvdyB5b3VyIGNvZGUgaXMgZG9p
bmcuCi0KLVRoaXMgdGVjaG5pcXVlIGluY3VycyBzb21lIG92ZXJoZWFkOgotCi0gICogWW91IHBh
eSB0aGUgY29zdCBvZiB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzICh1c3VhbGx5IG5vdCBhIHByb2Js
ZW0pLgotICAqIFRoZXJlIGlzIG1vcmUgYWJzdHJhY3Rpb24gZm9yIHRoZSBwcm9ncmFtbWVycyB0
byBsZWFybi4KLQotSG93ZXZlciwgaXQgY2FuIGFsc28gYnJpbmcgc2lnbmlmaWNhbnQgYmVuZWZp
dHMgaW4gYWRkaXRpb24gdG8gYmV0dGVyCi10ZXN0YWJpbGl0eToKLQotICAqIGBDb25jcmV0ZWAn
cyBBUEkgbWF5IG5vdCBmaXQgeW91ciBwcm9ibGVtIGRvbWFpbiB2ZXJ5IHdlbGwsIGFzIHlvdSBt
YXkgbm90IGJlIHRoZSBvbmx5IGNsaWVudCBpdCB0cmllcyB0byBzZXJ2ZS4gQnkgZGVzaWduaW5n
IHlvdXIgb3duIGludGVyZmFjZSwgeW91IGhhdmUgYSBjaGFuY2UgdG8gdGFpbG9yIGl0IHRvIHlv
dXIgbmVlZCAtIHlvdSBtYXkgYWRkIGhpZ2hlci1sZXZlbCBmdW5jdGlvbmFsaXRpZXMsIHJlbmFt
ZSBzdHVmZiwgZXRjIGluc3RlYWQgb2YganVzdCB0cmltbWluZyB0aGUgY2xhc3MuIFRoaXMgYWxs
b3dzIHlvdSB0byB3cml0ZSB5b3VyIGNvZGUgKHVzZXIgb2YgdGhlIGludGVyZmFjZSkgaW4gYSBt
b3JlIG5hdHVyYWwgd2F5LCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIG1vcmUgcmVhZGFibGUsIG1v
cmUgbWFpbnRhaW5hYmxlLCBhbmQgeW91J2xsIGJlIG1vcmUgcHJvZHVjdGl2ZS4KLSAgKiBJZiBg
Q29uY3JldGVgJ3MgaW1wbGVtZW50YXRpb24gZXZlciBoYXMgdG8gY2hhbmdlLCB5b3UgZG9uJ3Qg
aGF2ZSB0byByZXdyaXRlIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZC4gSW5zdGVhZCwgeW91IGNhbiBh
YnNvcmIgdGhlIGNoYW5nZSBpbiB5b3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Us
IGFuZCB5b3VyIG90aGVyIGNvZGUgYW5kIHRlc3RzIHdpbGwgYmUgaW5zdWxhdGVkIGZyb20gdGhp
cyBjaGFuZ2UuCi0KLVNvbWUgcGVvcGxlIHdvcnJ5IHRoYXQgaWYgZXZlcnlvbmUgaXMgcHJhY3Rp
Y2luZyB0aGlzIHRlY2huaXF1ZSwgdGhleQotd2lsbCBlbmQgdXAgd3JpdGluZyBsb3RzIG9mIHJl
ZHVuZGFudCBjb2RlLiBUaGlzIGNvbmNlcm4gaXMgdG90YWxseQotdW5kZXJzdGFuZGFibGUuIEhv
d2V2ZXIsIHRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgaXQgbWF5IG5vdCBiZSB0aGUKLWNhc2U6
Ci0KLSAgKiBEaWZmZXJlbnQgcHJvamVjdHMgbWF5IG5lZWQgdG8gdXNlIGBDb25jcmV0ZWAgaW4g
ZGlmZmVyZW50IHdheXMsIHNvIHRoZSBiZXN0IGludGVyZmFjZXMgZm9yIHRoZW0gd2lsbCBiZSBk
aWZmZXJlbnQuIFRoZXJlZm9yZSwgZWFjaCBvZiB0aGVtIHdpbGwgaGF2ZSBpdHMgb3duIGRvbWFp
bi1zcGVjaWZpYyBpbnRlcmZhY2Ugb24gdG9wIG9mIGBDb25jcmV0ZWAsIGFuZCB0aGV5IHdpbGwg
bm90IGJlIHRoZSBzYW1lIGNvZGUuCi0gICogSWYgZW5vdWdoIHByb2plY3RzIHdhbnQgdG8gdXNl
IHRoZSBzYW1lIGludGVyZmFjZSwgdGhleSBjYW4gYWx3YXlzIHNoYXJlIGl0LCBqdXN0IGxpa2Ug
dGhleSBoYXZlIGJlZW4gc2hhcmluZyBgQ29uY3JldGVgLiBZb3UgY2FuIGNoZWNrIGluIHRoZSBp
bnRlcmZhY2UgYW5kIHRoZSBhZGFwdG9yIHNvbWV3aGVyZSBuZWFyIGBDb25jcmV0ZWAgKHBlcmhh
cHMgaW4gYSBgY29udHJpYmAgc3ViLWRpcmVjdG9yeSkgYW5kIGxldCBtYW55IHByb2plY3RzIHVz
ZSBpdC4KLQotWW91IG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMgY2FyZWZ1bGx5IGZv
ciB5b3VyIHBhcnRpY3VsYXIKLXByb2JsZW0sIGJ1dCBJJ2QgbGlrZSB0byBhc3N1cmUgeW91IHRo
YXQgdGhlIEphdmEgY29tbXVuaXR5IGhhcyBiZWVuCi1wcmFjdGljaW5nIHRoaXMgZm9yIGEgbG9u
ZyB0aW1lIGFuZCBpdCdzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUKLWFwcGxpY2FibGUg
aW4gYSB3aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gOi0pCi0KLSMjIERlbGVnYXRpbmcgQ2Fs
bHMgdG8gYSBGYWtlICMjCi0KLVNvbWUgdGltZXMgeW91IGhhdmUgYSBub24tdHJpdmlhbCBmYWtl
IGltcGxlbWVudGF0aW9uIG9mIGFuCi1pbnRlcmZhY2UuIEZvciBleGFtcGxlOgotCi1gYGAKLWNs
YXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5Gb28oKSB7fQotICB2aXJ0dWFsIGNoYXIg
RG9UaGlzKGludCBuKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBEb1RoYXQoY29uc3QgY2hhciogcywg
aW50KiBwKSA9IDA7Ci19OwotCi1jbGFzcyBGYWtlRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGlj
OgotICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSB7Ci0gICAgcmV0dXJuIChuID4gMCkgPyAn
KycgOgotICAgICAgICAobiA8IDApID8gJy0nIDogJzAnOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERvVGhhdChjb25zdCBjaGFyKiBzLCBpbnQqIHApIHsKLSAgICAqcCA9IHN0cmxlbihzKTsKLSAg
fQotfTsKLWBgYAotCi1Ob3cgeW91IHdhbnQgdG8gbW9jayB0aGlzIGludGVyZmFjZSBzdWNoIHRo
YXQgeW91IGNhbiBzZXQgZXhwZWN0YXRpb25zCi1vbiBpdC4gSG93ZXZlciwgeW91IGFsc28gd2Fu
dCB0byB1c2UgYEZha2VGb29gIGZvciB0aGUgZGVmYXVsdAotYmVoYXZpb3IsIGFzIGR1cGxpY2F0
aW5nIGl0IGluIHRoZSBtb2NrIG9iamVjdCBpcywgd2VsbCwgYSBsb3Qgb2YKLXdvcmsuCi0KLVdo
ZW4geW91IGRlZmluZSB0aGUgbW9jayBjbGFzcyB1c2luZyBHb29nbGUgTW9jaywgeW91IGNhbiBo
YXZlIGl0Ci1kZWxlZ2F0ZSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8gYSBmYWtlIGNsYXNzIHlvdSBh
bHJlYWR5IGhhdmUsIHVzaW5nCi10aGlzIHBhdHRlcm46Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE5vcm1hbCBtb2NrIG1ldGhvZCBkZWZpbml0aW9ucyB1c2lu
ZyBHb29nbGUgTW9jay4KLSAgTU9DS19NRVRIT0QxKERvVGhpcywgY2hhcihpbnQgbikpOwotICBN
T0NLX01FVEhPRDIoRG9UaGF0LCB2b2lkKGNvbnN0IGNoYXIqIHMsIGludCogcCkpOwotCi0gIC8v
IERlbGVnYXRlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtZXRob2RzIHRvIGEgRmFrZUZv
byBvYmplY3QuCi0gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJlZm9yZSogdGhlIGN1c3RvbSBP
Tl9DQUxMKCkgc3RhdGVtZW50cy4KLSAgdm9pZCBEZWxlZ2F0ZVRvRmFrZSgpIHsKLSAgICBPTl9D
QUxMKCp0aGlzLCBEb1RoaXMoXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFr
ZV8sICZGYWtlRm9vOjpEb1RoaXMpKTsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoYXQoXywgXykp
Ci0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoYXQp
KTsKLSAgfQotIHByaXZhdGU6Ci0gIEZha2VGb28gZmFrZV87ICAvLyBLZWVwcyBhbiBpbnN0YW5j
ZSBvZiB0aGUgZmFrZSBpbiB0aGUgbW9jay4KLX07Ci1gYGAKLQotV2l0aCB0aGF0LCB5b3UgY2Fu
IHVzZSBgTW9ja0Zvb2AgaW4geW91ciB0ZXN0cyBhcyB1c3VhbC4gSnVzdCByZW1lbWJlcgotdGhh
dCBpZiB5b3UgZG9uJ3QgZXhwbGljaXRseSBzZXQgYW4gYWN0aW9uIGluIGFuIGBPTl9DQUxMKClg
IG9yCi1gRVhQRUNUX0NBTEwoKWAsIHRoZSBmYWtlIHdpbGwgYmUgY2FsbGVkIHVwb24gdG8gZG8g
aXQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1URVNUKEFiY1Rlc3QsIFh5eikgewot
ICBNb2NrRm9vIGZvbzsKLSAgZm9vLkRlbGVnYXRlVG9GYWtlKCk7IC8vIEVuYWJsZXMgdGhlIGZh
a2UgZm9yIGRlbGVnYXRpb24uCi0KLSAgLy8gUHV0IHlvdXIgT05fQ0FMTChmb28sIC4uLilzIGhl
cmUsIGlmIGFueS4KLQotICAvLyBObyBhY3Rpb24gc3BlY2lmaWVkLCBtZWFuaW5nIHRvIHVzZSB0
aGUgZGVmYXVsdCBhY3Rpb24uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKTsKLSAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXykpOwotCi0gIGludCBuID0gMDsKLSAgRVhQRUNUX0VR
KCcrJywgZm9vLkRvVGhpcyg1KSk7ICAvLyBGYWtlRm9vOjpEb1RoaXMoKSBpcyBpbnZva2VkLgot
ICBmb28uRG9UaGF0KCJIaSIsICZuKTsgICAgICAgICAgIC8vIEZha2VGb286OkRvVGhhdCgpIGlz
IGludm9rZWQuCi0gIEVYUEVDVF9FUSgyLCBuKTsKLX0KLWBgYAotCi0qKlNvbWUgdGlwczoqKgot
Ci0gICogSWYgeW91IHdhbnQsIHlvdSBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0
aW9uIGJ5IHByb3ZpZGluZyB5b3VyIG93biBgT05fQ0FMTCgpYCBvciB1c2luZyBgLldpbGxPbmNl
KClgIC8gYC5XaWxsUmVwZWF0ZWRseSgpYCBpbiBgRVhQRUNUX0NBTEwoKWAuCi0gICogSW4gYERl
bGVnYXRlVG9GYWtlKClgLCB5b3Ugb25seSBuZWVkIHRvIGRlbGVnYXRlIHRoZSBtZXRob2RzIHdo
b3NlIGZha2UgaW1wbGVtZW50YXRpb24geW91IGludGVuZCB0byB1c2UuCi0gICogVGhlIGdlbmVy
YWwgdGVjaG5pcXVlIGRpc2N1c3NlZCBoZXJlIHdvcmtzIGZvciBvdmVybG9hZGVkIG1ldGhvZHMs
IGJ1dCB5b3UnbGwgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHlvdSBt
ZWFuLiBUbyBkaXNhbWJpZ3VhdGUgYSBtb2NrIGZ1bmN0aW9uICh0aGUgb25lIHlvdSBzcGVjaWZ5
IGluc2lkZSB0aGUgcGFyZW50aGVzZXMgb2YgYE9OX0NBTEwoKWApLCBzZWUgdGhlICJTZWxlY3Rp
bmcgQmV0d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyIgc2VjdGlvbiBvbiB0aGlzIHBhZ2U7IHRv
IGRpc2FtYmlndWF0ZSBhIGZha2UgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHBsYWNlIGluc2lkZSBg
SW52b2tlKClgKSwgdXNlIGEgYHN0YXRpY19jYXN0YCB0byBzcGVjaWZ5IHRoZSBmdW5jdGlvbidz
IHR5cGUuIEZvciBpbnN0YW5jZSwgaWYgY2xhc3MgYEZvb2AgaGFzIG1ldGhvZHMgYGNoYXIgRG9U
aGlzKGludCBuKWAgYW5kIGBib29sIERvVGhpcyhkb3VibGUgeCkgY29uc3RgLCBhbmQgeW91IHdh
bnQgdG8gaW52b2tlIHRoZSBsYXR0ZXIsIHlvdSBuZWVkIHRvIHdyaXRlIGBJbnZva2UoJmZha2Vf
LCBzdGF0aWNfY2FzdDxib29sIChGYWtlRm9vOjoqKShkb3VibGUpIGNvbnN0PigmRmFrZUZvbzo6
RG9UaGlzKSlgIGluc3RlYWQgb2YgYEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMpYCAo
VGhlIHN0cmFuZ2UtbG9va2luZyB0aGluZyBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBvZiBg
c3RhdGljX2Nhc3RgIGlzIHRoZSB0eXBlIG9mIGEgZnVuY3Rpb24gcG9pbnRlciB0byB0aGUgc2Vj
b25kIGBEb1RoaXMoKWAgbWV0aG9kLikuCi0gICogSGF2aW5nIHRvIG1peCBhIG1vY2sgYW5kIGEg
ZmFrZSBpcyBvZnRlbiBhIHNpZ24gb2Ygc29tZXRoaW5nIGdvbmUgd3JvbmcuIFBlcmhhcHMgeW91
IGhhdmVuJ3QgZ290IHVzZWQgdG8gdGhlIGludGVyYWN0aW9uLWJhc2VkIHdheSBvZiB0ZXN0aW5n
IHlldC4gT3IgcGVyaGFwcyB5b3VyIGludGVyZmFjZSBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9s
ZXMgYW5kIHNob3VsZCBiZSBzcGxpdCB1cC4gVGhlcmVmb3JlLCAqKmRvbid0IGFidXNlIHRoaXMq
Ki4gV2Ugd291bGQgb25seSByZWNvbW1lbmQgdG8gZG8gaXQgYXMgYW4gaW50ZXJtZWRpYXRlIHN0
ZXAgd2hlbiB5b3UgYXJlIHJlZmFjdG9yaW5nIHlvdXIgY29kZS4KLQotUmVnYXJkaW5nIHRoZSB0
aXAgb24gbWl4aW5nIGEgbW9jayBhbmQgYSBmYWtlLCBoZXJlJ3MgYW4gZXhhbXBsZSBvbgotd2h5
IGl0IG1heSBiZSBhIGJhZCBzaWduOiBTdXBwb3NlIHlvdSBoYXZlIGEgY2xhc3MgYFN5c3RlbWAg
Zm9yCi1sb3ctbGV2ZWwgc3lzdGVtIG9wZXJhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGRvZXMg
ZmlsZSBhbmQgSS9PCi1vcGVyYXRpb25zLiBBbmQgc3VwcG9zZSB5b3Ugd2FudCB0byB0ZXN0IGhv
dyB5b3VyIGNvZGUgdXNlcyBgU3lzdGVtYAotdG8gZG8gSS9PLCBhbmQgeW91IGp1c3Qgd2FudCB0
aGUgZmlsZSBvcGVyYXRpb25zIHRvIHdvcmsgbm9ybWFsbHkuIElmCi15b3UgbW9jayBvdXQgdGhl
IGVudGlyZSBgU3lzdGVtYCBjbGFzcywgeW91J2xsIGhhdmUgdG8gcHJvdmlkZSBhIGZha2UKLWlt
cGxlbWVudGF0aW9uIGZvciB0aGUgZmlsZSBvcGVyYXRpb24gcGFydCwgd2hpY2ggc3VnZ2VzdHMg
dGhhdAotYFN5c3RlbWAgaXMgdGFraW5nIG9uIHRvbyBtYW55IHJvbGVzLgotCi1JbnN0ZWFkLCB5
b3UgY2FuIGRlZmluZSBhIGBGaWxlT3BzYCBpbnRlcmZhY2UgYW5kIGFuIGBJT09wc2AgaW50ZXJm
YWNlCi1hbmQgc3BsaXQgYFN5c3RlbWAncyBmdW5jdGlvbmFsaXRpZXMgaW50byB0aGUgdHdvLiBU
aGVuIHlvdSBjYW4gbW9jawotYElPT3BzYCB3aXRob3V0IG1vY2tpbmcgYEZpbGVPcHNgLgotCi0j
IyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUmVhbCBPYmplY3QgIyMKLQotV2hlbiB1c2luZyB0ZXN0
aW5nIGRvdWJsZXMgKG1vY2tzLCBmYWtlcywgc3R1YnMsIGFuZCBldGMpLCBzb21ldGltZXMKLXRo
ZWlyIGJlaGF2aW9ycyB3aWxsIGRpZmZlciBmcm9tIHRob3NlIG9mIHRoZSByZWFsIG9iamVjdHMu
IFRoaXMKLWRpZmZlcmVuY2UgY291bGQgYmUgZWl0aGVyIGludGVudGlvbmFsIChhcyBpbiBzaW11
bGF0aW5nIGFuIGVycm9yIHN1Y2gKLXRoYXQgeW91IGNhbiB0ZXN0IHRoZSBlcnJvciBoYW5kbGlu
ZyBjb2RlKSBvciB1bmludGVudGlvbmFsLiBJZiB5b3VyCi1tb2NrcyBoYXZlIGRpZmZlcmVudCBi
ZWhhdmlvcnMgdGhhbiB0aGUgcmVhbCBvYmplY3RzIGJ5IG1pc3Rha2UsIHlvdQotY291bGQgZW5k
IHVwIHdpdGggY29kZSB0aGF0IHBhc3NlcyB0aGUgdGVzdHMgYnV0IGZhaWxzIGluIHByb2R1Y3Rp
b24uCi0KLVlvdSBjYW4gdXNlIHRoZSBfZGVsZWdhdGluZy10by1yZWFsXyB0ZWNobmlxdWUgdG8g
ZW5zdXJlIHRoYXQgeW91cgotbW9jayBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIHJlYWwg
b2JqZWN0IHdoaWxlIHJldGFpbmluZyB0aGUKLWFiaWxpdHkgdG8gdmFsaWRhdGUgY2FsbHMuIFRo
aXMgdGVjaG5pcXVlIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKLWRlbGVnYXRpbmctdG8tZmFrZSB0
ZWNobmlxdWUsIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHRoYXQgd2UgdXNlIGEgcmVhbAotb2JqZWN0
IGluc3RlYWQgb2YgYSBmYWtlLiBIZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Oklu
dm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTW9ja0Zv
bygpIHsKLSAgICAvLyBCeSBkZWZhdWx0LCBhbGwgY2FsbHMgYXJlIGRlbGVnYXRlZCB0byB0aGUg
cmVhbCBvYmplY3QuCi0gICAgT05fQ0FMTCgqdGhpcywgRG9UaGlzKCkpCi0gICAgICAgIC5XaWxs
QnlEZWZhdWx0KEludm9rZSgmcmVhbF8sICZGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRo
aXMsIERvVGhhdChfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZv
bzo6RG9UaGF0KSk7Ci0gICAgLi4uCi0gIH0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgLi4uKTsK
LSAgTU9DS19NRVRIT0QxKERvVGhhdCwgLi4uKTsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgRm9vIHJl
YWxfOwotfTsKLS4uLgotCi0gIE1vY2tGb28gbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBE
b1RoaXMoKSkKLSAgICAgIC5UaW1lcygzKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGF0KCJI
aSIpKQotICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwotICAuLi4gdXNlIG1vY2sgaW4gdGVzdCAu
Li4KLWBgYAotCi1XaXRoIHRoaXMsIEdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoYXQgeW91ciBj
b2RlIG1hZGUgdGhlIHJpZ2h0IGNhbGxzCi0od2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLCBpbiB0
aGUgcmlnaHQgb3JkZXIsIGNhbGxlZCB0aGUgcmlnaHQgbnVtYmVyCi1vZiB0aW1lcywgZXRjKSwg
YW5kIGEgcmVhbCBvYmplY3Qgd2lsbCBhbnN3ZXIgdGhlIGNhbGxzIChzbyB0aGUKLWJlaGF2aW9y
IHdpbGwgYmUgdGhlIHNhbWUgYXMgaW4gcHJvZHVjdGlvbikuIFRoaXMgZ2l2ZXMgeW91IHRoZSBi
ZXN0Ci1vZiBib3RoIHdvcmxkcy4KLQotIyMgRGVsZWdhdGluZyBDYWxscyB0byBhIFBhcmVudCBD
bGFzcyAjIwotCi1JZGVhbGx5LCB5b3Ugc2hvdWxkIGNvZGUgdG8gaW50ZXJmYWNlcywgd2hvc2Ug
bWV0aG9kcyBhcmUgYWxsIHB1cmUKLXZpcnR1YWwuIEluIHJlYWxpdHksIHNvbWV0aW1lcyB5b3Ug
ZG8gbmVlZCB0byBtb2NrIGEgdmlydHVhbCBtZXRob2QKLXRoYXQgaXMgbm90IHB1cmUgKGkuZSwg
aXQgYWxyZWFkeSBoYXMgYW4gaW1wbGVtZW50YXRpb24pLiBGb3IgZXhhbXBsZToKLQotYGBgCi1j
bGFzcyBGb28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgdmlydHVhbCB2b2lk
IFB1cmUoaW50IG4pID0gMDsKLSAgdmlydHVhbCBpbnQgQ29uY3JldGUoY29uc3QgY2hhciogc3Ry
KSB7IC4uLiB9Ci19OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgot
ICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGlu
dCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkg
aXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0
cikpOwotfTsKLWBgYAotCi1Tb21ldGltZXMgeW91IG1heSB3YW50IHRvIGNhbGwgYEZvbzo6Q29u
Y3JldGUoKWAgaW5zdGVhZCBvZgotYE1vY2tGb286OkNvbmNyZXRlKClgLiBQZXJoYXBzIHlvdSB3
YW50IHRvIGRvIGl0IGFzIHBhcnQgb2YgYSBzdHViCi1hY3Rpb24sIG9yIHBlcmhhcHMgeW91ciB0
ZXN0IGRvZXNuJ3QgbmVlZCB0byBtb2NrIGBDb25jcmV0ZSgpYCBhdCBhbGwKLShidXQgaXQgd291
bGQgYmUgb2gtc28gcGFpbmZ1bCB0byBoYXZlIHRvIGRlZmluZSBhIG5ldyBtb2NrIGNsYXNzCi13
aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0byBtb2NrIG9uZSBvZiBpdHMgbWV0aG9kcykuCi0KLVRo
ZSB0cmljayBpcyB0byBsZWF2ZSBhIGJhY2sgZG9vciBpbiB5b3VyIG1vY2sgY2xhc3MgZm9yIGFj
Y2Vzc2luZyB0aGUKLXJlYWwgbWV0aG9kcyBpbiB0aGUgYmFzZSBjbGFzczoKLQotYGBgCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBt
ZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcg
YSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tf
TUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwotCi0gIC8vIFVzZSB0aGlz
IHRvIGNhbGwgQ29uY3JldGUoKSBkZWZpbmVkIGluIEZvby4KLSAgaW50IEZvb0NvbmNyZXRlKGNv
bnN0IGNoYXIqIHN0cikgeyByZXR1cm4gRm9vOjpDb25jcmV0ZShzdHIpOyB9Ci19OwotYGBgCi0K
LU5vdywgeW91IGNhbiBjYWxsIGBGb286OkNvbmNyZXRlKClgIGluc2lkZSBhbiBhY3Rpb24gYnk6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0u
Li4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKLSAgICAgIC5XaWxsT25jZShJbnZv
a2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Ci1gYGAKLQotb3IgdGVsbCB0aGUgbW9j
ayBvYmplY3QgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBtb2NrIGBDb25jcmV0ZSgpYDoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLS4uLgotICBPTl9DQUxMKGZvbywgQ29uY3JldGUo
XykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNy
ZXRlKSk7Ci1gYGAKLQotKFdoeSBkb24ndCB3ZSBqdXN0IHdyaXRlIGBJbnZva2UoJmZvbywgJkZv
bzo6Q29uY3JldGUpYD8gSWYgeW91IGRvCi10aGF0LCBgTW9ja0Zvbzo6Q29uY3JldGUoKWAgd2ls
bCBiZSBjYWxsZWQgKGFuZCBjYXVzZSBhbiBpbmZpbml0ZQotcmVjdXJzaW9uKSBzaW5jZSBgRm9v
OjpDb25jcmV0ZSgpYCBpcyB2aXJ0dWFsLiBUaGF0J3MganVzdCBob3cgQysrCi13b3Jrcy4pCi0K
LSMgVXNpbmcgTWF0Y2hlcnMgIwotCi0jIyBNYXRjaGluZyBBcmd1bWVudCBWYWx1ZXMgRXhhY3Rs
eSAjIwotCi1Zb3UgY2FuIHNwZWNpZnkgZXhhY3RseSB3aGljaCBhcmd1bWVudHMgYSBtb2NrIG1l
dGhvZCBpcyBleHBlY3Rpbmc6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4K
LSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdh
JykpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBiYXIpKTsKLWBgYAotCi0j
IyBVc2luZyBTaW1wbGUgTWF0Y2hlcnMgIyMKLQotWW91IGNhbiB1c2UgbWF0Y2hlcnMgdG8gbWF0
Y2ggYXJndW1lbnRzIHRoYXQgaGF2ZSBhIGNlcnRhaW4gcHJvcGVydHk6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEdlKDUpKSkgIC8vIFRo
ZSBhcmd1bWVudCBtdXN0IGJlID49IDUuCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgiSGVsbG8iLCBOb3ROdWxsKCkpKTsKLSAgLy8gVGhl
IHNlY29uZCBhcmd1bWVudCBtdXN0IG5vdCBiZSBOVUxMLgotYGBgCi0KLUEgZnJlcXVlbnRseSB1
c2VkIG1hdGNoZXIgaXMgYF9gLCB3aGljaCBtYXRjaGVzIGFueXRoaW5nOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLS4uLgotICBFWFBFQ1Rf
Q0FMTChmb28sIERvVGhhdChfLCBOb3ROdWxsKCkpKTsKLWBgYAotCi0jIyBDb21iaW5pbmcgTWF0
Y2hlcnMgIyMKLQotWW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gZXhpc3Rpbmcg
b25lcyB1c2luZyBgQWxsT2YoKWAsCi1gQW55T2YoKWAsIGFuZCBgTm90KClgOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0
aW5nOjpIYXNTdWJzdHI7Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotdXNpbmcgOjp0ZXN0aW5nOjpO
b3Q7Ci0uLi4KLSAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUgPiA1IGFuZCAhPSAxMC4KLSAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoaXMoQWxsT2YoR3QoNSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5lKDEwKSkpKTsKLQotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3Qg
Y29udGFpbiBzdWItc3RyaW5nICJibGFoIi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoTm90
KEhhc1N1YnN0cigiYmxhaCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwot
YGBgCi0KLSMjIENhc3RpbmcgTWF0Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJl
IHN0YXRpY2FsbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUgY29tcGlsZXIKLWNhbiBjYXRjaCB5
b3VyIG1pc3Rha2UgaWYgeW91IHVzZSBhIG1hdGNoZXIgb2YgdGhlIHdyb25nIHR5cGUgKGZvcgot
ZXhhbXBsZSwgaWYgeW91IHVzZSBgRXEoNSlgIHRvIG1hdGNoIGEgYHN0cmluZ2AgYXJndW1lbnQp
LiBHb29kIGZvcgoteW91IQotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHlvdSBrbm93IHdoYXQgeW91
J3JlIGRvaW5nIGFuZCB3YW50IHRoZSBjb21waWxlcgotdG8gZ2l2ZSB5b3Ugc29tZSBzbGFjay4g
T25lIGV4YW1wbGUgaXMgdGhhdCB5b3UgaGF2ZSBhIG1hdGNoZXIgZm9yCi1gbG9uZ2AgYW5kIHRo
ZSBhcmd1bWVudCB5b3Ugd2FudCB0byBtYXRjaCBpcyBgaW50YC4gV2hpbGUgdGhlIHR3bwotdHlw
ZXMgYXJlbid0IGV4YWN0bHkgdGhlIHNhbWUsIHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHdyb25n
IHdpdGgKLXVzaW5nIGEgYE1hdGNoZXI8bG9uZz5gIHRvIG1hdGNoIGFuIGBpbnRgIC0gYWZ0ZXIg
YWxsLCB3ZSBjYW4gZmlyc3QKLWNvbnZlcnQgdGhlIGBpbnRgIGFyZ3VtZW50IHRvIGEgYGxvbmdg
IGJlZm9yZSBnaXZpbmcgaXQgdG8gdGhlCi1tYXRjaGVyLgotCi1UbyBzdXBwb3J0IHRoaXMgbmVl
ZCwgR29vZ2xlIE1vY2sgZ2l2ZXMgeW91IHRoZQotYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgZnVu
Y3Rpb24uIEl0IGNhc3RzIGEgbWF0Y2hlciBgbWAgdG8gdHlwZQotYE1hdGNoZXI8VD5gLiBUbyBl
bnN1cmUgc2FmZXR5LCBHb29nbGUgTW9jayBjaGVja3MgdGhhdCAobGV0IGBVYCBiZSB0aGUKLXR5
cGUgYG1gIGFjY2VwdHMpOgotCi0gIDEuIFR5cGUgYFRgIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3Qg
dG8gdHlwZSBgVWA7Ci0gIDEuIFdoZW4gYm90aCBgVGAgYW5kIGBVYCBhcmUgYnVpbHQtaW4gYXJp
dGhtZXRpYyB0eXBlcyAoYGJvb2xgLCBpbnRlZ2VycywgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMpLCB0aGUgY29udmVyc2lvbiBmcm9tIGBUYCB0byBgVWAgaXMgbm90IGxvc3N5IChpbiBvdGhl
ciB3b3JkcywgYW55IHZhbHVlIHJlcHJlc2VudGFibGUgYnkgYFRgIGNhbiBhbHNvIGJlIHJlcHJl
c2VudGVkIGJ5IGBVYCk7IGFuZAotICAxLiBXaGVuIGBVYCBpcyBhIHJlZmVyZW5jZSwgYFRgIG11
c3QgYWxzbyBiZSBhIHJlZmVyZW5jZSAoYXMgdGhlIHVuZGVybHlpbmcgbWF0Y2hlciBtYXkgYmUg
aW50ZXJlc3RlZCBpbiB0aGUgYWRkcmVzcyBvZiB0aGUgYFVgIHZhbHVlKS4KLQotVGhlIGNvZGUg
d29uJ3QgY29tcGlsZSBpZiBhbnkgb2YgdGhlc2UgY29uZGl0aW9ucyBpc24ndCBtZXQuCi0KLUhl
cmUncyBvbmUgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2Fz
dDsKLQotLy8gQSBiYXNlIGNsYXNzIGFuZCBhIGNoaWxkIGNsYXNzLgotY2xhc3MgQmFzZSB7IC4u
LiB9OwotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsgLi4uIH07Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIHZvaWQo
RGVyaXZlZCogZGVyaXZlZCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICAvLyBtIGlz
IGEgTWF0Y2hlcjxCYXNlKj4gd2UgZ290IGZyb20gc29tZXdoZXJlLgotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyhTYWZlTWF0Y2hlckNhc3Q8RGVyaXZlZCo+KG0pKSk7Ci1gYGAKLQotSWYgeW91
IGZpbmQgYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgdG9vIGxpbWl0aW5nLCB5b3UgY2FuIHVzZSBh
IHNpbWlsYXIKLWZ1bmN0aW9uIGBNYXRjaGVyQ2FzdDxUPihtKWAuIFRoZSBkaWZmZXJlbmNlIGlz
IHRoYXQgYE1hdGNoZXJDYXN0YCB3b3JrcwotYXMgbG9uZyBhcyB5b3UgY2FuIGBzdGF0aWNfY2Fz
dGAgdHlwZSBgVGAgdG8gdHlwZSBgVWAuCi0KLWBNYXRjaGVyQ2FzdGAgZXNzZW50aWFsbHkgbGV0
cyB5b3UgYnlwYXNzIEMrKydzIHR5cGUgc3lzdGVtCi0oYHN0YXRpY19jYXN0YCBpc24ndCBhbHdh
eXMgc2FmZSBhcyBpdCBjb3VsZCB0aHJvdyBhd2F5IGluZm9ybWF0aW9uLAotZm9yIGV4YW1wbGUp
LCBzbyBiZSBjYXJlZnVsIG5vdCB0byBtaXN1c2UvYWJ1c2UgaXQuCi0KLSMjIFNlbGVjdGluZyBC
ZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zICMjCi0KLUlmIHlvdSBleHBlY3QgYW4gb3Zlcmxv
YWRlZCBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIHRoZSBjb21waWxlciBtYXkKLW5lZWQgc29tZSBo
ZWxwIG9uIHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiBpdCBpcy4KLQotVG8gZGlzYW1iaWd1YXRl
IGZ1bmN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LAot
dXNlIHRoZSBgQ29uc3QoKWAgYXJndW1lbnQgd3JhcHBlci4KLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAg
TU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJh
ciwgY29uc3QgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjEs
IGJhcjI7Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0QmFyKCkpICAgICAgICAgLy8gVGhlIG5vbi1j
b25zdCBHZXRCYXIoKS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMSkpOwotICBFWFBF
Q1RfQ0FMTChDb25zdChmb28pLCBHZXRCYXIoKSkgIC8vIFRoZSBjb25zdCBHZXRCYXIoKS4KLSAg
ICAgIC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMikpOwotYGBgCi0KLShgQ29uc3QoKWAgaXMgZGVm
aW5lZCBieSBHb29nbGUgTW9jayBhbmQgcmV0dXJucyBhIGBjb25zdGAgcmVmZXJlbmNlCi10byBp
dHMgYXJndW1lbnQuKQotCi1UbyBkaXNhbWJpZ3VhdGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgd2l0
aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzCi1idXQgZGlmZmVyZW50IGFyZ3VtZW50IHR5
cGVzLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSB0aGUgZXhhY3QgdHlwZQotb2YgYSBtYXRjaGVy
LCBlaXRoZXIgYnkgd3JhcHBpbmcgeW91ciBtYXRjaGVyIGluIGBNYXRjaGVyPHR5cGU+KClgLCBv
cgotdXNpbmcgYSBtYXRjaGVyIHdob3NlIHR5cGUgaXMgZml4ZWQgKGBUeXBlZEVxPHR5cGU+YCwg
YEFuPHR5cGU+KClgLAotZXRjKToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFuOwotdXNpbmcg
Ojp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGlu
Zzo6VHlwZWRFcTsKLQotY2xhc3MgTW9ja1ByaW50ZXIgOiBwdWJsaWMgUHJpbnRlciB7Ci0gcHVi
bGljOgotICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0Qx
KFByaW50LCB2b2lkKGNoYXIgYykpOwotfTsKLQotVEVTVChQcmludGVyVGVzdCwgUHJpbnQpIHsK
LSAgTW9ja1ByaW50ZXIgcHJpbnRlcjsKLQotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChB
bjxpbnQ+KCkpKTsgICAgICAgICAgICAvLyB2b2lkIFByaW50KGludCk7Ci0gIEVYUEVDVF9DQUxM
KHByaW50ZXIsIFByaW50KE1hdGNoZXI8aW50PihMdCg1KSkpKTsgIC8vIHZvaWQgUHJpbnQoaW50
KTsKLSAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoVHlwZWRFcTxjaGFyPignYScpKSk7ICAg
Ly8gdm9pZCBQcmludChjaGFyKTsKLQotICBwcmludGVyLlByaW50KDMpOwotICBwcmludGVyLlBy
aW50KDYpOwotICBwcmludGVyLlByaW50KCdhJyk7Ci19Ci1gYGAKLQotIyMgUGVyZm9ybWluZyBE
aWZmZXJlbnQgQWN0aW9ucyBCYXNlZCBvbiB0aGUgQXJndW1lbnRzICMjCi0KLVdoZW4gYSBtb2Nr
IG1ldGhvZCBpcyBjYWxsZWQsIHRoZSBfbGFzdF8gbWF0Y2hpbmcgZXhwZWN0YXRpb24gdGhhdCdz
Ci1zdGlsbCBhY3RpdmUgd2lsbCBiZSBzZWxlY3RlZCAodGhpbmsgIm5ld2VyIG92ZXJyaWRlcyBv
bGRlciIpLiBTbywgeW91Ci1jYW4gbWFrZSBhIG1ldGhvZCBkbyBkaWZmZXJlbnQgdGhpbmdzIGRl
cGVuZGluZyBvbiBpdHMgYXJndW1lbnQgdmFsdWVzCi1saWtlIHRoaXM6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0
dXJuOwotLi4uCi0gIC8vIFRoZSBkZWZhdWx0IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9U
aGlzKF8pKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybignYicpKTsKLQotICAvLyBUaGUg
bW9yZSBzcGVjaWZpYyBjYXNlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhMdCg1KSkpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdhJykpOwotYGBgCi0KLU5vdywgaWYgYGZvby5E
b1RoaXMoKWAgaXMgY2FsbGVkIHdpdGggYSB2YWx1ZSBsZXNzIHRoYW4gNSwgYCdhJ2Agd2lsbAot
YmUgcmV0dXJuZWQ7IG90aGVyd2lzZSBgJ2InYCB3aWxsIGJlIHJldHVybmVkLgotCi0jIyBNYXRj
aGluZyBNdWx0aXBsZSBBcmd1bWVudHMgYXMgYSBXaG9sZSAjIwotCi1Tb21ldGltZXMgaXQncyBu
b3QgZW5vdWdoIHRvIG1hdGNoIHRoZSBhcmd1bWVudHMgaW5kaXZpZHVhbGx5LiBGb3IKLWV4YW1w
bGUsIHdlIG1heSB3YW50IHRvIHNheSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGxl
c3MgdGhhbgotdGhlIHNlY29uZCBhcmd1bWVudC4gVGhlIGBXaXRoKClgIGNsYXVzZSBhbGxvd3Mg
dXMgdG8gbWF0Y2gKLWFsbCBhcmd1bWVudHMgb2YgYSBtb2NrIGZ1bmN0aW9uIGFzIGEgd2hvbGUu
IEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGlu
Zzo6THQ7Ci11c2luZyA6OnRlc3Rpbmc6Ok5lOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgSW5S
YW5nZShOZSgwKSwgXykpCi0gICAgICAuV2l0aChMdCgpKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhl
IGZpcnN0IGFyZ3VtZW50IG9mIGBJblJhbmdlKClgIG11c3Qgbm90IGJlIDAsIGFuZCBtdXN0IGJl
Ci1sZXNzIHRoYW4gdGhlIHNlY29uZCBhcmd1bWVudC4KLQotVGhlIGV4cHJlc3Npb24gaW5zaWRl
IGBXaXRoKClgIG11c3QgYmUgYSBtYXRjaGVyIG9mIHR5cGUKLWBNYXRjaGVyPHRyMTo6dHVwbGU8
QTEsIC4uLiwgQW4+ID5gLCB3aGVyZSBgQTFgLCAuLi4sIGBBbmAgYXJlIHRoZQotdHlwZXMgb2Yg
dGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLQotWW91IGNhbiBhbHNvIHdyaXRlIGBBbGxBcmdzKG0p
YCBpbnN0ZWFkIG9mIGBtYCBpbnNpZGUgYC5XaXRoKClgLiBUaGUKLXR3byBmb3JtcyBhcmUgZXF1
aXZhbGVudCwgYnV0IGAuV2l0aChBbGxBcmdzKEx0KCkpKWAgaXMgbW9yZSByZWFkYWJsZQotdGhh
biBgLldpdGgoTHQoKSlgLgotCi1Zb3UgY2FuIHVzZSBgQXJnczxrMSwgLi4uLCBrbj4obSlgIHRv
IG1hdGNoIHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzCi0oYXMgYSB0dXBsZSkgYWdhaW5zdCBg
bWAuIEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVz
dGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6OkFyZ3M7Ci11c2luZyA6OnRlc3Rpbmc6Okx0
OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmxhaChfLCBfLCBfKSkKLSAgICAgIC5XaXRoKEFs
bE9mKEFyZ3M8MCwgMT4oTHQoKSksIEFyZ3M8MSwgMj4oTHQoKSkpKTsKLWBgYAotCi1zYXlzIHRo
YXQgYEJsYWgoKWAgd2lsbCBiZSBjYWxsZWQgd2l0aCBhcmd1bWVudHMgYHhgLCBgeWAsIGFuZCBg
emAgd2hlcmUKLWB4IDwgeSA8IHpgLgotCi1BcyBhIGNvbnZlbmllbmNlIGFuZCBleGFtcGxlLCBH
b29nbGUgTW9jayBwcm92aWRlcyBzb21lIG1hdGNoZXJzIGZvcgotMi10dXBsZXMsIGluY2x1ZGlu
ZyB0aGUgYEx0KClgIG1hdGNoZXIgYWJvdmUuIFNlZSB0aGUgW0NoZWF0U2hlZXRdKFYxXzdfQ2hl
YXRTaGVldC5tZCkgZm9yCi10aGUgY29tcGxldGUgbGlzdC4KLQotTm90ZSB0aGF0IGlmIHlvdSB3
YW50IHRvIHBhc3MgdGhlIGFyZ3VtZW50cyB0byBhIHByZWRpY2F0ZSBvZiB5b3VyIG93bgotKGUu
Zy4gYC5XaXRoKEFyZ3M8MCwgMT4oVHJ1bHkoJk15UHJlZGljYXRlKSkpYCksIHRoYXQgcHJlZGlj
YXRlIE1VU1QgYmUKLXdyaXR0ZW4gdG8gdGFrZSBhIGB0cjE6OnR1cGxlYCBhcyBpdHMgYXJndW1l
bnQ7IEdvb2dsZSBNb2NrIHdpbGwgcGFzcyB0aGUgYG5gCi1zZWxlY3RlZCBhcmd1bWVudHMgYXMg
X29uZV8gc2luZ2xlIHR1cGxlIHRvIHRoZSBwcmVkaWNhdGUuCi0KLSMjIFVzaW5nIE1hdGNoZXJz
IGFzIFByZWRpY2F0ZXMgIyMKLQotSGF2ZSB5b3Ugbm90aWNlZCB0aGF0IGEgbWF0Y2hlciBpcyBq
dXN0IGEgZmFuY3kgcHJlZGljYXRlIHRoYXQgYWxzbwota25vd3MgaG93IHRvIGRlc2NyaWJlIGl0
c2VsZj8gTWFueSBleGlzdGluZyBhbGdvcml0aG1zIHRha2UgcHJlZGljYXRlcwotYXMgYXJndW1l
bnRzIChlLmcuIHRob3NlIGRlZmluZWQgaW4gU1RMJ3MgYDxhbGdvcml0aG0+YCBoZWFkZXIpLCBh
bmQKLWl0IHdvdWxkIGJlIGEgc2hhbWUgaWYgR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIG5vdCBh
bGxvd2VkIHRvCi1wYXJ0aWNpcGF0ZS4KLQotTHVja2lseSwgeW91IGNhbiB1c2UgYSBtYXRjaGVy
IHdoZXJlIGEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IgaXMKLWV4cGVjdGVkIGJ5IHdyYXBwaW5n
IGl0IGluc2lkZSB0aGUgYE1hdGNoZXMoKWAgZnVuY3Rpb24uIEZvciBleGFtcGxlLAotCi1gYGAK
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1zdGQ6OnZlY3Rvcjxp
bnQ+IHY7Ci0uLi4KLS8vIEhvdyBtYW55IGVsZW1lbnRzIGluIHYgYXJlID49IDEwPwotY29uc3Qg
aW50IGNvdW50ID0gY291bnRfaWYodi5iZWdpbigpLCB2LmVuZCgpLCBNYXRjaGVzKEdlKDEwKSkp
OwotYGBgCi0KLVNpbmNlIHlvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVycyBmcm9tIHNpbXBs
ZXIgb25lcyBlYXNpbHkgdXNpbmcKLUdvb2dsZSBNb2NrLCB0aGlzIGdpdmVzIHlvdSBhIHdheSB0
byBjb252ZW5pZW50bHkgY29uc3RydWN0IGNvbXBvc2l0ZQotcHJlZGljYXRlcyAoZG9pbmcgdGhl
IHNhbWUgdXNpbmcgU1RMJ3MgYDxmdW5jdGlvbmFsPmAgaGVhZGVyIGlzIGp1c3QKLXBhaW5mdWwp
LiBGb3IgZXhhbXBsZSwgaGVyZSdzIGEgcHJlZGljYXRlIHRoYXQncyBzYXRpc2ZpZWQgYnkgYW55
Ci1udW1iZXIgdGhhdCBpcyA+PSAwLCA8PSAxMDAsIGFuZCAhPSA1MDoKLQotYGBgCi1NYXRjaGVz
KEFsbE9mKEdlKDApLCBMZSgxMDApLCBOZSg1MCkpKQotYGBgCi0KLSMjIFVzaW5nIE1hdGNoZXJz
IGluIEdvb2dsZSBUZXN0IEFzc2VydGlvbnMgIyMKLQotU2luY2UgbWF0Y2hlcnMgYXJlIGJhc2lj
YWxseSBwcmVkaWNhdGVzIHRoYXQgYWxzbyBrbm93IGhvdyB0byBkZXNjcmliZQotdGhlbXNlbHZl
cywgdGhlcmUgaXMgYSB3YXkgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlbSBpbgotW0dvb2dsZSBU
ZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMuIEl0
J3MKLWNhbGxlZCBgQVNTRVJUX1RIQVRgIGFuZCBgRVhQRUNUX1RIQVRgOgotCi1gYGAKLSAgQVNT
RVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gQXNzZXJ0cyB0aGF0IHZhbHVlIG1hdGNoZXMg
bWF0Y2hlci4KLSAgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gVGhlIG5vbi1mYXRh
bCB2ZXJzaW9uLgotYGBgCi0KLUZvciBleGFtcGxlLCBpbiBhIEdvb2dsZSBUZXN0IHRlc3QgeW91
IGNhbiB3cml0ZToKLQotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotdXNpbmcgOjp0
ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6R2U7Ci11c2luZyA6OnRlc3Rpbmc6Okxl
OwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVzUmVnZXg7Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXJ0
c1dpdGg7Ci0uLi4KLQotICBFWFBFQ1RfVEhBVChGb28oKSwgU3RhcnRzV2l0aCgiSGVsbG8iKSk7
Ci0gIEVYUEVDVF9USEFUKEJhcigpLCBNYXRjaGVzUmVnZXgoIkxpbmUgXFxkKyIpKTsKLSAgQVNT
RVJUX1RIQVQoQmF6KCksIEFsbE9mKEdlKDUpLCBMZSgxMCkpKTsKLWBgYAotCi13aGljaCAoYXMg
eW91IGNhbiBwcm9iYWJseSBndWVzcykgZXhlY3V0ZXMgYEZvbygpYCwgYEJhcigpYCwgYW5kCi1g
QmF6KClgLCBhbmQgdmVyaWZpZXMgdGhhdDoKLQotICAqIGBGb28oKWAgcmV0dXJucyBhIHN0cmlu
ZyB0aGF0IHN0YXJ0cyB3aXRoIGAiSGVsbG8iYC4KLSAgKiBgQmFyKClgIHJldHVybnMgYSBzdHJp
bmcgdGhhdCBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBgIkxpbmUgXFxkKyJgLgotICAqIGBC
YXooKWAgcmV0dXJucyBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzUsIDEwXS4KLQotVGhlIG5pY2Ug
dGhpbmcgYWJvdXQgdGhlc2UgbWFjcm9zIGlzIHRoYXQgX3RoZXkgcmVhZCBsaWtlCi1FbmdsaXNo
Xy4gVGhleSBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdlcyB0b28uIEZvciBleGFtcGxlLCBp
ZiB0aGUKLWZpcnN0IGBFWFBFQ1RfVEhBVCgpYCBhYm92ZSBmYWlscywgdGhlIG1lc3NhZ2Ugd2ls
bCBiZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi1WYWx1ZSBvZjogRm9vKCkKLSAgQWN0dWFsOiAi
SGksIHdvcmxkISIKLUV4cGVjdGVkOiBzdGFydHMgd2l0aCAiSGVsbG8iCi1gYGAKLQotKipDcmVk
aXQ6KiogVGhlIGlkZWEgb2YgYChBU1NFUlR8RVhQRUNUKV9USEFUYCB3YXMgc3RvbGVuIGZyb20g
dGhlCi1bSGFtY3Jlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9oYW1jcmVzdC8pIHByb2pl
Y3QsIHdoaWNoIGFkZHMKLWBhc3NlcnRUaGF0KClgIHRvIEpVbml0LgotCi0jIyBVc2luZyBQcmVk
aWNhdGVzIGFzIE1hdGNoZXJzICMjCi0KLUdvb2dsZSBNb2NrIHByb3ZpZGVzIGEgYnVpbHQtaW4g
c2V0IG9mIG1hdGNoZXJzLiBJbiBjYXNlIHlvdSBmaW5kIHRoZW0KLWxhY2tpbmcsIHlvdSBjYW4g
dXNlIGFuIGFyYml0cmF5IHVuYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yCi1hcyBh
IG1hdGNoZXIgLSBhcyBsb25nIGFzIHRoZSBwcmVkaWNhdGUgYWNjZXB0cyBhIHZhbHVlIG9mIHRo
ZSB0eXBlCi15b3Ugd2FudC4gWW91IGRvIHRoaXMgYnkgd3JhcHBpbmcgdGhlIHByZWRpY2F0ZSBp
bnNpZGUgdGhlIGBUcnVseSgpYAotZnVuY3Rpb24sIGZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6VHJ1bHk7Ci0KLWludCBJc0V2ZW4oaW50IG4pIHsgcmV0dXJuIChuICUgMikg
PT0gMCA/IDEgOiAwOyB9Ci0uLi4KLQotICAvLyBCYXIoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGFu
IGV2ZW4gbnVtYmVyLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihUcnVseShJc0V2ZW4pKSk7Ci1g
YGAKLQotTm90ZSB0aGF0IHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24gLyBmdW5jdG9yIGRvZXNuJ3Qg
aGF2ZSB0byByZXR1cm4KLWBib29sYC4gSXQgd29ya3MgYXMgbG9uZyBhcyB0aGUgcmV0dXJuIHZh
bHVlIGNhbiBiZSB1c2VkIGFzIHRoZQotY29uZGl0aW9uIGluIHN0YXRlbWVudCBgaWYgKGNvbmRp
dGlvbikgLi4uYC4KLQotIyMgTWF0Y2hpbmcgQXJndW1lbnRzIHRoYXQgQXJlIE5vdCBDb3B5YWJs
ZSAjIwotCi1XaGVuIHlvdSBkbyBhbiBgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhiYXIpKWAs
IEdvb2dsZSBNb2NrIHNhdmVzCi1hd2F5IGEgY29weSBvZiBgYmFyYC4gV2hlbiBgRm9vKClgIGlz
IGNhbGxlZCBsYXRlciwgR29vZ2xlIE1vY2sKLWNvbXBhcmVzIHRoZSBhcmd1bWVudCB0byBgRm9v
KClgIHdpdGggdGhlIHNhdmVkIGNvcHkgb2YgYGJhcmAuIFRoaXMKLXdheSwgeW91IGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgYGJhcmAgYmVpbmcgbW9kaWZpZWQgb3IgZGVzdHJveWVkCi1hZnRl
ciB0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4g
eW91IHVzZQotbWF0Y2hlcnMgbGlrZSBgRXEoYmFyKWAsIGBMZShiYXIpYCwgYW5kIHNvIG9uLgot
Ci1CdXQgd2hhdCBpZiBgYmFyYCBjYW5ub3QgYmUgY29waWVkIChpLmUuIGhhcyBubyBjb3B5IGNv
bnN0cnVjdG9yKT8gWW91Ci1jb3VsZCBkZWZpbmUgeW91ciBvd24gbWF0Y2hlciBmdW5jdGlvbiBh
bmQgdXNlIGl0IHdpdGggYFRydWx5KClgLCBhcwotdGhlIHByZXZpb3VzIGNvdXBsZSBvZiByZWNp
cGVzIGhhdmUgc2hvd24uIE9yLCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0Ci1hd2F5IGZyb20gaXQg
aWYgeW91IGNhbiBndWFyYW50ZWUgdGhhdCBgYmFyYCB3b24ndCBiZSBjaGFuZ2VkIGFmdGVyCi10
aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBKdXN0IHRlbGwgR29vZ2xlIE1vY2sgdGhh
dCBpdCBzaG91bGQKLXNhdmUgYSByZWZlcmVuY2UgdG8gYGJhcmAsIGluc3RlYWQgb2YgYSBjb3B5
IG9mIGl0LiBIZXJlJ3MgaG93OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RXE7Ci11c2luZyA6
OnRlc3Rpbmc6OkJ5UmVmOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLS4uLgotICAvLyBFeHBlY3Rz
IHRoYXQgRm9vKCkncyBhcmd1bWVudCA9PSBiYXIuCi0gIEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBG
b28oRXEoQnlSZWYoYmFyKSkpKTsKLQotICAvLyBFeHBlY3RzIHRoYXQgRm9vKCkncyBhcmd1bWVu
dCA8IGJhci4KLSAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhMdChCeVJlZihiYXIpKSkpOwot
YGBgCi0KLVJlbWVtYmVyOiBpZiB5b3UgZG8gdGhpcywgZG9uJ3QgY2hhbmdlIGBiYXJgIGFmdGVy
IHRoZQotYEVYUEVDVF9DQUxMKClgLCBvciB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLQotIyMg
VmFsaWRhdGluZyBhIE1lbWJlciBvZiBhbiBPYmplY3QgIyMKLQotT2Z0ZW4gYSBtb2NrIGZ1bmN0
aW9uIHRha2VzIGEgcmVmZXJlbmNlIHRvIG9iamVjdCBhcyBhbiBhcmd1bWVudC4gV2hlbgotbWF0
Y2hpbmcgdGhlIGFyZ3VtZW50LCB5b3UgbWF5IG5vdCB3YW50IHRvIGNvbXBhcmUgdGhlIGVudGly
ZSBvYmplY3QKLWFnYWluc3QgYSBmaXhlZCBvYmplY3QsIGFzIHRoYXQgbWF5IGJlIG92ZXItc3Bl
Y2lmaWNhdGlvbi4gSW5zdGVhZCwKLXlvdSBtYXkgbmVlZCB0byB2YWxpZGF0ZSBhIGNlcnRhaW4g
bWVtYmVyIHZhcmlhYmxlIG9yIHRoZSByZXN1bHQgb2YgYQotY2VydGFpbiBnZXR0ZXIgbWV0aG9k
IG9mIHRoZSBvYmplY3QuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIGBGaWVsZCgpYAotYW5kIGBQcm9w
ZXJ0eSgpYC4gTW9yZSBzcGVjaWZpY2FsbHksCi0KLWBgYAotRmllbGQoJkZvbzo6YmFyLCBtKQot
YGBgCi0KLWlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBgRm9vYCBvYmplY3Qgd2hvc2UgYGJh
cmAgbWVtYmVyIHZhcmlhYmxlCi1zYXRpc2ZpZXMgbWF0Y2hlciBgbWAuCi0KLWBgYAotUHJvcGVy
dHkoJkZvbzo6YmF6LCBtKQotYGBgCi0KLWlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBgRm9v
YCBvYmplY3Qgd2hvc2UgYGJheigpYCBtZXRob2QgcmV0dXJucwotYSB2YWx1ZSB0aGF0IHNhdGlz
ZmllcyBtYXRjaGVyIGBtYC4KLQotRm9yIGV4YW1wbGU6Ci0KLT4gfCBgRmllbGQoJkZvbzo6bnVt
YmVyLCBHZSgzKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubnVtYmVyID49IDNgLiB8Ci18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLT4gfCBgUHJvcGVydHkoJkZvbzo6bmFtZSwgU3RhcnRzV2l0aCgiSm9obiAiKSlg
IHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubmFtZSgpYCBzdGFydHMgd2l0aCBgIkpvaG4gImAuIHwK
LQotTm90ZSB0aGF0IGluIGBQcm9wZXJ0eSgmRm9vOjpiYXosIC4uLilgLCBtZXRob2QgYGJheigp
YCBtdXN0IHRha2Ugbm8KLWFyZ3VtZW50IGFuZCBiZSBkZWNsYXJlZCBhcyBgY29uc3RgLgotCi1C
VFcsIGBGaWVsZCgpYCBhbmQgYFByb3BlcnR5KClgIGNhbiBhbHNvIG1hdGNoIHBsYWluIHBvaW50
ZXJzIHRvCi1vYmplY3RzLiBGb3IgaW5zdGFuY2UsCi0KLWBgYAotRmllbGQoJkZvbzo6bnVtYmVy
LCBHZSgzKSkKLWBgYAotCi1tYXRjaGVzIGEgcGxhaW4gcG9pbnRlciBgcGAgd2hlcmUgYHAtPm51
bWJlciA+PSAzYC4gSWYgYHBgIGlzIGBOVUxMYCwKLXRoZSBtYXRjaCB3aWxsIGFsd2F5cyBmYWls
IHJlZ2FyZGxlc3Mgb2YgdGhlIGlubmVyIG1hdGNoZXIuCi0KLVdoYXQgaWYgeW91IHdhbnQgdG8g
dmFsaWRhdGUgbW9yZSB0aGFuIG9uZSBtZW1iZXJzIGF0IHRoZSBzYW1lIHRpbWU/Ci1SZW1lbWJl
ciB0aGF0IHRoZXJlIGlzIGBBbGxPZigpYC4KLQotIyMgVmFsaWRhdGluZyB0aGUgVmFsdWUgUG9p
bnRlZCB0byBieSBhIFBvaW50ZXIgQXJndW1lbnQgIyMKLQotQysrIGZ1bmN0aW9ucyBvZnRlbiB0
YWtlIHBvaW50ZXJzIGFzIGFyZ3VtZW50cy4gWW91IGNhbiB1c2UgbWF0Y2hlcnMKLWxpa2UgYElz
TnVsbCgpYCwgYE5vdE51bGwoKWAsIGFuZCBvdGhlciBjb21wYXJpc29uIG1hdGNoZXJzIHRvIG1h
dGNoIGEKLXBvaW50ZXIsIGJ1dCB3aGF0IGlmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgdmFs
dWUgX3BvaW50ZWQgdG9fIGJ5Ci10aGUgcG9pbnRlciwgaW5zdGVhZCBvZiB0aGUgcG9pbnRlciBp
dHNlbGYsIGhhcyBhIGNlcnRhaW4gcHJvcGVydHk/Ci1XZWxsLCB5b3UgY2FuIHVzZSB0aGUgYFBv
aW50ZWUobSlgIG1hdGNoZXIuCi0KLWBQb2ludGVlKG0pYCBtYXRjaGVzIGEgcG9pbnRlciBpZmYg
YG1gIG1hdGNoZXMgdGhlIHZhbHVlIHRoZSBwb2ludGVyCi1wb2ludHMgdG8uIEZvciBleGFtcGxl
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6R2U7Ci11c2luZyA6OnRlc3Rpbmc6OlBvaW50ZWU7
Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoUG9pbnRlZShHZSgzKSkpKTsKLWBgYAotCi1l
eHBlY3RzIGBmb28uQmFyKClgIHRvIGJlIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0aGF0IHBvaW50
cyB0byBhIHZhbHVlCi1ncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMy4KLQotT25lIG5pY2UgdGhp
bmcgYWJvdXQgYFBvaW50ZWUoKWAgaXMgdGhhdCBpdCB0cmVhdHMgYSBgTlVMTGAgcG9pbnRlciBh
cwotYSBtYXRjaCBmYWlsdXJlLCBzbyB5b3UgY2FuIHdyaXRlIGBQb2ludGVlKG0pYCBpbnN0ZWFk
IG9mCi0KLWBgYAotICBBbGxPZihOb3ROdWxsKCksIFBvaW50ZWUobSkpCi1gYGAKLQotd2l0aG91
dCB3b3JyeWluZyB0aGF0IGEgYE5VTExgIHBvaW50ZXIgd2lsbCBjcmFzaCB5b3VyIHRlc3QuCi0K
LUFsc28sIGRpZCB3ZSB0ZWxsIHlvdSB0aGF0IGBQb2ludGVlKClgIHdvcmtzIHdpdGggYm90aCBy
YXcgcG9pbnRlcnMKLSoqYW5kKiogc21hcnQgcG9pbnRlcnMgKGBsaW5rZWRfcHRyYCwgYHNoYXJl
ZF9wdHJgLCBgc2NvcGVkX3B0cmAsIGFuZAotZXRjKT8KLQotV2hhdCBpZiB5b3UgaGF2ZSBhIHBv
aW50ZXIgdG8gcG9pbnRlcj8gWW91IGd1ZXNzZWQgaXQgLSB5b3UgY2FuIHVzZQotbmVzdGVkIGBQ
b2ludGVlKClgIHRvIHByb2JlIGRlZXBlciBpbnNpZGUgdGhlIHZhbHVlLiBGb3IgZXhhbXBsZSwK
LWBQb2ludGVlKFBvaW50ZWUoTHQoMykpKWAgbWF0Y2hlcyBhIHBvaW50ZXIgdGhhdCBwb2ludHMg
dG8gYSBwb2ludGVyCi10aGF0IHBvaW50cyB0byBhIG51bWJlciBsZXNzIHRoYW4gMyAod2hhdCBh
IG1vdXRoZnVsLi4uKS4KLQotIyMgVGVzdGluZyBhIENlcnRhaW4gUHJvcGVydHkgb2YgYW4gT2Jq
ZWN0ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoYXQgYW4gb2JqZWN0IGFy
Z3VtZW50IGhhcyBhIGNlcnRhaW4KLXByb3BlcnR5LCBidXQgdGhlcmUgaXMgbm8gZXhpc3Rpbmcg
bWF0Y2hlciB0aGF0IGRvZXMgdGhpcy4gSWYgeW91IHdhbnQKLWdvb2QgZXJyb3IgbWVzc2FnZXMs
IHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Y2hlci4gSWYgeW91IHdhbnQgdG8gZG8gaXQKLXF1aWNr
IGFuZCBkaXJ0eSwgeW91IGNvdWxkIGdldCBhd2F5IHdpdGggd3JpdGluZyBhbiBvcmRpbmFyeSBm
dW5jdGlvbi4KLQotTGV0J3Mgc2F5IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiB0aGF0IHRha2Vz
IGFuIG9iamVjdCBvZiB0eXBlIGBGb29gLAotd2hpY2ggaGFzIGFuIGBpbnQgYmFyKClgIG1ldGhv
ZCBhbmQgYW4gYGludCBiYXooKWAgbWV0aG9kLCBhbmQgeW91Ci13YW50IHRvIGNvbnN0cmFpbiB0
aGF0IHRoZSBhcmd1bWVudCdzIGBiYXIoKWAgdmFsdWUgcGx1cyBpdHMgYGJheigpYAotdmFsdWUg
aXMgYSBnaXZlbiBudW1iZXIuIEhlcmUncyBob3cgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRv
IGRvIGl0OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLQotY2xhc3MgQmFyUGx1c0JhekVxTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGNvbnN0IEZvbyY+IHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IEJhclBsdXNCYXpFcU1hdGNoZXIoaW50IGV4cGVjdGVkX3N1bSkKLSAgICAgIDog
ZXhwZWN0ZWRfc3VtXyhleHBlY3RlZF9zdW0pIHt9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5k
RXhwbGFpbihjb25zdCBGb28mIGZvbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiAoZm9vLmJh
cigpICsgZm9vLmJheigpKSA9PSBleHBlY3RlZF9zdW1fOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJiYXIo
KSArIGJheigpIGVxdWFscyAiIDw8IGV4cGVjdGVkX3N1bV87Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpv
cyA8PCAiYmFyKCkgKyBiYXooKSBkb2VzIG5vdCBlcXVhbCAiIDw8IGV4cGVjdGVkX3N1bV87Ci0g
IH0KLSBwcml2YXRlOgotICBjb25zdCBpbnQgZXhwZWN0ZWRfc3VtXzsKLX07Ci0KLWlubGluZSBN
YXRjaGVyPGNvbnN0IEZvbyY+IEJhclBsdXNCYXpFcShpbnQgZXhwZWN0ZWRfc3VtKSB7Ci0gIHJl
dHVybiBNYWtlTWF0Y2hlcihuZXcgQmFyUGx1c0JhekVxTWF0Y2hlcihleHBlY3RlZF9zdW0pKTsK
LX0KLQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoLi4uLCBEb1RoaXMoQmFyUGx1c0JhekVxKDUpKSku
Li47Ci1gYGAKLQotIyMgTWF0Y2hpbmcgQ29udGFpbmVycyAjIwotCi1Tb21ldGltZXMgYW4gU1RM
IGNvbnRhaW5lciAoZS5nLiBsaXN0LCB2ZWN0b3IsIG1hcCwgLi4uKSBpcyBwYXNzZWQgdG8KLWEg
bW9jayBmdW5jdGlvbiBhbmQgeW91IG1heSB3YW50IHRvIHZhbGlkYXRlIGl0LiBTaW5jZSBtb3N0
IFNUTAotY29udGFpbmVycyBzdXBwb3J0IHRoZSBgPT1gIG9wZXJhdG9yLCB5b3UgY2FuIHdyaXRl
Ci1gRXEoZXhwZWN0ZWRfY29udGFpbmVyKWAgb3Igc2ltcGx5IGBleHBlY3RlZF9jb250YWluZXJg
IHRvIG1hdGNoIGEKLWNvbnRhaW5lciBleGFjdGx5LgotCi1Tb21ldGltZXMsIHRob3VnaCwgeW91
IG1heSB3YW50IHRvIGJlIG1vcmUgZmxleGlibGUgKGZvciBleGFtcGxlLCB0aGUKLWZpcnN0IGVs
ZW1lbnQgbXVzdCBiZSBhbiBleGFjdCBtYXRjaCwgYnV0IHRoZSBzZWNvbmQgZWxlbWVudCBjYW4g
YmUKLWFueSBwb3NpdGl2ZSBudW1iZXIsIGFuZCBzbyBvbikuIEFsc28sIGNvbnRhaW5lcnMgdXNl
ZCBpbiB0ZXN0cyBvZnRlbgotaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cywgYW5kIGhh
dmluZyB0byBkZWZpbmUgdGhlIGV4cGVjdGVkCi1jb250YWluZXIgb3V0LW9mLWxpbmUgaXMgYSBi
aXQgb2YgYSBoYXNzbGUuCi0KLVlvdSBjYW4gdXNlIHRoZSBgRWxlbWVudHNBcmUoKWAgb3IgYFVu
b3JkZXJlZEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4KLXN1Y2ggY2FzZXM6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZTsKLXVzaW5nIDo6
dGVzdGluZzo6R3Q7Ci0uLi4KLQotICBNT0NLX01FVEhPRDEoRm9vLCB2b2lkKGNvbnN0IHZlY3Rv
cjxpbnQ+JiBudW1iZXJzKSk7Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVu
dHNBcmUoMSwgR3QoMCksIF8sIDUpKSk7Ci1gYGAKLQotVGhlIGFib3ZlIG1hdGNoZXIgc2F5cyB0
aGF0IHRoZSBjb250YWluZXIgbXVzdCBoYXZlIDQgZWxlbWVudHMsIHdoaWNoCi1tdXN0IGJlIDEs
IGdyZWF0ZXIgdGhhbiAwLCBhbnl0aGluZywgYW5kIDUgcmVzcGVjdGl2ZWx5LgotCi1JZiB5b3Ug
aW5zdGVhZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVtZW50c0FyZTsKLS4uLgotCi0g
IE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29uc3QgdmVjdG9yPGludD4mIG51bWJlcnMpKTsKLS4u
LgotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhVbm9yZGVyZWRFbGVtZW50c0FyZSgxLCBHdCgw
KSwgXywgNSkpKTsKLWBgYAotCi1JdCBtZWFucyB0aGF0IHRoZSBjb250YWluZXIgbXVzdCBoYXZl
IDQgZWxlbWVudHMsIHdoaWNoIHVuZGVyIHNvbWUKLXBlcm11dGF0aW9uIG11c3QgYmUgMSwgZ3Jl
YXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZlbHkuCi0KLWBFbGVtZW50c0Fy
ZSgpYCBhbmQgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIGFyZSBvdmVybG9hZGVkIHRvIHRha2Ug
MAotdG8gMTAgYXJndW1lbnRzLiBJZiBtb3JlIGFyZSBuZWVkZWQsIHlvdSBjYW4gcGxhY2UgdGhl
bSBpbiBhIEMtc3R5bGUKLWFycmF5IGFuZCB1c2UgYEVsZW1lbnRzQXJlQXJyYXkoKWAgb3IgYFVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKWAKLWluc3RlYWQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpFbGVtZW50c0FyZUFycmF5OwotLi4uCi0KLSAgLy8gRWxlbWVudHNBcmVBcnJheSBhY2Nl
cHRzIGFuIGFycmF5IG9mIGVsZW1lbnQgdmFsdWVzLgotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmVj
dG9yMVtdID0geyAxLCA1LCAyLCA0LCAuLi4gfTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVs
ZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMSkpKTsKLQotICAvLyBPciwgYW4gYXJyYXkg
b2YgZWxlbWVudCBtYXRjaGVycy4KLSAgTWF0Y2hlcjxpbnQ+IGV4cGVjdGVkX3ZlY3RvcjIgPSB7
IDEsIEd0KDIpLCBfLCAzLCAuLi4gfTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRz
QXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMikpKTsKLWBgYAotCi1JbiBjYXNlIHRoZSBhcnJheSBu
ZWVkcyB0byBiZSBkeW5hbWljYWxseSBjcmVhdGVkIChhbmQgdGhlcmVmb3JlIHRoZQotYXJyYXkg
c2l6ZSBjYW5ub3QgYmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyKSwgeW91IGNhbiBnaXZlCi1g
RWxlbWVudHNBcmVBcnJheSgpYCBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIHNwZWNpZnkgdGhl
IGFycmF5IHNpemU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5Owot
Li4uCi0gIGludCogY29uc3QgZXhwZWN0ZWRfdmVjdG9yMyA9IG5ldyBpbnRbY291bnRdOwotICAu
Li4gZmlsbCBleHBlY3RlZF92ZWN0b3IzIHdpdGggdmFsdWVzIC4uLgotICBFWFBFQ1RfQ0FMTCht
b2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IzLCBjb3VudCkpKTsKLWBg
YAotCi0qKlRpcHM6KioKLQotICAqIGBFbGVtZW50c0FyZSooKWAgY2FuIGJlIHVzZWQgdG8gbWF0
Y2ggX2FueV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgU1RMIGl0ZXJhdG9yIHBhdHRl
cm4gKGkuZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0eXBlIGFuZCBzdXBwb3J0cyBgYmVn
aW4oKS9lbmQoKWApLCBub3QganVzdCB0aGUgb25lcyBkZWZpbmVkIGluIFNUTC4gSXQgd2lsbCBl
dmVuIHdvcmsgd2l0aCBjb250YWluZXIgdHlwZXMgeWV0IHRvIGJlIHdyaXR0ZW4gLSBhcyBsb25n
IGFzIHRoZXkgZm9sbG93cyB0aGUgYWJvdmUgcGF0dGVybi4KLSAgKiBZb3UgY2FuIHVzZSBuZXN0
ZWQgYEVsZW1lbnRzQXJlKigpYCB0byBtYXRjaCBuZXN0ZWQgKG11bHRpLWRpbWVuc2lvbmFsKSBj
b250YWluZXJzLgotICAqIElmIHRoZSBjb250YWluZXIgaXMgcGFzc2VkIGJ5IHBvaW50ZXIgaW5z
dGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBvaW50ZWUoRWxlbWVudHNBcmUqKC4u
LikpYC4KLSAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21hdHRlcnNfIGZvciBgRWxlbWVudHNB
cmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGggY29udGFpbmVycyB3aG9zZSBlbGVt
ZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9tYXBgKS4KLQotIyMgU2hhcmluZyBN
YXRjaGVycyAjIwotCi1VbmRlciB0aGUgaG9vZCwgYSBHb29nbGUgTW9jayBtYXRjaGVyIG9iamVj
dCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KLWEgcmVmLWNvdW50ZWQgaW1wbGVtZW50YXRpb24g
b2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQgYW5kCi12ZXJ5IGVmZmljaWVudCwg
YXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4gdGhlIGxhc3QgbWF0Y2hlcgotdGhh
dCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QgZGllcywgdGhlIGltcGxlbWVu
dGF0aW9uCi1vYmplY3Qgd2lsbCBiZSBkZWxldGVkLgotCi1UaGVyZWZvcmUsIGlmIHlvdSBoYXZl
IHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQgdG8gdXNlIGFnYWluCi1hbmQgYWdh
aW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZlcnl0aW1lLiBKdXN0IGFzc2lnbiBp
dCB0byBhCi1tYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2YXJpYWJsZSByZXBlYXRlZGx5
ISBGb3IgZXhhbXBsZSwKLQotYGBgCi0gIE1hdGNoZXI8aW50PiBpbl9yYW5nZSA9IEFsbE9mKEd0
KDUpLCBMZSgxMCkpOwotICAuLi4gdXNlIGluX3JhbmdlIGFzIGEgbWF0Y2hlciBpbiBtdWx0aXBs
ZSBFWFBFQ1RfQ0FMTHMgLi4uCi1gYGAKLQotIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAjCi0KLSMj
IEtub3dpbmcgV2hlbiB0byBFeHBlY3QgIyMKLQotYE9OX0NBTExgIGlzIGxpa2VseSB0aGUgc2lu
Z2xlIG1vc3QgdW5kZXItdXRpbGl6ZWQgY29uc3RydWN0IGluIEdvb2dsZSBNb2NrLgotCi1UaGVy
ZSBhcmUgYmFzaWNhbGx5IHR3byBjb25zdHJ1Y3RzIGZvciBkZWZpbmluZyB0aGUgYmVoYXZpb3Ig
b2YgYSBtb2NrIG9iamVjdDogYE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgLiBUaGUgZGlmZmVy
ZW5jZT8gYE9OX0NBTExgIGRlZmluZXMgd2hhdCBoYXBwZW5zIHdoZW4gYSBtb2NrIG1ldGhvZCBp
cyBjYWxsZWQsIGJ1dCBfZG9lc24ndCBpbXBseSBhbnkgZXhwZWN0YXRpb24gb24gdGhlIG1ldGhv
ZCBiZWluZyBjYWxsZWQuXyBgRVhQRUNUX0NBTExgIG5vdCBvbmx5IGRlZmluZXMgdGhlIGJlaGF2
aW9yLCBidXQgYWxzbyBzZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgX3RoZSBtZXRob2Qgd2lsbCBi
ZSBjYWxsZWQgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBmb3IgdGhlIGdpdmVuIG51bWJlciBv
ZiB0aW1lc18gKGFuZCBfaW4gdGhlIGdpdmVuIG9yZGVyXyB3aGVuIHlvdSBzcGVjaWZ5IHRoZSBv
cmRlciB0b28pLgotCi1TaW5jZSBgRVhQRUNUX0NBTExgIGRvZXMgbW9yZSwgaXNuJ3QgaXQgYmV0
dGVyIHRoYW4gYE9OX0NBTExgPyBOb3QgcmVhbGx5LiBFdmVyeSBgRVhQRUNUX0NBTExgIGFkZHMg
YSBjb25zdHJhaW50IG9uIHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZSB1bmRlciB0ZXN0LiBIYXZp
bmcgbW9yZSBjb25zdHJhaW50cyB0aGFuIG5lY2Vzc2FyeSBpcyBfYmFhYWRfIC0gZXZlbiB3b3Jz
ZSB0aGFuIG5vdCBoYXZpbmcgZW5vdWdoIGNvbnN0cmFpbnRzLgotCi1UaGlzIG1heSBiZSBjb3Vu
dGVyLWludHVpdGl2ZS4gSG93IGNvdWxkIHRlc3RzIHRoYXQgdmVyaWZ5IG1vcmUgYmUgd29yc2Ug
dGhhbiB0ZXN0cyB0aGF0IHZlcmlmeSBsZXNzPyBJc24ndCB2ZXJpZmljYXRpb24gdGhlIHdob2xl
IHBvaW50IG9mIHRlc3RzPwotCi1UaGUgYW5zd2VyLCBsaWVzIGluIF93aGF0XyBhIHRlc3Qgc2hv
dWxkIHZlcmlmeS4gKipBIGdvb2QgdGVzdCB2ZXJpZmllcyB0aGUgY29udHJhY3Qgb2YgdGhlIGNv
ZGUuKiogSWYgYSB0ZXN0IG92ZXItc3BlY2lmaWVzLCBpdCBkb2Vzbid0IGxlYXZlIGVub3VnaCBm
cmVlZG9tIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gQXMgYSByZXN1bHQsIGNoYW5naW5nIHRoZSBp
bXBsZW1lbnRhdGlvbiB3aXRob3V0IGJyZWFraW5nIHRoZSBjb250cmFjdCAoZS5nLiByZWZhY3Rv
cmluZyBhbmQgb3B0aW1pemF0aW9uKSwgd2hpY2ggc2hvdWxkIGJlIHBlcmZlY3RseSBmaW5lIHRv
IGRvLCBjYW4gYnJlYWsgc3VjaCB0ZXN0cy4gVGhlbiB5b3UgaGF2ZSB0byBzcGVuZCB0aW1lIGZp
eGluZyB0aGVtLCBvbmx5IHRvIHNlZSB0aGVtIGJyb2tlbiBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkLgotCi1LZWVwIGluIG1pbmQgdGhhdCBvbmUgZG9l
c24ndCBoYXZlIHRvIHZlcmlmeSBtb3JlIHRoYW4gb25lIHByb3BlcnR5IGluIG9uZSB0ZXN0LiBJ
biBmYWN0LCAqKml0J3MgYSBnb29kIHN0eWxlIHRvIHZlcmlmeSBvbmx5IG9uZSB0aGluZyBpbiBv
bmUgdGVzdC4qKiBJZiB5b3UgZG8gdGhhdCwgYSBidWcgd2lsbCBsaWtlbHkgYnJlYWsgb25seSBv
bmUgb3IgdHdvIHRlc3RzIGluc3RlYWQgb2YgZG96ZW5zICh3aGljaCBjYXNlIHdvdWxkIHlvdSBy
YXRoZXIgZGVidWc/KS4gSWYgeW91IGFyZSBhbHNvIGluIHRoZSBoYWJpdCBvZiBnaXZpbmcgdGVz
dHMgZGVzY3JpcHRpdmUgbmFtZXMgdGhhdCB0ZWxsIHdoYXQgdGhleSB2ZXJpZnksIHlvdSBjYW4g
b2Z0ZW4gZWFzaWx5IGd1ZXNzIHdoYXQncyB3cm9uZyBqdXN0IGZyb20gdGhlIHRlc3QgbG9nIGl0
c2VsZi4KLQotU28gdXNlIGBPTl9DQUxMYCBieSBkZWZhdWx0LCBhbmQgb25seSB1c2UgYEVYUEVD
VF9DQUxMYCB3aGVuIHlvdSBhY3R1YWxseSBpbnRlbmQgdG8gdmVyaWZ5IHRoYXQgdGhlIGNhbGwg
aXMgbWFkZS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgaGF2ZSBhIGJ1bmNoIG9mIGBPTl9DQUxMYHMg
aW4geW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0IHRoZSBjb21tb24gbW9jayBiZWhhdmlvciBzaGFy
ZWQgYnkgYWxsIHRlc3RzIGluIHRoZSBzYW1lIGdyb3VwLCBhbmQgd3JpdGUgKHNjYXJjZWx5KSBk
aWZmZXJlbnQgYEVYUEVDVF9DQUxMYHMgaW4gZGlmZmVyZW50IGBURVNUX0ZgcyB0byB2ZXJpZnkg
ZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIGNvZGUncyBiZWhhdmlvci4gQ29tcGFyZWQgd2l0aCB0
aGUgc3R5bGUgd2hlcmUgZWFjaCBgVEVTVGAgaGFzIG1hbnkgYEVYUEVDVF9DQUxMYHMsIHRoaXMg
bGVhZHMgdG8gdGVzdHMgdGhhdCBhcmUgbW9yZSByZXNpbGllbnQgdG8gaW1wbGVtZW50YXRpb25h
bCBjaGFuZ2VzIChhbmQgdGh1cyBsZXNzIGxpa2VseSB0byByZXF1aXJlIG1haW50ZW5hbmNlKSBh
bmQgbWFrZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdHMgbW9yZSBvYnZpb3VzIChzbyB0aGV5IGFy
ZSBlYXNpZXIgdG8gbWFpbnRhaW4gd2hlbiB5b3UgZG8gbmVlZCB0byBtYWludGFpbiB0aGVtKS4K
LQotIyMgSWdub3JpbmcgVW5pbnRlcmVzdGluZyBDYWxscyAjIwotCi1JZiB5b3UgYXJlIG5vdCBp
bnRlcmVzdGVkIGluIGhvdyBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwganVzdCBkb24ndAotc2F5
IGFueXRoaW5nIGFib3V0IGl0LiBJbiB0aGlzIGNhc2UsIGlmIHRoZSBtZXRob2QgaXMgZXZlciBj
YWxsZWQsCi1Hb29nbGUgTW9jayB3aWxsIHBlcmZvcm0gaXRzIGRlZmF1bHQgYWN0aW9uIHRvIGFs
bG93IHRoZSB0ZXN0IHByb2dyYW0KLXRvIGNvbnRpbnVlLiBJZiB5b3UgYXJlIG5vdCBoYXBweSB3
aXRoIHRoZSBkZWZhdWx0IGFjdGlvbiB0YWtlbiBieQotR29vZ2xlIE1vY2ssIHlvdSBjYW4gb3Zl
cnJpZGUgaXQgdXNpbmcgYERlZmF1bHRWYWx1ZTxUPjo6U2V0KClgCi0oZGVzY3JpYmVkIGxhdGVy
IGluIHRoaXMgZG9jdW1lbnQpIG9yIGBPTl9DQUxMKClgLgotCi1QbGVhc2Ugbm90ZSB0aGF0IG9u
Y2UgeW91IGV4cHJlc3NlZCBpbnRlcmVzdCBpbiBhIHBhcnRpY3VsYXIgbW9jawotbWV0aG9kICh2
aWEgYEVYUEVDVF9DQUxMKClgKSwgYWxsIGludm9jYXRpb25zIHRvIGl0IG11c3QgbWF0Y2ggc29t
ZQotZXhwZWN0YXRpb24uIElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ1dCB0aGUgYXJndW1l
bnRzIGRvbid0IG1hdGNoCi1hbnkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCwgaXQgd2lsbCBi
ZSBhbiBlcnJvci4KLQotIyMgRGlzYWxsb3dpbmcgVW5leHBlY3RlZCBDYWxscyAjIwotCi1JZiBh
IG1vY2sgbWV0aG9kIHNob3VsZG4ndCBiZSBjYWxsZWQgYXQgYWxsLCBleHBsaWNpdGx5IHNheSBz
bzoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBC
YXIoXykpCi0gICAgICAuVGltZXMoMCk7Ci1gYGAKLQotSWYgc29tZSBjYWxscyB0byB0aGUgbWV0
aG9kIGFyZSBhbGxvd2VkLCBidXQgdGhlIHJlc3QgYXJlIG5vdCwganVzdAotbGlzdCBhbGwgdGhl
IGV4cGVjdGVkIGNhbGxzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNp
bmcgOjp0ZXN0aW5nOjpHdDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcig1KSk7Ci0gIEVY
UEVDVF9DQUxMKGZvbywgQmFyKEd0KDEwKSkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwot
YGBgCi0KLUEgY2FsbCB0byBgZm9vLkJhcigpYCB0aGF0IGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRo
ZSBgRVhQRUNUX0NBTEwoKWAKLXN0YXRlbWVudHMgd2lsbCBiZSBhbiBlcnJvci4KLQotIyMgRXhw
ZWN0aW5nIE9yZGVyZWQgQ2FsbHMgIyMKLQotQWx0aG91Z2ggYW4gYEVYUEVDVF9DQUxMKClgIHN0
YXRlbWVudCBkZWZpbmVkIGVhcmxpZXIgdGFrZXMgcHJlY2VkZW5jZQotd2hlbiBHb29nbGUgTW9j
ayB0cmllcyB0byBtYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBleHBlY3RhdGlvbiwKLWJ5
IGRlZmF1bHQgY2FsbHMgZG9uJ3QgaGF2ZSB0byBoYXBwZW4gaW4gdGhlIG9yZGVyIGBFWFBFQ1Rf
Q0FMTCgpYAotc3RhdGVtZW50cyBhcmUgd3JpdHRlbi4gRm9yIGV4YW1wbGUsIGlmIHRoZSBhcmd1
bWVudHMgbWF0Y2ggdGhlCi1tYXRjaGVycyBpbiB0aGUgdGhpcmQgYEVYUEVDVF9DQUxMKClgLCBi
dXQgbm90IHRob3NlIGluIHRoZSBmaXJzdCB0d28sCi10aGVuIHRoZSB0aGlyZCBleHBlY3RhdGlv
biB3aWxsIGJlIHVzZWQuCi0KLUlmIHlvdSB3b3VsZCByYXRoZXIgaGF2ZSBhbGwgY2FsbHMgb2Nj
dXIgaW4gdGhlIG9yZGVyIG9mIHRoZQotZXhwZWN0YXRpb25zLCBwdXQgdGhlIGBFWFBFQ1RfQ0FM
TCgpYCBzdGF0ZW1lbnRzIGluIGEgYmxvY2sgd2hlcmUgeW91Ci1kZWZpbmUgYSB2YXJpYWJsZSBv
ZiB0eXBlIGBJblNlcXVlbmNlYDoKLQotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6XzsKLSAgdXNp
bmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotCi0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0KLSAg
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSk7Ci0gICAgRVhQRUNUX0NBTEwoYmFyLCBEb1Ro
YXQoXykpCi0gICAgICAgIC5UaW1lcygyKTsKLSAgICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg2
KSk7Ci0gIH0KLWBgYAotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIGV4cGVjdCBhIGNhbGwgdG8gYGZv
by5Eb1RoaXMoNSlgLCBmb2xsb3dlZCBieSB0d28KLWNhbGxzIHRvIGBiYXIuRG9UaGF0KClgIHdo
ZXJlIHRoZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcsIHdoaWNoIGFyZQotaW4gdHVybiBmb2xs
b3dlZCBieSBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNilgLiBJZiBhIGNhbGwgb2NjdXJyZWQKLW91
dC1vZi1vcmRlciwgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IuCi0KLSMjIEV4cGVj
dGluZyBQYXJ0aWFsbHkgT3JkZXJlZCBDYWxscyAjIwotCi1Tb21ldGltZXMgcmVxdWlyaW5nIGV2
ZXJ5dGhpbmcgdG8gb2NjdXIgaW4gYSBwcmVkZXRlcm1pbmVkIG9yZGVyIGNhbgotbGVhZCB0byBi
cml0dGxlIHRlc3RzLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGNhcmUgYWJvdXQgYEFgIG9jY3Vycmlu
ZwotYmVmb3JlIGJvdGggYEJgIGFuZCBgQ2AsIGJ1dCBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0aGUg
cmVsYXRpdmUgb3JkZXIKLW9mIGBCYCBhbmQgYENgLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IHNo
b3VsZCByZWZsZWN0IG91ciByZWFsIGludGVudCwKLWluc3RlYWQgb2YgYmVpbmcgb3Zlcmx5IGNv
bnN0cmFpbmluZy4KLQotR29vZ2xlIE1vY2sgYWxsb3dzIHlvdSB0byBpbXBvc2UgYW4gYXJiaXRy
YXJ5IERBRyAoZGlyZWN0ZWQgYWN5Y2xpYwotZ3JhcGgpIG9uIHRoZSBjYWxscy4gT25lIHdheSB0
byBleHByZXNzIHRoZSBEQUcgaXMgdG8gdXNlIHRoZQotW0FmdGVyXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ2hlYXRTaGVldCNUaGVfQWZ0ZXJfQ2xhdXNl
KSBjbGF1c2Ugb2YgYEVYUEVDVF9DQUxMYC4KLQotQW5vdGhlciB3YXkgaXMgdmlhIHRoZSBgSW5T
ZXF1ZW5jZSgpYCBjbGF1c2UgKG5vdCB0aGUgc2FtZSBhcyB0aGUKLWBJblNlcXVlbmNlYCBjbGFz
cyksIHdoaWNoIHdlIGJvcnJvd2VkIGZyb20gak1vY2sgMi4gSXQncyBsZXNzCi1mbGV4aWJsZSB0
aGFuIGBBZnRlcigpYCwgYnV0IG1vcmUgY29udmVuaWVudCB3aGVuIHlvdSBoYXZlIGxvbmcgY2hh
aW5zCi1vZiBzZXF1ZW50aWFsIGNhbGxzLCBhcyBpdCBkb2Vzbid0IHJlcXVpcmUgeW91IHRvIGNv
bWUgdXAgd2l0aAotZGlmZmVyZW50IG5hbWVzIGZvciB0aGUgZXhwZWN0YXRpb25zIGluIHRoZSBj
aGFpbnMuICBIZXJlJ3MgaG93IGl0Ci13b3JrczoKLQotSWYgd2UgdmlldyBgRVhQRUNUX0NBTEwo
KWAgc3RhdGVtZW50cyBhcyBub2RlcyBpbiBhIGdyYXBoLCBhbmQgYWRkIGFuCi1lZGdlIGZyb20g
bm9kZSBBIHRvIG5vZGUgQiB3aGVyZXZlciBBIG11c3Qgb2NjdXIgYmVmb3JlIEIsIHdlIGNhbiBn
ZXQKLWEgREFHLiBXZSB1c2UgdGhlIHRlcm0gInNlcXVlbmNlIiB0byBtZWFuIGEgZGlyZWN0ZWQg
cGF0aCBpbiB0aGlzCi1EQUcuIE5vdywgaWYgd2UgZGVjb21wb3NlIHRoZSBEQUcgaW50byBzZXF1
ZW5jZXMsIHdlIGp1c3QgbmVlZCB0byBrbm93Ci13aGljaCBzZXF1ZW5jZXMgZWFjaCBgRVhQRUNU
X0NBTEwoKWAgYmVsb25ncyB0byBpbiBvcmRlciB0byBiZSBhYmxlIHRvCi1yZWNvbnN0cnVjdCB0
aGUgb3JnaW5hbCBEQUcuCi0KLVNvLCB0byBzcGVjaWZ5IHRoZSBwYXJ0aWFsIG9yZGVyIG9uIHRo
ZSBleHBlY3RhdGlvbnMgd2UgbmVlZCB0byBkbyB0d28KLXRoaW5nczogZmlyc3QgdG8gZGVmaW5l
IHNvbWUgYFNlcXVlbmNlYCBvYmplY3RzLCBhbmQgdGhlbiBmb3IgZWFjaAotYEVYUEVDVF9DQUxM
KClgIHNheSB3aGljaCBgU2VxdWVuY2VgIG9iamVjdHMgaXQgaXMgcGFydAotb2YuIEV4cGVjdGF0
aW9ucyBpbiB0aGUgc2FtZSBzZXF1ZW5jZSBtdXN0IG9jY3VyIGluIHRoZSBvcmRlciB0aGV5IGFy
ZQotd3JpdHRlbi4gRm9yIGV4YW1wbGUsCi0KLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6OlNlcXVl
bmNlOwotCi0gIFNlcXVlbmNlIHMxLCBzMjsKLQotICBFWFBFQ1RfQ0FMTChmb28sIEEoKSkKLSAg
ICAgIC5JblNlcXVlbmNlKHMxLCBzMik7Ci0gIEVYUEVDVF9DQUxMKGJhciwgQigpKQotICAgICAg
LkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1RfQ0FMTChiYXIsIEMoKSkKLSAgICAgIC5JblNlcXVl
bmNlKHMyKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMik7
Ci1gYGAKLQotc3BlY2lmaWVzIHRoZSBmb2xsb3dpbmcgREFHICh3aGVyZSBgczFgIGlzIGBBIC0+
IEJgLCBhbmQgYHMyYCBpcyBgQSAtPgotQyAtPiBEYCk6Ci0KLWBgYAotICAgICAgICstLS0+IEIK
LSAgICAgICB8Ci0gIEEgLS0tfAotICAgICAgIHwKLSAgICAgICArLS0tPiBDIC0tLT4gRAotYGBg
Ci0KLVRoaXMgbWVhbnMgdGhhdCBBIG11c3Qgb2NjdXIgYmVmb3JlIEIgYW5kIEMsIGFuZCBDIG11
c3Qgb2NjdXIgYmVmb3JlCi1ELiBUaGVyZSdzIG5vIHJlc3RyaWN0aW9uIGFib3V0IHRoZSBvcmRl
ciBvdGhlciB0aGFuIHRoZXNlLgotCi0jIyBDb250cm9sbGluZyBXaGVuIGFuIEV4cGVjdGF0aW9u
IFJldGlyZXMgIyMKLQotV2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwgR29vZ2xlIE1vY2sg
b25seSBjb25zaWRlciBleHBlY3RhdGlvbnMKLXRoYXQgYXJlIHN0aWxsIGFjdGl2ZS4gQW4gZXhw
ZWN0YXRpb24gaXMgYWN0aXZlIHdoZW4gY3JlYXRlZCwgYW5kCi1iZWNvbWVzIGluYWN0aXZlIChh
a2EgX3JldGlyZXNfKSB3aGVuIGEgY2FsbCB0aGF0IGhhcyB0byBvY2N1ciBsYXRlcgotaGFzIG9j
Y3VycmVkLiBGb3IgZXhhbXBsZSwgaW4KLQotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6XzsKLSAg
dXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLQotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgRVhQ
RUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUgdG9vIGxhcmdlLiIpKSAgICAgLy8g
IzEKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7
Ci0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJEYXRhIHNldCBpcyBlbXB0eS4i
KSkgIC8vICMyCi0gICAgICAuSW5TZXF1ZW5jZShzMSk7Ci0gIEVYUEVDVF9DQUxMKGxvZywgTG9n
KFdBUk5JTkcsIF8sICJVc2VyIG5vdCBmb3VuZC4iKSkgICAgIC8vICMzCi0gICAgICAuSW5TZXF1
ZW5jZShzMik7Ci1gYGAKLQotYXMgc29vbiBhcyBlaXRoZXIgIzIgb3IgIzMgaXMgbWF0Y2hlZCwg
IzEgd2lsbCByZXRpcmUuIElmIGEgd2FybmluZwotYCJGaWxlIHRvbyBsYXJnZS4iYCBpcyBsb2dn
ZWQgYWZ0ZXIgdGhpcywgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotTm90ZSB0aGF0IGFuIGV4cGVj
dGF0aW9uIGRvZXNuJ3QgcmV0aXJlIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCdzCi1zYXR1cmF0ZWQu
IEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgotICBFWFBFQ1Rf
Q0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCBfKSk7ICAgICAgICAgICAgICAgICAgLy8gIzEKLSAg
RVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUgdG9vIGxhcmdlLiIpKTsgIC8v
ICMyCi1gYGAKLQotc2F5cyB0aGF0IHRoZXJlIHdpbGwgYmUgZXhhY3RseSBvbmUgd2FybmluZyB3
aXRoIHRoZSBtZXNzYWdlIGAiRmlsZQotdG9vIGxhcmdlLiJgLiBJZiB0aGUgc2Vjb25kIHdhcm5p
bmcgY29udGFpbnMgdGhpcyBtZXNzYWdlIHRvbywgIzIgd2lsbAotbWF0Y2ggYWdhaW4gYW5kIHJl
c3VsdCBpbiBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBlcnJvci4KLQotSWYgdGhpcyBpcyBub3Qg
d2hhdCB5b3Ugd2FudCwgeW91IGNhbiBhc2sgYW4gZXhwZWN0YXRpb24gdG8gcmV0aXJlIGFzCi1z
b29uIGFzIGl0IGJlY29tZXMgc2F0dXJhdGVkOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LS4uLgotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCBfKSk7ICAgICAgICAgICAg
ICAgICAvLyAjMQotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRmlsZSB0b28g
bGFyZ2UuIikpICAvLyAjMgotICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1I
ZXJlICMyIGNhbiBiZSB1c2VkIG9ubHkgb25jZSwgc28gaWYgeW91IGhhdmUgdHdvIHdhcm5pbmdz
IHdpdGggdGhlCi1tZXNzYWdlIGAiRmlsZSB0b28gbGFyZ2UuImAsIHRoZSBmaXJzdCB3aWxsIG1h
dGNoICMyIGFuZCB0aGUgc2Vjb25kCi13aWxsIG1hdGNoICMxIC0gdGhlcmUgd2lsbCBiZSBubyBl
cnJvci4KLQotIyBVc2luZyBBY3Rpb25zICMKLQotIyMgUmV0dXJuaW5nIFJlZmVyZW5jZXMgZnJv
bSBNb2NrIE1ldGhvZHMgIyMKLQotSWYgYSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaXMg
YSByZWZlcmVuY2UsIHlvdSBuZWVkIHRvIHVzZQotYFJldHVyblJlZigpYCBpbnN0ZWFkIG9mIGBS
ZXR1cm4oKWAgdG8gcmV0dXJuIGEgcmVzdWx0OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0
dXJuUmVmOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NL
X01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBC
YXIgYmFyOwotICBFWFBFQ1RfQ0FMTChmb28sIEdldEJhcigpKQotICAgICAgLldpbGxPbmNlKFJl
dHVyblJlZihiYXIpKTsKLWBgYAotCi0jIyBSZXR1cm5pbmcgTGl2ZSBWYWx1ZXMgZnJvbSBNb2Nr
IE1ldGhvZHMgIyMKLQotVGhlIGBSZXR1cm4oeClgIGFjdGlvbiBzYXZlcyBhIGNvcHkgb2YgYHhg
IHdoZW4gdGhlIGFjdGlvbiBpcwotX2NyZWF0ZWRfLCBhbmQgYWx3YXlzIHJldHVybnMgdGhlIHNh
bWUgdmFsdWUgd2hlbmV2ZXIgaXQncwotZXhlY3V0ZWQuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQg
dG8gaW5zdGVhZCByZXR1cm4gdGhlIF9saXZlXyB2YWx1ZSBvZgotYHhgIChpLmUuIGl0cyB2YWx1
ZSBhdCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMgX2V4ZWN1dGVkXy4pLgotCi1JZiB0aGUg
bW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3UgY2FuIGRvIGl0
IHVzaW5nCi1gUmV0dXJuUmVmKHgpYCwgYXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIHJlY2lwZSAo
IlJldHVybmluZyBSZWZlcmVuY2VzCi1mcm9tIE1vY2sgTWV0aG9kcyIpLiBIb3dldmVyLCBHb29n
bGUgTW9jayBkb2Vzbid0IGxldCB5b3UgdXNlCi1gUmV0dXJuUmVmKClgIGluIGEgbW9jayBmdW5j
dGlvbiB3aG9zZSByZXR1cm4gdHlwZSBpcyBub3QgYSByZWZlcmVuY2UsCi1hcyBkb2luZyB0aGF0
IHVzdWFsbHkgaW5kaWNhdGVzIGEgdXNlciBlcnJvci4gU28sIHdoYXQgc2hhbGwgeW91IGRvPwot
Ci1Zb3UgbWF5IGJlIHRlbXB0ZWQgdG8gdHJ5IGBCeVJlZigpYDoKLQotYGBgCi11c2luZyB0ZXN0
aW5nOjpCeVJlZjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QwKEdldFZhbHVlLCBpbnQoKSk7Ci19
OwotLi4uCi0gIGludCB4ID0gMDsKLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywg
R2V0VmFsdWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oQnlSZWYoeCkpKTsKLSAg
eCA9IDQyOwotICBFWFBFQ1RfRVEoNDIsIGZvby5HZXRWYWx1ZSgpKTsKLWBgYAotCi1VbmZvcnR1
bmF0ZWx5LCBpdCBkb2Vzbid0IHdvcmsgaGVyZS4gVGhlIGFib3ZlIGNvZGUgd2lsbCBmYWlsIHdp
dGggZXJyb3I6Ci0KLWBgYAotVmFsdWUgb2Y6IGZvby5HZXRWYWx1ZSgpCi0gIEFjdHVhbDogMAot
RXhwZWN0ZWQ6IDQyCi1gYGAKLQotVGhlIHJlYXNvbiBpcyB0aGF0IGBSZXR1cm4odmFsdWUpYCBj
b252ZXJ0cyBgdmFsdWVgIHRvIHRoZSBhY3R1YWwKLXJldHVybiB0eXBlIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uIGF0IHRoZSB0aW1lIHdoZW4gdGhlIGFjdGlvbiBpcwotX2NyZWF0ZWRfLCBub3Qgd2hl
biBpdCBpcyBfZXhlY3V0ZWRfLiAoVGhpcyBiZWhhdmlvciB3YXMgY2hvc2VuIGZvcgotdGhlIGFj
dGlvbiB0byBiZSBzYWZlIHdoZW4gYHZhbHVlYCBpcyBhIHByb3h5IG9iamVjdCB0aGF0IHJlZmVy
ZW5jZXMKLXNvbWUgdGVtcG9yYXJ5IG9iamVjdHMuKSBBcyBhIHJlc3VsdCwgYEJ5UmVmKHgpYCBp
cyBjb252ZXJ0ZWQgdG8gYW4KLWBpbnRgIHZhbHVlIChpbnN0ZWFkIG9mIGEgYGNvbnN0IGludCZg
KSB3aGVuIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQsCi1hbmQgYFJldHVybihCeVJlZih4KSlgIHdp
bGwgYWx3YXlzIHJldHVybiAwLgotCi1gUmV0dXJuUG9pbnRlZShwb2ludGVyKWAgd2FzIHByb3Zp
ZGVkIHRvIHNvbHZlIHRoaXMgcHJvYmxlbQotc3BlY2lmaWNhbGx5LiBJdCByZXR1cm5zIHRoZSB2
YWx1ZSBwb2ludGVkIHRvIGJ5IGBwb2ludGVyYCBhdCB0aGUgdGltZQotdGhlIGFjdGlvbiBpcyBf
ZXhlY3V0ZWRfOgotCi1gYGAKLXVzaW5nIHRlc3Rpbmc6OlJldHVyblBvaW50ZWU7Ci0uLi4KLSAg
aW50IHggPSAwOwotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRWYWx1ZSgp
KQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVyblBvaW50ZWUoJngpKTsgIC8vIE5vdGUgdGhl
ICYgaGVyZS4KLSAgeCA9IDQyOwotICBFWFBFQ1RfRVEoNDIsIGZvby5HZXRWYWx1ZSgpKTsgIC8v
IFRoaXMgd2lsbCBzdWNjZWVkIG5vdy4KLWBgYAotCi0jIyBDb21iaW5pbmcgQWN0aW9ucyAjIwot
Ci1XYW50IHRvIGRvIG1vcmUgdGhhbiBvbmUgdGhpbmcgd2hlbiBhIGZ1bmN0aW9uIGlzIGNhbGxl
ZD8gVGhhdCdzCi1maW5lLiBgRG9BbGwoKWAgYWxsb3cgeW91IHRvIGRvIHNlcXVlbmNlIG9mIGFj
dGlvbnMgZXZlcnkgdGltZS4gT25seQotdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFzdCBhY3Rp
b24gaW4gdGhlIHNlcXVlbmNlIHdpbGwgYmUgdXNlZC4KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OkRvQWxsOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NL
X01FVEhPRDEoQmFyLCBib29sKGludCBuKSk7Ci19OwotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9v
LCBCYXIoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoYWN0aW9uXzEsCi0gICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uXzIsCi0gICAgICAgICAgICAgICAgICAgICAgLi4uCi0gICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uX24pKTsKLWBgYAotCi0jIyBNb2NraW5nIFNpZGUgRWZmZWN0cyAj
IwotCi1Tb21ldGltZXMgYSBtZXRob2QgZXhoaWJpdHMgaXRzIGVmZmVjdCBub3QgdmlhIHJldHVy
bmluZyBhIHZhbHVlIGJ1dAotdmlhIHNpZGUgZWZmZWN0cy4gRm9yIGV4YW1wbGUsIGl0IG1heSBj
aGFuZ2Ugc29tZSBnbG9iYWwgc3RhdGUgb3IKLW1vZGlmeSBhbiBvdXRwdXQgYXJndW1lbnQuIFRv
IG1vY2sgc2lkZSBlZmZlY3RzLCBpbiBnZW5lcmFsIHlvdSBjYW4KLWRlZmluZSB5b3VyIG93biBh
Y3Rpb24gYnkgaW1wbGVtZW50aW5nIGA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZWAuCi0KLUlm
IGFsbCB5b3UgbmVlZCB0byBkbyBpcyB0byBjaGFuZ2UgYW4gb3V0cHV0IGFyZ3VtZW50LCB0aGUg
YnVpbHQtaW4KLWBTZXRBcmdQb2ludGVlKClgIGFjdGlvbiBpcyBjb252ZW5pZW50OgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKLQotY2xhc3MgTW9ja011dGF0b3IgOiBw
dWJsaWMgTXV0YXRvciB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIoTXV0YXRlLCB2b2lkKGJv
b2wgbXV0YXRlLCBpbnQqIHZhbHVlKSk7Ci0gIC4uLgotfTsKLS4uLgotCi0gIE1vY2tNdXRhdG9y
IG11dGF0b3I7Ci0gIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11dGF0ZSh0cnVlLCBfKSkKLSAgICAg
IC5XaWxsT25jZShTZXRBcmdQb2ludGVlPDE+KDUpKTsKLWBgYAotCi1JbiB0aGlzIGV4YW1wbGUs
IHdoZW4gYG11dGF0b3IuTXV0YXRlKClgIGlzIGNhbGxlZCwgd2Ugd2lsbCBhc3NpZ24gNQotdG8g
dGhlIGBpbnRgIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgYXJndW1lbnQgIzEKLSgwLWJhc2VkKS4K
LQotYFNldEFyZ1BvaW50ZWUoKWAgY29udmVuaWVudGx5IG1ha2VzIGFuIGludGVybmFsIGNvcHkg
b2YgdGhlCi12YWx1ZSB5b3UgcGFzcyB0byBpdCwgcmVtb3ZpbmcgdGhlIG5lZWQgdG8ga2VlcCB0
aGUgdmFsdWUgaW4gc2NvcGUgYW5kCi1hbGl2ZS4gVGhlIGltcGxpY2F0aW9uIGhvd2V2ZXIgaXMg
dGhhdCB0aGUgdmFsdWUgbXVzdCBoYXZlIGEgY29weQotY29uc3RydWN0b3IgYW5kIGFzc2lnbm1l
bnQgb3BlcmF0b3IuCi0KLUlmIHRoZSBtb2NrIG1ldGhvZCBhbHNvIG5lZWRzIHRvIHJldHVybiBh
IHZhbHVlIGFzIHdlbGwsIHlvdSBjYW4gY2hhaW4KLWBTZXRBcmdQb2ludGVlKClgIHdpdGggYFJl
dHVybigpYCB1c2luZyBgRG9BbGwoKWA6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNp
bmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci11c2luZyA6OnRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci0K
LWNsYXNzIE1vY2tNdXRhdG9yIDogcHVibGljIE11dGF0b3IgewotIHB1YmxpYzoKLSAgLi4uCi0g
IE1PQ0tfTUVUSE9EMShNdXRhdGVJbnQsIGJvb2woaW50KiB2YWx1ZSkpOwotfTsKLS4uLgotCi0g
IE1vY2tNdXRhdG9yIG11dGF0b3I7Ci0gIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11dGF0ZUludChf
KSkKLSAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmdQb2ludGVlPDA+KDUpLAotICAgICAgICAg
ICAgICAgICAgICAgIFJldHVybih0cnVlKSkpOwotYGBgCi0KLUlmIHRoZSBvdXRwdXQgYXJndW1l
bnQgaXMgYW4gYXJyYXksIHVzZSB0aGUKLWBTZXRBcnJheUFyZ3VtZW50PE4+KGZpcnN0LCBsYXN0
KWAgYWN0aW9uIGluc3RlYWQuIEl0IGNvcGllcyB0aGUKLWVsZW1lbnRzIGluIHNvdXJjZSByYW5n
ZSBgW2ZpcnN0LCBsYXN0KWAgdG8gdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkKLXRoZSBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVz
aW5nIDo6dGVzdGluZzo6U2V0QXJyYXlBcmd1bWVudDsKLQotY2xhc3MgTW9ja0FycmF5TXV0YXRv
ciA6IHB1YmxpYyBBcnJheU11dGF0b3IgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11dGF0
ZSwgdm9pZChpbnQqIHZhbHVlcywgaW50IG51bV92YWx1ZXMpKTsKLSAgLi4uCi19OwotLi4uCi0K
LSAgTW9ja0FycmF5TXV0YXRvciBtdXRhdG9yOwotICBpbnQgdmFsdWVzWzVdID0geyAxLCAyLCAz
LCA0LCA1IH07Ci0gIEVYUEVDVF9DQUxMKG11dGF0b3IsIE11dGF0ZShOb3ROdWxsKCksIDUpKQot
ICAgICAgLldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4odmFsdWVzLCB2YWx1ZXMgKyA1KSk7
Ci1gYGAKLQotVGhpcyBhbHNvIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIG91dHB1dCBp
dGVyYXRvcjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlNl
QXJyYXlBcmd1bWVudDsKLQotY2xhc3MgTW9ja1JvbG9kZXggOiBwdWJsaWMgUm9sb2RleCB7Ci0g
cHVibGljOgotICBNT0NLX01FVEhPRDEoR2V0TmFtZXMsIHZvaWQoc3RkOjpiYWNrX2luc2VydF9p
dGVyYXRvcjx2ZWN0b3I8c3RyaW5nPiA+KSk7Ci0gIC4uLgotfTsKLS4uLgotCi0gIE1vY2tSb2xv
ZGV4IHJvbG9kZXg7Ci0gIHZlY3RvcjxzdHJpbmc+IG5hbWVzOwotICBuYW1lcy5wdXNoX2JhY2so
Ikdlb3JnZSIpOwotICBuYW1lcy5wdXNoX2JhY2soIkpvaG4iKTsKLSAgbmFtZXMucHVzaF9iYWNr
KCJUaG9tYXMiKTsKLSAgRVhQRUNUX0NBTEwocm9sb2RleCwgR2V0TmFtZXMoXykpCi0gICAgICAu
V2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVudDwwPihuYW1lcy5iZWdpbigpLCBuYW1lcy5lbmQoKSkp
OwotYGBgCi0KLSMjIENoYW5naW5nIGEgTW9jayBPYmplY3QncyBCZWhhdmlvciBCYXNlZCBvbiB0
aGUgU3RhdGUgIyMKLQotSWYgeW91IGV4cGVjdCBhIGNhbGwgdG8gY2hhbmdlIHRoZSBiZWhhdmlv
ciBvZiBhIG1vY2sgb2JqZWN0LCB5b3UgY2FuIHVzZSBgOjp0ZXN0aW5nOjpJblNlcXVlbmNlYCB0
byBzcGVjaWZ5IGRpZmZlcmVudCBiZWhhdmlvcnMgYmVmb3JlIGFuZCBhZnRlciB0aGUgY2FsbDoK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJl
dHVybjsKLQotLi4uCi0gIHsKLSAgICBJblNlcXVlbmNlIHNlcTsKLSAgICBFWFBFQ1RfQ0FMTCht
eV9tb2NrLCBJc0RpcnR5KCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4odHJ1ZSkp
OwotICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIEZsdXNoKCkpOwotICAgIEVYUEVDVF9DQUxMKG15
X21vY2ssIElzRGlydHkoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihmYWxzZSkp
OwotICB9Ci0gIG15X21vY2suRmx1c2hJZkRpcnR5KCk7Ci1gYGAKLQotVGhpcyBtYWtlcyBgbXlf
bW9jay5Jc0RpcnR5KClgIHJldHVybiBgdHJ1ZWAgYmVmb3JlIGBteV9tb2NrLkZsdXNoKClgIGlz
IGNhbGxlZCBhbmQgcmV0dXJuIGBmYWxzZWAgYWZ0ZXJ3YXJkcy4KLQotSWYgdGhlIGJlaGF2aW9y
IGNoYW5nZSBpcyBtb3JlIGNvbXBsZXgsIHlvdSBjYW4gc3RvcmUgdGhlIGVmZmVjdHMgaW4gYSB2
YXJpYWJsZSBhbmQgbWFrZSBhIG1vY2sgbWV0aG9kIGdldCBpdHMgcmV0dXJuIHZhbHVlIGZyb20g
dGhhdCB2YXJpYWJsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6OlNhdmVBcmc7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotQUNUSU9OX1AoUmV0dXJu
UG9pbnRlZSwgcCkgeyByZXR1cm4gKnA7IH0KLS4uLgotICBpbnQgcHJldmlvdXNfdmFsdWUgPSAw
OwotICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBHZXRQcmV2VmFsdWUoKSkKLSAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZwcmV2aW91c192YWx1ZSkpOwotICBFWFBFQ1RfQ0FMTCht
eV9tb2NrLCBVcGRhdGVWYWx1ZShfKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShTYXZlQXJnPDA+
KCZwcmV2aW91c192YWx1ZSkpOwotICBteV9tb2NrLkRvU29tZXRoaW5nVG9VcGRhdGVWYWx1ZSgp
OwotYGBgCi0KLUhlcmUgYG15X21vY2suR2V0UHJldlZhbHVlKClgIHdpbGwgYWx3YXlzIHJldHVy
biB0aGUgYXJndW1lbnQgb2YgdGhlIGxhc3QgYFVwZGF0ZVZhbHVlKClgIGNhbGwuCi0KLSMjIFNl
dHRpbmcgdGhlIERlZmF1bHQgVmFsdWUgZm9yIGEgUmV0dXJuIFR5cGUgIyMKLQotSWYgYSBtb2Nr
IG1ldGhvZCdzIHJldHVybiB0eXBlIGlzIGEgYnVpbHQtaW4gQysrIHR5cGUgb3IgcG9pbnRlciwg
YnkKLWRlZmF1bHQgaXQgd2lsbCByZXR1cm4gMCB3aGVuIGludm9rZWQuIFlvdSBvbmx5IG5lZWQg
dG8gc3BlY2lmeSBhbgotYWN0aW9uIGlmIHRoaXMgZGVmYXVsdCB2YWx1ZSBkb2Vzbid0IHdvcmsg
Zm9yIHlvdS4KLQotU29tZXRpbWVzLCB5b3UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgZGVmYXVs
dCB2YWx1ZSwgb3IgeW91IG1heSB3YW50Ci10byBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZSBmb3Ig
dHlwZXMgR29vZ2xlIE1vY2sgZG9lc24ndCBrbm93Ci1hYm91dC4gWW91IGNhbiBkbyB0aGlzIHVz
aW5nIHRoZSBgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWVgIGNsYXNzCi10ZW1wbGF0ZToKLQotYGBg
Ci1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAo
Q2FsY3VsYXRlQmFyLCBCYXIoKSk7Ci19OwotLi4uCi0KLSAgQmFyIGRlZmF1bHRfYmFyOwotICAv
LyBTZXRzIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBmb3IgdHlwZSBCYXIuCi0gIERlZmF1bHRW
YWx1ZTxCYXI+OjpTZXQoZGVmYXVsdF9iYXIpOwotCi0gIE1vY2tGb28gZm9vOwotCi0gIC8vIFdl
IGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbiBhY3Rpb24gaGVyZSwgYXMgdGhlIGRlZmF1bHQKLSAg
Ly8gcmV0dXJuIHZhbHVlIHdvcmtzIGZvciB1cy4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxjdWxh
dGVCYXIoKSk7Ci0KLSAgZm9vLkNhbGN1bGF0ZUJhcigpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJu
IGRlZmF1bHRfYmFyLgotCi0gIC8vIFVuc2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUuCi0g
IERlZmF1bHRWYWx1ZTxCYXI+OjpDbGVhcigpOwotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgY2hh
bmdpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGEgdHlwZSBjYW4gbWFrZSB5b3UKLXRlc3RzIGhh
cmQgdG8gdW5kZXJzdGFuZC4gV2UgcmVjb21tZW5kIHlvdSB0byB1c2UgdGhpcyBmZWF0dXJlCi1q
dWRpY2lvdXNseS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGBT
ZXQoKWAgYW5kCi1gQ2xlYXIoKWAgY2FsbHMgYXJlIHJpZ2h0IG5leHQgdG8gdGhlIGNvZGUgdGhh
dCB1c2VzIHlvdXIgbW9jay4KLQotIyMgU2V0dGluZyB0aGUgRGVmYXVsdCBBY3Rpb25zIGZvciBh
IE1vY2sgTWV0aG9kICMjCi0KLVlvdSd2ZSBsZWFybmVkIGhvdyB0byBjaGFuZ2UgdGhlIGRlZmF1
bHQgdmFsdWUgb2YgYSBnaXZlbgotdHlwZS4gSG93ZXZlciwgdGhpcyBtYXkgYmUgdG9vIGNvYXJz
ZSBmb3IgeW91ciBwdXJwb3NlOiBwZXJoYXBzIHlvdQotaGF2ZSB0d28gbW9jayBtZXRob2RzIHdp
dGggdGhlIHNhbWUgcmV0dXJuIHR5cGUgYW5kIHlvdSB3YW50IHRoZW0gdG8KLWhhdmUgZGlmZmVy
ZW50IGJlaGF2aW9ycy4gVGhlIGBPTl9DQUxMKClgIG1hY3JvIGFsbG93cyB5b3UgdG8KLWN1c3Rv
bWl6ZSB5b3VyIG1vY2sncyBiZWhhdmlvciBhdCB0aGUgbWV0aG9kIGxldmVsOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0
ZXN0aW5nOjpHdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIE9OX0NBTEwoZm9v
LCBTaWduKF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKC0xKSk7Ci0gIE9OX0NBTEwo
Zm9vLCBTaWduKDApKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDApKTsKLSAgT05fQ0FM
TChmb28sIFNpZ24oR3QoMCkpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLQot
ICBFWFBFQ1RfQ0FMTChmb28sIFNpZ24oXykpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwot
Ci0gIGZvby5TaWduKDUpOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAxLgotICBmb28uU2lnbigt
OSk7ICAvLyBUaGlzIHNob3VsZCByZXR1cm4gLTEuCi0gIGZvby5TaWduKDApOyAgIC8vIFRoaXMg
c2hvdWxkIHJldHVybiAwLgotYGBgCi0KLUFzIHlvdSBtYXkgaGF2ZSBndWVzc2VkLCB3aGVuIHRo
ZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBPTl9DQUxMKClgCi1zdGF0ZW1lbnRzLCB0aGUgbmV3cyBv
cmRlciB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgb2xkZXIgb25lcy4gSW4KLW90aGVyIHdvcmRz
LCB0aGUgKipsYXN0Kiogb25lIHRoYXQgbWF0Y2hlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHdp
bGwKLWJlIHVzZWQuIFRoaXMgbWF0Y2hpbmcgb3JkZXIgYWxsb3dzIHlvdSB0byBzZXQgdXAgdGhl
IGNvbW1vbiBiZWhhdmlvcgotaW4gYSBtb2NrIG9iamVjdCdzIGNvbnN0cnVjdG9yIG9yIHRoZSB0
ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kCi1zcGVjaWFsaXplIHRoZSBtb2NrJ3MgYmVo
YXZpb3IgbGF0ZXIuCi0KLSMjIFVzaW5nIEZ1bmN0aW9ucy9NZXRob2RzL0Z1bmN0b3JzIGFzIEFj
dGlvbnMgIyMKLQotSWYgdGhlIGJ1aWx0LWluIGFjdGlvbnMgZG9uJ3Qgc3VpdCB5b3UsIHlvdSBj
YW4gZWFzaWx5IHVzZSBhbiBleGlzdGluZwotZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciBh
cyBhbiBhY3Rpb246Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5n
OjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1P
Q0tfTUVUSE9EMihTdW0sIGludChpbnQgeCwgaW50IHkpKTsKLSAgTU9DS19NRVRIT0QxKENvbXBs
ZXhKb2IsIGJvb2woaW50IHgpKTsKLX07Ci0KLWludCBDYWxjdWxhdGVTdW0oaW50IHgsIGludCB5
KSB7IHJldHVybiB4ICsgeTsgfQotCi1jbGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgYm9vbCBD
b21wbGV4Sm9iKGludCB4KTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhl
bHBlcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBTdW0oXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52
b2tlKENhbGN1bGF0ZVN1bSkpOwotICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0g
ICAgICAuV2lsbE9uY2UoSW52b2tlKCZoZWxwZXIsICZIZWxwZXI6OkNvbXBsZXhKb2IpKTsKLQot
ICBmb28uU3VtKDUsIDYpOyAgICAgICAvLyBJbnZva2VzIENhbGN1bGF0ZVN1bSg1LCA2KS4KLSAg
Zm9vLkNvbXBsZXhKb2IoMTApOyAgLy8gSW52b2tlcyBoZWxwZXIuQ29tcGxleEpvYigxMCk7Ci1g
YGAKLQotVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rp
b24sIGV0YyBtdXN0IGJlCi1fY29tcGF0aWJsZV8gd2l0aCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBt
b2NrIGZ1bmN0aW9uLCBtZWFuaW5nIHRoYXQgdGhlCi1sYXR0ZXIncyBhcmd1bWVudHMgY2FuIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCi1hcmd1bWVudHMgb2Yg
dGhlIGZvcm1lciwgYW5kIHRoZSBmb3JtZXIncyByZXR1cm4gdHlwZSBjYW4gYmUKLWltcGxpY2l0
bHkgY29udmVydGVkIHRvIHRoYXQgb2YgdGhlIGxhdHRlci4gU28sIHlvdSBjYW4gaW52b2tlCi1z
b21ldGhpbmcgd2hvc2UgdHlwZSBpcyBfbm90XyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBtb2Nr
IGZ1bmN0aW9uLAotYXMgbG9uZyBhcyBpdCdzIHNhZmUgdG8gZG8gc28gLSBuaWNlLCBodWg/Ci0K
LSMjIEludm9raW5nIGEgRnVuY3Rpb24vTWV0aG9kL0Z1bmN0b3IgV2l0aG91dCBBcmd1bWVudHMg
IyMKLQotYEludm9rZSgpYCBpcyB2ZXJ5IHVzZWZ1bCBmb3IgZG9pbmcgYWN0aW9ucyB0aGF0IGFy
ZSBtb3JlIGNvbXBsZXguIEl0Ci1wYXNzZXMgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMg
dG8gdGhlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IgYmVpbmcKLWludm9rZWQgc3VjaCB0aGF0IHRoZSBj
YWxsZWUgaGFzIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlIGNhbGwgdG8gd29yawotd2l0aC4gSWYg
dGhlIGludm9rZWQgZnVuY3Rpb24gaXMgbm90IGludGVyZXN0ZWQgaW4gc29tZSBvciBhbGwgb2Yg
dGhlCi1hcmd1bWVudHMsIGl0IGNhbiBzaW1wbHkgaWdub3JlIHRoZW0uCi0KLVlldCwgYSBjb21t
b24gcGF0dGVybiBpcyB0aGF0IGEgdGVzdCBhdXRob3Igd2FudHMgdG8gaW52b2tlIGEgZnVuY3Rp
b24KLXdpdGhvdXQgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbi4gYEludm9rZSgp
YCBhbGxvd3MgaGVyIHRvCi1kbyB0aGF0IHVzaW5nIGEgd3JhcHBlciBmdW5jdGlvbiB0aGF0IHRo
cm93cyBhd2F5IHRoZSBhcmd1bWVudHMgYmVmb3JlCi1pbnZva2luZyBhbiB1bmRlcmxpbmluZyBu
dWxsYXJ5IGZ1bmN0aW9uLiBOZWVkbGVzcyB0byBzYXksIHRoaXMgY2FuIGJlCi10ZWRpb3VzIGFu
ZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9mIHRoZSB0ZXN0LgotCi1gSW52b2tlV2l0aG91dEFyZ3Mo
KWAgc29sdmVzIHRoaXMgcHJvYmxlbS4gSXQncyBsaWtlIGBJbnZva2UoKWAgZXhjZXB0Ci10aGF0
IGl0IGRvZXNuJ3QgcGFzcyB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50cyB0byB0aGUKLWNh
bGxlZS4gSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNp
bmcgOjp0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IG4p
KTsKLX07Ci0KLWJvb2wgSm9iMSgpIHsgLi4uIH0KLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBF
WFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlV2l0
aG91dEFyZ3MoSm9iMSkpOwotCi0gIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgSm9i
MSgpLgotYGBgCi0KLSMjIEludm9raW5nIGFuIEFyZ3VtZW50IG9mIHRoZSBNb2NrIEZ1bmN0aW9u
ICMjCi0KLVNvbWV0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCByZWNlaXZlIGEgZnVuY3Rpb24g
cG9pbnRlciBvciBhIGZ1bmN0b3IKLShpbiBvdGhlciB3b3JkcywgYSAiY2FsbGFibGUiKSBhcyBh
biBhcmd1bWVudCwgZS5nLgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBw
dWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGJvb2woaW50IG4sIGJvb2wgKCpmcCkoaW50
KSkpOwotfTsKLWBgYAotCi1hbmQgeW91IG1heSB3YW50IHRvIGludm9rZSB0aGlzIGNhbGxhYmxl
IGFyZ3VtZW50OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgotICBNb2NrRm9vIGZv
bzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXywgXykpCi0gICAgICAuV2lsbE9uY2UoLi4u
KTsKLSAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vj
b25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgotYGBgCi0KLUFyZ2hoLCB5b3UgbmVlZCB0
byByZWZlciB0byBhIG1vY2sgZnVuY3Rpb24gYXJndW1lbnQgYnV0IEMrKyBoYXMgbm8KLWxhbWJk
YSAoeWV0KSwgc28geW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gOi0oIE9yIGRv
IHlvdQotcmVhbGx5PwotCi1XZWxsLCBHb29nbGUgTW9jayBoYXMgYW4gYWN0aW9uIHRvIHNvbHZl
IF9leGFjdGx5XyB0aGlzIHByb2JsZW06Ci0KLWBgYAotICBJbnZva2VBcmd1bWVudDxOPihhcmdf
MSwgYXJnXzIsIC4uLiwgYXJnX20pCi1gYGAKLQotd2lsbCBpbnZva2UgdGhlIGBOYC10aCAoMC1i
YXNlZCkgYXJndW1lbnQgdGhlIG1vY2sgZnVuY3Rpb24gcmVjZWl2ZXMsCi13aXRoIGBhcmdfMWAs
IGBhcmdfMmAsIC4uLiwgYW5kIGBhcmdfbWAuIE5vIG1hdHRlciBpZiB0aGUgYXJndW1lbnQgaXMK
LWEgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IsIEdvb2dsZSBNb2NrIGhhbmRsZXMgdGhl
bSBib3RoLgotCi1XaXRoIHRoYXQsIHlvdSBjb3VsZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0gIEVYUEVD
VF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50
PDE+KDUpKTsKLSAgLy8gV2lsbCBleGVjdXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAg
Ly8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJlY2VpdmVzLgotYGBgCi0KLVdoYXQgaWYgdGhl
IGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZT8gTm8gcHJvYmxlbSAtIGp1
c3QKLXdyYXAgaXQgaW5zaWRlIGBCeVJlZigpYDoKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0Qx
KEJhciwgYm9vbChib29sICgqZnApKGludCwgY29uc3QgSGVscGVyJikpKTsKLS4uLgotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6
SW52b2tlQXJndW1lbnQ7Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsK
LSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKEludm9r
ZUFyZ3VtZW50PDA+KDUsIEJ5UmVmKGhlbHBlcikpKTsKLSAgLy8gQnlSZWYoaGVscGVyKSBndWFy
YW50ZWVzIHRoYXQgYSByZWZlcmVuY2UgdG8gaGVscGVyLCBub3QgYSBjb3B5IG9mIGl0LAotICAv
LyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGFibGUuCi1gYGAKLQotV2hhdCBpZiB0aGUgY2Fs
bGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlIGFuZCB3ZSBkbyAqKm5vdCoqCi13
cmFwIHRoZSBhcmd1bWVudCBpbiBgQnlSZWYoKWA/IFRoZW4gYEludm9rZUFyZ3VtZW50KClgIHdp
bGwgX21ha2UgYQotY29weV8gb2YgdGhlIGFyZ3VtZW50LCBhbmQgcGFzcyBhIF9yZWZlcmVuY2Ug
dG8gdGhlIGNvcHlfLCBpbnN0ZWFkIG9mCi1hIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFs
dWUsIHRvIHRoZSBjYWxsYWJsZS4gVGhpcyBpcyBlc3BlY2lhbGx5Ci1oYW5keSB3aGVuIHRoZSBh
cmd1bWVudCBpcyBhIHRlbXBvcmFyeSB2YWx1ZToKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0Qx
KERvVGhhdCwgYm9vbChib29sICgqZikoY29uc3QgZG91YmxlJiB4LCBjb25zdCBzdHJpbmcmIHMp
KSk7Ci0uLi4KLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJn
dW1lbnQ7Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywg
RG9UaGF0KF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUuMCwgc3RyaW5n
KCJIaSIpKSk7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmYpKDUuMCwgc3RyaW5nKCJIaSIpKSwgd2hl
cmUgZiBpcyB0aGUgZnVuY3Rpb24gcG9pbnRlcgotICAvLyBEb1RoYXQoKSByZWNlaXZlcy4gIE5v
dGUgdGhhdCB0aGUgdmFsdWVzIDUuMCBhbmQgc3RyaW5nKCJIaSIpIGFyZQotICAvLyB0ZW1wb3Jh
cnkgYW5kIGRlYWQgb25jZSB0aGUgRVhQRUNUX0NBTEwoKSBzdGF0ZW1lbnQgZmluaXNoZXMuICBZ
ZXQKLSAgLy8gaXQncyBmaW5lIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24gbGF0ZXIsIHNpbmNlIGEg
Y29weSBvZiB0aGUgdmFsdWVzCi0gIC8vIGFyZSBrZXB0IGluc2lkZSB0aGUgSW52b2tlQXJndW1l
bnQgYWN0aW9uLgotYGBgCi0KLSMjIElnbm9yaW5nIGFuIEFjdGlvbidzIFJlc3VsdCAjIwotCi1T
b21ldGltZXMgeW91IGhhdmUgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBfc29tZXRoaW5nXywgYnV0
IHlvdSBuZWVkIGFuCi1hY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCAocGVyaGFwcyB5b3Ugd2Fu
dCB0byB1c2UgaXQgaW4gYSBtb2NrCi1mdW5jdGlvbiB0aGF0IHJldHVybnMgYHZvaWRgLCBvciBw
ZXJoYXBzIGl0IG5lZWRzIHRvIGJlIHVzZWQgaW4KLWBEb0FsbCgpYCBhbmQgaXQncyBub3QgdGhl
IGxhc3QgaW4gdGhlIGxpc3QpLiBgSWdub3JlUmVzdWx0KClgIGxldHMKLXlvdSBkbyB0aGF0LiBG
b3IgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6
Okludm9rZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi1pbnQgUHJvY2Vzcyhjb25zdCBN
eURhdGEmIGRhdGEpOwotc3RyaW5nIERvU29tZXRoaW5nKCk7Ci0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShBYmMsIHZvaWQoY29uc3QgTXlE
YXRhJiBkYXRhKSk7Ci0gIE1PQ0tfTUVUSE9EMChYeXosIGJvb2woKSk7Ci19OwotLi4uCi0KLSAg
TW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgQWJjKF8pKQotICAvLyAuV2lsbE9uY2Uo
SW52b2tlKFByb2Nlc3MpKTsKLSAgLy8gVGhlIGFib3ZlIGxpbmUgd29uJ3QgY29tcGlsZSBhcyBQ
cm9jZXNzKCkgcmV0dXJucyBpbnQgYnV0IEFiYygpIG5lZWRzCi0gIC8vIHRvIHJldHVybiB2b2lk
LgotICAgICAgLldpbGxPbmNlKElnbm9yZVJlc3VsdChJbnZva2UoUHJvY2VzcykpKTsKLQotICBF
WFBFQ1RfQ0FMTChmb28sIFh5eigpKQotICAgICAgLldpbGxPbmNlKERvQWxsKElnbm9yZVJlc3Vs
dChJbnZva2UoRG9Tb21ldGhpbmcpKSwKLSAgICAgIC8vIElnbm9yZXMgdGhlIHN0cmluZyBEb1Nv
bWV0aGluZygpIHJldHVybnMuCi0gICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKSk7
Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSAqKmNhbm5vdCoqIHVzZSBgSWdub3JlUmVzdWx0KClgIG9u
IGFuIGFjdGlvbiB0aGF0IGFscmVhZHkKLXJldHVybnMgYHZvaWRgLiBEb2luZyBzbyB3aWxsIGxl
YWQgdG8gdWdseSBjb21waWxlciBlcnJvcnMuCi0KLSMjIFNlbGVjdGluZyBhbiBBY3Rpb24ncyBB
cmd1bWVudHMgIyMKLQotU2F5IHlvdSBoYXZlIGEgbW9jayBmdW5jdGlvbiBgRm9vKClgIHRoYXQg
dGFrZXMgc2V2ZW4gYXJndW1lbnRzLCBhbmQKLXlvdSBoYXZlIGEgY3VzdG9tIGFjdGlvbiB0aGF0
IHlvdSB3YW50IHRvIGludm9rZSB3aGVuIGBGb28oKWAgaXMKLWNhbGxlZC4gVHJvdWJsZSBpcywg
dGhlIGN1c3RvbSBhY3Rpb24gb25seSB3YW50cyB0aHJlZSBhcmd1bWVudHM6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgTU9DS19N
RVRIT0Q3KEZvbywgYm9vbChib29sIHZpc2libGUsIGNvbnN0IHN0cmluZyYgbmFtZSwgaW50IHgs
IGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcDxwYWlyPGludCwgaW50
PiwgZG91YmxlPiYgd2VpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtaW5f
d2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0KSk7Ci0uLi4KLQotYm9vbCBJc1Zpc2libGVJblF1YWRy
YW50MShib29sIHZpc2libGUsIGludCB4LCBpbnQgeSkgewotICByZXR1cm4gdmlzaWJsZSAmJiB4
ID49IDAgJiYgeSA+PSAwOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8s
IF8sIF8sIF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShJc1Zpc2libGVJblF1YWRy
YW50MSkpOyAgLy8gVWgsIHdvbid0IGNvbXBpbGUuIDotKAotYGBgCi0KLVRvIHBsZWFzZSB0aGUg
Y29tcGlsZXIgR29kLCB5b3UgY2FuIHRvIGRlZmluZSBhbiAiYWRhcHRvciIgdGhhdCBoYXMKLXRo
ZSBzYW1lIHNpZ25hdHVyZSBhcyBgRm9vKClgIGFuZCBjYWxscyB0aGUgY3VzdG9tIGFjdGlvbiB3
aXRoIHRoZQotcmlnaHQgYXJndW1lbnRzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVz
aW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1ib29sIE15SXNWaXNpYmxlSW5RdWFkcmFudDEoYm9v
bCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4LCBpbnQgeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWluX3dlaWdodCwgZG91Ymxl
IG1heF93aWdodCkgewotICByZXR1cm4gSXNWaXNpYmxlSW5RdWFkcmFudDEodmlzaWJsZSwgeCwg
eSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywg
XykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKE15SXNWaXNpYmxlSW5RdWFkcmFudDEpKTsgIC8v
IE5vdyBpdCB3b3Jrcy4KLWBgYAotCi1CdXQgaXNuJ3QgdGhpcyBhd2t3YXJkPwotCi1Hb29nbGUg
TW9jayBwcm92aWRlcyBhIGdlbmVyaWMgX2FjdGlvbiBhZGFwdG9yXywgc28geW91IGNhbiBzcGVu
ZCB5b3VyCi10aW1lIG1pbmRpbmcgbW9yZSBpbXBvcnRhbnQgYnVzaW5lc3MgdGhhbiB3cml0aW5n
IHlvdXIgb3duCi1hZGFwdG9ycy4gSGVyZSdzIHRoZSBzeW50YXg6Ci0KLWBgYAotICBXaXRoQXJn
czxOMSwgTjIsIC4uLiwgTms+KGFjdGlvbikKLWBgYAotCi1jcmVhdGVzIGFuIGFjdGlvbiB0aGF0
IHBhc3NlcyB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGF0Ci10aGUgZ2l2ZW4g
aW5kaWNlcyAoMC1iYXNlZCkgdG8gdGhlIGlubmVyIGBhY3Rpb25gIGFuZCBwZXJmb3JtcwotaXQu
IFVzaW5nIGBXaXRoQXJnc2AsIG91ciBvcmlnaW5hbCBleGFtcGxlIGNhbiBiZSB3cml0dGVuIGFz
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwot
dXNpbmcgOjp0ZXN0aW5nOjpXaXRoQXJnczsKLS4uLgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28o
XywgXywgXywgXywgXywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8MCwgMiwgMz4o
SW52b2tlKElzVmlzaWJsZUluUXVhZHJhbnQxKSkpOwotICAgICAgLy8gTm8gbmVlZCB0byBkZWZp
bmUgeW91ciBvd24gYWRhcHRvci4KLWBgYAotCi1Gb3IgYmV0dGVyIHJlYWRhYmlsaXR5LCBHb29n
bGUgTW9jayBhbHNvIGdpdmVzIHlvdToKLQotICAqIGBXaXRob3V0QXJncyhhY3Rpb24pYCB3aGVu
IHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfbm9fIGFyZ3VtZW50LCBhbmQKLSAgKiBgV2l0aEFy
ZzxOPihhY3Rpb24pYCAobm8gYHNgIGFmdGVyIGBBcmdgKSB3aGVuIHRoZSBpbm5lciBgYWN0aW9u
YCB0YWtlcyBfb25lXyBhcmd1bWVudC4KLQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBgSW52
b2tlV2l0aG91dEFyZ3MoLi4uKWAgaXMganVzdCBzeW50YWN0aWMKLXN1Z2FyIGZvciBgV2l0aG91
dEFyZ3MoSW5vdmtlKC4uLikpYC4KLQotSGVyZSBhcmUgbW9yZSB0aXBzOgotCi0gICogVGhlIGlu
bmVyIGFjdGlvbiB1c2VkIGluIGBXaXRoQXJnc2AgYW5kIGZyaWVuZHMgZG9lcyBub3QgaGF2ZSB0
byBiZSBgSW52b2tlKClgIC0tIGl0IGNhbiBiZSBhbnl0aGluZy4KLSAgKiBZb3UgY2FuIHJlcGVh
dCBhbiBhcmd1bWVudCBpbiB0aGUgYXJndW1lbnQgbGlzdCBpZiBuZWNlc3NhcnksIGUuZy4gYFdp
dGhBcmdzPDIsIDMsIDMsIDU+KC4uLilgLgotICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBv
ZiB0aGUgYXJndW1lbnRzLCBlLmcuIGBXaXRoQXJnczwzLCAyLCAxPiguLi4pYC4KLSAgKiBUaGUg
dHlwZXMgb2YgdGhlIHNlbGVjdGVkIGFyZ3VtZW50cyBkbyBfbm90XyBoYXZlIHRvIG1hdGNoIHRo
ZSBzaWduYXR1cmUgb2YgdGhlIGlubmVyIGFjdGlvbiBleGFjdGx5LiBJdCB3b3JrcyBhcyBsb25n
IGFzIHRoZXkgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5n
IGFyZ3VtZW50cyBvZiB0aGUgaW5uZXIgYWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIDQtdGgg
YXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gaXMgYW4gYGludGAgYW5kIGBteV9hY3Rpb25g
IHRha2VzIGEgYGRvdWJsZWAsIGBXaXRoQXJnPDQ+KG15X2FjdGlvbilgIHdpbGwgd29yay4KLQot
IyMgSWdub3JpbmcgQXJndW1lbnRzIGluIEFjdGlvbiBGdW5jdGlvbnMgIyMKLQotVGhlIHNlbGVj
dGluZy1hbi1hY3Rpb24ncy1hcmd1bWVudHMgcmVjaXBlIHNob3dlZCB1cyBvbmUgd2F5IHRvIG1h
a2UgYQotbW9jayBmdW5jdGlvbiBhbmQgYW4gYWN0aW9uIHdpdGggaW5jb21wYXRpYmxlIGFyZ3Vt
ZW50IGxpc3RzIGZpdAotdG9nZXRoZXIuIFRoZSBkb3duc2lkZSBpcyB0aGF0IHdyYXBwaW5nIHRo
ZSBhY3Rpb24gaW4KLWBXaXRoQXJnczwuLi4+KClgIGNhbiBnZXQgdGVkaW91cyBmb3IgcGVvcGxl
IHdyaXRpbmcgdGhlIHRlc3RzLgotCi1JZiB5b3UgYXJlIGRlZmluaW5nIGEgZnVuY3Rpb24sIG1l
dGhvZCwgb3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGgKLWBJbnZva2UqKClgLCBhbmQgeW91IGFy
ZSBub3QgaW50ZXJlc3RlZCBpbiBzb21lIG9mIGl0cyBhcmd1bWVudHMsIGFuCi1hbHRlcm5hdGl2
ZSB0byBgV2l0aEFyZ3NgIGlzIHRvIGRlY2xhcmUgdGhlIHVuaW50ZXJlc3RpbmcgYXJndW1lbnRz
IGFzCi1gVW51c2VkYC4gVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBsZXNzIGNsdXR0ZXJlZCBh
bmQgbGVzcyBmcmFnaWxlIGluCi1jYXNlIHRoZSB0eXBlcyBvZiB0aGUgdW5pbnRlcmVzdGluZyBh
cmd1bWVudHMgY2hhbmdlLiBJdCBjb3VsZCBhbHNvCi1pbmNyZWFzZSB0aGUgY2hhbmNlIHRoZSBh
Y3Rpb24gZnVuY3Rpb24gY2FuIGJlIHJldXNlZC4gRm9yIGV4YW1wbGUsCi1naXZlbgotCi1gYGAK
LSAgTU9DS19NRVRIT0QzKEZvbywgZG91YmxlKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4
LCBkb3VibGUgeSkpOwotICBNT0NLX01FVEhPRDMoQmFyLCBkb3VibGUoaW50IGluZGV4LCBkb3Vi
bGUgeCwgZG91YmxlIHkpKTsKLWBgYAotCi1pbnN0ZWFkIG9mCi0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWRvdWJsZSBEaXN0YW5jZVRvT3Jp
Z2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkgewot
ICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbldp
dGhJbmRleChpbnQgaW5kZXgsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4
KnggKyB5KnkpOwotfQotLi4uCi0KLSAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBf
KSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbCkpOwot
ICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tl
KERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgpKTsKLWBgYAotCi15b3UgY291bGQgd3JpdGUKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5n
IDo6dGVzdGluZzo6VW51c2VkOwotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRv
dWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0K
LSAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJ
bnZva2UoRGlzdGFuY2VUb09yaWdpbikpOwotICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywg
XykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLWBgYAotCi0j
IyBTaGFyaW5nIEFjdGlvbnMgIyMKLQotSnVzdCBsaWtlIG1hdGNoZXJzLCBhIEdvb2dsZSBNb2Nr
IGFjdGlvbiBvYmplY3QgY29uc2lzdHMgb2YgYSBwb2ludGVyCi10byBhIHJlZi1jb3VudGVkIGlt
cGxlbWVudGF0aW9uIG9iamVjdC4gVGhlcmVmb3JlIGNvcHlpbmcgYWN0aW9ucyBpcwotYWxzbyBh
bGxvd2VkIGFuZCB2ZXJ5IGVmZmljaWVudC4gV2hlbiB0aGUgbGFzdCBhY3Rpb24gdGhhdCByZWZl
cmVuY2VzCi10aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlv
biBvYmplY3Qgd2lsbCBiZQotZGVsZXRlZC4KLQotSWYgeW91IGhhdmUgc29tZSBjb21wbGV4IGFj
dGlvbiB0aGF0IHlvdSB3YW50IHRvIHVzZSBhZ2FpbiBhbmQgYWdhaW4sCi15b3UgbWF5IG5vdCBo
YXZlIHRvIGJ1aWxkIGl0IGZyb20gc2NyYXRjaCBldmVyeXRpbWUuIElmIHRoZSBhY3Rpb24KLWRv
ZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBzdGF0ZSAoaS5lLiBpZiBpdCBhbHdheXMgZG9lcyB0aGUg
c2FtZSB0aGluZwotbm8gbWF0dGVyIGhvdyBtYW55IHRpbWVzIGl0IGhhcyBiZWVuIGNhbGxlZCks
IHlvdSBjYW4gYXNzaWduIGl0IHRvIGFuCi1hY3Rpb24gdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZh
cmlhYmxlIHJlcGVhdGVkbHkuIEZvciBleGFtcGxlOgotCi1gYGAKLSAgQWN0aW9uPGJvb2woaW50
Kik+IHNldF9mbGFnID0gRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKTsKLSAgLi4uIHVzZSBzZXRfZmxh
ZyBpbiAuV2lsbE9uY2UoKSBhbmQgLldpbGxSZXBlYXRlZGx5KCkgLi4uCi1gYGAKLQotSG93ZXZl
ciwgaWYgdGhlIGFjdGlvbiBoYXMgaXRzIG93biBzdGF0ZSwgeW91IG1heSBiZSBzdXJwcmlzZWQg
aWYgeW91Ci1zaGFyZSB0aGUgYWN0aW9uIG9iamVjdC4gU3VwcG9zZSB5b3UgaGF2ZSBhbiBhY3Rp
b24gZmFjdG9yeQotYEluY3JlbWVudENvdW50ZXIoaW5pdClgIHdoaWNoIGNyZWF0ZXMgYW4gYWN0
aW9uIHRoYXQgaW5jcmVtZW50cyBhbmQKLXJldHVybnMgYSBjb3VudGVyIHdob3NlIGluaXRpYWwg
dmFsdWUgaXMgYGluaXRgLCB1c2luZyB0d28gYWN0aW9ucwotY3JlYXRlZCBmcm9tIHRoZSBzYW1l
IGV4cHJlc3Npb24gYW5kIHVzaW5nIGEgc2hhcmVkIGFjdGlvbiB3aWxsCi1leGloaWJpdCBkaWZm
ZXJlbnQgYmVoYXZpb3JzLiBFeGFtcGxlOgotCi1gYGAKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1Ro
aXMoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1lbnRDb3VudGVyKDApKTsKLSAgRVhQ
RUNUX0NBTEwoZm9vLCBEb1RoYXQoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShJbmNyZW1lbnRD
b3VudGVyKDApKTsKLSAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAxLgotICBmb28uRG9UaGlz
KCk7ICAvLyBSZXR1cm5zIDIuCi0gIGZvby5Eb1RoYXQoKTsgIC8vIFJldHVybnMgMSAtIEJsYWgo
KSB1c2VzIGEgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgIC8vIGNvdW50ZXIgdGhhbiBCYXIo
KSdzLgotYGBgCi0KLXZlcnN1cwotCi1gYGAKLSAgQWN0aW9uPGludCgpPiBpbmNyZW1lbnQgPSBJ
bmNyZW1lbnRDb3VudGVyKDApOwotCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKCkpCi0gICAg
ICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQo
KSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShpbmNyZW1lbnQpOwotICBmb28uRG9UaGlzKCk7ICAv
LyBSZXR1cm5zIDEuCi0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMi4KLSAgZm9vLkRvVGhh
dCgpOyAgLy8gUmV0dXJucyAzIC0gdGhlIGNvdW50ZXIgaXMgc2hhcmVkLgotYGBgCi0KLSMgTWlz
YyBSZWNpcGVzIG9uIFVzaW5nIEdvb2dsZSBNb2NrICMKLQotIyMgTWFraW5nIHRoZSBDb21waWxh
dGlvbiBGYXN0ZXIgIyMKLQotQmVsaWV2ZSBpdCBvciBub3QsIHRoZSBfdmFzdCBtYWpvcml0eV8g
b2YgdGhlIHRpbWUgc3BlbnQgb24gY29tcGlsaW5nCi1hIG1vY2sgY2xhc3MgaXMgaW4gZ2VuZXJh
dGluZyBpdHMgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIGFzIHRoZXkKLXBlcmZvcm0gbm9u
LXRyaXZpYWwgdGFza3MgKGUuZy4gdmVyaWZpY2F0aW9uIG9mIHRoZQotZXhwZWN0YXRpb25zKS4g
V2hhdCdzIG1vcmUsIG1vY2sgbWV0aG9kcyB3aXRoIGRpZmZlcmVudCBzaWduYXR1cmVzCi1oYXZl
IGRpZmZlcmVudCB0eXBlcyBhbmQgdGh1cyB0aGVpciBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMg
bmVlZCB0bwotYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBzZXBhcmF0ZWx5LiBBcyBhIHJl
c3VsdCwgaWYgeW91IG1vY2sgbWFueQotZGlmZmVyZW50IHR5cGVzIG9mIG1ldGhvZHMsIGNvbXBp
bGluZyB5b3VyIG1vY2sgY2xhc3MgY2FuIGdldCByZWFsbHkKLXNsb3cuCi0KLUlmIHlvdSBhcmUg
ZXhwZXJpZW5jaW5nIHNsb3cgY29tcGlsYXRpb24sIHlvdSBjYW4gbW92ZSB0aGUgZGVmaW5pdGlv
bgotb2YgeW91ciBtb2NrIGNsYXNzJyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvdXQgb2Yg
dGhlIGNsYXNzIGJvZHkKLWFuZCBpbnRvIGEgYC5jcHBgIGZpbGUuIFRoaXMgd2F5LCBldmVuIGlm
IHlvdSBgI2luY2x1ZGVgIHlvdXIgbW9jawotY2xhc3MgaW4gTiBmaWxlcywgdGhlIGNvbXBpbGVy
IG9ubHkgbmVlZHMgdG8gZ2VuZXJhdGUgaXRzIGNvbnN0cnVjdG9yCi1hbmQgZGVzdHJ1Y3RvciBv
bmNlLCByZXN1bHRpbmcgaW4gYSBtdWNoIGZhc3RlciBjb21waWxhdGlvbi4KLQotTGV0J3MgaWxs
dXN0cmF0ZSB0aGUgaWRlYSB1c2luZyBhbiBleGFtcGxlLiBIZXJlJ3MgdGhlIGRlZmluaXRpb24g
b2YgYQotbW9jayBjbGFzcyBiZWZvcmUgYXBwbHlpbmcgdGhpcyByZWNpcGU6Ci0KLWBgYAotLy8g
RmlsZSBtb2NrX2Zvby5oLgotLi4uCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVi
bGljOgotICAvLyBTaW5jZSB3ZSBkb24ndCBkZWNsYXJlIHRoZSBjb25zdHJ1Y3RvciBvciB0aGUg
ZGVzdHJ1Y3RvciwKLSAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgZ2VuZXJhdGUgdGhlbSBpbiBldmVy
eSB0cmFuc2xhdGlvbiB1bml0Ci0gIC8vIHdoZXJlIHRoaXMgbW9jayBjbGFzcyBpcyB1c2VkLgot
Ci0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERvVGhhdCwg
Ym9vbChjb25zdCBjaGFyKiBzdHIpKTsKLSAgLi4uIG1vcmUgbW9jayBtZXRob2RzIC4uLgotfTsK
LWBgYAotCi1BZnRlciB0aGUgY2hhbmdlLCBpdCB3b3VsZCBsb29rIGxpa2U6Ci0KLWBgYAotLy8g
RmlsZSBtb2NrX2Zvby5oLgotLi4uCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVi
bGljOgotICAvLyBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgYXJlIGRlY2xhcmVkLCBi
dXQgbm90IGRlZmluZWQsIGhlcmUuCi0gIE1vY2tGb28oKTsKLSAgdmlydHVhbCB+TW9ja0Zvbygp
OwotCi0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERvVGhh
dCwgYm9vbChjb25zdCBjaGFyKiBzdHIpKTsKLSAgLi4uIG1vcmUgbW9jayBtZXRob2RzIC4uLgot
fTsKLWBgYAotYW5kCi1gYGAKLS8vIEZpbGUgbW9ja19mb28uY3BwLgotI2luY2x1ZGUgInBhdGgv
dG8vbW9ja19mb28uaCIKLQotLy8gVGhlIGRlZmluaXRpb25zIG1heSBhcHBlYXIgdHJpdmlhbCwg
YnV0IHRoZSBmdW5jdGlvbnMgYWN0dWFsbHkgZG8gYQotLy8gbG90IG9mIHRoaW5ncyB0aHJvdWdo
IHRoZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb2YgdGhlIG1lbWJlcgotLy8gdmFyaWFibGVz
IHVzZWQgdG8gaW1wbGVtZW50IHRoZSBtb2NrIG1ldGhvZHMuCi1Nb2NrRm9vOjpNb2NrRm9vKCkg
e30KLU1vY2tGb286On5Nb2NrRm9vKCkge30KLWBgYAotCi0jIyBGb3JjaW5nIGEgVmVyaWZpY2F0
aW9uICMjCi0KLVdoZW4gaXQncyBiZWluZyBkZXN0b3llZCwgeW91ciBmcmllbmRseSBtb2NrIG9i
amVjdCB3aWxsIGF1dG9tYXRpY2FsbHkKLXZlcmlmeSB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24g
aXQgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHdpbGwKLWdlbmVyYXRlIFtHb29nbGUgVGVzdF0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKSBmYWlsdXJlcwotaWYgbm90LiBU
aGlzIGlzIGNvbnZlbmllbnQgYXMgaXQgbGVhdmVzIHlvdSB3aXRoIG9uZSBsZXNzIHRoaW5nIHRv
Ci13b3JyeSBhYm91dC4gVGhhdCBpcywgdW5sZXNzIHlvdSBhcmUgbm90IHN1cmUgaWYgeW91ciBt
b2NrIG9iamVjdCB3aWxsCi1iZSBkZXN0b3llZC4KLQotSG93IGNvdWxkIGl0IGJlIHRoYXQgeW91
ciBtb2NrIG9iamVjdCB3b24ndCBldmVudHVhbGx5IGJlIGRlc3Ryb3llZD8KLVdlbGwsIGl0IG1p
Z2h0IGJlIGNyZWF0ZWQgb24gdGhlIGhlYXAgYW5kIG93bmVkIGJ5IHRoZSBjb2RlIHlvdSBhcmUK
LXRlc3RpbmcuIFN1cHBvc2UgdGhlcmUncyBhIGJ1ZyBpbiB0aGF0IGNvZGUgYW5kIGl0IGRvZXNu
J3QgZGVsZXRlIHRoZQotbW9jayBvYmplY3QgcHJvcGVybHkgLSB5b3UgY291bGQgZW5kIHVwIHdp
dGggYSBwYXNzaW5nIHRlc3Qgd2hlbgotdGhlcmUncyBhY3R1YWxseSBhIGJ1Zy4KLQotVXNpbmcg
YSBoZWFwIGNoZWNrZXIgaXMgYSBnb29kIGlkZWEgYW5kIGNhbiBhbGxldmlhdGUgdGhlIGNvbmNl
cm4sIGJ1dAotaXRzIGltcGxlbWVudGF0aW9uIG1heSBub3QgYmUgMTAwJSByZWxpYWJsZS4gU28s
IHNvbWV0aW1lcyB5b3UgZG8gd2FudAotdG8gX2ZvcmNlXyBHb29nbGUgTW9jayB0byB2ZXJpZnkg
YSBtb2NrIG9iamVjdCBiZWZvcmUgaXQgaXMKLShob3BlZnVsbHkpIGRlc3RydWN0ZWQuIFlvdSBj
YW4gZG8gdGhpcyB3aXRoCi1gTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tf
b2JqZWN0KWA6Ci0KLWBgYAotVEVTVChNeVNlcnZlclRlc3QsIFByb2Nlc3Nlc1JlcXVlc3QpIHsK
LSAgdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwotCi0gIE1vY2tGb28qIGNvbnN0IGZvbyA9IG5ldyBN
b2NrRm9vOwotICBFWFBFQ1RfQ0FMTCgqZm9vLCAuLi4pLi4uOwotICAvLyAuLi4gb3RoZXIgZXhw
ZWN0YXRpb25zIC4uLgotCi0gIC8vIHNlcnZlciBub3cgb3ducyBmb28uCi0gIE15U2VydmVyIHNl
cnZlcihmb28pOwotICBzZXJ2ZXIuUHJvY2Vzc1JlcXVlc3QoLi4uKTsKLQotICAvLyBJbiBjYXNl
IHRoYXQgc2VydmVyJ3MgZGVzdHJ1Y3RvciB3aWxsIGZvcmdldCB0byBkZWxldGUgZm9vLAotICAv
LyB0aGlzIHdpbGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgYW55d2F5LgotICBNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucyhmb28pOwotfSAgLy8gc2VydmVyIGlzIGRlc3Ryb3llZCB3
aGVuIGl0IGdvZXMgb3V0IG9mIHNjb3BlIGhlcmUuCi1gYGAKLQotKipUaXA6KiogVGhlIGBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpYCBmdW5jdGlvbiByZXR1cm5zIGEKLWBib29s
YCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB2ZXJpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGB0
cnVlYCBmb3IKLXllcyksIHNvIHlvdSBjYW4gd3JhcCB0aGF0IGZ1bmN0aW9uIGNhbGwgaW5zaWRl
IGEgYEFTU0VSVF9UUlVFKClgIGlmCi10aGVyZSBpcyBubyBwb2ludCBnb2luZyBmdXJ0aGVyIHdo
ZW4gdGhlIHZlcmlmaWNhdGlvbiBoYXMgZmFpbGVkLgotCi0jIyBVc2luZyBDaGVjayBQb2ludHMg
IyMKLQotU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byAicmVzZXQiIGEgbW9jayBvYmplY3QgYXQg
dmFyaW91cyBjaGVjawotcG9pbnRzIGluIHlvdXIgdGVzdDogYXQgZWFjaCBjaGVjayBwb2ludCwg
eW91IHZlcmlmeSB0aGF0IGFsbCBleGlzdGluZwotZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9i
amVjdCBoYXZlIGJlZW4gc2F0aXNmaWVkLCBhbmQgdGhlbiB5b3Ugc2V0Ci1zb21lIG5ldyBleHBl
Y3RhdGlvbnMgb24gaXQgYXMgaWYgaXQncyBuZXdseSBjcmVhdGVkLiBUaGlzIGFsbG93cyB5b3UK
LXRvIHdvcmsgd2l0aCBhIG1vY2sgb2JqZWN0IGluICJwaGFzZXMiIHdob3NlIHNpemVzIGFyZSBl
YWNoCi1tYW5hZ2VhYmxlLgotCi1PbmUgc3VjaCBzY2VuYXJpbyBpcyB0aGF0IGluIHlvdXIgdGVz
dCdzIGBTZXRVcCgpYCBmdW5jdGlvbiwgeW91IG1heQotd2FudCB0byBwdXQgdGhlIG9iamVjdCB5
b3UgYXJlIHRlc3RpbmcgaW50byBhIGNlcnRhaW4gc3RhdGUsIHdpdGggdGhlCi1oZWxwIGZyb20g
YSBtb2NrIG9iamVjdC4gT25jZSBpbiB0aGUgZGVzaXJlZCBzdGF0ZSwgeW91IHdhbnQgdG8gY2xl
YXIKLWFsbCBleHBlY3RhdGlvbnMgb24gdGhlIG1vY2ssIHN1Y2ggdGhhdCBpbiB0aGUgYFRFU1Rf
RmAgYm9keSB5b3UgY2FuCi1zZXQgZnJlc2ggZXhwZWN0YXRpb25zIG9uIGl0LgotCi1BcyB5b3Ug
bWF5IGhhdmUgZmlndXJlZCBvdXQsIHRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoKWAKLWZ1bmN0aW9uIHdlIHNhdyBpbiB0aGUgcHJldmlvdXMgcmVjaXBlIGNhbiBoZWxwIHlv
dSBoZXJlLiBPciwgaWYgeW91Ci1hcmUgdXNpbmcgYE9OX0NBTEwoKWAgdG8gc2V0IGRlZmF1bHQg
YWN0aW9ucyBvbiB0aGUgbW9jayBvYmplY3QgYW5kCi13YW50IHRvIGNsZWFyIHRoZSBkZWZhdWx0
IGFjdGlvbnMgYXMgd2VsbCwgdXNlCi1gTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJm1vY2tfb2JqZWN0
KWAgaW5zdGVhZC4gVGhpcyBmdW5jdGlvbiBkb2VzIHdoYXQKLWBNb2NrOjpWZXJpZnlBbmRDbGVh
ckV4cGVjdGF0aW9ucygmbW9ja19vYmplY3QpYCBkb2VzIGFuZCByZXR1cm5zIHRoZQotc2FtZSBg
Ym9vbGAsICoqcGx1cyoqIGl0IGNsZWFycyB0aGUgYE9OX0NBTEwoKWAgc3RhdGVtZW50cyBvbgot
YG1vY2tfb2JqZWN0YCB0b28uCi0KLUFub3RoZXIgdHJpY2sgeW91IGNhbiB1c2UgdG8gYWNoaWV2
ZSB0aGUgc2FtZSBlZmZlY3QgaXMgdG8gcHV0IHRoZQotZXhwZWN0YXRpb25zIGluIHNlcXVlbmNl
cyBhbmQgaW5zZXJ0IGNhbGxzIHRvIGEgZHVtbXkgImNoZWNrLXBvaW50IgotZnVuY3Rpb24gYXQg
c3BlY2lmaWMgcGxhY2VzLiBUaGVuIHlvdSBjYW4gdmVyaWZ5IHRoYXQgdGhlIG1vY2sKLWZ1bmN0
aW9uIGNhbGxzIGRvIGhhcHBlbiBhdCB0aGUgcmlnaHQgdGltZS4gRm9yIGV4YW1wbGUsIGlmIHlv
dSBhcmUKLWV4ZXJjaXNpbmcgY29kZToKLQotYGBgCi1Gb28oMSk7Ci1Gb28oMik7Ci1Gb28oMyk7
Ci1gYGAKLQotYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYEZvbygxKWAgYW5kIGBGb28oMylgIGJv
dGggaW52b2tlCi1gbW9jay5CYXIoImEiKWAsIGJ1dCBgRm9vKDIpYCBkb2Vzbid0IGludm9rZSBh
bnl0aGluZy4gWW91IGNhbiB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2tGdW5j
dGlvbjsKLQotVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29ycmVjdGx5KSB7Ci0gIE15TW9jayBt
b2NrOwotICAvLyBDbGFzcyBNb2NrRnVuY3Rpb248Rj4gaGFzIGV4YWN0bHkgb25lIG1vY2sgbWV0
aG9kLiAgSXQgaXMgbmFtZWQKLSAgLy8gQ2FsbCgpIGFuZCBoYXMgdHlwZSBGLgotICBNb2NrRnVu
Y3Rpb248dm9pZChzdHJpbmcgY2hlY2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotICB7Ci0gICAgSW5T
ZXF1ZW5jZSBzOwotCi0gICAgRVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotICAgIEVYUEVD
VF9DQUxMKGNoZWNrLCBDYWxsKCIxIikpOwotICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxsKCIy
IikpOwotICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKLSAgfQotICBGb28oMSk7Ci0g
IGNoZWNrLkNhbGwoIjEiKTsKLSAgRm9vKDIpOwotICBjaGVjay5DYWxsKCIyIik7Ci0gIEZvbygz
KTsKLX0KLWBgYAotCi1UaGUgZXhwZWN0YXRpb24gc3BlYyBzYXlzIHRoYXQgdGhlIGZpcnN0IGBC
YXIoImEiKWAgbXVzdCBoYXBwZW4gYmVmb3JlCi1jaGVjayBwb2ludCAiMSIsIHRoZSBzZWNvbmQg
YEJhcigiYSIpYCBtdXN0IGhhcHBlbiBhZnRlciBjaGVjayBwb2ludCAiMiIsCi1hbmQgbm90aGlu
ZyBzaG91bGQgaGFwcGVuIGJldHdlZW4gdGhlIHR3byBjaGVjayBwb2ludHMuIFRoZSBleHBsaWNp
dAotY2hlY2sgcG9pbnRzIG1ha2UgaXQgZWFzeSB0byB0ZWxsIHdoaWNoIGBCYXIoImEiKWAgaXMg
Y2FsbGVkIGJ5IHdoaWNoCi1jYWxsIHRvIGBGb28oKWAuCi0KLSMjIE1vY2tpbmcgRGVzdHJ1Y3Rv
cnMgIyMKLQotU29tZXRpbWVzIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSBhIG1vY2sgb2JqZWN0IGlz
IGRlc3RydWN0ZWQgYXQgdGhlCi1yaWdodCB0aW1lLCBlLmcuIGFmdGVyIGBiYXItPkEoKWAgaXMg
Y2FsbGVkIGJ1dCBiZWZvcmUgYGJhci0+QigpYCBpcwotY2FsbGVkLiBXZSBhbHJlYWR5IGtub3cg
dGhhdCB5b3UgY2FuIHNwZWNpZnkgY29uc3RyYWludHMgb24gdGhlIG9yZGVyCi1vZiBtb2NrIGZ1
bmN0aW9uIGNhbGxzLCBzbyBhbGwgd2UgbmVlZCB0byBkbyBpcyB0byBtb2NrIHRoZSBkZXN0cnVj
dG9yCi1vZiB0aGUgbW9jayBmdW5jdGlvbi4KLQotVGhpcyBzb3VuZHMgc2ltcGxlLCBleGNlcHQg
Zm9yIG9uZSBwcm9ibGVtOiBhIGRlc3RydWN0b3IgaXMgYSBzcGVjaWFsCi1mdW5jdGlvbiB3aXRo
IHNwZWNpYWwgc3ludGF4IGFuZCBzcGVjaWFsIHNlbWFudGljcywgYW5kIHRoZQotYE1PQ0tfTUVU
SE9EMGAgbWFjcm8gZG9lc24ndCB3b3JrIGZvciBpdDoKLQotYGBgCi0gIE1PQ0tfTUVUSE9EMCh+
TW9ja0Zvbywgdm9pZCgpKTsgIC8vIFdvbid0IGNvbXBpbGUhCi1gYGAKLQotVGhlIGdvb2QgbmV3
cyBpcyB0aGF0IHlvdSBjYW4gdXNlIGEgc2ltcGxlIHBhdHRlcm4gdG8gYWNoaWV2ZSB0aGUgc2Ft
ZQotZWZmZWN0LiBGaXJzdCwgYWRkIGEgbW9jayBmdW5jdGlvbiBgRGllKClgIHRvIHlvdXIgbW9j
ayBjbGFzcyBhbmQgY2FsbAotaXQgaW4gdGhlIGRlc3RydWN0b3IsIGxpa2UgdGhpczoKLQotYGBg
Ci1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4uLgotICAvLyBBZGQgdGhlIGZvbGxv
d2luZyB0d28gbGluZXMgdG8gdGhlIG1vY2sgY2xhc3MuCi0gIE1PQ0tfTUVUSE9EMChEaWUsIHZv
aWQoKSk7Ci0gIHZpcnR1YWwgfk1vY2tGb28oKSB7IERpZSgpOyB9Ci19OwotYGBgCi0KLShJZiB0
aGUgbmFtZSBgRGllKClgIGNsYXNoZXMgd2l0aCBhbiBleGlzdGluZyBzeW1ib2wsIGNob29zZSBh
bm90aGVyCi1uYW1lLikgTm93LCB3ZSBoYXZlIHRyYW5zbGF0ZWQgdGhlIHByb2JsZW0gb2YgdGVz
dGluZyB3aGVuIGEgYE1vY2tGb29gCi1vYmplY3QgZGllcyB0byB0ZXN0aW5nIHdoZW4gaXRzIGBE
aWUoKWAgbWV0aG9kIGlzIGNhbGxlZDoKLQotYGBgCi0gIE1vY2tGb28qIGZvbyA9IG5ldyBNb2Nr
Rm9vOwotICBNb2NrQmFyKiBiYXIgPSBuZXcgTW9ja0JhcjsKLSAgLi4uCi0gIHsKLSAgICBJblNl
cXVlbmNlIHM7Ci0KLSAgICAvLyBFeHBlY3RzICpmb28gdG8gZGllIGFmdGVyIGJhci0+QSgpIGFu
ZCBiZWZvcmUgYmFyLT5CKCkuCi0gICAgRVhQRUNUX0NBTEwoKmJhciwgQSgpKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqZm9vLCBEaWUoKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmJhciwgQigpKTsKLSAgfQot
YGBgCi0KLUFuZCB0aGF0J3MgdGhhdC4KLQotIyMgVXNpbmcgR29vZ2xlIE1vY2sgYW5kIFRocmVh
ZHMgIyMKLQotKipJTVBPUlRBTlQgTk9URToqKiBXaGF0IHdlIGRlc2NyaWJlIGluIHRoaXMgcmVj
aXBlIGlzICoqT05MWSoqIHRydWUgb24KLXBsYXRmb3JtcyB3aGVyZSBHb29nbGUgTW9jayBpcyB0
aHJlYWQtc2FmZS4gQ3VycmVudGx5IHRoZXNlIGFyZSBvbmx5Ci1wbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IHRoZSBwdGhyZWFkcyBsaWJyYXJ5ICh0aGlzIGluY2x1ZGVzIExpbnV4IGFuZCBNYWMpLgot
VG8gbWFrZSBpdCB0aHJlYWQtc2FmZSBvbiBvdGhlciBwbGF0Zm9ybXMgd2Ugb25seSBuZWVkIHRv
IGltcGxlbWVudAotc29tZSBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucyBpbiBgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQuaCJgLgotCi1JbiBhICoqdW5pdCoqIHRlc3QsIGl0J3MgYmVzdCBp
ZiB5b3UgY291bGQgaXNvbGF0ZSBhbmQgdGVzdCBhIHBpZWNlIG9mCi1jb2RlIGluIGEgc2luZ2xl
LXRocmVhZGVkIGNvbnRleHQuIFRoYXQgYXZvaWRzIHJhY2UgY29uZGl0aW9ucyBhbmQKLWRlYWQg
bG9ja3MsIGFuZCBtYWtlcyBkZWJ1Z2dpbmcgeW91ciB0ZXN0IG11Y2ggZWFzaWVyLgotCi1ZZXQg
bWFueSBwcm9ncmFtcyBhcmUgbXVsdGktdGhyZWFkZWQsIGFuZCBzb21ldGltZXMgdG8gdGVzdCBz
b21ldGhpbmcKLXdlIG5lZWQgdG8gcG91bmQgb24gaXQgZnJvbSBtb3JlIHRoYW4gb25lIHRocmVh
ZC4gR29vZ2xlIE1vY2sgd29ya3MKLWZvciB0aGlzIHB1cnBvc2UgdG9vLgotCi1SZW1lbWJlciB0
aGUgc3RlcHMgZm9yIHVzaW5nIGEgbW9jazoKLQotICAxLiBDcmVhdGUgYSBtb2NrIG9iamVjdCBg
Zm9vYC4KLSAgMS4gU2V0IGl0cyBkZWZhdWx0IGFjdGlvbnMgYW5kIGV4cGVjdGF0aW9ucyB1c2lu
ZyBgT05fQ0FMTCgpYCBhbmQgYEVYUEVDVF9DQUxMKClgLgotICAxLiBUaGUgY29kZSB1bmRlciB0
ZXN0IGNhbGxzIG1ldGhvZHMgb2YgYGZvb2AuCi0gIDEuIE9wdGlvbmFsbHksIHZlcmlmeSBhbmQg
cmVzZXQgdGhlIG1vY2suCi0gIDEuIERlc3Ryb3kgdGhlIG1vY2sgeW91cnNlbGYsIG9yIGxldCB0
aGUgY29kZSB1bmRlciB0ZXN0IGRlc3Ryb3kgaXQuIFRoZSBkZXN0cnVjdG9yIHdpbGwgYXV0b21h
dGljYWxseSB2ZXJpZnkgaXQuCi0KLUlmIHlvdSBmb2xsb3cgdGhlIGZvbGxvd2luZyBzaW1wbGUg
cnVsZXMsIHlvdXIgbW9ja3MgYW5kIHRocmVhZHMgY2FuCi1saXZlIGhhcHBpbHkgdG9nZXRlcjoK
LQotICAqIEV4ZWN1dGUgeW91ciBfdGVzdCBjb2RlXyAoYXMgb3Bwb3NlZCB0byB0aGUgY29kZSBi
ZWluZyB0ZXN0ZWQpIGluIF9vbmVfIHRocmVhZC4gVGhpcyBtYWtlcyB5b3VyIHRlc3QgZWFzeSB0
byBmb2xsb3cuCi0gICogT2J2aW91c2x5LCB5b3UgY2FuIGRvIHN0ZXAgIzEgd2l0aG91dCBsb2Nr
aW5nLgotICAqIFdoZW4gZG9pbmcgc3RlcCAjMiBhbmQgIzUsIG1ha2Ugc3VyZSBubyBvdGhlciB0
aHJlYWQgaXMgYWNjZXNzaW5nIGBmb29gLiBPYnZpb3VzIHRvbywgaHVoPwotICAqICMzIGFuZCAj
NCBjYW4gYmUgZG9uZSBlaXRoZXIgaW4gb25lIHRocmVhZCBvciBpbiBtdWx0aXBsZSB0aHJlYWRz
IC0gYW55d2F5IHlvdSB3YW50LiBHb29nbGUgTW9jayB0YWtlcyBjYXJlIG9mIHRoZSBsb2NraW5n
LCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBkbyBhbnkgLSB1bmxlc3MgcmVxdWlyZWQgYnkgeW91ciB0
ZXN0IGxvZ2ljLgotCi1JZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZXMgKGZvciBleGFtcGxlLCBpZiB5
b3Ugc2V0IGV4cGVjdGF0aW9ucyBvbiBhCi1tb2NrIHdoaWxlIGFub3RoZXIgdGhyZWFkIGlzIGNh
bGxpbmcgaXRzIG1ldGhvZHMpLCB5b3UgZ2V0IHVuZGVmaW5lZAotYmVoYXZpb3IuIFRoYXQncyBu
b3QgZnVuLCBzbyBkb24ndCBkbyBpdC4KLQotR29vZ2xlIE1vY2sgZ3VhcmFudGVlcyB0aGF0IHRo
ZSBhY3Rpb24gZm9yIGEgbW9jayBmdW5jdGlvbiBpcyBkb25lIGluCi10aGUgc2FtZSB0aHJlYWQg
dGhhdCBjYWxsZWQgdGhlIG1vY2sgZnVuY3Rpb24uIEZvciBleGFtcGxlLCBpbgotCi1gYGAKLSAg
RVhQRUNUX0NBTEwobW9jaywgRm9vKDEpKQotICAgICAgLldpbGxPbmNlKGFjdGlvbjEpOwotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oMikpCi0gICAgICAuV2lsbE9uY2UoYWN0aW9uMik7Ci1gYGAK
LQotaWYgYEZvbygxKWAgaXMgY2FsbGVkIGluIHRocmVhZCAxIGFuZCBgRm9vKDIpYCBpcyBjYWxs
ZWQgaW4gdGhyZWFkIDIsCi1Hb29nbGUgTW9jayB3aWxsIGV4ZWN1dGUgYGFjdGlvbjFgIGluIHRo
cmVhZCAxIGFuZCBgYWN0aW9uMmAgaW4gdGhyZWFkCi0yLgotCi1Hb29nbGUgTW9jayBkb2VzIF9u
b3RfIGltcG9zZSBhIHNlcXVlbmNlIG9uIGFjdGlvbnMgcGVyZm9ybWVkIGluCi1kaWZmZXJlbnQg
dGhyZWFkcyAoZG9pbmcgc28gbWF5IGNyZWF0ZSBkZWFkbG9ja3MgYXMgdGhlIGFjdGlvbnMgbWF5
Ci1uZWVkIHRvIGNvb3BlcmF0ZSkuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhlY3V0aW9uIG9mIGBh
Y3Rpb24xYCBhbmQKLWBhY3Rpb24yYCBpbiB0aGUgYWJvdmUgZXhhbXBsZSBfbWF5XyBpbnRlcmxl
YXZlLiBJZiB0aGlzIGlzIGEgcHJvYmxlbSwKLXlvdSBzaG91bGQgYWRkIHByb3BlciBzeW5jaHJv
bml6YXRpb24gbG9naWMgdG8gYGFjdGlvbjFgIGFuZCBgYWN0aW9uMmAKLXRvIG1ha2UgdGhlIHRl
c3QgdGhyZWFkLXNhZmUuCi0KLQotQWxzbywgcmVtZW1iZXIgdGhhdCBgRGVmYXVsdFZhbHVlPFQ+
YCBpcyBhIGdsb2JhbCByZXNvdXJjZSB0aGF0Ci1wb3RlbnRpYWxseSBhZmZlY3RzIF9hbGxfIGxp
dmluZyBtb2NrIG9iamVjdHMgaW4geW91cgotcHJvZ3JhbS4gTmF0dXJhbGx5LCB5b3Ugd29uJ3Qg
d2FudCB0byBtZXNzIHdpdGggaXQgZnJvbSBtdWx0aXBsZQotdGhyZWFkcyBvciB3aGVuIHRoZXJl
IHN0aWxsIGFyZSBtb2NrcyBpbiBhY3Rpb24uCi0KLSMjIENvbnRyb2xsaW5nIEhvdyBNdWNoIElu
Zm9ybWF0aW9uIEdvb2dsZSBNb2NrIFByaW50cyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIHNlZXMg
c29tZXRoaW5nIHRoYXQgaGFzIHRoZSBwb3RlbnRpYWwgb2YgYmVpbmcgYW4KLWVycm9yIChlLmcu
IGEgbW9jayBmdW5jdGlvbiB3aXRoIG5vIGV4cGVjdGF0aW9uIGlzIGNhbGxlZCwgYS5rLmEuIGFu
Ci11bmludGVyZXN0aW5nIGNhbGwsIHdoaWNoIGlzIGFsbG93ZWQgYnV0IHBlcmhhcHMgeW91IGZv
cmdvdCB0bwotZXhwbGljaXRseSBiYW4gdGhlIGNhbGwpLCBpdCBwcmludHMgc29tZSB3YXJuaW5n
IG1lc3NhZ2VzLCBpbmNsdWRpbmcKLXRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uIGFuZCB0
aGUgcmV0dXJuIHZhbHVlLiBIb3BlZnVsbHkgdGhpcwotd2lsbCByZW1pbmQgeW91IHRvIHRha2Ug
YSBsb29rIGFuZCBzZWUgaWYgdGhlcmUgaXMgaW5kZWVkIGEgcHJvYmxlbS4KLQotU29tZXRpbWVz
IHlvdSBhcmUgY29uZmlkZW50IHRoYXQgeW91ciB0ZXN0cyBhcmUgY29ycmVjdCBhbmQgbWF5IG5v
dAotYXBwcmVjaWF0ZSBzdWNoIGZyaWVuZGx5IG1lc3NhZ2VzLiBTb21lIG90aGVyIHRpbWVzLCB5
b3UgYXJlIGRlYnVnZ2luZwoteW91ciB0ZXN0cyBvciBsZWFybmluZyBhYm91dCB0aGUgYmVoYXZp
b3Igb2YgdGhlIGNvZGUgeW91IGFyZSB0ZXN0aW5nLAotYW5kIHdpc2ggeW91IGNvdWxkIG9ic2Vy
dmUgZXZlcnkgbW9jayBjYWxsIHRoYXQgaGFwcGVucyAoaW5jbHVkaW5nCi1hcmd1bWVudCB2YWx1
ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUpLiBDbGVhcmx5LCBvbmUgc2l6ZSBkb2Vzbid0IGZpdAot
YWxsLgotCi1Zb3UgY2FuIGNvbnRyb2wgaG93IG11Y2ggR29vZ2xlIE1vY2sgdGVsbHMgeW91IHVz
aW5nIHRoZQotYC0tZ21vY2tfdmVyYm9zZT1MRVZFTGAgY29tbWFuZC1saW5lIGZsYWcsIHdoZXJl
IGBMRVZFTGAgaXMgYSBzdHJpbmcKLXdpdGggdGhyZWUgcG9zc2libGUgdmFsdWVzOgotCi0gICog
YGluZm9gOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGFsbCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2Vz
LCB3YXJuaW5ncywgYW5kIGVycm9ycyAobW9zdCB2ZXJib3NlKS4gQXQgdGhpcyBzZXR0aW5nLCBH
b29nbGUgTW9jayB3aWxsIGFsc28gbG9nIGFueSBjYWxscyB0byB0aGUgYE9OX0NBTEwvRVhQRUNU
X0NBTExgIG1hY3Jvcy4KLSAgKiBgd2FybmluZ2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgYm90
aCB3YXJuaW5ncyBhbmQgZXJyb3JzIChsZXNzIHZlcmJvc2UpLiBUaGlzIGlzIHRoZSBkZWZhdWx0
LgotICAqIGBlcnJvcmA6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgZXJyb3JzIG9ubHkgKGxlYXN0
IHZlcmJvc2UpLgotCi1BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFkanVzdCB0aGUgdmFsdWUgb2Yg
dGhhdCBmbGFnIGZyb20gd2l0aGluIHlvdXIKLXRlc3RzIGxpa2Ugc286Ci0KLWBgYAotICA6OnRl
c3Rpbmc6OkZMQUdTX2dtb2NrX3ZlcmJvc2UgPSAiZXJyb3IiOwotYGBgCi0KLU5vdywganVkaWNp
b3VzbHkgdXNlIHRoZSByaWdodCBmbGFnIHRvIGVuYWJsZSBHb29nbGUgTW9jayBzZXJ2ZSB5b3Ug
YmV0dGVyIQotCi0jIyBHYWluaW5nIFN1cGVyIFZpc2lvbiBpbnRvIE1vY2sgQ2FsbHMgIyMKLQot
WW91IGhhdmUgYSB0ZXN0IHVzaW5nIEdvb2dsZSBNb2NrLiBJdCBmYWlsczogR29vZ2xlIE1vY2sg
dGVsbHMgeW91Ci10aGF0IHNvbWUgZXhwZWN0YXRpb25zIGFyZW4ndCBzYXRpc2ZpZWQuIEhvd2V2
ZXIsIHlvdSBhcmVuJ3Qgc3VyZSB3aHk6Ci1JcyB0aGVyZSBhIHR5cG8gc29tZXdoZXJlIGluIHRo
ZSBtYXRjaGVycz8gRGlkIHlvdSBtZXNzIHVwIHRoZSBvcmRlcgotb2YgdGhlIGBFWFBFQ1RfQ0FM
TGBzPyBPciBpcyB0aGUgY29kZSB1bmRlciB0ZXN0IGRvaW5nIHNvbWV0aGluZwotd3Jvbmc/ICBI
b3cgY2FuIHlvdSBmaW5kIG91dCB0aGUgY2F1c2U/Ci0KLVdvbid0IGl0IGJlIG5pY2UgaWYgeW91
IGhhdmUgWC1yYXkgdmlzaW9uIGFuZCBjYW4gYWN0dWFsbHkgc2VlIHRoZQotdHJhY2Ugb2YgYWxs
IGBFWFBFQ1RfQ0FMTGBzIGFuZCBtb2NrIG1ldGhvZCBjYWxscyBhcyB0aGV5IGFyZSBtYWRlPwot
Rm9yIGVhY2ggY2FsbCwgd291bGQgeW91IGxpa2UgdG8gc2VlIGl0cyBhY3R1YWwgYXJndW1lbnQg
dmFsdWVzIGFuZAotd2hpY2ggYEVYUEVDVF9DQUxMYCBHb29nbGUgTW9jayB0aGlua3MgaXQgbWF0
Y2hlcz8KLQotWW91IGNhbiB1bmxvY2sgdGhpcyBwb3dlciBieSBydW5uaW5nIHlvdXIgdGVzdCB3
aXRoIHRoZQotYC0tZ21vY2tfdmVyYm9zZT1pbmZvYCBmbGFnLiBGb3IgZXhhbXBsZSwgZ2l2ZW4g
dGhlIHRlc3QgcHJvZ3JhbToKLQotYGBgCi11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGlu
Zzo6SGFzU3Vic3RyOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotCi1jbGFzcyBNb2NrRm9vIHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihGLCB2b2lkKGNvbnN0IHN0cmluZyYgeCwgY29uc3Qg
c3RyaW5nJiB5KSk7Ci19OwotCi1URVNUKEZvbywgQmFyKSB7Ci0gIE1vY2tGb28gbW9jazsKLSAg
RVhQRUNUX0NBTEwobW9jaywgRihfLCBfKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGKCJhIiwgImIiKSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEYoImMi
LCBIYXNTdWJzdHIoImQiKSkpOwotCi0gIG1vY2suRigiYSIsICJnb29kIik7Ci0gIG1vY2suRigi
YSIsICJiIik7Ci19Ci1gYGAKLQotaWYgeW91IHJ1biBpdCB3aXRoIGAtLWdtb2NrX3ZlcmJvc2U9
aW5mb2AsIHlvdSB3aWxsIHNlZSB0aGlzIG91dHB1dDoKLQotYGBgCi1bIFJVTiAgICAgIF0gRm9v
LkJhcgotCi1mb29fdGVzdC5jYzoxNDogRVhQRUNUX0NBTEwobW9jaywgRihfLCBfKSkgaW52b2tl
ZAotZm9vX3Rlc3QuY2M6MTU6IEVYUEVDVF9DQUxMKG1vY2ssIEYoImEiLCAiYiIpKSBpbnZva2Vk
Ci1mb29fdGVzdC5jYzoxNjogRVhQRUNUX0NBTEwobW9jaywgRigiYyIsIEhhc1N1YnN0cigiZCIp
KSkgaW52b2tlZAotZm9vX3Rlc3QuY2M6MTQ6IE1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVY
UEVDVF9DQUxMKG1vY2ssIEYoXywgXykpLi4uCi0gICAgRnVuY3Rpb24gY2FsbDogRihAMHg3ZmZm
N2M4ZGFkNDAiYSIsIEAweDdmZmY3YzhkYWQxMCJnb29kIikKLWZvb190ZXN0LmNjOjE1OiBNb2Nr
IGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJhIiwgImIiKSkuLi4K
LSAgICBGdW5jdGlvbiBjYWxsOiBGKEAweDdmZmY3YzhkYWRhMCJhIiwgQDB4N2ZmZjdjOGRhZDcw
ImIiKQotZm9vX3Rlc3QuY2M6MTY6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50
IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NBTEwobW9jaywgRigiYyIsIEhhc1N1YnN0cigiZCIpKSku
Li4KLSAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQotICAgICAgICAgICBBY3R1
YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKLVsgIEZBSUxFRCAgXSBG
b28uQmFyCi1gYGAKLQotU3VwcG9zZSB0aGUgYnVnIGlzIHRoYXQgdGhlIGAiYyJgIGluIHRoZSB0
aGlyZCBgRVhQRUNUX0NBTExgIGlzIGEgdHlwbwotYW5kIHNob3VsZCBhY3R1YWxseSBiZSBgImEi
YC4gV2l0aCB0aGUgYWJvdmUgbWVzc2FnZSwgeW91IHNob3VsZCBzZWUKLXRoYXQgdGhlIGFjdHVh
bCBgRigiYSIsICJnb29kIilgIGNhbGwgaXMgbWF0Y2hlZCBieSB0aGUgZmlyc3QKLWBFWFBFQ1Rf
Q0FMTGAsIG5vdCB0aGUgdGhpcmQgYXMgeW91IHRob3VnaHQuIEZyb20gdGhhdCBpdCBzaG91bGQg
YmUKLW9idmlvdXMgdGhhdCB0aGUgdGhpcmQgYEVYUEVDVF9DQUxMYCBpcyB3cml0dGVuIHdyb25n
LiBDYXNlIHNvbHZlZC4KLQotIyMgUnVubmluZyBUZXN0cyBpbiBFbWFjcyAjIwotCi1JZiB5b3Ug
YnVpbGQgYW5kIHJ1biB5b3VyIHRlc3RzIGluIEVtYWNzLCB0aGUgc291cmNlIGZpbGUgbG9jYXRp
b25zIG9mCi1Hb29nbGUgTW9jayBhbmQgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xldGVzdC8pCi1lcnJvcnMgd2lsbCBiZSBoaWdobGlnaHRlZC4gSnVzdCBwcmVz
cyBgPEVudGVyPmAgb24gb25lIG9mIHRoZW0gYW5kCi15b3UnbGwgYmUgdGFrZW4gdG8gdGhlIG9m
ZmVuZGluZyBsaW5lLiBPciwgeW91IGNhbiBqdXN0IHR5cGUgYEMteCBgYAotdG8ganVtcCB0byB0
aGUgbmV4dCBlcnJvci4KLQotVG8gbWFrZSBpdCBldmVuIGVhc2llciwgeW91IGNhbiBhZGQgdGhl
IGZvbGxvd2luZyBsaW5lcyB0byB5b3VyCi1gfi8uZW1hY3NgIGZpbGU6Ci0KLWBgYAotKGdsb2Jh
bC1zZXQta2V5ICJcTS1tIiAgICdjb21waWxlKSAgOyBtIGlzIGZvciBtYWtlCi0oZ2xvYmFsLXNl
dC1rZXkgW00tZG93bl0gJ25leHQtZXJyb3IpCi0oZ2xvYmFsLXNldC1rZXkgW00tdXBdICAgJyhs
YW1iZGEgKCkgKGludGVyYWN0aXZlKSAobmV4dC1lcnJvciAtMSkpKQotYGBgCi0KLVRoZW4geW91
IGNhbiB0eXBlIGBNLW1gIHRvIHN0YXJ0IGEgYnVpbGQsIG9yIGBNLXVwYC9gTS1kb3duYCB0byBt
b3ZlCi1iYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGVycm9ycy4KLQotIyMgRnVzaW5nIEdvb2dsZSBN
b2NrIFNvdXJjZSBGaWxlcyAjIwotCi1Hb29nbGUgTW9jaydzIGltcGxlbWVudGF0aW9uIGNvbnNp
c3RzIG9mIGRvemVucyBvZiBmaWxlcyAoZXhjbHVkaW5nCi1pdHMgb3duIHRlc3RzKS4gIFNvbWV0
aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbgotZmV3ZXIgZmlsZXMg
aW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5ldwotbWFj
aGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUgYW4gZXhw
ZXJpbWVudGFsCi1QeXRob24gc2NyaXB0IGBmdXNlX2dtb2NrX2ZpbGVzLnB5YCBpbiB0aGUgYHNj
cmlwdHMvYCBkaXJlY3RvcnkKLShzdGFydGluZyB3aXRoIHJlbGVhc2UgMS4yLjApLiAgQXNzdW1p
bmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZQotaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGlu
ZSwganVzdCBnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCi1gYGAKLXB5dGhvbiBmdXNlX2dt
b2NrX2ZpbGVzLnB5IE9VVFBVVF9ESVIKLWBgYAotCi1hbmQgeW91IHNob3VsZCBzZWUgYW4gYE9V
VFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKLWBndGVzdC9ndGVz
dC5oYCwgYGdtb2NrL2dtb2NrLmhgLCBhbmQgYGdtb2NrLWd0ZXN0LWFsbC5jY2AgaW4gaXQuCi1U
aGVzZSB0aHJlZSBmaWxlcyBjb250YWluIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNlIEdvb2ds
ZSBNb2NrIChhbmQKLUdvb2dsZSBUZXN0KS4gIEp1c3QgY29weSB0aGVtIHRvIGFueXdoZXJlIHlv
dSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5Ci10byB3cml0ZSB0ZXN0cyBhbmQgdXNlIG1vY2tzLiAg
WW91IGNhbiB1c2UgdGhlCi1bc2NycHRzL3Rlc3QvTWFrZWZpbGVdKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy90ZXN0L01ha2Vm
aWxlKSBmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cwotYWdh
aW5zdCB0aGVtLgotCi0jIEV4dGVuZGluZyBHb29nbGUgTW9jayAjCi0KLSMjIFdyaXRpbmcgTmV3
IE1hdGNoZXJzIFF1aWNrbHkgIyMKLQotVGhlIGBNQVRDSEVSKmAgZmFtaWx5IG9mIG1hY3JvcyBj
YW4gYmUgdXNlZCB0byBkZWZpbmUgY3VzdG9tIG1hdGNoZXJzCi1lYXNpbHkuICBUaGUgc3ludGF4
OgotCi1gYGAKLU1BVENIRVIobmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nX2V4cHJlc3Npb24pIHsg
c3RhdGVtZW50czsgfQotYGBgCi0KLXdpbGwgZGVmaW5lIGEgbWF0Y2hlciB3aXRoIHRoZSBnaXZl
biBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCi1zdGF0ZW1lbnRzLCB3aGljaCBtdXN0IHJldHVybiBh
IGBib29sYCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2gKLXN1Y2NlZWRzLiAgSW5zaWRlIHRoZSBz
dGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZwotbWF0Y2hlZCBieSBg
YXJnYCwgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5IGBhcmdfdHlwZWAuCi0KLVRoZSBkZXNjcmlw
dGlvbiBzdHJpbmcgaXMgYSBgc3RyaW5nYC10eXBlZCBleHByZXNzaW9uIHRoYXQgZG9jdW1lbnRz
Ci13aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBmYWls
dXJlIG1lc3NhZ2UKLXdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgSXQgY2FuIChhbmQgc2hvdWxkKSBy
ZWZlcmVuY2UgdGhlIHNwZWNpYWwKLWBib29sYCB2YXJpYWJsZSBgbmVnYXRpb25gLCBhbmQgc2hv
dWxkIGV2YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBvZgotdGhlIG1hdGNoZXIgd2hlbiBgbmVn
YXRpb25gIGlzIGBmYWxzZWAsIG9yIHRoYXQgb2YgdGhlIG1hdGNoZXIncwotbmVnYXRpb24gd2hl
biBgbmVnYXRpb25gIGlzIGB0cnVlYC4KLQotRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxvdyB0aGUg
ZGVzY3JpcHRpb24gc3RyaW5nIHRvIGJlIGVtcHR5IChgIiJgKSwKLWluIHdoaWNoIGNhc2UgR29v
Z2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZQotbWF0Y2hlciBu
YW1lIGFzIHRoZSBkZXNjcmlwdGlvbi4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENIRVIoSXNE
aXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUgNykgPT0gMDsgfQotYGBgCi1hbGxvd3Mg
eW91IHRvIHdyaXRlCi1gYGAKLSAgLy8gRXhwZWN0cyBtb2NrX2Zvby5CYXIobikgdG8gYmUgY2Fs
bGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCi0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBC
YXIoSXNEaXZpc2libGVCeTcoKSkpOwotYGBgCi1vciwKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpO
b3Q7Ci0uLi4KLSAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJc0RpdmlzaWJsZUJ5Nygp
KTsKLSAgRVhQRUNUX1RIQVQoc29tZV9vdGhlcl9leHByZXNzaW9uLCBOb3QoSXNEaXZpc2libGVC
eTcoKSkpOwotYGBgCi1JZiB0aGUgYWJvdmUgYXNzZXJ0aW9ucyBmYWlsLCB0aGV5IHdpbGwgcHJp
bnQgc29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgotICBF
eHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1YWw6IDI3Ci0uLi4KLSAgVmFsdWUg
b2Y6IHNvbWVfb3RoZXJfZXhwcmVzc2lvbgotICBFeHBlY3RlZDogbm90IChpcyBkaXZpc2libGUg
YnkgNykKLSAgICBBY3R1YWw6IDIxCi1gYGAKLXdoZXJlIHRoZSBkZXNjcmlwdGlvbnMgYCJpcyBk
aXZpc2libGUgYnkgNyJgIGFuZCBgIm5vdCAoaXMgZGl2aXNpYmxlCi1ieSA3KSJgIGFyZSBhdXRv
bWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWF0Y2hlciBuYW1lCi1gSXNEaXZpc2libGVC
eTdgLgotCi1BcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwgdGhlIGF1dG8tZ2VuZXJhdGVkIGRlc2Ny
aXB0aW9ucyAoZXNwZWNpYWxseQotdGhvc2UgZm9yIHRoZSBuZWdhdGlvbikgbWF5IG5vdCBiZSBz
byBncmVhdC4gWW91IGNhbiBhbHdheXMgb3ZlcnJpZGUKLXRoZW0gd2l0aCBhIHN0cmluZyBleHBy
ZXNzaW9uIG9mIHlvdXIgb3duOgotYGBgCi1NQVRDSEVSKElzRGl2aXNpYmxlQnk3LCBzdGQ6OnN0
cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiIGRpdmlzaWJsZSBieSA3IikgewotICByZXR1cm4gKGFyZyAlIDcpID09IDA7Ci19Ci1gYGAK
LQotT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBh
IGhpZGRlbiBhcmd1bWVudAotbmFtZWQgYHJlc3VsdF9saXN0ZW5lcmAgdG8gZXhwbGFpbiB0aGUg
bWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQotYmV0dGVyIGRlZmluaXRpb24gb2YgYElzRGl2
aXNpYmxlQnk3YCBpczoKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsKLSAgaWYg
KChhcmcgJSA3KSA9PSAwKQotICAgIHJldHVybiB0cnVlOwotCi0gICpyZXN1bHRfbGlzdGVuZXIg
PDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7Ci0gIHJldHVybiBmYWxzZTsKLX0K
LWBgYAotCi1XaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFib3ZlIGFzc2VydGlvbiB3aWxsIGdp
dmUgYSBiZXR0ZXIgbWVzc2FnZToKLWBgYAotICBWYWx1ZSBvZjogc29tZV9leHByZXNzaW9uCi0g
IEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNwotICAgIEFjdHVhbDogMjcgKHRoZSByZW1haW5k
ZXIgaXMgNikKLWBgYAotCi1Zb3Ugc2hvdWxkIGxldCBgTWF0Y2hBbmRFeHBsYWluKClgIHByaW50
IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KLXRoYXQgY2FuIGhlbHAgYSB1c2VyIHVuZGVy
c3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0IHNob3VsZAotZXhwbGFpbiB3aHkg
dGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNjZXNzICh1bmxlc3MgaXQncwotb2J2
aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgaW5zaWRlCi1g
Tm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50IHRoZSBhcmd1bWVudCB2YWx1ZSBpdHNl
bGYsIGFzCi1Hb29nbGUgTW9jayBhbHJlYWR5IHByaW50cyBpdCBmb3IgeW91LgotCi0qKk5vdGVz
OioqCi0KLSAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgKGBhcmdfdHlw
ZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0aGUgbWF0
Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBjb21waWxlciwgc28geW91IGRvbid0
IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0IChub3IgY2FuIHlvdSkuICBUaGlzIGFs
bG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBgSXNEaXZp
c2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgd2hlcmUgdGhlIHZhbHVl
IG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgYGJv
b2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTcoKSlgIGV4YW1wbGUgYWJvdmUsIGlmIG1l
dGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYGludGA7IGlm
IGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFyZ190eXBlYCB3aWxsIGJlIGB1bnNpZ25l
ZCBsb25nYDsgYW5kIHNvIG9uLgotICAxLiBHb29nbGUgTW9jayBkb2Vzbid0IGd1YXJhbnRlZSB3
aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3aWxsIGJlIGludm9rZWQuIFRoZXJlZm9y
ZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGkuZS4gaXQg
Y2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5vdCBkZXBl
bmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhl
IG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWlyZW1lbnQgbXVzdCBiZSBzYXRpc2ZpZWQg
bm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVyIChlLmcuIHVzaW5nIG9uZSBvZiB0
aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyByZWNpcGVzKS4gSW4gcGFydGlj
dWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEgbW9jayBmdW5jdGlvbiwgYXMgdGhhdCB3
aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2JqZWN0IGFuZCBHb29nbGUgTW9jay4K
LQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRjaGVycyBRdWlja2x5ICMjCi0KLVNv
bWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBtYXRjaGVyIHRoYXQgaGFzIHBhcmFtZXRl
cnMuICBGb3IgdGhhdCB5b3UKLWNhbiB1c2UgdGhlIG1hY3JvOgotYGBgCi1NQVRDSEVSX1AobmFt
ZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0KLWBgYAot
d2hlcmUgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyBjYW4gYmUgZWl0aGVyIGAiImAgb3IgYSBzdHJp
bmcgZXhwcmVzc2lvbgotdGhhdCByZWZlcmVuY2VzIGBuZWdhdGlvbmAgYW5kIGBwYXJhbV9uYW1l
YC4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1
ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVlOyB9Ci1gYGAKLXdpbGwgYWxsb3cgeW91
IHRvIHdyaXRlOgotYGBgCi0gIEVYUEVDVF9USEFUKEJsYWgoImEiKSwgSGFzQWJzb2x1dGVWYWx1
ZShuKSk7Ci1gYGAKLXdoaWNoIG1heSBsZWFkIHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1pbmcgYG5g
IGlzIDEwKToKLWBgYAotICBWYWx1ZSBvZjogQmxhaCgiYSIpCi0gIEV4cGVjdGVkOiBoYXMgYWJz
b2x1dGUgdmFsdWUgMTAKLSAgICBBY3R1YWw6IC05Ci1gYGAKLQotTm90ZSB0aGF0IGJvdGggdGhl
IG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJhbWV0ZXIgYXJlCi1wcmludGVkLCBtYWtp
bmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCi0KLUluIHRoZSBtYXRjaGVyIGRlZmluaXRp
b24gYm9keSwgeW91IGNhbiB3cml0ZSBgZm9vX3R5cGVgIHRvCi1yZWZlcmVuY2UgdGhlIHR5cGUg
b2YgYSBwYXJhbWV0ZXIgbmFtZWQgYGZvb2AuICBGb3IgZXhhbXBsZSwgaW4gdGhlCi1ib2R5IG9m
IGBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUpYCBhYm92ZSwgeW91IGNhbiB3cml0
ZQotYHZhbHVlX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mIGB2YWx1ZWAuCi0KLUdvb2ds
ZSBNb2NrIGFsc28gcHJvdmlkZXMgYE1BVENIRVJfUDJgLCBgTUFUQ0hFUl9QM2AsIC4uLiwgdXAg
dG8KLWBNQVRDSEVSX1AxMGAgdG8gc3VwcG9ydCBtdWx0aS1wYXJhbWV0ZXIgbWF0Y2hlcnM6Ci1g
YGAKLU1BVENIRVJfUGsobmFtZSwgcGFyYW1fMSwgLi4uLCBwYXJhbV9rLCBkZXNjcmlwdGlvbl9z
dHJpbmcpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhlIGN1c3Rv
bSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFydGljdWxhcgotKippbnN0YW5jZSoqIG9m
IHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYm91bmQgdG8KLWFj
dHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5b3UnbGwgd2FudCB0aGUgcGFyYW1ldGVy
IHZhbHVlcyB0bwotYmUgcGFydCBvZiB0aGUgZGVzY3JpcHRpb24uICBHb29nbGUgTW9jayBsZXRz
IHlvdSBkbyB0aGF0IGJ5Ci1yZWZlcmVuY2luZyB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJzIGluIHRo
ZSBkZXNjcmlwdGlvbiBzdHJpbmcKLWV4cHJlc3Npb24uCi0KLUZvciBleGFtcGxlLAotYGBgCi0g
IHVzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKLSAgTUFUQ0hFUl9QMihJbkNsb3NlZFJh
bmdlLCBsb3csIGhpLAotICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8gImlzbid0
IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCi0gICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhs
b3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsgIl0iKSB7Ci0gICAgcmV0dXJuIGxvdyA8
PSBhcmcgJiYgYXJnIDw9IGhpOwotICB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgzLCBJbkNsb3Nl
ZFJhbmdlKDQsIDYpKTsKLWBgYAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQgY29udGFp
bnMgdGhlIG1lc3NhZ2U6Ci1gYGAKLSAgRXhwZWN0ZWQ6IGlzIGluIHJhbmdlIFs0LCA2XQotYGBg
Ci0KLUlmIHlvdSBzcGVjaWZ5IGAiImAgYXMgdGhlIGRlc2NyaXB0aW9uLCB0aGUgZmFpbHVyZSBt
ZXNzYWdlIHdpbGwKLWNvbnRhaW4gdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZSBtYXRjaGVy
IG5hbWUgZm9sbG93ZWQgYnkgdGhlCi1wYXJhbWV0ZXIgdmFsdWVzIHByaW50ZWQgYXMgYSB0dXBs
ZS4gIEZvciBleGFtcGxlLAotYGBgCi0gIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBo
aSwgIiIpIHsgLi4uIH0KLSAgLi4uCi0gIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwg
NikpOwotYGBgCi13b3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUgdGhhdCBjb250YWlucyB0aGUgdGV4
dDoKLWBgYAotICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdlICg0LCA2KQotYGBgCi0KLUZvciB0
aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldwotYGBgCi1NQVRDSEVSX1BrKEZvbywg
cDEsIC4uLiwgcGssIGRlc2NyaXB0aW9uX3N0cmluZykgeyAuLi4gfQotYGBgCi1hcyBzaG9ydGhh
bmQgZm9yCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVuYW1lIHBr
X3R5cGU+Ci1Gb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPgotRm9vKHAxX3R5cGUg
cDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotYGBgCi0KLVdoZW4geW91IHdyaXRlIGBGb28o
djEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKLXRoZSBwYXJh
bWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4gIElmIHlvdSBhcmUgbm90IGhhcHB5
IHdpdGgKLXRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5b3UgY2FuIHNwZWNpZnkg
dGhlIHR5cGVzIGJ5Ci1leHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhlIHRlbXBsYXRlLCBhcyBp
biBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCi1BcyBzYWlkIGVhcmxpZXIsIHlvdSBkb24n
dCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLWBhcmdfdHlwZWAgYXMgdGhhdCdzIGRldGVy
bWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKLWlzIHVzZWQuCi0KLVlv
dSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBgRm9vKHAxLCAuLi4sIHBrKWAg
dG8gYQotdmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtfdHlw
ZT5gLiAgVGhpcyBjYW4gYmUKLXVzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRjaGVycy4gIE1hdGNo
ZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgotb3IgaGF2ZSBvbmx5IG9uZSBwYXJhbWV0
ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2lnbiBgRm9vKClgCi10byBhIGBGb29N
YXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBgRm9vKHApYCB0byBhCi1gRm9vTWF0
Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCi0KLVdoaWxlIHlvdSBjYW4gaW5zdGFudGlh
dGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzLAotcGFzc2luZyB0aGUg
cGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMgeW91ciBjb2RlIG1vcmUKLXJlYWRh
YmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3MgYSBwYXJhbWV0ZXIgYnkK
LXJlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRl
ZCBieSB0aGUKLW1hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNl
ZCBvYmplY3QgYnV0IG5vdCBpdHMKLWFkZHJlc3MuCi0KLVlvdSBjYW4gb3ZlcmxvYWQgbWF0Y2hl
cnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgotYGBgCi1NQVRDSEVSX1Ao
QmxhaCwgYSwgZGVzY3JpcHRpb25fc3RyaW5nXzEpIHsgLi4uIH0KLU1BVENIRVJfUDIoQmxhaCwg
YSwgYiwgZGVzY3JpcHRpb25fc3RyaW5nXzIpIHsgLi4uIH0KLWBgYAotCi1XaGlsZSBpdCdzIHRl
bXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIGBNQVRDSEVSKmAgbWFjcm9zIHdoZW4gZGVmaW5pbmcK
LWEgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBpbXBsZW1lbnRpbmcKLWBN
YXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYCBpbnN0
ZWFkIChzZWUKLXRoZSByZWNpcGVzIHRoYXQgZm9sbG93KSwgZXNwZWNpYWxseSBpZiB5b3UgbmVl
ZCB0byB1c2UgdGhlIG1hdGNoZXIgYQotbG90LiAgV2hpbGUgdGhlc2UgYXBwcm9hY2hlcyByZXF1
aXJlIG1vcmUgd29yaywgdGhleSBnaXZlIHlvdSBtb3JlCi1jb250cm9sIG9uIHRoZSB0eXBlcyBv
ZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIKLXBhcmFtZXRlcnMsIHdo
aWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzCi10
aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhleSBhbHNvIGFsbG93IG92ZXJsb2FkaW5n
IG1hdGNoZXJzCi1iYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9zZWQgdG8ganVzdCBi
YXNlZCBvbiB0aGUgbnVtYmVyIG9mCi1wYXJhbWV0ZXJzKS4KLQotIyMgV3JpdGluZyBOZXcgTW9u
b21vcnBoaWMgTWF0Y2hlcnMgIyMKLQotQSBtYXRjaGVyIG9mIGFyZ3VtZW50IHR5cGUgYFRgIGlt
cGxlbWVudHMKLWA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8VD5gIGFuZCBkb2VzIHR3byB0
aGluZ3M6IGl0IHRlc3RzIHdoZXRoZXIgYQotdmFsdWUgb2YgdHlwZSBgVGAgbWF0Y2hlcyB0aGUg
bWF0Y2hlciwgYW5kIGNhbiBkZXNjcmliZSB3aGF0IGtpbmQgb2YKLXZhbHVlcyBpdCBtYXRjaGVz
LiBUaGUgbGF0dGVyIGFiaWxpdHkgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyByZWFkYWJsZQotZXJy
b3IgbWVzc2FnZXMgd2hlbiBleHBlY3RhdGlvbnMgYXJlIHZpb2xhdGVkLgotCi1UaGUgaW50ZXJm
YWNlIGxvb2tzIGxpa2UgdGhpczoKLQotYGBgCi1jbGFzcyBNYXRjaFJlc3VsdExpc3RlbmVyIHsK
LSBwdWJsaWM6Ci0gIC4uLgotICAvLyBTdHJlYW1zIHggdG8gdGhlIHVuZGVybHlpbmcgb3N0cmVh
bTsgZG9lcyBub3RoaW5nIGlmIHRoZSBvc3RyZWFtCi0gIC8vIGlzIE5VTEwuCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBNYXRjaFJlc3VsdExpc3RlbmVyJiBvcGVyYXRvcjw8KGNvbnN0IFQm
IHgpOwotCi0gIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgb3N0cmVhbS4KLSAgOjpzdGQ6Om9z
dHJlYW0qIHN0cmVhbSgpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBNYXRj
aGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk1hdGNoZXJJbnRlcmZhY2UoKTsK
LQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRjaGVyIG1hdGNoZXMgeDsgYWxzbyBleHBs
YWlucyB0aGUgbWF0Y2gKLSAgLy8gcmVzdWx0IHRvICdsaXN0ZW5lcicuCi0gIHZpcnR1YWwgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KLSAg
dmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9IDA7Ci0K
LSAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVh
bS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0OwotfTsKLWBgYAotCi1JZiB5b3UgbmVlZCBhIGN1c3RvbSBtYXRjaGVyIGJ1dCBgVHJ1
bHkoKWAgaXMgbm90IGEgZ29vZCBvcHRpb24gKGZvcgotZXhhbXBsZSwgeW91IG1heSBub3QgYmUg
aGFwcHkgd2l0aCB0aGUgd2F5IGBUcnVseShwcmVkaWNhdGUpYAotZGVzY3JpYmVzIGl0c2VsZiwg
b3IgeW91IG1heSB3YW50IHlvdXIgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYyBhcwotYEVxKHZh
bHVlKWAgaXMpLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8gd2hhdGV2ZXIgeW91IHdh
bnQgaW4KLXR3byBzdGVwczogZmlyc3QgaW1wbGVtZW50IHRoZSBtYXRjaGVyIGludGVyZmFjZSwg
YW5kIHRoZW4gZGVmaW5lIGEKLWZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbWF0Y2hlciBp
bnN0YW5jZS4gVGhlIHNlY29uZCBzdGVwIGlzIG5vdAotc3RyaWN0bHkgbmVlZGVkIGJ1dCBpdCBt
YWtlcyB0aGUgc3ludGF4IG9mIHVzaW5nIHRoZSBtYXRjaGVyIG5pY2VyLgotCi1Gb3IgZXhhbXBs
ZSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIHRlc3Qgd2hldGhlciBhbiBgaW50YCBpcwot
ZGl2aXNpYmxlIGJ5IDcgYW5kIHRoZW4gdXNlIGl0IGxpa2UgdGhpczoKLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpNYWtlTWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6
dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRM
aXN0ZW5lcjsKLQotY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50
ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihp
bnQgbiwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICByZXR1cm4g
KG4gJSA3KSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBkaXZpc2libGUgYnkgNyI7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgewotICAgICpvcyA8PCAiaXMgbm90IGRpdmlzaWJsZSBieSA3IjsKLSAgfQotfTsKLQot
aW5saW5lIE1hdGNoZXI8aW50PiBEaXZpc2libGVCeTcoKSB7Ci0gIHJldHVybiBNYWtlTWF0Y2hl
cihuZXcgRGl2aXNpYmxlQnk3TWF0Y2hlcik7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28s
IEJhcihEaXZpc2libGVCeTcoKSkpOwotYGBgCi0KLVlvdSBtYXkgaW1wcm92ZSB0aGUgbWF0Y2hl
ciBtZXNzYWdlIGJ5IHN0cmVhbWluZyBhZGRpdGlvbmFsCi1pbmZvcm1hdGlvbiB0byB0aGUgYGxp
c3RlbmVyYCBhcmd1bWVudCBpbiBgTWF0Y2hBbmRFeHBsYWluKClgOgotCi1gYGAKLWNsYXNzIERp
dmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxpbnQ+IHsKLSBwdWJs
aWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsK
LSAgICBjb25zdCBpbnQgcmVtYWluZGVyID0gbiAlIDc7Ci0gICAgaWYgKHJlbWFpbmRlciAhPSAw
KSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCByZW1haW5kZXI7
Ci0gICAgfQotICAgIHJldHVybiByZW1haW5kZXIgPT0gMDsKLSAgfQotICAuLi4KLX07Ci1gYGAK
LQotVGhlbiwgYEVYUEVDVF9USEFUKHgsIERpdmlzaWJsZUJ5NygpKTtgIG1heSBnZW5lcmFsIGEg
bWVzc2FnZSBsaWtlIHRoaXM6Ci1gYGAKLVZhbHVlIG9mOiB4Ci1FeHBlY3RlZDogaXMgZGl2aXNp
YmxlIGJ5IDcKLSAgQWN0dWFsOiAyMyAodGhlIHJlbWFpbmRlciBpcyAyKQotYGBgCi0KLSMjIFdy
aXRpbmcgTmV3IFBvbHltb3JwaGljIE1hdGNoZXJzICMjCi0KLVlvdSd2ZSBsZWFybmVkIGhvdyB0
byB3cml0ZSB5b3VyIG93biBtYXRjaGVycyBpbiB0aGUgcHJldmlvdXMKLXJlY2lwZS4gSnVzdCBv
bmUgcHJvYmxlbTogYSBtYXRjaGVyIGNyZWF0ZWQgdXNpbmcgYE1ha2VNYXRjaGVyKClgIG9ubHkK
LXdvcmtzIGZvciBvbmUgcGFydGljdWxhciB0eXBlIG9mIGFyZ3VtZW50cy4gSWYgeW91IHdhbnQg
YQotX3BvbHltb3JwaGljXyBtYXRjaGVyIHRoYXQgd29ya3Mgd2l0aCBhcmd1bWVudHMgb2Ygc2V2
ZXJhbCB0eXBlcyAoZm9yCi1pbnN0YW5jZSwgYEVxKHgpYCBjYW4gYmUgdXNlZCB0byBtYXRjaCBh
IGB2YWx1ZWAgYXMgbG9uZyBhcyBgdmFsdWVgID09Ci1geGAgY29tcGlsZXMgLS0gYHZhbHVlYCBh
bmQgYHhgIGRvbid0IGhhdmUgdG8gc2hhcmUgdGhlIHNhbWUgdHlwZSksCi15b3UgY2FuIGxlYXJu
IHRoZSB0cmljayBmcm9tIGAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCJgIGJ1dCBpdCdzIGEgYml0
Ci1pbnZvbHZlZC4KLQotRm9ydHVuYXRlbHksIG1vc3Qgb2YgdGhlIHRpbWUgeW91IGNhbiBkZWZp
bmUgYSBwb2x5bW9ycGhpYyBtYXRjaGVyCi1lYXNpbHkgd2l0aCB0aGUgaGVscCBvZiBgTWFrZVBv
bHltb3JwaGljTWF0Y2hlcigpYC4gSGVyZSdzIGhvdyB5b3UgY2FuCi1kZWZpbmUgYE5vdE51bGwo
KWAgYXMgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhp
Y01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci11c2luZyA6
OnRlc3Rpbmc6Ok5vdE51bGw7Ci11c2luZyA6OnRlc3Rpbmc6OlBvbHltb3JwaGljTWF0Y2hlcjsK
LQotY2xhc3MgTm90TnVsbE1hdGNoZXIgewotIHB1YmxpYzoKLSAgLy8gVG8gaW1wbGVtZW50IGEg
cG9seW1vcnBoaWMgbWF0Y2hlciwgZmlyc3QgZGVmaW5lIGEgQ09QWUFCTEUgY2xhc3MKLSAgLy8g
dGhhdCBoYXMgdGhyZWUgbWVtYmVycyBNYXRjaEFuZEV4cGxhaW4oKSwgRGVzY3JpYmVUbygpLCBh
bmQKLSAgLy8gRGVzY3JpYmVOZWdhdGlvblRvKCksIGxpa2UgdGhlIGZvbGxvd2luZy4KLQotICAv
LyBJbiB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gdXNlIE5vdE51bGwoKSB3aXRoIGFueSBwb2lu
dGVyLCBzbwotICAvLyBNYXRjaEFuZEV4cGxhaW4oKSBhY2NlcHRzIGEgcG9pbnRlciBvZiBhbnkg
dHlwZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuCi0gIC8vIEluIGdlbmVyYWwsIHlvdSBjYW4gZGVm
aW5lIE1hdGNoQW5kRXhwbGFpbigpIGFzIGFuIG9yZGluYXJ5IG1ldGhvZCBvcgotICAvLyBhIG1l
dGhvZCB0ZW1wbGF0ZSwgb3IgZXZlbiBvdmVybG9hZCBpdC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQqIHAsCi0gICAgICAgICAgICAgICAgICAgICAg
IE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAgcmV0dXJu
IHAgIT0gTlVMTDsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB0aGUgcHJvcGVydHkgb2YgYSB2YWx1
ZSBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBub3QgTlVMTCI7IH0KLQotICAvLyBEZXNjcmliZXMg
dGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgTk9UIG1hdGNoaW5nIHRoaXMgbWF0Y2hlci4KLSAgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAi
aXMgTlVMTCI7IH0KLX07Ci0KLS8vIFRvIGNvbnN0cnVjdCBhIHBvbHltb3JwaGljIG1hdGNoZXIs
IHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzCi0vLyB0byBNYWtlUG9seW1vcnBoaWNNYXRj
aGVyKCkuICBOb3RlIHRoZSByZXR1cm4gdHlwZS4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8
Tm90TnVsbE1hdGNoZXI+IE5vdE51bGwoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRj
aGVyKE5vdE51bGxNYXRjaGVyKCkpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIo
Tm90TnVsbCgpKSk7ICAvLyBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1OVUxMIHBvaW50ZXIu
Ci1gYGAKLQotKipOb3RlOioqIFlvdXIgcG9seW1vcnBoaWMgbWF0Y2hlciBjbGFzcyBkb2VzICoq
bm90KiogbmVlZCB0byBpbmhlcml0IGZyb20KLWBNYXRjaGVySW50ZXJmYWNlYCBvciBhbnkgb3Ro
ZXIgY2xhc3MsIGFuZCBpdHMgbWV0aG9kcyBkbyAqKm5vdCoqIG5lZWQKLXRvIGJlIHZpcnR1YWwu
Ci0KLUxpa2UgaW4gYSBtb25vbW9ycGhpYyBtYXRjaGVyLCB5b3UgbWF5IGV4cGxhaW4gdGhlIG1h
dGNoIHJlc3VsdCBieQotc3RyZWFtaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhlIGBs
aXN0ZW5lcmAgYXJndW1lbnQgaW4KLWBNYXRjaEFuZEV4cGxhaW4oKWAuCi0KLSMjIFdyaXRpbmcg
TmV3IENhcmRpbmFsaXRpZXMgIyMKLQotQSBjYXJkaW5hbGl0eSBpcyB1c2VkIGluIGBUaW1lcygp
YCB0byB0ZWxsIEdvb2dsZSBNb2NrIGhvdyBtYW55IHRpbWVzCi15b3UgZXhwZWN0IGEgY2FsbCB0
byBvY2N1ci4gSXQgZG9lc24ndCBoYXZlIHRvIGJlIGV4YWN0LiBGb3IgZXhhbXBsZSwKLXlvdSBj
YW4gc2F5IGBBdExlYXN0KDUpYCBvciBgQmV0d2VlbigyLCA0KWAuCi0KLUlmIHRoZSBidWlsdC1p
biBzZXQgb2YgY2FyZGluYWxpdGllcyBkb2Vzbid0IHN1aXQgeW91LCB5b3UgYXJlIGZyZWUgdG8K
LWRlZmluZSB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2Ug
KGluIG5hbWVzcGFjZQotYHRlc3RpbmdgKToKLQotYGBgCi1jbGFzcyBDYXJkaW5hbGl0eUludGVy
ZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5DYXJkaW5hbGl0eUludGVyZmFjZSgpOwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlzZnkgdGhpcyBj
YXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNh
bGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQg
Y2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgotICB2aXJ0dWFsIGJvb2wgSXNT
YXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOwotCi0gIC8vIERl
c2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotfTsKLWBgYAotCi1Gb3IgZXhhbXBsZSwgdG8g
c3BlY2lmeSB0aGF0IGEgY2FsbCBtdXN0IG9jY3VyIGV2ZW4gbnVtYmVyIG9mIHRpbWVzLAoteW91
IGNhbiB3cml0ZQotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6Q2FyZGluYWxpdHk7Ci11c2luZyA6
OnRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlQ2Fy
ZGluYWxpdHk7Ci0KLWNsYXNzIEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSA6IHB1YmxpYyBDYXJkaW5h
bGl0eUludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNh
bGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiAoY2FsbF9jb3VudCAl
IDIpID09IDA7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChp
bnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8
PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsKLSAgfQotfTsKLQotQ2FyZGluYWxpdHkg
RXZlbk51bWJlcigpIHsKLSAgcmV0dXJuIE1ha2VDYXJkaW5hbGl0eShuZXcgRXZlbk51bWJlckNh
cmRpbmFsaXR5KTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKDMpKQotICAgICAg
LlRpbWVzKEV2ZW5OdW1iZXIoKSk7Ci1gYGAKLQotIyMgV3JpdGluZyBOZXcgQWN0aW9ucyBRdWlj
a2x5ICMjCi0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHdvcmsgZm9yIHlvdSwgYW5k
IHlvdSBmaW5kIGl0Ci1pbmNvbnZlbmllbnQgdG8gdXNlIGBJbnZva2UoKWAsIHlvdSBjYW4gdXNl
IGEgbWFjcm8gZnJvbSB0aGUgYEFDVElPTipgCi1mYW1pbHkgdG8gcXVpY2tseSBkZWZpbmUgYSBu
ZXcgYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91ciBjb2RlIGFzCi1pZiBpdCdzIGEgYnVp
bHQtaW4gYWN0aW9uLgotCi1CeSB3cml0aW5nCi1gYGAKLUFDVElPTihuYW1lKSB7IHN0YXRlbWVu
dHM7IH0KLWBgYAotaW4gYSBuYW1lc3BhY2Ugc2NvcGUgKGkuZS4gbm90IGluc2lkZSBhIGNsYXNz
IG9yIGZ1bmN0aW9uKSwgeW91IHdpbGwKLWRlZmluZSBhbiBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4g
bmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLgotVGhlIHZhbHVlIHJldHVybmVkIGJ5
IGBzdGF0ZW1lbnRzYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZgotdGhlIGFj
dGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbiByZWZlciB0byB0aGUgSy10aAot
KDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGBhcmdLYC4gIEZvciBl
eGFtcGxlOgotYGBgCi1BQ1RJT04oSW5jcmVtZW50QXJnMSkgeyByZXR1cm4gKysoKmFyZzEpOyB9
Ci1gYGAKLWFsbG93cyB5b3UgdG8gd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKEluY3JlbWVudEFy
ZzEoKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR5
cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCi1hcmd1bWVudHMuICBSZXN0IGFzc3VyZWQgdGhhdCB5
b3VyIGNvZGUgaXMgdHlwZS1zYWZlIHRob3VnaDoKLXlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJv
ciBpZiBgKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYCsrYAotb3BlcmF0b3IsIG9yIGlmIHRo
ZSB0eXBlIG9mIGArKygqYXJnMSlgIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUgbW9jawotZnVu
Y3Rpb24ncyByZXR1cm4gdHlwZS4KLQotQW5vdGhlciBleGFtcGxlOgotYGBgCi1BQ1RJT04oRm9v
KSB7Ci0gICgqYXJnMikoNSk7Ci0gIEJsYWgoKTsKLSAgKmFyZzEgPSAwOwotICByZXR1cm4gYXJn
MDsKLX0KLWBgYAotZGVmaW5lcyBhbiBhY3Rpb24gYEZvbygpYCB0aGF0IGludm9rZXMgYXJndW1l
bnQgIzIgKGEgZnVuY3Rpb24gcG9pbnRlcikKLXdpdGggNSwgY2FsbHMgZnVuY3Rpb24gYEJsYWgo
KWAsIHNldHMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYXJndW1lbnQKLSMxIHRvIDAsIGFuZCBy
ZXR1cm5zIGFyZ3VtZW50ICMwLgotCi1Gb3IgbW9yZSBjb252ZW5pZW5jZSBhbmQgZmxleGliaWxp
dHksIHlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZwotcHJlLWRlZmluZWQgc3ltYm9scyBp
biB0aGUgYm9keSBvZiBgQUNUSU9OYDoKLQotfCBgYXJnS190eXBlYCB8IFRoZSB0eXBlIG9mIHRo
ZSBLLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB8Ci18Oi0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLXwgYGFyZ3NgICAgICAgfCBBbGwgYXJndW1lbnRzIG9mIHRoZSBtb2Nr
IGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgICAgICAgICAgICAgfAotfCBgYXJnc190eXBlYCB8IFRo
ZSB0eXBlIG9mIGFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYSB0dXBsZSAg
ICB8Ci18IGByZXR1cm5fdHlwZWAgfCBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rp
b24gICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgZnVuY3Rpb25fdHlwZWAgfCBUaGUgdHlw
ZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
Ci1Gb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBhbiBgQUNUSU9OYCBhcyBhIHN0dWIgYWN0aW9uIGZv
ciBtb2NrIGZ1bmN0aW9uOgotYGBgCi1pbnQgRG9Tb21ldGhpbmcoYm9vbCBmbGFnLCBpbnQqIHB0
cik7Ci1gYGAKLXdlIGhhdmU6Ci18ICoqUHJlLWRlZmluZWQgU3ltYm9sKiogfCAqKklzIEJvdW5k
IFRvKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLXwKLXwg
YGFyZzBgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgZmxhZ2AgfAotfCBgYXJnMF90
eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGJvb2xgIHwKLXwgYGFyZzFgICAgICAgICAgICAg
ICAgICB8IHRoZSB2YWx1ZSBvZiBgcHRyYCB8Ci18IGBhcmcxX3R5cGVgICAgICAgICAgICAgfCB0
aGUgdHlwZSBgaW50KmAgfAotfCBgYXJnc2AgICAgICAgICAgICAgICAgIHwgdGhlIHR1cGxlIGAo
ZmxhZywgcHRyKWAgfAotfCBgYXJnc190eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYHN0ZDo6
dHIxOjp0dXBsZTxib29sLCBpbnQqPmAgfAotfCBgcmV0dXJuX3R5cGVgICAgICAgICAgIHwgdGhl
IHR5cGUgYGludGAgIHwKLXwgYGZ1bmN0aW9uX3R5cGVgICAgICAgICB8IHRoZSB0eXBlIGBpbnQo
Ym9vbCwgaW50KilgIHwKLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBBY3Rpb25zIFF1
aWNrbHkgIyMKLQotU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSBhbiBhY3Rp
b24geW91IGRlZmluZS4gIEZvciB0aGF0Ci13ZSBoYXZlIGFub3RoZXIgbWFjcm8KLWBgYAotQUNU
SU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLUZvciBleGFtcGxlLAot
YGBgCi1BQ1RJT05fUChBZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci1gYGAKLXdpbGwgYWxs
b3cgeW91IHRvIHdyaXRlCi1gYGAKLS8vIFJldHVybnMgYXJndW1lbnQgIzAgKyA1LgotLi4uIFdp
bGxPbmNlKEFkZCg1KSk7Ci1gYGAKLQotRm9yIGNvbnZlbmllbmNlLCB3ZSB1c2UgdGhlIHRlcm0g
X2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNlZCB0bwotaW52b2tlIHRoZSBtb2NrIGZ1bmN0
aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNfIGZvciB0aGUgdmFsdWVzCi11c2VkIHRvIGlu
c3RhbnRpYXRlIGFuIGFjdGlvbi4KLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHByb3Zp
ZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBlaXRoZXIuCi1TdXBwb3NlIHRoZSBwYXJhbWV0
ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNhbiBhbHNvIHVzZSB0aGUKLUdvb2dsZS1Nb2NrLWRl
ZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiB0aGUKLXBh
cmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZSwgaW4gdGhl
IGJvZHkgb2YKLWBBQ1RJT05fUChBZGQsIG4pYCBhYm92ZSwgeW91IGNhbiB3cml0ZSBgbl90eXBl
YCBmb3IgdGhlIHR5cGUgb2YgYG5gLgotCi1Hb29nbGUgTW9jayBhbHNvIHByb3ZpZGVzIGBBQ1RJ
T05fUDJgLCBgQUNUSU9OX1AzYCwgYW5kIGV0YyB0byBzdXBwb3J0Ci1tdWx0aS1wYXJhbWV0ZXIg
YWN0aW9ucy4gIEZvciBleGFtcGxlLAotYGBgCi1BQ1RJT05fUDIoUmV0dXJuRGlzdGFuY2VUbywg
eCwgeSkgewotICBkb3VibGUgZHggPSBhcmcwIC0geDsKLSAgZG91YmxlIGR5ID0gYXJnMSAtIHk7
Ci0gIHJldHVybiBzcXJ0KGR4KmR4ICsgZHkqZHkpOwotfQotYGBgCi1sZXRzIHlvdSB3cml0ZQot
YGBgCi0uLi4gV2lsbE9uY2UoUmV0dXJuRGlzdGFuY2VUbyg1LjAsIDI2LjUpKTsKLWBgYAotCi1Z
b3UgY2FuIHZpZXcgYEFDVElPTmAgYXMgYSBkZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVkIGFjdGlv
biB3aGVyZSB0aGUKLW51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIDAuCi0KLVlvdSBjYW4gYWxzbyBl
YXNpbHkgZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRl
cnM6Ci1gYGAKLUFDVElPTl9QKFBsdXMsIGEpIHsgLi4uIH0KLUFDVElPTl9QMihQbHVzLCBhLCBi
KSB7IC4uLiB9Ci1gYGAKLQotIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJndW1lbnQg
b3IgUGFyYW1ldGVyIGluIGFuIEFDVElPTiAjIwotCi1Gb3IgbWF4aW11bSBicmV2aXR5IGFuZCBy
ZXVzYWJpbGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgYXNrCi15b3UgdG8gcHJvdmlk
ZSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9u
Ci1wYXJhbWV0ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUgdHlw
ZXMgZm9yIHVzLgotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1vcmUg
ZXhwbGljaXQgYWJvdXQgdGhlIHR5cGVzLgotVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRvIGRv
IHRoYXQuICBGb3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAvLyBNYWtlcyBzdXJl
IGFyZzAgY2FuIGJlIGNvbnZlcnRlZCB0byBpbnQuCi0gIGludCBuID0gYXJnMDsKLSAgLi4uIHVz
ZSBuIGluc3RlYWQgb2YgYXJnMCBoZXJlIC4uLgotfQotCi1BQ1RJT05fUChCYXIsIHBhcmFtKSB7
Ci0gIC8vIE1ha2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KLSAgOjp0
ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsKLQot
ICAvLyBNYWtlcyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KLSAgYm9vbCBm
bGFnID0gcGFyYW07Ci19Ci1gYGAKLXdoZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEgY29t
cGlsZS10aW1lIGFzc2VydGlvbiBpbiBHb29nbGUgVGVzdAotdGhhdCB2ZXJpZmllcyB0d28gdHlw
ZXMgYXJlIHRoZSBzYW1lLgotCi0jIyBXcml0aW5nIE5ldyBBY3Rpb24gVGVtcGxhdGVzIFF1aWNr
bHkgIyMKLQotU29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0IHRl
bXBsYXRlIHBhcmFtZXRlcnMgdGhhdAotY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZhbHVl
IHBhcmFtZXRlcnMuICBgQUNUSU9OX1RFTVBMQVRFKClgCi1zdXBwb3J0cyB0aGF0IGFuZCBjYW4g
YmUgdmlld2VkIGFzIGFuIGV4dGVuc2lvbiB0byBgQUNUSU9OKClgIGFuZAotYEFDVElPTl9QKigp
YC4KLQotVGhlIHN5bnRheDoKLWBgYAotQUNUSU9OX1RFTVBMQVRFKEFjdGlvbk5hbWUsCi0gICAg
ICAgICAgICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBraW5k
X20sIG5hbWVfbSksCi0gICAgICAgICAgICAgICAgQU5EX25fVkFMVUVfUEFSQU1TKHAxLCAuLi4s
IHBfbikpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLWRlZmluZXMgYW4gYWN0aW9uIHRlbXBsYXRl
IHRoYXQgdGFrZXMgX21fIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMKLWFuZCBfbl8gdmFs
dWUgcGFyYW1ldGVycywgd2hlcmUgX21fIGlzIGJldHdlZW4gMSBhbmQgMTAsIGFuZCBfbl8gaXMK
LWJldHdlZW4gMCBhbmQgMTAuICBgbmFtZV9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB0ZW1w
bGF0ZQotcGFyYW1ldGVyLCBhbmQgYGtpbmRfaWAgc3BlY2lmaWVzIHdoZXRoZXIgaXQncyBhIGB0
eXBlbmFtZWAsIGFuCi1pbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIGBwX2lgIGlz
IHRoZSBuYW1lIG9mIHRoZSBpLXRoIHZhbHVlCi1wYXJhbWV0ZXIuCi0KLUV4YW1wbGU6Ci1gYGAK
LS8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRwdXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFyZ3VtZW50
IG9mIHRoZSBtb2NrCi0vLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGllcyBpdCB0byAqb3V0
cHV0LgotQUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywKLSAgICAgICAgICAgICAgICAvLyBO
b3RlIHRoZSBjb21tYSBiZXR3ZWVuIGludCBhbmQgazoKLSAgICAgICAgICAgICAgICBIQVNfMl9U
RU1QTEFURV9QQVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5E
XzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsKLSAgKm91dHB1dCA9IFQoc3RkOjp0cjE6OmdldDxr
PihhcmdzKSk7Ci19Ci1gYGAKLQotVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFjdGlvbiB0
ZW1wbGF0ZSwgd3JpdGU6Ci1gYGAKLSAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20+KHYxLCAuLi4s
IHZfbikKLWBgYAotd2hlcmUgdGhlIGB0YHMgYXJlIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgYW5k
IHRoZQotYHZgcyBhcmUgdGhlIHZhbHVlIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBhcmd1bWVudAot
dHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIEZvciBleGFtcGxlOgotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgaW50IG47Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZv
byhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShEdXBsaWNhdGVBcmc8MSwgdW5zaWduZWQgY2hhcj4o
Jm4pKTsKLWBgYAotCi1JZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHZhbHVl
IGFyZ3VtZW50IHR5cGVzLCB5b3UgY2FuCi1wcm92aWRlIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJn
dW1lbnRzOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tLCB1MSwgLi4uLCB1X2s+KHYx
LCAuLi4sIHZfbikKLWBgYAotd2hlcmUgYHVfaWAgaXMgdGhlIGRlc2lyZWQgdHlwZSBvZiBgdl9p
YC4KLQotYEFDVElPTl9URU1QTEFURWAgYW5kIGBBQ1RJT05gL2BBQ1RJT05fUCpgIGNhbiBiZSBv
dmVybG9hZGVkIG9uIHRoZQotbnVtYmVyIG9mIHZhbHVlIHBhcmFtZXRlcnMsIGJ1dCBub3Qgb24g
dGhlIG51bWJlciBvZiB0ZW1wbGF0ZQotcGFyYW1ldGVycy4gIFdpdGhvdXQgdGhlIHJlc3RyaWN0
aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93aW5nIGlzCi11bmNsZWFyOgotCi1gYGAKLSAg
T3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+KHgpOwotYGBgCi0KLUFyZSB3ZSB1c2luZyBhIHNp
bmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uIHdoZXJlIGBib29sYCByZWZlcnMgdG8KLXRo
ZSB0eXBlIG9mIGB4YCwgb3IgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSB0
aGUgY29tcGlsZXIKLWlzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGB4YD8KLQotIyMgVXNp
bmcgdGhlIEFDVElPTiBPYmplY3QncyBUeXBlICMjCi0KLUlmIHlvdSBhcmUgd3JpdGluZyBhIGZ1
bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBgQUNUSU9OYCBvYmplY3QsIHlvdSdsbAotbmVlZCB0byBr
bm93IGl0cyB0eXBlLiAgVGhlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbWFjcm8gdXNlZCB0byBkZWZp
bmUKLXRoZSBhY3Rpb24gYW5kIHRoZSBwYXJhbWV0ZXIgdHlwZXMuICBUaGUgcnVsZSBpcyByZWxh
dGl2ZWx5IHNpbXBsZToKLXwgKipHaXZlbiBEZWZpbml0aW9uKiogfCAqKkV4cHJlc3Npb24qKiB8
ICoqSGFzIFR5cGUqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tfAotfCBgQUNUSU9OKEZvbylgICAgICAgICB8IGBGb28oKWAgICAgICAg
IHwgYEZvb0FjdGlvbmAgIHwKLXwgYEFDVElPTl9URU1QTEFURShGb28sIEhBU19tX1RFTVBMQVRF
X1BBUkFNUyguLi4pLCBBTkRfMF9WQUxVRV9QQVJBTVMoKSlgIHwJYEZvbzx0MSwgLi4uLCB0X20+
KClgIHwgYEZvb0FjdGlvbjx0MSwgLi4uLCB0X20+YCB8Ci18IGBBQ1RJT05fUChCYXIsIHBhcmFt
KWAgfCBgQmFyKGludF92YWx1ZSlgIHwgYEJhckFjdGlvblA8aW50PmAgfAotfCBgQUNUSU9OX1RF
TVBMQVRFKEJhciwgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4uLiksIEFORF8xX1ZBTFVFX1BBUkFN
UyhwMSkpYCB8IGBCYXI8dDEsIC4uLiwgdF9tPihpbnRfdmFsdWUpYCB8IGBGb29BY3Rpb25QPHQx
LCAuLi4sIHRfbSwgaW50PmAgfAotfCBgQUNUSU9OX1AyKEJheiwgcDEsIHAyKWAgfCBgQmF6KGJv
b2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAyPGJvb2wsIGludD5gIHwKLXwgYEFD
VElPTl9URU1QTEFURShCYXosIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMl9WQUxV
RV9QQVJBTVMocDEsIHAyKSlgIHwgYEJhejx0MSwgLi4uLCB0X20+KGJvb2xfdmFsdWUsIGludF92
YWx1ZSlgIHwgYEZvb0FjdGlvblAyPHQxLCAuLi4sIHRfbSwgYm9vbCwgaW50PmAgfAotfCAuLi4g
ICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwKLQotTm90
ZSB0aGF0IHdlIGhhdmUgdG8gcGljayBkaWZmZXJlbnQgc3VmZml4ZXMgKGBBY3Rpb25gLCBgQWN0
aW9uUGAsCi1gQWN0aW9uUDJgLCBhbmQgZXRjKSBmb3IgYWN0aW9ucyB3aXRoIGRpZmZlcmVudCBu
dW1iZXJzIG9mIHZhbHVlCi1wYXJhbWV0ZXJzLCBvciB0aGUgYWN0aW9uIGRlZmluaXRpb25zIGNh
bm5vdCBiZSBvdmVybG9hZGVkIG9uIHRoZQotbnVtYmVyIG9mIHRoZW0uCi0KLSMjIFdyaXRpbmcg
TmV3IE1vbm9tb3JwaGljIEFjdGlvbnMgIyMKLQotV2hpbGUgdGhlIGBBQ1RJT04qYCBtYWNyb3Mg
YXJlIHZlcnkgY29udmVuaWVudCwgc29tZXRpbWVzIHRoZXkgYXJlCi1pbmFwcHJvcHJpYXRlLiAg
Rm9yIGV4YW1wbGUsIGRlc3BpdGUgdGhlIHRyaWNrcyBzaG93biBpbiB0aGUgcHJldmlvdXMKLXJl
Y2lwZXMsIHRoZXkgZG9uJ3QgbGV0IHlvdSBkaXJlY3RseSBzcGVjaWZ5IHRoZSB0eXBlcyBvZiB0
aGUgbW9jawotZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uIHBhcmFtZXRlcnMsIHdo
aWNoIGluIGdlbmVyYWwgbGVhZHMKLXRvIHVub3B0aW1pemVkIGNvbXBpbGVyIGVycm9yIG1lc3Nh
Z2VzIHRoYXQgY2FuIGJhZmZsZSB1bmZhbWlsaWFyCi11c2Vycy4gIFRoZXkgYWxzbyBkb24ndCBh
bGxvdyBvdmVybG9hZGluZyBhY3Rpb25zIGJhc2VkIG9uIHBhcmFtZXRlcgotdHlwZXMgd2l0aG91
dCBqdW1waW5nIHRocm91Z2ggc29tZSBob29wcy4KLQotQW4gYWx0ZXJuYXRpdmUgdG8gdGhlIGBB
Q1RJT04qYCBtYWNyb3MgaXMgdG8gaW1wbGVtZW50Ci1gOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZh
Y2U8Rj5gLCB3aGVyZSBgRmAgaXMgdGhlIHR5cGUgb2YgdGhlIG1vY2sKLWZ1bmN0aW9uIGluIHdo
aWNoIHRoZSBhY3Rpb24gd2lsbCBiZSB1c2VkLiBGb3IgZXhhbXBsZToKLQotYGBgCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRj5jbGFzcyBBY3Rpb25JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVh
bCB+QWN0aW9uSW50ZXJmYWNlKCk7Ci0KLSAgLy8gUGVyZm9ybXMgdGhlIGFjdGlvbi4gIFJlc3Vs
dCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb24gdHlwZQotICAvLyBGLCBhbmQgQXJndW1l
bnRUdXBsZSBpcyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIG9mIEYuCi0gIC8vCi0gIC8vIEZvciBl
eGFtcGxlLCBpZiBGIGlzIGludChib29sLCBjb25zdCBzdHJpbmcmKSwgdGhlbiBSZXN1bHQgd291
bGQKLSAgLy8gYmUgaW50LCBhbmQgQXJndW1lbnRUdXBsZSB3b3VsZCBiZSB0cjE6OnR1cGxlPGJv
b2wsIGNvbnN0IHN0cmluZyY+LgotICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3Vt
ZW50VHVwbGUmIGFyZ3MpID0gMDsKLX07Ci0KLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6
dGVzdGluZzo6QWN0aW9uOwotdXNpbmcgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7Ci11c2lu
ZyA6OnRlc3Rpbmc6Ok1ha2VBY3Rpb247Ci0KLXR5cGVkZWYgaW50IEluY3JlbWVudE1ldGhvZChp
bnQqKTsKLQotY2xhc3MgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24gOiBwdWJsaWMgQWN0aW9uSW50
ZXJmYWNlPEluY3JlbWVudE1ldGhvZD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBpbnQgUGVyZm9y
bShjb25zdCB0cjE6OnR1cGxlPGludCo+JiBhcmdzKSB7Ci0gICAgaW50KiBwID0gdHIxOjpnZXQ8
MD4oYXJncyk7ICAvLyBHcmFicyB0aGUgZmlyc3QgYXJndW1lbnQuCi0gICAgcmV0dXJuICpwKys7
Ci0gIH0KLX07Ci0KLUFjdGlvbjxJbmNyZW1lbnRNZXRob2Q+IEluY3JlbWVudEFyZ3VtZW50KCkg
ewotICByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24pOwotfQot
Li4uCi0KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXooXykpCi0gICAgICAuV2lsbE9uY2UoSW5jcmVt
ZW50QXJndW1lbnQoKSk7Ci0KLSAgaW50IG4gPSA1OwotICBmb28uQmF6KCZuKTsgIC8vIFNob3Vs
ZCByZXR1cm4gNSBhbmQgY2hhbmdlIG4gdG8gNi4KLWBgYAotCi0jIyBXcml0aW5nIE5ldyBQb2x5
bW9ycGhpYyBBY3Rpb25zICMjCi0KLVRoZSBwcmV2aW91cyByZWNpcGUgc2hvd2VkIHlvdSBob3cg
dG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gVGhpcyBpcwotYWxsIGdvb2QsIGV4Y2VwdCB0aGF0
IHlvdSBuZWVkIHRvIGtub3cgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGluCi13aGljaCB0aGUg
YWN0aW9uIHdpbGwgYmUgdXNlZC4gU29tZXRpbWVzIHRoYXQgY2FuIGJlIGEgcHJvYmxlbS4gRm9y
Ci1leGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGFjdGlvbiBpbiBmdW5jdGlvbnMgd2l0
aCBfZGlmZmVyZW50XwotdHlwZXMgKGUuZy4gbGlrZSBgUmV0dXJuKClgIGFuZCBgU2V0QXJnUG9p
bnRlZSgpYCkuCi0KLUlmIGFuIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIHR5cGVzIG9m
IG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKLWl0J3MgX3BvbHltb3JwaGljXy4gVGhlIGBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxhdGUKLW1ha2VzIGl0IGVhc3kgdG8gZGVm
aW5lIHN1Y2ggYW4gYWN0aW9uOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEltcGw+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxJbXBsPiBNYWtlUG9seW1vcnBo
aWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi1g
YGAKLQotQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5lIGFuIGFjdGlvbiB0aGF0IHJldHVybnMg
dGhlIHNlY29uZCBhcmd1bWVudAotaW4gdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCBsaXN0
LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4KLWltcGxlbWVudGF0aW9uIGNsYXNzOgot
Ci1gYGAKLWNsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uIHsKLSBwdWJsaWM6Ci0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3Vs
dCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLSAgICAvLyBUbyBn
ZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1c2UgdHIxOjpnZXQ8aT4oYXJncykuCi0g
ICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOwotICB9Ci19OwotYGBgCi0KLVRoaXMgaW1wbGVt
ZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRvIGluaGVyaXQgZnJvbSBhbnkKLXBhcnRp
Y3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0IGl0IG11c3QgaGF2ZSBhIGBQZXJmb3Jt
KClgCi1tZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9kIHRlbXBsYXRlIHRha2VzIHRoZSBtb2Nr
IGZ1bmN0aW9uJ3MKLWFyZ3VtZW50cyBhcyBhIHR1cGxlIGluIGEgKipzaW5nbGUqKiBhcmd1bWVu
dCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgotdGhlIGFjdGlvbi4gSXQgY2FuIGJlIGVpdGhl
ciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52b2thYmxlCi13aXRoIGV4YWN0bHkgb25l
IHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgcmVzdWx0IHR5cGUuIEluIG90aGVyCi13
b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQZXJmb3JtPFI+KGFyZ3MpYCB3aGVyZSBg
UmAgaXMgdGhlCi1tb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgYW5kIGBhcmdzYCBpcyBpdHMg
YXJndW1lbnRzIGluIGEgdHVwbGUuCi0KLU5leHQsIHdlIHVzZSBgTWFrZVBvbHltb3JwaGljQWN0
aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlCi1pbXBsZW1lbnRhdGlvbiBjbGFzcyBp
bnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVlZC4gSXQgd2lsbCBiZQotY29udmVuaWVu
dCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1h
a2VQb2x5bW9ycGhpY0FjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6UG9seW1vcnBoaWNBY3Rpb247
Ci0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uPiBSZXR1cm5T
ZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihSZXR1cm5T
ZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLWBgYAotCi1Ob3csIHlvdSBjYW4gdXNlIHRoaXMg
cG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5b3UgdXNlIHRoZQotYnVpbHQtaW4gb25l
czoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMg
Rm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGludChib29sIGZsYWcsIGlu
dCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0cmluZyhpbnQgeCwgY29uc3QgY2hhciog
c3RyMSwgY29uc3QgY2hhciogc3RyMikpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBF
WFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm5TZWNv
bmRBcmd1bWVudCgpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXywgXykpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7Ci0gIC4uLgotICBmb28uRG9UaGlz
KHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJuIDUuCi0gIGZvby5Eb1RoYXQoMSwgIkhp
IiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4KLWBgYAotCi0jIyBUZWFjaGluZyBHb29n
bGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIyMKLQotV2hlbiBhbiB1bmludGVyZXN0
aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUKLWFy
Z3VtZW50IHZhbHVlcyBhbmQgdGhlIHN0YWNrIHRyYWNlIHRvIGhlbHAgeW91IGRlYnVnLiAgQXNz
ZXJ0aW9uCi1tYWNyb3MgbGlrZSBgRVhQRUNUX1RIQVRgIGFuZCBgRVhQRUNUX0VRYCBhbHNvIHBy
aW50IHRoZSB2YWx1ZXMgaW4KLXF1ZXN0aW9uIHdoZW4gdGhlIGFzc2VydGlvbiBmYWlscy4gIEdv
b2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBkbyB0aGlzIHVzaW5nCi1Hb29nbGUgVGVzdCdzIHVz
ZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgotCi1UaGlzIHByaW50ZXIga25vd3MgaG93IHRv
IHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCi1jb250YWluZXJz
LCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZvciBvdGhl
cgotdHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9wZXMg
dGhhdCB5b3UgdGhlCi11c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgotW0dvb2dsZSBUZXN0J3MgYWR2
YW5jZWQgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvQWR2
YW5jZWRHdWlkZSNUZWFjaGluZ19Hb29nbGVfVGVzdF9Ib3dfdG9fUHJpbnRfWW91cl9WYWx1ZXMp
Ci1leHBsYWlucyBob3cgdG8gZXh0ZW5kIHRoZSBwcmludGVyIHRvIGRvIGEgYmV0dGVyIGpvYiBh
dAotcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wIHRoZSBieXRlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2Nz
L3YxXzcvRG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Eb2N1bWVudGF0
aW9uLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTE4MWYyOGUxMGM5YWEyMWVm
NzE0MDg2MzM2YWM1MzI4NTRiZWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Eb2N1bWVudGF0aW9uLm1kCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyBwYWdlIGxpc3RzIGFsbCBkb2N1bWVudGF0
aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBNb2NrICoqKHRoZSBTVk4gdHJ1bmsgdmVyc2lvbikq
KgotLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEdvb2dsZSBNb2NrLCBwbGVh
c2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3Rl
YWQuKioKLQotICAqIFtGb3JEdW1taWVzXShWMV83X0ZvckR1bW1pZXMubWQpIC0tIHN0YXJ0IGhl
cmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIE1vY2suCi0gICogW0NoZWF0U2hlZXRdKFYxXzdf
Q2hlYXRTaGVldC5tZCkgLS0gYSBxdWljayByZWZlcmVuY2UuCi0gICogW0Nvb2tCb29rXShWMV83
X0Nvb2tCb29rLm1kKSAtLSByZWNpcGVzIGZvciBkb2luZyB2YXJpb3VzIHRhc2tzIHVzaW5nIEdv
b2dsZSBNb2NrLgotICAqIFtGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnNdKFYxXzdfRnJlcXVlbnRs
eUFza2VkUXVlc3Rpb25zLm1kKSAtLSBjaGVjayBoZXJlIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlv
biBvbiB0aGUgbWFpbGluZyBsaXN0LgotCi1UbyBjb250cmlidXRlIGNvZGUgdG8gR29vZ2xlIE1v
Y2ssIHJlYWQ6Ci0KLSAgKiBbRGV2R3VpZGVdKERldkd1aWRlLm1kKSAtLSByZWFkIHRoaXMgX2Jl
Zm9yZV8gd3JpdGluZyB5b3VyIGZpcnN0IHBhdGNoLgotICAqIFtQdW1wIE1hbnVhbF0oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9QdW1wTWFudWFsKSAtLSBob3cgd2Ug
Z2VuZXJhdGUgc29tZSBvZiBHb29nbGUgTW9jaydzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRm9yRHVt
bWllcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1kCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlZTAzYzViOTg5MDhmMGFhYjA5M2Y1M2Y2ZmJlMDlhYzRiNjc0
YzhkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNDM5ICsw
LDAgQEAKLQotCi0oKipOb3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIgZXJyb3JzIHRoYXQgeW91
IGRvbid0IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29vZ2xlIE1vY2sgRG9jdG9y
XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfRnJlcXVlbnRs
eUFza2VkUXVlc3Rpb25zI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vfb2ZfdGhlc2Vf
aG9ycmlibGVfdGVtcGxhdGVfZXJyb3IpLikKLQotIyBXaGF0IElzIEdvb2dsZSBDKysgTW9ja2lu
ZyBGcmFtZXdvcms/ICMKLVdoZW4geW91IHdyaXRlIGEgcHJvdG90eXBlIG9yIHRlc3QsIG9mdGVu
IGl0J3Mgbm90IGZlYXNpYmxlIG9yIHdpc2UgdG8gcmVseSBvbiByZWFsIG9iamVjdHMgZW50aXJl
bHkuIEEgKiptb2NrIG9iamVjdCoqIGltcGxlbWVudHMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGEg
cmVhbCBvYmplY3QgKHNvIGl0IGNhbiBiZSB1c2VkIGFzIG9uZSksIGJ1dCBsZXRzIHlvdSBzcGVj
aWZ5IGF0IHJ1biB0aW1lIGhvdyBpdCB3aWxsIGJlIHVzZWQgYW5kIHdoYXQgaXQgc2hvdWxkIGRv
ICh3aGljaCBtZXRob2RzIHdpbGwgYmUgY2FsbGVkPyBpbiB3aGljaCBvcmRlcj8gaG93IG1hbnkg
dGltZXM/IHdpdGggd2hhdCBhcmd1bWVudHM/IHdoYXQgd2lsbCB0aGV5IHJldHVybj8gZXRjKS4K
LQotKipOb3RlOioqIEl0IGlzIGVhc3kgdG8gY29uZnVzZSB0aGUgdGVybSBfZmFrZSBvYmplY3Rz
XyB3aXRoIG1vY2sgb2JqZWN0cy4gRmFrZXMgYW5kIG1vY2tzIGFjdHVhbGx5IG1lYW4gdmVyeSBk
aWZmZXJlbnQgdGhpbmdzIGluIHRoZSBUZXN0LURyaXZlbiBEZXZlbG9wbWVudCAoVEREKSBjb21t
dW5pdHk6Ci0KLSAgKiAqKkZha2UqKiBvYmplY3RzIGhhdmUgd29ya2luZyBpbXBsZW1lbnRhdGlv
bnMsIGJ1dCB1c3VhbGx5IHRha2Ugc29tZSBzaG9ydGN1dCAocGVyaGFwcyB0byBtYWtlIHRoZSBv
cGVyYXRpb25zIGxlc3MgZXhwZW5zaXZlKSwgd2hpY2ggbWFrZXMgdGhlbSBub3Qgc3VpdGFibGUg
Zm9yIHByb2R1Y3Rpb24uIEFuIGluLW1lbW9yeSBmaWxlIHN5c3RlbSB3b3VsZCBiZSBhbiBleGFt
cGxlIG9mIGEgZmFrZS4KLSAgKiAqKk1vY2tzKiogYXJlIG9iamVjdHMgcHJlLXByb2dyYW1tZWQg
d2l0aCBfZXhwZWN0YXRpb25zXywgd2hpY2ggZm9ybSBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGNh
bGxzIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHJlY2VpdmUuCi0KLUlmIGFsbCB0aGlzIHNlZW1zIHRv
byBhYnN0cmFjdCBmb3IgeW91LCBkb24ndCB3b3JyeSAtIHRoZSBtb3N0IGltcG9ydGFudCB0aGlu
ZyB0byByZW1lbWJlciBpcyB0aGF0IGEgbW9jayBhbGxvd3MgeW91IHRvIGNoZWNrIHRoZSBfaW50
ZXJhY3Rpb25fIGJldHdlZW4gaXRzZWxmIGFuZCBjb2RlIHRoYXQgdXNlcyBpdC4gVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiBmYWtlcyBhbmQgbW9ja3Mgd2lsbCBiZWNvbWUgbXVjaCBjbGVhcmVyIG9u
Y2UgeW91IHN0YXJ0IHRvIHVzZSBtb2Nrcy4KLQotKipHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3
b3JrKiogKG9yICoqR29vZ2xlIE1vY2sqKiBmb3Igc2hvcnQpIGlzIGEgbGlicmFyeSAoc29tZXRp
bWVzIHdlIGFsc28gY2FsbCBpdCBhICJmcmFtZXdvcmsiIHRvIG1ha2UgaXQgc291bmQgY29vbCkg
Zm9yIGNyZWF0aW5nIG1vY2sgY2xhc3NlcyBhbmQgdXNpbmcgdGhlbS4gSXQgZG9lcyB0byBDKysg
d2hhdCBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDov
L3d3dy5lYXN5bW9jay5vcmcvKSBkbyB0byBKYXZhLgotCi1Vc2luZyBHb29nbGUgTW9jayBpbnZv
bHZlcyB0aHJlZSBiYXNpYyBzdGVwczoKLQotICAxLiBVc2Ugc29tZSBzaW1wbGUgbWFjcm9zIHRv
IGRlc2NyaWJlIHRoZSBpbnRlcmZhY2UgeW91IHdhbnQgdG8gbW9jaywgYW5kIHRoZXkgd2lsbCBl
eHBhbmQgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9jayBjbGFzczsKLSAgMS4gQ3Jl
YXRlIHNvbWUgbW9jayBvYmplY3RzIGFuZCBzcGVjaWZ5IGl0cyBleHBlY3RhdGlvbnMgYW5kIGJl
aGF2aW9yIHVzaW5nIGFuIGludHVpdGl2ZSBzeW50YXg7Ci0gIDEuIEV4ZXJjaXNlIGNvZGUgdGhh
dCB1c2VzIHRoZSBtb2NrIG9iamVjdHMuIEdvb2dsZSBNb2NrIHdpbGwgY2F0Y2ggYW55IHZpb2xh
dGlvbiBvZiB0aGUgZXhwZWN0YXRpb25zIGFzIHNvb24gYXMgaXQgYXJpc2VzLgotCi0jIFdoeSBH
b29nbGUgTW9jaz8gIwotV2hpbGUgbW9jayBvYmplY3RzIGhlbHAgeW91IHJlbW92ZSB1bm5lY2Vz
c2FyeSBkZXBlbmRlbmNpZXMgaW4gdGVzdHMgYW5kIG1ha2UgdGhlbSBmYXN0IGFuZCByZWxpYWJs
ZSwgdXNpbmcgbW9ja3MgbWFudWFsbHkgaW4gQysrIGlzIF9oYXJkXzoKLQotICAqIFNvbWVvbmUg
aGFzIHRvIGltcGxlbWVudCB0aGUgbW9ja3MuIFRoZSBqb2IgaXMgdXN1YWxseSB0ZWRpb3VzIGFu
ZCBlcnJvci1wcm9uZS4gTm8gd29uZGVyIHBlb3BsZSBnbyBncmVhdCBkaXN0YW5jZSB0byBhdm9p
ZCBpdC4KLSAgKiBUaGUgcXVhbGl0eSBvZiB0aG9zZSBtYW51YWxseSB3cml0dGVuIG1vY2tzIGlz
IGEgYml0LCB1aCwgdW5wcmVkaWN0YWJsZS4gWW91IG1heSBzZWUgc29tZSByZWFsbHkgcG9saXNo
ZWQgb25lcywgYnV0IHlvdSBtYXkgYWxzbyBzZWUgc29tZSB0aGF0IHdlcmUgaGFja2VkIHVwIGlu
IGEgaHVycnkgYW5kIGhhdmUgYWxsIHNvcnRzIG9mIGFkIGhvYyByZXN0cmljdGlvbnMuCi0gICog
VGhlIGtub3dsZWRnZSB5b3UgZ2FpbmVkIGZyb20gdXNpbmcgb25lIG1vY2sgZG9lc24ndCB0cmFu
c2ZlciB0byB0aGUgbmV4dC4KLQotSW4gY29udHJhc3QsIEphdmEgYW5kIFB5dGhvbiBwcm9ncmFt
bWVycyBoYXZlIHNvbWUgZmluZSBtb2NrIGZyYW1ld29ya3MsIHdoaWNoIGF1dG9tYXRlIHRoZSBj
cmVhdGlvbiBvZiBtb2Nrcy4gQXMgYSByZXN1bHQsIG1vY2tpbmcgaXMgYSBwcm92ZW4gZWZmZWN0
aXZlIHRlY2huaXF1ZSBhbmQgd2lkZWx5IGFkb3B0ZWQgcHJhY3RpY2UgaW4gdGhvc2UgY29tbXVu
aXRpZXMuIEhhdmluZyB0aGUgcmlnaHQgdG9vbCBhYnNvbHV0ZWx5IG1ha2VzIHRoZSBkaWZmZXJl
bmNlLgotCi1Hb29nbGUgTW9jayB3YXMgYnVpbHQgdG8gaGVscCBDKysgcHJvZ3JhbW1lcnMuIEl0
IHdhcyBpbnNwaXJlZCBieSBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5
TW9ja10oaHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSwgYnV0IGRlc2lnbmVkIHdpdGggQysrJ3Mg
c3BlY2lmaWNzIGluIG1pbmQuIEl0IGlzIHlvdXIgZnJpZW5kIGlmIGFueSBvZiB0aGUgZm9sbG93
aW5nIHByb2JsZW1zIGlzIGJvdGhlcmluZyB5b3U6Ci0KLSAgKiBZb3UgYXJlIHN0dWNrIHdpdGgg
YSBzdWItb3B0aW1hbCBkZXNpZ24gYW5kIHdpc2ggeW91IGhhZCBkb25lIG1vcmUgcHJvdG90eXBp
bmcgYmVmb3JlIGl0IHdhcyB0b28gbGF0ZSwgYnV0IHByb3RvdHlwaW5nIGluIEMrKyBpcyBieSBu
byBtZWFucyAicmFwaWQiLgotICAqIFlvdXIgdGVzdHMgYXJlIHNsb3cgYXMgdGhleSBkZXBlbmQg
b24gdG9vIG1hbnkgbGlicmFyaWVzIG9yIHVzZSBleHBlbnNpdmUgcmVzb3VyY2VzIChlLmcuIGEg
ZGF0YWJhc2UpLgotICAqIFlvdXIgdGVzdHMgYXJlIGJyaXR0bGUgYXMgc29tZSByZXNvdXJjZXMg
dGhleSB1c2UgYXJlIHVucmVsaWFibGUgKGUuZy4gdGhlIG5ldHdvcmspLgotICAqIFlvdSB3YW50
IHRvIHRlc3QgaG93IHlvdXIgY29kZSBoYW5kbGVzIGEgZmFpbHVyZSAoZS5nLiBhIGZpbGUgY2hl
Y2tzdW0gZXJyb3IpLCBidXQgaXQncyBub3QgZWFzeSB0byBjYXVzZSBvbmUuCi0gICogWW91IG5l
ZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91ciBtb2R1bGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9k
dWxlcyBpbiB0aGUgcmlnaHQgd2F5LCBidXQgaXQncyBoYXJkIHRvIG9ic2VydmUgdGhlIGludGVy
YWN0aW9uOyB0aGVyZWZvcmUgeW91IHJlc29ydCB0byBvYnNlcnZpbmcgdGhlIHNpZGUgZWZmZWN0
cyBhdCB0aGUgZW5kIG9mIHRoZSBhY3Rpb24sIHdoaWNoIGlzIGF3a3dhcmQgYXQgYmVzdC4KLSAg
KiBZb3Ugd2FudCB0byAibW9jayBvdXQiIHlvdXIgZGVwZW5kZW5jaWVzLCBleGNlcHQgdGhhdCB0
aGV5IGRvbid0IGhhdmUgbW9jayBpbXBsZW1lbnRhdGlvbnMgeWV0OyBhbmQsIGZyYW5rbHksIHlv
dSBhcmVuJ3QgdGhyaWxsZWQgYnkgc29tZSBvZiB0aG9zZSBoYW5kLXdyaXR0ZW4gbW9ja3MuCi0K
LVdlIGVuY291cmFnZSB5b3UgdG8gdXNlIEdvb2dsZSBNb2NrIGFzOgotCi0gICogYSBfZGVzaWdu
XyB0b29sLCBmb3IgaXQgbGV0cyB5b3UgZXhwZXJpbWVudCB3aXRoIHlvdXIgaW50ZXJmYWNlIGRl
c2lnbiBlYXJseSBhbmQgb2Z0ZW4uIE1vcmUgaXRlcmF0aW9ucyBsZWFkIHRvIGJldHRlciBkZXNp
Z25zIQotICAqIGEgX3Rlc3RpbmdfIHRvb2wgdG8gY3V0IHlvdXIgdGVzdHMnIG91dGJvdW5kIGRl
cGVuZGVuY2llcyBhbmQgcHJvYmUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4geW91ciBtb2R1bGUg
YW5kIGl0cyBjb2xsYWJvcmF0b3JzLgotCi0jIEdldHRpbmcgU3RhcnRlZCAjCi1Vc2luZyBHb29n
bGUgTW9jayBpcyBlYXN5ISBJbnNpZGUgeW91ciBDKysgc291cmNlIGZpbGUsIGp1c3QgYCNpbmNs
dWRlYCBgImd0ZXN0L2d0ZXN0LmgiYCBhbmQgYCJnbW9jay9nbW9jay5oImAsIGFuZCB5b3UgYXJl
IHJlYWR5IHRvIGdvLgotCi0jIEEgQ2FzZSBmb3IgTW9jayBUdXJ0bGVzICMKLUxldCdzIGxvb2sg
YXQgYW4gZXhhbXBsZS4gU3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBncmFwaGljcyBwcm9n
cmFtIHRoYXQgcmVsaWVzIG9uIGEgTE9HTy1saWtlIEFQSSBmb3IgZHJhd2luZy4gSG93IHdvdWxk
IHlvdSB0ZXN0IHRoYXQgaXQgZG9lcyB0aGUgcmlnaHQgdGhpbmc/IFdlbGwsIHlvdSBjYW4gcnVu
IGl0IGFuZCBjb21wYXJlIHRoZSBzY3JlZW4gd2l0aCBhIGdvbGRlbiBzY3JlZW4gc25hcHNob3Qs
IGJ1dCBsZXQncyBhZG1pdCBpdDogdGVzdHMgbGlrZSB0aGlzIGFyZSBleHBlbnNpdmUgdG8gcnVu
IGFuZCBmcmFnaWxlIChXaGF0IGlmIHlvdSBqdXN0IHVwZ3JhZGVkIHRvIGEgc2hpbnkgbmV3IGdy
YXBoaWNzIGNhcmQgdGhhdCBoYXMgYmV0dGVyIGFudGktYWxpYXNpbmc/IFN1ZGRlbmx5IHlvdSBo
YXZlIHRvIHVwZGF0ZSBhbGwgeW91ciBnb2xkZW4gaW1hZ2VzLikuIEl0IHdvdWxkIGJlIHRvbyBw
YWluZnVsIGlmIGFsbCB5b3VyIHRlc3RzIGFyZSBsaWtlIHRoaXMuIEZvcnR1bmF0ZWx5LCB5b3Ug
bGVhcm5lZCBhYm91dCBEZXBlbmRlbmN5IEluamVjdGlvbiBhbmQga25vdyB0aGUgcmlnaHQgdGhp
bmcgdG8gZG86IGluc3RlYWQgb2YgaGF2aW5nIHlvdXIgYXBwbGljYXRpb24gdGFsayB0byB0aGUg
ZHJhd2luZyBBUEkgZGlyZWN0bHksIHdyYXAgdGhlIEFQSSBpbiBhbiBpbnRlcmZhY2UgKHNheSwg
YFR1cnRsZWApIGFuZCBjb2RlIHRvIHRoYXQgaW50ZXJmYWNlOgotCi1gYGAKLWNsYXNzIFR1cnRs
ZSB7Ci0gIC4uLgotICB2aXJ0dWFsIH5UdXJ0bGUoKSB7fQotICB2aXJ0dWFsIHZvaWQgUGVuVXAo
KSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQZW5Eb3duKCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgRm9y
d2FyZChpbnQgZGlzdGFuY2UpID0gMDsKLSAgdmlydHVhbCB2b2lkIFR1cm4oaW50IGRlZ3JlZXMp
ID0gMDsKLSAgdmlydHVhbCB2b2lkIEdvVG8oaW50IHgsIGludCB5KSA9IDA7Ci0gIHZpcnR1YWwg
aW50IEdldFgoKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFkoKSBjb25zdCA9IDA7Ci19
OwotYGBgCi0KLShOb3RlIHRoYXQgdGhlIGRlc3RydWN0b3Igb2YgYFR1cnRsZWAgKiptdXN0Kiog
YmUgdmlydHVhbCwgYXMgaXMgdGhlIGNhc2UgZm9yICoqYWxsKiogY2xhc3NlcyB5b3UgaW50ZW5k
IHRvIGluaGVyaXQgZnJvbSAtIG90aGVyd2lzZSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgZGVyaXZl
ZCBjbGFzcyB3aWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIGFuIG9iamVjdCB0aHJv
dWdoIGEgYmFzZSBwb2ludGVyLCBhbmQgeW91J2xsIGdldCBjb3JydXB0ZWQgcHJvZ3JhbSBzdGF0
ZXMgbGlrZSBtZW1vcnkgbGVha3MuKQotCi1Zb3UgY2FuIGNvbnRyb2wgd2hldGhlciB0aGUgdHVy
dGxlJ3MgbW92ZW1lbnQgd2lsbCBsZWF2ZSBhIHRyYWNlIHVzaW5nIGBQZW5VcCgpYCBhbmQgYFBl
bkRvd24oKWAsIGFuZCBjb250cm9sIGl0cyBtb3ZlbWVudCB1c2luZyBgRm9yd2FyZCgpYCwgYFR1
cm4oKWAsIGFuZCBgR29UbygpYC4gRmluYWxseSwgYEdldFgoKWAgYW5kIGBHZXRZKClgIHRlbGwg
eW91IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSB0dXJ0bGUuCi0KLVlvdXIgcHJvZ3JhbSB3
aWxsIG5vcm1hbGx5IHVzZSBhIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Uu
IEluIHRlc3RzLCB5b3UgY2FuIHVzZSBhIG1vY2sgaW1wbGVtZW50YXRpb24gaW5zdGVhZC4gVGhp
cyBhbGxvd3MgeW91IHRvIGVhc2lseSBjaGVjayB3aGF0IGRyYXdpbmcgcHJpbWl0aXZlcyB5b3Vy
IHByb2dyYW0gaXMgY2FsbGluZywgd2l0aCB3aGF0IGFyZ3VtZW50cywgYW5kIGluIHdoaWNoIG9y
ZGVyLiBUZXN0cyB3cml0dGVuIHRoaXMgd2F5IGFyZSBtdWNoIG1vcmUgcm9idXN0ICh0aGV5IHdv
bid0IGJyZWFrIGJlY2F1c2UgeW91ciBuZXcgbWFjaGluZSBkb2VzIGFudGktYWxpYXNpbmcgZGlm
ZmVyZW50bHkpLCBlYXNpZXIgdG8gcmVhZCBhbmQgbWFpbnRhaW4gKHRoZSBpbnRlbnQgb2YgYSB0
ZXN0IGlzIGV4cHJlc3NlZCBpbiB0aGUgY29kZSwgbm90IGluIHNvbWUgYmluYXJ5IGltYWdlcyks
IGFuZCBydW4gX211Y2gsIG11Y2ggZmFzdGVyXy4KLQotIyBXcml0aW5nIHRoZSBNb2NrIENsYXNz
ICMKLUlmIHlvdSBhcmUgbHVja3ksIHRoZSBtb2NrcyB5b3UgbmVlZCB0byB1c2UgaGF2ZSBhbHJl
YWR5IGJlZW4gaW1wbGVtZW50ZWQgYnkgc29tZSBuaWNlIHBlb3BsZS4gSWYsIGhvd2V2ZXIsIHlv
dSBmaW5kIHlvdXJzZWxmIGluIHRoZSBwb3NpdGlvbiB0byB3cml0ZSBhIG1vY2sgY2xhc3MsIHJl
bGF4IC0gR29vZ2xlIE1vY2sgdHVybnMgdGhpcyB0YXNrIGludG8gYSBmdW4gZ2FtZSEgKFdlbGws
IGFsbW9zdC4pCi0KLSMjIEhvdyB0byBEZWZpbmUgSXQgIyMKLVVzaW5nIHRoZSBgVHVydGxlYCBp
bnRlcmZhY2UgYXMgZXhhbXBsZSwgaGVyZSBhcmUgdGhlIHNpbXBsZSBzdGVwcyB5b3UgbmVlZCB0
byBmb2xsb3c6Ci0KLSAgMS4gRGVyaXZlIGEgY2xhc3MgYE1vY2tUdXJ0bGVgIGZyb20gYFR1cnRs
ZWAuCi0gIDEuIFRha2UgYSBfdmlydHVhbF8gZnVuY3Rpb24gb2YgYFR1cnRsZWAgKHdoaWxlIGl0
J3MgcG9zc2libGUgdG8gW21vY2sgbm9uLXZpcnR1YWwgbWV0aG9kcyB1c2luZyB0ZW1wbGF0ZXNd
KGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNN
b2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcyksIGl0J3MgbXVjaCBtb3JlIGludm9sdmVkKS4gQ291
bnQgaG93IG1hbnkgYXJndW1lbnRzIGl0IGhhcy4KLSAgMS4gSW4gdGhlIGBwdWJsaWM6YCBzZWN0
aW9uIG9mIHRoZSBjaGlsZCBjbGFzcywgd3JpdGUgYE1PQ0tfTUVUSE9EbigpO2AgKG9yIGBNT0NL
X0NPTlNUX01FVEhPRG4oKTtgIGlmIHlvdSBhcmUgbW9ja2luZyBhIGBjb25zdGAgbWV0aG9kKSwg
d2hlcmUgYG5gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGFyZ3VtZW50czsgaWYgeW91IGNvdW50ZWQg
d3JvbmcsIHNoYW1lIG9uIHlvdSwgYW5kIGEgY29tcGlsZXIgZXJyb3Igd2lsbCB0ZWxsIHlvdSBz
by4KLSAgMS4gTm93IGNvbWVzIHRoZSBmdW4gcGFydDogeW91IHRha2UgdGhlIGZ1bmN0aW9uIHNp
Z25hdHVyZSwgY3V0LWFuZC1wYXN0ZSB0aGUgX2Z1bmN0aW9uIG5hbWVfIGFzIHRoZSBfZmlyc3Rf
IGFyZ3VtZW50IHRvIHRoZSBtYWNybywgYW5kIGxlYXZlIHdoYXQncyBsZWZ0IGFzIHRoZSBfc2Vj
b25kXyBhcmd1bWVudCAoaW4gY2FzZSB5b3UncmUgY3VyaW91cywgdGhpcyBpcyB0aGUgX3R5cGUg
b2YgdGhlIGZ1bmN0aW9uXykuCi0gIDEuIFJlcGVhdCB1bnRpbCBhbGwgdmlydHVhbCBmdW5jdGlv
bnMgeW91IHdhbnQgdG8gbW9jayBhcmUgZG9uZS4KLQotQWZ0ZXIgdGhlIHByb2Nlc3MsIHlvdSBz
aG91bGQgaGF2ZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIgIC8vIEJyaW5ncyBpbiBHb29nbGUgTW9jay4KLWNsYXNzIE1vY2tUdXJ0bGUgOiBwdWJsaWMg
VHVydGxlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDAoUGVuVXAsIHZvaWQoKSk7
Ci0gIE1PQ0tfTUVUSE9EMChQZW5Eb3duLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDEoRm9yd2Fy
ZCwgdm9pZChpbnQgZGlzdGFuY2UpKTsKLSAgTU9DS19NRVRIT0QxKFR1cm4sIHZvaWQoaW50IGRl
Z3JlZXMpKTsKLSAgTU9DS19NRVRIT0QyKEdvVG8sIHZvaWQoaW50IHgsIGludCB5KSk7Ci0gIE1P
Q0tfQ09OU1RfTUVUSE9EMChHZXRYLCBpbnQoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRZ
LCBpbnQoKSk7Ci19OwotYGBgCi0KLVlvdSBkb24ndCBuZWVkIHRvIGRlZmluZSB0aGVzZSBtb2Nr
IG1ldGhvZHMgc29tZXdoZXJlIGVsc2UgLSB0aGUgYE1PQ0tfTUVUSE9EKmAgbWFjcm9zIHdpbGwg
Z2VuZXJhdGUgdGhlIGRlZmluaXRpb25zIGZvciB5b3UuIEl0J3MgdGhhdCBzaW1wbGUhIE9uY2Ug
eW91IGdldCB0aGUgaGFuZyBvZiBpdCwgeW91IGNhbiBwdW1wIG91dCBtb2NrIGNsYXNzZXMgZmFz
dGVyIHRoYW4geW91ciBzb3VyY2UtY29udHJvbCBzeXN0ZW0gY2FuIGhhbmRsZSB5b3VyIGNoZWNr
LWlucy4KLQotKipUaXA6KiogSWYgZXZlbiB0aGlzIGlzIHRvbyBtdWNoIHdvcmsgZm9yIHlvdSwg
eW91J2xsIGZpbmQgdGhlCi1gZ21vY2tfZ2VuLnB5YCB0b29sIGluIEdvb2dsZSBNb2NrJ3MgYHNj
cmlwdHMvZ2VuZXJhdG9yL2AgZGlyZWN0b3J5IChjb3VydGVzeSBvZiB0aGUgW2NwcGNsZWFuXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvY3BwY2xlYW4vKSBwcm9qZWN0KSB1c2VmdWwuICBUaGlz
IGNvbW1hbmQtbGluZQotdG9vbCByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIFB5dGhvbiAyLjQgaW5z
dGFsbGVkLiAgWW91IGdpdmUgaXQgYSBDKysgZmlsZSBhbmQgdGhlIG5hbWUgb2YgYW4gYWJzdHJh
Y3QgY2xhc3MgZGVmaW5lZCBpbiBpdCwKLWFuZCBpdCB3aWxsIHByaW50IHRoZSBkZWZpbml0aW9u
IG9mIHRoZSBtb2NrIGNsYXNzIGZvciB5b3UuICBEdWUgdG8gdGhlCi1jb21wbGV4aXR5IG9mIHRo
ZSBDKysgbGFuZ3VhZ2UsIHRoaXMgc2NyaXB0IG1heSBub3QgYWx3YXlzIHdvcmssIGJ1dAotaXQg
Y2FuIGJlIHF1aXRlIGhhbmR5IHdoZW4gaXQgZG9lcy4gIEZvciBtb3JlIGRldGFpbHMsIHJlYWQg
dGhlIFt1c2VyIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVt
b2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FKS4KLQotIyMg
V2hlcmUgdG8gUHV0IEl0ICMjCi1XaGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVl
ZCB0byBkZWNpZGUgd2hlcmUgdG8gcHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBlb3BsZSBwdXQg
aXQgaW4gYSBgKl90ZXN0LmNjYC4gVGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVyZmFjZSBiZWlu
ZyBtb2NrZWQgKHNheSwgYEZvb2ApIGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFt
LiBPdGhlcndpc2UsIHdoZW4gdGhlIG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQsIHlvdXIgdGVz
dCBjb3VsZCBicmVhay4gKFlvdSBjYW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5l
ciB0byBmaXggZXZlcnkgdGVzdCB0aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQotCi1TbywgdGhl
IHJ1bGUgb2YgdGh1bWIgaXM6IGlmIHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3du
ZWQgYnkgb3RoZXJzLCBkZWZpbmUgdGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBwYWNrYWdlIChi
ZXR0ZXIsIGluIGEgYHRlc3RpbmdgIHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFy
bHkgc2VwYXJhdGUgcHJvZHVjdGlvbiBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBw
dXQgaXQgaW4gYSBgbW9ja19mb28uaGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9j
a19mb28uaGAgZnJvbSB0aGVpciB0ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBp
cyBvbmx5IG9uZSBjb3B5IG9mIGBNb2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRo
YXQgZGVwZW5kIG9uIHRoZSBjaGFuZ2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhlZC4KLQotQW5v
dGhlciB3YXkgdG8gZG8gaXQ6IHlvdSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXllciBgRm9vQWRh
cHRvcmAgb24gdG9wIG9mIGBGb29gIGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVyZmFjZS4gU2lu
Y2UgeW91IG93biBgRm9vQWRhcHRvcmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMgaW4gYEZvb2Ag
bXVjaCBtb3JlIGVhc2lseS4gV2hpbGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJl
ZnVsbHkgY2hvb3NpbmcgdGhlIGFkYXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlvdXIgY29kZSBl
YXNpZXIgdG8gd3JpdGUgYW5kIG1vcmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBy
dW4pLCBhcyB5b3UgY2FuIGNob29zZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIgc3BlY2lmaWMg
ZG9tYWluIG11Y2ggYmV0dGVyIHRoYW4gYEZvb2AgZG9lcy4KLQotIyBVc2luZyBNb2NrcyBpbiBU
ZXN0cyAjCi1PbmNlIHlvdSBoYXZlIGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMgZWFzeS4gVGhl
IHR5cGljYWwgd29yayBmbG93IGlzOgotCi0gIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFt
ZXMgZnJvbSB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNhbiB1c2UgdGhl
bSB1bnF1YWxpZmllZCAoWW91IG9ubHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBmaWxlLiBSZW1l
bWJlciB0aGF0IG5hbWVzcGFjZXMgYXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZvciB5b3VyIGhl
YWx0aC4pLgotICAxLiBDcmVhdGUgc29tZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNwZWNpZnkgeW91
ciBleHBlY3RhdGlvbnMgb24gdGhlbSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1ldGhvZCBiZSBj
YWxsZWQ/IFdpdGggd2hhdCBhcmd1bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBldGMuKS4KLSAg
MS4gRXhlcmNpc2Ugc29tZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNo
ZWNrIHRoZSByZXN1bHQgdXNpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1l
dGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIGV4cGVjdGVkIG9yIHdpdGggd3JvbmcgYXJndW1lbnRz
LCB5b3UnbGwgZ2V0IGFuIGVycm9yIGltbWVkaWF0ZWx5LgotICAxLiBXaGVuIGEgbW9jayBpcyBk
ZXN0cnVjdGVkLCBHb29nbGUgTW9jayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgd2hldGhlciBh
bGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhlcmUncyBhbiBl
eGFtcGxlOgotCi1gYGAKLSNpbmNsdWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgiCi0jaW5jbHVk
ZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotdXNpbmcgOjp0ZXN0
aW5nOjpBdExlYXN0OyAgICAgICAgICAgICAgICAgICAgIC8vICMxCi0KLVRFU1QoUGFpbnRlclRl
c3QsIENhbkRyYXdTb21ldGhpbmcpIHsKLSAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAjMgotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSkgICAg
ICAgICAgICAgIC8vICMzCi0gICAgICAuVGltZXMoQXRMZWFzdCgxKSk7Ci0KLSAgUGFpbnRlciBw
YWludGVyKCZ0dXJ0bGUpOyAgICAgICAgICAgICAgICAgICAvLyAjNAotCi0gIEVYUEVDVF9UUlVF
KHBhaW50ZXIuRHJhd0NpcmNsZSgwLCAwLCAxMCkpOwotfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICM1Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikgewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRlZCB0byBpbml0
aWFsaXplIEdvb2dsZSBNb2NrCi0gIC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9yZSBydW5uaW5n
IHRoZSB0ZXN0cy4KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0g
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotQXMgeW91IG1pZ2h0IGhhdmUgZ3Vl
c3NlZCwgdGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxlZCBhdCBsZWFz
dCBvbmNlLiBJZiB0aGUgYHBhaW50ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwg
eW91ciB0ZXN0IHdpbGwgZmFpbCB3aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0KLWBgYAotcGF0
aC90by9teV90ZXN0LmNjOjExOTogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQg
ZG9lc24ndCBtYXRjaCB0aGlzIGV4cGVjdGF0aW9uOgotQWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsK
LUV4cGVjdGVkOiBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KLWBgYAotCi0qKlRpcCAxOioqIElmIHlv
dSBydW4gdGhlIHRlc3QgZnJvbSBhbiBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+
YCBvbiB0aGUgbGluZSBudW1iZXIgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1
bXAgcmlnaHQgdG8gdGhlIGZhaWxlZCBleHBlY3RhdGlvbi4KLQotKipUaXAgMjoqKiBJZiB5b3Vy
IG1vY2sgb2JqZWN0cyBhcmUgbmV2ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3
b24ndCBoYXBwZW4uIFRoZXJlZm9yZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVh
ayBjaGVja2VyIGluIHlvdXIgdGVzdHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhl
YXAuCi0KLSoqSW1wb3J0YW50IG5vdGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRp
b25zIHRvIGJlIHNldCAqKmJlZm9yZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBv
dGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRpY3VsYXIsIHlv
dSBtdXN0bid0IGludGVybGVhdmUgYEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMgdG8gdGhlIG1v
Y2sgZnVuY3Rpb25zLgotCi1UaGlzIG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVh
ZCBhcyBleHBlY3RpbmcgdGhhdCBhIGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5v
dCB0aGF0IGEgY2FsbCBoYXMgb2NjdXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlr
ZSB0aGF0PyBXZWxsLCBzcGVjaWZ5aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93
cyBHb29nbGUgTW9jayB0byByZXBvcnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBpdCBhcmlzZXMs
IHdoZW4gdGhlIGNvbnRleHQgKHN0YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4g
VGhpcyBtYWtlcyBkZWJ1Z2dpbmcgbXVjaCBlYXNpZXIuCi0KLUFkbWl0dGVkbHksIHRoaXMgdGVz
dCBpcyBjb250cml2ZWQgYW5kIGRvZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2
ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93ZXZlciwgYXMg
d2Ugc2hhbGwgcmV2ZWFsIHNvb24sIEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gZG8gX211Y2gg
bW9yZV8gd2l0aCB0aGUgbW9ja3MuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggQW55IFRl
c3RpbmcgRnJhbWV3b3JrICMjCi1JZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRo
YW4gR29vZ2xlIFRlc3QgKGUuZy4gW0NwcFVuaXRdKGh0dHA6Ly9hcHBzLnNvdXJjZWZvcmdlLm5l
dC9tZWRpYXdpa2kvY3BwdW5pdC9pbmRleC5waHA/dGl0bGU9TWFpbl9QYWdlKSBvcgotW0N4eFRl
c3RdKGh0dHA6Ly9jeHh0ZXN0LnRpZ3Jpcy5vcmcvKSkgYXMgeW91ciB0ZXN0aW5nIGZyYW1ld29y
aywganVzdCBjaGFuZ2UgdGhlIGBtYWluKClgIGZ1bmN0aW9uIGluIHRoZSBwcmV2aW91cyBzZWN0
aW9uIHRvOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgLy8gVGhl
IGZvbGxvd2luZyBsaW5lIGNhdXNlcyBHb29nbGUgTW9jayB0byB0aHJvdyBhbiBleGNlcHRpb24g
b24gZmFpbHVyZSwKLSAgLy8gd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBieSB5b3VyIHRlc3Rp
bmcgZnJhbWV3b3JrIGFzIGEgdGVzdCBmYWlsdXJlLgotICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUco
dGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZh
cmdjLCBhcmd2KTsKLSAgLi4uIHdoYXRldmVyIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWly
ZXMgLi4uCi19Ci1gYGAKLQotVGhpcyBhcHByb2FjaCBoYXMgYSBjYXRjaDogaXQgbWFrZXMgR29v
Z2xlIE1vY2sgdGhyb3cgYW4gZXhjZXB0aW9uCi1mcm9tIGEgbW9jayBvYmplY3QncyBkZXN0cnVj
dG9yIHNvbWV0aW1lcy4gIFdpdGggc29tZSBjb21waWxlcnMsIHRoaXMKLXNvbWV0aW1lcyBjYXVz
ZXMgdGhlIHRlc3QgcHJvZ3JhbSB0byBjcmFzaC4gIFlvdSdsbCBzdGlsbCBiZSBhYmxlIHRvCi1u
b3RpY2UgdGhhdCB0aGUgdGVzdCBoYXMgZmFpbGVkLCBidXQgaXQncyBub3QgYSBncmFjZWZ1bCBm
YWlsdXJlLgotCi1BIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgR29vZ2xlIFRlc3QncwotW2V2
ZW50IGxpc3RlbmVyIEFQSV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lr
aS9BZHZhbmNlZEd1aWRlI0V4dGVuZGluZ19Hb29nbGVfVGVzdF9ieV9IYW5kbGluZ19UZXN0X0V2
ZW50cykKLXRvIHJlcG9ydCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3RpbmcgZnJhbWV3b3Jr
IHByb3Blcmx5LiAgWW91J2xsIG5lZWQgdG8KLWltcGxlbWVudCB0aGUgYE9uVGVzdFBhcnRSZXN1
bHQoKWAgbWV0aG9kIG9mIHRoZSBldmVudCBsaXN0ZW5lciBpbnRlcmZhY2UsIGJ1dCBpdAotc2hv
dWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4KLQotSWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgdG9vIG11
Y2ggd29yaywgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGljayB3aXRoCi1Hb29nbGUgVGVzdCwgd2hp
Y2ggd29ya3Mgd2l0aCBHb29nbGUgTW9jayBzZWFtbGVzc2x5IChpbiBmYWN0LCBpdCBpcwotdGVj
aG5pY2FsbHkgcGFydCBvZiBHb29nbGUgTW9jay4pLiAgSWYgdGhlcmUgaXMgYSByZWFzb24gdGhh
dCB5b3UKLWNhbm5vdCB1c2UgR29vZ2xlIFRlc3QsIHBsZWFzZSBsZXQgdXMga25vdy4KLQotIyBT
ZXR0aW5nIEV4cGVjdGF0aW9ucyAjCi1UaGUga2V5IHRvIHVzaW5nIGEgbW9jayBvYmplY3Qgc3Vj
Y2Vzc2Z1bGx5IGlzIHRvIHNldCB0aGUgX3JpZ2h0IGV4cGVjdGF0aW9uc18gb24gaXQuIElmIHlv
dSBzZXQgdGhlIGV4cGVjdGF0aW9ucyB0b28gc3RyaWN0LCB5b3VyIHRlc3Qgd2lsbCBmYWlsIGFz
IHRoZSByZXN1bHQgb2YgdW5yZWxhdGVkIGNoYW5nZXMuIElmIHlvdSBzZXQgdGhlbSB0b28gbG9v
c2UsIGJ1Z3MgY2FuIHNsaXAgdGhyb3VnaC4gWW91IHdhbnQgdG8gZG8gaXQganVzdCByaWdodCBz
dWNoIHRoYXQgeW91ciB0ZXN0IGNhbiBjYXRjaCBleGFjdGx5IHRoZSBraW5kIG9mIGJ1Z3MgeW91
IGludGVuZCBpdCB0byBjYXRjaC4gR29vZ2xlIE1vY2sgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBt
ZWFucyBmb3IgeW91IHRvIGRvIGl0ICJqdXN0IHJpZ2h0LiIKLQotIyMgR2VuZXJhbCBTeW50YXgg
IyMKLUluIEdvb2dsZSBNb2NrIHdlIHVzZSB0aGUgYEVYUEVDVF9DQUxMKClgIG1hY3JvIHRvIHNl
dCBhbiBleHBlY3RhdGlvbiBvbiBhIG1vY2sgbWV0aG9kLiBUaGUgZ2VuZXJhbCBzeW50YXggaXM6
Ci0KLWBgYAotRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAg
LlRpbWVzKGNhcmRpbmFsaXR5KQotICAgIC5XaWxsT25jZShhY3Rpb24pCi0gICAgLldpbGxSZXBl
YXRlZGx5KGFjdGlvbik7Ci1gYGAKLQotVGhlIG1hY3JvIGhhcyB0d28gYXJndW1lbnRzOiBmaXJz
dCB0aGUgbW9jayBvYmplY3QsIGFuZCB0aGVuIHRoZSBtZXRob2QgYW5kIGl0cyBhcmd1bWVudHMu
IE5vdGUgdGhhdCB0aGUgdHdvIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSAoYCxgKSwgbm90IGEg
cGVyaW9kIChgLmApLiAoV2h5IHVzaW5nIGEgY29tbWE/IFRoZSBhbnN3ZXIgaXMgdGhhdCBpdCB3
YXMgbmVjZXNzYXJ5IGZvciB0ZWNobmljYWwgcmVhc29ucy4pCi0KLVRoZSBtYWNybyBjYW4gYmUg
Zm9sbG93ZWQgYnkgc29tZSBvcHRpb25hbCBfY2xhdXNlc18gdGhhdCBwcm92aWRlIG1vcmUgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGV4cGVjdGF0aW9uLiBXZSdsbCBkaXNjdXNzIGhvdyBlYWNoIGNs
YXVzZSB3b3JrcyBpbiB0aGUgY29taW5nIHNlY3Rpb25zLgotCi1UaGlzIHN5bnRheCBpcyBkZXNp
Z25lZCB0byBtYWtlIGFuIGV4cGVjdGF0aW9uIHJlYWQgbGlrZSBFbmdsaXNoLiBGb3IgZXhhbXBs
ZSwgeW91IGNhbiBwcm9iYWJseSBndWVzcyB0aGF0Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpS
ZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuVGltZXMoNSkKLSAg
ICAuV2lsbE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxNTApKQotICAg
IC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMjAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IHRoZSBgdHVy
dGxlYCBvYmplY3QncyBgR2V0WCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZml2ZSB0aW1lcywg
aXQgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAxNTAgdGhlIHNlY29uZCB0aW1lLCBh
bmQgdGhlbiAyMDAgZXZlcnkgdGltZS4gU29tZSBwZW9wbGUgbGlrZSB0byBjYWxsIHRoaXMgc3R5
bGUgb2Ygc3ludGF4IGEgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlIChEU0wpLgotCi0qKk5vdGU6
KiogV2h5IGRvIHdlIHVzZSBhIG1hY3JvIHRvIGRvIHRoaXM/IEl0IHNlcnZlcyB0d28gcHVycG9z
ZXM6IGZpcnN0IGl0IG1ha2VzIGV4cGVjdGF0aW9ucyBlYXNpbHkgaWRlbnRpZmlhYmxlIChlaXRo
ZXIgYnkgYGdyZXBgIG9yIGJ5IGEgaHVtYW4gcmVhZGVyKSwgYW5kIHNlY29uZCBpdCBhbGxvd3Mg
R29vZ2xlIE1vY2sgdG8gaW5jbHVkZSB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgYSBmYWls
ZWQgZXhwZWN0YXRpb24gaW4gbWVzc2FnZXMsIG1ha2luZyBkZWJ1Z2dpbmcgZWFzaWVyLgotCi0j
IyBNYXRjaGVyczogV2hhdCBBcmd1bWVudHMgRG8gV2UgRXhwZWN0PyAjIwotV2hlbiBhIG1vY2sg
ZnVuY3Rpb24gdGFrZXMgYXJndW1lbnRzLCB3ZSBtdXN0IHNwZWNpZnkgd2hhdCBhcmd1bWVudHMg
d2UgYXJlIGV4cGVjdGluZzsgZm9yIGV4YW1wbGU6Ci0KLWBgYAotLy8gRXhwZWN0cyB0aGUgdHVy
dGxlIHRvIG1vdmUgZm9yd2FyZCBieSAxMDAgdW5pdHMuCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZv
cndhcmQoMTAwKSk7Ci1gYGAKLQotU29tZXRpbWVzIHlvdSBtYXkgbm90IHdhbnQgdG8gYmUgdG9v
IHNwZWNpZmljIChSZW1lbWJlciB0aGF0IHRhbGsgYWJvdXQgdGVzdHMgYmVpbmcgdG9vIHJpZ2lk
PyBPdmVyIHNwZWNpZmljYXRpb24gbGVhZHMgdG8gYnJpdHRsZSB0ZXN0cyBhbmQgb2JzY3VyZXMg
dGhlIGludGVudCBvZiB0ZXN0cy4gVGhlcmVmb3JlIHdlIGVuY291cmFnZSB5b3UgdG8gc3BlY2lm
eSBvbmx5IHdoYXQncyBuZWNlc3NhcnkgLSBubyBtb3JlLCBubyBsZXNzLikuIElmIHlvdSBjYXJl
IHRvIGNoZWNrIHRoYXQgYEZvcndhcmQoKWAgd2lsbCBiZSBjYWxsZWQgYnV0IGFyZW4ndCBpbnRl
cmVzdGVkIGluIGl0cyBhY3R1YWwgYXJndW1lbnQsIHdyaXRlIGBfYCBhcyB0aGUgYXJndW1lbnQs
IHdoaWNoIG1lYW5zICJhbnl0aGluZyBnb2VzIjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87
Ci0uLi4KLS8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3ZlIGZvcndhcmQuCi1FWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEZvcndhcmQoXykpOwotYGBgCi0KLWBfYCBpcyBhbiBpbnN0YW5jZSBvZiB3aGF0
IHdlIGNhbGwgKiptYXRjaGVycyoqLiBBIG1hdGNoZXIgaXMgbGlrZSBhIHByZWRpY2F0ZSBhbmQg
Y2FuIHRlc3Qgd2hldGhlciBhbiBhcmd1bWVudCBpcyB3aGF0IHdlJ2QgZXhwZWN0LiBZb3UgY2Fu
IHVzZSBhIG1hdGNoZXIgaW5zaWRlIGBFWFBFQ1RfQ0FMTCgpYCB3aGVyZXZlciBhIGZ1bmN0aW9u
IGFyZ3VtZW50IGlzIGV4cGVjdGVkLgotCi1BIGxpc3Qgb2YgYnVpbHQtaW4gbWF0Y2hlcnMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBbQ2hlYXRTaGVldF0oVjFfN19DaGVhdFNoZWV0Lm1kKS4gRm9yIGV4
YW1wbGUsIGhlcmUncyB0aGUgYEdlYCAoZ3JlYXRlciB0aGFuIG9yIGVxdWFsKSBtYXRjaGVyOgot
Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6R2U7Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndh
cmQoR2UoMTAwKSkpOwotYGBgCi0KLVRoaXMgY2hlY2tzIHRoYXQgdGhlIHR1cnRsZSB3aWxsIGJl
IHRvbGQgdG8gZ28gZm9yd2FyZCBieSBhdCBsZWFzdCAxMDAgdW5pdHMuCi0KLSMjIENhcmRpbmFs
aXRpZXM6IEhvdyBNYW55IFRpbWVzIFdpbGwgSXQgQmUgQ2FsbGVkPyAjIwotVGhlIGZpcnN0IGNs
YXVzZSB3ZSBjYW4gc3BlY2lmeSBmb2xsb3dpbmcgYW4gYEVYUEVDVF9DQUxMKClgIGlzIGBUaW1l
cygpYC4gV2UgY2FsbCBpdHMgYXJndW1lbnQgYSAqKmNhcmRpbmFsaXR5KiogYXMgaXQgdGVsbHMg
X2hvdyBtYW55IHRpbWVzXyB0aGUgY2FsbCBzaG91bGQgb2NjdXIuIEl0IGFsbG93cyB1cyB0byBy
ZXBlYXQgYW4gZXhwZWN0YXRpb24gbWFueSB0aW1lcyB3aXRob3V0IGFjdHVhbGx5IHdyaXRpbmcg
aXQgYXMgbWFueSB0aW1lcy4gTW9yZSBpbXBvcnRhbnRseSwgYSBjYXJkaW5hbGl0eSBjYW4gYmUg
ImZ1enp5IiwganVzdCBsaWtlIGEgbWF0Y2hlciBjYW4gYmUuIFRoaXMgYWxsb3dzIGEgdXNlciB0
byBleHByZXNzIHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGV4YWN0bHkuCi0KLUFuIGludGVyZXN0aW5n
IHNwZWNpYWwgY2FzZSBpcyB3aGVuIHdlIHNheSBgVGltZXMoMClgLiBZb3UgbWF5IGhhdmUgZ3Vl
c3NlZCAtIGl0IG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0
aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGF0IGFsbCwgYW5kIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0
IGEgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgKHdyb25nZnVs
bHkpIGNhbGxlZC4KLQotV2UndmUgc2VlbiBgQXRMZWFzdChuKWAgYXMgYW4gZXhhbXBsZSBvZiBm
dXp6eSBjYXJkaW5hbGl0aWVzIGVhcmxpZXIuIEZvciB0aGUgbGlzdCBvZiBidWlsdC1pbiBjYXJk
aW5hbGl0aWVzIHlvdSBjYW4gdXNlLCBzZWUgdGhlIFtDaGVhdFNoZWV0XShWMV83X0NoZWF0U2hl
ZXQubWQpLgotCi1UaGUgYFRpbWVzKClgIGNsYXVzZSBjYW4gYmUgb21pdHRlZC4gKipJZiB5b3Ug
b21pdCBgVGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgaW5mZXIgdGhlIGNhcmRpbmFsaXR5IGZv
ciB5b3UuKiogVGhlIHJ1bGVzIGFyZSBlYXN5IHRvIHJlbWVtYmVyOgotCi0gICogSWYgKipuZWl0
aGVyKiogYFdpbGxPbmNlKClgICoqbm9yKiogYFdpbGxSZXBlYXRlZGx5KClgIGlzIGluIHRoZSBg
RVhQRUNUX0NBTEwoKWAsIHRoZSBpbmZlcnJlZCBjYXJkaW5hbGl0eSBpcyBgVGltZXMoMSlgLgot
ICAqIElmIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYCdzIGJ1dCAqKm5vKiogYFdpbGxSZXBlYXRl
ZGx5KClgLCB3aGVyZSBgbmAgPj0gMSwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhuKWAuCi0g
ICogSWYgdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYW5kICoqb25lKiogYFdpbGxSZXBlYXRl
ZGx5KClgLCB3aGVyZSBgbmAgPj0gMCwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhBdExlYXN0
KG4pKWAuCi0KLSoqUXVpY2sgcXVpejoqKiB3aGF0IGRvIHlvdSB0aGluayB3aWxsIGhhcHBlbiBp
ZiBhIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQgYWN0dWFsbHkg
Y2FsbGVkIGZvdXIgdGltZXM/Ci0KLSMjIEFjdGlvbnM6IFdoYXQgU2hvdWxkIEl0IERvPyAjIwot
UmVtZW1iZXIgdGhhdCBhIG1vY2sgb2JqZWN0IGRvZXNuJ3QgcmVhbGx5IGhhdmUgYSB3b3JraW5n
IGltcGxlbWVudGF0aW9uPyBXZSBhcyB1c2VycyBoYXZlIHRvIHRlbGwgaXQgd2hhdCB0byBkbyB3
aGVuIGEgbWV0aG9kIGlzIGludm9rZWQuIFRoaXMgaXMgZWFzeSBpbiBHb29nbGUgTW9jay4KLQot
Rmlyc3QsIGlmIHRoZSByZXR1cm4gdHlwZSBvZiBhIG1vY2sgZnVuY3Rpb24gaXMgYSBidWlsdC1p
biB0eXBlIG9yIGEgcG9pbnRlciwgdGhlIGZ1bmN0aW9uIGhhcyBhICoqZGVmYXVsdCBhY3Rpb24q
KiAoYSBgdm9pZGAgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgYSBgYm9vbGAgZnVuY3Rpb24g
d2lsbCByZXR1cm4gYGZhbHNlYCwgYW5kIG90aGVyIGZ1bmN0aW9ucyB3aWxsIHJldHVybiAwKS4g
SWYgeW91IGRvbid0IHNheSBhbnl0aGluZywgdGhpcyBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCi0K
LVNlY29uZCwgaWYgYSBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgYWN0aW9u
LCBvciB0aGUgZGVmYXVsdCBhY3Rpb24gZG9lc24ndCBzdWl0IHlvdSwgeW91IGNhbiBzcGVjaWZ5
IHRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gZWFjaCB0aW1lIHRoZSBleHBlY3RhdGlvbiBtYXRjaGVz
IHVzaW5nIGEgc2VyaWVzIG9mIGBXaWxsT25jZSgpYCBjbGF1c2VzIGZvbGxvd2VkIGJ5IGFuIG9w
dGlvbmFsIGBXaWxsUmVwZWF0ZWRseSgpYC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2ls
bE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxs
T25jZShSZXR1cm4oMzAwKSk7Ci1gYGAKLQotVGhpcyBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClg
IHdpbGwgYmUgY2FsbGVkIF9leGFjdGx5IHRocmVlIHRpbWVzXyAoR29vZ2xlIE1vY2sgaW5mZXJy
ZWQgdGhpcyBmcm9tIGhvdyBtYW55IGBXaWxsT25jZSgpYCBjbGF1c2VzIHdlJ3ZlIHdyaXR0ZW4s
IHNpbmNlIHdlIGRpZG4ndCBleHBsaWNpdGx5IHdyaXRlIGBUaW1lcygpYCksIGFuZCB3aWxsIHJl
dHVybiAxMDAsIDIwMCwgYW5kIDMwMCByZXNwZWN0aXZlbHkuCi0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLSAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oMzAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3
aWxsIGJlIGNhbGxlZCBfYXQgbGVhc3QgdHdpY2VfIChHb29nbGUgTW9jayBrbm93cyB0aGlzIGFz
IHdlJ3ZlIHdyaXR0ZW4gdHdvIGBXaWxsT25jZSgpYCBjbGF1c2VzIGFuZCBhIGBXaWxsUmVwZWF0
ZWRseSgpYCB3aGlsZSBoYXZpbmcgbm8gZXhwbGljaXQgYFRpbWVzKClgKSwgd2lsbCByZXR1cm4g
MTAwIHRoZSBmaXJzdCB0aW1lLCAyMDAgdGhlIHNlY29uZCB0aW1lLCBhbmQgMzAwIGZyb20gdGhl
IHRoaXJkIHRpbWUgb24uCi0KLU9mIGNvdXJzZSwgaWYgeW91IGV4cGxpY2l0bHkgd3JpdGUgYSBg
VGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgbm90IHRyeSB0byBpbmZlciB0aGUgY2FyZGluYWxp
dHkgaXRzZWxmLiBXaGF0IGlmIHRoZSBudW1iZXIgeW91IHNwZWNpZmllZCBpcyBsYXJnZXIgdGhh
biB0aGVyZSBhcmUgYFdpbGxPbmNlKClgIGNsYXVzZXM/IFdlbGwsIGFmdGVyIGFsbCBgV2lsbE9u
Y2UoKWBzIGFyZSB1c2VkIHVwLCBHb29nbGUgTW9jayB3aWxsIGRvIHRoZSBfZGVmYXVsdF8gYWN0
aW9uIGZvciB0aGUgZnVuY3Rpb24gZXZlcnkgdGltZSAodW5sZXNzLCBvZiBjb3Vyc2UsIHlvdSBo
YXZlIGEgYFdpbGxSZXBlYXRlZGx5KClgLikuCi0KLVdoYXQgY2FuIHdlIGRvIGluc2lkZSBgV2ls
bE9uY2UoKWAgYmVzaWRlcyBgUmV0dXJuKClgPyBZb3UgY2FuIHJldHVybiBhIHJlZmVyZW5jZSB1
c2luZyBgUmV0dXJuUmVmKHZhcmlhYmxlKWAsIG9yIGludm9rZSBhIHByZS1kZWZpbmVkIGZ1bmN0
aW9uLCBhbW9uZyBbb3RoZXJzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93
aWtpL1YxXzdfQ2hlYXRTaGVldCNBY3Rpb25zKS4KLQotKipJbXBvcnRhbnQgbm90ZToqKiBUaGUg
YEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGFjdGlvbiBjbGF1c2Ugb25s
eSBvbmNlLCBldmVuIHRob3VnaCB0aGUgYWN0aW9uIG1heSBiZSBwZXJmb3JtZWQgbWFueSB0aW1l
cy4gVGhlcmVmb3JlIHlvdSBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgc2lkZSBlZmZlY3RzLiBUaGUg
Zm9sbG93aW5nIG1heSBub3QgZG8gd2hhdCB5b3Ugd2FudDoKLQotYGBgCi1pbnQgbiA9IDEwMDsK
LUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotLlRpbWVzKDQpCi0uV2lsbFJlcGVhdGVkbHko
UmV0dXJuKG4rKykpOwotYGBgCi0KLUluc3RlYWQgb2YgcmV0dXJuaW5nIDEwMCwgMTAxLCAxMDIs
IC4uLiwgY29uc2VjdXRpdmVseSwgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVy
biAxMDAgYXMgYG4rK2AgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gU2ltaWxhcmx5LCBgUmV0dXJu
KG5ldyBGb28pYCB3aWxsIGNyZWF0ZSBhIG5ldyBgRm9vYCBvYmplY3Qgd2hlbiB0aGUgYEVYUEVD
VF9DQUxMKClgIGlzIGV4ZWN1dGVkLCBhbmQgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciBl
dmVyeSB0aW1lLiBJZiB5b3Ugd2FudCB0aGUgc2lkZSBlZmZlY3QgdG8gaGFwcGVuIGV2ZXJ5IHRp
bWUsIHlvdSBuZWVkIHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24sIHdoaWNoIHdlJ2xsIHRlYWNo
IGluIHRoZSBbQ29va0Jvb2tdKFYxXzdfQ29va0Jvb2subWQpLgotCi1UaW1lIGZvciBhbm90aGVy
IHF1aXohIFdoYXQgZG8geW91IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLS5U
aW1lcyg0KQotLldpbGxPbmNlKFJldHVybigxMDApKTsKLWBgYAotCi1PYnZpb3VzbHkgYHR1cnRs
ZS5HZXRZKClgIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQgaWYgeW91
IHRoaW5rIGl0IHdpbGwgcmV0dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEgUmVtZW1i
ZXIgdGhhdCBvbmUgYFdpbGxPbmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVhY2ggdGlt
ZSB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdpbGwgYmUg
dGFrZW4gYWZ0ZXJ3YXJkcy4gU28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0bGUuR2V0
WSgpYCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAwIGZyb20g
dGhlIHNlY29uZCB0aW1lIG9uKiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0IGFjdGlv
biBmb3IgYGludGAgZnVuY3Rpb25zLgotCi0jIyBVc2luZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMg
IyMKLVNvIGZhciB3ZSd2ZSBvbmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZlIGEgc2lu
Z2xlIGV4cGVjdGF0aW9uLiBNb3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0byBzcGVj
aWZ5IGV4cGVjdGF0aW9ucyBvbiBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1heSBiZSBm
cm9tIG11bHRpcGxlIG1vY2sgb2JqZWN0cy4KLQotQnkgZGVmYXVsdCwgd2hlbiBhIG1vY2sgbWV0
aG9kIGlzIGludm9rZWQsIEdvb2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3RhdGlvbnMg
aW4gdGhlICoqcmV2ZXJzZSBvcmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9wIHdoZW4g
YW4gYWN0aXZlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlzIGZvdW5k
ICh5b3UgY2FuIHRoaW5rIG9mIGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRlciBvbmVz
LiIpLiBJZiB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1vcmUgY2Fs
bHMsIHlvdSB3aWxsIGdldCBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBIZXJlJ3Mg
YW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4uCi1FWFBFQ1RfQ0FMTCh0
dXJ0bGUsIEZvcndhcmQoXykpOyAgLy8gIzEKLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgx
MCkpICAvLyAjMgotICAgIC5UaW1lcygyKTsKLWBgYAotCi1JZiBgRm9yd2FyZCgxMClgIGlzIGNh
bGxlZCB0aHJlZSB0aW1lcyBpbiBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBiZSBhbiBl
cnJvciwgYXMgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVlbiBzYXR1
cmF0ZWQuIElmLCBob3dldmVyLCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlzIHJlcGxh
Y2VkIGJ5IGBGb3J3YXJkKDIwKWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAjMSB3aWxs
IGJlIHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbi4KLQotKipTaWRlIG5vdGU6KiogV2h5IGRvZXMg
R29vZ2xlIE1vY2sgc2VhcmNoIGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIgb2Yg
dGhlIGV4cGVjdGF0aW9ucz8gVGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEgdXNlciB0
byBzZXQgdXAgdGhlIGRlZmF1bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3QncyBjb25z
dHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVuIGN1c3Rv
bWl6ZSB0aGUgbW9jayBieSB3cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGluIHRo
ZSB0ZXN0IGJvZHkuIFNvLCBpZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRoZSBzYW1l
IG1ldGhvZCwgeW91IHdhbnQgdG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmljIG1hdGNo
ZXJzICoqYWZ0ZXIqKiB0aGUgb3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUgd291bGQg
YmUgc2hhZG93ZWQgYnkgdGhlIG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRlciBpdC4K
LQotIyMgT3JkZXJlZCB2cyBVbm9yZGVyZWQgQ2FsbHMgIyMKLUJ5IGRlZmF1bHQsIGFuIGV4cGVj
dGF0aW9uIGNhbiBtYXRjaCBhIGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBlY3RhdGlv
biBoYXNuJ3QgYmVlbiBzYXRpc2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMgZG9uJ3Qg
aGF2ZSB0byBvY2N1ciBpbiB0aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3BlY2lmaWVk
LgotCi1Tb21ldGltZXMsIHlvdSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzIHRvIG9j
Y3VyIGluIGEgc3RyaWN0IG9yZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBpcyBlYXN5
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KLVRFU1QoRm9vVGVzdCwg
RHJhd3NMaW5lU2VnbWVudCkgewotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0K
LSAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSk7Ci0gICAgRVhQRUNUX0NBTEwodHVy
dGxlLCBGb3J3YXJkKDEwMCkpOwotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAoKSk7Ci0g
IH0KLSAgRm9vKCk7Ci19Ci1gYGAKLQotQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5cGUgYElu
U2VxdWVuY2VgLCBhbGwgZXhwZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGludG8gYSBf
c2VxdWVuY2VfIGFuZCBoYXZlIHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3ZSBhcmUg
anVzdCByZWx5aW5nIG9uIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0aGlzIG9i
amVjdCB0byBkbyB0aGUgYWN0dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJlbGV2YW50
LgotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRoZSB0aHJl
ZSBleHBlY3RlZCBmdW5jdGlvbnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEgY2FsbCBp
cyBtYWRlIG91dC1vZi1vcmRlciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotKFdoYXQgaWYgeW91
IGNhcmUgYWJvdXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxzLCBidXQg
bm90IGFsbCBvZiB0aGVtPyBDYW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRpYWwgb3Jk
ZXI/IFRoZSBhbnN3ZXIgaXMgLi4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRoZSBkZXRh
aWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0Nvb2tCb29rXShWMV83X0Nvb2tCb29rI0V4cGVjdGlu
Z19QYXJ0aWFsbHlfT3JkZXJlZF9DYWxscy5tZCkuKQotCi0jIyBBbGwgRXhwZWN0YXRpb25zIEFy
ZSBTdGlja3kgKFVubGVzcyBTYWlkIE90aGVyd2lzZSkgIyMKLU5vdyBsZXQncyBkbyBhIHF1aWNr
IHF1aXogdG8gc2VlIGhvdyB3ZWxsIHlvdSBjYW4gdXNlIHRoaXMgbW9jayBzdHVmZiBhbHJlYWR5
LiBIb3cgd291bGQgeW91IHRlc3QgdGhhdCB0aGUgdHVydGxlIGlzIGFza2VkIHRvIGdvIHRvIHRo
ZSBvcmlnaW4gX2V4YWN0bHkgdHdpY2VfICh5b3Ugd2FudCB0byBpZ25vcmUgYW55IG90aGVyIGlu
c3RydWN0aW9ucyBpdCByZWNlaXZlcyk/Ci0KLUFmdGVyIHlvdSd2ZSBjb21lIHVwIHdpdGggeW91
ciBhbnN3ZXIsIHRha2UgYSBsb29rIGF0IG91cnMgYW5kIGNvbXBhcmUgbm90ZXMgKHNvbHZlIGl0
IHlvdXJzZWxmIGZpcnN0IC0gZG9uJ3QgY2hlYXQhKToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdvVG8oXywgXykpICAvLyAjMQotICAgIC5UaW1l
cyhBbnlOdW1iZXIoKSk7Ci1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdvVG8oMCwgMCkpICAvLyAjMgot
ICAgIC5UaW1lcygyKTsKLWBgYAotCi1TdXBwb3NlIGB0dXJ0bGUuR29UbygwLCAwKWAgaXMgY2Fs
bGVkIHRocmVlIHRpbWVzLiBJbiB0aGUgdGhpcmQgdGltZSwgR29vZ2xlIE1vY2sgd2lsbCBzZWUg
dGhhdCB0aGUgYXJndW1lbnRzIG1hdGNoIGV4cGVjdGF0aW9uICMyIChyZW1lbWJlciB0aGF0IHdl
IGFsd2F5cyBwaWNrIHRoZSBsYXN0IG1hdGNoaW5nIGV4cGVjdGF0aW9uKS4gTm93LCBzaW5jZSB3
ZSBzYWlkIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG9ubHkgdHdvIHN1Y2ggY2FsbHMsIEdvb2dsZSBN
b2NrIHdpbGwgcmVwb3J0IGFuIGVycm9yIGltbWVkaWF0ZWx5LiBUaGlzIGlzIGJhc2ljYWxseSB3
aGF0IHdlJ3ZlIHRvbGQgeW91IGluIHRoZSAiVXNpbmcgTXVsdGlwbGUgRXhwZWN0YXRpb25zIiBz
ZWN0aW9uIGFib3ZlLgotCi1UaGlzIGV4YW1wbGUgc2hvd3MgdGhhdCAqKmV4cGVjdGF0aW9ucyBp
biBHb29nbGUgTW9jayBhcmUgInN0aWNreSIgYnkgZGVmYXVsdCoqLCBpbiB0aGUgc2Vuc2UgdGhh
dCB0aGV5IHJlbWFpbiBhY3RpdmUgZXZlbiBhZnRlciB3ZSBoYXZlIHJlYWNoZWQgdGhlaXIgaW52
b2NhdGlvbiB1cHBlciBib3VuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHJ1bGUgdG8gcmVtZW1i
ZXIsIGFzIGl0IGFmZmVjdHMgdGhlIG1lYW5pbmcgb2YgdGhlIHNwZWMsIGFuZCBpcyAqKmRpZmZl
cmVudCoqIHRvIGhvdyBpdCdzIGRvbmUgaW4gbWFueSBvdGhlciBtb2NraW5nIGZyYW1ld29ya3Mg
KFdoeSdkIHdlIGRvIHRoYXQ/IEJlY2F1c2Ugd2UgdGhpbmsgb3VyIHJ1bGUgbWFrZXMgdGhlIGNv
bW1vbiBjYXNlcyBlYXNpZXIgdG8gZXhwcmVzcyBhbmQgdW5kZXJzdGFuZC4pLgotCi1TaW1wbGU/
IExldCdzIHNlZSBpZiB5b3UndmUgcmVhbGx5IHVuZGVyc3Rvb2QgaXQ6IHdoYXQgZG9lcyB0aGUg
Zm9sbG93aW5nIGNvZGUgc2F5PwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4u
Ci1mb3IgKGludCBpID0gbjsgaSA+IDA7IGktLSkgewotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdl
dFgoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpOwotfQotYGBgCi0KLUlmIHlvdSB0
aGluayBpdCBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgYmUgY2FsbGVkIGBuYCB0aW1l
cyBhbmQgd2lsbCByZXR1cm4gMTAsIDIwLCAzMCwgLi4uLCBjb25zZWN1dGl2ZWx5LCB0aGluayB0
d2ljZSEgVGhlIHByb2JsZW0gaXMgdGhhdCwgYXMgd2Ugc2FpZCwgZXhwZWN0YXRpb25zIGFyZSBz
dGlja3kuIFNvLCB0aGUgc2Vjb25kIHRpbWUgYHR1cnRsZS5HZXRYKClgIGlzIGNhbGxlZCwgdGhl
IGxhc3QgKGxhdGVzdCkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCB3aWxsIG1hdGNoLCBhbmQg
d2lsbCBpbW1lZGlhdGVseSBsZWFkIHRvIGFuICJ1cHBlciBib3VuZCBleGNlZWRlZCIgZXJyb3Ig
LSB0aGlzIHBpZWNlIG9mIGNvZGUgaXMgbm90IHZlcnkgdXNlZnVsIQotCi1PbmUgY29ycmVjdCB3
YXkgb2Ygc2F5aW5nIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAs
IC4uLiwgaXMgdG8gZXhwbGljaXRseSBzYXkgdGhhdCB0aGUgZXhwZWN0YXRpb25zIGFyZSBfbm90
XyBzdGlja3kuIEluIG90aGVyIHdvcmRzLCB0aGV5IHNob3VsZCBfcmV0aXJlXyBhcyBzb29uIGFz
IHRoZXkgYXJlIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4u
LgotZm9yIChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBH
ZXRYKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxMCppKSkKLSAgICAuUmV0aXJlc09uU2F0dXJh
dGlvbigpOwotfQotYGBgCi0KLUFuZCwgdGhlcmUncyBhIGJldHRlciB3YXkgdG8gZG8gaXQ6IGlu
IHRoaXMgY2FzZSwgd2UgZXhwZWN0IHRoZSBjYWxscyB0byBvY2N1ciBpbiBhIHNwZWNpZmljIG9y
ZGVyLCBhbmQgd2UgbGluZSB1cCB0aGUgYWN0aW9ucyB0byBtYXRjaCB0aGUgb3JkZXIuIFNpbmNl
IHRoZSBvcmRlciBpcyBpbXBvcnRhbnQgaGVyZSwgd2Ugc2hvdWxkIG1ha2UgaXQgZXhwbGljaXQg
dXNpbmcgYSBzZXF1ZW5jZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11
c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotewotICBJblNlcXVlbmNlIHM7Ci0KLSAgZm9y
IChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRY
KCkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCi0gICAgICAgIC5SZXRpcmVzT25T
YXR1cmF0aW9uKCk7Ci0gIH0KLX0KLWBgYAotCi1CeSB0aGUgd2F5LCB0aGUgb3RoZXIgc2l0dWF0
aW9uIHdoZXJlIGFuIGV4cGVjdGF0aW9uIG1heSBfbm90XyBiZSBzdGlja3kgaXMgd2hlbiBpdCdz
IGluIGEgc2VxdWVuY2UgLSBhcyBzb29uIGFzIGFub3RoZXIgZXhwZWN0YXRpb24gdGhhdCBjb21l
cyBhZnRlciBpdCBpbiB0aGUgc2VxdWVuY2UgaGFzIGJlZW4gdXNlZCwgaXQgYXV0b21hdGljYWxs
eSByZXRpcmVzIChhbmQgd2lsbCBuZXZlciBiZSB1c2VkIHRvIG1hdGNoIGFueSBjYWxsKS4KLQot
IyMgVW5pbnRlcmVzdGluZyBDYWxscyAjIwotQSBtb2NrIG9iamVjdCBtYXkgaGF2ZSBtYW55IG1l
dGhvZHMsIGFuZCBub3QgYWxsIG9mIHRoZW0gYXJlIHRoYXQgaW50ZXJlc3RpbmcuIEZvciBleGFt
cGxlLCBpbiBzb21lIHRlc3RzIHdlIG1heSBub3QgY2FyZSBhYm91dCBob3cgbWFueSB0aW1lcyBg
R2V0WCgpYCBhbmQgYEdldFkoKWAgZ2V0IGNhbGxlZC4KLQotSW4gR29vZ2xlIE1vY2ssIGlmIHlv
dSBhcmUgbm90IGludGVyZXN0ZWQgaW4gYSBtZXRob2QsIGp1c3QgZG9uJ3Qgc2F5IGFueXRoaW5n
IGFib3V0IGl0LiBJZiBhIGNhbGwgdG8gdGhpcyBtZXRob2Qgb2NjdXJzLCB5b3UnbGwgc2VlIGEg
d2FybmluZyBpbiB0aGUgdGVzdCBvdXRwdXQsIGJ1dCBpdCB3b24ndCBiZSBhIGZhaWx1cmUuCi0K
LSMgV2hhdCBOb3c/ICMKLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgZW5vdWdoIGFi
b3V0IEdvb2dsZSBNb2NrIHRvIHN0YXJ0IHVzaW5nIGl0LiBOb3csIHlvdSBtaWdodCB3YW50IHRv
IGpvaW4gdGhlIFtnb29nbGVtb2NrXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29v
Z2xlbW9jaykgZGlzY3Vzc2lvbiBncm91cCBhbmQgYWN0dWFsbHkgd3JpdGUgc29tZSB0ZXN0cyB1
c2luZyBHb29nbGUgTW9jayAtIGl0IHdpbGwgYmUgZnVuLiBIZXksIGl0IG1heSBldmVuIGJlIGFk
ZGljdGl2ZSAtIHlvdSd2ZSBiZWVuIHdhcm5lZC4KLQotVGhlbiwgaWYgeW91IGZlZWwgbGlrZSBp
bmNyZWFzaW5nIHlvdXIgbW9jayBxdW90aWVudCwgeW91IHNob3VsZCBtb3ZlIG9uIHRvIHRoZSBb
Q29va0Jvb2tdKFYxXzdfQ29va0Jvb2subWQpLiBZb3UgY2FuIGxlYXJuIG1hbnkgYWR2YW5jZWQg
ZmVhdHVyZXMgb2YgR29vZ2xlIE1vY2sgdGhlcmUgLS0gYW5kIGFkdmFuY2UgeW91ciBsZXZlbCBv
ZiBlbmpveW1lbnQgYW5kIHRlc3RpbmcgYmxpc3MuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0
aW9ucy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMu
bWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjEyMzNhYTI1NTA0ZmNhNjNkYjEz
YmYxYmU1OGUyZjVjMzk0ZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5t
ZAorKysgL2Rldi9udWxsCkBAIC0xLDYyOCArMCwwIEBACi0KLQotUGxlYXNlIHNlbmQgeW91ciBx
dWVzdGlvbnMgdG8gdGhlCi1bZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dy
b3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24KLWdyb3VwLiBJZiB5b3UgbmVlZCBoZWxwIHdpdGgg
Y29tcGlsZXIgZXJyb3JzLCBtYWtlIHN1cmUgeW91IGhhdmUKLXRyaWVkIFtHb29nbGUgTW9jayBE
b2N0b3JdKCNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNlX2hvcnJpYmxl
X3RlbXBsYXRlX2Vycm9yLm1kKSBmaXJzdC4KLQotIyMgV2hlbiBJIGNhbGwgYSBtZXRob2Qgb24g
bXkgbW9jayBvYmplY3QsIHRoZSBtZXRob2QgZm9yIHRoZSByZWFsIG9iamVjdCBpcyBpbnZva2Vk
IGluc3RlYWQuICBXaGF0J3MgdGhlIHByb2JsZW0/ICMjCi0KLUluIG9yZGVyIGZvciBhIG1ldGhv
ZCB0byBiZSBtb2NrZWQsIGl0IG11c3QgYmUgX3ZpcnR1YWxfLCB1bmxlc3MgeW91IHVzZSB0aGUg
W2hpZ2gtcGVyZiBkZXBlbmRlbmN5IGluamVjdGlvbiB0ZWNobmlxdWVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNNb2NraW5nX05vbnZpcnR1
YWxfTWV0aG9kcykuCi0KLSMjIEkgd3JvdGUgc29tZSBtYXRjaGVycy4gIEFmdGVyIEkgdXBncmFk
ZWQgdG8gYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgdGhleSBubyBsb25nZXIgY29tcGls
ZS4gIFdoYXQncyBnb2luZyBvbj8gIyMKLQotQWZ0ZXIgdmVyc2lvbiAxLjQuMCBvZiBHb29nbGUg
TW9jayB3YXMgcmVsZWFzZWQsIHdlIGhhZCBhbiBpZGVhIG9uIGhvdwotdG8gbWFrZSBpdCBlYXNp
ZXIgdG8gd3JpdGUgbWF0Y2hlcnMgdGhhdCBjYW4gZ2VuZXJhdGUgaW5mb3JtYXRpdmUKLW1lc3Nh
Z2VzIGVmZmljaWVudGx5LiAgV2UgZXhwZXJpbWVudGVkIHdpdGggdGhpcyBpZGVhIGFuZCBsaWtl
ZCB3aGF0Ci13ZSBzYXcuICBUaGVyZWZvcmUgd2UgZGVjaWRlZCB0byBpbXBsZW1lbnQgaXQuCi0K
LVVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgaGF2ZSBkZWZpbmVkIHlvdXIg
b3duIG1hdGNoZXJzCi1ieSBpbXBsZW1lbnRpbmcgYE1hdGNoZXJJbnRlcmZhY2VgIG9yIHVzaW5n
IGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLAoteW91ciBkZWZpbml0aW9ucyB3aWxsIG5vIGxv
bmdlciBjb21waWxlLiAgTWF0Y2hlcnMgZGVmaW5lZCB1c2luZyB0aGUKLWBNQVRDSEVSKmAgZmFt
aWx5IG9mIG1hY3JvcyBhcmUgbm90IGFmZmVjdGVkLgotCi1Tb3JyeSBmb3IgdGhlIGhhc3NsZSBp
ZiB5b3VyIG1hdGNoZXJzIGFyZSBhZmZlY3RlZC4gIFdlIGJlbGlldmUgaXQncwotaW4gZXZlcnlv
bmUncyBsb25nLXRlcm0gaW50ZXJlc3QgdG8gbWFrZSB0aGlzIGNoYW5nZSBzb29uZXIgdGhhbgot
bGF0ZXIuICBGb3J0dW5hdGVseSwgaXQncyB1c3VhbGx5IG5vdCBoYXJkIHRvIG1pZ3JhdGUgYW4g
ZXhpc3RpbmcKLW1hdGNoZXIgdG8gdGhlIG5ldyBBUEkuICBIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0
byBkbzoKLQotSWYgeW91IHdyb3RlIHlvdXIgbWF0Y2hlciBsaWtlIHRoaXM6Ci1gYGAKLS8vIE9s
ZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0Ci0v
LyBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLS4uLgot
Y2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBl
PiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVl
KSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0
dXJuIHZhbHVlLkdldEZvbygpID4gNTsKLSAgfQotICAuLi4KLX07Ci1gYGAKLQoteW91J2xsIG5l
ZWQgdG8gY2hhbmdlIGl0IHRvOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQg
d29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYXRj
aGVySW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4u
Ci1jbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5
cGU+IHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15
VHlwZSB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBt
YXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19Owot
YGBgCi0oaS5lLiByZW5hbWUgYE1hdGNoZXMoKWAgdG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQg
Z2l2ZSBpdCBhIHNlY29uZAotYXJndW1lbnQgb2YgdHlwZSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcipg
LikKLQotSWYgeW91IHdlcmUgYWxzbyB1c2luZyBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8g
aW1wcm92ZSB0aGUgbWF0Y2hlcgotbWVzc2FnZToKLWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5p
dGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXN0ZXN0Ci0vLyBHb29nbGUgTW9jay4K
LXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLS4uLgotY2xhc3MgTXlXb25kZXJm
dWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgot
ICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEZv
bygpID4gNTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhNeVR5
cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0IHsKLSAgICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGluZm9ybWF0aW9u
IHRvIG9zIHRvIGhlbHAKLSAgICAvLyBhIHVzZXIgdW5kZXJzdGFuZCB3aHkgdmFsdWUgbWF0Y2hl
cyAob3IgZG9lc24ndCBtYXRjaCkuCi0gICAgKm9zIDw8ICJ0aGUgRm9vIHByb3BlcnR5IGlzICIg
PDwgdmFsdWUuR2V0Rm9vKCk7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLXlvdSBzaG91bGQgbW92
ZSB0aGUgbG9naWMgb2YgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIGludG8KLWBNYXRjaEFuZEV4
cGxhaW4oKWAsIHVzaW5nIHRoZSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcmAgYXJndW1lbnQgd2hlcmUK
LXRoZSBgOjpzdGQ6Om9zdHJlYW1gIHdhcyB1c2VkOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZp
bml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0
ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExp
c3RlbmVyOwotLi4uCi1jbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlcklu
dGVyZmFjZTxNeVR5cGU+IHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hB
bmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEZvbyBwcm9wZXJ0eSBp
cyAiIDw8IHZhbHVlLkdldEZvbygpOwotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0g
IH0KLSAgLi4uCi19OwotYGBgCi0KLUlmIHlvdXIgbWF0Y2hlciBpcyBkZWZpbmVkIHVzaW5nIGBN
YWtlUG9seW1vcnBoaWNNYXRjaGVyKClgOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRN
YXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBj
b25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJu
IHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19OwotLi4uIE1ha2VQb2x5bW9ycGhp
Y01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCi1gYGAKLQoteW91IHNob3VsZCByZW5hbWUg
dGhlIGBNYXRjaGVzKClgIG1ldGhvZCB0byBgTWF0Y2hBbmRFeHBsYWluKClgIGFuZAotYWRkIGEg
YE1hdGNoUmVzdWx0TGlzdGVuZXIqYCBhcmd1bWVudCAodGhlIHNhbWUgYXMgd2hhdCB5b3UgbmVl
ZCB0byBkbwotZm9yIG1hdGNoZXJzIGRlZmluZWQgYnkgaW1wbGVtZW50aW5nIGBNYXRjaGVySW50
ZXJmYWNlYCk6Ci1gYGAKLS8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRo
IHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhp
Y01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci0uLi4KLWNs
YXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1hdGNoQW5kRXhw
bGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1h
dGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19Owot
Li4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCi1gYGAKLQot
SWYgeW91ciBwb2x5bW9ycGhpYyBtYXRjaGVyIHVzZXMgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClg
IGZvciBiZXR0ZXIKLWZhaWx1cmUgbWVzc2FnZXM6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmlu
aXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0Ci0vLyBHb29nbGUgTW9jay4K
LXVzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hlcjsKLS4uLgotY2xhc3MgTXlH
cmVhdE1hdGNoZXIgewotIHB1YmxpYzoKLSAgLi4uCi0gIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFs
dWUpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICBy
ZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsKLSAgfQotICAuLi4KLX07Ci12b2lkIEV4cGxhaW5N
YXRjaFJlc3VsdFRvKGNvbnN0IE15R3JlYXRNYXRjaGVyJiBtYXRjaGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDo6
c3RkOjpvc3RyZWFtKiBvcykgewotICAvLyBQcmludHMgc29tZSBoZWxwZnVsIGluZm9ybWF0aW9u
IHRvIG9zIHRvIGhlbHAKLSAgLy8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMg
KG9yIGRvZXNuJ3QgbWF0Y2gpLgotICAqb3MgPDwgInRoZSBCYXIgcHJvcGVydHkgaXMgIiA8PCB2
YWx1ZS5HZXRCYXIoKTsKLX0KLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRj
aGVyKCkpIC4uLgotYGBgCi0KLXlvdSdsbCBuZWVkIHRvIG1vdmUgdGhlIGxvZ2ljIGluc2lkZSBg
RXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8KLWBNYXRjaEFuZEV4cGxhaW4oKWA6Ci1gYGAKLS8v
IE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xl
IE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci11c2luZyA6
OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVy
IHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgKmxpc3Rl
bmVyIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7Ci0gICAgcmV0
dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19OwotLi4uIE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4uCi1gYGAKLQotRm9yIG1vcmUgaW5mb3Jt
YXRpb24sIHlvdSBjYW4gcmVhZCB0aGVzZQotW3R3b10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZW1vY2svd2lraS9WMV83X0Nvb2tCb29rI1dyaXRpbmdfTmV3X01vbm9tb3JwaGljX01h
dGNoZXJzKQotW3JlY2lwZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dp
a2kvVjFfN19Db29rQm9vayNXcml0aW5nX05ld19Qb2x5bW9ycGhpY19NYXRjaGVycykKLWZyb20g
dGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKLWFyZSB3ZWxjb21lIHRvIHBvc3QgcXVlc3Rp
b25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdQotbmVlZCBhbnkgaGVs
cC4KLQotIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywgZG8gSSBoYXZlIHRvIHVzZSBHb29nbGUg
VGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJIGhhdmUgbXkgZmF2b3JpdGUgdGVzdGlu
ZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dpdGNoLiAjIwotCi1Hb29nbGUgTW9jayB3
b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBUZXN0LiAgSG93ZXZlciwgaXQncyBlYXN5
Ci10byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1ld29yayBvZiB5
b3VyIGNob2ljZS4KLVtIZXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93
aWtpL1YxXzdfRm9yRHVtbWllcyNVc2luZ19Hb29nbGVfTW9ja193aXRoX0FueV9UZXN0aW5nX0Zy
YW1ld29yaykgaXMgaG93LgotCi0jIyBIb3cgYW0gSSBzdXBwb3NlZCB0byBtYWtlIHNlbnNlIG9m
IHRoZXNlIGhvcnJpYmxlIHRlbXBsYXRlIGVycm9ycz8gIyMKLQotSWYgeW91IGFyZSBjb25mdXNl
ZCBieSB0aGUgY29tcGlsZXIgZXJyb3JzIGdjYyB0aHJldyBhdCB5b3UsCi10cnkgY29uc3VsdGlu
ZyB0aGUgX0dvb2dsZSBNb2NrIERvY3Rvcl8gdG9vbCBmaXJzdC4gIFdoYXQgaXQgZG9lcyBpcyB0
bwotc2NhbiBzdGRpbiBmb3IgZ2NjIGVycm9yIG1lc3NhZ2VzLCBhbmQgc3BpdCBvdXQgZGlhZ25v
c2VzIG9uIHRoZQotcHJvYmxlbXMgKHdlIGNhbGwgdGhlbSBkaXNlYXNlcykgeW91ciBjb2RlIGhh
cy4KLQotVG8gImluc3RhbGwiLCBydW4gY29tbWFuZDoKLWBgYAotYWxpYXMgZ21kPSc8cGF0aCB0
byBnb29nbGVtb2NrPi9zY3JpcHRzL2dtb2NrX2RvY3Rvci5weScKLWBgYAotCi1UbyB1c2UgaXQs
IGRvOgotYGBgCi08eW91ci1mYXZvcml0ZS1idWlsZC1jb21tYW5kPiA8eW91ci10ZXN0PiAyPiYx
IHwgZ21kCi1gYGAKLQotRm9yIGV4YW1wbGU6Ci1gYGAKLW1ha2UgbXlfdGVzdCAyPiYxIHwgZ21k
Ci1gYGAKLQotT3IgeW91IGNhbiBydW4gYGdtZGAgYW5kIGNvcHktbi1wYXN0ZSBnY2MncyBlcnJv
ciBtZXNzYWdlcyB0byBpdC4KLQotIyMgQ2FuIEkgbW9jayBhIHZhcmlhZGljIGZ1bmN0aW9uPyAj
IwotCi1Zb3UgY2Fubm90IG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbiAoaS5lLiBhIGZ1bmN0aW9u
IHRha2luZyBlbGxpcHNpcwotKGAuLi5gKSBhcmd1bWVudHMpIGRpcmVjdGx5IGluIEdvb2dsZSBN
b2NrLgotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IGluIGdlbmVyYWwsIHRoZXJlIGlzIF9ubyB3YXlf
IGZvciBhIG1vY2sgb2JqZWN0IHRvCi1rbm93IGhvdyBtYW55IGFyZ3VtZW50cyBhcmUgcGFzc2Vk
IHRvIHRoZSB2YXJpYWRpYyBtZXRob2QsIGFuZCB3aGF0Ci10aGUgYXJndW1lbnRzJyB0eXBlcyBh
cmUuICBPbmx5IHRoZSBfYXV0aG9yIG9mIHRoZSBiYXNlIGNsYXNzXyBrbm93cwotdGhlIHByb3Rv
Y29sLCBhbmQgd2UgY2Fubm90IGxvb2sgaW50byBoaXMgaGVhZC4KLQotVGhlcmVmb3JlLCB0byBt
b2NrIHN1Y2ggYSBmdW5jdGlvbiwgdGhlIF91c2VyXyBtdXN0IHRlYWNoIHRoZSBtb2NrCi1vYmpl
Y3QgaG93IHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYW5kIHRoZWlyIHR5
cGVzLiAgT25lCi13YXkgdG8gZG8gaXQgaXMgdG8gcHJvdmlkZSBvdmVybG9hZGVkIHZlcnNpb25z
IG9mIHRoZSBmdW5jdGlvbi4KLQotRWxsaXBzaXMgYXJndW1lbnRzIGFyZSBpbmhlcml0ZWQgZnJv
bSBDIGFuZCBub3QgcmVhbGx5IGEgQysrIGZlYXR1cmUuCi1UaGV5IGFyZSB1bnNhZmUgdG8gdXNl
IGFuZCBkb24ndCB3b3JrIHdpdGggYXJndW1lbnRzIHRoYXQgaGF2ZQotY29uc3RydWN0b3JzIG9y
IGRlc3RydWN0b3JzLiAgVGhlcmVmb3JlIHdlIHJlY29tbWVuZCB0byBhdm9pZCB0aGVtIGluCi1D
KysgYXMgbXVjaCBhcyBwb3NzaWJsZS4KLQotIyMgTVNWQyBnaXZlcyBtZSB3YXJuaW5nIEM0MzAx
IG9yIEM0MzczIHdoZW4gSSBkZWZpbmUgYSBtb2NrIG1ldGhvZCB3aXRoIGEgY29uc3QgcGFyYW1l
dGVyLiAgV2h5PyAjIwotCi1JZiB5b3UgY29tcGlsZSB0aGlzIHVzaW5nIE1pY3Jvc29mdCBWaXN1
YWwgQysrIDIwMDUgU1AxOgotYGBgCi1jbGFzcyBGb28gewotICAuLi4KLSAgdmlydHVhbCB2b2lk
IEJhcihjb25zdCBpbnQgaSkgPSAwOwotfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
ewotICAuLi4KLSAgTU9DS19NRVRIT0QxKEJhciwgdm9pZChjb25zdCBpbnQgaSkpOwotfTsKLWBg
YAotWW91IG1heSBnZXQgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgotYGBgCi13YXJuaW5nIEM0MzAx
OiAnTW9ja0Zvbzo6QmFyJzogb3ZlcnJpZGluZyB2aXJ0dWFsIGZ1bmN0aW9uIG9ubHkgZGlmZmVy
cyBmcm9tICdGb286OkJhcicgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVyCi1gYGAKLQotVGhp
cyBpcyBhIE1TVkMgYnVnLiAgVGhlIHNhbWUgY29kZSBjb21waWxlcyBmaW5lIHdpdGggZ2NjICxm
b3IKLWV4YW1wbGUuICBJZiB5b3UgdXNlIFZpc3VhbCBDKysgMjAwOCBTUDEsIHlvdSB3b3VsZCBn
ZXQgdGhlIHdhcm5pbmc6Ci1gYGAKLXdhcm5pbmcgQzQzNzM6ICdNb2NrRm9vOjpCYXInOiB2aXJ0
dWFsIGZ1bmN0aW9uIG92ZXJyaWRlcyAnRm9vOjpCYXInLCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0
aGUgY29tcGlsZXIgZGlkIG5vdCBvdmVycmlkZSB3aGVuIHBhcmFtZXRlcnMgb25seSBkaWZmZXJl
ZCBieSBjb25zdC92b2xhdGlsZSBxdWFsaWZpZXJzCi1gYGAKLQotSW4gQysrLCBpZiB5b3UgX2Rl
Y2xhcmVfIGEgZnVuY3Rpb24gd2l0aCBhIGBjb25zdGAgcGFyYW1ldGVyLCB0aGUKLWBjb25zdGAg
bW9kaWZpZXIgaXMgX2lnbm9yZWRfLiAgVGhlcmVmb3JlLCB0aGUgYEZvb2AgYmFzZSBjbGFzcyBh
Ym92ZQotaXMgZXF1aXZhbGVudCB0bzoKLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1
YWwgdm9pZCBCYXIoaW50IGkpID0gMDsgIC8vIGludCBvciBjb25zdCBpbnQ/ICBNYWtlcyBubyBk
aWZmZXJlbmNlLgotfTsKLWBgYAotCi1JbiBmYWN0LCB5b3UgY2FuIF9kZWNsYXJlXyBCYXIoKSB3
aXRoIGFuIGBpbnRgIHBhcmFtZXRlciwgYW5kIF9kZWZpbmVfCi1pdCB3aXRoIGEgYGNvbnN0IGlu
dGAgcGFyYW1ldGVyLiAgVGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgbWF0Y2ggdGhlbQotdXAuCi0K
LVNpbmNlIG1ha2luZyBhIHBhcmFtZXRlciBgY29uc3RgIGlzIG1lYW5pbmdsZXNzIGluIHRoZSBt
ZXRob2QKLV9kZWNsYXJhdGlvbl8sIHdlIHJlY29tbWVuZCB0byByZW1vdmUgaXQgaW4gYm90aCBg
Rm9vYCBhbmQgYE1vY2tGb29gLgotVGhhdCBzaG91bGQgd29ya2Fyb3VuZCB0aGUgVkMgYnVnLgot
Ci1Ob3RlIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJvdXQgdGhlIF90b3AtbGV2ZWxfIGBjb25zdGAg
bW9kaWZpZXIgaGVyZS4KLUlmIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgaXMgcGFzc2VkIGJ5IHBv
aW50ZXIgb3IgcmVmZXJlbmNlLCBkZWNsYXJpbmcKLXRoZSBfcG9pbnRlZV8gb3IgX3JlZmVyZWVf
IGFzIGBjb25zdGAgaXMgc3RpbGwgbWVhbmluZ2Z1bC4gIEZvcgotZXhhbXBsZSwgdGhlIGZvbGxv
d2luZyB0d28gZGVjbGFyYXRpb25zIGFyZSBfbm90XyBlcXVpdmFsZW50OgotYGBgCi12b2lkIEJh
cihpbnQqIHApOyAgICAgICAgLy8gTmVpdGhlciBwIG5vciAqcCBpcyBjb25zdC4KLXZvaWQgQmFy
KGNvbnN0IGludCogcCk7ICAvLyBwIGlzIG5vdCBjb25zdCwgYnV0ICpwIGlzLgotYGBgCi0KLSMj
IEkgaGF2ZSBhIGh1Z2UgbW9jayBjbGFzcywgYW5kIE1pY3Jvc29mdCBWaXN1YWwgQysrIHJ1bnMg
b3V0IG9mIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBpdC4gIFdoYXQgY2FuIEkgZG8/ICMjCi0KLVdl
J3ZlIG5vdGljZWQgdGhhdCB3aGVuIHRoZSBgL2NscmAgY29tcGlsZXIgZmxhZyBpcyB1c2VkLCBW
aXN1YWwgQysrCi11c2VzIDV+NiB0aW1lcyBhcyBtdWNoIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBh
IG1vY2sgY2xhc3MuICBXZSBzdWdnZXN0Ci10byBhdm9pZCBgL2NscmAgd2hlbiBjb21waWxpbmcg
bmF0aXZlIEMrKyBtb2Nrcy4KLQotIyMgSSBjYW4ndCBmaWd1cmUgb3V0IHdoeSBHb29nbGUgTW9j
ayB0aGlua3MgbXkgZXhwZWN0YXRpb25zIGFyZSBub3Qgc2F0aXNmaWVkLiAgV2hhdCBzaG91bGQg
SSBkbz8gIyMKLQotWW91IG1pZ2h0IHdhbnQgdG8gcnVuIHlvdXIgdGVzdCB3aXRoCi1gLS1nbW9j
a192ZXJib3NlPWluZm9gLiAgVGhpcyBmbGFnIGxldHMgR29vZ2xlIE1vY2sgcHJpbnQgYSB0cmFj
ZQotb2YgZXZlcnkgbW9jayBmdW5jdGlvbiBjYWxsIGl0IHJlY2VpdmVzLiAgQnkgc3R1ZHlpbmcg
dGhlIHRyYWNlLAoteW91J2xsIGdhaW4gaW5zaWdodHMgb24gd2h5IHRoZSBleHBlY3RhdGlvbnMg
eW91IHNldCBhcmUgbm90IG1ldC4KLQotIyMgSG93IGNhbiBJIGFzc2VydCB0aGF0IGEgZnVuY3Rp
b24gaXMgTkVWRVIgY2FsbGVkPyAjIwotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQot
ICAgIC5UaW1lcygwKTsKLWBgYAotCi0jIyBJIGhhdmUgYSBmYWlsZWQgdGVzdCB3aGVyZSBHb29n
bGUgTW9jayB0ZWxscyBtZSBUV0lDRSB0aGF0IGEgcGFydGljdWxhciBleHBlY3RhdGlvbiBpcyBu
b3Qgc2F0aXNmaWVkLiAgSXNuJ3QgdGhpcyByZWR1bmRhbnQ/ICMjCi0KLVdoZW4gR29vZ2xlIE1v
Y2sgZGV0ZWN0cyBhIGZhaWx1cmUsIGl0IHByaW50cyByZWxldmFudCBpbmZvcm1hdGlvbgotKHRo
ZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cywgdGhlIHN0YXRlIG9mIHJlbGV2YW50IGV4cGVjdGF0
aW9ucywgYW5kCi1ldGMpIHRvIGhlbHAgdGhlIHVzZXIgZGVidWcuICBJZiBhbm90aGVyIGZhaWx1
cmUgaXMgZGV0ZWN0ZWQsIEdvb2dsZQotTW9jayB3aWxsIGRvIHRoZSBzYW1lLCBpbmNsdWRpbmcg
cHJpbnRpbmcgdGhlIHN0YXRlIG9mIHJlbGV2YW50Ci1leHBlY3RhdGlvbnMuCi0KLVNvbWV0aW1l
cyBhbiBleHBlY3RhdGlvbidzIHN0YXRlIGRpZG4ndCBjaGFuZ2UgYmV0d2VlbiB0d28gZmFpbHVy
ZXMsCi1hbmQgeW91J2xsIHNlZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RhdGUgdHdp
Y2UuICBUaGV5IGFyZQotaG93ZXZlciBfbm90XyByZWR1bmRhbnQsIGFzIHRoZXkgcmVmZXIgdG8g
X2RpZmZlcmVudCBwb2ludHMgaW4gdGltZV8uCi1UaGUgZmFjdCB0aGV5IGFyZSB0aGUgc2FtZSBf
aXNfIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgotCi0jIyBJIGdldCBhIGhlYXAgY2hlY2sgZmFp
bHVyZSB3aGVuIHVzaW5nIGEgbW9jayBvYmplY3QsIGJ1dCB1c2luZyBhIHJlYWwgb2JqZWN0IGlz
IGZpbmUuICBXaGF0IGNhbiBiZSB3cm9uZz8gIyMKLQotRG9lcyB0aGUgY2xhc3MgKGhvcGVmdWxs
eSBhIHB1cmUgaW50ZXJmYWNlKSB5b3UgYXJlIG1vY2tpbmcgaGF2ZSBhCi12aXJ0dWFsIGRlc3Ry
dWN0b3I/Ci0KLVdoZW5ldmVyIHlvdSBkZXJpdmUgZnJvbSBhIGJhc2UgY2xhc3MsIG1ha2Ugc3Vy
ZSBpdHMgZGVzdHJ1Y3RvciBpcwotdmlydHVhbC4gIE90aGVyd2lzZSBCYWQgVGhpbmdzIHdpbGwg
aGFwcGVuLiAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZwotY29kZToKLQotYGBgCi1jbGFzcyBCYXNl
IHsKLSBwdWJsaWM6Ci0gIC8vIE5vdCB2aXJ0dWFsLCBidXQgc2hvdWxkIGJlLgotICB+QmFzZSgp
IHsgLi4uIH0KLSAgLi4uCi19OwotCi1jbGFzcyBEZXJpdmVkIDogcHVibGljIEJhc2UgewotIHB1
YmxpYzoKLSAgLi4uCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgdmFsdWVfOwotfTsKLQotLi4u
Ci0gIEJhc2UqIHAgPSBuZXcgRGVyaXZlZDsKLSAgLi4uCi0gIGRlbGV0ZSBwOyAgLy8gU3VycHJp
c2UhIH5CYXNlKCkgd2lsbCBiZSBjYWxsZWQsIGJ1dCB+RGVyaXZlZCgpIHdpbGwgbm90Ci0gICAg
ICAgICAgICAgLy8gLSB2YWx1ZV8gaXMgbGVha2VkLgotYGBgCi0KLUJ5IGNoYW5naW5nIGB+QmFz
ZSgpYCB0byB2aXJ0dWFsLCBgfkRlcml2ZWQoKWAgd2lsbCBiZSBjb3JyZWN0bHkKLWNhbGxlZCB3
aGVuIGBkZWxldGUgcGAgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgaGVhcCBjaGVja2VyCi13aWxsIGJl
IGhhcHB5LgotCi0jIyBUaGUgIm5ld2VyIGV4cGVjdGF0aW9ucyBvdmVycmlkZSBvbGRlciBvbmVz
IiBydWxlIG1ha2VzIHdyaXRpbmcgZXhwZWN0YXRpb25zIGF3a3dhcmQuICBXaHkgZG9lcyBHb29n
bGUgTW9jayBkbyB0aGF0PyAjIwotCi1XaGVuIHBlb3BsZSBjb21wbGFpbiBhYm91dCB0aGlzLCBv
ZnRlbiB0aGV5IGFyZSByZWZlcnJpbmcgdG8gY29kZSBsaWtlOgotCi1gYGAKLS8vIGZvby5CYXIo
KSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGltZSwgYW5kIHJl
dHVybgotLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBIb3dldmVyLCBJIGhhdmUgdG8gd3JpdGUgdGhl
IGV4cGVjdGF0aW9ucyBpbiB0aGUKLS8vIHJldmVyc2Ugb3JkZXIuICBUaGlzIHN1Y2tzIGJpZyB0
aW1lISEhCi1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMikp
Ci0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0g
ICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotYGBg
Ci0KLVRoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSBkaWRuJ3QgcGljayB0aGUgKipiZXN0Kiogd2F5
IHRvIGV4cHJlc3MgdGhlIHRlc3QncwotaW50ZW50LgotCi1CeSBkZWZhdWx0LCBleHBlY3RhdGlv
bnMgZG9uJ3QgaGF2ZSB0byBiZSBtYXRjaGVkIGluIF9hbnlfIHBhcnRpY3VsYXIKLW9yZGVyLiAg
SWYgeW91IHdhbnQgdGhlbSB0byBtYXRjaCBpbiBhIGNlcnRhaW4gb3JkZXIsIHlvdSBuZWVkIHRv
IGJlCi1leHBsaWNpdC4gIFRoaXMgaXMgR29vZ2xlIE1vY2sncyAoYW5kIGpNb2NrJ3MpIGZ1bmRh
bWVudGFsIHBoaWxvc29waHk6IGl0J3MKLWVhc3kgdG8gYWNjaWRlbnRhbGx5IG92ZXItc3BlY2lm
eSB5b3VyIHRlc3RzLCBhbmQgd2Ugd2FudCB0byBtYWtlIGl0Ci1oYXJkZXIgdG8gZG8gc28uCi0K
LVRoZXJlIGFyZSB0d28gYmV0dGVyIHdheXMgdG8gd3JpdGUgdGhlIHRlc3Qgc3BlYy4gIFlvdSBj
b3VsZCBlaXRoZXIKLXB1dCB0aGUgZXhwZWN0YXRpb25zIGluIHNlcXVlbmNlOgotCi1gYGAKLS8v
IGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGlt
ZSwgYW5kIHJldHVybgotLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBVc2luZyBhIHNlcXVlbmNlLCB3
ZSBjYW4gd3JpdGUgdGhlIGV4cGVjdGF0aW9ucwotLy8gaW4gdGhlaXIgbmF0dXJhbCBvcmRlci4K
LXsKLSAgSW5TZXF1ZW5jZSBzOwotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgICAgLldp
bGxPbmNlKFJldHVybigxKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gIEVYUEVD
VF9DQUxMKGZvbywgQmFyKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKLX0KLWBgYAotCi1vciB5b3UgY2FuIHB1dCB0aGUgc2VxdWVu
Y2Ugb2YgYWN0aW9ucyBpbiB0aGUgc2FtZSBleHBlY3RhdGlvbjoKLQotYGBgCi0vLyBmb28uQmFy
KCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCBy
ZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLgotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAg
ICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMikpCi0gICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1CYWNrIHRvIHRoZSBvcmlnaW5hbCBxdWVzdGlv
bnM6IHdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJjaCB0aGUKLWV4cGVjdGF0aW9ucyAoYW5kIGBP
Tl9DQUxMYHMpIGZyb20gYmFjayB0byBmcm9udD8gIEJlY2F1c2UgdGhpcwotYWxsb3dzIGEgdXNl
ciB0byBzZXQgdXAgYSBtb2NrJ3MgYmVoYXZpb3IgZm9yIHRoZSBjb21tb24gY2FzZSBlYXJseQot
KGUuZy4gaW4gdGhlIG1vY2sncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0
LXVwIHBoYXNlKQotYW5kIGN1c3RvbWl6ZSBpdCB3aXRoIG1vcmUgc3BlY2lmaWMgcnVsZXMgbGF0
ZXIuICBJZiBHb29nbGUgTW9jawotc2VhcmNoZXMgZnJvbSBmcm9udCB0byBiYWNrLCB0aGlzIHZl
cnkgdXNlZnVsIHBhdHRlcm4gd29uJ3QgYmUKLXBvc3NpYmxlLgotCi0jIyBHb29nbGUgTW9jayBw
cmludHMgYSB3YXJuaW5nIHdoZW4gYSBmdW5jdGlvbiB3aXRob3V0IEVYUEVDVFxfQ0FMTCBpcyBj
YWxsZWQsIGV2ZW4gaWYgSSBoYXZlIHNldCBpdHMgYmVoYXZpb3IgdXNpbmcgT05cX0NBTEwuICBX
b3VsZCBpdCBiZSByZWFzb25hYmxlIG5vdCB0byBzaG93IHRoZSB3YXJuaW5nIGluIHRoaXMgY2Fz
ZT8gIyMKLQotV2hlbiBjaG9vc2luZyBiZXR3ZWVuIGJlaW5nIG5lYXQgYW5kIGJlaW5nIHNhZmUs
IHdlIGxlYW4gdG93YXJkIHRoZQotbGF0dGVyLiAgU28gdGhlIGFuc3dlciBpcyB0aGF0IHdlIHRo
aW5rIGl0J3MgYmV0dGVyIHRvIHNob3cgdGhlCi13YXJuaW5nLgotCi1PZnRlbiBwZW9wbGUgd3Jp
dGUgYE9OX0NBTExgcyBpbiB0aGUgbW9jayBvYmplY3QncwotY29uc3RydWN0b3Igb3IgYFNldFVw
KClgLCBhcyB0aGUgZGVmYXVsdCBiZWhhdmlvciByYXJlbHkgY2hhbmdlcyBmcm9tCi10ZXN0IHRv
IHRlc3QuICBUaGVuIGluIHRoZSB0ZXN0IGJvZHkgdGhleSBzZXQgdGhlIGV4cGVjdGF0aW9ucywg
d2hpY2gKLWFyZSBvZnRlbiBkaWZmZXJlbnQgZm9yIGVhY2ggdGVzdC4gIEhhdmluZyBhbiBgT05f
Q0FMTGAgaW4gdGhlIHNldC11cAotcGFydCBvZiBhIHRlc3QgZG9lc24ndCBtZWFuIHRoYXQgdGhl
IGNhbGxzIGFyZSBleHBlY3RlZC4gIElmIHRoZXJlJ3MKLW5vIGBFWFBFQ1RfQ0FMTGAgYW5kIHRo
ZSBtZXRob2QgaXMgY2FsbGVkLCBpdCdzIHBvc3NpYmx5IGFuIGVycm9yLiAgSWYKLXdlIHF1aWV0
bHkgbGV0IHRoZSBjYWxsIGdvIHRocm91Z2ggd2l0aG91dCBub3RpZnlpbmcgdGhlIHVzZXIsIGJ1
Z3MKLW1heSBjcmVlcCBpbiB1bm5vdGljZWQuCi0KLUlmLCBob3dldmVyLCB5b3UgYXJlIHN1cmUg
dGhhdCB0aGUgY2FsbHMgYXJlIE9LLCB5b3UgY2FuIHdyaXRlCi0KLWBgYAotRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoXykpCi0gICAgLldpbGxSZXBlYXRlZGx5KC4uLik7Ci1gYGAKLQotaW5zdGVhZCBv
ZgotCi1gYGAKLU9OX0NBTEwoZm9vLCBCYXIoXykpCi0gICAgLldpbGxCeURlZmF1bHQoLi4uKTsK
LWBgYAotCi1UaGlzIHRlbGxzIEdvb2dsZSBNb2NrIHRoYXQgeW91IGRvIGV4cGVjdCB0aGUgY2Fs
bHMgYW5kIG5vIHdhcm5pbmcgc2hvdWxkIGJlCi1wcmludGVkLgotCi1BbHNvLCB5b3UgY2FuIGNv
bnRyb2wgdGhlIHZlcmJvc2l0eSB1c2luZyB0aGUgYC0tZ21vY2tfdmVyYm9zZWAgZmxhZy4KLUlm
IHlvdSBmaW5kIHRoZSBvdXRwdXQgdG9vIG5vaXN5IHdoZW4gZGVidWdnaW5nLCBqdXN0IGNob29z
ZSBhIGxlc3MKLXZlcmJvc2UgbGV2ZWwuCi0KLSMjIEhvdyBjYW4gSSBkZWxldGUgdGhlIG1vY2sg
ZnVuY3Rpb24ncyBhcmd1bWVudCBpbiBhbiBhY3Rpb24/ICMjCi0KLUlmIHlvdSBmaW5kIHlvdXJz
ZWxmIG5lZWRpbmcgdG8gcGVyZm9ybSBzb21lIGFjdGlvbiB0aGF0J3Mgbm90Ci1zdXBwb3J0ZWQg
YnkgR29vZ2xlIE1vY2sgZGlyZWN0bHksIHJlbWVtYmVyIHRoYXQgeW91IGNhbiBkZWZpbmUgeW91
ciBvd24KLWFjdGlvbnMgdXNpbmcKLVtNYWtlQWN0aW9uKCldKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNXcml0aW5nX05ld19BY3Rpb25zKSBv
cgotW01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29v
Z2xlbW9jay93aWtpL1YxXzdfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBoaWNfQWN0aW9u
cyksCi1vciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5jdGlvbiBhbmQgaW52b2tlIGl0IHVzaW5n
Ci1bSW52b2tlKCldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFf
N19Db29rQm9vayNVc2luZ19GdW5jdGlvbnNfTWV0aG9kc19GdW5jdG9ycykuCi0KLSMjIE1PQ0tc
X01FVEhPRG4oKSdzIHNlY29uZCBhcmd1bWVudCBsb29rcyBmdW5ueS4gIFdoeSBkb24ndCB5b3Ug
dXNlIHRoZSBNT0NLXF9NRVRIT0RuKE1ldGhvZCwgcmV0dXJuXF90eXBlLCBhcmdcXzEsIC4uLiwg
YXJnXF9uKSBzeW50YXg/ICMjCi0KLVdoYXQ/ISAgSSB0aGluayBpdCdzIGJlYXV0aWZ1bC4gOi0p
Ci0KLVdoaWxlIHdoaWNoIHN5bnRheCBsb29rcyBtb3JlIG5hdHVyYWwgaXMgYSBzdWJqZWN0aXZl
IG1hdHRlciB0byBzb21lCi1leHRlbnQsIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IHdhcyBjaG9zZW4g
Zm9yIHNldmVyYWwgcHJhY3RpY2FsIGFkdmFudGFnZXMgaXQKLWhhcy4KLQotVHJ5IHRvIG1vY2sg
YSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbWFwIGFzIGFuIGFyZ3VtZW50OgotYGBgCi12aXJ0dWFs
IGludCBHZXRTaXplKGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Ci1gYGAKLQotVXNp
bmcgdGhlIHByb3Bvc2VkIHN5bnRheCwgaXQgd291bGQgYmU6Ci1gYGAKLU1PQ0tfTUVUSE9EMShH
ZXRTaXplLCBpbnQsIGNvbnN0IG1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgbSk7Ci1gYGAKLQotR3Vl
c3Mgd2hhdD8gIFlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBhcyB0aGUgY29tcGlsZXIgdGhp
bmtzIHRoYXQKLWBjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG1gIGFyZSAqKnR3byoqLCBu
b3Qgb25lLCBhcmd1bWVudHMuIFRvIHdvcmsKLWFyb3VuZCB0aGlzIHlvdSBjYW4gdXNlIGB0eXBl
ZGVmYCB0byBnaXZlIHRoZSBtYXAgdHlwZSBhIG5hbWUsIGJ1dAotdGhhdCBnZXRzIGluIHRoZSB3
YXkgb2YgeW91ciB3b3JrLiAgR29vZ2xlIE1vY2sncyBzeW50YXggYXZvaWRzIHRoaXMKLXByb2Js
ZW0gYXMgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgdHlwZXMgYXJlIHByb3RlY3RlZCBpbnNpZGUg
YSBwYWlyCi1vZiBwYXJlbnRoZXNlczoKLWBgYAotLy8gVGhpcyBjb21waWxlcyBmaW5lLgotTU9D
S19NRVRIT0QxKEdldFNpemUsIGludChjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pKTsK
LWBgYAotCi1Zb3Ugc3RpbGwgbmVlZCBhIGB0eXBlZGVmYCBpZiB0aGUgcmV0dXJuIHR5cGUgY29u
dGFpbnMgYW4gdW5wcm90ZWN0ZWQKLWNvbW1hLCBidXQgdGhhdCdzIG11Y2ggcmFyZXIuCi0KLU90
aGVyIGFkdmFudGFnZXMgaW5jbHVkZToKLSAgMS4gYE1PQ0tfTUVUSE9EMShGb28sIGludCwgYm9v
bClgIGNhbiBsZWF2ZSBhIHJlYWRlciB3b25kZXIgd2hldGhlciB0aGUgbWV0aG9kIHJldHVybnMg
YGludGAgb3IgYGJvb2xgLCB3aGlsZSB0aGVyZSB3b24ndCBiZSBzdWNoIGNvbmZ1c2lvbiB1c2lu
ZyBHb29nbGUgTW9jaydzIHN5bnRheC4KLSAgMS4gVGhlIHdheSBHb29nbGUgTW9jayBkZXNjcmli
ZXMgYSBmdW5jdGlvbiB0eXBlIGlzIG5vdGhpbmcgbmV3LCBhbHRob3VnaCBtYW55IHBlb3BsZSBt
YXkgbm90IGJlIGZhbWlsaWFyIHdpdGggaXQuICBUaGUgc2FtZSBzeW50YXggd2FzIHVzZWQgaW4g
QywgYW5kIHRoZSBgZnVuY3Rpb25gIGxpYnJhcnkgaW4gYHRyMWAgdXNlcyB0aGlzIHN5bnRheCBl
eHRlbnNpdmVseS4gIFNpbmNlIGB0cjFgIHdpbGwgYmVjb21lIGEgcGFydCBvZiB0aGUgbmV3IHZl
cnNpb24gb2YgU1RMLCB3ZSBmZWVsIHZlcnkgY29tZm9ydGFibGUgdG8gYmUgY29uc2lzdGVudCB3
aXRoIGl0LgotICAxLiBUaGUgZnVuY3Rpb24gdHlwZSBzeW50YXggaXMgYWxzbyB1c2VkIGluIG90
aGVyIHBhcnRzIG9mIEdvb2dsZSBNb2NrJ3MgQVBJIChlLmcuIHRoZSBhY3Rpb24gaW50ZXJmYWNl
KSBpbiBvcmRlciB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiB0cmFjdGFibGUuIEEgdXNlciBu
ZWVkcyB0byBsZWFybiBpdCBhbnl3YXkgaW4gb3JkZXIgdG8gdXRpbGl6ZSBHb29nbGUgTW9jaydz
IG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMuICBXZSdkIGFzIHdlbGwgc3RpY2sgdG8gdGhlIHNhbWUg
c3ludGF4IGluIGBNT0NLX01FVEhPRCpgIQotCi0jIyBNeSBjb2RlIGNhbGxzIGEgc3RhdGljL2ds
b2JhbCBmdW5jdGlvbi4gIENhbiBJIG1vY2sgaXQ/ICMjCi0KLVlvdSBjYW4sIGJ1dCB5b3UgbmVl
ZCB0byBtYWtlIHNvbWUgY2hhbmdlcy4KLQotSW4gZ2VuZXJhbCwgaWYgeW91IGZpbmQgeW91cnNl
bGYgbmVlZGluZyB0byBtb2NrIGEgc3RhdGljIGZ1bmN0aW9uLAotaXQncyBhIHNpZ24gdGhhdCB5
b3VyIG1vZHVsZXMgYXJlIHRvbyB0aWdodGx5IGNvdXBsZWQgKGFuZCBsZXNzCi1mbGV4aWJsZSwg
bGVzcyByZXVzYWJsZSwgbGVzcyB0ZXN0YWJsZSwgZXRjKS4gIFlvdSBhcmUgcHJvYmFibHkgYmV0
dGVyCi1vZmYgZGVmaW5pbmcgYSBzbWFsbCBpbnRlcmZhY2UgYW5kIGNhbGwgdGhlIGZ1bmN0aW9u
IHRocm91Z2ggdGhhdAotaW50ZXJmYWNlLCB3aGljaCB0aGVuIGNhbiBiZSBlYXNpbHkgbW9ja2Vk
LiAgSXQncyBhIGJpdCBvZiB3b3JrCi1pbml0aWFsbHksIGJ1dCB1c3VhbGx5IHBheXMgZm9yIGl0
c2VsZiBxdWlja2x5LgotCi1UaGlzIEdvb2dsZSBUZXN0aW5nIEJsb2cKLVtwb3N0XShodHRwOi8v
Z29vZ2xldGVzdGluZy5ibG9nc3BvdC5jb20vMjAwOC8wNi9kZWZlYXQtc3RhdGljLWNsaW5nLmh0
bWwpCi1zYXlzIGl0IGV4Y2VsbGVudGx5LiAgQ2hlY2sgaXQgb3V0LgotCi0jIyBNeSBtb2NrIG9i
amVjdCBuZWVkcyB0byBkbyBjb21wbGV4IHN0dWZmLiAgSXQncyBhIGxvdCBvZiBwYWluIHRvIHNw
ZWNpZnkgdGhlIGFjdGlvbnMuICBHb29nbGUgTW9jayBzdWNrcyEgIyMKLQotSSBrbm93IGl0J3Mg
bm90IGEgcXVlc3Rpb24sIGJ1dCB5b3UgZ2V0IGFuIGFuc3dlciBmb3IgZnJlZSBhbnkgd2F5LiA6
LSkKLQotV2l0aCBHb29nbGUgTW9jaywgeW91IGNhbiBjcmVhdGUgbW9ja3MgaW4gQysrIGVhc2ls
eS4gIEFuZCBwZW9wbGUgbWlnaHQgYmUKLXRlbXB0ZWQgdG8gdXNlIHRoZW0gZXZlcnl3aGVyZS4g
U29tZXRpbWVzIHRoZXkgd29yayBncmVhdCwgYW5kCi1zb21ldGltZXMgeW91IG1heSBmaW5kIHRo
ZW0sIHdlbGwsIGEgcGFpbiB0byB1c2UuIFNvLCB3aGF0J3Mgd3JvbmcgaW4KLXRoZSBsYXR0ZXIg
Y2FzZT8KLQotV2hlbiB5b3Ugd3JpdGUgYSB0ZXN0IHdpdGhvdXQgdXNpbmcgbW9ja3MsIHlvdSBl
eGVyY2lzZSB0aGUgY29kZSBhbmQKLWFzc2VydCB0aGF0IGl0IHJldHVybnMgdGhlIGNvcnJlY3Qg
dmFsdWUgb3IgdGhhdCB0aGUgc3lzdGVtIGlzIGluIGFuCi1leHBlY3RlZCBzdGF0ZS4gIFRoaXMg
aXMgc29tZXRpbWVzIGNhbGxlZCAic3RhdGUtYmFzZWQgdGVzdGluZyIuCi0KLU1vY2tzIGFyZSBn
cmVhdCBmb3Igd2hhdCBzb21lIGNhbGwgImludGVyYWN0aW9uLWJhc2VkIiB0ZXN0aW5nOgotaW5z
dGVhZCBvZiBjaGVja2luZyB0aGUgc3lzdGVtIHN0YXRlIGF0IHRoZSB2ZXJ5IGVuZCwgbW9jayBv
YmplY3RzCi12ZXJpZnkgdGhhdCB0aGV5IGFyZSBpbnZva2VkIHRoZSByaWdodCB3YXkgYW5kIHJl
cG9ydCBhbiBlcnJvciBhcyBzb29uCi1hcyBpdCBhcmlzZXMsIGdpdmluZyB5b3UgYSBoYW5kbGUg
b24gdGhlIHByZWNpc2UgY29udGV4dCBpbiB3aGljaCB0aGUKLWVycm9yIHdhcyB0cmlnZ2VyZWQu
ICBUaGlzIGlzIG9mdGVuIG1vcmUgZWZmZWN0aXZlIGFuZCBlY29ub21pY2FsIHRvCi1kbyB0aGFu
IHN0YXRlLWJhc2VkIHRlc3RpbmcuCi0KLUlmIHlvdSBhcmUgZG9pbmcgc3RhdGUtYmFzZWQgdGVz
dGluZyBhbmQgdXNpbmcgYSB0ZXN0IGRvdWJsZSBqdXN0IHRvCi1zaW11bGF0ZSB0aGUgcmVhbCBv
YmplY3QsIHlvdSBhcmUgcHJvYmFibHkgYmV0dGVyIG9mZiB1c2luZyBhIGZha2UuCi1Vc2luZyBh
IG1vY2sgaW4gdGhpcyBjYXNlIGNhdXNlcyBwYWluLCBhcyBpdCdzIG5vdCBhIHN0cm9uZyBwb2lu
dCBmb3IKLW1vY2tzIHRvIHBlcmZvcm0gY29tcGxleCBhY3Rpb25zLiAgSWYgeW91IGV4cGVyaWVu
Y2UgdGhpcyBhbmQgdGhpbmsKLXRoYXQgbW9ja3Mgc3VjaywgeW91IGFyZSBqdXN0IG5vdCB1c2lu
ZyB0aGUgcmlnaHQgdG9vbCBmb3IgeW91cgotcHJvYmxlbS4gT3IsIHlvdSBtaWdodCBiZSB0cnlp
bmcgdG8gc29sdmUgdGhlIHdyb25nIHByb2JsZW0uIDotKQotCi0jIyBJIGdvdCBhIHdhcm5pbmcg
IlVuaW50ZXJlc3RpbmcgZnVuY3Rpb24gY2FsbCBlbmNvdW50ZXJlZCAtIGRlZmF1bHQgYWN0aW9u
IHRha2VuLi4iICBTaG91bGQgSSBwYW5pYz8gIyMKLQotQnkgYWxsIG1lYW5zLCBOTyEgIEl0J3Mg
anVzdCBhbiBGWUkuCi0KLVdoYXQgaXQgbWVhbnMgaXMgdGhhdCB5b3UgaGF2ZSBhIG1vY2sgZnVu
Y3Rpb24sIHlvdSBoYXZlbid0IHNldCBhbnkKLWV4cGVjdGF0aW9ucyBvbiBpdCAoYnkgR29vZ2xl
IE1vY2sncyBydWxlIHRoaXMgbWVhbnMgdGhhdCB5b3UgYXJlIG5vdAotaW50ZXJlc3RlZCBpbiBj
YWxscyB0byB0aGlzIGZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgaXQgY2FuIGJlIGNhbGxlZAotYW55
IG51bWJlciBvZiB0aW1lcyksIGFuZCBpdCBpcyBjYWxsZWQuICBUaGF0J3MgT0sgLSB5b3UgZGlk
bid0IHNheQotaXQncyBub3QgT0sgdG8gY2FsbCB0aGUgZnVuY3Rpb24hCi0KLVdoYXQgaWYgeW91
IGFjdHVhbGx5IG1lYW50IHRvIGRpc2FsbG93IHRoaXMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLCBi
dXQKLWZvcmdvdCB0byB3cml0ZSBgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkuVGltZXMoMClgPyAg
V2hpbGUKLW9uZSBjYW4gYXJndWUgdGhhdCBpdCdzIHRoZSB1c2VyJ3MgZmF1bHQsIEdvb2dsZSBN
b2NrIHRyaWVzIHRvIGJlIG5pY2UgYW5kCi1wcmludHMgeW91IGEgbm90ZS4KLQotU28sIHdoZW4g
eW91IHNlZSB0aGUgbWVzc2FnZSBhbmQgYmVsaWV2ZSB0aGF0IHRoZXJlIHNob3VsZG4ndCBiZSBh
bnkKLXVuaW50ZXJlc3RpbmcgY2FsbHMsIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgd2hhdCdzIGdv
aW5nIG9uLiAgVG8gbWFrZQoteW91ciBsaWZlIGVhc2llciwgR29vZ2xlIE1vY2sgcHJpbnRzIHRo
ZSBmdW5jdGlvbiBuYW1lIGFuZCBhcmd1bWVudHMKLXdoZW4gYW4gdW5pbnRlcmVzdGluZyBjYWxs
IGlzIGVuY291bnRlcmVkLgotCi0jIyBJIHdhbnQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbi4g
IFNob3VsZCBJIHVzZSBJbnZva2UoKSBvciBpbXBsZW1lbnQgdGhlIGFjdGlvbiBpbnRlcmZhY2U/
ICMjCi0KLUVpdGhlciB3YXkgaXMgZmluZSAtIHlvdSB3YW50IHRvIGNob29zZSB0aGUgb25lIHRo
YXQncyBtb3JlIGNvbnZlbmllbnQKLWZvciB5b3VyIGNpcmN1bXN0YW5jZS4KLQotVXN1YWxseSwg
aWYgeW91ciBhY3Rpb24gaXMgZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBlLCBkZWZpbmlu
ZyBpdAotdXNpbmcgYEludm9rZSgpYCBzaG91bGQgYmUgZWFzaWVyOyBpZiB5b3VyIGFjdGlvbiBj
YW4gYmUgdXNlZCBpbgotZnVuY3Rpb25zIG9mIGRpZmZlcmVudCB0eXBlcyAoZS5nLiBpZiB5b3Ug
YXJlIGRlZmluaW5nCi1gUmV0dXJuKHZhbHVlKWApLCBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClg
IGlzCi1lYXNpZXN0LiAgU29tZXRpbWVzIHlvdSB3YW50IHByZWNpc2UgY29udHJvbCBvbiB3aGF0
IHR5cGVzIG9mCi1mdW5jdGlvbnMgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiwgYW5kIGltcGxl
bWVudGluZwotYEFjdGlvbkludGVyZmFjZWAgaXMgdGhlIHdheSB0byBnbyBoZXJlLiBTZWUgdGhl
IGltcGxlbWVudGF0aW9uIG9mCi1gUmV0dXJuKClgIGluIGBpbmNsdWRlL2dtb2NrL2dtb2NrLWFj
dGlvbnMuaGAgZm9yIGFuIGV4YW1wbGUuCi0KLSMjIEknbSB1c2luZyB0aGUgc2V0LWFyZ3VtZW50
LXBvaW50ZWUgYWN0aW9uLCBhbmQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiY29uZmxp
Y3RpbmcgcmV0dXJuIHR5cGUgc3BlY2lmaWVkIi4gIFdoYXQgZG9lcyBpdCBtZWFuPyAjIwotCi1Z
b3UgZ290IHRoaXMgZXJyb3IgYXMgR29vZ2xlIE1vY2sgaGFzIG5vIGlkZWEgd2hhdCB2YWx1ZSBp
dCBzaG91bGQgcmV0dXJuCi13aGVuIHRoZSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQuICBgU2V0QXJn
UG9pbnRlZSgpYCBzYXlzIHdoYXQgdGhlCi1zaWRlIGVmZmVjdCBpcywgYnV0IGRvZXNuJ3Qgc2F5
IHdoYXQgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUuICBZb3UKLW5lZWQgYERvQWxsKClgIHRv
IGNoYWluIGEgYFNldEFyZ1BvaW50ZWUoKWAgd2l0aCBhIGBSZXR1cm4oKWAuCi0KLVNlZSB0aGlz
IFtyZWNpcGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19D
b29rQm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cykgZm9yIG1vcmUgZGV0YWlscyBhbmQgYW4gZXhh
bXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBGQVEhICMjCi0KLUlmIHlv
dSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRo
ZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6Ci0KLSAgMS4gcmVhZCBv
dGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svdy9s
aXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91
cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrL3RvcGljcyksCi0gIDEuIGFzayBpdCBvbiBb
Z29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xlbW9ja0Bnb29nbGVncm91
cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSBy
ZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5n
b29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4KLQotUGxl
YXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKLVtpc3N1ZSB0cmFja2VyXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlzdCkgaXMgX25vdF8K
LWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVx
dWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcg
YSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxv
d2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0
aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICog
dGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9t
IFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29vZ2xlIE1vY2sgaXMgdW5k
ZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVt
IGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5n
IHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAq
IHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxl
ciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVz
dGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFs
bHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0g
eW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWFjdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2lu
Y2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiM2Y2NTRhZjM0OGQxYTZjM2QzMDdkMzUzOTcwNTgzN2YzOTIxMzM0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21v
Y2svZ21vY2stYWN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIwNSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxl
bWVudHMgc29tZSBjb21tb25seSB1c2VkIGFjdGlvbnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVE
RV9HTU9DS19HTU9DS19BQ1RJT05TX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01P
Q0tfQUNUSU9OU19IXwotCi0jaWZuZGVmIF9XSU4zMl9XQ0UKLSMgaW5jbHVkZSA8ZXJybm8uaD4K
LSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2lu
Y2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotCi0jaWYgR1RFU1RfSEFTX1NURF9UWVBFX1RS
QUlUU18gIC8vIERlZmluZWQgYnkgZ3Rlc3QtcG9ydC5oIHZpYSBnbW9jay1wb3J0LmguCi0jaW5j
bHVkZSA8dHlwZV90cmFpdHM+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBU
byBpbXBsZW1lbnQgYW4gYWN0aW9uIEZvbywgZGVmaW5lOgotLy8gICAxLiBhIGNsYXNzIEZvb0Fj
dGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIEFjdGlvbkludGVyZmFjZSBpbnRlcmZhY2UsIGFuZAot
Ly8gICAyLiBhIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIEFjdGlvbiBvYmplY3Qg
ZnJvbSBhCi0vLyAgICAgIGNvbnN0IEZvb0FjdGlvbiouCi0vLwotLy8gVGhlIHR3by1sZXZlbCBk
ZWxlZ2F0aW9uIGRlc2lnbiBmb2xsb3dzIHRoYXQgb2YgTWF0Y2hlciwgcHJvdmlkaW5nCi0vLyBj
b25zaXN0ZW5jeSBmb3IgZXh0ZW5zaW9uIGRldmVsb3BlcnMuICBJdCBhbHNvIGVhc2VzIG93bmVy
c2hpcAotLy8gbWFuYWdlbWVudCBhcyBBY3Rpb24gb2JqZWN0cyBjYW4gbm93IGJlIGNvcGllZCBs
aWtlIHBsYWluIHZhbHVlcy4KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEYxLCB0eXBlbmFtZSBGMj4KLWNsYXNzIEFjdGlvbkFkYXB0b3I7Ci0KLS8vIEJ1aWx0
SW5EZWZhdWx0VmFsdWVHZXR0ZXI8VCwgdHJ1ZT46OkdldCgpIHJldHVybnMgYQotLy8gZGVmYXVs
dC1jb25zdHJ1Y3RlZCBUIHZhbHVlLiAgQnVpbHRJbkRlZmF1bHRWYWx1ZUdldHRlcjxULAotLy8g
ZmFsc2U+OjpHZXQoKSBjcmFzaGVzIHdpdGggYW4gZXJyb3IuCi0vLwotLy8gVGhpcyBwcmltYXJ5
IHRlbXBsYXRlIGlzIHVzZWQgd2hlbiBrRGVmYXVsdENvbnN0cnVjdGlibGUgaXMgdHJ1ZS4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGtEZWZhdWx0Q29uc3RydWN0aWJsZT4KLXN0cnVjdCBC
dWlsdEluRGVmYXVsdFZhbHVlR2V0dGVyIHsKLSAgc3RhdGljIFQgR2V0KCkgeyByZXR1cm4gVCgp
OyB9Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQnVpbHRJbkRlZmF1bHRWYWx1
ZUdldHRlcjxULCBmYWxzZT4gewotICBzdGF0aWMgVCBHZXQoKSB7Ci0gICAgQXNzZXJ0KGZhbHNl
LCBfX0ZJTEVfXywgX19MSU5FX18sCi0gICAgICAgICAgICJEZWZhdWx0IGFjdGlvbiB1bmRlZmlu
ZWQgZm9yIHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZS4iKTsKLSAgICByZXR1cm4gaW50ZXJuYWw6
OkludmFsaWQ8VD4oKTsKLSAgICAvLyBUaGUgYWJvdmUgc3RhdGVtZW50IHdpbGwgbmV2ZXIgYmUg
cmVhY2hlZCwgYnV0IGlzIHJlcXVpcmVkIGluCi0gICAgLy8gb3JkZXIgZm9yIHRoaXMgZnVuY3Rp
b24gdG8gY29tcGlsZS4KLSAgfQotfTsKLQotLy8gQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6R2V0
KCkgcmV0dXJucyB0aGUgImJ1aWx0LWluIiBkZWZhdWx0IHZhbHVlCi0vLyBmb3IgdHlwZSBULCB3
aGljaCBpcyBOVUxMIHdoZW4gVCBpcyBhIHJhdyBwb2ludGVyIHR5cGUsIDAgd2hlbiBUIGlzCi0v
LyBhIG51bWVyaWMgdHlwZSwgZmFsc2Ugd2hlbiBUIGlzIGJvb2wsIG9yICIiIHdoZW4gVCBpcyBz
dHJpbmcgb3IKLS8vIHN0ZDo6c3RyaW5nLiAgSW4gYWRkaXRpb24sIGluIEMrKzExIGFuZCBhYm92
ZSwgaXQgdHVybnMgYQotLy8gZGVmYXVsdC1jb25zdHJ1Y3RlZCBUIHZhbHVlIGlmIFQgaXMgZGVm
YXVsdCBjb25zdHJ1Y3RpYmxlLiAgRm9yIGFueQotLy8gb3RoZXIgdHlwZSBULCB0aGUgYnVpbHQt
aW4gZGVmYXVsdCBUIHZhbHVlIGlzIHVuZGVmaW5lZCwgYW5kIHRoZQotLy8gZnVuY3Rpb24gd2ls
bCBhYm9ydCB0aGUgcHJvY2Vzcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQnVpbHRJ
bkRlZmF1bHRWYWx1ZSB7Ci0gcHVibGljOgotI2lmIEdURVNUX0hBU19TVERfVFlQRV9UUkFJVFNf
Ci0gIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmZiB0eXBlIFQgaGFzIGEgYnVpbHQt
aW4gZGVmYXVsdCB2YWx1ZS4KLSAgc3RhdGljIGJvb2wgRXhpc3RzKCkgewotICAgIHJldHVybiA6
OnN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZTsKLSAgfQotCi0gIHN0YXRp
YyBUIEdldCgpIHsKLSAgICByZXR1cm4gQnVpbHRJbkRlZmF1bHRWYWx1ZUdldHRlcjwKLSAgICAg
ICAgVCwgOjpzdGQ6OmlzX2RlZmF1bHRfY29uc3RydWN0aWJsZTxUPjo6dmFsdWU+OjpHZXQoKTsK
LSAgfQotCi0jZWxzZSAgLy8gR1RFU1RfSEFTX1NURF9UWVBFX1RSQUlUU18KLSAgLy8gVGhpcyBm
dW5jdGlvbiByZXR1cm5zIHRydWUgaWZmIHR5cGUgVCBoYXMgYSBidWlsdC1pbiBkZWZhdWx0IHZh
bHVlLgotICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0K
LSAgc3RhdGljIFQgR2V0KCkgewotICAgIHJldHVybiBCdWlsdEluRGVmYXVsdFZhbHVlR2V0dGVy
PFQsIGZhbHNlPjo6R2V0KCk7Ci0gIH0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1RZUEVf
VFJBSVRTXwotfTsKLQotLy8gVGhpcyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHNheXMgdGhhdCB3
ZSB1c2UgdGhlIHNhbWUgYnVpbHQtaW4KLS8vIGRlZmF1bHQgdmFsdWUgZm9yIFQgYW5kIGNvbnN0
IFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29u
c3QgVD4gewotIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgRXhpc3RzKCkgeyByZXR1cm4gQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxUPjo6RXhpc3RzKCk7IH0KLSAgc3RhdGljIFQgR2V0KCkgeyByZXR1cm4g
QnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6R2V0KCk7IH0KLX07Ci0KLS8vIFRoaXMgcGFydGlhbCBz
cGVjaWFsaXphdGlvbiBkZWZpbmVzIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgcG9pbnRlcgotLy8g
dHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJ1aWx0SW5EZWZhdWx0VmFsdWU8
VCo+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIEV4aXN0cygpIHsgcmV0dXJuIHRydWU7IH0K
LSAgc3RhdGljIFQqIEdldCgpIHsgcmV0dXJuIE5VTEw7IH0KLX07Ci0KLS8vIFRoZSBmb2xsb3dp
bmcgc3BlY2lhbGl6YXRpb25zIGRlZmluZSB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yCi0vLyBzcGVj
aWZpYyB0eXBlcyB3ZSBjYXJlIGFib3V0LgotI2RlZmluZSBHTU9DS19ERUZJTkVfREVGQVVMVF9B
Q1RJT05fRk9SX1JFVFVSTl9UWVBFXyh0eXBlLCB2YWx1ZSkgXAotICB0ZW1wbGF0ZSA8PiBcCi0g
IGNsYXNzIEJ1aWx0SW5EZWZhdWx0VmFsdWU8dHlwZT4geyBcCi0gICBwdWJsaWM6IFwKLSAgICBz
dGF0aWMgYm9vbCBFeGlzdHMoKSB7IHJldHVybiB0cnVlOyB9IFwKLSAgICBzdGF0aWMgdHlwZSBH
ZXQoKSB7IHJldHVybiB2YWx1ZTsgfSBcCi0gIH0KLQotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNU
SU9OX0ZPUl9SRVRVUk5fVFlQRV8odm9pZCwgKTsgIC8vIE5PTElOVAotI2lmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBF
Xyg6OnN0cmluZywgIiIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotR01P
Q0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oOjpzdGQ6OnN0cmluZywg
IiIpOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oYm9vbCwg
ZmFsc2UpOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8odW5z
aWduZWQgY2hhciwgJ1wwJyk7Ci1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVS
Tl9UWVBFXyhzaWduZWQgY2hhciwgJ1wwJyk7Ci1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05f
Rk9SX1JFVFVSTl9UWVBFXyhjaGFyLCAnXDAnKTsKLQotLy8gVGhlcmUncyBubyBuZWVkIGZvciBh
IGRlZmF1bHQgYWN0aW9uIGZvciBzaWduZWQgd2NoYXJfdCwgYXMgdGhhdAotLy8gdHlwZSBpcyB0
aGUgc2FtZSBhcyB3Y2hhcl90IGZvciBnY2MsIGFuZCBpbnZhbGlkIGZvciBNU1ZDLgotLy8KLS8v
IFRoZXJlJ3MgYWxzbyBubyBuZWVkIGZvciBhIGRlZmF1bHQgYWN0aW9uIGZvciB1bnNpZ25lZCB3
Y2hhcl90LCBhcwotLy8gdGhhdCB0eXBlIGlzIHRoZSBzYW1lIGFzIHVuc2lnbmVkIGludCBmb3Ig
Z2NjLCBhbmQgaW52YWxpZCBmb3IKLS8vIE1TVkMuCi0jaWYgR01PQ0tfV0NIQVJfVF9JU19OQVRJ
VkVfCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyh3Y2hhcl90
LCAwVSk7ICAvLyBOT0xJTlQKLSNlbmRpZgotCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05f
Rk9SX1JFVFVSTl9UWVBFXyh1bnNpZ25lZCBzaG9ydCwgMFUpOyAgLy8gTk9MSU5UCi1HTU9DS19E
RUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhzaWduZWQgc2hvcnQsIDApOyAg
ICAgLy8gTk9MSU5UCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBF
Xyh1bnNpZ25lZCBpbnQsIDBVKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVU
VVJOX1RZUEVfKHNpZ25lZCBpbnQsIDApOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZP
Ul9SRVRVUk5fVFlQRV8odW5zaWduZWQgbG9uZywgMFVMKTsgIC8vIE5PTElOVAotR01PQ0tfREVG
SU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oc2lnbmVkIGxvbmcsIDBMKTsgICAg
IC8vIE5PTElOVAotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8o
VUludDY0LCAwKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVf
KEludDY0LCAwKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVf
KGZsb2F0LCAwKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVf
KGRvdWJsZSwgMCk7Ci0KLSN1bmRlZiBHTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JF
VFVSTl9UWVBFXwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gV2hlbiBhbiB1bmV4
cGVjdGVkIGZ1bmN0aW9uIGNhbGwgaXMgZW5jb3VudGVyZWQsIEdvb2dsZSBNb2NrIHdpbGwKLS8v
IGxldCBpdCByZXR1cm4gYSBkZWZhdWx0IHZhbHVlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQg
b25lIGZvciBpdHMKLS8vIHJldHVybiB0eXBlLCBvciBpZiB0aGUgcmV0dXJuIHR5cGUgaGFzIGEg
YnVpbHQtaW4gZGVmYXVsdCB2YWx1ZTsKLS8vIG90aGVyd2lzZSBHb29nbGUgTW9jayB3b24ndCBr
bm93IHdoYXQgdmFsdWUgdG8gcmV0dXJuIGFuZCB3aWxsIGhhdmUKLS8vIHRvIGFib3J0IHRoZSBw
cm9jZXNzLgotLy8KLS8vIFRoZSBEZWZhdWx0VmFsdWU8VD4gY2xhc3MgYWxsb3dzIGEgdXNlciB0
byBzcGVjaWZ5IHRoZQotLy8gZGVmYXVsdCB2YWx1ZSBmb3IgYSB0eXBlIFQgdGhhdCBpcyBib3Ro
IGNvcHlhYmxlIGFuZCBwdWJsaWNseQotLy8gZGVzdHJ1Y3RpYmxlIChpLmUuIGFueXRoaW5nIHRo
YXQgY2FuIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiByZXR1cm4KLS8vIHR5cGUpLiAgVGhlIHVzYWdl
IGlzOgotLy8KLS8vICAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBUIHRvIGJl
IGZvby4KLS8vICAgRGVmYXVsdFZhbHVlPFQ+OjpTZXQoZm9vKTsKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgRGVmYXVsdFZhbHVlIHsKLSBwdWJsaWM6Ci0gIC8vIFNldHMgdGhlIGRlZmF1
bHQgdmFsdWUgZm9yIHR5cGUgVDsgcmVxdWlyZXMgVCB0byBiZQotICAvLyBjb3B5LWNvbnN0cnVj
dGFibGUgYW5kIGhhdmUgYSBwdWJsaWMgZGVzdHJ1Y3Rvci4KLSAgc3RhdGljIHZvaWQgU2V0KFQg
eCkgewotICAgIGRlbGV0ZSBwcm9kdWNlcl87Ci0gICAgcHJvZHVjZXJfID0gbmV3IEZpeGVkVmFs
dWVQcm9kdWNlcih4KTsKLSAgfQotCi0gIC8vIFByb3ZpZGVzIGEgZmFjdG9yeSBmdW5jdGlvbiB0
byBiZSBjYWxsZWQgdG8gZ2VuZXJhdGUgdGhlIGRlZmF1bHQgdmFsdWUuCi0gIC8vIFRoaXMgbWV0
aG9kIGNhbiBiZSB1c2VkIGV2ZW4gaWYgVCBpcyBvbmx5IG1vdmUtY29uc3RydWN0aWJsZSwgYnV0
IGl0IGlzIG5vdAotICAvLyBsaW1pdGVkIHRvIHRoYXQgY2FzZS4KLSAgdHlwZWRlZiBUICgqRmFj
dG9yeUZ1bmN0aW9uKSgpOwotICBzdGF0aWMgdm9pZCBTZXRGYWN0b3J5KEZhY3RvcnlGdW5jdGlv
biBmYWN0b3J5KSB7Ci0gICAgZGVsZXRlIHByb2R1Y2VyXzsKLSAgICBwcm9kdWNlcl8gPSBuZXcg
RmFjdG9yeVZhbHVlUHJvZHVjZXIoZmFjdG9yeSk7Ci0gIH0KLQotICAvLyBVbnNldHMgdGhlIGRl
ZmF1bHQgdmFsdWUgZm9yIHR5cGUgVC4KLSAgc3RhdGljIHZvaWQgQ2xlYXIoKSB7Ci0gICAgZGVs
ZXRlIHByb2R1Y2VyXzsKLSAgICBwcm9kdWNlcl8gPSBOVUxMOwotICB9Ci0KLSAgLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGUgdXNlciBoYXMgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQu
Ci0gIHN0YXRpYyBib29sIElzU2V0KCkgeyByZXR1cm4gcHJvZHVjZXJfICE9IE5VTEw7IH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWYgVCBoYXMgYSBkZWZhdWx0IHJldHVybiB2YWx1ZSBzZXQgYnkg
dGhlIHVzZXIgb3IgdGhlcmUKLSAgLy8gZXhpc3RzIGEgYnVpbHQtaW4gZGVmYXVsdCB2YWx1ZS4K
LSAgc3RhdGljIGJvb2wgRXhpc3RzKCkgewotICAgIHJldHVybiBJc1NldCgpIHx8IGludGVybmFs
OjpCdWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpFeGlzdHMoKTsKLSAgfQotCi0gIC8vIFJldHVybnMg
dGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVCBpZiB0aGUgdXNlciBoYXMgc2V0IG9uZTsKLSAg
Ly8gb3RoZXJ3aXNlIHJldHVybnMgdGhlIGJ1aWx0LWluIGRlZmF1bHQgdmFsdWUuIFJlcXVpcmVz
IHRoYXQgRXhpc3RzKCkKLSAgLy8gaXMgdHJ1ZSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSByZXR1
cm4gdmFsdWUgaXMgd2VsbC1kZWZpbmVkLgotICBzdGF0aWMgVCBHZXQoKSB7Ci0gICAgcmV0dXJu
IHByb2R1Y2VyXyA9PSBOVUxMID8KLSAgICAgICAgaW50ZXJuYWw6OkJ1aWx0SW5EZWZhdWx0VmFs
dWU8VD46OkdldCgpIDogcHJvZHVjZXJfLT5Qcm9kdWNlKCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IGNsYXNzIFZhbHVlUHJvZHVjZXIgewotICAgcHVibGljOgotICAgIHZpcnR1YWwgflZhbHVlUHJv
ZHVjZXIoKSB7fQotICAgIHZpcnR1YWwgVCBQcm9kdWNlKCkgPSAwOwotICB9OwotCi0gIGNsYXNz
IEZpeGVkVmFsdWVQcm9kdWNlciA6IHB1YmxpYyBWYWx1ZVByb2R1Y2VyIHsKLSAgIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBGaXhlZFZhbHVlUHJvZHVjZXIoVCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUp
IHt9Ci0gICAgdmlydHVhbCBUIFByb2R1Y2UoKSB7IHJldHVybiB2YWx1ZV87IH0KLQotICAgcHJp
dmF0ZToKLSAgICBjb25zdCBUIHZhbHVlXzsKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKEZpeGVkVmFsdWVQcm9kdWNlcik7Ci0gIH07Ci0KLSAgY2xhc3MgRmFjdG9yeVZhbHVl
UHJvZHVjZXIgOiBwdWJsaWMgVmFsdWVQcm9kdWNlciB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgRmFjdG9yeVZhbHVlUHJvZHVjZXIoRmFjdG9yeUZ1bmN0aW9uIGZhY3RvcnkpCi0gICAgICAg
IDogZmFjdG9yeV8oZmFjdG9yeSkge30KLSAgICB2aXJ0dWFsIFQgUHJvZHVjZSgpIHsgcmV0dXJu
IGZhY3RvcnlfKCk7IH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBGYWN0b3J5RnVuY3Rpb24g
ZmFjdG9yeV87Ci0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhGYWN0b3J5VmFs
dWVQcm9kdWNlcik7Ci0gIH07Ci0KLSAgc3RhdGljIFZhbHVlUHJvZHVjZXIqIHByb2R1Y2VyXzsK
LX07Ci0KLS8vIFRoaXMgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBhbGxvd3MgYSB1c2VyIHRvIHNl
dCBkZWZhdWx0IHZhbHVlcyBmb3IKLS8vIHJlZmVyZW5jZSB0eXBlcy4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgRGVmYXVsdFZhbHVlPFQmPiB7Ci0gcHVibGljOgotICAvLyBTZXRzIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQmLgotICBzdGF0aWMgdm9pZCBTZXQoVCYgeCkgeyAg
Ly8gTk9MSU5UCi0gICAgYWRkcmVzc18gPSAmeDsKLSAgfQotCi0gIC8vIFVuc2V0cyB0aGUgZGVm
YXVsdCB2YWx1ZSBmb3IgdHlwZSBUJi4KLSAgc3RhdGljIHZvaWQgQ2xlYXIoKSB7Ci0gICAgYWRk
cmVzc18gPSBOVUxMOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlciBoYXMg
c2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQmLgotICBzdGF0aWMgYm9vbCBJc1NldCgp
IHsgcmV0dXJuIGFkZHJlc3NfICE9IE5VTEw7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWYgVCBo
YXMgYSBkZWZhdWx0IHJldHVybiB2YWx1ZSBzZXQgYnkgdGhlIHVzZXIgb3IgdGhlcmUKLSAgLy8g
ZXhpc3RzIGEgYnVpbHQtaW4gZGVmYXVsdCB2YWx1ZS4KLSAgc3RhdGljIGJvb2wgRXhpc3RzKCkg
ewotICAgIHJldHVybiBJc1NldCgpIHx8IGludGVybmFsOjpCdWlsdEluRGVmYXVsdFZhbHVlPFQm
Pjo6RXhpc3RzKCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0
eXBlIFQmIGlmIHRoZSB1c2VyIGhhcyBzZXQgb25lOwotICAvLyBvdGhlcndpc2UgcmV0dXJucyB0
aGUgYnVpbHQtaW4gZGVmYXVsdCB2YWx1ZSBpZiB0aGVyZSBpcyBvbmU7Ci0gIC8vIG90aGVyd2lz
ZSBhYm9ydHMgdGhlIHByb2Nlc3MuCi0gIHN0YXRpYyBUJiBHZXQoKSB7Ci0gICAgcmV0dXJuIGFk
ZHJlc3NfID09IE5VTEwgPwotICAgICAgICBpbnRlcm5hbDo6QnVpbHRJbkRlZmF1bHRWYWx1ZTxU
Jj46OkdldCgpIDogKmFkZHJlc3NfOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgVCogYWRk
cmVzc187Ci19OwotCi0vLyBUaGlzIHNwZWNpYWxpemF0aW9uIGFsbG93cyBEZWZhdWx0VmFsdWU8
dm9pZD46OkdldCgpIHRvCi0vLyBjb21waWxlLgotdGVtcGxhdGUgPD4KLWNsYXNzIERlZmF1bHRW
YWx1ZTx2b2lkPiB7Ci0gcHVibGljOgotICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7IHJldHVybiB0
cnVlOyB9Ci0gIHN0YXRpYyB2b2lkIEdldCgpIHt9Ci19OwotCi0vLyBQb2ludHMgdG8gdGhlIHVz
ZXItc2V0IGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
dHlwZW5hbWUgRGVmYXVsdFZhbHVlPFQ+OjpWYWx1ZVByb2R1Y2VyKiBEZWZhdWx0VmFsdWU8VD46
OnByb2R1Y2VyXyA9IE5VTEw7Ci0KLS8vIFBvaW50cyB0byB0aGUgdXNlci1zZXQgZGVmYXVsdCB2
YWx1ZSBmb3IgdHlwZSBUJi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCogRGVmYXVsdFZhbHVl
PFQmPjo6YWRkcmVzc18gPSBOVUxMOwotCi0vLyBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8g
ZGVmaW5lIGFuIGFjdGlvbiBmb3IgZnVuY3Rpb24gdHlwZSBGLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEY+Ci1jbGFzcyBBY3Rpb25JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0gIHR5cGVkZWYgdHlwZW5h
bWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0K
LSAgQWN0aW9uSW50ZXJmYWNlKCkge30KLSAgdmlydHVhbCB+QWN0aW9uSW50ZXJmYWNlKCkge30K
LQotICAvLyBQZXJmb3JtcyB0aGUgYWN0aW9uLiAgVGhpcyBtZXRob2QgaXMgbm90IGNvbnN0LCBh
cyBpbiBnZW5lcmFsIGFuCi0gIC8vIGFjdGlvbiBjYW4gaGF2ZSBzaWRlIGVmZmVjdHMgYW5kIGJl
IHN0YXRlZnVsLiAgRm9yIGV4YW1wbGUsIGEKLSAgLy8gZ2V0LXRoZS1uZXh0LWVsZW1lbnQtZnJv
bS10aGUtY29sbGVjdGlvbiBhY3Rpb24gd2lsbCBuZWVkIHRvCi0gIC8vIHJlbWVtYmVyIHRoZSBj
dXJyZW50IGVsZW1lbnQuCi0gIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRU
dXBsZSYgYXJncykgPSAwOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhBY3Rpb25JbnRlcmZhY2UpOwotfTsKLQotLy8gQW4gQWN0aW9uPEY+IGlzIGEgY29w
eWFibGUgYW5kIElNTVVUQUJMRSAoZXhjZXB0IGJ5IGFzc2lnbm1lbnQpCi0vLyBvYmplY3QgdGhh
dCByZXByZXNlbnRzIGFuIGFjdGlvbiB0byBiZSB0YWtlbiB3aGVuIGEgbW9jayBmdW5jdGlvbgot
Ly8gb2YgdHlwZSBGIGlzIGNhbGxlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBBY3Rpb248VD4g
aXMganVzdCBhCi0vLyBsaW5rZWRfcHRyIHRvIGNvbnN0IEFjdGlvbkludGVyZmFjZTxUPiwgc28g
Y29weWluZyBpcyBmYWlybHkgY2hlYXAuCi0vLyBEb24ndCBpbmhlcml0IGZyb20gQWN0aW9uIQot
Ly8KLS8vIFlvdSBjYW4gdmlldyBhbiBvYmplY3QgaW1wbGVtZW50aW5nIEFjdGlvbkludGVyZmFj
ZTxGPiBhcyBhCi0vLyBjb25jcmV0ZSBhY3Rpb24gKGluY2x1ZGluZyBpdHMgY3VycmVudCBzdGF0
ZSksIGFuZCBhbiBBY3Rpb248Rj4KLS8vIG9iamVjdCBhcyBhIGhhbmRsZSB0byBpdC4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBGPgotY2xhc3MgQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICB0eXBlZGVmIHR5
cGVuYW1lIGludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxl
OwotCi0gIC8vIENvbnN0cnVjdHMgYSBudWxsIEFjdGlvbi4gIE5lZWRlZCBmb3Igc3RvcmluZyBB
Y3Rpb24gb2JqZWN0cyBpbgotICAvLyBTVEwgY29udGFpbmVycy4KLSAgQWN0aW9uKCkgOiBpbXBs
XyhOVUxMKSB7fQotCi0gIC8vIENvbnN0cnVjdHMgYW4gQWN0aW9uIGZyb20gaXRzIGltcGxlbWVu
dGF0aW9uLiAgQSBOVUxMIGltcGwgaXMKLSAgLy8gdXNlZCB0byByZXByZXNlbnQgdGhlICJkby1k
ZWZhdWx0IiBhY3Rpb24uCi0gIGV4cGxpY2l0IEFjdGlvbihBY3Rpb25JbnRlcmZhY2U8Rj4qIGlt
cGwpIDogaW1wbF8oaW1wbCkge30KLQotICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICBBY3Rpb24o
Y29uc3QgQWN0aW9uJiBhY3Rpb24pIDogaW1wbF8oYWN0aW9uLmltcGxfKSB7fQotCi0gIC8vIFRo
aXMgY29uc3RydWN0b3IgYWxsb3dzIHVzIHRvIHR1cm4gYW4gQWN0aW9uPEZ1bmM+IG9iamVjdCBp
bnRvIGFuCi0gIC8vIEFjdGlvbjxGPiwgYXMgbG9uZyBhcyBGJ3MgYXJndW1lbnRzIGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnZlcnRlZAotICAvLyB0byBGdW5jJ3MgYW5kIEZ1bmMncyByZXR1cm4gdHlw
ZSBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KLSAgLy8gRidzLgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuYz4KLSAgZXhwbGljaXQgQWN0aW9uKGNvbnN0IEFjdGlvbjxGdW5jPiYgYWN0
aW9uKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgaXMgdGhlIERvRGVmYXVsdCgpIGFj
dGlvbi4KLSAgYm9vbCBJc0RvRGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLmdldCgpID09
IE5VTEw7IH0KLQotICAvLyBQZXJmb3JtcyB0aGUgYWN0aW9uLiAgTm90ZSB0aGF0IHRoaXMgbWV0
aG9kIGlzIGNvbnN0IGV2ZW4gdGhvdWdoCi0gIC8vIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBp
biBBY3Rpb25JbnRlcmZhY2UgaXMgbm90LiAgVGhlIHJlYXNvbgotICAvLyBpcyB0aGF0IGEgY29u
c3QgQWN0aW9uPEY+IG1lYW5zIHRoYXQgaXQgY2Fubm90IGJlIHJlLWJvdW5kIHRvCi0gIC8vIGFu
b3RoZXIgY29uY3JldGUgYWN0aW9uLCBub3QgdGhhdCB0aGUgY29uY3JldGUgYWN0aW9uIGl0IGJp
bmRzIHRvCi0gIC8vIGNhbm5vdCBjaGFuZ2Ugc3RhdGUuICAoVGhpbmsgb2YgdGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiBhIGNvbnN0Ci0gIC8vIHBvaW50ZXIgYW5kIGEgcG9pbnRlciB0byBjb25zdC4p
Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLSAg
ICBpbnRlcm5hbDo6QXNzZXJ0KAotICAgICAgICAhSXNEb0RlZmF1bHQoKSwgX19GSUxFX18sIF9f
TElORV9fLAotICAgICAgICAiWW91IGFyZSB1c2luZyBEb0RlZmF1bHQoKSBpbnNpZGUgYSBjb21w
b3NpdGUgYWN0aW9uIGxpa2UgIgotICAgICAgICAiRG9BbGwoKSBvciBXaXRoQXJncygpLiAgVGhp
cyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZWNobmljYWwgIgotICAgICAgICAicmVhc29ucy4gIFBs
ZWFzZSBpbnN0ZWFkIHNwZWxsIG91dCB0aGUgZGVmYXVsdCBhY3Rpb24sIG9yICIKLSAgICAgICAg
ImFzc2lnbiB0aGUgZGVmYXVsdCBhY3Rpb24gdG8gYW4gQWN0aW9uIHZhcmlhYmxlIGFuZCB1c2Ug
IgotICAgICAgICAidGhlIHZhcmlhYmxlIGluIHZhcmlvdXMgcGxhY2VzLiIpOwotICAgIHJldHVy
biBpbXBsXy0+UGVyZm9ybShhcmdzKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEYxLCB0eXBlbmFtZSBGMj4KLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpBY3Rpb25B
ZGFwdG9yOwotCi0gIGludGVybmFsOjpsaW5rZWRfcHRyPEFjdGlvbkludGVyZmFjZTxGPiA+IGlt
cGxfOwotfTsKLQotLy8gVGhlIFBvbHltb3JwaGljQWN0aW9uIGNsYXNzIHRlbXBsYXRlIG1ha2Vz
IGl0IGVhc3kgdG8gaW1wbGVtZW50IGEKLS8vIHBvbHltb3JwaGljIGFjdGlvbiAoaS5lLiBhbiBh
Y3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBtb2NrCi0vLyBmdW5jdGlvbnMgb2YgdGhhbiBvbmUg
dHlwZSwgZS5nLiBSZXR1cm4oKSkuCi0vLwotLy8gVG8gZGVmaW5lIGEgcG9seW1vcnBoaWMgYWN0
aW9uLCBhIHVzZXIgZmlyc3QgcHJvdmlkZXMgYSBDT1BZQUJMRQotLy8gaW1wbGVtZW50YXRpb24g
Y2xhc3MgdGhhdCBoYXMgYSBQZXJmb3JtKCkgbWV0aG9kIHRlbXBsYXRlOgotLy8KLS8vICAgY2xh
c3MgRm9vQWN0aW9uIHsKLS8vICAgIHB1YmxpYzoKLS8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
UmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotLy8gICAgIFJlc3VsdCBQZXJmb3JtKGNv
bnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLS8vICAgICAgIC8vIFByb2Nlc3NlcyB0
aGUgYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgcmVzdWx0LCB1c2luZwotLy8gICAgICAgLy8gdHIx
OjpnZXQ8Tj4oYXJncykgdG8gZ2V0IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCBpbiB0aGUg
dHVwbGUuCi0vLyAgICAgfQotLy8gICAgIC4uLgotLy8gICB9OwotLy8KLS8vIFRoZW4gdGhlIHVz
ZXIgY3JlYXRlcyB0aGUgcG9seW1vcnBoaWMgYWN0aW9uIHVzaW5nCi0vLyBNYWtlUG9seW1vcnBo
aWNBY3Rpb24ob2JqZWN0KSB3aGVyZSBvYmplY3QgaGFzIHR5cGUgRm9vQWN0aW9uLiAgU2VlCi0v
LyB0aGUgZGVmaW5pdGlvbiBvZiBSZXR1cm4odm9pZCkgYW5kIFNldEFyZ3VtZW50UG9pbnRlZTxO
Pih2YWx1ZSkgZm9yCi0vLyBjb21wbGV0ZSBleGFtcGxlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJ
bXBsPgotY2xhc3MgUG9seW1vcnBoaWNBY3Rpb24gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgUG9s
eW1vcnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCkgOiBpbXBsXyhpbXBsKSB7fQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBGPgotICBvcGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7Ci0gICAg
cmV0dXJuIEFjdGlvbjxGPihuZXcgTW9ub21vcnBoaWNJbXBsPEY+KGltcGxfKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBjbGFzcyBNb25vbW9ycGhpY0lt
cGwgOiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEY+IHsKLSAgIHB1YmxpYzoKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIGludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVu
dFR1cGxlOwotCi0gICAgZXhwbGljaXQgTW9ub21vcnBoaWNJbXBsKGNvbnN0IEltcGwmIGltcGwp
IDogaW1wbF8oaW1wbCkge30KLQotICAgIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJn
dW1lbnRUdXBsZSYgYXJncykgewotICAgICAgcmV0dXJuIGltcGxfLnRlbXBsYXRlIFBlcmZvcm08
UmVzdWx0PihhcmdzKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSW1wbCBpbXBsXzsKLQot
ICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTW9ub21vcnBoaWNJbXBsKTsKLSAgfTsKLQotICBJ
bXBsIGltcGxfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oUG9seW1vcnBoaWNBY3Rpb24p
OwotfTsKLQotLy8gQ3JlYXRlcyBhbiBBY3Rpb24gZnJvbSBpdHMgaW1wbGVtZW50YXRpb24gYW5k
IHJldHVybnMgaXQuICBUaGUKLS8vIGNyZWF0ZWQgQWN0aW9uIG9iamVjdCBvd25zIHRoZSBpbXBs
ZW1lbnRhdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotQWN0aW9uPEY+IE1ha2VBY3Rpb24o
QWN0aW9uSW50ZXJmYWNlPEY+KiBpbXBsKSB7Ci0gIHJldHVybiBBY3Rpb248Rj4oaW1wbCk7Ci19
Ci0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBhY3Rpb24gZnJvbSBpdHMgaW1wbGVtZW50YXRp
b24uICBUaGlzIGlzCi0vLyBlYXNpZXIgdG8gdXNlIHRoYW4gdGhlIFBvbHltb3JwaGljQWN0aW9u
PEltcGw+IGNvbnN0cnVjdG9yIGFzIGl0Ci0vLyBkb2Vzbid0IHJlcXVpcmUgeW91IHRvIGV4cGxp
Y2l0bHkgd3JpdGUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50LCBlLmcuCi0vLwotLy8gICBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oZm9vKTsKLS8vIHZzCi0vLyAgIFBvbHltb3JwaGljQWN0aW9uPFR5cGVP
ZkZvbz4oZm9vKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgotaW5saW5lIFBvbHltb3JwaGlj
QWN0aW9uPEltcGw+IE1ha2VQb2x5bW9ycGhpY0FjdGlvbihjb25zdCBJbXBsJiBpbXBsKSB7Ci0g
IHJldHVybiBQb2x5bW9ycGhpY0FjdGlvbjxJbXBsPihpbXBsKTsKLX0KLQotbmFtZXNwYWNlIGlu
dGVybmFsIHsKLQotLy8gQWxsb3dzIGFuIEFjdGlvbjxGMj4gb2JqZWN0IHRvIHBvc2UgYXMgYW4g
QWN0aW9uPEYxPiwgYXMgbG9uZyBhcyBGMgotLy8gYW5kIEYxIGFyZSBjb21wYXRpYmxlLgotdGVt
cGxhdGUgPHR5cGVuYW1lIEYxLCB0eXBlbmFtZSBGMj4KLWNsYXNzIEFjdGlvbkFkYXB0b3IgOiBw
dWJsaWMgQWN0aW9uSW50ZXJmYWNlPEYxPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1l
IGludGVybmFsOjpGdW5jdGlvbjxGMT46OlJlc3VsdCBSZXN1bHQ7Ci0gIHR5cGVkZWYgdHlwZW5h
bWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEYxPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwot
Ci0gIGV4cGxpY2l0IEFjdGlvbkFkYXB0b3IoY29uc3QgQWN0aW9uPEYyPiYgZnJvbSkgOiBpbXBs
Xyhmcm9tLmltcGxfKSB7fQotCi0gIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1l
bnRUdXBsZSYgYXJncykgewotICAgIHJldHVybiBpbXBsXy0+UGVyZm9ybShhcmdzKTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8QWN0aW9uSW50ZXJmYWNl
PEYyPiA+IGltcGxfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQWN0aW9uQWRhcHRvcik7
Ci19OwotCi0vLyBIZWxwZXIgc3RydWN0IHRvIHNwZWNpYWxpemUgUmV0dXJuQWN0aW9uIHRvIGV4
ZWN1dGUgYSBtb3ZlIGluc3RlYWQgb2YgYSBjb3B5Ci0vLyBvbiByZXR1cm4uIFVzZWZ1bCBmb3Ig
bW92ZS1vbmx5IHR5cGVzLCBidXQgY291bGQgYmUgdXNlZCBvbiBhbnkgdHlwZS4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotc3RydWN0IEJ5TW92ZVdyYXBwZXIgewotICBleHBsaWNpdCBCeU1vdmVX
cmFwcGVyKFQgdmFsdWUpIDogcGF5bG9hZChpbnRlcm5hbDo6bW92ZSh2YWx1ZSkpIHt9Ci0gIFQg
cGF5bG9hZDsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIFJldHVybih4KSBh
Y3Rpb24sIHdoaWNoIGNhbiBiZSB1c2VkIGluCi0vLyBhbnkgZnVuY3Rpb24gdGhhdCByZXR1cm5z
IHRoZSB0eXBlIG9mIHgsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFyZ3VtZW50Ci0vLyB0eXBlcy4KLS8v
Ci0vLyBOb3RlOiBUaGUgdmFsdWUgcGFzc2VkIGludG8gUmV0dXJuIG11c3QgYmUgY29udmVydGVk
IGludG8KLS8vIEZ1bmN0aW9uPEY+OjpSZXN1bHQgd2hlbiB0aGlzIGFjdGlvbiBpcyBjYXN0IHRv
IEFjdGlvbjxGPiByYXRoZXIgdGhhbgotLy8gd2hlbiB0aGF0IGFjdGlvbiBpcyBwZXJmb3JtZWQu
IFRoaXMgaXMgaW1wb3J0YW50IGluIHNjZW5hcmlvcyBsaWtlCi0vLwotLy8gTU9DS19NRVRIT0Qx
KE1ldGhvZCwgVChVKSk7Ci0vLyAuLi4KLS8vIHsKLS8vICAgRm9vIGZvbzsKLS8vICAgWCB4KCZm
b28pOwotLy8gICBFWFBFQ1RfQ0FMTChtb2NrLCBNZXRob2QoXykpLldpbGxPbmNlKFJldHVybih4
KSk7Ci0vLyB9Ci0vLwotLy8gSW4gdGhlIGV4YW1wbGUgYWJvdmUgdGhlIHZhcmlhYmxlIHggaG9s
ZHMgcmVmZXJlbmNlIHRvIGZvbyB3aGljaCBsZWF2ZXMKLS8vIHNjb3BlIGFuZCBnZXRzIGRlc3Ry
b3llZC4gIElmIGNvcHlpbmcgWCBqdXN0IGNvcGllcyBhIHJlZmVyZW5jZSB0byBmb28sCi0vLyB0
aGF0IGNvcHkgd2lsbCBiZSBsZWZ0IHdpdGggYSBoYW5naW5nIHJlZmVyZW5jZS4gIElmIGNvbnZl
cnNpb24gdG8gVAotLy8gbWFrZXMgYSBjb3B5IG9mIGZvbywgdGhlIGFib3ZlIGNvZGUgaXMgc2Fm
ZS4gVG8gc3VwcG9ydCB0aGF0IHNjZW5hcmlvLCB3ZQotLy8gbmVlZCB0byBtYWtlIHN1cmUgdGhh
dCB0aGUgdHlwZSBjb252ZXJzaW9uIGhhcHBlbnMgaW5zaWRlIHRoZSBFWFBFQ1RfQ0FMTAotLy8g
c3RhdGVtZW50LCBhbmQgY29udmVyc2lvbiBvZiB0aGUgcmVzdWx0IG9mIFJldHVybiB0byBBY3Rp
b248VChVKT4gaXMgYQotLy8gZ29vZCBwbGFjZSBmb3IgdGhhdC4KLS8vCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUj4KLWNsYXNzIFJldHVybkFjdGlvbiB7Ci0gcHVibGljOgotICAvLyBDb25zdHJ1Y3Rz
IGEgUmV0dXJuQWN0aW9uIG9iamVjdCBmcm9tIHRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZC4KLSAg
Ly8gJ3ZhbHVlJyBpcyBwYXNzZWQgYnkgdmFsdWUgaW5zdGVhZCBvZiBieSBjb25zdCByZWZlcmVu
Y2UgaW4gb3JkZXIKLSAgLy8gdG8gYWxsb3cgUmV0dXJuKCJzdHJpbmcgbGl0ZXJhbCIpIHRvIGNv
bXBpbGUuCi0gIGV4cGxpY2l0IFJldHVybkFjdGlvbihSIHZhbHVlKSA6IHZhbHVlXyhuZXcgUihp
bnRlcm5hbDo6bW92ZSh2YWx1ZSkpKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBjb252
ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBSZXR1cm4oeCkgdG8gYmUKLSAgLy8gdXNlZCBpbiBBTlkg
ZnVuY3Rpb24gdGhhdCByZXR1cm5zIHgncyB0eXBlLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
LSAgb3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgewotICAgIC8vIEFzc2VydCBzdGF0ZW1lbnQg
YmVsb25ncyBoZXJlIGJlY2F1c2UgdGhpcyBpcyB0aGUgYmVzdCBwbGFjZSB0byB2ZXJpZnkKLSAg
ICAvLyBjb25kaXRpb25zIG9uIEYuIEl0IHByb2R1Y2VzIHRoZSBjbGVhcmVzdCBlcnJvciBtZXNz
YWdlcwotICAgIC8vIGluIG1vc3QgY29tcGlsZXJzLgotICAgIC8vIEltcGwgcmVhbGx5IGJlbG9u
Z3MgaW4gdGhpcyBzY29wZSBhcyBhIGxvY2FsIGNsYXNzIGJ1dCBjYW4ndAotICAgIC8vIGJlY2F1
c2UgTVNWQyBwcm9kdWNlcyBkdXBsaWNhdGUgc3ltYm9scyBpbiBkaWZmZXJlbnQgdHJhbnNsYXRp
b24gdW5pdHMKLSAgICAvLyBpbiB0aGlzIGNhc2UuIFVudGlsIE1TIGZpeGVzIHRoYXQgYnVnIHdl
IHB1dCBJbXBsIGludG8gdGhlIGNsYXNzIHNjb3BlCi0gICAgLy8gYW5kIHB1dCB0aGUgdHlwZWRl
ZiBib3RoIGhlcmUgKGZvciB1c2UgaW4gYXNzZXJ0IHN0YXRlbWVudCkgYW5kCi0gICAgLy8gaW4g
dGhlIEltcGwgY2xhc3MuIEJ1dCBib3RoIGRlZmluaXRpb25zIG11c3QgYmUgdGhlIHNhbWUuCi0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICBHVEVT
VF9DT01QSUxFX0FTU0VSVF8oCi0gICAgICAgICFpc19yZWZlcmVuY2U8UmVzdWx0Pjo6dmFsdWUs
Ci0gICAgICAgIHVzZV9SZXR1cm5SZWZfaW5zdGVhZF9vZl9SZXR1cm5fdG9fcmV0dXJuX2FfcmVm
ZXJlbmNlKTsKLSAgICByZXR1cm4gQWN0aW9uPEY+KG5ldyBJbXBsPFIsIEY+KHZhbHVlXykpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBJbXBsZW1lbnRzIHRoZSBSZXR1cm4oeCkgYWN0aW9uIGZv
ciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSBGLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUl8s
IHR5cGVuYW1lIEY+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEY+IHsK
LSAgIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVz
dWx0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJn
dW1lbnRUdXBsZTsKLQotICAgIC8vIFRoZSBpbXBsaWNpdCBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVu
IFJlc3VsdCBoYXMgbW9yZSB0aGFuIG9uZQotICAgIC8vIHNpbmdsZS1hcmd1bWVudCBjb25zdHJ1
Y3RvciAoZS5nLiBSZXN1bHQgaXMgc3RkOjp2ZWN0b3I8aW50PikgYW5kIFIKLSAgICAvLyBoYXMg
YSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgdGVtcGxhdGUuICBJbiB0aGF0IGNhc2UsIHZhbHVl
Xyh2YWx1ZSkKLSAgICAvLyB3b24ndCBjb21waWxlIGFzIHRoZSBjb21waWxlciBkb2Vzbid0IGtu
b3duIHdoaWNoIGNvbnN0cnVjdG9yIG9mCi0gICAgLy8gUmVzdWx0IHRvIGNhbGwuICBJbXBsaWNp
dENhc3RfIGZvcmNlcyB0aGUgY29tcGlsZXIgdG8gY29udmVydCBSIHRvCi0gICAgLy8gUmVzdWx0
IHdpdGhvdXQgY29uc2lkZXJpbmcgZXhwbGljaXQgY29uc3RydWN0b3JzLCB0aHVzIHJlc29sdmlu
ZyB0aGUKLSAgICAvLyBhbWJpZ3VpdHkuIHZhbHVlXyBpcyB0aGVuIGluaXRpYWxpemVkIHVzaW5n
IGl0cyBjb3B5IGNvbnN0cnVjdG9yLgotICAgIGV4cGxpY2l0IEltcGwoY29uc3QgbGlua2VkX3B0
cjxSPiYgdmFsdWUpCi0gICAgICAgIDogdmFsdWVfYmVmb3JlX2Nhc3RfKCp2YWx1ZSksCi0gICAg
ICAgICAgdmFsdWVfKEltcGxpY2l0Q2FzdF88UmVzdWx0Pih2YWx1ZV9iZWZvcmVfY2FzdF8pKSB7
fQotCi0gICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJikgeyBy
ZXR1cm4gdmFsdWVfOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRf
KCFpc19yZWZlcmVuY2U8UmVzdWx0Pjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IFJlc3VsdF9jYW5ub3RfYmVfYV9yZWZlcmVuY2VfdHlwZSk7Ci0gICAgLy8gV2Ugc2F2ZSB0aGUg
dmFsdWUgYmVmb3JlIGNhc3RpbmcganVzdCBpbiBjYXNlIGl0IGlzIGJlaW5nIGNhc3QgdG8gYQot
ICAgIC8vIHdyYXBwZXIgdHlwZS4KLSAgICBSIHZhbHVlX2JlZm9yZV9jYXN0XzsKLSAgICBSZXN1
bHQgdmFsdWVfOwotCi0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbXBsKTsK
LSAgfTsKLQotICAvLyBQYXJ0aWFsbHkgc3BlY2lhbGl6ZSBmb3IgQnlNb3ZlV3JhcHBlci4gVGhp
cyB2ZXJzaW9uIG9mIFJldHVybkFjdGlvbiB3aWxsCi0gIC8vIG1vdmUgaXRzIGNvbnRlbnRzIGlu
c3RlYWQuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSXywgdHlwZW5hbWUgRj4KLSAgY2xhc3MgSW1w
bDxCeU1vdmVXcmFwcGVyPFJfPiwgRj4gOiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEY+IHsKLSAg
IHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0
OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1l
bnRUdXBsZTsKLQotICAgIGV4cGxpY2l0IEltcGwoY29uc3QgbGlua2VkX3B0cjxSPiYgd3JhcHBl
cikKLSAgICAgICAgOiBwZXJmb3JtZWRfKGZhbHNlKSwgd3JhcHBlcl8od3JhcHBlcikge30KLQot
ICAgIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYpIHsKLSAgICAg
IEdURVNUX0NIRUNLXyghcGVyZm9ybWVkXykKLSAgICAgICAgICA8PCAiQSBCeU1vdmUoKSBhY3Rp
b24gc2hvdWxkIG9ubHkgYmUgcGVyZm9ybWVkIG9uY2UuIjsKLSAgICAgIHBlcmZvcm1lZF8gPSB0
cnVlOwotICAgICAgcmV0dXJuIGludGVybmFsOjptb3ZlKHdyYXBwZXJfLT5wYXlsb2FkKTsKLSAg
ICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgYm9vbCBwZXJmb3JtZWRfOwotICAgIGNvbnN0IGxpbmtl
ZF9wdHI8Uj4gd3JhcHBlcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwot
ICB9OwotCi0gIGNvbnN0IGxpbmtlZF9wdHI8Uj4gdmFsdWVfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oUmV0dXJuQWN0aW9uKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFJldHVybk51
bGwoKSBhY3Rpb24uCi1jbGFzcyBSZXR1cm5OdWxsQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIC8vIEFs
bG93cyBSZXR1cm5OdWxsKCkgdG8gYmUgdXNlZCBpbiBhbnkgcG9pbnRlci1yZXR1cm5pbmcgZnVu
Y3Rpb24uIEluIEMrKzExCi0gIC8vIHRoaXMgaXMgZW5mb3JjZWQgYnkgcmV0dXJuaW5nIG51bGxw
dHIsIGFuZCBpbiBub24tQysrMTEgYnkgYXNzZXJ0aW5nIGEKLSAgLy8gcG9pbnRlciB0eXBlIG9u
IGNvbXBpbGUgdGltZS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJn
dW1lbnRUdXBsZT4KLSAgc3RhdGljIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUm
KSB7Ci0jaWYgR1RFU1RfTEFOR19DWFgxMQotICAgIHJldHVybiBudWxscHRyOwotI2Vsc2UKLSAg
ICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oaW50ZXJuYWw6OmlzX3BvaW50ZXI8UmVzdWx0Pjo6dmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybk51bGxfY2FuX2JlX3VzZWRfdG9f
cmV0dXJuX2FfcG9pbnRlcl9vbmx5KTsKLSAgICByZXR1cm4gTlVMTDsKLSNlbmRpZiAgLy8gR1RF
U1RfTEFOR19DWFgxMQotICB9Ci19OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBSZXR1cm4oKSBhY3Rp
b24uCi1jbGFzcyBSZXR1cm5Wb2lkQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIC8vIEFsbG93cyBSZXR1
cm4oKSB0byBiZSB1c2VkIGluIGFueSB2b2lkLXJldHVybmluZyBmdW5jdGlvbi4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KLSAgc3RhdGljIHZv
aWQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJikgewotICAgIENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsPHZvaWQsIFJlc3VsdD4oKTsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgcG9s
eW1vcnBoaWMgUmV0dXJuUmVmKHgpIGFjdGlvbiwgd2hpY2ggY2FuIGJlIHVzZWQKLS8vIGluIGFu
eSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHR5cGUgb2YgeCwKLS8v
IHJlZ2FyZGxlc3Mgb2YgdGhlIGFyZ3VtZW50IHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBSZXR1cm5SZWZBY3Rpb24gewotIHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0cyBhIFJl
dHVyblJlZkFjdGlvbiBvYmplY3QgZnJvbSB0aGUgcmVmZXJlbmNlIHRvIGJlIHJldHVybmVkLgot
ICBleHBsaWNpdCBSZXR1cm5SZWZBY3Rpb24oVCYgcmVmKSA6IHJlZl8ocmVmKSB7fSAgLy8gTk9M
SU5UCi0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dz
IFJldHVyblJlZih4KSB0byBiZQotICAvLyB1c2VkIGluIEFOWSBmdW5jdGlvbiB0aGF0IHJldHVy
bnMgYSByZWZlcmVuY2UgdG8geCdzIHR5cGUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBv
cGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlv
bjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICAvLyBBc3NlcnRzIHRoYXQgdGhlIGZ1bmN0aW9uIHJl
dHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLiAgVGhpcwotICAgIC8vIGNhdGNoZXMgdGhlIHVzZXIg
ZXJyb3Igb2YgdXNpbmcgUmV0dXJuUmVmKHgpIHdoZW4gUmV0dXJuKHgpCi0gICAgLy8gc2hvdWxk
IGJlIHVzZWQsIGFuZCBnZW5lcmF0ZXMgc29tZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UuCi0gICAg
R1RFU1RfQ09NUElMRV9BU1NFUlRfKGludGVybmFsOjppc19yZWZlcmVuY2U8UmVzdWx0Pjo6dmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9SZXR1cm5faW5zdGVhZF9vZl9SZXR1
cm5SZWZfdG9fcmV0dXJuX2FfdmFsdWUpOwotICAgIHJldHVybiBBY3Rpb248Rj4obmV3IEltcGw8
Rj4ocmVmXykpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBJbXBsZW1lbnRzIHRoZSBSZXR1cm5S
ZWYoeCkgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSBGLgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4g
ewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBS
ZXN1bHQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBB
cmd1bWVudFR1cGxlOwotCi0gICAgZXhwbGljaXQgSW1wbChUJiByZWYpIDogcmVmXyhyZWYpIHt9
ICAvLyBOT0xJTlQKLQotICAgIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRU
dXBsZSYpIHsKLSAgICAgIHJldHVybiByZWZfOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBU
JiByZWZfOwotCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKLSAgfTsKLQotICBU
JiByZWZfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oUmV0dXJuUmVmQWN0aW9uKTsKLX07
Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIFJldHVyblJlZk9mQ29weSh4KSBhY3Rp
b24sIHdoaWNoIGNhbiBiZQotLy8gdXNlZCBpbiBhbnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEg
cmVmZXJlbmNlIHRvIHRoZSB0eXBlIG9mIHgsCi0vLyByZWdhcmRsZXNzIG9mIHRoZSBhcmd1bWVu
dCB0eXBlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgUmV0dXJuUmVmT2ZDb3B5QWN0
aW9uIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMgYSBSZXR1cm5SZWZPZkNvcHlBY3Rpb24g
b2JqZWN0IGZyb20gdGhlIHJlZmVyZW5jZSB0bwotICAvLyBiZSByZXR1cm5lZC4KLSAgZXhwbGlj
aXQgUmV0dXJuUmVmT2ZDb3B5QWN0aW9uKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkg
e30gIC8vIE5PTElOVAotCi0gIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJh
dG9yIGFsbG93cyBSZXR1cm5SZWZPZkNvcHkoeCkgdG8gYmUKLSAgLy8gdXNlZCBpbiBBTlkgZnVu
Y3Rpb24gdGhhdCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHgncyB0eXBlLgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRj4KLSAgb3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgewotICAgIHR5cGVkZWYg
dHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0gICAgLy8gQXNzZXJ0cyB0aGF0
IHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZS4gIFRoaXMKLSAgICAvLyBj
YXRjaGVzIHRoZSB1c2VyIGVycm9yIG9mIHVzaW5nIFJldHVyblJlZk9mQ29weSh4KSB3aGVuIFJl
dHVybih4KQotICAgIC8vIHNob3VsZCBiZSB1c2VkLCBhbmQgZ2VuZXJhdGVzIHNvbWUgaGVscGZ1
bCBlcnJvciBtZXNzYWdlLgotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygKLSAgICAgICAgaW50
ZXJuYWw6OmlzX3JlZmVyZW5jZTxSZXN1bHQ+Ojp2YWx1ZSwKLSAgICAgICAgdXNlX1JldHVybl9p
bnN0ZWFkX29mX1JldHVyblJlZk9mQ29weV90b19yZXR1cm5fYV92YWx1ZSk7Ci0gICAgcmV0dXJu
IEFjdGlvbjxGPihuZXcgSW1wbDxGPih2YWx1ZV8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8g
SW1wbGVtZW50cyB0aGUgUmV0dXJuUmVmT2ZDb3B5KHgpIGFjdGlvbiBmb3IgYSBwYXJ0aWN1bGFy
IGZ1bmN0aW9uIHR5cGUgRi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGNsYXNzIEltcGwg
OiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEY+IHsKLSAgIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5
cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICAgIGV4cGxpY2l0
IEltcGwoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fSAgLy8gTk9MSU5UCi0KLSAg
ICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmKSB7Ci0gICAgICBy
ZXR1cm4gdmFsdWVfOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBUIHZhbHVlXzsKLQotICAg
IEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7Ci0gIH07Ci0KLSAgY29uc3QgVCB2YWx1ZV87
Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSZXR1cm5SZWZPZkNvcHlBY3Rpb24pOwotfTsK
LQotLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgRG9EZWZhdWx0KCkgYWN0aW9uLgotY2xh
c3MgRG9EZWZhdWx0QWN0aW9uIHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBj
b252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBEb0RlZmF1bHQoKSB0byBiZQotICAvLyB1c2VkIGlu
IGFueSBmdW5jdGlvbi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIG9wZXJhdG9yIEFjdGlv
bjxGPigpIGNvbnN0IHsgcmV0dXJuIEFjdGlvbjxGPihOVUxMKTsgfQotfTsKLQotLy8gSW1wbGVt
ZW50cyB0aGUgQXNzaWduIGFjdGlvbiB0byBzZXQgYSBnaXZlbiBwb2ludGVyIHJlZmVyZW50IHRv
IGEKLS8vIHBhcnRpY3VsYXIgdmFsdWUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgotY2xhc3MgQXNzaWduQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIEFzc2lnbkFjdGlvbihUMSog
cHRyLCBUMiB2YWx1ZSkgOiBwdHJfKHB0ciksIHZhbHVlXyh2YWx1ZSkge30KLQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotICB2b2lkIFBlcmZv
cm0oY29uc3QgQXJndW1lbnRUdXBsZSYgLyogYXJncyAqLykgY29uc3QgewotICAgICpwdHJfID0g
dmFsdWVfOwotICB9Ci0KLSBwcml2YXRlOgotICBUMSogY29uc3QgcHRyXzsKLSAgY29uc3QgVDIg
dmFsdWVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQXNzaWduQWN0aW9uKTsKLX07Ci0K
LSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gSW1wbGVtZW50cyB0aGUgU2V0RXJy
bm9BbmRSZXR1cm4gYWN0aW9uIHRvIHNpbXVsYXRlIHJldHVybiBmcm9tCi0vLyB2YXJpb3VzIHN5
c3RlbSBjYWxscyBhbmQgbGliYyBmdW5jdGlvbnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFNldEVycm5vQW5kUmV0dXJuQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIFNldEVycm5vQW5kUmV0
dXJuQWN0aW9uKGludCBlcnJub192YWx1ZSwgVCByZXN1bHQpCi0gICAgICA6IGVycm5vXyhlcnJu
b192YWx1ZSksCi0gICAgICAgIHJlc3VsdF8ocmVzdWx0KSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotICBSZXN1bHQgUGVyZm9ybShjb25z
dCBBcmd1bWVudFR1cGxlJiAvKiBhcmdzICovKSBjb25zdCB7Ci0gICAgZXJybm8gPSBlcnJub187
Ci0gICAgcmV0dXJuIHJlc3VsdF87Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IGludCBlcnJu
b187Ci0gIGNvbnN0IFQgcmVzdWx0XzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFNldEVy
cm5vQW5kUmV0dXJuQWN0aW9uKTsKLX07Ci0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0KLS8vIEltcGxlbWVudHMgdGhlIFNldEFyZ3VtZW50UG9pbnRlZTxOPih4KSBhY3Rp
b24gZm9yIGFueSBmdW5jdGlvbgotLy8gd2hvc2UgTi10aCBhcmd1bWVudCAoMC1iYXNlZCkgaXMg
YSBwb2ludGVyIHRvIHgncyB0eXBlLiAgVGhlCi0vLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIga0lzUHJv
dG8gaXMgdHJ1ZSBpZmYgdHlwZSBBIGlzIFByb3RvY29sTWVzc2FnZSwKLS8vIHByb3RvMjo6TWVz
c2FnZSwgb3IgYSBzdWItY2xhc3Mgb2YgdGhvc2UuCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVu
YW1lIEEsIGJvb2wga0lzUHJvdG8+Ci1jbGFzcyBTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb24gewot
IHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0cyBhbiBhY3Rpb24gdGhhdCBzZXRzIHRoZSB2YXJpYWJs
ZSBwb2ludGVkIHRvIGJ5IHRoZQotICAvLyBOLXRoIGZ1bmN0aW9uIGFyZ3VtZW50IHRvICd2YWx1
ZScuCi0gIGV4cGxpY2l0IFNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbihjb25zdCBBJiB2YWx1ZSkg
OiB2YWx1ZV8odmFsdWUpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZT4KLSAgdm9pZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFy
Z3MpIGNvbnN0IHsKLSAgICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBSZXN1bHQ+KCk7
Ci0gICAgKjo6dGVzdGluZzo6Z2V0PE4+KGFyZ3MpID0gdmFsdWVfOwotICB9Ci0KLSBwcml2YXRl
OgotICBjb25zdCBBIHZhbHVlXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFNldEFyZ3Vt
ZW50UG9pbnRlZUFjdGlvbik7Ci19OwotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFBy
b3RvPgotY2xhc3MgU2V0QXJndW1lbnRQb2ludGVlQWN0aW9uPE4sIFByb3RvLCB0cnVlPiB7Ci0g
cHVibGljOgotICAvLyBDb25zdHJ1Y3RzIGFuIGFjdGlvbiB0aGF0IHNldHMgdGhlIHZhcmlhYmxl
IHBvaW50ZWQgdG8gYnkgdGhlCi0gIC8vIE4tdGggZnVuY3Rpb24gYXJndW1lbnQgdG8gJ3Byb3Rv
Jy4gIEJvdGggUHJvdG9jb2xNZXNzYWdlIGFuZAotICAvLyBwcm90bzI6Ok1lc3NhZ2UgaGF2ZSB0
aGUgQ29weUZyb20oKSBtZXRob2QsIHNvIHRoZSBzYW1lCi0gIC8vIGltcGxlbWVudGF0aW9uIHdv
cmtzIGZvciBib3RoLgotICBleHBsaWNpdCBTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb24oY29uc3Qg
UHJvdG8mIHByb3RvKSA6IHByb3RvXyhuZXcgUHJvdG8pIHsKLSAgICBwcm90b18tPkNvcHlGcm9t
KHByb3RvKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFy
Z3VtZW50VHVwbGU+Ci0gIHZvaWQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBj
b25zdCB7Ci0gICAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgUmVzdWx0PigpOwotICAg
IDo6dGVzdGluZzo6Z2V0PE4+KGFyZ3MpLT5Db3B5RnJvbSgqcHJvdG9fKTsKLSAgfQotCi0gcHJp
dmF0ZToKLSAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8UHJvdG8+IHByb3RvXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKFNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbik7Ci19OwotCi0v
LyBJbXBsZW1lbnRzIHRoZSBJbnZva2VXaXRob3V0QXJncyhmKSBhY3Rpb24uICBUaGUgdGVtcGxh
dGUgYXJndW1lbnQKLS8vIEZ1bmN0aW9uSW1wbCBpcyB0aGUgaW1wbGVtZW50YXRpb24gdHlwZSBv
ZiBmLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEKLS8vIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5j
dG9yLiAgSW52b2tlV2l0aG91dEFyZ3MoZikgY2FuIGJlIHVzZWQgYXMgYW4KLS8vIEFjdGlvbjxG
PiBhcyBsb25nIGFzIGYncyB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCBGIChpLmUuIGYgY2FuIGJl
Ci0vLyBhc3NpZ25lZCB0byBhIHRyMTo6ZnVuY3Rpb248Rj4pLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0aW9uSW1wbD4KLWNsYXNzIEludm9rZVdpdGhvdXRBcmdzQWN0aW9uIHsKLSBwdWJsaWM6
Ci0gIC8vIFRoZSBjJ3RvciBtYWtlcyBhIGNvcHkgb2YgZnVuY3Rpb25faW1wbCAoZWl0aGVyIGEg
ZnVuY3Rpb24KLSAgLy8gcG9pbnRlciBvciBhIGZ1bmN0b3IpLgotICBleHBsaWNpdCBJbnZva2VX
aXRob3V0QXJnc0FjdGlvbihGdW5jdGlvbkltcGwgZnVuY3Rpb25faW1wbCkKLSAgICAgIDogZnVu
Y3Rpb25faW1wbF8oZnVuY3Rpb25faW1wbCkge30KLQotICAvLyBBbGxvd3MgSW52b2tlV2l0aG91
dEFyZ3MoZikgdG8gYmUgdXNlZCBhcyBhbnkgYWN0aW9uIHdob3NlIHR5cGUgaXMKLSAgLy8gY29t
cGF0aWJsZSB3aXRoIGYuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFy
Z3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmKSB7IHJl
dHVybiBmdW5jdGlvbl9pbXBsXygpOyB9Ci0KLSBwcml2YXRlOgotICBGdW5jdGlvbkltcGwgZnVu
Y3Rpb25faW1wbF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbnZva2VXaXRob3V0QXJn
c0FjdGlvbik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBJbnZva2VXaXRob3V0QXJncyhvYmpl
Y3RfcHRyLCAmQ2xhc3M6Ok1ldGhvZCkgYWN0aW9uLgotdGVtcGxhdGUgPGNsYXNzIENsYXNzLCB0
eXBlbmFtZSBNZXRob2RQdHI+Ci1jbGFzcyBJbnZva2VNZXRob2RXaXRob3V0QXJnc0FjdGlvbiB7
Ci0gcHVibGljOgotICBJbnZva2VNZXRob2RXaXRob3V0QXJnc0FjdGlvbihDbGFzcyogb2JqX3B0
ciwgTWV0aG9kUHRyIG1ldGhvZF9wdHIpCi0gICAgICA6IG9ial9wdHJfKG9ial9wdHIpLCBtZXRo
b2RfcHRyXyhtZXRob2RfcHRyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVw
bGUmKSBjb25zdCB7Ci0gICAgcmV0dXJuIChvYmpfcHRyXy0+Km1ldGhvZF9wdHJfKSgpOwotICB9
Ci0KLSBwcml2YXRlOgotICBDbGFzcyogY29uc3Qgb2JqX3B0cl87Ci0gIGNvbnN0IE1ldGhvZFB0
ciBtZXRob2RfcHRyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZU1ldGhvZFdp
dGhvdXRBcmdzQWN0aW9uKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIElnbm9yZVJlc3VsdChh
Y3Rpb24pIGFjdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBBPgotY2xhc3MgSWdub3JlUmVzdWx0
QWN0aW9uIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IElnbm9yZVJlc3VsdEFjdGlvbihjb25zdCBB
JiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
Ci0gIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsKLSAgICAvLyBBc3NlcnQgc3RhdGVtZW50
IGJlbG9uZ3MgaGVyZSBiZWNhdXNlIHRoaXMgaXMgdGhlIGJlc3QgcGxhY2UgdG8gdmVyaWZ5Ci0g
ICAgLy8gY29uZGl0aW9ucyBvbiBGLiBJdCBwcm9kdWNlcyB0aGUgY2xlYXJlc3QgZXJyb3IgbWVz
c2FnZXMKLSAgICAvLyBpbiBtb3N0IGNvbXBpbGVycy4KLSAgICAvLyBJbXBsIHJlYWxseSBiZWxv
bmdzIGluIHRoaXMgc2NvcGUgYXMgYSBsb2NhbCBjbGFzcyBidXQgY2FuJ3QKLSAgICAvLyBiZWNh
dXNlIE1TVkMgcHJvZHVjZXMgZHVwbGljYXRlIHN5bWJvbHMgaW4gZGlmZmVyZW50IHRyYW5zbGF0
aW9uIHVuaXRzCi0gICAgLy8gaW4gdGhpcyBjYXNlLiBVbnRpbCBNUyBmaXhlcyB0aGF0IGJ1ZyB3
ZSBwdXQgSW1wbCBpbnRvIHRoZSBjbGFzcyBzY29wZQotICAgIC8vIGFuZCBwdXQgdGhlIHR5cGVk
ZWYgYm90aCBoZXJlIChmb3IgdXNlIGluIGFzc2VydCBzdGF0ZW1lbnQpIGFuZAotICAgIC8vIGlu
IHRoZSBJbXBsIGNsYXNzLiBCdXQgYm90aCBkZWZpbml0aW9ucyBtdXN0IGJlIHRoZSBzYW1lLgot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0
OwotCi0gICAgLy8gQXNzZXJ0cyBhdCBjb21waWxlIHRpbWUgdGhhdCBGIHJldHVybnMgdm9pZC4K
LSAgICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBSZXN1bHQ+KCk7Ci0KLSAgICByZXR1
cm4gQWN0aW9uPEY+KG5ldyBJbXBsPEY+KGFjdGlvbl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgQWN0aW9uSW50ZXJm
YWNlPEY+IHsKLSAgIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5j
dGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpG
dW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0gICAgZXhwbGljaXQg
SW1wbChjb25zdCBBJiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24pIHt9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgICAvLyBQZXJm
b3JtcyB0aGUgYWN0aW9uIGFuZCBpZ25vcmVzIGl0cyByZXN1bHQuCi0gICAgICBhY3Rpb25fLlBl
cmZvcm0oYXJncyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIC8vIFR5cGUgT3JpZ2luYWxG
dW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBGIGV4Y2VwdCB0aGF0IGl0cyByZXR1cm4KLSAgICAvLyB0
eXBlIGlzIElnbm9yZWRWYWx1ZS4KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpGdW5j
dGlvbjxGPjo6TWFrZVJlc3VsdElnbm9yZWRWYWx1ZQotICAgICAgICBPcmlnaW5hbEZ1bmN0aW9u
OwotCi0gICAgY29uc3QgQWN0aW9uPE9yaWdpbmFsRnVuY3Rpb24+IGFjdGlvbl87Ci0KLSAgICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OwotCi0gIGNvbnN0IEEgYWN0aW9uXzsK
LQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKElnbm9yZVJlc3VsdEFjdGlvbik7Ci19OwotCi0v
LyBBIFJlZmVyZW5jZVdyYXBwZXI8VD4gb2JqZWN0IHJlcHJlc2VudHMgYSByZWZlcmVuY2UgdG8g
dHlwZSBULAotLy8gd2hpY2ggY2FuIGJlIGVpdGhlciBjb25zdCBvciBub3QuICBJdCBjYW4gYmUg
ZXhwbGljaXRseSBjb252ZXJ0ZWQKLS8vIGZyb20sIGFuZCBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0
bywgYSBUJi4gIFVubGlrZSBhIHJlZmVyZW5jZSwKLS8vIFJlZmVyZW5jZVdyYXBwZXI8VD4gY2Fu
IGJlIGNvcGllZCBhbmQgY2FuIHN1cnZpdmUgdGVtcGxhdGUgdHlwZQotLy8gaW5mZXJlbmNlLiAg
VGhpcyBpcyB1c2VkIHRvIHN1cHBvcnQgYnktcmVmZXJlbmNlIGFyZ3VtZW50cyBpbiB0aGUKLS8v
IEludm9rZUFyZ3VtZW50PE4+KC4uLikgYWN0aW9uLiAgVGhlIGlkZWEgd2FzIGZyb20gInJlZmVy
ZW5jZQotLy8gd3JhcHBlcnMiIGluIHRyMSwgd2hpY2ggd2UgZG9uJ3QgaGF2ZSBpbiBvdXIgc291
cmNlIHRyZWUgeWV0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZWZlcmVuY2VXcmFw
cGVyIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMgYSBSZWZlcmVuY2VXcmFwcGVyPFQ+IG9i
amVjdCBmcm9tIGEgVCYuCi0gIGV4cGxpY2l0IFJlZmVyZW5jZVdyYXBwZXIoVCYgbF92YWx1ZSkg
OiBwb2ludGVyXygmbF92YWx1ZSkge30gIC8vIE5PTElOVAotCi0gIC8vIEFsbG93cyBhIFJlZmVy
ZW5jZVdyYXBwZXI8VD4gb2JqZWN0IHRvIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvCi0gIC8v
IGEgVCYuCi0gIG9wZXJhdG9yIFQmKCkgY29uc3QgeyByZXR1cm4gKnBvaW50ZXJfOyB9Ci0gcHJp
dmF0ZToKLSAgVCogcG9pbnRlcl87Ci19OwotCi0vLyBBbGxvd3MgdGhlIGV4cHJlc3Npb24gQnlS
ZWYoeCkgdG8gYmUgcHJpbnRlZCBhcyBhIHJlZmVyZW5jZSB0byB4LgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci12b2lkIFByaW50VG8oY29uc3QgUmVmZXJlbmNlV3JhcHBlcjxUPiYgcmVmLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKLSAgVCYgdmFsdWUgPSByZWY7Ci0gIFVuaXZlcnNhbFByaW50ZXI8
VCY+OjpQcmludCh2YWx1ZSwgb3MpOwotfQotCi0vLyBEb2VzIHR3byBhY3Rpb25zIHNlcXVlbnRp
YWxseS4gIFVzZWQgZm9yIGltcGxlbWVudGluZyB0aGUgRG9BbGwoYTEsCi0vLyBhMiwgLi4uKSBh
Y3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0aW9uMj4KLWNs
YXNzIERvQm90aEFjdGlvbiB7Ci0gcHVibGljOgotICBEb0JvdGhBY3Rpb24oQWN0aW9uMSBhY3Rp
b24xLCBBY3Rpb24yIGFjdGlvbjIpCi0gICAgICA6IGFjdGlvbjFfKGFjdGlvbjEpLCBhY3Rpb24y
XyhhY3Rpb24yKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJh
dG9yIGFsbG93cyBEb0FsbChhMSwgLi4uLCBhX24pCi0gIC8vIHRvIGJlIHVzZWQgaW4gQU5ZIGZ1
bmN0aW9uIG9mIGNvbXBhdGlibGUgdHlwZS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIG9w
ZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsKLSAgICByZXR1cm4gQWN0aW9uPEY+KG5ldyBJbXBs
PEY+KGFjdGlvbjFfLCBhY3Rpb24yXykpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBJbXBsZW1l
bnRzIHRoZSBEb0FsbCguLi4pIGFjdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHR5cGUg
Ri4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgQWN0aW9u
SW50ZXJmYWNlPEY+IHsKLSAgIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9u
PEY+OjpSZXN1bHQgUmVzdWx0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFy
Z3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9u
PEY+OjpNYWtlUmVzdWx0Vm9pZCBWb2lkUmVzdWx0OwotCi0gICAgSW1wbChjb25zdCBBY3Rpb248
Vm9pZFJlc3VsdD4mIGFjdGlvbjEsIGNvbnN0IEFjdGlvbjxGPiYgYWN0aW9uMikKLSAgICAgICAg
OiBhY3Rpb24xXyhhY3Rpb24xKSwgYWN0aW9uMl8oYWN0aW9uMikge30KLQotICAgIHZpcnR1YWwg
UmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgewotICAgICAgYWN0aW9u
MV8uUGVyZm9ybShhcmdzKTsKLSAgICAgIHJldHVybiBhY3Rpb24yXy5QZXJmb3JtKGFyZ3MpOwot
ICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBBY3Rpb248Vm9pZFJlc3VsdD4gYWN0aW9u
MV87Ci0gICAgY29uc3QgQWN0aW9uPEY+IGFjdGlvbjJfOwotCi0gICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhJbXBsKTsKLSAgfTsKLQotICBBY3Rpb24xIGFjdGlvbjFfOwotICBBY3Rpb24yIGFj
dGlvbjJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRG9Cb3RoQWN0aW9uKTsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBBbiBVbnVzZWQgb2JqZWN0IGNhbiBiZSBp
bXBsaWNpdGx5IGNvbnN0cnVjdGVkIGZyb20gQU5ZIHZhbHVlLgotLy8gVGhpcyBpcyBoYW5keSB3
aGVuIGRlZmluaW5nIGFjdGlvbnMgdGhhdCBpZ25vcmUgc29tZSBvciBhbGwgb2YgdGhlCi0vLyBt
b2NrIGZ1bmN0aW9uIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBnaXZlbgotLy8KLS8vICAgTU9D
S19NRVRIT0QzKEZvbywgZG91YmxlKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3Vi
bGUgeSkpOwotLy8gICBNT0NLX01FVEhPRDMoQmFyLCBkb3VibGUoaW50IGluZGV4LCBkb3VibGUg
eCwgZG91YmxlIHkpKTsKLS8vCi0vLyBpbnN0ZWFkIG9mCi0vLwotLy8gICBkb3VibGUgRGlzdGFu
Y2VUb09yaWdpbldpdGhMYWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91Ymxl
IHkpIHsKLS8vICAgICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotLy8gICB9Ci0vLyAgIGRvdWJs
ZSBEaXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KGludCBpbmRleCwgZG91YmxlIHgsIGRvdWJsZSB5
KSB7Ci0vLyAgICAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLS8vICAgfQotLy8gICAuLi4KLS8v
ICAgRVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLS8vICAgICAgIC5XaWxsT25j
ZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbCkpOwotLy8gICBFWEVQQ1RfQ0FMTCht
b2NrLCBCYXIoNSwgXywgXykpCi0vLyAgICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9P
cmlnaW5XaXRoSW5kZXgpKTsKLS8vCi0vLyB5b3UgY291bGQgd3JpdGUKLS8vCi0vLyAgIC8vIFdl
IGNhbiBkZWNsYXJlIGFueSB1bmludGVyZXN0aW5nIGFyZ3VtZW50IGFzIFVudXNlZC4KLS8vICAg
ZG91YmxlIERpc3RhbmNlVG9PcmlnaW4oVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLS8v
ICAgICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotLy8gICB9Ci0vLyAgIC4uLgotLy8gICBFWEVQ
Q1RfQ0FMTChtb2NrLCBGb28oImFiYyIsIF8sIF8pKS5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VU
b09yaWdpbikpOwotLy8gICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpLldpbGxPbmNl
KEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7Ci10eXBlZGVmIGludGVybmFsOjpJZ25vcmVkVmFs
dWUgVW51c2VkOwotCi0vLyBUaGlzIGNvbnN0cnVjdG9yIGFsbG93cyB1cyB0byB0dXJuIGFuIEFj
dGlvbjxGcm9tPiBvYmplY3QgaW50byBhbgotLy8gQWN0aW9uPFRvPiwgYXMgbG9uZyBhcyBUbydz
IGFyZ3VtZW50cyBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQKLS8vIHRvIEZyb20ncyBhbmQg
RnJvbSdzIHJldHVybiB0eXBlIGNhbm4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KLS8vIFRv
J3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVG8+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbT4KLUFj
dGlvbjxUbz46OkFjdGlvbihjb25zdCBBY3Rpb248RnJvbT4mIGZyb20pCi0gICAgOiBpbXBsXyhu
ZXcgaW50ZXJuYWw6OkFjdGlvbkFkYXB0b3I8VG8sIEZyb20+KGZyb20pKSB7fQotCi0vLyBDcmVh
dGVzIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgJ3ZhbHVlJy4gICd2YWx1ZScgaXMgcGFzc2VkIGJ5
IHZhbHVlCi0vLyBpbnN0ZWFkIG9mIGNvbnN0IHJlZmVyZW5jZSAtIG90aGVyd2lzZSBSZXR1cm4o
InN0cmluZyBsaXRlcmFsIikKLS8vIHdpbGwgdHJpZ2dlciBhIGNvbXBpbGVyIGVycm9yIGFib3V0
IHVzaW5nIGFycmF5IGFzIGluaXRpYWxpemVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1pbnRl
cm5hbDo6UmV0dXJuQWN0aW9uPFI+IFJldHVybihSIHZhbHVlKSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6UmV0dXJuQWN0aW9uPFI+KGludGVybmFsOjptb3ZlKHZhbHVlKSk7Ci19Ci0KLS8vIENyZWF0
ZXMgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBOVUxMLgotaW5saW5lIFBvbHltb3JwaGljQWN0aW9u
PGludGVybmFsOjpSZXR1cm5OdWxsQWN0aW9uPiBSZXR1cm5OdWxsKCkgewotICByZXR1cm4gTWFr
ZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpSZXR1cm5OdWxsQWN0aW9uKCkpOwotfQotCi0v
LyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgZnJvbSBhIHZvaWQgZnVuY3Rpb24uCi1p
bmxpbmUgUG9seW1vcnBoaWNBY3Rpb248aW50ZXJuYWw6OlJldHVyblZvaWRBY3Rpb24+IFJldHVy
bigpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6UmV0dXJuVm9p
ZEFjdGlvbigpKTsKLX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBy
ZWZlcmVuY2UgdG8gYSB2YXJpYWJsZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotaW5saW5lIGlu
dGVybmFsOjpSZXR1cm5SZWZBY3Rpb248Uj4gUmV0dXJuUmVmKFImIHgpIHsgIC8vIE5PTElOVAot
ICByZXR1cm4gaW50ZXJuYWw6OlJldHVyblJlZkFjdGlvbjxSPih4KTsKLX0KLQotLy8gQ3JlYXRl
cyBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSByZWZlcmVuY2UgdG8gYSBjb3B5IG9mIHRoZQot
Ly8gYXJndW1lbnQuICBUaGUgY29weSBpcyBjcmVhdGVkIHdoZW4gdGhlIGFjdGlvbiBpcyBjb25z
dHJ1Y3RlZCBhbmQKLS8vIGxpdmVzIGFzIGxvbmcgYXMgdGhlIGFjdGlvbi4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSPgotaW5saW5lIGludGVybmFsOjpSZXR1cm5SZWZPZkNvcHlBY3Rpb248Uj4gUmV0
dXJuUmVmT2ZDb3B5KGNvbnN0IFImIHgpIHsKLSAgcmV0dXJuIGludGVybmFsOjpSZXR1cm5SZWZP
ZkNvcHlBY3Rpb248Uj4oeCk7Ci19Ci0KLS8vIE1vZGlmaWVzIHRoZSBwYXJlbnQgYWN0aW9uIChh
IFJldHVybigpIGFjdGlvbikgdG8gcGVyZm9ybSBhIG1vdmUgb2YgdGhlCi0vLyBhcmd1bWVudCBp
bnN0ZWFkIG9mIGEgY29weS4KLS8vIFJldHVybihCeU1vdmUoKSkgYWN0aW9ucyBjYW4gb25seSBi
ZSBleGVjdXRlZCBvbmNlIGFuZCB3aWxsIGFzc2VydCB0aGlzCi0vLyBpbnZhcmlhbnQuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUj4KLWludGVybmFsOjpCeU1vdmVXcmFwcGVyPFI+IEJ5TW92ZShSIHgp
IHsKLSAgcmV0dXJuIGludGVybmFsOjpCeU1vdmVXcmFwcGVyPFI+KGludGVybmFsOjptb3ZlKHgp
KTsKLX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBkb2VzIHRoZSBkZWZhdWx0IGFjdGlv
biBmb3IgdGhlIGdpdmUgbW9jayBmdW5jdGlvbi4KLWlubGluZSBpbnRlcm5hbDo6RG9EZWZhdWx0
QWN0aW9uIERvRGVmYXVsdCgpIHsKLSAgcmV0dXJuIGludGVybmFsOjpEb0RlZmF1bHRBY3Rpb24o
KTsKLX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBzZXRzIHRoZSB2YXJpYWJsZSBwb2lu
dGVkIGJ5IHRoZSBOLXRoCi0vLyAoMC1iYXNlZCkgZnVuY3Rpb24gYXJndW1lbnQgdG8gJ3ZhbHVl
Jy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLVBvbHltb3JwaGljQWN0aW9uPAot
ICBpbnRlcm5hbDo6U2V0QXJndW1lbnRQb2ludGVlQWN0aW9uPAotICAgIE4sIFQsIGludGVybmFs
OjpJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVlPiA+Ci1TZXRBcmdQb2ludGVlKGNvbnN0IFQm
IHgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6U2V0QXJndW1l
bnRQb2ludGVlQWN0aW9uPAotICAgICAgTiwgVCwgaW50ZXJuYWw6OklzQVByb3RvY29sTWVzc2Fn
ZTxUPjo6dmFsdWU+KHgpKTsKLX0KLQotI2lmICEoKEdURVNUX0dDQ19WRVJfICYmIEdURVNUX0dD
Q19WRVJfIDwgNDAwMDApIHx8IEdURVNUX09TX1NZTUJJQU4pCi0vLyBUaGlzIG92ZXJsb2FkIGFs
bG93cyBTZXRBcmdQb2ludGVlKCkgdG8gYWNjZXB0IGEgc3RyaW5nIGxpdGVyYWwuCi0vLyBHQ0Mg
cHJpb3IgdG8gdGhlIHZlcnNpb24gNC4wIGFuZCBTeW1iaWFuIEMrKyBjb21waWxlciBjYW5ub3Qg
ZGlzdGluZ3Vpc2gKLS8vIHRoaXMgb3ZlcmxvYWQgZnJvbSB0aGUgdGVtcGxhdGVkIHZlcnNpb24g
YW5kIGVtaXQgYSBjb21waWxlIGVycm9yLgotdGVtcGxhdGUgPHNpemVfdCBOPgotUG9seW1vcnBo
aWNBY3Rpb248Ci0gIGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248TiwgY29uc3Qg
Y2hhciosIGZhbHNlPiA+Ci1TZXRBcmdQb2ludGVlKGNvbnN0IGNoYXIqIHApIHsKLSAgcmV0dXJu
IE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6U2V0QXJndW1lbnRQb2ludGVlQWN0aW9u
PAotICAgICAgTiwgY29uc3QgY2hhciosIGZhbHNlPihwKSk7Ci19Ci0KLXRlbXBsYXRlIDxzaXpl
X3QgTj4KLVBvbHltb3JwaGljQWN0aW9uPAotICBpbnRlcm5hbDo6U2V0QXJndW1lbnRQb2ludGVl
QWN0aW9uPE4sIGNvbnN0IHdjaGFyX3QqLCBmYWxzZT4gPgotU2V0QXJnUG9pbnRlZShjb25zdCB3
Y2hhcl90KiBwKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oaW50ZXJuYWw6OlNl
dEFyZ3VtZW50UG9pbnRlZUFjdGlvbjwKLSAgICAgIE4sIGNvbnN0IHdjaGFyX3QqLCBmYWxzZT4o
cCkpOwotfQotI2VuZGlmCi0KLS8vIFRoZSBmb2xsb3dpbmcgdmVyc2lvbiBpcyBERVBSRUNBVEVE
LgotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotUG9seW1vcnBoaWNBY3Rpb248Ci0g
IGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248Ci0gICAgTiwgVCwgaW50ZXJuYWw6
OklzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWU+ID4KLVNldEFyZ3VtZW50UG9pbnRlZShjb25z
dCBUJiB4KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oaW50ZXJuYWw6OlNldEFy
Z3VtZW50UG9pbnRlZUFjdGlvbjwKLSAgICAgIE4sIFQsIGludGVybmFsOjpJc0FQcm90b2NvbE1l
c3NhZ2U8VD46OnZhbHVlPih4KSk7Ci19Ci0KLS8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgc2V0
cyBhIHBvaW50ZXIgcmVmZXJlbnQgdG8gYSBnaXZlbiB2YWx1ZS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDI+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6QXNzaWduQWN0
aW9uPFQxLCBUMj4gPiBBc3NpZ24oVDEqIHB0ciwgVDIgdmFsKSB7Ci0gIHJldHVybiBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oaW50ZXJuYWw6OkFzc2lnbkFjdGlvbjxUMSwgVDI+KHB0ciwgdmFsKSk7
Ci19Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gQ3JlYXRlcyBhbiBhY3Rp
b24gdGhhdCBzZXRzIGVycm5vIGFuZCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBlcnJvci4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotUG9seW1vcnBoaWNBY3Rpb248aW50ZXJuYWw6OlNldEVycm5v
QW5kUmV0dXJuQWN0aW9uPFQ+ID4KLVNldEVycm5vQW5kUmV0dXJuKGludCBlcnJ2YWwsIFQgcmVz
dWx0KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oCi0gICAgICBpbnRlcm5hbDo6
U2V0RXJybm9BbmRSZXR1cm5BY3Rpb248VD4oZXJydmFsLCByZXN1bHQpKTsKLX0KLQotI2VuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gVmFyaW91cyBvdmVybG9hZHMgZm9y
IEludm9rZVdpdGhvdXRBcmdzKCkuCi0KLS8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW52b2tl
cyAnZnVuY3Rpb25faW1wbCcgd2l0aCBubyBhcmd1bWVudC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdGlvbkltcGw+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6SW52b2tlV2l0aG91dEFy
Z3NBY3Rpb248RnVuY3Rpb25JbXBsPiA+Ci1JbnZva2VXaXRob3V0QXJncyhGdW5jdGlvbkltcGwg
ZnVuY3Rpb25faW1wbCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKAotICAgICAg
aW50ZXJuYWw6Okludm9rZVdpdGhvdXRBcmdzQWN0aW9uPEZ1bmN0aW9uSW1wbD4oZnVuY3Rpb25f
aW1wbCkpOwotfQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGludm9rZXMgdGhlIGdpdmVu
IG1ldGhvZCBvbiB0aGUgZ2l2ZW4gb2JqZWN0Ci0vLyB3aXRoIG5vIGFyZ3VtZW50LgotdGVtcGxh
dGUgPGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxp
bnRlcm5hbDo6SW52b2tlTWV0aG9kV2l0aG91dEFyZ3NBY3Rpb248Q2xhc3MsIE1ldGhvZFB0cj4g
PgotSW52b2tlV2l0aG91dEFyZ3MoQ2xhc3MqIG9ial9wdHIsIE1ldGhvZFB0ciBtZXRob2RfcHRy
KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oCi0gICAgICBpbnRlcm5hbDo6SW52
b2tlTWV0aG9kV2l0aG91dEFyZ3NBY3Rpb248Q2xhc3MsIE1ldGhvZFB0cj4oCi0gICAgICAgICAg
b2JqX3B0ciwgbWV0aG9kX3B0cikpOwotfQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBl
cmZvcm1zIGFuX2FjdGlvbiBhbmQgdGhyb3dzIGF3YXkgaXRzCi0vLyByZXN1bHQuICBJbiBvdGhl
ciB3b3JkcywgaXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgb2YgYW5fYWN0aW9uIHRvCi0vLyB2
b2lkLiAgYW5fYWN0aW9uIE1VU1QgTk9UIHJldHVybiB2b2lkLCBvciB0aGUgY29kZSB3b24ndCBj
b21waWxlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEE+Ci1pbmxpbmUgaW50ZXJuYWw6Oklnbm9yZVJl
c3VsdEFjdGlvbjxBPiBJZ25vcmVSZXN1bHQoY29uc3QgQSYgYW5fYWN0aW9uKSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6SWdub3JlUmVzdWx0QWN0aW9uPEE+KGFuX2FjdGlvbik7Ci19Ci0KLS8vIENy
ZWF0ZXMgYSByZWZlcmVuY2Ugd3JhcHBlciBmb3IgdGhlIGdpdmVuIEwtdmFsdWUuICBJZiBuZWNl
c3NhcnksCi0vLyB5b3UgY2FuIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdHlwZSBvZiB0aGUgcmVm
ZXJlbmNlLiAgRm9yIGV4YW1wbGUsCi0vLyBzdXBwb3NlICdkZXJpdmVkJyBpcyBhbiBvYmplY3Qg
b2YgdHlwZSBEZXJpdmVkLCBCeVJlZihkZXJpdmVkKQotLy8gd291bGQgd3JhcCBhIERlcml2ZWQm
LiAgSWYgeW91IHdhbnQgdG8gd3JhcCBhIGNvbnN0IEJhc2UmIGluc3RlYWQsCi0vLyB3aGVyZSBC
YXNlIGlzIGEgYmFzZSBjbGFzcyBvZiBEZXJpdmVkLCBqdXN0IHdyaXRlOgotLy8KLS8vICAgQnlS
ZWY8Y29uc3QgQmFzZT4oZGVyaXZlZCkKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIGlu
dGVybmFsOjpSZWZlcmVuY2VXcmFwcGVyPFQ+IEJ5UmVmKFQmIGxfdmFsdWUpIHsgIC8vIE5PTElO
VAotICByZXR1cm4gaW50ZXJuYWw6OlJlZmVyZW5jZVdyYXBwZXI8VD4obF92YWx1ZSk7Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2Nr
L2dtb2NrLWNhcmRpbmFsaXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2st
Y2FyZGluYWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzMxNWY5MmFi
NWI3MTM3OGFjNjdkMDM4NDEyNDBmYTNhNjQzY2ExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stY2Fy
ZGluYWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9y
IHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBz
b21lIGNvbW1vbmx5IHVzZWQgY2FyZGluYWxpdGllcy4gIE1vcmUKLS8vIGNhcmRpbmFsaXRpZXMg
Y2FuIGJlIGRlZmluZWQgYnkgdGhlIHVzZXIgaW1wbGVtZW50aW5nIHRoZQotLy8gQ2FyZGluYWxp
dHlJbnRlcmZhY2UgaW50ZXJmYWNlIGlmIG5lY2Vzc2FyeS4KLQotI2lmbmRlZiBHTU9DS19JTkNM
VURFX0dNT0NLX0dNT0NLX0NBUkRJTkFMSVRJRVNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9H
TU9DS19HTU9DS19DQVJESU5BTElUSUVTX0hfCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNs
dWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2st
cG9ydC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsK
LQotLy8gVG8gaW1wbGVtZW50IGEgY2FyZGluYWxpdHkgRm9vLCBkZWZpbmU6Ci0vLyAgIDEuIGEg
Y2xhc3MgRm9vQ2FyZGluYWxpdHkgdGhhdCBpbXBsZW1lbnRzIHRoZQotLy8gICAgICBDYXJkaW5h
bGl0eUludGVyZmFjZSBpbnRlcmZhY2UsIGFuZAotLy8gICAyLiBhIGZhY3RvcnkgZnVuY3Rpb24g
dGhhdCBjcmVhdGVzIGEgQ2FyZGluYWxpdHkgb2JqZWN0IGZyb20gYQotLy8gICAgICBjb25zdCBG
b29DYXJkaW5hbGl0eSouCi0vLwotLy8gVGhlIHR3by1sZXZlbCBkZWxlZ2F0aW9uIGRlc2lnbiBm
b2xsb3dzIHRoYXQgb2YgTWF0Y2hlciwgcHJvdmlkaW5nCi0vLyBjb25zaXN0ZW5jeSBmb3IgZXh0
ZW5zaW9uIGRldmVsb3BlcnMuICBJdCBhbHNvIGVhc2VzIG93bmVyc2hpcAotLy8gbWFuYWdlbWVu
dCBhcyBDYXJkaW5hbGl0eSBvYmplY3RzIGNhbiBub3cgYmUgY29waWVkIGxpa2UgcGxhaW4gdmFs
dWVzLgotCi0vLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgYSBjYXJkaW5hbGl0eS4KLWNsYXNzIENh
cmRpbmFsaXR5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkNhcmRpbmFsaXR5SW50
ZXJmYWNlKCkge30KLQotICAvLyBDb25zZXJ2YXRpdmUgZXN0aW1hdGUgb24gdGhlIGxvd2VyL3Vw
cGVyIGJvdW5kIG9mIHRoZSBudW1iZXIgb2YKLSAgLy8gY2FsbHMgYWxsb3dlZC4KLSAgdmlydHVh
bCBpbnQgQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgdmly
dHVhbCBpbnQgQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIElOVF9NQVg7
IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXRpc2Z5
IHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50
KGludCBjYWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxs
X2NvdW50IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBi
b29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQot
ICAvLyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgRGVzY3Jp
YmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci0KLS8vIEEgQ2FyZGluYWxp
dHkgaXMgYSBjb3B5YWJsZSBhbmQgSU1NVVRBQkxFIChleGNlcHQgYnkgYXNzaWdubWVudCkKLS8v
IG9iamVjdCB0aGF0IHNwZWNpZmllcyBob3cgbWFueSB0aW1lcyBhIG1vY2sgZnVuY3Rpb24gaXMg
ZXhwZWN0ZWQgdG8KLS8vIGJlIGNhbGxlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDYXJkaW5h
bGl0eSBpcyBqdXN0IGEgbGlua2VkX3B0cgotLy8gdG8gY29uc3QgQ2FyZGluYWxpdHlJbnRlcmZh
Y2UsIHNvIGNvcHlpbmcgaXMgZmFpcmx5IGNoZWFwLgotLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIENh
cmRpbmFsaXR5IQotY2xhc3MgR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSB7Ci0gcHVibGljOgotICAv
LyBDb25zdHJ1Y3RzIGEgbnVsbCBjYXJkaW5hbGl0eS4gIE5lZWRlZCBmb3Igc3RvcmluZyBDYXJk
aW5hbGl0eQotICAvLyBvYmplY3RzIGluIFNUTCBjb250YWluZXJzLgotICBDYXJkaW5hbGl0eSgp
IHt9Ci0KLSAgLy8gQ29uc3RydWN0cyBhIENhcmRpbmFsaXR5IGZyb20gaXRzIGltcGxlbWVudGF0
aW9uLgotICBleHBsaWNpdCBDYXJkaW5hbGl0eShjb25zdCBDYXJkaW5hbGl0eUludGVyZmFjZSog
aW1wbCkgOiBpbXBsXyhpbXBsKSB7fQotCi0gIC8vIENvbnNlcnZhdGl2ZSBlc3RpbWF0ZSBvbiB0
aGUgbG93ZXIvdXBwZXIgYm91bmQgb2YgdGhlIG51bWJlciBvZgotICAvLyBjYWxscyBhbGxvd2Vk
LgotICBpbnQgQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5D
b25zZXJ2YXRpdmVMb3dlckJvdW5kKCk7IH0KLSAgaW50IENvbnNlcnZhdGl2ZVVwcGVyQm91bmQo
KSBjb25zdCB7IHJldHVybiBpbXBsXy0+Q29uc2VydmF0aXZlVXBwZXJCb3VuZCgpOyB9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNh
cmRpbmFsaXR5LgotICBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQp
IGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbF8tPklzU2F0aXNmaWVkQnlDYWxsQ291bnQoY2FsbF9j
b3VudCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2ls
bCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgotICBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291
bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbF8tPklzU2F0dXJhdGVk
QnlDYWxsQ291bnQoY2FsbF9jb3VudCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNh
bGxfY291bnQgY2FsbHMgd2lsbCBvdmVyLXNhdHVyYXRlIHRoaXMKLSAgLy8gY2FyZGluYWxpdHks
IGkuZS4gZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNhbGxzLgotICBib29s
IElzT3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAg
cmV0dXJuIGltcGxfLT5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGNhbGxfY291bnQpICYmCi0gICAg
ICAgICFpbXBsXy0+SXNTYXRpc2ZpZWRCeUNhbGxDb3VudChjYWxsX2NvdW50KTsKLSAgfQotCi0g
IC8vIERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0KLSAgdm9pZCBEZXNjcmliZVRvKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3QgeyBpbXBsXy0+RGVzY3JpYmVUbyhvcyk7IH0KLQotICAvLyBE
ZXNjcmliZXMgdGhlIGdpdmVuIGFjdHVhbCBjYWxsIGNvdW50IHRvIGFuIG9zdHJlYW0uCi0gIHN0
YXRpYyB2b2lkIERlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oaW50IGFjdHVhbF9jYWxsX2NvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFt
KiBvcyk7Ci0KLSBwcml2YXRlOgotICBpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBDYXJkaW5h
bGl0eUludGVyZmFjZT4gaW1wbF87Ci19OwotCi0vLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgdGhh
dCBhbGxvd3MgYXQgbGVhc3QgbiBjYWxscy4KLUdURVNUX0FQSV8gQ2FyZGluYWxpdHkgQXRMZWFz
dChpbnQgbik7Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhdCBtb3N0
IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5IEF0TW9zdChpbnQgbik7Ci0KLS8vIENy
ZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhbnkgbnVtYmVyIG9mIGNhbGxzLgotR1RF
U1RfQVBJXyBDYXJkaW5hbGl0eSBBbnlOdW1iZXIoKTsKLQotLy8gQ3JlYXRlcyBhIGNhcmRpbmFs
aXR5IHRoYXQgYWxsb3dzIGJldHdlZW4gbWluIGFuZCBtYXggY2FsbHMuCi1HVEVTVF9BUElfIENh
cmRpbmFsaXR5IEJldHdlZW4oaW50IG1pbiwgaW50IG1heCk7Ci0KLS8vIENyZWF0ZXMgYSBjYXJk
aW5hbGl0eSB0aGF0IGFsbG93cyBleGFjdGx5IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFs
aXR5IEV4YWN0bHkoaW50IG4pOwotCi0vLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgZnJvbSBpdHMg
aW1wbGVtZW50YXRpb24uCi1pbmxpbmUgQ2FyZGluYWxpdHkgTWFrZUNhcmRpbmFsaXR5KGNvbnN0
IENhcmRpbmFsaXR5SW50ZXJmYWNlKiBjKSB7Ci0gIHJldHVybiBDYXJkaW5hbGl0eShjKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dN
T0NLX0dNT0NLX0NBUkRJTkFMSVRJRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjVhODg5YzBjM2E0MGQ2YTRjZjI2OTMyNTZmNjc4NjFkYTI1NmFjMS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMzc3
ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGEgc2NyaXB0LiAgRE8gTk9U
IEVESVQgQlkgSEFORCEhIQotCi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0v
LyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMu
Ci0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBjb21tb25seSB1c2VkIHZhcmlhZGlj
IGFjdGlvbnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURf
QUNUSU9OU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9B
Q1RJT05TX0hfCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgiCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1l
c3BhY2UgaW50ZXJuYWwgewotCi0vLyBJbnZva2VIZWxwZXI8Rj4ga25vd3MgaG93IHRvIHVucGFj
ayBhbiBOLXR1cGxlIGFuZCBpbnZva2UgYW4gTi1hcnkKLS8vIGZ1bmN0aW9uIG9yIG1ldGhvZCB3
aXRoIHRoZSB1bnBhY2tlZCB2YWx1ZXMsIHdoZXJlIEYgaXMgYSBmdW5jdGlvbgotLy8gdHlwZSB0
aGF0IHRha2VzIE4gYXJndW1lbnRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZT4KLWNsYXNzIEludm9rZUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFI+Ci1jbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTw+ID4gewotIHB1
YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMgUiBJbnZva2Uo
RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8PiYpIHsKLSAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKCk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5
cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPD4mKSB7Ci0gICAgICAgICAg
IHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBBMT4KLWNsYXNzIEludm9rZUhlbHBlcjxSLCA6OnRlc3Rpbmc6
OnR1cGxlPEExPiA+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4K
LSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1
cGxlPEExPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFyZ3Mp
KTsKLSAgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgot
ICBzdGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IDo6dGVzdGluZzo6dHVwbGU8QTE+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2Jq
X3B0ci0+Km1ldGhvZF9wdHIpKGdldDwwPihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci1jbGFzcyBJbnZva2VIZWxwZXI8
UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTI+ID4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMgUiBJbnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNv
bnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncykpOwotICB9Ci0KLSAgdGVtcGxhdGUg
PGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9rZU1ldGhv
ZChDbGFzcyogb2JqX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRo
b2RfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTI+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIp
KGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+Ci1jbGFzcyBJbnZv
a2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiA+IHsKLSBwdWJsaWM6Ci0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTM+JiBhcmdzKSB7Ci0g
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0
PDI+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0
aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMz4mIGFyZ3MpIHsKLSAgICAg
ICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0cikoZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4o
YXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mj4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlw
ZW5hbWUgQTQ+Ci1jbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIs
IEEzLCBBND4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0g
IHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgOjp0ZXN0aW5nOjp0dXBs
ZTxBMSwgQTIsIEEzLAotICAgICAgQTQ+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5j
dGlvbihnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAgICAg
ICAgICAgZ2V0PDM+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlw
ZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9kX3B0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQ+JiBh
cmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdldDwwPihh
cmdzKSwgZ2V0PDE+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4o
YXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTU+Ci1j
bGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTU+
ID4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMg
UiBJbnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEy
LCBBMywgQTQsCi0gICAgICBBNT4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksCi0gICAgICAgICAgICAg
ICBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3Mg
Q2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNz
KiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwg
QTMsIEE0LCBBNT4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9k
X3B0cikoZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mj4o
YXJncyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVu
YW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KLWNsYXNzIEludm9rZUhlbHBl
cjxSLCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+ID4gewotIHB1Ymxp
YzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMgUiBJbnZva2UoRnVu
Y3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1
LAotICAgICAgQTY+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4o
YXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDM+
KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8
Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9k
KENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhv
ZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTY+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0
ci0+Km1ldGhvZF9wdHIpKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLAotICAgICAgICAgICAg
ICAgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3Mp
KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFt
ZSBBNiwgdHlwZW5hbWUgQTc+Ci1jbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBs
ZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNz4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rpb24+Ci0gIHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwg
Y29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsCi0gICAgICBBNiwgQTc+
JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyksIGdldDwx
PihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDM+KGFyZ3MpLCBnZXQ8
ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRo
b2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0
aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8
QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBNz4m
IGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0cikoZ2V0PDA+
KGFyZ3MpLCBnZXQ8MT4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mj4oYXJncyksIGdldDwz
PihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8
Nj4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEs
IHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTUs
IHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+Ci1jbGFzcyBJbnZva2VIZWxw
ZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTg+ID4g
ewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMgUiBJ
bnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBB
MywgQTQsIEE1LAotICAgICAgQTYsIEE3LCBBOD4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksCi0gICAg
ICAgICAgICAgICBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLCBnZXQ8
Nj4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Nz4oYXJncykpOwotICB9Ci0KLSAgdGVtcGxh
dGUgPGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9rZU1l
dGhvZChDbGFzcyogb2JqX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBt
ZXRob2RfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBs
ZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBOD4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0ciko
Z2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mj4oYXJncyks
IGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCi0gICAgICAgICAgICAg
ICBnZXQ8Nj4oYXJncyksIGdldDw3PihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBB
OCwgdHlwZW5hbWUgQTk+Ci1jbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5PiA+IHsKLSBwdWJsaWM6Ci0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0
aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwKLSAgICAgIEE2
LCBBNywgQTgsIEE5PiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+
KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwz
PihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwKLSAgICAg
ICAgICAgICAgIGdldDw3PihhcmdzKSwgZ2V0PDg+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRo
b2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0
aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8
QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEE5PiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRy
KShnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwyPihhcmdz
KSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwKLSAgICAgICAgICAg
ICAgIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncykpOwotICB9Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFt
ZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFt
ZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LAotICAgIHR5cGVuYW1lIEExMD4KLWNsYXNz
IEludm9rZUhlbHBlcjxSLCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYs
IEE3LCBBOCwgQTksCi0gICAgQTEwPiA+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6
OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwKLSAgICAgIEE2LCBBNywgQTgsIEE5
LCBBMTA+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5jdGlvbihnZXQ8MD4oYXJncyks
IGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDM+KGFyZ3Mp
LCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpLAotICAgICAgICAgICAg
ICAgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncyksIGdldDw5PihhcmdzKSk7Ci0gIH0KLQotICB0
ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52
b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9k
UHRyIG1ldGhvZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBOSwgQTEwPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHIt
PiptZXRob2RfcHRyKShnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwKLSAgICAgICAgICAgICAg
IGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwK
LSAgICAgICAgICAgICAgIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncyks
IGdldDw5PihhcmdzKSk7Ci0gIH0KLX07Ci0KLS8vIEFuIElOVEVSTkFMIG1hY3JvIGZvciBleHRy
YWN0aW5nIHRoZSB0eXBlIG9mIGEgdHVwbGUgZmllbGQuICBJdCdzCi0vLyBzdWJqZWN0IHRvIGNo
YW5nZSB3aXRob3V0IG5vdGljZSAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIQotI2RlZmluZSBH
TU9DS19GSUVMRF8oVHVwbGUsIE4pIFwKLSAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OnR1cGxlX2Vs
ZW1lbnQ8TiwgVHVwbGU+Ojp0eXBlCi0KLS8vIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1
cGxlLCBrMSwgazIsIC4uLiwga19uPjo6dHlwZSBpcyB0aGUKLS8vIHR5cGUgb2YgYW4gbi1hcnkg
ZnVuY3Rpb24gd2hvc2UgaS10aCAoMS1iYXNlZCkgYXJndW1lbnQgdHlwZSBpcyB0aGUKLS8vIGt7
aX0tdGggKDAtYmFzZWQpIGZpZWxkIG9mIEFyZ3VtZW50VHVwbGUsIHdoaWNoIG11c3QgYmUgYSB0
dXBsZQotLy8gdHlwZSwgYW5kIHdob3NlIHJldHVybiB0eXBlIGlzIFJlc3VsdC4gIEZvciBleGFt
cGxlLAotLy8gICBTZWxlY3RBcmdzPGludCwgOjp0ZXN0aW5nOjp0dXBsZTxib29sLCBjaGFyLCBk
b3VibGUsIGxvbmc+LCAwLCAzPjo6dHlwZQotLy8gaXMgaW50KGJvb2wsIGxvbmcpLgotLy8KLS8v
IFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLCBrMSwgazIsIC4uLiwga19uPjo6U2Vs
ZWN0KGFyZ3MpCi0vLyByZXR1cm5zIHRoZSBzZWxlY3RlZCBmaWVsZHMgKGsxLCBrMiwgLi4uLCBr
X24pIG9mIGFyZ3MgYXMgYSB0dXBsZS4KLS8vIEZvciBleGFtcGxlLAotLy8gICBTZWxlY3RBcmdz
PGludCwgdHVwbGU8Ym9vbCwgY2hhciwgZG91YmxlPiwgMiwgMD46OlNlbGVjdCgKLS8vICAgICAg
IDo6dGVzdGluZzo6bWFrZV90dXBsZSh0cnVlLCAnYScsIDIuNSkpCi0vLyByZXR1cm5zIHR1cGxl
ICgyLjUsIHRydWUpLgotLy8KLS8vIFRoZSBudW1iZXJzIGluIGxpc3QgazEsIGsyLCAuLi4sIGtf
biBtdXN0IGJlID49IDAsIHdoZXJlIG4gY2FuIGJlCi0vLyBpbiB0aGUgcmFuZ2UgWzAsIDEwXS4g
IER1cGxpY2F0ZXMgYXJlIGFsbG93ZWQgYW5kIHRoZXkgZG9uJ3QgaGF2ZQotLy8gdG8gYmUgaW4g
YW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBS
ZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyLCBpbnQgazMsCi0g
ICAgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBpbnQgazgsIGludCBrOSwgaW50IGsx
MD4KLWNsYXNzIFNlbGVjdEFyZ3MgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZShH
TU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3Vt
ZW50VHVwbGUsIGsyKSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGszKSwKLSAgICAgIEdN
T0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNCksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxl
LCBrNSksCi0gICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazYpLCBHTU9DS19GSUVM
RF8oQXJndW1lbnRUdXBsZSwgazcpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUs
IGs4KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs5KSwKLSAgICAgIEdNT0NLX0ZJRUxE
XyhBcmd1bWVudFR1cGxlLCBrMTApKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBl
Pjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2Vs
ZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdz
KGdldDxrMT4oYXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCi0gICAgICAgIGdl
dDxrND4oYXJncyksIGdldDxrNT4oYXJncyksIGdldDxrNj4oYXJncyksIGdldDxrNz4oYXJncyks
Ci0gICAgICAgIGdldDxrOD4oYXJncyksIGdldDxrOT4oYXJncyksIGdldDxrMTA+KGFyZ3MpKTsK
LSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRU
dXBsZT4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAotICAgICAgICAg
ICAgICAgICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMT4gewotIHB1Ymxp
YzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZSgpOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9u
PHR5cGU+OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVjdGVkQXJn
cyBTZWxlY3QoY29uc3QgQXJndW1lbnRUdXBsZSYgLyogYXJncyAqLykgewotICAgIHJldHVybiBT
ZWxlY3RlZEFyZ3MoKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlw
ZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxPgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFy
Z3VtZW50VHVwbGUsCi0gICAgICAgICAgICAgICAgIGsxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x
LCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJ
RUxEXyhBcmd1bWVudFR1cGxlLCBrMSkpOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5
cGU+OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVjdGVkQXJncyBT
ZWxlY3QoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgewotICAgIHJldHVybiBTZWxlY3RlZEFy
Z3MoZ2V0PGsxPihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQs
IHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyPgotY2xhc3MgU2VsZWN0QXJn
czxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCi0gICAgICAgICAgICAgICAgIGsxLCBrMiwgLTEsIC0x
LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFJlc3VsdCB0
eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCi0gICAgICBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazIpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6
QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0
KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdl
dDxrMT4oYXJncyksIGdldDxrMj4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwgaW50IGsz
PgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCi0gICAgICAgICAgICAg
ICAgIGsxLCBrMiwgazMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgot
ICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCi0g
ICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8oQXJndW1l
bnRUdXBsZSwgazMpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1l
bnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0
IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxrMT4o
YXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBr
MiwgaW50IGszLAotICAgIGludCBrND4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVu
dFR1cGxlLAotICAgICAgICAgICAgICAgICBrMSwgazIsIGszLCBrNCwgLTEsIC0xLCAtMSwgLTEs
IC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazEpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsy
KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGszKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrNCkpOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+OjpB
cmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxlY3Qo
Y29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgewotICAgIHJldHVybiBTZWxlY3RlZEFyZ3MoZ2V0
PGsxPihhcmdzKSwgZ2V0PGsyPihhcmdzKSwgZ2V0PGszPihhcmdzKSwKLSAgICAgICAgZ2V0PGs0
PihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1l
IEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyLCBpbnQgazMsCi0gICAgaW50IGs0LCBpbnQg
azU+Ci1jbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwKLSAgICAgICAgICAg
ICAgICAgazEsIGsyLCBrMywgazQsIGs1LCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJsaWM6
Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsxKSwK
LSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhBcmd1
bWVudFR1cGxlLCBrMyksCi0gICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQpLCBH
TU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazUpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5j
dGlvbjx0eXBlPjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3Rl
ZEFyZ3MgU2VsZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2Vs
ZWN0ZWRBcmdzKGdldDxrMT4oYXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCi0g
ICAgICAgIGdldDxrND4oYXJncyksIGdldDxrNT4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBr
MiwgaW50IGszLAotICAgIGludCBrNCwgaW50IGs1LCBpbnQgazY+Ci1jbGFzcyBTZWxlY3RBcmdz
PFJlc3VsdCwgQXJndW1lbnRUdXBsZSwKLSAgICAgICAgICAgICAgICAgazEsIGsyLCBrMywgazQs
IGs1LCBrNiwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5
cGUoR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsxKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCi0gICAg
ICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRU
dXBsZSwgazUpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs2KSk7Ci0gIHR5
cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdz
OwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdz
KSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3Mp
LCBnZXQ8azM+KGFyZ3MpLAotICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpLCBn
ZXQ8azY+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlw
ZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIsIGludCBrMywKLSAgICBpbnQgazQs
IGludCBrNSwgaW50IGs2LCBpbnQgazc+Ci1jbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1l
bnRUdXBsZSwKLSAgICAgICAgICAgICAgICAgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIC0x
LCAtMSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERf
KEFyZ3VtZW50VHVwbGUsIGsxKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBr
MiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCi0gICAgICBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazQpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazUpLAotICAg
ICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs2KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50
VHVwbGUsIGs3KSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50
VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFy
Z3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAotICAgICAgICBnZXQ8azQ+KGFyZ3Mp
LCBnZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBnZXQ8azc+KGFyZ3MpKTsKLSAgfQotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50
IGsxLCBpbnQgazIsIGludCBrMywKLSAgICBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcs
IGludCBrOD4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAotICAgICAg
ICAgICAgICAgICBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIC0xLCAtMT4gewotIHB1
YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwg
azEpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsyKSwgR01PQ0tfRklFTERf
KEFyZ3VtZW50VHVwbGUsIGszKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBr
NCksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNSksCi0gICAgICBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazYpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazcpLAotICAg
ICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs4KSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUg
RnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2Vs
ZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJu
IFNlbGVjdGVkQXJncyhnZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3Mp
LAotICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBn
ZXQ8azc+KGFyZ3MpLAotICAgICAgICBnZXQ8azg+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQg
azIsIGludCBrMywKLSAgICBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwg
aW50IGs5PgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCi0gICAgICAg
ICAgICAgICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazksIC0xPiB7Ci0gcHVi
bGljOgotICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBr
MSksCi0gICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazMpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs0
KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs1KSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrNiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNyksCi0gICAg
ICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazgpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRU
dXBsZSwgazkpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1lbnRU
dXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0IEFy
Z3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxrMT4oYXJn
cyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCi0gICAgICAgIGdldDxrND4oYXJncyks
IGdldDxrNT4oYXJncyksIGdldDxrNj4oYXJncyksIGdldDxrNz4oYXJncyksCi0gICAgICAgIGdl
dDxrOD4oYXJncyksIGdldDxrOT4oYXJncykpOwotICB9Ci19OwotCi0jdW5kZWYgR01PQ0tfRklF
TERfCi0KLS8vIEltcGxlbWVudHMgdGhlIFdpdGhBcmdzIGFjdGlvbi4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBJbm5lckFjdGlvbiwgaW50IGsxID0gLTEsIGludCBrMiA9IC0xLCBpbnQgazMgPSAtMSwK
LSAgICBpbnQgazQgPSAtMSwgaW50IGs1ID0gLTEsIGludCBrNiA9IC0xLCBpbnQgazcgPSAtMSwg
aW50IGs4ID0gLTEsCi0gICAgaW50IGs5ID0gLTEsIGludCBrMTAgPSAtMT4KLWNsYXNzIFdpdGhB
cmdzQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdpdGhBcmdzQWN0aW9uKGNvbnN0IElu
bmVyQWN0aW9uJiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEY+Ci0gIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsgcmV0dXJuIE1ha2VBY3Rp
b24obmV3IEltcGw8Rj4oYWN0aW9uXykpOyB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAg
cHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVu
dFR1cGxlOwotCi0gICAgZXhwbGljaXQgSW1wbChjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSA6
IGFjdGlvbl8oYWN0aW9uKSB7fQotCi0gICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgICByZXR1cm4gYWN0aW9uXy5QZXJmb3JtKFNlbGVj
dEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLCBrMSwgazIsIGszLCBrNCwKLSAgICAgICAgICBr
NSwgazYsIGs3LCBrOCwgazksIGsxMD46OlNlbGVjdChhcmdzKSk7Ci0gICAgfQotCi0gICBwcml2
YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVw
bGUsCi0gICAgICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazksIGsxMD46OnR5
cGUgSW5uZXJGdW5jdGlvblR5cGU7Ci0KLSAgICBBY3Rpb248SW5uZXJGdW5jdGlvblR5cGU+IGFj
dGlvbl87Ci0gIH07Ci0KLSAgY29uc3QgSW5uZXJBY3Rpb24gYWN0aW9uXzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKFdpdGhBcmdzQWN0aW9uKTsKLX07Ci0KLS8vIEEgbWFjcm8gZnJvbSB0
aGUgQUNUSU9OKiBmYW1pbHkgKGRlZmluZWQgbGF0ZXIgaW4gdGhpcyBmaWxlKQotLy8gZGVmaW5l
cyBhbiBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBhIG1vY2sgZnVuY3Rpb24uICBUeXBpY2Fs
bHksCi0vLyB0aGVzZSBhY3Rpb25zIG9ubHkgY2FyZSBhYm91dCBhIHN1YnNldCBvZiB0aGUgYXJn
dW1lbnRzIG9mIHRoZSBtb2NrCi0vLyBmdW5jdGlvbi4gIEZvciBleGFtcGxlLCBpZiBzdWNoIGFu
IGFjdGlvbiBvbmx5IHVzZXMgdGhlIHNlY29uZAotLy8gYXJndW1lbnQsIGl0IGNhbiBiZSB1c2Vk
IGluIGFueSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgPj0gMgotLy8gYXJndW1lbnRzIHdoZXJl
IHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgY29tcGF0aWJsZS4KLS8vCi0vLyBU
aGVyZWZvcmUsIHRoZSBhY3Rpb24gaW1wbGVtZW50YXRpb24gbXVzdCBiZSBwcmVwYXJlZCB0byB0
YWtlIG1vcmUKLS8vIGFyZ3VtZW50cyB0aGFuIGl0IG5lZWRzLiAgVGhlIEV4Y2Vzc2l2ZUFyZyB0
eXBlIGlzIHVzZWQgdG8KLS8vIHJlcHJlc2VudCB0aG9zZSBleGNlc3NpdmUgYXJndW1lbnRzLiAg
SW4gb3JkZXIgdG8ga2VlcCB0aGUgY29tcGlsZXIKLS8vIGVycm9yIG1lc3NhZ2VzIHRyYWN0YWJs
ZSwgd2UgZGVmaW5lIGl0IGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZQotLy8gaW5zdGVhZCBvZiB0
ZXN0aW5nOjppbnRlcm5hbC4gIEhvd2V2ZXIsIHRoaXMgaXMgYW4gSU5URVJOQUwgVFlQRQotLy8g
YW5kIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLCBzbyBhIHVzZXIgTVVTVCBOT1Qg
VVNFIFRISVMKLS8vIFRZUEUgRElSRUNUTFkuCi1zdHJ1Y3QgRXhjZXNzaXZlQXJnIHt9OwotCi0v
LyBBIGhlbHBlciBjbGFzcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0aGUgQUNUSU9OKiBtYWNy
b3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCBjbGFzcyBJbXBsPgotY2xhc3MgQWN0aW9u
SGVscGVyIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBj
b25zdCA6OnRlc3Rpbmc6OnR1cGxlPD4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxh
dGUgZ21vY2tfUGVyZm9ybUltcGw8PihhcmdzLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhj
ZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJn
KCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJn
KCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVBcmcoKSk7Ci0gIH0KLQotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQTA+Ci0gIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBs
LCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwPiYgYXJncykgewotICAgIHJldHVybiBpbXBsLT50
ZW1wbGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMD4oYXJncywgZ2V0PDA+KGFyZ3MpLAotICAgICAg
ICBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3Np
dmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3Np
dmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gIHN0YXRpYyBSZXN1bHQg
UGVyZm9ybShJbXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBBMT4mIGFyZ3Mp
IHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExPihh
cmdzLCBnZXQ8MD4oYXJncyksCi0gICAgICAgIGdldDwxPihhcmdzKSwgRXhjZXNzaXZlQXJnKCks
IEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCks
IEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAg
IEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5h
bWUgQTEsIHR5cGVuYW1lIEEyPgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwg
Y29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyPiYgYXJncykgewotICAgIHJldHVybiBp
bXBsLT50ZW1wbGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyPihhcmdzLCBnZXQ8MD4o
YXJncyksCi0gICAgICAgIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLCBFeGNlc3NpdmVBcmco
KSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmco
KSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVBcmco
KSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTM+Ci0gIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBj
b25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBBMSwgQTIsCi0gICAgICBBMz4mIGFyZ3MpIHsKLSAg
ICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTM+
KGFyZ3MsIGdldDwwPihhcmdzKSwKLSAgICAgICAgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyks
IGdldDwzPihhcmdzKSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBF
eGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBF
eGNlc3NpdmVBcmcoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgotICBzdGF0aWMgUmVz
dWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEy
LCBBMywKLSAgICAgIEE0PiYgYXJncykgewotICAgIHJldHVybiBpbXBsLT50ZW1wbGF0ZSBnbW9j
a19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQ+KGFyZ3MsCi0gICAgICAgIGdldDwwPihh
cmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFy
Z3MpLAotICAgICAgICBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFy
ZygpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1l
IEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgIHR5cGVuYW1lIEE1PgotICBzdGF0aWMgUmVzdWx0IFBl
cmZvcm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywg
QTQsCi0gICAgICBBNT4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tf
UGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNT4oYXJncywKLSAgICAgICAgZ2V0PDA+
KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4o
YXJncyksCi0gICAgICAgIGdldDw1PihhcmdzKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFy
ZygpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1l
IEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KLSAgc3Rh
dGljIFJlc3VsdCBQZXJmb3JtKEltcGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAs
IEExLCBBMiwgQTMsIEE0LAotICAgICAgQTUsIEE2PiYgYXJncykgewotICAgIHJldHVybiBpbXBs
LT50ZW1wbGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNj4o
YXJncywKLSAgICAgICAgZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwg
Z2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksCi0gICAgICAgIGdldDw1PihhcmdzKSwgZ2V0PDY+
KGFyZ3MpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2
ZUFyZygpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgICB0eXBlbmFtZSBBNSwg
dHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3PgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCog
aW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywgQTQsCi0gICAgICBB
NSwgQTYsIEE3PiYgYXJncykgewotICAgIHJldHVybiBpbXBsLT50ZW1wbGF0ZSBnbW9ja19QZXJm
b3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwKLSAgICAgICAgQTc+KGFyZ3MsIGdl
dDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwKLSAg
ICAgICAgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFy
Z3MpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1l
IEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5h
bWUgQTcsIHR5cGVuYW1lIEE4PgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwg
Y29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLCBBMywgQTQsCi0gICAgICBBNSwgQTYs
IEE3LCBBOD4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9y
bUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LAotICAgICAgICBBOD4oYXJncywg
Z2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLAot
ICAgICAgICBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+KGFyZ3MpLCBnZXQ8Nz4o
YXJncyksIGdldDw4PihhcmdzKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1l
IEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5h
bWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4KLSAgc3RhdGljIFJlc3VsdCBQZXJmb3Jt
KEltcGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwgQTMsIEE0LAot
ICAgICAgQTUsIEE2LCBBNywgQTgsIEE5PiYgYXJncykgewotICAgIHJldHVybiBpbXBsLT50ZW1w
bGF0ZSBnbW9ja19QZXJmb3JtSW1wbDxBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
LAotICAgICAgICBBOT4oYXJncywgZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihh
cmdzKSwgZ2V0PDM+KGFyZ3MpLAotICAgICAgICBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwg
Z2V0PDY+KGFyZ3MpLCBnZXQ8Nz4oYXJncyksIGdldDw4PihhcmdzKSwKLSAgICAgICAgZ2V0PDk+
KGFyZ3MpKTsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFZhcmlv
dXMgb3ZlcmxvYWRzIGZvciBJbnZva2UoKS4KLQotLy8gV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5r
Pihhbl9hY3Rpb24pIGNyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcGFzc2VzCi0vLyB0aGUgc2VsZWN0
ZWQgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFuX2FjdGlvbiBhbmQKLS8vIHBl
cmZvcm1zIGl0LiAgSXQgc2VydmVzIGFzIGFuIGFkYXB0b3IgYmV0d2VlbiBhY3Rpb25zIHdpdGgK
LS8vIGRpZmZlcmVudCBhcmd1bWVudCBsaXN0cy4gIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGVmYXVs
dCBhcmd1bWVudHMgZm9yCi0vLyBmdW5jdGlvbiB0ZW1wbGF0ZXMsIHNvIHdlIGhhdmUgdG8gb3Zl
cmxvYWQgaXQuCi10ZW1wbGF0ZSA8aW50IGsxLCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGlu
ZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxPgotV2l0aEFyZ3MoY29u
c3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0
aW9uPElubmVyQWN0aW9uLCBrMT4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50
IGsyLCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rp
b248SW5uZXJBY3Rpb24sIGsxLCBrMj4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rp
b24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEs
IGsyPihhY3Rpb24pOwotfQotCi10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgdHlw
ZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVy
QWN0aW9uLCBrMSwgazIsIGszPgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikg
ewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIs
IGszPihhY3Rpb24pOwotfQotCi10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50
IGs0LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rp
b248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0PgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rp
b24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0
aW9uLCBrMSwgazIsIGszLCBrND4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50
IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGlu
ZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBr
NT4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVy
bmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1PihhY3Rp
b24pOwotfQotCi10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQg
azUsIGludCBrNiwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhB
cmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2PgotV2l0aEFyZ3Mo
Y29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdz
QWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2PihhY3Rpb24pOwotfQot
Ci10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBr
NiwgaW50IGs3LAotICAgIHR5cGVuYW1lIElubmVyQWN0aW9uPgotaW5saW5lIGludGVybmFsOjpX
aXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazc+Ci1X
aXRoQXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsCi0gICAg
ICBrNz4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGlu
dCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywgaW50IGs4LAotICAgIHR5cGVuYW1lIElubmVy
QWN0aW9uPgotaW5saW5lIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEs
IGsyLCBrMywgazQsIGs1LCBrNiwgazcsIGs4PgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24m
IGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9u
LCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywKLSAgICAgIGs4PihhY3Rpb24pOwotfQotCi10
ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwg
aW50IGs3LCBpbnQgazgsCi0gICAgaW50IGs5LCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGlu
ZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBr
NSwgazYsIGs3LCBrOCwgazk+Ci1XaXRoQXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7
Ci0gIHJldHVybiBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwg
azMsIGs0LCBrNSwgazYsIGs3LCBrOCwKLSAgICAgIGs5PihhY3Rpb24pOwotfQotCi10ZW1wbGF0
ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3
LCBpbnQgazgsCi0gICAgaW50IGs5LCBpbnQgazEwLCB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlu
bGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0
LCBrNSwgazYsIGs3LCBrOCwKLSAgICBrOSwgazEwPgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rp
b24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0
aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsCi0gICAgICBrOSwgazEwPihhY3Rp
b24pOwotfQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRvZXMgYWN0aW9ucyBhMSwgYTIs
IC4uLiwgc2VxdWVudGlhbGx5IGluCi0vLyBlYWNoIGludm9jYXRpb24uCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0aW9uMj4KLWlubGluZSBpbnRlcm5hbDo6RG9Cb3Ro
QWN0aW9uPEFjdGlvbjEsIEFjdGlvbjI+Ci1Eb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyKSB7
Ci0gIHJldHVybiBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIEFjdGlvbjI+KGExLCBh
Mik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0
eXBlbmFtZSBBY3Rpb24zPgotaW5saW5lIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMSwg
aW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24yLAotICAgIEFjdGlvbjM+ID4KLURvQWxsKEFj
dGlvbjEgYTEsIEFjdGlvbjIgYTIsIEFjdGlvbjMgYTMpIHsKLSAgcmV0dXJuIERvQWxsKGExLCBE
b0FsbChhMiwgYTMpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEFjdGlvbjEsIHR5cGVuYW1l
IEFjdGlvbjIsIHR5cGVuYW1lIEFjdGlvbjMsCi0gICAgdHlwZW5hbWUgQWN0aW9uND4KLWlubGlu
ZSBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248
QWN0aW9uMiwKLSAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIEFjdGlvbjQ+ID4g
PgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCkg
ewotICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKGEyLCBhMywgYTQpKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIEFjdGlvbjEsIHR5cGVuYW1lIEFjdGlvbjIsIHR5cGVuYW1lIEFjdGlvbjMsCi0g
ICAgdHlwZW5hbWUgQWN0aW9uNCwgdHlwZW5hbWUgQWN0aW9uNT4KLWlubGluZSBpbnRlcm5hbDo6
RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMiwKLSAg
ICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIGludGVybmFsOjpEb0JvdGhBY3Rpb248
QWN0aW9uNCwKLSAgICBBY3Rpb241PiA+ID4gPgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBh
MiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCwgQWN0aW9uNSBhNSkgewotICByZXR1cm4gRG9BbGwo
YTEsIERvQWxsKGEyLCBhMywgYTQsIGE1KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rp
b24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAotICAgIHR5cGVuYW1lIEFj
dGlvbjQsIHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjY+Ci1pbmxpbmUgaW50ZXJu
YWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIs
Ci0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0
aW9uPEFjdGlvbjQsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBBY3Rpb242
PiA+ID4gPiA+Ci1Eb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rp
b240IGE0LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2KSB7Ci0gIHJldHVybiBEb0FsbChhMSwgRG9B
bGwoYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24x
LCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAotICAgIHR5cGVuYW1lIEFjdGlv
bjQsIHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYsIHR5cGVuYW1lIEFjdGlvbjc+
Ci1pbmxpbmUgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3Ro
QWN0aW9uPEFjdGlvbjIsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRl
cm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjQsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxB
Y3Rpb241LCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjYsCi0gICAgQWN0aW9uNz4gPiA+
ID4gPiA+Ci1Eb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rpb240
IGE0LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2LAotICAgIEFjdGlvbjcgYTcpIHsKLSAgcmV0dXJu
IERvQWxsKGExLCBEb0FsbChhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAot
ICAgIHR5cGVuYW1lIEFjdGlvbjQsIHR5cGVuYW1lIEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYs
IHR5cGVuYW1lIEFjdGlvbjcsCi0gICAgdHlwZW5hbWUgQWN0aW9uOD4KLWlubGluZSBpbnRlcm5h
bDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMiwK
LSAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjMsIGludGVybmFsOjpEb0JvdGhBY3Rp
b248QWN0aW9uNCwKLSAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjUsIGludGVybmFs
OjpEb0JvdGhBY3Rpb248QWN0aW9uNiwKLSAgICBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlv
bjcsIEFjdGlvbjg+ID4gPiA+ID4gPiA+Ci1Eb0FsbChBY3Rpb24xIGExLCBBY3Rpb24yIGEyLCBB
Y3Rpb24zIGEzLCBBY3Rpb240IGE0LCBBY3Rpb241IGE1LCBBY3Rpb242IGE2LAotICAgIEFjdGlv
bjcgYTcsIEFjdGlvbjggYTgpIHsKLSAgcmV0dXJuIERvQWxsKGExLCBEb0FsbChhMiwgYTMsIGE0
LCBhNSwgYTYsIGE3LCBhOCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwgdHlw
ZW5hbWUgQWN0aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKLSAgICB0eXBlbmFtZSBBY3Rpb240LCB0
eXBlbmFtZSBBY3Rpb241LCB0eXBlbmFtZSBBY3Rpb242LCB0eXBlbmFtZSBBY3Rpb243LAotICAg
IHR5cGVuYW1lIEFjdGlvbjgsIHR5cGVuYW1lIEFjdGlvbjk+Ci1pbmxpbmUgaW50ZXJuYWw6OkRv
Qm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIsCi0gICAg
aW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFj
dGlvbjQsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBpbnRlcm5hbDo6RG9C
b3RoQWN0aW9uPEFjdGlvbjYsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb243LCBp
bnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjgsCi0gICAgQWN0aW9uOT4gPiA+ID4gPiA+ID4g
PgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCwg
QWN0aW9uNSBhNSwgQWN0aW9uNiBhNiwKLSAgICBBY3Rpb243IGE3LCBBY3Rpb244IGE4LCBBY3Rp
b245IGE5KSB7Ci0gIHJldHVybiBEb0FsbChhMSwgRG9BbGwoYTIsIGEzLCBhNCwgYTUsIGE2LCBh
NywgYTgsIGE5KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBB
Y3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAotICAgIHR5cGVuYW1lIEFjdGlvbjQsIHR5cGVuYW1l
IEFjdGlvbjUsIHR5cGVuYW1lIEFjdGlvbjYsIHR5cGVuYW1lIEFjdGlvbjcsCi0gICAgdHlwZW5h
bWUgQWN0aW9uOCwgdHlwZW5hbWUgQWN0aW9uOSwgdHlwZW5hbWUgQWN0aW9uMTA+Ci1pbmxpbmUg
aW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFj
dGlvbjIsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9C
b3RoQWN0aW9uPEFjdGlvbjQsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBp
bnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjYsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlv
bjxBY3Rpb243LCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjgsCi0gICAgaW50ZXJuYWw6
OkRvQm90aEFjdGlvbjxBY3Rpb245LCBBY3Rpb24xMD4gPiA+ID4gPiA+ID4gPiA+Ci1Eb0FsbChB
Y3Rpb24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzLCBBY3Rpb240IGE0LCBBY3Rpb241IGE1
LCBBY3Rpb242IGE2LAotICAgIEFjdGlvbjcgYTcsIEFjdGlvbjggYTgsIEFjdGlvbjkgYTksIEFj
dGlvbjEwIGExMCkgewotICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcsIGE4LCBhOSwgYTEwKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8v
IFRoZSBBQ1RJT04qIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ug
c2NvcGUgdG8KLS8vIGRlZmluZSBjdXN0b20gYWN0aW9ucyBlYXNpbHkuICBUaGUgc3ludGF4Ogot
Ly8KLS8vICAgQUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIHdpbGwgZGVmaW5l
IGFuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCi0vLyBzdGF0
ZW1lbnRzLiAgVGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBzdGF0ZW1lbnRzIHdpbGwgYmUgdXNl
ZCBhcwotLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0
ZW1lbnRzLCB5b3UgY2FuCi0vLyByZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQg
b2YgdGhlIG1vY2sgZnVuY3Rpb24gYnkKLS8vICdhcmdLJywgYW5kIHJlZmVyIHRvIGl0cyB0eXBl
IGJ5ICdhcmdLX3R5cGUnLiAgRm9yIGV4YW1wbGU6Ci0vLwotLy8gICBBQ1RJT04oSW5jcmVtZW50
QXJnMSkgewotLy8gICAgIGFyZzFfdHlwZSB0ZW1wID0gYXJnMTsKLS8vICAgICByZXR1cm4gKyso
KnRlbXApOwotLy8gICB9Ci0vLwotLy8gYWxsb3dzIHlvdSB0byB3cml0ZQotLy8KLS8vICAgLi4u
V2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKLS8vCi0vLyBZb3UgY2FuIGFsc28gcmVmZXIgdG8g
dGhlIGVudGlyZSBhcmd1bWVudCB0dXBsZSBhbmQgaXRzIHR5cGUgYnkKLS8vICdhcmdzJyBhbmQg
J2FyZ3NfdHlwZScsIGFuZCByZWZlciB0byB0aGUgbW9jayBmdW5jdGlvbiB0eXBlIGFuZCBpdHMK
LS8vIHJldHVybiB0eXBlIGJ5ICdmdW5jdGlvbl90eXBlJyBhbmQgJ3JldHVybl90eXBlJy4KLS8v
Ci0vLyBOb3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhl
IG1vY2sgZnVuY3Rpb24KLS8vIGFyZ3VtZW50cy4gIEhvd2V2ZXIgcmVzdCBhc3N1cmVkIHRoYXQg
eW91ciBjb2RlIGlzIHN0aWxsIHR5cGUtc2FmZToKLS8vIHlvdSdsbCBnZXQgYSBjb21waWxlciBl
cnJvciBpZiAqYXJnMSBkb2Vzbid0IHN1cHBvcnQgdGhlICsrCi0vLyBvcGVyYXRvciwgb3IgaWYg
dGhlIHR5cGUgb2YgKysoKmFyZzEpIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUKLS8vIG1vY2sg
ZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgZm9yIGV4YW1wbGUuCi0vLwotLy8gU29tZXRpbWVzIHlv
dSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSB0aGUgYWN0aW9uLiAgIEZvciB0aGF0IHlvdSBjYW4g
dXNlCi0vLyBhbm90aGVyIG1hY3JvOgotLy8KLS8vICAgQUNUSU9OX1AobmFtZSwgcGFyYW1fbmFt
ZSkgeyBzdGF0ZW1lbnRzOyB9Ci0vLwotLy8gRm9yIGV4YW1wbGU6Ci0vLwotLy8gICBBQ1RJT05f
UChBZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci0vLwotLy8gd2lsbCBhbGxvdyB5b3UgdG8g
d3JpdGU6Ci0vLwotLy8gICAuLi5XaWxsT25jZShBZGQoNSkpOwotLy8KLS8vIE5vdGUgdGhhdCB5
b3UgZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKLS8vIGVp
dGhlci4gIElmIHlvdSBuZWVkIHRvIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBu
YW1lZAotLy8gJ2ZvbycsIHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJy4gIEZvciBleGFtcGxlLCBp
biB0aGUgYm9keSBvZgotLy8gQUNUSU9OX1AoQWRkLCBuKSBhYm92ZSwgeW91IGNhbiB3cml0ZSAn
bl90eXBlJyB0byByZWZlciB0byB0aGUgdHlwZQotLy8gb2YgJ24nLgotLy8KLS8vIFdlIGFsc28g
cHJvdmlkZSBBQ1RJT05fUDIsIEFDVElPTl9QMywgLi4uLCB1cCB0byBBQ1RJT05fUDEwIHRvIHN1
cHBvcnQKLS8vIG11bHRpLXBhcmFtZXRlciBhY3Rpb25zLgotLy8KLS8vIEZvciB0aGUgcHVycG9z
ZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldwotLy8KLS8vICAgQUNUSU9OX1BrKEZvbywgcDEsIC4u
LiwgcGspIHsgLi4uIH0KLS8vCi0vLyBhcyBzaG9ydGhhbmQgZm9yCi0vLwotLy8gICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgotLy8gICBGb29BY3Rp
b25QazxwMV90eXBlLCAuLi4sIHBrX3R5cGU+IEZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUg
cGspIHsgLi4uIH0KLS8vCi0vLyBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHRl
bXBsYXRlIHR5cGUgYXJndW1lbnRzCi0vLyBleHBsaWNpdGx5IHdoZW4gaW52b2tpbmcgRm9vKCks
IGFzIGluIEZvbzxsb25nLCBib29sPig1LCBmYWxzZSk7Ci0vLyBhbHRob3VnaCB1c3VhbGx5IHlv
dSBjYW4gcmVseSBvbiB0aGUgY29tcGlsZXIgdG8gaW5mZXIgdGhlIHR5cGVzCi0vLyBmb3IgeW91
IGF1dG9tYXRpY2FsbHkuICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24K
LS8vIEZvbyhwMSwgLi4uLCBwaykgdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb0FjdGlvblBrPHAx
X3R5cGUsIC4uLiwKLS8vIHBrX3R5cGU+LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY29tcG9z
aW5nIGFjdGlvbnMuCi0vLwotLy8gWW91IGNhbiBhbHNvIG92ZXJsb2FkIGFjdGlvbnMgd2l0aCBk
aWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgotLy8KLS8vICAgQUNUSU9OX1AoUGx1cywg
YSkgeyAuLi4gfQotLy8gICBBQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQotLy8KLS8vIFdo
aWxlIGl0J3MgdGVtcHRpbmcgdG8gYWx3YXlzIHVzZSB0aGUgQUNUSU9OKiBtYWNyb3Mgd2hlbiBk
ZWZpbmluZwotLy8gYSBuZXcgYWN0aW9uLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVt
ZW50aW5nIEFjdGlvbkludGVyZmFjZQotLy8gb3IgdXNpbmcgTWFrZVBvbHltb3JwaGljQWN0aW9u
KCkgaW5zdGVhZCwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0bwotLy8gdXNlIHRoZSBhY3Rpb24g
YSBsb3QuICBXaGlsZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLAotLy8gdGhl
eSBnaXZlIHlvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9u
Ci0vLyBhcmd1bWVudHMgYW5kIHRoZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJh
bCBsZWFkcyB0bwotLy8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHRoYXQgcGF5IG9m
ZiBpbiB0aGUgbG9uZyBydW4uICBUaGV5Ci0vLyBhbHNvIGFsbG93IG92ZXJsb2FkaW5nIGFjdGlv
bnMgYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkCi0vLyB0byBqdXN0IGJhc2Vk
IG9uIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycykuCi0vLwotLy8gQ0FWRUFUOgotLy8KLS8vIEFD
VElPTiooKSBjYW4gb25seSBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlLiAgVGhlIHJlYXNv
biBpcwotLy8gdGhhdCBDKysgZG9lc24ndCB5ZXQgYWxsb3cgZnVuY3Rpb24tbG9jYWwgdHlwZXMg
dG8gYmUgdXNlZCB0bwotLy8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAgVGhlIHVwLWNvbWluZyBD
KysweCBzdGFuZGFyZCB3aWxsIGZpeCB0aGlzLgotLy8gT25jZSB0aGF0J3MgZG9uZSwgd2UnbGwg
Y29uc2lkZXIgc3VwcG9ydGluZyB1c2luZyBBQ1RJT04qKCkgaW5zaWRlCi0vLyBhIGZ1bmN0aW9u
LgotLy8KLS8vIE1PUkUgSU5GT1JNQVRJT046Ci0vLwotLy8gVG8gbGVhcm4gbW9yZSBhYm91dCB1
c2luZyB0aGVzZSBtYWNyb3MsIHBsZWFzZSBzZWFyY2ggZm9yICdBQ1RJT04nCi0vLyBvbiBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgotCi0vLyBBbiBp
bnRlcm5hbCBtYWNybyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyBBQ1RJT04qKCkuCi0jZGVmaW5l
IEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF9cCi0gICAgY29uc3QgYXJn
c190eXBlJiBhcmdzIEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCi0gICAgYXJnMF90eXBlIGFy
ZzAgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKLSAgICBhcmcxX3R5cGUgYXJnMSBHVEVTVF9B
VFRSSUJVVEVfVU5VU0VEXywgXAotICAgIGFyZzJfdHlwZSBhcmcyIEdURVNUX0FUVFJJQlVURV9V
TlVTRURfLCBcCi0gICAgYXJnM190eXBlIGFyZzMgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwK
LSAgICBhcmc0X3R5cGUgYXJnNCBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXywgXAotICAgIGFyZzVf
dHlwZSBhcmc1IEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCi0gICAgYXJnNl90eXBlIGFyZzYg
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKLSAgICBhcmc3X3R5cGUgYXJnNyBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXywgXAotICAgIGFyZzhfdHlwZSBhcmc4IEdURVNUX0FUVFJJQlVURV9VTlVT
RURfLCBcCi0gICAgYXJnOV90eXBlIGFyZzkgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8KLQotLy8g
U29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxpY2l0IHRlbXBsYXRlIHBh
cmFtZXRlcnMKLS8vIHRoYXQgY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRzIHZhbHVlIHBhcmFt
ZXRlcnMuICBBQ1RJT04oKSBhbmQKLS8vIEFDVElPTl9QKigpIGRvbid0IHN1cHBvcnQgdGhhdC4g
IEFDVElPTl9URU1QTEFURSgpIHJlbWVkaWVzIHRoYXQKLS8vIGFuZCBjYW4gYmUgdmlld2VkIGFz
IGFuIGV4dGVuc2lvbiB0byBBQ1RJT04oKSBhbmQgQUNUSU9OX1AqKCkuCi0vLwotLy8gVGhlIHN5
bnRheDoKLS8vCi0vLyAgIEFDVElPTl9URU1QTEFURShBY3Rpb25OYW1lLAotLy8gICAgICAgICAg
ICAgICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4uLCBraW5kX20s
IG5hbWVfbSksCi0vLyAgICAgICAgICAgICAgICAgICBBTkRfbl9WQUxVRV9QQVJBTVMocDEsIC4u
LiwgcF9uKSkgeyBzdGF0ZW1lbnRzOyB9Ci0vLwotLy8gZGVmaW5lcyBhbiBhY3Rpb24gdGVtcGxh
dGUgdGhhdCB0YWtlcyBtIGV4cGxpY2l0IHRlbXBsYXRlCi0vLyBwYXJhbWV0ZXJzIGFuZCBuIHZh
bHVlIHBhcmFtZXRlcnMuICBuYW1lX2kgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGgKLS8vIHRlbXBs
YXRlIHBhcmFtZXRlciwgYW5kIGtpbmRfaSBzcGVjaWZpZXMgd2hldGhlciBpdCdzIGEgdHlwZW5h
bWUsCi0vLyBhbiBpbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIHBfaSBpcyB0aGUg
bmFtZSBvZiB0aGUgaS10aAotLy8gdmFsdWUgcGFyYW1ldGVyLgotLy8KLS8vIEV4YW1wbGU6Ci0v
LwotLy8gICAvLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0cyB0aGUgay10aCBh
cmd1bWVudCBvZiB0aGUgbW9jawotLy8gICAvLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGll
cyBpdCB0byAqb3V0cHV0LgotLy8gICBBQ1RJT05fVEVNUExBVEUoRHVwbGljYXRlQXJnLAotLy8g
ICAgICAgICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUs
IFQpLAotLy8gICAgICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsK
LS8vICAgICAqb3V0cHV0ID0gVCg6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSk7Ci0vLyAgIH0KLS8v
ICAgLi4uCi0vLyAgICAgaW50IG47Ci0vLyAgICAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8p
KQotLy8gICAgICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+KCZu
KSk7Ci0vLwotLy8gVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFjdGlvbiB0ZW1wbGF0ZSwg
d3JpdGU6Ci0vLwotLy8gICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbT4odjEsIC4uLiwgdl9uKQot
Ly8KLS8vIHdoZXJlIHRoZSB0cyBhcmUgdGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBhbmQgdGhlIHZz
IGFyZSB0aGUgdmFsdWUKLS8vIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcyBh
cmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLgotLy8gSWYgeW91IHdhbnQgdG8gZXhwbGljaXRs
eSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgotLy8gcHJvdmlkZSBh
ZGRpdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoKLS8vCi0vLyAgIEFjdGlvbk5hbWU8dDEsIC4u
LiwgdF9tLCB1MSwgLi4uLCB1X2s+KHYxLCAuLi4sIHZfbikKLS8vCi0vLyB3aGVyZSB1X2kgaXMg
dGhlIGRlc2lyZWQgdHlwZSBvZiB2X2kuCi0vLwotLy8gQUNUSU9OX1RFTVBMQVRFIGFuZCBBQ1RJ
T04vQUNUSU9OX1AqIGNhbiBiZSBvdmVybG9hZGVkIG9uIHRoZQotLy8gbnVtYmVyIG9mIHZhbHVl
IHBhcmFtZXRlcnMsIGJ1dCBub3Qgb24gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZQotLy8gcGFyYW1l
dGVycy4gIFdpdGhvdXQgdGhlIHJlc3RyaWN0aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93
aW5nCi0vLyBpcyB1bmNsZWFyOgotLy8KLS8vICAgT3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+
KHgpOwotLy8KLS8vIEFyZSB3ZSB1c2luZyBhIHNpbmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0
aW9uIHdoZXJlICdib29sJyByZWZlcnMKLS8vIHRvIHRoZSB0eXBlIG9mIHgsIG9yIGFyZSB3ZSB1
c2luZyBhIHR3by10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uCi0vLyB3aGVyZSB0aGUgY29tcGls
ZXIgaXMgYXNrZWQgdG8gaW5mZXIgdGhlIHR5cGUgb2YgeD8KLS8vCi0vLyBJbXBsZW1lbnRhdGlv
biBub3RlczoKLS8vCi0vLyBHTU9DS19JTlRFUk5BTF8qX0hBU19tX1RFTVBMQVRFX1BBUkFNUyBh
bmQKLS8vIEdNT0NLX0lOVEVSTkFMXypfQU5EX25fVkFMVUVfUEFSQU1TIGFyZSBpbnRlcm5hbCBt
YWNyb3MgZm9yCi0vLyBpbXBsZW1lbnRpbmcgQUNUSU9OX1RFTVBMQVRFLiAgVGhlIG1haW4gdHJp
Y2sgd2UgdXNlIGlzIHRvIGNyZWF0ZQotLy8gbmV3IG1hY3JvIGludm9jYXRpb25zIHdoZW4gZXhw
YW5kaW5nIGEgbWFjcm8uICBGb3IgZXhhbXBsZSwgd2UgaGF2ZQotLy8KLS8vICAgI2RlZmluZSBB
Q1RJT05fVEVNUExBVEUobmFtZSwgdGVtcGxhdGVfcGFyYW1zLCB2YWx1ZV9wYXJhbXMpCi0vLyAg
ICAgICAuLi4gR01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFtcyAuLi4KLS8vCi0v
LyB3aGljaCBjYXVzZXMgQUNUSU9OX1RFTVBMQVRFKC4uLiwgSEFTXzFfVEVNUExBVEVfUEFSQU1T
KHR5cGVuYW1lLCBUKSwgLi4uKQotLy8gdG8gZXhwYW5kIHRvCi0vLwotLy8gICAgICAgLi4uIEdN
T0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSAuLi4K
LS8vCi0vLyBTaW5jZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BBUkFNUyBp
cyBhIG1hY3JvLCB0aGUKLS8vIHByZXByb2Nlc3NvciB3aWxsIGNvbnRpbnVlIHRvIGV4cGFuZCBp
dCB0bwotLy8KLS8vICAgICAgIC4uLiB0eXBlbmFtZSBUIC4uLgotLy8KLS8vIFRoaXMgdGVjaG5p
cXVlIGNvbmZvcm1zIHRvIHRoZSBDKysgc3RhbmRhcmQgYW5kIGlzIHBvcnRhYmxlLiAgSXQKLS8v
IGFsbG93cyB1cyB0byBpbXBsZW1lbnQgYWN0aW9uIHRlbXBsYXRlcyB1c2luZyBPKE4pIGNvZGUs
IHdoZXJlIE4gaXMKLS8vIHRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZW1wbGF0ZS92YWx1ZSBwYXJh
bWV0ZXJzIHN1cHBvcnRlZC4gIFdpdGhvdXQKLS8vIHVzaW5nIGl0LCB3ZSdkIGhhdmUgdG8gZGV2
b3RlIE8oTl4yKSBhbW91bnQgb2YgY29kZSB0byBpbXBsZW1lbnQgYWxsCi0vLyBjb21iaW5hdGlv
bnMgb2YgbSBhbmQgbi4KLQotLy8gRGVjbGFyZXMgdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCi0j
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzFfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBu
YW1lMCkga2luZDAgbmFtZTAKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfMl9URU1Q
TEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAotICAgIG5hbWUxKSBraW5kMCBuYW1l
MCwga2luZDEgbmFtZTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfM19URU1QTEFU
RV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIp
IGtpbmQwIG5hbWUwLCBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfREVDTF9IQVNfNF9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFt
ZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMykga2luZDAgbmFtZTAsIGtpbmQx
IG5hbWUxLCBraW5kMiBuYW1lMiwgXAotICAgIGtpbmQzIG5hbWUzCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0RFQ0xfSEFTXzVfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5h
bWUxLCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCkga2lu
ZDAgbmFtZTAsIGtpbmQxIG5hbWUxLCBcCi0gICAga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBr
aW5kNCBuYW1lNAotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU182X1RFTVBMQVRFX1BB
UkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2lu
ZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1LCBuYW1lNSkga2luZDAgbmFtZTAsIFwKLSAg
ICBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBraW5kNCBuYW1lNCwga2lu
ZDUgbmFtZTUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfN19URU1QTEFURV9QQVJB
TVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQz
LCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBcCi0gICAgbmFtZTYp
IGtpbmQwIG5hbWUwLCBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUzLCBraW5k
NCBuYW1lNCwgXAotICAgIGtpbmQ1IG5hbWU1LCBraW5kNiBuYW1lNgotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9ERUNMX0hBU184X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBu
YW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtp
bmQ1LCBuYW1lNSwga2luZDYsIG5hbWU2LCBcCi0gICAga2luZDcsIG5hbWU3KSBraW5kMCBuYW1l
MCwga2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywgXAotICAgIGtpbmQ0IG5h
bWU0LCBraW5kNSBuYW1lNSwga2luZDYgbmFtZTYsIGtpbmQ3IG5hbWU3Ci0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0RFQ0xfSEFTXzlfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEs
IG5hbWUxLCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCwg
a2luZDUsIG5hbWU1LCBraW5kNiwgbmFtZTYsIFwKLSAgICBraW5kNywgbmFtZTcsIGtpbmQ4LCBu
YW1lOCkga2luZDAgbmFtZTAsIGtpbmQxIG5hbWUxLCBraW5kMiBuYW1lMiwgXAotICAgIGtpbmQz
IG5hbWUzLCBraW5kNCBuYW1lNCwga2luZDUgbmFtZTUsIGtpbmQ2IG5hbWU2LCBraW5kNyBuYW1l
NywgXAotICAgIGtpbmQ4IG5hbWU4Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzEw
X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBcCi0gICAgbmFtZTEsIGtpbmQy
LCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtpbmQ1LCBuYW1lNSwga2luZDYs
IFwKLSAgICBuYW1lNiwga2luZDcsIG5hbWU3LCBraW5kOCwgbmFtZTgsIGtpbmQ5LCBuYW1lOSkg
a2luZDAgbmFtZTAsIFwKLSAgICBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIGtpbmQzIG5hbWUz
LCBraW5kNCBuYW1lNCwga2luZDUgbmFtZTUsIFwKLSAgICBraW5kNiBuYW1lNiwga2luZDcgbmFt
ZTcsIGtpbmQ4IG5hbWU4LCBraW5kOSBuYW1lOQotCi0vLyBMaXN0cyB0aGUgdGVtcGxhdGUgcGFy
YW1ldGVycy4KLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfMV9URU1QTEFURV9QQVJB
TVMoa2luZDAsIG5hbWUwKSBuYW1lMAotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18y
X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBcCi0gICAgbmFtZTEpIG5hbWUw
LCBuYW1lMQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18zX1RFTVBMQVRFX1BBUkFN
UyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMikgbmFtZTAs
IG5hbWUxLCBuYW1lMgotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU180X1RFTVBMQVRF
X1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwg
a2luZDMsIG5hbWUzKSBuYW1lMCwgbmFtZTEsIG5hbWUyLCBuYW1lMwotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9MSVNUX0hBU181X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBu
YW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQpIG5h
bWUwLCBuYW1lMSwgbmFtZTIsIG5hbWUzLCBcCi0gICAgbmFtZTQKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfTElTVF9IQVNfNl9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFt
ZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5k
NSwgbmFtZTUpIG5hbWUwLCBuYW1lMSwgXAotICAgIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1
Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfSEFTXzdfVEVNUExBVEVfUEFSQU1TKGtpbmQw
LCBuYW1lMCwga2luZDEsIG5hbWUxLCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMs
IGtpbmQ0LCBuYW1lNCwga2luZDUsIG5hbWU1LCBraW5kNiwgXAotICAgIG5hbWU2KSBuYW1lMCwg
bmFtZTEsIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNgotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9MSVNUX0hBU184X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBu
YW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtp
bmQ1LCBuYW1lNSwga2luZDYsIG5hbWU2LCBcCi0gICAga2luZDcsIG5hbWU3KSBuYW1lMCwgbmFt
ZTEsIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNiwgbmFtZTcKLSNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfTElTVF9IQVNfOV9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5k
MSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0
LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBuYW1lNiwgXAotICAgIGtpbmQ3LCBuYW1lNywga2luZDgs
IG5hbWU4KSBuYW1lMCwgbmFtZTEsIG5hbWUyLCBuYW1lMywgbmFtZTQsIG5hbWU1LCBcCi0gICAg
bmFtZTYsIG5hbWU3LCBuYW1lOAotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU18xMF9U
RU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAotICAgIG5hbWUxLCBraW5kMiwg
bmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBc
Ci0gICAgbmFtZTYsIGtpbmQ3LCBuYW1lNywga2luZDgsIG5hbWU4LCBraW5kOSwgbmFtZTkpIG5h
bWUwLCBuYW1lMSwgbmFtZTIsIFwKLSAgICBuYW1lMywgbmFtZTQsIG5hbWU1LCBuYW1lNiwgbmFt
ZTcsIG5hbWU4LCBuYW1lOQotCi0vLyBEZWNsYXJlcyB0aGUgdHlwZXMgb2YgdmFsdWUgcGFyYW1l
dGVycy4KLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFX0FORF8wX1ZBTFVFX1BBUkFN
UygpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfMV9WQUxVRV9QQVJBTVMo
cDApICwgdHlwZW5hbWUgcDAjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQ
RV9BTkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKSAsIFwKLSAgICB0eXBlbmFtZSBwMCMjX3R5cGUs
IHR5cGVuYW1lIHAxIyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfQU5E
XzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpICwgXAotICAgIHR5cGVuYW1lIHAwIyNfdHlwZSwg
dHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfREVDTF9UWVBFX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMykgLCBcCi0g
ICAgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNf
dHlwZSwgXAotICAgIHR5cGVuYW1lIHAzIyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9E
RUNMX1RZUEVfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCkgLCBcCi0gICAg
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlw
ZSwgXAotICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlCi0jZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfNl9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSkgLCBcCi0gICAgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5
cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5h
bWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxf
REVDTF9UWVBFX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0g
ICAgcDYpICwgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1l
IHAyIyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBl
LCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwNiMjX3R5cGUKLSNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfREVDTF9UWVBFX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBcCi0gICAgcDYsIHA3KSAsIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUg
cDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwMyMjX3R5cGUs
IHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgdHlwZW5hbWUg
cDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVD
TF9UWVBFX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0gICAg
cDYsIHA3LCBwOCkgLCB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCi0gICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMj
X3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlw
ZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfREVDTF9UWVBFX0FORF8xMF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
XAotICAgIHA2LCBwNywgcDgsIHA5KSAsIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEj
I190eXBlLCBcCi0gICAgdHlwZW5hbWUgcDIjI190eXBlLCB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5
cGVuYW1lIHA0IyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHA1IyNfdHlwZSwgdHlwZW5hbWUgcDYj
I190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwOCMjX3R5cGUsIHR5
cGVuYW1lIHA5IyNfdHlwZQotCi0vLyBJbml0aWFsaXplcyB0aGUgdmFsdWUgcGFyYW1ldGVycy4K
LSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfMF9WQUxVRV9QQVJBTVMoKVwKLSAgICAo
KQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF8xX1ZBTFVFX1BBUkFNUyhwMClcCi0g
ICAgKHAwIyNfdHlwZSBnbW9ja19wMCkgOiBwMChnbW9ja19wMCkKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfSU5JVF9BTkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKVwKLSAgICAocDAjI190eXBlIGdt
b2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSkK
LSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBw
MilcCi0gICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAg
ICAgIHAyIyNfdHlwZSBnbW9ja19wMikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIo
Z21vY2tfcDIpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzRfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIsIHAzKVwKLSAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21v
Y2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMp
IDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBw
MyhnbW9ja19wMykKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfNV9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMsIHA0KVwKLSAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5
cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICBwMyMjX3R5cGUgZ21v
Y2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwg
XAotICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpCi0jZGVm
aW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUpXAotICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwg
cDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190
eXBlIGdtb2NrX3A0LCBcCi0gICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSkgOiBwMChnbW9ja19w
MCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgIHAzKGdtb2NrX3AzKSwg
cDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSkKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9B
TkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpXAotICAgIChwMCMj
X3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBc
Ci0gICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5
cGUgZ21vY2tfcDUsIFwKLSAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2KSA6IHAwKGdtb2NrX3Aw
KSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAgcDMoZ21vY2tfcDMpLCBw
NChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0lOSVRfQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
LCBwNylcCi0gICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMj
X3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUg
Z21vY2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwgXAotICAgICAgICBwNiMjX3R5cGUgZ21vY2tf
cDYsIHA3IyNfdHlwZSBnbW9ja19wNykgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAot
ICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9j
a19wNSksIHA2KGdtb2NrX3A2KSwgXAotICAgICAgICBwNyhnbW9ja19wNykKLSNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfSU5JVF9BTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYsIFwKLSAgICBwNywgcDgpXAotICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlw
ZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgIHAzIyNfdHlwZSBnbW9j
a19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKLSAgICAgICAg
cDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIFwKLSAgICAgICAgcDgjI190
eXBlIGdtb2NrX3A4KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiks
IFwKLSAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYo
Z21vY2tfcDYpLCBwNyhnbW9ja19wNyksIFwKLSAgICAgICAgcDgoZ21vY2tfcDgpCi0jZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywg
cDQsIHA1LCBwNiwgXAotICAgIHA3LCBwOCwgcDkpXAotICAgIChwMCMjX3R5cGUgZ21vY2tfcDAs
IHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgIHAzIyNf
dHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwK
LSAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIHA4IyNfdHlw
ZSBnbW9ja19wOCwgXAotICAgICAgICBwOSMjX3R5cGUgZ21vY2tfcDkpIDogcDAoZ21vY2tfcDAp
LCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19wMyksIHA0
KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdtb2NrX3A3KSwgXAot
ICAgICAgICBwOChnbW9ja19wOCksIHA5KGdtb2NrX3A5KQotCi0vLyBEZWNsYXJlcyB0aGUgZmll
bGRzIGZvciBzdG9yaW5nIHRoZSB2YWx1ZSBwYXJhbWV0ZXJzLgotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9ERUZOX0FORF8wX1ZBTFVFX1BBUkFNUygpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RF
Rk5fQU5EXzFfVkFMVUVfUEFSQU1TKHAwKSBwMCMjX3R5cGUgcDA7Ci0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0RFRk5fQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgcDAjI190eXBlIHAwOyBcCi0g
ICAgcDEjI190eXBlIHAxOwotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF8zX1ZBTFVF
X1BBUkFNUyhwMCwgcDEsIHAyKSBwMCMjX3R5cGUgcDA7IFwKLSAgICBwMSMjX3R5cGUgcDE7IHAy
IyNfdHlwZSBwMjsKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfNF9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMpIHAwIyNfdHlwZSBwMDsgXAotICAgIHAxIyNfdHlwZSBwMTsgcDIj
I190eXBlIHAyOyBwMyMjX3R5cGUgcDM7Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5E
XzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBcCi0gICAgcDQpIHAwIyNfdHlwZSBwMDsg
cDEjI190eXBlIHAxOyBwMiMjX3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgcDQjI190eXBlIHA0Owot
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF82X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAy
LCBwMywgcDQsIFwKLSAgICBwNSkgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAyIyNfdHlw
ZSBwMjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7IFwKLSAgICBwNSMjX3R5cGUgcDU7Ci0j
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUsIFwKLSAgICBwNikgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAyIyNf
dHlwZSBwMjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7IFwKLSAgICBwNSMjX3R5cGUgcDU7
IHA2IyNfdHlwZSBwNjsKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfOF9WQUxVRV9Q
QVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKLSAgICBwNykgcDAjI190eXBlIHAw
OyBwMSMjX3R5cGUgcDE7IHAyIyNfdHlwZSBwMjsgcDMjI190eXBlIHAzOyBwNCMjX3R5cGUgcDQ7
IFwKLSAgICBwNSMjX3R5cGUgcDU7IHA2IyNfdHlwZSBwNjsgcDcjI190eXBlIHA3OwotI2RlZmlu
ZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywg
cDQsIHA1LCBwNiwgXAotICAgIHA3LCBwOCkgcDAjI190eXBlIHAwOyBwMSMjX3R5cGUgcDE7IHAy
IyNfdHlwZSBwMjsgcDMjI190eXBlIHAzOyBcCi0gICAgcDQjI190eXBlIHA0OyBwNSMjX3R5cGUg
cDU7IHA2IyNfdHlwZSBwNjsgcDcjI190eXBlIHA3OyBwOCMjX3R5cGUgcDg7Ci0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0RFRk5fQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgXAotICAgIHA3LCBwOCwgcDkpIHAwIyNfdHlwZSBwMDsgcDEjI190eXBlIHAxOyBw
MiMjX3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgXAotICAgIHA0IyNfdHlwZSBwNDsgcDUjI190eXBl
IHA1OyBwNiMjX3R5cGUgcDY7IHA3IyNfdHlwZSBwNzsgcDgjI190eXBlIHA4OyBcCi0gICAgcDkj
I190eXBlIHA5OwotCi0vLyBMaXN0cyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KLSNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfTElTVF9BTkRfMF9WQUxVRV9QQVJBTVMoKQotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9MSVNUX0FORF8xX1ZBTFVFX1BBUkFNUyhwMCkgcDAKLSNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfTElTVF9BTkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKSBwMCwgcDEKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfTElTVF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMikgcDAsIHAxLCBwMgot
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAy
LCBwMykgcDAsIHAxLCBwMiwgcDMKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9BTkRfNV9W
QUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0KSBwMCwgcDEsIFwKLSAgICBwMiwgcDMsIHA0
Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwg
cDIsIHAzLCBwNCwgcDUpIHAwLCBcCi0gICAgcDEsIHAyLCBwMywgcDQsIHA1Ci0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0xJU1RfQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIFwKLSAgICBwNikgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfTElTVF9BTkRfOF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYsIFwKLSAgICBwNykgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3Ci0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0xJU1RfQU5EXzlfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBcCi0gICAgcDcsIHA4KSBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4
Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEs
IHAyLCBwMywgcDQsIHA1LCBwNiwgXAotICAgIHA3LCBwOCwgcDkpIHAwLCBwMSwgcDIsIHAzLCBw
NCwgcDUsIHA2LCBwNywgcDgsIHA5Ci0KLS8vIExpc3RzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgdHlw
ZXMuCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfMF9WQUxVRV9QQVJBTVMo
KQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzFfVkFMVUVfUEFSQU1TKHAw
KSAsIHAwIyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzJfVkFM
VUVfUEFSQU1TKHAwLCBwMSkgLCBwMCMjX3R5cGUsIFwKLSAgICBwMSMjX3R5cGUKLSNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF8zX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyKSAs
IHAwIyNfdHlwZSwgXAotICAgIHAxIyNfdHlwZSwgcDIjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0xJU1RfVFlQRV9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpICwgXAot
ICAgIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZQotI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCkgLCBcCi0gICAgcDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBl
LCBwNCMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF82X1ZBTFVF
X1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSAsIFwKLSAgICBwMCMjX3R5cGUsIHAxIyNf
dHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgcDUjI190eXBlCi0jZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSwgXAotICAgIHA2KSAsIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUs
IHAzIyNfdHlwZSwgcDQjI190eXBlLCBwNSMjX3R5cGUsIFwKLSAgICBwNiMjX3R5cGUKLSNkZWZp
bmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAy
LCBwMywgcDQsIHA1LCBcCi0gICAgcDYsIHA3KSAsIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMj
X3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCi0gICAgcDUjI190eXBlLCBwNiMjX3R5cGUs
IHA3IyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzlfVkFMVUVf
UEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKLSAgICBwNiwgcDcsIHA4KSAsIHAwIyNf
dHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCi0gICAg
cDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlCi0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBw
NCwgcDUsIFwKLSAgICBwNiwgcDcsIHA4LCBwOSkgLCBwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIj
I190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgIHA1IyNfdHlwZSwgcDYjI190eXBl
LCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwgcDkjI190eXBlCi0KLS8vIERlY2xhcmVzIHRoZSB2YWx1
ZSBwYXJhbWV0ZXJzLgotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0FORF8wX1ZBTFVFX1BB
UkFNUygpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzFfVkFMVUVfUEFSQU1TKHAw
KSBwMCMjX3R5cGUgcDAKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfMl9WQUxVRV9Q
QVJBTVMocDAsIHAxKSBwMCMjX3R5cGUgcDAsIFwKLSAgICBwMSMjX3R5cGUgcDEKLSNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfREVDTF9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMikgcDAjI190
eXBlIHAwLCBcCi0gICAgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfREVDTF9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpIHAwIyNfdHlw
ZSBwMCwgXAotICAgIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMKLSNk
ZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfNV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMsIFwKLSAgICBwNCkgcDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwg
cDMjI190eXBlIHAzLCBwNCMjX3R5cGUgcDQKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9B
TkRfNl9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBcCi0gICAgcDUpIHAwIyNfdHlw
ZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgcDQjI190eXBl
IHA0LCBcCi0gICAgcDUjI190eXBlIHA1Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5E
XzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKLSAgICBwNikgcDAjI190
eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBwNCMjX3R5
cGUgcDQsIFwKLSAgICBwNSMjX3R5cGUgcDUsIHA2IyNfdHlwZSBwNgotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9ERUNMX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBw
NiwgXAotICAgIHA3KSBwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBw
MyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgXAotICAgIHA1IyNfdHlwZSBwNSwgcDYjI190eXBl
IHA2LCBwNyMjX3R5cGUgcDcKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfOV9WQUxV
RV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKLSAgICBwNywgcDgpIHAwIyNf
dHlwZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgXAotICAg
IHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywg
cDgjI190eXBlIHA4Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzEwX1ZBTFVFX1BB
UkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgXAotICAgIHA3LCBwOCwgcDkpIHAwIyNf
dHlwZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgXAotICAg
IHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywg
cDgjI190eXBlIHA4LCBcCi0gICAgcDkjI190eXBlIHA5Ci0KLS8vIFRoZSBzdWZmaXggb2YgdGhl
IGNsYXNzIHRlbXBsYXRlIGltcGxlbWVudGluZyB0aGUgYWN0aW9uIHRlbXBsYXRlLgotI2RlZmlu
ZSBHTU9DS19JTlRFUk5BTF9DT1VOVF9BTkRfMF9WQUxVRV9QQVJBTVMoKQotI2RlZmluZSBHTU9D
S19JTlRFUk5BTF9DT1VOVF9BTkRfMV9WQUxVRV9QQVJBTVMocDApIFAKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfQ09VTlRfQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgUDIKLSNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfQ09VTlRfQU5EXzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpIFAzCi0jZGVm
aW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF80X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MykgUDQKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzVfVkFMVUVfUEFSQU1TKHAw
LCBwMSwgcDIsIHAzLCBwNCkgUDUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzZf
VkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpIFA2Ci0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0NPVU5UX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBw
NikgUDcKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzhfVkFMVUVfUEFSQU1TKHAw
LCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBcCi0gICAgcDcpIFA4Ci0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0NPVU5UX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBw
NiwgXAotICAgIHA3LCBwOCkgUDkKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzEw
X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgXAotICAgIHA3LCBwOCwg
cDkpIFAxMAotCi0vLyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdGVtcGxhdGUgaW1wbGVtZW50aW5n
IHRoZSBhY3Rpb24gdGVtcGxhdGUuCi0jZGVmaW5lIEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwg
dmFsdWVfcGFyYW1zKVwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKG5hbWUjI0FjdGlvbiwgR01P
Q0tfSU5URVJOQUxfQ09VTlRfIyN2YWx1ZV9wYXJhbXMpCi0KLSNkZWZpbmUgQUNUSU9OX1RFTVBM
QVRFKG5hbWUsIHRlbXBsYXRlX3BhcmFtcywgdmFsdWVfcGFyYW1zKVwKLSAgdGVtcGxhdGUgPEdN
T0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICAgICAgICBHTU9DS19J
TlRFUk5BTF9ERUNMX1RZUEVfIyN2YWx1ZV9wYXJhbXM+XAotICBjbGFzcyBHTU9DS19BQ1RJT05f
Q0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcykge1wKLSAgIHB1YmxpYzpcCi0gICAgZXhwbGljaXQg
R01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpXAotICAgICAgICBHTU9DS19J
TlRFUk5BTF9JTklUXyMjdmFsdWVfcGFyYW1zIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
PlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJm
YWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtc
Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+
OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6
OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5
cGU7XAotICAgICAgZXhwbGljaXQgZ21vY2tfSW1wbCBHTU9DS19JTlRFUk5BTF9JTklUXyMjdmFs
dWVfcGFyYW1zIHt9XAotICAgICAgdmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFy
Z3NfdHlwZSYgYXJncykge1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFj
dGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZv
cm0odGhpcywgYXJncyk7XAotICAgICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcw
X3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBl
LCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAot
ICAgICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdz
LCBhcmcwX3R5cGUgYXJnMCwgXAotICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUg
YXJnMiwgYXJnM190eXBlIGFyZzMsIGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90
eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgs
IFwKLSAgICAgICAgICBhcmc5X3R5cGUgYXJnOSkgY29uc3Q7XAotICAgICAgR01PQ0tfSU5URVJO
QUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAgICAgcmV0
dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxGPihH
TU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVfcGFyYW1zKSk7XAotICAgIH1cCi0gICAgR01PQ0tf
SU5URVJOQUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpKTtc
Ci0gIH07XAotICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3BhcmFt
c1wKLSAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3BhcmFtcz5c
Ci0gIGlubGluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8XAotICAg
ICAgR01PQ0tfSU5URVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgIEdNT0NLX0lO
VEVSTkFMX0xJU1RfVFlQRV8jI3ZhbHVlX3BhcmFtcz4gbmFtZShcCi0gICAgICAgICAgR01PQ0tf
SU5URVJOQUxfREVDTF8jI3ZhbHVlX3BhcmFtcykge1wKLSAgICByZXR1cm4gR01PQ0tfQUNUSU9O
X0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpPFwKLSAgICAgICAgR01PQ0tfSU5URVJOQUxfTElT
VF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFXyMj
dmFsdWVfcGFyYW1zPihcCi0gICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVf
cGFyYW1zKTtcCi0gIH1cCi0gIHRlbXBsYXRlIDxHTU9DS19JTlRFUk5BTF9ERUNMXyMjdGVtcGxh
dGVfcGFyYW1zXAotICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFXyMjdmFsdWVf
cGFyYW1zPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIEdNT0NL
X0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCi0gICAgICAgICAgR01PQ0tfSU5U
RVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgICAgICBHTU9DS19JTlRFUk5BTF9M
SVNUX1RZUEVfIyN2YWx1ZV9wYXJhbXM+OjpnbW9ja19JbXBsPEY+OjpcCi0gICAgICAgICAgICAg
IGdtb2NrX1BlcmZvcm1JbXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FO
RF9OQU1FU19VTlVTRURfKSBjb25zdAotCi0jZGVmaW5lIEFDVElPTihuYW1lKVwKLSAgY2xhc3Mg
bmFtZSMjQWN0aW9uIHtcCi0gICBwdWJsaWM6XAotICAgIG5hbWUjI0FjdGlvbigpIHt9XAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6
dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBl
ZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBs
ZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAotICAgICAgZ21vY2tfSW1wbCgpIHt9XAotICAgICAg
dmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAg
ICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlw
ZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAotICAg
ICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFf
dHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBl
LCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAgICAgIHR5
cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUs
IFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICAgICAgcmV0dXJuX3R5cGUgZ21v
Y2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAot
ICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMs
IGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBh
cmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwKLSAgICAgICAgICBhcmc5X3R5
cGUgYXJnOSkgY29uc3Q7XAotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBv
cGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4oKSk7XAotICAgIH1cCi0gICBwcml2
YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvbik7XAotICB9O1wK
LSAgaW5saW5lIG5hbWUjI0FjdGlvbiBuYW1lKCkge1wKLSAgICByZXR1cm4gbmFtZSMjQWN0aW9u
KCk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0g
ICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJn
NV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwg
dHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICB0eXBl
bmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAotICAgICAgbmFt
ZSMjQWN0aW9uOjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAg
R01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmlu
ZSBBQ1RJT05fUChuYW1lLCBwMClcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAot
ICBjbGFzcyBuYW1lIyNBY3Rpb25QIHtcCi0gICBwdWJsaWM6XAotICAgIGV4cGxpY2l0IG5hbWUj
I0FjdGlvblAocDAjI190eXBlIGdtb2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7fVwKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj5cCi0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OkFjdGlvbkludGVyZmFjZTxGPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBG
IGZ1bmN0aW9uX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCi0g
ICAgICAgICAgYXJnc190eXBlO1wKLSAgICAgIGV4cGxpY2l0IGdtb2NrX0ltcGwocDAjI190eXBl
IGdtb2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7fVwKLSAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUg
UGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCi0g
ICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKLSAgICAgIH1cCi0gICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJf
dHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBl
LCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5
cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICAgICAgdHlwZW5h
bWUgYXJnOV90eXBlPlwKLSAgICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0
IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKLSAgICAgICAgICBhcmcxX3R5cGUg
YXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJnNCwgXAot
ICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBlIGFyZzcs
IGFyZzhfdHlwZSBhcmc4LCBcCi0gICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0O1wKLSAg
ICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCkpO1wKLSAgICB9XAotICAg
IHAwIyNfdHlwZSBwMDtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KG5hbWUjI0FjdGlvblApO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+
XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDxwMCMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwKSB7
XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QPHAwIyNfdHlwZT4ocDApO1wKLSAgfVwKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFt
ZSBhcmcyX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90
eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlw
ZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFy
ZzlfdHlwZT5cCi0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpS
ZXN1bHRcCi0gICAgICBuYW1lIyNBY3Rpb25QPHAwIyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdt
b2NrX1BlcmZvcm1JbXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9O
QU1FU19VTlVTRURfKSBjb25zdAotCi0jZGVmaW5lIEFDVElPTl9QMihuYW1lLCBwMCwgcDEpXAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGU+XAotICBj
bGFzcyBuYW1lIyNBY3Rpb25QMiB7XAotICAgcHVibGljOlwKLSAgICBuYW1lIyNBY3Rpb25QMihw
MCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSkgOiBwMChnbW9ja19wMCksIFwK
LSAgICAgICAgcDEoZ21vY2tfcDEpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAg
ICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+
IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAg
ICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1
bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVy
bmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAot
ICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSkg
OiBwMChnbW9ja19wMCksIFwKLSAgICAgICAgICBwMShnbW9ja19wMSkge31cCi0gICAgICB2aXJ0
dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAg
ICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBn
bW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9
XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBl
LCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5
cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlwZW5h
bWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAot
ICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19Q
ZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0gICAg
ICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJn
NF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYs
IGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlwZSBh
cmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wK
LSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwp
O1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5n
OjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+
KG5ldyBnbW9ja19JbXBsPEY+KHAwLCBwMSkpO1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtc
Ci0gICAgcDEjI190eXBlIHAxO1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8obmFtZSMjQWN0aW9uUDIpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMj
X3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNBY3Rpb25QMjxwMCMj
X3R5cGUsIHAxIyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKLSAgICAgIHAxIyNfdHlwZSBw
MSkge1wKLSAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAw
LCBwMSk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBw
MSMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0g
ICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJn
NV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwg
dHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICB0eXBl
bmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAotICAgICAgbmFt
ZSMjQWN0aW9uUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19Q
ZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNf
VU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDMobmFtZSwgcDAsIHAxLCBwMilcCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5h
bWUgcDIjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjQWN0aW9uUDMge1wKLSAgIHB1YmxpYzpcCi0g
ICAgbmFtZSMjQWN0aW9uUDMocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEs
IFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tf
cDEpLCBwMihnbW9ja19wMikge31cCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICAgIGNs
YXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wK
LSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKLSAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBy
ZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFyZ3NfdHlwZTtcCi0gICAg
ICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0g
ICAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEp
LCBwMihnbW9ja19wMikge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29u
c3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAg
UGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAg
ICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUg
YXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3
X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlw
ZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUm
IGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJf
dHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBh
cmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUg
YXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5
cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAg
IHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0g
ICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0
aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcg
Z21vY2tfSW1wbDxGPihwMCwgcDEsIHAyKSk7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wK
LSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICBwcml2YXRlOlwKLSAg
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblAzKTtcCi0gIH07XAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAy
IyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNBY3Rpb25QMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwg
cDIjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgXAotICAgICAgcDEjI190eXBlIHAxLCBwMiMj
X3R5cGUgcDIpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblAzPHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGU+KHAwLCBwMSwgcDIpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGU+XAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5
cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBh
cmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAg
ICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90
eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6
OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAotICAgICAgbmFtZSMjQWN0aW9uUDM8cDAj
I190eXBlLCBwMSMjX3R5cGUsIFwKLSAgICAgICAgICBwMiMjX3R5cGU+OjpnbW9ja19JbXBsPEY+
OjpnbW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19B
TkRfTkFNRVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDQobmFtZSwgcDAsIHAx
LCBwMiwgcDMpXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMj
X3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwK
LSAgY2xhc3MgbmFtZSMjQWN0aW9uUDQge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9u
UDQocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIj
I190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMpIDogcDAoZ21vY2tfcDApLCBwMShn
bW9ja19wMSksIFwKLSAgICAgICAgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMykge31cCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVk
ZWYgRiBmdW5jdGlvbl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVm
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxl
XAotICAgICAgICAgIGFyZ3NfdHlwZTtcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9j
a19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAg
ICBwMyMjX3R5cGUgZ21vY2tfcDMpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdt
b2NrX3AyKSwgXAotICAgICAgICAgIHAzKGdtb2NrX3AzKSB7fVwKLSAgICAgIHZpcnR1YWwgcmV0
dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCi0gICAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0lt
cGw+OjpcCi0gICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKLSAgICAgIH1cCi0gICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVu
YW1lIGFyZzJfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUg
YXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc2
X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICAg
ICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1J
bXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKLSAgICAgICAgICBh
cmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUg
YXJnNCwgXAotICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190
eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCi0gICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNv
bnN0O1wKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAg
cDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0gICAgIHByaXZhdGU6XAotICAg
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qg
e1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihw
MCwgcDEsIHAyLCBwMykpO1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190
eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICBwcml2
YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblA0KTtcCi0gIH07
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5
cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwKLSAgaW5saW5l
IG5hbWUjI0FjdGlvblA0PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIFwKLSAgICAg
IHAzIyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAy
LCBcCi0gICAgICBwMyMjX3R5cGUgcDMpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblA0PHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZT4ocDAsIHAxLCBcCi0gICAg
ICAgIHAyLCBwMyk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUj
I0FjdGlvblA0PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIFwKLSAgICAgICAgICBw
MyMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAg
R01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmlu
ZSBBQ1RJT05fUDUobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0KVwKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwK
LSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlPlwKLSAgY2xhc3Mg
bmFtZSMjQWN0aW9uUDUge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDUocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdt
b2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIFwKLSAgICAgICAgcDQjI190eXBlIGdtb2NrX3A0
KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAg
cDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCkge31cCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZh
Y2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wK
LSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46
OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFyZ3NfdHlw
ZTtcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2Nr
X3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMs
IHA0IyNfdHlwZSBnbW9ja19wNCkgOiBwMChnbW9ja19wMCksIFwKLSAgICAgICAgICBwMShnbW9j
a19wMSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCkge31cCi0gICAg
ICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAot
ICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90
eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0g
ICAgICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJn
MV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5
cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAg
dHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlw
ZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBn
bW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBc
Ci0gICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJn
MywgYXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBl
IGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlf
dHlwZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBl
IHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAg
cDQjI190eXBlIHA0O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3Bl
cmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVz
dGluZzo6QWN0aW9uPEY+KG5ldyBnbW9ja19JbXBsPEY+KHAwLCBwMSwgcDIsIHAzLCBwNCkpO1wK
LSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMj
X3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICAgcDQjI190eXBlIHA0O1wKLSAgIHBy
aXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9uUDUpO1wKLSAg
fTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwg
dHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1l
IHA0IyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNBY3Rpb25QNTxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0IyNfdHlwZT4gbmFtZShwMCMjX3R5
cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICAg
IHA0IyNfdHlwZSBwNCkge1wKLSAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDU8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZT4ocDAs
IHAxLCBwMiwgcDMsIHA0KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUs
IHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBG
PlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0
eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUg
YXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlw
ZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVu
YW1lIGFyZzlfdHlwZT5cCi0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9u
PEY+OjpSZXN1bHRcCi0gICAgICBuYW1lIyNBY3Rpb25QNTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwg
cDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgICBwNCMjX3R5cGU+OjpnbW9ja19JbXBs
PEY+OjpnbW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBF
U19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDYobmFtZSwgcDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSlcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBw
MyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlPlwKLSAgY2xh
c3MgbmFtZSMjQWN0aW9uUDYge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDYocDAj
I190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBl
IGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAotICAg
ICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAy
KGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21v
Y2tfcDUpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFzcyBnbW9ja19J
bXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0gICAgIHB1Ymxp
YzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7
XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxG
Pjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAotICAgICAgZ21vY2tfSW1w
bChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2Nr
X3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQs
IFwKLSAgICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDApLCBwMShnbW9j
a19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tf
cDQpLCBwNShnbW9ja19wNSkge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0o
Y29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAgICAg
ICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwK
LSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5h
bWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBh
cmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlf
dHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5
cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFy
ZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAg
ICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5
cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMj
X3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0g
ICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAgcDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlw
ZSBwNTtcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9j
a19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6
dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFj
dGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSk7XAotICAg
IH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlw
ZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wKLSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNf
dHlwZSBwNTtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUj
I0FjdGlvblA2KTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZT5cCi0gIGlubGlu
ZSBuYW1lIyNBY3Rpb25QNjxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5
cGUsIFwKLSAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgcDEj
I190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIFwKLSAgICAgIHAzIyNfdHlwZSBwMywgcDQjI190eXBl
IHA0LCBwNSMjX3R5cGUgcDUpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblA2PHAwIyNfdHlw
ZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUs
IHA1IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSk7XAotICB9XAotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlw
ZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVu
YW1lIHA1IyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUs
IFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFt
ZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190
eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0g
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAg
ICBuYW1lIyNBY3Rpb25QNjxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5
cGUsIHA0IyNfdHlwZSwgXAotICAgICAgICAgIHA1IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdt
b2NrX1BlcmZvcm1JbXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9O
QU1FU19VTlVTRURfKSBjb25zdAotCi0jZGVmaW5lIEFDVElPTl9QNyhuYW1lLCBwMCwgcDEsIHAy
LCBwMywgcDQsIHA1LCBwNilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMj
X3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0
eXBlbmFtZSBwNiMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNBY3Rpb25QNyB7XAotICAgcHVibGlj
OlwKLSAgICBuYW1lIyNBY3Rpb25QNyhwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9j
a19wMSwgXAotICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlwZSBnbW9ja19wMywg
cDQjI190eXBlIGdtb2NrX3A0LCBcCi0gICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSwgcDYjI190
eXBlIGdtb2NrX3A2KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBcCi0gICAgICAgIHAy
KGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgXAot
ICAgICAgICBwNihnbW9ja19wNikge31cCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICAg
IGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4g
e1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKLSAgICAg
IHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3Vs
dCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFyZ3NfdHlwZTtcCi0g
ICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBw
MiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNf
dHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAgICAgICAgcDYjI190eXBl
IGdtb2NrX3A2KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwK
LSAgICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihn
bW9ja19wNikge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJn
c190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0
aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9y
bSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBf
dHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAg
ICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90
eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUs
IHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0g
ICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3Ms
IGFyZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBh
cmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5
cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwg
XAotICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7
XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMj
X3R5cGUgcDM7XAotICAgICAgcDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0g
ICAgICBwNiMjX3R5cGUgcDY7XAotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
PiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDAsIHAxLCBwMiwgcDMsIHA0
LCBwNSwgXAotICAgICAgICAgIHA2KSk7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAg
ICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wK
LSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgcDYjI190eXBlIHA2
O1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9u
UDcpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAx
IyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUs
IHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBwNiMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDc8cDAjI190eXBlLCBwMSMjX3R5
cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwg
cDYjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgcDEjI190eXBlIHAxLCBcCi0gICAgICBwMiMj
X3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgcDQjI190eXBlIHA0LCBwNSMjX3R5cGUgcDUsIFwKLSAg
ICAgIHA2IyNfdHlwZSBwNikge1wKLSAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDc8cDAjI190eXBl
LCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwg
cDUjI190eXBlLCBwNiMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KTtcCi0gIH1c
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0
IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5
cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICB0eXBl
bmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUg
YXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICB0eXBlbmFtZSA6OnRl
c3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAotICAgICAgbmFtZSMjQWN0aW9u
UDc8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUs
IFwKLSAgICAgICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2Nr
X1BlcmZvcm1JbXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1F
U19VTlVTRURfKSBjb25zdAotCi0jZGVmaW5lIEFDVElPTl9QOChuYW1lLCBwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBwNiwgcDcpXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAg
dHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNB
Y3Rpb25QOCB7XAotICAgcHVibGljOlwKLSAgICBuYW1lIyNBY3Rpb25QOChwMCMjX3R5cGUgZ21v
Y2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAotICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIs
IHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBcCi0gICAgICAgIHA1IyNf
dHlwZSBnbW9ja19wNSwgcDYjI190eXBlIGdtb2NrX3A2LCBcCi0gICAgICAgIHA3IyNfdHlwZSBn
bW9ja19wNykgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0g
ICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2Nr
X3A2KSwgXAotICAgICAgICBwNyhnbW9ja19wNykge31cCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRl
cmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBl
O1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248
Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFyZ3Nf
dHlwZTtcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdt
b2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tf
cDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAgICAgICAg
cDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcpIDogcDAoZ21vY2tfcDApLCBc
Ci0gICAgICAgICAgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQo
Z21vY2tfcDQpLCBcCi0gICAgICAgICAgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdt
b2NrX3A3KSB7fVwKLSAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdz
X3R5cGUmIGFyZ3MpIHtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rp
b25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCi0gICAgICAgICAgICBQZXJmb3Jt
KHRoaXMsIGFyZ3MpO1wKLSAgICAgIH1cCi0gICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90
eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgICAg
IHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5
cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwg
dHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAg
ICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywg
YXJnMF90eXBlIGFyZzAsIFwKLSAgICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFy
ZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJnNCwgXAotICAgICAgICAgIGFyZzVfdHlw
ZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBc
Ci0gICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0O1wKLSAgICAgIHAwIyNfdHlwZSBwMDtc
Ci0gICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNf
dHlwZSBwMztcCi0gICAgICBwNCMjX3R5cGUgcDQ7XAotICAgICAgcDUjI190eXBlIHA1O1wKLSAg
ICAgIHA2IyNfdHlwZSBwNjtcCi0gICAgICBwNyMjX3R5cGUgcDc7XAotICAgICBwcml2YXRlOlwK
LSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNv
bnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8
Rj4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAgICAgICAgIHA2LCBwNykpO1wKLSAgICB9
XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUg
cDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICAgcDQjI190eXBlIHA0O1wKLSAgICBwNSMjX3R5
cGUgcDU7XAotICAgIHA2IyNfdHlwZSBwNjtcCi0gICAgcDcjI190eXBlIHA3O1wKLSAgIHByaXZh
dGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0aW9uUDgpO1wKLSAgfTtc
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0
IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUs
IHR5cGVuYW1lIHA3IyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNBY3Rpb25QODxwMCMjX3R5cGUs
IHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0IyNfdHlwZSwgcDUj
I190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKLSAgICAg
IHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwg
cDUjI190eXBlIHA1LCBcCi0gICAgICBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNykge1wKLSAg
ICByZXR1cm4gbmFtZSMjQWN0aW9uUDg8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwg
cDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3
IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAgICAgICBwNiwgcDcpO1wKLSAg
fVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0
eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUg
cDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlw
ZSwgdHlwZW5hbWUgcDcjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFy
ZzJfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUs
IHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFt
ZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90
eXBlPlwKLSAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3Vs
dFwKLSAgICAgIG5hbWUjI0FjdGlvblA4PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUs
IHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCi0gICAgICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGUs
IFwKLSAgICAgICAgICBwNyMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1w
bChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykg
Y29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDkobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYsIHA3LCBwOClcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAx
IyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUs
IHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlPlwKLSAg
Y2xhc3MgbmFtZSMjQWN0aW9uUDkge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDko
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190
eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAot
ICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBl
IGdtb2NrX3A3LCBcCi0gICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCkgOiBwMChnbW9ja19wMCks
IHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgIHAzKGdtb2NrX3AzKSwgcDQo
Z21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDcoZ21vY2tfcDcpLCBcCi0g
ICAgICAgIHA4KGdtb2NrX3A4KSB7fVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gICAg
Y2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPiB7
XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAotICAgICAg
dHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0
IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCi0gICAgICAgICAgYXJnc190eXBlO1wKLSAg
ICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAy
IyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190
eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKLSAgICAgICAgICBwNiMjX3R5cGUg
Z21vY2tfcDYsIHA3IyNfdHlwZSBnbW9ja19wNywgXAotICAgICAgICAgIHA4IyNfdHlwZSBnbW9j
a19wOCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAg
ICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tf
cDYpLCBcCi0gICAgICAgICAgcDcoZ21vY2tfcDcpLCBwOChnbW9ja19wOCkge31cCi0gICAgICB2
aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAg
ICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBl
LCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAg
ICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90
eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUs
IHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlw
ZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwg
XAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9j
a19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0g
ICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywg
YXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFy
ZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlw
ZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAx
O1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAgcDQj
I190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgICBwNiMjX3R5cGUgcDY7XAot
ICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgIHA4IyNfdHlwZSBwODtcCi0gICAgIHByaXZhdGU6
XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkg
Y29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1w
bDxGPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0gICAgICAgICAgcDYsIHA3LCBwOCkpO1wK
LSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMj
X3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICAgcDQjI190eXBlIHA0O1wKLSAgICBw
NSMjX3R5cGUgcDU7XAotICAgIHA2IyNfdHlwZSBwNjtcCi0gICAgcDcjI190eXBlIHA3O1wKLSAg
ICBwOCMjX3R5cGUgcDg7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhuYW1lIyNBY3Rpb25QOSk7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlw
ZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVu
YW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwK
LSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBw
OCMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDk8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYj
I190eXBlLCBwNyMjX3R5cGUsIFwKLSAgICAgIHA4IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAs
IHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICAgIHA0IyNf
dHlwZSBwNCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgXAotICAg
ICAgcDgjI190eXBlIHA4KSB7XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QOTxwMCMjX3R5cGUs
IHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgcDQjI190eXBlLCBw
NSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGU+KHAwLCBwMSwgcDIsIFwK
LSAgICAgICAgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwg
XAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1l
IHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5
cGUsIHR5cGVuYW1lIHA4IyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBh
cmcyX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBl
LCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5h
bWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlf
dHlwZT5cCi0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1
bHRcCi0gICAgICBuYW1lIyNBY3Rpb25QOTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBl
LCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgICAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBl
LCBwNyMjX3R5cGUsIFwKLSAgICAgICAgICBwOCMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9j
a19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFN
RVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDEwKG5hbWUsIHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5KVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNf
dHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5
cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUs
IFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFt
ZSBwOCMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA5IyNfdHlwZT5cCi0gIGNsYXNzIG5hbWUj
I0FjdGlvblAxMCB7XAotICAgcHVibGljOlwKLSAgICBuYW1lIyNBY3Rpb25QMTAocDAjI190eXBl
IGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2Nr
X3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBw
NSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3
LCBcCi0gICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCwgcDkjI190eXBlIGdtb2NrX3A5KSA6IHAw
KGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBcCi0gICAgICAgIHAyKGdtb2NrX3AyKSwgcDMoZ21v
Y2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBcCi0gICAg
ICAgIHA3KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19wOSkge31cCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYg
RiBmdW5jdGlvbl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAot
ICAgICAgICAgIGFyZ3NfdHlwZTtcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19w
MCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBw
MyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1
LCBcCi0gICAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIHA4
IyNfdHlwZSBnbW9ja19wOCwgXAotICAgICAgICAgIHA5IyNfdHlwZSBnbW9ja19wOSkgOiBwMChn
bW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgICAgcDMoZ21v
Y2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBcCi0gICAg
ICAgICAgcDcoZ21vY2tfcDcpLCBwOChnbW9ja19wOCksIHA5KGdtb2NrX3A5KSB7fVwKLSAgICAg
IHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCi0g
ICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5
cGUsIGdtb2NrX0ltcGw+OjpcCi0gICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKLSAg
ICAgIH1cCi0gICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcx
X3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlw
ZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgICAgICB0
eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBl
LCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgICAgIHJldHVybl90eXBlIGdt
b2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwK
LSAgICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmcz
LCBhcmc0X3R5cGUgYXJnNCwgXAotICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUg
YXJnNiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCi0gICAgICAgICAgYXJnOV90
eXBlIGFyZzkpIGNvbnN0O1wKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMjX3R5cGUg
cDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0gICAgICBw
NCMjX3R5cGUgcDQ7XAotICAgICAgcDUjI190eXBlIHA1O1wKLSAgICAgIHA2IyNfdHlwZSBwNjtc
Ci0gICAgICBwNyMjX3R5cGUgcDc7XAotICAgICAgcDgjI190eXBlIHA4O1wKLSAgICAgIHA5IyNf
dHlwZSBwOTtcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhn
bW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9y
IDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0g
ICAgICAgICAgcDYsIHA3LCBwOCwgcDkpKTtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAot
ICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7
XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUjI190eXBlIHA1O1wKLSAgICBwNiMjX3R5cGUg
cDY7XAotICAgIHA3IyNfdHlwZSBwNztcCi0gICAgcDgjI190eXBlIHA4O1wKLSAgICBwOSMjX3R5
cGUgcDk7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNB
Y3Rpb25QMTApO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMj
X3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0
eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBl
LCBcCi0gICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDEw
PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQj
I190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUsIFwKLSAg
ICAgIHA5IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBl
IHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICAgIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBw
NiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgcDgjI190eXBlIHA4LCBcCi0gICAgICBwOSMjX3R5
cGUgcDkpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblAxMDxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUs
IHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUsIHA5IyNfdHlwZT4ocDAsIFwKLSAgICAg
ICAgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSk7XAotICB9XAotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5
cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBw
NyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDkjI190eXBl
PlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90
eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgdHlw
ZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwg
XAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1l
IGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUjI0FjdGlv
blAxMDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlw
ZSwgXAotICAgICAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlw
ZSwgXAotICAgICAgICAgIHA5IyNfdHlwZT46Omdtb2NrX0ltcGw8Rj46Omdtb2NrX1BlcmZvcm1J
bXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1FU19VTlVTRURf
KSBjb25zdAotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLQotLy8gVGhlIEFDVElPTiooKSBtYWNy
b3MgdHJpZ2dlciB3YXJuaW5nIEM0MTAwICh1bnJlZmVyZW5jZWQgZm9ybWFsCi0vLyBwYXJhbWV0
ZXIpIGluIE1TVkMgd2l0aCAtVzQuICBVbmZvcnR1bmF0ZWx5IHRoZXkgY2Fubm90IGJlIGZpeGVk
IGluCi0vLyB0aGUgbWFjcm8gZGVmaW5pdGlvbiwgYXMgdGhlIHdhcm5pbmdzIGFyZSBnZW5lcmF0
ZWQgd2hlbiB0aGUgbWFjcm8KLS8vIGlzIGV4cGFuZGVkIGFuZCBtYWNybyBleHBhbnNpb24gY2Fu
bm90IGNvbnRhaW4gI3ByYWdtYS4gIFRoZXJlZm9yZQotLy8gd2Ugc3VwcHJlc3MgdGhlbSBoZXJl
LgotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJu
aW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotCi0vLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3IgSW52
b2tlQXJndW1lbnQ8Tj4oKS4KLS8vCi0vLyBUaGUgSW52b2tlQXJndW1lbnQ8Tj4oYTEsIGEyLCAu
Li4sIGFfaykgYWN0aW9uIGludm9rZXMgdGhlIE4tdGgKLS8vICgwLWJhc2VkKSBhcmd1bWVudCwg
d2hpY2ggbXVzdCBiZSBhIGstYXJ5IGNhbGxhYmxlLCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24s
IHdpdGggYXJndW1lbnRzIGExLCBhMiwgLi4uLCBhX2suCi0vLwotLy8gTm90ZXM6Ci0vLwotLy8g
ICAxLiBUaGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnkgdmFsdWUgYnkgZGVmYXVsdC4gIElmIHlv
dSBuZWVkIHRvCi0vLyAgIHBhc3MgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGlu
c2lkZSBCeVJlZigpLiAgRm9yCi0vLyAgIGV4YW1wbGUsCi0vLwotLy8gICAgIEludm9rZUFyZ3Vt
ZW50PDE+KDUsIHN0cmluZygiSGVsbG8iKSwgQnlSZWYoZm9vKSkKLS8vCi0vLyAgIHBhc3NlcyA1
IGFuZCBzdHJpbmcoIkhlbGxvIikgYnkgdmFsdWUsIGFuZCBwYXNzZXMgZm9vIGJ5Ci0vLyAgIHJl
ZmVyZW5jZS4KLS8vCi0vLyAgIDIuIElmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBi
eSByZWZlcmVuY2UgYnV0IEJ5UmVmKCkgaXMKLS8vICAgbm90IHVzZWQsIGl0IHdpbGwgcmVjZWl2
ZSB0aGUgcmVmZXJlbmNlIHRvIGEgY29weSBvZiB0aGUgdmFsdWUsCi0vLyAgIGluc3RlYWQgb2Yg
dGhlIG9yaWdpbmFsIHZhbHVlLiAgRm9yIGV4YW1wbGUsIHdoZW4gdGhlIDAtdGgKLS8vICAgYXJn
dW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSBjb25zdCBzdHJpbmcmLCB0aGUgYWN0
aW9uCi0vLwotLy8gICAgIEludm9rZUFyZ3VtZW50PDA+KHN0cmluZygiSGVsbG8iKSkKLS8vCi0v
LyAgIG1ha2VzIGEgY29weSBvZiB0aGUgdGVtcG9yYXJ5IHN0cmluZygiSGVsbG8iKSBvYmplY3Qg
YW5kIHBhc3NlcyBhCi0vLyAgIHJlZmVyZW5jZSBvZiB0aGUgY29weSwgaW5zdGVhZCBvZiB0aGUg
b3JpZ2luYWwgdGVtcG9yYXJ5IG9iamVjdCwKLS8vICAgdG8gdGhlIGNhbGxhYmxlLiAgVGhpcyBt
YWtlcyBpdCBlYXN5IGZvciBhIHVzZXIgdG8gZGVmaW5lIGFuCi0vLyAgIEludm9rZUFyZ3VtZW50
IGFjdGlvbiBmcm9tIHRlbXBvcmFyeSB2YWx1ZXMgYW5kIGhhdmUgaXQgcGVyZm9ybWVkCi0vLyAg
IGxhdGVyLgotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIGludm9rZV9hcmd1bWVu
dCB7Ci0KLS8vIEFwcGVhcnMgaW4gSW52b2tlQXJndW1lbnRBZGwncyBhcmd1bWVudCBsaXN0IHRv
IGhlbHAgYXZvaWQKLS8vIGFjY2lkZW50YWwgY2FsbHMgdG8gdXNlciBmdW5jdGlvbnMgb2YgdGhl
IHNhbWUgbmFtZS4KLXN0cnVjdCBBZGxUYWcge307Ci0KLS8vIEludm9rZUFyZ3VtZW50QWRsIC0g
YSBoZWxwZXIgZm9yIEludm9rZUFyZ3VtZW50LgotLy8gVGhlIGJhc2ljIG92ZXJsb2FkcyBhcmUg
cHJvdmlkZWQgaGVyZSBmb3IgZ2VuZXJpYyBmdW5jdG9ycy4KLS8vIE92ZXJsb2FkcyBmb3Igb3Ro
ZXIgY3VzdG9tLWNhbGxhYmxlcyBhcmUgcHJvdmlkZWQgaW4gdGhlCi0vLyBpbnRlcm5hbC9jdXN0
b20vY2FsbGJhY2stYWN0aW9ucy5oIGhlYWRlci4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEY+Ci1SIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmKSB7Ci0gIHJldHVybiBm
KCk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTE+Ci1S
IEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBhMSkgewotICByZXR1cm4gZihhMSk7
Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyPgotUiBJbnZva2VBcmd1bWVudEFkbChBZGxUYWcsIEYgZiwgQTEgYTEsIEEyIGEyKSB7
Ci0gIHJldHVybiBmKGExLCBhMik7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUg
RiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KLVIgSW52b2tlQXJndW1l
bnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMpIHsKLSAgcmV0dXJuIGYoYTEs
IGEyLCBhMyk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBlbmFtZSBBND4KLVIgSW52b2tl
QXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSB7Ci0g
IHJldHVybiBmKGExLCBhMiwgYTMsIGE0KTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVu
YW1lIEE0LCB0eXBlbmFtZSBBNT4KLVIgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEEx
IGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgewotICByZXR1cm4gZihhMSwgYTIsIGEz
LCBhNCwgYTUpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1l
IEE1LCB0eXBlbmFtZSBBNj4KLVIgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGEx
LCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYpIHsKLSAgcmV0dXJuIGYoYTEsIGEy
LCBhMywgYTQsIGE1LCBhNik7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBlbmFtZSBBNCwg
dHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4KLVIgSW52b2tlQXJndW1lbnRB
ZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYs
Ci0gICAgQTcgYTcpIHsKLSAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOwot
fQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFt
ZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgotUiBJbnZva2VBcmd1bWVudEFkbChBZGxU
YWcsIEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwKLSAgICBB
NyBhNywgQTggYTgpIHsKLSAgcmV0dXJuIGYoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4
KTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwgdHlw
ZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwKLSAgICB0eXBlbmFtZSBBOT4KLVIg
SW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0
LCBBNSBhNSwgQTYgYTYsCi0gICAgQTcgYTcsIEE4IGE4LCBBOSBhOSkgewotICByZXR1cm4gZihh
MSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAot
ICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0
eXBlbmFtZSBBOCwKLSAgICB0eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgotUiBJbnZva2VBcmd1
bWVudEFkbChBZGxUYWcsIEYgZiwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBB
NiBhNiwKLSAgICBBNyBhNywgQTggYTgsIEE5IGE5LCBBMTAgYTEwKSB7Ci0gIHJldHVybiBmKGEx
LCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCk7Ci19Ci19ICAvLyBuYW1lc3Bh
Y2UgaW52b2tlX2FyZ3VtZW50Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotQUNUSU9OX1RF
TVBMQVRFKEludm9rZUFyZ3VtZW50LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BB
UkFNUyhpbnQsIGspLAotICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7Ci0g
IHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICBy
ZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omlu
dm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSk7
Ci19Ci0KLUFDVElPTl9URU1QTEFURShJbnZva2VBcmd1bWVudCwKLSAgICAgICAgICAgICAgICBI
QVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMV9WQUxV
RV9QQVJBTVMocDApKSB7Ci0gIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9r
ZUFyZ3VtZW50QWRsOwotICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAot
ICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rp
bmc6OmdldDxrPihhcmdzKSwgcDApOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1l
bnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAg
ICAgICAgICAgICAgQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkpIHsKLSAgdXNpbmcgaW50ZXJu
YWw6Omludm9rZV9hcmd1bWVudDo6SW52b2tlQXJndW1lbnRBZGw7Ci0gIHJldHVybiBJbnZva2VB
cmd1bWVudEFkbDxyZXR1cm5fdHlwZT4oCi0gICAgICBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50
OjpBZGxUYWcoKSwKLSAgICAgIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwgcDEpOwotfQot
Ci1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAgICAgSEFTXzFf
VEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzNfVkFMVUVfUEFS
QU1TKHAwLCBwMSwgcDIpKSB7Ci0gIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Oklu
dm9rZUFyZ3VtZW50QWRsOwotICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+
KAotICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRl
c3Rpbmc6OmdldDxrPihhcmdzKSwgcDAsIHAxLCBwMik7Ci19Ci0KLUFDVElPTl9URU1QTEFURShJ
bnZva2VBcmd1bWVudCwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50
LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMp
KSB7Ci0gIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRs
OwotICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJu
YWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihh
cmdzKSwgcDAsIHAxLCBwMiwgcDMpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1l
bnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAg
ICAgICAgICAgICAgQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCkpIHsKLSAg
dXNpbmcgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6SW52b2tlQXJndW1lbnRBZGw7Ci0gIHJl
dHVybiBJbnZva2VBcmd1bWVudEFkbDxyZXR1cm5fdHlwZT4oCi0gICAgICBpbnRlcm5hbDo6aW52
b2tlX2FyZ3VtZW50OjpBZGxUYWcoKSwKLSAgICAgIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBw
MCwgcDEsIHAyLCBwMywgcDQpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQs
Ci0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAg
ICAgICAgICAgQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpKSB7Ci0g
IHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICBy
ZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omlu
dm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwg
cDAsIHAxLCBwMiwgcDMsIHA0LCBwNSk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShJbnZva2VBcmd1
bWVudCwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAg
ICAgICAgICAgICAgICBBTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYpKSB7Ci0gIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50
QWRsOwotICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50
ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxr
PihhcmdzKSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpOwotfQotCi1BQ1RJT05fVEVNUExB
VEUoSW52b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1T
KGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUsIHA2LCBwNykpIHsKLSAgdXNpbmcgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVu
dDo6SW52b2tlQXJndW1lbnRBZGw7Ci0gIHJldHVybiBJbnZva2VBcmd1bWVudEFkbDxyZXR1cm5f
dHlwZT4oCi0gICAgICBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpBZGxUYWcoKSwKLSAgICAg
IDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcp
OwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAgICAg
SEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzlfVkFM
VUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpKSB7Ci0gIHVzaW5n
IGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICByZXR1cm4g
SW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omludm9rZV9h
cmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShJbnZv
a2VBcmd1bWVudCwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBr
KSwKLSAgICAgICAgICAgICAgICBBTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBw
NCwgcDUsIHA2LCBwNywgcDgsIHA5KSkgewotICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3Vt
ZW50OjpJbnZva2VBcmd1bWVudEFkbDsKLSAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVy
bl90eXBlPigKLSAgICAgIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAg
ICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncyksIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBw
NywgcDgsIHA5KTsKLX0KLQotLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIFJldHVybk5ldzxUPigp
LgotLy8KLS8vIFRoZSBSZXR1cm5OZXc8VD4oYTEsIGEyLCAuLi4sIGFfaykgYWN0aW9uIHJldHVy
bnMgYSBwb2ludGVyIHRvIGEgbmV3Ci0vLyBpbnN0YW5jZSBvZiB0eXBlIFQsIGNvbnN0cnVjdGVk
IG9uIHRoZSBoZWFwIHdpdGggY29uc3RydWN0b3IgYXJndW1lbnRzCi0vLyBhMSwgYTIsIC4uLiwg
YW5kIGFfay4gVGhlIGNhbGxlciBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgdmFs
dWUuCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAgICAgIEhBU18xX1RF
TVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzBfVkFMVUVf
UEFSQU1TKCkpIHsKLSAgcmV0dXJuIG5ldyBUKCk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1
cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBU
KSwKLSAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMocDApKSB7Ci0gIHJldHVybiBu
ZXcgVChwMCk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAg
ICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBB
TkRfMl9WQUxVRV9QQVJBTVMocDAsIHAxKSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxKTsKLX0K
LQotQUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1Q
TEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFORF8zX1ZBTFVFX1BB
UkFNUyhwMCwgcDEsIHAyKSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMik7Ci19Ci0KLUFD
VElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVf
UEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfNF9WQUxVRV9QQVJBTVMo
cDAsIHAxLCBwMiwgcDMpKSB7Ci0gIHJldHVybiBuZXcgVChwMCwgcDEsIHAyLCBwMyk7Ci19Ci0K
LUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExB
VEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfNV9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMsIHA0KSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMs
IHA0KTsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKLSAgICAgICAgICAgICAgICBI
QVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFORF82
X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSkgewotICByZXR1cm4gbmV3IFQo
cDAsIHAxLCBwMiwgcDMsIHA0LCBwNSk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcs
Ci0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAg
ICAgICAgICAgICAgICBBTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYpKSB7Ci0gIHJldHVybiBuZXcgVChwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNik7Ci19Ci0K
LUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExB
VEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfOF9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3KSkgewotICByZXR1cm4gbmV3IFQocDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3KTsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKFJldHVy
bk5ldywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQp
LAotICAgICAgICAgICAgICAgIEFORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgcDcsIHA4KSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYsIHA3LCBwOCk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAg
ICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAg
ICAgICBBTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywg
cDgsIHA5KSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3
LCBwOCwgcDkpOwotfQotCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQot
I2VuZGlmCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8vIEluY2x1ZGUgYW55IGN1c3Rv
bSBhY3Rpb25zIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCi0vLyBXZSBtdXN0IGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUK
LS8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KLSNpbmNsdWRlICJnbW9jay9pbnRlcm5h
bC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIKLQotI2VuZGlmICAvLyBHTU9DS19J
TkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5wdW1wCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmQ5ZjlkNTUxYjEwOTQyZmNjMjMyYzBiYTM4
YzJiZjliZjFkYmY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5w
dW1wCisrKyAvZGV2L251bGwKQEAgLTEsNzk0ICswLDAgQEAKLSQkIC0qLSBtb2RlOiBjKys7IC0q
LQotJCQgVGhpcyBpcyBhIFB1bXAgc291cmNlIGZpbGUuICBQbGVhc2UgdXNlIFB1bXAgdG8gY29u
dmVydCBpdCB0bwotJCQgZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC4KLSQkCi0kdmFyIG4gPSAx
MCAgJCQgVGhlIG1heGltdW0gYXJpdHkgd2Ugc3VwcG9ydC4KLSQkfX0gVGhpcyBtZXRhIGNvbW1l
bnQgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBlZGl0b3JzLgotLy8gQ29weXJpZ2h0IDIwMDcs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGlu
ZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHNvbWUgY29t
bW9ubHkgdXNlZCB2YXJpYWRpYyBhY3Rpb25zLgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01P
Q0tfR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stYWN0
aW9ucy5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLQotbmFtZXNw
YWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gSW52b2tlSGVscGVyPEY+
IGtub3dzIGhvdyB0byB1bnBhY2sgYW4gTi10dXBsZSBhbmQgaW52b2tlIGFuIE4tYXJ5Ci0vLyBm
dW5jdGlvbiBvciBtZXRob2Qgd2l0aCB0aGUgdW5wYWNrZWQgdmFsdWVzLCB3aGVyZSBGIGlzIGEg
ZnVuY3Rpb24KLS8vIHR5cGUgdGhhdCB0YWtlcyBOIGFyZ3VtZW50cy4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci1jbGFzcyBJbnZva2VIZWxwZXI7
Ci0KLQotJHJhbmdlIGkgMC4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0kdmFyIHR5cGVz
ID0gW1skZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dXV0KLSR2YXIgYXMgPSBbWyRmb3IgaiwgW1tB
JGpdXV1dCi0kdmFyIGFyZ3MgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sgYXJnc11dXV0KLSR2
YXIgZ2V0cyA9IFtbJGZvciBqLCBbW2dldDwkKGogLSAxKT4oYXJncyldXV1dCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgUiR0eXBlcz4KLWNsYXNzIEludm9rZUhlbHBlcjxSLCA6OnRlc3Rpbmc6OnR1cGxl
PCRhcz4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0gIHN0
YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTwk
YXM+JiRhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5jdGlvbigkZ2V0cyk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIg
SW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0
aG9kUHRyIG1ldGhvZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rp
bmc6OnR1cGxlPCRhcz4mJGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0
aG9kX3B0cikoJGdldHMpOwotICB9Ci19OwotCi0KLV1dCi0vLyBBbiBJTlRFUk5BTCBtYWNybyBm
b3IgZXh0cmFjdGluZyB0aGUgdHlwZSBvZiBhIHR1cGxlIGZpZWxkLiAgSXQncwotLy8gc3ViamVj
dCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UgLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERSEKLSNk
ZWZpbmUgR01PQ0tfRklFTERfKFR1cGxlLCBOKSBcCi0gICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjp0
dXBsZV9lbGVtZW50PE4sIFR1cGxlPjo6dHlwZQotCi0kcmFuZ2UgaSAxLi5uCi0KLS8vIFNlbGVj
dEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLCBrMSwgazIsIC4uLiwga19uPjo6dHlwZSBpcyB0
aGUKLS8vIHR5cGUgb2YgYW4gbi1hcnkgZnVuY3Rpb24gd2hvc2UgaS10aCAoMS1iYXNlZCkgYXJn
dW1lbnQgdHlwZSBpcyB0aGUKLS8vIGt7aX0tdGggKDAtYmFzZWQpIGZpZWxkIG9mIEFyZ3VtZW50
VHVwbGUsIHdoaWNoIG11c3QgYmUgYSB0dXBsZQotLy8gdHlwZSwgYW5kIHdob3NlIHJldHVybiB0
eXBlIGlzIFJlc3VsdC4gIEZvciBleGFtcGxlLAotLy8gICBTZWxlY3RBcmdzPGludCwgOjp0ZXN0
aW5nOjp0dXBsZTxib29sLCBjaGFyLCBkb3VibGUsIGxvbmc+LCAwLCAzPjo6dHlwZQotLy8gaXMg
aW50KGJvb2wsIGxvbmcpLgotLy8KLS8vIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxl
LCBrMSwgazIsIC4uLiwga19uPjo6U2VsZWN0KGFyZ3MpCi0vLyByZXR1cm5zIHRoZSBzZWxlY3Rl
ZCBmaWVsZHMgKGsxLCBrMiwgLi4uLCBrX24pIG9mIGFyZ3MgYXMgYSB0dXBsZS4KLS8vIEZvciBl
eGFtcGxlLAotLy8gICBTZWxlY3RBcmdzPGludCwgdHVwbGU8Ym9vbCwgY2hhciwgZG91YmxlPiwg
MiwgMD46OlNlbGVjdCgKLS8vICAgICAgIDo6dGVzdGluZzo6bWFrZV90dXBsZSh0cnVlLCAnYScs
IDIuNSkpCi0vLyByZXR1cm5zIHR1cGxlICgyLjUsIHRydWUpLgotLy8KLS8vIFRoZSBudW1iZXJz
IGluIGxpc3QgazEsIGsyLCAuLi4sIGtfbiBtdXN0IGJlID49IDAsIHdoZXJlIG4gY2FuIGJlCi0v
LyBpbiB0aGUgcmFuZ2UgWzAsICRuXS4gIER1cGxpY2F0ZXMgYXJlIGFsbG93ZWQgYW5kIHRoZXkg
ZG9uJ3QgaGF2ZQotLy8gdG8gYmUgaW4gYW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIu
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsICRm
b3IgaSwgW1tpbnQgayRpXV0+Ci1jbGFzcyBTZWxlY3RBcmdzIHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgUmVzdWx0IHR5cGUoJGZvciBpLCBbW0dNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrJGkp
XV0pOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+OjpBcmd1bWVudFR1cGxlIFNl
bGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxlY3QoY29uc3QgQXJndW1lbnRU
dXBsZSYgYXJncykgewotICAgIHJldHVybiBTZWxlY3RlZEFyZ3MoJGZvciBpLCBbW2dldDxrJGk+
KGFyZ3MpXV0pOwotICB9Ci19OwotCi0KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4ubgotJHJhbmdl
IGoxIDEuLmktMQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRU
dXBsZSRmb3IgajFbWywgaW50IGskajFdXT4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1
bWVudFR1cGxlLAotICAgICAgICAgICAgICAgICAkZm9yIGosIFtbJGlmIGogPD0gaS0xIFtbayRq
XV0gJGVsc2UgW1stMV1dXV0+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoJGZv
ciBqMSwgW1tHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgayRqMSldXSk7Ci0gIHR5cGVkZWYg
dHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBz
dGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBbW11dCi0kaWYg
aSA9PSAxIFtbLyogYXJncyAqL11dICRlbHNlIFtbYXJnc11dKSB7Ci0gICAgcmV0dXJuIFNlbGVj
dGVkQXJncygkZm9yIGoxLCBbW2dldDxrJGoxPihhcmdzKV1dKTsKLSAgfQotfTsKLQotCi1dXQot
I3VuZGVmIEdNT0NLX0ZJRUxEXwotCi0kdmFyIGtzID0gW1skZm9yIGksIFtbayRpXV1dXQotCi0v
LyBJbXBsZW1lbnRzIHRoZSBXaXRoQXJncyBhY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5u
ZXJBY3Rpb24sICRmb3IgaSwgW1tpbnQgayRpID0gLTFdXT4KLWNsYXNzIFdpdGhBcmdzQWN0aW9u
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdpdGhBcmdzQWN0aW9uKGNvbnN0IElubmVyQWN0aW9u
JiBhY3Rpb24pIDogYWN0aW9uXyhhY3Rpb24pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
Ci0gIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsgcmV0dXJuIE1ha2VBY3Rpb24obmV3IElt
cGw8Rj4oYWN0aW9uXykpOyB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
LSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAgcHVibGljOgot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwot
Ci0gICAgZXhwbGljaXQgSW1wbChjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSA6IGFjdGlvbl8o
YWN0aW9uKSB7fQotCi0gICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1
cGxlJiBhcmdzKSB7Ci0gICAgICByZXR1cm4gYWN0aW9uXy5QZXJmb3JtKFNlbGVjdEFyZ3M8UmVz
dWx0LCBBcmd1bWVudFR1cGxlLCAka3M+OjpTZWxlY3QoYXJncykpOwotICAgIH0KLQotICAgcHJp
dmF0ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1
cGxlLAotICAgICAgICAka3M+Ojp0eXBlIElubmVyRnVuY3Rpb25UeXBlOwotCi0gICAgQWN0aW9u
PElubmVyRnVuY3Rpb25UeXBlPiBhY3Rpb25fOwotICB9OwotCi0gIGNvbnN0IElubmVyQWN0aW9u
IGFjdGlvbl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhXaXRoQXJnc0FjdGlvbik7Ci19
OwotCi0vLyBBIG1hY3JvIGZyb20gdGhlIEFDVElPTiogZmFtaWx5IChkZWZpbmVkIGxhdGVyIGlu
IHRoaXMgZmlsZSkKLS8vIGRlZmluZXMgYW4gYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBt
b2NrIGZ1bmN0aW9uLiAgVHlwaWNhbGx5LAotLy8gdGhlc2UgYWN0aW9ucyBvbmx5IGNhcmUgYWJv
dXQgYSBzdWJzZXQgb2YgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24uICBG
b3IgZXhhbXBsZSwgaWYgc3VjaCBhbiBhY3Rpb24gb25seSB1c2VzIHRoZSBzZWNvbmQKLS8vIGFy
Z3VtZW50LCBpdCBjYW4gYmUgdXNlZCBpbiBhbnkgbW9jayBmdW5jdGlvbiB0aGF0IHRha2VzID49
IDIKLS8vIGFyZ3VtZW50cyB3aGVyZSB0aGUgdHlwZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlz
IGNvbXBhdGlibGUuCi0vLwotLy8gVGhlcmVmb3JlLCB0aGUgYWN0aW9uIGltcGxlbWVudGF0aW9u
IG11c3QgYmUgcHJlcGFyZWQgdG8gdGFrZSBtb3JlCi0vLyBhcmd1bWVudHMgdGhhbiBpdCBuZWVk
cy4gIFRoZSBFeGNlc3NpdmVBcmcgdHlwZSBpcyB1c2VkIHRvCi0vLyByZXByZXNlbnQgdGhvc2Ug
ZXhjZXNzaXZlIGFyZ3VtZW50cy4gIEluIG9yZGVyIHRvIGtlZXAgdGhlIGNvbXBpbGVyCi0vLyBl
cnJvciBtZXNzYWdlcyB0cmFjdGFibGUsIHdlIGRlZmluZSBpdCBpbiB0aGUgdGVzdGluZyBuYW1l
c3BhY2UKLS8vIGluc3RlYWQgb2YgdGVzdGluZzo6aW50ZXJuYWwuICBIb3dldmVyLCB0aGlzIGlz
IGFuIElOVEVSTkFMIFRZUEUKLS8vIGFuZCBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGlj
ZSwgc28gYSB1c2VyIE1VU1QgTk9UIFVTRSBUSElTCi0vLyBUWVBFIERJUkVDVExZLgotc3RydWN0
IEV4Y2Vzc2l2ZUFyZyB7fTsKLQotLy8gQSBoZWxwZXIgY2xhc3MgbmVlZGVkIGZvciBpbXBsZW1l
bnRpbmcgdGhlIEFDVElPTiogbWFjcm9zLgotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgY2xh
c3MgSW1wbD4KLWNsYXNzIEFjdGlvbkhlbHBlciB7Ci0gcHVibGljOgotJHJhbmdlIGkgMC4ubgot
JGZvciBpCi0KLVtbCi0kdmFyIHRlbXBsYXRlID0gW1skaWYgaT09MCBbW11dICRlbHNlIFtbCi0k
cmFuZ2UgaiAwLi5pLTEKLSAgdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBBJGpdXT4KLV1d
XV0KLSRyYW5nZSBqIDAuLmktMQotJHZhciBBcyA9IFtbJGZvciBqLCBbW0Ekal1dXV0KLSR2YXIg
YXMgPSBbWyRmb3IgaiwgW1tnZXQ8JGo+KGFyZ3MpXV1dXQotJHJhbmdlIGsgMS4ubi1pCi0kdmFy
IGVhcyA9IFtbJGZvciBrLCBbW0V4Y2Vzc2l2ZUFyZygpXV1dXQotJHZhciBhcmdfbGlzdCA9IFtb
JGlmIChpPT0wKSB8IChpPT1uKSBbWyRhcyRlYXNdXSAkZWxzZSBbWyRhcywgJGVhc11dXV0KLSR0
ZW1wbGF0ZQotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0
aW5nOjp0dXBsZTwkQXM+JiBhcmdzKSB7Ci0gICAgcmV0dXJuIGltcGwtPnRlbXBsYXRlIGdtb2Nr
X1BlcmZvcm1JbXBsPCRBcz4oYXJncywgJGFyZ19saXN0KTsKLSAgfQotCi1dXQotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFZhcmlvdXMgb3ZlcmxvYWRzIGZvciBJbnZva2Uo
KS4KLQotLy8gV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhbl9hY3Rpb24pIGNyZWF0ZXMgYW4g
YWN0aW9uIHRoYXQgcGFzc2VzCi0vLyB0aGUgc2VsZWN0ZWQgYXJndW1lbnRzIG9mIHRoZSBtb2Nr
IGZ1bmN0aW9uIHRvIGFuX2FjdGlvbiBhbmQKLS8vIHBlcmZvcm1zIGl0LiAgSXQgc2VydmVzIGFz
IGFuIGFkYXB0b3IgYmV0d2VlbiBhY3Rpb25zIHdpdGgKLS8vIGRpZmZlcmVudCBhcmd1bWVudCBs
aXN0cy4gIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGVmYXVsdCBhcmd1bWVudHMgZm9yCi0vLyBmdW5j
dGlvbiB0ZW1wbGF0ZXMsIHNvIHdlIGhhdmUgdG8gb3ZlcmxvYWQgaXQuCi0KLSRyYW5nZSBpIDEu
Lm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotdGVtcGxhdGUgPCRmb3IgaiBbW2ludCBrJGos
IF1ddHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9u
PElubmVyQWN0aW9uJGZvciBqIFtbLCBrJGpdXT4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9u
JiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlv
biRmb3IgaiBbWywgayRqXV0+KGFjdGlvbik7Ci19Ci0KLQotXV0KLS8vIENyZWF0ZXMgYW4gYWN0
aW9uIHRoYXQgZG9lcyBhY3Rpb25zIGExLCBhMiwgLi4uLCBzZXF1ZW50aWFsbHkgaW4KLS8vIGVh
Y2ggaW52b2NhdGlvbi4KLSRyYW5nZSBpIDIuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMi4uaQot
JHZhciB0eXBlcyA9IFtbJGZvciBqLCBbW3R5cGVuYW1lIEFjdGlvbiRqXV1dXQotJHZhciBBYXMg
PSBbWyRmb3IgaiBbWywgQWN0aW9uJGogYSRqXV1dXQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0
aW9uMSwgJHR5cGVzPgotJHJhbmdlIGsgMS4uaS0xCi0KLWlubGluZSAkZm9yIGsgW1tpbnRlcm5h
bDo6RG9Cb3RoQWN0aW9uPEFjdGlvbiRrLCBdXUFjdGlvbiRpJGZvciBrICBbWz5dXQotCi1Eb0Fs
bChBY3Rpb24xIGExJEFhcykgewotJGlmIGk9PTIgW1sKLQotICByZXR1cm4gaW50ZXJuYWw6OkRv
Qm90aEFjdGlvbjxBY3Rpb24xLCBBY3Rpb24yPihhMSwgYTIpOwotXV0gJGVsc2UgW1sKLSRyYW5n
ZSBqMiAyLi5pCi0KLSAgcmV0dXJuIERvQWxsKGExLCBEb0FsbCgkZm9yIGoyLCBbW2EkajJdXSkp
OwotXV0KLQotfQotCi1dXQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0vLyBUaGUgQUNU
SU9OKiBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlIHRv
Ci0vLyBkZWZpbmUgY3VzdG9tIGFjdGlvbnMgZWFzaWx5LiAgVGhlIHN5bnRheDoKLS8vCi0vLyAg
IEFDVElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KLS8vCi0vLyB3aWxsIGRlZmluZSBhbiBhY3Rp
b24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZQotLy8gc3RhdGVtZW50cy4g
IFRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgc3RhdGVtZW50cyB3aWxsIGJlIHVzZWQgYXMKLS8v
IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywg
eW91IGNhbgotLy8gcmVmZXIgdG8gdGhlIEstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBt
b2NrIGZ1bmN0aW9uIGJ5Ci0vLyAnYXJnSycsIGFuZCByZWZlciB0byBpdHMgdHlwZSBieSAnYXJn
S190eXBlJy4gIEZvciBleGFtcGxlOgotLy8KLS8vICAgQUNUSU9OKEluY3JlbWVudEFyZzEpIHsK
LS8vICAgICBhcmcxX3R5cGUgdGVtcCA9IGFyZzE7Ci0vLyAgICAgcmV0dXJuICsrKCp0ZW1wKTsK
LS8vICAgfQotLy8KLS8vIGFsbG93cyB5b3UgdG8gd3JpdGUKLS8vCi0vLyAgIC4uLldpbGxPbmNl
KEluY3JlbWVudEFyZzEoKSk7Ci0vLwotLy8gWW91IGNhbiBhbHNvIHJlZmVyIHRvIHRoZSBlbnRp
cmUgYXJndW1lbnQgdHVwbGUgYW5kIGl0cyB0eXBlIGJ5Ci0vLyAnYXJncycgYW5kICdhcmdzX3R5
cGUnLCBhbmQgcmVmZXIgdG8gdGhlIG1vY2sgZnVuY3Rpb24gdHlwZSBhbmQgaXRzCi0vLyByZXR1
cm4gdHlwZSBieSAnZnVuY3Rpb25fdHlwZScgYW5kICdyZXR1cm5fdHlwZScuCi0vLwotLy8gTm90
ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uCi0vLyBhcmd1bWVudHMuICBIb3dldmVyIHJlc3QgYXNzdXJlZCB0aGF0IHlvdXIgY29k
ZSBpcyBzdGlsbCB0eXBlLXNhZmU6Ci0vLyB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYg
KmFyZzEgZG9lc24ndCBzdXBwb3J0IHRoZSArKwotLy8gb3BlcmF0b3IsIG9yIGlmIHRoZSB0eXBl
IG9mICsrKCphcmcxKSBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlCi0vLyBtb2NrIGZ1bmN0aW9u
J3MgcmV0dXJuIHR5cGUsIGZvciBleGFtcGxlLgotLy8KLS8vIFNvbWV0aW1lcyB5b3UnbGwgd2Fu
dCB0byBwYXJhbWV0ZXJpemUgdGhlIGFjdGlvbi4gICBGb3IgdGhhdCB5b3UgY2FuIHVzZQotLy8g
YW5vdGhlciBtYWNybzoKLS8vCi0vLyAgIEFDVElPTl9QKG5hbWUsIHBhcmFtX25hbWUpIHsgc3Rh
dGVtZW50czsgfQotLy8KLS8vIEZvciBleGFtcGxlOgotLy8KLS8vICAgQUNUSU9OX1AoQWRkLCBu
KSB7IHJldHVybiBhcmcwICsgbjsgfQotLy8KLS8vIHdpbGwgYWxsb3cgeW91IHRvIHdyaXRlOgot
Ly8KLS8vICAgLi4uV2lsbE9uY2UoQWRkKDUpKTsKLS8vCi0vLyBOb3RlIHRoYXQgeW91IGRvbid0
IG5lZWQgdG8gcHJvdmlkZSB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCi0vLyBlaXRoZXIuICBJ
ZiB5b3UgbmVlZCB0byByZWZlcmVuY2UgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQKLS8v
ICdmb28nLCB5b3UgY2FuIHdyaXRlICdmb29fdHlwZScuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGJv
ZHkgb2YKLS8vIEFDVElPTl9QKEFkZCwgbikgYWJvdmUsIHlvdSBjYW4gd3JpdGUgJ25fdHlwZScg
dG8gcmVmZXIgdG8gdGhlIHR5cGUKLS8vIG9mICduJy4KLS8vCi0vLyBXZSBhbHNvIHByb3ZpZGUg
QUNUSU9OX1AyLCBBQ1RJT05fUDMsIC4uLiwgdXAgdG8gQUNUSU9OX1AkbiB0byBzdXBwb3J0Ci0v
LyBtdWx0aS1wYXJhbWV0ZXIgYWN0aW9ucy4KLS8vCi0vLyBGb3IgdGhlIHB1cnBvc2Ugb2YgdHlw
aW5nLCB5b3UgY2FuIHZpZXcKLS8vCi0vLyAgIEFDVElPTl9QayhGb28sIHAxLCAuLi4sIHBrKSB7
IC4uLiB9Ci0vLwotLy8gYXMgc2hvcnRoYW5kIGZvcgotLy8KLS8vICAgdGVtcGxhdGUgPHR5cGVu
YW1lIHAxX3R5cGUsIC4uLiwgdHlwZW5hbWUgcGtfdHlwZT4KLS8vICAgRm9vQWN0aW9uUGs8cDFf
dHlwZSwgLi4uLCBwa190eXBlPiBGb28ocDFfdHlwZSBwMSwgLi4uLCBwa190eXBlIHBrKSB7IC4u
LiB9Ci0vLwotLy8gSW4gcGFydGljdWxhciwgeW91IGNhbiBwcm92aWRlIHRoZSB0ZW1wbGF0ZSB0
eXBlIGFyZ3VtZW50cwotLy8gZXhwbGljaXRseSB3aGVuIGludm9raW5nIEZvbygpLCBhcyBpbiBG
b288bG9uZywgYm9vbD4oNSwgZmFsc2UpOwotLy8gYWx0aG91Z2ggdXN1YWxseSB5b3UgY2FuIHJl
bHkgb24gdGhlIGNvbXBpbGVyIHRvIGluZmVyIHRoZSB0eXBlcwotLy8gZm9yIHlvdSBhdXRvbWF0
aWNhbGx5LiAgWW91IGNhbiBhc3NpZ24gdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uCi0vLyBGb28o
cDEsIC4uLiwgcGspIHRvIGEgdmFyaWFibGUgb2YgdHlwZSBGb29BY3Rpb25QazxwMV90eXBlLCAu
Li4sCi0vLyBwa190eXBlPi4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNvbXBvc2luZyBhY3Rp
b25zLgotLy8KLS8vIFlvdSBjYW4gYWxzbyBvdmVybG9hZCBhY3Rpb25zIHdpdGggZGlmZmVyZW50
IG51bWJlcnMgb2YgcGFyYW1ldGVyczoKLS8vCi0vLyAgIEFDVElPTl9QKFBsdXMsIGEpIHsgLi4u
IH0KLS8vICAgQUNUSU9OX1AyKFBsdXMsIGEsIGIpIHsgLi4uIH0KLS8vCi0vLyBXaGlsZSBpdCdz
IHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIEFDVElPTiogbWFjcm9zIHdoZW4gZGVmaW5pbmcK
LS8vIGEgbmV3IGFjdGlvbiwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxlbWVudGluZyBB
Y3Rpb25JbnRlcmZhY2UKLS8vIG9yIHVzaW5nIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIGluc3Rl
YWQsIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8KLS8vIHVzZSB0aGUgYWN0aW9uIGEgbG90LiAg
V2hpbGUgdGhlc2UgYXBwcm9hY2hlcyByZXF1aXJlIG1vcmUgd29yaywKLS8vIHRoZXkgZ2l2ZSB5
b3UgbW9yZSBjb250cm9sIG9uIHRoZSB0eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbgotLy8gYXJn
dW1lbnRzIGFuZCB0aGUgYWN0aW9uIHBhcmFtZXRlcnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMg
dG8KLS8vIGJldHRlciBjb21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0IHBheSBvZmYgaW4gdGhl
IGxvbmcgcnVuLiAgVGhleQotLy8gYWxzbyBhbGxvdyBvdmVybG9hZGluZyBhY3Rpb25zIGJhc2Vk
IG9uIHBhcmFtZXRlciB0eXBlcyAoYXMgb3Bwb3NlZAotLy8gdG8ganVzdCBiYXNlZCBvbiB0aGUg
bnVtYmVyIG9mIHBhcmFtZXRlcnMpLgotLy8KLS8vIENBVkVBVDoKLS8vCi0vLyBBQ1RJT04qKCkg
Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZS4gIFRoZSByZWFzb24gaXMKLS8v
IHRoYXQgQysrIGRvZXNuJ3QgeWV0IGFsbG93IGZ1bmN0aW9uLWxvY2FsIHR5cGVzIHRvIGJlIHVz
ZWQgdG8KLS8vIGluc3RhbnRpYXRlIHRlbXBsYXRlcy4gIFRoZSB1cC1jb21pbmcgQysrMHggc3Rh
bmRhcmQgd2lsbCBmaXggdGhpcy4KLS8vIE9uY2UgdGhhdCdzIGRvbmUsIHdlJ2xsIGNvbnNpZGVy
IHN1cHBvcnRpbmcgdXNpbmcgQUNUSU9OKigpIGluc2lkZQotLy8gYSBmdW5jdGlvbi4KLS8vCi0v
LyBNT1JFIElORk9STUFUSU9OOgotLy8KLS8vIFRvIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgdGhl
c2UgbWFjcm9zLCBwbGVhc2Ugc2VhcmNoIGZvciAnQUNUSU9OJwotLy8gb24gaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9Db29rQm9vay4KLQotJHJhbmdlIGkgMC4ubgot
JHJhbmdlIGsgMC4ubi0xCi0KLS8vIEFuIGludGVybmFsIG1hY3JvIG5lZWRlZCBmb3IgaW1wbGVt
ZW50aW5nIEFDVElPTiooKS4KLSNkZWZpbmUgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFN
RVNfVU5VU0VEX1wKLSAgICBjb25zdCBhcmdzX3R5cGUmIGFyZ3MgR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF8KLSRmb3IgayBbWywgXAotICAgIGFyZyRrW1tdXV90eXBlIGFyZyRrIEdURVNUX0FUVFJJ
QlVURV9VTlVTRURfXV0KLQotCi0vLyBTb21ldGltZXMgeW91IHdhbnQgdG8gZ2l2ZSBhbiBhY3Rp
b24gZXhwbGljaXQgdGVtcGxhdGUgcGFyYW1ldGVycwotLy8gdGhhdCBjYW5ub3QgYmUgaW5mZXJy
ZWQgZnJvbSBpdHMgdmFsdWUgcGFyYW1ldGVycy4gIEFDVElPTigpIGFuZAotLy8gQUNUSU9OX1Aq
KCkgZG9uJ3Qgc3VwcG9ydCB0aGF0LiAgQUNUSU9OX1RFTVBMQVRFKCkgcmVtZWRpZXMgdGhhdAot
Ly8gYW5kIGNhbiBiZSB2aWV3ZWQgYXMgYW4gZXh0ZW5zaW9uIHRvIEFDVElPTigpIGFuZCBBQ1RJ
T05fUCooKS4KLS8vCi0vLyBUaGUgc3ludGF4OgotLy8KLS8vICAgQUNUSU9OX1RFTVBMQVRFKEFj
dGlvbk5hbWUsCi0vLyAgICAgICAgICAgICAgICAgICBIQVNfbV9URU1QTEFURV9QQVJBTVMoa2lu
ZDEsIG5hbWUxLCAuLi4sIGtpbmRfbSwgbmFtZV9tKSwKLS8vICAgICAgICAgICAgICAgICAgIEFO
RF9uX1ZBTFVFX1BBUkFNUyhwMSwgLi4uLCBwX24pKSB7IHN0YXRlbWVudHM7IH0KLS8vCi0vLyBk
ZWZpbmVzIGFuIGFjdGlvbiB0ZW1wbGF0ZSB0aGF0IHRha2VzIG0gZXhwbGljaXQgdGVtcGxhdGUK
LS8vIHBhcmFtZXRlcnMgYW5kIG4gdmFsdWUgcGFyYW1ldGVycy4gIG5hbWVfaSBpcyB0aGUgbmFt
ZSBvZiB0aGUgaS10aAotLy8gdGVtcGxhdGUgcGFyYW1ldGVyLCBhbmQga2luZF9pIHNwZWNpZmll
cyB3aGV0aGVyIGl0J3MgYSB0eXBlbmFtZSwKLS8vIGFuIGludGVncmFsIGNvbnN0YW50LCBvciBh
IHRlbXBsYXRlLiAgcF9pIGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoCi0vLyB2YWx1ZSBwYXJhbWV0
ZXIuCi0vLwotLy8gRXhhbXBsZToKLS8vCi0vLyAgIC8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRw
dXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrCi0vLyAgIC8vIGZ1bmN0
aW9uIHRvIHR5cGUgVCBhbmQgY29waWVzIGl0IHRvICpvdXRwdXQuCi0vLyAgIEFDVElPTl9URU1Q
TEFURShEdXBsaWNhdGVBcmcsCi0vLyAgICAgICAgICAgICAgICAgICBIQVNfMl9URU1QTEFURV9Q
QVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCksCi0vLyAgICAgICAgICAgICAgICAgICBBTkRfMV9W
QUxVRV9QQVJBTVMob3V0cHV0KSkgewotLy8gICAgICpvdXRwdXQgPSBUKDo6dGVzdGluZzo6Z2V0
PGs+KGFyZ3MpKTsKLS8vICAgfQotLy8gICAuLi4KLS8vICAgICBpbnQgbjsKLS8vICAgICBFWFBF
Q1RfQ0FMTChtb2NrLCBGb28oXywgXykpCi0vLyAgICAgICAgIC5XaWxsT25jZShEdXBsaWNhdGVB
cmc8MSwgdW5zaWduZWQgY2hhcj4oJm4pKTsKLS8vCi0vLyBUbyBjcmVhdGUgYW4gaW5zdGFuY2Ug
b2YgYW4gYWN0aW9uIHRlbXBsYXRlLCB3cml0ZToKLS8vCi0vLyAgIEFjdGlvbk5hbWU8dDEsIC4u
LiwgdF9tPih2MSwgLi4uLCB2X24pCi0vLwotLy8gd2hlcmUgdGhlIHRzIGFyZSB0aGUgdGVtcGxh
dGUgYXJndW1lbnRzIGFuZCB0aGUgdnMgYXJlIHRoZSB2YWx1ZQotLy8gYXJndW1lbnRzLiAgVGhl
IHZhbHVlIGFyZ3VtZW50IHR5cGVzIGFyZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuCi0vLyBJ
ZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHZhbHVlIGFyZ3VtZW50IHR5cGVz
LCB5b3UgY2FuCi0vLyBwcm92aWRlIGFkZGl0aW9uYWwgdGVtcGxhdGUgYXJndW1lbnRzOgotLy8K
LS8vICAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20sIHUxLCAuLi4sIHVfaz4odjEsIC4uLiwgdl9u
KQotLy8KLS8vIHdoZXJlIHVfaSBpcyB0aGUgZGVzaXJlZCB0eXBlIG9mIHZfaS4KLS8vCi0vLyBB
Q1RJT05fVEVNUExBVEUgYW5kIEFDVElPTi9BQ1RJT05fUCogY2FuIGJlIG92ZXJsb2FkZWQgb24g
dGhlCi0vLyBudW1iZXIgb2YgdmFsdWUgcGFyYW1ldGVycywgYnV0IG5vdCBvbiB0aGUgbnVtYmVy
IG9mIHRlbXBsYXRlCi0vLyBwYXJhbWV0ZXJzLiAgV2l0aG91dCB0aGUgcmVzdHJpY3Rpb24sIHRo
ZSBtZWFuaW5nIG9mIHRoZSBmb2xsb3dpbmcKLS8vIGlzIHVuY2xlYXI6Ci0vLwotLy8gICBPdmVy
bG9hZGVkQWN0aW9uPGludCwgYm9vbD4oeCk7Ci0vLwotLy8gQXJlIHdlIHVzaW5nIGEgc2luZ2xl
LXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hlcmUgJ2Jvb2wnIHJlZmVycwotLy8gdG8gdGhl
IHR5cGUgb2YgeCwgb3IgYXJlIHdlIHVzaW5nIGEgdHdvLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rp
b24KLS8vIHdoZXJlIHRoZSBjb21waWxlciBpcyBhc2tlZCB0byBpbmZlciB0aGUgdHlwZSBvZiB4
PwotLy8KLS8vIEltcGxlbWVudGF0aW9uIG5vdGVzOgotLy8KLS8vIEdNT0NLX0lOVEVSTkFMXypf
SEFTX21fVEVNUExBVEVfUEFSQU1TIGFuZAotLy8gR01PQ0tfSU5URVJOQUxfKl9BTkRfbl9WQUxV
RV9QQVJBTVMgYXJlIGludGVybmFsIG1hY3JvcyBmb3IKLS8vIGltcGxlbWVudGluZyBBQ1RJT05f
VEVNUExBVEUuICBUaGUgbWFpbiB0cmljayB3ZSB1c2UgaXMgdG8gY3JlYXRlCi0vLyBuZXcgbWFj
cm8gaW52b2NhdGlvbnMgd2hlbiBleHBhbmRpbmcgYSBtYWNyby4gIEZvciBleGFtcGxlLCB3ZSBo
YXZlCi0vLwotLy8gICAjZGVmaW5lIEFDVElPTl9URU1QTEFURShuYW1lLCB0ZW1wbGF0ZV9wYXJh
bXMsIHZhbHVlX3BhcmFtcykKLS8vICAgICAgIC4uLiBHTU9DS19JTlRFUk5BTF9ERUNMXyMjdGVt
cGxhdGVfcGFyYW1zIC4uLgotLy8KLS8vIHdoaWNoIGNhdXNlcyBBQ1RJT05fVEVNUExBVEUoLi4u
LCBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLCAuLi4pCi0vLyB0byBleHBhbmQg
dG8KLS8vCi0vLyAgICAgICAuLi4gR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfMV9URU1QTEFURV9Q
QVJBTVModHlwZW5hbWUsIFQpIC4uLgotLy8KLS8vIFNpbmNlIEdNT0NLX0lOVEVSTkFMX0RFQ0xf
SEFTXzFfVEVNUExBVEVfUEFSQU1TIGlzIGEgbWFjcm8sIHRoZQotLy8gcHJlcHJvY2Vzc29yIHdp
bGwgY29udGludWUgdG8gZXhwYW5kIGl0IHRvCi0vLwotLy8gICAgICAgLi4uIHR5cGVuYW1lIFQg
Li4uCi0vLwotLy8gVGhpcyB0ZWNobmlxdWUgY29uZm9ybXMgdG8gdGhlIEMrKyBzdGFuZGFyZCBh
bmQgaXMgcG9ydGFibGUuICBJdAotLy8gYWxsb3dzIHVzIHRvIGltcGxlbWVudCBhY3Rpb24gdGVt
cGxhdGVzIHVzaW5nIE8oTikgY29kZSwgd2hlcmUgTiBpcwotLy8gdGhlIG1heGltdW0gbnVtYmVy
IG9mIHRlbXBsYXRlL3ZhbHVlIHBhcmFtZXRlcnMgc3VwcG9ydGVkLiAgV2l0aG91dAotLy8gdXNp
bmcgaXQsIHdlJ2QgaGF2ZSB0byBkZXZvdGUgTyhOXjIpIGFtb3VudCBvZiBjb2RlIHRvIGltcGxl
bWVudCBhbGwKLS8vIGNvbWJpbmF0aW9ucyBvZiBtIGFuZCBuLgotCi0vLyBEZWNsYXJlcyB0aGUg
dGVtcGxhdGUgcGFyYW1ldGVycy4KLQotJHJhbmdlIGogMS4ubgotJGZvciBqIFtbCi0kcmFuZ2Ug
bSAwLi5qLTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfJGpbW11dCi1fVEVNUExB
VEVfUEFSQU1TKCRmb3IgbSwgW1traW5kJG0sIG5hbWUkbV1dKSAkZm9yIG0sIFtba2luZCRtIG5h
bWUkbV1dCi0KLQotXV0KLQotLy8gTGlzdHMgdGhlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCi0KLSRm
b3IgaiBbWwotJHJhbmdlIG0gMC4uai0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfSEFT
XyRqW1tdXQotX1RFTVBMQVRFX1BBUkFNUygkZm9yIG0sIFtba2luZCRtLCBuYW1lJG1dXSkgJGZv
ciBtLCBbW25hbWUkbV1dCi0KLQotXV0KLQotLy8gRGVjbGFyZXMgdGhlIHR5cGVzIG9mIHZhbHVl
IHBhcmFtZXRlcnMuCi0KLSRmb3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfJGlbW11dCi1fVkFMVUVfUEFSQU1TKCRmb3IgaiwgW1tw
JGpdXSkgJGZvciBqIFtbLCB0eXBlbmFtZSBwJGojI190eXBlXV0KLQotCi1dXQotCi0vLyBJbml0
aWFsaXplcyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAwLi5p
LTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfJGlbW11dX1ZBTFVFX1BBUkFNUygk
Zm9yIGosIFtbcCRqXV0pXAotICAgICgkZm9yIGosIFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXSkk
aWYgaT4wIFtbIDogXV0kZm9yIGosIFtbcCRqKGdtb2NrX3AkaildXQotCi0KLV1dCi0KLS8vIERl
Y2xhcmVzIHRoZSBmaWVsZHMgZm9yIHN0b3JpbmcgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCi0KLSRm
b3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5E
XyRpW1tdXQotX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pICRmb3IgaiBbW3AkaiMjX3R5
cGUgcCRqOyBdXQotCi0KLV1dCi0KLS8vIExpc3RzIHRoZSB2YWx1ZSBwYXJhbWV0ZXJzLgotCi0k
Zm9yIGkgW1sKLSRyYW5nZSBqIDAuLmktMQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0FO
RF8kaVtbXV0KLV9WQUxVRV9QQVJBTVMoJGZvciBqLCBbW3Akal1dKSAkZm9yIGosIFtbcCRqXV0K
LQotCi1dXQotCi0vLyBMaXN0cyB0aGUgdmFsdWUgcGFyYW1ldGVyIHR5cGVzLgotCi0kZm9yIGkg
W1sKLSRyYW5nZSBqIDAuLmktMQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5E
XyRpW1tdXQotX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pICRmb3IgaiBbWywgcCRqIyNf
dHlwZV1dCi0KLQotXV0KLQotLy8gRGVjbGFyZXMgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCi0KLSRm
b3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5E
XyRpW1tdXV9WQUxVRV9QQVJBTVMoJGZvciBqLCBbW3Akal1dKSBbW11dCi0kZm9yIGosIFtbcCRq
IyNfdHlwZSBwJGpdXQotCi0KLV1dCi0KLS8vIFRoZSBzdWZmaXggb2YgdGhlIGNsYXNzIHRlbXBs
YXRlIGltcGxlbWVudGluZyB0aGUgYWN0aW9uIHRlbXBsYXRlLgotJGZvciBpIFtbCi0KLQotJHJh
bmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF8kaVtbXV1fVkFM
VUVfUEFSQU1TKCRmb3IgaiwgW1twJGpdXSkgW1tdXQotJGlmIGk9PTEgW1tQXV0gJGVsaWYgaT49
MiBbW1AkaV1dCi1dXQotCi0KLS8vIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSBpbXBs
ZW1lbnRpbmcgdGhlIGFjdGlvbiB0ZW1wbGF0ZS4KLSNkZWZpbmUgR01PQ0tfQUNUSU9OX0NMQVNT
XyhuYW1lLCB2YWx1ZV9wYXJhbXMpXAotICAgIEdURVNUX0NPTkNBVF9UT0tFTl8obmFtZSMjQWN0
aW9uLCBHTU9DS19JTlRFUk5BTF9DT1VOVF8jI3ZhbHVlX3BhcmFtcykKLQotJHJhbmdlIGsgMC4u
bi0xCi0KLSNkZWZpbmUgQUNUSU9OX1RFTVBMQVRFKG5hbWUsIHRlbXBsYXRlX3BhcmFtcywgdmFs
dWVfcGFyYW1zKVwKLSAgdGVtcGxhdGUgPEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9w
YXJhbXNcCi0gICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfIyN2YWx1ZV9wYXJh
bXM+XAotICBjbGFzcyBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcykge1wK
LSAgIHB1YmxpYzpcCi0gICAgZXhwbGljaXQgR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1
ZV9wYXJhbXMpXAotICAgICAgICBHTU9DS19JTlRFUk5BTF9JTklUXyMjdmFsdWVfcGFyYW1zIHt9
XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVi
bGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAg
ICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAg
dHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1l
bnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAotICAgICAgZXhwbGljaXQgZ21vY2tfSW1w
bCBHTU9DS19JTlRFUk5BTF9JTklUXyMjdmFsdWVfcGFyYW1zIHt9XAotICAgICAgdmlydHVhbCBy
ZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAgICAgICAgcmV0
dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tf
SW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAotICAgICAgfVwKLSAg
ICAgIHRlbXBsYXRlIDwkZm9yIGssIFtbdHlwZW5hbWUgYXJnJGtbW11dX3R5cGVdXT5cCi0gICAg
ICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3NbW11d
Ci0kZm9yIGsgW1ssIGFyZyRrW1tdXV90eXBlIGFyZyRrXV0pIGNvbnN0O1wKLSAgICAgIEdNT0NL
X0lOVEVSTkFMX0RFRk5fIyN2YWx1ZV9wYXJhbXNcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0lt
cGw8Rj4oR01PQ0tfSU5URVJOQUxfTElTVF8jI3ZhbHVlX3BhcmFtcykpO1wKLSAgICB9XAotICAg
IEdNT0NLX0lOVEVSTkFMX0RFRk5fIyN2YWx1ZV9wYXJhbXNcCi0gICBwcml2YXRlOlwKLSAgICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFy
YW1zKSk7XAotICB9O1wKLSAgdGVtcGxhdGUgPEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0
ZV9wYXJhbXNcCi0gICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfIyN2YWx1ZV9w
YXJhbXM+XAotICBpbmxpbmUgR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMp
PFwKLSAgICAgIEdNT0NLX0lOVEVSTkFMX0xJU1RfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICBH
TU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfIyN2YWx1ZV9wYXJhbXM+IG5hbWUoXAotICAgICAgICAg
IEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN2YWx1ZV9wYXJhbXMpIHtcCi0gICAgcmV0dXJuIEdNT0NL
X0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCi0gICAgICAgIEdNT0NLX0lOVEVS
TkFMX0xJU1RfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICAgIEdNT0NLX0lOVEVSTkFMX0xJU1Rf
VFlQRV8jI3ZhbHVlX3BhcmFtcz4oXAotICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF8j
I3ZhbHVlX3BhcmFtcyk7XAotICB9XAotICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8j
I3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8j
I3ZhbHVlX3BhcmFtcz5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUs
IFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFt
ZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190
eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0g
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAg
ICBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8XAotICAgICAgICAgIEdN
T0NLX0lOVEVSTkFMX0xJU1RfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICAgICAgR01PQ0tfSU5U
RVJOQUxfTElTVF9UWVBFXyMjdmFsdWVfcGFyYW1zPjo6Z21vY2tfSW1wbDxGPjo6XAotICAgICAg
ICAgICAgICBnbW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19U
WVBFU19BTkRfTkFNRVNfVU5VU0VEXykgY29uc3QKLQotJGZvciBpCi0KLVtbCi0kdmFyIHRlbXBs
YXRlID0gW1skaWYgaT09MCBbW11dICRlbHNlIFtbCi0kcmFuZ2UgaiAwLi5pLTEKLQotICB0ZW1w
bGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIHAkaiMjX3R5cGVdXT5cCi1dXV1dCi0kdmFyIGNsYXNz
X25hbWUgPSBbW25hbWUjI0FjdGlvbltbJGlmIGk9PTAgW1tdXSAkZWxpZiBpPT0xIFtbUF1dCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxzZSBbW1Ak
aV1dXV1dXQotJHJhbmdlIGogMC4uaS0xCi0kdmFyIGN0b3JfcGFyYW1fbGlzdCA9IFtbJGZvciBq
LCBbW3AkaiMjX3R5cGUgZ21vY2tfcCRqXV1dXQotJHZhciBwYXJhbV90eXBlc19hbmRfbmFtZXMg
PSBbWyRmb3IgaiwgW1twJGojI190eXBlIHAkal1dXV0KLSR2YXIgaW5pdHMgPSBbWyRpZiBpPT0w
IFtbXV0gJGVsc2UgW1sgOiAkZm9yIGosIFtbcCRqKGdtb2NrX3AkaildXV1dXV0KLSR2YXIgcGFy
YW1fZmllbGRfZGVjbHMgPSBbWyRmb3IgagotW1sKLQotICAgICAgcCRqIyNfdHlwZSBwJGo7XAot
XV1dXQotJHZhciBwYXJhbV9maWVsZF9kZWNsczIgPSBbWyRmb3IgagotW1sKLQotICAgIHAkaiMj
X3R5cGUgcCRqO1wKLV1dXV0KLSR2YXIgcGFyYW1zID0gW1skZm9yIGosIFtbcCRqXV1dXQotJHZh
ciBwYXJhbV90eXBlcyA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWzwkZm9yIGosIFtbcCRqIyNf
dHlwZV1dPl1dXV0KLSR2YXIgdHlwZW5hbWVfYXJnX3R5cGVzID0gW1skZm9yIGssIFtbdHlwZW5h
bWUgYXJnJGtbW11dX3R5cGVdXV1dCi0kdmFyIGFyZ190eXBlc19hbmRfbmFtZXMgPSBbWyRmb3Ig
aywgW1thcmcka1tbXV1fdHlwZSBhcmcka11dXV0KLSR2YXIgbWFjcm9fbmFtZSA9IFtbJGlmIGk9
PTAgW1tBQ1RJT05dXSAkZWxpZiBpPT0xIFtbQUNUSU9OX1BdXQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRlbHNlIFtbQUNUSU9OX1AkaV1dXV0KLQotI2RlZmluZSAk
bWFjcm9fbmFtZShuYW1lJGZvciBqIFtbLCBwJGpdXSlcJHRlbXBsYXRlCi0gIGNsYXNzICRjbGFz
c19uYW1lIHtcCi0gICBwdWJsaWM6XAotICAgIFtbJGlmIGk9PTEgW1tleHBsaWNpdCBdXV1dJGNs
YXNzX25hbWUoJGN0b3JfcGFyYW1fbGlzdCkkaW5pdHMge31cCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25J
bnRlcmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90
eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rp
b248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFy
Z3NfdHlwZTtcCi0gICAgICBbWyRpZiBpPT0xIFtbZXhwbGljaXQgXV1dXWdtb2NrX0ltcGwoJGN0
b3JfcGFyYW1fbGlzdCkkaW5pdHMge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZv
cm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAg
ICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUgPCR0
eXBlbmFtZV9hcmdfdHlwZXM+XAotICAgICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwo
Y29uc3QgYXJnc190eXBlJiBhcmdzLCBbW11dCi0kYXJnX3R5cGVzX2FuZF9uYW1lcykgY29uc3Q7
XCRwYXJhbV9maWVsZF9kZWNscwotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
PiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4oJHBhcmFtcykpO1wKLSAgICB9
XCRwYXJhbV9maWVsZF9kZWNsczIKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oJGNsYXNzX25hbWUpO1wKLSAgfTtcJHRlbXBsYXRlCi0gIGlubGluZSAkY2xhc3NfbmFt
ZSRwYXJhbV90eXBlcyBuYW1lKCRwYXJhbV90eXBlc19hbmRfbmFtZXMpIHtcCi0gICAgcmV0dXJu
ICRjbGFzc19uYW1lJHBhcmFtX3R5cGVzKCRwYXJhbXMpO1wKLSAgfVwkdGVtcGxhdGUKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8JHR5cGVuYW1lX2FyZ190eXBlcz5cCi0g
IHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAg
ICAkY2xhc3NfbmFtZSRwYXJhbV90eXBlczo6Z21vY2tfSW1wbDxGPjo6Z21vY2tfUGVyZm9ybUlt
cGwoXAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF8p
IGNvbnN0Ci1dXQotJCQgfSAgLy8gVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gIEl0IHdvbid0Ci0kJCAgICAvLyBzaG93IHVwIGluIHRoZSBnZW5lcmF0
ZWQgY29kZS4KLQotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLQotLy8gVGhlIEFDVElPTiooKSBt
YWNyb3MgdHJpZ2dlciB3YXJuaW5nIEM0MTAwICh1bnJlZmVyZW5jZWQgZm9ybWFsCi0vLyBwYXJh
bWV0ZXIpIGluIE1TVkMgd2l0aCAtVzQuICBVbmZvcnR1bmF0ZWx5IHRoZXkgY2Fubm90IGJlIGZp
eGVkIGluCi0vLyB0aGUgbWFjcm8gZGVmaW5pdGlvbiwgYXMgdGhlIHdhcm5pbmdzIGFyZSBnZW5l
cmF0ZWQgd2hlbiB0aGUgbWFjcm8KLS8vIGlzIGV4cGFuZGVkIGFuZCBtYWNybyBleHBhbnNpb24g
Y2Fubm90IGNvbnRhaW4gI3ByYWdtYS4gIFRoZXJlZm9yZQotLy8gd2Ugc3VwcHJlc3MgdGhlbSBo
ZXJlLgotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3
YXJuaW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotCi0vLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3Ig
SW52b2tlQXJndW1lbnQ8Tj4oKS4KLS8vCi0vLyBUaGUgSW52b2tlQXJndW1lbnQ8Tj4oYTEsIGEy
LCAuLi4sIGFfaykgYWN0aW9uIGludm9rZXMgdGhlIE4tdGgKLS8vICgwLWJhc2VkKSBhcmd1bWVu
dCwgd2hpY2ggbXVzdCBiZSBhIGstYXJ5IGNhbGxhYmxlLCBvZiB0aGUgbW9jawotLy8gZnVuY3Rp
b24sIHdpdGggYXJndW1lbnRzIGExLCBhMiwgLi4uLCBhX2suCi0vLwotLy8gTm90ZXM6Ci0vLwot
Ly8gICAxLiBUaGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgYnkgdmFsdWUgYnkgZGVmYXVsdC4gIElm
IHlvdSBuZWVkIHRvCi0vLyAgIHBhc3MgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0
IGluc2lkZSBCeVJlZigpLiAgRm9yCi0vLyAgIGV4YW1wbGUsCi0vLwotLy8gICAgIEludm9rZUFy
Z3VtZW50PDE+KDUsIHN0cmluZygiSGVsbG8iKSwgQnlSZWYoZm9vKSkKLS8vCi0vLyAgIHBhc3Nl
cyA1IGFuZCBzdHJpbmcoIkhlbGxvIikgYnkgdmFsdWUsIGFuZCBwYXNzZXMgZm9vIGJ5Ci0vLyAg
IHJlZmVyZW5jZS4KLS8vCi0vLyAgIDIuIElmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVu
dCBieSByZWZlcmVuY2UgYnV0IEJ5UmVmKCkgaXMKLS8vICAgbm90IHVzZWQsIGl0IHdpbGwgcmVj
ZWl2ZSB0aGUgcmVmZXJlbmNlIHRvIGEgY29weSBvZiB0aGUgdmFsdWUsCi0vLyAgIGluc3RlYWQg
b2YgdGhlIG9yaWdpbmFsIHZhbHVlLiAgRm9yIGV4YW1wbGUsIHdoZW4gdGhlIDAtdGgKLS8vICAg
YXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSBjb25zdCBzdHJpbmcmLCB0aGUg
YWN0aW9uCi0vLwotLy8gICAgIEludm9rZUFyZ3VtZW50PDA+KHN0cmluZygiSGVsbG8iKSkKLS8v
Ci0vLyAgIG1ha2VzIGEgY29weSBvZiB0aGUgdGVtcG9yYXJ5IHN0cmluZygiSGVsbG8iKSBvYmpl
Y3QgYW5kIHBhc3NlcyBhCi0vLyAgIHJlZmVyZW5jZSBvZiB0aGUgY29weSwgaW5zdGVhZCBvZiB0
aGUgb3JpZ2luYWwgdGVtcG9yYXJ5IG9iamVjdCwKLS8vICAgdG8gdGhlIGNhbGxhYmxlLiAgVGhp
cyBtYWtlcyBpdCBlYXN5IGZvciBhIHVzZXIgdG8gZGVmaW5lIGFuCi0vLyAgIEludm9rZUFyZ3Vt
ZW50IGFjdGlvbiBmcm9tIHRlbXBvcmFyeSB2YWx1ZXMgYW5kIGhhdmUgaXQgcGVyZm9ybWVkCi0v
LyAgIGxhdGVyLgotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIGludm9rZV9hcmd1
bWVudCB7Ci0KLS8vIEFwcGVhcnMgaW4gSW52b2tlQXJndW1lbnRBZGwncyBhcmd1bWVudCBsaXN0
IHRvIGhlbHAgYXZvaWQKLS8vIGFjY2lkZW50YWwgY2FsbHMgdG8gdXNlciBmdW5jdGlvbnMgb2Yg
dGhlIHNhbWUgbmFtZS4KLXN0cnVjdCBBZGxUYWcge307Ci0KLS8vIEludm9rZUFyZ3VtZW50QWRs
IC0gYSBoZWxwZXIgZm9yIEludm9rZUFyZ3VtZW50LgotLy8gVGhlIGJhc2ljIG92ZXJsb2FkcyBh
cmUgcHJvdmlkZWQgaGVyZSBmb3IgZ2VuZXJpYyBmdW5jdG9ycy4KLS8vIE92ZXJsb2FkcyBmb3Ig
b3RoZXIgY3VzdG9tLWNhbGxhYmxlcyBhcmUgcHJvdmlkZWQgaW4gdGhlCi0vLyBpbnRlcm5hbC9j
dXN0b20vY2FsbGJhY2stYWN0aW9ucy5oIGhlYWRlci4KLQotJHJhbmdlIGkgMC4ubgotJGZvciBp
Ci1bWwotJHJhbmdlIGogMS4uaQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRltb
JGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXV1dPgotUiBJbnZva2VBcmd1bWVudEFkbChBZGxUYWcs
IEYgZltbJGZvciBqIFtbLCBBJGogYSRqXV1dXSkgewotICByZXR1cm4gZihbWyRmb3IgaiwgW1th
JGpdXV1dKTsKLX0KLV1dCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnZva2VfYXJndW1lbnQKLX0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBq
IDAuLmktMQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAg
ICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXyRp
W1tdXV9WQUxVRV9QQVJBTVMoJGZvciBqLCBbW3Akal1dKSkgewotICB1c2luZyBpbnRlcm5hbDo6
aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFkbDsKLSAgcmV0dXJuIEludm9rZUFyZ3Vt
ZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6OkFk
bFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykkZm9yIGogW1ssIHAkal1dKTsK
LX0KLQotXV0KLQotLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIFJldHVybk5ldzxUPigpLgotLy8K
LS8vIFRoZSBSZXR1cm5OZXc8VD4oYTEsIGEyLCAuLi4sIGFfaykgYWN0aW9uIHJldHVybnMgYSBw
b2ludGVyIHRvIGEgbmV3Ci0vLyBpbnN0YW5jZSBvZiB0eXBlIFQsIGNvbnN0cnVjdGVkIG9uIHRo
ZSBoZWFwIHdpdGggY29uc3RydWN0b3IgYXJndW1lbnRzCi0vLyBhMSwgYTIsIC4uLiwgYW5kIGFf
ay4gVGhlIGNhbGxlciBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUuCi0k
cmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDAuLmktMQotJHZhciBwcyA9IFtbJGZv
ciBqLCBbW3Akal1dXV0KLQotQUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKLSAgICAgICAgICAg
ICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAg
IEFORF8kaVtbXV1fVkFMVUVfUEFSQU1TKCRwcykpIHsKLSAgcmV0dXJuIG5ldyBUKCRwcyk7Ci19
Ci0KLV1dCi0KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYK
LQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotLy8gSW5jbHVkZSBhbnkgY3VzdG9tIGNhbGxi
YWNrIGFjdGlvbnMgYWRkZWQgYnkgdGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KLS8vIFdlIG11c3Qg
aW5jbHVkZSB0aGlzIGhlYWRlciBhdCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRo
ZQotLy8gZGVjbGFyYXRpb25zIGZyb20gdGhpcyBmaWxlLgotI2luY2x1ZGUgImdtb2NrL2ludGVy
bmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oIgotCi0jZW5kaWYgIC8vIEdNT0NL
X0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1v
Y2tlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZhNWNhOTQ4NDlmMzM3MzJj
YzliMzEwYTljMDc1ZTc2Y2Q5ZjEwNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1m
dW5jdGlvbi1tb2NrZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDk1ICswLDAgQEAKLS8vIFRo
aXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBnbW9jay1n
ZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oLnB1bXAKLS8vIERPIE5PVCBFRElUIEJZIEhBTkQh
ISEKLQotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sg
LSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMg
ZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9uIG1vY2tlcnMgb2YgdmFyaW91cyBhcml0aWVzLgotCi0j
aWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX0ZVTkNUSU9OX01PQ0tF
UlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfRlVOQ1RJ
T05fTU9DS0VSU19IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5oIgot
I2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCi0KLSNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotIyBpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2VuZGlmCi0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGPgotY2xhc3MgRnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0vLyBOb3RlOiBjbGFzcyBG
dW5jdGlvbk1vY2tlciByZWFsbHkgYmVsb25ncyB0byB0aGUgOjp0ZXN0aW5nCi0vLyBuYW1lc3Bh
Y2UuICBIb3dldmVyIGlmIHdlIGRlZmluZSBpdCBpbiA6OnRlc3RpbmcsIE1TVkMgd2lsbAotLy8g
Y29tcGxhaW4gd2hlbiBjbGFzc2VzIGluIDo6dGVzdGluZzo6aW50ZXJuYWwgZGVjbGFyZSBpdCBh
cyBhCi0vLyBmcmllbmQgY2xhc3MgdGVtcGxhdGUuICBUbyB3b3JrYXJvdW5kIHRoaXMgY29tcGls
ZXIgYnVnLCB3ZSBkZWZpbmUKLS8vIEZ1bmN0aW9uTW9ja2VyIGluIDo6dGVzdGluZzo6aW50ZXJu
YWwgYW5kIGltcG9ydCBpdCBpbnRvIDo6dGVzdGluZy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgot
Y2xhc3MgRnVuY3Rpb25Nb2NrZXI7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotY2xhc3MgRnVu
Y3Rpb25Nb2NrZXI8UigpPiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJh
c2U8UigpPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFIgRigpOwotICB0eXBlZGVmIHR5cGVuYW1l
IGludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0g
IE1vY2tTcGVjPEY+JiBXaXRoKCkgewotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsK
LSAgfQotCi0gIFIgSW52b2tlKCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBk
b24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysg
c3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8v
IGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBi
ZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJl
dHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoKSk7Ci0gIH0KLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMT4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEp
PiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSk+IHsKLSBw
dWJsaWM6Ci0gIHR5cGVkZWYgUiBGKEExKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxG
PiYgV2l0aChjb25zdCBNYXRjaGVyPEExPiYgbTEpIHsKLSAgICB0aGlzLT5jdXJyZW50X3NwZWMo
KS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2VfdHVwbGUobTEpKTsKLSAgICByZXR1cm4gdGhp
cy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9rZShBMSBhMSkgewotICAgIC8vIEV2
ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1
aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJh
c2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1l
bnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2
aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVw
bGUoYTEpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMj4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyKT4gOiBwdWJsaWMKLSAg
ICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyKT4gewotIHB1YmxpYzoKLSAg
dHlwZWRlZiBSIEYoQTEsIEEyKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rp
b248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0
aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMikgewotICAgIHRo
aXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwg
bTIpKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9r
ZShBMSBhMSwgQTIgYTIpIHsKLSAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3Qg
ZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKLSAgICAvLyBieSB0aGUgQysrIHN0YW5k
YXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKLSAgICAvLyBkZXBl
bmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKLSAg
ICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KLSAgICByZXR1cm4g
dGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExLCBhMikpOwotICB9Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4K
LWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMyk+IDogcHVibGljCi0gICAgaW50ZXJu
YWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMpPiB7Ci0gcHVibGljOgotICB0eXBl
ZGVmIFIgRihBMSwgQTIsIEEzKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rp
b248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0
aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAgICAgIGNv
bnN0IE1hdGNoZXI8QTM+JiBtMykgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNo
ZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zKSk7Ci0gICAgcmV0dXJuIHRoaXMt
PmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJbnZva2UoQTEgYTEsIEEyIGEyLCBBMyBhMykg
ewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhp
cy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVy
ZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVt
cGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRv
IHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRo
KEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQ+
Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0KT4gOiBwdWJsaWMKLSAgICBp
bnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyLCBBMywgQTQpPiB7Ci0gcHVibGlj
OgotICB0eXBlZGVmIFIgRihBMSwgQTIsIEEzLCBBNCk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9j
a1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYg
bTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCkg
ewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90
dXBsZShtMSwgbTIsIG0zLCBtNCkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsK
LSAgfQotCi0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSB7Ci0gICAgLy8g
RXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQsICd0aGlzLT4nIGlzIHJl
cXVpcmVkCi0gICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUg
YmFzZSBjbGFzcyB0eXBlIGlzCi0gICAgLy8gZGVwZW5kZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCi0gICAgLy8gbG9va2VkIGludG8gd2hlbiByZXNv
bHZpbmcgSW52b2tlV2l0aCkuCi0gICAgcmV0dXJuIHRoaXMtPkludm9rZVdpdGgoQXJndW1lbnRU
dXBsZShhMSwgYTIsIGEzLCBhNCkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAg
dHlwZW5hbWUgQTU+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSk+
IDogcHVibGljCi0gICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMs
IEE0LCBBNSk+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0LCBBNSk7
Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxl
IEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9ja1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4m
IG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMs
IGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwgY29uc3QgTWF0Y2hlcjxBNT4mIG01KSB7Ci0gICAgdGhp
cy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0xLCBt
MiwgbTMsIG00LCBtNSkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsKLSAgfQot
Ci0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgewotICAgIC8v
IEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyBy
ZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhl
IGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJn
dW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVz
b2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50
VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwK
LSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYpPiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1v
Y2tlckJhc2U8UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4gewotIHB1YmxpYzoKLSAgdHlwZWRl
ZiBSIEYoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJu
YWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9ja1Nw
ZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIs
Ci0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwgY29u
c3QgTWF0Y2hlcjxBNT4mIG01LAotICAgICAgY29uc3QgTWF0Y2hlcjxBNj4mIG02KSB7Ci0gICAg
dGhpcy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0x
LCBtMiwgbTMsIG00LCBtNSwKLSAgICAgICAgbTYpKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVu
dF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwg
QTUgYTUsIEE2IGE2KSB7Ci0gICAgLy8gRXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVu
Zm9yY2UgaXQsICd0aGlzLT4nIGlzIHJlcXVpcmVkCi0gICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFy
ZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUgYmFzZSBjbGFzcyB0eXBlIGlzCi0gICAgLy8gZGVwZW5k
ZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCi0gICAg
Ly8gbG9va2VkIGludG8gd2hlbiByZXNvbHZpbmcgSW52b2tlV2l0aCkuCi0gICAgcmV0dXJuIHRo
aXMtPkludm9rZVdpdGgoQXJndW1lbnRUdXBsZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci0g
IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIs
IHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYs
IHR5cGVuYW1lIEE3PgotY2xhc3MgRnVuY3Rpb25Nb2NrZXI8UihBMSwgQTIsIEEzLCBBNCwgQTUs
IEE2LCBBNyk+IDogcHVibGljCi0gICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpOwotICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpG
dW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0gIE1vY2tTcGVjPEY+
JiBXaXRoKGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3QgTWF0Y2hlcjxBMj4mIG0yLAotICAg
ICAgY29uc3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRjaGVyPEE0PiYgbTQsIGNvbnN0IE1h
dGNoZXI8QTU+JiBtNSwKLSAgICAgIGNvbnN0IE1hdGNoZXI8QTY+JiBtNiwgY29uc3QgTWF0Y2hl
cjxBNz4mIG03KSB7Ci0gICAgdGhpcy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0
aW5nOjptYWtlX3R1cGxlKG0xLCBtMiwgbTMsIG00LCBtNSwKLSAgICAgICAgbTYsIG03KSk7Ci0g
ICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJbnZva2UoQTEgYTEs
IEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIHsKLSAgICAvLyBFdmVu
IHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWly
ZWQKLSAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNl
IGNsYXNzIHR5cGUgaXMKLSAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50
IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKLSAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmlu
ZyBJbnZva2VXaXRoKS4KLSAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxl
KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBB
OD4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
KT4gOiBwdWJsaWMKLSAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyLCBB
MywgQTQsIEE1LCBBNiwgQTcsIEE4KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEsIEEy
LCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxG
PiYgV2l0aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAg
ICAgIGNvbnN0IE1hdGNoZXI8QTM+JiBtMywgY29uc3QgTWF0Y2hlcjxBND4mIG00LCBjb25zdCBN
YXRjaGVyPEE1PiYgbTUsCi0gICAgICBjb25zdCBNYXRjaGVyPEE2PiYgbTYsIGNvbnN0IE1hdGNo
ZXI8QTc+JiBtNywgY29uc3QgTWF0Y2hlcjxBOD4mIG04KSB7Ci0gICAgdGhpcy0+Y3VycmVudF9z
cGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0xLCBtMiwgbTMsIG00LCBt
NSwKLSAgICAgICAgbTYsIG03LCBtOCkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMo
KTsKLSAgfQotCi0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwg
QTYgYTYsIEE3IGE3LCBBOCBhOCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBk
b24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysg
c3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8v
IGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBi
ZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJl
dHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcsIGE4KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBB
NSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+Ci1j
bGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkp
PiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSwgQTIsIEEz
LCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9j
a1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYg
bTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwg
Y29uc3QgTWF0Y2hlcjxBNT4mIG01LAotICAgICAgY29uc3QgTWF0Y2hlcjxBNj4mIG02LCBjb25z
dCBNYXRjaGVyPEE3PiYgbTcsIGNvbnN0IE1hdGNoZXI8QTg+JiBtOCwKLSAgICAgIGNvbnN0IE1h
dGNoZXI8QTk+JiBtOSkgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6
dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCi0gICAgICAgIG02LCBtNywg
bTgsIG05KSk7Ci0gICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJ
bnZva2UoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4
IGE4LCBBOSBhOSkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZv
cmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQg
WzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVu
dCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8v
IGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlz
LT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4
LCBhOSkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5
cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LAotICAgIHR5
cGVuYW1lIEExMD4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBB
NiwgQTcsIEE4LCBBOSwgQTEwKT4gOiBwdWJsaWMKLSAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2Nr
ZXJCYXNlPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwgQTEwKT4gewotIHB1
YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwg
QTEwKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50
VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0aChjb25zdCBNYXRjaGVy
PEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAgICAgIGNvbnN0IE1hdGNoZXI8QTM+
JiBtMywgY29uc3QgTWF0Y2hlcjxBND4mIG00LCBjb25zdCBNYXRjaGVyPEE1PiYgbTUsCi0gICAg
ICBjb25zdCBNYXRjaGVyPEE2PiYgbTYsIGNvbnN0IE1hdGNoZXI8QTc+JiBtNywgY29uc3QgTWF0
Y2hlcjxBOD4mIG04LAotICAgICAgY29uc3QgTWF0Y2hlcjxBOT4mIG05LCBjb25zdCBNYXRjaGVy
PEExMD4mIG0xMCkgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVz
dGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCi0gICAgICAgIG02LCBtNywgbTgs
IG05LCBtMTApKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBS
IEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywg
QTggYTgsIEE5IGE5LAotICAgICAgQTEwIGExMCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBh
bmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5
IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBp
cwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNo
b3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgp
LgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwKLSAgICAgICAgYTEwKSk7Ci0gIH0KLX07Ci0KLX0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBUaGUgc3R5bGUgZ3VpZGUgcHJvaGliaXRzICJ1c2lu
ZyIgc3RhdGVtZW50cyBpbiBhIG5hbWVzcGFjZSBzY29wZQotLy8gaW5zaWRlIGEgaGVhZGVyIGZp
bGUuICBIb3dldmVyLCB0aGUgRnVuY3Rpb25Nb2NrZXIgY2xhc3MgdGVtcGxhdGUKLS8vIGlzIG1l
YW50IHRvIGJlIGRlZmluZWQgaW4gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuICBUaGUgZm9sbG93
aW5nCi0vLyBsaW5lIGlzIGp1c3QgYSB0cmljayBmb3Igd29ya2luZyBhcm91bmQgYSBidWcgaW4g
TVNWQyA4LjAsIHdoaWNoCi0vLyBjYW5ub3QgaGFuZGxlIGl0IGlmIHdlIGRlZmluZSBGdW5jdGlv
bk1vY2tlciBpbiA6OnRlc3RpbmcuCi11c2luZyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXI7Ci0K
LS8vIEdNT0NLX1JFU1VMVF8odG4sIEYpIGV4cGFuZHMgdG8gdGhlIHJlc3VsdCB0eXBlIG9mIGZ1
bmN0aW9uIHR5cGUgRi4KLS8vIFdlIGRlZmluZSB0aGlzIGFzIGEgdmFyaWFkaWMgbWFjcm8gaW4g
Y2FzZSBGIGNvbnRhaW5zIHVucHJvdGVjdGVkCi0vLyBjb21tYXMgKHRoZSBzYW1lIHJlYXNvbiB0
aGF0IHdlIHVzZSB2YXJpYWRpYyBtYWNyb3MgaW4gb3RoZXIgcGxhY2VzCi0vLyBpbiB0aGlzIGZp
bGUpLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RF
ISEhCi0jZGVmaW5lIEdNT0NLX1JFU1VMVF8odG4sIC4uLikgXAotICAgIHRuIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6UmVzdWx0Ci0KLS8vIFRoZSB0eXBlIG9m
IGFyZ3VtZW50IE4gb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIHR5cGUuCi0vLyBJTlRFUk5BTCBJTVBM
RU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfQVJH
Xyh0biwgTiwgLi4uKSBcCi0gICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19W
QV9BUkdTX18+OjpBcmd1bWVudCMjTgotCi0vLyBUaGUgbWF0Y2hlciB0eXBlIGZvciBhcmd1bWVu
dCBOIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiB0eXBlLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01BVENIRVJfKHRu
LCBOLCAuLi4pIFwKLSAgICBjb25zdCA6OnRlc3Rpbmc6Ok1hdGNoZXI8R01PQ0tfQVJHXyh0biwg
TiwgX19WQV9BUkdTX18pPiYKLQotLy8gVGhlIHZhcmlhYmxlIGZvciBtb2NraW5nIHRoZSBnaXZl
biBtZXRob2QuCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VS
IENPREUhISEKLSNkZWZpbmUgR01PQ0tfTU9DS0VSXyhhcml0eSwgY29uc3RuZXNzLCBNZXRob2Qp
IFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGdtb2NrIyNjb25zdG5lc3MjI2FyaXR5IyNfIyNN
ZXRob2QjI18sIF9fTElORV9fKQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidU
IFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUVUSE9EMF8odG4sIGNvbnN0bmVz
cywgY3QsIE1ldGhvZCwgLi4uKSBcCi0gIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBj
dCBNZXRob2QoIFwKLSAgICAgICkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNT
RVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFy
Z3VtZW50VHVwbGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSAwKSwgXAotICAgICAgICB0aGlz
X21ldGhvZF9kb2VzX25vdF90YWtlXzBfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8o
MCwgY29uc3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAot
ICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDAsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoKTsg
XAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKLSAgICAgIGdt
b2NrXyMjTWV0aG9kKCkgY29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tFUl8oMCwgY29uc3Ru
ZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9D
S0VSXygwLCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aCgpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6
dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oMCwgY29u
c3RuZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0QxXyh0biwgY29u
c3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdT
X18pIGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdt
b2NrX2ExKSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rp
bmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46
OnZhbHVlIFwKLSAgICAgICAgICAgID09IDEpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNf
bm90X3Rha2VfMV9hcmd1bWVudCk7IFwKLSAgICBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywg
TWV0aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKLSAgICByZXR1cm4gR01P
Q0tfTU9DS0VSXygxLCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExKTsgXAotICB9
IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMj
TWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEpIGNvbnN0
bmVzcyB7IFwKLSAgICBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rl
ck93bmVyKHRoaXMpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oMSwgY29uc3RuZXNzLCBN
ZXRob2QpLldpdGgoZ21vY2tfYTEpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6dGVzdGluZzo6RnVu
Y3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oMSwgY29uc3RuZXNzLCBcCi0g
ICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElO
IFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0QyXyh0biwgY29uc3RuZXNzLCBjdCwg
TWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1ldGhv
ZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0g
ICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIpIGNvbnN0bmVzcyB7
IFwKLSAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVzdGluZzo6dHVwbGVfc2l6ZTwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxlPjo6dmFsdWUgXAotICAgICAgICAg
ICAgPT0gMiksIFwKLSAgICAgICAgdGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV8yX2FyZ3VtZW50
cyk7IFwKLSAgICBHTU9DS19NT0NLRVJfKDIsIGNvbnN0bmVzcywgTWV0aG9kKS5TZXRPd25lckFu
ZE5hbWUodGhpcywgI01ldGhvZCk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygyLCBjb25z
dG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExLCBnbW9ja19hMik7IFwKLSAgfSBcCi0gIDo6
dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCi0gICAgICBnbW9ja18jI01ldGhvZChH
TU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0gICAgICAgICAg
ICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyKSBj
b25zdG5lc3MgeyBcCi0gICAgR01PQ0tfTU9DS0VSXygyLCBjb25zdG5lc3MsIE1ldGhvZCkuUmVn
aXN0ZXJPd25lcih0aGlzKTsgXAotICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDIsIGNvbnN0bmVz
cywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBnbW9ja19hMik7IFwKLSAgfSBcCi0gIG11dGFibGUg
Ojp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXygyLCBj
b25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDNfKHRuLCBj
b25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FS
R1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19h
MiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzKSBjb25z
dG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3Np
emU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlIFwKLSAg
ICAgICAgICAgID09IDMpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfM19h
cmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXygzLCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0
T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8o
MywgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAg
ICAgZ21vY2tfYTMpOyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19f
PiYgXAotICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJH
U19fKSBnbW9ja19hMSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMykgY29uc3RuZXNzIHsgXAotICAg
IEdNT0NLX01PQ0tFUl8oMywgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhpcyk7
IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygzLCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aChn
bW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMpOyBcCi0gIH0gXAotICBtdXRh
YmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8o
MywgY29uc3RuZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0Q0Xyh0
biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19W
QV9BUkdTX18pIGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdT
X18pIGdtb2NrX2ExLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21v
Y2tfYTIsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywg
XAotICAgICAgR01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0KSBjb25zdG5l
c3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlIFwKLSAgICAg
ICAgICAgID09IDQpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfNF9hcmd1
bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg0LCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3du
ZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNCwg
Y29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAg
Z21vY2tfYTMsIGdtb2NrX2E0KTsgXAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZB
X0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKLSAgICAgICAgICAgICAgICAgICAg
IEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQp
IGNvbnN0bmVzcyB7IFwKLSAgICBHTU9DS19NT0NLRVJfKDQsIGNvbnN0bmVzcywgTWV0aG9kKS5S
ZWdpc3Rlck93bmVyKHRoaXMpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNCwgY29uc3Ru
ZXNzLCBNZXRob2QpLldpdGgoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2Ez
LCBnbW9ja19hNCk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tl
cjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg0LCBjb25zdG5lc3MsIFwKLSAgICAgIE1ldGhv
ZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RF
ISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDVfKHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4u
LikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAg
ICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NL
X0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0
biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJH
U19fKSBnbW9ja19hNSkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygo
Ojp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50
VHVwbGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSA1KSwgXAotICAgICAgICB0aGlzX21ldGhv
ZF9kb2VzX25vdF90YWtlXzVfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8oNSwgY29u
c3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJl
dHVybiBHTU9DS19NT0NLRVJfKDUsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEs
IGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUpOyBcCi0g
IH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAgZ21vY2tf
IyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAot
ICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDMsIF9f
VkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hF
Ul8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSkgY29uc3RuZXNzIHsg
XAotICAgIEdNT0NLX01PQ0tFUl8oNSwgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIo
dGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg1LCBjb25zdG5lc3MsIE1ldGhvZCku
V2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBn
bW9ja19hNSk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxf
X1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg1LCBjb25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkK
LQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEh
Ci0jZGVmaW5lIEdNT0NLX01FVEhPRDZfKHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikg
XAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBH
TU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FS
R18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwg
MywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZB
X0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19f
KSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2Nr
X2E2KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6
OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZh
bHVlIFwKLSAgICAgICAgICAgID09IDYpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90
X3Rha2VfNl9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg2LCBjb25zdG5lc3MsIE1l
dGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NL
X01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIs
IFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYpOyBcCi0g
IH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAgZ21vY2tf
IyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAot
ICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDMsIF9f
VkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hF
Ul8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgICAg
ICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNikg
Y29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2QpLlJl
Z2lzdGVyT3duZXIodGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg2LCBjb25zdG5l
c3MsIE1ldGhvZCkuV2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMs
IGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6dGVz
dGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oNiwgY29uc3Ru
ZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9O
J1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0Q3Xyh0biwgY29uc3Ru
ZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18p
IGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2Nr
X2ExLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwK
LSAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAg
R01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCi0gICAgICBHTU9DS19B
UkdfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKLSAgICAgIEdNT0NLX0FSR18odG4s
IDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNywgX19W
QV9BUkdTX18pIGdtb2NrX2E3KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJn
dW1lbnRUdXBsZT46OnZhbHVlIFwKLSAgICAgICAgICAgID09IDcpLCBcCi0gICAgICAgIHRoaXNf
bWV0aG9kX2RvZXNfbm90X3Rha2VfN19hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg3
LCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0g
ICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9j
a19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwg
Z21vY2tfYTYsIGdtb2NrX2E3KTsgXAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZB
X0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKLSAgICAgICAgICAgICAgICAgICAg
IEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQs
IFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA1LCBfX1ZBX0FSR1Nf
XykgZ21vY2tfYTUsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA2
LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTYsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01B
VENIRVJfKHRuLCA3LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcpIGNvbnN0bmVzcyB7IFwKLSAgICBH
TU9DS19NT0NLRVJfKDcsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBc
Ci0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNzLCBNZXRob2QpLldpdGgoZ21v
Y2tfYTEsIGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUs
IGdtb2NrX2E2LCBnbW9ja19hNyk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5j
dGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg3LCBjb25zdG5lc3MsIFwKLSAg
ICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4g
VVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDhfKHRuLCBjb25zdG5lc3MsIGN0LCBN
ZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9k
KCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAg
ICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01P
Q0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdf
KHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUs
IF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNiwgX19WQV9B
UkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA3LCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19h
OCkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0
dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0biA6OnRlc3Rp
bmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1
ZSBcCi0gICAgICAgICAgICA9PSA4KSwgXAotICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90
YWtlXzhfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBNZXRo
b2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJldHVybiBHTU9DS19N
T0NLRVJfKDgsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBc
Ci0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2NrX2E2LCBnbW9ja19h
NywgZ21vY2tfYTgpOyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19f
PiYgXAotICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJH
U19fKSBnbW9ja19hMSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAg
ICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAg
ICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9j
a19hNSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFf
QVJHU19fKSBnbW9ja19hNiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8o
dG4sIDcsIF9fVkFfQVJHU19fKSBnbW9ja19hNywgXAotICAgICAgICAgICAgICAgICAgICAgR01P
Q0tfTUFUQ0hFUl8odG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19hOCkgY29uc3RuZXNzIHsgXAot
ICAgIEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhp
cyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg4LCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0
aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9j
a19hNSwgZ21vY2tfYTYsIGdtb2NrX2E3LCBnbW9ja19hOCk7IFwKLSAgfSBcCi0gIG11dGFibGUg
Ojp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg4LCBj
b25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDlfKHRuLCBj
b25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FS
R1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19h
MiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0g
ICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdN
T0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJH
Xyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA3
LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgsIF9fVkFf
QVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgOSwgX19WQV9BUkdTX18p
IGdtb2NrX2E5KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRl
c3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRu
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBs
ZT46OnZhbHVlIFwKLSAgICAgICAgICAgID09IDkpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2Rv
ZXNfbm90X3Rha2VfOV9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg5LCBjb25zdG5l
c3MsIE1ldGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJu
IEdNT0NLX01PQ0tFUl8oOSwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21v
Y2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYs
IGdtb2NrX2E3LCBnbW9ja19hOCwgXAotICAgICAgICBnbW9ja19hOSk7IFwKLSAgfSBcCi0gIDo6
dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCi0gICAgICBnbW9ja18jI01ldGhvZChH
TU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0gICAgICAgICAg
ICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyLCBc
Ci0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMywgX19WQV9BUkdTX18p
IGdtb2NrX2EzLCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNCwg
X19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRD
SEVSXyh0biwgNSwgX19WQV9BUkdTX18pIGdtb2NrX2E1LCBcCi0gICAgICAgICAgICAgICAgICAg
ICBHTU9DS19NQVRDSEVSXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICAg
ICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNywgX19WQV9BUkdTX18pIGdtb2NrX2E3
LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgOCwgX19WQV9BUkdT
X18pIGdtb2NrX2E4LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwg
OSwgX19WQV9BUkdTX18pIGdtb2NrX2E5KSBjb25zdG5lc3MgeyBcCi0gICAgR01PQ0tfTU9DS0VS
Xyg5LCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0aGlzKTsgXAotICAgIHJldHVy
biBHTU9DS19NT0NLRVJfKDksIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBnbW9j
a19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19hNiwg
Z21vY2tfYTcsIGdtb2NrX2E4LCBcCi0gICAgICAgIGdtb2NrX2E5KTsgXAotICB9IFwKLSAgbXV0
YWJsZSA6OnRlc3Rpbmc6OkZ1bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJf
KDksIGNvbnN0bmVzcywgXAotICAgICAgTWV0aG9kKQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRB
VElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUVUSE9EMTBf
KHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBf
X1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2Ez
LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAg
ICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01P
Q0tfQVJHXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdf
KHRuLCA3LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgs
IF9fVkFfQVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgOSwgX19WQV9B
UkdTX18pIGdtb2NrX2E5LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxMCwgX19WQV9BUkdTX18p
IGdtb2NrX2ExMCkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0
ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0
biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVw
bGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSAxMCksIFwKLSAgICAgICAgdGhpc19tZXRob2Rf
ZG9lc19ub3RfdGFrZV8xMF9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXygxMCwgY29u
c3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJl
dHVybiBHTU9DS19NT0NLRVJfKDEwLCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2Ex
LCBnbW9ja19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9j
a19hNiwgZ21vY2tfYTcsIGdtb2NrX2E4LCBnbW9ja19hOSwgXAotICAgICAgICBnbW9ja19hMTAp
OyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAg
Z21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19h
MSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJH
U19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAg
ICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAg
ICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9j
a19hNiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDcsIF9fVkFf
QVJHU19fKSBnbW9ja19hNywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8o
dG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgICAgICAgICAgICAgICAgR01P
Q0tfTUFUQ0hFUl8odG4sIDksIF9fVkFfQVJHU19fKSBnbW9ja19hOSwgXAotICAgICAgICAgICAg
ICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDEwLCBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgX19WQV9BUkdTX18pIGdtb2NrX2ExMCkgY29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tF
Ul8oMTAsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCi0gICAgcmV0
dXJuIEdNT0NLX01PQ0tFUl8oMTAsIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBn
bW9ja19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19h
NiwgZ21vY2tfYTcsIGdtb2NrX2E4LCBnbW9ja19hOSwgXAotICAgICAgICBnbW9ja19hMTApOyBc
Ci0gIH0gXAotICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+
IEdNT0NLX01PQ0tFUl8oMTAsIGNvbnN0bmVzcywgXAotICAgICAgTWV0aG9kKQotCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EMChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKCwgLCAsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX01FVEhPRDEobSwgLi4uKSBHTU9DS19NRVRIT0QxXygsICwgLCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QyKG0sIC4uLikgR01PQ0tfTUVUSE9EMl8o
LCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMyhtLCAuLi4pIEdNT0NL
X01FVEhPRDNfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDQobSwg
Li4uKSBHTU9DS19NRVRIT0Q0XygsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19N
RVRIT0Q1KG0sIC4uLikgR01PQ0tfTUVUSE9ENV8oLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfTUVUSE9ENihtLCAuLi4pIEdNT0NLX01FVEhPRDZfKCwgLCAsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX01FVEhPRDcobSwgLi4uKSBHTU9DS19NRVRIT0Q3XygsICwgLCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q4KG0sIC4uLikgR01PQ0tfTUVUSE9E
OF8oLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EOShtLCAuLi4pIEdN
T0NLX01FVEhPRDlfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDEw
KG0sIC4uLikgR01PQ0tfTUVUSE9EMTBfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EMChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKCwgY29uc3QsICwgbSwg
X19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMShtLCAuLi4pIEdNT0NLX01F
VEhPRDFfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVU
SE9EMihtLCAuLi4pIEdNT0NLX01FVEhPRDJfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0j
ZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMyhtLCAuLi4pIEdNT0NLX01FVEhPRDNfKCwgY29uc3Qs
ICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENChtLCAuLi4pIEdN
T0NLX01FVEhPRDRfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09O
U1RfTUVUSE9ENShtLCAuLi4pIEdNT0NLX01FVEhPRDVfKCwgY29uc3QsICwgbSwgX19WQV9BUkdT
X18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENihtLCAuLi4pIEdNT0NLX01FVEhPRDZfKCwg
Y29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENyhtLCAu
Li4pIEdNT0NLX01FVEhPRDdfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfQ09OU1RfTUVUSE9EOChtLCAuLi4pIEdNT0NLX01FVEhPRDhfKCwgY29uc3QsICwgbSwgX19W
QV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EOShtLCAuLi4pIEdNT0NLX01FVEhP
RDlfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9E
MTAobSwgLi4uKSBHTU9DS19NRVRIT0QxMF8oLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLQot
I2RlZmluZSBNT0NLX01FVEhPRDBfVChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKHR5cGVuYW1lLCAs
ICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMV9UKG0sIC4uLikgR01PQ0tf
TUVUSE9EMV8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRI
T0QyX1QobSwgLi4uKSBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX01FVEhPRDNfVChtLCAuLi4pIEdNT0NLX01FVEhPRDNfKHR5cGVuYW1l
LCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9ENF9UKG0sIC4uLikgR01P
Q0tfTUVUSE9ENF8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19N
RVRIT0Q1X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX01FVEhPRDZfVChtLCAuLi4pIEdNT0NLX01FVEhPRDZfKHR5cGVu
YW1lLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EN19UKG0sIC4uLikg
R01PQ0tfTUVUSE9EN18odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9D
S19NRVRIT0Q4X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFf
QVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDlfVChtLCAuLi4pIEdNT0NLX01FVEhPRDlfKHR5
cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMTBfVChtLCAu
Li4pIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0QxX1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMV8odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDJfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EM19UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q0X1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENF8odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDVfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9ENl9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDZfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q3X1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EN18odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDhfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EOV9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDlfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0QxMF9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgY29uc3QsICwg
bSwgX19WQV9BUkdTX18pCi0KLSNkZWZpbmUgTU9DS19NRVRIT0QwX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0j
ZGVmaW5lIE1PQ0tfTUVUSE9EMV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9D
S19NRVRIT0QxXygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDJf
V0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMl8oLCAsIGN0LCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QzX1dJVEhfQ0FMTFRZUEUoY3QsIG0s
IC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfTUVUSE9ENF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19N
RVRIT0Q0XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDVfV0lU
SF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENV8oLCAsIGN0LCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q2X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDZfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EN19XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRI
T0Q3XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDhfV0lUSF9D
QUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EOF8oLCAsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q5X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDlfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfTUVUSE9EMTBfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9E
MTBfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0KLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Qw
X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKCwgY29uc3Qs
IGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QxX1dJVEhfQ0FM
TFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDFfKCwgY29uc3QsIGN0LCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QyX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDJfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QzX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDNfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZp
bmUgTU9DS19DT05TVF9NRVRIT0Q0X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdN
T0NLX01FVEhPRDRfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19D
T05TVF9NRVRIT0Q1X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhP
RDVfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q2X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDZfKCwgY29u
c3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q3X1dJVEhf
Q0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDdfKCwgY29uc3QsIGN0LCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q4X1dJVEhfQ0FMTFRZUEUo
Y3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDhfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q5X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDlfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNk
ZWZpbmUgTU9DS19DT05TVF9NRVRIT0QxMF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0QxMF8oLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01F
VEhPRDBfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRI
T0QxX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMV8odHlw
ZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDJfVF9XSVRI
X0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgLCBj
dCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EM19UX1dJVEhfQ0FMTFRZUEUo
Y3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q0X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4u
KSBcCi0gICAgR01PQ0tfTUVUSE9ENF8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQot
I2RlZmluZSBNT0NLX01FVEhPRDVfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBH
TU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfTUVUSE9ENl9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhP
RDZfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q3
X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EN18odHlwZW5h
bWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDhfVF9XSVRIX0NB
TExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgLCBjdCwg
bSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EOV9UX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDlfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QxMF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0K
LSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QwX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBc
Ci0gICAgR01PQ0tfTUVUSE9EMF8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18p
Ci0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMV9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDFfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDJfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4p
IFwKLSAgICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QzX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4u
KSBcCi0gICAgR01PQ0tfTUVUSE9EM18odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdT
X18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDRfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDVfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAu
Li4pIFwKLSAgICBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q2X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwg
Li4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENl8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9B
UkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EN19UX1dJVEhfQ0FMTFRZUEUoY3QsIG0s
IC4uLikgXAotICAgIEdNT0NLX01FVEhPRDdfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFf
QVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDhfVF9XSVRIX0NBTExUWVBFKGN0LCBt
LCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q5X1RfV0lUSF9DQUxMVFlQRShjdCwg
bSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EOV8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19W
QV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMTBfVF9XSVRIX0NBTExUWVBFKGN0
LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0QxMF8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwg
X19WQV9BUkdTX18pCi0KLS8vIEEgTW9ja0Z1bmN0aW9uPEY+IGNsYXNzIGhhcyBvbmUgbW9jayBt
ZXRob2Qgd2hvc2UgdHlwZSBpcyBGLiAgSXQgaXMKLS8vIHVzZWZ1bCB3aGVuIHlvdSBqdXN0IHdh
bnQgeW91ciB0ZXN0IGNvZGUgdG8gZW1pdCBzb21lIG1lc3NhZ2VzIGFuZAotLy8gaGF2ZSBHb29n
bGUgTW9jayB2ZXJpZnkgdGhlIHJpZ2h0IG1lc3NhZ2VzIGFyZSBzZW50IChhbmQgcGVyaGFwcyBh
dAotLy8gdGhlIHJpZ2h0IHRpbWVzKS4gIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIGV4ZXJjaXNp
bmcgY29kZToKLS8vCi0vLyAgIEZvbygxKTsKLS8vICAgRm9vKDIpOwotLy8gICBGb28oMyk7Ci0v
LwotLy8gYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgRm9vKDEpIGFuZCBGb28oMykgYm90aCBpbnZv
a2UKLS8vIG1vY2suQmFyKCJhIiksIGJ1dCBGb28oMikgZG9lc24ndCBpbnZva2UgYW55dGhpbmcs
IHlvdSBjYW4gd3JpdGU6Ci0vLwotLy8gVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29ycmVjdGx5
KSB7Ci0vLyAgIE15TW9jayBtb2NrOwotLy8gICBNb2NrRnVuY3Rpb248dm9pZChzdHJpbmcgY2hl
Y2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotLy8gICB7Ci0vLyAgICAgSW5TZXF1ZW5jZSBzOwotLy8K
LS8vICAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwo
Y2hlY2ssIENhbGwoIjEiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwoIjIiKSk7
Ci0vLyAgICAgRVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotLy8gICB9Ci0vLyAgIEZvbygx
KTsKLS8vICAgY2hlY2suQ2FsbCgiMSIpOwotLy8gICBGb28oMik7Ci0vLyAgIGNoZWNrLkNhbGwo
IjIiKTsKLS8vICAgRm9vKDMpOwotLy8gfQotLy8KLS8vIFRoZSBleHBlY3RhdGlvbiBzcGVjIHNh
eXMgdGhhdCB0aGUgZmlyc3QgQmFyKCJhIikgbXVzdCBoYXBwZW4KLS8vIGJlZm9yZSBjaGVjayBw
b2ludCAiMSIsIHRoZSBzZWNvbmQgQmFyKCJhIikgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sKLS8v
IHBvaW50ICIyIiwgYW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hl
Y2sKLS8vIHBvaW50cy4gVGhlIGV4cGxpY2l0IGNoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8g
dGVsbCB3aGljaAotLy8gQmFyKCJhIikgaXMgY2FsbGVkIGJ5IHdoaWNoIGNhbGwgdG8gRm9vKCku
Ci0vLwotLy8gTW9ja0Z1bmN0aW9uPEY+IGNhbiBhbHNvIGJlIHVzZWQgdG8gZXhlcmNpc2UgY29k
ZSB0aGF0IGFjY2VwdHMKLS8vIHN0ZDo6ZnVuY3Rpb248Rj4gY2FsbGJhY2tzLiBUbyBkbyBzbywg
dXNlIEFzU3RkRnVuY3Rpb24oKSBtZXRob2QKLS8vIHRvIGNyZWF0ZSBzdGQ6OmZ1bmN0aW9uIHBy
b3h5IGZvcndhcmRpbmcgdG8gb3JpZ2luYWwgb2JqZWN0J3MgQ2FsbC4KLS8vIEV4YW1wbGU6Ci0v
LwotLy8gVEVTVChGb29UZXN0LCBSdW5zQ2FsbGJhY2tXaXRoQmFyQXJndW1lbnQpIHsKLS8vICAg
TW9ja0Z1bmN0aW9uPGludChzdHJpbmcpPiBjYWxsYmFjazsKLS8vICAgRVhQRUNUX0NBTEwoY2Fs
bGJhY2ssIENhbGwoImJhciIpKS5XaWxsT25jZShSZXR1cm4oMSkpOwotLy8gICBGb28oY2FsbGJh
Y2suQXNTdGRGdW5jdGlvbigpKTsKLS8vIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotY2xhc3Mg
TW9ja0Z1bmN0aW9uOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLWNsYXNzIE1vY2tGdW5jdGlv
bjxSKCk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0Qw
X1QoQ2FsbCwgUigpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVu
Y3Rpb248UigpPiBBc1N0ZEZ1bmN0aW9uKCkgewotICAgIHJldHVybiBbdGhpc10oKSAtPiBSIHsK
LSAgICAgIHJldHVybiB0aGlzLT5DYWxsKCk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEEwPgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTApPiB7Ci0gcHVibGljOgotICBNb2Nr
RnVuY3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9EMV9UKENhbGwsIFIoQTApKTsKLQotI2lmIEdU
RVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCk+IEFzU3RkRnVuY3Rp
b24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCkgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhp
cy0+Q2FsbChhMCk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBl
bmFtZSBBMT4KLWNsYXNzIE1vY2tGdW5jdGlvbjxSKEEwLCBBMSk+IHsKLSBwdWJsaWM6Ci0gIE1v
Y2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0QyX1QoQ2FsbCwgUihBMCwgQTEpKTsKLQot
I2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEpPiBB
c1N0ZEZ1bmN0aW9uKCkgewotICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGExKSAtPiBSIHsK
LSAgICAgIHJldHVybiB0aGlzLT5DYWxsKGEwLCBhMSk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci1jbGFzcyBNb2NrRnVu
Y3Rpb248UihBMCwgQTEsIEEyKT4gewotIHB1YmxpYzoKLSAgTW9ja0Z1bmN0aW9uKCkge30KLQot
ICBNT0NLX01FVEhPRDNfVChDYWxsLCBSKEEwLCBBMSwgQTIpKTsKLQotI2lmIEdURVNUX0hBU19T
VERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEsIEEyKT4gQXNTdGRGdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gW3RoaXNdKEEwIGEwLCBBMSBhMSwgQTIgYTIpIC0+IFIgewotICAg
ICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBhMik7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgot
Y2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMpPiB7Ci0gcHVibGljOgotICBNb2Nr
RnVuY3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9ENF9UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMp
KTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwg
QTEsIEEyLCBBMyk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwg
QTEgYTEsIEEyIGEyLCBBMyBhMykgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwg
YTEsIGEyLCBhMyk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0PgotY2xh
c3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0KT4gewotIHB1YmxpYzoKLSAgTW9j
a0Z1bmN0aW9uKCkge30KLQotICBNT0NLX01FVEhPRDVfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEz
LCBBNCkpOwotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLSAgc3RkOjpmdW5jdGlvbjxS
KEEwLCBBMSwgQTIsIEEzLCBBNCk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlz
XShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIC0+IFIgewotICAgICAgcmV0dXJu
IHRoaXMtPkNhbGwoYTAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9OwotICB9Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKE1vY2tGdW5jdGlvbik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
UiwgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0g
ICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEEx
LCBBMiwgQTMsIEE0LCBBNSk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAg
TU9DS19NRVRIT0Q2X1QoQ2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQsIEE1KSk7Ci0KLSNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMs
IEE0LCBBNSk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEg
YTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSAtPiBSIHsKLSAgICAgIHJldHVybiB0aGlz
LT5DYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH07Ci0gIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAg
ICB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2PgotY2xhc3MgTW9ja0Z1bmN0
aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpPiB7Ci0gcHVibGljOgotICBNb2NrRnVu
Y3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9EN19UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rp
b248UihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAg
cmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBB
NiBhNikgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwgYTEsIGEyLCBhMywgYTQs
IGE1LCBhNik7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9O
XwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRnVu
Y3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFt
ZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAs
IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4gewotIHB1YmxpYzoKLSAgTW9ja0Z1bmN0aW9u
KCkge30KLQotICBNT0NLX01FVEhPRDhfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUs
IEE2LCBBNykpOwotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLSAgc3RkOjpmdW5jdGlv
bjxSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0g
ICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1
LCBBNiBhNiwgQTcgYTcpIC0+IFIgewotICAgICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9OwotICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfRlVOQ1RJT05fCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKE1vY2tGdW5jdGlvbik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5h
bWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4
PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBB
OCk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0Q5X1Qo
Q2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSk7Ci0KLSNpZiBHVEVT
VF9IQVNfU1REX0ZVTkNUSU9OXwotICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYsIEE3LCBBOCk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShB
MCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsCi0g
ICAgICAgIEE4IGE4KSAtPiBSIHsKLSAgICAgIHJldHVybiB0aGlzLT5DYWxsKGEwLCBhMSwgYTIs
IGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH07Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9GVU5DVElPTl8KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBl
bmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUg
QTgsCi0gICAgdHlwZW5hbWUgQTk+Ci1jbGFzcyBNb2NrRnVuY3Rpb248UihBMCwgQTEsIEEyLCBB
MywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigp
IHt9Ci0KLSAgTU9DS19NRVRIT0QxMF9UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYsIEE3LCBBOCwgQTkpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6
ZnVuY3Rpb248UihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IEFzU3Rk
RnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBh
MywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsCi0gICAgICAgIEE4IGE4LCBBOSBhOSkgLT4g
UiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcsIGE4LCBhOSk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5j
dGlvbi1tb2NrZXJzLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2Vu
ZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4MTE1MDJkMGNlMDNjM2VkZDk1OWY1MGJkNTI5Y2Q5ZWMwNjgwOGJhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaC5wdW1wCisrKyAvZGV2L251
bGwKQEAgLTEsMjkxICswLDAgQEAKLSQkIC0qLSBtb2RlOiBjKys7IC0qLQotJCQgVGhpcyBpcyBh
IFB1bXAgc291cmNlIGZpbGUuICBQbGVhc2UgdXNlIFB1bXAgdG8gY29udmVydCBpdCB0bwotJCQg
Z21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaC4KLSQkCi0kdmFyIG4gPSAxMCAgJCQg
VGhlIG1heGltdW0gYXJpdHkgd2Ugc3VwcG9ydC4KLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1v
Y2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBmdW5jdGlvbiBtb2NrZXJz
IG9mIHZhcmlvdXMgYXJpdGllcy4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NL
X0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01P
Q0tfR01PQ0tfR0VORVJBVEVEX0ZVTkNUSU9OX01PQ0tFUlNfSF8KLQotI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLXNwZWMtYnVpbGRlcnMuaCIKLSNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1p
bnRlcm5hbC11dGlscy5oIgotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLSMgaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2Ug
aW50ZXJuYWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLWNsYXNzIEZ1bmN0aW9uTW9ja2Vy
QmFzZTsKLQotLy8gTm90ZTogY2xhc3MgRnVuY3Rpb25Nb2NrZXIgcmVhbGx5IGJlbG9uZ3MgdG8g
dGhlIDo6dGVzdGluZwotLy8gbmFtZXNwYWNlLiAgSG93ZXZlciBpZiB3ZSBkZWZpbmUgaXQgaW4g
Ojp0ZXN0aW5nLCBNU1ZDIHdpbGwKLS8vIGNvbXBsYWluIHdoZW4gY2xhc3NlcyBpbiA6OnRlc3Rp
bmc6OmludGVybmFsIGRlY2xhcmUgaXQgYXMgYQotLy8gZnJpZW5kIGNsYXNzIHRlbXBsYXRlLiAg
VG8gd29ya2Fyb3VuZCB0aGlzIGNvbXBpbGVyIGJ1Zywgd2UgZGVmaW5lCi0vLyBGdW5jdGlvbk1v
Y2tlciBpbiA6OnRlc3Rpbmc6OmludGVybmFsIGFuZCBpbXBvcnQgaXQgaW50byA6OnRlc3Rpbmcu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyOwotCi0KLSRyYW5n
ZSBpIDAuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHZhciB0eXBlbmFtZV9BcyA9IFtb
JGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXV1dCi0kdmFyIEFzID0gW1skZm9yIGosIFtbQSRqXV1d
XQotJHZhciBhcyA9IFtbJGZvciBqLCBbW2Ekal1dXV0KLSR2YXIgQWFzID0gW1skZm9yIGosIFtb
QSRqIGEkal1dXV0KLSR2YXIgbXMgPSBbWyRmb3IgaiwgW1ttJGpdXV1dCi0kdmFyIG1hdGNoZXJz
ID0gW1skZm9yIGosIFtbY29uc3QgTWF0Y2hlcjxBJGo+JiBtJGpdXV1dCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUiR0eXBlbmFtZV9Bcz4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoJEFzKT4gOiBwdWJs
aWMKLSAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoJEFzKT4gewotIHB1YmxpYzoK
LSAgdHlwZWRlZiBSIEYoJEFzKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rp
b248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0
aCgkbWF0Y2hlcnMpIHsKLQotJGlmIGkgPj0gMSBbWwotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygp
LlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZSgkbXMpKTsKLQotXV0KLSAgICByZXR1
cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9rZSgkQWFzKSB7Ci0gICAg
Ly8gRXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQsICd0aGlzLT4nIGlz
IHJlcXVpcmVkCi0gICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40XSBoZXJlLCBhcyB0
aGUgYmFzZSBjbGFzcyB0eXBlIGlzCi0gICAgLy8gZGVwZW5kZW50IG9uIHRoZSB0ZW1wbGF0ZSBh
cmd1bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCi0gICAgLy8gbG9va2VkIGludG8gd2hlbiBy
ZXNvbHZpbmcgSW52b2tlV2l0aCkuCi0gICAgcmV0dXJuIHRoaXMtPkludm9rZVdpdGgoQXJndW1l
bnRUdXBsZSgkYXMpKTsKLSAgfQotfTsKLQotCi1dXQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Ci0KLS8vIFRoZSBzdHlsZSBndWlkZSBwcm9oaWJpdHMgInVzaW5nIiBzdGF0ZW1lbnRzIGluIGEg
bmFtZXNwYWNlIHNjb3BlCi0vLyBpbnNpZGUgYSBoZWFkZXIgZmlsZS4gIEhvd2V2ZXIsIHRoZSBG
dW5jdGlvbk1vY2tlciBjbGFzcyB0ZW1wbGF0ZQotLy8gaXMgbWVhbnQgdG8gYmUgZGVmaW5lZCBp
biB0aGUgOjp0ZXN0aW5nIG5hbWVzcGFjZS4gIFRoZSBmb2xsb3dpbmcKLS8vIGxpbmUgaXMganVz
dCBhIHRyaWNrIGZvciB3b3JraW5nIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZDIDguMCwgd2hpY2gKLS8v
IGNhbm5vdCBoYW5kbGUgaXQgaWYgd2UgZGVmaW5lIEZ1bmN0aW9uTW9ja2VyIGluIDo6dGVzdGlu
Zy4KLXVzaW5nIGludGVybmFsOjpGdW5jdGlvbk1vY2tlcjsKLQotLy8gR01PQ0tfUkVTVUxUXyh0
biwgRikgZXhwYW5kcyB0byB0aGUgcmVzdWx0IHR5cGUgb2YgZnVuY3Rpb24gdHlwZSBGLgotLy8g
V2UgZGVmaW5lIHRoaXMgYXMgYSB2YXJpYWRpYyBtYWNybyBpbiBjYXNlIEYgY29udGFpbnMgdW5w
cm90ZWN0ZWQKLS8vIGNvbW1hcyAodGhlIHNhbWUgcmVhc29uIHRoYXQgd2UgdXNlIHZhcmlhZGlj
IG1hY3JvcyBpbiBvdGhlciBwbGFjZXMKLS8vIGluIHRoaXMgZmlsZSkuCi0vLyBJTlRFUk5BTCBJ
TVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tf
UkVTVUxUXyh0biwgLi4uKSBcCi0gICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248
X19WQV9BUkdTX18+OjpSZXN1bHQKLQotLy8gVGhlIHR5cGUgb2YgYXJndW1lbnQgTiBvZiB0aGUg
Z2l2ZW4gZnVuY3Rpb24gdHlwZS4KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1Qg
VVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19BUkdfKHRuLCBOLCAuLi4pIFwKLSAg
ICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50
IyNOCi0KLS8vIFRoZSBtYXRjaGVyIHR5cGUgZm9yIGFyZ3VtZW50IE4gb2YgdGhlIGdpdmVuIGZ1
bmN0aW9uIHR5cGUuCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBV
U0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUFUQ0hFUl8odG4sIE4sIC4uLikgXAotICAgIGNv
bnN0IDo6dGVzdGluZzo6TWF0Y2hlcjxHTU9DS19BUkdfKHRuLCBOLCBfX1ZBX0FSR1NfXyk+Jgot
Ci0vLyBUaGUgdmFyaWFibGUgZm9yIG1vY2tpbmcgdGhlIGdpdmVuIG1ldGhvZC4KLS8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBH
TU9DS19NT0NLRVJfKGFyaXR5LCBjb25zdG5lc3MsIE1ldGhvZCkgXAotICAgIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ21vY2sjI2NvbnN0bmVzcyMjYXJpdHkjI18jI01ldGhvZCMjXywgX19MSU5FX18p
Ci0KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0kdmFyIGFyZ19hcyA9IFtbJGZvciBqLCBc
Ci0gICAgICBbW0dNT0NLX0FSR18odG4sICRqLCBfX1ZBX0FSR1NfXykgZ21vY2tfYSRqXV1dXQot
JHZhciBhcyA9IFtbJGZvciBqLCBbW2dtb2NrX2Ekal1dXV0KLSR2YXIgbWF0Y2hlcl9hcyA9IFtb
JGZvciBqLCBcCi0gICAgICAgICAgICAgICAgICAgICBbW0dNT0NLX01BVENIRVJfKHRuLCAkaiwg
X19WQV9BUkdTX18pIGdtb2NrX2Ekal1dXV0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0QkaVtbXV1fKHRu
LCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZB
X0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICAkYXJnX2FzKSBjb25zdG5lc3MgeyBcCi0gICAg
R1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9u
PF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlID09ICRpKSwgXAotICAgICAgICB0
aGlzX21ldGhvZF9kb2VzX25vdF90YWtlXyRpW1tdXV9hcmd1bWVudFtbJGlmIGkgIT0gMSBbW3Nd
XV1dKTsgXAotICAgIEdNT0NLX01PQ0tFUl8oJGksIGNvbnN0bmVzcywgTWV0aG9kKS5TZXRPd25l
ckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygkaSwg
Y29uc3RuZXNzLCBNZXRob2QpLkludm9rZSgkYXMpOyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1v
Y2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAgZ21vY2tfIyNNZXRob2QoJG1hdGNoZXJfYXMp
IGNvbnN0bmVzcyB7IFwKLSAgICBHTU9DS19NT0NLRVJfKCRpLCBjb25zdG5lc3MsIE1ldGhvZCku
UmVnaXN0ZXJPd25lcih0aGlzKTsgXAotICAgIHJldHVybiBHTU9DS19NT0NLRVJfKCRpLCBjb25z
dG5lc3MsIE1ldGhvZCkuV2l0aCgkYXMpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6dGVzdGluZzo6
RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oJGksIGNvbnN0bmVzcywg
TWV0aG9kKQotCi0KLV1dCi0kZm9yIGkgW1sKLSNkZWZpbmUgTU9DS19NRVRIT0QkaShtLCAuLi4p
IEdNT0NLX01FVEhPRCRpW1tdXV8oLCAsICwgbSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZv
ciBpIFtbCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EJGkobSwgLi4uKSBHTU9DS19NRVRIT0Qk
aVtbXV1fKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZvciBpIFtbCi0j
ZGVmaW5lIE1PQ0tfTUVUSE9EJGlbW11dX1QobSwgLi4uKSBHTU9DS19NRVRIT0QkaVtbXV1fKHR5
cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZvciBpIFtbCi0jZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EJGlbW11dX1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EJGlb
W11dXyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZvciBp
IFtbCi0jZGVmaW5lIE1PQ0tfTUVUSE9EJGlbW11dX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRCRpW1tdXV8oLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLQotXV0K
LQotCi0kZm9yIGkgW1sKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QkaVtbXV1fV0lUSF9DQUxM
VFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EJGlbW11dXygsIGNvbnN0LCBjdCwg
bSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZvciBpIFtbCi0jZGVmaW5lIE1PQ0tfTUVUSE9E
JGlbW11dX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EJGlb
W11dXyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0KLV1dCi0KLQotJGZvciBpIFtb
Ci0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EJGlbW11dX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwg
Li4uKSBcCi0gICAgR01PQ0tfTUVUSE9EJGlbW11dXyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBf
X1ZBX0FSR1NfXykKLQotXV0KLQotLy8gQSBNb2NrRnVuY3Rpb248Rj4gY2xhc3MgaGFzIG9uZSBt
b2NrIG1ldGhvZCB3aG9zZSB0eXBlIGlzIEYuICBJdCBpcwotLy8gdXNlZnVsIHdoZW4geW91IGp1
c3Qgd2FudCB5b3VyIHRlc3QgY29kZSB0byBlbWl0IHNvbWUgbWVzc2FnZXMgYW5kCi0vLyBoYXZl
IEdvb2dsZSBNb2NrIHZlcmlmeSB0aGUgcmlnaHQgbWVzc2FnZXMgYXJlIHNlbnQgKGFuZCBwZXJo
YXBzIGF0Ci0vLyB0aGUgcmlnaHQgdGltZXMpLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUgZXhl
cmNpc2luZyBjb2RlOgotLy8KLS8vICAgRm9vKDEpOwotLy8gICBGb28oMik7Ci0vLyAgIEZvbygz
KTsKLS8vCi0vLyBhbmQgd2FudCB0byB2ZXJpZnkgdGhhdCBGb28oMSkgYW5kIEZvbygzKSBib3Ro
IGludm9rZQotLy8gbW9jay5CYXIoImEiKSwgYnV0IEZvbygyKSBkb2Vzbid0IGludm9rZSBhbnl0
aGluZywgeW91IGNhbiB3cml0ZToKLS8vCi0vLyBURVNUKEZvb1Rlc3QsIEludm9rZXNCYXJDb3Jy
ZWN0bHkpIHsKLS8vICAgTXlNb2NrIG1vY2s7Ci0vLyAgIE1vY2tGdW5jdGlvbjx2b2lkKHN0cmlu
ZyBjaGVja19wb2ludF9uYW1lKT4gY2hlY2s7Ci0vLyAgIHsKLS8vICAgICBJblNlcXVlbmNlIHM7
Ci0vLwotLy8gICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKLS8vICAgICBFWFBFQ1Rf
Q0FMTChjaGVjaywgQ2FsbCgiMSIpKTsKLS8vICAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgi
MiIpKTsKLS8vICAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0vLyAgIH0KLS8vICAg
Rm9vKDEpOwotLy8gICBjaGVjay5DYWxsKCIxIik7Ci0vLyAgIEZvbygyKTsKLS8vICAgY2hlY2su
Q2FsbCgiMiIpOwotLy8gICBGb28oMyk7Ci0vLyB9Ci0vLwotLy8gVGhlIGV4cGVjdGF0aW9uIHNw
ZWMgc2F5cyB0aGF0IHRoZSBmaXJzdCBCYXIoImEiKSBtdXN0IGhhcHBlbgotLy8gYmVmb3JlIGNo
ZWNrIHBvaW50ICIxIiwgdGhlIHNlY29uZCBCYXIoImEiKSBtdXN0IGhhcHBlbiBhZnRlciBjaGVj
awotLy8gcG9pbnQgIjIiLCBhbmQgbm90aGluZyBzaG91bGQgaGFwcGVuIGJldHdlZW4gdGhlIHR3
byBjaGVjawotLy8gcG9pbnRzLiBUaGUgZXhwbGljaXQgY2hlY2sgcG9pbnRzIG1ha2UgaXQgZWFz
eSB0byB0ZWxsIHdoaWNoCi0vLyBCYXIoImEiKSBpcyBjYWxsZWQgYnkgd2hpY2ggY2FsbCB0byBG
b28oKS4KLS8vCi0vLyBNb2NrRnVuY3Rpb248Rj4gY2FuIGFsc28gYmUgdXNlZCB0byBleGVyY2lz
ZSBjb2RlIHRoYXQgYWNjZXB0cwotLy8gc3RkOjpmdW5jdGlvbjxGPiBjYWxsYmFja3MuIFRvIGRv
IHNvLCB1c2UgQXNTdGRGdW5jdGlvbigpIG1ldGhvZAotLy8gdG8gY3JlYXRlIHN0ZDo6ZnVuY3Rp
b24gcHJveHkgZm9yd2FyZGluZyB0byBvcmlnaW5hbCBvYmplY3QncyBDYWxsLgotLy8gRXhhbXBs
ZToKLS8vCi0vLyBURVNUKEZvb1Rlc3QsIFJ1bnNDYWxsYmFja1dpdGhCYXJBcmd1bWVudCkgewot
Ly8gICBNb2NrRnVuY3Rpb248aW50KHN0cmluZyk+IGNhbGxiYWNrOwotLy8gICBFWFBFQ1RfQ0FM
TChjYWxsYmFjaywgQ2FsbCgiYmFyIikpLldpbGxPbmNlKFJldHVybigxKSk7Ci0vLyAgIEZvbyhj
YWxsYmFjay5Bc1N0ZEZ1bmN0aW9uKCkpOwotLy8gfQotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1j
bGFzcyBNb2NrRnVuY3Rpb247Ci0KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAwLi5pLTEKLSR2YXIg
QXJnVHlwZXMgPSBbWyRmb3IgaiwgW1tBJGpdXV1dCi0kdmFyIEFyZ05hbWVzID0gW1skZm9yIGos
IFtbYSRqXV1dXQotJHZhciBBcmdEZWNscyA9IFtbJGZvciBqLCBbW0EkaiBhJGpdXV1dCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUiRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV0+Ci1jbGFzcyBNb2NrRnVu
Y3Rpb248UigkQXJnVHlwZXMpPiB7Ci0gcHVibGljOgotICBNb2NrRnVuY3Rpb24oKSB7fQotCi0g
IE1PQ0tfTUVUSE9EJGlbW11dX1QoQ2FsbCwgUigkQXJnVHlwZXMpKTsKLQotI2lmIEdURVNUX0hB
U19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UigkQXJnVHlwZXMpPiBBc1N0ZEZ1bmN0
aW9uKCkgewotICAgIHJldHVybiBbdGhpc10oJEFyZ0RlY2xzKSAtPiBSIHsKLSAgICAgIHJldHVy
biB0aGlzLT5DYWxsKCRBcmdOYW1lcyk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRf
QVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotCi1dXQotfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5D
VElPTl9NT0NLRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dt
b2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9j
ay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcw
NTZmZDkxZDIyOTA2YjIyMmUxZGFjYTRiOTJjMmQyZmE1YWM2My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dt
b2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE3OSArMCwwIEBA
Ci0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOgotLy8gICAgIHB1bXAucHkg
Z21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzLmgucHVtcAotLy8gRE8gTk9UIEVESVQgQlkgSEFORCEh
IQotCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEdv
b2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8v
Ci0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIGNvbW1vbmx5IHVzZWQgdmFyaWFkaWMgbWF0
Y2hlcnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTUFU
Q0hFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTUFU
Q0hFUlNfSF8KLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5j
bHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJnbW9jay9nbW9jay1t
YXRjaGVycy5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewot
Ci0vLyBUaGUgdHlwZSBvZiB0aGUgaS10aCAoMC1iYXNlZCkgZmllbGQgb2YgVHVwbGUuCi0jZGVm
aW5lIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBpKSBcCi0gICAgdHlwZW5hbWUgOjp0ZXN0aW5n
Ojp0dXBsZV9lbGVtZW50PGksIFR1cGxlPjo6dHlwZQotCi0vLyBUdXBsZUZpZWxkczxUdXBsZSwg
azAsIC4uLiwga24+IGlzIGZvciBzZWxlY3RpbmcgZmllbGRzIGZyb20gYQotLy8gdHVwbGUgb2Yg
dHlwZSBUdXBsZS4gIEl0IGhhcyB0d28gbWVtYmVyczoKLS8vCi0vLyAgIHR5cGU6IGEgdHVwbGUg
dHlwZSB3aG9zZSBpLXRoIGZpZWxkIGlzIHRoZSBraS10aCBmaWVsZCBvZiBUdXBsZS4KLS8vICAg
R2V0U2VsZWN0ZWRGaWVsZHModCk6IHJldHVybnMgZmllbGRzIGswLCAuLi4sIGFuZCBrbiBvZiB0
IGFzIGEgdHVwbGUuCi0vLwotLy8gRm9yIGV4YW1wbGUsIGluIGNsYXNzIFR1cGxlRmllbGRzPHR1
cGxlPGJvb2wsIGNoYXIsIGludD4sIDIsIDA+LCB3ZSBoYXZlOgotLy8KLS8vICAgdHlwZSBpcyB0
dXBsZTxpbnQsIGJvb2w+LCBhbmQKLS8vICAgR2V0U2VsZWN0ZWRGaWVsZHMobWFrZV90dXBsZSh0
cnVlLCAnYScsIDQyKSkgaXMgKDQyLCB0cnVlKS4KLQotdGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBp
bnQgazAgPSAtMSwgaW50IGsxID0gLTEsIGludCBrMiA9IC0xLCBpbnQgazMgPSAtMSwKLSAgICBp
bnQgazQgPSAtMSwgaW50IGs1ID0gLTEsIGludCBrNiA9IC0xLCBpbnQgazcgPSAtMSwgaW50IGs4
ID0gLTEsCi0gICAgaW50IGs5ID0gLTE+Ci1jbGFzcyBUdXBsZUZpZWxkczsKLQotLy8gVGhpcyBn
ZW5lcmljIHZlcnNpb24gaXMgdXNlZCB3aGVuIHRoZXJlIGFyZSAxMCBzZWxlY3RvcnMuCi10ZW1w
bGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwgaW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0
LCBpbnQgazUsIGludCBrNiwKLSAgICBpbnQgazcsIGludCBrOCwgaW50IGs5PgotY2xhc3MgVHVw
bGVGaWVsZHMgewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrMCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazEp
LCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazIpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8o
VHVwbGUsIGszKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs0KSwKLSAgICAgIEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrNSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNiksCi0gICAg
ICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazcpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwg
azgpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs5KT4gdHlwZTsKLSAgc3RhdGlj
IHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICByZXR1cm4gdHlw
ZShnZXQ8azA+KHQpLCBnZXQ8azE+KHQpLCBnZXQ8azI+KHQpLCBnZXQ8azM+KHQpLCBnZXQ8azQ+
KHQpLAotICAgICAgICBnZXQ8azU+KHQpLCBnZXQ8azY+KHQpLCBnZXQ8azc+KHQpLCBnZXQ8azg+
KHQpLCBnZXQ8azk+KHQpKTsKLSAgfQotfTsKLQotLy8gVGhlIGZvbGxvd2luZyBzcGVjaWFsaXph
dGlvbiBpcyB1c2VkIGZvciAwIH4gOSBzZWxlY3RvcnMuCi0KLXRlbXBsYXRlIDxjbGFzcyBUdXBs
ZT4KLWNsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg
LTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPD4gdHlw
ZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIC8qIHQgKi8p
IHsKLSAgICByZXR1cm4gdHlwZSgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUs
IGludCBrMD4KLWNsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgLTEsIC0xLCAtMSwgLTEsIC0x
LCAtMSwgLTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxl
PEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMCk+IHR5cGU7Ci0gIHN0YXRpYyB0eXBlIEdldFNl
bGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0
KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazE+Ci1j
bGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgazAsIGsxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt
MSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVM
RF9UWVBFXyhUdXBsZSwgazApLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKT4g
dHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsK
LSAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpLCBnZXQ8azE+KHQpKTsKLSAgfQotfTsKLQotdGVt
cGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQgazAsIGludCBrMSwgaW50IGsyPgotY2xhc3MgVHVwbGVG
aWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0g
cHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVw
bGUsIGswKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxE
X1RZUEVfKFR1cGxlLCBrMik+IHR5cGU7Ci0gIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRz
KGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0
KSwgZ2V0PGsyPih0KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGsw
LCBpbnQgazEsIGludCBrMiwgaW50IGszPgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBr
MSwgazIsIGszLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVm
IDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKLSAgICAgIEdN
T0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiks
Ci0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMpPiB0eXBlOwotICBzdGF0aWMgdHlw
ZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgewotICAgIHJldHVybiB0eXBlKGdl
dDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCkpOwotICB9Ci19Owot
Ci10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwgaW50IGsxLCBpbnQgazIsIGludCBrMywg
aW50IGs0PgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgLTEs
IC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1
cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiksCi0gICAgICBHTU9DS19GSUVM
RF9UWVBFXyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpPiB0eXBlOwot
ICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgewotICAgIHJl
dHVybiB0eXBlKGdldDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCks
IGdldDxrND4odCkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwg
aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazU+Ci1jbGFzcyBUdXBsZUZpZWxk
czxUdXBsZSwgazAsIGsxLCBrMiwgazMsIGs0LCBrNSwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJs
aWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwg
azApLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKSwgR01PQ0tfRklFTERfVFlQ
RV8oVHVwbGUsIGsyKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMyksIEdNT0NL
X0ZJRUxEX1RZUEVfKFR1cGxlLCBrNCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwg
azUpPiB0eXBlOwotICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYg
dCkgewotICAgIHJldHVybiB0eXBlKGdldDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCks
IGdldDxrMz4odCksIGdldDxrND4odCksCi0gICAgICAgIGdldDxrNT4odCkpOwotICB9Ci19Owot
Ci10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwgaW50IGsxLCBpbnQgazIsIGludCBrMywg
aW50IGs0LCBpbnQgazUsIGludCBrNj4KLWNsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgazEs
IGsyLCBrMywgazQsIGs1LCBrNiwgLTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMCksCi0gICAgICBHTU9D
S19GSUVMRF9UWVBFXyhUdXBsZSwgazEpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazIpLAot
ICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGszKSwgR01PQ0tfRklFTERfVFlQRV8oVHVw
bGUsIGs0KSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNSksIEdNT0NLX0ZJRUxE
X1RZUEVfKFR1cGxlLCBrNik+IHR5cGU7Ci0gIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRz
KGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0
KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0KSwKLSAgICAgICAgZ2V0PGs1Pih0
KSwgZ2V0PGs2Pih0KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGsw
LCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LAotICAgIGlu
dCBrNz4KLWNsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LCBr
NiwgazcsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdN
T0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBs
ZSwgazEpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazIpLAotICAgICAgR01PQ0tfRklFTERf
VFlQRV8oVHVwbGUsIGszKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs0KSwKLSAgICAgIEdN
T0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNiks
Ci0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazcpPiB0eXBlOwotICBzdGF0aWMgdHlw
ZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgewotICAgIHJldHVybiB0eXBlKGdl
dDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCksIGdldDxrND4odCks
Ci0gICAgICAgIGdldDxrNT4odCksIGdldDxrNj4odCksIGdldDxrNz4odCkpOwotICB9Ci19Owot
Ci10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwgaW50IGsxLCBpbnQgazIsIGludCBrMywg
aW50IGs0LCBpbnQgazUsIGludCBrNiwKLSAgICBpbnQgazcsIGludCBrOD4KLWNsYXNzIFR1cGxl
RmllbGRzPFR1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIGs4LCAtMT4gewot
IHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJRUxEX1RZUEVfKFR1
cGxlLCBrMCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazEpLCBHTU9DS19GSUVM
RF9UWVBFXyhUdXBsZSwgazIpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGszKSwg
R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs0KSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1
cGxlLCBrNSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNiksCi0gICAgICBHTU9DS19GSUVM
RF9UWVBFXyhUdXBsZSwgazcpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazgpPiB0eXBlOwot
ICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgewotICAgIHJl
dHVybiB0eXBlKGdldDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCks
IGdldDxrND4odCksCi0gICAgICAgIGdldDxrNT4odCksIGdldDxrNj4odCksIGdldDxrNz4odCks
IGdldDxrOD4odCkpOwotICB9Ci19OwotCi0jdW5kZWYgR01PQ0tfRklFTERfVFlQRV8KLQotLy8g
SW1wbGVtZW50cyB0aGUgQXJncygpIG1hdGNoZXIuCi10ZW1wbGF0ZSA8Y2xhc3MgQXJnc1R1cGxl
LCBpbnQgazAgPSAtMSwgaW50IGsxID0gLTEsIGludCBrMiA9IC0xLCBpbnQgazMgPSAtMSwKLSAg
ICBpbnQgazQgPSAtMSwgaW50IGs1ID0gLTEsIGludCBrNiA9IC0xLCBpbnQgazcgPSAtMSwgaW50
IGs4ID0gLTEsCi0gICAgaW50IGs5ID0gLTE+Ci1jbGFzcyBBcmdzTWF0Y2hlckltcGwgOiBwdWJs
aWMgTWF0Y2hlckludGVyZmFjZTxBcmdzVHVwbGU+IHsKLSBwdWJsaWM6Ci0gIC8vIEFyZ3NUdXBs
ZSBtYXkgaGF2ZSB0b3AtbGV2ZWwgY29uc3Qgb3IgcmVmZXJlbmNlIG1vZGlmaWVycy4KLSAgdHlw
ZWRlZiBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQXJnc1R1cGxlKSBSYXdBcmdz
VHVwbGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OlR1cGxlRmllbGRzPFJhd0FyZ3NU
dXBsZSwgazAsIGsxLCBrMiwgazMsIGs0LCBrNSwKLSAgICAgIGs2LCBrNywgazgsIGs5Pjo6dHlw
ZSBTZWxlY3RlZEFyZ3M7Ci0gIHR5cGVkZWYgTWF0Y2hlcjxjb25zdCBTZWxlY3RlZEFyZ3MmPiBN
b25vbW9ycGhpY0lubmVyTWF0Y2hlcjsKLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRj
aGVyPgotICBleHBsaWNpdCBBcmdzTWF0Y2hlckltcGwoY29uc3QgSW5uZXJNYXRjaGVyJiBpbm5l
cl9tYXRjaGVyKQotICAgICAgOiBpbm5lcl9tYXRjaGVyXyhTYWZlTWF0Y2hlckNhc3Q8Y29uc3Qg
U2VsZWN0ZWRBcmdzJj4oaW5uZXJfbWF0Y2hlcikpIHt9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNo
QW5kRXhwbGFpbihBcmdzVHVwbGUgYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIGNvbnN0IFNlbGVj
dGVkQXJncyYgc2VsZWN0ZWRfYXJncyA9IEdldFNlbGVjdGVkQXJncyhhcmdzKTsKLSAgICBpZiAo
IWxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkKLSAgICAgIHJldHVybiBpbm5lcl9tYXRjaGVyXy5N
YXRjaGVzKHNlbGVjdGVkX2FyZ3MpOwotCi0gICAgUHJpbnRJbmRpY2VzKGxpc3RlbmVyLT5zdHJl
YW0oKSk7Ci0gICAgKmxpc3RlbmVyIDw8ICJhcmUgIiA8PCBQcmludFRvU3RyaW5nKHNlbGVjdGVk
X2FyZ3MpOwotCi0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0ZW5lcjsK
LSAgICBjb25zdCBib29sIG1hdGNoID0gaW5uZXJfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKHNl
bGVjdGVkX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmaW5uZXJfbGlzdGVuZXIpOwotICAgIFByaW50SWZOb3RFbXB0eShpbm5lcl9s
aXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICByZXR1cm4gbWF0Y2g7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0
IHsKLSAgICAqb3MgPDwgImFyZSBhIHR1cGxlICI7Ci0gICAgUHJpbnRJbmRpY2VzKG9zKTsKLSAg
ICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8
ICJhcmUgYSB0dXBsZSAiOwotICAgIFByaW50SW5kaWNlcyhvcyk7Ci0gICAgaW5uZXJfbWF0Y2hl
cl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIFNl
bGVjdGVkQXJncyBHZXRTZWxlY3RlZEFyZ3MoQXJnc1R1cGxlIGFyZ3MpIHsKLSAgICByZXR1cm4g
VHVwbGVGaWVsZHM8UmF3QXJnc1R1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcs
IGs4LAotICAgICAgICBrOT46OkdldFNlbGVjdGVkRmllbGRzKGFyZ3MpOwotICB9Ci0KLSAgLy8g
UHJpbnRzIHRoZSBpbmRpY2VzIG9mIHRoZSBzZWxlY3RlZCBmaWVsZHMuCi0gIHN0YXRpYyB2b2lk
IFByaW50SW5kaWNlcyg6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICAqb3MgPDwgIndob3NlIGZp
ZWxkcyAoIjsKLSAgICBjb25zdCBpbnQgaW5kaWNlc1sxMF0gPSB7IGswLCBrMSwgazIsIGszLCBr
NCwgazUsIGs2LCBrNywgazgsIGs5IH07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsr
KSB7Ci0gICAgICBpZiAoaW5kaWNlc1tpXSA8IDApCi0gICAgICAgIGJyZWFrOwotCi0gICAgICBp
ZiAoaSA+PSAxKQotICAgICAgICAqb3MgPDwgIiwgIjsKLQotICAgICAgKm9zIDw8ICIjIiA8PCBp
bmRpY2VzW2ldOwotICAgIH0KLSAgICAqb3MgPDwgIikgIjsKLSAgfQotCi0gIGNvbnN0IE1vbm9t
b3JwaGljSW5uZXJNYXRjaGVyIGlubmVyX21hdGNoZXJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oQXJnc01hdGNoZXJJbXBsKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbm5lck1hdGNo
ZXIsIGludCBrMCA9IC0xLCBpbnQgazEgPSAtMSwgaW50IGsyID0gLTEsCi0gICAgaW50IGszID0g
LTEsIGludCBrNCA9IC0xLCBpbnQgazUgPSAtMSwgaW50IGs2ID0gLTEsIGludCBrNyA9IC0xLAot
ICAgIGludCBrOCA9IC0xLCBpbnQgazkgPSAtMT4KLWNsYXNzIEFyZ3NNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVyKGNvbnN0IElubmVyTWF0Y2hlciYgaW5uZXJfbWF0
Y2hlcikKLSAgICAgIDogaW5uZXJfbWF0Y2hlcl8oaW5uZXJfbWF0Y2hlcikge30KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnc1R1cGxlPgotICBvcGVyYXRvciBNYXRjaGVyPEFyZ3NUdXBsZT4o
KSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBBcmdzTWF0Y2hlckltcGw8QXJn
c1R1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LAotICAgICAgICBrNiwgazcsIGs4LCBrOT4o
aW5uZXJfbWF0Y2hlcl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgSW5uZXJNYXRjaGVy
IGlubmVyX21hdGNoZXJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQXJnc01hdGNoZXIp
OwotfTsKLQotLy8gQSBzZXQgb2YgbWV0YWZ1bmN0aW9ucyBmb3IgY29tcHV0aW5nIHRoZSByZXN1
bHQgdHlwZSBvZiBBbGxPZi4KLS8vIEFsbE9mKG0xLCAuLi4sIG1OKSByZXR1cm5zCi0vLyBBbGxP
ZlJlc3VsdE48ZGVjbHR5cGUobTEpLCAuLi4sIGRlY2x0eXBlKG1OKT46OnR5cGUuCi0KLS8vIEFs
dGhvdWdoIEFsbE9mIGlzbid0IGRlZmluZWQgZm9yIG9uZSBhcmd1bWVudCwgQWxsT2ZSZXN1bHQx
IGlzIGRlZmluZWQKLS8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbi4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBNMT4KLXN0cnVjdCBBbGxPZlJlc3VsdDEgewotICB0eXBlZGVmIE0xIHR5cGU7
Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yPgotc3RydWN0IEFsbE9m
UmVzdWx0MiB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwKLSAgICAgIHR5cGVuYW1lIEFsbE9m
UmVzdWx0MTxNMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDE8TTI+Ojp0eXBl
Ci0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5
cGVuYW1lIE0zPgotc3RydWN0IEFsbE9mUmVzdWx0MyB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hl
cjwKLSAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0MTxNMT46OnR5cGUsCi0gICAgICB0eXBlbmFt
ZSBBbGxPZlJlc3VsdDI8TTIsIE0zPjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQ+Ci1zdHJ1
Y3QgQWxsT2ZSZXN1bHQ0IHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAgICAgdHlwZW5h
bWUgQWxsT2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbGxPZlJlc3Vs
dDI8TTMsIE00Pjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEs
IHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01Pgotc3Ry
dWN0IEFsbE9mUmVzdWx0NSB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwKLSAgICAgIHR5cGVu
YW1lIEFsbE9mUmVzdWx0MjxNMSwgTTI+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1
bHQzPE0zLCBNNCwgTTU+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUs
Ci0gICAgdHlwZW5hbWUgTTY+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQ2IHsKLSAgdHlwZWRlZiBCb3Ro
T2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQzPE00LCBNNSwgTTY+Ojp0eXBlCi0gID4gdHlw
ZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0z
LCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03
Pgotc3RydWN0IEFsbE9mUmVzdWx0NyB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwKLSAgICAg
IHR5cGVuYW1lIEFsbE9mUmVzdWx0MzxNMSwgTTIsIE0zPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1l
IEFsbE9mUmVzdWx0NDxNNCwgTTUsIE02LCBNNz46OnR5cGUKLSAgPiB0eXBlOwotfTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00
LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04
Pgotc3RydWN0IEFsbE9mUmVzdWx0OCB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwKLSAgICAg
IHR5cGVuYW1lIEFsbE9mUmVzdWx0NDxNMSwgTTIsIE0zLCBNND46OnR5cGUsCi0gICAgICB0eXBl
bmFtZSBBbGxPZlJlc3VsdDQ8TTUsIE02LCBNNywgTTg+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFt
ZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03LCB0eXBlbmFt
ZSBNOCwgdHlwZW5hbWUgTTk+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQ5IHsKLSAgdHlwZWRlZiBCb3Ro
T2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQ0PE0xLCBNMiwgTTMsIE00Pjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0NTxNNSwgTTYsIE03LCBNOCwgTTk+Ojp0
eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIs
IHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTYs
IHR5cGVuYW1lIE03LCB0eXBlbmFtZSBNOCwgdHlwZW5hbWUgTTksIHR5cGVuYW1lIE0xMD4KLXN0
cnVjdCBBbGxPZlJlc3VsdDEwIHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAgICAgdHlw
ZW5hbWUgQWxsT2ZSZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5cGUsCi0gICAgICB0eXBl
bmFtZSBBbGxPZlJlc3VsdDU8TTYsIE03LCBNOCwgTTksIE0xMD46OnR5cGUKLSAgPiB0eXBlOwot
fTsKLQotLy8gQSBzZXQgb2YgbWV0YWZ1bmN0aW9ucyBmb3IgY29tcHV0aW5nIHRoZSByZXN1bHQg
dHlwZSBvZiBBbnlPZi4KLS8vIEFueU9mKG0xLCAuLi4sIG1OKSByZXR1cm5zCi0vLyBBbnlPZlJl
c3VsdE48ZGVjbHR5cGUobTEpLCAuLi4sIGRlY2x0eXBlKG1OKT46OnR5cGUuCi0KLS8vIEFsdGhv
dWdoIEFueU9mIGlzbid0IGRlZmluZWQgZm9yIG9uZSBhcmd1bWVudCwgQW55T2ZSZXN1bHQxIGlz
IGRlZmluZWQKLS8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbi4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBNMT4KLXN0cnVjdCBBbnlPZlJlc3VsdDEgewotICB0eXBlZGVmIE0xIHR5cGU7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yPgotc3RydWN0IEFueU9mUmVz
dWx0MiB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZS
ZXN1bHQxPE0xPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MTxNMj46OnR5cGUK
LSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlw
ZW5hbWUgTTM+Ci1zdHJ1Y3QgQW55T2ZSZXN1bHQzIHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNo
ZXI8Ci0gICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDE8TTE+Ojp0eXBlLAotICAgICAgdHlwZW5h
bWUgQW55T2ZSZXN1bHQyPE0yLCBNMz46OnR5cGUKLSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00Pgotc3Ry
dWN0IEFueU9mUmVzdWx0NCB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAotICAgICAgdHlw
ZW5hbWUgQW55T2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbnlPZlJl
c3VsdDI8TTMsIE00Pjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
TTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01Pgot
c3RydWN0IEFueU9mUmVzdWx0NSB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAotICAgICAg
dHlwZW5hbWUgQW55T2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbnlP
ZlJlc3VsdDM8TTMsIE00LCBNNT46OnR5cGUKLSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFt
ZSBNNSwKLSAgICB0eXBlbmFtZSBNNj4KLXN0cnVjdCBBbnlPZlJlc3VsdDYgewotICB0eXBlZGVm
IEVpdGhlck9mTWF0Y2hlcjwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MzxNMSwgTTIsIE0z
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MzxNNCwgTTUsIE02Pjo6dHlwZQot
ICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBl
bmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBl
bmFtZSBNNz4KLXN0cnVjdCBBbnlPZlJlc3VsdDcgewotICB0eXBlZGVmIEVpdGhlck9mTWF0Y2hl
cjwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MzxNMSwgTTIsIE0zPjo6dHlwZSwKLSAgICAg
IHR5cGVuYW1lIEFueU9mUmVzdWx0NDxNNCwgTTUsIE02LCBNNz46OnR5cGUKLSAgPiB0eXBlOwot
fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5
cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5
cGVuYW1lIE04Pgotc3RydWN0IEFueU9mUmVzdWx0OCB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRj
aGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ0PE0xLCBNMiwgTTMsIE00Pjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0NDxNNSwgTTYsIE03LCBNOD46OnR5cGUKLSAgPiB0
eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUg
TTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUg
TTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOT4KLXN0cnVjdCBBbnlPZlJlc3VsdDkgewotICB0
eXBlZGVmIEVpdGhlck9mTWF0Y2hlcjwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0NDxNMSwg
TTIsIE0zLCBNND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDU8TTUsIE02LCBN
NywgTTgsIE05Pjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEs
IHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAg
IHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTgsIHR5cGVuYW1lIE05LCB0eXBl
bmFtZSBNMTA+Ci1zdHJ1Y3QgQW55T2ZSZXN1bHQxMCB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRj
aGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDU8TTYsIE03LCBNOCwgTTksIE0xMD46OnR5
cGUKLSAgPiB0eXBlOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIEFyZ3M8
TjEsIE4yLCAuLi4sIE5rPihhX21hdGNoZXIpIG1hdGNoZXMgYSB0dXBsZSBpZiB0aGUgc2VsZWN0
ZWQKLS8vIGZpZWxkcyBvZiBpdCBtYXRjaGVzIGFfbWF0Y2hlci4gIEMrKyBkb2Vzbid0IHN1cHBv
cnQgZGVmYXVsdAotLy8gYXJndW1lbnRzIGZvciBmdW5jdGlvbiB0ZW1wbGF0ZXMsIHNvIHdlIGhh
dmUgdG8gb3ZlcmxvYWQgaXQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5s
aW5lIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXI+Ci1BcmdzKGNvbnN0IElubmVy
TWF0Y2hlciYgbWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVy
TWF0Y2hlcj4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIHR5cGVuYW1lIElubmVy
TWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMT4K
LUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMT4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxp
bnQgazEsIGludCBrMiwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpB
cmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMj4KLUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVy
JiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVy
LCBrMSwgazI+KG1hdGNoZXIpOwotfQotCi10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBr
MywgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJ
bm5lck1hdGNoZXIsIGsxLCBrMiwgazM+Ci1BcmdzKGNvbnN0IElubmVyTWF0Y2hlciYgbWF0Y2hl
cikgewotICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsy
LCBrMz4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCBp
bnQgazQsIHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6QXJnc01hdGNo
ZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrND4KLUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVy
JiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVy
LCBrMSwgazIsIGszLCBrND4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBr
MiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5l
IGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNT4K
LUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazU+KG1hdGNoZXIpOwot
fQotCi10ZW1wbGF0ZSA8aW50IGsxLCBpbnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGlu
dCBrNiwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hl
cjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazY+Ci1BcmdzKGNvbnN0IElubmVy
TWF0Y2hlciYgbWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVy
TWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNj4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRl
IDxpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcs
Ci0gICAgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hl
cjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3PgotQXJncyhjb25zdCBJ
bm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJ
bm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsCi0gICAgICBrNz4obWF0Y2hlcik7
Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwg
aW50IGs2LCBpbnQgazcsIGludCBrOCwKLSAgICB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxp
bmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1
LCBrNiwgazcsIGs4PgotQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0
dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBr
NSwgazYsIGs3LAotICAgICAgazg+KG1hdGNoZXIpOwotfQotCi10ZW1wbGF0ZSA8aW50IGsxLCBp
bnQgazIsIGludCBrMywgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBpbnQgazgsCi0g
ICAgaW50IGs5LCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OkFyZ3NN
YXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIGs4LCBrOT4K
LUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgs
Ci0gICAgICBrOT4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50
IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwKLSAgICBpbnQgazks
IGludCBrMTAsIHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6QXJnc01h
dGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIGs5LAot
ICAgIGsxMD4KLUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBp
bnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2
LCBrNywgazgsCi0gICAgICBrOSwgazEwPihtYXRjaGVyKTsKLX0KLQotLy8gRWxlbWVudHNBcmUo
ZV8xLCBlXzIsIC4uLiBlX24pIG1hdGNoZXMgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aXRoCi0v
LyBuIGVsZW1lbnRzLCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGluIHRoZSBjb250YWluZXIgbXVz
dAotLy8gbWF0Y2ggdGhlIGktdGggYXJndW1lbnQgaW4gdGhlIGxpc3QuICBFYWNoIGFyZ3VtZW50
IG9mCi0vLyBFbGVtZW50c0FyZSgpIGNhbiBiZSBlaXRoZXIgYSB2YWx1ZSBvciBhIG1hdGNoZXIu
ICBXZSBzdXBwb3J0IHVwIHRvCi0vLyAxMCBhcmd1bWVudHMuCi0vLwotLy8gVGhlIHVzZSBvZiBE
ZWNheUFycmF5IGluIHRoZSBpbXBsZW1lbnRhdGlvbiBhbGxvd3MgRWxlbWVudHNBcmUoKQotLy8g
dG8gYWNjZXB0IHN0cmluZyBsaXRlcmFscywgd2hvc2UgdHlwZSBpcyBjb25zdCBjaGFyW05dLCBi
dXQgd2UKLS8vIHdhbnQgdG8gdHJlYXQgdGhlbSBhcyBjb25zdCBjaGFyKi4KLS8vCi0vLyBOT1RF
OiBTaW5jZSBFbGVtZW50c0FyZSgpIGNhcmVzIGFib3V0IHRoZSBvcmRlciBvZiB0aGUgZWxlbWVu
dHMsIGl0Ci0vLyBtdXN0IG5vdCBiZSB1c2VkIHdpdGggY29udGFpbmVycyB3aG9zZSBlbGVtZW50
cydzIG9yZGVyIGlzCi0vLyB1bmRlZmluZWQgKGUuZy4gaGFzaF9tYXApLgotCi1pbmxpbmUgaW50
ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPD4gPgotRWxl
bWVudHNBcmUoKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTw+IEFyZ3M7Ci0gIHJldHVy
biBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoKSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMT4KLWlubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPAot
ICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQxPjo6dHlwZT4gPgotRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxKSB7Ci0gIHR5cGVkZWYg
Ojp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQx
Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJn
cz4oQXJncyhlMSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgot
aW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBs
ZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGU+ID4KLUVsZW1lbnRz
QXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0
dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZT4gQXJnczsKLSAgcmV0
dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIpKTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1pbmxp
bmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAot
ICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlPiA+Ci1FbGVtZW50c0FyZShjb25zdCBU
MSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5n
Ojp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGlu
dGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzKSk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUND4KLWlubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGlu
Zzo6dHVwbGU8Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlw
ZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZT4gPgotRWxlbWVudHNBcmUoY29u
c3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0KSB7Ci0g
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQy
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZT4gQXJnczsKLSAg
cmV0dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUz
LCBlNCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotaW5saW5lIGludGVybmFsOjpFbGVtZW50
c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+
Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGU+
ID4KLUVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMs
IGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDU+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJl
TWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBlNSkpOwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2PgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1h
dGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQz
Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBl
LAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZT4gPgotRWxlbWVudHNB
cmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0
LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5n
Ojp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ2Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8
QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotaW5saW5lIGludGVybmFsOjpFbGVt
ZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5
cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlPiA+Ci1FbGVtZW50
c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYg
ZTQsCi0gICAgY29uc3QgVDUmIGU1LCBjb25zdCBUNiYgZTYsIGNvbnN0IFQ3JiBlNykgewotICB0
eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46
OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0g
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUNz46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNBcmVN
YXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpKTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
PgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0
dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAot
ICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDc+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46
OnR5cGU+ID4KLUVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBU
MyYgZTMsIGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29u
c3QgVDcmIGU3LCBjb25zdCBUOCYgZTgpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDU+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4g
aW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBl
NSwgZTYsIGU3LAotICAgICAgZTgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLWlubGluZSBp
bnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
Nj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlw
ZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOT46OnR5cGU+ID4KLUVsZW1lbnRz
QXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0JiBl
NCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29uc3QgVDcmIGU3LCBjb25zdCBU
OCYgZTgsIGNvbnN0IFQ5JiBlOSkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46
OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCi0g
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCi0gICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUOT46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6RWxl
bWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsCi0g
ICAgICBlOCwgZTkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotaW5s
aW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwK
LSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQ2Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+
Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUs
Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZSwKLSAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDEwPjo6dHlwZT4gPgotRWxlbWVudHNB
cmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0
LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4
JiBlOCwgY29uc3QgVDkmIGU5LAotICAgIGNvbnN0IFQxMCYgZTEwKSB7Ci0gIHR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxMD46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBp
bnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1
LCBlNiwgZTcsCi0gICAgICBlOCwgZTksIGUxMCkpOwotfQotCi0vLyBVbm9yZGVyZWRFbGVtZW50
c0FyZShlXzEsIGVfMiwgLi4uLCBlX24pIGlzIGFuIEVsZW1lbnRzQXJlIGV4dGVuc2lvbgotLy8g
dGhhdCBtYXRjaGVzIG4gZWxlbWVudHMgaW4gYW55IG9yZGVyLiAgV2Ugc3VwcG9ydCB1cCB0byBu
PTEwIGFyZ3VtZW50cy4KLQotaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1h
dGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTw+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKCkg
ewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8PiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6
OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKCkpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDE+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0
Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUMT46OnR5cGU+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBl
MSkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMT46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6VW5vcmRl
cmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEpKTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDI+Ojp0eXBlPiA+Ci1Vbm9yZGVyZWRFbGVtZW50c0FyZShjb25zdCBUMSYg
ZTEsIGNvbnN0IFQyJiBlMikgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6
VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyKSk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotaW5saW5lIGlu
dGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBs
ZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZT4gPgotVW5vcmRlcmVkRWxlbWVu
dHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMykgewotICB0eXBl
ZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGU+IEFyZ3M7
Ci0gIHJldHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFy
Z3MoZTEsIGUyLCBlMykpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVs
ZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUND46OnR5cGU+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3Qg
VDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0JiBlNCkgewotICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUs
Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6
VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQpKTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVu
dHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0
Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBl
PiA+Ci1Vbm9yZGVyZWRFbGVtZW50c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29u
c3QgVDMmIGUzLCBjb25zdCBUNCYgZTQsCi0gICAgY29uc3QgVDUmIGU1KSB7Ci0gIHR5cGVkZWYg
Ojp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQx
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpV
bm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUp
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNj4KLWlubGluZSBpbnRl
cm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8
Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUNj46OnR5cGU+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29u
c3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUs
IGNvbnN0IFQ2JiBlNikgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
ND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUs
Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGU+IEFyZ3M7Ci0g
IHJldHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3Mo
ZTEsIGUyLCBlMywgZTQsIGU1LAotICAgICAgZTYpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJl
ZEVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1
Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBl
LAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGU+ID4KLVVu
b3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYg
ZTMsIGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29uc3Qg
VDcmIGU3KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlw
ZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFs
OjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwg
ZTUsCi0gICAgICBlNiwgZTcpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotaW5saW5lIGludGVybmFsOjpVbm9yZGVy
ZWRFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
NT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlw
ZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGU+ID4KLVVub3JkZXJl
ZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNv
bnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29uc3QgVDcmIGU3
LCBjb25zdCBUOCYgZTgpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6
OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBl
NSwKLSAgICAgIGU2LCBlNywgZTgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLWlubGluZSBp
bnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVw
bGU8Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUNj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ3Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0
eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOT46OnR5cGU+ID4K
LVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBU
MyYgZTMsIGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29u
c3QgVDcmIGU3LCBjb25zdCBUOCYgZTgsIGNvbnN0IFQ5JiBlOSkgewotICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUNj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46
OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCi0g
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOT46OnR5cGU+IEFyZ3M7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEs
IGUyLCBlMywgZTQsIGU1LAotICAgICAgZTYsIGU3LCBlOCwgZTkpKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50
c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+
Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUs
Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAotICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDEwPjo6dHlwZT4gPgotVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEm
IGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0
IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0IFQ4JiBlOCwgY29uc3Qg
VDkmIGU5LAotICAgIGNvbnN0IFQxMCYgZTEwKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQ1Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZSwKLSAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwKLSAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQxMD46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6VW5v
cmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1LAot
ICAgICAgZTYsIGU3LCBlOCwgZTksIGUxMCkpOwotfQotCi0vLyBBbGxPZihtMSwgbTIsIC4uLiwg
bWspIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgbWF0Y2hlcyBhbGwgb2YgdGhlIGdpdmVuCi0vLyBz
dWItbWF0Y2hlcnMuICBBbGxPZiBpcyBjYWxsZWQgZnVsbHkgcXVhbGlmaWVkIHRvIHByZXZlbnQg
QURMIGZyb20gZmlyaW5nLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yPgot
aW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZQotQWxs
T2YoTTEgbTEsIE0yIG0yKSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1
bHQyPE0xLCBNMj46OnR5cGUoCi0gICAgICBtMSwKLSAgICAgIG0yKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTM+Ci1pbmxpbmUgdHlwZW5hbWUg
aW50ZXJuYWw6OkFsbE9mUmVzdWx0MzxNMSwgTTIsIE0zPjo6dHlwZQotQWxsT2YoTTEgbTEsIE0y
IG0yLCBNMyBtMykgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0MzxN
MSwgTTIsIE0zPjo6dHlwZSgKLSAgICAgIG0xLAotICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtMiwg
bTMpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUg
TTMsIHR5cGVuYW1lIE00PgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDQ8
TTEsIE0yLCBNMywgTTQ+Ojp0eXBlCi1BbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCkg
ewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0NDxNMSwgTTIsIE0zLCBN
ND46OnR5cGUoCi0gICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiksCi0gICAgICA6OnRlc3Rp
bmc6OkFsbE9mKG0zLCBtNCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1l
IE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01PgotaW5saW5lIHR5cGVu
YW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZQotQWxs
T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01KSB7Ci0gIHJldHVybiB0eXBlbmFt
ZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5cGUoCi0gICAg
ICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiksCi0gICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0zLCBt
NCwgbTUpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5h
bWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNj4KLWlubGlu
ZSB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQ2PE0xLCBNMiwgTTMsIE00LCBNNSwgTTY+
Ojp0eXBlCi1BbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02KSB7
Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQ2PE0xLCBNMiwgTTMsIE00
LCBNNSwgTTY+Ojp0eXBlKAotICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtMSwgbTIsIG0zKSwKLSAg
ICAgIDo6dGVzdGluZzo6QWxsT2YobTQsIG01LCBtNikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01
LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNz4KLWlubGluZSB0eXBlbmFtZSBpbnRlcm5h
bDo6QWxsT2ZSZXN1bHQ3PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03Pjo6dHlwZQotQWxsT2Yo
TTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcpIHsKLSAgcmV0
dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDc8TTEsIE0yLCBNMywgTTQsIE01LCBN
NiwgTTc+Ojp0eXBlKAotICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtMSwgbTIsIG0zKSwKLSAgICAg
IDo6dGVzdGluZzo6QWxsT2YobTQsIG01LCBtNiwgbTcpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBN
NSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04PgotaW5saW5lIHR5
cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDg8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcs
IE04Pjo6dHlwZQotQWxsT2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBt
NiwgTTcgbTcsIE04IG04KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1
bHQ4PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOD46OnR5cGUoCi0gICAgICA6OnRlc3Rp
bmc6OkFsbE9mKG0xLCBtMiwgbTMsIG00KSwKLSAgICAgIDo6dGVzdGluZzo6QWxsT2YobTUsIG02
LCBtNywgbTgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlw
ZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlw
ZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOT4KLWlubGluZSB0eXBlbmFtZSBpbnRl
cm5hbDo6QWxsT2ZSZXN1bHQ5PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTk+Ojp0
eXBlCi1BbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBt
NywgTTggbTgsIE05IG05KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1
bHQ5PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwKLSAgICAgIE05Pjo6dHlwZSgKLSAg
ICAgIDo6dGVzdGluZzo6QWxsT2YobTEsIG0yLCBtMywgbTQpLAotICAgICAgOjp0ZXN0aW5nOjpB
bGxPZihtNSwgbTYsIG03LCBtOCwgbTkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0
eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0
eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOSwgdHlwZW5h
bWUgTTEwPgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDEwPE0xLCBNMiwg
TTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTksCi0gICAgTTEwPjo6dHlwZQotQWxsT2YoTTEgbTEs
IE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcsIE04IG04LCBNOSBtOSwg
TTEwIG0xMCkgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0MTA8TTEs
IE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04LCBNOSwKLSAgICAgIE0xMD46OnR5cGUoCi0gICAg
ICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiwgbTMsIG00LCBtNSksCi0gICAgICA6OnRlc3Rpbmc6
OkFsbE9mKG02LCBtNywgbTgsIG05LCBtMTApKTsKLX0KLQotLy8gQW55T2YobTEsIG0yLCAuLi4s
IG1rKSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IG1hdGNoZXMgYW55IG9mIHRoZSBnaXZlbgotLy8g
c3ViLW1hdGNoZXJzLiAgQW55T2YgaXMgY2FsbGVkIGZ1bGx5IHF1YWxpZmllZCB0byBwcmV2ZW50
IEFETCBmcm9tIGZpcmluZy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMj4K
LWlubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUKLUFu
eU9mKE0xIG0xLCBNMiBtMikgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVz
dWx0MjxNMSwgTTI+Ojp0eXBlKAotICAgICAgbTEsCi0gICAgICBtMik7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zPgotaW5saW5lIHR5cGVuYW1l
IGludGVybmFsOjpBbnlPZlJlc3VsdDM8TTEsIE0yLCBNMz46OnR5cGUKLUFueU9mKE0xIG0xLCBN
MiBtMiwgTTMgbTMpIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDM8
TTEsIE0yLCBNMz46OnR5cGUoCi0gICAgICBtMSwKLSAgICAgIDo6dGVzdGluZzo6QW55T2YobTIs
IG0zKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1l
IE0zLCB0eXBlbmFtZSBNND4KLWlubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ0
PE0xLCBNMiwgTTMsIE00Pjo6dHlwZQotQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQp
IHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDQ8TTEsIE0yLCBNMywg
TTQ+Ojp0eXBlKAotICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIpLAotICAgICAgOjp0ZXN0
aW5nOjpBbnlPZihtMywgbTQpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFt
ZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNT4KLWlubGluZSB0eXBl
bmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5cGUKLUFu
eU9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSkgewotICByZXR1cm4gdHlwZW5h
bWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0NTxNMSwgTTIsIE0zLCBNNCwgTTU+Ojp0eXBlKAotICAg
ICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIpLAotICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMywg
bTQsIG01KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVu
YW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTY+Ci1pbmxp
bmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0NjxNMSwgTTIsIE0zLCBNNCwgTTUsIE02
Pjo6dHlwZQotQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNikg
ewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0NjxNMSwgTTIsIE0zLCBN
NCwgTTUsIE02Pjo6dHlwZSgKLSAgICAgIDo6dGVzdGluZzo6QW55T2YobTEsIG0yLCBtMyksCi0g
ICAgICA6OnRlc3Rpbmc6OkFueU9mKG00LCBtNSwgbTYpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBN
NSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTc+Ci1pbmxpbmUgdHlwZW5hbWUgaW50ZXJu
YWw6OkFueU9mUmVzdWx0NzxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNz46OnR5cGUKLUFueU9m
KE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYsIE03IG03KSB7Ci0gIHJl
dHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ3PE0xLCBNMiwgTTMsIE00LCBNNSwg
TTYsIE03Pjo6dHlwZSgKLSAgICAgIDo6dGVzdGluZzo6QW55T2YobTEsIG0yLCBtMyksCi0gICAg
ICA6OnRlc3Rpbmc6OkFueU9mKG00LCBtNSwgbTYsIG03KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUg
TTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03LCB0eXBlbmFtZSBNOD4KLWlubGluZSB0
eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ4PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03
LCBNOD46OnR5cGUKLUFueU9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYg
bTYsIE03IG03LCBNOCBtOCkgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVz
dWx0ODxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNywgTTg+Ojp0eXBlKAotICAgICAgOjp0ZXN0
aW5nOjpBbnlPZihtMSwgbTIsIG0zLCBtNCksCi0gICAgICA6OnRlc3Rpbmc6OkFueU9mKG01LCBt
NiwgbTcsIG04KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5
cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5
cGVuYW1lIE03LCB0eXBlbmFtZSBNOCwgdHlwZW5hbWUgTTk+Ci1pbmxpbmUgdHlwZW5hbWUgaW50
ZXJuYWw6OkFueU9mUmVzdWx0OTxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNywgTTgsIE05Pjo6
dHlwZQotQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcg
bTcsIE04IG04LCBNOSBtOSkgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVz
dWx0OTxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNywgTTgsCi0gICAgICBNOT46OnR5cGUoCi0g
ICAgICA6OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiwgbTMsIG00KSwKLSAgICAgIDo6dGVzdGluZzo6
QW55T2YobTUsIG02LCBtNywgbTgsIG05KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwg
dHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAg
dHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03LCB0eXBlbmFtZSBNOCwgdHlwZW5hbWUgTTksIHR5cGVu
YW1lIE0xMD4KLWlubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQxMDxNMSwgTTIs
IE0zLCBNNCwgTTUsIE02LCBNNywgTTgsIE05LAotICAgIE0xMD46OnR5cGUKLUFueU9mKE0xIG0x
LCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYsIE03IG03LCBNOCBtOCwgTTkgbTks
IE0xMCBtMTApIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDEwPE0x
LCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTksCi0gICAgICBNMTA+Ojp0eXBlKAotICAg
ICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIsIG0zLCBtNCwgbTUpLAotICAgICAgOjp0ZXN0aW5n
OjpBbnlPZihtNiwgbTcsIG04LCBtOSwgbTEwKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCi0KLQotLy8gVGhlIE1BVENIRVIqIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgaW4g
YSBuYW1lc3BhY2Ugc2NvcGUgdG8KLS8vIGRlZmluZSBjdXN0b20gbWF0Y2hlcnMgZWFzaWx5Lgot
Ly8KLS8vIEJhc2ljIFVzYWdlCi0vLyA9PT09PT09PT09PQotLy8KLS8vIFRoZSBzeW50YXgKLS8v
Ci0vLyAgIE1BVENIRVIobmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0K
LS8vCi0vLyBkZWZpbmVzIGEgbWF0Y2hlciB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0
ZXMgdGhlIHN0YXRlbWVudHMsCi0vLyB3aGljaCBtdXN0IHJldHVybiBhIGJvb2wgdG8gaW5kaWNh
dGUgaWYgdGhlIG1hdGNoIHN1Y2NlZWRzLiAgSW5zaWRlCi0vLyB0aGUgc3RhdGVtZW50cywgeW91
IGNhbiByZWZlciB0byB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBieSAnYXJnJywKLS8vIGFuZCBy
ZWZlciB0byBpdHMgdHlwZSBieSAnYXJnX3R5cGUnLgotLy8KLS8vIFRoZSBkZXNjcmlwdGlvbiBz
dHJpbmcgZG9jdW1lbnRzIHdoYXQgdGhlIG1hdGNoZXIgZG9lcywgYW5kIGlzIHVzZWQKLS8vIHRv
IGdlbmVyYXRlIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2hlbiB0aGUgbWF0Y2ggZmFpbHMuICBTaW5j
ZSBhCi0vLyBNQVRDSEVSKCkgaXMgdXN1YWxseSBkZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUgc2hh
cmVkIGJ5IG11bHRpcGxlCi0vLyBDKysgc291cmNlIGZpbGVzLCB3ZSByZXF1aXJlIHRoZSBkZXNj
cmlwdGlvbiB0byBiZSBhIEMtc3RyaW5nCi0vLyBsaXRlcmFsIHRvIGF2b2lkIHBvc3NpYmxlIHNp
ZGUgZWZmZWN0cy4gIEl0IGNhbiBiZSBlbXB0eSwgaW4gd2hpY2gKLS8vIGNhc2Ugd2UnbGwgdXNl
IHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1lIGFzIHRoZQotLy8gZGVz
Y3JpcHRpb24uCi0vLwotLy8gRm9yIGV4YW1wbGU6Ci0vLwotLy8gICBNQVRDSEVSKElzRXZlbiwg
IiIpIHsgcmV0dXJuIChhcmcgJSAyKSA9PSAwOyB9Ci0vLwotLy8gYWxsb3dzIHlvdSB0byB3cml0
ZQotLy8KLS8vICAgLy8gRXhwZWN0cyBtb2NrX2Zvby5CYXIobikgdG8gYmUgY2FsbGVkIHdoZXJl
IG4gaXMgZXZlbi4KLS8vICAgRVhQRUNUX0NBTEwobW9ja19mb28sIEJhcihJc0V2ZW4oKSkpOwot
Ly8KLS8vIG9yLAotLy8KLS8vICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgb2Ygc29tZV9l
eHByZXNzaW9uIGlzIGV2ZW4uCi0vLyAgIEVYUEVDVF9USEFUKHNvbWVfZXhwcmVzc2lvbiwgSXNF
dmVuKCkpOwotLy8KLS8vIElmIHRoZSBhYm92ZSBhc3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJp
bnQgc29tZXRoaW5nIGxpa2U6Ci0vLwotLy8gICBWYWx1ZSBvZjogc29tZV9leHByZXNzaW9uCi0v
LyAgIEV4cGVjdGVkOiBpcyBldmVuCi0vLyAgICAgQWN0dWFsOiA3Ci0vLwotLy8gd2hlcmUgdGhl
IGRlc2NyaXB0aW9uICJpcyBldmVuIiBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0
aGUKLS8vIG1hdGNoZXIgbmFtZSBJc0V2ZW4uCi0vLwotLy8gQXJndW1lbnQgVHlwZQotLy8gPT09
PT09PT09PT09PQotLy8KLS8vIE5vdGUgdGhhdCB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcg
bWF0Y2hlZCAoYXJnX3R5cGUpIGlzCi0vLyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdo
aWNoIHlvdSB1c2UgdGhlIG1hdGNoZXIgYW5kIGlzCi0vLyBzdXBwbGllZCB0byB5b3UgYnkgdGhl
IGNvbXBpbGVyLCBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dAotLy8gZGVjbGFyaW5n
IGl0IChub3IgY2FuIHlvdSkuICBUaGlzIGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZQotLy8gcG9s
eW1vcnBoaWMuICBGb3IgZXhhbXBsZSwgSXNFdmVuKCkgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55
IHR5cGUKLS8vIHdoZXJlIHRoZSB2YWx1ZSBvZiAiKGFyZyAlIDIpID09IDAiIGNhbiBiZSBpbXBs
aWNpdGx5IGNvbnZlcnRlZCB0bwotLy8gYSBib29sLiAgSW4gdGhlICJCYXIoSXNFdmVuKCkpIiBl
eGFtcGxlIGFib3ZlLCBpZiBtZXRob2QgQmFyKCkKLS8vIHRha2VzIGFuIGludCwgJ2FyZ190eXBl
JyB3aWxsIGJlIGludDsgaWYgaXQgdGFrZXMgYW4gdW5zaWduZWQgbG9uZywKLS8vICdhcmdfdHlw
ZScgd2lsbCBiZSB1bnNpZ25lZCBsb25nOyBhbmQgc28gb24uCi0vLwotLy8gUGFyYW1ldGVyaXpp
bmcgTWF0Y2hlcnMKLS8vID09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gU29tZXRpbWVz
IHlvdSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSB0aGUgbWF0Y2hlci4gIEZvciB0aGF0IHlvdQot
Ly8gY2FuIHVzZSBhbm90aGVyIG1hY3JvOgotLy8KLS8vICAgTUFUQ0hFUl9QKG5hbWUsIHBhcmFt
X25hbWUsIGRlc2NyaXB0aW9uX3N0cmluZykgeyBzdGF0ZW1lbnRzOyB9Ci0vLwotLy8gRm9yIGV4
YW1wbGU6Ci0vLwotLy8gICBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUsICIiKSB7
IHJldHVybiBhYnMoYXJnKSA9PSB2YWx1ZTsgfQotLy8KLS8vIHdpbGwgYWxsb3cgeW91IHRvIHdy
aXRlOgotLy8KLS8vICAgRVhQRUNUX1RIQVQoQmxhaCgiYSIpLCBIYXNBYnNvbHV0ZVZhbHVlKG4p
KTsKLS8vCi0vLyB3aGljaCBtYXkgbGVhZCB0byB0aGlzIG1lc3NhZ2UgKGFzc3VtaW5nIG4gaXMg
MTApOgotLy8KLS8vICAgVmFsdWUgb2Y6IEJsYWgoImEiKQotLy8gICBFeHBlY3RlZDogaGFzIGFi
c29sdXRlIHZhbHVlIDEwCi0vLyAgICAgQWN0dWFsOiAtOQotLy8KLS8vIE5vdGUgdGhhdCBib3Ro
IHRoZSBtYXRjaGVyIGRlc2NyaXB0aW9uIGFuZCBpdHMgcGFyYW1ldGVyIGFyZQotLy8gcHJpbnRl
ZCwgbWFraW5nIHRoZSBtZXNzYWdlIGh1bWFuLWZyaWVuZGx5LgotLy8KLS8vIEluIHRoZSBtYXRj
aGVyIGRlZmluaXRpb24gYm9keSwgeW91IGNhbiB3cml0ZSAnZm9vX3R5cGUnIHRvCi0vLyByZWZl
cmVuY2UgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQgJ2ZvbycuICBGb3IgZXhhbXBsZSwg
aW4gdGhlCi0vLyBib2R5IG9mIE1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSkgYWJv
dmUsIHlvdSBjYW4gd3JpdGUKLS8vICd2YWx1ZV90eXBlJyB0byByZWZlciB0byB0aGUgdHlwZSBv
ZiAndmFsdWUnLgotLy8KLS8vIFdlIGFsc28gcHJvdmlkZSBNQVRDSEVSX1AyLCBNQVRDSEVSX1Az
LCAuLi4sIHVwIHRvIE1BVENIRVJfUDEwIHRvCi0vLyBzdXBwb3J0IG11bHRpLXBhcmFtZXRlciBt
YXRjaGVycy4KLS8vCi0vLyBEZXNjcmliaW5nIFBhcmFtZXRlcml6ZWQgTWF0Y2hlcnMKLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFRoZSBsYXN0IGFyZ3VtZW50
IHRvIE1BVENIRVIqKCkgaXMgYSBzdHJpbmctdHlwZWQgZXhwcmVzc2lvbi4gIFRoZQotLy8gZXhw
cmVzc2lvbiBjYW4gcmVmZXJlbmNlIGFsbCBvZiB0aGUgbWF0Y2hlcidzIHBhcmFtZXRlcnMgYW5k
IGEKLS8vIHNwZWNpYWwgYm9vbC10eXBlZCB2YXJpYWJsZSBuYW1lZCAnbmVnYXRpb24nLiAgV2hl
biAnbmVnYXRpb24nIGlzCi0vLyBmYWxzZSwgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGV2YWx1YXRl
IHRvIHRoZSBtYXRjaGVyJ3MgZGVzY3JpcHRpb247Ci0vLyBvdGhlcndpc2UgaXQgc2hvdWxkIGV2
YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbmVnYXRpb24gb2YKLS8vIHRoZSBtYXRj
aGVyLiAgRm9yIGV4YW1wbGUsCi0vLwotLy8gICB1c2luZyB0ZXN0aW5nOjpQcmludFRvU3RyaW5n
OwotLy8KLS8vICAgTUFUQ0hFUl9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLAotLy8gICAgICAg
c3RyaW5nKG5lZ2F0aW9uID8gImlzIG5vdCIgOiAiaXMiKSArICIgaW4gcmFuZ2UgWyIgKwotLy8g
ICAgICAgUHJpbnRUb1N0cmluZyhsb3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsgIl0i
KSB7Ci0vLyAgICAgcmV0dXJuIGxvdyA8PSBhcmcgJiYgYXJnIDw9IGhpOwotLy8gICB9Ci0vLyAg
IC4uLgotLy8gICBFWFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKLS8vICAgRVhQ
RUNUX1RIQVQoMywgTm90KEluQ2xvc2VkUmFuZ2UoMiwgNCkpKTsKLS8vCi0vLyB3b3VsZCBnZW5l
cmF0ZSB0d28gZmFpbHVyZXMgdGhhdCBjb250YWluIHRoZSB0ZXh0OgotLy8KLS8vICAgRXhwZWN0
ZWQ6IGlzIGluIHJhbmdlIFs0LCA2XQotLy8gICAuLi4KLS8vICAgRXhwZWN0ZWQ6IGlzIG5vdCBp
biByYW5nZSBbMiwgNF0KLS8vCi0vLyBJZiB5b3Ugc3BlY2lmeSAiIiBhcyB0aGUgZGVzY3JpcHRp
b24sIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugd2lsbAotLy8gY29udGFpbiB0aGUgc2VxdWVuY2Ugb2Yg
d29yZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBmb2xsb3dlZCBieSB0aGUKLS8vIHBhcmFtZXRlciB2
YWx1ZXMgcHJpbnRlZCBhcyBhIHR1cGxlLiAgRm9yIGV4YW1wbGUsCi0vLwotLy8gICBNQVRDSEVS
X1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksICIiKSB7IC4uLiB9Ci0vLyAgIC4uLgotLy8gICBF
WFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKLS8vICAgRVhQRUNUX1RIQVQoMywg
Tm90KEluQ2xvc2VkUmFuZ2UoMiwgNCkpKTsKLS8vCi0vLyB3b3VsZCBnZW5lcmF0ZSB0d28gZmFp
bHVyZXMgdGhhdCBjb250YWluIHRoZSB0ZXh0OgotLy8KLS8vICAgRXhwZWN0ZWQ6IGluIGNsb3Nl
ZCByYW5nZSAoNCwgNikKLS8vICAgLi4uCi0vLyAgIEV4cGVjdGVkOiBub3QgKGluIGNsb3NlZCBy
YW5nZSAoMiwgNCkpCi0vLwotLy8gVHlwZXMgb2YgTWF0Y2hlciBQYXJhbWV0ZXJzCi0vLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBGb3IgdGhlIHB1cnBvc2Ugb2YgdHlwaW5n
LCB5b3UgY2FuIHZpZXcKLS8vCi0vLyAgIE1BVENIRVJfUGsoRm9vLCBwMSwgLi4uLCBwaywgZGVz
Y3JpcHRpb25fc3RyaW5nKSB7IC4uLiB9Ci0vLwotLy8gYXMgc2hvcnRoYW5kIGZvcgotLy8KLS8v
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIHAxX3R5cGUsIC4uLiwgdHlwZW5hbWUgcGtfdHlwZT4KLS8v
ICAgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtfdHlwZT4KLS8vICAgRm9vKHAxX3R5cGUg
cDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotLy8KLS8vIFdoZW4geW91IHdyaXRlIEZvbyh2
MSwgLi4uLCB2ayksIHRoZSBjb21waWxlciBpbmZlcnMgdGhlIHR5cGVzIG9mCi0vLyB0aGUgcGFy
YW1ldGVycyB2MSwgLi4uLCBhbmQgdmsgZm9yIHlvdS4gIElmIHlvdSBhcmUgbm90IGhhcHB5IHdp
dGgKLS8vIHRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5b3UgY2FuIHNwZWNpZnkg
dGhlIHR5cGVzIGJ5Ci0vLyBleHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhlIHRlbXBsYXRlLCBh
cyBpbiBGb288bG9uZywgYm9vbD4oNSwKLS8vIGZhbHNlKS4gIEFzIHNhaWQgZWFybGllciwgeW91
IGRvbid0IGdldCB0byAob3IgbmVlZCB0bykgc3BlY2lmeQotLy8gJ2FyZ190eXBlJyBhcyB0aGF0
J3MgZGV0ZXJtaW5lZCBieSB0aGUgY29udGV4dCBpbiB3aGljaCB0aGUgbWF0Y2hlcgotLy8gaXMg
dXNlZC4gIFlvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBGb28ocDEsIC4u
LiwgcGspCi0vLyB0byBhIHZhcmlhYmxlIG9mIHR5cGUgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4u
LiwgcGtfdHlwZT4uICBUaGlzCi0vLyBjYW4gYmUgdXNlZnVsIHdoZW4gY29tcG9zaW5nIG1hdGNo
ZXJzLgotLy8KLS8vIFdoaWxlIHlvdSBjYW4gaW5zdGFudGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRl
IHdpdGggcmVmZXJlbmNlIHR5cGVzLAotLy8gcGFzc2luZyB0aGUgcGFyYW1ldGVycyBieSBwb2lu
dGVyIHVzdWFsbHkgbWFrZXMgeW91ciBjb2RlIG1vcmUKLS8vIHJlYWRhYmxlLiAgSWYsIGhvd2V2
ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3MgYSBwYXJhbWV0ZXIgYnkKLS8vIHJlZmVyZW5jZSwg
YmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRlZCBieSB0aGUKLS8v
IG1hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3Qg
YnV0IG5vdCBpdHMKLS8vIGFkZHJlc3MuCi0vLwotLy8gRXhwbGFpbmluZyBNYXRjaCBSZXN1bHRz
Ci0vLyA9PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTb21ldGltZXMgdGhlIG1hdGNo
ZXIgZGVzY3JpcHRpb24gYWxvbmUgaXNuJ3QgZW5vdWdoIHRvIGV4cGxhaW4gd2h5Ci0vLyB0aGUg
bWF0Y2ggaGFzIGZhaWxlZCBvciBzdWNjZWVkZWQuICBGb3IgZXhhbXBsZSwgd2hlbiBleHBlY3Rp
bmcgYQotLy8gbG9uZyBzdHJpbmcsIGl0IGNhbiBiZSB2ZXJ5IGhlbHBmdWwgdG8gYWxzbyBwcmlu
dCB0aGUgZGlmZiBiZXR3ZWVuCi0vLyB0aGUgZXhwZWN0ZWQgc3RyaW5nIGFuZCB0aGUgYWN0dWFs
IG9uZS4gIFRvIGFjaGlldmUgdGhhdCwgeW91IGNhbgotLy8gb3B0aW9uYWxseSBzdHJlYW0gYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiB0byBhIHNwZWNpYWwgdmFyaWFibGUKLS8vIG5hbWVkIHJlc3Vs
dF9saXN0ZW5lciwgd2hvc2UgdHlwZSBpcyBhIHBvaW50ZXIgdG8gY2xhc3MKLS8vIE1hdGNoUmVz
dWx0TGlzdGVuZXI6Ci0vLwotLy8gICBNQVRDSEVSX1AoRXF1YWxzTG9uZ1N0cmluZywgc3RyLCAi
IikgewotLy8gICAgIGlmIChhcmcgPT0gc3RyKSByZXR1cm4gdHJ1ZTsKLS8vCi0vLyAgICAgKnJl
c3VsdF9saXN0ZW5lciA8PCAidGhlIGRpZmZlcmVuY2U6ICIKLS8vLyAgICAgICAgICAgICAgICAg
ICAgIDw8IERpZmZTdHJpbmdzKHN0ciwgYXJnKTsKLS8vICAgICByZXR1cm4gZmFsc2U7Ci0vLyAg
IH0KLS8vCi0vLyBPdmVybG9hZGluZyBNYXRjaGVycwotLy8gPT09PT09PT09PT09PT09PT09PT0K
LS8vCi0vLyBZb3UgY2FuIG92ZXJsb2FkIG1hdGNoZXJzIHdpdGggZGlmZmVyZW50IG51bWJlcnMg
b2YgcGFyYW1ldGVyczoKLS8vCi0vLyAgIE1BVENIRVJfUChCbGFoLCBhLCBkZXNjcmlwdGlvbl9z
dHJpbmcxKSB7IC4uLiB9Ci0vLyAgIE1BVENIRVJfUDIoQmxhaCwgYSwgYiwgZGVzY3JpcHRpb25f
c3RyaW5nMikgeyAuLi4gfQotLy8KLS8vIENhdmVhdHMKLS8vID09PT09PT0KLS8vCi0vLyBXaGVu
IGRlZmluaW5nIGEgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBpbXBsZW1l
bnRpbmcKLS8vIE1hdGNoZXJJbnRlcmZhY2Ugb3IgdXNpbmcgTWFrZVBvbHltb3JwaGljTWF0Y2hl
cigpLiAgVGhlc2UKLS8vIGFwcHJvYWNoZXMgcmVxdWlyZSBtb3JlIHdvcmsgdGhhbiB0aGUgTUFU
Q0hFUiogbWFjcm9zLCBidXQgYWxzbwotLy8gZ2l2ZSB5b3UgbW9yZSBjb250cm9sIG9uIHRoZSB0
eXBlcyBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQKLS8vIHRoZSBtYXRjaGVyIHBhcmFt
ZXRlcnMsIHdoaWNoIG1heSBsZWFkcyB0byBiZXR0ZXIgY29tcGlsZXIgZXJyb3IKLS8vIG1lc3Nh
Z2VzIHdoZW4gdGhlIG1hdGNoZXIgaXMgdXNlZCB3cm9uZy4gIFRoZXkgYWxzbyBhbGxvdwotLy8g
b3ZlcmxvYWRpbmcgbWF0Y2hlcnMgYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2Vk
IHRvIGp1c3QKLS8vIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycykuCi0vLwotLy8g
TUFUQ0hFUiooKSBjYW4gb25seSBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlLiAgVGhlIHJl
YXNvbiBpcwotLy8gdGhhdCBDKysgZG9lc24ndCB5ZXQgYWxsb3cgZnVuY3Rpb24tbG9jYWwgdHlw
ZXMgdG8gYmUgdXNlZCB0bwotLy8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAgVGhlIHVwLWNvbWlu
ZyBDKysweCBzdGFuZGFyZCB3aWxsIGZpeCB0aGlzLgotLy8gT25jZSB0aGF0J3MgZG9uZSwgd2Un
bGwgY29uc2lkZXIgc3VwcG9ydGluZyB1c2luZyBNQVRDSEVSKigpIGluc2lkZQotLy8gYSBmdW5j
dGlvbi4KLS8vCi0vLyBNb3JlIEluZm9ybWF0aW9uCi0vLyA9PT09PT09PT09PT09PT09Ci0vLwot
Ly8gVG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGVzZSBtYWNyb3MsIHBsZWFzZSBzZWFyY2gg
Zm9yICdNQVRDSEVSJwotLy8gb24gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2sv
d2lraS9Db29rQm9vay4KLQotI2RlZmluZSBNQVRDSEVSKG5hbWUsIGRlc2NyaXB0aW9uKVwKLSAg
Y2xhc3MgbmFtZSMjTWF0Y2hlciB7XAotICAgcHVibGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgYXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpN
YXRjaGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgZ21vY2tf
SW1wbCgpXAotICAgICAgICAgICB7fVwKLSAgICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxh
aW4oXAotICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3Rl
bmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29z
IDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCi0gICAgICB9XAotICAgICAgdmlydHVhbCB2
b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtc
Ci0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbih0cnVlKTtcCi0gICAgICB9
XAotICAgICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3Jt
YXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBjb25zdCA6OnRl
c3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24p
O1wKLSAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAgICAgICAgICBy
ZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRl
cm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5lZ2F0aW9uLCAj
bmFtZSwgXAotICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1
cGxlPD4oKSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2Nr
X0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAg
IG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBnbW9j
a19JbXBsPGFyZ190eXBlPigpKTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVyKCkge1wKLSAg
ICB9XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNNYXRj
aGVyKTtcCi0gIH07XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlciBuYW1lKCkge1wKLSAgICByZXR1
cm4gbmFtZSMjTWF0Y2hlcigpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBl
PlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVyOjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRF
eHBsYWluKFwKLSAgICAgIGFyZ190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJl
c3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAot
ICAgICAgICAgIGNvbnN0Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QKG5hbWUsIHAwLCBkZXNjcmlwdGlv
bilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNNYXRj
aGVyUCB7XAotICAgcHVibGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAot
ICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNl
PGFyZ190eXBlPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgZXhwbGljaXQgZ21vY2tfSW1wbChw
MCMjX3R5cGUgZ21vY2tfcDApXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSB7fVwKLSAgICAg
IHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgICAgIGFyZ190eXBlIGFyZywg
Ojp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wK
LSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykg
Y29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtc
Ci0gICAgICB9XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6
b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXRE
ZXNjcmlwdGlvbih0cnVlKTtcCi0gICAgICB9XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAg
cHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3Jp
cHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCi0gICAg
ICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAgICAgICAgcmV0dXJuIGdt
b2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZv
cm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwK
LSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMj
X3R5cGU+KHAwKSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdt
b2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAot
ICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBn
bW9ja19JbXBsPGFyZ190eXBlPihwMCkpO1wKLSAgICB9XAotICAgIGV4cGxpY2l0IG5hbWUjI01h
dGNoZXJQKHAwIyNfdHlwZSBnbW9ja19wMCkgOiBwMChnbW9ja19wMCkge1wKLSAgICB9XAotICAg
IHAwIyNfdHlwZSBwMDtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KG5hbWUjI01hdGNoZXJQKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBl
PlwKLSAgaW5saW5lIG5hbWUjI01hdGNoZXJQPHAwIyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAp
IHtcCi0gICAgcmV0dXJuIG5hbWUjI01hdGNoZXJQPHAwIyNfdHlwZT4ocDApO1wKLSAgfVwKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdf
dHlwZT5cCi0gIGJvb2wgbmFtZSMjTWF0Y2hlclA8cDAjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdf
dHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCi0gICAgICBhcmdfdHlwZSBhcmcsIFwKLSAgICAgIDo6
dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJ
QlVURV9VTlVTRURfKVwKLSAgICAgICAgICBjb25zdAotCi0jZGVmaW5lIE1BVENIRVJfUDIobmFt
ZSwgcDAsIHAxLCBkZXNjcmlwdGlvbilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUs
IHR5cGVuYW1lIHAxIyNfdHlwZT5cCi0gIGNsYXNzIG5hbWUjI01hdGNoZXJQMiB7XAotICAgcHVi
bGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2Nr
X0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAot
ICAgICBwdWJsaWM6XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNf
dHlwZSBnbW9ja19wMSlcCi0gICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSkg
e31cCi0gICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdf
dHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVy
KSBjb25zdDtcCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSog
Z21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlv
bihmYWxzZSk7XAotICAgICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3Mg
PDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBw
MDtcCi0gICAgICBwMSMjX3R5cGUgcDE7XAotICAgICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25z
dCB7XAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVz
Y3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKLSAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlv
bi5lbXB0eSgpKVwKLSAgICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAotICAgICAg
ICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwK
LSAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAotICAgICAgICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAg
ICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlPihwMCwgcDEp
KSk7XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7
XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgb3BlcmF0
b3IgOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0ltcGw8
YXJnX3R5cGU+KHAwLCBwMSkpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNoZXJQMihwMCMjX3R5
cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSkgOiBwMChnbW9ja19wMCksIFwKLSAgICAg
ICAgcDEoZ21vY2tfcDEpIHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNf
dHlwZSBwMTtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUj
I01hdGNoZXJQMik7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlw
ZW5hbWUgcDEjI190eXBlPlwKLSAgaW5saW5lIG5hbWUjI01hdGNoZXJQMjxwMCMjX3R5cGUsIHAx
IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKLSAgICAgIHAxIyNfdHlwZSBwMSkge1wKLSAg
ICByZXR1cm4gbmFtZSMjTWF0Y2hlclAyPHAwIyNfdHlwZSwgcDEjI190eXBlPihwMCwgcDEpO1wK
LSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBl
PlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVy
UDI8cDAjI190eXBlLCBcCi0gICAgICBwMSMjX3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6
TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgIGFyZ190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5n
OjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VO
VVNFRF8pXAotICAgICAgICAgIGNvbnN0Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QMyhuYW1lLCBwMCwg
cDEsIHAyLCBkZXNjcmlwdGlvbilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0
Y2hlclAzIHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5c
Ci0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZh
Y2U8YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlw
ZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIpXAotICAg
ICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMikge31cCi0g
ICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdfdHlwZSBh
cmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25z
dDtcCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tf
b3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxz
ZSk7XAotICAgICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpz
dGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9y
bWF0RGVzY3JpcHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0g
ICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgcHJpdmF0ZTpc
Ci0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3JpcHRpb24oYm9v
bCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCi0gICAgICAgIGlmICgh
Z21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAgICAgICAgcmV0dXJuIGdtb2NrX2Rlc2Ny
aXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNo
ZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwKLSAgICAgICAg
ICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAx
IyNfdHlwZSwgcDIjI190eXBlPihwMCwgcDEsIFwKLSAgICAgICAgICAgICAgICAgICAgcDIpKSk7
XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAot
ICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgb3BlcmF0b3Ig
Ojp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJn
X3R5cGU+KHAwLCBwMSwgcDIpKTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVyUDMocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdt
b2NrX3AyKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMikge1wKLSAg
ICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5
cGUgcDI7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNN
YXRjaGVyUDMpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVu
YW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlPlwKLSAgaW5saW5lIG5hbWUjI01hdGNo
ZXJQMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwg
XAotICAgICAgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIpIHtcCi0gICAgcmV0dXJuIG5hbWUj
I01hdGNoZXJQMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlPihwMCwgcDEsIHAyKTtc
Ci0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlw
ZSwgdHlwZW5hbWUgcDIjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwK
LSAgYm9vbCBuYW1lIyNNYXRjaGVyUDM8cDAjI190eXBlLCBwMSMjX3R5cGUsIFwKLSAgICAgIHAy
IyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAotICAgICAg
YXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJl
c3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAgICAgY29uc3QK
LQotI2RlZmluZSBNQVRDSEVSX1A0KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBkZXNjcmlwdGlvbilc
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGU+XAotICBjbGFzcyBu
YW1lIyNNYXRjaGVyUDQge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
Z190eXBlPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hl
ckludGVyZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwo
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19w
MiwgXAotICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMylcCi0gICAgICAgICAgIDogcDAoZ21v
Y2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpIHt9XAotICAg
ICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJn
LCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7
XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29z
KSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2Up
O1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3Rk
Ojpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1h
dERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAg
ICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUg
cDM7XAotICAgICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBG
b3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBjb25zdCA6
OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRp
b24pO1wKLSAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAgICAgICAg
ICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5lZ2F0aW9u
LCAjbmFtZSwgXAotICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVy
c2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIFwKLSAgICAgICAgICAgICAg
ICAgICAgcDMjI190eXBlPihwMCwgcDEsIHAyLCBwMykpKTtcCi0gICAgICB9XAotICAgICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJn
X3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5
cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwgcDMp
KTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVyUDQocDAjI190eXBlIGdtb2NrX3AwLCBwMSMj
X3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUg
Z21vY2tfcDMpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIFwKLSAgICAgICAgcDIoZ21v
Y2tfcDIpLCBwMyhnbW9ja19wMykge1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAg
cDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0g
ICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXJQNCk7
XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190
eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZT5cCi0g
IGlubGluZSBuYW1lIyNNYXRjaGVyUDQ8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwg
XAotICAgICAgcDMjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgcDEjI190eXBlIHAxLCBwMiMj
X3R5cGUgcDIsIFwKLSAgICAgIHAzIyNfdHlwZSBwMykge1wKLSAgICByZXR1cm4gbmFtZSMjTWF0
Y2hlclA0PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZT4ocDAsIFwK
LSAgICAgICAgcDEsIHAyLCBwMyk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190
eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlw
ZW5hbWUgcDMjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgYm9v
bCBuYW1lIyNNYXRjaGVyUDQ8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgXAotICAg
ICAgcDMjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCi0g
ICAgICBhcmdfdHlwZSBhcmcsIFwKLSAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5l
ciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKLSAgICAgICAgICBj
b25zdAotCi0jZGVmaW5lIE1BVENIRVJfUDUobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBkZXNj
cmlwdGlvbilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNf
dHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5
cGVuYW1lIHA0IyNfdHlwZT5cCi0gIGNsYXNzIG5hbWUjI01hdGNoZXJQNSB7XAotICAgcHVibGlj
OlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2NrX0lt
cGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAotICAg
ICBwdWJsaWM6XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlw
ZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdt
b2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQpXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwg
cDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAgICAgICAgICAg
ICAgcDQoZ21vY2tfcDQpIHt9XAotICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihc
Ci0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIq
IHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwg
Rm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAg
ICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAgIH1cCi0g
ICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlw
ZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAgcDQjI190eXBlIHA0O1wKLSAgICAg
cHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3Jp
cHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCi0gICAg
ICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAgICAgICAgcmV0dXJuIGdt
b2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZv
cm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwK
LSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMj
X3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgICAgICAg
ICAgICAgcDQjI190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQpKSk7XAotICAgICAgfVwKLSAgICAg
IEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgb3BlcmF0b3IgOjp0ZXN0aW5nOjpNYXRjaGVy
PGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpNYXRjaGVyPGFy
Z190eXBlPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJnX3R5cGU+KHAwLCBwMSwgcDIs
IHAzLCBwNCkpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNoZXJQNShwMCMjX3R5cGUgZ21vY2tf
cDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAotICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAz
IyNfdHlwZSBnbW9ja19wMywgXAotICAgICAgICBwNCMjX3R5cGUgZ21vY2tfcDQpIDogcDAoZ21v
Y2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19w
MyksIHA0KGdtb2NrX3A0KSB7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAgICBwMSMj
X3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wKLSAgICBw
NCMjX3R5cGUgcDQ7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhu
YW1lIyNNYXRjaGVyUDUpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUs
IHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNNYXRjaGVy
UDU8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBw
NCMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwg
cDMjI190eXBlIHAzLCBcCi0gICAgICBwNCMjX3R5cGUgcDQpIHtcCi0gICAgcmV0dXJuIG5hbWUj
I01hdGNoZXJQNTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwK
LSAgICAgICAgcDQjI190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQpO1wKLSAgfVwKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMj
X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlPlwK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVyUDU8
cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMj
X3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgIGFy
Z190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1
bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAgIGNvbnN0Ci0K
LSNkZWZpbmUgTUFUQ0hFUl9QNihuYW1lLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBkZXNjcmlw
dGlvbilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlw
ZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVu
YW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0Y2hl
clA2IHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0g
ICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8
YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBn
bW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAg
ICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdt
b2NrX3A1KVwKLSAgICAgICAgICAgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21v
Y2tfcDIpLCBwMyhnbW9ja19wMyksIFwKLSAgICAgICAgICAgICAgIHA0KGdtb2NrX3A0KSwgcDUo
Z21vY2tfcDUpIHt9XAotICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAg
ICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3Vs
dF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0
RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3Jp
YmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAg
Kmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBw
MCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtc
Ci0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAgcDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNf
dHlwZSBwNTtcCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3Ry
aW5nIEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0gICAgICAgIGNv
bnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNj
cmlwdGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAotICAg
ICAgICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAgICAgICAgbmVn
YXRpb24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJz
YWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6dHVwbGU8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBc
Ci0gICAgICAgICAgICAgICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlPihwMCwgcDEsIHAyLCBw
MywgcDQsIHA1KSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdt
b2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAot
ICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBn
bW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSk7XAotICAgIH1cCi0g
ICAgbmFtZSMjTWF0Y2hlclA2KHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3Ax
LCBcCi0gICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMj
X3R5cGUgZ21vY2tfcDQsIFwKLSAgICAgICAgcDUjI190eXBlIGdtb2NrX3A1KSA6IHAwKGdtb2Nr
X3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAgcDMoZ21vY2tfcDMp
LCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSB7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAw
O1wKLSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBl
IHAzO1wKLSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNfdHlwZSBwNTtcCi0gICBwcml2YXRl
OlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXJQNik7XAotICB9O1wK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBl
bmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQj
I190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlclA2PHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQjI190
eXBlLCBwNSMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlw
ZSBwMiwgXAotICAgICAgcDMjI190eXBlIHAzLCBwNCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSkg
e1wKLSAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclA2PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMj
X3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZT4ocDAsIHAx
LCBwMiwgcDMsIHA0LCBwNSk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBl
LCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5h
bWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZT5cCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gIGJvb2wgbmFtZSMjTWF0Y2hlclA2PHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCi0g
ICAgICBwNSMjX3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwK
LSAgICAgIGFyZ190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3Rl
bmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAg
IGNvbnN0Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QNyhuYW1lLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNiwgZGVzY3JpcHRpb24pXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAg
dHlwZW5hbWUgcDYjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0Y2hlclA3IHtcCi0gICBwdWJs
aWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgY2xhc3MgZ21vY2tf
SW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCi0g
ICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190
eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUg
Z21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAg
ICAgICAgcDYjI190eXBlIGdtb2NrX3A2KVwKLSAgICAgICAgICAgOiBwMChnbW9ja19wMCksIHAx
KGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMyksIFwKLSAgICAgICAgICAgICAg
IHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNikge31cCi0gICAgICB2aXJ0
dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVz
dGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCi0gICAg
ICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0
IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAotICAg
ICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJl
YW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3Jp
cHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMj
X3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0g
ICAgICBwNCMjX3R5cGUgcDQ7XAotICAgICAgcDUjI190eXBlIHA1O1wKLSAgICAgIHA2IyNfdHlw
ZSBwNjtcCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5n
IEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0gICAgICAgIGNvbnN0
IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlw
dGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAotICAgICAg
ICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAgICAgICAgbmVnYXRp
b24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6dHVwbGU8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0g
ICAgICAgICAgICAgICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGU+KHAwLCBw
MSwgcDIsIHAzLCBwNCwgcDUsIFwKLSAgICAgICAgICAgICAgICAgICAgcDYpKSk7XAotICAgICAg
fVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgb3BlcmF0b3IgOjp0ZXN0aW5n
OjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpN
YXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0ltcGw8YXJnX3R5cGU+KHAw
LCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KSk7XAotICAgIH1cCi0gICAgbmFtZSMjTWF0Y2hlclA3
KHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNf
dHlwZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwK
LSAgICAgICAgcDUjI190eXBlIGdtb2NrX3A1LCBwNiMjX3R5cGUgZ21vY2tfcDYpIDogcDAoZ21v
Y2tfcDApLCBwMShnbW9ja19wMSksIFwKLSAgICAgICAgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19w
MyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBcCi0gICAgICAgIHA2KGdtb2NrX3A2KSB7
XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAy
IyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wKLSAgICBwNCMjX3R5cGUgcDQ7XAotICAg
IHA1IyNfdHlwZSBwNTtcCi0gICAgcDYjI190eXBlIHA2O1wKLSAgIHByaXZhdGU6XAotICAgIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA3KTtcCi0gIH07XAotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5
cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlPlwKLSAgaW5saW5l
IG5hbWUjI01hdGNoZXJQNzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5
cGUsIFwKLSAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGU+IG5hbWUocDAjI190
eXBlIHAwLCBwMSMjX3R5cGUgcDEsIFwKLSAgICAgIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAz
LCBwNCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgXAotICAgICAgcDYjI190eXBlIHA2KSB7XAot
ICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDc8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlw
ZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGU+
KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0g
ICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUj
I190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgYXJnX3R5cGU+XAotICBib29sIG5hbWUjI01hdGNoZXJQNzxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgICAgcDUjI190eXBlLCBw
NiMjX3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAg
IGFyZ190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiBy
ZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAgIGNvbnN0
Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QOChuYW1lLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwg
cDcsIGRlc2NyaXB0aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5
cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0
Y2hlclA4IHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5c
Ci0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZh
Y2U8YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlw
ZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAg
ICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBl
IGdtb2NrX3A1LCBcCi0gICAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21v
Y2tfcDcpXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9j
a19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAgICAgICAgICAgICAgcDQoZ21vY2tfcDQpLCBwNShn
bW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDcoZ21vY2tfcDcpIHt9XAotICAgICAgdmlydHVhbCBi
b29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6
Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmly
dHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAot
ICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1c
Ci0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBn
bW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9u
KHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBl
IHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAg
cDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgICBwNiMjX3R5cGUgcDY7
XAotICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qg
e1wKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2Ny
aXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCi0gICAgICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24u
ZW1wdHkoKSlcCi0gICAgICAgICAgcmV0dXJuIGdtb2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0g
ICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwKLSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBl
LCBwMyMjX3R5cGUsIFwKLSAgICAgICAgICAgICAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUs
IHA2IyNfdHlwZSwgcDcjI190eXBlPihwMCwgcDEsIHAyLCBcCi0gICAgICAgICAgICAgICAgICAg
IHAzLCBwNCwgcDUsIHA2LCBwNykpKTtcCi0gICAgICB9XAotICAgICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
Z190eXBlPlwKLSAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29u
c3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwKLSAgICAg
ICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYs
IHA3KSk7XAotICAgIH1cCi0gICAgbmFtZSMjTWF0Y2hlclA4KHAwIyNfdHlwZSBnbW9ja19wMCwg
cDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMiwgcDMjI190
eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwKLSAgICAgICAgcDUjI190eXBlIGdt
b2NrX3A1LCBwNiMjX3R5cGUgZ21vY2tfcDYsIFwKLSAgICAgICAgcDcjI190eXBlIGdtb2NrX3A3
KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAg
cDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBc
Ci0gICAgICAgIHA3KGdtb2NrX3A3KSB7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAg
ICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wK
LSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgcDYjI190eXBlIHA2
O1wKLSAgICBwNyMjX3R5cGUgcDc7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhuYW1lIyNNYXRjaGVyUDgpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBw
MCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAg
ICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190
eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZT5cCi0g
IGlubGluZSBuYW1lIyNNYXRjaGVyUDg8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwg
cDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMj
X3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBcCi0gICAgICBwMSMjX3R5cGUgcDEsIHAyIyNfdHlw
ZSBwMiwgcDMjI190eXBlIHAzLCBwNCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgXAotICAgICAg
cDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcpIHtcCi0gICAgcmV0dXJuIG5hbWUjI01hdGNoZXJQ
ODxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAg
cDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlPihwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBcCi0gICAgICAgIHA2LCBwNyk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAot
ICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1
IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGU+
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBib29sIG5hbWUjI01hdGNoZXJQ
ODxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwg
XAotICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGUsIFwKLSAgICAgIHA3IyNfdHlwZT46Omdtb2Nr
X0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgYXJnX3R5cGUgYXJnLCBc
Ci0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBH
VEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAgICAgY29uc3QKLQotI2RlZmluZSBNQVRD
SEVSX1A5KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIGRlc2NyaXB0
aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBl
LCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5h
bWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNf
dHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGU+XAotICBjbGFzcyBu
YW1lIyNNYXRjaGVyUDkge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
Z190eXBlPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hl
ckludGVyZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwo
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19w
MiwgXAotICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBw
NSMjX3R5cGUgZ21vY2tfcDUsIFwKLSAgICAgICAgICBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNf
dHlwZSBnbW9ja19wNywgcDgjI190eXBlIGdtb2NrX3A4KVwKLSAgICAgICAgICAgOiBwMChnbW9j
a19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMyksIFwKLSAgICAg
ICAgICAgICAgIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdt
b2NrX3A3KSwgXAotICAgICAgICAgICAgICAgcDgoZ21vY2tfcDgpIHt9XAotICAgICAgdmlydHVh
bCBib29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rp
bmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAg
dmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7
XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAg
IH1cCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFt
KiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0
aW9uKHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190
eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAg
ICAgcDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgICBwNiMjX3R5cGUg
cDY7XAotICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgIHA4IyNfdHlwZSBwODtcCi0gICAgIHBy
aXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0
aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0gICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50
ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlwdGlvbik7XAotICAgICAg
ICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAotICAgICAgICAgIHJldHVybiBnbW9j
a19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3Jt
YXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAgICAgICAgbmVnYXRpb24sICNuYW1lLCBcCi0g
ICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVG
aWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6dHVwbGU8cDAjI190
eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgICAgICAgICAg
ICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgXAotICAgICAg
ICAgICAgICAgICAgICBwOCMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywg
cDgpKSk7XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1w
bCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgb3Bl
cmF0b3IgOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAgICByZXR1
cm4gOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0lt
cGw8YXJnX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpKTtcCi0gICAg
fVwKLSAgICBuYW1lIyNNYXRjaGVyUDkocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21v
Y2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMs
IHA0IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNf
dHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBcCi0gICAgICAgIHA4IyNfdHlwZSBn
bW9ja19wOCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0g
ICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2Nr
X3A2KSwgcDcoZ21vY2tfcDcpLCBcCi0gICAgICAgIHA4KGdtb2NrX3A4KSB7XAotICAgIH1cCi0g
ICAgcDAjI190eXBlIHAwO1wKLSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtc
Ci0gICAgcDMjI190eXBlIHAzO1wKLSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNfdHlwZSBw
NTtcCi0gICAgcDYjI190eXBlIHA2O1wKLSAgICBwNyMjX3R5cGUgcDc7XAotICAgIHA4IyNfdHlw
ZSBwODtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01h
dGNoZXJQOSk7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5
cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGU+
XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlclA5PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5
cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwg
cDcjI190eXBlLCBcCi0gICAgICBwOCMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5
cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBcCi0gICAgICBwNCMjX3R5cGUgcDQs
IHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIFwKLSAgICAgIHA4IyNf
dHlwZSBwOCkge1wKLSAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclA5PHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlw
ZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZT4ocDAsIHAxLCBwMiwgXAotICAgICAg
ICBwMywgcDQsIHA1LCBwNiwgcDcsIHA4KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBw
MCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAg
ICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190
eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlw
ZW5hbWUgcDgjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgYm9v
bCBuYW1lIyNNYXRjaGVyUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190
eXBlLCBwNCMjX3R5cGUsIFwKLSAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUs
IFwKLSAgICAgIHA4IyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxh
aW4oXAotICAgICAgYXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0
TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAg
ICAgICAgY29uc3QKLQotI2RlZmluZSBNQVRDSEVSX1AxMChuYW1lLCBwMCwgcDEsIHAyLCBwMywg
cDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgZGVzY3JpcHRpb24pXAotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAot
ICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1
IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUs
IHR5cGVuYW1lIHA4IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDkjI190eXBlPlwKLSAgY2xh
c3MgbmFtZSMjTWF0Y2hlclAxMCB7XAotICAgcHVibGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgYXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpN
YXRjaGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgZ21vY2tf
SW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdt
b2NrX3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tf
cDQsIHA1IyNfdHlwZSBnbW9ja19wNSwgXAotICAgICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNiwg
cDcjI190eXBlIGdtb2NrX3A3LCBwOCMjX3R5cGUgZ21vY2tfcDgsIFwKLSAgICAgICAgICBwOSMj
X3R5cGUgZ21vY2tfcDkpXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEp
LCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAgICAgICAgICAgICAgcDQoZ21vY2tf
cDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDcoZ21vY2tfcDcpLCBcCi0gICAgICAg
ICAgICAgICBwOChnbW9ja19wOCksIHA5KGdtb2NrX3A5KSB7fVwKLSAgICAgIHZpcnR1YWwgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0ZXN0aW5nOjpN
YXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKLSAgICAgIHZpcnR1
YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAg
ICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCi0gICAgICB9XAot
ICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogZ21v
Y2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbih0
cnVlKTtcCi0gICAgICB9XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAgIHAxIyNfdHlwZSBw
MTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICAgcDMjI190eXBlIHAzO1wKLSAgICAgIHA0
IyNfdHlwZSBwNDtcCi0gICAgICBwNSMjX3R5cGUgcDU7XAotICAgICAgcDYjI190eXBlIHA2O1wK
LSAgICAgIHA3IyNfdHlwZSBwNztcCi0gICAgICBwOCMjX3R5cGUgcDg7XAotICAgICAgcDkjI190
eXBlIHA5O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJp
bmcgRm9ybWF0RGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29u
c3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2Ny
aXB0aW9uKTtcCi0gICAgICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAg
ICAgICAgcmV0dXJuIGdtb2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdh
dGlvbiwgI25hbWUsIFwKLSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwK
LSAgICAgICAgICAgICAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcj
I190eXBlLCBwOCMjX3R5cGUsIFwKLSAgICAgICAgICAgICAgICAgICAgcDkjI190eXBlPihwMCwg
cDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSkpKTtcCi0gICAgICB9XAotICAgICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8
YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJn
X3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDkpKTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVy
UDEwKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAy
IyNfdHlwZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQs
IFwKLSAgICAgICAgcDUjI190eXBlIGdtb2NrX3A1LCBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNf
dHlwZSBnbW9ja19wNywgXAotICAgICAgICBwOCMjX3R5cGUgZ21vY2tfcDgsIHA5IyNfdHlwZSBn
bW9ja19wOSkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAotICAgICAgICBwMihnbW9j
a19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2Nr
X3A2KSwgXAotICAgICAgICBwNyhnbW9ja19wNyksIHA4KGdtb2NrX3A4KSwgcDkoZ21vY2tfcDkp
IHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAg
cDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0g
ICAgcDUjI190eXBlIHA1O1wKLSAgICBwNiMjX3R5cGUgcDY7XAotICAgIHA3IyNfdHlwZSBwNztc
Ci0gICAgcDgjI190eXBlIHA4O1wKLSAgICBwOSMjX3R5cGUgcDk7XAotICAgcHJpdmF0ZTpcCi0g
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNNYXRjaGVyUDEwKTtcCi0gIH07XAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1l
IHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5
cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBl
bmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDkj
I190eXBlPlwKLSAgaW5saW5lIG5hbWUjI01hdGNoZXJQMTA8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYj
I190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwgXAotICAgICAgcDkjI190eXBlPiBuYW1lKHAw
IyNfdHlwZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgXAot
ICAgICAgcDQjI190eXBlIHA0LCBwNSMjX3R5cGUgcDUsIHA2IyNfdHlwZSBwNiwgcDcjI190eXBl
IHA3LCBwOCMjX3R5cGUgcDgsIFwKLSAgICAgIHA5IyNfdHlwZSBwOSkge1wKLSAgICByZXR1cm4g
bmFtZSMjTWF0Y2hlclAxMDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5
cGUsIFwKLSAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBl
LCBwOCMjX3R5cGUsIHA5IyNfdHlwZT4ocDAsIFwKLSAgICAgICAgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNiwgcDcsIHA4LCBwOSk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBl
LCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5h
bWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAot
ICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4
IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDkjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIGFyZ190eXBlPlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVyUDEwPHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUs
IHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUsIFwKLSAgICAgIHA5IyNfdHlwZT46Omdt
b2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgYXJnX3R5cGUgYXJn
LCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5l
ciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAgICAgY29uc3QKLQotI2VuZGlmICAv
LyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9NQVRDSEVSU19IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMu
aC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hl
cnMuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTMwYzJjOTJiYWMyMTQz
ZjBmOTAxMjc5YTdhNzdjZTVlODNjNThmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVk
LW1hdGNoZXJzLmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0xLDY3MiArMCwwIEBACi0kJCAtKi0g
bW9kZTogYysrOyAtKi0KLSQkIFRoaXMgaXMgYSBQdW1wIHNvdXJjZSBmaWxlLiAgUGxlYXNlIHVz
ZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KLSQkIGdtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmguCi0k
JAotJHZhciBuID0gMTAgICQkIFRoZSBtYXhpbXVtIGFyaXR5IHdlIHN1cHBvcnQuCi0kJCB9fSBU
aGlzIGxpbmUgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvZGUgaW4g
RW1hY3MuCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8v
IEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4K
LS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIGNvbW1vbmx5IHVzZWQgdmFyaWFkaWMg
bWF0Y2hlcnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURf
TUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURf
TUFUQ0hFUlNfSF8KLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJnbW9jay9nbW9j
ay1tYXRjaGVycy5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwg
ewotCi0kcmFuZ2UgaSAwLi5uLTEKLQotLy8gVGhlIHR5cGUgb2YgdGhlIGktdGggKDAtYmFzZWQp
IGZpZWxkIG9mIFR1cGxlLgotI2RlZmluZSBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgaSkgXAot
ICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6dHVwbGVfZWxlbWVudDxpLCBUdXBsZT46OnR5cGUKLQot
Ly8gVHVwbGVGaWVsZHM8VHVwbGUsIGswLCAuLi4sIGtuPiBpcyBmb3Igc2VsZWN0aW5nIGZpZWxk
cyBmcm9tIGEKLS8vIHR1cGxlIG9mIHR5cGUgVHVwbGUuICBJdCBoYXMgdHdvIG1lbWJlcnM6Ci0v
LwotLy8gICB0eXBlOiBhIHR1cGxlIHR5cGUgd2hvc2UgaS10aCBmaWVsZCBpcyB0aGUga2ktdGgg
ZmllbGQgb2YgVHVwbGUuCi0vLyAgIEdldFNlbGVjdGVkRmllbGRzKHQpOiByZXR1cm5zIGZpZWxk
cyBrMCwgLi4uLCBhbmQga24gb2YgdCBhcyBhIHR1cGxlLgotLy8KLS8vIEZvciBleGFtcGxlLCBp
biBjbGFzcyBUdXBsZUZpZWxkczx0dXBsZTxib29sLCBjaGFyLCBpbnQ+LCAyLCAwPiwgd2UgaGF2
ZToKLS8vCi0vLyAgIHR5cGUgaXMgdHVwbGU8aW50LCBib29sPiwgYW5kCi0vLyAgIEdldFNlbGVj
dGVkRmllbGRzKG1ha2VfdHVwbGUodHJ1ZSwgJ2EnLCA0MikpIGlzICg0MiwgdHJ1ZSkuCi0KLXRl
bXBsYXRlIDxjbGFzcyBUdXBsZSRmb3IgaSBbWywgaW50IGskaSA9IC0xXV0+Ci1jbGFzcyBUdXBs
ZUZpZWxkczsKLQotLy8gVGhpcyBnZW5lcmljIHZlcnNpb24gaXMgdXNlZCB3aGVuIHRoZXJlIGFy
ZSAkbiBzZWxlY3RvcnMuCi10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUkZm9yIGkgW1ssIGludCBrJGld
XT4KLWNsYXNzIFR1cGxlRmllbGRzIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0
dXBsZTwkZm9yIGksIFtbR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGskaSldXT4gdHlwZTsKLSAg
c3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICByZXR1
cm4gdHlwZSgkZm9yIGksIFtbZ2V0PGskaT4odCldXSk7Ci0gIH0KLX07Ci0KLS8vIFRoZSBmb2xs
b3dpbmcgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCBmb3IgMCB+ICQobi0xKSBzZWxlY3RvcnMuCi0K
LSRmb3IgaSBbWwotJCQgfX19Ci0kcmFuZ2UgaiAwLi5pLTEKLSRyYW5nZSBrIDAuLm4tMQotCi10
ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUkZm9yIGogW1ssIGludCBrJGpdXT4KLWNsYXNzIFR1cGxlRmll
bGRzPFR1cGxlLCAkZm9yIGssIFtbJGlmIGsgPCBpIFtbayRrXV0gJGVsc2UgW1stMV1dXV0+IHsK
LSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbR01PQ0tfRklF
TERfVFlQRV8oVHVwbGUsIGskaildXT4gdHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRG
aWVsZHMoY29uc3QgVHVwbGUmICRpZiBpPT0wIFtbLyogdCAqL11dICRlbHNlIFtbdF1dKSB7Ci0g
ICAgcmV0dXJuIHR5cGUoJGZvciBqLCBbW2dldDxrJGo+KHQpXV0pOwotICB9Ci19OwotCi1dXQot
Ci0jdW5kZWYgR01PQ0tfRklFTERfVFlQRV8KLQotLy8gSW1wbGVtZW50cyB0aGUgQXJncygpIG1h
dGNoZXIuCi0KLSR2YXIga3MgPSBbWyRmb3IgaSwgW1trJGldXV1dCi10ZW1wbGF0ZSA8Y2xhc3Mg
QXJnc1R1cGxlJGZvciBpIFtbLCBpbnQgayRpID0gLTFdXT4KLWNsYXNzIEFyZ3NNYXRjaGVySW1w
bCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPEFyZ3NUdXBsZT4gewotIHB1YmxpYzoKLSAgLy8g
QXJnc1R1cGxlIG1heSBoYXZlIHRvcC1sZXZlbCBjb25zdCBvciByZWZlcmVuY2UgbW9kaWZpZXJz
LgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhBcmdzVHVwbGUp
IFJhd0FyZ3NUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6VHVwbGVGaWVsZHM8
UmF3QXJnc1R1cGxlLCAka3M+Ojp0eXBlIFNlbGVjdGVkQXJnczsKLSAgdHlwZWRlZiBNYXRjaGVy
PGNvbnN0IFNlbGVjdGVkQXJncyY+IE1vbm9tb3JwaGljSW5uZXJNYXRjaGVyOwotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVySW1wbChj
b25zdCBJbm5lck1hdGNoZXImIGlubmVyX21hdGNoZXIpCi0gICAgICA6IGlubmVyX21hdGNoZXJf
KFNhZmVNYXRjaGVyQ2FzdDxjb25zdCBTZWxlY3RlZEFyZ3MmPihpbm5lcl9tYXRjaGVyKSkge30K
LQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKEFyZ3NUdXBsZSBhcmdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgY29uc3QgU2VsZWN0ZWRBcmdzJiBzZWxlY3RlZF9hcmdzID0gR2V0U2VsZWN0
ZWRBcmdzKGFyZ3MpOwotICAgIGlmICghbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKQotICAgICAg
cmV0dXJuIGlubmVyX21hdGNoZXJfLk1hdGNoZXMoc2VsZWN0ZWRfYXJncyk7Ci0KLSAgICBQcmlu
dEluZGljZXMobGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAqbGlzdGVuZXIgPDwgImFyZSAiIDw8
IFByaW50VG9TdHJpbmcoc2VsZWN0ZWRfYXJncyk7Ci0KLSAgICBTdHJpbmdNYXRjaFJlc3VsdExp
c3RlbmVyIGlubmVyX2xpc3RlbmVyOwotICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSBpbm5lcl9tYXRj
aGVyXy5NYXRjaEFuZEV4cGxhaW4oc2VsZWN0ZWRfYXJncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbm5lcl9saXN0ZW5lcik7Ci0gICAg
UHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkp
OwotICAgIHJldHVybiBtYXRjaDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiYXJlIGEgdHVwbGUgIjsKLSAg
ICBQcmludEluZGljZXMob3MpOwotICAgIGlubmVyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImFyZSBhIHR1cGxlICI7Ci0gICAgUHJpbnRJbmRpY2Vz
KG9zKTsKLSAgICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0K
LSBwcml2YXRlOgotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIEdldFNlbGVjdGVkQXJncyhBcmdzVHVw
bGUgYXJncykgewotICAgIHJldHVybiBUdXBsZUZpZWxkczxSYXdBcmdzVHVwbGUsICRrcz46Okdl
dFNlbGVjdGVkRmllbGRzKGFyZ3MpOwotICB9Ci0KLSAgLy8gUHJpbnRzIHRoZSBpbmRpY2VzIG9m
IHRoZSBzZWxlY3RlZCBmaWVsZHMuCi0gIHN0YXRpYyB2b2lkIFByaW50SW5kaWNlcyg6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKLSAgICAqb3MgPDwgIndob3NlIGZpZWxkcyAoIjsKLSAgICBjb25zdCBp
bnQgaW5kaWNlc1skbl0gPSB7ICRrcyB9OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgJG47IGkr
KykgewotICAgICAgaWYgKGluZGljZXNbaV0gPCAwKQotICAgICAgICBicmVhazsKLQotICAgICAg
aWYgKGkgPj0gMSkKLSAgICAgICAgKm9zIDw8ICIsICI7Ci0KLSAgICAgICpvcyA8PCAiIyIgPDwg
aW5kaWNlc1tpXTsKLSAgICB9Ci0gICAgKm9zIDw8ICIpICI7Ci0gIH0KLQotICBjb25zdCBNb25v
bW9ycGhpY0lubmVyTWF0Y2hlciBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKEFyZ3NNYXRjaGVySW1wbCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5uZXJNYXRj
aGVyJGZvciBpIFtbLCBpbnQgayRpID0gLTFdXT4KLWNsYXNzIEFyZ3NNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVyKGNvbnN0IElubmVyTWF0Y2hlciYgaW5uZXJfbWF0
Y2hlcikKLSAgICAgIDogaW5uZXJfbWF0Y2hlcl8oaW5uZXJfbWF0Y2hlcikge30KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnc1R1cGxlPgotICBvcGVyYXRvciBNYXRjaGVyPEFyZ3NUdXBsZT4o
KSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBBcmdzTWF0Y2hlckltcGw8QXJn
c1R1cGxlLCAka3M+KGlubmVyX21hdGNoZXJfKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0
IElubmVyTWF0Y2hlciBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KEFyZ3NNYXRjaGVyKTsKLX07Ci0KLS8vIEEgc2V0IG9mIG1ldGFmdW5jdGlvbnMgZm9yIGNvbXB1
dGluZyB0aGUgcmVzdWx0IHR5cGUgb2YgQWxsT2YuCi0vLyBBbGxPZihtMSwgLi4uLCBtTikgcmV0
dXJucwotLy8gQWxsT2ZSZXN1bHROPGRlY2x0eXBlKG0xKSwgLi4uLCBkZWNsdHlwZShtTik+Ojp0
eXBlLgotCi0vLyBBbHRob3VnaCBBbGxPZiBpc24ndCBkZWZpbmVkIGZvciBvbmUgYXJndW1lbnQs
IEFsbE9mUmVzdWx0MSBpcyBkZWZpbmVkCi0vLyB0byBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRp
b24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTE+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQxIHsKLSAgdHlw
ZWRlZiBNMSB0eXBlOwotfTsKLQotJHJhbmdlIGkgMS4ubgotCi0kcmFuZ2UgaSAyLi5uCi0kZm9y
IGkgW1sKLSRyYW5nZSBqIDIuLmkKLSR2YXIgbSA9IGkvMgotJHJhbmdlIGsgMS4ubQotJHJhbmdl
IHQgbSsxLi5pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSRmb3IgaiBbWywgdHlwZW5hbWUgTSRq
XV0+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQkaSB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwKLSAg
ICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0JG08JGZvciBrLCBbW00ka11dPjo6dHlwZSwKLSAgICAg
IHR5cGVuYW1lIEFsbE9mUmVzdWx0JChpLW0pPCRmb3IgdCwgW1tNJHRdXT46OnR5cGUKLSAgPiB0
eXBlOwotfTsKLQotXV0KLQotLy8gQSBzZXQgb2YgbWV0YWZ1bmN0aW9ucyBmb3IgY29tcHV0aW5n
IHRoZSByZXN1bHQgdHlwZSBvZiBBbnlPZi4KLS8vIEFueU9mKG0xLCAuLi4sIG1OKSByZXR1cm5z
Ci0vLyBBbnlPZlJlc3VsdE48ZGVjbHR5cGUobTEpLCAuLi4sIGRlY2x0eXBlKG1OKT46OnR5cGUu
Ci0KLS8vIEFsdGhvdWdoIEFueU9mIGlzbid0IGRlZmluZWQgZm9yIG9uZSBhcmd1bWVudCwgQW55
T2ZSZXN1bHQxIGlzIGRlZmluZWQKLS8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbi4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBNMT4KLXN0cnVjdCBBbnlPZlJlc3VsdDEgewotICB0eXBlZGVm
IE0xIHR5cGU7Ci19OwotCi0kcmFuZ2UgaSAxLi5uCi0KLSRyYW5nZSBpIDIuLm4KLSRmb3IgaSBb
WwotJHJhbmdlIGogMi4uaQotJHZhciBtID0gaS8yCi0kcmFuZ2UgayAxLi5tCi0kcmFuZ2UgdCBt
KzEuLmkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xJGZvciBqIFtbLCB0eXBlbmFtZSBNJGpdXT4K
LXN0cnVjdCBBbnlPZlJlc3VsdCRpIHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8Ci0gICAg
ICB0eXBlbmFtZSBBbnlPZlJlc3VsdCRtPCRmb3IgaywgW1tNJGtdXT46OnR5cGUsCi0gICAgICB0
eXBlbmFtZSBBbnlPZlJlc3VsdCQoaS1tKTwkZm9yIHQsIFtbTSR0XV0+Ojp0eXBlCi0gID4gdHlw
ZTsKLX07Ci0KLV1dCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBBcmdzPE4xLCBO
MiwgLi4uLCBOaz4oYV9tYXRjaGVyKSBtYXRjaGVzIGEgdHVwbGUgaWYgdGhlIHNlbGVjdGVkCi0v
LyBmaWVsZHMgb2YgaXQgbWF0Y2hlcyBhX21hdGNoZXIuICBDKysgZG9lc24ndCBzdXBwb3J0IGRl
ZmF1bHQKLS8vIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gdGVtcGxhdGVzLCBzbyB3ZSBoYXZlIHRv
IG92ZXJsb2FkIGl0LgotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkK
LXRlbXBsYXRlIDwkZm9yIGogW1tpbnQgayRqLCBdXXR5cGVuYW1lIElubmVyTWF0Y2hlcj4KLWlu
bGluZSBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyJGZvciBqIFtbLCBrJGpdXT4K
LUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyJGZvciBqIFtbLCBrJGpdXT4obWF0Y2hlcik7Ci19Ci0K
LQotXV0KLS8vIEVsZW1lbnRzQXJlKGVfMSwgZV8yLCAuLi4gZV9uKSBtYXRjaGVzIGFuIFNUTC1z
dHlsZSBjb250YWluZXIgd2l0aAotLy8gbiBlbGVtZW50cywgd2hlcmUgdGhlIGktdGggZWxlbWVu
dCBpbiB0aGUgY29udGFpbmVyIG11c3QKLS8vIG1hdGNoIHRoZSBpLXRoIGFyZ3VtZW50IGluIHRo
ZSBsaXN0LiAgRWFjaCBhcmd1bWVudCBvZgotLy8gRWxlbWVudHNBcmUoKSBjYW4gYmUgZWl0aGVy
IGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAgV2Ugc3VwcG9ydCB1cCB0bwotLy8gJG4gYXJndW1lbnRz
LgotLy8KLS8vIFRoZSB1c2Ugb2YgRGVjYXlBcnJheSBpbiB0aGUgaW1wbGVtZW50YXRpb24gYWxs
b3dzIEVsZW1lbnRzQXJlKCkKLS8vIHRvIGFjY2VwdCBzdHJpbmcgbGl0ZXJhbHMsIHdob3NlIHR5
cGUgaXMgY29uc3QgY2hhcltOXSwgYnV0IHdlCi0vLyB3YW50IHRvIHRyZWF0IHRoZW0gYXMgY29u
c3QgY2hhciouCi0vLwotLy8gTk9URTogU2luY2UgRWxlbWVudHNBcmUoKSBjYXJlcyBhYm91dCB0
aGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzLCBpdAotLy8gbXVzdCBub3QgYmUgdXNlZCB3aXRoIGNv
bnRhaW5lcnMgd2hvc2UgZWxlbWVudHMncyBvcmRlciBpcwotLy8gdW5kZWZpbmVkIChlLmcuIGhh
c2hfbWFwKS4KLQotJHJhbmdlIGkgMC4ubgotJGZvciBpIFtbCi0KLSRyYW5nZSBqIDEuLmkKLQot
JGlmIGk+MCBbWwotCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgotXV0KLQot
aW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBs
ZTwKLSRmb3IgaiwgW1sKLQotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
JGpbW11dPjo6dHlwZV1dPiA+Ci1FbGVtZW50c0FyZSgkZm9yIGosIFtbY29uc3QgVCRqJiBlJGpd
XSkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0kZm9yIGosIFtbCi0KLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQkaltbXV0+Ojp0eXBlXV0+IEFyZ3M7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoJGZvciBqLCBbW2Uk
al1dKSk7Ci19Ci0KLV1dCi0KLS8vIFVub3JkZXJlZEVsZW1lbnRzQXJlKGVfMSwgZV8yLCAuLi4s
IGVfbikgaXMgYW4gRWxlbWVudHNBcmUgZXh0ZW5zaW9uCi0vLyB0aGF0IG1hdGNoZXMgbiBlbGVt
ZW50cyBpbiBhbnkgb3JkZXIuICBXZSBzdXBwb3J0IHVwIHRvIG49JG4gYXJndW1lbnRzLgotCi0k
cmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLQotJHJhbmdlIGogMS4uaQotCi0kaWYgaT4wIFtbCi0K
LXRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+Ci1dXQotCi1pbmxpbmUgaW50ZXJu
YWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAot
JGZvciBqLCBbWwotCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQkaltb
XV0+Ojp0eXBlXV0+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKCRmb3IgaiwgW1tjb25zdCBUJGom
IGUkal1dKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSRmb3IgaiwgW1sKLQotICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VCRqW1tdXT46OnR5cGVdXT4gQXJnczsK
LSAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJn
cygkZm9yIGosIFtbZSRqXV0pKTsKLX0KLQotXV0KLQotLy8gQWxsT2YobTEsIG0yLCAuLi4sIG1r
KSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IG1hdGNoZXMgYWxsIG9mIHRoZSBnaXZlbgotLy8gc3Vi
LW1hdGNoZXJzLiAgQWxsT2YgaXMgY2FsbGVkIGZ1bGx5IHF1YWxpZmllZCB0byBwcmV2ZW50IEFE
TCBmcm9tIGZpcmluZy4KLQotJHJhbmdlIGkgMi4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5p
Ci0kdmFyIG0gPSBpLzIKLSRyYW5nZSBrIDEuLm0KLSRyYW5nZSB0IG0rMS4uaQotCi10ZW1wbGF0
ZSA8JGZvciBqLCBbW3R5cGVuYW1lIE0kal1dPgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpB
bGxPZlJlc3VsdCRpPCRmb3IgaiwgW1tNJGpdXT46OnR5cGUKLUFsbE9mKCRmb3IgaiwgW1tNJGog
bSRqXV0pIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdCRpPCRmb3Ig
aiwgW1tNJGpdXT46OnR5cGUoCi0gICAgICAkaWYgbSA9PSAxIFtbbTFdXSAkZWxzZSBbWzo6dGVz
dGluZzo6QWxsT2YoJGZvciBrLCBbW20ka11dKV1dLAotICAgICAgJGlmIG0rMSA9PSBpIFtbbSRp
XV0gJGVsc2UgW1s6OnRlc3Rpbmc6OkFsbE9mKCRmb3IgdCwgW1ttJHRdXSldXSk7Ci19Ci0KLV1d
Ci0KLS8vIEFueU9mKG0xLCBtMiwgLi4uLCBtaykgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRj
aGVzIGFueSBvZiB0aGUgZ2l2ZW4KLS8vIHN1Yi1tYXRjaGVycy4gIEFueU9mIGlzIGNhbGxlZCBm
dWxseSBxdWFsaWZpZWQgdG8gcHJldmVudCBBREwgZnJvbSBmaXJpbmcuCi0KLSRyYW5nZSBpIDIu
Lm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHZhciBtID0gaS8yCi0kcmFuZ2UgayAxLi5t
Ci0kcmFuZ2UgdCBtKzEuLmkKLQotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBNJGpdXT4K
LWlubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQkaTwkZm9yIGosIFtbTSRqXV0+
Ojp0eXBlCi1BbnlPZigkZm9yIGosIFtbTSRqIG0kal1dKSB7Ci0gIHJldHVybiB0eXBlbmFtZSBp
bnRlcm5hbDo6QW55T2ZSZXN1bHQkaTwkZm9yIGosIFtbTSRqXV0+Ojp0eXBlKAotICAgICAgJGlm
IG0gPT0gMSBbW20xXV0gJGVsc2UgW1s6OnRlc3Rpbmc6OkFueU9mKCRmb3IgaywgW1ttJGtdXSld
XSwKLSAgICAgICRpZiBtKzEgPT0gaSBbW20kaV1dICRlbHNlIFtbOjp0ZXN0aW5nOjpBbnlPZigk
Zm9yIHQsIFtbbSR0XV0pXV0pOwotfQotCi1dXQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwot
JCQgfSAvLyBUaGlzIFB1bXAgbWV0YSBjb21tZW50IGZpeGVzIGF1dG8taW5kZW50YXRpb24gaW4g
RW1hY3MuIEl0IHdpbGwgbm90Ci0kJCAgIC8vIHNob3cgdXAgaW4gdGhlIGdlbmVyYXRlZCBjb2Rl
LgotCi0KLS8vIFRoZSBNQVRDSEVSKiBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1c2VkIGluIGEg
bmFtZXNwYWNlIHNjb3BlIHRvCi0vLyBkZWZpbmUgY3VzdG9tIG1hdGNoZXJzIGVhc2lseS4KLS8v
Ci0vLyBCYXNpYyBVc2FnZQotLy8gPT09PT09PT09PT0KLS8vCi0vLyBUaGUgc3ludGF4Ci0vLwot
Ly8gICBNQVRDSEVSKG5hbWUsIGRlc2NyaXB0aW9uX3N0cmluZykgeyBzdGF0ZW1lbnRzOyB9Ci0v
LwotLy8gZGVmaW5lcyBhIG1hdGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVz
IHRoZSBzdGF0ZW1lbnRzLAotLy8gd2hpY2ggbXVzdCByZXR1cm4gYSBib29sIHRvIGluZGljYXRl
IGlmIHRoZSBtYXRjaCBzdWNjZWVkcy4gIEluc2lkZQotLy8gdGhlIHN0YXRlbWVudHMsIHlvdSBj
YW4gcmVmZXIgdG8gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYnkgJ2FyZycsCi0vLyBhbmQgcmVm
ZXIgdG8gaXRzIHR5cGUgYnkgJ2FyZ190eXBlJy4KLS8vCi0vLyBUaGUgZGVzY3JpcHRpb24gc3Ry
aW5nIGRvY3VtZW50cyB3aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkCi0vLyB0byBn
ZW5lcmF0ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgU2luY2Ug
YQotLy8gTUFUQ0hFUigpIGlzIHVzdWFsbHkgZGVmaW5lZCBpbiBhIGhlYWRlciBmaWxlIHNoYXJl
ZCBieSBtdWx0aXBsZQotLy8gQysrIHNvdXJjZSBmaWxlcywgd2UgcmVxdWlyZSB0aGUgZGVzY3Jp
cHRpb24gdG8gYmUgYSBDLXN0cmluZwotLy8gbGl0ZXJhbCB0byBhdm9pZCBwb3NzaWJsZSBzaWRl
IGVmZmVjdHMuICBJdCBjYW4gYmUgZW1wdHksIGluIHdoaWNoCi0vLyBjYXNlIHdlJ2xsIHVzZSB0
aGUgc2VxdWVuY2Ugb2Ygd29yZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBhcyB0aGUKLS8vIGRlc2Ny
aXB0aW9uLgotLy8KLS8vIEZvciBleGFtcGxlOgotLy8KLS8vICAgTUFUQ0hFUihJc0V2ZW4sICIi
KSB7IHJldHVybiAoYXJnICUgMikgPT0gMDsgfQotLy8KLS8vIGFsbG93cyB5b3UgdG8gd3JpdGUK
LS8vCi0vLyAgIC8vIEV4cGVjdHMgbW9ja19mb28uQmFyKG4pIHRvIGJlIGNhbGxlZCB3aGVyZSBu
IGlzIGV2ZW4uCi0vLyAgIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNFdmVuKCkpKTsKLS8v
Ci0vLyBvciwKLS8vCi0vLyAgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHZhbHVlIG9mIHNvbWVfZXhw
cmVzc2lvbiBpcyBldmVuLgotLy8gICBFWFBFQ1RfVEhBVChzb21lX2V4cHJlc3Npb24sIElzRXZl
bigpKTsKLS8vCi0vLyBJZiB0aGUgYWJvdmUgYXNzZXJ0aW9uIGZhaWxzLCBpdCB3aWxsIHByaW50
IHNvbWV0aGluZyBsaWtlOgotLy8KLS8vICAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgotLy8g
ICBFeHBlY3RlZDogaXMgZXZlbgotLy8gICAgIEFjdHVhbDogNwotLy8KLS8vIHdoZXJlIHRoZSBk
ZXNjcmlwdGlvbiAiaXMgZXZlbiIgaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20gdGhl
Ci0vLyBtYXRjaGVyIG5hbWUgSXNFdmVuLgotLy8KLS8vIEFyZ3VtZW50IFR5cGUKLS8vID09PT09
PT09PT09PT0KLS8vCi0vLyBOb3RlIHRoYXQgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1h
dGNoZWQgKGFyZ190eXBlKSBpcwotLy8gZGV0ZXJtaW5lZCBieSB0aGUgY29udGV4dCBpbiB3aGlj
aCB5b3UgdXNlIHRoZSBtYXRjaGVyIGFuZCBpcwotLy8gc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBj
b21waWxlciwgc28geW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQKLS8vIGRlY2xhcmluZyBp
dCAobm9yIGNhbiB5b3UpLiAgVGhpcyBhbGxvd3MgdGhlIG1hdGNoZXIgdG8gYmUKLS8vIHBvbHlt
b3JwaGljLiAgRm9yIGV4YW1wbGUsIElzRXZlbigpIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFueSB0
eXBlCi0vLyB3aGVyZSB0aGUgdmFsdWUgb2YgIihhcmcgJSAyKSA9PSAwIiBjYW4gYmUgaW1wbGlj
aXRseSBjb252ZXJ0ZWQgdG8KLS8vIGEgYm9vbC4gIEluIHRoZSAiQmFyKElzRXZlbigpKSIgZXhh
bXBsZSBhYm92ZSwgaWYgbWV0aG9kIEJhcigpCi0vLyB0YWtlcyBhbiBpbnQsICdhcmdfdHlwZScg
d2lsbCBiZSBpbnQ7IGlmIGl0IHRha2VzIGFuIHVuc2lnbmVkIGxvbmcsCi0vLyAnYXJnX3R5cGUn
IHdpbGwgYmUgdW5zaWduZWQgbG9uZzsgYW5kIHNvIG9uLgotLy8KLS8vIFBhcmFtZXRlcml6aW5n
IE1hdGNoZXJzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFNvbWV0aW1lcyB5
b3UnbGwgd2FudCB0byBwYXJhbWV0ZXJpemUgdGhlIG1hdGNoZXIuICBGb3IgdGhhdCB5b3UKLS8v
IGNhbiB1c2UgYW5vdGhlciBtYWNybzoKLS8vCi0vLyAgIE1BVENIRVJfUChuYW1lLCBwYXJhbV9u
YW1lLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIEZvciBleGFt
cGxlOgotLy8KLS8vICAgTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlLCAiIikgeyBy
ZXR1cm4gYWJzKGFyZykgPT0gdmFsdWU7IH0KLS8vCi0vLyB3aWxsIGFsbG93IHlvdSB0byB3cml0
ZToKLS8vCi0vLyAgIEVYUEVDVF9USEFUKEJsYWgoImEiKSwgSGFzQWJzb2x1dGVWYWx1ZShuKSk7
Ci0vLwotLy8gd2hpY2ggbWF5IGxlYWQgdG8gdGhpcyBtZXNzYWdlIChhc3N1bWluZyBuIGlzIDEw
KToKLS8vCi0vLyAgIFZhbHVlIG9mOiBCbGFoKCJhIikKLS8vICAgRXhwZWN0ZWQ6IGhhcyBhYnNv
bHV0ZSB2YWx1ZSAxMAotLy8gICAgIEFjdHVhbDogLTkKLS8vCi0vLyBOb3RlIHRoYXQgYm90aCB0
aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbmQgaXRzIHBhcmFtZXRlciBhcmUKLS8vIHByaW50ZWQs
IG1ha2luZyB0aGUgbWVzc2FnZSBodW1hbi1mcmllbmRseS4KLS8vCi0vLyBJbiB0aGUgbWF0Y2hl
ciBkZWZpbml0aW9uIGJvZHksIHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJyB0bwotLy8gcmVmZXJl
bmNlIHRoZSB0eXBlIG9mIGEgcGFyYW1ldGVyIG5hbWVkICdmb28nLiAgRm9yIGV4YW1wbGUsIGlu
IHRoZQotLy8gYm9keSBvZiBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUpIGFib3Zl
LCB5b3UgY2FuIHdyaXRlCi0vLyAndmFsdWVfdHlwZScgdG8gcmVmZXIgdG8gdGhlIHR5cGUgb2Yg
J3ZhbHVlJy4KLS8vCi0vLyBXZSBhbHNvIHByb3ZpZGUgTUFUQ0hFUl9QMiwgTUFUQ0hFUl9QMywg
Li4uLCB1cCB0byBNQVRDSEVSX1AkbiB0bwotLy8gc3VwcG9ydCBtdWx0aS1wYXJhbWV0ZXIgbWF0
Y2hlcnMuCi0vLwotLy8gRGVzY3JpYmluZyBQYXJhbWV0ZXJpemVkIE1hdGNoZXJzCi0vLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBUaGUgbGFzdCBhcmd1bWVudCB0
byBNQVRDSEVSKigpIGlzIGEgc3RyaW5nLXR5cGVkIGV4cHJlc3Npb24uICBUaGUKLS8vIGV4cHJl
c3Npb24gY2FuIHJlZmVyZW5jZSBhbGwgb2YgdGhlIG1hdGNoZXIncyBwYXJhbWV0ZXJzIGFuZCBh
Ci0vLyBzcGVjaWFsIGJvb2wtdHlwZWQgdmFyaWFibGUgbmFtZWQgJ25lZ2F0aW9uJy4gIFdoZW4g
J25lZ2F0aW9uJyBpcwotLy8gZmFsc2UsIHRoZSBleHByZXNzaW9uIHNob3VsZCBldmFsdWF0ZSB0
byB0aGUgbWF0Y2hlcidzIGRlc2NyaXB0aW9uOwotLy8gb3RoZXJ3aXNlIGl0IHNob3VsZCBldmFs
dWF0ZSB0byB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIG5lZ2F0aW9uIG9mCi0vLyB0aGUgbWF0Y2hl
ci4gIEZvciBleGFtcGxlLAotLy8KLS8vICAgdXNpbmcgdGVzdGluZzo6UHJpbnRUb1N0cmluZzsK
LS8vCi0vLyAgIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwKLS8vICAgICAgIHN0
cmluZyhuZWdhdGlvbiA/ICJpcyBub3QiIDogImlzIikgKyAiIGluIHJhbmdlIFsiICsKLS8vICAg
ICAgIFByaW50VG9TdHJpbmcobG93KSArICIsICIgKyBQcmludFRvU3RyaW5nKGhpKSArICJdIikg
ewotLy8gICAgIHJldHVybiBsb3cgPD0gYXJnICYmIGFyZyA8PSBoaTsKLS8vICAgfQotLy8gICAu
Li4KLS8vICAgRVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci0vLyAgIEVYUEVD
VF9USEFUKDMsIE5vdChJbkNsb3NlZFJhbmdlKDIsIDQpKSk7Ci0vLwotLy8gd291bGQgZ2VuZXJh
dGUgdHdvIGZhaWx1cmVzIHRoYXQgY29udGFpbiB0aGUgdGV4dDoKLS8vCi0vLyAgIEV4cGVjdGVk
OiBpcyBpbiByYW5nZSBbNCwgNl0KLS8vICAgLi4uCi0vLyAgIEV4cGVjdGVkOiBpcyBub3QgaW4g
cmFuZ2UgWzIsIDRdCi0vLwotLy8gSWYgeW91IHNwZWNpZnkgIiIgYXMgdGhlIGRlc2NyaXB0aW9u
LCB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwKLS8vIGNvbnRhaW4gdGhlIHNlcXVlbmNlIG9mIHdv
cmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCi0vLyBwYXJhbWV0ZXIgdmFs
dWVzIHByaW50ZWQgYXMgYSB0dXBsZS4gIEZvciBleGFtcGxlLAotLy8KLS8vICAgTUFUQ0hFUl9Q
MihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLCAiIikgeyAuLi4gfQotLy8gICAuLi4KLS8vICAgRVhQ
RUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci0vLyAgIEVYUEVDVF9USEFUKDMsIE5v
dChJbkNsb3NlZFJhbmdlKDIsIDQpKSk7Ci0vLwotLy8gd291bGQgZ2VuZXJhdGUgdHdvIGZhaWx1
cmVzIHRoYXQgY29udGFpbiB0aGUgdGV4dDoKLS8vCi0vLyAgIEV4cGVjdGVkOiBpbiBjbG9zZWQg
cmFuZ2UgKDQsIDYpCi0vLyAgIC4uLgotLy8gICBFeHBlY3RlZDogbm90IChpbiBjbG9zZWQgcmFu
Z2UgKDIsIDQpKQotLy8KLS8vIFR5cGVzIG9mIE1hdGNoZXIgUGFyYW1ldGVycwotLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHR5cGluZywg
eW91IGNhbiB2aWV3Ci0vLwotLy8gICBNQVRDSEVSX1BrKEZvbywgcDEsIC4uLiwgcGssIGRlc2Ny
aXB0aW9uX3N0cmluZykgeyAuLi4gfQotLy8KLS8vIGFzIHNob3J0aGFuZCBmb3IKLS8vCi0vLyAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVuYW1lIHBrX3R5cGU+Ci0vLyAg
IEZvb01hdGNoZXJQazxwMV90eXBlLCAuLi4sIHBrX3R5cGU+Ci0vLyAgIEZvbyhwMV90eXBlIHAx
LCAuLi4sIHBrX3R5cGUgcGspIHsgLi4uIH0KLS8vCi0vLyBXaGVuIHlvdSB3cml0ZSBGb28odjEs
IC4uLiwgdmspLCB0aGUgY29tcGlsZXIgaW5mZXJzIHRoZSB0eXBlcyBvZgotLy8gdGhlIHBhcmFt
ZXRlcnMgdjEsIC4uLiwgYW5kIHZrIGZvciB5b3UuICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRo
Ci0vLyB0aGUgcmVzdWx0IG9mIHRoZSB0eXBlIGluZmVyZW5jZSwgeW91IGNhbiBzcGVjaWZ5IHRo
ZSB0eXBlcyBieQotLy8gZXhwbGljaXRseSBpbnN0YW50aWF0aW5nIHRoZSB0ZW1wbGF0ZSwgYXMg
aW4gRm9vPGxvbmcsIGJvb2w+KDUsCi0vLyBmYWxzZSkuICBBcyBzYWlkIGVhcmxpZXIsIHlvdSBk
b24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLS8vICdhcmdfdHlwZScgYXMgdGhhdCdz
IGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKLS8vIGlzIHVz
ZWQuICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24gRm9vKHAxLCAuLi4s
IHBrKQotLy8gdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb01hdGNoZXJQazxwMV90eXBlLCAuLi4s
IHBrX3R5cGU+LiAgVGhpcwotLy8gY2FuIGJlIHVzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRjaGVy
cy4KLS8vCi0vLyBXaGlsZSB5b3UgY2FuIGluc3RhbnRpYXRlIGEgbWF0Y2hlciB0ZW1wbGF0ZSB3
aXRoIHJlZmVyZW5jZSB0eXBlcywKLS8vIHBhc3NpbmcgdGhlIHBhcmFtZXRlcnMgYnkgcG9pbnRl
ciB1c3VhbGx5IG1ha2VzIHlvdXIgY29kZSBtb3JlCi0vLyByZWFkYWJsZS4gIElmLCBob3dldmVy
LCB5b3Ugc3RpbGwgd2FudCB0byBwYXNzIGEgcGFyYW1ldGVyIGJ5Ci0vLyByZWZlcmVuY2UsIGJl
IGF3YXJlIHRoYXQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgdGhlCi0vLyBt
YXRjaGVyIHlvdSB3aWxsIHNlZSB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGJ1
dCBub3QgaXRzCi0vLyBhZGRyZXNzLgotLy8KLS8vIEV4cGxhaW5pbmcgTWF0Y2ggUmVzdWx0cwot
Ly8gPT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gU29tZXRpbWVzIHRoZSBtYXRjaGVy
IGRlc2NyaXB0aW9uIGFsb25lIGlzbid0IGVub3VnaCB0byBleHBsYWluIHdoeQotLy8gdGhlIG1h
dGNoIGhhcyBmYWlsZWQgb3Igc3VjY2VlZGVkLiAgRm9yIGV4YW1wbGUsIHdoZW4gZXhwZWN0aW5n
IGEKLS8vIGxvbmcgc3RyaW5nLCBpdCBjYW4gYmUgdmVyeSBoZWxwZnVsIHRvIGFsc28gcHJpbnQg
dGhlIGRpZmYgYmV0d2VlbgotLy8gdGhlIGV4cGVjdGVkIHN0cmluZyBhbmQgdGhlIGFjdHVhbCBv
bmUuICBUbyBhY2hpZXZlIHRoYXQsIHlvdSBjYW4KLS8vIG9wdGlvbmFsbHkgc3RyZWFtIGFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gdG8gYSBzcGVjaWFsIHZhcmlhYmxlCi0vLyBuYW1lZCByZXN1bHRf
bGlzdGVuZXIsIHdob3NlIHR5cGUgaXMgYSBwb2ludGVyIHRvIGNsYXNzCi0vLyBNYXRjaFJlc3Vs
dExpc3RlbmVyOgotLy8KLS8vICAgTUFUQ0hFUl9QKEVxdWFsc0xvbmdTdHJpbmcsIHN0ciwgIiIp
IHsKLS8vICAgICBpZiAoYXJnID09IHN0cikgcmV0dXJuIHRydWU7Ci0vLwotLy8gICAgICpyZXN1
bHRfbGlzdGVuZXIgPDwgInRoZSBkaWZmZXJlbmNlOiAiCi0vLy8gICAgICAgICAgICAgICAgICAg
ICA8PCBEaWZmU3RyaW5ncyhzdHIsIGFyZyk7Ci0vLyAgICAgcmV0dXJuIGZhbHNlOwotLy8gICB9
Ci0vLwotLy8gT3ZlcmxvYWRpbmcgTWF0Y2hlcnMKLS8vID09PT09PT09PT09PT09PT09PT09Ci0v
LwotLy8gWW91IGNhbiBvdmVybG9hZCBtYXRjaGVycyB3aXRoIGRpZmZlcmVudCBudW1iZXJzIG9m
IHBhcmFtZXRlcnM6Ci0vLwotLy8gICBNQVRDSEVSX1AoQmxhaCwgYSwgZGVzY3JpcHRpb25fc3Ry
aW5nMSkgeyAuLi4gfQotLy8gICBNQVRDSEVSX1AyKEJsYWgsIGEsIGIsIGRlc2NyaXB0aW9uX3N0
cmluZzIpIHsgLi4uIH0KLS8vCi0vLyBDYXZlYXRzCi0vLyA9PT09PT09Ci0vLwotLy8gV2hlbiBk
ZWZpbmluZyBhIG5ldyBtYXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50
aW5nCi0vLyBNYXRjaGVySW50ZXJmYWNlIG9yIHVzaW5nIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIo
KS4gIFRoZXNlCi0vLyBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrIHRoYW4gdGhlIE1BVENI
RVIqIG1hY3JvcywgYnV0IGFsc28KLS8vIGdpdmUgeW91IG1vcmUgY29udHJvbCBvbiB0aGUgdHlw
ZXMgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kCi0vLyB0aGUgbWF0Y2hlciBwYXJhbWV0
ZXJzLCB3aGljaCBtYXkgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yCi0vLyBtZXNzYWdl
cyB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgd3JvbmcuICBUaGV5IGFsc28gYWxsb3cKLS8vIG92
ZXJsb2FkaW5nIG1hdGNoZXJzIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlcyAoYXMgb3Bwb3NlZCB0
byBqdXN0Ci0vLyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMpLgotLy8KLS8vIE1B
VENIRVIqKCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZS4gIFRoZSByZWFz
b24gaXMKLS8vIHRoYXQgQysrIGRvZXNuJ3QgeWV0IGFsbG93IGZ1bmN0aW9uLWxvY2FsIHR5cGVz
IHRvIGJlIHVzZWQgdG8KLS8vIGluc3RhbnRpYXRlIHRlbXBsYXRlcy4gIFRoZSB1cC1jb21pbmcg
QysrMHggc3RhbmRhcmQgd2lsbCBmaXggdGhpcy4KLS8vIE9uY2UgdGhhdCdzIGRvbmUsIHdlJ2xs
IGNvbnNpZGVyIHN1cHBvcnRpbmcgdXNpbmcgTUFUQ0hFUiooKSBpbnNpZGUKLS8vIGEgZnVuY3Rp
b24uCi0vLwotLy8gTW9yZSBJbmZvcm1hdGlvbgotLy8gPT09PT09PT09PT09PT09PQotLy8KLS8v
IFRvIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgdGhlc2UgbWFjcm9zLCBwbGVhc2Ugc2VhcmNoIGZv
ciAnTUFUQ0hFUicKLS8vIG9uIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dp
a2kvQ29va0Jvb2suCi0KLSRyYW5nZSBpIDAuLm4KLSRmb3IgaQotCi1bWwotJHZhciBtYWNyb19u
YW1lID0gW1skaWYgaT09MCBbW01BVENIRVJdXSAkZWxpZiBpPT0xIFtbTUFUQ0hFUl9QXV0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsc2UgW1tNQVRDSEVSX1Ak
aV1dXV0KLSR2YXIgY2xhc3NfbmFtZSA9IFtbbmFtZSMjTWF0Y2hlcltbJGlmIGk9PTAgW1tdXSAk
ZWxpZiBpPT0xIFtbUF1dCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGVsc2UgW1tQJGldXV1dXV0KLSRyYW5nZSBqIDAuLmktMQotJHZhciB0ZW1wbGF0
ZSA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWwotCi0gIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlw
ZW5hbWUgcCRqIyNfdHlwZV1dPlwKLV1dXV0KLSR2YXIgY3Rvcl9wYXJhbV9saXN0ID0gW1skZm9y
IGosIFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXV1dCi0kdmFyIGltcGxfY3Rvcl9wYXJhbV9saXN0
ID0gW1skZm9yIGosIFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXV1dCi0kdmFyIGltcGxfaW5pdHMg
PSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sgOiAkZm9yIGosIFtbcCRqKGdtb2NrX3AkaildXV1d
XV0KLSR2YXIgaW5pdHMgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sgOiAkZm9yIGosIFtbcCRq
KGdtb2NrX3AkaildXV1dXV0KLSR2YXIgcGFyYW1zID0gW1skZm9yIGosIFtbcCRqXV1dXQotJHZh
ciBwYXJhbV90eXBlcyA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWzwkZm9yIGosIFtbcCRqIyNf
dHlwZV1dPl1dXV0KLSR2YXIgcGFyYW1fdHlwZXNfYW5kX25hbWVzID0gW1skZm9yIGosIFtbcCRq
IyNfdHlwZSBwJGpdXV1dCi0kdmFyIHBhcmFtX2ZpZWxkX2RlY2xzID0gW1skZm9yIGoKLVtbCi0K
LSAgICAgIHAkaiMjX3R5cGUgcCRqO1wKLV1dXV0KLSR2YXIgcGFyYW1fZmllbGRfZGVjbHMyID0g
W1skZm9yIGoKLVtbCi0KLSAgICBwJGojI190eXBlIHAkajtcCi1dXV1dCi0KLSNkZWZpbmUgJG1h
Y3JvX25hbWUobmFtZSRmb3IgaiBbWywgcCRqXV0sIGRlc2NyaXB0aW9uKVwkdGVtcGxhdGUKLSAg
Y2xhc3MgJGNsYXNzX25hbWUge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IGFyZ190eXBlPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0
Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIFtbJGlmIGk9
PTEgW1tleHBsaWNpdCBdXV1dZ21vY2tfSW1wbCgkaW1wbF9jdG9yX3BhcmFtX2xpc3QpXAotICAg
ICAgICAgICRpbXBsX2luaXRzIHt9XAotICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFp
bihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVu
ZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJl
VG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3Mg
PDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wK
LSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAgIH1c
JHBhcmFtX2ZpZWxkX2RlY2xzCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0g
ICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlv
biA9IChkZXNjcmlwdGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5
KCkpXAotICAgICAgICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAg
ICAgICAgbmVnYXRpb24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFs
OjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAg
ICAgIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW3AkaiMjX3R5cGVdXT4oJGZvciBqLCBbW3Ak
al1dKSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0lt
cGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAgIG9w
ZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAgICAgcmV0
dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBnbW9ja19J
bXBsPGFyZ190eXBlPigkcGFyYW1zKSk7XAotICAgIH1cCi0gICAgW1skaWYgaT09MSBbW2V4cGxp
Y2l0IF1dXV0kY2xhc3NfbmFtZSgkY3Rvcl9wYXJhbV9saXN0KSRpbml0cyB7XAotICAgIH1cJHBh
cmFtX2ZpZWxkX2RlY2xzMgotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XygkY2xhc3NfbmFtZSk7XAotICB9O1wkdGVtcGxhdGUKLSAgaW5saW5lICRjbGFzc19uYW1lJHBh
cmFtX3R5cGVzIG5hbWUoJHBhcmFtX3R5cGVzX2FuZF9uYW1lcykge1wKLSAgICByZXR1cm4gJGNs
YXNzX25hbWUkcGFyYW1fdHlwZXMoJHBhcmFtcyk7XAotICB9XCR0ZW1wbGF0ZQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBib29sICRjbGFzc19uYW1lJHBhcmFtX3R5cGVzOjpn
bW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgIGFyZ190eXBlIGFy
ZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVu
ZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAgIGNvbnN0Ci1dXQotCi0KLSNl
bmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTUFUQ0hFUlNfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLW5p
Y2Utc3RyaWN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1u
aWNlLXN0cmljdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDk1ZjRkNWJjN2Zi
YjVmMWE4OWQ0Y2RlYWRlYmJlM2VmYjk5NTgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJh
dGVkLW5pY2Utc3RyaWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOTcgKzAsMCBAQAotLy8gVGhp
cyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKLS8vICAgICBwdW1wLnB5IGdtb2NrLWdl
bmVyYXRlZC1uaWNlLXN0cmljdC5oLnB1bXAKLS8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKLQot
Ly8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gSW1wbGVtZW50cyBjbGFzcyB0
ZW1wbGF0ZXMgTmljZU1vY2ssIE5hZ2d5TW9jaywgYW5kIFN0cmljdE1vY2suCi0vLwotLy8gR2l2
ZW4gYSBtb2NrIGNsYXNzIE1vY2tGb28gdGhhdCBpcyBjcmVhdGVkIHVzaW5nIEdvb2dsZSBNb2Nr
LAotLy8gTmljZU1vY2s8TW9ja0Zvbz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vIHRoYXQgYWxs
b3dzCi0vLyB1bmludGVyZXN0aW5nIGNhbGxzIChpLmUuIGNhbGxzIHRvIG1vY2sgbWV0aG9kcyB0
aGF0IGhhdmUgbm8KLS8vIEVYUEVDVF9DQUxMIHNwZWNzKSwgTmFnZ3lNb2NrPE1vY2tGb28+IGlz
IGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbwotLy8gdGhhdCBwcmludHMgYSB3YXJuaW5nIHdoZW4gYW4g
dW5pbnRlcmVzdGluZyBjYWxsIG9jY3VycywgYW5kCi0vLyBTdHJpY3RNb2NrPE1vY2tGb28+IGlz
IGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbyB0aGF0IHRyZWF0cyBhbGwKLS8vIHVuaW50ZXJlc3Rpbmcg
Y2FsbHMgYXMgZXJyb3JzLgotLy8KLS8vIEN1cnJlbnRseSBhIG1vY2sgaXMgbmFnZ3kgYnkgZGVm
YXVsdCwgc28gTW9ja0ZvbyBhbmQKLS8vIE5hZ2d5TW9jazxNb2NrRm9vPiBiZWhhdmUgbGlrZSB0
aGUgc2FtZS4gIEhvd2V2ZXIsIHdlIHdpbGwgc29vbgotLy8gc3dpdGNoIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIG9mIG1vY2tzIHRvIGJlIG5pY2UsIGFzIHRoYXQgaW4gZ2VuZXJhbAotLy8gbGVhZHMg
dG8gbW9yZSBtYWludGFpbmFibGUgdGVzdHMuICBXaGVuIHRoYXQgaGFwcGVucywgTW9ja0ZvbyB3
aWxsCi0vLyBzdG9wIGJlaGF2aW5nIGxpa2UgTmFnZ3lNb2NrPE1vY2tGb28+IGFuZCBzdGFydCBi
ZWhhdmluZyBsaWtlCi0vLyBOaWNlTW9jazxNb2NrRm9vPi4KLS8vCi0vLyBOaWNlTW9jaywgTmFn
Z3lNb2NrLCBhbmQgU3RyaWN0TW9jayAiaW5oZXJpdCIgdGhlIGNvbnN0cnVjdG9ycyBvZgotLy8g
dGhlaXIgcmVzcGVjdGl2ZSBiYXNlIGNsYXNzLCB3aXRoIHVwLXRvIDEwIGFyZ3VtZW50cy4gIFRo
ZXJlZm9yZQotLy8geW91IGNhbiB3cml0ZSBOaWNlTW9jazxNb2NrRm9vPig1LCAiYSIpIHRvIGNv
bnN0cnVjdCBhIG5pY2UgbW9jawotLy8gd2hlcmUgTW9ja0ZvbyBoYXMgYSBjb25zdHJ1Y3RvciB0
aGF0IGFjY2VwdHMgKGludCwgY29uc3QgY2hhciopLAotLy8gZm9yIGV4YW1wbGUuCi0vLwotLy8g
QSBrbm93biBsaW1pdGF0aW9uIGlzIHRoYXQgTmljZU1vY2s8TW9ja0Zvbz4sIE5hZ2d5TW9jazxN
b2NrRm9vPiwKLS8vIGFuZCBTdHJpY3RNb2NrPE1vY2tGb28+IG9ubHkgd29ya3MgZm9yIG1vY2sg
bWV0aG9kcyBkZWZpbmVkIHVzaW5nCi0vLyB0aGUgTU9DS19NRVRIT0QqIGZhbWlseSBvZiBtYWNy
b3MgRElSRUNUTFkgaW4gdGhlIE1vY2tGb28gY2xhc3MuCi0vLyBJZiBhIG1vY2sgbWV0aG9kIGlz
IGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzIG9mIE1vY2tGb28sIHRoZSAibmljZSIKLS8vIG9yICJz
dHJpY3QiIG1vZGlmaWVyIG1heSBub3QgYWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBp
bGVyLgotLy8gSW4gcGFydGljdWxhciwgbmVzdGluZyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBhbmQg
U3RyaWN0TW9jayBpcyBOT1QKLS8vIHN1cHBvcnRlZC4KLS8vCi0vLyBBbm90aGVyIGtub3duIGxp
bWl0YXRpb24gaXMgdGhhdCB0aGUgY29uc3RydWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sKLS8vIGNh
bm5vdCBoYXZlIGFyZ3VtZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2gg
YXJlCi0vLyBiYW5uZWQgYnkgdGhlIEdvb2dsZSBDKysgc3R5bGUgZ3VpZGUgYW55d2F5LgotCi0j
aWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNUX0hf
Ci0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNU
X0hfCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgiCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLXRl
bXBsYXRlIDxjbGFzcyBNb2NrQ2xhc3M+Ci1jbGFzcyBOaWNlTW9jayA6IHB1YmxpYyBNb2NrQ2xh
c3MgewotIHB1YmxpYzoKLSAgLy8gV2UgZG9uJ3QgZmFjdG9yIG91dCB0aGUgY29uc3RydWN0b3Ig
Ym9keSB0byBhIGNvbW1vbiBtZXRob2QsIGFzCi0gIC8vIHdlIGhhdmUgdG8gYXZvaWQgYSBwb3Nz
aWJsZSBjbGFzaCB3aXRoIG1lbWJlcnMgb2YgTW9ja0NsYXNzLgotICBOaWNlTW9jaygpIHsKLSAg
ICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICAvLyBDKysg
ZG9lc24ndCAoeWV0KSBhbGxvdyBpbmhlcml0YW5jZSBvZiBjb25zdHJ1Y3RvcnMsIHNvIHdlIGhh
dmUKLSAgLy8gdG8gZGVmaW5lIGl0IGZvciBlYWNoIGFyaXR5LgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQTE+Ci0gIGV4cGxpY2l0IE5pY2VNb2NrKGNvbnN0IEExJiBhMSkgOiBNb2NrQ2xhc3MoYTEp
IHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAg
ICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgTmljZU1vY2soY29uc3QgQTEmIGEx
LCBjb25zdCBBMiYgYTIpIDogTW9ja0NsYXNzKGExLCBhMikgewotICAgIDo6dGVzdGluZzo6TW9j
azo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENh
c3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwg
dHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0
IEEyJiBhMiwgY29uc3QgQTMmIGEzKSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzKSB7Ci0gICAgOjp0
ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6
OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgotICBOaWNl
TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLAotICAgICAgY29u
c3QgQTQmIGE0KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCkgewotICAgIDo6dGVzdGluZzo6
TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNp
dENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTU+Ci0g
IE5pY2VNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0
IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1JiBhNSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQs
IGE1KSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJlc3RpbmdDYWxscygKLSAg
ICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVu
YW1lIEE0LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2PgotICBOaWNlTW9jayhjb25z
dCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAg
ICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNikgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQs
IGE1LCBhNikgewotICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMo
Ci0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAg
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0
eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+
Ci0gIE5pY2VNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNv
bnN0IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYg
YTcpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwKLSAgICAgIGE2LCBhNykgewotICAg
IDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVy
bmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlw
ZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4Pgot
ICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25z
dCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3
LCBjb25zdCBBOCYgYTgpIDogTW9ja0NsYXNzKGExLAotICAgICAgYTIsIGEzLCBhNCwgYTUsIGE2
LCBhNywgYTgpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxz
KAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0g
IH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywg
dHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3
LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+Ci0gIE5pY2VNb2NrKGNvbnN0IEExJiBhMSwgY29u
c3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1JiBh
NSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0IEE4JiBhOCwKLSAgICAgIGNvbnN0
IEE5JiBhOSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkg
ewotICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAg
IGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1l
IEE4LCB0eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgotICBOaWNlTW9jayhjb25zdCBBMSYgYTEs
IGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBB
NSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgsIGNvbnN0IEE5
JiBhOSwKLSAgICAgIGNvbnN0IEExMCYgYTEwKSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwg
YTUsIGE2LCBhNywgYTgsIGE5LCBhMTApIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5p
bnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xh
c3MqPih0aGlzKSk7Ci0gIH0KLQotICB2aXJ0dWFsIH5OaWNlTW9jaygpIHsKLSAgICA6OnRlc3Rp
bmc6Ok1vY2s6OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24oCi0gICAgICAgIGludGVybmFsOjpJbXBs
aWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOaWNlTW9jayk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xh
c3MgTW9ja0NsYXNzPgotY2xhc3MgTmFnZ3lNb2NrIDogcHVibGljIE1vY2tDbGFzcyB7Ci0gcHVi
bGljOgotICAvLyBXZSBkb24ndCBmYWN0b3Igb3V0IHRoZSBjb25zdHJ1Y3RvciBib2R5IHRvIGEg
Y29tbW9uIG1ldGhvZCwgYXMKLSAgLy8gd2UgaGF2ZSB0byBhdm9pZCBhIHBvc3NpYmxlIGNsYXNo
IHdpdGggbWVtYmVycyBvZiBNb2NrQ2xhc3MuCi0gIE5hZ2d5TW9jaygpIHsKLSAgICA6OnRlc3Rp
bmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBs
aWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIC8vIEMrKyBkb2Vzbid0ICh5
ZXQpIGFsbG93IGluaGVyaXRhbmNlIG9mIGNvbnN0cnVjdG9ycywgc28gd2UgaGF2ZQotICAvLyB0
byBkZWZpbmUgaXQgZm9yIGVhY2ggYXJpdHkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMT4KLSAg
ZXhwbGljaXQgTmFnZ3lNb2NrKGNvbnN0IEExJiBhMSkgOiBNb2NrQ2xhc3MoYTEpIHsKLSAgICA6
OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFs
OjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICBOYWdneU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBB
MiYgYTIpIDogTW9ja0NsYXNzKGExLCBhMikgewotICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVu
aW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0Ns
YXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
MiwgdHlwZW5hbWUgQTM+Ci0gIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwg
Y29uc3QgQTMmIGEzKSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzKSB7Ci0gICAgOjp0ZXN0aW5nOjpN
b2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEs
IHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQ+Ci0gIE5hZ2d5TW9jayhjb25z
dCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLAotICAgICAgY29uc3QgQTQmIGE0
KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCkgewotICAgIDo6dGVzdGluZzo6TW9jazo6V2Fy
blVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9j
a0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNT4KLSAgTmFnZ3lNb2Nr
KGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwK
LSAgICAgIGNvbnN0IEE1JiBhNSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KSB7Ci0g
ICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5
cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTY+Ci0gIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEs
IGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBB
NSYgYTUsIGNvbnN0IEE2JiBhNikgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikg
ewotICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4KLSAgTmFnZ3lN
b2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBh
NCwKLSAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcpIDogTW9j
a0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwKLSAgICAgIGE2LCBhNykgewotICAgIDo6dGVzdGlu
Zzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxp
Y2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwK
LSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+Ci0gIE5hZ2d5TW9j
ayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQs
Ci0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBB
OCYgYTgpIDogTW9ja0NsYXNzKGExLAotICAgICAgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgp
IHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAg
IGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1l
IEE4LCB0eXBlbmFtZSBBOT4KLSAgTmFnZ3lNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEy
LCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3Qg
QTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0IEE4JiBhOCwKLSAgICAgIGNvbnN0IEE5JiBhOSkg
OiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgewotICAgIDo6
dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6
OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFt
ZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVu
YW1lIEE5LCB0eXBlbmFtZSBBMTA+Ci0gIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEy
JiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNv
bnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgsIGNvbnN0IEE5JiBhOSwKLSAg
ICAgIGNvbnN0IEExMCYgYTEwKSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBh
NywgYTgsIGE5LCBhMTApIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5n
Q2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMp
KTsKLSAgfQotCi0gIHZpcnR1YWwgfk5hZ2d5TW9jaygpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6
OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24oCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3Rf
PE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhOYWdneU1vY2spOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIE1vY2tD
bGFzcz4KLWNsYXNzIFN0cmljdE1vY2sgOiBwdWJsaWMgTW9ja0NsYXNzIHsKLSBwdWJsaWM6Ci0g
IC8vIFdlIGRvbid0IGZhY3RvciBvdXQgdGhlIGNvbnN0cnVjdG9yIGJvZHkgdG8gYSBjb21tb24g
bWV0aG9kLCBhcwotICAvLyB3ZSBoYXZlIHRvIGF2b2lkIGEgcG9zc2libGUgY2xhc2ggd2l0aCBt
ZW1iZXJzIG9mIE1vY2tDbGFzcy4KLSAgU3RyaWN0TW9jaygpIHsKLSAgICA6OnRlc3Rpbmc6Ok1v
Y2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENh
c3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIC8vIEMrKyBkb2Vzbid0ICh5ZXQpIGFs
bG93IGluaGVyaXRhbmNlIG9mIGNvbnN0cnVjdG9ycywgc28gd2UgaGF2ZQotICAvLyB0byBkZWZp
bmUgaXQgZm9yIGVhY2ggYXJpdHkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMT4KLSAgZXhwbGlj
aXQgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEpIDogTW9ja0NsYXNzKGExKSB7Ci0gICAgOjp0ZXN0
aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1w
bGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMj4KLSAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBh
MikgOiBNb2NrQ2xhc3MoYTEsIGEyKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRl
cmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3Mq
Pih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0
eXBlbmFtZSBBMz4KLSAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29u
c3QgQTMmIGEzKSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2Nr
OjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0
XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQ+Ci0gIFN0cmljdE1vY2soY29uc3Qg
QTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywKLSAgICAgIGNvbnN0IEE0JiBhNCkg
OiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxV
bmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tD
bGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTU+Ci0gIFN0cmljdE1vY2so
Y29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAot
ICAgICAgY29uc3QgQTUmIGE1KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUpIHsKLSAg
ICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVy
bmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlw
ZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNj4KLSAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEs
IGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBB
NSYgYTUsIGNvbnN0IEE2JiBhNikgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNikg
ewotICAgIDo6dGVzdGluZzo6TW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4KLSAgU3RyaWN0
TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYg
YTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3KSA6IE1v
Y2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsCi0gICAgICBhNiwgYTcpIHsKLSAgICA6OnRlc3Rp
bmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBs
aWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUs
Ci0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgotICBTdHJpY3RN
b2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBh
NCwKLSAgICAgIGNvbnN0IEE1JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0
IEE4JiBhOCkgOiBNb2NrQ2xhc3MoYTEsCi0gICAgICBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBh
OCkgewotICAgIDo6dGVzdGluZzo6TW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAg
ICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1l
IEE0LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5h
bWUgQTgsIHR5cGVuYW1lIEE5PgotICBTdHJpY3RNb2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTIm
IGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1JiBhNSwgY29u
c3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0IEE4JiBhOCwKLSAgICAgIGNvbnN0IEE5JiBh
OSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgewotICAg
IDo6dGVzdGluZzo6TW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBl
bmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5
cGVuYW1lIEE5LCB0eXBlbmFtZSBBMTA+Ci0gIFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25z
dCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAotICAgICAgY29uc3QgQTUmIGE1
LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywgY29uc3QgQTgmIGE4LCBjb25zdCBBOSYgYTks
Ci0gICAgICBjb25zdCBBMTAmIGExMCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcsIGE4LCBhOSwgYTEwKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVz
dGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0
aGlzKSk7Ci0gIH0KLQotICB2aXJ0dWFsIH5TdHJpY3RNb2NrKCkgewotICAgIDo6dGVzdGluZzo6
TW9jazo6VW5yZWdpc3RlckNhbGxSZWFjdGlvbigKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0
Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKFN0cmljdE1vY2spOwotfTsKLQotLy8gVGhlIGZvbGxvd2lu
ZyBzcGVjaWFsaXphdGlvbnMgY2F0Y2ggc29tZSAocmVsYXRpdmVseSBtb3JlIGNvbW1vbikKLS8v
IHVzZXIgZXJyb3JzIG9mIG5lc3RpbmcgbmljZSBhbmQgc3RyaWN0IG1vY2tzLiAgVGhleSBkbyBO
T1QgY2F0Y2gKLS8vIGFsbCBwb3NzaWJsZSBlcnJvcnMuCi0KLS8vIFRoZXNlIHNwZWNpYWxpemF0
aW9ucyBhcmUgZGVjbGFyZWQgYnV0IG5vdCBkZWZpbmVkLCBhcyBOaWNlTW9jaywKLS8vIE5hZ2d5
TW9jaywgYW5kIFN0cmljdE1vY2sgY2Fubm90IGJlIG5lc3RlZC4KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE1vY2tDbGFzcz4KLWNsYXNzIE5pY2VNb2NrPE5pY2VNb2NrPE1vY2tDbGFzcz4gPjsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOaWNlTW9jazxOYWdneU1vY2s8TW9j
a0NsYXNzPiA+OwotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIE5pY2VNb2Nr
PFN0cmljdE1vY2s8TW9ja0NsYXNzPiA+OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNz
PgotY2xhc3MgTmFnZ3lNb2NrPE5pY2VNb2NrPE1vY2tDbGFzcz4gPjsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOYWdneU1vY2s8TmFnZ3lNb2NrPE1vY2tDbGFzcz4gPjsK
LXRlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOYWdneU1vY2s8U3RyaWN0TW9j
azxNb2NrQ2xhc3M+ID47Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBT
dHJpY3RNb2NrPE5pY2VNb2NrPE1vY2tDbGFzcz4gPjsKLXRlbXBsYXRlIDx0eXBlbmFtZSBNb2Nr
Q2xhc3M+Ci1jbGFzcyBTdHJpY3RNb2NrPE5hZ2d5TW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgU3RyaWN0TW9jazxTdHJpY3RNb2NrPE1vY2tD
bGFzcz4gPjsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19J
TkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9OSUNFX1NUUklDVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaC5w
dW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJp
Y3QuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWUxY2U3ZjMwOTUxMDk5
YTY5NjIyZjQ1YmMxNWYxNWZiMGZhZjA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVk
LW5pY2Utc3RyaWN0LmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi0kJCAt
Ki0gbW9kZTogYysrOyAtKi0KLSQkIFRoaXMgaXMgYSBQdW1wIHNvdXJjZSBmaWxlLiAgUGxlYXNl
IHVzZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KLSQkIGdtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmlj
dC5oLgotJCQKLSR2YXIgbiA9IDEwICAkJCBUaGUgbWF4aW11bSBhcml0eSB3ZSBzdXBwb3J0Lgot
Ly8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gSW1wbGVtZW50cyBjbGFzcyB0
ZW1wbGF0ZXMgTmljZU1vY2ssIE5hZ2d5TW9jaywgYW5kIFN0cmljdE1vY2suCi0vLwotLy8gR2l2
ZW4gYSBtb2NrIGNsYXNzIE1vY2tGb28gdGhhdCBpcyBjcmVhdGVkIHVzaW5nIEdvb2dsZSBNb2Nr
LAotLy8gTmljZU1vY2s8TW9ja0Zvbz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vIHRoYXQgYWxs
b3dzCi0vLyB1bmludGVyZXN0aW5nIGNhbGxzIChpLmUuIGNhbGxzIHRvIG1vY2sgbWV0aG9kcyB0
aGF0IGhhdmUgbm8KLS8vIEVYUEVDVF9DQUxMIHNwZWNzKSwgTmFnZ3lNb2NrPE1vY2tGb28+IGlz
IGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbwotLy8gdGhhdCBwcmludHMgYSB3YXJuaW5nIHdoZW4gYW4g
dW5pbnRlcmVzdGluZyBjYWxsIG9jY3VycywgYW5kCi0vLyBTdHJpY3RNb2NrPE1vY2tGb28+IGlz
IGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbyB0aGF0IHRyZWF0cyBhbGwKLS8vIHVuaW50ZXJlc3Rpbmcg
Y2FsbHMgYXMgZXJyb3JzLgotLy8KLS8vIEN1cnJlbnRseSBhIG1vY2sgaXMgbmFnZ3kgYnkgZGVm
YXVsdCwgc28gTW9ja0ZvbyBhbmQKLS8vIE5hZ2d5TW9jazxNb2NrRm9vPiBiZWhhdmUgbGlrZSB0
aGUgc2FtZS4gIEhvd2V2ZXIsIHdlIHdpbGwgc29vbgotLy8gc3dpdGNoIHRoZSBkZWZhdWx0IGJl
aGF2aW9yIG9mIG1vY2tzIHRvIGJlIG5pY2UsIGFzIHRoYXQgaW4gZ2VuZXJhbAotLy8gbGVhZHMg
dG8gbW9yZSBtYWludGFpbmFibGUgdGVzdHMuICBXaGVuIHRoYXQgaGFwcGVucywgTW9ja0ZvbyB3
aWxsCi0vLyBzdG9wIGJlaGF2aW5nIGxpa2UgTmFnZ3lNb2NrPE1vY2tGb28+IGFuZCBzdGFydCBi
ZWhhdmluZyBsaWtlCi0vLyBOaWNlTW9jazxNb2NrRm9vPi4KLS8vCi0vLyBOaWNlTW9jaywgTmFn
Z3lNb2NrLCBhbmQgU3RyaWN0TW9jayAiaW5oZXJpdCIgdGhlIGNvbnN0cnVjdG9ycyBvZgotLy8g
dGhlaXIgcmVzcGVjdGl2ZSBiYXNlIGNsYXNzLCB3aXRoIHVwLXRvICRuIGFyZ3VtZW50cy4gIFRo
ZXJlZm9yZQotLy8geW91IGNhbiB3cml0ZSBOaWNlTW9jazxNb2NrRm9vPig1LCAiYSIpIHRvIGNv
bnN0cnVjdCBhIG5pY2UgbW9jawotLy8gd2hlcmUgTW9ja0ZvbyBoYXMgYSBjb25zdHJ1Y3RvciB0
aGF0IGFjY2VwdHMgKGludCwgY29uc3QgY2hhciopLAotLy8gZm9yIGV4YW1wbGUuCi0vLwotLy8g
QSBrbm93biBsaW1pdGF0aW9uIGlzIHRoYXQgTmljZU1vY2s8TW9ja0Zvbz4sIE5hZ2d5TW9jazxN
b2NrRm9vPiwKLS8vIGFuZCBTdHJpY3RNb2NrPE1vY2tGb28+IG9ubHkgd29ya3MgZm9yIG1vY2sg
bWV0aG9kcyBkZWZpbmVkIHVzaW5nCi0vLyB0aGUgTU9DS19NRVRIT0QqIGZhbWlseSBvZiBtYWNy
b3MgRElSRUNUTFkgaW4gdGhlIE1vY2tGb28gY2xhc3MuCi0vLyBJZiBhIG1vY2sgbWV0aG9kIGlz
IGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzIG9mIE1vY2tGb28sIHRoZSAibmljZSIKLS8vIG9yICJz
dHJpY3QiIG1vZGlmaWVyIG1heSBub3QgYWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBp
bGVyLgotLy8gSW4gcGFydGljdWxhciwgbmVzdGluZyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBhbmQg
U3RyaWN0TW9jayBpcyBOT1QKLS8vIHN1cHBvcnRlZC4KLS8vCi0vLyBBbm90aGVyIGtub3duIGxp
bWl0YXRpb24gaXMgdGhhdCB0aGUgY29uc3RydWN0b3JzIG9mIHRoZSBiYXNlIG1vY2sKLS8vIGNh
bm5vdCBoYXZlIGFyZ3VtZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2gg
YXJlCi0vLyBiYW5uZWQgYnkgdGhlIEdvb2dsZSBDKysgc3R5bGUgZ3VpZGUgYW55d2F5LgotCi0j
aWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNUX0hf
Ci0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNU
X0hfCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgiCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLSRy
YW5nZSBraW5kIDAuLjIKLSRmb3Iga2luZCBbWwotCi0kdmFyIGNsYXp6PVtbJGlmIGtpbmQ9PTAg
W1tOaWNlTW9ja11dCi0gICAgICAgICAgICAgJGVsaWYga2luZD09MSBbW05hZ2d5TW9ja11dCi0g
ICAgICAgICAgICAgJGVsc2UgW1tTdHJpY3RNb2NrXV1dXQotCi0kdmFyIG1ldGhvZD1bWyRpZiBr
aW5kPT0wIFtbQWxsb3dVbmludGVyZXN0aW5nQ2FsbHNdXQotICAgICAgICAgICAgICRlbGlmIGtp
bmQ9PTEgW1tXYXJuVW5pbnRlcmVzdGluZ0NhbGxzXV0KLSAgICAgICAgICAgICAkZWxzZSBbW0Zh
aWxVbmludGVyZXN0aW5nQ2FsbHNdXV1dCi0KLXRlbXBsYXRlIDxjbGFzcyBNb2NrQ2xhc3M+Ci1j
bGFzcyAkY2xhenogOiBwdWJsaWMgTW9ja0NsYXNzIHsKLSBwdWJsaWM6Ci0gIC8vIFdlIGRvbid0
IGZhY3RvciBvdXQgdGhlIGNvbnN0cnVjdG9yIGJvZHkgdG8gYSBjb21tb24gbWV0aG9kLCBhcwot
ICAvLyB3ZSBoYXZlIHRvIGF2b2lkIGEgcG9zc2libGUgY2xhc2ggd2l0aCBtZW1iZXJzIG9mIE1v
Y2tDbGFzcy4KLSAgJGNsYXp6KCkgewotICAgIDo6dGVzdGluZzo6TW9jazo6JG1ldGhvZCgKLSAg
ICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0K
LSAgLy8gQysrIGRvZXNuJ3QgKHlldCkgYWxsb3cgaW5oZXJpdGFuY2Ugb2YgY29uc3RydWN0b3Jz
LCBzbyB3ZSBoYXZlCi0gIC8vIHRvIGRlZmluZSBpdCBmb3IgZWFjaCBhcml0eS4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIEExPgotICBleHBsaWNpdCAkY2xhenooY29uc3QgQTEmIGExKSA6IE1vY2tD
bGFzcyhhMSkgewotICAgIDo6dGVzdGluZzo6TW9jazo6JG1ldGhvZCgKLSAgICAgICAgaW50ZXJu
YWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSRyYW5nZSBpIDIu
Lm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVu
YW1lIEEkal1dPgotICAkY2xhenooJGZvciBqLCBbW2NvbnN0IEEkaiYgYSRqXV0pIDogTW9ja0Ns
YXNzKCRmb3IgaiwgW1thJGpdXSkgewotICAgIDo6dGVzdGluZzo6TW9jazo6JG1ldGhvZCgKLSAg
ICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0K
LQotXV0KLSAgdmlydHVhbCB+JGNsYXp6KCkgewotICAgIDo6dGVzdGluZzo6TW9jazo6VW5yZWdp
c3RlckNhbGxSZWFjdGlvbigKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0Ns
YXNzKj4odGhpcykpOwotICB9Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKCRjbGF6eik7Ci19OwotCi1dXQotCi0vLyBUaGUgZm9sbG93aW5nIHNwZWNpYWxp
emF0aW9ucyBjYXRjaCBzb21lIChyZWxhdGl2ZWx5IG1vcmUgY29tbW9uKQotLy8gdXNlciBlcnJv
cnMgb2YgbmVzdGluZyBuaWNlIGFuZCBzdHJpY3QgbW9ja3MuICBUaGV5IGRvIE5PVCBjYXRjaAot
Ly8gYWxsIHBvc3NpYmxlIGVycm9ycy4KLQotLy8gVGhlc2Ugc3BlY2lhbGl6YXRpb25zIGFyZSBk
ZWNsYXJlZCBidXQgbm90IGRlZmluZWQsIGFzIE5pY2VNb2NrLAotLy8gTmFnZ3lNb2NrLCBhbmQg
U3RyaWN0TW9jayBjYW5ub3QgYmUgbmVzdGVkLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0Ns
YXNzPgotY2xhc3MgTmljZU1vY2s8TmljZU1vY2s8TW9ja0NsYXNzPiA+OwotdGVtcGxhdGUgPHR5
cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIE5pY2VNb2NrPE5hZ2d5TW9jazxNb2NrQ2xhc3M+ID47
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmljZU1vY2s8U3RyaWN0TW9j
azxNb2NrQ2xhc3M+ID47Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBO
YWdneU1vY2s8TmljZU1vY2s8TW9ja0NsYXNzPiA+OwotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tD
bGFzcz4KLWNsYXNzIE5hZ2d5TW9jazxOYWdneU1vY2s8TW9ja0NsYXNzPiA+OwotdGVtcGxhdGUg
PHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIE5hZ2d5TW9jazxTdHJpY3RNb2NrPE1vY2tDbGFz
cz4gPjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIFN0cmljdE1vY2s8
TmljZU1vY2s8TW9ja0NsYXNzPiA+OwotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNs
YXNzIFN0cmljdE1vY2s8TmFnZ3lNb2NrPE1vY2tDbGFzcz4gPjsKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBNb2NrQ2xhc3M+Ci1jbGFzcyBTdHJpY3RNb2NrPFN0cmljdE1vY2s8TW9ja0NsYXNzPiA+Owot
Ci19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01P
Q0tfR01PQ0tfR0VORVJBVEVEX05JQ0VfU1RSSUNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1hdGNoZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dt
b2NrL2dtb2NrLW1hdGNoZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZGU1
YjY0ODhmOWFiZmRlMTA0MjIwMjM1YjJmODYxMGE4Y2M5NmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9j
ay1tYXRjaGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDM5NyArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZv
ciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
c29tZSBjb21tb25seSB1c2VkIGFyZ3VtZW50IG1hdGNoZXJzLiAgTW9yZQotLy8gbWF0Y2hlcnMg
Y2FuIGJlIGRlZmluZWQgYnkgdGhlIHVzZXIgaW1wbGVtZW50aW5nIHRoZQotLy8gTWF0Y2hlcklu
dGVyZmFjZTxUPiBpbnRlcmZhY2UgaWYgbmVjZXNzYXJ5LgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xV
REVfR01PQ0tfR01PQ0tfTUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19H
TU9DS19NQVRDSEVSU19IXwotCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8b3N0
cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiZ21vY2sv
aW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRlICJnbW9jay9pbnRlcm5h
bC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX0hB
U19TVERfSU5JVElBTElaRVJfTElTVF8KLSMgaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4gIC8v
IE5PTElOVCAtLSBtdXN0IGJlIGFmdGVyIGd0ZXN0LmgKLSNlbmRpZgotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci0KLS8vIFRvIGltcGxlbWVudCBhIG1hdGNoZXIgRm9vIGZvciB0eXBlIFQsIGRlZmlu
ZToKLS8vICAgMS4gYSBjbGFzcyBGb29NYXRjaGVySW1wbCB0aGF0IGltcGxlbWVudHMgdGhlCi0v
LyAgICAgIE1hdGNoZXJJbnRlcmZhY2U8VD4gaW50ZXJmYWNlLCBhbmQKLS8vICAgMi4gYSBmYWN0
b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIE1hdGNoZXI8VD4gb2JqZWN0IGZyb20gYQotLy8g
ICAgICBGb29NYXRjaGVySW1wbCouCi0vLwotLy8gVGhlIHR3by1sZXZlbCBkZWxlZ2F0aW9uIGRl
c2lnbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBhbGxvdyBhIHVzZXIKLS8vIHRvIHdyaXRlICJ2IiBp
bnN0ZWFkIG9mICJFcSh2KSIgd2hlcmUgYSBNYXRjaGVyIGlzIGV4cGVjdGVkLCB3aGljaAotLy8g
aXMgaW1wb3NzaWJsZSBpZiB3ZSBwYXNzIG1hdGNoZXJzIGJ5IHBvaW50ZXJzLiAgSXQgYWxzbyBl
YXNlcwotLy8gb3duZXJzaGlwIG1hbmFnZW1lbnQgYXMgTWF0Y2hlciBvYmplY3RzIGNhbiBub3cg
YmUgY29waWVkIGxpa2UKLS8vIHBsYWluIHZhbHVlcy4KLQotLy8gTWF0Y2hSZXN1bHRMaXN0ZW5l
ciBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gIEl0cyA8PCBvcGVyYXRvciBjYW4gYmUKLS8vIHVzZWQg
YnkgYSBtYXRjaGVyIHRvIGV4cGxhaW4gd2h5IGEgdmFsdWUgbWF0Y2hlcyBvciBkb2Vzbid0IG1h
dGNoLgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBhZGQgbWV0aG9kCi0vLyAgIGJvb2wg
SW50ZXJlc3RlZEluV2h5KGJvb2wgcmVzdWx0KSBjb25zdDsKLS8vIHRvIGluZGljYXRlIHdoZXRo
ZXIgdGhlIGxpc3RlbmVyIGlzIGludGVyZXN0ZWQgaW4gd2h5IHRoZSBtYXRjaAotLy8gcmVzdWx0
IGlzICdyZXN1bHQnLgotY2xhc3MgTWF0Y2hSZXN1bHRMaXN0ZW5lciB7Ci0gcHVibGljOgotICAv
LyBDcmVhdGVzIGEgbGlzdGVuZXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHVuZGVybHlpbmcgb3N0
cmVhbS4gIFRoZQotICAvLyBsaXN0ZW5lciBkb2VzIG5vdCBvd24gdGhlIG9zdHJlYW0sIGFuZCBk
b2VzIG5vdCBkZXJlZmVyZW5jZSBpdAotICAvLyBpbiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1
Y3Rvci4KLSAgZXhwbGljaXQgTWF0Y2hSZXN1bHRMaXN0ZW5lcig6OnN0ZDo6b3N0cmVhbSogb3Mp
IDogc3RyZWFtXyhvcykge30KLSAgdmlydHVhbCB+TWF0Y2hSZXN1bHRMaXN0ZW5lcigpID0gMDsg
IC8vIE1ha2VzIHRoaXMgY2xhc3MgYWJzdHJhY3QuCi0KLSAgLy8gU3RyZWFtcyB4IHRvIHRoZSB1
bmRlcmx5aW5nIG9zdHJlYW07IGRvZXMgbm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAvLyBpcyBO
VUxMLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5lciYgb3Bl
cmF0b3I8PChjb25zdCBUJiB4KSB7Ci0gICAgaWYgKHN0cmVhbV8gIT0gTlVMTCkKLSAgICAgICpz
dHJlYW1fIDw8IHg7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUg
dW5kZXJseWluZyBvc3RyZWFtLgotICA6OnN0ZDo6b3N0cmVhbSogc3RyZWFtKCkgeyByZXR1cm4g
c3RyZWFtXzsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGxpc3RlbmVyIGlzIGludGVy
ZXN0ZWQgaW4gYW4gZXhwbGFuYXRpb24gb2YKLSAgLy8gdGhlIG1hdGNoIHJlc3VsdC4gIEEgbWF0
Y2hlcidzIE1hdGNoQW5kRXhwbGFpbigpIG1ldGhvZCBjYW4gdXNlCi0gIC8vIHRoaXMgaW5mb3Jt
YXRpb24gdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgZXhwbGFuYXRpb24gd2hlbiBubyBvbmUKLSAg
Ly8gaW50ZW5kcyB0byBoZWFyIGl0LgotICBib29sIElzSW50ZXJlc3RlZCgpIGNvbnN0IHsgcmV0
dXJuIHN0cmVhbV8gIT0gTlVMTDsgfQotCi0gcHJpdmF0ZToKLSAgOjpzdGQ6Om9zdHJlYW0qIGNv
bnN0IHN0cmVhbV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNYXRjaFJl
c3VsdExpc3RlbmVyKTsKLX07Ci0KLWlubGluZSBNYXRjaFJlc3VsdExpc3RlbmVyOjp+TWF0Y2hS
ZXN1bHRMaXN0ZW5lcigpIHsKLX0KLQotLy8gQW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiB0
aGlzIGtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGYgYXMgYQotLy8gbWF0Y2hlci4KLWNsYXNz
IE1hdGNoZXJEZXNjcmliZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+TWF0Y2hl
ckRlc2NyaWJlckludGVyZmFjZSgpIHt9Ci0KLSAgLy8gRGVzY3JpYmVzIHRoaXMgbWF0Y2hlciB0
byBhbiBvc3RyZWFtLiAgVGhlIGZ1bmN0aW9uIHNob3VsZCBwcmludAotICAvLyBhIHZlcmIgcGhy
YXNlIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm9wZXJ0eSBhIHZhbHVlIG1hdGNoaW5nIHRoaXMKLSAg
Ly8gbWF0Y2hlciBzaG91bGQgaGF2ZS4gIFRoZSBzdWJqZWN0IG9mIHRoZSB2ZXJiIHBocmFzZSBp
cyB0aGUgdmFsdWUKLSAgLy8gYmVpbmcgbWF0Y2hlZC4gIEZvciBleGFtcGxlLCB0aGUgRGVzY3Jp
YmVUbygpIG1ldGhvZCBvZiB0aGUgR3QoNykKLSAgLy8gbWF0Y2hlciBwcmludHMgImlzIGdyZWF0
ZXIgdGhhbiA3Ii4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9z
KSBjb25zdCA9IDA7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNo
ZXIgdG8gYW4gb3N0cmVhbS4gIEZvcgotICAvLyBleGFtcGxlLCBpZiB0aGUgZGVzY3JpcHRpb24g
b2YgdGhpcyBtYXRjaGVyIGlzICJpcyBncmVhdGVyIHRoYW4KLSAgLy8gNyIsIHRoZSBuZWdhdGVk
IGRlc2NyaXB0aW9uIGNvdWxkIGJlICJpcyBub3QgZ3JlYXRlciB0aGFuIDciLgotICAvLyBZb3Ug
YXJlIG5vdCByZXF1aXJlZCB0byBvdmVycmlkZSB0aGlzIHdoZW4gaW1wbGVtZW50aW5nCi0gIC8v
IE1hdGNoZXJJbnRlcmZhY2UsIGJ1dCBpdCBpcyBoaWdobHkgYWR2aXNlZCBzbyB0aGF0IHlvdXIg
bWF0Y2hlcgotICAvLyBjYW4gcHJvZHVjZSBnb29kIGVycm9yIG1lc3NhZ2VzLgotICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAg
ICpvcyA8PCAibm90ICgiOwotICAgIERlc2NyaWJlVG8ob3MpOwotICAgICpvcyA8PCAiKSI7Ci0g
IH0KLX07Ci0KLS8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIG1hdGNoZXIuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXJJbnRlcmZhY2UgOiBwdWJsaWMgTWF0Y2hlckRlc2Ny
aWJlckludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRj
aGVyIG1hdGNoZXMgeDsgYWxzbyBleHBsYWlucyB0aGUgbWF0Y2gKLSAgLy8gcmVzdWx0IHRvICds
aXN0ZW5lcicgaWYgbmVjZXNzYXJ5IChzZWUgdGhlIG5leHQgcGFyYWdyYXBoKSwgaW4KLSAgLy8g
dGhlIGZvcm0gb2YgYSBub24tcmVzdHJpY3RpdmUgcmVsYXRpdmUgY2xhdXNlICgid2hpY2ggLi4u
IiwKLSAgLy8gIndob3NlIC4uLiIsIGV0YykgdGhhdCBkZXNjcmliZXMgeC4gIEZvciBleGFtcGxl
LCB0aGUKLSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgbWV0aG9kIG9mIHRoZSBQb2ludGVlKC4uLikg
bWF0Y2hlciBzaG91bGQKLSAgLy8gZ2VuZXJhdGUgYW4gZXhwbGFuYXRpb24gbGlrZSAid2hpY2gg
cG9pbnRzIHRvIC4uLiIuCi0gIC8vCi0gIC8vIEltcGxlbWVudGF0aW9ucyBvZiBNYXRjaEFuZEV4
cGxhaW4oKSBzaG91bGQgYWRkIGFuIGV4cGxhbmF0aW9uIG9mCi0gIC8vIHRoZSBtYXRjaCByZXN1
bHQgKmlmIGFuZCBvbmx5IGlmKiB0aGV5IGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKLSAgLy8gaW5m
b3JtYXRpb24gdGhhdCdzIG5vdCBhbHJlYWR5IHByZXNlbnQgKG9yIG5vdCBvYnZpb3VzKSBpbiB0
aGUKLSAgLy8gcHJpbnQtb3V0IG9mIHggYW5kIHRoZSBtYXRjaGVyJ3MgZGVzY3JpcHRpb24uICBX
aGV0aGVyIHRoZSBtYXRjaAotICAvLyBzdWNjZWVkcyBpcyBub3QgYSBmYWN0b3IgaW4gZGVjaWRp
bmcgd2hldGhlciBhbiBleHBsYW5hdGlvbiBpcwotICAvLyBuZWVkZWQsIGFzIHNvbWV0aW1lcyB0
aGUgY2FsbGVyIG5lZWRzIHRvIHByaW50IGEgZmFpbHVyZSBtZXNzYWdlCi0gIC8vIHdoZW4gdGhl
IG1hdGNoIHN1Y2NlZWRzIChlLmcuIHdoZW4gdGhlIG1hdGNoZXIgaXMgdXNlZCBpbnNpZGUKLSAg
Ly8gTm90KCkpLgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwgYSAiaGFzIGF0IGxlYXN0IDEwIGVs
ZW1lbnRzIiBtYXRjaGVyIHNob3VsZCBleHBsYWluCi0gIC8vIHdoYXQgdGhlIGFjdHVhbCBlbGVt
ZW50IGNvdW50IGlzLCByZWdhcmRsZXNzIG9mIHRoZSBtYXRjaCByZXN1bHQsCi0gIC8vIGFzIGl0
IGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB0aGUgcmVhZGVyOyBvbiB0aGUgb3RoZXIgaGFuZCwg
YW4KLSAgLy8gImlzIGVtcHR5IiBtYXRjaGVyIHByb2JhYmx5IG9ubHkgbmVlZHMgdG8gZXhwbGFp
biB3aGF0IHRoZSBhY3R1YWwKLSAgLy8gc2l6ZSBpcyB3aGVuIHRoZSBtYXRjaCBmYWlscywgYXMg
aXQncyByZWR1bmRhbnQgdG8gc2F5IHRoYXQgdGhlCi0gIC8vIHNpemUgaXMgMCB3aGVuIHRoZSB2
YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGJlIGVtcHR5LgotICAvLwotICAvLyBZb3Ugc2hvdWxk
IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHdoZW4gZGVmaW5pbmcgYSBuZXcgbWF0Y2hlci4KLSAgLy8K
LSAgLy8gSXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciAoR29vZ2xlIE1vY2sp
IHRvIGd1YXJhbnRlZQotICAvLyB0aGF0ICdsaXN0ZW5lcicgaXMgbm90IE5VTEwuICBUaGlzIGhl
bHBzIHRvIHNpbXBsaWZ5IGEgbWF0Y2hlcidzCi0gIC8vIGltcGxlbWVudGF0aW9uIHdoZW4gaXQg
ZG9lc24ndCBjYXJlIGFib3V0IHRoZSBwZXJmb3JtYW5jZSwgYXMgaXQKLSAgLy8gY2FuIHRhbGsg
dG8gJ2xpc3RlbmVyJyB3aXRob3V0IGNoZWNraW5nIGl0cyB2YWxpZGl0eSBmaXJzdC4KLSAgLy8g
SG93ZXZlciwgaW4gb3JkZXIgdG8gaW1wbGVtZW50IGR1bW15IGxpc3RlbmVycyBlZmZpY2llbnRs
eSwKLSAgLy8gbGlzdGVuZXItPnN0cmVhbSgpIG1heSBiZSBOVUxMLgotICB2aXJ0dWFsIGJvb2wg
TWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
ID0gMDsKLQotICAvLyBJbmhlcml0cyB0aGVzZSBtZXRob2RzIGZyb20gTWF0Y2hlckRlc2NyaWJl
ckludGVyZmFjZToKLSAgLy8gICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0ID0gMDsKLSAgLy8gICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7Ci19OwotCi0vLyBBIG1hdGNoIHJlc3VsdCBsaXN0
ZW5lciB0aGF0IHN0b3JlcyB0aGUgZXhwbGFuYXRpb24gaW4gYSBzdHJpbmcuCi1jbGFzcyBTdHJp
bmdNYXRjaFJlc3VsdExpc3RlbmVyIDogcHVibGljIE1hdGNoUmVzdWx0TGlzdGVuZXIgewotIHB1
YmxpYzoKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lcigpIDogTWF0Y2hSZXN1bHRMaXN0ZW5l
cigmc3NfKSB7fQotCi0gIC8vIFJldHVybnMgdGhlIGV4cGxhbmF0aW9uIGFjY3VtdWxhdGVkIHNv
IGZhci4KLSAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QgeyByZXR1cm4gc3NfLnN0cigpOyB9Ci0K
LSAgLy8gQ2xlYXJzIHRoZSBleHBsYW5hdGlvbiBhY2N1bXVsYXRlZCBzbyBmYXIuCi0gIHZvaWQg
Q2xlYXIoKSB7IHNzXy5zdHIoIiIpOyB9Ci0KLSBwcml2YXRlOgotICA6OnN0ZDo6c3RyaW5nc3Ry
ZWFtIHNzXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmluZ01hdGNo
UmVzdWx0TGlzdGVuZXIpOwotfTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotc3RydWN0IEFu
eUVxIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIGJvb2wgb3BlcmF0
b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7IHJldHVybiBhID09IGI7IH0KLX07
Ci1zdHJ1Y3QgQW55TmUgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KLSAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsgcmV0dXJuIGEg
IT0gYjsgfQotfTsKLXN0cnVjdCBBbnlMdCB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBl
bmFtZSBCPgotICBib29sIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikgY29uc3Qg
eyByZXR1cm4gYSA8IGI7IH0KLX07Ci1zdHJ1Y3QgQW55R3QgewotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQSwgdHlwZW5hbWUgQj4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEIm
IGIpIGNvbnN0IHsgcmV0dXJuIGEgPiBiOyB9Ci19Owotc3RydWN0IEFueUxlIHsKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBBJiBh
LCBjb25zdCBCJiBiKSBjb25zdCB7IHJldHVybiBhIDw9IGI7IH0KLX07Ci1zdHJ1Y3QgQW55R2Ug
ewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KLSAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsgcmV0dXJuIGEgPj0gYjsgfQotfTsKLQot
Ly8gQSBtYXRjaCByZXN1bHQgbGlzdGVuZXIgdGhhdCBpZ25vcmVzIHRoZSBleHBsYW5hdGlvbi4K
LWNsYXNzIER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lciA6IHB1YmxpYyBNYXRjaFJlc3VsdExpc3Rl
bmVyIHsKLSBwdWJsaWM6Ci0gIER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lcigpIDogTWF0Y2hSZXN1
bHRMaXN0ZW5lcihOVUxMKSB7fQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhEdW1teU1hdGNoUmVzdWx0TGlzdGVuZXIpOwotfTsKLQotLy8gQSBtYXRjaCBy
ZXN1bHQgbGlzdGVuZXIgdGhhdCBmb3J3YXJkcyB0aGUgZXhwbGFuYXRpb24gdG8gYSBnaXZlbgot
Ly8gb3N0cmVhbS4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgTWF0Y2hSZXN1bHRM
aXN0ZW5lciBpcwotLy8gdGhhdCB0aGUgZm9ybWVyIGlzIGNvbmNyZXRlLgotY2xhc3MgU3RyZWFt
TWF0Y2hSZXN1bHRMaXN0ZW5lciA6IHB1YmxpYyBNYXRjaFJlc3VsdExpc3RlbmVyIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIoOjpzdGQ6Om9zdHJlYW0q
IG9zKQotICAgICAgOiBNYXRjaFJlc3VsdExpc3RlbmVyKG9zKSB7fQotCi0gcHJpdmF0ZToKLSAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1NYXRjaFJlc3VsdExpc3RlbmVy
KTsKLX07Ci0KLS8vIEFuIGludGVybmFsIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgTWF0Y2hlcjxU
Piwgd2hpY2ggd2lsbCBkZXJpdmUKLS8vIGZyb20gaXQuICBXZSBwdXQgZnVuY3Rpb25hbGl0aWVz
IGNvbW1vbiB0byBhbGwgTWF0Y2hlcjxUPgotLy8gc3BlY2lhbGl6YXRpb25zIGhlcmUgdG8gYXZv
aWQgY29kZSBkdXBsaWNhdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTWF0Y2hl
ckJhc2UgewotIHB1YmxpYzoKLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBtYXRj
aGVzIHg7IGFsc28gZXhwbGFpbnMgdGhlIG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlzdGVuZXIn
LgotICBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGltcGxfLT5NYXRjaEFuZEV4cGxhaW4oeCwgbGlzdGVu
ZXIpOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIG1hdGNoZXIgbWF0Y2hlcyB4
LgotICBib29sIE1hdGNoZXMoVCB4KSBjb25zdCB7Ci0gICAgRHVtbXlNYXRjaFJlc3VsdExpc3Rl
bmVyIGR1bW15OwotICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW4oeCwgJmR1bW15KTsKLSAgfQot
Ci0gIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KLSAgdm9pZCBEZXNj
cmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyBpbXBsXy0+RGVzY3JpYmVUbyhvcyk7
IH0KLQotICAvLyBEZXNjcmliZXMgdGhlIG5lZ2F0aW9uIG9mIHRoaXMgbWF0Y2hlciB0byBhbiBv
c3RyZWFtLgotICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICBpbXBsXy0+RGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgfQotCi0gIC8vIEV4
cGxhaW5zIHdoeSB4IG1hdGNoZXMsIG9yIGRvZXNuJ3QgbWF0Y2gsIHRoZSBtYXRjaGVyLgotICB2
b2lkIEV4cGxhaW5NYXRjaFJlc3VsdFRvKFQgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7
Ci0gICAgU3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcihvcyk7Ci0gICAgTWF0Y2hB
bmRFeHBsYWluKHgsICZsaXN0ZW5lcik7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBkZXNjcmli
ZXIgZm9yIHRoaXMgbWF0Y2hlciBvYmplY3Q7IHJldGFpbnMgb3duZXJzaGlwCi0gIC8vIG9mIHRo
ZSBkZXNjcmliZXIsIHdoaWNoIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBiZSBhbGl2ZSB3aGVuCi0g
IC8vIHRoaXMgbWF0Y2hlciBvYmplY3QgaXMgYWxpdmUuCi0gIGNvbnN0IE1hdGNoZXJEZXNjcmli
ZXJJbnRlcmZhY2UqIEdldERlc2NyaWJlcigpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbF8uZ2V0
KCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgTWF0Y2hlckJhc2UoKSB7fQotCi0gIC8vIENvbnN0
cnVjdHMgYSBtYXRjaGVyIGZyb20gaXRzIGltcGxlbWVudGF0aW9uLgotICBleHBsaWNpdCBNYXRj
aGVyQmFzZShjb25zdCBNYXRjaGVySW50ZXJmYWNlPFQ+KiBpbXBsKQotICAgICAgOiBpbXBsXyhp
bXBsKSB7fQotCi0gIHZpcnR1YWwgfk1hdGNoZXJCYXNlKCkge30KLQotIHByaXZhdGU6Ci0gIC8v
IHNoYXJlZF9wdHIgKHV0aWwvZ3RsL3NoYXJlZF9wdHIuaCkgYW5kIGxpbmtlZF9wdHIgaGF2ZSBz
aW1pbGFyCi0gIC8vIGludGVyZmFjZXMuICBUaGUgZm9ybWVyIGR5bmFtaWNhbGx5IGFsbG9jYXRl
cyBhIGNodW5rIG9mIG1lbW9yeQotICAvLyB0byBob2xkIHRoZSByZWZlcmVuY2UgY291bnQsIHdo
aWxlIHRoZSBsYXR0ZXIgdHJhY2tzIGFsbAotICAvLyByZWZlcmVuY2VzIHVzaW5nIGEgY2lyY3Vs
YXIgbGlua2VkIGxpc3Qgd2l0aG91dCBhbGxvY2F0aW5nCi0gIC8vIG1lbW9yeS4gIEl0IGhhcyBi
ZWVuIG9ic2VydmVkIHRoYXQgbGlua2VkX3B0ciBwZXJmb3JtcyBiZXR0ZXIgaW4KLSAgLy8gdHlw
aWNhbCBzY2VuYXJpb3MuICBIb3dldmVyLCBzaGFyZWRfcHRyIGNhbiBvdXQtcGVyZm9ybQotICAv
LyBsaW5rZWRfcHRyIHdoZW4gdGhlcmUgYXJlIG1hbnkgbW9yZSB1c2VzIG9mIHRoZSBjb3B5IGNv
bnN0cnVjdG9yCi0gIC8vIHRoYW4gdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCi0gIC8vCi0gIC8v
IElmIHBlcmZvcm1hbmNlIGJlY29tZXMgYSBwcm9ibGVtLCB3ZSBzaG91bGQgc2VlIGlmIHVzaW5n
Ci0gIC8vIHNoYXJlZF9wdHIgaGVscHMuCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9w
dHI8Y29uc3QgTWF0Y2hlckludGVyZmFjZTxUPiA+IGltcGxfOwotfTsKLQotfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCi0KLS8vIEEgTWF0Y2hlcjxUPiBpcyBhIGNvcHlhYmxlIGFuZCBJTU1VVEFC
TEUgKGV4Y2VwdCBieSBhc3NpZ25tZW50KQotLy8gb2JqZWN0IHRoYXQgY2FuIGNoZWNrIHdoZXRo
ZXIgYSB2YWx1ZSBvZiB0eXBlIFQgbWF0Y2hlcy4gIFRoZQotLy8gaW1wbGVtZW50YXRpb24gb2Yg
TWF0Y2hlcjxUPiBpcyBqdXN0IGEgbGlua2VkX3B0ciB0byBjb25zdAotLy8gTWF0Y2hlckludGVy
ZmFjZTxUPiwgc28gY29weWluZyBpcyBmYWlybHkgY2hlYXAuICBEb24ndCBpbmhlcml0Ci0vLyBm
cm9tIE1hdGNoZXIhCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXIgOiBwdWJs
aWMgaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFQ+IHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMg
YSBudWxsIG1hdGNoZXIuICBOZWVkZWQgZm9yIHN0b3JpbmcgTWF0Y2hlciBvYmplY3RzIGluIFNU
TAotICAvLyBjb250YWluZXJzLiAgQSBkZWZhdWx0LWNvbnN0cnVjdGVkIG1hdGNoZXIgaXMgbm90
IHlldCBpbml0aWFsaXplZC4gIFlvdQotICAvLyBjYW5ub3QgdXNlIGl0IHVudGlsIGEgdmFsaWQg
dmFsdWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gaXQuCi0gIGV4cGxpY2l0IE1hdGNoZXIoKSB7fSAg
Ly8gTk9MSU5UCi0KLSAgLy8gQ29uc3RydWN0cyBhIG1hdGNoZXIgZnJvbSBpdHMgaW1wbGVtZW50
YXRpb24uCi0gIGV4cGxpY2l0IE1hdGNoZXIoY29uc3QgTWF0Y2hlckludGVyZmFjZTxUPiogaW1w
bCkKLSAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFQ+KGltcGwpIHt9Ci0KLSAgLy8gSW1w
bGljaXQgY29uc3RydWN0b3IgaGVyZSBhbGxvd3MgcGVvcGxlIHRvIHdyaXRlCi0gIC8vIEVYUEVD
VF9DQUxMKGZvbywgQmFyKDUpKSBpbnN0ZWFkIG9mIEVYUEVDVF9DQUxMKGZvbywgQmFyKEVxKDUp
KSkgc29tZXRpbWVzCi0gIE1hdGNoZXIoVCB2YWx1ZSk7ICAvLyBOT0xJTlQKLX07Ci0KLS8vIFRo
ZSBmb2xsb3dpbmcgdHdvIHNwZWNpYWxpemF0aW9ucyBhbGxvdyB0aGUgdXNlciB0byB3cml0ZSBz
dHIKLS8vIGluc3RlYWQgb2YgRXEoc3RyKSBhbmQgImZvbyIgaW5zdGVhZCBvZiBFcSgiZm9vIikg
d2hlbiBhIHN0cmluZwotLy8gbWF0Y2hlciBpcyBleHBlY3RlZC4KLXRlbXBsYXRlIDw+Ci1jbGFz
cyBHVEVTVF9BUElfIE1hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+Ci0gICAgOiBwdWJs
aWMgaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IGludGVybmFsOjpzdHJpbmcmPiB7Ci0gcHVi
bGljOgotICBNYXRjaGVyKCkge30KLQotICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1hdGNoZXJJ
bnRlcmZhY2U8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+KiBpbXBsKQotICAgICAgOiBpbnRlcm5h
bDo6TWF0Y2hlckJhc2U8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+KGltcGwpIHt9Ci0KLSAgLy8g
QWxsb3dzIHRoZSB1c2VyIHRvIHdyaXRlIHN0ciBpbnN0ZWFkIG9mIEVxKHN0cikgc29tZXRpbWVz
LCB3aGVyZQotICAvLyBzdHIgaXMgYSBzdHJpbmcgb2JqZWN0LgotICBNYXRjaGVyKGNvbnN0IGlu
dGVybmFsOjpzdHJpbmcmIHMpOyAgLy8gTk9MSU5UCi0KLSAgLy8gQWxsb3dzIHRoZSB1c2VyIHRv
IHdyaXRlICJmb28iIGluc3RlYWQgb2YgRXEoImZvbyIpIHNvbWV0aW1lcy4KLSAgTWF0Y2hlcihj
b25zdCBjaGFyKiBzKTsgIC8vIE5PTElOVAotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIEdURVNU
X0FQSV8gTWF0Y2hlcjxpbnRlcm5hbDo6c3RyaW5nPgotICAgIDogcHVibGljIGludGVybmFsOjpN
YXRjaGVyQmFzZTxpbnRlcm5hbDo6c3RyaW5nPiB7Ci0gcHVibGljOgotICBNYXRjaGVyKCkge30K
LQotICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8aW50ZXJuYWw6OnN0
cmluZz4qIGltcGwpCi0gICAgICA6IGludGVybmFsOjpNYXRjaGVyQmFzZTxpbnRlcm5hbDo6c3Ry
aW5nPihpbXBsKSB7fQotCi0gIC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSBzdHIgaW5zdGVh
ZCBvZiBFcShzdHIpIHNvbWV0aW1lcywgd2hlcmUKLSAgLy8gc3RyIGlzIGEgc3RyaW5nIG9iamVj
dC4KLSAgTWF0Y2hlcihjb25zdCBpbnRlcm5hbDo6c3RyaW5nJiBzKTsgIC8vIE5PTElOVAotCi0g
IC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSBz
b21ldGltZXMuCi0gIE1hdGNoZXIoY29uc3QgY2hhciogcyk7ICAvLyBOT0xJTlQKLX07Ci0KLSNp
ZiBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXwotLy8gVGhlIGZvbGxvd2luZyB0d28gc3BlY2lhbGl6
YXRpb25zIGFsbG93IHRoZSB1c2VyIHRvIHdyaXRlIHN0cgotLy8gaW5zdGVhZCBvZiBFcShzdHIp
IGFuZCAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSB3aGVuIGEgU3RyaW5nUGllY2UKLS8vIG1h
dGNoZXIgaXMgZXhwZWN0ZWQuCi10ZW1wbGF0ZSA8PgotY2xhc3MgR1RFU1RfQVBJXyBNYXRjaGVy
PGNvbnN0IFN0cmluZ1BpZWNlJj4KLSAgICA6IHB1YmxpYyBpbnRlcm5hbDo6TWF0Y2hlckJhc2U8
Y29uc3QgU3RyaW5nUGllY2UmPiB7Ci0gcHVibGljOgotICBNYXRjaGVyKCkge30KLQotICBleHBs
aWNpdCBNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8Y29uc3QgU3RyaW5nUGllY2UmPiog
aW1wbCkKLSAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IFN0cmluZ1BpZWNlJj4o
aW1wbCkge30KLQotICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgc3RyIGluc3RlYWQgb2Yg
RXEoc3RyKSBzb21ldGltZXMsIHdoZXJlCi0gIC8vIHN0ciBpcyBhIHN0cmluZyBvYmplY3QuCi0g
IE1hdGNoZXIoY29uc3QgaW50ZXJuYWw6OnN0cmluZyYgcyk7ICAvLyBOT0xJTlQKLQotICAvLyBB
bGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgImZvbyIgaW5zdGVhZCBvZiBFcSgiZm9vIikgc29tZXRp
bWVzLgotICBNYXRjaGVyKGNvbnN0IGNoYXIqIHMpOyAgLy8gTk9MSU5UCi0KLSAgLy8gQWxsb3dz
IHRoZSB1c2VyIHRvIHBhc3MgU3RyaW5nUGllY2VzIGRpcmVjdGx5LgotICBNYXRjaGVyKFN0cmlu
Z1BpZWNlIHMpOyAgLy8gTk9MSU5UCi19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR1RFU1RfQVBJ
XyBNYXRjaGVyPFN0cmluZ1BpZWNlPgotICAgIDogcHVibGljIGludGVybmFsOjpNYXRjaGVyQmFz
ZTxTdHJpbmdQaWVjZT4gewotIHB1YmxpYzoKLSAgTWF0Y2hlcigpIHt9Ci0KLSAgZXhwbGljaXQg
TWF0Y2hlcihjb25zdCBNYXRjaGVySW50ZXJmYWNlPFN0cmluZ1BpZWNlPiogaW1wbCkKLSAgICAg
IDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFN0cmluZ1BpZWNlPihpbXBsKSB7fQotCi0gIC8vIEFs
bG93cyB0aGUgdXNlciB0byB3cml0ZSBzdHIgaW5zdGVhZCBvZiBFcShzdHIpIHNvbWV0aW1lcywg
d2hlcmUKLSAgLy8gc3RyIGlzIGEgc3RyaW5nIG9iamVjdC4KLSAgTWF0Y2hlcihjb25zdCBpbnRl
cm5hbDo6c3RyaW5nJiBzKTsgIC8vIE5PTElOVAotCi0gIC8vIEFsbG93cyB0aGUgdXNlciB0byB3
cml0ZSAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSBzb21ldGltZXMuCi0gIE1hdGNoZXIoY29u
c3QgY2hhciogcyk7ICAvLyBOT0xJTlQKLQotICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gcGFzcyBT
dHJpbmdQaWVjZXMgZGlyZWN0bHkuCi0gIE1hdGNoZXIoU3RyaW5nUGllY2Ugcyk7ICAvLyBOT0xJ
TlQKLX07Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCi0KLS8vIFRoZSBQb2x5
bW9ycGhpY01hdGNoZXIgY2xhc3MgdGVtcGxhdGUgbWFrZXMgaXQgZWFzeSB0byBpbXBsZW1lbnQg
YQotLy8gcG9seW1vcnBoaWMgbWF0Y2hlciAoaS5lLiBhIG1hdGNoZXIgdGhhdCBjYW4gbWF0Y2gg
dmFsdWVzIG9mIG1vcmUKLS8vIHRoYW4gb25lIHR5cGUsIGUuZy4gRXEobikgYW5kIE5vdE51bGwo
KSkuCi0vLwotLy8gVG8gZGVmaW5lIGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgYSB1c2VyIHNob3Vs
ZCBwcm92aWRlIGFuIEltcGwKLS8vIGNsYXNzIHRoYXQgaGFzIGEgRGVzY3JpYmVUbygpIG1ldGhv
ZCBhbmQgYSBEZXNjcmliZU5lZ2F0aW9uVG8oKQotLy8gbWV0aG9kLCBhbmQgZGVmaW5lIGEgbWVt
YmVyIGZ1bmN0aW9uIChvciBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGUpCi0vLwotLy8gICBib29s
IE1hdGNoQW5kRXhwbGFpbihjb25zdCBWYWx1ZSYgdmFsdWUsCi0vLyAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdDsKLS8vCi0vLyBTZWUg
dGhlIGRlZmluaXRpb24gb2YgTm90TnVsbCgpIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCi10ZW1w
bGF0ZSA8Y2xhc3MgSW1wbD4KLWNsYXNzIFBvbHltb3JwaGljTWF0Y2hlciB7Ci0gcHVibGljOgot
ICBleHBsaWNpdCBQb2x5bW9ycGhpY01hdGNoZXIoY29uc3QgSW1wbCYgYW5faW1wbCkgOiBpbXBs
Xyhhbl9pbXBsKSB7fQotCi0gIC8vIFJldHVybnMgYSBtdXRhYmxlIHJlZmVyZW5jZSB0byB0aGUg
dW5kZXJseWluZyBtYXRjaGVyCi0gIC8vIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgSW1wbCYg
bXV0YWJsZV9pbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KLQotICAvLyBSZXR1cm5zIGFuIGltbXV0
YWJsZSByZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgbWF0Y2hlcgotICAvLyBpbXBsZW1lbnRh
dGlvbiBvYmplY3QuCi0gIGNvbnN0IEltcGwmIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBsXzsg
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29u
c3QgewotICAgIHJldHVybiBNYXRjaGVyPFQ+KG5ldyBNb25vbW9ycGhpY0ltcGw8VD4oaW1wbF8p
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNsYXNzIE1v
bm9tb3JwaGljSW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFQ+IHsKLSAgIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBNb25vbW9ycGhpY0ltcGwoY29uc3QgSW1wbCYgaW1wbCkgOiBpbXBsXyhp
bXBsKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9z
KSBjb25zdCB7Ci0gICAgICBpbXBsXy5EZXNjcmliZVRvKG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qgewot
ICAgICAgaW1wbF8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICAgIHJldHVybiBpbXBsXy5NYXRjaEFuZEV4cGxhaW4oeCwgbGlzdGVuZXIp
OwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBJbXBsIGltcGxfOwotCi0gICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhNb25vbW9ycGhpY0ltcGwpOwotICB9OwotCi0gIEltcGwgaW1w
bF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQb2x5bW9ycGhpY01hdGNoZXIpOwotfTsK
LQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgZnJvbSBpdHMgaW1wbGVtZW50YXRpb24uICBUaGlzIGlz
IGVhc2llciB0byB1c2UKLS8vIHRoYW4gdGhlIE1hdGNoZXI8VD4gY29uc3RydWN0b3IgYXMgaXQg
ZG9lc24ndCByZXF1aXJlIHlvdSB0bwotLy8gZXhwbGljaXRseSB3cml0ZSB0aGUgdGVtcGxhdGUg
YXJndW1lbnQsIGUuZy4KLS8vCi0vLyAgIE1ha2VNYXRjaGVyKGZvbyk7Ci0vLyB2cwotLy8gICBN
YXRjaGVyPGNvbnN0IHN0cmluZyY+KGZvbyk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGlu
ZSBNYXRjaGVyPFQ+IE1ha2VNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8VD4qIGltcGwp
IHsKLSAgcmV0dXJuIE1hdGNoZXI8VD4oaW1wbCk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBwb2x5bW9y
cGhpYyBtYXRjaGVyIGZyb20gaXRzIGltcGxlbWVudGF0aW9uLiAgVGhpcyBpcwotLy8gZWFzaWVy
IHRvIHVzZSB0aGFuIHRoZSBQb2x5bW9ycGhpY01hdGNoZXI8SW1wbD4gY29uc3RydWN0b3IgYXMg
aXQKLS8vIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZXhwbGljaXRseSB3cml0ZSB0aGUgdGVtcGxh
dGUgYXJndW1lbnQsIGUuZy4KLS8vCi0vLyAgIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoZm9vKTsK
LS8vIHZzCi0vLyAgIFBvbHltb3JwaGljTWF0Y2hlcjxUeXBlT2ZGb28+KGZvbyk7Ci10ZW1wbGF0
ZSA8Y2xhc3MgSW1wbD4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8SW1wbD4gTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcihjb25zdCBJbXBsJiBpbXBsKSB7Ci0gIHJldHVybiBQb2x5bW9ycGhpY01h
dGNoZXI8SW1wbD4oaW1wbCk7Ci19Ci0KLS8vIEFueXRoaW5nIGluc2lkZSB0aGUgJ2ludGVybmFs
JyBuYW1lc3BhY2UgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04KLS8vIGFuZCBNVVNUIE5PVCBC
RSBVU0VEIElOIFVTRVIgQ09ERSEhIQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGhlIE1h
dGNoZXJDYXN0SW1wbCBjbGFzcyB0ZW1wbGF0ZSBpcyBhIGhlbHBlciBmb3IgaW1wbGVtZW50aW5n
Ci0vLyBNYXRjaGVyQ2FzdCgpLiAgV2UgbmVlZCB0aGlzIGhlbHBlciBpbiBvcmRlciB0byBwYXJ0
aWFsbHkKLS8vIHNwZWNpYWxpemUgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1hdGNoZXJDYXN0KCkg
KEMrKyBhbGxvd3MKLS8vIGNsYXNzL3N0cnVjdCB0ZW1wbGF0ZXMgdG8gYmUgcGFydGlhbGx5IHNw
ZWNpYWxpemVkLCBidXQgbm90Ci0vLyBmdW5jdGlvbiB0ZW1wbGF0ZXMuKS4KLQotLy8gVGhpcyBn
ZW5lcmFsIHZlcnNpb24gaXMgdXNlZCB3aGVuIE1hdGNoZXJDYXN0KCkncyBhcmd1bWVudCBpcyBh
Ci0vLyBwb2x5bW9ycGhpYyBtYXRjaGVyIChpLmUuIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBjb252
ZXJ0ZWQgdG8gYQotLy8gTWF0Y2hlciBidXQgaXMgbm90IG9uZSB5ZXQ7IGZvciBleGFtcGxlLCBF
cSh2YWx1ZSkpIG9yIGEgdmFsdWUgKGZvcgotLy8gZXhhbXBsZSwgImhlbGxvIikuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTT4KLWNsYXNzIE1hdGNoZXJDYXN0SW1wbCB7Ci0gcHVi
bGljOgotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0KGNvbnN0IE0mIHBvbHltb3JwaGljX21hdGNo
ZXJfb3JfdmFsdWUpIHsKLSAgICAvLyBNIGNhbiBiZSBhIHBvbHltb3JoaWMgbWF0Y2hlciwgaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIHVzZQotICAgIC8vIGl0cyBjb252ZXJzaW9uIG9wZXJhdG9y
IHRvIGNyZWF0ZSBNYXRjaGVyPFQ+LiAgT3IgaXQgY2FuIGJlIGEgdmFsdWUKLSAgICAvLyB0aGF0
IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIE1hdGNoZXI8VD4ncyBjb25zdHJ1Y3Rvci4KLSAgICAv
LwotICAgIC8vIFdlIGNhbid0IGNhbGwgTWF0Y2hlcjxUPihwb2x5bW9ycGhpY19tYXRjaGVyX29y
X3ZhbHVlKSB3aGVuIE0gaXMgYQotICAgIC8vIHBvbHltb3JwaGljIG1hdGNoZXIgYmVjYXVzZSBp
dCdsbCBiZSBhbWJpZ3VvdXMgaWYgVCBoYXMgYW4gaW1wbGljaXQKLSAgICAvLyBjb25zdHJ1Y3Rv
ciBmcm9tIE0gKHRoaXMgdXN1YWxseSBoYXBwZW5zIHdoZW4gVCBoYXMgYW4gaW1wbGljaXQKLSAg
ICAvLyBjb25zdHJ1Y3RvciBmcm9tIGFueSB0eXBlKS4KLSAgICAvLwotICAgIC8vIEl0IHdvbid0
IHdvcmsgdG8gdW5jb25kaXRpb25hbGx5IGltcGxpY3RfY2FzdAotICAgIC8vIHBvbHltb3JwaGlj
X21hdGNoZXJfb3JfdmFsdWUgdG8gTWF0Y2hlcjxUPiBiZWNhdXNlIGl0IHdvbid0IHRyaWdnZXIK
LSAgICAvLyBhIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uIGZyb20gTSB0byBUIGlmIG9uZSBleGlz
dHMgKGFzc3VtaW5nIE0gaXMKLSAgICAvLyBhIHZhbHVlKS4KLSAgICByZXR1cm4gQ2FzdEltcGwo
Ci0gICAgICAgIHBvbHltb3JwaGljX21hdGNoZXJfb3JfdmFsdWUsCi0gICAgICAgIEJvb2xlYW5D
b25zdGFudDwKLSAgICAgICAgICAgIGludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8TSwg
TWF0Y2hlcjxUPiA+Ojp2YWx1ZT4oKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBNYXRj
aGVyPFQ+IENhc3RJbXBsKGNvbnN0IE0mIHZhbHVlLCBCb29sZWFuQ29uc3RhbnQ8ZmFsc2U+KSB7
Ci0gICAgLy8gTSBjYW4ndCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBNYXRjaGVyPFQ+LCBz
byBNIGlzbid0IGEgcG9seW1vcnBoaWMKLSAgICAvLyBtYXRjaGVyLiAgSXQgbXVzdCBiZSBhIHZh
bHVlIHRoZW4uICBVc2UgZGlyZWN0IGluaXRpYWxpemF0aW9uIHRvIGNyZWF0ZQotICAgIC8vIGEg
bWF0Y2hlci4KLSAgICByZXR1cm4gTWF0Y2hlcjxUPihJbXBsaWNpdENhc3RfPFQ+KHZhbHVlKSk7
Ci0gIH0KLQotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0SW1wbChjb25zdCBNJiBwb2x5bW9ycGhp
Y19tYXRjaGVyX29yX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFu
Q29uc3RhbnQ8dHJ1ZT4pIHsKLSAgICAvLyBNIGlzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8g
TWF0Y2hlcjxUPiwgd2hpY2ggbWVhbnMgdGhhdCBlaXRoZXIKLSAgICAvLyBNIGlzIGEgcG9seW1v
cmhwaWMgbWF0Y2hlciBvciBNYXRjaGVyPFQ+IGhhcyBhbiBpbXBsaWNpdCBjb25zdHJ1Y3Rvcgot
ICAgIC8vIGZyb20gTS4gIEluIGJvdGggY2FzZXMgdXNpbmcgdGhlIGltcGxpY2l0IGNvbnZlcnNp
b24gd2lsbCBwcm9kdWNlIGEKLSAgICAvLyBtYXRjaGVyLgotICAgIC8vCi0gICAgLy8gRXZlbiBp
ZiBUIGhhcyBhbiBpbXBsaWNpdCBjb25zdHJ1Y3RvciBmcm9tIE0sIGl0IHdvbid0IGJlIGNhbGxl
ZCBiZWNhdXNlCi0gICAgLy8gY3JlYXRpbmcgTWF0Y2hlcjxUPiB3b3VsZCByZXF1aXJlIGEgY2hh
aW4gb2YgdHdvIHVzZXItZGVmaW5lZCBjb252ZXJzaW9ucwotICAgIC8vIChmaXJzdCB0byBjcmVh
dGUgVCBmcm9tIE0gYW5kIHRoZW4gdG8gY3JlYXRlIE1hdGNoZXI8VD4gZnJvbSBUKS4KLSAgICBy
ZXR1cm4gcG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZTsKLSAgfQotfTsKLQotLy8gVGhpcyBt
b3JlIHNwZWNpYWxpemVkIHZlcnNpb24gaXMgdXNlZCB3aGVuIE1hdGNoZXJDYXN0KCkncyBhcmd1
bWVudAotLy8gaXMgYWxyZWFkeSBhIE1hdGNoZXIuICBUaGlzIG9ubHkgY29tcGlsZXMgd2hlbiB0
eXBlIFQgY2FuIGJlCi0vLyBzdGF0aWNhbGx5IGNvbnZlcnRlZCB0byB0eXBlIFUuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWNsYXNzIE1hdGNoZXJDYXN0SW1wbDxULCBNYXRj
aGVyPFU+ID4gewotIHB1YmxpYzoKLSAgc3RhdGljIE1hdGNoZXI8VD4gQ2FzdChjb25zdCBNYXRj
aGVyPFU+JiBzb3VyY2VfbWF0Y2hlcikgewotICAgIHJldHVybiBNYXRjaGVyPFQ+KG5ldyBJbXBs
KHNvdXJjZV9tYXRjaGVyKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEltcGwgOiBwdWJs
aWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW1wbChj
b25zdCBNYXRjaGVyPFU+JiBzb3VyY2VfbWF0Y2hlcikKLSAgICAgICAgOiBzb3VyY2VfbWF0Y2hl
cl8oc291cmNlX21hdGNoZXIpIHt9Ci0KLSAgICAvLyBXZSBkZWxlZ2F0ZSB0aGUgbWF0Y2hpbmcg
bG9naWMgdG8gdGhlIHNvdXJjZSBtYXRjaGVyLgotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4
cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAg
cmV0dXJuIHNvdXJjZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oc3RhdGljX2Nhc3Q8VT4oeCks
IGxpc3RlbmVyKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgIHNvdXJjZV9tYXRjaGVyXy5EZXNjcmliZVRvKG9z
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgewotICAgICAgc291cmNlX21hdGNoZXJfLkRlc2NyaWJlTmVnYXRp
b25Ubyhvcyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIGNvbnN0IE1hdGNoZXI8VT4gc291
cmNlX21hdGNoZXJfOwotCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKLSAgfTsK
LX07Ci0KLS8vIFRoaXMgZXZlbiBtb3JlIHNwZWNpYWxpemVkIHZlcnNpb24gaXMgdXNlZCBmb3Ig
ZWZmaWNpZW50bHkgY2FzdGluZwotLy8gYSBtYXRjaGVyIHRvIGl0cyBvd24gdHlwZS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTWF0Y2hlckNhc3RJbXBsPFQsIE1hdGNoZXI8VD4gPiB7
Ci0gcHVibGljOgotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0KGNvbnN0IE1hdGNoZXI8VD4mIG1h
dGNoZXIpIHsgcmV0dXJuIG1hdGNoZXI7IH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotCi0vLyBJbiBvcmRlciB0byBiZSBzYWZlIGFuZCBjbGVhciwgY2FzdGluZyBiZXR3ZWVuIGRp
ZmZlcmVudCBtYXRjaGVyCi0vLyB0eXBlcyBpcyBkb25lIGV4cGxpY2l0bHkgdmlhIE1hdGNoZXJD
YXN0PFQ+KG0pLCB3aGljaCB0YWtlcyBhCi0vLyBtYXRjaGVyIG0gYW5kIHJldHVybnMgYSBNYXRj
aGVyPFQ+LiAgSXQgY29tcGlsZXMgb25seSB3aGVuIFQgY2FuIGJlCi0vLyBzdGF0aWNhbGx5IGNv
bnZlcnRlZCB0byB0aGUgYXJndW1lbnQgdHlwZSBvZiBtLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIE0+Ci1pbmxpbmUgTWF0Y2hlcjxUPiBNYXRjaGVyQ2FzdChjb25zdCBNJiBtYXRj
aGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TWF0Y2hlckNhc3RJbXBsPFQsIE0+OjpDYXN0KG1h
dGNoZXIpOwotfQotCi0vLyBJbXBsZW1lbnRzIFNhZmVNYXRjaGVyQ2FzdCgpLgotLy8KLS8vIFdl
IHVzZSBhbiBpbnRlcm1lZGlhdGUgY2xhc3MgdG8gZG8gdGhlIGFjdHVhbCBzYWZlIGNhc3Rpbmcg
YXMgTm9raWEncwotLy8gU3ltYmlhbiBjb21waWxlciBjYW5ub3QgZGVjaWRlIGJldHdlZW4KLS8v
IHRlbXBsYXRlIDxULCBNPiAuLi4gKE0pIGFuZAotLy8gdGVtcGxhdGUgPFQsIFU+IC4uLiAoY29u
c3QgTWF0Y2hlcjxVPiYpCi0vLyBmb3IgZnVuY3Rpb24gdGVtcGxhdGVzIGJ1dCBjYW4gZm9yIG1l
bWJlciBmdW5jdGlvbiB0ZW1wbGF0ZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFNh
ZmVNYXRjaGVyQ2FzdEltcGwgewotIHB1YmxpYzoKLSAgLy8gVGhpcyBvdmVybG9hZCBoYW5kbGVz
IHBvbHltb3JwaGljIG1hdGNoZXJzIGFuZCB2YWx1ZXMgb25seSBzaW5jZQotICAvLyBtb25vbW9y
cGhpYyBtYXRjaGVycyBhcmUgaGFuZGxlZCBieSB0aGUgbmV4dCBvbmUuCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBNPgotICBzdGF0aWMgaW5saW5lIE1hdGNoZXI8VD4gQ2FzdChjb25zdCBNJiBwb2x5
bW9ycGhpY19tYXRjaGVyX29yX3ZhbHVlKSB7Ci0gICAgcmV0dXJuIGludGVybmFsOjpNYXRjaGVy
Q2FzdEltcGw8VCwgTT46OkNhc3QocG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZSk7Ci0gIH0K
LQotICAvLyBUaGlzIG92ZXJsb2FkIGhhbmRsZXMgbW9ub21vcnBoaWMgbWF0Y2hlcnMuCi0gIC8v
Ci0gIC8vIEluIGdlbmVyYWwsIGlmIHR5cGUgVCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQg
dG8gdHlwZSBVLCB3ZSBjYW4KLSAgLy8gc2FmZWx5IGNvbnZlcnQgYSBNYXRjaGVyPFU+IHRvIGEg
TWF0Y2hlcjxUPiAoaS5lLiBNYXRjaGVyIGlzCi0gIC8vIGNvbnRyYXZhcmlhbnQpOiBqdXN0IGtl
ZXAgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBNYXRjaGVyPFU+LCBjb252ZXJ0IHRoZQotICAvLyBh
cmd1bWVudCBmcm9tIHR5cGUgVCB0byBVLCBhbmQgdGhlbiBwYXNzIGl0IHRvIHRoZSB1bmRlcmx5
aW5nIE1hdGNoZXI8VT4uCi0gIC8vIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuIFUgaXMgYSBy
ZWZlcmVuY2UgYW5kIFQgaXMgbm90LCBhcyB0aGUKLSAgLy8gdW5kZXJseWluZyBNYXRjaGVyPFU+
IG1heSBiZSBpbnRlcmVzdGVkIGluIHRoZSBhcmd1bWVudCdzIGFkZHJlc3MsIHdoaWNoCi0gIC8v
IGlzIG5vdCBwcmVzZXJ2ZWQgaW4gdGhlIGNvbnZlcnNpb24gZnJvbSBUIHRvIFUuCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgotICBzdGF0aWMgaW5saW5lIE1hdGNoZXI8VD4gQ2FzdChjb25zdCBN
YXRjaGVyPFU+JiBtYXRjaGVyKSB7Ci0gICAgLy8gRW5mb3JjZSB0aGF0IFQgY2FuIGJlIGltcGxp
Y2l0bHkgY29udmVydGVkIHRvIFUuCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChpbnRlcm5h
bDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIFU+Ojp2YWx1ZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIFRfbXVzdF9iZV9pbXBsaWNpdGx5X2NvbnZlcnRpYmxlX3RvX1UpOwotICAgIC8v
IEVuZm9yY2UgdGhhdCB3ZSBhcmUgbm90IGNvbnZlcnRpbmcgYSBub24tcmVmZXJlbmNlIHR5cGUg
VCB0byBhIHJlZmVyZW5jZQotICAgIC8vIHR5cGUgVS4KLSAgICBHVEVTVF9DT01QSUxFX0FTU0VS
VF8oCi0gICAgICAgIGludGVybmFsOjppc19yZWZlcmVuY2U8VD46OnZhbHVlIHx8ICFpbnRlcm5h
bDo6aXNfcmVmZXJlbmNlPFU+Ojp2YWx1ZSwKLSAgICAgICAgY2Fubm90X2NvbnZlcnRfbm9uX3Jl
ZmVyZW50Y2VfYXJnX3RvX3JlZmVyZW5jZSk7Ci0gICAgLy8gSW4gY2FzZSBib3RoIFQgYW5kIFUg
YXJlIGFyaXRobWV0aWMgdHlwZXMsIGVuZm9yY2UgdGhhdCB0aGUKLSAgICAvLyBjb252ZXJzaW9u
IGlzIG5vdCBsb3NzeS4KLSAgICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhUKSBSYXdUOwotICAgIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09O
U1RfKFUpIFJhd1U7Ci0gICAgY29uc3QgYm9vbCBrVElzT3RoZXIgPSBHTU9DS19LSU5EX09GXyhS
YXdUKSA9PSBpbnRlcm5hbDo6a090aGVyOwotICAgIGNvbnN0IGJvb2wga1VJc090aGVyID0gR01P
Q0tfS0lORF9PRl8oUmF3VSkgPT0gaW50ZXJuYWw6OmtPdGhlcjsKLSAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oCi0gICAgICAgIGtUSXNPdGhlciB8fCBrVUlzT3RoZXIgfHwKLSAgICAgICAgKGlu
dGVybmFsOjpMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxSYXdULCBSYXdVPjo6dmFsdWUp
LAotICAgICAgICBjb252ZXJzaW9uX29mX2FyaXRobWV0aWNfdHlwZXNfbXVzdF9iZV9sb3NzbGVz
cyk7Ci0gICAgcmV0dXJuIE1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIpOwotICB9Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTT4KLWlubGluZSBNYXRjaGVyPFQ+IFNhZmVNYXRj
aGVyQ2FzdChjb25zdCBNJiBwb2x5bW9ycGhpY19tYXRjaGVyKSB7Ci0gIHJldHVybiBTYWZlTWF0
Y2hlckNhc3RJbXBsPFQ+OjpDYXN0KHBvbHltb3JwaGljX21hdGNoZXIpOwotfQotCi0vLyBBPFQ+
KCkgcmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB2YWx1ZSBvZiB0eXBlIFQuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLU1hdGNoZXI8VD4gQSgpOwotCi0vLyBBbnl0aGluZyBpbnNp
ZGUgdGhlICdpbnRlcm5hbCcgbmFtZXNwYWNlIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OCi0v
LyBhbmQgTVVTVCBOT1QgQkUgVVNFRCBJTiBVU0VSIENPREUhISEKLW5hbWVzcGFjZSBpbnRlcm5h
bCB7Ci0KLS8vIElmIHRoZSBleHBsYW5hdGlvbiBpcyBub3QgZW1wdHksIHByaW50cyBpdCB0byB0
aGUgb3N0cmVhbS4KLWlubGluZSB2b2lkIFByaW50SWZOb3RFbXB0eShjb25zdCBzdGQ6OnN0cmlu
ZyYgZXhwbGFuYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7Ci0gIGlmIChleHBsYW5hdGlvbiAhPSAiIiAmJiBvcyAhPSBOVUxMKSB7Ci0gICAg
Km9zIDw8ICIsICIgPDwgZXhwbGFuYXRpb247Ci0gIH0KLX0KLQotLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiB0eXBlIG5hbWUgaXMgZWFzeSB0byByZWFkIGJ5IGEgaHVtYW4uCi0vLyBUaGlz
IGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgcHJpbnRpbmcgdGhlIHR5cGUgb2YgYSB2YWx1ZSBt
aWdodAotLy8gYmUgaGVscGZ1bC4KLWlubGluZSBib29sIElzUmVhZGFibGVUeXBlTmFtZShjb25z
dCBzdGQ6OnN0cmluZyYgdHlwZV9uYW1lKSB7Ci0gIC8vIFdlIGNvbnNpZGVyIGEgdHlwZSBuYW1l
IHJlYWRhYmxlIGlmIGl0J3Mgc2hvcnQgb3IgZG9lc24ndCBjb250YWluCi0gIC8vIGEgdGVtcGxh
dGUgb3IgZnVuY3Rpb24gdHlwZS4KLSAgcmV0dXJuICh0eXBlX25hbWUubGVuZ3RoKCkgPD0gMjAg
fHwKLSAgICAgICAgICB0eXBlX25hbWUuZmluZF9maXJzdF9vZigiPCgiKSA9PSBzdGQ6OnN0cmlu
Zzo6bnBvcyk7Ci19Ci0KLS8vIE1hdGNoZXMgdGhlIHZhbHVlIGFnYWluc3QgdGhlIGdpdmVuIG1h
dGNoZXIsIHByaW50cyB0aGUgdmFsdWUgYW5kIGV4cGxhaW5zCi0vLyB0aGUgbWF0Y2ggcmVzdWx0
IHRvIHRoZSBsaXN0ZW5lci4gUmV0dXJucyB0aGUgbWF0Y2ggcmVzdWx0LgotLy8gJ2xpc3RlbmVy
JyBtdXN0IG5vdCBiZSBOVUxMLgotLy8gVmFsdWUgY2Fubm90IGJlIHBhc3NlZCBieSBjb25zdCBy
ZWZlcmVuY2UsIGJlY2F1c2Ugc29tZSBtYXRjaGVycyB0YWtlIGEKLS8vIG5vbi1jb25zdCBhcmd1
bWVudC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgVD4KLWJvb2wgTWF0Y2hQ
cmludEFuZEV4cGxhaW4oVmFsdWUmIHZhbHVlLCBjb25zdCBNYXRjaGVyPFQ+JiBtYXRjaGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikg
ewotICBpZiAoIWxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgewotICAgIC8vIElmIHRoZSBsaXN0
ZW5lciBpcyBub3QgaW50ZXJlc3RlZCwgd2UgZG8gbm90IG5lZWQgdG8gY29uc3RydWN0IHRoZQot
ICAgIC8vIGlubmVyIGV4cGxhbmF0aW9uLgotICAgIHJldHVybiBtYXRjaGVyLk1hdGNoZXModmFs
dWUpOwotICB9Ci0KLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0ZW5lcjsK
LSAgY29uc3QgYm9vbCBtYXRjaCA9IG1hdGNoZXIuTWF0Y2hBbmRFeHBsYWluKHZhbHVlLCAmaW5u
ZXJfbGlzdGVuZXIpOwotCi0gIFVuaXZlcnNhbFByaW50KHZhbHVlLCBsaXN0ZW5lci0+c3RyZWFt
KCkpOwotI2lmIEdURVNUX0hBU19SVFRJCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBlX25hbWUg
PSBHZXRUeXBlTmFtZTxWYWx1ZT4oKTsKLSAgaWYgKElzUmVhZGFibGVUeXBlTmFtZSh0eXBlX25h
bWUpKQotICAgICpsaXN0ZW5lci0+c3RyZWFtKCkgPDwgIiAob2YgdHlwZSAiIDw8IHR5cGVfbmFt
ZSA8PCAiKSI7Ci0jZW5kaWYKLSAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigp
LCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotCi0gIHJldHVybiBtYXRjaDsKLX0KLQotLy8gQW4gaW50
ZXJuYWwgaGVscGVyIGNsYXNzIGZvciBkb2luZyBjb21waWxlLXRpbWUgbG9vcCBvbiBhIHR1cGxl
J3MKLS8vIGZpZWxkcy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNsYXNzIFR1cGxlUHJlZml4IHsK
LSBwdWJsaWM6Ci0gIC8vIFR1cGxlUHJlZml4PE4+OjpNYXRjaGVzKG1hdGNoZXJfdHVwbGUsIHZh
bHVlX3R1cGxlKSByZXR1cm5zIHRydWUKLSAgLy8gaWZmIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBt
YXRjaGVyX3R1cGxlIG1hdGNoZXMgdGhlIGZpcnN0IE4KLSAgLy8gZmllbGRzIG9mIHZhbHVlX3R1
cGxlLCByZXNwZWN0aXZlbHkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVwbGUsIHR5
cGVuYW1lIFZhbHVlVHVwbGU+Ci0gIHN0YXRpYyBib29sIE1hdGNoZXMoY29uc3QgTWF0Y2hlclR1
cGxlJiBtYXRjaGVyX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlVHVw
bGUmIHZhbHVlX3R1cGxlKSB7Ci0gICAgcmV0dXJuIFR1cGxlUHJlZml4PE4gLSAxPjo6TWF0Y2hl
cyhtYXRjaGVyX3R1cGxlLCB2YWx1ZV90dXBsZSkKLSAgICAgICAgJiYgZ2V0PE4gLSAxPihtYXRj
aGVyX3R1cGxlKS5NYXRjaGVzKGdldDxOIC0gMT4odmFsdWVfdHVwbGUpKTsKLSAgfQotCi0gIC8v
IFR1cGxlUHJlZml4PE4+OjpFeHBsYWluTWF0Y2hGYWlsdXJlc1RvKG1hdGNoZXJzLCB2YWx1ZXMs
IG9zKQotICAvLyBkZXNjcmliZXMgZmFpbHVyZXMgaW4gbWF0Y2hpbmcgdGhlIGZpcnN0IE4gZmll
bGRzIG9mIG1hdGNoZXJzCi0gIC8vIGFnYWluc3QgdGhlIGZpcnN0IE4gZmllbGRzIG9mIHZhbHVl
cy4gIElmIHRoZXJlIGlzIG5vIGZhaWx1cmUsCi0gIC8vIG5vdGhpbmcgd2lsbCBiZSBzdHJlYW1l
ZCB0byBvcy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZSwgdHlwZW5hbWUgVmFs
dWVUdXBsZT4KLSAgc3RhdGljIHZvaWQgRXhwbGFpbk1hdGNoRmFpbHVyZXNUbyhjb25zdCBNYXRj
aGVyVHVwbGUmIG1hdGNoZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZhbHVlVHVwbGUmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICAvLyBGaXJzdCwgZGVzY3JpYmVzIGZh
aWx1cmVzIGluIHRoZSBmaXJzdCBOIC0gMSBmaWVsZHMuCi0gICAgVHVwbGVQcmVmaXg8TiAtIDE+
OjpFeHBsYWluTWF0Y2hGYWlsdXJlc1RvKG1hdGNoZXJzLCB2YWx1ZXMsIG9zKTsKLQotICAgIC8v
IFRoZW4gZGVzY3JpYmVzIHRoZSBmYWlsdXJlIChpZiBhbnkpIGluIHRoZSAoTiAtIDEpLXRoICgw
LWJhc2VkKQotICAgIC8vIGZpZWxkLgotICAgIHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8TiAtIDEs
IE1hdGNoZXJUdXBsZT46OnR5cGUgbWF0Y2hlciA9Ci0gICAgICAgIGdldDxOIC0gMT4obWF0Y2hl
cnMpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxOIC0gMSwgVmFsdWVUdXBs
ZT46OnR5cGUgVmFsdWU7Ci0gICAgVmFsdWUgdmFsdWUgPSBnZXQ8TiAtIDE+KHZhbHVlcyk7Ci0g
ICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgICBpZiAoIW1hdGNoZXIu
TWF0Y2hBbmRFeHBsYWluKHZhbHVlLCAmbGlzdGVuZXIpKSB7Ci0gICAgICAvLyBUT0RPKHdhbik6
IGluY2x1ZGUgaW4gdGhlIG1lc3NhZ2UgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlcgotICAgICAg
Ly8gYXMgdXNlZCBpbiBNT0NLX01FVEhPRCooKSB3aGVuIHBvc3NpYmxlLgotICAgICAgKm9zIDw8
ICIgIEV4cGVjdGVkIGFyZyAjIiA8PCBOIC0gMSA8PCAiOiAiOwotICAgICAgZ2V0PE4gLSAxPiht
YXRjaGVycykuRGVzY3JpYmVUbyhvcyk7Ci0gICAgICAqb3MgPDwgIlxuICAgICAgICAgICBBY3R1
YWw6ICI7Ci0gICAgICAvLyBXZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBpbiB0eXBlIFZhbHVlIHRv
IHByZXZlbnQgdGhlCi0gICAgICAvLyB1bml2ZXJzYWwgcHJpbnRlciBmcm9tIHByaW50aW5nIHRo
ZSBhZGRyZXNzIG9mIHZhbHVlLCB3aGljaAotICAgICAgLy8gaXNuJ3QgaW50ZXJlc3RpbmcgdG8g
dGhlIHVzZXIgbW9zdCBvZiB0aGUgdGltZS4gIFRoZQotICAgICAgLy8gbWF0Y2hlcidzIE1hdGNo
QW5kRXhwbGFpbigpIG1ldGhvZCBoYW5kbGVzIHRoZSBjYXNlIHdoZW4KLSAgICAgIC8vIHRoZSBh
ZGRyZXNzIGlzIGludGVyZXN0aW5nLgotICAgICAgaW50ZXJuYWw6OlVuaXZlcnNhbFByaW50KHZh
bHVlLCBvcyk7Ci0gICAgICBQcmludElmTm90RW1wdHkobGlzdGVuZXIuc3RyKCksIG9zKTsKLSAg
ICAgICpvcyA8PCAiXG4iOwotICAgIH0KLSAgfQotfTsKLQotLy8gVGhlIGJhc2UgY2FzZS4KLXRl
bXBsYXRlIDw+Ci1jbGFzcyBUdXBsZVByZWZpeDwwPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTWF0Y2hlclR1cGxlLCB0eXBlbmFtZSBWYWx1ZVR1cGxlPgotICBzdGF0aWMgYm9v
bCBNYXRjaGVzKGNvbnN0IE1hdGNoZXJUdXBsZSYgLyogbWF0Y2hlcl90dXBsZSAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVR1cGxlJiAvKiB2YWx1ZV90dXBsZSAqLykgewot
ICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBs
ZSwgdHlwZW5hbWUgVmFsdWVUdXBsZT4KLSAgc3RhdGljIHZvaWQgRXhwbGFpbk1hdGNoRmFpbHVy
ZXNUbyhjb25zdCBNYXRjaGVyVHVwbGUmIC8qIG1hdGNoZXJzICovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlVHVwbGUmIC8qIHZhbHVlcyAqLywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogLyogb3Mg
Ki8pIHt9Ci19OwotCi0vLyBUdXBsZU1hdGNoZXMobWF0Y2hlcl90dXBsZSwgdmFsdWVfdHVwbGUp
IHJldHVybnMgdHJ1ZSBpZmYgYWxsCi0vLyBtYXRjaGVycyBpbiBtYXRjaGVyX3R1cGxlIG1hdGNo
IHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbgotLy8gdmFsdWVfdHVwbGUuICBJdCBpcyBhIGNv
bXBpbGVyIGVycm9yIGlmIG1hdGNoZXJfdHVwbGUgYW5kCi0vLyB2YWx1ZV90dXBsZSBoYXZlIGRp
ZmZlcmVudCBudW1iZXIgb2YgZmllbGRzIG9yIGluY29tcGF0aWJsZSBmaWVsZAotLy8gdHlwZXMu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlclR1cGxlLCB0eXBlbmFtZSBWYWx1ZVR1cGxlPgot
Ym9vbCBUdXBsZU1hdGNoZXMoY29uc3QgTWF0Y2hlclR1cGxlJiBtYXRjaGVyX3R1cGxlLAotICAg
ICAgICAgICAgICAgICAgY29uc3QgVmFsdWVUdXBsZSYgdmFsdWVfdHVwbGUpIHsKLSAgLy8gTWFr
ZXMgc3VyZSB0aGF0IG1hdGNoZXJfdHVwbGUgYW5kIHZhbHVlX3R1cGxlIGhhdmUgdGhlIHNhbWUK
LSAgLy8gbnVtYmVyIG9mIGZpZWxkcy4KLSAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKHR1cGxlX3Np
emU8TWF0Y2hlclR1cGxlPjo6dmFsdWUgPT0KLSAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxl
X3NpemU8VmFsdWVUdXBsZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hl
cl9hbmRfdmFsdWVfaGF2ZV9kaWZmZXJlbnRfbnVtYmVyc19vZl9maWVsZHMpOwotICByZXR1cm4g
VHVwbGVQcmVmaXg8dHVwbGVfc2l6ZTxWYWx1ZVR1cGxlPjo6dmFsdWU+OjoKLSAgICAgIE1hdGNo
ZXMobWF0Y2hlcl90dXBsZSwgdmFsdWVfdHVwbGUpOwotfQotCi0vLyBEZXNjcmliZXMgZmFpbHVy
ZXMgaW4gbWF0Y2hpbmcgbWF0Y2hlcnMgYWdhaW5zdCB2YWx1ZXMuICBJZiB0aGVyZQotLy8gaXMg
bm8gZmFpbHVyZSwgbm90aGluZyB3aWxsIGJlIHN0cmVhbWVkIHRvIG9zLgotdGVtcGxhdGUgPHR5
cGVuYW1lIE1hdGNoZXJUdXBsZSwgdHlwZW5hbWUgVmFsdWVUdXBsZT4KLXZvaWQgRXhwbGFpbk1h
dGNoRmFpbHVyZVR1cGxlVG8oY29uc3QgTWF0Y2hlclR1cGxlJiBtYXRjaGVycywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWVUdXBsZSYgdmFsdWVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgVHVwbGVQ
cmVmaXg8dHVwbGVfc2l6ZTxNYXRjaGVyVHVwbGU+Ojp2YWx1ZT46OkV4cGxhaW5NYXRjaEZhaWx1
cmVzVG8oCi0gICAgICBtYXRjaGVycywgdmFsdWVzLCBvcyk7Ci19Ci0KLS8vIFRyYW5zZm9ybVR1
cGxlVmFsdWVzIGFuZCBpdHMgaGVscGVyLgotLy8KLS8vIFRyYW5zZm9ybVR1cGxlVmFsdWVzSGVs
cGVyIGhpZGVzIHRoZSBpbnRlcm5hbCBtYWNoaW5lcnkgdGhhdAotLy8gVHJhbnNmb3JtVHVwbGVW
YWx1ZXMgdXNlcyB0byBpbXBsZW1lbnQgYSB0dXBsZSB0cmF2ZXJzYWwuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGUsIHR5cGVuYW1lIEZ1bmMsIHR5cGVuYW1lIE91dEl0ZXI+Ci1jbGFzcyBUcmFu
c2Zvcm1UdXBsZVZhbHVlc0hlbHBlciB7Ci0gcHJpdmF0ZToKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlX3NpemU8VHVwbGU+IFR1cGxlU2l6ZTsKLQotIHB1YmxpYzoKLSAgLy8gRm9yIGVhY2gg
bWVtYmVyIG9mIHR1cGxlICd0JywgdGFrZW4gaW4gb3JkZXIsIGV2YWx1YXRlcyAnKm91dCsrID0g
Zih0KScuCi0gIC8vIFJldHVybnMgdGhlIGZpbmFsIHZhbHVlIG9mICdvdXQnIGluIGNhc2UgdGhl
IGNhbGxlciBuZWVkcyBpdC4KLSAgc3RhdGljIE91dEl0ZXIgUnVuKEZ1bmMgZiwgY29uc3QgVHVw
bGUmIHQsIE91dEl0ZXIgb3V0KSB7Ci0gICAgcmV0dXJuIEl0ZXJhdGVPdmVyVHVwbGU8VHVwbGUs
IFR1cGxlU2l6ZTo6dmFsdWU+KCkoZiwgdCwgb3V0KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIFR1cCwgc2l6ZV90IGtSZW1haW5pbmdTaXplPgotICBzdHJ1Y3QgSXRl
cmF0ZU92ZXJUdXBsZSB7Ci0gICAgT3V0SXRlciBvcGVyYXRvcigpIChGdW5jIGYsIGNvbnN0IFR1
cCYgdCwgT3V0SXRlciBvdXQpIGNvbnN0IHsKLSAgICAgICpvdXQrKyA9IGYoOjp0ZXN0aW5nOjpn
ZXQ8VHVwbGVTaXplOjp2YWx1ZSAtIGtSZW1haW5pbmdTaXplPih0KSk7Ci0gICAgICByZXR1cm4g
SXRlcmF0ZU92ZXJUdXBsZTxUdXAsIGtSZW1haW5pbmdTaXplIC0gMT4oKShmLCB0LCBvdXQpOwot
ICAgIH0KLSAgfTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cD4KLSAgc3RydWN0IEl0ZXJhdGVP
dmVyVHVwbGU8VHVwLCAwPiB7Ci0gICAgT3V0SXRlciBvcGVyYXRvcigpIChGdW5jIC8qIGYgKi8s
IGNvbnN0IFR1cCYgLyogdCAqLywgT3V0SXRlciBvdXQpIGNvbnN0IHsKLSAgICAgIHJldHVybiBv
dXQ7Ci0gICAgfQotICB9OwotfTsKLQotLy8gU3VjY2Vzc2l2ZWx5IGludm9rZXMgJ2YoZWxlbWVu
dCknIG9uIGVhY2ggZWxlbWVudCBvZiB0aGUgdHVwbGUgJ3QnLAotLy8gYXBwZW5kaW5nIGVhY2gg
cmVzdWx0IHRvIHRoZSAnb3V0JyBpdGVyYXRvci4gUmV0dXJucyB0aGUgZmluYWwgdmFsdWUKLS8v
IG9mICdvdXQnLgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlLCB0eXBlbmFtZSBGdW5jLCB0eXBl
bmFtZSBPdXRJdGVyPgotT3V0SXRlciBUcmFuc2Zvcm1UdXBsZVZhbHVlcyhGdW5jIGYsIGNvbnN0
IFR1cGxlJiB0LCBPdXRJdGVyIG91dCkgewotICByZXR1cm4gVHJhbnNmb3JtVHVwbGVWYWx1ZXNI
ZWxwZXI8VHVwbGUsIEZ1bmMsIE91dEl0ZXI+OjpSdW4oZiwgdCwgb3V0KTsKLX0KLQotLy8gSW1w
bGVtZW50cyBBPFQ+KCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFueU1hdGNoZXJJ
bXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBi
b29sIE1hdGNoQW5kRXhwbGFpbigKLSAgICAgIFQgLyogeCAqLywgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgYW55dGhp
bmciOyB9Ci0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7Ci0gICAgLy8gVGhpcyBpcyBtb3N0bHkgZm9yIGNvbXBsZXRlbmVzcycgc2Fm
ZSwgYXMgaXQncyBub3QgdmVyeSB1c2VmdWwKLSAgICAvLyB0byB3cml0ZSBOb3QoQTxib29sPigp
KS4gIEhvd2V2ZXIgd2UgY2Fubm90IGNvbXBsZXRlbHkgcnVsZSBvdXQKLSAgICAvLyBzdWNoIGEg
cG9zc2liaWxpdHksIGFuZCBpdCBkb2Vzbid0IGh1cnQgdG8gYmUgcHJlcGFyZWQuCi0gICAgKm9z
IDw8ICJuZXZlciBtYXRjaGVzIjsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyBfLCBhIG1hdGNo
ZXIgdGhhdCBtYXRjaGVzIGFueSB2YWx1ZSBvZiBhbnkKLS8vIHR5cGUuICBUaGlzIGlzIGEgcG9s
eW1vcnBoaWMgbWF0Y2hlciwgc28gd2UgbmVlZCBhIHRlbXBsYXRlIHR5cGUKLS8vIGNvbnZlcnNp
b24gb3BlcmF0b3IgdG8gbWFrZSBpdCBhcHBlYXJpbmcgYXMgYSBNYXRjaGVyPFQ+IGZvciBhbnkK
LS8vIHR5cGUgVC4KLWNsYXNzIEFueXRoaW5nTWF0Y2hlciB7Ci0gcHVibGljOgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxUPigpIGNvbnN0IHsgcmV0dXJuIEE8
VD4oKTsgfQotfTsKLQotLy8gSW1wbGVtZW50cyBhIG1hdGNoZXIgdGhhdCBjb21wYXJlcyBhIGdp
dmVuIHZhbHVlIHdpdGggYQotLy8gcHJlLXN1cHBsaWVkIHZhbHVlIHVzaW5nIG9uZSBvZiB0aGUg
PT0sIDw9LCA8LCBldGMsIG9wZXJhdG9ycy4gIFRoZQotLy8gdHdvIHZhbHVlcyBiZWluZyBjb21w
YXJlZCBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgdHlwZS4KLS8vCi0vLyBUaGUgbWF0Y2hl
ciBkZWZpbmVkIGhlcmUgaXMgcG9seW1vcnBoaWMgKGZvciBleGFtcGxlLCBFcSg1KSBjYW4gYmUK
LS8vIHVzZWQgdG8gbWF0Y2ggYW4gaW50LCBhIHNob3J0LCBhIGRvdWJsZSwgZXRjKS4gIFRoZXJl
Zm9yZSB3ZSB1c2UKLS8vIGEgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9yIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIHRlbXBsYXRlIGRlZmluaXRp
b24gYXNzdW1lcyB0aGF0IHRoZSBSaHMgcGFyYW1ldGVyIGlzCi0vLyBhICJiYXJlIiB0eXBlIChp
LmUuIG5laXRoZXIgJ2NvbnN0IFQnIG5vciAnVCYnKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBELCB0
eXBlbmFtZSBSaHMsIHR5cGVuYW1lIE9wPgotY2xhc3MgQ29tcGFyaXNvbkJhc2UgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgQ29tcGFyaXNvbkJhc2UoY29uc3QgUmhzJiByaHMpIDogcmhzXyhyaHMp
IHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHM+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8TGhzPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8TGhzPihyaHNfKSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHM+Ci0gIGNsYXNzIEltcGwg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxMaHM+IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBJbXBsKGNvbnN0IFJocyYgcmhzKSA6IHJoc18ocmhzKSB7fQotICAgIHZpcnR1YWwgYm9vbCBN
YXRjaEFuZEV4cGxhaW4oCi0gICAgICAgIExocyBsaHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8q
IGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAgICByZXR1cm4gT3AoKShsaHMsIHJoc18pOwotICAg
IH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0
IHsKLSAgICAgICpvcyA8PCBEOjpEZXNjKCkgPDwgIiAiOwotICAgICAgVW5pdmVyc2FsUHJpbnQo
cmhzXywgb3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8IEQ6Ok5lZ2F0ZWREZXNjKCkg
PDwgICIgIjsKLSAgICAgIFVuaXZlcnNhbFByaW50KHJoc18sIG9zKTsKLSAgICB9Ci0gICBwcml2
YXRlOgotICAgIFJocyByaHNfOwotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7Ci0g
IH07Ci0gIFJocyByaHNfOwotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKENvbXBhcmlzb25CYXNl
KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1jbGFzcyBFcU1hdGNoZXIgOiBwdWJs
aWMgQ29tcGFyaXNvbkJhc2U8RXFNYXRjaGVyPFJocz4sIFJocywgQW55RXE+IHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IEVxTWF0Y2hlcihjb25zdCBSaHMmIHJocykKLSAgICAgIDogQ29tcGFyaXNv
bkJhc2U8RXFNYXRjaGVyPFJocz4sIFJocywgQW55RXE+KHJocykgeyB9Ci0gIHN0YXRpYyBjb25z
dCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImlzIGVxdWFsIHRvIjsgfQotICBzdGF0aWMgY29uc3Qg
Y2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgZXF1YWwgdG8iOyB9Ci19OwotdGVt
cGxhdGUgPHR5cGVuYW1lIFJocz4KLWNsYXNzIE5lTWF0Y2hlciA6IHB1YmxpYyBDb21wYXJpc29u
QmFzZTxOZU1hdGNoZXI8UmhzPiwgUmhzLCBBbnlOZT4gewotIHB1YmxpYzoKLSAgZXhwbGljaXQg
TmVNYXRjaGVyKGNvbnN0IFJocyYgcmhzKQotICAgICAgOiBDb21wYXJpc29uQmFzZTxOZU1hdGNo
ZXI8UmhzPiwgUmhzLCBBbnlOZT4ocmhzKSB7IH0KLSAgc3RhdGljIGNvbnN0IGNoYXIqIERlc2Mo
KSB7IHJldHVybiAiaXNuJ3QgZXF1YWwgdG8iOyB9Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBOZWdh
dGVkRGVzYygpIHsgcmV0dXJuICJpcyBlcXVhbCB0byI7IH0KLX07Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgUmhzPgotY2xhc3MgTHRNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPEx0TWF0Y2hl
cjxSaHM+LCBSaHMsIEFueUx0PiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBMdE1hdGNoZXIoY29u
c3QgUmhzJiByaHMpCi0gICAgICA6IENvbXBhcmlzb25CYXNlPEx0TWF0Y2hlcjxSaHM+LCBSaHMs
IEFueUx0PihyaHMpIHsgfQotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJp
cyA8IjsgfQotICBzdGF0aWMgY29uc3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNu
J3QgPCI7IH0KLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgotY2xhc3MgR3RNYXRjaGVyIDog
cHVibGljIENvbXBhcmlzb25CYXNlPEd0TWF0Y2hlcjxSaHM+LCBSaHMsIEFueUd0PiB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBHdE1hdGNoZXIoY29uc3QgUmhzJiByaHMpCi0gICAgICA6IENvbXBh
cmlzb25CYXNlPEd0TWF0Y2hlcjxSaHM+LCBSaHMsIEFueUd0PihyaHMpIHsgfQotICBzdGF0aWMg
Y29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJpcyA+IjsgfQotICBzdGF0aWMgY29uc3QgY2hh
ciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgPiI7IH0KLX07Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmhzPgotY2xhc3MgTGVNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPExlTWF0
Y2hlcjxSaHM+LCBSaHMsIEFueUxlPiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBMZU1hdGNoZXIo
Y29uc3QgUmhzJiByaHMpCi0gICAgICA6IENvbXBhcmlzb25CYXNlPExlTWF0Y2hlcjxSaHM+LCBS
aHMsIEFueUxlPihyaHMpIHsgfQotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJu
ICJpcyA8PSI7IH0KLSAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0ZWREZXNjKCkgeyByZXR1cm4g
Imlzbid0IDw9IjsgfQotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1jbGFzcyBHZU1hdGNo
ZXIgOiBwdWJsaWMgQ29tcGFyaXNvbkJhc2U8R2VNYXRjaGVyPFJocz4sIFJocywgQW55R2U+IHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdlTWF0Y2hlcihjb25zdCBSaHMmIHJocykKLSAgICAgIDog
Q29tcGFyaXNvbkJhc2U8R2VNYXRjaGVyPFJocz4sIFJocywgQW55R2U+KHJocykgeyB9Ci0gIHN0
YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImlzID49IjsgfQotICBzdGF0aWMgY29u
c3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgPj0iOyB9Ci19OwotCi0vLyBJ
bXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBJc051bGwoKSBtYXRjaGVyLCB3aGljaCBtYXRjaGVz
IGFueSByYXcgb3Igc21hcnQKLS8vIHBvaW50ZXIgdGhhdCBpcyBOVUxMLgotY2xhc3MgSXNOdWxs
TWF0Y2hlciB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4KLSAgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgUG9pbnRlciYgcCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKLSNpZiBHVEVT
VF9MQU5HX0NYWDExCi0gICAgcmV0dXJuIHAgPT0gbnVsbHB0cjsKLSNlbHNlICAvLyBHVEVTVF9M
QU5HX0NYWDExCi0gICAgcmV0dXJuIEdldFJhd1BvaW50ZXIocCkgPT0gTlVMTDsKLSNlbmRpZiAg
Ly8gR1RFU1RfTEFOR19DWFgxMQotICB9Ci0KLSAgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3Ry
ZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIE5VTEwiOyB9Ci0gIHZvaWQgRGVzY3JpYmVOZWdh
dGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXNuJ3QgTlVM
TCI7Ci0gIH0KLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIE5vdE51bGwoKSBt
YXRjaGVyLCB3aGljaCBtYXRjaGVzIGFueSByYXcgb3Igc21hcnQKLS8vIHBvaW50ZXIgdGhhdCBp
cyBub3QgTlVMTC4KLWNsYXNzIE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBQb2ludGVyPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBQb2ludGVy
JiBwLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0
ZW5lciAqLykgY29uc3QgewotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLSAgICByZXR1cm4gcCAhPSBu
dWxscHRyOwotI2Vsc2UgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLSAgICByZXR1cm4gR2V0UmF3UG9p
bnRlcihwKSAhPSBOVUxMOwotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0gIH0KLQotICB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXNuJ3Qg
TlVMTCI7IH0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7Ci0gICAgKm9zIDw8ICJpcyBOVUxMIjsKLSAgfQotfTsKLQotLy8gUmVmKHZhcmlhYmxl
KSBtYXRjaGVzIGFueSBhcmd1bWVudCB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvCi0vLyAndmFyaWFi
bGUnLiAgVGhpcyBtYXRjaGVyIGlzIHBvbHltb3JwaGljIGFzIGl0IGNhbiBtYXRjaCBhbnkKLS8v
IHN1cGVyIHR5cGUgb2YgdGhlIHR5cGUgb2YgJ3ZhcmlhYmxlJy4KLS8vCi0vLyBUaGUgUmVmTWF0
Y2hlciB0ZW1wbGF0ZSBjbGFzcyBpbXBsZW1lbnRzIFJlZih2YXJpYWJsZSkuICBJdCBjYW4KLS8v
IG9ubHkgYmUgaW5zdGFudGlhdGVkIHdpdGggYSByZWZlcmVuY2UgdHlwZS4gIFRoaXMgcHJldmVu
dHMgYSB1c2VyCi0vLyBmcm9tIG1pc3Rha2VubHkgdXNpbmcgUmVmKHgpIHRvIG1hdGNoIGEgbm9u
LXJlZmVyZW5jZSBmdW5jdGlvbgotLy8gYXJndW1lbnQuICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxv
d2luZyB3aWxsIHJpZ2h0ZW91c2x5IGNhdXNlIGEKLS8vIGNvbXBpbGVyIGVycm9yOgotLy8KLS8v
ICAgaW50IG47Ci0vLyAgIE1hdGNoZXI8aW50PiBtMSA9IFJlZihuKTsgICAvLyBUaGlzIHdvbid0
IGNvbXBpbGUuCi0vLyAgIE1hdGNoZXI8aW50Jj4gbTIgPSBSZWYobik7ICAvLyBUaGlzIHdpbGwg
Y29tcGlsZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgUmVmTWF0Y2hlcjsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZWZNYXRjaGVyPFQmPiB7Ci0gIC8vIEdvb2dsZSBN
b2NrIGlzIGEgZ2VuZXJpYyBmcmFtZXdvcmsgYW5kIHRodXMgbmVlZHMgdG8gc3VwcG9ydAotICAv
LyBtb2NraW5nIGFueSBmdW5jdGlvbiB0eXBlcywgaW5jbHVkaW5nIHRob3NlIHRoYXQgdGFrZSBu
b24tY29uc3QKLSAgLy8gcmVmZXJlbmNlIGFyZ3VtZW50cy4gIFRoZXJlZm9yZSB0aGUgdGVtcGxh
dGUgcGFyYW1ldGVyIFQgKGFuZAotICAvLyBTdXBlciBiZWxvdykgY2FuIGJlIGluc3RhbnRpYXRl
ZCB0byBlaXRoZXIgYSBjb25zdCB0eXBlIG9yIGEKLSAgLy8gbm9uLWNvbnN0IHR5cGUuCi0gcHVi
bGljOgotICAvLyBSZWZNYXRjaGVyKCkgdGFrZXMgYSBUJiBpbnN0ZWFkIG9mIGNvbnN0IFQmLCBh
cyB3ZSB3YW50IHRoZQotICAvLyBjb21waWxlciB0byBjYXRjaCB1c2luZyBSZWYoY29uc3RfdmFs
dWUpIGFzIGEgbWF0Y2hlciBmb3IgYQotICAvLyBub24tY29uc3QgcmVmZXJlbmNlLgotICBleHBs
aWNpdCBSZWZNYXRjaGVyKFQmIHgpIDogb2JqZWN0Xyh4KSB7fSAgLy8gTk9MSU5UCi0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIFN1cGVyPgotICBvcGVyYXRvciBNYXRjaGVyPFN1cGVyJj4oKSBjb25z
dCB7Ci0gICAgLy8gQnkgcGFzc2luZyBvYmplY3RfICh0eXBlIFQmKSB0byBJbXBsKCksIHdoaWNo
IGV4cGVjdHMgYSBTdXBlciYsCi0gICAgLy8gd2UgbWFrZSBzdXJlIHRoYXQgU3VwZXIgaXMgYSBz
dXBlciB0eXBlIG9mIFQuICBJbiBwYXJ0aWN1bGFyLAotICAgIC8vIHRoaXMgY2F0Y2hlcyB1c2lu
ZyBSZWYoY29uc3RfdmFsdWUpIGFzIGEgbWF0Y2hlciBmb3IgYQotICAgIC8vIG5vbi1jb25zdCBy
ZWZlcmVuY2UsIGFzIHlvdSBjYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IGEgY29uc3QKLSAgICAv
LyByZWZlcmVuY2UgdG8gYSBub24tY29uc3QgcmVmZXJlbmNlLgotICAgIHJldHVybiBNYWtlTWF0
Y2hlcihuZXcgSW1wbDxTdXBlcj4ob2JqZWN0XykpOwotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgU3VwZXI+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxTdXBlciY+IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbXBsKFN1cGVyJiB4KSA6
IG9iamVjdF8oeCkge30gIC8vIE5PTElOVAotCi0gICAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgdGFr
ZXMgYSBTdXBlciYgKGFzIG9wcG9zZWQgdG8gY29uc3QgU3VwZXImKQotICAgIC8vIGluIG9yZGVy
IHRvIG1hdGNoIHRoZSBpbnRlcmZhY2UgTWF0Y2hlckludGVyZmFjZTxTdXBlciY+LgotICAgIHZp
cnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oCi0gICAgICAgIFN1cGVyJiB4LCBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBp
cyBsb2NhdGVkIEAiIDw8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPigmeCk7Ci0gICAgICByZXR1
cm4gJnggPT0gJm9iamVjdF87Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgInJlZmVyZW5jZXMgdGhl
IHZhcmlhYmxlICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVyPFN1cGVyJj46OlByaW50KG9iamVj
dF8sIG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJkb2VzIG5vdCByZWZlcmVu
Y2UgdGhlIHZhcmlhYmxlICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVyPFN1cGVyJj46OlByaW50
KG9iamVjdF8sIG9zKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgU3VwZXImIG9i
amVjdF87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OwotCi0gIFQm
IG9iamVjdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSZWZNYXRjaGVyKTsKLX07Ci0K
LS8vIFBvbHltb3JwaGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIG5hcnJvdyBhbmQgd2lkZSBzdHJp
bmcgbWF0Y2hlcnMuCi1pbmxpbmUgYm9vbCBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNv
bnN0IGNoYXIqIGxocywgY29uc3QgY2hhciogcmhzKSB7Ci0gIHJldHVybiBTdHJpbmc6OkNhc2VJ
bnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpOwotfQotCi1pbmxpbmUgYm9vbCBDYXNl
SW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIHJl
dHVybiBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGxocywgcmhzKTsK
LX0KLQotLy8gU3RyaW5nIGNvbXBhcmlzb24gZm9yIG5hcnJvdyBvciB3aWRlIHN0cmluZ3MgdGhh
dCBjYW4gaGF2ZSBlbWJlZGRlZCBOVUwKLS8vIGNoYXJhY3RlcnMuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLWJvb2wgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nRXF1YWxzKGNvbnN0IFN0
cmluZ1R5cGUmIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nVHlwZSYgczIpIHsKLSAgLy8gQXJlIHRoZSBoZWFkcyBlcXVhbD8KLSAgaWYgKCFDYXNlSW5z
ZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHMxLmNfc3RyKCksIHMyLmNfc3RyKCkpKSB7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0KLSAgLy8gU2tpcCB0aGUgZXF1YWwgaGVhZHMuCi0gIGNvbnN0IHR5
cGVuYW1lIFN0cmluZ1R5cGU6OnZhbHVlX3R5cGUgbnVsID0gMDsKLSAgY29uc3Qgc2l6ZV90IGkx
ID0gczEuZmluZChudWwpLCBpMiA9IHMyLmZpbmQobnVsKTsKLQotICAvLyBBcmUgd2UgYXQgdGhl
IGVuZCBvZiBlaXRoZXIgczEgb3IgczI/Ci0gIGlmIChpMSA9PSBTdHJpbmdUeXBlOjpucG9zIHx8
IGkyID09IFN0cmluZ1R5cGU6Om5wb3MpIHsKLSAgICByZXR1cm4gaTEgPT0gaTI7Ci0gIH0KLQot
ICAvLyBBcmUgdGhlIHRhaWxzIGVxdWFsPwotICByZXR1cm4gQ2FzZUluc2Vuc2l0aXZlU3RyaW5n
RXF1YWxzKHMxLnN1YnN0cihpMSArIDEpLCBzMi5zdWJzdHIoaTIgKyAxKSk7Ci19Ci0KLS8vIFN0
cmluZyBtYXRjaGVycy4KLQotLy8gSW1wbGVtZW50cyBlcXVhbGl0eS1iYXNlZCBzdHJpbmcgbWF0
Y2hlcnMgbGlrZSBTdHJFcSwgU3RyQ2FzZU5lLCBhbmQgZXRjLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFN0cmluZ1R5cGU+Ci1jbGFzcyBTdHJFcXVhbGl0eU1hdGNoZXIgewotIHB1YmxpYzoKLSAgU3Ry
RXF1YWxpdHlNYXRjaGVyKGNvbnN0IFN0cmluZ1R5cGUmIHN0ciwgYm9vbCBleHBlY3RfZXEsCi0g
ICAgICAgICAgICAgICAgICAgICBib29sIGNhc2Vfc2Vuc2l0aXZlKQotICAgICAgOiBzdHJpbmdf
KHN0ciksIGV4cGVjdF9lcV8oZXhwZWN0X2VxKSwgY2FzZV9zZW5zaXRpdmVfKGNhc2Vfc2Vuc2l0
aXZlKSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFydGljdWxhcmx5OgotICAv
LyAgIGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25zdCB3Y2hhcl90KgotICAv
LyAgIHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgYm9vbCBNYXRj
aEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgaWYgKHMgPT0gTlVMTCkgewotICAgICAgcmV0dXJuICFleHBlY3RfZXFfOwot
ICAgIH0KLSAgICByZXR1cm4gTWF0Y2hBbmRFeHBsYWluKFN0cmluZ1R5cGUocyksIGxpc3RlbmVy
KTsKLSAgfQotCi0gIC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29udmVydCB0byBTdHJp
bmdUeXBlLgotICAvLwotICAvLyBUaGlzIGlzIGEgdGVtcGxhdGUsIG5vdCBqdXN0IGEgcGxhaW4g
ZnVuY3Rpb24gd2l0aCBjb25zdCBTdHJpbmdUeXBlJiwKLSAgLy8gYmVjYXVzZSBTdHJpbmdQaWVj
ZSBoYXMgc29tZSBpbnRlcmZlcmluZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWF0Y2hlZVN0cmluZ1R5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
KGNvbnN0IE1hdGNoZWVTdHJpbmdUeXBlJiBzLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIGNvbnN0IFN0cmlu
Z1R5cGUmIHMyKHMpOwotICAgIGNvbnN0IGJvb2wgZXEgPSBjYXNlX3NlbnNpdGl2ZV8gPyBzMiA9
PSBzdHJpbmdfIDoKLSAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nRXF1YWxzKHMyLCBzdHJp
bmdfKTsKLSAgICByZXR1cm4gZXhwZWN0X2VxXyA9PSBlcTsKLSAgfQotCi0gIHZvaWQgRGVzY3Jp
YmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBEZXNjcmliZVRvSGVscGVyKGV4
cGVjdF9lcV8sIG9zKTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgewotICAgIERlc2NyaWJlVG9IZWxwZXIoIWV4cGVjdF9lcV8sIG9z
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdm9pZCBEZXNjcmliZVRvSGVscGVyKGJvb2wgZXhwZWN0
X2VxLCA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgKGV4cGVjdF9lcSA/
ICJpcyAiIDogImlzbid0ICIpOwotICAgICpvcyA8PCAiZXF1YWwgdG8gIjsKLSAgICBpZiAoIWNh
c2Vfc2Vuc2l0aXZlXykgewotICAgICAgKm9zIDw8ICIoaWdub3JpbmcgY2FzZSkgIjsKLSAgICB9
Ci0gICAgVW5pdmVyc2FsUHJpbnQoc3RyaW5nXywgb3MpOwotICB9Ci0KLSAgY29uc3QgU3RyaW5n
VHlwZSBzdHJpbmdfOwotICBjb25zdCBib29sIGV4cGVjdF9lcV87Ci0gIGNvbnN0IGJvb2wgY2Fz
ZV9zZW5zaXRpdmVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU3RyRXF1YWxpdHlNYXRj
aGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIEhhc1N1YnN0cihzdWJz
dHJpbmcpIG1hdGNoZXIsIHdoaWNoCi0vLyBjYW4gYmUgdXNlZCBhcyBhIE1hdGNoZXI8VD4gYXMg
bG9uZyBhcyBUIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQotLy8gc3RyaW5nLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cmluZ1R5cGU+Ci1jbGFzcyBIYXNTdWJzdHJNYXRjaGVyIHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IEhhc1N1YnN0ck1hdGNoZXIoY29uc3QgU3RyaW5nVHlwZSYgc3Vic3RyaW5nKQot
ICAgICAgOiBzdWJzdHJpbmdfKHN1YnN0cmluZykge30KLQotICAvLyBBY2NlcHRzIHBvaW50ZXIg
dHlwZXMsIHBhcnRpY3VsYXJseToKLSAgLy8gICBjb25zdCBjaGFyKgotICAvLyAgIGNoYXIqCi0g
IC8vICAgY29uc3Qgd2NoYXJfdCoKLSAgLy8gICB3Y2hhcl90KgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhclR5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENoYXJUeXBlKiBzLCBNYXRjaFJl
c3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiBzICE9IE5VTEwgJiYg
TWF0Y2hBbmRFeHBsYWluKFN0cmluZ1R5cGUocyksIGxpc3RlbmVyKTsKLSAgfQotCi0gIC8vIE1h
dGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29udmVydCB0byBTdHJpbmdUeXBlLgotICAvLwotICAv
LyBUaGlzIGlzIGEgdGVtcGxhdGUsIG5vdCBqdXN0IGEgcGxhaW4gZnVuY3Rpb24gd2l0aCBjb25z
dCBTdHJpbmdUeXBlJiwKLSAgLy8gYmVjYXVzZSBTdHJpbmdQaWVjZSBoYXMgc29tZSBpbnRlcmZl
cmluZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0
Y2hlZVN0cmluZ1R5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IE1hdGNoZWVTdHJp
bmdUeXBlJiBzLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAv
KiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIGNvbnN0IFN0cmluZ1R5cGUmIHMyKHMpOwotICAg
IHJldHVybiBzMi5maW5kKHN1YnN0cmluZ18pICE9IFN0cmluZ1R5cGU6Om5wb3M7Ci0gIH0KLQot
ICAvLyBEZXNjcmliZXMgd2hhdCB0aGlzIG1hdGNoZXIgbWF0Y2hlcy4KLSAgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaGFzIHN1YnN0cmlu
ZyAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1YnN0cmluZ18sIG9zKTsKLSAgfQotCi0gIHZvaWQg
RGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8
PCAiaGFzIG5vIHN1YnN0cmluZyAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1YnN0cmluZ18sIG9z
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgU3RyaW5nVHlwZSBzdWJzdHJpbmdfOwotCi0g
IEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSGFzU3Vic3RyTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBs
ZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBTdGFydHNXaXRoKHN1YnN0cmluZykgbWF0Y2hlciwgd2hp
Y2gKLS8vIGNhbiBiZSB1c2VkIGFzIGEgTWF0Y2hlcjxUPiBhcyBsb25nIGFzIFQgY2FuIGJlIGNv
bnZlcnRlZCB0byBhCi0vLyBzdHJpbmcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4K
LWNsYXNzIFN0YXJ0c1dpdGhNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFN0YXJ0c1dp
dGhNYXRjaGVyKGNvbnN0IFN0cmluZ1R5cGUmIHByZWZpeCkgOiBwcmVmaXhfKHByZWZpeCkgewot
ICB9Ci0KLSAgLy8gQWNjZXB0cyBwb2ludGVyIHR5cGVzLCBwYXJ0aWN1bGFybHk6Ci0gIC8vICAg
Y29uc3QgY2hhcioKLSAgLy8gICBjaGFyKgotICAvLyAgIGNvbnN0IHdjaGFyX3QqCi0gIC8vICAg
d2NoYXJfdCoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICBib29sIE1hdGNoQW5k
RXhwbGFpbihDaGFyVHlwZSogcywgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKLSAgICByZXR1cm4gcyAhPSBOVUxMICYmIE1hdGNoQW5kRXhwbGFpbihTdHJpbmdUeXBlKHMp
LCBsaXN0ZW5lcik7Ci0gIH0KLQotICAvLyBNYXRjaGVzIGFueXRoaW5nIHRoYXQgY2FuIGNvbnZl
cnQgdG8gU3RyaW5nVHlwZS4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIHRlbXBsYXRlLCBub3QganVz
dCBhIHBsYWluIGZ1bmN0aW9uIHdpdGggY29uc3QgU3RyaW5nVHlwZSYsCi0gIC8vIGJlY2F1c2Ug
U3RyaW5nUGllY2UgaGFzIHNvbWUgaW50ZXJmZXJpbmcgbm9uLWV4cGxpY2l0IGNvbnN0cnVjdG9y
cy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZWVTdHJpbmdUeXBlPgotICBib29sIE1hdGNo
QW5kRXhwbGFpbihjb25zdCBNYXRjaGVlU3RyaW5nVHlwZSYgcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKLSAgICBj
b25zdCBTdHJpbmdUeXBlJiBzMihzKTsKLSAgICByZXR1cm4gczIubGVuZ3RoKCkgPj0gcHJlZml4
Xy5sZW5ndGgoKSAmJgotICAgICAgICBzMi5zdWJzdHIoMCwgcHJlZml4Xy5sZW5ndGgoKSkgPT0g
cHJlZml4XzsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICAqb3MgPDwgInN0YXJ0cyB3aXRoICI7Ci0gICAgVW5pdmVyc2FsUHJpbnQocHJl
Zml4Xywgb3MpOwotICB9Ci0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJkb2Vzbid0IHN0YXJ0IHdpdGggIjsKLSAgICBV
bml2ZXJzYWxQcmludChwcmVmaXhfLCBvcyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IFN0
cmluZ1R5cGUgcHJlZml4XzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFN0YXJ0c1dpdGhN
YXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIEVuZHNXaXRoKHN1
YnN0cmluZykgbWF0Y2hlciwgd2hpY2gKLS8vIGNhbiBiZSB1c2VkIGFzIGEgTWF0Y2hlcjxUPiBh
cyBsb25nIGFzIFQgY2FuIGJlIGNvbnZlcnRlZCB0byBhCi0vLyBzdHJpbmcuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgU3RyaW5nVHlwZT4KLWNsYXNzIEVuZHNXaXRoTWF0Y2hlciB7Ci0gcHVibGljOgot
ICBleHBsaWNpdCBFbmRzV2l0aE1hdGNoZXIoY29uc3QgU3RyaW5nVHlwZSYgc3VmZml4KSA6IHN1
ZmZpeF8oc3VmZml4KSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFydGljdWxh
cmx5OgotICAvLyAgIGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25zdCB3Y2hh
cl90KgotICAvLyAgIHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxp
c3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHMgIT0gTlVMTCAmJiBNYXRjaEFuZEV4cGxhaW4o
U3RyaW5nVHlwZShzKSwgbGlzdGVuZXIpOwotICB9Ci0KLSAgLy8gTWF0Y2hlcyBhbnl0aGluZyB0
aGF0IGNhbiBjb252ZXJ0IHRvIFN0cmluZ1R5cGUuCi0gIC8vCi0gIC8vIFRoaXMgaXMgYSB0ZW1w
bGF0ZSwgbm90IGp1c3QgYSBwbGFpbiBmdW5jdGlvbiB3aXRoIGNvbnN0IFN0cmluZ1R5cGUmLAot
ICAvLyBiZWNhdXNlIFN0cmluZ1BpZWNlIGhhcyBzb21lIGludGVyZmVyaW5nIG5vbi1leHBsaWNp
dCBjb25zdHJ1Y3RvcnMuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVlU3RyaW5nVHlwZT4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgTWF0Y2hlZVN0cmluZ1R5cGUmIHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBj
b25zdCB7Ci0gICAgY29uc3QgU3RyaW5nVHlwZSYgczIocyk7Ci0gICAgcmV0dXJuIHMyLmxlbmd0
aCgpID49IHN1ZmZpeF8ubGVuZ3RoKCkgJiYKLSAgICAgICAgczIuc3Vic3RyKHMyLmxlbmd0aCgp
IC0gc3VmZml4Xy5sZW5ndGgoKSkgPT0gc3VmZml4XzsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImVuZHMgd2l0aCAiOwot
ICAgIFVuaXZlcnNhbFByaW50KHN1ZmZpeF8sIG9zKTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVO
ZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiZG9lc24n
dCBlbmQgd2l0aCAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1ZmZpeF8sIG9zKTsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgY29uc3QgU3RyaW5nVHlwZSBzdWZmaXhfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oRW5kc1dpdGhNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgcG9seW1vcnBo
aWMgbWF0Y2hlcnMgTWF0Y2hlc1JlZ2V4KHJlZ2V4KSBhbmQKLS8vIENvbnRhaW5zUmVnZXgocmVn
ZXgpLCB3aGljaCBjYW4gYmUgdXNlZCBhcyBhIE1hdGNoZXI8VD4gYXMgbG9uZyBhcwotLy8gVCBj
YW4gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nLgotY2xhc3MgTWF0Y2hlc1JlZ2V4TWF0Y2hlciB7
Ci0gcHVibGljOgotICBNYXRjaGVzUmVnZXhNYXRjaGVyKGNvbnN0IFJFKiByZWdleCwgYm9vbCBm
dWxsX21hdGNoKQotICAgICAgOiByZWdleF8ocmVnZXgpLCBmdWxsX21hdGNoXyhmdWxsX21hdGNo
KSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFydGljdWxhcmx5OgotICAvLyAg
IGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25zdCB3Y2hhcl90KgotICAvLyAg
IHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgYm9vbCBNYXRjaEFu
ZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25z
dCB7Ci0gICAgcmV0dXJuIHMgIT0gTlVMTCAmJiBNYXRjaEFuZEV4cGxhaW4oc3RkOjpzdHJpbmco
cyksIGxpc3RlbmVyKTsKLSAgfQotCi0gIC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29u
dmVydCB0byBzdGQ6OnN0cmluZy4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIHRlbXBsYXRlLCBub3Qg
anVzdCBhIHBsYWluIGZ1bmN0aW9uIHdpdGggY29uc3Qgc3RkOjpzdHJpbmcmLAotICAvLyBiZWNh
dXNlIFN0cmluZ1BpZWNlIGhhcyBzb21lIGludGVyZmVyaW5nIG5vbi1leHBsaWNpdCBjb25zdHJ1
Y3RvcnMuCi0gIHRlbXBsYXRlIDxjbGFzcyBNYXRjaGVlU3RyaW5nVHlwZT4KLSAgYm9vbCBNYXRj
aEFuZEV4cGxhaW4oY29uc3QgTWF0Y2hlZVN0cmluZ1R5cGUmIHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHMyKHMpOwotICAgIHJldHVybiBmdWxsX21hdGNoXyA/IFJFOjpG
dWxsTWF0Y2goczIsICpyZWdleF8pIDoKLSAgICAgICAgUkU6OlBhcnRpYWxNYXRjaChzMiwgKnJl
Z2V4Xyk7Ci0gIH0KLQotICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25z
dCB7Ci0gICAgKm9zIDw8IChmdWxsX21hdGNoXyA/ICJtYXRjaGVzIiA6ICJjb250YWlucyIpCi0g
ICAgICAgIDw8ICIgcmVndWxhciBleHByZXNzaW9uICI7Ci0gICAgVW5pdmVyc2FsUHJpbnRlcjxz
dGQ6OnN0cmluZz46OlByaW50KHJlZ2V4Xy0+cGF0dGVybigpLCBvcyk7Ci0gIH0KLQotICB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3Mg
PDwgImRvZXNuJ3QgIiA8PCAoZnVsbF9tYXRjaF8gPyAibWF0Y2giIDogImNvbnRhaW4iKQotICAg
ICAgICA8PCAiIHJlZ3VsYXIgZXhwcmVzc2lvbiAiOwotICAgIFVuaXZlcnNhbFByaW50ZXI8c3Rk
OjpzdHJpbmc+OjpQcmludChyZWdleF8tPnBhdHRlcm4oKSwgb3MpOwotICB9Ci0KLSBwcml2YXRl
OgotICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBSRT4gcmVnZXhfOwotICBjb25z
dCBib29sIGZ1bGxfbWF0Y2hfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTWF0Y2hlc1Jl
Z2V4TWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIGEgbWF0Y2hlciB0aGF0IGNvbXBhcmVz
IHRoZSB0d28gZmllbGRzIG9mIGEgMi10dXBsZQotLy8gdXNpbmcgb25lIG9mIHRoZSA9PSwgPD0s
IDwsIGV0Yywgb3BlcmF0b3JzLiAgVGhlIHR3byBmaWVsZHMgYmVpbmcKLS8vIGNvbXBhcmVkIGRv
bid0IGhhdmUgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlLgotLy8KLS8vIFRoZSBtYXRjaGVyIGRlZmlu
ZWQgaGVyZSBpcyBwb2x5bW9ycGhpYyAoZm9yIGV4YW1wbGUsIEVxKCkgY2FuIGJlCi0vLyB1c2Vk
IHRvIG1hdGNoIGEgdHVwbGU8aW50LCBzaG9ydD4sIGEgdHVwbGU8Y29uc3QgbG9uZyYsIGRvdWJs
ZT4sCi0vLyBldGMpLiAgVGhlcmVmb3JlIHdlIHVzZSBhIHRlbXBsYXRlIHR5cGUgY29udmVyc2lv
biBvcGVyYXRvciBpbiB0aGUKLS8vIGltcGxlbWVudGF0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEQsIHR5cGVuYW1lIE9wPgotY2xhc3MgUGFpck1hdGNoQmFzZSB7Ci0gcHVibGljOgotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBNYXRjaGVyPCA6OnRl
c3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIo
bmV3IEltcGw8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KTsKLSAgfQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBNYXRjaGVyPGNvbnN0IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyPiY+KCkgY29uc3QgewotICAgIHJldHVybiBNYWtlTWF0Y2hlcihu
ZXcgSW1wbDxjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4mPik7Ci0gIH0KLQotIHByaXZh
dGU6Ci0gIHN0YXRpYyA6OnN0ZDo6b3N0cmVhbSYgR2V0RGVzYyg6OnN0ZDo6b3N0cmVhbSYgb3Mp
IHsgIC8vIE5PTElOVAotICAgIHJldHVybiBvcyA8PCBEOjpEZXNjKCk7Ci0gIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVy
ZmFjZTxUdXBsZT4gewotICAgcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxh
aW4oCi0gICAgICAgIFR1cGxlIGFyZ3MsCi0gICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8q
IGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAgICByZXR1cm4gT3AoKSg6OnRlc3Rpbmc6OmdldDww
PihhcmdzKSwgOjp0ZXN0aW5nOjpnZXQ8MT4oYXJncykpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpvcyA8PCAi
YXJlICIgPDwgR2V0RGVzYzsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRp
b25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpvcyA8PCAiYXJlbid0ICIg
PDwgR2V0RGVzYzsKLSAgICB9Ci0gIH07Ci19OwotCi1jbGFzcyBFcTJNYXRjaGVyIDogcHVibGlj
IFBhaXJNYXRjaEJhc2U8RXEyTWF0Y2hlciwgQW55RXE+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBj
b25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImFuIGVxdWFsIHBhaXIiOyB9Ci19OwotY2xhc3Mg
TmUyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hCYXNlPE5lMk1hdGNoZXIsIEFueU5lPiB7Ci0g
cHVibGljOgotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJhbiB1bmVxdWFs
IHBhaXIiOyB9Ci19OwotY2xhc3MgTHQyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hCYXNlPEx0
Mk1hdGNoZXIsIEFueUx0PiB7Ci0gcHVibGljOgotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygp
IHsgcmV0dXJuICJhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IDwgdGhlIHNlY29uZCI7IH0KLX07Ci1j
bGFzcyBHdDJNYXRjaGVyIDogcHVibGljIFBhaXJNYXRjaEJhc2U8R3QyTWF0Y2hlciwgQW55R3Q+
IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImEgcGFp
ciB3aGVyZSB0aGUgZmlyc3QgPiB0aGUgc2Vjb25kIjsgfQotfTsKLWNsYXNzIExlMk1hdGNoZXIg
OiBwdWJsaWMgUGFpck1hdGNoQmFzZTxMZTJNYXRjaGVyLCBBbnlMZT4gewotIHB1YmxpYzoKLSAg
c3RhdGljIGNvbnN0IGNoYXIqIERlc2MoKSB7IHJldHVybiAiYSBwYWlyIHdoZXJlIHRoZSBmaXJz
dCA8PSB0aGUgc2Vjb25kIjsgfQotfTsKLWNsYXNzIEdlMk1hdGNoZXIgOiBwdWJsaWMgUGFpck1h
dGNoQmFzZTxHZTJNYXRjaGVyLCBBbnlHZT4gewotIHB1YmxpYzoKLSAgc3RhdGljIGNvbnN0IGNo
YXIqIERlc2MoKSB7IHJldHVybiAiYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA+PSB0aGUgc2Vjb25k
IjsgfQotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgTm90KC4uLikgbWF0Y2hlciBmb3IgYSBwYXJ0
aWN1bGFyIGFyZ3VtZW50IHR5cGUgVC4KLS8vIFdlIGRvIG5vdCBuZXN0IGl0IGluc2lkZSB0aGUg
Tm90TWF0Y2hlciBjbGFzcyB0ZW1wbGF0ZSwgYXMgdGhhdAotLy8gd2lsbCBwcmV2ZW50IGRpZmZl
cmVudCBpbnN0YW50aWF0aW9ucyBvZiBOb3RNYXRjaGVyIGZyb20gc2hhcmluZwotLy8gdGhlIHNh
bWUgTm90TWF0Y2hlckltcGw8VD4gY2xhc3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IE5vdE1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoK
LSAgZXhwbGljaXQgTm90TWF0Y2hlckltcGwoY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hlcikKLSAg
ICAgIDogbWF0Y2hlcl8obWF0Y2hlcikge30KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBs
YWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICByZXR1
cm4gIW1hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbih4LCBsaXN0ZW5lcik7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBtYXRj
aGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBtYXRjaGVyXy5E
ZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTWF0Y2hlcjxUPiBtYXRj
aGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKE5vdE1hdGNoZXJJbXBsKTsKLX07Ci0K
LS8vIEltcGxlbWVudHMgdGhlIE5vdChtKSBtYXRjaGVyLCB3aGljaCBtYXRjaGVzIGEgdmFsdWUg
dGhhdCBkb2Vzbid0Ci0vLyBtYXRjaCBtYXRjaGVyIG0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5u
ZXJNYXRjaGVyPgotY2xhc3MgTm90TWF0Y2hlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBOb3RN
YXRjaGVyKElubmVyTWF0Y2hlciBtYXRjaGVyKSA6IG1hdGNoZXJfKG1hdGNoZXIpIHt9Ci0KLSAg
Ly8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIE5vdChtKSB0
byBiZSB1c2VkCi0gIC8vIHRvIG1hdGNoIGFueSB0eXBlIG0gY2FuIG1hdGNoLgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxUPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gTWF0Y2hlcjxUPihuZXcgTm90TWF0Y2hlckltcGw8VD4oU2FmZU1hdGNoZXJDYXN0PFQ+KG1h
dGNoZXJfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICBJbm5lck1hdGNoZXIgbWF0Y2hlcl87Ci0K
LSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhOb3RNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVu
dHMgdGhlIEFsbE9mKG0xLCBtMikgbWF0Y2hlciBmb3IgYSBwYXJ0aWN1bGFyIGFyZ3VtZW50IHR5
cGUKLS8vIFQuIFdlIGRvIG5vdCBuZXN0IGl0IGluc2lkZSB0aGUgQm90aE9mTWF0Y2hlciBjbGFz
cyB0ZW1wbGF0ZSwgYXMKLS8vIHRoYXQgd2lsbCBwcmV2ZW50IGRpZmZlcmVudCBpbnN0YW50aWF0
aW9ucyBvZiBCb3RoT2ZNYXRjaGVyIGZyb20KLS8vIHNoYXJpbmcgdGhlIHNhbWUgQm90aE9mTWF0
Y2hlckltcGw8VD4gY2xhc3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJvdGhPZk1h
dGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoKLSAgQm90
aE9mTWF0Y2hlckltcGwoY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hlcjEsIGNvbnN0IE1hdGNoZXI8
VD4mIG1hdGNoZXIyKQotICAgICAgOiBtYXRjaGVyMV8obWF0Y2hlcjEpLCBtYXRjaGVyMl8obWF0
Y2hlcjIpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9z
KSBjb25zdCB7Ci0gICAgKm9zIDw8ICIoIjsKLSAgICBtYXRjaGVyMV8uRGVzY3JpYmVUbyhvcyk7
Ci0gICAgKm9zIDw8ICIpIGFuZCAoIjsKLSAgICBtYXRjaGVyMl8uRGVzY3JpYmVUbyhvcyk7Ci0g
ICAgKm9zIDw8ICIpIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICIoIjsKLSAgICBtYXRjaGVy
MV8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICAqb3MgPDwgIikgb3IgKCI7Ci0gICAgbWF0
Y2hlcjJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgKm9zIDw8ICIpIjsKLSAgfQotCi0g
IHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBs
aXN0ZW5lcikgY29uc3QgewotICAgIC8vIElmIGVpdGhlciBtYXRjaGVyMV8gb3IgbWF0Y2hlcjJf
IGRvZXNuJ3QgbWF0Y2ggeCwgd2Ugb25seSBuZWVkCi0gICAgLy8gdG8gZXhwbGFpbiB3aHkgb25l
IG9mIHRoZW0gZmFpbHMuCi0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7
Ci0gICAgaWYgKCFtYXRjaGVyMV8uTWF0Y2hBbmRFeHBsYWluKHgsICZsaXN0ZW5lcjEpKSB7Ci0g
ICAgICAqbGlzdGVuZXIgPDwgbGlzdGVuZXIxLnN0cigpOwotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXIyOwotICAgIGlm
ICghbWF0Y2hlcjJfLk1hdGNoQW5kRXhwbGFpbih4LCAmbGlzdGVuZXIyKSkgewotICAgICAgKmxp
c3RlbmVyIDw8IGxpc3RlbmVyMi5zdHIoKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBleHBsYWluIHdoeSAqYm90aCogb2YgdGhlbSBt
YXRjaC4KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzMSA9IGxpc3RlbmVyMS5zdHIoKTsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyBzMiA9IGxpc3RlbmVyMi5zdHIoKTsKLQotICAgIGlmIChzMSA9PSAi
IikgewotICAgICAgKmxpc3RlbmVyIDw8IHMyOwotICAgIH0gZWxzZSB7Ci0gICAgICAqbGlzdGVu
ZXIgPDwgczE7Ci0gICAgICBpZiAoczIgIT0gIiIpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8ICIs
IGFuZCAiIDw8IHMyOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgY29uc3QgTWF0Y2hlcjxUPiBtYXRjaGVyMV87Ci0gIGNvbnN0IE1hdGNoZXI8
VD4gbWF0Y2hlcjJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQm90aE9mTWF0Y2hlcklt
cGwpOwotfTsKLQotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLS8vIE1hdGNoZXJMaXN0IHByb3ZpZGVz
IG1lY2hhbmlzbXMgZm9yIHN0b3JpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgbWF0Y2hlcnMgaW4K
LS8vIGEgbGlzdCBzdHJ1Y3R1cmUgKExpc3RUeXBlKSBhbmQgY3JlYXRpbmcgYSBjb21iaW5pbmcg
bWF0Y2hlciBmcm9tIHN1Y2ggYQotLy8gbGlzdC4KLS8vIFRoZSB0ZW1wbGF0ZSBpcyBkZWZpbmVk
IHJlY3Vyc2l2ZWx5IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgcGFyYW10ZXJzOgotLy8g
ICAqIGtTaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIE1hdGNoZXJMaXN0LgotLy8gICAqIEhlYWQg
aXMgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IG1hdGNoZXIgb2YgdGhlIGxpc3QuCi0vLyAgICogVGFp
bCBkZW5vdGVzIHRoZSB0eXBlcyBvZiB0aGUgcmVtYWluaW5nIG1hdGNoZXJzIG9mIHRoZSBsaXN0
LgotdGVtcGxhdGUgPGludCBrU2l6ZSwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUuLi4gVGFpbD4K
LXN0cnVjdCBNYXRjaGVyTGlzdCB7Ci0gIHR5cGVkZWYgTWF0Y2hlckxpc3Q8a1NpemUgLSAxLCBU
YWlsLi4uPiBNYXRjaGVyTGlzdFRhaWw7Ci0gIHR5cGVkZWYgOjpzdGQ6OnBhaXI8SGVhZCwgdHlw
ZW5hbWUgTWF0Y2hlckxpc3RUYWlsOjpMaXN0VHlwZT4gTGlzdFR5cGU7Ci0KLSAgLy8gQnVpbGRM
aXN0IHN0b3JlcyB2YXJpYWRpYyB0eXBlIHZhbHVlcyBpbiBhIG5lc3RlZCBwYWlyIHN0cnVjdHVy
ZS4KLSAgLy8gRXhhbXBsZToKLSAgLy8gTWF0Y2hlckxpc3Q8MywgaW50LCBzdHJpbmcsIGZsb2F0
Pjo6QnVpbGRMaXN0KDUsICJmb28iLCAyLjApIHdpbGwgcmV0dXJuCi0gIC8vIHRoZSBjb3JyZXNw
b25kaW5nIHJlc3VsdCBvZiB0eXBlIHBhaXI8aW50LCBwYWlyPHN0cmluZywgZmxvYXQ+Pi4KLSAg
c3RhdGljIExpc3RUeXBlIEJ1aWxkTGlzdChjb25zdCBIZWFkJiBtYXRjaGVyLCBjb25zdCBUYWls
Ji4uLiB0YWlsKSB7Ci0gICAgcmV0dXJuIExpc3RUeXBlKG1hdGNoZXIsIE1hdGNoZXJMaXN0VGFp
bDo6QnVpbGRMaXN0KHRhaWwuLi4pKTsKLSAgfQotCi0gIC8vIENyZWF0ZU1hdGNoZXI8VD4gY3Jl
YXRlcyBhIE1hdGNoZXI8VD4gZnJvbSBhIGdpdmVuIGxpc3Qgb2YgbWF0Y2hlcnMgKGJ1aWx0Ci0g
IC8vIGJ5IEJ1aWxkTGlzdCgpKS4gQ29tYmluaW5nTWF0Y2hlcjxUPiBpcyB1c2VkIHRvIGNvbWJp
bmUgdGhlIG1hdGNoZXJzIG9mIHRoZQotICAvLyBsaXN0LiBDb21iaW5pbmdNYXRjaGVyPFQ+IG11
c3QgaW1wbGVtZW50IE1hdGNoZXJJbnRlcmZhY2U8VD4gYW5kIGhhdmUgYQotICAvLyBjb25zdHJ1
Y3RvciB0YWtpbmcgdHdvIE1hdGNoZXI8VD5zIGFzIGlucHV0LgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdGVtcGxhdGUgPHR5cGVuYW1lIC8qIFQgKi8+IGNsYXNzIENvbWJpbmluZ01hdGNoZXI+
Ci0gIHN0YXRpYyBNYXRjaGVyPFQ+IENyZWF0ZU1hdGNoZXIoY29uc3QgTGlzdFR5cGUmIG1hdGNo
ZXJzKSB7Ci0gICAgcmV0dXJuIE1hdGNoZXI8VD4obmV3IENvbWJpbmluZ01hdGNoZXI8VD4oCi0g
ICAgICAgIFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRjaGVycy5maXJzdCksCi0gICAgICAgIE1hdGNo
ZXJMaXN0VGFpbDo6dGVtcGxhdGUgQ3JlYXRlTWF0Y2hlcjxULCBDb21iaW5pbmdNYXRjaGVyPigK
LSAgICAgICAgICAgIG1hdGNoZXJzLnNlY29uZCkpKTsKLSAgfQotfTsKLQotLy8gVGhlIGZvbGxv
d2luZyBkZWZpbmVzIHRoZSBiYXNlIGNhc2UgZm9yIHRoZSByZWN1cnNpdmUgZGVmaW5pdGlvbiBv
ZgotLy8gTWF0Y2hlckxpc3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlcjEsIHR5cGVuYW1l
IE1hdGNoZXIyPgotc3RydWN0IE1hdGNoZXJMaXN0PDIsIE1hdGNoZXIxLCBNYXRjaGVyMj4gewot
ICB0eXBlZGVmIDo6c3RkOjpwYWlyPE1hdGNoZXIxLCBNYXRjaGVyMj4gTGlzdFR5cGU7Ci0KLSAg
c3RhdGljIExpc3RUeXBlIEJ1aWxkTGlzdChjb25zdCBNYXRjaGVyMSYgbWF0Y2hlcjEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWF0Y2hlcjImIG1hdGNoZXIyKSB7Ci0gICAg
cmV0dXJuIDo6c3RkOjpwYWlyPE1hdGNoZXIxLCBNYXRjaGVyMj4obWF0Y2hlcjEsIG1hdGNoZXIy
KTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0ZW1wbGF0ZSA8dHlwZW5hbWUgLyog
VCAqLz4gY2xhc3MgQ29tYmluaW5nTWF0Y2hlcj4KLSAgc3RhdGljIE1hdGNoZXI8VD4gQ3JlYXRl
TWF0Y2hlcihjb25zdCBMaXN0VHlwZSYgbWF0Y2hlcnMpIHsKLSAgICByZXR1cm4gTWF0Y2hlcjxU
PihuZXcgQ29tYmluaW5nTWF0Y2hlcjxUPigKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1h
dGNoZXJzLmZpcnN0KSwKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXJzLnNlY29u
ZCkpKTsKLSAgfQotfTsKLQotLy8gVmFyaWFkaWNNYXRjaGVyIGlzIHVzZWQgZm9yIHRoZSB2YXJp
YWRpYyBpbXBsZW1lbnRhdGlvbiBvZgotLy8gQWxsT2YobV8xLCBtXzIsIC4uLikgYW5kIEFueU9m
KG1fMSwgbV8yLCAuLi4pLgotLy8gQ29tYmluaW5nTWF0Y2hlcjxUPiBpcyB1c2VkIHRvIHJlY3Vy
c2l2ZWx5IGNvbWJpbmUgdGhlIHByb3ZpZGVkIG1hdGNoZXJzCi0vLyAob2YgdHlwZSBBcmdzLi4u
KS4KLXRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQ29tYmluaW5nTWF0Y2hl
ciwgdHlwZW5hbWUuLi4gQXJncz4KLWNsYXNzIFZhcmlhZGljTWF0Y2hlciB7Ci0gcHVibGljOgot
ICBWYXJpYWRpY01hdGNoZXIoY29uc3QgQXJncyYuLi4gbWF0Y2hlcnMpICAvLyBOT0xJTlQKLSAg
ICAgIDogbWF0Y2hlcnNfKE1hdGNoZXJMaXN0VHlwZTo6QnVpbGRMaXN0KG1hdGNoZXJzLi4uKSkg
e30KLQotICAvLyBUaGlzIHRlbXBsYXRlIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3Mg
YW4KLSAgLy8gVmFyaWFkaWNNYXRjaGVyPE1hdGNoZXIxLCBNYXRjaGVyMi4uLj4gb2JqZWN0IHRv
IG1hdGNoIGFueSB0eXBlIHRoYXQKLSAgLy8gYWxsIG9mIHRoZSBwcm92aWRlZCBtYXRjaGVycyAo
TWF0Y2hlcjEsIE1hdGNoZXIyLCAuLi4pIGNhbiBtYXRjaC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8VD4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1hdGNoZXJM
aXN0VHlwZTo6dGVtcGxhdGUgQ3JlYXRlTWF0Y2hlcjxULCBDb21iaW5pbmdNYXRjaGVyPigKLSAg
ICAgICAgbWF0Y2hlcnNfKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBNYXRjaGVyTGlz
dDxzaXplb2YuLi4oQXJncyksIEFyZ3MuLi4+IE1hdGNoZXJMaXN0VHlwZTsKLQotICBjb25zdCB0
eXBlbmFtZSBNYXRjaGVyTGlzdFR5cGU6Okxpc3RUeXBlIG1hdGNoZXJzXzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKFZhcmlhZGljTWF0Y2hlcik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KLXVzaW5nIEFsbE9mTWF0Y2hlciA9IFZhcmlhZGljTWF0Y2hlcjxCb3RoT2ZN
YXRjaGVySW1wbCwgQXJncy4uLj47Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQotCi0v
LyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlIEFsbE9mKG1fMSwgLi4uLCBtX24pIG1hdGNoZXIs
IHdoaWNoCi0vLyBtYXRjaGVzIGEgdmFsdWUgdGhhdCBtYXRjaGVzIGFsbCBvZiB0aGUgbWF0Y2hl
cnMgbV8xLCAuLi4sIGFuZCBtX24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlcjEsIHR5cGVu
YW1lIE1hdGNoZXIyPgotY2xhc3MgQm90aE9mTWF0Y2hlciB7Ci0gcHVibGljOgotICBCb3RoT2ZN
YXRjaGVyKE1hdGNoZXIxIG1hdGNoZXIxLCBNYXRjaGVyMiBtYXRjaGVyMikKLSAgICAgIDogbWF0
Y2hlcjFfKG1hdGNoZXIxKSwgbWF0Y2hlcjJfKG1hdGNoZXIyKSB7fQotCi0gIC8vIFRoaXMgdGVt
cGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBhCi0gIC8vIEJvdGhPZk1hdGNo
ZXI8TWF0Y2hlcjEsIE1hdGNoZXIyPiBvYmplY3QgdG8gbWF0Y2ggYW55IHR5cGUgdGhhdAotICAv
LyBib3RoIE1hdGNoZXIxIGFuZCBNYXRjaGVyMiBjYW4gbWF0Y2guCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3QgewotICAgIHJldHVybiBNYXRj
aGVyPFQ+KG5ldyBCb3RoT2ZNYXRjaGVySW1wbDxUPihTYWZlTWF0Y2hlckNhc3Q8VD4obWF0Y2hl
cjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Fm
ZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIyXykpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgTWF0Y2hl
cjEgbWF0Y2hlcjFfOwotICBNYXRjaGVyMiBtYXRjaGVyMl87Ci0KLSAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhCb3RoT2ZNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIEFueU9mKG0x
LCBtMikgbWF0Y2hlciBmb3IgYSBwYXJ0aWN1bGFyIGFyZ3VtZW50IHR5cGUKLS8vIFQuICBXZSBk
byBub3QgbmVzdCBpdCBpbnNpZGUgdGhlIEFueU9mTWF0Y2hlciBjbGFzcyB0ZW1wbGF0ZSwgYXMK
LS8vIHRoYXQgd2lsbCBwcmV2ZW50IGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiBBbnlPZk1h
dGNoZXIgZnJvbQotLy8gc2hhcmluZyB0aGUgc2FtZSBFaXRoZXJPZk1hdGNoZXJJbXBsPFQ+IGNs
YXNzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBFaXRoZXJPZk1hdGNoZXJJbXBsIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoKLSAgRWl0aGVyT2ZNYXRjaGVy
SW1wbChjb25zdCBNYXRjaGVyPFQ+JiBtYXRjaGVyMSwgY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hl
cjIpCi0gICAgICA6IG1hdGNoZXIxXyhtYXRjaGVyMSksIG1hdGNoZXIyXyhtYXRjaGVyMikge30K
LQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
LSAgICAqb3MgPDwgIigiOwotICAgIG1hdGNoZXIxXy5EZXNjcmliZVRvKG9zKTsKLSAgICAqb3Mg
PDwgIikgb3IgKCI7Ci0gICAgbWF0Y2hlcjJfLkRlc2NyaWJlVG8ob3MpOwotICAgICpvcyA8PCAi
KSI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3Ry
ZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiKCI7Ci0gICAgbWF0Y2hlcjFfLkRlc2NyaWJl
TmVnYXRpb25Ubyhvcyk7Ci0gICAgKm9zIDw8ICIpIGFuZCAoIjsKLSAgICBtYXRjaGVyMl8uRGVz
Y3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICAqb3MgPDwgIikiOwotICB9Ci0KLSAgdmlydHVhbCBi
b29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgLy8gSWYgZWl0aGVyIG1hdGNoZXIxXyBvciBtYXRjaGVyMl8gbWF0Y2hlcyB4
LCB3ZSBqdXN0IG5lZWQgdG8KLSAgICAvLyBleHBsYWluIHdoeSAqb25lKiBvZiB0aGVtIG1hdGNo
ZXMuCi0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7Ci0gICAgaWYgKG1h
dGNoZXIxXy5NYXRjaEFuZEV4cGxhaW4oeCwgJmxpc3RlbmVyMSkpIHsKLSAgICAgICpsaXN0ZW5l
ciA8PCBsaXN0ZW5lcjEuc3RyKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBT
dHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyMjsKLSAgICBpZiAobWF0Y2hlcjJfLk1h
dGNoQW5kRXhwbGFpbih4LCAmbGlzdGVuZXIyKSkgewotICAgICAgKmxpc3RlbmVyIDw8IGxpc3Rl
bmVyMi5zdHIoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIE90aGVyd2lz
ZSB3ZSBuZWVkIHRvIGV4cGxhaW4gd2h5ICpib3RoKiBvZiB0aGVtIGZhaWwuCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgczEgPSBsaXN0ZW5lcjEuc3RyKCk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
czIgPSBsaXN0ZW5lcjIuc3RyKCk7Ci0KLSAgICBpZiAoczEgPT0gIiIpIHsKLSAgICAgICpsaXN0
ZW5lciA8PCBzMjsKLSAgICB9IGVsc2UgewotICAgICAgKmxpc3RlbmVyIDw8IHMxOwotICAgICAg
aWYgKHMyICE9ICIiKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAiLCBhbmQgIiA8PCBzMjsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25z
dCBNYXRjaGVyPFQ+IG1hdGNoZXIxXzsKLSAgY29uc3QgTWF0Y2hlcjxUPiBtYXRjaGVyMl87Ci0K
LSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhFaXRoZXJPZk1hdGNoZXJJbXBsKTsKLX07Ci0KLSNp
ZiBHVEVTVF9MQU5HX0NYWDExCi0vLyBBbnlPZk1hdGNoZXIgaXMgdXNlZCBmb3IgdGhlIHZhcmlh
ZGljIGltcGxlbWVudGF0aW9uIG9mIEFueU9mKG1fMSwgbV8yLCAuLi4pLgotdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+Ci11c2luZyBBbnlPZk1hdGNoZXIgPSBWYXJpYWRpY01hdGNoZXI8RWl0
aGVyT2ZNYXRjaGVySW1wbCwgQXJncy4uLj47Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgx
MQotCi0vLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlIEFueU9mKG1fMSwgLi4uLCBtX24pIG1h
dGNoZXIsIHdoaWNoCi0vLyBtYXRjaGVzIGEgdmFsdWUgdGhhdCBtYXRjaGVzIGF0IGxlYXN0IG9u
ZSBvZiB0aGUgbWF0Y2hlcnMgbV8xLCAuLi4sCi0vLyBhbmQgbV9uLgotdGVtcGxhdGUgPHR5cGVu
YW1lIE1hdGNoZXIxLCB0eXBlbmFtZSBNYXRjaGVyMj4KLWNsYXNzIEVpdGhlck9mTWF0Y2hlciB7
Ci0gcHVibGljOgotICBFaXRoZXJPZk1hdGNoZXIoTWF0Y2hlcjEgbWF0Y2hlcjEsIE1hdGNoZXIy
IG1hdGNoZXIyKQotICAgICAgOiBtYXRjaGVyMV8obWF0Y2hlcjEpLCBtYXRjaGVyMl8obWF0Y2hl
cjIpIHt9Ci0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxs
b3dzIGEKLSAgLy8gRWl0aGVyT2ZNYXRjaGVyPE1hdGNoZXIxLCBNYXRjaGVyMj4gb2JqZWN0IHRv
IG1hdGNoIGFueSB0eXBlIHRoYXQKLSAgLy8gYm90aCBNYXRjaGVyMSBhbmQgTWF0Y2hlcjIgY2Fu
IG1hdGNoLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxUPigp
IGNvbnN0IHsKLSAgICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgRWl0aGVyT2ZNYXRjaGVySW1wbDxU
PigKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIxXyksIFNhZmVNYXRjaGVyQ2Fz
dDxUPihtYXRjaGVyMl8pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIE1hdGNoZXIxIG1hdGNoZXIx
XzsKLSAgTWF0Y2hlcjIgbWF0Y2hlcjJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWl0
aGVyT2ZNYXRjaGVyKTsKLX07Ci0KLS8vIFVzZWQgZm9yIGltcGxlbWVudGluZyBUcnVseShwcmVk
KSwgd2hpY2ggdHVybnMgYSBwcmVkaWNhdGUgaW50byBhCi0vLyBtYXRjaGVyLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFByZWRpY2F0ZT4KLWNsYXNzIFRydWx5TWF0Y2hlciB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBUcnVseU1hdGNoZXIoUHJlZGljYXRlIHByZWQpIDogcHJlZGljYXRlXyhwcmVkKSB7
fQotCi0gIC8vIFRoaXMgbWV0aG9kIHRlbXBsYXRlIGFsbG93cyBUcnVseShwcmVkKSB0byBiZSB1
c2VkIGFzIGEgbWF0Y2hlcgotICAvLyBmb3IgdHlwZSBUIHdoZXJlIFQgaXMgdGhlIGFyZ3VtZW50
IHR5cGUgb2YgcHJlZGljYXRlICdwcmVkJy4gIFRoZQotICAvLyBhcmd1bWVudCBpcyBwYXNzZWQg
YnkgcmVmZXJlbmNlIGFzIHRoZSBwcmVkaWNhdGUgbWF5IGJlCi0gIC8vIGludGVyZXN0ZWQgaW4g
dGhlIGFkZHJlc3Mgb2YgdGhlIGFyZ3VtZW50LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oVCYgeCwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAg
ICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIC8v
IFdpdGhvdXQgdGhlIGlmLXN0YXRlbWVudCwgTVNWQyBzb21ldGltZXMgd2FybnMgYWJvdXQgY29u
dmVydGluZwotICAgIC8vIGEgdmFsdWUgdG8gYm9vbCAod2FybmluZyA0ODAwKS4KLSAgICAvLwot
ICAgIC8vIFdlIGNhbm5vdCB3cml0ZSAncmV0dXJuICEhcHJlZGljYXRlXyh4KTsnIGFzIHRoYXQg
ZG9lc24ndCB3b3JrCi0gICAgLy8gd2hlbiBwcmVkaWNhdGVfKHgpIHJldHVybnMgYSBjbGFzcyBj
b252ZXJ0aWJsZSB0byBib29sIGJ1dAotICAgIC8vIGhhdmluZyBubyBvcGVyYXRvciEoKS4KLSAg
ICBpZiAocHJlZGljYXRlXyh4KSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxz
ZTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
LSAgICAqb3MgPDwgInNhdGlzZmllcyB0aGUgZ2l2ZW4gcHJlZGljYXRlIjsKLSAgfQotCi0gIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpv
cyA8PCAiZG9lc24ndCBzYXRpc2Z5IHRoZSBnaXZlbiBwcmVkaWNhdGUiOwotICB9Ci0KLSBwcml2
YXRlOgotICBQcmVkaWNhdGUgcHJlZGljYXRlXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KFRydWx5TWF0Y2hlcik7Ci19OwotCi0vLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgTWF0Y2hlcyht
YXRjaGVyKSwgd2hpY2ggdHVybnMgYSBtYXRjaGVyIGludG8KLS8vIGEgcHJlZGljYXRlLgotdGVt
cGxhdGUgPHR5cGVuYW1lIE0+Ci1jbGFzcyBNYXRjaGVyQXNQcmVkaWNhdGUgewotIHB1YmxpYzoK
LSAgZXhwbGljaXQgTWF0Y2hlckFzUHJlZGljYXRlKE0gbWF0Y2hlcikgOiBtYXRjaGVyXyhtYXRj
aGVyKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgb3BlcmF0b3IoKSBhbGxvd3MgTWF0Y2hlcyht
KSB0byBiZSB1c2VkIGFzIGEKLSAgLy8gcHJlZGljYXRlIG9uIHR5cGUgVCB3aGVyZSBtIGlzIGEg
bWF0Y2hlciBvbiB0eXBlIFQuCi0gIC8vCi0gIC8vIFRoZSBhcmd1bWVudCB4IGlzIHBhc3NlZCBi
eSByZWZlcmVuY2UgaW5zdGVhZCBvZiBieSB2YWx1ZSwgYXMKLSAgLy8gc29tZSBtYXRjaGVyIG1h
eSBiZSBpbnRlcmVzdGVkIGluIGl0cyBhZGRyZXNzIChlLmcuIGFzIGluCi0gIC8vIE1hdGNoZXMo
UmVmKG4pKSh4KSkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBib29sIG9wZXJhdG9yKCko
Y29uc3QgVCYgeCkgY29uc3QgewotICAgIC8vIFdlIGxldCBtYXRjaGVyXyBjb21taXQgdG8gYSBw
YXJ0aWN1bGFyIHR5cGUgaGVyZSBpbnN0ZWFkIG9mCi0gICAgLy8gd2hlbiB0aGUgTWF0Y2hlckFz
UHJlZGljYXRlIG9iamVjdCB3YXMgY29uc3RydWN0ZWQuICBUaGlzCi0gICAgLy8gYWxsb3dzIHVz
IHRvIHdyaXRlIE1hdGNoZXMobSkgd2hlcmUgbSBpcyBhIHBvbHltb3JwaGljIG1hdGNoZXIKLSAg
ICAvLyAoZS5nLiBFcSg1KSkuCi0gICAgLy8KLSAgICAvLyBJZiB3ZSB3cml0ZSBNYXRjaGVyPFQ+
KG1hdGNoZXJfKS5NYXRjaGVzKHgpIGhlcmUsIGl0IHdvbid0Ci0gICAgLy8gY29tcGlsZSB3aGVu
IG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNoZXI8Y29uc3QgVCY+OyBpZiB3ZSB3cml0ZQotICAgIC8v
IE1hdGNoZXI8Y29uc3QgVCY+KG1hdGNoZXJfKS5NYXRjaGVzKHgpIGhlcmUsIGl0IHdvbid0IGNv
bXBpbGUKLSAgICAvLyB3aGVuIG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNoZXI8VD47IGlmIHdlIGp1
c3Qgd3JpdGUKLSAgICAvLyBtYXRjaGVyXy5NYXRjaGVzKHgpLCBpdCB3b24ndCBjb21waWxlIHdo
ZW4gbWF0Y2hlcl8gaXMKLSAgICAvLyBwb2x5bW9ycGhpYywgZS5nLiBFcSg1KS4KLSAgICAvLwot
ICAgIC8vIE1hdGNoZXJDYXN0PGNvbnN0IFQmPigpIGlzIG5lY2Vzc2FyeSBmb3IgbWFraW5nIHRo
ZSBjb2RlIHdvcmsKLSAgICAvLyBpbiBhbGwgb2YgdGhlIGFib3ZlIHNpdHVhdGlvbnMuCi0gICAg
cmV0dXJuIE1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVyXykuTWF0Y2hlcyh4KTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgTSBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKE1h
dGNoZXJBc1ByZWRpY2F0ZSk7Ci19OwotCi0vLyBGb3IgaW1wbGVtZW50aW5nIEFTU0VSVF9USEFU
KCkgYW5kIEVYUEVDVF9USEFUKCkuICBUaGUgdGVtcGxhdGUKLS8vIGFyZ3VtZW50IE0gbXVzdCBi
ZSBhIHR5cGUgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgbWF0Y2hlci4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBNPgotY2xhc3MgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIoTSBtKSA6IG1hdGNo
ZXJfKGludGVybmFsOjptb3ZlKG0pKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgKCkgb3BlcmF0
b3IgYWxsb3dzIGEgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIKLSAgLy8gb2JqZWN0IHRv
IGFjdCBhcyBhIHByZWRpY2F0ZS1mb3JtYXR0ZXIgc3VpdGFibGUgZm9yIHVzaW5nIHdpdGgKLSAg
Ly8gR29vZ2xlIFRlc3QncyBFWFBFQ1RfUFJFRF9GT1JNQVQxKCkgbWFjcm8uCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiB2
YWx1ZV90ZXh0LCBjb25zdCBUJiB4KSBjb25zdCB7Ci0gICAgLy8gV2UgY29udmVydCBtYXRjaGVy
XyB0byBhIE1hdGNoZXI8Y29uc3QgVCY+ICpub3cqIGluc3RlYWQgb2YKLSAgICAvLyB3aGVuIHRo
ZSBQcmVkaWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlciBvYmplY3Qgd2FzIGNvbnN0cnVjdGVkLAot
ICAgIC8vIGFzIG1hdGNoZXJfIG1heSBiZSBwb2x5bW9ycGhpYyAoZS5nLiBOb3ROdWxsKCkpIGFu
ZCB3ZSB3b24ndAotICAgIC8vIGtub3cgd2hpY2ggdHlwZSB0byBpbnN0YW50aWF0ZSBpdCB0byB1
bnRpbCB3ZSBhY3R1YWxseSBzZWUgdGhlCi0gICAgLy8gdHlwZSBvZiB4IGhlcmUuCi0gICAgLy8K
LSAgICAvLyBXZSB3cml0ZSBTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgVCY+KG1hdGNoZXJfKSBpbnN0
ZWFkIG9mCi0gICAgLy8gTWF0Y2hlcjxjb25zdCBUJj4obWF0Y2hlcl8pLCBhcyB0aGUgbGF0dGVy
IHdvbid0IGNvbXBpbGUgd2hlbgotICAgIC8vIG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNoZXI8VD4g
KGUuZy4gQW48aW50PigpKS4KLSAgICAvLyBXZSBkb24ndCB3cml0ZSBNYXRjaGVyQ2FzdDxjb25z
dCBUJj4gZWl0aGVyLCBhcyB0aGF0IGFsbG93cwotICAgIC8vIHBvdGVudGlhbGx5IHVuc2FmZSBk
b3duY2FzdGluZyBvZiB0aGUgbWF0Y2hlciBhcmd1bWVudC4KLSAgICBjb25zdCBNYXRjaGVyPGNv
bnN0IFQmPiBtYXRjaGVyID0gU2FmZU1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVyXyk7Ci0g
ICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgICBpZiAoTWF0Y2hQcmlu
dEFuZEV4cGxhaW4oeCwgbWF0Y2hlciwgJmxpc3RlbmVyKSkKLSAgICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7Ci0KLSAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgIHNzIDw8ICJW
YWx1ZSBvZjogIiA8PCB2YWx1ZV90ZXh0IDw8ICJcbiIKLSAgICAgICA8PCAiRXhwZWN0ZWQ6ICI7
Ci0gICAgbWF0Y2hlci5EZXNjcmliZVRvKCZzcyk7Ci0gICAgc3MgPDwgIlxuICBBY3R1YWw6ICIg
PDwgbGlzdGVuZXIuc3RyKCk7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBzcy5z
dHIoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBtYXRjaGVyXzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKFByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyKTsKLX07Ci0KLS8v
IEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIGEgbWF0Y2hlciB0byBhIHByZWRpY2F0
ZS1mb3JtYXR0ZXIKLS8vIHdpdGhvdXQgdGhlIHVzZXIgbmVlZGluZyB0byBleHBsaWNpdGx5IHdy
aXRlIHRoZSB0eXBlLiAgVGhpcyBpcwotLy8gdXNlZCBmb3IgaW1wbGVtZW50aW5nIEFTU0VSVF9U
SEFUKCkgYW5kIEVYUEVDVF9USEFUKCkuCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICdtYXRj
aGVyJyBpcyByZWNlaXZlZCBieS12YWx1ZSB0byBmb3JjZSBkZWNheWluZy4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBNPgotaW5saW5lIFByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyPE0+Ci1NYWtl
UHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIoTSBtYXRjaGVyKSB7Ci0gIHJldHVybiBQcmVk
aWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlcjxNPihpbnRlcm5hbDo6bW92ZShtYXRjaGVyKSk7Ci19
Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIGZsb2F0aW5nIHBvaW50IGVxdWFsaXR5
IG1hdGNoZXIsIHdoaWNoIG1hdGNoZXMKLS8vIHR3byBmbG9hdCB2YWx1ZXMgdXNpbmcgVUxQLWJh
c2VkIGFwcHJveGltYXRpb24gb3IsIG9wdGlvbmFsbHksIGEKLS8vIHVzZXItc3BlY2lmaWVkIGVw
c2lsb24uICBUaGUgdGVtcGxhdGUgaXMgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkIHdpdGgKLS8v
IEZsb2F0VHlwZSBiZWluZyBlaXRoZXIgZmxvYXQgb3IgZG91YmxlLgotdGVtcGxhdGUgPHR5cGVu
YW1lIEZsb2F0VHlwZT4KLWNsYXNzIEZsb2F0aW5nRXFNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC8v
IENvbnN0cnVjdG9yIGZvciBGbG9hdGluZ0VxTWF0Y2hlci4KLSAgLy8gVGhlIG1hdGNoZXIncyBp
bnB1dCB3aWxsIGJlIGNvbXBhcmVkIHdpdGggZXhwZWN0ZWQuICBUaGUgbWF0Y2hlciB0cmVhdHMg
dHdvCi0gIC8vIE5BTnMgYXMgZXF1YWwgaWYgbmFuX2VxX25hbiBpcyB0cnVlLiAgT3RoZXJ3aXNl
LCB1bmRlciBJRUVFIHN0YW5kYXJkcywKLSAgLy8gZXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2Vl
biBOQU5zIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gIFdlIHNwZWNpZnkgYQotICAvLyBuZWdh
dGl2ZSBtYXhfYWJzX2Vycm9yXyB0ZXJtIHRvIGluZGljYXRlIHRoYXQgVUxQLWJhc2VkIGFwcHJv
eGltYXRpb24gd2lsbAotICAvLyBiZSB1c2VkIGZvciBjb21wYXJpc29uLgotICBGbG9hdGluZ0Vx
TWF0Y2hlcihGbG9hdFR5cGUgZXhwZWN0ZWQsIGJvb2wgbmFuX2VxX25hbikgOgotICAgIGV4cGVj
dGVkXyhleHBlY3RlZCksIG5hbl9lcV9uYW5fKG5hbl9lcV9uYW4pLCBtYXhfYWJzX2Vycm9yXygt
MSkgewotICB9Ci0KLSAgLy8gQ29uc3RydWN0b3IgdGhhdCBzdXBwb3J0cyBhIHVzZXItc3BlY2lm
aWVkIG1heF9hYnNfZXJyb3IgdGhhdCB3aWxsIGJlIHVzZWQKLSAgLy8gZm9yIGNvbXBhcmlzb24g
aW5zdGVhZCBvZiBVTFAtYmFzZWQgYXBwcm94aW1hdGlvbi4gIFRoZSBtYXggYWJzb2x1dGUKLSAg
Ly8gc2hvdWxkIGJlIG5vbi1uZWdhdGl2ZS4KLSAgRmxvYXRpbmdFcU1hdGNoZXIoRmxvYXRUeXBl
IGV4cGVjdGVkLCBib29sIG5hbl9lcV9uYW4sCi0gICAgICAgICAgICAgICAgICAgIEZsb2F0VHlw
ZSBtYXhfYWJzX2Vycm9yKQotICAgICAgOiBleHBlY3RlZF8oZXhwZWN0ZWQpLAotICAgICAgICBu
YW5fZXFfbmFuXyhuYW5fZXFfbmFuKSwKLSAgICAgICAgbWF4X2Fic19lcnJvcl8obWF4X2Fic19l
cnJvcikgewotICAgIEdURVNUX0NIRUNLXyhtYXhfYWJzX2Vycm9yID49IDApCi0gICAgICAgIDw8
ICIsIHdoZXJlIG1heF9hYnNfZXJyb3IgaXMiIDw8IG1heF9hYnNfZXJyb3I7Ci0gIH0KLQotICAv
LyBJbXBsZW1lbnRzIGZsb2F0aW5nIHBvaW50IGVxdWFsaXR5IG1hdGNoZXIgYXMgYSBNYXRjaGVy
PFQ+LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBNYXRj
aGVySW50ZXJmYWNlPFQ+IHsKLSAgIHB1YmxpYzoKLSAgICBJbXBsKEZsb2F0VHlwZSBleHBlY3Rl
ZCwgYm9vbCBuYW5fZXFfbmFuLCBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcikKLSAgICAgICAgOiBl
eHBlY3RlZF8oZXhwZWN0ZWQpLAotICAgICAgICAgIG5hbl9lcV9uYW5fKG5hbl9lcV9uYW4pLAot
ICAgICAgICAgIG1heF9hYnNfZXJyb3JfKG1heF9hYnNfZXJyb3IpIHt9Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAgY29u
c3QgRmxvYXRpbmdQb2ludDxGbG9hdFR5cGU+IGFjdHVhbCh2YWx1ZSksIGV4cGVjdGVkKGV4cGVj
dGVkXyk7Ci0KLSAgICAgIC8vIENvbXBhcmVzIE5hTnMgZmlyc3QsIGlmIG5hbl9lcV9uYW5fIGlz
IHRydWUuCi0gICAgICBpZiAoYWN0dWFsLmlzX25hbigpIHx8IGV4cGVjdGVkLmlzX25hbigpKSB7
Ci0gICAgICAgIGlmIChhY3R1YWwuaXNfbmFuKCkgJiYgZXhwZWN0ZWQuaXNfbmFuKCkpIHsKLSAg
ICAgICAgICByZXR1cm4gbmFuX2VxX25hbl87Ci0gICAgICAgIH0KLSAgICAgICAgLy8gT25lIGlz
IG5hbjsgdGhlIG90aGVyIGlzIG5vdCBuYW4uCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
IH0KLSAgICAgIGlmIChIYXNNYXhBYnNFcnJvcigpKSB7Ci0gICAgICAgIC8vIFdlIHBlcmZvcm0g
YW4gZXF1YWxpdHkgY2hlY2sgc28gdGhhdCBpbmYgd2lsbCBtYXRjaCBpbmYsIHJlZ2FyZGxlc3MK
LSAgICAgICAgLy8gb2YgZXJyb3IgYm91bmRzLiAgSWYgdGhlIHJlc3VsdCBvZiB2YWx1ZSAtIGV4
cGVjdGVkXyB3b3VsZCByZXN1bHQgaW4KLSAgICAgICAgLy8gb3ZlcmZsb3cgb3IgaWYgZWl0aGVy
IHZhbHVlIGlzIGluZiwgdGhlIGRlZmF1bHQgcmVzdWx0IGlzIGluZmluaXR5LAotICAgICAgICAv
LyB3aGljaCBzaG91bGQgb25seSBtYXRjaCBpZiBtYXhfYWJzX2Vycm9yXyBpcyBhbHNvIGluZmlu
aXR5LgotICAgICAgICBpZiAodmFsdWUgPT0gZXhwZWN0ZWRfKSB7Ci0gICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBGbG9hdFR5cGUgZGlmZiA9IHZhbHVl
IC0gZXhwZWN0ZWRfOwotICAgICAgICBpZiAoZmFicyhkaWZmKSA8PSBtYXhfYWJzX2Vycm9yXykg
ewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxpc3Rl
bmVyLT5Jc0ludGVyZXN0ZWQoKSkgewotICAgICAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaXMg
IiA8PCBkaWZmIDw8ICIgZnJvbSAiIDw8IGV4cGVjdGVkXzsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gYWN0dWFsLkFsbW9z
dEVxdWFscyhleHBlY3RlZCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIERl
c2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAvLyBvcy0+cHJlY2lz
aW9uKCkgcmV0dXJucyB0aGUgcHJldmlvdXNseSBzZXQgcHJlY2lzaW9uLCB3aGljaCB3ZQotICAg
ICAgLy8gc3RvcmUgdG8gcmVzdG9yZSB0aGUgb3N0cmVhbSB0byBpdHMgb3JpZ2luYWwgY29uZmln
dXJhdGlvbgotICAgICAgLy8gYWZ0ZXIgb3V0cHV0dGluZy4KLSAgICAgIGNvbnN0IDo6c3RkOjpz
dHJlYW1zaXplIG9sZF9wcmVjaXNpb24gPSBvcy0+cHJlY2lzaW9uKAotICAgICAgICAgIDo6c3Rk
OjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjpkaWdpdHMxMCArIDIpOwotICAgICAgaWYgKEZs
b2F0aW5nUG9pbnQ8RmxvYXRUeXBlPihleHBlY3RlZF8pLmlzX25hbigpKSB7Ci0gICAgICAgIGlm
IChuYW5fZXFfbmFuXykgewotICAgICAgICAgICpvcyA8PCAiaXMgTmFOIjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAqb3MgPDwgIm5ldmVyIG1hdGNoZXMiOwotICAgICAgICB9Ci0gICAg
ICB9IGVsc2UgewotICAgICAgICAqb3MgPDwgImlzIGFwcHJveGltYXRlbHkgIiA8PCBleHBlY3Rl
ZF87Ci0gICAgICAgIGlmIChIYXNNYXhBYnNFcnJvcigpKSB7Ci0gICAgICAgICAgKm9zIDw8ICIg
KGFic29sdXRlIGVycm9yIDw9ICIgPDwgbWF4X2Fic19lcnJvcl8gPDwgIikiOwotICAgICAgICB9
Ci0gICAgICB9Ci0gICAgICBvcy0+cHJlY2lzaW9uKG9sZF9wcmVjaXNpb24pOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7Ci0gICAgICAvLyBBcyBiZWZvcmUsIGdldCBvcmlnaW5hbCBwcmVjaXNpb24uCi0gICAg
ICBjb25zdCA6OnN0ZDo6c3RyZWFtc2l6ZSBvbGRfcHJlY2lzaW9uID0gb3MtPnByZWNpc2lvbigK
LSAgICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6ZGlnaXRzMTAgKyAy
KTsKLSAgICAgIGlmIChGbG9hdGluZ1BvaW50PEZsb2F0VHlwZT4oZXhwZWN0ZWRfKS5pc19uYW4o
KSkgewotICAgICAgICBpZiAobmFuX2VxX25hbl8pIHsKLSAgICAgICAgICAqb3MgPDwgImlzbid0
IE5hTiI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgKm9zIDw8ICJpcyBhbnl0aGluZyI7
Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICpvcyA8PCAiaXNuJ3QgYXBwcm94
aW1hdGVseSAiIDw8IGV4cGVjdGVkXzsKLSAgICAgICAgaWYgKEhhc01heEFic0Vycm9yKCkpIHsK
LSAgICAgICAgICAqb3MgPDwgIiAoYWJzb2x1dGUgZXJyb3IgPiAiIDw8IG1heF9hYnNfZXJyb3Jf
IDw8ICIpIjsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gUmVzdG9yZSBvcmlnaW5hbCBw
cmVjaXNpb24uCi0gICAgICBvcy0+cHJlY2lzaW9uKG9sZF9wcmVjaXNpb24pOwotICAgIH0KLQot
ICAgcHJpdmF0ZToKLSAgICBib29sIEhhc01heEFic0Vycm9yKCkgY29uc3QgewotICAgICAgcmV0
dXJuIG1heF9hYnNfZXJyb3JfID49IDA7Ci0gICAgfQotCi0gICAgY29uc3QgRmxvYXRUeXBlIGV4
cGVjdGVkXzsKLSAgICBjb25zdCBib29sIG5hbl9lcV9uYW5fOwotICAgIC8vIG1heF9hYnNfZXJy
b3Igd2lsbCBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29uIHdoZW4gPj0gMC4KLSAgICBjb25z
dCBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KEltcGwpOwotICB9OwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgMyB0eXBlIGNvbnZlcnNpb24gb3Bl
cmF0b3JzIGFsbG93IEZsb2F0RXEoZXhwZWN0ZWQpIGFuZAotICAvLyBOYW5TZW5zaXRpdmVGbG9h
dEVxKGV4cGVjdGVkKSB0byBiZSB1c2VkIGFzIGEgTWF0Y2hlcjxmbG9hdD4sIGEKLSAgLy8gTWF0
Y2hlcjxjb25zdCBmbG9hdCY+LCBvciBhIE1hdGNoZXI8ZmxvYXQmPiwgYnV0IG5vdGhpbmcgZWxz
ZS4KLSAgLy8gKFdoaWxlIEdvb2dsZSdzIEMrKyBjb2Rpbmcgc3R5bGUgZG9lc24ndCBhbGxvdyBh
cmd1bWVudHMgcGFzc2VkCi0gIC8vIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdlIG1heSBzZWUg
dGhlbSBpbiBjb2RlIG5vdCBjb25mb3JtaW5nIHRvCi0gIC8vIHRoZSBzdHlsZS4gIFRoZXJlZm9y
ZSBHb29nbGUgTW9jayBuZWVkcyB0byBzdXBwb3J0IHRoZW0uKQotICBvcGVyYXRvciBNYXRjaGVy
PEZsb2F0VHlwZT4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKAotICAgICAgICBu
ZXcgSW1wbDxGbG9hdFR5cGU+KGV4cGVjdGVkXywgbmFuX2VxX25hbl8sIG1heF9hYnNfZXJyb3Jf
KSk7Ci0gIH0KLQotICBvcGVyYXRvciBNYXRjaGVyPGNvbnN0IEZsb2F0VHlwZSY+KCkgY29uc3Qg
ewotICAgIHJldHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IEltcGw8Y29uc3QgRmxvYXRU
eXBlJj4oZXhwZWN0ZWRfLCBuYW5fZXFfbmFuXywgbWF4X2Fic19lcnJvcl8pKTsKLSAgfQotCi0g
IG9wZXJhdG9yIE1hdGNoZXI8RmxvYXRUeXBlJj4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VN
YXRjaGVyKAotICAgICAgICBuZXcgSW1wbDxGbG9hdFR5cGUmPihleHBlY3RlZF8sIG5hbl9lcV9u
YW5fLCBtYXhfYWJzX2Vycm9yXykpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBGbG9hdFR5
cGUgZXhwZWN0ZWRfOwotICBjb25zdCBib29sIG5hbl9lcV9uYW5fOwotICAvLyBtYXhfYWJzX2Vy
cm9yIHdpbGwgYmUgdXNlZCBmb3IgdmFsdWUgY29tcGFyaXNvbiB3aGVuID49IDAuCi0gIGNvbnN0
IEZsb2F0VHlwZSBtYXhfYWJzX2Vycm9yXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEZs
b2F0aW5nRXFNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFBvaW50ZWUobSkgbWF0
Y2hlciBmb3IgbWF0Y2hpbmcgYSBwb2ludGVyIHdob3NlCi0vLyBwb2ludGVlIG1hdGNoZXMgbWF0
Y2hlciBtLiAgVGhlIHBvaW50ZXIgY2FuIGJlIGVpdGhlciByYXcgb3Igc21hcnQuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotY2xhc3MgUG9pbnRlZU1hdGNoZXIgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgUG9pbnRlZU1hdGNoZXIoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVy
KSA6IG1hdGNoZXJfKG1hdGNoZXIpIHt9Ci0KLSAgLy8gVGhpcyB0eXBlIGNvbnZlcnNpb24gb3Bl
cmF0b3IgdGVtcGxhdGUgYWxsb3dzIFBvaW50ZWUobSkgdG8gYmUKLSAgLy8gdXNlZCBhcyBhIG1h
dGNoZXIgZm9yIGFueSBwb2ludGVyIHR5cGUgd2hvc2UgcG9pbnRlZSB0eXBlIGlzCi0gIC8vIGNv
bXBhdGlibGUgd2l0aCB0aGUgaW5uZXIgbWF0Y2hlciwgd2hlcmUgdHlwZSBQb2ludGVyIGNhbiBi
ZQotICAvLyBlaXRoZXIgYSByYXcgcG9pbnRlciBvciBhIHNtYXJ0IHBvaW50ZXIuCi0gIC8vCi0g
IC8vIFRoZSByZWFzb24gd2UgZG8gdGhpcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24KLSAgLy8gTWFr
ZVBvbHltb3JwaGljTWF0Y2hlcigpIGlzIHRoYXQgdGhlIGxhdHRlciBpcyBub3QgZmxleGlibGUK
LSAgLy8gZW5vdWdoIGZvciBpbXBsZW1lbnRpbmcgdGhlIERlc2NyaWJlVG8oKSBtZXRob2Qgb2Yg
UG9pbnRlZSgpLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4KLSAgb3BlcmF0b3IgTWF0
Y2hlcjxQb2ludGVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8
UG9pbnRlcj4obWF0Y2hlcl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIG1vbm9tb3Jw
aGljIGltcGxlbWVudGF0aW9uIHRoYXQgd29ya3MgZm9yIGEgcGFydGljdWxhciBwb2ludGVyIHR5
cGUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBQb2ludGVyPgotICBjbGFzcyBJbXBsIDogcHVibGlj
IE1hdGNoZXJJbnRlcmZhY2U8UG9pbnRlcj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgUG9pbnRlZU9mPEdURVNUX1JFTU9WRV9DT05TVF8oICAvLyBOT0xJTlQKLSAgICAgICAg
R1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oUG9pbnRlcikpPjo6dHlwZSBQb2ludGVlOwotCi0gICAg
ZXhwbGljaXQgSW1wbChjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpCi0gICAgICAgIDogbWF0
Y2hlcl8oTWF0Y2hlckNhc3Q8Y29uc3QgUG9pbnRlZSY+KG1hdGNoZXIpKSB7fQotCi0gICAgdmly
dHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAq
b3MgPDwgInBvaW50cyB0byBhIHZhbHVlIHRoYXQgIjsKLSAgICAgIG1hdGNoZXJfLkRlc2NyaWJl
VG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImRvZXMgbm90IHBvaW50IHRv
IGEgdmFsdWUgdGhhdCAiOwotICAgICAgbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihQb2ludGVyIHBvaW50ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgewotICAgICAgaWYgKEdldFJhd1BvaW50ZXIocG9pbnRlcikgPT0gTlVMTCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIHBvaW50cyB0
byAiOwotICAgICAgcmV0dXJuIE1hdGNoUHJpbnRBbmRFeHBsYWluKCpwb2ludGVyLCBtYXRjaGVy
XywgbGlzdGVuZXIpOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBNYXRjaGVyPGNv
bnN0IFBvaW50ZWUmPiBtYXRjaGVyXzsKLQotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1w
bCk7Ci0gIH07Ci0KLSAgY29uc3QgSW5uZXJNYXRjaGVyIG1hdGNoZXJfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oUG9pbnRlZU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUg
V2hlbkR5bmFtaWNDYXN0VG88VD4obSkgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBwb2ludGVyIG9y
Ci0vLyByZWZlcmVuY2UgdGhhdCBtYXRjaGVzIGlubmVyX21hdGNoZXIgd2hlbiBkeW5hbWljX2Nh
c3Q8VD4gaXMgYXBwbGllZC4KLS8vIFRoZSByZXN1bHQgb2YgZHluYW1pY19jYXN0PFRvPiBpcyBm
b3J3YXJkZWQgdG8gdGhlIGlubmVyIG1hdGNoZXIuCi0vLyBJZiBUbyBpcyBhIHBvaW50ZXIgYW5k
IHRoZSBjYXN0IGZhaWxzLCB0aGUgaW5uZXIgbWF0Y2hlciB3aWxsIHJlY2VpdmUgTlVMTC4KLS8v
IElmIFRvIGlzIGEgcmVmZXJlbmNlIGFuZCB0aGUgY2FzdCBmYWlscywgdGhpcyBtYXRjaGVyIHJl
dHVybnMgZmFsc2UKLS8vIGltbWVkaWF0ZWx5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvPgotY2xh
c3MgV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyQmFzZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBX
aGVuRHluYW1pY0Nhc3RUb01hdGNoZXJCYXNlKGNvbnN0IE1hdGNoZXI8VG8+JiBtYXRjaGVyKQot
ICAgICAgOiBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBHZXRDYXN0VHlwZURlc2NyaXB0aW9uKG9zKTsKLSAg
ICBtYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgIEdldENhc3RUeXBlRGVzY3JpcHRp
b24ob3MpOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gIH0KLQotIHBy
b3RlY3RlZDoKLSAgY29uc3QgTWF0Y2hlcjxUbz4gbWF0Y2hlcl87Ci0KLSAgc3RhdGljIHN0ZDo6
c3RyaW5nIEdldFRvTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQotICAgIHJldHVybiBHZXRU
eXBlTmFtZTxUbz4oKTsKLSNlbHNlICAvLyBHVEVTVF9IQVNfUlRUSQotICAgIHJldHVybiAidGhl
IHRhcmdldCB0eXBlIjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKLSAgfQotCi0gcHJpdmF0
ZToKLSAgc3RhdGljIHZvaWQgR2V0Q2FzdFR5cGVEZXNjcmlwdGlvbig6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgICAqb3MgPDwgIndoZW4gZHluYW1pY19jYXN0IHRvICIgPDwgR2V0VG9OYW1lKCkg
PDwgIiwgIjsKLSAgfQotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oV2hlbkR5bmFtaWNDYXN0
VG9NYXRjaGVyQmFzZSk7Ci19OwotCi0vLyBQcmltYXJ5IHRlbXBsYXRlLgotLy8gVG8gaXMgYSBw
b2ludGVyLiBDYXN0IGFuZCBmb3J3YXJkIHRoZSByZXN1bHQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VG8+Ci1jbGFzcyBXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXIgOiBwdWJsaWMgV2hlbkR5bmFtaWND
YXN0VG9NYXRjaGVyQmFzZTxUbz4gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgV2hlbkR5bmFtaWND
YXN0VG9NYXRjaGVyKGNvbnN0IE1hdGNoZXI8VG8+JiBtYXRjaGVyKQotICAgICAgOiBXaGVuRHlu
YW1pY0Nhc3RUb01hdGNoZXJCYXNlPFRvPihtYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGcm9tPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihGcm9tIGZyb20sIE1hdGNoUmVzdWx0
TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gVE9ETyhzYmVuemEpOiBBZGQgbW9y
ZSBkZXRhaWwgb24gZmFpbHVyZXMuIGllIGRpZCB0aGUgZHluX2Nhc3QgZmFpbD8KLSAgICBUbyB0
byA9IGR5bmFtaWNfY2FzdDxUbz4oZnJvbSk7Ci0gICAgcmV0dXJuIE1hdGNoUHJpbnRBbmRFeHBs
YWluKHRvLCB0aGlzLT5tYXRjaGVyXywgbGlzdGVuZXIpOwotICB9Ci19OwotCi0vLyBTcGVjaWFs
aXplIGZvciByZWZlcmVuY2VzLgotLy8gSW4gdGhpcyBjYXNlIHdlIHJldHVybiBmYWxzZSBpZiB0
aGUgZHluYW1pY19jYXN0IGZhaWxzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvPgotY2xhc3MgV2hl
bkR5bmFtaWNDYXN0VG9NYXRjaGVyPFRvJj4gOiBwdWJsaWMgV2hlbkR5bmFtaWNDYXN0VG9NYXRj
aGVyQmFzZTxUbyY+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdoZW5EeW5hbWljQ2FzdFRvTWF0
Y2hlcihjb25zdCBNYXRjaGVyPFRvJj4mIG1hdGNoZXIpCi0gICAgICA6IFdoZW5EeW5hbWljQ2Fz
dFRvTWF0Y2hlckJhc2U8VG8mPihtYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBG
cm9tPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihGcm9tJiBmcm9tLCBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFdlIGRvbid0IHdhbnQgYW4gc3RkOjpiYWRf
Y2FzdCBoZXJlLCBzbyBkbyB0aGUgY2FzdCB3aXRoIHBvaW50ZXJzLgotICAgIFRvKiB0byA9IGR5
bmFtaWNfY2FzdDxUbyo+KCZmcm9tKTsKLSAgICBpZiAodG8gPT0gTlVMTCkgewotICAgICAgKmxp
c3RlbmVyIDw8ICJ3aGljaCBjYW5ub3QgYmUgZHluYW1pY19jYXN0IHRvICIgPDwgdGhpcy0+R2V0
VG9OYW1lKCk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBNYXRjaFBy
aW50QW5kRXhwbGFpbigqdG8sIHRoaXMtPm1hdGNoZXJfLCBsaXN0ZW5lcik7Ci0gIH0KLX07Ci0K
LS8vIEltcGxlbWVudHMgdGhlIEZpZWxkKCkgbWF0Y2hlciBmb3IgbWF0Y2hpbmcgYSBmaWVsZCAo
aS5lLiBtZW1iZXIKLS8vIHZhcmlhYmxlKSBvZiBhbiBvYmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3MsIHR5cGVuYW1lIEZpZWxkVHlwZT4KLWNsYXNzIEZpZWxkTWF0Y2hlciB7Ci0gcHVi
bGljOgotICBGaWVsZE1hdGNoZXIoRmllbGRUeXBlIENsYXNzOjoqZmllbGQsCi0gICAgICAgICAg
ICAgICBjb25zdCBNYXRjaGVyPGNvbnN0IEZpZWxkVHlwZSY+JiBtYXRjaGVyKQotICAgICAgOiBm
aWVsZF8oZmllbGQpLCBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFuIG9iamVjdCB3aG9z
ZSBnaXZlbiBmaWVsZCAiOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAg
dm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAg
Km9zIDw8ICJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gZmllbGQgIjsKLSAgICBtYXRjaGVyXy5E
ZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmIHZhbHVlLCBNYXRjaFJlc3VsdExpc3RlbmVy
KiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW5JbXBsKAotICAg
ICAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjoKLSAgICAgICAgICAgIGlzX3BvaW50
ZXI8R1RFU1RfUkVNT1ZFX0NPTlNUXyhUKT46OnR5cGUoKSwKLSAgICAgICAgdmFsdWUsIGxpc3Rl
bmVyKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IG9mIE1hdGNo
QW5kRXhwbGFpbkltcGwoKSBpcyBuZWVkZWQgdG8gaGVscAotICAvLyBTeW1iaWFuJ3MgQysrIGNv
bXBpbGVyIGNob29zZSB3aGljaCBvdmVybG9hZCB0byB1c2UuICBJdHMgdHlwZSBpcwotICAvLyB0
cnVlX3R5cGUgaWZmIHRoZSBGaWVsZCgpIG1hdGNoZXIgaXMgdXNlZCB0byBtYXRjaCBhIHBvaW50
ZXIuCi0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluSW1wbChmYWxzZV90eXBlIC8qIGlzX25vdF9wb2lu
dGVyICovLCBjb25zdCBDbGFzcyYgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0
Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAqbGlzdGVuZXIgPDwgIndo
b3NlIGdpdmVuIGZpZWxkIGlzICI7Ci0gICAgcmV0dXJuIE1hdGNoUHJpbnRBbmRFeHBsYWluKG9i
ai4qZmllbGRfLCBtYXRjaGVyXywgbGlzdGVuZXIpOwotICB9Ci0KLSAgYm9vbCBNYXRjaEFuZEV4
cGxhaW5JbXBsKHRydWVfdHlwZSAvKiBpc19wb2ludGVyICovLCBjb25zdCBDbGFzcyogcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICps
aXN0ZW5lciA8PCAid2hpY2ggcG9pbnRzIHRvIGFuIG9iamVjdCAiOwotICAgIC8vIFNpbmNlICpw
IGhhcyBhIGZpZWxkLCBpdCBtdXN0IGJlIGEgY2xhc3Mvc3RydWN0L3VuaW9uIHR5cGUgYW5kCi0g
ICAgLy8gdGh1cyBjYW5ub3QgYmUgYSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlIHBhc3MgZmFsc2Vf
dHlwZSgpIGFzCi0gICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LgotICAgIHJldHVybiBNYXRjaEFu
ZEV4cGxhaW5JbXBsKGZhbHNlX3R5cGUoKSwgKnAsIGxpc3RlbmVyKTsKLSAgfQotCi0gIGNvbnN0
IEZpZWxkVHlwZSBDbGFzczo6KmZpZWxkXzsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBGaWVsZFR5
cGUmPiBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEZpZWxkTWF0Y2hlcik7
Ci19OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBQcm9wZXJ0eSgpIG1hdGNoZXIgZm9yIG1hdGNoaW5n
IGEgcHJvcGVydHkKLS8vIChpLmUuIHJldHVybiB2YWx1ZSBvZiBhIGdldHRlciBtZXRob2QpIG9m
IGFuIG9iamVjdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzcywgdHlwZW5hbWUgUHJvcGVydHlU
eXBlPgotY2xhc3MgUHJvcGVydHlNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBwcm9wZXJ0
eSBtYXkgaGF2ZSBhIHJlZmVyZW5jZSB0eXBlLCBzbyAnY29uc3QgUHJvcGVydHlUeXBlJicKLSAg
Ly8gbWF5IGNhdXNlIGRvdWJsZSByZWZlcmVuY2VzIGFuZCBmYWlsIHRvIGNvbXBpbGUuICBUaGF0
J3Mgd2h5IHdlCi0gIC8vIG5lZWQgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNULCB3aGljaCB3b3Jr
cyByZWdhcmRsZXNzIG9mCi0gIC8vIFByb3BlcnR5VHlwZSBiZWluZyBhIHJlZmVyZW5jZSBvciBu
b3QuCi0gIHR5cGVkZWYgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhQcm9wZXJ0eVR5cGUpIFJl
ZlRvQ29uc3RQcm9wZXJ0eTsKLQotICBQcm9wZXJ0eU1hdGNoZXIoUHJvcGVydHlUeXBlIChDbGFz
czo6KnByb3BlcnR5KSgpIGNvbnN0LAotICAgICAgICAgICAgICAgICAgY29uc3QgTWF0Y2hlcjxS
ZWZUb0NvbnN0UHJvcGVydHk+JiBtYXRjaGVyKQotICAgICAgOiBwcm9wZXJ0eV8ocHJvcGVydHkp
LCBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9w
ZXJ0eSAiOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAgdm9pZCBEZXNj
cmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJp
cyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgIjsKLSAgICBtYXRjaGVyXy5EZXNjcmli
ZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGJvb2wg
TWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmdmFsdWUsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoCi0gICAgICAgIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OgotICAgICAgICAgICAgaXNfcG9pbnRlcjxHVEVT
VF9SRU1PVkVfQ09OU1RfKFQpPjo6dHlwZSgpLAotICAgICAgICB2YWx1ZSwgbGlzdGVuZXIpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgb2YgTWF0Y2hBbmRFeHBs
YWluSW1wbCgpIGlzIG5lZWRlZCB0byBoZWxwCi0gIC8vIFN5bWJpYW4ncyBDKysgY29tcGlsZXIg
Y2hvb3NlIHdoaWNoIG92ZXJsb2FkIHRvIHVzZS4gIEl0cyB0eXBlIGlzCi0gIC8vIHRydWVfdHlw
ZSBpZmYgdGhlIFByb3BlcnR5KCkgbWF0Y2hlciBpcyB1c2VkIHRvIG1hdGNoIGEgcG9pbnRlci4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW5JbXBsKGZhbHNlX3R5cGUgLyogaXNfbm90X3BvaW50ZXIg
Ki8sIGNvbnN0IENsYXNzJiBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJl
c3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICpsaXN0ZW5lciA8PCAid2hvc2Ug
Z2l2ZW4gcHJvcGVydHkgaXMgIjsKLSAgICAvLyBDYW5ub3QgcGFzcyB0aGUgcmV0dXJuIHZhbHVl
IChmb3IgZXhhbXBsZSwgaW50KSB0byBNYXRjaFByaW50QW5kRXhwbGFpbiwKLSAgICAvLyB3aGlj
aCB0YWtlcyBhIG5vbi1jb25zdCByZWZlcmVuY2UgYXMgYXJndW1lbnQuCi0jaWYgZGVmaW5lZChf
UFJFRkFTVF8gKSAmJiBfTVNDX1ZFUiA9PSAxODAwCi0gICAgLy8gV29ya2Fyb3VuZCBidWcgaW4g
VkMrKyAyMDEzJ3MgL2FuYWx5emUgcGFyc2VyLgotICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNy
b3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9kZXRhaWxzLzExMDYzNjMvaW50ZXJuYWwt
Y29tcGlsZXItZXJyb3Itd2l0aC1hbmFseXplLWR1ZS10by1mYWlsdXJlLXRvLWluZmVyLW1vdmUK
LSAgICBwb3NpeDo6QWJvcnQoKTsgIC8vIFRvIG1ha2Ugc3VyZSBpdCBpcyBuZXZlciBydW4uCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKLSAgICBSZWZUb0NvbnN0UHJvcGVydHkgcmVzdWx0ID0g
KG9iai4qcHJvcGVydHlfKSgpOwotICAgIHJldHVybiBNYXRjaFByaW50QW5kRXhwbGFpbihyZXN1
bHQsIG1hdGNoZXJfLCBsaXN0ZW5lcik7Ci0jZW5kaWYKLSAgfQotCi0gIGJvb2wgTWF0Y2hBbmRF
eHBsYWluSW1wbCh0cnVlX3R5cGUgLyogaXNfcG9pbnRlciAqLywgY29uc3QgQ2xhc3MqIHAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikg
Y29uc3QgewotICAgIGlmIChwID09IE5VTEwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAq
bGlzdGVuZXIgPDwgIndoaWNoIHBvaW50cyB0byBhbiBvYmplY3QgIjsKLSAgICAvLyBTaW5jZSAq
cCBoYXMgYSBwcm9wZXJ0eSBtZXRob2QsIGl0IG11c3QgYmUgYSBjbGFzcy9zdHJ1Y3QvdW5pb24K
LSAgICAvLyB0eXBlIGFuZCB0aHVzIGNhbm5vdCBiZSBhIHBvaW50ZXIuICBUaGVyZWZvcmUgd2Ug
cGFzcwotICAgIC8vIGZhbHNlX3R5cGUoKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuCi0gICAgcmV0
dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoZmFsc2VfdHlwZSgpLCAqcCwgbGlzdGVuZXIpOwotICB9
Ci0KLSAgUHJvcGVydHlUeXBlIChDbGFzczo6KnByb3BlcnR5XykoKSBjb25zdDsKLSAgY29uc3Qg
TWF0Y2hlcjxSZWZUb0NvbnN0UHJvcGVydHk+IG1hdGNoZXJfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oUHJvcGVydHlNYXRjaGVyKTsKLX07Ci0KLS8vIFR5cGUgdHJhaXRzIHNwZWNpZnlp
bmcgdmFyaW91cyBmZWF0dXJlcyBvZiBkaWZmZXJlbnQgZnVuY3RvcnMgZm9yIFJlc3VsdE9mLgot
Ly8gVGhlIGRlZmF1bHQgdGVtcGxhdGUgc3BlY2lmaWVzIGZlYXR1cmVzIGZvciBmdW5jdG9yIG9i
amVjdHMuCi0vLyBGdW5jdG9yIGNsYXNzZXMgaGF2ZSB0byB0eXBlZGVmIGFyZ3VtZW50X3R5cGUg
YW5kIHJlc3VsdF90eXBlCi0vLyB0byBiZSBjb21wYXRpYmxlIHdpdGggUmVzdWx0T2YuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBDYWxsYWJsZVRyYWl0cyB7Ci0gIHR5cGVk
ZWYgdHlwZW5hbWUgRnVuY3Rvcjo6cmVzdWx0X3R5cGUgUmVzdWx0VHlwZTsKLSAgdHlwZWRlZiBG
dW5jdG9yIFN0b3JhZ2VUeXBlOwotCi0gIHN0YXRpYyB2b2lkIENoZWNrSXNWYWxpZChGdW5jdG9y
IC8qIGZ1bmN0b3IgKi8pIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBzdGF0aWMgUmVz
dWx0VHlwZSBJbnZva2UoRnVuY3RvciBmLCBUIGFyZykgeyByZXR1cm4gZihhcmcpOyB9Ci19Owot
Ci0vLyBTcGVjaWFsaXphdGlvbiBmb3IgZnVuY3Rpb24gcG9pbnRlcnMuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQXJnVHlwZSwgdHlwZW5hbWUgUmVzVHlwZT4KLXN0cnVjdCBDYWxsYWJsZVRyYWl0czxS
ZXNUeXBlKCopKEFyZ1R5cGUpPiB7Ci0gIHR5cGVkZWYgUmVzVHlwZSBSZXN1bHRUeXBlOwotICB0
eXBlZGVmIFJlc1R5cGUoKlN0b3JhZ2VUeXBlKShBcmdUeXBlKTsKLQotICBzdGF0aWMgdm9pZCBD
aGVja0lzVmFsaWQoUmVzVHlwZSgqZikoQXJnVHlwZSkpIHsKLSAgICBHVEVTVF9DSEVDS18oZiAh
PSBOVUxMKQotICAgICAgICA8PCAiTlVMTCBmdW5jdGlvbiBwb2ludGVyIGlzIHBhc3NlZCBpbnRv
IFJlc3VsdE9mKCkuIjsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RhdGljIFJl
c1R5cGUgSW52b2tlKFJlc1R5cGUoKmYpKEFyZ1R5cGUpLCBUIGFyZykgewotICAgIHJldHVybiAo
KmYpKGFyZyk7Ci0gIH0KLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFJlc3VsdE9mKCkgbWF0Y2hl
ciBmb3IgbWF0Y2hpbmcgYSByZXR1cm4gdmFsdWUgb2YgYQotLy8gdW5hcnkgZnVuY3Rpb24gb2Yg
YW4gb2JqZWN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxhYmxlPgotY2xhc3MgUmVzdWx0T2ZN
YXRjaGVyIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgQ2FsbGFibGVUcmFpdHM8Q2Fs
bGFibGU+OjpSZXN1bHRUeXBlIFJlc3VsdFR5cGU7Ci0KLSAgUmVzdWx0T2ZNYXRjaGVyKENhbGxh
YmxlIGNhbGxhYmxlLCBjb25zdCBNYXRjaGVyPFJlc3VsdFR5cGU+JiBtYXRjaGVyKQotICAgICAg
OiBjYWxsYWJsZV8oY2FsbGFibGUpLCBtYXRjaGVyXyhtYXRjaGVyKSB7Ci0gICAgQ2FsbGFibGVU
cmFpdHM8Q2FsbGFibGU+OjpDaGVja0lzVmFsaWQoY2FsbGFibGVfKTsKLSAgfQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3QgewotICAgIHJl
dHVybiBNYXRjaGVyPFQ+KG5ldyBJbXBsPFQ+KGNhbGxhYmxlXywgbWF0Y2hlcl8pKTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBDYWxsYWJsZVRyYWl0czxDYWxsYWJsZT46
OlN0b3JhZ2VUeXBlIENhbGxhYmxlU3RvcmFnZVR5cGU7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0gICBwdWJs
aWM6Ci0gICAgSW1wbChDYWxsYWJsZVN0b3JhZ2VUeXBlIGNhbGxhYmxlLCBjb25zdCBNYXRjaGVy
PFJlc3VsdFR5cGU+JiBtYXRjaGVyKQotICAgICAgICA6IGNhbGxhYmxlXyhjYWxsYWJsZSksIG1h
dGNoZXJfKG1hdGNoZXIpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpvcyA8PCAiaXMgbWFwcGVkIGJ5IHRoZSBnaXZl
biBjYWxsYWJsZSB0byBhIHZhbHVlIHRoYXQgIjsKLSAgICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8o
b3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImlzIG1hcHBlZCBieSB0aGUgZ2l2
ZW4gY2FsbGFibGUgdG8gYSB2YWx1ZSB0aGF0ICI7Ci0gICAgICBtYXRjaGVyXy5EZXNjcmliZU5l
Z2F0aW9uVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
VCBvYmosIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgICAqbGlz
dGVuZXIgPDwgIndoaWNoIGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8gIjsKLSAg
ICAgIC8vIENhbm5vdCBwYXNzIHRoZSByZXR1cm4gdmFsdWUgKGZvciBleGFtcGxlLCBpbnQpIHRv
Ci0gICAgICAvLyBNYXRjaFByaW50QW5kRXhwbGFpbiwgd2hpY2ggdGFrZXMgYSBub24tY29uc3Qg
cmVmZXJlbmNlIGFzIGFyZ3VtZW50LgotICAgICAgUmVzdWx0VHlwZSByZXN1bHQgPQotICAgICAg
ICAgIENhbGxhYmxlVHJhaXRzPENhbGxhYmxlPjo6dGVtcGxhdGUgSW52b2tlPFQ+KGNhbGxhYmxl
Xywgb2JqKTsKLSAgICAgIHJldHVybiBNYXRjaFByaW50QW5kRXhwbGFpbihyZXN1bHQsIG1hdGNo
ZXJfLCBsaXN0ZW5lcik7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIC8vIEZ1bmN0b3JzIG9m
dGVuIGRlZmluZSBvcGVyYXRvcigpIGFzIG5vbi1jb25zdCBtZXRob2QgZXZlbiB0aG91Z2gKLSAg
ICAvLyB0aGV5IGFyZSBhY3R1YWx5IHN0YXRlbGVzcy4gQnV0IHdlIG5lZWQgdG8gdXNlIHRoZW0g
ZXZlbiB3aGVuCi0gICAgLy8gJ3RoaXMnIGlzIGEgY29uc3QgcG9pbnRlci4gSXQncyB0aGUgdXNl
cidzIHJlc3BvbnNpYmlsaXR5IG5vdCB0bwotICAgIC8vIHVzZSBzdGF0ZWZ1bCBjYWxsYWJsZXMg
d2l0aCBSZXN1bHRPZigpLCB3aGljaCBkb2VzJ3QgZ3VhcmFudGVlCi0gICAgLy8gaG93IG1hbnkg
dGltZXMgdGhlIGNhbGxhYmxlIHdpbGwgYmUgaW52b2tlZC4KLSAgICBtdXRhYmxlIENhbGxhYmxl
U3RvcmFnZVR5cGUgY2FsbGFibGVfOwotICAgIGNvbnN0IE1hdGNoZXI8UmVzdWx0VHlwZT4gbWF0
Y2hlcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OyAgLy8gY2xh
c3MgSW1wbAotCi0gIGNvbnN0IENhbGxhYmxlU3RvcmFnZVR5cGUgY2FsbGFibGVfOwotICBjb25z
dCBNYXRjaGVyPFJlc3VsdFR5cGU+IG1hdGNoZXJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oUmVzdWx0T2ZNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgYSBtYXRjaGVyIHRoYXQg
Y2hlY2tzIHRoZSBzaXplIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgU2l6ZU1hdGNoZXI+Ci1jbGFzcyBTaXplSXNNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIGV4
cGxpY2l0IFNpemVJc01hdGNoZXIoY29uc3QgU2l6ZU1hdGNoZXImIHNpemVfbWF0Y2hlcikKLSAg
ICAgICA6IHNpemVfbWF0Y2hlcl8oc2l6ZV9tYXRjaGVyKSB7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29udGFpbmVyPgotICBvcGVyYXRvciBNYXRjaGVyPENvbnRhaW5lcj4oKSBjb25z
dCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPENvbnRhaW5lcj4oc2l6ZV9tYXRj
aGVyXykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgY2xhc3Mg
SW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPENvbnRhaW5lcj4gewotICAgcHVibGljOgot
ICAgIHR5cGVkZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8Ci0gICAgICAgICBHVEVTVF9S
RU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKT4gQ29udGFpbmVyVmlldzsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lclZpZXc6OnR5cGU6OnNpemVfdHlwZSBTaXplVHlw
ZTsKLSAgICBleHBsaWNpdCBJbXBsKGNvbnN0IFNpemVNYXRjaGVyJiBzaXplX21hdGNoZXIpCi0g
ICAgICAgIDogc2l6ZV9tYXRjaGVyXyhNYXRjaGVyQ2FzdDxTaXplVHlwZT4oc2l6ZV9tYXRjaGVy
KSkge30KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgewotICAgICAgKm9zIDw8ICJzaXplICI7Ci0gICAgICBzaXplX21hdGNoZXJfLkRlc2Ny
aWJlVG8ob3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJzaXplICI7Ci0gICAgICBz
aXplX21hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCBib29sIE1hdGNoQW5kRXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKLSAgICAgIFNpemVUeXBlIHNpemUgPSBjb250YWluZXIuc2l6ZSgpOwotICAgICAgU3RyaW5n
TWF0Y2hSZXN1bHRMaXN0ZW5lciBzaXplX2xpc3RlbmVyOwotICAgICAgY29uc3QgYm9vbCByZXN1
bHQgPSBzaXplX21hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbihzaXplLCAmc2l6ZV9saXN0ZW5lcik7
Ci0gICAgICAqbGlzdGVuZXIKLSAgICAgICAgICA8PCAid2hvc2Ugc2l6ZSAiIDw8IHNpemUgPDwg
KHJlc3VsdCA/ICIgbWF0Y2hlcyIgOiAiIGRvZXNuJ3QgbWF0Y2giKTsKLSAgICAgIFByaW50SWZO
b3RFbXB0eShzaXplX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgTWF0Y2hlcjxT
aXplVHlwZT4gc2l6ZV9tYXRjaGVyXzsKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwp
OwotICB9OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgU2l6ZU1hdGNoZXIgc2l6ZV9tYXRjaGVyXzsK
LSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhTaXplSXNNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxl
bWVudHMgYSBtYXRjaGVyIHRoYXQgY2hlY2tzIHRoZSBiZWdpbigpLi5lbmQoKSBkaXN0YW5jZSBv
ZiBhbiBTVEwtc3R5bGUKLS8vIGNvbnRhaW5lci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBEaXN0YW5j
ZU1hdGNoZXI+Ci1jbGFzcyBCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyIHsKLSBwdWJsaWM6Ci0g
IGV4cGxpY2l0IEJlZ2luRW5kRGlzdGFuY2VJc01hdGNoZXIoY29uc3QgRGlzdGFuY2VNYXRjaGVy
JiBkaXN0YW5jZV9tYXRjaGVyKQotICAgICAgOiBkaXN0YW5jZV9tYXRjaGVyXyhkaXN0YW5jZV9t
YXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci0gIG9wZXJhdG9y
IE1hdGNoZXI8Q29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3
IEltcGw8Q29udGFpbmVyPihkaXN0YW5jZV9tYXRjaGVyXykpOwotICB9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJm
YWNlPENvbnRhaW5lcj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgaW50ZXJuYWw6OlN0bENv
bnRhaW5lclZpZXc8Ci0gICAgICAgIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhD
b250YWluZXIpPiBDb250YWluZXJWaWV3OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVy
YXRvcl90cmFpdHM8Ci0gICAgICAgIHR5cGVuYW1lIENvbnRhaW5lclZpZXc6OnR5cGU6OmNvbnN0
X2l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgIERpc3RhbmNlVHlwZTsKLSAgICBl
eHBsaWNpdCBJbXBsKGNvbnN0IERpc3RhbmNlTWF0Y2hlciYgZGlzdGFuY2VfbWF0Y2hlcikKLSAg
ICAgICAgOiBkaXN0YW5jZV9tYXRjaGVyXyhNYXRjaGVyQ2FzdDxEaXN0YW5jZVR5cGU+KGRpc3Rh
bmNlX21hdGNoZXIpKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImRpc3RhbmNlIGJldHdlZW4gYmVnaW4o
KSBhbmQgZW5kKCkgIjsKLSAgICAgIGRpc3RhbmNlX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwot
ICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5k
IGVuZCgpICI7Ci0gICAgICBkaXN0YW5jZV9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3Mp
OwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFpbmVyIGNv
bnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0jaWYgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5E
XwotICAgICAgdXNpbmcgc3RkOjpiZWdpbjsKLSAgICAgIHVzaW5nIHN0ZDo6ZW5kOwotICAgICAg
RGlzdGFuY2VUeXBlIGRpc3RhbmNlID0gc3RkOjpkaXN0YW5jZShiZWdpbihjb250YWluZXIpLCBl
bmQoY29udGFpbmVyKSk7Ci0jZWxzZQotICAgICAgRGlzdGFuY2VUeXBlIGRpc3RhbmNlID0gc3Rk
OjpkaXN0YW5jZShjb250YWluZXIuYmVnaW4oKSwgY29udGFpbmVyLmVuZCgpKTsKLSNlbmRpZgot
ICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBkaXN0YW5jZV9saXN0ZW5lcjsKLSAgICAg
IGNvbnN0IGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICBkaXN0YW5jZV9tYXRjaGVyXy5NYXRjaEFu
ZEV4cGxhaW4oZGlzdGFuY2UsICZkaXN0YW5jZV9saXN0ZW5lcik7Ci0gICAgICAqbGlzdGVuZXIg
PDwgIndob3NlIGRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgIiA8PCBkaXN0YW5j
ZQotICAgICAgICAgICAgICAgIDw8IChyZXN1bHQgPyAiIG1hdGNoZXMiIDogIiBkb2Vzbid0IG1h
dGNoIik7Ci0gICAgICBQcmludElmTm90RW1wdHkoZGlzdGFuY2VfbGlzdGVuZXIuc3RyKCksIGxp
c3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgcHJp
dmF0ZToKLSAgICBjb25zdCBNYXRjaGVyPERpc3RhbmNlVHlwZT4gZGlzdGFuY2VfbWF0Y2hlcl87
Ci0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKLSAgfTsKLQotIHByaXZhdGU6Ci0g
IGNvbnN0IERpc3RhbmNlTWF0Y2hlciBkaXN0YW5jZV9tYXRjaGVyXzsKLSAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVu
dHMgYW4gZXF1YWxpdHkgbWF0Y2hlciBmb3IgYW55IFNUTC1zdHlsZSBjb250YWluZXIgd2hvc2Ug
ZWxlbWVudHMKLS8vIHN1cHBvcnQgPT0uIFRoaXMgbWF0Y2hlciBpcyBsaWtlIEVxKCksIGJ1dCBp
dHMgZmFpbHVyZSBleHBsYW5hdGlvbnMgcHJvdmlkZQotLy8gbW9yZSBkZXRhaWxlZCBpbmZvcm1h
dGlvbiB0aGF0IGlzIHVzZWZ1bCB3aGVuIHRoZSBjb250YWluZXIgaXMgdXNlZCBhcyBhIHNldC4K
LS8vIFRoZSBmYWlsdXJlIG1lc3NhZ2UgcmVwb3J0cyBlbGVtZW50cyB0aGF0IGFyZSBpbiBvbmUg
b2YgdGhlIG9wZXJhbmRzIGJ1dCBub3QKLS8vIHRoZSBvdGhlci4gVGhlIGZhaWx1cmUgbWVzc2Fn
ZXMgZG8gbm90IHJlcG9ydCBkdXBsaWNhdGUgb3Igb3V0LW9mLW9yZGVyCi0vLyBlbGVtZW50cyBp
biB0aGUgY29udGFpbmVycyAod2hpY2ggZG9uJ3QgcHJvcGVybHkgbWF0dGVyIHRvIHNldHMsIGJ1
dCBjYW4KLS8vIG9jY3VyIGlmIHRoZSBjb250YWluZXJzIGFyZSB2ZWN0b3JzIG9yIGxpc3RzLCBm
b3IgZXhhbXBsZSkuCi0vLwotLy8gVXNlcyB0aGUgY29udGFpbmVyJ3MgY29uc3RfaXRlcmF0b3Is
IHZhbHVlX3R5cGUsIG9wZXJhdG9yID09LAotLy8gYmVnaW4oKSwgYW5kIGVuZCgpLgotdGVtcGxh
dGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNsYXNzIENvbnRhaW5lckVxTWF0Y2hlciB7Ci0gcHVi
bGljOgotICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PENvbnRhaW5lcj4gVmll
dzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBWaWV3Ojp0eXBlIFN0bENvbnRhaW5lcjsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSBWaWV3Ojpjb25zdF9yZWZlcmVuY2UgU3RsQ29udGFpbmVyUmVmZXJlbmNlOwot
Ci0gIC8vIFdlIG1ha2UgYSBjb3B5IG9mIGV4cGVjdGVkIGluIGNhc2UgdGhlIGVsZW1lbnRzIGlu
IGl0IGFyZSBtb2RpZmllZAotICAvLyBhZnRlciB0aGlzIG1hdGNoZXIgaXMgY3JlYXRlZC4KLSAg
ZXhwbGljaXQgQ29udGFpbmVyRXFNYXRjaGVyKGNvbnN0IENvbnRhaW5lciYgZXhwZWN0ZWQpCi0g
ICAgICA6IGV4cGVjdGVkXyhWaWV3OjpDb3B5KGV4cGVjdGVkKSkgewotICAgIC8vIE1ha2VzIHN1
cmUgdGhlIHVzZXIgZG9lc24ndCBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzIHRlbXBsYXRlCi0gICAg
Ly8gd2l0aCBhIGNvbnN0IG9yIHJlZmVyZW5jZSB0eXBlLgotICAgICh2b2lkKXRlc3Rpbmc6OlN0
YXRpY0Fzc2VydFR5cGVFcTxDb250YWluZXIsCi0gICAgICAgIEdURVNUX1JFTU9WRV9SRUZFUkVO
Q0VfQU5EX0NPTlNUXyhDb250YWluZXIpPigpOwotICB9Ci0KLSAgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiZXF1YWxzICI7Ci0gICAgVW5p
dmVyc2FsUHJpbnQoZXhwZWN0ZWRfLCBvcyk7Ci0gIH0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJkb2VzIG5vdCBlcXVh
bCAiOwotICAgIFVuaXZlcnNhbFByaW50KGV4cGVjdGVkXywgb3MpOwotICB9Ci0KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIExoc0NvbnRhaW5lcj4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3Qg
TGhzQ29udGFpbmVyJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlz
dGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gR1RFU1RfUkVNT1ZFX0NPTlNUXygpIGlz
IG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhbiBNU1ZDIDguMCBidWcKLSAgICAvLyB0aGF0IGNhdXNl
cyBMaHNDb250YWluZXIgdG8gYmUgYSBjb25zdCB0eXBlIHNvbWV0aW1lcy4KLSAgICB0eXBlZGVm
IGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PEdURVNUX1JFTU9WRV9DT05TVF8oTGhzQ29udGFp
bmVyKT4KLSAgICAgICAgTGhzVmlldzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIExoc1ZpZXc6OnR5
cGUgTGhzU3RsQ29udGFpbmVyOwotICAgIFN0bENvbnRhaW5lclJlZmVyZW5jZSBsaHNfc3RsX2Nv
bnRhaW5lciA9IExoc1ZpZXc6OkNvbnN0UmVmZXJlbmNlKGxocyk7Ci0gICAgaWYgKGxoc19zdGxf
Y29udGFpbmVyID09IGV4cGVjdGVkXykKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgOjpzdGQ6
Om9zdHJlYW0qIGNvbnN0IG9zID0gbGlzdGVuZXItPnN0cmVhbSgpOwotICAgIGlmIChvcyAhPSBO
VUxMKSB7Ci0gICAgICAvLyBTb21ldGhpbmcgaXMgZGlmZmVyZW50LiBDaGVjayBmb3IgZXh0cmEg
dmFsdWVzIGZpcnN0LgotICAgICAgYm9vbCBwcmludGVkX2hlYWRlciA9IGZhbHNlOwotICAgICAg
Zm9yICh0eXBlbmFtZSBMaHNTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0KLSAgICAg
ICAgICAgICAgIGxoc19zdGxfY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICAgICAgIGl0ICE9IGxo
c19zdGxfY29udGFpbmVyLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpbnRlcm5hbDo6QXJy
YXlBd2FyZUZpbmQoZXhwZWN0ZWRfLmJlZ2luKCksIGV4cGVjdGVkXy5lbmQoKSwgKml0KSA9PQot
ICAgICAgICAgICAgZXhwZWN0ZWRfLmVuZCgpKSB7Ci0gICAgICAgICAgaWYgKHByaW50ZWRfaGVh
ZGVyKSB7Ci0gICAgICAgICAgICAqb3MgPDwgIiwgIjsKLSAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgKm9zIDw8ICJ3aGljaCBoYXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50czogIjsK
LSAgICAgICAgICAgIHByaW50ZWRfaGVhZGVyID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgVW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAg
Ly8gTm93IGNoZWNrIGZvciBtaXNzaW5nIHZhbHVlcy4KLSAgICAgIGJvb2wgcHJpbnRlZF9oZWFk
ZXIyID0gZmFsc2U7Ci0gICAgICBmb3IgKHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBleHBlY3RlZF8uYmVnaW4oKTsKLSAgICAgICAgICAgaXQgIT0gZXhwZWN0ZWRf
LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpbnRlcm5hbDo6QXJyYXlBd2FyZUZpbmQoCi0g
ICAgICAgICAgICAgICAgbGhzX3N0bF9jb250YWluZXIuYmVnaW4oKSwgbGhzX3N0bF9jb250YWlu
ZXIuZW5kKCksICppdCkgPT0KLSAgICAgICAgICAgIGxoc19zdGxfY29udGFpbmVyLmVuZCgpKSB7
Ci0gICAgICAgICAgaWYgKHByaW50ZWRfaGVhZGVyMikgewotICAgICAgICAgICAgKm9zIDw8ICIs
ICI7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpvcyA8PCAocHJpbnRlZF9oZWFk
ZXIgPyAiLFxuYW5kIiA6ICJ3aGljaCIpCi0gICAgICAgICAgICAgICAgPDwgIiBkb2Vzbid0IGhh
dmUgdGhlc2UgZXhwZWN0ZWQgZWxlbWVudHM6ICI7Ci0gICAgICAgICAgICBwcmludGVkX2hlYWRl
cjIgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBVbml2ZXJzYWxQcmludCgqaXQsIG9z
KTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgY29uc3QgU3RsQ29udGFpbmVyIGV4cGVjdGVkXzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKENvbnRhaW5lckVxTWF0Y2hlcik7Ci19OwotCi0vLyBBIGNvbXBhcmF0
b3IgZnVuY3RvciB0aGF0IHVzZXMgdGhlIDwgb3BlcmF0b3IgdG8gY29tcGFyZSB0d28gdmFsdWVz
Lgotc3RydWN0IExlc3NDb21wYXJhdG9yIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJocykgY29u
c3QgeyByZXR1cm4gbGhzIDwgcmhzOyB9Ci19OwotCi0vLyBJbXBsZW1lbnRzIFdoZW5Tb3J0ZWRC
eShjb21wYXJhdG9yLCBjb250YWluZXJfbWF0Y2hlcikuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29t
cGFyYXRvciwgdHlwZW5hbWUgQ29udGFpbmVyTWF0Y2hlcj4KLWNsYXNzIFdoZW5Tb3J0ZWRCeU1h
dGNoZXIgewotIHB1YmxpYzoKLSAgV2hlblNvcnRlZEJ5TWF0Y2hlcihjb25zdCBDb21wYXJhdG9y
JiBjb21wYXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRhaW5lck1hdGNo
ZXImIG1hdGNoZXIpCi0gICAgICA6IGNvbXBhcmF0b3JfKGNvbXBhcmF0b3IpLCBtYXRjaGVyXyht
YXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+Ci0gIG9wZXJh
dG9yIE1hdGNoZXI8TGhzQ29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNo
ZXIobmV3IEltcGw8TGhzQ29udGFpbmVyPihjb21wYXJhdG9yXywgbWF0Y2hlcl8pKTsKLSAgfQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+Ci0gIGNsYXNzIEltcGwgOiBwdWJs
aWMgTWF0Y2hlckludGVyZmFjZTxMaHNDb250YWluZXI+IHsKLSAgIHB1YmxpYzoKLSAgICB0eXBl
ZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PAotICAgICAgICAgR1RFU1RfUkVNT1ZFX1JF
RkVSRU5DRV9BTkRfQ09OU1RfKExoc0NvbnRhaW5lcik+IExoc1ZpZXc7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSBMaHNWaWV3Ojp0eXBlIExoc1N0bENvbnRhaW5lcjsKLSAgICB0eXBlZGVmIHR5cGVu
YW1lIExoc1ZpZXc6OmNvbnN0X3JlZmVyZW5jZSBMaHNTdGxDb250YWluZXJSZWZlcmVuY2U7Ci0g
ICAgLy8gVHJhbnNmb3JtcyBzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4gaW50byBzdGQ6OnBh
aXI8S2V5LCBWYWx1ZT4KLSAgICAvLyBzbyB0aGF0IHdlIGNhbiBtYXRjaCBhc3NvY2lhdGl2ZSBj
b250YWluZXJzLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3RGcm9tS2V5PAotICAg
ICAgICB0eXBlbmFtZSBMaHNTdGxDb250YWluZXI6OnZhbHVlX3R5cGU+Ojp0eXBlIExoc1ZhbHVl
OwotCi0gICAgSW1wbChjb25zdCBDb21wYXJhdG9yJiBjb21wYXJhdG9yLCBjb25zdCBDb250YWlu
ZXJNYXRjaGVyJiBtYXRjaGVyKQotICAgICAgICA6IGNvbXBhcmF0b3JfKGNvbXBhcmF0b3IpLCBt
YXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgIih3aGVuIHNvcnRlZCkgIjsKLSAg
ICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3Mg
PDwgIih3aGVuIHNvcnRlZCkgIjsKLSAgICAgIG1hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhv
cyk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihMaHNDb250YWlu
ZXIgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAgIExoc1N0bENvbnRhaW5lclJlZmVyZW5jZSBs
aHNfc3RsX2NvbnRhaW5lciA9IExoc1ZpZXc6OkNvbnN0UmVmZXJlbmNlKGxocyk7Ci0gICAgICA6
OnN0ZDo6dmVjdG9yPExoc1ZhbHVlPiBzb3J0ZWRfY29udGFpbmVyKGxoc19zdGxfY29udGFpbmVy
LmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxoc19zdGxfY29udGFpbmVyLmVuZCgpKTsKLSAgICAgIDo6c3RkOjpzb3J0KAotICAgICAgICAg
ICBzb3J0ZWRfY29udGFpbmVyLmJlZ2luKCksIHNvcnRlZF9jb250YWluZXIuZW5kKCksIGNvbXBh
cmF0b3JfKTsKLQotICAgICAgaWYgKCFsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsKLSAgICAg
ICAgLy8gSWYgdGhlIGxpc3RlbmVyIGlzIG5vdCBpbnRlcmVzdGVkLCB3ZSBkbyBub3QgbmVlZCB0
bwotICAgICAgICAvLyBjb25zdHJ1Y3QgdGhlIGlubmVyIGV4cGxhbmF0aW9uLgotICAgICAgICBy
ZXR1cm4gbWF0Y2hlcl8uTWF0Y2hlcyhzb3J0ZWRfY29udGFpbmVyKTsKLSAgICAgIH0KLQotICAg
ICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiOwotICAgICAgVW5pdmVyc2FsUHJpbnQoc29ydGVk
X2NvbnRhaW5lciwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICpsaXN0ZW5lciA8PCAiIHdo
ZW4gc29ydGVkIjsKLQotICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0
ZW5lcjsKLSAgICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSBtYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4o
c29ydGVkX2NvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmlubmVyX2xpc3RlbmVyKTsKLSAgICAgIFByaW50SWZOb3RFbXB0eShpbm5l
cl9saXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgIHJldHVybiBtYXRj
aDsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgQ29tcGFyYXRvciBjb21wYXJhdG9y
XzsKLSAgICBjb25zdCBNYXRjaGVyPGNvbnN0IDo6c3RkOjp2ZWN0b3I8TGhzVmFsdWU+Jj4gbWF0
Y2hlcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEltcGwpOwotICB9
OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgQ29tcGFyYXRvciBjb21wYXJhdG9yXzsKLSAgY29uc3Qg
Q29udGFpbmVyTWF0Y2hlciBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFdo
ZW5Tb3J0ZWRCeU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBQb2ludHdpc2UodHVwbGVf
bWF0Y2hlciwgcmhzX2NvbnRhaW5lcikuICB0dXBsZV9tYXRjaGVyCi0vLyBtdXN0IGJlIGFibGUg
dG8gYmUgc2FmZWx5IGNhc3QgdG8gTWF0Y2hlcjx0dXBsZTxjb25zdCBUMSYsIGNvbnN0Ci0vLyBU
MiY+ID4sIHdoZXJlIFQxIGFuZCBUMiBhcmUgdGhlIHR5cGVzIG9mIGVsZW1lbnRzIGluIHRoZSBM
SFMKLS8vIGNvbnRhaW5lciBhbmQgdGhlIFJIUyBjb250YWluZXIgcmVzcGVjdGl2ZWx5LgotdGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlTWF0Y2hlciwgdHlwZW5hbWUgUmhzQ29udGFpbmVyPgotY2xh
c3MgUG9pbnR3aXNlTWF0Y2hlciB7Ci0gcHVibGljOgotICB0eXBlZGVmIGludGVybmFsOjpTdGxD
b250YWluZXJWaWV3PFJoc0NvbnRhaW5lcj4gUmhzVmlldzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBS
aHNWaWV3Ojp0eXBlIFJoc1N0bENvbnRhaW5lcjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBSaHNTdGxD
b250YWluZXI6OnZhbHVlX3R5cGUgUmhzVmFsdWU7Ci0KLSAgLy8gTGlrZSBDb250YWluZXJFcSwg
d2UgbWFrZSBhIGNvcHkgb2YgcmhzIGluIGNhc2UgdGhlIGVsZW1lbnRzIGluCi0gIC8vIGl0IGFy
ZSBtb2RpZmllZCBhZnRlciB0aGlzIG1hdGNoZXIgaXMgY3JlYXRlZC4KLSAgUG9pbnR3aXNlTWF0
Y2hlcihjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIGNvbnN0IFJoc0NvbnRhaW5l
ciYgcmhzKQotICAgICAgOiB0dXBsZV9tYXRjaGVyXyh0dXBsZV9tYXRjaGVyKSwgcmhzXyhSaHNW
aWV3OjpDb3B5KHJocykpIHsKLSAgICAvLyBNYWtlcyBzdXJlIHRoZSB1c2VyIGRvZXNuJ3QgaW5z
dGFudGlhdGUgdGhpcyBjbGFzcyB0ZW1wbGF0ZQotICAgIC8vIHdpdGggYSBjb25zdCBvciByZWZl
cmVuY2UgdHlwZS4KLSAgICAodm9pZCl0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8UmhzQ29u
dGFpbmVyLAotICAgICAgICBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oUmhzQ29u
dGFpbmVyKT4oKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+Ci0g
IG9wZXJhdG9yIE1hdGNoZXI8TGhzQ29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFr
ZU1hdGNoZXIobmV3IEltcGw8TGhzQ29udGFpbmVyPih0dXBsZV9tYXRjaGVyXywgcmhzXykpOwot
ICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIExoc0NvbnRhaW5lcj4KLSAgY2xhc3MgSW1wbCA6
IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPExoc0NvbnRhaW5lcj4gewotICAgcHVibGljOgotICAg
IHR5cGVkZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8Ci0gICAgICAgICBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oTGhzQ29udGFpbmVyKT4gTGhzVmlldzsKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIExoc1ZpZXc6OnR5cGUgTGhzU3RsQ29udGFpbmVyOwotICAgIHR5cGVkZWYg
dHlwZW5hbWUgTGhzVmlldzo6Y29uc3RfcmVmZXJlbmNlIExoc1N0bENvbnRhaW5lclJlZmVyZW5j
ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIExoc1N0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBMaHNW
YWx1ZTsKLSAgICAvLyBXZSBwYXNzIHRoZSBMSFMgdmFsdWUgYW5kIHRoZSBSSFMgdmFsdWUgdG8g
dGhlIGlubmVyIG1hdGNoZXIgYnkKLSAgICAvLyByZWZlcmVuY2UsIGFzIHRoZXkgbWF5IGJlIGV4
cGVuc2l2ZSB0byBjb3B5LiAgV2UgbXVzdCB1c2UgdHVwbGUKLSAgICAvLyBpbnN0ZWFkIG9mIHBh
aXIgaGVyZSwgYXMgYSBwYWlyIGNhbm5vdCBob2xkIHJlZmVyZW5jZXMgKEMrKyA5OCwKLSAgICAv
LyAyMC4yLjIgW2xpYi5wYWlyc10pLgotICAgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxjb25z
dCBMaHNWYWx1ZSYsIGNvbnN0IFJoc1ZhbHVlJj4gSW5uZXJNYXRjaGVyQXJnOwotCi0gICAgSW1w
bChjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIGNvbnN0IFJoc1N0bENvbnRhaW5l
ciYgcmhzKQotICAgICAgICAvLyBtb25vX3R1cGxlX21hdGNoZXJfIGhvbGRzIGEgbW9ub21vcnBo
aWMgdmVyc2lvbiBvZiB0aGUgdHVwbGUgbWF0Y2hlci4KLSAgICAgICAgOiBtb25vX3R1cGxlX21h
dGNoZXJfKFNhZmVNYXRjaGVyQ2FzdDxJbm5lck1hdGNoZXJBcmc+KHR1cGxlX21hdGNoZXIpKSwK
LSAgICAgICAgICByaHNfKHJocykge30KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJjb250YWlucyAiIDw8IHJo
c18uc2l6ZSgpCi0gICAgICAgICAgPDwgIiB2YWx1ZXMsIHdoZXJlIGVhY2ggdmFsdWUgYW5kIGl0
cyBjb3JyZXNwb25kaW5nIHZhbHVlIGluICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVyPFJoc1N0
bENvbnRhaW5lcj46OlByaW50KHJoc18sIG9zKTsKLSAgICAgICpvcyA8PCAiICI7Ci0gICAgICBt
b25vX3R1cGxlX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAg
Km9zIDw8ICJkb2Vzbid0IGNvbnRhaW4gZXhhY3RseSAiIDw8IHJoc18uc2l6ZSgpCi0gICAgICAg
ICAgPDwgIiB2YWx1ZXMsIG9yIGNvbnRhaW5zIGEgdmFsdWUgeCBhdCBzb21lIGluZGV4IGkiCi0g
ICAgICAgICAgPDwgIiB3aGVyZSB4IGFuZCB0aGUgaS10aCB2YWx1ZSBvZiAiOwotICAgICAgVW5p
dmVyc2FsUHJpbnQocmhzXywgb3MpOwotICAgICAgKm9zIDw8ICIgIjsKLSAgICAgIG1vbm9fdHVw
bGVfbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKExoc0NvbnRhaW5lciBsaHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qgewot
ICAgICAgTGhzU3RsQ29udGFpbmVyUmVmZXJlbmNlIGxoc19zdGxfY29udGFpbmVyID0gTGhzVmll
dzo6Q29uc3RSZWZlcmVuY2UobGhzKTsKLSAgICAgIGNvbnN0IHNpemVfdCBhY3R1YWxfc2l6ZSA9
IGxoc19zdGxfY29udGFpbmVyLnNpemUoKTsKLSAgICAgIGlmIChhY3R1YWxfc2l6ZSAhPSByaHNf
LnNpemUoKSkgewotICAgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGNvbnRhaW5zICIgPDwgYWN0
dWFsX3NpemUgPDwgIiB2YWx1ZXMiOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0K
LSAgICAgIHR5cGVuYW1lIExoc1N0bENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgbGVmdCA9IGxo
c19zdGxfY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICB0eXBlbmFtZSBSaHNTdGxDb250YWluZXI6
OmNvbnN0X2l0ZXJhdG9yIHJpZ2h0ID0gcmhzXy5iZWdpbigpOwotICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgIT0gYWN0dWFsX3NpemU7ICsraSwgKytsZWZ0LCArK3JpZ2h0KSB7Ci0gICAgICAg
IGNvbnN0IElubmVyTWF0Y2hlckFyZyB2YWx1ZV9wYWlyKCpsZWZ0LCAqcmlnaHQpOwotCi0gICAg
ICAgIGlmIChsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsKLSAgICAgICAgICBTdHJpbmdNYXRj
aFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVyOwotICAgICAgICAgIGlmICghbW9ub190dXBs
ZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oCi0gICAgICAgICAgICAgICAgICB2YWx1ZV9wYWly
LCAmaW5uZXJfbGlzdGVuZXIpKSB7Ci0gICAgICAgICAgICAqbGlzdGVuZXIgPDwgIndoZXJlIHRo
ZSB2YWx1ZSBwYWlyICgiOwotICAgICAgICAgICAgVW5pdmVyc2FsUHJpbnQoKmxlZnQsIGxpc3Rl
bmVyLT5zdHJlYW0oKSk7Ci0gICAgICAgICAgICAqbGlzdGVuZXIgPDwgIiwgIjsKLSAgICAgICAg
ICAgIFVuaXZlcnNhbFByaW50KCpyaWdodCwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICAg
ICAgICpsaXN0ZW5lciA8PCAiKSBhdCBpbmRleCAjIiA8PCBpIDw8ICIgZG9uJ3QgbWF0Y2giOwot
ICAgICAgICAgICAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5l
ci0+c3RyZWFtKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpZiAoIW1vbm9fdHVwbGVfbWF0Y2hlcl8uTWF0Y2hl
cyh2YWx1ZV9wYWlyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgfQotCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29u
c3QgTWF0Y2hlcjxJbm5lck1hdGNoZXJBcmc+IG1vbm9fdHVwbGVfbWF0Y2hlcl87Ci0gICAgY29u
c3QgUmhzU3RsQ29udGFpbmVyIHJoc187Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKElt
cGwpOwotICB9OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgVHVwbGVNYXRjaGVyIHR1cGxlX21hdGNo
ZXJfOwotICBjb25zdCBSaHNTdGxDb250YWluZXIgcmhzXzsKLQotICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKFBvaW50d2lzZU1hdGNoZXIpOwotfTsKLQotLy8gSG9sZHMgdGhlIGxvZ2ljIGNvbW1v
biB0byBDb250YWluc01hdGNoZXJJbXBsIGFuZCBFYWNoTWF0Y2hlckltcGwuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29udGFpbmVyPgotY2xhc3MgUXVhbnRpZmllck1hdGNoZXJJbXBsIDogcHVibGlj
IE1hdGNoZXJJbnRlcmZhY2U8Q29udGFpbmVyPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIEdURVNU
X1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRhaW5lcjsKLSAg
dHlwZWRlZiBTdGxDb250YWluZXJWaWV3PFJhd0NvbnRhaW5lcj4gVmlldzsKLSAgdHlwZWRlZiB0
eXBlbmFtZSBWaWV3Ojp0eXBlIFN0bENvbnRhaW5lcjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBWaWV3
Ojpjb25zdF9yZWZlcmVuY2UgU3RsQ29udGFpbmVyUmVmZXJlbmNlOwotICB0eXBlZGVmIHR5cGVu
YW1lIFN0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBFbGVtZW50OwotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBJbm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IFF1YW50aWZpZXJNYXRjaGVySW1wbChJbm5l
ck1hdGNoZXIgaW5uZXJfbWF0Y2hlcikKLSAgICAgIDogaW5uZXJfbWF0Y2hlcl8oCi0gICAgICAg
ICAgIHRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDxjb25zdCBFbGVtZW50Jj4oaW5uZXJfbWF0Y2hl
cikpIHt9Ci0KLSAgLy8gQ2hlY2tzIHdoZXRoZXI6Ci0gIC8vICogQWxsIGVsZW1lbnRzIGluIHRo
ZSBjb250YWluZXIgbWF0Y2gsIGlmIGFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2guCi0gIC8vICog
QW55IGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lciBtYXRjaGVzLCBpZiAhYWxsX2VsZW1lbnRzX3No
b3VsZF9tYXRjaC4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW5JbXBsKGJvb2wgYWxsX2VsZW1lbnRz
X3Nob3VsZF9tYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lciBjb250
YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBs
aXN0ZW5lcikgY29uc3QgewotICAgIFN0bENvbnRhaW5lclJlZmVyZW5jZSBzdGxfY29udGFpbmVy
ID0gVmlldzo6Q29uc3RSZWZlcmVuY2UoY29udGFpbmVyKTsKLSAgICBzaXplX3QgaSA9IDA7Ci0g
ICAgZm9yICh0eXBlbmFtZSBTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3RsX2Nv
bnRhaW5lci5iZWdpbigpOwotICAgICAgICAgaXQgIT0gc3RsX2NvbnRhaW5lci5lbmQoKTsgKytp
dCwgKytpKSB7Ci0gICAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVy
OwotICAgICAgY29uc3QgYm9vbCBtYXRjaGVzID0gaW5uZXJfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBs
YWluKCppdCwgJmlubmVyX2xpc3RlbmVyKTsKLQotICAgICAgaWYgKG1hdGNoZXMgIT0gYWxsX2Vs
ZW1lbnRzX3Nob3VsZF9tYXRjaCkgewotICAgICAgICAqbGlzdGVuZXIgPDwgIndob3NlIGVsZW1l
bnQgIyIgPDwgaQotICAgICAgICAgICAgICAgICAgPDwgKG1hdGNoZXMgPyAiIG1hdGNoZXMiIDog
IiBkb2Vzbid0IG1hdGNoIik7Ci0gICAgICAgIFByaW50SWZOb3RFbXB0eShpbm5lcl9saXN0ZW5l
ci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICAgcmV0dXJuICFhbGxfZWxlbWVu
dHNfc2hvdWxkX21hdGNoOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYWxsX2VsZW1lbnRz
X3Nob3VsZF9tYXRjaDsKLSAgfQotCi0gcHJvdGVjdGVkOgotICBjb25zdCBNYXRjaGVyPGNvbnN0
IEVsZW1lbnQmPiBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFF1
YW50aWZpZXJNYXRjaGVySW1wbCk7Ci19OwotCi0vLyBJbXBsZW1lbnRzIENvbnRhaW5zKGVsZW1l
bnRfbWF0Y2hlcikgZm9yIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBlIENvbnRhaW5lci4KLS8vIFN5
bW1ldHJpYyB0byBFYWNoTWF0Y2hlckltcGwuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVy
PgotY2xhc3MgQ29udGFpbnNNYXRjaGVySW1wbCA6IHB1YmxpYyBRdWFudGlmaWVyTWF0Y2hlcklt
cGw8Q29udGFpbmVyPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRj
aGVyPgotICBleHBsaWNpdCBDb250YWluc01hdGNoZXJJbXBsKElubmVyTWF0Y2hlciBpbm5lcl9t
YXRjaGVyKQotICAgICAgOiBRdWFudGlmaWVyTWF0Y2hlckltcGw8Q29udGFpbmVyPihpbm5lcl9t
YXRjaGVyKSB7fQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoaXMgbWF0Y2hlciBkb2VzLgotICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAq
b3MgPDwgImNvbnRhaW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IHRoYXQgIjsKLSAgICB0aGlzLT5p
bm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNj
cmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJk
b2Vzbid0IGNvbnRhaW4gYW55IGVsZW1lbnQgdGhhdCAiOwotICAgIHRoaXMtPmlubmVyX21hdGNo
ZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFp
bihDb250YWluZXIgY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRoaXMtPk1h
dGNoQW5kRXhwbGFpbkltcGwoZmFsc2UsIGNvbnRhaW5lciwgbGlzdGVuZXIpOwotICB9Ci0KLSBw
cml2YXRlOgotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKENvbnRhaW5zTWF0Y2hlckltcGwpOwot
fTsKLQotLy8gSW1wbGVtZW50cyBFYWNoKGVsZW1lbnRfbWF0Y2hlcikgZm9yIHRoZSBnaXZlbiBh
cmd1bWVudCB0eXBlIENvbnRhaW5lci4KLS8vIFN5bW1ldHJpYyB0byBDb250YWluc01hdGNoZXJJ
bXBsLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNsYXNzIEVhY2hNYXRjaGVySW1w
bCA6IHB1YmxpYyBRdWFudGlmaWVyTWF0Y2hlckltcGw8Q29udGFpbmVyPiB7Ci0gcHVibGljOgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotICBleHBsaWNpdCBFYWNoTWF0Y2hl
ckltcGwoSW5uZXJNYXRjaGVyIGlubmVyX21hdGNoZXIpCi0gICAgICA6IFF1YW50aWZpZXJNYXRj
aGVySW1wbDxDb250YWluZXI+KGlubmVyX21hdGNoZXIpIHt9Ci0KLSAgLy8gRGVzY3JpYmVzIHdo
YXQgdGhpcyBtYXRjaGVyIGRvZXMuCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAib25seSBjb250YWlucyBlbGVtZW50cyB0
aGF0ICI7Ci0gICAgdGhpcy0+aW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgewotICAgICpvcyA8PCAiY29udGFpbnMgc29tZSBlbGVtZW50IHRoYXQgIjsKLSAgICB0aGlz
LT5pbm5lcl9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdmlydHVh
bCBib29sIE1hdGNoQW5kRXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHRoaXMtPk1hdGNoQW5kRXhwbGFpbkltcGwodHJ1ZSwgY29udGFpbmVyLCBs
aXN0ZW5lcik7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWFj
aE1hdGNoZXJJbXBsKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgcG9seW1vcnBoaWMgQ29udGFpbnMo
ZWxlbWVudF9tYXRjaGVyKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNPgotY2xhc3MgQ29udGFpbnNN
YXRjaGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IENvbnRhaW5zTWF0Y2hlcihNIG0pIDogaW5u
ZXJfbWF0Y2hlcl8obSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotICBv
cGVyYXRvciBNYXRjaGVyPENvbnRhaW5lcj4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRj
aGVyKG5ldyBDb250YWluc01hdGNoZXJJbXBsPENvbnRhaW5lcj4oaW5uZXJfbWF0Y2hlcl8pKTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKENvbnRhaW5zTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIHBv
bHltb3JwaGljIEVhY2goZWxlbWVudF9tYXRjaGVyKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNPgot
Y2xhc3MgRWFjaE1hdGNoZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRWFjaE1hdGNoZXIoTSBt
KSA6IGlubmVyX21hdGNoZXJfKG0pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5l
cj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3QgewotICAgIHJldHVybiBN
YWtlTWF0Y2hlcihuZXcgRWFjaE1hdGNoZXJJbXBsPENvbnRhaW5lcj4oaW5uZXJfbWF0Y2hlcl8p
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKEVhY2hNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgS2V5
KGlubmVyX21hdGNoZXIpIGZvciB0aGUgZ2l2ZW4gYXJndW1lbnQgcGFpciB0eXBlLgotLy8gS2V5
KGlubmVyX21hdGNoZXIpIG1hdGNoZXMgYW4gc3RkOjpwYWlyIHdob3NlICdmaXJzdCcgZmllbGQg
bWF0Y2hlcwotLy8gaW5uZXJfbWF0Y2hlci4gIEZvciBleGFtcGxlLCBDb250YWlucyhLZXkoR2Uo
NSkpKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbgotLy8gc3RkOjptYXAgdGhhdCBjb250YWlucyBh
dCBsZWFzdCBvbmUgZWxlbWVudCB3aG9zZSBrZXkgaXMgPj0gNS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBQYWlyVHlwZT4KLWNsYXNzIEtleU1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZh
Y2U8UGFpclR5cGU+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVSRU5D
RV9BTkRfQ09OU1RfKFBhaXJUeXBlKSBSYXdQYWlyVHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBS
YXdQYWlyVHlwZTo6Zmlyc3RfdHlwZSBLZXlUeXBlOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
bm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IEtleU1hdGNoZXJJbXBsKElubmVyTWF0Y2hlciBpbm5l
cl9tYXRjaGVyKQotICAgICAgOiBpbm5lcl9tYXRjaGVyXygKLSAgICAgICAgICB0ZXN0aW5nOjpT
YWZlTWF0Y2hlckNhc3Q8Y29uc3QgS2V5VHlwZSY+KGlubmVyX21hdGNoZXIpKSB7Ci0gIH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmICdrZXlfdmFsdWUuZmlyc3QnICh0aGUga2V5KSBtYXRjaGVz
IHRoZSBpbm5lciBtYXRjaGVyLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFBhaXJU
eXBlIGtleV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVu
ZXIgaW5uZXJfbGlzdGVuZXI7Ci0gICAgY29uc3QgYm9vbCBtYXRjaCA9IGlubmVyX21hdGNoZXJf
Lk1hdGNoQW5kRXhwbGFpbihrZXlfdmFsdWUuZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5uZXJfbGlzdGVuZXIpOwotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGV4cGxhbmF0aW9uID0gaW5uZXJfbGlzdGVuZXIuc3RyKCk7Ci0gICAg
aWYgKGV4cGxhbmF0aW9uICE9ICIiKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIndob3NlIGZpcnN0
IGZpZWxkIGlzIGEgdmFsdWUgIiA8PCBleHBsYW5hdGlvbjsKLSAgICB9Ci0gICAgcmV0dXJuIG1h
dGNoOwotICB9Ci0KLSAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVyIGRvZXMuCi0gIHZp
cnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpv
cyA8PCAiaGFzIGEga2V5IHRoYXQgIjsKLSAgICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9z
KTsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNo
ZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImRvZXNuJ3QgaGF2ZSBhIGtleSB0aGF0ICI7Ci0g
ICAgaW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IE1hdGNoZXI8Y29uc3QgS2V5VHlwZSY+IGlubmVyX21hdGNoZXJfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oS2V5TWF0Y2hlckltcGwpOwotfTsKLQotLy8gSW1wbGVtZW50cyBwb2x5
bW9ycGhpYyBLZXkobWF0Y2hlcl9mb3Jfa2V5KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNPgotY2xh
c3MgS2V5TWF0Y2hlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBLZXlNYXRjaGVyKE0gbSkgOiBt
YXRjaGVyX2Zvcl9rZXlfKG0pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXJUeXBlPgot
ICBvcGVyYXRvciBNYXRjaGVyPFBhaXJUeXBlPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1h
dGNoZXIobmV3IEtleU1hdGNoZXJJbXBsPFBhaXJUeXBlPihtYXRjaGVyX2Zvcl9rZXlfKSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IE0gbWF0Y2hlcl9mb3Jfa2V5XzsKLQotICBHVEVTVF9E
SVNBTExPV19BU1NJR05fKEtleU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBQYWlyKGZp
cnN0X21hdGNoZXIsIHNlY29uZF9tYXRjaGVyKSBmb3IgdGhlIGdpdmVuIGFyZ3VtZW50IHBhaXIK
LS8vIHR5cGUgd2l0aCBpdHMgdHdvIG1hdGNoZXJzLiBTZWUgUGFpcigpIGZ1bmN0aW9uIGJlbG93
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXJUeXBlPgotY2xhc3MgUGFpck1hdGNoZXJJbXBsIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8UGFpclR5cGU+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYg
R1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFBhaXJUeXBlKSBSYXdQYWlyVHlwZTsK
LSAgdHlwZWRlZiB0eXBlbmFtZSBSYXdQYWlyVHlwZTo6Zmlyc3RfdHlwZSBGaXJzdFR5cGU7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgUmF3UGFpclR5cGU6OnNlY29uZF90eXBlIFNlY29uZFR5cGU7Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0TWF0Y2hlciwgdHlwZW5hbWUgU2Vjb25kTWF0Y2hl
cj4KLSAgUGFpck1hdGNoZXJJbXBsKEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyLCBTZWNvbmRN
YXRjaGVyIHNlY29uZF9tYXRjaGVyKQotICAgICAgOiBmaXJzdF9tYXRjaGVyXygKLSAgICAgICAg
ICAgIHRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDxjb25zdCBGaXJzdFR5cGUmPihmaXJzdF9tYXRj
aGVyKSksCi0gICAgICAgIHNlY29uZF9tYXRjaGVyXygKLSAgICAgICAgICAgIHRlc3Rpbmc6OlNh
ZmVNYXRjaGVyQ2FzdDxjb25zdCBTZWNvbmRUeXBlJj4oc2Vjb25kX21hdGNoZXIpKSB7Ci0gIH0K
LQotICAvLyBEZXNjcmliZXMgd2hhdCB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJoYXMg
YSBmaXJzdCBmaWVsZCB0aGF0ICI7Ci0gICAgZmlyc3RfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7
Ci0gICAgKm9zIDw8ICIsIGFuZCBoYXMgYSBzZWNvbmQgZmllbGQgdGhhdCAiOwotICAgIHNlY29u
ZF9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRo
ZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJl
TmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImhhcyBh
IGZpcnN0IGZpZWxkIHRoYXQgIjsKLSAgICBmaXJzdF9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9u
VG8ob3MpOwotICAgICpvcyA8PCAiLCBvciBoYXMgYSBzZWNvbmQgZmllbGQgdGhhdCAiOwotICAg
IHNlY29uZF9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmZiAnYV9wYWlyLmZpcnN0JyBtYXRjaGVzIGZpcnN0X21hdGNoZXIgYW5kICdh
X3BhaXIuc2Vjb25kJwotICAvLyBtYXRjaGVzIHNlY29uZF9tYXRjaGVyLgotICB2aXJ0dWFsIGJv
b2wgTWF0Y2hBbmRFeHBsYWluKFBhaXJUeXBlIGFfcGFpciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIGlm
ICghbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAvLyBJZiB0aGUgbGlzdGVuZXIg
aXMgbm90IGludGVyZXN0ZWQsIHdlIGRvbid0IG5lZWQgdG8gY29uc3RydWN0IHRoZQotICAgICAg
Ly8gZXhwbGFuYXRpb24uCi0gICAgICByZXR1cm4gZmlyc3RfbWF0Y2hlcl8uTWF0Y2hlcyhhX3Bh
aXIuZmlyc3QpICYmCi0gICAgICAgICAgICAgc2Vjb25kX21hdGNoZXJfLk1hdGNoZXMoYV9wYWly
LnNlY29uZCk7Ci0gICAgfQotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgZmlyc3RfaW5u
ZXJfbGlzdGVuZXI7Ci0gICAgaWYgKCFmaXJzdF9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oYV9w
YWlyLmZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJz
dF9pbm5lcl9saXN0ZW5lcikpIHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hvc2UgZmlyc3QgZmll
bGQgZG9lcyBub3QgbWF0Y2giOwotICAgICAgUHJpbnRJZk5vdEVtcHR5KGZpcnN0X2lubmVyX2xp
c3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIHNlY29uZF9pbm5lcl9saXN0ZW5l
cjsKLSAgICBpZiAoIXNlY29uZF9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oYV9wYWlyLnNlY29u
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29uZF9pbm5l
cl9saXN0ZW5lcikpIHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hvc2Ugc2Vjb25kIGZpZWxkIGRv
ZXMgbm90IG1hdGNoIjsKLSAgICAgIFByaW50SWZOb3RFbXB0eShzZWNvbmRfaW5uZXJfbGlzdGVu
ZXIuc3RyKCksIGxpc3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIEV4cGxhaW5TdWNjZXNzKGZpcnN0X2lubmVyX2xpc3RlbmVyLnN0cigpLCBzZWNvbmRf
aW5uZXJfbGlzdGVuZXIuc3RyKCksCi0gICAgICAgICAgICAgICAgICAgbGlzdGVuZXIpOwotICAg
IHJldHVybiB0cnVlOwotICB9Ci0KLSBwcml2YXRlOgotICB2b2lkIEV4cGxhaW5TdWNjZXNzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBmaXJzdF9leHBsYW5hdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgc2Vjb25kX2V4cGxhbmF0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgKmxpc3Rl
bmVyIDw8ICJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCI7Ci0gICAgaWYgKGZpcnN0X2V4cGxhbmF0
aW9uICE9ICIiKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIiwgd2hlcmUgdGhlIGZpcnN0IGZpZWxk
IGlzIGEgdmFsdWUgIiA8PCBmaXJzdF9leHBsYW5hdGlvbjsKLSAgICB9Ci0gICAgaWYgKHNlY29u
ZF9leHBsYW5hdGlvbiAhPSAiIikgewotICAgICAgKmxpc3RlbmVyIDw8ICIsICI7Ci0gICAgICBp
ZiAoZmlyc3RfZXhwbGFuYXRpb24gIT0gIiIpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8ICJhbmQg
IjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAid2hlcmUgIjsKLSAgICAg
IH0KLSAgICAgICpsaXN0ZW5lciA8PCAidGhlIHNlY29uZCBmaWVsZCBpcyBhIHZhbHVlICIgPDwg
c2Vjb25kX2V4cGxhbmF0aW9uOwotICAgIH0KLSAgfQotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
Rmlyc3RUeXBlJj4gZmlyc3RfbWF0Y2hlcl87Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgU2Vjb25k
VHlwZSY+IHNlY29uZF9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFBhaXJN
YXRjaGVySW1wbCk7Ci19OwotCi0vLyBJbXBsZW1lbnRzIHBvbHltb3JwaGljIFBhaXIoZmlyc3Rf
bWF0Y2hlciwgc2Vjb25kX21hdGNoZXIpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0TWF0Y2hl
ciwgdHlwZW5hbWUgU2Vjb25kTWF0Y2hlcj4KLWNsYXNzIFBhaXJNYXRjaGVyIHsKLSBwdWJsaWM6
Ci0gIFBhaXJNYXRjaGVyKEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyLCBTZWNvbmRNYXRjaGVy
IHNlY29uZF9tYXRjaGVyKQotICAgICAgOiBmaXJzdF9tYXRjaGVyXyhmaXJzdF9tYXRjaGVyKSwg
c2Vjb25kX21hdGNoZXJfKHNlY29uZF9tYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBQYWlyVHlwZT4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxQYWlyVHlwZT4gKCkgY29uc3QgewotICAg
IHJldHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IFBhaXJNYXRjaGVySW1wbDxQYWlyVHlw
ZT4oCi0gICAgICAgICAgICBmaXJzdF9tYXRjaGVyXywgc2Vjb25kX21hdGNoZXJfKSk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIGNvbnN0IEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyXzsKLSAgY29u
c3QgU2Vjb25kTWF0Y2hlciBzZWNvbmRfbWF0Y2hlcl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhQYWlyTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJlKCkgYW5k
IEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1jbGFz
cyBFbGVtZW50c0FyZU1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8Q29udGFp
bmVyPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhDb250YWluZXIpIFJhd0NvbnRhaW5lcjsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6U3RsQ29u
dGFpbmVyVmlldzxSYXdDb250YWluZXI+IFZpZXc7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6
dHlwZSBTdGxDb250YWluZXI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6Y29uc3RfcmVmZXJl
bmNlIFN0bENvbnRhaW5lclJlZmVyZW5jZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBTdGxDb250YWlu
ZXI6OnZhbHVlX3R5cGUgRWxlbWVudDsKLQotICAvLyBDb25zdHJ1Y3RzIHRoZSBtYXRjaGVyIGZy
b20gYSBzZXF1ZW5jZSBvZiBlbGVtZW50IHZhbHVlcyBvcgotICAvLyBlbGVtZW50IG1hdGNoZXJz
LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyPgotICBFbGVtZW50c0FyZU1hdGNoZXJJ
bXBsKElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QpIHsKLSAgICB3aGlsZSAoZmlyc3Qg
IT0gbGFzdCkgewotICAgICAgbWF0Y2hlcnNfLnB1c2hfYmFjayhNYXRjaGVyQ2FzdDxjb25zdCBF
bGVtZW50Jj4oKmZpcnN0KyspKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgd2hhdCB0
aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7Ci0gICAgaWYgKGNvdW50KCkgPT0gMCkgewotICAgICAgKm9zIDw8ICJp
cyBlbXB0eSI7Ci0gICAgfSBlbHNlIGlmIChjb3VudCgpID09IDEpIHsKLSAgICAgICpvcyA8PCAi
aGFzIDEgZWxlbWVudCB0aGF0ICI7Ci0gICAgICBtYXRjaGVyc19bMF0uRGVzY3JpYmVUbyhvcyk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAiaGFzICIgPDwgRWxlbWVudHMoY291bnQoKSkg
PDwgIiB3aGVyZVxuIjsKLSAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50KCk7ICsr
aSkgewotICAgICAgICAqb3MgPDwgImVsZW1lbnQgIyIgPDwgaSA8PCAiICI7Ci0gICAgICAgIG1h
dGNoZXJzX1tpXS5EZXNjcmliZVRvKG9zKTsKLSAgICAgICAgaWYgKGkgKyAxIDwgY291bnQoKSkg
ewotICAgICAgICAgICpvcyA8PCAiLFxuIjsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAg
fQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgZG9l
cy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0IHsKLSAgICBpZiAoY291bnQoKSA9PSAwKSB7Ci0gICAgICAqb3MgPDwgImlzbid0IGVt
cHR5IjsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqb3MgPDwgImRvZXNuJ3QgaGF2ZSAi
IDw8IEVsZW1lbnRzKGNvdW50KCkpIDw8ICIsIG9yXG4iOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpICE9IGNvdW50KCk7ICsraSkgewotICAgICAgKm9zIDw8ICJlbGVtZW50ICMiIDw8IGkgPDwg
IiAiOwotICAgICAgbWF0Y2hlcnNfW2ldLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgICBp
ZiAoaSArIDEgPCBjb3VudCgpKSB7Ci0gICAgICAgICpvcyA8PCAiLCBvclxuIjsKLSAgICAgIH0K
LSAgICB9Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENvbnRhaW5lciBj
b250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBUbyB3b3JrIHdpdGggc3RyZWFtLWxpa2Ug
ImNvbnRhaW5lcnMiLCB3ZSBtdXN0IG9ubHkgd2FsawotICAgIC8vIHRocm91Z2ggdGhlIGVsZW1l
bnRzIGluIG9uZSBwYXNzLgotCi0gICAgY29uc3QgYm9vbCBsaXN0ZW5lcl9pbnRlcmVzdGVkID0g
bGlzdGVuZXItPklzSW50ZXJlc3RlZCgpOwotCi0gICAgLy8gZXhwbGFuYXRpb25zW2ldIGlzIHRo
ZSBleHBsYW5hdGlvbiBvZiB0aGUgZWxlbWVudCBhdCBpbmRleCBpLgotICAgIDo6c3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IGV4cGxhbmF0aW9ucyhjb3VudCgpKTsKLSAgICBTdGxDb250YWluZXJS
ZWZlcmVuY2Ugc3RsX2NvbnRhaW5lciA9IFZpZXc6OkNvbnN0UmVmZXJlbmNlKGNvbnRhaW5lcik7
Ci0gICAgdHlwZW5hbWUgU3RsQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0bF9jb250
YWluZXIuYmVnaW4oKTsKLSAgICBzaXplX3QgZXhhbV9wb3MgPSAwOwotICAgIGJvb2wgbWlzbWF0
Y2hfZm91bmQgPSBmYWxzZTsgIC8vIEhhdmUgd2UgZm91bmQgYSBtaXNtYXRjaGVkIGVsZW1lbnQg
eWV0PwotCi0gICAgLy8gR28gdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIG1hdGNoZXJzIGluIHBh
aXJzLCB1bnRpbCB3ZSByZWFjaAotICAgIC8vIHRoZSBlbmQgb2YgZWl0aGVyIHRoZSBlbGVtZW50
cyBvciB0aGUgbWF0Y2hlcnMsIG9yIHVudGlsIHdlIGZpbmQgYQotICAgIC8vIG1pc21hdGNoLgot
ICAgIGZvciAoOyBpdCAhPSBzdGxfY29udGFpbmVyLmVuZCgpICYmIGV4YW1fcG9zICE9IGNvdW50
KCk7ICsraXQsICsrZXhhbV9wb3MpIHsKLSAgICAgIGJvb2wgbWF0Y2g7ICAvLyBEb2VzIHRoZSBj
dXJyZW50IGVsZW1lbnQgbWF0Y2ggdGhlIGN1cnJlbnQgbWF0Y2hlcj8KLSAgICAgIGlmIChsaXN0
ZW5lcl9pbnRlcmVzdGVkKSB7Ci0gICAgICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgczsK
LSAgICAgICAgbWF0Y2ggPSBtYXRjaGVyc19bZXhhbV9wb3NdLk1hdGNoQW5kRXhwbGFpbigqaXQs
ICZzKTsKLSAgICAgICAgZXhwbGFuYXRpb25zW2V4YW1fcG9zXSA9IHMuc3RyKCk7Ci0gICAgICB9
IGVsc2UgewotICAgICAgICBtYXRjaCA9IG1hdGNoZXJzX1tleGFtX3Bvc10uTWF0Y2hlcygqaXQp
OwotICAgICAgfQotCi0gICAgICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgIG1pc21hdGNoX2ZvdW5k
ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIElmIG1pc21h
dGNoX2ZvdW5kIGlzIHRydWUsICdleGFtX3BvcycgaXMgdGhlIGluZGV4IG9mIHRoZSBtaXNtYXRj
aC4KLQotICAgIC8vIEZpbmQgaG93IG1hbnkgZWxlbWVudHMgdGhlIGFjdHVhbCBjb250YWluZXIg
aGFzLiAgV2UgYXZvaWQKLSAgICAvLyBjYWxsaW5nIHNpemUoKSBzLnQuIHRoaXMgY29kZSB3b3Jr
cyBmb3Igc3RyZWFtLWxpa2UgImNvbnRhaW5lcnMiCi0gICAgLy8gdGhhdCBkb24ndCBkZWZpbmUg
c2l6ZSgpLgotICAgIHNpemVfdCBhY3R1YWxfY291bnQgPSBleGFtX3BvczsKLSAgICBmb3IgKDsg
aXQgIT0gc3RsX2NvbnRhaW5lci5lbmQoKTsgKytpdCkgewotICAgICAgKythY3R1YWxfY291bnQ7
Ci0gICAgfQotCi0gICAgaWYgKGFjdHVhbF9jb3VudCAhPSBjb3VudCgpKSB7Ci0gICAgICAvLyBU
aGUgZWxlbWVudCBjb3VudCBkb2Vzbid0IG1hdGNoLiAgSWYgdGhlIGNvbnRhaW5lciBpcyBlbXB0
eSwKLSAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byBleHBsYWluIGFueXRoaW5nIGFzIEdvb2ds
ZSBNb2NrIGFscmVhZHkKLSAgICAgIC8vIHByaW50cyB0aGUgZW1wdHkgY29udGFpbmVyLiAgT3Ro
ZXJ3aXNlIHdlIGp1c3QgbmVlZCB0byBzaG93Ci0gICAgICAvLyBob3cgbWFueSBlbGVtZW50cyB0
aGVyZSBhY3R1YWxseSBhcmUuCi0gICAgICBpZiAobGlzdGVuZXJfaW50ZXJlc3RlZCAmJiAoYWN0
dWFsX2NvdW50ICE9IDApKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaGFzICIgPDwg
RWxlbWVudHMoYWN0dWFsX2NvdW50KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICBpZiAobWlzbWF0Y2hfZm91bmQpIHsKLSAgICAgIC8vIFRoZSBlbGVtZW50IGNv
dW50IG1hdGNoZXMsIGJ1dCB0aGUgZXhhbV9wb3MtdGggZWxlbWVudCBkb2Vzbid0IG1hdGNoLgot
ICAgICAgaWYgKGxpc3RlbmVyX2ludGVyZXN0ZWQpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8ICJ3
aG9zZSBlbGVtZW50ICMiIDw8IGV4YW1fcG9zIDw8ICIgZG9lc24ndCBtYXRjaCI7Ci0gICAgICAg
IFByaW50SWZOb3RFbXB0eShleHBsYW5hdGlvbnNbZXhhbV9wb3NdLCBsaXN0ZW5lci0+c3RyZWFt
KCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIEV2ZXJ5
IGVsZW1lbnQgbWF0Y2hlcyBpdHMgZXhwZWN0YXRpb24uICBXZSBuZWVkIHRvIGV4cGxhaW4gd2h5
Ci0gICAgLy8gKHRoZSBvYnZpb3VzIG9uZXMgY2FuIGJlIHNraXBwZWQpLgotICAgIGlmIChsaXN0
ZW5lcl9pbnRlcmVzdGVkKSB7Ci0gICAgICBib29sIHJlYXNvbl9wcmludGVkID0gZmFsc2U7Ci0g
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudCgpOyArK2kpIHsKLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHMgPSBleHBsYW5hdGlvbnNbaV07Ci0gICAgICAgIGlmICghcy5lbXB0
eSgpKSB7Ci0gICAgICAgICAgaWYgKHJlYXNvbl9wcmludGVkKSB7Ci0gICAgICAgICAgICAqbGlz
dGVuZXIgPDwgIixcbmFuZCAiOwotICAgICAgICAgIH0KLSAgICAgICAgICAqbGlzdGVuZXIgPDwg
Indob3NlIGVsZW1lbnQgIyIgPDwgaSA8PCAiIG1hdGNoZXMsICIgPDwgczsKLSAgICAgICAgICBy
ZWFzb25fcHJpbnRlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0
dXJuIHRydWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBNZXNzYWdlIEVsZW1lbnRzKHNp
emVfdCBjb3VudCkgewotICAgIHJldHVybiBNZXNzYWdlKCkgPDwgY291bnQgPDwgKGNvdW50ID09
IDEgPyAiIGVsZW1lbnQiIDogIiBlbGVtZW50cyIpOwotICB9Ci0KLSAgc2l6ZV90IGNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbWF0Y2hlcnNfLnNpemUoKTsgfQotCi0gIDo6c3RkOjp2ZWN0b3I8TWF0
Y2hlcjxjb25zdCBFbGVtZW50Jj4gPiBtYXRjaGVyc187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhFbGVtZW50c0FyZU1hdGNoZXJJbXBsKTsKLX07Ci0KLS8vIENvbm5lY3Rpdml0eSBtYXRy
aXggb2YgKGVsZW1lbnRzIFggbWF0Y2hlcnMpLCBpbiBlbGVtZW50LW1ham9yIG9yZGVyLgotLy8g
SW5pdGlhbGx5LCB0aGVyZSBhcmUgbm8gZWRnZXMuCi0vLyBVc2UgTmV4dEdyYXBoKCkgdG8gaXRl
cmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBlZGdlIGNvbmZpZ3VyYXRpb25zLgotLy8gVXNlIFJhbmRv
bWl6ZSgpIHRvIGdlbmVyYXRlIGEgcmFuZG9tIGVkZ2UgY29uZmlndXJhdGlvbi4KLWNsYXNzIEdU
RVNUX0FQSV8gTWF0Y2hNYXRyaXggewotIHB1YmxpYzoKLSAgTWF0Y2hNYXRyaXgoc2l6ZV90IG51
bV9lbGVtZW50cywgc2l6ZV90IG51bV9tYXRjaGVycykKLSAgICAgIDogbnVtX2VsZW1lbnRzXyhu
dW1fZWxlbWVudHMpLAotICAgICAgICBudW1fbWF0Y2hlcnNfKG51bV9tYXRjaGVycyksCi0gICAg
ICAgIG1hdGNoZWRfKG51bV9lbGVtZW50c18qIG51bV9tYXRjaGVyc18sIDApIHsKLSAgfQotCi0g
IHNpemVfdCBMaHNTaXplKCkgY29uc3QgeyByZXR1cm4gbnVtX2VsZW1lbnRzXzsgfQotICBzaXpl
X3QgUmhzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG51bV9tYXRjaGVyc187IH0KLSAgYm9vbCBIYXNF
ZGdlKHNpemVfdCBpbGhzLCBzaXplX3QgaXJocykgY29uc3QgewotICAgIHJldHVybiBtYXRjaGVk
X1tTcGFjZUluZGV4KGlsaHMsIGlyaHMpXSA9PSAxOwotICB9Ci0gIHZvaWQgU2V0RWRnZShzaXpl
X3QgaWxocywgc2l6ZV90IGlyaHMsIGJvb2wgYikgewotICAgIG1hdGNoZWRfW1NwYWNlSW5kZXgo
aWxocywgaXJocyldID0gYiA/IDEgOiAwOwotICB9Ci0KLSAgLy8gVHJlYXRpbmcgdGhlIGNvbm5l
Y3Rpdml0eSBtYXRyaXggYXMgYSAoTGhzU2l6ZSgpKlJoc1NpemUoKSktYml0IG51bWJlciwKLSAg
Ly8gYWRkcyAxIHRvIHRoYXQgbnVtYmVyOyByZXR1cm5zIGZhbHNlIGlmIGluY3JlbWVudGluZyB0
aGUgZ3JhcGggbGVmdCBpdAotICAvLyBlbXB0eS4KLSAgYm9vbCBOZXh0R3JhcGgoKTsKLQotICB2
b2lkIFJhbmRvbWl6ZSgpOwotCi0gIHN0ZDo6c3RyaW5nIERlYnVnU3RyaW5nKCkgY29uc3Q7Ci0K
LSBwcml2YXRlOgotICBzaXplX3QgU3BhY2VJbmRleChzaXplX3QgaWxocywgc2l6ZV90IGlyaHMp
IGNvbnN0IHsKLSAgICByZXR1cm4gaWxocyAqIG51bV9tYXRjaGVyc18gKyBpcmhzOwotICB9Ci0K
LSAgc2l6ZV90IG51bV9lbGVtZW50c187Ci0gIHNpemVfdCBudW1fbWF0Y2hlcnNfOwotCi0gIC8v
IEVhY2ggZWxlbWVudCBpcyBhIGNoYXIgaW50ZXJwcmV0ZWQgYXMgYm9vbC4gVGhleSBhcmUgc3Rv
cmVkIGFzIGEKLSAgLy8gZmxhdHRlbmVkIGFycmF5IGluIGxocy1tYWpvciBvcmRlciwgdXNlICdT
cGFjZUluZGV4KCknIHRvIHRyYW5zbGF0ZQotICAvLyBhIChpbGhzLCBpcmhzKSBtYXRyaXggY29v
cmRpbmF0ZSBpbnRvIGFuIG9mZnNldC4KLSAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBtYXRjaGVkXzsK
LX07Ci0KLXR5cGVkZWYgOjpzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IEVsZW1lbnRNYXRjaGVy
UGFpcjsKLXR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxFbGVtZW50TWF0Y2hlclBhaXI+IEVsZW1lbnRN
YXRjaGVyUGFpcnM7Ci0KLS8vIFJldHVybnMgYSBtYXhpbXVtIGJpcGFydGl0ZSBtYXRjaGluZyBm
b3IgdGhlIHNwZWNpZmllZCBncmFwaCAnZycuCi0vLyBUaGUgbWF0Y2hpbmcgaXMgcmVwcmVzZW50
ZWQgYXMgYSB2ZWN0b3Igb2Yge2VsZW1lbnQsIG1hdGNoZXJ9IHBhaXJzLgotR1RFU1RfQVBJXyBF
bGVtZW50TWF0Y2hlclBhaXJzCi1GaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcoY29uc3QgTWF0Y2hN
YXRyaXgmIGcpOwotCi1HVEVTVF9BUElfIGJvb2wgRmluZFBhaXJpbmcoY29uc3QgTWF0Y2hNYXRy
aXgmIG1hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcik7Ci0KLS8vIFVudHlwZWQgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5n
IFVub3JkZXJlZEVsZW1lbnRzQXJlLiAgQnkKLS8vIHB1dHRpbmcgbG9naWMgdGhhdCdzIG5vdCBz
cGVjaWZpYyB0byB0aGUgZWxlbWVudCB0eXBlIGhlcmUsIHdlCi0vLyByZWR1Y2UgYmluYXJ5IGJs
b2F0IGFuZCBpbmNyZWFzZSBjb21waWxhdGlvbiBzcGVlZC4KLWNsYXNzIEdURVNUX0FQSV8gVW5v
cmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1wbEJhc2UgewotIHByb3RlY3RlZDoKLSAgLy8gQSB2
ZWN0b3Igb2YgbWF0Y2hlciBkZXNjcmliZXJzLCBvbmUgZm9yIGVhY2ggZWxlbWVudCBtYXRjaGVy
LgotICAvLyBEb2VzIG5vdCBvd24gdGhlIGRlc2NyaWJlcnMgKGFuZCB0aHVzIGNhbiBiZSB1c2Vk
IG9ubHkgd2hlbiB0aGUKLSAgLy8gZWxlbWVudCBtYXRjaGVycyBhcmUgYWxpdmUpLgotICB0eXBl
ZGVmIDo6c3RkOjp2ZWN0b3I8Y29uc3QgTWF0Y2hlckRlc2NyaWJlckludGVyZmFjZSo+IE1hdGNo
ZXJEZXNjcmliZXJWZWM7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoaXMgVW5vcmRlcmVkRWxlbWVudHNB
cmUgbWF0Y2hlci4KLSAgdm9pZCBEZXNjcmliZVRvSW1wbCg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0OwotCi0gIC8vIERlc2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBVbm9yZGVyZWRFbGVt
ZW50c0FyZSBtYXRjaGVyLgotICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ub0ltcGwoOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdDsKLQotICBib29sIFZlcmlmeUFsbEVsZW1lbnRzQW5kTWF0Y2hlcnNB
cmVNYXRjaGVkKAotICAgICAgY29uc3QgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGVsZW1l
bnRfcHJpbnRvdXRzLAotICAgICAgY29uc3QgTWF0Y2hNYXRyaXgmIG1hdHJpeCwgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0OwotCi0gIE1hdGNoZXJEZXNjcmliZXJWZWMmIG1h
dGNoZXJfZGVzY3JpYmVycygpIHsKLSAgICByZXR1cm4gbWF0Y2hlcl9kZXNjcmliZXJzXzsKLSAg
fQotCi0gIHN0YXRpYyBNZXNzYWdlIEVsZW1lbnRzKHNpemVfdCBuKSB7Ci0gICAgcmV0dXJuIE1l
c3NhZ2UoKSA8PCBuIDw8ICIgZWxlbWVudCIgPDwgKG4gPT0gMSA/ICIiIDogInMiKTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgTWF0Y2hlckRlc2NyaWJlclZlYyBtYXRjaGVyX2Rlc2NyaWJlcnNfOwot
Ci0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1w
bEJhc2UpOwotfTsKLQotLy8gSW1wbGVtZW50cyB1bm9yZGVyZWQgRWxlbWVudHNBcmUgYW5kIHVu
b3JkZXJlZCBFbGVtZW50c0FyZUFycmF5LgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4K
LWNsYXNzIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGwKLSAgICA6IHB1YmxpYyBNYXRj
aGVySW50ZXJmYWNlPENvbnRhaW5lcj4sCi0gICAgICBwdWJsaWMgVW5vcmRlcmVkRWxlbWVudHNB
cmVNYXRjaGVySW1wbEJhc2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBHVEVTVF9SRU1PVkVfUkVG
RVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKSBSYXdDb250YWluZXI7Ci0gIHR5cGVkZWYgaW50
ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPiBWaWV3OwotICB0eXBlZGVmIHR5
cGVuYW1lIFZpZXc6OnR5cGUgU3RsQ29udGFpbmVyOwotICB0eXBlZGVmIHR5cGVuYW1lIFZpZXc6
OmNvbnN0X3JlZmVyZW5jZSBTdGxDb250YWluZXJSZWZlcmVuY2U7Ci0gIHR5cGVkZWYgdHlwZW5h
bWUgU3RsQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBTdGxDb250YWluZXJDb25zdEl0ZXJhdG9y
OwotICB0eXBlZGVmIHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBFbGVtZW50Owot
Ci0gIC8vIENvbnN0cnVjdHMgdGhlIG1hdGNoZXIgZnJvbSBhIHNlcXVlbmNlIG9mIGVsZW1lbnQg
dmFsdWVzIG9yCi0gIC8vIGVsZW1lbnQgbWF0Y2hlcnMuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJ
bnB1dEl0ZXI+Ci0gIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGwoSW5wdXRJdGVyIGZp
cnN0LCBJbnB1dEl0ZXIgbGFzdCkgewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0
KSB7Ci0gICAgICBtYXRjaGVyc18ucHVzaF9iYWNrKE1hdGNoZXJDYXN0PGNvbnN0IEVsZW1lbnQm
PigqZmlyc3QpKTsKLSAgICAgIG1hdGNoZXJfZGVzY3JpYmVycygpLnB1c2hfYmFjayhtYXRjaGVy
c18uYmFjaygpLkdldERlc2NyaWJlcigpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZXNjcmliZXMg
d2hhdCB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgcmV0dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0
Y2hlckltcGxCYXNlOjpEZXNjcmliZVRvSW1wbChvcyk7Ci0gIH0KLQotICAvLyBEZXNjcmliZXMg
d2hhdCB0aGUgbmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIGRvZXMuCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgcmV0dXJu
IFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlOjpEZXNjcmliZU5lZ2F0aW9uVG9J
bXBsKG9zKTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFpbmVy
IGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIFN0bENvbnRhaW5lclJlZmVyZW5jZSBzdGxf
Y29udGFpbmVyID0gVmlldzo6Q29uc3RSZWZlcmVuY2UoY29udGFpbmVyKTsKLSAgICA6OnN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBlbGVtZW50X3ByaW50b3V0czsKLSAgICBNYXRjaE1hdHJpeCBt
YXRyaXggPSBBbmFseXplRWxlbWVudHMoc3RsX2NvbnRhaW5lci5iZWdpbigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGxfY29udGFpbmVyLmVuZCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZWxlbWVudF9wcmludG91dHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKTsKLQot
ICAgIGNvbnN0IHNpemVfdCBhY3R1YWxfY291bnQgPSBtYXRyaXguTGhzU2l6ZSgpOwotICAgIGlm
IChhY3R1YWxfY291bnQgPT0gMCAmJiBtYXRjaGVyc18uZW1wdHkoKSkgewotICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIGlmIChhY3R1YWxfY291bnQgIT0gbWF0Y2hlcnNfLnNpemUoKSkg
ewotICAgICAgLy8gVGhlIGVsZW1lbnQgY291bnQgZG9lc24ndCBtYXRjaC4gIElmIHRoZSBjb250
YWluZXIgaXMgZW1wdHksCi0gICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbGFpbiBhbnl0
aGluZyBhcyBHb29nbGUgTW9jayBhbHJlYWR5Ci0gICAgICAvLyBwcmludHMgdGhlIGVtcHR5IGNv
bnRhaW5lci4gT3RoZXJ3aXNlIHdlIGp1c3QgbmVlZCB0byBzaG93Ci0gICAgICAvLyBob3cgbWFu
eSBlbGVtZW50cyB0aGVyZSBhY3R1YWxseSBhcmUuCi0gICAgICBpZiAoYWN0dWFsX2NvdW50ICE9
IDAgJiYgbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAi
d2hpY2ggaGFzICIgPDwgRWxlbWVudHMoYWN0dWFsX2NvdW50KTsKLSAgICAgIH0KLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVmVyaWZ5QWxsRWxlbWVudHNBbmRNYXRj
aGVyc0FyZU1hdGNoZWQoZWxlbWVudF9wcmludG91dHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeCwgbGlzdGVuZXIpICYmCi0gICAgICAg
ICAgIEZpbmRQYWlyaW5nKG1hdHJpeCwgbGlzdGVuZXIpOwotICB9Ci0KLSBwcml2YXRlOgotICB0
eXBlZGVmIDo6c3RkOjp2ZWN0b3I8TWF0Y2hlcjxjb25zdCBFbGVtZW50Jj4gPiBNYXRjaGVyVmVj
OwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50SXRlcj4KLSAgTWF0Y2hNYXRyaXggQW5h
bHl6ZUVsZW1lbnRzKEVsZW1lbnRJdGVyIGVsZW1fZmlyc3QsIEVsZW1lbnRJdGVyIGVsZW1fbGFz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+KiBlbGVtZW50X3ByaW50b3V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgZWxlbWVudF9wcmludG91
dHMtPmNsZWFyKCk7Ci0gICAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBkaWRfbWF0Y2g7Ci0gICAgc2l6
ZV90IG51bV9lbGVtZW50cyA9IDA7Ci0gICAgZm9yICg7IGVsZW1fZmlyc3QgIT0gZWxlbV9sYXN0
OyArK251bV9lbGVtZW50cywgKytlbGVtX2ZpcnN0KSB7Ci0gICAgICBpZiAobGlzdGVuZXItPklz
SW50ZXJlc3RlZCgpKSB7Ci0gICAgICAgIGVsZW1lbnRfcHJpbnRvdXRzLT5wdXNoX2JhY2soUHJp
bnRUb1N0cmluZygqZWxlbV9maXJzdCkpOwotICAgICAgfQotICAgICAgZm9yIChzaXplX3QgaXJo
cyA9IDA7IGlyaHMgIT0gbWF0Y2hlcnNfLnNpemUoKTsgKytpcmhzKSB7Ci0gICAgICAgIGRpZF9t
YXRjaC5wdXNoX2JhY2soTWF0Y2hlcyhtYXRjaGVyc19baXJoc10pKCplbGVtX2ZpcnN0KSk7Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgTWF0Y2hNYXRyaXggbWF0cml4KG51bV9lbGVtZW50cywgbWF0
Y2hlcnNfLnNpemUoKSk7Ci0gICAgOjpzdGQ6OnZlY3RvcjxjaGFyPjo6Y29uc3RfaXRlcmF0b3Ig
ZGlkX21hdGNoX2l0ZXIgPSBkaWRfbWF0Y2guYmVnaW4oKTsKLSAgICBmb3IgKHNpemVfdCBpbGhz
ID0gMDsgaWxocyAhPSBudW1fZWxlbWVudHM7ICsraWxocykgewotICAgICAgZm9yIChzaXplX3Qg
aXJocyA9IDA7IGlyaHMgIT0gbWF0Y2hlcnNfLnNpemUoKTsgKytpcmhzKSB7Ci0gICAgICAgIG1h
dHJpeC5TZXRFZGdlKGlsaHMsIGlyaHMsICpkaWRfbWF0Y2hfaXRlcisrICE9IDApOwotICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gbWF0cml4OwotICB9Ci0KLSAgTWF0Y2hlclZlYyBtYXRjaGVy
c187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNo
ZXJJbXBsKTsKLX07Ci0KLS8vIEZ1bmN0b3IgZm9yIHVzZSBpbiBUcmFuc2Zvcm1UdXBsZS4KLS8v
IFBlcmZvcm1zIE1hdGNoZXJDYXN0PFRhcmdldD4gb24gYW4gaW5wdXQgYXJndW1lbnQgb2YgYW55
IHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0Pgotc3RydWN0IENhc3RBbmRBcHBlbmRU
cmFuc2Zvcm0gewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnPgotICBNYXRjaGVyPFRhcmdldD4g
b3BlcmF0b3IoKShjb25zdCBBcmcmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gTWF0Y2hlckNhc3Q8
VGFyZ2V0PihhKTsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyBVbm9yZGVyZWRFbGVtZW50c0Fy
ZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVwbGU+Ci1jbGFzcyBVbm9yZGVyZWRFbGVt
ZW50c0FyZU1hdGNoZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVW5vcmRlcmVkRWxlbWVudHNB
cmVNYXRjaGVyKGNvbnN0IE1hdGNoZXJUdXBsZSYgYXJncykKLSAgICAgIDogbWF0Y2hlcnNfKGFy
Z3MpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0
Y2hlcjxDb250YWluZXI+KCkgY29uc3QgewotICAgIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVS
RU5DRV9BTkRfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPjo6dHlwZSBWaWV3
OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6dmFsdWVfdHlwZSBFbGVtZW50OwotICAgIHR5
cGVkZWYgOjpzdGQ6OnZlY3RvcjxNYXRjaGVyPGNvbnN0IEVsZW1lbnQmPiA+IE1hdGNoZXJWZWM7
Ci0gICAgTWF0Y2hlclZlYyBtYXRjaGVyczsKLSAgICBtYXRjaGVycy5yZXNlcnZlKDo6dGVzdGlu
Zzo6dHVwbGVfc2l6ZTxNYXRjaGVyVHVwbGU+Ojp2YWx1ZSk7Ci0gICAgVHJhbnNmb3JtVHVwbGVW
YWx1ZXMoQ2FzdEFuZEFwcGVuZFRyYW5zZm9ybTxjb25zdCBFbGVtZW50Jj4oKSwgbWF0Y2hlcnNf
LAotICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpiYWNrX2luc2VydGVyKG1hdGNoZXJz
KSk7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNo
ZXJJbXBsPENvbnRhaW5lcj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVycy5i
ZWdpbigpLCBtYXRjaGVycy5lbmQoKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBNYXRj
aGVyVHVwbGUgbWF0Y2hlcnNfOwotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFVub3JkZXJlZEVs
ZW1lbnRzQXJlTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJlLgotdGVt
cGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZT4KLWNsYXNzIEVsZW1lbnRzQXJlTWF0Y2hlciB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBFbGVtZW50c0FyZU1hdGNoZXIoY29uc3QgTWF0Y2hlclR1
cGxlJiBhcmdzKSA6IG1hdGNoZXJzXyhhcmdzKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBD
b250YWluZXI+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8Q29udGFpbmVyPigpIGNvbnN0IHsKLSAgICB0
eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIpIFJhd0Nv
bnRhaW5lcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3
PFJhd0NvbnRhaW5lcj46OnR5cGUgVmlldzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFZpZXc6OnZh
bHVlX3R5cGUgRWxlbWVudDsKLSAgICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8TWF0Y2hlcjxjb25z
dCBFbGVtZW50Jj4gPiBNYXRjaGVyVmVjOwotICAgIE1hdGNoZXJWZWMgbWF0Y2hlcnM7Ci0gICAg
bWF0Y2hlcnMucmVzZXJ2ZSg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8TWF0Y2hlclR1cGxlPjo6dmFs
dWUpOwotICAgIFRyYW5zZm9ybVR1cGxlVmFsdWVzKENhc3RBbmRBcHBlbmRUcmFuc2Zvcm08Y29u
c3QgRWxlbWVudCY+KCksIG1hdGNoZXJzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0
ZDo6YmFja19pbnNlcnRlcihtYXRjaGVycykpOwotICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcg
RWxlbWVudHNBcmVNYXRjaGVySW1wbDxDb250YWluZXI+KAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hlcnMuYmVnaW4oKSwgbWF0Y2hlcnMuZW5kKCkpKTsKLSAgfQotCi0gcHJpdmF0
ZToKLSAgY29uc3QgTWF0Y2hlclR1cGxlIG1hdGNoZXJzXzsKLSAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhFbGVtZW50c0FyZU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVub3JkZXJl
ZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIFVub3JkZXJlZEVsZW1lbnRz
QXJlQXJyYXlNYXRjaGVyKCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4KLSAgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXIoSXRlciBmaXJzdCwgSXRlciBsYXN0KQotICAg
ICAgOiBtYXRjaGVyc18oZmlyc3QsIGxhc3QpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3QgewotICAgIHJl
dHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hl
ckltcGw8Q29udGFpbmVyPihtYXRjaGVyc18uYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVyc18uZW5kKCkpKTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgOjpzdGQ6OnZlY3RvcjxUPiBtYXRjaGVyc187Ci0KLSAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlcik7Ci19Owot
Ci0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgRWxlbWVudHNBcmVBcnJheU1hdGNoZXIgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIEl0ZXI+Ci0gIEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyKEl0ZXIgZmlyc3QsIEl0
ZXIgbGFzdCkgOiBtYXRjaGVyc18oZmlyc3QsIGxhc3QpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIENvbnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3Qgewot
ICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgRWxlbWVudHNBcmVNYXRjaGVySW1wbDxDb250YWlu
ZXI+KAotICAgICAgICBtYXRjaGVyc18uYmVnaW4oKSwgbWF0Y2hlcnNfLmVuZCgpKSk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIGNvbnN0IDo6c3RkOjp2ZWN0b3I8VD4gbWF0Y2hlcnNfOwotCi0gIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oRWxlbWVudHNBcmVBcnJheU1hdGNoZXIpOwotfTsKLQotLy8g
R2l2ZW4gYSAyLXR1cGxlIG1hdGNoZXIgdG0gb2YgdHlwZSBUdXBsZTJNYXRjaGVyIGFuZCBhIHZh
bHVlIHNlY29uZAotLy8gb2YgdHlwZSBTZWNvbmQsIEJvdW5kU2Vjb25kTWF0Y2hlcjxUdXBsZTJN
YXRjaGVyLCBTZWNvbmQ+KHRtLAotLy8gc2Vjb25kKSBpcyBhIHBvbHltb3JwaGljIG1hdGNoZXIg
dGhhdCBtYXRjaGVzIGEgdmFsdWUgeCBpZmYgdG0KLS8vIG1hdGNoZXMgdHVwbGUgKHgsIHNlY29u
ZCkuICBVc2VmdWwgZm9yIGltcGxlbWVudGluZwotLy8gVW5vcmRlcmVkUG9pbnR3aXNlKCkgaW4g
dGVybXMgb2YgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgpLgotLy8KLS8vIEJvdW5kU2Vjb25k
TWF0Y2hlciBpcyBjb3B5YWJsZSBhbmQgYXNzaWduYWJsZSwgYXMgd2UgbmVlZCB0byBwdXQKLS8v
IGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGluIGEgdmVjdG9yIHdoZW4gaW1wbGVtZW50aW5nCi0v
LyBVbm9yZGVyZWRQb2ludHdpc2UoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZTJNYXRjaGVy
LCB0eXBlbmFtZSBTZWNvbmQ+Ci1jbGFzcyBCb3VuZFNlY29uZE1hdGNoZXIgewotIHB1YmxpYzoK
LSAgQm91bmRTZWNvbmRNYXRjaGVyKGNvbnN0IFR1cGxlMk1hdGNoZXImIHRtLCBjb25zdCBTZWNv
bmQmIHNlY29uZCkKLSAgICAgIDogdHVwbGUyX21hdGNoZXJfKHRtKSwgc2Vjb25kX3ZhbHVlXyhz
ZWNvbmQpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8
VD4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPFQ+KHR1cGxlMl9t
YXRjaGVyXywgc2Vjb25kX3ZhbHVlXykpOwotICB9Ci0KLSAgLy8gV2UgaGF2ZSB0byBkZWZpbmUg
dGhpcyBmb3IgVW5vcmRlcmVkUG9pbnR3aXNlKCkgdG8gY29tcGlsZSBpbgotICAvLyBDKys5OCBt
b2RlLCBhcyBpdCBwdXRzIEJvdW5kU2Vjb25kTWF0Y2hlciBpbnN0YW5jZXMgaW4gYSB2ZWN0b3Is
Ci0gIC8vIHdoaWNoIHJlcXVpcmVzIHRoZSBlbGVtZW50cyB0byBiZSBhc3NpZ25hYmxlIGluIEMr
Kzk4LiAgVGhlCi0gIC8vIGNvbXBpbGVyIGNhbm5vdCBnZW5lcmF0ZSB0aGUgb3BlcmF0b3I9IGZv
ciB1cywgYXMgVHVwbGUyTWF0Y2hlcgotICAvLyBhbmQgU2Vjb25kIG1heSBub3QgYmUgYXNzaWdu
YWJsZS4KLSAgLy8KLSAgLy8gSG93ZXZlciwgdGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLCBz
byB0aGUgaW1wbGVtZW50YXRpb24ganVzdAotICAvLyBuZWVkIHRvIGFzc2VydC4KLSAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgQm91bmRTZWNvbmRNYXRjaGVyJiAvKnJocyovKSB7Ci0gICAgR1RFU1Rf
TE9HXyhGQVRBTCkgPDwgIkJvdW5kU2Vjb25kTWF0Y2hlciBzaG91bGQgbmV2ZXIgYmUgYXNzaWdu
ZWQuIjsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNsYXNz
IEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0gICBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQsIFNlY29uZD4gQXJnVHVwbGU7Ci0KLSAgICBJbXBsKGNv
bnN0IFR1cGxlMk1hdGNoZXImIHRtLCBjb25zdCBTZWNvbmQmIHNlY29uZCkKLSAgICAgICAgOiBt
b25vX3R1cGxlMl9tYXRjaGVyXyhTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgQXJnVHVwbGUmPih0bSkp
LAotICAgICAgICAgIHNlY29uZF92YWx1ZV8oc2Vjb25kKSB7fQotCi0gICAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImFu
ZCAiOwotICAgICAgVW5pdmVyc2FsUHJpbnQoc2Vjb25kX3ZhbHVlXywgb3MpOwotICAgICAgKm9z
IDw8ICIgIjsKLSAgICAgIG1vbm9fdHVwbGUyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAg
IH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAgcmV0dXJuIG1vbm9fdHVwbGUyX21hdGNo
ZXJfLk1hdGNoQW5kRXhwbGFpbihBcmdUdXBsZSh4LCBzZWNvbmRfdmFsdWVfKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIpOwotICAg
IH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBNYXRjaGVyPGNvbnN0IEFyZ1R1cGxlJj4gbW9u
b190dXBsZTJfbWF0Y2hlcl87Ci0gICAgY29uc3QgU2Vjb25kIHNlY29uZF92YWx1ZV87Ci0KLSAg
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OwotCi0gIGNvbnN0IFR1cGxlMk1h
dGNoZXIgdHVwbGUyX21hdGNoZXJfOwotICBjb25zdCBTZWNvbmQgc2Vjb25kX3ZhbHVlXzsKLX07
Ci0KLS8vIEdpdmVuIGEgMi10dXBsZSBtYXRjaGVyIHRtIGFuZCBhIHZhbHVlIHNlY29uZCwKLS8v
IE1hdGNoZXJCaW5kU2Vjb25kKHRtLCBzZWNvbmQpIHJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0
Y2hlcyBhCi0vLyB2YWx1ZSB4IGlmZiB0bSBtYXRjaGVzIHR1cGxlICh4LCBzZWNvbmQpLiAgVXNl
ZnVsIGZvciBpbXBsZW1lbnRpbmcKLS8vIFVub3JkZXJlZFBvaW50d2lzZSgpIGluIHRlcm1zIG9m
IFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZTJN
YXRjaGVyLCB0eXBlbmFtZSBTZWNvbmQ+Ci1Cb3VuZFNlY29uZE1hdGNoZXI8VHVwbGUyTWF0Y2hl
ciwgU2Vjb25kPiBNYXRjaGVyQmluZFNlY29uZCgKLSAgICBjb25zdCBUdXBsZTJNYXRjaGVyJiB0
bSwgY29uc3QgU2Vjb25kJiBzZWNvbmQpIHsKLSAgcmV0dXJuIEJvdW5kU2Vjb25kTWF0Y2hlcjxU
dXBsZTJNYXRjaGVyLCBTZWNvbmQ+KHRtLCBzZWNvbmQpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBk
ZXNjcmlwdGlvbiBmb3IgYSBtYXRjaGVyIGRlZmluZWQgdXNpbmcgdGhlIE1BVENIRVIqKCkKLS8v
IG1hY3JvIHdoZXJlIHRoZSB1c2VyLXN1cHBsaWVkIGRlc2NyaXB0aW9uIHN0cmluZyBpcyAiIiwg
aWYKLS8vICduZWdhdGlvbicgaXMgZmFsc2U7IG90aGVyd2lzZSByZXR1cm5zIHRoZSBkZXNjcmlw
dGlvbiBvZiB0aGUKLS8vIG5lZ2F0aW9uIG9mIHRoZSBtYXRjaGVyLiAgJ3BhcmFtX3ZhbHVlcycg
Y29udGFpbnMgYSBsaXN0IG9mIHN0cmluZ3MKLS8vIHRoYXQgYXJlIHRoZSBwcmludC1vdXQgb2Yg
dGhlIG1hdGNoZXIncyBwYXJhbWV0ZXJzLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRN
YXRjaGVyRGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hdGNoZXJfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ3Mm
IHBhcmFtX3ZhbHVlcyk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBFbGVtZW50
c0FyZUFycmF5KGZpcnN0LCBsYXN0KQotLy8gRWxlbWVudHNBcmVBcnJheShwb2ludGVyLCBjb3Vu
dCkKLS8vIEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkpCi0vLyBFbGVtZW50c0FyZUFycmF5KGNvbnRh
aW5lcikKLS8vIEVsZW1lbnRzQXJlQXJyYXkoeyBlMSwgZTIsIC4uLiwgZW4gfSkKLS8vCi0vLyBU
aGUgRWxlbWVudHNBcmVBcnJheSgpIGZ1bmN0aW9ucyBhcmUgbGlrZSBFbGVtZW50c0FyZSguLi4p
LCBleGNlcHQKLS8vIHRoYXQgdGhleSBhcmUgZ2l2ZW4gYSBob21vZ2VuZW91cyBzZXF1ZW5jZSBy
YXRoZXIgdGhhbiB0YWtpbmcgZWFjaAotLy8gZWxlbWVudCBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50
LiBUaGUgc2VxdWVuY2UgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgotLy8gYXJyYXksIGEgcG9pbnRl
ciBhbmQgY291bnQsIGEgdmVjdG9yLCBhbiBpbml0aWFsaXplciBsaXN0LCBvciBhbgotLy8gU1RM
IGl0ZXJhdG9yIHJhbmdlLiBJbiBlYWNoIG9mIHRoZXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyBz
ZXF1ZW5jZQotLy8gY2FuIGJlIGVpdGhlciBhIHNlcXVlbmNlIG9mIHZhbHVlcyBvciBhIHNlcXVl
bmNlIG9mIG1hdGNoZXJzLgotLy8KLS8vIEFsbCBmb3JtcyBvZiBFbGVtZW50c0FyZUFycmF5KCkg
bWFrZSBhIGNvcHkgb2YgdGhlIGlucHV0IG1hdGNoZXIgc2VxdWVuY2UuCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBJdGVyPgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjwK
LSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlPgot
RWxlbWVudHNBcmVBcnJheShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpIHsKLSAgdHlwZWRlZiB0eXBl
bmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlIFQ7Ci0gIHJldHVy
biBpbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4oZmlyc3QsIGxhc3QpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJh
eU1hdGNoZXI8VD4gRWxlbWVudHNBcmVBcnJheSgKLSAgICBjb25zdCBUKiBwb2ludGVyLCBzaXpl
X3QgY291bnQpIHsKLSAgcmV0dXJuIEVsZW1lbnRzQXJlQXJyYXkocG9pbnRlciwgcG9pbnRlciAr
IGNvdW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotaW5saW5lIGlu
dGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjxUPiBFbGVtZW50c0FyZUFycmF5KAotICAg
IGNvbnN0IFQgKCZhcnJheSlbTl0pIHsKLSAgcmV0dXJuIEVsZW1lbnRzQXJlQXJyYXkoYXJyYXks
IE4pOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIGludGVybmFs
OjpFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+
Ci1FbGVtZW50c0FyZUFycmF5KGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0gIHJldHVy
biBFbGVtZW50c0FyZUFycmF5KGNvbnRhaW5lci5iZWdpbigpLCBjb250YWluZXIuZW5kKCkpOwot
fQotCi0jaWYgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXwotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+Ci1FbGVt
ZW50c0FyZUFycmF5KDo6c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHhzKSB7Ci0gIHJldHVybiBF
bGVtZW50c0FyZUFycmF5KHhzLmJlZ2luKCksIHhzLmVuZCgpKTsKLX0KLSNlbmRpZgotCi0vLyBV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGZpcnN0LCBsYXN0KQotLy8gVW5vcmRlcmVkRWxlbWVu
dHNBcmVBcnJheShwb2ludGVyLCBjb3VudCkKLS8vIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
YXJyYXkpCi0vLyBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNvbnRhaW5lcikKLS8vIFVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkoeyBlMSwgZTIsIC4uLiwgZW4gfSkKLS8vCi0vLyBUaGUgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSgpIGZ1bmN0aW9ucyBhcmUgbGlrZQotLy8gRWxlbWVudHNB
cmVBcnJheSguLi4pLCBidXQgYWxsb3cgbWF0Y2hpbmcgdGhlIGVsZW1lbnRzIGluIGFueSBvcmRl
ci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5TWF0Y2hlcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJh
aXRzPEl0ZXI+Ojp2YWx1ZV90eXBlPgotVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShJdGVyIGZp
cnN0LCBJdGVyIGxhc3QpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJh
aXRzPEl0ZXI+Ojp2YWx1ZV90eXBlIFQ7Ci0gIHJldHVybiBpbnRlcm5hbDo6VW5vcmRlcmVkRWxl
bWVudHNBcmVBcnJheU1hdGNoZXI8VD4oZmlyc3QsIGxhc3QpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNo
ZXI8VD4KLVVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29uc3QgVCogcG9pbnRlciwgc2l6ZV90
IGNvdW50KSB7Ci0gIHJldHVybiBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHBvaW50ZXIsIHBv
aW50ZXIgKyBjb3VudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLWlu
bGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4KLVVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29uc3QgVCAoJmFycmF5KVtOXSkgewotICByZXR1cm4gVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheShhcnJheSwgTik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDb250YWluZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlN
YXRjaGVyPAotICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KLVVub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXkoY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpIHsKLSAgcmV0dXJuIFVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29udGFpbmVyLmJlZ2luKCksIGNvbnRhaW5lci5lbmQo
KSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1h
dGNoZXI8VD4KLVVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoOjpzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VD4geHMpIHsKLSAgcmV0dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoeHMuYmVnaW4o
KSwgeHMuZW5kKCkpOwotfQotI2VuZGlmCi0KLS8vIF8gaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hl
cyBhbnl0aGluZyBvZiBhbnkgdHlwZS4KLS8vCi0vLyBUaGlzIGRlZmluaXRpb24gaXMgZmluZSBh
czoKLS8vCi0vLyAgIDEuIFRoZSBDKysgc3RhbmRhcmQgcGVybWl0cyB1c2luZyB0aGUgbmFtZSBf
IGluIGEgbmFtZXNwYWNlIHRoYXQKLS8vICAgICAgaXMgbm90IHRoZSBnbG9iYWwgbmFtZXNwYWNl
IG9yIDo6c3RkLgotLy8gICAyLiBUaGUgQW55dGhpbmdNYXRjaGVyIGNsYXNzIGhhcyBubyBkYXRh
IG1lbWJlciBvciBjb25zdHJ1Y3RvciwKLS8vICAgICAgc28gaXQncyBPSyB0byBjcmVhdGUgZ2xv
YmFsIHZhcmlhYmxlcyBvZiB0aGlzIHR5cGUuCi0vLyAgIDMuIGMtc3R5bGUgaGFzIGFwcHJvdmVk
IG9mIHVzaW5nIF8gaW4gdGhpcyBjYXNlLgotY29uc3QgaW50ZXJuYWw6OkFueXRoaW5nTWF0Y2hl
ciBfID0ge307Ci0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IHZhbHVlIG9m
IHRoZSBnaXZlbiB0eXBlIFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBNYXRjaGVy
PFQ+IEEoKSB7IHJldHVybiBNYWtlTWF0Y2hlcihuZXcgaW50ZXJuYWw6OkFueU1hdGNoZXJJbXBs
PFQ+KCkpOyB9Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgdmFsdWUg
b2YgdGhlIGdpdmVuIHR5cGUgVC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIE1hdGNo
ZXI8VD4gQW4oKSB7IHJldHVybiBBPFQ+KCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGlj
IG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRoaW5nIGVxdWFsIHRvIHguCi0vLyBOb3RlOiBpZiB0
aGUgcGFyYW1ldGVyIG9mIEVxKCkgd2VyZSBkZWNsYXJlZCBhcyBjb25zdCBUJiwgRXEoImZvbyIp
Ci0vLyB3b3VsZG4ndCBjb21waWxlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50
ZXJuYWw6OkVxTWF0Y2hlcjxUPiBFcShUIHgpIHsgcmV0dXJuIGludGVybmFsOjpFcU1hdGNoZXI8
VD4oeCk7IH0KLQotLy8gQ29uc3RydWN0cyBhIE1hdGNoZXI8VD4gZnJvbSBhICd2YWx1ZScgb2Yg
dHlwZSBULiAgVGhlIGNvbnN0cnVjdGVkCi0vLyBtYXRjaGVyIG1hdGNoZXMgYW55IHZhbHVlIHRo
YXQncyBlcXVhbCB0byAndmFsdWUnLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1NYXRjaGVyPFQ+
OjpNYXRjaGVyKFQgdmFsdWUpIHsgKnRoaXMgPSBFcSh2YWx1ZSk7IH0KLQotLy8gQ3JlYXRlcyBh
IG1vbm9tb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRoaW5nIHdpdGggdHlwZSBMaHMK
LS8vIGFuZCBlcXVhbCB0byByaHMuICBBIHVzZXIgbWF5IG5lZWQgdG8gdXNlIHRoaXMgaW5zdGVh
ZCBvZiBFcSguLi4pCi0vLyBpbiBvcmRlciB0byByZXNvbHZlIGFuIG92ZXJsb2FkaW5nIGFtYmln
dWl0eS4KLS8vCi0vLyBUeXBlZEVxPFQ+KHgpIGlzIGp1c3QgYSBjb252ZW5pZW50IHNob3J0LWhh
bmQgZm9yIE1hdGNoZXI8VD4oRXEoeCkpCi0vLyBvciBNYXRjaGVyPFQ+KHgpLCBidXQgbW9yZSBy
ZWFkYWJsZSB0aGFuIHRoZSBsYXR0ZXIuCi0vLwotLy8gV2UgY291bGQgZGVmaW5lIHNpbWlsYXIg
bW9ub21vcnBoaWMgbWF0Y2hlcnMgZm9yIG90aGVyIGNvbXBhcmlzb24KLS8vIG9wZXJhdGlvbnMg
KGUuZy4gVHlwZWRMdCwgVHlwZWRHZSwgYW5kIGV0YyksIGJ1dCBkZWNpZGVkIG5vdCB0byBkbwot
Ly8gaXQgeWV0IGFzIHRob3NlIGFyZSB1c2VkIG11Y2ggbGVzcyB0aGFuIEVxKCkgaW4gcHJhY3Rp
Y2UuICBBIHVzZXIKLS8vIGNhbiBhbHdheXMgd3JpdGUgTWF0Y2hlcjxUPihMdCg1KSkgdG8gYmUg
ZXhwbGljaXQgYWJvdXQgdGhlIHR5cGUsCi0vLyBmb3IgZXhhbXBsZS4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBMaHMsIHR5cGVuYW1lIFJocz4KLWlubGluZSBNYXRjaGVyPExocz4gVHlwZWRFcShjb25z
dCBSaHMmIHJocykgeyByZXR1cm4gRXEocmhzKTsgfQotCi0vLyBDcmVhdGVzIGEgcG9seW1vcnBo
aWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgPj0geC4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6OkdlTWF0Y2hlcjxSaHM+IEdlKFJocyB4KSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6R2VNYXRjaGVyPFJocz4oeCk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBwb2x5
bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZyA+IHguCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmhzPgotaW5saW5lIGludGVybmFsOjpHdE1hdGNoZXI8UmhzPiBHdChSaHMgeCkgewot
ICByZXR1cm4gaW50ZXJuYWw6Okd0TWF0Y2hlcjxSaHM+KHgpOwotfQotCi0vLyBDcmVhdGVzIGEg
cG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgPD0geC4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6OkxlTWF0Y2hlcjxSaHM+IExlKFJocyB4
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TGVNYXRjaGVyPFJocz4oeCk7Ci19Ci0KLS8vIENyZWF0
ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZyA8IHguCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUmhzPgotaW5saW5lIGludGVybmFsOjpMdE1hdGNoZXI8UmhzPiBMdChS
aHMgeCkgewotICByZXR1cm4gaW50ZXJuYWw6Okx0TWF0Y2hlcjxSaHM+KHgpOwotfQotCi0vLyBD
cmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgIT0geC4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6Ok5lTWF0Y2hlcjxSaHM+
IE5lKFJocyB4KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TmVNYXRjaGVyPFJocz4oeCk7Ci19Ci0K
LS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgTlVMTCBw
b2ludGVyLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6SXNOdWxsTWF0Y2hl
ciA+IElzTnVsbCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6
OklzTnVsbE1hdGNoZXIoKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVy
IHRoYXQgbWF0Y2hlcyBhbnkgbm9uLU5VTEwgcG9pbnRlci4KLS8vIFRoaXMgaXMgY29udmVuaWVu
dCBhcyBOb3QoTlVMTCkgZG9lc24ndCBjb21waWxlICh0aGUgY29tcGlsZXIKLS8vIHRoaW5rcyB0
aGF0IHRoYXQgZXhwcmVzc2lvbiBpcyBjb21wYXJpbmcgYSBwb2ludGVyIHdpdGggYW4gaW50ZWdl
cikuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpOb3ROdWxsTWF0Y2hlciA+
IE5vdE51bGwoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpO
b3ROdWxsTWF0Y2hlcigpKTsKLX0KLQotLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIG1hdGNoZXIg
dGhhdCBtYXRjaGVzIGFueSBhcmd1bWVudCB0aGF0Ci0vLyByZWZlcmVuY2VzIHZhcmlhYmxlIHgu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6UmVmTWF0Y2hlcjxUJj4g
UmVmKFQmIHgpIHsgIC8vIE5PTElOVAotICByZXR1cm4gaW50ZXJuYWw6OlJlZk1hdGNoZXI8VCY+
KHgpOwotfQotCi0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IGRvdWJsZSBh
cmd1bWVudCBhcHByb3hpbWF0ZWx5Ci0vLyBlcXVhbCB0byByaHMsIHdoZXJlIHR3byBOQU5zIGFy
ZSBjb25zaWRlcmVkIHVuZXF1YWwuCi1pbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVy
PGRvdWJsZT4gRG91YmxlRXEoZG91YmxlIHJocykgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0
aW5nRXFNYXRjaGVyPGRvdWJsZT4ocmhzLCBmYWxzZSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRj
aGVyIHRoYXQgbWF0Y2hlcyBhbnkgZG91YmxlIGFyZ3VtZW50IGFwcHJveGltYXRlbHkKLS8vIGVx
dWFsIHRvIHJocywgaW5jbHVkaW5nIE5hTiB2YWx1ZXMgd2hlbiByaHMgaXMgTmFOLgotaW5saW5l
IGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+IE5hblNlbnNpdGl2ZURvdWJsZUVx
KGRvdWJsZSByaHMpIHsKLSAgcmV0dXJuIGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3Vi
bGU+KHJocywgdHJ1ZSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
bnkgZG91YmxlIGFyZ3VtZW50IGFwcHJveGltYXRlbHkgZXF1YWwgdG8KLS8vIHJocywgdXAgdG8g
dGhlIHNwZWNpZmllZCBtYXggYWJzb2x1dGUgZXJyb3IgYm91bmQsIHdoZXJlIHR3byBOQU5zIGFy
ZQotLy8gY29uc2lkZXJlZCB1bmVxdWFsLiAgVGhlIG1heCBhYnNvbHV0ZSBlcnJvciBib3VuZCBt
dXN0IGJlIG5vbi1uZWdhdGl2ZS4KLWlubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8
ZG91YmxlPiBEb3VibGVOZWFyKAotICAgIGRvdWJsZSByaHMsIGRvdWJsZSBtYXhfYWJzX2Vycm9y
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZG91YmxlPihyaHMsIGZh
bHNlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRj
aGVzIGFueSBkb3VibGUgYXJndW1lbnQgYXBwcm94aW1hdGVseSBlcXVhbCB0bwotLy8gcmhzLCB1
cCB0byB0aGUgc3BlY2lmaWVkIG1heCBhYnNvbHV0ZSBlcnJvciBib3VuZCwgaW5jbHVkaW5nIE5h
TiB2YWx1ZXMgd2hlbgotLy8gcmhzIGlzIE5hTi4gIFRoZSBtYXggYWJzb2x1dGUgZXJyb3IgYm91
bmQgbXVzdCBiZSBub24tbmVnYXRpdmUuCi1pbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRj
aGVyPGRvdWJsZT4gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigKLSAgICBkb3VibGUgcmhzLCBkb3Vi
bGUgbWF4X2Fic19lcnJvcikgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVy
PGRvdWJsZT4ocmhzLCB0cnVlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9hdCBhcmd1bWVudCBhcHByb3hpbWF0ZWx5Ci0vLyBl
cXVhbCB0byByaHMsIHdoZXJlIHR3byBOQU5zIGFyZSBjb25zaWRlcmVkIHVuZXF1YWwuCi1pbmxp
bmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PiBGbG9hdEVxKGZsb2F0IHJocykg
ewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PihyaHMsIGZhbHNl
KTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9hdCBhcmd1
bWVudCBhcHByb3hpbWF0ZWx5Ci0vLyBlcXVhbCB0byByaHMsIGluY2x1ZGluZyBOYU4gdmFsdWVz
IHdoZW4gcmhzIGlzIE5hTi4KLWlubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8Zmxv
YXQ+IE5hblNlbnNpdGl2ZUZsb2F0RXEoZmxvYXQgcmhzKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+KHJocywgdHJ1ZSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZmxvYXQgYXJndW1lbnQgYXBwcm94aW1hdGVseSBlcXVh
bCB0bwotLy8gcmhzLCB1cCB0byB0aGUgc3BlY2lmaWVkIG1heCBhYnNvbHV0ZSBlcnJvciBib3Vu
ZCwgd2hlcmUgdHdvIE5BTnMgYXJlCi0vLyBjb25zaWRlcmVkIHVuZXF1YWwuICBUaGUgbWF4IGFi
c29sdXRlIGVycm9yIGJvdW5kIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgotaW5saW5lIGludGVybmFs
OjpGbG9hdGluZ0VxTWF0Y2hlcjxmbG9hdD4gRmxvYXROZWFyKAotICAgIGZsb2F0IHJocywgZmxv
YXQgbWF4X2Fic19lcnJvcikgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVy
PGZsb2F0PihyaHMsIGZhbHNlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9hdCBhcmd1bWVudCBhcHByb3hpbWF0ZWx5IGVxdWFs
IHRvCi0vLyByaHMsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbWF4IGFic29sdXRlIGVycm9yIGJvdW5k
LCBpbmNsdWRpbmcgTmFOIHZhbHVlcyB3aGVuCi0vLyByaHMgaXMgTmFOLiAgVGhlIG1heCBhYnNv
bHV0ZSBlcnJvciBib3VuZCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KLWlubGluZSBpbnRlcm5hbDo6
RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+IE5hblNlbnNpdGl2ZUZsb2F0TmVhcigKLSAgICBmbG9h
dCByaHMsIGZsb2F0IG1heF9hYnNfZXJyb3IpIHsKLSAgcmV0dXJuIGludGVybmFsOjpGbG9hdGlu
Z0VxTWF0Y2hlcjxmbG9hdD4ocmhzLCB0cnVlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3Jl
YXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgcG9pbnRlciAocmF3IG9yIHNtYXJ0KSB0aGF0
IHBvaW50cwotLy8gdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgaW5uZXJfbWF0Y2hlci4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlBvaW50ZWVNYXRj
aGVyPElubmVyTWF0Y2hlcj4gUG9pbnRlZSgKLSAgICBjb25zdCBJbm5lck1hdGNoZXImIGlubmVy
X21hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpQb2ludGVlTWF0Y2hlcjxJbm5lck1hdGNo
ZXI+KGlubmVyX21hdGNoZXIpOwotfQotCi0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNo
ZXMgYSBwb2ludGVyIG9yIHJlZmVyZW5jZSB0aGF0IG1hdGNoZXMKLS8vIGlubmVyX21hdGNoZXIg
d2hlbiBkeW5hbWljX2Nhc3Q8VG8+IGlzIGFwcGxpZWQuCi0vLyBUaGUgcmVzdWx0IG9mIGR5bmFt
aWNfY2FzdDxUbz4gaXMgZm9yd2FyZGVkIHRvIHRoZSBpbm5lciBtYXRjaGVyLgotLy8gSWYgVG8g
aXMgYSBwb2ludGVyIGFuZCB0aGUgY2FzdCBmYWlscywgdGhlIGlubmVyIG1hdGNoZXIgd2lsbCBy
ZWNlaXZlIE5VTEwuCi0vLyBJZiBUbyBpcyBhIHJlZmVyZW5jZSBhbmQgdGhlIGNhc3QgZmFpbHMs
IHRoaXMgbWF0Y2hlciByZXR1cm5zIGZhbHNlCi0vLyBpbW1lZGlhdGVseS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUbz4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6OldoZW5EeW5h
bWljQ2FzdFRvTWF0Y2hlcjxUbz4gPgotV2hlbkR5bmFtaWNDYXN0VG8oY29uc3QgTWF0Y2hlcjxU
bz4mIGlubmVyX21hdGNoZXIpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCi0g
ICAgICBpbnRlcm5hbDo6V2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyPFRvPihpbm5lcl9tYXRjaGVy
KSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbiBvYmplY3Qgd2hv
c2UgZ2l2ZW4gZmllbGQgbWF0Y2hlcwotLy8gJ21hdGNoZXInLiAgRm9yIGV4YW1wbGUsCi0vLyAg
IEZpZWxkKCZGb286Om51bWJlciwgR2UoNSkpCi0vLyBtYXRjaGVzIGEgRm9vIG9iamVjdCB4IGlm
ZiB4Lm51bWJlciA+PSA1LgotdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzLCB0eXBlbmFtZSBGaWVs
ZFR5cGUsIHR5cGVuYW1lIEZpZWxkTWF0Y2hlcj4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8
Ci0gIGludGVybmFsOjpGaWVsZE1hdGNoZXI8Q2xhc3MsIEZpZWxkVHlwZT4gPiBGaWVsZCgKLSAg
ICBGaWVsZFR5cGUgQ2xhc3M6OipmaWVsZCwgY29uc3QgRmllbGRNYXRjaGVyJiBtYXRjaGVyKSB7
Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKAotICAgICAgaW50ZXJuYWw6OkZpZWxk
TWF0Y2hlcjxDbGFzcywgRmllbGRUeXBlPigKLSAgICAgICAgICBmaWVsZCwgTWF0Y2hlckNhc3Q8
Y29uc3QgRmllbGRUeXBlJj4obWF0Y2hlcikpKTsKLSAgLy8gVGhlIGNhbGwgdG8gTWF0Y2hlckNh
c3QoKSBpcyByZXF1aXJlZCBmb3Igc3VwcG9ydGluZyBpbm5lcgotICAvLyBtYXRjaGVycyBvZiBj
b21wYXRpYmxlIHR5cGVzLiAgRm9yIGV4YW1wbGUsIGl0IGFsbG93cwotICAvLyAgIEZpZWxkKCZG
b286OmJhciwgbSkKLSAgLy8gdG8gY29tcGlsZSB3aGVyZSBiYXIgaXMgYW4gaW50MzIgYW5kIG0g
aXMgYSBtYXRjaGVyIGZvciBpbnQ2NC4KLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBt
YXRjaGVzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eQotLy8gbWF0Y2hlcyAnbWF0Y2hl
cicuICBGb3IgZXhhbXBsZSwKLS8vICAgUHJvcGVydHkoJkZvbzo6c3RyLCBTdGFydHNXaXRoKCJo
aSIpKQotLy8gbWF0Y2hlcyBhIEZvbyBvYmplY3QgeCBpZmYgeC5zdHIoKSBzdGFydHMgd2l0aCAi
aGkiLgotdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5
cGVuYW1lIFByb3BlcnR5TWF0Y2hlcj4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8Ci0gIGlu
dGVybmFsOjpQcm9wZXJ0eU1hdGNoZXI8Q2xhc3MsIFByb3BlcnR5VHlwZT4gPiBQcm9wZXJ0eSgK
LSAgICBQcm9wZXJ0eVR5cGUgKENsYXNzOjoqcHJvcGVydHkpKCkgY29uc3QsIGNvbnN0IFByb3Bl
cnR5TWF0Y2hlciYgbWF0Y2hlcikgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigK
LSAgICAgIGludGVybmFsOjpQcm9wZXJ0eU1hdGNoZXI8Q2xhc3MsIFByb3BlcnR5VHlwZT4oCi0g
ICAgICAgICAgcHJvcGVydHksCi0gICAgICAgICAgTWF0Y2hlckNhc3Q8R1RFU1RfUkVGRVJFTkNF
X1RPX0NPTlNUXyhQcm9wZXJ0eVR5cGUpPihtYXRjaGVyKSkpOwotICAvLyBUaGUgY2FsbCB0byBN
YXRjaGVyQ2FzdCgpIGlzIHJlcXVpcmVkIGZvciBzdXBwb3J0aW5nIGlubmVyCi0gIC8vIG1hdGNo
ZXJzIG9mIGNvbXBhdGlibGUgdHlwZXMuICBGb3IgZXhhbXBsZSwgaXQgYWxsb3dzCi0gIC8vICAg
UHJvcGVydHkoJkZvbzo6YmFyLCBtKQotICAvLyB0byBjb21waWxlIHdoZXJlIGJhcigpIHJldHVy
bnMgYW4gaW50MzIgYW5kIG0gaXMgYSBtYXRjaGVyIGZvciBpbnQ2NC4KLX0KLQotLy8gQ3JlYXRl
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFuIG9iamVjdCBpZmYgdGhlIHJlc3VsdCBvZiBhcHBs
eWluZwotLy8gYSBjYWxsYWJsZSB0byB4IG1hdGNoZXMgJ21hdGNoZXInLgotLy8gRm9yIGV4YW1w
bGUsCi0vLyAgIFJlc3VsdE9mKGYsIFN0YXJ0c1dpdGgoImhpIikpCi0vLyBtYXRjaGVzIGEgRm9v
IG9iamVjdCB4IGlmZiBmKHgpIHN0YXJ0cyB3aXRoICJoaSIuCi0vLyBjYWxsYWJsZSBwYXJhbWV0
ZXIgY2FuIGJlIGEgZnVuY3Rpb24sIGZ1bmN0aW9uIHBvaW50ZXIsIG9yIGEgZnVuY3Rvci4KLS8v
IENhbGxhYmxlIGhhcyB0byBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vICAg
KiBJdCBpcyByZXF1aXJlZCB0byBrZWVwIG5vIHN0YXRlIGFmZmVjdGluZyB0aGUgcmVzdWx0cyBv
ZgotLy8gICAgIHRoZSBjYWxscyBvbiBpdCBhbmQgbWFrZSBubyBhc3N1bXB0aW9ucyBhYm91dCBo
b3cgbWFueSBjYWxscwotLy8gICAgIHdpbGwgYmUgbWFkZS4gQW55IHN0YXRlIGl0IGtlZXBzIG11
c3QgYmUgcHJvdGVjdGVkIGZyb20gdGhlCi0vLyAgICAgY29uY3VycmVudCBhY2Nlc3MuCi0vLyAg
ICogSWYgaXQgaXMgYSBmdW5jdGlvbiBvYmplY3QsIGl0IGhhcyB0byBkZWZpbmUgdHlwZSByZXN1
bHRfdHlwZS4KLS8vICAgICBXZSByZWNvbW1lbmQgZGVyaXZpbmcgeW91ciBmdW5jdG9yIGNsYXNz
ZXMgZnJvbSBzdGQ6OnVuYXJ5X2Z1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxhYmxl
LCB0eXBlbmFtZSBSZXN1bHRPZk1hdGNoZXI+Ci1pbnRlcm5hbDo6UmVzdWx0T2ZNYXRjaGVyPENh
bGxhYmxlPiBSZXN1bHRPZigKLSAgICBDYWxsYWJsZSBjYWxsYWJsZSwgY29uc3QgUmVzdWx0T2ZN
YXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6UmVzdWx0T2ZNYXRjaGVyPENh
bGxhYmxlPigKLSAgICAgICAgICBjYWxsYWJsZSwKLSAgICAgICAgICBNYXRjaGVyQ2FzdDx0eXBl
bmFtZSBpbnRlcm5hbDo6Q2FsbGFibGVUcmFpdHM8Q2FsbGFibGU+OjpSZXN1bHRUeXBlPigKLSAg
ICAgICAgICAgICAgbWF0Y2hlcikpOwotICAvLyBUaGUgY2FsbCB0byBNYXRjaGVyQ2FzdCgpIGlz
IHJlcXVpcmVkIGZvciBzdXBwb3J0aW5nIGlubmVyCi0gIC8vIG1hdGNoZXJzIG9mIGNvbXBhdGli
bGUgdHlwZXMuICBGb3IgZXhhbXBsZSwgaXQgYWxsb3dzCi0gIC8vICAgUmVzdWx0T2YoRnVuY3Rp
b24sIG0pCi0gIC8vIHRvIGNvbXBpbGUgd2hlcmUgRnVuY3Rpb24oKSByZXR1cm5zIGFuIGludDMy
IGFuZCBtIGlzIGEgbWF0Y2hlciBmb3IgaW50NjQuCi19Ci0KLS8vIFN0cmluZyBtYXRjaGVycy4K
LQotLy8gTWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIuCi1pbmxpbmUgUG9seW1vcnBoaWNN
YXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gU3RyRXEo
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+
KHN0ciwgdHJ1ZSwgdHJ1ZSkpOwotfQotCi0vLyBNYXRjaGVzIGEgc3RyaW5nIG5vdCBlcXVhbCB0
byBzdHIuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1h
dGNoZXI8c3RkOjpzdHJpbmc+ID4gU3RyTmUoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikg
ewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpTdHJF
cXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+KHN0ciwgZmFsc2UsIHRydWUpKTsKLX0KLQotLy8g
TWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIsIGlnbm9yaW5nIGNhc2UuCi1pbmxpbmUgUG9s
eW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+
ID4gU3RyQ2FzZUVxKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoCi0gICAgICBpbnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVy
PHN0ZDo6c3RyaW5nPihzdHIsIHRydWUsIGZhbHNlKSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBzdHJp
bmcgbm90IGVxdWFsIHRvIHN0ciwgaWdub3JpbmcgY2FzZS4KLWlubGluZSBQb2x5bW9ycGhpY01h
dGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxzdGQ6OnN0cmluZz4gPiBTdHJDYXNl
TmUoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gTWFrZVBvbHltb3Jw
aGljTWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJp
bmc+KHN0ciwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQg
bWF0Y2hlcyBhbnkgc3RyaW5nLCBzdGQ6OnN0cmluZywgb3IgQyBzdHJpbmcKLS8vIHRoYXQgY29u
dGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50
ZXJuYWw6Okhhc1N1YnN0ck1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gSGFzU3Vic3RyKAotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHJpbmcpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01h
dGNoZXIoCi0gICAgICBpbnRlcm5hbDo6SGFzU3Vic3RyTWF0Y2hlcjxzdGQ6OnN0cmluZz4oc3Vi
c3RyaW5nKSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCAncHJl
Zml4JyAoY2FzZS1zZW5zaXRpdmUpLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5h
bDo6U3RhcnRzV2l0aE1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gU3RhcnRzV2l0aCgKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyYgcHJlZml4KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVy
KAotICAgICAgaW50ZXJuYWw6OlN0YXJ0c1dpdGhNYXRjaGVyPHN0ZDo6c3RyaW5nPihwcmVmaXgp
KTsKLX0KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IGVuZHMgd2l0aCAnc3VmZml4JyAoY2Fz
ZS1zZW5zaXRpdmUpLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6RW5kc1dp
dGhNYXRjaGVyPHN0ZDo6c3RyaW5nPiA+IEVuZHNXaXRoKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdWZmaXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OkVu
ZHNXaXRoTWF0Y2hlcjxzdGQ6OnN0cmluZz4oc3VmZml4KSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBz
dHJpbmcgdGhhdCBmdWxseSBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXgnLgotLy8g
VGhlIG1hdGNoZXIgdGFrZXMgb3duZXJzaGlwIG9mICdyZWdleCcuCi1pbmxpbmUgUG9seW1vcnBo
aWNNYXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVyPiBNYXRjaGVzUmVnZXgoCi0g
ICAgY29uc3QgaW50ZXJuYWw6OlJFKiByZWdleCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcihpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0Y2hlcihyZWdleCwgdHJ1ZSkpOwotfQot
aW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0Y2hlcj4g
TWF0Y2hlc1JlZ2V4KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWdleCkgewotICByZXR1cm4g
TWF0Y2hlc1JlZ2V4KG5ldyBpbnRlcm5hbDo6UkUocmVnZXgpKTsKLX0KLQotLy8gTWF0Y2hlcyBh
IHN0cmluZyB0aGF0IGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXgnLgotLy8gVGhl
IG1hdGNoZXIgdGFrZXMgb3duZXJzaGlwIG9mICdyZWdleCcuCi1pbmxpbmUgUG9seW1vcnBoaWNN
YXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVyPiBDb250YWluc1JlZ2V4KAotICAg
IGNvbnN0IGludGVybmFsOjpSRSogcmVnZXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01h
dGNoZXIoaW50ZXJuYWw6Ok1hdGNoZXNSZWdleE1hdGNoZXIocmVnZXgsIGZhbHNlKSk7Ci19Ci1p
bmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVyPiBD
b250YWluc1JlZ2V4KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWdleCkgewotICByZXR1cm4g
Q29udGFpbnNSZWdleChuZXcgaW50ZXJuYWw6OlJFKHJlZ2V4KSk7Ci19Ci0KLSNpZiBHVEVTVF9I
QVNfR0xPQkFMX1dTVFJJTkcgfHwgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0vLyBXaWRlIHN0cmlu
ZyBtYXRjaGVycy4KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIuCi1pbmxpbmUg
UG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8aW50ZXJuYWw6
OndzdHJpbmc+ID4KLSAgICBTdHJFcShjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYgc3RyKSB7Ci0g
IHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNo
ZXI8aW50ZXJuYWw6OndzdHJpbmc+KAotICAgICAgc3RyLCB0cnVlLCB0cnVlKSk7Ci19Ci0KLS8v
IE1hdGNoZXMgYSBzdHJpbmcgbm90IGVxdWFsIHRvIHN0ci4KLWlubGluZSBQb2x5bW9ycGhpY01h
dGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4gPgot
ICAgIFN0ck5lKGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIE1ha2VQ
b2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5hbDo6
d3N0cmluZz4oCi0gICAgICBzdHIsIGZhbHNlLCB0cnVlKSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBz
dHJpbmcgZXF1YWwgdG8gc3RyLCBpZ25vcmluZyBjYXNlLgotaW5saW5lIFBvbHltb3JwaGljTWF0
Y2hlcjxpbnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVyPGludGVybmFsOjp3c3RyaW5nPiA+Ci0g
ICAgU3RyQ2FzZUVxKGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJuIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5h
bDo6d3N0cmluZz4oCi0gICAgICBzdHIsIHRydWUsIGZhbHNlKSk7Ci19Ci0KLS8vIE1hdGNoZXMg
YSBzdHJpbmcgbm90IGVxdWFsIHRvIHN0ciwgaWdub3JpbmcgY2FzZS4KLWlubGluZSBQb2x5bW9y
cGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmlu
Zz4gPgotICAgIFN0ckNhc2VOZShjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYgc3RyKSB7Ci0gIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8
aW50ZXJuYWw6OndzdHJpbmc+KAotICAgICAgc3RyLCBmYWxzZSwgZmFsc2UpKTsKLX0KLQotLy8g
Q3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB3c3RyaW5nLCBzdGQ6OndzdHJpbmcs
IG9yIEMgd2lkZSBzdHJpbmcKLS8vIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4K
LWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6Okhhc1N1YnN0ck1hdGNoZXI8aW50
ZXJuYWw6OndzdHJpbmc+ID4KLSAgICBIYXNTdWJzdHIoY29uc3QgaW50ZXJuYWw6OndzdHJpbmcm
IHN1YnN0cmluZykgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihpbnRlcm5hbDo6
SGFzU3Vic3RyTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4oCi0gICAgICBzdWJzdHJpbmcpKTsK
LX0KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoICdwcmVmaXgnIChjYXNl
LXNlbnNpdGl2ZSkuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdGFydHNX
aXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4gPgotICAgIFN0YXJ0c1dpdGgoY29uc3QgaW50
ZXJuYWw6OndzdHJpbmcmIHByZWZpeCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hl
cihpbnRlcm5hbDo6U3RhcnRzV2l0aE1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAotICAgICAg
cHJlZml4KSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggJ3N1ZmZp
eCcgKGNhc2Utc2Vuc2l0aXZlKS4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6
OkVuZHNXaXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4gPgotICAgIEVuZHNXaXRoKGNvbnN0
IGludGVybmFsOjp3c3RyaW5nJiBzdWZmaXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01h
dGNoZXIoaW50ZXJuYWw6OkVuZHNXaXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4oCi0gICAg
ICBzdWZmaXgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgfHwg
R1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVy
IHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlCi0vLyBmaXJzdCBmaWVsZCA9PSB0aGUg
c2Vjb25kIGZpZWxkLgotaW5saW5lIGludGVybmFsOjpFcTJNYXRjaGVyIEVxKCkgeyByZXR1cm4g
aW50ZXJuYWw6OkVxMk1hdGNoZXIoKTsgfQotCi0vLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0
Y2hlciB0aGF0IG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZQotLy8gZmlyc3QgZmllbGQgPj0g
dGhlIHNlY29uZCBmaWVsZC4KLWlubGluZSBpbnRlcm5hbDo6R2UyTWF0Y2hlciBHZSgpIHsgcmV0
dXJuIGludGVybmFsOjpHZTJNYXRjaGVyKCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGlj
IG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUKLS8vIGZpcnN0IGZpZWxk
ID4gdGhlIHNlY29uZCBmaWVsZC4KLWlubGluZSBpbnRlcm5hbDo6R3QyTWF0Y2hlciBHdCgpIHsg
cmV0dXJuIGludGVybmFsOjpHdDJNYXRjaGVyKCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBvbHltb3Jw
aGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUKLS8vIGZpcnN0IGZp
ZWxkIDw9IHRoZSBzZWNvbmQgZmllbGQuCi1pbmxpbmUgaW50ZXJuYWw6OkxlMk1hdGNoZXIgTGUo
KSB7IHJldHVybiBpbnRlcm5hbDo6TGUyTWF0Y2hlcigpOyB9Ci0KLS8vIENyZWF0ZXMgYSBwb2x5
bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlCi0vLyBmaXJz
dCBmaWVsZCA8IHRoZSBzZWNvbmQgZmllbGQuCi1pbmxpbmUgaW50ZXJuYWw6Okx0Mk1hdGNoZXIg
THQoKSB7IHJldHVybiBpbnRlcm5hbDo6THQyTWF0Y2hlcigpOyB9Ci0KLS8vIENyZWF0ZXMgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlCi0vLyBm
aXJzdCBmaWVsZCAhPSB0aGUgc2Vjb25kIGZpZWxkLgotaW5saW5lIGludGVybmFsOjpOZTJNYXRj
aGVyIE5lKCkgeyByZXR1cm4gaW50ZXJuYWw6Ok5lMk1hdGNoZXIoKTsgfQotCi0vLyBDcmVhdGVz
IGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IHZhbHVlIG9mIHR5cGUgVCB0aGF0IG0gZG9lc24n
dAotLy8gbWF0Y2guCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGlu
dGVybmFsOjpOb3RNYXRjaGVyPElubmVyTWF0Y2hlcj4gTm90KElubmVyTWF0Y2hlciBtKSB7Ci0g
IHJldHVybiBpbnRlcm5hbDo6Tm90TWF0Y2hlcjxJbm5lck1hdGNoZXI+KG0pOwotfQotCi0vLyBS
ZXR1cm5zIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgdGhhdCBzYXRpc2ZpZXMgdGhl
IGdpdmVuCi0vLyBwcmVkaWNhdGUuICBUaGUgcHJlZGljYXRlIGNhbiBiZSBhbnkgdW5hcnkgZnVu
Y3Rpb24gb3IgZnVuY3RvcgotLy8gd2hvc2UgcmV0dXJuIHR5cGUgY2FuIGJlIGltcGxpY2l0bHkg
Y29udmVydGVkIHRvIGJvb2wuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5l
IFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6VHJ1bHlNYXRjaGVyPFByZWRpY2F0ZT4gPgot
VHJ1bHkoUHJlZGljYXRlIHByZWQpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIo
aW50ZXJuYWw6OlRydWx5TWF0Y2hlcjxQcmVkaWNhdGU+KHByZWQpKTsKLX0KLQotLy8gUmV0dXJu
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIHRoZSBjb250YWluZXIgc2l6ZS4gVGhlIGNvbnRhaW5l
ciBtdXN0Ci0vLyBzdXBwb3J0IGJvdGggc2l6ZSgpIGFuZCBzaXplX3R5cGUgd2hpY2ggYWxsIFNU
TC1saWtlIGNvbnRhaW5lcnMgcHJvdmlkZS4KLS8vIE5vdGUgdGhhdCB0aGUgcGFyYW1ldGVyICdz
aXplJyBjYW4gYmUgYSB2YWx1ZSBvZiB0eXBlIHNpemVfdHlwZSBhcyB3ZWxsIGFzCi0vLyBtYXRj
aGVyLiBGb3IgaW5zdGFuY2U6Ci0vLyAgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgU2l6ZUlzKDIp
KTsgICAgIC8vIENoZWNrcyBjb250YWluZXIgaGFzIDIgZWxlbWVudHMuCi0vLyAgIEVYUEVDVF9U
SEFUKGNvbnRhaW5lciwgU2l6ZUlzKExlKDIpKTsgIC8vIENoZWNrcyBjb250YWluZXIgaGFzIGF0
IG1vc3QgMi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBTaXplTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5h
bDo6U2l6ZUlzTWF0Y2hlcjxTaXplTWF0Y2hlcj4KLVNpemVJcyhjb25zdCBTaXplTWF0Y2hlciYg
c2l6ZV9tYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6U2l6ZUlzTWF0Y2hlcjxTaXplTWF0
Y2hlcj4oc2l6ZV9tYXRjaGVyKTsKLX0KLQotLy8gUmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRj
aGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjb250YWluZXIncyBiZWdpbigpCi0vLyBpdGVy
YXRvciBhbmQgaXRzIGVuZCgpIGl0ZXJhdG9yLCBpLmUuIHRoZSBzaXplIG9mIHRoZSBjb250YWlu
ZXIuIFRoaXMgbWF0Y2hlcgotLy8gY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBTaXplSXMgd2l0aCBj
b250YWluZXJzIHN1Y2ggYXMgc3RkOjpmb3J3YXJkX2xpc3Qgd2hpY2gKLS8vIGRvIG5vdCBpbXBs
ZW1lbnQgc2l6ZSgpLiBUaGUgY29udGFpbmVyIG11c3QgcHJvdmlkZSBjb25zdF9pdGVyYXRvciAo
d2l0aAotLy8gdmFsaWQgaXRlcmF0b3JfdHJhaXRzKSwgYmVnaW4oKSBhbmQgZW5kKCkuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRGlzdGFuY2VNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpCZWdpbkVu
ZERpc3RhbmNlSXNNYXRjaGVyPERpc3RhbmNlTWF0Y2hlcj4KLUJlZ2luRW5kRGlzdGFuY2VJcyhj
b25zdCBEaXN0YW5jZU1hdGNoZXImIGRpc3RhbmNlX21hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVy
bmFsOjpCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyPERpc3RhbmNlTWF0Y2hlcj4oZGlzdGFuY2Vf
bWF0Y2hlcik7Ci19Ci0KLS8vIFJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbiBlcXVh
bCBjb250YWluZXIuCi0vLyBUaGlzIG1hdGNoZXIgYmVoYXZlcyBsaWtlIEVxKCksIGJ1dCBpbiB0
aGUgZXZlbnQgb2YgbWlzbWF0Y2ggbGlzdHMgdGhlCi0vLyB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVk
ZWQgaW4gb25lIGNvbnRhaW5lciBidXQgbm90IHRoZSBvdGhlci4gKER1cGxpY2F0ZQotLy8gdmFs
dWVzIGFuZCBvcmRlciBkaWZmZXJlbmNlcyBhcmUgbm90IGV4cGxhaW5lZC4pCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6
Q29udGFpbmVyRXFNYXRjaGVyPCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhDb250YWluZXIpPiA+Ci0gICAgQ29udGFpbmVyRXEoY29u
c3QgQ29udGFpbmVyJiByaHMpIHsKLSAgLy8gVGhpcyBmb2xsb3dpbmcgbGluZSBpcyBmb3Igd29y
a2luZyBhcm91bmQgYSBidWcgaW4gTVNWQyA4LjAsCi0gIC8vIHdoaWNoIGNhdXNlcyBDb250YWlu
ZXIgdG8gYmUgYSBjb25zdCB0eXBlIHNvbWV0aW1lcy4KLSAgdHlwZWRlZiBHVEVTVF9SRU1PVkVf
Q09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICByZXR1cm4gTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpDb250YWluZXJFcU1hdGNoZXI8UmF3Q29udGFpbmVy
PihyaHMpKTsKLX0KLQotLy8gUmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgY29udGFp
bmVyIHRoYXQsIHdoZW4gc29ydGVkIHVzaW5nCi0vLyB0aGUgZ2l2ZW4gY29tcGFyYXRvciwgbWF0
Y2hlcyBjb250YWluZXJfbWF0Y2hlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJhdG9yLCB0
eXBlbmFtZSBDb250YWluZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpXaGVuU29ydGVkQnlN
YXRjaGVyPENvbXBhcmF0b3IsIENvbnRhaW5lck1hdGNoZXI+Ci1XaGVuU29ydGVkQnkoY29uc3Qg
Q29tcGFyYXRvciYgY29tcGFyYXRvciwKLSAgICAgICAgICAgICBjb25zdCBDb250YWluZXJNYXRj
aGVyJiBjb250YWluZXJfbWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OldoZW5Tb3J0ZWRC
eU1hdGNoZXI8Q29tcGFyYXRvciwgQ29udGFpbmVyTWF0Y2hlcj4oCi0gICAgICBjb21wYXJhdG9y
LCBjb250YWluZXJfbWF0Y2hlcik7Ci19Ci0KLS8vIFJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0
Y2hlcyBhIGNvbnRhaW5lciB0aGF0LCB3aGVuIHNvcnRlZCB1c2luZwotLy8gdGhlIDwgb3BlcmF0
b3IsIG1hdGNoZXMgY29udGFpbmVyX21hdGNoZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFp
bmVyTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6V2hlblNvcnRlZEJ5TWF0Y2hlcjxpbnRlcm5h
bDo6TGVzc0NvbXBhcmF0b3IsIENvbnRhaW5lck1hdGNoZXI+Ci1XaGVuU29ydGVkKGNvbnN0IENv
bnRhaW5lck1hdGNoZXImIGNvbnRhaW5lcl9tYXRjaGVyKSB7Ci0gIHJldHVybgotICAgICAgaW50
ZXJuYWw6OldoZW5Tb3J0ZWRCeU1hdGNoZXI8aW50ZXJuYWw6Okxlc3NDb21wYXJhdG9yLCBDb250
YWluZXJNYXRjaGVyPigKLSAgICAgICAgICBpbnRlcm5hbDo6TGVzc0NvbXBhcmF0b3IoKSwgY29u
dGFpbmVyX21hdGNoZXIpOwotfQotCi0vLyBNYXRjaGVzIGFuIFNUTC1zdHlsZSBjb250YWluZXIg
b3IgYSBuYXRpdmUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUKLS8vIHNhbWUgbnVtYmVyIG9mIGVs
ZW1lbnRzIGFzIGluIHJocywgd2hlcmUgaXRzIGktdGggZWxlbWVudCBhbmQgcmhzJ3MKLS8vIGkt
dGggZWxlbWVudCAoYXMgYSBwYWlyKSBzYXRpc2Z5IHRoZSBnaXZlbiBwYWlyIG1hdGNoZXIsIGZv
ciBhbGwgaS4KLS8vIFR1cGxlTWF0Y2hlciBtdXN0IGJlIGFibGUgdG8gYmUgc2FmZWx5IGNhc3Qg
dG8gTWF0Y2hlcjx0dXBsZTxjb25zdAotLy8gVDEmLCBjb25zdCBUMiY+ID4sIHdoZXJlIFQxIGFu
ZCBUMiBhcmUgdGhlIHR5cGVzIG9mIGVsZW1lbnRzIGluIHRoZQotLy8gTEhTIGNvbnRhaW5lciBh
bmQgdGhlIFJIUyBjb250YWluZXIgcmVzcGVjdGl2ZWx5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1
cGxlTWF0Y2hlciwgdHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIGludGVybmFsOjpQb2ludHdp
c2VNYXRjaGVyPFR1cGxlTWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEVTVF9SRU1PVkVfQ09OU1RfKENvbnRhaW5lcik+Ci1Qb2ludHdpc2UoY29uc3QgVHVwbGVN
YXRjaGVyJiB0dXBsZV9tYXRjaGVyLCBjb25zdCBDb250YWluZXImIHJocykgewotICAvLyBUaGlz
IGZvbGxvd2luZyBsaW5lIGlzIGZvciB3b3JraW5nIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZDIDguMCwK
LSAgLy8gd2hpY2ggY2F1c2VzIENvbnRhaW5lciB0byBiZSBhIGNvbnN0IHR5cGUgc29tZXRpbWVz
IChlLmcuIHdoZW4KLSAgLy8gcmhzIGlzIGEgY29uc3QgaW50W10pLi4KLSAgdHlwZWRlZiBHVEVT
VF9SRU1PVkVfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICByZXR1cm4gaW50ZXJu
YWw6OlBvaW50d2lzZU1hdGNoZXI8VHVwbGVNYXRjaGVyLCBSYXdDb250YWluZXI+KAotICAgICAg
dHVwbGVfbWF0Y2hlciwgcmhzKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJf
TElTVF8KLQotLy8gU3VwcG9ydHMgdGhlIFBvaW50d2lzZShtLCB7YSwgYiwgY30pIHN5bnRheC4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZU1hdGNoZXIsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50
ZXJuYWw6OlBvaW50d2lzZU1hdGNoZXI8VHVwbGVNYXRjaGVyLCBzdGQ6OnZlY3RvcjxUPiA+IFBv
aW50d2lzZSgKLSAgICBjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxUPiByaHMpIHsKLSAgcmV0dXJuIFBvaW50d2lzZSh0dXBsZV9tYXRjaGVy
LCBzdGQ6OnZlY3RvcjxUPihyaHMpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0lO
SVRJQUxJWkVSX0xJU1RfCi0KLS8vIFVub3JkZXJlZFBvaW50d2lzZShwYWlyX21hdGNoZXIsIHJo
cykgbWF0Y2hlcyBhbiBTVEwtc3R5bGUKLS8vIGNvbnRhaW5lciBvciBhIG5hdGl2ZSBhcnJheSB0
aGF0IGNvbnRhaW5zIHRoZSBzYW1lIG51bWJlciBvZgotLy8gZWxlbWVudHMgYXMgaW4gcmhzLCB3
aGVyZSBpbiBzb21lIHBlcm11dGF0aW9uIG9mIHRoZSBjb250YWluZXIsIGl0cwotLy8gaS10aCBl
bGVtZW50IGFuZCByaHMncyBpLXRoIGVsZW1lbnQgKGFzIGEgcGFpcikgc2F0aXNmeSB0aGUgZ2l2
ZW4KLS8vIHBhaXIgbWF0Y2hlciwgZm9yIGFsbCBpLiAgVHVwbGUyTWF0Y2hlciBtdXN0IGJlIGFi
bGUgdG8gYmUgc2FmZWx5Ci0vLyBjYXN0IHRvIE1hdGNoZXI8dHVwbGU8Y29uc3QgVDEmLCBjb25z
dCBUMiY+ID4sIHdoZXJlIFQxIGFuZCBUMiBhcmUKLS8vIHRoZSB0eXBlcyBvZiBlbGVtZW50cyBp
biB0aGUgTEhTIGNvbnRhaW5lciBhbmQgdGhlIFJIUyBjb250YWluZXIKLS8vIHJlc3BlY3RpdmVs
eS4KLS8vCi0vLyBUaGlzIGlzIGxpa2UgUG9pbnR3aXNlKHBhaXJfbWF0Y2hlciwgcmhzKSwgZXhj
ZXB0IHRoYXQgdGhlIGVsZW1lbnQKLS8vIG9yZGVyIGRvZXNuJ3QgbWF0dGVyLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFR1cGxlMk1hdGNoZXIsIHR5cGVuYW1lIFJoc0NvbnRhaW5lcj4KLWlubGluZSBp
bnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8Ci0gICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkJvdW5kU2Vjb25kTWF0Y2hlcjwKLSAgICAgICAgVHVwbGUyTWF0Y2hlciwgdHlw
ZW5hbWUgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8R1RFU1RfUkVNT1ZFX0NPTlNUXygKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJoc0NvbnRhaW5lcik+Ojp0eXBlOjp2YWx1ZV90eXBl
PiA+Ci1Vbm9yZGVyZWRQb2ludHdpc2UoY29uc3QgVHVwbGUyTWF0Y2hlciYgdHVwbGUyX21hdGNo
ZXIsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgUmhzQ29udGFpbmVyJiByaHNfY29udGFpbmVy
KSB7Ci0gIC8vIFRoaXMgZm9sbG93aW5nIGxpbmUgaXMgZm9yIHdvcmtpbmcgYXJvdW5kIGEgYnVn
IGluIE1TVkMgOC4wLAotICAvLyB3aGljaCBjYXVzZXMgUmhzQ29udGFpbmVyIHRvIGJlIGEgY29u
c3QgdHlwZSBzb21ldGltZXMgKGUuZy4gd2hlbgotICAvLyByaHNfY29udGFpbmVyIGlzIGEgY29u
c3QgaW50W10pLgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9DT05TVF8oUmhzQ29udGFpbmVyKSBS
YXdSaHNDb250YWluZXI7Ci0KLSAgLy8gUmhzVmlldyBhbGxvd3MgdGhlIHNhbWUgY29kZSB0byBo
YW5kbGUgUmhzQ29udGFpbmVyIGJlaW5nIGEKLSAgLy8gU1RMLXN0eWxlIGNvbnRhaW5lciBhbmQg
aXQgYmVpbmcgYSBuYXRpdmUgQy1zdHlsZSBhcnJheS4KLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRl
cm5hbDo6U3RsQ29udGFpbmVyVmlldzxSYXdSaHNDb250YWluZXI+IFJoc1ZpZXc7Ci0gIHR5cGVk
ZWYgdHlwZW5hbWUgUmhzVmlldzo6dHlwZSBSaHNTdGxDb250YWluZXI7Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgUmhzU3RsQ29udGFpbmVyOjp2YWx1ZV90eXBlIFNlY29uZDsKLSAgY29uc3QgUmhzU3Rs
Q29udGFpbmVyJiByaHNfc3RsX2NvbnRhaW5lciA9Ci0gICAgICBSaHNWaWV3OjpDb25zdFJlZmVy
ZW5jZShyaHNfY29udGFpbmVyKTsKLQotICAvLyBDcmVhdGUgYSBtYXRjaGVyIGZvciBlYWNoIGVs
ZW1lbnQgaW4gcmhzX2NvbnRhaW5lci4KLSAgOjpzdGQ6OnZlY3RvcjxpbnRlcm5hbDo6Qm91bmRT
ZWNvbmRNYXRjaGVyPFR1cGxlMk1hdGNoZXIsIFNlY29uZD4gPiBtYXRjaGVyczsKLSAgZm9yICh0
eXBlbmFtZSBSaHNTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmhzX3N0bF9jb250
YWluZXIuYmVnaW4oKTsKLSAgICAgICBpdCAhPSByaHNfc3RsX2NvbnRhaW5lci5lbmQoKTsgKytp
dCkgewotICAgIG1hdGNoZXJzLnB1c2hfYmFjaygKLSAgICAgICAgaW50ZXJuYWw6Ok1hdGNoZXJC
aW5kU2Vjb25kKHR1cGxlMl9tYXRjaGVyLCAqaXQpKTsKLSAgfQotCi0gIC8vIERlbGVnYXRlIHRo
ZSB3b3JrIHRvIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKS4KLSAgcmV0dXJuIFVub3JkZXJl
ZEVsZW1lbnRzQXJlQXJyYXkobWF0Y2hlcnMpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9JTklU
SUFMSVpFUl9MSVNUXwotCi0vLyBTdXBwb3J0cyB0aGUgVW5vcmRlcmVkUG9pbnR3aXNlKG0sIHth
LCBiLCBjfSkgc3ludGF4LgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlMk1hdGNoZXIsIHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVy
PAotICAgIHR5cGVuYW1lIGludGVybmFsOjpCb3VuZFNlY29uZE1hdGNoZXI8VHVwbGUyTWF0Y2hl
ciwgVD4gPgotVW5vcmRlcmVkUG9pbnR3aXNlKGNvbnN0IFR1cGxlMk1hdGNoZXImIHR1cGxlMl9t
YXRjaGVyLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiByaHMp
IHsKLSAgcmV0dXJuIFVub3JkZXJlZFBvaW50d2lzZSh0dXBsZTJfbWF0Y2hlciwgc3RkOjp2ZWN0
b3I8VD4ocmhzKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9M
SVNUXwotCi0vLyBNYXRjaGVzIGFuIFNUTC1zdHlsZSBjb250YWluZXIgb3IgYSBuYXRpdmUgYXJy
YXkgdGhhdCBjb250YWlucyBhdAotLy8gbGVhc3Qgb25lIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIGdp
dmVuIHZhbHVlIG9yIG1hdGNoZXIuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLyAgIDo6c3RkOjpzZXQ8
aW50PiBwYWdlX2lkczsKLS8vICAgcGFnZV9pZHMuaW5zZXJ0KDMpOwotLy8gICBwYWdlX2lkcy5p
bnNlcnQoMSk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBDb250YWlucygxKSk7Ci0vLyAg
IEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBDb250YWlucyhHdCgyKSkpOwotLy8gICBFWFBFQ1RfVEhB
VChwYWdlX2lkcywgTm90KENvbnRhaW5zKDQpKSk7Ci0vLwotLy8gICA6OnN0ZDo6bWFwPGludCwg
c2l6ZV90PiBwYWdlX2xlbmd0aHM7Ci0vLyAgIHBhZ2VfbGVuZ3Roc1sxXSA9IDEwMDsKLS8vICAg
RVhQRUNUX1RIQVQocGFnZV9sZW5ndGhzLAotLy8gICAgICAgICAgICAgICBDb250YWlucyg6OnN0
ZDo6cGFpcjxjb25zdCBpbnQsIHNpemVfdD4oMSwgMTAwKSkpOwotLy8KLS8vICAgY29uc3QgY2hh
ciogdXNlcl9pZHNbXSA9IHsgImpvZSIsICJtaWtlIiwgInRvbSIgfTsKLS8vICAgRVhQRUNUX1RI
QVQodXNlcl9pZHMsIENvbnRhaW5zKEVxKDo6c3RkOjpzdHJpbmcoInRvbSIpKSkpOwotdGVtcGxh
dGUgPHR5cGVuYW1lIE0+Ci1pbmxpbmUgaW50ZXJuYWw6OkNvbnRhaW5zTWF0Y2hlcjxNPiBDb250
YWlucyhNIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpDb250YWluc01hdGNoZXI8TT4o
bWF0Y2hlcik7Ci19Ci0KLS8vIE1hdGNoZXMgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciBvciBhIG5h
dGl2ZSBhcnJheSB0aGF0IGNvbnRhaW5zIG9ubHkKLS8vIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBn
aXZlbiB2YWx1ZSBvciBtYXRjaGVyLgotLy8KLS8vIEVhY2gobSkgaXMgc2VtYW50aWNhbGx5IGVx
dWl2YWxlbnQgdG8gTm90KENvbnRhaW5zKE5vdChtKSkpLiBPbmx5Ci0vLyB0aGUgbWVzc2FnZXMg
YXJlIGRpZmZlcmVudC4KLS8vCi0vLyBFeGFtcGxlczoKLS8vICAgOjpzdGQ6OnNldDxpbnQ+IHBh
Z2VfaWRzOwotLy8gICAvLyBFYWNoKG0pIG1hdGNoZXMgYW4gZW1wdHkgY29udGFpbmVyLCByZWdh
cmRsZXNzIG9mIHdoYXQgbSBpcy4KLS8vICAgRVhQRUNUX1RIQVQocGFnZV9pZHMsIEVhY2goRXEo
MSkpKTsKLS8vICAgRVhQRUNUX1RIQVQocGFnZV9pZHMsIEVhY2goRXEoNzcpKSk7Ci0vLwotLy8g
ICBwYWdlX2lkcy5pbnNlcnQoMyk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBFYWNoKEd0
KDApKSk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBOb3QoRWFjaChHdCg0KSkpKTsKLS8v
ICAgcGFnZV9pZHMuaW5zZXJ0KDEpOwotLy8gICBFWFBFQ1RfVEhBVChwYWdlX2lkcywgTm90KEVh
Y2goTHQoMikpKSk7Ci0vLwotLy8gICA6OnN0ZDo6bWFwPGludCwgc2l6ZV90PiBwYWdlX2xlbmd0
aHM7Ci0vLyAgIHBhZ2VfbGVuZ3Roc1sxXSA9IDEwMDsKLS8vICAgcGFnZV9sZW5ndGhzWzJdID0g
MjAwOwotLy8gICBwYWdlX2xlbmd0aHNbM10gPSAzMDA7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2Vf
bGVuZ3RocywgTm90KEVhY2goUGFpcigxLCAxMDApKSkpOwotLy8gICBFWFBFQ1RfVEhBVChwYWdl
X2xlbmd0aHMsIEVhY2goS2V5KExlKDMpKSkpOwotLy8KLS8vICAgY29uc3QgY2hhciogdXNlcl9p
ZHNbXSA9IHsgImpvZSIsICJtaWtlIiwgInRvbSIgfTsKLS8vICAgRVhQRUNUX1RIQVQodXNlcl9p
ZHMsIE5vdChFYWNoKEVxKDo6c3RkOjpzdHJpbmcoInRvbSIpKSkpKTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBNPgotaW5saW5lIGludGVybmFsOjpFYWNoTWF0Y2hlcjxNPiBFYWNoKE0gbWF0Y2hlcikg
ewotICByZXR1cm4gaW50ZXJuYWw6OkVhY2hNYXRjaGVyPE0+KG1hdGNoZXIpOwotfQotCi0vLyBL
ZXkoaW5uZXJfbWF0Y2hlcikgbWF0Y2hlcyBhbiBzdGQ6OnBhaXIgd2hvc2UgJ2ZpcnN0JyBmaWVs
ZCBtYXRjaGVzCi0vLyBpbm5lcl9tYXRjaGVyLiAgRm9yIGV4YW1wbGUsIENvbnRhaW5zKEtleShH
ZSg1KSkpIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFuCi0vLyBzdGQ6Om1hcCB0aGF0IGNvbnRhaW5z
IGF0IGxlYXN0IG9uZSBlbGVtZW50IHdob3NlIGtleSBpcyA+PSA1LgotdGVtcGxhdGUgPHR5cGVu
YW1lIE0+Ci1pbmxpbmUgaW50ZXJuYWw6OktleU1hdGNoZXI8TT4gS2V5KE0gaW5uZXJfbWF0Y2hl
cikgewotICByZXR1cm4gaW50ZXJuYWw6OktleU1hdGNoZXI8TT4oaW5uZXJfbWF0Y2hlcik7Ci19
Ci0KLS8vIFBhaXIoZmlyc3RfbWF0Y2hlciwgc2Vjb25kX21hdGNoZXIpIG1hdGNoZXMgYSBzdGQ6
OnBhaXIgd2hvc2UgJ2ZpcnN0JyBmaWVsZAotLy8gbWF0Y2hlcyBmaXJzdF9tYXRjaGVyIGFuZCB3
aG9zZSAnc2Vjb25kJyBmaWVsZCBtYXRjaGVzIHNlY29uZF9tYXRjaGVyLiAgRm9yCi0vLyBleGFt
cGxlLCBFWFBFQ1RfVEhBVChtYXBfdHlwZSwgRWxlbWVudHNBcmUoUGFpcihHZSg1KSwgImZvbyIp
KSkgY2FuIGJlIHVzZWQKLS8vIHRvIG1hdGNoIGEgc3RkOjptYXA8aW50LCBzdHJpbmc+IHRoYXQg
Y29udGFpbnMgZXhhY3RseSBvbmUgZWxlbWVudCB3aG9zZSBrZXkKLS8vIGlzID49IDUgYW5kIHdo
b3NlIHZhbHVlIGVxdWFscyAiZm9vIi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGaXJzdE1hdGNoZXIs
IHR5cGVuYW1lIFNlY29uZE1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlBhaXJNYXRjaGVyPEZp
cnN0TWF0Y2hlciwgU2Vjb25kTWF0Y2hlcj4KLVBhaXIoRmlyc3RNYXRjaGVyIGZpcnN0X21hdGNo
ZXIsIFNlY29uZE1hdGNoZXIgc2Vjb25kX21hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpQ
YWlyTWF0Y2hlcjxGaXJzdE1hdGNoZXIsIFNlY29uZE1hdGNoZXI+KAotICAgICAgZmlyc3RfbWF0
Y2hlciwgc2Vjb25kX21hdGNoZXIpOwotfQotCi0vLyBSZXR1cm5zIGEgcHJlZGljYXRlIHRoYXQg
aXMgc2F0aXNmaWVkIGJ5IGFueXRoaW5nIHRoYXQgbWF0Y2hlcyB0aGUKLS8vIGdpdmVuIG1hdGNo
ZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KLWlubGluZSBpbnRlcm5hbDo6TWF0Y2hlckFzUHJl
ZGljYXRlPE0+IE1hdGNoZXMoTSBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TWF0Y2hl
ckFzUHJlZGljYXRlPE0+KG1hdGNoZXIpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB2
YWx1ZSBtYXRjaGVzIHRoZSBtYXRjaGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IE0+Ci1pbmxpbmUgYm9vbCBWYWx1ZShjb25zdCBUJiB2YWx1ZSwgTSBtYXRjaGVyKSB7Ci0gIHJl
dHVybiB0ZXN0aW5nOjpNYXRjaGVzKG1hdGNoZXIpKHZhbHVlKTsKLX0KLQotLy8gTWF0Y2hlcyB0
aGUgdmFsdWUgYWdhaW5zdCB0aGUgZ2l2ZW4gbWF0Y2hlciBhbmQgZXhwbGFpbnMgdGhlIG1hdGNo
Ci0vLyByZXN1bHQgdG8gbGlzdGVuZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
TT4KLWlubGluZSBib29sIEV4cGxhaW5NYXRjaFJlc3VsdCgKLSAgICBNIG1hdGNoZXIsIGNvbnN0
IFQmIHZhbHVlLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgewotICByZXR1cm4gU2Fm
ZU1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVyKS5NYXRjaEFuZEV4cGxhaW4odmFsdWUsIGxp
c3RlbmVyKTsKLX0KLQotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLS8vIERlZmluZSB2YXJpYWRpYyBt
YXRjaGVyIHZlcnNpb25zLiBUaGV5IGFyZSBvdmVybG9hZGVkIGluCi0vLyBnbW9jay1nZW5lcmF0
ZWQtbWF0Y2hlcnMuaCBmb3IgdGhlIGNhc2VzIHN1cHBvcnRlZCBieSBwcmUgQysrMTEgY29tcGls
ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci1pbmxpbmUgaW50ZXJuYWw6OkFsbE9m
TWF0Y2hlcjxBcmdzLi4uPiBBbGxPZihjb25zdCBBcmdzJi4uLiBtYXRjaGVycykgewotICByZXR1
cm4gaW50ZXJuYWw6OkFsbE9mTWF0Y2hlcjxBcmdzLi4uPihtYXRjaGVycy4uLik7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotaW5saW5lIGludGVybmFsOjpBbnlPZk1hdGNoZXI8
QXJncy4uLj4gQW55T2YoY29uc3QgQXJncyYuLi4gbWF0Y2hlcnMpIHsKLSAgcmV0dXJuIGludGVy
bmFsOjpBbnlPZk1hdGNoZXI8QXJncy4uLj4obWF0Y2hlcnMuLi4pOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0xBTkdfQ1hYMTEKLQotLy8gQWxsQXJncyhtKSBpcyBhIHN5bm9ueW0gb2YgbS4gIFRo
aXMgaXMgdXNlZnVsIGluCi0vLwotLy8gICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfLCBfKSkuV2l0
aChBbGxBcmdzKEVxKCkpKTsKLS8vCi0vLyB3aGljaCBpcyBlYXNpZXIgdG8gcmVhZCB0aGFuCi0v
LwotLy8gICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfLCBfKSkuV2l0aChFcSgpKTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgSW5uZXJNYXRjaGVyIEFsbEFyZ3MoY29u
c3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7IHJldHVybiBtYXRjaGVyOyB9Ci0KLS8vIFRoZXNl
IG1hY3JvcyBhbGxvdyB1c2luZyBtYXRjaGVycyB0byBjaGVjayB2YWx1ZXMgaW4gR29vZ2xlIFRl
c3QKLS8vIHRlc3RzLiAgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpIGFuZCBFWFBFQ1RfVEhB
VCh2YWx1ZSwgbWF0Y2hlcikKLS8vIHN1Y2NlZWQgaWZmIHRoZSB2YWx1ZSBtYXRjaGVzIHRoZSBt
YXRjaGVyLiAgSWYgdGhlIGFzc2VydGlvbiBmYWlscywKLS8vIHRoZSB2YWx1ZSBhbmQgdGhlIGRl
c2NyaXB0aW9uIG9mIHRoZSBtYXRjaGVyIHdpbGwgYmUgcHJpbnRlZC4KLSNkZWZpbmUgQVNTRVJU
X1RIQVQodmFsdWUsIG1hdGNoZXIpIEFTU0VSVF9QUkVEX0ZPUk1BVDEoXAotICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6Ok1ha2VQcmVkaWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlcihtYXRjaGVyKSwg
dmFsdWUpCi0jZGVmaW5lIEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKSBFWFBFQ1RfUFJFRF9G
T1JNQVQxKFwKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlUHJlZGljYXRlRm9ybWF0dGVy
RnJvbU1hdGNoZXIobWF0Y2hlciksIHZhbHVlKQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwot
Ci0vLyBJbmNsdWRlIGFueSBjdXN0b20gY2FsbGJhY2sgbWF0Y2hlcnMgYWRkZWQgYnkgdGhlIGxv
Y2FsIGluc3RhbGxhdGlvbi4KLS8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRlciBhdCB0aGUg
ZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQotLy8gZGVjbGFyYXRpb25zIGZyb20gdGhp
cyBmaWxlLgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5o
IgotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX01BVENIRVJTX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtYWN0aW9ucy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3JlLWFjdGlvbnMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzODdiNmI3ZDc1ZWJjNDRhYzAzMTBmYTYyZTU4ZDYxMDA0
ZWM2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtYWN0aW9ucy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjQ2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8v
IEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4K
LS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIGFjdGlvbnMgdGhhdCBkZXBlbmQgb24g
Z21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NL
X0dNT0NLX01PUkVfQUNUSU9OU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NL
X01PUkVfQUNUSU9OU19IXwotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi0jaW5jbHVkZSAiZ21v
Y2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFt
ZXNwYWNlIGludGVybmFsIHsKLQotLy8gSW1wbGVtZW50cyB0aGUgSW52b2tlKGYpIGFjdGlvbi4g
IFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAotLy8gRnVuY3Rpb25JbXBsIGlzIHRoZSBpbXBsZW1lbnRh
dGlvbiB0eXBlIG9mIGYsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYQotLy8gZnVuY3Rpb24gcG9pbnRl
ciBvciBhIGZ1bmN0b3IuICBJbnZva2UoZikgY2FuIGJlIHVzZWQgYXMgYW4KLS8vIEFjdGlvbjxG
PiBhcyBsb25nIGFzIGYncyB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCBGIChpLmUuIGYgY2FuIGJl
Ci0vLyBhc3NpZ25lZCB0byBhIHRyMTo6ZnVuY3Rpb248Rj4pLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0aW9uSW1wbD4KLWNsYXNzIEludm9rZUFjdGlvbiB7Ci0gcHVibGljOgotICAvLyBUaGUg
Yyd0b3IgbWFrZXMgYSBjb3B5IG9mIGZ1bmN0aW9uX2ltcGwgKGVpdGhlciBhIGZ1bmN0aW9uCi0g
IC8vIHBvaW50ZXIgb3IgYSBmdW5jdG9yKS4KLSAgZXhwbGljaXQgSW52b2tlQWN0aW9uKEZ1bmN0
aW9uSW1wbCBmdW5jdGlvbl9pbXBsKQotICAgICAgOiBmdW5jdGlvbl9pbXBsXyhmdW5jdGlvbl9p
bXBsKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50
VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAg
ICByZXR1cm4gSW52b2tlSGVscGVyPFJlc3VsdCwgQXJndW1lbnRUdXBsZT46Okludm9rZShmdW5j
dGlvbl9pbXBsXywgYXJncyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEZ1bmN0aW9uSW1wbCBmdW5j
dGlvbl9pbXBsXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZUFjdGlvbik7Ci19
OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBJbnZva2Uob2JqZWN0X3B0ciwgJkNsYXNzOjpNZXRob2Qp
IGFjdGlvbi4KLXRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotY2xh
c3MgSW52b2tlTWV0aG9kQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIEludm9rZU1ldGhvZEFjdGlvbihD
bGFzcyogb2JqX3B0ciwgTWV0aG9kUHRyIG1ldGhvZF9wdHIpCi0gICAgICA6IG1ldGhvZF9wdHJf
KG1ldGhvZF9wdHIpLCBvYmpfcHRyXyhvYmpfcHRyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0
IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLSAgICByZXR1cm4gSW52b2tlSGVscGVyPFJl
c3VsdCwgQXJndW1lbnRUdXBsZT46Okludm9rZU1ldGhvZCgKLSAgICAgICAgb2JqX3B0cl8sIG1l
dGhvZF9wdHJfLCBhcmdzKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIG9yZGVyIG9mIHRo
ZXNlIG1lbWJlcnMgbWF0dGVycy4gIFJldmVyc2luZyB0aGUgb3JkZXIgY2FuIHRyaWdnZXIKLSAg
Ly8gd2FybmluZyBDNDEyMSBpbiBNU1ZDIChzZWUKLSAgLy8gaHR0cDovL2NvbXB1dGVyLXByb2dy
YW1taW5nLWZvcnVtLmNvbS83LXZjLm5ldC82ZmJjMzAyNjVmODYwYWQxLmh0bSApLgotICBjb25z
dCBNZXRob2RQdHIgbWV0aG9kX3B0cl87Ci0gIENsYXNzKiBjb25zdCBvYmpfcHRyXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZU1ldGhvZEFjdGlvbik7Ci19OwotCi0vLyBBbiBp
bnRlcm5hbCByZXBsYWNlbWVudCBmb3Igc3RkOjpjb3B5IHdoaWNoIG1pbWljcyBpdHMgYmVoYXZp
b3IuIFRoaXMgaXMKLS8vIG5lY2Vzc2FyeSBiZWNhdXNlIFZpc3VhbCBTdHVkaW8gZGVwcmVjYXRl
cyA6OnN0ZDo6Y29weSwgaXNzdWluZyB3YXJuaW5nIDQ5OTYuCi0vLyBIb3dldmVyIFZpc3VhbCBT
dHVkaW8gMjAxMCBhbmQgbGF0ZXIgZG8gbm90IGhvbm9yICNwcmFnbWFzIHdoaWNoIGRpc2FibGUg
dGhhdAotLy8gd2FybmluZy4KLXRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVu
YW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIENvcHlFbGVtZW50cyhJ
bnB1dEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnB1dEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91
dHB1dEl0ZXJhdG9yIG91dHB1dCkgewotICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCwg
KytvdXRwdXQpIHsKLSAgICAqb3V0cHV0ID0gKmZpcnN0OwotICB9Ci0gIHJldHVybiBvdXRwdXQ7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBWYXJpb3VzIG92ZXJsb2FkcyBm
b3IgSW52b2tlKCkuCi0KLS8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW52b2tlcyAnZnVuY3Rp
b25faW1wbCcgd2l0aCB0aGUgbW9jawotLy8gZnVuY3Rpb24ncyBhcmd1bWVudHMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rpb25JbXBsPgotUG9seW1vcnBoaWNBY3Rpb248aW50ZXJuYWw6Oklu
dm9rZUFjdGlvbjxGdW5jdGlvbkltcGw+ID4gSW52b2tlKAotICAgIEZ1bmN0aW9uSW1wbCBmdW5j
dGlvbl9pbXBsKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oCi0gICAgICBpbnRl
cm5hbDo6SW52b2tlQWN0aW9uPEZ1bmN0aW9uSW1wbD4oZnVuY3Rpb25faW1wbCkpOwotfQotCi0v
LyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGludm9rZXMgdGhlIGdpdmVuIG1ldGhvZCBvbiB0aGUg
Z2l2ZW4gb2JqZWN0Ci0vLyB3aXRoIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgotdGVt
cGxhdGUgPGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci1Qb2x5bW9ycGhpY0FjdGlv
bjxpbnRlcm5hbDo6SW52b2tlTWV0aG9kQWN0aW9uPENsYXNzLCBNZXRob2RQdHI+ID4gSW52b2tl
KAotICAgIENsYXNzKiBvYmpfcHRyLCBNZXRob2RQdHIgbWV0aG9kX3B0cikgewotICByZXR1cm4g
TWFrZVBvbHltb3JwaGljQWN0aW9uKAotICAgICAgaW50ZXJuYWw6Okludm9rZU1ldGhvZEFjdGlv
bjxDbGFzcywgTWV0aG9kUHRyPihvYmpfcHRyLCBtZXRob2RfcHRyKSk7Ci19Ci0KLS8vIFdpdGhv
dXRBcmdzKGlubmVyX2FjdGlvbikgY2FuIGJlIHVzZWQgaW4gYSBtb2NrIGZ1bmN0aW9uIHdpdGgg
YQotLy8gbm9uLWVtcHR5IGFyZ3VtZW50IGxpc3QgdG8gcGVyZm9ybSBpbm5lcl9hY3Rpb24sIHdo
aWNoIHRha2VzIG5vCi0vLyBhcmd1bWVudC4gIEluIG90aGVyIHdvcmRzLCBpdCBhZGFwdHMgYW4g
YWN0aW9uIGFjY2VwdGluZyBubwotLy8gYXJndW1lbnQgdG8gb25lIHRoYXQgYWNjZXB0cyAoYW5k
IGlnbm9yZXMpIGFyZ3VtZW50cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlu
bGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24+Ci1XaXRob3V0QXJncyhj
b25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6V2l0aEFyZ3NB
Y3Rpb248SW5uZXJBY3Rpb24+KGFjdGlvbik7Ci19Ci0KLS8vIFdpdGhBcmc8az4oYW5fYWN0aW9u
KSBjcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcyB0aGUgay10aAotLy8gKDAtYmFzZWQpIGFy
Z3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFuX2FjdGlvbiBhbmQgcGVyZm9ybXMKLS8v
IGl0LiAgSXQgYWRhcHRzIGFuIGFjdGlvbiBhY2NlcHRpbmcgb25lIGFyZ3VtZW50IHRvIG9uZSB0
aGF0IGFjY2VwdHMKLS8vIG11bHRpcGxlIGFyZ3VtZW50cy4gIEZvciBjb252ZW5pZW5jZSwgd2Ug
YWxzbyBwcm92aWRlCi0vLyBXaXRoQXJnczxrPihhbl9hY3Rpb24pIChkZWZpbmVkIGJlbG93KSBh
cyBhIHN5bm9ueW0uCi10ZW1wbGF0ZSA8aW50IGssIHR5cGVuYW1lIElubmVyQWN0aW9uPgotaW5s
aW5lIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgaz4KLVdpdGhBcmcoY29u
c3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0
aW9uPElubmVyQWN0aW9uLCBrPihhY3Rpb24pOwotfQotCi0vLyBUaGUgQUNUSU9OKigpIG1hY3Jv
cyB0cmlnZ2VyIHdhcm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwKLS8vIHBhcmFtZXRl
cikgaW4gTVNWQyB3aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhleSBjYW5ub3QgYmUgZml4ZWQg
aW4KLS8vIHRoZSBtYWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2FybmluZ3MgYXJlIGdlbmVyYXRl
ZCB3aGVuIHRoZSBtYWNybwotLy8gaXMgZXhwYW5kZWQgYW5kIG1hY3JvIGV4cGFuc2lvbiBjYW5u
b3QgY29udGFpbiAjcHJhZ21hLiAgVGhlcmVmb3JlCi0vLyB3ZSBzdXBwcmVzcyB0aGVtIGhlcmUu
Ci0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTo0MTAwKQotI2VuZGlmCi0KLS8vIEFjdGlvbiBSZXR1cm5Bcmc8az4oKSByZXR1
cm5zIHRoZSBrLXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uLgotQUNUSU9OX1RFTVBM
QVRFKFJldHVybkFyZywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50
LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJBTVMoKSkgewotICByZXR1cm4g
Ojp0ZXN0aW5nOjpnZXQ8az4oYXJncyk7Ci19Ci0KLS8vIEFjdGlvbiBTYXZlQXJnPGs+KHBvaW50
ZXIpIHNhdmVzIHRoZSBrLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUKLS8vIG1vY2sgZnVu
Y3Rpb24gdG8gKnBvaW50ZXIuCi1BQ1RJT05fVEVNUExBVEUoU2F2ZUFyZywKLSAgICAgICAgICAg
ICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRf
MV9WQUxVRV9QQVJBTVMocG9pbnRlcikpIHsKLSAgKnBvaW50ZXIgPSA6OnRlc3Rpbmc6OmdldDxr
PihhcmdzKTsKLX0KLQotLy8gQWN0aW9uIFNhdmVBcmdQb2ludGVlPGs+KHBvaW50ZXIpIHNhdmVz
IHRoZSB2YWx1ZSBwb2ludGVkIHRvCi0vLyBieSB0aGUgay10aCAoMC1iYXNlZCkgYXJndW1lbnQg
b2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gKnBvaW50ZXIuCi1BQ1RJT05fVEVNUExBVEUoU2F2ZUFy
Z1BvaW50ZWUsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayks
Ci0gICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKHBvaW50ZXIpKSB7Ci0gICpwb2lu
dGVyID0gKjo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpOwotfQotCi0vLyBBY3Rpb24gU2V0QXJnUmVm
ZXJlZTxrPih2YWx1ZSkgYXNzaWducyAndmFsdWUnIHRvIHRoZSB2YXJpYWJsZQotLy8gcmVmZXJl
bmNlZCBieSB0aGUgay10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24u
Ci1BQ1RJT05fVEVNUExBVEUoU2V0QXJnUmVmZXJlZSwKLSAgICAgICAgICAgICAgICBIQVNfMV9U
RU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJB
TVModmFsdWUpKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjp0dXBsZV9lbGVtZW50
PGssIGFyZ3NfdHlwZT46OnR5cGUgYXJna190eXBlOwotICAvLyBFbnN1cmVzIHRoYXQgYXJndW1l
bnQgI2sgaXMgYSByZWZlcmVuY2UuICBJZiB5b3UgZ2V0IGEgY29tcGlsZXIKLSAgLy8gZXJyb3Ig
b24gdGhlIG5leHQgbGluZSwgeW91IGFyZSB1c2luZyBTZXRBcmdSZWZlcmVlPGs+KHZhbHVlKSBp
bgotICAvLyBhIG1vY2sgZnVuY3Rpb24gd2hvc2Ugay10aCAoMC1iYXNlZCkgYXJndW1lbnQgaXMg
bm90IGEgcmVmZXJlbmNlLgotICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oaW50ZXJuYWw6OmlzX3Jl
ZmVyZW5jZTxhcmdrX3R5cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNldEFy
Z1JlZmVyZWVfbXVzdF9iZV91c2VkX3dpdGhfYV9yZWZlcmVuY2VfYXJndW1lbnQpOwotICA6OnRl
c3Rpbmc6OmdldDxrPihhcmdzKSA9IHZhbHVlOwotfQotCi0vLyBBY3Rpb24gU2V0QXJyYXlBcmd1
bWVudDxrPihmaXJzdCwgbGFzdCkgY29waWVzIHRoZSBlbGVtZW50cyBpbgotLy8gc291cmNlIHJh
bmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgdGhlIGstdGgKLS8v
ICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHBvaW50ZXIgb3IgYW4K
LS8vIGl0ZXJhdG9yLiBUaGUgYWN0aW9uIGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBl
bGVtZW50cyBpbiB0aGUKLS8vIHNvdXJjZSByYW5nZS4KLUFDVElPTl9URU1QTEFURShTZXRBcnJh
eUFyZ3VtZW50LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGsp
LAotICAgICAgICAgICAgICAgIEFORF8yX1ZBTFVFX1BBUkFNUyhmaXJzdCwgbGFzdCkpIHsKLSAg
Ly8gVmlzdWFsIFN0dWRpbyBkZXByZWNhdGVzIDo6c3RkOjpjb3B5LCBzbyB3ZSB1c2Ugb3VyIG93
biBjb3B5IGluIHRoYXQgY2FzZS4KLSNpZmRlZiBfTVNDX1ZFUgotICBpbnRlcm5hbDo6Q29weUVs
ZW1lbnRzKGZpcnN0LCBsYXN0LCA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSk7Ci0jZWxzZQotICA6
OnN0ZDo6Y29weShmaXJzdCwgbGFzdCwgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykpOwotI2VuZGlm
Ci19Ci0KLS8vIEFjdGlvbiBEZWxldGVBcmc8az4oKSBkZWxldGVzIHRoZSBrLXRoICgwLWJhc2Vk
KSBhcmd1bWVudCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24uCi1BQ1RJT05fVEVNUExBVEUoRGVs
ZXRlQXJnLAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGspLAot
ICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7Ci0gIGRlbGV0ZSA6OnRlc3Rp
bmc6OmdldDxrPihhcmdzKTsKLX0KLQotLy8gVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUg
cG9pbnRlZCB0byBieSAncG9pbnRlcicuCi1BQ1RJT05fUChSZXR1cm5Qb2ludGVlLCBwb2ludGVy
KSB7IHJldHVybiAqcG9pbnRlcjsgfQotCi0vLyBBY3Rpb24gVGhyb3coZXhjZXB0aW9uKSBjYW4g
YmUgdXNlZCBpbiBhIG1vY2sgZnVuY3Rpb24gb2YgYW55IHR5cGUKLS8vIHRvIHRocm93IHRoZSBn
aXZlbiBleGNlcHRpb24uICBBbnkgY29weWFibGUgdmFsdWUgY2FuIGJlIHRocm93bi4KLSNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBTdXBwcmVzc2VzIHRoZSAndW5yZWFjaGFibGUgY29k
ZScgd2FybmluZyB0aGF0IFZDIGdlbmVyYXRlcyBpbiBvcHQgbW9kZXMuCi0jIGlmZGVmIF9NU0Nf
VkVSCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKSAgICAgICAgICAvLyBTYXZlcyB0aGUgY3VycmVu
dCB3YXJuaW5nIHN0YXRlLgotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzAyKSAgLy8gVGVt
cG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0NzAyLgotIyBlbmRpZgotQUNUSU9OX1AoVGhyb3cs
IGV4Y2VwdGlvbikgeyB0aHJvdyBleGNlcHRpb247IH0KLSMgaWZkZWYgX01TQ19WRVIKLSMgIHBy
YWdtYSB3YXJuaW5nKHBvcCkgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRl
LgotIyBlbmRpZgotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLSNpZmRlZiBf
TVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX01PUkVfQUNU
SU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3Jl
LW1hdGNoZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtbWF0Y2hl
cnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RiODk5ZjQyOTdiMzQ2Y2NhNGEw
NzY5NjIyOGI4ZWFhMzBkNDNjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtbWF0Y2hlcnMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEzLCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IG1hcmN1cy5ib2VyZ2VyQGdvb2ds
ZS5jb20gKE1hcmN1cyBCb2VyZ2VyKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZv
ciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMg
c29tZSBtYXRjaGVycyB0aGF0IGRlcGVuZCBvbiBnbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaC4K
LS8vCi0vLyBOb3RlIHRoYXQgdGVzdHMgYXJlIGltcGxlbWVudGVkIGluIGdtb2NrLW1hdGNoZXJz
X3Rlc3QuY2MgcmF0aGVyIHRoYW4KLS8vIGdtb2NrLW1vcmUtbWF0Y2hlcnMtdGVzdC5jYy4KLQot
I2lmbmRlZiBHTU9DS19HTU9DS19NT1JFX01BVENIRVJTX0hfCi0jZGVmaW5lIEdNT0NLX0dNT0NL
X01PUkVfTUFUQ0hFUlNfSF8KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRj
aGVycy5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIERlZmluZXMgYSBtYXRjaGVyIHRo
YXQgbWF0Y2hlcyBhbiBlbXB0eSBjb250YWluZXIuIFRoZSBjb250YWluZXIgbXVzdAotLy8gc3Vw
cG9ydCBib3RoIHNpemUoKSBhbmQgZW1wdHkoKSwgd2hpY2ggYWxsIFNUTC1saWtlIGNvbnRhaW5l
cnMgcHJvdmlkZS4KLU1BVENIRVIoSXNFbXB0eSwgbmVnYXRpb24gPyAiaXNuJ3QgZW1wdHkiIDog
ImlzIGVtcHR5IikgewotICBpZiAoYXJnLmVtcHR5KCkpIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAg
fQotICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ3aG9zZSBzaXplIGlzICIgPDwgYXJnLnNpemUoKTsK
LSAgcmV0dXJuIGZhbHNlOwotfQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYg
IC8vIEdNT0NLX0dNT0NLX01PUkVfTUFUQ0hFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2luY2x1ZGUvZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVk
ZS9nbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDM5ZjcyMTI5ZDY1ZjBkN2NlMjc3YmI3NzljOTQxODllZGJjZTM5NjUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODUwICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0g
YSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyB0aGUgT05fQ0FMTCgpIGFuZCBFWFBFQ1RfQ0FMTCgpIG1hY3Jvcy4KLS8v
Ci0vLyBBIHVzZXIgY2FuIHVzZSB0aGUgT05fQ0FMTCgpIG1hY3JvIHRvIHNwZWNpZnkgdGhlIGRl
ZmF1bHQgYWN0aW9uIG9mCi0vLyBhIG1vY2sgbWV0aG9kLiAgVGhlIHN5bnRheCBpczoKLS8vCi0v
LyAgIE9OX0NBTEwobW9ja19vYmplY3QsIE1ldGhvZChhcmd1bWVudC1tYXRjaGVycykpCi0vLyAg
ICAgICAuV2l0aChtdWx0aS1hcmd1bWVudC1tYXRjaGVyKQotLy8gICAgICAgLldpbGxCeURlZmF1
bHQoYWN0aW9uKTsKLS8vCi0vLyAgd2hlcmUgdGhlIC5XaXRoKCkgY2xhdXNlIGlzIG9wdGlvbmFs
LgotLy8KLS8vIEEgdXNlciBjYW4gdXNlIHRoZSBFWFBFQ1RfQ0FMTCgpIG1hY3JvIHRvIHNwZWNp
ZnkgYW4gZXhwZWN0YXRpb24gb24KLS8vIGEgbW9jayBtZXRob2QuICBUaGUgc3ludGF4IGlzOgot
Ly8KLS8vICAgRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIE1ldGhvZChhcmd1bWVudC1tYXRjaGVy
cykpCi0vLyAgICAgICAuV2l0aChtdWx0aS1hcmd1bWVudC1tYXRjaGVycykKLS8vICAgICAgIC5U
aW1lcyhjYXJkaW5hbGl0eSkKLS8vICAgICAgIC5JblNlcXVlbmNlKHNlcXVlbmNlcykKLS8vICAg
ICAgIC5BZnRlcihleHBlY3RhdGlvbnMpCi0vLyAgICAgICAuV2lsbE9uY2UoYWN0aW9uKQotLy8g
ICAgICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbikKLS8vICAgICAgIC5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7Ci0vLwotLy8gd2hlcmUgYWxsIGNsYXVzZXMgYXJlIG9wdGlvbmFsLCBhbmQgLkluU2Vx
dWVuY2UoKS8uQWZ0ZXIoKS8KLS8vIC5XaWxsT25jZSgpIGNhbiBhcHBlYXIgYW55IG51bWJlciBv
ZiB0aW1lcy4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX1NQRUNfQlVJTERF
UlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19TUEVDX0JVSUxERVJTX0hf
Ci0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lmIEdURVNUX0hBU19FWENF
UFRJT05TCi0jIGluY2x1ZGUgPHN0ZGV4Y2VwdD4gIC8vIE5PTElOVAotI2VuZGlmCi0KLSNpbmNs
dWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgiCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stY2FyZGlu
YWxpdGllcy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1hdGNoZXJzLmgiCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRlICJnbW9jay9p
bnRlcm5hbC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNw
YWNlIHRlc3RpbmcgewotCi0vLyBBbiBhYnN0cmFjdCBoYW5kbGUgb2YgYW4gZXhwZWN0YXRpb24u
Ci1jbGFzcyBFeHBlY3RhdGlvbjsKLQotLy8gQSBzZXQgb2YgZXhwZWN0YXRpb24gaGFuZGxlcy4K
LWNsYXNzIEV4cGVjdGF0aW9uU2V0OwotCi0vLyBBbnl0aGluZyBpbnNpZGUgdGhlICdpbnRlcm5h
bCcgbmFtZXNwYWNlIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OCi0vLyBhbmQgTVVTVCBOT1Qg
QkUgVVNFRCBJTiBVU0VSIENPREUhISEKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEltcGxl
bWVudHMgYSBtb2NrIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+IGNsYXNzIEZ1bmN0
aW9uTW9ja2VyOwotCi0vLyBCYXNlIGNsYXNzIGZvciBleHBlY3RhdGlvbnMuCi1jbGFzcyBFeHBl
Y3RhdGlvbkJhc2U7Ci0KLS8vIEltcGxlbWVudHMgYW4gZXhwZWN0YXRpb24uCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRj4gY2xhc3MgVHlwZWRFeHBlY3RhdGlvbjsKLQotLy8gSGVscGVyIGNsYXNzIGZv
ciB0ZXN0aW5nIHRoZSBFeHBlY3RhdGlvbiBjbGFzcyB0ZW1wbGF0ZS4KLWNsYXNzIEV4cGVjdGF0
aW9uVGVzdGVyOwotCi0vLyBCYXNlIGNsYXNzIGZvciBmdW5jdGlvbiBtb2NrZXJzLgotdGVtcGxh
dGUgPHR5cGVuYW1lIEY+IGNsYXNzIEZ1bmN0aW9uTW9ja2VyQmFzZTsKLQotLy8gUHJvdGVjdHMg
dGhlIG1vY2sgb2JqZWN0IHJlZ2lzdHJ5IChpbiBjbGFzcyBNb2NrKSwgYWxsIGZ1bmN0aW9uCi0v
LyBtb2NrZXJzLCBhbmQgYWxsIGV4cGVjdGF0aW9ucy4KLS8vCi0vLyBUaGUgcmVhc29uIHdlIGRv
bid0IHVzZSBtb3JlIGZpbmUtZ3JhaW5lZCBwcm90ZWN0aW9uIGlzOiB3aGVuIGEKLS8vIG1vY2sg
ZnVuY3Rpb24gRm9vKCkgaXMgY2FsbGVkLCBpdCBuZWVkcyB0byBjb25zdWx0IGl0cyBleHBlY3Rh
dGlvbnMKLS8vIHRvIHNlZSB3aGljaCBvbmUgc2hvdWxkIGJlIHBpY2tlZC4gIElmIGFub3RoZXIg
dGhyZWFkIGlzIGFsbG93ZWQgdG8KLS8vIGNhbGwgYSBtb2NrIGZ1bmN0aW9uIChlaXRoZXIgRm9v
KCkgb3IgYSBkaWZmZXJlbnQgb25lKSBhdCB0aGUgc2FtZQotLy8gdGltZSwgaXQgY291bGQgYWZm
ZWN0IHRoZSAicmV0aXJlZCIgYXR0cmlidXRlcyBvZiBGb28oKSdzCi0vLyBleHBlY3RhdGlvbnMg
d2hlbiBJblNlcXVlbmNlKCkgaXMgdXNlZCwgYW5kIHRodXMgYWZmZWN0IHdoaWNoCi0vLyBleHBl
Y3RhdGlvbiBnZXRzIHBpY2tlZC4gIFRoZXJlZm9yZSwgd2Ugc2VxdWVuY2UgYWxsIG1vY2sgZnVu
Y3Rpb24KLS8vIGNhbGxzIHRvIGVuc3VyZSB0aGUgaW50ZWdyaXR5IG9mIHRoZSBtb2NrIG9iamVj
dHMnIHN0YXRlcy4KLUdURVNUX0FQSV8gR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKGdfZ21v
Y2tfbXV0ZXgpOwotCi0vLyBVbnR5cGVkIGJhc2UgY2xhc3MgZm9yIEFjdGlvblJlc3VsdEhvbGRl
cjxSPi4KLWNsYXNzIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlOwotCi0vLyBBYnN0cmFj
dCBiYXNlIGNsYXNzIG9mIEZ1bmN0aW9uTW9ja2VyQmFzZS4gIFRoaXMgaXMgdGhlCi0vLyB0eXBl
LWFnbm9zdGljIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIG1vY2tlciBpbnRlcmZhY2UuICBJdHMgcHVy
ZQotLy8gdmlydHVhbCBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBGdW5jdGlvbk1vY2tlckJh
c2UuCi1jbGFzcyBHVEVTVF9BUElfIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UgewotIHB1Ymxp
YzoKLSAgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSgpOwotICB2aXJ0dWFsIH5VbnR5cGVkRnVu
Y3Rpb25Nb2NrZXJCYXNlKCk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBhbGwgZXhwZWN0YXRpb25z
IG9uIHRoaXMgbW9jayBmdW5jdGlvbiBoYXZlIGJlZW4KLSAgLy8gc2F0aXNmaWVkLiAgUmVwb3J0
cyBvbmUgb3IgbW9yZSBHb29nbGUgVGVzdCBub24tZmF0YWwgZmFpbHVyZXMKLSAgLy8gYW5kIHJl
dHVybnMgZmFsc2UgaWYgbm90LgotICBib29sIFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zTG9j
a2VkKCkKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4
KTsKLQotICAvLyBDbGVhcnMgdGhlIE9OX0NBTEwoKXMgc2V0IG9uIHRoaXMgbW9jayBmdW5jdGlv
bi4KLSAgdmlydHVhbCB2b2lkIENsZWFyRGVmYXVsdEFjdGlvbnNMb2NrZWQoKQotICAgICAgR1RF
U1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpID0gMDsKLQotICAvLyBJ
biBhbGwgb2YgdGhlIGZvbGxvd2luZyBVbnR5cGVkKiBmdW5jdGlvbnMsIGl0J3MgdGhlIGNhbGxl
cidzCi0gIC8vIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGUgY29ycmVjdG5lc3Mgb2Yg
dGhlIGFyZ3VtZW50cycKLSAgLy8gdHlwZXMuCi0KLSAgLy8gUGVyZm9ybXMgdGhlIGRlZmF1bHQg
YWN0aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJucwotICAvLyB0aGUgYWN0
aW9uJ3MgcmVzdWx0LiAgVGhlIGNhbGwgZGVzY3JpcHRpb24gc3RyaW5nIHdpbGwgYmUgdXNlZCBp
bgotICAvLyB0aGUgZXJyb3IgbWVzc2FnZSB0byBkZXNjcmliZSB0aGUgY2FsbCBpbiB0aGUgY2Fz
ZSB0aGUgZGVmYXVsdAotICAvLyBhY3Rpb24gZmFpbHMuCi0gIC8vIEwgPSAqCi0gIHZpcnR1YWwg
VW50eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UqIFVudHlwZWRQZXJmb3JtRGVmYXVsdEFjdGlv
bigKLSAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncywgY29uc3Qgc3RkOjpzdHJpbmcmIGNh
bGxfZGVzY3JpcHRpb24pIGNvbnN0ID0gMDsKLQotICAvLyBQZXJmb3JtcyB0aGUgZ2l2ZW4gYWN0
aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJucwotICAvLyB0aGUgYWN0aW9u
J3MgcmVzdWx0LgotICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xk
ZXJCYXNlKiBVbnR5cGVkUGVyZm9ybUFjdGlvbigKLSAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRf
YWN0aW9uLAotICAgICAgY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzKSBjb25zdCA9IDA7Ci0KLSAg
Ly8gV3JpdGVzIGEgbWVzc2FnZSB0aGF0IHRoZSBjYWxsIGlzIHVuaW50ZXJlc3RpbmcgKGkuZS4g
bmVpdGhlcgotICAvLyBleHBsaWNpdGx5IGV4cGVjdGVkIG5vciBleHBsaWNpdGx5IHVuZXhwZWN0
ZWQpIHRvIHRoZSBnaXZlbgotICAvLyBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgVW50eXBlZERl
c2NyaWJlVW5pbnRlcmVzdGluZ0NhbGwoCi0gICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3Ms
Ci0gICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0Ci0gICAgICAgICAgR1RFU1RfTE9DS19F
WENMVURFRF8oZ19nbW9ja19tdXRleCkgPSAwOwotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVjdGF0
aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYXJndW1lbnRzCi0gIC8vIChvciBO
VUxMIGlzIHRoZXJlJ3Mgbm8gbWF0Y2gpOyB3aGVuIGEgbWF0Y2ggaXMgZm91bmQsCi0gIC8vIHVu
dHlwZWRfYWN0aW9uIGlzIHNldCB0byBwb2ludCB0byB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJl
Ci0gIC8vIHBlcmZvcm1lZCAob3IgTlVMTCBpZiB0aGUgYWN0aW9uIGlzICJkbyBkZWZhdWx0Iiks
IGFuZAotICAvLyBpc19leGNlc3NpdmUgaXMgbW9kaWZpZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0
aGUgY2FsbCBleGNlZWRzIHRoZQotICAvLyBleHBlY3RlZCBudW1iZXIuCi0gIHZpcnR1YWwgY29u
c3QgRXhwZWN0YXRpb25CYXNlKiBVbnR5cGVkRmluZE1hdGNoaW5nRXhwZWN0YXRpb24oCi0gICAg
ICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MsCi0gICAgICBjb25zdCB2b2lkKiogdW50eXBlZF9h
Y3Rpb24sIGJvb2wqIGlzX2V4Y2Vzc2l2ZSwKLSAgICAgIDo6c3RkOjpvc3RyZWFtKiB3aGF0LCA6
OnN0ZDo6b3N0cmVhbSogd2h5KQotICAgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21v
Y2tfbXV0ZXgpID0gMDsKLQotICAvLyBQcmludHMgdGhlIGdpdmVuIGZ1bmN0aW9uIGFyZ3VtZW50
cyB0byB0aGUgb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIFVudHlwZWRQcmludEFyZ3MoY29uc3Qg
dm9pZCogdW50eXBlZF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0
ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLQotICAvLyBTZXRzIHRoZSBtb2NrIG9iamVjdCB0
aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8sIGFuZCByZWdpc3RlcnMKLSAgLy8gdGhpcyBpbmZv
cm1hdGlvbiBpbiB0aGUgZ2xvYmFsIG1vY2sgcmVnaXN0cnkuICBXaWxsIGJlIGNhbGxlZAotICAv
LyB3aGVuZXZlciBhbiBFWFBFQ1RfQ0FMTCgpIG9yIE9OX0NBTEwoKSBpcyBleGVjdXRlZCBvbiB0
aGlzIG1vY2sKLSAgLy8gbWV0aG9kLgotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVuYW1l
IHRvIFNldEFuZFJlZ2lzdGVyT3duZXIoKS4KLSAgdm9pZCBSZWdpc3Rlck93bmVyKGNvbnN0IHZv
aWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCk7
Ci0KLSAgLy8gU2V0cyB0aGUgbW9jayBvYmplY3QgdGhpcyBtb2NrIG1ldGhvZCBiZWxvbmdzIHRv
LCBhbmQgc2V0cyB0aGUKLSAgLy8gbmFtZSBvZiB0aGUgbW9jayBmdW5jdGlvbi4gIFdpbGwgYmUg
Y2FsbGVkIHVwb24gZWFjaCBpbnZvY2F0aW9uCi0gIC8vIG9mIHRoaXMgbW9jayBmdW5jdGlvbi4K
LSAgdm9pZCBTZXRPd25lckFuZE5hbWUoY29uc3Qgdm9pZCogbW9ja19vYmosIGNvbnN0IGNoYXIq
IG5hbWUpCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KTsKLQotICAv
LyBSZXR1cm5zIHRoZSBtb2NrIG9iamVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8uICBN
dXN0IGJlCi0gIC8vIGNhbGxlZCBhZnRlciBSZWdpc3Rlck93bmVyKCkgb3IgU2V0T3duZXJBbmRO
YW1lKCkgaGFzIGJlZW4KLSAgLy8gY2FsbGVkLgotICBjb25zdCB2b2lkKiBNb2NrT2JqZWN0KCkg
Y29uc3QKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpOwotCi0gIC8v
IFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBtb2NrIG1ldGhvZC4gIE11c3QgYmUgY2FsbGVkIGFm
dGVyCi0gIC8vIFNldE93bmVyQW5kTmFtZSgpIGhhcyBiZWVuIGNhbGxlZC4KLSAgY29uc3QgY2hh
ciogTmFtZSgpIGNvbnN0Ci0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4
KTsKLQotICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhpcyBtb2NrIGZ1bmN0
aW9uIHdpdGggdGhlIGdpdmVuCi0gIC8vIGFyZ3VtZW50cy4gIFRoaXMgZnVuY3Rpb24gY2FuIGJl
IHNhZmVseSBjYWxsZWQgZnJvbSBtdWx0aXBsZQotICAvLyB0aHJlYWRzIGNvbmN1cnJlbnRseS4g
IFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZQotICAvLyByZXN1bHQu
Ci0gIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkSW52b2tlV2l0aCgKLSAg
ICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncykKLSAgICAgICAgICBHVEVTVF9MT0NLX0VYQ0xV
REVEXyhnX2dtb2NrX211dGV4KTsKLQotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiBzdGQ6OnZlY3Rv
cjxjb25zdCB2b2lkKj4gVW50eXBlZE9uQ2FsbFNwZWNzOwotCi0gIHR5cGVkZWYgc3RkOjp2ZWN0
b3I8aW50ZXJuYWw6OmxpbmtlZF9wdHI8RXhwZWN0YXRpb25CYXNlPiA+Ci0gIFVudHlwZWRFeHBl
Y3RhdGlvbnM7Ci0KLSAgLy8gUmV0dXJucyBhbiBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZl
cmVuY2VzIGFuZCBjby1vd25zIGV4cCwKLSAgLy8gd2hpY2ggbXVzdCBiZSBhbiBleHBlY3RhdGlv
biBvbiB0aGlzIG1vY2sgZnVuY3Rpb24uCi0gIEV4cGVjdGF0aW9uIEdldEhhbmRsZU9mKEV4cGVj
dGF0aW9uQmFzZSogZXhwKTsKLQotICAvLyBBZGRyZXNzIG9mIHRoZSBtb2NrIG9iamVjdCB0aGlz
IG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8uICBPbmx5Ci0gIC8vIHZhbGlkIGFmdGVyIHRoaXMgbW9j
ayBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIG9yCi0gIC8vIE9OX0NBTEwvRVhQRUNUX0NBTEwgaGFz
IGJlZW4gaW52b2tlZCBvbiBpdC4KLSAgY29uc3Qgdm9pZCogbW9ja19vYmpfOyAgLy8gUHJvdGVj
dGVkIGJ5IGdfZ21vY2tfbXV0ZXguCi0KLSAgLy8gTmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcg
bW9ja2VkLiAgT25seSB2YWxpZCBhZnRlciB0aGlzIG1vY2sKLSAgLy8gbWV0aG9kIGhhcyBiZWVu
IGNhbGxlZC4KLSAgY29uc3QgY2hhciogbmFtZV87ICAvLyBQcm90ZWN0ZWQgYnkgZ19nbW9ja19t
dXRleC4KLQotICAvLyBBbGwgZGVmYXVsdCBhY3Rpb24gc3BlY3MgZm9yIHRoaXMgZnVuY3Rpb24g
bW9ja2VyLgotICBVbnR5cGVkT25DYWxsU3BlY3MgdW50eXBlZF9vbl9jYWxsX3NwZWNzXzsKLQot
ICAvLyBBbGwgZXhwZWN0YXRpb25zIGZvciB0aGlzIGZ1bmN0aW9uIG1vY2tlci4KLSAgVW50eXBl
ZEV4cGVjdGF0aW9ucyB1bnR5cGVkX2V4cGVjdGF0aW9uc187Ci19OyAgLy8gY2xhc3MgVW50eXBl
ZEZ1bmN0aW9uTW9ja2VyQmFzZQotCi0vLyBVbnR5cGVkIGJhc2UgY2xhc3MgZm9yIE9uQ2FsbFNw
ZWM8Rj4uCi1jbGFzcyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UgewotIHB1YmxpYzoKLSAgLy8gVGhl
IGFyZ3VtZW50cyBhcmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBPTl9DQUxMKCkgc3RhdGVtZW50Lgot
ICBVbnR5cGVkT25DYWxsU3BlY0Jhc2UoY29uc3QgY2hhciogYV9maWxlLCBpbnQgYV9saW5lKQot
ICAgICAgOiBmaWxlXyhhX2ZpbGUpLCBsaW5lXyhhX2xpbmUpLCBsYXN0X2NsYXVzZV8oa05vbmUp
IHt9Ci0KLSAgLy8gV2hlcmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdhcyB0aGUgZGVmYXVsdCBhY3Rp
b24gc3BlYyBkZWZpbmVkPwotICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmls
ZV87IH0KLSAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQotCi0gcHJvdGVjdGVk
OgotICAvLyBHaXZlcyBlYWNoIGNsYXVzZSBpbiB0aGUgT05fQ0FMTCgpIHN0YXRlbWVudCBhIG5h
bWUuCi0gIGVudW0gQ2xhdXNlIHsKLSAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0
aGUgZW51bSBtZW1iZXJzISAgVGhlIHJ1bi10aW1lCi0gICAgLy8gc3ludGF4IGNoZWNraW5nIHJl
bGllcyBvbiBpdC4KLSAgICBrTm9uZSwKLSAgICBrV2l0aCwKLSAgICBrV2lsbEJ5RGVmYXVsdAot
ICB9OwotCi0gIC8vIEFzc2VydHMgdGhhdCB0aGUgT05fQ0FMTCgpIHN0YXRlbWVudCBoYXMgYSBj
ZXJ0YWluIHByb3BlcnR5LgotICB2b2lkIEFzc2VydFNwZWNQcm9wZXJ0eShib29sIHByb3BlcnR5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZmFpbHVyZV9t
ZXNzYWdlKSBjb25zdCB7Ci0gICAgQXNzZXJ0KHByb3BlcnR5LCBmaWxlXywgbGluZV8sIGZhaWx1
cmVfbWVzc2FnZSk7Ci0gIH0KLQotICAvLyBFeHBlY3RzIHRoYXQgdGhlIE9OX0NBTEwoKSBzdGF0
ZW1lbnQgaGFzIGEgY2VydGFpbiBwcm9wZXJ0eS4KLSAgdm9pZCBFeHBlY3RTcGVjUHJvcGVydHko
Ym9vbCBwcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIGZhaWx1cmVfbWVzc2FnZSkgY29uc3QgewotICAgIEV4cGVjdChwcm9wZXJ0eSwgZmlsZV8s
IGxpbmVfLCBmYWlsdXJlX21lc3NhZ2UpOwotICB9Ci0KLSAgY29uc3QgY2hhciogZmlsZV87Ci0g
IGludCBsaW5lXzsKLQotICAvLyBUaGUgbGFzdCBjbGF1c2UgaW4gdGhlIE9OX0NBTEwoKSBzdGF0
ZW1lbnQgYXMgc2VlbiBzbyBmYXIuCi0gIC8vIEluaXRpYWxseSBrTm9uZSBhbmQgY2hhbmdlcyBh
cyB0aGUgc3RhdGVtZW50IGlzIHBhcnNlZC4KLSAgQ2xhdXNlIGxhc3RfY2xhdXNlXzsKLX07ICAv
LyBjbGFzcyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UKLQotLy8gVGhpcyB0ZW1wbGF0ZSBjbGFzcyBp
bXBsZW1lbnRzIGFuIE9OX0NBTEwgc3BlYy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotY2xhc3Mg
T25DYWxsU3BlYyA6IHB1YmxpYyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UgewotIHB1YmxpYzoKLSAg
dHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxl
OwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudE1hdGNoZXJUdXBsZSBB
cmd1bWVudE1hdGNoZXJUdXBsZTsKLQotICAvLyBDb25zdHJ1Y3RzIGFuIE9uQ2FsbFNwZWMgb2Jq
ZWN0IGZyb20gdGhlIGluZm9ybWF0aW9uIGluc2lkZQotICAvLyB0aGUgcGFyZW50aGVzaXMgb2Yg
YW4gT05fQ0FMTCgpIHN0YXRlbWVudC4KLSAgT25DYWxsU3BlYyhjb25zdCBjaGFyKiBhX2ZpbGUs
IGludCBhX2xpbmUsCi0gICAgICAgICAgICAgY29uc3QgQXJndW1lbnRNYXRjaGVyVHVwbGUmIG1h
dGNoZXJzKQotICAgICAgOiBVbnR5cGVkT25DYWxsU3BlY0Jhc2UoYV9maWxlLCBhX2xpbmUpLAot
ICAgICAgICBtYXRjaGVyc18obWF0Y2hlcnMpLAotICAgICAgICAvLyBCeSBkZWZhdWx0LCBleHRy
YV9tYXRjaGVyXyBzaG91bGQgbWF0Y2ggYW55dGhpbmcuICBIb3dldmVyLAotICAgICAgICAvLyB3
ZSBjYW5ub3QgaW5pdGlhbGl6ZSBpdCB3aXRoIF8gYXMgdGhhdCB0cmlnZ2VycyBhIGNvbXBpbGVy
Ci0gICAgICAgIC8vIGJ1ZyBpbiBTeW1iaWFuJ3MgQysrIGNvbXBpbGVyIChjYW5ub3QgZGVjaWRl
IGJldHdlZW4gdHdvCi0gICAgICAgIC8vIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzIG9mIE1hdGNo
ZXI8Y29uc3QgQXJndW1lbnRUdXBsZSY+KS4KLSAgICAgICAgZXh0cmFfbWF0Y2hlcl8oQTxjb25z
dCBBcmd1bWVudFR1cGxlJj4oKSkgewotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLldpdGgo
KSBjbGF1c2UuCi0gIE9uQ2FsbFNwZWMmIFdpdGgoY29uc3QgTWF0Y2hlcjxjb25zdCBBcmd1bWVu
dFR1cGxlJj4mIG0pIHsKLSAgICAvLyBNYWtlcyBzdXJlIHRoaXMgaXMgY2FsbGVkIGF0IG1vc3Qg
b25jZS4KLSAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDwga1dpdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICIuV2l0aCgpIGNhbm5vdCBhcHBlYXIgIgotICAgICAgICAgICAg
ICAgICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gT05fQ0FMTCgpLiIpOwotICAgIGxhc3Rf
Y2xhdXNlXyA9IGtXaXRoOwotCi0gICAgZXh0cmFfbWF0Y2hlcl8gPSBtOwotICAgIHJldHVybiAq
dGhpczsKLSAgfQotCi0gIC8vIEltcGxlbWVudHMgdGhlIC5XaWxsQnlEZWZhdWx0KCkgY2xhdXNl
LgotICBPbkNhbGxTcGVjJiBXaWxsQnlEZWZhdWx0KGNvbnN0IEFjdGlvbjxGPiYgYWN0aW9uKSB7
Ci0gICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtXaWxsQnlEZWZhdWx0LAot
ICAgICAgICAgICAgICAgICAgICAgICAiLldpbGxCeURlZmF1bHQoKSBtdXN0IGFwcGVhciAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICJleGFjdGx5IG9uY2UgaW4gYW4gT05fQ0FMTCgpLiIpOwot
ICAgIGxhc3RfY2xhdXNlXyA9IGtXaWxsQnlEZWZhdWx0OwotCi0gICAgRXhwZWN0U3BlY1Byb3Bl
cnR5KCFhY3Rpb24uSXNEb0RlZmF1bHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkRvRGVm
YXVsdCgpIGNhbm5vdCBiZSB1c2VkIGluIE9OX0NBTEwoKS4iKTsKLSAgICBhY3Rpb25fID0gYWN0
aW9uOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IGdpdmVuIGFyZ3VtZW50cyBtYXRjaCB0aGUgbWF0Y2hlcnMuCi0gIGJvb2wgTWF0Y2hlcyhjb25z
dCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7Ci0gICAgcmV0dXJuIFR1cGxlTWF0Y2hlcyht
YXRjaGVyc18sIGFyZ3MpICYmIGV4dHJhX21hdGNoZXJfLk1hdGNoZXMoYXJncyk7Ci0gIH0KLQot
ICAvLyBSZXR1cm5zIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotICBjb25zdCBB
Y3Rpb248Rj4mIEdldEFjdGlvbigpIGNvbnN0IHsKLSAgICBBc3NlcnRTcGVjUHJvcGVydHkobGFz
dF9jbGF1c2VfID09IGtXaWxsQnlEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAiLldp
bGxCeURlZmF1bHQoKSBtdXN0IGFwcGVhciBleGFjdGx5ICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIm9uY2UgaW4gYW4gT05fQ0FMTCgpLiIpOwotICAgIHJldHVybiBhY3Rpb25fOwotICB9Ci0K
LSBwcml2YXRlOgotICAvLyBUaGUgaW5mb3JtYXRpb24gaW4gc3RhdGVtZW50Ci0gIC8vCi0gIC8v
ICAgT05fQ0FMTChtb2NrX29iamVjdCwgTWV0aG9kKG1hdGNoZXJzKSkKLSAgLy8gICAgICAgLldp
dGgobXVsdGktYXJndW1lbnQtbWF0Y2hlcikKLSAgLy8gICAgICAgLldpbGxCeURlZmF1bHQoYWN0
aW9uKTsKLSAgLy8KLSAgLy8gaXMgcmVjb3JkZWQgaW4gdGhlIGRhdGEgbWVtYmVycyBsaWtlIHRo
aXM6Ci0gIC8vCi0gIC8vICAgc291cmNlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc3RhdGVtZW50
ID0+IGZpbGVfCi0gIC8vICAgbGluZSBudW1iZXIgb2YgdGhlIHN0YXRlbWVudCAgICAgICAgICAg
ID0+IGxpbmVfCi0gIC8vICAgbWF0Y2hlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0+IG1hdGNoZXJzXwotICAvLyAgIG11bHRpLWFyZ3VtZW50LW1hdGNoZXIgICAgICAgICAgICAg
ICAgICA9PiBleHRyYV9tYXRjaGVyXwotICAvLyAgIGFjdGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9PiBhY3Rpb25fCi0gIEFyZ3VtZW50TWF0Y2hlclR1cGxlIG1hdGNoZXJz
XzsKLSAgTWF0Y2hlcjxjb25zdCBBcmd1bWVudFR1cGxlJj4gZXh0cmFfbWF0Y2hlcl87Ci0gIEFj
dGlvbjxGPiBhY3Rpb25fOwotfTsgIC8vIGNsYXNzIE9uQ2FsbFNwZWMKLQotLy8gUG9zc2libGUg
cmVhY3Rpb25zIG9uIHVuaW50ZXJlc3RpbmcgY2FsbHMuCi1lbnVtIENhbGxSZWFjdGlvbiB7Ci0g
IGtBbGxvdywKLSAga1dhcm4sCi0gIGtGYWlsLAotICBrRGVmYXVsdCA9IGtXYXJuICAvLyBCeSBk
ZWZhdWx0LCB3YXJuIGFib3V0IHVuaW50ZXJlc3RpbmcgY2FsbHMuCi19OwotCi19ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKLQotLy8gVXRpbGl0aWVzIGZvciBtYW5pcHVsYXRpbmcgbW9jayBvYmpl
Y3RzLgotY2xhc3MgR1RFU1RfQVBJXyBNb2NrIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBmb2xsb3dp
bmcgcHVibGljIG1ldGhvZHMgY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCi0KLSAgLy8gVGVs
bHMgR29vZ2xlIE1vY2sgdG8gaWdub3JlIG1vY2tfb2JqIHdoZW4gY2hlY2tpbmcgZm9yIGxlYWtl
ZAotICAvLyBtb2NrIG9iamVjdHMuCi0gIHN0YXRpYyB2b2lkIEFsbG93TGVhayhjb25zdCB2b2lk
KiBtb2NrX29iaikKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2Nr
X211dGV4KTsKLQotICAvLyBWZXJpZmllcyBhbmQgY2xlYXJzIGFsbCBleHBlY3RhdGlvbnMgb24g
dGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICAvLyBJZiB0aGUgZXhwZWN0YXRpb25zIGFyZW4ndCBz
YXRpc2ZpZWQsIGdlbmVyYXRlcyBvbmUgb3IgbW9yZQotICAvLyBHb29nbGUgVGVzdCBub24tZmF0
YWwgZmFpbHVyZXMgYW5kIHJldHVybnMgZmFsc2UuCi0gIHN0YXRpYyBib29sIFZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfTE9DS19FWENMVURF
RF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFZlcmlmaWVzIGFsbCBleHBlY3Rh
dGlvbnMgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0IGFuZCBjbGVhcnMgaXRzCi0gIC8vIGRlZmF1
bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zLiAgUmV0dXJucyB0cnVlIGlmZiB0aGUKLSAgLy8g
dmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLgotICBzdGF0aWMgYm9vbCBWZXJpZnlBbmRDbGVh
cih2b2lkKiBtb2NrX29iaikKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpn
X2dtb2NrX211dGV4KTsKLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW50
eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTsKLQotICAvLyBOZWVkZWQgZm9yIGEgZnVuY3Rpb24gbW9j
a2VyIHRvIHJlZ2lzdGVyIGl0c2VsZiAoc28gdGhhdCB3ZSBrbm93Ci0gIC8vIGhvdyB0byBjbGVh
ciBhIG1vY2sgb2JqZWN0KS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBN
PgotICBmcmllbmQgY2xhc3MgTmljZU1vY2s7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+Ci0g
IGZyaWVuZCBjbGFzcyBOYWdneU1vY2s7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE0+Ci0gIGZy
aWVuZCBjbGFzcyBTdHJpY3RNb2NrOwotCi0gIC8vIFRlbGxzIEdvb2dsZSBNb2NrIHRvIGFsbG93
IHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gdGhlIGdpdmVuIG1vY2sKLSAgLy8gb2JqZWN0LgotICBz
dGF0aWMgdm9pZCBBbGxvd1VuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29iaikK
LSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLQot
ICAvLyBUZWxscyBHb29nbGUgTW9jayB0byB3YXJuIHRoZSB1c2VyIGFib3V0IHVuaW50ZXJlc3Rp
bmcgY2FsbHMgb24KLSAgLy8gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0aWMgdm9pZCBX
YXJuVW5pbnRlcmVzdGluZ0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFRlbGxzIEdv
b2dsZSBNb2NrIHRvIGZhaWwgdW5pbnRlcmVzdGluZyBjYWxscyBvbiB0aGUgZ2l2ZW4gbW9jawot
ICAvLyBvYmplY3QuCi0gIHN0YXRpYyB2b2lkIEZhaWxVbmludGVyZXN0aW5nQ2FsbHMoY29uc3Qg
dm9pZCogbW9ja19vYmopCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19n
bW9ja19tdXRleCk7Ci0KLSAgLy8gVGVsbHMgR29vZ2xlIE1vY2sgdGhlIGdpdmVuIG1vY2sgb2Jq
ZWN0IGlzIGJlaW5nIGRlc3Ryb3llZCBhbmQKLSAgLy8gaXRzIGVudHJ5IGluIHRoZSBjYWxsLXJl
YWN0aW9uIHRhYmxlIHNob3VsZCBiZSByZW1vdmVkLgotICBzdGF0aWMgdm9pZCBVbnJlZ2lzdGVy
Q2FsbFJlYWN0aW9uKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfTE9DS19FWENM
VURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFJldHVybnMgdGhlIHJlYWN0
aW9uIEdvb2dsZSBNb2NrIHdpbGwgaGF2ZSBvbiB1bmludGVyZXN0aW5nIGNhbGxzCi0gIC8vIG1h
ZGUgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0aWMgaW50ZXJuYWw6OkNhbGxSZWFj
dGlvbiBHZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgY29uc3Qgdm9pZCog
bW9ja19vYmopCi0gICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21v
Y2tfbXV0ZXgpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiB0aGUg
Z2l2ZW4gbW9jayBvYmplY3QgaGF2ZSBiZWVuCi0gIC8vIHNhdGlzZmllZC4gIFJlcG9ydHMgb25l
IG9yIG1vcmUgR29vZ2xlIFRlc3Qgbm9uLWZhdGFsIGZhaWx1cmVzCi0gIC8vIGFuZCByZXR1cm5z
IGZhbHNlIGlmIG5vdC4KLSAgc3RhdGljIGJvb2wgVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNM
b2NrZWQodm9pZCogbW9ja19vYmopCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJF
RF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIENsZWFycyBhbGwgT05fQ0FMTCgp
cyBzZXQgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0aWMgdm9pZCBDbGVhckRlZmF1
bHRBY3Rpb25zTG9ja2VkKHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xP
Q0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLQotICAvLyBSZWdpc3RlcnMg
YSBtb2NrIG9iamVjdCBhbmQgYSBtb2NrIG1ldGhvZCBpdCBvd25zLgotICBzdGF0aWMgdm9pZCBS
ZWdpc3RlcigKLSAgICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqLAotICAgICAgaW50ZXJuYWw6OlVu
dHlwZWRGdW5jdGlvbk1vY2tlckJhc2UqIG1vY2tlcikKLSAgICAgICAgICBHVEVTVF9MT0NLX0VY
Q0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7Ci0KLSAgLy8gVGVsbHMgR29vZ2xlIE1v
Y2sgd2hlcmUgaW4gdGhlIHNvdXJjZSBjb2RlIG1vY2tfb2JqIGlzIHVzZWQgaW4gYW4KLSAgLy8g
T05fQ0FMTCBvciBFWFBFQ1RfQ0FMTC4gIEluIGNhc2UgbW9ja19vYmogaXMgbGVha2VkLCB0aGlz
Ci0gIC8vIGluZm9ybWF0aW9uIGhlbHBzIHRoZSB1c2VyIGlkZW50aWZ5IHdoaWNoIG9iamVjdCBp
dCBpcy4KLSAgc3RhdGljIHZvaWQgUmVnaXN0ZXJVc2VCeU9uQ2FsbE9yRXhwZWN0Q2FsbCgKLSAg
ICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKLSAg
ICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7Ci0K
LSAgLy8gVW5yZWdpc3RlcnMgYSBtb2NrIG1ldGhvZDsgcmVtb3ZlcyB0aGUgb3duaW5nIG1vY2sg
b2JqZWN0IGZyb20KLSAgLy8gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGxhc3QgbW9jayBtZXRob2Qg
YXNzb2NpYXRlZCB3aXRoIGl0IGhhcwotICAvLyBiZWVuIHVucmVnaXN0ZXJlZC4gIFRoaXMgaXMg
Y2FsbGVkIG9ubHkgaW4gdGhlIGRlc3RydWN0b3Igb2YKLSAgLy8gRnVuY3Rpb25Nb2NrZXJCYXNl
LgotICBzdGF0aWMgdm9pZCBVbnJlZ2lzdGVyTG9ja2VkKGludGVybmFsOjpVbnR5cGVkRnVuY3Rp
b25Nb2NrZXJCYXNlKiBtb2NrZXIpCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJF
RF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotfTsgIC8vIGNsYXNzIE1vY2sKLQotLy8gQW4g
YWJzdHJhY3QgaGFuZGxlIG9mIGFuIGV4cGVjdGF0aW9uLiAgVXNlZnVsIGluIHRoZSAuQWZ0ZXIo
KQotLy8gY2xhdXNlIG9mIEVYUEVDVF9DQUxMKCkgZm9yIHNldHRpbmcgdGhlIChwYXJ0aWFsKSBv
cmRlciBvZgotLy8gZXhwZWN0YXRpb25zLiAgVGhlIHN5bnRheDoKLS8vCi0vLyAgIEV4cGVjdGF0
aW9uIGUxID0gRVhQRUNUX0NBTEwoLi4uKS4uLjsKLS8vICAgRVhQRUNUX0NBTEwoLi4uKS5BZnRl
cihlMSkuLi47Ci0vLwotLy8gc2V0cyB0d28gZXhwZWN0YXRpb25zIHdoZXJlIHRoZSBsYXR0ZXIg
Y2FuIG9ubHkgYmUgbWF0Y2hlZCBhZnRlcgotLy8gdGhlIGZvcm1lciBoYXMgYmVlbiBzYXRpc2Zp
ZWQuCi0vLwotLy8gTm90ZXM6Ci0vLyAgIC0gVGhpcyBjbGFzcyBpcyBjb3B5YWJsZSBhbmQgaGFz
IHZhbHVlIHNlbWFudGljcy4KLS8vICAgLSBDb25zdG5lc3MgaXMgc2hhbGxvdzogYSBjb25zdCBF
eHBlY3RhdGlvbiBvYmplY3QgaXRzZWxmIGNhbm5vdAotLy8gICAgIGJlIG1vZGlmaWVkLCBidXQg
dGhlIG11dGFibGUgbWV0aG9kcyBvZiB0aGUgRXhwZWN0YXRpb25CYXNlCi0vLyAgICAgb2JqZWN0
IGl0IHJlZmVyZW5jZXMgY2FuIGJlIGNhbGxlZCB2aWEgZXhwZWN0YXRpb25fYmFzZSgpLgotLy8g
ICAtIFRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IgYXJlIGRlZmluZWQgb3V0LW9mLWxp
bmUgYmVjYXVzZQotLy8gICAgIHRoZSBTeW1iaWFuIFdJTlNDVyBjb21waWxlciB3YW50cyB0byBv
dGhlcndpc2UgaW5zdGFudGlhdGUgdGhlbQotLy8gICAgIHdoZW4gaXQgc2VlcyB0aGlzIGNsYXNz
IGRlZmluaXRpb24sIGF0IHdoaWNoIHBvaW50IGl0IGRvZXNuJ3QgaGF2ZQotLy8gICAgIEV4cGVj
dGF0aW9uQmFzZSBhdmFpbGFibGUgeWV0LCBsZWFkaW5nIHRvIGluY29ycmVjdCBkZXN0cnVjdGlv
bgotLy8gICAgIGluIHRoZSBsaW5rZWRfcHRyIChvciBjb21waWxhdGlvbiBlcnJvcnMgaWYgdXNp
bmcgYSBjaGVja2luZwotLy8gICAgIGxpbmtlZF9wdHIpLgotY2xhc3MgR1RFU1RfQVBJXyBFeHBl
Y3RhdGlvbiB7Ci0gcHVibGljOgotICAvLyBDb25zdHJ1Y3RzIGEgbnVsbCBvYmplY3QgdGhhdCBk
b2Vzbid0IHJlZmVyZW5jZSBhbnkgZXhwZWN0YXRpb24uCi0gIEV4cGVjdGF0aW9uKCk7Ci0KLSAg
fkV4cGVjdGF0aW9uKCk7Ci0KLSAgLy8gVGhpcyBzaW5nbGUtYXJndW1lbnQgY3RvciBtdXN0IG5v
dCBiZSBleHBsaWNpdCwgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUKLSAgLy8gICBFeHBlY3RhdGlv
biBlID0gRVhQRUNUX0NBTEwoLi4uKTsKLSAgLy8gc3ludGF4LgotICAvLwotICAvLyBBIFR5cGVk
RXhwZWN0YXRpb24gb2JqZWN0IHN0b3JlcyBpdHMgcHJlLXJlcXVpc2l0ZXMgYXMKLSAgLy8gRXhw
ZWN0YXRpb24gb2JqZWN0cywgYW5kIG5lZWRzIHRvIGNhbGwgdGhlIG5vbi1jb25zdCBSZXRpcmUo
KQotICAvLyBtZXRob2Qgb24gdGhlIEV4cGVjdGF0aW9uQmFzZSBvYmplY3RzIHRoZXkgcmVmZXJl
bmNlLiAgVGhlcmVmb3JlCi0gIC8vIEV4cGVjdGF0aW9uIG11c3QgcmVjZWl2ZSBhICpub24tY29u
c3QqIHJlZmVyZW5jZSB0byB0aGUKLSAgLy8gRXhwZWN0YXRpb25CYXNlIG9iamVjdC4KLSAgRXhw
ZWN0YXRpb24oaW50ZXJuYWw6OkV4cGVjdGF0aW9uQmFzZSYgZXhwKTsgIC8vIE5PTElOVAotCi0g
IC8vIFRoZSBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBvcGVyYXRvcj0gd29yayBl
eGFjdGx5IGFzCi0gIC8vIGludGVuZGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRlZmluZSBvdXIg
b3duLgotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgcmhzIHJlZmVyZW5jZXMgdGhlIHNhbWUgZXhw
ZWN0YXRpb24gYXMgdGhpcyBvYmplY3QgZG9lcy4KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4
cGVjdGF0aW9uJiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gZXhwZWN0YXRpb25fYmFzZV8gPT0g
cmhzLmV4cGVjdGF0aW9uX2Jhc2VfOwotICB9Ci0KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4
cGVjdGF0aW9uJiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsgfQotCi0gcHJp
dmF0ZToKLSAgZnJpZW5kIGNsYXNzIEV4cGVjdGF0aW9uU2V0OwotICBmcmllbmQgY2xhc3MgU2Vx
dWVuY2U7Ci0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OmludGVybmFsOjpFeHBlY3RhdGlvbkJh
c2U7Ci0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbnR5cGVkRnVuY3Rpb25N
b2NrZXJCYXNlOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBmcmllbmQgY2xhc3MgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGPgotICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZWRFeHBlY3Rh
dGlvbjsKLQotICAvLyBUaGlzIGNvbXBhcmF0b3IgaXMgbmVlZGVkIGZvciBwdXR0aW5nIEV4cGVj
dGF0aW9uIG9iamVjdHMgaW50byBhIHNldC4KLSAgY2xhc3MgTGVzcyB7Ci0gICBwdWJsaWM6Ci0g
ICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEV4cGVjdGF0aW9uJiBsaHMsIGNvbnN0IEV4cGVjdGF0
aW9uJiByaHMpIGNvbnN0IHsKLSAgICAgIHJldHVybiBsaHMuZXhwZWN0YXRpb25fYmFzZV8uZ2V0
KCkgPCByaHMuZXhwZWN0YXRpb25fYmFzZV8uZ2V0KCk7Ci0gICAgfQotICB9OwotCi0gIHR5cGVk
ZWYgOjpzdGQ6OnNldDxFeHBlY3RhdGlvbiwgTGVzcz4gU2V0OwotCi0gIEV4cGVjdGF0aW9uKAot
ICAgICAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8aW50ZXJuYWw6OkV4cGVjdGF0aW9uQmFz
ZT4mIGV4cGVjdGF0aW9uX2Jhc2UpOwotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVjdGF0aW9uIHRo
aXMgb2JqZWN0IHJlZmVyZW5jZXMuCi0gIGNvbnN0IGludGVybmFsOjpsaW5rZWRfcHRyPGludGVy
bmFsOjpFeHBlY3RhdGlvbkJhc2U+JgotICBleHBlY3RhdGlvbl9iYXNlKCkgY29uc3QgewotICAg
IHJldHVybiBleHBlY3RhdGlvbl9iYXNlXzsKLSAgfQotCi0gIC8vIEEgbGlua2VkX3B0ciB0aGF0
IGNvLW93bnMgdGhlIGV4cGVjdGF0aW9uIHRoaXMgaGFuZGxlIHJlZmVyZW5jZXMuCi0gIGludGVy
bmFsOjpsaW5rZWRfcHRyPGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2U+IGV4cGVjdGF0aW9uX2Jh
c2VfOwotfTsKLQotLy8gQSBzZXQgb2YgZXhwZWN0YXRpb24gaGFuZGxlcy4gIFVzZWZ1bCBpbiB0
aGUgLkFmdGVyKCkgY2xhdXNlIG9mCi0vLyBFWFBFQ1RfQ0FMTCgpIGZvciBzZXR0aW5nIHRoZSAo
cGFydGlhbCkgb3JkZXIgb2YgZXhwZWN0YXRpb25zLiAgVGhlCi0vLyBzeW50YXg6Ci0vLwotLy8g
ICBFeHBlY3RhdGlvblNldCBlczsKLS8vICAgZXMgKz0gRVhQRUNUX0NBTEwoLi4uKS4uLjsKLS8v
ICAgZXMgKz0gRVhQRUNUX0NBTEwoLi4uKS4uLjsKLS8vICAgRVhQRUNUX0NBTEwoLi4uKS5BZnRl
cihlcykuLi47Ci0vLwotLy8gc2V0cyB0aHJlZSBleHBlY3RhdGlvbnMgd2hlcmUgdGhlIGxhc3Qg
b25lIGNhbiBvbmx5IGJlIG1hdGNoZWQKLS8vIGFmdGVyIHRoZSBmaXJzdCB0d28gaGF2ZSBib3Ro
IGJlZW4gc2F0aXNmaWVkLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgY29weWFibGUgYW5kIGhhcyB2
YWx1ZSBzZW1hbnRpY3MuCi1jbGFzcyBFeHBlY3RhdGlvblNldCB7Ci0gcHVibGljOgotICAvLyBB
IGJpZGlyZWN0aW9uYWwgaXRlcmF0b3IgdGhhdCBjYW4gcmVhZCBhIGNvbnN0IGVsZW1lbnQgaW4g
dGhlIHNldC4KLSAgdHlwZWRlZiBFeHBlY3RhdGlvbjo6U2V0Ojpjb25zdF9pdGVyYXRvciBjb25z
dF9pdGVyYXRvcjsKLQotICAvLyBBbiBvYmplY3Qgc3RvcmVkIGluIHRoZSBzZXQuICBUaGlzIGlz
IGFuIGFsaWFzIG9mIEV4cGVjdGF0aW9uLgotICB0eXBlZGVmIEV4cGVjdGF0aW9uOjpTZXQ6OnZh
bHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IHNldC4KLSAg
RXhwZWN0YXRpb25TZXQoKSB7fQotCi0gIC8vIFRoaXMgc2luZ2xlLWFyZ3VtZW50IGN0b3IgbXVz
dCBub3QgYmUgZXhwbGljaXQsIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlCi0gIC8vICAgRXhwZWN0
YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FMTCguLi4pOwotICAvLyBzeW50YXguCi0gIEV4cGVjdGF0
aW9uU2V0KGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2UmIGV4cCkgeyAgLy8gTk9MSU5UCi0gICAg
KnRoaXMgKz0gRXhwZWN0YXRpb24oZXhwKTsKLSAgfQotCi0gIC8vIFRoaXMgc2luZ2xlLWFyZ3Vt
ZW50IGN0b3IgaW1wbGVtZW50cyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20KLSAgLy8gRXhwZWN0
YXRpb24gYW5kIHRodXMgbXVzdCBub3QgYmUgZXhwbGljaXQuICBUaGlzIGFsbG93cyBlaXRoZXIg
YW4KLSAgLy8gRXhwZWN0YXRpb24gb3IgYW4gRXhwZWN0YXRpb25TZXQgdG8gYmUgdXNlZCBpbiAu
QWZ0ZXIoKS4KLSAgRXhwZWN0YXRpb25TZXQoY29uc3QgRXhwZWN0YXRpb24mIGUpIHsgIC8vIE5P
TElOVAotICAgICp0aGlzICs9IGU7Ci0gIH0KLQotICAvLyBUaGUgY29tcGlsZXItZ2VuZXJhdG9y
IGN0b3IgYW5kIG9wZXJhdG9yPSB3b3JrcyBleGFjdGx5IGFzCi0gIC8vIGludGVuZGVkLCBzbyB3
ZSBkb24ndCBuZWVkIHRvIGRlZmluZSBvdXIgb3duLgotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
cmhzIGNvbnRhaW5zIHRoZSBzYW1lIHNldCBvZiBFeHBlY3RhdGlvbiBvYmplY3RzCi0gIC8vIGFz
IHRoaXMgZG9lcy4KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4cGVjdGF0aW9uU2V0JiByaHMp
IGNvbnN0IHsKLSAgICByZXR1cm4gZXhwZWN0YXRpb25zXyA9PSByaHMuZXhwZWN0YXRpb25zXzsK
LSAgfQotCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFeHBlY3RhdGlvblNldCYgcmhzKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KLQotICAvLyBJbXBsZW1lbnRzIHRoZSBzeW50
YXgKLSAgLy8gICBleHBlY3RhdGlvbl9zZXQgKz0gRVhQRUNUX0NBTEwoLi4uKTsKLSAgRXhwZWN0
YXRpb25TZXQmIG9wZXJhdG9yKz0oY29uc3QgRXhwZWN0YXRpb24mIGUpIHsKLSAgICBleHBlY3Rh
dGlvbnNfLmluc2VydChlKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBpbnQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oZXhwZWN0YXRpb25zXy5zaXplKCkpOyB9
Ci0KLSAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBleHBlY3RhdGlvbnNf
LmJlZ2luKCk7IH0KLSAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZXhwZWN0
YXRpb25zXy5lbmQoKTsgfQotCi0gcHJpdmF0ZToKLSAgRXhwZWN0YXRpb246OlNldCBleHBlY3Rh
dGlvbnNfOwotfTsKLQotCi0vLyBTZXF1ZW5jZSBvYmplY3RzIGFyZSB1c2VkIGJ5IGEgdXNlciB0
byBzcGVjaWZ5IHRoZSByZWxhdGl2ZSBvcmRlcgotLy8gaW4gd2hpY2ggdGhlIGV4cGVjdGF0aW9u
cyBzaG91bGQgbWF0Y2guICBUaGV5IGFyZSBjb3B5YWJsZSAod2UgcmVseQotLy8gb24gdGhlIGNv
bXBpbGVyLWRlZmluZWQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciku
Ci1jbGFzcyBHVEVTVF9BUElfIFNlcXVlbmNlIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMg
YW4gZW1wdHkgc2VxdWVuY2UuCi0gIFNlcXVlbmNlKCkgOiBsYXN0X2V4cGVjdGF0aW9uXyhuZXcg
RXhwZWN0YXRpb24pIHt9Ci0KLSAgLy8gQWRkcyBhbiBleHBlY3RhdGlvbiB0byB0aGlzIHNlcXVl
bmNlLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZQotICAvLyB0aGF0IG5vIG90aGVyIHRocmVhZCBp
cyBhY2Nlc3NpbmcgdGhpcyBTZXF1ZW5jZSBvYmplY3QuCi0gIHZvaWQgQWRkRXhwZWN0YXRpb24o
Y29uc3QgRXhwZWN0YXRpb24mIGV4cGVjdGF0aW9uKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIC8v
IFRoZSBsYXN0IGV4cGVjdGF0aW9uIGluIHRoaXMgc2VxdWVuY2UuICBXZSB1c2UgYSBsaW5rZWRf
cHRyIGhlcmUKLSAgLy8gYmVjYXVzZSBTZXF1ZW5jZSBvYmplY3RzIGFyZSBjb3B5YWJsZSBhbmQg
d2Ugd2FudCB0aGUgY29waWVzIHRvCi0gIC8vIGJlIGFsaWFzZXMuICBUaGUgbGlua2VkX3B0ciBh
bGxvd3MgdGhlIGNvcGllcyB0byBjby1vd24gYW5kIHNoYXJlCi0gIC8vIHRoZSBzYW1lIEV4cGVj
dGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OmxpbmtlZF9wdHI8RXhwZWN0YXRpb24+IGxhc3Rf
ZXhwZWN0YXRpb25fOwotfTsgIC8vIGNsYXNzIFNlcXVlbmNlCi0KLS8vIEFuIG9iamVjdCBvZiB0
aGlzIHR5cGUgY2F1c2VzIGFsbCBFWFBFQ1RfQ0FMTCgpIHN0YXRlbWVudHMKLS8vIGVuY291bnRl
cmVkIGluIGl0cyBzY29wZSB0byBiZSBwdXQgaW4gYW4gYW5vbnltb3VzIHNlcXVlbmNlLiAgVGhl
Ci0vLyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLiAgWW91
IHNob3VsZCBvbmx5Ci0vLyBjcmVhdGUgYW4gSW5TZXF1ZW5jZSBvYmplY3Qgb24gdGhlIHN0YWNr
LgotLy8KLS8vIFRoZSBzb2xlIHB1cnBvc2UgZm9yIHRoaXMgY2xhc3MgaXMgdG8gc3VwcG9ydCBl
YXN5IGRlZmluaXRpb24gb2YKLS8vIHNlcXVlbnRpYWwgZXhwZWN0YXRpb25zLCBlLmcuCi0vLwot
Ly8gICB7Ci0vLyAgICAgSW5TZXF1ZW5jZSBkdW1teTsgIC8vIFRoZSBuYW1lIG9mIHRoZSBvYmpl
Y3QgZG9lc24ndCBtYXR0ZXIuCi0vLwotLy8gICAgIC8vIFRoZSBmb2xsb3dpbmcgZXhwZWN0YXRp
b25zIG11c3QgbWF0Y2ggaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyLgotLy8gICAgIEVYUEVDVF9D
QUxMKGEsIEJhcigpKS4uLjsKLS8vICAgICBFWFBFQ1RfQ0FMTChhLCBCYXooKSkuLi47Ci0vLyAg
ICAgLi4uCi0vLyAgICAgRVhQRUNUX0NBTEwoYiwgWHl6KCkpLi4uOwotLy8gICB9Ci0vLwotLy8g
WW91IGNhbiBjcmVhdGUgSW5TZXF1ZW5jZSBvYmplY3RzIGluIG11bHRpcGxlIHRocmVhZHMsIGFz
IGxvbmcgYXMKLS8vIHRoZXkgYXJlIHVzZWQgdG8gYWZmZWN0IGRpZmZlcmVudCBtb2NrIG9iamVj
dHMuICBUaGUgaWRlYSBpcyB0aGF0Ci0vLyBlYWNoIHRocmVhZCBjYW4gY3JlYXRlIGFuZCBzZXQg
dXAgaXRzIG93biBtb2NrcyBhcyBpZiBpdCdzIHRoZSBvbmx5Ci0vLyB0aHJlYWQuICBIb3dldmVy
LCBmb3IgY2xhcml0eSBvZiB5b3VyIHRlc3RzIHdlIHJlY29tbWVuZCB5b3UgdG8gc2V0Ci0vLyB1
cCBtb2NrcyBpbiB0aGUgbWFpbiB0aHJlYWQgdW5sZXNzIHlvdSBoYXZlIGEgZ29vZCByZWFzb24g
bm90IHRvIGRvCi0vLyBzby4KLWNsYXNzIEdURVNUX0FQSV8gSW5TZXF1ZW5jZSB7Ci0gcHVibGlj
OgotICBJblNlcXVlbmNlKCk7Ci0gIH5JblNlcXVlbmNlKCk7Ci0gcHJpdmF0ZToKLSAgYm9vbCBz
ZXF1ZW5jZV9jcmVhdGVkXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKElu
U2VxdWVuY2UpOyAgLy8gTk9MSU5UCi19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOwotCi1uYW1l
c3BhY2UgaW50ZXJuYWwgewotCi0vLyBQb2ludHMgdG8gdGhlIGltcGxpY2l0IHNlcXVlbmNlIGlu
dHJvZHVjZWQgYnkgYSBsaXZpbmcgSW5TZXF1ZW5jZQotLy8gb2JqZWN0IChpZiBhbnkpIGluIHRo
ZSBjdXJyZW50IHRocmVhZCBvciBOVUxMLgotR1RFU1RfQVBJXyBleHRlcm4gVGhyZWFkTG9jYWw8
U2VxdWVuY2UqPiBnX2dtb2NrX2ltcGxpY2l0X3NlcXVlbmNlOwotCi0vLyBCYXNlIGNsYXNzIGZv
ciBpbXBsZW1lbnRpbmcgZXhwZWN0YXRpb25zLgotLy8KLS8vIFRoZXJlIGFyZSB0d28gcmVhc29u
cyBmb3IgaGF2aW5nIGEgdHlwZS1hZ25vc3RpYyBiYXNlIGNsYXNzIGZvcgotLy8gRXhwZWN0YXRp
b246Ci0vLwotLy8gICAxLiBXZSBuZWVkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mIGV4cGVjdGF0
aW9ucyBvZiBkaWZmZXJlbnQKLS8vICAgdHlwZXMgKGUuZy4gYWxsIHByZS1yZXF1aXNpdGVzIG9m
IGEgcGFydGljdWxhciBleHBlY3RhdGlvbiwgYWxsCi0vLyAgIGV4cGVjdGF0aW9ucyBpbiBhIHNl
cXVlbmNlKS4gIFRoZXJlZm9yZSB0aGVzZSBleHBlY3RhdGlvbiBvYmplY3RzCi0vLyAgIG11c3Qg
c2hhcmUgYSBjb21tb24gYmFzZSBjbGFzcy4KLS8vCi0vLyAgIDIuIFdlIGNhbiBhdm9pZCBiaW5h
cnkgY29kZSBibG9hdCBieSBtb3ZpbmcgbWV0aG9kcyBub3QgZGVwZW5kaW5nCi0vLyAgIG9uIHRo
ZSB0ZW1wbGF0ZSBhcmd1bWVudCBvZiBFeHBlY3RhdGlvbiB0byB0aGUgYmFzZSBjbGFzcy4KLS8v
Ci0vLyBUaGlzIGNsYXNzIGlzIGludGVybmFsIGFuZCBtdXN0bid0IGJlIHVzZWQgYnkgdXNlciBj
b2RlIGRpcmVjdGx5LgotY2xhc3MgR1RFU1RfQVBJXyBFeHBlY3RhdGlvbkJhc2UgewotIHB1Ymxp
YzoKLSAgLy8gc291cmNlX3RleHQgaXMgdGhlIEVYUEVDVF9DQUxMKC4uLikgc291cmNlIHRoYXQg
Y3JlYXRlZCB0aGlzIEV4cGVjdGF0aW9uLgotICBFeHBlY3RhdGlvbkJhc2UoY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzb3VyY2VfdGV4dCk7Ci0KLSAgdmly
dHVhbCB+RXhwZWN0YXRpb25CYXNlKCk7Ci0KLSAgLy8gV2hlcmUgaW4gdGhlIHNvdXJjZSBmaWxl
IHdhcyB0aGUgZXhwZWN0YXRpb24gc3BlYyBkZWZpbmVkPwotICBjb25zdCBjaGFyKiBmaWxlKCkg
Y29uc3QgeyByZXR1cm4gZmlsZV87IH0KLSAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5l
XzsgfQotICBjb25zdCBjaGFyKiBzb3VyY2VfdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHNvdXJjZV90
ZXh0Xy5jX3N0cigpOyB9Ci0gIC8vIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IHNwZWNpZmllZCBp
biB0aGUgZXhwZWN0YXRpb24gc3BlYy4KLSAgY29uc3QgQ2FyZGluYWxpdHkmIGNhcmRpbmFsaXR5
KCkgY29uc3QgeyByZXR1cm4gY2FyZGluYWxpdHlfOyB9Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBz
b3VyY2UgZmlsZSBsb2NhdGlvbiBvZiB0aGlzIGV4cGVjdGF0aW9uLgotICB2b2lkIERlc2NyaWJl
TG9jYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgRm9ybWF0
RmlsZUxvY2F0aW9uKGZpbGUoKSwgbGluZSgpKSA8PCAiICI7Ci0gIH0KLQotICAvLyBEZXNjcmli
ZXMgaG93IG1hbnkgdGltZXMgYSBmdW5jdGlvbiBjYWxsIG1hdGNoaW5nIHRoaXMKLSAgLy8gZXhw
ZWN0YXRpb24gaGFzIG9jY3VycmVkLgotICB2b2lkIERlc2NyaWJlQ2FsbENvdW50VG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURf
KGdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIElmIHRoaXMgbW9jayBtZXRob2QgaGFzIGFuIGV4dHJh
IG1hdGNoZXIgKGkuZS4gLldpdGgobWF0Y2hlcikpLAotICAvLyBkZXNjcmliZXMgaXQgdG8gdGhl
IG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBNYXliZURlc2NyaWJlRXh0cmFNYXRjaGVyVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIGZyaWVuZCBjbGFzcyA6OnRl
c3Rpbmc6OkV4cGVjdGF0aW9uOwotICBmcmllbmQgY2xhc3MgVW50eXBlZEZ1bmN0aW9uTW9ja2Vy
QmFzZTsKLQotICBlbnVtIENsYXVzZSB7Ci0gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBv
ZiB0aGUgZW51bSBtZW1iZXJzIQotICAgIGtOb25lLAotICAgIGtXaXRoLAotICAgIGtUaW1lcywK
LSAgICBrSW5TZXF1ZW5jZSwKLSAgICBrQWZ0ZXIsCi0gICAga1dpbGxPbmNlLAotICAgIGtXaWxs
UmVwZWF0ZWRseSwKLSAgICBrUmV0aXJlc09uU2F0dXJhdGlvbgotICB9OwotCi0gIHR5cGVkZWYg
c3RkOjp2ZWN0b3I8Y29uc3Qgdm9pZCo+IFVudHlwZWRBY3Rpb25zOwotCi0gIC8vIFJldHVybnMg
YW4gRXhwZWN0YXRpb24gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyBhbmQgY28tb3ducyB0aGlzCi0g
IC8vIGV4cGVjdGF0aW9uLgotICB2aXJ0dWFsIEV4cGVjdGF0aW9uIEdldEhhbmRsZSgpID0gMDsK
LQotICAvLyBBc3NlcnRzIHRoYXQgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGhhcyB0aGUg
Z2l2ZW4gcHJvcGVydHkuCi0gIHZvaWQgQXNzZXJ0U3BlY1Byb3BlcnR5KGJvb2wgcHJvcGVydHks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmYWlsdXJlX21l
c3NhZ2UpIGNvbnN0IHsKLSAgICBBc3NlcnQocHJvcGVydHksIGZpbGVfLCBsaW5lXywgZmFpbHVy
ZV9tZXNzYWdlKTsKLSAgfQotCi0gIC8vIEV4cGVjdHMgdGhhdCB0aGUgRVhQRUNUX0NBTEwoKSBz
dGF0ZW1lbnQgaGFzIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgdm9pZCBFeHBlY3RTcGVjUHJvcGVy
dHkoYm9vbCBwcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIGZhaWx1cmVfbWVzc2FnZSkgY29uc3QgewotICAgIEV4cGVjdChwcm9wZXJ0eSwgZmls
ZV8sIGxpbmVfLCBmYWlsdXJlX21lc3NhZ2UpOwotICB9Ci0KLSAgLy8gRXhwbGljaXRseSBzcGVj
aWZpZXMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoaXMgZXhwZWN0YXRpb24uICBVc2VkCi0gIC8vIGJ5
IHRoZSBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGUgLlRpbWVzKCkgY2xhdXNlLgotICB2b2lk
IFNwZWNpZnlDYXJkaW5hbGl0eShjb25zdCBDYXJkaW5hbGl0eSYgY2FyZGluYWxpdHkpOwotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIgc3BlY2lmaWVkIHRoZSBjYXJkaW5hbGl0eSBl
eHBsaWNpdGx5Ci0gIC8vIHVzaW5nIGEgLlRpbWVzKCkuCi0gIGJvb2wgY2FyZGluYWxpdHlfc3Bl
Y2lmaWVkKCkgY29uc3QgeyByZXR1cm4gY2FyZGluYWxpdHlfc3BlY2lmaWVkXzsgfQotCi0gIC8v
IFNldHMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoaXMgZXhwZWN0YXRpb24gc3BlYy4KLSAgdm9pZCBz
ZXRfY2FyZGluYWxpdHkoY29uc3QgQ2FyZGluYWxpdHkmIGFfY2FyZGluYWxpdHkpIHsKLSAgICBj
YXJkaW5hbGl0eV8gPSBhX2NhcmRpbmFsaXR5OwotICB9Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBn
cm91cCBvZiBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUKLSAgLy8gRVhQ
RUNUX0NBTEwoKSBzdGF0ZW1lbnQsIGFuZCBvbmx5IHdoZW4gZ19nbW9ja19tdXRleCBpcyBoZWxk
IGJ5Ci0gIC8vIHRoZSBjdXJyZW50IHRocmVhZC4KLQotICAvLyBSZXRpcmVzIGFsbCBwcmUtcmVx
dWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uLgotICB2b2lkIFJldGlyZUFsbFByZVJlcXVpc2l0
ZXMoKQotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgp
OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3RhdGlvbiBpcyByZXRpcmVkLgot
ICBib29sIGlzX3JldGlyZWQoKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVR
VUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsK
LSAgICByZXR1cm4gcmV0aXJlZF87Ci0gIH0KLQotICAvLyBSZXRpcmVzIHRoaXMgZXhwZWN0YXRp
b24uCi0gIHZvaWQgUmV0aXJlKCkKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVE
XyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gICAg
cmV0aXJlZF8gPSB0cnVlOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIGV4cGVj
dGF0aW9uIGlzIHNhdGlzZmllZC4KLSAgYm9vbCBJc1NhdGlzZmllZCgpIGNvbnN0Ci0gICAgICBH
VEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21v
Y2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIHJldHVybiBjYXJkaW5hbGl0eSgpLklzU2F0aXNm
aWVkQnlDYWxsQ291bnQoY2FsbF9jb3VudF8pOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIGV4cGVjdGF0aW9uIGlzIHNhdHVyYXRlZC4KLSAgYm9vbCBJc1NhdHVyYXRlZCgpIGNv
bnN0Ci0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkg
ewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIHJldHVybiBjYXJkaW5hbGl0
eSgpLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoY2FsbF9jb3VudF8pOwotICB9Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGlzIGV4cGVjdGF0aW9uIGlzIG92ZXItc2F0dXJhdGVkLgotICBib29s
IElzT3ZlclNhdHVyYXRlZCgpIGNvbnN0Ci0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFV
SVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwot
ICAgIHJldHVybiBjYXJkaW5hbGl0eSgpLklzT3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50KGNhbGxf
Y291bnRfKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgYWxsIHByZS1yZXF1aXNpdGVz
IG9mIHRoaXMgZXhwZWN0YXRpb24gYXJlIHNhdGlzZmllZC4KLSAgYm9vbCBBbGxQcmVyZXF1aXNp
dGVzQXJlU2F0aXNmaWVkKCkgY29uc3QKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJ
UkVEXyhnX2dtb2NrX211dGV4KTsKLQotICAvLyBBZGRzIHVuc2F0aXNmaWVkIHByZS1yZXF1aXNp
dGVzIG9mIHRoaXMgZXhwZWN0YXRpb24gdG8gJ3Jlc3VsdCcuCi0gIHZvaWQgRmluZFVuc2F0aXNm
aWVkUHJlcmVxdWlzaXRlcyhFeHBlY3RhdGlvblNldCogcmVzdWx0KSBjb25zdAotICAgICAgR1RF
U1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFJldHVy
bnMgdGhlIG51bWJlciB0aGlzIGV4cGVjdGF0aW9uIGhhcyBiZWVuIGludm9rZWQuCi0gIGludCBj
YWxsX2NvdW50KCkgY29uc3QKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhn
X2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gICAgcmV0
dXJuIGNhbGxfY291bnRfOwotICB9Ci0KLSAgLy8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIHRoaXMg
ZXhwZWN0YXRpb24gaGFzIGJlZW4gaW52b2tlZC4KLSAgdm9pZCBJbmNyZW1lbnRDYWxsQ291bnQo
KQotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsK
LSAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgICBjYWxsX2NvdW50XysrOwotICB9
Ci0KLSAgLy8gQ2hlY2tzIHRoZSBhY3Rpb24gY291bnQgKGkuZS4gdGhlIG51bWJlciBvZiBXaWxs
T25jZSgpIGFuZAotICAvLyBXaWxsUmVwZWF0ZWRseSgpIGNsYXVzZXMpIGFnYWluc3QgdGhlIGNh
cmRpbmFsaXR5IGlmIHRoaXMgaGFzbid0Ci0gIC8vIGJlZW4gZG9uZSBiZWZvcmUuICBQcmludHMg
YSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0b28gbWFueSBvciB0b28KLSAgLy8gZmV3IGFjdGlvbnMu
Ci0gIHZvaWQgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpIGNvbnN0Ci0gICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhtdXRleF8pOwotCi0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlNlcXVl
bmNlOwotICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhwZWN0YXRpb25UZXN0
ZXI7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBmcmllbmQgY2xhc3MgVHlw
ZWRFeHBlY3RhdGlvbjsKLQotICAvLyBJbXBsZW1lbnRzIHRoZSAuVGltZXMoKSBjbGF1c2UuCi0g
IHZvaWQgVW50eXBlZFRpbWVzKGNvbnN0IENhcmRpbmFsaXR5JiBhX2NhcmRpbmFsaXR5KTsKLQot
ICAvLyBUaGlzIGdyb3VwIG9mIGZpZWxkcyBhcmUgcGFydCBvZiB0aGUgc3BlYyBhbmQgd29uJ3Qg
Y2hhbmdlIGFmdGVyCi0gIC8vIGFuIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZpbmlzaGVzLgot
ICBjb25zdCBjaGFyKiBmaWxlXzsgICAgICAgICAgLy8gVGhlIGZpbGUgdGhhdCBjb250YWlucyB0
aGUgZXhwZWN0YXRpb24uCi0gIGludCBsaW5lXzsgICAgICAgICAgICAgICAgICAvLyBUaGUgbGlu
ZSBudW1iZXIgb2YgdGhlIGV4cGVjdGF0aW9uLgotICBjb25zdCBzdGQ6OnN0cmluZyBzb3VyY2Vf
dGV4dF87ICAvLyBUaGUgRVhQRUNUX0NBTEwoLi4uKSBzb3VyY2UgdGV4dC4KLSAgLy8gVHJ1ZSBp
ZmYgdGhlIGNhcmRpbmFsaXR5IGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LgotICBib29sIGNhcmRp
bmFsaXR5X3NwZWNpZmllZF87Ci0gIENhcmRpbmFsaXR5IGNhcmRpbmFsaXR5XzsgICAgICAgICAg
ICAvLyBUaGUgY2FyZGluYWxpdHkgb2YgdGhlIGV4cGVjdGF0aW9uLgotICAvLyBUaGUgaW1tZWRp
YXRlIHByZS1yZXF1aXNpdGVzIChpLmUuIGV4cGVjdGF0aW9ucyB0aGF0IG11c3QgYmUKLSAgLy8g
c2F0aXNmaWVkIGJlZm9yZSB0aGlzIGV4cGVjdGF0aW9uIGNhbiBiZSBtYXRjaGVkKSBvZiB0aGlz
Ci0gIC8vIGV4cGVjdGF0aW9uLiAgV2UgdXNlIGxpbmtlZF9wdHIgaW4gdGhlIHNldCBiZWNhdXNl
IHdlIHdhbnQgYW4KLSAgLy8gRXhwZWN0YXRpb24gb2JqZWN0IHRvIGJlIGNvLW93bmVkIGJ5IGl0
cyBGdW5jdGlvbk1vY2tlciBhbmQgaXRzCi0gIC8vIHN1Y2Nlc3NvcnMuICBUaGlzIGFsbG93cyBt
dWx0aXBsZSBtb2NrIG9iamVjdHMgdG8gYmUgZGVsZXRlZCBhdAotICAvLyBkaWZmZXJlbnQgdGlt
ZXMuCi0gIEV4cGVjdGF0aW9uU2V0IGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXzsKLQotICAvLyBU
aGlzIGdyb3VwIG9mIGZpZWxkcyBhcmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGV4cGVjdGF0
aW9uLAotICAvLyBhbmQgY2FuIGNoYW5nZSBhcyB0aGUgbW9jayBmdW5jdGlvbiBpcyBjYWxsZWQu
Ci0gIGludCBjYWxsX2NvdW50XzsgIC8vIEhvdyBtYW55IHRpbWVzIHRoaXMgZXhwZWN0YXRpb24g
aGFzIGJlZW4gaW52b2tlZC4KLSAgYm9vbCByZXRpcmVkXzsgICAgLy8gVHJ1ZSBpZmYgdGhpcyBl
eHBlY3RhdGlvbiBoYXMgcmV0aXJlZC4KLSAgVW50eXBlZEFjdGlvbnMgdW50eXBlZF9hY3Rpb25z
XzsKLSAgYm9vbCBleHRyYV9tYXRjaGVyX3NwZWNpZmllZF87Ci0gIGJvb2wgcmVwZWF0ZWRfYWN0
aW9uX3NwZWNpZmllZF87ICAvLyBUcnVlIGlmIGEgV2lsbFJlcGVhdGVkbHkoKSB3YXMgc3BlY2lm
aWVkLgotICBib29sIHJldGlyZXNfb25fc2F0dXJhdGlvbl87Ci0gIENsYXVzZSBsYXN0X2NsYXVz
ZV87Ci0gIG11dGFibGUgYm9vbCBhY3Rpb25fY291bnRfY2hlY2tlZF87ICAvLyBVbmRlciBtdXRl
eF8uCi0gIG11dGFibGUgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWN0aW9uX2NvdW50X2No
ZWNrZWRfLgotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRXhwZWN0YXRpb25CYXNlKTsKLX07
ICAvLyBjbGFzcyBFeHBlY3RhdGlvbkJhc2UKLQotLy8gSW1wZW1lbnRzIGFuIGV4cGVjdGF0aW9u
IGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24gdHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotY2xh
c3MgVHlwZWRFeHBlY3RhdGlvbiA6IHB1YmxpYyBFeHBlY3RhdGlvbkJhc2UgewotIHB1YmxpYzoK
LSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1
cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudE1hdGNoZXJUdXBs
ZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6
UmVzdWx0IFJlc3VsdDsKLQotICBUeXBlZEV4cGVjdGF0aW9uKEZ1bmN0aW9uTW9ja2VyQmFzZTxG
Piogb3duZXIsIGNvbnN0IGNoYXIqIGFfZmlsZSwgaW50IGFfbGluZSwKLSAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9zb3VyY2VfdGV4dCwKLSAgICAgICAgICAgICAgICAg
ICBjb25zdCBBcmd1bWVudE1hdGNoZXJUdXBsZSYgbSkKLSAgICAgIDogRXhwZWN0YXRpb25CYXNl
KGFfZmlsZSwgYV9saW5lLCBhX3NvdXJjZV90ZXh0KSwKLSAgICAgICAgb3duZXJfKG93bmVyKSwK
LSAgICAgICAgbWF0Y2hlcnNfKG0pLAotICAgICAgICAvLyBCeSBkZWZhdWx0LCBleHRyYV9tYXRj
aGVyXyBzaG91bGQgbWF0Y2ggYW55dGhpbmcuICBIb3dldmVyLAotICAgICAgICAvLyB3ZSBjYW5u
b3QgaW5pdGlhbGl6ZSBpdCB3aXRoIF8gYXMgdGhhdCB0cmlnZ2VycyBhIGNvbXBpbGVyCi0gICAg
ICAgIC8vIGJ1ZyBpbiBTeW1iaWFuJ3MgQysrIGNvbXBpbGVyIChjYW5ub3QgZGVjaWRlIGJldHdl
ZW4gdHdvCi0gICAgICAgIC8vIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzIG9mIE1hdGNoZXI8Y29u
c3QgQXJndW1lbnRUdXBsZSY+KS4KLSAgICAgICAgZXh0cmFfbWF0Y2hlcl8oQTxjb25zdCBBcmd1
bWVudFR1cGxlJj4oKSksCi0gICAgICAgIHJlcGVhdGVkX2FjdGlvbl8oRG9EZWZhdWx0KCkpIHt9
Ci0KLSAgdmlydHVhbCB+VHlwZWRFeHBlY3RhdGlvbigpIHsKLSAgICAvLyBDaGVjayB0aGUgdmFs
aWRpdHkgb2YgdGhlIGFjdGlvbiBjb3VudCBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lCi0gICAgLy8g
eWV0IChmb3IgZXhhbXBsZSwgaWYgdGhlIGV4cGVjdGF0aW9uIHdhcyBuZXZlciB1c2VkKS4KLSAg
ICBDaGVja0FjdGlvbkNvdW50SWZOb3REb25lKCk7Ci0gICAgZm9yIChVbnR5cGVkQWN0aW9uczo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB1bnR5cGVkX2FjdGlvbnNfLmJlZ2luKCk7Ci0gICAgICAgICBp
dCAhPSB1bnR5cGVkX2FjdGlvbnNfLmVuZCgpOyArK2l0KSB7Ci0gICAgICBkZWxldGUgc3RhdGlj
X2Nhc3Q8Y29uc3QgQWN0aW9uPEY+Kj4oKml0KTsKLSAgICB9Ci0gIH0KLQotICAvLyBJbXBsZW1l
bnRzIHRoZSAuV2l0aCgpIGNsYXVzZS4KLSAgVHlwZWRFeHBlY3RhdGlvbiYgV2l0aChjb25zdCBN
YXRjaGVyPGNvbnN0IEFyZ3VtZW50VHVwbGUmPiYgbSkgewotICAgIGlmIChsYXN0X2NsYXVzZV8g
PT0ga1dpdGgpIHsKLSAgICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShmYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiLldpdGgoKSBjYW5ub3QgYXBwZWFyICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKS4iKTsKLSAgICB9IGVs
c2UgewotICAgICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtXaXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICIuV2l0aCgpIG11c3QgYmUgdGhlIGZpcnN0ICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiY2xhdXNlIGluIGFuIEVYUEVDVF9DQUxMKCkuIik7Ci0gICAg
fQotICAgIGxhc3RfY2xhdXNlXyA9IGtXaXRoOwotCi0gICAgZXh0cmFfbWF0Y2hlcl8gPSBtOwot
ICAgIGV4dHJhX21hdGNoZXJfc3BlY2lmaWVkXyA9IHRydWU7Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLlRpbWVzKCkgY2xhdXNlLgotICBUeXBlZEV4cGVj
dGF0aW9uJiBUaW1lcyhjb25zdCBDYXJkaW5hbGl0eSYgYV9jYXJkaW5hbGl0eSkgewotICAgIEV4
cGVjdGF0aW9uQmFzZTo6VW50eXBlZFRpbWVzKGFfY2FyZGluYWxpdHkpOwotICAgIHJldHVybiAq
dGhpczsKLSAgfQotCi0gIC8vIEltcGxlbWVudHMgdGhlIC5UaW1lcygpIGNsYXVzZS4KLSAgVHlw
ZWRFeHBlY3RhdGlvbiYgVGltZXMoaW50IG4pIHsKLSAgICByZXR1cm4gVGltZXMoRXhhY3RseShu
KSk7Ci0gIH0KLQotICAvLyBJbXBsZW1lbnRzIHRoZSAuSW5TZXF1ZW5jZSgpIGNsYXVzZS4KLSAg
VHlwZWRFeHBlY3RhdGlvbiYgSW5TZXF1ZW5jZShjb25zdCBTZXF1ZW5jZSYgcykgewotICAgIEV4
cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga0luU2VxdWVuY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICIuSW5TZXF1ZW5jZSgpIGNhbm5vdCBhcHBlYXIgYWZ0ZXIgLkFmdGVyKCks
IgotICAgICAgICAgICAgICAgICAgICAgICAiIC5XaWxsT25jZSgpLCAuV2lsbFJlcGVhdGVkbHko
KSwgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAiLlJldGlyZXNPblNhdHVyYXRpb24oKS4i
KTsKLSAgICBsYXN0X2NsYXVzZV8gPSBrSW5TZXF1ZW5jZTsKLQotICAgIHMuQWRkRXhwZWN0YXRp
b24oR2V0SGFuZGxlKCkpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBUeXBlZEV4cGVjdGF0
aW9uJiBJblNlcXVlbmNlKGNvbnN0IFNlcXVlbmNlJiBzMSwgY29uc3QgU2VxdWVuY2UmIHMyKSB7
Ci0gICAgcmV0dXJuIEluU2VxdWVuY2UoczEpLkluU2VxdWVuY2UoczIpOwotICB9Ci0gIFR5cGVk
RXhwZWN0YXRpb24mIEluU2VxdWVuY2UoY29uc3QgU2VxdWVuY2UmIHMxLCBjb25zdCBTZXF1ZW5j
ZSYgczIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VxdWVuY2UmIHMz
KSB7Ci0gICAgcmV0dXJuIEluU2VxdWVuY2UoczEsIHMyKS5JblNlcXVlbmNlKHMzKTsKLSAgfQot
ICBUeXBlZEV4cGVjdGF0aW9uJiBJblNlcXVlbmNlKGNvbnN0IFNlcXVlbmNlJiBzMSwgY29uc3Qg
U2VxdWVuY2UmIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlcXVl
bmNlJiBzMywgY29uc3QgU2VxdWVuY2UmIHM0KSB7Ci0gICAgcmV0dXJuIEluU2VxdWVuY2UoczEs
IHMyLCBzMykuSW5TZXF1ZW5jZShzNCk7Ci0gIH0KLSAgVHlwZWRFeHBlY3RhdGlvbiYgSW5TZXF1
ZW5jZShjb25zdCBTZXF1ZW5jZSYgczEsIGNvbnN0IFNlcXVlbmNlJiBzMiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXF1ZW5jZSYgczMsIGNvbnN0IFNlcXVlbmNlJiBz
NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXF1ZW5jZSYgczUpIHsK
LSAgICByZXR1cm4gSW5TZXF1ZW5jZShzMSwgczIsIHMzLCBzNCkuSW5TZXF1ZW5jZShzNSk7Ci0g
IH0KLQotICAvLyBJbXBsZW1lbnRzIHRoYXQgLkFmdGVyKCkgY2xhdXNlLgotICBUeXBlZEV4cGVj
dGF0aW9uJiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgcykgewotICAgIEV4cGVjdFNwZWNQ
cm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga0FmdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAi
LkFmdGVyKCkgY2Fubm90IGFwcGVhciBhZnRlciAuV2lsbE9uY2UoKSwiCi0gICAgICAgICAgICAg
ICAgICAgICAgICIgLldpbGxSZXBlYXRlZGx5KCksIG9yICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIi5SZXRpcmVzT25TYXR1cmF0aW9uKCkuIik7Ci0gICAgbGFzdF9jbGF1c2VfID0ga0FmdGVy
OwotCi0gICAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzLmJlZ2lu
KCk7IGl0ICE9IHMuZW5kKCk7ICsraXQpIHsKLSAgICAgIGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVz
XyArPSAqaXQ7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBUeXBlZEV4cGVjdGF0
aW9uJiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgczEsIGNvbnN0IEV4cGVjdGF0aW9uU2V0
JiBzMikgewotICAgIHJldHVybiBBZnRlcihzMSkuQWZ0ZXIoczIpOwotICB9Ci0gIFR5cGVkRXhw
ZWN0YXRpb24mIEFmdGVyKGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzMSwgY29uc3QgRXhwZWN0YXRp
b25TZXQmIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHBlY3RhdGlvblNl
dCYgczMpIHsKLSAgICByZXR1cm4gQWZ0ZXIoczEsIHMyKS5BZnRlcihzMyk7Ci0gIH0KLSAgVHlw
ZWRFeHBlY3RhdGlvbiYgQWZ0ZXIoY29uc3QgRXhwZWN0YXRpb25TZXQmIHMxLCBjb25zdCBFeHBl
Y3RhdGlvblNldCYgczIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4cGVjdGF0
aW9uU2V0JiBzMywgY29uc3QgRXhwZWN0YXRpb25TZXQmIHM0KSB7Ci0gICAgcmV0dXJuIEFmdGVy
KHMxLCBzMiwgczMpLkFmdGVyKHM0KTsKLSAgfQotICBUeXBlZEV4cGVjdGF0aW9uJiBBZnRlcihj
b25zdCBFeHBlY3RhdGlvblNldCYgczEsIGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzMiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXhwZWN0YXRpb25TZXQmIHMzLCBjb25zdCBFeHBl
Y3RhdGlvblNldCYgczQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4cGVjdGF0
aW9uU2V0JiBzNSkgewotICAgIHJldHVybiBBZnRlcihzMSwgczIsIHMzLCBzNCkuQWZ0ZXIoczUp
OwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLldpbGxPbmNlKCkgY2xhdXNlLgotICBUeXBl
ZEV4cGVjdGF0aW9uJiBXaWxsT25jZShjb25zdCBBY3Rpb248Rj4mIGFjdGlvbikgewotICAgIEV4
cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga1dpbGxPbmNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAiLldpbGxPbmNlKCkgY2Fubm90IGFwcGVhciBhZnRlciAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICIuV2lsbFJlcGVhdGVkbHkoKSBvciAuUmV0aXJlc09uU2F0dXJhdGlvbigp
LiIpOwotICAgIGxhc3RfY2xhdXNlXyA9IGtXaWxsT25jZTsKLQotICAgIHVudHlwZWRfYWN0aW9u
c18ucHVzaF9iYWNrKG5ldyBBY3Rpb248Rj4oYWN0aW9uKSk7Ci0gICAgaWYgKCFjYXJkaW5hbGl0
eV9zcGVjaWZpZWQoKSkgewotICAgICAgc2V0X2NhcmRpbmFsaXR5KEV4YWN0bHkoc3RhdGljX2Nh
c3Q8aW50Pih1bnR5cGVkX2FjdGlvbnNfLnNpemUoKSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuICp0
aGlzOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLldpbGxSZXBlYXRlZGx5KCkgY2xhdXNl
LgotICBUeXBlZEV4cGVjdGF0aW9uJiBXaWxsUmVwZWF0ZWRseShjb25zdCBBY3Rpb248Rj4mIGFj
dGlvbikgewotICAgIGlmIChsYXN0X2NsYXVzZV8gPT0ga1dpbGxSZXBlYXRlZGx5KSB7Ci0gICAg
ICBFeHBlY3RTcGVjUHJvcGVydHkoZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIi5X
aWxsUmVwZWF0ZWRseSgpIGNhbm5vdCBhcHBlYXIgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICJtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpLiIpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDwga1dpbGxSZXBlYXRlZGx5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5ub3QgYXBwZWFy
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYWZ0ZXIgLlJldGlyZXNPblNhdHVyYXRpb24o
KS4iKTsKLSAgICB9Ci0gICAgbGFzdF9jbGF1c2VfID0ga1dpbGxSZXBlYXRlZGx5OwotICAgIHJl
cGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfID0gdHJ1ZTsKLQotICAgIHJlcGVhdGVkX2FjdGlvbl8g
PSBhY3Rpb247Ci0gICAgaWYgKCFjYXJkaW5hbGl0eV9zcGVjaWZpZWQoKSkgewotICAgICAgc2V0
X2NhcmRpbmFsaXR5KEF0TGVhc3Qoc3RhdGljX2Nhc3Q8aW50Pih1bnR5cGVkX2FjdGlvbnNfLnNp
emUoKSkpKTsKLSAgICB9Ci0KLSAgICAvLyBOb3cgdGhhdCBubyBtb3JlIGFjdGlvbiBjbGF1c2Vz
IGNhbiBiZSBzcGVjaWZpZWQsIHdlIGNoZWNrCi0gICAgLy8gd2hldGhlciB0aGVpciBjb3VudCBt
YWtlcyBzZW5zZS4KLSAgICBDaGVja0FjdGlvbkNvdW50SWZOb3REb25lKCk7Ci0gICAgcmV0dXJu
ICp0aGlzOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLlJldGlyZXNPblNhdHVyYXRpb24o
KSBjbGF1c2UuCi0gIFR5cGVkRXhwZWN0YXRpb24mIFJldGlyZXNPblNhdHVyYXRpb24oKSB7Ci0g
ICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtSZXRpcmVzT25TYXR1cmF0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAiLlJldGlyZXNPblNhdHVyYXRpb24oKSBjYW5ub3Qg
YXBwZWFyICIKLSAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBvbmNlLiIpOwotICAg
IGxhc3RfY2xhdXNlXyA9IGtSZXRpcmVzT25TYXR1cmF0aW9uOwotICAgIHJldGlyZXNfb25fc2F0
dXJhdGlvbl8gPSB0cnVlOwotCi0gICAgLy8gTm93IHRoYXQgbm8gbW9yZSBhY3Rpb24gY2xhdXNl
cyBjYW4gYmUgc3BlY2lmaWVkLCB3ZSBjaGVjawotICAgIC8vIHdoZXRoZXIgdGhlaXIgY291bnQg
bWFrZXMgc2Vuc2UuCi0gICAgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpOwotICAgIHJldHVy
biAqdGhpczsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIG1hdGNoZXJzIGZvciB0aGUgYXJndW1l
bnRzIGFzIHNwZWNpZmllZCBpbnNpZGUgdGhlCi0gIC8vIEVYUEVDVF9DQUxMKCkgbWFjcm8uCi0g
IGNvbnN0IEFyZ3VtZW50TWF0Y2hlclR1cGxlJiBtYXRjaGVycygpIGNvbnN0IHsKLSAgICByZXR1
cm4gbWF0Y2hlcnNfOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgbWF0Y2hlciBzcGVjaWZpZWQg
YnkgdGhlIC5XaXRoKCkgY2xhdXNlLgotICBjb25zdCBNYXRjaGVyPGNvbnN0IEFyZ3VtZW50VHVw
bGUmPiYgZXh0cmFfbWF0Y2hlcigpIGNvbnN0IHsKLSAgICByZXR1cm4gZXh0cmFfbWF0Y2hlcl87
Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZSAuV2lsbFJl
cGVhdGVkbHkoKSBjbGF1c2UuCi0gIGNvbnN0IEFjdGlvbjxGPiYgcmVwZWF0ZWRfYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmVwZWF0ZWRfYWN0aW9uXzsgfQotCi0gIC8vIElmIHRoaXMgbW9jayBt
ZXRob2QgaGFzIGFuIGV4dHJhIG1hdGNoZXIgKGkuZS4gLldpdGgobWF0Y2hlcikpLAotICAvLyBk
ZXNjcmliZXMgaXQgdG8gdGhlIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBNYXliZURlc2NyaWJl
RXh0cmFNYXRjaGVyVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgaWYgKGV4dHJhX21hdGNo
ZXJfc3BlY2lmaWVkXykgewotICAgICAgKm9zIDw8ICIgICAgRXhwZWN0ZWQgYXJnczogIjsKLSAg
ICAgIGV4dHJhX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgICAgKm9zIDw8ICJcbiI7Ci0g
ICAgfQotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0g
IGZyaWVuZCBjbGFzcyBGdW5jdGlvbk1vY2tlckJhc2U7Ci0KLSAgLy8gUmV0dXJucyBhbiBFeHBl
Y3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIGFuZCBjby1vd25zIHRoaXMKLSAgLy8gZXhw
ZWN0YXRpb24uCi0gIHZpcnR1YWwgRXhwZWN0YXRpb24gR2V0SGFuZGxlKCkgewotICAgIHJldHVy
biBvd25lcl8tPkdldEhhbmRsZU9mKHRoaXMpOwotICB9Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBt
ZXRob2RzIHdpbGwgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgdGhlIEVYUEVDVF9DQUxMKCkKLSAgLy8g
c3RhdGVtZW50IGZpbmlzaGVzIGFuZCB3aGVuIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcwotICAv
LyBnX2dtb2NrX211dGV4LgotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3RhdGlv
biBtYXRjaGVzIHRoZSBnaXZlbiBhcmd1bWVudHMuCi0gIGJvb2wgTWF0Y2hlcyhjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlS
RURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAg
ICByZXR1cm4gVHVwbGVNYXRjaGVzKG1hdGNoZXJzXywgYXJncykgJiYgZXh0cmFfbWF0Y2hlcl8u
TWF0Y2hlcyhhcmdzKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3Rh
dGlvbiBzaG91bGQgaGFuZGxlIHRoZSBnaXZlbiBhcmd1bWVudHMuCi0gIGJvb2wgU2hvdWxkSGFu
ZGxlQXJndW1lbnRzKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0Ci0gICAgICBHVEVT
VF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tf
bXV0ZXguQXNzZXJ0SGVsZCgpOwotCi0gICAgLy8gSW4gY2FzZSB0aGUgYWN0aW9uIGNvdW50IHdh
c24ndCBjaGVja2VkIHdoZW4gdGhlIGV4cGVjdGF0aW9uCi0gICAgLy8gd2FzIGRlZmluZWQgKGUu
Zy4gaWYgdGhpcyBleHBlY3RhdGlvbiBoYXMgbm8gV2lsbFJlcGVhdGVkbHkoKQotICAgIC8vIG9y
IFJldGlyZXNPblNhdHVyYXRpb24oKSBjbGF1c2UpLCB3ZSBjaGVjayBpdCB3aGVuIHRoZQotICAg
IC8vIGV4cGVjdGF0aW9uIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgotICAgIENoZWNrQWN0
aW9uQ291bnRJZk5vdERvbmUoKTsKLSAgICByZXR1cm4gIWlzX3JldGlyZWQoKSAmJiBBbGxQcmVy
ZXF1aXNpdGVzQXJlU2F0aXNmaWVkKCkgJiYgTWF0Y2hlcyhhcmdzKTsKLSAgfQotCi0gIC8vIERl
c2NyaWJlcyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHRoZSBhcmd1bWVudHMgYWdhaW5zdCB0aGlz
Ci0gIC8vIGV4cGVjdGF0aW9uIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgotICB2b2lkIEV4cGxhaW5N
YXRjaFJlc3VsdFRvKAotICAgICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncywKLSAgICAgIDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QKLSAgICAgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgp
OwotCi0gICAgaWYgKGlzX3JldGlyZWQoKSkgewotICAgICAgKm9zIDw8ICIgICAgICAgICBFeHBl
Y3RlZDogdGhlIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZVxuIgotICAgICAgICAgIDw8ICIgICAgICAg
ICAgIEFjdHVhbDogaXQgaXMgcmV0aXJlZFxuIjsKLSAgICB9IGVsc2UgaWYgKCFNYXRjaGVzKGFy
Z3MpKSB7Ci0gICAgICBpZiAoIVR1cGxlTWF0Y2hlcyhtYXRjaGVyc18sIGFyZ3MpKSB7Ci0gICAg
ICAgIEV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvKG1hdGNoZXJzXywgYXJncywgb3MpOwotICAg
ICAgfQotICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgICAgIGlm
ICghZXh0cmFfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKGFyZ3MsICZsaXN0ZW5lcikpIHsKLSAg
ICAgICAgKm9zIDw8ICIgICAgRXhwZWN0ZWQgYXJnczogIjsKLSAgICAgICAgZXh0cmFfbWF0Y2hl
cl8uRGVzY3JpYmVUbyhvcyk7Ci0gICAgICAgICpvcyA8PCAiXG4gICAgICAgICAgIEFjdHVhbDog
ZG9uJ3QgbWF0Y2giOwotCi0gICAgICAgIGludGVybmFsOjpQcmludElmTm90RW1wdHkobGlzdGVu
ZXIuc3RyKCksIG9zKTsKLSAgICAgICAgKm9zIDw8ICJcbiI7Ci0gICAgICB9Ci0gICAgfSBlbHNl
IGlmICghQWxsUHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpKSB7Ci0gICAgICAqb3MgPDwgIiAg
ICAgICAgIEV4cGVjdGVkOiBhbGwgcHJlLXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmllZFxuIgotICAg
ICAgICAgIDw8ICIgICAgICAgICAgIEFjdHVhbDogdGhlIGZvbGxvd2luZyBpbW1lZGlhdGUgcHJl
LXJlcXVpc2l0ZXMgIgotICAgICAgICAgIDw8ICJhcmUgbm90IHNhdGlzZmllZDpcbiI7Ci0gICAg
ICBFeHBlY3RhdGlvblNldCB1bnNhdGlzZmllZF9wcmVyZXFzOwotICAgICAgRmluZFVuc2F0aXNm
aWVkUHJlcmVxdWlzaXRlcygmdW5zYXRpc2ZpZWRfcHJlcmVxcyk7Ci0gICAgICBpbnQgaSA9IDA7
Ci0gICAgICBmb3IgKEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHVuc2F0aXNm
aWVkX3ByZXJlcXMuYmVnaW4oKTsKLSAgICAgICAgICAgaXQgIT0gdW5zYXRpc2ZpZWRfcHJlcmVx
cy5lbmQoKTsgKytpdCkgewotICAgICAgICBpdC0+ZXhwZWN0YXRpb25fYmFzZSgpLT5EZXNjcmli
ZUxvY2F0aW9uVG8ob3MpOwotICAgICAgICAqb3MgPDwgInByZS1yZXF1aXNpdGUgIyIgPDwgaSsr
IDw8ICJcbiI7Ci0gICAgICB9Ci0gICAgICAqb3MgPDwgIiAgICAgICAgICAgICAgICAgICAoZW5k
IG9mIHByZS1yZXF1aXNpdGVzKVxuIjsKLSAgICB9IGVsc2UgewotICAgICAgLy8gVGhpcyBsaW5l
IGlzIGhlcmUganVzdCBmb3IgY29tcGxldGVuZXNzJyBzYWtlLiAgSXQgd2lsbCBuZXZlcgotICAg
ICAgLy8gYmUgZXhlY3V0ZWQgYXMgY3VycmVudGx5IHRoZSBFeHBsYWluTWF0Y2hSZXN1bHRUbygp
IGZ1bmN0aW9uCi0gICAgICAvLyBpcyBjYWxsZWQgb25seSB3aGVuIHRoZSBtb2NrIGZ1bmN0aW9u
IGNhbGwgZG9lcyBOT1QgbWF0Y2ggdGhlCi0gICAgICAvLyBleHBlY3RhdGlvbi4KLSAgICAgICpv
cyA8PCAiVGhlIGNhbGwgbWF0Y2hlcyB0aGUgZXhwZWN0YXRpb24uXG4iOwotICAgIH0KLSAgfQot
Ci0gIC8vIFJldHVybnMgdGhlIGFjdGlvbiB0aGF0IHNob3VsZCBiZSB0YWtlbiBmb3IgdGhlIGN1
cnJlbnQgaW52b2NhdGlvbi4KLSAgY29uc3QgQWN0aW9uPEY+JiBHZXRDdXJyZW50QWN0aW9uKAot
ICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJCYXNlPEY+KiBtb2NrZXIsCi0gICAgICBjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdAotICAgICAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NL
X1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxk
KCk7Ci0gICAgY29uc3QgaW50IGNvdW50ID0gY2FsbF9jb3VudCgpOwotICAgIEFzc2VydChjb3Vu
dCA+PSAxLCBfX0ZJTEVfXywgX19MSU5FX18sCi0gICAgICAgICAgICJjYWxsX2NvdW50KCkgaXMg
PD0gMCB3aGVuIEdldEN1cnJlbnRBY3Rpb24oKSBpcyAiCi0gICAgICAgICAgICJjYWxsZWQgLSB0
aGlzIHNob3VsZCBuZXZlciBoYXBwZW4uIik7Ci0KLSAgICBjb25zdCBpbnQgYWN0aW9uX2NvdW50
ID0gc3RhdGljX2Nhc3Q8aW50Pih1bnR5cGVkX2FjdGlvbnNfLnNpemUoKSk7Ci0gICAgaWYgKGFj
dGlvbl9jb3VudCA+IDAgJiYgIXJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfICYmCi0gICAgICAg
IGNvdW50ID4gYWN0aW9uX2NvdW50KSB7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBhdCBsZWFzdCBv
bmUgV2lsbE9uY2UoKSBhbmQgbm8gV2lsbFJlcGVhdGVkbHkoKSwKLSAgICAgIC8vIHdlIHdhcm4g
dGhlIHVzZXIgd2hlbiB0aGUgV2lsbE9uY2UoKSBjbGF1c2VzIHJhbiBvdXQuCi0gICAgICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgICAgRGVzY3JpYmVMb2NhdGlvblRvKCZzcyk7Ci0gICAg
ICBzcyA8PCAiQWN0aW9ucyByYW4gb3V0IGluICIgPDwgc291cmNlX3RleHQoKSA8PCAiLi4uXG4i
Ci0gICAgICAgICA8PCAiQ2FsbGVkICIgPDwgY291bnQgPDwgIiB0aW1lcywgYnV0IG9ubHkgIgot
ICAgICAgICAgPDwgYWN0aW9uX2NvdW50IDw8ICIgV2lsbE9uY2UoKSIKLSAgICAgICAgIDw8IChh
Y3Rpb25fY291bnQgPT0gMSA/ICIgaXMiIDogInMgYXJlIikgPDwgIiBzcGVjaWZpZWQgLSAiOwot
ICAgICAgbW9ja2VyLT5EZXNjcmliZURlZmF1bHRBY3Rpb25UbyhhcmdzLCAmc3MpOwotICAgICAg
TG9nKGtXYXJuaW5nLCBzcy5zdHIoKSwgMSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvdW50IDw9
IGFjdGlvbl9jb3VudCA/Ci0gICAgICAgICpzdGF0aWNfY2FzdDxjb25zdCBBY3Rpb248Rj4qPih1
bnR5cGVkX2FjdGlvbnNfW2NvdW50IC0gMV0pIDoKLSAgICAgICAgcmVwZWF0ZWRfYWN0aW9uKCk7
Ci0gIH0KLQotICAvLyBHaXZlbiB0aGUgYXJndW1lbnRzIG9mIGEgbW9jayBmdW5jdGlvbiBjYWxs
LCBpZiB0aGUgY2FsbCB3aWxsCi0gIC8vIG92ZXItc2F0dXJhdGUgdGhpcyBleHBlY3RhdGlvbiwg
cmV0dXJucyB0aGUgZGVmYXVsdCBhY3Rpb247Ci0gIC8vIG90aGVyd2lzZSwgcmV0dXJucyB0aGUg
bmV4dCBhY3Rpb24gaW4gdGhpcyBleHBlY3RhdGlvbi4gIEFsc28KLSAgLy8gZGVzY3JpYmVzICp3
aGF0KiBoYXBwZW5lZCB0byAnd2hhdCcsIGFuZCBleHBsYWlucyAqd2h5KiBHb29nbGUKLSAgLy8g
TW9jayBkb2VzIGl0IHRvICd3aHknLiAgVGhpcyBtZXRob2QgaXMgbm90IGNvbnN0IGFzIGl0IGNh
bGxzCi0gIC8vIEluY3JlbWVudENhbGxDb3VudCgpLiAgQSByZXR1cm4gdmFsdWUgb2YgTlVMTCBt
ZWFucyB0aGUgZGVmYXVsdAotICAvLyBhY3Rpb24uCi0gIGNvbnN0IEFjdGlvbjxGPiogR2V0QWN0
aW9uRm9yQXJndW1lbnRzKAotICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJCYXNlPEY+KiBtb2Nr
ZXIsCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzLAotICAgICAgOjpzdGQ6Om9zdHJl
YW0qIHdoYXQsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogd2h5KQotICAgICAgICAgIEdURVNUX0VY
Q0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRl
eC5Bc3NlcnRIZWxkKCk7Ci0gICAgaWYgKElzU2F0dXJhdGVkKCkpIHsKLSAgICAgIC8vIFdlIGhh
dmUgYW4gZXhjZXNzaXZlIGNhbGwuCi0gICAgICBJbmNyZW1lbnRDYWxsQ291bnQoKTsKLSAgICAg
ICp3aGF0IDw8ICJNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQg
LSAiOwotICAgICAgbW9ja2VyLT5EZXNjcmliZURlZmF1bHRBY3Rpb25UbyhhcmdzLCB3aGF0KTsK
LSAgICAgIERlc2NyaWJlQ2FsbENvdW50VG8od2h5KTsKLQotICAgICAgLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgd2hldGhlcgotICAgICAgLy8gdW5l
eHBlY3RlZCBjYWxscyBzaG91bGQgZmFpbCBpbW1lZGlhdGVseSBvciBjb250aW51ZSB1c2luZyBh
Ci0gICAgICAvLyBmbGFnIC0tZ21vY2tfdW5leHBlY3RlZF9jYWxsc19hcmVfZmF0YWwuCi0gICAg
ICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBJbmNyZW1lbnRDYWxsQ291bnQoKTsKLSAgICBS
ZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCk7Ci0KLSAgICBpZiAocmV0aXJlc19vbl9zYXR1cmF0aW9u
XyAmJiBJc1NhdHVyYXRlZCgpKSB7Ci0gICAgICBSZXRpcmUoKTsKLSAgICB9Ci0KLSAgICAvLyBN
dXN0IGJlIGRvbmUgYWZ0ZXIgSW5jcmVtZW50Q291bnQoKSEKLSAgICAqd2hhdCA8PCAiTW9jayBm
dW5jdGlvbiBjYWxsIG1hdGNoZXMgIiA8PCBzb3VyY2VfdGV4dCgpIDw8Ii4uLlxuIjsKLSAgICBy
ZXR1cm4gJihHZXRDdXJyZW50QWN0aW9uKG1vY2tlciwgYXJncykpOwotICB9Ci0KLSAgLy8gQWxs
IHRoZSBmaWVsZHMgYmVsb3cgd29uJ3QgY2hhbmdlIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkKLSAg
Ly8gc3RhdGVtZW50IGZpbmlzaGVzLgotICBGdW5jdGlvbk1vY2tlckJhc2U8Rj4qIGNvbnN0IG93
bmVyXzsKLSAgQXJndW1lbnRNYXRjaGVyVHVwbGUgbWF0Y2hlcnNfOwotICBNYXRjaGVyPGNvbnN0
IEFyZ3VtZW50VHVwbGUmPiBleHRyYV9tYXRjaGVyXzsKLSAgQWN0aW9uPEY+IHJlcGVhdGVkX2Fj
dGlvbl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUeXBlZEV4cGVjdGF0
aW9uKTsKLX07ICAvLyBjbGFzcyBUeXBlZEV4cGVjdGF0aW9uCi0KLS8vIEEgTW9ja1NwZWMgb2Jq
ZWN0IGlzIHVzZWQgYnkgT05fQ0FMTCgpIG9yIEVYUEVDVF9DQUxMKCkgZm9yCi0vLyBzcGVjaWZ5
aW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mLCBvciBleHBlY3RhdGlvbiBvbiwgYSBtb2NrCi0v
LyBmdW5jdGlvbi4KLQotLy8gTm90ZTogY2xhc3MgTW9ja1NwZWMgcmVhbGx5IGJlbG9uZ3MgdG8g
dGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCi0vLyBIb3dldmVyIGlmIHdlIGRlZmluZSBpdCBpbiA6
OnRlc3RpbmcsIE1TVkMgd2lsbCBjb21wbGFpbiB3aGVuCi0vLyBjbGFzc2VzIGluIDo6dGVzdGlu
Zzo6aW50ZXJuYWwgZGVjbGFyZSBpdCBhcyBhIGZyaWVuZCBjbGFzcwotLy8gdGVtcGxhdGUuICBU
byB3b3JrYXJvdW5kIHRoaXMgY29tcGlsZXIgYnVnLCB3ZSBkZWZpbmUgTW9ja1NwZWMgaW4KLS8v
IDo6dGVzdGluZzo6aW50ZXJuYWwgYW5kIGltcG9ydCBpdCBpbnRvIDo6dGVzdGluZy4KLQotLy8g
TG9ncyBhIG1lc3NhZ2UgaW5jbHVkaW5nIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9u
LgotR1RFU1RfQVBJXyB2b2lkIExvZ1dpdGhMb2NhdGlvbih0ZXN0aW5nOjppbnRlcm5hbDo6TG9n
U2V2ZXJpdHkgc2V2ZXJpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotY2xh
c3MgTW9ja1NwZWMgewotIHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVu
Y3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50TWF0Y2hlclR1cGxlCi0gICAgICBBcmd1
bWVudE1hdGNoZXJUdXBsZTsKLQotICAvLyBDb25zdHJ1Y3RzIGEgTW9ja1NwZWMgb2JqZWN0LCBn
aXZlbiB0aGUgZnVuY3Rpb24gbW9ja2VyIG9iamVjdAotICAvLyB0aGF0IHRoZSBzcGVjIGlzIGFz
c29jaWF0ZWQgd2l0aC4KLSAgZXhwbGljaXQgTW9ja1NwZWMoaW50ZXJuYWw6OkZ1bmN0aW9uTW9j
a2VyQmFzZTxGPiogZnVuY3Rpb25fbW9ja2VyKQotICAgICAgOiBmdW5jdGlvbl9tb2NrZXJfKGZ1
bmN0aW9uX21vY2tlcikge30KLQotICAvLyBBZGRzIGEgbmV3IGRlZmF1bHQgYWN0aW9uIHNwZWMg
dG8gdGhlIGZ1bmN0aW9uIG1vY2tlciBhbmQgcmV0dXJucwotICAvLyB0aGUgbmV3bHkgY3JlYXRl
ZCBzcGVjLgotICBpbnRlcm5hbDo6T25DYWxsU3BlYzxGPiYgSW50ZXJuYWxEZWZhdWx0QWN0aW9u
U2V0QXQoCi0gICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogb2Jq
LCBjb25zdCBjaGFyKiBjYWxsKSB7Ci0gICAgTG9nV2l0aExvY2F0aW9uKGludGVybmFsOjprSW5m
bywgZmlsZSwgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoIk9OX0NBTEwo
IikgKyBvYmogKyAiLCAiICsgY2FsbCArICIpIGludm9rZWQiKTsKLSAgICByZXR1cm4gZnVuY3Rp
b25fbW9ja2VyXy0+QWRkTmV3T25DYWxsU3BlYyhmaWxlLCBsaW5lLCBtYXRjaGVyc18pOwotICB9
Ci0KLSAgLy8gQWRkcyBhIG5ldyBleHBlY3RhdGlvbiBzcGVjIHRvIHRoZSBmdW5jdGlvbiBtb2Nr
ZXIgYW5kIHJldHVybnMKLSAgLy8gdGhlIG5ld2x5IGNyZWF0ZWQgc3BlYy4KLSAgaW50ZXJuYWw6
OlR5cGVkRXhwZWN0YXRpb248Rj4mIEludGVybmFsRXhwZWN0ZWRBdCgKLSAgICAgIGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBvYmosIGNvbnN0IGNoYXIqIGNhbGwpIHsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBzb3VyY2VfdGV4dChzdGQ6OnN0cmluZygiRVhQRUNUX0NB
TEwoIikgKyBvYmogKyAiLCAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsICsgIikiKTsKLSAgICBMb2dXaXRoTG9jYXRpb24oaW50ZXJuYWw6OmtJbmZvLCBmaWxlLCBs
aW5lLCBzb3VyY2VfdGV4dCArICIgaW52b2tlZCIpOwotICAgIHJldHVybiBmdW5jdGlvbl9tb2Nr
ZXJfLT5BZGROZXdFeHBlY3RhdGlvbigKLSAgICAgICAgZmlsZSwgbGluZSwgc291cmNlX3RleHQs
IG1hdGNoZXJzXyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dGlvbj4KLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpGdW5jdGlvbk1vY2tlcjsKLQotICB2b2lk
IFNldE1hdGNoZXJzKGNvbnN0IEFyZ3VtZW50TWF0Y2hlclR1cGxlJiBtYXRjaGVycykgewotICAg
IG1hdGNoZXJzXyA9IG1hdGNoZXJzOwotICB9Ci0KLSAgLy8gVGhlIGZ1bmN0aW9uIG1vY2tlciB0
aGF0IG93bnMgdGhpcyBzcGVjLgotICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPEY+KiBj
b25zdCBmdW5jdGlvbl9tb2NrZXJfOwotICAvLyBUaGUgYXJndW1lbnQgbWF0Y2hlcnMgc3BlY2lm
aWVkIGluIHRoZSBzcGVjLgotICBBcmd1bWVudE1hdGNoZXJUdXBsZSBtYXRjaGVyc187Ci0KLSAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhNb2NrU3BlYyk7Ci19OyAgLy8gY2xhc3MgTW9ja1NwZWMK
LQotLy8gV3JhcHBlciB0eXBlIGZvciBnZW5lcmljYWxseSBob2xkaW5nIGFuIG9yZGluYXJ5IHZh
bHVlIG9yIGx2YWx1ZSByZWZlcmVuY2UuCi0vLyBJZiBUIGlzIG5vdCBhIHJlZmVyZW5jZSB0eXBl
LCBpdCBtdXN0IGJlIGNvcHlhYmxlIG9yIG1vdmFibGUuCi0vLyBSZWZlcmVuY2VPclZhbHVlV3Jh
cHBlcjxUPiBpcyBtb3ZhYmxlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcHlhYmxlIHVubGVzcwotLy8g
VCBpcyBhIG1vdmUtb25seSB2YWx1ZSB0eXBlICh3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwgYWx3
YXlzIGJlIGNvcHlhYmxlCi0vLyBpZiB0aGUgY3VycmVudCBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBw
b3J0IG1vdmUgc2VtYW50aWNzKS4KLS8vCi0vLyBUaGUgcHJpbWFyeSB0ZW1wbGF0ZSBkZWZpbmVz
IGhhbmRsaW5nIGZvciB2YWx1ZXMsIGJ1dCBmdW5jdGlvbiBoZWFkZXIKLS8vIGNvbW1lbnRzIGRl
c2NyaWJlIHRoZSBjb250cmFjdCBmb3IgdGhlIHdob2xlIHRlbXBsYXRlIChpbmNsdWRpbmcKLS8v
IHNwZWNpYWxpemF0aW9ucykuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFJlZmVyZW5j
ZU9yVmFsdWVXcmFwcGVyIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMgYSB3cmFwcGVyIGZy
b20gdGhlIGdpdmVuIHZhbHVlL3JlZmVyZW5jZS4KLSAgZXhwbGljaXQgUmVmZXJlbmNlT3JWYWx1
ZVdyYXBwZXIoVCB2YWx1ZSkKLSAgICAgIDogdmFsdWVfKDo6dGVzdGluZzo6aW50ZXJuYWw6Om1v
dmUodmFsdWUpKSB7Ci0gIH0KLQotICAvLyBVbndyYXBzIGFuZCByZXR1cm5zIHRoZSB1bmRlcmx5
aW5nIHZhbHVlL3JlZmVyZW5jZSwgZXhhY3RseSBhcwotICAvLyBvcmlnaW5hbGx5IHBhc3NlZC4g
VGhlIGJlaGF2aW9yIG9mIGNhbGxpbmcgdGhpcyBtb3JlIHRoYW4gb25jZSBvbgotICAvLyB0aGUg
c2FtZSBvYmplY3QgaXMgdW5zcGVjaWZpZWQuCi0gIFQgVW53cmFwKCkgeyByZXR1cm4gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6bW92ZSh2YWx1ZV8pOyB9Ci0KLSAgLy8gUHJvdmlkZXMgbm9uZGVzdHJ1
Y3RpdmUgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIHZhbHVlL3JlZmVyZW5jZS4KLSAgLy8gQWx3
YXlzIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgKG1vcmUgcHJlY2lzZWx5LAotICAvLyBjb25z
dCBSZW1vdmVSZWZlcmVuY2U8VD4mKS4gVGhlIGJlaGF2aW9yIG9mIGNhbGxpbmcgdGhpcyBhZnRl
cgotICAvLyBjYWxsaW5nIFVud3JhcCBvbiB0aGUgc2FtZSBvYmplY3QgaXMgdW5zcGVjaWZpZWQu
Ci0gIGNvbnN0IFQmIFBlZWsoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXzsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgVCB2YWx1ZV87Ci19OwotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgbHZhbHVl
IHJlZmVyZW5jZSB0eXBlcy4gU2VlIHByaW1hcnkgdGVtcGxhdGUKLS8vIGZvciBkb2N1bWVudGF0
aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZWZlcmVuY2VPclZhbHVlV3JhcHBl
cjxUJj4gewotIHB1YmxpYzoKLSAgLy8gV29ya2Fyb3VuZCBmb3IgZGViYXRhYmxlIHBhc3MtYnkt
cmVmZXJlbmNlIGxpbnQgd2FybmluZyAoYy1saWJyYXJ5LXRlYW0KLSAgLy8gcG9saWN5IHByZWNs
dWRlcyBOT0xJTlQgaW4gdGhpcyBjb250ZXh0KQotICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAg
ZXhwbGljaXQgUmVmZXJlbmNlT3JWYWx1ZVdyYXBwZXIocmVmZXJlbmNlIHJlZikKLSAgICAgIDog
dmFsdWVfcHRyXygmcmVmKSB7fQotICBUJiBVbndyYXAoKSB7IHJldHVybiAqdmFsdWVfcHRyXzsg
fQotICBjb25zdCBUJiBQZWVrKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlX3B0cl87IH0KLQotIHBy
aXZhdGU6Ci0gIFQqIHZhbHVlX3B0cl87Ci19OwotCi0vLyBNU1ZDIHdhcm5zIGFib3V0IHVzaW5n
ICd0aGlzJyBpbiBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0LCBzbwotLy8gd2UgbmVlZCB0
byB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAgV2UgaGF2ZSB0byBkbyBpdCBmb3IK
LS8vIHRoZSBlbnRpcmUgY2xhc3MgdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmcsIGV2ZW4gdGhvdWdo
IGl0J3MgYWJvdXQKLS8vIHRoZSBjb25zdHJ1Y3RvciBvbmx5LgotCi0jaWZkZWYgX01TQ19WRVIK
LSMgcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1cnJlbnQgd2Fy
bmluZyBzdGF0ZS4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzU1KSAgLy8gVGVtcG9yYXJp
bHkgZGlzYWJsZXMgd2FybmluZyA0MzU1LgotI2VuZGlmICAvLyBfTVNWX1ZFUgotCi0vLyBDKysg
dHJlYXRzIHRoZSB2b2lkIHR5cGUgc3BlY2lhbGx5LiAgRm9yIGV4YW1wbGUsIHlvdSBjYW5ub3Qg
ZGVmaW5lCi0vLyBhIHZvaWQtdHlwZWQgdmFyaWFibGUgb3IgcGFzcyBhIHZvaWQgdmFsdWUgdG8g
YSBmdW5jdGlvbi4KLS8vIEFjdGlvblJlc3VsdEhvbGRlcjxUPiBob2xkcyBhIHZhbHVlIG9mIHR5
cGUgVCwgd2hlcmUgVCBtdXN0IGJlIGEKLS8vIGNvcHlhYmxlIHR5cGUgb3Igdm9pZCAoVCBkb2Vz
bid0IG5lZWQgdG8gYmUgZGVmYXVsdC1jb25zdHJ1Y3RhYmxlKS4KLS8vIEl0IGhpZGVzIHRoZSBz
eW50YWN0aWMgZGlmZmVyZW5jZSBiZXR3ZWVuIHZvaWQgYW5kIG90aGVyIHR5cGVzLCBhbmQKLS8v
IGlzIHVzZWQgdG8gdW5pZnkgdGhlIGNvZGUgZm9yIGludm9raW5nIGJvdGggdm9pZC1yZXR1cm5p
bmcgYW5kCi0vLyBub24tdm9pZC1yZXR1cm5pbmcgbW9jayBmdW5jdGlvbnMuCi0KLS8vIFVudHlw
ZWQgYmFzZSBjbGFzcyBmb3IgQWN0aW9uUmVzdWx0SG9sZGVyPFQ+LgotY2xhc3MgVW50eXBlZEFj
dGlvblJlc3VsdEhvbGRlckJhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+VW50eXBlZEFjdGlv
blJlc3VsdEhvbGRlckJhc2UoKSB7fQotCi0gIC8vIFByaW50cyB0aGUgaGVsZCB2YWx1ZSBhcyBh
biBhY3Rpb24ncyByZXN1bHQgdG8gb3MuCi0gIHZpcnR1YWwgdm9pZCBQcmludEFzQWN0aW9uUmVz
dWx0KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotfTsKLQotLy8gVGhpcyBnZW5lcmlj
IGRlZmluaXRpb24gaXMgdXNlZCB3aGVuIFQgaXMgbm90IHZvaWQuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWNsYXNzIEFjdGlvblJlc3VsdEhvbGRlciA6IHB1YmxpYyBVbnR5cGVkQWN0aW9uUmVz
dWx0SG9sZGVyQmFzZSB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRoZSBoZWxkIHZhbHVlLiBN
dXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCi0gIFQgVW53cmFwKCkgewotICAgIHJl
dHVybiByZXN1bHRfLlVud3JhcCgpOwotICB9Ci0KLSAgLy8gUHJpbnRzIHRoZSBoZWxkIHZhbHVl
IGFzIGFuIGFjdGlvbidzIHJlc3VsdCB0byBvcy4KLSAgdmlydHVhbCB2b2lkIFByaW50QXNBY3Rp
b25SZXN1bHQoOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJcbiAgICAg
ICAgICBSZXR1cm5zOiAiOwotICAgIC8vIFQgbWF5IGJlIGEgcmVmZXJlbmNlIHR5cGUsIHNvIHdl
IGRvbid0IHVzZSBVbml2ZXJzYWxQcmludCgpLgotICAgIFVuaXZlcnNhbFByaW50ZXI8VD46OlBy
aW50KHJlc3VsdF8uUGVlaygpLCBvcyk7Ci0gIH0KLQotICAvLyBQZXJmb3JtcyB0aGUgZ2l2ZW4g
bW9jayBmdW5jdGlvbidzIGRlZmF1bHQgYWN0aW9uIGFuZCByZXR1cm5zIHRoZQotICAvLyByZXN1
bHQgaW4gYSBuZXctZWQgQWN0aW9uUmVzdWx0SG9sZGVyLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Rj4KLSAgc3RhdGljIEFjdGlvblJlc3VsdEhvbGRlciogUGVyZm9ybURlZmF1bHRBY3Rpb24oCi0g
ICAgICBjb25zdCBGdW5jdGlvbk1vY2tlckJhc2U8Rj4qIGZ1bmNfbW9ja2VyLAotICAgICAgY29u
c3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUmIGFyZ3MsCi0gICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlwdGlvbikgewotICAgIHJldHVybiBuZXcgQWN0aW9u
UmVzdWx0SG9sZGVyKFdyYXBwZXIoCi0gICAgICAgIGZ1bmNfbW9ja2VyLT5QZXJmb3JtRGVmYXVs
dEFjdGlvbihhcmdzLCBjYWxsX2Rlc2NyaXB0aW9uKSkpOwotICB9Ci0KLSAgLy8gUGVyZm9ybXMg
dGhlIGdpdmVuIGFjdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIGEgbmV3LWVkCi0gIC8v
IEFjdGlvblJlc3VsdEhvbGRlci4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIHN0YXRpYyBB
Y3Rpb25SZXN1bHRIb2xkZXIqCi0gIFBlcmZvcm1BY3Rpb24oY29uc3QgQWN0aW9uPEY+JiBhY3Rp
b24sCi0gICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50
VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gbmV3IEFjdGlvblJlc3VsdEhvbGRlcihXcmFwcGVy
KGFjdGlvbi5QZXJmb3JtKGFyZ3MpKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHR5cGVkZWYgUmVm
ZXJlbmNlT3JWYWx1ZVdyYXBwZXI8VD4gV3JhcHBlcjsKLQotICBleHBsaWNpdCBBY3Rpb25SZXN1
bHRIb2xkZXIoV3JhcHBlciByZXN1bHQpCi0gICAgICA6IHJlc3VsdF8oOjp0ZXN0aW5nOjppbnRl
cm5hbDo6bW92ZShyZXN1bHQpKSB7Ci0gIH0KLQotICBXcmFwcGVyIHJlc3VsdF87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBY3Rpb25SZXN1bHRIb2xkZXIpOwotfTsKLQot
Ly8gU3BlY2lhbGl6YXRpb24gZm9yIFQgPSB2b2lkLgotdGVtcGxhdGUgPD4KLWNsYXNzIEFjdGlv
blJlc3VsdEhvbGRlcjx2b2lkPiA6IHB1YmxpYyBVbnR5cGVkQWN0aW9uUmVzdWx0SG9sZGVyQmFz
ZSB7Ci0gcHVibGljOgotICB2b2lkIFVud3JhcCgpIHsgfQotCi0gIHZpcnR1YWwgdm9pZCBQcmlu
dEFzQWN0aW9uUmVzdWx0KDo6c3RkOjpvc3RyZWFtKiAvKiBvcyAqLykgY29uc3Qge30KLQotICAv
LyBQZXJmb3JtcyB0aGUgZ2l2ZW4gbW9jayBmdW5jdGlvbidzIGRlZmF1bHQgYWN0aW9uIGFuZCBy
ZXR1cm5zIG93bmVyc2hpcAotICAvLyBvZiBhbiBlbXB0eSBBY3Rpb25SZXN1bHRIb2xkZXIqLgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgc3RhdGljIEFjdGlvblJlc3VsdEhvbGRlciogUGVy
Zm9ybURlZmF1bHRBY3Rpb24oCi0gICAgICBjb25zdCBGdW5jdGlvbk1vY2tlckJhc2U8Rj4qIGZ1
bmNfbW9ja2VyLAotICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVw
bGUmIGFyZ3MsCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlwdGlvbikgewot
ICAgIGZ1bmNfbW9ja2VyLT5QZXJmb3JtRGVmYXVsdEFjdGlvbihhcmdzLCBjYWxsX2Rlc2NyaXB0
aW9uKTsKLSAgICByZXR1cm4gbmV3IEFjdGlvblJlc3VsdEhvbGRlcjsKLSAgfQotCi0gIC8vIFBl
cmZvcm1zIHRoZSBnaXZlbiBhY3Rpb24gYW5kIHJldHVybnMgb3duZXJzaGlwIG9mIGFuIGVtcHR5
Ci0gIC8vIEFjdGlvblJlc3VsdEhvbGRlciouCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBz
dGF0aWMgQWN0aW9uUmVzdWx0SG9sZGVyKiBQZXJmb3JtQWN0aW9uKAotICAgICAgY29uc3QgQWN0
aW9uPEY+JiBhY3Rpb24sCi0gICAgICBjb25zdCB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1l
bnRUdXBsZSYgYXJncykgewotICAgIGFjdGlvbi5QZXJmb3JtKGFyZ3MpOwotICAgIHJldHVybiBu
ZXcgQWN0aW9uUmVzdWx0SG9sZGVyOwotICB9Ci0KLSBwcml2YXRlOgotICBBY3Rpb25SZXN1bHRI
b2xkZXIoKSB7fQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEFjdGlvblJlc3Vs
dEhvbGRlcik7Ci19OwotCi0vLyBUaGUgYmFzZSBvZiB0aGUgZnVuY3Rpb24gbW9ja2VyIGNsYXNz
IGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24gdHlwZS4KLS8vIFdlIHB1dCB0aGUgbWV0aG9kcyBpbiB0
aGlzIGNsYXNzIGluc3RlYWQgb2YgaXRzIGNoaWxkIHRvIGF2b2lkIGNvZGUKLS8vIGJsb2F0Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlckJhc2UgOiBwdWJsaWMg
VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSB7Ci0gcHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1l
IEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9u
PEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVu
Y3Rpb248Rj46OkFyZ3VtZW50TWF0Y2hlclR1cGxlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOwotCi0g
IEZ1bmN0aW9uTW9ja2VyQmFzZSgpIDogY3VycmVudF9zcGVjXyh0aGlzKSB7fQotCi0gIC8vIFRo
ZSBkZXN0cnVjdG9yIHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiB0aGlzIG1vY2sK
LSAgLy8gZnVuY3Rpb24gaGF2ZSBiZWVuIHNhdGlzZmllZC4gIElmIG5vdCwgaXQgd2lsbCByZXBv
cnQgR29vZ2xlIFRlc3QKLSAgLy8gbm9uLWZhdGFsIGZhaWx1cmVzIGZvciB0aGUgdmlvbGF0aW9u
cy4KLSAgdmlydHVhbCB+RnVuY3Rpb25Nb2NrZXJCYXNlKCkKLSAgICAgICAgR1RFU1RfTE9DS19F
WENMVURFRF8oZ19nbW9ja19tdXRleCkgewotICAgIE11dGV4TG9jayBsKCZnX2dtb2NrX211dGV4
KTsKLSAgICBWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpOwotICAgIE1vY2s6OlVu
cmVnaXN0ZXJMb2NrZWQodGhpcyk7Ci0gICAgQ2xlYXJEZWZhdWx0QWN0aW9uc0xvY2tlZCgpOwot
ICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgT05fQ0FMTCBzcGVjIHRoYXQgbWF0Y2hlcyB0aGlzIG1v
Y2sgZnVuY3Rpb24gd2l0aCB0aGUKLSAgLy8gZ2l2ZW4gYXJndW1lbnRzOyByZXR1cm5zIE5VTEwg
aWYgbm8gbWF0Y2hpbmcgT05fQ0FMTCBpcyBmb3VuZC4KLSAgLy8gTCA9ICoKLSAgY29uc3QgT25D
YWxsU3BlYzxGPiogRmluZE9uQ2FsbFNwZWMoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBh
cmdzKSBjb25zdCB7Ci0gICAgZm9yIChVbnR5cGVkT25DYWxsU3BlY3M6OmNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgaXQKLSAgICAgICAgICAgICA9IHVudHlwZWRfb25fY2FsbF9zcGVjc18ucmJlZ2lu
KCk7Ci0gICAgICAgICBpdCAhPSB1bnR5cGVkX29uX2NhbGxfc3BlY3NfLnJlbmQoKTsgKytpdCkg
ewotICAgICAgY29uc3QgT25DYWxsU3BlYzxGPiogc3BlYyA9IHN0YXRpY19jYXN0PGNvbnN0IE9u
Q2FsbFNwZWM8Rj4qPigqaXQpOwotICAgICAgaWYgKHNwZWMtPk1hdGNoZXMoYXJncykpCi0gICAg
ICAgIHJldHVybiBzcGVjOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotICB9Ci0KLSAgLy8g
UGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9jayBmdW5jdGlvbiBvbiB0aGUg
Z2l2ZW4KLSAgLy8gYXJndW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIEFzc2VydHMgKG9y
IHRocm93cyBpZgotICAvLyBleGNlcHRpb25zIGFyZSBlbmFibGVkKSB3aXRoIGEgaGVscGZ1bCBj
YWxsIGRlc2NycHRpb24gaWYgdGhlcmUKLSAgLy8gaXMgbm8gdmFsaWQgcmV0dXJuIHZhbHVlLiBU
aGlzIG1ldGhvZCBkb2Vzbid0IGRlcGVuZCBvbiB0aGUKLSAgLy8gbXV0YWJsZSBzdGF0ZSBvZiB0
aGlzIG9iamVjdCwgYW5kIHRodXMgY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkKLSAgLy8gd2l0
aG91dCBsb2NraW5nLgotICAvLyBMID0gKgotICBSZXN1bHQgUGVyZm9ybURlZmF1bHRBY3Rpb24o
Y29uc3QgQXJndW1lbnRUdXBsZSYgYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBjYWxsX2Rlc2NyaXB0aW9uKSBjb25zdCB7Ci0gICAgY29uc3Qg
T25DYWxsU3BlYzxGPiogY29uc3Qgc3BlYyA9Ci0gICAgICAgIHRoaXMtPkZpbmRPbkNhbGxTcGVj
KGFyZ3MpOwotICAgIGlmIChzcGVjICE9IE5VTEwpIHsKLSAgICAgIHJldHVybiBzcGVjLT5HZXRB
Y3Rpb24oKS5QZXJmb3JtKGFyZ3MpOwotICAgIH0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBtZXNz
YWdlID0KLSAgICAgICAgY2FsbF9kZXNjcmlwdGlvbiArCi0gICAgICAgICJcbiAgICBUaGUgbW9j
ayBmdW5jdGlvbiBoYXMgbm8gZGVmYXVsdCBhY3Rpb24gIgotICAgICAgICAic2V0LCBhbmQgaXRz
IHJldHVybiB0eXBlIGhhcyBubyBkZWZhdWx0IHZhbHVlIHNldC4iOwotI2lmIEdURVNUX0hBU19F
WENFUFRJT05TCi0gICAgaWYgKCFEZWZhdWx0VmFsdWU8UmVzdWx0Pjo6RXhpc3RzKCkpIHsKLSAg
ICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihtZXNzYWdlKTsKLSAgICB9Ci0jZWxzZQotICAg
IEFzc2VydChEZWZhdWx0VmFsdWU8UmVzdWx0Pjo6RXhpc3RzKCksICIiLCAtMSwgbWVzc2FnZSk7
Ci0jZW5kaWYKLSAgICByZXR1cm4gRGVmYXVsdFZhbHVlPFJlc3VsdD46OkdldCgpOwotICB9Ci0K
LSAgLy8gUGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50
cyBhbmQgcmV0dXJucwotICAvLyB0aGUgYWN0aW9uJ3MgcmVzdWx0LiAgVGhlIGNhbGwgZGVzY3Jp
cHRpb24gc3RyaW5nIHdpbGwgYmUgdXNlZCBpbgotICAvLyB0aGUgZXJyb3IgbWVzc2FnZSB0byBk
ZXNjcmliZSB0aGUgY2FsbCBpbiB0aGUgY2FzZSB0aGUgZGVmYXVsdAotICAvLyBhY3Rpb24gZmFp
bHMuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmVzdWx0Lgot
ICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKiBVbnR5
cGVkUGVyZm9ybURlZmF1bHRBY3Rpb24oCi0gICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3Ms
ICAvLyBtdXN0IHBvaW50IHRvIGFuIEFyZ3VtZW50VHVwbGUKLSAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjYWxsX2Rlc2NyaXB0aW9uKSBjb25zdCB7Ci0gICAgY29uc3QgQXJndW1lbnRUdXBsZSYg
YXJncyA9Ci0gICAgICAgICpzdGF0aWNfY2FzdDxjb25zdCBBcmd1bWVudFR1cGxlKj4odW50eXBl
ZF9hcmdzKTsKLSAgICByZXR1cm4gUmVzdWx0SG9sZGVyOjpQZXJmb3JtRGVmYXVsdEFjdGlvbih0
aGlzLCBhcmdzLCBjYWxsX2Rlc2NyaXB0aW9uKTsKLSAgfQotCi0gIC8vIFBlcmZvcm1zIHRoZSBn
aXZlbiBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZCByZXR1cm5zCi0gIC8vIHRo
ZSBhY3Rpb24ncyByZXN1bHQuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGlu
ZyB0aGUKLSAgLy8gcmVzdWx0LgotICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25S
ZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkUGVyZm9ybUFjdGlvbigKLSAgICAgIGNvbnN0IHZvaWQq
IHVudHlwZWRfYWN0aW9uLCBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MpIGNvbnN0IHsKLSAgICAv
LyBNYWtlIGEgY29weSBvZiB0aGUgYWN0aW9uIGJlZm9yZSBwZXJmb3JtaW5nIGl0LCBpbiBjYXNl
IHRoZQotICAgIC8vIGFjdGlvbiBkZWxldGVzIHRoZSBtb2NrIG9iamVjdCAoYW5kIHRodXMgZGVs
ZXRlcyBpdHNlbGYpLgotICAgIGNvbnN0IEFjdGlvbjxGPiBhY3Rpb24gPSAqc3RhdGljX2Nhc3Q8
Y29uc3QgQWN0aW9uPEY+Kj4odW50eXBlZF9hY3Rpb24pOwotICAgIGNvbnN0IEFyZ3VtZW50VHVw
bGUmIGFyZ3MgPQotICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRUdXBsZSo+KHVu
dHlwZWRfYXJncyk7Ci0gICAgcmV0dXJuIFJlc3VsdEhvbGRlcjo6UGVyZm9ybUFjdGlvbihhY3Rp
b24sIGFyZ3MpOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJC
YXNlOjpDbGVhckRlZmF1bHRBY3Rpb25zTG9ja2VkKCk6Ci0gIC8vIGNsZWFycyB0aGUgT05fQ0FM
TCgpcyBzZXQgb24gdGhpcyBtb2NrIGZ1bmN0aW9uLgotICB2aXJ0dWFsIHZvaWQgQ2xlYXJEZWZh
dWx0QWN0aW9uc0xvY2tlZCgpCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8o
Z19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotCi0gICAg
Ly8gRGVsZXRpbmcgb3VyIGRlZmF1bHQgYWN0aW9ucyBtYXkgdHJpZ2dlciBvdGhlciBtb2NrIG9i
amVjdHMgdG8gYmUKLSAgICAvLyBkZWxldGVkLCBmb3IgZXhhbXBsZSBpZiBhbiBhY3Rpb24gY29u
dGFpbnMgYSByZWZlcmVuY2UgY291bnRlZCBzbWFydAotICAgIC8vIHBvaW50ZXIgdG8gdGhhdCBt
b2NrIG9iamVjdCwgYW5kIHRoYXQgaXMgdGhlIGxhc3QgcmVmZXJlbmNlLiBTbyBpZiB3ZQotICAg
IC8vIGRlbGV0ZSBvdXIgYWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGdsb2JhbCBt
dXRleCB3ZSBtYXkgZGVhZGxvY2sKLSAgICAvLyB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBh
Z2Fpbi4gSW5zdGVhZCwgbWFrZSBhIGNvcHkgb2YgdGhlIHNldCBvZgotICAgIC8vIGFjdGlvbnMg
dG8gZGVsZXRlLCBjbGVhciBvdXIgc2V0IHdpdGhpbiB0aGUgbXV0ZXgsIGFuZCB0aGVuIGRlbGV0
ZSB0aGUKLSAgICAvLyBhY3Rpb25zIG91dHNpZGUgb2YgdGhlIG11dGV4LgotICAgIFVudHlwZWRP
bkNhbGxTcGVjcyBzcGVjc190b19kZWxldGU7Ci0gICAgdW50eXBlZF9vbl9jYWxsX3NwZWNzXy5z
d2FwKHNwZWNzX3RvX2RlbGV0ZSk7Ci0KLSAgICBnX2dtb2NrX211dGV4LlVubG9jaygpOwotICAg
IGZvciAoVW50eXBlZE9uQ2FsbFNwZWNzOjpjb25zdF9pdGVyYXRvciBpdCA9Ci0gICAgICAgICAg
ICAgc3BlY3NfdG9fZGVsZXRlLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBzcGVjc190b19kZWxl
dGUuZW5kKCk7ICsraXQpIHsKLSAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25zdCBPbkNhbGxT
cGVjPEY+Kj4oKml0KTsKLSAgICB9Ci0KLSAgICAvLyBMb2NrIHRoZSBtdXRleCBhZ2Fpbiwgc2lu
Y2UgdGhlIGNhbGxlciBleHBlY3RzIGl0IHRvIGJlIGxvY2tlZCB3aGVuIHdlCi0gICAgLy8gcmV0
dXJuLgotICAgIGdfZ21vY2tfbXV0ZXguTG9jaygpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgZnJpZW5kIGNsYXNzIE1vY2tTcGVjOwotCi0g
IHR5cGVkZWYgQWN0aW9uUmVzdWx0SG9sZGVyPFJlc3VsdD4gUmVzdWx0SG9sZGVyOwotCi0gIC8v
IFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGlzIG1vY2sgZnVuY3Rpb24gd2l0aCB0
aGUgZ2l2ZW4KLSAgLy8gYXJndW1lbnRzLiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgc2FmZWx5IGNh
bGxlZCBmcm9tIG11bHRpcGxlCi0gIC8vIHRocmVhZHMgY29uY3VycmVudGx5LgotICBSZXN1bHQg
SW52b2tlV2l0aChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKQotICAgICAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgc2NvcGVkX3B0cjxSZXN1bHRIb2xkZXI+
IGhvbGRlcigKLSAgICAgICAgRG93bkNhc3RfPFJlc3VsdEhvbGRlcio+KHRoaXMtPlVudHlwZWRJ
bnZva2VXaXRoKCZhcmdzKSkpOwotICAgIHJldHVybiBob2xkZXItPlVud3JhcCgpOwotICB9Ci0K
LSAgLy8gQWRkcyBhbmQgcmV0dXJucyBhIGRlZmF1bHQgYWN0aW9uIHNwZWMgZm9yIHRoaXMgbW9j
ayBmdW5jdGlvbi4KLSAgT25DYWxsU3BlYzxGPiYgQWRkTmV3T25DYWxsU3BlYygKLSAgICAgIGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgY29uc3QgQXJndW1lbnRNYXRjaGVyVHVw
bGUmIG0pCi0gICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgewot
ICAgIE1vY2s6OlJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoTW9ja09iamVjdCgpLCBm
aWxlLCBsaW5lKTsKLSAgICBPbkNhbGxTcGVjPEY+KiBjb25zdCBvbl9jYWxsX3NwZWMgPSBuZXcg
T25DYWxsU3BlYzxGPihmaWxlLCBsaW5lLCBtKTsKLSAgICB1bnR5cGVkX29uX2NhbGxfc3BlY3Nf
LnB1c2hfYmFjayhvbl9jYWxsX3NwZWMpOwotICAgIHJldHVybiAqb25fY2FsbF9zcGVjOwotICB9
Ci0KLSAgLy8gQWRkcyBhbmQgcmV0dXJucyBhbiBleHBlY3RhdGlvbiBzcGVjIGZvciB0aGlzIG1v
Y2sgZnVuY3Rpb24uCi0gIFR5cGVkRXhwZWN0YXRpb248Rj4mIEFkZE5ld0V4cGVjdGF0aW9uKGNv
bnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc291cmNlX3RleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3VtZW50TWF0Y2hlclR1cGxlJiBt
KQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgewotICAgIE1vY2s6
OlJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoTW9ja09iamVjdCgpLCBmaWxlLCBsaW5l
KTsKLSAgICBUeXBlZEV4cGVjdGF0aW9uPEY+KiBjb25zdCBleHBlY3RhdGlvbiA9Ci0gICAgICAg
IG5ldyBUeXBlZEV4cGVjdGF0aW9uPEY+KHRoaXMsIGZpbGUsIGxpbmUsIHNvdXJjZV90ZXh0LCBt
KTsKLSAgICBjb25zdCBsaW5rZWRfcHRyPEV4cGVjdGF0aW9uQmFzZT4gdW50eXBlZF9leHBlY3Rh
dGlvbihleHBlY3RhdGlvbik7Ci0gICAgdW50eXBlZF9leHBlY3RhdGlvbnNfLnB1c2hfYmFjayh1
bnR5cGVkX2V4cGVjdGF0aW9uKTsKLQotICAgIC8vIEFkZHMgdGhpcyBleHBlY3RhdGlvbiBpbnRv
IHRoZSBpbXBsaWNpdCBzZXF1ZW5jZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgU2VxdWVuY2UqIGNv
bnN0IGltcGxpY2l0X3NlcXVlbmNlID0gZ19nbW9ja19pbXBsaWNpdF9zZXF1ZW5jZS5nZXQoKTsK
LSAgICBpZiAoaW1wbGljaXRfc2VxdWVuY2UgIT0gTlVMTCkgewotICAgICAgaW1wbGljaXRfc2Vx
dWVuY2UtPkFkZEV4cGVjdGF0aW9uKEV4cGVjdGF0aW9uKHVudHlwZWRfZXhwZWN0YXRpb24pKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gKmV4cGVjdGF0aW9uOwotICB9Ci0KLSAgLy8gVGhlIGN1cnJl
bnQgc3BlYyAoZWl0aGVyIGRlZmF1bHQgYWN0aW9uIHNwZWMgb3IgZXhwZWN0YXRpb24gc3BlYykK
LSAgLy8gYmVpbmcgZGVzY3JpYmVkIG9uIHRoaXMgZnVuY3Rpb24gbW9ja2VyLgotICBNb2NrU3Bl
YzxGPiYgY3VycmVudF9zcGVjKCkgeyByZXR1cm4gY3VycmVudF9zcGVjXzsgfQotCi0gcHJpdmF0
ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmM+IGZyaWVuZCBjbGFzcyBUeXBlZEV4cGVjdGF0
aW9uOwotCi0gIC8vIFNvbWUgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5nIFVudHlw
ZWRJbnZva2VXaXRoKCkuCi0KLSAgLy8gRGVzY3JpYmVzIHdoYXQgZGVmYXVsdCBhY3Rpb24gd2ls
bCBiZSBwZXJmb3JtZWQgZm9yIHRoZSBnaXZlbgotICAvLyBhcmd1bWVudHMuCi0gIC8vIEwgPSAq
Ci0gIHZvaWQgRGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJn
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICBjb25zdCBPbkNhbGxTcGVjPEY+KiBjb25zdCBzcGVjID0gRmluZE9uQ2FsbFNw
ZWMoYXJncyk7Ci0KLSAgICBpZiAoc3BlYyA9PSBOVUxMKSB7Ci0gICAgICAqb3MgPDwgKGludGVy
bmFsOjp0eXBlX2VxdWFsczxSZXN1bHQsIHZvaWQ+Ojp2YWx1ZSA/Ci0gICAgICAgICAgICAgICJy
ZXR1cm5pbmcgZGlyZWN0bHkuXG4iIDoKLSAgICAgICAgICAgICAgInJldHVybmluZyBkZWZhdWx0
IHZhbHVlLlxuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAidGFraW5nIGRlZmF1bHQg
YWN0aW9uIHNwZWNpZmllZCBhdDpcbiIKLSAgICAgICAgICA8PCBGb3JtYXRGaWxlTG9jYXRpb24o
c3BlYy0+ZmlsZSgpLCBzcGVjLT5saW5lKCkpIDw8ICJcbiI7Ci0gICAgfQotICB9Ci0KLSAgLy8g
V3JpdGVzIGEgbWVzc2FnZSB0aGF0IHRoZSBjYWxsIGlzIHVuaW50ZXJlc3RpbmcgKGkuZS4gbmVp
dGhlcgotICAvLyBleHBsaWNpdGx5IGV4cGVjdGVkIG5vciBleHBsaWNpdGx5IHVuZXhwZWN0ZWQp
IHRvIHRoZSBnaXZlbgotICAvLyBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgVW50eXBlZERlc2Ny
aWJlVW5pbnRlcmVzdGluZ0NhbGwoCi0gICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MsCi0g
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0Ci0gICAgICAgICAgR1RFU1RfTE9DS19FWENM
VURFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MgPQot
ICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRUdXBsZSo+KHVudHlwZWRfYXJncyk7
Ci0gICAgKm9zIDw8ICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtICI7Ci0gICAg
RGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oYXJncywgb3MpOwotICAgICpvcyA8PCAiICAgIEZ1bmN0
aW9uIGNhbGw6ICIgPDwgTmFtZSgpOwotICAgIFVuaXZlcnNhbFByaW50KGFyZ3MsIG9zKTsKLSAg
fQotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4g
ZnVuY3Rpb24gYXJndW1lbnRzCi0gIC8vIChvciBOVUxMIGlzIHRoZXJlJ3Mgbm8gbWF0Y2gpOyB3
aGVuIGEgbWF0Y2ggaXMgZm91bmQsCi0gIC8vIHVudHlwZWRfYWN0aW9uIGlzIHNldCB0byBwb2lu
dCB0byB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJlCi0gIC8vIHBlcmZvcm1lZCAob3IgTlVMTCBp
ZiB0aGUgYWN0aW9uIGlzICJkbyBkZWZhdWx0IiksIGFuZAotICAvLyBpc19leGNlc3NpdmUgaXMg
bW9kaWZpZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgY2FsbCBleGNlZWRzIHRoZQotICAvLyBl
eHBlY3RlZCBudW1iZXIuCi0gIC8vCi0gIC8vIENyaXRpY2FsIHNlY3Rpb246IFdlIG11c3QgZmlu
ZCB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gYW5kIHRoZQotICAvLyBjb3JyZXNwb25kaW5nIGFj
dGlvbiB0aGF0IG5lZWRzIHRvIGJlIHRha2VuIGluIGFuIEFUT01JQwotICAvLyB0cmFuc2FjdGlv
bi4gIE90aGVyd2lzZSBhbm90aGVyIHRocmVhZCBtYXkgY2FsbCB0aGlzIG1vY2sKLSAgLy8gbWV0
aG9kIGluIHRoZSBtaWRkbGUgYW5kIG1lc3MgdXAgdGhlIHN0YXRlLgotICAvLwotICAvLyBIb3dl
dmVyLCBwZXJmb3JtaW5nIHRoZSBhY3Rpb24gaGFzIHRvIGJlIGxlZnQgb3V0IG9mIHRoZSBjcml0
aWNhbAotICAvLyBzZWN0aW9uLiAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGhhdmUgbm8gY29udHJv
bCBvbiB3aGF0IHRoZQotICAvLyBhY3Rpb24gZG9lcyAoaXQgY2FuIGludm9rZSBhbiBhcmJpdHJh
cnkgdXNlciBmdW5jdGlvbiBvciBldmVuIGEKLSAgLy8gbW9jayBmdW5jdGlvbikgYW5kIGV4Y2Vz
c2l2ZSBsb2NraW5nIGNvdWxkIGNhdXNlIGEgZGVhZCBsb2NrLgotICB2aXJ0dWFsIGNvbnN0IEV4
cGVjdGF0aW9uQmFzZSogVW50eXBlZEZpbmRNYXRjaGluZ0V4cGVjdGF0aW9uKAotICAgICAgY29u
c3Qgdm9pZCogdW50eXBlZF9hcmdzLAotICAgICAgY29uc3Qgdm9pZCoqIHVudHlwZWRfYWN0aW9u
LCBib29sKiBpc19leGNlc3NpdmUsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogd2hhdCwgOjpzdGQ6
Om9zdHJlYW0qIHdoeSkKLSAgICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211
dGV4KSB7Ci0gICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncyA9Ci0gICAgICAgICpzdGF0aWNf
Y2FzdDxjb25zdCBBcmd1bWVudFR1cGxlKj4odW50eXBlZF9hcmdzKTsKLSAgICBNdXRleExvY2sg
bCgmZ19nbW9ja19tdXRleCk7Ci0gICAgVHlwZWRFeHBlY3RhdGlvbjxGPiogZXhwID0gdGhpcy0+
RmluZE1hdGNoaW5nRXhwZWN0YXRpb25Mb2NrZWQoYXJncyk7Ci0gICAgaWYgKGV4cCA9PSBOVUxM
KSB7ICAvLyBBIG1hdGNoIHdhc24ndCBmb3VuZC4KLSAgICAgIHRoaXMtPkZvcm1hdFVuZXhwZWN0
ZWRDYWxsTWVzc2FnZUxvY2tlZChhcmdzLCB3aGF0LCB3aHkpOwotICAgICAgcmV0dXJuIE5VTEw7
Ci0gICAgfQotCi0gICAgLy8gVGhpcyBsaW5lIG11c3QgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyBH
ZXRBY3Rpb25Gb3JBcmd1bWVudHMoKSwKLSAgICAvLyB3aGljaCB3aWxsIGluY3JlbWVudCB0aGUg
Y2FsbCBjb3VudCBmb3IgKmV4cCBhbmQgdGh1cyBhZmZlY3QKLSAgICAvLyBpdHMgc2F0dXJhdGlv
biBzdGF0dXMuCi0gICAgKmlzX2V4Y2Vzc2l2ZSA9IGV4cC0+SXNTYXR1cmF0ZWQoKTsKLSAgICBj
b25zdCBBY3Rpb248Rj4qIGFjdGlvbiA9IGV4cC0+R2V0QWN0aW9uRm9yQXJndW1lbnRzKHRoaXMs
IGFyZ3MsIHdoYXQsIHdoeSk7Ci0gICAgaWYgKGFjdGlvbiAhPSBOVUxMICYmIGFjdGlvbi0+SXNE
b0RlZmF1bHQoKSkKLSAgICAgIGFjdGlvbiA9IE5VTEw7ICAvLyBOb3JtYWxpemUgImRvIGRlZmF1
bHQiIHRvIE5VTEwuCi0gICAgKnVudHlwZWRfYWN0aW9uID0gYWN0aW9uOwotICAgIHJldHVybiBl
eHA7Ci0gIH0KLQotICAvLyBQcmludHMgdGhlIGdpdmVuIGZ1bmN0aW9uIGFyZ3VtZW50cyB0byB0
aGUgb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIFVudHlwZWRQcmludEFyZ3MoY29uc3Qgdm9pZCog
dW50eXBlZF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0IHsKLSAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzID0KLSAgICAg
ICAgKnN0YXRpY19jYXN0PGNvbnN0IEFyZ3VtZW50VHVwbGUqPih1bnR5cGVkX2FyZ3MpOwotICAg
IFVuaXZlcnNhbFByaW50KGFyZ3MsIG9zKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVj
dGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzLCBvciBOVUxMIGlmIG5vCi0gIC8vIGV4
cGVjdGF0aW9uIG1hdGNoZXMgdGhlbS4KLSAgVHlwZWRFeHBlY3RhdGlvbjxGPiogRmluZE1hdGNo
aW5nRXhwZWN0YXRpb25Mb2NrZWQoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBj
b25zdAotICAgICAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211
dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gICAgZm9yICh0eXBlbmFt
ZSBVbnR5cGVkRXhwZWN0YXRpb25zOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0KLSAgICAg
ICAgICAgICB1bnR5cGVkX2V4cGVjdGF0aW9uc18ucmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSB1
bnR5cGVkX2V4cGVjdGF0aW9uc18ucmVuZCgpOyArK2l0KSB7Ci0gICAgICBUeXBlZEV4cGVjdGF0
aW9uPEY+KiBjb25zdCBleHAgPQotICAgICAgICAgIHN0YXRpY19jYXN0PFR5cGVkRXhwZWN0YXRp
b248Rj4qPihpdC0+Z2V0KCkpOwotICAgICAgaWYgKGV4cC0+U2hvdWxkSGFuZGxlQXJndW1lbnRz
KGFyZ3MpKSB7Ci0gICAgICAgIHJldHVybiBleHA7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBOVUxMOwotICB9Ci0KLSAgLy8gUmV0dXJucyBhIG1lc3NhZ2UgdGhhdCB0aGUgYXJndW1lbnRz
IGRvbid0IG1hdGNoIGFueSBleHBlY3RhdGlvbi4KLSAgdm9pZCBGb3JtYXRVbmV4cGVjdGVkQ2Fs
bE1lc3NhZ2VMb2NrZWQoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzLAotICAgICAg
OjpzdGQ6Om9zdHJlYW0qIG9zLAotICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdoeSkgY29uc3QKLSAg
ICAgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewot
ICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgICpvcyA8PCAiXG5VbmV4cGVjdGVk
IG1vY2sgZnVuY3Rpb24gY2FsbCAtICI7Ci0gICAgRGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oYXJn
cywgb3MpOwotICAgIFByaW50VHJpZWRFeHBlY3RhdGlvbnNMb2NrZWQoYXJncywgd2h5KTsKLSAg
fQotCi0gIC8vIFByaW50cyBhIGxpc3Qgb2YgZXhwZWN0YXRpb25zIHRoYXQgaGF2ZSBiZWVuIHRy
aWVkIGFnYWluc3QgdGhlCi0gIC8vIGN1cnJlbnQgbW9jayBmdW5jdGlvbiBjYWxsLgotICB2b2lk
IFByaW50VHJpZWRFeHBlY3RhdGlvbnNMb2NrZWQoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzLAotICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdoeSkgY29uc3QKLSAgICAgICAgICBHVEVT
VF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tf
bXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIGNvbnN0IGludCBjb3VudCA9IHN0YXRpY19jYXN0PGlu
dD4odW50eXBlZF9leHBlY3RhdGlvbnNfLnNpemUoKSk7Ci0gICAgKndoeSA8PCAiR29vZ2xlIE1v
Y2sgdHJpZWQgdGhlIGZvbGxvd2luZyAiIDw8IGNvdW50IDw8ICIgIgotICAgICAgICAgPDwgKGNv
dW50ID09IDEgPyAiZXhwZWN0YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2giIDoKLSAgICAgICAg
ICAgICAiZXhwZWN0YXRpb25zLCBidXQgbm9uZSBtYXRjaGVkIikKLSAgICAgICAgIDw8ICI6XG4i
OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgVHlwZWRFeHBl
Y3RhdGlvbjxGPiogY29uc3QgZXhwZWN0YXRpb24gPQotICAgICAgICAgIHN0YXRpY19jYXN0PFR5
cGVkRXhwZWN0YXRpb248Rj4qPih1bnR5cGVkX2V4cGVjdGF0aW9uc19baV0uZ2V0KCkpOwotICAg
ICAgKndoeSA8PCAiXG4iOwotICAgICAgZXhwZWN0YXRpb24tPkRlc2NyaWJlTG9jYXRpb25Ubyh3
aHkpOwotICAgICAgaWYgKGNvdW50ID4gMSkgewotICAgICAgICAqd2h5IDw8ICJ0cmllZCBleHBl
Y3RhdGlvbiAjIiA8PCBpIDw8ICI6ICI7Ci0gICAgICB9Ci0gICAgICAqd2h5IDw8IGV4cGVjdGF0
aW9uLT5zb3VyY2VfdGV4dCgpIDw8ICIuLi5cbiI7Ci0gICAgICBleHBlY3RhdGlvbi0+RXhwbGFp
bk1hdGNoUmVzdWx0VG8oYXJncywgd2h5KTsKLSAgICAgIGV4cGVjdGF0aW9uLT5EZXNjcmliZUNh
bGxDb3VudFRvKHdoeSk7Ci0gICAgfQotICB9Ci0KLSAgLy8gVGhlIGN1cnJlbnQgc3BlYyAoZWl0
aGVyIGRlZmF1bHQgYWN0aW9uIHNwZWMgb3IgZXhwZWN0YXRpb24gc3BlYykKLSAgLy8gYmVpbmcg
ZGVzY3JpYmVkIG9uIHRoaXMgZnVuY3Rpb24gbW9ja2VyLgotICBNb2NrU3BlYzxGPiBjdXJyZW50
X3NwZWNfOwotCi0gIC8vIFRoZXJlIGlzIG5vIGdlbmVyYWxseSB1c2VmdWwgYW5kIGltcGxlbWVu
dGFibGUgc2VtYW50aWNzIG9mCi0gIC8vIGNvcHlpbmcgYSBtb2NrIG9iamVjdCwgc28gY29weWlu
ZyBhIG1vY2sgaXMgdXN1YWxseSBhIHVzZXIgZXJyb3IuCi0gIC8vIFRodXMgd2UgZGlzYWxsb3cg
Y29weWluZyBmdW5jdGlvbiBtb2NrZXJzLiAgSWYgdGhlIHVzZXIgcmVhbGx5Ci0gIC8vIHdhbnRz
IHRvIGNvcHkgYSBtb2NrIG9iamVjdCwgaGUgc2hvdWxkIGltcGxlbWVudCBoaXMgb3duIGNvcHkK
LSAgLy8gb3BlcmF0aW9uLCBmb3IgZXhhbXBsZToKLSAgLy8KLSAgLy8gICBjbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7Ci0gIC8vICAgIHB1YmxpYzoKLSAgLy8gICAgIC8vIERlZmluZXMgYSBj
b3B5IGNvbnN0cnVjdG9yIGV4cGxpY2l0bHkuCi0gIC8vICAgICBNb2NrRm9vKGNvbnN0IE1vY2tG
b28mIHNyYykge30KLSAgLy8gICAgIC4uLgotICAvLyAgIH07Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oRnVuY3Rpb25Nb2NrZXJCYXNlKTsKLX07ICAvLyBjbGFzcyBGdW5jdGlv
bk1vY2tlckJhc2UKLQotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkgIC8v
IFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmICAvLyBfTVNWX1ZFUgotCi0vLyBJ
bXBsZW1lbnRzIG1ldGhvZHMgb2YgRnVuY3Rpb25Nb2NrZXJCYXNlLgotCi0vLyBWZXJpZmllcyB0
aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gdGhpcyBtb2NrIGZ1bmN0aW9uIGhhdmUgYmVlbgotLy8g
c2F0aXNmaWVkLiAgUmVwb3J0cyBvbmUgb3IgbW9yZSBHb29nbGUgVGVzdCBub24tZmF0YWwgZmFp
bHVyZXMgYW5kCi0vLyByZXR1cm5zIGZhbHNlIGlmIG5vdC4KLQotLy8gUmVwb3J0cyBhbiB1bmlu
dGVyZXN0aW5nIGNhbGwgKHdob3NlIGRlc2NyaXB0aW9uIGlzIGluIG1zZykgaW4gdGhlCi0vLyBt
YW5uZXIgc3BlY2lmaWVkIGJ5ICdyZWFjdGlvbicuCi12b2lkIFJlcG9ydFVuaW50ZXJlc3RpbmdD
YWxsKENhbGxSZWFjdGlvbiByZWFjdGlvbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZyk7Ci0KLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBUaGUgc3R5bGUgZ3VpZGUgcHJvaGliaXRzICJ1
c2luZyIgc3RhdGVtZW50cyBpbiBhIG5hbWVzcGFjZSBzY29wZQotLy8gaW5zaWRlIGEgaGVhZGVy
IGZpbGUuICBIb3dldmVyLCB0aGUgTW9ja1NwZWMgY2xhc3MgdGVtcGxhdGUgaXMKLS8vIG1lYW50
IHRvIGJlIGRlZmluZWQgaW4gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuICBUaGUgZm9sbG93aW5n
IGxpbmUKLS8vIGlzIGp1c3QgYSB0cmljayBmb3Igd29ya2luZyBhcm91bmQgYSBidWcgaW4gTVNW
QyA4LjAsIHdoaWNoIGNhbm5vdAotLy8gaGFuZGxlIGl0IGlmIHdlIGRlZmluZSBNb2NrU3BlYyBp
biA6OnRlc3RpbmcuCi11c2luZyBpbnRlcm5hbDo6TW9ja1NwZWM7Ci0KLS8vIENvbnN0KHgpIGlz
IGEgY29udmVuaWVudCBmdW5jdGlvbiBmb3Igb2J0YWluaW5nIGEgY29uc3QgcmVmZXJlbmNlCi0v
LyB0byB4LiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNldHRpbmcgZXhwZWN0YXRpb25zIG9uIGFuIG92
ZXJsb2FkZWQKLS8vIGNvbnN0IG1vY2sgbWV0aG9kLCBlLmcuCi0vLwotLy8gICBjbGFzcyBNb2Nr
Rm9vIDogcHVibGljIEZvb0ludGVyZmFjZSB7Ci0vLyAgICBwdWJsaWM6Ci0vLyAgICAgTU9DS19N
RVRIT0QwKEJhciwgaW50KCkpOwotLy8gICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChCYXIsIGludCYo
KSk7Ci0vLyAgIH07Ci0vLwotLy8gICBNb2NrRm9vIGZvbzsKLS8vICAgLy8gRXhwZWN0cyBhIGNh
bGwgdG8gbm9uLWNvbnN0IE1vY2tGb286OkJhcigpLgotLy8gICBFWFBFQ1RfQ0FMTChmb28sIEJh
cigpKTsKLS8vICAgLy8gRXhwZWN0cyBhIGNhbGwgdG8gY29uc3QgTW9ja0Zvbzo6QmFyKCkuCi0v
LyAgIEVYUEVDVF9DQUxMKENvbnN0KGZvbyksIEJhcigpKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotaW5saW5lIGNvbnN0IFQmIENvbnN0KGNvbnN0IFQmIHgpIHsgcmV0dXJuIHg7IH0KLQotLy8g
Q29uc3RydWN0cyBhbiBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIGFuZCBjby1v
d25zIGV4cC4KLWlubGluZSBFeHBlY3RhdGlvbjo6RXhwZWN0YXRpb24oaW50ZXJuYWw6OkV4cGVj
dGF0aW9uQmFzZSYgZXhwKSAgLy8gTk9MSU5UCi0gICAgOiBleHBlY3RhdGlvbl9iYXNlXyhleHAu
R2V0SGFuZGxlKCkuZXhwZWN0YXRpb25fYmFzZSgpKSB7fQotCi19ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwotCi0vLyBBIHNlcGFyYXRlIG1hY3JvIGlzIHJlcXVpcmVkIHRvIGF2b2lkIGNvbXBpbGUg
ZXJyb3JzIHdoZW4gdGhlIG5hbWUKLS8vIG9mIHRoZSBtZXRob2QgdXNlZCBpbiBjYWxsIGlzIGEg
cmVzdWx0IG9mIG1hY3JvIGV4cGFuc2lvbi4KLS8vIFNlZSBDb21waWxlc1dpdGhNZXRob2ROYW1l
RXhwYW5kZWRGcm9tTWFjcm8gdGVzdHMgaW4KLS8vIGludGVybmFsL2dtb2NrLXNwZWMtYnVpbGRl
cnNfdGVzdC5jYyBmb3IgbW9yZSBkZXRhaWxzLgotI2RlZmluZSBHTU9DS19PTl9DQUxMX0lNUExf
KG9iaiwgY2FsbCkgXAotICAgICgob2JqKS5nbW9ja18jI2NhbGwpLkludGVybmFsRGVmYXVsdEFj
dGlvblNldEF0KF9fRklMRV9fLCBfX0xJTkVfXywgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICNvYmosICNjYWxsKQotI2RlZmluZSBPTl9DQUxM
KG9iaiwgY2FsbCkgR01PQ0tfT05fQ0FMTF9JTVBMXyhvYmosIGNhbGwpCi0KLSNkZWZpbmUgR01P
Q0tfRVhQRUNUX0NBTExfSU1QTF8ob2JqLCBjYWxsKSBcCi0gICAgKChvYmopLmdtb2NrXyMjY2Fs
bCkuSW50ZXJuYWxFeHBlY3RlZEF0KF9fRklMRV9fLCBfX0xJTkVfXywgI29iaiwgI2NhbGwpCi0j
ZGVmaW5lIEVYUEVDVF9DQUxMKG9iaiwgY2FsbCkgR01PQ0tfRVhQRUNUX0NBTExfSU1QTF8ob2Jq
LCBjYWxsKQotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfU1BFQ19CVUlM
REVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NzM1YzcxYmY4YWE3MmRmMzQ2OTJmNDJjZDc4YjQ4ZGEzYmU2MzU1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svZ21vY2suaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsg
Zm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGlzIHRoZSBtYWluIGhl
YWRlciBmaWxlIGEgdXNlciBzaG91bGQgaW5jbHVkZS4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURF
X0dNT0NLX0dNT0NLX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfSF8KLQot
Ly8gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBzeW50YXg6Ci0vLwotLy8gICBP
Tl9DQUxMKG1vY2tfb2JqZWN0Lk1ldGhvZCguLi4pKQotLy8gICAgIC5XaXRoKC4uLikgPwotLy8g
ICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7Ci0vLwotLy8gd2hlcmUgV2l0aCgpIGlzIG9wdGlvbmFs
IGFuZCBXaWxsQnlEZWZhdWx0KCkgbXVzdCBhcHBlYXIgZXhhY3RseQotLy8gb25jZS4KLS8vCi0v
LyAgIEVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0Lk1ldGhvZCguLi4pKQotLy8gICAgIC5XaXRoKC4u
LikgPwotLy8gICAgIC5UaW1lcyguLi4pID8KLS8vICAgICAuSW5TZXF1ZW5jZSguLi4pICoKLS8v
ICAgICAuV2lsbE9uY2UoLi4uKSAqCi0vLyAgICAgLldpbGxSZXBlYXRlZGx5KC4uLikgPwotLy8g
ICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCkgPyA7Ci0vLwotLy8gd2hlcmUgYWxsIGNsYXVzZXMg
YXJlIG9wdGlvbmFsIGFuZCBXaWxsT25jZSgpIGNhbiBiZSByZXBlYXRlZC4KLQotI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLWFjdGlvbnMuaCIKLSNpbmNsdWRlICJnbW9jay9nbW9jay1jYXJkaW5hbGl0
aWVzLmgiCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCIKLSNpbmNs
dWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oIgotI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oIgotI2luY2x1ZGUgImdtb2NrL2dt
b2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1hdGNoZXJz
LmgiCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stbW9yZS1hY3Rpb25zLmgiCi0jaW5jbHVkZSAiZ21v
Y2svZ21vY2stbW9yZS1tYXRjaGVycy5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2Nr
LWludGVybmFsLXV0aWxzLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRGVjbGFyZXMg
R29vZ2xlIE1vY2sgZmxhZ3MgdGhhdCB3ZSB3YW50IGEgdXNlciB0byB1c2UgcHJvZ3JhbW1hdGlj
YWxseS4KLUdNT0NLX0RFQ0xBUkVfYm9vbF8oY2F0Y2hfbGVha2VkX21vY2tzKTsKLUdNT0NLX0RF
Q0xBUkVfc3RyaW5nXyh2ZXJib3NlKTsKLQotLy8gSW5pdGlhbGl6ZXMgR29vZ2xlIE1vY2suICBU
aGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBydW5uaW5nIHRoZQotLy8gdGVzdHMuICBJbiBwYXJ0
aWN1bGFyLCBpdCBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlIGZsYWdzCi0vLyB0aGF0
IEdvb2dsZSBNb2NrIHJlY29nbml6ZXMuICBXaGVuZXZlciBhIEdvb2dsZSBNb2NrIGZsYWcgaXMg
c2VlbiwKLS8vIGl0IGlzIHJlbW92ZWQgZnJvbSBhcmd2LCBhbmQgKmFyZ2MgaXMgZGVjcmVtZW50
ZWQuCi0vLwotLy8gTm8gdmFsdWUgaXMgcmV0dXJuZWQuICBJbnN0ZWFkLCB0aGUgR29vZ2xlIE1v
Y2sgZmxhZyB2YXJpYWJsZXMgYXJlCi0vLyB1cGRhdGVkLgotLy8KLS8vIFNpbmNlIEdvb2dsZSBU
ZXN0IGlzIG5lZWRlZCBmb3IgR29vZ2xlIE1vY2sgdG8gd29yaywgdGhpcyBmdW5jdGlvbgotLy8g
YWxzbyBpbml0aWFsaXplcyBHb29nbGUgVGVzdCBhbmQgcGFyc2VzIGl0cyBmbGFncywgaWYgdGhh
dCBoYXNuJ3QKLS8vIGJlZW4gZG9uZS4KLUdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlTW9jayhp
bnQqIGFyZ2MsIGNoYXIqKiBhcmd2KTsKLQotLy8gVGhpcyBvdmVybG9hZGVkIHZlcnNpb24gY2Fu
IGJlIHVzZWQgaW4gV2luZG93cyBwcm9ncmFtcyBjb21waWxlZCBpbgotLy8gVU5JQ09ERSBtb2Rl
LgotR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVNb2NrKGludCogYXJnYywgd2NoYXJfdCoqIGFy
Z3YpOwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xV
REVfR01PQ0tfR01PQ0tfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2sv
aW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9p
bmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGMzYjFhZDU0MTY2NTIyZDc5NjkyYzM2Zjcx
ZWJkZTg2ODczMmY4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVy
YXRlZC1hY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLS8vIFRoaXMgZmls
ZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBnbW9jay1nZW5lcmF0
ZWQtYWN0aW9ucy5oLnB1bXAKLS8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKLQotI2lmbmRlZiBH
TU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19HRU5FUkFURURfQUNUSU9O
U19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19H
RU5FUkFURURfQUNUSU9OU19IXwotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5U
RVJOQUxfQ1VTVE9NX0dNT0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0
aW9ucy5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9n
bW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1bXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQyNmM4YTA4YTQ3NzRiOWE5Zjc0YjJjZWQxZWIwNTU3YjI3ZGVhMzMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaC5wdW1wCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotJCQgLSotIG1vZGU6IGMrKzsgLSotCi0kJCBUaGlz
IGlzIGEgUHVtcCBzb3VyY2UgZmlsZSAoaHR0cDovL2dvL3B1bXApLiAgUGxlYXNlIHVzZSBQdW1w
IHRvIGNvbnZlcnQKLSQkIGl0IHRvIGNhbGxiYWNrLWFjdGlvbnMuaC4KLSQkCi0kdmFyIG1heF9j
YWxsYmFja19hcml0eSA9IDUKLSQkfX0gVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRl
bnRhdGlvbiBpbiBlZGl0b3JzLgotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFM
X0NVU1RPTV9HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURF
X0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwotCi0jZW5k
aWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX0dFTkVSQVRF
RF9BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVy
bmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9p
bnRlcm5hbC9jdXN0b20vZ21vY2stbWF0Y2hlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjJlZmVmOTFkYmU1MzdkMWIxY2IxM2UyZTlmMmJlNTRjYmQ3ZTg4ZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gQW4gaW5zdGFsbGF0aW9uLXNwZWNpZmljIGV4dGVuc2lvbiBwb2lu
dCBmb3IgZ21vY2stbWF0Y2hlcnMuaC4KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIEFkZHMgZ29vZ2xlMyBjYWxs
YmFjayBzdXBwb3J0IHRvIENhbGxhYmxlVHJhaXRzLgotLy8KLSNpZm5kZWYgR01PQ0tfSU5DTFVE
RV9HTU9DS19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tfTUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01P
Q0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tfTUFUQ0hFUlNfSF8KLQot
I2VuZGlmICAvLyAgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9DVVNUT01fQ0FMTEJBQ0tf
TUFUQ0hFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJu
YWwvY3VzdG9tL2dtb2NrLXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJu
YWwvY3VzdG9tL2dtb2NrLXBvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNl
OGJmZTA2YmYxMmJmY2YyMzE5NDU2N2Y5MGFkMGNjZDU4MzY0Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2lu
dGVybmFsL2N1c3RvbS9nbW9jay1wb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gSW5q
ZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25maWd1cmF0aW9ucy4KLS8vIFRoZSBmb2xs
b3dpbmcgbWFjcm9zIGNhbiBiZSBkZWZpbmVkOgotLy8KLS8vICAgRmxhZyByZWxhdGVkIG1hY3Jv
czoKLS8vICAgICBHTU9DS19ERUNMQVJFX2Jvb2xfKG5hbWUpCi0vLyAgICAgR01PQ0tfREVDTEFS
RV9pbnQzMl8obmFtZSkKLS8vICAgICBHTU9DS19ERUNMQVJFX3N0cmluZ18obmFtZSkKLS8vICAg
ICBHTU9DS19ERUZJTkVfYm9vbF8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKLS8vICAgICBHTU9D
S19ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpCi0vLyAgICAgR01PQ0tfREVG
SU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKLS8vCi0vLyAqKiBDdXN0b20gaW1w
bGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NL
X0lOVEVSTkFMX0NVU1RPTV9HTU9DS19QT1JUX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01P
Q0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX1BPUlRfSF8KLQotI2VuZGlmICAvLyBHTU9DS19JTkNM
VURFX0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19QT1JUX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11
dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1nZW5lcmF0
ZWQtaW50ZXJuYWwtdXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgxMWU0
M2Y4N2MxMWIwMDdmZDdiNDViMjFlNGMxYTVkZWE2MWY2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVy
bmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oCisrKyAvZGV2L251bGwKQEAgLTEs
Mjc5ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAg
ICAgcHVtcC5weSBnbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaC5wdW1wCi0vLyBETyBO
T1QgRURJVCBCWSBIQU5EISEhCi0KLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nl
cy4KLS8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgdGVtcGxhdGUgbWV0YS1wcm9ncmFtbWluZyB1
dGlsaXR5IGNsYXNzZXMgbmVlZGVkCi0vLyBmb3IgaW1wbGVtZW50aW5nIEdvb2dsZSBNb2NrLgot
Ci0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01PQ0tfR0VORVJBVEVEX0lO
VEVSTkFMX1VUSUxTX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01P
Q0tfR0VORVJBVEVEX0lOVEVSTkFMX1VUSUxTX0hfCi0KLSNpbmNsdWRlICJnbW9jay9pbnRlcm5h
bC9nbW9jay1wb3J0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBNYXRjaGVyOwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBbiBJ
Z25vcmVkVmFsdWUgb2JqZWN0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnN0cnVjdGVkIGZyb20gQU5Z
IHZhbHVlLgotLy8gVGhpcyBpcyB1c2VkIGluIGltcGxlbWVudGluZyB0aGUgSWdub3JlUmVzdWx0
KGEpIGFjdGlvbi4KLWNsYXNzIElnbm9yZWRWYWx1ZSB7Ci0gcHVibGljOgotICAvLyBUaGlzIGNv
bnN0cnVjdG9yIHRlbXBsYXRlIGFsbG93cyBhbnkgdmFsdWUgdG8gYmUgaW1wbGljaXRseQotICAv
LyBjb252ZXJ0ZWQgdG8gSWdub3JlZFZhbHVlLiAgVGhlIG9iamVjdCBoYXMgbm8gZGF0YSBtZW1i
ZXIgYW5kCi0gIC8vIGRvZXNuJ3QgdHJ5IHRvIHJlbWVtYmVyIGFueXRoaW5nIGFib3V0IHRoZSBh
cmd1bWVudC4gIFdlCi0gIC8vIGRlbGliZXJhdGVseSBvbWl0IHRoZSAnZXhwbGljaXQnIGtleXdv
cmQgaW4gb3JkZXIgdG8gYWxsb3cgdGhlCi0gIC8vIGNvbnZlcnNpb24gdG8gYmUgaW1wbGljaXQu
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBJZ25vcmVkVmFsdWUoY29uc3QgVCYgLyogaWdu
b3JlZCAqLykge30gIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQotfTsKLQotLy8gTWF0Y2hl
clR1cGxlPFQ+Ojp0eXBlIGlzIGEgdHVwbGUgdHlwZSB3aGVyZSBlYWNoIGZpZWxkIGlzIGEgTWF0
Y2hlcgotLy8gZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHR1cGxlIHR5cGUgVC4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KLXN0cnVjdCBNYXRjaGVyVHVwbGU7Ci0KLXRlbXBsYXRl
IDw+Ci1zdHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPD4gPiB7Ci0gIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTwgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEEx
Pgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMT4gPiB7Ci0gIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxBMSwgQTI+ID4gewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8TWF0Y2hlcjxB
MT4sIE1hdGNoZXI8QTI+ID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0
dXBsZTxBMSwgQTIsIEEzPiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8
QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4gPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0Pgotc3RydWN0
IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBND4gPiB7Ci0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8
QTM+LAotICAgICAgTWF0Y2hlcjxBND4gPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNT4K
LXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1
PiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEy
PiwgTWF0Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAotICAgICAgTWF0Y2hlcjxBNT4gPiB0eXBlOwot
fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5
cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKLSAgICB0eXBlbmFtZSBBNj4KLXN0cnVjdCBNYXRjaGVy
VHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gPiB7Ci0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8
QTM+LCBNYXRjaGVyPEE0PiwKLSAgICAgIE1hdGNoZXI8QTU+LCBNYXRjaGVyPEE2PiA+IHR5cGU7
Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywg
dHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAotICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4K
LXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1
LCBBNiwgQTc+ID4gewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8TWF0Y2hlcjxBMT4sIE1h
dGNoZXI8QTI+LCBNYXRjaGVyPEEzPiwgTWF0Y2hlcjxBND4sCi0gICAgICBNYXRjaGVyPEE1Piwg
TWF0Y2hlcjxBNj4sIE1hdGNoZXI8QTc+ID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUs
Ci0gICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOD4KLXN0cnVjdCBNYXRj
aGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
PiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEy
PiwgTWF0Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAotICAgICAgTWF0Y2hlcjxBNT4sIE1hdGNoZXI8
QTY+LCBNYXRjaGVyPEE3PiwgTWF0Y2hlcjxBOD4gPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFt
ZSBBNSwKLSAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFt
ZSBBOT4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywg
QTQsIEE1LCBBNiwgQTcsIEE4LCBBOT4gPiB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxN
YXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8QTM+LCBNYXRjaGVyPEE0PiwKLSAgICAg
IE1hdGNoZXI8QTU+LCBNYXRjaGVyPEE2PiwgTWF0Y2hlcjxBNz4sIE1hdGNoZXI8QTg+LCBNYXRj
aGVyPEE5PiA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEy
LCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAotICAgIHR5cGVuYW1lIEE2
LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBBMTA+Ci1z
dHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYsIEE3LCBBOCwgQTksCi0gICAgQTEwPiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxl
PE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAotICAg
ICAgTWF0Y2hlcjxBNT4sIE1hdGNoZXI8QTY+LCBNYXRjaGVyPEE3PiwgTWF0Y2hlcjxBOD4sIE1h
dGNoZXI8QTk+LAotICAgICAgTWF0Y2hlcjxBMTA+ID4gdHlwZTsKLX07Ci0KLS8vIFRlbXBsYXRl
IHN0cnVjdCBGdW5jdGlvbjxGPiwgd2hlcmUgRiBtdXN0IGJlIGEgZnVuY3Rpb24gdHlwZSwgY29u
dGFpbnMKLS8vIHRoZSBmb2xsb3dpbmcgdHlwZWRlZnM6Ci0vLwotLy8gICBSZXN1bHQ6ICAgICAg
ICAgICAgICAgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0vLyAgIEFyZ3VtZW50TjogICAg
ICAgICAgICB0aGUgdHlwZSBvZiB0aGUgTi10aCBhcmd1bWVudCwgd2hlcmUgTiBzdGFydHMgd2l0
aCAxLgotLy8gICBBcmd1bWVudFR1cGxlOiAgICAgICAgdGhlIHR1cGxlIHR5cGUgY29uc2lzdGlu
ZyBvZiBhbGwgcGFyYW1ldGVycyBvZiBGLgotLy8gICBBcmd1bWVudE1hdGNoZXJUdXBsZTogdGhl
IHR1cGxlIHR5cGUgY29uc2lzdGluZyBvZiBNYXRjaGVycyBmb3IgYWxsCi0vLyAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJzIG9mIEYuCi0vLyAgIE1ha2VSZXN1bHRWb2lkOiAgICAg
ICB0aGUgZnVuY3Rpb24gdHlwZSBvYnRhaW5lZCBieSBzdWJzdGl0dXRpbmcgdm9pZAotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBGLgotLy8gICBNYWtl
UmVzdWx0SWdub3JlZFZhbHVlOgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bmN0
aW9uIHR5cGUgb2J0YWluZWQgYnkgc3Vic3RpdHV0aW5nIFNvbWV0aGluZwotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBGLgotdGVtcGxhdGUgPHR5cGVu
YW1lIEY+Ci1zdHJ1Y3QgRnVuY3Rpb247Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotc3RydWN0
IEZ1bmN0aW9uPFIoKT4gewotICB0eXBlZGVmIFIgUmVzdWx0OwotICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8PiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBs
ZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2
b2lkIE1ha2VSZXN1bHRWb2lkKCk7Ci0gIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJ
Z25vcmVkVmFsdWUoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMT4K
LXN0cnVjdCBGdW5jdGlvbjxSKEExKT4KLSAgICA6IEZ1bmN0aW9uPFIoKT4gewotICB0eXBlZGVm
IEExIEFyZ3VtZW50MTsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExPiBBcmd1bWVudFR1
cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlw
ZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEEx
KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSk7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotc3Ry
dWN0IEZ1bmN0aW9uPFIoQTEsIEEyKT4KLSAgICA6IEZ1bmN0aW9uPFIoQTEpPiB7Ci0gIHR5cGVk
ZWYgQTIgQXJndW1lbnQyOwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyPiBBcmd1
bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxl
Pjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRW
b2lkKEExLCBBMik7Ci0gIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFs
dWUoQTEsIEEyKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotc3RydWN0IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMyk+Ci0g
ICAgOiBGdW5jdGlvbjxSKEExLCBBMik+IHsKLSAgdHlwZWRlZiBBMyBBcmd1bWVudDM7Ci0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiBBcmd1bWVudFR1cGxlOwotICB0eXBl
ZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1h
dGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMpOwot
ICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZhbHVlKEExLCBBMiwgQTMp
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwg
dHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0Pgotc3RydWN0IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywg
QTQpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzKT4gewotICB0eXBlZGVmIEE0IEFyZ3Vt
ZW50NDsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0PiBBcmd1bWVu
dFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6
dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lk
KEExLCBBMiwgQTMsIEE0KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9y
ZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlw
ZW5hbWUgQTU+Ci1zdHJ1Y3QgRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUpPgotICAgIDog
RnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCk+IHsKLSAgdHlwZWRlZiBBNSBBcmd1bWVudDU7Ci0g
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTU+IEFyZ3VtZW50VHVw
bGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3VtZW50VHVwbGU+Ojp0eXBl
IEFyZ3VtZW50TWF0Y2hlclR1cGxlOwotICB0eXBlZGVmIHZvaWQgTWFrZVJlc3VsdFZvaWQoQTEs
IEEyLCBBMywgQTQsIEE1KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9y
ZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwgQTUpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIs
IHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAg
IHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KLXN0cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMs
IEE0LCBBNSwgQTYpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUpPiB7Ci0g
IHR5cGVkZWYgQTYgQXJndW1lbnQ2OwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEy
LCBBMywgQTQsIEE1LCBBNj4gQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBNYXRj
aGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7Ci0gIHR5
cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KTsKLSAgdHlw
ZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwg
QTUsIEE2KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5h
bWUgQTYsIHR5cGVuYW1lIEE3Pgotc3RydWN0IEZ1bmN0aW9uPFIoQTEsIEEyLCBBMywgQTQsIEE1
LCBBNiwgQTcpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4gewot
ICB0eXBlZGVmIEE3IEFyZ3VtZW50NzsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBB
MiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1l
IE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsK
LSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3
KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIs
IEEzLCBBNCwgQTUsIEE2LCBBNyk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5h
bWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTg+Ci1zdHJ1Y3QgRnVu
Y3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPgotICAgIDogRnVuY3Rpb248
UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IHsKLSAgdHlwZWRlZiBBOCBBcmd1bWVudDg7
Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywg
QTg+IEFyZ3VtZW50VHVwbGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3Vt
ZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOwotICB0eXBlZGVmIHZvaWQgTWFr
ZVJlc3VsdFZvaWQoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KTsKLSAgdHlwZWRlZiBJ
Z25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2
LCBBNywgQTgpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBl
bmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0eXBl
bmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4KLXN0cnVjdCBG
dW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkpPgotICAgIDogRnVu
Y3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPiB7Ci0gIHR5cGVkZWYgQTkg
QXJndW1lbnQ5OwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1
LCBBNiwgQTcsIEE4LCBBOT4gQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBNYXRj
aGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7Ci0gIHR5
cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgs
IEE5KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwg
QTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsCi0gICAgICBBOSk7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5h
bWUgQTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5h
bWUgQTgsIHR5cGVuYW1lIEE5LAotICAgIHR5cGVuYW1lIEExMD4KLXN0cnVjdCBGdW5jdGlvbjxS
KEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCk+Ci0gICAgOiBGdW5jdGlv
bjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkpPiB7Ci0gIHR5cGVkZWYgQTEw
IEFyZ3VtZW50MTA7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwg
QTUsIEE2LCBBNywgQTgsIEE5LAotICAgICAgQTEwPiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVm
IHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNo
ZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMsIEE0LCBB
NSwgQTYsIEE3LCBBOCwgQTksIEExMCk7Ci0gIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1
bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LAotICAgICAgQTks
IEExMCk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NL
X0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5j
bHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaC5wdW1w
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1nZW5lcmF0ZWQtaW50
ZXJuYWwtdXRpbHMuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDBhZjE3
YzFkOGJiYjgwMDIwMThiYzNlZjFkYWM0ZDMxY2VlOWU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJu
YWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgucHVtcAorKysgL2Rldi9udWxsCkBA
IC0xLDEzNiArMCwwIEBACi0kJCAtKi0gbW9kZTogYysrOyAtKi0KLSQkIFRoaXMgaXMgYSBQdW1w
IHNvdXJjZSBmaWxlLiAgUGxlYXNlIHVzZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KLSQkIGdtb2Nr
LWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmguCi0kJAotJHZhciBuID0gMTAgICQkIFRoZSBt
YXhpbXVtIGFyaXR5IHdlIHN1cHBvcnQuCi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNs
YXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHRlbXBsYXRlIG1ldGEtcHJvZ3JhbW1p
bmcgdXRpbGl0eSBjbGFzc2VzIG5lZWRlZAotLy8gZm9yIGltcGxlbWVudGluZyBHb29nbGUgTW9j
ay4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRF
RF9JTlRFUk5BTF9VVElMU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFM
X0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19IXwotCi0jaW5jbHVkZSAiZ21vY2svaW50
ZXJuYWwvZ21vY2stcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgTWF0Y2hlcjsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8g
QW4gSWdub3JlZFZhbHVlIG9iamVjdCBjYW4gYmUgaW1wbGljaXRseSBjb25zdHJ1Y3RlZCBmcm9t
IEFOWSB2YWx1ZS4KLS8vIFRoaXMgaXMgdXNlZCBpbiBpbXBsZW1lbnRpbmcgdGhlIElnbm9yZVJl
c3VsdChhKSBhY3Rpb24uCi1jbGFzcyBJZ25vcmVkVmFsdWUgewotIHB1YmxpYzoKLSAgLy8gVGhp
cyBjb25zdHJ1Y3RvciB0ZW1wbGF0ZSBhbGxvd3MgYW55IHZhbHVlIHRvIGJlIGltcGxpY2l0bHkK
LSAgLy8gY29udmVydGVkIHRvIElnbm9yZWRWYWx1ZS4gIFRoZSBvYmplY3QgaGFzIG5vIGRhdGEg
bWVtYmVyIGFuZAotICAvLyBkb2Vzbid0IHRyeSB0byByZW1lbWJlciBhbnl0aGluZyBhYm91dCB0
aGUgYXJndW1lbnQuICBXZQotICAvLyBkZWxpYmVyYXRlbHkgb21pdCB0aGUgJ2V4cGxpY2l0JyBr
ZXl3b3JkIGluIG9yZGVyIHRvIGFsbG93IHRoZQotICAvLyBjb252ZXJzaW9uIHRvIGJlIGltcGxp
Y2l0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgSWdub3JlZFZhbHVlKGNvbnN0IFQmIC8q
IGlnbm9yZWQgKi8pIHt9ICAvLyBOT0xJTlQocnVudGltZS9leHBsaWNpdCkKLX07Ci0KLS8vIE1h
dGNoZXJUdXBsZTxUPjo6dHlwZSBpcyBhIHR1cGxlIHR5cGUgd2hlcmUgZWFjaCBmaWVsZCBpcyBh
IE1hdGNoZXIKLS8vIGZvciB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBpbiB0dXBsZSB0eXBlIFQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci1zdHJ1Y3QgTWF0Y2hlclR1cGxlOwotCi0KLSRy
YW5nZSBpIDAuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHZhciB0eXBlbmFtZV9BcyA9
IFtbJGZvciBqLCBbW3R5cGVuYW1lIEEkal1dXV0KLSR2YXIgQXMgPSBbWyRmb3IgaiwgW1tBJGpd
XV1dCi0kdmFyIG1hdGNoZXJfQXMgPSBbWyRmb3IgaiwgW1tNYXRjaGVyPEEkaj5dXV1dCi10ZW1w
bGF0ZSA8JHR5cGVuYW1lX0FzPgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBs
ZTwkQXM+ID4gewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8JG1hdGNoZXJfQXMgPiB0eXBl
OwotfTsKLQotCi1dXQotLy8gVGVtcGxhdGUgc3RydWN0IEZ1bmN0aW9uPEY+LCB3aGVyZSBGIG11
c3QgYmUgYSBmdW5jdGlvbiB0eXBlLCBjb250YWlucwotLy8gdGhlIGZvbGxvd2luZyB0eXBlZGVm
czoKLS8vCi0vLyAgIFJlc3VsdDogICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24ncyByZXR1cm4g
dHlwZS4KLS8vICAgQXJndW1lbnROOiAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRoZSBOLXRoIGFy
Z3VtZW50LCB3aGVyZSBOIHN0YXJ0cyB3aXRoIDEuCi0vLyAgIEFyZ3VtZW50VHVwbGU6ICAgICAg
ICB0aGUgdHVwbGUgdHlwZSBjb25zaXN0aW5nIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIEYuCi0vLyAg
IEFyZ3VtZW50TWF0Y2hlclR1cGxlOiB0aGUgdHVwbGUgdHlwZSBjb25zaXN0aW5nIG9mIE1hdGNo
ZXJzIGZvciBhbGwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgb2YgRi4K
LS8vICAgTWFrZVJlc3VsdFZvaWQ6ICAgICAgIHRoZSBmdW5jdGlvbiB0eXBlIG9idGFpbmVkIGJ5
IHN1YnN0aXR1dGluZyB2b2lkCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHJl
dHVybiB0eXBlIG9mIEYuCi0vLyAgIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWU6Ci0vLyAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gdHlwZSBvYnRhaW5lZCBieSBzdWJzdGl0dXRp
bmcgU29tZXRoaW5nCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHJldHVybiB0
eXBlIG9mIEYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLXN0cnVjdCBGdW5jdGlvbjsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgRnVuY3Rpb248UigpPiB7Ci0gIHR5cGVkZWYgUiBS
ZXN1bHQ7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTw+IEFyZ3VtZW50VHVwbGU7Ci0gIHR5
cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3VtZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50
TWF0Y2hlclR1cGxlOwotICB0eXBlZGVmIHZvaWQgTWFrZVJlc3VsdFZvaWQoKTsKLSAgdHlwZWRl
ZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZSgpOwotfTsKLQotCi0kcmFuZ2Ug
aSAxLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSR2YXIgdHlwZW5hbWVfQXMgPSBbWyRm
b3IgaiBbWywgdHlwZW5hbWUgQSRqXV1dXQotJHZhciBBcyA9IFtbJGZvciBqLCBbW0Ekal1dXV0K
LSR2YXIgbWF0Y2hlcl9BcyA9IFtbJGZvciBqLCBbW01hdGNoZXI8QSRqPl1dXV0KLSRyYW5nZSBr
IDEuLmktMQotJHZhciBwcmV2X0FzID0gW1skZm9yIGssIFtbQSRrXV1dXQotdGVtcGxhdGUgPHR5
cGVuYW1lIFIkdHlwZW5hbWVfQXM+Ci1zdHJ1Y3QgRnVuY3Rpb248UigkQXMpPgotICAgIDogRnVu
Y3Rpb248UigkcHJldl9Bcyk+IHsKLSAgdHlwZWRlZiBBJGkgQXJndW1lbnQkaTsKLSAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPCRBcz4gQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRjaGVyVHVwbGU7
Ci0gIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZCgkQXMpOwotICB0eXBlZGVmIElnbm9yZWRW
YWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZhbHVlKCRBcyk7Ci19OwotCi0KLV1dCi19ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBH
TU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElM
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9j
ay1pbnRlcm5hbC11dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9n
bW9jay1pbnRlcm5hbC11dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTY1
Y2VhOGRkMTRmMmFkZjhkYjAxMjY5MzNiMTNmZTg1OTAzYjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50
ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxMCArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAt
IGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBm
aWxlIGRlZmluZXMgc29tZSB1dGlsaXRpZXMgdXNlZnVsIGZvciBpbXBsZW1lbnRpbmcgR29vZ2xl
Ci0vLyBNb2NrLiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UsIHNv
IHBsZWFzZSBETyBOT1QKLS8vIFVTRSBUSEVNIElOIFVTRVIgQ09ERS4KLQotI2lmbmRlZiBHTU9D
S19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX0lOVEVSTkFMX1VUSUxTX0hfCi0jZGVmaW5l
IEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01PQ0tfSU5URVJOQUxfVVRJTFNfSF8KLQot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1
ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1p
bnRlcm5hbC11dGlscy5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIK
LSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBDb252ZXJ0cyBhbiBpZGVudGlmaWVyIG5hbWUgdG8gYSBzcGFj
ZS1zZXBhcmF0ZWQgbGlzdCBvZiBsb3dlci1jYXNlCi0vLyB3b3Jkcy4gIEVhY2ggbWF4aW11bSBz
dWJzdHJpbmcgb2YgdGhlIGZvcm0gW0EtWmEtel1bYS16XSp8XGQrIGlzCi0vLyB0cmVhdGVkIGFz
IG9uZSB3b3JkLiAgRm9yIGV4YW1wbGUsIGJvdGggIkZvb0JhcjEyMyIgYW5kCi0vLyAiZm9vX2Jh
cl8xMjMiIGFyZSBjb252ZXJ0ZWQgdG8gImZvbyBiYXIgMTIzIi4KLUdURVNUX0FQSV8gc3RyaW5n
IENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoY29uc3QgY2hhciogaWRfbmFtZSk7Ci0KLS8v
IFBvaW50ZWVPZjxQb2ludGVyPjo6dHlwZSBpcyB0aGUgdHlwZSBvZiBhIHZhbHVlIHBvaW50ZWQg
dG8gYnkgYQotLy8gUG9pbnRlciwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHNtYXJ0IHBvaW50ZXIg
b3IgYSByYXcgcG9pbnRlci4gIFRoZQotLy8gZm9sbG93aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gaXMgZm9yIHRoZSBjYXNlIHdoZXJlIFBvaW50ZXIgaXMgYQotLy8gc21hcnQgcG9pbnRlci4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBQb2ludGVyPgotc3RydWN0IFBvaW50ZWVPZiB7Ci0gIC8vIFNt
YXJ0IHBvaW50ZXIgY2xhc3NlcyBkZWZpbmUgdHlwZSBlbGVtZW50X3R5cGUgYXMgdGhlIHR5cGUg
b2YKLSAgLy8gdGhlaXIgcG9pbnRlZXMuCi0gIHR5cGVkZWYgdHlwZW5hbWUgUG9pbnRlcjo6ZWxl
bWVudF90eXBlIHR5cGU7Ci19OwotLy8gVGhpcyBzcGVjaWFsaXphdGlvbiBpcyBmb3IgdGhlIHJh
dyBwb2ludGVyIGNhc2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBQb2ludGVlT2Y8
VCo+IHsgdHlwZWRlZiBUIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8gR2V0UmF3UG9pbnRlcihw
KSByZXR1cm5zIHRoZSByYXcgcG9pbnRlciB1bmRlcmx5aW5nIHAgd2hlbiBwIGlzIGEKLS8vIHNt
YXJ0IHBvaW50ZXIsIG9yIHJldHVybnMgcCBpdHNlbGYgd2hlbiBwIGlzIGFscmVhZHkgYSByYXcg
cG9pbnRlci4KLS8vIFRoZSBmb2xsb3dpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBmb3Ig
dGhlIHNtYXJ0IHBvaW50ZXIgY2FzZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQb2ludGVyPgotaW5s
aW5lIGNvbnN0IHR5cGVuYW1lIFBvaW50ZXI6OmVsZW1lbnRfdHlwZSogR2V0UmF3UG9pbnRlcihj
b25zdCBQb2ludGVyJiBwKSB7Ci0gIHJldHVybiBwLmdldCgpOwotfQotLy8gVGhpcyBvdmVybG9h
ZGVkIHZlcnNpb24gaXMgZm9yIHRoZSByYXcgcG9pbnRlciBjYXNlLgotdGVtcGxhdGUgPHR5cGVu
YW1lIEVsZW1lbnQ+Ci1pbmxpbmUgRWxlbWVudCogR2V0UmF3UG9pbnRlcihFbGVtZW50KiBwKSB7
IHJldHVybiBwOyB9Ci0KLS8vIFRoaXMgY29tcGFyYXRvciBhbGxvd3MgbGlua2VkX3B0ciB0byBi
ZSBzdG9yZWQgaW4gc2V0cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IExpbmtlZFB0
ckxlc3NUaGFuIHsKLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6
OmxpbmtlZF9wdHI8VD4mIGxocywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6
aW50ZXJuYWw6OmxpbmtlZF9wdHI8VD4mIHJocykgY29uc3QgewotICAgIHJldHVybiBsaHMuZ2V0
KCkgPCByaHMuZ2V0KCk7Ci0gIH0KLX07Ci0KLS8vIFN5bWJpYW4gY29tcGlsYXRpb24gY2FuIGJl
IGRvbmUgd2l0aCB3Y2hhcl90IGJlaW5nIGVpdGhlciBhIG5hdGl2ZQotLy8gdHlwZSBvciBhIHR5
cGVkZWYuICBVc2luZyBHb29nbGUgTW9jayB3aXRoIE9wZW5DIHdpdGhvdXQgd2NoYXJfdAotLy8g
c2hvdWxkIHJlcXVpcmUgdGhlIGRlZmluaXRpb24gb2YgX1NUTFBfTk9fV0NIQVJfVC4KLS8vCi0v
LyBNU1ZDIHRyZWF0cyB3Y2hhcl90IGFzIGEgbmF0aXZlIHR5cGUgdXN1YWxseSwgYnV0IHRyZWF0
cyBpdCBhcyB0aGUKLS8vIHNhbWUgYXMgdW5zaWduZWQgc2hvcnQgd2hlbiB0aGUgY29tcGlsZXIg
b3B0aW9uIC9aYzp3Y2hhcl90LSBpcwotLy8gc3BlY2lmaWVkLiAgSXQgZGVmaW5lcyBfTkFUSVZF
X1dDSEFSX1RfREVGSU5FRCBzeW1ib2wgd2hlbiB3Y2hhcl90Ci0vLyBpcyBhIG5hdGl2ZSB0eXBl
LgotI2lmIChHVEVTVF9PU19TWU1CSUFOICYmIGRlZmluZWQoX1NUTFBfTk9fV0NIQVJfVCkpIHx8
IFwKLSAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RF
RklORUQpKQotLy8gd2NoYXJfdCBpcyBhIHR5cGVkZWYuCi0jZWxzZQotIyBkZWZpbmUgR01PQ0tf
V0NIQVJfVF9JU19OQVRJVkVfIDEKLSNlbmRpZgotCi0vLyBzaWduZWQgd2NoYXJfdCBhbmQgdW5z
aWduZWQgd2NoYXJfdCBhcmUgTk9UIGluIHRoZSBDKysgc3RhbmRhcmQuCi0vLyBVc2luZyB0aGVt
IGlzIGEgYmFkIHByYWN0aWNlIGFuZCBub3QgcG9ydGFibGUuICBTbyBET04nVCB1c2UgdGhlbS4K
LS8vCi0vLyBTdGlsbCwgR29vZ2xlIE1vY2sgaXMgZGVzaWduZWQgdG8gd29yayBldmVuIGlmIHRo
ZSB1c2VyIHVzZXMgc2lnbmVkCi0vLyB3Y2hhcl90IG9yIHVuc2lnbmVkIHdjaGFyX3QgKG9idmlv
dXNseSwgYXNzdW1pbmcgdGhlIGNvbXBpbGVyCi0vLyBzdXBwb3J0cyB0aGVtKS4KLS8vCi0vLyBU
byBnY2MsCi0vLyAgIHdjaGFyX3QgPT0gc2lnbmVkIHdjaGFyX3QgIT0gdW5zaWduZWQgd2NoYXJf
dCA9PSB1bnNpZ25lZCBpbnQKLSNpZmRlZiBfX0dOVUNfXwotLy8gc2lnbmVkL3Vuc2lnbmVkIHdj
aGFyX3QgYXJlIHZhbGlkIHR5cGVzLgotIyBkZWZpbmUgR01PQ0tfSEFTX1NJR05FRF9XQ0hBUl9U
XyAxCi0jZW5kaWYKLQotLy8gSW4gd2hhdCBmb2xsb3dzLCB3ZSB1c2UgdGhlIHRlcm0gImtpbmQi
IHRvIGluZGljYXRlIHdoZXRoZXIgYSB0eXBlCi0vLyBpcyBib29sLCBhbiBpbnRlZ2VyIHR5cGUg
KGV4Y2x1ZGluZyBib29sKSwgYSBmbG9hdGluZy1wb2ludCB0eXBlLAotLy8gb3Igbm9uZSBvZiB0
aGVtLiAgVGhpcyBjYXRlZ29yaXphdGlvbiBpcyB1c2VmdWwgZm9yIGRldGVybWluaW5nCi0vLyB3
aGVuIGEgbWF0Y2hlciBhcmd1bWVudCB0eXBlIGNhbiBiZSBzYWZlbHkgY29udmVydGVkIHRvIGFu
b3RoZXIKLS8vIHR5cGUgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIFNhZmVNYXRjaGVyQ2FzdC4K
LWVudW0gVHlwZUtpbmQgewotICBrQm9vbCwga0ludGVnZXIsIGtGbG9hdGluZ1BvaW50LCBrT3Ro
ZXIKLX07Ci0KLS8vIEtpbmRPZjxUPjo6dmFsdWUgaXMgdGhlIGtpbmQgb2YgdHlwZSBULgotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBLaW5kT2YgewotICBlbnVtIHsgdmFsdWUgPSBrT3Ro
ZXIgfTsgIC8vIFRoZSBkZWZhdWx0IGtpbmQuCi19OwotCi0vLyBUaGlzIG1hY3JvIGRlY2xhcmVz
IHRoYXQgdGhlIGtpbmQgb2YgJ3R5cGUnIGlzICdraW5kJy4KLSNkZWZpbmUgR01PQ0tfREVDTEFS
RV9LSU5EXyh0eXBlLCBraW5kKSBcCi0gIHRlbXBsYXRlIDw+IHN0cnVjdCBLaW5kT2Y8dHlwZT4g
eyBlbnVtIHsgdmFsdWUgPSBraW5kIH07IH0KLQotR01PQ0tfREVDTEFSRV9LSU5EXyhib29sLCBr
Qm9vbCk7Ci0KLS8vIEFsbCBzdGFuZGFyZCBpbnRlZ2VyIHR5cGVzLgotR01PQ0tfREVDTEFSRV9L
SU5EXyhjaGFyLCBrSW50ZWdlcik7Ci1HTU9DS19ERUNMQVJFX0tJTkRfKHNpZ25lZCBjaGFyLCBr
SW50ZWdlcik7Ci1HTU9DS19ERUNMQVJFX0tJTkRfKHVuc2lnbmVkIGNoYXIsIGtJbnRlZ2VyKTsK
LUdNT0NLX0RFQ0xBUkVfS0lORF8oc2hvcnQsIGtJbnRlZ2VyKTsgIC8vIE5PTElOVAotR01PQ0tf
REVDTEFSRV9LSU5EXyh1bnNpZ25lZCBzaG9ydCwga0ludGVnZXIpOyAgLy8gTk9MSU5UCi1HTU9D
S19ERUNMQVJFX0tJTkRfKGludCwga0ludGVnZXIpOwotR01PQ0tfREVDTEFSRV9LSU5EXyh1bnNp
Z25lZCBpbnQsIGtJbnRlZ2VyKTsKLUdNT0NLX0RFQ0xBUkVfS0lORF8obG9uZywga0ludGVnZXIp
OyAgLy8gTk9MSU5UCi1HTU9DS19ERUNMQVJFX0tJTkRfKHVuc2lnbmVkIGxvbmcsIGtJbnRlZ2Vy
KTsgIC8vIE5PTElOVAotCi0jaWYgR01PQ0tfV0NIQVJfVF9JU19OQVRJVkVfCi1HTU9DS19ERUNM
QVJFX0tJTkRfKHdjaGFyX3QsIGtJbnRlZ2VyKTsKLSNlbmRpZgotCi0vLyBOb24tc3RhbmRhcmQg
aW50ZWdlciB0eXBlcy4KLUdNT0NLX0RFQ0xBUkVfS0lORF8oSW50NjQsIGtJbnRlZ2VyKTsKLUdN
T0NLX0RFQ0xBUkVfS0lORF8oVUludDY0LCBrSW50ZWdlcik7Ci0KLS8vIEFsbCBzdGFuZGFyZCBm
bG9hdGluZy1wb2ludCB0eXBlcy4KLUdNT0NLX0RFQ0xBUkVfS0lORF8oZmxvYXQsIGtGbG9hdGlu
Z1BvaW50KTsKLUdNT0NLX0RFQ0xBUkVfS0lORF8oZG91YmxlLCBrRmxvYXRpbmdQb2ludCk7Ci1H
TU9DS19ERUNMQVJFX0tJTkRfKGxvbmcgZG91YmxlLCBrRmxvYXRpbmdQb2ludCk7Ci0KLSN1bmRl
ZiBHTU9DS19ERUNMQVJFX0tJTkRfCi0KLS8vIEV2YWx1YXRlcyB0byB0aGUga2luZCBvZiAndHlw
ZScuCi0jZGVmaW5lIEdNT0NLX0tJTkRfT0ZfKHR5cGUpIFwKLSAgc3RhdGljX2Nhc3Q8IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlR5cGVLaW5kPiggXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
S2luZE9mPHR5cGU+Ojp2YWx1ZSkKLQotLy8gRXZhbHVhdGVzIHRvIHRydWUgaWZmIGludGVnZXIg
dHlwZSBUIGlzIHNpZ25lZC4KLSNkZWZpbmUgR01PQ0tfSVNfU0lHTkVEXyhUKSAoc3RhdGljX2Nh
c3Q8VD4oLTEpIDwgMCkKLQotLy8gTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtG
cm9tS2luZCwgRnJvbSwga1RvS2luZCwgVG8+Ojp2YWx1ZQotLy8gaXMgdHJ1ZSBpZmYgYXJpdGht
ZXRpYyB0eXBlIEZyb20gY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvCi0vLyBhcml0aG1l
dGljIHR5cGUgVG8uCi0vLwotLy8gSXQncyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVu
c3VyZSB0aGF0IGJvdGggRnJvbSBhbmQgVG8gYXJlCi0vLyByYXcgKGkuZS4gaGFzIG5vIENWIG1v
ZGlmaWVyLCBpcyBub3QgYSBwb2ludGVyLCBhbmQgaXMgbm90IGEKLS8vIHJlZmVyZW5jZSkgYnVp
bHQtaW4gYXJpdGhtZXRpYyB0eXBlcywga0Zyb21LaW5kIGlzIHRoZSBraW5kIG9mCi0vLyBGcm9t
LCBhbmQga1RvS2luZCBpcyB0aGUga2luZCBvZiBUbzsgdGhlIHZhbHVlIGlzCi0vLyBpbXBsZW1l
bnRhdGlvbi1kZWZpbmVkIHdoZW4gdGhlIGFib3ZlIHByZS1jb25kaXRpb24gaXMgdmlvbGF0ZWQu
Ci10ZW1wbGF0ZSA8VHlwZUtpbmQga0Zyb21LaW5kLCB0eXBlbmFtZSBGcm9tLCBUeXBlS2luZCBr
VG9LaW5kLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZUltcGwgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsKLQotLy8gQ29udmVydGluZyBib29sIHRvIGJv
b2wgaXMgbG9zc2xlc3MuCi10ZW1wbGF0ZSA8Pgotc3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0Nv
bnZlcnRpYmxlSW1wbDxrQm9vbCwgYm9vbCwga0Jvb2wsIGJvb2w+Ci0gICAgOiBwdWJsaWMgdHJ1
ZV90eXBlIHt9OyAgLy8gTk9MSU5UCi0KLS8vIENvbnZlcnRpbmcgYm9vbCB0byBhbnkgaW50ZWdl
ciB0eXBlIGlzIGxvc3NsZXNzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3Ns
ZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrQm9vbCwgYm9vbCwga0ludGVnZXIsIFRvPgot
ICAgIDogcHVibGljIHRydWVfdHlwZSB7fTsgIC8vIE5PTElOVAotCi0vLyBDb252ZXJ0aW5nIGJv
b2wgdG8gYW55IGZsb2F0aW5nLXBvaW50IHR5cGUgaXMgbG9zc2xlc3MuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVG8+Ci1zdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtCb29s
LCBib29sLCBrRmxvYXRpbmdQb2ludCwgVG8+Ci0gICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OyAg
Ly8gTk9MSU5UCi0KLS8vIENvbnZlcnRpbmcgYW4gaW50ZWdlciB0byBib29sIGlzIGxvc3N5Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIEZyb20+Ci1zdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVy
dGlibGVJbXBsPGtJbnRlZ2VyLCBGcm9tLCBrQm9vbCwgYm9vbD4KLSAgICA6IHB1YmxpYyBmYWxz
ZV90eXBlIHt9OyAgLy8gTk9MSU5UCi0KLS8vIENvbnZlcnRpbmcgYW4gaW50ZWdlciB0byBhbm90
aGVyIG5vbi1ib29sIGludGVnZXIgaXMgbG9zc2xlc3MgaWZmCi0vLyB0aGUgdGFyZ2V0IHR5cGUn
cyByYW5nZSBlbmNsb3NlcyB0aGUgc291cmNlIHR5cGUncyByYW5nZS4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0
aWJsZUltcGw8a0ludGVnZXIsIEZyb20sIGtJbnRlZ2VyLCBUbz4KLSAgICA6IHB1YmxpYyBib29s
X2NvbnN0YW50PAotICAgICAgLy8gV2hlbiBjb252ZXJ0aW5nIGZyb20gYSBzbWFsbGVyIHNpemUg
dG8gYSBsYXJnZXIgc2l6ZSwgd2UgYXJlCi0gICAgICAvLyBmaW5lIGFzIGxvbmcgYXMgd2UgYXJl
IG5vdCBjb252ZXJ0aW5nIGZyb20gc2lnbmVkIHRvIHVuc2lnbmVkLgotICAgICAgKChzaXplb2Yo
RnJvbSkgPCBzaXplb2YoVG8pKSAmJgotICAgICAgICghR01PQ0tfSVNfU0lHTkVEXyhGcm9tKSB8
fCBHTU9DS19JU19TSUdORURfKFRvKSkpIHx8Ci0gICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgYmV0
d2VlbiB0aGUgc2FtZSBzaXplLCB0aGUgc2lnbmVkbmVzcyBtdXN0IG1hdGNoLgotICAgICAgKChz
aXplb2YoRnJvbSkgPT0gc2l6ZW9mKFRvKSkgJiYKLSAgICAgICAoR01PQ0tfSVNfU0lHTkVEXyhG
cm9tKSA9PSBHTU9DS19JU19TSUdORURfKFRvKSkpPiB7fTsgIC8vIE5PTElOVAotCi0jdW5kZWYg
R01PQ0tfSVNfU0lHTkVEXwotCi0vLyBDb252ZXJ0aW5nIGFuIGludGVnZXIgdG8gYSBmbG9hdGlu
Zy1wb2ludCB0eXBlIG1heSBiZSBsb3NzeSwgc2luY2UKLS8vIHRoZSBmb3JtYXQgb2YgYSBmbG9h
dGluZy1wb2ludCBudW1iZXIgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252
ZXJ0aWJsZUltcGw8a0ludGVnZXIsIEZyb20sIGtGbG9hdGluZ1BvaW50LCBUbz4KLSAgICA6IHB1
YmxpYyBmYWxzZV90eXBlIHt9OyAgLy8gTk9MSU5UCi0KLS8vIENvbnZlcnRpbmcgYSBmbG9hdGlu
Zy1wb2ludCB0byBib29sIGlzIGxvc3N5LgotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20+Ci1zdHJ1
Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtGbG9hdGluZ1BvaW50LCBGcm9t
LCBrQm9vbCwgYm9vbD4KLSAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OyAgLy8gTk9MSU5UCi0K
LS8vIENvbnZlcnRpbmcgYSBmbG9hdGluZy1wb2ludCB0byBhbiBpbnRlZ2VyIGlzIGxvc3N5Lgot
dGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrRmxvYXRpbmdQb2ludCwgRnJvbSwga0ludGVnZXIsIFRv
PgotICAgIDogcHVibGljIGZhbHNlX3R5cGUge307ICAvLyBOT0xJTlQKLQotLy8gQ29udmVydGlu
ZyBhIGZsb2F0aW5nLXBvaW50IHRvIGFub3RoZXIgZmxvYXRpbmctcG9pbnQgaXMgbG9zc2xlc3MK
LS8vIGlmZiB0aGUgdGFyZ2V0IHR5cGUgaXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSBzb3VyY2Ug
dHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8Ci0gIGtGbG9hdGluZ1BvaW50LCBGcm9tLCBr
RmxvYXRpbmdQb2ludCwgVG8+Ci0gICAgOiBwdWJsaWMgYm9vbF9jb25zdGFudDxzaXplb2YoRnJv
bSkgPD0gc2l6ZW9mKFRvKT4ge307ICAvLyBOT0xJTlQKLQotLy8gTG9zc2xlc3NBcml0aG1ldGlj
Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyB0cnVlIGlmZiBhcml0aG1ldGljCi0vLyB0
eXBlIEZyb20gY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFyaXRobWV0aWMgdHlwZSBU
by4KLS8vCi0vLyBJdCdzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQg
Ym90aCBGcm9tIGFuZCBUbyBhcmUKLS8vIHJhdyAoaS5lLiBoYXMgbm8gQ1YgbW9kaWZpZXIsIGlz
IG5vdCBhIHBvaW50ZXIsIGFuZCBpcyBub3QgYQotLy8gcmVmZXJlbmNlKSBidWlsdC1pbiBhcml0
aG1ldGljIHR5cGVzOyB0aGUgdmFsdWUgaXMKLS8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgd2hl
biB0aGUgYWJvdmUgcHJlLWNvbmRpdGlvbiBpcyB2aW9sYXRlZC4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZQotICAgIDogcHVibGljIExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDwKLSAgR01P
Q0tfS0lORF9PRl8oRnJvbSksIEZyb20sIEdNT0NLX0tJTkRfT0ZfKFRvKSwgVG8+IHt9OyAgLy8g
Tk9MSU5UCi0KLS8vIFRoaXMgaW50ZXJmYWNlIGtub3dzIGhvdyB0byByZXBvcnQgYSBHb29nbGUg
TW9jayBmYWlsdXJlIChlaXRoZXIKLS8vIG5vbi1mYXRhbCBvciBmYXRhbCkuCi1jbGFzcyBGYWls
dXJlUmVwb3J0ZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLy8gVGhlIHR5cGUgb2YgYSBmYWls
dXJlIChlaXRoZXIgbm9uLWZhdGFsIG9yIGZhdGFsKS4KLSAgZW51bSBGYWlsdXJlVHlwZSB7Ci0g
ICAga05vbmZhdGFsLCBrRmF0YWwKLSAgfTsKLQotICB2aXJ0dWFsIH5GYWlsdXJlUmVwb3J0ZXJJ
bnRlcmZhY2UoKSB7fQotCi0gIC8vIFJlcG9ydHMgYSBmYWlsdXJlIHRoYXQgb2NjdXJyZWQgYXQg
dGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uLgotICB2aXJ0dWFsIHZvaWQgUmVwb3J0RmFp
bHVyZShGYWlsdXJlVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0gMDsK
LX07Ci0KLS8vIFJldHVybnMgdGhlIGZhaWx1cmUgcmVwb3J0ZXIgdXNlZCBieSBHb29nbGUgTW9j
ay4KLUdURVNUX0FQSV8gRmFpbHVyZVJlcG9ydGVySW50ZXJmYWNlKiBHZXRGYWlsdXJlUmVwb3J0
ZXIoKTsKLQotLy8gQXNzZXJ0cyB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlOyBhYm9ydHMgdGhlIHBy
b2Nlc3Mgd2l0aCB0aGUgZ2l2ZW4KLS8vIG1lc3NhZ2UgaWYgY29uZGl0aW9uIGlzIGZhbHNlLiAg
V2UgY2Fubm90IHVzZSBMT0coRkFUQUwpIG9yIENIRUNLKCkKLS8vIGFzIEdvb2dsZSBNb2NrIG1p
Z2h0IGJlIHVzZWQgdG8gbW9jayB0aGUgbG9nIHNpbmsgaXRzZWxmLiAgV2UKLS8vIGlubGluZSB0
aGlzIGZ1bmN0aW9uIHRvIHByZXZlbnQgaXQgZnJvbSBzaG93aW5nIHVwIGluIHRoZSBzdGFjawot
Ly8gdHJhY2UuCi1pbmxpbmUgdm9pZCBBc3NlcnQoYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
c2cpIHsKLSAgaWYgKCFjb25kaXRpb24pIHsKLSAgICBHZXRGYWlsdXJlUmVwb3J0ZXIoKS0+UmVw
b3J0RmFpbHVyZShGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2U6OmtGYXRhbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBsaW5lLCBtc2cpOwotICB9Ci19Ci1p
bmxpbmUgdm9pZCBBc3NlcnQoYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lKSB7Ci0gIEFzc2VydChjb25kaXRpb24sIGZpbGUsIGxpbmUsICJBc3NlcnRpb24gZmFpbGVk
LiIpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IGNvbmRpdGlvbiBpcyB0cnVlOyBnZW5lcmF0ZXMg
YSBub24tZmF0YWwgZmFpbHVyZSBpZgotLy8gY29uZGl0aW9uIGlzIGZhbHNlLgotaW5saW5lIHZv
aWQgRXhwZWN0KGJvb2wgY29uZGl0aW9uLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwKLSAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbXNnKSB7Ci0gIGlmICghY29uZGl0
aW9uKSB7Ci0gICAgR2V0RmFpbHVyZVJlcG9ydGVyKCktPlJlcG9ydEZhaWx1cmUoRmFpbHVyZVJl
cG9ydGVySW50ZXJmYWNlOjprTm9uZmF0YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZSwgbGluZSwgbXNnKTsKLSAgfQotfQotaW5saW5lIHZvaWQgRXhwZWN0
KGJvb2wgY29uZGl0aW9uLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewotICBFeHBlY3Qo
Y29uZGl0aW9uLCBmaWxlLCBsaW5lLCAiRXhwZWN0YXRpb24gZmFpbGVkLiIpOwotfQotCi0vLyBT
ZXZlcml0eSBsZXZlbCBvZiBhIGxvZy4KLWVudW0gTG9nU2V2ZXJpdHkgewotICBrSW5mbyA9IDAs
Ci0gIGtXYXJuaW5nID0gMQotfTsKLQotLy8gVmFsaWQgdmFsdWVzIGZvciB0aGUgLS1nbW9ja192
ZXJib3NlIGZsYWcuCi0KLS8vIEFsbCBsb2dzIChpbmZvcm1hdGlvbmFsIGFuZCB3YXJuaW5ncykg
YXJlIHByaW50ZWQuCi1jb25zdCBjaGFyIGtJbmZvVmVyYm9zaXR5W10gPSAiaW5mbyI7Ci0vLyBP
bmx5IHdhcm5pbmdzIGFyZSBwcmludGVkLgotY29uc3QgY2hhciBrV2FybmluZ1ZlcmJvc2l0eVtd
ID0gIndhcm5pbmciOwotLy8gTm8gbG9ncyBhcmUgcHJpbnRlZC4KLWNvbnN0IGNoYXIga0Vycm9y
VmVyYm9zaXR5W10gPSAiZXJyb3IiOwotCi0vLyBSZXR1cm5zIHRydWUgaWZmIGEgbG9nIHdpdGgg
dGhlIGdpdmVuIHNldmVyaXR5IGlzIHZpc2libGUgYWNjb3JkaW5nCi0vLyB0byB0aGUgLS1nbW9j
a192ZXJib3NlIGZsYWcuCi1HVEVTVF9BUElfIGJvb2wgTG9nSXNWaXNpYmxlKExvZ1NldmVyaXR5
IHNldmVyaXR5KTsKLQotLy8gUHJpbnRzIHRoZSBnaXZlbiBtZXNzYWdlIHRvIHN0ZG91dCBpZmYg
J3NldmVyaXR5JyA+PSB0aGUgbGV2ZWwKLS8vIHNwZWNpZmllZCBieSB0aGUgLS1nbW9ja192ZXJi
b3NlIGZsYWcuICBJZiBzdGFja19mcmFtZXNfdG9fc2tpcCA+PQotLy8gMCwgYWxzbyBwcmludHMg
dGhlIHN0YWNrIHRyYWNlIGV4Y2x1ZGluZyB0aGUgdG9wCi0vLyBzdGFja19mcmFtZXNfdG9fc2tp
cCBmcmFtZXMuICBJbiBvcHQgbW9kZSwgYW55IHBvc2l0aXZlCi0vLyBzdGFja19mcmFtZXNfdG9f
c2tpcCBpcyB0cmVhdGVkIGFzIDAsIHNpbmNlIHdlIGRvbid0IGtub3cgd2hpY2gKLS8vIGZ1bmN0
aW9uIGNhbGxzIHdpbGwgYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIG5lZWQgdG8gYmUK
LS8vIGNvbnNlcnZhdGl2ZS4KLUdURVNUX0FQSV8gdm9pZCBMb2coTG9nU2V2ZXJpdHkgc2V2ZXJp
dHksIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBpbnQg
c3RhY2tfZnJhbWVzX3RvX3NraXApOwotCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogZ3JvdXAg
YWxsIHR5cGUgdXRpbGl0aWVzIHRvZ2V0aGVyLgotCi0vLyBUeXBlIHRyYWl0cy4KLQotLy8gaXNf
cmVmZXJlbmNlPFQ+Ojp2YWx1ZSBpcyBub24temVybyBpZmYgVCBpcyBhIHJlZmVyZW5jZSB0eXBl
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19yZWZlcmVuY2UgOiBwdWJsaWMgZmFs
c2VfdHlwZSB7fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfcmVmZXJlbmNlPFQm
PiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0KLS8vIHR5cGVfZXF1YWxzPFQxLCBUMj46OnZhbHVl
IGlzIG5vbi16ZXJvIGlmZiBUMSBhbmQgVDIgYXJlIHRoZSBzYW1lIHR5cGUuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgdHlwZV9lcXVhbHMgOiBwdWJsaWMgZmFs
c2VfdHlwZSB7fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgdHlwZV9lcXVhbHM8VCwg
VD4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotCi0vLyByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBl
IHJlbW92ZXMgdGhlIHJlZmVyZW5jZSBmcm9tIHR5cGUgVCwgaWYgYW55LgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlIHsgdHlwZWRlZiBUIHR5cGU7IH07ICAv
LyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZTxU
Jj4geyB0eXBlZGVmIFQgdHlwZTsgfTsgLy8gTk9MSU5UCi0KLS8vIERlY2F5QXJyYXk8VD46OnR5
cGUgdHVybnMgYW4gYXJyYXkgdHlwZSBVW05dIHRvIGNvbnN0IFUqIGFuZCBwcmVzZXJ2ZXMKLS8v
IG90aGVyIHR5cGVzLiAgVXNlZnVsIGZvciBzYXZpbmcgYSBjb3B5IG9mIGEgZnVuY3Rpb24gYXJn
dW1lbnQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IERlY2F5QXJyYXkgeyB0eXBlZGVm
IFQgdHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPiBz
dHJ1Y3QgRGVjYXlBcnJheTxUW05dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLX07Ci0v
LyBTb21ldGltZXMgcGVvcGxlIHVzZSBhcnJheXMgd2hvc2Ugc2l6ZSBpcyBub3QgYXZhaWxhYmxl
IGF0IHRoZSB1c2Ugc2l0ZQotLy8gKGUuZy4gZXh0ZXJuIGNvbnN0IGNoYXIga05hbWVQcmVmaXhb
XSkuICBUaGlzIHNwZWNpYWxpemF0aW9uIGNvdmVycyB0aGF0Ci0vLyBjYXNlLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWNheUFycmF5PFRbXT4gewotICB0eXBlZGVmIGNvbnN0IFQq
IHR5cGU7Ci19OwotCi0vLyBEaXNhYmxlIE1TVkMgd2FybmluZ3MgZm9yIGluZmluaXRlIHJlY3Vy
c2lvbiwgc2luY2UgaW4gdGhpcyBjYXNlIHRoZQotLy8gdGhlIHJlY3Vyc2lvbiBpcyB1bnJlYWNo
YWJsZS4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEg
d2FybmluZyhkaXNhYmxlOjQ3MTcpCi0jZW5kaWYKLQotLy8gSW52YWxpZDxUPigpIGlzIHVzYWJs
ZSBhcyBhbiBleHByZXNzaW9uIG9mIHR5cGUgVCwgYnV0IHdpbGwgdGVybWluYXRlCi0vLyB0aGUg
cHJvZ3JhbSB3aXRoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGlmIGFjdHVhbGx5IHJ1bi4gIFRoaXMg
aXMgdXNlZnVsCi0vLyB3aGVuIGEgdmFsdWUgb2YgdHlwZSBUIGlzIG5lZWRlZCBmb3IgY29tcGls
YXRpb24sIGJ1dCB0aGUgc3RhdGVtZW50Ci0vLyB3aWxsIG5vdCByZWFsbHkgYmUgZXhlY3V0ZWQg
KG9yIHdlIGRvbid0IGNhcmUgaWYgdGhlIHN0YXRlbWVudAotLy8gY3Jhc2hlcykuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIEludmFsaWQoKSB7Ci0gIEFzc2VydChmYWxzZSwgIiIs
IC0xLCAiSW50ZXJuYWwgZXJyb3I6IGF0dGVtcHQgdG8gcmV0dXJuIGludmFsaWQgdmFsdWUiKTsK
LSAgLy8gVGhpcyBzdGF0ZW1lbnQgaXMgdW5yZWFjaGFibGUsIGFuZCB3b3VsZCBuZXZlciB0ZXJt
aW5hdGUgZXZlbiBpZiBpdAotICAvLyBjb3VsZCBiZSByZWFjaGVkLiBJdCBpcyBwcm92aWRlZCBv
bmx5IHRvIHBsYWNhdGUgY29tcGlsZXIgd2FybmluZ3MKLSAgLy8gYWJvdXQgbWlzc2luZyByZXR1
cm4gc3RhdGVtZW50cy4KLSAgcmV0dXJuIEludmFsaWQ8VD4oKTsKLX0KLQotI2lmZGVmIF9NU0Nf
VkVSCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLyBHaXZlbiBhIHJhdyB0eXBl
IChpLmUuIGhhdmluZyBubyB0b3AtbGV2ZWwgcmVmZXJlbmNlIG9yIGNvbnN0Ci0vLyBtb2RpZmll
cikgUmF3Q29udGFpbmVyIHRoYXQncyBlaXRoZXIgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciBvciBh
Ci0vLyBuYXRpdmUgYXJyYXksIGNsYXNzIFN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPiBo
YXMgdGhlCi0vLyBmb2xsb3dpbmcgbWVtYmVyczoKLS8vCi0vLyAgIC0gdHlwZSBpcyBhIHR5cGUg
dGhhdCBwcm92aWRlcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHZpZXcgdG8KLS8vICAgICAoaS5l
LiBpbXBsZW1lbnRzIHRoZSBTVEwgY29udGFpbmVyIGNvbmNlcHQgZm9yKSBSYXdDb250YWluZXI7
Ci0vLyAgIC0gY29uc3RfcmVmZXJlbmNlIGlzIGEgdHlwZSB0aGF0IHByb3ZpZGVzIGEgcmVmZXJl
bmNlIHRvIGEgY29uc3QKLS8vICAgICBSYXdDb250YWluZXI7Ci0vLyAgIC0gQ29uc3RSZWZlcmVu
Y2UocmF3X2NvbnRhaW5lcikgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0byBhbiBTVEwtc3R5
bGUKLS8vICAgICBjb250YWluZXIgdmlldyB0byByYXdfY29udGFpbmVyLCB3aGljaCBpcyBhIFJh
d0NvbnRhaW5lci4KLS8vICAgLSBDb3B5KHJhd19jb250YWluZXIpIHJldHVybnMgYW4gU1RMLXN0
eWxlIGNvbnRhaW5lciB2aWV3IG9mIGEKLS8vICAgICBjb3B5IG9mIHJhd19jb250YWluZXIsIHdo
aWNoIGlzIGEgUmF3Q29udGFpbmVyLgotLy8KLS8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVz
ZWQgd2hlbiBSYXdDb250YWluZXIgaXRzZWxmIGlzIGFscmVhZHkgYW4KLS8vIFNUTC1zdHlsZSBj
b250YWluZXIuCi10ZW1wbGF0ZSA8Y2xhc3MgUmF3Q29udGFpbmVyPgotY2xhc3MgU3RsQ29udGFp
bmVyVmlldyB7Ci0gcHVibGljOgotICB0eXBlZGVmIFJhd0NvbnRhaW5lciB0eXBlOwotICB0eXBl
ZGVmIGNvbnN0IHR5cGUmIGNvbnN0X3JlZmVyZW5jZTsKLQotICBzdGF0aWMgY29uc3RfcmVmZXJl
bmNlIENvbnN0UmVmZXJlbmNlKGNvbnN0IFJhd0NvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0gICAg
Ly8gRW5zdXJlcyB0aGF0IFJhd0NvbnRhaW5lciBpcyBub3QgYSBjb25zdCB0eXBlLgotICAgIHRl
c3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxSYXdDb250YWluZXIsCi0gICAgICAgIEdURVNUX1JF
TU9WRV9DT05TVF8oUmF3Q29udGFpbmVyKT4oKTsKLSAgICByZXR1cm4gY29udGFpbmVyOwotICB9
Ci0gIHN0YXRpYyB0eXBlIENvcHkoY29uc3QgUmF3Q29udGFpbmVyJiBjb250YWluZXIpIHsgcmV0
dXJuIGNvbnRhaW5lcjsgfQotfTsKLQotLy8gVGhpcyBzcGVjaWFsaXphdGlvbiBpcyB1c2VkIHdo
ZW4gUmF3Q29udGFpbmVyIGlzIGEgbmF0aXZlIGFycmF5IHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRWxlbWVudCwgc2l6ZV90IE4+Ci1jbGFzcyBTdGxDb250YWluZXJWaWV3PEVsZW1lbnRbTl0+
IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX0NPTlNUXyhFbGVtZW50KSBSYXdF
bGVtZW50OwotICB0eXBlZGVmIGludGVybmFsOjpOYXRpdmVBcnJheTxSYXdFbGVtZW50PiB0eXBl
OwotICAvLyBOYXRpdmVBcnJheTxUPiBjYW4gcmVwcmVzZW50IGEgbmF0aXZlIGFycmF5IGVpdGhl
ciBieSB2YWx1ZSBvciBieQotICAvLyByZWZlcmVuY2UgKHNlbGVjdGVkIGJ5IGEgY29uc3RydWN0
b3IgYXJndW1lbnQpLCBzbyAnY29uc3QgdHlwZScKLSAgLy8gY2FuIGJlIHVzZWQgdG8gcmVmZXJl
bmNlIGEgY29uc3QgbmF0aXZlIGFycmF5LiAgV2UgY2Fubm90Ci0gIC8vICd0eXBlZGVmIGNvbnN0
IHR5cGUmIGNvbnN0X3JlZmVyZW5jZScgaGVyZSwgYXMgdGhhdCB3b3VsZCBtZWFuCi0gIC8vIENv
bnN0UmVmZXJlbmNlKCkgaGFzIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byBhIGxvY2FsIHZhcmlh
YmxlLgotICB0eXBlZGVmIGNvbnN0IHR5cGUgY29uc3RfcmVmZXJlbmNlOwotCi0gIHN0YXRpYyBj
b25zdF9yZWZlcmVuY2UgQ29uc3RSZWZlcmVuY2UoY29uc3QgRWxlbWVudCAoJmFycmF5KVtOXSkg
ewotICAgIC8vIEVuc3VyZXMgdGhhdCBFbGVtZW50IGlzIG5vdCBhIGNvbnN0IHR5cGUuCi0gICAg
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPEVsZW1lbnQsIFJhd0VsZW1lbnQ+KCk7Ci0jaWYg
R1RFU1RfT1NfU1lNQklBTgotICAgIC8vIFRoZSBOb2tpYSBTeW1iaWFuIGNvbXBpbGVyIGNvbmZ1
c2VzIGl0c2VsZiBpbiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uCi0gICAgLy8gZm9yIHRoaXMgY2Fs
bCB3aXRob3V0IHRoZSBjYXN0IHRvIEVsZW1lbnQqOgotICAgIC8vIGZ1bmN0aW9uIGNhbGwgJ1t0
ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk8Y2hhciAqPl0uTmF0aXZlQXJyYXkoCi0gICAg
Ly8gICAgIHtsdmFsfSBjb25zdCBjaGFyICpbNF0sIGxvbmcsIHRlc3Rpbmc6OmludGVybmFsOjpS
ZWxhdGlvblRvU291cmNlKScKLSAgICAvLyAgICAgZG9lcyBub3QgbWF0Y2gKLSAgICAvLyAndGVz
dGluZzo6aW50ZXJuYWw6Ok5hdGl2ZUFycmF5PGNoYXIgKj46Ok5hdGl2ZUFycmF5KAotICAgIC8v
ICAgICBjaGFyICpjb25zdCAqLCB1bnNpZ25lZCBpbnQsIHRlc3Rpbmc6OmludGVybmFsOjpSZWxh
dGlvblRvU291cmNlKScKLSAgICAvLyAoaW5zdGFudGlhdGluZzogJ3Rlc3Rpbmc6OmludGVybmFs
OjpDb250YWluc01hdGNoZXJJbXBsCi0gICAgLy8gICAgIDxjb25zdCBjaGFyICogKCYpWzRdPjo6
TWF0Y2hlcyhjb25zdCBjaGFyICogKCYpWzRdKSBjb25zdCcpCi0gICAgLy8gKGluc3RhbnRpYXRp
bmc6ICd0ZXN0aW5nOjppbnRlcm5hbDo6U3RsQ29udGFpbmVyVmlldzxjaGFyICpbNF0+OjoKLSAg
ICAvLyAgICAgQ29uc3RSZWZlcmVuY2UoY29uc3QgY2hhciAqICgmKVs0XSknKQotICAgIC8vIChh
bmQgdGhvdWdoIHRoZSBOIHBhcmFtZXRlciB0eXBlIGlzIG1pc21hdGNoZWQgaW4gdGhlIGFib3Zl
IGV4cGxpY2l0Ci0gICAgLy8gY29udmVyc2lvbiBvZiBpdCBkb2Vzbid0IGhlbHAgLSBvbmx5IHRo
ZSBjb252ZXJzaW9uIG9mIHRoZSBhcnJheSkuCi0gICAgcmV0dXJuIHR5cGUoY29uc3RfY2FzdDxF
bGVtZW50Kj4oJmFycmF5WzBdKSwgTiwKLSAgICAgICAgICAgICAgICBSZWxhdGlvblRvU291cmNl
UmVmZXJlbmNlKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gdHlwZShhcnJheSwgTiwgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgotICB9Ci0g
IHN0YXRpYyB0eXBlIENvcHkoY29uc3QgRWxlbWVudCAoJmFycmF5KVtOXSkgewotI2lmIEdURVNU
X09TX1NZTUJJQU4KLSAgICByZXR1cm4gdHlwZShjb25zdF9jYXN0PEVsZW1lbnQqPigmYXJyYXlb
MF0pLCBOLCBSZWxhdGlvblRvU291cmNlQ29weSgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIHR5cGUo
YXJyYXksIE4sIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19T
WU1CSUFOCi0gIH0KLX07Ci0KLS8vIFRoaXMgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCB3aGVuIFJh
d0NvbnRhaW5lciBpcyBhIG5hdGl2ZSBhcnJheQotLy8gcmVwcmVzZW50ZWQgYXMgYSAocG9pbnRl
ciwgc2l6ZSkgdHVwbGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFBvaW50ZXIsIHR5cGVu
YW1lIFNpemU+Ci1jbGFzcyBTdGxDb250YWluZXJWaWV3PCA6OnRlc3Rpbmc6OnR1cGxlPEVsZW1l
bnRQb2ludGVyLCBTaXplPiA+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX0NP
TlNUXygKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpQb2ludGVlT2Y8RWxlbWVudFBvaW50ZXI+
Ojp0eXBlKSBSYXdFbGVtZW50OwotICB0eXBlZGVmIGludGVybmFsOjpOYXRpdmVBcnJheTxSYXdF
bGVtZW50PiB0eXBlOwotICB0eXBlZGVmIGNvbnN0IHR5cGUgY29uc3RfcmVmZXJlbmNlOwotCi0g
IHN0YXRpYyBjb25zdF9yZWZlcmVuY2UgQ29uc3RSZWZlcmVuY2UoCi0gICAgICBjb25zdCA6OnRl
c3Rpbmc6OnR1cGxlPEVsZW1lbnRQb2ludGVyLCBTaXplPiYgYXJyYXkpIHsKLSAgICByZXR1cm4g
dHlwZShnZXQ8MD4oYXJyYXkpLCBnZXQ8MT4oYXJyYXkpLCBSZWxhdGlvblRvU291cmNlUmVmZXJl
bmNlKCkpOwotICB9Ci0gIHN0YXRpYyB0eXBlIENvcHkoY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxF
bGVtZW50UG9pbnRlciwgU2l6ZT4mIGFycmF5KSB7Ci0gICAgcmV0dXJuIHR5cGUoZ2V0PDA+KGFy
cmF5KSwgZ2V0PDE+KGFycmF5KSwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7Ci0gIH0KLX07Ci0K
LS8vIFRoZSBmb2xsb3dpbmcgc3BlY2lhbGl6YXRpb24gcHJldmVudHMgdGhlIHVzZXIgZnJvbSBp
bnN0YW50aWF0aW5nCi0vLyBTdGxDb250YWluZXIgd2l0aCBhIHJlZmVyZW5jZSB0eXBlLgotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFN0bENvbnRhaW5lclZpZXc8VCY+OwotCi0vLyBBIHR5
cGUgdHJhbnNmb3JtIHRvIHJlbW92ZSBjb25zdG5lc3MgZnJvbSB0aGUgZmlyc3QgcGFydCBvZiBh
IHBhaXIuCi0vLyBQYWlycyBsaWtlIHRoYXQgYXJlIHVzZWQgYXMgdGhlIHZhbHVlX3R5cGUgb2Yg
YXNzb2NpYXRpdmUgY29udGFpbmVycywKLS8vIGFuZCB0aGlzIHRyYW5zZm9ybSBwcm9kdWNlcyBh
IHNpbWlsYXIgYnV0IGFzc2lnbmFibGUgcGFpci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Ry
dWN0IFJlbW92ZUNvbnN0RnJvbUtleSB7Ci0gIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotLy8gUGFy
dGlhbGx5IHNwZWNpYWxpemVkIHRvIHJlbW92ZSBjb25zdG5lc3MgZnJvbSBzdGQ6OnBhaXI8Y29u
c3QgSywgVj4uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXN0cnVjdCBSZW1v
dmVDb25zdEZyb21LZXk8c3RkOjpwYWlyPGNvbnN0IEssIFY+ID4gewotICB0eXBlZGVmIHN0ZDo6
cGFpcjxLLCBWPiB0eXBlOwotfTsKLQotLy8gTWFwcGluZyBmcm9tIGJvb2xlYW5zIHRvIHR5cGVz
LiBTaW1pbGFyIHRvIGJvb3N0Ojpib29sXzxrVmFsdWU+IGFuZAotLy8gc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBrVmFsdWU+LgotdGVtcGxhdGUgPGJvb2wga1ZhbHVlPgotc3RydWN0IEJv
b2xlYW5Db25zdGFudCB7fTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxf
R01PQ0tfSU5URVJOQUxfVVRJTFNfSF8KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVk
ZS9nbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2Nr
L2ludGVybmFsL2dtb2NrLXBvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNm
NGE2ODAyZThlNjYwZDM2YWE4OWIxMmRjMjgxMzhkMjBmNjgwYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2lu
dGVybmFsL2dtb2NrLXBvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZh
ZGltYkBnb29nbGUuY29tIChWYWRpbSBCZXJtYW4pCi0vLwotLy8gTG93LWxldmVsIHR5cGVzIGFu
ZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIE1vY2sgdG8gdmFyaW91cwotLy8gcGxhdGZv
cm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1ib2xzIGRlZmluZWQgaW4gYW4K
LS8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3Rp
Y2UuICBDb2RlCi0vLyBvdXRzaWRlIEdvb2dsZSBNb2NrIE1VU1QgTk9UIFVTRSBUSEVNIERJUkVD
VExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKLS8vIGVuZCB3aXRoIF8gYXJlIHBhcnQgb2YgR29vZ2xl
IE1vY2sncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQotLy8gY29kZSBvdXRzaWRlIEdv
b2dsZSBNb2NrLgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01PQ0tf
UE9SVF9IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX1BPUlRf
SF8KLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUg
PGlvc3RyZWFtPgotCi0vLyBNb3N0IG9mIHRoZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBwb3J0aW5n
IEdvb2dsZSBNb2NrIGFyZSBhbHNvCi0vLyByZXF1aXJlZCBmb3IgR29vZ2xlIFRlc3QgYW5kIGFy
ZSBkZWZpbmVkIGluIGd0ZXN0LXBvcnQuaC4KLS8vCi0vLyBOb3RlIHRvIG1haW50YWluZXJzOiB0
byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiwgcHJlZmVyIGFkZGluZwotLy8gcG9ydGFiaWxpdHkg
dXRpbGl0aWVzIHRvIEdvb2dsZSBUZXN0J3MgZ3Rlc3QtcG9ydC5oIGluc3RlYWQgb2YKLS8vIGhl
cmUsIGFzIEdvb2dsZSBNb2NrIGRlcGVuZHMgb24gR29vZ2xlIFRlc3QuICBPbmx5IGFkZCBhIHV0
aWxpdHkKLS8vIGhlcmUgaWYgaXQncyB0cnVseSBzcGVjaWZpYyB0byBHb29nbGUgTW9jay4KLSNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2N1c3Rv
bS9nbW9jay1wb3J0LmgiCi0KLS8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGV2
ZXJ5d2hlcmUsIHdlIG1ha2UgaXQKLS8vIGdtb2NrLXBvcnQuaCdzIHJlc3BvbnNpYmlsaXR5IHRv
ICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0cjEvdHVwbGUuICBnbW9jay1w
b3J0LmggZG9lcyB0aGlzIHZpYSBndGVzdC1wb3J0LmgsIHdoaWNoIGlzCi0vLyBndWFyYW50ZWVk
IHRvIHB1bGwgaW4gdGhlIHR1cGxlIGhlYWRlci4KLQotLy8gRm9yIE1TIFZpc3VhbCBDKyssIGNo
ZWNrIHRoZSBjb21waWxlciB2ZXJzaW9uLiBBdCBsZWFzdCBWUyAyMDAzIGlzCi0vLyByZXF1aXJl
ZCB0byBjb21waWxlIEdvb2dsZSBNb2NrLgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0Nf
VkVSIDwgMTMxMAotIyBlcnJvciAiQXQgbGVhc3QgVmlzdWFsIEMrKyAyMDAzICg3LjEpIGlzIHJl
cXVpcmVkIHRvIGNvbXBpbGUgR29vZ2xlIE1vY2suIgotI2VuZGlmCi0KLS8vIE1hY3JvIGZvciBy
ZWZlcmVuY2luZyBmbGFncy4gIFRoaXMgaXMgcHVibGljIGFzIHdlIHdhbnQgdGhlIHVzZXIgdG8K
LS8vIHVzZSB0aGlzIHN5bnRheCB0byByZWZlcmVuY2UgR29vZ2xlIE1vY2sgZmxhZ3MuCi0jZGVm
aW5lIEdNT0NLX0ZMQUcobmFtZSkgRkxBR1NfZ21vY2tfIyNuYW1lCi0KLSNpZiAhZGVmaW5lZChH
TU9DS19ERUNMQVJFX2Jvb2xfKQotCi0vLyBNYWNyb3MgZm9yIGRlY2xhcmluZyBmbGFncy4KLSNk
ZWZpbmUgR01PQ0tfREVDTEFSRV9ib29sXyhuYW1lKSBleHRlcm4gR1RFU1RfQVBJXyBib29sIEdN
T0NLX0ZMQUcobmFtZSkKLSNkZWZpbmUgR01PQ0tfREVDTEFSRV9pbnQzMl8obmFtZSkgXAotICAg
IGV4dGVybiBHVEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkludDMyIEdNT0NLX0ZMQUco
bmFtZSkKLSNkZWZpbmUgR01PQ0tfREVDTEFSRV9zdHJpbmdfKG5hbWUpIFwKLSAgICBleHRlcm4g
R1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEdNT0NLX0ZMQUcobmFtZSkKLQotLy8gTWFjcm9zIGZv
ciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUgR01PQ0tfREVGSU5FX2Jvb2xfKG5hbWUsIGRlZmF1
bHRfdmFsLCBkb2MpIFwKLSAgICBHVEVTVF9BUElfIGJvb2wgR01PQ0tfRkxBRyhuYW1lKSA9IChk
ZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR01PQ0tfREVGSU5FX2ludDMyXyhuYW1lLCBkZWZhdWx0X3Zh
bCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiBHTU9D
S19GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBHTU9DS19ERUZJTkVfc3RyaW5n
XyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5n
IEdNT0NLX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0KLSNlbmRpZiAgLy8gIWRlZmluZWQo
R01PQ0tfREVDTEFSRV9ib29sXykKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0lO
VEVSTkFMX0dNT0NLX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21ha2UvTWFrZWZp
bGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9tYWtlL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3YzEzZTA1ZmE5NjFkZDNhMzdlZTA1ZGVmMTJkZTA4Y2UwZTg2YTg4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21ha2UvTWFr
ZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotIyBBIHNhbXBsZSBNYWtlZmls
ZSBmb3IgYnVpbGRpbmcgYm90aCBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QgYW5kCi0jIHVz
aW5nIHRoZW0gaW4gdXNlciB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBzZWxmLWNvbnRhaW5lZCwgc28g
eW91IGRvbid0Ci0jIG5lZWQgdG8gdXNlIHRoZSBNYWtlZmlsZSBpbiBHb29nbGUgVGVzdCdzIHNv
dXJjZSB0cmVlLiAgUGxlYXNlIHR3ZWFrCi0jIGl0IHRvIHN1aXQgeW91ciBlbnZpcm9ubWVudCBh
bmQgcHJvamVjdC4gIFlvdSBtYXkgd2FudCB0byBtb3ZlIGl0IHRvCi0jIHlvdXIgcHJvamVjdCdz
IHJvb3QgZGlyZWN0b3J5LgotIwotIyBTWU5PUFNJUzoKLSMKLSMgICBtYWtlIFthbGxdICAtIG1h
a2VzIGV2ZXJ5dGhpbmcuCi0jICAgbWFrZSBUQVJHRVQgLSBtYWtlcyB0aGUgZ2l2ZW4gdGFyZ2V0
LgotIyAgIG1ha2UgY2xlYW4gIC0gcmVtb3ZlcyBhbGwgZmlsZXMgZ2VuZXJhdGVkIGJ5IG1ha2Uu
Ci0KLSMgUGxlYXNlIHR3ZWFrIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgZGVmaW5pdGlvbnMgYXMg
bmVlZGVkIGJ5IHlvdXIKLSMgcHJvamVjdCwgZXhjZXB0IEdNT0NLX0hFQURFUlMgYW5kIEdURVNU
X0hFQURFUlMsIHdoaWNoIHlvdSBjYW4gdXNlCi0jIGluIHlvdXIgb3duIHRhcmdldHMgYnV0IHNo
b3VsZG4ndCBtb2RpZnkuCi0KLSMgUG9pbnRzIHRvIHRoZSByb290IG9mIEdvb2dsZSBUZXN0LCBy
ZWxhdGl2ZSB0byB3aGVyZSB0aGlzIGZpbGUgaXMuCi0jIFJlbWVtYmVyIHRvIHR3ZWFrIHRoaXMg
aWYgeW91IG1vdmUgdGhpcyBmaWxlLCBvciBpZiB5b3Ugd2FudCB0byB1c2UKLSMgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IGF0IGEgZGlmZmVyZW50IGxvY2F0aW9uLgotR1RFU1RfRElSID0gLi4vLi4v
Z29vZ2xldGVzdAotCi0jIFBvaW50cyB0byB0aGUgcm9vdCBvZiBHb29nbGUgTW9jaywgcmVsYXRp
dmUgdG8gd2hlcmUgdGhpcyBmaWxlIGlzLgotIyBSZW1lbWJlciB0byB0d2VhayB0aGlzIGlmIHlv
dSBtb3ZlIHRoaXMgZmlsZS4KLUdNT0NLX0RJUiA9IC4uCi0KLSMgV2hlcmUgdG8gZmluZCB1c2Vy
IGNvZGUuCi1VU0VSX0RJUiA9IC4uL3Rlc3QKLQotIyBGbGFncyBwYXNzZWQgdG8gdGhlIHByZXBy
b2Nlc3Nvci4KLSMgU2V0IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGhlYWRlciBkaXJl
Y3RvcmllcyBhcyBzeXN0ZW0KLSMgZGlyZWN0b3JpZXMsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIg
ZG9lc24ndCBnZW5lcmF0ZSB3YXJuaW5ncyBpbgotIyB0aGVzZSBoZWFkZXJzLgotQ1BQRkxBR1Mg
Kz0gLWlzeXN0ZW0gJChHVEVTVF9ESVIpL2luY2x1ZGUgLWlzeXN0ZW0gJChHTU9DS19ESVIpL2lu
Y2x1ZGUKLQotIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KLUNYWEZMQUdTICs9
IC1nIC1XYWxsIC1XZXh0cmEgLXB0aHJlYWQKLQotIyBBbGwgdGVzdHMgcHJvZHVjZWQgYnkgdGhp
cyBNYWtlZmlsZS4gIFJlbWVtYmVyIHRvIGFkZCBuZXcgdGVzdHMgeW91Ci0jIGNyZWF0ZWQgdG8g
dGhlIGxpc3QuCi1URVNUUyA9IGdtb2NrX3Rlc3QKLQotIyBBbGwgR29vZ2xlIFRlc3QgaGVhZGVy
cy4gIFVzdWFsbHkgeW91IHNob3VsZG4ndCBjaGFuZ2UgdGhpcwotIyBkZWZpbml0aW9uLgotR1RF
U1RfSEVBREVSUyA9ICQoR1RFU1RfRElSKS9pbmNsdWRlL2d0ZXN0LyouaCBcCi0gICAgICAgICAg
ICAgICAgJChHVEVTVF9ESVIpL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvKi5oCi0KLSMgQWxsIEdv
b2dsZSBNb2NrIGhlYWRlcnMuIE5vdGUgdGhhdCBhbGwgR29vZ2xlIFRlc3QgaGVhZGVycyBhcmUK
LSMgaW5jbHVkZWQgaGVyZSB0b28sIGFzIHRoZXkgYXJlICNpbmNsdWRlZCBieSBHb29nbGUgTW9j
ayBoZWFkZXJzLgotIyBVc3VhbGx5IHlvdSBzaG91bGRuJ3QgY2hhbmdlIHRoaXMgZGVmaW5pdGlv
bi4JCi1HTU9DS19IRUFERVJTID0gJChHTU9DS19ESVIpL2luY2x1ZGUvZ21vY2svKi5oIFwKLSAg
ICAgICAgICAgICAgICAkKEdNT0NLX0RJUikvaW5jbHVkZS9nbW9jay9pbnRlcm5hbC8qLmggXAot
ICAgICAgICAgICAgICAgICQoR1RFU1RfSEVBREVSUykKLQotIyBIb3VzZS1rZWVwaW5nIGJ1aWxk
IHRhcmdldHMuCi0KLWFsbCA6ICQoVEVTVFMpCi0KLWNsZWFuIDoKLQlybSAtZiAkKFRFU1RTKSBn
bW9jay5hIGdtb2NrX21haW4uYSAqLm8KLQotIyBCdWlsZHMgZ21vY2suYSBhbmQgZ21vY2tfbWFp
bi5hLiAgVGhlc2UgbGlicmFyaWVzIGNvbnRhaW4gYm90aAotIyBHb29nbGUgTW9jayBhbmQgR29v
Z2xlIFRlc3QuICBBIHRlc3Qgc2hvdWxkIGxpbmsgd2l0aCBlaXRoZXIgZ21vY2suYQotIyBvciBn
bW9ja19tYWluLmEsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGRlZmluZXMgaXRzIG93biBtYWlu
KCkKLSMgZnVuY3Rpb24uICBJdCdzIGZpbmUgaWYgeW91ciB0ZXN0IG9ubHkgdXNlcyBmZWF0dXJl
cyBmcm9tIEdvb2dsZQotIyBUZXN0IChhbmQgbm90IEdvb2dsZSBNb2NrKS4KLQotIyBVc3VhbGx5
IHlvdSBzaG91bGRuJ3QgdHdlYWsgc3VjaCBpbnRlcm5hbCB2YXJpYWJsZXMsIGluZGljYXRlZCBi
eSBhCi0jIHRyYWlsaW5nIF8uCi1HVEVTVF9TUkNTXyA9ICQoR1RFU1RfRElSKS9zcmMvKi5jYyAk
KEdURVNUX0RJUikvc3JjLyouaCAkKEdURVNUX0hFQURFUlMpCi1HTU9DS19TUkNTXyA9ICQoR01P
Q0tfRElSKS9zcmMvKi5jYyAkKEdNT0NLX0hFQURFUlMpCi0KLSMgRm9yIHNpbXBsaWNpdHkgYW5k
IHRvIGF2b2lkIGRlcGVuZGluZyBvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mCi0jIEdvb2ds
ZSBNb2NrIGFuZCBHb29nbGUgVGVzdCwgdGhlIGRlcGVuZGVuY2llcyBzcGVjaWZpZWQgYmVsb3cg
YXJlCi0jIGNvbnNlcnZhdGl2ZSBhbmQgbm90IG9wdGltaXplZC4gIFRoaXMgaXMgZmluZSBhcyBH
b29nbGUgTW9jayBhbmQKLSMgR29vZ2xlIFRlc3QgY29tcGlsZSBmYXN0IGFuZCBmb3Igb3JkaW5h
cnkgdXNlcnMgdGhlaXIgc291cmNlIHJhcmVseQotIyBjaGFuZ2VzLgotZ3Rlc3QtYWxsLm8gOiAk
KEdURVNUX1NSQ1NfKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAtSSQoR1RFU1RfRElSKSAtSSQoR01P
Q0tfRElSKSAkKENYWEZMQUdTKSBcCi0gICAgICAgICAgICAtYyAkKEdURVNUX0RJUikvc3JjL2d0
ZXN0LWFsbC5jYwotCi1nbW9jay1hbGwubyA6ICQoR01PQ0tfU1JDU18pCi0JJChDWFgpICQoQ1BQ
RkxBR1MpIC1JJChHVEVTVF9ESVIpIC1JJChHTU9DS19ESVIpICQoQ1hYRkxBR1MpIFwKLSAgICAg
ICAgICAgIC1jICQoR01PQ0tfRElSKS9zcmMvZ21vY2stYWxsLmNjCi0KLWdtb2NrX21haW4ubyA6
ICQoR01PQ0tfU1JDU18pCi0JJChDWFgpICQoQ1BQRkxBR1MpIC1JJChHVEVTVF9ESVIpIC1JJChH
TU9DS19ESVIpICQoQ1hYRkxBR1MpIFwKLSAgICAgICAgICAgIC1jICQoR01PQ0tfRElSKS9zcmMv
Z21vY2tfbWFpbi5jYwotCi1nbW9jay5hIDogZ21vY2stYWxsLm8gZ3Rlc3QtYWxsLm8KLQkkKEFS
KSAkKEFSRkxBR1MpICRAICReCi0KLWdtb2NrX21haW4uYSA6IGdtb2NrLWFsbC5vIGd0ZXN0LWFs
bC5vIGdtb2NrX21haW4ubwotCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KLQotIyBCdWlsZHMgYSBz
YW1wbGUgdGVzdC4KLQotZ21vY2tfdGVzdC5vIDogJChVU0VSX0RJUikvZ21vY2tfdGVzdC5jYyAk
KEdNT0NLX0hFQURFUlMpCi0JJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoVVNF
Ul9ESVIpL2dtb2NrX3Rlc3QuY2MKLQotZ21vY2tfdGVzdCA6IGdtb2NrX3Rlc3QubyBnbW9ja19t
YWluLmEKLQkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgLWxwdGhyZWFkICReIC1vICRA
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2suc2xuIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svbXN2Yy8yMDA1L2dtb2NrLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNm
NTdhMzVhYThjMjYxNTMxMGY3NDhhYzIzMmVlY2YxOGVmZDFlYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2su
c2xuCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAot77u/Ci1NaWNyb3NvZnQgVmlzdWFs
IFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwCi0jIFZpc3VhbCBTdHVk
aW8gMjAwNQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0i
KSA9ICJnbW9jayIsICJnbW9jay52Y3Byb2oiLCAiezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVD
NjYyREZFM0JENX0iCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThE
MTEtMDBBMEM5MUJDOTQyfSIpID0gImdtb2NrX3Rlc3QiLCAiZ21vY2tfdGVzdC52Y3Byb2oiLCAi
e0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0iCi1FbmRQcm9qZWN0Ci1Qcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImdtb2NrX21h
aW4iLCAiZ21vY2tfbWFpbi52Y3Byb2oiLCAie0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEw
QkY2QjU4OX0iCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29u
ZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgotCQlEZWJ1Z3xXaW4zMiA9IERlYnVn
fFdpbjMyCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCi0JRW5kR2xvYmFsU2VjdGlv
bgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNv
bHV0aW9uCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LkRlYnVnfFdp
bjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01
QzY2MkRGRTNCRDV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7MzQ2ODFG
MEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9
IFJlbGVhc2V8V2luMzIKLQkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0u
UmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7RjEwRDIyRjgtQUM3Qi00
MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1Z3xXaW4zMi5C
dWlsZC4wID0gRGVidWd8V2luMzIKLQkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3
OENEMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXtGMTBEMjJG
OC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJl
bGVhc2V8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uRGVi
dWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04
QzUzLTU4MEEwQkY2QjU4OX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXtF
NEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9LlJlbGVhc2V8V2luMzIuQWN0aXZl
Q2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZC
NTg5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JRW5kR2xvYmFsU2Vj
dGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0J
CUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL21zdmMvMjAwNS9nbW9jay52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI3ZGU1OGY4N2U2NjQwNDk4ODAwYzY2YmI5M2IxNzU1OGIwMDE5ZDAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dt
b2NrLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi08P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0Ci0J
UHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0iOC4wMCIKLQlOYW1lPSJnbW9jayIK
LQlQcm9qZWN0R1VJRD0iezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0iCi0J
Um9vdE5hbWVzcGFjZT0iZ21vY2siCi0JS2V5d29yZD0iV2luMzJQcm9qIgotCT4KLQk8UGxhdGZv
cm1zPgotCQk8UGxhdGZvcm0KLQkJCU5hbWU9IldpbjMyIgotCQkvPgotCTwvUGxhdGZvcm1zPgot
CTxUb29sRmlsZXM+Ci0JPC9Ub29sRmlsZXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29uZmln
dXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29s
dXRpb25EaXIpJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9
IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgotCQkJ
SW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMiCi0JCQlDaGFy
YWN0ZXJTZXQ9IjEiCi0JCQk+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRv
b2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCS8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCi0JCQkvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCi0JCQkvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5caW5jbHVkZTsuLlwuLiIKLQkJCQlQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCi0JCQkJTWluaW1hbFJlYnVpbGQ9InRy
dWUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIgot
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlE
ZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiCi0JCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iMyIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNl
Q29tcGlsZXJUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBp
bGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIK
LQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJCS8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDQUxpbmtUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNYRENNYWtlVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wi
Ci0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKLQkJCS8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgotCQkJLz4KLQkJPC9Db25maWd1cmF0
aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCU91dHB1
dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVy
bWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJh
dGlvblR5cGU9IjQiCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxnbW9ja19jb25maWcu
dnNwcm9wcyIKLQkJCUNoYXJhY3RlclNldD0iMSIKLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlv
bj0iMSIKLQkJCT4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKLQkJ
CS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKLQkJCS8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXGlu
Y2x1ZGU7Li5cLi4iCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztf
TElCIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIw
IgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxl
bXM9InRydWUiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKLQkJCS8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgotCQkJLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDTGlicmFyaWFuVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQUxpbmtUb29s
IgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKLQkJCS8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ0Z4Q29wVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZl
bnRUb29sIgotCQkJLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0J
PFJlZmVyZW5jZXM+Ci0JPC9SZWZlcmVuY2VzPgotCTxGaWxlcz4KLQkJPEZpbHRlcgotCQkJTmFt
ZT0iU291cmNlIEZpbGVzIgotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBq
O2JhdDthc207YXNteCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYt
QTA2Ni0yQTMyRDc1MkEyRkZ9IgotCQkJPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHNyY1xnbW9jay1hbGwuY2MiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9IiQoR1Rlc3REaXIpXHNyY1xndGVzdC1hbGwuY2MiCi0JCQkJPgotCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCQkJPgotCQkJCQk8
VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiQoR1Rlc3REaXIpIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
Ci0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKEdUZXN0RGlyKSIKLQkJCQkJLz4KLQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPC9GaWxlPgotCQk8L0ZpbHRlcj4KLQkJPEZpbHRl
cgotCQkJTmFtZT0iUHVibGljIEhlYWRlciBGaWxlcyIKLQkJCUZpbHRlcj0iaDtocHA7aHh4O2ht
O2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04
OEVCLTYyNUZCRTUyRUJGQn0iCi0JCQk+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1l
PSJQcml2YXRlIEhlYWRlciBGaWxlcyIKLQkJCT4KLQkJPC9GaWx0ZXI+Ci0JPC9GaWxlcz4KLQk8
R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfY29uZmlnLnZzcHJvcHMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9tc3ZjLzIwMDUvZ21vY2tfY29uZmlnLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDliNWZmN2YzOGFiZWIxMjBmYzhmMGVkMjIzMDRkMTJkZGI4ZTEyYzMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8y
MDA1L2dtb2NrX2NvbmZpZy52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAot
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08VmlzdWFsU3R1
ZGlvUHJvcGVydHlTaGVldAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249Ijgu
MDAiCi0JTmFtZT0iZ21vY2tfY29uZmlnIgotCT4KLQk8VG9vbAotCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKEdUZXN0RGly
KS9pbmNsdWRlJnF1b3Q7IgotCS8+Ci0JPFVzZXJNYWNybwotCQlOYW1lPSJHVGVzdERpciIKLQkJ
VmFsdWU9Ii4uLy4uLy4uL2dvb2dsZXRlc3QiCi0JLz4KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlT
aGVldD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19tYWluLnZjcHJv
aiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19tYWluLnZjcHJvagpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjJmZjhhNjE1NzdlNjMwNDJiYTRhMjJjY2I5ODZhOWIwNjVlYzdi
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9tc3ZjLzIwMDUvZ21vY2tfbWFpbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxODcg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08
VmlzdWFsU3R1ZGlvUHJvamVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249
IjguMDAiCi0JTmFtZT0iZ21vY2tfbWFpbiIKLQlQcm9qZWN0R1VJRD0ie0U0RUY2MTRCLTMwREYt
NDk1NC04QzUzLTU4MEEwQkY2QjU4OX0iCi0JUm9vdE5hbWVzcGFjZT0iZ21vY2tfbWFpbiIKLQlL
ZXl3b3JkPSJXaW4zMlByb2oiCi0JPgotCTxQbGF0Zm9ybXM+Ci0JCTxQbGF0Zm9ybQotCQkJTmFt
ZT0iV2luMzIiCi0JCS8+Ci0JPC9QbGF0Zm9ybXM+Ci0JPFRvb2xGaWxlcz4KLQk8L1Rvb2xGaWxl
cz4KLQk8Q29uZmlndXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb25O
YW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUp
IgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0i
LlxnbW9ja19jb25maWcudnNwcm9wcyIKLQkJCUNoYXJhY3RlclNldD0iMSIKLQkJCT4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNY
TUxEYXRhR2VuZXJhdG9yVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2Vy
dmljZVByb3h5R2VuZXJhdG9yVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlE
TFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJ
CU9wdGltaXphdGlvbj0iMCIKLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8u
Li9pbmNsdWRlIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0xJ
QiIKLQkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIKLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMi
Ci0JCQkJUnVudGltZUxpYnJhcnk9IjEiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0J
CQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0i
dHJ1ZSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCi0JCQkvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNM
aWJyYXJpYW5Ub29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiCi0J
CQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgotCQkJLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
RnhDb3BUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRv
b2wiCi0JCQkvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoQ29u
ZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcilcJChQ
cm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUluaGVyaXRlZFByb3Bl
cnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3Byb3BzIgotCQkJQ2hhcmFjdGVyU2V0PSIxIgot
CQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgotCQkJPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0
b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5l
cmF0b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCS8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vaW5jbHVkZSIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiCi0JCQkJVXNl
UHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0
Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PSIzIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxl
clRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29s
IgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgotCQkJLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNBTGlua1Rvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hEQ01h
a2VUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKLQkJCS8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDRnhDb3BUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCi0JCQkvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0J
PC9Db25maWd1cmF0aW9ucz4KLQk8UmVmZXJlbmNlcz4KLQkJPFByb2plY3RSZWZlcmVuY2UKLQkJ
CVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0iezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVD
NjYyREZFM0JENX0iCi0JCQlSZWxhdGl2ZVBhdGhUb1Byb2plY3Q9Ii5cZ21vY2sudmNwcm9qIgot
CQkvPgotCTwvUmVmZXJlbmNlcz4KLQk8RmlsZXM+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IlNvdXJj
ZSBGaWxlcyIKLQkJCUZpbHRlcj0iY3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNt
O2FzbXgiCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEz
MkQ3NTJBMkZGfSIKLQkJCT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxzcmNc
Z21vY2tfbWFpbi5jYyIKLQkJCQk+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi4vLi4vaW5jbHVk
ZSIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iLi4vLi4vaW5jbHVkZSIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgot
CQkJPC9GaWxlPgotCQk8L0ZpbHRlcj4KLQkJPEZpbHRlcgotCQkJTmFtZT0iSGVhZGVyIEZpbGVz
IgotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCi0JCQlVbmlxdWVJZGVudGlm
aWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSIKLQkJCT4KLQkJPC9G
aWx0ZXI+Ci0JPC9GaWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRp
b1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfdGVzdC52
Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfdGVzdC52Y3Byb2oKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZDY3NzM5NDRjYTNmNWYyNzNlZjdmMTI1YWQ2M2JhODRi
YWUzYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX3Rlc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEs
MjAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/
PgotPFZpc3VhbFN0dWRpb1Byb2plY3QKLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJz
aW9uPSI4LjAwIgotCU5hbWU9Imdtb2NrX3Rlc3QiCi0JUHJvamVjdEdVSUQ9IntGMTBEMjJGOC1B
QzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9IgotCVJvb3ROYW1lc3BhY2U9Imdtb2NrX3Rlc3Qi
Ci0JS2V5d29yZD0iV2luMzJQcm9qIgotCT4KLQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJ
CU5hbWU9IldpbjMyIgotCQkvPgotCTwvUGxhdGZvcm1zPgotCTxUb29sRmlsZXM+Ci0JPC9Ub29s
RmlsZXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iRGVi
dWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0
aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKVwkKFByb2plY3RO
YW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVl
dHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMiCi0JCQlDaGFyYWN0ZXJTZXQ9IjEiCi0JCQk+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dl
YlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q01JRExUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
LQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2JpZ29iaiIKLQkJCQlPcHRpbWl6YXRpb249IjAiCi0J
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5caW5jbHVkZTsuLlwuLiIKLQkJ
CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIgotCQkJCU1p
bmltYWxSZWJ1aWxkPSJ0cnVlIgotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50
aW1lTGlicmFyeT0iMSIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5n
TGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgotCQkJ
CURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1By
ZUxpbmtFdmVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wi
Ci0JCQkJTGlua0luY3JlbWVudGFsPSIyIgotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0i
dHJ1ZSIKLQkJCQlTdWJTeXN0ZW09IjEiCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIKLQkJCS8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDQUxpbmtUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNNYW5pZmVzdFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hEQ01ha2VU
b29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKLQkJCS8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDRnhDb3BUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNBcHBWZXJpZmllclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRl
cGxveW1lbnRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiCi0JCQkvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQo
Q29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcilc
JChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUluaGVyaXRlZFBy
b3BlcnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3Byb3BzIgotCQkJQ2hhcmFjdGVyU2V0PSIx
IgotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgotCQkJPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkND
dXN0b21CdWlsZFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5l
cmF0b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlH
ZW5lcmF0b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJ
CS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJQWRkaXRpb25h
bE9wdGlvbnM9Ii9iaWdvYmoiCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5c
Li5caW5jbHVkZTsuLlwuLiIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRF
QlVHO19DT05TT0xFIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgotCQkJCVVzZVByZWNvbXBpbGVk
SGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmls
aXR5UHJvYmxlbXM9InRydWUiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKLQkJCS8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgotCQkJ
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRp
bWl6ZVJlZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJn
ZXRNYWNoaW5lPSIxIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiCi0J
CQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKLQkJCS8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q0JzY01ha2VUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiCi0J
CQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKLQkJCS8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKLQkJCS8+Ci0JCTwvQ29uZmlndXJhdGlvbj4K
LQk8L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQot
CQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7RTRFRjYxNEItMzBERi00OTU0LThDNTMt
NTgwQTBCRjZCNTg5fSIKLQkJCVJlbGF0aXZlUGF0aFRvUHJvamVjdD0iLlxnbW9ja19tYWluLnZj
cHJvaiIKLQkJLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlOYW1l
PSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1B
MDY2LTJBMzJENzUyQTJGRn0iCi0JCQk+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5cdGVzdFxnbW9ja19hbGxfdGVzdC5jYyIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVy
PgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4
eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRi
MDQtODhFQi02MjVGQkU1MkVCRkJ9IgotCQkJPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxH
bG9iYWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9jay5zbG4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAv
Z21vY2suc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzM1NmUxNDUyOTI0NDhj
OGExMzJjZmZjYzM2MTgzOTgxNWNlZTUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9jay5zbG4KKysrIC9kZXYv
bnVsbApAQCAtMSwzMiArMCwwIEBACi3vu78KLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0
aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwCi0jIFZpc3VhbCBDKysgRXhwcmVzcyAyMDEw
Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImdt
b2NrIiwgImdtb2NrLnZjeHByb2oiLCAiezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZF
M0JENX0iCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBB
MEM5MUJDOTQyfSIpID0gImdtb2NrX3Rlc3QiLCAiZ21vY2tfdGVzdC52Y3hwcm9qIiwgIntGMTBE
MjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9IgotRW5kUHJvamVjdAotUHJvamVjdCgi
ezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9ja19tYWluIiwg
Imdtb2NrX21haW4udmN4cHJvaiIsICJ7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZC
NTg5fSIKLUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1
cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2lu
MzIKLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzIKLQlFbmRHbG9iYWxTZWN0aW9uCi0J
R2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRp
b24KLQkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0uRGVidWd8V2luMzIu
QWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYy
REZFM0JENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXszNDY4MUYwRC1D
RTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVs
ZWFzZXxXaW4zMgotCQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5SZWxl
YXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JCXtGMTBEMjJGOC1BQzdCLTQyMTMt
ODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0J
CXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0Qy
fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJe0YxMEQyMkY4LUFD
N0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgotCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xX
aW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMt
NTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKLQkJe0U0RUY2
MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcg
PSBSZWxlYXNlfFdpbjMyCi0JCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9
LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQlFbmRHbG9iYWxTZWN0aW9u
Ci0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KLQkJSGlk
ZVNvbHV0aW9uTm9kZSA9IEZBTFNFCi0JRW5kR2xvYmFsU2VjdGlvbgotRW5kR2xvYmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2sudmN4cHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L21zdmMvMjAxMC9nbW9jay52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
MWE4NWVmNmM3ZDZhNzlmYTAyMmExZDU2MzAxNGMxODYxNGEyZGQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9j
ay52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQi
IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25m
aWd1cmF0aW9ucyI+DQotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xX
aW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQotICAg
ICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlv
bj4NCi0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0K
LSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQotICAgICAgPFBs
YXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCi0g
IDwvSXRlbUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KLSAgICA8
UHJvamVjdEd1aWQ+ezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX08L1Byb2pl
Y3RHdWlkPg0KLSAgICA8Um9vdE5hbWVzcGFjZT5nbW9jazwvUm9vdE5hbWVzcGFjZT4NCi0gICAg
PEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAg
ICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4NCi0gICAgPFdob2xlUHJvZ3Jh
bU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQotICA8L1Byb3Bl
cnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAg
ICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQot
ICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgPC9Qcm9wZXJ0eUdy
b3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
cHJvcHMiIC8+DQotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCi0g
IDwvSW1wb3J0R3JvdXA+DQotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIg
Lz4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNo
ZWV0cyI+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNw
cC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFw
cERhdGFQbGF0Zm9ybSIgLz4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJv
cHMiIC8+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJN
YWNyb3MiIC8+DQotICA8UHJvcGVydHlHcm91cD4NCi0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+
MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPg0KLSAgICA8T3V0RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGly
KSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIp
JChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFBy
b2plY3ROYW1lKVw8L0ludERpcj4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5p
dGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVi
dWd8V2luMzInIj4NCi0gICAgPENsQ29tcGlsZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPkRpc2Fi
bGVkPC9PcHRpbWl6YXRpb24+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+DQotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1
aWxkPg0KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNS
dW50aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8
L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1By
ZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2
ZWw+DQotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gIDwvSXRlbURlZmluaXRp
b25Hcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0K
LSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4NCi0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7
JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCi0gICAg
ICA8UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCi0gICAg
ICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCi0g
ICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQotICA8SXRlbUdyb3Vw
Pg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xnbW9jay1hbGwuY2MiIC8+DQot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChHVGVzdERpcilcc3JjXGd0ZXN0LWFsbC5jYyI+DQot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoR1Rlc3REaXIpOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChHVGVzdERpcik7JShBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4N
Ci0gICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQotICA8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi08L1Byb2pl
Y3Q+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9w
cyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9ja19jb25maWcucHJvcHMKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ0MWYzMWNmZTY5YWQ4Y2E0NzMyODNjNjk2ZDM5MjYwOTVhNTQ4
Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE5
ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2pl
Y3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6
Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQotICA8UHJv
cGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+DQotICAgIDxHVGVzdERpcj4uLi8uLi8uLi9n
b29nbGV0ZXN0PC9HVGVzdERpcj4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdy
b3VwPg0KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0Rmls
ZVZlcnNpb24+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8SXRlbURlZmluaXRpb25Hcm91cD4N
Ci0gICAgPENsQ29tcGlsZT4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4k
KEdUZXN0RGlyKS9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgPC9JdGVtRGVm
aW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0i
R1Rlc3REaXIiPg0KLSAgICAgIDxWYWx1ZT4kKEdUZXN0RGlyKTwvVmFsdWU+DQotICAgIDwvQnVp
bGRNYWNybz4NCi0gIDwvSXRlbUdyb3VwPg0KLTwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfbWFpbi52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8y
MDEwL2dtb2NrX21haW4udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdm
ZWNkNWY4YjcxM2FiZWI5ZDdkYjE3YjFhZTI5YTM0NGM1OGY4Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tf
bWFpbi52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVp
bGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNv
bS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RD
b25maWd1cmF0aW9ucyI+DQotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1
Z3xXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+DQot
ICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJh
dGlvbj4NCi0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIi
Pg0KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+DQotICAgICAg
PFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4N
Ci0gIDwvSXRlbUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPg0KLSAg
ICA8UHJvamVjdEd1aWQ+e0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX08L1By
b2plY3RHdWlkPg0KLSAgICA8Um9vdE5hbWVzcGFjZT5nbW9ja19tYWluPC9Sb290TmFtZXNwYWNl
Pg0KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQotICA8L1Byb3BlcnR5R3JvdXA+
DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZh
dWx0LnByb3BzIiAvPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24i
Pg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5
cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgICA8V2hv
bGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4NCi0g
IDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlv
biI+DQotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9u
VHlwZT4NCi0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQotICA8L1By
b3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9z
b2Z0LkNwcC5wcm9wcyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGlu
Z3MiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVy
dHlTaGVldHMiPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJv
b3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9j
YWxBcHBEYXRhUGxhdGZvcm0iIC8+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmln
LnByb3BzIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlBy
b3BlcnR5U2hlZXRzIj4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNy
b3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVz
ZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9
IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2Nv
bmZpZy5wcm9wcyIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBMYWJl
bD0iVXNlck1hY3JvcyIgLz4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0KLSAgICA8X1Byb2plY3RGaWxl
VmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQotICAgIDxPdXREaXIg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCi0gICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+DQotICAgIDxPdXREaXIgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1
dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KLSAgICA8SW50RGlyIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0
RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0KLSAgICAgIDxPcHRpbWl6YXRp
b24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0Fk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRp
b25zPldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCi0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJl
YnVpbGQ+DQotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+DQotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1
ZzwvUnVudGltZUxpYnJhcnk+DQotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgPC9JdGVtRGVmaW5p
dGlvbkdyb3VwPg0KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+DQotICAgIDxDbENvbXBpbGU+
DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFBy
ZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAg
PFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPERlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICA8
L0NsQ29tcGlsZT4NCi0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQot
ICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Imdtb2NrLnZjeHByb2oiPg0KLSAgICAgIDxQ
cm9qZWN0PnszNDY4MWYwZC1jZTQ1LTQxNWQtYjVmMi01YzY2MmRmZTNiZDV9PC9Qcm9qZWN0Pg0K
LSAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPnRydWU8L0NvcHlMb2NhbFNhdGVs
bGl0ZUFzc2VtYmxpZXM+DQotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1Jl
ZmVyZW5jZU91dHB1dEFzc2VtYmx5Pg0KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+DQotICA8L0l0
ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
c3JjXGdtb2NrX21haW4uY2MiPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gIDwvSXRlbUdy
b3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
dGFyZ2V0cyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQot
ICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9t
c3ZjLzIwMTAvZ21vY2tfdGVzdC52Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2Nr
X3Rlc3QudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY1NDM5ZWMyYjcx
ZWIwODMwYzg2MmQzOTdjMjRkZTMyYTBjNTA1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfdGVzdC52Y3hw
cm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+DQotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJh
dGlvbnMiPg0KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIi
Pg0KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQot
ICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCi0gICAg
ICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9y
bT5XaW4zMjwvUGxhdGZvcm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICA8L0l0
ZW1Hcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCi0gICAgPFByb2pl
Y3RHdWlkPntGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9PC9Qcm9qZWN0R3Vp
ZD4NCi0gICAgPFJvb3ROYW1lc3BhY2U+Z21vY2tfdGVzdDwvUm9vdE5hbWVzcGFjZT4NCi0gICAg
PEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCi0gICAg
PENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQotICAgIDxXaG9sZVByb2dyYW1P
cHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPg0KLSAgPC9Qcm9wZXJ0
eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAg
PENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4NCi0gICAg
PENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+DQotICA8L1Byb3BlcnR5R3JvdXA+
DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9w
cyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KLSAgPC9J
bXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0K
LSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0
Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jv
c29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxh
dGZvcm0iIC8+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPg0K
LSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRz
Ij4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQo
UGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxN
aWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0
YVBsYXRmb3JtIiAvPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIg
Lz4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3Jv
cyIgLz4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4w
LjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQotICAgIDxPdXREaXIgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25E
aXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQ
cm9qZWN0TmFtZSlcPC9JbnREaXI+DQotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJ
bmNyZW1lbnRhbD4NCi0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9J
bnREaXI+DQotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4N
Ci0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCi0gICAgPENs
Q29tcGlsZT4NCi0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L2JpZ29iaiAlKEFkZGl0aW9uYWxP
cHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxl
ZDwvT3B0aW1pemF0aW9uPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4u
XC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz4NCi0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJl
YnVpbGQ+DQotICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNp
Y1J1bnRpbWVDaGVja3M+DQotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1
ZzwvUnVudGltZUxpYnJhcnk+DQotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDwv
UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdM
ZXZlbD4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgIDwvQ2xDb21waWxlPg0KLSAgICA8TGluaz4NCi0g
ICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj4NCi0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4NCi0gICAgICA8VGFy
Z2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPg0KLSAgICA8L0xpbms+DQotICA8
L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4NCi0gICAg
PENsQ29tcGlsZT4NCi0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L2JpZ29iaiAlKEFkZGl0aW9u
YWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+
DQotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVs
MzwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1E
YXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCi0gICAgPC9DbENvbXBpbGU+DQotICAg
IDxMaW5rPg0KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPg0KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPg0K
LSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPg0KLSAg
ICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+DQotICAg
ICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4NCi0gICAgPC9MaW5r
Pg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPFByb2pl
Y3RSZWZlcmVuY2UgSW5jbHVkZT0iZ21vY2tfbWFpbi52Y3hwcm9qIj4NCi0gICAgICA8UHJvamVj
dD57ZTRlZjYxNGItMzBkZi00OTU0LThjNTMtNTgwYTBiZjZiNTg5fTwvUHJvamVjdD4NCi0gICAg
ICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz50cnVlPC9Db3B5TG9jYWxTYXRlbGxpdGVB
c3NlbWJsaWVzPg0KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT50cnVlPC9SZWZlcmVu
Y2VPdXRwdXRBc3NlbWJseT4NCi0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPg0KLSAgPC9JdGVtR3Jv
dXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHRlc3Rc
Z21vY2tfYWxsX3Rlc3QuY2MiIC8+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQotICA8SW1wb3J0
R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi08L1By
b2plY3Q+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnNsbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL21zdmMvMjAxNS9nbW9jay5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM1OWUwN2ZjYjc5ZDcyNjRmNDBkMGZiYjU4YTUzODVmNWE3ZjcyYzMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1
L2dtb2NrLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLe+7vwotTWljcm9zb2Z0
IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlz
dWFsIFN0dWRpbyAxNAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJnbW9jayIsICJnbW9jay52Y3hwcm9qIiwgInszNDY4MUYwRC1DRTQ1LTQxNUQt
QjVGMi01QzY2MkRGRTNCRDV9IgotRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEt
MTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9ja190ZXN0IiwgImdtb2NrX3Rlc3QudmN4
cHJvaiIsICJ7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfSIKLUVuZFByb2pl
Y3QKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAi
Z21vY2tfbWFpbiIsICJnbW9ja19tYWluLnZjeHByb2oiLCAie0U0RUY2MTRCLTMwREYtNDk1NC04
QzUzLTU4MEEwQkY2QjU4OX0iCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0aW9uKFNv
bHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgotCQlEZWJ1Z3xXaW4z
MiA9IERlYnVnfFdpbjMyCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCi0JRW5kR2xv
YmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMp
ID0gcG9zdFNvbHV0aW9uCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9
LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXszNDY4MUYwRC1DRTQ1LTQx
NUQtQjVGMi01QzY2MkRGRTNCRDV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgot
CQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5SZWxlYXNlfFdpbjMyLkFj
dGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYy
REZFM0JENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7RjEwRDIy
RjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBE
ZWJ1Z3xXaW4zMgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1
Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKLQkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIw
LTYwOEU3RDg3OENEMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0J
CXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LlJlbGVhc2V8V2luMzIuQnVp
bGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2
QjU4OX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJe0U0RUY2MTRCLTMw
REYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdp
bjMyCi0JCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9LlJlbGVhc2V8V2lu
MzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMt
NTgwQTBCRjZCNTg5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JRW5k
R2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNv
bHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVu
ZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnZjeHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2sudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDVkZGQwOTEwMGRlZWU3OTY4YjIwYzhjYzFjZmYwNGEyNDAyZjc0Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9t
c3ZjLzIwMTUvZ21vY2sudmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLe+7
vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0
VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
Lm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFi
ZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1
cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNl
fFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0g
ICAgPFByb2plY3RHdWlkPnszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9PC9Q
cm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5nbW9jazwvUm9vdE5hbWVzcGFjZT4KLSAg
ICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9w
cyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxD
b25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8
Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0
aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8UGxhdGZvcm1U
b29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJv
cGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlw
ZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0PlVu
aWNvZGU8L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3Jt
VG9vbHNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJn
ZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdt
b2NrX2NvbmZpZy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERp
cilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0
cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJyki
IExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdt
b2NrX2NvbmZpZy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZp
bGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGly
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzIn
Ij4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+
JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPE91dERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFNvbHV0
aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERp
cikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURl
ZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlz
YWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVp
bGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVu
dGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1
bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21w
aWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0g
ICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4K
LSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFs
SW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3Nv
ckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxp
YnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cLi5cc3JjXGdtb2NrLWFsbC5jYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoR1Rlc3REaXIpXHNyY1xndGVzdC1hbGwuY2MiPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z3xXaW4zMiciPiQoR1Rlc3REaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8
L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVE
aXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8V2luMzInIj4kKEdUZXN0RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0
ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5D
cHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4K
LSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfY29uZmlnLnByb3BzIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX2NvbmZpZy5wcm9wcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzdiYzk1YjE5MmQ5NTM2MDE4ZDY3ZDQyNmZiYTA2ODZiM2Q0NWExYi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9tc3ZjLzIwMTUvZ21vY2tfY29uZmlnLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAs
MCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERl
ZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2No
ZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPEdUZXN0RGlyPi4uLy4uLy4uL2dvb2dsZXRl
c3Q8L0dUZXN0RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAg
IDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4K
LSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21w
aWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChHVGVzdERpcikvaW5j
bHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0g
IDxJdGVtR3JvdXA+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iR1Rlc3REaXIiPgotICAgICAg
PFZhbHVlPiQoR1Rlc3REaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdy
b3VwPgotPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2Nr
X21haW4udmN4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9ja19tYWluLnZjeHByb2oK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2M2OGI5YTM5MTJiYjM0YmI2N2ZkYjQ0
ZjkyMzE0MTM3MDg5Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX21haW4udmN4cHJvagorKysgL2Rldi9u
dWxsCkBAIC0xLDkwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTQu
MCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQv
MjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAg
PFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25m
aWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9Q
bGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJl
bGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgot
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntFNEVGNjE0Qi0zMERGLTQ5
NTQtOEM1My01ODBBMEJGNkI1ODl9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5n
bW9ja19tYWluPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29y
ZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJh
cnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFj
dGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFt
T3B0aW1pemF0aW9uPgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0
PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJh
dGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRp
b25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQ
bGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+
Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3Bz
IiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KLSAgPC9JbXBv
cnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPgotICA8L0lt
cG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAg
PEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0p
LnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQu
Q3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3Jt
IiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPgotICA8L0lt
cG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFBy
b3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJv
amVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0
aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0lu
dERpcj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgot
ICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21w
aWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAg
PEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAg
PFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVi
dWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5h
YmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5
Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRI
ZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5M
ZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dy
YW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8
Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5j
bHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztf
TElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4K
LSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAg
ICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAg
ICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAg
IDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0g
ICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ21vY2sudmN4cHJvaiI+Ci0gICAgICA8UHJv
amVjdD57MzQ2ODFmMGQtY2U0NS00MTVkLWI1ZjItNWM2NjJkZmUzYmQ1fTwvUHJvamVjdD4KLSAg
ICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPnRydWU8L0NvcHlMb2NhbFNhdGVsbGl0
ZUFzc2VtYmxpZXM+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+dHJ1ZTwvUmVmZXJl
bmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91
cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xnbW9j
a19tYWluLmNjIj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi9p
bmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8u
Li9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1w
b3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgot
ICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3Vw
PgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL21zdmMvMjAxNS9nbW9ja190ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3Zj
LzIwMTUvZ21vY2tfdGVzdC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
NmVhNTUzNGFkMTliNjQ5MDkwZTQzZDAxMGQxZjlkNWUxYmVkNzVkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9j
a190ZXN0LnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAot77u/PD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRz
PSJCdWlsZCIgVG9vbHNWZXJzaW9uPSIxNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9z
b2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJv
amVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0i
RGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+
Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3Vy
YXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIi
PgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQ
bGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAg
PC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJv
amVjdEd1aWQ+e0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn08L1Byb2plY3RH
dWlkPgotICAgIDxSb290TmFtZXNwYWNlPmdtb2NrX3Rlc3Q8L1Jvb3ROYW1lc3BhY2U+Ci0gICAg
PEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBv
cnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMi
IC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29u
ZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFy
YWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6
YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxQbGF0Zm9ybVRvb2xz
ZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFw
cGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8
L0NoYXJhY3RlclNldD4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNl
dD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNp
b25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2Nv
bmZpZy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0i
UHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWlj
cm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChV
c2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVs
PSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Imdtb2NrX2Nv
bmZpZy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9
IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJz
aW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNv
bHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbilcPC9PdXREaXI+Ci0gICAgPEludERpciBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChPdXRE
aXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwv
TGlua0luY3JlbWVudGFsPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlc
PC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFs
PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xD
b21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9iaWdvYmogJShBZGRpdGlvbmFsT3B0
aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwv
T3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5c
aW5jbHVkZTsuLlwuLjskKEdUZXN0RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmlu
aXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwv
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8TWluaW1hbFJlYnVpbGQ+dHJ1ZTwvTWlu
aW1hbFJlYnVpbGQ+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8
L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
RGVidWc8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAg
PC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0Rl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAg
ICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFRhcmdldE1h
Y2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGls
ZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMp
PC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
Pi4uXC4uXGluY2x1ZGU7Li5cLi47JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9u
cz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8
L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+
Ci0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2Vu
ZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAg
ICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPE9wdGltaXplUmVmZXJl
bmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGlu
Zz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGlu
ZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91
cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJnbW9ja19t
YWluLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2U0ZWY2MTRiLTMwZGYtNDk1NC04YzUzLTU4
MGEwYmY2YjU4OX08L1Byb2plY3Q+Ci0gICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGll
cz50cnVlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPgotICAgICAgPFJlZmVyZW5jZU91
dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVj
dFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlx0ZXN0XGdtb2NrX2FsbF90ZXN0LmNjIiAvPgotICA8L0l0ZW1Hcm91
cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFy
Z2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9J
bXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IGNiN2ZkZjJmNzgzOWJkY2Q1MWY1NTIzZWM2NDg5MjBiMDYwOWNiZjMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0
cy9mdXNlX2dtb2NrX2ZpbGVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjQwICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImZ1c2VfZ21vY2tf
ZmlsZXMucHkgdjAuMS4wCi1GdXNlcyBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3Qgc291cmNl
IGNvZGUgaW50byB0d28gLmggZmlsZXMgYW5kIGEgLmNjIGZpbGUuCi0KLVNZTk9QU0lTCi0gICAg
ICAgZnVzZV9nbW9ja19maWxlcy5weSBbR01PQ0tfUk9PVF9ESVJdIE9VVFBVVF9ESVIKLQotICAg
ICAgIFNjYW5zIEdNT0NLX1JPT1RfRElSIGZvciBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3Qg
c291cmNlCi0gICAgICAgY29kZSwgYXNzdW1pbmcgR29vZ2xlIFRlc3QgaXMgaW4gdGhlIEdNT0NL
X1JPT1RfRElSLy4uL2dvb2dsZXRlc3QKLSAgICAgICBkaXJlY3RvcnksIGFuZCBnZW5lcmF0ZXMg
dGhyZWUgZmlsZXM6Ci0gICAgICAgT1VUUFVUX0RJUi9ndGVzdC9ndGVzdC5oLCBPVVRQVVRfRElS
L2dtb2NrL2dtb2NrLmgsIGFuZAotICAgICAgIE9VVFBVVF9ESVIvZ21vY2stZ3Rlc3QtYWxsLmNj
LiAgVGhlbiB5b3UgY2FuIGJ1aWxkIHlvdXIgdGVzdHMKLSAgICAgICBieSBhZGRpbmcgT1VUUFVU
X0RJUiB0byB0aGUgaW5jbHVkZSBzZWFyY2ggcGF0aCBhbmQgbGlua2luZwotICAgICAgIHdpdGgg
T1VUUFVUX0RJUi9nbW9jay1ndGVzdC1hbGwuY2MuICBUaGVzZSB0aHJlZSBmaWxlcyBjb250YWlu
Ci0gICAgICAgZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xlIE1vY2suICBIZW5jZSB5
b3UgY2FuCi0gICAgICAgImluc3RhbGwiIEdvb2dsZSBNb2NrIGJ5IGNvcHlpbmcgdGhlbSB0byB3
aGVyZXZlciB5b3Ugd2FudC4KLQotICAgICAgIEdNT0NLX1JPT1RfRElSIGNhbiBiZSBvbWl0dGVk
IGFuZCBkZWZhdWx0cyB0byB0aGUgcGFyZW50Ci0gICAgICAgZGlyZWN0b3J5IG9mIHRoZSBkaXJl
Y3RvcnkgaG9sZGluZyB0aGlzIHNjcmlwdC4KLQotRVhBTVBMRVMKLSAgICAgICAuL2Z1c2VfZ21v
Y2tfZmlsZXMucHkgZnVzZWRfZ21vY2sKLSAgICAgICAuL2Z1c2VfZ21vY2tfZmlsZXMucHkgcGF0
aC90by91bnBhY2tlZC9nbW9jayBmdXNlZF9nbW9jawotCi1UaGlzIHRvb2wgaXMgZXhwZXJpbWVu
dGFsLiAgSW4gcGFydGljdWxhciwgaXQgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIG5vCi1jb25kaXRp
b25hbCBpbmNsdXNpb24gb2YgR29vZ2xlIE1vY2sgb3IgR29vZ2xlIFRlc3QgaGVhZGVycy4gIFBs
ZWFzZQotcmVwb3J0IGFueSBwcm9ibGVtcyB0byBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb20u
ICBZb3UgY2FuIHJlYWQKLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kv
Q29va0Jvb2sgZm9yIG1vcmUKLWluZm9ybWF0aW9uLgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBv
cnQgc2V0cwotaW1wb3J0IHN5cwotCi0jIFdlIGFzc3VtZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiB0
aGUgc2NyaXB0cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKLSMgTW9jayByb290IGRpcmVjdG9y
eS4KLURFRkFVTFRfR01PQ0tfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJykKLQotIyBXZSBuZWVkIHRvIGNhbGwgaW50byBnb29nbGV0ZXN0L3Nj
cmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weS4KLXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4o
REVGQVVMVF9HTU9DS19ST09UX0RJUiwgJy4uL2dvb2dsZXRlc3Qvc2NyaXB0cycpKQotaW1wb3J0
IGZ1c2VfZ3Rlc3RfZmlsZXMKLWd0ZXN0ID0gZnVzZV9ndGVzdF9maWxlcwotCi0jIFJlZ2V4IGZv
ciBtYXRjaGluZyAnI2luY2x1ZGUgImdtb2NrLy4uLiInLgotSU5DTFVERV9HTU9DS19GSUxFX1JF
R0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ21vY2svLispIicpCi0KLSMg
V2hlcmUgdG8gZmluZCB0aGUgc291cmNlIHNlZWQgZmlsZXMuCi1HTU9DS19IX1NFRUQgPSAnaW5j
bHVkZS9nbW9jay9nbW9jay5oJwotR01PQ0tfQUxMX0NDX1NFRUQgPSAnc3JjL2dtb2NrLWFsbC5j
YycKLQotIyBXaGVyZSB0byBwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcy4KLUdURVNUX0hfT1VUUFVU
ID0gJ2d0ZXN0L2d0ZXN0LmgnCi1HTU9DS19IX09VVFBVVCA9ICdnbW9jay9nbW9jay5oJwotR01P
Q0tfR1RFU1RfQUxMX0NDX09VVFBVVCA9ICdnbW9jay1ndGVzdC1hbGwuY2MnCi0KLQotZGVmIEdl
dEdUZXN0Um9vdERpcihnbW9ja19yb290KToKLSAgIiIiUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgR29vZ2xlIFRlc3QuIiIiCi0KLSAgcmV0dXJuIG9zLnBhdGguam9pbihnbW9ja19yb290
LCAnLi4vZ29vZ2xldGVzdCcpCi0KLQotZGVmIFZhbGlkYXRlR01vY2tSb290RGlyKGdtb2NrX3Jv
b3QpOgotICAiIiJNYWtlcyBzdXJlIGdtb2NrX3Jvb3QgcG9pbnRzIHRvIGEgdmFsaWQgZ21vY2sg
cm9vdCBkaXJlY3RvcnkuCi0KLSAgVGhlIGZ1bmN0aW9uIGFib3J0cyB0aGUgcHJvZ3JhbSBvbiBm
YWlsdXJlLgotICAiIiIKLQotICBndGVzdC5WYWxpZGF0ZUdUZXN0Um9vdERpcihHZXRHVGVzdFJv
b3REaXIoZ21vY2tfcm9vdCkpCi0gIGd0ZXN0LlZlcmlmeUZpbGVFeGlzdHMoZ21vY2tfcm9vdCwg
R01PQ0tfSF9TRUVEKQotICBndGVzdC5WZXJpZnlGaWxlRXhpc3RzKGdtb2NrX3Jvb3QsIEdNT0NL
X0FMTF9DQ19TRUVEKQotCi0KLWRlZiBWYWxpZGF0ZU91dHB1dERpcihvdXRwdXRfZGlyKToKLSAg
IiIiTWFrZXMgc3VyZSBvdXRwdXRfZGlyIHBvaW50cyB0byBhIHZhbGlkIG91dHB1dCBkaXJlY3Rv
cnkuCi0KLSAgVGhlIGZ1bmN0aW9uIGFib3J0cyB0aGUgcHJvZ3JhbSBvbiBmYWlsdXJlLgotICAi
IiIKLQotICBndGVzdC5WZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIGd0ZXN0LkdURVNUX0hf
T1VUUFVUKQotICBndGVzdC5WZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIEdNT0NLX0hfT1VU
UFVUKQotICBndGVzdC5WZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIEdNT0NLX0dURVNUX0FM
TF9DQ19PVVRQVVQpCi0KLQotZGVmIEZ1c2VHTW9ja0goZ21vY2tfcm9vdCwgb3V0cHV0X2Rpcik6
Ci0gICIiIlNjYW5zIGZvbGRlciBnbW9ja19yb290IHRvIGdlbmVyYXRlIGdtb2NrL2dtb2NrLmgg
aW4gb3V0cHV0X2Rpci4iIiIKLQotICBvdXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91
dHB1dF9kaXIsIEdNT0NLX0hfT1VUUFVUKSwgJ3cnKQotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXRz
LlNldCgpICAjIEhvbGRzIGFsbCBnbW9jayBoZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KLQotICBk
ZWYgUHJvY2Vzc0ZpbGUoZ21vY2tfaGVhZGVyX3BhdGgpOgotICAgICIiIlByb2Nlc3NlcyB0aGUg
Z2l2ZW4gZ21vY2sgaGVhZGVyIGZpbGUuIiIiCi0KLSAgICAjIFdlIGRvbid0IHByb2Nlc3MgdGhl
IHNhbWUgaGVhZGVyIHR3aWNlLgotICAgIGlmIGdtb2NrX2hlYWRlcl9wYXRoIGluIHByb2Nlc3Nl
ZF9maWxlczoKLSAgICAgIHJldHVybgotCi0gICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChnbW9ja19o
ZWFkZXJfcGF0aCkKLQotICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBnbW9jayBo
ZWFkZXIuCi0gICAgZm9yIGxpbmUgaW4gZmlsZShvcy5wYXRoLmpvaW4oZ21vY2tfcm9vdCwgZ21v
Y2tfaGVhZGVyX3BhdGgpLCAncicpOgotICAgICAgbSA9IElOQ0xVREVfR01PQ0tfRklMRV9SRUdF
WC5tYXRjaChsaW5lKQotICAgICAgaWYgbToKLSAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ21v
Y2svLi4uIicgLSBsZXQncyBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5LgotICAgICAgICBQcm9jZXNz
RmlsZSgnaW5jbHVkZS8nICsgbS5ncm91cCgxKSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIG0gPSBn
dGVzdC5JTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToK
LSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9mb28uaCInLiAgV2UgdHJhbnNsYXRl
IGl0IHRvCi0gICAgICAgICAgIyAiZ3Rlc3QvZ3Rlc3QuaCIsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBm
b28gaXMsIHNpbmNlIGFsbAotICAgICAgICAgICMgZ3Rlc3QgaGVhZGVycyBhcmUgZnVzZWQgaW50
byBndGVzdC9ndGVzdC5oLgotCi0gICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNs
dWRlIGd0ZXN0LmggdHdpY2UuCi0gICAgICAgICAgaWYgbm90IGd0ZXN0LkdURVNUX0hfU0VFRCBp
biBwcm9jZXNzZWRfZmlsZXM6Ci0gICAgICAgICAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0
LkdURVNUX0hfU0VFRCkKLSAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCcjaW5jbHVkZSAi
JXMiXG4nICUgKGd0ZXN0LkdURVNUX0hfT1VUUFVULCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgIyBPdGhlcndpc2Ugd2UgY29weSB0aGUgbGluZSB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dCBm
aWxlLgotICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKGxpbmUpCi0KLSAgUHJvY2Vzc0ZpbGUo
R01PQ0tfSF9TRUVEKQotICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLQotZGVmIEZ1c2VHTW9ja0Fs
bENjVG9GaWxlKGdtb2NrX3Jvb3QsIG91dHB1dF9maWxlKToKLSAgIiIiU2NhbnMgZm9sZGVyIGdt
b2NrX3Jvb3QgdG8gZnVzZSBnbW9jay1hbGwuY2MgaW50byBvdXRwdXRfZmlsZS4iIiIKLQotICBw
cm9jZXNzZWRfZmlsZXMgPSBzZXRzLlNldCgpCi0KLSAgZGVmIFByb2Nlc3NGaWxlKGdtb2NrX3Nv
dXJjZV9maWxlKToKLSAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGdtb2NrIHNvdXJjZSBmaWxl
LiIiIgotCi0gICAgIyBXZSBkb24ndCBwcm9jZXNzIHRoZSBzYW1lICNpbmNsdWRlZCBmaWxlIHR3
aWNlLgotICAgIGlmIGdtb2NrX3NvdXJjZV9maWxlIGluIHByb2Nlc3NlZF9maWxlczoKLSAgICAg
IHJldHVybgotCi0gICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChnbW9ja19zb3VyY2VfZmlsZSkKLQot
ICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBnbW9jayBzb3VyY2UgZmlsZS4KLSAg
ICBmb3IgbGluZSBpbiBmaWxlKG9zLnBhdGguam9pbihnbW9ja19yb290LCBnbW9ja19zb3VyY2Vf
ZmlsZSksICdyJyk6Ci0gICAgICBtID0gSU5DTFVERV9HTU9DS19GSUxFX1JFR0VYLm1hdGNoKGxp
bmUpCi0gICAgICBpZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJnbW9jay9mb28uaCIn
LiAgV2UgdHJlYXQgaXQgYXMgJyNpbmNsdWRlCi0gICAgICAgICMgImdtb2NrL2dtb2NrLmgiJywg
YXMgYWxsIG90aGVyIGdtb2NrIGhlYWRlcnMgYXJlIGJlaW5nIGZ1c2VkCi0gICAgICAgICMgaW50
byBnbW9jay5oIGFuZCBjYW5ub3QgYmUgI2luY2x1ZGVkIGRpcmVjdGx5LgotCi0gICAgICAgICMg
VGhlcmUgaXMgbm8gbmVlZCB0byAjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIgbW9yZSB0aGFuIG9u
Y2UuCi0gICAgICAgIGlmIG5vdCBHTU9DS19IX1NFRUQgaW4gcHJvY2Vzc2VkX2ZpbGVzOgotICAg
ICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoR01PQ0tfSF9TRUVEKQotICAgICAgICAgIG91dHB1
dF9maWxlLndyaXRlKCcjaW5jbHVkZSAiJXMiXG4nICUgKEdNT0NLX0hfT1VUUFVULCkpCi0gICAg
ICBlbHNlOgotICAgICAgICBtID0gZ3Rlc3QuSU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNo
KGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3Qv
Li4uIicuCi0gICAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlIGd0ZXN0Lmgg
YXMgaXQgaGFzIGJlZW4KLSAgICAgICAgICAjICNpbmNsdWRlZCBieSBndGVzdC1hbGwuY2MuCi0g
ICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgIG0gPSBndGVzdC5JTkNMVURF
X1NSQ19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICAgICAgaWYgbToKLSAgICAgICAgICAg
ICMgSXQncyAnI2luY2x1ZGUgInNyYy9mb28iJyAtIGxldCdzIHByb2Nlc3MgaXQgcmVjdXJzaXZl
bHkuCi0gICAgICAgICAgICBQcm9jZXNzRmlsZShtLmdyb3VwKDEpKQotICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0
aGUgb3V0cHV0IGZpbGUuCi0gICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShsaW5lKQotCi0g
IFByb2Nlc3NGaWxlKEdNT0NLX0FMTF9DQ19TRUVEKQotCi0KLWRlZiBGdXNlR01vY2tHVGVzdEFs
bENjKGdtb2NrX3Jvb3QsIG91dHB1dF9kaXIpOgotICAiIiJTY2FucyBmb2xkZXIgZ21vY2tfcm9v
dCB0byBnZW5lcmF0ZSBnbW9jay1ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2Rpci4iIiIKLQotICBv
dXRwdXRfZmlsZSA9IGZpbGUob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdNT0NLX0dURVNUX0FM
TF9DQ19PVVRQVVQpLCAndycpCi0gICMgRmlyc3QsIGZ1c2UgZ3Rlc3QtYWxsLmNjIGludG8gZ21v
Y2stZ3Rlc3QtYWxsLmNjLgotICBndGVzdC5GdXNlR1Rlc3RBbGxDY1RvRmlsZShHZXRHVGVzdFJv
b3REaXIoZ21vY2tfcm9vdCksIG91dHB1dF9maWxlKQotICAjIE5leHQsIGFwcGVuZCBmdXNlZCBn
bW9jay1hbGwuY2MgdG8gZ21vY2stZ3Rlc3QtYWxsLmNjLgotICBGdXNlR01vY2tBbGxDY1RvRmls
ZShnbW9ja19yb290LCBvdXRwdXRfZmlsZSkKLSAgb3V0cHV0X2ZpbGUuY2xvc2UoKQotCi0KLWRl
ZiBGdXNlR01vY2soZ21vY2tfcm9vdCwgb3V0cHV0X2Rpcik6Ci0gICIiIkZ1c2VzIGd0ZXN0Lmgs
IGdtb2NrLmgsIGFuZCBnbW9jay1ndGVzdC1hbGwuaC4iIiIKLQotICBWYWxpZGF0ZUdNb2NrUm9v
dERpcihnbW9ja19yb290KQotICBWYWxpZGF0ZU91dHB1dERpcihvdXRwdXRfZGlyKQotCi0gIGd0
ZXN0LkZ1c2VHVGVzdEgoR2V0R1Rlc3RSb290RGlyKGdtb2NrX3Jvb3QpLCBvdXRwdXRfZGlyKQot
ICBGdXNlR01vY2tIKGdtb2NrX3Jvb3QsIG91dHB1dF9kaXIpCi0gIEZ1c2VHTW9ja0dUZXN0QWxs
Q2MoZ21vY2tfcm9vdCwgb3V0cHV0X2RpcikKLQotCi1kZWYgbWFpbigpOgotICBhcmdjID0gbGVu
KHN5cy5hcmd2KQotICBpZiBhcmdjID09IDI6Ci0gICAgIyBmdXNlX2dtb2NrX2ZpbGVzLnB5IE9V
VFBVVF9ESVIKLSAgICBGdXNlR01vY2soREVGQVVMVF9HTU9DS19ST09UX0RJUiwgc3lzLmFyZ3Zb
MV0pCi0gIGVsaWYgYXJnYyA9PSAzOgotICAgICMgZnVzZV9nbW9ja19maWxlcy5weSBHTU9DS19S
T09UX0RJUiBPVVRQVVRfRElSCi0gICAgRnVzZUdNb2NrKHN5cy5hcmd2WzFdLCBzeXMuYXJndlsy
XSkKLSAgZWxzZToKLSAgICBwcmludCBfX2RvY19fCi0gICAgc3lzLmV4aXQoMSkKLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRv
ci9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2VhMDYzNjUxMGExOGEw
NmU0OTAxMTdlNzE3ZWIxZmRmNTc1ZjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UKKysr
IC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBcGFjaGUgTGljZW5zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lv
biAyLjAsIEphbnVhcnkgMjAwNAotICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzLwotCi0gICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBS
RVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KLQotICAgMS4gRGVmaW5pdGlvbnMuCi0KLSAg
ICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNl
LCByZXByb2R1Y3Rpb24sCi0gICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2Vj
dGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KLQotICAgICAgIkxpY2Vuc29yIiBz
aGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKLSAg
ICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KLQot
ICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBl
bnRpdHkgYW5kIGFsbAotICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29u
dHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgotICAgICAgY29udHJvbCB3aXRoIHRoYXQg
ZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKLSAgICAgICJjb250
cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRo
ZQotICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIg
YnkgY29udHJhY3Qgb3IKLSAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlm
dHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQotICAgICAgb3V0c3RhbmRpbmcgc2hhcmVz
LCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KLQotICAgICAg
IllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0
eQotICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4K
LQotICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3Ig
bWFraW5nIG1vZGlmaWNhdGlvbnMsCi0gICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRv
IHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCi0gICAgICBzb3VyY2UsIGFuZCBj
b25maWd1cmF0aW9uIGZpbGVzLgotCi0gICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55
IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAotICAgICAgdHJhbnNmb3JtYXRpb24gb3Ig
dHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAotICAgICAgbm90IGxp
bWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAot
ICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgotCi0gICAgICAiV29y
ayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBv
cgotICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBh
cyBpbmRpY2F0ZWQgYnkgYQotICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVk
IGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCi0gICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRl
ZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgotCi0gICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hh
bGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0Ci0gICAgICBmb3Jt
LCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hp
Y2ggdGhlCi0gICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRp
b25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCi0gICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUs
IGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcwotICAgICAg
b2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtz
IHRoYXQgcmVtYWluCi0gICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJp
bmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCi0gICAgICB0aGUgV29yayBhbmQgRGVy
aXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgotCi0gICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFu
IGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZwotICAgICAgdGhlIG9yaWdpbmFsIHZl
cnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucwotICAg
ICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRl
bnRpb25hbGx5Ci0gICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0
aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCi0gICAgICBvciBieSBhbiBpbmRpdmlkdWFs
IG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKLSAgICAg
IHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9u
LCAic3VibWl0dGVkIgotICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFs
LCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAotICAgICAgdG8gdGhlIExpY2Vuc29yIG9y
IGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KLSAgICAg
IGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBj
b250cm9sIHN5c3RlbXMsCi0gICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFy
ZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQotICAgICAgTGljZW5zb3IgZm9yIHRo
ZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0Ci0gICAg
ICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9y
IG90aGVyd2lzZQotICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQg
b3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCi0KLSAgICAgICJDb250cmlidXRvciIgc2hh
bGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5Ci0gICAg
ICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBM
aWNlbnNvciBhbmQKLSAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBX
b3JrLgotCi0gICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUg
dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKLSAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmli
dXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKLSAgICAgIHdvcmxkd2lkZSwg
bm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCi0gICAg
ICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3Jr
cyBvZiwKLSAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vu
c2UsIGFuZCBkaXN0cmlidXRlIHRoZQotICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdv
cmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KLQotICAgMy4gR3JhbnQgb2YgUGF0ZW50IExp
Y2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCi0gICAgICB0aGlz
IExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1
YWwsCi0gICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1m
cmVlLCBpcnJldm9jYWJsZQotICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9u
KSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCi0gICAgICB1c2UsIG9mZmVyIHRv
IHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKLSAg
ICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWlt
cyBsaWNlbnNhYmxlCi0gICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2Fy
aWx5IGluZnJpbmdlZCBieSB0aGVpcgotICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5
IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQotICAgICAgd2l0aCB0aGUgV29y
ayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKLSAg
ICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1
ZGluZyBhCi0gICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBh
bGxlZ2luZyB0aGF0IHRoZSBXb3JrCi0gICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0
ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAotICAgICAgb3IgY29udHJpYnV0
b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcwotICAgICAg
Z3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVy
bWluYXRlCi0gICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCi0K
LSAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBj
b3BpZXMgb2YgdGhlCi0gICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBh
bnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKLSAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBT
b3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91Ci0gICAgICBtZWV0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVy
IHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKLSAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEg
Y29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAotCi0gICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55
IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCi0gICAgICAgICAgc3Rh
dGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCi0KLSAgICAgIChjKSBZb3UgbXVz
dCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcwotICAg
ICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVt
YXJrLCBhbmQKLSAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBm
b3JtIG9mIHRoZSBXb3JrLAotICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQg
ZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKLSAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBX
b3JrczsgYW5kCi0KLSAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRl
eHQgZmlsZSBhcyBwYXJ0IG9mIGl0cwotICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkg
RGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKLSAgICAgICAgICBpbmNs
dWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQK
LSAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGlj
ZXMgdGhhdCBkbyBub3QKLSAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJp
dmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKLSAgICAgICAgICBvZiB0aGUgZm9sbG93aW5n
IHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAotICAgICAgICAg
IGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0g
b3IKLSAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBE
ZXJpdmF0aXZlIFdvcmtzOyBvciwKLSAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRl
ZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCi0gICAgICAgICAgd2hlcmV2ZXIgc3Vj
aCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCi0gICAg
ICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBv
bmx5IGFuZAotICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRk
IFlvdXIgb3duIGF0dHJpYnV0aW9uCi0gICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2
ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKLSAgICAgICAgICBvciBhcyBh
biBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKLSAg
ICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBi
ZSBjb25zdHJ1ZWQKLSAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCi0KLSAgICAg
IFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmlj
YXRpb25zIGFuZAotICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGlj
ZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwotICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBv
ciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgotICAgICAgZm9yIGFueSBz
dWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCi0gICAg
ICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNv
bXBsaWVzIHdpdGgKLSAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2Uu
Ci0KLSAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNp
dGx5IHN0YXRlIG90aGVyd2lzZSwKLSAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxs
eSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yawotICAgICAgYnkgWW91IHRvIHRo
ZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKLSAg
ICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRp
b25zLgotICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hh
bGwgc3VwZXJzZWRlIG9yIG1vZGlmeQotICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBs
aWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKLSAgICAgIHdpdGggTGljZW5z
b3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KLQotICAgNi4gVHJhZGVtYXJrcy4gVGhp
cyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQotICAg
ICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2Yg
dGhlIExpY2Vuc29yLAotICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFu
ZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCi0gICAgICBvcmlnaW4gb2YgdGhlIFdv
cmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KLQotICAg
Ny4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yCi0gICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhl
IFdvcmsgKGFuZCBlYWNoCi0gICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0
aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgotICAgICAgaW1wbGllZCwg
aW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlv
bnMKLSAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9y
IEZJVE5FU1MgRk9SIEEKLSAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkg
cmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQotICAgICAgYXBwcm9wcmlhdGVuZXNzIG9m
IHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55Ci0gICAgICBy
aXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0
aGlzIExpY2Vuc2UuCi0KLSAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVu
dCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAotICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNs
dWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCi0gICAgICB1bmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3Ns
eQotICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBh
bnkgQ29udHJpYnV0b3IgYmUKLSAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1
ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKLSAgICAgIGluY2lkZW50YWwsIG9y
IGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQotICAg
ICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkg
dG8gdXNlIHRoZQotICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1h
Z2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAotICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIg
ZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKLSAgICAgIG90aGVyIGNvbW1l
cmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKLSAgICAg
IGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KLQot
ICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSBy
ZWRpc3RyaWJ1dGluZwotICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9m
LCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKLSAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBh
Y2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCi0gICAgICBvciBvdGhl
ciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhp
cwotICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMs
IFlvdSBtYXkgYWN0IG9ubHkKLSAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBz
b2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCi0gICAgICBvZiBhbnkgb3RoZXIgQ29u
dHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCi0gICAgICBkZWZl
bmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkK
LSAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250
cmlidXRvciBieSByZWFzb24KLSAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJh
bnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgotCi0gICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJ
VElPTlMKLQotICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8g
eW91ciB3b3JrLgotCi0gICAgICBUbyBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3
b3JrLCBhdHRhY2ggdGhlIGZvbGxvd2luZwotICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRo
IHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgIltdIgotICAgICAgcmVwbGFjZWQgd2l0
aCB5b3VyIG93biBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKLSAgICAg
IHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJv
cHJpYXRlCi0gICAgICBjb21tZW50IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNv
IHJlY29tbWVuZCB0aGF0IGEKLSAgICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRp
b24gb2YgcHVycG9zZSBiZSBpbmNsdWRlZCBvbiB0aGUKLSAgICAgIHNhbWUgInByaW50ZWQgcGFn
ZSIgYXMgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIGVhc2llcgotICAgICAgaWRlbnRpZmljYXRp
b24gd2l0aGluIHRoaXJkLXBhcnR5IGFyY2hpdmVzLgotCi0gICBDb3B5cmlnaHQgWzIwMDddIE5l
YWwgTm9yd2l0egotICAgUG9ydGlvbnMgQ29weXJpZ2h0IFsyMDA3XSBHb29nbGUgSW5jLgotCi0g
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotCi0gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0KLSAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKLSAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAg
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKLSAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2Ny
aXB0cy9nZW5lcmF0b3IvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmY5
NTk3NGI2MGI1YTRkOTUzOGYwOGViMTNiYjIwNGZiZGM4NjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9y
L1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLQotVGhlIEdvb2dsZSBNb2Nr
IGNsYXNzIGdlbmVyYXRvciBpcyBhbiBhcHBsaWNhdGlvbiB0aGF0IGlzIHBhcnQgb2YgY3BwY2xl
YW4uCi1Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjcHBjbGVhbiwgc2VlIHRoZSBSRUFETUUu
Y3BwY2xlYW4gZmlsZSBvcgotdmlzaXQgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFu
LwotCi1jcHBjbGVhbiByZXF1aXJlcyBQeXRob24gMi4zLjUgb3IgbGF0ZXIuICBJZiB5b3UgZG9u
J3QgaGF2ZSBQeXRob24gaW5zdGFsbGVkCi1vbiB5b3VyIHN5c3RlbSwgeW91IHdpbGwgYWxzbyBu
ZWVkIHRvIGluc3RhbGwgaXQuICBZb3UgY2FuIGRvd25sb2FkIFB5dGhvbgotZnJvbTogIGh0dHA6
Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8KLQotVG8gdXNlIHRoZSBHb29nbGUg
TW9jayBjbGFzcyBnZW5lcmF0b3IsIHlvdSBuZWVkIHRvIGNhbGwgaXQKLW9uIHRoZSBjb21tYW5k
IGxpbmUgcGFzc2luZyB0aGUgaGVhZGVyIGZpbGUgYW5kIGNsYXNzIGZvciB3aGljaCB5b3Ugd2Fu
dAotdG8gZ2VuZXJhdGUgYSBHb29nbGUgTW9jayBjbGFzcy4KLQotTWFrZSBzdXJlIHRvIGluc3Rh
bGwgdGhlIHNjcmlwdHMgc29tZXdoZXJlIGluIHlvdXIgcGF0aC4gIFRoZW4geW91IGNhbgotcnVu
IHRoZSBwcm9ncmFtLgotCi0gIGdtb2NrX2dlbi5weSBoZWFkZXItZmlsZS5oIFtDbGFzc05hbWVd
Li4uCi0KLUlmIG5vIENsYXNzTmFtZXMgYXJlIHNwZWNpZmllZCwgYWxsIGNsYXNzZXMgaW4gdGhl
IGZpbGUgYXJlIGVtaXR0ZWQuCi0KLVRvIGNoYW5nZSB0aGUgaW5kZW50YXRpb24gZnJvbSB0aGUg
ZGVmYXVsdCBvZiAyLCBzZXQgSU5ERU5UIGluCi10aGUgZW52aXJvbm1lbnQuICBGb3IgZXhhbXBs
ZSB0byB1c2UgYW4gaW5kZW50IG9mIDQgc3BhY2VzOgotCi1JTkRFTlQ9NCBnbW9ja19nZW4ucHkg
aGVhZGVyLWZpbGUuaCBDbGFzc05hbWUKLQotVGhpcyB2ZXJzaW9uIHdhcyBtYWRlIGZyb20gU1ZO
IHJldmlzaW9uIDI4MSBpbiB0aGUgY3BwY2xlYW4gcmVwb3NpdG9yeS4KLQotS25vd24gTGltaXRh
dGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi1Ob3QgYWxsIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQg
cHJvcGVybHkuICBGb3IgZXhhbXBsZSwgd2hlbiBtb2NraW5nIHRlbXBsYXRlZAotY2xhc3Nlcywg
dGhlIHRlbXBsYXRlIGluZm9ybWF0aW9uIGlzIGxvc3QuICBZb3Ugd2lsbCBuZWVkIHRvIGFkZCB0
aGUgdGVtcGxhdGUKLWluZm9ybWF0aW9uIG1hbnVhbGx5LgotCi1Ob3QgYWxsIHBlcm11dGF0aW9u
cyBvZiB1c2luZyBtdWx0aXBsZSBwb2ludGVycy9yZWZlcmVuY2VzIHdpbGwgYmUgcmVuZGVyZWQK
LXByb3Blcmx5LiAgVGhlc2Ugd2lsbCBhbHNvIGhhdmUgdG8gYmUgZml4ZWQgbWFudWFsbHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUuY3BwY2xlYW4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUuY3BwY2xlYW4KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NDMxYjYxNzU5MzE5Y2QzNWQ4MGJmZDBhYTc4NDQxYzA5
NjNlN2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FLmNwcGNsZWFuCisrKyAvZGV2L251bGwK
QEAgLTEsMTE1ICswLDAgQEAKLUdvYWw6Ci0tLS0tLQotICBDcHBDbGVhbiBhdHRlbXB0cyB0byBm
aW5kIHByb2JsZW1zIGluIEMrKyBzb3VyY2UgdGhhdCBzbG93IGRldmVsb3BtZW50Ci0gIGluIGxh
cmdlIGNvZGUgYmFzZXMsIGZvciBleGFtcGxlIHZhcmlvdXMgZm9ybXMgb2YgdW51c2VkIGNvZGUu
Ci0gIFVudXNlZCBjb2RlIGNhbiBiZSB1bnVzZWQgZnVuY3Rpb25zLCBtZXRob2RzLCBkYXRhIG1l
bWJlcnMsIHR5cGVzLCBldGMKLSAgdG8gdW5uZWNlc3NhcnkgI2luY2x1ZGUgZGlyZWN0aXZlcy4g
IFVubmVjZXNzYXJ5ICNpbmNsdWRlcyBjYW4gY2F1c2UKLSAgY29uc2lkZXJhYmxlIGV4dHJhIGNv
bXBpbGVzIGluY3JlYXNpbmcgdGhlIGVkaXQtY29tcGlsZS1ydW4gY3ljbGUuCi0KLSAgVGhlIHBy
b2plY3QgaG9tZSBwYWdlIGlzOiAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jcHBjbGVhbi8K
LQotCi1GZWF0dXJlczoKLS0tLS0tLS0tLQotICogRmluZCBhbmQgcHJpbnQgQysrIGxhbmd1YWdl
IGNvbnN0cnVjdHM6IGNsYXNzZXMsIG1ldGhvZHMsIGZ1bmN0aW9ucywgZXRjLgotICogRmluZCBj
bGFzc2VzIHdpdGggdmlydHVhbCBtZXRob2RzLCBubyB2aXJ0dWFsIGRlc3RydWN0b3IsIGFuZCBu
byBiYXNlcwotICogRmluZCBnbG9iYWwvc3RhdGljIGRhdGEgdGhhdCBhcmUgcG90ZW50aWFsIHBy
b2JsZW1zIHdoZW4gdXNpbmcgdGhyZWFkcwotICogVW5uZWNlc3NhcnkgZm9yd2FyZCBjbGFzcyBk
ZWNsYXJhdGlvbnMKLSAqIFVubmVjZXNzYXJ5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucwotICogVW5k
ZWNsYXJlZCBmdW5jdGlvbiBkZWZpbml0aW9ucwotICogKHBsYW5uZWQpIEZpbmQgdW5uZWNlc3Nh
cnkgaGVhZGVyIGZpbGVzICNpbmNsdWRlZAotICAgLSBObyBkaXJlY3QgcmVmZXJlbmNlIHRvIGFu
eXRoaW5nIGluIHRoZSBoZWFkZXIKLSAgIC0gSGVhZGVyIGlzIHVubmVjZXNzYXJ5IGlmIGNsYXNz
ZXMgd2VyZSBmb3J3YXJkIGRlY2xhcmVkIGluc3RlYWQKLSAqIChwbGFubmVkKSBTb3VyY2UgZmls
ZXMgdGhhdCByZWZlcmVuY2UgaGVhZGVycyBub3QgZGlyZWN0bHkgI2luY2x1ZGVkLAotICAgaWUs
IGZpbGVzIHRoYXQgcmVseSBvbiBhIHRyYW5zaXRpdmUgI2luY2x1ZGUgZnJvbSBhbm90aGVyIGhl
YWRlcgotICogKHBsYW5uZWQpIFVudXNlZCBtZW1iZXJzIChwcml2YXRlLCBwcm90ZWN0ZWQsICYg
cHVibGljKSBtZXRob2RzIGFuZCBkYXRhCi0gKiAocGxhbm5lZCkgU3RvcmUgQVNUIGluIGEgU1FM
IGRhdGFiYXNlIHNvIHJlbGF0aW9uc2hpcHMgY2FuIGJlIHF1ZXJpZWQKLQotQVNUIGlzIEFic3Ry
YWN0IFN5bnRheCBUcmVlLCBhIHJlcHJlc2VudGF0aW9uIG9mIHBhcnNlZCBzb3VyY2UgY29kZS4K
LWh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWJzdHJhY3Rfc3ludGF4X3RyZWUKLQotCi1T
eXN0ZW0gUmVxdWlyZW1lbnRzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFB5dGhvbiAyLjQg
b3IgbGF0ZXIgKDIuMyBwcm9iYWJseSB3b3JrcyB0b28pCi0gKiBXb3JrcyBvbiBXaW5kb3dzICh1
bnRlc3RlZCksIE1hYyBPUyBYLCBhbmQgVW5peAotCi0KLUhvdyB0byBSdW46Ci0tLS0tLS0tLS0t
LQotICBGb3IgYWxsIGV4YW1wbGVzLCBpdCBpcyBhc3N1bWVkIHRoYXQgY3BwY2xlYW4gcmVzaWRl
cyBpbiBhIGRpcmVjdG9yeSBjYWxsZWQKLSAgL2NwcGNsZWFuLgotCi0gIFRvIHByaW50IHdhcm5p
bmdzIGZvciBjbGFzc2VzIHdpdGggdmlydHVhbCBtZXRob2RzLCBubyB2aXJ0dWFsIGRlc3RydWN0
b3IgYW5kCi0gIG5vIGJhc2UgY2xhc3NlczoKLQotICAgICAgL2NwcGNsZWFuL3J1bi5zaCBub252
aXJ0dWFsX2R0b3JzLnB5IGZpbGUxLmggZmlsZTIuaCBmaWxlMy5jYyAuLi4KLQotICBUbyBwcmlu
dCBhbGwgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGhlYWRlciBmaWxlKHMpOgotCi0gICAgICAv
Y3BwY2xlYW4vcnVuLnNoIGZ1bmN0aW9ucy5weSBmaWxlMS5oIGZpbGUyLmggLi4uCi0KLSAgQWxs
IHRoZSBjb21tYW5kcyB0YWtlIG11bHRpcGxlIGZpbGVzIG9uIHRoZSBjb21tYW5kIGxpbmUuICBP
dGhlciBwcm9ncmFtcwotICBpbmNsdWRlOiBmaW5kX3dhcm5pbmdzLCBoZWFkZXJzLCBtZXRob2Rz
LCBhbmQgdHlwZXMuICBTb21lIG90aGVyIHByb2dyYW1zCi0gIGFyZSBhdmFpbGFibGUsIGJ1dCB1
c2VkIHByaW1hcmlseSBmb3IgZGVidWdnaW5nLgotCi0gIHJ1bi5zaCBpcyBhIHNpbXBsZSB3cmFw
cGVyIHRoYXQgc2V0cyBQWVRIT05QQVRIIHRvIC9jcHBjbGVhbiBhbmQgdGhlbgotICBydW5zIHRo
ZSBwcm9ncmFtIGluIC9jcHBjbGVhbi9jcHAvUFJPR1JBTS5weS4gIFRoZXJlIGlzIGN1cnJlbnRs
eQotICBubyBlcXVpdmFsZW50IGZvciBXaW5kb3dzLiAgQ29udHJpYnV0aW9ucyBmb3IgYSBydW4u
YmF0IGZpbGUKLSAgd291bGQgYmUgZ3JlYXRseSBhcHByZWNpYXRlZC4KLQotCi1Ib3cgdG8gQ29u
ZmlndXJlOgotLS0tLS0tLS0tLS0tLS0tLS0KLSAgWW91IGNhbiBhZGQgYSBzaXRlaGVhZGVycy5w
eSBmaWxlIGluIC9jcHBjbGVhbi9jcHAgdG8gY29uZmlndXJlIHdoZXJlCi0gIHRvIGxvb2sgZm9y
IG90aGVyIGhlYWRlcnMgKHR5cGljYWxseSAtSSBvcHRpb25zIHBhc3NlZCB0byBhIGNvbXBpbGVy
KS4KLSAgQ3VycmVudGx5IHR3byB2YWx1ZXMgYXJlIHN1cHBvcnRlZDogIF9UUkFOU0lUSVZFIGFu
ZCBHZXRJbmNsdWRlRGlycy4KLSAgX1RSQU5TSVRJVkUgc2hvdWxkIGJlIHNldCB0byBhIGJvb2xl
YW4gdmFsdWUgKFRydWUgb3IgRmFsc2UpIGluZGljYXRpbmcKLSAgd2hldGhlciB0byB0cmFuc2l0
aXZlbHkgcHJvY2VzcyBhbGwgaGVhZGVyIGZpbGVzLiAgVGhlIGRlZmF1bHQgaXMgRmFsc2UuCi0K
LSAgR2V0SW5jbHVkZURpcnMgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc2luZ2xlIGFyZ3Vt
ZW50IGFuZCByZXR1cm5zCi0gIGEgc2VxdWVuY2Ugb2YgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZS4g
IFRoaXMgY2FuIGJlIGEgZ2VuZXJhdG9yIG9yCi0gIHJldHVybiBhIHN0YXRpYyBsaXN0LgotCi0g
ICAgICBkZWYgR2V0SW5jbHVkZURpcnMoZmlsZW5hbWUpOgotICAgICAgICAgIHJldHVybiBbJy9z
b21lL3BhdGgvd2l0aC9vdGhlci9oZWFkZXJzJ10KLQotICAgICAgIyBIZXJlIGlzIGEgbW9yZSBj
b21wbGljYXRlZCBleGFtcGxlLgotICAgICAgZGVmIEdldEluY2x1ZGVEaXJzKGZpbGVuYW1lKToK
LSAgICAgICAgICB5aWVsZCAnL3BhdGgxJwotICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbign
L3BhdGgyJywgb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKSkKLSAgICAgICAgICB5aWVsZCAnL3Bh
dGgzJwotCi0KLUhvdyB0byBUZXN0OgotLS0tLS0tLS0tLS0tCi0gIEZvciBhbGwgZXhhbXBsZXMs
IGl0IGlzIGFzc3VtZWQgdGhhdCBjcHBjbGVhbiByZXNpZGVzIGluIGEgZGlyZWN0b3J5IGNhbGxl
ZAotICAvY3BwY2xlYW4uICBUaGUgdGVzdHMgcmVxdWlyZQotCi0gIGNkIC9jcHBjbGVhbgotICBt
YWtlIHRlc3QKLSAgIyBUbyBnZW5lcmF0ZSBleHBlY3RlZCByZXN1bHRzIGFmdGVyIGEgY2hhbmdl
OgotICBtYWtlIGV4cGVjdGVkCi0KLQotQ3VycmVudCBTdGF0dXM6Ci0tLS0tLS0tLS0tLS0tLS0K
LSAgVGhlIHBhcnNlciB3b3JrcyBwcmV0dHkgd2VsbCBmb3IgaGVhZGVyIGZpbGVzLCBwYXJzaW5n
IGFib3V0IDk5JSBvZiBHb29nbGUncwotICBoZWFkZXIgZmlsZXMuICBBbnl0aGluZyB3aGljaCBp
bnNwZWN0cyBzdHJ1Y3R1cmUgb2YgQysrIHNvdXJjZSBmaWxlcyBzaG91bGQKLSAgd29yayByZWFz
b25hYmx5IHdlbGwuICBGdW5jdGlvbiBib2RpZXMgYXJlIG5vdCB0cmFuc2Zvcm1lZCB0byBhbiBB
U1QsCi0gIGJ1dCBsZWZ0IGFzIHRva2Vucy4gIE11Y2ggd29yayBpcyBzdGlsbCBuZWVkZWQgb24g
ZmluZGluZyB1bnVzZWQgaGVhZGVyIGZpbGVzCi0gIGFuZCBzdG9yaW5nIGFuIEFTVCBpbiBhIGRh
dGFiYXNlLgotCi0KLU5vbi1nb2FsczoKLS0tLS0tLS0tLS0KLSAqIFBhcnNpbmcgYWxsIHZhbGlk
IEMrKyBzb3VyY2UKLSAqIEhhbmRsaW5nIGludmFsaWQgQysrIHNvdXJjZSBncmFjZWZ1bGx5Ci0g
KiBDb21waWxpbmcgdG8gbWFjaGluZSBjb2RlIChvciBhbnl0aGluZyBiZXlvbmQgYW4gQVNUKQot
Ci0KLUNvbnRhY3Q6Ci0tLS0tLS0tLQotICBJZiB5b3UgdXNlZCBjcHBjbGVhbiwgSSB3b3VsZCBs
b3ZlIHRvIGhlYXIgYWJvdXQgeW91ciBleHBlcmllbmNlcwotICBjcHBjbGVhbkBnb29nbGVncm91
cHMuY29tLiAgRXZlbiBpZiB5b3UgZG9uJ3QgdXNlIGNwcGNsZWFuLCBJJ2QgbGlrZSB0bwotICBo
ZWFyIGZyb20geW91LiAgOi0pICAoWW91IGNhbiBjb250YWN0IG1lIGRpcmVjdGx5IGF0OiAgbm5v
cndpdHpAZ21haWwuY29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0
b3IvY3BwL2FzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9hc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDExY2JlOTEyNmFmNWMyNGU2OTJiYjMxNTU0
NTc2Y2FlOTI3NTYwY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2FzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDE3MzMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA3IE5lYWwgTm9yd2l0egotIyBQb3J0aW9ucyBDb3B5cmlnaHQgMjAwNyBHb29nbGUg
SW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKLSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAotIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotIiIi
R2VuZXJhdGUgYW4gQWJzdHJhY3QgU3ludGF4IFRyZWUgKEFTVCkgZm9yIEMrKy4iIiIKLQotX19h
dXRob3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29tIChOZWFsIE5vcndpdHopJwotCi0KLSMgVE9E
TzoKLSMgICogVG9rZW5zIHNob3VsZCBuZXZlciBiZSBleHBvcnRlZCwgbmVlZCB0byBjb252ZXJ0
IHRvIE5vZGVzCi0jICAgIChyZXR1cm4gdHlwZXMsIHBhcmFtZXRlcnMsIGV0Yy4pCi0jICAqIEhh
bmRsZSBzdGF0aWMgY2xhc3MgZGF0YSBmb3IgdGVtcGxhdGl6ZWQgY2xhc3NlcwotIyAgKiBIYW5k
bGUgY2FzdHMgKGJvdGggQysrIGFuZCBDLXN0eWxlKQotIyAgKiBIYW5kbGUgY29uZGl0aW9ucyBh
bmQgbG9vcHMgKGlmL2Vsc2UsIHN3aXRjaCwgZm9yLCB3aGlsZS9kbykKLSMKLSMgVE9ETyBtdWNo
LCBtdWNoIGxhdGVyOgotIyAgKiBIYW5kbGUgI2RlZmluZQotIyAgKiBleGNlcHRpb25zCi0KLQot
dHJ5OgotICAgICMgUHl0aG9uIDMueAotICAgIGltcG9ydCBidWlsdGlucwotZXhjZXB0IEltcG9y
dEVycm9yOgotICAgICMgUHl0aG9uIDIueAotICAgIGltcG9ydCBfX2J1aWx0aW5fXyBhcyBidWls
dGlucwotCi1pbXBvcnQgc3lzCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20gY3BwIGltcG9ydCBr
ZXl3b3JkcwotZnJvbSBjcHAgaW1wb3J0IHRva2VuaXplCi1mcm9tIGNwcCBpbXBvcnQgdXRpbHMK
LQotCi1pZiBub3QgaGFzYXR0cihidWlsdGlucywgJ3JldmVyc2VkJyk6Ci0gICAgIyBTdXBwb3J0
IFB5dGhvbiAyLjMgYW5kIGVhcmxpZXIuCi0gICAgZGVmIHJldmVyc2VkKHNlcSk6Ci0gICAgICAg
IGZvciBpIGluIHJhbmdlKGxlbihzZXEpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgICB5aWVsZCBz
ZXFbaV0KLQotaWYgbm90IGhhc2F0dHIoYnVpbHRpbnMsICduZXh0Jyk6Ci0gICAgIyBTdXBwb3J0
IFB5dGhvbiAyLjUgYW5kIGVhcmxpZXIuCi0gICAgZGVmIG5leHQob2JqKToKLSAgICAgICAgcmV0
dXJuIG9iai5uZXh0KCkKLQotCi1WSVNJQklMSVRZX1BVQkxJQywgVklTSUJJTElUWV9QUk9URUNU
RUQsIFZJU0lCSUxJVFlfUFJJVkFURSA9IHJhbmdlKDMpCi0KLUZVTkNUSU9OX05PTkUgPSAweDAw
Ci1GVU5DVElPTl9DT05TVCA9IDB4MDEKLUZVTkNUSU9OX1ZJUlRVQUwgPSAweDAyCi1GVU5DVElP
Tl9QVVJFX1ZJUlRVQUwgPSAweDA0Ci1GVU5DVElPTl9DVE9SID0gMHgwOAotRlVOQ1RJT05fRFRP
UiA9IDB4MTAKLUZVTkNUSU9OX0FUVFJJQlVURSA9IDB4MjAKLUZVTkNUSU9OX1VOS05PV05fQU5O
T1RBVElPTiA9IDB4NDAKLUZVTkNUSU9OX1RIUk9XID0gMHg4MAotRlVOQ1RJT05fT1ZFUlJJREUg
PSAweDEwMAotCi0iIiIKLVRoZXNlIGFyZSBjdXJyZW50bHkgdW51c2VkLiAgU2hvdWxkIHJlYWxs
eSBoYW5kbGUgdGhlc2UgcHJvcGVybHkgYXQgc29tZSBwb2ludC4KLQotVFlQRV9NT0RJRklFUl9J
TkxJTkUgICA9IDB4MDEwMDAwCi1UWVBFX01PRElGSUVSX0VYVEVSTiAgID0gMHgwMjAwMDAKLVRZ
UEVfTU9ESUZJRVJfU1RBVElDICAgPSAweDA0MDAwMAotVFlQRV9NT0RJRklFUl9DT05TVCAgICA9
IDB4MDgwMDAwCi1UWVBFX01PRElGSUVSX1JFR0lTVEVSID0gMHgxMDAwMDAKLVRZUEVfTU9ESUZJ
RVJfVk9MQVRJTEUgPSAweDIwMDAwMAotVFlQRV9NT0RJRklFUl9NVVRBQkxFICA9IDB4NDAwMDAw
Ci0KLVRZUEVfTU9ESUZJRVJfTUFQID0gewotICAgICdpbmxpbmUnOiBUWVBFX01PRElGSUVSX0lO
TElORSwKLSAgICAnZXh0ZXJuJzogVFlQRV9NT0RJRklFUl9FWFRFUk4sCi0gICAgJ3N0YXRpYyc6
IFRZUEVfTU9ESUZJRVJfU1RBVElDLAotICAgICdjb25zdCc6IFRZUEVfTU9ESUZJRVJfQ09OU1Qs
Ci0gICAgJ3JlZ2lzdGVyJzogVFlQRV9NT0RJRklFUl9SRUdJU1RFUiwKLSAgICAndm9sYXRpbGUn
OiBUWVBFX01PRElGSUVSX1ZPTEFUSUxFLAotICAgICdtdXRhYmxlJzogVFlQRV9NT0RJRklFUl9N
VVRBQkxFLAotICAgIH0KLSIiIgotCi1fSU5URVJOQUxfVE9LRU4gPSAnaW50ZXJuYWwnCi1fTkFN
RVNQQUNFX1BPUCA9ICducy1wb3AnCi0KLQotIyBUT0RPKG5ub3J3aXR6KTogdXNlIHRoaXMgYXMg
YSBzaW5nbGV0b24gZm9yIHRlbXBsYXRlZF90eXBlcywgZXRjCi0jIHdoZXJlIHdlIGRvbid0IHdh
bnQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGRpY3QgZWFjaCB0aW1lLiAgSXQgaXMgYWxzbyBjb25z
dC4KLWNsYXNzIF9OdWxsRGljdChvYmplY3QpOgotICAgIF9fY29udGFpbnNfXyA9IGxhbWJkYSBz
ZWxmOiBGYWxzZQotICAgIGtleXMgPSB2YWx1ZXMgPSBpdGVtcyA9IGl0ZXJrZXlzID0gaXRlcnZh
bHVlcyA9IGl0ZXJpdGVtcyA9IGxhbWJkYSBzZWxmOiAoKQotCi0KLSMgVE9ETyhubm9yd2l0eik6
IG1vdmUgQVNUIG5vZGVzIGludG8gYSBzZXBhcmF0ZSBtb2R1bGUuCi1jbGFzcyBOb2RlKG9iamVj
dCk6Ci0gICAgIiIiQmFzZSBBU1Qgbm9kZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
dGFydCwgZW5kKToKLSAgICAgICAgc2VsZi5zdGFydCA9IHN0YXJ0Ci0gICAgICAgIHNlbGYuZW5k
ID0gZW5kCi0KLSAgICBkZWYgSXNEZWNsYXJhdGlvbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJu
cyBib29sIGlmIHRoaXMgbm9kZSBpcyBhIGRlY2xhcmF0aW9uLiIiIgotICAgICAgICByZXR1cm4g
RmFsc2UKLQotICAgIGRlZiBJc0RlZmluaXRpb24oc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMg
Ym9vbCBpZiB0aGlzIG5vZGUgaXMgYSBkZWZpbml0aW9uLiIiIgotICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYm9v
bCBpZiB0aGlzIG5vZGUgZXhwb3J0YWJsZSBmcm9tIGEgaGVhZGVyIGZpbGUuIiIiCi0gICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgotICAgICAgICAi
IiJEb2VzIHRoaXMgQVNUIG5vZGUgcmVxdWlyZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbm9kZSBw
YXNzZWQgaW4/IiIiCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIFhYWF9fc3RyX18o
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18u
X19uYW1lX18sICcnKQotCi0gICAgZGVmIF9TdHJpbmdIZWxwZXIoc2VsZiwgbmFtZSwgc3VmZml4
KToKLSAgICAgICAgaWYgbm90IHV0aWxzLkRFQlVHOgotICAgICAgICAgICAgcmV0dXJuICclcygl
cyknICUgKG5hbWUsIHN1ZmZpeCkKLSAgICAgICAgcmV0dXJuICclcyglZCwgJWQsICVzKScgJSAo
bmFtZSwgc2VsZi5zdGFydCwgc2VsZi5lbmQsIHN1ZmZpeCkKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmKQotCi0KLWNsYXNzIERlZmluZShOb2RlKToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgZGVmaW5pdGlvbik6Ci0g
ICAgICAgIE5vZGUuX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5uYW1l
ID0gbmFtZQotICAgICAgICBzZWxmLmRlZmluaXRpb24gPSBkZWZpbml0aW9uCi0KLSAgICBkZWYg
X19zdHJfXyhzZWxmKToKLSAgICAgICAgdmFsdWUgPSAnJXMgJXMnICUgKHNlbGYubmFtZSwgc2Vs
Zi5kZWZpbml0aW9uKQotICAgICAgICByZXR1cm4gc2VsZi5fU3RyaW5nSGVscGVyKHNlbGYuX19j
bGFzc19fLl9fbmFtZV9fLCB2YWx1ZSkKLQotCi1jbGFzcyBJbmNsdWRlKE5vZGUpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBmaWxlbmFtZSwgc3lzdGVtKToKLSAgICAgICAg
Tm9kZS5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kKQotICAgICAgICBzZWxmLmZpbGVuYW1lID0g
ZmlsZW5hbWUKLSAgICAgICAgc2VsZi5zeXN0ZW0gPSBzeXN0ZW0KLQotICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgotICAgICAgICBmbXQgPSAnIiVzIicKLSAgICAgICAgaWYgc2VsZi5zeXN0ZW06Ci0g
ICAgICAgICAgICBmbXQgPSAnPCVzPicKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBl
cihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgZm10ICUgc2VsZi5maWxlbmFtZSkKLQotCi1jbGFz
cyBHb3RvKE5vZGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBsYWJlbCk6
Ci0gICAgICAgIE5vZGUuX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5s
YWJlbCA9IGxhYmVsCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYubGFiZWwp
KQotCi0KLWNsYXNzIEV4cHIoTm9kZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBl
bmQsIGV4cHIpOgotICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCi0gICAg
ICAgIHNlbGYuZXhwciA9IGV4cHIKLQotICAgIGRlZiBSZXF1aXJlcyhzZWxmLCBub2RlKToKLSAg
ICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaW1wbC4KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYuZXhwcikpCi0KLQotY2xhc3MgUmV0dXJu
KEV4cHIpOgotICAgIHBhc3MKLQotCi1jbGFzcyBEZWxldGUoRXhwcik6Ci0gICAgcGFzcwotCi0K
LWNsYXNzIEZyaWVuZChFeHByKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwg
ZXhwciwgbmFtZXNwYWNlKToKLSAgICAgICAgRXhwci5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5k
LCBleHByKQotICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZVs6XQotCi0KLWNsYXNz
IFVzaW5nKE5vZGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lcyk6
Ci0gICAgICAgIE5vZGUuX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5u
YW1lcyA9IG5hbWVzCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYubmFtZXMp
KQotCi0KLWNsYXNzIFBhcmFtZXRlcihOb2RlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Rh
cnQsIGVuZCwgbmFtZSwgcGFyYW1ldGVyX3R5cGUsIGRlZmF1bHQpOgotICAgICAgICBOb2RlLl9f
aW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAg
ICAgc2VsZi50eXBlID0gcGFyYW1ldGVyX3R5cGUKLSAgICAgICAgc2VsZi5kZWZhdWx0ID0gZGVm
YXVsdAotCi0gICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgotICAgICAgICAjIFRPRE8obm5v
cndpdHopOiBoYW5kbGUgbmFtZXNwYWNlcywgZXRjLgotICAgICAgICByZXR1cm4gc2VsZi50eXBl
Lm5hbWUgPT0gbm9kZS5uYW1lCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgbmFt
ZSA9IHN0cihzZWxmLnR5cGUpCi0gICAgICAgIHN1ZmZpeCA9ICclcyAlcycgJSAobmFtZSwgc2Vs
Zi5uYW1lKQotICAgICAgICBpZiBzZWxmLmRlZmF1bHQ6Ci0gICAgICAgICAgICBzdWZmaXggKz0g
JyA9ICcgKyAnJy5qb2luKFtkLm5hbWUgZm9yIGQgaW4gc2VsZi5kZWZhdWx0XSkKLSAgICAgICAg
cmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VmZml4
KQotCi0KLWNsYXNzIF9HZW5lcmljRGVjbGFyYXRpb24oTm9kZSk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIG5hbWVzcGFjZSk6Ci0gICAgICAgIE5vZGUuX19pbml0
X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBz
ZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZVs6XQotCi0gICAgZGVmIEZ1bGxOYW1lKHNlbGYpOgot
ICAgICAgICBwcmVmaXggPSAnJwotICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSBhbmQgc2VsZi5u
YW1lc3BhY2VbLTFdOgotICAgICAgICAgICAgcHJlZml4ID0gJzo6Jy5qb2luKHNlbGYubmFtZXNw
YWNlKSArICc6OicKLSAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlbGYubmFtZQotCi0gICAgZGVm
IF9UeXBlU3RyaW5nSGVscGVyKHNlbGYsIHN1ZmZpeCk6Ci0gICAgICAgIGlmIHNlbGYubmFtZXNw
YWNlOgotICAgICAgICAgICAgbmFtZXMgPSBbbiBvciAnPGFub255bW91cz4nIGZvciBuIGluIHNl
bGYubmFtZXNwYWNlXQotICAgICAgICAgICAgc3VmZml4ICs9ICcgaW4gJyArICc6Oicuam9pbihu
YW1lcykKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5f
X25hbWVfXywgc3VmZml4KQotCi0KLSMgVE9ETyhubm9yd2l0eik6IG1lcmdlIHdpdGggUGFyYW1l
dGVyIGluIHNvbWUgd2F5PwotY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbihfR2VuZXJpY0RlY2xh
cmF0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgdmFyX3R5
cGUsIGluaXRpYWxfdmFsdWUsIG5hbWVzcGFjZSk6Ci0gICAgICAgIF9HZW5lcmljRGVjbGFyYXRp
b24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNlKQotICAgICAgICBz
ZWxmLnR5cGUgPSB2YXJfdHlwZQotICAgICAgICBzZWxmLmluaXRpYWxfdmFsdWUgPSBpbml0aWFs
X3ZhbHVlCi0KLSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgICMgVE9ETyhu
bm9yd2l0eik6IGhhbmRsZSBuYW1lc3BhY2VzLCBldGMuCi0gICAgICAgIHJldHVybiBzZWxmLnR5
cGUubmFtZSA9PSBub2RlLm5hbWUKLQotICAgIGRlZiBUb1N0cmluZyhzZWxmKToKLSAgICAgICAg
IiIiUmV0dXJuIGEgc3RyaW5nIHRoYXQgdHJpZXMgdG8gcmVjb25zdGl0dXRlIHRoZSB2YXJpYWJs
ZSBkZWNsLiIiIgotICAgICAgICBzdWZmaXggPSAnJXMgJXMnICUgKHNlbGYudHlwZSwgc2VsZi5u
YW1lKQotICAgICAgICBpZiBzZWxmLmluaXRpYWxfdmFsdWU6Ci0gICAgICAgICAgICBzdWZmaXgg
Kz0gJyA9ICcgKyBzZWxmLmluaXRpYWxfdmFsdWUKLSAgICAgICAgcmV0dXJuIHN1ZmZpeAotCi0g
ICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxwZXIo
c2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuVG9TdHJpbmcoKSkKLQotCi1jbGFzcyBUeXBl
ZGVmKF9HZW5lcmljRGVjbGFyYXRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwg
ZW5kLCBuYW1lLCBhbGlhcywgbmFtZXNwYWNlKToKLSAgICAgICAgX0dlbmVyaWNEZWNsYXJhdGlv
bi5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBuYW1lc3BhY2UpCi0gICAgICAgIHNl
bGYuYWxpYXMgPSBhbGlhcwotCi0gICAgZGVmIElzRGVmaW5pdGlvbihzZWxmKToKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBUcnVlCi0KLSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgICMgVE9ETyhu
bm9yd2l0eik6IGhhbmRsZSBuYW1lc3BhY2VzLCBldGMuCi0gICAgICAgIG5hbWUgPSBub2RlLm5h
bWUKLSAgICAgICAgZm9yIHRva2VuIGluIHNlbGYuYWxpYXM6Ci0gICAgICAgICAgICBpZiB0b2tl
biBpcyBub3QgTm9uZSBhbmQgbmFtZSA9PSB0b2tlbi5uYW1lOgotICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6
Ci0gICAgICAgIHN1ZmZpeCA9ICclcywgJXMnICUgKHNlbGYubmFtZSwgc2VsZi5hbGlhcykKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX1R5cGVTdHJpbmdIZWxwZXIoc3VmZml4KQotCi0KLWNsYXNzIF9O
ZXN0ZWRUeXBlKF9HZW5lcmljRGVjbGFyYXRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
dGFydCwgZW5kLCBuYW1lLCBmaWVsZHMsIG5hbWVzcGFjZSk6Ci0gICAgICAgIF9HZW5lcmljRGVj
bGFyYXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNlKQotICAg
ICAgICBzZWxmLmZpZWxkcyA9IGZpZWxkcwotCi0gICAgZGVmIElzRGVmaW5pdGlvbihzZWxmKToK
LSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgc3VmZml4
ID0gJyVzLCB7JXN9JyAlIChzZWxmLm5hbWUsIHNlbGYuZmllbGRzKQotICAgICAgICByZXR1cm4g
c2VsZi5fVHlwZVN0cmluZ0hlbHBlcihzdWZmaXgpCi0KLQotY2xhc3MgVW5pb24oX05lc3RlZFR5
cGUpOgotICAgIHBhc3MKLQotCi1jbGFzcyBFbnVtKF9OZXN0ZWRUeXBlKToKLSAgICBwYXNzCi0K
LQotY2xhc3MgQ2xhc3MoX0dlbmVyaWNEZWNsYXJhdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHN0YXJ0LCBlbmQsIG5hbWUsIGJhc2VzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksIG5hbWVz
cGFjZSk6Ci0gICAgICAgIF9HZW5lcmljRGVjbGFyYXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQs
IGVuZCwgbmFtZSwgbmFtZXNwYWNlKQotICAgICAgICBzZWxmLmJhc2VzID0gYmFzZXMKLSAgICAg
ICAgc2VsZi5ib2R5ID0gYm9keQotICAgICAgICBzZWxmLnRlbXBsYXRlZF90eXBlcyA9IHRlbXBs
YXRlZF90eXBlcwotCi0gICAgZGVmIElzRGVjbGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLmJhc2VzIGlzIE5vbmUgYW5kIHNlbGYuYm9keSBpcyBOb25lCi0KLSAgICBkZWYgSXNE
ZWZpbml0aW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuSXNEZWNsYXJhdGlvbigp
Ci0KLSAgICBkZWYgSXNFeHBvcnRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYu
SXNEZWNsYXJhdGlvbigpCi0KLSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAg
ICMgVE9ETyhubm9yd2l0eik6IGhhbmRsZSBuYW1lc3BhY2VzLCBldGMuCi0gICAgICAgIGlmIHNl
bGYuYmFzZXM6Ci0gICAgICAgICAgICBmb3IgdG9rZW5fbGlzdCBpbiBzZWxmLmJhc2VzOgotICAg
ICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IGJhc2VzIGFyZSB0b2tlbnMsIGRvIG5hbWUg
Y29tcGFyaXNpb24uCi0gICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuX2xpc3Q6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gbm9kZS5uYW1lOgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogc2Vh
cmNoIGluIGJvZHkgdG9vLgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgotICAgICAgICBuYW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGlmIHNlbGYudGVtcGxh
dGVkX3R5cGVzOgotICAgICAgICAgICAgbmFtZSArPSAnPCVzPicgJSBzZWxmLnRlbXBsYXRlZF90
eXBlcwotICAgICAgICBzdWZmaXggPSAnJXMsICVzLCAlcycgJSAobmFtZSwgc2VsZi5iYXNlcywg
c2VsZi5ib2R5KQotICAgICAgICByZXR1cm4gc2VsZi5fVHlwZVN0cmluZ0hlbHBlcihzdWZmaXgp
Ci0KLQotY2xhc3MgU3RydWN0KENsYXNzKToKLSAgICBwYXNzCi0KLQotY2xhc3MgRnVuY3Rpb24o
X0dlbmVyaWNEZWNsYXJhdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQs
IG5hbWUsIHJldHVybl90eXBlLCBwYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICBtb2RpZmll
cnMsIHRlbXBsYXRlZF90eXBlcywgYm9keSwgbmFtZXNwYWNlKToKLSAgICAgICAgX0dlbmVyaWNE
ZWNsYXJhdGlvbi5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBuYW1lc3BhY2UpCi0g
ICAgICAgIGNvbnZlcnRlciA9IFR5cGVDb252ZXJ0ZXIobmFtZXNwYWNlKQotICAgICAgICBzZWxm
LnJldHVybl90eXBlID0gY29udmVydGVyLkNyZWF0ZVJldHVyblR5cGUocmV0dXJuX3R5cGUpCi0g
ICAgICAgIHNlbGYucGFyYW1ldGVycyA9IGNvbnZlcnRlci5Ub1BhcmFtZXRlcnMocGFyYW1ldGVy
cykKLSAgICAgICAgc2VsZi5tb2RpZmllcnMgPSBtb2RpZmllcnMKLSAgICAgICAgc2VsZi5ib2R5
ID0gYm9keQotICAgICAgICBzZWxmLnRlbXBsYXRlZF90eXBlcyA9IHRlbXBsYXRlZF90eXBlcwot
Ci0gICAgZGVmIElzRGVjbGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmJvZHkg
aXMgTm9uZQotCi0gICAgZGVmIElzRGVmaW5pdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuYm9keSBpcyBub3QgTm9uZQotCi0gICAgZGVmIElzRXhwb3J0YWJsZShzZWxmKToKLSAgICAg
ICAgaWYgc2VsZi5yZXR1cm5fdHlwZSBhbmQgJ3N0YXRpYycgaW4gc2VsZi5yZXR1cm5fdHlwZS5t
b2RpZmllcnM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIE5vbmUg
bm90IGluIHNlbGYubmFtZXNwYWNlCi0KLSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0g
ICAgICAgIGlmIHNlbGYucGFyYW1ldGVyczoKLSAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IHBhcmFtZXRlcnMgYXJlIHRva2VucywgZG8gbmFtZSBjb21wYXJpc2lvbi4KLSAgICAgICAgICAg
IGZvciBwIGluIHNlbGYucGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICBpZiBwLm5hbWUgPT0g
bm9kZS5uYW1lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAjIFRP
RE8obm5vcndpdHopOiBzZWFyY2ggaW4gYm9keSB0b28uCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICMgVE9ETyhubm9yd2l0eik6IGFkZCB0
ZW1wbGF0ZWRfdHlwZXMuCi0gICAgICAgIHN1ZmZpeCA9ICgnJXMgJXMoJXMpLCAweCUwMngsICVz
JyAlCi0gICAgICAgICAgICAgICAgICAoc2VsZi5yZXR1cm5fdHlwZSwgc2VsZi5uYW1lLCBzZWxm
LnBhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgICAgc2VsZi5tb2RpZmllcnMsIHNlbGYuYm9k
eSkpCi0gICAgICAgIHJldHVybiBzZWxmLl9UeXBlU3RyaW5nSGVscGVyKHN1ZmZpeCkKLQotCi1j
bGFzcyBNZXRob2QoRnVuY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5k
LCBuYW1lLCBpbl9jbGFzcywgcmV0dXJuX3R5cGUsIHBhcmFtZXRlcnMsCi0gICAgICAgICAgICAg
ICAgIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5cGVzLCBib2R5LCBuYW1lc3BhY2UpOgotICAgICAg
ICBGdW5jdGlvbi5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCByZXR1cm5fdHlwZSwg
cGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCB0ZW1wbGF0
ZWRfdHlwZXMsIGJvZHksIG5hbWVzcGFjZSkKLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaW5f
Y2xhc3MgY291bGQgYWxzbyBiZSBhIG5hbWVzcGFjZSB3aGljaCBjYW4KLSAgICAgICAgIyBtZXNz
IHVwIGZpbmRpbmcgZnVuY3Rpb25zIHByb3Blcmx5LgotICAgICAgICBzZWxmLmluX2NsYXNzID0g
aW5fY2xhc3MKLQotCi1jbGFzcyBUeXBlKF9HZW5lcmljRGVjbGFyYXRpb24pOgotICAgICIiIlR5
cGUgdXNlZCBmb3IgYW55IHZhcmlhYmxlIChlZyBjbGFzcywgcHJpbWl0aXZlLCBzdHJ1Y3QsIGV0
YykuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgdGVtcGxh
dGVkX3R5cGVzLCBtb2RpZmllcnMsCi0gICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgcG9pbnRl
ciwgYXJyYXkpOgotICAgICAgICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICBuYW1lOiBz
dHIgbmFtZSBvZiBtYWluIHR5cGUKLSAgICAgICAgICB0ZW1wbGF0ZWRfdHlwZXM6IFtDbGFzcyAo
VHlwZT8pXSB0ZW1wbGF0ZSB0eXBlIGluZm8gYmV0d2VlbiA8PgotICAgICAgICAgIG1vZGlmaWVy
czogW3N0cl0gdHlwZSBtb2RpZmllcnMgKGtleXdvcmRzKSBlZywgY29uc3QsIG11dGFibGUsIGV0
Yy4KLSAgICAgICAgICByZWZlcmVuY2UsIHBvaW50ZXIsIGFycmF5OiBib29scwotICAgICAgICAi
IiIKLSAgICAgICAgX0dlbmVyaWNEZWNsYXJhdGlvbi5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5k
LCBuYW1lLCBbXSkKLSAgICAgICAgc2VsZi50ZW1wbGF0ZWRfdHlwZXMgPSB0ZW1wbGF0ZWRfdHlw
ZXMKLSAgICAgICAgaWYgbm90IG5hbWUgYW5kIG1vZGlmaWVyczoKLSAgICAgICAgICAgIHNlbGYu
bmFtZSA9IG1vZGlmaWVycy5wb3AoKQotICAgICAgICBzZWxmLm1vZGlmaWVycyA9IG1vZGlmaWVy
cwotICAgICAgICBzZWxmLnJlZmVyZW5jZSA9IHJlZmVyZW5jZQotICAgICAgICBzZWxmLnBvaW50
ZXIgPSBwb2ludGVyCi0gICAgICAgIHNlbGYuYXJyYXkgPSBhcnJheQotCi0gICAgZGVmIF9fc3Ry
X18oc2VsZik6Ci0gICAgICAgIHByZWZpeCA9ICcnCi0gICAgICAgIGlmIHNlbGYubW9kaWZpZXJz
OgotICAgICAgICAgICAgcHJlZml4ID0gJyAnLmpvaW4oc2VsZi5tb2RpZmllcnMpICsgJyAnCi0g
ICAgICAgIG5hbWUgPSBzdHIoc2VsZi5uYW1lKQotICAgICAgICBpZiBzZWxmLnRlbXBsYXRlZF90
eXBlczoKLSAgICAgICAgICAgIG5hbWUgKz0gJzwlcz4nICUgc2VsZi50ZW1wbGF0ZWRfdHlwZXMK
LSAgICAgICAgc3VmZml4ID0gcHJlZml4ICsgbmFtZQotICAgICAgICBpZiBzZWxmLnJlZmVyZW5j
ZToKLSAgICAgICAgICAgIHN1ZmZpeCArPSAnJicKLSAgICAgICAgaWYgc2VsZi5wb2ludGVyOgot
ICAgICAgICAgICAgc3VmZml4ICs9ICcqJwotICAgICAgICBpZiBzZWxmLmFycmF5OgotICAgICAg
ICAgICAgc3VmZml4ICs9ICdbXScKLSAgICAgICAgcmV0dXJuIHNlbGYuX1R5cGVTdHJpbmdIZWxw
ZXIoc3VmZml4KQotCi0gICAgIyBCeSBkZWZpbml0aW9uLCBJcyogYXJlIGFsd2F5cyBGYWxzZS4g
IEEgVHlwZSBjYW4gb25seSBleGlzdCBpbgotICAgICMgc29tZSBzb3J0IG9mIHZhcmlhYmxlIGRl
Y2xhcmF0aW9uLCBwYXJhbWV0ZXIsIG9yIHJldHVybiB2YWx1ZS4KLSAgICBkZWYgSXNEZWNsYXJh
dGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgSXNEZWZpbml0aW9u
KHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIFR5cGVDb252ZXJ0ZXIob2JqZWN0
KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lc3BhY2Vfc3RhY2spOgotICAgICAgICBz
ZWxmLm5hbWVzcGFjZV9zdGFjayA9IG5hbWVzcGFjZV9zdGFjawotCi0gICAgZGVmIF9HZXRUZW1w
bGF0ZUVuZChzZWxmLCB0b2tlbnMsIHN0YXJ0KToKLSAgICAgICAgY291bnQgPSAxCi0gICAgICAg
IGVuZCA9IHN0YXJ0Ci0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2Vu
c1tlbmRdCi0gICAgICAgICAgICBlbmQgKz0gMQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9
PSAnPCc6Ci0gICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgZWxpZiB0b2tl
bi5uYW1lID09ICc+JzoKLSAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgICAgICAg
ICAgaWYgY291bnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0
dXJuIHRva2Vuc1tzdGFydDplbmQtMV0sIGVuZAotCi0gICAgZGVmIFRvVHlwZShzZWxmLCB0b2tl
bnMpOgotICAgICAgICAiIiJDb252ZXJ0IFtUb2tlbiwuLi5dIHRvIFtDbGFzcyguLi4pLCBdIHVz
ZWZ1bCBmb3IgYmFzZSBjbGFzc2VzLgotICAgICAgICBGb3IgZXhhbXBsZSwgY29kZSBsaWtlIGNs
YXNzIEZvbyA6IHB1YmxpYyBCYXI8eCwgeT4geyAuLi4gfTsKLSAgICAgICAgdGhlICJCYXI8eCwg
eT4iIHBvcnRpb24gZ2V0cyBjb252ZXJ0ZWQgdG8gYW4gQVNULgotCi0gICAgICAgIFJldHVybnM6
Ci0gICAgICAgICAgW0NsYXNzKC4uLiksIC4uLl0KLSAgICAgICAgIiIiCi0gICAgICAgIHJlc3Vs
dCA9IFtdCi0gICAgICAgIG5hbWVfdG9rZW5zID0gW10KLSAgICAgICAgcmVmZXJlbmNlID0gcG9p
bnRlciA9IGFycmF5ID0gRmFsc2UKLQotICAgICAgICBkZWYgQWRkVHlwZSh0ZW1wbGF0ZWRfdHlw
ZXMpOgotICAgICAgICAgICAgIyBQYXJ0aXRpb24gdG9rZW5zIGludG8gbmFtZSBhbmQgbW9kaWZp
ZXIgdG9rZW5zLgotICAgICAgICAgICAgbmFtZXMgPSBbXQotICAgICAgICAgICAgbW9kaWZpZXJz
ID0gW10KLSAgICAgICAgICAgIGZvciB0IGluIG5hbWVfdG9rZW5zOgotICAgICAgICAgICAgICAg
IGlmIGtleXdvcmRzLklzS2V5d29yZCh0Lm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBtb2Rp
ZmllcnMuYXBwZW5kKHQubmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICBuYW1lcy5hcHBlbmQodC5uYW1lKQotICAgICAgICAgICAgbmFtZSA9ICcnLmpvaW4o
bmFtZXMpCi0gICAgICAgICAgICBpZiBuYW1lX3Rva2VuczoKLSAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKFR5cGUobmFtZV90b2tlbnNbMF0uc3RhcnQsIG5hbWVfdG9rZW5zWy0xXS5lbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHRlbXBsYXRlZF90eXBl
cywgbW9kaWZpZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVu
Y2UsIHBvaW50ZXIsIGFycmF5KSkKLSAgICAgICAgICAgIGRlbCBuYW1lX3Rva2Vuc1s6XQotCi0g
ICAgICAgIGkgPSAwCi0gICAgICAgIGVuZCA9IGxlbih0b2tlbnMpCi0gICAgICAgIHdoaWxlIGkg
PCBlbmQ6Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tpXQotICAgICAgICAgICAgaWYgdG9r
ZW4ubmFtZSA9PSAnPCc6Ci0gICAgICAgICAgICAgICAgbmV3X3Rva2VucywgbmV3X2VuZCA9IHNl
bGYuX0dldFRlbXBsYXRlRW5kKHRva2VucywgaSsxKQotICAgICAgICAgICAgICAgIEFkZFR5cGUo
c2VsZi5Ub1R5cGUobmV3X3Rva2VucykpCi0gICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBh
IGNvbW1hIGFmdGVyIHRoZSB0ZW1wbGF0ZSwgd2UgbmVlZCB0byBjb25zdW1lCi0gICAgICAgICAg
ICAgICAgIyB0aGF0IGhlcmUgb3RoZXJ3aXNlIGl0IGJlY29tZXMgcGFydCBvZiB0aGUgbmFtZS4K
LSAgICAgICAgICAgICAgICBpID0gbmV3X2VuZAotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9
IHBvaW50ZXIgPSBhcnJheSA9IEZhbHNlCi0gICAgICAgICAgICBlbGlmIHRva2VuLm5hbWUgPT0g
JywnOgotICAgICAgICAgICAgICAgIEFkZFR5cGUoW10pCi0gICAgICAgICAgICAgICAgcmVmZXJl
bmNlID0gcG9pbnRlciA9IGFycmF5ID0gRmFsc2UKLSAgICAgICAgICAgIGVsaWYgdG9rZW4ubmFt
ZSA9PSAnKic6Ci0gICAgICAgICAgICAgICAgcG9pbnRlciA9IFRydWUKLSAgICAgICAgICAgIGVs
aWYgdG9rZW4ubmFtZSA9PSAnJic6Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gVHJ1ZQot
ICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1lID09ICdbJzoKLSAgICAgICAgICAgICAgIHBvaW50
ZXIgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHRva2VuLm5hbWUgPT0gJ10nOgotICAgICAgICAg
ICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZV90b2tl
bnMuYXBwZW5kKHRva2VuKQotICAgICAgICAgICAgaSArPSAxCi0KLSAgICAgICAgaWYgbmFtZV90
b2tlbnM6Ci0gICAgICAgICAgICAjIE5vICc8JyBpbiB0aGUgdG9rZW5zLCBqdXN0IGEgc2ltcGxl
IG5hbWUgYW5kIG5vIHRlbXBsYXRlLgotICAgICAgICAgICAgQWRkVHlwZShbXSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIERlY2xhcmF0aW9uVG9QYXJ0cyhzZWxmLCBwYXJ0cywg
bmVlZHNfbmFtZV9yZW1vdmVkKToKLSAgICAgICAgbmFtZSA9IE5vbmUKLSAgICAgICAgZGVmYXVs
dCA9IFtdCi0gICAgICAgIGlmIG5lZWRzX25hbWVfcmVtb3ZlZDoKLSAgICAgICAgICAgICMgSGFu
ZGxlIGRlZmF1bHQgKGluaXRpYWwpIHZhbHVlcyBwcm9wZXJseS4KLSAgICAgICAgICAgIGZvciBp
LCB0IGluIGVudW1lcmF0ZShwYXJ0cyk6Ci0gICAgICAgICAgICAgICAgaWYgdC5uYW1lID09ICc9
JzoKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHBhcnRzW2krMTpdCi0gICAgICAgICAg
ICAgICAgICAgIG5hbWUgPSBwYXJ0c1tpLTFdLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgaWYg
bmFtZSA9PSAnXScgYW5kIHBhcnRzW2ktMl0ubmFtZSA9PSAnWyc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lID0gcGFydHNbaS0zXS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBp
IC09IDEKLSAgICAgICAgICAgICAgICAgICAgcGFydHMgPSBwYXJ0c1s6aS0xXQotICAgICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBw
YXJ0c1stMV0udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgotICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gcGFydHMucG9wKCkubmFtZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IHRoaXMgaXMgYSBoYWNrIHRoYXQgaGFwcGVu
cyBmb3IgY29kZSBsaWtlCi0gICAgICAgICAgICAgICAgICAgICMgUmVnaXN0ZXIoRm9vPFQ+KTsg
d2hlcmUgaXQgdGhpbmtzIHRoaXMgaXMgYSBmdW5jdGlvbiBjYWxsCi0gICAgICAgICAgICAgICAg
ICAgICMgYnV0IGl0J3MgYWN0dWFsbHkgYSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9ICc/Pz8nCi0gICAgICAgIG1vZGlmaWVycyA9IFtdCi0gICAgICAgIHR5cGVfbmFt
ZSA9IFtdCi0gICAgICAgIG90aGVyX3Rva2VucyA9IFtdCi0gICAgICAgIHRlbXBsYXRlZF90eXBl
cyA9IFtdCi0gICAgICAgIGkgPSAwCi0gICAgICAgIGVuZCA9IGxlbihwYXJ0cykKLSAgICAgICAg
d2hpbGUgaSA8IGVuZDoKLSAgICAgICAgICAgIHAgPSBwYXJ0c1tpXQotICAgICAgICAgICAgaWYg
a2V5d29yZHMuSXNLZXl3b3JkKHAubmFtZSk6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzLmFw
cGVuZChwLm5hbWUpCi0gICAgICAgICAgICBlbGlmIHAubmFtZSA9PSAnPCc6Ci0gICAgICAgICAg
ICAgICAgdGVtcGxhdGVkX3Rva2VucywgbmV3X2VuZCA9IHNlbGYuX0dldFRlbXBsYXRlRW5kKHBh
cnRzLCBpKzEpCi0gICAgICAgICAgICAgICAgdGVtcGxhdGVkX3R5cGVzID0gc2VsZi5Ub1R5cGUo
dGVtcGxhdGVkX3Rva2VucykKLSAgICAgICAgICAgICAgICBpID0gbmV3X2VuZCAtIDEKLSAgICAg
ICAgICAgICAgICAjIERvbid0IGFkZCBhIHNwdXJpb3VzIDo6IHRvIGRhdGEgbWVtYmVycyBiZWlu
ZyBpbml0aWFsaXplZC4KLSAgICAgICAgICAgICAgICBuZXh0X2luZGV4ID0gaSArIDEKLSAgICAg
ICAgICAgICAgICBpZiBuZXh0X2luZGV4IDwgZW5kIGFuZCBwYXJ0c1tuZXh0X2luZGV4XS5uYW1l
ID09ICc6Oic6Ci0gICAgICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgZWxpZiBw
Lm5hbWUgaW4gKCdbJywgJ10nLCAnPScpOgotICAgICAgICAgICAgICAgICMgVGhlc2UgYXJlIGhh
bmRsZWQgZWxzZXdoZXJlLgotICAgICAgICAgICAgICAgIG90aGVyX3Rva2Vucy5hcHBlbmQocCkK
LSAgICAgICAgICAgIGVsaWYgcC5uYW1lIG5vdCBpbiAoJyonLCAnJicsICc+Jyk6Ci0gICAgICAg
ICAgICAgICAgIyBFbnN1cmUgdGhhdCBuYW1lcyBoYXZlIGEgc3BhY2UgYmV0d2VlbiB0aGVtLgot
ICAgICAgICAgICAgICAgIGlmICh0eXBlX25hbWUgYW5kIHR5cGVfbmFtZVstMV0udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5OQU1FIGFuZAotICAgICAgICAgICAgICAgICAgICBwLnRva2VuX3R5cGUg
PT0gdG9rZW5pemUuTkFNRSk6Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZS5hcHBlbmQo
dG9rZW5pemUuVG9rZW4odG9rZW5pemUuU1lOVEFYLCAnICcsIDAsIDApKQotICAgICAgICAgICAg
ICAgIHR5cGVfbmFtZS5hcHBlbmQocCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgb3RoZXJfdG9rZW5zLmFwcGVuZChwKQotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIHR5
cGVfbmFtZSA9ICcnLmpvaW4oW3QubmFtZSBmb3IgdCBpbiB0eXBlX25hbWVdKQotICAgICAgICBy
ZXR1cm4gbmFtZSwgdHlwZV9uYW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywgZGVmYXVs
dCwgb3RoZXJfdG9rZW5zCi0KLSAgICBkZWYgVG9QYXJhbWV0ZXJzKHNlbGYsIHRva2Vucyk6Ci0g
ICAgICAgIGlmIG5vdCB0b2tlbnM6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICBy
ZXN1bHQgPSBbXQotICAgICAgICBuYW1lID0gdHlwZV9uYW1lID0gJycKLSAgICAgICAgdHlwZV9t
b2RpZmllcnMgPSBbXQotICAgICAgICBwb2ludGVyID0gcmVmZXJlbmNlID0gYXJyYXkgPSBGYWxz
ZQotICAgICAgICBmaXJzdF90b2tlbiA9IE5vbmUKLSAgICAgICAgZGVmYXVsdCA9IFtdCi0KLSAg
ICAgICAgZGVmIEFkZFBhcmFtZXRlcihlbmQpOgotICAgICAgICAgICAgaWYgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBkZWwgZGVmYXVsdFswXSAgIyBSZW1vdmUgZmxhZy4KLSAgICAgICAgICAg
IHBhcnRzID0gc2VsZi5EZWNsYXJhdGlvblRvUGFydHModHlwZV9tb2RpZmllcnMsIFRydWUpCi0g
ICAgICAgICAgICAobmFtZSwgdHlwZV9uYW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywK
LSAgICAgICAgICAgICB1bnVzZWRfZGVmYXVsdCwgdW51c2VkX290aGVyX3Rva2VucykgPSBwYXJ0
cwotICAgICAgICAgICAgcGFyYW1ldGVyX3R5cGUgPSBUeXBlKGZpcnN0X3Rva2VuLnN0YXJ0LCBm
aXJzdF90b2tlbi5lbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9u
YW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWZlcmVuY2UsIHBvaW50ZXIsIGFycmF5KQotICAgICAgICAgICAgcCA9IFBh
cmFtZXRlcihmaXJzdF90b2tlbi5zdGFydCwgZW5kLCBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbWV0ZXJfdHlwZSwgZGVmYXVsdCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQocCkKLQotICAgICAgICB0ZW1wbGF0ZV9jb3VudCA9IDAKLSAgICAgICAgZm9yIHMgaW4gdG9r
ZW5zOgotICAgICAgICAgICAgaWYgbm90IGZpcnN0X3Rva2VuOgotICAgICAgICAgICAgICAgIGZp
cnN0X3Rva2VuID0gcwotICAgICAgICAgICAgaWYgcy5uYW1lID09ICc8JzoKLSAgICAgICAgICAg
ICAgICB0ZW1wbGF0ZV9jb3VudCArPSAxCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnPic6
Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGVfY291bnQgLT0gMQotICAgICAgICAgICAgaWYgdGVt
cGxhdGVfY291bnQgPiAwOgotICAgICAgICAgICAgICAgIHR5cGVfbW9kaWZpZXJzLmFwcGVuZChz
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIHMubmFtZSA9PSAn
LCc6Ci0gICAgICAgICAgICAgICAgQWRkUGFyYW1ldGVyKHMuc3RhcnQpCi0gICAgICAgICAgICAg
ICAgbmFtZSA9IHR5cGVfbmFtZSA9ICcnCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RpZmllcnMg
PSBbXQotICAgICAgICAgICAgICAgIHBvaW50ZXIgPSByZWZlcmVuY2UgPSBhcnJheSA9IEZhbHNl
Ci0gICAgICAgICAgICAgICAgZmlyc3RfdG9rZW4gPSBOb25lCi0gICAgICAgICAgICAgICAgZGVm
YXVsdCA9IFtdCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnKic6Ci0gICAgICAgICAgICAg
ICAgcG9pbnRlciA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgcy5uYW1lID09ICcmJzoKLSAgICAg
ICAgICAgICAgICByZWZlcmVuY2UgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAn
Wyc6Ci0gICAgICAgICAgICAgICAgYXJyYXkgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHMubmFt
ZSA9PSAnXSc6Ci0gICAgICAgICAgICAgICAgcGFzcyAgIyBKdXN0IGRvbid0IGFkZCB0byB0eXBl
X21vZGlmaWVycy4KLSAgICAgICAgICAgIGVsaWYgcy5uYW1lID09ICc9JzoKLSAgICAgICAgICAg
ICAgICAjIEdvdCBhIGRlZmF1bHQgdmFsdWUuICBBZGQgYW55IHZhbHVlIChOb25lKSBhcyBhIGZs
YWcuCi0gICAgICAgICAgICAgICAgZGVmYXVsdC5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgIGVs
aWYgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBkZWZhdWx0LmFwcGVuZChzKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eXBlX21vZGlmaWVycy5hcHBlbmQocykKLSAgICAg
ICAgQWRkUGFyYW1ldGVyKHRva2Vuc1stMV0uZW5kKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0K
LSAgICBkZWYgQ3JlYXRlUmV0dXJuVHlwZShzZWxmLCByZXR1cm5fdHlwZV9zZXEpOgotICAgICAg
ICBpZiBub3QgcmV0dXJuX3R5cGVfc2VxOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgc3RhcnQgPSByZXR1cm5fdHlwZV9zZXFbMF0uc3RhcnQKLSAgICAgICAgZW5kID0gcmV0dXJu
X3R5cGVfc2VxWy0xXS5lbmQKLSAgICAgICAgXywgbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2Rp
ZmllcnMsIGRlZmF1bHQsIG90aGVyX3Rva2VucyA9IFwKLSAgICAgICAgICAgc2VsZi5EZWNsYXJh
dGlvblRvUGFydHMocmV0dXJuX3R5cGVfc2VxLCBGYWxzZSkKLSAgICAgICAgbmFtZXMgPSBbbi5u
YW1lIGZvciBuIGluIG90aGVyX3Rva2Vuc10KLSAgICAgICAgcmVmZXJlbmNlID0gJyYnIGluIG5h
bWVzCi0gICAgICAgIHBvaW50ZXIgPSAnKicgaW4gbmFtZXMKLSAgICAgICAgYXJyYXkgPSAnWycg
aW4gbmFtZXMKLSAgICAgICAgcmV0dXJuIFR5cGUoc3RhcnQsIGVuZCwgbmFtZSwgdGVtcGxhdGVk
X3R5cGVzLCBtb2RpZmllcnMsCi0gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgcG9pbnRl
ciwgYXJyYXkpCi0KLSAgICBkZWYgR2V0VGVtcGxhdGVJbmRpY2VzKHNlbGYsIG5hbWVzKToKLSAg
ICAgICAgIyBuYW1lcyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KLSAgICAgICAgc3RhcnQgPSBuYW1l
cy5pbmRleCgnPCcpCi0gICAgICAgIGVuZCA9IGxlbihuYW1lcykgLSAxCi0gICAgICAgIHdoaWxl
IGVuZCA+IDA6Ci0gICAgICAgICAgICBpZiBuYW1lc1tlbmRdID09ICc+JzoKLSAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICAgICAgZW5kIC09IDEKLSAgICAgICAgcmV0dXJuIHN0YXJ0LCBl
bmQrMQotCi1jbGFzcyBBc3RCdWlsZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHRva2VuX3N0cmVhbSwgZmlsZW5hbWUsIGluX2NsYXNzPScnLCB2aXNpYmlsaXR5PU5vbmUsCi0g
ICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9zdGFjaz1bXSk6Ci0gICAgICAgIHNlbGYudG9rZW5z
ID0gdG9rZW5fc3RyZWFtCi0gICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAg
ICAjIFRPRE8obm5vcndpdHopOiB1c2UgYSBiZXR0ZXIgZGF0YSBzdHJ1Y3R1cmUgKGRlcXVlKSBm
b3IgdGhlIHF1ZXVlLgotICAgICAgICAjIFN3aXRjaGluZyBkaXJlY3Rpb25zIG9mIHRoZSAicXVl
dWUiIGltcHJvdmVkIHBlcmYgYnkgYWJvdXQgMjUlLgotICAgICAgICAjIFVzaW5nIGEgZGVxdWUg
c2hvdWxkIGJlIGV2ZW4gYmV0dGVyIHNpbmNlIHdlIGFjY2VzcyBmcm9tIGJvdGggc2lkZXMuCi0g
ICAgICAgIHNlbGYudG9rZW5fcXVldWUgPSBbXQotICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFj
ayA9IG5hbWVzcGFjZV9zdGFja1s6XQotICAgICAgICBzZWxmLmluX2NsYXNzID0gaW5fY2xhc3MK
LSAgICAgICAgaWYgaW5fY2xhc3MgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuaW5fY2xhc3Nf
bmFtZV9vbmx5ID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pbl9jbGFz
c19uYW1lX29ubHkgPSBpbl9jbGFzcy5zcGxpdCgnOjonKVstMV0KLSAgICAgICAgc2VsZi52aXNp
YmlsaXR5ID0gdmlzaWJpbGl0eQotICAgICAgICBzZWxmLmluX2Z1bmN0aW9uID0gRmFsc2UKLSAg
ICAgICAgc2VsZi5jdXJyZW50X3Rva2VuID0gTm9uZQotICAgICAgICAjIEtlZXAgdGhlIHN0YXRl
IHdoZXRoZXIgd2UgYXJlIGN1cnJlbnRseSBoYW5kbGluZyBhIHR5cGVkZWYgb3Igbm90LgotICAg
ICAgICBzZWxmLl9oYW5kbGluZ190eXBlZGVmID0gRmFsc2UKLQotICAgICAgICBzZWxmLmNvbnZl
cnRlciA9IFR5cGVDb252ZXJ0ZXIoc2VsZi5uYW1lc3BhY2Vfc3RhY2spCi0KLSAgICBkZWYgSGFu
ZGxlRXJyb3Ioc2VsZiwgbXNnLCB0b2tlbik6Ci0gICAgICAgIHByaW50YWJsZV9xdWV1ZSA9IGxp
c3QocmV2ZXJzZWQoc2VsZi50b2tlbl9xdWV1ZVstMjA6XSkpCi0gICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoJ0dvdCAlcyBpbiAlcyBAICVzICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAobXNnLCBzZWxmLmZpbGVuYW1lLCB0b2tlbiwgcHJpbnRhYmxlX3F1ZXVlKSkKLQotICAgIGRl
ZiBHZW5lcmF0ZShzZWxmKToKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRva2VuID0g
c2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGlmIG5vdCB0b2tlbjoKLSAgICAgICAg
ICAgICAgICBicmVhawotCi0gICAgICAgICAgICAjIEdldCB0aGUgbmV4dCB0b2tlbi4KLSAgICAg
ICAgICAgIHNlbGYuY3VycmVudF90b2tlbiA9IHRva2VuCi0KLSAgICAgICAgICAgICMgRGlzcGF0
Y2ggb24gdGhlIG5leHQgdG9rZW4gdHlwZS4KLSAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5
cGUgPT0gX0lOVEVSTkFMX1RPS0VOOgotICAgICAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0g
X05BTUVTUEFDRV9QT1A6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNr
LnBvcCgpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX0dlbmVyYXRlT25lKHRva2VuKQotICAgICAgICAg
ICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQg
cmVzdWx0Ci0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5IYW5kbGVF
cnJvcignZXhjZXB0aW9uJywgdG9rZW4pCi0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiBfQ3JlYXRlVmFyaWFibGUoc2VsZiwgcG9zX3Rva2VuLCBuYW1lLCB0eXBlX25hbWUsIHR5cGVf
bW9kaWZpZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVmX3BvaW50ZXJfbmFtZV9zZXEs
IHRlbXBsYXRlZF90eXBlcywgdmFsdWU9Tm9uZSk6Ci0gICAgICAgIHJlZmVyZW5jZSA9ICcmJyBp
biByZWZfcG9pbnRlcl9uYW1lX3NlcQotICAgICAgICBwb2ludGVyID0gJyonIGluIHJlZl9wb2lu
dGVyX25hbWVfc2VxCi0gICAgICAgIGFycmF5ID0gJ1snIGluIHJlZl9wb2ludGVyX25hbWVfc2Vx
Ci0gICAgICAgIHZhcl90eXBlID0gVHlwZShwb3NfdG9rZW4uc3RhcnQsIHBvc190b2tlbi5lbmQs
IHR5cGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlZF90eXBlcywgdHlw
ZV9tb2RpZmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHBvaW50ZXIs
IGFycmF5KQotICAgICAgICByZXR1cm4gVmFyaWFibGVEZWNsYXJhdGlvbihwb3NfdG9rZW4uc3Rh
cnQsIHBvc190b2tlbi5lbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUsIHZhcl90eXBlLCB2YWx1ZSwgc2VsZi5uYW1lc3BhY2Vfc3RhY2spCi0KLSAgICBkZWYgX0dl
bmVyYXRlT25lKHNlbGYsIHRva2VuKToKLSAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0
b2tlbml6ZS5OQU1FOgotICAgICAgICAgICAgaWYgKGtleXdvcmRzLklzS2V5d29yZCh0b2tlbi5u
YW1lKSBhbmQKLSAgICAgICAgICAgICAgICBub3Qga2V5d29yZHMuSXNCdWlsdGluVHlwZSh0b2tl
bi5uYW1lKSk6Ci0gICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCAnaGFuZGxl
XycgKyB0b2tlbi5uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2QoKQotICAgICAg
ICAgICAgZWxpZiB0b2tlbi5uYW1lID09IHNlbGYuaW5fY2xhc3NfbmFtZV9vbmx5OgotICAgICAg
ICAgICAgICAgICMgVGhlIHRva2VuIG5hbWUgaXMgdGhlIHNhbWUgYXMgdGhlIGNsYXNzLCBtdXN0
IGJlIGEgY3RvciBpZgotICAgICAgICAgICAgICAgICMgdGhlcmUgaXMgYSBwYXJlbi4gIE90aGVy
d2lzZSwgaXQncyB0aGUgcmV0dXJuIHR5cGUuCi0gICAgICAgICAgICAgICAgIyBQZWVrIGFoZWFk
IHRvIGdldCB0aGUgbmV4dCB0b2tlbiB0byBmaWd1cmUgb3V0IHdoaWNoLgotICAgICAgICAgICAg
ICAgIG5leHQgPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgICAgIHNlbGYuX0Fk
ZEJhY2tUb2tlbihuZXh0KQotICAgICAgICAgICAgICAgIGlmIG5leHQudG9rZW5fdHlwZSA9PSB0
b2tlbml6ZS5TWU5UQVggYW5kIG5leHQubmFtZSA9PSAnKCc6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9HZXRNZXRob2QoW3Rva2VuXSwgRlVOQ1RJT05fQ1RPUiwgTm9uZSwgVHJ1
ZSkKLSAgICAgICAgICAgICAgICAjIEZhbGwgdGhyb3VnaC0taGFuZGxlIGxpa2UgYW55IG90aGVy
IG1ldGhvZC4KLQotICAgICAgICAgICAgIyBIYW5kbGUgZGF0YSBvciBmdW5jdGlvbiBkZWNsYXJh
dGlvbi9kZWZpbml0aW9uLgotICAgICAgICAgICAgc3ludGF4ID0gdG9rZW5pemUuU1lOVEFYCi0g
ICAgICAgICAgICB0ZW1wX3Rva2VucywgbGFzdF90b2tlbiA9IFwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9HZXRWYXJUb2tlbnNVcFRvKHN5bnRheCwgJygnLCAnOycsICd7JywgJ1snKQotICAgICAg
ICAgICAgdGVtcF90b2tlbnMuaW5zZXJ0KDAsIHRva2VuKQotICAgICAgICAgICAgaWYgbGFzdF90
b2tlbi5uYW1lID09ICcoJzoKLSAgICAgICAgICAgICAgICAjIElmIHRoZXJlIGlzIGFuIGFzc2ln
bm1lbnQgYmVmb3JlIHRoZSBwYXJlbiwKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYW4gZXhw
cmVzc2lvbiwgbm90IGEgbWV0aG9kLgotICAgICAgICAgICAgICAgIGV4cHIgPSBib29sKFtlIGZv
ciBlIGluIHRlbXBfdG9rZW5zIGlmIGUubmFtZSA9PSAnPSddKQotICAgICAgICAgICAgICAgIGlm
IGV4cHI6Ci0gICAgICAgICAgICAgICAgICAgIG5ld190ZW1wID0gc2VsZi5fR2V0VG9rZW5zVXBU
byh0b2tlbml6ZS5TWU5UQVgsICc7JykKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMu
YXBwZW5kKGxhc3RfdG9rZW4pCi0gICAgICAgICAgICAgICAgICAgIHRlbXBfdG9rZW5zLmV4dGVu
ZChuZXdfdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuaXplLlRv
a2VuKHRva2VuaXplLlNZTlRBWCwgJzsnLCAwLCAwKQotCi0gICAgICAgICAgICBpZiBsYXN0X3Rv
a2VuLm5hbWUgPT0gJ1snOgotICAgICAgICAgICAgICAgICMgSGFuZGxlIGFycmF5LCB0aGlzIGlz
bid0IGEgbWV0aG9kLCB1bmxlc3MgaXQncyBhbiBvcGVyYXRvci4KLSAgICAgICAgICAgICAgICAj
IFRPRE8obm5vcndpdHopOiBrZWVwIHRoZSBzaXplIHNvbWV3aGVyZS4KLSAgICAgICAgICAgICAg
ICAjIHVudXNlZF9zaXplID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICdd
JykKLSAgICAgICAgICAgICAgICB0ZW1wX3Rva2Vucy5hcHBlbmQobGFzdF90b2tlbikKLSAgICAg
ICAgICAgICAgICBpZiB0ZW1wX3Rva2Vuc1stMl0ubmFtZSA9PSAnb3BlcmF0b3InOgotICAgICAg
ICAgICAgICAgICAgICB0ZW1wX3Rva2Vucy5hcHBlbmQoc2VsZi5fR2V0TmV4dFRva2VuKCkpCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMyLCBs
YXN0X3Rva2VuID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fR2V0VmFyVG9rZW5z
VXBUbyh0b2tlbml6ZS5TWU5UQVgsICc7JykKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tl
bnMuZXh0ZW5kKHRlbXBfdG9rZW5zMikKLQotICAgICAgICAgICAgaWYgbGFzdF90b2tlbi5uYW1l
ID09ICc7JzoKLSAgICAgICAgICAgICAgICAjIEhhbmRsZSBkYXRhLCB0aGlzIGlzbid0IGEgbWV0
aG9kLgotICAgICAgICAgICAgICAgIHBhcnRzID0gc2VsZi5jb252ZXJ0ZXIuRGVjbGFyYXRpb25U
b1BhcnRzKHRlbXBfdG9rZW5zLCBUcnVlKQotICAgICAgICAgICAgICAgIChuYW1lLCB0eXBlX25h
bWUsIHRlbXBsYXRlZF90eXBlcywgbW9kaWZpZXJzLCBkZWZhdWx0LAotICAgICAgICAgICAgICAg
ICB1bnVzZWRfb3RoZXJfdG9rZW5zKSA9IHBhcnRzCi0KLSAgICAgICAgICAgICAgICB0MCA9IHRl
bXBfdG9rZW5zWzBdCi0gICAgICAgICAgICAgICAgbmFtZXMgPSBbdC5uYW1lIGZvciB0IGluIHRl
bXBfdG9rZW5zXQotICAgICAgICAgICAgICAgIGlmIHRlbXBsYXRlZF90eXBlczoKLSAgICAgICAg
ICAgICAgICAgICAgc3RhcnQsIGVuZCA9IHNlbGYuY29udmVydGVyLkdldFRlbXBsYXRlSW5kaWNl
cyhuYW1lcykKLSAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBuYW1lc1s6c3RhcnRdICsgbmFt
ZXNbZW5kOl0KLSAgICAgICAgICAgICAgICBkZWZhdWx0ID0gJycuam9pbihbdC5uYW1lIGZvciB0
IGluIGRlZmF1bHRdKQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJs
ZSh0MCwgbmFtZSwgdHlwZV9uYW1lLCBtb2RpZmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLCB0ZW1wbGF0ZWRfdHlwZXMsIGRlZmF1bHQpCi0g
ICAgICAgICAgICBpZiBsYXN0X3Rva2VuLm5hbWUgPT0gJ3snOgotICAgICAgICAgICAgICAgIHNl
bGYuX0FkZEJhY2tUb2tlbnModGVtcF90b2tlbnNbMTpdKQotICAgICAgICAgICAgICAgIHNlbGYu
X0FkZEJhY2tUb2tlbihsYXN0X3Rva2VuKQotICAgICAgICAgICAgICAgIG1ldGhvZF9uYW1lID0g
dGVtcF90b2tlbnNbMF0ubmFtZQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2Vs
ZiwgJ2hhbmRsZV8nICsgbWV0aG9kX25hbWUsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgbm90
IG1ldGhvZDoKLSAgICAgICAgICAgICAgICAgICAgIyBNdXN0IGJlIGRlY2xhcmluZyBhIHZhcmlh
YmxlLgotICAgICAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgdGhlIGRl
Y2xhcmF0aW9uLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAg
ICAgIHJldHVybiBtZXRob2QoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1ldGhvZCh0
ZW1wX3Rva2VucywgMCwgTm9uZSwgRmFsc2UpCi0gICAgICAgIGVsaWYgdG9rZW4udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5TWU5UQVg6Ci0gICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09ICd+JyBh
bmQgc2VsZi5pbl9jbGFzczoKLSAgICAgICAgICAgICAgICAjIE11c3QgYmUgYSBkdG9yIChwcm9i
YWJseSBub3QgaW4gbWV0aG9kIGJvZHkpLgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5f
R2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICAjIHNlbGYuaW5fY2xhc3MgY2FuIGNvbnRh
aW4gQTo6TmFtZSwgYnV0IHRoZSBkdG9yIHdpbGwgb25seQotICAgICAgICAgICAgICAgICMgYmUg
TmFtZS4gIE1ha2Ugc3VyZSB0byBjb21wYXJlIGFnYWluc3QgdGhlIHJpZ2h0IHZhbHVlLgotICAg
ICAgICAgICAgICAgIGlmICh0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUgYW5kCi0g
ICAgICAgICAgICAgICAgICAgIHRva2VuLm5hbWUgPT0gc2VsZi5pbl9jbGFzc19uYW1lX29ubHkp
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fR2V0TWV0aG9kKFt0b2tlbl0sIEZV
TkNUSU9OX0RUT1IsIE5vbmUsIFRydWUpCi0gICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBo
YW5kbGUgYSBsb3QgbW9yZSBzeW50YXguCi0gICAgICAgIGVsaWYgdG9rZW4udG9rZW5fdHlwZSA9
PSB0b2tlbml6ZS5QUkVQUk9DRVNTT1I6Ci0gICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBo
YW5kbGUgbW9yZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4KLSAgICAgICAgICAgICMgdG9rZW4g
c3RhcnRzIHdpdGggYSAjLCBzbyByZW1vdmUgaXQgYW5kIHN0cmlwIHdoaXRlc3BhY2UuCi0gICAg
ICAgICAgICBuYW1lID0gdG9rZW4ubmFtZVsxOl0ubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5h
bWUuc3RhcnRzd2l0aCgnaW5jbHVkZScpOgotICAgICAgICAgICAgICAgICMgUmVtb3ZlICJpbmNs
dWRlIi4KLSAgICAgICAgICAgICAgICBuYW1lID0gbmFtZVs3Ol0uc3RyaXAoKQotICAgICAgICAg
ICAgICAgIGFzc2VydCBuYW1lCi0gICAgICAgICAgICAgICAgIyBIYW5kbGUgI2luY2x1ZGUgXDxu
ZXdsaW5lPiAiaGVhZGVyLW9uLXNlY29uZC1saW5lLmgiLgotICAgICAgICAgICAgICAgIGlmIG5h
bWUuc3RhcnRzd2l0aCgnXFwnKToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbMTpd
LnN0cmlwKCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgbmFtZVswXSBpbiAnPCInLCB0b2tlbgot
ICAgICAgICAgICAgICAgIGFzc2VydCBuYW1lWy0xXSBpbiAnPiInLCB0b2tlbgotICAgICAgICAg
ICAgICAgIHN5c3RlbSA9IG5hbWVbMF0gPT0gJzwnCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUg
PSBuYW1lWzE6LTFdCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluY2x1ZGUodG9rZW4uc3RhcnQs
IHRva2VuLmVuZCwgZmlsZW5hbWUsIHN5c3RlbSkKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRz
d2l0aCgnZGVmaW5lJyk6Ci0gICAgICAgICAgICAgICAgIyBSZW1vdmUgImRlZmluZSIuCi0gICAg
ICAgICAgICAgICAgbmFtZSA9IG5hbWVbNjpdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBhc3Nl
cnQgbmFtZQotICAgICAgICAgICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgICAgICBmb3Ig
aSwgYyBpbiBlbnVtZXJhdGUobmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGMuaXNzcGFj
ZSgpOgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuYW1lW2k6XS5sc3RyaXAoKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbOmldCi0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJldHVybiBEZWZpbmUodG9rZW4uc3RhcnQs
IHRva2VuLmVuZCwgbmFtZSwgdmFsdWUpCi0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgo
J2lmJykgYW5kIG5hbWVbMjozXS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgY29uZGl0aW9u
ID0gbmFtZVszOl0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGlmIGNvbmRpdGlvbi5zdGFydHN3
aXRoKCcwJykgb3IgY29uZGl0aW9uLnN0YXJ0c3dpdGgoJygwKScpOgotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9Ta2lwSWYwQmxvY2tzKCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRl
ZiBfR2V0VG9rZW5zVXBUbyhzZWxmLCBleHBlY3RlZF90b2tlbl90eXBlLCBleHBlY3RlZF90b2tl
bik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9HZXRWYXJUb2tlbnNVcFRvKGV4cGVjdGVkX3Rva2Vu
X3R5cGUsIGV4cGVjdGVkX3Rva2VuKVswXQotCi0gICAgZGVmIF9HZXRWYXJUb2tlbnNVcFRvKHNl
bGYsIGV4cGVjdGVkX3Rva2VuX3R5cGUsICpleHBlY3RlZF90b2tlbnMpOgotICAgICAgICBsYXN0
X3Rva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgdG9rZW5zID0gW10KLSAgICAg
ICAgd2hpbGUgKGxhc3RfdG9rZW4udG9rZW5fdHlwZSAhPSBleHBlY3RlZF90b2tlbl90eXBlIG9y
Ci0gICAgICAgICAgICAgICBsYXN0X3Rva2VuLm5hbWUgbm90IGluIGV4cGVjdGVkX3Rva2Vucyk6
Ci0gICAgICAgICAgICB0b2tlbnMuYXBwZW5kKGxhc3RfdG9rZW4pCi0gICAgICAgICAgICBsYXN0
X3Rva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgcmV0dXJuIHRva2VucywgbGFz
dF90b2tlbgotCi0gICAgIyBUT0RPKG5ub3J3aXR6KTogcmVtb3ZlIF9JZ25vcmVVcFRvKCkgaXQg
c2hvdWxkbid0IGJlIG5lY2VzYXJ5LgotICAgIGRlZiBfSWdub3JlVXBUbyhzZWxmLCB0b2tlbl90
eXBlLCB0b2tlbik6Ci0gICAgICAgIHVudXNlZF90b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRv
KHRva2VuX3R5cGUsIHRva2VuKQotCi0gICAgZGVmIF9Ta2lwSWYwQmxvY2tzKHNlbGYpOgotICAg
ICAgICBjb3VudCA9IDEKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRva2VuID0gc2Vs
Zi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgIT0gdG9r
ZW5pemUuUFJFUFJPQ0VTU09SOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ICAgIG5hbWUgPSB0b2tlbi5uYW1lWzE6XS5sc3RyaXAoKQotICAgICAgICAgICAgaWYgbmFtZS5z
dGFydHN3aXRoKCdlbmRpZicpOgotICAgICAgICAgICAgICAgIGNvdW50IC09IDEKLSAgICAgICAg
ICAgICAgICBpZiBjb3VudCA9PSAwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICAgICAgZWxpZiBuYW1lLnN0YXJ0c3dpdGgoJ2lmJyk6Ci0gICAgICAgICAgICAgICAgY291bnQg
Kz0gMQotCi0gICAgZGVmIF9HZXRNYXRjaGluZ0NoYXIoc2VsZiwgb3Blbl9wYXJlbiwgY2xvc2Vf
cGFyZW4sIEdldE5leHRUb2tlbj1Ob25lKToKLSAgICAgICAgaWYgR2V0TmV4dFRva2VuIGlzIE5v
bmU6Ci0gICAgICAgICAgICBHZXROZXh0VG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4KLSAgICAg
ICAgIyBBc3N1bWVzIHRoZSBjdXJyZW50IHRva2VuIGlzIG9wZW5fcGFyZW4gYW5kIHdlIHdpbGwg
Y29uc3VtZQotICAgICAgICAjIGFuZCByZXR1cm4gdXAgdG8gdGhlIGNsb3NlX3BhcmVuLgotICAg
ICAgICBjb3VudCA9IDEKLSAgICAgICAgdG9rZW4gPSBHZXROZXh0VG9rZW4oKQotICAgICAgICB3
aGlsZSAxOgotICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5U
QVg6Ci0gICAgICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSBvcGVuX3BhcmVuOgotICAgICAg
ICAgICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1l
ID09IGNsb3NlX3BhcmVuOgotICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAg
ICAgICAgICAgICAgIGlmIGNvdW50ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgeWllbGQgdG9rZW4KLSAgICAgICAgICAgIHRva2VuID0gR2V0TmV4dFRv
a2VuKCkKLSAgICAgICAgeWllbGQgdG9rZW4KLQotICAgIGRlZiBfR2V0UGFyYW1ldGVycyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1hdGNoaW5nQ2hhcignKCcsICcpJykKLQotICAg
IGRlZiBHZXRTY29wZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1hdGNoaW5nQ2hh
cigneycsICd9JykKLQotICAgIGRlZiBfR2V0TmV4dFRva2VuKHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLnRva2VuX3F1ZXVlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9rZW5fcXVldWUucG9w
KCkKLSAgICAgICAgcmV0dXJuIG5leHQoc2VsZi50b2tlbnMpCi0KLSAgICBkZWYgX0FkZEJhY2tU
b2tlbihzZWxmLCB0b2tlbik6Ci0gICAgICAgIGlmIHRva2VuLndoZW5jZSA9PSB0b2tlbml6ZS5X
SEVOQ0VfU1RSRUFNOgotICAgICAgICAgICAgdG9rZW4ud2hlbmNlID0gdG9rZW5pemUuV0hFTkNF
X1FVRVVFCi0gICAgICAgICAgICBzZWxmLnRva2VuX3F1ZXVlLmluc2VydCgwLCB0b2tlbikKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCB0b2tlbi53aGVuY2UgPT0gdG9rZW5pemUu
V0hFTkNFX1FVRVVFLCB0b2tlbgotICAgICAgICAgICAgc2VsZi50b2tlbl9xdWV1ZS5hcHBlbmQo
dG9rZW4pCi0KLSAgICBkZWYgX0FkZEJhY2tUb2tlbnMoc2VsZiwgdG9rZW5zKToKLSAgICAgICAg
aWYgdG9rZW5zOgotICAgICAgICAgICAgaWYgdG9rZW5zWy0xXS53aGVuY2UgPT0gdG9rZW5pemUu
V0hFTkNFX1NUUkVBTToKLSAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgotICAg
ICAgICAgICAgICAgICAgICB0b2tlbi53aGVuY2UgPSB0b2tlbml6ZS5XSEVOQ0VfUVVFVUUKLSAg
ICAgICAgICAgICAgICBzZWxmLnRva2VuX3F1ZXVlWzowXSA9IHJldmVyc2VkKHRva2VucykKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHRva2Vuc1stMV0ud2hlbmNl
ID09IHRva2VuaXplLldIRU5DRV9RVUVVRSwgdG9rZW5zCi0gICAgICAgICAgICAgICAgc2VsZi50
b2tlbl9xdWV1ZS5leHRlbmQocmV2ZXJzZWQodG9rZW5zKSkKLQotICAgIGRlZiBHZXROYW1lKHNl
bGYsIHNlcT1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyAoW3Rva2Vuc10sIG5leHRfdG9rZW5f
aW5mbykuIiIiCi0gICAgICAgIEdldE5leHRUb2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbgotICAg
ICAgICBpZiBzZXEgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpdCA9IGl0ZXIoc2VxKQotICAg
ICAgICAgICAgR2V0TmV4dFRva2VuID0gbGFtYmRhOiBuZXh0KGl0KQotICAgICAgICBuZXh0X3Rv
a2VuID0gR2V0TmV4dFRva2VuKCkKLSAgICAgICAgdG9rZW5zID0gW10KLSAgICAgICAgbGFzdF90
b2tlbl93YXNfbmFtZSA9IEZhbHNlCi0gICAgICAgIHdoaWxlIChuZXh0X3Rva2VuLnRva2VuX3R5
cGUgPT0gdG9rZW5pemUuTkFNRSBvcgotICAgICAgICAgICAgICAgKG5leHRfdG9rZW4udG9rZW5f
dHlwZSA9PSB0b2tlbml6ZS5TWU5UQVggYW5kCi0gICAgICAgICAgICAgICAgbmV4dF90b2tlbi5u
YW1lIGluICgnOjonLCAnPCcpKSk6Ci0gICAgICAgICAgICAjIFR3byBOQU1FcyBpbiBhIHJvdyBt
ZWFucyB0aGUgaWRlbnRpZmllciBzaG91bGQgdGVybWluYXRlLgotICAgICAgICAgICAgIyBJdCdz
IHByb2JhYmx5IHNvbWUgc29ydCBvZiB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAg
IGlmIGxhc3RfdG9rZW5fd2FzX25hbWUgYW5kIG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tl
bml6ZS5OQU1FOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBsYXN0X3Rva2Vu
X3dhc19uYW1lID0gbmV4dF90b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUKLSAgICAg
ICAgICAgIHRva2Vucy5hcHBlbmQobmV4dF90b2tlbikKLSAgICAgICAgICAgICMgSGFuZGxlIHRl
bXBsYXRlZCBuYW1lcy4KLSAgICAgICAgICAgIGlmIG5leHRfdG9rZW4ubmFtZSA9PSAnPCc6Ci0g
ICAgICAgICAgICAgICAgdG9rZW5zLmV4dGVuZChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJzwnLCAn
PicsIEdldE5leHRUb2tlbikpCi0gICAgICAgICAgICAgICAgbGFzdF90b2tlbl93YXNfbmFtZSA9
IFRydWUKLSAgICAgICAgICAgIG5leHRfdG9rZW4gPSBHZXROZXh0VG9rZW4oKQotICAgICAgICBy
ZXR1cm4gdG9rZW5zLCBuZXh0X3Rva2VuCi0KLSAgICBkZWYgR2V0TWV0aG9kKHNlbGYsIG1vZGlm
aWVycywgdGVtcGxhdGVkX3R5cGVzKToKLSAgICAgICAgcmV0dXJuX3R5cGVfYW5kX25hbWUgPSBz
ZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJygnKQotICAgICAgICBhc3NlcnQg
bGVuKHJldHVybl90eXBlX2FuZF9uYW1lKSA+PSAxCi0gICAgICAgIHJldHVybiBzZWxmLl9HZXRN
ZXRob2QocmV0dXJuX3R5cGVfYW5kX25hbWUsIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5cGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQotCi0gICAgZGVmIF9HZXRNZXRo
b2Qoc2VsZiwgcmV0dXJuX3R5cGVfYW5kX25hbWUsIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5cGVz
LAotICAgICAgICAgICAgICAgICAgIGdldF9wYXJlbik6Ci0gICAgICAgIHRlbXBsYXRlX3BvcnRp
b24gPSBOb25lCi0gICAgICAgIGlmIGdldF9wYXJlbjoKLSAgICAgICAgICAgIHRva2VuID0gc2Vs
Zi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09
IHRva2VuaXplLlNZTlRBWCwgdG9rZW4KLSAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gJzwn
OgotICAgICAgICAgICAgICAgICMgSGFuZGxlIHRlbXBsYXRpemVkIGR0b3JzLgotICAgICAgICAg
ICAgICAgIHRlbXBsYXRlX3BvcnRpb24gPSBbdG9rZW5dCi0gICAgICAgICAgICAgICAgdGVtcGxh
dGVfcG9ydGlvbi5leHRlbmQoc2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCc8JywgJz4nKSkKLSAgICAg
ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAgICBhc3Nl
cnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRva2VuCi0gICAgICAgICAg
ICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAnKCcsIHRva2VuCi0KLSAgICAgICAgbmFtZSA9IHJldHVy
bl90eXBlX2FuZF9uYW1lLnBvcCgpCi0gICAgICAgICMgSGFuZGxlIHRlbXBsYXRpemVkIGN0b3Jz
LgotICAgICAgICBpZiBuYW1lLm5hbWUgPT0gJz4nOgotICAgICAgICAgICAgaW5kZXggPSAxCi0g
ICAgICAgICAgICB3aGlsZSByZXR1cm5fdHlwZV9hbmRfbmFtZVtpbmRleF0ubmFtZSAhPSAnPCc6
Ci0gICAgICAgICAgICAgICAgaW5kZXggKz0gMQotICAgICAgICAgICAgdGVtcGxhdGVfcG9ydGlv
biA9IHJldHVybl90eXBlX2FuZF9uYW1lW2luZGV4Ol0gKyBbbmFtZV0KLSAgICAgICAgICAgIGRl
bCByZXR1cm5fdHlwZV9hbmRfbmFtZVtpbmRleDpdCi0gICAgICAgICAgICBuYW1lID0gcmV0dXJu
X3R5cGVfYW5kX25hbWUucG9wKCkKLSAgICAgICAgZWxpZiBuYW1lLm5hbWUgPT0gJ10nOgotICAg
ICAgICAgICAgcnQgPSByZXR1cm5fdHlwZV9hbmRfbmFtZQotICAgICAgICAgICAgYXNzZXJ0IHJ0
Wy0xXS5uYW1lID09ICdbJywgcmV0dXJuX3R5cGVfYW5kX25hbWUKLSAgICAgICAgICAgIGFzc2Vy
dCBydFstMl0ubmFtZSA9PSAnb3BlcmF0b3InLCByZXR1cm5fdHlwZV9hbmRfbmFtZQotICAgICAg
ICAgICAgbmFtZV9zZXEgPSByZXR1cm5fdHlwZV9hbmRfbmFtZVstMjpdCi0gICAgICAgICAgICBk
ZWwgcmV0dXJuX3R5cGVfYW5kX25hbWVbLTI6XQotICAgICAgICAgICAgbmFtZSA9IHRva2VuaXpl
LlRva2VuKHRva2VuaXplLk5BTUUsICdvcGVyYXRvcltdJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lX3NlcVswXS5zdGFydCwgbmFtZS5lbmQpCi0gICAgICAgICAgICAj
IEdldCB0aGUgb3BlbiBwYXJlbiBzbyBfR2V0UGFyYW1ldGVycygpIGJlbG93IHdvcmtzLgotICAg
ICAgICAgICAgdW51c2VkX29wZW5fcGFyZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotCi0gICAg
ICAgICMgVE9ETyhubm9yd2l0eik6IHN0b3JlIHRlbXBsYXRlX3BvcnRpb24uCi0gICAgICAgIHJl
dHVybl90eXBlID0gcmV0dXJuX3R5cGVfYW5kX25hbWUKLSAgICAgICAgaW5kaWNlcyA9IG5hbWUK
LSAgICAgICAgaWYgcmV0dXJuX3R5cGU6Ci0gICAgICAgICAgICBpbmRpY2VzID0gcmV0dXJuX3R5
cGVbMF0KLQotICAgICAgICAjIEZvcmNlIGN0b3IgZm9yIHRlbXBsYXRpemVkIGN0b3JzLgotICAg
ICAgICBpZiBuYW1lLm5hbWUgPT0gc2VsZi5pbl9jbGFzcyBhbmQgbm90IG1vZGlmaWVyczoKLSAg
ICAgICAgICAgIG1vZGlmaWVycyB8PSBGVU5DVElPTl9DVE9SCi0gICAgICAgIHBhcmFtZXRlcnMg
PSBsaXN0KHNlbGYuX0dldFBhcmFtZXRlcnMoKSkKLSAgICAgICAgZGVsIHBhcmFtZXRlcnNbLTFd
ICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAnKScuCi0KLSAgICAgICAgIyBIYW5kbGlu
ZyBvcGVyYXRvcigpIGlzIGVzcGVjaWFsbHkgd2VpcmQuCi0gICAgICAgIGlmIG5hbWUubmFtZSA9
PSAnb3BlcmF0b3InIGFuZCBub3QgcGFyYW1ldGVyczoKLSAgICAgICAgICAgIHRva2VuID0gc2Vs
Zi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICcoJywg
dG9rZW4KLSAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBsaXN0KHNlbGYuX0dldFBhcmFtZXRlcnMo
KSkKLSAgICAgICAgICAgIGRlbCBwYXJhbWV0ZXJzWy0xXSAgICAgICAgICAjIFJlbW92ZSB0cmFp
bGluZyAnKScuCi0KLSAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAg
ICB3aGlsZSB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAgICBt
b2RpZmllcl90b2tlbiA9IHRva2VuCi0gICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRU
b2tlbigpCi0gICAgICAgICAgICBpZiBtb2RpZmllcl90b2tlbi5uYW1lID09ICdjb25zdCc6Ci0g
ICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNUSU9OX0NPTlNUCi0gICAgICAgICAgICBl
bGlmIG1vZGlmaWVyX3Rva2VuLm5hbWUgPT0gJ19fYXR0cmlidXRlX18nOgotICAgICAgICAgICAg
ICAgICMgVE9ETyhubm9yd2l0eik6IGhhbmRsZSBtb3JlIF9fYXR0cmlidXRlX18gZGV0YWlscy4K
LSAgICAgICAgICAgICAgICBtb2RpZmllcnMgfD0gRlVOQ1RJT05fQVRUUklCVVRFCi0gICAgICAg
ICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJygnLCB0b2tlbgotICAgICAgICAgICAgICAg
ICMgQ29uc3VtZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIChwYXJlbnMpLgotICAgICAgICAgICAg
ICAgIHVudXNlZF90b2tlbnMgPSBsaXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcignKCcsICcpJykp
Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAg
ICAgZWxpZiBtb2RpZmllcl90b2tlbi5uYW1lID09ICd0aHJvdyc6Ci0gICAgICAgICAgICAgICAg
bW9kaWZpZXJzIHw9IEZVTkNUSU9OX1RIUk9XCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHRva2Vu
Lm5hbWUgPT0gJygnLCB0b2tlbgotICAgICAgICAgICAgICAgICMgQ29uc3VtZSBldmVyeXRoaW5n
IGJldHdlZW4gdGhlIChwYXJlbnMpLgotICAgICAgICAgICAgICAgIHVudXNlZF90b2tlbnMgPSBs
aXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcignKCcsICcpJykpCi0gICAgICAgICAgICAgICAgdG9r
ZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgZWxpZiBtb2RpZmllcl90b2tl
bi5uYW1lID09ICdvdmVycmlkZSc6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNU
SU9OX09WRVJSSURFCi0gICAgICAgICAgICBlbGlmIG1vZGlmaWVyX3Rva2VuLm5hbWUgPT0gbW9k
aWZpZXJfdG9rZW4ubmFtZS51cHBlcigpOgotICAgICAgICAgICAgICAgICMgSEFDSyhubm9yd2l0
eik6ICBhc3N1bWUgdGhhdCBhbGwgdXBwZXItY2FzZSBuYW1lcwotICAgICAgICAgICAgICAgICMg
YXJlIHNvbWUgbWFjcm8gd2UgYXJlbid0IGV4cGFuZGluZy4KLSAgICAgICAgICAgICAgICBtb2Rp
ZmllcnMgfD0gRlVOQ1RJT05fVU5LTk9XTl9BTk5PVEFUSU9OCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHNlbGYuSGFuZGxlRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4nLCBtb2Rp
Zmllcl90b2tlbikKLQotICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6
ZS5TWU5UQVgsIHRva2VuCi0gICAgICAgICMgSGFuZGxlIGN0b3IgaW5pdGlhbGl6ZXJzLgotICAg
ICAgICBpZiB0b2tlbi5uYW1lID09ICc6JzoKLSAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IGFueXRoaW5nIGVsc2UgdG8gaGFuZGxlIGZvciBpbml0aWFsaXplciBsaXN0PwotICAgICAgICAg
ICAgd2hpbGUgdG9rZW4ubmFtZSAhPSAnOycgYW5kIHRva2VuLm5hbWUgIT0gJ3snOgotICAgICAg
ICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLQotICAgICAgICAjIEhhbmRs
ZSBwb2ludGVyIHRvIGZ1bmN0aW9ucyB0aGF0IGFyZSByZWFsbHkgZGF0YSBidXQgbG9vawotICAg
ICAgICAjIGxpa2UgbWV0aG9kIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgaWYgdG9rZW4ubmFtZSA9
PSAnKCc6Ci0gICAgICAgICAgICBpZiBwYXJhbWV0ZXJzWzBdLm5hbWUgPT0gJyonOgotICAgICAg
ICAgICAgICAgICMgbmFtZSBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUuCi0gICAgICAgICAgICAg
ICAgbmFtZSA9IHBhcmFtZXRlcnMucG9wKCkKLSAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcnMg
Y29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgbW9kaWZpZXJz
ID0gW3AubmFtZSBmb3IgcCBpbiBwYXJhbWV0ZXJzXQotICAgICAgICAgICAgICAgICMgQWxyZWFk
eSBhdCB0aGUgKCB0byBvcGVuIHRoZSBwYXJhbWV0ZXIgbGlzdC4KLSAgICAgICAgICAgICAgICBm
dW5jdGlvbl9wYXJhbWV0ZXJzID0gbGlzdChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJygnLCAnKScp
KQotICAgICAgICAgICAgICAgIGRlbCBmdW5jdGlvbl9wYXJhbWV0ZXJzWy0xXSAgIyBSZW1vdmUg
dHJhaWxpbmcgJyknLgotICAgICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IHN0b3JlIHRo
ZSBmdW5jdGlvbl9wYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0
b2tlbml6ZS5TWU5UQVgsIHRva2VuCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUg
PT0gJzsnLCB0b2tlbgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJs
ZShpbmRpY2VzLCBuYW1lLm5hbWUsIGluZGljZXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCAnJywgTm9uZSkKLSAgICAgICAgICAg
ICMgQXQgdGhpcyBwb2ludCwgd2UgZ290IHNvbWV0aGluZyBsaWtlOgotICAgICAgICAgICAgIyAg
cmV0dXJuX3R5cGUgKHR5cGU6OipuYW1lXykocGFyYW1zKTsKLSAgICAgICAgICAgICMgVGhpcyBp
cyBhIGRhdGEgbWVtYmVyIGNhbGxlZCBuYW1lXyB0aGF0IGlzIGEgZnVuY3Rpb24gcG9pbnRlci4K
LSAgICAgICAgICAgICMgV2l0aCB0aGlzIGNvZGU6IHZvaWQgKHNxX3R5cGU6OipmaWVsZF8pKHN0
cmluZyYpOwotICAgICAgICAgICAgIyBXZSBnZXQ6IG5hbWU9dm9pZCByZXR1cm5fdHlwZT1bXSBw
YXJhbWV0ZXJzPXNxX3R5cGUgLi4uIGZpZWxkXwotICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6
KTogaXMgcmV0dXJuX3R5cGUgYWx3YXlzIGVtcHR5PwotICAgICAgICAgICAgIyBUT0RPKG5ub3J3
aXR6KTogdGhpcyBpc24ndCBldmVuIGNsb3NlIHRvIGJlaW5nIGNvcnJlY3QuCi0gICAgICAgICAg
ICAjIEp1c3QgcHV0IGluIHNvbWV0aGluZyBzbyB3ZSBkb24ndCBjcmFzaCBhbmQgY2FuIG1vdmUg
b24uCi0gICAgICAgICAgICByZWFsX25hbWUgPSBwYXJhbWV0ZXJzWy0xXQotICAgICAgICAgICAg
bW9kaWZpZXJzID0gW3AubmFtZSBmb3IgcCBpbiBzZWxmLl9HZXRQYXJhbWV0ZXJzKCldCi0gICAg
ICAgICAgICBkZWwgbW9kaWZpZXJzWy0xXSAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJykn
LgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0NyZWF0ZVZhcmlhYmxlKGluZGljZXMsIHJlYWxf
bmFtZS5uYW1lLCBpbmRpY2VzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZXJzLCAnJywgTm9uZSkKLQotICAgICAgICBpZiB0b2tlbi5uYW1lID09
ICd7JzoKLSAgICAgICAgICAgIGJvZHkgPSBsaXN0KHNlbGYuR2V0U2NvcGUoKSkKLSAgICAgICAg
ICAgIGRlbCBib2R5Wy0xXSAgICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAnfScuCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBib2R5ID0gTm9uZQotICAgICAgICAgICAgaWYgdG9r
ZW4ubmFtZSA9PSAnPSc6Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9r
ZW4oKQotCi0gICAgICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnZGVmYXVsdCcgb3IgdG9r
ZW4ubmFtZSA9PSAnZGVsZXRlJzoKLSAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZXhwbGlj
aXRseSBkZWZhdWx0ZWQgYW5kIGRlbGV0ZWQgc3BlY2lhbCBtZW1iZXJzCi0gICAgICAgICAgICAg
ICAgICAgICMgaW4gQysrMTEuCi0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAj
IEhhbmRsZSBwdXJlLXZpcnR1YWwgZGVjbGFyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBh
c3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5DT05TVEFOVCwgdG9rZW4KLSAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJzAnLCB0b2tlbgotICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllcnMgfD0gRlVOQ1RJT05fUFVSRV9WSVJUVUFMCi0gICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLQotICAgICAgICAgICAgaWYg
dG9rZW4ubmFtZSA9PSAnWyc6Ci0gICAgICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogc3Rv
cmUgdG9rZW5zIGFuZCBpbXByb3ZlIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgIyB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+IGNoYXIgKCZBU0goVCAoJnNlcSlbTl0pKVtOXTsKLSAg
ICAgICAgICAgICAgICB0b2tlbnMgPSBsaXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcignWycsICdd
JykpCi0gICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotCi0gICAg
ICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAnOycsICh0b2tlbiwgcmV0dXJuX3R5cGVfYW5k
X25hbWUsIHBhcmFtZXRlcnMpCi0KLSAgICAgICAgIyBMb29rcyBsaWtlIHdlIGdvdCBhIG1ldGhv
ZCwgbm90IGEgZnVuY3Rpb24uCi0gICAgICAgIGlmIGxlbihyZXR1cm5fdHlwZSkgPiAyIGFuZCBy
ZXR1cm5fdHlwZVstMV0ubmFtZSA9PSAnOjonOgotICAgICAgICAgICAgcmV0dXJuX3R5cGUsIGlu
X2NsYXNzID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX0dldFJldHVyblR5cGVB
bmRDbGFzc05hbWUocmV0dXJuX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gTWV0aG9kKGluZGlj
ZXMuc3RhcnQsIGluZGljZXMuZW5kLCBuYW1lLm5hbWUsIGluX2NsYXNzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm5fdHlwZSwgcGFyYW1ldGVycywgbW9kaWZpZXJzLCB0ZW1wbGF0
ZWRfdHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHksIHNlbGYubmFtZXNwYWNl
X3N0YWNrKQotICAgICAgICByZXR1cm4gRnVuY3Rpb24oaW5kaWNlcy5zdGFydCwgaW5kaWNlcy5l
bmQsIG5hbWUubmFtZSwgcmV0dXJuX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bWV0ZXJzLCBtb2RpZmllcnMsIHRlbXBsYXRlZF90eXBlcywgYm9keSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotCi0gICAgZGVmIF9HZXRSZXR1cm5UeXBl
QW5kQ2xhc3NOYW1lKHNlbGYsIHRva2VuX3NlcSk6Ci0gICAgICAgICMgU3BsaXR0aW5nIHRoZSBy
ZXR1cm4gdHlwZSBmcm9tIHRoZSBjbGFzcyBuYW1lIGluIGEgbWV0aG9kCi0gICAgICAgICMgY2Fu
IGJlIHRyaWNreS4gIEZvciBleGFtcGxlLCBSZXR1cm46OlR5cGU6OklzOjpIYXJkOjpUbzo6Rmlu
ZCgpLgotICAgICAgICAjIFdoZXJlIGlzIHRoZSByZXR1cm4gdHlwZSBhbmQgd2hlcmUgaXMgdGhl
IGNsYXNzIG5hbWU/Ci0gICAgICAgICMgVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRvIHB1bGwgdGhl
IGxhc3QgbmFtZSBhcyB0aGUgY2xhc3MgbmFtZS4KLSAgICAgICAgIyBUaGlzIGluY2x1ZGVzIGFs
bCB0aGUgdGVtcGxhdGVkIHR5cGUgaW5mby4KLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaWYg
dGhlcmUgaXMgb25seSBPbmUgbmFtZSBsaWtlIGluIHRoZQotICAgICAgICAjIGV4YW1wbGUgYWJv
dmUsIHB1bnQgYW5kIGFzc3VtZSB0aGUgbGFzdCBiaXQgaXMgdGhlIGNsYXNzIG5hbWUuCi0KLSAg
ICAgICAgIyBJZ25vcmUgYSA6OiBwcmVmaXgsIGlmIGV4aXN0cyBzbyB3ZSBjYW4gZmluZCB0aGUg
Zmlyc3QgcmVhbCBuYW1lLgotICAgICAgICBpID0gMAotICAgICAgICBpZiB0b2tlbl9zZXFbMF0u
bmFtZSA9PSAnOjonOgotICAgICAgICAgICAgaSA9IDEKLSAgICAgICAgIyBJZ25vcmUgYSA6OiBz
dWZmaXgsIGlmIGV4aXN0cy4KLSAgICAgICAgZW5kID0gbGVuKHRva2VuX3NlcSkgLSAxCi0gICAg
ICAgIGlmIHRva2VuX3NlcVtlbmQtMV0ubmFtZSA9PSAnOjonOgotICAgICAgICAgICAgZW5kIC09
IDEKLQotICAgICAgICAjIE1ha2UgYSBjb3B5IG9mIHRoZSBzZXF1ZW5jZSBzbyB3ZSBjYW4gYXBw
ZW5kIGEgc2VudGluZWwKLSAgICAgICAgIyB2YWx1ZS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgR2V0
TmFtZSB3aWxsIGhhcyB0byBoYXZlIHNvbWUKLSAgICAgICAgIyB0ZXJtaW5hdGluZyBjb25kaXRp
b24gYmV5b25kIHRoZSBsYXN0IG5hbWUuCi0gICAgICAgIHNlcV9jb3B5ID0gdG9rZW5fc2VxW2k6
ZW5kXQotICAgICAgICBzZXFfY29weS5hcHBlbmQodG9rZW5pemUuVG9rZW4odG9rZW5pemUuU1lO
VEFYLCAnJywgMCwgMCkpCi0gICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgd2hpbGUgaSA8IGVu
ZDoKLSAgICAgICAgICAgICMgSXRlcmF0ZSB0aHJvdWdoIHRoZSBzZXF1ZW5jZSBwYXJzaW5nIG91
dCBlYWNoIG5hbWUuCi0gICAgICAgICAgICBuZXdfbmFtZSwgbmV4dCA9IHNlbGYuR2V0TmFtZShz
ZXFfY29weVtpOl0pCi0gICAgICAgICAgICBhc3NlcnQgbmV3X25hbWUsICdHb3QgZW1wdHkgbmV3
X25hbWUsIG5leHQ9JXMnICUgbmV4dAotICAgICAgICAgICAgIyBXZSBnb3QgYSBwb2ludGVyIG9y
IHJlZi4gIEFkZCBpdCB0byB0aGUgbmFtZS4KLSAgICAgICAgICAgIGlmIG5leHQgYW5kIG5leHQu
dG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVg6Ci0gICAgICAgICAgICAgICAgbmV3X25hbWUu
YXBwZW5kKG5leHQpCi0gICAgICAgICAgICBuYW1lcy5hcHBlbmQobmV3X25hbWUpCi0gICAgICAg
ICAgICBpICs9IGxlbihuZXdfbmFtZSkKLQotICAgICAgICAjIE5vdyB0aGF0IHdlIGhhdmUgdGhl
IG5hbWVzLCBpdCdzIHRpbWUgdG8gdW5kbyB3aGF0IHdlIGRpZC4KLQotICAgICAgICAjIFJlbW92
ZSB0aGUgc2VudGluZWwgdmFsdWUuCi0gICAgICAgIG5hbWVzWy0xXS5wb3AoKQotICAgICAgICAj
IEZsYXR0ZW4gdGhlIHRva2VuIHNlcXVlbmNlIGZvciB0aGUgcmV0dXJuIHR5cGUuCi0gICAgICAg
IHJldHVybl90eXBlID0gW2UgZm9yIHNlcSBpbiBuYW1lc1s6LTFdIGZvciBlIGluIHNlcV0KLSAg
ICAgICAgIyBUaGUgY2xhc3MgbmFtZSBpcyB0aGUgbGFzdCBuYW1lLgotICAgICAgICBjbGFzc19u
YW1lID0gbmFtZXNbLTFdCi0gICAgICAgIHJldHVybiByZXR1cm5fdHlwZSwgY2xhc3NfbmFtZQot
Ci0gICAgZGVmIGhhbmRsZV9ib29sKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFu
ZGxlX2NoYXIoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfaW50KHNlbGYp
OgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2xvbmcoc2VsZik6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBoYW5kbGVfc2hvcnQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRl
ZiBoYW5kbGVfZG91YmxlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2Zs
b2F0KHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3ZvaWQoc2VsZik6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfd2NoYXJfdChzZWxmKToKLSAgICAgICAgcGFz
cwotCi0gICAgZGVmIGhhbmRsZV91bnNpZ25lZChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAg
ZGVmIGhhbmRsZV9zaWduZWQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfR2V0TmVz
dGVkVHlwZShzZWxmLCBjdG9yKToKLSAgICAgICAgbmFtZSA9IE5vbmUKLSAgICAgICAgbmFtZV90
b2tlbnMsIHRva2VuID0gc2VsZi5HZXROYW1lKCkKLSAgICAgICAgaWYgbmFtZV90b2tlbnM6Ci0g
ICAgICAgICAgICBuYW1lID0gJycuam9pbihbdC5uYW1lIGZvciB0IGluIG5hbWVfdG9rZW5zXSkK
LQotICAgICAgICAjIEhhbmRsZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgaWYgdG9r
ZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVggYW5kIHRva2VuLm5hbWUgPT0gJzsnOgot
ICAgICAgICAgICAgcmV0dXJuIGN0b3IodG9rZW4uc3RhcnQsIHRva2VuLmVuZCwgbmFtZSwgTm9u
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotCi0gICAg
ICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFNRSBhbmQgc2VsZi5faGFuZGxp
bmdfdHlwZWRlZjoKLSAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih0b2tlbikKLSAgICAg
ICAgICAgIHJldHVybiBjdG9yKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQsIG5hbWUsIE5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgICAgICAj
IE11c3QgYmUgdGhlIHR5cGUgZGVjbGFyYXRpb24uCi0gICAgICAgIGZpZWxkcyA9IGxpc3Qoc2Vs
Zi5fR2V0TWF0Y2hpbmdDaGFyKCd7JywgJ30nKSkKLSAgICAgICAgZGVsIGZpZWxkc1stMV0gICAg
ICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAnfScuCi0gICAgICAgIGlmIHRva2VuLnRv
a2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZCB0b2tlbi5uYW1lID09ICd7JzoKLSAgICAg
ICAgICAgIG5leHQgPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgbmV3X3R5cGUg
PSBjdG9yKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQsIG5hbWUsIGZpZWxkcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLSAgICAgICAgICAgICMgQSBu
YW1lIG1lYW5zIHRoaXMgaXMgYW4gYW5vbnltb3VzIHR5cGUgYW5kIHRoZSBuYW1lCi0gICAgICAg
ICAgICAjIGlzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAgIGlmIG5leHQu
dG9rZW5fdHlwZSAhPSB0b2tlbml6ZS5OQU1FOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXdf
dHlwZQotICAgICAgICAgICAgbmFtZSA9IG5ld190eXBlCi0gICAgICAgICAgICB0b2tlbiA9IG5l
eHQKLQotICAgICAgICAjIE11c3QgYmUgdmFyaWFibGUgZGVjbGFyYXRpb24gdXNpbmcgdGhlIHR5
cGUgcHJlZml4ZWQgd2l0aCBrZXl3b3JkLgotICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5OQU1FLCB0b2tlbgotICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFy
aWFibGUodG9rZW4sIHRva2VuLm5hbWUsIG5hbWUsIFtdLCAnJywgTm9uZSkKLQotICAgIGRlZiBo
YW5kbGVfc3RydWN0KHNlbGYpOgotICAgICAgICAjIFNwZWNpYWwgY2FzZSB0aGUgaGFuZGxpbmcg
dHlwZWRlZi9hbGlhc2luZyBvZiBzdHJ1Y3RzIGhlcmUuCi0gICAgICAgICMgSXQgd291bGQgYmUg
YSBwYWluIHRvIGhhbmRsZSBpbiB0aGUgY2xhc3MgY29kZS4KLSAgICAgICAgbmFtZV90b2tlbnMs
IHZhcl90b2tlbiA9IHNlbGYuR2V0TmFtZSgpCi0gICAgICAgIGlmIG5hbWVfdG9rZW5zOgotICAg
ICAgICAgICAgbmV4dF90b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAgICBp
c19zeW50YXggPSAodmFyX3Rva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcl90b2tlbi5uYW1lWzBdIGluICcqJicpCi0gICAg
ICAgICAgICBpc192YXJpYWJsZSA9ICh2YXJfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5O
QU1FIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90b2tlbi5uYW1lID09ICc7
JykKLSAgICAgICAgICAgIHZhcmlhYmxlID0gdmFyX3Rva2VuCi0gICAgICAgICAgICBpZiBpc19z
eW50YXggYW5kIG5vdCBpc192YXJpYWJsZToKLSAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IG5l
eHRfdG9rZW4KLSAgICAgICAgICAgICAgICB0ZW1wID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAg
ICAgICAgICAgICAgICBpZiB0ZW1wLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZCB0
ZW1wLm5hbWUgPT0gJygnOgotICAgICAgICAgICAgICAgICAgICAjIEhhbmRsZSBtZXRob2RzIGRl
Y2xhcmVkIHRvIHJldHVybiBhIHN0cnVjdC4KLSAgICAgICAgICAgICAgICAgICAgdDAgPSBuYW1l
X3Rva2Vuc1swXQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgPSB0b2tlbml6ZS5Ub2tlbih0
b2tlbml6ZS5OQU1FLCAnc3RydWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdDAuc3RhcnQtNywgdDAuc3RhcnQtMikKLSAgICAgICAgICAgICAgICAgICAg
dHlwZV9hbmRfbmFtZSA9IFtzdHJ1Y3RdCi0gICAgICAgICAgICAgICAgICAgIHR5cGVfYW5kX25h
bWUuZXh0ZW5kKG5hbWVfdG9rZW5zKQotICAgICAgICAgICAgICAgICAgICB0eXBlX2FuZF9uYW1l
LmV4dGVuZCgodmFyX3Rva2VuLCBuZXh0X3Rva2VuKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX0dldE1ldGhvZCh0eXBlX2FuZF9uYW1lLCAwLCBOb25lLCBGYWxzZSkKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgdGVtcC5uYW1lID09ICc7JywgKHRlbXAsIG5hbWVfdG9rZW5zLCB2
YXJfdG9rZW4pCi0gICAgICAgICAgICBpZiBpc19zeW50YXggb3IgKGlzX3ZhcmlhYmxlIGFuZCBu
b3Qgc2VsZi5faGFuZGxpbmdfdHlwZWRlZik6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzID0g
WydzdHJ1Y3QnXQotICAgICAgICAgICAgICAgIHR5cGVfbmFtZSA9ICcnLmpvaW4oW3QubmFtZSBm
b3IgdCBpbiBuYW1lX3Rva2Vuc10pCi0gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBuYW1lX3Rv
a2Vuc1swXQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJsZShwb3Np
dGlvbiwgdmFyaWFibGUubmFtZSwgdHlwZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIHZhcl90b2tlbi5uYW1lLCBOb25lKQotICAg
ICAgICAgICAgbmFtZV90b2tlbnMuZXh0ZW5kKCh2YXJfdG9rZW4sIG5leHRfdG9rZW4pKQotICAg
ICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2VucyhuYW1lX3Rva2VucykKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih2YXJfdG9rZW4pCi0gICAgICAgIHJldHVy
biBzZWxmLl9HZXRDbGFzcyhTdHJ1Y3QsIFZJU0lCSUxJVFlfUFVCTElDLCBOb25lKQotCi0gICAg
ZGVmIGhhbmRsZV91bmlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX0dldE5lc3RlZFR5
cGUoVW5pb24pCi0KLSAgICBkZWYgaGFuZGxlX2VudW0oc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9HZXROZXN0ZWRUeXBlKEVudW0pCi0KLSAgICBkZWYgaGFuZGxlX2F1dG8oc2VsZik6Ci0g
ICAgICAgICMgVE9ETyhubm9yd2l0eik6IHdhcm4gYWJvdXQgdXNpbmcgYXV0bz8gIFByb2JhYmx5
IG5vdCBzaW5jZSBpdAotICAgICAgICAjIHdpbGwgYmUgcmVjbGFpbWVkIGFuZCB1c2VmdWwgZm9y
IEMrKzB4LgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3JlZ2lzdGVyKHNlbGYpOgot
ICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2NvbnN0KHNlbGYpOgotICAgICAgICBwYXNz
Ci0KLSAgICBkZWYgaGFuZGxlX2lubGluZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVm
IGhhbmRsZV9leHRlcm4oc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfc3Rh
dGljKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3ZpcnR1YWwoc2VsZik6
Ci0gICAgICAgICMgV2hhdCBmb2xsb3dzIG11c3QgYmUgYSBtZXRob2QuCi0gICAgICAgIHRva2Vu
ID0gdG9rZW4yID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgaWYgdG9rZW4ubmFtZSA9
PSAnaW5saW5lJzoKLSAgICAgICAgICAgICMgSEFDSyhubm9yd2l0eik6IGhhbmRsZSBpbmxpbmUg
ZHRvcnMgYnkgaWdub3JpbmcgJ2lubGluZScuCi0gICAgICAgICAgICB0b2tlbjIgPSBzZWxmLl9H
ZXROZXh0VG9rZW4oKQotICAgICAgICBpZiB0b2tlbjIudG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5T
WU5UQVggYW5kIHRva2VuMi5uYW1lID09ICd+JzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLkdl
dE1ldGhvZChGVU5DVElPTl9WSVJUVUFMICsgRlVOQ1RJT05fRFRPUiwgTm9uZSkKLSAgICAgICAg
YXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFNRSBvciB0b2tlbi5uYW1lID09
ICc6OicsIHRva2VuCi0gICAgICAgIHJldHVybl90eXBlX2FuZF9uYW1lID0gc2VsZi5fR2V0VG9r
ZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICcoJykgICMgKQotICAgICAgICByZXR1cm5fdHlwZV9h
bmRfbmFtZS5pbnNlcnQoMCwgdG9rZW4pCi0gICAgICAgIGlmIHRva2VuMiBpcyBub3QgdG9rZW46
Ci0gICAgICAgICAgICByZXR1cm5fdHlwZV9hbmRfbmFtZS5pbnNlcnQoMSwgdG9rZW4yKQotICAg
ICAgICByZXR1cm4gc2VsZi5fR2V0TWV0aG9kKHJldHVybl90eXBlX2FuZF9uYW1lLCBGVU5DVElP
Tl9WSVJUVUFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEZhbHNlKQot
Ci0gICAgZGVmIGhhbmRsZV92b2xhdGlsZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVm
IGhhbmRsZV9tdXRhYmxlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3B1
YmxpYyhzZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYuaW5fY2xhc3MKLSAgICAgICAgc2VsZi52
aXNpYmlsaXR5ID0gVklTSUJJTElUWV9QVUJMSUMKLQotICAgIGRlZiBoYW5kbGVfcHJvdGVjdGVk
KHNlbGYpOgotICAgICAgICBhc3NlcnQgc2VsZi5pbl9jbGFzcwotICAgICAgICBzZWxmLnZpc2li
aWxpdHkgPSBWSVNJQklMSVRZX1BST1RFQ1RFRAotCi0gICAgZGVmIGhhbmRsZV9wcml2YXRlKHNl
bGYpOgotICAgICAgICBhc3NlcnQgc2VsZi5pbl9jbGFzcwotICAgICAgICBzZWxmLnZpc2liaWxp
dHkgPSBWSVNJQklMSVRZX1BSSVZBVEUKLQotICAgIGRlZiBoYW5kbGVfZnJpZW5kKHNlbGYpOgot
ICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsn
KQotICAgICAgICBhc3NlcnQgdG9rZW5zCi0gICAgICAgIHQwID0gdG9rZW5zWzBdCi0gICAgICAg
IHJldHVybiBGcmllbmQodDAuc3RhcnQsIHQwLmVuZCwgdG9rZW5zLCBzZWxmLm5hbWVzcGFjZV9z
dGFjaykKLQotICAgIGRlZiBoYW5kbGVfc3RhdGljX2Nhc3Qoc2VsZik6Ci0gICAgICAgIHBhc3MK
LQotICAgIGRlZiBoYW5kbGVfY29uc3RfY2FzdChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAg
ZGVmIGhhbmRsZV9keW5hbWljX2Nhc3Qoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBo
YW5kbGVfcmVpbnRlcnByZXRfY2FzdChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhh
bmRsZV9uZXcoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfZGVsZXRlKHNl
bGYpOgotICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRB
WCwgJzsnKQotICAgICAgICBhc3NlcnQgdG9rZW5zCi0gICAgICAgIHJldHVybiBEZWxldGUodG9r
ZW5zWzBdLnN0YXJ0LCB0b2tlbnNbMF0uZW5kLCB0b2tlbnMpCi0KLSAgICBkZWYgaGFuZGxlX3R5
cGVkZWYoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAg
ICAgaWYgKHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFNRSBhbmQKLSAgICAgICAgICAg
IGtleXdvcmRzLklzS2V5d29yZCh0b2tlbi5uYW1lKSk6Ci0gICAgICAgICAgICAjIFRva2VuIG11
c3QgYmUgc3RydWN0L2VudW0vdW5pb24vY2xhc3MuCi0gICAgICAgICAgICBtZXRob2QgPSBnZXRh
dHRyKHNlbGYsICdoYW5kbGVfJyArIHRva2VuLm5hbWUpCi0gICAgICAgICAgICBzZWxmLl9oYW5k
bGluZ190eXBlZGVmID0gVHJ1ZQotICAgICAgICAgICAgdG9rZW5zID0gW21ldGhvZCgpXQotICAg
ICAgICAgICAgc2VsZi5faGFuZGxpbmdfdHlwZWRlZiA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICB0b2tlbnMgPSBbdG9rZW5dCi0KLSAgICAgICAgIyBHZXQgdGhlIHJlbWFpbmRl
ciBvZiB0aGUgdHlwZWRlZiB1cCB0byB0aGUgc2VtaS1jb2xvbi4KLSAgICAgICAgdG9rZW5zLmV4
dGVuZChzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsnKSkKLQotICAgICAg
ICAjIFRPRE8obm5vcndpdHopOiBjbGVhbiBhbGwgdGhpcyB1cC4KLSAgICAgICAgYXNzZXJ0IHRv
a2VucwotICAgICAgICBuYW1lID0gdG9rZW5zLnBvcCgpCi0gICAgICAgIGluZGljZXMgPSBuYW1l
Ci0gICAgICAgIGlmIHRva2VuczoKLSAgICAgICAgICAgIGluZGljZXMgPSB0b2tlbnNbMF0KLSAg
ICAgICAgaWYgbm90IGluZGljZXM6Ci0gICAgICAgICAgICBpbmRpY2VzID0gdG9rZW4KLSAgICAg
ICAgaWYgbmFtZS5uYW1lID09ICcpJzoKLSAgICAgICAgICAgICMgSEFDSyhubm9yd2l0eik6IEhh
bmRsZSBwb2ludGVycyB0byBmdW5jdGlvbnMgInByb3Blcmx5Ii4KLSAgICAgICAgICAgIGlmIChs
ZW4odG9rZW5zKSA+PSA0IGFuZAotICAgICAgICAgICAgICAgIHRva2Vuc1sxXS5uYW1lID09ICco
JyBhbmQgdG9rZW5zWzJdLm5hbWUgPT0gJyonKToKLSAgICAgICAgICAgICAgICB0b2tlbnMuYXBw
ZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZSA9IHRva2Vuc1szXQotICAgICAgICBlbGlm
IG5hbWUubmFtZSA9PSAnXSc6Ci0gICAgICAgICAgICAjIEhBQ0sobm5vcndpdHopOiBIYW5kbGUg
YXJyYXlzIHByb3Blcmx5LgotICAgICAgICAgICAgaWYgbGVuKHRva2VucykgPj0gMjoKLSAgICAg
ICAgICAgICAgICB0b2tlbnMuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZSA9IHRv
a2Vuc1sxXQotICAgICAgICBuZXdfdHlwZSA9IHRva2VucwotICAgICAgICBpZiB0b2tlbnMgYW5k
IGlzaW5zdGFuY2UodG9rZW5zWzBdLCB0b2tlbml6ZS5Ub2tlbik6Ci0gICAgICAgICAgICBuZXdf
dHlwZSA9IHNlbGYuY29udmVydGVyLlRvVHlwZSh0b2tlbnMpWzBdCi0gICAgICAgIHJldHVybiBU
eXBlZGVmKGluZGljZXMuc3RhcnQsIGluZGljZXMuZW5kLCBuYW1lLm5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIG5ld190eXBlLCBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgIGRlZiBo
YW5kbGVfdHlwZWlkKHNlbGYpOgotICAgICAgICBwYXNzICAjIE5vdCBuZWVkZWQgeWV0LgotCi0g
ICAgZGVmIGhhbmRsZV90eXBlbmFtZShzZWxmKToKLSAgICAgICAgcGFzcyAgIyBOb3QgbmVlZGVk
IHlldC4KLQotICAgIGRlZiBfR2V0VGVtcGxhdGVkVHlwZXMoc2VsZik6Ci0gICAgICAgIHJlc3Vs
dCA9IHt9Ci0gICAgICAgIHRva2VucyA9IGxpc3Qoc2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCc8Jywg
Jz4nKSkKLSAgICAgICAgbGVuX3Rva2VucyA9IGxlbih0b2tlbnMpIC0gMSAgICAjIElnbm9yZSB0
cmFpbGluZyAnPicuCi0gICAgICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsZW5fdG9rZW5z
OgotICAgICAgICAgICAga2V5ID0gdG9rZW5zW2ldLm5hbWUKLSAgICAgICAgICAgIGkgKz0gMQot
ICAgICAgICAgICAgaWYga2V5d29yZHMuSXNLZXl3b3JkKGtleSkgb3Iga2V5ID09ICcsJzoKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHlwZV9uYW1lID0gZGVmYXVsdCA9
IE5vbmUKLSAgICAgICAgICAgIGlmIGkgPCBsZW5fdG9rZW5zOgotICAgICAgICAgICAgICAgIGkg
Kz0gMQotICAgICAgICAgICAgICAgIGlmIHRva2Vuc1tpLTFdLm5hbWUgPT0gJz0nOgotICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgaSA8IGxlbl90b2tlbnMsICclcyAlcycgJSAoaSwgdG9rZW5z
KQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LCB1bnVzZWRfbmV4dF90b2tlbiA9IHNlbGYu
R2V0TmFtZSh0b2tlbnNbaTpdKQotICAgICAgICAgICAgICAgICAgICBpICs9IGxlbihkZWZhdWx0
KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRva2Vuc1tp
LTFdLm5hbWUgIT0gJywnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBnb3Qgc29tZXRo
aW5nIGxpa2U6IFR5cGUgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJlLWFk
anVzdCB0aGUga2V5ICh2YXJpYWJsZSkgYW5kIHR5cGVfbmFtZSAoVHlwZSkuCi0gICAgICAgICAg
ICAgICAgICAgICAgICBrZXkgPSB0b2tlbnNbaS0xXS5uYW1lCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlX25hbWUgPSB0b2tlbnNbaS0yXQotCi0gICAgICAgICAgICByZXN1bHRba2V5XSA9
ICh0eXBlX25hbWUsIGRlZmF1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBo
YW5kbGVfdGVtcGxhdGUoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2Vu
KCkKLSAgICAgICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCB0
b2tlbgotICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAnPCcsIHRva2VuCi0gICAgICAgIHRl
bXBsYXRlZF90eXBlcyA9IHNlbGYuX0dldFRlbXBsYXRlZFR5cGVzKCkKLSAgICAgICAgIyBUT0RP
KG5ub3J3aXR6KTogZm9yIG5vdywganVzdCBpZ25vcmUgdGhlIHRlbXBsYXRlIHBhcmFtcy4KLSAg
ICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICBpZiB0b2tlbi50b2tl
bl90eXBlID09IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09ICdj
bGFzcyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldENsYXNzKENsYXNzLCBWSVNJ
QklMSVRZX1BSSVZBVEUsIHRlbXBsYXRlZF90eXBlcykKLSAgICAgICAgICAgIGVsaWYgdG9rZW4u
bmFtZSA9PSAnc3RydWN0JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fR2V0Q2xhc3Mo
U3RydWN0LCBWSVNJQklMSVRZX1BVQkxJQywgdGVtcGxhdGVkX3R5cGVzKQotICAgICAgICAgICAg
ZWxpZiB0b2tlbi5uYW1lID09ICdmcmllbmQnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LmhhbmRsZV9mcmllbmQoKQotICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4odG9rZW4pCi0gICAg
ICAgIHRva2VucywgbGFzdCA9IHNlbGYuX0dldFZhclRva2Vuc1VwVG8odG9rZW5pemUuU1lOVEFY
LCAnKCcsICc7JykKLSAgICAgICAgdG9rZW5zLmFwcGVuZChsYXN0KQotICAgICAgICBzZWxmLl9B
ZGRCYWNrVG9rZW5zKHRva2VucykKLSAgICAgICAgaWYgbGFzdC5uYW1lID09ICcoJzoKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLkdldE1ldGhvZChGVU5DVElPTl9OT05FLCB0ZW1wbGF0ZWRfdHlw
ZXMpCi0gICAgICAgICMgTXVzdCBiZSBhIHZhcmlhYmxlIGRlZmluaXRpb24uCi0gICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICBkZWYgaGFuZGxlX3RydWUoc2VsZik6Ci0gICAgICAgIHBhc3MgICMg
Tm90aGluZyB0byBkby4KLQotICAgIGRlZiBoYW5kbGVfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHBh
c3MgICMgTm90aGluZyB0byBkby4KLQotICAgIGRlZiBoYW5kbGVfYXNtKHNlbGYpOgotICAgICAg
ICBwYXNzICAjIE5vdCBuZWVkZWQgeWV0LgotCi0gICAgZGVmIGhhbmRsZV9jbGFzcyhzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX0dldENsYXNzKENsYXNzLCBWSVNJQklMSVRZX1BSSVZBVEUs
IE5vbmUpCi0KLSAgICBkZWYgX0dldEJhc2VzKHNlbGYpOgotICAgICAgICAjIEdldCBiYXNlIGNs
YXNzZXMuCi0gICAgICAgIGJhc2VzID0gW10KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAg
IHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGFzc2VydCB0b2tlbi50
b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUsIHRva2VuCi0gICAgICAgICAgICAjIFRPRE8obm5v
cndpdHopOiBzdG9yZSBraW5kIG9mIGluaGVyaXRhbmNlLi4ubWF5YmUuCi0gICAgICAgICAgICBp
ZiB0b2tlbi5uYW1lIG5vdCBpbiAoJ3B1YmxpYycsICdwcm90ZWN0ZWQnLCAncHJpdmF0ZScpOgot
ICAgICAgICAgICAgICAgICMgSWYgaW5oZXJpdGFuY2UgdHlwZSBpcyBub3Qgc3BlY2lmaWVkLCBp
dCBpcyBwcml2YXRlLgotICAgICAgICAgICAgICAgICMgSnVzdCBwdXQgdGhlIHRva2VuIGJhY2sg
c28gd2UgY2FuIGZvcm0gYSBuYW1lLgotICAgICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6
IGl0IHdvdWxkIGJlIGdvb2QgdG8gd2FybiBhYm91dCB0aGlzLgotICAgICAgICAgICAgICAgIHNl
bGYuX0FkZEJhY2tUb2tlbih0b2tlbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgIyBDaGVjayBmb3IgdmlydHVhbCBpbmhlcml0YW5jZS4KLSAgICAgICAgICAgICAgICB0b2tl
biA9IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSAh
PSAndmlydHVhbCc6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih0b2tl
bikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFRPRE8obm5v
cndpdHopOiBzdG9yZSB0aGF0IHdlIGdvdCB2aXJ0dWFsIGZvciB0aGlzIGJhc2UuCi0gICAgICAg
ICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGJhc2UsIG5leHRfdG9rZW4gPSBzZWxmLkdl
dE5hbWUoKQotICAgICAgICAgICAgYmFzZXNfYXN0ID0gc2VsZi5jb252ZXJ0ZXIuVG9UeXBlKGJh
c2UpCi0gICAgICAgICAgICBhc3NlcnQgbGVuKGJhc2VzX2FzdCkgPT0gMSwgYmFzZXNfYXN0Ci0g
ICAgICAgICAgICBiYXNlcy5hcHBlbmQoYmFzZXNfYXN0WzBdKQotICAgICAgICAgICAgYXNzZXJ0
IG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIG5leHRfdG9rZW4KLSAg
ICAgICAgICAgIGlmIG5leHRfdG9rZW4ubmFtZSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgdG9r
ZW4gPSBuZXh0X3Rva2VuCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICMgU3Vw
cG9ydCBtdWx0aXBsZSBpbmhlcml0YW5jZS4KLSAgICAgICAgICAgIGFzc2VydCBuZXh0X3Rva2Vu
Lm5hbWUgPT0gJywnLCBuZXh0X3Rva2VuCi0gICAgICAgIHJldHVybiBiYXNlcywgdG9rZW4KLQot
ICAgIGRlZiBfR2V0Q2xhc3Moc2VsZiwgY2xhc3NfdHlwZSwgdmlzaWJpbGl0eSwgdGVtcGxhdGVk
X3R5cGVzKToKLSAgICAgICAgY2xhc3NfbmFtZSA9IE5vbmUKLSAgICAgICAgY2xhc3NfdG9rZW4g
PSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICBpZiBjbGFzc190b2tlbi50b2tlbl90eXBl
ICE9IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAgICBhc3NlcnQgY2xhc3NfdG9rZW4udG9rZW5f
dHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIGNsYXNzX3Rva2VuCi0gICAgICAgICAgICB0b2tlbiA9
IGNsYXNzX3Rva2VuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFNraXAgYW55IG1hY3Jv
IChlLmcuIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVycykgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAj
ICdjbGFzcycga2V5d29yZC4KLSAgICAgICAgICAgIG5leHRfdG9rZW4gPSBzZWxmLl9HZXROZXh0
VG9rZW4oKQotICAgICAgICAgICAgaWYgbmV4dF90b2tlbi50b2tlbl90eXBlID09IHRva2VuaXpl
Lk5BTUU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2VuKG5leHRfdG9rZW4pCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbnMoW2Ns
YXNzX3Rva2VuLCBuZXh0X3Rva2VuXSkKLSAgICAgICAgICAgIG5hbWVfdG9rZW5zLCB0b2tlbiA9
IHNlbGYuR2V0TmFtZSgpCi0gICAgICAgICAgICBjbGFzc19uYW1lID0gJycuam9pbihbdC5uYW1l
IGZvciB0IGluIG5hbWVfdG9rZW5zXSkKLSAgICAgICAgYmFzZXMgPSBOb25lCi0gICAgICAgIGlm
IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYOgotICAgICAgICAgICAgaWYgdG9r
ZW4ubmFtZSA9PSAnOyc6Ci0gICAgICAgICAgICAgICAgIyBGb3J3YXJkIGRlY2xhcmF0aW9uLgot
ICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc190eXBlKGNsYXNzX3Rva2VuLnN0YXJ0LCBjbGFz
c190b2tlbi5lbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfbmFt
ZSwgTm9uZSwgdGVtcGxhdGVkX3R5cGVzLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotICAgICAgICAgICAgaWYgdG9rZW4ubmFt
ZSBpbiAnKiYnOgotICAgICAgICAgICAgICAgICMgSW5saW5lIGZvcndhcmQgZGVjbGFyYXRpb24u
ICBDb3VsZCBiZSBtZXRob2Qgb3IgZGF0YS4KLSAgICAgICAgICAgICAgICBuYW1lX3Rva2VuID0g
c2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBuZXh0X3Rva2VuID0gc2VsZi5f
R2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBpZiBuZXh0X3Rva2VuLm5hbWUgPT0gJzsn
OgotICAgICAgICAgICAgICAgICAgICAjIEhhbmRsZSBkYXRhCi0gICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVycyA9IFsnY2xhc3MnXQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
Q3JlYXRlVmFyaWFibGUoY2xhc3NfdG9rZW4sIG5hbWVfdG9rZW4ubmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX25hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIHRva2Vu
Lm5hbWUsIE5vbmUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
IyBBc3N1bWUgdGhpcyBpcyBhIG1ldGhvZC4KLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zID0g
KGNsYXNzX3Rva2VuLCB0b2tlbiwgbmFtZV90b2tlbiwgbmV4dF90b2tlbikKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2Vucyh0b2tlbnMpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLkdldE1ldGhvZChGVU5DVElPTl9OT05FLCBOb25lKQotICAgICAgICAgICAg
aWYgdG9rZW4ubmFtZSA9PSAnOic6Ci0gICAgICAgICAgICAgICAgYmFzZXMsIHRva2VuID0gc2Vs
Zi5fR2V0QmFzZXMoKQotCi0gICAgICAgIGJvZHkgPSBOb25lCi0gICAgICAgIGlmIHRva2VuLnRv
a2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZCB0b2tlbi5uYW1lID09ICd7JzoKLSAgICAg
ICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCwgdG9rZW4K
LSAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICd7JywgdG9rZW4KLQotICAgICAgICAg
ICAgYXN0ID0gQXN0QnVpbGRlcihzZWxmLkdldFNjb3BlKCksIHNlbGYuZmlsZW5hbWUsIGNsYXNz
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHksIHNlbGYubmFt
ZXNwYWNlX3N0YWNrKQotICAgICAgICAgICAgYm9keSA9IGxpc3QoYXN0LkdlbmVyYXRlKCkpCi0K
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kbGluZ190eXBlZGVmOgotICAgICAgICAgICAg
ICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBpZiB0b2tl
bi50b2tlbl90eXBlICE9IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCwgdG9rZW4KLSAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJzsnLCB0b2tlbgotICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG5ld19jbGFzcyA9IGNsYXNzX3R5cGUoY2xhc3Nf
dG9rZW4uc3RhcnQsIGNsYXNzX3Rva2VuLmVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGFzc19uYW1lLCBiYXNlcywgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBzZWxmLm5hbWVzcGFjZV9zdGFjaykK
LQotICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMgPSBbXQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFyaWFibGUoY2xhc3NfdG9rZW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5uYW1lLCBuZXdfY2xhc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmll
cnMsIHRva2VuLm5hbWUsIE5vbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3Qg
c2VsZi5faGFuZGxpbmdfdHlwZWRlZjoKLSAgICAgICAgICAgICAgICBzZWxmLkhhbmRsZUVycm9y
KCdub24tdHlwZWRlZiB0b2tlbicsIHRva2VuKQotICAgICAgICAgICAgc2VsZi5fQWRkQmFja1Rv
a2VuKHRva2VuKQotCi0gICAgICAgIHJldHVybiBjbGFzc190eXBlKGNsYXNzX3Rva2VuLnN0YXJ0
LCBjbGFzc190b2tlbi5lbmQsIGNsYXNzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2VzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotCi0g
ICAgZGVmIGhhbmRsZV9uYW1lc3BhY2Uoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgIyBTdXBwb3J0IGFub255bW91cyBuYW1lc3BhY2VzLgotICAg
ICAgICBuYW1lID0gTm9uZQotICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXpl
Lk5BTUU6Ci0gICAgICAgICAgICBuYW1lID0gdG9rZW4ubmFtZQotICAgICAgICAgICAgdG9rZW4g
PSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjay5hcHBl
bmQobmFtZSkKLSAgICAgICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lO
VEFYLCB0b2tlbgotICAgICAgICAjIENyZWF0ZSBhbiBpbnRlcm5hbCB0b2tlbiB0aGF0IGRlbm90
ZXMgd2hlbiB0aGUgbmFtZXNwYWNlIGlzIGNvbXBsZXRlLgotICAgICAgICBpbnRlcm5hbF90b2tl
biA9IHRva2VuaXplLlRva2VuKF9JTlRFUk5BTF9UT0tFTiwgX05BTUVTUEFDRV9QT1AsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSkKLSAgICAgICAg
aW50ZXJuYWxfdG9rZW4ud2hlbmNlID0gdG9rZW4ud2hlbmNlCi0gICAgICAgIGlmIHRva2VuLm5h
bWUgPT0gJz0nOgotICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaGFuZGxlIGFsaWFzaW5n
IG5hbWVzcGFjZXMuCi0gICAgICAgICAgICBuYW1lLCBuZXh0X3Rva2VuID0gc2VsZi5HZXROYW1l
KCkKLSAgICAgICAgICAgIGFzc2VydCBuZXh0X3Rva2VuLm5hbWUgPT0gJzsnLCBuZXh0X3Rva2Vu
Ci0gICAgICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4oaW50ZXJuYWxfdG9rZW4pCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAneycsIHRva2VuCi0gICAg
ICAgICAgICB0b2tlbnMgPSBsaXN0KHNlbGYuR2V0U2NvcGUoKSkKLSAgICAgICAgICAgICMgUmVw
bGFjZSB0aGUgdHJhaWxpbmcgfSB3aXRoIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgcG9wIHRva2Vu
LgotICAgICAgICAgICAgdG9rZW5zWy0xXSA9IGludGVybmFsX3Rva2VuCi0gICAgICAgICAgICAj
IEhhbmRsZSBuYW1lc3BhY2Ugd2l0aCBub3RoaW5nIGluIGl0LgotICAgICAgICAgICAgc2VsZi5f
QWRkQmFja1Rva2Vucyh0b2tlbnMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgaGFu
ZGxlX3VzaW5nKHNlbGYpOgotICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRv
a2VuaXplLlNZTlRBWCwgJzsnKQotICAgICAgICBhc3NlcnQgdG9rZW5zCi0gICAgICAgIHJldHVy
biBVc2luZyh0b2tlbnNbMF0uc3RhcnQsIHRva2Vuc1swXS5lbmQsIHRva2VucykKLQotICAgIGRl
ZiBoYW5kbGVfZXhwbGljaXQoc2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLmluX2NsYXNzCi0g
ICAgICAgICMgTm90aGluZyBtdWNoIHRvIGRvLgotICAgICAgICAjIFRPRE8obm5vcndpdHopOiBt
YXliZSB2ZXJpZnkgdGhlIG1ldGhvZCBuYW1lID09IGNsYXNzIG5hbWUuCi0gICAgICAgICMgVGhp
cyBtdXN0IGJlIGEgY3Rvci4KLSAgICAgICAgcmV0dXJuIHNlbGYuR2V0TWV0aG9kKEZVTkNUSU9O
X0NUT1IsIE5vbmUpCi0KLSAgICBkZWYgaGFuZGxlX3RoaXMoc2VsZik6Ci0gICAgICAgIHBhc3Mg
ICMgTm90aGluZyB0byBkby4KLQotICAgIGRlZiBoYW5kbGVfb3BlcmF0b3Ioc2VsZik6Ci0gICAg
ICAgICMgUHVsbCBvZmYgdGhlIG5leHQgdG9rZW4ocz8pIGFuZCBtYWtlIHRoYXQgcGFydCBvZiB0
aGUgbWV0aG9kIG5hbWUuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfc2l6ZW9mKHNl
bGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2Nhc2Uoc2VsZik6Ci0gICAgICAg
IHBhc3MKLQotICAgIGRlZiBoYW5kbGVfc3dpdGNoKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgaGFuZGxlX2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4
dFRva2VuKCkKLSAgICAgICAgYXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lO
VEFYCi0gICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICc6JwotCi0gICAgZGVmIGhhbmRsZV9p
ZihzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9lbHNlKHNlbGYpOgotICAg
ICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3JldHVybihzZWxmKToKLSAgICAgICAgdG9rZW5z
ID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICc7JykKLSAgICAgICAgaWYg
bm90IHRva2VuczoKLSAgICAgICAgICAgIHJldHVybiBSZXR1cm4oc2VsZi5jdXJyZW50X3Rva2Vu
LnN0YXJ0LCBzZWxmLmN1cnJlbnRfdG9rZW4uZW5kLCBOb25lKQotICAgICAgICByZXR1cm4gUmV0
dXJuKHRva2Vuc1swXS5zdGFydCwgdG9rZW5zWzBdLmVuZCwgdG9rZW5zKQotCi0gICAgZGVmIGhh
bmRsZV9nb3RvKHNlbGYpOgotICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRv
a2VuaXplLlNZTlRBWCwgJzsnKQotICAgICAgICBhc3NlcnQgbGVuKHRva2VucykgPT0gMSwgc3Ry
KHRva2VucykKLSAgICAgICAgcmV0dXJuIEdvdG8odG9rZW5zWzBdLnN0YXJ0LCB0b2tlbnNbMF0u
ZW5kLCB0b2tlbnNbMF0ubmFtZSkKLQotICAgIGRlZiBoYW5kbGVfdHJ5KHNlbGYpOgotICAgICAg
ICBwYXNzICAjIE5vdCBuZWVkZWQgeWV0LgotCi0gICAgZGVmIGhhbmRsZV9jYXRjaChzZWxmKToK
LSAgICAgICAgcGFzcyAgIyBOb3QgbmVlZGVkIHlldC4KLQotICAgIGRlZiBoYW5kbGVfdGhyb3co
c2VsZik6Ci0gICAgICAgIHBhc3MgICMgTm90IG5lZWRlZCB5ZXQuCi0KLSAgICBkZWYgaGFuZGxl
X3doaWxlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2RvKHNlbGYpOgot
ICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2ZvcihzZWxmKToKLSAgICAgICAgcGFzcwot
Ci0gICAgZGVmIGhhbmRsZV9icmVhayhzZWxmKToKLSAgICAgICAgc2VsZi5fSWdub3JlVXBUbyh0
b2tlbml6ZS5TWU5UQVgsICc7JykKLQotICAgIGRlZiBoYW5kbGVfY29udGludWUoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX0lnbm9yZVVwVG8odG9rZW5pemUuU1lOVEFYLCAnOycpCi0KLQotZGVmIEJ1
aWxkZXJGcm9tU291cmNlKHNvdXJjZSwgZmlsZW5hbWUpOgotICAgICIiIlV0aWxpdHkgbWV0aG9k
IHRoYXQgcmV0dXJucyBhbiBBc3RCdWlsZGVyIGZyb20gc291cmNlIGNvZGUuCi0KLSAgICBBcmdz
OgotICAgICAgc291cmNlOiAnQysrIHNvdXJjZSBjb2RlJwotICAgICAgZmlsZW5hbWU6ICdmaWxl
MScKLQotICAgIFJldHVybnM6Ci0gICAgICBBc3RCdWlsZGVyCi0gICAgIiIiCi0gICAgcmV0dXJu
IEFzdEJ1aWxkZXIodG9rZW5pemUuR2V0VG9rZW5zKHNvdXJjZSksIGZpbGVuYW1lKQotCi0KLWRl
ZiBQcmludEluZGVudGlmaWVycyhmaWxlbmFtZSwgc2hvdWxkX3ByaW50KToKLSAgICAiIiJQcmlu
dHMgYWxsIGlkZW50aWZpZXJzIGZvciBhIEMrKyBzb3VyY2UgZmlsZS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmaWxlbmFtZTogJ2ZpbGUxJwotICAgICAgc2hvdWxkX3ByaW50OiBwcmVkaWNhdGUgd2l0
aCBzaWduYXR1cmU6IGJvb2wgRnVuY3Rpb24odG9rZW4pCi0gICAgIiIiCi0gICAgc291cmNlID0g
dXRpbHMuUmVhZEZpbGUoZmlsZW5hbWUsIEZhbHNlKQotICAgIGlmIHNvdXJjZSBpcyBOb25lOgot
ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdVbmFibGUgdG8gZmluZDogJXNcbicgJSBmaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjcHJpbnQoJ1Byb2Nlc3NpbmcgJXMnICUgYWN0dWFs
X2ZpbGVuYW1lKQotICAgIGJ1aWxkZXIgPSBCdWlsZGVyRnJvbVNvdXJjZShzb3VyY2UsIGZpbGVu
YW1lKQotICAgIHRyeToKLSAgICAgICAgZm9yIG5vZGUgaW4gYnVpbGRlci5HZW5lcmF0ZSgpOgot
ICAgICAgICAgICAgaWYgc2hvdWxkX3ByaW50KG5vZGUpOgotICAgICAgICAgICAgICAgIHByaW50
KG5vZGUubmFtZSkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHJldHVy
bgotICAgIGV4Y2VwdDoKLSAgICAgICAgcGFzcwotCi0KLWRlZiBQcmludEFsbEluZGVudGlmaWVy
cyhmaWxlbmFtZXMsIHNob3VsZF9wcmludCk6Ci0gICAgIiIiUHJpbnRzIGFsbCBpZGVudGlmaWVy
cyBmb3IgZWFjaCBDKysgc291cmNlIGZpbGUgaW4gZmlsZW5hbWVzLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lczogWydmaWxlMScsICdmaWxlMicsIC4uLl0KLSAgICAgIHNob3VsZF9wcmlu
dDogcHJlZGljYXRlIHdpdGggc2lnbmF0dXJlOiBib29sIEZ1bmN0aW9uKHRva2VuKQotICAgICIi
IgotICAgIGZvciBwYXRoIGluIGZpbGVuYW1lczoKLSAgICAgICAgUHJpbnRJbmRlbnRpZmllcnMo
cGF0aCwgc2hvdWxkX3ByaW50KQotCi0KLWRlZiBtYWluKGFyZ3YpOgotICAgIGZvciBmaWxlbmFt
ZSBpbiBhcmd2WzE6XToKLSAgICAgICAgc291cmNlID0gdXRpbHMuUmVhZEZpbGUoZmlsZW5hbWUp
Ci0gICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICBwcmludCgnUHJvY2Vzc2luZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgYnVpbGRlciA9
IEJ1aWxkZXJGcm9tU291cmNlKHNvdXJjZSwgZmlsZW5hbWUpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGVudGlyZV9hc3QgPSBmaWx0ZXIoTm9uZSwgYnVpbGRlci5HZW5lcmF0ZSgpKQotICAg
ICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAg
ICAgZXhjZXB0OgotICAgICAgICAgICAgIyBBbHJlYWR5IHByaW50ZWQgYSB3YXJuaW5nLCBwcmlu
dCB0aGUgdHJhY2ViYWNrIGFuZCBjb250aW51ZS4KLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmlu
dF9leGMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgdXRpbHMuREVCVUc6Ci0gICAg
ICAgICAgICAgICAgZm9yIGFzdCBpbiBlbnRpcmVfYXN0OgotICAgICAgICAgICAgICAgICAgICBw
cmludChhc3QpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKHN5cy5h
cmd2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2Nr
X2NsYXNzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNz
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmOTk2NmNiYjRiMGUxN2VkZTZlZGEy
Y2EyOWU4YmE3MTE1Mzk0ZTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19jbGFzcy5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0j
Ci0jIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCi0jIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBP
UiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCi0jIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0iIiJHZW5lcmF0
ZSBHb29nbGUgTW9jayBjbGFzc2VzIGZyb20gYmFzZSBjbGFzc2VzLgotCi1UaGlzIHByb2dyYW0g
d2lsbCByZWFkIGluIGEgQysrIHNvdXJjZSBmaWxlIGFuZCBvdXRwdXQgdGhlIEdvb2dsZSBNb2Nr
Ci1jbGFzc2VzIGZvciB0aGUgc3BlY2lmaWVkIGNsYXNzZXMuICBJZiBubyBjbGFzcyBpcyBzcGVj
aWZpZWQsIGFsbAotY2xhc3NlcyBpbiB0aGUgc291cmNlIGZpbGUgYXJlIGVtaXR0ZWQuCi0KLVVz
YWdlOgotICBnbW9ja19jbGFzcy5weSBoZWFkZXItZmlsZS5oIFtDbGFzc05hbWVdLi4uCi0KLU91
dHB1dCBpcyBzZW50IHRvIHN0ZG91dC4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdv
b2dsZS5jb20gKE5lYWwgTm9yd2l0eiknCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9y
dCBzeXMKLQotZnJvbSBjcHAgaW1wb3J0IGFzdAotZnJvbSBjcHAgaW1wb3J0IHV0aWxzCi0KLSMg
UHJlc2VydmUgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLjMuCi10cnk6Ci0gIF9kdW1teSA9
IHNldAotZXhjZXB0IE5hbWVFcnJvcjoKLSAgaW1wb3J0IHNldHMKLSAgc2V0ID0gc2V0cy5TZXQK
LQotX1ZFUlNJT04gPSAoMSwgMCwgMSkgICMgVGhlIHZlcnNpb24gb2YgdGhpcyBzY3JpcHQuCi0j
IEhvdyBtYW55IHNwYWNlcyB0byBpbmRlbnQuICBDYW4gc2V0IG1lIHdpdGggdGhlIElOREVOVCBl
bnZpcm9ubWVudCB2YXJpYWJsZS4KLV9JTkRFTlQgPSAyCi0KLQotZGVmIF9HZW5lcmF0ZU1ldGhv
ZHMob3V0cHV0X2xpbmVzLCBzb3VyY2UsIGNsYXNzX25vZGUpOgotICBmdW5jdGlvbl90eXBlID0g
KGFzdC5GVU5DVElPTl9WSVJUVUFMIHwgYXN0LkZVTkNUSU9OX1BVUkVfVklSVFVBTCB8Ci0gICAg
ICAgICAgICAgICAgICAgYXN0LkZVTkNUSU9OX09WRVJSSURFKQotICBjdG9yX29yX2R0b3IgPSBh
c3QuRlVOQ1RJT05fQ1RPUiB8IGFzdC5GVU5DVElPTl9EVE9SCi0gIGluZGVudCA9ICcgJyAqIF9J
TkRFTlQKLQotICBmb3Igbm9kZSBpbiBjbGFzc19ub2RlLmJvZHk6Ci0gICAgIyBXZSBvbmx5IGNh
cmUgYWJvdXQgdmlydHVhbCBmdW5jdGlvbnMuCi0gICAgaWYgKGlzaW5zdGFuY2Uobm9kZSwgYXN0
LkZ1bmN0aW9uKSBhbmQKLSAgICAgICAgbm9kZS5tb2RpZmllcnMgJiBmdW5jdGlvbl90eXBlIGFu
ZAotICAgICAgICBub3Qgbm9kZS5tb2RpZmllcnMgJiBjdG9yX29yX2R0b3IpOgotICAgICAgIyBQ
aWNrIG91dCBhbGwgdGhlIGVsZW1lbnRzIHdlIG5lZWQgZnJvbSB0aGUgb3JpZ2luYWwgZnVuY3Rp
b24uCi0gICAgICBjb25zdCA9ICcnCi0gICAgICBpZiBub2RlLm1vZGlmaWVycyAmIGFzdC5GVU5D
VElPTl9DT05TVDoKLSAgICAgICAgY29uc3QgPSAnQ09OU1RfJwotICAgICAgcmV0dXJuX3R5cGUg
PSAndm9pZCcKLSAgICAgIGlmIG5vZGUucmV0dXJuX3R5cGU6Ci0gICAgICAgICMgQWRkIG1vZGlm
aWVycyBsaWtlICdjb25zdCcuCi0gICAgICAgIG1vZGlmaWVycyA9ICcnCi0gICAgICAgIGlmIG5v
ZGUucmV0dXJuX3R5cGUubW9kaWZpZXJzOgotICAgICAgICAgIG1vZGlmaWVycyA9ICcgJy5qb2lu
KG5vZGUucmV0dXJuX3R5cGUubW9kaWZpZXJzKSArICcgJwotICAgICAgICByZXR1cm5fdHlwZSA9
IG1vZGlmaWVycyArIG5vZGUucmV0dXJuX3R5cGUubmFtZQotICAgICAgICB0ZW1wbGF0ZV9hcmdz
ID0gW2FyZy5uYW1lIGZvciBhcmcgaW4gbm9kZS5yZXR1cm5fdHlwZS50ZW1wbGF0ZWRfdHlwZXNd
Ci0gICAgICAgIGlmIHRlbXBsYXRlX2FyZ3M6Ci0gICAgICAgICAgcmV0dXJuX3R5cGUgKz0gJzwn
ICsgJywgJy5qb2luKHRlbXBsYXRlX2FyZ3MpICsgJz4nCi0gICAgICAgICAgaWYgbGVuKHRlbXBs
YXRlX2FyZ3MpID4gMToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIFsKLSAgICAgICAgICAgICAg
ICAnLy8gVGhlIGZvbGxvd2luZyBsaW5lIHdvblwndCByZWFsbHkgY29tcGlsZSwgYXMgdGhlIHJl
dHVybicsCi0gICAgICAgICAgICAgICAgJy8vIHR5cGUgaGFzIG11bHRpcGxlIHRlbXBsYXRlIGFy
Z3VtZW50cy4gIFRvIGZpeCBpdCwgdXNlIGEnLAotICAgICAgICAgICAgICAgICcvLyB0eXBlZGVm
IGZvciB0aGUgcmV0dXJuIHR5cGUuJ106Ci0gICAgICAgICAgICAgIG91dHB1dF9saW5lcy5hcHBl
bmQoaW5kZW50ICsgbGluZSkKLSAgICAgICAgaWYgbm9kZS5yZXR1cm5fdHlwZS5wb2ludGVyOgot
ICAgICAgICAgIHJldHVybl90eXBlICs9ICcqJwotICAgICAgICBpZiBub2RlLnJldHVybl90eXBl
LnJlZmVyZW5jZToKLSAgICAgICAgICByZXR1cm5fdHlwZSArPSAnJicKLSAgICAgICAgbnVtX3Bh
cmFtZXRlcnMgPSBsZW4obm9kZS5wYXJhbWV0ZXJzKQotICAgICAgICBpZiBsZW4obm9kZS5wYXJh
bWV0ZXJzKSA9PSAxOgotICAgICAgICAgIGZpcnN0X3BhcmFtID0gbm9kZS5wYXJhbWV0ZXJzWzBd
Ci0gICAgICAgICAgaWYgc291cmNlW2ZpcnN0X3BhcmFtLnN0YXJ0OmZpcnN0X3BhcmFtLmVuZF0u
c3RyaXAoKSA9PSAndm9pZCc6Ci0gICAgICAgICAgICAjIFdlIG11c3QgdHJlYXQgVCh2b2lkKSBh
cyBhIGZ1bmN0aW9uIHdpdGggbm8gcGFyYW1ldGVycy4KLSAgICAgICAgICAgIG51bV9wYXJhbWV0
ZXJzID0gMAotICAgICAgdG1wbCA9ICcnCi0gICAgICBpZiBjbGFzc19ub2RlLnRlbXBsYXRlZF90
eXBlczoKLSAgICAgICAgdG1wbCA9ICdfVCcKLSAgICAgIG1vY2tfbWV0aG9kX21hY3JvID0gJ01P
Q0tfJXNNRVRIT0QlZCVzJyAlIChjb25zdCwgbnVtX3BhcmFtZXRlcnMsIHRtcGwpCi0KLSAgICAg
IGFyZ3MgPSAnJwotICAgICAgaWYgbm9kZS5wYXJhbWV0ZXJzOgotICAgICAgICAjIER1ZSB0byB0
aGUgcGFyc2VyIGxpbWl0YXRpb25zLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGtlZXAgY29tbWVudHMK
LSAgICAgICAgIyB3aGlsZSBzdHJpcHBpbmcgdGhlIGRlZmF1bHQgcGFyYW1ldGVycy4gIFdoZW4g
ZGVmYXVsdHMgYXJlCi0gICAgICAgICMgcHJlc2VudCwgd2UgY2hvb3NlIHRvIHN0cmlwIHRoZW0g
YW5kIGNvbW1lbnRzIChhbmQgcHJvZHVjZQotICAgICAgICAjIGNvbXBpbGFibGUgY29kZSkuCi0g
ICAgICAgICMgVE9ETyhubm9yd2l0ekBnb29nbGUuY29tKTogSW52ZXN0aWdhdGUgd2hldGhlciBp
dCBpcyBwb3NzaWJsZSB0bwotICAgICAgICAjIHByZXNlcnZlIHBhcmFtZXRlciBuYW1lIHdoZW4g
cmVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVyIHRleHQgZnJvbQotICAgICAgICAjIHRoZSBBU1QuCi0g
ICAgICAgIGlmIGxlbihbcGFyYW0gZm9yIHBhcmFtIGluIG5vZGUucGFyYW1ldGVycyBpZiBwYXJh
bS5kZWZhdWx0XSkgPiAwOgotICAgICAgICAgIGFyZ3MgPSAnLCAnLmpvaW4ocGFyYW0udHlwZS5u
YW1lIGZvciBwYXJhbSBpbiBub2RlLnBhcmFtZXRlcnMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgIyBHZXQgdGhlIGZ1bGwgdGV4dCBvZiB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBzdGFydAot
ICAgICAgICAgICMgb2YgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGUgZW5kIG9mIHRoZSBsYXN0
IHBhcmFtZXRlci4KLSAgICAgICAgICBzdGFydCA9IG5vZGUucGFyYW1ldGVyc1swXS5zdGFydAot
ICAgICAgICAgIGVuZCA9IG5vZGUucGFyYW1ldGVyc1stMV0uZW5kCi0gICAgICAgICAgIyBSZW1v
dmUgLy8gY29tbWVudHMuCi0gICAgICAgICAgYXJnc19zdHJpbmdzID0gcmUuc3ViKHInLy8uKics
ICcnLCBzb3VyY2Vbc3RhcnQ6ZW5kXSkKLSAgICAgICAgICAjIENvbmRlbnNlIG11bHRpcGxlIHNw
YWNlcyBhbmQgZWxpbWluYXRlIG5ld2xpbmVzIHB1dHRpbmcgdGhlCi0gICAgICAgICAgIyBwYXJh
bWV0ZXJzIHRvZ2V0aGVyIG9uIGEgc2luZ2xlIGxpbmUuICBFbnN1cmUgdGhlcmUgaXMgYQotICAg
ICAgICAgICMgc3BhY2UgaW4gYW4gYXJndW1lbnQgd2hpY2ggaXMgc3BsaXQgYnkgYSBuZXdsaW5l
IHdpdGhvdXQKLSAgICAgICAgICAjIGludGVydmVuaW5nIHdoaXRlc3BhY2UsIGUuZy46IGludFxu
QmFyCi0gICAgICAgICAgYXJncyA9IHJlLnN1YignICArJywgJyAnLCBhcmdzX3N0cmluZ3MucmVw
bGFjZSgnXG4nLCAnICcpKQotCi0gICAgICAjIENyZWF0ZSB0aGUgbW9jayBtZXRob2QgZGVmaW5p
dGlvbi4KLSAgICAgIG91dHB1dF9saW5lcy5leHRlbmQoWyclcyVzKCVzLCcgJSAoaW5kZW50LCBt
b2NrX21ldGhvZF9tYWNybywgbm9kZS5uYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICclcyVzKCVzKSk7JyAlIChpbmRlbnQqMywgcmV0dXJuX3R5cGUsIGFyZ3MpXSkKLQotCi1kZWYg
X0dlbmVyYXRlTW9ja3MoZmlsZW5hbWUsIHNvdXJjZSwgYXN0X2xpc3QsIGRlc2lyZWRfY2xhc3Nf
bmFtZXMpOgotICBwcm9jZXNzZWRfY2xhc3NfbmFtZXMgPSBzZXQoKQotICBsaW5lcyA9IFtdCi0g
IGZvciBub2RlIGluIGFzdF9saXN0OgotICAgIGlmIChpc2luc3RhbmNlKG5vZGUsIGFzdC5DbGFz
cykgYW5kIG5vZGUuYm9keSBhbmQKLSAgICAgICAgIyBkZXNpcmVkX2NsYXNzX25hbWVzIGJlaW5n
IE5vbmUgbWVhbnMgdGhhdCBhbGwgY2xhc3NlcyBhcmUgc2VsZWN0ZWQuCi0gICAgICAgIChub3Qg
ZGVzaXJlZF9jbGFzc19uYW1lcyBvciBub2RlLm5hbWUgaW4gZGVzaXJlZF9jbGFzc19uYW1lcykp
OgotICAgICAgY2xhc3NfbmFtZSA9IG5vZGUubmFtZQotICAgICAgcGFyZW50X25hbWUgPSBjbGFz
c19uYW1lCi0gICAgICBwcm9jZXNzZWRfY2xhc3NfbmFtZXMuYWRkKGNsYXNzX25hbWUpCi0gICAg
ICBjbGFzc19ub2RlID0gbm9kZQotICAgICAgIyBBZGQgbmFtZXNwYWNlIGJlZm9yZSB0aGUgY2xh
c3MuCi0gICAgICBpZiBjbGFzc19ub2RlLm5hbWVzcGFjZToKLSAgICAgICAgbGluZXMuZXh0ZW5k
KFsnbmFtZXNwYWNlICVzIHsnICUgbiBmb3IgbiBpbiBjbGFzc19ub2RlLm5hbWVzcGFjZV0pICAj
IH0KLSAgICAgICAgbGluZXMuYXBwZW5kKCcnKQotCi0gICAgICAjIEFkZCB0ZW1wbGF0ZSBhcmdz
IGZvciB0ZW1wbGF0ZWQgY2xhc3Nlcy4KLSAgICAgIGlmIGNsYXNzX25vZGUudGVtcGxhdGVkX3R5
cGVzOgotICAgICAgICAjIFRPRE8ocGF1bGNoYW5nKTogVGhlIEFTVCBkb2Vzbid0IHByZXNlcnZl
IHRlbXBsYXRlIGFyZ3VtZW50IG9yZGVyLAotICAgICAgICAjIHNvIHdlIGhhdmUgdG8gbWFrZSB1
cCBuYW1lcyBoZXJlLgotICAgICAgICAjIFRPRE8ocGF1bGNoYW5nKTogSGFuZGxlIG5vbi10eXBl
IHRlbXBsYXRlIGFyZ3VtZW50cyAoZS5nLgotICAgICAgICAjIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGludCBOPikuCi0gICAgICAgIHRlbXBsYXRlX2FyZ19jb3VudCA9IGxlbihjbGFzc19ub2RlLnRl
bXBsYXRlZF90eXBlcy5rZXlzKCkpCi0gICAgICAgIHRlbXBsYXRlX2FyZ3MgPSBbJ1QlZCcgJSBu
IGZvciBuIGluIHJhbmdlKHRlbXBsYXRlX2FyZ19jb3VudCldCi0gICAgICAgIHRlbXBsYXRlX2Rl
Y2xzID0gWyd0eXBlbmFtZSAnICsgYXJnIGZvciBhcmcgaW4gdGVtcGxhdGVfYXJnc10KLSAgICAg
ICAgbGluZXMuYXBwZW5kKCd0ZW1wbGF0ZSA8JyArICcsICcuam9pbih0ZW1wbGF0ZV9kZWNscykg
KyAnPicpCi0gICAgICAgIHBhcmVudF9uYW1lICs9ICc8JyArICcsICcuam9pbih0ZW1wbGF0ZV9h
cmdzKSArICc+JwotCi0gICAgICAjIEFkZCB0aGUgY2xhc3MgcHJvbG9nLgotICAgICAgbGluZXMu
YXBwZW5kKCdjbGFzcyBNb2NrJXMgOiBwdWJsaWMgJXMgeycgICMgfQotICAgICAgICAgICAgICAg
ICAgICUgKGNsYXNzX25hbWUsIHBhcmVudF9uYW1lKSkKLSAgICAgIGxpbmVzLmFwcGVuZCgnJXNw
dWJsaWM6JyAlICgnICcgKiAoX0lOREVOVCAvLyAyKSkpCi0KLSAgICAgICMgQWRkIGFsbCB0aGUg
bWV0aG9kcy4KLSAgICAgIF9HZW5lcmF0ZU1ldGhvZHMobGluZXMsIHNvdXJjZSwgY2xhc3Nfbm9k
ZSkKLQotICAgICAgIyBDbG9zZSB0aGUgY2xhc3MuCi0gICAgICBpZiBsaW5lczoKLSAgICAgICAg
IyBJZiB0aGVyZSBhcmUgbm8gdmlydHVhbCBtZXRob2RzLCBubyBuZWVkIGZvciBhIHB1YmxpYyBs
YWJlbC4KLSAgICAgICAgaWYgbGVuKGxpbmVzKSA9PSAyOgotICAgICAgICAgIGRlbCBsaW5lc1st
MV0KLQotICAgICAgICAjIE9ubHkgY2xvc2UgdGhlIGNsYXNzIGlmIHRoZXJlIHJlYWxseSBpcyBh
IGNsYXNzLgotICAgICAgICBsaW5lcy5hcHBlbmQoJ307JykKLSAgICAgICAgbGluZXMuYXBwZW5k
KCcnKSAgIyBBZGQgYW4gZXh0cmEgbmV3bGluZS4KLQotICAgICAgIyBDbG9zZSB0aGUgbmFtZXNw
YWNlLgotICAgICAgaWYgY2xhc3Nfbm9kZS5uYW1lc3BhY2U6Ci0gICAgICAgIGZvciBpIGluIHJh
bmdlKGxlbihjbGFzc19ub2RlLm5hbWVzcGFjZSktMSwgLTEsIC0xKToKLSAgICAgICAgICBsaW5l
cy5hcHBlbmQoJ30gIC8vIG5hbWVzcGFjZSAlcycgJSBjbGFzc19ub2RlLm5hbWVzcGFjZVtpXSkK
LSAgICAgICAgbGluZXMuYXBwZW5kKCcnKSAgIyBBZGQgYW4gZXh0cmEgbmV3bGluZS4KLQotICBp
ZiBkZXNpcmVkX2NsYXNzX25hbWVzOgotICAgIG1pc3NpbmdfY2xhc3NfbmFtZV9saXN0ID0gbGlz
dChkZXNpcmVkX2NsYXNzX25hbWVzIC0gcHJvY2Vzc2VkX2NsYXNzX25hbWVzKQotICAgIGlmIG1p
c3NpbmdfY2xhc3NfbmFtZV9saXN0OgotICAgICAgbWlzc2luZ19jbGFzc19uYW1lX2xpc3Quc29y
dCgpCi0gICAgICBzeXMuc3RkZXJyLndyaXRlKCdDbGFzcyhlcykgbm90IGZvdW5kIGluICVzOiAl
c1xuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSwgJywgJy5qb2luKG1pc3Np
bmdfY2xhc3NfbmFtZV9saXN0KSkpCi0gIGVsaWYgbm90IHByb2Nlc3NlZF9jbGFzc19uYW1lczoK
LSAgICBzeXMuc3RkZXJyLndyaXRlKCdObyBjbGFzcyBmb3VuZCBpbiAlc1xuJyAlIGZpbGVuYW1l
KQotCi0gIHJldHVybiBsaW5lcwotCi0KLWRlZiBtYWluKGFyZ3Y9c3lzLmFyZ3YpOgotICBpZiBs
ZW4oYXJndikgPCAyOgotICAgIHN5cy5zdGRlcnIud3JpdGUoJ0dvb2dsZSBNb2NrIENsYXNzIEdl
bmVyYXRvciB2JXNcblxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAnLicuam9pbihtYXAoc3Ry
LCBfVkVSU0lPTikpKQotICAgIHN5cy5zdGRlcnIud3JpdGUoX19kb2NfXykKLSAgICByZXR1cm4g
MQotCi0gIGdsb2JhbCBfSU5ERU5UCi0gIHRyeToKLSAgICBfSU5ERU5UID0gaW50KG9zLmVudmly
b25bJ0lOREVOVCddKQotICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgcGFzcwotICBleGNlcHQ6Ci0g
ICAgc3lzLnN0ZGVyci53cml0ZSgnVW5hYmxlIHRvIHVzZSBpbmRlbnQgb2YgJXNcbicgJSBvcy5l
bnZpcm9uLmdldCgnSU5ERU5UJykpCi0KLSAgZmlsZW5hbWUgPSBhcmd2WzFdCi0gIGRlc2lyZWRf
Y2xhc3NfbmFtZXMgPSBOb25lICAjIE5vbmUgbWVhbnMgYWxsIGNsYXNzZXMgaW4gdGhlIHNvdXJj
ZSBmaWxlLgotICBpZiBsZW4oYXJndikgPj0gMzoKLSAgICBkZXNpcmVkX2NsYXNzX25hbWVzID0g
c2V0KGFyZ3ZbMjpdKQotICBzb3VyY2UgPSB1dGlscy5SZWFkRmlsZShmaWxlbmFtZSkKLSAgaWYg
c291cmNlIGlzIE5vbmU6Ci0gICAgcmV0dXJuIDEKLQotICBidWlsZGVyID0gYXN0LkJ1aWxkZXJG
cm9tU291cmNlKHNvdXJjZSwgZmlsZW5hbWUpCi0gIHRyeToKLSAgICBlbnRpcmVfYXN0ID0gZmls
dGVyKE5vbmUsIGJ1aWxkZXIuR2VuZXJhdGUoKSkKLSAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0
OgotICAgIHJldHVybgotICBleGNlcHQ6Ci0gICAgIyBBbiBlcnJvciBtZXNzYWdlIHdhcyBhbHJl
YWR5IHByaW50ZWQgc2luY2Ugd2UgY291bGRuJ3QgcGFyc2UuCi0gICAgc3lzLmV4aXQoMSkKLSAg
ZWxzZToKLSAgICBsaW5lcyA9IF9HZW5lcmF0ZU1vY2tzKGZpbGVuYW1lLCBzb3VyY2UsIGVudGly
ZV9hc3QsIGRlc2lyZWRfY2xhc3NfbmFtZXMpCi0gICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nLmpv
aW4obGluZXMpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIG1haW4oc3lzLmFy
Z3YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tf
Y2xhc3NfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19j
bGFzc190ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMThmOTBhNjUwZDFh
MjhhNGUzNDRlNGVlYTBkZWMxYzFjY2EzN2NkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9nbW9j
a19jbGFzc190ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQ4ICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSBOZWFsIE5vcndpdHogQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSMgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCi0KLSIiIlRlc3RzIGZvciBnbW9jay5zY3JpcHRzLmdlbmVyYXRvci5jcHAuZ21vY2tfY2xh
c3MuIiIiCi0KLV9fYXV0aG9yX18gPSAnbm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6
KScKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0jIEFsbG93
IHRoZSBjcHAgaW1wb3J0cyBiZWxvdyB0byB3b3JrIHdoZW4gcnVuIGFzIGEgc3RhbmRhbG9uZSBz
Y3JpcHQuCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXyksICcuLicpKQotCi1mcm9tIGNwcCBpbXBvcnQgYXN0Ci1mcm9tIGNwcCBpbXBvcnQgZ21v
Y2tfY2xhc3MKLQotCi1jbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICIiIkhl
bHBlciBjbGFzcyB0aGF0IGFkZHMgYXNzZXJ0IG1ldGhvZHMuIiIiCi0KLSAgZGVmIFN0cmlwTGVh
ZGluZ1doaXRlc3BhY2Uoc2VsZiwgbGluZXMpOgotICAgICIiIlN0cmlwIGxlYWRpbmcgd2hpdGVz
cGFjZSBpbiBlYWNoIGxpbmUgaW4gJ2xpbmVzJy4iIiIKLSAgICByZXR1cm4gJ1xuJy5qb2luKFtz
LmxzdHJpcCgpIGZvciBzIGluIGxpbmVzLnNwbGl0KCdcbicpXSkKLQotICBkZWYgYXNzZXJ0RXF1
YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZShzZWxmLCBleHBlY3RlZF9saW5lcywgbGluZXMpOgot
ICAgICIiIlNwZWNpYWxpemVkIGFzc2VydCB0aGF0IGlnbm9yZXMgdGhlIGluZGVudCBsZXZlbC4i
IiIKLSAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2xpbmVzLCBzZWxmLlN0cmlwTGVhZGlu
Z1doaXRlc3BhY2UobGluZXMpKQotCi0KLWNsYXNzIEdlbmVyYXRlTWV0aG9kc1Rlc3QoVGVzdENh
c2UpOgotCi0gIGRlZiBHZW5lcmF0ZU1ldGhvZFNvdXJjZShzZWxmLCBjcHBfc291cmNlKToKLSAg
ICAiIiJDb252ZXJ0IEMrKyBzb3VyY2UgdG8gR29vZ2xlIE1vY2sgb3V0cHV0IHNvdXJjZSBsaW5l
cy4iIiIKLSAgICBtZXRob2Rfc291cmNlX2xpbmVzID0gW10KLSAgICAjIDx0ZXN0PiBpcyBhIHBz
ZXVkby1maWxlbmFtZSwgaXQgaXMgbm90IHJlYWQgb3Igd3JpdHRlbi4KLSAgICBidWlsZGVyID0g
YXN0LkJ1aWxkZXJGcm9tU291cmNlKGNwcF9zb3VyY2UsICc8dGVzdD4nKQotICAgIGFzdF9saXN0
ID0gbGlzdChidWlsZGVyLkdlbmVyYXRlKCkpCi0gICAgZ21vY2tfY2xhc3MuX0dlbmVyYXRlTWV0
aG9kcyhtZXRob2Rfc291cmNlX2xpbmVzLCBjcHBfc291cmNlLCBhc3RfbGlzdFswXSkKLSAgICBy
ZXR1cm4gJ1xuJy5qb2luKG1ldGhvZF9zb3VyY2VfbGluZXMpCi0KLSAgZGVmIHRlc3RTaW1wbGVN
ZXRob2Qoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAg
dmlydHVhbCBpbnQgQmFyKCk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxl
YWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmludCgpKTsnLAot
ICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RT
aW1wbGVDb25zdHJ1Y3RvcnNBbmREZXN0cnVjdG9yKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgot
Y2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIEZvbygpOwotICBGb28oaW50IHgpOwotICBGb28oY29u
c3QgRm9vJiBmKTsKLSAgRm9vKEZvbyYmIGYpOwotICB+Rm9vKCk7Ci0gIHZpcnR1YWwgaW50IEJh
cigpID0gMDsKLX07Ci0iIiIKLSAgICAjIFRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3Ig
c2hvdWxkIGJlIGlnbm9yZWQuCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0
ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmludCgpKTsnLAotICAgICAgICBz
ZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RWaXJ0dWFsRGVz
dHJ1Y3RvcihzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgot
ICB2aXJ0dWFsIH5Gb28oKTsKLSAgdmlydHVhbCBpbnQgQmFyKCkgPSAwOwotfTsKLSIiIgotICAg
ICMgVGhlIGRlc3RydWN0b3Igc2hvdWxkIGJlIGlnbm9yZWQuCi0gICAgc2VsZi5hc3NlcnRFcXVh
bElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmlu
dCgpKTsnLAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAg
ZGVmIHRlc3RFeHBsaWNpdGx5RGVmYXVsdGVkQ29uc3RydWN0b3JzQW5kRGVzdHJ1Y3RvcihzZWxm
KToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICBGb28oKSA9IGRl
ZmF1bHQ7Ci0gIEZvbyhjb25zdCBGb28mIGYpID0gZGVmYXVsdDsKLSAgRm9vKEZvbyYmIGYpID0g
ZGVmYXVsdDsKLSAgfkZvbygpID0gZGVmYXVsdDsKLSAgdmlydHVhbCBpbnQgQmFyKCkgPSAwOwot
fTsKLSIiIgotICAgICMgVGhlIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvciBzaG91bGQgYmUg
aWdub3JlZC4KLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0g
ICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCi0gICAgICAgIHNlbGYuR2VuZXJh
dGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdEV4cGxpY2l0bHlEZWxldGVkQ29u
c3RydWN0b3JzQW5kRGVzdHJ1Y3RvcihzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZv
byB7Ci0gcHVibGljOgotICBGb28oKSA9IGRlbGV0ZTsKLSAgRm9vKGNvbnN0IEZvbyYgZikgPSBk
ZWxldGU7Ci0gIEZvbyhGb28mJiBmKSA9IGRlbGV0ZTsKLSAgfkZvbygpID0gZGVsZXRlOwotICB2
aXJ0dWFsIGludCBCYXIoKSA9IDA7Ci19OwotIiIiCi0gICAgIyBUaGUgY29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9yIHNob3VsZCBiZSBpZ25vcmVkLgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25v
cmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgJ01PQ0tfTUVUSE9EMChCYXIsXG5pbnQoKSk7
JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0
ZXN0U2ltcGxlT3ZlcnJpZGVNZXRob2Qoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBG
b28gewotIHB1YmxpYzoKLSAgaW50IEJhcigpIG92ZXJyaWRlOwotfTsKLSIiIgotICAgIHNlbGYu
YXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgJ01PQ0tfTUVUSE9E
MChCYXIsXG5pbnQoKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3Vy
Y2UpKQotCi0gIGRlZiB0ZXN0U2ltcGxlQ29uc3RNZXRob2Qoc2VsZik6Ci0gICAgc291cmNlID0g
IiIiCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIEJhcihib29sIGZsYWcp
IGNvbnN0OwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVz
cGFjZSgKLSAgICAgICAgJ01PQ0tfQ09OU1RfTUVUSE9EMShCYXIsXG52b2lkKGJvb2wgZmxhZykp
OycsCi0gICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYg
dGVzdEV4cGxpY2l0Vm9pZChzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0g
cHVibGljOgotICB2aXJ0dWFsIGludCBCYXIodm9pZCk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3Nl
cnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJh
cixcbmludCh2b2lkKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3Vy
Y2UpKQotCi0gIGRlZiB0ZXN0U3RyYW5nZU5ld2xpbmVJblBhcmFtZXRlcihzZWxmKToKLSAgICBz
b3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgQmFyKGlu
dAotYSkgPSAwOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hp
dGVzcGFjZSgKLSAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG52b2lkKGludCBhKSk7JywKLSAg
ICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0RGVm
YXVsdFBhcmFtZXRlcnMoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28gewotIHB1
YmxpYzoKLSAgdmlydHVhbCB2b2lkIEJhcihpbnQgYSwgY2hhciBjID0gJ3gnKSA9IDA7Ci19Owot
IiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAg
ICAnTU9DS19NRVRIT0QyKEJhcixcbnZvaWQoaW50LCBjaGFyKSk7JywKLSAgICAgICAgc2VsZi5H
ZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0TXVsdGlwbGVEZWZhdWx0
UGFyYW1ldGVycyhzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGlj
OgotICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhID0gNDIsIGNoYXIgYyA9ICd4JykgPSAwOwotfTsK
LSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAg
ICAgJ01PQ0tfTUVUSE9EMihCYXIsXG52b2lkKGludCwgY2hhcikpOycsCi0gICAgICAgIHNlbGYu
R2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdFJlbW92ZXNDb21tZW50
c1doZW5EZWZhdWx0c0FyZVByZXNlbnQoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBG
b28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIEJhcihpbnQgYSA9IDQyIC8qIGEgY29tbWVu
dCAqLywKLSAgICAgICAgICAgICAgICAgICBjaGFyIC8qIG90aGVyIGNvbW1lbnQgKi8gYz0gJ3gn
KSA9IDA7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNw
YWNlKAotICAgICAgICAnTU9DS19NRVRIT0QyKEJhcixcbnZvaWQoaW50LCBjaGFyKSk7JywKLSAg
ICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0RG91
YmxlU2xhc2hDb21tZW50c0luUGFyYW1ldGVyTGlzdEFyZVJlbW92ZWQoc2VsZik6Ci0gICAgc291
cmNlID0gIiIiCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIEJhcihpbnQg
YSwgIC8vIGlubGluZSBjb21tZW50cyBzaG91bGQgYmUgZWxpZGVkLgotICAgICAgICAgICAgICAg
ICAgIGludCBiICAgLy8gaW5saW5lIGNvbW1lbnRzIHNob3VsZCBiZSBlbGlkZWQuCi0gICAgICAg
ICAgICAgICAgICAgKSBjb25zdCA9IDA7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbEln
bm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19DT05TVF9NRVRIT0QyKEJhcixc
bnZvaWQoaW50IGEsIGludCBiKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJj
ZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0Q1N0eWxlQ29tbWVudHNJblBhcmFtZXRlckxpc3RBcmVO
b3RSZW1vdmVkKHNlbGYpOgotICAgICMgTk9URShubm9yd2l0eik6IEknbSBub3Qgc3VyZSBpZiBp
dCdzIHRoZSBiZXN0IGJlaGF2aW9yIHRvIGtlZXAgdGhlc2UKLSAgICAjIGNvbW1lbnRzLiAgQWxz
byBub3RlIHRoYXQgQyBzdHlsZSBjb21tZW50cyBhZnRlciB0aGUgbGFzdCBwYXJhbWV0ZXIKLSAg
ICAjIGFyZSBzdGlsbCBlbGlkZWQuCi0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28gewotIHB1
YmxpYzoKLSAgdmlydHVhbCBjb25zdCBzdHJpbmcmIEJhcihpbnQgLyoga2VlcGVyICovLCBpbnQg
Yik7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNl
KAotICAgICAgICAnTU9DS19NRVRIT0QyKEJhcixcbmNvbnN0IHN0cmluZyYoaW50IC8qIGtlZXBl
ciAqLywgaW50IGIpKTsnLAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJj
ZSkpCi0KLSAgZGVmIHRlc3RBcmdzT2ZUZW1wbGF0ZVR5cGVzKHNlbGYpOgotICAgIHNvdXJjZSA9
ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IEJhcihjb25zdCB2ZWN0
b3I8aW50PiYgdiwgbWFwPGludCwgc3RyaW5nPiogb3V0cHV0KTsKLX07IiIiCi0gICAgc2VsZi5h
c3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0Qy
KEJhcixcbicKLSAgICAgICAgJ2ludChjb25zdCB2ZWN0b3I8aW50PiYgdiwgbWFwPGludCwgc3Ry
aW5nPiogb3V0cHV0KSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3Vy
Y2UpKQotCi0gIGRlZiB0ZXN0UmV0dXJuVHlwZVdpdGhPbmVUZW1wbGF0ZUFyZyhzZWxmKToKLSAg
ICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZlY3Rvcjxp
bnQ+KiBCYXIoaW50IG4pOwotfTsiIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGlu
Z1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDEoQmFyLFxudmVjdG9yPGludD4qKGlu
dCBuKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0g
IGRlZiB0ZXN0UmV0dXJuVHlwZVdpdGhNYW55VGVtcGxhdGVBcmdzKHNlbGYpOgotICAgIHNvdXJj
ZSA9ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgbWFwPGludCwgc3RyaW5n
PiBCYXIoKTsKLX07IiIiCi0gICAgIyBDb21wYXJpbmcgdGhlIGNvbW1lbnQgdGV4dCBpcyBicml0
dGxlIC0gd2UnbGwgdGhpbmsgb2Ygc29tZXRoaW5nCi0gICAgIyBiZXR0ZXIgaW4gY2FzZSB0aGlz
IGdldHMgYW5ub3lpbmcsIGJ1dCBmb3Igbm93IGxldCdzIGtlZXAgaXQgc2ltcGxlLgotICAgIHNl
bGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgJy8vIFRoZSBm
b2xsb3dpbmcgbGluZSB3b25cJ3QgcmVhbGx5IGNvbXBpbGUsIGFzIHRoZSByZXR1cm5cbicKLSAg
ICAgICAgJy8vIHR5cGUgaGFzIG11bHRpcGxlIHRlbXBsYXRlIGFyZ3VtZW50cy4gIFRvIGZpeCBp
dCwgdXNlIGFcbicKLSAgICAgICAgJy8vIHR5cGVkZWYgZm9yIHRoZSByZXR1cm4gdHlwZS5cbicK
LSAgICAgICAgJ01PQ0tfTUVUSE9EMChCYXIsXG5tYXA8aW50LCBzdHJpbmc+KCkpOycsCi0gICAg
ICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdFNpbXBs
ZU1ldGhvZEluVGVtcGxhdGVkQ2xhc3Moc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi10ZW1wbGF0
ZTxjbGFzcyBUPgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IEJhcigpOwot
fTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAg
ICAgICAgJ01PQ0tfTUVUSE9EMF9UKEJhcixcbmludCgpKTsnLAotICAgICAgICBzZWxmLkdlbmVy
YXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RQb2ludGVyQXJnV2l0aG91dE5h
bWVzKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSAgdmlydHVhbCBpbnQg
QmFyKEMqKTsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRl
c3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDEoQmFyLFxuaW50KEMqKSk7JywKLSAgICAgICAg
c2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0UmVmZXJlbmNl
QXJnV2l0aG91dE5hbWVzKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSAg
dmlydHVhbCBpbnQgQmFyKEMmKTsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3Jl
TGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDEoQmFyLFxuaW50KEMmKSk7
JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0
ZXN0QXJyYXlBcmdXaXRob3V0TmFtZXMoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBG
b28gewotICB2aXJ0dWFsIGludCBCYXIoQ1tdKTsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVx
dWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDEoQmFyLFxu
aW50KENbXSkpOycsCi0gICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkK
LQotCi1jbGFzcyBHZW5lcmF0ZU1vY2tzVGVzdChUZXN0Q2FzZSk6Ci0KLSAgZGVmIEdlbmVyYXRl
TW9ja3Moc2VsZiwgY3BwX3NvdXJjZSk6Ci0gICAgIiIiQ29udmVydCBDKysgc291cmNlIHRvIGNv
bXBsZXRlIEdvb2dsZSBNb2NrIG91dHB1dCBzb3VyY2UuIiIiCi0gICAgIyA8dGVzdD4gaXMgYSBw
c2V1ZG8tZmlsZW5hbWUsIGl0IGlzIG5vdCByZWFkIG9yIHdyaXR0ZW4uCi0gICAgZmlsZW5hbWUg
PSAnPHRlc3Q+JwotICAgIGJ1aWxkZXIgPSBhc3QuQnVpbGRlckZyb21Tb3VyY2UoY3BwX3NvdXJj
ZSwgZmlsZW5hbWUpCi0gICAgYXN0X2xpc3QgPSBsaXN0KGJ1aWxkZXIuR2VuZXJhdGUoKSkKLSAg
ICBsaW5lcyA9IGdtb2NrX2NsYXNzLl9HZW5lcmF0ZU1vY2tzKGZpbGVuYW1lLCBjcHBfc291cmNl
LCBhc3RfbGlzdCwgTm9uZSkKLSAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQotCi0gIGRlZiB0
ZXN0TmFtZXNwYWNlcyhzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLW5hbWVzcGFjZSBGb28gewot
bmFtZXNwYWNlIEJhciB7IGNsYXNzIEZvcndhcmQ7IH0KLW5hbWVzcGFjZSBCYXogewotCi1jbGFz
cyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBGb28oKTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSBCYXoKLX0gIC8vIG5hbWVzcGFjZSBGb28KLSIiIgotICAgIGV4cGVjdGVkID0gIiIi
XAotbmFtZXNwYWNlIEZvbyB7Ci1uYW1lc3BhY2UgQmF6IHsKLQotY2xhc3MgTW9ja1Rlc3QgOiBw
dWJsaWMgVGVzdCB7Ci1wdWJsaWM6Ci1NT0NLX01FVEhPRDAoRm9vLAotdm9pZCgpKTsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSBCYXoKLX0gIC8vIG5hbWVzcGFjZSBGb28KLSIiIgotICAgIHNlbGYu
YXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgZXhwZWN0ZWQsIHNl
bGYuR2VuZXJhdGVNb2Nrcyhzb3VyY2UpKQotCi0gIGRlZiB0ZXN0Q2xhc3NXaXRoU3RvcmFnZVNw
ZWNpZmllck1hY3JvKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgU1RPUkFHRV9TUEVD
SUZJRVIgVGVzdCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgRm9vKCk7Ci19OwotIiIiCi0g
ICAgZXhwZWN0ZWQgPSAiIiJcCi1jbGFzcyBNb2NrVGVzdCA6IHB1YmxpYyBUZXN0IHsKLXB1Ymxp
YzoKLU1PQ0tfTUVUSE9EMChGb28sCi12b2lkKCkpOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0
RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgZXhwZWN0ZWQsIHNlbGYuR2Vu
ZXJhdGVNb2Nrcyhzb3VyY2UpKQotCi0gIGRlZiB0ZXN0VGVtcGxhdGVkRm9yd2FyZERlY2xhcmF0
aW9uKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIEZv
cndhcmQ7ICAvLyBGb3J3YXJkIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBpZ25vcmVkLgotY2xhc3Mg
VGVzdCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgRm9vKCk7Ci19OwotIiIiCi0gICAgZXhw
ZWN0ZWQgPSAiIiJcCi1jbGFzcyBNb2NrVGVzdCA6IHB1YmxpYyBUZXN0IHsKLXB1YmxpYzoKLU1P
Q0tfTUVUSE9EMChGb28sCi12b2lkKCkpOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJ
Z25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgZXhwZWN0ZWQsIHNlbGYuR2VuZXJhdGVN
b2Nrcyhzb3VyY2UpKQotCi0gIGRlZiB0ZXN0VGVtcGxhdGVkQ2xhc3Moc2VsZik6Ci0gICAgc291
cmNlID0gIiIiCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUywgdHlwZW5hbWUgVD4KLWNsYXNzIFRlc3Qg
ewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIEZvbygpOwotfTsKLSIiIgotICAgIGV4cGVjdGVk
ID0gIiIiXAotdGVtcGxhdGUgPHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMT4KLWNsYXNzIE1vY2tU
ZXN0IDogcHVibGljIFRlc3Q8VDAsIFQxPiB7Ci1wdWJsaWM6Ci1NT0NLX01FVEhPRDBfVChGb28s
Ci12b2lkKCkpOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hp
dGVzcGFjZSgKLSAgICAgICAgZXhwZWN0ZWQsIHNlbGYuR2VuZXJhdGVNb2Nrcyhzb3VyY2UpKQot
Ci0gIGRlZiB0ZXN0VGVtcGxhdGVJbkFUZW1wbGF0ZVR5cGVkZWYoc2VsZik6Ci0gICAgc291cmNl
ID0gIiIiCi1jbGFzcyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8c3Rk
OjpsaXN0PGludD4+IEZvb1R5cGU7Ci0gIHZpcnR1YWwgdm9pZCBCYXIoY29uc3QgRm9vVHlwZSYg
dGVzdF9hcmcpOwotfTsKLSIiIgotICAgIGV4cGVjdGVkID0gIiIiXAotY2xhc3MgTW9ja1Rlc3Qg
OiBwdWJsaWMgVGVzdCB7Ci1wdWJsaWM6Ci1NT0NLX01FVEhPRDEoQmFyLAotdm9pZChjb25zdCBG
b29UeXBlJiB0ZXN0X2FyZykpOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVM
ZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgZXhwZWN0ZWQsIHNlbGYuR2VuZXJhdGVNb2Nrcyhz
b3VyY2UpKQotCi0gIGRlZiB0ZXN0VGVtcGxhdGVJbkFUZW1wbGF0ZVR5cGVkZWZXaXRoQ29tbWEo
c2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgc3RkOjpmdW5jdGlvbjx2b2lkKAotICAgICAgY29uc3QgdmVjdG9yPHN0ZDo6bGlzdDxpbnQ+
PiYsIGludD4gRm9vVHlwZTsKLSAgdmlydHVhbCB2b2lkIEJhcihjb25zdCBGb29UeXBlJiB0ZXN0
X2FyZyk7Ci19OwotIiIiCi0gICAgZXhwZWN0ZWQgPSAiIiJcCi1jbGFzcyBNb2NrVGVzdCA6IHB1
YmxpYyBUZXN0IHsKLXB1YmxpYzoKLU1PQ0tfTUVUSE9EMShCYXIsCi12b2lkKGNvbnN0IEZvb1R5
cGUmIHRlc3RfYXJnKSk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRp
bmdXaGl0ZXNwYWNlKAotICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJj
ZSkpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIHVuaXR0ZXN0Lm1haW4oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2tleXdvcmRzLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2tleXdvcmRzLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCBmNjk0NDUwZTM3M2UxOTFiNmQ1ZDg3Y2FiYTQ2ZWE3MzcxZjAw
ZWVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weQorKysgL2Rldi9udWxsCkBA
IC0xLDU5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAw
NyBOZWFsIE5vcndpdHoKLSMgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KLSMK
LSMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7Ci0jIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSIiIkMrKyBrZXl3
b3JkcyBhbmQgaGVscGVyIHV0aWxpdGllcyBmb3IgZGV0ZXJtaW5pbmcga2V5d29yZHMuIiIiCi0K
LV9fYXV0aG9yX18gPSAnbm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6KScKLQotCi10
cnk6Ci0gICAgIyBQeXRob24gMy54Ci0gICAgaW1wb3J0IGJ1aWx0aW5zCi1leGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgIyBQeXRob24gMi54Ci0gICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0
aW5zCi0KLQotaWYgbm90IGhhc2F0dHIoYnVpbHRpbnMsICdzZXQnKToKLSAgICAjIE5vbWluYWwg
c3VwcG9ydCBmb3IgUHl0aG9uIDIuMy4KLSAgICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQK
LQotCi1UWVBFUyA9IHNldCgnYm9vbCBjaGFyIGludCBsb25nIHNob3J0IGRvdWJsZSBmbG9hdCB2
b2lkIHdjaGFyX3QgdW5zaWduZWQgc2lnbmVkJy5zcGxpdCgpKQotVFlQRV9NT0RJRklFUlMgPSBz
ZXQoJ2F1dG8gcmVnaXN0ZXIgY29uc3QgaW5saW5lIGV4dGVybiBzdGF0aWMgdmlydHVhbCB2b2xh
dGlsZSBtdXRhYmxlJy5zcGxpdCgpKQotQUNDRVNTID0gc2V0KCdwdWJsaWMgcHJvdGVjdGVkIHBy
aXZhdGUgZnJpZW5kJy5zcGxpdCgpKQotCi1DQVNUUyA9IHNldCgnc3RhdGljX2Nhc3QgY29uc3Rf
Y2FzdCBkeW5hbWljX2Nhc3QgcmVpbnRlcnByZXRfY2FzdCcuc3BsaXQoKSkKLQotT1RIRVJTID0g
c2V0KCd0cnVlIGZhbHNlIGFzbSBjbGFzcyBuYW1lc3BhY2UgdXNpbmcgZXhwbGljaXQgdGhpcyBv
cGVyYXRvciBzaXplb2YnLnNwbGl0KCkpCi1PVEhFUl9UWVBFUyA9IHNldCgnbmV3IGRlbGV0ZSB0
eXBlZGVmIHN0cnVjdCB1bmlvbiBlbnVtIHR5cGVpZCB0eXBlbmFtZSB0ZW1wbGF0ZScuc3BsaXQo
KSkKLQotQ09OVFJPTCA9IHNldCgnY2FzZSBzd2l0Y2ggZGVmYXVsdCBpZiBlbHNlIHJldHVybiBn
b3RvJy5zcGxpdCgpKQotRVhDRVBUSU9OID0gc2V0KCd0cnkgY2F0Y2ggdGhyb3cnLnNwbGl0KCkp
Ci1MT09QID0gc2V0KCd3aGlsZSBkbyBmb3IgYnJlYWsgY29udGludWUnLnNwbGl0KCkpCi0KLUFM
TCA9IFRZUEVTIHwgVFlQRV9NT0RJRklFUlMgfCBBQ0NFU1MgfCBDQVNUUyB8IE9USEVSUyB8IE9U
SEVSX1RZUEVTIHwgQ09OVFJPTCB8IEVYQ0VQVElPTiB8IExPT1AKLQotCi1kZWYgSXNLZXl3b3Jk
KHRva2VuKToKLSAgICByZXR1cm4gdG9rZW4gaW4gQUxMCi0KLWRlZiBJc0J1aWx0aW5UeXBlKHRv
a2VuKToKLSAgICBpZiB0b2tlbiBpbiAoJ3ZpcnR1YWwnLCAnaW5saW5lJyk6Ci0gICAgICAgICMg
VGhlc2Ugb25seSBhcHBseSB0byBtZXRob2RzLCB0aGV5IGNhbid0IGJlIHR5cGVzIGJ5IHRoZW1z
ZWx2ZXMuCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiB0b2tlbiBpbiBUWVBFUyBv
ciB0b2tlbiBpbiBUWVBFX01PRElGSUVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0
cy9nZW5lcmF0b3IvY3BwL3Rva2VuaXplLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0
b3IvY3BwL3Rva2VuaXplLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzNTlkNTU2
MmQ3OGNmOTJhYmFmZGQyYjlmMWVmNjRlZjA1ZjU0N2JkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2Nw
cC90b2tlbml6ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi0jIS91c3IvYmlu
L2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDcgTmVhbCBOb3J3aXR6Ci0jIFBvcnRpb25z
IENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0jIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotIwotIyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0jIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgotCi0iIiJUb2tlbml6ZSBDKysgc291cmNlIGNvZGUuIiIiCi0KLV9f
YXV0aG9yX18gPSAnbm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6KScKLQotCi10cnk6
Ci0gICAgIyBQeXRob24gMy54Ci0gICAgaW1wb3J0IGJ1aWx0aW5zCi1leGNlcHQgSW1wb3J0RXJy
b3I6Ci0gICAgIyBQeXRob24gMi54Ci0gICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5z
Ci0KLQotaW1wb3J0IHN5cwotCi1mcm9tIGNwcCBpbXBvcnQgdXRpbHMKLQotCi1pZiBub3QgaGFz
YXR0cihidWlsdGlucywgJ3NldCcpOgotICAgICMgTm9taW5hbCBzdXBwb3J0IGZvciBQeXRob24g
Mi4zLgotICAgIGZyb20gc2V0cyBpbXBvcnQgU2V0IGFzIHNldAotCi0KLSMgQWRkICQgYXMgYSB2
YWxpZCBpZGVudGlmaWVyIGNoYXIgc2luY2Ugc28gbXVjaCBjb2RlIHVzZXMgaXQuCi1fbGV0dGVy
cyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLVZBTElEX0lERU5USUZJRVJfQ0hBUlMg
PSBzZXQoX2xldHRlcnMgKyBfbGV0dGVycy51cHBlcigpICsgJ18wMTIzNDU2Nzg5JCcpCi1IRVhf
RElHSVRTID0gc2V0KCcwMTIzNDU2Nzg5YWJjZGVmQUJDREVGJykKLUlOVF9PUl9GTE9BVF9ESUdJ
VFMgPSBzZXQoJzAxMjM0NTY3ODkwZUUtKycpCi0KLQotIyBDKysweCBzdHJpbmcgcHJlZmZpeGVz
LgotX1NUUl9QUkVGSVhFUyA9IHNldCgoJ1InLCAndTgnLCAndThSJywgJ3UnLCAndVInLCAnVScs
ICdVUicsICdMJywgJ0xSJykpCi0KLQotIyBUb2tlbiB0eXBlcy4KLVVOS05PV04gPSAnVU5LTk9X
TicKLVNZTlRBWCA9ICdTWU5UQVgnCi1DT05TVEFOVCA9ICdDT05TVEFOVCcKLU5BTUUgPSAnTkFN
RScKLVBSRVBST0NFU1NPUiA9ICdQUkVQUk9DRVNTT1InCi0KLSMgV2hlcmUgdGhlIHRva2VuIG9y
aWdpbmF0ZWQgZnJvbS4gIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGJhY2t0cmFja2luZy4KLSMgSXQg
aXMgYWx3YXlzIHNldCB0byBXSEVOQ0VfU1RSRUFNIGluIHRoaXMgY29kZS4KLVdIRU5DRV9TVFJF
QU0sIFdIRU5DRV9RVUVVRSA9IHJhbmdlKDIpCi0KLQotY2xhc3MgVG9rZW4ob2JqZWN0KToKLSAg
ICAiIiJEYXRhIGNvbnRhaW5lciB0byByZXByZXNlbnQgYSBDKysgdG9rZW4uCi0KLSAgICBUb2tl
bnMgY2FuIGJlIGlkZW50aWZpZXJzLCBzeW50YXggY2hhcihzKSwgY29uc3RhbnRzLCBvcgotICAg
IHByZS1wcm9jZXNzb3IgZGlyZWN0aXZlcy4KLQotICAgIHN0YXJ0IGNvbnRhaW5zIHRoZSBpbmRl
eCBvZiB0aGUgZmlyc3QgY2hhciBvZiB0aGUgdG9rZW4gaW4gdGhlIHNvdXJjZQotICAgIGVuZCBj
b250YWlucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhciBvZiB0aGUgdG9rZW4gaW4gdGhlIHNv
dXJjZQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuX3R5cGUsIG5hbWUs
IHN0YXJ0LCBlbmQpOgotICAgICAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCi0gICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5zdGFydCA9IHN0YXJ0Ci0gICAgICAg
IHNlbGYuZW5kID0gZW5kCi0gICAgICAgIHNlbGYud2hlbmNlID0gV0hFTkNFX1NUUkVBTQotCi0g
ICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIG5vdCB1dGlscy5ERUJVRzoKLSAgICAg
ICAgICAgIHJldHVybiAnVG9rZW4oJXIpJyAlIHNlbGYubmFtZQotICAgICAgICByZXR1cm4gJ1Rv
a2VuKCVyLCAlcywgJXMpJyAlIChzZWxmLm5hbWUsIHNlbGYuc3RhcnQsIHNlbGYuZW5kKQotCi0g
ICAgX19yZXByX18gPSBfX3N0cl9fCi0KLQotZGVmIF9HZXRTdHJpbmcoc291cmNlLCBzdGFydCwg
aSk6Ci0gICAgaSA9IHNvdXJjZS5maW5kKCciJywgaSsxKQotICAgIHdoaWxlIHNvdXJjZVtpLTFd
ID09ICdcXCc6Ci0gICAgICAgICMgQ291bnQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaGVzLgotICAg
ICAgICBiYWNrc2xhc2hfY291bnQgPSAxCi0gICAgICAgIGogPSBpIC0gMgotICAgICAgICB3aGls
ZSBzb3VyY2Vbal0gPT0gJ1xcJzoKLSAgICAgICAgICAgIGJhY2tzbGFzaF9jb3VudCArPSAxCi0g
ICAgICAgICAgICBqIC09IDEKLSAgICAgICAgIyBXaGVuIHRyYWlsaW5nIGJhY2tzbGFzaGVzIGFy
ZSBldmVuLCB0aGV5IGVzY2FwZSBlYWNoIG90aGVyLgotICAgICAgICBpZiAoYmFja3NsYXNoX2Nv
dW50ICUgMikgPT0gMDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGkgPSBzb3VyY2UuZmlu
ZCgnIicsIGkrMSkKLSAgICByZXR1cm4gaSArIDEKLQotCi1kZWYgX0dldENoYXIoc291cmNlLCBz
dGFydCwgaSk6Ci0gICAgIyBOT1RFKG5ub3J3aXR6KTogbWF5IG5vdCBiZSBxdWl0ZSBjb3JyZWN0
LCBzaG91bGQgYmUgZ29vZCBlbm91Z2guCi0gICAgaSA9IHNvdXJjZS5maW5kKCInIiwgaSsxKQot
ICAgIHdoaWxlIHNvdXJjZVtpLTFdID09ICdcXCc6Ci0gICAgICAgICMgTmVlZCB0byBzcGVjaWFs
IGNhc2UgJ1xcJy4KLSAgICAgICAgaWYgKGkgLSAyKSA+IHN0YXJ0IGFuZCBzb3VyY2VbaS0yXSA9
PSAnXFwnOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaSA9IHNvdXJjZS5maW5kKCInIiwg
aSsxKQotICAgICMgVHJ5IHRvIGhhbmRsZSB1bnRlcm1pbmF0ZWQgc2luZ2xlIHF1b3RlcyAoaW4g
YSAjaWYgMCBibG9jaykuCi0gICAgaWYgaSA8IDA6Ci0gICAgICAgIGkgPSBzdGFydAotICAgIHJl
dHVybiBpICsgMQotCi0KLWRlZiBHZXRUb2tlbnMoc291cmNlKToKLSAgICAiIiJSZXR1cm5zIGEg
c2VxdWVuY2Ugb2YgVG9rZW5zLgotCi0gICAgQXJnczoKLSAgICAgIHNvdXJjZTogc3RyaW5nIG9m
IEMrKyBzb3VyY2UgY29kZS4KLQotICAgIFlpZWxkczoKLSAgICAgIFRva2VuIHRoYXQgcmVwcmVz
ZW50cyB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgc291cmNlLgotICAgICIiIgotICAgICMgQ2FjaGUg
dmFyaW91cyB2YWxpZCBjaGFyYWN0ZXIgc2V0cyBmb3Igc3BlZWQuCi0gICAgdmFsaWRfaWRlbnRp
Zmllcl9jaGFycyA9IFZBTElEX0lERU5USUZJRVJfQ0hBUlMKLSAgICBoZXhfZGlnaXRzID0gSEVY
X0RJR0lUUwotICAgIGludF9vcl9mbG9hdF9kaWdpdHMgPSBJTlRfT1JfRkxPQVRfRElHSVRTCi0g
ICAgaW50X29yX2Zsb2F0X2RpZ2l0czIgPSBpbnRfb3JfZmxvYXRfZGlnaXRzIHwgc2V0KCcuJykK
LQotICAgICMgT25seSBpZ25vcmUgZXJyb3JzIHdoaWxlIGluIGEgI2lmIDAgYmxvY2suCi0gICAg
aWdub3JlX2Vycm9ycyA9IEZhbHNlCi0gICAgY291bnRfaWZzID0gMAotCi0gICAgaSA9IDAKLSAg
ICBlbmQgPSBsZW4oc291cmNlKQotICAgIHdoaWxlIGkgPCBlbmQ6Ci0gICAgICAgICMgU2tpcCB3
aGl0ZXNwYWNlLgotICAgICAgICB3aGlsZSBpIDwgZW5kIGFuZCBzb3VyY2VbaV0uaXNzcGFjZSgp
OgotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIGlmIGkgPj0gZW5kOgotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgdG9rZW5fdHlwZSA9IFVOS05PV04KLSAgICAgICAgc3RhcnQgPSBp
Ci0gICAgICAgIGMgPSBzb3VyY2VbaV0KLSAgICAgICAgaWYgYy5pc2FscGhhKCkgb3IgYyA9PSAn
Xyc6ICAgICAgICAgICAgICAjIEZpbmQgYSBzdHJpbmcgdG9rZW4uCi0gICAgICAgICAgICB0b2tl
bl90eXBlID0gTkFNRQotICAgICAgICAgICAgd2hpbGUgc291cmNlW2ldIGluIHZhbGlkX2lkZW50
aWZpZXJfY2hhcnM6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAjIFN0cmlu
ZyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cyBjYW4gbG9vayBsaWtlIGEgbmFtZSBpZgotICAgICAg
ICAgICAgIyB0aGV5IGFyZSBzb21ldGhpbmcgbGlrZSBMIiIuCi0gICAgICAgICAgICBpZiAoc291
cmNlW2ldID09ICInIiBhbmQgKGkgLSBzdGFydCkgPT0gMSBhbmQKLSAgICAgICAgICAgICAgICBz
b3VyY2Vbc3RhcnQ6aV0gaW4gJ3VVTCcpOgotICAgICAgICAgICAgICAgICMgdSwgVSwgYW5kIEwg
YXJlIHZhbGlkIEMrKzB4IGNoYXJhY3RlciBwcmVmZml4ZXMuCi0gICAgICAgICAgICAgICAgdG9r
ZW5fdHlwZSA9IENPTlNUQU5UCi0gICAgICAgICAgICAgICAgaSA9IF9HZXRDaGFyKHNvdXJjZSwg
c3RhcnQsIGkpCi0gICAgICAgICAgICBlbGlmIHNvdXJjZVtpXSA9PSAiJyIgYW5kIHNvdXJjZVtz
dGFydDppXSBpbiBfU1RSX1BSRUZJWEVTOgotICAgICAgICAgICAgICAgIHRva2VuX3R5cGUgPSBD
T05TVEFOVAotICAgICAgICAgICAgICAgIGkgPSBfR2V0U3RyaW5nKHNvdXJjZSwgc3RhcnQsIGkp
Ci0gICAgICAgIGVsaWYgYyA9PSAnLycgYW5kIHNvdXJjZVtpKzFdID09ICcvJzogICAgIyBGaW5k
IC8vIGNvbW1lbnRzLgotICAgICAgICAgICAgaSA9IHNvdXJjZS5maW5kKCdcbicsIGkpCi0gICAg
ICAgICAgICBpZiBpID09IC0xOiAgIyBIYW5kbGUgRU9GLgotICAgICAgICAgICAgICAgIGkgPSBl
bmQKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgYyA9PSAnLycgYW5kIHNvdXJj
ZVtpKzFdID09ICcqJzogICAgIyBGaW5kIC8qIGNvbW1lbnRzLiAqLwotICAgICAgICAgICAgaSA9
IHNvdXJjZS5maW5kKCcqLycsIGkpICsgMgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ZWxpZiBjIGluICc6Ky08PiZ8Kj0nOiAgICAgICAgICAgICAgICAgICAjIDogb3IgOjogKHBsdXMg
b3RoZXIgY2hhcnMpLgotICAgICAgICAgICAgdG9rZW5fdHlwZSA9IFNZTlRBWAotICAgICAgICAg
ICAgaSArPSAxCi0gICAgICAgICAgICBuZXdfY2ggPSBzb3VyY2VbaV0KLSAgICAgICAgICAgIGlm
IG5ld19jaCA9PSBjIGFuZCBjICE9ICc+JzogICAgICAgICAjIFRyZWF0ICI+PiIgYXMgdHdvIHRv
a2Vucy4KLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgIGVsaWYgYyA9PSAnLScg
YW5kIG5ld19jaCA9PSAnPic6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICBl
bGlmIG5ld19jaCA9PSAnPSc6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIGVsaWYg
YyBpbiAnKClbXXt9fiE/XiU7Ly4sJzogICAgICAgICAgICAgIyBIYW5kbGUgc2luZ2xlIGNoYXIg
dG9rZW5zLgotICAgICAgICAgICAgdG9rZW5fdHlwZSA9IFNZTlRBWAotICAgICAgICAgICAgaSAr
PSAxCi0gICAgICAgICAgICBpZiBjID09ICcuJyBhbmQgc291cmNlW2ldLmlzZGlnaXQoKToKLSAg
ICAgICAgICAgICAgICB0b2tlbl90eXBlID0gQ09OU1RBTlQKLSAgICAgICAgICAgICAgICBpICs9
IDEKLSAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2VbaV0gaW4gaW50X29yX2Zsb2F0X2RpZ2l0
czoKLSAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgIyBIYW5kbGUg
ZmxvYXQgc3VmZml4ZXMuCi0gICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ2wnLCAnZicp
OgotICAgICAgICAgICAgICAgICAgICBpZiBzdWZmaXggPT0gc291cmNlW2k6aSsxXS5sb3dlcigp
OgotICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICBlbGlmIGMuaXNkaWdpdCgpOiAgICAgICAgICAgICAgICAgICAgICAg
ICMgRmluZCBpbnRlZ2VyLgotICAgICAgICAgICAgdG9rZW5fdHlwZSA9IENPTlNUQU5UCi0gICAg
ICAgICAgICBpZiBjID09ICcwJyBhbmQgc291cmNlW2krMV0gaW4gJ3hYJzoKLSAgICAgICAgICAg
ICAgICAjIEhhbmRsZSBoZXggZGlnaXRzLgotICAgICAgICAgICAgICAgIGkgKz0gMgotICAgICAg
ICAgICAgICAgIHdoaWxlIHNvdXJjZVtpXSBpbiBoZXhfZGlnaXRzOgotICAgICAgICAgICAgICAg
ICAgICBpICs9IDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd2hpbGUgc291
cmNlW2ldIGluIGludF9vcl9mbG9hdF9kaWdpdHMyOgotICAgICAgICAgICAgICAgICAgICBpICs9
IDEKLSAgICAgICAgICAgICMgSGFuZGxlIGludGVnZXIgKGFuZCBmbG9hdCkgc3VmZml4ZXMuCi0g
ICAgICAgICAgICBmb3Igc3VmZml4IGluICgndWxsJywgJ2xsJywgJ3VsJywgJ2wnLCAnZicsICd1
Jyk6Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihzdWZmaXgpCi0gICAgICAgICAgICAgICAg
aWYgc3VmZml4ID09IHNvdXJjZVtpOmkrc2l6ZV0ubG93ZXIoKToKLSAgICAgICAgICAgICAgICAg
ICAgaSArPSBzaXplCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsaWYgYyA9
PSAnIic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGaW5kIHN0cmluZy4KLSAgICAgICAg
ICAgIHRva2VuX3R5cGUgPSBDT05TVEFOVAotICAgICAgICAgICAgaSA9IF9HZXRTdHJpbmcoc291
cmNlLCBzdGFydCwgaSkKLSAgICAgICAgZWxpZiBjID09ICInIjogICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEZpbmQgY2hhci4KLSAgICAgICAgICAgIHRva2VuX3R5cGUgPSBDT05TVEFOVAot
ICAgICAgICAgICAgaSA9IF9HZXRDaGFyKHNvdXJjZSwgc3RhcnQsIGkpCi0gICAgICAgIGVsaWYg
YyA9PSAnIyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGaW5kIHByZS1wcm9jZXNzb3Ig
Y29tbWFuZC4KLSAgICAgICAgICAgIHRva2VuX3R5cGUgPSBQUkVQUk9DRVNTT1IKLSAgICAgICAg
ICAgIGdvdF9pZiA9IHNvdXJjZVtpOmkrM10gPT0gJyNpZicgYW5kIHNvdXJjZVtpKzM6aSs0XS5p
c3NwYWNlKCkKLSAgICAgICAgICAgIGlmIGdvdF9pZjoKLSAgICAgICAgICAgICAgICBjb3VudF9p
ZnMgKz0gMQotICAgICAgICAgICAgZWxpZiBzb3VyY2VbaTppKzZdID09ICcjZW5kaWYnOgotICAg
ICAgICAgICAgICAgIGNvdW50X2lmcyAtPSAxCi0gICAgICAgICAgICAgICAgaWYgY291bnRfaWZz
ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGlnbm9yZV9lcnJvcnMgPSBGYWxzZQotCi0gICAg
ICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgcHJlcHJvY2Vzc29yIHN0YXRlbWVudHMg
KFwgY29udGludWF0aW9ucykuCi0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAg
IGkxID0gc291cmNlLmZpbmQoJ1xuJywgaSkKLSAgICAgICAgICAgICAgICBpMiA9IHNvdXJjZS5m
aW5kKCcvLycsIGkpCi0gICAgICAgICAgICAgICAgaTMgPSBzb3VyY2UuZmluZCgnLyonLCBpKQot
ICAgICAgICAgICAgICAgIGk0ID0gc291cmNlLmZpbmQoJyInLCBpKQotICAgICAgICAgICAgICAg
ICMgTk9URShubm9yd2l0eik6IGRvZXNuJ3QgaGFuZGxlIGNvbW1lbnRzIGluICNkZWZpbmUgbWFj
cm9zLgotICAgICAgICAgICAgICAgICMgR2V0IHRoZSBmaXJzdCBpbXBvcnRhbnQgc3ltYm9sIChu
ZXdsaW5lLCBjb21tZW50LCBFT0YvZW5kKS4KLSAgICAgICAgICAgICAgICBpID0gbWluKFt4IGZv
ciB4IGluIChpMSwgaTIsIGkzLCBpNCwgZW5kKSBpZiB4ICE9IC0xXSkKLQotICAgICAgICAgICAg
ICAgICMgSGFuZGxlICNpbmNsdWRlICJkaXIvL2Zvby5oIiBwcm9wZXJseS4KLSAgICAgICAgICAg
ICAgICBpZiBzb3VyY2VbaV0gPT0gJyInOgotICAgICAgICAgICAgICAgICAgICBpID0gc291cmNl
LmZpbmQoJyInLCBpKzEpICsgMQotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgaSA+IDAKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIEtlZXAgZ29pbmcg
aWYgZW5kIG9mIHRoZSBsaW5lIGFuZCB0aGUgbGluZSBlbmRzIHdpdGggXC4KLSAgICAgICAgICAg
ICAgICBpZiBub3QgKGkgPT0gaTEgYW5kIHNvdXJjZVtpLTFdID09ICdcXCcpOgotICAgICAgICAg
ICAgICAgICAgICBpZiBnb3RfaWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24g
PSBzb3VyY2Vbc3RhcnQrNDppXS5sc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvbmRpdGlvbi5zdGFydHN3aXRoKCcwJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25kaXRpb24uc3RhcnRzd2l0aCgnKDApJykpOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlnbm9yZV9lcnJvcnMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIGVsaWYgYyA9PSAnXFwnOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBIYW5kbGUgXCBpbiBjb2RlLgotICAgICAgICAgICAgIyBUaGlzIGlzIGRp
ZmZlcmVudCBmcm9tIHRoZSBwcmUtcHJvY2Vzc29yIFwgaGFuZGxpbmcuCi0gICAgICAgICAgICBp
ICs9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgaWdub3JlX2Vycm9yczoK
LSAgICAgICAgICAgICMgVGhlIHRva2VuaXplciBzZWVtcyB0byBiZSBpbiBwcmV0dHkgZ29vZCBz
aGFwZS4gIFRoaXMKLSAgICAgICAgICAgICMgcmFpc2UgaXMgY29uZGl0aW9uYWxseSBkaXNhYmxl
ZCBzbyB0aGF0IGJvZ3VzIGNvZGUKLSAgICAgICAgICAgICMgaW4gYW4gI2lmIDAgYmxvY2sgY2Fu
IGJlIGhhbmRsZWQuICBTaW5jZSB3ZSB3aWxsIGlnbm9yZQotICAgICAgICAgICAgIyBpdCBhbnl3
YXlzLCB0aGlzIGlzIHByb2JhYmx5IGZpbmUuICBTbyBkaXNhYmxlIHRoZQotICAgICAgICAgICAg
IyBleGNlcHRpb24gYW5kICByZXR1cm4gdGhlIGJvZ3VzIGNoYXIuCi0gICAgICAgICAgICBpICs9
IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0dvdCBpbnZh
bGlkIHRva2VuIGluICVzIEAgJWQgdG9rZW46JXM6ICVyXG4nICUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCc/JywgaSwgYywgc291cmNlW2ktMTA6aSsxMF0pKQotICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKCd1bmV4cGVjdGVkIHRva2VuJykKLQotICAgICAgICBpZiBpIDw9
IDA6Ci0gICAgICAgICAgICBwcmludCgnSW52YWxpZCBpbmRleCwgZXhpdGluZyBub3cuJykKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICB5aWVsZCBUb2tlbih0b2tlbl90eXBlLCBzb3VyY2Vb
c3RhcnQ6aV0sIHN0YXJ0LCBpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAg
ZGVmIG1haW4oYXJndik6Ci0gICAgICAgICIiIkRyaXZlciBtb3N0bHkgZm9yIHRlc3RpbmcgcHVy
cG9zZXMuIiIiCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBhcmd2WzE6XToKLSAgICAgICAgICAg
IHNvdXJjZSA9IHV0aWxzLlJlYWRGaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgaWYgc291cmNl
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHRv
a2VuIGluIEdldFRva2Vucyhzb3VyY2UpOgotICAgICAgICAgICAgICAgIHByaW50KCclLTEyczog
JXMnICUgKHRva2VuLnRva2VuX3R5cGUsIHRva2VuLm5hbWUpKQotICAgICAgICAgICAgICAgICMg
cHJpbnQoJ1xyJTYuMmYlJScgJSAoMTAwLjAgKiBpbmRleCAvIHRva2VuLmVuZCksKQotICAgICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nKQotCi0KLSAgICBtYWluKHN5cy5hcmd2KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL3V0aWxzLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL3V0aWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCBlYWIzNmVlYzMzNWViYWE2MDMwNTFiN2JjNTE4NmM4N2E4Zjc4ZjgxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC91dGlscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQxICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNyBOZWFsIE5v
cndpdHoKLSMgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KLSMKLSMgTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
Ci0jIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KLSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0j
Ci0jICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0j
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
LSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSIiIkdlbmVyaWMgdXRpbGl0aWVz
IGZvciBDKysgcGFyc2luZy4iIiIKLQotX19hdXRob3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29t
IChOZWFsIE5vcndpdHopJwotCi0KLWltcG9ydCBzeXMKLQotCi0jIFNldCB0byBUcnVlIHRvIHNl
ZSB0aGUgc3RhcnQvZW5kIHRva2VuIGluZGljZXMuCi1ERUJVRyA9IFRydWUKLQotCi1kZWYgUmVh
ZEZpbGUoZmlsZW5hbWUsIHByaW50X2Vycm9yPVRydWUpOgotICAgICIiIlJldHVybnMgdGhlIGNv
bnRlbnRzIG9mIGEgZmlsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIGZwID0gb3BlbihmaWxlbmFt
ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAg
ICAgICBpZiBwcmludF9lcnJvcjoKLSAgICAgICAgICAgIHByaW50KCdFcnJvciByZWFkaW5nICVz
OiAlcycgJSAoZmlsZW5hbWUsIHN5cy5leGNfaW5mbygpWzFdKSkKLSAgICAgICAgcmV0dXJuIE5v
bmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2dtb2NrX2dlbi5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2dtb2NrX2dlbi5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggOGNjMGQxMzVkNmYyZDlhM2U0YWZmYzNlYTFhMDk5NDY5N2I2
NTM4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9nbW9ja19nZW4ucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwzMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgg
R29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
LSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
LSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSIiIkRyaXZlciBmb3Igc3RhcnRpbmcgdXAgR29vZ2xl
IE1vY2sgY2xhc3MgZ2VuZXJhdG9yLiIiIgotCi1fX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdvb2ds
ZS5jb20gKE5lYWwgTm9yd2l0eiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAjIEFkZCB0aGUgZGlyZWN0b3J5IG9mIHRoaXMgc2NyaXB0
IHRvIHRoZSBwYXRoIHNvIHdlIGNhbiBpbXBvcnQgZ21vY2tfY2xhc3MuCi0gIHN5cy5wYXRoLmFw
cGVuZChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotCi0gIGZyb20gY3BwIGltcG9ydCBnbW9j
a19jbGFzcwotICAjIEZpeCB0aGUgZG9jc3RyaW5nIGluIGNhc2UgdGhleSByZXF1aXJlIHRoZSB1
c2FnZS4KLSAgZ21vY2tfY2xhc3MuX19kb2NfXyA9IGdtb2NrX2NsYXNzLl9fZG9jX18ucmVwbGFj
ZSgnZ21vY2tfY2xhc3MucHknLCBfX2ZpbGVfXykKLSAgZ21vY2tfY2xhc3MubWFpbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrLWNvbmZpZy5pbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NjcmlwdHMvZ21vY2stY29uZmlnLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAy
YmFlZmU5NGQ2ZmI5ZTAxMTUzZGI5YjYwZjFjNzFlM2YyYzBhNzNiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ21vY2st
Y29uZmlnLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzAzICswLDAgQEAKLSMhL2Jpbi9zaAotCi0j
IFRoZXNlIHZhcmlhYmxlcyBhcmUgYXV0b21hdGljYWxseSBmaWxsZWQgaW4gYnkgdGhlIGNvbmZp
Z3VyZSBzY3JpcHQuCi1uYW1lPSJAUEFDS0FHRV9UQVJOQU1FQCIKLXZlcnNpb249IkBQQUNLQUdF
X1ZFUlNJT05AIgotCi1zaG93X3VzYWdlKCkKLXsKLSAgZWNobyAiVXNhZ2U6IGdtb2NrLWNvbmZp
ZyBbT1BUSU9OUy4uLl0iCi19Ci0KLXNob3dfaGVscCgpCi17Ci0gIHNob3dfdXNhZ2UKLSAgY2F0
IDw8XEVPRgotCi1UaGUgYGdtb2NrLWNvbmZpZycgc2NyaXB0IHByb3ZpZGVzIGFjY2VzcyB0byB0
aGUgbmVjZXNzYXJ5IGNvbXBpbGUgYW5kIGxpbmtpbmcKLWZsYWdzIHRvIGNvbm5lY3Qgd2l0aCBH
b29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrLCBib3RoIGluIGEgYnVpbGQgcHJpb3IgdG8KLWlu
c3RhbGxhdGlvbiwgYW5kIG9uIHRoZSBzeXN0ZW0gcHJvcGVyIGFmdGVyIGluc3RhbGxhdGlvbi4g
VGhlIGluc3RhbGxhdGlvbgotb3ZlcnJpZGVzIG1heSBiZSBpc3N1ZWQgaW4gY29tYmluYXRpb24g
d2l0aCBhbnkgb3RoZXIgcXVlcmllcywgYnV0IHdpbGwgb25seQotYWZmZWN0IGluc3RhbGxhdGlv
biBxdWVyaWVzIGlmIGNhbGxlZCBvbiBhIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGdtb2NrLiBU
aGUKLWluc3RhbGxhdGlvbiBxdWVyaWVzIG1heSBub3QgYmUgaXNzdWVkIHdpdGggYW55IG90aGVy
IHR5cGVzIG9mIHF1ZXJpZXMsIGFuZAotb25seSBvbmUgaW5zdGFsbGF0aW9uIHF1ZXJ5IG1heSBi
ZSBtYWRlIGF0IGEgdGltZS4gVGhlIHZlcnNpb24gcXVlcmllcyBhbmQKLWNvbXBpbGVyIGZsYWcg
cXVlcmllcyBtYXkgYmUgY29tYmluZWQgYXMgZGVzaXJlZCBidXQgbm90IG1peGVkLiBEaWZmZXJl
bnQKLXZlcnNpb24gcXVlcmllcyBhcmUgYWx3YXlzIGNvbWJpbmVkIHdpdGggbG9naWNhbCAiYW5k
IiBzZW1hbnRpY3MsIGFuZCBvbmx5IHRoZQotbGFzdCBvZiBhbnkgcGFydGljdWxhciBxdWVyeSBp
cyB1c2VkIHdoaWxlIGFsbCBwcmV2aW91cyBvbmVzIGlnbm9yZWQuIEFsbAotdmVyc2lvbnMgbXVz
dCBiZSBzcGVjaWZpZWQgYXMgYSBzZXF1ZW5jZSBvZiBudW1iZXJzIHNlcGFyYXRlZCBieSBwZXJp
b2RzLgotQ29tcGlsZXIgZmxhZyBxdWVyaWVzIG91dHB1dCB0aGUgdW5pb24gb2YgdGhlIHNldHMg
b2YgZmxhZ3Mgd2hlbiBjb21iaW5lZC4KLQotIEV4YW1wbGVzOgotICBnbW9jay1jb25maWcgLS1t
aW4tdmVyc2lvbj0xLjAgfHwgZWNobyAiSW5zdWZmaWNpZW50IEdvb2dsZSBNb2NrIHZlcnNpb24u
IgotCi0gIGcrKyAkKGdtb2NrLWNvbmZpZyAtLWNwcGZsYWdzIC0tY3h4ZmxhZ3MpIC1vIGZvby5v
IC1jIGZvby5jcHAKLSAgZysrICQoZ21vY2stY29uZmlnIC0tbGRmbGFncyAtLWxpYnMpIC1vIGZv
byBmb28ubwotCi0gICMgV2hlbiB1c2luZyBhIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIEdvb2ds
ZSBNb2NrOgotICBnKysgJCguLi8uLi9teV9nbW9ja19idWlsZC9zY3JpcHRzL2dtb2NrLWNvbmZp
ZyAuLi4pIC4uLgotCi0gICMgV2hlbiB1c2luZyBhbiBpbnN0YWxsZWQgR29vZ2xlIE1vY2ssIGJ1
dCB3aXRoIGluc3RhbGxhdGlvbiBvdmVycmlkZXM6Ci0gIGV4cG9ydCBHTU9DS19QUkVGSVg9Ii9v
cHQiCi0gIGcrKyAkKGdtb2NrLWNvbmZpZyAtLWxpYmRpcj0iL29wdC9saWI2NCIgLi4uKSAuLi4K
LQotIEhlbHA6Ci0gIC0tdXNhZ2UgICAgICAgICAgICAgICAgICAgIGJyaWVmIHVzYWdlIGluZm9y
bWF0aW9uCi0gIC0taGVscCAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIG1l
c3NhZ2UKLQotIEluc3RhbGxhdGlvbiBPdmVycmlkZXM6Ci0gIC0tcHJlZml4PTxkaXI+ICAgICAg
ICAgICAgIG92ZXJyaWRlcyB0aGUgaW5zdGFsbGF0aW9uIHByZWZpeAotICAtLWV4ZWMtcHJlZml4
PTxkaXI+ICAgICAgICBvdmVycmlkZXMgdGhlIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZp
eAotICAtLWxpYmRpcj08ZGlyPiAgICAgICAgICAgICBvdmVycmlkZXMgdGhlIGxpYnJhcnkgaW5z
dGFsbGF0aW9uIHByZWZpeAotICAtLWluY2x1ZGVkaXI9PGRpcj4gICAgICAgICBvdmVycmlkZXMg
dGhlIGhlYWRlciBmaWxlIGluc3RhbGxhdGlvbiBwcmVmaXgKLQotIEluc3RhbGxhdGlvbiBRdWVy
aWVzOgotICAtLXByZWZpeCAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gcHJlZml4Ci0g
IC0tZXhlYy1wcmVmaXggICAgICAgICAgICAgIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZp
eAotICAtLWxpYmRpciAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJl
Y3RvcnkKLSAgLS1pbmNsdWRlZGlyICAgICAgICAgICAgICAgaGVhZGVyIGZpbGUgaW5zdGFsbGF0
aW9uIGRpcmVjdG9yeQotICAtLXZlcnNpb24gICAgICAgICAgICAgICAgICB0aGUgdmVyc2lvbiBv
ZiB0aGUgR29vZ2xlIE1vY2sgaW5zdGFsbGF0aW9uCi0KLSBWZXJzaW9uIFF1ZXJpZXM6Ci0gIC0t
bWluLXZlcnNpb249VkVSU0lPTiAgICAgIHJldHVybiAwIGlmIHRoZSB2ZXJzaW9uIGlzIGF0IGxl
YXN0IFZFUlNJT04KLSAgLS1leGFjdC12ZXJzaW9uPVZFUlNJT04gICAgcmV0dXJuIDAgaWYgdGhl
IHZlcnNpb24gaXMgZXhhY3RseSBWRVJTSU9OCi0gIC0tbWF4LXZlcnNpb249VkVSU0lPTiAgICAg
IHJldHVybiAwIGlmIHRoZSB2ZXJzaW9uIGlzIGF0IG1vc3QgVkVSU0lPTgotCi0gQ29tcGlsYXRp
b24gRmxhZyBRdWVyaWVzOgotICAtLWNwcGZsYWdzICAgICAgICAgICAgICAgICBjb21waWxlIGZs
YWdzIHNwZWNpZmljIHRvIHRoZSBDLWxpa2UgcHJlcHJvY2Vzc29ycwotICAtLWN4eGZsYWdzICAg
ICAgICAgICAgICAgICBjb21waWxlIGZsYWdzIGFwcHJvcHJpYXRlIGZvciBDKysgcHJvZ3JhbXMK
LSAgLS1sZGZsYWdzICAgICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzCi0gIC0tbGlicyAgICAg
ICAgICAgICAgICAgICAgIGxpYnJhcmllcyBmb3IgbGlua2luZwotCi1FT0YKLX0KLQotIyBUaGlz
IGZ1bmN0aW9uIGJvdW5kcyBvdXIgdmVyc2lvbiB3aXRoIGEgbWluIGFuZCBhIG1heC4gSXQgdXNl
cyBzb21lIGNsZXZlcgotIyBQT1NJWC1jb21wbGlhbnQgdmFyaWFibGUgZXhwYW5zaW9uIHRvIHBv
cnRhYmx5IGRvIGFsbCB0aGUgd29yayBpbiB0aGUgc2hlbGwKLSMgYW5kIGF2b2lkIGFueSBkZXBl
bmRlbmN5IG9uIGEgcGFydGljdWxhciAic2VkIiBvciAiYXdrIiBpbXBsZW1lbnRhdGlvbi4KLSMg
Tm90YWJsZSBpcyB0aGF0IGl0IHdpbGwgb25seSBldmVyIGNvbXBhcmUgdGhlIGZpcnN0IDMgY29t
cG9uZW50cyBvZiB2ZXJzaW9ucy4KLSMgRnVydGhlciBjb21wb25lbnRzIHdpbGwgYmUgY2xlYW5s
eSBzdHJpcHBlZCBvZmYuIEFsbCB2ZXJzaW9ucyBtdXN0IGJlCi0jIHVuYWRvcm5lZCwgc28gInYx
LjAiIHdpbGwgKm5vdCogd29yay4gVGhlIG1pbmltdW0gdmVyc2lvbiBtdXN0IGJlIGluICQxLCBh
bmQKLSMgdGhlIG1heCBpbiAkMi4gVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IElmIHRoaXMg
ZXZlciBicmVha3MsIHdlIHNob3VsZAotIyBpbnZlc3RpZ2F0ZSBleHBhbmRpbmcgdGhpcyB2aWEg
YXV0b200dGUgZnJvbSBBU19WRVJTSU9OX0NPTVBBUkUgcmF0aGVyIHRoYW4KLSMgY29udGludWlu
ZyB0byBtYWludGFpbiBvdXIgb3duIHNoZWxsIHZlcnNpb24uCi1jaGVja192ZXJzaW9ucygpCi17
Ci0gIG1ham9yX3ZlcnNpb249JHt2ZXJzaW9uJSUuKn0KLSAgbWlub3JfdmVyc2lvbj0iMCIKLSAg
cG9pbnRfdmVyc2lvbj0iMCIKLSAgaWYgdGVzdCAiJHt2ZXJzaW9uIyoufSIgIT0gIiR7dmVyc2lv
bn0iOyB0aGVuCi0gICAgbWlub3JfdmVyc2lvbj0ke3ZlcnNpb24jKi59Ci0gICAgbWlub3JfdmVy
c2lvbj0ke21pbm9yX3ZlcnNpb24lJS4qfQotICBmaQotICBpZiB0ZXN0ICIke3ZlcnNpb24jKi4q
Ln0iICE9ICIke3ZlcnNpb259IjsgdGhlbgotICAgIHBvaW50X3ZlcnNpb249JHt2ZXJzaW9uIyou
Ki59Ci0gICAgcG9pbnRfdmVyc2lvbj0ke3BvaW50X3ZlcnNpb24lJS4qfQotICBmaQotCi0gIG1p
bl92ZXJzaW9uPSIkMSIKLSAgbWluX21ham9yX3ZlcnNpb249JHttaW5fdmVyc2lvbiUlLip9Ci0g
IG1pbl9taW5vcl92ZXJzaW9uPSIwIgotICBtaW5fcG9pbnRfdmVyc2lvbj0iMCIKLSAgaWYgdGVz
dCAiJHttaW5fdmVyc2lvbiMqLn0iICE9ICIke21pbl92ZXJzaW9ufSI7IHRoZW4KLSAgICBtaW5f
bWlub3JfdmVyc2lvbj0ke21pbl92ZXJzaW9uIyoufQotICAgIG1pbl9taW5vcl92ZXJzaW9uPSR7
bWluX21pbm9yX3ZlcnNpb24lJS4qfQotICBmaQotICBpZiB0ZXN0ICIke21pbl92ZXJzaW9uIyou
Ki59IiAhPSAiJHttaW5fdmVyc2lvbn0iOyB0aGVuCi0gICAgbWluX3BvaW50X3ZlcnNpb249JHtt
aW5fdmVyc2lvbiMqLioufQotICAgIG1pbl9wb2ludF92ZXJzaW9uPSR7bWluX3BvaW50X3ZlcnNp
b24lJS4qfQotICBmaQotCi0gIG1heF92ZXJzaW9uPSIkMiIKLSAgbWF4X21ham9yX3ZlcnNpb249
JHttYXhfdmVyc2lvbiUlLip9Ci0gIG1heF9taW5vcl92ZXJzaW9uPSIwIgotICBtYXhfcG9pbnRf
dmVyc2lvbj0iMCIKLSAgaWYgdGVzdCAiJHttYXhfdmVyc2lvbiMqLn0iICE9ICIke21heF92ZXJz
aW9ufSI7IHRoZW4KLSAgICBtYXhfbWlub3JfdmVyc2lvbj0ke21heF92ZXJzaW9uIyoufQotICAg
IG1heF9taW5vcl92ZXJzaW9uPSR7bWF4X21pbm9yX3ZlcnNpb24lJS4qfQotICBmaQotICBpZiB0
ZXN0ICIke21heF92ZXJzaW9uIyouKi59IiAhPSAiJHttYXhfdmVyc2lvbn0iOyB0aGVuCi0gICAg
bWF4X3BvaW50X3ZlcnNpb249JHttYXhfdmVyc2lvbiMqLioufQotICAgIG1heF9wb2ludF92ZXJz
aW9uPSR7bWF4X3BvaW50X3ZlcnNpb24lJS4qfQotICBmaQotCi0gIHRlc3QgJCgoJG1ham9yX3Zl
cnNpb24pKSAtbHQgJCgoJG1pbl9tYWpvcl92ZXJzaW9uKSkgJiYgZXhpdCAxCi0gIGlmIHRlc3Qg
JCgoJG1ham9yX3ZlcnNpb24pKSAtZXEgJCgoJG1pbl9tYWpvcl92ZXJzaW9uKSk7IHRoZW4KLSAg
ICB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWx0ICQoKCRtaW5fbWlub3JfdmVyc2lvbikpICYm
IGV4aXQgMQotICAgIGlmIHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24pKSAtZXEgJCgoJG1pbl9taW5v
cl92ZXJzaW9uKSk7IHRoZW4KLSAgICAgIHRlc3QgJCgoJHBvaW50X3ZlcnNpb24pKSAtbHQgJCgo
JG1pbl9wb2ludF92ZXJzaW9uKSkgJiYgZXhpdCAxCi0gICAgZmkKLSAgZmkKLQotICB0ZXN0ICQo
KCRtYWpvcl92ZXJzaW9uKSkgLWd0ICQoKCRtYXhfbWFqb3JfdmVyc2lvbikpICYmIGV4aXQgMQot
ICBpZiB0ZXN0ICQoKCRtYWpvcl92ZXJzaW9uKSkgLWVxICQoKCRtYXhfbWFqb3JfdmVyc2lvbikp
OyB0aGVuCi0gICAgdGVzdCAkKCgkbWlub3JfdmVyc2lvbikpIC1ndCAkKCgkbWF4X21pbm9yX3Zl
cnNpb24pKSAmJiBleGl0IDEKLSAgICBpZiB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWVxICQo
KCRtYXhfbWlub3JfdmVyc2lvbikpOyB0aGVuCi0gICAgICB0ZXN0ICQoKCRwb2ludF92ZXJzaW9u
KSkgLWd0ICQoKCRtYXhfcG9pbnRfdmVyc2lvbikpICYmIGV4aXQgMQotICAgIGZpCi0gIGZpCi0K
LSAgZXhpdCAwCi19Ci0KLSMgU2hvdyB0aGUgdXNhZ2UgbGluZSB3aGVuIG5vIGFyZ3VtZW50cyBh
cmUgc3BlY2lmaWVkLgotaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgotICBzaG93X3VzYWdlCi0gIGV4
aXQgMQotZmkKLQotd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgY2FzZSAkMSBpbgotICAgIC0t
dXNhZ2UpICAgICAgICAgIHNob3dfdXNhZ2U7ICAgICAgICAgZXhpdCAwOzsKLSAgICAtLWhlbHAp
ICAgICAgICAgICBzaG93X2hlbHA7ICAgICAgICAgIGV4aXQgMDs7Ci0KLSAgICAjIEluc3RhbGxh
dGlvbiBvdmVycmlkZXMKLSAgICAtLXByZWZpeD0qKSAgICAgICBHTU9DS19QUkVGSVg9JHsxIy0t
cHJlZml4PX07OwotICAgIC0tZXhlYy1wcmVmaXg9KikgIEdNT0NLX0VYRUNfUFJFRklYPSR7MSMt
LWV4ZWMtcHJlZml4PX07OwotICAgIC0tbGliZGlyPSopICAgICAgIEdNT0NLX0xJQkRJUj0kezEj
LS1saWJkaXI9fTs7Ci0gICAgLS1pbmNsdWRlZGlyPSopICAgR01PQ0tfSU5DTFVERURJUj0kezEj
LS1pbmNsdWRlZGlyPX07OwotCi0gICAgIyBJbnN0YWxsYXRpb24gcXVlcmllcwotICAgIC0tcHJl
Zml4fC0tZXhlYy1wcmVmaXh8LS1saWJkaXJ8LS1pbmNsdWRlZGlyfC0tdmVyc2lvbikKLSAgICAg
IGlmIHRlc3QgLW4gIiR7ZG9fcXVlcnl9IjsgdGhlbgotICAgICAgICBzaG93X3VzYWdlCi0gICAg
ICAgIGV4aXQgMQotICAgICAgZmkKLSAgICAgIGRvX3F1ZXJ5PSR7MSMtLX0KLSAgICAgIDs7Ci0K
LSAgICAjIFZlcnNpb24gY2hlY2tpbmcKLSAgICAtLW1pbi12ZXJzaW9uPSopCi0gICAgICBkb19j
aGVja192ZXJzaW9ucz15ZXMKLSAgICAgIG1pbl92ZXJzaW9uPSR7MSMtLW1pbi12ZXJzaW9uPX0K
LSAgICAgIDs7Ci0gICAgLS1tYXgtdmVyc2lvbj0qKQotICAgICAgZG9fY2hlY2tfdmVyc2lvbnM9
eWVzCi0gICAgICBtYXhfdmVyc2lvbj0kezEjLS1tYXgtdmVyc2lvbj19Ci0gICAgICA7OwotICAg
IC0tZXhhY3QtdmVyc2lvbj0qKQotICAgICAgZG9fY2hlY2tfdmVyc2lvbnM9eWVzCi0gICAgICBl
eGFjdF92ZXJzaW9uPSR7MSMtLWV4YWN0LXZlcnNpb249fQotICAgICAgOzsKLQotICAgICMgQ29t
cGlsZXIgZmxhZyBvdXRwdXQKLSAgICAtLWNwcGZsYWdzKSAgICAgICBlY2hvX2NwcGZsYWdzPXll
czs7Ci0gICAgLS1jeHhmbGFncykgICAgICAgZWNob19jeHhmbGFncz15ZXM7OwotICAgIC0tbGRm
bGFncykgICAgICAgIGVjaG9fbGRmbGFncz15ZXM7OwotICAgIC0tbGlicykgICAgICAgICAgIGVj
aG9fbGlicz15ZXM7OwotCi0gICAgIyBFdmVyeXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKLSAgICAq
KSAgICAgICAgICAgICAgICBzaG93X3VzYWdlOyAgICAgICAgIGV4aXQgMTs7Ci0gIGVzYWMKLSAg
c2hpZnQKLWRvbmUKLQotIyBUaGVzZSBoYXZlIGRlZmF1bHRzIGZpbGxlZCBpbiBieSB0aGUgY29u
ZmlndXJlIHNjcmlwdCBidXQgY2FuIGFsc28gYmUKLSMgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVu
dCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCi1wcmVmaXg9IiR7R01PQ0tf
UFJFRklYOi1AcHJlZml4QH0iCi1leGVjX3ByZWZpeD0iJHtHTU9DS19FWEVDX1BSRUZJWDotQGV4
ZWNfcHJlZml4QH0iCi1saWJkaXI9IiR7R01PQ0tfTElCRElSOi1AbGliZGlyQH0iCi1pbmNsdWRl
ZGlyPSIke0dNT0NLX0lOQ0xVREVESVI6LUBpbmNsdWRlZGlyQH0iCi0KLSMgV2UgdHJ5IGFuZCBk
ZXRlY3QgaWYgb3VyIGJpbmFyeSBpcyBub3QgbG9jYXRlZCBhdCBpdHMgaW5zdGFsbGVkIGxvY2F0
aW9uLiBJZgotIyBpdCdzIG5vdCwgd2UgcHJvdmlkZSB2YXJpYWJsZXMgcG9pbnRpbmcgdG8gdGhl
IHNvdXJjZSBhbmQgYnVpbGQgdHJlZSByYXRoZXIKLSMgdGhhbiB0byB0aGUgaW5zdGFsbCB0cmVl
LiBXZSBhbHNvIGxvY2F0ZSBHb29nbGUgVGVzdCB1c2luZyB0aGUgY29uZmlndXJlZAotIyBndGVz
dC1jb25maWcgc2NyaXB0IHJhdGhlciB0aGFuIHNlYXJjaGluZyB0aGUgUEFUSCBhbmQgb3VyIGJp
bmRpciBmb3Igb25lLgotIyBUaGlzIGFsbG93cyBidWlsZGluZyBhZ2FpbnN0IGEganVzdC1idWls
dCBnbW9jayByYXRoZXIgdGhhbiBhbiBpbnN0YWxsZWQKLSMgZ21vY2suCi1iaW5kaXI9IkBiaW5k
aXJAIgotdGhpc19yZWxhdGl2ZV9iaW5kaXI9YGRpcm5hbWUgJDBgCi10aGlzX2JpbmRpcj1gY2Qg
JHt0aGlzX3JlbGF0aXZlX2JpbmRpcn07IHB3ZCAtUGAKLWlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9
IiA9ICIke3RoaXNfYmluZGlyJSR7YmluZGlyfX0iOyB0aGVuCi0gICMgVGhlIHBhdGggdG8gdGhl
IHNjcmlwdCBkb2Vzbid0IGVuZCBpbiB0aGUgYmluZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYs
Ci0gICMgYXNzdW1lIHRoYXQgd2UgYXJlIGluIGEgYnVpbGQgdHJlZS4KLSAgYnVpbGRfZGlyPWBk
aXJuYW1lICR7dGhpc19iaW5kaXJ9YAotICBzcmNfZGlyPWBjZCAke3RoaXNfYmluZGlyfS9AdG9w
X3NyY2RpckA7IHB3ZCAtUGAKLQotICAjIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBUaGlz
IGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwgd2UKLSAgIyBzaG91bGQgd29y
ayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBhbHRvZ2V0aGVyLCByZXBsYWNp
bmcgaXQKLSAgIyB3aXRoIGRpcmVjdCByZWZlcmVuY2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCBhIGxp
bmsgcGF0aC4KLSAgZ21vY2tfbGlicz0iJHtidWlsZF9kaXJ9L2xpYi9saWJnbW9jay5sYSIKLSAg
Z21vY2tfbGRmbGFncz0iIgotCi0gICMgV2UgcHJvdmlkZSBob29rcyB0byBpbmNsdWRlIGZyb20g
ZWl0aGVyIHRoZSBzb3VyY2Ugb3IgYnVpbGQgZGlyLCB3aGVyZSB0aGUKLSAgIyBidWlsZCBkaXIg
aXMgYWx3YXlzIHByZWZlcnJlZC4gVGhpcyB3aWxsIHBvdGVudGlhbGx5IGFsbG93IHVzIHRvIHdy
aXRlCi0gICMgYnVpbGQgcnVsZXMgZm9yIGdlbmVyYXRlZCBoZWFkZXJzIGFuZCBoYXZlIHRoZW0g
YXV0b21hdGljYWxseSBiZSBwcmVmZXJyZWQKLSAgIyBvdmVyIHByb3ZpZGVkIHZlcnNpb25zLgot
ICBnbW9ja19jcHBmbGFncz0iLUkke2J1aWxkX2Rpcn0vaW5jbHVkZSAtSSR7c3JjX2Rpcn0vaW5j
bHVkZSIKLSAgZ21vY2tfY3h4ZmxhZ3M9IiIKLQotICAjIERpcmVjdGx5IGludm9rZSB0aGUgZ3Rl
c3QtY29uZmlnIHNjcmlwdCB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgZ3Rlc3Rf
Y29uZmlnPSJAR1RFU1RfQ09ORklHQCIKLWVsc2UKLSAgIyBXZSdyZSB1c2luZyBhbiBpbnN0YWxs
ZWQgZ21vY2ssIGFsdGhvdWdoIGl0IG1heSBiZSBzdGFnZWQgdW5kZXIgc29tZQotICAjIHByZWZp
eC4gQXNzdW1lIChhcyBvdXIgb3duIGxpYnJhcmllcyBkbykgdGhhdCB3ZSBjYW4gcmVzb2x2ZSB0
aGUgcHJlZml4LAotICAjIGFuZCBhcmUgcHJlc2VudCBpbiB0aGUgZHluYW1pYyBsaW5rIHBhdGhz
LgotICBnbW9ja19sZGZsYWdzPSItTCR7bGliZGlyfSIKLSAgZ21vY2tfbGlicz0iLWwke25hbWV9
IgotICBnbW9ja19jcHBmbGFncz0iLUkke2luY2x1ZGVkaXJ9IgotICBnbW9ja19jeHhmbGFncz0i
IgotCi0gICMgV2UgYWxzbyBwcmVmZXIgYW55IGd0ZXN0LWNvbmZpZyBzY3JpcHQgaW5zdGFsbGVk
IGluIG91ciBwcmVmaXguIExhY2tpbmcKLSAgIyBvbmUsIHdlIGxvb2sgaW4gdGhlIFBBVEggZm9y
IG9uZS4KLSAgZ3Rlc3RfY29uZmlnPSIke2JpbmRpcn0vZ3Rlc3QtY29uZmlnIgotICBpZiB0ZXN0
ICEgLXggIiR7Z3Rlc3RfY29uZmlnfSI7IHRoZW4KLSAgICBndGVzdF9jb25maWc9YHdoaWNoIGd0
ZXN0LWNvbmZpZ2AKLSAgZmkKLWZpCi0KLSMgRW5zdXJlIHRoYXQgd2UgaGF2ZSBsb2NhdGVkIGEg
R29vZ2xlIFRlc3QgdG8gbGluayBhZ2FpbnN0LgotaWYgISB0ZXN0IC14ICIke2d0ZXN0X2NvbmZp
Z30iOyB0aGVuCi0gIGVjaG8gIlVuYWJsZSB0byBsb2NhdGUgR29vZ2xlIFRlc3QsIGNoZWNrIHlv
dXIgR29vZ2xlIE1vY2sgY29uZmlndXJhdGlvbiIgXAotICAgICAgICJhbmQgaW5zdGFsbGF0aW9u
IiA+JjIKLSAgZXhpdCAxCi1lbGlmICEgIiR7Z3Rlc3RfY29uZmlnfSIgIi0tZXhhY3QtdmVyc2lv
bj1AR1RFU1RfVkVSU0lPTkAiOyB0aGVuCi0gIGVjaG8gIlRoZSBHb29nbGUgVGVzdCBmb3VuZCBp
cyBub3QgdGhlIHNhbWUgdmVyc2lvbiBhcyBHb29nbGUgTW9jayB3YXMgIiBcCi0gICAgICAgImJ1
aWx0IGFnYWluc3QiID4mMgotICBleGl0IDEKLWZpCi0KLSMgQWRkIHRoZSBuZWNlc3NhcnkgR29v
Z2xlIFRlc3QgYml0cyBpbnRvIHRoZSB2YXJpb3VzIGZsYWcgdmFyaWFibGVzCi1nbW9ja19jcHBm
bGFncz0iJHtnbW9ja19jcHBmbGFnc30gYCR7Z3Rlc3RfY29uZmlnfSAtLWNwcGZsYWdzYCIKLWdt
b2NrX2N4eGZsYWdzPSIke2dtb2NrX2N4eGZsYWdzfSBgJHtndGVzdF9jb25maWd9IC0tY3h4Zmxh
Z3NgIgotZ21vY2tfbGRmbGFncz0iJHtnbW9ja19sZGZsYWdzfSBgJHtndGVzdF9jb25maWd9IC0t
bGRmbGFnc2AiCi1nbW9ja19saWJzPSIke2dtb2NrX2xpYnN9IGAke2d0ZXN0X2NvbmZpZ30gLS1s
aWJzYCIKLQotIyBEbyBhbiBpbnN0YWxsYXRpb24gcXVlcnkgaWYgcmVxdWVzdGVkLgotaWYgdGVz
dCAtbiAiJGRvX3F1ZXJ5IjsgdGhlbgotICBjYXNlICRkb19xdWVyeSBpbgotICAgIHByZWZpeCkg
ICAgICAgICAgIGVjaG8gJHByZWZpeDsgICAgICAgZXhpdCAwOzsKLSAgICBleGVjLXByZWZpeCkg
ICAgICBlY2hvICRleGVjX3ByZWZpeDsgIGV4aXQgMDs7Ci0gICAgbGliZGlyKSAgICAgICAgICAg
ZWNobyAkbGliZGlyOyAgICAgICBleGl0IDA7OwotICAgIGluY2x1ZGVkaXIpICAgICAgIGVjaG8g
JGluY2x1ZGVkaXI7ICAgZXhpdCAwOzsKLSAgICB2ZXJzaW9uKSAgICAgICAgICBlY2hvICR2ZXJz
aW9uOyAgICAgIGV4aXQgMDs7Ci0gICAgKikgICAgICAgICAgICAgICAgc2hvd191c2FnZTsgICAg
ICAgICBleGl0IDE7OwotICBlc2FjCi1maQotCi0jIERvIGEgdmVyc2lvbiBjaGVjayBpZiByZXF1
ZXN0ZWQuCi1pZiB0ZXN0ICIkZG9fY2hlY2tfdmVyc2lvbnMiID0gInllcyI7IHRoZW4KLSAgIyBN
YWtlIHN1cmUgd2UgZGlkbid0IHJlY2VpdmUgYSBiYWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVy
cy4KLSAgdGVzdCAiJGVjaG9fY3BwZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fY3h4ZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fbGRmbGFncyIgPSAieWVzIiAgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fbGlicyIgPSAieWVzIiAgICAgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLQotICBpZiB0ZXN0ICIkZXhhY3RfdmVyc2lvbiIgIT0gIiI7IHRoZW4KLSAgICBjaGVja192
ZXJzaW9ucyAkZXhhY3RfdmVyc2lvbiAkZXhhY3RfdmVyc2lvbgotICAgICMgdW5yZWFjaGFibGUK
LSAgZWxzZQotICAgIGNoZWNrX3ZlcnNpb25zICR7bWluX3ZlcnNpb246LTAuMC4wfSAke21heF92
ZXJzaW9uOi05OTk5Ljk5OTkuOTk5OX0KLSAgICAjIHVucmVhY2hhYmxlCi0gIGZpCi1maQotCi0j
IERvIHRoZSBvdXRwdXQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgc28gdGhhdCB0aGVzZSBjYW4gYmUg
dXNlZCBpbi1saW5lIG9mCi0jIGEgY29tcGlsZXIgaW52b2NhdGlvbi4KLW91dHB1dD0iIgotdGVz
dCAiJGVjaG9fY3BwZmxhZ3MiID0gInllcyIgJiYgb3V0cHV0PSIkb3V0cHV0ICRnbW9ja19jcHBm
bGFncyIKLXRlc3QgIiRlY2hvX2N4eGZsYWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91dHB1dCAk
Z21vY2tfY3h4ZmxhZ3MiCi10ZXN0ICIkZWNob19sZGZsYWdzIiA9ICJ5ZXMiICAmJiBvdXRwdXQ9
IiRvdXRwdXQgJGdtb2NrX2xkZmxhZ3MiCi10ZXN0ICIkZWNob19saWJzIiA9ICJ5ZXMiICAgICAm
JiBvdXRwdXQ9IiRvdXRwdXQgJGdtb2NrX2xpYnMiCi1lY2hvICRvdXRwdXQKLQotZXhpdCAwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrX2RvY3Rvci5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3NjcmlwdHMvZ21vY2tfZG9jdG9yLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCA3NDk5MmJjNzQ0ODEwNzQ1YzcyZGRkOGJjMjBkOTgxNWFmM2MyYWJkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ21v
Y2tfZG9jdG9yLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjQwICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIkNvbnZlcnRzIGNvbXBpbGVyJ3Mg
ZXJyb3JzIGluIGNvZGUgdXNpbmcgR29vZ2xlIE1vY2sgdG8gcGxhaW4gRW5nbGlzaC4iIiIKLQot
X19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IHJl
Ci1pbXBvcnQgc3lzCi0KLV9WRVJTSU9OID0gJzEuMC4zJwotCi1fRU1BSUwgPSAnZ29vZ2xlbW9j
a0Bnb29nbGVncm91cHMuY29tJwotCi1fQ09NTU9OX0dNT0NLX1NZTUJPTFMgPSBbCi0gICAgIyBN
YXRjaGVycwotICAgICdfJywKLSAgICAnQScsCi0gICAgJ0FkZHJlc3NTYXRpc2ZpZXMnLAotICAg
ICdBbGxPZicsCi0gICAgJ0FuJywKLSAgICAnQW55T2YnLAotICAgICdDb250YWluZXJFcScsCi0g
ICAgJ0NvbnRhaW5zJywKLSAgICAnQ29udGFpbnNSZWdleCcsCi0gICAgJ0RvdWJsZUVxJywKLSAg
ICAnRWxlbWVudHNBcmUnLAotICAgICdFbGVtZW50c0FyZUFycmF5JywKLSAgICAnRW5kc1dpdGgn
LAotICAgICdFcScsCi0gICAgJ0ZpZWxkJywKLSAgICAnRmxvYXRFcScsCi0gICAgJ0dlJywKLSAg
ICAnR3QnLAotICAgICdIYXNTdWJzdHInLAotICAgICdJc0luaXRpYWxpemVkUHJvdG8nLAotICAg
ICdMZScsCi0gICAgJ0x0JywKLSAgICAnTWF0Y2hlckNhc3QnLAotICAgICdNYXRjaGVzJywKLSAg
ICAnTWF0Y2hlc1JlZ2V4JywKLSAgICAnTmFuU2Vuc2l0aXZlRG91YmxlRXEnLAotICAgICdOYW5T
ZW5zaXRpdmVGbG9hdEVxJywKLSAgICAnTmUnLAotICAgICdOb3QnLAotICAgICdOb3ROdWxsJywK
LSAgICAnUG9pbnRlZScsCi0gICAgJ1Byb3BlcnR5JywKLSAgICAnUmVmJywKLSAgICAnUmVzdWx0
T2YnLAotICAgICdTYWZlTWF0Y2hlckNhc3QnLAotICAgICdTdGFydHNXaXRoJywKLSAgICAnU3Ry
Q2FzZUVxJywKLSAgICAnU3RyQ2FzZU5lJywKLSAgICAnU3RyRXEnLAotICAgICdTdHJOZScsCi0g
ICAgJ1RydWx5JywKLSAgICAnVHlwZWRFcScsCi0gICAgJ1ZhbHVlJywKLQotICAgICMgQWN0aW9u
cwotICAgICdBc3NpZ24nLAotICAgICdCeVJlZicsCi0gICAgJ0RlbGV0ZUFyZycsCi0gICAgJ0Rv
QWxsJywKLSAgICAnRG9EZWZhdWx0JywKLSAgICAnSWdub3JlUmVzdWx0JywKLSAgICAnSW52b2tl
JywKLSAgICAnSW52b2tlQXJndW1lbnQnLAotICAgICdJbnZva2VXaXRob3V0QXJncycsCi0gICAg
J1JldHVybicsCi0gICAgJ1JldHVybk5ldycsCi0gICAgJ1JldHVybk51bGwnLAotICAgICdSZXR1
cm5SZWYnLAotICAgICdTYXZlQXJnJywKLSAgICAnU2V0QXJnUmVmZXJlZScsCi0gICAgJ1NldEFy
Z1BvaW50ZWUnLAotICAgICdTZXRBcmd1bWVudFBvaW50ZWUnLAotICAgICdTZXRBcnJheUFyZ3Vt
ZW50JywKLSAgICAnU2V0RXJybm9BbmRSZXR1cm4nLAotICAgICdUaHJvdycsCi0gICAgJ1dpdGhB
cmcnLAotICAgICdXaXRoQXJncycsCi0gICAgJ1dpdGhvdXRBcmdzJywKLQotICAgICMgQ2FyZGlu
YWxpdGllcwotICAgICdBbnlOdW1iZXInLAotICAgICdBdExlYXN0JywKLSAgICAnQXRNb3N0JywK
LSAgICAnQmV0d2VlbicsCi0gICAgJ0V4YWN0bHknLAotCi0gICAgIyBTZXF1ZW5jZXMKLSAgICAn
SW5TZXF1ZW5jZScsCi0gICAgJ1NlcXVlbmNlJywKLQotICAgICMgTWlzYwotICAgICdEZWZhdWx0
VmFsdWUnLAotICAgICdNb2NrJywKLSAgICBdCi0KLSMgUmVnZXggZm9yIG1hdGNoaW5nIHNvdXJj
ZSBmaWxlIHBhdGggYW5kIGxpbmUgbnVtYmVyIGluIHRoZSBjb21waWxlcidzIGVycm9ycy4KLV9H
Q0NfRklMRV9MSU5FX1JFID0gcicoP1A8ZmlsZT4uKik6KD9QPGxpbmU+XGQrKTooXGQrOik/XHMr
JwotX0NMQU5HX0ZJTEVfTElORV9SRSA9IHInKD9QPGZpbGU+LiopOig/UDxsaW5lPlxkKyk6KD9Q
PGNvbHVtbj5cZCspOlxzKycKLV9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFID0gKAotICAg
IHInKD9QPGZpbGU+LipbL1xcXl0oPyFnbW9jay0pW14vXFxdKyk6KD9QPGxpbmU+XGQrKTooP1A8
Y29sdW1uPlxkKyk6XHMrJykKLQotCi1kZWYgX0ZpbmRBbGxNYXRjaGVzKHJlZ2V4LCBzKToKLSAg
IiIiR2VuZXJhdGVzIGFsbCBtYXRjaGVzIG9mIHJlZ2V4IGluIHN0cmluZyBzLiIiIgotCi0gIHIg
PSByZS5jb21waWxlKHJlZ2V4KQotICByZXR1cm4gci5maW5kaXRlcihzKQotCi0KLWRlZiBfR2Vu
ZXJpY0RpYWdub3NlcihzaG9ydF9uYW1lLCBsb25nX25hbWUsIGRpYWdub3NlcywgbXNnKToKLSAg
IiIiRGlhZ25vc2VzIHRoZSBnaXZlbiBkaXNlYXNlIGJ5IHBhdHRlcm4gbWF0Y2hpbmcuCi0KLSAg
Q2FuIHByb3ZpZGUgZGlmZmVyZW50IGRpYWdub3NlcyBmb3IgZGlmZmVyZW50IHBhdHRlcm5zLgot
Ci0gIEFyZ3M6Ci0gICAgc2hvcnRfbmFtZTogU2hvcnQgbmFtZSBvZiB0aGUgZGlzZWFzZS4KLSAg
ICBsb25nX25hbWU6ICBMb25nIG5hbWUgb2YgdGhlIGRpc2Vhc2UuCi0gICAgZGlhZ25vc2VzOiAg
QSBsaXN0IG9mIHBhaXJzIChyZWdleCwgcGF0dGVybiBmb3IgZm9ybWF0dGluZyB0aGUgZGlhZ25v
c2lzCi0gICAgICAgICAgICAgICAgZm9yIG1hdGNoaW5nIHJlZ2V4KS4KLSAgICBtc2c6ICAgICAg
ICBDb21waWxlcidzIGVycm9yIG1lc3NhZ2VzLgotICBZaWVsZHM6Ci0gICAgVHVwbGVzIG9mIHRo
ZSBmb3JtCi0gICAgICAoc2hvcnQgbmFtZSBvZiBkaXNlYXNlLCBsb25nIG5hbWUgb2YgZGlzZWFz
ZSwgZGlhZ25vc2lzKS4KLSAgIiIiCi0gIGZvciByZWdleCwgZGlhZ25vc2lzIGluIGRpYWdub3Nl
czoKLSAgICBpZiByZS5zZWFyY2gocmVnZXgsIG1zZyk6Ci0gICAgICBkaWFnbm9zaXMgPSAnJShm
aWxlKXM6JShsaW5lKXM6JyArIGRpYWdub3NpcwotICAgICAgZm9yIG0gaW4gX0ZpbmRBbGxNYXRj
aGVzKHJlZ2V4LCBtc2cpOgotICAgICAgICB5aWVsZCAoc2hvcnRfbmFtZSwgbG9uZ19uYW1lLCBk
aWFnbm9zaXMgJSBtLmdyb3VwZGljdCgpKQotCi0KLWRlZiBfTmVlZFRvUmV0dXJuUmVmZXJlbmNl
RGlhZ25vc2VyKG1zZyk6Ci0gICIiIkRpYWdub3NlcyB0aGUgTlJSIGRpc2Vhc2UsIGdpdmVuIHRo
ZSBlcnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2NjX3JlZ2V4ID0gKHIn
SW4gbWVtYmVyIGZ1bmN0aW9uIFwndGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbjxSPi4q
XG4nCi0gICAgICAgICAgICAgICArIF9HQ0NfRklMRV9MSU5FX1JFICsgcidpbnN0YW50aWF0ZWQg
ZnJvbSBoZXJlXG4nCi0gICAgICAgICAgICAgICByJy4qZ21vY2stYWN0aW9uc1wuaC4qZXJyb3I6
IGNyZWF0aW5nIGFycmF5IHdpdGggbmVnYXRpdmUgc2l6ZScpCi0gIGNsYW5nX3JlZ2V4ID0gKHIn
ZXJyb3I6LiphcnJheS4qbmVnYXRpdmUuKlxyP1xuJwotICAgICAgICAgICAgICAgICByJyguKlxu
KSo/JyArCi0gICAgICAgICAgICAgICAgIF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsK
LSAgICAgICAgICAgICAgICAgcidub3RlOiBpbiBpbnN0YW50aWF0aW9uIG9mIGZ1bmN0aW9uIHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9uICcKLSAgICAgICAgICAgICAgICAgcidcJ3Rlc3Rpbmc6Omlu
dGVybmFsOjpSZXR1cm5BY3Rpb248KD9QPHR5cGU+LiopPicKLSAgICAgICAgICAgICAgICAgcic6
Om9wZXJhdG9yIEFjdGlvbjwuKj5cJyByZXF1ZXN0ZWQgaGVyZScpCi0gIGNsYW5nMTFfcmUgPSAo
cid1c2VfUmV0dXJuUmVmX2luc3RlYWRfb2ZfUmV0dXJuX3RvX3JldHVybl9hX3JlZmVyZW5jZS4q
JwotICAgICAgICAgICAgICAgIHInKC4qXG4pKj8nICsgX0NMQU5HX05PTl9HTU9DS19GSUxFX0xJ
TkVfUkUpCi0KLSAgZGlhZ25vc2lzID0gIiIiCi1Zb3UgYXJlIHVzaW5nIGEgUmV0dXJuKCkgYWN0
aW9uIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvCi0lKHR5cGUpcy4g
IFBsZWFzZSB1c2UgUmV0dXJuUmVmKCkgaW5zdGVhZC4iIiIKLSAgcmV0dXJuIF9HZW5lcmljRGlh
Z25vc2VyKCdOUlInLCAnTmVlZCB0byBSZXR1cm4gUmVmZXJlbmNlJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsoY2xhbmdfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNsYW5nMTFfcmUsIGRpYWdub3NpcyAlIHsndHlwZSc6ICdhIHR5cGUnfSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjY19yZWdleCwgZGlhZ25vc2lzICUgeyd0
eXBlJzogJ2EgdHlwZSd9KV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0KLQot
ZGVmIF9OZWVkVG9SZXR1cm5Tb21ldGhpbmdEaWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25vc2Vz
IHRoZSBOUlMgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxl
ci4iIiIKLQotICBnY2NfcmVnZXggPSAoX0dDQ19GSUxFX0xJTkVfUkUgKyByJyhpbnN0YW50aWF0
ZWQgZnJvbSBoZXJlXG4uJwotICAgICAgICAgICAgICAgcicqZ21vY2suKmFjdGlvbnNcLmguKmVy
cm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkKScKLSAgICAgICAgICAgICAgIHInfChlcnJvcjog
Y29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiknKQotICBjbGFuZ19yZWdl
eDEgPSAoX0NMQU5HX0ZJTEVfTElORV9SRSArCi0gICAgICAgICAgICAgICAgICByJ2Vycm9yOiBj
YW5ub3QgaW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0ICcKLSAgICAgICAgICAgICAgICAgIHInb2Yg
dHlwZSBcJ1Jlc3VsdFwnIFwoYWthIFwnKD9QPHJldHVybl90eXBlPi4qKVwnXCkgJwotICAgICAg
ICAgICAgICAgICAgcid3aXRoIGFuIHJ2YWx1ZSBvZiB0eXBlIFwndm9pZFwnJykKLSAgY2xhbmdf
cmVnZXgyID0gKF9DTEFOR19GSUxFX0xJTkVfUkUgKwotICAgICAgICAgICAgICAgICAgcidlcnJv
cjogY2Fubm90IGluaXRpYWxpemUgcmV0dXJuIG9iamVjdCAnCi0gICAgICAgICAgICAgICAgICBy
J29mIHR5cGUgXCcoP1A8cmV0dXJuX3R5cGU+LiopXCcgJwotICAgICAgICAgICAgICAgICAgcid3
aXRoIGFuIHJ2YWx1ZSBvZiB0eXBlIFwndm9pZFwnJykKLSAgZGlhZ25vc2lzID0gIiIiCi1Zb3Ug
YXJlIHVzaW5nIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgdm9pZCwgYnV0IGl0IG5lZWRzIHRvIHJl
dHVybgotJShyZXR1cm5fdHlwZSlzLiAgUGxlYXNlIHRlbGwgaXQgKndoYXQqIHRvIHJldHVybi4g
IFBlcmhhcHMgeW91IGNhbiB1c2UKLXRoZSBwYXR0ZXJuIERvQWxsKHNvbWVfYWN0aW9uLCBSZXR1
cm4oc29tZV92YWx1ZSkpPyIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoCi0gICAgICAn
TlJTJywKLSAgICAgICdOZWVkIHRvIFJldHVybiBTb21ldGhpbmcnLAotICAgICAgWyhnY2NfcmVn
ZXgsIGRpYWdub3NpcyAlIHsncmV0dXJuX3R5cGUnOiAnKnNvbWV0aGluZyonfSksCi0gICAgICAg
KGNsYW5nX3JlZ2V4MSwgZGlhZ25vc2lzKSwKLSAgICAgICAoY2xhbmdfcmVnZXgyLCBkaWFnbm9z
aXMpXSwKLSAgICAgIG1zZykKLQotCi1kZWYgX05lZWRUb1JldHVybk5vdGhpbmdEaWFnbm9zZXIo
bXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBOUk4gZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1l
c3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAoX0dDQ19GSUxFX0xJ
TkVfUkUgKyByJ2luc3RhbnRpYXRlZCBmcm9tIGhlcmVcbicKLSAgICAgICAgICAgICAgIHInLipn
bW9jay1hY3Rpb25zXC5oLiplcnJvcjogaW5zdGFudGlhdGlvbiBvZiAnCi0gICAgICAgICAgICAg
ICByJ1wndGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbjxSPjo6SW1wbDxGPjo6dmFsdWVf
XCcgJwotICAgICAgICAgICAgICAgcidhcyB0eXBlIFwndm9pZFwnJykKLSAgY2xhbmdfcmVnZXgx
ID0gKHInZXJyb3I6IGZpZWxkIGhhcyBpbmNvbXBsZXRlIHR5cGUgJwotICAgICAgICAgICAgICAg
ICAgcidcJ1Jlc3VsdFwnIFwoYWthIFwndm9pZFwnXCkoXHIpP1xuJwotICAgICAgICAgICAgICAg
ICAgcicoLipcbikqPycgKwotICAgICAgICAgICAgICAgICAgX0NMQU5HX05PTl9HTU9DS19GSUxF
X0xJTkVfUkUgKyByJ25vdGU6IGluIGluc3RhbnRpYXRpb24gJwotICAgICAgICAgICAgICAgICAg
cidvZiBmdW5jdGlvbiB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiAnCi0gICAgICAgICAgICAgICAg
ICByJ1wndGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbjwoP1A8cmV0dXJuX3R5cGU+Liop
PicKLSAgICAgICAgICAgICAgICAgIHInOjpvcGVyYXRvciBBY3Rpb248dm9pZCBcKC4qXCk+XCcg
cmVxdWVzdGVkIGhlcmUnKQotICBjbGFuZ19yZWdleDIgPSAocidlcnJvcjogZmllbGQgaGFzIGlu
Y29tcGxldGUgdHlwZSAnCi0gICAgICAgICAgICAgICAgICByJ1wnUmVzdWx0XCcgXChha2EgXCd2
b2lkXCdcKShccik/XG4nCi0gICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCi0gICAgICAg
ICAgICAgICAgICBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSArIHInbm90ZTogaW4gaW5z
dGFudGlhdGlvbiAnCi0gICAgICAgICAgICAgICAgICByJ29mIGZ1bmN0aW9uIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9uICcKLSAgICAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6
RG9Cb3RoQWN0aW9uPC4qPicKLSAgICAgICAgICAgICAgICAgIHInOjpvcGVyYXRvciBBY3Rpb248
KD9QPHJldHVybl90eXBlPi4qKSBcKC4qXCk+XCcgJwotICAgICAgICAgICAgICAgICAgcidyZXF1
ZXN0ZWQgaGVyZScpCi0gIGRpYWdub3NpcyA9ICIiIgotWW91IGFyZSB1c2luZyBhbiBhY3Rpb24g
dGhhdCByZXR1cm5zICUocmV0dXJuX3R5cGUpcywgYnV0IGl0IG5lZWRzIHRvIHJldHVybgotdm9p
ZC4gIFBsZWFzZSB1c2UgYSB2b2lkLXJldHVybmluZyBhY3Rpb24gaW5zdGVhZC4KLQotQWxsIGFj
dGlvbnMgYnV0IHRoZSBsYXN0IGluIERvQWxsKC4uLikgbXVzdCByZXR1cm4gdm9pZC4gIFBlcmhh
cHMgeW91IG5lZWQKLXRvIHJlLWFycmFuZ2UgdGhlIG9yZGVyIG9mIGFjdGlvbnMgaW4gYSBEb0Fs
bCgpLCBpZiB5b3UgYXJlIHVzaW5nIG9uZT8iIiIKLSAgcmV0dXJuIF9HZW5lcmljRGlhZ25vc2Vy
KAotICAgICAgJ05STicsCi0gICAgICAnTmVlZCB0byBSZXR1cm4gTm90aGluZycsCi0gICAgICBb
KGdjY19yZWdleCwgZGlhZ25vc2lzICUgeydyZXR1cm5fdHlwZSc6ICcqc29tZXRoaW5nKid9KSwK
LSAgICAgICAoY2xhbmdfcmVnZXgxLCBkaWFnbm9zaXMpLAotICAgICAgIChjbGFuZ19yZWdleDIs
IGRpYWdub3NpcyldLAotICAgICAgbXNnKQotCi0KLWRlZiBfSW5jb21wbGV0ZUJ5UmVmZXJlbmNl
QXJndW1lbnREaWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBJQlJBIGRpc2Vhc2Us
IGdpdmVuIHRoZSBlcnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2NjX3Jl
Z2V4ID0gKF9HQ0NfRklMRV9MSU5FX1JFICsgcidpbnN0YW50aWF0ZWQgZnJvbSBoZXJlXG4nCi0g
ICAgICAgICAgICAgICByJy4qZ3Rlc3QtcHJpbnRlcnNcLmguKmVycm9yOiBpbnZhbGlkIGFwcGxp
Y2F0aW9uIG9mICcKLSAgICAgICAgICAgICAgIHInXCdzaXplb2ZcJyB0byBpbmNvbXBsZXRlIHR5
cGUgXCcoP1A8dHlwZT4uKilcJycpCi0KLSAgY2xhbmdfcmVnZXggPSAocicuKmd0ZXN0LXByaW50
ZXJzXC5oLiplcnJvcjogaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnCi0gICAgICAgICAgICAgICAg
IHInXCdzaXplb2ZcJyB0byBhbiBpbmNvbXBsZXRlIHR5cGUgJwotICAgICAgICAgICAgICAgICBy
J1wnKD9QPHR5cGU+LiopKCBjb25zdCk/XCdccj9cbicKLSAgICAgICAgICAgICAgICAgcicoLipc
bikqPycgKwotICAgICAgICAgICAgICAgICBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSAr
Ci0gICAgICAgICAgICAgICAgIHInbm90ZTogaW4gaW5zdGFudGlhdGlvbiBvZiBtZW1iZXIgZnVu
Y3Rpb24gJwotICAgICAgICAgICAgICAgICByJ1wndGVzdGluZzo6aW50ZXJuYWwyOjpUeXBlV2l0
aG91dEZvcm1hdHRlcjwuKj46OicKLSAgICAgICAgICAgICAgICAgcidQcmludFZhbHVlXCcgcmVx
dWVzdGVkIGhlcmUnKQotICBkaWFnbm9zaXMgPSAiIiIKLUluIG9yZGVyIHRvIG1vY2sgdGhpcyBm
dW5jdGlvbiwgR29vZ2xlIE1vY2sgbmVlZHMgdG8gc2VlIHRoZSBkZWZpbml0aW9uCi1vZiB0eXBl
ICIlKHR5cGUpcyIgLSBkZWNsYXJhdGlvbiBhbG9uZSBpcyBub3QgZW5vdWdoLiAgRWl0aGVyICNp
bmNsdWRlCi10aGUgaGVhZGVyIHRoYXQgZGVmaW5lcyBpdCwgb3IgY2hhbmdlIHRoZSBhcmd1bWVu
dCB0byBiZSBwYXNzZWQKLWJ5IHBvaW50ZXIuIiIiCi0KLSAgcmV0dXJuIF9HZW5lcmljRGlhZ25v
c2VyKCdJQlJBJywgJ0luY29tcGxldGUgQnktUmVmZXJlbmNlIEFyZ3VtZW50IFR5cGUnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMpXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1zZykKLQotCi1kZWYgX092ZXJsb2FkZWRGdW5jdGlvbk1hdGNo
ZXJEaWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBPRk0gZGlzZWFzZSwgZ2l2ZW4g
dGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAo
X0dDQ19GSUxFX0xJTkVfUkUgKyByJ2Vycm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgJwot
ICAgICAgICAgICAgICAgcidjYWxsIHRvIFwnVHJ1bHlcKDx1bnJlc29sdmVkIG92ZXJsb2FkZWQg
ZnVuY3Rpb24gdHlwZT5cKScpCi0gIGNsYW5nX3JlZ2V4ID0gKF9DTEFOR19GSUxFX0xJTkVfUkUg
KyByJ2Vycm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgJwotICAgICAgICAgICAgICAgICBy
J2NhbGwgdG8gXCdUcnVseScpCi0gIGRpYWdub3NpcyA9ICIiIgotVGhlIGFyZ3VtZW50IHlvdSBn
YXZlIHRvIFRydWx5KCkgaXMgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbi4gIFBsZWFzZSB0ZWxsCi15
b3VyIGNvbXBpbGVyIHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiB5b3Ugd2FudCB0byB1c2UuCi0K
LUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIHZlcnNpb24gd2hvc2Ugc2lnbmF0
dXJlIGlzCi0gIGJvb2wgRm9vKGludCBuKTsKLXlvdSBzaG91bGQgd3JpdGUKLSAgVHJ1bHkoc3Rh
dGljX2Nhc3Q8Ym9vbCAoKikoaW50IG4pPihGb28pKSIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFn
bm9zZXIoJ09GTScsICdPdmVybG9hZGVkIEZ1bmN0aW9uIE1hdGNoZXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMpXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1zZykKLQotCi1kZWYgX092ZXJsb2FkZWRGdW5jdGlvbkFjdGlvbkRpYWdub3Nl
cihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIE9GQSBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3Ig
bWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVf
TElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvICcKLSAg
ICAgICAgICAgICAgIHInXCdJbnZva2VcKDx1bnJlc29sdmVkIG92ZXJsb2FkZWQgZnVuY3Rpb24g
dHlwZT4nKQotICBjbGFuZ19yZWdleCA9IChfQ0xBTkdfRklMRV9MSU5FX1JFICsgcidlcnJvcjog
bm8gbWF0Y2hpbmcgJwotICAgICAgICAgICAgICAgICByJ2Z1bmN0aW9uIGZvciBjYWxsIHRvIFwn
SW52b2tlXCdccj9cbicKLSAgICAgICAgICAgICAgICAgcicoLipcbikqPycKLSAgICAgICAgICAg
ICAgICAgcicuKlxiZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnNcLmg6XGQrOlxkKzpccysnCi0gICAg
ICAgICAgICAgICAgIHInbm90ZTogY2FuZGlkYXRlIHRlbXBsYXRlIGlnbm9yZWQ6XHMrJwotICAg
ICAgICAgICAgICAgICByJ2NvdWxkblwndCBpbmZlciB0ZW1wbGF0ZSBhcmd1bWVudCBcJ0Z1bmN0
aW9uSW1wbFwnJykKLSAgZGlhZ25vc2lzID0gIiIiCi1GdW5jdGlvbiB5b3UgYXJlIHBhc3Npbmcg
dG8gSW52b2tlIGlzIG92ZXJsb2FkZWQuICBQbGVhc2UgdGVsbCB5b3VyIGNvbXBpbGVyCi13aGlj
aCBvdmVybG9hZGVkIHZlcnNpb24geW91IHdhbnQgdG8gdXNlLgotCi1Gb3IgZXhhbXBsZSwgaWYg
eW91IHdhbnQgdG8gdXNlIHRoZSB2ZXJzaW9uIHdob3NlIHNpZ25hdHVyZSBpcwotICBib29sIE15
RnVuY3Rpb24oaW50IG4sIGRvdWJsZSB4KTsKLXlvdSBzaG91bGQgd3JpdGUgc29tZXRoaW5nIGxp
a2UKLSAgSW52b2tlKHN0YXRpY19jYXN0PGJvb2wgKCopKGludCBuLCBkb3VibGUgeCk+KE15RnVu
Y3Rpb24pKSIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ09GQScsICdPdmVybG9hZGVk
IEZ1bmN0aW9uIEFjdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBbKGdjY19yZWdl
eCwgZGlhZ25vc2lzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhbmdfcmVnZXgs
IGRpYWdub3NpcyldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKQotCi0KLWRlZiBf
T3ZlcmxvYWRlZE1ldGhvZEFjdGlvbkRpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhl
IE9NQSBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIi
IgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNo
aW5nIGZ1bmN0aW9uIGZvciAnCi0gICAgICAgICAgICAgICByJ2NhbGwgdG8gXCdJbnZva2VcKC4r
LCA8dW5yZXNvbHZlZCBvdmVybG9hZGVkIGZ1bmN0aW9uICcKLSAgICAgICAgICAgICAgIHIndHlw
ZT5cKScpCi0gIGNsYW5nX3JlZ2V4ID0gKF9DTEFOR19GSUxFX0xJTkVfUkUgKyByJ2Vycm9yOiBu
byBtYXRjaGluZyBmdW5jdGlvbiAnCi0gICAgICAgICAgICAgICAgIHInZm9yIGNhbGwgdG8gXCdJ
bnZva2VcJ1xyP1xuJwotICAgICAgICAgICAgICAgICByJyguKlxuKSo/JwotICAgICAgICAgICAg
ICAgICByJy4qXGJnbW9jay1nZW5lcmF0ZWQtYWN0aW9uc1wuaDpcZCs6XGQrOiAnCi0gICAgICAg
ICAgICAgICAgIHInbm90ZTogY2FuZGlkYXRlIGZ1bmN0aW9uIHRlbXBsYXRlIG5vdCB2aWFibGU6
ICcKLSAgICAgICAgICAgICAgICAgcidyZXF1aXJlcyAuKiwgYnV0IDIgKGFyZ3VtZW50cyApP3dl
cmUgcHJvdmlkZWQnKQotICBkaWFnbm9zaXMgPSAiIiIKLVRoZSBzZWNvbmQgYXJndW1lbnQgeW91
IGdhdmUgdG8gSW52b2tlKCkgaXMgYW4gb3ZlcmxvYWRlZCBtZXRob2QuICBQbGVhc2UKLXRlbGwg
eW91ciBjb21waWxlciB3aGljaCBvdmVybG9hZGVkIHZlcnNpb24geW91IHdhbnQgdG8gdXNlLgot
Ci1Gb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSB2ZXJzaW9uIHdob3NlIHNpZ25h
dHVyZSBpcwotICBjbGFzcyBGb28gewotICAgIC4uLgotICAgIGJvb2wgQmFyKGludCBuLCBkb3Vi
bGUgeCk7Ci0gIH07Ci15b3Ugc2hvdWxkIHdyaXRlIHNvbWV0aGluZyBsaWtlCi0gIEludm9rZShm
b28sIHN0YXRpY19jYXN0PGJvb2wgKEZvbzo6KikoaW50IG4sIGRvdWJsZSB4KT4oJkZvbzo6QmFy
KSkiIiIKLSAgcmV0dXJuIF9HZW5lcmljRGlhZ25vc2VyKCdPTUEnLCAnT3ZlcmxvYWRlZCBNZXRo
b2QgQWN0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFn
bm9zaXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25v
c2lzKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0KLQotZGVmIF9Nb2NrT2Jq
ZWN0UG9pbnRlckRpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIE1PUCBkaXNlYXNl
LCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19y
ZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IHJlcXVlc3QgZm9yIG1lbWJlciAn
Ci0gICAgICAgICAgICAgICByJ1wnZ21vY2tfKD9QPG1ldGhvZD4uKylcJyBpbiBcJyg/UDxtb2Nr
X29iamVjdD4uKylcJywgJwotICAgICAgICAgICAgICAgcid3aGljaCBpcyBvZiBub24tY2xhc3Mg
dHlwZSBcJyguKjo6KSooP1A8Y2xhc3NfbmFtZT4uKylcKlwnJykKLSAgY2xhbmdfcmVnZXggPSAo
X0NMQU5HX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IG1lbWJlciByZWZlcmVuY2UgdHlwZSAnCi0g
ICAgICAgICAgICAgICAgIHInXCcoP1A8Y2xhc3NfbmFtZT4uKj8pICpcJyBpcyBhIHBvaW50ZXI7
ICcKLSAgICAgICAgICAgICAgICAgcicoZGlkIHlvdSBtZWFufG1heWJlIHlvdSBtZWFudCkgdG8g
dXNlIFwnLT5cJ1w/JykKLSAgZGlhZ25vc2lzID0gIiIiCi1UaGUgZmlyc3QgYXJndW1lbnQgdG8g
T05fQ0FMTCgpIGFuZCBFWFBFQ1RfQ0FMTCgpIG11c3QgYmUgYSBtb2NrICpvYmplY3QqLAotbm90
IGEgKnBvaW50ZXIqIHRvIGl0LiAgUGxlYXNlIHdyaXRlICcqKCUobW9ja19vYmplY3QpcyknIGlu
c3RlYWQgb2YKLSclKG1vY2tfb2JqZWN0KXMnIGFzIHlvdXIgZmlyc3QgYXJndW1lbnQuCi0KLUZv
ciBleGFtcGxlLCBnaXZlbiB0aGUgbW9jayBjbGFzczoKLQotICBjbGFzcyAlKGNsYXNzX25hbWUp
cyA6IHB1YmxpYyAuLi4gewotICAgIC4uLgotICAgIE1PQ0tfTUVUSE9EMCglKG1ldGhvZClzLCAu
Li4pOwotICB9OwotCi1hbmQgdGhlIGZvbGxvd2luZyBtb2NrIGluc3RhbmNlOgotCi0gICUoY2xh
c3NfbmFtZSlzKiBtb2NrX3B0ciA9IC4uLgotCi15b3Ugc2hvdWxkIHVzZSB0aGUgRVhQRUNUX0NB
TEwgbGlrZSB0aGlzOgotCi0gIEVYUEVDVF9DQUxMKCptb2NrX3B0ciwgJShtZXRob2QpcyguLi4p
KTsiIiIKLQotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoCi0gICAgICAnTU9QJywKLSAgICAg
ICdNb2NrIE9iamVjdCBQb2ludGVyJywKLSAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMpLAot
ICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25vc2lzICUgeydtb2NrX29iamVjdCc6ICdtb2NrX29i
amVjdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZCc6ICdtZXRo
b2QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzc19uYW1lJzogJyUo
Y2xhc3NfbmFtZSlzJ30pXSwKLSAgICAgICBtc2cpCi0KLQotZGVmIF9OZWVkVG9Vc2VTeW1ib2xE
aWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBOVVMgZGlzZWFzZSwgZ2l2ZW4gdGhl
IGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAoX0dD
Q19GSUxFX0xJTkVfUkUgKyByJ2Vycm9yOiBcJyg/UDxzeW1ib2w+LispXCcgJwotICAgICAgICAg
ICAgICAgcicod2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlfGhhcyBub3QgYmVlbiBkZWNs
YXJlZCknKQotICBjbGFuZ19yZWdleCA9IChfQ0xBTkdfRklMRV9MSU5FX1JFICsKLSAgICAgICAg
ICAgICAgICAgcidlcnJvcjogKHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXJ8dW5rbm93biB0
eXBlIG5hbWV8JwotICAgICAgICAgICAgICAgICByJ25vIHRlbXBsYXRlIG5hbWVkKSBcJyg/UDxz
eW1ib2w+W15cJ10rKVwnJykKLSAgZGlhZ25vc2lzID0gIiIiCi0nJShzeW1ib2wpcycgaXMgZGVm
aW5lZCBieSBHb29nbGUgTW9jayBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2UuCi1EaWQgeW91IGZv
cmdldCB0byB3cml0ZQotICB1c2luZyB0ZXN0aW5nOjolKHN5bWJvbClzOwotPyIiIgotICBmb3Ig
bSBpbiAobGlzdChfRmluZEFsbE1hdGNoZXMoZ2NjX3JlZ2V4LCBtc2cpKSArCi0gICAgICAgICAg
ICBsaXN0KF9GaW5kQWxsTWF0Y2hlcyhjbGFuZ19yZWdleCwgbXNnKSkpOgotICAgIHN5bWJvbCA9
IG0uZ3JvdXBkaWN0KClbJ3N5bWJvbCddCi0gICAgaWYgc3ltYm9sIGluIF9DT01NT05fR01PQ0tf
U1lNQk9MUzoKLSAgICAgIHlpZWxkICgnTlVTJywgJ05lZWQgdG8gVXNlIFN5bWJvbCcsIGRpYWdu
b3NpcyAlIG0uZ3JvdXBkaWN0KCkpCi0KLQotZGVmIF9OZWVkVG9Vc2VSZXR1cm5OdWxsRGlhZ25v
c2VyKG1zZyk6Ci0gICIiIkRpYWdub3NlcyB0aGUgTlJOVUxMIGRpc2Vhc2UsIGdpdmVuIHRoZSBl
cnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2NjX3JlZ2V4ID0gKCdpbnN0
YW50aWF0ZWQgZnJvbSBcJ3Rlc3Rpbmc6OmludGVybmFsOjpSZXR1cm5BY3Rpb248Uj4nCi0gICAg
ICAgICAgICAgICAnOjpvcGVyYXRvciB0ZXN0aW5nOjpBY3Rpb248RnVuYz5cKFwpIGNvbnN0Lipc
bicgKwotICAgICAgICAgICAgICAgX0dDQ19GSUxFX0xJTkVfUkUgKyByJ2luc3RhbnRpYXRlZCBm
cm9tIGhlcmVcbicKLSAgICAgICAgICAgICAgIHInLiplcnJvcjogbm8gbWF0Y2hpbmcgZnVuY3Rp
b24gZm9yIGNhbGwgdG8gXCdJbXBsaWNpdENhc3RfXCgnCi0gICAgICAgICAgICAgICByJyg6P2xv
bmcgKT9pbnQmXCknKQotICBjbGFuZ19yZWdleCA9IChyJ1xiZ21vY2stYWN0aW9ucy5oOi4qIGVy
cm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgJwotICAgICAgICAgICAgICAgICByJ2NhbGwg
dG8gXCdJbXBsaWNpdENhc3RfXCdccj9cbicKLSAgICAgICAgICAgICAgICAgcicoLipcbikqPycg
KwotICAgICAgICAgICAgICAgICBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSArIHInbm90
ZTogaW4gaW5zdGFudGlhdGlvbiAnCi0gICAgICAgICAgICAgICAgIHInb2YgZnVuY3Rpb24gdGVt
cGxhdGUgc3BlY2lhbGl6YXRpb24gJwotICAgICAgICAgICAgICAgICByJ1wndGVzdGluZzo6aW50
ZXJuYWw6OlJldHVybkFjdGlvbjwoaW50fGxvbmcpPjo6b3BlcmF0b3IgJwotICAgICAgICAgICAg
ICAgICByJ0FjdGlvbjwoP1A8dHlwZT4uKilcKFwpPlwnIHJlcXVlc3RlZCBoZXJlJykKLSAgZGlh
Z25vc2lzID0gIiIiCi1Zb3UgYXJlIHByb2JhYmx5IGNhbGxpbmcgUmV0dXJuKE5VTEwpIGFuZCB0
aGUgY29tcGlsZXIgaXNuJ3Qgc3VyZSBob3cgdG8gdHVybgotTlVMTCBpbnRvICUodHlwZSlzLiBV
c2UgUmV0dXJuTnVsbCgpIGluc3RlYWQuCi1Ob3RlOiB0aGUgbGluZSBudW1iZXIgbWF5IGJlIG9m
ZjsgcGxlYXNlIGZpeCBhbGwgaW5zdGFuY2VzIG9mIFJldHVybihOVUxMKS4iIiIKLSAgcmV0dXJu
IF9HZW5lcmljRGlhZ25vc2VyKAotICAgICAgJ05STlVMTCcsICdOZWVkIHRvIHVzZSBSZXR1cm5O
dWxsJywKLSAgICAgIFsoY2xhbmdfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAgKGdjY19yZWdl
eCwgZGlhZ25vc2lzICUgeyd0eXBlJzogJ3RoZSByaWdodCB0eXBlJ30pXSwKLSAgICAgIG1zZykK
LQotCi1kZWYgX1R5cGVJblRlbXBsYXRlZEJhc2VEaWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25v
c2VzIHRoZSBUVEIgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21w
aWxlci4iIiIKLQotICAjIFRoaXMgdmVyc2lvbiB3b3JrcyB3aGVuIHRoZSB0eXBlIGlzIHVzZWQg
YXMgdGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4KLSAgIyB0eXBlLgotICBnY2NfNF8zXzFfcmVn
ZXhfdHlwZV9pbl9yZXR2YWwgPSAoCi0gICAgICByJ0luIG1lbWJlciBmdW5jdGlvbiBcJ2ludCAu
KlxuJyArIF9HQ0NfRklMRV9MSU5FX1JFICsKLSAgICAgIHInZXJyb3I6IGEgZnVuY3Rpb24gY2Fs
bCBjYW5ub3QgYXBwZWFyIGluIGEgY29uc3RhbnQtZXhwcmVzc2lvbicpCi0gIGdjY180XzRfMF9y
ZWdleF90eXBlX2luX3JldHZhbCA9ICgKLSAgICAgIHInZXJyb3I6IGEgZnVuY3Rpb24gY2FsbCBj
YW5ub3QgYXBwZWFyIGluIGEgY29uc3RhbnQtZXhwcmVzc2lvbicKLSAgICAgICsgX0dDQ19GSUxF
X0xJTkVfUkUgKyByJ2Vycm9yOiB0ZW1wbGF0ZSBhcmd1bWVudCAxIGlzIGludmFsaWRcbicpCi0g
ICMgVGhpcyB2ZXJzaW9uIHdvcmtzIHdoZW4gdGhlIHR5cGUgaXMgdXNlZCBhcyB0aGUgbW9jayBm
dW5jdGlvbidzIHNvbGUKLSAgIyBwYXJhbWV0ZXIgdHlwZS4KLSAgZ2NjX3JlZ2V4X3R5cGVfb2Zf
c29sZV9wYXJhbSA9ICgKLSAgICAgIF9HQ0NfRklMRV9MSU5FX1JFICsKLSAgICAgIHInZXJyb3I6
IFwnKD9QPHR5cGU+LispXCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlXG4nCi0gICAg
ICByJy4qZXJyb3I6IHRlbXBsYXRlIGFyZ3VtZW50IDEgaXMgaW52YWxpZFxuJykKLSAgIyBUaGlz
IHZlcnNpb24gd29ya3Mgd2hlbiB0aGUgdHlwZSBpcyB1c2VkIGFzIGEgcGFyYW1ldGVyIG9mIGEg
bW9jawotICAjIGZ1bmN0aW9uIHRoYXQgaGFzIG11bHRpcGxlIHBhcmFtZXRlcnMuCi0gIGdjY19y
ZWdleF90eXBlX29mX2FfcGFyYW0gPSAoCi0gICAgICByJ2Vycm9yOiBleHBlY3RlZCBgO1wnIGJl
Zm9yZSBcJzo6XCcgdG9rZW5cbicKLSAgICAgICsgX0dDQ19GSUxFX0xJTkVfUkUgKwotICAgICAg
cidlcnJvcjogXCcoP1A8dHlwZT4uKylcJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGVc
bicKLSAgICAgIHInLiplcnJvcjogdGVtcGxhdGUgYXJndW1lbnQgMSBpcyBpbnZhbGlkXG4nCi0g
ICAgICByJy4qZXJyb3I6IFwnLitcJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUnKQot
ICBjbGFuZ19yZWdleF90eXBlX29mX3JldHZhbF9vcl9zb2xlX3BhcmFtID0gKAotICAgICAgX0NM
QU5HX0ZJTEVfTElORV9SRSArCi0gICAgICByJ2Vycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVu
dGlmaWVyIFwnKD9QPHR5cGU+LiopXCdcbicKLSAgICAgIHInKC4qXG4pKj8nCi0gICAgICByJyg/
UD1maWxlKTooP1A9bGluZSk6XGQrOiBlcnJvcjogJwotICAgICAgcidub24tZnJpZW5kIGNsYXNz
IG1lbWJlciBcJ1Jlc3VsdFwnIGNhbm5vdCBoYXZlIGEgcXVhbGlmaWVkIG5hbWUnCi0gICAgICAp
Ci0gIGNsYW5nX3JlZ2V4X3R5cGVfb2ZfYV9wYXJhbSA9ICgKLSAgICAgIF9DTEFOR19GSUxFX0xJ
TkVfUkUgKwotICAgICAgcidlcnJvcjogQ1wrXCsgcmVxdWlyZXMgYSB0eXBlIHNwZWNpZmllciBm
b3IgYWxsIGRlY2xhcmF0aW9uc1xuJwotICAgICAgcicoLipcbikqPycKLSAgICAgIHInKD9QPWZp
bGUpOig/UD1saW5lKTooP1A9Y29sdW1uKTogZXJyb3I6ICcKLSAgICAgIHInQ1wrXCsgcmVxdWly
ZXMgYSB0eXBlIHNwZWNpZmllciBmb3IgYWxsIGRlY2xhcmF0aW9ucycKLSAgICAgICkKLSAgY2xh
bmdfcmVnZXhfdW5rbm93bl90eXBlID0gKAotICAgICAgX0NMQU5HX0ZJTEVfTElORV9SRSArCi0g
ICAgICByJ2Vycm9yOiB1bmtub3duIHR5cGUgbmFtZSBcJyg/UDx0eXBlPlteXCddKylcJycKLSAg
ICAgICkKLQotICBkaWFnbm9zaXMgPSAiIiIKLUluIGEgbW9jayBjbGFzcyB0ZW1wbGF0ZSwgdHlw
ZXMgb3IgdHlwZWRlZnMgZGVmaW5lZCBpbiB0aGUgYmFzZSBjbGFzcwotdGVtcGxhdGUgYXJlICpu
b3QqIGF1dG9tYXRpY2FsbHkgdmlzaWJsZS4gIFRoaXMgaXMgaG93IEMrKyB3b3Jrcy4gIEJlZm9y
ZQoteW91IGNhbiB1c2UgYSB0eXBlIG9yIHR5cGVkZWYgbmFtZWQgJSh0eXBlKXMgZGVmaW5lZCBp
biBiYXNlIGNsYXNzIEJhc2U8VD4sIHlvdQotbmVlZCB0byBtYWtlIGl0IHZpc2libGUuICBPbmUg
d2F5IHRvIGRvIGl0IGlzOgotCi0gIHR5cGVkZWYgdHlwZW5hbWUgQmFzZTxUPjo6JSh0eXBlKXMg
JSh0eXBlKXM7IiIiCi0KLSAgZm9yIGRpYWcgaW4gX0dlbmVyaWNEaWFnbm9zZXIoCi0gICAgICAn
VFRCJywgJ1R5cGUgaW4gVGVtcGxhdGUgQmFzZScsCi0gICAgICBbKGdjY180XzNfMV9yZWdleF90
eXBlX2luX3JldHZhbCwgZGlhZ25vc2lzICUgeyd0eXBlJzogJ0Zvbyd9KSwKLSAgICAgICAoZ2Nj
XzRfNF8wX3JlZ2V4X3R5cGVfaW5fcmV0dmFsLCBkaWFnbm9zaXMgJSB7J3R5cGUnOiAnRm9vJ30p
LAotICAgICAgIChnY2NfcmVnZXhfdHlwZV9vZl9zb2xlX3BhcmFtLCBkaWFnbm9zaXMpLAotICAg
ICAgIChnY2NfcmVnZXhfdHlwZV9vZl9hX3BhcmFtLCBkaWFnbm9zaXMpLAotICAgICAgIChjbGFu
Z19yZWdleF90eXBlX29mX3JldHZhbF9vcl9zb2xlX3BhcmFtLCBkaWFnbm9zaXMpLAotICAgICAg
IChjbGFuZ19yZWdleF90eXBlX29mX2FfcGFyYW0sIGRpYWdub3NpcyAlIHsndHlwZSc6ICdGb28n
fSldLAotICAgICAgbXNnKToKLSAgICB5aWVsZCBkaWFnCi0gICMgQXZvaWQgb3ZlcmxhcCB3aXRo
IHRoZSBOVVMgcGF0dGVybi4KLSAgZm9yIG0gaW4gX0ZpbmRBbGxNYXRjaGVzKGNsYW5nX3JlZ2V4
X3Vua25vd25fdHlwZSwgbXNnKToKLSAgICB0eXBlXyA9IG0uZ3JvdXBkaWN0KClbJ3R5cGUnXQot
ICAgIGlmIHR5cGVfIG5vdCBpbiBfQ09NTU9OX0dNT0NLX1NZTUJPTFM6Ci0gICAgICB5aWVsZCAo
J1RUQicsICdUeXBlIGluIFRlbXBsYXRlIEJhc2UnLCBkaWFnbm9zaXMgJSBtLmdyb3VwZGljdCgp
KQotCi0KLWRlZiBfV3JvbmdNb2NrTWV0aG9kTWFjcm9EaWFnbm9zZXIobXNnKToKLSAgIiIiRGlh
Z25vc2VzIHRoZSBXTU0gZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBj
b21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAoX0dDQ19GSUxFX0xJTkVfUkUgKwotICAgICAg
ICAgICAgICAgcicuKnRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfKD9QPHdyb25nX2FyZ3M+XGQr
KV9hcmd1bWVudC4qXG4nCi0gICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICBy
Jy4qY2FuZGlkYXRlcyBhcmUuKkZ1bmN0aW9uTW9ja2VyPFtePl0rQSg/UDxhcmdzPlxkKylcKT4n
KQotICBjbGFuZ19yZWdleCA9IChfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSArCi0gICAg
ICAgICAgICAgICAgIHInZXJyb3I6LiphcnJheS4qbmVnYXRpdmUuKnI/XG4nCi0gICAgICAgICAg
ICAgICAgIHInKC4qXG4pKj8nCi0gICAgICAgICAgICAgICAgIHInKD9QPWZpbGUpOig/UD1saW5l
KTooP1A9Y29sdW1uKTogZXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzICcKLSAgICAgICAgICAgICAg
ICAgcid0byBmdW5jdGlvbiBjYWxsLCBleHBlY3RlZCAoP1A8YXJncz5cZCspLCAnCi0gICAgICAg
ICAgICAgICAgIHInaGF2ZSAoP1A8d3JvbmdfYXJncz5cZCspJykKLSAgY2xhbmcxMV9yZSA9IChf
Q0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSArCi0gICAgICAgICAgICAgICAgcicuKnRoaXNf
bWV0aG9kX2RvZXNfbm90X3Rha2VfJwotICAgICAgICAgICAgICAgIHInKD9QPHdyb25nX2FyZ3M+
XGQrKV9hcmd1bWVudC4qJykKLSAgZGlhZ25vc2lzID0gIiIiCi1Zb3UgYXJlIHVzaW5nIE1PQ0tf
TUVUSE9EJSh3cm9uZ19hcmdzKXMgdG8gZGVmaW5lIGEgbW9jayBtZXRob2QgdGhhdCBoYXMKLSUo
YXJncylzIGFyZ3VtZW50cy4gVXNlIE1PQ0tfTUVUSE9EJShhcmdzKXMgKG9yIE1PQ0tfQ09OU1Rf
TUVUSE9EJShhcmdzKXMsCi1NT0NLX01FVEhPRCUoYXJncylzX1QsIE1PQ0tfQ09OU1RfTUVUSE9E
JShhcmdzKXNfVCBhcyBhcHByb3ByaWF0ZSkgaW5zdGVhZC4iIiIKLSAgcmV0dXJuIF9HZW5lcmlj
RGlhZ25vc2VyKCdXTU0nLCAnV3JvbmcgTU9DS19NRVRIT0RuIE1hY3JvJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjbGFuZzExX3JlLCBkaWFnbm9zaXMgJSB7J3dyb25nX2FyZ3MnOiAnbScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXJncyc6ICduJ30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwg
ZGlhZ25vc2lzKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0KLQotZGVmIF9X
cm9uZ1BhcmVuUG9zaXRpb25EaWFnbm9zZXIobXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBXUFAg
ZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQot
ICBnY2NfcmVnZXggPSAoX0dDQ19GSUxFX0xJTkVfUkUgKwotICAgICAgICAgICAgICAgcidlcnJv
cjouKnRlc3Rpbmc6OmludGVybmFsOjpNb2NrU3BlYzwuKiBoYXMgbm8gbWVtYmVyIG5hbWVkIFwn
JwotICAgICAgICAgICAgICAgcicoP1A8bWV0aG9kPlx3KylcJycpCi0gIGNsYW5nX3JlZ2V4ID0g
KF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsKLSAgICAgICAgICAgICAgICAgcidlcnJv
cjogbm8gbWVtYmVyIG5hbWVkIFwnKD9QPG1ldGhvZD5cdyspXCcgaW4gJwotICAgICAgICAgICAg
ICAgICByJ1wndGVzdGluZzo6aW50ZXJuYWw6Ok1vY2tTcGVjPC4qPlwnJykKLSAgZGlhZ25vc2lz
ID0gIiIiCi1UaGUgY2xvc2luZyBwYXJlbnRoZXNpcyBvZiBPTl9DQUxMIG9yIEVYUEVDVF9DQUxM
IHNob3VsZCBiZSAqYmVmb3JlKgotIi4lKG1ldGhvZClzIi4gIEZvciBleGFtcGxlLCB5b3Ugc2hv
dWxkIHdyaXRlOgotICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBGb28oXykpLiUobWV0aG9kKXMoLi4u
KTsKLWluc3RlYWQgb2Y6Ci0gIEVYUEVDVF9DQUxMKG15X21vY2ssIEZvbyhfKS4lKG1ldGhvZClz
KC4uLikpOyIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ1dQUCcsICdXcm9uZyBQYXJl
bnRoZXNpcyBQb3NpdGlvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBbKGdjY19yZWdl
eCwgZGlhZ25vc2lzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhbmdfcmVnZXgs
IGRpYWdub3NpcyldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnKQotCi0KLV9ESUFH
Tk9TRVJTID0gWwotICAgIF9JbmNvbXBsZXRlQnlSZWZlcmVuY2VBcmd1bWVudERpYWdub3NlciwK
LSAgICBfTW9ja09iamVjdFBvaW50ZXJEaWFnbm9zZXIsCi0gICAgX05lZWRUb1JldHVybk5vdGhp
bmdEaWFnbm9zZXIsCi0gICAgX05lZWRUb1JldHVyblJlZmVyZW5jZURpYWdub3NlciwKLSAgICBf
TmVlZFRvUmV0dXJuU29tZXRoaW5nRGlhZ25vc2VyLAotICAgIF9OZWVkVG9Vc2VSZXR1cm5OdWxs
RGlhZ25vc2VyLAotICAgIF9OZWVkVG9Vc2VTeW1ib2xEaWFnbm9zZXIsCi0gICAgX092ZXJsb2Fk
ZWRGdW5jdGlvbkFjdGlvbkRpYWdub3NlciwKLSAgICBfT3ZlcmxvYWRlZEZ1bmN0aW9uTWF0Y2hl
ckRpYWdub3NlciwKLSAgICBfT3ZlcmxvYWRlZE1ldGhvZEFjdGlvbkRpYWdub3NlciwKLSAgICBf
VHlwZUluVGVtcGxhdGVkQmFzZURpYWdub3NlciwKLSAgICBfV3JvbmdNb2NrTWV0aG9kTWFjcm9E
aWFnbm9zZXIsCi0gICAgX1dyb25nUGFyZW5Qb3NpdGlvbkRpYWdub3NlciwKLSAgICBdCi0KLQot
ZGVmIERpYWdub3NlKG1zZyk6Ci0gICIiIkdlbmVyYXRlcyBhbGwgcG9zc2libGUgZGlhZ25vc2Vz
IGdpdmVuIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlLiIiIgotCi0gIG1zZyA9IHJlLnN1Yihy
J1x4MWJcW1tebV0qbScsICcnLCBtc2cpICAjIFN0cmlwcyBhbGwgY29sb3IgZm9ybWF0dGluZy4K
LSAgIyBBc3N1bWluZyB0aGUgc3RyaW5nIGlzIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZywgcmVw
bGFjZXMgdGhlIGxlZnQgYW5kCi0gICMgdGhlIHJpZ2h0IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJz
IHdpdGggYXBvc3Ryb3BoZXMuCi0gIG1zZyA9IHJlLnN1YihyJyhceGUyXHg4MFx4OTh8XHhlMlx4
ODBceDk5KScsICInIiwgbXNnKQotCi0gIGRpYWdub3NlcyA9IFtdCi0gIGZvciBkaWFnbm9zZXIg
aW4gX0RJQUdOT1NFUlM6Ci0gICAgZm9yIGRpYWcgaW4gZGlhZ25vc2VyKG1zZyk6Ci0gICAgICBk
aWFnbm9zaXMgPSAnWyVzIC0gJXNdXG4lcycgJSBkaWFnCi0gICAgICBpZiBub3QgZGlhZ25vc2lz
IGluIGRpYWdub3NlczoKLSAgICAgICAgZGlhZ25vc2VzLmFwcGVuZChkaWFnbm9zaXMpCi0gIHJl
dHVybiBkaWFnbm9zZXMKLQotCi1kZWYgbWFpbigpOgotICBwcmludCAoJ0dvb2dsZSBNb2NrIERv
Y3RvciB2JXMgLSAnCi0gICAgICAgICAnZGlhZ25vc2VzIHByb2JsZW1zIGluIGNvZGUgdXNpbmcg
R29vZ2xlIE1vY2suJyAlIF9WRVJTSU9OKQotCi0gIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKLSAg
ICBwcmludCAoJ1BsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGUgY29tcGlsZXIgZXJyb3JzIGhlcmUu
ICBQcmVzcyBjLUQgd2hlbiAnCi0gICAgICAgICAgICd5b3UgYXJlIGRvbmU6JykKLSAgZWxzZToK
LSAgICBwcmludCAoJ1dhaXRpbmcgZm9yIGNvbXBpbGVyIGVycm9ycyBvbiBzdGRpbiAuIC4gLicp
Ci0KLSAgbXNnID0gc3lzLnN0ZGluLnJlYWQoKS5zdHJpcCgpCi0gIGRpYWdub3NlcyA9IERpYWdu
b3NlKG1zZykKLSAgY291bnQgPSBsZW4oZGlhZ25vc2VzKQotICBpZiBub3QgY291bnQ6Ci0gICAg
cHJpbnQgKCIiIgotWW91ciBjb21waWxlciBjb21wbGFpbmVkOgotODwtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSVzCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OAot
Ci1VaC1vaCwgSSdtIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCB3aGF0IHRoZSBwcm9i
bGVtIGlzLiA6LSgKLUhvd2V2ZXIuLi4KLUlmIHlvdSBzZW5kIHlvdXIgc291cmNlIGNvZGUgYW5k
IHRoZSBjb21waWxlcidzIGVycm9yIG1lc3NhZ2VzIHRvCi0lcywgeW91IGNhbiBiZSBoZWxwZWQg
YW5kIEkgY2FuIGdldCBzbWFydGVyIC0tCi13aW4td2luIGZvciB1cyEiIiIgJSAobXNnLCBfRU1B
SUwpKQotICBlbHNlOgotICAgIHByaW50ICgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKLSAgICBwcmludCAoJ1lvdXIgY29kZSBh
cHBlYXJzIHRvIGhhdmUgdGhlIGZvbGxvd2luZycsKQotICAgIGlmIGNvdW50ID4gMToKLSAgICAg
IHByaW50ICgnJXMgZGlzZWFzZXM6JyAlIChjb3VudCwpKQotICAgIGVsc2U6Ci0gICAgICBwcmlu
dCAoJ2Rpc2Vhc2U6JykKLSAgICBpID0gMAotICAgIGZvciBkIGluIGRpYWdub3NlczoKLSAgICAg
IGkgKz0gMQotICAgICAgaWYgY291bnQgPiAxOgotICAgICAgICBwcmludCAoJ1xuIyVzOicgJSAo
aSwpKQotICAgICAgcHJpbnQgKGQpCi0gICAgcHJpbnQgKCIiIgotSG93IGRpZCBJIGRvPyAgSWYg
eW91IHRoaW5rIEknbSB3cm9uZyBvciB1bmhlbHBmdWwsIHBsZWFzZSBzZW5kIHlvdXIKLXNvdXJj
ZSBjb2RlIGFuZCB0aGUgY29tcGlsZXIncyBlcnJvciBtZXNzYWdlcyB0byAlcy4KLVRoZW4geW91
IGNhbiBiZSBoZWxwZWQgYW5kIEkgY2FuIGdldCBzbWFydGVyIC0tIEkgcHJvbWlzZSBJIHdvbid0
IGJlIHVwc2V0ISIiIiAlCi0gICAgICAgICAgIF9FTUFJTCkKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvdXBs
b2FkLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWQucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZlMmQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
c2NyaXB0cy91cGxvYWQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzg3ICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgotIwotIyBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKLSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKLSMKLSMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAot
IwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCi0jIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0iIiJUb29sIGZvciB1cGxv
YWRpbmcgZGlmZnMgZnJvbSBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gdG8gdGhlIGNvZGVyZXZp
ZXcgYXBwLgotCi1Vc2FnZSBzdW1tYXJ5OiB1cGxvYWQucHkgW29wdGlvbnNdIFstLSBkaWZmX29w
dGlvbnNdCi0KLURpZmYgb3B0aW9ucyBhcmUgcGFzc2VkIHRvIHRoZSBkaWZmIGNvbW1hbmQgb2Yg
dGhlIHVuZGVybHlpbmcgc3lzdGVtLgotCi1TdXBwb3J0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3Rl
bXM6Ci0gIEdpdAotICBNZXJjdXJpYWwKLSAgU3VidmVyc2lvbgotCi1JdCBpcyBpbXBvcnRhbnQg
Zm9yIEdpdC9NZXJjdXJpYWwgdXNlcnMgdG8gc3BlY2lmeSBhIHRyZWUvbm9kZS9icmFuY2ggdG8g
ZGlmZgotYWdhaW5zdCBieSB1c2luZyB0aGUgJy0tcmV2JyBvcHRpb24uCi0iIiIKLSMgVGhpcyBj
b2RlIGlzIGRlcml2ZWQgZnJvbSBhcHBjZmcucHkgaW4gdGhlIEFwcCBFbmdpbmUgU0RLIChvcGVu
IHNvdXJjZSksCi0jIGFuZCBmcm9tIEFTUE4gcmVjaXBlICMxNDYzMDYuCi0KLWltcG9ydCBjb29r
aWVsaWIKLWltcG9ydCBnZXRwYXNzCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG1kNQotaW1wb3J0
IG1pbWV0eXBlcwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0
IHNvY2tldAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIKLWlt
cG9ydCB1cmxsaWIyCi1pbXBvcnQgdXJscGFyc2UKLQotdHJ5OgotICBpbXBvcnQgcmVhZGxpbmUK
LWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgcGFzcwotCi0jIFRoZSBsb2dnaW5nIHZlcmJvc2l0eToK
LSMgIDA6IEVycm9ycyBvbmx5LgotIyAgMTogU3RhdHVzIG1lc3NhZ2VzLgotIyAgMjogSW5mbyBs
b2dzLgotIyAgMzogRGVidWcgbG9ncy4KLXZlcmJvc2l0eSA9IDEKLQotIyBNYXggc2l6ZSBvZiBw
YXRjaCBvciBiYXNlIGZpbGUuCi1NQVhfVVBMT0FEX1NJWkUgPSA5MDAgKiAxMDI0Ci0KLQotZGVm
IEdldEVtYWlsKHByb21wdCk6Ci0gICIiIlByb21wdHMgdGhlIHVzZXIgZm9yIHRoZWlyIGVtYWls
IGFkZHJlc3MgYW5kIHJldHVybnMgaXQuCi0KLSAgVGhlIGxhc3QgdXNlZCBlbWFpbCBhZGRyZXNz
IGlzIHNhdmVkIHRvIGEgZmlsZSBhbmQgb2ZmZXJlZCB1cCBhcyBhIHN1Z2dlc3Rpb24KLSAgdG8g
dGhlIHVzZXIuIElmIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIgd2l0aG91dCB0eXBpbmcgaW4gYW55
dGhpbmcgdGhlIGxhc3QKLSAgdXNlZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQuIElmIHRoZSB1c2Vy
IGVudGVycyBhIG5ldyBhZGRyZXNzLCBpdCBpcyBzYXZlZAotICBmb3IgbmV4dCB0aW1lIHdlIHBy
b21wdC4KLQotICAiIiIKLSAgbGFzdF9lbWFpbF9maWxlX25hbWUgPSBvcy5wYXRoLmV4cGFuZHVz
ZXIoIn4vLmxhc3RfY29kZXJldmlld19lbWFpbF9hZGRyZXNzIikKLSAgbGFzdF9lbWFpbCA9ICIi
Ci0gIGlmIG9zLnBhdGguZXhpc3RzKGxhc3RfZW1haWxfZmlsZV9uYW1lKToKLSAgICB0cnk6Ci0g
ICAgICBsYXN0X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAiciIpCi0g
ICAgICBsYXN0X2VtYWlsID0gbGFzdF9lbWFpbF9maWxlLnJlYWRsaW5lKCkuc3RyaXAoIlxuIikK
LSAgICAgIGxhc3RfZW1haWxfZmlsZS5jbG9zZSgpCi0gICAgICBwcm9tcHQgKz0gIiBbJXNdIiAl
IGxhc3RfZW1haWwKLSAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgIHBhc3MKLSAgZW1haWwg
PSByYXdfaW5wdXQocHJvbXB0ICsgIjogIikuc3RyaXAoKQotICBpZiBlbWFpbDoKLSAgICB0cnk6
Ci0gICAgICBsYXN0X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAidyIp
Ci0gICAgICBsYXN0X2VtYWlsX2ZpbGUud3JpdGUoZW1haWwpCi0gICAgICBsYXN0X2VtYWlsX2Zp
bGUuY2xvc2UoKQotICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgcGFzcwotICBlbHNlOgot
ICAgIGVtYWlsID0gbGFzdF9lbWFpbAotICByZXR1cm4gZW1haWwKLQotCi1kZWYgU3RhdHVzVXBk
YXRlKG1zZyk6Ci0gICIiIlByaW50IGEgc3RhdHVzIG1lc3NhZ2UgdG8gc3Rkb3V0LgotCi0gIElm
ICd2ZXJib3NpdHknIGlzIGdyZWF0ZXIgdGhhbiAwLCBwcmludCB0aGUgbWVzc2FnZS4KLQotICBB
cmdzOgotICAgIG1zZzogVGhlIHN0cmluZyB0byBwcmludC4KLSAgIiIiCi0gIGlmIHZlcmJvc2l0
eSA+IDA6Ci0gICAgcHJpbnQgbXNnCi0KLQotZGVmIEVycm9yRXhpdChtc2cpOgotICAiIiJQcmlu
dCBhbiBlcnJvciBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgZXhpdC4iIiIKLSAgcHJpbnQgPj5zeXMu
c3RkZXJyLCBtc2cKLSAgc3lzLmV4aXQoMSkKLQotCi1jbGFzcyBDbGllbnRMb2dpbkVycm9yKHVy
bGxpYjIuSFRUUEVycm9yKToKLSAgIiIiUmFpc2VkIHRvIGluZGljYXRlIHRoZXJlIHdhcyBhbiBl
cnJvciBhdXRoZW50aWNhdGluZyB3aXRoIENsaWVudExvZ2luLiIiIgotCi0gIGRlZiBfX2luaXRf
XyhzZWxmLCB1cmwsIGNvZGUsIG1zZywgaGVhZGVycywgYXJncyk6Ci0gICAgdXJsbGliMi5IVFRQ
RXJyb3IuX19pbml0X18oc2VsZiwgdXJsLCBjb2RlLCBtc2csIGhlYWRlcnMsIE5vbmUpCi0gICAg
c2VsZi5hcmdzID0gYXJncwotICAgIHNlbGYucmVhc29uID0gYXJnc1siRXJyb3IiXQotCi0KLWNs
YXNzIEFic3RyYWN0UnBjU2VydmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVzIGEgY29tbW9uIGlu
dGVyZmFjZSBmb3IgYSBzaW1wbGUgUlBDIHNlcnZlci4iIiIKLQotICBkZWYgX19pbml0X18oc2Vs
ZiwgaG9zdCwgYXV0aF9mdW5jdGlvbiwgaG9zdF9vdmVycmlkZT1Ob25lLCBleHRyYV9oZWFkZXJz
PXt9LAotICAgICAgICAgICAgICAgc2F2ZV9jb29raWVzPUZhbHNlKToKLSAgICAiIiJDcmVhdGVz
IGEgbmV3IEh0dHBScGNTZXJ2ZXIuCi0KLSAgICBBcmdzOgotICAgICAgaG9zdDogVGhlIGhvc3Qg
dG8gc2VuZCByZXF1ZXN0cyB0by4KLSAgICAgIGF1dGhfZnVuY3Rpb246IEEgZnVuY3Rpb24gdGhh
dCB0YWtlcyBubyBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4KLSAgICAgICAgKGVtYWlsLCBwYXNz
d29yZCkgdHVwbGUgd2hlbiBjYWxsZWQuIFdpbGwgYmUgY2FsbGVkIGlmIGF1dGhlbnRpY2F0aW9u
Ci0gICAgICAgIGlzIHJlcXVpcmVkLgotICAgICAgaG9zdF9vdmVycmlkZTogVGhlIGhvc3QgaGVh
ZGVyIHRvIHNlbmQgdG8gdGhlIHNlcnZlciAoZGVmYXVsdHMgdG8gaG9zdCkuCi0gICAgICBleHRy
YV9oZWFkZXJzOiBBIGRpY3Qgb2YgZXh0cmEgaGVhZGVycyB0byBhcHBlbmQgdG8gZXZlcnkgcmVx
dWVzdC4KLSAgICAgIHNhdmVfY29va2llczogSWYgVHJ1ZSwgc2F2ZSB0aGUgYXV0aGVudGljYXRp
b24gY29va2llcyB0byBsb2NhbCBkaXNrLgotICAgICAgICBJZiBGYWxzZSwgdXNlIGFuIGluLW1l
bW9yeSBjb29raWVqYXIgaW5zdGVhZC4gIFN1YmNsYXNzZXMgbXVzdAotICAgICAgICBpbXBsZW1l
bnQgdGhpcyBmdW5jdGlvbmFsaXR5LiAgRGVmYXVsdHMgdG8gRmFsc2UuCi0gICAgIiIiCi0gICAg
c2VsZi5ob3N0ID0gaG9zdAotICAgIHNlbGYuaG9zdF9vdmVycmlkZSA9IGhvc3Rfb3ZlcnJpZGUK
LSAgICBzZWxmLmF1dGhfZnVuY3Rpb24gPSBhdXRoX2Z1bmN0aW9uCi0gICAgc2VsZi5hdXRoZW50
aWNhdGVkID0gRmFsc2UKLSAgICBzZWxmLmV4dHJhX2hlYWRlcnMgPSBleHRyYV9oZWFkZXJzCi0g
ICAgc2VsZi5zYXZlX2Nvb2tpZXMgPSBzYXZlX2Nvb2tpZXMKLSAgICBzZWxmLm9wZW5lciA9IHNl
bGYuX0dldE9wZW5lcigpCi0gICAgaWYgc2VsZi5ob3N0X292ZXJyaWRlOgotICAgICAgbG9nZ2lu
Zy5pbmZvKCJTZXJ2ZXI6ICVzOyBIb3N0OiAlcyIsIHNlbGYuaG9zdCwgc2VsZi5ob3N0X292ZXJy
aWRlKQotICAgIGVsc2U6Ci0gICAgICBsb2dnaW5nLmluZm8oIlNlcnZlcjogJXMiLCBzZWxmLmhv
c3QpCi0KLSAgZGVmIF9HZXRPcGVuZXIoc2VsZik6Ci0gICAgIiIiUmV0dXJucyBhbiBPcGVuZXJE
aXJlY3RvciBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAg
QSB1cmxsaWIyLk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKCkKLQotICBkZWYgX0NyZWF0ZVJlcXVlc3Qoc2VsZiwgdXJsLCBkYXRh
PU5vbmUpOgotICAgICIiIkNyZWF0ZXMgYSBuZXcgdXJsbGliIHJlcXVlc3QuIiIiCi0gICAgbG9n
Z2luZy5kZWJ1ZygiQ3JlYXRpbmcgcmVxdWVzdCBmb3I6ICclcycgd2l0aCBwYXlsb2FkOlxuJXMi
LCB1cmwsIGRhdGEpCi0gICAgcmVxID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgZGF0YT1kYXRhKQot
ICAgIGlmIHNlbGYuaG9zdF9vdmVycmlkZToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKCJIb3N0Iiwg
c2VsZi5ob3N0X292ZXJyaWRlKQotICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZXh0cmFfaGVh
ZGVycy5pdGVyaXRlbXMoKToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKGtleSwgdmFsdWUpCi0gICAg
cmV0dXJuIHJlcQotCi0gIGRlZiBfR2V0QXV0aFRva2VuKHNlbGYsIGVtYWlsLCBwYXNzd29yZCk6
Ci0gICAgIiIiVXNlcyBDbGllbnRMb2dpbiB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIsIHJldHVy
bmluZyBhbiBhdXRoIHRva2VuLgotCi0gICAgQXJnczoKLSAgICAgIGVtYWlsOiAgICBUaGUgdXNl
cidzIGVtYWlsIGFkZHJlc3MKLSAgICAgIHBhc3N3b3JkOiBUaGUgdXNlcidzIHBhc3N3b3JkCi0K
LSAgICBSYWlzZXM6Ci0gICAgICBDbGllbnRMb2dpbkVycm9yOiBJZiB0aGVyZSB3YXMgYW4gZXJy
b3IgYXV0aGVudGljYXRpbmcgd2l0aCBDbGllbnRMb2dpbi4KLSAgICAgIEhUVFBFcnJvcjogSWYg
dGhlcmUgd2FzIHNvbWUgb3RoZXIgZm9ybSBvZiBIVFRQIGVycm9yLgotCi0gICAgUmV0dXJuczoK
LSAgICAgIFRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbiByZXR1cm5lZCBieSBDbGllbnRMb2dpbi4K
LSAgICAiIiIKLSAgICBhY2NvdW50X3R5cGUgPSAiR09PR0xFIgotICAgIGlmIHNlbGYuaG9zdC5l
bmRzd2l0aCgiLmdvb2dsZS5jb20iKToKLSAgICAgICMgTmVlZGVkIGZvciB1c2UgaW5zaWRlIEdv
b2dsZS4KLSAgICAgIGFjY291bnRfdHlwZSA9ICJIT1NURUQiCi0gICAgcmVxID0gc2VsZi5fQ3Jl
YXRlUmVxdWVzdCgKLSAgICAgICAgdXJsPSJodHRwczovL3d3dy5nb29nbGUuY29tL2FjY291bnRz
L0NsaWVudExvZ2luIiwKLSAgICAgICAgZGF0YT11cmxsaWIudXJsZW5jb2RlKHsKLSAgICAgICAg
ICAgICJFbWFpbCI6IGVtYWlsLAotICAgICAgICAgICAgIlBhc3N3ZCI6IHBhc3N3b3JkLAotICAg
ICAgICAgICAgInNlcnZpY2UiOiAiYWgiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJyaWV0dmVs
ZC1jb2RlcmV2aWV3LXVwbG9hZCIsCi0gICAgICAgICAgICAiYWNjb3VudFR5cGUiOiBhY2NvdW50
X3R5cGUsCi0gICAgICAgIH0pLAotICAgICkKLSAgICB0cnk6Ci0gICAgICByZXNwb25zZSA9IHNl
bGYub3BlbmVyLm9wZW4ocmVxKQotICAgICAgcmVzcG9uc2VfYm9keSA9IHJlc3BvbnNlLnJlYWQo
KQotICAgICAgcmVzcG9uc2VfZGljdCA9IGRpY3QoeC5zcGxpdCgiPSIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgeCBpbiByZXNwb25zZV9ib2R5LnNwbGl0KCJcbiIpIGlmIHgpCi0g
ICAgICByZXR1cm4gcmVzcG9uc2VfZGljdFsiQXV0aCJdCi0gICAgZXhjZXB0IHVybGxpYjIuSFRU
UEVycm9yLCBlOgotICAgICAgaWYgZS5jb2RlID09IDQwMzoKLSAgICAgICAgYm9keSA9IGUucmVh
ZCgpCi0gICAgICAgIHJlc3BvbnNlX2RpY3QgPSBkaWN0KHguc3BsaXQoIj0iLCAxKSBmb3IgeCBp
biBib2R5LnNwbGl0KCJcbiIpIGlmIHgpCi0gICAgICAgIHJhaXNlIENsaWVudExvZ2luRXJyb3Io
cmVxLmdldF9mdWxsX3VybCgpLCBlLmNvZGUsIGUubXNnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGUuaGVhZGVycywgcmVzcG9uc2VfZGljdCkKLSAgICAgIGVsc2U6Ci0gICAgICAg
IHJhaXNlCi0KLSAgZGVmIF9HZXRBdXRoQ29va2llKHNlbGYsIGF1dGhfdG9rZW4pOgotICAgICIi
IkZldGNoZXMgYXV0aGVudGljYXRpb24gY29va2llcyBmb3IgYW4gYXV0aGVudGljYXRpb24gdG9r
ZW4uCi0KLSAgICBBcmdzOgotICAgICAgYXV0aF90b2tlbjogVGhlIGF1dGhlbnRpY2F0aW9uIHRv
a2VuIHJldHVybmVkIGJ5IENsaWVudExvZ2luLgotCi0gICAgUmFpc2VzOgotICAgICAgSFRUUEVy
cm9yOiBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgZmV0Y2hpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIGNv
b2tpZXMuCi0gICAgIiIiCi0gICAgIyBUaGlzIGlzIGEgZHVtbXkgdmFsdWUgdG8gYWxsb3cgdXMg
dG8gaWRlbnRpZnkgd2hlbiB3ZSdyZSBzdWNjZXNzZnVsLgotICAgIGNvbnRpbnVlX2xvY2F0aW9u
ID0gImh0dHA6Ly9sb2NhbGhvc3QvIgotICAgIGFyZ3MgPSB7ImNvbnRpbnVlIjogY29udGludWVf
bG9jYXRpb24sICJhdXRoIjogYXV0aF90b2tlbn0KLSAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1
ZXN0KCJodHRwOi8vJXMvX2FoL2xvZ2luPyVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2VsZi5ob3N0LCB1cmxsaWIudXJsZW5jb2RlKGFyZ3MpKSkKLSAgICB0cnk6Ci0gICAg
ICByZXNwb25zZSA9IHNlbGYub3BlbmVyLm9wZW4ocmVxKQotICAgIGV4Y2VwdCB1cmxsaWIyLkhU
VFBFcnJvciwgZToKLSAgICAgIHJlc3BvbnNlID0gZQotICAgIGlmIChyZXNwb25zZS5jb2RlICE9
IDMwMiBvcgotICAgICAgICByZXNwb25zZS5pbmZvKClbImxvY2F0aW9uIl0gIT0gY29udGludWVf
bG9jYXRpb24pOgotICAgICAgcmFpc2UgdXJsbGliMi5IVFRQRXJyb3IocmVxLmdldF9mdWxsX3Vy
bCgpLCByZXNwb25zZS5jb2RlLCByZXNwb25zZS5tc2csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5mcCkKLSAgICBzZWxmLmF1dGhlbnRp
Y2F0ZWQgPSBUcnVlCi0KLSAgZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiQXV0aGVu
dGljYXRlcyB0aGUgdXNlci4KLQotICAgIFRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIHdvcmtz
IGFzIGZvbGxvd3M6Ci0gICAgIDEpIFdlIGdldCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmcm9t
IHRoZSB1c2VyCi0gICAgIDIpIFdlIHVzZSBDbGllbnRMb2dpbiB0byBvYnRhaW4gYW4gQVVUSCB0
b2tlbiBmb3IgdGhlIHVzZXIKLSAgICAgICAgKHNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL2Fw
aXMvYWNjb3VudHMvQXV0aEZvckluc3RhbGxlZEFwcHMuaHRtbCkuCi0gICAgIDMpIFdlIHBhc3Mg
dGhlIGF1dGggdG9rZW4gdG8gL19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgot
ICAgICAgICBhdXRoZW50aWNhdGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBp
dCB0cmllcyB0byByZWRpcmVjdAotICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgot
Ci0gICAgSWYgd2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHVwbG9hZCBBUEkgd2l0aG91dCBmaXJz
dCBvYnRhaW5pbmcgYW4KLSAgICBhdXRoZW50aWNhdGlvbiBjb29raWUsIGl0IHJldHVybnMgYSA0
MDEgcmVzcG9uc2UgYW5kIGRpcmVjdHMgdXMgdG8KLSAgICBhdXRoZW50aWNhdGUgb3Vyc2VsdmVz
IHdpdGggQ2xpZW50TG9naW4uCi0gICAgIiIiCi0gICAgZm9yIGkgaW4gcmFuZ2UoMyk6Ci0gICAg
ICBjcmVkZW50aWFscyA9IHNlbGYuYXV0aF9mdW5jdGlvbigpCi0gICAgICB0cnk6Ci0gICAgICAg
IGF1dGhfdG9rZW4gPSBzZWxmLl9HZXRBdXRoVG9rZW4oY3JlZGVudGlhbHNbMF0sIGNyZWRlbnRp
YWxzWzFdKQotICAgICAgZXhjZXB0IENsaWVudExvZ2luRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUu
cmVhc29uID09ICJCYWRBdXRoZW50aWNhdGlvbiI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3Rk
ZXJyLCAiSW52YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZC4iCi0gICAgICAgICAgY29udGludWUK
LSAgICAgICAgaWYgZS5yZWFzb24gPT0gIkNhcHRjaGFSZXF1aXJlZCI6Ci0gICAgICAgICAgcHJp
bnQgPj5zeXMuc3RkZXJyLCAoCi0gICAgICAgICAgICAgICJQbGVhc2UgZ28gdG9cbiIKLSAgICAg
ICAgICAgICAgImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYWNjb3VudHMvRGlzcGxheVVubG9ja0Nh
cHRjaGFcbiIKLSAgICAgICAgICAgICAgImFuZCB2ZXJpZnkgeW91IGFyZSBhIGh1bWFuLiAgVGhl
biB0cnkgYWdhaW4uIikKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAi
Tm90VmVyaWZpZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkFjY291bnQgbm90
IHZlcmlmaWVkLiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiVGVy
bXNOb3RBZ3JlZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlVzZXIgaGFzIG5v
dCBhZ3JlZWQgdG8gVE9TLiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9
PSAiQWNjb3VudERlbGV0ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSB1
c2VyIGFjY291bnQgaGFzIGJlZW4gZGVsZXRlZC4iCi0gICAgICAgICAgYnJlYWsKLSAgICAgICAg
aWYgZS5yZWFzb24gPT0gIkFjY291bnREaXNhYmxlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMu
c3RkZXJyLCAiVGhlIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBkaXNhYmxlZC4iCi0gICAgICAgICAg
YnJlYWsKLSAgICAgICAgaWYgZS5yZWFzb24gPT0gIlNlcnZpY2VEaXNhYmxlZCI6Ci0gICAgICAg
ICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoIlRoZSB1c2VyJ3MgYWNjZXNzIHRvIHRoZSBzZXJ2aWNl
IGhhcyBiZWVuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZWQuIikK
LSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiU2VydmljZVVuYXZhaWxh
YmxlIjoKLSAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICJUaGUgc2VydmljZSBpcyBub3Qg
YXZhaWxhYmxlOyB0cnkgYWdhaW4gbGF0ZXIuIgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJh
aXNlCi0gICAgICBzZWxmLl9HZXRBdXRoQ29va2llKGF1dGhfdG9rZW4pCi0gICAgICByZXR1cm4K
LQotICBkZWYgU2VuZChzZWxmLCByZXF1ZXN0X3BhdGgsIHBheWxvYWQ9Tm9uZSwKLSAgICAgICAg
ICAgY29udGVudF90eXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAotICAgICAgICAgICB0
aW1lb3V0PU5vbmUsCi0gICAgICAgICAgICoqa3dhcmdzKToKLSAgICAiIiJTZW5kcyBhbiBSUEMg
YW5kIHJldHVybnMgdGhlIHJlc3BvbnNlLgotCi0gICAgQXJnczoKLSAgICAgIHJlcXVlc3RfcGF0
aDogVGhlIHBhdGggdG8gc2VuZCB0aGUgcmVxdWVzdCB0bywgZWcgL2FwaS9hcHB2ZXJzaW9uL2Ny
ZWF0ZS4KLSAgICAgIHBheWxvYWQ6IFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LCBvciBOb25lIHRv
IHNlbmQgYW4gZW1wdHkgcmVxdWVzdC4KLSAgICAgIGNvbnRlbnRfdHlwZTogVGhlIENvbnRlbnQt
VHlwZSBoZWFkZXIgdG8gdXNlLgotICAgICAgdGltZW91dDogdGltZW91dCBpbiBzZWNvbmRzOyBk
ZWZhdWx0IE5vbmUgaS5lLiBubyB0aW1lb3V0LgotICAgICAgICAoTm90ZTogZm9yIGxhcmdlIHJl
cXVlc3RzIG9uIE9TIFgsIHRoZSB0aW1lb3V0IGRvZXNuJ3Qgd29yayByaWdodC4pCi0gICAgICBr
d2FyZ3M6IEFueSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIGludG8gcXVlcnkgc3Ry
aW5nIHBhcmFtZXRlcnMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIHJlc3BvbnNlIGJvZHks
IGFzIGEgc3RyaW5nLgotICAgICIiIgotICAgICMgVE9ETzogRG9uJ3QgcmVxdWlyZSBhdXRoZW50
aWNhdGlvbi4gIExldCB0aGUgc2VydmVyIHNheQotICAgICMgd2hldGhlciBpdCBpcyBuZWNlc3Nh
cnkuCi0gICAgaWYgbm90IHNlbGYuYXV0aGVudGljYXRlZDoKLSAgICAgIHNlbGYuX0F1dGhlbnRp
Y2F0ZSgpCi0KLSAgICBvbGRfdGltZW91dCA9IHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpCi0g
ICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCi0gICAgdHJ5OgotICAgICAgdHJp
ZXMgPSAwCi0gICAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cmllcyArPSAxCi0gICAgICAgIGFy
Z3MgPSBkaWN0KGt3YXJncykKLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcyVzIiAlIChzZWxmLmhv
c3QsIHJlcXVlc3RfcGF0aCkKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICB1cmwgKz0gIj8i
ICsgdXJsbGliLnVybGVuY29kZShhcmdzKQotICAgICAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1
ZXN0KHVybD11cmwsIGRhdGE9cGF5bG9hZCkKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIkNvbnRl
bnQtVHlwZSIsIGNvbnRlbnRfdHlwZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgIGYgPSBzZWxm
Lm9wZW5lci5vcGVuKHJlcSkKLSAgICAgICAgICByZXNwb25zZSA9IGYucmVhZCgpCi0gICAgICAg
ICAgZi5jbG9zZSgpCi0gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0gICAgICAgIGV4Y2VwdCB1
cmxsaWIyLkhUVFBFcnJvciwgZToKLSAgICAgICAgICBpZiB0cmllcyA+IDM6Ci0gICAgICAgICAg
ICByYWlzZQotICAgICAgICAgIGVsaWYgZS5jb2RlID09IDQwMToKLSAgICAgICAgICAgIHNlbGYu
X0F1dGhlbnRpY2F0ZSgpCi0jIyAgICAgICAgICAgZWxpZiBlLmNvZGUgPj0gNTAwIGFuZCBlLmNv
ZGUgPCA2MDA6Ci0jIyAgICAgICAgICAgICAjIFNlcnZlciBFcnJvciAtIHRyeSBhZ2Fpbi4KLSMj
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNl
Ci0gICAgZmluYWxseToKLSAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChvbGRfdGltZW91
dCkKLQotCi1jbGFzcyBIdHRwUnBjU2VydmVyKEFic3RyYWN0UnBjU2VydmVyKToKLSAgIiIiUHJv
dmlkZXMgYSBzaW1wbGlmaWVkIFJQQy1zdHlsZSBpbnRlcmZhY2UgZm9yIEhUVFAgcmVxdWVzdHMu
IiIiCi0KLSAgZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiU2F2ZSB0aGUgY29va2ll
IGphciBhZnRlciBhdXRoZW50aWNhdGlvbi4iIiIKLSAgICBzdXBlcihIdHRwUnBjU2VydmVyLCBz
ZWxmKS5fQXV0aGVudGljYXRlKCkKLSAgICBpZiBzZWxmLnNhdmVfY29va2llczoKLSAgICAgIFN0
YXR1c1VwZGF0ZSgiU2F2aW5nIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMgdG8gJXMiICUgc2VsZi5j
b29raWVfZmlsZSkKLSAgICAgIHNlbGYuY29va2llX2phci5zYXZlKCkKLQotICBkZWYgX0dldE9w
ZW5lcihzZWxmKToKLSAgICAiIiJSZXR1cm5zIGFuIE9wZW5lckRpcmVjdG9yIHRoYXQgc3VwcG9y
dHMgY29va2llcyBhbmQgaWdub3JlcyByZWRpcmVjdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAg
QSB1cmxsaWIyLk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICBvcGVuZXIgPSB1
cmxsaWIyLk9wZW5lckRpcmVjdG9yKCkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Q
cm94eUhhbmRsZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Vbmtub3duSGFu
ZGxlcigpKQotICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBIYW5kbGVyKCkpCi0g
ICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIuSFRUUERlZmF1bHRFcnJvckhhbmRsZXIoKSkK
LSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQU0hhbmRsZXIoKSkKLSAgICBvcGVu
ZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQRXJyb3JQcm9jZXNzb3IoKSkKLSAgICBpZiBzZWxm
LnNhdmVfY29va2llczoKLSAgICAgIHNlbGYuY29va2llX2ZpbGUgPSBvcy5wYXRoLmV4cGFuZHVz
ZXIoIn4vLmNvZGVyZXZpZXdfdXBsb2FkX2Nvb2tpZXMiKQotICAgICAgc2VsZi5jb29raWVfamFy
ID0gY29va2llbGliLk1vemlsbGFDb29raWVKYXIoc2VsZi5jb29raWVfZmlsZSkKLSAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKHNlbGYuY29va2llX2ZpbGUpOgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgc2VsZi5jb29raWVfamFyLmxvYWQoKQotICAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9
IFRydWUKLSAgICAgICAgICBTdGF0dXNVcGRhdGUoIkxvYWRlZCBhdXRoZW50aWNhdGlvbiBjb29r
aWVzIGZyb20gJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29raWVfZmlsZSkK
LSAgICAgICAgZXhjZXB0IChjb29raWVsaWIuTG9hZEVycm9yLCBJT0Vycm9yKToKLSAgICAgICAg
ICAjIEZhaWxlZCB0byBsb2FkIGNvb2tpZXMgLSBqdXN0IGlnbm9yZSB0aGVtLgotICAgICAgICAg
IHBhc3MKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgQ3JlYXRlIGFuIGVtcHR5IGNvb2tpZSBmaWxl
IHdpdGggbW9kZSA2MDAKLSAgICAgICAgZmQgPSBvcy5vcGVuKHNlbGYuY29va2llX2ZpbGUsIG9z
Lk9fQ1JFQVQsIDA2MDApCi0gICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgIyBBbHdheXMgY2ht
b2QgdGhlIGNvb2tpZSBmaWxlCi0gICAgICBvcy5jaG1vZChzZWxmLmNvb2tpZV9maWxlLCAwNjAw
KQotICAgIGVsc2U6Ci0gICAgICAjIERvbid0IHNhdmUgY29va2llcyBhY3Jvc3MgcnVucyBvZiB1
cGRhdGUucHkuCi0gICAgICBzZWxmLmNvb2tpZV9qYXIgPSBjb29raWVsaWIuQ29va2llSmFyKCkK
LSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQQ29va2llUHJvY2Vzc29yKHNlbGYu
Y29va2llX2phcikpCi0gICAgcmV0dXJuIG9wZW5lcgotCi0KLXBhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcih1c2FnZT0iJXByb2cgW29wdGlvbnNdIFstLSBkaWZmX29wdGlvbnNdIikKLXBh
cnNlci5hZGRfb3B0aW9uKCIteSIsICItLWFzc3VtZV95ZXMiLCBhY3Rpb249InN0b3JlX3RydWUi
LAotICAgICAgICAgICAgICAgICAgZGVzdD0iYXNzdW1lX3llcyIsIGRlZmF1bHQ9RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICBoZWxwPSJBc3N1bWUgdGhhdCB0aGUgYW5zd2VyIHRvIHllcy9ubyBx
dWVzdGlvbnMgaXMgJ3llcycuIikKLSMgTG9nZ2luZwotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlv
bl9ncm91cCgiTG9nZ2luZyBvcHRpb25zIikKLWdyb3VwLmFkZF9vcHRpb24oIi1xIiwgIi0tcXVp
ZXQiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9MCwKLSAgICAgICAgICAgICAgICAgZGVz
dD0idmVyYm9zZSIsIGhlbHA9IlByaW50IGVycm9ycyBvbmx5LiIpCi1ncm91cC5hZGRfb3B0aW9u
KCItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9MiwKLSAgICAg
ICAgICAgICAgICAgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9MSwKLSAgICAgICAgICAgICAgICAg
aGVscD0iUHJpbnQgaW5mbyBsZXZlbCBsb2dzIChkZWZhdWx0KS4iKQotZ3JvdXAuYWRkX29wdGlv
bigiLS1ub2lzeSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0zLAotICAgICAgICAgICAg
ICAgICBkZXN0PSJ2ZXJib3NlIiwgaGVscD0iUHJpbnQgYWxsIGxvZ3MuIikKLSMgUmV2aWV3IHNl
cnZlcgotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCgiUmV2aWV3IHNlcnZlciBvcHRp
b25zIikKLWdyb3VwLmFkZF9vcHRpb24oIi1zIiwgIi0tc2VydmVyIiwgYWN0aW9uPSJzdG9yZSIs
IGRlc3Q9InNlcnZlciIsCi0gICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImNvZGVyZXZpZXcuYXBw
c3BvdC5jb20iLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJTRVJWRVIiLAotICAgICAgICAg
ICAgICAgICBoZWxwPSgiVGhlIHNlcnZlciB0byB1cGxvYWQgdG8uIFRoZSBmb3JtYXQgaXMgaG9z
dFs6cG9ydF0uICIKLSAgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHRzIHRvICdjb2RlcmV2
aWV3LmFwcHNwb3QuY29tJy4iKSkKLWdyb3VwLmFkZF9vcHRpb24oIi1lIiwgIi0tZW1haWwiLCBh
Y3Rpb249InN0b3JlIiwgZGVzdD0iZW1haWwiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJF
TUFJTCIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iVGhlIHVzZXJuYW1l
IHRvIHVzZS4gV2lsbCBwcm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLUgi
LCAiLS1ob3N0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Imhvc3QiLAotICAgICAgICAgICAgICAg
ICBtZXRhdmFyPSJIT1NUIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJP
dmVycmlkZXMgdGhlIEhvc3QgaGVhZGVyIHNlbnQgd2l0aCBhbGwgUlBDcy4iKQotZ3JvdXAuYWRk
X29wdGlvbigiLS1ub19jb29raWVzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCi0gICAgICAgICAg
ICAgICAgIGRlc3Q9InNhdmVfY29va2llcyIsIGRlZmF1bHQ9VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgaGVscD0iRG8gbm90IHNhdmUgYXV0aGVudGljYXRpb24gY29va2llcyB0byBsb2NhbCBkaXNr
LiIpCi0jIElzc3VlCi1ncm91cCA9IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJJc3N1ZSBvcHRp
b25zIikKLWdyb3VwLmFkZF9vcHRpb24oIi1kIiwgIi0tZGVzY3JpcHRpb24iLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iZGVzY3JpcHRpb24iLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJERVND
UklQVElPTiIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iT3B0aW9uYWwg
ZGVzY3JpcHRpb24gd2hlbiBjcmVhdGluZyBhbiBpc3N1ZS4iKQotZ3JvdXAuYWRkX29wdGlvbigi
LWYiLCAiLS1kZXNjcmlwdGlvbl9maWxlIiwgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAg
ICAgIGRlc3Q9ImRlc2NyaXB0aW9uX2ZpbGUiLCBtZXRhdmFyPSJERVNDUklQVElPTl9GSUxFIiwK
LSAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJP
cHRpb25hbCBwYXRoIG9mIGEgZmlsZSB0aGF0IGNvbnRhaW5zICIKLSAgICAgICAgICAgICAgICAg
ICAgICAidGhlIGRlc2NyaXB0aW9uIHdoZW4gY3JlYXRpbmcgYW4gaXNzdWUuIikKLWdyb3VwLmFk
ZF9vcHRpb24oIi1yIiwgIi0tcmV2aWV3ZXJzIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJldmll
d2VycyIsCi0gICAgICAgICAgICAgICAgIG1ldGF2YXI9IlJFVklFV0VSUyIsIGRlZmF1bHQ9Tm9u
ZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iQWRkIHJldmlld2VycyAoY29tbWEgc2VwYXJhdGVk
IGVtYWlsIGFkZHJlc3NlcykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tY2MiLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iY2MiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDQyIsIGRlZmF1bHQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iQWRkIENDIChjb21tYSBzZXBhcmF0ZWQgZW1h
aWwgYWRkcmVzc2VzKS4iKQotIyBVcGxvYWQgb3B0aW9ucwotZ3JvdXAgPSBwYXJzZXIuYWRkX29w
dGlvbl9ncm91cCgiUGF0Y2ggb3B0aW9ucyIpCi1ncm91cC5hZGRfb3B0aW9uKCItbSIsICItLW1l
c3NhZ2UiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ibWVzc2FnZSIsCi0gICAgICAgICAgICAgICAg
IG1ldGF2YXI9Ik1FU1NBR0UiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgIGhlbHA9
IkEgbWVzc2FnZSB0byBpZGVudGlmeSB0aGUgcGF0Y2guICIKLSAgICAgICAgICAgICAgICAgICAg
ICAiV2lsbCBwcm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLWkiLCAiLS1p
c3N1ZSIsIHR5cGU9ImludCIsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAgICAgICBtZXRh
dmFyPSJJU1NVRSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iSXNzdWUg
bnVtYmVyIHRvIHdoaWNoIHRvIGFkZC4gRGVmYXVsdHMgdG8gbmV3IGlzc3VlLiIpCi1ncm91cC5h
ZGRfb3B0aW9uKCItLWRvd25sb2FkX2Jhc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
ICAgICAgICAgICBkZXN0PSJkb3dubG9hZF9iYXNlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgaGVscD0iQmFzZSBmaWxlcyB3aWxsIGJlIGRvd25sb2FkZWQgYnkgdGhlIHNlcnZl
ciAiCi0gICAgICAgICAgICAgICAgICIoc2lkZS1ieS1zaWRlIGRpZmZzIG1heSBub3Qgd29yayBv
biBmaWxlcyB3aXRoIENScykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tcmV2IiwgYWN0aW9uPSJz
dG9yZSIsIGRlc3Q9InJldmlzaW9uIiwKLSAgICAgICAgICAgICAgICAgbWV0YXZhcj0iUkVWIiwg
ZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJCcmFuY2gvdHJlZS9yZXZpc2lv
biB0byBkaWZmIGFnYWluc3QgKHVzZWQgYnkgRFZDUykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0t
c2VuZF9tYWlsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgZGVzdD0i
c2VuZF9tYWlsIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iU2VuZCBu
b3RpZmljYXRpb24gZW1haWwgdG8gcmV2aWV3ZXJzLiIpCi0KLQotZGVmIEdldFJwY1NlcnZlcihv
cHRpb25zKToKLSAgIiIiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhbiBBYnN0cmFjdFJwY1NlcnZl
ci4KLQotICBSZXR1cm5zOgotICAgIEEgbmV3IEFic3RyYWN0UnBjU2VydmVyLCBvbiB3aGljaCBS
UEMgY2FsbHMgY2FuIGJlIG1hZGUuCi0gICIiIgotCi0gIHJwY19zZXJ2ZXJfY2xhc3MgPSBIdHRw
UnBjU2VydmVyCi0KLSAgZGVmIEdldFVzZXJDcmVkZW50aWFscygpOgotICAgICIiIlByb21wdHMg
dGhlIHVzZXIgZm9yIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLiIiIgotICAgIGVtYWlsID0gb3B0
aW9ucy5lbWFpbAotICAgIGlmIGVtYWlsIGlzIE5vbmU6Ci0gICAgICBlbWFpbCA9IEdldEVtYWls
KCJFbWFpbCAobG9naW4gZm9yIHVwbG9hZGluZyB0byAlcykiICUgb3B0aW9ucy5zZXJ2ZXIpCi0g
ICAgcGFzc3dvcmQgPSBnZXRwYXNzLmdldHBhc3MoIlBhc3N3b3JkIGZvciAlczogIiAlIGVtYWls
KQotICAgIHJldHVybiAoZW1haWwsIHBhc3N3b3JkKQotCi0gICMgSWYgdGhpcyBpcyB0aGUgZGV2
X2FwcHNlcnZlciwgdXNlIGZha2UgYXV0aGVudGljYXRpb24uCi0gIGhvc3QgPSAob3B0aW9ucy5o
b3N0IG9yIG9wdGlvbnMuc2VydmVyKS5sb3dlcigpCi0gIGlmIGhvc3QgPT0gImxvY2FsaG9zdCIg
b3IgaG9zdC5zdGFydHN3aXRoKCJsb2NhbGhvc3Q6Iik6Ci0gICAgZW1haWwgPSBvcHRpb25zLmVt
YWlsCi0gICAgaWYgZW1haWwgaXMgTm9uZToKLSAgICAgIGVtYWlsID0gInRlc3RAZXhhbXBsZS5j
b20iCi0gICAgICBsb2dnaW5nLmluZm8oIlVzaW5nIGRlYnVnIHVzZXIgJXMuICBPdmVycmlkZSB3
aXRoIC0tZW1haWwiICUgZW1haWwpCi0gICAgc2VydmVyID0gcnBjX3NlcnZlcl9jbGFzcygKLSAg
ICAgICAgb3B0aW9ucy5zZXJ2ZXIsCi0gICAgICAgIGxhbWJkYTogKGVtYWlsLCAicGFzc3dvcmQi
KSwKLSAgICAgICAgaG9zdF9vdmVycmlkZT1vcHRpb25zLmhvc3QsCi0gICAgICAgIGV4dHJhX2hl
YWRlcnM9eyJDb29raWUiOgotICAgICAgICAgICAgICAgICAgICAgICAnZGV2X2FwcHNlcnZlcl9s
b2dpbj0iJXM6RmFsc2UiJyAlIGVtYWlsfSwKLSAgICAgICAgc2F2ZV9jb29raWVzPW9wdGlvbnMu
c2F2ZV9jb29raWVzKQotICAgICMgRG9uJ3QgdHJ5IHRvIHRhbGsgdG8gQ2xpZW50TG9naW4uCi0g
ICAgc2VydmVyLmF1dGhlbnRpY2F0ZWQgPSBUcnVlCi0gICAgcmV0dXJuIHNlcnZlcgotCi0gIHJl
dHVybiBycGNfc2VydmVyX2NsYXNzKG9wdGlvbnMuc2VydmVyLCBHZXRVc2VyQ3JlZGVudGlhbHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Rfb3ZlcnJpZGU9b3B0aW9ucy5ob3N0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlX2Nvb2tpZXM9b3B0aW9ucy5zYXZlX2Nvb2tp
ZXMpCi0KLQotZGVmIEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZpZWxkcywgZmlsZXMpOgotICAi
IiJFbmNvZGUgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydC9mb3JtLWRhdGEuCi0KLSAgQXJnczoK
LSAgICBmaWVsZHM6IEEgc2VxdWVuY2Ugb2YgKG5hbWUsIHZhbHVlKSBlbGVtZW50cyBmb3IgcmVn
dWxhciBmb3JtIGZpZWxkcy4KLSAgICBmaWxlczogQSBzZXF1ZW5jZSBvZiAobmFtZSwgZmlsZW5h
bWUsIHZhbHVlKSBlbGVtZW50cyBmb3IgZGF0YSB0byBiZQotICAgICAgICAgICB1cGxvYWRlZCBh
cyBmaWxlcy4KLSAgUmV0dXJuczoKLSAgICAoY29udGVudF90eXBlLCBib2R5KSByZWFkeSBmb3Ig
aHR0cGxpYi5IVFRQIGluc3RhbmNlLgotCi0gIFNvdXJjZToKLSAgICBodHRwOi8vYXNwbi5hY3Rp
dmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzE0NjMwNgotICAiIiIKLSAg
Qk9VTkRBUlkgPSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCi0gIENSTEYgPSAnXHJc
bicKLSAgbGluZXMgPSBbXQotICBmb3IgKGtleSwgdmFsdWUpIGluIGZpZWxkczoKLSAgICBsaW5l
cy5hcHBlbmQoJy0tJyArIEJPVU5EQVJZKQotICAgIGxpbmVzLmFwcGVuZCgnQ29udGVudC1EaXNw
b3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5KQotICAgIGxpbmVzLmFwcGVuZCgn
JykKLSAgICBsaW5lcy5hcHBlbmQodmFsdWUpCi0gIGZvciAoa2V5LCBmaWxlbmFtZSwgdmFsdWUp
IGluIGZpbGVzOgotICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCi0gICAgbGluZXMu
YXBwZW5kKCdDb250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIjsgZmlsZW5h
bWU9IiVzIicgJQotICAgICAgICAgICAgIChrZXksIGZpbGVuYW1lKSkKLSAgICBsaW5lcy5hcHBl
bmQoJ0NvbnRlbnQtVHlwZTogJXMnICUgR2V0Q29udGVudFR5cGUoZmlsZW5hbWUpKQotICAgIGxp
bmVzLmFwcGVuZCgnJykKLSAgICBsaW5lcy5hcHBlbmQodmFsdWUpCi0gIGxpbmVzLmFwcGVuZCgn
LS0nICsgQk9VTkRBUlkgKyAnLS0nKQotICBsaW5lcy5hcHBlbmQoJycpCi0gIGJvZHkgPSBDUkxG
LmpvaW4obGluZXMpCi0gIGNvbnRlbnRfdHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3Vu
ZGFyeT0lcycgJSBCT1VOREFSWQotICByZXR1cm4gY29udGVudF90eXBlLCBib2R5Ci0KLQotZGVm
IEdldENvbnRlbnRUeXBlKGZpbGVuYW1lKToKLSAgIiIiSGVscGVyIHRvIGd1ZXNzIHRoZSBjb250
ZW50LXR5cGUgZnJvbSB0aGUgZmlsZW5hbWUuIiIiCi0gIHJldHVybiBtaW1ldHlwZXMuZ3Vlc3Nf
dHlwZShmaWxlbmFtZSlbMF0gb3IgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKLQotCi0jIFVz
ZSBhIHNoZWxsIGZvciBzdWJjb21tYW5kcyBvbiBXaW5kb3dzIHRvIGdldCBhIFBBVEggc2VhcmNo
LgotdXNlX3NoZWxsID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpCi0KLWRlZiBSdW5T
aGVsbFdpdGhSZXR1cm5Db2RlKGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKToKLSAgIiIiRXhlY3V0
ZXMgYSBjb21tYW5kIGFuZCByZXR1cm5zIHRoZSBvdXRwdXQgZnJvbSBzdGRvdXQgYW5kIHRoZSBy
ZXR1cm4gY29kZS4KLQotICBBcmdzOgotICAgIGNvbW1hbmQ6IENvbW1hbmQgdG8gZXhlY3V0ZS4K
LSAgICBwcmludF9vdXRwdXQ6IElmIFRydWUsIHRoZSBvdXRwdXQgaXMgcHJpbnRlZCB0byBzdGRv
dXQuCi0gICAgICAgICAgICAgICAgICBJZiBGYWxzZSwgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciBh
cmUgaWdub3JlZC4KLSAgICB1bml2ZXJzYWxfbmV3bGluZXM6IFVzZSB1bml2ZXJzYWxfbmV3bGlu
ZXMgZmxhZyAoZGVmYXVsdDogVHJ1ZSkuCi0KLSAgUmV0dXJuczoKLSAgICBUdXBsZSAob3V0cHV0
LCByZXR1cm4gY29kZSkKLSAgIiIiCi0gIGxvZ2dpbmcuaW5mbygiUnVubmluZyAlcyIsIGNvbW1h
bmQpCi0gIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgIHNoZWxs
PXVzZV9zaGVsbCwgdW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYg
cHJpbnRfb3V0cHV0OgotICAgIG91dHB1dF9hcnJheSA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgIGxpbmUgPSBwLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICBpZiBub3QgbGluZToKLSAgICAg
ICAgYnJlYWsKLSAgICAgIHByaW50IGxpbmUuc3RyaXAoIlxuIikKLSAgICAgIG91dHB1dF9hcnJh
eS5hcHBlbmQobGluZSkKLSAgICBvdXRwdXQgPSAiIi5qb2luKG91dHB1dF9hcnJheSkKLSAgZWxz
ZToKLSAgICBvdXRwdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAgcC53YWl0KCkKLSAgZXJyb3V0ID0g
cC5zdGRlcnIucmVhZCgpCi0gIGlmIHByaW50X291dHB1dCBhbmQgZXJyb3V0OgotICAgIHByaW50
ID4+c3lzLnN0ZGVyciwgZXJyb3V0Ci0gIHAuc3Rkb3V0LmNsb3NlKCkKLSAgcC5zdGRlcnIuY2xv
c2UoKQotICByZXR1cm4gb3V0cHV0LCBwLnJldHVybmNvZGUKLQotCi1kZWYgUnVuU2hlbGwoY29t
bWFuZCwgc2lsZW50X29rPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAg
ICAgICBwcmludF9vdXRwdXQ9RmFsc2UpOgotICBkYXRhLCByZXRjb2RlID0gUnVuU2hlbGxXaXRo
UmV0dXJuQ29kZShjb21tYW5kLCBwcmludF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYgcmV0Y29kZToKLSAg
ICBFcnJvckV4aXQoIkdvdCBlcnJvciBzdGF0dXMgZnJvbSAlczpcbiVzIiAlIChjb21tYW5kLCBk
YXRhKSkKLSAgaWYgbm90IHNpbGVudF9vayBhbmQgbm90IGRhdGE6Ci0gICAgRXJyb3JFeGl0KCJO
byBvdXRwdXQgZnJvbSAlcyIgJSBjb21tYW5kKQotICByZXR1cm4gZGF0YQotCi0KLWNsYXNzIFZl
cnNpb25Db250cm9sU3lzdGVtKG9iamVjdCk6Ci0gICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcHJv
dmlkaW5nIGFuIGludGVyZmFjZSB0byB0aGUgVkNTLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxm
LCBvcHRpb25zKToKLSAgICAiIiJDb25zdHJ1Y3Rvci4KLQotICAgIEFyZ3M6Ci0gICAgICBvcHRp
b25zOiBDb21tYW5kIGxpbmUgb3B0aW9ucy4KLSAgICAiIiIKLSAgICBzZWxmLm9wdGlvbnMgPSBv
cHRpb25zCi0KLSAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBhcmdzKToKLSAgICAiIiJSZXR1cm4g
dGhlIGN1cnJlbnQgZGlmZiBhcyBhIHN0cmluZy4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBF
eHRyYSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZGlmZiBjb21tYW5kLgotICAgICIiIgotICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0g
c3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9fY2xhc3NfXykKLQotICBkZWYgR2V0
VW5rbm93bkZpbGVzKHNlbGYpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZXMgdW5rbm93
biB0byB0aGUgVkNTLiIiIgotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAg
ICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9f
Y2xhc3NfXykKLQotICBkZWYgQ2hlY2tGb3JVbmtub3duRmlsZXMoc2VsZik6Ci0gICAgIiIiU2hv
dyBhbiAiYXJlIHlvdSBzdXJlPyIgcHJvbXB0IGlmIHRoZXJlIGFyZSB1bmtub3duIGZpbGVzLiIi
IgotICAgIHVua25vd25fZmlsZXMgPSBzZWxmLkdldFVua25vd25GaWxlcygpCi0gICAgaWYgdW5r
bm93bl9maWxlczoKLSAgICAgIHByaW50ICJUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBub3QgYWRk
ZWQgdG8gdmVyc2lvbiBjb250cm9sOiIKLSAgICAgIGZvciBsaW5lIGluIHVua25vd25fZmlsZXM6
Ci0gICAgICAgIHByaW50IGxpbmUKLSAgICAgIHByb21wdCA9ICJBcmUgeW91IHN1cmUgdG8gY29u
dGludWU/KHkvTikgIgotICAgICAgYW5zd2VyID0gcmF3X2lucHV0KHByb21wdCkuc3RyaXAoKQot
ICAgICAgaWYgYW5zd2VyICE9ICJ5IjoKLSAgICAgICAgRXJyb3JFeGl0KCJVc2VyIGFib3J0ZWQi
KQotCi0gIGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgIiIiR2V0IHRoZSBj
b250ZW50IG9mIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIG9mIGEgZmlsZS4KLQotICAgIFJldHVybnM6
Ci0gICAgICBBIHR1cGxlIChiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0
YXR1cykKLSAgICAgICAgYmFzZV9jb250ZW50OiBUaGUgY29udGVudHMgb2YgdGhlIGJhc2UgZmls
ZS4KLSAgICAgICAgbmV3X2NvbnRlbnQ6IEZvciB0ZXh0IGZpbGVzLCB0aGlzIGlzIGVtcHR5LiAg
Rm9yIGJpbmFyeSBmaWxlcywgdGhpcyBpcwotICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUg
bmV3IGZpbGUsIHNpbmNlIHRoZSBkaWZmIG91dHB1dCB3b24ndCBjb250YWluCi0gICAgICAgICAg
aW5mb3JtYXRpb24gdG8gcmVjb25zdHJ1Y3QgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgICAgaXNf
YmluYXJ5OiBUcnVlIGlmZiB0aGUgZmlsZSBpcyBiaW5hcnkuCi0gICAgICAgIHN0YXR1czogVGhl
IHN0YXR1cyBvZiB0aGUgZmlsZS4KLSAgICAiIiIKLQotICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IoCi0gICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVy
cmlkZSIgJSBzZWxmLl9fY2xhc3NfXykKLQotCi0gIGRlZiBHZXRCYXNlRmlsZXMoc2VsZiwgZGlm
Zik6Ci0gICAgIiIiSGVscGVyIHRoYXQgY2FsbHMgR2V0QmFzZSBmaWxlIGZvciBlYWNoIGZpbGUg
aW4gdGhlIHBhdGNoLgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgZGljdGlvbmFyeSB0aGF0IG1h
cHMgZnJvbSBmaWxlbmFtZSB0byBHZXRCYXNlRmlsZSdzIHR1cGxlLiAgRmlsZW5hbWVzCi0gICAg
ICBhcmUgcmV0cmlldmVkIGJhc2VkIG9uIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAiSW5kZXg6IiBv
cgotICAgICAgIlByb3BlcnR5IGNoYW5nZXMgb246Ii4KLSAgICAiIiIKLSAgICBmaWxlcyA9IHt9
Ci0gICAgZm9yIGxpbmUgaW4gZGlmZi5zcGxpdGxpbmVzKFRydWUpOgotICAgICAgaWYgbGluZS5z
dGFydHN3aXRoKCdJbmRleDonKSBvciBsaW5lLnN0YXJ0c3dpdGgoJ1Byb3BlcnR5IGNoYW5nZXMg
b246Jyk6Ci0gICAgICAgIHVudXNlZCwgZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAg
ICAgICAgIyBPbiBXaW5kb3dzIGlmIGEgZmlsZSBoYXMgcHJvcGVydHkgY2hhbmdlcyBpdHMgZmls
ZW5hbWUgdXNlcyAnXCcKLSAgICAgICAgIyBpbnN0ZWFkIG9mICcvJy4KLSAgICAgICAgZmlsZW5h
bWUgPSBmaWxlbmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICBmaWxlc1tm
aWxlbmFtZV0gPSBzZWxmLkdldEJhc2VGaWxlKGZpbGVuYW1lKQotICAgIHJldHVybiBmaWxlcwot
Ci0KLSAgZGVmIFVwbG9hZEJhc2VGaWxlcyhzZWxmLCBpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hf
bGlzdCwgcGF0Y2hzZXQsIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgZmlsZXMpOgot
ICAgICIiIlVwbG9hZHMgdGhlIGJhc2UgZmlsZXMgKGFuZCBpZiBuZWNlc3NhcnksIHRoZSBjdXJy
ZW50IG9uZXMgYXMgd2VsbCkuIiIiCi0KLSAgICBkZWYgVXBsb2FkRmlsZShmaWxlbmFtZSwgZmls
ZV9pZCwgY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMsIGlzX2Jhc2UpOgotICAgICAgIiIiVXBs
b2FkcyBhIGZpbGUgdG8gdGhlIHNlcnZlci4iIiIKLSAgICAgIGZpbGVfdG9vX2xhcmdlID0gRmFs
c2UKLSAgICAgIGlmIGlzX2Jhc2U6Ci0gICAgICAgIHR5cGUgPSAiYmFzZSIKLSAgICAgIGVsc2U6
Ci0gICAgICAgIHR5cGUgPSAiY3VycmVudCIKLSAgICAgIGlmIGxlbihjb250ZW50KSA+IE1BWF9V
UExPQURfU0laRToKLSAgICAgICAgcHJpbnQgKCJOb3QgdXBsb2FkaW5nIHRoZSAlcyBmaWxlIGZv
ciAlcyBiZWNhdXNlIGl0J3MgdG9vIGxhcmdlLiIgJQotICAgICAgICAgICAgICAgKHR5cGUsIGZp
bGVuYW1lKSkKLSAgICAgICAgZmlsZV90b29fbGFyZ2UgPSBUcnVlCi0gICAgICAgIGNvbnRlbnQg
PSAiIgotICAgICAgY2hlY2tzdW0gPSBtZDUubmV3KGNvbnRlbnQpLmhleGRpZ2VzdCgpCi0gICAg
ICBpZiBvcHRpb25zLnZlcmJvc2UgPiAwIGFuZCBub3QgZmlsZV90b29fbGFyZ2U6Ci0gICAgICAg
IHByaW50ICJVcGxvYWRpbmcgJXMgZmlsZSBmb3IgJXMiICUgKHR5cGUsIGZpbGVuYW1lKQotICAg
ICAgdXJsID0gIi8lZC91cGxvYWRfY29udGVudC8lZC8lZCIgJSAoaW50KGlzc3VlKSwgaW50KHBh
dGNoc2V0KSwgZmlsZV9pZCkKLSAgICAgIGZvcm1fZmllbGRzID0gWygiZmlsZW5hbWUiLCBmaWxl
bmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAoInN0YXR1cyIsIHN0YXR1cyksCi0gICAgICAg
ICAgICAgICAgICAgICAoImNoZWNrc3VtIiwgY2hlY2tzdW0pLAotICAgICAgICAgICAgICAgICAg
ICAgKCJpc19iaW5hcnkiLCBzdHIoaXNfYmluYXJ5KSksCi0gICAgICAgICAgICAgICAgICAgICAo
ImlzX2N1cnJlbnQiLCBzdHIobm90IGlzX2Jhc2UpKSwKLSAgICAgICAgICAgICAgICAgICAgXQot
ICAgICAgaWYgZmlsZV90b29fbGFyZ2U6Ci0gICAgICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoImZp
bGVfdG9vX2xhcmdlIiwgIjEiKSkKLSAgICAgIGlmIG9wdGlvbnMuZW1haWw6Ci0gICAgICAgIGZv
cm1fZmllbGRzLmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgICAgIGN0eXBlLCBi
b2R5ID0gRW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZm9ybV9maWVsZHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoImRhdGEiLCBmaWxlbmFtZSwgY29udGVu
dCldKQotICAgICAgcmVzcG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT1jdHlwZSkK
LSAgICAgIGlmIG5vdCByZXNwb25zZV9ib2R5LnN0YXJ0c3dpdGgoIk9LIik6Ci0gICAgICAgIFN0
YXR1c1VwZGF0ZSgiICAtLT4gJXMiICUgcmVzcG9uc2VfYm9keSkKLSAgICAgICAgc3lzLmV4aXQo
MSkKLQotICAgIHBhdGNoZXMgPSBkaWN0KCkKLSAgICBbcGF0Y2hlcy5zZXRkZWZhdWx0KHYsIGsp
IGZvciBrLCB2IGluIHBhdGNoX2xpc3RdCi0gICAgZm9yIGZpbGVuYW1lIGluIHBhdGNoZXMua2V5
cygpOgotICAgICAgYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMg
PSBmaWxlc1tmaWxlbmFtZV0KLSAgICAgIGZpbGVfaWRfc3RyID0gcGF0Y2hlcy5nZXQoZmlsZW5h
bWUpCi0gICAgICBpZiBmaWxlX2lkX3N0ci5maW5kKCJub2Jhc2UiKSAhPSAtMToKLSAgICAgICAg
YmFzZV9jb250ZW50ID0gTm9uZQotICAgICAgICBmaWxlX2lkX3N0ciA9IGZpbGVfaWRfc3RyW2Zp
bGVfaWRfc3RyLnJmaW5kKCJfIikgKyAxOl0KLSAgICAgIGZpbGVfaWQgPSBpbnQoZmlsZV9pZF9z
dHIpCi0gICAgICBpZiBiYXNlX2NvbnRlbnQgIT0gTm9uZToKLSAgICAgICAgVXBsb2FkRmlsZShm
aWxlbmFtZSwgZmlsZV9pZCwgYmFzZV9jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgVHJ1ZSkK
LSAgICAgIGlmIG5ld19jb250ZW50ICE9IE5vbmU6Ci0gICAgICAgIFVwbG9hZEZpbGUoZmlsZW5h
bWUsIGZpbGVfaWQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgRmFsc2UpCi0KLSAg
ZGVmIElzSW1hZ2Uoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUg
ZmlsZW5hbWUgaGFzIGFuIGltYWdlIGV4dGVuc2lvbi4iIiIKLSAgICBtaW1ldHlwZSA9ICBtaW1l
dHlwZXMuZ3Vlc3NfdHlwZShmaWxlbmFtZSlbMF0KLSAgICBpZiBub3QgbWltZXR5cGU6Ci0gICAg
ICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gbWltZXR5cGUuc3RhcnRzd2l0aCgiaW1hZ2UvIikK
LQotCi1jbGFzcyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKLSAgIiIiSW1w
bGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFjZSBmb3IgU3Vi
dmVyc2lvbi4iIiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIo
U3VidmVyc2lvblZDUywgc2VsZikuX19pbml0X18ob3B0aW9ucykKLSAgICBpZiBzZWxmLm9wdGlv
bnMucmV2aXNpb246Ci0gICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiKFxkKykoOihcZCspKT8iLCBz
ZWxmLm9wdGlvbnMucmV2aXNpb24pCi0gICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgIEVycm9y
RXhpdCgiSW52YWxpZCBTdWJ2ZXJzaW9uIHJldmlzaW9uICVzLiIgJSBzZWxmLm9wdGlvbnMucmV2
aXNpb24pCi0gICAgICBzZWxmLnJldl9zdGFydCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICBzZWxm
LnJldl9lbmQgPSBtYXRjaC5ncm91cCgzKQotICAgIGVsc2U6Ci0gICAgICBzZWxmLnJldl9zdGFy
dCA9IHNlbGYucmV2X2VuZCA9IE5vbmUKLSAgICAjIENhY2hlIG91dHB1dCBmcm9tICJzdm4gbGlz
dCAtciBSRVZOTyBkaXJuYW1lIi4KLSAgICAjIEtleXM6IGRpcm5hbWUsIFZhbHVlczogMi10dXBs
ZSAob3VwdXQgZm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCi0gICAgc2VsZi5zdm5sc19jYWNo
ZSA9IHt9Ci0gICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVs
ZXRlZCBpbiBhbiBvbGRlciByZXZpc2lvbi4KLSAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90
IGd1ZXNzIGl0IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KLSAgICByZXF1
aXJlZCA9IHNlbGYub3B0aW9ucy5kb3dubG9hZF9iYXNlIG9yIHNlbGYub3B0aW9ucy5yZXZpc2lv
biBpcyBub3QgTm9uZQotICAgIHNlbGYuc3ZuX2Jhc2UgPSBzZWxmLl9HdWVzc0Jhc2UocmVxdWly
ZWQpCi0KLSAgZGVmIEd1ZXNzQmFzZShzZWxmLCByZXF1aXJlZCk6Ci0gICAgIiIiV3JhcHBlciBm
b3IgX0d1ZXNzQmFzZS4iIiIKLSAgICByZXR1cm4gc2VsZi5zdm5fYmFzZQotCi0gIGRlZiBfR3Vl
c3NCYXNlKHNlbGYsIHJlcXVpcmVkKToKLSAgICAiIiJSZXR1cm5zIHRoZSBTVk4gYmFzZSBVUkwu
Ci0KLSAgICBBcmdzOgotICAgICAgcmVxdWlyZWQ6IElmIHRydWUsIGV4aXRzIGlmIHRoZSB1cmwg
Y2FuJ3QgYmUgZ3Vlc3NlZCwgb3RoZXJ3aXNlIE5vbmUgaXMKLSAgICAgICAgcmV0dXJuZWQuCi0g
ICAgIiIiCi0gICAgaW5mbyA9IFJ1blNoZWxsKFsic3ZuIiwgImluZm8iXSkKLSAgICBmb3IgbGlu
ZSBpbiBpbmZvLnNwbGl0bGluZXMoKToKLSAgICAgIHdvcmRzID0gbGluZS5zcGxpdCgpCi0gICAg
ICBpZiBsZW4od29yZHMpID09IDIgYW5kIHdvcmRzWzBdID09ICJVUkw6IjoKLSAgICAgICAgdXJs
ID0gd29yZHNbMV0KLSAgICAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnks
IGZyYWdtZW50ID0gdXJscGFyc2UudXJscGFyc2UodXJsKQotICAgICAgICB1c2VybmFtZSwgbmV0
bG9jID0gdXJsbGliLnNwbGl0dXNlcihuZXRsb2MpCi0gICAgICAgIGlmIHVzZXJuYW1lOgotICAg
ICAgICAgIGxvZ2dpbmcuaW5mbygiUmVtb3ZlZCB1c2VybmFtZSBmcm9tIGJhc2UgVVJMIikKLSAg
ICAgICAgaWYgbmV0bG9jLmVuZHN3aXRoKCJzdm4ucHl0aG9uLm9yZyIpOgotICAgICAgICAgIGlm
IG5ldGxvYyA9PSAic3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3
aXRoKCIvcHJvamVjdHMvIik6Ci0gICAgICAgICAgICAgIHBhdGggPSBwYXRoWzk6XQotICAgICAg
ICAgIGVsaWYgbmV0bG9jICE9ICJweXRob25kZXZAc3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAg
ICAgRXJyb3JFeGl0KCJVbnJlY29nbml6ZWQgUHl0aG9uIFVSTDogJXMiICUgdXJsKQotICAgICAg
ICAgIGJhc2UgPSAiaHR0cDovL3N2bi5weXRob24ub3JnL3ZpZXcvKmNoZWNrb3V0KiVzLyIgJSBw
YXRoCi0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIFB5dGhvbiBiYXNlID0gJXMiLCBi
YXNlKQotICAgICAgICBlbGlmIG5ldGxvYy5lbmRzd2l0aCgic3ZuLmNvbGxhYi5uZXQiKToKLSAg
ICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoIi9yZXBvcy8iKToKLSAgICAgICAgICAgIHBhdGgg
PSBwYXRoWzY6XQotICAgICAgICAgIGJhc2UgPSAiaHR0cDovL3N2bi5jb2xsYWIubmV0L3ZpZXd2
Yy8qY2hlY2tvdXQqJXMvIiAlIHBhdGgKLSAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQg
Q29sbGFiTmV0IGJhc2UgPSAlcyIsIGJhc2UpCi0gICAgICAgIGVsaWYgbmV0bG9jLmVuZHN3aXRo
KCIuZ29vZ2xlY29kZS5jb20iKToKLSAgICAgICAgICBwYXRoID0gcGF0aCArICIvIgotICAgICAg
ICAgIGJhc2UgPSB1cmxwYXJzZS51cmx1bnBhcnNlKCgiaHR0cCIsIG5ldGxvYywgcGF0aCwgcGFy
YW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSwgZnJhZ21l
bnQpKQotICAgICAgICAgIGxvZ2dpbmcuaW5mbygiR3Vlc3NlZCBHb29nbGUgQ29kZSBiYXNlID0g
JXMiLCBiYXNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgIHBhdGggPSBwYXRoICsgIi8iCi0g
ICAgICAgICAgYmFzZSA9IHVybHBhcnNlLnVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRo
LCBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LCBm
cmFnbWVudCkpCi0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIGJhc2UgPSAlcyIsIGJh
c2UpCi0gICAgICAgIHJldHVybiBiYXNlCi0gICAgaWYgcmVxdWlyZWQ6Ci0gICAgICBFcnJvckV4
aXQoIkNhbid0IGZpbmQgVVJMIGluIG91dHB1dCBmcm9tIHN2biBpbmZvIikKLSAgICByZXR1cm4g
Tm9uZQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgYXJncyk6Ci0gICAgY21kID0gWyJzdm4i
LCAiZGlmZiJdCi0gICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgotICAgICAgY21kICs9IFsi
LXIiLCBzZWxmLm9wdGlvbnMucmV2aXNpb25dCi0gICAgY21kLmV4dGVuZChhcmdzKQotICAgIGRh
dGEgPSBSdW5TaGVsbChjbWQpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5z
cGxpdGxpbmVzKCk6Ci0gICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkluZGV4OiIpIG9yIGxpbmUu
c3RhcnRzd2l0aCgiUHJvcGVydHkgY2hhbmdlcyBvbjoiKToKLSAgICAgICAgY291bnQgKz0gMQot
ICAgICAgICBsb2dnaW5nLmluZm8obGluZSkKLSAgICBpZiBub3QgY291bnQ6Ci0gICAgICBFcnJv
ckV4aXQoIk5vIHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0IGZyb20gc3ZuIGRpZmYiKQot
ICAgIHJldHVybiBkYXRhCi0KLSAgZGVmIF9Db2xsYXBzZUtleXdvcmRzKHNlbGYsIGNvbnRlbnQs
IGtleXdvcmRfc3RyKToKLSAgICAiIiJDb2xsYXBzZXMgU1ZOIGtleXdvcmRzLiIiIgotICAgICMg
c3ZuIGNhdCB0cmFuc2xhdGVzIGtleXdvcmRzIGJ1dCBzdm4gZGlmZiBkb2Vzbid0LiBBcyBhIHJl
c3VsdCBvZiB0aGlzCi0gICAgIyBiZWhhdmlvciBwYXRjaGluZy5QYXRjaENodW5rcygpIGZhaWxz
IHdpdGggYSBjaHVuayBtaXNtYXRjaCBlcnJvci4KLSAgICAjIFRoaXMgcGFydCB3YXMgb3JpZ2lu
YWxseSB3cml0dGVuIGJ5IHRoZSBSZXZpZXcgQm9hcmQgZGV2ZWxvcG1lbnQgdGVhbQotICAgICMg
d2hvIGhhZCB0aGUgc2FtZSBwcm9ibGVtIChodHRwOi8vcmV2aWV3cy5yZXZpZXctYm9hcmQub3Jn
L3IvMjc2LykuCi0gICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtub3duIGFsaWFzZXMKLSAg
ICBzdm5fa2V5d29yZHMgPSB7Ci0gICAgICAjIFN0YW5kYXJkIGtleXdvcmRzCi0gICAgICAnRGF0
ZSc6ICAgICAgICAgICAgICAgIFsnRGF0ZScsICdMYXN0Q2hhbmdlZERhdGUnXSwKLSAgICAgICdS
ZXZpc2lvbic6ICAgICAgICAgICAgWydSZXZpc2lvbicsICdMYXN0Q2hhbmdlZFJldmlzaW9uJywg
J1JldiddLAotICAgICAgJ0F1dGhvcic6ICAgICAgICAgICAgICBbJ0F1dGhvcicsICdMYXN0Q2hh
bmdlZEJ5J10sCi0gICAgICAnSGVhZFVSTCc6ICAgICAgICAgICAgIFsnSGVhZFVSTCcsICdVUkwn
XSwKLSAgICAgICdJZCc6ICAgICAgICAgICAgICAgICAgWydJZCddLAotCi0gICAgICAjIEFsaWFz
ZXMKLSAgICAgICdMYXN0Q2hhbmdlZERhdGUnOiAgICAgWydMYXN0Q2hhbmdlZERhdGUnLCAnRGF0
ZSddLAotICAgICAgJ0xhc3RDaGFuZ2VkUmV2aXNpb24nOiBbJ0xhc3RDaGFuZ2VkUmV2aXNpb24n
LCAnUmV2JywgJ1JldmlzaW9uJ10sCi0gICAgICAnTGFzdENoYW5nZWRCeSc6ICAgICAgIFsnTGFz
dENoYW5nZWRCeScsICdBdXRob3InXSwKLSAgICAgICdVUkwnOiAgICAgICAgICAgICAgICAgWydV
UkwnLCAnSGVhZFVSTCddLAotICAgIH0KLQotICAgIGRlZiByZXBsKG0pOgotICAgICAgIGlmIG0u
Z3JvdXAoMik6Ci0gICAgICAgICByZXR1cm4gIiQlczo6JXMkIiAlIChtLmdyb3VwKDEpLCAiICIg
KiBsZW4obS5ncm91cCgzKSkpCi0gICAgICAgcmV0dXJuICIkJXMkIiAlIG0uZ3JvdXAoMSkKLSAg
ICBrZXl3b3JkcyA9IFtrZXl3b3JkCi0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4ga2V5d29y
ZF9zdHIuc3BsaXQoIiAiKQotICAgICAgICAgICAgICAgIGZvciBrZXl3b3JkIGluIHN2bl9rZXl3
b3Jkcy5nZXQobmFtZSwgW10pXQotICAgIHJldHVybiByZS5zdWIociJcJCglcyk6KDo/KShbXlwk
XSspXCQiICUgJ3wnLmpvaW4oa2V5d29yZHMpLCByZXBsLCBjb250ZW50KQotCi0gIGRlZiBHZXRV
bmtub3duRmlsZXMoc2VsZik6Ci0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJzdm4iLCAic3RhdHVz
IiwgIi0taWdub3JlLWV4dGVybmFscyJdLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICB1bmtub3duX2Zp
bGVzID0gW10KLSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXQoIlxuIik6Ci0gICAgICBpZiBs
aW5lIGFuZCBsaW5lWzBdID09ICI/IjoKLSAgICAgICAgdW5rbm93bl9maWxlcy5hcHBlbmQobGlu
ZSkKLSAgICByZXR1cm4gdW5rbm93bl9maWxlcwotCi0gIGRlZiBSZWFkRmlsZShzZWxmLCBmaWxl
bmFtZSk6Ci0gICAgIiIiUmV0dXJucyB0aGUgY29udGVudHMgb2YgYSBmaWxlLiIiIgotICAgIGZp
bGUgPSBvcGVuKGZpbGVuYW1lLCAncmInKQotICAgIHJlc3VsdCA9ICIiCi0gICAgdHJ5OgotICAg
ICAgcmVzdWx0ID0gZmlsZS5yZWFkKCkKLSAgICBmaW5hbGx5OgotICAgICAgZmlsZS5jbG9zZSgp
Ci0gICAgcmV0dXJuIHJlc3VsdAotCi0gIGRlZiBHZXRTdGF0dXMoc2VsZiwgZmlsZW5hbWUpOgot
ICAgICIiIlJldHVybnMgdGhlIHN0YXR1cyBvZiBhIGZpbGUuIiIiCi0gICAgaWYgbm90IHNlbGYu
b3B0aW9ucy5yZXZpc2lvbjoKLSAgICAgIHN0YXR1cyA9IFJ1blNoZWxsKFsic3ZuIiwgInN0YXR1
cyIsICItLWlnbm9yZS1leHRlcm5hbHMiLCBmaWxlbmFtZV0pCi0gICAgICBpZiBub3Qgc3RhdHVz
OgotICAgICAgICBFcnJvckV4aXQoInN2biBzdGF0dXMgcmV0dXJuZWQgbm8gb3V0cHV0IGZvciAl
cyIgJSBmaWxlbmFtZSkKLSAgICAgIHN0YXR1c19saW5lcyA9IHN0YXR1cy5zcGxpdGxpbmVzKCkK
LSAgICAgICMgSWYgZmlsZSBpcyBpbiBhIGNsLCB0aGUgb3V0cHV0IHdpbGwgYmVnaW4gd2l0aAot
ICAgICAgIyAiXG4tLS0gQ2hhbmdlbGlzdCAnY2xfbmFtZSc6XG4iLiAgU2VlCi0gICAgICAjIGh0
dHA6Ly9zdm4uY29sbGFiLm5ldC9yZXBvcy9zdm4vdHJ1bmsvbm90ZXMvY2hhbmdlbGlzdC1kZXNp
Z24udHh0Ci0gICAgICBpZiAobGVuKHN0YXR1c19saW5lcykgPT0gMyBhbmQKLSAgICAgICAgICBu
b3Qgc3RhdHVzX2xpbmVzWzBdIGFuZAotICAgICAgICAgIHN0YXR1c19saW5lc1sxXS5zdGFydHN3
aXRoKCItLS0gQ2hhbmdlbGlzdCIpKToKLSAgICAgICAgc3RhdHVzID0gc3RhdHVzX2xpbmVzWzJd
Ci0gICAgICBlbHNlOgotICAgICAgICBzdGF0dXMgPSBzdGF0dXNfbGluZXNbMF0KLSAgICAjIElm
IHdlIGhhdmUgYSByZXZpc2lvbiB0byBkaWZmIGFnYWluc3Qgd2UgbmVlZCB0byBydW4gInN2biBs
aXN0IgotICAgICMgZm9yIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmV2aXNpb24gYW5kIGNvbXBhcmUg
dGhlIHJlc3VsdHMgdG8gZ2V0Ci0gICAgIyB0aGUgY29ycmVjdCBzdGF0dXMgZm9yIGEgZmlsZS4K
LSAgICBlbHNlOgotICAgICAgZGlybmFtZSwgcmVsZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZp
bGVuYW1lKQotICAgICAgaWYgZGlybmFtZSBub3QgaW4gc2VsZi5zdm5sc19jYWNoZToKLSAgICAg
ICAgY21kID0gWyJzdm4iLCAibGlzdCIsICItciIsIHNlbGYucmV2X3N0YXJ0LCBkaXJuYW1lIG9y
ICIuIl0KLSAgICAgICAgb3V0LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShj
bWQpCi0gICAgICAgIGlmIHJldHVybmNvZGU6Ci0gICAgICAgICAgRXJyb3JFeGl0KCJGYWlsZWQg
dG8gZ2V0IHN0YXR1cyBmb3IgJXMuIiAlIGZpbGVuYW1lKQotICAgICAgICBvbGRfZmlsZXMgPSBv
dXQuc3BsaXRsaW5lcygpCi0gICAgICAgIGFyZ3MgPSBbInN2biIsICJsaXN0Il0KLSAgICAgICAg
aWYgc2VsZi5yZXZfZW5kOgotICAgICAgICAgIGFyZ3MgKz0gWyItciIsIHNlbGYucmV2X2VuZF0K
LSAgICAgICAgY21kID0gYXJncyArIFtkaXJuYW1lIG9yICIuIl0KLSAgICAgICAgb3V0LCByZXR1
cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAgICAgIGlmIHJldHVybmNv
ZGU6Ci0gICAgICAgICAgRXJyb3JFeGl0KCJGYWlsZWQgdG8gcnVuIGNvbW1hbmQgJXMiICUgY21k
KQotICAgICAgICBzZWxmLnN2bmxzX2NhY2hlW2Rpcm5hbWVdID0gKG9sZF9maWxlcywgb3V0LnNw
bGl0bGluZXMoKSkKLSAgICAgIG9sZF9maWxlcywgbmV3X2ZpbGVzID0gc2VsZi5zdm5sc19jYWNo
ZVtkaXJuYW1lXQotICAgICAgaWYgcmVsZmlsZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxl
bmFtZSBub3QgaW4gbmV3X2ZpbGVzOgotICAgICAgICBzdGF0dXMgPSAiRCAgICIKLSAgICAgIGVs
aWYgcmVsZmlsZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxlbmFtZSBpbiBuZXdfZmlsZXM6
Ci0gICAgICAgIHN0YXR1cyA9ICJNICAgIgotICAgICAgZWxzZToKLSAgICAgICAgc3RhdHVzID0g
IkEgICAiCi0gICAgcmV0dXJuIHN0YXR1cwotCi0gIGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxl
bmFtZSk6Ci0gICAgc3RhdHVzID0gc2VsZi5HZXRTdGF0dXMoZmlsZW5hbWUpCi0gICAgYmFzZV9j
b250ZW50ID0gTm9uZQotICAgIG5ld19jb250ZW50ID0gTm9uZQotCi0gICAgIyBJZiBhIGZpbGUg
aXMgY29waWVkIGl0cyBzdGF0dXMgd2lsbCBiZSAiQSAgKyIsIHdoaWNoIHNpZ25pZmllcwotICAg
ICMgImFkZGl0aW9uLXdpdGgtaGlzdG9yeSIuICBTZWUgInN2biBzdCIgZm9yIG1vcmUgaW5mb3Jt
YXRpb24uICBXZSBuZWVkIHRvCi0gICAgIyB1cGxvYWQgdGhlIG9yaWdpbmFsIGZpbGUgb3IgZWxz
ZSBkaWZmIHBhcnNpbmcgd2lsbCBmYWlsIGlmIHRoZSBmaWxlIHdhcwotICAgICMgZWRpdGVkLgot
ICAgIGlmIHN0YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSAhPSAiKyI6Ci0gICAgICAjIFdl
J2xsIG5lZWQgdG8gdXBsb2FkIHRoZSBuZXcgY29udGVudCBpZiB3ZSdyZSBhZGRpbmcgYSBiaW5h
cnkgZmlsZQotICAgICAgIyBzaW5jZSBkaWZmJ3Mgb3V0cHV0IHdvbid0IGNvbnRhaW4gaXQuCi0g
ICAgICBtaW1ldHlwZSA9IFJ1blNoZWxsKFsic3ZuIiwgInByb3BnZXQiLCAic3ZuOm1pbWUtdHlw
ZSIsIGZpbGVuYW1lXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUp
Ci0gICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5k
IG5vdCBtaW1ldHlwZS5zdGFydHN3aXRoKCJ0ZXh0LyIpCi0gICAgICBpZiBpc19iaW5hcnkgYW5k
IHNlbGYuSXNJbWFnZShmaWxlbmFtZSk6Ci0gICAgICAgIG5ld19jb250ZW50ID0gc2VsZi5SZWFk
RmlsZShmaWxlbmFtZSkKLSAgICBlbGlmIChzdGF0dXNbMF0gaW4gKCJNIiwgIkQiLCAiUiIpIG9y
Ci0gICAgICAgICAgKHN0YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSA9PSAiKyIpIG9yICAj
IENvcGllZCBmaWxlLgotICAgICAgICAgIChzdGF0dXNbMF0gPT0gIiAiIGFuZCBzdGF0dXNbMV0g
PT0gIk0iKSk6ICAjIFByb3BlcnR5IGNoYW5nZS4KLSAgICAgIGFyZ3MgPSBbXQotICAgICAgaWYg
c2VsZi5vcHRpb25zLnJldmlzaW9uOgotICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYu
c3ZuX2Jhc2UsIGZpbGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAgIGVsc2U6Ci0gICAgICAg
ICMgRG9uJ3QgY2hhbmdlIGZpbGVuYW1lLCBpdCdzIG5lZWRlZCBsYXRlci4KLSAgICAgICAgdXJs
ID0gZmlsZW5hbWUKLSAgICAgICAgYXJncyArPSBbIi1yIiwgIkJBU0UiXQotICAgICAgY21kID0g
WyJzdm4iXSArIGFyZ3MgKyBbInByb3BnZXQiLCAic3ZuOm1pbWUtdHlwZSIsIHVybF0KLSAgICAg
IG1pbWV0eXBlLCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAg
ICBpZiByZXR1cm5jb2RlOgotICAgICAgICAjIEZpbGUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJl
cXVlc3RlZCByZXZpc2lvbi4KLSAgICAgICAgIyBSZXNldCBtaW1ldHlwZSwgaXQgY29udGFpbnMg
YW4gZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgbWltZXR5cGUgPSAiIgotICAgICAgZ2V0X2Jhc2Ug
PSBGYWxzZQotICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5kIG5vdCBtaW1ldHlwZS5zdGFy
dHN3aXRoKCJ0ZXh0LyIpCi0gICAgICBpZiBzdGF0dXNbMF0gPT0gIiAiOgotICAgICAgICAjIEVt
cHR5IGJhc2UgY29udGVudCBqdXN0IHRvIGZvcmNlIGFuIHVwbG9hZC4KLSAgICAgICAgYmFzZV9j
b250ZW50ID0gIiIKLSAgICAgIGVsaWYgaXNfYmluYXJ5OgotICAgICAgICBpZiBzZWxmLklzSW1h
Z2UoZmlsZW5hbWUpOgotICAgICAgICAgIGdldF9iYXNlID0gVHJ1ZQotICAgICAgICAgIGlmIHN0
YXR1c1swXSA9PSAiTSI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXZfZW5kOgotICAgICAg
ICAgICAgICBuZXdfY29udGVudCA9IHNlbGYuUmVhZEZpbGUoZmlsZW5hbWUpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2Us
IGZpbGVuYW1lLCBzZWxmLnJldl9lbmQpCi0gICAgICAgICAgICAgIG5ld19jb250ZW50ID0gUnVu
U2hlbGwoWyJzdm4iLCAiY2F0IiwgdXJsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgc2lsZW50X29rPVRydWUpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgYmFzZV9jb250ZW50ID0gIiIKLSAgICAgIGVsc2U6Ci0gICAgICAg
IGdldF9iYXNlID0gVHJ1ZQotCi0gICAgICBpZiBnZXRfYmFzZToKLSAgICAgICAgaWYgaXNfYmlu
YXJ5OgotICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcyA9IEZhbHNlCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0gVHJ1ZQotICAgICAgICBpZiBzZWxmLnJl
dl9zdGFydDoKLSAgICAgICAgICAjICJzdm4gY2F0IC1yIFJFViBkZWxldGVfZmlsZS50eHQiIGRv
ZXNuJ3Qgd29yay4gY2F0IHJlcXVpcmVzCi0gICAgICAgICAgIyB0aGUgZnVsbCBVUkwgd2l0aCAi
QFJFViIgYXBwZW5kZWQgaW5zdGVhZCBvZiB1c2luZyAiLXIiIG9wdGlvbi4KLSAgICAgICAgICB1
cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1lLCBzZWxmLnJldl9zdGFy
dCkKLSAgICAgICAgICBiYXNlX2NvbnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCB1cmxd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz11
bml2ZXJzYWxfbmV3bGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ls
ZW50X29rPVRydWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgYmFzZV9jb250ZW50ID0gUnVu
U2hlbGwoWyJzdm4iLCAiY2F0IiwgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz11bml2ZXJzYWxfbmV3bGluZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCi0gICAgICAgIGlmIG5v
dCBpc19iaW5hcnk6Ci0gICAgICAgICAgYXJncyA9IFtdCi0gICAgICAgICAgaWYgc2VsZi5yZXZf
c3RhcnQ6Ci0gICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZp
bGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJs
ID0gZmlsZW5hbWUKLSAgICAgICAgICAgIGFyZ3MgKz0gWyItciIsICJCQVNFIl0KLSAgICAgICAg
ICBjbWQgPSBbInN2biJdICsgYXJncyArIFsicHJvcGdldCIsICJzdm46a2V5d29yZHMiLCB1cmxd
Ci0gICAgICAgICAga2V5d29yZHMsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2Rl
KGNtZCkKLSAgICAgICAgICBpZiBrZXl3b3JkcyBhbmQgbm90IHJldHVybmNvZGU6Ci0gICAgICAg
ICAgICBiYXNlX2NvbnRlbnQgPSBzZWxmLl9Db2xsYXBzZUtleXdvcmRzKGJhc2VfY29udGVudCwg
a2V5d29yZHMpCi0gICAgZWxzZToKLSAgICAgIFN0YXR1c1VwZGF0ZSgic3ZuIHN0YXR1cyByZXR1
cm5lZCB1bmV4cGVjdGVkIG91dHB1dDogJXMiICUgc3RhdHVzKQotICAgICAgc3lzLmV4aXQoMSkK
LSAgICByZXR1cm4gYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXNb
MDo1XQotCi0KLWNsYXNzIEdpdFZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6Ci0gICIiIkltcGxl
bWVudGF0aW9uIG9mIHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbnRlcmZhY2UgZm9yIEdpdC4i
IiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIoR2l0VkNTLCBz
ZWxmKS5fX2luaXRfXyhvcHRpb25zKQotICAgICMgTWFwIG9mIGZpbGVuYW1lIC0+IGhhc2ggb2Yg
YmFzZSBmaWxlLgotICAgIHNlbGYuYmFzZV9oYXNoZXMgPSB7fQotCi0gIGRlZiBHZW5lcmF0ZURp
ZmYoc2VsZiwgZXh0cmFfYXJncyk6Ci0gICAgIyBUaGlzIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhh
biBzdm4ncyBHZW5lcmF0ZURpZmYgYmVjYXVzZSB3ZSBtdXN0IGNvbnZlcnQKLSAgICAjIHRoZSBk
aWZmIG91dHB1dCB0byBpbmNsdWRlIGFuIHN2bi1zdHlsZSAiSW5kZXg6IiBsaW5lIGFzIHdlbGwg
YXMgcmVjb3JkCi0gICAgIyB0aGUgaGFzaGVzIG9mIHRoZSBiYXNlIGZpbGVzLCBzbyB3ZSBjYW4g
dXBsb2FkIHRoZW0gYWxvbmcgd2l0aCBvdXIgZGlmZi4KLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2
aXNpb246Ci0gICAgICBleHRyYV9hcmdzID0gW3NlbGYub3B0aW9ucy5yZXZpc2lvbl0gKyBleHRy
YV9hcmdzCi0gICAgZ2l0ZGlmZiA9IFJ1blNoZWxsKFsiZ2l0IiwgImRpZmYiLCAiLS1mdWxsLWlu
ZGV4Il0gKyBleHRyYV9hcmdzKQotICAgIHN2bmRpZmYgPSBbXQotICAgIGZpbGVjb3VudCA9IDAK
LSAgICBmaWxlbmFtZSA9IE5vbmUKLSAgICBmb3IgbGluZSBpbiBnaXRkaWZmLnNwbGl0bGluZXMo
KToKLSAgICAgIG1hdGNoID0gcmUubWF0Y2gociJkaWZmIC0tZ2l0IGEvKC4qKSBiLy4qJCIsIGxp
bmUpCi0gICAgICBpZiBtYXRjaDoKLSAgICAgICAgZmlsZWNvdW50ICs9IDEKLSAgICAgICAgZmls
ZW5hbWUgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBzdm5kaWZmLmFwcGVuZCgiSW5kZXg6ICVz
XG4iICUgZmlsZW5hbWUpCi0gICAgICBlbHNlOgotICAgICAgICAjIFRoZSAiaW5kZXgiIGxpbmUg
aW4gYSBnaXQgZGlmZiBsb29rcyBsaWtlIHRoaXMgKGxvbmcgaGFzaGVzIGVsaWRlZCk6Ci0gICAg
ICAgICMgICBpbmRleCA4MmMwZDQ0Li5iMmNlZTNmIDEwMDc1NQotICAgICAgICAjIFdlIHdhbnQg
dG8gc2F2ZSB0aGUgbGVmdCBoYXNoLCBhcyB0aGF0IGlkZW50aWZpZXMgdGhlIGJhc2UgZmlsZS4K
LSAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyImluZGV4IChcdyspXC5cLiIsIGxpbmUpCi0gICAg
ICAgIGlmIG1hdGNoOgotICAgICAgICAgIHNlbGYuYmFzZV9oYXNoZXNbZmlsZW5hbWVdID0gbWF0
Y2guZ3JvdXAoMSkKLSAgICAgIHN2bmRpZmYuYXBwZW5kKGxpbmUgKyAiXG4iKQotICAgIGlmIG5v
dCBmaWxlY291bnQ6Ci0gICAgICBFcnJvckV4aXQoIk5vIHZhbGlkIHBhdGNoZXMgZm91bmQgaW4g
b3V0cHV0IGZyb20gZ2l0IGRpZmYiKQotICAgIHJldHVybiAiIi5qb2luKHN2bmRpZmYpCi0KLSAg
ZGVmIEdldFVua25vd25GaWxlcyhzZWxmKToKLSAgICBzdGF0dXMgPSBSdW5TaGVsbChbImdpdCIs
ICJscy1maWxlcyIsICItLWV4Y2x1ZGUtc3RhbmRhcmQiLCAiLS1vdGhlcnMiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICByZXR1cm4gc3RhdHVzLnNwbGl0bGlu
ZXMoKQotCi0gIGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgaGFzaCA9IHNl
bGYuYmFzZV9oYXNoZXNbZmlsZW5hbWVdCi0gICAgYmFzZV9jb250ZW50ID0gTm9uZQotICAgIG5l
d19jb250ZW50ID0gTm9uZQotICAgIGlzX2JpbmFyeSA9IEZhbHNlCi0gICAgaWYgaGFzaCA9PSAi
MCIgKiA0MDogICMgQWxsLXplcm8gaGFzaCBpbmRpY2F0ZXMgbm8gYmFzZSBmaWxlLgotICAgICAg
c3RhdHVzID0gIkEiCi0gICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgIGVsc2U6Ci0gICAgICBz
dGF0dXMgPSAiTSIKLSAgICAgIGJhc2VfY29udGVudCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0
aFJldHVybkNvZGUoWyJnaXQiLCAic2hvdyIsIGhhc2hdKQotICAgICAgaWYgcmV0dXJuY29kZToK
LSAgICAgICAgRXJyb3JFeGl0KCJHb3QgZXJyb3Igc3RhdHVzIGZyb20gJ2dpdCBzaG93ICVzJyIg
JSBoYXNoKQotICAgIHJldHVybiAoYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5
LCBzdGF0dXMpCi0KLQotY2xhc3MgTWVyY3VyaWFsVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToK
LSAgIiIiSW1wbGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFj
ZSBmb3IgTWVyY3VyaWFsLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCByZXBv
X2Rpcik6Ci0gICAgc3VwZXIoTWVyY3VyaWFsVkNTLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zKQot
ICAgICMgQWJzb2x1dGUgcGF0aCB0byByZXBvc2l0b3J5ICh3ZSBjYW4gYmUgaW4gYSBzdWJkaXIp
Ci0gICAgc2VsZi5yZXBvX2RpciA9IG9zLnBhdGgubm9ybXBhdGgocmVwb19kaXIpCi0gICAgIyBD
b21wdXRlIHRoZSBzdWJkaXIKLSAgICBjd2QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLmdldGN3ZCgp
KQotICAgIGFzc2VydCBjd2Quc3RhcnRzd2l0aChzZWxmLnJlcG9fZGlyKQotICAgIHNlbGYuc3Vi
ZGlyID0gY3dkW2xlbihzZWxmLnJlcG9fZGlyKTpdLmxzdHJpcChyIlwvIikKLSAgICBpZiBzZWxm
Lm9wdGlvbnMucmV2aXNpb246Ci0gICAgICBzZWxmLmJhc2VfcmV2ID0gc2VsZi5vcHRpb25zLnJl
dmlzaW9uCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYmFzZV9yZXYgPSBSdW5TaGVsbChbImhnIiwg
InBhcmVudCIsICItcSJdKS5zcGxpdCgnOicpWzFdLnN0cmlwKCkKLQotICBkZWYgX0dldFJlbFBh
dGgoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIkdldCByZWxhdGl2ZSBwYXRoIG9mIGEgZmlsZSBh
Y2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LAotICAgIGdpdmVuIGl0cyBsb2dpY2Fs
IHBhdGggaW4gdGhlIHJlcG8uIiIiCi0gICAgYXNzZXJ0IGZpbGVuYW1lLnN0YXJ0c3dpdGgoc2Vs
Zi5zdWJkaXIpLCBmaWxlbmFtZQotICAgIHJldHVybiBmaWxlbmFtZVtsZW4oc2VsZi5zdWJkaXIp
Ol0ubHN0cmlwKHIiXC8iKQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgZXh0cmFfYXJncyk6
Ci0gICAgIyBJZiBubyBmaWxlIHNwZWNpZmllZCwgcmVzdHJpY3QgdG8gdGhlIGN1cnJlbnQgc3Vi
ZGlyCi0gICAgZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgWyIuIl0KLSAgICBjbWQgPSBbImhn
IiwgImRpZmYiLCAiLS1naXQiLCAiLXIiLCBzZWxmLmJhc2VfcmV2XSArIGV4dHJhX2FyZ3MKLSAg
ICBkYXRhID0gUnVuU2hlbGwoY21kLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICBzdm5kaWZmID0gW10K
LSAgICBmaWxlY291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCk6Ci0g
ICAgICBtID0gcmUubWF0Y2goImRpZmYgLS1naXQgYS8oXFMrKSBiLyhcUyspIiwgbGluZSkKLSAg
ICAgIGlmIG06Ci0gICAgICAgICMgTW9kaWZ5IGxpbmUgdG8gbWFrZSBpdCBsb29rIGxpa2UgYXMg
aXQgY29tZXMgZnJvbSBzdm4gZGlmZi4KLSAgICAgICAgIyBXaXRoIHRoaXMgbW9kaWZpY2F0aW9u
IG5vIGNoYW5nZXMgb24gdGhlIHNlcnZlciBzaWRlIGFyZSByZXF1aXJlZAotICAgICAgICAjIHRv
IG1ha2UgdXBsb2FkLnB5IHdvcmsgd2l0aCBNZXJjdXJpYWwgcmVwb3MuCi0gICAgICAgICMgTk9U
RTogZm9yIHByb3BlciBoYW5kbGluZyBvZiBtb3ZlZC9jb3BpZWQgZmlsZXMsIHdlIGhhdmUgdG8g
dXNlCi0gICAgICAgICMgdGhlIHNlY29uZCBmaWxlbmFtZS4KLSAgICAgICAgZmlsZW5hbWUgPSBt
Lmdyb3VwKDIpCi0gICAgICAgIHN2bmRpZmYuYXBwZW5kKCJJbmRleDogJXMiICUgZmlsZW5hbWUp
Ci0gICAgICAgIHN2bmRpZmYuYXBwZW5kKCI9IiAqIDY3KQotICAgICAgICBmaWxlY291bnQgKz0g
MQotICAgICAgICBsb2dnaW5nLmluZm8obGluZSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHN2bmRp
ZmYuYXBwZW5kKGxpbmUpCi0gICAgaWYgbm90IGZpbGVjb3VudDoKLSAgICAgIEVycm9yRXhpdCgi
Tm8gdmFsaWQgcGF0Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBoZyBkaWZmIikKLSAgICByZXR1
cm4gIlxuIi5qb2luKHN2bmRpZmYpICsgIlxuIgotCi0gIGRlZiBHZXRVbmtub3duRmlsZXMoc2Vs
Zik6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlcyB1bmtub3duIHRvIHRoZSBWQ1MuIiIi
Ci0gICAgYXJncyA9IFtdCi0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJoZyIsICJzdGF0dXMiLCAi
LS1yZXYiLCBzZWxmLmJhc2VfcmV2LCAiLXUiLCAiLiJdLAotICAgICAgICBzaWxlbnRfb2s9VHJ1
ZSkKLSAgICB1bmtub3duX2ZpbGVzID0gW10KLSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXRs
aW5lcygpOgotICAgICAgc3QsIGZuID0gbGluZS5zcGxpdCgiICIsIDEpCi0gICAgICBpZiBzdCA9
PSAiPyI6Ci0gICAgICAgIHVua25vd25fZmlsZXMuYXBwZW5kKGZuKQotICAgIHJldHVybiB1bmtu
b3duX2ZpbGVzCi0KLSAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAjICJo
ZyBzdGF0dXMiIGFuZCAiaGcgY2F0IiBib3RoIHRha2UgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBj
dXJyZW50IHN1YmRpcgotICAgICMgcmF0aGVyIHRoYW4gdG8gdGhlIHJlcG8gcm9vdCwgYnV0ICJo
ZyBkaWZmIiBoYXMgZ2l2ZW4gdXMgdGhlIGZ1bGwgcGF0aAotICAgICMgdG8gdGhlIHJlcG8gcm9v
dC4KLSAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgIG5ld19jb250ZW50ID0gTm9uZQotICAgIGlz
X2JpbmFyeSA9IEZhbHNlCi0gICAgb2xkcmVscGF0aCA9IHJlbHBhdGggPSBzZWxmLl9HZXRSZWxQ
YXRoKGZpbGVuYW1lKQotICAgICMgImhnIHN0YXR1cyAtQyIgcmV0dXJucyB0d28gbGluZXMgZm9y
IG1vdmVkL2NvcGllZCBmaWxlcywgb25lIG90aGVyd2lzZQotICAgIG91dCA9IFJ1blNoZWxsKFsi
aGciLCAic3RhdHVzIiwgIi1DIiwgIi0tcmV2Iiwgc2VsZi5iYXNlX3JldiwgcmVscGF0aF0pCi0g
ICAgb3V0ID0gb3V0LnNwbGl0bGluZXMoKQotICAgICMgSEFDSzogc3RyaXAgZXJyb3IgbWVzc2Fn
ZSBhYm91dCBtaXNzaW5nIGZpbGUvZGlyZWN0b3J5IGlmIGl0IGlzbid0IGluCi0gICAgIyB0aGUg
d29ya2luZyBjb3B5Ci0gICAgaWYgb3V0WzBdLnN0YXJ0c3dpdGgoJyVzOiAnICUgcmVscGF0aCk6
Ci0gICAgICBvdXQgPSBvdXRbMTpdCi0gICAgaWYgbGVuKG91dCkgPiAxOgotICAgICAgIyBNb3Zl
ZC9jb3BpZWQgPT4gY29uc2lkZXJlZCBhcyBtb2RpZmllZCwgdXNlIG9sZCBmaWxlbmFtZSB0bwot
ICAgICAgIyByZXRyaWV2ZSBiYXNlIGNvbnRlbnRzCi0gICAgICBvbGRyZWxwYXRoID0gb3V0WzFd
LnN0cmlwKCkKLSAgICAgIHN0YXR1cyA9ICJNIgotICAgIGVsc2U6Ci0gICAgICBzdGF0dXMsIF8g
PSBvdXRbMF0uc3BsaXQoJyAnLCAxKQotICAgIGlmIHN0YXR1cyAhPSAiQSI6Ci0gICAgICBiYXNl
X2NvbnRlbnQgPSBSdW5TaGVsbChbImhnIiwgImNhdCIsICItciIsIHNlbGYuYmFzZV9yZXYsIG9s
ZHJlbHBhdGhdLAotICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICAgIGlzX2JpbmFyeSA9ICJc
MCIgaW4gYmFzZV9jb250ZW50ICAjIE1lcmN1cmlhbCdzIGhldXJpc3RpYwotICAgIGlmIHN0YXR1
cyAhPSAiUiI6Ci0gICAgICBuZXdfY29udGVudCA9IG9wZW4ocmVscGF0aCwgInJiIikucmVhZCgp
Ci0gICAgICBpc19iaW5hcnkgPSBpc19iaW5hcnkgb3IgIlwwIiBpbiBuZXdfY29udGVudAotICAg
IGlmIGlzX2JpbmFyeSBhbmQgYmFzZV9jb250ZW50OgotICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRo
b3V0IGNvbnZlcnRpbmcgbmV3bGluZXMKLSAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsi
aGciLCAiY2F0IiwgIi1yIiwgc2VsZi5iYXNlX3Jldiwgb2xkcmVscGF0aF0sCi0gICAgICAgIHNp
bGVudF9vaz1UcnVlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UpCi0gICAgaWYgbm90IGlzX2Jp
bmFyeSBvciBub3Qgc2VsZi5Jc0ltYWdlKHJlbHBhdGgpOgotICAgICAgbmV3X2NvbnRlbnQgPSBO
b25lCi0gICAgcmV0dXJuIGJhc2VfY29udGVudCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3Rh
dHVzCi0KLQotIyBOT1RFOiBUaGUgU3BsaXRQYXRjaCBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGlu
IGVuZ2luZS5weSwga2VlcCB0aGVtIGluIHN5bmMuCi1kZWYgU3BsaXRQYXRjaChkYXRhKToKLSAg
IiIiU3BsaXRzIGEgcGF0Y2ggaW50byBzZXBhcmF0ZSBwaWVjZXMgZm9yIGVhY2ggZmlsZS4KLQot
ICBBcmdzOgotICAgIGRhdGE6IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZiBzdm4g
ZGlmZi4KLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCBvZiAyLXR1cGxlIChmaWxlbmFtZSwgdGV4
dCkgd2hlcmUgdGV4dCBpcyB0aGUgc3ZuIGRpZmYgb3V0cHV0Ci0gICAgICBwZXJ0YWluaW5nIHRv
IGZpbGVuYW1lLgotICAiIiIKLSAgcGF0Y2hlcyA9IFtdCi0gIGZpbGVuYW1lID0gTm9uZQotICBk
aWZmID0gW10KLSAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKFRydWUpOgotICAgIG5ld19m
aWxlbmFtZSA9IE5vbmUKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0luZGV4OicpOgotICAgICAg
dW51c2VkLCBuZXdfZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgIG5ld19maWxl
bmFtZSA9IG5ld19maWxlbmFtZS5zdHJpcCgpCi0gICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1By
b3BlcnR5IGNoYW5nZXMgb246Jyk6Ci0gICAgICB1bnVzZWQsIHRlbXBfZmlsZW5hbWUgPSBsaW5l
LnNwbGl0KCc6JywgMSkKLSAgICAgICMgV2hlbiBhIGZpbGUgaXMgbW9kaWZpZWQsIHBhdGhzIHVz
ZSAnLycgYmV0d2VlbiBkaXJlY3RvcmllcywgaG93ZXZlcgotICAgICAgIyB3aGVuIGEgcHJvcGVy
dHkgaXMgbW9kaWZpZWQgJ1wnIGlzIHVzZWQgb24gV2luZG93cy4gIE1ha2UgdGhlbSB0aGUgc2Ft
ZQotICAgICAgIyBvdGhlcndpc2UgdGhlIGZpbGUgc2hvd3MgdXAgdHdpY2UuCi0gICAgICB0ZW1w
X2ZpbGVuYW1lID0gdGVtcF9maWxlbmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAg
ICAgaWYgdGVtcF9maWxlbmFtZSAhPSBmaWxlbmFtZToKLSAgICAgICAgIyBGaWxlIGhhcyBwcm9w
ZXJ0eSBjaGFuZ2VzIGJ1dCBubyBtb2RpZmljYXRpb25zLCBjcmVhdGUgYSBuZXcgZGlmZi4KLSAg
ICAgICAgbmV3X2ZpbGVuYW1lID0gdGVtcF9maWxlbmFtZQotICAgIGlmIG5ld19maWxlbmFtZToK
LSAgICAgIGlmIGZpbGVuYW1lIGFuZCBkaWZmOgotICAgICAgICBwYXRjaGVzLmFwcGVuZCgoZmls
ZW5hbWUsICcnLmpvaW4oZGlmZikpKQotICAgICAgZmlsZW5hbWUgPSBuZXdfZmlsZW5hbWUKLSAg
ICAgIGRpZmYgPSBbbGluZV0KLSAgICAgIGNvbnRpbnVlCi0gICAgaWYgZGlmZiBpcyBub3QgTm9u
ZToKLSAgICAgIGRpZmYuYXBwZW5kKGxpbmUpCi0gIGlmIGZpbGVuYW1lIGFuZCBkaWZmOgotICAg
IHBhdGNoZXMuYXBwZW5kKChmaWxlbmFtZSwgJycuam9pbihkaWZmKSkpCi0gIHJldHVybiBwYXRj
aGVzCi0KLQotZGVmIFVwbG9hZFNlcGFyYXRlUGF0Y2hlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0
Y2hzZXQsIGRhdGEsIG9wdGlvbnMpOgotICAiIiJVcGxvYWRzIGEgc2VwYXJhdGUgcGF0Y2ggZm9y
IGVhY2ggZmlsZSBpbiB0aGUgZGlmZiBvdXRwdXQuCi0KLSAgUmV0dXJucyBhIGxpc3Qgb2YgW3Bh
dGNoX2tleSwgZmlsZW5hbWVdIGZvciBlYWNoIGZpbGUuCi0gICIiIgotICBwYXRjaGVzID0gU3Bs
aXRQYXRjaChkYXRhKQotICBydiA9IFtdCi0gIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgIGlm
IGxlbihwYXRjaFsxXSkgPiBNQVhfVVBMT0FEX1NJWkU6Ci0gICAgICBwcmludCAoIk5vdCB1cGxv
YWRpbmcgdGhlIHBhdGNoIGZvciAiICsgcGF0Y2hbMF0gKwotICAgICAgICAgICAgICIgYmVjYXVz
ZSB0aGUgZmlsZSBpcyB0b28gbGFyZ2UuIikKLSAgICAgIGNvbnRpbnVlCi0gICAgZm9ybV9maWVs
ZHMgPSBbKCJmaWxlbmFtZSIsIHBhdGNoWzBdKV0KLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9h
ZF9iYXNlOgotICAgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiY29udGVudF91cGxvYWQiLCAiMSIp
KQotICAgIGZpbGVzID0gWygiZGF0YSIsICJkYXRhLmRpZmYiLCBwYXRjaFsxXSldCi0gICAgY3R5
cGUsIGJvZHkgPSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3JtX2ZpZWxkcywgZmlsZXMpCi0g
ICAgdXJsID0gIi8lZC91cGxvYWRfcGF0Y2gvJWQiICUgKGludChpc3N1ZSksIGludChwYXRjaHNl
dCkpCi0gICAgcHJpbnQgIlVwbG9hZGluZyBwYXRjaCBmb3IgIiArIHBhdGNoWzBdCi0gICAgcmVz
cG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksIGNvbnRlbnRfdHlwZT1jdHlw
ZSkKLSAgICBsaW5lcyA9IHJlc3BvbnNlX2JvZHkuc3BsaXRsaW5lcygpCi0gICAgaWYgbm90IGxp
bmVzIG9yIGxpbmVzWzBdICE9ICJPSyI6Ci0gICAgICBTdGF0dXNVcGRhdGUoIiAgLS0+ICVzIiAl
IHJlc3BvbnNlX2JvZHkpCi0gICAgICBzeXMuZXhpdCgxKQotICAgIHJ2LmFwcGVuZChbbGluZXNb
MV0sIHBhdGNoWzBdXSkKLSAgcmV0dXJuIHJ2Ci0KLQotZGVmIEd1ZXNzVkNTKG9wdGlvbnMpOgot
ICAiIiJIZWxwZXIgdG8gZ3Vlc3MgdGhlIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uCi0KLSAgVGhp
cyBleGFtaW5lcyB0aGUgY3VycmVudCBkaXJlY3RvcnksIGd1ZXNzZXMgd2hpY2ggVmVyc2lvbkNv
bnRyb2xTeXN0ZW0KLSAgd2UncmUgdXNpbmcsIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRo
ZSBhcHByb3ByaWF0ZSBjbGFzcy4gIEV4aXQgd2l0aCBhbgotICBlcnJvciBpZiB3ZSBjYW4ndCBm
aWd1cmUgaXQgb3V0LgotCi0gIFJldHVybnM6Ci0gICAgQSBWZXJzaW9uQ29udHJvbFN5c3RlbSBp
bnN0YW5jZS4gRXhpdHMgaWYgdGhlIFZDUyBjYW4ndCBiZSBndWVzc2VkLgotICAiIiIKLSAgIyBN
ZXJjdXJpYWwgaGFzIGEgY29tbWFuZCB0byBnZXQgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIGEgcmVw
b3NpdG9yeQotICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhh
dmUgaGcgaW5zdGFsbGVkLgotICAjIE5PVEU6IHdlIHRyeSBNZXJjdXJpYWwgZmlyc3QgYXMgaXQg
Y2FuIHNpdCBvbiB0b3Agb2YgYW4gU1ZOIHdvcmtpbmcgY29weS4KLSAgdHJ5OgotICAgIG91dCwg
cmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVybkNvZGUoWyJoZyIsICJyb290Il0pCi0gICAg
aWYgcmV0dXJuY29kZSA9PSAwOgotICAgICAgcmV0dXJuIE1lcmN1cmlhbFZDUyhvcHRpb25zLCBv
dXQuc3RyaXAoKSkKLSAgZXhjZXB0IE9TRXJyb3IsIChlcnJubywgbWVzc2FnZSk6Ci0gICAgaWYg
ZXJybm8gIT0gMjogICMgRU5PRU5UIC0tIHRoZXkgZG9uJ3QgaGF2ZSBoZyBpbnN0YWxsZWQuCi0g
ICAgICByYWlzZQotCi0gICMgU3VidmVyc2lvbiBoYXMgYSAuc3ZuIGluIGFsbCB3b3JraW5nIGRp
cmVjdG9yaWVzLgotICBpZiBvcy5wYXRoLmlzZGlyKCcuc3ZuJyk6Ci0gICAgbG9nZ2luZy5pbmZv
KCJHdWVzc2VkIFZDUyA9IFN1YnZlcnNpb24iKQotICAgIHJldHVybiBTdWJ2ZXJzaW9uVkNTKG9w
dGlvbnMpCi0KLSAgIyBHaXQgaGFzIGEgY29tbWFuZCB0byB0ZXN0IGlmIHlvdSdyZSBpbiBhIGdp
dCB0cmVlLgotICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhh
dmUgZ2l0IGluc3RhbGxlZC4KLSAgdHJ5OgotICAgIG91dCwgcmV0dXJuY29kZSA9IFJ1blNoZWxs
V2l0aFJldHVybkNvZGUoWyJnaXQiLCAicmV2LXBhcnNlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pcy1pbnNpZGUtd29yay10cmVlIl0pCi0gICAg
aWYgcmV0dXJuY29kZSA9PSAwOgotICAgICAgcmV0dXJuIEdpdFZDUyhvcHRpb25zKQotICBleGNl
cHQgT1NFcnJvciwgKGVycm5vLCBtZXNzYWdlKToKLSAgICBpZiBlcnJubyAhPSAyOiAgIyBFTk9F
TlQgLS0gdGhleSBkb24ndCBoYXZlIGdpdCBpbnN0YWxsZWQuCi0gICAgICByYWlzZQotCi0gIEVy
cm9yRXhpdCgoIkNvdWxkIG5vdCBndWVzcyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLiAiCi0gICAg
ICAgICAgICAgIkFyZSB5b3UgaW4gYSB3b3JraW5nIGNvcHkgZGlyZWN0b3J5PyIpKQotCi0KLWRl
ZiBSZWFsTWFpbihhcmd2LCBkYXRhPU5vbmUpOgotICAiIiJUaGUgcmVhbCBtYWluIGZ1bmN0aW9u
LgotCi0gIEFyZ3M6Ci0gICAgYXJndjogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICBkYXRh
OiBEaWZmIGNvbnRlbnRzLiBJZiBOb25lIChkZWZhdWx0KSB0aGUgZGlmZiBpcyBnZW5lcmF0ZWQg
YnkKLSAgICAgIHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXR1cm5l
ZCBieSBHdWVzc1ZDUygpLgotCi0gIFJldHVybnM6Ci0gICAgQSAyLXR1cGxlIChpc3N1ZSBpZCwg
cGF0Y2hzZXQgaWQpLgotICAgIFRoZSBwYXRjaHNldCBpZCBpcyBOb25lIGlmIHRoZSBiYXNlIGZp
bGVzIGFyZSBub3QgdXBsb2FkZWQgYnkgdGhpcwotICAgIHNjcmlwdCAoYXBwbGllcyBvbmx5IHRv
IFNWTiBjaGVja291dHMpLgotICAiIiIKLSAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9KCIl
KGFzY3RpbWUpLjE5cyAlKGxldmVsbmFtZSlzICUoZmlsZW5hbWUpczoiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiJShsaW5lbm8pcyAlKG1lc3NhZ2UpcyAiKSkKLSAgb3MuZW52aXJv
blsnTENfQUxMJ10gPSAnQycKLSAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFy
Z3ZbMTpdKQotICBnbG9iYWwgdmVyYm9zaXR5Ci0gIHZlcmJvc2l0eSA9IG9wdGlvbnMudmVyYm9z
ZQotICBpZiB2ZXJib3NpdHkgPj0gMzoKLSAgICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVs
KGxvZ2dpbmcuREVCVUcpCi0gIGVsaWYgdmVyYm9zaXR5ID49IDI6Ci0gICAgbG9nZ2luZy5nZXRM
b2dnZXIoKS5zZXRMZXZlbChsb2dnaW5nLklORk8pCi0gIHZjcyA9IEd1ZXNzVkNTKG9wdGlvbnMp
Ci0gIGlmIGlzaW5zdGFuY2UodmNzLCBTdWJ2ZXJzaW9uVkNTKToKLSAgICAjIGJhc2UgZmllbGQg
aXMgb25seSBhbGxvd2VkIGZvciBTdWJ2ZXJzaW9uLgotICAgICMgTm90ZTogRmV0Y2hpbmcgYmFz
ZSBmaWxlcyBtYXkgYmVjb21lIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgotICAgIGJh
c2UgPSB2Y3MuR3Vlc3NCYXNlKG9wdGlvbnMuZG93bmxvYWRfYmFzZSkKLSAgZWxzZToKLSAgICBi
YXNlID0gTm9uZQotICBpZiBub3QgYmFzZSBhbmQgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAg
IG9wdGlvbnMuZG93bmxvYWRfYmFzZSA9IFRydWUKLSAgICBsb2dnaW5nLmluZm8oIkVuYWJsZWQg
dXBsb2FkIG9mIGJhc2UgZmlsZSIpCi0gIGlmIG5vdCBvcHRpb25zLmFzc3VtZV95ZXM6Ci0gICAg
dmNzLkNoZWNrRm9yVW5rbm93bkZpbGVzKCkKLSAgaWYgZGF0YSBpcyBOb25lOgotICAgIGRhdGEg
PSB2Y3MuR2VuZXJhdGVEaWZmKGFyZ3MpCi0gIGZpbGVzID0gdmNzLkdldEJhc2VGaWxlcyhkYXRh
KQotICBpZiB2ZXJib3NpdHkgPj0gMToKLSAgICBwcmludCAiVXBsb2FkIHNlcnZlcjoiLCBvcHRp
b25zLnNlcnZlciwgIihjaGFuZ2Ugd2l0aCAtcy8tLXNlcnZlcikiCi0gIGlmIG9wdGlvbnMuaXNz
dWU6Ci0gICAgcHJvbXB0ID0gIk1lc3NhZ2UgZGVzY3JpYmluZyB0aGlzIHBhdGNoIHNldDogIgot
ICBlbHNlOgotICAgIHByb21wdCA9ICJOZXcgaXNzdWUgc3ViamVjdDogIgotICBtZXNzYWdlID0g
b3B0aW9ucy5tZXNzYWdlIG9yIHJhd19pbnB1dChwcm9tcHQpLnN0cmlwKCkKLSAgaWYgbm90IG1l
c3NhZ2U6Ci0gICAgRXJyb3JFeGl0KCJBIG5vbi1lbXB0eSBtZXNzYWdlIGlzIHJlcXVpcmVkIikK
LSAgcnBjX3NlcnZlciA9IEdldFJwY1NlcnZlcihvcHRpb25zKQotICBmb3JtX2ZpZWxkcyA9IFso
InN1YmplY3QiLCBtZXNzYWdlKV0KLSAgaWYgYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQo
KCJiYXNlIiwgYmFzZSkpCi0gIGlmIG9wdGlvbnMuaXNzdWU6Ci0gICAgZm9ybV9maWVsZHMuYXBw
ZW5kKCgiaXNzdWUiLCBzdHIob3B0aW9ucy5pc3N1ZSkpKQotICBpZiBvcHRpb25zLmVtYWlsOgot
ICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgaWYgb3B0
aW9ucy5yZXZpZXdlcnM6Ci0gICAgZm9yIHJldmlld2VyIGluIG9wdGlvbnMucmV2aWV3ZXJzLnNw
bGl0KCcsJyk6Ci0gICAgICBpZiAiQCIgaW4gcmV2aWV3ZXIgYW5kIG5vdCByZXZpZXdlci5zcGxp
dCgiQCIpWzFdLmNvdW50KCIuIikgPT0gMToKLSAgICAgICAgRXJyb3JFeGl0KCJJbnZhbGlkIGVt
YWlsIGFkZHJlc3M6ICVzIiAlIHJldmlld2VyKQotICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoInJl
dmlld2VycyIsIG9wdGlvbnMucmV2aWV3ZXJzKSkKLSAgaWYgb3B0aW9ucy5jYzoKLSAgICBmb3Ig
Y2MgaW4gb3B0aW9ucy5jYy5zcGxpdCgnLCcpOgotICAgICAgaWYgIkAiIGluIGNjIGFuZCBub3Qg
Y2Muc3BsaXQoIkAiKVsxXS5jb3VudCgiLiIpID09IDE6Ci0gICAgICAgIEVycm9yRXhpdCgiSW52
YWxpZCBlbWFpbCBhZGRyZXNzOiAlcyIgJSBjYykKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJj
YyIsIG9wdGlvbnMuY2MpKQotICBkZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb24KLSAg
aWYgb3B0aW9ucy5kZXNjcmlwdGlvbl9maWxlOgotICAgIGlmIG9wdGlvbnMuZGVzY3JpcHRpb246
Ci0gICAgICBFcnJvckV4aXQoIkNhbid0IHNwZWNpZnkgZGVzY3JpcHRpb24gYW5kIGRlc2NyaXB0
aW9uX2ZpbGUiKQotICAgIGZpbGUgPSBvcGVuKG9wdGlvbnMuZGVzY3JpcHRpb25fZmlsZSwgJ3In
KQotICAgIGRlc2NyaXB0aW9uID0gZmlsZS5yZWFkKCkKLSAgICBmaWxlLmNsb3NlKCkKLSAgaWYg
ZGVzY3JpcHRpb246Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiZGVzY3JpcHRpb24iLCBkZXNj
cmlwdGlvbikpCi0gICMgU2VuZCBhIGhhc2ggb2YgYWxsIHRoZSBiYXNlIGZpbGUgc28gdGhlIHNl
cnZlciBjYW4gZGV0ZXJtaW5lIGlmIGEgY29weQotICAjIGFscmVhZHkgZXhpc3RzIGluIGFuIGVh
cmxpZXIgcGF0Y2hzZXQuCi0gIGJhc2VfaGFzaGVzID0gIiIKLSAgZm9yIGZpbGUsIGluZm8gaW4g
ZmlsZXMuaXRlcml0ZW1zKCk6Ci0gICAgaWYgbm90IGluZm9bMF0gaXMgTm9uZToKLSAgICAgIGNo
ZWNrc3VtID0gbWQ1Lm5ldyhpbmZvWzBdKS5oZXhkaWdlc3QoKQotICAgICAgaWYgYmFzZV9oYXNo
ZXM6Ci0gICAgICAgIGJhc2VfaGFzaGVzICs9ICJ8IgotICAgICAgYmFzZV9oYXNoZXMgKz0gY2hl
Y2tzdW0gKyAiOiIgKyBmaWxlCi0gIGZvcm1fZmllbGRzLmFwcGVuZCgoImJhc2VfaGFzaGVzIiwg
YmFzZV9oYXNoZXMpKQotICAjIElmIHdlJ3JlIHVwbG9hZGluZyBiYXNlIGZpbGVzLCBkb24ndCBz
ZW5kIHRoZSBlbWFpbCBiZWZvcmUgdGhlIHVwbG9hZHMsIHNvCi0gICMgdGhhdCBpdCBjb250YWlu
cyB0aGUgZmlsZSBzdGF0dXMuCi0gIGlmIG9wdGlvbnMuc2VuZF9tYWlsIGFuZCBvcHRpb25zLmRv
d25sb2FkX2Jhc2U6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgic2VuZF9tYWlsIiwgIjEiKSkK
LSAgaWYgbm90IG9wdGlvbnMuZG93bmxvYWRfYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQo
KCJjb250ZW50X3VwbG9hZCIsICIxIikpCi0gIGlmIGxlbihkYXRhKSA+IE1BWF9VUExPQURfU0la
RToKLSAgICBwcmludCAiUGF0Y2ggaXMgbGFyZ2UsIHNvIHVwbG9hZGluZyBmaWxlIHBhdGNoZXMg
c2VwYXJhdGVseS4iCi0gICAgdXBsb2FkZWRfZGlmZl9maWxlID0gW10KLSAgICBmb3JtX2ZpZWxk
cy5hcHBlbmQoKCJzZXBhcmF0ZV9wYXRjaGVzIiwgIjEiKSkKLSAgZWxzZToKLSAgICB1cGxvYWRl
ZF9kaWZmX2ZpbGUgPSBbKCJkYXRhIiwgImRhdGEuZGlmZiIsIGRhdGEpXQotICBjdHlwZSwgYm9k
eSA9IEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZvcm1fZmllbGRzLCB1cGxvYWRlZF9kaWZmX2Zp
bGUpCi0gIHJlc3BvbnNlX2JvZHkgPSBycGNfc2VydmVyLlNlbmQoIi91cGxvYWQiLCBib2R5LCBj
b250ZW50X3R5cGU9Y3R5cGUpCi0gIHBhdGNoc2V0ID0gTm9uZQotICBpZiBub3Qgb3B0aW9ucy5k
b3dubG9hZF9iYXNlIG9yIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgbGluZXMgPSByZXNw
b25zZV9ib2R5LnNwbGl0bGluZXMoKQotICAgIGlmIGxlbihsaW5lcykgPj0gMjoKLSAgICAgIG1z
ZyA9IGxpbmVzWzBdCi0gICAgICBwYXRjaHNldCA9IGxpbmVzWzFdLnN0cmlwKCkKLSAgICAgIHBh
dGNoZXMgPSBbeC5zcGxpdCgiICIsIDEpIGZvciB4IGluIGxpbmVzWzI6XV0KLSAgICBlbHNlOgot
ICAgICAgbXNnID0gcmVzcG9uc2VfYm9keQotICBlbHNlOgotICAgIG1zZyA9IHJlc3BvbnNlX2Jv
ZHkKLSAgU3RhdHVzVXBkYXRlKG1zZykKLSAgaWYgbm90IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0
aCgiSXNzdWUgY3JlYXRlZC4iKSBhbmQgXAotICBub3QgcmVzcG9uc2VfYm9keS5zdGFydHN3aXRo
KCJJc3N1ZSB1cGRhdGVkLiIpOgotICAgIHN5cy5leGl0KDApCi0gIGlzc3VlID0gbXNnW21zZy5y
ZmluZCgiLyIpKzE6XQotCi0gIGlmIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgcmVzdWx0
ID0gVXBsb2FkU2VwYXJhdGVQYXRjaGVzKGlzc3VlLCBycGNfc2VydmVyLCBwYXRjaHNldCwgZGF0
YSwgb3B0aW9ucykKLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgICAgcGF0
Y2hlcyA9IHJlc3VsdAotCi0gIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2U6Ci0gICAgdmNz
LlVwbG9hZEJhc2VGaWxlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hlcywgcGF0Y2hzZXQsIG9w
dGlvbnMsIGZpbGVzKQotICAgIGlmIG9wdGlvbnMuc2VuZF9tYWlsOgotICAgICAgcnBjX3NlcnZl
ci5TZW5kKCIvIiArIGlzc3VlICsgIi9tYWlsIiwgcGF5bG9hZD0iIikKLSAgcmV0dXJuIGlzc3Vl
LCBwYXRjaHNldAotCi0KLWRlZiBtYWluKCk6Ci0gIHRyeToKLSAgICBSZWFsTWFpbihzeXMuYXJn
dikKLSAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgIHByaW50Ci0gICAgU3RhdHVzVXBk
YXRlKCJJbnRlcnJ1cHRlZC4iKQotICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKLSAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL3Vw
bG9hZF9nbW9jay5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvdXBsb2FkX2dtb2NrLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ZGM0ODRiMzkxMmJjMDNiYzYwZGM5MDVhYjU2ZjJj
MTFmMmI3MzM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL3NjcmlwdHMvdXBsb2FkX2dtb2NrLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NzggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
IiIidXBsb2FkX2dtb2NrLnB5IHYwLjEuMCAtLSB1cGxvYWRzIGEgR29vZ2xlIE1vY2sgcGF0Y2gg
Zm9yIHJldmlldy4KLQotVGhpcyBzaW1wbGUgd3JhcHBlciBwYXNzZXMgYWxsIGNvbW1hbmQgbGlu
ZSBmbGFncyBhbmQKLS0tY2M9Z29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tIHRvIHVwbG9hZC5w
eS4KLQotVVNBR0U6IHVwbG9hZF9nbW9jay5weSBbb3B0aW9ucyBmb3IgdXBsb2FkLnB5XQotIiIi
Ci0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9y
dCBvcwotaW1wb3J0IHN5cwotCi1DQ19GTEFHID0gJy0tY2M9JwotR01PQ0tfR1JPVVAgPSAnZ29v
Z2xlbW9ja0Bnb29nbGVncm91cHMuY29tJwotCi0KLWRlZiBtYWluKCk6Ci0gICMgRmluZHMgdGhl
IHBhdGggdG8gdXBsb2FkLnB5LCBhc3N1bWluZyBpdCBpcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkK
LSAgIyBhcyB0aGlzIGZpbGUuCi0gIG15X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKQotICB1cGxvYWRfcHlfcGF0aCA9IG9zLnBhdGguam9pbihteV9kaXIs
ICd1cGxvYWQucHknKQotCi0gICMgQWRkcyBHb29nbGUgTW9jayBkaXNjdXNzaW9uIGdyb3VwIHRv
IHRoZSBjYyBsaW5lIGlmIGl0J3Mgbm90IHRoZXJlCi0gICMgYWxyZWFkeS4KLSAgdXBsb2FkX3B5
X2FyZ3YgPSBbdXBsb2FkX3B5X3BhdGhdCi0gIGZvdW5kX2NjX2ZsYWcgPSBGYWxzZQotICBmb3Ig
YXJnIGluIHN5cy5hcmd2WzE6XToKLSAgICBpZiBhcmcuc3RhcnRzd2l0aChDQ19GTEFHKToKLSAg
ICAgIGZvdW5kX2NjX2ZsYWcgPSBUcnVlCi0gICAgICBjY19saW5lID0gYXJnW2xlbihDQ19GTEFH
KTpdCi0gICAgICBjY19saXN0ID0gW2FkZHIgZm9yIGFkZHIgaW4gY2NfbGluZS5zcGxpdCgnLCcp
IGlmIGFkZHJdCi0gICAgICBpZiBHTU9DS19HUk9VUCBub3QgaW4gY2NfbGlzdDoKLSAgICAgICAg
Y2NfbGlzdC5hcHBlbmQoR01PQ0tfR1JPVVApCi0gICAgICB1cGxvYWRfcHlfYXJndi5hcHBlbmQo
Q0NfRkxBRyArICcsJy5qb2luKGNjX2xpc3QpKQotICAgIGVsc2U6Ci0gICAgICB1cGxvYWRfcHlf
YXJndi5hcHBlbmQoYXJnKQotCi0gIGlmIG5vdCBmb3VuZF9jY19mbGFnOgotICAgIHVwbG9hZF9w
eV9hcmd2LmFwcGVuZChDQ19GTEFHICsgR01PQ0tfR1JPVVApCi0KLSAgIyBJbnZva2VzIHVwbG9h
ZC5weSB3aXRoIHRoZSBtb2RpZmllZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0gIG9zLmV4ZWN2KHVw
bG9hZF9weV9wYXRoLCB1cGxvYWRfcHlfYXJndikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1hbGwuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stYWxsLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3YWViY2U3YWZlZmNhOGE5YmE1NWNhY2FkYjIyZjZhOWQwNzA4YjdiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9j
ay1hbGwuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
OCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsgKEdv
b2dsZSBNb2NrKQotLy8KLS8vIFRoaXMgZmlsZSAjaW5jbHVkZXMgYWxsIEdvb2dsZSBNb2NrIGlt
cGxlbWVudGF0aW9uIC5jYyBmaWxlcy4gIFRoZQotLy8gcHVycG9zZSBpcyB0byBhbGxvdyBhIHVz
ZXIgdG8gYnVpbGQgR29vZ2xlIE1vY2sgYnkgY29tcGlsaW5nIHRoaXMKLS8vIGZpbGUgYWxvbmUu
Ci0KLS8vIFRoaXMgbGluZSBlbnN1cmVzIHRoYXQgZ21vY2suaCBjYW4gYmUgY29tcGlsZWQgb24g
aXRzIG93biwgZXZlbgotLy8gd2hlbiBpdCdzIGZ1c2VkLgotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCi0KLS8vIFRoZSBmb2xsb3dpbmcgbGluZXMgcHVsbCBpbiB0aGUgcmVhbCBnbW9jayAqLmNj
IGZpbGVzLgotI2luY2x1ZGUgInNyYy9nbW9jay1jYXJkaW5hbGl0aWVzLmNjIgotI2luY2x1ZGUg
InNyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYyIKLSNpbmNsdWRlICJzcmMvZ21vY2stbWF0Y2hl
cnMuY2MiCi0jaW5jbHVkZSAic3JjL2dtb2NrLXNwZWMtYnVpbGRlcnMuY2MiCi0jaW5jbHVkZSAi
c3JjL2dtb2NrLmNjIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLWNhcmRpbmFs
aXRpZXMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stY2FyZGluYWxpdGllcy5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1Yjk2NmU4MDFiZDdjNjdiZjA5NTExZmNhMDU2NzY1
YzQ2YWU5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9zcmMvZ21vY2stY2FyZGluYWxpdGllcy5jYworKysgL2Rldi9udWxsCkBAIC0x
LDE1NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29n
bGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwot
Ly8gVGhpcyBmaWxlIGltcGxlbWVudHMgY2FyZGluYWxpdGllcy4KLQotI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLWNhcmRpbmFsaXRpZXMuaCIKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUg
PG9zdHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmlu
Zz4KLSNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotbmFtZXNwYWNl
IHsKLQotLy8gSW1wbGVtZW50cyB0aGUgQmV0d2VlbihtLCBuKSBjYXJkaW5hbGl0eS4KLWNsYXNz
IEJldHdlZW5DYXJkaW5hbGl0eUltcGwgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRlcmZhY2Ugewot
IHB1YmxpYzoKLSAgQmV0d2VlbkNhcmRpbmFsaXR5SW1wbChpbnQgbWluLCBpbnQgbWF4KQotICAg
ICAgOiBtaW5fKG1pbiA+PSAwID8gbWluIDogMCksCi0gICAgICAgIG1heF8obWF4ID49IG1pbl8g
PyBtYXggOiBtaW5fKSB7Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgaWYgKG1pbiA8
IDApIHsKLSAgICAgIHNzIDw8ICJUaGUgaW52b2NhdGlvbiBsb3dlciBib3VuZCBtdXN0IGJlID49
IDAsICIKLSAgICAgICAgIDw8ICJidXQgaXMgYWN0dWFsbHkgIiA8PCBtaW4gPDwgIi4iOwotICAg
ICAgaW50ZXJuYWw6OkV4cGVjdChmYWxzZSwgX19GSUxFX18sIF9fTElORV9fLCBzcy5zdHIoKSk7
Ci0gICAgfSBlbHNlIGlmIChtYXggPCAwKSB7Ci0gICAgICBzcyA8PCAiVGhlIGludm9jYXRpb24g
dXBwZXIgYm91bmQgbXVzdCBiZSA+PSAwLCAiCi0gICAgICAgICA8PCAiYnV0IGlzIGFjdHVhbGx5
ICIgPDwgbWF4IDw8ICIuIjsKLSAgICAgIGludGVybmFsOjpFeHBlY3QoZmFsc2UsIF9fRklMRV9f
LCBfX0xJTkVfXywgc3Muc3RyKCkpOwotICAgIH0gZWxzZSBpZiAobWluID4gbWF4KSB7Ci0gICAg
ICBzcyA8PCAiVGhlIGludm9jYXRpb24gdXBwZXIgYm91bmQgKCIgPDwgbWF4Ci0gICAgICAgICA8
PCAiKSBtdXN0IGJlID49IHRoZSBpbnZvY2F0aW9uIGxvd2VyIGJvdW5kICgiIDw8IG1pbgotICAg
ICAgICAgPDwgIikuIjsKLSAgICAgIGludGVybmFsOjpFeHBlY3QoZmFsc2UsIF9fRklMRV9fLCBf
X0xJTkVfXywgc3Muc3RyKCkpOwotICAgIH0KLSAgfQotCi0gIC8vIENvbnNlcnZhdGl2ZSBlc3Rp
bWF0ZSBvbiB0aGUgbG93ZXIvdXBwZXIgYm91bmQgb2YgdGhlIG51bWJlciBvZgotICAvLyBjYWxs
cyBhbGxvd2VkLgotICB2aXJ0dWFsIGludCBDb25zZXJ2YXRpdmVMb3dlckJvdW5kKCkgY29uc3Qg
eyByZXR1cm4gbWluXzsgfQotICB2aXJ0dWFsIGludCBDb25zZXJ2YXRpdmVVcHBlckJvdW5kKCkg
Y29uc3QgeyByZXR1cm4gbWF4XzsgfQotCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pbl8gPD0gY2FsbF9j
b3VudCAmJiBjYWxsX2NvdW50IDw9IG1heF87Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgSXNTYXR1
cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiBjYWxs
X2NvdW50ID49IG1heF87Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgaW50IG1pbl87Ci0gIGNv
bnN0IGludCBtYXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQmV0d2Vl
bkNhcmRpbmFsaXR5SW1wbCk7Ci19OwotCi0vLyBGb3JtYXRzICJuIHRpbWVzIiBpbiBhIGh1bWFu
LWZyaWVuZGx5IHdheS4KLWlubGluZSBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lcyhpbnQgbikgewot
ICBpZiAobiA9PSAxKSB7Ci0gICAgcmV0dXJuICJvbmNlIjsKLSAgfSBlbHNlIGlmIChuID09IDIp
IHsKLSAgICByZXR1cm4gInR3aWNlIjsKLSAgfSBlbHNlIHsKLSAgICBzdGQ6OnN0cmluZ3N0cmVh
bSBzczsKLSAgICBzcyA8PCBuIDw8ICIgdGltZXMiOwotICAgIHJldHVybiBzcy5zdHIoKTsKLSAg
fQotfQotCi0vLyBEZXNjcmliZXMgdGhlIEJldHdlZW4obSwgbikgY2FyZGluYWxpdHkgaW4gaHVt
YW4tZnJpZW5kbHkgdGV4dC4KLXZvaWQgQmV0d2VlbkNhcmRpbmFsaXR5SW1wbDo6RGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgaWYgKG1pbl8gPT0gMCkgewotICAgIGlm
IChtYXhfID09IDApIHsKLSAgICAgICpvcyA8PCAibmV2ZXIgY2FsbGVkIjsKLSAgICB9IGVsc2Ug
aWYgKG1heF8gPT0gSU5UX01BWCkgewotICAgICAgKm9zIDw8ICJjYWxsZWQgYW55IG51bWJlciBv
ZiB0aW1lcyI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAiY2FsbGVkIGF0IG1vc3QgIiA8
PCBGb3JtYXRUaW1lcyhtYXhfKTsKLSAgICB9Ci0gIH0gZWxzZSBpZiAobWluXyA9PSBtYXhfKSB7
Ci0gICAgKm9zIDw8ICJjYWxsZWQgIiA8PCBGb3JtYXRUaW1lcyhtaW5fKTsKLSAgfSBlbHNlIGlm
IChtYXhfID09IElOVF9NQVgpIHsKLSAgICAqb3MgPDwgImNhbGxlZCBhdCBsZWFzdCAiIDw8IEZv
cm1hdFRpbWVzKG1pbl8pOwotICB9IGVsc2UgewotICAgIC8vIDAgPCBtaW5fIDwgbWF4XyA8IElO
VF9NQVgKLSAgICAqb3MgPDwgImNhbGxlZCBiZXR3ZWVuICIgPDwgbWluXyA8PCAiIGFuZCAiIDw8
IG1heF8gPDwgIiB0aW1lcyI7Ci0gIH0KLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKLQot
Ly8gRGVzY3JpYmVzIHRoZSBnaXZlbiBjYWxsIGNvdW50IHRvIGFuIG9zdHJlYW0uCi12b2lkIENh
cmRpbmFsaXR5OjpEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKGludCBhY3R1YWxfY2FsbF9jb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7Ci0gIGlmIChhY3R1YWxfY2FsbF9jb3VudCA+IDApIHsKLSAgICAqb3MgPDwg
ImNhbGxlZCAiIDw8IEZvcm1hdFRpbWVzKGFjdHVhbF9jYWxsX2NvdW50KTsKLSAgfSBlbHNlIHsK
LSAgICAqb3MgPDwgIm5ldmVyIGNhbGxlZCI7Ci0gIH0KLX0KLQotLy8gQ3JlYXRlcyBhIGNhcmRp
bmFsaXR5IHRoYXQgYWxsb3dzIGF0IGxlYXN0IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFs
aXR5IEF0TGVhc3QoaW50IG4pIHsgcmV0dXJuIEJldHdlZW4obiwgSU5UX01BWCk7IH0KLQotLy8g
Q3JlYXRlcyBhIGNhcmRpbmFsaXR5IHRoYXQgYWxsb3dzIGF0IG1vc3QgbiBjYWxscy4KLUdURVNU
X0FQSV8gQ2FyZGluYWxpdHkgQXRNb3N0KGludCBuKSB7IHJldHVybiBCZXR3ZWVuKDAsIG4pOyB9
Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhbnkgbnVtYmVyIG9mIGNh
bGxzLgotR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBBbnlOdW1iZXIoKSB7IHJldHVybiBBdExlYXN0
KDApOyB9Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBiZXR3ZWVuIG1p
biBhbmQgbWF4IGNhbGxzLgotR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBCZXR3ZWVuKGludCBtaW4s
IGludCBtYXgpIHsKLSAgcmV0dXJuIENhcmRpbmFsaXR5KG5ldyBCZXR3ZWVuQ2FyZGluYWxpdHlJ
bXBsKG1pbiwgbWF4KSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93
cyBleGFjdGx5IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5IEV4YWN0bHkoaW50IG4p
IHsgcmV0dXJuIEJldHdlZW4obiwgbik7IH0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjQ2NGFiYzI0MWYxOWJhNzZiYTFjOTJlYWUxMTkxMjYzYTkwNDJjMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMv
Z21vY2staW50ZXJuYWwtdXRpbHMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBhIGZy
YW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmlsZSBk
ZWZpbmVzIHNvbWUgdXRpbGl0aWVzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIEdvb2dsZQotLy8g
TW9jay4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLCBzbyBwbGVh
c2UgRE8gTk9UCi0vLyBVU0UgVEhFTSBJTiBVU0VSIENPREUuCi0KLSNpbmNsdWRlICJnbW9jay9p
bnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgotCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNp
bmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFj
ZSBpbnRlcm5hbCB7Ci0KLS8vIENvbnZlcnRzIGFuIGlkZW50aWZpZXIgbmFtZSB0byBhIHNwYWNl
LXNlcGFyYXRlZCBsaXN0IG9mIGxvd2VyLWNhc2UKLS8vIHdvcmRzLiAgRWFjaCBtYXhpbXVtIHN1
YnN0cmluZyBvZiB0aGUgZm9ybSBbQS1aYS16XVthLXpdKnxcZCsgaXMKLS8vIHRyZWF0ZWQgYXMg
b25lIHdvcmQuICBGb3IgZXhhbXBsZSwgYm90aCAiRm9vQmFyMTIzIiBhbmQKLS8vICJmb29fYmFy
XzEyMyIgYXJlIGNvbnZlcnRlZCB0byAiZm9vIGJhciAxMjMiLgotR1RFU1RfQVBJXyBzdHJpbmcg
Q29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkcyhjb25zdCBjaGFyKiBpZF9uYW1lKSB7Ci0gIHN0
cmluZyByZXN1bHQ7Ci0gIGNoYXIgcHJldl9jaGFyID0gJ1wwJzsKLSAgZm9yIChjb25zdCBjaGFy
KiBwID0gaWRfbmFtZTsgKnAgIT0gJ1wwJzsgcHJldl9jaGFyID0gKihwKyspKSB7Ci0gICAgLy8g
V2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgY3VycmVudCBsb2NhbGUgYXMgdGhlIGlucHV0IGlzCi0g
ICAgLy8gZ3VhcmFudGVlZCB0byBiZSBhIHZhbGlkIEMrKyBpZGVudGlmaWVyIG5hbWUuCi0gICAg
Y29uc3QgYm9vbCBzdGFydHNfbmV3X3dvcmQgPSBJc1VwcGVyKCpwKSB8fAotICAgICAgICAoIUlz
QWxwaGEocHJldl9jaGFyKSAmJiBJc0xvd2VyKCpwKSkgfHwKLSAgICAgICAgKCFJc0RpZ2l0KHBy
ZXZfY2hhcikgJiYgSXNEaWdpdCgqcCkpOwotCi0gICAgaWYgKElzQWxOdW0oKnApKSB7Ci0gICAg
ICBpZiAoc3RhcnRzX25ld193b3JkICYmIHJlc3VsdCAhPSAiIikKLSAgICAgICAgcmVzdWx0ICs9
ICcgJzsKLSAgICAgIHJlc3VsdCArPSBUb0xvd2VyKCpwKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotLy8gVGhpcyBjbGFzcyByZXBvcnRzIEdvb2dsZSBNb2NrIGZhaWx1cmVz
IGFzIEdvb2dsZSBUZXN0IGZhaWx1cmVzLiAgQQotLy8gdXNlciBjYW4gZGVmaW5lIGFub3RoZXIg
Y2xhc3MgaW4gYSBzaW1pbGFyIGZhc2hpb24gaWYgaGUgaW50ZW5kcyB0bwotLy8gdXNlIEdvb2ds
ZSBNb2NrIHdpdGggYSB0ZXN0aW5nIGZyYW1ld29yayBvdGhlciB0aGFuIEdvb2dsZSBUZXN0Lgot
Y2xhc3MgR29vZ2xlVGVzdEZhaWx1cmVSZXBvcnRlciA6IHB1YmxpYyBGYWlsdXJlUmVwb3J0ZXJJ
bnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIFJlcG9ydEZhaWx1cmUoRmFpbHVy
ZVR5cGUgdHlwZSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7Ci0gICAgQXNzZXJ0SGVs
cGVyKHR5cGUgPT0ga0ZhdGFsID8KLSAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtG
YXRhbEZhaWx1cmUgOgotICAgICAgICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgZmlsZSwKLSAgICAgICAgICAgICAgICAgbGluZSwK
LSAgICAgICAgICAgICAgICAgbWVzc2FnZS5jX3N0cigpKSA9IE1lc3NhZ2UoKTsKLSAgICBpZiAo
dHlwZSA9PSBrRmF0YWwpIHsKLSAgICAgIHBvc2l4OjpBYm9ydCgpOwotICAgIH0KLSAgfQotfTsK
LQotLy8gUmV0dXJucyB0aGUgZ2xvYmFsIGZhaWx1cmUgcmVwb3J0ZXIuICBXaWxsIGNyZWF0ZSBh
Ci0vLyBHb29nbGVUZXN0RmFpbHVyZVJlcG9ydGVyIGFuZCByZXR1cm4gaXQgdGhlIGZpcnN0IHRp
bWUgY2FsbGVkLgotR1RFU1RfQVBJXyBGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2UqIEdldEZhaWx1
cmVSZXBvcnRlcigpIHsKLSAgLy8gUG9pbnRzIHRvIHRoZSBnbG9iYWwgZmFpbHVyZSByZXBvcnRl
ciB1c2VkIGJ5IEdvb2dsZSBNb2NrLiAgZ2NjCi0gIC8vIGd1YXJhbnRlZXMgdGhhdCB0aGUgZm9s
bG93aW5nIHVzZSBvZiBmYWlsdXJlX3JlcG9ydGVyIGlzCi0gIC8vIHRocmVhZC1zYWZlLiAgV2Ug
bWF5IG5lZWQgdG8gYWRkIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIHRvCi0gIC8vIHByb3Rl
Y3QgZmFpbHVyZV9yZXBvcnRlciBpZiB3ZSBwb3J0IEdvb2dsZSBNb2NrIHRvIG90aGVyCi0gIC8v
IGNvbXBpbGVycy4KLSAgc3RhdGljIEZhaWx1cmVSZXBvcnRlckludGVyZmFjZSogY29uc3QgZmFp
bHVyZV9yZXBvcnRlciA9Ci0gICAgICBuZXcgR29vZ2xlVGVzdEZhaWx1cmVSZXBvcnRlcigpOwot
ICByZXR1cm4gZmFpbHVyZV9yZXBvcnRlcjsKLX0KLQotLy8gUHJvdGVjdHMgZ2xvYmFsIHJlc291
cmNlcyAoc3Rkb3V0IGluIHBhcnRpY3VsYXIpIHVzZWQgYnkgTG9nKCkuCi1zdGF0aWMgR1RFU1Rf
REVGSU5FX1NUQVRJQ19NVVRFWF8oZ19sb2dfbXV0ZXgpOwotCi0vLyBSZXR1cm5zIHRydWUgaWZm
IGEgbG9nIHdpdGggdGhlIGdpdmVuIHNldmVyaXR5IGlzIHZpc2libGUgYWNjb3JkaW5nCi0vLyB0
byB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcuCi1HVEVTVF9BUElfIGJvb2wgTG9nSXNWaXNpYmxl
KExvZ1NldmVyaXR5IHNldmVyaXR5KSB7Ci0gIGlmIChHTU9DS19GTEFHKHZlcmJvc2UpID09IGtJ
bmZvVmVyYm9zaXR5KSB7Ci0gICAgLy8gQWx3YXlzIHNob3cgdGhlIGxvZyBpZiAtLWdtb2NrX3Zl
cmJvc2U9aW5mby4KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChHTU9DS19GTEFHKHZl
cmJvc2UpID09IGtFcnJvclZlcmJvc2l0eSkgewotICAgIC8vIEFsd2F5cyBoaWRlIGl0IGlmIC0t
Z21vY2tfdmVyYm9zZT1lcnJvci4KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAg
Ly8gSWYgLS1nbW9ja192ZXJib3NlIGlzIG5laXRoZXIgImluZm8iIG5vciAiZXJyb3IiLCB3ZSB0
cmVhdCBpdAotICAgIC8vIGFzICJ3YXJuaW5nIiAoaXRzIGRlZmF1bHQgdmFsdWUpLgotICAgIHJl
dHVybiBzZXZlcml0eSA9PSBrV2FybmluZzsKLSAgfQotfQotCi0vLyBQcmludHMgdGhlIGdpdmVu
IG1lc3NhZ2UgdG8gc3Rkb3V0IGlmZiAnc2V2ZXJpdHknID49IHRoZSBsZXZlbAotLy8gc3BlY2lm
aWVkIGJ5IHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4gIElmIHN0YWNrX2ZyYW1lc190b19za2lw
ID49Ci0vLyAwLCBhbHNvIHByaW50cyB0aGUgc3RhY2sgdHJhY2UgZXhjbHVkaW5nIHRoZSB0b3AK
LS8vIHN0YWNrX2ZyYW1lc190b19za2lwIGZyYW1lcy4gIEluIG9wdCBtb2RlLCBhbnkgcG9zaXRp
dmUKLS8vIHN0YWNrX2ZyYW1lc190b19za2lwIGlzIHRyZWF0ZWQgYXMgMCwgc2luY2Ugd2UgZG9u
J3Qga25vdyB3aGljaAotLy8gZnVuY3Rpb24gY2FsbHMgd2lsbCBiZSBpbmxpbmVkIGJ5IHRoZSBj
b21waWxlciBhbmQgbmVlZCB0byBiZQotLy8gY29uc2VydmF0aXZlLgotR1RFU1RfQVBJXyB2b2lk
IExvZyhMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgIGludCBzdGFja19mcmFtZXNfdG9fc2tpcCkgewotICBpZiAoIUxv
Z0lzVmlzaWJsZShzZXZlcml0eSkpCi0gICAgcmV0dXJuOwotCi0gIC8vIEVuc3VyZXMgdGhhdCBs
b2dzIGZyb20gZGlmZmVyZW50IHRocmVhZHMgZG9uJ3QgaW50ZXJsZWF2ZS4KLSAgTXV0ZXhMb2Nr
IGwoJmdfbG9nX211dGV4KTsKLQotICAvLyAidXNpbmcgOjpzdGQ6OmNvdXQ7IiBkb2Vzbid0IHdv
cmsgd2l0aCBTeW1iaWFuJ3MgU1RMcG9ydCwgd2hlcmUgY291dCBpcyBhCi0gIC8vIG1hY3JvLgot
Ci0gIGlmIChzZXZlcml0eSA9PSBrV2FybmluZykgewotICAgIC8vIFByaW50cyBhIEdNT0NLIFdB
Uk5JTkcgbWFya2VyIHRvIG1ha2UgdGhlIHdhcm5pbmdzIGVhc2lseSBzZWFyY2hhYmxlLgotICAg
IHN0ZDo6Y291dCA8PCAiXG5HTU9DSyBXQVJOSU5HOiI7Ci0gIH0KLSAgLy8gUHJlLXBlbmRzIGEg
bmV3LWxpbmUgdG8gbWVzc2FnZSBpZiBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggb25lLgotICBpZiAo
bWVzc2FnZS5lbXB0eSgpIHx8IG1lc3NhZ2VbMF0gIT0gJ1xuJykgewotICAgIHN0ZDo6Y291dCA8
PCAiXG4iOwotICB9Ci0gIHN0ZDo6Y291dCA8PCBtZXNzYWdlOwotICBpZiAoc3RhY2tfZnJhbWVz
X3RvX3NraXAgPj0gMCkgewotI2lmZGVmIE5ERUJVRwotICAgIC8vIEluIG9wdCBtb2RlLCB3ZSBo
YXZlIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgc2tpcCBubyBzdGFjayBmcmFtZS4KLSAgICBjb25z
dCBpbnQgYWN0dWFsX3RvX3NraXAgPSAwOwotI2Vsc2UKLSAgICAvLyBJbiBkYmcgbW9kZSwgd2Ug
Y2FuIGRvIHdoYXQgdGhlIGNhbGxlciB0ZWxsIHVzIHRvIGRvIChwbHVzIG9uZQotICAgIC8vIGZv
ciBza2lwcGluZyB0aGlzIGZ1bmN0aW9uJ3Mgc3RhY2sgZnJhbWUpLgotICAgIGNvbnN0IGludCBh
Y3R1YWxfdG9fc2tpcCA9IHN0YWNrX2ZyYW1lc190b19za2lwICsgMTsKLSNlbmRpZiAgLy8gTkRF
QlVHCi0KLSAgICAvLyBBcHBlbmRzIGEgbmV3LWxpbmUgdG8gbWVzc2FnZSBpZiBpdCBkb2Vzbid0
IGVuZCB3aXRoIG9uZS4KLSAgICBpZiAoIW1lc3NhZ2UuZW1wdHkoKSAmJiAqbWVzc2FnZS5yYmVn
aW4oKSAhPSAnXG4nKSB7Ci0gICAgICBzdGQ6OmNvdXQgPDwgIlxuIjsKLSAgICB9Ci0gICAgc3Rk
Ojpjb3V0IDw8ICJTdGFjayB0cmFjZTpcbiIKLSAgICAgICAgIDw8IDo6dGVzdGluZzo6aW50ZXJu
YWw6OkdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoCi0gICAgICAgICAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSwgYWN0dWFsX3RvX3NraXApOwotICB9Ci0gIHN0
ZDo6Y291dCA8PCA6OnN0ZDo6Zmx1c2g7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9j
ay1tYXRjaGVycy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1tYXRjaGVycy5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBkZTI1Y2I5MjdhNzcwM2FlMGMzMDJmNjYwODUwOGUx
ZGI2ZmQ1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9zcmMvZ21vY2stbWF0Y2hlcnMuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0OTcg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1v
Y2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRo
aXMgZmlsZSBpbXBsZW1lbnRzIE1hdGNoZXI8Y29uc3Qgc3RyaW5nJj4sIE1hdGNoZXI8c3RyaW5n
PiwgYW5kCi0vLyB1dGlsaXRpZXMgZm9yIGRlZmluaW5nIG1hdGNoZXJzLgotCi0jaW5jbHVkZSAi
Z21vY2svZ21vY2stbWF0Y2hlcnMuaCIKLSNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQt
bWF0Y2hlcnMuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIENvbnN0cnVjdHMg
YSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGNvbnN0IHN0cmluZyYgd2hvc2UgdmFsdWUgaXMKLS8v
IGVxdWFsIHRvIHMuCi1NYXRjaGVyPGNvbnN0IGludGVybmFsOjpzdHJpbmcmPjo6TWF0Y2hlcihj
b25zdCBpbnRlcm5hbDo6c3RyaW5nJiBzKSB7Ci0gICp0aGlzID0gRXEocyk7Ci19Ci0KLS8vIENv
bnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGNvbnN0IHN0cmluZyYgd2hvc2UgdmFs
dWUgaXMKLS8vIGVxdWFsIHRvIHMuCi1NYXRjaGVyPGNvbnN0IGludGVybmFsOjpzdHJpbmcmPjo6
TWF0Y2hlcihjb25zdCBjaGFyKiBzKSB7Ci0gICp0aGlzID0gRXEoaW50ZXJuYWw6OnN0cmluZyhz
KSk7Ci19Ci0KLS8vIENvbnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIHN0cmluZyB3
aG9zZSB2YWx1ZSBpcyBlcXVhbCB0byBzLgotTWF0Y2hlcjxpbnRlcm5hbDo6c3RyaW5nPjo6TWF0
Y2hlcihjb25zdCBpbnRlcm5hbDo6c3RyaW5nJiBzKSB7ICp0aGlzID0gRXEocyk7IH0KLQotLy8g
Q29uc3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlz
IGVxdWFsIHRvIHMuCi1NYXRjaGVyPGludGVybmFsOjpzdHJpbmc+OjpNYXRjaGVyKGNvbnN0IGNo
YXIqIHMpIHsKLSAgKnRoaXMgPSBFcShpbnRlcm5hbDo6c3RyaW5nKHMpKTsKLX0KLQotI2lmIEdU
RVNUX0hBU19TVFJJTkdfUElFQ0VfCi0vLyBDb25zdHJ1Y3RzIGEgbWF0Y2hlciB0aGF0IG1hdGNo
ZXMgYSBjb25zdCBTdHJpbmdQaWVjZSYgd2hvc2UgdmFsdWUgaXMKLS8vIGVxdWFsIHRvIHMuCi1N
YXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj46Ok1hdGNoZXIoY29uc3QgaW50ZXJuYWw6OnN0cmlu
ZyYgcykgewotICAqdGhpcyA9IEVxKHMpOwotfQotCi0vLyBDb25zdHJ1Y3RzIGEgbWF0Y2hlciB0
aGF0IG1hdGNoZXMgYSBjb25zdCBTdHJpbmdQaWVjZSYgd2hvc2UgdmFsdWUgaXMKLS8vIGVxdWFs
IHRvIHMuCi1NYXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj46Ok1hdGNoZXIoY29uc3QgY2hhciog
cykgewotICAqdGhpcyA9IEVxKGludGVybmFsOjpzdHJpbmcocykpOwotfQotCi0vLyBDb25zdHJ1
Y3RzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBjb25zdCBTdHJpbmdQaWVjZSYgd2hvc2UgdmFs
dWUgaXMKLS8vIGVxdWFsIHRvIHMuCi1NYXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj46Ok1hdGNo
ZXIoU3RyaW5nUGllY2UgcykgewotICAqdGhpcyA9IEVxKHMuVG9TdHJpbmcoKSk7Ci19Ci0KLS8v
IENvbnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIFN0cmluZ1BpZWNlIHdob3NlIHZh
bHVlIGlzIGVxdWFsIHRvIHMuCi1NYXRjaGVyPFN0cmluZ1BpZWNlPjo6TWF0Y2hlcihjb25zdCBp
bnRlcm5hbDo6c3RyaW5nJiBzKSB7Ci0gICp0aGlzID0gRXEocyk7Ci19Ci0KLS8vIENvbnN0cnVj
dHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIFN0cmluZ1BpZWNlIHdob3NlIHZhbHVlIGlzIGVx
dWFsIHRvIHMuCi1NYXRjaGVyPFN0cmluZ1BpZWNlPjo6TWF0Y2hlcihjb25zdCBjaGFyKiBzKSB7
Ci0gICp0aGlzID0gRXEoaW50ZXJuYWw6OnN0cmluZyhzKSk7Ci19Ci0KLS8vIENvbnN0cnVjdHMg
YSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIFN0cmluZ1BpZWNlIHdob3NlIHZhbHVlIGlzIGVxdWFs
IHRvIHMuCi1NYXRjaGVyPFN0cmluZ1BpZWNlPjo6TWF0Y2hlcihTdHJpbmdQaWVjZSBzKSB7Ci0g
ICp0aGlzID0gRXEocy5Ub1N0cmluZygpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUklO
R19QSUVDRV8KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gSm9pbnMgYSB2ZWN0b3Igb2Yg
c3RyaW5ncyBhcyBpZiB0aGV5IGFyZSBmaWVsZHMgb2YgYSB0dXBsZTsgcmV0dXJucwotLy8gdGhl
IGpvaW5lZCBzdHJpbmcuCi1HVEVTVF9BUElfIHN0cmluZyBKb2luQXNUdXBsZShjb25zdCBTdHJp
bmdzJiBmaWVsZHMpIHsKLSAgc3dpdGNoIChmaWVsZHMuc2l6ZSgpKSB7Ci0gICAgY2FzZSAwOgot
ICAgICAgcmV0dXJuICIiOwotICAgIGNhc2UgMToKLSAgICAgIHJldHVybiBmaWVsZHNbMF07Ci0g
ICAgZGVmYXVsdDoKLSAgICAgIHN0cmluZyByZXN1bHQgPSAiKCIgKyBmaWVsZHNbMF07Ci0gICAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykgewotICAgICAgICBy
ZXN1bHQgKz0gIiwgIjsKLSAgICAgICAgcmVzdWx0ICs9IGZpZWxkc1tpXTsKLSAgICAgIH0KLSAg
ICAgIHJlc3VsdCArPSAiKSI7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19Ci0KLS8vIFJl
dHVybnMgdGhlIGRlc2NyaXB0aW9uIGZvciBhIG1hdGNoZXIgZGVmaW5lZCB1c2luZyB0aGUgTUFU
Q0hFUiooKQotLy8gbWFjcm8gd2hlcmUgdGhlIHVzZXItc3VwcGxpZWQgZGVzY3JpcHRpb24gc3Ry
aW5nIGlzICIiLCBpZgotLy8gJ25lZ2F0aW9uJyBpcyBmYWxzZTsgb3RoZXJ3aXNlIHJldHVybnMg
dGhlIGRlc2NyaXB0aW9uIG9mIHRoZQotLy8gbmVnYXRpb24gb2YgdGhlIG1hdGNoZXIuICAncGFy
YW1fdmFsdWVzJyBjb250YWlucyBhIGxpc3Qgb2Ygc3RyaW5ncwotLy8gdGhhdCBhcmUgdGhlIHBy
aW50LW91dCBvZiB0aGUgbWF0Y2hlcidzIHBhcmFtZXRlcnMuCi1HVEVTVF9BUElfIHN0cmluZyBG
b3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtYXRjaGVyX25hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5ncyYgcGFy
YW1fdmFsdWVzKSB7Ci0gIHN0cmluZyByZXN1bHQgPSBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dv
cmRzKG1hdGNoZXJfbmFtZSk7Ci0gIGlmIChwYXJhbV92YWx1ZXMuc2l6ZSgpID49IDEpCi0gICAg
cmVzdWx0ICs9ICIgIiArIEpvaW5Bc1R1cGxlKHBhcmFtX3ZhbHVlcyk7Ci0gIHJldHVybiBuZWdh
dGlvbiA/ICJub3QgKCIgKyByZXN1bHQgKyAiKSIgOiByZXN1bHQ7Ci19Ci0KLS8vIEZpbmRNYXhC
aXBhcnRpdGVNYXRjaGluZyBhbmQgaXRzIGhlbHBlciBjbGFzcy4KLS8vCi0vLyBVc2VzIHRoZSB3
ZWxsLWtub3duIEZvcmQtRnVsa2Vyc29uIG1heCBmbG93IG1ldGhvZCB0byBmaW5kIGEgbWF4aW11
bQotLy8gYmlwYXJ0aXRlIG1hdGNoaW5nLiBGbG93IGlzIGNvbnNpZGVyZWQgdG8gYmUgZnJvbSBs
ZWZ0IHRvIHJpZ2h0LgotLy8gVGhlcmUgaXMgYW4gaW1wbGljaXQgc291cmNlIG5vZGUgdGhhdCBp
cyBjb25uZWN0ZWQgdG8gYWxsIG9mIHRoZSBsZWZ0Ci0vLyBub2RlcywgYW5kIGFuIGltcGxpY2l0
IHNpbmsgbm9kZSB0aGF0IGlzIGNvbm5lY3RlZCB0byBhbGwgb2YgdGhlCi0vLyByaWdodCBub2Rl
cy4gQWxsIGVkZ2VzIGhhdmUgdW5pdCBjYXBhY2l0eS4KLS8vCi0vLyBOZWl0aGVyIHRoZSBmbG93
IGdyYXBoIG5vciB0aGUgcmVzaWR1YWwgZmxvdyBncmFwaCBhcmUgcmVwcmVzZW50ZWQKLS8vIGV4
cGxpY2l0bHkuIEluc3RlYWQsIHRoZXkgYXJlIGltcGxpZWQgYnkgdGhlIGluZm9ybWF0aW9uIGlu
ICdncmFwaCcgYW5kCi0vLyBhIHZlY3RvcjxpbnQ+IGNhbGxlZCAnbGVmdF8nIHdob3NlIGVsZW1l
bnRzIGFyZSBpbml0aWFsaXplZCB0byB0aGUKLS8vIHZhbHVlIGtVbnVzZWQuIFRoaXMgcmVwcmVz
ZW50cyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgYWxnb3JpdGhtLAotLy8gd2hlcmUgdGhlIGZs
b3cgZ3JhcGggaXMgZW1wdHksIGFuZCB0aGUgcmVzaWR1YWwgZmxvdyBncmFwaCBoYXMgdGhlCi0v
LyBmb2xsb3dpbmcgZWRnZXM6Ci0vLyAgIC0gQW4gZWRnZSBmcm9tIHNvdXJjZSB0byBlYWNoIGxl
ZnRfIG5vZGUKLS8vICAgLSBBbiBlZGdlIGZyb20gZWFjaCByaWdodF8gbm9kZSB0byBzaW5rCi0v
LyAgIC0gQW4gZWRnZSBmcm9tIGVhY2ggbGVmdF8gbm9kZSB0byBlYWNoIHJpZ2h0XyBub2RlLCBp
ZiB0aGUKLS8vICAgICBjb3JyZXNwb25kaW5nIGVkZ2UgZXhpc3RzIGluICdncmFwaCcuCi0vLwot
Ly8gV2hlbiB0aGUgVHJ5QXVnbWVudCgpIG1ldGhvZCBhZGRzIGEgZmxvdywgaXQgc2V0cyBsZWZ0
X1tsXSA9IHIgZm9yIHNvbWUKLS8vIG5vZGVzIGwgYW5kIHIuIFRoaXMgaW5kdWNlcyB0aGUgZm9s
bG93aW5nIGNoYW5nZXM6Ci0vLyAgIC0gVGhlIGVkZ2VzIChzb3VyY2UsIGwpLCAobCwgciksIGFu
ZCAociwgc2luaykgYXJlIGFkZGVkIHRvIHRoZQotLy8gICAgIGZsb3cgZ3JhcGguCi0vLyAgIC0g
VGhlIHNhbWUgdGhyZWUgZWRnZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgcmVzaWR1YWwgZmxvdyBn
cmFwaC4KLS8vICAgLSBUaGUgcmV2ZXJzZSBlZGdlcyAobCwgc291cmNlKSwgKHIsIGwpLCBhbmQg
KHNpbmssIHIpIGFyZSBhZGRlZAotLy8gICAgIHRvIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoLCB3
aGljaCBpcyBhIGRpcmVjdGlvbmFsIGdyYXBoCi0vLyAgICAgcmVwcmVzZW50aW5nIHVudXNlZCBm
bG93IGNhcGFjaXR5LgotLy8KLS8vIFdoZW4gdGhlIG1ldGhvZCBhdWdtZW50cyBhIGZsb3cgKG1v
dmluZyBsZWZ0X1tsXSBmcm9tIHNvbWUgcjEgdG8gc29tZQotLy8gb3RoZXIgcjIpLCB0aGlzIGNh
biBiZSB0aG91Z2h0IG9mIGFzICJ1bmRvaW5nIiB0aGUgYWJvdmUgc3RlcHMgd2l0aAotLy8gcmVz
cGVjdCB0byByMSBhbmQgInJlZG9pbmciIHRoZW0gd2l0aCByZXNwZWN0IHRvIHIyLgotLy8KLS8v
IEl0IGJlYXJzIHJlcGVhdGluZyB0aGF0IHRoZSBmbG93IGdyYXBoIGFuZCByZXNpZHVhbCBmbG93
IGdyYXBoIGFyZQotLy8gbmV2ZXIgcmVwcmVzZW50ZWQgZXhwbGljaXRseSwgYnV0IGNhbiBiZSBk
ZXJpdmVkIGJ5IGxvb2tpbmcgYXQgdGhlCi0vLyBpbmZvcm1hdGlvbiBpbiAnZ3JhcGgnIGFuZCBp
biBsZWZ0Xy4KLS8vCi0vLyBBcyBhbiBvcHRpbWl6YXRpb24sIHRoZXJlIGlzIGEgc2Vjb25kIHZl
Y3RvcjxpbnQ+IGNhbGxlZCByaWdodF8gd2hpY2gKLS8vIGRvZXMgbm90IHByb3ZpZGUgYW55IG5l
dyBpbmZvcm1hdGlvbi4gSW5zdGVhZCwgaXQgZW5hYmxlcyBtb3JlCi0vLyBlZmZpY2llbnQgcXVl
cmllcyBhYm91dCBlZGdlcyBlbnRlcmluZyBvciBsZWF2aW5nIHRoZSByaWdodC1zaWRlIG5vZGVz
Ci0vLyBvZiB0aGUgZmxvdyBvciByZXNpZHVhbCBmbG93IGdyYXBocy4gVGhlIGZvbGxvd2luZyBp
bnZhcmlhbnRzIGFyZQotLy8gbWFpbnRhaW5lZDoKLS8vCi0vLyBsZWZ0W2xdID09IGtVbnVzZWQg
b3IgcmlnaHRbbGVmdFtsXV0gPT0gbAotLy8gcmlnaHRbcl0gPT0ga1VudXNlZCBvciBsZWZ0W3Jp
Z2h0W3JdXSA9PSByCi0vLwotLy8gLiBbIHNvdXJjZSBdICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC4KLS8vIC4gICB8fHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuCi0vLyAuICAgfHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLgotLy8gLiAgIHx8XC0tPiBsZWZ0WzBdPTEgIC0tLVwgICAgcmln
aHRbMF09LTEgLS0tLVwgICAgIC4KLS8vIC4gICB8fCAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICB8ICAgICAuCi0vLyAuICAgfFwtLS0+IGxlZnRbMV09LTEgICAgXC0tPiBy
aWdodFsxXT0wICAtLS1cfCAgICAgLgotLy8gLiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgICAgIC4KLS8vIC4gICBcLS0tLT4gbGVmdFsyXT0yICAtLS0tLS0+
IHJpZ2h0WzJdPTIgIC0tXHx8ICAgICAuCi0vLyAuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8fCAgICAgLgotLy8gLiAgICAgICAgIGVsZW1lbnRzICAgICAgICAg
ICBtYXRjaGVycyAgICAgICB2dnYgICAgIC4KLS8vIC4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsgc2luayBdICAuCi0vLwotLy8gU2VlIEFsc286Ci0vLyAgIFsxXSBD
b3JtZW4sIGV0IGFsICgyMDAxKS4gIlNlY3Rpb24gMjYuMjogVGhlIEZvcmQtRnVsa2Vyc29uIG1l
dGhvZCIuCi0vLyAgICAgICAiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXMgKFNlY29uZCBlZC4p
IiwgcHAuIDY1MS02NjQuCi0vLyAgIFsyXSAiRm9yZC1GdWxrZXJzb24gYWxnb3JpdGhtIiwgV2lr
aXBlZGlhLAotLy8gICAgICAgJ2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRm9yZCVFMiU4
MCU5M0Z1bGtlcnNvbl9hbGdvcml0aG0nCi1jbGFzcyBNYXhCaXBhcnRpdGVNYXRjaFN0YXRlIHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1heEJpcGFydGl0ZU1hdGNoU3RhdGUoY29uc3QgTWF0Y2hN
YXRyaXgmIGdyYXBoKQotICAgICAgOiBncmFwaF8oJmdyYXBoKSwKLSAgICAgICAgbGVmdF8oZ3Jh
cGhfLT5MaHNTaXplKCksIGtVbnVzZWQpLAotICAgICAgICByaWdodF8oZ3JhcGhfLT5SaHNTaXpl
KCksIGtVbnVzZWQpIHsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGVkZ2VzIG9mIGEgbWF4aW1h
bCBtYXRjaCwgZWFjaCBpbiB0aGUgZm9ybSB7bGVmdCwgcmlnaHR9LgotICBFbGVtZW50TWF0Y2hl
clBhaXJzIENvbXB1dGUoKSB7Ci0gICAgLy8gJ3NlZW4nIGlzIHVzZWQgZm9yIHBhdGggZmluZGlu
ZyB7IDA6IHVuc2VlbiwgMTogc2VlbiB9LgotICAgIDo6c3RkOjp2ZWN0b3I8Y2hhcj4gc2VlbjsK
LSAgICAvLyBTZWFyY2hlcyB0aGUgcmVzaWR1YWwgZmxvdyBncmFwaCBmb3IgYSBwYXRoIGZyb20g
ZWFjaCBsZWZ0IG5vZGUgdG8KLSAgICAvLyB0aGUgc2luayBpbiB0aGUgcmVzaWR1YWwgZmxvdyBn
cmFwaCwgYW5kIGlmIG9uZSBpcyBmb3VuZCwgYWRkIGZsb3cKLSAgICAvLyB0byB0aGUgZ3JhcGgu
IEl0J3Mgb2theSB0byBzZWFyY2ggdGhyb3VnaCB0aGUgbGVmdCBub2RlcyBvbmNlLiBUaGUKLSAg
ICAvLyBlZGdlIGZyb20gdGhlIGltcGxpY2l0IHNvdXJjZSBub2RlIHRvIGVhY2ggcHJldmlvdXNs
eS12aXNpdGVkIGxlZnQKLSAgICAvLyBub2RlIHdpbGwgaGF2ZSBmbG93IGlmIHRoYXQgbGVmdCBu
b2RlIGhhcyBhbnkgcGF0aCB0byB0aGUgc2luawotICAgIC8vIHdoYXRzb2V2ZXIuIFN1YnNlcXVl
bnQgYXVnbWVudGF0aW9ucyBjYW4gb25seSBhZGQgZmxvdyB0byB0aGUKLSAgICAvLyBuZXR3b3Jr
LCBhbmQgY2Fubm90IHRha2UgYXdheSB0aGF0IHByZXZpb3VzIGZsb3cgdW5pdCBmcm9tIHRoZSBz
b3VyY2UuCi0gICAgLy8gU2luY2UgdGhlIHNvdXJjZS10by1sZWZ0IGVkZ2UgY2FuIG9ubHkgY2Fy
cnkgb25lIGZsb3cgdW5pdCAob3IsCi0gICAgLy8gZWFjaCBlbGVtZW50IGNhbiBiZSBtYXRjaGVk
IHRvIG9ubHkgb25lIG1hdGNoZXIpLCB0aGVyZSBpcyBubyBuZWVkCi0gICAgLy8gdG8gdmlzaXQg
dGhlIGxlZnQgbm9kZXMgbW9yZSB0aGFuIG9uY2UgbG9va2luZyBmb3IgYXVnbWVudGVkIHBhdGhz
LgotICAgIC8vIFRoZSBmbG93IGlzIGtub3duIHRvIGJlIHBvc3NpYmxlIG9yIGltcG9zc2libGUg
YnkgbG9va2luZyBhdCB0aGUKLSAgICAvLyBub2RlIG9uY2UuCi0gICAgZm9yIChzaXplX3QgaWxo
cyA9IDA7IGlsaHMgPCBncmFwaF8tPkxoc1NpemUoKTsgKytpbGhzKSB7Ci0gICAgICAvLyBSZXNl
dCB0aGUgcGF0aC1tYXJraW5nIHZlY3RvciBhbmQgdHJ5IHRvIGZpbmQgYSBwYXRoIGZyb20KLSAg
ICAgIC8vIHNvdXJjZSB0byBzaW5rIHN0YXJ0aW5nIGF0IHRoZSBsZWZ0X1tpbGhzXSBub2RlLgot
ICAgICAgR1RFU1RfQ0hFQ0tfKGxlZnRfW2lsaHNdID09IGtVbnVzZWQpCi0gICAgICAgICAgPDwg
ImlsaHM6ICIgPDwgaWxocyA8PCAiLCBsZWZ0X1tpbGhzXTogIiA8PCBsZWZ0X1tpbGhzXTsKLSAg
ICAgIC8vICdzZWVuJyBpbml0aWFsaXplZCB0byAnZ3JhcGhfLT5SaHNTaXplKCknIGNvcGllcyBv
ZiAwLgotICAgICAgc2Vlbi5hc3NpZ24oZ3JhcGhfLT5SaHNTaXplKCksIDApOwotICAgICAgVHJ5
QXVnbWVudChpbGhzLCAmc2Vlbik7Ci0gICAgfQotICAgIEVsZW1lbnRNYXRjaGVyUGFpcnMgcmVz
dWx0OwotICAgIGZvciAoc2l6ZV90IGlsaHMgPSAwOyBpbGhzIDwgbGVmdF8uc2l6ZSgpOyArK2ls
aHMpIHsKLSAgICAgIHNpemVfdCBpcmhzID0gbGVmdF9baWxoc107Ci0gICAgICBpZiAoaXJocyA9
PSBrVW51c2VkKSBjb250aW51ZTsKLSAgICAgIHJlc3VsdC5wdXNoX2JhY2soRWxlbWVudE1hdGNo
ZXJQYWlyKGlsaHMsIGlyaHMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgc3RhdGljIGNvbnN0IHNpemVfdCBrVW51c2VkID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PigtMSk7Ci0KLSAgLy8gUGVyZm9ybSBhIGRlcHRoLWZpcnN0IHNlYXJjaCBmcm9tIGxlZnQg
bm9kZSBpbGhzIHRvIHRoZSBzaW5rLiAgSWYgYQotICAvLyBwYXRoIGlzIGZvdW5kLCBmbG93IGlz
IGFkZGVkIHRvIHRoZSBuZXR3b3JrIGJ5IGxpbmtpbmcgdGhlIGxlZnQgYW5kCi0gIC8vIHJpZ2h0
IHZlY3RvciBlbGVtZW50cyBjb3JyZXNwb25kaW5nIGVhY2ggc2VnbWVudCBvZiB0aGUgcGF0aC4K
LSAgLy8gUmV0dXJucyB0cnVlIGlmIGEgcGF0aCB0byBzaW5rIHdhcyBmb3VuZCwgd2hpY2ggbWVh
bnMgdGhhdCBhIHVuaXQgb2YKLSAgLy8gZmxvdyB3YXMgYWRkZWQgdG8gdGhlIG5ldHdvcmsuIFRo
ZSAnc2VlbicgdmVjdG9yIGVsZW1lbnRzIGNvcnJlc3BvbmQKLSAgLy8gdG8gcmlnaHQgbm9kZXMg
YW5kIGFyZSBtYXJrZWQgdG8gZWxpbWluYXRlIGN5Y2xlcyBmcm9tIHRoZSBzZWFyY2guCi0gIC8v
Ci0gIC8vIExlZnQgbm9kZXMgd2lsbCBvbmx5IGJlIGV4cGxvcmVkIGF0IG1vc3Qgb25jZSBiZWNh
dXNlIHRoZXkKLSAgLy8gYXJlIGFjY2Vzc2libGUgZnJvbSBhdCBtb3N0IG9uZSByaWdodCBub2Rl
IGluIHRoZSByZXNpZHVhbCBmbG93Ci0gIC8vIGdyYXBoLgotICAvLwotICAvLyBOb3RlIHRoYXQg
bGVmdF9baWxoc10gaXMgdGhlIG9ubHkgZWxlbWVudCBvZiBsZWZ0XyB0aGF0IFRyeUF1Z21lbnQg
d2lsbAotICAvLyBwb3RlbnRpYWxseSB0cmFuc2l0aW9uIGZyb20ga1VudXNlZCB0byBhbm90aGVy
IHZhbHVlLiBBbnkgb3RoZXIKLSAgLy8gbGVmdF8gZWxlbWVudCBob2xkaW5nIGtVbnVzZWQgYmVm
b3JlIFRyeUF1Z21lbnQgd2lsbCBiZSBob2xkaW5nIGl0Ci0gIC8vIHdoZW4gVHJ5QXVnbWVudCBy
ZXR1cm5zLgotICAvLwotICBib29sIFRyeUF1Z21lbnQoc2l6ZV90IGlsaHMsIDo6c3RkOjp2ZWN0
b3I8Y2hhcj4qIHNlZW4pIHsKLSAgICBmb3IgKHNpemVfdCBpcmhzID0gMDsgaXJocyA8IGdyYXBo
Xy0+UmhzU2l6ZSgpOyArK2lyaHMpIHsKLSAgICAgIGlmICgoKnNlZW4pW2lyaHNdKQotICAgICAg
ICBjb250aW51ZTsKLSAgICAgIGlmICghZ3JhcGhfLT5IYXNFZGdlKGlsaHMsIGlyaHMpKQotICAg
ICAgICBjb250aW51ZTsKLSAgICAgIC8vIFRoZXJlJ3MgYW4gYXZhaWxhYmxlIGVkZ2UgZnJvbSBp
bGhzIHRvIGlyaHMuCi0gICAgICAoKnNlZW4pW2lyaHNdID0gMTsKLSAgICAgIC8vIE5leHQgYSBz
ZWFyY2ggaXMgcGVyZm9ybWVkIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgICAvLyB0aGlzIGVk
Z2UgaXMgYSBkZWFkIGVuZCBvciBsZWFkcyB0byB0aGUgc2luay4KLSAgICAgIC8vCi0gICAgICAv
LyByaWdodF9baXJoc10gPT0ga1VudXNlZCBtZWFucyB0aGF0IHRoZXJlIGlzIHJlc2lkdWFsIGZs
b3cgZnJvbQotICAgICAgLy8gcmlnaHQgbm9kZSBpcmhzIHRvIHRoZSBzaW5rLCBzbyB3ZSBjYW4g
dXNlIHRoYXQgdG8gZmluaXNoIHRoaXMKLSAgICAgIC8vIGZsb3cgcGF0aCBhbmQgcmV0dXJuIHN1
Y2Nlc3MuCi0gICAgICAvLwotICAgICAgLy8gT3RoZXJ3aXNlIHRoZXJlIGlzIHJlc2lkdWFsIGZs
b3cgdG8gc29tZSBpbGhzLiBXZSBwdXNoIGZsb3cKLSAgICAgIC8vIGFsb25nIHRoYXQgcGF0aCBh
bmQgY2FsbCBvdXJzZWx2ZXMgcmVjdXJzaXZlbHkgdG8gc2VlIGlmIHRoaXMKLSAgICAgIC8vIHVs
dGltYXRlbHkgbGVhZHMgdG8gc2luay4KLSAgICAgIGlmIChyaWdodF9baXJoc10gPT0ga1VudXNl
ZCB8fCBUcnlBdWdtZW50KHJpZ2h0X1tpcmhzXSwgc2VlbikpIHsKLSAgICAgICAgLy8gQWRkIGZs
b3cgZnJvbSBsZWZ0X1tpbGhzXSB0byByaWdodF9baXJoc10uCi0gICAgICAgIGxlZnRfW2lsaHNd
ID0gaXJoczsKLSAgICAgICAgcmlnaHRfW2lyaHNdID0gaWxoczsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGNvbnN0IE1h
dGNoTWF0cml4KiBncmFwaF87ICAvLyBub3Qgb3duZWQKLSAgLy8gRWFjaCBlbGVtZW50IG9mIHRo
ZSBsZWZ0XyB2ZWN0b3IgcmVwcmVzZW50cyBhIGxlZnQgaGFuZCBzaWRlIG5vZGUKLSAgLy8gKGku
ZS4gYW4gZWxlbWVudCkgYW5kIGVhY2ggZWxlbWVudCBvZiByaWdodF8gaXMgYSByaWdodCBoYW5k
IHNpZGUKLSAgLy8gbm9kZSAoaS5lLiBhIG1hdGNoZXIpLiBUaGUgdmFsdWVzIGluIHRoZSBsZWZ0
XyB2ZWN0b3IgaW5kaWNhdGUKLSAgLy8gb3V0ZmxvdyBmcm9tIHRoYXQgbm9kZSB0byBhIG5vZGUg
b24gdGhlIHRoZSByaWdodF8gc2lkZS4gVGhlIHZhbHVlcwotICAvLyBpbiB0aGUgcmlnaHRfIGlu
ZGljYXRlIGluZmxvdywgYW5kIHNwZWNpZnkgd2hpY2ggbGVmdF8gbm9kZSBpcwotICAvLyBmZWVk
aW5nIHRoYXQgcmlnaHRfIG5vZGUsIGlmIGFueS4gRm9yIGV4YW1wbGUsIGxlZnRfWzNdID09IDEg
bWVhbnMKLSAgLy8gdGhlcmUncyBhIGZsb3cgZnJvbSBlbGVtZW50ICMzIHRvIG1hdGNoZXIgIzEu
IFN1Y2ggYSBmbG93IHdvdWxkIGFsc28KLSAgLy8gYmUgcmVkdW5kYW50bHkgcmVwcmVzZW50ZWQg
aW4gdGhlIHJpZ2h0XyB2ZWN0b3IgYXMgcmlnaHRfWzFdID09IDMuCi0gIC8vIEVsZW1lbnRzIG9m
IGxlZnRfIGFuZCByaWdodF8gYXJlIGVpdGhlciBrVW51c2VkIG9yIG11dHVhbGx5Ci0gIC8vIHJl
ZmVyZW50LiBNdXR1YWxseSByZWZlcmVudCBtZWFucyB0aGF0IGxlZnRfW3JpZ2h0X1tpXV0gPSBp
IGFuZAotICAvLyByaWdodF9bbGVmdF9baV1dID0gaS4KLSAgOjpzdGQ6OnZlY3RvcjxzaXplX3Q+
IGxlZnRfOwotICA6OnN0ZDo6dmVjdG9yPHNpemVfdD4gcmlnaHRfOwotCi0gIEdURVNUX0RJU0FM
TE9XX0FTU0lHTl8oTWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZSk7Ci19OwotCi1jb25zdCBzaXplX3Qg
TWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZTo6a1VudXNlZDsKLQotR1RFU1RfQVBJXyBFbGVtZW50TWF0
Y2hlclBhaXJzCi1GaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcoY29uc3QgTWF0Y2hNYXRyaXgmIGcp
IHsKLSAgcmV0dXJuIE1heEJpcGFydGl0ZU1hdGNoU3RhdGUoZykuQ29tcHV0ZSgpOwotfQotCi1z
dGF0aWMgdm9pZCBMb2dFbGVtZW50TWF0Y2hlclBhaXJWZWMoY29uc3QgRWxlbWVudE1hdGNoZXJQ
YWlycyYgcGFpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6
Om9zdHJlYW0qIHN0cmVhbSkgewotICB0eXBlZGVmIEVsZW1lbnRNYXRjaGVyUGFpcnM6OmNvbnN0
X2l0ZXJhdG9yIEl0ZXI7Ci0gIDo6c3RkOjpvc3RyZWFtJiBvcyA9ICpzdHJlYW07Ci0gIG9zIDw8
ICJ7IjsKLSAgY29uc3QgY2hhciAqc2VwID0gIiI7Ci0gIGZvciAoSXRlciBpdCA9IHBhaXJzLmJl
Z2luKCk7IGl0ICE9IHBhaXJzLmVuZCgpOyArK2l0KSB7Ci0gICAgb3MgPDwgc2VwIDw8ICJcbiAg
KCIKLSAgICAgICA8PCAiZWxlbWVudCAjIiA8PCBpdC0+Zmlyc3QgPDwgIiwgIgotICAgICAgIDw8
ICJtYXRjaGVyICMiIDw8IGl0LT5zZWNvbmQgPDwgIikiOwotICAgIHNlcCA9ICIsIjsKLSAgfQot
ICBvcyA8PCAiXG59IjsKLX0KLQotLy8gVHJpZXMgdG8gZmluZCBhIHBhaXJpbmcsIGFuZCBleHBs
YWlucyB0aGUgcmVzdWx0LgotR1RFU1RfQVBJXyBib29sIEZpbmRQYWlyaW5nKGNvbnN0IE1hdGNo
TWF0cml4JiBtYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRM
aXN0ZW5lciogbGlzdGVuZXIpIHsKLSAgRWxlbWVudE1hdGNoZXJQYWlycyBtYXRjaGVzID0gRmlu
ZE1heEJpcGFydGl0ZU1hdGNoaW5nKG1hdHJpeCk7Ci0KLSAgc2l6ZV90IG1heF9mbG93ID0gbWF0
Y2hlcy5zaXplKCk7Ci0gIGJvb2wgcmVzdWx0ID0gKG1heF9mbG93ID09IG1hdHJpeC5SaHNTaXpl
KCkpOwotCi0gIGlmICghcmVzdWx0KSB7Ci0gICAgaWYgKGxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQo
KSkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGVyZSBubyBwZXJtdXRhdGlvbiBvZiB0aGUgZWxl
bWVudHMgY2FuICIKLSAgICAgICAgICAgICAgICAgICAic2F0aXNmeSBhbGwgbWF0Y2hlcnMsIGFu
ZCB0aGUgY2xvc2VzdCBtYXRjaCBpcyAiCi0gICAgICAgICAgICAgICAgPDwgbWF4X2Zsb3cgPDwg
IiBvZiAiIDw8IG1hdHJpeC5SaHNTaXplKCkKLSAgICAgICAgICAgICAgICA8PCAiIG1hdGNoZXJz
IHdpdGggdGhlIHBhaXJpbmdzOlxuIjsKLSAgICAgIExvZ0VsZW1lbnRNYXRjaGVyUGFpclZlYyht
YXRjaGVzLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0g
IH0KLQotICBpZiAobWF0Y2hlcy5zaXplKCkgPiAxKSB7Ci0gICAgaWYgKGxpc3RlbmVyLT5Jc0lu
dGVyZXN0ZWQoKSkgewotICAgICAgY29uc3QgY2hhciAqc2VwID0gIndoZXJlOlxuIjsKLSAgICAg
IGZvciAoc2l6ZV90IG1pID0gMDsgbWkgPCBtYXRjaGVzLnNpemUoKTsgKyttaSkgewotICAgICAg
ICAqbGlzdGVuZXIgPDwgc2VwIDw8ICIgLSBlbGVtZW50ICMiIDw8IG1hdGNoZXNbbWldLmZpcnN0
Ci0gICAgICAgICAgICAgICAgICA8PCAiIGlzIG1hdGNoZWQgYnkgbWF0Y2hlciAjIiA8PCBtYXRj
aGVzW21pXS5zZWNvbmQ7Ci0gICAgICAgIHNlcCA9ICIsXG4iOwotICAgICAgfQotICAgIH0KLSAg
fQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNYXRjaE1hdHJpeDo6TmV4dEdyYXBoKCkgewot
ICBmb3IgKHNpemVfdCBpbGhzID0gMDsgaWxocyA8IExoc1NpemUoKTsgKytpbGhzKSB7Ci0gICAg
Zm9yIChzaXplX3QgaXJocyA9IDA7IGlyaHMgPCBSaHNTaXplKCk7ICsraXJocykgewotICAgICAg
Y2hhciYgYiA9IG1hdGNoZWRfW1NwYWNlSW5kZXgoaWxocywgaXJocyldOwotICAgICAgaWYgKCFi
KSB7Ci0gICAgICAgIGIgPSAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAg
IGIgPSAwOwotICAgIH0KLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgTWF0Y2hNYXRy
aXg6OlJhbmRvbWl6ZSgpIHsKLSAgZm9yIChzaXplX3QgaWxocyA9IDA7IGlsaHMgPCBMaHNTaXpl
KCk7ICsraWxocykgewotICAgIGZvciAoc2l6ZV90IGlyaHMgPSAwOyBpcmhzIDwgUmhzU2l6ZSgp
OyArK2lyaHMpIHsKLSAgICAgIGNoYXImIGIgPSBtYXRjaGVkX1tTcGFjZUluZGV4KGlsaHMsIGly
aHMpXTsKLSAgICAgIGIgPSBzdGF0aWNfY2FzdDxjaGFyPihyYW5kKCkgJiAxKTsgIC8vIE5PTElO
VAotICAgIH0KLSAgfQotfQotCi1zdGQ6OnN0cmluZyBNYXRjaE1hdHJpeDo6RGVidWdTdHJpbmco
KSBjb25zdCB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIGNvbnN0IGNoYXIgKnNlcCA9
ICIiOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IExoc1NpemUoKTsgKytpKSB7Ci0gICAgc3Mg
PDwgc2VwOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgUmhzU2l6ZSgpOyArK2opIHsKLSAg
ICAgIHNzIDw8IEhhc0VkZ2UoaSwgaik7Ci0gICAgfQotICAgIHNlcCA9ICI7IjsKLSAgfQotICBy
ZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLXZvaWQgVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1w
bEJhc2U6OkRlc2NyaWJlVG9JbXBsKAotICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qgewot
ICBpZiAobWF0Y2hlcl9kZXNjcmliZXJzXy5lbXB0eSgpKSB7Ci0gICAgKm9zIDw8ICJpcyBlbXB0
eSI7Ci0gICAgcmV0dXJuOwotICB9Ci0gIGlmIChtYXRjaGVyX2Rlc2NyaWJlcnNfLnNpemUoKSA9
PSAxKSB7Ci0gICAgKm9zIDw8ICJoYXMgIiA8PCBFbGVtZW50cygxKSA8PCAiIGFuZCB0aGF0IGVs
ZW1lbnQgIjsKLSAgICBtYXRjaGVyX2Rlc2NyaWJlcnNfWzBdLT5EZXNjcmliZVRvKG9zKTsKLSAg
ICByZXR1cm47Ci0gIH0KLSAgKm9zIDw8ICJoYXMgIiA8PCBFbGVtZW50cyhtYXRjaGVyX2Rlc2Ny
aWJlcnNfLnNpemUoKSkKLSAgICAgIDw8ICIgYW5kIHRoZXJlIGV4aXN0cyBzb21lIHBlcm11dGF0
aW9uIG9mIGVsZW1lbnRzIHN1Y2ggdGhhdDpcbiI7Ci0gIGNvbnN0IGNoYXIqIHNlcCA9ICIiOwot
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtYXRjaGVyX2Rlc2NyaWJlcnNfLnNpemUoKTsgKytp
KSB7Ci0gICAgKm9zIDw8IHNlcCA8PCAiIC0gZWxlbWVudCAjIiA8PCBpIDw8ICIgIjsKLSAgICBt
YXRjaGVyX2Rlc2NyaWJlcnNfW2ldLT5EZXNjcmliZVRvKG9zKTsKLSAgICBzZXAgPSAiLCBhbmRc
biI7Ci0gIH0KLX0KLQotdm9pZCBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFzZTo6
RGVzY3JpYmVOZWdhdGlvblRvSW1wbCgKLSAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
LSAgaWYgKG1hdGNoZXJfZGVzY3JpYmVyc18uZW1wdHkoKSkgewotICAgICpvcyA8PCAiaXNuJ3Qg
ZW1wdHkiOwotICAgIHJldHVybjsKLSAgfQotICBpZiAobWF0Y2hlcl9kZXNjcmliZXJzXy5zaXpl
KCkgPT0gMSkgewotICAgICpvcyA8PCAiZG9lc24ndCBoYXZlICIgPDwgRWxlbWVudHMoMSkKLSAg
ICAgICAgPDwgIiwgb3IgaGFzICIgPDwgRWxlbWVudHMoMSkgPDwgIiB0aGF0ICI7Ci0gICAgbWF0
Y2hlcl9kZXNjcmliZXJzX1swXS0+RGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICByZXR1cm47
Ci0gIH0KLSAgKm9zIDw8ICJkb2Vzbid0IGhhdmUgIiA8PCBFbGVtZW50cyhtYXRjaGVyX2Rlc2Ny
aWJlcnNfLnNpemUoKSkKLSAgICAgIDw8ICIsIG9yIHRoZXJlIGV4aXN0cyBubyBwZXJtdXRhdGlv
biBvZiBlbGVtZW50cyBzdWNoIHRoYXQ6XG4iOwotICBjb25zdCBjaGFyKiBzZXAgPSAiIjsKLSAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbWF0Y2hlcl9kZXNjcmliZXJzXy5zaXplKCk7ICsraSkg
ewotICAgICpvcyA8PCBzZXAgPDwgIiAtIGVsZW1lbnQgIyIgPDwgaSA8PCAiICI7Ci0gICAgbWF0
Y2hlcl9kZXNjcmliZXJzX1tpXS0+RGVzY3JpYmVUbyhvcyk7Ci0gICAgc2VwID0gIiwgYW5kXG4i
OwotICB9Ci19Ci0KLS8vIENoZWNrcyB0aGF0IGFsbCBtYXRjaGVycyBtYXRjaCBhdCBsZWFzdCBv
bmUgZWxlbWVudCwgYW5kIHRoYXQgYWxsCi0vLyBlbGVtZW50cyBtYXRjaCBhdCBsZWFzdCBvbmUg
bWF0Y2hlci4gVGhpcyBlbmFibGVzIGZhc3RlciBtYXRjaGluZwotLy8gYW5kIGJldHRlciBlcnJv
ciByZXBvcnRpbmcuCi0vLyBSZXR1cm5zIGZhbHNlLCB3cml0aW5nIGFuIGV4cGxhbmF0aW9uIHRv
ICdsaXN0ZW5lcicsIGlmIGFuZCBvbmx5Ci0vLyBpZiB0aGUgc3VjY2VzcyBjcml0ZXJpYSBhcmUg
bm90IG1ldC4KLWJvb2wgVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1wbEJhc2U6OgotICAg
IFZlcmlmeUFsbEVsZW1lbnRzQW5kTWF0Y2hlcnNBcmVNYXRjaGVkKAotICAgICAgICBjb25zdCA6
OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZWxlbWVudF9wcmludG91dHMsCi0gICAgICAgIGNv
bnN0IE1hdGNoTWF0cml4JiBtYXRyaXgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBlbGVt
ZW50X21hdGNoZWQobWF0cml4Lkxoc1NpemUoKSwgMCk7Ci0gIDo6c3RkOjp2ZWN0b3I8Y2hhcj4g
bWF0Y2hlcl9tYXRjaGVkKG1hdHJpeC5SaHNTaXplKCksIDApOwotCi0gIGZvciAoc2l6ZV90IGls
aHMgPSAwOyBpbGhzIDwgbWF0cml4Lkxoc1NpemUoKTsgaWxocysrKSB7Ci0gICAgZm9yIChzaXpl
X3QgaXJocyA9IDA7IGlyaHMgPCBtYXRyaXguUmhzU2l6ZSgpOyBpcmhzKyspIHsKLSAgICAgIGNo
YXIgbWF0Y2hlZCA9IG1hdHJpeC5IYXNFZGdlKGlsaHMsIGlyaHMpOwotICAgICAgZWxlbWVudF9t
YXRjaGVkW2lsaHNdIHw9IG1hdGNoZWQ7Ci0gICAgICBtYXRjaGVyX21hdGNoZWRbaXJoc10gfD0g
bWF0Y2hlZDsKLSAgICB9Ci0gIH0KLQotICB7Ci0gICAgY29uc3QgY2hhciogc2VwID0KLSAgICAg
ICAgIndoZXJlIHRoZSBmb2xsb3dpbmcgbWF0Y2hlcnMgZG9uJ3QgbWF0Y2ggYW55IGVsZW1lbnRz
OlxuIjsKLSAgICBmb3IgKHNpemVfdCBtaSA9IDA7IG1pIDwgbWF0Y2hlcl9tYXRjaGVkLnNpemUo
KTsgKyttaSkgewotICAgICAgaWYgKG1hdGNoZXJfbWF0Y2hlZFttaV0pCi0gICAgICAgIGNvbnRp
bnVlOwotICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICBpZiAobGlzdGVuZXItPklzSW50ZXJl
c3RlZCgpKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCBzZXAgPDwgIm1hdGNoZXIgIyIgPDwgbWkg
PDwgIjogIjsKLSAgICAgICAgbWF0Y2hlcl9kZXNjcmliZXJzX1ttaV0tPkRlc2NyaWJlVG8obGlz
dGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICAgc2VwID0gIixcbiI7Ci0gICAgICB9Ci0gICAgfQot
ICB9Ci0KLSAgewotICAgIGNvbnN0IGNoYXIqIHNlcCA9Ci0gICAgICAgICJ3aGVyZSB0aGUgZm9s
bG93aW5nIGVsZW1lbnRzIGRvbid0IG1hdGNoIGFueSBtYXRjaGVyczpcbiI7Ci0gICAgY29uc3Qg
Y2hhciogb3V0ZXJfc2VwID0gIiI7Ci0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgIG91dGVyX3Nl
cCA9ICJcbmFuZCAiOwotICAgIH0KLSAgICBmb3IgKHNpemVfdCBlaSA9IDA7IGVpIDwgZWxlbWVu
dF9tYXRjaGVkLnNpemUoKTsgKytlaSkgewotICAgICAgaWYgKGVsZW1lbnRfbWF0Y2hlZFtlaV0p
Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICBpZiAobGlz
dGVuZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCBvdXRlcl9zZXAg
PDwgc2VwIDw8ICJlbGVtZW50ICMiIDw8IGVpIDw8ICI6ICIKLSAgICAgICAgICAgICAgICAgIDw8
IGVsZW1lbnRfcHJpbnRvdXRzW2VpXTsKLSAgICAgICAgc2VwID0gIixcbiI7Ci0gICAgICAgIG91
dGVyX3NlcCA9ICIiOwotICAgICAgfQotICAgIH0KLSAgfQotICByZXR1cm4gcmVzdWx0OwotfQot
Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stc3BlYy1idWlsZGVycy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3NyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyZmExZWU0YmJiYzdiMWJjOTVhODU3MzY4NThlMDhmMGE1ZGFmNmY0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9j
ay1zcGVjLWJ1aWxkZXJzLmNjCisrKyAvZGV2L251bGwKQEAgLTEsODIyICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdv
cmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVt
ZW50cyB0aGUgc3BlYyBidWlsZGVyIHN5bnRheCAoT05fQ0FMTCBhbmQKLS8vIEVYUEVDVF9DQUxM
KS4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaCIKLQotI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8bWFw
PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ21vY2svZ21v
Y2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8
IEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQwotIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8v
IE5PTElOVAotI2VuZGlmCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5h
bCB7Ci0KLS8vIFByb3RlY3RzIHRoZSBtb2NrIG9iamVjdCByZWdpc3RyeSAoaW4gY2xhc3MgTW9j
ayksIGFsbCBmdW5jdGlvbgotLy8gbW9ja2VycywgYW5kIGFsbCBleHBlY3RhdGlvbnMuCi1HVEVT
VF9BUElfIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfZ21vY2tfbXV0ZXgpOwotCi0vLyBM
b2dzIGEgbWVzc2FnZSBpbmNsdWRpbmcgZmlsZSBhbmQgbGluZSBudW1iZXIgaW5mb3JtYXRpb24u
Ci1HVEVTVF9BUElfIHZvaWQgTG9nV2l0aExvY2F0aW9uKHRlc3Rpbmc6OmludGVybmFsOjpMb2dT
ZXZlcml0eSBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7Ci0gIDo6c3RkOjpvc3RyaW5nc3RyZWFtIHM7Ci0g
IHMgPDwgZmlsZSA8PCAiOiIgPDwgbGluZSA8PCAiOiAiIDw8IG1lc3NhZ2UgPDwgOjpzdGQ6OmVu
ZGw7Ci0gIExvZyhzZXZlcml0eSwgcy5zdHIoKSwgMCk7Ci19Ci0KLS8vIENvbnN0cnVjdHMgYW4g
RXhwZWN0YXRpb25CYXNlIG9iamVjdC4KLUV4cGVjdGF0aW9uQmFzZTo6RXhwZWN0YXRpb25CYXNl
KGNvbnN0IGNoYXIqIGFfZmlsZSwgaW50IGFfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3NvdXJjZV90ZXh0KQotICAgIDogZmlsZV8o
YV9maWxlKSwKLSAgICAgIGxpbmVfKGFfbGluZSksCi0gICAgICBzb3VyY2VfdGV4dF8oYV9zb3Vy
Y2VfdGV4dCksCi0gICAgICBjYXJkaW5hbGl0eV9zcGVjaWZpZWRfKGZhbHNlKSwKLSAgICAgIGNh
cmRpbmFsaXR5XyhFeGFjdGx5KDEpKSwKLSAgICAgIGNhbGxfY291bnRfKDApLAotICAgICAgcmV0
aXJlZF8oZmFsc2UpLAotICAgICAgZXh0cmFfbWF0Y2hlcl9zcGVjaWZpZWRfKGZhbHNlKSwKLSAg
ICAgIHJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfKGZhbHNlKSwKLSAgICAgIHJldGlyZXNfb25f
c2F0dXJhdGlvbl8oZmFsc2UpLAotICAgICAgbGFzdF9jbGF1c2VfKGtOb25lKSwKLSAgICAgIGFj
dGlvbl9jb3VudF9jaGVja2VkXyhmYWxzZSkge30KLQotLy8gRGVzdHJ1Y3RzIGFuIEV4cGVjdGF0
aW9uQmFzZSBvYmplY3QuCi1FeHBlY3RhdGlvbkJhc2U6On5FeHBlY3RhdGlvbkJhc2UoKSB7fQot
Ci0vLyBFeHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgY2FyZGluYWxpdHkgb2YgdGhpcyBleHBlY3Rh
dGlvbi4gIFVzZWQgYnkKLS8vIHRoZSBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGUgLlRpbWVz
KCkgY2xhdXNlLgotdm9pZCBFeHBlY3RhdGlvbkJhc2U6OlNwZWNpZnlDYXJkaW5hbGl0eShjb25z
dCBDYXJkaW5hbGl0eSYgYV9jYXJkaW5hbGl0eSkgewotICBjYXJkaW5hbGl0eV9zcGVjaWZpZWRf
ID0gdHJ1ZTsKLSAgY2FyZGluYWxpdHlfID0gYV9jYXJkaW5hbGl0eTsKLX0KLQotLy8gUmV0aXJl
cyBhbGwgcHJlLXJlcXVpc2l0ZXMgb2YgdGhpcyBleHBlY3RhdGlvbi4KLXZvaWQgRXhwZWN0YXRp
b25CYXNlOjpSZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCkKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9D
S19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICBpZiAoaXNfcmV0aXJlZCgpKSB7Ci0gICAg
Ly8gV2UgY2FuIHRha2UgdGhpcyBzaG9ydC1jdXQgYXMgd2UgbmV2ZXIgcmV0aXJlIGFuIGV4cGVj
dGF0aW9uCi0gICAgLy8gdW50aWwgd2UgaGF2ZSByZXRpcmVkIGFsbCBpdHMgcHJlLXJlcXVpc2l0
ZXMuCi0gICAgcmV0dXJuOwotICB9Ci0KLSAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uYmVnaW4oKTsKLSAgICAgICBpdCAh
PSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uZW5kKCk7ICsraXQpIHsKLSAgICBFeHBlY3RhdGlv
bkJhc2UqIGNvbnN0IHByZXJlcXVpc2l0ZSA9IGl0LT5leHBlY3RhdGlvbl9iYXNlKCkuZ2V0KCk7
Ci0gICAgaWYgKCFwcmVyZXF1aXNpdGUtPmlzX3JldGlyZWQoKSkgewotICAgICAgcHJlcmVxdWlz
aXRlLT5SZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCk7Ci0gICAgICBwcmVyZXF1aXNpdGUtPlJldGly
ZSgpOwotICAgIH0KLSAgfQotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIGFsbCBwcmUtcmVxdWlz
aXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uIGhhdmUgYmVlbgotLy8gc2F0aXNmaWVkLgotYm9vbCBF
eHBlY3RhdGlvbkJhc2U6OkFsbFByZXJlcXVpc2l0ZXNBcmVTYXRpc2ZpZWQoKSBjb25zdAotICAg
IEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIGdfZ21v
Y2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICBmb3IgKEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXy5iZWdpbigpOwotICAgICAgIGl0ICE9
IGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXy5lbmQoKTsgKytpdCkgewotICAgIGlmICghKGl0LT5l
eHBlY3RhdGlvbl9iYXNlKCktPklzU2F0aXNmaWVkKCkpIHx8Ci0gICAgICAgICEoaXQtPmV4cGVj
dGF0aW9uX2Jhc2UoKS0+QWxsUHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpKSkKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQWRkcyB1bnNhdGlzZmll
ZCBwcmUtcmVxdWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uIHRvICdyZXN1bHQnLgotdm9pZCBF
eHBlY3RhdGlvbkJhc2U6OkZpbmRVbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMoRXhwZWN0YXRpb25T
ZXQqIHJlc3VsdCkgY29uc3QKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19n
bW9ja19tdXRleCkgewotICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgZm9yIChFeHBl
Y3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18u
YmVnaW4oKTsKLSAgICAgICBpdCAhPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uZW5kKCk7ICsr
aXQpIHsKLSAgICBpZiAoaXQtPmV4cGVjdGF0aW9uX2Jhc2UoKS0+SXNTYXRpc2ZpZWQoKSkgewot
ICAgICAgLy8gSWYgKml0IGlzIHNhdGlzZmllZCBhbmQgaGFzIGEgY2FsbCBjb3VudCBvZiAwLCBz
b21lIG9mIGl0cwotICAgICAgLy8gcHJlLXJlcXVpc2l0ZXMgbWF5IG5vdCBiZSBzYXRpc2ZpZWQg
eWV0LgotICAgICAgaWYgKGl0LT5leHBlY3RhdGlvbl9iYXNlKCktPmNhbGxfY291bnRfID09IDAp
IHsKLSAgICAgICAgaXQtPmV4cGVjdGF0aW9uX2Jhc2UoKS0+RmluZFVuc2F0aXNmaWVkUHJlcmVx
dWlzaXRlcyhyZXN1bHQpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBOb3cgdGhh
dCB3ZSBrbm93ICppdCBpcyB1bnNhdGlzZmllZCwgd2UgYXJlIG5vdCBzbyBpbnRlcmVzdGVkCi0g
ICAgICAvLyBpbiB3aGV0aGVyIGl0cyBwcmUtcmVxdWlzaXRlcyBhcmUgc2F0aXNmaWVkLiAgVGhl
cmVmb3JlIHdlCi0gICAgICAvLyBkb24ndCByZWN1cnNpdmVseSBjYWxsIEZpbmRVbnNhdGlzZmll
ZFByZXJlcXVpc2l0ZXMoKSBoZXJlLgotICAgICAgKnJlc3VsdCArPSAqaXQ7Ci0gICAgfQotICB9
Ci19Ci0KLS8vIERlc2NyaWJlcyBob3cgbWFueSB0aW1lcyBhIGZ1bmN0aW9uIGNhbGwgbWF0Y2hp
bmcgdGhpcwotLy8gZXhwZWN0YXRpb24gaGFzIG9jY3VycmVkLgotdm9pZCBFeHBlY3RhdGlvbkJh
c2U6OkRlc2NyaWJlQ2FsbENvdW50VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdAotICAgIEdU
RVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIGdfZ21vY2tf
bXV0ZXguQXNzZXJ0SGVsZCgpOwotCi0gIC8vIERlc2NyaWJlcyBob3cgbWFueSB0aW1lcyB0aGUg
ZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkLgotICAqb3MgPDwgIiAgICAgICAgIEV4
cGVjdGVkOiB0byBiZSAiOwotICBjYXJkaW5hbGl0eSgpLkRlc2NyaWJlVG8ob3MpOwotICAqb3Mg
PDwgIlxuICAgICAgICAgICBBY3R1YWw6ICI7Ci0gIENhcmRpbmFsaXR5OjpEZXNjcmliZUFjdHVh
bENhbGxDb3VudFRvKGNhbGxfY291bnQoKSwgb3MpOwotCi0gIC8vIERlc2NyaWJlcyB0aGUgc3Rh
dGUgb2YgdGhlIGV4cGVjdGF0aW9uIChlLmcuIGlzIGl0IHNhdGlzZmllZD8KLSAgLy8gaXMgaXQg
YWN0aXZlPykuCi0gICpvcyA8PCAiIC0gIiA8PCAoSXNPdmVyU2F0dXJhdGVkKCkgPyAib3Zlci1z
YXR1cmF0ZWQiIDoKLSAgICAgICAgICAgICAgICAgICBJc1NhdHVyYXRlZCgpID8gInNhdHVyYXRl
ZCIgOgotICAgICAgICAgICAgICAgICAgIElzU2F0aXNmaWVkKCkgPyAic2F0aXNmaWVkIiA6ICJ1
bnNhdGlzZmllZCIpCi0gICAgICA8PCAiIGFuZCAiCi0gICAgICA8PCAoaXNfcmV0aXJlZCgpID8g
InJldGlyZWQiIDogImFjdGl2ZSIpOwotfQotCi0vLyBDaGVja3MgdGhlIGFjdGlvbiBjb3VudCAo
aS5lLiB0aGUgbnVtYmVyIG9mIFdpbGxPbmNlKCkgYW5kCi0vLyBXaWxsUmVwZWF0ZWRseSgpIGNs
YXVzZXMpIGFnYWluc3QgdGhlIGNhcmRpbmFsaXR5IGlmIHRoaXMgaGFzbid0Ci0vLyBiZWVuIGRv
bmUgYmVmb3JlLiAgUHJpbnRzIGEgd2FybmluZyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgb3IgdG9v
Ci0vLyBmZXcgYWN0aW9ucy4KLXZvaWQgRXhwZWN0YXRpb25CYXNlOjpDaGVja0FjdGlvbkNvdW50
SWZOb3REb25lKCkgY29uc3QKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKLSAg
Ym9vbCBzaG91bGRfY2hlY2sgPSBmYWxzZTsKLSAgewotICAgIE11dGV4TG9jayBsKCZtdXRleF8p
OwotICAgIGlmICghYWN0aW9uX2NvdW50X2NoZWNrZWRfKSB7Ci0gICAgICBhY3Rpb25fY291bnRf
Y2hlY2tlZF8gPSB0cnVlOwotICAgICAgc2hvdWxkX2NoZWNrID0gdHJ1ZTsKLSAgICB9Ci0gIH0K
LQotICBpZiAoc2hvdWxkX2NoZWNrKSB7Ci0gICAgaWYgKCFjYXJkaW5hbGl0eV9zcGVjaWZpZWRf
KSB7Ci0gICAgICAvLyBUaGUgY2FyZGluYWxpdHkgd2FzIGluZmVycmVkIC0gbm8gbmVlZCB0byBj
aGVjayB0aGUgYWN0aW9uCi0gICAgICAvLyBjb3VudCBhZ2FpbnN0IGl0LgotICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIFRoZSBjYXJkaW5hbGl0eSB3YXMgZXhwbGljaXRseSBzcGVjaWZp
ZWQuCi0gICAgY29uc3QgaW50IGFjdGlvbl9jb3VudCA9IHN0YXRpY19jYXN0PGludD4odW50eXBl
ZF9hY3Rpb25zXy5zaXplKCkpOwotICAgIGNvbnN0IGludCB1cHBlcl9ib3VuZCA9IGNhcmRpbmFs
aXR5KCkuQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpOwotICAgIGNvbnN0IGludCBsb3dlcl9ib3Vu
ZCA9IGNhcmRpbmFsaXR5KCkuQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpOwotICAgIGJvb2wgdG9v
X21hbnk7ICAvLyBUcnVlIGlmIHRoZXJlIGFyZSB0b28gbWFueSBhY3Rpb25zLCBvciBmYWxzZQot
ICAgIC8vIGlmIHRoZXJlIGFyZSB0b28gZmV3LgotICAgIGlmIChhY3Rpb25fY291bnQgPiB1cHBl
cl9ib3VuZCB8fAotICAgICAgICAoYWN0aW9uX2NvdW50ID09IHVwcGVyX2JvdW5kICYmIHJlcGVh
dGVkX2FjdGlvbl9zcGVjaWZpZWRfKSkgewotICAgICAgdG9vX21hbnkgPSB0cnVlOwotICAgIH0g
ZWxzZSBpZiAoMCA8IGFjdGlvbl9jb3VudCAmJiBhY3Rpb25fY291bnQgPCBsb3dlcl9ib3VuZCAm
JgotICAgICAgICAgICAgICAgIXJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfKSB7Ci0gICAgICB0
b29fbWFueSA9IGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgICBEZXNjcmliZUxvY2F0aW9uVG8oJnNzKTsK
LSAgICBzcyA8PCAiVG9vICIgPDwgKHRvb19tYW55ID8gIm1hbnkiIDogImZldyIpCi0gICAgICAg
PDwgIiBhY3Rpb25zIHNwZWNpZmllZCBpbiAiIDw8IHNvdXJjZV90ZXh0KCkgPDwgIi4uLlxuIgot
ICAgICAgIDw8ICJFeHBlY3RlZCB0byBiZSAiOwotICAgIGNhcmRpbmFsaXR5KCkuRGVzY3JpYmVU
bygmc3MpOwotICAgIHNzIDw8ICIsIGJ1dCBoYXMgIiA8PCAodG9vX21hbnkgPyAiIiA6ICJvbmx5
ICIpCi0gICAgICAgPDwgYWN0aW9uX2NvdW50IDw8ICIgV2lsbE9uY2UoKSIKLSAgICAgICA8PCAo
YWN0aW9uX2NvdW50ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgaWYgKHJlcGVhdGVkX2FjdGlvbl9z
cGVjaWZpZWRfKSB7Ci0gICAgICBzcyA8PCAiIGFuZCBhIFdpbGxSZXBlYXRlZGx5KCkiOwotICAg
IH0KLSAgICBzcyA8PCAiLiI7Ci0gICAgTG9nKGtXYXJuaW5nLCBzcy5zdHIoKSwgLTEpOyAgLy8g
LTEgbWVhbnMgImRvbid0IHByaW50IHN0YWNrIHRyYWNlIi4KLSAgfQotfQotCi0vLyBJbXBsZW1l
bnRzIHRoZSAuVGltZXMoKSBjbGF1c2UuCi12b2lkIEV4cGVjdGF0aW9uQmFzZTo6VW50eXBlZFRp
bWVzKGNvbnN0IENhcmRpbmFsaXR5JiBhX2NhcmRpbmFsaXR5KSB7Ci0gIGlmIChsYXN0X2NsYXVz
ZV8gPT0ga1RpbWVzKSB7Ci0gICAgRXhwZWN0U3BlY1Byb3BlcnR5KGZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAiLlRpbWVzKCkgY2Fubm90IGFwcGVhciAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICJtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpLiIpOwotICB9IGVsc2Ug
ewotICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPCBrVGltZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICIuVGltZXMoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIi5JblNlcXVlbmNlKCksIC5XaWxsT25jZSgpLCAuV2lsbFJlcGVhdGVk
bHkoKSwgIgotICAgICAgICAgICAgICAgICAgICAgICAib3IgLlJldGlyZXNPblNhdHVyYXRpb24o
KS4iKTsKLSAgfQotICBsYXN0X2NsYXVzZV8gPSBrVGltZXM7Ci0KLSAgU3BlY2lmeUNhcmRpbmFs
aXR5KGFfY2FyZGluYWxpdHkpOwotfQotCi0vLyBQb2ludHMgdG8gdGhlIGltcGxpY2l0IHNlcXVl
bmNlIGludHJvZHVjZWQgYnkgYSBsaXZpbmcgSW5TZXF1ZW5jZQotLy8gb2JqZWN0IChpZiBhbnkp
IGluIHRoZSBjdXJyZW50IHRocmVhZCBvciBOVUxMLgotR1RFU1RfQVBJXyBUaHJlYWRMb2NhbDxT
ZXF1ZW5jZSo+IGdfZ21vY2tfaW1wbGljaXRfc2VxdWVuY2U7Ci0KLS8vIFJlcG9ydHMgYW4gdW5p
bnRlcmVzdGluZyBjYWxsICh3aG9zZSBkZXNjcmlwdGlvbiBpcyBpbiBtc2cpIGluIHRoZQotLy8g
bWFubmVyIHNwZWNpZmllZCBieSAncmVhY3Rpb24nLgotdm9pZCBSZXBvcnRVbmludGVyZXN0aW5n
Q2FsbChDYWxsUmVhY3Rpb24gcmVhY3Rpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpIHsKLSAg
Ly8gSW5jbHVkZSBhIHN0YWNrIHRyYWNlIG9ubHkgaWYgLS1nbW9ja192ZXJib3NlPWluZm8gaXMg
c3BlY2lmaWVkLgotICBjb25zdCBpbnQgc3RhY2tfZnJhbWVzX3RvX3NraXAgPQotICAgICAgR01P
Q0tfRkxBRyh2ZXJib3NlKSA9PSBrSW5mb1ZlcmJvc2l0eSA/IDMgOiAtMTsKLSAgc3dpdGNoIChy
ZWFjdGlvbikgewotICAgIGNhc2Uga0FsbG93OgotICAgICAgTG9nKGtJbmZvLCBtc2csIHN0YWNr
X2ZyYW1lc190b19za2lwKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga1dhcm46Ci0gICAgICBM
b2coa1dhcm5pbmcsCi0gICAgICAgICAgbXNnICsKLSAgICAgICAgICAiXG5OT1RFOiBZb3UgY2Fu
IHNhZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRoaXMgIgotICAgICAgICAg
ICJjYWxsIHNob3VsZCBub3QgaGFwcGVuLiAgRG8gbm90IHN1cHByZXNzIGl0IGJ5IGJsaW5kbHkg
YWRkaW5nICIKLSAgICAgICAgICAiYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3UgZG9uJ3QgbWVhbiB0
byBlbmZvcmNlIHRoZSBjYWxsLiAgIgotICAgICAgICAgICJTZWUgaHR0cHM6Ly9naXRodWIuY29t
L2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5t
ZCMiCi0gICAgICAgICAgImtub3dpbmctd2hlbi10by1leHBlY3QgZm9yIGRldGFpbHMuXG4iLAot
ICAgICAgICAgIHN0YWNrX2ZyYW1lc190b19za2lwKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6ICAvLyBGQUlMCi0gICAgICBFeHBlY3QoZmFsc2UsIE5VTEwsIC0xLCBtc2cpOwotICB9Ci19
Ci0KLVVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2Uo
KQotICAgIDogbW9ja19vYmpfKE5VTEwpLCBuYW1lXygiIikge30KLQotVW50eXBlZEZ1bmN0aW9u
TW9ja2VyQmFzZTo6flVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UoKSB7fQotCi0vLyBTZXRzIHRo
ZSBtb2NrIG9iamVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8sIGFuZCByZWdpc3RlcnMK
LS8vIHRoaXMgaW5mb3JtYXRpb24gaW4gdGhlIGdsb2JhbCBtb2NrIHJlZ2lzdHJ5LiAgV2lsbCBi
ZSBjYWxsZWQKLS8vIHdoZW5ldmVyIGFuIEVYUEVDVF9DQUxMKCkgb3IgT05fQ0FMTCgpIGlzIGV4
ZWN1dGVkIG9uIHRoaXMgbW9jawotLy8gbWV0aG9kLgotdm9pZCBVbnR5cGVkRnVuY3Rpb25Nb2Nr
ZXJCYXNlOjpSZWdpc3Rlck93bmVyKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xP
Q0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgewotICAgIE11dGV4TG9jayBsKCZnX2dt
b2NrX211dGV4KTsKLSAgICBtb2NrX29ial8gPSBtb2NrX29iajsKLSAgfQotICBNb2NrOjpSZWdp
c3Rlcihtb2NrX29iaiwgdGhpcyk7Ci19Ci0KLS8vIFNldHMgdGhlIG1vY2sgb2JqZWN0IHRoaXMg
bW9jayBtZXRob2QgYmVsb25ncyB0bywgYW5kIHNldHMgdGhlIG5hbWUKLS8vIG9mIHRoZSBtb2Nr
IGZ1bmN0aW9uLiAgV2lsbCBiZSBjYWxsZWQgdXBvbiBlYWNoIGludm9jYXRpb24gb2YgdGhpcwot
Ly8gbW9jayBmdW5jdGlvbi4KLXZvaWQgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6U2V0T3du
ZXJBbmROYW1lKGNvbnN0IHZvaWQqIG1vY2tfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkKLSAgICBHVEVTVF9MT0NL
X0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIC8vIFdlIHByb3RlY3QgbmFtZV8gdW5kZXIg
Z19nbW9ja19tdXRleCBpbiBjYXNlIHRoaXMgbW9jayBmdW5jdGlvbgotICAvLyBpcyBjYWxsZWQg
ZnJvbSB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkuCi0gIE11dGV4TG9jayBsKCZnX2dtb2NrX211
dGV4KTsKLSAgbW9ja19vYmpfID0gbW9ja19vYmo7Ci0gIG5hbWVfID0gbmFtZTsKLX0KLQotLy8g
UmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgbW9ja2VkLiAgTXVzdCBiZSBj
YWxsZWQKLS8vIGFmdGVyIFJlZ2lzdGVyT3duZXIoKSBvciBTZXRPd25lckFuZE5hbWUoKSBoYXMg
YmVlbiBjYWxsZWQuCi1jb25zdCB2b2lkKiBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpNb2Nr
T2JqZWN0KCkgY29uc3QKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7
Ci0gIGNvbnN0IHZvaWQqIG1vY2tfb2JqOwotICB7Ci0gICAgLy8gV2UgcHJvdGVjdCBtb2NrX29i
al8gdW5kZXIgZ19nbW9ja19tdXRleCBpbiBjYXNlIHRoaXMgbW9jawotICAgIC8vIGZ1bmN0aW9u
IGlzIGNhbGxlZCBmcm9tIHR3byB0aHJlYWRzIGNvbmN1cnJlbnRseS4KLSAgICBNdXRleExvY2sg
bCgmZ19nbW9ja19tdXRleCk7Ci0gICAgQXNzZXJ0KG1vY2tfb2JqXyAhPSBOVUxMLCBfX0ZJTEVf
XywgX19MSU5FX18sCi0gICAgICAgICAgICJNb2NrT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVk
IGJlZm9yZSBSZWdpc3Rlck93bmVyKCkgb3IgIgotICAgICAgICAgICAiU2V0T3duZXJBbmROYW1l
KCkgaGFzIGJlZW4gY2FsbGVkLiIpOwotICAgIG1vY2tfb2JqID0gbW9ja19vYmpfOwotICB9Ci0g
IHJldHVybiBtb2NrX29iajsKLX0KLQotLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIG1vY2sg
bWV0aG9kLiAgTXVzdCBiZSBjYWxsZWQgYWZ0ZXIKLS8vIFNldE93bmVyQW5kTmFtZSgpIGhhcyBi
ZWVuIGNhbGxlZC4KLWNvbnN0IGNoYXIqIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6Ok5hbWUo
KSBjb25zdAotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgY29u
c3QgY2hhciogbmFtZTsKLSAgewotICAgIC8vIFdlIHByb3RlY3QgbmFtZV8gdW5kZXIgZ19nbW9j
a19tdXRleCBpbiBjYXNlIHRoaXMgbW9jawotICAgIC8vIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9t
IHR3byB0aHJlYWRzIGNvbmN1cnJlbnRseS4KLSAgICBNdXRleExvY2sgbCgmZ19nbW9ja19tdXRl
eCk7Ci0gICAgQXNzZXJ0KG5hbWVfICE9IE5VTEwsIF9fRklMRV9fLCBfX0xJTkVfXywKLSAgICAg
ICAgICAgIk5hbWUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIFNldE93bmVyQW5kTmFtZSgp
IGhhcyAiCi0gICAgICAgICAgICJiZWVuIGNhbGxlZC4iKTsKLSAgICBuYW1lID0gbmFtZV87Ci0g
IH0KLSAgcmV0dXJuIG5hbWU7Ci19Ci0KLS8vIENhbGN1bGF0ZXMgdGhlIHJlc3VsdCBvZiBpbnZv
a2luZyB0aGlzIG1vY2sgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4KLS8vIGFyZ3VtZW50cywgcHJp
bnRzIGl0LCBhbmQgcmV0dXJucyBpdC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKLS8vIGZv
ciBkZWxldGluZyB0aGUgcmVzdWx0LgotVW50eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UqCi1V
bnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpVbnR5cGVkSW52b2tlV2l0aChjb25zdCB2b2lkKiBj
b25zdCB1bnR5cGVkX2FyZ3MpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRl
eCkgewotICBpZiAodW50eXBlZF9leHBlY3RhdGlvbnNfLnNpemUoKSA9PSAwKSB7Ci0gICAgLy8g
Tm8gZXhwZWN0YXRpb24gaXMgc2V0IG9uIHRoaXMgbW9jayBtZXRob2QgLSB3ZSBoYXZlIGFuCi0g
ICAgLy8gdW5pbnRlcmVzdGluZyBjYWxsLgotCi0gICAgLy8gV2UgbXVzdCBnZXQgR29vZ2xlIE1v
Y2sncyByZWFjdGlvbiBvbiB1bmludGVyZXN0aW5nIGNhbGxzCi0gICAgLy8gbWFkZSBvbiB0aGlz
IG1vY2sgb2JqZWN0IEJFRk9SRSBwZXJmb3JtaW5nIHRoZSBhY3Rpb24sCi0gICAgLy8gYmVjYXVz
ZSB0aGUgYWN0aW9uIG1heSBERUxFVEUgdGhlIG1vY2sgb2JqZWN0IGFuZCBtYWtlIHRoZQotICAg
IC8vIGZvbGxvd2luZyBleHByZXNzaW9uIG1lYW5pbmdsZXNzLgotICAgIGNvbnN0IENhbGxSZWFj
dGlvbiByZWFjdGlvbiA9Ci0gICAgICAgIE1vY2s6OkdldFJlYWN0aW9uT25VbmludGVyZXN0aW5n
Q2FsbHMoTW9ja09iamVjdCgpKTsKLQotICAgIC8vIFRydWUgaWZmIHdlIG5lZWQgdG8gcHJpbnQg
dGhpcyBjYWxsJ3MgYXJndW1lbnRzIGFuZCByZXR1cm4KLSAgICAvLyB2YWx1ZS4gIFRoaXMgZGVm
aW5pdGlvbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoCi0gICAgLy8gdGhlIGJlaGF2aW9yIG9m
IFJlcG9ydFVuaW50ZXJlc3RpbmdDYWxsKCkuCi0gICAgY29uc3QgYm9vbCBuZWVkX3RvX3JlcG9y
dF91bmludGVyZXN0aW5nX2NhbGwgPQotICAgICAgICAvLyBJZiB0aGUgdXNlciBhbGxvd3MgdGhp
cyB1bmludGVyZXN0aW5nIGNhbGwsIHdlIHByaW50IGl0Ci0gICAgICAgIC8vIG9ubHkgd2hlbiBo
ZSB3YW50cyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzLgotICAgICAgICByZWFjdGlvbiA9PSBrQWxs
b3cgPyBMb2dJc1Zpc2libGUoa0luZm8pIDoKLSAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMg
dGhpcyB0byBiZSBhIHdhcm5pbmcsIHdlIHByaW50IGl0IG9ubHkKLSAgICAgICAgLy8gd2hlbiBo
ZSB3YW50cyB0byBzZWUgd2FybmluZ3MuCi0gICAgICAgIHJlYWN0aW9uID09IGtXYXJuID8gTG9n
SXNWaXNpYmxlKGtXYXJuaW5nKSA6Ci0gICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIHVzZXIgd2Fu
dHMgdGhpcyB0byBiZSBhbiBlcnJvciwgYW5kIHdlCi0gICAgICAgIC8vIHNob3VsZCBhbHdheXMg
cHJpbnQgZGV0YWlsZWQgaW5mb3JtYXRpb24gaW4gdGhlIGVycm9yLgotICAgICAgICB0cnVlOwot
Ci0gICAgaWYgKCFuZWVkX3RvX3JlcG9ydF91bmludGVyZXN0aW5nX2NhbGwpIHsKLSAgICAgIC8v
IFBlcmZvcm0gdGhlIGFjdGlvbiB3aXRob3V0IHByaW50aW5nIHRoZSBjYWxsIGluZm9ybWF0aW9u
LgotICAgICAgcmV0dXJuIHRoaXMtPlVudHlwZWRQZXJmb3JtRGVmYXVsdEFjdGlvbih1bnR5cGVk
X2FyZ3MsICIiKTsKLSAgICB9Ci0KLSAgICAvLyBXYXJucyBhYm91dCB0aGUgdW5pbnRlcmVzdGlu
ZyBjYWxsLgotICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgdGhpcy0+VW50eXBlZERl
c2NyaWJlVW5pbnRlcmVzdGluZ0NhbGwodW50eXBlZF9hcmdzLCAmc3MpOwotCi0gICAgLy8gQ2Fs
Y3VsYXRlcyB0aGUgZnVuY3Rpb24gcmVzdWx0LgotICAgIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xk
ZXJCYXNlKiBjb25zdCByZXN1bHQgPQotICAgICAgICB0aGlzLT5VbnR5cGVkUGVyZm9ybURlZmF1
bHRBY3Rpb24odW50eXBlZF9hcmdzLCBzcy5zdHIoKSk7Ci0KLSAgICAvLyBQcmludHMgdGhlIGZ1
bmN0aW9uIHJlc3VsdC4KLSAgICBpZiAocmVzdWx0ICE9IE5VTEwpCi0gICAgICByZXN1bHQtPlBy
aW50QXNBY3Rpb25SZXN1bHQoJnNzKTsKLQotICAgIFJlcG9ydFVuaW50ZXJlc3RpbmdDYWxsKHJl
YWN0aW9uLCBzcy5zdHIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIGJvb2wgaXNf
ZXhjZXNzaXZlID0gZmFsc2U7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIDo6c3RkOjpz
dHJpbmdzdHJlYW0gd2h5OwotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGxvYzsKLSAgY29uc3Qgdm9p
ZCogdW50eXBlZF9hY3Rpb24gPSBOVUxMOwotCi0gIC8vIFRoZSBVbnR5cGVkRmluZE1hdGNoaW5n
RXhwZWN0YXRpb24oKSBmdW5jdGlvbiBhY3F1aXJlcyBhbmQKLSAgLy8gcmVsZWFzZXMgZ19nbW9j
a19tdXRleC4KLSAgY29uc3QgRXhwZWN0YXRpb25CYXNlKiBjb25zdCB1bnR5cGVkX2V4cGVjdGF0
aW9uID0KLSAgICAgIHRoaXMtPlVudHlwZWRGaW5kTWF0Y2hpbmdFeHBlY3RhdGlvbigKLSAgICAg
ICAgICB1bnR5cGVkX2FyZ3MsICZ1bnR5cGVkX2FjdGlvbiwgJmlzX2V4Y2Vzc2l2ZSwKLSAgICAg
ICAgICAmc3MsICZ3aHkpOwotICBjb25zdCBib29sIGZvdW5kID0gdW50eXBlZF9leHBlY3RhdGlv
biAhPSBOVUxMOwotCi0gIC8vIFRydWUgaWZmIHdlIG5lZWQgdG8gcHJpbnQgdGhlIGNhbGwncyBh
cmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZS4KLSAgLy8gVGhpcyBkZWZpbml0aW9uIG11c3QgYmUg
a2VwdCBpbiBzeW5jIHdpdGggdGhlIHVzZXMgb2YgRXhwZWN0KCkKLSAgLy8gYW5kIExvZygpIGlu
IHRoaXMgZnVuY3Rpb24uCi0gIGNvbnN0IGJvb2wgbmVlZF90b19yZXBvcnRfY2FsbCA9Ci0gICAg
ICAhZm91bmQgfHwgaXNfZXhjZXNzaXZlIHx8IExvZ0lzVmlzaWJsZShrSW5mbyk7Ci0gIGlmICgh
bmVlZF90b19yZXBvcnRfY2FsbCkgewotICAgIC8vIFBlcmZvcm0gdGhlIGFjdGlvbiB3aXRob3V0
IHByaW50aW5nIHRoZSBjYWxsIGluZm9ybWF0aW9uLgotICAgIHJldHVybgotICAgICAgICB1bnR5
cGVkX2FjdGlvbiA9PSBOVUxMID8KLSAgICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1EZWZhdWx0
QWN0aW9uKHVudHlwZWRfYXJncywgIiIpIDoKLSAgICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1B
Y3Rpb24odW50eXBlZF9hY3Rpb24sIHVudHlwZWRfYXJncyk7Ci0gIH0KLQotICBzcyA8PCAiICAg
IEZ1bmN0aW9uIGNhbGw6ICIgPDwgTmFtZSgpOwotICB0aGlzLT5VbnR5cGVkUHJpbnRBcmdzKHVu
dHlwZWRfYXJncywgJnNzKTsKLQotICAvLyBJbiBjYXNlIHRoZSBhY3Rpb24gZGVsZXRlcyBhIHBp
ZWNlIG9mIHRoZSBleHBlY3RhdGlvbiwgd2UKLSAgLy8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYmVm
b3JlaGFuZC4KLSAgaWYgKGZvdW5kICYmICFpc19leGNlc3NpdmUpIHsKLSAgICB1bnR5cGVkX2V4
cGVjdGF0aW9uLT5EZXNjcmliZUxvY2F0aW9uVG8oJmxvYyk7Ci0gIH0KLQotICBVbnR5cGVkQWN0
aW9uUmVzdWx0SG9sZGVyQmFzZSogY29uc3QgcmVzdWx0ID0KLSAgICAgIHVudHlwZWRfYWN0aW9u
ID09IE5VTEwgPwotICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1EZWZhdWx0QWN0aW9uKHVudHlw
ZWRfYXJncywgc3Muc3RyKCkpIDoKLSAgICAgIHRoaXMtPlVudHlwZWRQZXJmb3JtQWN0aW9uKHVu
dHlwZWRfYWN0aW9uLCB1bnR5cGVkX2FyZ3MpOwotICBpZiAocmVzdWx0ICE9IE5VTEwpCi0gICAg
cmVzdWx0LT5QcmludEFzQWN0aW9uUmVzdWx0KCZzcyk7Ci0gIHNzIDw8ICJcbiIgPDwgd2h5LnN0
cigpOwotCi0gIGlmICghZm91bmQpIHsKLSAgICAvLyBObyBleHBlY3RhdGlvbiBtYXRjaGVzIHRo
aXMgY2FsbCAtIHJlcG9ydHMgYSBmYWlsdXJlLgotICAgIEV4cGVjdChmYWxzZSwgTlVMTCwgLTEs
IHNzLnN0cigpKTsKLSAgfSBlbHNlIGlmIChpc19leGNlc3NpdmUpIHsKLSAgICAvLyBXZSBoYWQg
YW4gdXBwZXItYm91bmQgdmlvbGF0aW9uIGFuZCB0aGUgZmFpbHVyZSBtZXNzYWdlIGlzIGluIHNz
LgotICAgIEV4cGVjdChmYWxzZSwgdW50eXBlZF9leHBlY3RhdGlvbi0+ZmlsZSgpLAotICAgICAg
ICAgICB1bnR5cGVkX2V4cGVjdGF0aW9uLT5saW5lKCksIHNzLnN0cigpKTsKLSAgfSBlbHNlIHsK
LSAgICAvLyBXZSBoYWQgYW4gZXhwZWN0ZWQgY2FsbCBhbmQgdGhlIG1hdGNoaW5nIGV4cGVjdGF0
aW9uIGlzCi0gICAgLy8gZGVzY3JpYmVkIGluIHNzLgotICAgIExvZyhrSW5mbywgbG9jLnN0cigp
ICsgc3Muc3RyKCksIDIpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gUmV0dXJu
cyBhbiBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIGFuZCBjby1vd25zIGV4cCwK
LS8vIHdoaWNoIG11c3QgYmUgYW4gZXhwZWN0YXRpb24gb24gdGhpcyBtb2NrIGZ1bmN0aW9uLgot
RXhwZWN0YXRpb24gVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6R2V0SGFuZGxlT2YoRXhwZWN0
YXRpb25CYXNlKiBleHApIHsKLSAgZm9yIChVbnR5cGVkRXhwZWN0YXRpb25zOjpjb25zdF9pdGVy
YXRvciBpdCA9Ci0gICAgICAgICAgIHVudHlwZWRfZXhwZWN0YXRpb25zXy5iZWdpbigpOwotICAg
ICAgIGl0ICE9IHVudHlwZWRfZXhwZWN0YXRpb25zXy5lbmQoKTsgKytpdCkgewotICAgIGlmIChp
dC0+Z2V0KCkgPT0gZXhwKSB7Ci0gICAgICByZXR1cm4gRXhwZWN0YXRpb24oKml0KTsKLSAgICB9
Ci0gIH0KLQotICBBc3NlcnQoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVfXywgIkNhbm5vdCBmaW5k
IGV4cGVjdGF0aW9uLiIpOwotICByZXR1cm4gRXhwZWN0YXRpb24oKTsKLSAgLy8gVGhlIGFib3Zl
IHN0YXRlbWVudCBpcyBqdXN0IHRvIG1ha2UgdGhlIGNvZGUgY29tcGlsZSwgYW5kIHdpbGwKLSAg
Ly8gbmV2ZXIgYmUgZXhlY3V0ZWQuCi19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0
aW9ucyBvbiB0aGlzIG1vY2sgZnVuY3Rpb24gaGF2ZSBiZWVuCi0vLyBzYXRpc2ZpZWQuICBSZXBv
cnRzIG9uZSBvciBtb3JlIEdvb2dsZSBUZXN0IG5vbi1mYXRhbCBmYWlsdXJlcwotLy8gYW5kIHJl
dHVybnMgZmFsc2UgaWYgbm90LgotYm9vbCBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpCi0gICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tf
UkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7
Ci0gIGJvb2wgZXhwZWN0YXRpb25zX21ldCA9IHRydWU7Ci0gIGZvciAoVW50eXBlZEV4cGVjdGF0
aW9uczo6Y29uc3RfaXRlcmF0b3IgaXQgPQotICAgICAgICAgICB1bnR5cGVkX2V4cGVjdGF0aW9u
c18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSB1bnR5cGVkX2V4cGVjdGF0aW9uc18uZW5kKCk7ICsr
aXQpIHsKLSAgICBFeHBlY3RhdGlvbkJhc2UqIGNvbnN0IHVudHlwZWRfZXhwZWN0YXRpb24gPSBp
dC0+Z2V0KCk7Ci0gICAgaWYgKHVudHlwZWRfZXhwZWN0YXRpb24tPklzT3ZlclNhdHVyYXRlZCgp
KSB7Ci0gICAgICAvLyBUaGVyZSB3YXMgYW4gdXBwZXItYm91bmQgdmlvbGF0aW9uLiAgU2luY2Ug
dGhlIGVycm9yIHdhcwotICAgICAgLy8gYWxyZWFkeSByZXBvcnRlZCB3aGVuIGl0IG9jY3VycmVk
LCB0aGVyZSBpcyBubyBuZWVkIHRvIGRvCi0gICAgICAvLyBhbnl0aGluZyBoZXJlLgotICAgICAg
ZXhwZWN0YXRpb25zX21ldCA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAoIXVudHlwZWRfZXhwZWN0
YXRpb24tPklzU2F0aXNmaWVkKCkpIHsKLSAgICAgIGV4cGVjdGF0aW9uc19tZXQgPSBmYWxzZTsK
LSAgICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgICBzcyAgPDwgIkFjdHVhbCBmdW5j
dGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgIDw8IHVudHlwZWRfZXhw
ZWN0YXRpb24tPnNvdXJjZV90ZXh0KCkgPDwgIi4uLlxuIjsKLSAgICAgIC8vIE5vIG5lZWQgdG8g
c2hvdyB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgdGhlIGV4cGVjdGF0aW9uCi0gICAgICAv
LyBpbiB0aGUgZGVzY3JpcHRpb24sIGFzIHRoZSBFeHBlY3QoKSBjYWxsIHRoYXQgZm9sbG93cyBh
bHJlYWR5Ci0gICAgICAvLyB0YWtlcyBjYXJlIG9mIGl0LgotICAgICAgdW50eXBlZF9leHBlY3Rh
dGlvbi0+TWF5YmVEZXNjcmliZUV4dHJhTWF0Y2hlclRvKCZzcyk7Ci0gICAgICB1bnR5cGVkX2V4
cGVjdGF0aW9uLT5EZXNjcmliZUNhbGxDb3VudFRvKCZzcyk7Ci0gICAgICBFeHBlY3QoZmFsc2Us
IHVudHlwZWRfZXhwZWN0YXRpb24tPmZpbGUoKSwKLSAgICAgICAgICAgICB1bnR5cGVkX2V4cGVj
dGF0aW9uLT5saW5lKCksIHNzLnN0cigpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZWxldGluZyBv
dXIgZXhwZWN0YXRpb25zIG1heSB0cmlnZ2VyIG90aGVyIG1vY2sgb2JqZWN0cyB0byBiZSBkZWxl
dGVkLCBmb3IKLSAgLy8gZXhhbXBsZSBpZiBhbiBhY3Rpb24gY29udGFpbnMgYSByZWZlcmVuY2Ug
Y291bnRlZCBzbWFydCBwb2ludGVyIHRvIHRoYXQKLSAgLy8gbW9jayBvYmplY3QsIGFuZCB0aGF0
IGlzIHRoZSBsYXN0IHJlZmVyZW5jZS4gU28gaWYgd2UgZGVsZXRlIG91cgotICAvLyBleHBlY3Rh
dGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBnbG9iYWwgbXV0ZXggd2UgbWF5IGRlYWRs
b2NrIHdoZW4KLSAgLy8gdGhpcyBtZXRob2QgaXMgY2FsbGVkIGFnYWluLiBJbnN0ZWFkLCBtYWtl
IGEgY29weSBvZiB0aGUgc2V0IG9mCi0gIC8vIGV4cGVjdGF0aW9ucyB0byBkZWxldGUsIGNsZWFy
IG91ciBzZXQgd2l0aGluIHRoZSBtdXRleCwgYW5kIHRoZW4gY2xlYXIgdGhlCi0gIC8vIGNvcGll
ZCBzZXQgb3V0c2lkZSBvZiBpdC4KLSAgVW50eXBlZEV4cGVjdGF0aW9ucyBleHBlY3RhdGlvbnNf
dG9fZGVsZXRlOwotICB1bnR5cGVkX2V4cGVjdGF0aW9uc18uc3dhcChleHBlY3RhdGlvbnNfdG9f
ZGVsZXRlKTsKLQotICBnX2dtb2NrX211dGV4LlVubG9jaygpOwotICBleHBlY3RhdGlvbnNfdG9f
ZGVsZXRlLmNsZWFyKCk7Ci0gIGdfZ21vY2tfbXV0ZXguTG9jaygpOwotCi0gIHJldHVybiBleHBl
Y3RhdGlvbnNfbWV0OwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gQ2xhc3Mg
TW9jay4KLQotbmFtZXNwYWNlIHsKLQotdHlwZWRlZiBzdGQ6OnNldDxpbnRlcm5hbDo6VW50eXBl
ZEZ1bmN0aW9uTW9ja2VyQmFzZSo+IEZ1bmN0aW9uTW9ja2VyczsKLQotLy8gVGhlIGN1cnJlbnQg
c3RhdGUgb2YgYSBtb2NrIG9iamVjdC4gIFN1Y2ggaW5mb3JtYXRpb24gaXMgbmVlZGVkIGZvcgot
Ly8gZGV0ZWN0aW5nIGxlYWtlZCBtb2NrIG9iamVjdHMgYW5kIGV4cGxpY2l0bHkgdmVyaWZ5aW5n
IGEgbW9jaydzCi0vLyBleHBlY3RhdGlvbnMuCi1zdHJ1Y3QgTW9ja09iamVjdFN0YXRlIHsKLSAg
TW9ja09iamVjdFN0YXRlKCkKLSAgICAgIDogZmlyc3RfdXNlZF9maWxlKE5VTEwpLCBmaXJzdF91
c2VkX2xpbmUoLTEpLCBsZWFrYWJsZShmYWxzZSkge30KLQotICAvLyBXaGVyZSBpbiB0aGUgc291
cmNlIGZpbGUgYW4gT05fQ0FMTCBvciBFWFBFQ1RfQ0FMTCBpcyBmaXJzdAotICAvLyBpbnZva2Vk
IG9uIHRoaXMgbW9jayBvYmplY3QuCi0gIGNvbnN0IGNoYXIqIGZpcnN0X3VzZWRfZmlsZTsKLSAg
aW50IGZpcnN0X3VzZWRfbGluZTsKLSAgOjpzdGQ6OnN0cmluZyBmaXJzdF91c2VkX3Rlc3RfY2Fz
ZTsKLSAgOjpzdGQ6OnN0cmluZyBmaXJzdF91c2VkX3Rlc3Q7Ci0gIGJvb2wgbGVha2FibGU7ICAv
LyB0cnVlIGlmZiBpdCdzIE9LIHRvIGxlYWsgdGhlIG9iamVjdC4KLSAgRnVuY3Rpb25Nb2NrZXJz
IGZ1bmN0aW9uX21vY2tlcnM7ICAvLyBBbGwgcmVnaXN0ZXJlZCBtZXRob2RzIG9mIHRoZSBvYmpl
Y3QuCi19OwotCi0vLyBBIGdsb2JhbCByZWdpc3RyeSBob2xkaW5nIHRoZSBzdGF0ZSBvZiBhbGwg
bW9jayBvYmplY3RzIHRoYXQgYXJlCi0vLyBhbGl2ZS4gIEEgbW9jayBvYmplY3QgaXMgYWRkZWQg
dG8gdGhpcyByZWdpc3RyeSB0aGUgZmlyc3QgdGltZQotLy8gTW9jazo6QWxsb3dMZWFrKCksIE9O
X0NBTEwoKSwgb3IgRVhQRUNUX0NBTEwoKSBpcyBjYWxsZWQgb24gaXQuICBJdAotLy8gaXMgcmVt
b3ZlZCBmcm9tIHRoZSByZWdpc3RyeSBpbiB0aGUgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yLgot
Y2xhc3MgTW9ja09iamVjdFJlZ2lzdHJ5IHsKLSBwdWJsaWM6Ci0gIC8vIE1hcHMgYSBtb2NrIG9i
amVjdCAoaWRlbnRpZmllZCBieSBpdHMgYWRkcmVzcykgdG8gaXRzIHN0YXRlLgotICB0eXBlZGVm
IHN0ZDo6bWFwPGNvbnN0IHZvaWQqLCBNb2NrT2JqZWN0U3RhdGU+IFN0YXRlTWFwOwotCi0gIC8v
IFRoaXMgZGVzdHJ1Y3RvciB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgcHJvZ3JhbSBleGl0cywgYWZ0
ZXIgYWxsCi0gIC8vIHRlc3RzIGluIGl0IGhhdmUgYmVlbiBydW4uICBCeSB0aGVuLCB0aGVyZSBz
aG91bGQgYmUgbm8gbW9jawotICAvLyBvYmplY3QgYWxpdmUuICBUaGVyZWZvcmUgd2UgcmVwb3J0
IGFueSBsaXZpbmcgb2JqZWN0IGFzIHRlc3QKLSAgLy8gZmFpbHVyZSwgdW5sZXNzIHRoZSB1c2Vy
IGV4cGxpY2l0bHkgYXNrZWQgdXMgdG8gaWdub3JlIGl0LgotICB+TW9ja09iamVjdFJlZ2lzdHJ5
KCkgewotICAgIC8vICJ1c2luZyA6OnN0ZDo6Y291dDsiIGRvZXNuJ3Qgd29yayB3aXRoIFN5bWJp
YW4ncyBTVExwb3J0LCB3aGVyZSBjb3V0IGlzCi0gICAgLy8gYSBtYWNyby4KLQotICAgIGlmICgh
R01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpKQotICAgICAgcmV0dXJuOwotCi0gICAgaW50
IGxlYWtlZF9jb3VudCA9IDA7Ci0gICAgZm9yIChTdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBzdGF0ZXNfLmJlZ2luKCk7IGl0ICE9IHN0YXRlc18uZW5kKCk7Ci0gICAgICAgICArK2l0KSB7
Ci0gICAgICBpZiAoaXQtPnNlY29uZC5sZWFrYWJsZSkgIC8vIFRoZSB1c2VyIHNhaWQgaXQncyBm
aW5lIHRvIGxlYWsgdGhpcyBvYmplY3QuCi0gICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAvLyBU
T0RPKHdhbkBnb29nbGUuY29tKTogUHJpbnQgdGhlIHR5cGUgb2YgdGhlIGxlYWtlZCBvYmplY3Qu
Ci0gICAgICAvLyBUaGlzIGNhbiBoZWxwIHRoZSB1c2VyIGlkZW50aWZ5IHRoZSBsZWFrZWQgb2Jq
ZWN0LgotICAgICAgc3RkOjpjb3V0IDw8ICJcbiI7Ci0gICAgICBjb25zdCBNb2NrT2JqZWN0U3Rh
dGUmIHN0YXRlID0gaXQtPnNlY29uZDsKLSAgICAgIHN0ZDo6Y291dCA8PCBpbnRlcm5hbDo6Rm9y
bWF0RmlsZUxvY2F0aW9uKHN0YXRlLmZpcnN0X3VzZWRfZmlsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpcnN0X3VzZWRfbGluZSk7Ci0g
ICAgICBzdGQ6OmNvdXQgPDwgIiBFUlJPUjogdGhpcyBtb2NrIG9iamVjdCI7Ci0gICAgICBpZiAo
c3RhdGUuZmlyc3RfdXNlZF90ZXN0ICE9ICIiKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiICh1
c2VkIGluIHRlc3QgIiA8PCBzdGF0ZS5maXJzdF91c2VkX3Rlc3RfY2FzZSA8PCAiLiIKLSAgICAg
ICAgICAgICA8PCBzdGF0ZS5maXJzdF91c2VkX3Rlc3QgPDwgIikiOwotICAgICAgfQotICAgICAg
c3RkOjpjb3V0IDw8ICIgc2hvdWxkIGJlIGRlbGV0ZWQgYnV0IG5ldmVyIGlzLiBJdHMgYWRkcmVz
cyBpcyBAIgotICAgICAgICAgICA8PCBpdC0+Zmlyc3QgPDwgIi4iOwotICAgICAgbGVha2VkX2Nv
dW50Kys7Ci0gICAgfQotICAgIGlmIChsZWFrZWRfY291bnQgPiAwKSB7Ci0gICAgICBzdGQ6OmNv
dXQgPDwgIlxuRVJST1I6ICIgPDwgbGVha2VkX2NvdW50Ci0gICAgICAgICAgIDw8ICIgbGVha2Vk
IG1vY2sgIiA8PCAobGVha2VkX2NvdW50ID09IDEgPyAib2JqZWN0IiA6ICJvYmplY3RzIikKLSAg
ICAgICAgICAgPDwgIiBmb3VuZCBhdCBwcm9ncmFtIGV4aXQuXG4iOwotICAgICAgc3RkOjpjb3V0
LmZsdXNoKCk7Ci0gICAgICA6OnN0ZDo6Y2Vyci5mbHVzaCgpOwotICAgICAgLy8gUlVOX0FMTF9U
RVNUUygpIGhhcyBhbHJlYWR5IHJldHVybmVkIHdoZW4gdGhpcyBkZXN0cnVjdG9yIGlzCi0gICAg
ICAvLyBjYWxsZWQuICBUaGVyZWZvcmUgd2UgY2Fubm90IHVzZSB0aGUgbm9ybWFsIEdvb2dsZSBU
ZXN0Ci0gICAgICAvLyBmYWlsdXJlIHJlcG9ydGluZyBtZWNoYW5pc20uCi0gICAgICBfZXhpdCgx
KTsgIC8vIFdlIGNhbm5vdCBjYWxsIGV4aXQoKSBhcyBpdCBpcyBub3QgcmVlbnRyYW50IGFuZAot
ICAgICAgICAgICAgICAgICAvLyBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gY2FsbGVkLgotICAgIH0K
LSAgfQotCi0gIFN0YXRlTWFwJiBzdGF0ZXMoKSB7IHJldHVybiBzdGF0ZXNfOyB9Ci0KLSBwcml2
YXRlOgotICBTdGF0ZU1hcCBzdGF0ZXNfOwotfTsKLQotLy8gUHJvdGVjdGVkIGJ5IGdfZ21vY2tf
bXV0ZXguCi1Nb2NrT2JqZWN0UmVnaXN0cnkgZ19tb2NrX29iamVjdF9yZWdpc3RyeTsKLQotLy8g
TWFwcyBhIG1vY2sgb2JqZWN0IHRvIHRoZSByZWFjdGlvbiBHb29nbGUgTW9jayBzaG91bGQgaGF2
ZSB3aGVuIGFuCi0vLyB1bmludGVyZXN0aW5nIG1ldGhvZCBpcyBjYWxsZWQuICBQcm90ZWN0ZWQg
YnkgZ19nbW9ja19tdXRleC4KLXN0ZDo6bWFwPGNvbnN0IHZvaWQqLCBpbnRlcm5hbDo6Q2FsbFJl
YWN0aW9uPiBnX3VuaW50ZXJlc3RpbmdfY2FsbF9yZWFjdGlvbjsKLQotLy8gU2V0cyB0aGUgcmVh
Y3Rpb24gR29vZ2xlIE1vY2sgc2hvdWxkIGhhdmUgd2hlbiBhbiB1bmludGVyZXN0aW5nCi0vLyBt
ZXRob2Qgb2YgdGhlIGdpdmVuIG1vY2sgb2JqZWN0IGlzIGNhbGxlZC4KLXZvaWQgU2V0UmVhY3Rp
b25PblVuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29iaiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q2FsbFJlYWN0aW9uIHJlYWN0aW9u
KQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0g
IGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotICBnX3Vu
aW50ZXJlc3RpbmdfY2FsbF9yZWFjdGlvblttb2NrX29ial0gPSByZWFjdGlvbjsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlCi0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIHRvIGFsbG93IHVuaW50ZXJlc3Rp
bmcgY2FsbHMgb24gdGhlIGdpdmVuIG1vY2sKLS8vIG9iamVjdC4KLXZvaWQgTW9jazo6QWxsb3dV
bmludGVyZXN0aW5nQ2FsbHMoY29uc3Qgdm9pZCogbW9ja19vYmopCi0gICAgR1RFU1RfTE9DS19F
WENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKLSAgU2V0UmVhY3Rpb25PblVuaW50
ZXJlc3RpbmdDYWxscyhtb2NrX29iaiwgaW50ZXJuYWw6OmtBbGxvdyk7Ci19Ci0KLS8vIFRlbGxz
IEdvb2dsZSBNb2NrIHRvIHdhcm4gdGhlIHVzZXIgYWJvdXQgdW5pbnRlcmVzdGluZyBjYWxscyBv
biB0aGUKLS8vIGdpdmVuIG1vY2sgb2JqZWN0Lgotdm9pZCBNb2NrOjpXYXJuVW5pbnRlcmVzdGlu
Z0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGlu
dGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIFNldFJlYWN0aW9uT25VbmludGVyZXN0aW5nQ2Fs
bHMobW9ja19vYmosIGludGVybmFsOjprV2Fybik7Ci19Ci0KLS8vIFRlbGxzIEdvb2dsZSBNb2Nr
IHRvIGZhaWwgdW5pbnRlcmVzdGluZyBjYWxscyBvbiB0aGUgZ2l2ZW4gbW9jawotLy8gb2JqZWN0
Lgotdm9pZCBNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2Jq
KQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0g
IFNldFJlYWN0aW9uT25VbmludGVyZXN0aW5nQ2FsbHMobW9ja19vYmosIGludGVybmFsOjprRmFp
bCk7Ci19Ci0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIHRoZSBnaXZlbiBtb2NrIG9iamVjdCBpcyBi
ZWluZyBkZXN0cm95ZWQgYW5kIGl0cwotLy8gZW50cnkgaW4gdGhlIGNhbGwtcmVhY3Rpb24gdGFi
bGUgc2hvdWxkIGJlIHJlbW92ZWQuCi12b2lkIE1vY2s6OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24o
Y29uc3Qgdm9pZCogbW9ja19vYmopCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6
OmdfZ21vY2tfbXV0ZXgpIHsKLSAgaW50ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19n
bW9ja19tdXRleCk7Ci0gIGdfdW5pbnRlcmVzdGluZ19jYWxsX3JlYWN0aW9uLmVyYXNlKG1vY2tf
b2JqKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgcmVhY3Rpb24gR29vZ2xlIE1vY2sgd2lsbCBoYXZl
IG9uIHVuaW50ZXJlc3RpbmcgY2FsbHMKLS8vIG1hZGUgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0
LgotaW50ZXJuYWw6OkNhbGxSZWFjdGlvbiBNb2NrOjpHZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGlu
Z0NhbGxzKAotICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgICBHVEVTVF9MT0NLX0VY
Q0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBpbnRlcm5hbDo6TXV0ZXhMb2Nr
IGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLSAgcmV0dXJuIChnX3VuaW50ZXJlc3Rpbmdf
Y2FsbF9yZWFjdGlvbi5jb3VudChtb2NrX29iaikgPT0gMCkgPwotICAgICAgaW50ZXJuYWw6OmtE
ZWZhdWx0IDogZ191bmludGVyZXN0aW5nX2NhbGxfcmVhY3Rpb25bbW9ja19vYmpdOwotfQotCi0v
LyBUZWxscyBHb29nbGUgTW9jayB0byBpZ25vcmUgbW9ja19vYmogd2hlbiBjaGVja2luZyBmb3Ig
bGVha2VkIG1vY2sKLS8vIG9iamVjdHMuCi12b2lkIE1vY2s6OkFsbG93TGVhayhjb25zdCB2b2lk
KiBtb2NrX29iaikKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19t
dXRleCkgewotICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4
KTsKLSAgZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKVttb2NrX29ial0ubGVha2FibGUg
PSB0cnVlOwotfQotCi0vLyBWZXJpZmllcyBhbmQgY2xlYXJzIGFsbCBleHBlY3RhdGlvbnMgb24g
dGhlIGdpdmVuIG1vY2sgb2JqZWN0LiAgSWYKLS8vIHRoZSBleHBlY3RhdGlvbnMgYXJlbid0IHNh
dGlzZmllZCwgZ2VuZXJhdGVzIG9uZSBvciBtb3JlIEdvb2dsZQotLy8gVGVzdCBub24tZmF0YWwg
ZmFpbHVyZXMgYW5kIHJldHVybnMgZmFsc2UuCi1ib29sIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVy
bmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6
OmdfZ21vY2tfbXV0ZXgpOwotICByZXR1cm4gVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2Nr
ZWQobW9ja19vYmopOwotfQotCi0vLyBWZXJpZmllcyBhbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBn
aXZlbiBtb2NrIG9iamVjdCBhbmQgY2xlYXJzIGl0cwotLy8gZGVmYXVsdCBhY3Rpb25zIGFuZCBl
eHBlY3RhdGlvbnMuICBSZXR1cm5zIHRydWUgaWZmIHRoZQotLy8gdmVyaWZpY2F0aW9uIHdhcyBz
dWNjZXNzZnVsLgotYm9vbCBNb2NrOjpWZXJpZnlBbmRDbGVhcih2b2lkKiBtb2NrX29iaikKLSAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBpbnRl
cm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLSAgQ2xlYXJEZWZh
dWx0QWN0aW9uc0xvY2tlZChtb2NrX29iaik7Ci0gIHJldHVybiBWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9uc0xvY2tlZChtb2NrX29iaik7Ci19Ci0KLS8vIFZlcmlmaWVzIGFuZCBjbGVhcnMgYWxs
IGV4cGVjdGF0aW9ucyBvbiB0aGUgZ2l2ZW4gbW9jayBvYmplY3QuICBJZgotLy8gdGhlIGV4cGVj
dGF0aW9ucyBhcmVuJ3Qgc2F0aXNmaWVkLCBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgR29vZ2xlCi0v
LyBUZXN0IG5vbi1mYXRhbCBmYWlsdXJlcyBhbmQgcmV0dXJucyBmYWxzZS4KLWJvb2wgTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQodm9pZCogbW9ja19vYmopCi0gICAgR1RF
U1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0g
IGludGVybmFsOjpnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgaWYgKGdfbW9ja19vYmpl
Y3RfcmVnaXN0cnkuc3RhdGVzKCkuY291bnQobW9ja19vYmopID09IDApIHsKLSAgICAvLyBObyBF
WFBFQ1RfQ0FMTCgpIHdhcyBzZXQgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICAgIHJldHVy
biB0cnVlOwotICB9Ci0KLSAgLy8gVmVyaWZpZXMgYW5kIGNsZWFycyB0aGUgZXhwZWN0YXRpb25z
IG9uIGVhY2ggbW9jayBtZXRob2QgaW4gdGhlCi0gIC8vIGdpdmVuIG1vY2sgb2JqZWN0LgotICBi
b29sIGV4cGVjdGF0aW9uc19tZXQgPSB0cnVlOwotICBGdW5jdGlvbk1vY2tlcnMmIG1vY2tlcnMg
PQotICAgICAgZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKVttb2NrX29ial0uZnVuY3Rp
b25fbW9ja2VyczsKLSAgZm9yIChGdW5jdGlvbk1vY2tlcnM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bW9ja2Vycy5iZWdpbigpOwotICAgICAgIGl0ICE9IG1vY2tlcnMuZW5kKCk7ICsraXQpIHsKLSAg
ICBpZiAoISgqaXQpLT5WZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpKSB7Ci0gICAg
ICBleHBlY3RhdGlvbnNfbWV0ID0gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgLy8gV2UgZG9uJ3Qg
Y2xlYXIgdGhlIGNvbnRlbnQgb2YgbW9ja2VycywgYXMgdGhleSBtYXkgc3RpbGwgYmUKLSAgLy8g
bmVlZGVkIGJ5IENsZWFyRGVmYXVsdEFjdGlvbnNMb2NrZWQoKS4KLSAgcmV0dXJuIGV4cGVjdGF0
aW9uc19tZXQ7Ci19Ci0KLS8vIFJlZ2lzdGVycyBhIG1vY2sgb2JqZWN0IGFuZCBhIG1vY2sgbWV0
aG9kIGl0IG93bnMuCi12b2lkIE1vY2s6OlJlZ2lzdGVyKGNvbnN0IHZvaWQqIG1vY2tfb2JqLAot
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSog
bW9ja2VyKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4
KSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwot
ICBnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpW21vY2tfb2JqXS5mdW5jdGlvbl9tb2Nr
ZXJzLmluc2VydChtb2NrZXIpOwotfQotCi0vLyBUZWxscyBHb29nbGUgTW9jayB3aGVyZSBpbiB0
aGUgc291cmNlIGNvZGUgbW9ja19vYmogaXMgdXNlZCBpbiBhbgotLy8gT05fQ0FMTCBvciBFWFBF
Q1RfQ0FMTC4gIEluIGNhc2UgbW9ja19vYmogaXMgbGVha2VkLCB0aGlzCi0vLyBpbmZvcm1hdGlv
biBoZWxwcyB0aGUgdXNlciBpZGVudGlmeSB3aGljaCBvYmplY3QgaXQgaXMuCi12b2lkIE1vY2s6
OlJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoY29uc3Qgdm9pZCogbW9ja19vYmosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tf
bXV0ZXgpIHsKLSAgaW50ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19nbW9ja19tdXRl
eCk7Ci0gIE1vY2tPYmplY3RTdGF0ZSYgc3RhdGUgPSBnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0
YXRlcygpW21vY2tfb2JqXTsKLSAgaWYgKHN0YXRlLmZpcnN0X3VzZWRfZmlsZSA9PSBOVUxMKSB7
Ci0gICAgc3RhdGUuZmlyc3RfdXNlZF9maWxlID0gZmlsZTsKLSAgICBzdGF0ZS5maXJzdF91c2Vk
X2xpbmUgPSBsaW5lOwotICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICAg
ICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgICBp
ZiAodGVzdF9pbmZvICE9IE5VTEwpIHsKLSAgICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBy
ZWNvcmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdoZW4gdGhlCi0gICAgICAvLyBPTl9DQUxMIG9yIEVY
UEVDVF9DQUxMIGlzIGludm9rZWQgZnJvbSBTZXRVcFRlc3RDYXNlKCkgb3IKLSAgICAgIC8vIFRl
YXJEb3duVGVzdENhc2UoKS4KLSAgICAgIHN0YXRlLmZpcnN0X3VzZWRfdGVzdF9jYXNlID0gdGVz
dF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpOwotICAgICAgc3RhdGUuZmlyc3RfdXNlZF90ZXN0ID0g
dGVzdF9pbmZvLT5uYW1lKCk7Ci0gICAgfQotICB9Ci19Ci0KLS8vIFVucmVnaXN0ZXJzIGEgbW9j
ayBtZXRob2Q7IHJlbW92ZXMgdGhlIG93bmluZyBtb2NrIG9iamVjdCBmcm9tIHRoZQotLy8gcmVn
aXN0cnkgd2hlbiB0aGUgbGFzdCBtb2NrIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggaXQgaGFzIGJl
ZW4KLS8vIHVucmVnaXN0ZXJlZC4gIFRoaXMgaXMgY2FsbGVkIG9ubHkgaW4gdGhlIGRlc3RydWN0
b3Igb2YKLS8vIEZ1bmN0aW9uTW9ja2VyQmFzZS4KLXZvaWQgTW9jazo6VW5yZWdpc3RlckxvY2tl
ZChpbnRlcm5hbDo6VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSogbW9ja2VyKQotICAgIEdURVNU
X0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBp
bnRlcm5hbDo6Z19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gIGZvciAoTW9ja09iamVjdFJl
Z2lzdHJ5OjpTdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPQotICAgICAgICAgICBnX21vY2tfb2JqZWN0
X3JlZ2lzdHJ5LnN0YXRlcygpLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZ19tb2NrX29iamVjdF9y
ZWdpc3RyeS5zdGF0ZXMoKS5lbmQoKTsgKytpdCkgewotICAgIEZ1bmN0aW9uTW9ja2VycyYgbW9j
a2VycyA9IGl0LT5zZWNvbmQuZnVuY3Rpb25fbW9ja2VyczsKLSAgICBpZiAobW9ja2Vycy5lcmFz
ZShtb2NrZXIpID4gMCkgewotICAgICAgLy8gbW9ja2VyIHdhcyBpbiBtb2NrZXJzIGFuZCBoYXMg
YmVlbiBqdXN0IHJlbW92ZWQuCi0gICAgICBpZiAobW9ja2Vycy5lbXB0eSgpKSB7Ci0gICAgICAg
IGdfbW9ja19vYmplY3RfcmVnaXN0cnkuc3RhdGVzKCkuZXJhc2UoaXQpOwotICAgICAgfQotICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgfQotfQotCi0vLyBDbGVhcnMgYWxsIE9OX0NBTEwoKXMgc2V0
IG9uIHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KLXZvaWQgTW9jazo6Q2xlYXJEZWZhdWx0QWN0aW9u
c0xvY2tlZCh2b2lkKiBtb2NrX29iaikKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJF
RF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKLSAgaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgu
QXNzZXJ0SGVsZCgpOwotCi0gIGlmIChnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpLmNv
dW50KG1vY2tfb2JqKSA9PSAwKSB7Ci0gICAgLy8gTm8gT05fQ0FMTCgpIHdhcyBzZXQgb24gdGhl
IGdpdmVuIG1vY2sgb2JqZWN0LgotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENsZWFycyB0aGUg
ZGVmYXVsdCBhY3Rpb25zIGZvciBlYWNoIG1vY2sgbWV0aG9kIGluIHRoZSBnaXZlbiBtb2NrCi0g
IC8vIG9iamVjdC4KLSAgRnVuY3Rpb25Nb2NrZXJzJiBtb2NrZXJzID0KLSAgICAgIGdfbW9ja19v
YmplY3RfcmVnaXN0cnkuc3RhdGVzKClbbW9ja19vYmpdLmZ1bmN0aW9uX21vY2tlcnM7Ci0gIGZv
ciAoRnVuY3Rpb25Nb2NrZXJzOjpjb25zdF9pdGVyYXRvciBpdCA9IG1vY2tlcnMuYmVnaW4oKTsK
LSAgICAgICBpdCAhPSBtb2NrZXJzLmVuZCgpOyArK2l0KSB7Ci0gICAgKCppdCktPkNsZWFyRGVm
YXVsdEFjdGlvbnNMb2NrZWQoKTsKLSAgfQotCi0gIC8vIFdlIGRvbid0IGNsZWFyIHRoZSBjb250
ZW50IG9mIG1vY2tlcnMsIGFzIHRoZXkgbWF5IHN0aWxsIGJlCi0gIC8vIG5lZWRlZCBieSBWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpLgotfQotCi1FeHBlY3RhdGlvbjo6RXhwZWN0
YXRpb24oKSB7fQotCi1FeHBlY3RhdGlvbjo6RXhwZWN0YXRpb24oCi0gICAgY29uc3QgaW50ZXJu
YWw6OmxpbmtlZF9wdHI8aW50ZXJuYWw6OkV4cGVjdGF0aW9uQmFzZT4mIGFuX2V4cGVjdGF0aW9u
X2Jhc2UpCi0gICAgOiBleHBlY3RhdGlvbl9iYXNlXyhhbl9leHBlY3RhdGlvbl9iYXNlKSB7fQot
Ci1FeHBlY3RhdGlvbjo6fkV4cGVjdGF0aW9uKCkge30KLQotLy8gQWRkcyBhbiBleHBlY3RhdGlv
biB0byBhIHNlcXVlbmNlLgotdm9pZCBTZXF1ZW5jZTo6QWRkRXhwZWN0YXRpb24oY29uc3QgRXhw
ZWN0YXRpb24mIGV4cGVjdGF0aW9uKSBjb25zdCB7Ci0gIGlmICgqbGFzdF9leHBlY3RhdGlvbl8g
IT0gZXhwZWN0YXRpb24pIHsKLSAgICBpZiAobGFzdF9leHBlY3RhdGlvbl8tPmV4cGVjdGF0aW9u
X2Jhc2UoKSAhPSBOVUxMKSB7Ci0gICAgICBleHBlY3RhdGlvbi5leHBlY3RhdGlvbl9iYXNlKCkt
PmltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXwotICAgICAgICAgICs9ICpsYXN0X2V4cGVjdGF0aW9u
XzsKLSAgICB9Ci0gICAgKmxhc3RfZXhwZWN0YXRpb25fID0gZXhwZWN0YXRpb247Ci0gIH0KLX0K
LQotLy8gQ3JlYXRlcyB0aGUgaW1wbGljaXQgc2VxdWVuY2UgaWYgdGhlcmUgaXNuJ3Qgb25lLgot
SW5TZXF1ZW5jZTo6SW5TZXF1ZW5jZSgpIHsKLSAgaWYgKGludGVybmFsOjpnX2dtb2NrX2ltcGxp
Y2l0X3NlcXVlbmNlLmdldCgpID09IE5VTEwpIHsKLSAgICBpbnRlcm5hbDo6Z19nbW9ja19pbXBs
aWNpdF9zZXF1ZW5jZS5zZXQobmV3IFNlcXVlbmNlKTsKLSAgICBzZXF1ZW5jZV9jcmVhdGVkXyA9
IHRydWU7Ci0gIH0gZWxzZSB7Ci0gICAgc2VxdWVuY2VfY3JlYXRlZF8gPSBmYWxzZTsKLSAgfQot
fQotCi0vLyBEZWxldGVzIHRoZSBpbXBsaWNpdCBzZXF1ZW5jZSBpZiBpdCB3YXMgY3JlYXRlZCBi
eSB0aGUgY29uc3RydWN0b3IKLS8vIG9mIHRoaXMgb2JqZWN0LgotSW5TZXF1ZW5jZTo6fkluU2Vx
dWVuY2UoKSB7Ci0gIGlmIChzZXF1ZW5jZV9jcmVhdGVkXykgewotICAgIGRlbGV0ZSBpbnRlcm5h
bDo6Z19nbW9ja19pbXBsaWNpdF9zZXF1ZW5jZS5nZXQoKTsKLSAgICBpbnRlcm5hbDo6Z19nbW9j
a19pbXBsaWNpdF9zZXF1ZW5jZS5zZXQoTlVMTCk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3NyYy9nbW9jay5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFjM2Q4NDJi
YTA3NTgxNWYzMTA5ODM5ZTc5OTBlNGQ5ZGZkMmUwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2suY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxODMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21v
Y2stcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRPRE8od2FuQGdvb2dsZS5j
b20pOiBzdXBwb3J0IHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB0bwotLy8gY29udHJvbCB0
aGUgZmxhZyB2YWx1ZXMsIGxpa2Ugd2hhdCBHb29nbGUgVGVzdCBkb2VzLgotCi1HTU9DS19ERUZJ
TkVfYm9vbF8oY2F0Y2hfbGVha2VkX21vY2tzLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICJ0
cnVlIGlmZiBHb29nbGUgTW9jayBzaG91bGQgcmVwb3J0IGxlYWtlZCBtb2NrIG9iamVjdHMgIgot
ICAgICAgICAgICAgICAgICAgICJhcyBmYWlsdXJlcy4iKTsKLQotR01PQ0tfREVGSU5FX3N0cmlu
Z18odmVyYm9zZSwgaW50ZXJuYWw6OmtXYXJuaW5nVmVyYm9zaXR5LAotICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRyb2xzIGhvdyB2ZXJib3NlIEdvb2dsZSBNb2NrJ3Mgb3V0cHV0IGlzLiIKLSAg
ICAgICAgICAgICAgICAgICAgICIgIFZhbGlkIHZhbHVlczpcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICIgIGluZm8gICAgLSBwcmludHMgYWxsIG1lc3NhZ2VzLlxuIgotICAgICAgICAgICAgICAg
ICAgICAgIiAgd2FybmluZyAtIHByaW50cyB3YXJuaW5ncyBhbmQgZXJyb3JzLlxuIgotICAgICAg
ICAgICAgICAgICAgICAgIiAgZXJyb3IgICAtIHByaW50cyBlcnJvcnMgb25seS4iKTsKLQotbmFt
ZXNwYWNlIGludGVybmFsIHsKLQotLy8gUGFyc2VzIGEgc3RyaW5nIGFzIGEgY29tbWFuZCBsaW5l
IGZsYWcuICBUaGUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZQotLy8gZm9ybWF0ICItLWdtb2NrX2Zs
YWc9dmFsdWUiLiAgV2hlbiBkZWZfb3B0aW9uYWwgaXMgdHJ1ZSwgdGhlCi0vLyAiPXZhbHVlIiBw
YXJ0IGNhbiBiZSBvbWl0dGVkLgotLy8KLS8vIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmbGFn
LCBvciBOVUxMIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KLXN0YXRpYyBjb25zdCBjaGFyKiBQYXJz
ZUdvb2dsZU1vY2tGbGFnVmFsdWUoY29uc3QgY2hhciogc3RyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZl9vcHRpb25hbCkgewotICAv
LyBzdHIgYW5kIGZsYWcgbXVzdCBub3QgYmUgTlVMTC4KLSAgaWYgKHN0ciA9PSBOVUxMIHx8IGZs
YWcgPT0gTlVMTCkgcmV0dXJuIE5VTEw7Ci0KLSAgLy8gVGhlIGZsYWcgbXVzdCBzdGFydCB3aXRo
ICItLWdtb2NrXyIuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZsYWdfc3RyID0gc3RkOjpzdHJpbmco
Ii0tZ21vY2tfIikgKyBmbGFnOwotICBjb25zdCBzaXplX3QgZmxhZ19sZW4gPSBmbGFnX3N0ci5s
ZW5ndGgoKTsKLSAgaWYgKHN0cm5jbXAoc3RyLCBmbGFnX3N0ci5jX3N0cigpLCBmbGFnX2xlbikg
IT0gMCkgcmV0dXJuIE5VTEw7Ci0KLSAgLy8gU2tpcHMgdGhlIGZsYWcgbmFtZS4KLSAgY29uc3Qg
Y2hhciogZmxhZ19lbmQgPSBzdHIgKyBmbGFnX2xlbjsKLQotICAvLyBXaGVuIGRlZl9vcHRpb25h
bCBpcyB0cnVlLCBpdCdzIE9LIHRvIG5vdCBoYXZlIGEgIj12YWx1ZSIgcGFydC4KLSAgaWYgKGRl
Zl9vcHRpb25hbCAmJiAoZmxhZ19lbmRbMF0gPT0gJ1wwJykpIHsKLSAgICByZXR1cm4gZmxhZ19l
bmQ7Ci0gIH0KLQotICAvLyBJZiBkZWZfb3B0aW9uYWwgaXMgdHJ1ZSBhbmQgdGhlcmUgYXJlIG1v
cmUgY2hhcmFjdGVycyBhZnRlciB0aGUKLSAgLy8gZmxhZyBuYW1lLCBvciBpZiBkZWZfb3B0aW9u
YWwgaXMgZmFsc2UsIHRoZXJlIG11c3QgYmUgYSAnPScgYWZ0ZXIKLSAgLy8gdGhlIGZsYWcgbmFt
ZS4KLSAgaWYgKGZsYWdfZW5kWzBdICE9ICc9JykgcmV0dXJuIE5VTEw7Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgc3RyaW5nIGFmdGVyICI9Ii4KLSAgcmV0dXJuIGZsYWdfZW5kICsgMTsKLX0KLQotLy8g
UGFyc2VzIGEgc3RyaW5nIGZvciBhIEdvb2dsZSBNb2NrIGJvb2wgZmxhZywgaW4gdGhlIGZvcm0g
b2YKLS8vICItLWdtb2NrX2ZsYWc9dmFsdWUiLgotLy8KLS8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0
aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwotLy8gdHJ1ZS4gIE9u
IGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1zdGF0aWMg
Ym9vbCBQYXJzZUdvb2dsZU1vY2tCb29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIq
IGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB2YWx1ZSkg
ewotICAvLyBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4KLSAgY29uc3Qg
Y2hhciogY29uc3QgdmFsdWVfc3RyID0gUGFyc2VHb29nbGVNb2NrRmxhZ1ZhbHVlKHN0ciwgZmxh
ZywgdHJ1ZSk7Ci0KLSAgLy8gQWJvcnRzIGlmIHRoZSBwYXJzaW5nIGZhaWxlZC4KLSAgaWYgKHZh
bHVlX3N0ciA9PSBOVUxMKSByZXR1cm4gZmFsc2U7Ci0KLSAgLy8gQ29udmVydHMgdGhlIHN0cmlu
ZyB2YWx1ZSB0byBhIGJvb2wuCi0gICp2YWx1ZSA9ICEoKnZhbHVlX3N0ciA9PSAnMCcgfHwgKnZh
bHVlX3N0ciA9PSAnZicgfHwgKnZhbHVlX3N0ciA9PSAnRicpOwotICByZXR1cm4gdHJ1ZTsKLX0K
LQotLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhIEdvb2dsZSBNb2NrIHN0cmluZyBmbGFnLCBpbiB0
aGUgZm9ybSBvZgotLy8gIi0tZ21vY2tfZmxhZz12YWx1ZSIuCi0vLwotLy8gT24gc3VjY2Vzcywg
c3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCi0vLyB0
cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmc+Ci1zdGF0aWMgYm9vbCBQYXJzZUdvb2dsZU1vY2tT
dHJpbmdGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKiB2YWx1ZSkgewotICAvLyBHZXRzIHRo
ZSB2YWx1ZSBvZiB0aGUgZmxhZyBhcyBhIHN0cmluZy4KLSAgY29uc3QgY2hhciogY29uc3QgdmFs
dWVfc3RyID0gUGFyc2VHb29nbGVNb2NrRmxhZ1ZhbHVlKHN0ciwgZmxhZywgZmFsc2UpOwotCi0g
IC8vIEFib3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi0gIGlmICh2YWx1ZV9zdHIgPT0gTlVM
TCkgcmV0dXJuIGZhbHNlOwotCi0gIC8vIFNldHMgKnZhbHVlIHRvIHRoZSB2YWx1ZSBvZiB0aGUg
ZmxhZy4KLSAgKnZhbHVlID0gdmFsdWVfc3RyOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gVGhl
IGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIEluaXRHb29nbGVNb2NrKCkuCi0vLwotLy8gVGhl
IHR5cGUgcGFyYW1ldGVyIENoYXJUeXBlIGNhbiBiZSBpbnN0YW50aWF0ZWQgdG8gZWl0aGVyIGNo
YXIgb3IKLS8vIHdjaGFyX3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci12b2lkIElu
aXRHb29nbGVNb2NrSW1wbChpbnQqIGFyZ2MsIENoYXJUeXBlKiogYXJndikgewotICAvLyBNYWtl
cyBzdXJlIEdvb2dsZSBUZXN0IGlzIGluaXRpYWxpemVkLiAgSW5pdEdvb2dsZVRlc3QoKSBpcwot
ICAvLyBpZGVtcG90ZW50LCBzbyBpdCdzIGZpbmUgaWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgY2Fs
bGVkIGl0LgotICBJbml0R29vZ2xlVGVzdChhcmdjLCBhcmd2KTsKLSAgaWYgKCphcmdjIDw9IDAp
IHJldHVybjsKLQotICBmb3IgKGludCBpID0gMTsgaSAhPSAqYXJnYzsgaSsrKSB7Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgYXJnX3N0cmluZyA9IFN0cmVhbWFibGVUb1N0cmluZyhhcmd2W2ldKTsK
LSAgICBjb25zdCBjaGFyKiBjb25zdCBhcmcgPSBhcmdfc3RyaW5nLmNfc3RyKCk7Ci0KLSAgICAv
LyBEbyB3ZSBzZWUgYSBHb29nbGUgTW9jayBmbGFnPwotICAgIGlmIChQYXJzZUdvb2dsZU1vY2tC
b29sRmxhZyhhcmcsICJjYXRjaF9sZWFrZWRfbW9ja3MiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmR01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpKSB8fAotICAgICAgICBQ
YXJzZUdvb2dsZU1vY2tTdHJpbmdGbGFnKGFyZywgInZlcmJvc2UiLCAmR01PQ0tfRkxBRyh2ZXJi
b3NlKSkpIHsKLSAgICAgIC8vIFllcy4gIFNoaWZ0IHRoZSByZW1haW5kZXIgb2YgdGhlIGFyZ3Yg
bGlzdCBsZWZ0IGJ5IG9uZS4gIE5vdGUKLSAgICAgIC8vIHRoYXQgYXJndiBoYXMgKCphcmdjICsg
MSkgZWxlbWVudHMsIHRoZSBsYXN0IG9uZSBhbHdheXMgYmVpbmcKLSAgICAgIC8vIE5VTEwuICBU
aGUgZm9sbG93aW5nIGxvb3AgbW92ZXMgdGhlIHRyYWlsaW5nIE5VTEwgZWxlbWVudCBhcwotICAg
ICAgLy8gd2VsbC4KLSAgICAgIGZvciAoaW50IGogPSBpOyBqICE9ICphcmdjOyBqKyspIHsKLSAg
ICAgICAgYXJndltqXSA9IGFyZ3ZbaiArIDFdOwotICAgICAgfQotCi0gICAgICAvLyBEZWNyZW1l
bnRzIHRoZSBhcmd1bWVudCBjb3VudC4KLSAgICAgICgqYXJnYyktLTsKLQotICAgICAgLy8gV2Ug
YWxzbyBuZWVkIHRvIGRlY3JlbWVudCB0aGUgaXRlcmF0b3IgYXMgd2UganVzdCByZW1vdmVkCi0g
ICAgICAvLyBhbiBlbGVtZW50LgotICAgICAgaS0tOwotICAgIH0KLSAgfQotfQotCi19ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gSW5pdGlhbGl6ZXMgR29vZ2xlIE1vY2suICBUaGlzIG11
c3QgYmUgY2FsbGVkIGJlZm9yZSBydW5uaW5nIHRoZQotLy8gdGVzdHMuICBJbiBwYXJ0aWN1bGFy
LCBpdCBwYXJzZXMgYSBjb21tYW5kIGxpbmUgZm9yIHRoZSBmbGFncyB0aGF0Ci0vLyBHb29nbGUg
TW9jayByZWNvZ25pemVzLiAgV2hlbmV2ZXIgYSBHb29nbGUgTW9jayBmbGFnIGlzIHNlZW4sIGl0
IGlzCi0vLyByZW1vdmVkIGZyb20gYXJndiwgYW5kICphcmdjIGlzIGRlY3JlbWVudGVkLgotLy8K
LS8vIE5vIHZhbHVlIGlzIHJldHVybmVkLiAgSW5zdGVhZCwgdGhlIEdvb2dsZSBNb2NrIGZsYWcg
dmFyaWFibGVzIGFyZQotLy8gdXBkYXRlZC4KLS8vCi0vLyBTaW5jZSBHb29nbGUgVGVzdCBpcyBu
ZWVkZWQgZm9yIEdvb2dsZSBNb2NrIHRvIHdvcmssIHRoaXMgZnVuY3Rpb24KLS8vIGFsc28gaW5p
dGlhbGl6ZXMgR29vZ2xlIFRlc3QgYW5kIHBhcnNlcyBpdHMgZmxhZ3MsIGlmIHRoYXQgaGFzbid0
Ci0vLyBiZWVuIGRvbmUuCi1HVEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZU1vY2soaW50KiBhcmdj
LCBjaGFyKiogYXJndikgewotICBpbnRlcm5hbDo6SW5pdEdvb2dsZU1vY2tJbXBsKGFyZ2MsIGFy
Z3YpOwotfQotCi0vLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5k
b3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCi0vLyBVTklDT0RFIG1vZGUuCi1HVEVTVF9BUElfIHZv
aWQgSW5pdEdvb2dsZU1vY2soaW50KiBhcmdjLCB3Y2hhcl90KiogYXJndikgewotICBpbnRlcm5h
bDo6SW5pdEdvb2dsZU1vY2tJbXBsKGFyZ2MsIGFyZ3YpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrX21haW4uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9zcmMvZ21vY2tfbWFpbi5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YmQ1YmUwM2JlMjJmNTY5MGU1NTdjZGIwYzgwNGRhZjIwNjRiODg3Yy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2tfbWFp
bi5jYworKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlICJnbW9jay9nbW9j
ay5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLS8vIE1TIEMrKyBjb21waWxlci9saW5r
ZXIgaGFzIGEgYnVnIG9uIFdpbmRvd3MgKG5vdCBvbiBXaW5kb3dzIENFKSwgd2hpY2gKLS8vIGNh
dXNlcyBhIGxpbmsgZXJyb3Igd2hlbiBfdG1haW4gaXMgZGVmaW5lZCBpbiBhIHN0YXRpYyBsaWJy
YXJ5IGFuZCBVTklDT0RFCi0vLyBpcyBlbmFibGVkLiBGb3IgdGhpcyByZWFzb24gaW5zdGVhZCBv
ZiBfdG1haW4sIG1haW4gZnVuY3Rpb24gaXMgdXNlZCBvbgotLy8gV2luZG93cy4gU2VlIHRoZSBm
b2xsb3dpbmcgbGluayB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhpcyBidWc6Ci0v
LyBodHRwOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9WaWV3
RmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTM5NDQ2NCAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKLSMgaW5jbHVkZSA8dGNoYXIuaD4gIC8vIE5PTElOVAotCi1HVEVTVF9B
UElfIGludCBfdG1haW4oaW50IGFyZ2MsIFRDSEFSKiogYXJndikgewotI2Vsc2UKLUdURVNUX0FQ
SV8gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0jZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0gIHN0ZDo6Y291dCA8PCAiUnVubmluZyBtYWluKCkgZnJvbSBnbW9j
a19tYWluLmNjXG4iOwotICAvLyBTaW5jZSBHb29nbGUgTW9jayBkZXBlbmRzIG9uIEdvb2dsZSBU
ZXN0LCBJbml0R29vZ2xlTW9jaygpIGlzCi0gIC8vIGFsc28gcmVzcG9uc2libGUgZm9yIGluaXRp
YWxpemluZyBHb29nbGUgVGVzdC4gIFRoZXJlZm9yZSB0aGVyZSdzCi0gIC8vIG5vIG5lZWQgZm9y
IGNhbGxpbmcgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKSBzZXBhcmF0ZWx5LgotICB0ZXN0aW5n
OjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWFjdGlvbnNfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNDcwZGU0YzU1Y2RhM2Q1Nzk2ZmFlYTQ5ODgyNDk4OTVlZDZmY2M4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQxMSArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAt
IGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBm
aWxlIHRlc3RzIHRoZSBidWlsdC1pbiBhY3Rpb25zLgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2st
YWN0aW9ucy5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLW5hbWVzcGFjZSB7
Ci0KLS8vIFRoaXMgbGlzdCBzaG91bGQgYmUga2VwdCBzb3J0ZWQuCi11c2luZyB0ZXN0aW5nOjpB
Y3Rpb247Ci11c2luZyB0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7Ci11c2luZyB0ZXN0aW5nOjpB
c3NpZ247Ci11c2luZyB0ZXN0aW5nOjpCeU1vdmU7Ci11c2luZyB0ZXN0aW5nOjpCeVJlZjsKLXVz
aW5nIHRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKLXVzaW5nIHRlc3Rpbmc6OkRvRGVmYXVsdDsKLXVz
aW5nIHRlc3Rpbmc6Oklnbm9yZVJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6Okludm9rZTsKLXVzaW5n
IHRlc3Rpbmc6Okludm9rZVdpdGhvdXRBcmdzOwotdXNpbmcgdGVzdGluZzo6TWFrZVBvbHltb3Jw
aGljQWN0aW9uOwotdXNpbmcgdGVzdGluZzo6TmU7Ci11c2luZyB0ZXN0aW5nOjpQb2x5bW9ycGhp
Y0FjdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybk51
bGw7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm5SZWY7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm5SZWZP
ZkNvcHk7Ci11c2luZyB0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6U2V0
QXJndW1lbnRQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6XzsKLXVzaW5nIHRlc3Rpbmc6OmdldDsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpCdWlsdEluRGVmYXVsdFZhbHVlOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkludDY0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2NDsK
LXVzaW5nIHRlc3Rpbmc6Om1ha2VfdHVwbGU7Ci11c2luZyB0ZXN0aW5nOjp0dXBsZTsKLXVzaW5n
IHRlc3Rpbmc6OnR1cGxlX2VsZW1lbnQ7Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LXVzaW5nIHRlc3Rpbmc6OlNldEVycm5vQW5kUmV0dXJuOwotI2VuZGlmCi0KLSNpZiBHVEVTVF9I
QVNfUFJPVE9CVUZfCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1lc3NhZ2U7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19QUk9UT0JVRl8KLQotLy8gVGVzdHMgdGhhdCBCdWlsdEluRGVmYXVs
dFZhbHVlPFQqPjo6R2V0KCkgcmV0dXJucyBOVUxMLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVl
VGVzdCwgSXNOdWxsRm9yUG9pbnRlclR5cGVzKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZh
dWx0VmFsdWU8aW50Kj46OkdldCgpID09IE5VTEwpOwotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVm
YXVsdFZhbHVlPGNvbnN0IGNoYXIqPjo6R2V0KCkgPT0gTlVMTCk7Ci0gIEVYUEVDVF9UUlVFKEJ1
aWx0SW5EZWZhdWx0VmFsdWU8dm9pZCo+OjpHZXQoKSA9PSBOVUxMKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBCdWlsdEluRGVmYXVsdFZhbHVlPFQqPjo6RXhpc3RzKCkgcmV0dXJuIHRydWUuCi1URVNU
KEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0LCBFeGlzdHNGb3JQb2ludGVyVHlwZXMpIHsKLSAgRVhQ
RUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQqPjo6RXhpc3RzKCkpOwotICBFWFBFQ1Rf
VFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPGNvbnN0IGNoYXIqPjo6RXhpc3RzKCkpOwotICBFWFBF
Q1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHZvaWQqPjo6RXhpc3RzKCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkdldCgpIHJldHVybnMgMCB3aGVuIFQg
aXMgYQotLy8gYnVpbHQtaW4gbnVtZXJpYyB0eXBlLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVl
VGVzdCwgSXNaZXJvRm9yTnVtZXJpY1R5cGVzKSB7Ci0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRl
ZmF1bHRWYWx1ZTx1bnNpZ25lZCBjaGFyPjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMCwgQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxzaWduZWQgY2hhcj46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1aWx0
SW5EZWZhdWx0VmFsdWU8Y2hhcj46OkdldCgpKTsKLSNpZiBHTU9DS19IQVNfU0lHTkVEX1dDSEFS
X1RfCi0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCB3Y2hhcl90
Pjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgd2No
YXJfdD46OkdldCgpKTsKLSNlbmRpZgotI2lmIEdNT0NLX1dDSEFSX1RfSVNfTkFUSVZFXwotICBF
WFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx3Y2hhcl90Pjo6R2V0KCkpOwotI2VuZGlm
Ci0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCBzaG9ydD46Okdl
dCgpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWdu
ZWQgc2hvcnQ+OjpHZXQoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDAsIEJ1aWx0SW5EZWZh
dWx0VmFsdWU8c2hvcnQ+OjpHZXQoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDBVLCBCdWls
dEluRGVmYXVsdFZhbHVlPHVuc2lnbmVkIGludD46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1
aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIGludD46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1
aWx0SW5EZWZhdWx0VmFsdWU8aW50Pjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMFUsIEJ1aWx0SW5E
ZWZhdWx0VmFsdWU8dW5zaWduZWQgbG9uZz46OkdldCgpKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
RVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgbG9uZz46OkdldCgpKTsgIC8vIE5PTElO
VAotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxsb25nPjo6R2V0KCkpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxVSW50NjQ+OjpHZXQo
KSk7Ci0gIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZhbHVlPEludDY0Pjo6R2V0KCkpOwot
ICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxmbG9hdD46OkdldCgpKTsKLSAgRVhQ
RUNUX0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8ZG91YmxlPjo6R2V0KCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkV4aXN0cygpIHJldHVybnMgdHJ1ZSB3
aGVuIFQgaXMgYQotLy8gYnVpbHQtaW4gbnVtZXJpYyB0eXBlLgotVEVTVChCdWlsdEluRGVmYXVs
dFZhbHVlVGVzdCwgRXhpc3RzRm9yTnVtZXJpY1R5cGVzKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0
SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgY2hhcj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUo
QnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgY2hhcj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RS
VUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxjaGFyPjo6RXhpc3RzKCkpOwotI2lmIEdNT0NLX0hBU19T
SUdORURfV0NIQVJfVF8KLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25l
ZCB3Y2hhcl90Pjo6RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVl
PHNpZ25lZCB3Y2hhcl90Pjo6RXhpc3RzKCkpOwotI2VuZGlmCi0jaWYgR01PQ0tfV0NIQVJfVF9J
U19OQVRJVkVfCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8d2NoYXJfdD46OkV4
aXN0cygpKTsKLSNlbmRpZgotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHVuc2ln
bmVkIHNob3J0Pjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5E
ZWZhdWx0VmFsdWU8c2lnbmVkIHNob3J0Pjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2hvcnQ+OjpFeGlzdHMoKSk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCBpbnQ+OjpFeGlzdHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIGludD46OkV4aXN0
cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQ+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgbG9uZz46OkV4aXN0
cygpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHNpZ25l
ZCBsb25nPjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZh
dWx0VmFsdWU8bG9uZz46OkV4aXN0cygpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShCdWls
dEluRGVmYXVsdFZhbHVlPFVJbnQ2ND46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxJbnQ2ND46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRl
ZmF1bHRWYWx1ZTxmbG9hdD46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1
bHRWYWx1ZTxkb3VibGU+OjpFeGlzdHMoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRl
ZmF1bHRWYWx1ZTxib29sPjo6R2V0KCkgcmV0dXJucyBmYWxzZS4KLVRFU1QoQnVpbHRJbkRlZmF1
bHRWYWx1ZVRlc3QsIElzRmFsc2VGb3JCb29sKSB7Ci0gIEVYUEVDVF9GQUxTRShCdWlsdEluRGVm
YXVsdFZhbHVlPGJvb2w+OjpHZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1
bHRWYWx1ZTxib29sPjo6RXhpc3RzKCkgcmV0dXJucyB0cnVlLgotVEVTVChCdWlsdEluRGVmYXVs
dFZhbHVlVGVzdCwgQm9vbEV4aXN0cykgewotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZh
bHVlPGJvb2w+OjpFeGlzdHMoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRW
YWx1ZTxUPjo6R2V0KCkgcmV0dXJucyAiIiB3aGVuIFQgaXMgYQotLy8gc3RyaW5nIHR5cGUuCi1U
RVNUKEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0LCBJc0VtcHR5U3RyaW5nRm9yU3RyaW5nKSB7Ci0j
aWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgRVhQRUNUX0VRKCIiLCBCdWlsdEluRGVmYXVs
dFZhbHVlPCA6OnN0cmluZz46OkdldCgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotICBFWFBFQ1RfRVEoIiIsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3RkOjpzdHJp
bmc+OjpHZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6
RXhpc3RzKCkgcmV0dXJucyB0cnVlIHdoZW4gVCBpcyBhCi0vLyBzdHJpbmcgdHlwZS4KLVRFU1Qo
QnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIEV4aXN0c0ZvclN0cmluZykgewotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3Ry
aW5nPjo6RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0g
IEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3RkOjpzdHJpbmc+OjpFeGlzdHMo
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxjb25zdCBUPjo6R2V0
KCkgcmV0dXJucyB0aGUgc2FtZQotLy8gdmFsdWUgYXMgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6
R2V0KCkgZG9lcy4KLVRFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIFdvcmtzRm9yQ29uc3RU
eXBlcykgewotICBFWFBFQ1RfRVEoIiIsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29uc3Qgc3RkOjpz
dHJpbmc+OjpHZXQoKSk7Ci0gIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZhbHVlPGNvbnN0
IGludD46OkdldCgpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxjaGFyKiBj
b25zdD46OkdldCgpID09IE5VTEwpOwotICBFWFBFQ1RfRkFMU0UoQnVpbHRJbkRlZmF1bHRWYWx1
ZTxjb25zdCBib29sPjo6R2V0KCkpOwotfQotCi0vLyBBIHR5cGUgdGhhdCdzIGRlZmF1bHQgY29u
c3RydWN0aWJsZS4KLWNsYXNzIE15RGVmYXVsdENvbnN0cnVjdGlibGUgewotIHB1YmxpYzoKLSAg
TXlEZWZhdWx0Q29uc3RydWN0aWJsZSgpIDogdmFsdWVfKDQyKSB7fQotCi0gIGludCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLX07
Ci0KLS8vIEEgdHlwZSB0aGF0J3Mgbm90IGRlZmF1bHQgY29uc3RydWN0aWJsZS4KLWNsYXNzIE15
Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUgewotIHB1YmxpYzoKLSAgLy8gRG9lcyBub3QgaGF2ZSBh
IGRlZmF1bHQgY3Rvci4KLSAgZXhwbGljaXQgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZShpbnQg
YV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIGludCB2YWx1ZV87Ci19OwotCi0jaWYgR1RF
U1RfSEFTX1NURF9UWVBFX1RSQUlUU18KLQotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVlVGVzdCwg
RXhpc3RzRm9yRGVmYXVsdENvbnN0cnVjdGlibGVUeXBlKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0
SW5EZWZhdWx0VmFsdWU8TXlEZWZhdWx0Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLX0KLQot
VEVTVChCdWlsdEluRGVmYXVsdFZhbHVlVGVzdCwgSXNEZWZhdWx0Q29uc3RydWN0ZWRGb3JEZWZh
dWx0Q29uc3RydWN0aWJsZVR5cGUpIHsKLSAgRVhQRUNUX0VRKDQyLCBCdWlsdEluRGVmYXVsdFZh
bHVlPE15RGVmYXVsdENvbnN0cnVjdGlibGU+OjpHZXQoKS52YWx1ZSgpKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1RZUEVfVFJBSVRTXwotCi1URVNUKEJ1aWx0SW5EZWZhdWx0VmFs
dWVUZXN0LCBEb2VzTm90RXhpc3RGb3JOb25EZWZhdWx0Q29uc3RydWN0aWJsZVR5cGUpIHsKLSAg
RVhQRUNUX0ZBTFNFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJs
ZT46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBCdWlsdEluRGVmYXVsdFZhbHVlPFQm
Pjo6R2V0KCkgYWJvcnRzIHRoZSBwcm9ncmFtLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVlRGVh
dGhUZXN0LCBJc1VuZGVmaW5lZEZvclJlZmVyZW5jZXMpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQmPjo6R2V0KCk7Ci0gIH0sICIi
KTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRWYWx1
ZTxjb25zdCBjaGFyJj46OkdldCgpOwotICB9LCAiIik7Ci19Ci0KLVRFU1QoQnVpbHRJbkRlZmF1
bHRWYWx1ZURlYXRoVGVzdCwgSXNVbmRlZmluZWRGb3JOb25EZWZhdWx0Q29uc3RydWN0aWJsZVR5
cGUpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRW
YWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCk7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD46OklzU2V0KCkgaXMgZmFsc2UgaW5pdGlhbGx5
LgotVEVTVChEZWZhdWx0VmFsdWVUZXN0LCBJc0luaXRpYWxseVVuc2V0KSB7Ci0gIEVYUEVDVF9G
QUxTRShEZWZhdWx0VmFsdWU8aW50Pjo6SXNTZXQoKSk7Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0
VmFsdWU8TXlEZWZhdWx0Q29uc3RydWN0aWJsZT46OklzU2V0KCkpOwotICBFWFBFQ1RfRkFMU0Uo
RGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpJc1NldCgpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD4gY2FuIGJlIHNldCBhbmQgdGhlbiB1
bnNldC4KLVRFU1QoRGVmYXVsdFZhbHVlVGVzdCwgQ2FuQmVTZXRBbmRVbnNldCkgewotICBFWFBF
Q1RfVFJVRShEZWZhdWx0VmFsdWU8aW50Pjo6RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UoRGVm
YXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlzdHMoKSk7Ci0K
LSAgRGVmYXVsdFZhbHVlPGludD46OlNldCgxKTsKLSAgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9u
RGVmYXVsdENvbnN0cnVjdGlibGU+OjpTZXQoCi0gICAgICBNeU5vbkRlZmF1bHRDb25zdHJ1Y3Rp
YmxlKDQyKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIERlZmF1bHRWYWx1ZTxpbnQ+OjpHZXQoKSk7Ci0g
IEVYUEVDVF9FUSg0MiwgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGli
bGU+OjpHZXQoKS52YWx1ZSgpKTsKLQotICBFWFBFQ1RfVFJVRShEZWZhdWx0VmFsdWU8aW50Pjo6
RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0
Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLQotICBEZWZhdWx0VmFsdWU8aW50Pjo6Q2xlYXIo
KTsKLSAgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpDbGVh
cigpOwotCi0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Pjo6SXNTZXQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46
OklzU2V0KCkpOwotCi0gIEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxpbnQ+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0Q29uc3RydWN0
aWJsZT46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD46Okdl
dCgpIHJldHVybnMgdGhlCi0vLyBCdWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKSB3aGVuIERl
ZmF1bHRWYWx1ZTxUPjo6SXNTZXQoKSBpcwotLy8gZmFsc2UuCi1URVNUKERlZmF1bHRWYWx1ZURl
YXRoVGVzdCwgR2V0UmV0dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVXaGVuVW5zZXQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxpbnQ+OjpJc1NldCgpKTsKLSAgRVhQRUNUX1RSVUUoRGVm
YXVsdFZhbHVlPGludD46OkV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxN
eU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6SXNTZXQoKSk7Ci0gIEVYUEVDVF9GQUxTRShEZWZh
dWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLQotICBFWFBF
Q1RfRVEoMCwgRGVmYXVsdFZhbHVlPGludD46OkdldCgpKTsKLQotICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHsKLSAgICBEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46
OkdldCgpOwotICB9LCAiIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi1U
RVNUKERlZmF1bHRWYWx1ZVRlc3QsIEdldFdvcmtzRm9yTW92ZU9ubHlJZlNldCkgewotICBFWFBF
Q1RfVFJVRShEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpFeGlzdHMoKSk7Ci0g
IEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj46OkdldCgpID09
IE5VTEwpOwotICBEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpTZXRGYWN0b3J5
KFtdIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCg0MikpOwotICB9
KTsKLSAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pjo6RXhp
c3RzKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiBpID0gRGVmYXVsdFZhbHVlPHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+Pjo6R2V0KCk7Ci0gIEVYUEVDVF9FUSg0MiwgKmkpOwotfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0KLS8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVl
PHZvaWQ+OjpHZXQoKSByZXR1cm5zIHZvaWQuCi1URVNUKERlZmF1bHRWYWx1ZVRlc3QsIEdldFdv
cmtzRm9yVm9pZCkgewotICByZXR1cm4gRGVmYXVsdFZhbHVlPHZvaWQ+OjpHZXQoKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgRGVmYXVsdFZhbHVlIHdpdGggYSByZWZlcmVuY2UgdHlwZS4KLQotLy8g
VGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VCY+OjpJc1NldCgpIGlzIGZhbHNlIGluaXRpYWxseS4K
LVRFU1QoRGVmYXVsdFZhbHVlT2ZSZWZlcmVuY2VUZXN0LCBJc0luaXRpYWxseVVuc2V0KSB7Ci0g
IEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Jj46OklzU2V0KCkpOwotICBFWFBFQ1RfRkFM
U0UoRGVmYXVsdFZhbHVlPE15RGVmYXVsdENvbnN0cnVjdGlibGUmPjo6SXNTZXQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpJc1Nl
dCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VCY+OjpFeGlzdHMgaXMgZmFs
c2UgaW5pdGlhbGxseS4KLVRFU1QoRGVmYXVsdFZhbHVlT2ZSZWZlcmVuY2VUZXN0LCBJc0luaXRp
YWxseU5vdEV4aXN0aW5nKSB7Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Jj46OkV4
aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxNeURlZmF1bHRDb25zdHJ1Y3Rp
YmxlJj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1
bHRDb25zdHJ1Y3RpYmxlJj46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0
VmFsdWU8VCY+IGNhbiBiZSBzZXQgYW5kIHRoZW4gdW5zZXQuCi1URVNUKERlZmF1bHRWYWx1ZU9m
UmVmZXJlbmNlVGVzdCwgQ2FuQmVTZXRBbmRVbnNldCkgewotICBpbnQgbiA9IDE7Ci0gIERlZmF1
bHRWYWx1ZTxjb25zdCBpbnQmPjo6U2V0KG4pOwotICBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxl
IHgoNDIpOwotICBEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpTZXQo
eCk7Ci0KLSAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46
OkV4aXN0cygpKTsKLQotICBFWFBFQ1RfRVEoJm4sICYoRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+
OjpHZXQoKSkpOwotICBFWFBFQ1RfRVEoJngsICYoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENv
bnN0cnVjdGlibGUmPjo6R2V0KCkpKTsKLQotICBEZWZhdWx0VmFsdWU8Y29uc3QgaW50Jj46OkNs
ZWFyKCk7Ci0gIERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46OkNsZWFy
KCk7Ci0KLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxjb25zdCBpbnQmPjo6RXhpc3RzKCkp
OwotICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUm
Pjo6RXhpc3RzKCkpOwotCi0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgaW50Jj46
OklzU2V0KCkpOwotICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0
cnVjdGlibGUmPjo6SXNTZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQm
Pjo6R2V0KCkgcmV0dXJucyB0aGUKLS8vIEJ1aWx0SW5EZWZhdWx0VmFsdWU8VCY+OjpHZXQoKSB3
aGVuIERlZmF1bHRWYWx1ZTxUJj46OklzU2V0KCkgaXMKLS8vIGZhbHNlLgotVEVTVChEZWZhdWx0
VmFsdWVPZlJlZmVyZW5jZURlYXRoVGVzdCwgR2V0UmV0dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVX
aGVuVW5zZXQpIHsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxpbnQmPjo6SXNTZXQoKSk7
Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+
OjpJc1NldCgpKTsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICBEZWZhdWx0
VmFsdWU8aW50Jj46OkdldCgpOwotICB9LCAiIik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoewotICAgIERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCk7
Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBY3Rpb25JbnRlcmZhY2UgY2FuIGJlIGlt
cGxlbWVudGVkIGJ5IGRlZmluaW5nIHRoZQotLy8gUGVyZm9ybSBtZXRob2QuCi0KLXR5cGVkZWYg
aW50IE15R2xvYmFsRnVuY3Rpb24oYm9vbCwgaW50KTsKLQotY2xhc3MgTXlBY3Rpb25JbXBsIDog
cHVibGljIEFjdGlvbkludGVyZmFjZTxNeUdsb2JhbEZ1bmN0aW9uPiB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIGludCBQZXJmb3JtKGNvbnN0IHR1cGxlPGJvb2wsIGludD4mIGFyZ3MpIHsKLSAgICBy
ZXR1cm4gZ2V0PDA+KGFyZ3MpID8gZ2V0PDE+KGFyZ3MpIDogMDsKLSAgfQotfTsKLQotVEVTVChB
Y3Rpb25JbnRlcmZhY2VUZXN0LCBDYW5CZUltcGxlbWVudGVkQnlEZWZpbmluZ1BlcmZvcm0pIHsK
LSAgTXlBY3Rpb25JbXBsIG15X2FjdGlvbl9pbXBsOwotICAodm9pZClteV9hY3Rpb25faW1wbDsK
LX0KLQotVEVTVChBY3Rpb25JbnRlcmZhY2VUZXN0LCBNYWtlQWN0aW9uKSB7Ci0gIEFjdGlvbjxN
eUdsb2JhbEZ1bmN0aW9uPiBhY3Rpb24gPSBNYWtlQWN0aW9uKG5ldyBNeUFjdGlvbkltcGwpOwot
Ci0gIC8vIFdoZW4gZXhlcmNpc2luZyB0aGUgUGVyZm9ybSgpIG1ldGhvZCBvZiBBY3Rpb248Rj4s
IHdlIG11c3QgcGFzcwotICAvLyBpdCBhIHR1cGxlIHdob3NlIHNpemUgYW5kIHR5cGUgYXJlIGNv
bXBhdGlibGUgd2l0aCBGJ3MgYXJndW1lbnQKLSAgLy8gdHlwZXMuICBGb3IgZXhhbXBsZSwgaWYg
RiBpcyBpbnQoKSwgdGhlbiBQZXJmb3JtKCkgdGFrZXMgYQotICAvLyAwLXR1cGxlOyBpZiBGIGlz
IHZvaWQoYm9vbCwgaW50KSwgdGhlbiBQZXJmb3JtKCkgdGFrZXMgYQotICAvLyB0dXBsZTxib29s
LCBpbnQ+LCBhbmQgc28gb24uCi0gIEVYUEVDVF9FUSg1LCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1
cGxlKHRydWUsIDUpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQWN0aW9uPEY+IGNhbiBiZSBjb250
cnVjdGVkIGZyb20gYSBwb2ludGVyIHRvCi0vLyBBY3Rpb25JbnRlcmZhY2U8Rj4uCi1URVNUKEFj
dGlvblRlc3QsIENhbkJlQ29uc3RydWN0ZWRGcm9tQWN0aW9uSW50ZXJmYWNlKSB7Ci0gIEFjdGlv
bjxNeUdsb2JhbEZ1bmN0aW9uPiBhY3Rpb24obmV3IE15QWN0aW9uSW1wbCk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgQWN0aW9uPEY+IGRlbGVnYXRlcyBhY3R1YWwgd29yayB0byBBY3Rpb25JbnRlcmZh
Y2U8Rj4uCi1URVNUKEFjdGlvblRlc3QsIERlbGVnYXRlc1dvcmtUb0FjdGlvbkludGVyZmFjZSkg
ewotICBjb25zdCBBY3Rpb248TXlHbG9iYWxGdW5jdGlvbj4gYWN0aW9uKG5ldyBNeUFjdGlvbklt
cGwpOwotCi0gIEVYUEVDVF9FUSg1LCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIDUp
KSk7Ci0gIEVYUEVDVF9FUSgwLCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAxKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEFjdGlvbjxGPiBjYW4gYmUgY29waWVkLgotVEVTVChBY3Rp
b25UZXN0LCBJc0NvcHlhYmxlKSB7Ci0gIEFjdGlvbjxNeUdsb2JhbEZ1bmN0aW9uPiBhMShuZXcg
TXlBY3Rpb25JbXBsKTsKLSAgQWN0aW9uPE15R2xvYmFsRnVuY3Rpb24+IGEyKGExKTsgIC8vIFRl
c3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotCi0gIC8vIGExIHNob3VsZCBjb250aW51ZSB0byB3
b3JrIGFmdGVyIGJlaW5nIGNvcGllZCBmcm9tLgotICBFWFBFQ1RfRVEoNSwgYTEuUGVyZm9ybSht
YWtlX3R1cGxlKHRydWUsIDUpKSk7Ci0gIEVYUEVDVF9FUSgwLCBhMS5QZXJmb3JtKG1ha2VfdHVw
bGUoZmFsc2UsIDEpKSk7Ci0KLSAgLy8gYTIgc2hvdWxkIHdvcmsgbGlrZSB0aGUgYWN0aW9uIGl0
IHdhcyBjb3BpZWQgZnJvbS4KLSAgRVhQRUNUX0VRKDUsIGEyLlBlcmZvcm0obWFrZV90dXBsZSh0
cnVlLCA1KSkpOwotICBFWFBFQ1RfRVEoMCwgYTIuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAx
KSkpOwotCi0gIGEyID0gYTE7ICAvLyBUZXN0cyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KLQot
ICAvLyBhMSBzaG91bGQgY29udGludWUgdG8gd29yayBhZnRlciBiZWluZyBjb3BpZWQgZnJvbS4K
LSAgRVhQRUNUX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1KSkpOwotICBFWFBF
Q1RfRVEoMCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAxKSkpOwotCi0gIC8vIGEyIHNo
b3VsZCB3b3JrIGxpa2UgdGhlIGFjdGlvbiBpdCB3YXMgY29waWVkIGZyb20uCi0gIEVYUEVDVF9F
USg1LCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgNSkpKTsKLSAgRVhQRUNUX0VRKDAsIGEy
LlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbiBB
Y3Rpb248RnJvbT4gb2JqZWN0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQotLy8gY29tcGF0aWJsZSBB
Y3Rpb248VG8+IG9iamVjdC4KLQotY2xhc3MgSXNOb3RaZXJvIDogcHVibGljIEFjdGlvbkludGVy
ZmFjZTxib29sKGludCk+IHsgIC8vIE5PTElOVAotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIFBl
cmZvcm0oY29uc3QgdHVwbGU8aW50PiYgYXJnKSB7Ci0gICAgcmV0dXJuIGdldDwwPihhcmcpICE9
IDA7Ci0gIH0KLX07Ci0KLSNpZiAhR1RFU1RfT1NfU1lNQklBTgotLy8gQ29tcGlsaW5nIHRoaXMg
dGVzdCBvbiBOb2tpYSdzIFN5bWJpYW4gY29tcGlsZXIgZmFpbHMgd2l0aDoKLS8vICAnUmVzdWx0
JyBpcyBub3QgYSBtZW1iZXIgb2YgY2xhc3MgJ3Rlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxp
bnQ+JwotLy8gIChwb2ludCBvZiBpbnN0YW50aWF0aW9uOiAnQHVubmFtZWRAZ21vY2tfYWN0aW9u
c190ZXN0X2NjQDo6Ci0vLyAgICAgIEFjdGlvblRlc3RfQ2FuQmVDb252ZXJ0ZWRUb090aGVyQWN0
aW9uVHlwZV9UZXN0OjpUZXN0Qm9keSgpJykKLS8vIHdpdGggbm8gb2J2aW91cyBmaXguCi1URVNU
KEFjdGlvblRlc3QsIENhbkJlQ29udmVydGVkVG9PdGhlckFjdGlvblR5cGUpIHsKLSAgY29uc3Qg
QWN0aW9uPGJvb2woaW50KT4gYTEobmV3IElzTm90WmVybyk7ICAvLyBOT0xJTlQKLSAgY29uc3Qg
QWN0aW9uPGludChjaGFyKT4gYTIgPSBBY3Rpb248aW50KGNoYXIpPihhMSk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX0VRKDEsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgnYScpKSk7Ci0gIEVYUEVDVF9F
USgwLCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUoJ1wwJykpKTsKLX0KLSNlbmRpZiAgLy8gIUdURVNU
X09TX1NZTUJJQU4KLQotLy8gVGhlIGZvbGxvd2luZyB0d28gY2xhc3NlcyBhcmUgZm9yIHRlc3Rp
bmcgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkuCi0KLS8vIEltcGxlbWVudHMgYSBwb2x5bW9ycGhp
YyBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNvbmQgb2YgdGhlCi0vLyBhcmd1bWVudHMgaXQg
cmVjZWl2ZXMuCi1jbGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbiB7Ci0gcHVibGljOgot
ICAvLyBXZSB3YW50IHRvIHZlcmlmeSB0aGF0IE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIGNhbiB3
b3JrIHdpdGggYQotICAvLyBwb2x5bW9ycGhpYyBhY3Rpb24gd2hvc2UgUGVyZm9ybSgpIG1ldGhv
ZCB0ZW1wbGF0ZSBpcyBlaXRoZXIKLSAgLy8gY29uc3Qgb3Igbm90LiAgVGhpcyBsZXRzIHVzIHZl
cmlmeSB0aGUgbm9uLWNvbnN0IGNhc2UuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVw
bGUmIGFyZ3MpIHsgcmV0dXJuIGdldDwxPihhcmdzKTsgfQotfTsKLQotLy8gSW1wbGVtZW50cyBh
IHBvbHltb3JwaGljIGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIGEgbnVsbGFyeQotLy8gZnVu
Y3Rpb24gdG8gcmV0dXJuIDAuCi1jbGFzcyBSZXR1cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbkFj
dGlvbiB7Ci0gcHVibGljOgotICAvLyBGb3IgdGVzdGluZyB0aGF0IE1ha2VQb2x5bW9ycGhpY0Fj
dGlvbigpIHdvcmtzIHdoZW4gdGhlCi0gIC8vIGltcGxlbWVudGF0aW9uIGNsYXNzJyBQZXJmb3Jt
KCkgbWV0aG9kIHRlbXBsYXRlIHRha2VzIG9ubHkgb25lCi0gIC8vIHRlbXBsYXRlIHBhcmFtZXRl
ci4KLSAgLy8KLSAgLy8gV2Ugd2FudCB0byB2ZXJpZnkgdGhhdCBNYWtlUG9seW1vcnBoaWNBY3Rp
b24oKSBjYW4gd29yayB3aXRoIGEKLSAgLy8gcG9seW1vcnBoaWMgYWN0aW9uIHdob3NlIFBlcmZv
cm0oKSBtZXRob2QgdGVtcGxhdGUgaXMgZWl0aGVyCi0gIC8vIGNvbnN0IG9yIG5vdC4gIFRoaXMg
bGV0cyB1cyB2ZXJpZnkgdGhlIGNvbnN0IGNhc2UuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IHR1cGxlPD4mKSBjb25zdCB7IHJldHVybiAwOyB9
Ci19OwotCi0vLyBUaGVzZSBmdW5jdGlvbnMgdmVyaWZ5IHRoYXQgTWFrZVBvbHltb3JwaGljQWN0
aW9uKCkgcmV0dXJucyBhCi0vLyBQb2x5bW9ycGhpY0FjdGlvbjxUPiB3aGVyZSBUIGlzIHRoZSBh
cmd1bWVudCdzIHR5cGUuCi0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50
QWN0aW9uPiBSZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhp
Y0FjdGlvbihSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLQotUG9seW1vcnBoaWNB
Y3Rpb248UmV0dXJuWmVyb0Zyb21OdWxsYXJ5RnVuY3Rpb25BY3Rpb24+Ci1SZXR1cm5aZXJvRnJv
bU51bGxhcnlGdW5jdGlvbigpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihSZXR1
cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbkFjdGlvbigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKSB0dXJucyBhIHBvbHltb3JwaGljIGFjdGlvbgotLy8gaW1w
bGVtZW50YXRpb24gY2xhc3MgaW50byBhIHBvbHltb3JwaGljIGFjdGlvbi4KLVRFU1QoTWFrZVBv
bHltb3JwaGljQWN0aW9uVGVzdCwgQ29uc3RydWN0c0FjdGlvbkZyb21JbXBsKSB7Ci0gIEFjdGlv
bjxpbnQoYm9vbCwgaW50LCBkb3VibGUpPiBhMSA9IFJldHVyblNlY29uZEFyZ3VtZW50KCk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgNSwg
Mi4wKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIHdvcmtz
IHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCi0vLyBjbGFzcycgUGVyZm9ybSgpIG1ldGhvZCB0ZW1w
bGF0ZSBoYXMgb25seSBvbmUgdGVtcGxhdGUgcGFyYW1ldGVyLgotVEVTVChNYWtlUG9seW1vcnBo
aWNBY3Rpb25UZXN0LCBXb3Jrc1doZW5QZXJmb3JtSGFzT25lVGVtcGxhdGVQYXJhbWV0ZXIpIHsK
LSAgQWN0aW9uPGludCgpPiBhMSA9IFJldHVyblplcm9Gcm9tTnVsbGFyeUZ1bmN0aW9uKCk7Ci0g
IEVYUEVDVF9FUSgwLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotCi0gIEFjdGlvbjx2b2lk
KigpPiBhMiA9IFJldHVyblplcm9Gcm9tTnVsbGFyeUZ1bmN0aW9uKCk7Ci0gIEVYUEVDVF9UUlVF
KGEyLlBlcmZvcm0obWFrZV90dXBsZSgpKSA9PSBOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBS
ZXR1cm4oKSB3b3JrcyBhcyBhbiBhY3Rpb24gZm9yIHZvaWQtcmV0dXJuaW5nCi0vLyBmdW5jdGlv
bnMuCi1URVNUKFJldHVyblRlc3QsIFdvcmtzRm9yVm9pZCkgewotICBjb25zdCBBY3Rpb248dm9p
ZChpbnQpPiByZXQgPSBSZXR1cm4oKTsgIC8vIE5PTElOVAotICByZXR1cm4gcmV0LlBlcmZvcm0o
bWFrZV90dXBsZSgxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuKHYpIHJldHVybnMgdi4K
LVRFU1QoUmV0dXJuVGVzdCwgUmV0dXJuc0dpdmVuVmFsdWUpIHsKLSAgQWN0aW9uPGludCgpPiBy
ZXQgPSBSZXR1cm4oMSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEsIHJldC5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOwotCi0gIHJldCA9IFJldHVybigtNSk7Ci0gIEVYUEVDVF9FUSgtNSwgcmV0
LlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuKCJzdHJp
bmcgbGl0ZXJhbCIpIHdvcmtzLgotVEVTVChSZXR1cm5UZXN0LCBBY2NlcHRzU3RyaW5nTGl0ZXJh
bCkgewotICBBY3Rpb248Y29uc3QgY2hhciooKT4gYTEgPSBSZXR1cm4oIkhlbGxvIik7Ci0gIEVY
UEVDVF9TVFJFUSgiSGVsbG8iLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotCi0gIEFjdGlv
bjxzdGQ6OnN0cmluZygpPiBhMiA9IFJldHVybigid29ybGQiKTsKLSAgRVhQRUNUX0VRKCJ3b3Js
ZCIsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3Qgc3RydWN0IHdoaWNo
IHdyYXBzIGEgdmVjdG9yIG9mIGludGVnZXJzLiBVc2VkIGluCi0vLyAnU3VwcG9ydHNXcmFwcGVy
UmV0dXJuVHlwZScgdGVzdC4KLXN0cnVjdCBJbnRlZ2VyVmVjdG9yV3JhcHBlciB7Ci0gIHN0ZDo6
dmVjdG9yPGludD4gKiB2OwotICBJbnRlZ2VyVmVjdG9yV3JhcHBlcihzdGQ6OnZlY3RvcjxpbnQ+
JiBfdikgOiB2KCZfdikge30gIC8vIE5PTElOVAotfTsKLQotLy8gVGVzdHMgdGhhdCBSZXR1cm4o
KSB3b3JrcyB3aGVuIHJldHVybiB0eXBlIGlzIGEgd3JhcHBlciB0eXBlLgotVEVTVChSZXR1cm5U
ZXN0LCBTdXBwb3J0c1dyYXBwZXJSZXR1cm5UeXBlKSB7Ci0gIC8vIEluaXRpYWxpemUgdmVjdG9y
IG9mIGludGVnZXJzLgotICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Ci0gIGZvciAoaW50IGkgPSAwOyBp
IDwgNTsgKytpKSB2LnB1c2hfYmFjayhpKTsKLQotICAvLyBSZXR1cm4oKSBjYWxsZWQgd2l0aCAn
dicgYXMgYXJndW1lbnQuIFRoZSBBY3Rpb24gd2lsbCByZXR1cm4gdGhlIHNhbWUgZGF0YQotICAv
LyBhcyAndicgKGNvcHkpIGJ1dCBpdCB3aWxsIGJlIHdyYXBwZWQgaW4gYW4gSW50ZWdlclZlY3Rv
cldyYXBwZXIuCi0gIEFjdGlvbjxJbnRlZ2VyVmVjdG9yV3JhcHBlcigpPiBhID0gUmV0dXJuKHYp
OwotICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiByZXN1bHQgPSAqKGEuUGVyZm9ybShtYWtlX3R1
cGxlKCkpLnYpOwotICBFWFBFQ1RfVEhBVChyZXN1bHQsIDo6dGVzdGluZzo6RWxlbWVudHNBcmUo
MCwgMSwgMiwgMywgNCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJldHVybih2KSBpcyBjb3ZhcmFp
bnQuCi0KLXN0cnVjdCBCYXNlIHsKLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2UmKSB7IHJl
dHVybiB0cnVlOyB9Ci19OwotCi1zdHJ1Y3QgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERlcml2ZWQmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi1URVNU
KFJldHVyblRlc3QsIElzQ292YXJpYW50KSB7Ci0gIEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJp
dmVkOwotICBBY3Rpb248QmFzZSooKT4gcmV0ID0gUmV0dXJuKCZiYXNlKTsKLSAgRVhQRUNUX0VR
KCZiYXNlLCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICByZXQgPSBSZXR1cm4oJmRl
cml2ZWQpOwotICBFWFBFQ1RfRVEoJmRlcml2ZWQsIHJldC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBwYXNzZWQgaW50byBS
ZXR1cm4gaXMgY29udmVydGVkIGludG8gVAotLy8gd2hlbiB0aGUgYWN0aW9uIGlzIGNhc3QgdG8g
QWN0aW9uPFQoLi4uKT4gcmF0aGVyIHRoYW4gd2hlbiB0aGUgYWN0aW9uIGlzCi0vLyBwZXJmb3Jt
ZWQuIFNlZSBjb21tZW50cyBvbiB0ZXN0aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uIGluCi0v
LyBnbW9jay1hY3Rpb25zLmggZm9yIG1vcmUgaW5mb3JtYXRpb24uCi1jbGFzcyBGcm9tVHlwZSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBGcm9tVHlwZShib29sKiBpc19jb252ZXJ0ZWQpIDogY29u
dmVydGVkXyhpc19jb252ZXJ0ZWQpIHt9Ci0gIGJvb2wqIGNvbnZlcnRlZCgpIGNvbnN0IHsgcmV0
dXJuIGNvbnZlcnRlZF87IH0KLQotIHByaXZhdGU6Ci0gIGJvb2wqIGNvbnN0IGNvbnZlcnRlZF87
Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhGcm9tVHlwZSk7Ci19OwotCi1jbGFzcyBUb1R5
cGUgewotIHB1YmxpYzoKLSAgLy8gTXVzdCBhbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGR1ZSB0
byB1c2UgaW4gSW1wbGljaXRDYXN0XzxUPi4KLSAgVG9UeXBlKGNvbnN0IEZyb21UeXBlJiB4KSB7
ICp4LmNvbnZlcnRlZCgpID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCi19OwotCi1URVNUKFJldHVyblRl
c3QsIENvbnZlcnRzQXJndW1lbnRXaGVuQ29udmVydGVkKSB7Ci0gIGJvb2wgY29udmVydGVkID0g
ZmFsc2U7Ci0gIEZyb21UeXBlIHgoJmNvbnZlcnRlZCk7Ci0gIEFjdGlvbjxUb1R5cGUoKT4gYWN0
aW9uKFJldHVybih4KSk7Ci0gIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCkgPDwgIlJldHVybiBtdXN0
IGNvbnZlcnQgaXRzIGFyZ3VtZW50IGluIGl0cyBvd24gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJjb252ZXJzaW9uIG9wZXJhdG9yLiI7Ci0gIGNvbnZlcnRlZCA9IGZhbHNlOwotICBh
Y3Rpb24uUGVyZm9ybSh0dXBsZTw+KCkpOwotICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKSA8PCAi
QWN0aW9uIG11c3QgTk9UIGNvbnZlcnQgaXRzIGFyZ3VtZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIndoZW4gcGVyZm9ybWVkLiI7Ci19Ci0KLWNsYXNzIERlc3RpbmF0aW9uVHlw
ZSB7fTsKLQotY2xhc3MgU291cmNlVHlwZSB7Ci0gcHVibGljOgotICAvLyBOb3RlOiBhIG5vbi1j
b25zdCB0eXBlY2FzdCBvcGVyYXRvci4KLSAgb3BlcmF0b3IgRGVzdGluYXRpb25UeXBlKCkgeyBy
ZXR1cm4gRGVzdGluYXRpb25UeXBlKCk7IH0KLX07Ci0KLVRFU1QoUmV0dXJuVGVzdCwgQ2FuQ29u
dmVydEFyZ3VtZW50VXNpbmdOb25Db25zdFR5cGVDYXN0T3BlcmF0b3IpIHsKLSAgU291cmNlVHlw
ZSBzOwotICBBY3Rpb248RGVzdGluYXRpb25UeXBlKCk+IGFjdGlvbihSZXR1cm4ocykpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFJldHVybk51bGwoKSByZXR1cm5zIE5VTEwgaW4gYSBwb2ludGVyLXJl
dHVybmluZyBmdW5jdGlvbi4KLVRFU1QoUmV0dXJuTnVsbFRlc3QsIFdvcmtzSW5Qb2ludGVyUmV0
dXJuaW5nRnVuY3Rpb24pIHsKLSAgY29uc3QgQWN0aW9uPGludCooKT4gYTEgPSBSZXR1cm5OdWxs
KCk7Ci0gIEVYUEVDVF9UUlVFKGExLlBlcmZvcm0obWFrZV90dXBsZSgpKSA9PSBOVUxMKTsKLQot
ICBjb25zdCBBY3Rpb248Y29uc3QgY2hhciooYm9vbCk+IGEyID0gUmV0dXJuTnVsbCgpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9UUlVFKGEyLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlKSkgPT0gTlVM
TCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0vLyBUZXN0cyB0aGF0IFJl
dHVybk51bGwoKSByZXR1cm5zIE5VTEwgZm9yIHNoYXJlZF9wdHIgYW5kIHVuaXF1ZV9wdHIgcmV0
dXJuaW5nCi0vLyBmdW5jdGlvbnMuCi1URVNUKFJldHVybk51bGxUZXN0LCBXb3Jrc0luU21hcnRQ
b2ludGVyUmV0dXJuaW5nRnVuY3Rpb24pIHsKLSAgY29uc3QgQWN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBpbnQ+KCk+IGExID0gUmV0dXJuTnVsbCgpOwotICBFWFBFQ1RfVFJVRShhMS5QZXJm
b3JtKG1ha2VfdHVwbGUoKSkgPT0gbnVsbHB0cik7Ci0KLSAgY29uc3QgQWN0aW9uPHN0ZDo6c2hh
cmVkX3B0cjxpbnQ+KHN0ZDo6c3RyaW5nKT4gYTIgPSBSZXR1cm5OdWxsKCk7Ci0gIEVYUEVDVF9U
UlVFKGEyLlBlcmZvcm0obWFrZV90dXBsZSgiZm9vIikpID09IG51bGxwdHIpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuUmVm
KHYpIHdvcmtzIGZvciByZWZlcmVuY2UgdHlwZXMuCi1URVNUKFJldHVyblJlZlRlc3QsIFdvcmtz
Rm9yUmVmZXJlbmNlKSB7Ci0gIGNvbnN0IGludCBuID0gMDsKLSAgY29uc3QgQWN0aW9uPGNvbnN0
IGludCYoYm9vbCk+IHJldCA9IFJldHVyblJlZihuKTsgIC8vIE5PTElOVAotCi0gIEVYUEVDVF9F
USgmbiwgJnJldC5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSkpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBSZXR1cm5SZWYodikgaXMgY292YXJpYW50LgotVEVTVChSZXR1cm5SZWZUZXN0LCBJc0NvdmFy
aWFudCkgewotICBCYXNlIGJhc2U7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgQWN0aW9uPEJhc2Um
KCk+IGEgPSBSZXR1cm5SZWYoYmFzZSk7Ci0gIEVYUEVDVF9FUSgmYmFzZSwgJmEuUGVyZm9ybSht
YWtlX3R1cGxlKCkpKTsKLQotICBhID0gUmV0dXJuUmVmKGRlcml2ZWQpOwotICBFWFBFQ1RfRVEo
JmRlcml2ZWQsICZhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
UmV0dXJuUmVmT2ZDb3B5KHYpIHdvcmtzIGZvciByZWZlcmVuY2UgdHlwZXMuCi1URVNUKFJldHVy
blJlZk9mQ29weVRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7Ci0gIGludCBuID0gNDI7Ci0gIGNv
bnN0IEFjdGlvbjxjb25zdCBpbnQmKCk+IHJldCA9IFJldHVyblJlZk9mQ29weShuKTsKLQotICBF
WFBFQ1RfTkUoJm4sICZyZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKDQy
LCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICBuID0gNDM7Ci0gIEVYUEVDVF9ORSgm
biwgJnJldC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotICBFWFBFQ1RfRVEoNDIsIHJldC5QZXJm
b3JtKG1ha2VfdHVwbGUoKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJldHVyblJlZk9mQ29weSh2
KSBpcyBjb3ZhcmlhbnQuCi1URVNUKFJldHVyblJlZk9mQ29weVRlc3QsIElzQ292YXJpYW50KSB7
Ci0gIEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBBY3Rpb248QmFzZSYoKT4gYSA9
IFJldHVyblJlZk9mQ29weShiYXNlKTsKLSAgRVhQRUNUX05FKCZiYXNlLCAmYS5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOwotCi0gIGEgPSBSZXR1cm5SZWZPZkNvcHkoZGVyaXZlZCk7Ci0gIEVYUEVD
VF9ORSgmZGVyaXZlZCwgJmEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBEb0RlZmF1bHQoKSBkb2VzIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIG1vY2sgbWV0
aG9kLgotCi1jbGFzcyBNb2NrQ2xhc3MgewotIHB1YmxpYzoKLSAgTW9ja0NsYXNzKCkge30KLQot
ICBNT0NLX01FVEhPRDEoSW50RnVuYywgaW50KGJvb2wgZmxhZykpOyAgLy8gTk9MSU5UCi0gIE1P
Q0tfTUVUSE9EMChGb28sIE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUoKSk7Ci0jaWYgR1RFU1Rf
SEFTX1NURF9VTklRVUVfUFRSXwotICBNT0NLX01FVEhPRDAoTWFrZVVuaXF1ZSwgc3RkOjp1bmlx
dWVfcHRyPGludD4oKSk7Ci0gIE1PQ0tfTUVUSE9EMChNYWtlVW5pcXVlQmFzZSwgc3RkOjp1bmlx
dWVfcHRyPEJhc2U+KCkpOwotICBNT0NLX01FVEhPRDAoTWFrZVZlY3RvclVuaXF1ZSwgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+KCkpOwotI2VuZGlmCi0KLSBwcml2YXRlOgotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tDbGFzcyk7Ci19OwotCi0vLyBUZXN0
cyB0aGF0IERvRGVmYXVsdCgpIHJldHVybnMgdGhlIGJ1aWx0LWluIGRlZmF1bHQgdmFsdWUgZm9y
IHRoZQotLy8gcmV0dXJuIHR5cGUgYnkgZGVmYXVsdC4KLVRFU1QoRG9EZWZhdWx0VGVzdCwgUmV0
dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVCeURlZmF1bHQpIHsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0g
IEVYUEVDVF9DQUxMKG1vY2ssIEludEZ1bmMoXykpCi0gICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0
KCkpOwotICBFWFBFQ1RfRVEoMCwgbW9jay5JbnRGdW5jKHRydWUpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBEb0RlZmF1bHQoKSB0aHJvd3MgKHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCkgb3Ig
YWJvcnRzCi0vLyB0aGUgcHJvY2VzcyB3aGVuIHRoZXJlIGlzIG5vIGJ1aWx0LWluIGRlZmF1bHQg
dmFsdWUgZm9yIHRoZSByZXR1cm4gdHlwZS4KLVRFU1QoRG9EZWZhdWx0RGVhdGhUZXN0LCBEaWVz
Rm9yVW5rbm93VHlwZSkgewotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoRG9EZWZhdWx0KCkpOwotI2lmIEdURVNUX0hB
U19FWENFUFRJT05TCi0gIEVYUEVDVF9BTllfVEhST1cobW9jay5Gb28oKSk7Ci0jZWxzZQotICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICBtb2NrLkZvbygpOwotICB9LCAiIik7Ci0j
ZW5kaWYKLX0KLQotLy8gVGVzdHMgdGhhdCB1c2luZyBEb0RlZmF1bHQoKSBpbnNpZGUgYSBjb21w
b3NpdGUgYWN0aW9uIGxlYWRzIHRvIGEKLS8vIHJ1bi10aW1lIGVycm9yLgotCi12b2lkIFZvaWRG
dW5jKGJvb2wgLyogZmxhZyAqLykge30KLQotVEVTVChEb0RlZmF1bHREZWF0aFRlc3QsIERpZXNJ
ZlVzZWRJbkNvbXBvc2l0ZUFjdGlvbikgewotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNUX0NB
TEwobW9jaywgSW50RnVuYyhfKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShEb0FsbChJbnZva2Uo
Vm9pZEZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvRGVmYXVsdCgpKSk7Ci0K
LSAgLy8gSWRlYWxseSB3ZSBzaG91bGQgdmVyaWZ5IHRoZSBlcnJvciBtZXNzYWdlIGFzIHdlbGwu
ICBTYWRseSwKLSAgLy8gRVhQRUNUX0RFQVRIKCkgY2FuIG9ubHkgY2FwdHVyZSBzdGRlcnIsIHdo
aWxlIEdvb2dsZSBNb2NrJ3MKLSAgLy8gZXJyb3JzIGFyZSBwcmludGVkIG9uIHN0ZG91dC4gIFRo
ZXJlZm9yZSB3ZSBoYXZlIHRvIHNldHRsZSBmb3IKLSAgLy8gbm90IHZlcmlmeWluZyB0aGUgbWVz
c2FnZS4KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgbW9jay5JbnRGdW5jKHRy
dWUpOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRG9EZWZhdWx0KCkgcmV0dXJucyB0
aGUgZGVmYXVsdCB2YWx1ZSBzZXQgYnkKLS8vIERlZmF1bHRWYWx1ZTxUPjo6U2V0KCkgd2hlbiBp
dCdzIG5vdCBvdmVycmlkZW4gYnkgYW4gT05fQ0FMTCgpLgotVEVTVChEb0RlZmF1bHRUZXN0LCBS
ZXR1cm5zVXNlclNwZWNpZmllZFBlclR5cGVEZWZhdWx0VmFsdWVXaGVuVGhlcmVJc09uZSkgewot
ICBEZWZhdWx0VmFsdWU8aW50Pjo6U2V0KDEpOwotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNU
X0NBTEwobW9jaywgSW50RnVuYyhfKSkKLSAgICAgIC5XaWxsT25jZShEb0RlZmF1bHQoKSk7Ci0g
IEVYUEVDVF9FUSgxLCBtb2NrLkludEZ1bmMoZmFsc2UpKTsKLSAgRGVmYXVsdFZhbHVlPGludD46
OkNsZWFyKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRG9EZWZhdWx0KCkgZG9lcyB0aGUgYWN0aW9u
IHNwZWNpZmllZCBieSBPTl9DQUxMKCkuCi1URVNUKERvRGVmYXVsdFRlc3QsIERvZXNXaGF0T25D
YWxsU3BlY2lmaWVzKSB7Ci0gIE1vY2tDbGFzcyBtb2NrOwotICBPTl9DQUxMKG1vY2ssIEludEZ1
bmMoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOwotICBFWFBFQ1RfQ0FMTCht
b2NrLCBJbnRGdW5jKF8pKQotICAgICAgLldpbGxPbmNlKERvRGVmYXVsdCgpKTsKLSAgRVhQRUNU
X0VRKDIsIG1vY2suSW50RnVuYyhmYWxzZSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHVzaW5nIERv
RGVmYXVsdCgpIGluIE9OX0NBTEwoKSBsZWFkcyB0byBhIHJ1bi10aW1lIGZhaWx1cmUuCi1URVNU
KERvRGVmYXVsdFRlc3QsIENhbm5vdEJlVXNlZEluT25DYWxsKSB7Ci0gIE1vY2tDbGFzcyBtb2Nr
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBPTl9DQUxMKG1v
Y2ssIEludEZ1bmMoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChEb0RlZmF1bHQoKSk7Ci0gIH0s
ICJEb0RlZmF1bHQoKSBjYW5ub3QgYmUgdXNlZCBpbiBPTl9DQUxMKCkiKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KHYpIHNldHMgdGhlIHZhcmlhYmxlIHBvaW50ZWQgdG8g
YnkKLS8vIHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byB2LgotVEVTVChTZXRBcmdQb2lu
dGVlVGVzdCwgU2V0c1RoZU50aFBvaW50ZWUpIHsKLSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24o
Ym9vbCwgaW50KiwgY2hhciopOwotICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNldEFyZ1BvaW50
ZWU8MT4oMik7Ci0KLSAgaW50IG4gPSAwOwotICBjaGFyIGNoID0gJ1wwJzsKLSAgYS5QZXJmb3Jt
KG1ha2VfdHVwbGUodHJ1ZSwgJm4sICZjaCkpOwotICBFWFBFQ1RfRVEoMiwgbik7Ci0gIEVYUEVD
VF9FUSgnXDAnLCBjaCk7Ci0KLSAgYSA9IFNldEFyZ1BvaW50ZWU8Mj4oJ2EnKTsKLSAgbiA9IDA7
Ci0gIGNoID0gJ1wwJzsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJm4sICZjaCkpOwot
ICBFWFBFQ1RfRVEoMCwgbik7Ci0gIEVYUEVDVF9FUSgnYScsIGNoKTsKLX0KLQotI2lmICEoKEdU
RVNUX0dDQ19WRVJfICYmIEdURVNUX0dDQ19WRVJfIDwgNDAwMDApIHx8IEdURVNUX09TX1NZTUJJ
QU4pCi0vLyBUZXN0cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4oKSBhY2NlcHRzIGEgc3RyaW5nIGxp
dGVyYWwuCi0vLyBHQ0MgcHJpb3IgdG8gdjQuMCBhbmQgdGhlIFN5bWJpYW4gY29tcGlsZXIgZG8g
bm90IHN1cHBvcnQgdGhpcy4KLVRFU1QoU2V0QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNTdHJpbmdM
aXRlcmFsKSB7Ci0gIHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKHN0ZDo6c3RyaW5nKiwgY29uc3Qg
Y2hhcioqKTsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcmdQb2ludGVlPDA+KCJoaSIp
OwotICBzdGQ6OnN0cmluZyBzdHI7Ci0gIGNvbnN0IGNoYXIqIHB0ciA9IE5VTEw7Ci0gIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCZzdHIsICZwdHIpKTsKLSAgRVhQRUNUX0VRKCJoaSIsIHN0cik7Ci0g
IEVYUEVDVF9UUlVFKHB0ciA9PSBOVUxMKTsKLQotICBhID0gU2V0QXJnUG9pbnRlZTwxPigid29y
bGQiKTsKLSAgc3RyID0gIiI7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZzdHIsICZwdHIpKTsK
LSAgRVhQRUNUX0VRKCIiLCBzdHIpOwotICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgcHRyKTsKLX0K
LQotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgQWNjZXB0c1dpZGVTdHJpbmdMaXRlcmFsKSB7Ci0g
IHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKGNvbnN0IHdjaGFyX3QqKik7Ci0gIEFjdGlvbjxNeUZ1
bmN0aW9uPiBhID0gU2V0QXJnUG9pbnRlZTwwPihMIndvcmxkIik7Ci0gIGNvbnN0IHdjaGFyX3Qq
IHB0ciA9IE5VTEw7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZwdHIpKTsKLSAgRVhQRUNUX1NU
UkVRKEwid29ybGQiLCBwdHIpOwotCi0jIGlmIEdURVNUX0hBU19TVERfV1NUUklORwotCi0gIHR5
cGVkZWYgdm9pZCBNeVN0cmluZ0Z1bmN0aW9uKHN0ZDo6d3N0cmluZyopOwotICBBY3Rpb248TXlT
dHJpbmdGdW5jdGlvbj4gYTIgPSBTZXRBcmdQb2ludGVlPDA+KEwid29ybGQiKTsKLSAgc3RkOjp3
c3RyaW5nIHN0ciA9IEwiIjsKLSAgYTIuUGVyZm9ybShtYWtlX3R1cGxlKCZzdHIpKTsKLSAgRVhQ
RUNUX0VRKEwid29ybGQiLCBzdHIpOwotCi0jIGVuZGlmCi19Ci0jZW5kaWYKLQotLy8gVGVzdHMg
dGhhdCBTZXRBcmdQb2ludGVlPE4+KCkgYWNjZXB0cyBhIGNoYXIgcG9pbnRlci4KLVRFU1QoU2V0
QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNDaGFyUG9pbnRlcikgewotICB0eXBlZGVmIHZvaWQgTXlG
dW5jdGlvbihib29sLCBzdGQ6OnN0cmluZyosIGNvbnN0IGNoYXIqKik7Ci0gIGNvbnN0IGNoYXIq
IGNvbnN0IGhpID0gImhpIjsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcmdQb2ludGVl
PDE+KGhpKTsKLSAgc3RkOjpzdHJpbmcgc3RyOwotICBjb25zdCBjaGFyKiBwdHIgPSBOVUxMOwot
ICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmc3RyLCAmcHRyKSk7Ci0gIEVYUEVDVF9FUSgi
aGkiLCBzdHIpOwotICBFWFBFQ1RfVFJVRShwdHIgPT0gTlVMTCk7Ci0KLSAgY2hhciB3b3JsZF9h
cnJheVtdID0gIndvcmxkIjsKLSAgY2hhciogY29uc3Qgd29ybGQgPSB3b3JsZF9hcnJheTsKLSAg
YSA9IFNldEFyZ1BvaW50ZWU8Mj4od29ybGQpOwotICBzdHIgPSAiIjsKLSAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUodHJ1ZSwgJnN0ciwgJnB0cikpOwotICBFWFBFQ1RfRVEoIiIsIHN0cik7Ci0gIEVY
UEVDVF9FUSh3b3JsZCwgcHRyKTsKLX0KLQotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgQWNjZXB0
c1dpZGVDaGFyUG9pbnRlcikgewotICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihib29sLCBjb25z
dCB3Y2hhcl90KiopOwotICBjb25zdCB3Y2hhcl90KiBjb25zdCBoaSA9IEwiaGkiOwotICBBY3Rp
b248TXlGdW5jdGlvbj4gYSA9IFNldEFyZ1BvaW50ZWU8MT4oaGkpOwotICBjb25zdCB3Y2hhcl90
KiBwdHIgPSBOVUxMOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmcHRyKSk7Ci0gIEVY
UEVDVF9FUShoaSwgcHRyKTsKLQotIyBpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotICB0eXBl
ZGVmIHZvaWQgTXlTdHJpbmdGdW5jdGlvbihib29sLCBzdGQ6OndzdHJpbmcqKTsKLSAgd2NoYXJf
dCB3b3JsZF9hcnJheVtdID0gTCJ3b3JsZCI7Ci0gIHdjaGFyX3QqIGNvbnN0IHdvcmxkID0gd29y
bGRfYXJyYXk7Ci0gIEFjdGlvbjxNeVN0cmluZ0Z1bmN0aW9uPiBhMiA9IFNldEFyZ1BvaW50ZWU8
MT4od29ybGQpOwotICBzdGQ6OndzdHJpbmcgc3RyOwotICBhMi5QZXJmb3JtKG1ha2VfdHVwbGUo
dHJ1ZSwgJnN0cikpOwotICBFWFBFQ1RfRVEod29ybGRfYXJyYXksIHN0cik7Ci0jIGVuZGlmCi19
Ci0KLSNpZiBHVEVTVF9IQVNfUFJPVE9CVUZfCi0KLS8vIFRlc3RzIHRoYXQgU2V0QXJnUG9pbnRl
ZTxOPihwcm90b19idWZmZXIpIHNldHMgdGhlIHYxIHByb3RvYnVmCi0vLyB2YXJpYWJsZSBwb2lu
dGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBwcm90b19idWZmZXIuCi1U
RVNUKFNldEFyZ1BvaW50ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG9CdWZmZXJUeXBl
KSB7Ci0gIFRlc3RNZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+
c2V0X21lbWJlcigieWVzIik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5D
b3B5RnJvbSgqbXNnKTsKLQotICBBY3Rpb248dm9pZChib29sLCBUZXN0TWVzc2FnZSopPiBhID0g
U2V0QXJnUG9pbnRlZTwxPigqbXNnKTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90b19idWZm
ZXIpIG1ha2VzIGEgY29weSBvZiBwcm90b19idWZmZXIKLSAgLy8gcy50LiB0aGUgYWN0aW9uIHdv
cmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwgcHJvdG9fYnVmZmVyIGhhcwotICAvLyBkaWVkLiAg
V2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnIGJlZm9yZSB1c2luZyB0aGUK
LSAgLy8gYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIFRlc3RNZXNzYWdlIGRlc3Q7Ci0gIEVY
UEVDVF9GQUxTRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotICBhLlBlcmZvcm0obWFrZV90dXBs
ZSh0cnVlLCAmZGVzdCkpOwotICBFWFBFQ1RfVFJVRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG9fYnVmZmVyKSBzZXRzIHRo
ZQotLy8gOjpQcm90b2NvbE1lc3NhZ2UgdmFyaWFibGUgcG9pbnRlZCB0byBieSB0aGUgTi10aCAo
MC1iYXNlZCkKLS8vIGFyZ3VtZW50IHRvIHByb3RvX2J1ZmZlci4KLVRFU1QoU2V0QXJnUG9pbnRl
ZVRlc3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQcm90b0J1ZmZlckJhc2VUeXBlKSB7Ci0gIFRlc3RN
ZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+c2V0X21lbWJlcigi
eWVzIik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5RnJvbSgqbXNn
KTsKLQotICBBY3Rpb248dm9pZChib29sLCA6OlByb3RvY29sTWVzc2FnZSopPiBhID0gU2V0QXJn
UG9pbnRlZTwxPigqbXNnKTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90b19idWZmZXIpIG1h
a2VzIGEgY29weSBvZiBwcm90b19idWZmZXIKLSAgLy8gcy50LiB0aGUgYWN0aW9uIHdvcmtzIGV2
ZW4gd2hlbiB0aGUgb3JpZ2luYWwgcHJvdG9fYnVmZmVyIGhhcwotICAvLyBkaWVkLiAgV2UgZW5z
dXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnIGJlZm9yZSB1c2luZyB0aGUKLSAgLy8g
YWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIFRlc3RNZXNzYWdlIGRlc3Q7Ci0gIDo6UHJvdG9j
b2xNZXNzYWdlKiBjb25zdCBkZXN0X2Jhc2UgPSAmZGVzdDsKLSAgRVhQRUNUX0ZBTFNFKG9yaWdf
bXNnLkVxdWFscyhkZXN0KSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIGRlc3RfYmFz
ZSkpOwotICBFWFBFQ1RfVFJVRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0aGUgdjIKLS8vIHBy
b3RvYnVmIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50
IHRvCi0vLyBwcm90bzJfYnVmZmVyLgotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgU2V0c1RoZU50
aFBvaW50ZWVPZlByb3RvMkJ1ZmZlclR5cGUpIHsKLSAgdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkZvb01lc3NhZ2U7Ci0gIEZvb01lc3NhZ2UqIGNvbnN0IG1zZyA9IG5ldyBGb29NZXNzYWdlOwot
ICBtc2ctPnNldF9pbnRfZmllbGQoMik7Ci0gIG1zZy0+c2V0X3N0cmluZ19maWVsZCgiaGkiKTsK
LSAgRm9vTWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7Ci0KLSAg
QWN0aW9uPHZvaWQoYm9vbCwgRm9vTWVzc2FnZSopPiBhID0gU2V0QXJnUG9pbnRlZTwxPigqbXNn
KTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90bzJfYnVmZmVyKSBtYWtlcyBhIGNvcHkgb2YK
LSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBhY3Rpb24gd29ya3MgZXZlbiB3aGVuIHRoZSBv
cmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhhcyBkaWVkLiAgV2UgZW5zdXJlIHRoaXMgYmVo
YXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJlZm9yZSB1c2luZyB0aGUgYWN0aW9uLgotICBk
ZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVzdDsKLSAgZGVzdC5zZXRfaW50X2ZpZWxkKDAp
OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmZGVzdCkpOwotICBFWFBFQ1RfRVEoMiwg
ZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9FUSgiaGkiLCBkZXN0LnN0cmluZ19maWVsZCgp
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KHByb3RvMl9idWZmZXIpIHNl
dHMgdGhlCi0vLyBwcm90bzI6Ok1lc3NhZ2UgdmFyaWFibGUgcG9pbnRlZCB0byBieSB0aGUgTi10
aCAoMC1iYXNlZCkgYXJndW1lbnQKLS8vIHRvIHByb3RvMl9idWZmZXIuCi1URVNUKFNldEFyZ1Bv
aW50ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG8yQnVmZmVyQmFzZVR5cGUpIHsKLSAg
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvb01lc3NhZ2U7Ci0gIEZvb01lc3NhZ2UqIGNvbnN0
IG1zZyA9IG5ldyBGb29NZXNzYWdlOwotICBtc2ctPnNldF9pbnRfZmllbGQoMik7Ci0gIG1zZy0+
c2V0X3N0cmluZ19maWVsZCgiaGkiKTsKLSAgRm9vTWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19t
c2cuQ29weUZyb20oKm1zZyk7Ci0KLSAgQWN0aW9uPHZvaWQoYm9vbCwgOjpwcm90bzI6Ok1lc3Nh
Z2UqKT4gYSA9IFNldEFyZ1BvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ1BvaW50ZWU8Tj4o
cHJvdG8yX2J1ZmZlcikgbWFrZXMgYSBjb3B5IG9mCi0gIC8vIHByb3RvMl9idWZmZXIgcy50LiB0
aGUgYWN0aW9uIHdvcmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwKLSAgLy8gcHJvdG8yX2J1ZmZl
ciBoYXMgZGllZC4gIFdlIGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZwotICAv
LyBiZWZvcmUgdXNpbmcgdGhlIGFjdGlvbi4KLSAgZGVsZXRlIG1zZzsKLQotICBGb29NZXNzYWdl
IGRlc3Q7Ci0gIGRlc3Quc2V0X2ludF9maWVsZCgwKTsKLSAgOjpwcm90bzI6Ok1lc3NhZ2UqIGNv
bnN0IGRlc3RfYmFzZSA9ICZkZXN0OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBkZXN0
X2Jhc2UpKTsKLSAgRVhQRUNUX0VRKDIsIGRlc3QuaW50X2ZpZWxkKCkpOwotICBFWFBFQ1RfRVEo
ImhpIiwgZGVzdC5zdHJpbmdfZmllbGQoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BS
T1RPQlVGXwotCi0vLyBUZXN0cyB0aGF0IFNldEFyZ3VtZW50UG9pbnRlZTxOPih2KSBzZXRzIHRo
ZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5Ci0vLyB0aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQg
dG8gdi4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwgU2V0c1RoZU50aFBvaW50ZWUpIHsK
LSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgaW50KiwgY2hhciopOwotICBBY3Rpb248
TXlGdW5jdGlvbj4gYSA9IFNldEFyZ3VtZW50UG9pbnRlZTwxPigyKTsKLQotICBpbnQgbiA9IDA7
Ci0gIGNoYXIgY2ggPSAnXDAnOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmbiwgJmNo
KSk7Ci0gIEVYUEVDVF9FUSgyLCBuKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGNoKTsKLQotICBhID0g
U2V0QXJndW1lbnRQb2ludGVlPDI+KCdhJyk7Ci0gIG4gPSAwOwotICBjaCA9ICdcMCc7Ci0gIGEu
UGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZuLCAmY2gpKTsKLSAgRVhQRUNUX0VRKDAsIG4pOwot
ICBFWFBFQ1RfRVEoJ2EnLCBjaCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfUFJPVE9CVUZfCi0KLS8v
IFRlc3RzIHRoYXQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgc2V0cyB0aGUg
djEgcHJvdG9idWYKLS8vIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQp
IGFyZ3VtZW50IHRvIHByb3RvX2J1ZmZlci4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwg
U2V0c1RoZU50aFBvaW50ZWVPZlByb3RvQnVmZmVyVHlwZSkgewotICBUZXN0TWVzc2FnZSogY29u
c3QgbXNnID0gbmV3IFRlc3RNZXNzYWdlOwotICBtc2ctPnNldF9tZW1iZXIoInllcyIpOwotICBU
ZXN0TWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7Ci0KLSAgQWN0
aW9uPHZvaWQoYm9vbCwgVGVzdE1lc3NhZ2UqKT4gYSA9IFNldEFyZ3VtZW50UG9pbnRlZTwxPigq
bXNnKTsKLSAgLy8gU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgbWFrZXMgYSBj
b3B5IG9mIHByb3RvX2J1ZmZlcgotICAvLyBzLnQuIHRoZSBhY3Rpb24gd29ya3MgZXZlbiB3aGVu
IHRoZSBvcmlnaW5hbCBwcm90b19idWZmZXIgaGFzCi0gIC8vIGRpZWQuICBXZSBlbnN1cmUgdGhp
cyBiZWhhdmlvciBieSBkZWxldGluZyBtc2cgYmVmb3JlIHVzaW5nIHRoZQotICAvLyBhY3Rpb24u
Ci0gIGRlbGV0ZSBtc2c7Ci0KLSAgVGVzdE1lc3NhZ2UgZGVzdDsKLSAgRVhQRUNUX0ZBTFNFKG9y
aWdfbXNnLkVxdWFscyhkZXN0KSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZkZXN0
KSk7Ci0gIEVYUEVDVF9UUlVFKG9yaWdfbXNnLkVxdWFscyhkZXN0KSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgc2V0cyB0aGUKLS8vIDo6
UHJvdG9jb2xNZXNzYWdlIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQp
Ci0vLyBhcmd1bWVudCB0byBwcm90b19idWZmZXIuCi1URVNUKFNldEFyZ3VtZW50UG9pbnRlZVRl
c3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQcm90b0J1ZmZlckJhc2VUeXBlKSB7Ci0gIFRlc3RNZXNz
YWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+c2V0X21lbWJlcigieWVz
Iik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5RnJvbSgqbXNnKTsK
LQotICBBY3Rpb248dm9pZChib29sLCA6OlByb3RvY29sTWVzc2FnZSopPiBhID0gU2V0QXJndW1l
bnRQb2ludGVlPDE+KCptc2cpOwotICAvLyBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG9fYnVm
ZmVyKSBtYWtlcyBhIGNvcHkgb2YgcHJvdG9fYnVmZmVyCi0gIC8vIHMudC4gdGhlIGFjdGlvbiB3
b3JrcyBldmVuIHdoZW4gdGhlIG9yaWdpbmFsIHByb3RvX2J1ZmZlciBoYXMKLSAgLy8gZGllZC4g
IFdlIGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZyBiZWZvcmUgdXNpbmcgdGhl
Ci0gIC8vIGFjdGlvbi4KLSAgZGVsZXRlIG1zZzsKLQotICBUZXN0TWVzc2FnZSBkZXN0OwotICA6
OlByb3RvY29sTWVzc2FnZSogY29uc3QgZGVzdF9iYXNlID0gJmRlc3Q7Ci0gIEVYUEVDVF9GQUxT
RShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBk
ZXN0X2Jhc2UpKTsKLSAgRVhQRUNUX1RSVUUob3JpZ19tc2cuRXF1YWxzKGRlc3QpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0
aGUgdjIKLS8vIHByb3RvYnVmIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFz
ZWQpIGFyZ3VtZW50IHRvCi0vLyBwcm90bzJfYnVmZmVyLgotVEVTVChTZXRBcmd1bWVudFBvaW50
ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG8yQnVmZmVyVHlwZSkgewotICB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9vTWVzc2FnZTsKLSAgRm9vTWVzc2FnZSogY29uc3QgbXNnID0g
bmV3IEZvb01lc3NhZ2U7Ci0gIG1zZy0+c2V0X2ludF9maWVsZCgyKTsKLSAgbXNnLT5zZXRfc3Ry
aW5nX2ZpZWxkKCJoaSIpOwotICBGb29NZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5
RnJvbSgqbXNnKTsKLQotICBBY3Rpb248dm9pZChib29sLCBGb29NZXNzYWdlKik+IGEgPSBTZXRB
cmd1bWVudFBvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90
bzJfYnVmZmVyKSBtYWtlcyBhIGNvcHkgb2YKLSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBh
Y3Rpb24gd29ya3MgZXZlbiB3aGVuIHRoZSBvcmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhh
cyBkaWVkLiAgV2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJl
Zm9yZSB1c2luZyB0aGUgYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVz
dDsKLSAgZGVzdC5zZXRfaW50X2ZpZWxkKDApOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVl
LCAmZGVzdCkpOwotICBFWFBFQ1RfRVEoMiwgZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9F
USgiaGkiLCBkZXN0LnN0cmluZ19maWVsZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTZXRBcmd1
bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0aGUKLS8vIHByb3RvMjo6TWVzc2Fn
ZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudAotLy8g
dG8gcHJvdG8yX2J1ZmZlci4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwgU2V0c1RoZU50
aFBvaW50ZWVPZlByb3RvMkJ1ZmZlckJhc2VUeXBlKSB7Ci0gIHVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpGb29NZXNzYWdlOwotICBGb29NZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgRm9vTWVzc2Fn
ZTsKLSAgbXNnLT5zZXRfaW50X2ZpZWxkKDIpOwotICBtc2ctPnNldF9zdHJpbmdfZmllbGQoImhp
Iik7Ci0gIEZvb01lc3NhZ2Ugb3JpZ19tc2c7Ci0gIG9yaWdfbXNnLkNvcHlGcm9tKCptc2cpOwot
Ci0gIEFjdGlvbjx2b2lkKGJvb2wsIDo6cHJvdG8yOjpNZXNzYWdlKik+IGEgPSBTZXRBcmd1bWVu
dFBvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90bzJfYnVm
ZmVyKSBtYWtlcyBhIGNvcHkgb2YKLSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBhY3Rpb24g
d29ya3MgZXZlbiB3aGVuIHRoZSBvcmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhhcyBkaWVk
LiAgV2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJlZm9yZSB1
c2luZyB0aGUgYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVzdDsKLSAg
ZGVzdC5zZXRfaW50X2ZpZWxkKDApOwotICA6OnByb3RvMjo6TWVzc2FnZSogY29uc3QgZGVzdF9i
YXNlID0gJmRlc3Q7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIGRlc3RfYmFzZSkpOwot
ICBFWFBFQ1RfRVEoMiwgZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9FUSgiaGkiLCBkZXN0
LnN0cmluZ19maWVsZCgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFJPVE9CVUZfCi0K
LS8vIFNhbXBsZSBmdW5jdGlvbnMgYW5kIGZ1bmN0b3JzIGZvciB0ZXN0aW5nIEludm9rZSgpIGFu
ZCBldGMuCi1pbnQgTnVsbGFyeSgpIHsgcmV0dXJuIDE7IH0KLQotY2xhc3MgTnVsbGFyeUZ1bmN0
b3IgewotIHB1YmxpYzoKLSAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiAyOyB9Ci19OwotCi1i
b29sIGdfZG9uZSA9IGZhbHNlOwotdm9pZCBWb2lkTnVsbGFyeSgpIHsgZ19kb25lID0gdHJ1ZTsg
fQotCi1jbGFzcyBWb2lkTnVsbGFyeUZ1bmN0b3IgewotIHB1YmxpYzoKLSAgdm9pZCBvcGVyYXRv
cigpKCkgeyBnX2RvbmUgPSB0cnVlOyB9Ci19OwotCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAg
Rm9vKCkgOiB2YWx1ZV8oMTIzKSB7fQotCi0gIGludCBOdWxsYXJ5KCkgY29uc3QgeyByZXR1cm4g
dmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotLy8gVGVzdHMgSW52
b2tlV2l0aG91dEFyZ3MoZnVuY3Rpb24pLgotVEVTVChJbnZva2VXaXRob3V0QXJnc1Rlc3QsIEZ1
bmN0aW9uKSB7Ci0gIC8vIEFzIGFuIGFjdGlvbiB0aGF0IHRha2VzIG9uZSBhcmd1bWVudC4KLSAg
QWN0aW9uPGludChpbnQpPiBhID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeSk7ICAvLyBOT0xJ
TlQKLSAgRVhQRUNUX0VRKDEsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKSk7Ci0KLSAgLy8gQXMg
YW4gYWN0aW9uIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cy4KLSAgQWN0aW9uPGludChpbnQsIGRv
dWJsZSk+IGEyID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeSk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0VRKDEsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgyLCAzLjUpKSk7Ci0KLSAgLy8gQXMgYW4g
YWN0aW9uIHRoYXQgcmV0dXJucyB2b2lkLgotICBBY3Rpb248dm9pZChpbnQpPiBhMyA9IEludm9r
ZVdpdGhvdXRBcmdzKFZvaWROdWxsYXJ5KTsgIC8vIE5PTElOVAotICBnX2RvbmUgPSBmYWxzZTsK
LSAgYTMuUGVyZm9ybShtYWtlX3R1cGxlKDEpKTsKLSAgRVhQRUNUX1RSVUUoZ19kb25lKTsKLX0K
LQotLy8gVGVzdHMgSW52b2tlV2l0aG91dEFyZ3MoZnVuY3RvcikuCi1URVNUKEludm9rZVdpdGhv
dXRBcmdzVGVzdCwgRnVuY3RvcikgewotICAvLyBBcyBhbiBhY3Rpb24gdGhhdCB0YWtlcyBubyBh
cmd1bWVudC4KLSAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeUZ1
bmN0b3IoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDIsIGEuUGVyZm9ybShtYWtlX3R1cGxl
KCkpKTsKLQotICAvLyBBcyBhbiBhY3Rpb24gdGhhdCB0YWtlcyB0aHJlZSBhcmd1bWVudHMuCi0g
IEFjdGlvbjxpbnQoaW50LCBkb3VibGUsIGNoYXIpPiBhMiA9ICAvLyBOT0xJTlQKLSAgICAgIElu
dm9rZVdpdGhvdXRBcmdzKE51bGxhcnlGdW5jdG9yKCkpOwotICBFWFBFQ1RfRVEoMiwgYTIuUGVy
Zm9ybShtYWtlX3R1cGxlKDMsIDMuNSwgJ2EnKSkpOwotCi0gIC8vIEFzIGFuIGFjdGlvbiB0aGF0
IHJldHVybnMgdm9pZC4KLSAgQWN0aW9uPHZvaWQoKT4gYTMgPSBJbnZva2VXaXRob3V0QXJncyhW
b2lkTnVsbGFyeUZ1bmN0b3IoKSk7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBhMy5QZXJmb3JtKG1h
a2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9UUlVFKGdfZG9uZSk7Ci19Ci0KLS8vIFRlc3RzIEludm9r
ZVdpdGhvdXRBcmdzKG9ial9wdHIsIG1ldGhvZCkuCi1URVNUKEludm9rZVdpdGhvdXRBcmdzVGVz
dCwgTWV0aG9kKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoYm9vbCwgY2hhcik+IGEgPSAg
Ly8gTk9MSU5UCi0gICAgICBJbnZva2VXaXRob3V0QXJncygmZm9vLCAmRm9vOjpOdWxsYXJ5KTsK
LSAgRVhQRUNUX0VRKDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJ2EnKSkpOwotfQot
Ci0vLyBUZXN0cyB1c2luZyBJZ25vcmVSZXN1bHQoKSBvbiBhIHBvbHltb3JwaGljIGFjdGlvbi4K
LVRFU1QoSWdub3JlUmVzdWx0VGVzdCwgUG9seW1vcnBoaWNBY3Rpb24pIHsKLSAgQWN0aW9uPHZv
aWQoaW50KT4gYSA9IElnbm9yZVJlc3VsdChSZXR1cm4oNSkpOyAgLy8gTk9MSU5UCi0gIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKDEpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSWdub3JlUmVzdWx0KCkg
b24gYSBtb25vbW9ycGhpYyBhY3Rpb24uCi0KLWludCBSZXR1cm5PbmUoKSB7Ci0gIGdfZG9uZSA9
IHRydWU7Ci0gIHJldHVybiAxOwotfQotCi1URVNUKElnbm9yZVJlc3VsdFRlc3QsIE1vbm9tb3Jw
aGljQWN0aW9uKSB7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBBY3Rpb248dm9pZCgpPiBhID0gSWdu
b3JlUmVzdWx0KEludm9rZShSZXR1cm5PbmUpKTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7
Ci0gIEVYUEVDVF9UUlVFKGdfZG9uZSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIElnbm9yZVJlc3Vs
dCgpIG9uIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgYSBjbGFzcyB0eXBlLgotCi1NeU5vbkRlZmF1
bHRDb25zdHJ1Y3RpYmxlIFJldHVybk15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUoZG91YmxlIC8q
IHggKi8pIHsKLSAgZ19kb25lID0gdHJ1ZTsKLSAgcmV0dXJuIE15Tm9uRGVmYXVsdENvbnN0cnVj
dGlibGUoNDIpOwotfQotCi1URVNUKElnbm9yZVJlc3VsdFRlc3QsIEFjdGlvblJldHVybmluZ0Ns
YXNzKSB7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBBY3Rpb248dm9pZChpbnQpPiBhID0KLSAgICAg
IElnbm9yZVJlc3VsdChJbnZva2UoUmV0dXJuTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSkpOyAg
Ly8gTk9MSU5UCi0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKTsKLSAgRVhQRUNUX1RSVUUoZ19k
b25lKTsKLX0KLQotVEVTVChBc3NpZ25UZXN0LCBJbnQpIHsKLSAgaW50IHggPSAwOwotICBBY3Rp
b248dm9pZChpbnQpPiBhID0gQXNzaWduKCZ4LCA1KTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
MCkpOwotICBFWFBFQ1RfRVEoNSwgeCk7Ci19Ci0KLVRFU1QoQXNzaWduVGVzdCwgU3RyaW5nKSB7
Ci0gIDo6c3RkOjpzdHJpbmcgeDsKLSAgQWN0aW9uPHZvaWQodm9pZCk+IGEgPSBBc3NpZ24oJngs
ICJIZWxsbywgd29ybGQiKTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9F
USgiSGVsbG8sIHdvcmxkIiwgeCk7Ci19Ci0KLVRFU1QoQXNzaWduVGVzdCwgQ29tcGF0aWJsZVR5
cGVzKSB7Ci0gIGRvdWJsZSB4ID0gMDsKLSAgQWN0aW9uPHZvaWQoaW50KT4gYSA9IEFzc2lnbigm
eCwgNSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKDApKTsKLSAgRVhQRUNUX0RPVUJMRV9FUSg1
LCB4KTsKLX0KLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1jbGFzcyBTZXRFcnJu
b0FuZFJldHVyblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IGVycm5vID0gMDsgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IGVycm5vID0gMDsgfQotfTsKLQotVEVTVF9GKFNldEVycm5vQW5kUmV0dXJuVGVzdCwg
SW50KSB7Ci0gIEFjdGlvbjxpbnQodm9pZCk+IGEgPSBTZXRFcnJub0FuZFJldHVybihFTk9UVFks
IC01KTsKLSAgRVhQRUNUX0VRKC01LCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci0gIEVYUEVD
VF9FUShFTk9UVFksIGVycm5vKTsKLX0KLQotVEVTVF9GKFNldEVycm5vQW5kUmV0dXJuVGVzdCwg
UHRyKSB7Ci0gIGludCB4OwotICBBY3Rpb248aW50Kih2b2lkKT4gYSA9IFNldEVycm5vQW5kUmV0
dXJuKEVOT1RUWSwgJngpOwotICBFWFBFQ1RfRVEoJngsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCkp
KTsKLSAgRVhQRUNUX0VRKEVOT1RUWSwgZXJybm8pOwotfQotCi1URVNUX0YoU2V0RXJybm9BbmRS
ZXR1cm5UZXN0LCBDb21wYXRpYmxlVHlwZXMpIHsKLSAgQWN0aW9uPGRvdWJsZSgpPiBhID0gU2V0
RXJybm9BbmRSZXR1cm4oRUlOVkFMLCA1KTsKLSAgRVhQRUNUX0RPVUJMRV9FUSg1LjAsIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKEVJTlZBTCwgZXJybm8pOwotfQotCi0j
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBUZXN0cyBCeVJlZigpLgot
Ci0vLyBUZXN0cyB0aGF0IFJlZmVyZW5jZVdyYXBwZXI8VD4gaXMgY29weWFibGUuCi1URVNUKEJ5
UmVmVGVzdCwgSXNDb3B5YWJsZSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBzMSA9ICJIaSI7Ci0g
IGNvbnN0IHN0ZDo6c3RyaW5nIHMyID0gIkhlbGxvIjsKLQotICA6OnRlc3Rpbmc6OmludGVybmFs
OjpSZWZlcmVuY2VXcmFwcGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiByZWZfd3JhcHBlciA9Ci0gICAg
ICBCeVJlZihzMSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiByMSA9IHJlZl93cmFwcGVyOwotICBF
WFBFQ1RfRVEoJnMxLCAmcjEpOwotCi0gIC8vIEFzc2lnbnMgYSBuZXcgdmFsdWUgdG8gcmVmX3dy
YXBwZXIuCi0gIHJlZl93cmFwcGVyID0gQnlSZWYoczIpOwotICBjb25zdCBzdGQ6OnN0cmluZyYg
cjIgPSByZWZfd3JhcHBlcjsKLSAgRVhQRUNUX0VRKCZzMiwgJnIyKTsKLQotICA6OnRlc3Rpbmc6
OmludGVybmFsOjpSZWZlcmVuY2VXcmFwcGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiByZWZfd3JhcHBl
cjEgPQotICAgICAgQnlSZWYoczEpOwotICAvLyBDb3BpZXMgcmVmX3dyYXBwZXIxIHRvIHJlZl93
cmFwcGVyLgotICByZWZfd3JhcHBlciA9IHJlZl93cmFwcGVyMTsKLSAgY29uc3Qgc3RkOjpzdHJp
bmcmIHIzID0gcmVmX3dyYXBwZXI7Ci0gIEVYUEVDVF9FUSgmczEsICZyMyk7Ci19Ci0KLS8vIFRl
c3RzIHVzaW5nIEJ5UmVmKCkgb24gYSBjb25zdCB2YWx1ZS4KLVRFU1QoQnlSZWZUZXN0LCBDb25z
dFZhbHVlKSB7Ci0gIGNvbnN0IGludCBuID0gMDsKLSAgLy8gaW50JiByZWYgPSBCeVJlZihuKTsg
IC8vIFRoaXMgc2hvdWxkbid0IGNvbXBpbGUgLSB3ZSBoYXZlIGEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3QgdG8gY2F0Y2ggaXQuCi0gIGNv
bnN0IGludCYgY29uc3RfcmVmID0gQnlSZWYobik7Ci0gIEVYUEVDVF9FUSgmbiwgJmNvbnN0X3Jl
Zik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEJ5UmVmKCkgb24gYSBub24tY29uc3QgdmFsdWUuCi1U
RVNUKEJ5UmVmVGVzdCwgTm9uQ29uc3RWYWx1ZSkgewotICBpbnQgbiA9IDA7Ci0KLSAgLy8gQnlS
ZWYobikgY2FuIGJlIHVzZWQgYXMgZWl0aGVyIGFuIGludCYsCi0gIGludCYgcmVmID0gQnlSZWYo
bik7Ci0gIEVYUEVDVF9FUSgmbiwgJnJlZik7Ci0KLSAgLy8gb3IgYSBjb25zdCBpbnQmLgotICBj
b25zdCBpbnQmIGNvbnN0X3JlZiA9IEJ5UmVmKG4pOwotICBFWFBFQ1RfRVEoJm4sICZjb25zdF9y
ZWYpOwotfQotCi0vLyBUZXN0cyBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIHR5cGUgd2hlbiB1
c2luZyBCeVJlZigpLgotVEVTVChCeVJlZlRlc3QsIEV4cGxpY2l0VHlwZSkgewotICBpbnQgbiA9
IDA7Ci0gIGNvbnN0IGludCYgcjEgPSBCeVJlZjxjb25zdCBpbnQ+KG4pOwotICBFWFBFQ1RfRVEo
Jm4sICZyMSk7Ci0KLSAgLy8gQnlSZWY8Y2hhcj4obik7ICAvLyBUaGlzIHNob3VsZG4ndCBjb21w
aWxlIC0gd2UgaGF2ZSBhIG5lZ2F0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGls
YXRpb24gdGVzdCB0byBjYXRjaCBpdC4KLQotICBEZXJpdmVkIGQ7Ci0gIERlcml2ZWQmIHIyID0g
QnlSZWY8RGVyaXZlZD4oZCk7Ci0gIEVYUEVDVF9FUSgmZCwgJnIyKTsKLQotICBjb25zdCBEZXJp
dmVkJiByMyA9IEJ5UmVmPGNvbnN0IERlcml2ZWQ+KGQpOwotICBFWFBFQ1RfRVEoJmQsICZyMyk7
Ci0KLSAgQmFzZSYgcjQgPSBCeVJlZjxCYXNlPihkKTsKLSAgRVhQRUNUX0VRKCZkLCAmcjQpOwot
Ci0gIGNvbnN0IEJhc2UmIHI1ID0gQnlSZWY8Y29uc3QgQmFzZT4oZCk7Ci0gIEVYUEVDVF9FUSgm
ZCwgJnI1KTsKLQotICAvLyBUaGUgZm9sbG93aW5nIHNob3VsZG4ndCBjb21waWxlIC0gd2UgaGF2
ZSBhIG5lZ2F0aXZlIGNvbXBpbGF0aW9uCi0gIC8vIHRlc3QgZm9yIGl0LgotICAvLwotICAvLyBC
YXNlIGI7Ci0gIC8vIEJ5UmVmPERlcml2ZWQ+KGIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2ds
ZSBNb2NrIHByaW50cyBleHByZXNzaW9uIEJ5UmVmKHgpIGFzIGEgcmVmZXJlbmNlIHRvIHguCi1U
RVNUKEJ5UmVmVGVzdCwgUHJpbnRzQ29ycmVjdGx5KSB7Ci0gIGludCBuID0gNDI7Ci0gIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWQsIGFjdHVhbDsKLSAgdGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFByaW50ZXI8Y29uc3QgaW50Jj46OlByaW50KG4sICZleHBlY3RlZCk7Ci0gIHRlc3Rp
bmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChCeVJlZihuKSwgJmFjdHVhbCk7Ci0gIEVYUEVD
VF9FUShleHBlY3RlZC5zdHIoKSwgYWN0dWFsLnN0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19T
VERfVU5JUVVFX1BUUl8KLQotc3RkOjp1bmlxdWVfcHRyPGludD4gVW5pcXVlUHRyU291cmNlKCkg
ewotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCgxOSkpOwotfQotCi1zdGQ6
OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gVmVjdG9yVW5pcXVlUHRyU291cmNlKCkgewot
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gb3V0OwotICBvdXQuZW1wbGFjZV9i
YWNrKG5ldyBpbnQoNykpOwotICByZXR1cm4gb3V0OwotfQotCi1URVNUKE1vY2tNZXRob2RUZXN0
LCBDYW5SZXR1cm5Nb3ZlT25seVZhbHVlX1JldHVybikgewotICBNb2NrQ2xhc3MgbW9jazsKLSAg
c3RkOjp1bmlxdWVfcHRyPGludD4gaShuZXcgaW50KDE5KSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ss
IE1ha2VVbmlxdWUoKSkuV2lsbE9uY2UoUmV0dXJuKEJ5TW92ZShzdGQ6Om1vdmUoaSkpKSk7Ci0g
IEVYUEVDVF9DQUxMKG1vY2ssIE1ha2VWZWN0b3JVbmlxdWUoKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oQnlNb3ZlKFZlY3RvclVuaXF1ZVB0clNvdXJjZSgpKSkpOwotICBEZXJpdmVkKiBkID0g
bmV3IERlcml2ZWQ7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIE1ha2VVbmlxdWVCYXNlKCkpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKEJ5TW92ZShzdGQ6OnVuaXF1ZV9wdHI8RGVyaXZlZD4oZCkpKSk7
Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPGludD4gcmVzdWx0MSA9IG1vY2suTWFrZVVuaXF1ZSgpOwot
ICBFWFBFQ1RfRVEoMTksICpyZXN1bHQxKTsKLQotICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gdnJlc3VsdCA9IG1vY2suTWFrZVZlY3RvclVuaXF1ZSgpOwotICBFWFBFQ1RfRVEo
MXUsIHZyZXN1bHQuc2l6ZSgpKTsKLSAgRVhQRUNUX05FKG51bGxwdHIsIHZyZXN1bHRbMF0pOwot
ICBFWFBFQ1RfRVEoNywgKnZyZXN1bHRbMF0pOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxCYXNlPiBy
ZXN1bHQyID0gbW9jay5NYWtlVW5pcXVlQmFzZSgpOwotICBFWFBFQ1RfRVEoZCwgcmVzdWx0Mi5n
ZXQoKSk7Ci19Ci0KLVRFU1QoTW9ja01ldGhvZFRlc3QsIENhblJldHVybk1vdmVPbmx5VmFsdWVf
RG9BbGxSZXR1cm4pIHsKLSAgdGVzdGluZzo6TW9ja0Z1bmN0aW9uPHZvaWQoKT4gbW9ja19mdW5j
dGlvbjsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+IGkobmV3IGlu
dCgxOSkpOwotICBFWFBFQ1RfQ0FMTChtb2NrX2Z1bmN0aW9uLCBDYWxsKCkpOwotICBFWFBFQ1Rf
Q0FMTChtb2NrLCBNYWtlVW5pcXVlKCkpLldpbGxPbmNlKERvQWxsKAotICAgICAgSW52b2tlV2l0
aG91dEFyZ3MoJm1vY2tfZnVuY3Rpb24sICZ0ZXN0aW5nOjpNb2NrRnVuY3Rpb248dm9pZCgpPjo6
Q2FsbCksCi0gICAgICBSZXR1cm4oQnlNb3ZlKHN0ZDo6bW92ZShpKSkpKSk7Ci0KLSAgc3RkOjp1
bmlxdWVfcHRyPGludD4gcmVzdWx0MSA9IG1vY2suTWFrZVVuaXF1ZSgpOwotICBFWFBFQ1RfRVEo
MTksICpyZXN1bHQxKTsKLX0KLQotVEVTVChNb2NrTWV0aG9kVGVzdCwgQ2FuUmV0dXJuTW92ZU9u
bHlWYWx1ZV9JbnZva2UpIHsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0KLSAgLy8gQ2hlY2sgZGVmYXVs
dCB2YWx1ZQotICBEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpTZXRGYWN0b3J5
KFtdIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCg0MikpOwotICB9
KTsKLSAgRVhQRUNUX0VRKDQyLCAqbW9jay5NYWtlVW5pcXVlKCkpOwotCi0gIEVYUEVDVF9DQUxM
KG1vY2ssIE1ha2VVbmlxdWUoKSkuV2lsbFJlcGVhdGVkbHkoSW52b2tlKFVuaXF1ZVB0clNvdXJj
ZSkpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBNYWtlVmVjdG9yVW5pcXVlKCkpCi0gICAgICAuV2ls
bFJlcGVhdGVkbHkoSW52b2tlKFZlY3RvclVuaXF1ZVB0clNvdXJjZSkpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8aW50PiByZXN1bHQxID0gbW9jay5NYWtlVW5pcXVlKCk7Ci0gIEVYUEVDVF9FUSgxOSwg
KnJlc3VsdDEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiByZXN1bHQyID0gbW9jay5NYWtlVW5p
cXVlKCk7Ci0gIEVYUEVDVF9FUSgxOSwgKnJlc3VsdDIpOwotICBFWFBFQ1RfTkUocmVzdWx0MSwg
cmVzdWx0Mik7Ci0KLSAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHZyZXN1bHQg
PSBtb2NrLk1ha2VWZWN0b3JVbmlxdWUoKTsKLSAgRVhQRUNUX0VRKDF1LCB2cmVzdWx0LnNpemUo
KSk7Ci0gIEVYUEVDVF9ORShudWxscHRyLCB2cmVzdWx0WzBdKTsKLSAgRVhQRUNUX0VRKDcsICp2
cmVzdWx0WzBdKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0K
LX0gIC8vIFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLWNhcmRpbmFsaXRpZXNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stY2FyZGlu
YWxpdGllc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDgxNWU1N2Ez
OTA2ZTgwMTU0ODA2MDIzMjI1Y2ZhYjNiZjY4ZDUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stY2FyZGluYWxpdGll
c190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDI4ICswLDAgQEAKLS8vIENvcHlyaWdodCAy
MDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdy
aXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGJ1aWx0
LWluIGNhcmRpbmFsaXRpZXMuCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLW5hbWVzcGFj
ZSB7Ci0KLXVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOwotdXNpbmcgdGVzdGluZzo6QW55TnVtYmVy
OwotdXNpbmcgdGVzdGluZzo6QXRMZWFzdDsKLXVzaW5nIHRlc3Rpbmc6OkF0TW9zdDsKLXVzaW5n
IHRlc3Rpbmc6OkJldHdlZW47Ci11c2luZyB0ZXN0aW5nOjpDYXJkaW5hbGl0eTsKLXVzaW5nIHRl
c3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwotdXNpbmcgdGVzdGluZzo6RXhhY3RseTsKLXVz
aW5nIHRlc3Rpbmc6OklzU3Vic3RyaW5nOwotdXNpbmcgdGVzdGluZzo6TWFrZUNhcmRpbmFsaXR5
OwotCi1jbGFzcyBNb2NrRm9vIHsKLSBwdWJsaWM6Ci0gIE1vY2tGb28oKSB7fQotICBNT0NLX01F
VEhPRDAoQmFyLCBpbnQoKSk7ICAvLyBOT0xJTlQKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Zvbyk7Ci19OwotCi0vLyBUZXN0cyB0aGF0IENhcmRp
bmFsaXR5IG9iamVjdHMgY2FuIGJlIGRlZmF1bHQgY29uc3RydWN0ZWQuCi1URVNUKENhcmRpbmFs
aXR5VGVzdCwgSXNEZWZhdWx0Q29uc3RydWN0YWJsZSkgewotICBDYXJkaW5hbGl0eSBjOwotfQot
Ci0vLyBUZXN0cyB0aGF0IENhcmRpbmFsaXR5IG9iamVjdHMgYXJlIGNvcHlhYmxlLgotVEVTVChD
YXJkaW5hbGl0eVRlc3QsIElzQ29weWFibGUpIHsKLSAgLy8gVGVzdHMgdGhlIGNvcHkgY29uc3Ry
dWN0b3IuCi0gIENhcmRpbmFsaXR5IGMgPSBFeGFjdGx5KDEpOwotICBFWFBFQ1RfRkFMU0UoYy5J
c1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5
Q2FsbENvdW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEp
KTsKLQotICAvLyBUZXN0cyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgYyA9IEV4YWN0bHko
Mik7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMSkpOwotICBFWFBF
Q1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMikpOwotICBFWFBFQ1RfVFJVRShjLklz
U2F0dXJhdGVkQnlDYWxsQ291bnQoMikpOwotfQotCi1URVNUKENhcmRpbmFsaXR5VGVzdCwgSXNP
dmVyU2F0dXJhdGVkQnlDYWxsQ291bnRXb3JrcykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0g
QXRNb3N0KDUpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudCg0
KSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzT3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50KDUpKTsKLSAg
RVhQRUNUX1RSVUUoYy5Jc092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudCg2KSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgQ2FyZGluYWxpdHk6OkRlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oKSBjcmVhdGVz
IHRoZQotLy8gY29ycmVjdCBkZXNjcmlwdGlvbi4KLVRFU1QoQ2FyZGluYWxpdHlUZXN0LCBDYW5E
ZXNjcmliZUFjdHVhbENhbGxDb3VudCkgewotICBzdHJpbmdzdHJlYW0gc3MwOwotICBDYXJkaW5h
bGl0eTo6RGVzY3JpYmVBY3R1YWxDYWxsQ291bnRUbygwLCAmc3MwKTsKLSAgRVhQRUNUX0VRKCJu
ZXZlciBjYWxsZWQiLCBzczAuc3RyKCkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczE7Ci0gIENhcmRp
bmFsaXR5OjpEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKDEsICZzczEpOwotICBFWFBFQ1RfRVEo
ImNhbGxlZCBvbmNlIiwgc3MxLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MyOwotICBDYXJk
aW5hbGl0eTo6RGVzY3JpYmVBY3R1YWxDYWxsQ291bnRUbygyLCAmc3MyKTsKLSAgRVhQRUNUX0VR
KCJjYWxsZWQgdHdpY2UiLCBzczIuc3RyKCkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczM7Ci0gIENh
cmRpbmFsaXR5OjpEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKDMsICZzczMpOwotICBFWFBFQ1Rf
RVEoImNhbGxlZCAzIHRpbWVzIiwgc3MzLnN0cigpKTsKLX0KLQotLy8gVGVzdHMgQW55TnVtYmVy
KCkKLVRFU1QoQW55TnVtYmVyLCBXb3JrcykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQW55
TnVtYmVyKCk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0g
IEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMCkpOwotCi0gIEVYUEVDVF9U
UlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0
dXJhdGVkQnlDYWxsQ291bnQoMSkpOwotCi0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNh
bGxDb3VudCg5KSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoOSkp
OwotCi0gIHN0cmluZ3N0cmVhbSBzczsKLSAgYy5EZXNjcmliZVRvKCZzcyk7Ci0gIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgYW55IG51bWJlciBvZiB0aW1lcyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEFueU51bWJlclRlc3Qs
IEhhc0NvcnJlY3RCb3VuZHMpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEFueU51bWJlcigp
OwotICBFWFBFQ1RfRVEoMCwgYy5Db25zZXJ2YXRpdmVMb3dlckJvdW5kKCkpOwotICBFWFBFQ1Rf
RVEoSU5UX01BWCwgYy5Db25zZXJ2YXRpdmVVcHBlckJvdW5kKCkpOwotfQotCi0vLyBUZXN0cyBB
dExlYXN0KG4pLgotCi1URVNUKEF0TGVhc3RUZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEF0TGVhc3QoLTEpOwotICB9
LCAiVGhlIGludm9jYXRpb24gbG93ZXIgYm91bmQgbXVzdCBiZSA+PSAwIik7Ci19Ci0KLVRFU1Qo
QXRMZWFzdFRlc3QsIE9uWmVybykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRMZWFzdCgw
KTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNU
X0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5J
c1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRC
eUNhbGxDb3VudCgxKSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzOwotICBjLkRlc2NyaWJlVG8oJnNz
KTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImFueSBudW1iZXIgb2YgdGlt
ZXMiLAotICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpKTsKLX0KLQotVEVTVChBdExlYXN0
VGVzdCwgT25Qb3NpdGl2ZU51bWJlcikgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRMZWFz
dCgyKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVY
UEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMCkpOwotCi0gIEVYUEVDVF9GQUxT
RShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMSkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVy
YXRlZEJ5Q2FsbENvdW50KDEpKTsKLQotICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxs
Q291bnQoMikpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDIpKTsK
LQotICBzdHJpbmdzdHJlYW0gc3MxOwotICBBdExlYXN0KDEpLkRlc2NyaWJlVG8oJnNzMSk7Ci0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJhdCBsZWFzdCBvbmNlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICBzczEuc3RyKCkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczI7Ci0gIGMu
RGVzY3JpYmVUbygmc3MyKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImF0
IGxlYXN0IHR3aWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICBzczIuc3RyKCkpOwotCi0gIHN0
cmluZ3N0cmVhbSBzczM7Ci0gIEF0TGVhc3QoMykuRGVzY3JpYmVUbygmc3MzKTsKLSAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImF0IGxlYXN0IDMgdGltZXMiLAotICAgICAgICAg
ICAgICAgICAgICAgIHNzMy5zdHIoKSk7Ci19Ci0KLVRFU1QoQXRMZWFzdFRlc3QsIEhhc0NvcnJl
Y3RCb3VuZHMpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TGVhc3QoMik7Ci0gIEVYUEVD
VF9FUSgyLCBjLkNvbnNlcnZhdGl2ZUxvd2VyQm91bmQoKSk7Ci0gIEVYUEVDVF9FUShJTlRfTUFY
LCBjLkNvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKSk7Ci19Ci0KLS8vIFRlc3RzIEF0TW9zdChuKS4K
LQotVEVTVChBdE1vc3RUZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEF0TW9zdCgtMSk7Ci0gIH0sICJUaGUgaW52b2Nh
dGlvbiB1cHBlciBib3VuZCBtdXN0IGJlID49IDAiKTsKLX0KLQotVEVTVChBdE1vc3RUZXN0LCBP
blplcm8pIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TW9zdCgwKTsKLSAgRVhQRUNUX1RS
VUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVy
YXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsK
LQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1RfUFJF
RF9GT1JNQVQyKElzU3Vic3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKLSAgICAgICAgICAgICAgICAg
ICAgICBzcy5zdHIoKSk7Ci19Ci0KLVRFU1QoQXRNb3N0VGVzdCwgT25Qb3NpdGl2ZU51bWJlcikg
ewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRNb3N0KDIpOwotICBFWFBFQ1RfVFJVRShjLklz
U2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5
Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQo
MSkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKLQotICBF
WFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMikpOwotICBFWFBFQ1RfVFJVRShj
LklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMikpOwotCi0gIHN0cmluZ3N0cmVhbSBzczE7Ci0gIEF0
TW9zdCgxKS5EZXNjcmliZVRvKCZzczEpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3Ry
aW5nLCAiY2FsbGVkIGF0IG1vc3Qgb25jZSIsCi0gICAgICAgICAgICAgICAgICAgICAgc3MxLnN0
cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MyOwotICBjLkRlc2NyaWJlVG8oJnNzMik7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgYXQgbW9zdCB0d2ljZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgc3MyLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MzOwot
ICBBdE1vc3QoMykuRGVzY3JpYmVUbygmc3MzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1
YnN0cmluZywgImNhbGxlZCBhdCBtb3N0IDMgdGltZXMiLAotICAgICAgICAgICAgICAgICAgICAg
IHNzMy5zdHIoKSk7Ci19Ci0KLVRFU1QoQXRNb3N0VGVzdCwgSGFzQ29ycmVjdEJvdW5kcykgewot
ICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQXRNb3N0KDIpOwotICBFWFBFQ1RfRVEoMCwgYy5Db25z
ZXJ2YXRpdmVMb3dlckJvdW5kKCkpOwotICBFWFBFQ1RfRVEoMiwgYy5Db25zZXJ2YXRpdmVVcHBl
ckJvdW5kKCkpOwotfQotCi0vLyBUZXN0cyBCZXR3ZWVuKG0sIG4pLgotCi1URVNUKEJldHdlZW5U
ZXN0LCBPbk5lZ2F0aXZlU3RhcnQpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8g
Tk9MSU5UCi0gICAgQmV0d2VlbigtMSwgMik7Ci0gIH0sICJUaGUgaW52b2NhdGlvbiBsb3dlciBi
b3VuZCBtdXN0IGJlID49IDAsIGJ1dCBpcyBhY3R1YWxseSAtMSIpOwotfQotCi1URVNUKEJldHdl
ZW5UZXN0LCBPbk5lZ2F0aXZlRW5kKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEJldHdlZW4oMSwgLTIpOwotICB9LCAiVGhlIGludm9jYXRpb24gdXBwZXIg
Ym91bmQgbXVzdCBiZSA+PSAwLCBidXQgaXMgYWN0dWFsbHkgLTIiKTsKLX0KLQotVEVTVChCZXR3
ZWVuVGVzdCwgT25TdGFydEJpZ2dlclRoYW5FbmQpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgQmV0d2VlbigyLCAxKTsKLSAgfSwgIlRoZSBpbnZvY2F0aW9u
IHVwcGVyIGJvdW5kICgxKSBtdXN0IGJlID49ICIKLSAgICAgInRoZSBpbnZvY2F0aW9uIGxvd2Vy
IGJvdW5kICgyKSIpOwotfQotCi1URVNUKEJldHdlZW5UZXN0LCBPblplcm9TdGFydEFuZFplcm9F
bmQpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEJldHdlZW4oMCwgMCk7Ci0KLSAgRVhQRUNU
X1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1Nh
dHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5
Q2FsbENvdW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDEp
KTsKLQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKLSAgICAgICAgICAgICAg
ICAgICAgICBzcy5zdHIoKSk7Ci19Ci0KLVRFU1QoQmV0d2VlblRlc3QsIE9uWmVyb1N0YXJ0QW5k
Tm9uWmVyb0VuZCkgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQmV0d2VlbigwLCAyKTsKLQot
ICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOwotICBFWFBFQ1RfRkFM
U0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfVFJVRShjLklzU2F0
aXNmaWVkQnlDYWxsQ291bnQoMikpOwotICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxs
Q291bnQoMikpOwotCi0gIEVYUEVDVF9GQUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoNCkp
OwotICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoNCkpOwotCi0gIHN0cmlu
Z3N0cmVhbSBzczsKLSAgYy5EZXNjcmliZVRvKCZzcyk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
SXNTdWJzdHJpbmcsICJjYWxsZWQgYXQgbW9zdCB0d2ljZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEJldHdlZW5UZXN0LCBPblNhbWVTdGFydEFuZEVuZCkg
ewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQmV0d2VlbigzLCAzKTsKLQotICBFWFBFQ1RfRkFM
U0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1
cmF0ZWRCeUNhbGxDb3VudCgyKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KDMpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDMpKTsK
LQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDQpKTsKLSAgRVhQRUNU
X1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDQpKTsKLQotICBzdHJpbmdzdHJlYW0gc3M7
Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5n
LCAiY2FsbGVkIDMgdGltZXMiLAotICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpKTsKLX0K
LQotVEVTVChCZXR3ZWVuVGVzdCwgT25EaWZmZXJlbnRTdGFydEFuZEVuZCkgewotICBjb25zdCBD
YXJkaW5hbGl0eSBjID0gQmV0d2VlbigzLCA1KTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlz
ZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxD
b3VudCgyKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDMpKTsK
LSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgzKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDUpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1Nh
dHVyYXRlZEJ5Q2FsbENvdW50KDUpKTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5
Q2FsbENvdW50KDYpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDYp
KTsKLQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIGJldHdlZW4gMyBhbmQgNSB0aW1lcyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEJldHdlZW5UZXN0
LCBIYXNDb3JyZWN0Qm91bmRzKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBCZXR3ZWVuKDMs
IDUpOwotICBFWFBFQ1RfRVEoMywgYy5Db25zZXJ2YXRpdmVMb3dlckJvdW5kKCkpOwotICBFWFBF
Q1RfRVEoNSwgYy5Db25zZXJ2YXRpdmVVcHBlckJvdW5kKCkpOwotfQotCi0vLyBUZXN0cyBFeGFj
dGx5KG4pLgotCi1URVNUKEV4YWN0bHlUZXN0LCBPbk5lZ2F0aXZlTnVtYmVyKSB7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEV4YWN0bHkoLTEpOwotICB9LCAi
VGhlIGludm9jYXRpb24gbG93ZXIgYm91bmQgbXVzdCBiZSA+PSAwIik7Ci19Ci0KLVRFU1QoRXhh
Y3RseVRlc3QsIE9uWmVybykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gRXhhY3RseSgwKTsK
LSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX1RS
VUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1Nh
dGlzZmllZEJ5Q2FsbENvdW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2Fs
bENvdW50KDEpKTsKLQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwot
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAibmV2ZXIgY2FsbGVkIiwKLSAgICAg
ICAgICAgICAgICAgICAgICBzcy5zdHIoKSk7Ci19Ci0KLVRFU1QoRXhhY3RseVRlc3QsIE9uUG9z
aXRpdmVOdW1iZXIpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEV4YWN0bHkoMik7Ci0gIEVY
UEVDVF9GQUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOwotICBFWFBFQ1RfRkFMU0Uo
Yy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfVFJVRShjLklzU2F0aXNm
aWVkQnlDYWxsQ291bnQoMikpOwotICBFWFBFQ1RfVFJVRShjLklzU2F0dXJhdGVkQnlDYWxsQ291
bnQoMikpOwotCi0gIHN0cmluZ3N0cmVhbSBzczE7Ci0gIEV4YWN0bHkoMSkuRGVzY3JpYmVUbygm
c3MxKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImNhbGxlZCBvbmNlIiwK
LSAgICAgICAgICAgICAgICAgICAgICBzczEuc3RyKCkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczI7
Ci0gIGMuRGVzY3JpYmVUbygmc3MyKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmlu
ZywgImNhbGxlZCB0d2ljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgc3MyLnN0cigpKTsKLQot
ICBzdHJpbmdzdHJlYW0gc3MzOwotICBFeGFjdGx5KDMpLkRlc2NyaWJlVG8oJnNzMyk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgMyB0aW1lcyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgc3MzLnN0cigpKTsKLX0KLQotVEVTVChFeGFjdGx5VGVzdCwgSGFzQ29y
cmVjdEJvdW5kcykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gRXhhY3RseSgzKTsKLSAgRVhQ
RUNUX0VRKDMsIGMuQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpKTsKLSAgRVhQRUNUX0VRKDMsIGMu
Q29uc2VydmF0aXZlVXBwZXJCb3VuZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHVzZXIgY2Fu
IG1ha2UgaGlzIG93biBjYXJkaW5hbGl0eSBieSBpbXBsZW1lbnRpbmcKLS8vIENhcmRpbmFsaXR5
SW50ZXJmYWNlIGFuZCBjYWxsaW5nIE1ha2VDYXJkaW5hbGl0eSgpLgotCi1jbGFzcyBFdmVuQ2Fy
ZGluYWxpdHkgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRp
bmFsaXR5LgotICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9j
b3VudCkgY29uc3QgewotICAgIHJldHVybiAoY2FsbF9jb3VudCAlIDIgPT0gMCk7Ci0gIH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlz
IGNhcmRpbmFsaXR5LgotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQg
LyogY2FsbF9jb3VudCAqLykgY29uc3QgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8v
IERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRv
KDo6c3RkOjpvc3RyZWFtKiBzcykgY29uc3QgewotICAgICpzcyA8PCAiY2FsbGVkIGV2ZW4gbnVt
YmVyIG9mIHRpbWVzIjsKLSAgfQotfTsKLQotVEVTVChNYWtlQ2FyZGluYWxpdHlUZXN0LCBDb25z
dHJ1Y3RzQ2FyZGluYWxpdHlGcm9tSW50ZXJmYWNlKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMg
PSBNYWtlQ2FyZGluYWxpdHkobmV3IEV2ZW5DYXJkaW5hbGl0eSk7Ci0KLSAgRVhQRUNUX1RSVUUo
Yy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2Zp
ZWRCeUNhbGxDb3VudCgzKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxD
b3VudCgxMDAwMCkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczsKLSAgYy5EZXNjcmliZVRvKCZzcyk7
Ci0gIEVYUEVDVF9FUSgiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIiwgc3Muc3RyKCkpOwot
fQotCi19ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVz
dC9nbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9j
ay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1OGQ0NTcyOGIxZWNmNTI5ZmFhZjRhNWEyZThhNmM4NjM5MTE0ZDQ0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2st
Z2VuZXJhdGVkLWFjdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyMjggKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBh
IGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmls
ZSB0ZXN0cyB0aGUgYnVpbHQtaW4gYWN0aW9ucyBnZW5lcmF0ZWQgYnkgYSBzY3JpcHQuCi0KLSNp
bmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oIgotCi0jaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLW5hbWVzcGFjZSBnbW9ja19nZW5lcmF0ZWRfYWN0aW9uc190ZXN0IHsKLQotdXNp
bmcgOjpzdGQ6OnBsdXM7Ci11c2luZyA6OnN0ZDo6c3RyaW5nOwotdXNpbmcgdGVzdGluZzo6Z2V0
OwotdXNpbmcgdGVzdGluZzo6bWFrZV90dXBsZTsKLXVzaW5nIHRlc3Rpbmc6OnR1cGxlOwotdXNp
bmcgdGVzdGluZzo6dHVwbGVfZWxlbWVudDsKLXVzaW5nIHRlc3Rpbmc6Ol87Ci11c2luZyB0ZXN0
aW5nOjpBY3Rpb247Ci11c2luZyB0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7Ci11c2luZyB0ZXN0
aW5nOjpCeVJlZjsKLXVzaW5nIHRlc3Rpbmc6OkRvQWxsOwotdXNpbmcgdGVzdGluZzo6SW52b2tl
OwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuTmV3OwotdXNp
bmcgdGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKLXVzaW5nIHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5
cGVFcTsKLXVzaW5nIHRlc3Rpbmc6OlVudXNlZDsKLXVzaW5nIHRlc3Rpbmc6OldpdGhBcmdzOwot
Ci0vLyBGb3Igc3VwcHJlc3NpbmcgY29tcGlsZXIgd2FybmluZ3Mgb24gY29udmVyc2lvbiBwb3Nz
aWJseSBsb3NpbmcgcHJlY2lzaW9uLgotaW5saW5lIHNob3J0IFNob3J0KHNob3J0IG4pIHsgcmV0
dXJuIG47IH0gIC8vIE5PTElOVAotaW5saW5lIGNoYXIgQ2hhcihjaGFyIGNoKSB7IHJldHVybiBj
aDsgfQotCi0vLyBTYW1wbGUgZnVuY3Rpb25zIGFuZCBmdW5jdG9ycyBmb3IgdGVzdGluZyB2YXJp
b3VzIGFjdGlvbnMuCi1pbnQgTnVsbGFyeSgpIHsgcmV0dXJuIDE7IH0KLQotY2xhc3MgTnVsbGFy
eUZ1bmN0b3IgewotIHB1YmxpYzoKLSAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiAyOyB9Ci19
OwotCi1ib29sIGdfZG9uZSA9IGZhbHNlOwotCi1ib29sIFVuYXJ5KGludCB4KSB7IHJldHVybiB4
IDwgMDsgfQotCi1jb25zdCBjaGFyKiBQbHVzMShjb25zdCBjaGFyKiBzKSB7IHJldHVybiBzICsg
MTsgfQotCi1ib29sIEJ5Q29uc3RSZWYoY29uc3Qgc3RkOjpzdHJpbmcmIHMpIHsgcmV0dXJuIHMg
PT0gIkhpIjsgfQotCi1jb25zdCBkb3VibGUgZ19kb3VibGUgPSAwOwotYm9vbCBSZWZlcmVuY2Vz
R2xvYmFsRG91YmxlKGNvbnN0IGRvdWJsZSYgeCkgeyByZXR1cm4gJnggPT0gJmdfZG91YmxlOyB9
Ci0KLXN0ZDo6c3RyaW5nIEJ5Tm9uQ29uc3RSZWYoc3RkOjpzdHJpbmcmIHMpIHsgcmV0dXJuIHMg
Kz0gIisiOyB9ICAvLyBOT0xJTlQKLQotc3RydWN0IFVuYXJ5RnVuY3RvciB7Ci0gIGludCBvcGVy
YXRvcigpKGJvb2wgeCkgeyByZXR1cm4geCA/IDEgOiAtMTsgfQotfTsKLQotY29uc3QgY2hhciog
QmluYXJ5KGNvbnN0IGNoYXIqIGlucHV0LCBzaG9ydCBuKSB7IHJldHVybiBpbnB1dCArIG47IH0g
IC8vIE5PTElOVAotCi12b2lkIFZvaWRCaW5hcnkoaW50LCBjaGFyKSB7IGdfZG9uZSA9IHRydWU7
IH0KLQotaW50IFRlcm5hcnkoaW50IHgsIGNoYXIgeSwgc2hvcnQgeikgeyByZXR1cm4geCArIHkg
KyB6OyB9ICAvLyBOT0xJTlQKLQotdm9pZCBWb2lkVGVybmFyeShpbnQsIGNoYXIsIGJvb2wpIHsg
Z19kb25lID0gdHJ1ZTsgfQotCi1pbnQgU3VtT2Y0KGludCBhLCBpbnQgYiwgaW50IGMsIGludCBk
KSB7IHJldHVybiBhICsgYiArIGMgKyBkOyB9Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDQoY29uc3Qg
Y2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogczQpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsg
czMgKyBzNDsKLX0KLQotaW50IFN1bU9mNShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50
IGUpIHsgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlOyB9Ci0KLXN0cnVjdCBTdW1PZjVGdW5jdG9y
IHsKLSAgaW50IG9wZXJhdG9yKCkoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlKSB7
Ci0gICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlOwotICB9Ci19OwotCi1zdGQ6OnN0cmluZyBD
b25jYXQ1KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMsCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSkgewotICBy
ZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczU7Ci19Ci0KLWludCBTdW1P
ZjYoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikgewotICByZXR1cm4g
YSArIGIgKyBjICsgZCArIGUgKyBmOwotfQotCi1zdHJ1Y3QgU3VtT2Y2RnVuY3RvciB7Ci0gIGlu
dCBvcGVyYXRvcigpKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSwgaW50IGYpIHsK
LSAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIGUgKyBmOwotICB9Ci19OwotCi1zdGQ6OnN0cmlu
ZyBDb25jYXQ2KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMs
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29u
c3QgY2hhciogczYpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMgKyBzNCAr
IHM1ICsgczY7Ci19Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDcoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczcpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMg
KyBzNCArIHM1ICsgczYgKyBzNzsKLX0KLQotc3RkOjpzdHJpbmcgQ29uY2F0OChjb25zdCBjaGFy
KiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgpIHsKLSAgcmV0dXJu
IHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMgKyBzNCArIHM1ICsgczYgKyBzNyArIHM4OwotfQot
Ci1zdGQ6OnN0cmluZyBDb25jYXQ5KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29u
c3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBj
aGFyKiBzNSwgY29uc3QgY2hhciogczYsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHM3LCBjb25zdCBjaGFyKiBzOCwgY29uc3QgY2hhciogczkpIHsKLSAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKHMxKSArIHMyICsgczMgKyBzNCArIHM1ICsgczYgKyBzNyArIHM4ICsgczk7Ci19Ci0KLXN0
ZDo6c3RyaW5nIENvbmNhdDEwKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3Qg
Y2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hh
ciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
czcsIGNvbnN0IGNoYXIqIHM4LCBjb25zdCBjaGFyKiBzOSwKLSAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHMxMCkgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyAr
IHM0ICsgczUgKyBzNiArIHM3ICsgczggKyBzOSArIHMxMDsKLX0KLQotLy8gQSBoZWxwZXIgdGhh
dCB0dXJucyB0aGUgdHlwZSBvZiBhIEMtc3RyaW5nIGxpdGVyYWwgZnJvbSBjb25zdAotLy8gY2hh
cltOXSB0byBjb25zdCBjaGFyKi4KLWlubGluZSBjb25zdCBjaGFyKiBDaGFyUHRyKGNvbnN0IGNo
YXIqIHMpIHsgcmV0dXJuIHM7IH0KLQotLy8gVGVzdHMgSW52b2tlQXJndW1lbnQ8Tj4oLi4uKS4K
LQotLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIG51bGxhcnkgZnVuY3Rpb24u
Ci1URVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb24wKSB7Ci0gIEFjdGlvbjxpbnQoaW50
LCBpbnQoKikoKSk+IGEgPSBJbnZva2VBcmd1bWVudDwxPigpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9FUSgxLCBhLlBlcmZvcm0obWFrZV90dXBsZSgyLCAmTnVsbGFyeSkpKTsKLX0KLQotLy8gVGVz
dHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIHVuYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZv
a2VBcmd1bWVudFRlc3QsIEZ1bmN0b3IxKSB7Ci0gIEFjdGlvbjxpbnQoVW5hcnlGdW5jdG9yKT4g
YSA9IEludm9rZUFyZ3VtZW50PDA+KHRydWUpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSgxLCBh
LlBlcmZvcm0obWFrZV90dXBsZShVbmFyeUZ1bmN0b3IoKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNp
bmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIDUtYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VBcmd1
bWVudFRlc3QsIEZ1bmN0aW9uNSkgewotICBBY3Rpb248aW50KGludCgqKShpbnQsIGludCwgaW50
LCBpbnQsIGludCkpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlQXJndW1lbnQ8MD4oMTAw
MDAsIDIwMDAsIDMwMCwgNDAsIDUpOwotICBFWFBFQ1RfRVEoMTIzNDUsIGEuUGVyZm9ybShtYWtl
X3R1cGxlKCZTdW1PZjUpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdp
dGggYSA1LWFyeSBmdW5jdG9yLgotVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEZ1bmN0b3I1KSB7
Ci0gIEFjdGlvbjxpbnQoU3VtT2Y1RnVuY3Rvcik+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZv
a2VBcmd1bWVudDwwPigxMDAwMCwgMjAwMCwgMzAwLCA0MCwgNSk7Ci0gIEVYUEVDVF9FUSgxMjM0
NSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoU3VtT2Y1RnVuY3RvcigpKSkpOwotfQotCi0vLyBUZXN0
cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgNi1hcnkgZnVuY3Rpb24uCi1URVNUKEludm9r
ZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb242KSB7Ci0gIEFjdGlvbjxpbnQoaW50KCopKGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpKT4gYSA9ICAvLyBOT0xJTlQKLSAgICAgIEludm9rZUFyZ3Vt
ZW50PDA+KDEwMDAwMCwgMjAwMDAsIDMwMDAsIDQwMCwgNTAsIDYpOwotICBFWFBFQ1RfRVEoMTIz
NDU2LCBhLlBlcmZvcm0obWFrZV90dXBsZSgmU3VtT2Y2KSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgNi1hcnkgZnVuY3Rvci4KLVRFU1QoSW52b2tlQXJndW1l
bnRUZXN0LCBGdW5jdG9yNikgewotICBBY3Rpb248aW50KFN1bU9mNkZ1bmN0b3IpPiBhID0gIC8v
IE5PTElOVAotICAgICAgSW52b2tlQXJndW1lbnQ8MD4oMTAwMDAwLCAyMDAwMCwgMzAwMCwgNDAw
LCA1MCwgNik7Ci0gIEVYUEVDVF9FUSgxMjM0NTYsIGEuUGVyZm9ybShtYWtlX3R1cGxlKFN1bU9m
NkZ1bmN0b3IoKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBh
IDctYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEZ1bmN0aW9uNykgewot
ICBBY3Rpb248c3RkOjpzdHJpbmcoc3RkOjpzdHJpbmcoKikoY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKikpPgotICAgICAgYSA9IEludm9rZUFyZ3VtZW50
PDA+KCIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3Iik7Ci0gIEVYUEVDVF9FUSgiMTIz
NDU2NyIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZDb25jYXQ3KSkpOwotfQotCi0vLyBUZXN0cyB1
c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgOC1hcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZUFy
Z3VtZW50VGVzdCwgRnVuY3Rpb244KSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhzdGQ6OnN0cmlu
ZygqKShjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKikpPgotICAgICAgYSA9IEludm9rZUFyZ3VtZW50PDA+KCIxIiwgIjIiLCAiMyIs
ICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiKTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3OCIsIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCZDb25jYXQ4KSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2VB
cmd1bWVudCB3aXRoIGEgOS1hcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZUFyZ3VtZW50VGVzdCwg
RnVuY3Rpb245KSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhzdGQ6OnN0cmluZygqKShjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopKT4KLSAgICAgIGEgPSBJbnZva2VBcmd1bWVudDwwPigiMSIsICIyIiwgIjMi
LCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiKTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3ODki
LCBhLlBlcmZvcm0obWFrZV90dXBsZSgmQ29uY2F0OSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcg
SW52b2tlQXJndW1lbnQgd2l0aCBhIDEwLWFyeSBmdW5jdGlvbi4KLVRFU1QoSW52b2tlQXJndW1l
bnRUZXN0LCBGdW5jdGlvbjEwKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhzdGQ6OnN0cmluZygq
KSgKLSAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwKLSAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikpPgotICAgICAgYSA9IEludm9rZUFyZ3Vt
ZW50PDA+KCIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSIsICIwIik7
Ci0gIEVYUEVDVF9FUSgiMTIzNDU2Nzg5MCIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZDb25jYXQx
MCkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIGZ1bmN0aW9u
IHRoYXQgdGFrZXMgYSBwb2ludGVyIGFyZ3VtZW50LgotVEVTVChJbnZva2VBcmd1bWVudFRlc3Qs
IEJ5UG9pbnRlckZ1bmN0aW9uKSB7Ci0gIEFjdGlvbjxjb25zdCBjaGFyKihjb25zdCBjaGFyKigq
KShjb25zdCBjaGFyKiBpbnB1dCwgc2hvcnQgbikpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52
b2tlQXJndW1lbnQ8MD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KCJIaSIpLCBTaG9ydCgxKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiaSIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZCaW5hcnkpKSk7Ci19
Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSBmdW5jdGlvbiB0aGF0IHRh
a2VzIGEgY29uc3QgY2hhcioKLS8vIGJ5IHBhc3NpbmcgaXQgYSBDLXN0cmluZyBsaXRlcmFsLgot
VEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEZ1bmN0aW9uV2l0aENTdHJpbmdMaXRlcmFsKSB7Ci0g
IEFjdGlvbjxjb25zdCBjaGFyKihjb25zdCBjaGFyKigqKShjb25zdCBjaGFyKiBpbnB1dCwgc2hv
cnQgbikpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlQXJndW1lbnQ8MD4oIkhpIiwgU2hv
cnQoMSkpOwotICBFWFBFQ1RfU1RSRVEoImkiLCBhLlBlcmZvcm0obWFrZV90dXBsZSgmQmluYXJ5
KSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgZnVuY3Rpb24g
dGhhdCB0YWtlcyBhIGNvbnN0IHJlZmVyZW5jZS4KLVRFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBC
eUNvbnN0UmVmZXJlbmNlRnVuY3Rpb24pIHsKLSAgQWN0aW9uPGJvb2woYm9vbCAoKmZ1bmN0aW9u
KShjb25zdCBzdGQ6OnN0cmluZyYgcykpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlQXJn
dW1lbnQ8MD4oc3RkOjpzdHJpbmcoIkhpIikpOwotICAvLyBXaGVuIGFjdGlvbiAnYScgaXMgY29u
c3RydWN0ZWQsIGl0IG1ha2VzIGEgY29weSBvZiB0aGUgdGVtcG9yYXJ5Ci0gIC8vIHN0cmluZyBv
YmplY3QgcGFzc2VkIHRvIGl0LCBzbyBpdCdzIE9LIHRvIHVzZSAnYScgbGF0ZXIsIHdoZW4gdGhl
Ci0gIC8vIHRlbXBvcmFyeSBvYmplY3QgaGFzIGFscmVhZHkgZGllZC4KLSAgRVhQRUNUX1RSVUUo
YS5QZXJmb3JtKG1ha2VfdHVwbGUoJkJ5Q29uc3RSZWYpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5n
IEludm9rZUFyZ3VtZW50IHdpdGggQnlSZWYoKSBhbmQgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEK
LS8vIGNvbnN0IHJlZmVyZW5jZS4KLVRFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBCeUV4cGxpY2l0
Q29uc3RSZWZlcmVuY2VGdW5jdGlvbikgewotICBBY3Rpb248Ym9vbChib29sKCopKGNvbnN0IGRv
dWJsZSYgeCkpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlQXJndW1lbnQ8MD4oQnlSZWYo
Z19kb3VibGUpKTsKLSAgLy8gVGhlIGFib3ZlIGxpbmUgY2FsbHMgQnlSZWYoKSBvbiBhIGNvbnN0
IHZhbHVlLgotICBFWFBFQ1RfVFJVRShhLlBlcmZvcm0obWFrZV90dXBsZSgmUmVmZXJlbmNlc0ds
b2JhbERvdWJsZSkpKTsKLQotICBkb3VibGUgeCA9IDA7Ci0gIGEgPSBJbnZva2VBcmd1bWVudDww
PihCeVJlZih4KSk7ICAvLyBUaGlzIGNhbGxzIEJ5UmVmKCkgb24gYSBub24tY29uc3QuCi0gIEVY
UEVDVF9GQUxTRShhLlBlcmZvcm0obWFrZV90dXBsZSgmUmVmZXJlbmNlc0dsb2JhbERvdWJsZSkp
KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3MgYW5kIHdpdGggYW4gYWN0aW9uIHRoYXQg
dGFrZXMgMSBhcmd1bWVudC4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBPbmVBcmcpIHsKLSAgQWN0aW9u
PGJvb2woZG91YmxlIHgsIGludCBuKT4gYSA9IFdpdGhBcmdzPDE+KEludm9rZShVbmFyeSkpOyAg
Ly8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGEuUGVyZm9ybShtYWtlX3R1cGxlKDEuNSwgLTEpKSk7
Ci0gIEVYUEVDVF9GQUxTRShhLlBlcmZvcm0obWFrZV90dXBsZSgxLjUsIDEpKSk7Ci19Ci0KLS8v
IFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQgdGFrZXMgMiBhcmd1bWVu
dHMuCi1URVNUKFdpdGhBcmdzVGVzdCwgVHdvQXJncykgewotICBBY3Rpb248Y29uc3QgY2hhcioo
Y29uc3QgY2hhciogcywgZG91YmxlIHgsIHNob3J0IG4pPiBhID0KLSAgICAgIFdpdGhBcmdzPDAs
IDI+KEludm9rZShCaW5hcnkpKTsKLSAgY29uc3QgY2hhciBzW10gPSAiSGVsbG8iOwotICBFWFBF
Q1RfRVEocyArIDIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIocyksIDAuNSwgU2hvcnQo
MikpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQg
dGFrZXMgMyBhcmd1bWVudHMuCi1URVNUKFdpdGhBcmdzVGVzdCwgVGhyZWVBcmdzKSB7Ci0gIEFj
dGlvbjxpbnQoaW50LCBkb3VibGUsIGNoYXIsIHNob3J0KT4gYSA9ICAvLyBOT0xJTlQKLSAgICAg
IFdpdGhBcmdzPDAsIDIsIDM+KEludm9rZShUZXJuYXJ5KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGEu
UGVyZm9ybShtYWtlX3R1cGxlKDEwMCwgNi41LCBDaGFyKDIwKSwgU2hvcnQoMykpKSk7Ci19Ci0K
LS8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQgdGFrZXMgNCBhcmd1
bWVudHMuCi1URVNUKFdpdGhBcmdzVGVzdCwgRm91ckFyZ3MpIHsKLSAgQWN0aW9uPHN0ZDo6c3Ry
aW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgZG91YmxlLCBjb25zdCBjaGFyKiwKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBXaXRoQXJnczw0LCAzLCAx
LCAwPihJbnZva2UoQ29uY2F0NCkpOwotICBFWFBFQ1RfRVEoIjQzMTAiLCBhLlBlcmZvcm0obWFr
ZV90dXBsZShDaGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgMi41LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCIzIiksIENoYXJQdHIoIjQiKSkpKTsK
LX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA1
IGFyZ3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBGaXZlQXJncykgewotICBBY3Rpb248c3Rk
OjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKik+Ci0gICAgICBhID0gV2l0aEFy
Z3M8NCwgMywgMiwgMSwgMD4oSW52b2tlKENvbmNhdDUpKTsKLSAgRVhQRUNUX0VRKCI0MzIxMCIs
Ci0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIwIiksIENoYXJQdHIo
IjEiKSwgQ2hhclB0cigiMiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hh
clB0cigiMyIpLCBDaGFyUHRyKCI0IikpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFdpdGhBcmdz
IHdpdGggYW4gYWN0aW9uIHRoYXQgdGFrZXMgNiBhcmd1bWVudHMuCi1URVNUKFdpdGhBcmdzVGVz
dCwgU2l4QXJncykgewotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKik+IGEgPQotICAgICAgV2l0aEFyZ3M8MCwgMSwgMiwgMiwgMSwgMD4o
SW52b2tlKENvbmNhdDYpKTsKLSAgRVhQRUNUX0VRKCIwMTIyMTAiLAotICAgICAgICAgICAgYS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMCIpLCBDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIi
KSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0
YWtlcyA3IGFyZ3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBTZXZlbkFyZ3MpIHsKLSAgQWN0
aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqKT4gYSA9Ci0gICAgICBXaXRoQXJnczwwLCAxLCAyLCAzLCAyLCAxLCAwPihJbnZv
a2UoQ29uY2F0NykpOwotICBFWFBFQ1RfRVEoIjAxMjMyMTAiLAotICAgICAgICAgICAgYS5QZXJm
b3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMCIpLCBDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjMiKSkpKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA4IGFyZ3Vt
ZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBFaWdodEFyZ3MpIHsKLSAgQWN0aW9uPHN0ZDo6c3Ry
aW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4g
YSA9Ci0gICAgICBXaXRoQXJnczwwLCAxLCAyLCAzLCAwLCAxLCAyLCAzPihJbnZva2UoQ29uY2F0
OCkpOwotICBFWFBFQ1RfRVEoIjAxMjMwMTIzIiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtl
X3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCIzIikpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQgdGFrZXMgOSBhcmd1bWVudHMuCi1U
RVNUKFdpdGhBcmdzVGVzdCwgTmluZUFyZ3MpIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4gYSA9Ci0gICAg
ICBXaXRoQXJnczwwLCAxLCAyLCAzLCAxLCAyLCAzLCAyLCAzPihJbnZva2UoQ29uY2F0OSkpOwot
ICBFWFBFQ1RfRVEoIjAxMjMxMjMyMyIsCi0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBs
ZShDaGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiMyIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDEwIGFyZ3VtZW50cy4KLVRFU1Qo
V2l0aEFyZ3NUZXN0LCBUZW5BcmdzKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFy
KiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik+IGEgPQotICAgICAgV2l0
aEFyZ3M8MCwgMSwgMiwgMywgMiwgMSwgMCwgMSwgMiwgMz4oSW52b2tlKENvbmNhdDEwKSk7Ci0g
IEVYUEVDVF9FUSgiMDEyMzIxMDEyMyIsCi0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBs
ZShDaGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiMyIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IGlzIG5vdCBJbnZva2UoKS4KLWNsYXNzIFN1
YnN0cmFjdEFjdGlvbiA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8aW50KGludCwgaW50KT4geyAg
Ly8gTk9MSU5UCi0gcHVibGljOgotICB2aXJ0dWFsIGludCBQZXJmb3JtKGNvbnN0IHR1cGxlPGlu
dCwgaW50PiYgYXJncykgewotICAgIHJldHVybiBnZXQ8MD4oYXJncykgLSBnZXQ8MT4oYXJncyk7
Ci0gIH0KLX07Ci0KLVRFU1QoV2l0aEFyZ3NUZXN0LCBOb25JbnZva2VBY3Rpb24pIHsKLSAgQWN0
aW9uPGludChjb25zdCBzdHJpbmcmLCBpbnQsIGludCk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBX
aXRoQXJnczwyLCAxPihNYWtlQWN0aW9uKG5ldyBTdWJzdHJhY3RBY3Rpb24pKTsKLSAgc3RyaW5n
IHMoImhlbGxvIik7Ci0gIEVYUEVDVF9FUSg4LCBhLlBlcmZvcm0odHVwbGU8Y29uc3Qgc3RyaW5n
JiwgaW50LCBpbnQ+KHMsIDIsIDEwKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyB0
byBwYXNzIGFsbCBvcmlnaW5hbCBhcmd1bWVudHMgaW4gdGhlIG9yaWdpbmFsIG9yZGVyLgotVEVT
VChXaXRoQXJnc1Rlc3QsIElkZW50aXR5KSB7Ci0gIEFjdGlvbjxpbnQoaW50IHgsIGNoYXIgeSwg
c2hvcnQgeik+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBXaXRoQXJnczwwLCAxLCAyPihJbnZva2Uo
VGVybmFyeSkpOwotICBFWFBFQ1RfRVEoMTIzLCBhLlBlcmZvcm0obWFrZV90dXBsZSgxMDAsIENo
YXIoMjApLCBTaG9ydCgzKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBy
ZXBlYXRlZCBhcmd1bWVudHMuCi1URVNUKFdpdGhBcmdzVGVzdCwgUmVwZWF0ZWRBcmd1bWVudHMp
IHsKLSAgQWN0aW9uPGludChib29sLCBpbnQgbSwgaW50IG4pPiBhID0gIC8vIE5PTElOVAotICAg
ICAgV2l0aEFyZ3M8MSwgMSwgMSwgMT4oSW52b2tlKFN1bU9mNCkpOwotICBFWFBFQ1RfRVEoNCwg
YS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UsIDEsIDEwKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBXaXRoQXJncyB3aXRoIHJldmVyc2VkIGFyZ3VtZW50IG9yZGVyLgotVEVTVChXaXRoQXJnc1Rl
c3QsIFJldmVyc2VkQXJndW1lbnRPcmRlcikgewotICBBY3Rpb248Y29uc3QgY2hhciooc2hvcnQg
biwgY29uc3QgY2hhciogaW5wdXQpPiBhID0gIC8vIE5PTElOVAotICAgICAgV2l0aEFyZ3M8MSwg
MD4oSW52b2tlKEJpbmFyeSkpOwotICBjb25zdCBjaGFyIHNbXSA9ICJIZWxsbyI7Ci0gIEVYUEVD
VF9FUShzICsgMiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoU2hvcnQoMiksIENoYXJQdHIocykpKSk7
Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFdpdGhBcmdzIHdpdGggY29tcGF0aWJsZSwgYnV0IG5vdCBp
ZGVudGljYWwsIGFyZ3VtZW50IHR5cGVzLgotVEVTVChXaXRoQXJnc1Rlc3QsIEFyZ3NPZkNvbXBh
dGlibGVUeXBlcykgewotICBBY3Rpb248bG9uZyhzaG9ydCB4LCBjaGFyIHksIGRvdWJsZSB6LCBj
aGFyIGMpPiBhID0gIC8vIE5PTElOVAotICAgICAgV2l0aEFyZ3M8MCwgMSwgMz4oSW52b2tlKFRl
cm5hcnkpKTsKLSAgRVhQRUNUX0VRKDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoU2hvcnQoMTAw
KSwgQ2hhcigyMCksIDUuNiwgQ2hhcigzKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFy
Z3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHZvaWQuCi1URVNUKFdpdGhBcmdzVGVzdCwg
Vm9pZEFjdGlvbikgewotICBBY3Rpb248dm9pZChkb3VibGUgeCwgY2hhciBjLCBpbnQgbik+IGEg
PSBXaXRoQXJnczwyLCAxPihJbnZva2UoVm9pZEJpbmFyeSkpOwotICBnX2RvbmUgPSBmYWxzZTsK
LSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMS41LCAnYScsIDMpKTsKLSAgRVhQRUNUX1RSVUUoZ19k
b25lKTsKLX0KLQotLy8gVGVzdHMgRG9BbGwoYTEsIGEyKS4KLVRFU1QoRG9BbGxUZXN0LCBUd29B
Y3Rpb25zKSB7Ci0gIGludCBuID0gMDsKLSAgQWN0aW9uPGludChpbnQqKT4gYSA9IERvQWxsKFNl
dEFyZ1BvaW50ZWU8MD4oMSksICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJldHVybigyKSk7Ci0gIEVYUEVDVF9FUSgyLCBhLlBlcmZvcm0obWFrZV90dXBsZSgmbikp
KTsKLSAgRVhQRUNUX0VRKDEsIG4pOwotfQotCi0vLyBUZXN0cyBEb0FsbChhMSwgYTIsIGEzKS4K
LVRFU1QoRG9BbGxUZXN0LCBUaHJlZUFjdGlvbnMpIHsKLSAgaW50IG0gPSAwLCBuID0gMDsKLSAg
QWN0aW9uPGludChpbnQqLCBpbnQqKT4gYSA9IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksICAv
LyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldEFyZ1BvaW50
ZWU8MT4oMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4oMykp
OwotICBFWFBFQ1RfRVEoMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJm0sICZuKSkpOwotICBFWFBF
Q1RfRVEoMSwgbSk7Ci0gIEVYUEVDVF9FUSgyLCBuKTsKLX0KLQotLy8gVGVzdHMgRG9BbGwoYTEs
IGEyLCBhMywgYTQpLgotVEVTVChEb0FsbFRlc3QsIEZvdXJBY3Rpb25zKSB7Ci0gIGludCBtID0g
MCwgbiA9IDA7Ci0gIGNoYXIgY2ggPSAnXDAnOwotICBBY3Rpb248aW50KGludCosIGludCosIGNo
YXIqKT4gYSA9ICAvLyBOT0xJTlQKLSAgICAgIERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0g
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDE+KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRl
ZTwyPignYScpLAotICAgICAgICAgICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VRKDMsIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCZtLCAmbiwgJmNoKSkpOwotICBFWFBFQ1RfRVEoMSwgbSk7Ci0gIEVY
UEVDVF9FUSgyLCBuKTsKLSAgRVhQRUNUX0VRKCdhJywgY2gpOwotfQotCi0vLyBUZXN0cyBEb0Fs
bChhMSwgYTIsIGEzLCBhNCwgYTUpLgotVEVTVChEb0FsbFRlc3QsIEZpdmVBY3Rpb25zKSB7Ci0g
IGludCBtID0gMCwgbiA9IDA7Ci0gIGNoYXIgYSA9ICdcMCcsIGIgPSAnXDAnOwotICBBY3Rpb248
aW50KGludCosIGludCosIGNoYXIqLCBjaGFyKik+IGFjdGlvbiA9ICAvLyBOT0xJTlQKLSAgICAg
IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDE+
KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwyPignYScpLAotICAgICAgICAgICAgU2V0
QXJnUG9pbnRlZTwzPignYicpLAotICAgICAgICAgICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VR
KDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVwbGUoJm0sICZuLCAmYSwgJmIpKSk7Ci0gIEVYUEVD
VF9FUSgxLCBtKTsKLSAgRVhQRUNUX0VRKDIsIG4pOwotICBFWFBFQ1RfRVEoJ2EnLCBhKTsKLSAg
RVhQRUNUX0VRKCdiJywgYik7Ci19Ci0KLS8vIFRlc3RzIERvQWxsKGExLCBhMiwgLi4uLCBhNiku
Ci1URVNUKERvQWxsVGVzdCwgU2l4QWN0aW9ucykgewotICBpbnQgbSA9IDAsIG4gPSAwOwotICBj
aGFyIGEgPSAnXDAnLCBiID0gJ1wwJywgYyA9ICdcMCc7Ci0gIEFjdGlvbjxpbnQoaW50KiwgaW50
KiwgY2hhciosIGNoYXIqLCBjaGFyKik+IGFjdGlvbiA9ICAvLyBOT0xJTlQKLSAgICAgIERvQWxs
KFNldEFyZ1BvaW50ZWU8MD4oMSksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDE+KDIpLAot
ICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwyPignYScpLAotICAgICAgICAgICAgU2V0QXJnUG9p
bnRlZTwzPignYicpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw0PignYycpLAotICAgICAg
ICAgICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VRKDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVw
bGUoJm0sICZuLCAmYSwgJmIsICZjKSkpOwotICBFWFBFQ1RfRVEoMSwgbSk7Ci0gIEVYUEVDVF9F
USgyLCBuKTsKLSAgRVhQRUNUX0VRKCdhJywgYSk7Ci0gIEVYUEVDVF9FUSgnYicsIGIpOwotICBF
WFBFQ1RfRVEoJ2MnLCBjKTsKLX0KLQotLy8gVGVzdHMgRG9BbGwoYTEsIGEyLCAuLi4sIGE3KS4K
LVRFU1QoRG9BbGxUZXN0LCBTZXZlbkFjdGlvbnMpIHsKLSAgaW50IG0gPSAwLCBuID0gMDsKLSAg
Y2hhciBhID0gJ1wwJywgYiA9ICdcMCcsIGMgPSAnXDAnLCBkID0gJ1wwJzsKLSAgQWN0aW9uPGlu
dChpbnQqLCBpbnQqLCBjaGFyKiwgY2hhciosIGNoYXIqLCBjaGFyKik+IGFjdGlvbiA9ICAvLyBO
T0xJTlQKLSAgICAgIERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0gICAgICAgICAgICBTZXRB
cmdQb2ludGVlPDE+KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwyPignYScpLAotICAg
ICAgICAgICAgU2V0QXJnUG9pbnRlZTwzPignYicpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRl
ZTw0PignYycpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw1PignZCcpLAotICAgICAgICAg
ICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VRKDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVwbGUo
Jm0sICZuLCAmYSwgJmIsICZjLCAmZCkpKTsKLSAgRVhQRUNUX0VRKDEsIG0pOwotICBFWFBFQ1Rf
RVEoMiwgbik7Ci0gIEVYUEVDVF9FUSgnYScsIGEpOwotICBFWFBFQ1RfRVEoJ2InLCBiKTsKLSAg
RVhQRUNUX0VRKCdjJywgYyk7Ci0gIEVYUEVDVF9FUSgnZCcsIGQpOwotfQotCi0vLyBUZXN0cyBE
b0FsbChhMSwgYTIsIC4uLiwgYTgpLgotVEVTVChEb0FsbFRlc3QsIEVpZ2h0QWN0aW9ucykgewot
ICBpbnQgbSA9IDAsIG4gPSAwOwotICBjaGFyIGEgPSAnXDAnLCBiID0gJ1wwJywgYyA9ICdcMCcs
IGQgPSAnXDAnLCBlID0gJ1wwJzsKLSAgQWN0aW9uPGludChpbnQqLCBpbnQqLCBjaGFyKiwgY2hh
ciosIGNoYXIqLCBjaGFyKiwgIC8vIE5PTElOVAotICAgICAgICAgICAgIGNoYXIqKT4gYWN0aW9u
ID0KLSAgICAgIERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0gICAgICAgICAgICBTZXRBcmdQ
b2ludGVlPDE+KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwyPignYScpLAotICAgICAg
ICAgICAgU2V0QXJnUG9pbnRlZTwzPignYicpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw0
PignYycpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw1PignZCcpLAotICAgICAgICAgICAg
U2V0QXJnUG9pbnRlZTw2PignZScpLAotICAgICAgICAgICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNU
X0VRKDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVwbGUoJm0sICZuLCAmYSwgJmIsICZjLCAmZCwg
JmUpKSk7Ci0gIEVYUEVDVF9FUSgxLCBtKTsKLSAgRVhQRUNUX0VRKDIsIG4pOwotICBFWFBFQ1Rf
RVEoJ2EnLCBhKTsKLSAgRVhQRUNUX0VRKCdiJywgYik7Ci0gIEVYUEVDVF9FUSgnYycsIGMpOwot
ICBFWFBFQ1RfRVEoJ2QnLCBkKTsKLSAgRVhQRUNUX0VRKCdlJywgZSk7Ci19Ci0KLS8vIFRlc3Rz
IERvQWxsKGExLCBhMiwgLi4uLCBhOSkuCi1URVNUKERvQWxsVGVzdCwgTmluZUFjdGlvbnMpIHsK
LSAgaW50IG0gPSAwLCBuID0gMDsKLSAgY2hhciBhID0gJ1wwJywgYiA9ICdcMCcsIGMgPSAnXDAn
LCBkID0gJ1wwJywgZSA9ICdcMCcsIGYgPSAnXDAnOwotICBBY3Rpb248aW50KGludCosIGludCos
IGNoYXIqLCBjaGFyKiwgY2hhciosIGNoYXIqLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgY2hh
ciosIGNoYXIqKT4gYWN0aW9uID0KLSAgICAgIERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0g
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDE+KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRl
ZTwyPignYScpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwzPignYicpLAotICAgICAgICAg
ICAgU2V0QXJnUG9pbnRlZTw0PignYycpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw1Pign
ZCcpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw2PignZScpLAotICAgICAgICAgICAgU2V0
QXJnUG9pbnRlZTw3PignZicpLAotICAgICAgICAgICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VR
KDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVwbGUoJm0sICZuLCAmYSwgJmIsICZjLCAmZCwgJmUs
ICZmKSkpOwotICBFWFBFQ1RfRVEoMSwgbSk7Ci0gIEVYUEVDVF9FUSgyLCBuKTsKLSAgRVhQRUNU
X0VRKCdhJywgYSk7Ci0gIEVYUEVDVF9FUSgnYicsIGIpOwotICBFWFBFQ1RfRVEoJ2MnLCBjKTsK
LSAgRVhQRUNUX0VRKCdkJywgZCk7Ci0gIEVYUEVDVF9FUSgnZScsIGUpOwotICBFWFBFQ1RfRVEo
J2YnLCBmKTsKLX0KLQotLy8gVGVzdHMgRG9BbGwoYTEsIGEyLCAuLi4sIGExMCkuCi1URVNUKERv
QWxsVGVzdCwgVGVuQWN0aW9ucykgewotICBpbnQgbSA9IDAsIG4gPSAwOwotICBjaGFyIGEgPSAn
XDAnLCBiID0gJ1wwJywgYyA9ICdcMCcsIGQgPSAnXDAnOwotICBjaGFyIGUgPSAnXDAnLCBmID0g
J1wwJywgZyA9ICdcMCc7Ci0gIEFjdGlvbjxpbnQoaW50KiwgaW50KiwgY2hhciosIGNoYXIqLCBj
aGFyKiwgY2hhciosICAvLyBOT0xJTlQKLSAgICAgICAgICAgICBjaGFyKiwgY2hhciosIGNoYXIq
KT4gYWN0aW9uID0KLSAgICAgIERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oMSksCi0gICAgICAgICAg
ICBTZXRBcmdQb2ludGVlPDE+KDIpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwyPignYScp
LAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTwzPignYicpLAotICAgICAgICAgICAgU2V0QXJn
UG9pbnRlZTw0PignYycpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw1PignZCcpLAotICAg
ICAgICAgICAgU2V0QXJnUG9pbnRlZTw2PignZScpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRl
ZTw3PignZicpLAotICAgICAgICAgICAgU2V0QXJnUG9pbnRlZTw4PignZycpLAotICAgICAgICAg
ICAgUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0VRKDMsIGFjdGlvbi5QZXJmb3JtKG1ha2VfdHVwbGUo
Jm0sICZuLCAmYSwgJmIsICZjLCAmZCwgJmUsICZmLCAmZykpKTsKLSAgRVhQRUNUX0VRKDEsIG0p
OwotICBFWFBFQ1RfRVEoMiwgbik7Ci0gIEVYUEVDVF9FUSgnYScsIGEpOwotICBFWFBFQ1RfRVEo
J2InLCBiKTsKLSAgRVhQRUNUX0VRKCdjJywgYyk7Ci0gIEVYUEVDVF9FUSgnZCcsIGQpOwotICBF
WFBFQ1RfRVEoJ2UnLCBlKTsKLSAgRVhQRUNUX0VRKCdmJywgZik7Ci0gIEVYUEVDVF9FUSgnZycs
IGcpOwotfQotCi0vLyBUaGUgQUNUSU9OKigpIG1hY3JvcyB0cmlnZ2VyIHdhcm5pbmcgQzQxMDAg
KHVucmVmZXJlbmNlZCBmb3JtYWwKLS8vIHBhcmFtZXRlcikgaW4gTVNWQyB3aXRoIC1XNC4gIFVu
Zm9ydHVuYXRlbHkgdGhleSBjYW5ub3QgYmUgZml4ZWQgaW4KLS8vIHRoZSBtYWNybyBkZWZpbml0
aW9uLCBhcyB0aGUgd2FybmluZ3MgYXJlIGdlbmVyYXRlZCB3aGVuIHRoZSBtYWNybwotLy8gaXMg
ZXhwYW5kZWQgYW5kIG1hY3JvIGV4cGFuc2lvbiBjYW5ub3QgY29udGFpbiAjcHJhZ21hLiAgVGhl
cmVmb3JlCi0vLyB3ZSBzdXBwcmVzcyB0aGVtIGhlcmUuCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJh
Z21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQotI2VuZGlm
Ci0KLS8vIFRlc3RzIHRoZSBBQ1RJT04qKCkgbWFjcm8gZmFtaWx5LgotCi0vLyBUZXN0cyB0aGF0
IEFDVElPTigpIGNhbiBkZWZpbmUgYW4gYWN0aW9uIHRoYXQgZG9lc24ndCByZWZlcmVuY2UgdGhl
Ci0vLyBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLUFDVElPTihSZXR1cm41KSB7IHJldHVybiA1
OyB9Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBXb3Jrc1doZW5Ob3RSZWZlcmVuY2luZ0FyZ3Vt
ZW50cykgewotICBBY3Rpb248ZG91YmxlKCk+IGExID0gUmV0dXJuNSgpOwotICBFWFBFQ1RfRE9V
QkxFX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci0KLSAgQWN0aW9uPGludChkb3Vi
bGUsIGJvb2wpPiBhMiA9IFJldHVybjUoKTsKLSAgRVhQRUNUX0VRKDUsIGEyLlBlcmZvcm0obWFr
ZV90dXBsZSgxLCB0cnVlKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTigpIGNhbiBkZWZp
bmUgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyB2b2lkLgotQUNUSU9OKEluY3JlbWVudEFyZzEpIHsg
KCphcmcxKSsrOyB9Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBXb3Jrc1doZW5SZXR1cm5pbmdW
b2lkKSB7Ci0gIEFjdGlvbjx2b2lkKGludCwgaW50Kik+IGExID0gSW5jcmVtZW50QXJnMSgpOwot
ICBpbnQgbiA9IDA7Ci0gIGExLlBlcmZvcm0obWFrZV90dXBsZSg1LCAmbikpOwotICBFWFBFQ1Rf
RVEoMSwgbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGJvZHkgb2YgQUNUSU9OKCkgY2FuIHJl
ZmVyZW5jZSB0aGUgdHlwZSBvZiB0aGUKLS8vIGFyZ3VtZW50LgotQUNUSU9OKEluY3JlbWVudEFy
ZzIpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCosIGFyZzJfdHlwZT4oKTsKLSAgYXJnMl90
eXBlIHRlbXAgPSBhcmcyOwotICAoKnRlbXApKys7Ci19Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0
LCBDYW5SZWZlcmVuY2VBcmd1bWVudFR5cGUpIHsKLSAgQWN0aW9uPHZvaWQoaW50LCBib29sLCBp
bnQqKT4gYTEgPSBJbmNyZW1lbnRBcmcyKCk7Ci0gIGludCBuID0gMDsKLSAgYTEuUGVyZm9ybSht
YWtlX3R1cGxlKDUsIGZhbHNlLCAmbikpOwotICBFWFBFQ1RfRVEoMSwgbik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgdGhlIGJvZHkgb2YgQUNUSU9OKCkgY2FuIHJlZmVyZW5jZSB0aGUgYXJndW1lbnQg
dHVwbGUKLS8vIHZpYSBhcmdzX3R5cGUgYW5kIGFyZ3MuCi1BQ1RJT04oU3VtMikgewotICBTdGF0
aWNBc3NlcnRUeXBlRXE8dHVwbGU8aW50LCBjaGFyLCBpbnQqPiwgYXJnc190eXBlPigpOwotICBh
cmdzX3R5cGUgYXJnc19jb3B5ID0gYXJnczsKLSAgcmV0dXJuIGdldDwwPihhcmdzX2NvcHkpICsg
Z2V0PDE+KGFyZ3NfY29weSk7Ci19Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBDYW5SZWZlcmVu
Y2VBcmd1bWVudFR1cGxlKSB7Ci0gIEFjdGlvbjxpbnQoaW50LCBjaGFyLCBpbnQqKT4gYTEgPSBT
dW0yKCk7Ci0gIGludCBkdW1teSA9IDA7Ci0gIEVYUEVDVF9FUSgxMSwgYTEuUGVyZm9ybShtYWtl
X3R1cGxlKDUsIENoYXIoNiksICZkdW1teSkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgYm9k
eSBvZiBBQ1RJT04oKSBjYW4gcmVmZXJlbmNlIHRoZSBtb2NrIGZ1bmN0aW9uCi0vLyB0eXBlLgot
aW50IER1bW15KGJvb2wgZmxhZykgeyByZXR1cm4gZmxhZz8gMSA6IDA7IH0KLQotQUNUSU9OKElu
dm9rZUR1bW15KSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQoYm9vbCksIGZ1bmN0aW9uX3R5
cGU+KCk7Ci0gIGZ1bmN0aW9uX3R5cGUqIGZwID0gJkR1bW15OwotICByZXR1cm4gKCpmcCkodHJ1
ZSk7Ci19Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBDYW5SZWZlcmVuY2VNb2NrRnVuY3Rpb25U
eXBlKSB7Ci0gIEFjdGlvbjxpbnQoYm9vbCk+IGExID0gSW52b2tlRHVtbXkoKTsKLSAgRVhQRUNU
X0VRKDEsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlKSkpOwotICBFWFBFQ1RfRVEoMSwgYTEu
UGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBib2R5
IG9mIEFDVElPTigpIGNhbiByZWZlcmVuY2UgdGhlIG1vY2sgZnVuY3Rpb24ncwotLy8gcmV0dXJu
IHR5cGUuCi1BQ1RJT04oSW52b2tlRHVtbXkyKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQs
IHJldHVybl90eXBlPigpOwotICByZXR1cm5fdHlwZSByZXN1bHQgPSBEdW1teSh0cnVlKTsKLSAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIENhblJlZmVyZW5jZU1v
Y2tGdW5jdGlvblJldHVyblR5cGUpIHsKLSAgQWN0aW9uPGludChib29sKT4gYTEgPSBJbnZva2VE
dW1teTIoKTsKLSAgRVhQRUNUX0VRKDEsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlKSkpOwot
ICBFWFBFQ1RfRVEoMSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlKSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEFDVElPTigpIHdvcmtzIGZvciBhcmd1bWVudHMgcGFzc2VkIGJ5IGNvbnN0IHJl
ZmVyZW5jZS4KLUFDVElPTihSZXR1cm5BZGRyT2ZDb25zdEJvb2xSZWZlcmVuY2VBcmcpIHsKLSAg
U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJvb2wmLCBhcmcxX3R5cGU+KCk7Ci0gIHJldHVybiAm
YXJnMTsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzRm9yQ29uc3RSZWZlcmVuY2VB
cmcpIHsKLSAgQWN0aW9uPGNvbnN0IGJvb2wqKGludCwgY29uc3QgYm9vbCYpPiBhID0gUmV0dXJu
QWRkck9mQ29uc3RCb29sUmVmZXJlbmNlQXJnKCk7Ci0gIGNvbnN0IGJvb2wgYiA9IGZhbHNlOwot
ICBFWFBFQ1RfRVEoJmIsIGEuUGVyZm9ybSh0dXBsZTxpbnQsIGNvbnN0IGJvb2wmPigwLCBiKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTigpIHdvcmtzIGZvciBhcmd1bWVudHMgcGFzc2Vk
IGJ5IG5vbi1jb25zdCByZWZlcmVuY2UuCi1BQ1RJT04oUmV0dXJuQWRkck9mSW50UmVmZXJlbmNl
QXJnKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQmLCBhcmcwX3R5cGU+KCk7Ci0gIHJldHVy
biAmYXJnMDsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzRm9yTm9uQ29uc3RSZWZl
cmVuY2VBcmcpIHsKLSAgQWN0aW9uPGludCooaW50JiwgYm9vbCwgaW50KT4gYSA9IFJldHVybkFk
ZHJPZkludFJlZmVyZW5jZUFyZygpOwotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9FUSgmbiwgYS5Q
ZXJmb3JtKHR1cGxlPGludCYsIGJvb2wsIGludD4obiwgdHJ1ZSwgMSkpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBQ1RJT04oKSBjYW4gYmUgdXNlZCBpbiBhIG5hbWVzcGFjZS4KLW5hbWVzcGFjZSBh
Y3Rpb25fdGVzdCB7Ci1BQ1RJT04oU3VtKSB7IHJldHVybiBhcmcwICsgYXJnMTsgfQotfSAgLy8g
bmFtZXNwYWNlIGFjdGlvbl90ZXN0Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBXb3Jrc0luTmFt
ZXNwYWNlKSB7Ci0gIEFjdGlvbjxpbnQoaW50LCBpbnQpPiBhMSA9IGFjdGlvbl90ZXN0OjpTdW0o
KTsKLSAgRVhQRUNUX0VRKDMsIGExLlBlcmZvcm0obWFrZV90dXBsZSgxLCAyKSkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHRoZSBzYW1lIEFDVElPTiBkZWZpbml0aW9uIHdvcmtzIGZvciBtb2NrIGZ1
bmN0aW9ucyB3aXRoCi0vLyBkaWZmZXJlbnQgYXJndW1lbnQgbnVtYmVycy4KLUFDVElPTihQbHVz
VHdvKSB7IHJldHVybiBhcmcwICsgMjsgfQotCi1URVNUKEFjdGlvbk1hY3JvVGVzdCwgV29ya3NG
b3JEaWZmZXJlbnRBcmd1bWVudE51bWJlcnMpIHsKLSAgQWN0aW9uPGludChpbnQpPiBhMSA9IFBs
dXNUd28oKTsKLSAgRVhQRUNUX0VRKDQsIGExLlBlcmZvcm0obWFrZV90dXBsZSgyKSkpOwotCi0g
IEFjdGlvbjxkb3VibGUoZmxvYXQsIHZvaWQqKT4gYTIgPSBQbHVzVHdvKCk7Ci0gIGludCBkdW1t
eTsKLSAgRVhQRUNUX0RPVUJMRV9FUSg2LCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUoNC4wZiwgJmR1
bW15KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTl9QIGNhbiBkZWZpbmUgYSBwYXJhbWV0
ZXJpemVkIGFjdGlvbi4KLUFDVElPTl9QKFBsdXMsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci0K
LVRFU1QoQWN0aW9uUE1hY3JvVGVzdCwgRGVmaW5lc1BhcmFtZXRlcml6ZWRBY3Rpb24pIHsKLSAg
QWN0aW9uPGludChpbnQgbSwgYm9vbCB0KT4gYTEgPSBQbHVzKDkpOwotICBFWFBFQ1RfRVEoMTAs
IGExLlBlcmZvcm0obWFrZV90dXBsZSgxLCB0cnVlKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBib2R5IG9mIEFDVElPTl9QIGNhbiByZWZlcmVuY2UgdGhlIGFyZ3VtZW50IHR5cGVzCi0vLyBh
bmQgdGhlIHBhcmFtZXRlciB0eXBlLgotQUNUSU9OX1AoVHlwZWRQbHVzLCBuKSB7Ci0gIGFyZzBf
dHlwZSB0MSA9IGFyZzA7Ci0gIG5fdHlwZSB0MiA9IG47Ci0gIHJldHVybiB0MSArIHQyOwotfQot
Ci1URVNUKEFjdGlvblBNYWNyb1Rlc3QsIENhblJlZmVyZW5jZUFyZ3VtZW50QW5kUGFyYW1ldGVy
VHlwZXMpIHsKLSAgQWN0aW9uPGludChjaGFyIG0sIGJvb2wgdCk+IGExID0gVHlwZWRQbHVzKDkp
OwotICBFWFBFQ1RfRVEoMTAsIGExLlBlcmZvcm0obWFrZV90dXBsZShDaGFyKDEpLCB0cnVlKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gY2FuIGJlIHVzZWQg
aW4gYW55IG1vY2sgZnVuY3Rpb24KLS8vIHdob3NlIHR5cGUgaXMgY29tcGF0aWJsZS4KLVRFU1Qo
QWN0aW9uUE1hY3JvVGVzdCwgV29ya3NJbkNvbXBhdGlibGVNb2NrRnVuY3Rpb24pIHsKLSAgQWN0
aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKT4gYTEgPSBQbHVzKCJ0YWlsIik7
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlID0gInJlIjsKLSAgRVhQRUNUX0VRKCJyZXRhaWwiLCBh
MS5QZXJmb3JtKHR1cGxlPGNvbnN0IHN0ZDo6c3RyaW5nJj4ocmUpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgd2UgY2FuIHVzZSBBQ1RJT04qKCkgdG8gZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBv
biB0aGUKLS8vIG51bWJlciBvZiBwYXJhbWV0ZXJzLgotCi1BQ1RJT04oT3ZlcmxvYWRlZEFjdGlv
bikgeyByZXR1cm4gYXJnMCA/IGFyZzEgOiAiaGVsbG8iOyB9Ci0KLUFDVElPTl9QKE92ZXJsb2Fk
ZWRBY3Rpb24sIGRlZmF1bHRfdmFsdWUpIHsKLSAgcmV0dXJuIGFyZzAgPyBhcmcxIDogZGVmYXVs
dF92YWx1ZTsKLX0KLQotQUNUSU9OX1AyKE92ZXJsb2FkZWRBY3Rpb24sIHRydWVfdmFsdWUsIGZh
bHNlX3ZhbHVlKSB7Ci0gIHJldHVybiBhcmcwID8gdHJ1ZV92YWx1ZSA6IGZhbHNlX3ZhbHVlOwot
fQotCi1URVNUKEFjdGlvbk1hY3JvVGVzdCwgQ2FuRGVmaW5lT3ZlcmxvYWRlZEFjdGlvbnMpIHsK
LSAgdHlwZWRlZiBBY3Rpb248Y29uc3QgY2hhciooYm9vbCwgY29uc3QgY2hhciopPiBNeUFjdGlv
bjsKLQotICBjb25zdCBNeUFjdGlvbiBhMSA9IE92ZXJsb2FkZWRBY3Rpb24oKTsKLSAgRVhQRUNU
X1NUUkVRKCJoZWxsbyIsIGExLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgQ2hhclB0cigid29y
bGQiKSkpKTsKLSAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0
cnVlLCBDaGFyUHRyKCJ3b3JsZCIpKSkpOwotCi0gIGNvbnN0IE15QWN0aW9uIGEyID0gT3Zlcmxv
YWRlZEFjdGlvbigiaGkiKTsKLSAgRVhQRUNUX1NUUkVRKCJoaSIsIGEyLlBlcmZvcm0obWFrZV90
dXBsZShmYWxzZSwgQ2hhclB0cigid29ybGQiKSkpKTsKLSAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIs
IGEyLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBDaGFyUHRyKCJ3b3JsZCIpKSkpOwotCi0gIGNv
bnN0IE15QWN0aW9uIGEzID0gT3ZlcmxvYWRlZEFjdGlvbigiaGkiLCAieW91Iik7Ci0gIEVYUEVD
VF9TVFJFUSgiaGkiLCBhMy5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgQ2hhclB0cigid29ybGQi
KSkpKTsKLSAgRVhQRUNUX1NUUkVRKCJ5b3UiLCBhMy5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2Us
IENoYXJQdHIoIndvcmxkIikpKSk7Ci19Ci0KLS8vIFRlc3RzIEFDVElPTl9QbiB3aGVyZSBuID49
IDMuCi0KLUFDVElPTl9QMyhQbHVzLCBtLCBuLCBrKSB7IHJldHVybiBhcmcwICsgbSArIG4gKyBr
OyB9Ci0KLVRFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIFdvcmtzRm9yM1BhcmFtZXRlcnMpIHsKLSAg
QWN0aW9uPGRvdWJsZShpbnQgbSwgYm9vbCB0KT4gYTEgPSBQbHVzKDEwMCwgMjAsIDMuNCk7Ci0g
IEVYUEVDVF9ET1VCTEVfRVEoMzEyMy40LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoMzAwMCwgdHJ1
ZSkpKTsKLQotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpPiBhMiA9
IFBsdXMoInRhaWwiLCAiLSIsICI+Iik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlID0gInJlIjsK
LSAgRVhQRUNUX0VRKCJyZXRhaWwtPiIsIGEyLlBlcmZvcm0odHVwbGU8Y29uc3Qgc3RkOjpzdHJp
bmcmPihyZSkpKTsKLX0KLQotQUNUSU9OX1A0KFBsdXMsIHAwLCBwMSwgcDIsIHAzKSB7IHJldHVy
biBhcmcwICsgcDAgKyBwMSArIHAyICsgcDM7IH0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVzdCwg
V29ya3NGb3I0UGFyYW1ldGVycykgewotICBBY3Rpb248aW50KGludCk+IGExID0gUGx1cygxLCAy
LCAzLCA0KTsKLSAgRVhQRUNUX0VRKDEwICsgMSArIDIgKyAzICsgNCwgYTEuUGVyZm9ybShtYWtl
X3R1cGxlKDEwKSkpOwotfQotCi1BQ1RJT05fUDUoUGx1cywgcDAsIHAxLCBwMiwgcDMsIHA0KSB7
IHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAyICsgcDMgKyBwNDsgfQotCi1URVNUKEFjdGlvblBu
TWFjcm9UZXN0LCBXb3Jrc0ZvcjVQYXJhbWV0ZXJzKSB7Ci0gIEFjdGlvbjxpbnQoaW50KT4gYTEg
PSBQbHVzKDEsIDIsIDMsIDQsIDUpOwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsg
NSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDEwKSkpOwotfQotCi1BQ1RJT05fUDYoUGx1cywgcDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSkgewotICByZXR1cm4gYXJnMCArIHAwICsgcDEgKyBwMiArIHAz
ICsgcDQgKyBwNTsKLX0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVzdCwgV29ya3NGb3I2UGFyYW1l
dGVycykgewotICBBY3Rpb248aW50KGludCk+IGExID0gUGx1cygxLCAyLCAzLCA0LCA1LCA2KTsK
LSAgRVhQRUNUX0VRKDEwICsgMSArIDIgKyAzICsgNCArIDUgKyA2LCBhMS5QZXJmb3JtKG1ha2Vf
dHVwbGUoMTApKSk7Ci19Ci0KLUFDVElPTl9QNyhQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNikgewotICByZXR1cm4gYXJnMCArIHAwICsgcDEgKyBwMiArIHAzICsgcDQgKyBwNSArIHA2
OwotfQotCi1URVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjdQYXJhbWV0ZXJzKSB7Ci0g
IEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQsIDUsIDYsIDcpOwotICBFWFBF
Q1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsgNSArIDYgKyA3LCBhMS5QZXJmb3JtKG1ha2VfdHVw
bGUoMTApKSk7Ci19Ci0KLUFDVElPTl9QOChQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBw
NiwgcDcpIHsKLSAgcmV0dXJuIGFyZzAgKyBwMCArIHAxICsgcDIgKyBwMyArIHA0ICsgcDUgKyBw
NiArIHA3OwotfQotCi1URVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjhQYXJhbWV0ZXJz
KSB7Ci0gIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgp
OwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsgNSArIDYgKyA3ICsgOCwgYTEuUGVy
Zm9ybShtYWtlX3R1cGxlKDEwKSkpOwotfQotCi1BQ1RJT05fUDkoUGx1cywgcDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSwgcDYsIHA3LCBwOCkgewotICByZXR1cm4gYXJnMCArIHAwICsgcDEgKyBwMiAr
IHAzICsgcDQgKyBwNSArIHA2ICsgcDcgKyBwODsKLX0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVz
dCwgV29ya3NGb3I5UGFyYW1ldGVycykgewotICBBY3Rpb248aW50KGludCk+IGExID0gUGx1cygx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5KTsKLSAgRVhQRUNUX0VRKDEwICsgMSArIDIgKyAzICsg
NCArIDUgKyA2ICsgNyArIDggKyA5LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoMTApKSk7Ci19Ci0K
LUFDVElPTl9QMTAoUGx1cywgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgbGFz
dF9wYXJhbSkgewotICBhcmcwX3R5cGUgdDAgPSBhcmcwOwotICBsYXN0X3BhcmFtX3R5cGUgdDkg
PSBsYXN0X3BhcmFtOwotICByZXR1cm4gdDAgKyBwMCArIHAxICsgcDIgKyBwMyArIHA0ICsgcDUg
KyBwNiArIHA3ICsgcDggKyB0OTsKLX0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVzdCwgV29ya3NG
b3IxMFBhcmFtZXRlcnMpIHsKLSAgQWN0aW9uPGludChpbnQpPiBhMSA9IFBsdXMoMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTApOwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsg
NSArIDYgKyA3ICsgOCArIDkgKyAxMCwKLSAgICAgICAgICAgIGExLlBlcmZvcm0obWFrZV90dXBs
ZSgxMCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgYWN0aW9uIGJvZHkgY2FuIHByb21vdGUg
dGhlIHBhcmFtZXRlciB0eXBlcy4KLQotQUNUSU9OX1AyKFBhZEFyZ3VtZW50LCBwcmVmaXgsIHN1
ZmZpeCkgewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmVzIHByb21vdGUgdGhlIHR3byBwYXJhbWV0
ZXJzIHRvIGRlc2lyZWQgdHlwZXMuCi0gIHN0ZDo6c3RyaW5nIHByZWZpeF9zdHIocHJlZml4KTsK
LSAgY2hhciBzdWZmaXhfY2hhciA9IHN0YXRpY19jYXN0PGNoYXI+KHN1ZmZpeCk7Ci0gIHJldHVy
biBwcmVmaXhfc3RyICsgYXJnMCArIHN1ZmZpeF9jaGFyOwotfQotCi1URVNUKEFjdGlvblBuTWFj
cm9UZXN0LCBTaW1wbGVUeXBlUHJvbW90aW9uKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25z
dCBjaGFyKik+IG5vX3Byb21vID0KLSAgICAgIFBhZEFyZ3VtZW50KHN0ZDo6c3RyaW5nKCJmb28i
KSwgJ3InKTsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqKT4gcHJvbW8gPQotICAg
ICAgUGFkQXJndW1lbnQoImZvbyIsIHN0YXRpY19jYXN0PGludD4oJ3InKSk7Ci0gIEVYUEVDVF9F
USgiZm9vYmFyIiwgbm9fcHJvbW8uUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoImJhIikpKSk7
Ci0gIEVYUEVDVF9FUSgiZm9vYmFyIiwgcHJvbW8uUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIo
ImJhIikpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIHBhcnRpYWxseSByZXN0cmljdCBw
YXJhbWV0ZXIgdHlwZXMgdXNpbmcgYQotLy8gc3RyYWlnaHQtZm9yd2FyZCBwYXR0ZXJuLgotCi0v
LyBEZWZpbmVzIGEgZ2VuZXJpYyBhY3Rpb24gdGhhdCBkb2Vzbid0IHJlc3RyaWN0IHRoZSB0eXBl
cyBvZiBpdHMKLS8vIHBhcmFtZXRlcnMuCi1BQ1RJT05fUDMoQ29uY2F0SW1wbCwgYSwgYiwgYykg
ewotICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgc3MgPDwgYSA8PCBiIDw8IGM7Ci0gIHJldHVy
biBzcy5zdHIoKTsKLX0KLQotLy8gTmV4dCwgd2UgdHJ5IHRvIHJlc3RyaWN0IHRoYXQgZWl0aGVy
IHRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgYQotLy8gc3RyaW5nLCBvciB0aGUgc2Vjb25kIHBhcmFt
ZXRlciBpcyBhbiBpbnQuCi0KLS8vIERlZmluZXMgYSBwYXJ0aWFsbHkgc3BlY2lhbGl6ZWQgd3Jh
cHBlciB0aGF0IHJlc3RyaWN0cyB0aGUgZmlyc3QKLS8vIHBhcmFtZXRlciB0byBzdGQ6OnN0cmlu
Zy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0vLyBDb25jYXRJbXBsQWN0
aW9uUDMgaXMgdGhlIGNsYXNzIHRlbXBsYXRlIEFDVElPTl9QMyB1c2VzIHRvCi0vLyBpbXBsZW1l
bnQgQ29uY2F0SW1wbC4gIFdlIHNob3VsZG4ndCBjaGFuZ2UgdGhlIG5hbWUgYXMgdGhpcwotLy8g
cGF0dGVybiByZXF1aXJlcyB0aGUgdXNlciB0byB1c2UgaXQgZGlyZWN0bHkuCi1Db25jYXRJbXBs
QWN0aW9uUDM8c3RkOjpzdHJpbmcsIFQxLCBUMj4KLUNvbmNhdChjb25zdCBzdGQ6OnN0cmluZyYg
YSwgVDEgYiwgVDIgYykgewotICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BVU0hfKCkK
LSAgaWYgKHRydWUpIHsKLSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKLSAg
ICAvLyBUaGlzIGJyYW5jaCB2ZXJpZmllcyB0aGF0IENvbmNhdEltcGwoKSBjYW4gYmUgaW52b2tl
ZCB3aXRob3V0Ci0gICAgLy8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzLgotICAgIHJldHVy
biBDb25jYXRJbXBsKGEsIGIsIGMpOwotICB9IGVsc2UgewotICAgIC8vIFRoaXMgYnJhbmNoIHZl
cmlmaWVzIHRoYXQgQ29uY2F0SW1wbCgpIGNhbiBhbHNvIGJlIGludm9rZWQgd2l0aAotICAgIC8v
IGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cy4gIEl0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8g
YmUKLSAgICAvLyBleGVjdXRlZCBhcyB0aGlzIGlzIGEgY29tcGlsZS10aW1lIHZlcmlmaWNhdGlv
bi4KLSAgICByZXR1cm4gQ29uY2F0SW1wbDxzdGQ6OnN0cmluZywgVDEsIFQyPihhLCBiLCBjKTsK
LSAgfQotfQotCi0vLyBEZWZpbmVzIGFub3RoZXIgcGFydGlhbGx5IHNwZWNpYWxpemVkIHdyYXBw
ZXIgdGhhdCByZXN0cmljdHMgdGhlCi0vLyBzZWNvbmQgcGFyYW1ldGVyIHRvIGludC4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Db25jYXRJbXBsQWN0aW9uUDM8VDEsIGlu
dCwgVDI+Ci1Db25jYXQoVDEgYSwgaW50IGIsIFQyIGMpIHsKLSAgcmV0dXJuIENvbmNhdEltcGwo
YSwgYiwgYyk7Ci19Ci0KLVRFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIENhblBhcnRpYWxseVJlc3Ry
aWN0UGFyYW1ldGVyVHlwZXMpIHsKLSAgQWN0aW9uPGNvbnN0IHN0ZDo6c3RyaW5nKCk+IGExID0g
Q29uY2F0KCJIZWxsbyIsICIxIiwgMik7Ci0gIEVYUEVDVF9FUSgiSGVsbG8xMiIsIGExLlBlcmZv
cm0obWFrZV90dXBsZSgpKSk7Ci0KLSAgYTEgPSBDb25jYXQoMSwgMiwgMyk7Ci0gIEVYUEVDVF9F
USgiMTIzIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhl
IHR5cGUgb2YgYW4gQUNUSU9OKi4KLQotQUNUSU9OKERvRm9vKSB7fQotQUNUSU9OX1AoRG9Gb28s
IHApIHt9Ci1BQ1RJT05fUDIoRG9Gb28sIHAwLCBwMSkge30KLQotVEVTVChBY3Rpb25Qbk1hY3Jv
VGVzdCwgVHlwZXNBcmVDb3JyZWN0KSB7Ci0gIC8vIERvRm9vKCkgbXVzdCBiZSBhc3NpZ25hYmxl
IHRvIGEgRG9Gb29BY3Rpb24gdmFyaWFibGUuCi0gIERvRm9vQWN0aW9uIGEwID0gRG9Gb28oKTsK
LQotICAvLyBEb0ZvbygxKSBtdXN0IGJlIGFzc2lnbmFibGUgdG8gYSBEb0Zvb0FjdGlvblAgdmFy
aWFibGUuCi0gIERvRm9vQWN0aW9uUDxpbnQ+IGExID0gRG9Gb28oMSk7Ci0KLSAgLy8gRG9Gb28o
cDEsIC4uLiwgcGspIG11c3QgYmUgYXNzaWduYWJsZSB0byBhIERvRm9vQWN0aW9uUGsKLSAgLy8g
dmFyaWFibGUsIGFuZCBzbyBvbi4KLSAgRG9Gb29BY3Rpb25QMjxpbnQsIGNoYXI+IGEyID0gRG9G
b28oMSwgJzInKTsKLSAgUGx1c0FjdGlvblAzPGludCwgaW50LCBjaGFyPiBhMyA9IFBsdXMoMSwg
MiwgJzMnKTsKLSAgUGx1c0FjdGlvblA0PGludCwgaW50LCBpbnQsIGNoYXI+IGE0ID0gUGx1cygx
LCAyLCAzLCAnNCcpOwotICBQbHVzQWN0aW9uUDU8aW50LCBpbnQsIGludCwgaW50LCBjaGFyPiBh
NSA9IFBsdXMoMSwgMiwgMywgNCwgJzUnKTsKLSAgUGx1c0FjdGlvblA2PGludCwgaW50LCBpbnQs
IGludCwgaW50LCBjaGFyPiBhNiA9IFBsdXMoMSwgMiwgMywgNCwgNSwgJzYnKTsKLSAgUGx1c0Fj
dGlvblA3PGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE3ID0KLSAgICAgIFBs
dXMoMSwgMiwgMywgNCwgNSwgNiwgJzcnKTsKLSAgUGx1c0FjdGlvblA4PGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTggPQotICAgICAgUGx1cygxLCAyLCAzLCA0LCA1
LCA2LCA3LCAnOCcpOwotICBQbHVzQWN0aW9uUDk8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGNoYXI+IGE5ID0KLSAgICAgIFBsdXMoMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgJzknKTsKLSAgUGx1c0FjdGlvblAxMDxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBjaGFyPiBhMTAgPQotICAgICAgUGx1cygxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCA5LCAnMCcpOwotCi0gIC8vIEF2b2lkICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmdzLgot
ICAodm9pZClhMDsKLSAgKHZvaWQpYTE7Ci0gICh2b2lkKWEyOwotICAodm9pZClhMzsKLSAgKHZv
aWQpYTQ7Ci0gICh2b2lkKWE1OwotICAodm9pZClhNjsKLSAgKHZvaWQpYTc7Ci0gICh2b2lkKWE4
OwotICAodm9pZClhOTsKLSAgKHZvaWQpYTEwOwotfQotCi0vLyBUZXN0cyB0aGF0IGFuIEFDVElP
Tl9QKigpIGFjdGlvbiBjYW4gYmUgZXhwbGljaXRseSBpbnN0YW50aWF0ZWQKLS8vIHdpdGggcmVm
ZXJlbmNlLXR5cGVkIHBhcmFtZXRlcnMuCi0KLUFDVElPTl9QKFBsdXMxLCB4KSB7IHJldHVybiB4
OyB9Ci1BQ1RJT05fUDIoUGx1czIsIHgsIHkpIHsgcmV0dXJuIHggKyB5OyB9Ci1BQ1RJT05fUDMo
UGx1czMsIHgsIHksIHopIHsgcmV0dXJuIHggKyB5ICsgejsgfQotQUNUSU9OX1AxMChQbHVzMTAs
IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSB7Ci0gIHJldHVybiBhMCAr
IGExICsgYTIgKyBhMyArIGE0ICsgYTUgKyBhNiArIGE3ICsgYTggKyBhOTsKLX0KLQotVEVTVChB
Y3Rpb25Qbk1hY3JvVGVzdCwgQ2FuRXhwbGljaXRseUluc3RhbnRpYXRlV2l0aFJlZmVyZW5jZVR5
cGVzKSB7Ci0gIGludCB4ID0gMSwgeSA9IDIsIHogPSAzOwotICBjb25zdCB0dXBsZTw+IGVtcHR5
ID0gbWFrZV90dXBsZSgpOwotCi0gIEFjdGlvbjxpbnQoKT4gYSA9IFBsdXMxPGludCY+KHgpOwot
ICBFWFBFQ1RfRVEoMSwgYS5QZXJmb3JtKGVtcHR5KSk7Ci0KLSAgYSA9IFBsdXMyPGNvbnN0IGlu
dCYsIGludCY+KHgsIHkpOwotICBFWFBFQ1RfRVEoMywgYS5QZXJmb3JtKGVtcHR5KSk7Ci0KLSAg
YSA9IFBsdXMzPGludCYsIGNvbnN0IGludCYsIGludCY+KHgsIHksIHopOwotICBFWFBFQ1RfRVEo
NiwgYS5QZXJmb3JtKGVtcHR5KSk7Ci0KLSAgaW50IG5bMTBdID0geyAxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMCB9OwotICBhID0gUGx1czEwPGNvbnN0IGludCYsIGludCYsIGNvbnN0IGlu
dCYsIGludCYsIGNvbnN0IGludCYsIGludCYsIGNvbnN0IGludCYsCi0gICAgICBpbnQmLCBjb25z
dCBpbnQmLCBpbnQmPihuWzBdLCBuWzFdLCBuWzJdLCBuWzNdLCBuWzRdLCBuWzVdLCBuWzZdLCBu
WzddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbls4XSwgbls5XSk7Ci0gIEVYUEVD
VF9FUSg1NSwgYS5QZXJmb3JtKGVtcHR5KSk7Ci19Ci0KLWNsYXNzIE51bGxhcnlDb25zdHJ1Y3Rv
ckNsYXNzIHsKLSBwdWJsaWM6Ci0gIE51bGxhcnlDb25zdHJ1Y3RvckNsYXNzKCkgOiB2YWx1ZV8o
MTIzKSB7fQotICBpbnQgdmFsdWVfOwotfTsKLQotLy8gVGVzdHMgdXNpbmcgUmV0dXJuTmV3KCkg
d2l0aCBhIG51bGxhcnkgY29uc3RydWN0b3IuCi1URVNUKFJldHVybk5ld1Rlc3QsIE5vQXJncykg
ewotICBBY3Rpb248TnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MqKCk+IGEgPSBSZXR1cm5OZXc8TnVs
bGFyeUNvbnN0cnVjdG9yQ2xhc3M+KCk7Ci0gIE51bGxhcnlDb25zdHJ1Y3RvckNsYXNzKiBjID0g
YS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGMtPnZhbHVlXyk7Ci0g
IGRlbGV0ZSBjOwotfQotCi1jbGFzcyBVbmFyeUNvbnN0cnVjdG9yQ2xhc3MgewotIHB1YmxpYzoK
LSAgZXhwbGljaXQgVW5hcnlDb25zdHJ1Y3RvckNsYXNzKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9Ci0gIGludCB2YWx1ZV87Ci19OwotCi0vLyBUZXN0cyB1c2luZyBSZXR1cm5OZXcoKSB3
aXRoIGEgdW5hcnkgY29uc3RydWN0b3IuCi1URVNUKFJldHVybk5ld1Rlc3QsIFVuYXJ5KSB7Ci0g
IEFjdGlvbjxVbmFyeUNvbnN0cnVjdG9yQ2xhc3MqKCk+IGEgPSBSZXR1cm5OZXc8VW5hcnlDb25z
dHJ1Y3RvckNsYXNzPig0MDAwKTsKLSAgVW5hcnlDb25zdHJ1Y3RvckNsYXNzKiBjID0gYS5QZXJm
b3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9FUSg0MDAwLCBjLT52YWx1ZV8pOwotICBkZWxl
dGUgYzsKLX0KLQotVEVTVChSZXR1cm5OZXdUZXN0LCBVbmFyeVdvcmtzV2hlbk1vY2tNZXRob2RI
YXNBcmdzKSB7Ci0gIEFjdGlvbjxVbmFyeUNvbnN0cnVjdG9yQ2xhc3MqKGJvb2wsIGludCk+IGEg
PQotICAgICAgUmV0dXJuTmV3PFVuYXJ5Q29uc3RydWN0b3JDbGFzcz4oNDAwMCk7Ci0gIFVuYXJ5
Q29uc3RydWN0b3JDbGFzcyogYyA9IGEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCA1KSk7Ci0g
IEVYUEVDVF9FUSg0MDAwLCBjLT52YWx1ZV8pOwotICBkZWxldGUgYzsKLX0KLQotVEVTVChSZXR1
cm5OZXdUZXN0LCBVbmFyeVdvcmtzV2hlbk1vY2tNZXRob2RSZXR1cm5zUG9pbnRlclRvQ29uc3Qp
IHsKLSAgQWN0aW9uPGNvbnN0IFVuYXJ5Q29uc3RydWN0b3JDbGFzcyooKT4gYSA9Ci0gICAgICBS
ZXR1cm5OZXc8VW5hcnlDb25zdHJ1Y3RvckNsYXNzPig0MDAwKTsKLSAgY29uc3QgVW5hcnlDb25z
dHJ1Y3RvckNsYXNzKiBjID0gYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9FUSg0
MDAwLCBjLT52YWx1ZV8pOwotICBkZWxldGUgYzsKLX0KLQotY2xhc3MgVGVuQXJnQ29uc3RydWN0
b3JDbGFzcyB7Ci0gcHVibGljOgotICBUZW5BcmdDb25zdHJ1Y3RvckNsYXNzKGludCBhMSwgaW50
IGEyLCBpbnQgYTMsIGludCBhNCwgaW50IGE1LAotICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhNiwgaW50IGE3LCBpbnQgYTgsIGludCBhOSwgaW50IGExMCkKLSAgICA6IHZhbHVlXyhhMSAr
IGEyICsgYTMgKyBhNCArIGE1ICsgYTYgKyBhNyArIGE4ICsgYTkgKyBhMTApIHsKLSAgfQotICBp
bnQgdmFsdWVfOwotfTsKLQotLy8gVGVzdHMgdXNpbmcgUmV0dXJuTmV3KCkgd2l0aCBhIDEwLWFy
Z3VtZW50IGNvbnN0cnVjdG9yLgotVEVTVChSZXR1cm5OZXdUZXN0LCBDb25zdHJ1Y3RvclRoYXRU
YWtlczEwQXJndW1lbnRzKSB7Ci0gIEFjdGlvbjxUZW5BcmdDb25zdHJ1Y3RvckNsYXNzKigpPiBh
ID0KLSAgICAgIFJldHVybk5ldzxUZW5BcmdDb25zdHJ1Y3RvckNsYXNzPigxMDAwMDAwMDAwLCAy
MDAwMDAwMDAsIDMwMDAwMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQwMDAwMDAsIDUwMDAwMCwgNjAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzAwMCwgODAwLCA5MCwgMCk7Ci0gIFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3Mq
IGMgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VRKDEyMzQ1Njc4OTAsIGMt
PnZhbHVlXyk7Ci0gIGRlbGV0ZSBjOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTl9URU1QTEFU
RSB3b3JrcyB3aGVuIHRoZXJlIGlzIG5vIHZhbHVlIHBhcmFtZXRlci4KLUFDVElPTl9URU1QTEFU
RShDcmVhdGVOZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVu
YW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJBTVMoKSkgewotICByZXR1
cm4gbmV3IFQ7Ci19Ci0KLVRFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc1dpdGhvdXRWYWx1
ZVBhcmFtKSB7Ci0gIGNvbnN0IEFjdGlvbjxpbnQqKCk+IGEgPSBDcmVhdGVOZXc8aW50PigpOwot
ICBpbnQqIHAgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAgZGVsZXRlIHA7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIHdvcmtzIHdoZW4gdGhlcmUgYXJlIHZhbHVlIHBh
cmFtZXRlcnMuCi1BQ1RJT05fVEVNUExBVEUoQ3JlYXRlTmV3LAotICAgICAgICAgICAgICAgIEhB
U18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzFf
VkFMVUVfUEFSQU1TKGEwKSkgewotICByZXR1cm4gbmV3IFQoYTApOwotfQotCi1URVNUKEFjdGlv
blRlbXBsYXRlVGVzdCwgV29ya3NXaXRoVmFsdWVQYXJhbXMpIHsKLSAgY29uc3QgQWN0aW9uPGlu
dCooKT4gYSA9IENyZWF0ZU5ldzxpbnQ+KDQyKTsKLSAgaW50KiBwID0gYS5QZXJmb3JtKG1ha2Vf
dHVwbGUoKSk7Ci0gIEVYUEVDVF9FUSg0MiwgKnApOwotICBkZWxldGUgcDsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBQ1RJT05fVEVNUExBVEUgd29ya3MgZm9yIGludGVncmFsIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuCi1BQ1RJT05fVEVNUExBVEUoTXlEZWxldGVBcmcsCi0gICAgICAgICAgICAgICAgSEFT
XzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzBfVkFMVUVf
UEFSQU1TKCkpIHsKLSAgZGVsZXRlIGdldDxrPihhcmdzKTsKLX0KLQotLy8gUmVzZXRzIGEgYm9v
bCB2YXJpYWJsZSBpbiB0aGUgZGVzdHJ1Y3Rvci4KLWNsYXNzIEJvb2xSZXNldHRlciB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBCb29sUmVzZXR0ZXIoYm9vbCogdmFsdWUpIDogdmFsdWVfKHZhbHVl
KSB7fQotICB+Qm9vbFJlc2V0dGVyKCkgeyAqdmFsdWVfID0gZmFsc2U7IH0KLSBwcml2YXRlOgot
ICBib29sKiB2YWx1ZV87Ci19OwotCi1URVNUKEFjdGlvblRlbXBsYXRlVGVzdCwgV29ya3NGb3JJ
bnRlZ3JhbFRlbXBsYXRlUGFyYW1zKSB7Ci0gIGNvbnN0IEFjdGlvbjx2b2lkKGludCosIEJvb2xS
ZXNldHRlciopPiBhID0gTXlEZWxldGVBcmc8MT4oKTsKLSAgaW50IG4gPSAwOwotICBib29sIGIg
PSB0cnVlOwotICBCb29sUmVzZXR0ZXIqIHJlc2V0dGVyID0gbmV3IEJvb2xSZXNldHRlcigmYik7
Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZuLCByZXNldHRlcikpOwotICBFWFBFQ1RfRkFMU0Uo
Yik7ICAvLyBWZXJpZmllcyB0aGF0IHJlc2V0dGVyIGlzIGRlbGV0ZWQuCi19Ci0KLS8vIFRlc3Rz
IHRoYXQgQUNUSU9OX1RFTVBMQVRFUyB3b3JrcyBmb3IgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1l
dGVycy4KLUFDVElPTl9URU1QTEFURShSZXR1cm5TbWFydFBvaW50ZXIsCi0gICAgICAgICAgICAg
ICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHRlbXBsYXRlIDx0eXBlbmFtZSBQb2ludGVlPiBjbGFz
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlciksCi0gICAg
ICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKHBvaW50ZWUpKSB7Ci0gIHJldHVybiBQb2lu
dGVyPHBvaW50ZWVfdHlwZT4obmV3IHBvaW50ZWVfdHlwZShwb2ludGVlKSk7Ci19Ci0KLVRFU1Qo
QWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc0ZvclRlbXBsYXRlVGVtcGxhdGVQYXJhbWV0ZXJzKSB7
Ci0gIHVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Ci0gIGNvbnN0IEFjdGlv
bjxsaW5rZWRfcHRyPGludD4oKT4gYSA9IFJldHVyblNtYXJ0UG9pbnRlcjxsaW5rZWRfcHRyPig0
Mik7Ci0gIGxpbmtlZF9wdHI8aW50PiBwID0gYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVY
UEVDVF9FUSg0MiwgKnApOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTl9URU1QTEFURSB3b3Jr
cyBmb3IgMTAgdGVtcGxhdGUgcGFyYW1ldGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgazQsIGJvb2wgazUsCi0gICAgICAgICAgdW5zaWdu
ZWQgaW50IGs2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgotc3RydWN0
IEdpYW50VGVtcGxhdGUgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR2lhbnRUZW1wbGF0ZShpbnQg
YV92YWx1ZSkgOiB2YWx1ZShhX3ZhbHVlKSB7fQotICBpbnQgdmFsdWU7Ci19OwotCi1BQ1RJT05f
VEVNUExBVEUoUmV0dXJuR2lhbnQsCi0gICAgICAgICAgICAgICAgSEFTXzEwX1RFTVBMQVRFX1BB
UkFNUygKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUsIFQxLAotICAgICAgICAgICAgICAg
ICAgICB0eXBlbmFtZSwgVDIsCi0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lLCBUMywKLSAg
ICAgICAgICAgICAgICAgICAgaW50LCBrNCwKLSAgICAgICAgICAgICAgICAgICAgYm9vbCwgazUs
Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwgazYsCi0gICAgICAgICAgICAgICAg
ICAgIGNsYXNzLCBUNywKLSAgICAgICAgICAgICAgICAgICAgY2xhc3MsIFQ4LAotICAgICAgICAg
ICAgICAgICAgICBjbGFzcywgVDksCi0gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcywgVDEwKSwKLSAgICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMo
dmFsdWUpKSB7Ci0gIHJldHVybiBHaWFudFRlbXBsYXRlPFQxMDxUMT4sIFQyLCBUMywgazQsIGs1
LCBrNiwgVDcsIFQ4LCBUOT4odmFsdWUpOwotfQotCi1URVNUKEFjdGlvblRlbXBsYXRlVGVzdCwg
V29ya3NGb3IxMFRlbXBsYXRlUGFyYW1ldGVycykgewotICB1c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpsaW5rZWRfcHRyOwotICB0eXBlZGVmIEdpYW50VGVtcGxhdGU8bGlua2VkX3B0cjxpbnQ+
LCBib29sLCBkb3VibGUsIDUsCi0gICAgICB0cnVlLCA2LCBjaGFyLCB1bnNpZ25lZCwgaW50PiBH
aWFudDsKLSAgY29uc3QgQWN0aW9uPEdpYW50KCk+IGEgPSBSZXR1cm5HaWFudDwKLSAgICAgIGlu
dCwgYm9vbCwgZG91YmxlLCA1LCB0cnVlLCA2LCBjaGFyLCB1bnNpZ25lZCwgaW50LCBsaW5rZWRf
cHRyPig0Mik7Ci0gIEdpYW50IGdpYW50ID0gYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVY
UEVDVF9FUSg0MiwgZ2lhbnQudmFsdWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTl9URU1Q
TEFURSB3b3JrcyBmb3IgMTAgdmFsdWUgcGFyYW1ldGVycy4KLUFDVElPTl9URU1QTEFURShSZXR1
cm5TdW0sCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBO
dW1iZXIpLAotICAgICAgICAgICAgICAgIEFORF8xMF9WQUxVRV9QQVJBTVModjEsIHYyLCB2Mywg
djQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwKSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8TnVt
YmVyPih2MSkgKyB2MiArIHYzICsgdjQgKyB2NSArIHY2ICsgdjcgKyB2OCArIHY5ICsgdjEwOwot
fQotCi1URVNUKEFjdGlvblRlbXBsYXRlVGVzdCwgV29ya3NGb3IxMFZhbHVlUGFyYW1ldGVycykg
ewotICBjb25zdCBBY3Rpb248aW50KCk+IGEgPSBSZXR1cm5TdW08aW50PigxLCAyLCAzLCA0LCA1
LCA2LCA3LCA4LCA5LCAxMCk7Ci0gIEVYUEVDVF9FUSg1NSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFDVElPTl9URU1QTEFURSBhbmQgQUNUSU9OL0FDVElP
Tl9QKiBjYW4gYmUgb3ZlcmxvYWRlZAotLy8gb24gdGhlIG51bWJlciBvZiB2YWx1ZSBwYXJhbWV0
ZXJzLgotCi1BQ1RJT04oUmV0dXJuU3VtKSB7IHJldHVybiAwOyB9Ci0KLUFDVElPTl9QKFJldHVy
blN1bSwgeCkgeyByZXR1cm4geDsgfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuU3VtLAotICAg
ICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgTnVtYmVyKSwKLSAg
ICAgICAgICAgICAgICBBTkRfMl9WQUxVRV9QQVJBTVModjEsIHYyKSkgewotICByZXR1cm4gc3Rh
dGljX2Nhc3Q8TnVtYmVyPih2MSkgKyB2MjsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKFJldHVyblN1
bSwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUsIE51bWJl
ciksCi0gICAgICAgICAgICAgICAgQU5EXzNfVkFMVUVfUEFSQU1TKHYxLCB2MiwgdjMpKSB7Ci0g
IHJldHVybiBzdGF0aWNfY2FzdDxOdW1iZXI+KHYxKSArIHYyICsgdjM7Ci19Ci0KLUFDVElPTl9U
RU1QTEFURShSZXR1cm5TdW0sCi0gICAgICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1T
KHR5cGVuYW1lLCBOdW1iZXIsIGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzRfVkFMVUVf
UEFSQU1TKHYxLCB2MiwgdjMsIHY0KSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8TnVtYmVyPih2
MSkgKyB2MiArIHYzICsgdjQgKyBrOwotfQotCi1URVNUKEFjdGlvblRlbXBsYXRlVGVzdCwgQ2Fu
QmVPdmVybG9hZGVkT25OdW1iZXJPZlZhbHVlUGFyYW1ldGVycykgewotICBjb25zdCBBY3Rpb248
aW50KCk+IGEwID0gUmV0dXJuU3VtKCk7Ci0gIGNvbnN0IEFjdGlvbjxpbnQoKT4gYTEgPSBSZXR1
cm5TdW0oMSk7Ci0gIGNvbnN0IEFjdGlvbjxpbnQoKT4gYTIgPSBSZXR1cm5TdW08aW50PigxLCAy
KTsKLSAgY29uc3QgQWN0aW9uPGludCgpPiBhMyA9IFJldHVyblN1bTxpbnQ+KDEsIDIsIDMpOwot
ICBjb25zdCBBY3Rpb248aW50KCk+IGE0ID0gUmV0dXJuU3VtPGludCwgMTAwMDA+KDIwMDAsIDMw
MCwgNDAsIDUpOwotICBFWFBFQ1RfRVEoMCwgYTAuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLSAg
RVhQRUNUX0VRKDEsIGExLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci0gIEVYUEVDVF9FUSgzLCBh
Mi5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotICBFWFBFQ1RfRVEoNiwgYTMuUGVyZm9ybShtYWtl
X3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKDEyMzQ1LCBhNC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkp
OwotfQotCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0K
LX0gIC8vIG5hbWVzcGFjZSBnbW9ja19nZW5lcmF0ZWRfYWN0aW9uc190ZXN0Ci19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0
ZWQtZnVuY3Rpb24tbW9ja2Vyc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5l
cmF0ZWQtZnVuY3Rpb24tbW9ja2Vyc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwOGU1ZWJhMWJjYTE4YzA0MzljNWEwYzhkZWIyZGIxYTg3OGUwNWRjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDYyNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29n
bGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwot
Ly8gVGhpcyBmaWxlIHRlc3RzIHRoZSBmdW5jdGlvbiBtb2NrZXIgY2xhc3Nlcy4KLQotI2luY2x1
ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmgiCi0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0vLyBNU0ROIHNheXMgdGhlIGhlYWRlciBmaWxlIHRvIGJlIGluY2x1ZGVk
IGZvciBTVERNRVRIT0QgaXMgQmFzZVR5cHMuaCBidXQKLS8vIHdlIGFyZSBnZXR0aW5nIGNvbXBp
bGVyIGVycm9ycyBpZiB3ZSB1c2UgYmFzZXR5cHMuaCwgaGVuY2UgaW5jbHVkaW5nCi0vLyBvYmpi
YXNlLmggZm9yIGRlZmluaXRpb24gb2YgU1RETUVUSE9ELgotIyBpbmNsdWRlIDxvYmpiYXNlLmg+
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRl
IDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgotCi0vLyBUaGVyZSBpcyBhIGJ1ZyBpbiBNU1ZDIChmaXhlZCBpbiBWUyAyMDA4KSB0aGF0
IHByZXZlbnRzIGNyZWF0aW5nIGEKLS8vIG1vY2sgZm9yIGEgZnVuY3Rpb24gd2l0aCBjb25zdCBh
cmd1bWVudHMsIHNvIHdlIGRvbid0IHRlc3Qgc3VjaAotLy8gY2FzZXMgZm9yIE1TVkMgdmVyc2lv
bnMgb2xkZXIgdGhhbiAyMDA4LgotI2lmICFHVEVTVF9PU19XSU5ET1dTIHx8IChfTVNDX1ZFUiA+
PSAxNTAwKQotIyBkZWZpbmUgR01PQ0tfQUxMT1dTX0NPTlNUX1BBUkFNX0ZVTkNUSU9OUwotI2Vu
ZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyB8fCAoX01TQ19WRVIgPj0gMTUwMCkKLQotbmFtZXNw
YWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGdtb2NrX2dlbmVyYXRlZF9mdW5jdGlvbl9tb2NrZXJz
X3Rlc3QgewotCi11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGluZzo6QTsKLXVzaW5nIHRl
c3Rpbmc6OkFuOwotdXNpbmcgdGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgdGVzdGluZzo6Q29u
c3Q7Ci11c2luZyB0ZXN0aW5nOjpEb0RlZmF1bHQ7Ci11c2luZyB0ZXN0aW5nOjpFcTsKLXVzaW5n
IHRlc3Rpbmc6Okx0OwotdXNpbmcgdGVzdGluZzo6TW9ja0Z1bmN0aW9uOwotdXNpbmcgdGVzdGlu
Zzo6UmVmOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuUmVm
OwotdXNpbmcgdGVzdGluZzo6VHlwZWRFcTsKLQotY2xhc3MgRm9vSW50ZXJmYWNlIHsKLSBwdWJs
aWM6Ci0gIHZpcnR1YWwgfkZvb0ludGVyZmFjZSgpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIFZvaWRS
ZXR1cm5pbmcoaW50IHgpID0gMDsKLQotICB2aXJ0dWFsIGludCBOdWxsYXJ5KCkgPSAwOwotICB2
aXJ0dWFsIGJvb2wgVW5hcnkoaW50IHgpID0gMDsKLSAgdmlydHVhbCBsb25nIEJpbmFyeShzaG9y
dCB4LCBpbnQgeSkgPSAwOyAgLy8gTk9MSU5UCi0gIHZpcnR1YWwgaW50IERlY2ltYWwoYm9vbCBi
LCBjaGFyIGMsIHNob3J0IGQsIGludCBlLCBsb25nIGYsICAvLyBOT0xJTlQKLSAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBnLCBkb3VibGUgaCwgdW5zaWduZWQgaSwgY2hhciogaiwKLSAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaykgPSAwOwotCi0gIHZpcnR1YWwg
Ym9vbCBUYWtlc05vbkNvbnN0UmVmZXJlbmNlKGludCYgbikgPSAwOyAgLy8gTk9MSU5UCi0gIHZp
cnR1YWwgc3RkOjpzdHJpbmcgVGFrZXNDb25zdFJlZmVyZW5jZShjb25zdCBpbnQmIG4pID0gMDsK
LSNpZmRlZiBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCi0gIHZpcnR1YWwgYm9v
bCBUYWtlc0NvbnN0KGNvbnN0IGludCB4KSA9IDA7Ci0jZW5kaWYgIC8vIEdNT0NLX0FMTE9XU19D
T05TVF9QQVJBTV9GVU5DVElPTlMKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Bcmd1bWVu
dE51bWJlcigpID0gMDsKLSAgdmlydHVhbCBpbnQgT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIo
aW50IG4pID0gMDsKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Bcmd1bWVudFR5cGUoaW50
IG4pID0gMDsKLSAgdmlydHVhbCBjaGFyIE92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZShjaGFyIGMp
ID0gMDsKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Db25zdG5lc3MoKSA9IDA7Ci0gIHZp
cnR1YWwgY2hhciBPdmVybG9hZGVkT25Db25zdG5lc3MoKSBjb25zdCA9IDA7Ci0KLSAgdmlydHVh
bCBpbnQgVHlwZVdpdGhIb2xlKGludCAoKmZ1bmMpKCkpID0gMDsKLSAgdmlydHVhbCBpbnQgVHlw
ZVdpdGhDb21tYShjb25zdCBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgYV9tYXApID0gMDsK
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgU1RETUVUSE9EXyhpbnQsIENUTnVsbGFyeSkoKSA9
IDA7Ci0gIFNURE1FVEhPRF8oYm9vbCwgQ1RVbmFyeSkoaW50IHgpID0gMDsKLSAgU1RETUVUSE9E
XyhpbnQsIENURGVjaW1hbCkKLSAgKGJvb2wgYiwgY2hhciBjLCBzaG9ydCBkLCBpbnQgZSwgbG9u
ZyBmLCAgLy8gTk9MSU5UCi0gICBmbG9hdCBnLCBkb3VibGUgaCwgdW5zaWduZWQgaSwgY2hhciog
aiwgY29uc3Qgc3RkOjpzdHJpbmcmIGspID0gMDsKLSAgU1RETUVUSE9EXyhjaGFyLCBDVENvbnN0
KShpbnQgeCkgY29uc3QgPSAwOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19OwotCi0v
LyBDb25zdCBxdWFsaWZpZXJzIG9uIGFyZ3VtZW50cyB3ZXJlIG9uY2UgKGluY29ycmVjdGx5KSBj
b25zaWRlcmVkCi0vLyBzaWduaWZpY2FudCBpbiBkZXRlcm1pbmluZyB3aGV0aGVyIHR3byB2aXJ0
dWFsIGZ1bmN0aW9ucyBoYWQgdGhlIHNhbWUKLS8vIHNpZ25hdHVyZS4gVGhpcyB3YXMgZml4ZWQg
aW4gVmlzdWFsIFN0dWRpbyAyMDA4LiBIb3dldmVyLCB0aGUgY29tcGlsZXIKLS8vIHN0aWxsIGVt
aXRzIGEgd2FybmluZyB0aGF0IGFsZXJ0cyBhYm91dCB0aGlzIGNoYW5nZSBpbiBiZWhhdmlvci4K
LSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlIDogNDM3MykKLSNlbmRpZgotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb29JbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgTW9ja0ZvbygpIHt9Ci0KLSAgLy8gTWFrZXMgc3VyZSB0aGF0
IGEgbW9jayBmdW5jdGlvbiBwYXJhbWV0ZXIgY2FuIGJlIG5hbWVkLgotICBNT0NLX01FVEhPRDEo
Vm9pZFJldHVybmluZywgdm9pZChpbnQgbikpOyAgLy8gTk9MSU5UCi0KLSAgTU9DS19NRVRIT0Qw
KE51bGxhcnksIGludCgpKTsgIC8vIE5PTElOVAotCi0gIC8vIE1ha2VzIHN1cmUgdGhhdCBhIG1v
Y2sgZnVuY3Rpb24gcGFyYW1ldGVyIGNhbiBiZSB1bm5hbWVkLgotICBNT0NLX01FVEhPRDEoVW5h
cnksIGJvb2woaW50KSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QyKEJpbmFyeSwgbG9uZyhz
aG9ydCwgaW50KSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QxMChEZWNpbWFsLCBpbnQoYm9v
bCwgY2hhciwgc2hvcnQsIGludCwgbG9uZywgZmxvYXQsICAvLyBOT0xJTlQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlLCB1bnNpZ25lZCwgY2hhciosIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzdHIpKTsKLQotICBNT0NLX01FVEhPRDEoVGFrZXNOb25Db25zdFJlZmVyZW5jZSwgYm9v
bChpbnQmKSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QxKFRha2VzQ29uc3RSZWZlcmVuY2Us
IHN0ZDo6c3RyaW5nKGNvbnN0IGludCYpKTsKLQotI2lmZGVmIEdNT0NLX0FMTE9XU19DT05TVF9Q
QVJBTV9GVU5DVElPTlMKLSAgTU9DS19NRVRIT0QxKFRha2VzQ29uc3QsIGJvb2woY29uc3QgaW50
KSk7ICAvLyBOT0xJTlQKLSNlbmRpZgotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJl
dHVybiB0eXBlIGNhbiBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hLgotICBNT0NLX01FVEhPRDAo
UmV0dXJuVHlwZVdpdGhDb21tYSwgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4oKSk7Ci0gIE1P
Q0tfQ09OU1RfTUVUSE9EMShSZXR1cm5UeXBlV2l0aENvbW1hLAotICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4oaW50KSk7ICAvLyBOT0xJTlQKLQotICBNT0NL
X01FVEhPRDAoT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIsIGludCgpKTsgIC8vIE5PTElOVAot
ICBNT0NLX01FVEhPRDEoT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIsIGludChpbnQpKTsgIC8v
IE5PTElOVAotCi0gIE1PQ0tfTUVUSE9EMShPdmVybG9hZGVkT25Bcmd1bWVudFR5cGUsIGludChp
bnQpKTsgIC8vIE5PTElOVAotICBNT0NLX01FVEhPRDEoT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBl
LCBjaGFyKGNoYXIpKTsgIC8vIE5PTElOVAotCi0gIE1PQ0tfTUVUSE9EMChPdmVybG9hZGVkT25D
b25zdG5lc3MsIGludCgpKTsgIC8vIE5PTElOVAotICBNT0NLX0NPTlNUX01FVEhPRDAoT3Zlcmxv
YWRlZE9uQ29uc3RuZXNzLCBjaGFyKCkpOyAgLy8gTk9MSU5UCi0KLSAgTU9DS19NRVRIT0QxKFR5
cGVXaXRoSG9sZSwgaW50KGludCAoKikoKSkpOyAgLy8gTk9MSU5UCi0gIE1PQ0tfTUVUSE9EMShU
eXBlV2l0aENvbW1hLAotICAgICAgICAgICAgICAgaW50KGNvbnN0IHN0ZDo6bWFwPGludCwgc3Rk
OjpzdHJpbmc+JikpOyAgLy8gTk9MSU5UCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIE1PQ0tf
TUVUSE9EMF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBDVE51bGxhcnksIGludCgp
KTsKLSAgTU9DS19NRVRIT0QxX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIENUVW5h
cnksIGJvb2woaW50KSk7Ci0gIE1PQ0tfTUVUSE9EMTBfV0lUSF9DQUxMVFlQRShTVERNRVRIT0RD
QUxMVFlQRSwgQ1REZWNpbWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KGJv
b2wgYiwgY2hhciBjLCBzaG9ydCBkLCBpbnQgZSwgbG9uZyBmLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IGcsIGRvdWJsZSBoLCB1bnNpZ25lZCBpLCBjaGFyKiBqLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBrKSk7
Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMV9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBD
VENvbnN0LCBjaGFyKGludCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVy
biB0eXBlIGNhbiBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hLgotICBNT0NLX01FVEhPRDBfV0lU
SF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQ1RSZXR1cm5UeXBlV2l0aENvbW1hLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPigpKTsK
LSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRm9vKTsKLX07Ci0jaWZkZWYgX01TQ19WRVIKLSMgcHJh
Z21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZ1bmN0aW9uTW9ja2VyVGVzdCgp
IDogZm9vXygmbW9ja19mb29fKSB7fQotCi0gIEZvb0ludGVyZmFjZSogY29uc3QgZm9vXzsKLSAg
TW9ja0ZvbyBtb2NrX2Zvb187Ci19OwotCi0vLyBUZXN0cyBtb2NraW5nIGEgdm9pZC1yZXR1cm5p
bmcgZnVuY3Rpb24uCi1URVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc1ZvaWRGdW5jdGlv
bikgewotICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFZvaWRSZXR1cm5pbmcoTHQoMTAwKSkpOwot
ICBmb29fLT5Wb2lkUmV0dXJuaW5nKDApOwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGEgbnVsbGFy
eSBmdW5jdGlvbi4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzTnVsbGFyeUZ1bmN0
aW9uKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgTnVsbGFyeSgpKQotICAgICAgLldpbGxP
bmNlKERvRGVmYXVsdCgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0KLSAgRVhQRUNU
X0VRKDAsIGZvb18tPk51bGxhcnkoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb29fLT5OdWxsYXJ5KCkp
OwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGEgdW5hcnkgZnVuY3Rpb24uCi1URVNUX0YoRnVuY3Rp
b25Nb2NrZXJUZXN0LCBNb2Nrc1VuYXJ5RnVuY3Rpb24pIHsKLSAgRVhQRUNUX0NBTEwobW9ja19m
b29fLCBVbmFyeShFcSgyKSkpCi0gICAgICAuVGltZXMoMikKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4odHJ1ZSkpOwotCi0gIEVYUEVDVF9UUlVFKGZvb18tPlVuYXJ5KDIpKTsKLSAgRVhQRUNUX0ZB
TFNFKGZvb18tPlVuYXJ5KDIpKTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBhIGJpbmFyeSBmdW5j
dGlvbi4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzQmluYXJ5RnVuY3Rpb24pIHsK
LSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBCaW5hcnkoMiwgXykpCi0gICAgICAuV2lsbE9uY2Uo
UmV0dXJuKDMpKTsKLQotICBFWFBFQ1RfRVEoMywgZm9vXy0+QmluYXJ5KDIsIDEpKTsKLX0KLQot
Ly8gVGVzdHMgbW9ja2luZyBhIGRlY2ltYWwgZnVuY3Rpb24uCi1URVNUX0YoRnVuY3Rpb25Nb2Nr
ZXJUZXN0LCBNb2Nrc0RlY2ltYWxGdW5jdGlvbikgewotICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18s
IERlY2ltYWwodHJ1ZSwgJ2EnLCAwLCAwLCAxTCwgQTxmbG9hdD4oKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEx0KDEwMCksIDVVLCBOVUxMLCAiaGkiKSkKLSAgICAgIC5XaWxs
T25jZShSZXR1cm4oNSkpOwotCi0gIEVYUEVDVF9FUSg1LCBmb29fLT5EZWNpbWFsKHRydWUsICdh
JywgMCwgMCwgMSwgMCwgMCwgNSwgTlVMTCwgImhpIikpOwotfQotCi0vLyBUZXN0cyBtb2NraW5n
IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIG5vbi1jb25zdCByZWZlcmVuY2UuCi1URVNUX0YoRnVu
Y3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uV2l0aE5vbkNvbnN0UmVmZXJlbmNlQXJndW1l
bnQpIHsKLSAgaW50IGEgPSAwOwotICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFRha2VzTm9uQ29u
c3RSZWZlcmVuY2UoUmVmKGEpKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwotCi0g
IEVYUEVDVF9UUlVFKGZvb18tPlRha2VzTm9uQ29uc3RSZWZlcmVuY2UoYSkpOwotfQotCi0vLyBU
ZXN0cyBtb2NraW5nIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGNvbnN0IHJlZmVyZW5jZS4KLVRF
U1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzRnVuY3Rpb25XaXRoQ29uc3RSZWZlcmVuY2VB
cmd1bWVudCkgewotICBpbnQgYSA9IDA7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgVGFrZXND
b25zdFJlZmVyZW5jZShSZWYoYSkpKQotICAgICAgLldpbGxPbmNlKFJldHVybigiSGVsbG8iKSk7
Ci0KLSAgRVhQRUNUX0VRKCJIZWxsbyIsIGZvb18tPlRha2VzQ29uc3RSZWZlcmVuY2UoYSkpOwot
fQotCi0jaWZkZWYgR01PQ0tfQUxMT1dTX0NPTlNUX1BBUkFNX0ZVTkNUSU9OUwotLy8gVGVzdHMg
bW9ja2luZyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBjb25zdCB2YXJpYWJsZS4KLVRFU1RfRihG
dW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzRnVuY3Rpb25XaXRoQ29uc3RBcmd1bWVudCkgewotICBF
WFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFRha2VzQ29uc3QoTHQoMTApKSkKLSAgICAgIC5XaWxsT25j
ZShEb0RlZmF1bHQoKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGZvb18tPlRha2VzQ29uc3QoNSkpOwot
fQotI2VuZGlmICAvLyBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCi0KLS8vIFRl
c3RzIG1vY2tpbmcgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIG51bWJlciBvZiBhcmd1bWVu
dHMuCi1URVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uc092ZXJsb2FkZWRP
bkFyZ3VtZW50TnVtYmVyKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgT3ZlcmxvYWRlZE9u
QXJndW1lbnROdW1iZXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotICBFWFBFQ1Rf
Q0FMTChtb2NrX2Zvb18sIE92ZXJsb2FkZWRPbkFyZ3VtZW50TnVtYmVyKF8pKQotICAgICAgLldp
bGxPbmNlKFJldHVybigyKSk7Ci0KLSAgRVhQRUNUX0VRKDIsIGZvb18tPk92ZXJsb2FkZWRPbkFy
Z3VtZW50TnVtYmVyKDEpKTsKLSAgRVhQRUNUX0VRKDEsIGZvb18tPk92ZXJsb2FkZWRPbkFyZ3Vt
ZW50TnVtYmVyKCkpOwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGZ1bmN0aW9ucyBvdmVybG9hZGVk
IG9uIHRoZSB0eXBlcyBvZiBhcmd1bWVudC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1v
Y2tzRnVuY3Rpb25zT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKSB7Ci0gIEVYUEVDVF9DQUxMKG1v
Y2tfZm9vXywgT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKEFuPGludD4oKSkpCi0gICAgICAuV2ls
bE9uY2UoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBPdmVybG9hZGVkT25B
cmd1bWVudFR5cGUoVHlwZWRFcTxjaGFyPignYScpKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4o
J2InKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIGZvb18tPk92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZSgw
KSk7Ci0gIEVYUEVDVF9FUSgnYicsIGZvb18tPk92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZSgnYScp
KTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgY29u
c3QtbmVzcyBvZiB0aGlzIG9iamVjdC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tz
RnVuY3Rpb25zT3ZlcmxvYWRlZE9uQ29uc3RuZXNzT2ZUaGlzKSB7Ci0gIEVYUEVDVF9DQUxMKG1v
Y2tfZm9vXywgT3ZlcmxvYWRlZE9uQ29uc3RuZXNzKCkpOwotICBFWFBFQ1RfQ0FMTChDb25zdCht
b2NrX2Zvb18pLCBPdmVybG9hZGVkT25Db25zdG5lc3MoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4oJ2EnKSk7Ci0KLSAgRVhQRUNUX0VRKDAsIGZvb18tPk92ZXJsb2FkZWRPbkNvbnN0bmVzcygp
KTsKLSAgRVhQRUNUX0VRKCdhJywgQ29uc3QoKmZvb18pLk92ZXJsb2FkZWRPbkNvbnN0bmVzcygp
KTsKLX0KLQotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NSZXR1cm5UeXBlV2l0aENv
bW1hKSB7Ci0gIGNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IGFfbWFwOwotICBFWFBF
Q1RfQ0FMTChtb2NrX2Zvb18sIFJldHVyblR5cGVXaXRoQ29tbWEoKSkKLSAgICAgIC5XaWxsT25j
ZShSZXR1cm4oYV9tYXApKTsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBSZXR1cm5UeXBlV2l0
aENvbW1hKDQyKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oYV9tYXApKTsKLQotICBFWFBFQ1Rf
RVEoYV9tYXAsIG1vY2tfZm9vXy5SZXR1cm5UeXBlV2l0aENvbW1hKCkpOwotICBFWFBFQ1RfRVEo
YV9tYXAsIG1vY2tfZm9vXy5SZXR1cm5UeXBlV2l0aENvbW1hKDQyKSk7Ci19Ci0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0vLyBUZXN0cyBtb2NraW5nIGEgbnVsbGFyeSBmdW5jdGlvbiB3aXRoIGNh
bGx0eXBlLgotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NOdWxsYXJ5RnVuY3Rpb25X
aXRoQ2FsbFR5cGUpIHsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBDVE51bGxhcnkoKSkKLSAg
ICAgIC5XaWxsT25jZShSZXR1cm4oLTEpKQotICAgICAgLldpbGxPbmNlKFJldHVybigwKSk7Ci0K
LSAgRVhQRUNUX0VRKC0xLCBmb29fLT5DVE51bGxhcnkoKSk7Ci0gIEVYUEVDVF9FUSgwLCBmb29f
LT5DVE51bGxhcnkoKSk7Ci19Ci0KLS8vIFRlc3RzIG1vY2tpbmcgYSB1bmFyeSBmdW5jdGlvbiB3
aXRoIGNhbGx0eXBlLgotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NVbmFyeUZ1bmN0
aW9uV2l0aENhbGxUeXBlKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgQ1RVbmFyeShFcSgy
KSkpCi0gICAgICAuVGltZXMoMikKLSAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKGZhbHNlKSk7Ci0KLSAgRVhQRUNUX1RSVUUoZm9vXy0+Q1RVbmFy
eSgyKSk7Ci0gIEVYUEVDVF9GQUxTRShmb29fLT5DVFVuYXJ5KDIpKTsKLX0KLQotLy8gVGVzdHMg
bW9ja2luZyBhIGRlY2ltYWwgZnVuY3Rpb24gd2l0aCBjYWxsdHlwZS4KLVRFU1RfRihGdW5jdGlv
bk1vY2tlclRlc3QsIE1vY2tzRGVjaW1hbEZ1bmN0aW9uV2l0aENhbGxUeXBlKSB7Ci0gIEVYUEVD
VF9DQUxMKG1vY2tfZm9vXywgQ1REZWNpbWFsKHRydWUsICdhJywgMCwgMCwgMUwsIEE8ZmxvYXQ+
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx0KDEwMCksIDVVLCBOVUxM
LCAiaGkiKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMTApKTsKLQotICBFWFBFQ1RfRVEoMTAs
IGZvb18tPkNURGVjaW1hbCh0cnVlLCAnYScsIDAsIDAsIDEsIDAsIDAsIDUsIE5VTEwsICJoaSIp
KTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgY29u
c3QtbmVzcyBvZiB0aGlzIG9iamVjdC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tz
RnVuY3Rpb25zQ29uc3RGdW5jdGlvbldpdGhDYWxsVHlwZSkgewotICBFWFBFQ1RfQ0FMTChDb25z
dChtb2NrX2Zvb18pLCBDVENvbnN0KF8pKQotICAgICAgLldpbGxPbmNlKFJldHVybignYScpKTsK
LQotICBFWFBFQ1RfRVEoJ2EnLCBDb25zdCgqZm9vXykuQ1RDb25zdCgwKSk7Ci19Ci0KLVRFU1Rf
RihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzUmV0dXJuVHlwZVdpdGhDb21tYUFuZENhbGxUeXBl
KSB7Ci0gIGNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IGFfbWFwOwotICBFWFBFQ1Rf
Q0FMTChtb2NrX2Zvb18sIENUUmV0dXJuVHlwZVdpdGhDb21tYSgpKQotICAgICAgLldpbGxPbmNl
KFJldHVybihhX21hcCkpOwotCi0gIEVYUEVDVF9FUShhX21hcCwgbW9ja19mb29fLkNUUmV0dXJu
VHlwZVdpdGhDb21tYSgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLWNs
YXNzIE1vY2tCIHsKLSBwdWJsaWM6Ci0gIE1vY2tCKCkge30KLQotICBNT0NLX01FVEhPRDAoRG9C
LCB2b2lkKCkpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhNb2NrQik7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB3aXRoIG5vIEVYUEVDVF9D
QUxMKCkgcnVscyBjYW4gYmUgY2FsbGVkIGFueQotLy8gbnVtYmVyIG9mIHRpbWVzLgotVEVTVChF
eHBlY3RDYWxsVGVzdCwgVW5tZW50aW9uZWRGdW5jdGlvbkNhbkJlQ2FsbGVkQW55TnVtYmVyT2ZU
aW1lcykgewotICB7Ci0gICAgTW9ja0IgYjsKLSAgfQotCi0gIHsKLSAgICBNb2NrQiBiOwotICAg
IGIuRG9CKCk7Ci0gIH0KLQotICB7Ci0gICAgTW9ja0IgYjsKLSAgICBiLkRvQigpOwotICAgIGIu
RG9CKCk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgbW9ja2luZyB0ZW1wbGF0ZSBpbnRlcmZhY2VzLgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJsaWM6
Ci0gIHZpcnR1YWwgflN0YWNrSW50ZXJmYWNlKCkge30KLQotICAvLyBUZW1wbGF0ZSBwYXJhbWV0
ZXIgYXBwZWFycyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIuCi0gIHZpcnR1YWwgdm9pZCBQdXNoKGNv
bnN0IFQmIHZhbHVlKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQb3AoKSA9IDA7Ci0gIHZpcnR1YWwg
aW50IEdldFNpemUoKSBjb25zdCA9IDA7Ci0gIC8vIFRlbXBsYXRlIHBhcmFtZXRlciBhcHBlYXJz
IGluIGZ1bmN0aW9uIHJldHVybiB0eXBlLgotICB2aXJ0dWFsIGNvbnN0IFQmIEdldFRvcCgpIGNv
bnN0ID0gMDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTW9ja1N0YWNrIDog
cHVibGljIFN0YWNrSW50ZXJmYWNlPFQ+IHsKLSBwdWJsaWM6Ci0gIE1vY2tTdGFjaygpIHt9Ci0K
LSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChjb25zdCBUJiBlbGVtKSk7Ci0gIE1PQ0tfTUVU
SE9EMF9UKFBvcCwgdm9pZCgpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50
KCkpOyAgLy8gTk9MSU5UCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFRvcCwgY29uc3QgVCYo
KSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJuIHR5cGUgY2FuIGNvbnRh
aW4gdW5wcm90ZWN0ZWQgY29tbWEuCi0gIE1PQ0tfTUVUSE9EMF9UKFJldHVyblR5cGVXaXRoQ29t
bWEsIHN0ZDo6bWFwPGludCwgaW50PigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QxX1QoUmV0dXJu
VHlwZVdpdGhDb21tYSwgc3RkOjptYXA8aW50LCBpbnQ+KGludCkpOyAgLy8gTk9MSU5UCi0KLSBw
cml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tTdGFjayk7Ci19
OwotCi0vLyBUZXN0cyB0aGF0IHRlbXBsYXRlIG1vY2sgd29ya3MuCi1URVNUKFRlbXBsYXRlTW9j
a1Rlc3QsIFdvcmtzKSB7Ci0gIE1vY2tTdGFjazxpbnQ+IG1vY2s7Ci0KLSAgRVhQRUNUX0NBTEwo
bW9jaywgR2V0U2l6ZSgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigwKSkKLSAgICAgIC5XaWxs
T25jZShSZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKLSAgRVhQRUNUX0NB
TEwobW9jaywgUHVzaChfKSk7Ci0gIGludCBuID0gNTsKLSAgRVhQRUNUX0NBTEwobW9jaywgR2V0
VG9wKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKG4pKTsKLSAgRVhQRUNUX0NBTEwobW9j
aywgUG9wKCkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gIEVYUEVDVF9FUSgwLCBt
b2NrLkdldFNpemUoKSk7Ci0gIG1vY2suUHVzaCg1KTsKLSAgRVhQRUNUX0VRKDEsIG1vY2suR2V0
U2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDUsIG1vY2suR2V0VG9wKCkpOwotICBtb2NrLlBvcCgpOwot
ICBFWFBFQ1RfRVEoMCwgbW9jay5HZXRTaXplKCkpOwotfQotCi1URVNUKFRlbXBsYXRlTW9ja1Rl
c3QsIE1ldGhvZFdpdGhDb21tYUluUmV0dXJuVHlwZVdvcmtzKSB7Ci0gIE1vY2tTdGFjazxpbnQ+
IG1vY2s7Ci0KLSAgY29uc3Qgc3RkOjptYXA8aW50LCBpbnQ+IGFfbWFwOwotICBFWFBFQ1RfQ0FM
TChtb2NrLCBSZXR1cm5UeXBlV2l0aENvbW1hKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKGFf
bWFwKSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIFJldHVyblR5cGVXaXRoQ29tbWEoMSkpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKGFfbWFwKSk7Ci0KLSAgRVhQRUNUX0VRKGFfbWFwLCBtb2NrLlJl
dHVyblR5cGVXaXRoQ29tbWEoKSk7Ci0gIEVYUEVDVF9FUShhX21hcCwgbW9jay5SZXR1cm5UeXBl
V2l0aENvbW1hKDEpKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIFRlc3RzIG1vY2tp
bmcgdGVtcGxhdGUgaW50ZXJmYWNlcyB3aXRoIGNhbGx0eXBlLgotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlV2l0aENhbGxUeXBlIHsKLSBwdWJsaWM6Ci0gIHZp
cnR1YWwgflN0YWNrSW50ZXJmYWNlV2l0aENhbGxUeXBlKCkge30KLQotICAvLyBUZW1wbGF0ZSBw
YXJhbWV0ZXIgYXBwZWFycyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIuCi0gIFNURE1FVEhPRF8odm9p
ZCwgUHVzaCkoY29uc3QgVCYgdmFsdWUpID0gMDsKLSAgU1RETUVUSE9EXyh2b2lkLCBQb3ApKCkg
PSAwOwotICBTVERNRVRIT0RfKGludCwgR2V0U2l6ZSkoKSBjb25zdCA9IDA7Ci0gIC8vIFRlbXBs
YXRlIHBhcmFtZXRlciBhcHBlYXJzIGluIGZ1bmN0aW9uIHJldHVybiB0eXBlLgotICBTVERNRVRI
T0RfKGNvbnN0IFQmLCBHZXRUb3ApKCkgY29uc3QgPSAwOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBNb2NrU3RhY2tXaXRoQ2FsbFR5cGUgOiBwdWJsaWMgU3RhY2tJbnRlcmZh
Y2VXaXRoQ2FsbFR5cGU8VD4gewotIHB1YmxpYzoKLSAgTW9ja1N0YWNrV2l0aENhbGxUeXBlKCkg
e30KLQotICBNT0NLX01FVEhPRDFfVF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBQ
dXNoLCB2b2lkKGNvbnN0IFQmIGVsZW0pKTsKLSAgTU9DS19NRVRIT0QwX1RfV0lUSF9DQUxMVFlQ
RShTVERNRVRIT0RDQUxMVFlQRSwgUG9wLCB2b2lkKCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDBf
VF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBHZXRTaXplLCBpbnQoKSk7Ci0gIE1P
Q0tfQ09OU1RfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIEdldFRv
cCwgY29uc3QgVCYoKSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKE1vY2tTdGFja1dpdGhDYWxsVHlwZSk7Ci19OwotCi0vLyBUZXN0cyB0aGF0IHRlbXBs
YXRlIG1vY2sgd2l0aCBjYWxsdHlwZSB3b3Jrcy4KLVRFU1QoVGVtcGxhdGVNb2NrVGVzdFdpdGhD
YWxsVHlwZSwgV29ya3MpIHsKLSAgTW9ja1N0YWNrV2l0aENhbGxUeXBlPGludD4gbW9jazsKLQot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBHZXRTaXplKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDAp
KQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMCkp
OwotICBFWFBFQ1RfQ0FMTChtb2NrLCBQdXNoKF8pKTsKLSAgaW50IG4gPSA1OwotICBFWFBFQ1Rf
Q0FMTChtb2NrLCBHZXRUb3AoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYobikpOwotICBF
WFBFQ1RfQ0FMTChtb2NrLCBQb3AoKSkKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0KLSAg
RVhQRUNUX0VRKDAsIG1vY2suR2V0U2l6ZSgpKTsKLSAgbW9jay5QdXNoKDUpOwotICBFWFBFQ1Rf
RVEoMSwgbW9jay5HZXRTaXplKCkpOwotICBFWFBFQ1RfRVEoNSwgbW9jay5HZXRUb3AoKSk7Ci0g
IG1vY2suUG9wKCk7Ci0gIEVYUEVDVF9FUSgwLCBtb2NrLkdldFNpemUoKSk7Ci19Ci0jZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2RlZmluZSBNWV9NT0NLX01FVEhPRFMxXyBcCi0gICAg
TU9DS19NRVRIT0QwKE92ZXJsb2FkZWQsIHZvaWQoKSk7IFwKLSAgICBNT0NLX0NPTlNUX01FVEhP
RDEoT3ZlcmxvYWRlZCwgaW50KGludCBuKSk7IFwKLSAgICBNT0NLX01FVEhPRDIoT3ZlcmxvYWRl
ZCwgYm9vbChib29sIGYsIGludCBuKSkKLQotY2xhc3MgTW9ja092ZXJsb2FkZWRPbkFyZ051bWJl
ciB7Ci0gcHVibGljOgotICBNb2NrT3ZlcmxvYWRlZE9uQXJnTnVtYmVyKCkge30KLQotICBNWV9N
T0NLX01FVEhPRFMxXzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oTW9ja092ZXJsb2FkZWRPbkFyZ051bWJlcik7Ci19OwotCi1URVNUKE92ZXJsb2FkZWRN
b2NrTWV0aG9kVGVzdCwgQ2FuT3ZlcmxvYWRPbkFyZ051bWJlckluTWFjcm9Cb2R5KSB7Ci0gIE1v
Y2tPdmVybG9hZGVkT25BcmdOdW1iZXIgbW9jazsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3Zlcmxv
YWRlZCgpKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3ZlcmxvYWRlZCgxKSkuV2lsbE9uY2UoUmV0
dXJuKDIpKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3ZlcmxvYWRlZCh0cnVlLCAxKSkuV2lsbE9u
Y2UoUmV0dXJuKHRydWUpKTsKLQotICBtb2NrLk92ZXJsb2FkZWQoKTsKLSAgRVhQRUNUX0VRKDIs
IG1vY2suT3ZlcmxvYWRlZCgxKSk7Ci0gIEVYUEVDVF9UUlVFKG1vY2suT3ZlcmxvYWRlZCh0cnVl
LCAxKSk7Ci19Ci0KLSNkZWZpbmUgTVlfTU9DS19NRVRIT0RTMl8gXAotICAgIE1PQ0tfQ09OU1Rf
TUVUSE9EMShPdmVybG9hZGVkLCBpbnQoaW50IG4pKTsgXAotICAgIE1PQ0tfTUVUSE9EMShPdmVy
bG9hZGVkLCBpbnQoaW50IG4pKTsKLQotY2xhc3MgTW9ja092ZXJsb2FkZWRPbkNvbnN0bmVzcyB7
Ci0gcHVibGljOgotICBNb2NrT3ZlcmxvYWRlZE9uQ29uc3RuZXNzKCkge30KLQotICBNWV9NT0NL
X01FVEhPRFMyXzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oTW9ja092ZXJsb2FkZWRPbkNvbnN0bmVzcyk7Ci19OwotCi1URVNUKE92ZXJsb2FkZWRNb2Nr
TWV0aG9kVGVzdCwgQ2FuT3ZlcmxvYWRPbkNvbnN0bmVzc0luTWFjcm9Cb2R5KSB7Ci0gIE1vY2tP
dmVybG9hZGVkT25Db25zdG5lc3MgbW9jazsKLSAgY29uc3QgTW9ja092ZXJsb2FkZWRPbkNvbnN0
bmVzcyogY29uc3RfbW9jayA9ICZtb2NrOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBPdmVybG9hZGVk
KDEpKS5XaWxsT25jZShSZXR1cm4oMikpOwotICBFWFBFQ1RfQ0FMTCgqY29uc3RfbW9jaywgT3Zl
cmxvYWRlZCgxKSkuV2lsbE9uY2UoUmV0dXJuKDMpKTsKLQotICBFWFBFQ1RfRVEoMiwgbW9jay5P
dmVybG9hZGVkKDEpKTsKLSAgRVhQRUNUX0VRKDMsIGNvbnN0X21vY2stPk92ZXJsb2FkZWQoMSkp
OwotfQotCi1URVNUKE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yVm9pZE51bGxhcnkpIHsKLSAg
TW9ja0Z1bmN0aW9uPHZvaWQoKT4gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoKSk7Ci0g
IGZvby5DYWxsKCk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgV29ya3NGb3JOb25Wb2lk
TnVsbGFyeSkgewotICBNb2NrRnVuY3Rpb248aW50KCk+IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBDYWxsKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxPbmNlKFJl
dHVybigyKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb28uQ2FsbCgpKTsKLSAgRVhQRUNUX0VRKDIsIGZv
by5DYWxsKCkpOwotfQotCi1URVNUKE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yVm9pZFVuYXJ5
KSB7Ci0gIE1vY2tGdW5jdGlvbjx2b2lkKGludCk+IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBD
YWxsKDEpKTsKLSAgZm9vLkNhbGwoMSk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgV29y
a3NGb3JOb25Wb2lkQmluYXJ5KSB7Ci0gIE1vY2tGdW5jdGlvbjxpbnQoYm9vbCwgaW50KT4gZm9v
OwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoZmFsc2UsIDQyKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBDYWxsKHRydWUsIEdlKDEwMCkpKQotICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7Ci0gIEVY
UEVDVF9FUSgxLCBmb28uQ2FsbChmYWxzZSwgNDIpKTsKLSAgRVhQRUNUX0VRKDIsIGZvby5DYWxs
KGZhbHNlLCA0MikpOwotICBFWFBFQ1RfRVEoMywgZm9vLkNhbGwodHJ1ZSwgMTIwKSk7Ci19Ci0K
LVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgV29ya3NGb3IxMEFyZ3VtZW50cykgewotICBNb2NrRnVu
Y3Rpb248aW50KGJvb2wgYTAsIGNoYXIgYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsCi0gICAg
ICAgICAgICAgICAgICAgaW50IGE1LCBpbnQgYTYsIGNoYXIgYTcsIGludCBhOCwgYm9vbCBhOSk+
IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxsKF8sICdhJywgXywgXywgXywgXywgXywgXywg
XywgXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxPbmNlKFJldHVy
bigyKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb28uQ2FsbChmYWxzZSwgJ2EnLCAwLCAwLCAwLCAwLCAw
LCAnYicsIDAsIHRydWUpKTsKLSAgRVhQRUNUX0VRKDIsIGZvby5DYWxsKHRydWUsICdhJywgMCwg
MCwgMCwgMCwgMCwgJ2InLCAxLCBmYWxzZSkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5D
VElPTl8KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgQXNTdGRGdW5jdGlvbikgewotICBNb2NrRnVu
Y3Rpb248aW50KGludCk+IGZvbzsKLSAgYXV0byBjYWxsID0gW10oY29uc3Qgc3RkOjpmdW5jdGlv
bjxpbnQoaW50KT4gJmYsIGludCBpKSB7Ci0gICAgcmV0dXJuIGYoaSk7Ci0gIH07Ci0gIEVYUEVD
VF9DQUxMKGZvbywgQ2FsbCgxKSkuV2lsbE9uY2UoUmV0dXJuKC0xKSk7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgQ2FsbCgyKSkuV2lsbE9uY2UoUmV0dXJuKC0yKSk7Ci0gIEVYUEVDVF9FUSgtMSwgY2Fs
bChmb28uQXNTdGRGdW5jdGlvbigpLCAxKSk7Ci0gIEVYUEVDVF9FUSgtMiwgY2FsbChmb28uQXNT
dGRGdW5jdGlvbigpLCAyKSk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgQXNTdGRGdW5j
dGlvblJldHVybnNSZWZlcmVuY2UpIHsKLSAgTW9ja0Z1bmN0aW9uPGludCYoKT4gZm9vOwotICBp
bnQgdmFsdWUgPSAxOwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoKSkuV2lsbE9uY2UoUmV0dXJu
UmVmKHZhbHVlKSk7Ci0gIGludCYgcmVmID0gZm9vLkFzU3RkRnVuY3Rpb24oKSgpOwotICBFWFBF
Q1RfRVEoMSwgcmVmKTsKLSAgdmFsdWUgPSAyOwotICBFWFBFQ1RfRVEoMiwgcmVmKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLQotfSAgLy8gbmFtZXNwYWNlIGdtb2Nr
X2dlbmVyYXRlZF9mdW5jdGlvbl9tb2NrZXJzX3Rlc3QKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11
dGlsc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwt
dXRpbHNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhNTM1YTM0NjQx
NmUyNGEwOWZjM2VlNjZkOGU5OGVlZDRlZTQ2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRl
cm5hbC11dGlsc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdv
cmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMg
dGhlIGludGVybmFsIHV0aWxpdGllcy4KLQotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2Nr
LWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dt
b2NrLWludGVybmFsLXV0aWxzLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNw
YWNlIHsKLQotdXNpbmcgOjp0ZXN0aW5nOjp0dXBsZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hl
cjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnRUeXBlc0VxdWFsOwot
dXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWF0Y2hlclR1cGxlOwotdXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RnVuY3Rpb247Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJZ25vcmVk
VmFsdWU7Ci0KLS8vIFRlc3RzIHRoZSBNYXRjaGVyVHVwbGUgdGVtcGxhdGUgc3RydWN0LgotCi1U
RVNUKE1hdGNoZXJUdXBsZVRlc3QsIEZvclNpemUwKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPHR1cGxlPD4sIE1hdGNoZXJUdXBsZTx0dXBsZTw+ID46OnR5cGU+KCk7Ci19Ci0KLVRFU1Qo
TWF0Y2hlclR1cGxlVGVzdCwgRm9yU2l6ZTEpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
dHVwbGU8TWF0Y2hlcjxpbnQ+ID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoZXJU
dXBsZTx0dXBsZTxpbnQ+ID46OnR5cGU+KCk7Ci19Ci0KLVRFU1QoTWF0Y2hlclR1cGxlVGVzdCwg
Rm9yU2l6ZTIpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dHVwbGU8TWF0Y2hlcjxpbnQ+
LCBNYXRjaGVyPGNoYXI+ID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoZXJUdXBs
ZTx0dXBsZTxpbnQsIGNoYXI+ID46OnR5cGU+KCk7Ci19Ci0KLVRFU1QoTWF0Y2hlclR1cGxlVGVz
dCwgRm9yU2l6ZTUpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dHVwbGU8TWF0Y2hlcjxp
bnQ+LCBNYXRjaGVyPGNoYXI+LCBNYXRjaGVyPGJvb2w+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNYXRjaGVyPGRvdWJsZT4sIE1hdGNoZXI8Y2hhcio+ID4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hdGNoZXJUdXBsZTx0dXBsZTxpbnQsIGNoYXIsIGJvb2wsIGRvdWJs
ZSwgY2hhcio+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID46OnR5cGU+
KCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBGdW5jdGlvbiB0ZW1wbGF0ZSBzdHJ1Y3QuCi0KLVRFU1Qo
RnVuY3Rpb25UZXN0LCBOdWxsYXJ5KSB7Ci0gIHR5cGVkZWYgRnVuY3Rpb248aW50KCk+IEY7ICAv
LyBOT0xJTlQKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50LCBGOjpSZXN1bHQ+KCk7Ci0g
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPD4sIEY6OkFyZ3VtZW50VHVwbGU+KCk7Ci0g
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPD4sIEY6OkFyZ3VtZW50TWF0Y2hlclR1cGxl
PigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKCksIEY6Ok1ha2VSZXN1bHRWb2lk
PigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxJZ25vcmVkVmFsdWUoKSwgRjo6TWFrZVJl
c3VsdElnbm9yZWRWYWx1ZT4oKTsKLX0KLQotVEVTVChGdW5jdGlvblRlc3QsIFVuYXJ5KSB7Ci0g
IHR5cGVkZWYgRnVuY3Rpb248aW50KGJvb2wpPiBGOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGludCwgRjo6UmVzdWx0PigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxib29sLCBGOjpBcmd1bWVudDE+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxl
PGJvb2w+LCBGOjpBcmd1bWVudFR1cGxlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0
dXBsZTxNYXRjaGVyPGJvb2w+ID4sIEY6OkFyZ3VtZW50TWF0Y2hlclR1cGxlPigpOwotICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKGJvb2wpLCBGOjpNYWtlUmVzdWx0Vm9pZD4oKTsgIC8v
IE5PTElOVAotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxJZ25vcmVkVmFsdWUoYm9vbCksICAv
LyBOT0xJTlQKLSAgICAgIEY6Ok1ha2VSZXN1bHRJZ25vcmVkVmFsdWU+KCk7Ci19Ci0KLVRFU1Qo
RnVuY3Rpb25UZXN0LCBCaW5hcnkpIHsKLSAgdHlwZWRlZiBGdW5jdGlvbjxpbnQoYm9vbCwgY29u
c3QgbG9uZyYpPiBGOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwg
Rjo6UmVzdWx0PigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxib29sLCBGOjpBcmd1bWVu
dDE+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGxvbmcmLCBGOjpBcmd1bWVu
dDI+KCk7ICAvLyBOT0xJTlQKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dHVwbGU8Ym9vbCwg
Y29uc3QgbG9uZyY+LCBGOjpBcmd1bWVudFR1cGxlPigpOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPHR1cGxlPE1hdGNoZXI8Ym9vbD4sIE1hdGNoZXI8Y29uc3QgbG9uZyY+
ID4sICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRjo6QXJndW1lbnRNYXRj
aGVyVHVwbGU+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQoYm9vbCwgY29uc3Qg
bG9uZyYpLCBGOjpNYWtlUmVzdWx0Vm9pZD4oKTsgIC8vIE5PTElOVAotICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxJZ25vcmVkVmFsdWUoYm9vbCwgY29uc3QgbG9uZyYpLCAgLy8gTk9MSU5UCi0g
ICAgICBGOjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlPigpOwotfQotCi1URVNUKEZ1bmN0aW9uVGVz
dCwgTG9uZ0FyZ3VtZW50TGlzdCkgewotICB0eXBlZGVmIEZ1bmN0aW9uPGNoYXIoYm9vbCwgaW50
LCBjaGFyKiwgaW50JiwgY29uc3QgbG9uZyYpPiBGOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGNoYXIsIEY6OlJlc3VsdD4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8Ym9vbCwgRjo6QXJndW1lbnQxPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQs
IEY6OkFyZ3VtZW50Mj4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhciosIEY6OkFy
Z3VtZW50Mz4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgRjo6QXJndW1lbnQ0
PigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBsb25nJiwgRjo6QXJndW1lbnQ1
PigpOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPGJvb2wsIGlu
dCwgY2hhciosIGludCYsIGNvbnN0IGxvbmcmPiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBGOjpBcmd1bWVudFR1cGxlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDx0dXBsZTxNYXRjaGVyPGJvb2w+LCBNYXRjaGVyPGludD4sIE1hdGNoZXI8Y2hhcio+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaGVyPGludCY+LCBNYXRjaGVyPGNvbnN0
IGxvbmcmPiA+LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEY6OkFyZ3Vt
ZW50TWF0Y2hlclR1cGxlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKGJvb2ws
IGludCwgY2hhciosIGludCYsIGNvbnN0IGxvbmcmKSwgIC8vIE5PTElOVAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBGOjpNYWtlUmVzdWx0Vm9pZD4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8Ci0gICAgICBJZ25vcmVkVmFsdWUoYm9vbCwgaW50LCBjaGFyKiwgaW50JiwgY29uc3Qg
bG9uZyYpLCAgLy8gTk9MSU5UCi0gICAgICBGOjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlPigpOwot
fQotCi19ICAvLyBVbm5hbWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVz
dC9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgyMzQ4NThkMWQ2MDY2YWU4ODMyMzdkYmU1MDI2NDhhMTA1MDkxYTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9j
ay1nZW5lcmF0ZWQtbWF0Y2hlcnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyODYgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBH
b29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0v
LwotLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBidWlsdC1pbiBtYXRjaGVycyBnZW5lcmF0ZWQgYnkg
YSBzY3JpcHQuCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaCIK
LQotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNs
dWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotbmFtZXNwYWNlIHsK
LQotdXNpbmcgc3RkOjpsaXN0OwotdXNpbmcgc3RkOjptYXA7Ci11c2luZyBzdGQ6OnBhaXI7Ci11
c2luZyBzdGQ6OnNldDsKLXVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOwotdXNpbmcgc3RkOjp2ZWN0
b3I7Ci11c2luZyB0ZXN0aW5nOjpnZXQ7Ci11c2luZyB0ZXN0aW5nOjptYWtlX3R1cGxlOwotdXNp
bmcgdGVzdGluZzo6dHVwbGU7Ci11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGluZzo6QXJn
czsKLXVzaW5nIHRlc3Rpbmc6OkNvbnRhaW5zOwotdXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7
Ci11c2luZyB0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwotdXNpbmcgdGVzdGluZzo6RXE7Ci11
c2luZyB0ZXN0aW5nOjpHZTsKLXVzaW5nIHRlc3Rpbmc6Okd0OwotdXNpbmcgdGVzdGluZzo6TGU7
Ci11c2luZyB0ZXN0aW5nOjpMdDsKLXVzaW5nIHRlc3Rpbmc6Ok1ha2VNYXRjaGVyOwotdXNpbmcg
dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2lu
ZyB0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotdXNpbmcgdGVzdGluZzo6TmU7Ci11c2lu
ZyB0ZXN0aW5nOjpOb3Q7Ci11c2luZyB0ZXN0aW5nOjpQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6
UHJpbnRUb1N0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OlJlZjsKLXVzaW5nIHRlc3Rpbmc6OlN0YXRp
Y0Fzc2VydFR5cGVFcTsKLXVzaW5nIHRlc3Rpbmc6OlN0ckVxOwotdXNpbmcgdGVzdGluZzo6VmFs
dWU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJheU1hdGNoZXI7Ci0K
LS8vIFJldHVybnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBnaXZlbiBtYXRjaGVyLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBEZXNjcmliZShjb25zdCBNYXRjaGVyPFQ+JiBt
KSB7Ci0gIHN0cmluZ3N0cmVhbSBzczsKLSAgbS5EZXNjcmliZVRvKCZzcyk7Ci0gIHJldHVybiBz
cy5zdHIoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIG5lZ2F0aW9u
IG9mIHRoZSBnaXZlbiBtYXRjaGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmlu
ZyBEZXNjcmliZU5lZ2F0aW9uKGNvbnN0IE1hdGNoZXI8VD4mIG0pIHsKLSAgc3RyaW5nc3RyZWFt
IHNzOwotICBtLkRlc2NyaWJlTmVnYXRpb25Ubygmc3MpOwotICByZXR1cm4gc3Muc3RyKCk7Ci19
Ci0KLS8vIFJldHVybnMgdGhlIHJlYXNvbiB3aHkgeCBtYXRjaGVzLCBvciBkb2Vzbid0IG1hdGNo
LCBtLgotdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUeXBlLCB0eXBlbmFtZSBWYWx1ZT4KLXN0
ZDo6c3RyaW5nIEV4cGxhaW4oY29uc3QgTWF0Y2hlclR5cGUmIG0sIGNvbnN0IFZhbHVlJiB4KSB7
Ci0gIHN0cmluZ3N0cmVhbSBzczsKLSAgbS5FeHBsYWluTWF0Y2hSZXN1bHRUbyh4LCAmc3MpOwot
ICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLS8vIFRlc3RzIEFyZ3M8azAsIC4uLiwga24+KG0pLgot
Ci1URVNUKEFyZ3NUZXN0LCBBY2NlcHRzWmVyb1RlbXBsYXRlQXJnKSB7Ci0gIGNvbnN0IHR1cGxl
PGludCwgYm9vbD4gdCg1LCB0cnVlKTsKLSAgRVhQRUNUX1RIQVQodCwgQXJnczw+KEVxKHR1cGxl
PD4oKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8PihOZSh0dXBsZTw+KCkpKSkpOwot
fQotCi1URVNUKEFyZ3NUZXN0LCBBY2NlcHRzT25lVGVtcGxhdGVBcmcpIHsKLSAgY29uc3QgdHVw
bGU8aW50LCBib29sPiB0KDUsIHRydWUpOwotICBFWFBFQ1RfVEhBVCh0LCBBcmdzPDA+KEVxKG1h
a2VfdHVwbGUoNSkpKSk7Ci0gIEVYUEVDVF9USEFUKHQsIEFyZ3M8MT4oRXEobWFrZV90dXBsZSh0
cnVlKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8MT4oRXEobWFrZV90dXBsZShmYWxz
ZSkpKSkpOwotfQotCi1URVNUKEFyZ3NUZXN0LCBBY2NlcHRzVHdvVGVtcGxhdGVBcmdzKSB7Ci0g
IGNvbnN0IHR1cGxlPHNob3J0LCBpbnQsIGxvbmc+IHQoNCwgNSwgNkwpOyAgLy8gTk9MSU5UCi0K
LSAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8MCwgMT4oTHQoKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwg
KEFyZ3M8MSwgMj4oTHQoKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8MCwgMj4oR3Qo
KSkpKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgQWNjZXB0c1JlcGVhdGVkVGVtcGxhdGVBcmdzKSB7
Ci0gIGNvbnN0IHR1cGxlPHNob3J0LCBpbnQsIGxvbmc+IHQoNCwgNSwgNkwpOyAgLy8gTk9MSU5U
Ci0gIEVYUEVDVF9USEFUKHQsIChBcmdzPDAsIDA+KEVxKCkpKSk7Ci0gIEVYUEVDVF9USEFUKHQs
IE5vdChBcmdzPDEsIDE+KE5lKCkpKSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNEZWNy
ZWFzaW5nVGVtcGxhdGVBcmdzKSB7Ci0gIGNvbnN0IHR1cGxlPHNob3J0LCBpbnQsIGxvbmc+IHQo
NCwgNSwgNkwpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9USEFUKHQsIChBcmdzPDIsIDA+KEd0KCkp
KSk7Ci0gIEVYUEVDVF9USEFUKHQsIE5vdChBcmdzPDIsIDE+KEx0KCkpKSk7Ci19Ci0KLS8vIFRo
ZSBNQVRDSEVSKigpIG1hY3JvcyB0cmlnZ2VyIHdhcm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBm
b3JtYWwKLS8vIHBhcmFtZXRlcikgaW4gTVNWQyB3aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhl
eSBjYW5ub3QgYmUgZml4ZWQgaW4KLS8vIHRoZSBtYWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2Fy
bmluZ3MgYXJlIGdlbmVyYXRlZCB3aGVuIHRoZSBtYWNybwotLy8gaXMgZXhwYW5kZWQgYW5kIG1h
Y3JvIGV4cGFuc2lvbiBjYW5ub3QgY29udGFpbiAjcHJhZ21hLiAgVGhlcmVmb3JlCi0vLyB3ZSBz
dXBwcmVzcyB0aGVtIGhlcmUuCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocHVz
aCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKQotI2VuZGlmCi0KLU1BVENIRVIoU3Vt
SXNaZXJvLCAiIikgewotICByZXR1cm4gZ2V0PDA+KGFyZykgKyBnZXQ8MT4oYXJnKSArIGdldDwy
PihhcmcpID09IDA7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNNb3JlVGVtcGxhdGVBcmdz
VGhhbkFyaXR5T2ZPcmlnaW5hbFR1cGxlKSB7Ci0gIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUoLTEs
IDIpLCAoQXJnczwwLCAwLCAxPihTdW1Jc1plcm8oKSkpKTsKLSAgRVhQRUNUX1RIQVQobWFrZV90
dXBsZSgxLCAyKSwgTm90KEFyZ3M8MCwgMCwgMT4oU3VtSXNaZXJvKCkpKSk7Ci19Ci0KLVRFU1Qo
QXJnc1Rlc3QsIENhbkJlTmVzdGVkKSB7Ci0gIGNvbnN0IHR1cGxlPHNob3J0LCBpbnQsIGxvbmcs
IGludD4gdCg0LCA1LCA2TCwgNik7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8
MSwgMiwgMz4oQXJnczwxLCAyPihFcSgpKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8MCwg
MSwgMz4oQXJnczwwLCAyPihMdCgpKSkpKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgQ2FuTWF0Y2hU
dXBsZUJ5VmFsdWUpIHsKLSAgdHlwZWRlZiB0dXBsZTxjaGFyLCBpbnQsIGludD4gVHVwbGUzOwot
ICBjb25zdCBNYXRjaGVyPFR1cGxlMz4gbSA9IEFyZ3M8MSwgMj4oTHQoKSk7Ci0gIEVYUEVDVF9U
UlVFKG0uTWF0Y2hlcyhUdXBsZTMoJ2EnLCAxLCAyKSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKFR1cGxlMygnYicsIDIsIDIpKSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIENhbk1hdGNoVHVw
bGVCeVJlZmVyZW5jZSkgewotICB0eXBlZGVmIHR1cGxlPGNoYXIsIGNoYXIsIGludD4gVHVwbGUz
OwotICBjb25zdCBNYXRjaGVyPGNvbnN0IFR1cGxlMyY+IG0gPSBBcmdzPDAsIDE+KEx0KCkpOwot
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVwbGUzKCdhJywgJ2InLCAyKSkpOwotICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKFR1cGxlMygnYicsICdiJywgMikpKTsKLX0KLQotLy8gVmFsaWRhdGVz
IHRoYXQgYXJnIGlzIHByaW50ZWQgYXMgc3RyLgotTUFUQ0hFUl9QKFByaW50c0FzLCBzdHIsICIi
KSB7Ci0gIHJldHVybiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGFyZykgPT0gc3RyOwotfQotCi1U
RVNUKEFyZ3NUZXN0LCBBY2NlcHRzVGVuVGVtcGxhdGVBcmdzKSB7Ci0gIEVYUEVDVF9USEFUKG1h
a2VfdHVwbGUoMCwgMUwsIDIsIDNMLCA0LCA1LCA2LCA3LCA4LCA5KSwKLSAgICAgICAgICAgICAg
KEFyZ3M8OSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMD4oCi0gICAgICAgICAgICAgICAgICBQ
cmludHNBcygiKDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApIikpKSk7Ci0gIEVYUEVDVF9U
SEFUKG1ha2VfdHVwbGUoMCwgMUwsIDIsIDNMLCA0LCA1LCA2LCA3LCA4LCA5KSwKLSAgICAgICAg
ICAgICAgTm90KEFyZ3M8OSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMD4oCi0gICAgICAgICAg
ICAgICAgICAgICAgUHJpbnRzQXMoIigwLCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwKSIpKSkp
OwotfQotCi1URVNUKEFyZ3NUZXN0LCBEZXNjaXJiZXNTZWxmQ29ycmVjdGx5KSB7Ci0gIGNvbnN0
IE1hdGNoZXI8dHVwbGU8aW50LCBib29sLCBjaGFyPiA+IG0gPSBBcmdzPDIsIDA+KEx0KCkpOwot
ICBFWFBFQ1RfRVEoImFyZSBhIHR1cGxlIHdob3NlIGZpZWxkcyAoIzIsICMwKSBhcmUgYSBwYWly
IHdoZXJlICIKLSAgICAgICAgICAgICJ0aGUgZmlyc3QgPCB0aGUgc2Vjb25kIiwKLSAgICAgICAg
ICAgIERlc2NyaWJlKG0pKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgRGVzY2lyYmVzTmVzdGVkQXJn
c0NvcnJlY3RseSkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IHR1cGxlPGludCwgYm9vbCwgY2hh
ciwgaW50PiY+IG0gPQotICAgICAgQXJnczwwLCAyLCAzPihBcmdzPDIsIDA+KEx0KCkpKTsKLSAg
RVhQRUNUX0VRKCJhcmUgYSB0dXBsZSB3aG9zZSBmaWVsZHMgKCMwLCAjMiwgIzMpIGFyZSBhIHR1
cGxlICIKLSAgICAgICAgICAgICJ3aG9zZSBmaWVsZHMgKCMyLCAjMCkgYXJlIGEgcGFpciB3aGVy
ZSB0aGUgZmlyc3QgPCB0aGUgc2Vjb25kIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLX0K
LQotVEVTVChBcmdzVGVzdCwgRGVzY3JpYmVzTmVnYXRpb25Db3JyZWN0bHkpIHsKLSAgY29uc3Qg
TWF0Y2hlcjx0dXBsZTxpbnQsIGNoYXI+ID4gbSA9IEFyZ3M8MSwgMD4oR3QoKSk7Ci0gIEVYUEVD
VF9FUSgiYXJlIGEgdHVwbGUgd2hvc2UgZmllbGRzICgjMSwgIzApIGFyZW4ndCBhIHBhaXIgIgot
ICAgICAgICAgICAgIndoZXJlIHRoZSBmaXJzdCA+IHRoZSBzZWNvbmQiLAotICAgICAgICAgICAg
RGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEV4cGxhaW5zTWF0Y2hS
ZXN1bHRXaXRob3V0SW5uZXJFeHBsYW5hdGlvbikgewotICBjb25zdCBNYXRjaGVyPHR1cGxlPGJv
b2wsIGludCwgaW50PiA+IG0gPSBBcmdzPDEsIDI+KEVxKCkpOwotICBFWFBFQ1RfRVEoIndob3Nl
IGZpZWxkcyAoIzEsICMyKSBhcmUgKDQyLCA0MikiLAotICAgICAgICAgICAgRXhwbGFpbihtLCBt
YWtlX3R1cGxlKGZhbHNlLCA0MiwgNDIpKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZmllbGRzICgj
MSwgIzIpIGFyZSAoNDIsIDQzKSIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfdHVwbGUo
ZmFsc2UsIDQyLCA0MykpKTsKLX0KLQotLy8gRm9yIHRlc3RpbmcgQXJnczw+J3MgZXhwbGFuYXRp
b24uCi1jbGFzcyBMZXNzVGhhbk1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTx0dXBs
ZTxjaGFyLCBpbnQ+ID4gewotIHB1YmxpYzoKLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7fQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxh
aW4odHVwbGU8Y2hhciwgaW50PiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIGNvbnN0IGludCBk
aWZmID0gZ2V0PDA+KHZhbHVlKSAtIGdldDwxPih2YWx1ZSk7Ci0gICAgaWYgKGRpZmYgPiAwKSB7
Ci0gICAgICAqbGlzdGVuZXIgPDwgIndoZXJlIHRoZSBmaXJzdCB2YWx1ZSBpcyAiIDw8IGRpZmYK
LSAgICAgICAgICAgICAgICA8PCAiIG1vcmUgdGhhbiB0aGUgc2Vjb25kIjsKLSAgICB9Ci0gICAg
cmV0dXJuIGRpZmYgPCAwOwotICB9Ci19OwotCi1NYXRjaGVyPHR1cGxlPGNoYXIsIGludD4gPiBM
ZXNzVGhhbigpIHsKLSAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBMZXNzVGhhbk1hdGNoZXIpOwot
fQotCi1URVNUKEFyZ3NUZXN0LCBFeHBsYWluc01hdGNoUmVzdWx0V2l0aElubmVyRXhwbGFuYXRp
b24pIHsKLSAgY29uc3QgTWF0Y2hlcjx0dXBsZTxjaGFyLCBpbnQsIGludD4gPiBtID0gQXJnczww
LCAyPihMZXNzVGhhbigpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBmaWVsZHMgKCMwLCAjMikgYXJl
ICgnYScgKDk3LCAweDYxKSwgNDIpLCAiCi0gICAgICAgICAgICAid2hlcmUgdGhlIGZpcnN0IHZh
bHVlIGlzIDU1IG1vcmUgdGhhbiB0aGUgc2Vjb25kIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwg
bWFrZV90dXBsZSgnYScsIDQyLCA0MikpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBmaWVsZHMgKCMw
LCAjMikgYXJlICgnXFwwJywgNDMpIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV90dXBs
ZSgnXDAnLCA0MiwgNDMpKSk7Ci19Ci0KLS8vIEZvciB0ZXN0aW5nIEV4cGxhaW5NYXRjaFJlc3Vs
dFRvKCkuCi1jbGFzcyBHcmVhdGVyVGhhbk1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFj
ZTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdyZWF0ZXJUaGFuTWF0Y2hlcihpbnQgcmhz
KSA6IHJoc18ocmhzKSB7fQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3Ry
ZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgZ3JlYXRlciB0aGFuICIgPDwgcmhzXzsK
LSAgfQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IGxocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgewotICAgIGNvbnN0IGludCBkaWZmID0gbGhzIC0gcmhzXzsKLSAgICBpZiAoZGlmZiA+IDAp
IHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgIiA8PCBkaWZmIDw8ICIgbW9yZSB0aGFu
ICIgPDwgcmhzXzsKLSAgICB9IGVsc2UgaWYgKGRpZmYgPT0gMCkgewotICAgICAgKmxpc3RlbmVy
IDw8ICJ3aGljaCBpcyB0aGUgc2FtZSBhcyAiIDw8IHJoc187Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICpsaXN0ZW5lciA8PCAid2hpY2ggaXMgIiA8PCAtZGlmZiA8PCAiIGxlc3MgdGhhbiAiIDw8IHJo
c187Ci0gICAgfQotCi0gICAgcmV0dXJuIGxocyA+IHJoc187Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IGludCByaHNfOwotfTsKLQotTWF0Y2hlcjxpbnQ+IEdyZWF0ZXJUaGFuKGludCBuKSB7Ci0gIHJl
dHVybiBNYWtlTWF0Y2hlcihuZXcgR3JlYXRlclRoYW5NYXRjaGVyKG4pKTsKLX0KLQotLy8gVGVz
dHMgZm9yIEVsZW1lbnRzQXJlKCkuCi0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmli
ZUV4cGVjdGluZ05vRWxlbWVudCkgewotICBNYXRjaGVyPGNvbnN0IHZlY3RvcjxpbnQ+Jj4gbSA9
IEVsZW1lbnRzQXJlKCk7Ci0gIEVYUEVDVF9FUSgiaXMgZW1wdHkiLCBEZXNjcmliZShtKSk7Ci19
Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZUV4cGVjdGluZ09uZUVsZW1lbnQp
IHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBFbGVtZW50c0FyZShHdCg1KSk7Ci0gIEVY
UEVDVF9FUSgiaGFzIDEgZWxlbWVudCB0aGF0IGlzID4gNSIsIERlc2NyaWJlKG0pKTsKLX0KLQot
VEVTVChFbGVtZW50c0FyZVRlc3QsIENhbkRlc2NyaWJlRXhwZWN0aW5nTWFueUVsZW1lbnRzKSB7
Ci0gIE1hdGNoZXI8bGlzdDxzdGQ6OnN0cmluZz4gPiBtID0gRWxlbWVudHNBcmUoU3RyRXEoIm9u
ZSIpLCAidHdvIik7Ci0gIEVYUEVDVF9FUSgiaGFzIDIgZWxlbWVudHMgd2hlcmVcbiIKLSAgICAg
ICAgICAgICJlbGVtZW50ICMwIGlzIGVxdWFsIHRvIFwib25lXCIsXG4iCi0gICAgICAgICAgICAi
ZWxlbWVudCAjMSBpcyBlcXVhbCB0byBcInR3b1wiIiwgRGVzY3JpYmUobSkpOwotfQotCi1URVNU
KEVsZW1lbnRzQXJlVGVzdCwgQ2FuRGVzY3JpYmVOZWdhdGlvbk9mRXhwZWN0aW5nTm9FbGVtZW50
KSB7Ci0gIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gRWxlbWVudHNBcmUoKTsKLSAgRVhQRUNU
X0VRKCJpc24ndCBlbXB0eSIsIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi1URVNUKEVsZW1l
bnRzQXJlVGVzdCwgQ2FuRGVzY3JpYmVOZWdhdGlvbk9mRXhwZWN0aW5nT25lRWxtZW50KSB7Ci0g
IE1hdGNoZXI8Y29uc3QgbGlzdDxpbnQ+JiA+IG0gPSBFbGVtZW50c0FyZShHdCg1KSk7Ci0gIEVY
UEVDVF9FUSgiZG9lc24ndCBoYXZlIDEgZWxlbWVudCwgb3JcbiIKLSAgICAgICAgICAgICJlbGVt
ZW50ICMwIGlzbid0ID4gNSIsIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi1URVNUKEVsZW1l
bnRzQXJlVGVzdCwgQ2FuRGVzY3JpYmVOZWdhdGlvbk9mRXhwZWN0aW5nTWFueUVsZW1lbnRzKSB7
Ci0gIE1hdGNoZXI8Y29uc3QgbGlzdDxzdGQ6OnN0cmluZz4mPiBtID0gRWxlbWVudHNBcmUoIm9u
ZSIsICJ0d28iKTsKLSAgRVhQRUNUX0VRKCJkb2Vzbid0IGhhdmUgMiBlbGVtZW50cywgb3JcbiIK
LSAgICAgICAgICAgICJlbGVtZW50ICMwIGlzbid0IGVxdWFsIHRvIFwib25lXCIsIG9yXG4iCi0g
ICAgICAgICAgICAiZWxlbWVudCAjMSBpc24ndCBlcXVhbCB0byBcInR3b1wiIiwgRGVzY3JpYmVO
ZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBEb2VzTm90RXhwbGFpblRy
aXZpYWxNYXRjaCkgewotICBNYXRjaGVyPGNvbnN0IGxpc3Q8aW50PiYgPiBtID0gRWxlbWVudHNB
cmUoMSwgTmUoMikpOwotCi0gIGxpc3Q8aW50PiB0ZXN0X2xpc3Q7Ci0gIHRlc3RfbGlzdC5wdXNo
X2JhY2soMSk7Ci0gIHRlc3RfbGlzdC5wdXNoX2JhY2soMyk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhw
bGFpbihtLCB0ZXN0X2xpc3QpKTsgIC8vIE5vIG5lZWQgdG8gZXhwbGFpbiBhbnl0aGluZy4KLX0K
LQotVEVTVChFbGVtZW50c0FyZVRlc3QsIEV4cGxhaW5zTm9uVHJpdmlhbE1hdGNoKSB7Ci0gIE1h
dGNoZXI8Y29uc3QgdmVjdG9yPGludD4mID4gbSA9Ci0gICAgICBFbGVtZW50c0FyZShHcmVhdGVy
VGhhbigxKSwgMCwgR3JlYXRlclRoYW4oMikpOwotCi0gIGNvbnN0IGludCBhW10gPSB7IDEwLCAw
LCAxMDAgfTsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJ
WkVfKGEpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBlbGVtZW50ICMwIG1hdGNoZXMsIHdoaWNoIGlz
IDkgbW9yZSB0aGFuIDEsXG4iCi0gICAgICAgICAgICAiYW5kIHdob3NlIGVsZW1lbnQgIzIgbWF0
Y2hlcywgd2hpY2ggaXMgOTggbW9yZSB0aGFuIDIiLAotICAgICAgICAgICAgRXhwbGFpbihtLCB0
ZXN0X3ZlY3RvcikpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgQ2FuRXhwbGFpbk1pc21h
dGNoV3JvbmdTaXplKSB7Ci0gIE1hdGNoZXI8Y29uc3QgbGlzdDxpbnQ+JiA+IG0gPSBFbGVtZW50
c0FyZSgxLCAzKTsKLQotICBsaXN0PGludD4gdGVzdF9saXN0OwotICAvLyBObyBuZWVkIHRvIGV4
cGxhaW4gd2hlbiB0aGUgY29udGFpbmVyIGlzIGVtcHR5LgotICBFWFBFQ1RfRVEoIiIsIEV4cGxh
aW4obSwgdGVzdF9saXN0KSk7Ci0KLSAgdGVzdF9saXN0LnB1c2hfYmFjaygxKTsKLSAgRVhQRUNU
X0VRKCJ3aGljaCBoYXMgMSBlbGVtZW50IiwgRXhwbGFpbihtLCB0ZXN0X2xpc3QpKTsKLX0KLQot
VEVTVChFbGVtZW50c0FyZVRlc3QsIENhbkV4cGxhaW5NaXNtYXRjaFJpZ2h0U2l6ZSkgewotICBN
YXRjaGVyPGNvbnN0IHZlY3RvcjxpbnQ+JiA+IG0gPSBFbGVtZW50c0FyZSgxLCBHcmVhdGVyVGhh
big1KSk7Ci0KLSAgdmVjdG9yPGludD4gdjsKLSAgdi5wdXNoX2JhY2soMik7Ci0gIHYucHVzaF9i
YWNrKDEpOwotICBFWFBFQ1RfRVEoIndob3NlIGVsZW1lbnQgIzAgZG9lc24ndCBtYXRjaCIsIEV4
cGxhaW4obSwgdikpOwotCi0gIHZbMF0gPSAxOwotICBFWFBFQ1RfRVEoIndob3NlIGVsZW1lbnQg
IzEgZG9lc24ndCBtYXRjaCwgd2hpY2ggaXMgNCBsZXNzIHRoYW4gNSIsCi0gICAgICAgICAgICBF
eHBsYWluKG0sIHYpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNPbmVFbGVt
ZW50VmVjdG9yKSB7Ci0gIHZlY3RvcjxzdGQ6OnN0cmluZz4gdGVzdF92ZWN0b3I7Ci0gIHRlc3Rf
dmVjdG9yLnB1c2hfYmFjaygidGVzdCBzdHJpbmciKTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3Zl
Y3RvciwgRWxlbWVudHNBcmUoU3RyRXEoInRlc3Qgc3RyaW5nIikpKTsKLX0KLQotVEVTVChFbGVt
ZW50c0FyZVRlc3QsIE1hdGNoZXNPbmVFbGVtZW50TGlzdCkgewotICBsaXN0PHN0ZDo6c3RyaW5n
PiB0ZXN0X2xpc3Q7Ci0gIHRlc3RfbGlzdC5wdXNoX2JhY2soInRlc3Qgc3RyaW5nIik7Ci0KLSAg
RVhQRUNUX1RIQVQodGVzdF9saXN0LCBFbGVtZW50c0FyZSgidGVzdCBzdHJpbmciKSk7Ci19Ci0K
LVRFU1QoRWxlbWVudHNBcmVUZXN0LCBNYXRjaGVzVGhyZWVFbGVtZW50VmVjdG9yKSB7Ci0gIHZl
Y3RvcjxzdGQ6OnN0cmluZz4gdGVzdF92ZWN0b3I7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygi
b25lIik7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidHdvIik7Ci0gIHRlc3RfdmVjdG9yLnB1
c2hfYmFjaygidGhyZWUiKTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNB
cmUoIm9uZSIsIFN0ckVxKCJ0d28iKSwgXykpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwg
TWF0Y2hlc09uZUVsZW1lbnRFcU1hdGNoZXIpIHsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3I7
Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjayg0KTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3Rv
ciwgRWxlbWVudHNBcmUoRXEoNCkpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNo
ZXNPbmVFbGVtZW50QW55TWF0Y2hlcikgewotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcjsKLSAg
dGVzdF92ZWN0b3IucHVzaF9iYWNrKDQpOwotCi0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBF
bGVtZW50c0FyZShfKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBNYXRjaGVzT25lRWxl
bWVudFZhbHVlKSB7Ci0gIHZlY3RvcjxpbnQ+IHRlc3RfdmVjdG9yOwotICB0ZXN0X3ZlY3Rvci5w
dXNoX2JhY2soNCk7Ci0KLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlKDQp
KTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNUaHJlZUVsZW1lbnRzTWl4ZWRN
YXRjaGVycykgewotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcjsKLSAgdGVzdF92ZWN0b3IucHVz
aF9iYWNrKDEpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soMik7Ci0gIHRlc3RfdmVjdG9yLnB1
c2hfYmFjaygzKTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNBcmUoMSwg
RXEoMiksIF8pKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNUZW5FbGVtZW50
VmVjdG9yKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgs
IDkgfTsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVf
KGEpKTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwKLSAgICAgICAgICAgICAgLy8gVGhl
IGVsZW1lbnQgbGlzdCBjYW4gY29udGFpbiB2YWx1ZXMgYW5kL29yIG1hdGNoZXJzCi0gICAgICAg
ICAgICAgIC8vIG9mIGRpZmZlcmVudCB0eXBlcy4KLSAgICAgICAgICAgICAgRWxlbWVudHNBcmUo
MCwgR2UoMCksIF8sIDMsIDQsIE5lKDIpLCBFcSg2KSwgNywgOCwgXykpOwotfQotCi1URVNUKEVs
ZW1lbnRzQXJlVGVzdCwgRG9lc05vdE1hdGNoV3JvbmdTaXplKSB7Ci0gIHZlY3RvcjxzdGQ6OnN0
cmluZz4gdGVzdF92ZWN0b3I7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidGVzdCBzdHJpbmci
KTsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0ZXN0IHN0cmluZyIpOwotCi0gIE1hdGNoZXI8
dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IG0gPSBFbGVtZW50c0FyZShTdHJFcSgidGVzdCBzdHJpbmci
KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF92ZWN0b3IpKTsKLX0KLQotVEVTVChF
bGVtZW50c0FyZVRlc3QsIERvZXNOb3RNYXRjaFdyb25nVmFsdWUpIHsKLSAgdmVjdG9yPHN0ZDo6
c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJvdGhlciBzdHJp
bmciKTsKLQotICBNYXRjaGVyPHZlY3RvcjxzdGQ6OnN0cmluZz4gPiBtID0gRWxlbWVudHNBcmUo
U3RyRXEoInRlc3Qgc3RyaW5nIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHRlc3RfdmVj
dG9yKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBEb2VzTm90TWF0Y2hXcm9uZ09yZGVy
KSB7Ci0gIHZlY3RvcjxzdGQ6OnN0cmluZz4gdGVzdF92ZWN0b3I7Ci0gIHRlc3RfdmVjdG9yLnB1
c2hfYmFjaygib25lIik7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidGhyZWUiKTsKLSAgdGVz
dF92ZWN0b3IucHVzaF9iYWNrKCJ0d28iKTsKLQotICBNYXRjaGVyPHZlY3RvcjxzdGQ6OnN0cmlu
Zz4gPiBtID0KLSAgICAgIEVsZW1lbnRzQXJlKFN0ckVxKCJvbmUiKSwgU3RyRXEoInR3byIpLCBT
dHJFcSgidGhyZWUiKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF92ZWN0b3IpKTsK
LX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIFdvcmtzRm9yTmVzdGVkQ29udGFpbmVyKSB7Ci0g
IGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9IHsKLSAgICAiSGkiLAotICAgICJ3b3JsZCIKLSAgfTsK
LQotICB2ZWN0b3I8bGlzdDxjaGFyPiA+IG5lc3RlZDsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBHVEVTVF9BUlJBWV9TSVpFXyhzdHJpbmdzKTsgaSsrKSB7Ci0gICAgbmVzdGVkLnB1c2hfYmFj
ayhsaXN0PGNoYXI+KHN0cmluZ3NbaV0sIHN0cmluZ3NbaV0gKyBzdHJsZW4oc3RyaW5nc1tpXSkp
KTsKLSAgfQotCi0gIEVYUEVDVF9USEFUKG5lc3RlZCwgRWxlbWVudHNBcmUoRWxlbWVudHNBcmUo
J0gnLCBOZSgnZScpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50
c0FyZSgndycsICdvJywgXywgXywgJ2QnKSkpOwotICBFWFBFQ1RfVEhBVChuZXN0ZWQsIE5vdChF
bGVtZW50c0FyZShFbGVtZW50c0FyZSgnSCcsICdlJyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKCd3JywgJ28nLCBfLCBfLCAnZCcpKSkpOwotfQot
Ci1URVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoQnlSZWZFbGVtZW50TWF0Y2hlcnMpIHsK
LSAgaW50IGFbXSA9IHsgMCwgMSwgMiB9OwotICB2ZWN0b3I8aW50PiB2KGEsIGEgKyBHVEVTVF9B
UlJBWV9TSVpFXyhhKSk7Ci0KLSAgRVhQRUNUX1RIQVQodiwgRWxlbWVudHNBcmUoUmVmKHZbMF0p
LCBSZWYodlsxXSksIFJlZih2WzJdKSkpOwotICBFWFBFQ1RfVEhBVCh2LCBOb3QoRWxlbWVudHNB
cmUoUmVmKHZbMF0pLCBSZWYodlsxXSksIFJlZihhWzJdKSkpKTsKLX0KLQotVEVTVChFbGVtZW50
c0FyZVRlc3QsIFdvcmtzV2l0aENvbnRhaW5lclBvaW50ZXJVc2luZ1BvaW50ZWUpIHsKLSAgaW50
IGFbXSA9IHsgMCwgMSwgMiB9OwotICB2ZWN0b3I8aW50PiB2KGEsIGEgKyBHVEVTVF9BUlJBWV9T
SVpFXyhhKSk7Ci0KLSAgRVhQRUNUX1RIQVQoJnYsIFBvaW50ZWUoRWxlbWVudHNBcmUoMCwgMSwg
XykpKTsKLSAgRVhQRUNUX1RIQVQoJnYsIE5vdChQb2ludGVlKEVsZW1lbnRzQXJlKDAsIF8sIDMp
KSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoTmF0aXZlQXJyYXlQYXNz
ZWRCeVJlZmVyZW5jZSkgewotICBpbnQgYXJyYXlbXSA9IHsgMCwgMSwgMiB9OwotICBFWFBFQ1Rf
VEhBVChhcnJheSwgRWxlbWVudHNBcmUoMCwgMSwgXykpOwotICBFWFBFQ1RfVEhBVChhcnJheSwg
Tm90KEVsZW1lbnRzQXJlKDEsIF8sIF8pKSk7Ci0gIEVYUEVDVF9USEFUKGFycmF5LCBOb3QoRWxl
bWVudHNBcmUoMCwgXykpKTsKLX0KLQotY2xhc3MgTmF0aXZlQXJyYXlQYXNzZWRBc1BvaW50ZXJB
bmRTaXplIHsKLSBwdWJsaWM6Ci0gIE5hdGl2ZUFycmF5UGFzc2VkQXNQb2ludGVyQW5kU2l6ZSgp
IHt9Ci0KLSAgTU9DS19NRVRIT0QyKEhlbHBlciwgdm9pZChpbnQqIGFycmF5LCBpbnQgc2l6ZSkp
OwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOYXRpdmVB
cnJheVBhc3NlZEFzUG9pbnRlckFuZFNpemUpOwotfTsKLQotVEVTVChFbGVtZW50c0FyZVRlc3Qs
IFdvcmtzV2l0aE5hdGl2ZUFycmF5UGFzc2VkQXNQb2ludGVyQW5kU2l6ZSkgewotICBpbnQgYXJy
YXlbXSA9IHsgMCwgMSB9OwotICA6OnRlc3Rpbmc6OnR1cGxlPGludCosIHNpemVfdD4gYXJyYXlf
YXNfdHVwbGUoYXJyYXksIDIpOwotICBFWFBFQ1RfVEhBVChhcnJheV9hc190dXBsZSwgRWxlbWVu
dHNBcmUoMCwgMSkpOwotICBFWFBFQ1RfVEhBVChhcnJheV9hc190dXBsZSwgTm90KEVsZW1lbnRz
QXJlKDApKSk7Ci0KLSAgTmF0aXZlQXJyYXlQYXNzZWRBc1BvaW50ZXJBbmRTaXplIGhlbHBlcjsK
LSAgRVhQRUNUX0NBTEwoaGVscGVyLCBIZWxwZXIoXywgXykpCi0gICAgICAuV2l0aChFbGVtZW50
c0FyZSgwLCAxKSk7Ci0gIGhlbHBlci5IZWxwZXIoYXJyYXksIDIpOwotfQotCi1URVNUKEVsZW1l
bnRzQXJlVGVzdCwgV29ya3NXaXRoVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgewotICBjb25z
dCBjaGFyIGEyW11bM10gPSB7ICJoaSIsICJsbyIgfTsKLSAgRVhQRUNUX1RIQVQoYTIsIEVsZW1l
bnRzQXJlKEVsZW1lbnRzQXJlKCdoJywgJ2knLCAnXDAnKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVsZW1lbnRzQXJlKCdsJywgJ28nLCAnXDAnKSkpOwotICBFWFBFQ1RfVEhBVChh
MiwgRWxlbWVudHNBcmUoU3RyRXEoImhpIiksIFN0ckVxKCJsbyIpKSk7Ci0gIEVYUEVDVF9USEFU
KGEyLCBFbGVtZW50c0FyZShOb3QoRWxlbWVudHNBcmUoJ2gnLCAnbycsICdcMCcpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKCdsJywgJ28nLCAnXDAnKSkpOwot
fQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgQWNjZXB0c1N0cmluZ0xpdGVyYWwpIHsKLSAgc3Rk
OjpzdHJpbmcgYXJyYXlbXSA9IHsiaGkiLCAib25lIiwgInR3byJ9OwotICBFWFBFQ1RfVEhBVChh
cnJheSwgRWxlbWVudHNBcmUoImhpIiwgIm9uZSIsICJ0d28iKSk7Ci0gIEVYUEVDVF9USEFUKGFy
cmF5LCBOb3QoRWxlbWVudHNBcmUoImhpIiwgIm9uZSIsICJ0b28iKSkpOwotfQotCi0jaWZuZGVm
IF9NU0NfVkVSCi0KLS8vIFRoZSBmb2xsb3dpbmcgdGVzdCBwYXNzZXMgYSB2YWx1ZSBvZiB0eXBl
IGNvbnN0IGNoYXJbXSB0byBhCi0vLyBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0IGV4cGVjdHMgY29u
c3QgVCYuICBTb21lIHZlcnNpb25zIG9mIE1TVkMKLS8vIGdlbmVyYXRlcyBhIGNvbXBpbGVyIGVy
cm9yIEMyNjY1IGZvciB0aGF0LiAgV2UgYmVsaWV2ZSBpdCdzIGEgYnVnCi0vLyBpbiBNU1ZDLiAg
VGhlcmVmb3JlIHRoaXMgdGVzdCBpcyAjaWYtZWQgb3V0IGZvciBNU1ZDLgotCi0vLyBEZWNsYXJl
ZCBoZXJlIHdpdGggdGhlIHNpemUgdW5rbm93bi4gIERlZmluZWQgQUZURVIgdGhlIGZvbGxvd2lu
ZyB0ZXN0LgotZXh0ZXJuIGNvbnN0IGNoYXIga0hpW107Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0
LCBBY2NlcHRzQXJyYXlXaXRoVW5rbm93blNpemUpIHsKLSAgLy8gVGhlIHNpemUgb2Yga0hpIGlz
IG5vdCBrbm93biBpbiB0aGlzIHRlc3QsIGJ1dCBFbGVtZW50c0FyZSgpIHNob3VsZAotICAvLyBz
dGlsbCBhY2NlcHQgaXQuCi0KLSAgc3RkOjpzdHJpbmcgYXJyYXkxW10gPSB7ImhpIn07Ci0gIEVY
UEVDVF9USEFUKGFycmF5MSwgRWxlbWVudHNBcmUoa0hpKSk7Ci0KLSAgc3RkOjpzdHJpbmcgYXJy
YXkyW10gPSB7ImhvIn07Ci0gIEVYUEVDVF9USEFUKGFycmF5MiwgTm90KEVsZW1lbnRzQXJlKGtI
aSkpKTsKLX0KLQotY29uc3QgY2hhciBrSGlbXSA9ICJoaSI7Ci0KLSNlbmRpZiAgLy8gX01TQ19W
RVIKLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1ha2VzQ29weU9mQXJndW1lbnRzKSB7Ci0gIGlu
dCB4ID0gMTsKLSAgaW50IHkgPSAyOwotICAvLyBUaGlzIHNob3VsZCBtYWtlIGEgY29weSBvZiB4
IGFuZCB5LgotICA6OnRlc3Rpbmc6OmludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8dGVzdGlu
Zzo6dHVwbGU8aW50LCBpbnQ+ID4KLSAgICAgICAgICBwb2x5bW9ycGhpY19tYXRjaGVyID0gRWxl
bWVudHNBcmUoeCwgeSk7Ci0gIC8vIENoYW5naW5nIHggYW5kIHkgbm93IHNob3VsZG4ndCBhZmZl
Y3QgdGhlIG1lYW5pbmcgb2YgdGhlIGFib3ZlIG1hdGNoZXIuCi0gIHggPSB5ID0gMDsKLSAgY29u
c3QgaW50IGFycmF5MVtdID0geyAxLCAyIH07Ci0gIEVYUEVDVF9USEFUKGFycmF5MSwgcG9seW1v
cnBoaWNfbWF0Y2hlcik7Ci0gIGNvbnN0IGludCBhcnJheTJbXSA9IHsgMCwgMCB9OwotICBFWFBF
Q1RfVEhBVChhcnJheTIsIE5vdChwb2x5bW9ycGhpY19tYXRjaGVyKSk7Ci19Ci0KLQotLy8gVGVz
dHMgZm9yIEVsZW1lbnRzQXJlQXJyYXkoKS4gIFNpbmNlIEVsZW1lbnRzQXJlQXJyYXkoKSBzaGFy
ZXMgbW9zdAotLy8gb2YgdGhlIGltcGxlbWVudGF0aW9uIHdpdGggRWxlbWVudHNBcmUoKSwgd2Ug
ZG9uJ3QgdGVzdCBpdCBhcwotLy8gdGhvcm91Z2hseSBoZXJlLgotCi1URVNUKEVsZW1lbnRzQXJl
QXJyYXlUZXN0LCBDYW5CZUNyZWF0ZWRXaXRoVmFsdWVBcnJheSkgewotICBjb25zdCBpbnQgYVtd
ID0geyAxLCAyLCAzIH07Ci0KLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNU
X0FSUkFZX1NJWkVfKGEpKTsKLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJl
QXJyYXkoYSkpOwotCi0gIHRlc3RfdmVjdG9yWzJdID0gMDsKLSAgRVhQRUNUX1RIQVQodGVzdF92
ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5KGEpKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVB
cnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhBcnJheVNpemUpIHsKLSAgY29uc3QgY2hhciogYVtd
ID0geyAib25lIiwgInR3byIsICJ0aHJlZSIgfTsKLQotICB2ZWN0b3I8c3RkOjpzdHJpbmc+IHRl
c3RfdmVjdG9yKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIEVYUEVDVF9USEFUKHRl
c3RfdmVjdG9yLCBFbGVtZW50c0FyZUFycmF5KGEsIEdURVNUX0FSUkFZX1NJWkVfKGEpKSk7Ci0K
LSAgY29uc3QgY2hhcioqIHAgPSBhOwotICB0ZXN0X3ZlY3RvclswXSA9ICIxIjsKLSAgRVhQRUNU
X1RIQVQodGVzdF92ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5KHAsIEdURVNUX0FSUkFZX1NJ
WkVfKGEpKSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBDYW5CZUNyZWF0ZWRX
aXRob3V0QXJyYXlTaXplKSB7Ci0gIGNvbnN0IGNoYXIqIGFbXSA9IHsgIm9uZSIsICJ0d28iLCAi
dGhyZWUiIH07Ci0KLSAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RF
U1RfQVJSQVlfU0laRV8oYSkpOwotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNB
cmVBcnJheShhKSk7Ci0KLSAgdGVzdF92ZWN0b3JbMF0gPSAiMSI7Ci0gIEVYUEVDVF9USEFUKHRl
c3RfdmVjdG9yLCBOb3QoRWxlbWVudHNBcmVBcnJheShhKSkpOwotfQotCi1URVNUKEVsZW1lbnRz
QXJlQXJyYXlUZXN0LCBDYW5CZUNyZWF0ZWRXaXRoTWF0Y2hlckFycmF5KSB7Ci0gIGNvbnN0IE1h
dGNoZXI8c3RkOjpzdHJpbmc+IGtNYXRjaGVyQXJyYXlbXSA9IHtTdHJFcSgib25lIiksIFN0ckVx
KCJ0d28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0ckVxKCJ0aHJlZSIpfTsKLQotICB2ZWN0b3I8c3RkOjpzdHJpbmc+IHRlc3RfdmVjdG9yOwot
ICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soIm9uZSIpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2so
InR3byIpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soInRocmVlIik7Ci0gIEVYUEVDVF9USEFU
KHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZUFycmF5KGtNYXRjaGVyQXJyYXkpKTsKLQotICB0ZXN0
X3ZlY3Rvci5wdXNoX2JhY2soInRocmVlIik7Ci0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBO
b3QoRWxlbWVudHNBcmVBcnJheShrTWF0Y2hlckFycmF5KSkpOwotfQotCi1URVNUKEVsZW1lbnRz
QXJlQXJyYXlUZXN0LCBDYW5CZUNyZWF0ZWRXaXRoVmVjdG9yKSB7Ci0gIGNvbnN0IGludCBhW10g
PSB7IDEsIDIsIDMgfTsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FS
UkFZX1NJWkVfKGEpKTsKLSAgY29uc3QgdmVjdG9yPGludD4gZXhwZWN0ZWQoYSwgYSArIEdURVNU
X0FSUkFZX1NJWkVfKGEpKTsKLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJl
QXJyYXkoZXhwZWN0ZWQpKTsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKDQpOwotICBFWFBFQ1Rf
VEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Ci19Ci0K
LSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLVRFU1QoRWxlbWVudHNBcmVB
cnJheVRlc3QsIFRha2VzSW5pdGlhbGl6ZXJMaXN0KSB7Ci0gIGNvbnN0IGludCBhWzVdID0geyAx
LCAyLCAzLCA0LCA1IH07Ci0gIEVYUEVDVF9USEFUKGEsIEVsZW1lbnRzQXJlQXJyYXkoeyAxLCAy
LCAzLCA0LCA1IH0pKTsKLSAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoeyAx
LCAyLCAzLCA1LCA0IH0pKSk7Ci0gIEVYUEVDVF9USEFUKGEsIE5vdChFbGVtZW50c0FyZUFycmF5
KHsgMSwgMiwgMywgNCwgNiB9KSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBU
YWtlc0luaXRpYWxpemVyTGlzdE9mQ1N0cmluZ3MpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgYVs1
XSA9IHsiYSIsICJiIiwgImMiLCAiZCIsICJlIn07Ci0gIEVYUEVDVF9USEFUKGEsIEVsZW1lbnRz
QXJlQXJyYXkoeyAiYSIsICJiIiwgImMiLCAiZCIsICJlIiB9KSk7Ci0gIEVYUEVDVF9USEFUKGEs
IE5vdChFbGVtZW50c0FyZUFycmF5KHsgImEiLCAiYiIsICJjIiwgImUiLCAiZCIgfSkpKTsKLSAg
RVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoeyAiYSIsICJiIiwgImMiLCAiZCIs
ICJlZiIgfSkpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgVGFrZXNJbml0aWFs
aXplckxpc3RPZlNhbWVUeXBlZE1hdGNoZXJzKSB7Ci0gIGNvbnN0IGludCBhWzVdID0geyAxLCAy
LCAzLCA0LCA1IH07Ci0gIEVYUEVDVF9USEFUKGEsIEVsZW1lbnRzQXJlQXJyYXkoCi0gICAgICB7
IEVxKDEpLCBFcSgyKSwgRXEoMyksIEVxKDQpLCBFcSg1KSB9KSk7Ci0gIEVYUEVDVF9USEFUKGEs
IE5vdChFbGVtZW50c0FyZUFycmF5KAotICAgICAgeyBFcSgxKSwgRXEoMiksIEVxKDMpLCBFcSg0
KSwgRXEoNikgfSkpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwKLSAgICAgVGFr
ZXNJbml0aWFsaXplckxpc3RPZkRpZmZlcmVudFR5cGVkTWF0Y2hlcnMpIHsKLSAgY29uc3QgaW50
IGFbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKLSAgLy8gVGhlIGNvbXBpbGVyIGNhbm5vdCBpbmZl
ciB0aGUgdHlwZSBvZiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBpZiBpdHMKLSAgLy8gZWxlbWVudHMg
aGF2ZSBkaWZmZXJlbnQgdHlwZXMuICBXZSBtdXN0IGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUKLSAg
Ly8gdW5pZmllZCBlbGVtZW50IHR5cGUgaW4gdGhpcyBjYXNlLgotICBFWFBFQ1RfVEhBVChhLCBF
bGVtZW50c0FyZUFycmF5PE1hdGNoZXI8aW50PiA+KAotICAgICAgeyBFcSgxKSwgTmUoLTIpLCBH
ZSgzKSwgTGUoNCksIEVxKDUpIH0pKTsKLSAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJl
QXJyYXk8TWF0Y2hlcjxpbnQ+ID4oCi0gICAgICB7IEVxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0
KSwgRXEoNikgfSkpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVS
X0xJU1RfCi0KLVRFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhNYXRj
aGVyVmVjdG9yKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7IDEsIDIsIDMgfTsKLSAgY29uc3QgTWF0
Y2hlcjxpbnQ+IGtNYXRjaGVyc1tdID0geyBFcSgxKSwgRXEoMiksIEVxKDMpIH07Ci0gIHZlY3Rv
cjxpbnQ+IHRlc3RfdmVjdG9yKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIGNvbnN0
IHZlY3RvcjxNYXRjaGVyPGludD4gPiBleHBlY3RlZCgKLSAgICAgIGtNYXRjaGVycywga01hdGNo
ZXJzICsgR1RFU1RfQVJSQVlfU0laRV8oa01hdGNoZXJzKSk7Ci0gIEVYUEVDVF9USEFUKHRlc3Rf
dmVjdG9yLCBFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSk7Ci0gIHRlc3RfdmVjdG9yLnB1c2hf
YmFjayg0KTsKLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5
KGV4cGVjdGVkKSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBDYW5CZUNyZWF0
ZWRXaXRoSXRlcmF0b3JSYW5nZSkgewotICBjb25zdCBpbnQgYVtdID0geyAxLCAyLCAzIH07Ci0g
IGNvbnN0IHZlY3RvcjxpbnQ+IHRlc3RfdmVjdG9yKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhh
KSk7Ci0gIGNvbnN0IHZlY3RvcjxpbnQ+IGV4cGVjdGVkKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpF
XyhhKSk7Ci0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0FyZUFycmF5KGV4cGVj
dGVkLmJlZ2luKCksIGV4cGVjdGVkLmVuZCgpKSk7Ci0gIC8vIFBvaW50ZXJzIGFyZSBpdGVyYXRv
cnMsIHRvby4KLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoYSwg
YSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKSk7Ci0gIC8vIFRoZSBlbXB0eSByYW5nZSBvZiBOVUxM
IHBvaW50ZXJzIHNob3VsZCBhbHNvIGJlIG9rYXkuCi0gIGludCogY29uc3QgbnVsbF9pbnQgPSBO
VUxMOwotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkobnVs
bF9pbnQsIG51bGxfaW50KSkpOwotICBFWFBFQ1RfVEhBVCgodmVjdG9yPGludD4oKSksIEVsZW1l
bnRzQXJlQXJyYXkobnVsbF9pbnQsIG51bGxfaW50KSk7Ci19Ci0KLS8vIFNpbmNlIEVsZW1lbnRz
QXJlKCkgYW5kIEVsZW1lbnRzQXJlQXJyYXkoKSBzaGFyZSBtdWNoIG9mIHRoZQotLy8gaW1wbGVt
ZW50YXRpb24sIHdlIG9ubHkgZG8gYSBzYW5pdHkgdGVzdCBmb3IgbmF0aXZlIGFycmF5cyBoZXJl
LgotVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgV29ya3NXaXRoTmF0aXZlQXJyYXkpIHsKLSAg
OjpzdGQ6OnN0cmluZyBhW10gPSB7ICJoaSIsICJobyIgfTsKLSAgOjpzdGQ6OnN0cmluZyBiW10g
PSB7ICJoaSIsICJobyIgfTsKLQotICBFWFBFQ1RfVEhBVChhLCBFbGVtZW50c0FyZUFycmF5KGIp
KTsKLSAgRVhQRUNUX1RIQVQoYSwgRWxlbWVudHNBcmVBcnJheShiLCAyKSk7Ci0gIEVYUEVDVF9U
SEFUKGEsIE5vdChFbGVtZW50c0FyZUFycmF5KGIsIDEpKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNB
cmVBcnJheVRlc3QsIFNvdXJjZUxpZmVTcGFuKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7IDEsIDIs
IDMgfTsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVf
KGEpKTsKLSAgdmVjdG9yPGludD4gZXhwZWN0KGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7
Ci0gIEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPGludD4gbWF0Y2hlcl9tYWtlciA9Ci0gICAgICBF
bGVtZW50c0FyZUFycmF5KGV4cGVjdC5iZWdpbigpLCBleHBlY3QuZW5kKCkpOwotICBFWFBFQ1Rf
VEhBVCh0ZXN0X3ZlY3RvciwgbWF0Y2hlcl9tYWtlcik7Ci0gIC8vIENoYW5naW5nIGluIHBsYWNl
IHRoZSB2YWx1ZXMgdGhhdCBpbml0aWFsaXplZCBtYXRjaGVyX21ha2VyIHNob3VsZCBub3QKLSAg
Ly8gYWZmZWN0IG1hdGNoZXJfbWFrZXIgYW55bW9yZS4gSXQgc2hvdWxkIGhhdmUgbWFkZSBpdHMg
b3duIGNvcHkgb2YgdGhlbS4KLSAgdHlwZWRlZiB2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgSXRlcjsK
LSAgZm9yIChJdGVyIGl0ID0gZXhwZWN0LmJlZ2luKCk7IGl0ICE9IGV4cGVjdC5lbmQoKTsgKytp
dCkgeyAqaXQgKz0gMTA7IH0KLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIG1hdGNoZXJfbWFr
ZXIpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soMyk7Ci0gIEVYUEVDVF9USEFUKHRlc3RfdmVj
dG9yLCBOb3QobWF0Y2hlcl9tYWtlcikpOwotfQotCi0vLyBUZXN0cyBmb3IgdGhlIE1BVENIRVIq
KCkgbWFjcm8gZmFtaWx5LgotCi0vLyBUZXN0cyB0aGF0IGEgc2ltcGxlIE1BVENIRVIoKSBkZWZp
bml0aW9uIHdvcmtzLgotCi1NQVRDSEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChhcmcgJSAyKSA9
PSAwOyB9Ci0KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwgV29ya3MpIHsKLSAgY29uc3QgTWF0Y2hl
cjxpbnQ+IG0gPSBJc0V2ZW4oKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDYpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcyg3KSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBldmVuIiwgRGVzY3Jp
YmUobSkpOwotICBFWFBFQ1RfRVEoIm5vdCAoaXMgZXZlbikiLCBEZXNjcmliZU5lZ2F0aW9uKG0p
KTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDYpKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBs
YWluKG0sIDcpKTsKLX0KLQotLy8gVGhpcyBhbHNvIHRlc3RzIHRoYXQgdGhlIGRlc2NyaXB0aW9u
IHN0cmluZyBjYW4gcmVmZXJlbmNlICduZWdhdGlvbicuCi1NQVRDSEVSKElzRXZlbjIsIG5lZ2F0
aW9uID8gImlzIG9kZCIgOiAiaXMgZXZlbiIpIHsKLSAgaWYgKChhcmcgJSAyKSA9PSAwKSB7Ci0g
ICAgLy8gVmVyaWZpZXMgdGhhdCB3ZSBjYW4gc3RyZWFtIHRvIHJlc3VsdF9saXN0ZW5lciwgYSBs
aXN0ZW5lcgotICAgIC8vIHN1cHBsaWVkIGJ5IHRoZSBNQVRDSEVSIG1hY3JvIGltcGxpY2l0bHku
Ci0gICAgKnJlc3VsdF9saXN0ZW5lciA8PCAiT0siOwotICAgIHJldHVybiB0cnVlOwotICB9IGVs
c2UgewotICAgICpyZXN1bHRfbGlzdGVuZXIgPDwgIiUgMiA9PSAiIDw8IChhcmcgJSAyKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KLQotLy8gVGhpcyBhbHNvIHRlc3RzIHRoYXQgdGhlIGRl
c2NyaXB0aW9uIHN0cmluZyBjYW4gcmVmZXJlbmNlIG1hdGNoZXIKLS8vIHBhcmFtZXRlcnMuCi1N
QVRDSEVSX1AyKEVxU3VtT2YsIHgsIHksIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8gImRvZXNuJ3Qg
ZXF1YWwiIDogImVxdWFscyIpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGhl
IHN1bSBvZiAiICsgUHJpbnRUb1N0cmluZyh4KSArICIgYW5kICIgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyh5KSkgewotICBpZiAoYXJnID09ICh4ICsgeSkp
IHsKLSAgICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJPSyI7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0g
ZWxzZSB7Ci0gICAgLy8gVmVyaWZpZXMgdGhhdCB3ZSBjYW4gc3RyZWFtIHRvIHRoZSB1bmRlcmx5
aW5nIHN0cmVhbSBvZgotICAgIC8vIHJlc3VsdF9saXN0ZW5lci4KLSAgICBpZiAocmVzdWx0X2xp
c3RlbmVyLT5zdHJlYW0oKSAhPSBOVUxMKSB7Ci0gICAgICAqcmVzdWx0X2xpc3RlbmVyLT5zdHJl
YW0oKSA8PCAiZGlmZiA9PSAiIDw8ICh4ICsgeSAtIGFyZyk7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtYXRjaGVyIGRlc2NyaXB0aW9uIGNh
biByZWZlcmVuY2UgJ25lZ2F0aW9uJyBhbmQgdGhlCi0vLyBtYXRjaGVyIHBhcmFtZXRlcnMuCi1U
RVNUKE1hdGNoZXJNYWNyb1Rlc3QsIERlc2NyaXB0aW9uQ2FuUmVmZXJlbmNlTmVnYXRpb25BbmRQ
YXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtMSA9IElzRXZlbjIoKTsKLSAgRVhQ
RUNUX0VRKCJpcyBldmVuIiwgRGVzY3JpYmUobTEpKTsKLSAgRVhQRUNUX0VRKCJpcyBvZGQiLCBE
ZXNjcmliZU5lZ2F0aW9uKG0xKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IG0yID0gRXFTdW1P
Zig1LCA5KTsKLSAgRVhQRUNUX0VRKCJlcXVhbHMgdGhlIHN1bSBvZiA1IGFuZCA5IiwgRGVzY3Jp
YmUobTIpKTsKLSAgRVhQRUNUX0VRKCJkb2Vzbid0IGVxdWFsIHRoZSBzdW0gb2YgNSBhbmQgOSIs
IERlc2NyaWJlTmVnYXRpb24obTIpKTsKLX0KLQotLy8gVGVzdHMgZXhwbGFpbmluZyBtYXRjaCBy
ZXN1bHQgaW4gYSBNQVRDSEVSKiBtYWNyby4KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwgQ2FuRXhw
bGFpbk1hdGNoUmVzdWx0KSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtMSA9IElzRXZlbjIoKTsK
LSAgRVhQRUNUX0VRKCJPSyIsIEV4cGxhaW4obTEsIDQpKTsKLSAgRVhQRUNUX0VRKCIlIDIgPT0g
MSIsIEV4cGxhaW4obTEsIDUpKTsKLQotICBjb25zdCBNYXRjaGVyPGludD4gbTIgPSBFcVN1bU9m
KDEsIDIpOwotICBFWFBFQ1RfRVEoIk9LIiwgRXhwbGFpbihtMiwgMykpOwotICBFWFBFQ1RfRVEo
ImRpZmYgPT0gLTEiLCBFeHBsYWluKG0yLCA0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGJv
ZHkgb2YgTUFUQ0hFUigpIGNhbiByZWZlcmVuY2UgdGhlIHR5cGUgb2YgdGhlCi0vLyB2YWx1ZSBi
ZWluZyBtYXRjaGVkLgotCi1NQVRDSEVSKElzRW1wdHlTdHJpbmcsICIiKSB7Ci0gIFN0YXRpY0Fz
c2VydFR5cGVFcTwgOjpzdGQ6OnN0cmluZywgYXJnX3R5cGU+KCk7Ci0gIHJldHVybiBhcmcgPT0g
IiI7Ci19Ci0KLU1BVENIRVIoSXNFbXB0eVN0cmluZ0J5UmVmLCAiIikgewotICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Y29uc3QgOjpzdGQ6OnN0cmluZyYsIGFyZ190eXBlPigpOwotICByZXR1cm4gYXJn
ID09ICIiOwotfQotCi1URVNUKE1hdGNoZXJNYWNyb1Rlc3QsIENhblJlZmVyZW5jZUFyZ1R5cGUp
IHsKLSAgY29uc3QgTWF0Y2hlcjwgOjpzdGQ6OnN0cmluZz4gbTEgPSBJc0VtcHR5U3RyaW5nKCk7
Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoIiIpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0
IDo6c3RkOjpzdHJpbmcmPiBtMiA9IElzRW1wdHlTdHJpbmdCeVJlZigpOwotICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKCIiKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTUFUQ0hFUigpIGNhbiBiZSB1
c2VkIGluIGEgbmFtZXNwYWNlLgotCi1uYW1lc3BhY2UgbWF0Y2hlcl90ZXN0IHsKLU1BVENIRVIo
SXNPZGQsICIiKSB7IHJldHVybiAoYXJnICUgMikgIT0gMDsgfQotfSAgLy8gbmFtZXNwYWNlIG1h
dGNoZXJfdGVzdAotCi1URVNUKE1hdGNoZXJNYWNyb1Rlc3QsIFdvcmtzSW5OYW1lc3BhY2UpIHsK
LSAgTWF0Y2hlcjxpbnQ+IG0gPSBtYXRjaGVyX3Rlc3Q6OklzT2RkKCk7Ci0gIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoNCkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoNSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IFZhbHVlKCkgY2FuIGJlIHVzZWQgdG8gY29tcG9zZSBtYXRjaGVycy4KLU1BVENI
RVIoSXNQb3NpdGl2ZU9kZCwgIiIpIHsKLSAgcmV0dXJuIFZhbHVlKGFyZywgbWF0Y2hlcl90ZXN0
OjpJc09kZCgpKSAmJiBhcmcgPiAwOwotfQotCi1URVNUKE1hdGNoZXJNYWNyb1Rlc3QsIENhbkJl
Q29tcG9zZWRVc2luZ1ZhbHVlKSB7Ci0gIEVYUEVDVF9USEFUKDMsIElzUG9zaXRpdmVPZGQoKSk7
Ci0gIEVYUEVDVF9USEFUKDQsIE5vdChJc1Bvc2l0aXZlT2RkKCkpKTsKLSAgRVhQRUNUX1RIQVQo
LTEsIE5vdChJc1Bvc2l0aXZlT2RkKCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHNpbXBsZSBN
QVRDSEVSX1AoKSBkZWZpbml0aW9uIHdvcmtzLgotCi1NQVRDSEVSX1AoSXNHcmVhdGVyVGhhbjMy
QW5kLCBuLCAiIikgeyByZXR1cm4gYXJnID4gMzIgJiYgYXJnID4gbjsgfQotCi1URVNUKE1hdGNo
ZXJQTWFjcm9UZXN0LCBXb3JrcykgewotICBjb25zdCBNYXRjaGVyPGludD4gbSA9IElzR3JlYXRl
clRoYW4zMkFuZCg1KTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDM2KSk7Ci0gIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoNSkpOwotCi0gIEVYUEVDVF9FUSgiaXMgZ3JlYXRlciB0aGFuIDMyIGFu
ZCA1IiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoIm5vdCAoaXMgZ3JlYXRlciB0aGFuIDMy
IGFuZCA1KSIsIERlc2NyaWJlTmVnYXRpb24obSkpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4o
bSwgMzYpKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDUpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCB0aGUgZGVzY3JpcHRpb24gaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHkgZnJvbSB0aGUgbWF0
Y2hlciBuYW1lLgotTUFUQ0hFUl9QKF9pc19HcmVhdGVyX1RoYW4zMmFuZF8sIG4sICIiKSB7IHJl
dHVybiBhcmcgPiAzMiAmJiBhcmcgPiBuOyB9Ci0KLVRFU1QoTWF0Y2hlclBNYWNyb1Rlc3QsIEdl
bmVyYXRlc0NvcnJlY3REZXNjcmlwdGlvbikgewotICBjb25zdCBNYXRjaGVyPGludD4gbSA9IF9p
c19HcmVhdGVyX1RoYW4zMmFuZF8oNSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBncmVhdGVyIHRoYW4g
MzIgYW5kIDUiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgibm90IChpcyBncmVhdGVyIHRo
YW4gMzIgYW5kIDUpIiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhw
bGFpbihtLCAzNikpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgNSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGEgTUFUQ0hFUl9QIG1hdGNoZXIgY2FuIGJlIGV4cGxpY2l0bHkgaW5zdGFudGlh
dGVkIHdpdGgKLS8vIGEgcmVmZXJlbmNlIHBhcmFtZXRlciB0eXBlLgotCi1jbGFzcyBVbmNvcHlh
YmxlRm9vIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFVuY29weWFibGVGb28oY2hhciB2YWx1ZSkg
OiB2YWx1ZV8odmFsdWUpIHt9Ci0gcHJpdmF0ZToKLSAgVW5jb3B5YWJsZUZvbyhjb25zdCBVbmNv
cHlhYmxlRm9vJik7Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFVuY29weWFibGVGb28mKTsKLQot
ICBjaGFyIHZhbHVlXzsKLX07Ci0KLU1BVENIRVJfUChSZWZlcmVuY2VzVW5jb3B5YWJsZSwgdmFy
aWFibGUsICIiKSB7IHJldHVybiAmYXJnID09ICZ2YXJpYWJsZTsgfQotCi1URVNUKE1hdGNoZXJQ
TWFjcm9UZXN0LCBXb3Jrc1doZW5FeHBsaWNpdGx5SW5zdGFudGlhdGVkV2l0aFJlZmVyZW5jZSkg
ewotICBVbmNvcHlhYmxlRm9vIGZvbzEoJzEnKSwgZm9vMignMicpOwotICBjb25zdCBNYXRjaGVy
PGNvbnN0IFVuY29weWFibGVGb28mPiBtID0KLSAgICAgIFJlZmVyZW5jZXNVbmNvcHlhYmxlPGNv
bnN0IFVuY29weWFibGVGb28mPihmb28xKTsKLQotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoZm9v
MSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGZvbzIpKTsKLQotICAvLyBXZSBkb24ndCB3
YW50IHRoZSBhZGRyZXNzIG9mIHRoZSBwYXJhbWV0ZXIgcHJpbnRlZCwgYXMgbW9zdAotICAvLyBs
aWtlbHkgaXQgd2lsbCBqdXN0IGFubm95IHRoZSB1c2VyLiAgSWYgdGhlIGFkZHJlc3MgaXMKLSAg
Ly8gaW50ZXJlc3RpbmcsIHRoZSB1c2VyIHNob3VsZCBjb25zaWRlciBwYXNzaW5nIHRoZSBwYXJh
bWV0ZXIgYnkKLSAgLy8gcG9pbnRlciBpbnN0ZWFkLgotICBFWFBFQ1RfRVEoInJlZmVyZW5jZXMg
dW5jb3B5YWJsZSAxLWJ5dGUgb2JqZWN0IDwzMT4iLCBEZXNjcmliZShtKSk7Ci19Ci0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgYm9keSBvZiBNQVRDSEVSX1BuKCkgY2FuIHJlZmVyZW5jZSB0aGUgcGFy
YW1ldGVyCi0vLyB0eXBlcy4KLQotTUFUQ0hFUl9QMyhQYXJhbVR5cGVzQXJlSW50TG9uZ0FuZENo
YXIsIGZvbywgYmFyLCBiYXosICIiKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIGZvb190
eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8bG9uZywgYmFyX3R5cGU+KCk7ICAvLyBOT0xJ
TlQKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGNoYXIsIGJhel90eXBlPigpOwotICByZXR1cm4gYXJn
ID09IDA7Ci19Ci0KLVRFU1QoTWF0Y2hlclBuTWFjcm9UZXN0LCBDYW5SZWZlcmVuY2VQYXJhbVR5
cGVzKSB7Ci0gIEVYUEVDVF9USEFUKDAsIFBhcmFtVHlwZXNBcmVJbnRMb25nQW5kQ2hhcigxMCwg
MjBMLCAnYScpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIE1BVENIRVJfUG4gbWF0Y2hlciBjYW4g
YmUgZXhwbGljaXRseSBpbnN0YW50aWF0ZWQgd2l0aAotLy8gcmVmZXJlbmNlIHBhcmFtZXRlciB0
eXBlcy4KLQotTUFUQ0hFUl9QMihSZWZlcmVuY2VzQW55T2YsIHZhcmlhYmxlMSwgdmFyaWFibGUy
LCAiIikgewotICByZXR1cm4gJmFyZyA9PSAmdmFyaWFibGUxIHx8ICZhcmcgPT0gJnZhcmlhYmxl
MjsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIFdvcmtzV2hlbkV4cGxpY2l0bHlJbnN0
YW50aWF0ZWRXaXRoUmVmZXJlbmNlcykgewotICBVbmNvcHlhYmxlRm9vIGZvbzEoJzEnKSwgZm9v
MignMicpLCBmb28zKCczJyk7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgVW5jb3B5YWJsZUZvbyY+
IG0gPQotICAgICAgUmVmZXJlbmNlc0FueU9mPGNvbnN0IFVuY29weWFibGVGb28mLCBjb25zdCBV
bmNvcHlhYmxlRm9vJj4oZm9vMSwgZm9vMik7Ci0KLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGZv
bzEpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGZvbzIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcyhmb28zKSk7Ci19Ci0KLVRFU1QoTWF0Y2hlclBuTWFjcm9UZXN0LAotICAgICBHZW5l
cmF0ZXNDb3JyZXREZXNjcmlwdGlvbldoZW5FeHBsaWNpdGx5SW5zdGFudGlhdGVkV2l0aFJlZmVy
ZW5jZXMpIHsKLSAgVW5jb3B5YWJsZUZvbyBmb28xKCcxJyksIGZvbzIoJzInKTsKLSAgY29uc3Qg
TWF0Y2hlcjxjb25zdCBVbmNvcHlhYmxlRm9vJj4gbSA9Ci0gICAgICBSZWZlcmVuY2VzQW55T2Y8
Y29uc3QgVW5jb3B5YWJsZUZvbyYsIGNvbnN0IFVuY29weWFibGVGb28mPihmb28xLCBmb28yKTsK
LQotICAvLyBXZSBkb24ndCB3YW50IHRoZSBhZGRyZXNzZXMgb2YgdGhlIHBhcmFtZXRlcnMgcHJp
bnRlZCwgYXMgbW9zdAotICAvLyBsaWtlbHkgdGhleSB3aWxsIGp1c3QgYW5ub3kgdGhlIHVzZXIu
ICBJZiB0aGUgYWRkcmVzc2VzIGFyZQotICAvLyBpbnRlcmVzdGluZywgdGhlIHVzZXIgc2hvdWxk
IGNvbnNpZGVyIHBhc3NpbmcgdGhlIHBhcmFtZXRlcnMgYnkKLSAgLy8gcG9pbnRlcnMgaW5zdGVh
ZC4KLSAgRVhQRUNUX0VRKCJyZWZlcmVuY2VzIGFueSBvZiAoMS1ieXRlIG9iamVjdCA8MzE+LCAx
LWJ5dGUgb2JqZWN0IDwzMj4pIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhIHNpbXBsZSBNQVRDSEVSX1AyKCkgZGVmaW5pdGlvbiB3b3Jrcy4KLQotTUFU
Q0hFUl9QMihJc05vdEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksICIiKSB7IHJldHVybiBhcmcgPCBs
b3cgfHwgYXJnID4gaGk7IH0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIFdvcmtzKSB7Ci0g
IGNvbnN0IE1hdGNoZXI8Y29uc3QgbG9uZyY+IG0gPSBJc05vdEluQ2xvc2VkUmFuZ2UoMTAsIDIw
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMzZMKSk7Ci0gIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoMTVMKSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBub3QgaW4gY2xvc2VkIHJh
bmdlICgxMCwgMjApIiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoIm5vdCAoaXMgbm90IGlu
IGNsb3NlZCByYW5nZSAoMTAsIDIwKSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLSAgRVhQRUNU
X0VRKCIiLCBFeHBsYWluKG0sIDM2TCkpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgMTVM
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTUFUQ0hFUiooKSBkZWZpbml0aW9ucyBjYW4gYmUgb3Zl
cmxvYWRlZCBvbiB0aGUgbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJzOyBhbHNvIHRlc3RzIE1BVENI
RVJfUG4oKSB3aGVyZSBuID49IDMuCi0KLU1BVENIRVIoRXF1YWxzU3VtT2YsICIiKSB7IHJldHVy
biBhcmcgPT0gMDsgfQotTUFUQ0hFUl9QKEVxdWFsc1N1bU9mLCBhLCAiIikgeyByZXR1cm4gYXJn
ID09IGE7IH0KLU1BVENIRVJfUDIoRXF1YWxzU3VtT2YsIGEsIGIsICIiKSB7IHJldHVybiBhcmcg
PT0gYSArIGI7IH0KLU1BVENIRVJfUDMoRXF1YWxzU3VtT2YsIGEsIGIsIGMsICIiKSB7IHJldHVy
biBhcmcgPT0gYSArIGIgKyBjOyB9Ci1NQVRDSEVSX1A0KEVxdWFsc1N1bU9mLCBhLCBiLCBjLCBk
LCAiIikgeyByZXR1cm4gYXJnID09IGEgKyBiICsgYyArIGQ7IH0KLU1BVENIRVJfUDUoRXF1YWxz
U3VtT2YsIGEsIGIsIGMsIGQsIGUsICIiKSB7IHJldHVybiBhcmcgPT0gYSArIGIgKyBjICsgZCAr
IGU7IH0KLU1BVENIRVJfUDYoRXF1YWxzU3VtT2YsIGEsIGIsIGMsIGQsIGUsIGYsICIiKSB7Ci0g
IHJldHVybiBhcmcgPT0gYSArIGIgKyBjICsgZCArIGUgKyBmOwotfQotTUFUQ0hFUl9QNyhFcXVh
bHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgZiwgZywgIiIpIHsKLSAgcmV0dXJuIGFyZyA9PSBhICsg
YiArIGMgKyBkICsgZSArIGYgKyBnOwotfQotTUFUQ0hFUl9QOChFcXVhbHNTdW1PZiwgYSwgYiwg
YywgZCwgZSwgZiwgZywgaCwgIiIpIHsKLSAgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMgKyBkICsg
ZSArIGYgKyBnICsgaDsKLX0KLU1BVENIRVJfUDkoRXF1YWxzU3VtT2YsIGEsIGIsIGMsIGQsIGUs
IGYsIGcsIGgsIGksICIiKSB7Ci0gIHJldHVybiBhcmcgPT0gYSArIGIgKyBjICsgZCArIGUgKyBm
ICsgZyArIGggKyBpOwotfQotTUFUQ0hFUl9QMTAoRXF1YWxzU3VtT2YsIGEsIGIsIGMsIGQsIGUs
IGYsIGcsIGgsIGksIGosICIiKSB7Ci0gIHJldHVybiBhcmcgPT0gYSArIGIgKyBjICsgZCArIGUg
KyBmICsgZyArIGggKyBpICsgajsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIENhbkJl
T3ZlcmxvYWRlZE9uTnVtYmVyT2ZQYXJhbWV0ZXJzKSB7Ci0gIEVYUEVDVF9USEFUKDAsIEVxdWFs
c1N1bU9mKCkpOwotICBFWFBFQ1RfVEhBVCgxLCBFcXVhbHNTdW1PZigxKSk7Ci0gIEVYUEVDVF9U
SEFUKDEyLCBFcXVhbHNTdW1PZigxMCwgMikpOwotICBFWFBFQ1RfVEhBVCgxMjMsIEVxdWFsc1N1
bU9mKDEwMCwgMjAsIDMpKTsKLSAgRVhQRUNUX1RIQVQoMTIzNCwgRXF1YWxzU3VtT2YoMTAwMCwg
MjAwLCAzMCwgNCkpOwotICBFWFBFQ1RfVEhBVCgxMjM0NSwgRXF1YWxzU3VtT2YoMTAwMDAsIDIw
MDAsIDMwMCwgNDAsIDUpKTsKLSAgRVhQRUNUX1RIQVQoImFiY2RlZiIsCi0gICAgICAgICAgICAg
IEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicp
KTsKLSAgRVhQRUNUX1RIQVQoImFiY2RlZmciLAotICAgICAgICAgICAgICBFcXVhbHNTdW1PZig6
OnN0ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnLCAnZycpKTsKLSAgRVhQ
RUNUX1RIQVQoImFiY2RlZmdoIiwKLSAgICAgICAgICAgICAgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0
cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIsICdmJywgJ2cnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaCIpKTsKLSAgRVhQRUNUX1RIQVQoImFiY2RlZmdoaSIsCi0gICAgICAgICAg
ICAgIEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAn
ZicsICdnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImgiLCAnaScpKTsKLSAgRVhQRUNU
X1RIQVQoImFiY2RlZmdoaWoiLAotICAgICAgICAgICAgICBFcXVhbHNTdW1PZig6OnN0ZDo6c3Ry
aW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnLCAnZycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJoIiwgJ2knLCA6OnN0ZDo6c3RyaW5nKCJqIikpKTsKLQotICBFWFBFQ1RfVEhB
VCgxLCBOb3QoRXF1YWxzU3VtT2YoKSkpOwotICBFWFBFQ1RfVEhBVCgtMSwgTm90KEVxdWFsc1N1
bU9mKDEpKSk7Ci0gIEVYUEVDVF9USEFUKC0xMiwgTm90KEVxdWFsc1N1bU9mKDEwLCAyKSkpOwot
ICBFWFBFQ1RfVEhBVCgtMTIzLCBOb3QoRXF1YWxzU3VtT2YoMTAwLCAyMCwgMykpKTsKLSAgRVhQ
RUNUX1RIQVQoLTEyMzQsIE5vdChFcXVhbHNTdW1PZigxMDAwLCAyMDAsIDMwLCA0KSkpOwotICBF
WFBFQ1RfVEhBVCgtMTIzNDUsIE5vdChFcXVhbHNTdW1PZigxMDAwMCwgMjAwMCwgMzAwLCA0MCwg
NSkpKTsKLSAgRVhQRUNUX1RIQVQoImFiY2RlZiAiLAotICAgICAgICAgICAgICBOb3QoRXF1YWxz
U3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIsICdmJykpKTsKLSAg
RVhQRUNUX1RIQVQoImFiY2RlZmcgIiwKLSAgICAgICAgICAgICAgTm90KEVxdWFsc1N1bU9mKDo6
c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZycpKSk7Ci0gIEVYUEVDVF9USEFUKCJhYmNkZWZnaCAiLAotICAg
ICAgICAgICAgICBOb3QoRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywg
ImQiLCAiZSIsICdmJywgJ2cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImgiKSkp
OwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2hpICIsCi0gICAgICAgICAgICAgIE5vdChFcXVhbHNT
dW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnLCAnZycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaCIsICdpJykpKTsKLSAgRVhQRUNUX1RIQVQo
ImFiY2RlZmdoaWogIiwKLSAgICAgICAgICAgICAgTm90KEVxdWFsc1N1bU9mKDo6c3RkOjpzdHJp
bmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicsICdnJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJoIiwgJ2knLCA6OnN0ZDo6c3RyaW5nKCJqIikpKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYSBNQVRDSEVSX1BuKCkgZGVmaW5pdGlvbiBjYW4gYmUgaW5zdGFudGlhdGVkIHdp
dGggYW55Ci0vLyBjb21wYXRpYmxlIHBhcmFtZXRlciB0eXBlcy4KLVRFU1QoTWF0Y2hlclBuTWFj
cm9UZXN0LCBXb3Jrc0ZvckRpZmZlcmVudFBhcmFtZXRlclR5cGVzKSB7Ci0gIEVYUEVDVF9USEFU
KDEyMywgRXF1YWxzU3VtT2YoMTAwTCwgMjAsIHN0YXRpY19jYXN0PGNoYXI+KDMpKSk7Ci0gIEVY
UEVDVF9USEFUKCJhYmNkIiwgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAiYiIsICdj
JywgImQiKSk7Ci0KLSAgRVhQRUNUX1RIQVQoMTI0LCBOb3QoRXF1YWxzU3VtT2YoMTAwTCwgMjAs
IHN0YXRpY19jYXN0PGNoYXI+KDMpKSkpOwotICBFWFBFQ1RfVEhBVCgiYWJjZGUiLCBOb3QoRXF1
YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAiYiIsICdjJywgImQiKSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBtYXRjaGVyIGJvZHkgY2FuIHByb21vdGUgdGhlIHBhcmFtZXRlciB0eXBl
cy4KLQotTUFUQ0hFUl9QMihFcUNvbmNhdCwgcHJlZml4LCBzdWZmaXgsICIiKSB7Ci0gIC8vIFRo
ZSBmb2xsb3dpbmcgbGluZXMgcHJvbW90ZSB0aGUgdHdvIHBhcmFtZXRlcnMgdG8gZGVzaXJlZCB0
eXBlcy4KLSAgc3RkOjpzdHJpbmcgcHJlZml4X3N0cihwcmVmaXgpOwotICBjaGFyIHN1ZmZpeF9j
aGFyID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3VmZml4KTsKLSAgcmV0dXJuIGFyZyA9PSBwcmVmaXhf
c3RyICsgc3VmZml4X2NoYXI7Ci19Ci0KLVRFU1QoTWF0Y2hlclBuTWFjcm9UZXN0LCBTaW1wbGVU
eXBlUHJvbW90aW9uKSB7Ci0gIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG5vX3Byb21vID0KLSAgICAg
IEVxQ29uY2F0KHN0ZDo6c3RyaW5nKCJmb28iKSwgJ3QnKTsKLSAgTWF0Y2hlcjxjb25zdCBzdGQ6
OnN0cmluZyY+IHByb21vID0KLSAgICAgIEVxQ29uY2F0KCJmb28iLCBzdGF0aWNfY2FzdDxpbnQ+
KCd0JykpOwotICBFWFBFQ1RfRkFMU0Uobm9fcHJvbW8uTWF0Y2hlcygiZm9vbCIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHByb21vLk1hdGNoZXMoImZvb2wiKSk7Ci0gIEVYUEVDVF9UUlVFKG5vX3Byb21v
Lk1hdGNoZXMoImZvb3QiKSk7Ci0gIEVYUEVDVF9UUlVFKHByb21vLk1hdGNoZXMoImZvb3QiKSk7
Ci19Ci0KLS8vIFZlcmlmaWVzIHRoZSB0eXBlIG9mIGEgTUFUQ0hFUiouCi0KLVRFU1QoTWF0Y2hl
clBuTWFjcm9UZXN0LCBUeXBlc0FyZUNvcnJlY3QpIHsKLSAgLy8gRXF1YWxzU3VtT2YoKSBtdXN0
IGJlIGFzc2lnbmFibGUgdG8gYSBFcXVhbHNTdW1PZk1hdGNoZXIgdmFyaWFibGUuCi0gIEVxdWFs
c1N1bU9mTWF0Y2hlciBhMCA9IEVxdWFsc1N1bU9mKCk7Ci0KLSAgLy8gRXF1YWxzU3VtT2YoMSkg
bXVzdCBiZSBhc3NpZ25hYmxlIHRvIGEgRXF1YWxzU3VtT2ZNYXRjaGVyUCB2YXJpYWJsZS4KLSAg
RXF1YWxzU3VtT2ZNYXRjaGVyUDxpbnQ+IGExID0gRXF1YWxzU3VtT2YoMSk7Ci0KLSAgLy8gRXF1
YWxzU3VtT2YocDEsIC4uLiwgcGspIG11c3QgYmUgYXNzaWduYWJsZSB0byBhIEVxdWFsc1N1bU9m
TWF0Y2hlclBrCi0gIC8vIHZhcmlhYmxlLCBhbmQgc28gb24uCi0gIEVxdWFsc1N1bU9mTWF0Y2hl
clAyPGludCwgY2hhcj4gYTIgPSBFcXVhbHNTdW1PZigxLCAnMicpOwotICBFcXVhbHNTdW1PZk1h
dGNoZXJQMzxpbnQsIGludCwgY2hhcj4gYTMgPSBFcXVhbHNTdW1PZigxLCAyLCAnMycpOwotICBF
cXVhbHNTdW1PZk1hdGNoZXJQNDxpbnQsIGludCwgaW50LCBjaGFyPiBhNCA9IEVxdWFsc1N1bU9m
KDEsIDIsIDMsICc0Jyk7Ci0gIEVxdWFsc1N1bU9mTWF0Y2hlclA1PGludCwgaW50LCBpbnQsIGlu
dCwgY2hhcj4gYTUgPQotICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgJzUnKTsKLSAgRXF1
YWxzU3VtT2ZNYXRjaGVyUDY8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE2ID0KLSAg
ICAgIEVxdWFsc1N1bU9mKDEsIDIsIDMsIDQsIDUsICc2Jyk7Ci0gIEVxdWFsc1N1bU9mTWF0Y2hl
clA3PGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE3ID0KLSAgICAgIEVxdWFs
c1N1bU9mKDEsIDIsIDMsIDQsIDUsIDYsICc3Jyk7Ci0gIEVxdWFsc1N1bU9mTWF0Y2hlclA4PGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTggPQotICAgICAgRXF1YWxz
U3VtT2YoMSwgMiwgMywgNCwgNSwgNiwgNywgJzgnKTsKLSAgRXF1YWxzU3VtT2ZNYXRjaGVyUDk8
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+IGE5ID0KLSAgICAg
IEVxdWFsc1N1bU9mKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsICc5Jyk7Ci0gIEVxdWFsc1N1bU9m
TWF0Y2hlclAxMDxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBj
aGFyPiBhMTAgPQotICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
JzAnKTsKLQotICAvLyBBdm9pZCAidW51c2VkIHZhcmlhYmxlIiB3YXJuaW5ncy4KLSAgKHZvaWQp
YTA7Ci0gICh2b2lkKWExOwotICAodm9pZClhMjsKLSAgKHZvaWQpYTM7Ci0gICh2b2lkKWE0Owot
ICAodm9pZClhNTsKLSAgKHZvaWQpYTY7Ci0gICh2b2lkKWE3OwotICAodm9pZClhODsKLSAgKHZv
aWQpYTk7Ci0gICh2b2lkKWExMDsKLX0KLQotLy8gVGVzdHMgdGhhdCBtYXRjaGVyLXR5cGVkIHBh
cmFtZXRlcnMgY2FuIGJlIHVzZWQgaW4gVmFsdWUoKSBpbnNpZGUgYQotLy8gTUFUQ0hFUl9QbiBk
ZWZpbml0aW9uLgotCi0vLyBTdWNjZWVkcyBpZiBhcmcgbWF0Y2hlcyBleGFjdGx5IDIgb2YgdGhl
IDMgbWF0Y2hlcnMuCi1NQVRDSEVSX1AzKFR3b09mLCBtMSwgbTIsIG0zLCAiIikgewotICBjb25z
dCBpbnQgY291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KFZhbHVlKGFyZywgbTEpKQotICAgICAgKyBz
dGF0aWNfY2FzdDxpbnQ+KFZhbHVlKGFyZywgbTIpKSArIHN0YXRpY19jYXN0PGludD4oVmFsdWUo
YXJnLCBtMykpOwotICByZXR1cm4gY291bnQgPT0gMjsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNy
b1Rlc3QsIENhblVzZU1hdGNoZXJUeXBlZFBhcmFtZXRlckluVmFsdWUpIHsKLSAgRVhQRUNUX1RI
QVQoNDIsIFR3b09mKEd0KDApLCBMdCg1MCksIEVxKDEwKSkpOwotICBFWFBFQ1RfVEhBVCgwLCBO
b3QoVHdvT2YoR3QoLTEpLCBMdCgxKSwgRXEoMCkpKSk7Ci19Ci0KLS8vIFRlc3RzIENvbnRhaW5z
KCkuCi0KLVRFU1QoQ29udGFpbnNUZXN0LCBMaXN0TWF0Y2hlc1doZW5FbGVtZW50SXNJbkNvbnRh
aW5lcikgewotICBsaXN0PGludD4gc29tZV9saXN0OwotICBzb21lX2xpc3QucHVzaF9iYWNrKDMp
OwotICBzb21lX2xpc3QucHVzaF9iYWNrKDEpOwotICBzb21lX2xpc3QucHVzaF9iYWNrKDIpOwot
ICBFWFBFQ1RfVEhBVChzb21lX2xpc3QsIENvbnRhaW5zKDEpKTsKLSAgRVhQRUNUX1RIQVQoc29t
ZV9saXN0LCBDb250YWlucyhHdCgyLjUpKSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfbGlzdCwgQ29u
dGFpbnMoRXEoMi4wZikpKTsKLQotICBsaXN0PHN0ZDo6c3RyaW5nPiBhbm90aGVyX2xpc3Q7Ci0g
IGFub3RoZXJfbGlzdC5wdXNoX2JhY2soImZlZSIpOwotICBhbm90aGVyX2xpc3QucHVzaF9iYWNr
KCJmaWUiKTsKLSAgYW5vdGhlcl9saXN0LnB1c2hfYmFjaygiZm9lIik7Ci0gIGFub3RoZXJfbGlz
dC5wdXNoX2JhY2soImZ1bSIpOwotICBFWFBFQ1RfVEhBVChhbm90aGVyX2xpc3QsIENvbnRhaW5z
KHN0ZDo6c3RyaW5nKCJmZWUiKSkpOwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwgTGlzdERvZXNO
b3RNYXRjaFdoZW5FbGVtZW50SXNOb3RJbkNvbnRhaW5lcikgewotICBsaXN0PGludD4gc29tZV9s
aXN0OwotICBzb21lX2xpc3QucHVzaF9iYWNrKDMpOwotICBzb21lX2xpc3QucHVzaF9iYWNrKDEp
OwotICBFWFBFQ1RfVEhBVChzb21lX2xpc3QsIE5vdChDb250YWlucyg0KSkpOwotfQotCi1URVNU
KENvbnRhaW5zVGVzdCwgU2V0TWF0Y2hlc1doZW5FbGVtZW50SXNJbkNvbnRhaW5lcikgewotICBz
ZXQ8aW50PiBzb21lX3NldDsKLSAgc29tZV9zZXQuaW5zZXJ0KDMpOwotICBzb21lX3NldC5pbnNl
cnQoMSk7Ci0gIHNvbWVfc2V0Lmluc2VydCgyKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9zZXQsIENv
bnRhaW5zKEVxKDEuMCkpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9zZXQsIENvbnRhaW5zKEVxKDMu
MGYpKSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfc2V0LCBDb250YWlucygyKSk7Ci0KLSAgc2V0PGNv
bnN0IGNoYXIqPiBhbm90aGVyX3NldDsKLSAgYW5vdGhlcl9zZXQuaW5zZXJ0KCJmZWUiKTsKLSAg
YW5vdGhlcl9zZXQuaW5zZXJ0KCJmaWUiKTsKLSAgYW5vdGhlcl9zZXQuaW5zZXJ0KCJmb2UiKTsK
LSAgYW5vdGhlcl9zZXQuaW5zZXJ0KCJmdW0iKTsKLSAgRVhQRUNUX1RIQVQoYW5vdGhlcl9zZXQs
IENvbnRhaW5zKEVxKHN0ZDo6c3RyaW5nKCJmdW0iKSkpKTsKLX0KLQotVEVTVChDb250YWluc1Rl
c3QsIFNldERvZXNOb3RNYXRjaFdoZW5FbGVtZW50SXNOb3RJbkNvbnRhaW5lcikgewotICBzZXQ8
aW50PiBzb21lX3NldDsKLSAgc29tZV9zZXQuaW5zZXJ0KDMpOwotICBzb21lX3NldC5pbnNlcnQo
MSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfc2V0LCBOb3QoQ29udGFpbnMoNCkpKTsKLQotICBzZXQ8
Y29uc3QgY2hhcio+IGNfc3RyaW5nX3NldDsKLSAgY19zdHJpbmdfc2V0Lmluc2VydCgiaGVsbG8i
KTsKLSAgRVhQRUNUX1RIQVQoY19zdHJpbmdfc2V0LCBOb3QoQ29udGFpbnMoc3RkOjpzdHJpbmco
ImhlbGxvIikuY19zdHIoKSkpKTsKLX0KLQotVEVTVChDb250YWluc1Rlc3QsIEV4cGxhaW5zTWF0
Y2hSZXN1bHRDb3JyZWN0bHkpIHsKLSAgY29uc3QgaW50IGFbMl0gPSB7IDEsIDIgfTsKLSAgTWF0
Y2hlcjxjb25zdCBpbnQgKCYpWzJdPiBtID0gQ29udGFpbnMoMik7Ci0gIEVYUEVDVF9FUSgid2hv
c2UgZWxlbWVudCAjMSBtYXRjaGVzIiwgRXhwbGFpbihtLCBhKSk7Ci0KLSAgbSA9IENvbnRhaW5z
KDMpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgYSkpOwotCi0gIG0gPSBDb250YWlucyhH
cmVhdGVyVGhhbigwKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZWxlbWVudCAjMCBtYXRjaGVzLCB3
aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwgRXhwbGFpbihtLCBhKSk7Ci0KLSAgbSA9IENvbnRhaW5z
KEdyZWF0ZXJUaGFuKDEwKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBhKSk7Ci19Ci0K
LVRFU1QoQ29udGFpbnNUZXN0LCBEZXNjcmliZXNJdHNlbGZDb3JyZWN0bHkpIHsKLSAgTWF0Y2hl
cjx2ZWN0b3I8aW50PiA+IG0gPSBDb250YWlucygxKTsKLSAgRVhQRUNUX0VRKCJjb250YWlucyBh
dCBsZWFzdCBvbmUgZWxlbWVudCB0aGF0IGlzIGVxdWFsIHRvIDEiLCBEZXNjcmliZShtKSk7Ci0K
LSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0yID0gTm90KG0pOwotICBFWFBFQ1RfRVEoImRvZXNu
J3QgY29udGFpbiBhbnkgZWxlbWVudCB0aGF0IGlzIGVxdWFsIHRvIDEiLCBEZXNjcmliZShtMikp
OwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwgTWFwTWF0Y2hlc1doZW5FbGVtZW50SXNJbkNvbnRh
aW5lcikgewotICBtYXA8Y29uc3QgY2hhciosIGludD4gbXlfbWFwOwotICBjb25zdCBjaGFyKiBi
YXIgPSAiYSBzdHJpbmciOwotICBteV9tYXBbYmFyXSA9IDI7Ci0gIEVYUEVDVF9USEFUKG15X21h
cCwgQ29udGFpbnMocGFpcjxjb25zdCBjaGFyKiBjb25zdCwgaW50PihiYXIsIDIpKSk7Ci0KLSAg
bWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IGFub3RoZXJfbWFwOwotICBhbm90aGVyX21hcFsiZmVlIl0g
PSAxOwotICBhbm90aGVyX21hcFsiZmllIl0gPSAyOwotICBhbm90aGVyX21hcFsiZm9lIl0gPSAz
OwotICBhbm90aGVyX21hcFsiZnVtIl0gPSA0OwotICBFWFBFQ1RfVEhBVChhbm90aGVyX21hcCwK
LSAgICAgICAgICAgICAgQ29udGFpbnMocGFpcjxjb25zdCBzdGQ6OnN0cmluZywgaW50PihzdGQ6
OnN0cmluZygiZmVlIiksIDEpKSk7Ci0gIEVYUEVDVF9USEFUKGFub3RoZXJfbWFwLCBDb250YWlu
cyhwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBpbnQ+KCJmaWUiLCAyKSkpOwotfQotCi1URVNUKENv
bnRhaW5zVGVzdCwgTWFwRG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJc05vdEluQ29udGFpbmVyKSB7
Ci0gIG1hcDxpbnQsIGludD4gc29tZV9tYXA7Ci0gIHNvbWVfbWFwWzFdID0gMTE7Ci0gIHNvbWVf
bWFwWzJdID0gMjI7Ci0gIEVYUEVDVF9USEFUKHNvbWVfbWFwLCBOb3QoQ29udGFpbnMocGFpcjxj
b25zdCBpbnQsIGludD4oMiwgMjMpKSkpOwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwgQXJyYXlN
YXRjaGVzV2hlbkVsZW1lbnRJc0luQ29udGFpbmVyKSB7Ci0gIGNvbnN0IGNoYXIqIHN0cmluZ19h
cnJheVtdID0geyAiZmVlIiwgImZpZSIsICJmb2UiLCAiZnVtIiB9OwotICBFWFBFQ1RfVEhBVChz
dHJpbmdfYXJyYXksIENvbnRhaW5zKEVxKHN0ZDo6c3RyaW5nKCJmdW0iKSkpKTsKLX0KLQotVEVT
VChDb250YWluc1Rlc3QsIEFycmF5RG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJc05vdEluQ29udGFp
bmVyKSB7Ci0gIGludCBpbnRfYXJyYXlbXSA9IHsgMSwgMiwgMywgNCB9OwotICBFWFBFQ1RfVEhB
VChpbnRfYXJyYXksIE5vdChDb250YWlucyg1KSkpOwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwg
QWNjZXB0c01hdGNoZXIpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsgMSwgMiwgMyB9OwotICBFWFBF
Q1RfVEhBVChhLCBDb250YWlucyhHdCgyKSkpOwotICBFWFBFQ1RfVEhBVChhLCBOb3QoQ29udGFp
bnMoR3QoNCkpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNUZXN0LCBXb3Jrc0Zvck5hdGl2ZUFycmF5
QXNUdXBsZSkgewotICBjb25zdCBpbnQgYVtdID0geyAxLCAyIH07Ci0gIGNvbnN0IGludCogY29u
c3QgcG9pbnRlciA9IGE7Ci0gIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUocG9pbnRlciwgMiksIENv
bnRhaW5zKDEpKTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwb2ludGVyLCAyKSwgTm90KENv
bnRhaW5zKEd0KDMpKSkpOwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbE5hdGl2ZUFycmF5KSB7Ci0gIGludCBhW11bM10gPSB7IHsgMSwgMiwgMyB9LCB7IDQs
IDUsIDYgfSB9OwotICBFWFBFQ1RfVEhBVChhLCBDb250YWlucyhFbGVtZW50c0FyZSg0LCA1LCA2
KSkpOwotICBFWFBFQ1RfVEhBVChhLCBDb250YWlucyhDb250YWlucyg1KSkpOwotICBFWFBFQ1Rf
VEhBVChhLCBOb3QoQ29udGFpbnMoRWxlbWVudHNBcmUoMywgNCwgNSkpKSk7Ci0gIEVYUEVDVF9U
SEFUKGEsIENvbnRhaW5zKE5vdChDb250YWlucyg1KSkpKTsKLX0KLQotVEVTVChBbGxPZlRlc3Qs
IEh1Z2VNYXRjaGVyKSB7Ci0gIC8vIFZlcmlmeSB0aGF0IHVzaW5nIEFsbE9mIHdpdGggbWFueSBh
cmd1bWVudHMgZG9lc24ndCBjYXVzZQotICAvLyB0aGUgY29tcGlsZXIgdG8gZXhjZWVkIHRlbXBs
YXRlIGluc3RhbnRpYXRpb24gZGVwdGggbGltaXQuCi0gIEVYUEVDVF9USEFUKDAsIHRlc3Rpbmc6
OkFsbE9mKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OkFsbE9mKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKSk7
Ci19Ci0KLVRFU1QoQW55T2ZUZXN0LCBIdWdlTWF0Y2hlcikgewotICAvLyBWZXJpZnkgdGhhdCB1
c2luZyBBbnlPZiB3aXRoIG1hbnkgYXJndW1lbnRzIGRvZXNuJ3QgY2F1c2UKLSAgLy8gdGhlIGNv
bXBpbGVyIHRvIGV4Y2VlZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIGRlcHRoIGxpbWl0LgotICBF
WFBFQ1RfVEhBVCgwLCB0ZXN0aW5nOjpBbnlPZihfLCBfLCBfLCBfLCBfLCBfLCBfLCBfLCBfLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpBbnlPZihfLCBfLCBfLCBf
LCBfLCBfLCBfLCBfLCBfLCBfKSkpOwotfQotCi1uYW1lc3BhY2UgYWRsX3Rlc3QgewotCi0vLyBW
ZXJpZmllcyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA6OnRlc3Rpbmc6OkFsbE9mIGFuZCA6
OnRlc3Rpbmc6OkFueU9mCi0vLyBkb24ndCBpc3N1ZSB1bnF1YWxpZmllZCByZWN1cnNpdmUgY2Fs
bHMuICBJZiB0aGV5IGRvLCB0aGUgYXJndW1lbnQgZGVwZW5kZW50Ci0vLyBuYW1lIGxvb2t1cCB3
aWxsIGNhdXNlIEFsbE9mL0FueU9mIGluIHRoZSAnYWRsX3Rlc3QnIG5hbWVzcGFjZSB0byBiZSBm
b3VuZAotLy8gYXMgYSBjYW5kaWRhdGUgYW5kIHRoZSBjb21waWxhdGlvbiB3aWxsIGJyZWFrIGR1
ZSB0byBhbiBhbWJpZ3VvdXMgb3ZlcmxvYWQuCi0KLS8vIFRoZSBtYXRjaGVyIG11c3QgYmUgaW4g
dGhlIHNhbWUgbmFtZXNwYWNlIGFzIEFsbE9mL0FueU9mIHRvIG1ha2UgYXJndW1lbnQKLS8vIGRl
cGVuZGVudCBsb29rdXAgZmluZCB0aG9zZS4KLU1BVENIRVIoTSwgIiIpIHsgcmV0dXJuIHRydWU7
IH0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWJvb2wgQWxsT2YoY29u
c3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgcmV0dXJuIHRydWU7IH0KLQotVEVTVChBbGxPZlRl
c3QsIERvZXNOb3RDYWxsQWxsT2ZVbnF1YWxpZmllZCkgewotICBFWFBFQ1RfVEhBVCg0MiwgdGVz
dGluZzo6QWxsT2YoCi0gICAgICBNKCksIE0oKSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0o
KSwgTSgpLCBNKCkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4g
Ym9vbAotQW55T2YoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgcmV0dXJuIHRydWU7IH0K
LQotVEVTVChBbnlPZlRlc3QsIERvZXNOb3RDYWxsQW55T2ZVbnF1YWxpZmllZCkgewotICBFWFBF
Q1RfVEhBVCg0MiwgdGVzdGluZzo6QW55T2YoCi0gICAgICBNKCksIE0oKSwgTSgpLCBNKCksIE0o
KSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCkpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFkbF90
ZXN0Ci0KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQot
fSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWludGVy
bmFsLXV0aWxzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWludGVybmFsLXV0aWxz
X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMjQyM2VjZDM0NGE1MTMw
MDc1ZWZmYzg1YTU4NjMyOGViZDM2YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1pbnRlcm5hbC11dGlsc190ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjk4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcg
QysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVybmFsIHV0
aWxpdGllcy4KLQotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxz
LmgiCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPG1lbW9y
eT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDx2ZWN0
b3I+Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9n
bW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9n
dGVzdC1zcGkuaCIKLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlz
IHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUg
YmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2ls
bCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVz
ZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0v
LyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0K
LSNpZiBHVEVTVF9PU19DWUdXSU4KLSMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBGb3Igc3Np
emVfdC4gTk9MSU5UCi0jZW5kaWYKLQotY2xhc3MgUHJvdG9jb2xNZXNzYWdlOwotCi1uYW1lc3Bh
Y2UgcHJvdG8yIHsKLWNsYXNzIE1lc3NhZ2U7Ci19ICAvLyBuYW1lc3BhY2UgcHJvdG8yCi0KLW5h
bWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLW5hbWVzcGFjZSB7Ci0K
LVRFU1QoQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkc1Rlc3QsIFdvcmtzV2hlbk5hbWVDb250
YWluc05vV29yZCkgewotICBFWFBFQ1RfRVEoIiIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29y
ZHMoIiIpKTsKLSAgRVhQRUNUX0VRKCIiLCBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJf
IikpOwotICBFWFBFQ1RfRVEoIiIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMoIl9fIikp
OwotfQotCi1URVNUKENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHNUZXN0LCBXb3Jrc1doZW5O
YW1lQ29udGFpbnNEaWdpdHMpIHsKLSAgRVhQRUNUX0VRKCIxIiwgQ29udmVydElkZW50aWZpZXJO
YW1lVG9Xb3JkcygiXzEiKSk7Ci0gIEVYUEVDVF9FUSgiMiIsIENvbnZlcnRJZGVudGlmaWVyTmFt
ZVRvV29yZHMoIjJfIikpOwotICBFWFBFQ1RfRVEoIjM0IiwgQ29udmVydElkZW50aWZpZXJOYW1l
VG9Xb3JkcygiXzM0XyIpKTsKLSAgRVhQRUNUX0VRKCIzNCA1NiIsIENvbnZlcnRJZGVudGlmaWVy
TmFtZVRvV29yZHMoIl8zNF81NiIpKTsKLX0KLQotVEVTVChDb252ZXJ0SWRlbnRpZmllck5hbWVU
b1dvcmRzVGVzdCwgV29ya3NXaGVuTmFtZUNvbnRhaW5zQ2FtZWxDYXNlV29yZHMpIHsKLSAgRVhQ
RUNUX0VRKCJhIGJpZyB3b3JkIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiQUJpZ1dv
cmQiKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIGJhciIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29y
ZHMoIkZvb0JhciIpKTsKLSAgRVhQRUNUX0VRKCJmb28iLCBDb252ZXJ0SWRlbnRpZmllck5hbWVU
b1dvcmRzKCJGb29fIikpOwotICBFWFBFQ1RfRVEoImZvbyBiYXIiLCBDb252ZXJ0SWRlbnRpZmll
ck5hbWVUb1dvcmRzKCJfRm9vX0Jhcl8iKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIGFuZCBiYXIiLCBD
b252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJfRm9vX19BbmRfQmFyIikpOwotfQotCi1URVNU
KENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHNUZXN0LCBXb3Jrc1doZW5OYW1lQ29udGFpbnNf
U2VwYXJhdGVkV29yZHMpIHsKLSAgRVhQRUNUX0VRKCJmb28gYmFyIiwgQ29udmVydElkZW50aWZp
ZXJOYW1lVG9Xb3JkcygiZm9vX2JhciIpKTsKLSAgRVhQRUNUX0VRKCJmb28iLCBDb252ZXJ0SWRl
bnRpZmllck5hbWVUb1dvcmRzKCJfZm9vXyIpKTsKLSAgRVhQRUNUX0VRKCJmb28gYmFyIiwgQ29u
dmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX2Zvb19iYXJfIikpOwotICBFWFBFQ1RfRVEoImZv
byBhbmQgYmFyIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX2Zvb19fYW5kX2JhciIp
KTsKLX0KLQotVEVTVChDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzVGVzdCwgV29ya3NXaGVu
TmFtZUlzTWl4dHVyZSkgewotICBFWFBFQ1RfRVEoImZvbyBiYXIgMTIzIiwgQ29udmVydElkZW50
aWZpZXJOYW1lVG9Xb3JkcygiRm9vX2JhcjEyMyIpKTsKLSAgRVhQRUNUX0VRKCJjaGFwdGVyIDEx
IHNlY3Rpb24gMSIsCi0gICAgICAgICAgICBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJf
Q2hhcHRlcjExU2VjdGlvbl8xXyIpKTsKLX0KLQotVEVTVChQb2ludGVlT2ZUZXN0LCBXb3Jrc0Zv
clNtYXJ0UG9pbnRlcnMpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgY2hhciwK
LSAgICAgIFBvaW50ZWVPZjxpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBjaGFyPiA+Ojp0eXBl
PigpOwotI2lmIEdURVNUX0hBU19TVERfVU5JUVVFX1BUUl8KLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8aW50LCBQb2ludGVlT2Y8c3RkOjp1bmlxdWVfcHRyPGludD4gPjo6dHlwZT4oKTsKLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXwotI2lmIEdURVNUX0hBU19TVERfU0hB
UkVEX1BUUl8KLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8c3RkOjpzdHJpbmcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIFBvaW50ZWVPZjxzdGQ6OnNoYXJlZF9wdHI8c3RkOjpzdHJpbmc+
ID46OnR5cGU+KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8KLX0KLQot
VEVTVChQb2ludGVlT2ZUZXN0LCBXb3Jrc0ZvclJhd1BvaW50ZXJzKSB7Ci0gIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGludCwgUG9pbnRlZU9mPGludCo+Ojp0eXBlPigpOwotICBDb21waWxlQXNz
ZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBQb2ludGVlT2Y8Y29uc3QgY2hhcio+Ojp0eXBlPigp
OwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBQb2ludGVlT2Y8dm9pZCo+Ojp0eXBl
PigpOwotfQotCi1URVNUKEdldFJhd1BvaW50ZXJUZXN0LCBXb3Jrc0ZvclNtYXJ0UG9pbnRlcnMp
IHsKLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHJh
d19wMSA9IG5ldyBjb25zdCBjaGFyKCdhJyk7ICAvLyBOT0xJTlQKLSAgY29uc3Qgc3RkOjp1bmlx
dWVfcHRyPGNvbnN0IGNoYXI+IHAxKHJhd19wMSk7Ci0gIEVYUEVDVF9FUShyYXdfcDEsIEdldFJh
d1BvaW50ZXIocDEpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXwotI2lm
IEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8KLSAgZG91YmxlKiBjb25zdCByYXdfcDIgPSBuZXcg
ZG91YmxlKDIuNSk7ICAvLyBOT0xJTlQKLSAgY29uc3Qgc3RkOjpzaGFyZWRfcHRyPGRvdWJsZT4g
cDIocmF3X3AyKTsKLSAgRVhQRUNUX0VRKHJhd19wMiwgR2V0UmF3UG9pbnRlcihwMikpOwotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfU1REX1NIQVJFRF9QVFJfCi0KLSAgY29uc3QgY2hhciogY29uc3Qg
cmF3X3A0ID0gbmV3IGNvbnN0IGNoYXIoJ2EnKTsgIC8vIE5PTElOVAotICBjb25zdCBpbnRlcm5h
bDo6bGlua2VkX3B0cjxjb25zdCBjaGFyPiBwNChyYXdfcDQpOwotICBFWFBFQ1RfRVEocmF3X3A0
LCBHZXRSYXdQb2ludGVyKHA0KSk7Ci19Ci0KLVRFU1QoR2V0UmF3UG9pbnRlclRlc3QsIFdvcmtz
Rm9yUmF3UG9pbnRlcnMpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgLy8gRG9uJ3QgdXNlIEVYUEVD
VF9FUSBhcyBubyBOVUxMLXRlc3RpbmcgbWFnaWMgb24gU3ltYmlhbi4KLSAgRVhQRUNUX1RSVUUo
TlVMTCA9PSBHZXRSYXdQb2ludGVyKHApKTsKLSAgaW50IG4gPSAxOwotICBFWFBFQ1RfRVEoJm4s
IEdldFJhd1BvaW50ZXIoJm4pKTsKLX0KLQotLy8gVGVzdHMgS2luZE9mPFQ+LgotCi1jbGFzcyBC
YXNlIHt9OwotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHt9OwotCi1URVNUKEtpbmRPZlRl
c3QsIEJvb2wpIHsKLSAgRVhQRUNUX0VRKGtCb29sLCBHTU9DS19LSU5EX09GXyhib29sKSk7ICAv
LyBOT0xJTlQKLX0KLQotVEVTVChLaW5kT2ZUZXN0LCBJbnRlZ2VyKSB7Ci0gIEVYUEVDVF9FUShr
SW50ZWdlciwgR01PQ0tfS0lORF9PRl8oY2hhcikpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUShr
SW50ZWdlciwgR01PQ0tfS0lORF9PRl8oc2lnbmVkIGNoYXIpKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHVuc2lnbmVkIGNoYXIpKTsgIC8vIE5PTElO
VAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHNob3J0KSk7ICAvLyBOT0xJ
TlQKLSAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1bnNpZ25lZCBzaG9ydCkp
OyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8oaW50KSk7
ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1bnNpZ25l
ZCBpbnQpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0Zf
KGxvbmcpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0Zf
KHVuc2lnbmVkIGxvbmcpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NL
X0tJTkRfT0ZfKHdjaGFyX3QpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdN
T0NLX0tJTkRfT0ZfKEludDY0KSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBH
TU9DS19LSU5EX09GXyhVSW50NjQpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIs
IEdNT0NLX0tJTkRfT0ZfKHNpemVfdCkpOyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1NfTElOVVgg
fHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX0NZR1dJTgotICAvLyBzc2l6ZV90IGlzIG5vdCBk
ZWZpbmVkIG9uIFdpbmRvd3MgYW5kIHBvc3NpYmx5IHNvbWUgb3RoZXIgT1Nlcy4KLSAgRVhQRUNU
X0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyhzc2l6ZV90KSk7ICAvLyBOT0xJTlQKLSNlbmRp
ZgotfQotCi1URVNUKEtpbmRPZlRlc3QsIEZsb2F0aW5nUG9pbnQpIHsKLSAgRVhQRUNUX0VRKGtG
bG9hdGluZ1BvaW50LCBHTU9DS19LSU5EX09GXyhmbG9hdCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9FUShrRmxvYXRpbmdQb2ludCwgR01PQ0tfS0lORF9PRl8oZG91YmxlKSk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX0VRKGtGbG9hdGluZ1BvaW50LCBHTU9DS19LSU5EX09GXyhsb25nIGRvdWJsZSkp
OyAgLy8gTk9MSU5UCi19Ci0KLVRFU1QoS2luZE9mVGVzdCwgT3RoZXIpIHsKLSAgRVhQRUNUX0VR
KGtPdGhlciwgR01PQ0tfS0lORF9PRl8odm9pZCopKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEo
a090aGVyLCBHTU9DS19LSU5EX09GXyhjaGFyKiopKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEo
a090aGVyLCBHTU9DS19LSU5EX09GXyhCYXNlKSk7ICAvLyBOT0xJTlQKLX0KLQotLy8gVGVzdHMg
TG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8VCwgVT4uCi0KLVRFU1QoTG9zc2xlc3NBcml0
aG1ldGljQ29udmVydGlibGVUZXN0LCBCb29sVG9Cb29sKSB7Ci0gIEVYUEVDVF9UUlVFKChMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxib29sLCBib29sPjo6dmFsdWUpKTsKLX0KLQotVEVT
VChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEJvb2xUb0ludGVnZXIpIHsKLSAg
RVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGJvb2wsIGNoYXI+Ojp2
YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8Ym9v
bCwgaW50Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICAoTG9zc2xlc3NBcml0aG1l
dGljQ29udmVydGlibGU8Ym9vbCwgdW5zaWduZWQgbG9uZz46OnZhbHVlKSk7ICAvLyBOT0xJTlQK
LX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEJvb2xUb0Zsb2F0
aW5nUG9pbnQpIHsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxl
PGJvb2wsIGZsb2F0Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRp
Y0NvbnZlcnRpYmxlPGJvb2wsIGRvdWJsZT46OnZhbHVlKSk7Ci19Ci0KLVRFU1QoTG9zc2xlc3NB
cml0aG1ldGljQ29udmVydGlibGVUZXN0LCBJbnRlZ2VyVG9Cb29sKSB7Ci0gIEVYUEVDVF9GQUxT
RSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8dW5zaWduZWQgY2hhciwgYm9vbD46OnZh
bHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8aW50
LCBib29sPjo6dmFsdWUpKTsKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZVRlc3QsIEludGVnZXJUb0ludGVnZXIpIHsKLSAgLy8gVW5zaWduZWQgPT4gbGFyZ2VyIHNpZ25l
ZCBpcyBmaW5lLgotICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
dW5zaWduZWQgY2hhciwgaW50Pjo6dmFsdWUpKTsKLQotICAvLyBVbnNpZ25lZCA9PiBsYXJnZXIg
dW5zaWduZWQgaXMgZmluZS4KLSAgRVhQRUNUX1RSVUUoCi0gICAgICAoTG9zc2xlc3NBcml0aG1l
dGljQ29udmVydGlibGU8dW5zaWduZWQgc2hvcnQsIFVJbnQ2ND46OnZhbHVlKSk7IC8vIE5PTElO
VAotCi0gIC8vIFNpZ25lZCA9PiB1bnNpZ25lZCBpcyBub3QgZmluZS4KLSAgRVhQRUNUX0ZBTFNF
KChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxzaG9ydCwgVUludDY0Pjo6dmFsdWUpKTsg
Ly8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
Ci0gICAgICBzaWduZWQgY2hhciwgdW5zaWduZWQgaW50Pjo6dmFsdWUpKTsgIC8vIE5PTElOVAot
Ci0gIC8vIFNhbWUgc2l6ZSBhbmQgc2FtZSBzaWduZWRuZXNzOiBmaW5lIHRvby4KLSAgRVhQRUNU
X1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciwgdW5zaWduZWQgY2hhcj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9UUlVFKChMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxpbnQsIGludD46OnZhbHVlKSk7Ci0gIEVYUEVDVF9U
UlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTx3Y2hhcl90LCB3Y2hhcl90Pjo6dmFs
dWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPAotICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZz46OnZhbHVlKSk7ICAvLyBO
T0xJTlQKLQotICAvLyBTYW1lIHNpemUsIGRpZmZlcmVudCBzaWduZWRuZXNzOiBub3QgZmluZS4K
LSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTwKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyLCBzaWduZWQgY2hhcj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9G
QUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8aW50LCB1bnNpZ25lZCBpbnQ+Ojp2
YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPFVJ
bnQ2NCwgSW50NjQ+Ojp2YWx1ZSkpOwotCi0gIC8vIExhcmdlciBzaXplID0+IHNtYWxsZXIgc2l6
ZSBpcyBub3QgZmluZS4KLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0
aWJsZTxsb25nLCBjaGFyPjo6dmFsdWUpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFMU0UoKExv
c3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGludCwgc2lnbmVkIGNoYXI+Ojp2YWx1ZSkpOwot
ICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPEludDY0LCB1bnNp
Z25lZCBpbnQ+Ojp2YWx1ZSkpOwotfQotCi1URVNUKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRp
YmxlVGVzdCwgSW50ZWdlclRvRmxvYXRpbmdQb2ludCkgewotICAvLyBJbnRlZ2VycyBjYW5ub3Qg
YmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8gZmxvYXRpbmctcG9pbnRzLCBhcwotICAvLyB0aGUg
Zm9ybWF0IG9mIHRoZSBsYXR0ZXIgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KLSAgRVhQRUNU
X0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxjaGFyLCBmbG9hdD46OnZhbHVl
KSk7Ci0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8aW50LCBk
b3VibGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZl
cnRpYmxlPAotICAgICAgICAgICAgICAgIHNob3J0LCBsb25nIGRvdWJsZT46OnZhbHVlKSk7ICAv
LyBOT0xJTlQKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEZs
b2F0aW5nUG9pbnRUb0Jvb2wpIHsKLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWND
b252ZXJ0aWJsZTxmbG9hdCwgYm9vbD46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoTG9zc2xl
c3NBcml0aG1ldGljQ29udmVydGlibGU8ZG91YmxlLCBib29sPjo6dmFsdWUpKTsKLX0KLQotVEVT
VChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEZsb2F0aW5nUG9pbnRUb0ludGVn
ZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxmbG9h
dCwgbG9uZz46OnZhbHVlKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0Fy
aXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUsIEludDY0Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX0ZB
TFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxsb25nIGRvdWJsZSwgaW50Pjo6dmFs
dWUpKTsKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEZsb2F0
aW5nUG9pbnRUb0Zsb2F0aW5nUG9pbnQpIHsKLSAgLy8gU21hbGxlciBzaXplID0+IGxhcmdlciBz
aXplIGlzIGZpbmUuCi0gIEVYUEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZTxmbG9hdCwgZG91YmxlPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGht
ZXRpY0NvbnZlcnRpYmxlPGZsb2F0LCBsb25nIGRvdWJsZT46OnZhbHVlKSk7Ci0gIEVYUEVDVF9U
UlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUsIGxvbmcgZG91YmxlPjo6
dmFsdWUpKTsKLQotICAvLyBTYW1lIHNpemU6IGZpbmUuCi0gIEVYUEVDVF9UUlVFKChMb3NzbGVz
c0FyaXRobWV0aWNDb252ZXJ0aWJsZTxmbG9hdCwgZmxvYXQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1Rf
VFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZG91YmxlLCBkb3VibGU+Ojp2YWx1
ZSkpOwotCi0gIC8vIExhcmdlciBzaXplID0+IHNtYWxsZXIgc2l6ZSBpcyBub3QgZmluZS4KLSAg
RVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUsIGZsb2F0
Pjo6dmFsdWUpKTsKLSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCi0gIGlm
IChzaXplb2YoZG91YmxlKSA9PSBzaXplb2YobG9uZyBkb3VibGUpKSB7ICAvLyBOT0xJTlQKLSAg
R1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKLSAgICAvLyBJbiBzb21lIGltcGxl
bWVudGF0aW9ucyAoZS5nLiBNU1ZDKSwgZG91YmxlIGFuZCBsb25nIGRvdWJsZQotICAgIC8vIGhh
dmUgdGhlIHNhbWUgc2l6ZS4KLSAgICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29u
dmVydGlibGU8bG9uZyBkb3VibGUsIGRvdWJsZT46OnZhbHVlKSk7Ci0gIH0gZWxzZSB7Ci0gICAg
RVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxsb25nIGRvdWJsZSwg
ZG91YmxlPjo6dmFsdWUpKTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGUgVHVwbGVNYXRjaGVzKCkg
dGVtcGxhdGUgZnVuY3Rpb24uCi0KLVRFU1QoVHVwbGVNYXRjaGVzVGVzdCwgV29ya3NGb3JTaXpl
MCkgewotICB0dXBsZTw+IG1hdGNoZXJzOwotICB0dXBsZTw+IHZhbHVlczsKLQotICBFWFBFQ1Rf
VFJVRShUdXBsZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlcykpOwotfQotCi1URVNUKFR1cGxlTWF0
Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTEpIHsKLSAgdHVwbGU8TWF0Y2hlcjxpbnQ+ID4gbWF0Y2hl
cnMoRXEoMSkpOwotICB0dXBsZTxpbnQ+IHZhbHVlczEoMSksCi0gICAgICB2YWx1ZXMyKDIpOwot
Ci0gIEVYUEVDVF9UUlVFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwotICBFWFBF
Q1RfRkFMU0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci19Ci0KLVRFU1QoVHVw
bGVNYXRjaGVzVGVzdCwgV29ya3NGb3JTaXplMikgewotICB0dXBsZTxNYXRjaGVyPGludD4sIE1h
dGNoZXI8Y2hhcj4gPiBtYXRjaGVycyhFcSgxKSwgRXEoJ2EnKSk7Ci0gIHR1cGxlPGludCwgY2hh
cj4gdmFsdWVzMSgxLCAnYScpLAotICAgICAgdmFsdWVzMigxLCAnYicpLAotICAgICAgdmFsdWVz
MygyLCAnYScpLAotICAgICAgdmFsdWVzNCgyLCAnYicpOwotCi0gIEVYUEVDVF9UUlVFKFR1cGxl
TWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwotICBFWFBFQ1RfRkFMU0UoVHVwbGVNYXRjaGVz
KG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci0gIEVYUEVDVF9GQUxTRShUdXBsZU1hdGNoZXMobWF0Y2hl
cnMsIHZhbHVlczMpKTsKLSAgRVhQRUNUX0ZBTFNFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFs
dWVzNCkpOwotfQotCi1URVNUKFR1cGxlTWF0Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTUpIHsKLSAg
dHVwbGU8TWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXI+LCBNYXRjaGVyPGJvb2w+LCBNYXRjaGVy
PGxvbmc+LCAgLy8gTk9MSU5UCi0gICAgICAgIE1hdGNoZXI8c3RkOjpzdHJpbmc+ID4KLSAgICAg
IG1hdGNoZXJzKEVxKDEpLCBFcSgnYScpLCBFcSh0cnVlKSwgRXEoMkwpLCBFcSgiaGkiKSk7Ci0g
IHR1cGxlPGludCwgY2hhciwgYm9vbCwgbG9uZywgc3RkOjpzdHJpbmc+ICAvLyBOT0xJTlQKLSAg
ICAgIHZhbHVlczEoMSwgJ2EnLCB0cnVlLCAyTCwgImhpIiksIHZhbHVlczIoMSwgJ2EnLCB0cnVl
LCAyTCwgImhlbGxvIiksCi0gICAgICB2YWx1ZXMzKDIsICdhJywgdHJ1ZSwgMkwsICJoaSIpOwot
Ci0gIEVYUEVDVF9UUlVFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwotICBFWFBF
Q1RfRkFMU0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci0gIEVYUEVDVF9GQUxT
RShUdXBsZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlczMpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBB
c3NlcnQodHJ1ZSwgLi4uKSBzdWNjZWVkcy4KLVRFU1QoQXNzZXJ0VGVzdCwgU3VjY2VlZHNPblRy
dWUpIHsKLSAgQXNzZXJ0KHRydWUsIF9fRklMRV9fLCBfX0xJTkVfXywgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQuIik7Ci0gIEFzc2VydCh0cnVlLCBfX0ZJTEVfXywgX19MSU5FX18pOyAgLy8gVGhpcyBz
aG91bGQgc3VjY2VlZCB0b28uCi19Ci0KLS8vIFRlc3RzIHRoYXQgQXNzZXJ0KGZhbHNlLCAuLi4p
IGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUuCi1URVNUKEFzc2VydFRlc3QsIEZhaWxzRmF0YWxs
eU9uRmFsc2UpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQXNzZXJ0KGZh
bHNlLCBfX0ZJTEVfXywgX19MSU5FX18sICJUaGlzIHNob3VsZCBmYWlsLiIpOwotICB9LCAiIik7
Ci0KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQXNzZXJ0KGZhbHNlLCBfX0ZJ
TEVfXywgX19MSU5FX18pOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRXhwZWN0KHRy
dWUsIC4uLikgc3VjY2VlZHMuCi1URVNUKEV4cGVjdFRlc3QsIFN1Y2NlZWRzT25UcnVlKSB7Ci0g
IEV4cGVjdCh0cnVlLCBfX0ZJTEVfXywgX19MSU5FX18sICJUaGlzIHNob3VsZCBzdWNjZWVkLiIp
OwotICBFeHBlY3QodHJ1ZSwgX19GSUxFX18sIF9fTElORV9fKTsgIC8vIFRoaXMgc2hvdWxkIHN1
Y2NlZWQgdG9vLgotfQotCi0vLyBUZXN0cyB0aGF0IEV4cGVjdChmYWxzZSwgLi4uKSBnZW5lcmF0
ZXMgYSBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0VGVzdCwgRmFpbHNOb25mYXRhbGx5
T25GYWxzZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBF
eHBlY3QoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVfXywgIlRoaXMgc2hvdWxkIGZhaWwuIik7Ci0g
IH0sICJUaGlzIHNob3VsZCBmYWlsIik7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRXhwZWN0KGZhbHNlLCBfX0ZJTEVfXywgX19MSU5FX18pOwotICB9LCAi
RXhwZWN0YXRpb24gZmFpbGVkIik7Ci19Ci0KLS8vIFRlc3RzIExvZ0lzVmlzaWJsZSgpLgotCi1j
bGFzcyBMb2dJc1Zpc2libGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgb3JpZ2luYWxfdmVyYm9zZV8gPSBH
TU9DS19GTEFHKHZlcmJvc2UpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyBH
TU9DS19GTEFHKHZlcmJvc2UpID0gb3JpZ2luYWxfdmVyYm9zZV87IH0KLQotICBzdGQ6OnN0cmlu
ZyBvcmlnaW5hbF92ZXJib3NlXzsKLX07Ci0KLVRFU1RfRihMb2dJc1Zpc2libGVUZXN0LCBBbHdh
eXNSZXR1cm5zVHJ1ZUlmVmVyYm9zaXR5SXNJbmZvKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkg
PSBrSW5mb1ZlcmJvc2l0eTsKLSAgRVhQRUNUX1RSVUUoTG9nSXNWaXNpYmxlKGtJbmZvKSk7Ci0g
IEVYUEVDVF9UUlVFKExvZ0lzVmlzaWJsZShrV2FybmluZykpOwotfQotCi1URVNUX0YoTG9nSXNW
aXNpYmxlVGVzdCwgQWx3YXlzUmV0dXJuc0ZhbHNlSWZWZXJib3NpdHlJc0Vycm9yKSB7Ci0gIEdN
T0NLX0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJib3NpdHk7Ci0gIEVYUEVDVF9GQUxTRShMb2dJ
c1Zpc2libGUoa0luZm8pKTsKLSAgRVhQRUNUX0ZBTFNFKExvZ0lzVmlzaWJsZShrV2FybmluZykp
OwotfQotCi1URVNUX0YoTG9nSXNWaXNpYmxlVGVzdCwgV29ya3NXaGVuVmVyYm9zaXR5SXNXYXJu
aW5nKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrV2FybmluZ1ZlcmJvc2l0eTsKLSAgRVhQ
RUNUX0ZBTFNFKExvZ0lzVmlzaWJsZShrSW5mbykpOwotICBFWFBFQ1RfVFJVRShMb2dJc1Zpc2li
bGUoa1dhcm5pbmcpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQot
Ly8gVGVzdHMgdGhlIExvZygpIGZ1bmN0aW9uLgotCi0vLyBWZXJpZmllcyB0aGF0IExvZygpIGJl
aGF2ZXMgY29ycmVjdGx5IGZvciB0aGUgZ2l2ZW4gdmVyYm9zaXR5IGxldmVsCi0vLyBhbmQgbG9n
IHNldmVyaXR5Lgotdm9pZCBUZXN0TG9nV2l0aFNldmVyaXR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB2
ZXJib3NpdHksIExvZ1NldmVyaXR5IHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgc2hvdWxkX3ByaW50KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG9sZF9mbGFnID0gR01P
Q0tfRkxBRyh2ZXJib3NlKTsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IHZlcmJvc2l0eTsKLSAg
Q2FwdHVyZVN0ZG91dCgpOwotICBMb2coc2V2ZXJpdHksICJUZXN0IGxvZy5cbiIsIDApOwotICBp
ZiAoc2hvdWxkX3ByaW50KSB7Ci0gICAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKS5j
X3N0cigpLAotICAgICAgICAgICAgICAgIENvbnRhaW5zUmVnZXgoCi0gICAgICAgICAgICAgICAg
ICAgIHNldmVyaXR5ID09IGtXYXJuaW5nID8KLSAgICAgICAgICAgICAgICAgICAgIl5cbkdNT0NL
IFdBUk5JTkc6XG5UZXN0IGxvZ1xcLlxuU3RhY2sgdHJhY2U6XG4iIDoKLSAgICAgICAgICAgICAg
ICAgICAgIl5cblRlc3QgbG9nXFwuXG5TdGFjayB0cmFjZTpcbiIpKTsKLSAgfSBlbHNlIHsKLSAg
ICBFWFBFQ1RfU1RSRVEoIiIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0gIH0KLSAg
R01PQ0tfRkxBRyh2ZXJib3NlKSA9IG9sZF9mbGFnOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4g
dGhlIHN0YWNrX2ZyYW1lc190b19za2lwIHBhcmFtZXRlciBpcyBuZWdhdGl2ZSwKLS8vIExvZygp
IGRvZXNuJ3QgaW5jbHVkZSB0aGUgc3RhY2sgdHJhY2UgaW4gdGhlIG91dHB1dC4KLVRFU1QoTG9n
VGVzdCwgTm9TdGFja1RyYWNlV2hlblN0YWNrRnJhbWVzVG9Ta2lwSXNOZWdhdGl2ZSkgewotICBj
b25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKLSAgR01P
Q0tfRkxBRyh2ZXJib3NlKSA9IGtJbmZvVmVyYm9zaXR5OwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0g
IExvZyhrSW5mbywgIlRlc3QgbG9nLlxuIiwgLTEpOwotICBFWFBFQ1RfU1RSRVEoIlxuVGVzdCBs
b2cuXG4iLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwotICBHTU9DS19GTEFHKHZlcmJv
c2UpID0gc2F2ZWRfZmxhZzsKLX0KLQotc3RydWN0IE1vY2tTdGFja1RyYWNlR2V0dGVyIDogdGVz
dGluZzo6aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7Ci0gIHZpcnR1YWwg
c3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNraXBfY291
bnQpIHsKLSAgICByZXR1cm4gKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCBtYXhfZGVwdGggPDwgIjo6
IiA8PCBza2lwX2NvdW50IDw8ICJcbiIpCi0gICAgICAgIC5HZXRTdHJpbmcoKTsKLSAgfQotICB2
aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpIHt9Ci19OwotCi0vLyBUZXN0cyB0aGF0IGlu
IG9wdCBtb2RlLCBhIHBvc2l0aXZlIHN0YWNrX2ZyYW1lc190b19za2lwIGFyZ3VtZW50IGlzCi0v
LyB0cmVhdGVkIGFzIDAuCi1URVNUKExvZ1Rlc3QsIE5vU2tpcHBpbmdTdGFja0ZyYW1lSW5PcHRN
b2RlKSB7Ci0gIE1vY2tTdGFja1RyYWNlR2V0dGVyKiBtb2NrX29zX3N0YWNrX3RyYWNlX2dldHRl
ciA9IG5ldyBNb2NrU3RhY2tUcmFjZUdldHRlcjsKLSAgR2V0VW5pdFRlc3RJbXBsKCktPnNldF9v
c19zdGFja190cmFjZV9nZXR0ZXIobW9ja19vc19zdGFja190cmFjZV9nZXR0ZXIpOwotCi0gIENh
cHR1cmVTdGRvdXQoKTsKLSAgTG9nKGtXYXJuaW5nLCAiVGVzdCBsb2cuXG4iLCAxMDApOwotICBj
b25zdCBzdGQ6OnN0cmluZyBsb2cgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotCi0gIHN0ZDo6c3Ry
aW5nIGV4cGVjdGVkX3RyYWNlID0KLSAgICAgICh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgR1RFU1Rf
RkxBRyhzdGFja190cmFjZV9kZXB0aCkgPDwgIjo6IikuR2V0U3RyaW5nKCk7Ci0gIHN0ZDo6c3Ry
aW5nIGV4cGVjdGVkX21lc3NhZ2UgPQotICAgICAgIlxuR01PQ0sgV0FSTklORzpcbiIKLSAgICAg
ICJUZXN0IGxvZy5cbiIKLSAgICAgICJTdGFjayB0cmFjZTpcbiIgKwotICAgICAgZXhwZWN0ZWRf
dHJhY2U7Ci0gIEVYUEVDVF9USEFUKGxvZywgSGFzU3Vic3RyKGV4cGVjdGVkX21lc3NhZ2UpKTsK
LSAgaW50IHNraXBfY291bnQgPSBhdG9pKGxvZy5zdWJzdHIoZXhwZWN0ZWRfbWVzc2FnZS5zaXpl
KCkpLmNfc3RyKCkpOwotCi0jIGlmIGRlZmluZWQoTkRFQlVHKQotICAvLyBJbiBvcHQgbW9kZSwg
bm8gc3RhY2sgZnJhbWUgc2hvdWxkIGJlIHNraXBwZWQuCi0gIGNvbnN0IGludCBleHBlY3RlZF9z
a2lwX2NvdW50ID0gMDsKLSMgZWxzZQotICAvLyBJbiBkYmcgbW9kZSwgdGhlIHN0YWNrIGZyYW1l
cyBzaG91bGQgYmUgc2tpcHBlZC4KLSAgY29uc3QgaW50IGV4cGVjdGVkX3NraXBfY291bnQgPSAx
MDA7Ci0jIGVuZGlmCi0KLSAgLy8gTm90ZSB0aGF0IGVhY2ggaW5uZXIgaW1wbGVtZW50YXRpb24g
bGF5ZXIgd2lsbCArMSB0aGUgbnVtYmVyIHRvIHJlbW92ZQotICAvLyBpdHNlbGYgZnJvbSB0aGUg
dHJhY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdmFsdWUgaXMgYSBsaXR0bGUgaGlnaGVyIHRoYW4K
LSAgLy8gZXhwZWN0ZWQsIGJ1dCBjbG9zZSBlbm91Z2guCi0gIEVYUEVDVF9USEFUKHNraXBfY291
bnQsCi0gICAgICAgICAgICAgIEFsbE9mKEdlKGV4cGVjdGVkX3NraXBfY291bnQpLCBMZShleHBl
Y3RlZF9za2lwX2NvdW50ICsgMTApKSk7Ci0KLSAgLy8gUmVzdG9yZXMgdGhlIGRlZmF1bHQgT1Mg
c3RhY2sgdHJhY2UgZ2V0dGVyLgotICBHZXRVbml0VGVzdEltcGwoKS0+c2V0X29zX3N0YWNrX3Ry
YWNlX2dldHRlcihOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbGwgbG9ncyBhcmUgcHJpbnRl
ZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUKLS8vIC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlzICJpbmZv
Ii4KLVRFU1QoTG9nVGVzdCwgQWxsTG9nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNJbmZvKSB7
Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoa0luZm9WZXJib3NpdHksIGtJbmZvLCB0cnVlKTsKLSAg
VGVzdExvZ1dpdGhTZXZlcml0eShrSW5mb1ZlcmJvc2l0eSwga1dhcm5pbmcsIHRydWUpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IG9ubHkgd2FybmluZ3MgYXJlIHByaW50ZWQgd2hlbiB0aGUgdmFsdWUg
b2YgdGhlCi0vLyAtLWdtb2NrX3ZlcmJvc2UgZmxhZyBpcyAid2FybmluZyIuCi1URVNUKExvZ1Rl
c3QsIE9ubHlXYXJuaW5nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNXYXJuaW5nKSB7Ci0gIFRl
c3RMb2dXaXRoU2V2ZXJpdHkoa1dhcm5pbmdWZXJib3NpdHksIGtJbmZvLCBmYWxzZSk7Ci0gIFRl
c3RMb2dXaXRoU2V2ZXJpdHkoa1dhcm5pbmdWZXJib3NpdHksIGtXYXJuaW5nLCB0cnVlKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBubyBsb2dzIGFyZSBwcmludGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRo
ZQotLy8gLS1nbW9ja192ZXJib3NlIGZsYWcgaXMgImVycm9yIi4KLVRFU1QoTG9nVGVzdCwgTm9M
b2dzQXJlUHJpbnRlZFdoZW5WZXJib3NpdHlJc0Vycm9yKSB7Ci0gIFRlc3RMb2dXaXRoU2V2ZXJp
dHkoa0Vycm9yVmVyYm9zaXR5LCBrSW5mbywgZmFsc2UpOwotICBUZXN0TG9nV2l0aFNldmVyaXR5
KGtFcnJvclZlcmJvc2l0eSwga1dhcm5pbmcsIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBv
bmx5IHdhcm5pbmdzIGFyZSBwcmludGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZQotLy8gLS1nbW9j
a192ZXJib3NlIGZsYWcgaXMgaW52YWxpZC4KLVRFU1QoTG9nVGVzdCwgT25seVdhcm5pbmdzQXJl
UHJpbnRlZFdoZW5WZXJib3NpdHlJc0ludmFsaWQpIHsKLSAgVGVzdExvZ1dpdGhTZXZlcml0eSgi
aW52YWxpZCIsIGtJbmZvLCBmYWxzZSk7Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoImludmFsaWQi
LCBrV2FybmluZywgdHJ1ZSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTgotCi1URVNUKFR5cGVUcmFpdHNUZXN0LCB0cnVlX3R5cGUpIHsKLSAgRVhQRUNUX1RS
VUUodHJ1ZV90eXBlOjp2YWx1ZSk7Ci19Ci0KLVRFU1QoVHlwZVRyYWl0c1Rlc3QsIGZhbHNlX3R5
cGUpIHsKLSAgRVhQRUNUX0ZBTFNFKGZhbHNlX3R5cGU6OnZhbHVlKTsKLX0KLQotVEVTVChUeXBl
VHJhaXRzVGVzdCwgaXNfcmVmZXJlbmNlKSB7Ci0gIEVYUEVDVF9GQUxTRShpc19yZWZlcmVuY2U8
aW50Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFMU0UoaXNfcmVmZXJlbmNlPGNoYXIqPjo6dmFsdWUp
OwotICBFWFBFQ1RfVFJVRShpc19yZWZlcmVuY2U8Y29uc3QgaW50Jj46OnZhbHVlKTsKLX0KLQot
VEVTVChUeXBlVHJhaXRzVGVzdCwgaXNfcG9pbnRlcikgewotICBFWFBFQ1RfRkFMU0UoaXNfcG9p
bnRlcjxpbnQ+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShpc19wb2ludGVyPGNoYXImPjo6dmFs
dWUpOwotICBFWFBFQ1RfVFJVRShpc19wb2ludGVyPGNvbnN0IGludCo+Ojp2YWx1ZSk7Ci19Ci0K
LVRFU1QoVHlwZVRyYWl0c1Rlc3QsIHR5cGVfZXF1YWxzKSB7Ci0gIEVYUEVDVF9GQUxTRSgodHlw
ZV9lcXVhbHM8aW50LCBjb25zdCBpbnQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKHR5cGVf
ZXF1YWxzPGludCwgaW50Jj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgodHlwZV9lcXVhbHM8
aW50LCBkb3VibGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVhbHM8Y2hhciwg
Y2hhcj46OnZhbHVlKSk7Ci19Ci0KLVRFU1QoVHlwZVRyYWl0c1Rlc3QsIHJlbW92ZV9yZWZlcmVu
Y2UpIHsKLSAgRVhQRUNUX1RSVUUoKHR5cGVfZXF1YWxzPGNoYXIsIHJlbW92ZV9yZWZlcmVuY2U8
Y2hhciY+Ojp0eXBlPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKHR5cGVfZXF1YWxzPGNvbnN0
IGludCwKLSAgICAgICAgICAgICAgIHJlbW92ZV9yZWZlcmVuY2U8Y29uc3QgaW50Jj46OnR5cGU+
Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVhbHM8aW50LCByZW1vdmVfcmVmZXJl
bmNlPGludD46OnR5cGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVhbHM8ZG91
YmxlKiwgcmVtb3ZlX3JlZmVyZW5jZTxkb3VibGUqPjo6dHlwZT46OnZhbHVlKSk7Ci19Ci0KLSNp
ZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFZlcmlmaWVzIHRoYXQgTG9nKCkg
YmVoYXZlcyBjb3JyZWN0bHkgZm9yIHRoZSBnaXZlbiB2ZXJib3NpdHkgbGV2ZWwKLS8vIGFuZCBs
b2cgc2V2ZXJpdHkuCi1zdGQ6OnN0cmluZyBHcmFiT3V0cHV0KHZvaWQoKmxvZ2dlcikoKSwgY29u
c3QgY2hhciogdmVyYm9zaXR5KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBH
TU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9DS19GTEFHKHZlcmJvc2UpID0gdmVyYm9zaXR5Owot
ICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGxvZ2dlcigpOwotICBHTU9DS19GTEFHKHZlcmJvc2UpID0g
c2F2ZWRfZmxhZzsKLSAgcmV0dXJuIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci19Ci0KLWNsYXNzIER1
bW15TW9jayB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAoVGVzdE1ldGhvZCwgdm9pZCgpKTsK
LSAgTU9DS19NRVRIT0QxKFRlc3RNZXRob2RBcmcsIHZvaWQoaW50IGR1bW15KSk7Ci19OwotCi12
b2lkIEV4cGVjdENhbGxMb2dnZXIoKSB7Ci0gIER1bW15TW9jayBtb2NrOwotICBFWFBFQ1RfQ0FM
TChtb2NrLCBUZXN0TWV0aG9kKCkpOwotICBtb2NrLlRlc3RNZXRob2QoKTsKLX07Ci0KLS8vIFZl
cmlmaWVzIHRoYXQgRVhQRUNUX0NBTEwgbG9ncyBpZiB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcg
aXMgc2V0IHRvICJpbmZvIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIExvZ3NXaGVuVmVyYm9zaXR5
SXNJbmZvKSB7Ci0gIEVYUEVDVF9USEFUKHN0ZDo6c3RyaW5nKEdyYWJPdXRwdXQoRXhwZWN0Q2Fs
bExvZ2dlciwga0luZm9WZXJib3NpdHkpKSwKLSAgICAgICAgICAgICAgSGFzU3Vic3RyKCJFWFBF
Q1RfQ0FMTChtb2NrLCBUZXN0TWV0aG9kKCkpIikpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IEVY
UEVDVF9DQUxMIGRvZXNuJ3QgbG9nCi0vLyBpZiB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcgaXMg
c2V0IHRvICJ3YXJuaW5nIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIERvZXNOb3RMb2dXaGVuVmVy
Ym9zaXR5SXNXYXJuaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR3JhYk91dHB1dChFeHBlY3RD
YWxsTG9nZ2VyLCBrV2FybmluZ1ZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLS8vIFZlcmlmaWVz
IHRoYXQgRVhQRUNUX0NBTEwgZG9lc24ndCBsb2cKLS8vIGlmIHRoZSAtLWdtb2NrX3ZlcmJvc2Ug
ZmxhZyBpcyBzZXQgdG8gImVycm9yIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsICBEb2VzTm90TG9n
V2hlblZlcmJvc2l0eUlzRXJyb3IpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHcmFiT3V0cHV0KEV4
cGVjdENhbGxMb2dnZXIsIGtFcnJvclZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLXZvaWQgT25D
YWxsTG9nZ2VyKCkgewotICBEdW1teU1vY2sgbW9jazsKLSAgT05fQ0FMTChtb2NrLCBUZXN0TWV0
aG9kKCkpOwotfTsKLQotLy8gVmVyaWZpZXMgdGhhdCBPTl9DQUxMIGxvZ3MgaWYgdGhlIC0tZ21v
Y2tfdmVyYm9zZSBmbGFnIGlzIHNldCB0byAiaW5mbyIuCi1URVNUKE9uQ2FsbFRlc3QsIExvZ3NX
aGVuVmVyYm9zaXR5SXNJbmZvKSB7Ci0gIEVYUEVDVF9USEFUKHN0ZDo6c3RyaW5nKEdyYWJPdXRw
dXQoT25DYWxsTG9nZ2VyLCBrSW5mb1ZlcmJvc2l0eSkpLAotICAgICAgICAgICAgICBIYXNTdWJz
dHIoIk9OX0NBTEwobW9jaywgVGVzdE1ldGhvZCgpKSIpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhh
dCBPTl9DQUxMIGRvZXNuJ3QgbG9nCi0vLyBpZiB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcgaXMg
c2V0IHRvICJ3YXJuaW5nIi4KLVRFU1QoT25DYWxsVGVzdCwgRG9lc05vdExvZ1doZW5WZXJib3Np
dHlJc1dhcm5pbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHcmFiT3V0cHV0KE9uQ2FsbExvZ2dl
ciwga1dhcm5pbmdWZXJib3NpdHkpLmNfc3RyKCkpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IE9O
X0NBTEwgZG9lc24ndCBsb2cgaWYKLS8vIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZyBpcyBzZXQg
dG8gImVycm9yIi4KLVRFU1QoT25DYWxsVGVzdCwgRG9lc05vdExvZ1doZW5WZXJib3NpdHlJc0Vy
cm9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR3JhYk91dHB1dChPbkNhbGxMb2dnZXIsIGtFcnJv
clZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLXZvaWQgT25DYWxsQW55QXJndW1lbnRMb2dnZXIo
KSB7Ci0gIER1bW15TW9jayBtb2NrOwotICBPTl9DQUxMKG1vY2ssIFRlc3RNZXRob2RBcmcoXykp
OwotfQotCi0vLyBWZXJpZmllcyB0aGF0IE9OX0NBTEwgcHJpbnRzIHByb3ZpZGVkIF8gYXJndW1l
bnQuCi1URVNUKE9uQ2FsbFRlc3QsIExvZ3NBbnl0aGluZ0FyZ3VtZW50KSB7Ci0gIEVYUEVDVF9U
SEFUKHN0ZDo6c3RyaW5nKEdyYWJPdXRwdXQoT25DYWxsQW55QXJndW1lbnRMb2dnZXIsIGtJbmZv
VmVyYm9zaXR5KSksCi0gICAgICAgICAgICAgIEhhc1N1YnN0cigiT05fQ0FMTChtb2NrLCBUZXN0
TWV0aG9kQXJnKF8pIikpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJF
Q1RJT04KLQotLy8gVGVzdHMgU3RsQ29udGFpbmVyVmlldy4KLQotVEVTVChTdGxDb250YWluZXJW
aWV3VGVzdCwgV29ya3NGb3JTdGxDb250YWluZXIpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPHN0
ZDo6dmVjdG9yPGludD4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PHN0ZDo6dmVjdG9yPGludD4g
Pjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IHN0ZDo6dmVjdG9yPGRvdWJs
ZT4mLAotICAgICAgU3RsQ29udGFpbmVyVmlldzxzdGQ6OnZlY3Rvcjxkb3VibGU+ID46OmNvbnN0
X3JlZmVyZW5jZT4oKTsKLQotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXI+IENoYXJzOwotICBD
aGFycyB2MTsKLSAgY29uc3QgQ2hhcnMmIHYyKFN0bENvbnRhaW5lclZpZXc8Q2hhcnM+OjpDb25z
dFJlZmVyZW5jZSh2MSkpOwotICBFWFBFQ1RfRVEoJnYxLCAmdjIpOwotCi0gIHYxLnB1c2hfYmFj
aygnYScpOwotICBDaGFycyB2MyA9IFN0bENvbnRhaW5lclZpZXc8Q2hhcnM+OjpDb3B5KHYxKTsK
LSAgRVhQRUNUX1RIQVQodjMsIEVxKHYzKSk7Ci19Ci0KLVRFU1QoU3RsQ29udGFpbmVyVmlld1Rl
c3QsIFdvcmtzRm9yU3RhdGljTmF0aXZlQXJyYXkpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPE5h
dGl2ZUFycmF5PGludD4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PGludFszXT46OnR5cGU+KCk7
Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxOYXRpdmVBcnJheTxkb3VibGU+LAotICAgICAgU3RsQ29u
dGFpbmVyVmlldzxjb25zdCBkb3VibGVbNF0+Ojp0eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBl
RXE8TmF0aXZlQXJyYXk8Y2hhclszXT4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PGNvbnN0IGNo
YXJbMl1bM10+Ojp0eXBlPigpOwotCi0gIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBOYXRpdmVB
cnJheTxpbnQ+LAotICAgICAgU3RsQ29udGFpbmVyVmlldzxpbnRbMl0+Ojpjb25zdF9yZWZlcmVu
Y2U+KCk7Ci0KLSAgaW50IGExWzNdID0geyAwLCAxLCAyIH07Ci0gIE5hdGl2ZUFycmF5PGludD4g
YTIgPSBTdGxDb250YWluZXJWaWV3PGludFszXT46OkNvbnN0UmVmZXJlbmNlKGExKTsKLSAgRVhQ
RUNUX0VRKDNVLCBhMi5zaXplKCkpOwotICBFWFBFQ1RfRVEoYTEsIGEyLmJlZ2luKCkpOwotCi0g
IGNvbnN0IE5hdGl2ZUFycmF5PGludD4gYTMgPSBTdGxDb250YWluZXJWaWV3PGludFszXT46OkNv
cHkoYTEpOwotICBBU1NFUlRfRVEoM1UsIGEzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgwLCBhMy5i
ZWdpbigpWzBdKTsKLSAgRVhQRUNUX0VRKDEsIGEzLmJlZ2luKClbMV0pOwotICBFWFBFQ1RfRVEo
MiwgYTMuYmVnaW4oKVsyXSk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBhMSBhbmQgYTMgYXJlbid0IGFs
aWFzZXMuCi0gIGExWzBdID0gMzsKLSAgRVhQRUNUX0VRKDAsIGEzLmJlZ2luKClbMF0pOwotfQot
Ci1URVNUKFN0bENvbnRhaW5lclZpZXdUZXN0LCBXb3Jrc0ZvckR5bmFtaWNOYXRpdmVBcnJheSkg
ewotICBTdGF0aWNBc3NlcnRUeXBlRXE8TmF0aXZlQXJyYXk8aW50PiwKLSAgICAgIFN0bENvbnRh
aW5lclZpZXc8dHVwbGU8Y29uc3QgaW50Kiwgc2l6ZV90PiA+Ojp0eXBlPigpOwotICBTdGF0aWNB
c3NlcnRUeXBlRXE8TmF0aXZlQXJyYXk8ZG91YmxlPiwKLSAgICAgIFN0bENvbnRhaW5lclZpZXc8
dHVwbGU8bGlua2VkX3B0cjxkb3VibGU+LCBpbnQ+ID46OnR5cGU+KCk7Ci0KLSAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGNvbnN0IE5hdGl2ZUFycmF5PGludD4sCi0gICAgICBTdGxDb250YWluZXJWaWV3
PHR1cGxlPGNvbnN0IGludCosIGludD4gPjo6Y29uc3RfcmVmZXJlbmNlPigpOwotCi0gIGludCBh
MVszXSA9IHsgMCwgMSwgMiB9OwotICBjb25zdCBpbnQqIGNvbnN0IHAxID0gYTE7Ci0gIE5hdGl2
ZUFycmF5PGludD4gYTIgPSBTdGxDb250YWluZXJWaWV3PHR1cGxlPGNvbnN0IGludCosIGludD4g
Pjo6Ci0gICAgICBDb25zdFJlZmVyZW5jZShtYWtlX3R1cGxlKHAxLCAzKSk7Ci0gIEVYUEVDVF9F
USgzVSwgYTIuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGExLCBhMi5iZWdpbigpKTsKLQotICBjb25z
dCBOYXRpdmVBcnJheTxpbnQ+IGEzID0gU3RsQ29udGFpbmVyVmlldzx0dXBsZTxpbnQqLCBzaXpl
X3Q+ID46OgotICAgICAgQ29weShtYWtlX3R1cGxlKHN0YXRpY19jYXN0PGludCo+KGExKSwgMykp
OwotICBBU1NFUlRfRVEoM1UsIGEzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgwLCBhMy5iZWdpbigp
WzBdKTsKLSAgRVhQRUNUX0VRKDEsIGEzLmJlZ2luKClbMV0pOwotICBFWFBFQ1RfRVEoMiwgYTMu
YmVnaW4oKVsyXSk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBhMSBhbmQgYTMgYXJlbid0IGFsaWFzZXMu
Ci0gIGExWzBdID0gMzsKLSAgRVhQRUNUX0VRKDAsIGEzLmJlZ2luKClbMF0pOwotfQotCi19ICAv
LyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbWF0Y2hlcnNfdGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbWF0Y2hlcnNfdGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjVhYjdjODE4ZGFkOTY0MDI1NjZmY2EwMzQzOTk5ZmE3ZDhlYjNh
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrLW1hdGNoZXJzX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NjU4
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBN
b2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBU
aGlzIGZpbGUgdGVzdHMgc29tZSBjb21tb25seSB1c2VkIGFyZ3VtZW50IG1hdGNoZXJzLgotCi0j
aW5jbHVkZSAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCIKLSNpbmNsdWRlICJnbW9jay9nbW9jay1t
b3JlLW1hdGNoZXJzLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx0aW1lLmg+
Ci0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDxpb3N0
cmVhbT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8
bGlzdD4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHNzdHJlYW0+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9y
PgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNp
bmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotI2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9M
SVNUXwotIyBpbmNsdWRlIDxmb3J3YXJkX2xpc3Q+ICAvLyBOT0xJTlQKLSNlbmRpZgotCi1uYW1l
c3BhY2UgdGVzdGluZyB7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1HVEVTVF9BUElfIHN0cmlu
ZyBKb2luQXNUdXBsZShjb25zdCBTdHJpbmdzJiBmaWVsZHMpOwotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi0KLW5hbWVzcGFjZSBnbW9ja19tYXRjaGVyc190ZXN0IHsKLQotdXNpbmcgc3RkOjpn
cmVhdGVyOwotdXNpbmcgc3RkOjpsZXNzOwotdXNpbmcgc3RkOjpsaXN0OwotdXNpbmcgc3RkOjpt
YWtlX3BhaXI7Ci11c2luZyBzdGQ6Om1hcDsKLXVzaW5nIHN0ZDo6bXVsdGltYXA7Ci11c2luZyBz
dGQ6Om11bHRpc2V0OwotdXNpbmcgc3RkOjpvc3RyZWFtOwotdXNpbmcgc3RkOjpwYWlyOwotdXNp
bmcgc3RkOjpzZXQ7Ci11c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKLXVzaW5nIHN0ZDo6dmVjdG9y
OwotdXNpbmcgdGVzdGluZzo6QTsKLXVzaW5nIHRlc3Rpbmc6OkFsbEFyZ3M7Ci11c2luZyB0ZXN0
aW5nOjpBbGxPZjsKLXVzaW5nIHRlc3Rpbmc6OkFuOwotdXNpbmcgdGVzdGluZzo6QW55T2Y7Ci11
c2luZyB0ZXN0aW5nOjpCeVJlZjsKLXVzaW5nIHRlc3Rpbmc6OkNvbnRhaW5zUmVnZXg7Ci11c2lu
ZyB0ZXN0aW5nOjpEb3VibGVFcTsKLXVzaW5nIHRlc3Rpbmc6OkRvdWJsZU5lYXI7Ci11c2luZyB0
ZXN0aW5nOjpFbmRzV2l0aDsKLXVzaW5nIHRlc3Rpbmc6OkVxOwotdXNpbmcgdGVzdGluZzo6RXhw
bGFpbk1hdGNoUmVzdWx0OwotdXNpbmcgdGVzdGluZzo6RmllbGQ7Ci11c2luZyB0ZXN0aW5nOjpG
bG9hdEVxOwotdXNpbmcgdGVzdGluZzo6RmxvYXROZWFyOwotdXNpbmcgdGVzdGluZzo6R2U7Ci11
c2luZyB0ZXN0aW5nOjpHdDsKLXVzaW5nIHRlc3Rpbmc6Okhhc1N1YnN0cjsKLXVzaW5nIHRlc3Rp
bmc6OklzRW1wdHk7Ci11c2luZyB0ZXN0aW5nOjpJc051bGw7Ci11c2luZyB0ZXN0aW5nOjpLZXk7
Ci11c2luZyB0ZXN0aW5nOjpMZTsKLXVzaW5nIHRlc3Rpbmc6Okx0OwotdXNpbmcgdGVzdGluZzo6
TWFrZU1hdGNoZXI7Ci11c2luZyB0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNp
bmcgdGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoZXI7
Ci11c2luZyB0ZXN0aW5nOjpNYXRjaGVyQ2FzdDsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoZXJJbnRl
cmZhY2U7Ci11c2luZyB0ZXN0aW5nOjpNYXRjaGVzOwotdXNpbmcgdGVzdGluZzo6TWF0Y2hlc1Jl
Z2V4OwotdXNpbmcgdGVzdGluZzo6TmFuU2Vuc2l0aXZlRG91YmxlRXE7Ci11c2luZyB0ZXN0aW5n
OjpOYW5TZW5zaXRpdmVEb3VibGVOZWFyOwotdXNpbmcgdGVzdGluZzo6TmFuU2Vuc2l0aXZlRmxv
YXRFcTsKLXVzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZUZsb2F0TmVhcjsKLXVzaW5nIHRlc3Rp
bmc6Ok5lOwotdXNpbmcgdGVzdGluZzo6Tm90OwotdXNpbmcgdGVzdGluZzo6Tm90TnVsbDsKLXVz
aW5nIHRlc3Rpbmc6OlBhaXI7Ci11c2luZyB0ZXN0aW5nOjpQb2ludGVlOwotdXNpbmcgdGVzdGlu
Zzo6UG9pbnR3aXNlOwotdXNpbmcgdGVzdGluZzo6UG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcg
dGVzdGluZzo6UHJvcGVydHk7Ci11c2luZyB0ZXN0aW5nOjpSZWY7Ci11c2luZyB0ZXN0aW5nOjpS
ZXN1bHRPZjsKLXVzaW5nIHRlc3Rpbmc6OlNpemVJczsKLXVzaW5nIHRlc3Rpbmc6OlN0YXJ0c1dp
dGg7Ci11c2luZyB0ZXN0aW5nOjpTdHJDYXNlRXE7Ci11c2luZyB0ZXN0aW5nOjpTdHJDYXNlTmU7
Ci11c2luZyB0ZXN0aW5nOjpTdHJFcTsKLXVzaW5nIHRlc3Rpbmc6OlN0ck5lOwotdXNpbmcgdGVz
dGluZzo6U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLXVzaW5nIHRlc3Rpbmc6OlRydWx5Owot
dXNpbmcgdGVzdGluZzo6VHlwZWRFcTsKLXVzaW5nIHRlc3Rpbmc6OlVub3JkZXJlZFBvaW50d2lz
ZTsKLXVzaW5nIHRlc3Rpbmc6OlZhbHVlOwotdXNpbmcgdGVzdGluZzo6V2hlblNvcnRlZDsKLXVz
aW5nIHRlc3Rpbmc6OldoZW5Tb3J0ZWRCeTsKLXVzaW5nIHRlc3Rpbmc6Ol87Ci11c2luZyB0ZXN0
aW5nOjpnZXQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RHVtbXlNYXRjaFJlc3VsdExpc3Rl
bmVyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkVsZW1lbnRNYXRjaGVyUGFpcjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpFbGVtZW50TWF0Y2hlclBhaXJzOwotdXNpbmcgdGVzdGluZzo6
aW50ZXJuYWw6OkV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvcm1h
dE1hdGNoZXJEZXNjcmlwdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc1JlYWRhYmxl
VHlwZU5hbWU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Sm9pbkFzVHVwbGU7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpN
YXRjaE1hdHJpeDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSRTsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpzY29wZWRfcHRyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbU1h
dGNoUmVzdWx0TGlzdGVuZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nczsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OnNjb3BlZF9wdHI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nOwotdXNpbmcg
dGVzdGluZzo6bWFrZV90dXBsZTsKLXVzaW5nIHRlc3Rpbmc6OnR1cGxlOwotCi0vLyBGb3IgdGVz
dGluZyBFeHBsYWluTWF0Y2hSZXN1bHRUbygpLgotY2xhc3MgR3JlYXRlclRoYW5NYXRjaGVyIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHcmVh
dGVyVGhhbk1hdGNoZXIoaW50IHJocykgOiByaHNfKHJocykge30KLQotICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgPiAiIDw8IHJo
c187Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBsaHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICBjb25zdCBpbnQgZGlmZiA9IGxocyAtIHJoc187Ci0gICAgaWYgKGRpZmYg
PiAwKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzICIgPDwgZGlmZiA8PCAiIG1vcmUg
dGhhbiAiIDw8IHJoc187Ci0gICAgfSBlbHNlIGlmIChkaWZmID09IDApIHsKLSAgICAgICpsaXN0
ZW5lciA8PCAid2hpY2ggaXMgdGhlIHNhbWUgYXMgIiA8PCByaHNfOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzICIgPDwgLWRpZmYgPDwgIiBsZXNzIHRoYW4gIiA8
PCByaHNfOwotICAgIH0KLQotICAgIHJldHVybiBsaHMgPiByaHNfOwotICB9Ci0KLSBwcml2YXRl
OgotICBpbnQgcmhzXzsKLX07Ci0KLU1hdGNoZXI8aW50PiBHcmVhdGVyVGhhbihpbnQgbikgewot
ICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEdyZWF0ZXJUaGFuTWF0Y2hlcihuKSk7Ci19Ci0KLXN0
ZDo6c3RyaW5nIE9mVHlwZShjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9uYW1lKSB7Ci0jaWYgR1RF
U1RfSEFTX1JUVEkKLSAgcmV0dXJuICIgKG9mIHR5cGUgIiArIHR5cGVfbmFtZSArICIpIjsKLSNl
bHNlCi0gIHJldHVybiAiIjsKLSNlbmRpZgotfQotCi0vLyBSZXR1cm5zIHRoZSBkZXNjcmlwdGlv
biBvZiB0aGUgZ2l2ZW4gbWF0Y2hlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjpzdHJp
bmcgRGVzY3JpYmUoY29uc3QgTWF0Y2hlcjxUPiYgbSkgewotICBzdHJpbmdzdHJlYW0gc3M7Ci0g
IG0uRGVzY3JpYmVUbygmc3MpOwotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZWdhdGlvbiBvZiB0aGUgZ2l2ZW4gbWF0Y2hlci4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjpzdHJpbmcgRGVzY3JpYmVOZWdhdGlvbihjb25zdCBN
YXRjaGVyPFQ+JiBtKSB7Ci0gIHN0cmluZ3N0cmVhbSBzczsKLSAgbS5EZXNjcmliZU5lZ2F0aW9u
VG8oJnNzKTsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCi0vLyBSZXR1cm5zIHRoZSByZWFzb24g
d2h5IHggbWF0Y2hlcywgb3IgZG9lc24ndCBtYXRjaCwgbS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBN
YXRjaGVyVHlwZSwgdHlwZW5hbWUgVmFsdWU+Ci1zdGQ6OnN0cmluZyBFeHBsYWluKGNvbnN0IE1h
dGNoZXJUeXBlJiBtLCBjb25zdCBWYWx1ZSYgeCkgewotICBTdHJpbmdNYXRjaFJlc3VsdExpc3Rl
bmVyIGxpc3RlbmVyOwotICBFeHBsYWluTWF0Y2hSZXN1bHQobSwgeCwgJmxpc3RlbmVyKTsKLSAg
cmV0dXJuIGxpc3RlbmVyLnN0cigpOwotfQotCi1URVNUKE1hdGNoUmVzdWx0TGlzdGVuZXJUZXN0
LCBTdHJlYW1pbmdXb3JrcykgewotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVy
OwotICBsaXN0ZW5lciA8PCAiaGkiIDw8IDU7Ci0gIEVYUEVDVF9FUSgiaGk1IiwgbGlzdGVuZXIu
c3RyKCkpOwotCi0gIGxpc3RlbmVyLkNsZWFyKCk7Ci0gIEVYUEVDVF9FUSgiIiwgbGlzdGVuZXIu
c3RyKCkpOwotCi0gIGxpc3RlbmVyIDw8IDQyOwotICBFWFBFQ1RfRVEoIjQyIiwgbGlzdGVuZXIu
c3RyKCkpOwotCi0gIC8vIFN0cmVhbWluZyBzaG91bGRuJ3QgY3Jhc2ggd2hlbiB0aGUgdW5kZXJs
eWluZyBvc3RyZWFtIGlzIE5VTEwuCi0gIER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lciBkdW1teTsK
LSAgZHVtbXkgPDwgImhpIiA8PCA1OwotfQotCi1URVNUKE1hdGNoUmVzdWx0TGlzdGVuZXJUZXN0
LCBDYW5BY2Nlc3NVbmRlcmx5aW5nU3RyZWFtKSB7Ci0gIEVYUEVDVF9UUlVFKER1bW15TWF0Y2hS
ZXN1bHRMaXN0ZW5lcigpLnN0cmVhbSgpID09IE5VTEwpOwotICBFWFBFQ1RfVFJVRShTdHJlYW1N
YXRjaFJlc3VsdExpc3RlbmVyKE5VTEwpLnN0cmVhbSgpID09IE5VTEwpOwotCi0gIEVYUEVDVF9F
USgmc3RkOjpjb3V0LCBTdHJlYW1NYXRjaFJlc3VsdExpc3RlbmVyKCZzdGQ6OmNvdXQpLnN0cmVh
bSgpKTsKLX0KLQotVEVTVChNYXRjaFJlc3VsdExpc3RlbmVyVGVzdCwgSXNJbnRlcmVzdGVkV29y
a3MpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lcigpLklzSW50ZXJl
c3RlZCgpKTsKLSAgRVhQRUNUX1RSVUUoU3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lcigmc3RkOjpj
b3V0KS5Jc0ludGVyZXN0ZWQoKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKER1bW15TWF0Y2hSZXN1bHRM
aXN0ZW5lcigpLklzSW50ZXJlc3RlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmVhbU1hdGNoUmVz
dWx0TGlzdGVuZXIoTlVMTCkuSXNJbnRlcmVzdGVkKCkpOwotfQotCi0vLyBNYWtlcyBzdXJlIHRo
YXQgdGhlIE1hdGNoZXJJbnRlcmZhY2U8VD4gaW50ZXJmYWNlIGRvZXNuJ3QKLS8vIGNoYW5nZS4K
LWNsYXNzIEV2ZW5NYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4gewot
IHB1YmxpYzoKLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihpbnQgeCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAq
LykgY29uc3QgewotICAgIHJldHVybiB4ICUgMiA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFuIGV2ZW4g
bnVtYmVyIjsKLSAgfQotCi0gIC8vIFdlIGRlbGliZXJhdGVseSBkb24ndCBkZWZpbmUgRGVzY3Jp
YmVOZWdhdGlvblRvKCkgYW5kCi0gIC8vIEV4cGxhaW5NYXRjaFJlc3VsdFRvKCkgaGVyZSwgdG8g
bWFrZSBzdXJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZXNlCi0gIC8vIHR3byBtZXRob2RzIGlzIG9w
dGlvbmFsLgotfTsKLQotLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBNYXRjaGVySW50ZXJmYWNlIEFQ
SSBkb2Vzbid0IGNoYW5nZS4KLVRFU1QoTWF0Y2hlckludGVyZmFjZVRlc3QsIENhbkJlSW1wbGVt
ZW50ZWRVc2luZ1B1Ymxpc2hlZEFQSSkgewotICBFdmVuTWF0Y2hlckltcGwgbTsKLX0KLQotLy8g
VGVzdHMgaW1wbGVtZW50aW5nIGEgbW9ub21vcnBoaWMgbWF0Y2hlciB1c2luZyBNYXRjaEFuZEV4
cGxhaW4oKS4KLQotY2xhc3MgTmV3RXZlbk1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRl
cmZhY2U8aW50PiB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGlu
dCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIGNvbnN0IGJv
b2wgbWF0Y2ggPSB4ICUgMiA9PSAwOwotICAgIC8vIFZlcmlmaWVzIHRoYXQgd2UgY2FuIHN0cmVh
bSB0byBhIGxpc3RlbmVyIGRpcmVjdGx5LgotICAgICpsaXN0ZW5lciA8PCAidmFsdWUgJSAiIDw8
IDI7Ci0gICAgaWYgKGxpc3RlbmVyLT5zdHJlYW0oKSAhPSBOVUxMKSB7Ci0gICAgICAvLyBWZXJp
ZmllcyB0aGF0IHdlIGNhbiBzdHJlYW0gdG8gYSBsaXN0ZW5lcidzIHVuZGVybHlpbmcgc3RyZWFt
Ci0gICAgICAvLyB0b28uCi0gICAgICAqbGlzdGVuZXItPnN0cmVhbSgpIDw8ICIgPT0gIiA8PCAo
eCAlIDIpOwotICAgIH0KLSAgICByZXR1cm4gbWF0Y2g7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgYW4gZXZlbiBu
dW1iZXIiOwotICB9Ci19OwotCi1URVNUKE1hdGNoZXJJbnRlcmZhY2VUZXN0LCBDYW5CZUltcGxl
bWVudGVkVXNpbmdOZXdBUEkpIHsKLSAgTWF0Y2hlcjxpbnQ+IG0gPSBNYWtlTWF0Y2hlcihuZXcg
TmV3RXZlbk1hdGNoZXJJbXBsKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcygzKSk7Ci0gIEVYUEVDVF9FUSgidmFsdWUgJSAyID09IDAiLCBF
eHBsYWluKG0sIDIpKTsKLSAgRVhQRUNUX0VRKCJ2YWx1ZSAlIDIgPT0gMSIsIEV4cGxhaW4obSwg
MykpOwotfQotCi0vLyBUZXN0cyBkZWZhdWx0LWNvbnN0cnVjdGluZyBhIG1hdGNoZXIuCi1URVNU
KE1hdGNoZXJUZXN0LCBDYW5CZURlZmF1bHRDb25zdHJ1Y3RlZCkgewotICBNYXRjaGVyPGRvdWJs
ZT4gbTsKLX0KLQotLy8gVGVzdHMgdGhhdCBNYXRjaGVyPFQ+IGNhbiBiZSBjb25zdHJ1Y3RlZCBm
cm9tIGEgTWF0Y2hlckludGVyZmFjZTxUPiouCi1URVNUKE1hdGNoZXJUZXN0LCBDYW5CZUNvbnN0
cnVjdGVkRnJvbU1hdGNoZXJJbnRlcmZhY2UpIHsKLSAgY29uc3QgTWF0Y2hlckludGVyZmFjZTxp
bnQ+KiBpbXBsID0gbmV3IEV2ZW5NYXRjaGVySW1wbDsKLSAgTWF0Y2hlcjxpbnQ+IG0oaW1wbCk7
Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyg0KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
NSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHZhbHVlIGNhbiBiZSB1c2VkIGluIHBsYWNlIG9mIEVx
KHZhbHVlKS4KLVRFU1QoTWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVkRnJv
bVZhbHVlKSB7Ci0gIE1hdGNoZXI8aW50PiBtMSA9IDU7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNo
ZXMoNSkpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyg2KSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgTlVMTCBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBFcShOVUxMKS4KLVRFU1QoTWF0Y2hlclRl
c3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVkRnJvbU5VTEwpIHsKLSAgTWF0Y2hlcjxpbnQq
PiBtMSA9IE5VTEw7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTlVMTCkpOwotICBpbnQgbiA9
IDA7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCZuKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
bWF0Y2hlcnMgYXJlIGNvcHlhYmxlLgotVEVTVChNYXRjaGVyVGVzdCwgSXNDb3B5YWJsZSkgewot
ICAvLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KLSAgTWF0Y2hlcjxib29sPiBtMSA9IEVx
KGZhbHNlKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhmYWxzZSkpOwotICBFWFBFQ1RfRkFM
U0UobTEuTWF0Y2hlcyh0cnVlKSk7Ci0KLSAgLy8gVGVzdHMgdGhlIGFzc2lnbm1lbnQgb3BlcmF0
b3IuCi0gIG0xID0gRXEodHJ1ZSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXModHJ1ZSkpOwot
ICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhmYWxzZSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1h
dGNoZXI8VD46OkRlc2NyaWJlVG8oKSBjYWxscwotLy8gTWF0Y2hlckludGVyZmFjZTxUPjo6RGVz
Y3JpYmVUbygpLgotVEVTVChNYXRjaGVyVGVzdCwgQ2FuRGVzY3JpYmVJdHNlbGYpIHsKLSAgRVhQ
RUNUX0VRKCJpcyBhbiBldmVuIG51bWJlciIsCi0gICAgICAgICAgICBEZXNjcmliZShNYXRjaGVy
PGludD4obmV3IEV2ZW5NYXRjaGVySW1wbCkpKTsKLX0KLQotLy8gVGVzdHMgTWF0Y2hlcjxUPjo6
TWF0Y2hBbmRFeHBsYWluKCkuCi1URVNUKE1hdGNoZXJUZXN0LCBNYXRjaEFuZEV4cGxhaW4pIHsK
LSAgTWF0Y2hlcjxpbnQ+IG0gPSBHcmVhdGVyVGhhbigwKTsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRM
aXN0ZW5lciBsaXN0ZW5lcjE7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hBbmRFeHBsYWluKDQyLCAm
bGlzdGVuZXIxKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgNDIgbW9yZSB0aGFuIDAiLCBsaXN0
ZW5lcjEuc3RyKCkpOwotCi0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXIyOwot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaEFuZEV4cGxhaW4oLTksICZsaXN0ZW5lcjIpKTsKLSAgRVhQ
RUNUX0VRKCJ3aGljaCBpcyA5IGxlc3MgdGhhbiAwIiwgbGlzdGVuZXIyLnN0cigpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIEMtc3RyaW5nIGxpdGVyYWwgY2FuIGJlIGltcGxpY2l0bHkgY29udmVy
dGVkIHRvIGEKLS8vIE1hdGNoZXI8c3RyaW5nPiBvciBNYXRjaGVyPGNvbnN0IHN0cmluZyY+Lgot
VEVTVChTdHJpbmdNYXRjaGVyVGVzdCwgQ2FuQmVJbXBsaWNpdGx5Q29uc3RydWN0ZWRGcm9tQ1N0
cmluZ0xpdGVyYWwpIHsKLSAgTWF0Y2hlcjxzdHJpbmc+IG0xID0gImhpIjsKLSAgRVhQRUNUX1RS
VUUobTEuTWF0Y2hlcygiaGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCJoZWxsbyIp
KTsKLQotICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+IG0yID0gImhpIjsKLSAgRVhQRUNUX1RSVUUo
bTIuTWF0Y2hlcygiaGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJoZWxsbyIpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0cmluZyBvYmplY3QgY2FuIGJlIGltcGxpY2l0bHkgY29u
dmVydGVkIHRvIGEKLS8vIE1hdGNoZXI8c3RyaW5nPiBvciBNYXRjaGVyPGNvbnN0IHN0cmluZyY+
LgotVEVTVChTdHJpbmdNYXRjaGVyVGVzdCwgQ2FuQmVJbXBsaWNpdGx5Q29uc3RydWN0ZWRGcm9t
U3RyaW5nKSB7Ci0gIE1hdGNoZXI8c3RyaW5nPiBtMSA9IHN0cmluZygiaGkiKTsKLSAgRVhQRUNU
X1RSVUUobTEuTWF0Y2hlcygiaGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCJoZWxs
byIpKTsKLQotICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+IG0yID0gc3RyaW5nKCJoaSIpOwotICBF
WFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJoaSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
ImhlbGxvIikpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NUUklOR19QSUVDRV8KLS8vIFRlc3RzIHRo
YXQgYSBDLXN0cmluZyBsaXRlcmFsIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhCi0v
LyBNYXRjaGVyPFN0cmluZ1BpZWNlPiBvciBNYXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj4uCi1U
RVNUKFN0cmluZ1BpZWNlTWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVkRnJv
bUNTdHJpbmdMaXRlcmFsKSB7Ci0gIE1hdGNoZXI8U3RyaW5nUGllY2U+IG0xID0gImNhdHMiOwot
ICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCJjYXRzIikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0
Y2hlcygiZG9ncyIpKTsKLQotICBNYXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj4gbTIgPSAiY2F0
cyI7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImNhdHMiKSk7Ci0gIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKCJkb2dzIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3RyaW5nIG9iamVjdCBj
YW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYQotLy8gTWF0Y2hlcjxTdHJpbmdQaWVjZT4g
b3IgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+LgotVEVTVChTdHJpbmdQaWVjZU1hdGNoZXJU
ZXN0LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1Y3RlZEZyb21TdHJpbmcpIHsKLSAgTWF0Y2hlcjxT
dHJpbmdQaWVjZT4gbTEgPSBzdHJpbmcoImNhdHMiKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cygiY2F0cyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoImRvZ3MiKSk7Ci0KLSAgTWF0
Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+IG0yID0gc3RyaW5nKCJjYXRzIik7Ci0gIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoImNhdHMiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJkb2dz
IikpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgU3RyaW5nUGllY2Ugb2JqZWN0IGNhbiBiZSBpbXBs
aWNpdGx5IGNvbnZlcnRlZCB0byBhCi0vLyBNYXRjaGVyPFN0cmluZ1BpZWNlPiBvciBNYXRjaGVy
PGNvbnN0IFN0cmluZ1BpZWNlJj4uCi1URVNUKFN0cmluZ1BpZWNlTWF0Y2hlclRlc3QsIENhbkJl
SW1wbGljaXRseUNvbnN0cnVjdGVkRnJvbVN0cmluZ1BpZWNlKSB7Ci0gIE1hdGNoZXI8U3RyaW5n
UGllY2U+IG0xID0gU3RyaW5nUGllY2UoImNhdHMiKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cygiY2F0cyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoImRvZ3MiKSk7Ci0KLSAgTWF0
Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+IG0yID0gU3RyaW5nUGllY2UoImNhdHMiKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcygiY2F0cyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
ImRvZ3MiKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCi0KLS8vIFRl
c3RzIHRoYXQgTWFrZU1hdGNoZXIoKSBjb25zdHJ1Y3RzIGEgTWF0Y2hlcjxUPiBmcm9tIGEKLS8v
IE1hdGNoZXJJbnRlcmZhY2UqIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvIGV4cGxpY2l0
bHkKLS8vIHdyaXRlIHRoZSB0eXBlLgotVEVTVChNYWtlTWF0Y2hlclRlc3QsIENvbnN0cnVjdHNN
YXRjaGVyRnJvbU1hdGNoZXJJbnRlcmZhY2UpIHsKLSAgY29uc3QgTWF0Y2hlckludGVyZmFjZTxp
bnQ+KiBkdW1teV9pbXBsID0gTlVMTDsKLSAgTWF0Y2hlcjxpbnQ+IG0gPSBNYWtlTWF0Y2hlcihk
dW1teV9pbXBsKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKCkg
Y2FuIGNvbnN0cnVjdCBhIHBvbHltb3JwaGljCi0vLyBtYXRjaGVyIGZyb20gaXRzIGltcGxlbWVu
dGF0aW9uIHVzaW5nIHRoZSBvbGQgQVBJLgotY29uc3QgaW50IGdfYmFyID0gMTsKLWNsYXNzIFJl
ZmVyZW5jZXNCYXJPcklzWmVyb0ltcGwgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmIHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAg
Y29uc3Qgdm9pZCogcCA9ICZ4OwotICAgIHJldHVybiBwID09ICZnX2JhciB8fCB4ID09IDA7Ci0g
IH0KLQotICB2b2lkIERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJnX2Jh
ciBvciB6ZXJvIjsgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKG9zdHJlYW0qIG9zKSBj
b25zdCB7Ci0gICAgKm9zIDw8ICJkb2Vzbid0IHJlZmVyZW5jZSBnX2JhciBhbmQgaXMgbm90IHpl
cm8iOwotICB9Ci19OwotCi0vLyBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoYXQgTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcigpIHJldHVybnMgYQotLy8gUG9seW1vcnBoaWNNYXRjaGVyPFQ+IHdoZXJl
IFQgaXMgdGhlIGFyZ3VtZW50J3MgdHlwZS4KLVBvbHltb3JwaGljTWF0Y2hlcjxSZWZlcmVuY2Vz
QmFyT3JJc1plcm9JbXBsPiBSZWZlcmVuY2VzQmFyT3JJc1plcm8oKSB7Ci0gIHJldHVybiBNYWtl
UG9seW1vcnBoaWNNYXRjaGVyKFJlZmVyZW5jZXNCYXJPcklzWmVyb0ltcGwoKSk7Ci19Ci0KLVRF
U1QoTWFrZVBvbHltb3JwaGljTWF0Y2hlclRlc3QsIENvbnN0cnVjdHNNYXRjaGVyVXNpbmdPbGRB
UEkpIHsKLSAgLy8gVXNpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRvIG1hdGNoIGEgcmVmZXJl
bmNlIHR5cGUuCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbTEgPSBSZWZlcmVuY2VzQmFyT3JJc1pl
cm8oKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygwKSk7Ci0gIC8vIFZlcmlmaWVzIHRoYXQg
dGhlIGlkZW50aXR5IG9mIGEgYnktcmVmZXJlbmNlIGFyZ3VtZW50IGlzIHByZXNlcnZlZC4KLSAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhnX2JhcikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hl
cygxKSk7Ci0gIEVYUEVDVF9FUSgiZ19iYXIgb3IgemVybyIsIERlc2NyaWJlKG0xKSk7Ci0KLSAg
Ly8gVXNpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRvIG1hdGNoIGEgdmFsdWUgdHlwZS4KLSAg
TWF0Y2hlcjxkb3VibGU+IG0yID0gUmVmZXJlbmNlc0Jhck9ySXNaZXJvKCk7Ci0gIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoMC4wKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDAuMSkpOwot
ICBFWFBFQ1RfRVEoImdfYmFyIG9yIHplcm8iLCBEZXNjcmliZShtMikpOwotfQotCi0vLyBUZXN0
cyBpbXBsZW1lbnRpbmcgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHVzaW5nIE1hdGNoQW5kRXhwbGFp
bigpLgotCi1jbGFzcyBQb2x5bW9ycGhpY0lzRXZlbkltcGwgewotIHB1YmxpYzoKLSAgdm9pZCBE
ZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgZXZlbiI7IH0KLQotICB2
b2lkIERlc2NyaWJlTmVnYXRpb25Ubyhvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAi
aXMgb2RkIjsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBib29sIE1hdGNoQW5k
RXhwbGFpbihjb25zdCBUJiB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
ewotICAgIC8vIFZlcmlmaWVzIHRoYXQgd2UgY2FuIHN0cmVhbSB0byB0aGUgbGlzdGVuZXIgZGly
ZWN0bHkuCi0gICAgKmxpc3RlbmVyIDw8ICIlICIgPDwgMjsKLSAgICBpZiAobGlzdGVuZXItPnN0
cmVhbSgpICE9IE5VTEwpIHsKLSAgICAgIC8vIFZlcmlmaWVzIHRoYXQgd2UgY2FuIHN0cmVhbSB0
byB0aGUgbGlzdGVuZXIncyB1bmRlcmx5aW5nIHN0cmVhbQotICAgICAgLy8gdG9vLgotICAgICAg
Kmxpc3RlbmVyLT5zdHJlYW0oKSA8PCAiID09ICIgPDwgKHggJSAyKTsKLSAgICB9Ci0gICAgcmV0
dXJuICh4ICUgMikgPT0gMDsKLSAgfQotfTsKLQotUG9seW1vcnBoaWNNYXRjaGVyPFBvbHltb3Jw
aGljSXNFdmVuSW1wbD4gUG9seW1vcnBoaWNJc0V2ZW4oKSB7Ci0gIHJldHVybiBNYWtlUG9seW1v
cnBoaWNNYXRjaGVyKFBvbHltb3JwaGljSXNFdmVuSW1wbCgpKTsKLX0KLQotVEVTVChNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyVGVzdCwgQ29uc3RydWN0c01hdGNoZXJVc2luZ05ld0FQSSkgewotICAv
LyBVc2luZyBQb2x5bW9ycGhpY0lzRXZlbigpIGFzIGEgTWF0Y2hlcjxpbnQ+LgotICBjb25zdCBN
YXRjaGVyPGludD4gbTEgPSBQb2x5bW9ycGhpY0lzRXZlbigpOwotICBFWFBFQ1RfVFJVRShtMS5N
YXRjaGVzKDQyKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKDQzKSk7Ci0gIEVYUEVDVF9F
USgiaXMgZXZlbiIsIERlc2NyaWJlKG0xKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IG5vdF9t
MSA9IE5vdChtMSk7Ci0gIEVYUEVDVF9FUSgiaXMgb2RkIiwgRGVzY3JpYmUobm90X20xKSk7Ci0K
LSAgRVhQRUNUX0VRKCIlIDIgPT0gMCIsIEV4cGxhaW4obTEsIDQyKSk7Ci0KLSAgLy8gVXNpbmcg
UG9seW1vcnBoaWNJc0V2ZW4oKSBhcyBhIE1hdGNoZXI8Y2hhcj4uCi0gIGNvbnN0IE1hdGNoZXI8
Y2hhcj4gbTIgPSBQb2x5bW9ycGhpY0lzRXZlbigpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVz
KCdceDQyJykpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygnXHg0MycpKTsKLSAgRVhQRUNU
X0VRKCJpcyBldmVuIiwgRGVzY3JpYmUobTIpKTsKLQotICBjb25zdCBNYXRjaGVyPGNoYXI+IG5v
dF9tMiA9IE5vdChtMik7Ci0gIEVYUEVDVF9FUSgiaXMgb2RkIiwgRGVzY3JpYmUobm90X20yKSk7
Ci0KLSAgRVhQRUNUX0VRKCIlIDIgPT0gMCIsIEV4cGxhaW4obTIsICdceDQyJykpOwotfQotCi0v
LyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PFQ+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIHBvbHltb3Jw
aGljIG1hdGNoZXIuCi1URVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbVBvbHltb3JwaGljTWF0Y2hl
cikgewotICBNYXRjaGVyPGludD4gbSA9IE1hdGNoZXJDYXN0PGludD4oRXEoNSkpOwotICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMoNSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDYpKTsKLX0K
LQotLy8gRm9yIHRlc3RpbmcgY2FzdGluZyBtYXRjaGVycyBiZXR3ZWVuIGNvbXBhdGlibGUgdHlw
ZXMuCi1jbGFzcyBJbnRWYWx1ZSB7Ci0gcHVibGljOgotICAvLyBBbiBpbnQgY2FuIGJlIHN0YXRp
Y2FsbHkgKGFsdGhvdWdoIG5vdCBpbXBsaWNpdGx5KSBjYXN0IHRvIGEKLSAgLy8gSW50VmFsdWUu
Ci0gIGV4cGxpY2l0IEludFZhbHVlKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQot
Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotIHByaXZhdGU6Ci0gIGlu
dCB2YWx1ZV87Ci19OwotCi0vLyBGb3IgdGVzdGluZyBjYXN0aW5nIG1hdGNoZXJzIGJldHdlZW4g
Y29tcGF0aWJsZSB0eXBlcy4KLWJvb2wgSXNQb3NpdGl2ZUludFZhbHVlKGNvbnN0IEludFZhbHVl
JiBmb28pIHsKLSAgcmV0dXJuIGZvby52YWx1ZSgpID4gMDsKLX0KLQotLy8gVGVzdHMgdGhhdCBN
YXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFU+IHdoZXJlIFQKLS8v
IGNhbiBiZSBzdGF0aWNhbGx5IGNvbnZlcnRlZCB0byBVLgotVEVTVChNYXRjaGVyQ2FzdFRlc3Qs
IEZyb21Db21wYXRpYmxlVHlwZSkgewotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBFcSgyLjApOwot
ICBNYXRjaGVyPGludD4gbTIgPSBNYXRjaGVyQ2FzdDxpbnQ+KG0xKTsKLSAgRVhQRUNUX1RSVUUo
bTIuTWF0Y2hlcygyKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDMpKTsKLQotICBNYXRj
aGVyPEludFZhbHVlPiBtMyA9IFRydWx5KElzUG9zaXRpdmVJbnRWYWx1ZSk7Ci0gIE1hdGNoZXI8
aW50PiBtNCA9IE1hdGNoZXJDYXN0PGludD4obTMpOwotICAvLyBJbiB0aGUgZm9sbG93aW5nLCB0
aGUgYXJndW1lbnRzIDEgYW5kIDAgYXJlIHN0YXRpY2FsbHkgY29udmVydGVkCi0gIC8vIHRvIElu
dFZhbHVlIG9iamVjdHMsIGFuZCB0aGVuIHRlc3RlZCBieSB0aGUgSXNQb3NpdGl2ZUludFZhbHVl
KCkKLSAgLy8gcHJlZGljYXRlLgotICBFWFBFQ1RfVFJVRShtNC5NYXRjaGVzKDEpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG00Lk1hdGNoZXMoMCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0
PFQ+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNoZXI8Y29uc3QgVCY+LgotVEVTVChNYXRjaGVy
Q2FzdFRlc3QsIEZyb21Db25zdFJlZmVyZW5jZVRvTm9uUmVmZXJlbmNlKSB7Ci0gIE1hdGNoZXI8
Y29uc3QgaW50Jj4gbTEgPSBFcSgwKTsKLSAgTWF0Y2hlcjxpbnQ+IG0yID0gTWF0Y2hlckNhc3Q8
aW50PihtMSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfRkFMU0Uo
bTIuTWF0Y2hlcygxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTWF0Y2hlckNhc3Q8VD4obSkgd29y
a3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxUJj4uCi1URVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbVJl
ZmVyZW5jZVRvTm9uUmVmZXJlbmNlKSB7Ci0gIE1hdGNoZXI8aW50Jj4gbTEgPSBFcSgwKTsKLSAg
TWF0Y2hlcjxpbnQ+IG0yID0gTWF0Y2hlckNhc3Q8aW50PihtMSk7Ci0gIEVYUEVDVF9UUlVFKG0y
Lk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygxKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgTWF0Y2hlckNhc3Q8Y29uc3QgVCY+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNo
ZXI8VD4uCi1URVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJlZmVyZW5jZVRvQ29uc3RSZWZl
cmVuY2UpIHsKLSAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMCk7Ci0gIE1hdGNoZXI8Y29uc3QgaW50
Jj4gbTIgPSBNYXRjaGVyQ2FzdDxjb25zdCBpbnQmPihtMSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1h
dGNoZXMoMCkpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygxKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgTWF0Y2hlckNhc3Q8VCY+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNoZXI8VD4uCi1U
RVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJlZmVyZW5jZVRvUmVmZXJlbmNlKSB7Ci0gIE1h
dGNoZXI8aW50PiBtMSA9IEVxKDApOwotICBNYXRjaGVyPGludCY+IG0yID0gTWF0Y2hlckNhc3Q8
aW50Jj4obTEpOwotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMobikpOwot
ICBuID0gMTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMobikpOwotfQotCi0vLyBUZXN0cyB0
aGF0IE1hdGNoZXJDYXN0PFQ+KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNoZXI8VD4uCi1URVNU
KE1hdGNoZXJDYXN0VGVzdCwgRnJvbVNhbWVUeXBlKSB7Ci0gIE1hdGNoZXI8aW50PiBtMSA9IEVx
KDApOwotICBNYXRjaGVyPGludD4gbTIgPSBNYXRjaGVyQ2FzdDxpbnQ+KG0xKTsKLSAgRVhQRUNU
X1RSVUUobTIuTWF0Y2hlcygwKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDEpKTsKLX0K
LQotLy8gSW1wbGljaXRseSBjb252ZXJ0aWJsZSBmcm9tIGFueSB0eXBlLgotc3RydWN0IENvbnZl
cnRpYmxlRnJvbUFueSB7Ci0gIENvbnZlcnRpYmxlRnJvbUFueShpbnQgYV92YWx1ZSkgOiB2YWx1
ZShhX3ZhbHVlKSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgZXhwbGljaXQgQ29udmVy
dGlibGVGcm9tQW55KGNvbnN0IFQmIC8qYV92YWx1ZSovKSA6IHZhbHVlKC0xKSB7Ci0gICAgQURE
X0ZBSUxVUkUoKSA8PCAiQ29udmVyc2lvbiBjb25zdHJ1Y3RvciBjYWxsZWQiOwotICB9Ci0gIGlu
dCB2YWx1ZTsKLX07Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDb252ZXJ0aWJsZUZyb21Bbnkm
IGEsIGNvbnN0IENvbnZlcnRpYmxlRnJvbUFueSYgYikgewotICByZXR1cm4gYS52YWx1ZSA9PSBi
LnZhbHVlOwotfQotCi1vc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG9zLCBjb25zdCBDb252
ZXJ0aWJsZUZyb21BbnkmIGEpIHsKLSAgcmV0dXJuIG9zIDw8IGEudmFsdWU7Ci19Ci0KLVRFU1Qo
TWF0Y2hlckNhc3RUZXN0LCBDb252ZXJzaW9uQ29uc3RydWN0b3JJc1VzZWQpIHsKLSAgTWF0Y2hl
cjxDb252ZXJ0aWJsZUZyb21Bbnk+IG0gPSBNYXRjaGVyQ2FzdDxDb252ZXJ0aWJsZUZyb21Bbnk+
KDEpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoQ29udmVydGlibGVGcm9tQW55KDEpKSk7Ci0g
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoQ29udmVydGlibGVGcm9tQW55KDIpKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hlckNhc3RUZXN0LCBGcm9tQ29udmVydGlibGVGcm9tQW55KSB7Ci0gIE1hdGNoZXI8
Q29udmVydGlibGVGcm9tQW55PiBtID0KLSAgICAgIE1hdGNoZXJDYXN0PENvbnZlcnRpYmxlRnJv
bUFueT4oRXEoQ29udmVydGlibGVGcm9tQW55KDEpKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhDb252ZXJ0aWJsZUZyb21BbnkoMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhDb252
ZXJ0aWJsZUZyb21BbnkoMikpKTsKLX0KLQotc3RydWN0IEludFJlZmVyZW5jZVdyYXBwZXIgewot
ICBJbnRSZWZlcmVuY2VXcmFwcGVyKGNvbnN0IGludCYgYV92YWx1ZSkgOiB2YWx1ZSgmYV92YWx1
ZSkge30KLSAgY29uc3QgaW50KiB2YWx1ZTsKLX07Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bnRSZWZlcmVuY2VXcmFwcGVyJiBhLCBjb25zdCBJbnRSZWZlcmVuY2VXcmFwcGVyJiBiKSB7Ci0g
IHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7Ci19Ci0KLVRFU1QoTWF0Y2hlckNhc3RUZXN0LCBW
YWx1ZUlzTm90Q29waWVkKSB7Ci0gIGludCBuID0gNDI7Ci0gIE1hdGNoZXI8SW50UmVmZXJlbmNl
V3JhcHBlcj4gbSA9IE1hdGNoZXJDYXN0PEludFJlZmVyZW5jZVdyYXBwZXI+KG4pOwotICAvLyBW
ZXJpZnkgdGhhdCB0aGUgbWF0Y2hlciBob2xkcyBhIHJlZmVyZW5jZSB0byBuLCBub3QgdG8gaXRz
IHRlbXBvcmFyeSBjb3B5LgotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobikpOwotfQotCi1jbGFz
cyBCYXNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkJhc2UoKSB7fQotICBCYXNlKCkge30KLSBw
cml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEJhc2UpOwotfTsKLQot
Y2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6Ci0gIERlcml2ZWQoKSA6IEJh
c2UoKSB7fQotICBpbnQgaTsKLX07Ci0KLWNsYXNzIE90aGVyRGVyaXZlZCA6IHB1YmxpYyBCYXNl
IHt9OwotCi0vLyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0g
aXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyLgotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9t
UG9seW1vcnBoaWNNYXRjaGVyKSB7Ci0gIE1hdGNoZXI8Y2hhcj4gbTIgPSBTYWZlTWF0Y2hlckNh
c3Q8Y2hhcj4oRXEoMzIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygnICcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoJ1xuJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IFNhZmVNYXRj
aGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFU+IHdoZXJlCi0vLyBUIGFu
ZCBVIGFyZSBhcml0aG1ldGljIHR5cGVzIGFuZCBUIGNhbiBiZSBsb3NzbGVzc2x5IGNvbnZlcnRl
ZCB0bwotLy8gVS4KLVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgRnJvbUxvc3NsZXNzbHlDb252
ZXJ0aWJsZUFyaXRobWV0aWNUeXBlKSB7Ci0gIE1hdGNoZXI8ZG91YmxlPiBtMSA9IERvdWJsZUVx
KDEuMCk7Ci0gIE1hdGNoZXI8ZmxvYXQ+IG0yID0gU2FmZU1hdGNoZXJDYXN0PGZsb2F0PihtMSk7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMS4wZikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcygyLjBmKSk7Ci0KLSAgTWF0Y2hlcjxjaGFyPiBtMyA9IFNhZmVNYXRjaGVyQ2FzdDxjaGFy
PihUeXBlZEVxPGludD4oJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoJ2EnKSk7Ci0g
IEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKCdiJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IFNhZmVN
YXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFU+IHdoZXJlIFQgYW5k
IFUKLS8vIGFyZSBwb2ludGVycyBvciByZWZlcmVuY2VzIHRvIGEgZGVyaXZlZCBhbmQgYSBiYXNl
IGNsYXNzLCBjb3JyZXNwb25kaW5nbHkuCi1URVNUKFNhZmVNYXRjaGVyQ2FzdFRlc3QsIEZyb21C
YXNlQ2xhc3MpIHsKLSAgRGVyaXZlZCBkLCBkMjsKLSAgTWF0Y2hlcjxCYXNlKj4gbTEgPSBFcSgm
ZCk7Ci0gIE1hdGNoZXI8RGVyaXZlZCo+IG0yID0gU2FmZU1hdGNoZXJDYXN0PERlcml2ZWQqPiht
MSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoJmQpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1h
dGNoZXMoJmQyKSk7Ci0KLSAgTWF0Y2hlcjxCYXNlJj4gbTMgPSBSZWYoZCk7Ci0gIE1hdGNoZXI8
RGVyaXZlZCY+IG00ID0gU2FmZU1hdGNoZXJDYXN0PERlcml2ZWQmPihtMyk7Ci0gIEVYUEVDVF9U
UlVFKG00Lk1hdGNoZXMoZCkpOwotICBFWFBFQ1RfRkFMU0UobTQuTWF0Y2hlcyhkMikpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUJj4obSkgd29ya3Mgd2hlbiBtIGlzIGEg
TWF0Y2hlcjxjb25zdCBUJj4uCi1URVNUKFNhZmVNYXRjaGVyQ2FzdFRlc3QsIEZyb21Db25zdFJl
ZmVyZW5jZVRvUmVmZXJlbmNlKSB7Ci0gIGludCBuID0gMDsKLSAgTWF0Y2hlcjxjb25zdCBpbnQm
PiBtMSA9IFJlZihuKTsKLSAgTWF0Y2hlcjxpbnQmPiBtMiA9IFNhZmVNYXRjaGVyQ2FzdDxpbnQm
PihtMSk7Ci0gIGludCBuMSA9IDA7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMobikpOwotICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhuMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1hdGNoZXJD
YXN0PGNvbnN0IFQmPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFQ+LgotVEVTVChTYWZl
TWF0Y2hlckNhc3RUZXN0LCBGcm9tTm9uUmVmZXJlbmNlVG9Db25zdFJlZmVyZW5jZSkgewotICBN
YXRjaGVyPGludD4gbTEgPSBFcSgwKTsKLSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtMiA9IFNhZmVN
YXRjaGVyQ2FzdDxjb25zdCBpbnQmPihtMSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkp
OwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU2Fm
ZU1hdGNoZXJDYXN0PFQmPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFQ+LgotVEVTVChT
YWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9tTm9uUmVmZXJlbmNlVG9SZWZlcmVuY2UpIHsKLSAgTWF0
Y2hlcjxpbnQ+IG0xID0gRXEoMCk7Ci0gIE1hdGNoZXI8aW50Jj4gbTIgPSBTYWZlTWF0Y2hlckNh
c3Q8aW50Jj4obTEpOwotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMobikp
OwotICBuID0gMTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMobikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFNhZmVNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFQ+
LgotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9tU2FtZVR5cGUpIHsKLSAgTWF0Y2hlcjxp
bnQ+IG0xID0gRXEoMCk7Ci0gIE1hdGNoZXI8aW50PiBtMiA9IFNhZmVNYXRjaGVyQ2FzdDxpbnQ+
KG0xKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygwKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKDEpKTsKLX0KLQotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBDb252ZXJzaW9uQ29u
c3RydWN0b3JJc1VzZWQpIHsKLSAgTWF0Y2hlcjxDb252ZXJ0aWJsZUZyb21Bbnk+IG0gPSBTYWZl
TWF0Y2hlckNhc3Q8Q29udmVydGlibGVGcm9tQW55PigxKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKENvbnZlcnRpYmxlRnJvbUFueSgxKSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKENv
bnZlcnRpYmxlRnJvbUFueSgyKSkpOwotfQotCi1URVNUKFNhZmVNYXRjaGVyQ2FzdFRlc3QsIEZy
b21Db252ZXJ0aWJsZUZyb21BbnkpIHsKLSAgTWF0Y2hlcjxDb252ZXJ0aWJsZUZyb21Bbnk+IG0g
PQotICAgICAgU2FmZU1hdGNoZXJDYXN0PENvbnZlcnRpYmxlRnJvbUFueT4oRXEoQ29udmVydGli
bGVGcm9tQW55KDEpKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhDb252ZXJ0aWJsZUZyb21B
bnkoMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhDb252ZXJ0aWJsZUZyb21BbnkoMikp
KTsKLX0KLQotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBWYWx1ZUlzTm90Q29waWVkKSB7Ci0g
IGludCBuID0gNDI7Ci0gIE1hdGNoZXI8SW50UmVmZXJlbmNlV3JhcHBlcj4gbSA9IFNhZmVNYXRj
aGVyQ2FzdDxJbnRSZWZlcmVuY2VXcmFwcGVyPihuKTsKLSAgLy8gVmVyaWZ5IHRoYXQgdGhlIG1h
dGNoZXIgaG9sZHMgYSByZWZlcmVuY2UgdG8gbiwgbm90IHRvIGl0cyB0ZW1wb3JhcnkgY29weS4K
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG4pKTsKLX0KLQotVEVTVChFeHBlY3RUaGF0LCBUYWtl
c0xpdGVyYWxzKSB7Ci0gIEVYUEVDVF9USEFUKDEsIDEpOwotICBFWFBFQ1RfVEhBVCgxLjAsIDEu
MCk7Ci0gIEVYUEVDVF9USEFUKHN0cmluZygpLCAiIik7Ci19Ci0KLVRFU1QoRXhwZWN0VGhhdCwg
VGFrZXNGdW5jdGlvbnMpIHsKLSAgc3RydWN0IEhlbHBlciB7Ci0gICAgc3RhdGljIHZvaWQgRnVu
YygpIHt9Ci0gIH07Ci0gIHZvaWQgKCpmdW5jKSgpID0gSGVscGVyOjpGdW5jOwotICBFWFBFQ1Rf
VEhBVChmdW5jLCBIZWxwZXI6OkZ1bmMpOwotICBFWFBFQ1RfVEhBVChmdW5jLCAmSGVscGVyOjpG
dW5jKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBPFQ+KCkgbWF0Y2hlcyBhbnkgdmFsdWUgb2YgdHlw
ZSBULgotVEVTVChBVGVzdCwgTWF0Y2hlc0FueVZhbHVlKSB7Ci0gIC8vIFRlc3RzIGEgbWF0Y2hl
ciBmb3IgYSB2YWx1ZSB0eXBlLgotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBBPGRvdWJsZT4oKTsK
LSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyg5MS40MykpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRj
aGVzKC0xNS4zMikpOwotCi0gIC8vIFRlc3RzIGEgbWF0Y2hlciBmb3IgYSByZWZlcmVuY2UgdHlw
ZS4KLSAgaW50IGEgPSAyOwotICBpbnQgYiA9IC02OwotICBNYXRjaGVyPGludCY+IG0yID0gQTxp
bnQmPigpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKGEpKTsKLSAgRVhQRUNUX1RSVUUobTIu
TWF0Y2hlcyhiKSk7Ci19Ci0KLVRFU1QoQVRlc3QsIFdvcmtzRm9yRGVyaXZlZENsYXNzKSB7Ci0g
IEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBFWFBFQ1RfVEhBVCgmYmFzZSwgQTxC
YXNlKj4oKSk7Ci0gIC8vIFRoaXMgc2hvdWxkbid0IGNvbXBpbGU6IEVYUEVDVF9USEFUKCZiYXNl
LCBBPERlcml2ZWQqPigpKTsKLSAgRVhQRUNUX1RIQVQoJmRlcml2ZWQsIEE8QmFzZSo+KCkpOwot
ICBFWFBFQ1RfVEhBVCgmZGVyaXZlZCwgQTxEZXJpdmVkKj4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgQTxUPigpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEFUZXN0LCBDYW5EZXNj
cmliZVNlbGYpIHsKLSAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJlKEE8Ym9vbD4o
KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFuPFQ+KCkgbWF0Y2hlcyBhbnkgdmFsdWUgb2YgdHlw
ZSBULgotVEVTVChBblRlc3QsIE1hdGNoZXNBbnlWYWx1ZSkgewotICAvLyBUZXN0cyBhIG1hdGNo
ZXIgZm9yIGEgdmFsdWUgdHlwZS4KLSAgTWF0Y2hlcjxpbnQ+IG0xID0gQW48aW50PigpOwotICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKDkxNDMpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygt
MTUzMikpOwotCi0gIC8vIFRlc3RzIGEgbWF0Y2hlciBmb3IgYSByZWZlcmVuY2UgdHlwZS4KLSAg
aW50IGEgPSAyOwotICBpbnQgYiA9IC02OwotICBNYXRjaGVyPGludCY+IG0yID0gQW48aW50Jj4o
KTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhhKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNo
ZXMoYikpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFuPFQ+KCkgZGVzY3JpYmVzIGl0c2VsZiBwcm9w
ZXJseS4KLVRFU1QoQW5UZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgRVhQRUNUX0VRKCJpcyBh
bnl0aGluZyIsIERlc2NyaWJlKEFuPGludD4oKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IF8gY2Fu
IGJlIHVzZWQgYXMgYSBtYXRjaGVyIGZvciBhbnkgdHlwZSBhbmQgbWF0Y2hlcyBhbnkKLS8vIHZh
bHVlIG9mIHRoYXQgdHlwZS4KLVRFU1QoVW5kZXJzY29yZVRlc3QsIE1hdGNoZXNBbnlWYWx1ZSkg
ewotICAvLyBVc2VzIF8gYXMgYSBtYXRjaGVyIGZvciBhIHZhbHVlIHR5cGUuCi0gIE1hdGNoZXI8
aW50PiBtMSA9IF87Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoMTIzKSk7Ci0gIEVYUEVDVF9U
UlVFKG0xLk1hdGNoZXMoLTI0MikpOwotCi0gIC8vIFVzZXMgXyBhcyBhIG1hdGNoZXIgZm9yIGEg
cmVmZXJlbmNlIHR5cGUuCi0gIGJvb2wgYSA9IGZhbHNlOwotICBjb25zdCBib29sIGIgPSB0cnVl
OwotICBNYXRjaGVyPGNvbnN0IGJvb2wmPiBtMiA9IF87Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNo
ZXMoYSkpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKGIpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBfIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKFVuZGVyc2NvcmVUZXN0LCBDYW5E
ZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxpbnQ+IG0gPSBfOwotICBFWFBFQ1RfRVEoImlzIGFu
eXRoaW5nIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVxKHgpIG1hdGNoZXMg
YW55IHZhbHVlIGVxdWFsIHRvIHguCi1URVNUKEVxVGVzdCwgTWF0Y2hlc0VxdWFsVmFsdWUpIHsK
LSAgLy8gMiBDLXN0cmluZ3Mgd2l0aCBzYW1lIGNvbnRlbnQgYnV0IGRpZmZlcmVudCBhZGRyZXNz
ZXMuCi0gIGNvbnN0IGNoYXIgYTFbXSA9ICJoaSI7Ci0gIGNvbnN0IGNoYXIgYTJbXSA9ICJoaSI7
Ci0KLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTEgPSBFcShhMSk7Ci0gIEVYUEVDVF9UUlVFKG0x
Lk1hdGNoZXMoYTEpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoYTIpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBFcSh2KSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotCi1jbGFzcyBVbnBy
aW50YWJsZSB7Ci0gcHVibGljOgotICBVbnByaW50YWJsZSgpIDogY18oJ2EnKSB7fQotCi0gcHJp
dmF0ZToKLSAgY2hhciBjXzsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5w
cmludGFibGUmIC8qIGxocyAqLywgCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVucHJp
bnRhYmxlJiAvKiByaHMgKi8pIHsgCi0gICAgcmV0dXJuIHRydWU7IAotfQotCi1URVNUKEVxVGVz
dCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8VW5wcmludGFibGU+IG0gPSBFcShVbnBy
aW50YWJsZSgpKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byAxLWJ5dGUgb2JqZWN0IDw2MT4i
LCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRXEodikgY2FuIGJlIHVzZWQgdG8g
bWF0Y2ggYW55IHR5cGUgdGhhdCBzdXBwb3J0cwotLy8gY29tcGFyaW5nIHdpdGggdHlwZSBULCB3
aGVyZSBUIGlzIHYncyB0eXBlLgotVEVTVChFcVRlc3QsIElzUG9seW1vcnBoaWMpIHsKLSAgTWF0
Y2hlcjxpbnQ+IG0xID0gRXEoMSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoMSkpOwotICBF
WFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygyKSk7Ci0KLSAgTWF0Y2hlcjxjaGFyPiBtMiA9IEVxKDEp
OwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCdcMScpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1h
dGNoZXMoJ2EnKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVHlwZWRFcTxUPih2KSBtYXRjaGVzIHZh
bHVlcyBvZiB0eXBlIFQgdGhhdCdzIGVxdWFsIHRvIHYuCi1URVNUKFR5cGVkRXFUZXN0LCBDaGVj
a3NFcXVhbGl0eUZvckdpdmVuVHlwZSkgewotICBNYXRjaGVyPGNoYXI+IG0xID0gVHlwZWRFcTxj
aGFyPignYScpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCdhJykpOwotICBFWFBFQ1RfRkFM
U0UobTEuTWF0Y2hlcygnYicpKTsKLQotICBNYXRjaGVyPGludD4gbTIgPSBUeXBlZEVxPGludD4o
Nik7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoNikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcyg3KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVHlwZWRFcSh2KSBkZXNjcmliZXMgaXRzZWxm
IHByb3Blcmx5LgotVEVTVChUeXBlZEVxVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIEVYUEVD
VF9FUSgiaXMgZXF1YWwgdG8gMiIsIERlc2NyaWJlKFR5cGVkRXE8aW50PigyKSkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IFR5cGVkRXE8VD4odikgaGFzIHR5cGUgTWF0Y2hlcjxUPi4KLQotLy8gVHlw
ZTxUPjo6SXNUeXBlT2YodikgY29tcGlsZXMgaWZmIHRoZSB0eXBlIG9mIHZhbHVlIHYgaXMgVCwg
d2hlcmUgVAotLy8gaXMgYSAiYmFyZSIgdHlwZSAoaS5lLiBub3QgaW4gdGhlIGZvcm0gb2YgY29u
c3QgVSBvciBVJikuICBJZiB2J3MKLS8vIHR5cGUgaXMgbm90IFQsIHRoZSBjb21waWxlciB3aWxs
IGdlbmVyYXRlIGEgbWVzc2FnZSBhYm91dAotLy8gInVuZGVmaW5lZCByZWZlcmVjZSIuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBUeXBlIHsKLSAgc3RhdGljIGJvb2wgSXNUeXBlT2Yo
Y29uc3QgVCYgLyogdiAqLykgeyByZXR1cm4gdHJ1ZTsgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMj4KLSAgc3RhdGljIHZvaWQgSXNUeXBlT2YoVDIgdik7Ci19OwotCi1URVNUKFR5cGVkRXFU
ZXN0LCBIYXNTcGVjaWZpZWRUeXBlKSB7Ci0gIC8vIFZlcmZpZXMgdGhhdCB0aGUgdHlwZSBvZiBU
eXBlZEVxPFQ+KHYpIGlzIE1hdGNoZXI8VD4uCi0gIFR5cGU8TWF0Y2hlcjxpbnQ+ID46OklzVHlw
ZU9mKFR5cGVkRXE8aW50Pig1KSk7Ci0gIFR5cGU8TWF0Y2hlcjxkb3VibGU+ID46OklzVHlwZU9m
KFR5cGVkRXE8ZG91YmxlPig1KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR2UodikgbWF0Y2hlcyBh
bnl0aGluZyA+PSB2LgotVEVTVChHZVRlc3QsIEltcGxlbWVudHNHcmVhdGVyVGhhbk9yRXF1YWwp
IHsKLSAgTWF0Y2hlcjxpbnQ+IG0xID0gR2UoMCk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMo
MSkpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDApKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1h
dGNoZXMoLTEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZSh2KSBkZXNjcmliZXMgaXRzZWxmIHBy
b3Blcmx5LgotVEVTVChHZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGludD4g
bSA9IEdlKDUpOwotICBFWFBFQ1RfRVEoImlzID49IDUiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgR3QodikgbWF0Y2hlcyBhbnl0aGluZyA+IHYuCi1URVNUKEd0VGVzdCwgSW1w
bGVtZW50c0dyZWF0ZXJUaGFuKSB7Ci0gIE1hdGNoZXI8ZG91YmxlPiBtMSA9IEd0KDApOwotICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKDEuMCkpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygw
LjApKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoLTEuMCkpOwotfQotCi0vLyBUZXN0cyB0
aGF0IEd0KHYpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEd0VGVzdCwgQ2FuRGVz
Y3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gR3QoNSk7Ci0gIEVYUEVDVF9FUSgiaXMg
PiA1IiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IExlKHYpIG1hdGNoZXMgYW55
dGhpbmcgPD0gdi4KLVRFU1QoTGVUZXN0LCBJbXBsZW1lbnRzTGVzc1RoYW5PckVxdWFsKSB7Ci0g
IE1hdGNoZXI8Y2hhcj4gbTEgPSBMZSgnYicpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCdh
JykpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCdiJykpOwotICBFWFBFQ1RfRkFMU0UobTEu
TWF0Y2hlcygnYycpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBMZSh2KSBkZXNjcmliZXMgaXRzZWxm
IHByb3Blcmx5LgotVEVTVChMZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGlu
dD4gbSA9IExlKDUpOwotICBFWFBFQ1RfRVEoImlzIDw9IDUiLCBEZXNjcmliZShtKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgTHQodikgbWF0Y2hlcyBhbnl0aGluZyA8IHYuCi1URVNUKEx0VGVzdCwg
SW1wbGVtZW50c0xlc3NUaGFuKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMSA9
IEx0KCJIZWxsbyIpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCJBYmMiKSk7Ci0gIEVYUEVD
VF9GQUxTRShtMS5NYXRjaGVzKCJIZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
IkhlbGxvLCB3b3JsZCEiKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTHQodikgZGVzY3JpYmVzIGl0
c2VsZiBwcm9wZXJseS4KLVRFU1QoTHRUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hl
cjxpbnQ+IG0gPSBMdCg1KTsKLSAgRVhQRUNUX0VRKCJpcyA8IDUiLCBEZXNjcmliZShtKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgTmUodikgbWF0Y2hlcyBhbnl0aGluZyAhPSB2LgotVEVTVChOZVRl
c3QsIEltcGxlbWVudHNOb3RFcXVhbCkgewotICBNYXRjaGVyPGludD4gbTEgPSBOZSgwKTsKLSAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoLTEp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoMCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5l
KHYpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKE5lVGVzdCwgQ2FuRGVzY3JpYmVT
ZWxmKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gTmUoNSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgZXF1
YWwgdG8gNSIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJc051bGwoKSBtYXRj
aGVzIGFueSBOVUxMIHBvaW50ZXIgb2YgYW55IHR5cGUuCi1URVNUKElzTnVsbFRlc3QsIE1hdGNo
ZXNOdWxsUG9pbnRlcikgewotICBNYXRjaGVyPGludCo+IG0xID0gSXNOdWxsKCk7Ci0gIGludCog
cDEgPSBOVUxMOwotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMocDEpKTsK
LSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoJm4pKTsKLQotICBNYXRjaGVyPGNvbnN0IGNoYXIq
PiBtMiA9IElzTnVsbCgpOwotICBjb25zdCBjaGFyKiBwMiA9IE5VTEw7Ci0gIEVYUEVDVF9UUlVF
KG0yLk1hdGNoZXMocDIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoImhpIikpOwotCi0j
aWYgIUdURVNUX09TX1NZTUJJQU4KLSAgLy8gTm9raWEncyBTeW1iaWFuIGNvbXBpbGVyIGdlbmVy
YXRlczoKLSAgLy8gZ21vY2stbWF0Y2hlcnMuaDogYW1iaWd1b3VzIGFjY2VzcyB0byBvdmVybG9h
ZGVkIGZ1bmN0aW9uCi0gIC8vIGdtb2NrLW1hdGNoZXJzLmg6ICd0ZXN0aW5nOjpNYXRjaGVyPHZv
aWQgKj46Ok1hdGNoZXIodm9pZCAqKScKLSAgLy8gZ21vY2stbWF0Y2hlcnMuaDogJ3Rlc3Rpbmc6
Ok1hdGNoZXI8dm9pZCAqPjo6TWF0Y2hlcihjb25zdCB0ZXN0aW5nOjoKLSAgLy8gICAgIE1hdGNo
ZXJJbnRlcmZhY2U8dm9pZCAqPiAqKScKLSAgLy8gZ21vY2stbWF0Y2hlcnMuaDogIChwb2ludCBv
ZiBpbnN0YW50aWF0aW9uOiAndGVzdGluZzo6Ci0gIC8vICAgICBnbW9ja19tYXRjaGVyc190ZXN0
OjpJc051bGxUZXN0X01hdGNoZXNOdWxsUG9pbnRlcl9UZXN0OjpUZXN0Qm9keSgpJykKLSAgLy8g
Z21vY2stbWF0Y2hlcnMuaDogICAoaW5zdGFudGlhdGluZzogJ3Rlc3Rpbmc6OlBvbHltb3JwaGlj
TWF0YwotICBNYXRjaGVyPHZvaWQqPiBtMyA9IElzTnVsbCgpOwotICB2b2lkKiBwMyA9IE5VTEw7
Ci0gIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMocDMpKTsKLSAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNo
ZXMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhiZWVmKSkpOwotI2VuZGlmCi19Ci0KLVRFU1Qo
SXNOdWxsVGVzdCwgTGlua2VkUHRyKSB7Ci0gIGNvbnN0IE1hdGNoZXI8bGlua2VkX3B0cjxpbnQ+
ID4gbSA9IElzTnVsbCgpOwotICBjb25zdCBsaW5rZWRfcHRyPGludD4gbnVsbF9wOwotICBjb25z
dCBsaW5rZWRfcHRyPGludD4gbm9uX251bGxfcChuZXcgaW50KTsKLQotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMobnVsbF9wKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobm9uX251bGxfcCkp
OwotfQotCi1URVNUKElzTnVsbFRlc3QsIFJlZmVyZW5jZVRvQ29uc3RMaW5rZWRQdHIpIHsKLSAg
Y29uc3QgTWF0Y2hlcjxjb25zdCBsaW5rZWRfcHRyPGRvdWJsZT4mPiBtID0gSXNOdWxsKCk7Ci0g
IGNvbnN0IGxpbmtlZF9wdHI8ZG91YmxlPiBudWxsX3A7Ci0gIGNvbnN0IGxpbmtlZF9wdHI8ZG91
YmxlPiBub25fbnVsbF9wKG5ldyBkb3VibGUpOwotCi0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhu
dWxsX3ApKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhub25fbnVsbF9wKSk7Ci19Ci0KLSNp
ZiBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotVEVTVChJc051bGxUZXN0LCBTdGRGdW5jdGlvbikg
ewotICBjb25zdCBNYXRjaGVyPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbSA9IElzTnVsbCgpOwot
Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oKSkpOwotICBF
WFBFQ1RfRkFMU0UobS5NYXRjaGVzKFtde30pKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9GVU5DVElPTl8KLQotLy8gVGVzdHMgdGhhdCBJc051bGwoKSBkZXNjcmliZXMgaXRzZWxmIHBy
b3Blcmx5LgotVEVTVChJc051bGxUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxp
bnQqPiBtID0gSXNOdWxsKCk7Ci0gIEVYUEVDVF9FUSgiaXMgTlVMTCIsIERlc2NyaWJlKG0pKTsK
LSAgRVhQRUNUX0VRKCJpc24ndCBOVUxMIiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgTm90TnVsbCgpIG1hdGNoZXMgYW55IG5vbi1OVUxMIHBvaW50ZXIgb2YgYW55
IHR5cGUuCi1URVNUKE5vdE51bGxUZXN0LCBNYXRjaGVzTm9uTnVsbFBvaW50ZXIpIHsKLSAgTWF0
Y2hlcjxpbnQqPiBtMSA9IE5vdE51bGwoKTsKLSAgaW50KiBwMSA9IE5VTEw7Ci0gIGludCBuID0g
MDsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMocDEpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0
Y2hlcygmbikpOwotCi0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0yID0gTm90TnVsbCgpOwotICBj
b25zdCBjaGFyKiBwMiA9IE5VTEw7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKHAyKSk7Ci0g
IEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImhpIikpOwotfQotCi1URVNUKE5vdE51bGxUZXN0LCBM
aW5rZWRQdHIpIHsKLSAgY29uc3QgTWF0Y2hlcjxsaW5rZWRfcHRyPGludD4gPiBtID0gTm90TnVs
bCgpOwotICBjb25zdCBsaW5rZWRfcHRyPGludD4gbnVsbF9wOwotICBjb25zdCBsaW5rZWRfcHRy
PGludD4gbm9uX251bGxfcChuZXcgaW50KTsKLQotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG51
bGxfcCkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobm9uX251bGxfcCkpOwotfQotCi1URVNU
KE5vdE51bGxUZXN0LCBSZWZlcmVuY2VUb0NvbnN0TGlua2VkUHRyKSB7Ci0gIGNvbnN0IE1hdGNo
ZXI8Y29uc3QgbGlua2VkX3B0cjxkb3VibGU+Jj4gbSA9IE5vdE51bGwoKTsKLSAgY29uc3QgbGlu
a2VkX3B0cjxkb3VibGU+IG51bGxfcDsKLSAgY29uc3QgbGlua2VkX3B0cjxkb3VibGU+IG5vbl9u
dWxsX3AobmV3IGRvdWJsZSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhudWxsX3ApKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5vbl9udWxsX3ApKTsKLX0KLQotI2lmIEdURVNUX0hB
U19TVERfRlVOQ1RJT05fCi1URVNUKE5vdE51bGxUZXN0LCBTdGRGdW5jdGlvbikgewotICBjb25z
dCBNYXRjaGVyPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbSA9IE5vdE51bGwoKTsKLQotICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMoW117fSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPigpKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRlVOQ1RJ
T05fCi0KLS8vIFRlc3RzIHRoYXQgTm90TnVsbCgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHku
Ci1URVNUKE5vdE51bGxUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxpbnQqPiBt
ID0gTm90TnVsbCgpOwotICBFWFBFQ1RfRVEoImlzbid0IE5VTEwiLCBEZXNjcmliZShtKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUmVmKHZhcmlhYmxlKSBtYXRjaGVzIGFuIGFyZ3VtZW50IHRoYXQg
cmVmZXJlbmNlcwotLy8gJ3ZhcmlhYmxlJy4KLVRFU1QoUmVmVGVzdCwgTWF0Y2hlc1NhbWVWYXJp
YWJsZSkgewotICBpbnQgYSA9IDA7Ci0gIGludCBiID0gMDsKLSAgTWF0Y2hlcjxpbnQmPiBtID0g
UmVmKGEpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOwotICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKGIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSZWYodmFyaWFibGUpIGRlc2NyaWJlcyBp
dHNlbGYgcHJvcGVybHkuCi1URVNUKFJlZlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBpbnQg
biA9IDU7Ci0gIE1hdGNoZXI8aW50Jj4gbSA9IFJlZihuKTsKLSAgc3RyaW5nc3RyZWFtIHNzOwot
ICBzcyA8PCAicmVmZXJlbmNlcyB0aGUgdmFyaWFibGUgQCIgPDwgJm4gPDwgIiA1IjsKLSAgRVhQ
RUNUX0VRKHNzLnN0cigpLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBSZWYobm9u
X2NvbnN0X3ZhcmlhbGJlKSBjYW4gYmUgdXNlZCBhcyBhIG1hdGNoZXIgZm9yIGEKLS8vIGNvbnN0
IHJlZmVyZW5jZS4KLVRFU1QoUmVmVGVzdCwgQ2FuQmVVc2VkQXNNYXRjaGVyRm9yQ29uc3RSZWZl
cmVuY2UpIHsKLSAgaW50IGEgPSAwOwotICBpbnQgYiA9IDA7Ci0gIE1hdGNoZXI8Y29uc3QgaW50
Jj4gbSA9IFJlZihhKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhiKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVmKHZhcmlhYmxlKSBpcyBj
b3ZhcmlhbnQsIGkuZS4gUmVmKGRlcml2ZWQpIGNhbiBiZQotLy8gdXNlZCB3aGVyZXZlciBSZWYo
YmFzZSkgY2FuIGJlIHVzZWQgKFJlZihkZXJpdmVkKSBpcyBhIHN1Yi10eXBlCi0vLyBvZiBSZWYo
YmFzZSksIGJ1dCBub3QgdmljZSB2ZXJzYS4KLQotVEVTVChSZWZUZXN0LCBJc0NvdmFyaWFudCkg
ewotICBCYXNlIGJhc2UsIGJhc2UyOwotICBEZXJpdmVkIGRlcml2ZWQ7Ci0gIE1hdGNoZXI8Y29u
c3QgQmFzZSY+IG0xID0gUmVmKGJhc2UpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKGJhc2Up
KTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoYmFzZTIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0x
Lk1hdGNoZXMoZGVyaXZlZCkpOwotCi0gIG0xID0gUmVmKGRlcml2ZWQpOwotICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKGRlcml2ZWQpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoYmFzZSkp
OwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhiYXNlMikpOwotfQotCi1URVNUKFJlZlRlc3Qs
IEV4cGxhaW5zUmVzdWx0KSB7Ci0gIGludCBuID0gMDsKLSAgRVhQRUNUX1RIQVQoRXhwbGFpbihN
YXRjaGVyPGNvbnN0IGludCY+KFJlZihuKSksIG4pLAotICAgICAgICAgICAgICBTdGFydHNXaXRo
KCJ3aGljaCBpcyBsb2NhdGVkIEAiKSk7Ci0KLSAgaW50IG0gPSAwOwotICBFWFBFQ1RfVEhBVChF
eHBsYWluKE1hdGNoZXI8Y29uc3QgaW50Jj4oUmVmKG4pKSwgbSksCi0gICAgICAgICAgICAgIFN0
YXJ0c1dpdGgoIndoaWNoIGlzIGxvY2F0ZWQgQCIpKTsKLX0KLQotLy8gVGVzdHMgc3RyaW5nIGNv
bXBhcmlzb24gbWF0Y2hlcnMuCi0KLVRFU1QoU3RyRXFUZXN0LCBNYXRjaGVzRXF1YWxTdHJpbmcp
IHsKLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IFN0ckVxKHN0ZDo6c3RyaW5nKCJIZWxsbyIp
KTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJIZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcygiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVMTCkpOwotCi0g
IE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IFN0ckVxKCJIZWxsbyIpOwotICBFWFBF
Q1RfVFJVRShtMi5NYXRjaGVzKCJIZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
IkhpIikpOwotfQotCi1URVNUKFN0ckVxVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNo
ZXI8c3RkOjpzdHJpbmc+IG0gPSBTdHJFcSgiSGktXCdcIj9cXFxhXGJcZlxuXHJcdFx2XHhEMyIp
OwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIFwiSGktXCdcXFwiP1xcXFxcXGFcXGJcXGZcXG5c
XHJcXHRcXHZcXHhEM1wiIiwKLSAgICAgIERlc2NyaWJlKG0pKTsKLQotICBzdGQ6OnN0cmluZyBz
dHIoIjAxMjA0NTAwODAwIik7Ci0gIHN0clszXSA9ICdcMCc7Ci0gIE1hdGNoZXI8c3RkOjpzdHJp
bmc+IG0yID0gU3RyRXEoc3RyKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBcIjAxMlxcMDQ1
MDA4MDBcIiIsIERlc2NyaWJlKG0yKSk7Ci0gIHN0clswXSA9IHN0cls2XSA9IHN0cls3XSA9IHN0
cls5XSA9IHN0clsxMF0gPSAnXDAnOwotICBNYXRjaGVyPHN0ZDo6c3RyaW5nPiBtMyA9IFN0ckVx
KHN0cik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gXCJcXDAxMlxcMDQ1XFwwXFwwOFxcMFxc
MFwiIiwgRGVzY3JpYmUobTMpKTsKLX0KLQotVEVTVChTdHJOZVRlc3QsIE1hdGNoZXNVbmVxdWFs
U3RyaW5nKSB7Ci0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBTdHJOZSgiSGVsbG8iKTsKLSAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhOVUxM
KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoIkhlbGxvIikpOwotCi0gIE1hdGNoZXI8c3Rk
OjpzdHJpbmc+IG0yID0gU3RyTmUoc3RkOjpzdHJpbmcoIkhlbGxvIikpOwotICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoIkhlbGxv
IikpOwotfQotCi1URVNUKFN0ck5lVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8
Y29uc3QgY2hhcio+IG0gPSBTdHJOZSgiSGkiKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0
byBcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLVRFU1QoU3RyQ2FzZUVxVGVzdCwgTWF0Y2hl
c0VxdWFsU3RyaW5nSWdub3JpbmdDYXNlKSB7Ci0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBT
dHJDYXNlRXEoc3RyaW5nKCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJIZWxs
byIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcygiSGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVMTCkpOwotCi0g
IE1hdGNoZXI8Y29uc3Qgc3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoIkhlbGxvIik7Ci0gIEVYUEVD
VF9UUlVFKG0yLk1hdGNoZXMoImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygi
SGkiKSk7Ci19Ci0KLVRFU1QoU3RyQ2FzZUVxVGVzdCwgTWF0Y2hlc0VxdWFsU3RyaW5nV2l0aDBJ
Z25vcmluZ0Nhc2UpIHsKLSAgc3RkOjpzdHJpbmcgc3RyMSgib2Fib2Nkb29lb28iKTsKLSAgc3Rk
OjpzdHJpbmcgc3RyMigiT0FCT0NET09FT08iKTsKLSAgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmlu
ZyY+IG0wID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfRkFMU0UobTAuTWF0Y2hlcyhzdHIy
ICsgc3RkOjpzdHJpbmcoMSwgJ1wwJykpKTsKLQotICBzdHIxWzNdID0gc3RyMlszXSA9ICdcMCc7
Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMSA9IFN0ckNhc2VFcShzdHIxKTsKLSAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhzdHIyKSk7Ci0KLSAgc3RyMVswXSA9IHN0cjFbNl0gPSBz
dHIxWzddID0gc3RyMVsxMF0gPSAnXDAnOwotICBzdHIyWzBdID0gc3RyMls2XSA9IHN0cjJbN10g
PSBzdHIyWzEwXSA9ICdcMCc7Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IFN0
ckNhc2VFcShzdHIxKTsKLSAgc3RyMVs5XSA9IHN0cjJbOV0gPSAnXDAnOwotICBFWFBFQ1RfRkFM
U0UobTIuTWF0Y2hlcyhzdHIyKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG0z
ID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKHN0cjIpKTsKLQot
ICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyICsgIngiKSk7Ci0gIHN0cjIuYXBwZW5kKDEs
ICdcMCcpOwotICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyKSk7Ci0gIEVYUEVDVF9GQUxT
RShtMy5NYXRjaGVzKHN0ZDo6c3RyaW5nKHN0cjIsIDAsIDkpKSk7Ci19Ci0KLVRFU1QoU3RyQ2Fz
ZUVxVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0gPSBT
dHJDYXNlRXEoIkhpIik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gKGlnbm9yaW5nIGNhc2Up
IFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotVEVTVChTdHJDYXNlTmVUZXN0LCBNYXRjaGVz
VW5lcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgewotICBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtID0g
U3RyQ2FzZU5lKCJIZWxsbyIpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoIkhpIikpOwotICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVMTCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCJI
ZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygiaGVsbG8iKSk7Ci0KLSAgTWF0Y2hl
cjxzdGQ6OnN0cmluZz4gbTIgPSBTdHJDYXNlTmUoc3RkOjpzdHJpbmcoIkhlbGxvIikpOwotICBF
WFBFQ1RfVFJVRShtMi5NYXRjaGVzKCIiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJI
ZWxsbyIpKTsKLX0KLQotVEVTVChTdHJDYXNlTmVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAg
TWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IFN0ckNhc2VOZSgiSGkiKTsKLSAgRVhQRUNUX0VRKCJp
c24ndCBlcXVhbCB0byAoaWdub3JpbmcgY2FzZSkgXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEhhc1N1YnN0cigpIHdvcmtzIGZvciBtYXRjaGluZyBzdHJpbmctdHlw
ZWQgdmFsdWVzLgotVEVTVChIYXNTdWJzdHJUZXN0LCBXb3Jrc0ZvclN0cmluZ0NsYXNzZXMpIHsK
LSAgY29uc3QgTWF0Y2hlcjxzdGQ6OnN0cmluZz4gbTEgPSBIYXNTdWJzdHIoImZvbyIpOwotICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKHN0ZDo6c3RyaW5nKCJJIGxvdmUgZm9vZC4iKSkpOwotICBF
WFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhzdGQ6OnN0cmluZygidG9mbyIpKSk7Ci0KLSAgY29uc3Qg
TWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG0yID0gSGFzU3Vic3RyKCJmb28iKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcyhzdGQ6OnN0cmluZygiSSBsb3ZlIGZvb2QuIikpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoc3RkOjpzdHJpbmcoInRvZm8iKSkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IEhhc1N1YnN0cigpIHdvcmtzIGZvciBtYXRjaGluZyBDLXN0cmluZy10eXBlZCB2YWx1
ZXMuCi1URVNUKEhhc1N1YnN0clRlc3QsIFdvcmtzRm9yQ1N0cmluZ3MpIHsKLSAgY29uc3QgTWF0
Y2hlcjxjaGFyKj4gbTEgPSBIYXNTdWJzdHIoImZvbyIpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRj
aGVzKGNvbnN0X2Nhc3Q8Y2hhcio+KCJJIGxvdmUgZm9vZC4iKSkpOwotICBFWFBFQ1RfRkFMU0Uo
bTEuTWF0Y2hlcyhjb25zdF9jYXN0PGNoYXIqPigidG9mbyIpKSk7Ci0gIEVYUEVDVF9GQUxTRSht
MS5NYXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtMiA9IEhh
c1N1YnN0cigiZm9vIik7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoIkkgbG92ZSBmb29kLiIp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoInRvZm8iKSk7Ci0gIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKE5VTEwpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBIYXNTdWJzdHIocykgZGVzY3Jp
YmVzIGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoSGFzU3Vic3RyVGVzdCwgQ2FuRGVzY3JpYmVTZWxm
KSB7Ci0gIE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0gPSBIYXNTdWJzdHIoImZvb1xuXCIiKTsKLSAg
RVhQRUNUX0VRKCJoYXMgc3Vic3RyaW5nIFwiZm9vXFxuXFxcIlwiIiwgRGVzY3JpYmUobSkpOwot
fQotCi1URVNUKEtleVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IHBh
aXI8c3RkOjpzdHJpbmcsIGludD4mPiBtID0gS2V5KCJmb28iKTsKLSAgRVhQRUNUX0VRKCJoYXMg
YSBrZXkgdGhhdCBpcyBlcXVhbCB0byBcImZvb1wiIiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1Rf
RVEoImRvZXNuJ3QgaGF2ZSBhIGtleSB0aGF0IGlzIGVxdWFsIHRvIFwiZm9vXCIiLCBEZXNjcmli
ZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChLZXlUZXN0LCBFeHBsYWluc1Jlc3VsdCkgewotICBN
YXRjaGVyPHBhaXI8aW50LCBib29sPiA+IG0gPSBLZXkoR3JlYXRlclRoYW4oMTApKTsKLSAgRVhQ
RUNUX0VRKCJ3aG9zZSBmaXJzdCBmaWVsZCBpcyBhIHZhbHVlIHdoaWNoIGlzIDUgbGVzcyB0aGFu
IDEwIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV9wYWlyKDUsIHRydWUpKSk7Ci0gIEVY
UEVDVF9FUSgid2hvc2UgZmlyc3QgZmllbGQgaXMgYSB2YWx1ZSB3aGljaCBpcyA1IG1vcmUgdGhh
biAxMCIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfcGFpcigxNSwgdHJ1ZSkpKTsKLX0K
LQotVEVTVChLZXlUZXN0LCBNYXRjaGVzQ29ycmVjdGx5KSB7Ci0gIHBhaXI8aW50LCBzdGQ6OnN0
cmluZz4gcCgyNSwgImZvbyIpOwotICBFWFBFQ1RfVEhBVChwLCBLZXkoMjUpKTsKLSAgRVhQRUNU
X1RIQVQocCwgTm90KEtleSg0MikpKTsKLSAgRVhQRUNUX1RIQVQocCwgS2V5KEdlKDIwKSkpOwot
ICBFWFBFQ1RfVEhBVChwLCBOb3QoS2V5KEx0KDI1KSkpKTsKLX0KLQotVEVTVChLZXlUZXN0LCBT
YWZlbHlDYXN0c0lubmVyTWF0Y2hlcikgewotICBNYXRjaGVyPGludD4gaXNfcG9zaXRpdmUgPSBH
dCgwKTsKLSAgTWF0Y2hlcjxpbnQ+IGlzX25lZ2F0aXZlID0gTHQoMCk7Ci0gIHBhaXI8Y2hhciwg
Ym9vbD4gcCgnYScsIHRydWUpOwotICBFWFBFQ1RfVEhBVChwLCBLZXkoaXNfcG9zaXRpdmUpKTsK
LSAgRVhQRUNUX1RIQVQocCwgTm90KEtleShpc19uZWdhdGl2ZSkpKTsKLX0KLQotVEVTVChLZXlU
ZXN0LCBJbnNpZGVDb250YWluc1VzaW5nTWFwKSB7Ci0gIG1hcDxpbnQsIGNoYXI+IGNvbnRhaW5l
cjsKLSAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoMSwgJ2EnKSk7Ci0gIGNvbnRhaW5lci5p
bnNlcnQobWFrZV9wYWlyKDIsICdiJykpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcig0
LCAnYycpKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBDb250YWlucyhLZXkoMSkpKTsKLSAg
RVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoQ29udGFpbnMoS2V5KDMpKSkpOwotfQotCi1URVNU
KEtleVRlc3QsIEluc2lkZUNvbnRhaW5zVXNpbmdNdWx0aW1hcCkgewotICBtdWx0aW1hcDxpbnQs
IGNoYXI+IGNvbnRhaW5lcjsKLSAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoMSwgJ2EnKSk7
Ci0gIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDIsICdiJykpOwotICBjb250YWluZXIuaW5z
ZXJ0KG1ha2VfcGFpcig0LCAnYycpKTsKLQotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChD
b250YWlucyhLZXkoMjUpKSkpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyNSwgJ2Qn
KSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFpbnMoS2V5KDI1KSkpOwotICBjb250
YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyNSwgJ2UnKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5l
ciwgQ29udGFpbnMoS2V5KDI1KSkpOwotCi0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFp
bnMoS2V5KDEpKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KENvbnRhaW5zKEtleSgz
KSkpKTsKLX0KLQotVEVTVChQYWlyVGVzdCwgVHlwaW5nKSB7Ci0gIC8vIFRlc3QgdmVyaWZpZXMg
dGhlIGZvbGxvd2luZyB0eXBlIGNvbnZlcnNpb25zIGNhbiBiZSBjb21waWxlZC4KLSAgTWF0Y2hl
cjxjb25zdCBwYWlyPGNvbnN0IGNoYXIqLCBpbnQ+Jj4gbTEgPSBQYWlyKCJmb28iLCA0Mik7Ci0g
IE1hdGNoZXI8Y29uc3QgcGFpcjxjb25zdCBjaGFyKiwgaW50PiA+IG0yID0gUGFpcigiZm9vIiwg
NDIpOwotICBNYXRjaGVyPHBhaXI8Y29uc3QgY2hhciosIGludD4gPiBtMyA9IFBhaXIoImZvbyIs
IDQyKTsKLQotICBNYXRjaGVyPHBhaXI8aW50LCBjb25zdCBzdGQ6OnN0cmluZz4gPiBtNCA9IFBh
aXIoMjUsICI0MiIpOwotICBNYXRjaGVyPHBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIGludD4gPiBt
NSA9IFBhaXIoIjI1IiwgNDIpOwotfQotCi1URVNUKFBhaXJUZXN0LCBDYW5EZXNjcmliZVNlbGYp
IHsKLSAgTWF0Y2hlcjxjb25zdCBwYWlyPHN0ZDo6c3RyaW5nLCBpbnQ+Jj4gbTEgPSBQYWlyKCJm
b28iLCA0Mik7Ci0gIEVYUEVDVF9FUSgiaGFzIGEgZmlyc3QgZmllbGQgdGhhdCBpcyBlcXVhbCB0
byBcImZvb1wiIgotICAgICAgICAgICAgIiwgYW5kIGhhcyBhIHNlY29uZCBmaWVsZCB0aGF0IGlz
IGVxdWFsIHRvIDQyIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0xKSk7Ci0gIEVYUEVDVF9FUSgi
aGFzIGEgZmlyc3QgZmllbGQgdGhhdCBpc24ndCBlcXVhbCB0byBcImZvb1wiIgotICAgICAgICAg
ICAgIiwgb3IgaGFzIGEgc2Vjb25kIGZpZWxkIHRoYXQgaXNuJ3QgZXF1YWwgdG8gNDIiLAotICAg
ICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwotICAvLyBEb3VibGUgYW5kIHRyaXBsZSBu
ZWdhdGlvbiAoMSBvciAyIHRpbWVzIG5vdCBhbmQgZGVzY3JpcHRpb24gb2YgbmVnYXRpb24pLgot
ICBNYXRjaGVyPGNvbnN0IHBhaXI8aW50LCBpbnQ+Jj4gbTIgPSBOb3QoUGFpcihOb3QoMTMpLCA0
MikpOwotICBFWFBFQ1RfRVEoImhhcyBhIGZpcnN0IGZpZWxkIHRoYXQgaXNuJ3QgZXF1YWwgdG8g
MTMiCi0gICAgICAgICAgICAiLCBhbmQgaGFzIGEgc2Vjb25kIGZpZWxkIHRoYXQgaXMgZXF1YWwg
dG8gNDIiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotfQotCi1URVNUKFBh
aXJUZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHRUbykgewotICAvLyBJZiBuZWl0aGVyIGZpZWxk
IG1hdGNoZXMsIFBhaXIoKSBzaG91bGQgZXhwbGFpbiBhYm91dCB0aGUgZmlyc3QKLSAgLy8gZmll
bGQuCi0gIGNvbnN0IE1hdGNoZXI8cGFpcjxpbnQsIGludD4gPiBtID0gUGFpcihHcmVhdGVyVGhh
bigwKSwgR3JlYXRlclRoYW4oMCkpOwotICBFWFBFQ1RfRVEoIndob3NlIGZpcnN0IGZpZWxkIGRv
ZXMgbm90IG1hdGNoLCB3aGljaCBpcyAxIGxlc3MgdGhhbiAwIiwKLSAgICAgICAgICAgIEV4cGxh
aW4obSwgbWFrZV9wYWlyKC0xLCAtMikpKTsKLQotICAvLyBJZiB0aGUgZmlyc3QgZmllbGQgbWF0
Y2hlcyBidXQgdGhlIHNlY29uZCBkb2Vzbid0LCBQYWlyKCkgc2hvdWxkCi0gIC8vIGV4cGxhaW4g
YWJvdXQgdGhlIHNlY29uZCBmaWVsZC4KLSAgRVhQRUNUX0VRKCJ3aG9zZSBzZWNvbmQgZmllbGQg
ZG9lcyBub3QgbWF0Y2gsIHdoaWNoIGlzIDIgbGVzcyB0aGFuIDAiLAotICAgICAgICAgICAgRXhw
bGFpbihtLCBtYWtlX3BhaXIoMSwgLTIpKSk7Ci0KLSAgLy8gSWYgdGhlIGZpcnN0IGZpZWxkIGRv
ZXNuJ3QgbWF0Y2ggYnV0IHRoZSBzZWNvbmQgZG9lcywgUGFpcigpCi0gIC8vIHNob3VsZCBleHBs
YWluIGFib3V0IHRoZSBmaXJzdCBmaWVsZC4KLSAgRVhQRUNUX0VRKCJ3aG9zZSBmaXJzdCBmaWVs
ZCBkb2VzIG5vdCBtYXRjaCwgd2hpY2ggaXMgMSBsZXNzIHRoYW4gMCIsCi0gICAgICAgICAgICBF
eHBsYWluKG0sIG1ha2VfcGFpcigtMSwgMikpKTsKLQotICAvLyBJZiBib3RoIGZpZWxkcyBtYXRj
aCwgUGFpcigpIHNob3VsZCBleHBsYWluIGFib3V0IHRoZW0gYm90aC4KLSAgRVhQRUNUX0VRKCJ3
aG9zZSBib3RoIGZpZWxkcyBtYXRjaCwgd2hlcmUgdGhlIGZpcnN0IGZpZWxkIGlzIGEgdmFsdWUg
IgotICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0aGFuIDAsIGFuZCB0aGUgc2Vjb25kIGZp
ZWxkIGlzIGEgdmFsdWUgIgotICAgICAgICAgICAgIndoaWNoIGlzIDIgbW9yZSB0aGFuIDAiLAot
ICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtlX3BhaXIoMSwgMikpKTsKLQotICAvLyBJZiBvbmx5
IHRoZSBmaXJzdCBtYXRjaCBoYXMgYW4gZXhwbGFuYXRpb24sIG9ubHkgdGhpcyBleHBsYW5hdGlv
biBzaG91bGQKLSAgLy8gYmUgcHJpbnRlZC4KLSAgY29uc3QgTWF0Y2hlcjxwYWlyPGludCwgaW50
PiA+IGV4cGxhaW5fZmlyc3QgPSBQYWlyKEdyZWF0ZXJUaGFuKDApLCAwKTsKLSAgRVhQRUNUX0VR
KCJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCwgd2hlcmUgdGhlIGZpcnN0IGZpZWxkIGlzIGEgdmFs
dWUgIgotICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLAotICAgICAgICAgICAg
RXhwbGFpbihleHBsYWluX2ZpcnN0LCBtYWtlX3BhaXIoMSwgMCkpKTsKLQotICAvLyBJZiBvbmx5
IHRoZSBzZWNvbmQgbWF0Y2ggaGFzIGFuIGV4cGxhbmF0aW9uLCBvbmx5IHRoaXMgZXhwbGFuYXRp
b24gc2hvdWxkCi0gIC8vIGJlIHByaW50ZWQuCi0gIGNvbnN0IE1hdGNoZXI8cGFpcjxpbnQsIGlu
dD4gPiBleHBsYWluX3NlY29uZCA9IFBhaXIoMCwgR3JlYXRlclRoYW4oMCkpOwotICBFWFBFQ1Rf
RVEoIndob3NlIGJvdGggZmllbGRzIG1hdGNoLCB3aGVyZSB0aGUgc2Vjb25kIGZpZWxkIGlzIGEg
dmFsdWUgIgotICAgICAgICAgICAgIndoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLAotICAgICAgICAg
ICAgRXhwbGFpbihleHBsYWluX3NlY29uZCwgbWFrZV9wYWlyKDAsIDEpKSk7Ci19Ci0KLVRFU1Qo
UGFpclRlc3QsIE1hdGNoZXNDb3JyZWN0bHkpIHsKLSAgcGFpcjxpbnQsIHN0ZDo6c3RyaW5nPiBw
KDI1LCAiZm9vIik7Ci0KLSAgLy8gQm90aCBmaWVsZHMgbWF0Y2guCi0gIEVYUEVDVF9USEFUKHAs
IFBhaXIoMjUsICJmb28iKSk7Ci0gIEVYUEVDVF9USEFUKHAsIFBhaXIoR2UoMjApLCBIYXNTdWJz
dHIoIm8iKSkpOwotCi0gIC8vICdmaXJzdCcgZG9lc250JyBtYXRjaCwgYnV0ICdzZWNvbmQnIG1h
dGNoZXMuCi0gIEVYUEVDVF9USEFUKHAsIE5vdChQYWlyKDQyLCAiZm9vIikpKTsKLSAgRVhQRUNU
X1RIQVQocCwgTm90KFBhaXIoTHQoMjUpLCAiZm9vIikpKTsKLQotICAvLyAnZmlyc3QnIG1hdGNo
ZXMsIGJ1dCAnc2Vjb25kJyBkb2Vzbid0IG1hdGNoLgotICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFp
cigyNSwgImJhciIpKSk7Ci0gIEVYUEVDVF9USEFUKHAsIE5vdChQYWlyKDI1LCBOb3QoImZvbyIp
KSkpOwotCi0gIC8vIE5laXRoZXIgZmllbGQgbWF0Y2hlcy4KLSAgRVhQRUNUX1RIQVQocCwgTm90
KFBhaXIoMTMsICJiYXIiKSkpOwotICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFpcihMdCgxMyksIEhh
c1N1YnN0cigiYSIpKSkpOwotfQotCi1URVNUKFBhaXJUZXN0LCBTYWZlbHlDYXN0c0lubmVyTWF0
Y2hlcnMpIHsKLSAgTWF0Y2hlcjxpbnQ+IGlzX3Bvc2l0aXZlID0gR3QoMCk7Ci0gIE1hdGNoZXI8
aW50PiBpc19uZWdhdGl2ZSA9IEx0KDApOwotICBwYWlyPGNoYXIsIGJvb2w+IHAoJ2EnLCB0cnVl
KTsKLSAgRVhQRUNUX1RIQVQocCwgUGFpcihpc19wb3NpdGl2ZSwgXykpOwotICBFWFBFQ1RfVEhB
VChwLCBOb3QoUGFpcihpc19uZWdhdGl2ZSwgXykpKTsKLSAgRVhQRUNUX1RIQVQocCwgUGFpcihf
LCBpc19wb3NpdGl2ZSkpOwotICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFpcihfLCBpc19uZWdhdGl2
ZSkpKTsKLX0KLQotVEVTVChQYWlyVGVzdCwgSW5zaWRlQ29udGFpbnNVc2luZ01hcCkgewotICBt
YXA8aW50LCBjaGFyPiBjb250YWluZXI7Ci0gIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDEs
ICdhJykpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyLCAnYicpKTsKLSAgY29udGFp
bmVyLmluc2VydChtYWtlX3BhaXIoNCwgJ2MnKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwg
Q29udGFpbnMoUGFpcigxLCAnYScpKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFp
bnMoUGFpcigxLCBfKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIENvbnRhaW5zKFBhaXIo
XywgJ2EnKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChDb250YWlucyhQYWlyKDMs
IF8pKSkpOwotfQotCi0vLyBUZXN0cyBTdGFydHNXaXRoKHMpLgotCi1URVNUKFN0YXJ0c1dpdGhU
ZXN0LCBNYXRjaGVzU3RyaW5nV2l0aEdpdmVuUHJlZml4KSB7Ci0gIGNvbnN0IE1hdGNoZXI8Y29u
c3QgY2hhcio+IG0xID0gU3RhcnRzV2l0aChzdGQ6OnN0cmluZygiIikpOwotICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiIikpOwotICBF
WFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBz
dGQ6OnN0cmluZyY+IG0yID0gU3RhcnRzV2l0aCgiSGkiKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcygiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoIkhpIEhpISIpKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcygiSGlnaCIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
IkgiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCIgSGkiKSk7Ci19Ci0KLVRFU1QoU3Rh
cnRzV2l0aFRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3Ry
aW5nPiBtID0gU3RhcnRzV2l0aCgiSGkiKTsKLSAgRVhQRUNUX0VRKCJzdGFydHMgd2l0aCBcIkhp
XCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIEVuZHNXaXRoKHMpLgotCi1URVNUKEVu
ZHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblN1ZmZpeCkgewotICBjb25zdCBNYXRj
aGVyPGNvbnN0IGNoYXIqPiBtMSA9IEVuZHNXaXRoKCIiKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0
Y2hlcygiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoIiIpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RyaW5nJj4g
bTIgPSBFbmRzV2l0aChzdHJpbmcoIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJI
aSIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiV293IEhpIEhpIikpOwotICBFWFBFQ1Rf
VFJVRShtMi5NYXRjaGVzKCJTdXBlciBIaSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMo
ImkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJIaSAiKSk7Ci19Ci0KLVRFU1QoRW5k
c1dpdGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmlu
Zz4gbSA9IEVuZHNXaXRoKCJIaSIpOwotICBFWFBFQ1RfRVEoImVuZHMgd2l0aCBcIkhpXCIiLCBE
ZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIE1hdGNoZXNSZWdleCgpLgotCi1URVNUKE1hdGNo
ZXNSZWdleFRlc3QsIE1hdGNoZXNTdHJpbmdNYXRjaGluZ0dpdmVuUmVnZXgpIHsKLSAgY29uc3Qg
TWF0Y2hlcjxjb25zdCBjaGFyKj4gbTEgPSBNYXRjaGVzUmVnZXgoImEuKnoiKTsKLSAgRVhQRUNU
X1RSVUUobTEuTWF0Y2hlcygiYXoiKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoImFiY3oi
KSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVy
PGNvbnN0IHN0ZDo6c3RyaW5nJj4gbTIgPSBNYXRjaGVzUmVnZXgobmV3IFJFKCJhLip6IikpOwot
ICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJhemJ6IikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcygiYXoxIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygiMWF6IikpOwotfQotCi1U
RVNUKE1hdGNoZXNSZWdleFRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0
IHN0ZDo6c3RyaW5nPiBtMSA9IE1hdGNoZXNSZWdleChzdGQ6OnN0cmluZygiSGkuKiIpKTsKLSAg
RVhQRUNUX0VRKCJtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIkhpLipcIiIsIERlc2NyaWJl
KG0xKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTIgPSBNYXRjaGVzUmVnZXgobmV3IFJF
KCJhLioiKSk7Ci0gIEVYUEVDVF9FUSgibWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb24gXCJhLipc
IiIsIERlc2NyaWJlKG0yKSk7Ci19Ci0KLS8vIFRlc3RzIENvbnRhaW5zUmVnZXgoKS4KLQotVEVT
VChDb250YWluc1JlZ2V4VGVzdCwgTWF0Y2hlc1N0cmluZ0NvbnRhaW5pbmdHaXZlblJlZ2V4KSB7
Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgY2hhcio+IG0xID0gQ29udGFpbnNSZWdleChzdGQ6OnN0
cmluZygiYS4qeiIpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiYXoiKSk7Ci0gIEVYUEVD
VF9UUlVFKG0xLk1hdGNoZXMoIjBhYmN6MSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
TlVMTCkpOwotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IENvbnRh
aW5zUmVnZXgobmV3IFJFKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJhemJ6
IikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJhejEiKSk7Ci0gIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKCIxYSIpKTsKLX0KLQotVEVTVChDb250YWluc1JlZ2V4VGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmc+IG0xID0gQ29udGFpbnNSZWdl
eCgiSGkuKiIpOwotICBFWFBFQ1RfRVEoImNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBcIkhp
LipcIiIsIERlc2NyaWJlKG0xKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTIgPSBDb250
YWluc1JlZ2V4KG5ldyBSRSgiYS4qIikpOwotICBFWFBFQ1RfRVEoImNvbnRhaW5zIHJlZ3VsYXIg
ZXhwcmVzc2lvbiBcImEuKlwiIiwgRGVzY3JpYmUobTIpKTsKLX0KLQotLy8gVGVzdHMgZm9yIHdp
ZGUgc3RyaW5ncy4KLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLVRFU1QoU3RkV2lkZVN0ckVx
VGVzdCwgTWF0Y2hlc0VxdWFsKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0gPSBTdHJF
cSg6OnN0ZDo6d3N0cmluZyhMIkhlbGxvIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCJI
ZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhMImhlbGxvIikpOwotICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLQotICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5n
Jj4gbTIgPSBTdHJFcShMIkhlbGxvIik7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIZWxs
byIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIaSIpKTsKLQotICBNYXRjaGVyPGNv
bnN0IDo6c3RkOjp3c3RyaW5nJj4gbTMgPSBTdHJFcShMIlx4RDNceDU3Nlx4OEQzXHhDNzREIik7
Ci0gIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RCIpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RSIpKTsKLQotICA6
OnN0ZDo6d3N0cmluZyBzdHIoTCIwMTIwNDUwMDgwMCIpOwotICBzdHJbM10gPSBMJ1wwJzsKLSAg
TWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG00ID0gU3RyRXEoc3RyKTsKLSAgRVhQRUNU
X1RSVUUobTQuTWF0Y2hlcyhzdHIpKTsKLSAgc3RyWzBdID0gc3RyWzZdID0gc3RyWzddID0gc3Ry
WzldID0gc3RyWzEwXSA9IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4g
bTUgPSBTdHJFcShzdHIpOwotICBFWFBFQ1RfVFJVRShtNS5NYXRjaGVzKHN0cikpOwotfQotCi1U
RVNUKFN0ZFdpZGVTdHJFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPCA6OnN0
ZDo6d3N0cmluZz4gbSA9IFN0ckVxKEwiSGktXCdcIj9cXFxhXGJcZlxuXHJcdFx2Iik7Ci0gIEVY
UEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiSGktXCdcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXHJcXHRc
XHZcIiIsCi0gICAgRGVzY3JpYmUobSkpOwotCi0gIE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBt
MiA9IFN0ckVxKEwiXHhEM1x4NTc2XHg4RDNceEM3NEQiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVh
bCB0byBMXCJcXHhEM1xceDU3NlxceDhEM1xceEM3NERcIiIsCi0gICAgRGVzY3JpYmUobTIpKTsK
LQotICA6OnN0ZDo6d3N0cmluZyBzdHIoTCIwMTIwNDUwMDgwMCIpOwotICBzdHJbM10gPSBMJ1ww
JzsKLSAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG00ID0gU3RyRXEoc3RyKTsKLSAg
RVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCIwMTJcXDA0NTAwODAwXCIiLCBEZXNjcmliZShtNCkp
OwotICBzdHJbMF0gPSBzdHJbNl0gPSBzdHJbN10gPSBzdHJbOV0gPSBzdHJbMTBdID0gTCdcMCc7
Ci0gIE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtNSA9IFN0ckVxKHN0cik7Ci0gIEVY
UEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiXFwwMTJcXDA0NVxcMFxcMDhcXDBcXDBcIiIsIERlc2Ny
aWJlKG01KSk7Ci19Ci0KLVRFU1QoU3RkV2lkZVN0ck5lVGVzdCwgTWF0Y2hlc1VuZXF1YWxTdHJp
bmcpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ck5lKEwiSGVsbG8iKTsKLSAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVM
TCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKEwiSGVsbG8iKSk7Ci0KLSAgTWF0Y2hlcjwg
OjpzdGQ6OndzdHJpbmc+IG0yID0gU3RyTmUoOjpzdGQ6OndzdHJpbmcoTCJIZWxsbyIpKTsKLSAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcyhMIkhlbGxvIikpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJOZVRlc3QsIENhbkRlc2NyaWJl
U2VsZikgewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyTmUoTCJIaSIpOwotICBF
WFBFQ1RfRVEoImlzbid0IGVxdWFsIHRvIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLVRF
U1QoU3RkV2lkZVN0ckNhc2VFcVRlc3QsIE1hdGNoZXNFcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkg
ewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2FzZUVxKDo6c3RkOjp3c3RyaW5n
KEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhMIkhlbGxvIikpOwotICBFWFBF
Q1RfVFJVRShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhM
IkhpIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLQotICBNYXRjaGVyPGNv
bnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoTCJIZWxsbyIpOwotICBFWFBFQ1Rf
VFJVRShtMi5NYXRjaGVzKEwiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwi
SGkiKSk7Ci19Ci0KLVRFU1QoU3RkV2lkZVN0ckNhc2VFcVRlc3QsIE1hdGNoZXNFcXVhbFN0cmlu
Z1dpdGgwSWdub3JpbmdDYXNlKSB7Ci0gIDo6c3RkOjp3c3RyaW5nIHN0cjEoTCJvYWJvY2Rvb2Vv
byIpOwotICA6OnN0ZDo6d3N0cmluZyBzdHIyKEwiT0FCT0NET09FT08iKTsKLSAgTWF0Y2hlcjxj
b25zdCA6OnN0ZDo6d3N0cmluZyY+IG0wID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfRkFM
U0UobTAuTWF0Y2hlcyhzdHIyICsgOjpzdGQ6OndzdHJpbmcoMSwgTCdcMCcpKSk7Ci0KLSAgc3Ry
MVszXSA9IHN0cjJbM10gPSBMJ1wwJzsKLSAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+
IG0xID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKHN0cjIpKTsK
LQotICBzdHIxWzBdID0gc3RyMVs2XSA9IHN0cjFbN10gPSBzdHIxWzEwXSA9IEwnXDAnOwotICBz
dHIyWzBdID0gc3RyMls2XSA9IHN0cjJbN10gPSBzdHIyWzEwXSA9IEwnXDAnOwotICBNYXRjaGVy
PGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoc3RyMSk7Ci0gIHN0cjFbOV0g
PSBzdHIyWzldID0gTCdcMCc7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKHN0cjIpKTsKLQot
ICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTMgPSBTdHJDYXNlRXEoc3RyMSk7Ci0g
IEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoc3RyMikpOwotCi0gIEVYUEVDVF9GQUxTRShtMy5NYXRj
aGVzKHN0cjIgKyBMIngiKSk7Ci0gIHN0cjIuYXBwZW5kKDEsIEwnXDAnKTsKLSAgRVhQRUNUX0ZB
TFNFKG0zLk1hdGNoZXMoc3RyMikpOwotICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyg6OnN0ZDo6
d3N0cmluZyhzdHIyLCAwLCA5KSkpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJDYXNlRXFUZXN0LCBD
YW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjwgOjpzdGQ6OndzdHJpbmc+IG0gPSBTdHJDYXNl
RXEoTCJIaSIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIChpZ25vcmluZyBjYXNlKSBMXCJI
aVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJDYXNlTmVUZXN0LCBNYXRj
aGVzVW5lcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3Qq
PiBtID0gU3RyQ2FzZU5lKEwiSGVsbG8iKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiSGki
KSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhOVUxMKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhMImhlbGxvIikpOwot
Ci0gIE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtMiA9IFN0ckNhc2VOZSg6OnN0ZDo6d3N0cmlu
ZyhMIkhlbGxvIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiIikpOwotICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcyhMIkhlbGxvIikpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJDYXNlTmVU
ZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0
ckNhc2VOZShMIkhpIik7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgZXF1YWwgdG8gKGlnbm9yaW5nIGNh
c2UpIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSGFzU3Vic3Ry
KCkgd29ya3MgZm9yIG1hdGNoaW5nIHdzdHJpbmctdHlwZWQgdmFsdWVzLgotVEVTVChTdGRXaWRl
SGFzU3Vic3RyVGVzdCwgV29ya3NGb3JTdHJpbmdDbGFzc2VzKSB7Ci0gIGNvbnN0IE1hdGNoZXI8
IDo6c3RkOjp3c3RyaW5nPiBtMSA9IEhhc1N1YnN0cihMImZvbyIpOwotICBFWFBFQ1RfVFJVRSht
MS5NYXRjaGVzKDo6c3RkOjp3c3RyaW5nKEwiSSBsb3ZlIGZvb2QuIikpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0xLk1hdGNoZXMoOjpzdGQ6OndzdHJpbmcoTCJ0b2ZvIikpKTsKLQotICBjb25zdCBNYXRj
aGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBIYXNTdWJzdHIoTCJmb28iKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcyg6OnN0ZDo6d3N0cmluZyhMIkkgbG92ZSBmb29kLiIpKSk7Ci0g
IEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKDo6c3RkOjp3c3RyaW5nKEwidG9mbyIpKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgSGFzU3Vic3RyKCkgd29ya3MgZm9yIG1hdGNoaW5nIEMtd2lkZS1zdHJp
bmctdHlwZWQgdmFsdWVzLgotVEVTVChTdGRXaWRlSGFzU3Vic3RyVGVzdCwgV29ya3NGb3JDU3Ry
aW5ncykgewotICBjb25zdCBNYXRjaGVyPHdjaGFyX3QqPiBtMSA9IEhhc1N1YnN0cihMImZvbyIp
OwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KEwiSSBsb3Zl
IGZvb2QuIikpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoY29uc3RfY2FzdDx3Y2hhcl90
Kj4oTCJ0b2ZvIikpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNv
bnN0IE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0yID0gSGFzU3Vic3RyKEwiZm9vIik7Ci0gIEVY
UEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJJIGxvdmUgZm9vZC4iKSk7Ci0gIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKEwidG9mbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTlVMTCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IEhhc1N1YnN0cihzKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5
LgotVEVTVChTdGRXaWRlSGFzU3Vic3RyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNo
ZXI8IDo6c3RkOjp3c3RyaW5nPiBtID0gSGFzU3Vic3RyKEwiZm9vXG5cIiIpOwotICBFWFBFQ1Rf
RVEoImhhcyBzdWJzdHJpbmcgTFwiZm9vXFxuXFxcIlwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0v
LyBUZXN0cyBTdGFydHNXaXRoKHMpLgotCi1URVNUKFN0ZFdpZGVTdGFydHNXaXRoVGVzdCwgTWF0
Y2hlc1N0cmluZ1dpdGhHaXZlblByZWZpeCkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IHdjaGFy
X3QqPiBtMSA9IFN0YXJ0c1dpdGgoOjpzdGQ6OndzdHJpbmcoTCIiKSk7Ci0gIEVYUEVDVF9UUlVF
KG0xLk1hdGNoZXMoTCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhMIiIpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
OjpzdGQ6OndzdHJpbmcmPiBtMiA9IFN0YXJ0c1dpdGgoTCJIaSIpOwotICBFWFBFQ1RfVFJVRSht
Mi5NYXRjaGVzKEwiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIaSBIaSEiKSk7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIaWdoIikpOwotICBFWFBFQ1RfRkFMU0UobTIu
TWF0Y2hlcyhMIkgiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiIEhpIikpOwotfQot
Ci1URVNUKFN0ZFdpZGVTdGFydHNXaXRoVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNo
ZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmc+IG0gPSBTdGFydHNXaXRoKEwiSGkiKTsKLSAgRVhQRUNU
X0VRKCJzdGFydHMgd2l0aCBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyBF
bmRzV2l0aChzKS4KLQotVEVTVChTdGRXaWRlRW5kc1dpdGhUZXN0LCBNYXRjaGVzU3RyaW5nV2l0
aEdpdmVuU3VmZml4KSB7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0xID0gRW5k
c1dpdGgoTCIiKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1Rf
VFJVRShtMS5NYXRjaGVzKEwiIikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7
Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0yID0gRW5kc1dpdGgo
OjpzdGQ6OndzdHJpbmcoTCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhpIikp
OwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiV293IEhpIEhpIikpOwotICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKEwiU3VwZXIgSGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwi
aSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIaSAiKSk7Ci19Ci0KLVRFU1QoU3Rk
V2lkZUVuZHNXaXRoVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgOjpz
dGQ6OndzdHJpbmc+IG0gPSBFbmRzV2l0aChMIkhpIik7Ci0gIEVYUEVDVF9FUSgiZW5kcyB3aXRo
IExcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9X
U1RSSU5HCi0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLVRFU1QoR2xvYmFsV2lkZVN0
ckVxVGVzdCwgTWF0Y2hlc0VxdWFsKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0gPSBT
dHJFcSg6OndzdHJpbmcoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiSGVs
bG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmcmPiBtMiA9
IFN0ckVxKEwiSGVsbG8iKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhlbGxvIikpOwot
ICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhpIikpOwotCi0gIE1hdGNoZXI8Y29uc3QgOjp3
c3RyaW5nJj4gbTMgPSBTdHJFcShMIlx4RDNceDU3Nlx4OEQzXHhDNzREIik7Ci0gIEVYUEVDVF9U
UlVFKG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RCIpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0zLk1hdGNoZXMoTCJceEQzXHg1NzZceDhEM1x4Qzc0RSIpKTsKLQotICA6OndzdHJpbmcgc3Ry
KEwiMDEyMDQ1MDA4MDAiKTsKLSAgc3RyWzNdID0gTCdcMCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3
c3RyaW5nJj4gbTQgPSBTdHJFcShzdHIpOwotICBFWFBFQ1RfVFJVRShtNC5NYXRjaGVzKHN0cikp
OwotICBzdHJbMF0gPSBzdHJbNl0gPSBzdHJbN10gPSBzdHJbOV0gPSBzdHJbMTBdID0gTCdcMCc7
Ci0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTUgPSBTdHJFcShzdHIpOwotICBFWFBFQ1Rf
VFJVRShtNS5NYXRjaGVzKHN0cikpOwotfQotCi1URVNUKEdsb2JhbFdpZGVTdHJFcVRlc3QsIENh
bkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPCA6OndzdHJpbmc+IG0gPSBTdHJFcShMIkhpLVwn
XCI/XFxcYVxiXGZcblxyXHRcdiIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIkhpLVwn
XFxcIj9cXFxcXFxhXFxiXFxmXFxuXFxyXFx0XFx2XCIiLAotICAgIERlc2NyaWJlKG0pKTsKLQot
ICBNYXRjaGVyPCA6OndzdHJpbmc+IG0yID0gU3RyRXEoTCJceEQzXHg1NzZceDhEM1x4Qzc0RCIp
OwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RFwi
IiwKLSAgICBEZXNjcmliZShtMikpOwotCi0gIDo6d3N0cmluZyBzdHIoTCIwMTIwNDUwMDgwMCIp
OwotICBzdHJbM10gPSBMJ1wwJzsKLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmcmPiBtNCA9IFN0
ckVxKHN0cik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiMDEyXFwwNDUwMDgwMFwiIiwg
RGVzY3JpYmUobTQpKTsKLSAgc3RyWzBdID0gc3RyWzZdID0gc3RyWzddID0gc3RyWzldID0gc3Ry
WzEwXSA9IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG01ID0gU3RyRXEoc3Ry
KTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCJcXDAxMlxcMDQ1XFwwXFwwOFxcMFxcMFwi
IiwgRGVzY3JpYmUobTUpKTsKLX0KLQotVEVTVChHbG9iYWxXaWRlU3RyTmVUZXN0LCBNYXRjaGVz
VW5lcXVhbFN0cmluZykgewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyTmUoTCJI
ZWxsbyIpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCIiKSk7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyhOVUxMKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsKLQot
ICBNYXRjaGVyPCA6OndzdHJpbmc+IG0yID0gU3RyTmUoOjp3c3RyaW5nKEwiSGVsbG8iKSk7Ci0g
IEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1h
dGNoZXMoTCJIZWxsbyIpKTsKLX0KLQotVEVTVChHbG9iYWxXaWRlU3RyTmVUZXN0LCBDYW5EZXNj
cmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ck5lKEwiSGkiKTsK
LSAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0byBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQot
Ci1URVNUKEdsb2JhbFdpZGVTdHJDYXNlRXFUZXN0LCBNYXRjaGVzRXF1YWxTdHJpbmdJZ25vcmlu
Z0Nhc2UpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ckNhc2VFcSg6OndzdHJp
bmcoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiSGVsbG8iKSk7Ci0gIEVY
UEVDVF9UUlVFKG0uTWF0Y2hlcyhMImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KEwiSGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVMTCkpOwotCi0gIE1hdGNoZXI8
Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBTdHJDYXNlRXEoTCJIZWxsbyIpOwotICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKEwiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSGki
KSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lkZVN0ckNhc2VFcVRlc3QsIE1hdGNoZXNFcXVhbFN0cmlu
Z1dpdGgwSWdub3JpbmdDYXNlKSB7Ci0gIDo6d3N0cmluZyBzdHIxKEwib2Fib2Nkb29lb28iKTsK
LSAgOjp3c3RyaW5nIHN0cjIoTCJPQUJPQ0RPT0VPTyIpOwotICBNYXRjaGVyPGNvbnN0IDo6d3N0
cmluZyY+IG0wID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfRkFMU0UobTAuTWF0Y2hlcyhz
dHIyICsgOjp3c3RyaW5nKDEsIEwnXDAnKSkpOwotCi0gIHN0cjFbM10gPSBzdHIyWzNdID0gTCdc
MCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTEgPSBTdHJDYXNlRXEoc3RyMSk7Ci0g
IEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoc3RyMikpOwotCi0gIHN0cjFbMF0gPSBzdHIxWzZdID0g
c3RyMVs3XSA9IHN0cjFbMTBdID0gTCdcMCc7Ci0gIHN0cjJbMF0gPSBzdHIyWzZdID0gc3RyMls3
XSA9IHN0cjJbMTBdID0gTCdcMCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBT
dHJDYXNlRXEoc3RyMSk7Ci0gIHN0cjFbOV0gPSBzdHIyWzldID0gTCdcMCc7Ci0gIEVYUEVDVF9G
QUxTRShtMi5NYXRjaGVzKHN0cjIpKTsKLQotICBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0z
ID0gU3RyQ2FzZUVxKHN0cjEpOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKHN0cjIpKTsKLQot
ICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyICsgTCJ4IikpOwotICBzdHIyLmFwcGVuZCgx
LCBMJ1wwJyk7Ci0gIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKHN0cjIpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0zLk1hdGNoZXMoOjp3c3RyaW5nKHN0cjIsIDAsIDkpKSk7Ci19Ci0KLVRFU1QoR2xvYmFs
V2lkZVN0ckNhc2VFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPCA6OndzdHJp
bmc+IG0gPSBTdHJDYXNlRXEoTCJIaSIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIChpZ25v
cmluZyBjYXNlKSBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi1URVNUKEdsb2JhbFdpZGVT
dHJDYXNlTmVUZXN0LCBNYXRjaGVzVW5lcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgewotICBNYXRj
aGVyPGNvbnN0IHdjaGFyX3QqPiBtID0gU3RyQ2FzZU5lKEwiSGVsbG8iKTsKLSAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKEwiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhOVUxMKSk7Ci0g
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcyhMImhlbGxvIikpOwotCi0gIE1hdGNoZXI8IDo6d3N0cmluZz4gbTIgPSBTdHJDYXNlTmUo
Ojp3c3RyaW5nKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCIiKSk7Ci0g
IEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSGVsbG8iKSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lk
ZVN0ckNhc2VOZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IHdjaGFy
X3QqPiBtID0gU3RyQ2FzZU5lKEwiSGkiKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0byAo
aWdub3JpbmcgY2FzZSkgTFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBIYXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgd3N0cmluZy10eXBlZCB2YWx1ZXMuCi1U
RVNUKEdsb2JhbFdpZGVIYXNTdWJzdHJUZXN0LCBXb3Jrc0ZvclN0cmluZ0NsYXNzZXMpIHsKLSAg
Y29uc3QgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtMSA9IEhhc1N1YnN0cihMImZvbyIpOwotICBFWFBF
Q1RfVFJVRShtMS5NYXRjaGVzKDo6d3N0cmluZyhMIkkgbG92ZSBmb29kLiIpKSk7Ci0gIEVYUEVD
VF9GQUxTRShtMS5NYXRjaGVzKDo6d3N0cmluZyhMInRvZm8iKSkpOwotCi0gIGNvbnN0IE1hdGNo
ZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBIYXNTdWJzdHIoTCJmb28iKTsKLSAgRVhQRUNUX1RS
VUUobTIuTWF0Y2hlcyg6OndzdHJpbmcoTCJJIGxvdmUgZm9vZC4iKSkpOwotICBFWFBFQ1RfRkFM
U0UobTIuTWF0Y2hlcyg6OndzdHJpbmcoTCJ0b2ZvIikpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBI
YXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgQy13aWRlLXN0cmluZy10eXBlZCB2YWx1ZXMu
Ci1URVNUKEdsb2JhbFdpZGVIYXNTdWJzdHJUZXN0LCBXb3Jrc0ZvckNTdHJpbmdzKSB7Ci0gIGNv
bnN0IE1hdGNoZXI8d2NoYXJfdCo+IG0xID0gSGFzU3Vic3RyKEwiZm9vIik7Ci0gIEVYUEVDVF9U
UlVFKG0xLk1hdGNoZXMoY29uc3RfY2FzdDx3Y2hhcl90Kj4oTCJJIGxvdmUgZm9vZC4iKSkpOwot
ICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhjb25zdF9jYXN0PHdjaGFyX3QqPihMInRvZm8iKSkp
OwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxj
b25zdCB3Y2hhcl90Kj4gbTIgPSBIYXNTdWJzdHIoTCJmb28iKTsKLSAgRVhQRUNUX1RSVUUobTIu
TWF0Y2hlcyhMIkkgbG92ZSBmb29kLiIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJ0
b2ZvIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgSGFzU3Vic3RyKHMpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEdsb2Jh
bFdpZGVIYXNTdWJzdHJUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjwgOjp3c3Ry
aW5nPiBtID0gSGFzU3Vic3RyKEwiZm9vXG5cIiIpOwotICBFWFBFQ1RfRVEoImhhcyBzdWJzdHJp
bmcgTFwiZm9vXFxuXFxcIlwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyBTdGFydHNX
aXRoKHMpLgotCi1URVNUKEdsb2JhbFdpZGVTdGFydHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dp
dGhHaXZlblByZWZpeCkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtMSA9IFN0
YXJ0c1dpdGgoOjp3c3RyaW5nKEwiIikpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKEwiSGki
KSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCIiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5N
YXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0yID0g
U3RhcnRzV2l0aChMIkhpIik7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIaSIpKTsKLSAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhpIEhpISIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcyhMIkhpZ2giKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSCIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCIgSGkiKSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lkZVN0YXJ0
c1dpdGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmc+
IG0gPSBTdGFydHNXaXRoKEwiSGkiKTsKLSAgRVhQRUNUX0VRKCJzdGFydHMgd2l0aCBMXCJIaVwi
IiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyBFbmRzV2l0aChzKS4KLQotVEVTVChHbG9i
YWxXaWRlRW5kc1dpdGhUZXN0LCBNYXRjaGVzU3RyaW5nV2l0aEdpdmVuU3VmZml4KSB7Ci0gIGNv
bnN0IE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0xID0gRW5kc1dpdGgoTCIiKTsKLSAgRVhQRUNU
X1RSVUUobTEuTWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKEwiIikp
OwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxj
b25zdCA6OndzdHJpbmcmPiBtMiA9IEVuZHNXaXRoKDo6d3N0cmluZyhMIkhpIikpOwotICBFWFBF
Q1RfVFJVRShtMi5NYXRjaGVzKEwiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJX
b3cgSGkgSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJTdXBlciBIaSIpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJpIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hl
cyhMIkhpICIpKTsKLX0KLQotVEVTVChHbG9iYWxXaWRlRW5kc1dpdGhUZXN0LCBDYW5EZXNjcmli
ZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmc+IG0gPSBFbmRzV2l0aChMIkhpIik7
Ci0gIEVYUEVDVF9FUSgiZW5kcyB3aXRoIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0KLQotdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPGxvbmcsIGludD4gVHVwbGUyOyAgLy8gTk9MSU5UCi0KLS8vIFRlc3RzIHRoYXQgRXEo
KSBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUgZmlyc3QgZmllbGQgPT0gdGhlCi0vLyBzZWNv
bmQgZmllbGQuCi1URVNUKEVxMlRlc3QsIE1hdGNoZXNFcXVhbEFyZ3VtZW50cykgewotICBNYXRj
aGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBFcSgpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVw
bGUyKDVMLCA1KSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFR1cGxlMig1TCwgNikpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFcSgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNU
KEVxMlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0g
PSBFcSgpOwotICBFWFBFQ1RfRVEoImFyZSBhbiBlcXVhbCBwYWlyIiwgRGVzY3JpYmUobSkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IEdlKCkgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlIGZpcnN0
IGZpZWxkID49IHRoZQotLy8gc2Vjb25kIGZpZWxkLgotVEVTVChHZTJUZXN0LCBNYXRjaGVzR3Jl
YXRlclRoYW5PckVxdWFsQXJndW1lbnRzKSB7Ci0gIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9
IEdlKCk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDQpKSk7Ci0gIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoVHVwbGUyKDVMLCA2KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdlKCkgZGVzY3JpYmVzIGl0
c2VsZiBwcm9wZXJseS4KLVRFU1QoR2UyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNo
ZXI8Y29uc3QgVHVwbGUyJj4gbSA9IEdlKCk7Ci0gIEVYUEVDVF9FUSgiYXJlIGEgcGFpciB3aGVy
ZSB0aGUgZmlyc3QgPj0gdGhlIHNlY29uZCIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBHdCgpIG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCA+IHRoZQot
Ly8gc2Vjb25kIGZpZWxkLgotVEVTVChHdDJUZXN0LCBNYXRjaGVzR3JlYXRlclRoYW5Bcmd1bWVu
dHMpIHsKLSAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gR3QoKTsKLSAgRVhQRUNUX1RSVUUo
bS5NYXRjaGVzKFR1cGxlMig1TCwgNCkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhUdXBs
ZTIoNUwsIDUpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA2KSkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IEd0KCkgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KLVRFU1Qo
R3QyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9
IEd0KCk7Ci0gIEVYUEVDVF9FUSgiYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPiB0aGUgc2Vj
b25kIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IExlKCkgbWF0Y2hlcyBhIDIt
dHVwbGUgd2hlcmUgdGhlIGZpcnN0IGZpZWxkIDw9IHRoZQotLy8gc2Vjb25kIGZpZWxkLgotVEVT
VChMZTJUZXN0LCBNYXRjaGVzTGVzc1RoYW5PckVxdWFsQXJndW1lbnRzKSB7Ci0gIE1hdGNoZXI8
Y29uc3QgVHVwbGUyJj4gbSA9IExlKCk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIo
NUwsIDYpKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA0KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IExlKCkgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoTGUyVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9IExlKCk7Ci0gIEVYUEVDVF9F
USgiYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPD0gdGhlIHNlY29uZCIsIERlc2NyaWJlKG0p
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBMdCgpIG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZSBm
aXJzdCBmaWVsZCA8IHRoZQotLy8gc2Vjb25kIGZpZWxkLgotVEVTVChMdDJUZXN0LCBNYXRjaGVz
TGVzc1RoYW5Bcmd1bWVudHMpIHsKLSAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gTHQoKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMig1TCwgNikpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoVHVw
bGUyKDVMLCA0KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEx0KCkgZGVzY3JpYmVzIGl0c2VsZiBw
cm9wZXJseS4KLVRFU1QoTHQyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29u
c3QgVHVwbGUyJj4gbSA9IEx0KCk7Ci0gIEVYUEVDVF9FUSgiYXJlIGEgcGFpciB3aGVyZSB0aGUg
Zmlyc3QgPCB0aGUgc2Vjb25kIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5l
KCkgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGZpZWxkICE9IHRoZQotLy8gc2Vj
b25kIGZpZWxkLgotVEVTVChOZTJUZXN0LCBNYXRjaGVzVW5lcXVhbEFyZ3VtZW50cykgewotICBN
YXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBOZSgpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
VHVwbGUyKDVMLCA2KSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA0KSkp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFR1cGxlMig1TCwgNSkpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBOZSgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKE5lMlRlc3QsIENh
bkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBOZSgpOwotICBF
WFBFQ1RfRVEoImFyZSBhbiB1bmVxdWFsIHBhaXIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgTm90KG0pIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgZG9lc24ndCBtYXRjaCBtLgot
VEVTVChOb3RUZXN0LCBOZWdhdGVzTWF0Y2hlcikgewotICBNYXRjaGVyPGludD4gbTsKLSAgbSA9
IE5vdChFcSgyKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygzKSk7Ci0gIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoMikpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5vdChtKSBkZXNjcmliZXMgaXRz
ZWxmIHByb3Blcmx5LgotVEVTVChOb3RUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hl
cjxpbnQ+IG0gPSBOb3QoRXEoNSkpOwotICBFWFBFQ1RfRVEoImlzbid0IGVxdWFsIHRvIDUiLCBE
ZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgbW9ub21vcnBoaWMgbWF0Y2hlcnMgYXJl
IHNhZmVseSBjYXN0IGJ5IHRoZSBOb3QgbWF0Y2hlci4KLVRFU1QoTm90VGVzdCwgTm90TWF0Y2hl
clNhZmVseUNhc3RzTW9ub21vcnBoaWNNYXRjaGVycykgewotICAvLyBncmVhdGVyX3RoYW5fNSBp
cyBhIG1vbm9tb3JwaGljIG1hdGNoZXIuCi0gIE1hdGNoZXI8aW50PiBncmVhdGVyX3RoYW5fNSA9
IEd0KDUpOwotCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9IE5vdChncmVhdGVyX3RoYW5fNSk7
Ci0gIE1hdGNoZXI8aW50Jj4gbTIgPSBOb3QoZ3JlYXRlcl90aGFuXzUpOwotICBNYXRjaGVyPGlu
dCY+IG0zID0gTm90KG0pOwotfQotCi0vLyBIZWxwZXIgdG8gYWxsb3cgZWFzeSB0ZXN0aW5nIG9m
IEFsbE9mIG1hdGNoZXJzIHdpdGggbnVtIHBhcmFtZXRlcnMuCi12b2lkIEFsbE9mTWF0Y2hlcyhp
bnQgbnVtLCBjb25zdCBNYXRjaGVyPGludD4mIG0pIHsKLSAgU0NPUEVEX1RSQUNFKERlc2NyaWJl
KG0pKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDApKTsKLSAgZm9yIChpbnQgaSA9IDE7IGkg
PD0gbnVtOyArK2kpIHsKLSAgICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGkpKTsKLSAgfQotICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMobnVtICsgMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFsbE9m
KG0xLCAuLi4sIG1uKSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IG1hdGNoZXMgYWxsIG9mCi0vLyB0
aGUgZ2l2ZW4gbWF0Y2hlcnMuCi1URVNUKEFsbE9mVGVzdCwgTWF0Y2hlc1doZW5BbGxNYXRjaCkg
ewotICBNYXRjaGVyPGludD4gbTsKLSAgbSA9IEFsbE9mKExlKDIpLCBHZSgxKSk7Ci0gIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygyKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDMpKTsK
LQotICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0
Y2hlcygzKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikpOwotICBFWFBFQ1RfRkFMU0Uo
bS5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7Ci0KLSAgbSA9IEFs
bE9mKEd0KDApLCBOZSgxKSwgTmUoMiksIE5lKDMpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KDQpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygzKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoMikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcygwKSk7Ci0KLSAgbSA9IEFsbE9mKEdlKDApLCBMdCgxMCksIE5lKDMpLCBOZSg1
KSwgTmUoNykpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDMpKTsKLQotICAvLyBUaGUg
Zm9sbG93aW5nIHRlc3RzIGZvciB2YXJ5aW5nIG51bWJlciBvZiBzdWItbWF0Y2hlcnMuIER1ZSB0
byB0aGUgd2F5Ci0gIC8vIHRoZSBzdWItbWF0Y2hlcnMgYXJlIGhhbmRsZWQgaXQgaXMgZW5vdWdo
IHRvIHRlc3QgZXZlcnkgc3ViLW1hdGNoZXIgb25jZQotICAvLyB3aXRoIHN1Yi1tYXRjaGVycyB1
c2luZyB0aGUgc2FtZSBtYXRjaGVyIHR5cGUuIFZhcnlpbmcgbWF0Y2hlciB0eXBlcyBhcmUKLSAg
Ly8gY2hlY2tlZCBmb3IgYWJvdmUuCi0gIEFsbE9mTWF0Y2hlcygyLCBBbGxPZihOZSgxKSwgTmUo
MikpKTsKLSAgQWxsT2ZNYXRjaGVzKDMsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUoMykpKTsKLSAg
QWxsT2ZNYXRjaGVzKDQsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpKSk7Ci0gIEFs
bE9mTWF0Y2hlcyg1LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSkpKTsK
LSAgQWxsT2ZNYXRjaGVzKDYsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1
KSwgTmUoNikpKTsKLSAgQWxsT2ZNYXRjaGVzKDcsIEFsbE9mKE5lKDEpLCBOZSgyKSwgTmUoMyks
IE5lKDQpLCBOZSg1KSwgTmUoNiksIE5lKDcpKSk7Ci0gIEFsbE9mTWF0Y2hlcyg4LCBBbGxPZihO
ZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYpLCBOZSg3KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIE5lKDgpKSk7Ci0gIEFsbE9mTWF0Y2hlcyg5LCBBbGxPZihOZSgxKSwg
TmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYpLCBOZSg3KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5lKDgpLCBOZSg5KSkpOwotICBBbGxPZk1hdGNoZXMoMTAsIEFsbE9mKE5lKDEp
LCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNiksIE5lKDcpLCBOZSg4KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBOZSg5KSwgTmUoMTApKSk7Ci19Ci0KLSNpZiBHVEVTVF9MQU5H
X0NYWDExCi0vLyBUZXN0cyB0aGUgdmFyaWFkaWMgdmVyc2lvbiBvZiB0aGUgQWxsT2ZNYXRjaGVy
LgotVEVTVChBbGxPZlRlc3QsIFZhcmlhZGljTWF0Y2hlc1doZW5BbGxNYXRjaCkgewotICAvLyBN
YWtlIHN1cmUgQWxsT2YgaXMgZGVmaW5lZCBpbiB0aGUgcmlnaHQgbmFtZXNwYWNlIGFuZCBkb2Vz
IG5vdCBkZXBlbmQgb24KLSAgLy8gQURMLgotICA6OnRlc3Rpbmc6OkFsbE9mKDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwLCAxMSk7Ci0gIE1hdGNoZXI8aW50PiBtID0gQWxsT2YoTmUoMSks
IE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwgTmUoNyksIE5lKDgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIE5lKDkpLCBOZSgxMCksIE5lKDExKSk7Ci0gIEVYUEVDVF9USEFU
KERlc2NyaWJlKG0pLCBFbmRzV2l0aCgiYW5kIChpc24ndCBlcXVhbCB0byAxMSkpKSkpKSkpKSki
KSk7Ci0gIEFsbE9mTWF0Y2hlcygxMSwgbSk7Ci0gIEFsbE9mTWF0Y2hlcyg1MCwgQWxsT2YoTmUo
MSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwgTmUoNyksIE5lKDgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIE5lKDkpLCBOZSgxMCksIE5lKDExKSwgTmUoMTIpLCBOZSgx
MyksIE5lKDE0KSwgTmUoMTUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDE2KSwgTmUo
MTcpLCBOZSgxOCksIE5lKDE5KSwgTmUoMjApLCBOZSgyMSksIE5lKDIyKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBOZSgyMyksIE5lKDI0KSwgTmUoMjUpLCBOZSgyNiksIE5lKDI3KSwgTmUo
MjgpLCBOZSgyOSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTmUoMzApLCBOZSgzMSksIE5l
KDMyKSwgTmUoMzMpLCBOZSgzNCksIE5lKDM1KSwgTmUoMzYpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIE5lKDM3KSwgTmUoMzgpLCBOZSgzOSksIE5lKDQwKSwgTmUoNDEpLCBOZSg0MiksIE5l
KDQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOZSg0NCksIE5lKDQ1KSwgTmUoNDYpLCBO
ZSg0NyksIE5lKDQ4KSwgTmUoNDkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDUwKSkp
OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLQotLy8gVGVzdHMgdGhhdCBBbGxP
ZihtMSwgLi4uLCBtbikgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoQWxsT2ZUZXN0
LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxpbnQ+IG07Ci0gIG0gPSBBbGxPZihMZSgy
KSwgR2UoMSkpOwotICBFWFBFQ1RfRVEoIihpcyA8PSAyKSBhbmQgKGlzID49IDEpIiwgRGVzY3Jp
YmUobSkpOwotCi0gIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpKTsKLSAgRVhQRUNUX0VR
KCIoaXMgPiAwKSBhbmQgIgotICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gMSkgYW5kICIK
LSAgICAgICAgICAgICIoaXNuJ3QgZXF1YWwgdG8gMikpIiwKLSAgICAgICAgICAgIERlc2NyaWJl
KG0pKTsKLQotCi0gIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpLCBOZSgzKSk7Ci0gIEVY
UEVDVF9FUSgiKChpcyA+IDApIGFuZCAiCi0gICAgICAgICAgICAiKGlzbid0IGVxdWFsIHRvIDEp
KSBhbmQgIgotICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gMikgYW5kICIKLSAgICAgICAg
ICAgICIoaXNuJ3QgZXF1YWwgdG8gMykpIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLQot
Ci0gIG0gPSBBbGxPZihHZSgwKSwgTHQoMTApLCBOZSgzKSwgTmUoNSksIE5lKDcpKTsKLSAgRVhQ
RUNUX0VRKCIoKGlzID49IDApIGFuZCAiCi0gICAgICAgICAgICAiKGlzIDwgMTApKSBhbmQgIgot
ICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gMykgYW5kICIKLSAgICAgICAgICAgICIoKGlz
bid0IGVxdWFsIHRvIDUpIGFuZCAiCi0gICAgICAgICAgICAiKGlzbid0IGVxdWFsIHRvIDcpKSki
LAotICAgICAgICAgICAgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFsbE9mKG0x
LCAuLi4sIG1uKSBkZXNjcmliZXMgaXRzIG5lZ2F0aW9uIHByb3Blcmx5LgotVEVTVChBbGxPZlRl
c3QsIENhbkRlc2NyaWJlTmVnYXRpb24pIHsKLSAgTWF0Y2hlcjxpbnQ+IG07Ci0gIG0gPSBBbGxP
ZihMZSgyKSwgR2UoMSkpOwotICBFWFBFQ1RfRVEoIihpc24ndCA8PSAyKSBvciAiCi0gICAgICAg
ICAgICAiKGlzbid0ID49IDEpIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwot
Ci0gIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpKTsKLSAgRVhQRUNUX0VRKCIoaXNuJ3Qg
PiAwKSBvciAiCi0gICAgICAgICAgICAiKChpcyBlcXVhbCB0byAxKSBvciAiCi0gICAgICAgICAg
ICAiKGlzIGVxdWFsIHRvIDIpKSIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsK
LQotCi0gIG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpLCBOZSgzKSk7Ci0gIEVYUEVDVF9F
USgiKChpc24ndCA+IDApIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1YWwgdG8gMSkpIG9yICIK
LSAgICAgICAgICAgICIoKGlzIGVxdWFsIHRvIDIpIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1
YWwgdG8gMykpIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotCi0KLSAgbSA9
IEFsbE9mKEdlKDApLCBMdCgxMCksIE5lKDMpLCBOZSg1KSwgTmUoNykpOwotICBFWFBFQ1RfRVEo
IigoaXNuJ3QgPj0gMCkgb3IgIgotICAgICAgICAgICAgIihpc24ndCA8IDEwKSkgb3IgIgotICAg
ICAgICAgICAgIigoaXMgZXF1YWwgdG8gMykgb3IgIgotICAgICAgICAgICAgIigoaXMgZXF1YWwg
dG8gNSkgb3IgIgotICAgICAgICAgICAgIihpcyBlcXVhbCB0byA3KSkpIiwKLSAgICAgICAgICAg
IERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IG1vbm9tb3JwaGljIG1h
dGNoZXJzIGFyZSBzYWZlbHkgY2FzdCBieSB0aGUgQWxsT2YgbWF0Y2hlci4KLVRFU1QoQWxsT2ZU
ZXN0LCBBbGxPZk1hdGNoZXJTYWZlbHlDYXN0c01vbm9tb3JwaGljTWF0Y2hlcnMpIHsKLSAgLy8g
Z3JlYXRlcl90aGFuXzUgYW5kIGxlc3NfdGhhbl8xMCBhcmUgbW9ub21vcnBoaWMgbWF0Y2hlcnMu
Ci0gIE1hdGNoZXI8aW50PiBncmVhdGVyX3RoYW5fNSA9IEd0KDUpOwotICBNYXRjaGVyPGludD4g
bGVzc190aGFuXzEwID0gTHQoMTApOwotCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9IEFsbE9m
KGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTApOwotICBNYXRjaGVyPGludCY+IG0yID0gQWxs
T2YoZ3JlYXRlcl90aGFuXzUsIGxlc3NfdGhhbl8xMCk7Ci0gIE1hdGNoZXI8aW50Jj4gbTMgPSBB
bGxPZihncmVhdGVyX3RoYW5fNSwgbTIpOwotCi0gIC8vIFRlc3RzIHRoYXQgQm90aE9mIHdvcmtz
IHdoZW4gY29tcG9zaW5nIGl0c2VsZi4KLSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtNCA9IEFsbE9m
KGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTAsIGxlc3NfdGhhbl8xMCk7Ci0gIE1hdGNoZXI8
aW50Jj4gbTUgPSBBbGxPZihncmVhdGVyX3RoYW5fNSwgbGVzc190aGFuXzEwLCBsZXNzX3RoYW5f
MTApOwotfQotCi1URVNUKEFsbE9mVGVzdCwgRXhwbGFpbnNSZXN1bHQpIHsKLSAgTWF0Y2hlcjxp
bnQ+IG07Ci0KLSAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4gIEJvdGggbWF0Y2hlcnMgbmVlZCB0byBl
eHBsYWluLiAgVGhlIHNlY29uZAotICAvLyBtYXRjaGVyIGRvZXNuJ3QgZ2l2ZSBhbiBleHBsYW5h
dGlvbiwgc28gb25seSB0aGUgZmlyc3QgbWF0Y2hlcidzCi0gIC8vIGV4cGxhbmF0aW9uIGlzIHBy
aW50ZWQuCi0gIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEx0KDMwKSk7Ci0gIEVYUEVDVF9F
USgid2hpY2ggaXMgMTUgbW9yZSB0aGFuIDEwIiwgRXhwbGFpbihtLCAyNSkpOwotCi0gIC8vIFN1
Y2Nlc3NmdWwgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4KLSAgbSA9IEFs
bE9mKEdyZWF0ZXJUaGFuKDEwKSwgR3JlYXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VRKCJ3aGlj
aCBpcyAyMCBtb3JlIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAxMCBtb3JlIHRoYW4gMjAiLAotICAg
ICAgICAgICAgRXhwbGFpbihtLCAzMCkpOwotCi0gIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBBbGwg
bWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLiAgVGhlIHNlY29uZAotICAvLyBtYXRjaGVyIGRvZXNu
J3QgZ2l2ZW4gYW4gZXhwbGFuYXRpb24uCi0gIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEx0
KDMwKSwgR3JlYXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAxNSBtb3JlIHRo
YW4gMTAsIGFuZCB3aGljaCBpcyA1IG1vcmUgdGhhbiAyMCIsCi0gICAgICAgICAgICBFeHBsYWlu
KG0sIDI1KSk7Ci0KLSAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4gIEFsbCBtYXRjaGVycyBuZWVkIHRv
IGV4cGxhaW4uCi0gIG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEdyZWF0ZXJUaGFuKDIwKSwg
R3JlYXRlclRoYW4oMzApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAzMCBtb3JlIHRoYW4gMTAs
IGFuZCB3aGljaCBpcyAyMCBtb3JlIHRoYW4gMjAsICIKLSAgICAgICAgICAgICJhbmQgd2hpY2gg
aXMgMTAgbW9yZSB0aGFuIDMwIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgNDApKTsKLQotICAv
LyBGYWlsZWQgbWF0Y2guICBUaGUgZmlyc3QgbWF0Y2hlciwgd2hpY2ggZmFpbGVkLCBuZWVkcyB0
bwotICAvLyBleHBsYWluLgotICBtID0gQWxsT2YoR3JlYXRlclRoYW4oMTApLCBHcmVhdGVyVGhh
bigyMCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUgbGVzcyB0aGFuIDEwIiwgRXhwbGFpbiht
LCA1KSk7Ci0KLSAgLy8gRmFpbGVkIG1hdGNoLiAgVGhlIHNlY29uZCBtYXRjaGVyLCB3aGljaCBm
YWlsZWQsIG5lZWRzIHRvCi0gIC8vIGV4cGxhaW4uICBTaW5jZSBpdCBkb2Vzbid0IGdpdmVuIGFu
IGV4cGxhbmF0aW9uLCBub3RoaW5nIGlzCi0gIC8vIHByaW50ZWQuCi0gIG0gPSBBbGxPZihHcmVh
dGVyVGhhbigxMCksIEx0KDMwKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCA0MCkpOwot
Ci0gIC8vIEZhaWxlZCBtYXRjaC4gIFRoZSBzZWNvbmQgbWF0Y2hlciwgd2hpY2ggZmFpbGVkLCBu
ZWVkcyB0bwotICAvLyBleHBsYWluLgotICBtID0gQWxsT2YoR3JlYXRlclRoYW4oMTApLCBHcmVh
dGVyVGhhbigyMCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUgbGVzcyB0aGFuIDIwIiwgRXhw
bGFpbihtLCAxNSkpOwotfQotCi0vLyBIZWxwZXIgdG8gYWxsb3cgZWFzeSB0ZXN0aW5nIG9mIEFu
eU9mIG1hdGNoZXJzIHdpdGggbnVtIHBhcmFtZXRlcnMuCi12b2lkIEFueU9mTWF0Y2hlcyhpbnQg
bnVtLCBjb25zdCBNYXRjaGVyPGludD4mIG0pIHsKLSAgU0NPUEVEX1RSQUNFKERlc2NyaWJlKG0p
KTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7Ci0gIGZvciAoaW50IGkgPSAxOyBpIDw9
IG51bTsgKytpKSB7Ci0gICAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGkpKTsKLSAgfQotICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKG51bSArIDEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBbnlPZiht
MSwgLi4uLCBtbikgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRjaGVzIGF0Ci0vLyBsZWFzdCBv
bmUgb2YgdGhlIGdpdmVuIG1hdGNoZXJzLgotVEVTVChBbnlPZlRlc3QsIE1hdGNoZXNXaGVuQW55
TWF0Y2hlcykgewotICBNYXRjaGVyPGludD4gbTsKLSAgbSA9IEFueU9mKExlKDEpLCBHZSgzKSk7
Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyg0
KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMikpOwotCi0gIG0gPSBBbnlPZihMdCgwKSwg
RXEoMSksIEVxKDIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKC0xKSk7Ci0gIEVYUEVDVF9U
UlVFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygyKSk7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoMCkpOwotCi0gIG0gPSBBbnlPZihMdCgwKSwgRXEoMSksIEVxKDIp
LCBFcSgzKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygtMSkpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMikpOwotICBFWFBFQ1RfVFJV
RShtLk1hdGNoZXMoMykpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDApKTsKLQotICBtID0g
QW55T2YoTGUoMCksIEd0KDEwKSwgMywgNSwgNyk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygw
KSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoMykpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDIpKTsKLQotICAvLyBUaGUgZm9sbG93
aW5nIHRlc3RzIGZvciB2YXJ5aW5nIG51bWJlciBvZiBzdWItbWF0Y2hlcnMuIER1ZSB0byB0aGUg
d2F5Ci0gIC8vIHRoZSBzdWItbWF0Y2hlcnMgYXJlIGhhbmRsZWQgaXQgaXMgZW5vdWdoIHRvIHRl
c3QgZXZlcnkgc3ViLW1hdGNoZXIgb25jZQotICAvLyB3aXRoIHN1Yi1tYXRjaGVycyB1c2luZyB0
aGUgc2FtZSBtYXRjaGVyIHR5cGUuIFZhcnlpbmcgbWF0Y2hlciB0eXBlcyBhcmUKLSAgLy8gY2hl
Y2tlZCBmb3IgYWJvdmUuCi0gIEFueU9mTWF0Y2hlcygyLCBBbnlPZigxLCAyKSk7Ci0gIEFueU9m
TWF0Y2hlcygzLCBBbnlPZigxLCAyLCAzKSk7Ci0gIEFueU9mTWF0Y2hlcyg0LCBBbnlPZigxLCAy
LCAzLCA0KSk7Ci0gIEFueU9mTWF0Y2hlcyg1LCBBbnlPZigxLCAyLCAzLCA0LCA1KSk7Ci0gIEFu
eU9mTWF0Y2hlcyg2LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2KSk7Ci0gIEFueU9mTWF0Y2hlcyg3
LCBBbnlPZigxLCAyLCAzLCA0LCA1LCA2LCA3KSk7Ci0gIEFueU9mTWF0Y2hlcyg4LCBBbnlPZigx
LCAyLCAzLCA0LCA1LCA2LCA3LCA4KSk7Ci0gIEFueU9mTWF0Y2hlcyg5LCBBbnlPZigxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5KSk7Ci0gIEFueU9mTWF0Y2hlcygxMCwgQW55T2YoMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTApKTsKLX0KLQotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLS8vIFRl
c3RzIHRoZSB2YXJpYWRpYyB2ZXJzaW9uIG9mIHRoZSBBbnlPZk1hdGNoZXIuCi1URVNUKEFueU9m
VGVzdCwgVmFyaWFkaWNNYXRjaGVzV2hlbkFueU1hdGNoZXMpIHsKLSAgLy8gQWxzbyBtYWtlIHN1
cmUgQW55T2YgaXMgZGVmaW5lZCBpbiB0aGUgcmlnaHQgbmFtZXNwYWNlIGFuZCBkb2VzIG5vdCBk
ZXBlbmQKLSAgLy8gb24gQURMLgotICBNYXRjaGVyPGludD4gbSA9IDo6dGVzdGluZzo6QW55T2Yo
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExKTsKLQotICBFWFBFQ1RfVEhBVChEZXNj
cmliZShtKSwgRW5kc1dpdGgoIm9yIChpcyBlcXVhbCB0byAxMSkpKSkpKSkpKSkiKSk7Ci0gIEFu
eU9mTWF0Y2hlcygxMSwgbSk7Ci0gIEFueU9mTWF0Y2hlcyg1MCwgQW55T2YoMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgMTEsIDEyLCAxMywg
MTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgMjEs
IDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTApKTsK
LX0KLQotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0KLS8vIFRlc3RzIHRoYXQgQW55T2Yo
bTEsIC4uLiwgbW4pIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEFueU9mVGVzdCwg
Q2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8aW50PiBtOwotICBtID0gQW55T2YoTGUoMSks
IEdlKDMpKTsKLSAgRVhQRUNUX0VRKCIoaXMgPD0gMSkgb3IgKGlzID49IDMpIiwKLSAgICAgICAg
ICAgIERlc2NyaWJlKG0pKTsKLQotICBtID0gQW55T2YoTHQoMCksIEVxKDEpLCBFcSgyKSk7Ci0g
IEVYUEVDVF9FUSgiKGlzIDwgMCkgb3IgIgotICAgICAgICAgICAgIigoaXMgZXF1YWwgdG8gMSkg
b3IgKGlzIGVxdWFsIHRvIDIpKSIsCi0gICAgICAgICAgICBEZXNjcmliZShtKSk7Ci0KLSAgbSA9
IEFueU9mKEx0KDApLCBFcSgxKSwgRXEoMiksIEVxKDMpKTsKLSAgRVhQRUNUX0VRKCIoKGlzIDwg
MCkgb3IgIgotICAgICAgICAgICAgIihpcyBlcXVhbCB0byAxKSkgb3IgIgotICAgICAgICAgICAg
IigoaXMgZXF1YWwgdG8gMikgb3IgIgotICAgICAgICAgICAgIihpcyBlcXVhbCB0byAzKSkiLAot
ICAgICAgICAgICAgRGVzY3JpYmUobSkpOwotCi0gIG0gPSBBbnlPZihMZSgwKSwgR3QoMTApLCAz
LCA1LCA3KTsKLSAgRVhQRUNUX0VRKCIoKGlzIDw9IDApIG9yICIKLSAgICAgICAgICAgICIoaXMg
PiAxMCkpIG9yICIKLSAgICAgICAgICAgICIoKGlzIGVxdWFsIHRvIDMpIG9yICIKLSAgICAgICAg
ICAgICIoKGlzIGVxdWFsIHRvIDUpIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1YWwgdG8gNykp
KSIsCi0gICAgICAgICAgICBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQW55T2Yo
bTEsIC4uLiwgbW4pIGRlc2NyaWJlcyBpdHMgbmVnYXRpb24gcHJvcGVybHkuCi1URVNUKEFueU9m
VGVzdCwgQ2FuRGVzY3JpYmVOZWdhdGlvbikgewotICBNYXRjaGVyPGludD4gbTsKLSAgbSA9IEFu
eU9mKExlKDEpLCBHZSgzKSk7Ci0gIEVYUEVDVF9FUSgiKGlzbid0IDw9IDEpIGFuZCAoaXNuJ3Qg
Pj0gMykiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci0KLSAgbSA9IEFueU9m
KEx0KDApLCBFcSgxKSwgRXEoMikpOwotICBFWFBFQ1RfRVEoIihpc24ndCA8IDApIGFuZCAiCi0g
ICAgICAgICAgICAiKChpc24ndCBlcXVhbCB0byAxKSBhbmQgKGlzbid0IGVxdWFsIHRvIDIpKSIs
Ci0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLQotICBtID0gQW55T2YoTHQoMCks
IEVxKDEpLCBFcSgyKSwgRXEoMykpOwotICBFWFBFQ1RfRVEoIigoaXNuJ3QgPCAwKSBhbmQgIgot
ICAgICAgICAgICAgIihpc24ndCBlcXVhbCB0byAxKSkgYW5kICIKLSAgICAgICAgICAgICIoKGlz
bid0IGVxdWFsIHRvIDIpIGFuZCAiCi0gICAgICAgICAgICAiKGlzbid0IGVxdWFsIHRvIDMpKSIs
Ci0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLQotICBtID0gQW55T2YoTGUoMCks
IEd0KDEwKSwgMywgNSwgNyk7Ci0gIEVYUEVDVF9FUSgiKChpc24ndCA8PSAwKSBhbmQgIgotICAg
ICAgICAgICAgIihpc24ndCA+IDEwKSkgYW5kICIKLSAgICAgICAgICAgICIoKGlzbid0IGVxdWFs
IHRvIDMpIGFuZCAiCi0gICAgICAgICAgICAiKChpc24ndCBlcXVhbCB0byA1KSBhbmQgIgotICAg
ICAgICAgICAgIihpc24ndCBlcXVhbCB0byA3KSkpIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVn
YXRpb24obSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IG1vbm9tb3JwaGljIG1hdGNoZXJzIGFyZSBz
YWZlbHkgY2FzdCBieSB0aGUgQW55T2YgbWF0Y2hlci4KLVRFU1QoQW55T2ZUZXN0LCBBbnlPZk1h
dGNoZXJTYWZlbHlDYXN0c01vbm9tb3JwaGljTWF0Y2hlcnMpIHsKLSAgLy8gZ3JlYXRlcl90aGFu
XzUgYW5kIGxlc3NfdGhhbl8xMCBhcmUgbW9ub21vcnBoaWMgbWF0Y2hlcnMuCi0gIE1hdGNoZXI8
aW50PiBncmVhdGVyX3RoYW5fNSA9IEd0KDUpOwotICBNYXRjaGVyPGludD4gbGVzc190aGFuXzEw
ID0gTHQoMTApOwotCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbSA9IEFueU9mKGdyZWF0ZXJfdGhh
bl81LCBsZXNzX3RoYW5fMTApOwotICBNYXRjaGVyPGludCY+IG0yID0gQW55T2YoZ3JlYXRlcl90
aGFuXzUsIGxlc3NfdGhhbl8xMCk7Ci0gIE1hdGNoZXI8aW50Jj4gbTMgPSBBbnlPZihncmVhdGVy
X3RoYW5fNSwgbTIpOwotCi0gIC8vIFRlc3RzIHRoYXQgRWl0aGVyT2Ygd29ya3Mgd2hlbiBjb21w
b3NpbmcgaXRzZWxmLgotICBNYXRjaGVyPGNvbnN0IGludCY+IG00ID0gQW55T2YoZ3JlYXRlcl90
aGFuXzUsIGxlc3NfdGhhbl8xMCwgbGVzc190aGFuXzEwKTsKLSAgTWF0Y2hlcjxpbnQmPiBtNSA9
IEFueU9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTAsIGxlc3NfdGhhbl8xMCk7Ci19Ci0K
LVRFU1QoQW55T2ZUZXN0LCBFeHBsYWluc1Jlc3VsdCkgewotICBNYXRjaGVyPGludD4gbTsKLQot
ICAvLyBGYWlsZWQgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4gIFRoZSBz
ZWNvbmQKLSAgLy8gbWF0Y2hlciBkb2Vzbid0IGdpdmUgYW4gZXhwbGFuYXRpb24sIHNvIG9ubHkg
dGhlIGZpcnN0IG1hdGNoZXIncwotICAvLyBleHBsYW5hdGlvbiBpcyBwcmludGVkLgotICBtID0g
QW55T2YoR3JlYXRlclRoYW4oMTApLCBMdCgwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBs
ZXNzIHRoYW4gMTAiLCBFeHBsYWluKG0sIDUpKTsKLQotICAvLyBGYWlsZWQgbWF0Y2guICBCb3Ro
IG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4KLSAgbSA9IEFueU9mKEdyZWF0ZXJUaGFuKDEwKSwg
R3JlYXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyA1IGxlc3MgdGhhbiAxMCwg
YW5kIHdoaWNoIGlzIDE1IGxlc3MgdGhhbiAyMCIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIDUp
KTsKLQotICAvLyBGYWlsZWQgbWF0Y2guICBBbGwgbWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLiAg
VGhlIHNlY29uZAotICAvLyBtYXRjaGVyIGRvZXNuJ3QgZ2l2ZW4gYW4gZXhwbGFuYXRpb24uCi0g
IG0gPSBBbnlPZihHcmVhdGVyVGhhbigxMCksIEd0KDIwKSwgR3JlYXRlclRoYW4oMzApKTsKLSAg
RVhQRUNUX0VRKCJ3aGljaCBpcyA1IGxlc3MgdGhhbiAxMCwgYW5kIHdoaWNoIGlzIDI1IGxlc3Mg
dGhhbiAzMCIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIDUpKTsKLQotICAvLyBGYWlsZWQgbWF0
Y2guICBBbGwgbWF0Y2hlcnMgbmVlZCB0byBleHBsYWluLgotICBtID0gQW55T2YoR3JlYXRlclRo
YW4oMTApLCBHcmVhdGVyVGhhbigyMCksIEdyZWF0ZXJUaGFuKDMwKSk7Ci0gIEVYUEVDVF9FUSgi
d2hpY2ggaXMgNSBsZXNzIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAxNSBsZXNzIHRoYW4gMjAsICIK
LSAgICAgICAgICAgICJhbmQgd2hpY2ggaXMgMjUgbGVzcyB0aGFuIDMwIiwKLSAgICAgICAgICAg
IEV4cGxhaW4obSwgNSkpOwotCi0gIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBUaGUgZmlyc3QgbWF0
Y2hlciwgd2hpY2ggc3VjY2VlZGVkLCBuZWVkcyB0bwotICAvLyBleHBsYWluLgotICBtID0gQW55
T2YoR3JlYXRlclRoYW4oMTApLCBHcmVhdGVyVGhhbigyMCkpOwotICBFWFBFQ1RfRVEoIndoaWNo
IGlzIDUgbW9yZSB0aGFuIDEwIiwgRXhwbGFpbihtLCAxNSkpOwotCi0gIC8vIFN1Y2Nlc3NmdWwg
bWF0Y2guICBUaGUgc2Vjb25kIG1hdGNoZXIsIHdoaWNoIHN1Y2NlZWRlZCwgbmVlZHMgdG8KLSAg
Ly8gZXhwbGFpbi4gIFNpbmNlIGl0IGRvZXNuJ3QgZ2l2ZW4gYW4gZXhwbGFuYXRpb24sIG5vdGhp
bmcgaXMKLSAgLy8gcHJpbnRlZC4KLSAgbSA9IEFueU9mKEdyZWF0ZXJUaGFuKDEwKSwgTHQoMzAp
KTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDApKTsKLQotICAvLyBTdWNjZXNzZnVsIG1h
dGNoLiAgVGhlIHNlY29uZCBtYXRjaGVyLCB3aGljaCBzdWNjZWVkZWQsIG5lZWRzIHRvCi0gIC8v
IGV4cGxhaW4uCi0gIG0gPSBBbnlPZihHcmVhdGVyVGhhbigzMCksIEdyZWF0ZXJUaGFuKDIwKSk7
Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBtb3JlIHRoYW4gMjAiLCBFeHBsYWluKG0sIDI1KSk7
Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgcHJlZGljYXRlIGZ1bmN0aW9uIGFuZCBwcmVkaWNhdGUg
ZnVuY3RvciBhcmUgZm9yCi0vLyB0ZXN0aW5nIHRoZSBUcnVseShwcmVkaWNhdGUpIG1hdGNoZXIu
Ci0KLS8vIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIGlucHV0IGlzIHBvc2l0aXZlLiAgTm90ZSB0
aGF0IHRoZSByZXR1cm4KLS8vIHR5cGUgb2YgdGhpcyBmdW5jdGlvbiBpcyBub3QgYm9vbC4gIEl0
J3MgT0sgYXMgVHJ1bHkoKSBhY2NlcHRzIGFueQotLy8gdW5hcnkgZnVuY3Rpb24gb3IgZnVuY3Rv
ciB3aG9zZSByZXR1cm4gdHlwZSBjYW4gYmUgaW1wbGljaXRseQotLy8gY29udmVydGVkIHRvIGJv
b2wuCi1pbnQgSXNQb3NpdGl2ZShkb3VibGUgeCkgewotICByZXR1cm4geCA+IDAgPyAxIDogMDsK
LX0KLQotLy8gVGhpcyBmdW5jdG9yIHJldHVybnMgdHJ1ZSBpZiB0aGUgaW5wdXQgaXMgZ3JlYXRl
ciB0aGFuIHRoZSBnaXZlbgotLy8gbnVtYmVyLgotY2xhc3MgSXNHcmVhdGVyVGhhbiB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBJc0dyZWF0ZXJUaGFuKGludCB0aHJlc2hvbGQpIDogdGhyZXNob2xk
Xyh0aHJlc2hvbGQpIHt9Ci0KLSAgYm9vbCBvcGVyYXRvcigpKGludCBuKSBjb25zdCB7IHJldHVy
biBuID4gdGhyZXNob2xkXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IHRocmVzaG9sZF87Ci19Owot
Ci0vLyBGb3IgdGVzdGluZyBUcnVseSgpLgotY29uc3QgaW50IGZvbyA9IDA7Ci0KLS8vIFRoaXMg
cHJlZGljYXRlIHJldHVybnMgdHJ1ZSBpZmYgdGhlIGFyZ3VtZW50IHJlZmVyZW5jZXMgZm9vIGFu
ZCBoYXMKLS8vIGEgemVybyB2YWx1ZS4KLWJvb2wgUmVmZXJlbmNlc0Zvb0FuZElzWmVybyhjb25z
dCBpbnQmIG4pIHsKLSAgcmV0dXJuICgmbiA9PSAmZm9vKSAmJiAobiA9PSAwKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBUcnVseShwcmVkaWNhdGUpIG1hdGNoZXMgd2hhdCBzYXRpc2ZpZXMgdGhlIGdp
dmVuCi0vLyBwcmVkaWNhdGUuCi1URVNUKFRydWx5VGVzdCwgTWF0Y2hlc1doYXRTYXRpc2ZpZXNU
aGVQcmVkaWNhdGUpIHsKLSAgTWF0Y2hlcjxkb3VibGU+IG0gPSBUcnVseShJc1Bvc2l0aXZlKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDIuMCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KC0xLjUpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBUcnVseShwcmVkaWNhdGVfZnVuY3Rvcikgd29y
a3MgdG9vLgotVEVTVChUcnVseVRlc3QsIENhbkJlVXNlZFdpdGhGdW5jdG9yKSB7Ci0gIE1hdGNo
ZXI8aW50PiBtID0gVHJ1bHkoSXNHcmVhdGVyVGhhbig1KSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0
Y2hlcyg2KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoNCkpOwotfQotCi0vLyBBIGNsYXNz
IHRoYXQgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGJvb2wuCi1jbGFzcyBDb252ZXJ0
aWJsZVRvQm9vbCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBDb252ZXJ0aWJsZVRvQm9vbChpbnQg
bnVtYmVyKSA6IG51bWJlcl8obnVtYmVyKSB7fQotICBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbnVtYmVyXyAhPSAwOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgbnVtYmVyXzsKLX07Ci0K
LUNvbnZlcnRpYmxlVG9Cb29sIElzTm90WmVybyhpbnQgbnVtYmVyKSB7Ci0gIHJldHVybiBDb252
ZXJ0aWJsZVRvQm9vbChudW1iZXIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBwcmVkaWNhdGUg
dXNlZCBpbiBUcnVseSgpIG1heSByZXR1cm4gYSBjbGFzcyB0aGF0J3MKLS8vIGltcGxpY2l0bHkg
Y29udmVydGlibGUgdG8gYm9vbCwgZXZlbiB3aGVuIHRoZSBjbGFzcyBoYXMgbm8KLS8vIG9wZXJh
dG9yISgpLgotVEVTVChUcnVseVRlc3QsIFByZWRpY2F0ZUNhblJldHVybkFDbGFzc0NvbnZlcnRp
YmxlVG9Cb29sKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gVHJ1bHkoSXNOb3RaZXJvKTsKLSAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgVHJ1bHkocHJlZGljYXRlKSBjYW4gZGVzY3JpYmUgaXRzZWxmIHBy
b3Blcmx5LgotVEVTVChUcnVseVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGRv
dWJsZT4gbSA9IFRydWx5KElzUG9zaXRpdmUpOwotICBFWFBFQ1RfRVEoInNhdGlzZmllcyB0aGUg
Z2l2ZW4gcHJlZGljYXRlIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBUcnVseShwcmVkaWNhdGUpIHdvcmtzIHdoZW4gdGhlIG1hdGNoZXIgdGFrZXMgaXRz
Ci0vLyBhcmd1bWVudCBieSByZWZlcmVuY2UuCi1URVNUKFRydWx5VGVzdCwgV29ya3NGb3JCeVJl
ZkFyZ3VtZW50cykgewotICBNYXRjaGVyPGNvbnN0IGludCY+IG0gPSBUcnVseShSZWZlcmVuY2Vz
Rm9vQW5kSXNaZXJvKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGZvbykpOwotICBpbnQgbiA9
IDA7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobikpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1h
dGNoZXMobSkgaXMgYSBwcmVkaWNhdGUgc2F0aXNmaWVkIGJ5IHdoYXRldmVyIHRoYXQKLS8vIG1h
dGNoZXMgbWF0Y2hlciBtLgotVEVTVChNYXRjaGVzVGVzdCwgSXNTYXRpc2ZpZWRCeVdoYXRNYXRj
aGVzVGhlTWF0Y2hlcikgewotICBFWFBFQ1RfVFJVRShNYXRjaGVzKEdlKDApKSgxKSk7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaGVzKEVxKCdhJykpKCdiJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1h
dGNoZXMobSkgd29ya3Mgd2hlbiB0aGUgbWF0Y2hlciB0YWtlcyBpdHMgYXJndW1lbnQgYnkKLS8v
IHJlZmVyZW5jZS4KLVRFU1QoTWF0Y2hlc1Rlc3QsIFdvcmtzT25CeVJlZkFyZ3VtZW50cykgewot
ICBpbnQgbSA9IDAsIG4gPSAwOwotICBFWFBFQ1RfVFJVRShNYXRjaGVzKEFsbE9mKFJlZihuKSwg
RXEoMCkpKShuKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaGVzKFJlZihtKSkobikpOwotfQotCi0v
LyBUZXN0cyB0aGF0IGEgTWF0Y2hlciBvbiBub24tcmVmZXJlbmNlIHR5cGUgY2FuIGJlIHVzZWQg
aW4KLS8vIE1hdGNoZXMoKS4KLVRFU1QoTWF0Y2hlc1Rlc3QsIFdvcmtzV2l0aE1hdGNoZXJPbk5v
blJlZlR5cGUpIHsKLSAgTWF0Y2hlcjxpbnQ+IGVxNSA9IEVxKDUpOwotICBFWFBFQ1RfVFJVRShN
YXRjaGVzKGVxNSkoNSkpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hlcyhlcTUpKDIpKTsKLX0KLQot
Ly8gVGVzdHMgVmFsdWUodmFsdWUsIG1hdGNoZXIpLiAgU2luY2UgVmFsdWUoKSBpcyBhIHNpbXBs
ZSB3cmFwcGVyIGZvcgotLy8gTWF0Y2hlcygpLCB3aGljaCBoYXMgYmVlbiB0ZXN0ZWQgYWxyZWFk
eSwgd2UgZG9uJ3Qgc3BlbmQgYSBsb3Qgb2YKLS8vIGVmZm9ydCBvbiB0ZXN0aW5nIFZhbHVlKCku
Ci1URVNUKFZhbHVlVGVzdCwgV29ya3NXaXRoUG9seW1vcnBoaWNNYXRjaGVyKSB7Ci0gIEVYUEVD
VF9UUlVFKFZhbHVlKCJoaSIsIFN0YXJ0c1dpdGgoImgiKSkpOwotICBFWFBFQ1RfRkFMU0UoVmFs
dWUoNSwgR3QoMTApKSk7Ci19Ci0KLVRFU1QoVmFsdWVUZXN0LCBXb3Jrc1dpdGhNb25vbW9ycGhp
Y01hdGNoZXIpIHsKLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IGlzX3plcm8gPSBFcSgwKTsKLSAgRVhQ
RUNUX1RSVUUoVmFsdWUoMCwgaXNfemVybykpOwotICBFWFBFQ1RfRkFMU0UoVmFsdWUoJ2EnLCBp
c196ZXJvKSk7Ci0KLSAgaW50IG4gPSAwOwotICBjb25zdCBNYXRjaGVyPGNvbnN0IGludCY+IHJl
Zl9uID0gUmVmKG4pOwotICBFWFBFQ1RfVFJVRShWYWx1ZShuLCByZWZfbikpOwotICBFWFBFQ1Rf
RkFMU0UoVmFsdWUoMSwgcmVmX24pKTsKLX0KLQotVEVTVChFeHBsYWluTWF0Y2hSZXN1bHRUZXN0
LCBXb3Jrc1dpdGhQb2x5bW9ycGhpY01hdGNoZXIpIHsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0
ZW5lciBsaXN0ZW5lcjE7Ci0gIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRjaFJlc3VsdChQb2x5bW9y
cGhpY0lzRXZlbigpLCA0MiwgJmxpc3RlbmVyMSkpOwotICBFWFBFQ1RfRVEoIiUgMiA9PSAwIiwg
bGlzdGVuZXIxLnN0cigpKTsKLQotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVy
MjsKLSAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChHZSg0MiksIDEuNSwgJmxpc3Rl
bmVyMikpOwotICBFWFBFQ1RfRVEoIiIsIGxpc3RlbmVyMi5zdHIoKSk7Ci19Ci0KLVRFU1QoRXhw
bGFpbk1hdGNoUmVzdWx0VGVzdCwgV29ya3NXaXRoTW9ub21vcnBoaWNNYXRjaGVyKSB7Ci0gIGNv
bnN0IE1hdGNoZXI8aW50PiBpc19ldmVuID0gUG9seW1vcnBoaWNJc0V2ZW4oKTsKLSAgU3RyaW5n
TWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7Ci0gIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRj
aFJlc3VsdChpc19ldmVuLCA0MiwgJmxpc3RlbmVyMSkpOwotICBFWFBFQ1RfRVEoIiUgMiA9PSAw
IiwgbGlzdGVuZXIxLnN0cigpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IGRvdWJsZSY+IGlz
X3plcm8gPSBFcSgwKTsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjI7Ci0g
IEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoaXNfemVybywgMS41LCAmbGlzdGVuZXIy
KSk7Ci0gIEVYUEVDVF9FUSgiIiwgbGlzdGVuZXIyLnN0cigpKTsKLX0KLQotTUFUQ0hFUl9QKFJl
YWxseSwgaW5uZXJfbWF0Y2hlciwgIiIpIHsKLSAgcmV0dXJuIEV4cGxhaW5NYXRjaFJlc3VsdChp
bm5lcl9tYXRjaGVyLCBhcmcsIHJlc3VsdF9saXN0ZW5lcik7Ci19Ci0KLVRFU1QoRXhwbGFpbk1h
dGNoUmVzdWx0VGVzdCwgV29ya3NJbnNpZGVNQVRDSEVSKSB7Ci0gIEVYUEVDVF9USEFUKDAsIFJl
YWxseShFcSgwKSkpOwotfQotCi1URVNUKEFsbEFyZ3NUZXN0LCBXb3Jrc0ZvclR1cGxlKSB7Ci0g
IEVYUEVDVF9USEFUKG1ha2VfdHVwbGUoMSwgMkwpLCBBbGxBcmdzKEx0KCkpKTsKLSAgRVhQRUNU
X1RIQVQobWFrZV90dXBsZSgyTCwgMSksIE5vdChBbGxBcmdzKEx0KCkpKSk7Ci19Ci0KLVRFU1Qo
QWxsQXJnc1Rlc3QsIFdvcmtzRm9yTm9uVHVwbGUpIHsKLSAgRVhQRUNUX1RIQVQoNDIsIEFsbEFy
Z3MoR3QoMCkpKTsKLSAgRVhQRUNUX1RIQVQoJ2EnLCBOb3QoQWxsQXJncyhFcSgnYicpKSkpOwot
fQotCi1jbGFzcyBBbGxBcmdzSGVscGVyIHsKLSBwdWJsaWM6Ci0gIEFsbEFyZ3NIZWxwZXIoKSB7
fQotCi0gIE1PQ0tfTUVUSE9EMihIZWxwZXIsIGludChjaGFyIHgsIGludCB5KSk7Ci0KLSBwcml2
YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEFsbEFyZ3NIZWxwZXIpOwot
fTsKLQotVEVTVChBbGxBcmdzVGVzdCwgV29ya3NJbldpdGhDbGF1c2UpIHsKLSAgQWxsQXJnc0hl
bHBlciBoZWxwZXI7Ci0gIE9OX0NBTEwoaGVscGVyLCBIZWxwZXIoXywgXykpCi0gICAgICAuV2l0
aChBbGxBcmdzKEx0KCkpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgRVhQ
RUNUX0NBTEwoaGVscGVyLCBIZWxwZXIoXywgXykpOwotICBFWFBFQ1RfQ0FMTChoZWxwZXIsIEhl
bHBlcihfLCBfKSkKLSAgICAgIC5XaXRoKEFsbEFyZ3MoR3QoKSkpCi0gICAgICAuV2lsbE9uY2Uo
UmV0dXJuKDIpKTsKLQotICBFWFBFQ1RfRVEoMSwgaGVscGVyLkhlbHBlcignXDEnLCAyKSk7Ci0g
IEVYUEVDVF9FUSgyLCBoZWxwZXIuSGVscGVyKCdhJywgMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IEFTU0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFUKCkgd29yayB3aGVuIHRoZSB2YWx1ZQotLy8g
bWF0Y2hlcyB0aGUgbWF0Y2hlci4KLVRFU1QoTWF0Y2hlckFzc2VydGlvblRlc3QsIFdvcmtzV2hl
bk1hdGNoZXJJc1NhdGlzZmllZCkgewotICBBU1NFUlRfVEhBVCg1LCBHZSgyKSkgPDwgIlRoaXMg
c2hvdWxkIHN1Y2NlZWQuIjsKLSAgQVNTRVJUX1RIQVQoIkZvbyIsIEVuZHNXaXRoKCJvbyIpKTsK
LSAgRVhQRUNUX1RIQVQoMiwgQWxsT2YoTGUoNyksIEdlKDApKSkgPDwgIlRoaXMgc2hvdWxkIHN1
Y2NlZWQgdG9vLiI7Ci0gIEVYUEVDVF9USEFUKCJIZWxsbyIsIFN0YXJ0c1dpdGgoIkhlbGwiKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX1RIQVQoKSBhbmQgRVhQRUNUX1RIQVQoKSB3b3Jr
IHdoZW4gdGhlIHZhbHVlCi0vLyBkb2Vzbid0IG1hdGNoIHRoZSBtYXRjaGVyLgotVEVTVChNYXRj
aGVyQXNzZXJ0aW9uVGVzdCwgV29ya3NXaGVuTWF0Y2hlcklzTm90U2F0aXNmaWVkKSB7Ci0gIC8v
ICduJyBtdXN0IGJlIHN0YXRpYyBhcyBpdCBpcyB1c2VkIGluIGFuIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKCksCi0gIC8vIHdoaWNoIGNhbm5vdCByZWZlcmVuY2UgYXV0byB2YXJpYWJsZXMuCi0gIHN0
YXRpYyB1bnNpZ25lZCBzaG9ydCBuOyAgLy8gTk9MSU5UCi0gIG4gPSA1OwotCi0gIC8vIFZDKysg
cHJpb3IgdG8gdmVyc2lvbiA4LjAgU1AxIGhhcyBhIGJ1ZyB3aGVyZSBpdCB3aWxsIG5vdCBzZWUg
YW55Ci0gIC8vIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiB0aGUgbmFtZXNwYWNlIHNjb3BlIGZyb20g
d2l0aGluIG5lc3RlZCBjbGFzc2VzLgotICAvLyBFWFBFQ1QvQVNTRVJUXyhOT04pRkFUQUxfRkFJ
TFVSRSBtYWNyb3MgdXNlIG5lc3RlZCBjbGFzc2VzIHNvIHRoYXQgYWxsCi0gIC8vIG5hbWVzcGFj
ZS1sZXZlbCBmdW5jdGlvbnMgaW52b2tlZCBpbnNpZGUgdGhlbSBuZWVkIHRvIGJlIGV4cGxpY2l0
bHkKLSAgLy8gcmVzb2x2ZWQuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9USEFUKG4s
IDo6dGVzdGluZzo6R3QoMTApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBu
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogaXMgPiAxMFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDUiICsgT2ZUeXBlKCJ1bnNpZ25lZCBzaG9ydCIp
KTsKLSAgbiA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgRVhQRUNUX1RI
QVQobiwgOjp0ZXN0aW5nOjpBbGxPZig6OnRlc3Rpbmc6OkxlKDcpLCA6OnRlc3Rpbmc6OkdlKDUp
KSksCi0gICAgICAiVmFsdWUgb2Y6IG5cbiIKLSAgICAgICJFeHBlY3RlZDogKGlzIDw9IDcpIGFu
ZCAoaXMgPj0gNSlcbiIKLSAgICAgICIgIEFjdHVhbDogMCIgKyBPZlR5cGUoInVuc2lnbmVkIHNo
b3J0IikpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFU
KCkgd29yayB3aGVuIHRoZSBhcmd1bWVudAotLy8gaGFzIGEgcmVmZXJlbmNlIHR5cGUuCi1URVNU
KE1hdGNoZXJBc3NlcnRpb25UZXN0LCBXb3Jrc0ZvckJ5UmVmQXJndW1lbnRzKSB7Ci0gIC8vIFdl
IHVzZSBhIHN0YXRpYyB2YXJpYWJsZSBoZXJlIGFzIEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2Fu
bm90Ci0gIC8vIHJlZmVyZW5jZSBhdXRvIHZhcmlhYmxlcy4KLSAgc3RhdGljIGludCBuOwotICBu
ID0gMDsKLSAgRVhQRUNUX1RIQVQobiwgQWxsT2YoTGUoNyksIFJlZihuKSkpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfVEhBVChuLCA6OnRlc3Rpbmc6Ok5vdCg6OnRlc3Rpbmc6OlJl
ZihuKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IG5cbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBkb2VzIG5vdCByZWZlcmVuY2UgdGhlIHZhcmlhYmxl
IEAiKTsKLSAgLy8gVGVzdHMgdGhlICJBY3R1YWwiIHBhcnQuCi0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9USEFUKG4sIDo6dGVzdGluZzo6Tm90KDo6dGVzdGluZzo6UmVmKG4pKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJBY3R1YWw6IDAiICsgT2ZUeXBlKCJpbnQiKSArICIsIHdo
aWNoIGlzIGxvY2F0ZWQgQCIpOwotfQotCi0jaWYgIUdURVNUX09TX1NZTUJJQU4KLS8vIFRlc3Rz
IHRoYXQgQVNTRVJUX1RIQVQoKSBhbmQgRVhQRUNUX1RIQVQoKSB3b3JrIHdoZW4gdGhlIG1hdGNo
ZXIgaXMKLS8vIG1vbm9tb3JwaGljLgotCi0vLyBBU1NFUlRfVEhBVCgiaGVsbG8iLCBzdGFydHNf
d2l0aF9oZSkgZmFpbHMgdG8gY29tcGlsZSB3aXRoIE5va2lhJ3MKLS8vIFN5bWJpYW4gY29tcGls
ZXI6IGl0IHRyaWVzIHRvIGNvbXBpbGUKLS8vIHRlbXBsYXRlPFQsIFU+IGNsYXNzIE1hdGNoZXJD
YXN0SW1wbCB7IC4uLgotLy8gICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgLi4u
KSBjb25zdCB7Ci0vLyAgICAgcmV0dXJuIHNvdXJjZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4o
c3RhdGljX2Nhc3Q8VT4oeCksIC4uLik7Ci0vLyB3aXRoIFUgPT0gc3RyaW5nIGFuZCBUID09IGNv
bnN0IGNoYXIqCi0vLyBXaXRoIEFTU0VSVF9USEFUKCJoZWxsbyIuLi4pIGNoYW5nZWQgdG8gQVNT
RVJUX1RIQVQoc3RyaW5nKCJoZWxsbyIpIC4uLiApCi0vLyB0aGUgY29tcGlsZXIgc2lsZW50bHkg
Y3Jhc2hlcyB3aXRoIG5vIG91dHB1dC4KLS8vIElmIE1hdGNoZXJDYXN0SW1wbCBpcyBjaGFuZ2Vk
IHRvIHVzZSBVKHgpIGluc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VT4oeCkKLS8vIHRoZSBjb2RlIGNv
bXBpbGVzIGJ1dCB0aGUgY29udmVydGVkIHN0cmluZyBpcyBib2d1cy4KLVRFU1QoTWF0Y2hlckFz
c2VydGlvblRlc3QsIFdvcmtzRm9yTW9ub21vcnBoaWNNYXRjaGVyKSB7Ci0gIE1hdGNoZXI8Y29u
c3QgY2hhcio+IHN0YXJ0c193aXRoX2hlID0gU3RhcnRzV2l0aCgiaGUiKTsKLSAgQVNTRVJUX1RI
QVQoImhlbGxvIiwgc3RhcnRzX3dpdGhfaGUpOwotCi0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJp
bmcmPiBlbmRzX3dpdGhfb2sgPSBFbmRzV2l0aCgib2siKTsKLSAgQVNTRVJUX1RIQVQoImJvb2si
LCBlbmRzX3dpdGhfb2spOwotICBjb25zdCBzdGQ6OnN0cmluZyBiYWQgPSAiYmFkIjsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIQVQoYmFkLCBlbmRzX3dpdGhfb2spLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IGJhZFxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IGVuZHMgd2l0aCBcIm9rXCJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgQWN0dWFsOiBcImJhZFwiIik7Ci0gIE1hdGNoZXI8aW50PiBpc19ncmVh
dGVyX3RoYW5fNSA9IEd0KDUpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVEhB
VCg1LCBpc19ncmVhdGVyX3RoYW5fNSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1
ZSBvZjogNVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGlzID4gNVxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IDUiICsgT2ZUeXBlKCJpbnQi
KSk7Ci19Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCi0KLS8vIFRlc3RzIGZsb2F0aW5n
LXBvaW50IG1hdGNoZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1jbGFzcyBGbG9h
dGluZ1BvaW50VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHR5
cGVkZWYgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ8UmF3VHlwZT4gRmxvYXRpbmc7
Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRmxvYXRpbmc6OkJpdHMgQml0czsKLQotICBGbG9hdGluZ1Bv
aW50VGVzdCgpCi0gICAgICA6IG1heF91bHBzXyhGbG9hdGluZzo6a01heFVscHMpLAotICAgICAg
ICB6ZXJvX2JpdHNfKEZsb2F0aW5nKDApLmJpdHMoKSksCi0gICAgICAgIG9uZV9iaXRzXyhGbG9h
dGluZygxKS5iaXRzKCkpLAotICAgICAgICBpbmZpbml0eV9iaXRzXyhGbG9hdGluZyhGbG9hdGlu
Zzo6SW5maW5pdHkoKSkuYml0cygpKSwKLSAgICAgICAgY2xvc2VfdG9fcG9zaXRpdmVfemVyb18o
QXNCaXRzKHplcm9fYml0c18gKyBtYXhfdWxwc18vMikpLAotICAgICAgICBjbG9zZV90b19uZWdh
dGl2ZV96ZXJvXyhBc0JpdHMoemVyb19iaXRzXyArIG1heF91bHBzXyAtIG1heF91bHBzXy8yKSks
Ci0gICAgICAgIGZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvXygtQXNCaXRzKAotICAgICAgICAg
ICAgemVyb19iaXRzXyArIG1heF91bHBzXyArIDEgLSBtYXhfdWxwc18vMikpLAotICAgICAgICBj
bG9zZV90b19vbmVfKEFzQml0cyhvbmVfYml0c18gKyBtYXhfdWxwc18pKSwKLSAgICAgICAgZnVy
dGhlcl9mcm9tX29uZV8oQXNCaXRzKG9uZV9iaXRzXyArIG1heF91bHBzXyArIDEpKSwKLSAgICAg
ICAgaW5maW5pdHlfKEZsb2F0aW5nOjpJbmZpbml0eSgpKSwKLSAgICAgICAgY2xvc2VfdG9faW5m
aW5pdHlfKEFzQml0cyhpbmZpbml0eV9iaXRzXyAtIG1heF91bHBzXykpLAotICAgICAgICBmdXJ0
aGVyX2Zyb21faW5maW5pdHlfKEFzQml0cyhpbmZpbml0eV9iaXRzXyAtIG1heF91bHBzXyAtIDEp
KSwKLSAgICAgICAgbWF4XyhGbG9hdGluZzo6TWF4KCkpLAotICAgICAgICBuYW4xXyhBc0JpdHMo
RmxvYXRpbmc6OmtFeHBvbmVudEJpdE1hc2sgfCAxKSksCi0gICAgICAgIG5hbjJfKEFzQml0cyhG
bG9hdGluZzo6a0V4cG9uZW50Qml0TWFzayB8IDIwMCkpIHsKLSAgfQotCi0gIHZvaWQgVGVzdFNp
emUoKSB7Ci0gICAgRVhQRUNUX0VRKHNpemVvZihSYXdUeXBlKSwgc2l6ZW9mKEJpdHMpKTsKLSAg
fQotCi0gIC8vIEEgYmF0dGVyeSBvZiB0ZXN0cyBmb3IgRmxvYXRpbmdFcU1hdGNoZXI6Ok1hdGNo
ZXMuCi0gIC8vIG1hdGNoZXJfbWFrZXIgaXMgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gd2hpY2gg
Y3JlYXRlcyBhIEZsb2F0aW5nRXFNYXRjaGVyLgotICB2b2lkIFRlc3RNYXRjaGVzKAotICAgICAg
dGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPFJhd1R5cGU+ICgqbWF0Y2hlcl9t
YWtlcikoUmF3VHlwZSkpIHsKLSAgICBNYXRjaGVyPFJhd1R5cGU+IG0xID0gbWF0Y2hlcl9tYWtl
cigwLjApOwotICAgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoLTAuMCkpOwotICAgIEVYUEVDVF9U
UlVFKG0xLk1hdGNoZXMoY2xvc2VfdG9fcG9zaXRpdmVfemVyb18pKTsKLSAgICBFWFBFQ1RfVFJV
RShtMS5NYXRjaGVzKGNsb3NlX3RvX25lZ2F0aXZlX3plcm9fKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG0xLk1hdGNoZXMoMS4wKSk7Ci0KLSAgICBNYXRjaGVyPFJhd1R5cGU+IG0yID0gbWF0Y2hlcl9t
YWtlcihjbG9zZV90b19wb3NpdGl2ZV96ZXJvXyk7Ci0gICAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNo
ZXMoZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm9fKSk7Ci0KLSAgICBNYXRjaGVyPFJhd1R5cGU+
IG0zID0gbWF0Y2hlcl9tYWtlcigxLjApOwotICAgIEVYUEVDVF9UUlVFKG0zLk1hdGNoZXMoY2xv
c2VfdG9fb25lXykpOwotICAgIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKGZ1cnRoZXJfZnJvbV9v
bmVfKSk7Ci0KLSAgICAvLyBUZXN0IGNvbW11dGF0aXZpdHk6IG1hdGNoZXJfbWFrZXIoMC4wKS5N
YXRjaGVzKDEuMCkgd2FzIHRlc3RlZCBhYm92ZS4KLSAgICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hl
cygwLjApKTsKLQotICAgIE1hdGNoZXI8UmF3VHlwZT4gbTQgPSBtYXRjaGVyX21ha2VyKC1pbmZp
bml0eV8pOwotICAgIEVYUEVDVF9UUlVFKG00Lk1hdGNoZXMoLWNsb3NlX3RvX2luZmluaXR5Xykp
OwotCi0gICAgTWF0Y2hlcjxSYXdUeXBlPiBtNSA9IG1hdGNoZXJfbWFrZXIoaW5maW5pdHlfKTsK
LSAgICBFWFBFQ1RfVFJVRShtNS5NYXRjaGVzKGNsb3NlX3RvX2luZmluaXR5XykpOwotCi0gICAg
Ly8gVGhpcyBpcyBpbnRlcmVzdGluZyBhcyB0aGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5
XyBhbmQgbmFuMV8KLSAgICAvLyBhcmUgb25seSAxIERMUCBhcGFydC4KLSAgICBFWFBFQ1RfRkFM
U0UobTUuTWF0Y2hlcyhuYW4xXykpOwotCi0gICAgLy8gbWF0Y2hlcl9tYWtlciBjYW4gcHJvZHVj
ZSBhIE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+LCB3aGljaCBpcyBuZWVkZWQgaW4KLSAgICAvLyBz
b21lIGNhc2VzLgotICAgIE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+IG02ID0gbWF0Y2hlcl9tYWtl
cigwLjApOwotICAgIEVYUEVDVF9UUlVFKG02Lk1hdGNoZXMoLTAuMCkpOwotICAgIEVYUEVDVF9U
UlVFKG02Lk1hdGNoZXMoY2xvc2VfdG9fcG9zaXRpdmVfemVyb18pKTsKLSAgICBFWFBFQ1RfRkFM
U0UobTYuTWF0Y2hlcygxLjApKTsKLQotICAgIC8vIG1hdGNoZXJfbWFrZXIgY2FuIHByb2R1Y2Ug
YSBNYXRjaGVyPFJhd1R5cGUmPiwgd2hpY2ggaXMgbmVlZGVkIGluIHNvbWUKLSAgICAvLyBjYXNl
cy4KLSAgICBNYXRjaGVyPFJhd1R5cGUmPiBtNyA9IG1hdGNoZXJfbWFrZXIoMC4wKTsKLSAgICBS
YXdUeXBlIHggPSAwLjA7Ci0gICAgRVhQRUNUX1RSVUUobTcuTWF0Y2hlcyh4KSk7Ci0gICAgeCA9
IDAuMDFmOwotICAgIEVYUEVDVF9GQUxTRShtNy5NYXRjaGVzKHgpKTsKLSAgfQotCi0gIC8vIFBy
ZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0aGUgdGVzdHMuCi0KLSAgY29uc3Qg
c2l6ZV90IG1heF91bHBzXzsKLQotICBjb25zdCBCaXRzIHplcm9fYml0c187ICAvLyBUaGUgYml0
cyB0aGF0IHJlcHJlc2VudCAwLjAuCi0gIGNvbnN0IEJpdHMgb25lX2JpdHNfOyAgLy8gVGhlIGJp
dHMgdGhhdCByZXByZXNlbnQgMS4wLgotICBjb25zdCBCaXRzIGluZmluaXR5X2JpdHNfOyAgLy8g
VGhlIGJpdHMgdGhhdCByZXByZXNlbnQgK2luZmluaXR5LgotCi0gIC8vIFNvbWUgbnVtYmVycyBj
bG9zZSB0byAwLjAuCi0gIGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVyb187Ci0g
IGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9fbmVnYXRpdmVfemVyb187Ci0gIGNvbnN0IFJhd1R5cGUg
ZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm9fOwotCi0gIC8vIFNvbWUgbnVtYmVycyBjbG9zZSB0
byAxLjAuCi0gIGNvbnN0IFJhd1R5cGUgY2xvc2VfdG9fb25lXzsKLSAgY29uc3QgUmF3VHlwZSBm
dXJ0aGVyX2Zyb21fb25lXzsKLQotICAvLyBTb21lIG51bWJlcnMgY2xvc2UgdG8gK2luZmluaXR5
LgotICBjb25zdCBSYXdUeXBlIGluZmluaXR5XzsKLSAgY29uc3QgUmF3VHlwZSBjbG9zZV90b19p
bmZpbml0eV87Ci0gIGNvbnN0IFJhd1R5cGUgZnVydGhlcl9mcm9tX2luZmluaXR5XzsKLQotICAv
LyBNYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUgdGhhdCdzIG5vdCBpbmZpbml0eS4KLSAgY29u
c3QgUmF3VHlwZSBtYXhfOwotCi0gIC8vIFNvbWUgTmFOcy4KLSAgY29uc3QgUmF3VHlwZSBuYW4x
XzsKLSAgY29uc3QgUmF3VHlwZSBuYW4yXzsKLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBzdGF0aWMgUmF3VHlwZSBBc0JpdHMoVCB2YWx1ZSkgewotICAgIHJldHVybiBG
bG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKHN0YXRpY19jYXN0PEJpdHM+KHZhbHVlKSk7Ci0gIH0K
LX07Ci0KLS8vIFRlc3RzIGZsb2F0aW5nLXBvaW50IG1hdGNoZXJzIHdpdGggZml4ZWQgZXBzaWxv
bnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KLWNsYXNzIEZsb2F0aW5nUG9pbnROZWFy
VGVzdCA6IHB1YmxpYyBGbG9hdGluZ1BvaW50VGVzdDxSYXdUeXBlPiB7Ci0gcHJvdGVjdGVkOgot
ICB0eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0PFJhd1R5cGU+IFBhcmVudFR5cGU7Ci0KLSAgLy8g
QSBiYXR0ZXJ5IG9mIHRlc3RzIGZvciBGbG9hdGluZ0VxTWF0Y2hlcjo6TWF0Y2hlcyB3aXRoIGEg
Zml4ZWQgZXBzaWxvbi4KLSAgLy8gbWF0Y2hlcl9tYWtlciBpcyBhIHBvaW50ZXIgdG8gYSBmdW5j
dGlvbiB3aGljaCBjcmVhdGVzIGEgRmxvYXRpbmdFcU1hdGNoZXIuCi0gIHZvaWQgVGVzdE5lYXJN
YXRjaGVzKAotICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPFJhd1R5
cGU+Ci0gICAgICAgICAgKCptYXRjaGVyX21ha2VyKShSYXdUeXBlLCBSYXdUeXBlKSkgewotICAg
IE1hdGNoZXI8UmF3VHlwZT4gbTEgPSBtYXRjaGVyX21ha2VyKDAuMCwgMC4wKTsKLSAgICBFWFBF
Q1RfVFJVRShtMS5NYXRjaGVzKDAuMCkpOwotICAgIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoLTAu
MCkpOwotICAgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKFBhcmVudFR5cGU6OmNsb3NlX3RvX3Bv
c2l0aXZlX3plcm9fKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoUGFyZW50VHlwZTo6
Y2xvc2VfdG9fbmVnYXRpdmVfemVyb18pKTsKLSAgICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygx
LjApKTsKLQotICAgIE1hdGNoZXI8UmF3VHlwZT4gbTIgPSBtYXRjaGVyX21ha2VyKDAuMCwgMS4w
KTsKLSAgICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDAuMCkpOwotICAgIEVYUEVDVF9UUlVFKG0y
Lk1hdGNoZXMoLTAuMCkpOwotICAgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMS4wKSk7Ci0gICAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcygtMS4wKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNo
ZXMoUGFyZW50VHlwZTo6Y2xvc2VfdG9fb25lXykpOwotICAgIEVYUEVDVF9GQUxTRShtMi5NYXRj
aGVzKC1QYXJlbnRUeXBlOjpjbG9zZV90b19vbmVfKSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGlu
ZiBtYXRjaGVzIGluZiwgcmVnYXJkbGVzcyBvZiB0aGUgb2YgdGhlIHNwZWNpZmllZCBtYXgKLSAg
ICAvLyBhYnNvbHV0ZSBlcnJvci4KLSAgICBNYXRjaGVyPFJhd1R5cGU+IG0zID0gbWF0Y2hlcl9t
YWtlcihQYXJlbnRUeXBlOjppbmZpbml0eV8sIDAuMCk7Ci0gICAgRVhQRUNUX1RSVUUobTMuTWF0
Y2hlcyhQYXJlbnRUeXBlOjppbmZpbml0eV8pKTsKLSAgICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hl
cyhQYXJlbnRUeXBlOjpjbG9zZV90b19pbmZpbml0eV8pKTsKLSAgICBFWFBFQ1RfRkFMU0UobTMu
TWF0Y2hlcygtUGFyZW50VHlwZTo6aW5maW5pdHlfKSk7Ci0KLSAgICBNYXRjaGVyPFJhd1R5cGU+
IG00ID0gbWF0Y2hlcl9tYWtlcigtUGFyZW50VHlwZTo6aW5maW5pdHlfLCAwLjApOwotICAgIEVY
UEVDVF9UUlVFKG00Lk1hdGNoZXMoLVBhcmVudFR5cGU6OmluZmluaXR5XykpOwotICAgIEVYUEVD
VF9GQUxTRShtNC5NYXRjaGVzKC1QYXJlbnRUeXBlOjpjbG9zZV90b19pbmZpbml0eV8pKTsKLSAg
ICBFWFBFQ1RfRkFMU0UobTQuTWF0Y2hlcyhQYXJlbnRUeXBlOjppbmZpbml0eV8pKTsKLQotICAg
IC8vIFRlc3QgdmFyaW91cyBvdmVyZmxvdyBzY2VuYXJpb3MuCi0gICAgTWF0Y2hlcjxSYXdUeXBl
PiBtNSA9IG1hdGNoZXJfbWFrZXIoUGFyZW50VHlwZTo6bWF4XywgUGFyZW50VHlwZTo6bWF4Xyk7
Ci0gICAgRVhQRUNUX1RSVUUobTUuTWF0Y2hlcyhQYXJlbnRUeXBlOjptYXhfKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG01Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8pKTsKLQotICAgIE1hdGNoZXI8
UmF3VHlwZT4gbTYgPSBtYXRjaGVyX21ha2VyKC1QYXJlbnRUeXBlOjptYXhfLCBQYXJlbnRUeXBl
OjptYXhfKTsKLSAgICBFWFBFQ1RfRkFMU0UobTYuTWF0Y2hlcyhQYXJlbnRUeXBlOjptYXhfKSk7
Ci0gICAgRVhQRUNUX1RSVUUobTYuTWF0Y2hlcygtUGFyZW50VHlwZTo6bWF4XykpOwotCi0gICAg
TWF0Y2hlcjxSYXdUeXBlPiBtNyA9IG1hdGNoZXJfbWFrZXIoUGFyZW50VHlwZTo6bWF4XywgMCk7
Ci0gICAgRVhQRUNUX1RSVUUobTcuTWF0Y2hlcyhQYXJlbnRUeXBlOjptYXhfKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG03Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8pKTsKLQotICAgIE1hdGNoZXI8
UmF3VHlwZT4gbTggPSBtYXRjaGVyX21ha2VyKC1QYXJlbnRUeXBlOjptYXhfLCAwKTsKLSAgICBF
WFBFQ1RfRkFMU0UobTguTWF0Y2hlcyhQYXJlbnRUeXBlOjptYXhfKSk7Ci0gICAgRVhQRUNUX1RS
VUUobTguTWF0Y2hlcygtUGFyZW50VHlwZTo6bWF4XykpOwotCi0gICAgLy8gVGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiBtYXgoKSBhbmQgLW1heCgpIG5vcm1hbGx5IG92ZXJmbG93cyB0byBpbmZpbml0
eSwKLSAgICAvLyBidXQgaXQgc2hvdWxkIHN0aWxsIG1hdGNoIGlmIHRoZSBtYXhfYWJzX2Vycm9y
IGlzIGFsc28gaW5maW5pdHkuCi0gICAgTWF0Y2hlcjxSYXdUeXBlPiBtOSA9IG1hdGNoZXJfbWFr
ZXIoCi0gICAgICAgIFBhcmVudFR5cGU6Om1heF8sIFBhcmVudFR5cGU6OmluZmluaXR5Xyk7Ci0g
ICAgRVhQRUNUX1RSVUUobTguTWF0Y2hlcygtUGFyZW50VHlwZTo6bWF4XykpOwotCi0gICAgLy8g
bWF0Y2hlcl9tYWtlciBjYW4gcHJvZHVjZSBhIE1hdGNoZXI8Y29uc3QgUmF3VHlwZSY+LCB3aGlj
aCBpcyBuZWVkZWQgaW4KLSAgICAvLyBzb21lIGNhc2VzLgotICAgIE1hdGNoZXI8Y29uc3QgUmF3
VHlwZSY+IG0xMCA9IG1hdGNoZXJfbWFrZXIoMC4wLCAxLjApOwotICAgIEVYUEVDVF9UUlVFKG0x
MC5NYXRjaGVzKC0wLjApKTsKLSAgICBFWFBFQ1RfVFJVRShtMTAuTWF0Y2hlcyhQYXJlbnRUeXBl
OjpjbG9zZV90b19wb3NpdGl2ZV96ZXJvXykpOwotICAgIEVYUEVDVF9GQUxTRShtMTAuTWF0Y2hl
cyhQYXJlbnRUeXBlOjpjbG9zZV90b19vbmVfKSk7Ci0KLSAgICAvLyBtYXRjaGVyX21ha2VyIGNh
biBwcm9kdWNlIGEgTWF0Y2hlcjxSYXdUeXBlJj4sIHdoaWNoIGlzIG5lZWRlZCBpbiBzb21lCi0g
ICAgLy8gY2FzZXMuCi0gICAgTWF0Y2hlcjxSYXdUeXBlJj4gbTExID0gbWF0Y2hlcl9tYWtlcigw
LjAsIDEuMCk7Ci0gICAgUmF3VHlwZSB4ID0gMC4wOwotICAgIEVYUEVDVF9UUlVFKG0xMS5NYXRj
aGVzKHgpKTsKLSAgICB4ID0gMS4wZjsKLSAgICBFWFBFQ1RfVFJVRShtMTEuTWF0Y2hlcyh4KSk7
Ci0gICAgeCA9IC0xLjBmOwotICAgIEVYUEVDVF9UUlVFKG0xMS5NYXRjaGVzKHgpKTsKLSAgICB4
ID0gMS4xZjsKLSAgICBFWFBFQ1RfRkFMU0UobTExLk1hdGNoZXMoeCkpOwotICAgIHggPSAtMS4x
ZjsKLSAgICBFWFBFQ1RfRkFMU0UobTExLk1hdGNoZXMoeCkpOwotICB9Ci19OwotCi0vLyBJbnN0
YW50aWF0ZSBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyBmbG9hdHMuCi10eXBlZGVmIEZs
b2F0aW5nUG9pbnRUZXN0PGZsb2F0PiBGbG9hdFRlc3Q7Ci0KLVRFU1RfRihGbG9hdFRlc3QsIEZs
b2F0RXFBcHByb3hpbWF0ZWx5TWF0Y2hlc0Zsb2F0cykgewotICBUZXN0TWF0Y2hlcygmRmxvYXRF
cSk7Ci19Ci0KLVRFU1RfRihGbG9hdFRlc3QsIE5hblNlbnNpdGl2ZUZsb2F0RXFBcHByb3hpbWF0
ZWx5TWF0Y2hlc0Zsb2F0cykgewotICBUZXN0TWF0Y2hlcygmTmFuU2Vuc2l0aXZlRmxvYXRFcSk7
Ci19Ci0KLVRFU1RfRihGbG9hdFRlc3QsIEZsb2F0RXFDYW5ub3RNYXRjaE5hTikgewotICAvLyBG
bG9hdEVxIG5ldmVyIG1hdGNoZXMgTmFOLgotICBNYXRjaGVyPGZsb2F0PiBtID0gRmxvYXRFcShu
YW4xXyk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobmFuMV8pKTsKLSAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcyhuYW4yXykpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQot
Ci1URVNUX0YoRmxvYXRUZXN0LCBOYW5TZW5zaXRpdmVGbG9hdEVxQ2FuTWF0Y2hOYU4pIHsKLSAg
Ly8gTmFuU2Vuc2l0aXZlRmxvYXRFcSB3aWxsIG1hdGNoIE5hTi4KLSAgTWF0Y2hlcjxmbG9hdD4g
bSA9IE5hblNlbnNpdGl2ZUZsb2F0RXEobmFuMV8pOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
bmFuMV8pKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjJfKSk7Ci0gIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoMS4wKSk7Ci19Ci0KLVRFU1RfRihGbG9hdFRlc3QsIEZsb2F0RXFDYW5EZXNj
cmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxmbG9hdD4gbTEgPSBGbG9hdEVxKDIuMGYpOwotICBFWFBF
Q1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlKG0xKSk7Ci0gIEVYUEVDVF9FUSgi
aXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwotCi0gIE1hdGNo
ZXI8ZmxvYXQ+IG0yID0gRmxvYXRFcSgwLjVmKTsKLSAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0
ZWx5IDAuNSIsIERlc2NyaWJlKG0yKSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVs
eSAwLjUiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7Ci0KLSAgTWF0Y2hlcjxmbG9hdD4gbTMgPSBG
bG9hdEVxKG5hbjFfKTsKLSAgRVhQRUNUX0VRKCJuZXZlciBtYXRjaGVzIiwgRGVzY3JpYmUobTMp
KTsKLSAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsKLX0K
LQotVEVTVF9GKEZsb2F0VGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXRFcUNhbkRlc2NyaWJlU2VsZikg
ewotICBNYXRjaGVyPGZsb2F0PiBtMSA9IE5hblNlbnNpdGl2ZUZsb2F0RXEoMi4wZik7Ci0gIEVY
UEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmUobTEpKTsKLSAgRVhQRUNUX0VR
KCJpc24ndCBhcHByb3hpbWF0ZWx5IDIiLCBEZXNjcmliZU5lZ2F0aW9uKG0xKSk7Ci0KLSAgTWF0
Y2hlcjxmbG9hdD4gbTIgPSBOYW5TZW5zaXRpdmVGbG9hdEVxKDAuNWYpOwotICBFWFBFQ1RfRVEo
ImlzIGFwcHJveGltYXRlbHkgMC41IiwgRGVzY3JpYmUobTIpKTsKLSAgRVhQRUNUX0VRKCJpc24n
dCBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlTmVnYXRpb24obTIpKTsKLQotICBNYXRjaGVy
PGZsb2F0PiBtMyA9IE5hblNlbnNpdGl2ZUZsb2F0RXEobmFuMV8pOwotICBFWFBFQ1RfRVEoImlz
IE5hTiIsIERlc2NyaWJlKG0zKSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgTmFOIiwgRGVzY3JpYmVO
ZWdhdGlvbihtMykpOwotfQotCi0vLyBJbnN0YW50aWF0ZSBGbG9hdGluZ1BvaW50VGVzdCBmb3Ig
dGVzdGluZyBmbG9hdHMgd2l0aCBhIHVzZXItc3BlY2lmaWVkCi0vLyBtYXggYWJzb2x1dGUgZXJy
b3IuCi10eXBlZGVmIEZsb2F0aW5nUG9pbnROZWFyVGVzdDxmbG9hdD4gRmxvYXROZWFyVGVzdDsK
LQotVEVTVF9GKEZsb2F0TmVhclRlc3QsIEZsb2F0TmVhck1hdGNoZXMpIHsKLSAgVGVzdE5lYXJN
YXRjaGVzKCZGbG9hdE5lYXIpOwotfQotCi1URVNUX0YoRmxvYXROZWFyVGVzdCwgTmFuU2Vuc2l0
aXZlRmxvYXROZWFyQXBwcm94aW1hdGVseU1hdGNoZXNGbG9hdHMpIHsKLSAgVGVzdE5lYXJNYXRj
aGVzKCZOYW5TZW5zaXRpdmVGbG9hdE5lYXIpOwotfQotCi1URVNUX0YoRmxvYXROZWFyVGVzdCwg
RmxvYXROZWFyQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8ZmxvYXQ+IG0xID0gRmxvYXRO
ZWFyKDIuMGYsIDAuNWYpOwotICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiAoYWJzb2x1
dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0xKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJp
c24ndCBhcHByb3hpbWF0ZWx5IDIgKGFic29sdXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVn
YXRpb24obTEpKTsKLQotICBNYXRjaGVyPGZsb2F0PiBtMiA9IEZsb2F0TmVhcigwLjVmLCAwLjVm
KTsKLSAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPD0g
MC41KSIsIERlc2NyaWJlKG0yKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hp
bWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMikp
OwotCi0gIE1hdGNoZXI8ZmxvYXQ+IG0zID0gRmxvYXROZWFyKG5hbjFfLCAwLjApOwotICBFWFBF
Q1RfRVEoIm5ldmVyIG1hdGNoZXMiLCBEZXNjcmliZShtMykpOwotICBFWFBFQ1RfRVEoImlzIGFu
eXRoaW5nIiwgRGVzY3JpYmVOZWdhdGlvbihtMykpOwotfQotCi1URVNUX0YoRmxvYXROZWFyVGVz
dCwgTmFuU2Vuc2l0aXZlRmxvYXROZWFyQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Zmxv
YXQ+IG0xID0gTmFuU2Vuc2l0aXZlRmxvYXROZWFyKDIuMGYsIDAuNWYpOwotICBFWFBFQ1RfRVEo
ImlzIGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0x
KSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDIgKGFic29sdXRl
IGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLQotICBNYXRjaGVyPGZsb2F0
PiBtMiA9IE5hblNlbnNpdGl2ZUZsb2F0TmVhcigwLjVmLCAwLjVmKTsKLSAgRVhQRUNUX0VRKCJp
cyBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0y
KSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1
dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotCi0gIE1hdGNoZXI8Zmxv
YXQ+IG0zID0gTmFuU2Vuc2l0aXZlRmxvYXROZWFyKG5hbjFfLCAwLjFmKTsKLSAgRVhQRUNUX0VR
KCJpcyBOYU4iLCBEZXNjcmliZShtMykpOwotICBFWFBFQ1RfRVEoImlzbid0IE5hTiIsIERlc2Ny
aWJlTmVnYXRpb24obTMpKTsKLX0KLQotVEVTVF9GKEZsb2F0TmVhclRlc3QsIEZsb2F0TmVhckNh
bm5vdE1hdGNoTmFOKSB7Ci0gIC8vIEZsb2F0TmVhciBuZXZlciBtYXRjaGVzIE5hTi4KLSAgTWF0
Y2hlcjxmbG9hdD4gbSA9IEZsb2F0TmVhcihQYXJlbnRUeXBlOjpuYW4xXywgMC4xZik7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMobmFuMV8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhu
YW4yXykpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQotCi1URVNUX0YoRmxv
YXROZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXROZWFyQ2FuTWF0Y2hOYU4pIHsKLSAgLy8gTmFu
U2Vuc2l0aXZlRmxvYXROZWFyIHdpbGwgbWF0Y2ggTmFOLgotICBNYXRjaGVyPGZsb2F0PiBtID0g
TmFuU2Vuc2l0aXZlRmxvYXROZWFyKG5hbjFfLCAwLjFmKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuYW4yXykpOwotICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQotCi0vLyBJbnN0YW50aWF0ZSBGbG9hdGluZ1BvaW50
VGVzdCBmb3IgdGVzdGluZyBkb3VibGVzLgotdHlwZWRlZiBGbG9hdGluZ1BvaW50VGVzdDxkb3Vi
bGU+IERvdWJsZVRlc3Q7Ci0KLVRFU1RfRihEb3VibGVUZXN0LCBEb3VibGVFcUFwcHJveGltYXRl
bHlNYXRjaGVzRG91YmxlcykgewotICBUZXN0TWF0Y2hlcygmRG91YmxlRXEpOwotfQotCi1URVNU
X0YoRG91YmxlVGVzdCwgTmFuU2Vuc2l0aXZlRG91YmxlRXFBcHByb3hpbWF0ZWx5TWF0Y2hlc0Rv
dWJsZXMpIHsKLSAgVGVzdE1hdGNoZXMoJk5hblNlbnNpdGl2ZURvdWJsZUVxKTsKLX0KLQotVEVT
VF9GKERvdWJsZVRlc3QsIERvdWJsZUVxQ2Fubm90TWF0Y2hOYU4pIHsKLSAgLy8gRG91YmxlRXEg
bmV2ZXIgbWF0Y2hlcyBOYU4uCi0gIE1hdGNoZXI8ZG91YmxlPiBtID0gRG91YmxlRXEobmFuMV8p
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMobmFuMl8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjApKTsKLX0KLQotVEVT
VF9GKERvdWJsZVRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZUVxQ2FuTWF0Y2hOYU4pIHsKLSAgLy8g
TmFuU2Vuc2l0aXZlRG91YmxlRXEgd2lsbCBtYXRjaCBOYU4uCi0gIE1hdGNoZXI8ZG91YmxlPiBt
ID0gTmFuU2Vuc2l0aXZlRG91YmxlRXEobmFuMV8pOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
bmFuMV8pKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjJfKSk7Ci0gIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoMS4wKSk7Ci19Ci0KLVRFU1RfRihEb3VibGVUZXN0LCBEb3VibGVFcUNhbkRl
c2NyaWJlU2VsZikgewotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBEb3VibGVFcSgyLjApOwotICBF
WFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlKG0xKSk7Ci0gIEVYUEVDVF9F
USgiaXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwotCi0gIE1h
dGNoZXI8ZG91YmxlPiBtMiA9IERvdWJsZUVxKDAuNSk7Ci0gIEVYUEVDVF9FUSgiaXMgYXBwcm94
aW1hdGVseSAwLjUiLCBEZXNjcmliZShtMikpOwotICBFWFBFQ1RfRVEoImlzbid0IGFwcHJveGlt
YXRlbHkgMC41IiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBt
MyA9IERvdWJsZUVxKG5hbjFfKTsKLSAgRVhQRUNUX0VRKCJuZXZlciBtYXRjaGVzIiwgRGVzY3Jp
YmUobTMpKTsKLSAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJlTmVnYXRpb24obTMp
KTsKLX0KLQotVEVTVF9GKERvdWJsZVRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZUVxQ2FuRGVzY3Jp
YmVTZWxmKSB7Ci0gIE1hdGNoZXI8ZG91YmxlPiBtMSA9IE5hblNlbnNpdGl2ZURvdWJsZUVxKDIu
MCk7Ci0gIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmUobTEpKTsKLSAg
RVhQRUNUX0VRKCJpc24ndCBhcHByb3hpbWF0ZWx5IDIiLCBEZXNjcmliZU5lZ2F0aW9uKG0xKSk7
Ci0KLSAgTWF0Y2hlcjxkb3VibGU+IG0yID0gTmFuU2Vuc2l0aXZlRG91YmxlRXEoMC41KTsKLSAg
RVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlKG0yKSk7Ci0gIEVYUEVD
VF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7Ci0K
LSAgTWF0Y2hlcjxkb3VibGU+IG0zID0gTmFuU2Vuc2l0aXZlRG91YmxlRXEobmFuMV8pOwotICBF
WFBFQ1RfRVEoImlzIE5hTiIsIERlc2NyaWJlKG0zKSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgTmFO
IiwgRGVzY3JpYmVOZWdhdGlvbihtMykpOwotfQotCi0vLyBJbnN0YW50aWF0ZSBGbG9hdGluZ1Bv
aW50VGVzdCBmb3IgdGVzdGluZyBmbG9hdHMgd2l0aCBhIHVzZXItc3BlY2lmaWVkCi0vLyBtYXgg
YWJzb2x1dGUgZXJyb3IuCi10eXBlZGVmIEZsb2F0aW5nUG9pbnROZWFyVGVzdDxkb3VibGU+IERv
dWJsZU5lYXJUZXN0OwotCi1URVNUX0YoRG91YmxlTmVhclRlc3QsIERvdWJsZU5lYXJNYXRjaGVz
KSB7Ci0gIFRlc3ROZWFyTWF0Y2hlcygmRG91YmxlTmVhcik7Ci19Ci0KLVRFU1RfRihEb3VibGVO
ZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRG91YmxlTmVhckFwcHJveGltYXRlbHlNYXRjaGVzRG91Ymxl
cykgewotICBUZXN0TmVhck1hdGNoZXMoJk5hblNlbnNpdGl2ZURvdWJsZU5lYXIpOwotfQotCi1U
RVNUX0YoRG91YmxlTmVhclRlc3QsIERvdWJsZU5lYXJDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0
Y2hlcjxkb3VibGU+IG0xID0gRG91YmxlTmVhcigyLjAsIDAuNSk7Ci0gIEVYUEVDVF9FUSgiaXMg
YXBwcm94aW1hdGVseSAyIChhYnNvbHV0ZSBlcnJvciA8PSAwLjUpIiwgRGVzY3JpYmUobTEpKTsK
LSAgRVhQRUNUX0VRKAotICAgICAgImlzbid0IGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJy
b3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBt
MiA9IERvdWJsZU5lYXIoMC41LCAwLjUpOwotICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkg
MC41IChhYnNvbHV0ZSBlcnJvciA8PSAwLjUpIiwgRGVzY3JpYmUobTIpKTsKLSAgRVhQRUNUX0VR
KAotICAgICAgImlzbid0IGFwcHJveGltYXRlbHkgMC41IChhYnNvbHV0ZSBlcnJvciA+IDAuNSki
LCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7Ci0KLSAgTWF0Y2hlcjxkb3VibGU+IG0zID0gRG91Ymxl
TmVhcihuYW4xXywgMC4wKTsKLSAgRVhQRUNUX0VRKCJuZXZlciBtYXRjaGVzIiwgRGVzY3JpYmUo
bTMpKTsKLSAgRVhQRUNUX0VRKCJpcyBhbnl0aGluZyIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsK
LX0KLQotVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBFeHBsYWluc1Jlc3VsdFdoZW5NYXRjaEZhaWxz
KSB7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihEb3VibGVOZWFyKDIuMCwgMC4xKSwgMi4wNSkp
OwotICBFWFBFQ1RfRVEoIndoaWNoIGlzIDAuMiBmcm9tIDIiLCBFeHBsYWluKERvdWJsZU5lYXIo
Mi4wLCAwLjEpLCAyLjIpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAtMC4zIGZyb20gMiIsIEV4
cGxhaW4oRG91YmxlTmVhcigyLjAsIDAuMSksIDEuNykpOwotCi0gIGNvbnN0IHN0ZDo6c3RyaW5n
IGV4cGxhbmF0aW9uID0KLSAgICAgIEV4cGxhaW4oRG91YmxlTmVhcigyLjEsIDFlLTEwKSwgMi4x
ICsgMS4yZS0xMCk7Ci0gIC8vIERpZmZlcmVudCBDKysgaW1wbGVtZW50YXRpb25zIG1heSBwcmlu
dCBmbG9hdGluZy1wb2ludCBudW1iZXJzCi0gIC8vIHNsaWdodGx5IGRpZmZlcmVudGx5LgotICBF
WFBFQ1RfVFJVRShleHBsYW5hdGlvbiA9PSAid2hpY2ggaXMgMS4yZS0xMCBmcm9tIDIuMSIgfHwg
IC8vIEdDQwotICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9PSAid2hpY2ggaXMgMS4yZS0wMTAg
ZnJvbSAyLjEiKSAgIC8vIE1TVkMKLSAgICAgIDw8ICIgd2hlcmUgZXhwbGFuYXRpb24gaXMgXCIi
IDw8IGV4cGxhbmF0aW9uIDw8ICJcIi4iOwotfQotCi1URVNUX0YoRG91YmxlTmVhclRlc3QsIE5h
blNlbnNpdGl2ZURvdWJsZU5lYXJDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxkb3VibGU+
IG0xID0gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigyLjAsIDAuNSk7Ci0gIEVYUEVDVF9FUSgiaXMg
YXBwcm94aW1hdGVseSAyIChhYnNvbHV0ZSBlcnJvciA8PSAwLjUpIiwgRGVzY3JpYmUobTEpKTsK
LSAgRVhQRUNUX0VRKAotICAgICAgImlzbid0IGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJy
b3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBt
MiA9IE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoMC41LCAwLjUpOwotICBFWFBFQ1RfRVEoImlzIGFw
cHJveGltYXRlbHkgMC41IChhYnNvbHV0ZSBlcnJvciA8PSAwLjUpIiwgRGVzY3JpYmUobTIpKTsK
LSAgRVhQRUNUX0VRKAotICAgICAgImlzbid0IGFwcHJveGltYXRlbHkgMC41IChhYnNvbHV0ZSBl
cnJvciA+IDAuNSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7Ci0KLSAgTWF0Y2hlcjxkb3VibGU+
IG0zID0gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcihuYW4xXywgMC4xKTsKLSAgRVhQRUNUX0VRKCJp
cyBOYU4iLCBEZXNjcmliZShtMykpOwotICBFWFBFQ1RfRVEoImlzbid0IE5hTiIsIERlc2NyaWJl
TmVnYXRpb24obTMpKTsKLX0KLQotVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBEb3VibGVOZWFyQ2Fu
bm90TWF0Y2hOYU4pIHsKLSAgLy8gRG91YmxlTmVhciBuZXZlciBtYXRjaGVzIE5hTi4KLSAgTWF0
Y2hlcjxkb3VibGU+IG0gPSBEb3VibGVOZWFyKFBhcmVudFR5cGU6Om5hbjFfLCAwLjEpOwotICBF
WFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
bmFuMl8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjApKTsKLX0KLQotVEVTVF9GKERv
dWJsZU5lYXJUZXN0LCBOYW5TZW5zaXRpdmVEb3VibGVOZWFyQ2FuTWF0Y2hOYU4pIHsKLSAgLy8g
TmFuU2Vuc2l0aXZlRG91YmxlTmVhciB3aWxsIG1hdGNoIE5hTi4KLSAgTWF0Y2hlcjxkb3VibGU+
IG0gPSBOYW5TZW5zaXRpdmVEb3VibGVOZWFyKG5hbjFfLCAwLjEpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMobmFuMV8pKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5hbjJfKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Ci19Ci0KLVRFU1QoUG9pbnRlZVRlc3QsIFJhd1Bv
aW50ZXIpIHsKLSAgY29uc3QgTWF0Y2hlcjxpbnQqPiBtID0gUG9pbnRlZShHZSgwKSk7Ci0KLSAg
aW50IG4gPSAxOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJm4pKTsKLSAgbiA9IC0xOwotICBF
WFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZuKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVM
TCkpOwotfQotCi1URVNUKFBvaW50ZWVUZXN0LCBSYXdQb2ludGVyVG9Db25zdCkgewotICBjb25z
dCBNYXRjaGVyPGNvbnN0IGRvdWJsZSo+IG0gPSBQb2ludGVlKEdlKDApKTsKLQotICBkb3VibGUg
eCA9IDE7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmeCkpOwotICB4ID0gLTE7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoJngpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7
Ci19Ci0KLVRFU1QoUG9pbnRlZVRlc3QsIFJlZmVyZW5jZVRvQ29uc3RSYXdQb2ludGVyKSB7Ci0g
IGNvbnN0IE1hdGNoZXI8aW50KiBjb25zdCAmPiBtID0gUG9pbnRlZShHZSgwKSk7Ci0KLSAgaW50
IG4gPSAxOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJm4pKTsKLSAgbiA9IC0xOwotICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKCZuKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTlVMTCkp
OwotfQotCi1URVNUKFBvaW50ZWVUZXN0LCBSZWZlcmVuY2VUb05vbkNvbnN0UmF3UG9pbnRlcikg
ewotICBjb25zdCBNYXRjaGVyPGRvdWJsZSogJj4gbSA9IFBvaW50ZWUoR2UoMCkpOwotCi0gIGRv
dWJsZSB4ID0gMS4wOwotICBkb3VibGUqIHAgPSAmeDsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KHApKTsKLSAgeCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHApKTsKLSAgcCA9IE5V
TEw7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMocCkpOwotfQotCi1NQVRDSEVSX1AoRmllbGRJ
SXMsIGlubmVyX21hdGNoZXIsICIiKSB7Ci0gIHJldHVybiBFeHBsYWluTWF0Y2hSZXN1bHQoaW5u
ZXJfbWF0Y2hlciwgYXJnLmksIHJlc3VsdF9saXN0ZW5lcik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNf
UlRUSQotCi1URVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgU2FtZVR5cGUpIHsKLSAgRGVyaXZl
ZCBkZXJpdmVkOwotICBkZXJpdmVkLmkgPSA0OwotCi0gIC8vIFJpZ2h0IHR5cGUuIEEgcG9pbnRl
ciBpcyBwYXNzZWQgZG93bi4KLSAgQmFzZSogYXNfYmFzZV9wdHIgPSAmZGVyaXZlZDsKLSAgRVhQ
RUNUX1RIQVQoYXNfYmFzZV9wdHIsIFdoZW5EeW5hbWljQ2FzdFRvPERlcml2ZWQqPihOb3QoSXNO
dWxsKCkpKSk7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBXaGVuRHluYW1pY0Nhc3RUbzxE
ZXJpdmVkKj4oUG9pbnRlZShGaWVsZElJcyg0KSkpKTsKLSAgRVhQRUNUX1RIQVQoYXNfYmFzZV9w
dHIsCi0gICAgICAgICAgICAgIE5vdChXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oUG9pbnRl
ZShGaWVsZElJcyg1KSkpKSk7Ci19Ci0KLVRFU1QoV2hlbkR5bmFtaWNDYXN0VG9UZXN0LCBXcm9u
Z1R5cGVzKSB7Ci0gIEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBPdGhlckRlcml2
ZWQgb3RoZXJfZGVyaXZlZDsKLQotICAvLyBXcm9uZyB0eXBlcy4gTlVMTCBpcyBwYXNzZWQuCi0g
IEVYUEVDVF9USEFUKCZiYXNlLCBOb3QoV2hlbkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+KFBvaW50
ZWUoXykpKSk7Ci0gIEVYUEVDVF9USEFUKCZiYXNlLCBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVk
Kj4oSXNOdWxsKCkpKTsKLSAgQmFzZSogYXNfYmFzZV9wdHIgPSAmZGVyaXZlZDsKLSAgRVhQRUNU
X1RIQVQoYXNfYmFzZV9wdHIsIE5vdChXaGVuRHluYW1pY0Nhc3RUbzxPdGhlckRlcml2ZWQqPihQ
b2ludGVlKF8pKSkpOwotICBFWFBFQ1RfVEhBVChhc19iYXNlX3B0ciwgV2hlbkR5bmFtaWNDYXN0
VG88T3RoZXJEZXJpdmVkKj4oSXNOdWxsKCkpKTsKLSAgYXNfYmFzZV9wdHIgPSAmb3RoZXJfZGVy
aXZlZDsKLSAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIE5vdChXaGVuRHluYW1pY0Nhc3RUbzxE
ZXJpdmVkKj4oUG9pbnRlZShfKSkpKTsKLSAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIFdoZW5E
eW5hbWljQ2FzdFRvPERlcml2ZWQqPihJc051bGwoKSkpOwotfQotCi1URVNUKFdoZW5EeW5hbWlj
Q2FzdFRvVGVzdCwgQWxyZWFkeU51bGwpIHsKLSAgLy8gQWxyZWFkeSBOVUxMLgotICBCYXNlKiBh
c19iYXNlX3B0ciA9IE5VTEw7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBXaGVuRHluYW1p
Y0Nhc3RUbzxEZXJpdmVkKj4oSXNOdWxsKCkpKTsKLX0KLQotc3RydWN0IEFtYmlndW91c0Nhc3RU
eXBlcyB7Ci0gIGNsYXNzIFZpcnR1YWxEZXJpdmVkIDogcHVibGljIHZpcnR1YWwgQmFzZSB7fTsK
LSAgY2xhc3MgRGVyaXZlZFN1YjEgOiBwdWJsaWMgVmlydHVhbERlcml2ZWQge307Ci0gIGNsYXNz
IERlcml2ZWRTdWIyIDogcHVibGljIFZpcnR1YWxEZXJpdmVkIHt9OwotICBjbGFzcyBNYW55RGVy
aXZlZEluSGllcmFyY2h5IDogcHVibGljIERlcml2ZWRTdWIxLCBwdWJsaWMgRGVyaXZlZFN1YjIg
e307Ci19OwotCi1URVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgQW1iaWd1b3VzQ2FzdCkgewot
ICBBbWJpZ3VvdXNDYXN0VHlwZXM6OkRlcml2ZWRTdWIxIHN1YjE7Ci0gIEFtYmlndW91c0Nhc3RU
eXBlczo6TWFueURlcml2ZWRJbkhpZXJhcmNoeSBtYW55X2Rlcml2ZWQ7Ci0gIC8vIE11bHRpcGx5
IGRlcml2ZWQgZnJvbSBCYXNlLiBkeW5hbWljX2Nhc3Q8PiByZXR1cm5zIE5VTEwuCi0gIEJhc2Uq
IGFzX2Jhc2VfcHRyID0KLSAgICAgIHN0YXRpY19jYXN0PEFtYmlndW91c0Nhc3RUeXBlczo6RGVy
aXZlZFN1YjEqPigmbWFueV9kZXJpdmVkKTsKLSAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsCi0g
ICAgICAgICAgICAgIFdoZW5EeW5hbWljQ2FzdFRvPEFtYmlndW91c0Nhc3RUeXBlczo6VmlydHVh
bERlcml2ZWQqPihJc051bGwoKSkpOwotICBhc19iYXNlX3B0ciA9ICZzdWIxOwotICBFWFBFQ1Rf
VEhBVCgKLSAgICAgIGFzX2Jhc2VfcHRyLAotICAgICAgV2hlbkR5bmFtaWNDYXN0VG88QW1iaWd1
b3VzQ2FzdFR5cGVzOjpWaXJ0dWFsRGVyaXZlZCo+KE5vdChJc051bGwoKSkpKTsKLX0KLQotVEVT
VChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIERlc2NyaWJlKSB7Ci0gIE1hdGNoZXI8QmFzZSo+IG1h
dGNoZXIgPSBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oUG9pbnRlZShfKSk7Ci0gIGNvbnN0
IHN0cmluZyBwcmVmaXggPQotICAgICAgIndoZW4gZHluYW1pY19jYXN0IHRvICIgKyBpbnRlcm5h
bDo6R2V0VHlwZU5hbWU8RGVyaXZlZCo+KCkgKyAiLCAiOwotICBFWFBFQ1RfRVEocHJlZml4ICsg
InBvaW50cyB0byBhIHZhbHVlIHRoYXQgaXMgYW55dGhpbmciLCBEZXNjcmliZShtYXRjaGVyKSk7
Ci0gIEVYUEVDVF9FUShwcmVmaXggKyAiZG9lcyBub3QgcG9pbnQgdG8gYSB2YWx1ZSB0aGF0IGlz
IGFueXRoaW5nIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obWF0Y2hlcikpOwotfQot
Ci1URVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgRXhwbGFpbikgewotICBNYXRjaGVyPEJhc2Uq
PiBtYXRjaGVyID0gV2hlbkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+KFBvaW50ZWUoXykpOwotICBC
YXNlKiBudWxsID0gTlVMTDsKLSAgRVhQRUNUX1RIQVQoRXhwbGFpbihtYXRjaGVyLCBudWxsKSwg
SGFzU3Vic3RyKCJOVUxMIikpOwotICBEZXJpdmVkIGRlcml2ZWQ7Ci0gIEVYUEVDVF9UUlVFKG1h
dGNoZXIuTWF0Y2hlcygmZGVyaXZlZCkpOwotICBFWFBFQ1RfVEhBVChFeHBsYWluKG1hdGNoZXIs
ICZkZXJpdmVkKSwgSGFzU3Vic3RyKCJ3aGljaCBwb2ludHMgdG8gIikpOwotCi0gIC8vIFdpdGgg
cmVmZXJlbmNlcywgdGhlIG1hdGNoZXIgaXRzZWxmIGNhbiBmYWlsLiBUZXN0IGZvciB0aGF0IG9u
ZS4KLSAgTWF0Y2hlcjxjb25zdCBCYXNlJj4gcmVmX21hdGNoZXIgPSBXaGVuRHluYW1pY0Nhc3RU
bzxjb25zdCBPdGhlckRlcml2ZWQmPihfKTsKLSAgRVhQRUNUX1RIQVQoRXhwbGFpbihyZWZfbWF0
Y2hlciwgZGVyaXZlZCksCi0gICAgICAgICAgICAgIEhhc1N1YnN0cigid2hpY2ggY2Fubm90IGJl
IGR5bmFtaWNfY2FzdCIpKTsKLX0KLQotVEVTVChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIEdvb2RS
ZWZlcmVuY2UpIHsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBkZXJpdmVkLmkgPSA0OwotICBCYXNl
JiBhc19iYXNlX3JlZiA9IGRlcml2ZWQ7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcmVmLCBXaGVu
RHluYW1pY0Nhc3RUbzxjb25zdCBEZXJpdmVkJj4oRmllbGRJSXMoNCkpKTsKLSAgRVhQRUNUX1RI
QVQoYXNfYmFzZV9yZWYsIFdoZW5EeW5hbWljQ2FzdFRvPGNvbnN0IERlcml2ZWQmPihOb3QoRmll
bGRJSXMoNSkpKSk7Ci19Ci0KLVRFU1QoV2hlbkR5bmFtaWNDYXN0VG9UZXN0LCBCYWRSZWZlcmVu
Y2UpIHsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBCYXNlJiBhc19iYXNlX3JlZiA9IGRlcml2ZWQ7
Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcmVmLCBOb3QoV2hlbkR5bmFtaWNDYXN0VG88Y29uc3Qg
T3RoZXJEZXJpdmVkJj4oXykpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQotCi0v
LyBNaW5pbWFsIGNvbnN0LXByb3BhZ2F0aW5nIHBvaW50ZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIENvbnN0UHJvcGFnYXRpbmdQdHIgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBUIGVs
ZW1lbnRfdHlwZTsKLQotICBDb25zdFByb3BhZ2F0aW5nUHRyKCkgOiB2YWxfKCkge30KLSAgZXhw
bGljaXQgQ29uc3RQcm9wYWdhdGluZ1B0cihUKiB0KSA6IHZhbF8odCkge30KLSAgQ29uc3RQcm9w
YWdhdGluZ1B0cihjb25zdCBDb25zdFByb3BhZ2F0aW5nUHRyJiBvdGhlcikgOiB2YWxfKG90aGVy
LnZhbF8pIHt9Ci0KLSAgVCogZ2V0KCkgeyByZXR1cm4gdmFsXzsgfQotICBUJiBvcGVyYXRvcioo
KSB7IHJldHVybiAqdmFsXzsgfQotICAvLyBNb3N0IHNtYXJ0IHBvaW50ZXJzIHJldHVybiBub24t
Y29uc3QgVCogYW5kIFQmIGZyb20gdGhlIG5leHQgbWV0aG9kcy4KLSAgY29uc3QgVCogZ2V0KCkg
Y29uc3QgeyByZXR1cm4gdmFsXzsgfQotICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiAqdmFsXzsgfQotCi0gcHJpdmF0ZToKLSAgVCogdmFsXzsKLX07Ci0KLVRFU1QoUG9pbnRl
ZVRlc3QsIFdvcmtzV2l0aENvbnN0UHJvcGFnYXRpbmdQb2ludGVycykgewotICBjb25zdCBNYXRj
aGVyPCBDb25zdFByb3BhZ2F0aW5nUHRyPGludD4gPiBtID0gUG9pbnRlZShMdCg1KSk7Ci0gIGlu
dCB0aHJlZSA9IDM7Ci0gIGNvbnN0IENvbnN0UHJvcGFnYXRpbmdQdHI8aW50PiBjbygmdGhyZWUp
OwotICBDb25zdFByb3BhZ2F0aW5nUHRyPGludD4gbygmdGhyZWUpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMobykpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoY28pKTsKLSAgKm8gPSA2Owot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhD
b25zdFByb3BhZ2F0aW5nUHRyPGludD4oKSkpOwotfQotCi1URVNUKFBvaW50ZWVUZXN0LCBOZXZl
ck1hdGNoZXNOdWxsKSB7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBQb2ludGVl
KF8pOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB3ZSBjYW4gd3JpdGUgUG9pbnRlZSh2YWx1ZSkgaW5zdGVhZCBvZiBQb2ludGVlKEVxKHZhbHVl
KSkuCi1URVNUKFBvaW50ZWVUZXN0LCBNYXRjaGVzQWdhaW5zdEFWYWx1ZSkgewotICBjb25zdCBN
YXRjaGVyPGludCo+IG0gPSBQb2ludGVlKDUpOwotCi0gIGludCBuID0gNTsKLSAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKCZuKSk7Ci0gIG4gPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygm
bikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotVEVTVChQb2ludGVl
VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50Kj4gbSA9IFBvaW50
ZWUoR3QoMykpOwotICBFWFBFQ1RfRVEoInBvaW50cyB0byBhIHZhbHVlIHRoYXQgaXMgPiAzIiwg
RGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoImRvZXMgbm90IHBvaW50IHRvIGEgdmFsdWUgdGhh
dCBpcyA+IDMiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1Qo
UG9pbnRlZVRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewotICBjb25zdCBNYXRjaGVyPGNv
bnN0IHN0ZDo6c3RyaW5nKj4gbSA9IFBvaW50ZWUoU3RhcnRzV2l0aCgiSGkiKSk7Ci0KLSAgRVhQ
RUNUX0VRKCIiLCBFeHBsYWluKG0sIHN0YXRpY19jYXN0PGNvbnN0IHN0ZDo6c3RyaW5nKj4oTlVM
TCkpKTsKLQotICBjb25zdCBNYXRjaGVyPGxvbmcqPiBtMiA9IFBvaW50ZWUoR3JlYXRlclRoYW4o
MSkpOyAgLy8gTk9MSU5UCi0gIGxvbmcgbiA9IDM7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKCJ3
aGljaCBwb2ludHMgdG8gMyIgKyBPZlR5cGUoImxvbmciKSArICIsIHdoaWNoIGlzIDIgbW9yZSB0
aGFuIDEiLAotICAgICAgICAgICAgRXhwbGFpbihtMiwgJm4pKTsKLX0KLQotVEVTVChQb2ludGVl
VGVzdCwgQWx3YXlzRXhwbGFpbnNQb2ludGVlKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50Kj4gbSA9
IFBvaW50ZWUoMCk7Ci0gIGludCBuID0gNDI7Ci0gIEVYUEVDVF9FUSgid2hpY2ggcG9pbnRzIHRv
IDQyIiArIE9mVHlwZSgiaW50IiksIEV4cGxhaW4obSwgJm4pKTsKLX0KLQotLy8gQW4gdW5jb3B5
YWJsZSBjbGFzcy4KLWNsYXNzIFVuY29weWFibGUgewotIHB1YmxpYzoKLSAgVW5jb3B5YWJsZSgp
IDogdmFsdWVfKC0xKSB7fQotICBleHBsaWNpdCBVbmNvcHlhYmxlKGludCBhX3ZhbHVlKSA6IHZh
bHVlXyhhX3ZhbHVlKSB7fQotCi0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQotICB2b2lkIHNldF92YWx1ZShpbnQgaSkgeyB2YWx1ZV8gPSBpOyB9Ci0KLSBwcml2YXRlOgot
ICBpbnQgdmFsdWVfOwotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuY29weWFi
bGUpOwotfTsKLQotLy8gUmV0dXJucyB0cnVlIGlmZiB4LnZhbHVlKCkgaXMgcG9zaXRpdmUuCi1i
b29sIFZhbHVlSXNQb3NpdGl2ZShjb25zdCBVbmNvcHlhYmxlJiB4KSB7IHJldHVybiB4LnZhbHVl
KCkgPiAwOyB9Ci0KLU1BVENIRVJfUChVbmNvcHlhYmxlSXMsIGlubmVyX21hdGNoZXIsICIiKSB7
Ci0gIHJldHVybiBFeHBsYWluTWF0Y2hSZXN1bHQoaW5uZXJfbWF0Y2hlciwgYXJnLnZhbHVlKCks
IHJlc3VsdF9saXN0ZW5lcik7Ci19Ci0KLS8vIEEgdXNlci1kZWZpbmVkIHN0cnVjdCBmb3IgdGVz
dGluZyBGaWVsZCgpLgotc3RydWN0IEFTdHJ1Y3QgewotICBBU3RydWN0KCkgOiB4KDApLCB5KDEu
MCksIHooNSksIHAoTlVMTCkge30KLSAgQVN0cnVjdChjb25zdCBBU3RydWN0JiByaHMpCi0gICAg
ICA6IHgocmhzLngpLCB5KHJocy55KSwgeihyaHMuei52YWx1ZSgpKSwgcChyaHMucCkge30KLQot
ICBpbnQgeDsgICAgICAgICAgIC8vIEEgbm9uLWNvbnN0IGZpZWxkLgotICBjb25zdCBkb3VibGUg
eTsgIC8vIEEgY29uc3QgZmllbGQuCi0gIFVuY29weWFibGUgejsgICAgLy8gQW4gdW5jb3B5YWJs
ZSBmaWVsZC4KLSAgY29uc3QgY2hhciogcDsgICAvLyBBIHBvaW50ZXIgZmllbGQuCi0KLSBwcml2
YXRlOgotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEFTdHJ1Y3QpOwotfTsKLQotLy8gQSBkZXJp
dmVkIHN0cnVjdCBmb3IgdGVzdGluZyBGaWVsZCgpLgotc3RydWN0IERlcml2ZWRTdHJ1Y3QgOiBw
dWJsaWMgQVN0cnVjdCB7Ci0gIGNoYXIgY2g7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExP
V19BU1NJR05fKERlcml2ZWRTdHJ1Y3QpOwotfTsKLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9v
OjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIGZpZWxkIGlzIG5vbi1jb25zdC4KLVRFU1QoRmllbGRU
ZXN0LCBXb3Jrc0Zvck5vbkNvbnN0RmllbGQpIHsKLSAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmll
bGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyhhKSk7Ci0gIGEueCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIGZp
ZWxkIGlzIGNvbnN0LgotVEVTVChGaWVsZFRlc3QsIFdvcmtzRm9yQ29uc3RGaWVsZCkgewotICBB
U3RydWN0IGE7Ci0KLSAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmllbGQoJkFTdHJ1Y3Q6OnksIEdl
KDAuMCkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOwotICBtID0gRmllbGQoJkFTdHJ1
Y3Q6OnksIExlKDAuMCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIGZpZWxkIGlzIG5v
dCBjb3B5YWJsZS4KLVRFU1QoRmllbGRUZXN0LCBXb3Jrc0ZvclVuY29weWFibGVGaWVsZCkgewot
ICBBU3RydWN0IGE7Ci0KLSAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmllbGQoJkFTdHJ1Y3Q6Onos
IFRydWx5KFZhbHVlSXNQb3NpdGl2ZSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoYSkpOwot
ICBtID0gRmllbGQoJkFTdHJ1Y3Q6OnosIE5vdChUcnVseShWYWx1ZUlzUG9zaXRpdmUpKSk7Ci0g
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEZpZWxkKCZG
b286OmZpZWxkLCAuLi4pIHdvcmtzIHdoZW4gZmllbGQgaXMgYSBwb2ludGVyLgotVEVTVChGaWVs
ZFRlc3QsIFdvcmtzRm9yUG9pbnRlckZpZWxkKSB7Ci0gIC8vIE1hdGNoaW5nIGFnYWluc3QgTlVM
TC4KLSAgTWF0Y2hlcjxBU3RydWN0PiBtID0gRmllbGQoJkFTdHJ1Y3Q6OnAsIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihOVUxMKSk7Ci0gIEFTdHJ1Y3QgYTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKGEpKTsKLSAgYS5wID0gImhpIjsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Ci0K
LSAgLy8gTWF0Y2hpbmcgYSBwb2ludGVyIHRoYXQgaXMgbm90IE5VTEwuCi0gIG0gPSBGaWVsZCgm
QVN0cnVjdDo6cCwgU3RhcnRzV2l0aCgiaGkiKSk7Ci0gIGEucCA9ICJoaWxsIjsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKGEpKTsKLSAgYS5wID0gImhvbGUiOwotICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIHdvcmtzIHdoZW4gdGhlIG9i
amVjdCBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlLgotVEVTVChGaWVsZFRlc3QsIFdvcmtzRm9yQnlS
ZWZBcmd1bWVudCkgewotICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QmPiBtID0gRmllbGQoJkFTdHJ1
Y3Q6OngsIEdlKDApKTsKLQotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhh
KSk7Ci0gIGEueCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVu
dCdzIHR5cGUKLS8vIGlzIGEgc3ViLXR5cGUgb2YgRm9vLgotVEVTVChGaWVsZFRlc3QsIFdvcmtz
Rm9yQXJndW1lbnRPZlN1YlR5cGUpIHsKLSAgLy8gTm90ZSB0aGF0IHRoZSBtYXRjaGVyIGV4cGVj
dHMgRGVyaXZlZFN0cnVjdCBidXQgd2Ugc2F5IEFTdHJ1Y3QKLSAgLy8gaW5zaWRlIEZpZWxkKCku
Ci0gIE1hdGNoZXI8Y29uc3QgRGVyaXZlZFN0cnVjdCY+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwg
R2UoMCkpOwotCi0gIERlcml2ZWRTdHJ1Y3QgZDsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGQp
KTsKLSAgZC54ID0gLTE7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoZCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEZpZWxkKCZGb286OmZpZWxkLCBtKSB3b3JrcyB3aGVuIGZpZWxkJ3MgdHlwZSBh
bmQgbSdzCi0vLyBhcmd1bWVudCB0eXBlIGFyZSBjb21wYXRpYmxlIGJ1dCBub3QgdGhlIHNhbWUu
Ci1URVNUKEZpZWxkVGVzdCwgV29ya3NGb3JDb21wYXRpYmxlTWF0Y2hlclR5cGUpIHsKLSAgLy8g
VGhlIGZpZWxkIGlzIGFuIGludCwgYnV0IHRoZSBpbm5lciBtYXRjaGVyIGV4cGVjdHMgYSBzaWdu
ZWQgY2hhci4KLSAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Jj4gbSA9IEZpZWxkKCZBU3RydWN0Ojp4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hlcjxzaWduZWQgY2hh
cj4oR2UoMCkpKTsKLQotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7
Ci0gIGEueCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBGaWVsZCgpIGNhbiBkZXNjcmliZSBpdHNlbGYuCi1URVNUKEZpZWxkVGVzdCwgQ2Fu
RGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCY+IG0gPSBGaWVsZCgmQVN0
cnVjdDo6eCwgR2UoMCkpOwotCi0gIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVu
IGZpZWxkIGlzID49IDAiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0
IHdob3NlIGdpdmVuIGZpZWxkIGlzbid0ID49IDAiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQuCi1U
RVNUKEZpZWxkVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7Ci0gIE1hdGNoZXI8Y29uc3Qg
QVN0cnVjdCY+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwgR2UoMCkpOwotCi0gIEFTdHJ1Y3QgYTsK
LSAgYS54ID0gMTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBnaXZlbiBmaWVsZCBpcyAxIiArIE9mVHlw
ZSgiaW50IiksIEV4cGxhaW4obSwgYSkpOwotCi0gIG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwgR3Jl
YXRlclRoYW4oMCkpOwotICBFWFBFQ1RfRVEoCi0gICAgICAid2hvc2UgZ2l2ZW4gZmllbGQgaXMg
MSIgKyBPZlR5cGUoImludCIpICsgIiwgd2hpY2ggaXMgMSBtb3JlIHRoYW4gMCIsCi0gICAgICBF
eHBsYWluKG0sIGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIHdvcmtzIHdoZW4gdGhl
IGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBjb25zdC4KLVRFU1QoRmllbGRGb3JQb2ludGVyVGVz
dCwgV29ya3NGb3JQb2ludGVyVG9Db25zdCkgewotICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QqPiBt
ID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9U
UlVFKG0uTWF0Y2hlcygmYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cygmYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEZpZWxkKCkgd29ya3Mgd2hlbiB0aGUgYXJndW1l
bnQgaXMgYSBwb2ludGVyIHRvIG5vbi1jb25zdC4KLVRFU1QoRmllbGRGb3JQb2ludGVyVGVzdCwg
V29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgewotICBNYXRjaGVyPEFTdHJ1Y3QqPiBtID0gRmll
bGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcygmYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygmYSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEZpZWxkKCkgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQgaXMg
YSByZWZlcmVuY2UgdG8gYSBjb25zdCBwb2ludGVyLgotVEVTVChGaWVsZEZvclBvaW50ZXJUZXN0
LCBXb3Jrc0ZvclJlZmVyZW5jZVRvQ29uc3RQb2ludGVyKSB7Ci0gIE1hdGNoZXI8QVN0cnVjdCog
Y29uc3QmPiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBBU3RydWN0IGE7Ci0g
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNF
KG0uTWF0Y2hlcygmYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEZpZWxkKCkgZG9lcyBub3QgbWF0
Y2ggdGhlIE5VTEwgcG9pbnRlci4KLVRFU1QoRmllbGRGb3JQb2ludGVyVGVzdCwgRG9lc05vdE1h
dGNoTnVsbCkgewotICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QqPiBtID0gRmllbGQoJkFTdHJ1Y3Q6
OngsIF8pOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCdzIHR5
cGUKLS8vIGlzIGEgc3ViLXR5cGUgb2YgY29uc3QgRm9vKi4KLVRFU1QoRmllbGRGb3JQb2ludGVy
VGVzdCwgV29ya3NGb3JBcmd1bWVudE9mU3ViVHlwZSkgewotICAvLyBOb3RlIHRoYXQgdGhlIG1h
dGNoZXIgZXhwZWN0cyBEZXJpdmVkU3RydWN0IGJ1dCB3ZSBzYXkgQVN0cnVjdAotICAvLyBpbnNp
ZGUgRmllbGQoKS4KLSAgTWF0Y2hlcjxEZXJpdmVkU3RydWN0Kj4gbSA9IEZpZWxkKCZBU3RydWN0
Ojp4LCBHZSgwKSk7Ci0KLSAgRGVyaXZlZFN0cnVjdCBkOwotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoJmQpKTsKLSAgZC54ID0gLTE7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoJmQpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGNhbiBkZXNjcmliZSBpdHNlbGYgd2hlbiB1c2VkIHRv
IG1hdGNoIGEgcG9pbnRlci4KLVRFU1QoRmllbGRGb3JQb2ludGVyVGVzdCwgQ2FuRGVzY3JpYmVT
ZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCo+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwg
R2UoMCkpOwotCi0gIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIGZpZWxkIGlz
ID49IDAiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdp
dmVuIGZpZWxkIGlzbid0ID49IDAiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBGaWVsZCgpIGNhbiBleHBsYWluIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgYSBwb2lu
dGVyLgotVEVTVChGaWVsZEZvclBvaW50ZXJUZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHQpIHsK
LSAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Kj4gbSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7
Ci0KLSAgQVN0cnVjdCBhOwotICBhLnggPSAxOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQVN0cnVjdCo+KE5VTEwpKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2gg
cG9pbnRzIHRvIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBmaWVsZCBpcyAxIiArIE9mVHlwZSgiaW50
IiksCi0gICAgICAgICAgICBFeHBsYWluKG0sICZhKSk7Ci0KLSAgbSA9IEZpZWxkKCZBU3RydWN0
Ojp4LCBHcmVhdGVyVGhhbigwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggcG9pbnRzIHRvIGFuIG9i
amVjdCB3aG9zZSBnaXZlbiBmaWVsZCBpcyAxIiArIE9mVHlwZSgiaW50IikgKwotICAgICAgICAg
ICAgIiwgd2hpY2ggaXMgMSBtb3JlIHRoYW4gMCIsIEV4cGxhaW4obSwgJmEpKTsKLX0KLQotLy8g
QSB1c2VyLWRlZmluZWQgY2xhc3MgZm9yIHRlc3RpbmcgUHJvcGVydHkoKS4KLWNsYXNzIEFDbGFz
cyB7Ci0gcHVibGljOgotICBBQ2xhc3MoKSA6IG5fKDApIHt9Ci0KLSAgLy8gQSBnZXR0ZXIgdGhh
dCByZXR1cm5zIGEgbm9uLXJlZmVyZW5jZS4KLSAgaW50IG4oKSBjb25zdCB7IHJldHVybiBuXzsg
fQotCi0gIHZvaWQgc2V0X24oaW50IG5ld19uKSB7IG5fID0gbmV3X247IH0KLQotICAvLyBBIGdl
dHRlciB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8gY29uc3QuCi0gIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzKCkgY29uc3QgeyByZXR1cm4gc187IH0KLQotICB2b2lkIHNldF9zKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuZXdfcykgeyBzXyA9IG5ld19zOyB9Ci0KLSAgLy8gQSBnZXR0ZXIgdGhhdCByZXR1
cm5zIGEgcmVmZXJlbmNlIHRvIG5vbi1jb25zdC4KLSAgZG91YmxlJiB4KCkgY29uc3QgeyByZXR1
cm4geF87IH0KLSBwcml2YXRlOgotICBpbnQgbl87Ci0gIHN0ZDo6c3RyaW5nIHNfOwotCi0gIHN0
YXRpYyBkb3VibGUgeF87Ci19OwotCi1kb3VibGUgQUNsYXNzOjp4XyA9IDAuMDsKLQotLy8gQSBk
ZXJpdmVkIGNsYXNzIGZvciB0ZXN0aW5nIFByb3BlcnR5KCkuCi1jbGFzcyBEZXJpdmVkQ2xhc3Mg
OiBwdWJsaWMgQUNsYXNzIHsKLSBwdWJsaWM6Ci0gIGludCBrKCkgY29uc3QgeyByZXR1cm4ga187
IH0KLSBwcml2YXRlOgotICBpbnQga187Ci19OwotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZG
b286OnByb3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gcHJvcGVydHkoKQotLy8gcmV0dXJucyBhIG5v
bi1yZWZlcmVuY2UuCi1URVNUKFByb3BlcnR5VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2VQcm9w
ZXJ0eSkgewotICBNYXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpu
LCBHZSgwKSk7Ci0KLSAgQUNsYXNzIGE7Ci0gIGEuc2V0X24oMSk7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyhhKSk7Ci0KLSAgYS5zZXRfbigtMSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
YSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZGb286OnByb3BlcnR5LCAuLi4pIHdv
cmtzIHdoZW4gcHJvcGVydHkoKQotLy8gcmV0dXJucyBhIHJlZmVyZW5jZSB0byBjb25zdC4KLVRF
U1QoUHJvcGVydHlUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvQ29uc3RQcm9wZXJ0eSkgewotICBN
YXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpzLCBTdGFydHNXaXRo
KCJoaSIpKTsKLQotICBBQ2xhc3MgYTsKLSAgYS5zZXRfcygiaGlsbCIpOwotICBFWFBFQ1RfVFJV
RShtLk1hdGNoZXMoYSkpOwotCi0gIGEuc2V0X3MoImhvbGUiKTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcyhhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJvcGVydHkoJkZvbzo6cHJvcGVydHks
IC4uLikgd29ya3Mgd2hlbiBwcm9wZXJ0eSgpCi0vLyByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIG5v
bi1jb25zdC4KLVRFU1QoUHJvcGVydHlUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvTm9uQ29uc3RQ
cm9wZXJ0eSkgewotICBkb3VibGUgeCA9IDAuMDsKLSAgQUNsYXNzIGE7Ci0KLSAgTWF0Y2hlcjxj
b25zdCBBQ2xhc3MmPiBtID0gUHJvcGVydHkoJkFDbGFzczo6eCwgUmVmKHgpKTsKLSAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Ci0KLSAgbSA9IFByb3BlcnR5KCZBQ2xhc3M6OngsIE5vdChS
ZWYoeCkpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBQcm9wZXJ0eSgmRm9vOjpwcm9wZXJ0eSwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBp
cwotLy8gcGFzc2VkIGJ5IHZhbHVlLgotVEVTVChQcm9wZXJ0eVRlc3QsIFdvcmtzRm9yQnlWYWx1
ZUFyZ3VtZW50KSB7Ci0gIE1hdGNoZXI8QUNsYXNzPiBtID0gUHJvcGVydHkoJkFDbGFzczo6cywg
U3RhcnRzV2l0aCgiaGkiKSk7Ci0KLSAgQUNsYXNzIGE7Ci0gIGEuc2V0X3MoImhpbGwiKTsKLSAg
RVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLQotICBhLnNldF9zKCJob2xlIik7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZGb286
OnByb3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50J3MKLS8vIHR5cGUgaXMgYSBz
dWItdHlwZSBvZiBGb28uCi1URVNUKFByb3BlcnR5VGVzdCwgV29ya3NGb3JBcmd1bWVudE9mU3Vi
VHlwZSkgewotICAvLyBUaGUgbWF0Y2hlciBleHBlY3RzIGEgRGVyaXZlZENsYXNzLCBidXQgaW5z
aWRlIHRoZSBQcm9wZXJ0eSgpIHdlCi0gIC8vIHNheSBBQ2xhc3MuCi0gIE1hdGNoZXI8Y29uc3Qg
RGVyaXZlZENsYXNzJj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKLQotICBEZXJp
dmVkQ2xhc3MgZDsKLSAgZC5zZXRfbigxKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGQpKTsK
LQotICBkLnNldF9uKC0xKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhkKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgUHJvcGVydHkoJkZvbzo6cHJvcGVydHksIG0pIHdvcmtzIHdoZW4gcHJvcGVy
dHkoKSdzIHR5cGUKLS8vIGFuZCBtJ3MgYXJndW1lbnQgdHlwZSBhcmUgY29tcGF0aWJsZSBidXQg
ZGlmZmVyZW50LgotVEVTVChQcm9wZXJ0eVRlc3QsIFdvcmtzRm9yQ29tcGF0aWJsZU1hdGNoZXJU
eXBlKSB7Ci0gIC8vIG4oKSByZXR1cm5zIGFuIGludCBidXQgdGhlIGlubmVyIG1hdGNoZXIgZXhw
ZWN0cyBhIHNpZ25lZCBjaGFyLgotICBNYXRjaGVyPGNvbnN0IEFDbGFzcyY+IG0gPSBQcm9wZXJ0
eSgmQUNsYXNzOjpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aGVyPHNpZ25lZCBjaGFyPihHZSgwKSkpOwotCi0gIEFDbGFzcyBhOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoYSkpOwotICBhLnNldF9uKC0xKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhh
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJvcGVydHkoKSBjYW4gZGVzY3JpYmUgaXRzZWxmLgot
VEVTVChQcm9wZXJ0eVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IEFD
bGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0KLSAgRVhQRUNUX0VRKCJp
cyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgPj0gMCIsIERlc2NyaWJlKG0pKTsK
LSAgRVhQRUNUX0VRKCJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXNuJ3QgPj0g
MCIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBQcm9wZXJ0eSgpIGNhbiBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQuCi1URVNUKFByb3BlcnR5
VGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7Ci0gIE1hdGNoZXI8Y29uc3QgQUNsYXNzJj4g
bSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKLQotICBBQ2xhc3MgYTsKLSAgYS5zZXRf
bigxKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpcyAxIiArIE9mVHlwZSgi
aW50IiksIEV4cGxhaW4obSwgYSkpOwotCi0gIG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHcmVh
dGVyVGhhbigwKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJ3aG9zZSBnaXZlbiBwcm9wZXJ0eSBp
cyAxIiArIE9mVHlwZSgiaW50IikgKyAiLCB3aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwKLSAgICAg
IEV4cGxhaW4obSwgYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCkgd29ya3Mgd2hl
biB0aGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGNvbnN0LgotVEVTVChQcm9wZXJ0eUZvclBv
aW50ZXJUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0KSB7Ci0gIE1hdGNoZXI8Y29uc3QgQUNs
YXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKLQotICBBQ2xhc3MgYTsKLSAg
YS5zZXRfbigxKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZhKSk7Ci0KLSAgYS5zZXRfbigt
MSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoJmEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQ
cm9wZXJ0eSgpIHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBub24tY29u
c3QuCi1URVNUKFByb3BlcnR5Rm9yUG9pbnRlclRlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29u
c3QpIHsKLSAgTWF0Y2hlcjxBQ2xhc3MqPiBtID0gUHJvcGVydHkoJkFDbGFzczo6cywgU3RhcnRz
V2l0aCgiaGkiKSk7Ci0KLSAgQUNsYXNzIGE7Ci0gIGEuc2V0X3MoImhpbGwiKTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKCZhKSk7Ci0KLSAgYS5zZXRfcygiaG9sZSIpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKCZhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJvcGVydHkoKSB3b3JrcyB3
aGVuIHRoZSBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhCi0vLyBjb25zdCBwb2ludGVyLgot
VEVTVChQcm9wZXJ0eUZvclBvaW50ZXJUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvQ29uc3RQb2lu
dGVyKSB7Ci0gIE1hdGNoZXI8QUNsYXNzKiBjb25zdCY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpz
LCBTdGFydHNXaXRoKCJoaSIpKTsKLQotICBBQ2xhc3MgYTsKLSAgYS5zZXRfcygiaGlsbCIpOwot
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJmEpKTsKLQotICBhLnNldF9zKCJob2xlIik7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoJmEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgp
IGRvZXMgbm90IG1hdGNoIHRoZSBOVUxMIHBvaW50ZXIuCi1URVNUKFByb3BlcnR5Rm9yUG9pbnRl
clRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlVG9Ob25Db25zdFByb3BlcnR5KSB7Ci0gIE1hdGNoZXI8
Y29uc3QgQUNsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6OngsIF8pOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgmRm9vOjpw
cm9wZXJ0eSwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCdzCi0vLyB0eXBlIGlzIGEgc3Vi
LXR5cGUgb2YgY29uc3QgRm9vKi4KLVRFU1QoUHJvcGVydHlGb3JQb2ludGVyVGVzdCwgV29ya3NG
b3JBcmd1bWVudE9mU3ViVHlwZSkgewotICAvLyBUaGUgbWF0Y2hlciBleHBlY3RzIGEgRGVyaXZl
ZENsYXNzLCBidXQgaW5zaWRlIHRoZSBQcm9wZXJ0eSgpIHdlCi0gIC8vIHNheSBBQ2xhc3MuCi0g
IE1hdGNoZXI8Y29uc3QgRGVyaXZlZENsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4sIEdl
KDApKTsKLQotICBEZXJpdmVkQ2xhc3MgZDsKLSAgZC5zZXRfbigxKTsKLSAgRVhQRUNUX1RSVUUo
bS5NYXRjaGVzKCZkKSk7Ci0KLSAgZC5zZXRfbigtMSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoJmQpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgpIGNhbiBkZXNjcmliZSBpdHNl
bGYgd2hlbiB1c2VkIHRvIG1hdGNoIGEgcG9pbnRlci4KLVRFU1QoUHJvcGVydHlGb3JQb2ludGVy
VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgQUNsYXNzKj4gbSA9IFBy
b3BlcnR5KCZBQ2xhc3M6Om4sIEdlKDApKTsKLQotICBFWFBFQ1RfRVEoImlzIGFuIG9iamVjdCB3
aG9zZSBnaXZlbiBwcm9wZXJ0eSBpcyA+PSAwIiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEo
ImlzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpc24ndCA+PSAwIiwKLSAgICAgICAg
ICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCkg
Y2FuIGV4cGxhaW4gdGhlIHJlc3VsdCBvZiBtYXRjaGluZyBhIHBvaW50ZXIuCi1URVNUKFByb3Bl
cnR5Rm9yUG9pbnRlclRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewotICBNYXRjaGVyPGNv
bnN0IEFDbGFzcyo+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0KLSAgQUNsYXNz
IGE7Ci0gIGEuc2V0X24oMSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBzdGF0aWNfY2Fz
dDxjb25zdCBBQ2xhc3MqPihOVUxMKSkpOwotICBFWFBFQ1RfRVEoCi0gICAgICAid2hpY2ggcG9p
bnRzIHRvIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpcyAxIiArIE9mVHlwZSgiaW50
IiksCi0gICAgICBFeHBsYWluKG0sICZhKSk7Ci0KLSAgbSA9IFByb3BlcnR5KCZBQ2xhc3M6Om4s
IEdyZWF0ZXJUaGFuKDApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBwb2ludHMgdG8gYW4gb2JqZWN0
IHdob3NlIGdpdmVuIHByb3BlcnR5IGlzIDEiICsKLSAgICAgICAgICAgIE9mVHlwZSgiaW50Iikg
KyAiLCB3aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgJmEp
KTsKLX0KLQotLy8gVGVzdHMgUmVzdWx0T2YuCi0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwg
Li4uKSBjb21waWxlcyBhbmQgd29ya3MgYXMgZXhwZWN0ZWQgd2hlbiBmIGlzIGEKLS8vIGZ1bmN0
aW9uIHBvaW50ZXIuCi1zdGQ6OnN0cmluZyBJbnRUb1N0cmluZ0Z1bmN0aW9uKGludCBpbnB1dCkg
ewotICByZXR1cm4gaW5wdXQgPT0gMSA/ICJmb28iIDogImJhciI7Ci19Ci0KLVRFU1QoUmVzdWx0
T2ZUZXN0LCBXb3Jrc0ZvckZ1bmN0aW9uUG9pbnRlcnMpIHsKLSAgTWF0Y2hlcjxpbnQ+IG1hdGNo
ZXIgPSBSZXN1bHRPZigmSW50VG9TdHJpbmdGdW5jdGlvbiwgRXEoc3RkOjpzdHJpbmcoImZvbyIp
KSk7Ci0KLSAgRVhQRUNUX1RSVUUobWF0Y2hlci5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNF
KG1hdGNoZXIuTWF0Y2hlcygyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoKSBjYW4g
ZGVzY3JpYmUgaXRzZWxmLgotVEVTVChSZXN1bHRPZlRlc3QsIENhbkRlc2NyaWJlSXRzZWxmKSB7
Ci0gIE1hdGNoZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoJkludFRvU3RyaW5nRnVuY3Rpb24s
IFN0ckVxKCJmb28iKSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBtYXBwZWQgYnkgdGhlIGdpdmVuIGNh
bGxhYmxlIHRvIGEgdmFsdWUgdGhhdCAiCi0gICAgICAgICAgICAiaXMgZXF1YWwgdG8gXCJmb29c
IiIsIERlc2NyaWJlKG1hdGNoZXIpKTsKLSAgRVhQRUNUX0VRKCJpcyBtYXBwZWQgYnkgdGhlIGdp
dmVuIGNhbGxhYmxlIHRvIGEgdmFsdWUgdGhhdCAiCi0gICAgICAgICAgICAiaXNuJ3QgZXF1YWwg
dG8gXCJmb29cIiIsIERlc2NyaWJlTmVnYXRpb24obWF0Y2hlcikpOwotfQotCi0vLyBUZXN0cyB0
aGF0IFJlc3VsdE9mKCkgY2FuIGV4cGxhaW4gdGhlIG1hdGNoIHJlc3VsdC4KLWludCBJbnRGdW5j
dGlvbihpbnQgaW5wdXQpIHsgcmV0dXJuIGlucHV0ID09IDQyID8gODAgOiA5MDsgfQotCi1URVNU
KFJlc3VsdE9mVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0KSB7Ci0gIE1hdGNoZXI8aW50PiBt
YXRjaGVyID0gUmVzdWx0T2YoJkludEZ1bmN0aW9uLCBHZSg4NSkpOwotICBFWFBFQ1RfRVEoIndo
aWNoIGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8gOTAiICsgT2ZUeXBlKCJpbnQi
KSwKLSAgICAgICAgICAgIEV4cGxhaW4obWF0Y2hlciwgMzYpKTsKLQotICBtYXRjaGVyID0gUmVz
dWx0T2YoJkludEZ1bmN0aW9uLCBHcmVhdGVyVGhhbig4NSkpOwotICBFWFBFQ1RfRVEoIndoaWNo
IGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8gOTAiICsgT2ZUeXBlKCJpbnQiKSAr
Ci0gICAgICAgICAgICAiLCB3aGljaCBpcyA1IG1vcmUgdGhhbiA4NSIsIEV4cGxhaW4obWF0Y2hl
ciwgMzYpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBpbGVzIGFu
ZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYoeCkKLS8vIHJldHVybnMgYSBub24tcmVmZXJlbmNl
LgotVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlUmVzdWx0cykgewotICBN
YXRjaGVyPGludD4gbWF0Y2hlciA9IFJlc3VsdE9mKCZJbnRGdW5jdGlvbiwgRXEoODApKTsKLQot
ICBFWFBFQ1RfVFJVRShtYXRjaGVyLk1hdGNoZXMoNDIpKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNo
ZXIuTWF0Y2hlcygzNikpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlc3VsdE9mKGYsIC4uLikgY29t
cGlsZXMgYW5kIHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZih4KQotLy8gcmV0dXJucyBhIHJlZmVy
ZW5jZSB0byBub24tY29uc3QuCi1kb3VibGUmIERvdWJsZUZ1bmN0aW9uKGRvdWJsZSYgaW5wdXQp
IHsgcmV0dXJuIGlucHV0OyB9ICAvLyBOT0xJTlQKLQotVW5jb3B5YWJsZSYgUmVmVW5jb3B5YWJs
ZUZ1bmN0aW9uKFVuY29weWFibGUmIG9iaikgeyAgLy8gTk9MSU5UCi0gIHJldHVybiBvYmo7Ci19
Ci0KLVRFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvTm9uQ29uc3RSZXN1bHRz
KSB7Ci0gIGRvdWJsZSB4ID0gMy4xNDsKLSAgZG91YmxlIHgyID0geDsKLSAgTWF0Y2hlcjxkb3Vi
bGUmPiBtYXRjaGVyID0gUmVzdWx0T2YoJkRvdWJsZUZ1bmN0aW9uLCBSZWYoeCkpOwotCi0gIEVY
UEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcyh4KSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyLk1h
dGNoZXMoeDIpKTsKLQotICAvLyBUZXN0IHRoYXQgUmVzdWx0T2Ygd29ya3Mgd2l0aCB1bmNvcHlh
YmxlIG9iamVjdHMKLSAgVW5jb3B5YWJsZSBvYmooMCk7Ci0gIFVuY29weWFibGUgb2JqMigwKTsK
LSAgTWF0Y2hlcjxVbmNvcHlhYmxlJj4gbWF0Y2hlcjIgPQotICAgICAgUmVzdWx0T2YoJlJlZlVu
Y29weWFibGVGdW5jdGlvbiwgUmVmKG9iaikpOwotCi0gIEVYUEVDVF9UUlVFKG1hdGNoZXIyLk1h
dGNoZXMob2JqKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyMi5NYXRjaGVzKG9iajIpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBpbGVzIGFuZCB3b3JrcyBhcyBl
eHBlY3RlZCB3aGVuIGYoeCkKLS8vIHJldHVybnMgYSByZWZlcmVuY2UgdG8gY29uc3QuCi1jb25z
dCBzdGQ6OnN0cmluZyYgU3RyaW5nRnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0KSB7
IHJldHVybiBpbnB1dDsgfQotCi1URVNUKFJlc3VsdE9mVGVzdCwgV29ya3NGb3JSZWZlcmVuY2VU
b0NvbnN0UmVzdWx0cykgewotICBzdGQ6OnN0cmluZyBzID0gImZvbyI7Ci0gIHN0ZDo6c3RyaW5n
IHMyID0gczsKLSAgTWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG1hdGNoZXIgPSBSZXN1bHRP
ZigmU3RyaW5nRnVuY3Rpb24sIFJlZihzKSk7Ci0KLSAgRVhQRUNUX1RSVUUobWF0Y2hlci5NYXRj
aGVzKHMpKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hlcyhzMikpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IFJlc3VsdE9mKGYsIG0pIHdvcmtzIHdoZW4gZih4KSBhbmQgbSdzCi0vLyBhcmd1
bWVudCB0eXBlcyBhcmUgY29tcGF0aWJsZSBidXQgZGlmZmVyZW50LgotVEVTVChSZXN1bHRPZlRl
c3QsIFdvcmtzRm9yQ29tcGF0aWJsZU1hdGNoZXJUeXBlcykgewotICAvLyBJbnRGdW5jdGlvbigp
IHJldHVybnMgaW50IGJ1dCB0aGUgaW5uZXIgbWF0Y2hlciBleHBlY3RzIGEgc2lnbmVkIGNoYXIu
Ci0gIE1hdGNoZXI8aW50PiBtYXRjaGVyID0gUmVzdWx0T2YoSW50RnVuY3Rpb24sIE1hdGNoZXI8
c2lnbmVkIGNoYXI+KEdlKDg1KSkpOwotCi0gIEVYUEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygz
NikpOwotICBFWFBFQ1RfRkFMU0UobWF0Y2hlci5NYXRjaGVzKDQyKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgdGhlIHByb2dyYW0gYWJvcnRzIHdoZW4gUmVzdWx0T2YgaXMgcGFzc2VkCi0vLyBhIE5V
TEwgZnVuY3Rpb24gcG9pbnRlci4KLVRFU1QoUmVzdWx0T2ZEZWF0aFRlc3QsIERpZXNPbk51bGxG
dW5jdGlvblBvaW50ZXJzKSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCi0gICAgICBS
ZXN1bHRPZihzdGF0aWNfY2FzdDxzdGQ6OnN0cmluZyAoKikoaW50IGR1bW15KT4oTlVMTCksCi0g
ICAgICAgICAgICAgICBFcShzdGQ6OnN0cmluZygiZm9vIikpKSwKLSAgICAgICJOVUxMIGZ1bmN0
aW9uIHBvaW50ZXIgaXMgcGFzc2VkIGludG8gUmVzdWx0T2ZcXChcXClcXC4iKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBpbGVzIGFuZCB3b3JrcyBhcyBleHBlY3Rl
ZCB3aGVuIGYgaXMgYQotLy8gZnVuY3Rpb24gcmVmZXJlbmNlLgotVEVTVChSZXN1bHRPZlRlc3Qs
IFdvcmtzRm9yRnVuY3Rpb25SZWZlcmVuY2VzKSB7Ci0gIE1hdGNoZXI8aW50PiBtYXRjaGVyID0g
UmVzdWx0T2YoSW50VG9TdHJpbmdGdW5jdGlvbiwgU3RyRXEoImZvbyIpKTsKLSAgRVhQRUNUX1RS
VUUobWF0Y2hlci5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hlcygy
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwgLi4uKSBjb21waWxlcyBhbmQgd29y
a3MgYXMgZXhwZWN0ZWQgd2hlbiBmIGlzIGEKLS8vIGZ1bmN0aW9uIG9iamVjdC4KLXN0cnVjdCBG
dW5jdG9yIDogcHVibGljIDo6c3RkOjp1bmFyeV9mdW5jdGlvbjxpbnQsIHN0ZDo6c3RyaW5nPiB7
Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoYXJndW1lbnRfdHlwZSBpbnB1dCkgY29uc3Qgewot
ICAgIHJldHVybiBJbnRUb1N0cmluZ0Z1bmN0aW9uKGlucHV0KTsKLSAgfQotfTsKLQotVEVTVChS
ZXN1bHRPZlRlc3QsIFdvcmtzRm9yRnVuY3RvcnMpIHsKLSAgTWF0Y2hlcjxpbnQ+IG1hdGNoZXIg
PSBSZXN1bHRPZihGdW5jdG9yKCksIEVxKHN0ZDo6c3RyaW5nKCJmb28iKSkpOwotCi0gIEVYUEVD
VF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyLk1hdGNo
ZXMoMikpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlc3VsdE9mKGYsIC4uLikgY29tcGlsZXMgYW5k
IHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZiBpcyBhCi0vLyBmdW5jdG9yIHdpdGggbW9yZSB0aGVu
IG9uZSBvcGVyYXRvcigpIGRlZmluZWQuIFJlc3VsdE9mKCkgbXVzdCB3b3JrCi0vLyBmb3IgZWFj
aCBkZWZpbmVkIG9wZXJhdG9yKCkuCi1zdHJ1Y3QgUG9seW1vcnBoaWNGdW5jdG9yIHsKLSAgdHlw
ZWRlZiBpbnQgcmVzdWx0X3R5cGU7Ci0gIGludCBvcGVyYXRvcigpKGludCBuKSB7IHJldHVybiBu
OyB9Ci0gIGludCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc3RybGVuKHMpKTsgfQotfTsKLQotVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yUG9s
eW1vcnBoaWNGdW5jdG9ycykgewotICBNYXRjaGVyPGludD4gbWF0Y2hlcl9pbnQgPSBSZXN1bHRP
ZihQb2x5bW9ycGhpY0Z1bmN0b3IoKSwgR2UoNSkpOwotCi0gIEVYUEVDVF9UUlVFKG1hdGNoZXJf
aW50Lk1hdGNoZXMoMTApKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNoZXJfaW50Lk1hdGNoZXMoMikp
OwotCi0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG1hdGNoZXJfc3RyaW5nID0gUmVzdWx0T2YoUG9s
eW1vcnBoaWNGdW5jdG9yKCksIEdlKDUpKTsKLQotICBFWFBFQ1RfVFJVRShtYXRjaGVyX3N0cmlu
Zy5NYXRjaGVzKCJsb25nIHN0cmluZyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNoZXJfc3RyaW5n
Lk1hdGNoZXMoInNocnQiKSk7Ci19Ci0KLWNvbnN0IGludCogUmVmZXJlbmNpbmdGdW5jdGlvbihj
b25zdCBpbnQmIG4pIHsgcmV0dXJuICZuOyB9Ci0KLXN0cnVjdCBSZWZlcmVuY2luZ0Z1bmN0b3Ig
ewotICB0eXBlZGVmIGNvbnN0IGludCogcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJh
dG9yKCkoY29uc3QgaW50JiBuKSB7IHJldHVybiAmbjsgfQotfTsKLQotVEVTVChSZXN1bHRPZlRl
c3QsIFdvcmtzRm9yUmVmZXJlbmNpbmdDYWxsYWJsZXMpIHsKLSAgY29uc3QgaW50IG4gPSAxOwot
ICBjb25zdCBpbnQgbjIgPSAxOwotICBNYXRjaGVyPGNvbnN0IGludCY+IG1hdGNoZXIyID0gUmVz
dWx0T2YoUmVmZXJlbmNpbmdGdW5jdGlvbiwgRXEoJm4pKTsKLSAgRVhQRUNUX1RSVUUobWF0Y2hl
cjIuTWF0Y2hlcyhuKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyMi5NYXRjaGVzKG4yKSk7Ci0K
LSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtYXRjaGVyMyA9IFJlc3VsdE9mKFJlZmVyZW5jaW5nRnVu
Y3RvcigpLCBFcSgmbikpOwotICBFWFBFQ1RfVFJVRShtYXRjaGVyMy5NYXRjaGVzKG4pKTsKLSAg
RVhQRUNUX0ZBTFNFKG1hdGNoZXIzLk1hdGNoZXMobjIpKTsKLX0KLQotY2xhc3MgRGl2aXNpYmxl
QnlJbXBsIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IERpdmlzaWJsZUJ5SW1wbChpbnQgYV9kaXZp
ZGVyKSA6IGRpdmlkZXJfKGFfZGl2aWRlcikge30KLQotICAvLyBGb3IgdGVzdGluZyB1c2luZyBF
eHBsYWluTWF0Y2hSZXN1bHRUbygpIHdpdGggcG9seW1vcnBoaWMgbWF0Y2hlcnMuCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUJiBuLCBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICpsaXN0ZW5lciA8PCAid2hp
Y2ggaXMgIiA8PCAobiAlIGRpdmlkZXJfKSA8PCAiIG1vZHVsbyAiCi0gICAgICAgICAgICAgIDw8
IGRpdmlkZXJfOwotICAgIHJldHVybiAobiAlIGRpdmlkZXJfKSA9PSAwOwotICB9Ci0KLSAgdm9p
ZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBkaXZpc2li
bGUgYnkgIiA8PCBkaXZpZGVyXzsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKG9z
dHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBub3QgZGl2aXNpYmxlIGJ5ICIgPDwg
ZGl2aWRlcl87Ci0gIH0KLQotICB2b2lkIHNldF9kaXZpZGVyKGludCBhX2RpdmlkZXIpIHsgZGl2
aWRlcl8gPSBhX2RpdmlkZXI7IH0KLSAgaW50IGRpdmlkZXIoKSBjb25zdCB7IHJldHVybiBkaXZp
ZGVyXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IGRpdmlkZXJfOwotfTsKLQotUG9seW1vcnBoaWNN
YXRjaGVyPERpdmlzaWJsZUJ5SW1wbD4gRGl2aXNpYmxlQnkoaW50IG4pIHsKLSAgcmV0dXJuIE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoRGl2aXNpYmxlQnlJbXBsKG4pKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCB3aGVuIEFsbE9mKCkgZmFpbHMsIG9ubHkgdGhlIGZpcnN0IGZhaWxpbmcgbWF0Y2hlciBp
cwotLy8gYXNrZWQgdG8gZXhwbGFpbiB3aHkuCi1URVNUKEV4cGxhaW5NYXRjaFJlc3VsdFRlc3Qs
IEFsbE9mX0ZhbHNlX0ZhbHNlKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoRGl2
aXNpYmxlQnkoNCksIERpdmlzaWJsZUJ5KDMpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAxIG1v
ZHVsbyA0IiwgRXhwbGFpbihtLCA1KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiBBbGxPZigp
IGZhaWxzLCBvbmx5IHRoZSBmaXJzdCBmYWlsaW5nIG1hdGNoZXIgaXMKLS8vIGFza2VkIHRvIGV4
cGxhaW4gd2h5LgotVEVTVChFeHBsYWluTWF0Y2hSZXN1bHRUZXN0LCBBbGxPZl9GYWxzZV9UcnVl
KSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoRGl2aXNpYmxlQnkoNCksIERpdmlz
aWJsZUJ5KDMpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAyIG1vZHVsbyA0IiwgRXhwbGFpbiht
LCA2KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiBBbGxPZigpIGZhaWxzLCBvbmx5IHRoZSBm
aXJzdCBmYWlsaW5nIG1hdGNoZXIgaXMKLS8vIGFza2VkIHRvIGV4cGxhaW4gd2h5LgotVEVTVChF
eHBsYWluTWF0Y2hSZXN1bHRUZXN0LCBBbGxPZl9UcnVlX0ZhbHNlKSB7Ci0gIGNvbnN0IE1hdGNo
ZXI8aW50PiBtID0gQWxsT2YoR2UoMSksIERpdmlzaWJsZUJ5KDMpKTsKLSAgRVhQRUNUX0VRKCJ3
aGljaCBpcyAyIG1vZHVsbyAzIiwgRXhwbGFpbihtLCA1KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
d2hlbiBBbGxPZigpIHN1Y2NlZWRzLCBhbGwgbWF0Y2hlcnMgYXJlIGFza2VkIHRvIGV4cGxhaW4K
LS8vIHdoeS4KLVRFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwgQWxsT2ZfVHJ1ZV9UcnVlKSB7
Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxsT2YoRGl2aXNpYmxlQnkoMiksIERpdmlzaWJs
ZUJ5KDMpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAwIG1vZHVsbyAyLCBhbmQgd2hpY2ggaXMg
MCBtb2R1bG8gMyIsIEV4cGxhaW4obSwgNikpOwotfQotCi1URVNUKEV4cGxhaW5NYXRjaFJlc3Vs
dFRlc3QsIEFsbE9mX1RydWVfVHJ1ZV8yKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gQWxs
T2YoR2UoMiksIExlKDMpKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIDIpKTsKLX0KLQot
VEVTVChFeHBsYWlubWF0Y2hlclJlc3VsdFRlc3QsIE1vbm9tb3JwaGljTWF0Y2hlcikgewotICBj
b25zdCBNYXRjaGVyPGludD4gbSA9IEdyZWF0ZXJUaGFuKDUpOwotICBFWFBFQ1RfRVEoIndoaWNo
IGlzIDEgbW9yZSB0aGFuIDUiLCBFeHBsYWluKG0sIDYpKTsKLX0KLQotLy8gVGhlIGZvbGxvd2lu
ZyB0d28gdGVzdHMgdmVyaWZ5IHRoYXQgdmFsdWVzIHdpdGhvdXQgYSBwdWJsaWMgY29weQotLy8g
Y3RvciBjYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gbWF0Y2hlcnMgbGlrZSBFcSgpLCBHZSgp
LCBhbmQgZXRjCi0vLyB3aXRoIHRoZSBoZWxwIG9mIEJ5UmVmKCkuCi0KLWNsYXNzIE5vdENvcHlh
YmxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE5vdENvcHlhYmxlKGludCBhX3ZhbHVlKSA6IHZh
bHVlXyhhX3ZhbHVlKSB7fQotCi0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsg
fQotCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3RDb3B5YWJsZSYgcmhzKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHZhbHVlKCkgPT0gcmhzLnZhbHVlKCk7Ci0gIH0KLQotICBib29sIG9wZXJhdG9y
Pj0oY29uc3QgTm90Q29weWFibGUmIHJocykgY29uc3QgewotICAgIHJldHVybiB2YWx1ZSgpID49
IHJocy52YWx1ZSgpOwotICB9Ci0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLQotICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdENvcHlhYmxlKTsKLX07Ci0KLVRFU1QoQnlSZWZU
ZXN0LCBBbGxvd3NOb3RDb3B5YWJsZUNvbnN0VmFsdWVJbk1hdGNoZXJzKSB7Ci0gIGNvbnN0IE5v
dENvcHlhYmxlIGNvbnN0X3ZhbHVlMSgxKTsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBOb3RDb3B5
YWJsZSY+IG0gPSBFcShCeVJlZihjb25zdF92YWx1ZTEpKTsKLQotICBjb25zdCBOb3RDb3B5YWJs
ZSBuMSgxKSwgbjIoMik7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuMSkpOwotICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKG4yKSk7Ci19Ci0KLVRFU1QoQnlSZWZUZXN0LCBBbGxvd3NOb3RDb3B5
YWJsZVZhbHVlSW5NYXRjaGVycykgewotICBOb3RDb3B5YWJsZSB2YWx1ZTIoMik7Ci0gIGNvbnN0
IE1hdGNoZXI8Tm90Q29weWFibGUmPiBtID0gR2UoQnlSZWYodmFsdWUyKSk7Ci0KLSAgTm90Q29w
eWFibGUgbjEoMSksIG4yKDIpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG4xKSk7Ci0gIEVY
UEVDVF9UUlVFKG0uTWF0Y2hlcyhuMikpOwotfQotCi1URVNUKElzRW1wdHlUZXN0LCBJbXBsZW1l
bnRzSXNFbXB0eSkgewotICB2ZWN0b3I8aW50PiBjb250YWluZXI7Ci0gIEVYUEVDVF9USEFUKGNv
bnRhaW5lciwgSXNFbXB0eSgpKTsKLSAgY29udGFpbmVyLnB1c2hfYmFjaygwKTsKLSAgRVhQRUNU
X1RIQVQoY29udGFpbmVyLCBOb3QoSXNFbXB0eSgpKSk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2so
MSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KElzRW1wdHkoKSkpOwotfQotCi1URVNU
KElzRW1wdHlUZXN0LCBXb3Jrc1dpdGhTdHJpbmcpIHsKLSAgc3RkOjpzdHJpbmcgdGV4dDsKLSAg
RVhQRUNUX1RIQVQodGV4dCwgSXNFbXB0eSgpKTsKLSAgdGV4dCA9ICJmb28iOwotICBFWFBFQ1Rf
VEhBVCh0ZXh0LCBOb3QoSXNFbXB0eSgpKSk7Ci0gIHRleHQgPSBzdGQ6OnN0cmluZygiXDAiLCAx
KTsKLSAgRVhQRUNUX1RIQVQodGV4dCwgTm90KElzRW1wdHkoKSkpOwotfQotCi1URVNUKElzRW1w
dHlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBJ
c0VtcHR5KCk7Ci0gIEVYUEVDVF9FUSgiaXMgZW1wdHkiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVD
VF9FUSgiaXNuJ3QgZW1wdHkiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChJc0Vt
cHR5VGVzdCwgRXhwbGFpbnNSZXN1bHQpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBJ
c0VtcHR5KCk7Ci0gIHZlY3RvcjxpbnQ+IGNvbnRhaW5lcjsKLSAgRVhQRUNUX0VRKCIiLCBFeHBs
YWluKG0sIGNvbnRhaW5lcikpOwotICBjb250YWluZXIucHVzaF9iYWNrKDApOwotICBFWFBFQ1Rf
RVEoIndob3NlIHNpemUgaXMgMSIsIEV4cGxhaW4obSwgY29udGFpbmVyKSk7Ci19Ci0KLVRFU1Qo
U2l6ZUlzVGVzdCwgSW1wbGVtZW50c1NpemVJcykgewotICB2ZWN0b3I8aW50PiBjb250YWluZXI7
Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgU2l6ZUlzKDApKTsKLSAgRVhQRUNUX1RIQVQoY29u
dGFpbmVyLCBOb3QoU2l6ZUlzKDEpKSk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIEVY
UEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250
YWluZXIsIFNpemVJcygxKSk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIEVYUEVDVF9U
SEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIs
IFNpemVJcygyKSk7Ci19Ci0KLVRFU1QoU2l6ZUlzVGVzdCwgV29ya3NXaXRoTWFwKSB7Ci0gIG1h
cDxzdGQ6OnN0cmluZywgaW50PiBjb250YWluZXI7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwg
U2l6ZUlzKDApKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoU2l6ZUlzKDEpKSk7Ci0g
IGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKCJmb28iLCAxKSk7Ci0gIEVYUEVDVF9USEFUKGNv
bnRhaW5lciwgTm90KFNpemVJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIFNpemVJ
cygxKSk7Ci0gIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKCJiYXIiLCAyKSk7Ci0gIEVYUEVD
VF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWlu
ZXIsIFNpemVJcygyKSk7Ci19Ci0KLVRFU1QoU2l6ZUlzVGVzdCwgV29ya3NXaXRoUmVmZXJlbmNl
cykgewotICB2ZWN0b3I8aW50PiBjb250YWluZXI7Ci0gIE1hdGNoZXI8Y29uc3QgdmVjdG9yPGlu
dD4mPiBtID0gU2l6ZUlzKDEpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChtKSk7Ci0g
IGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgbSk7Ci19
Ci0KLVRFU1QoU2l6ZUlzVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8dmVjdG9y
PGludD4gPiBtID0gU2l6ZUlzKDIpOwotICBFWFBFQ1RfRVEoInNpemUgaXMgZXF1YWwgdG8gMiIs
IERlc2NyaWJlKG0pKTsKLSAgRVhQRUNUX0VRKCJzaXplIGlzbid0IGVxdWFsIHRvIDIiLCBEZXNj
cmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChTaXplSXNUZXN0LCBFeHBsYWluc1Jlc3VsdCkg
ewotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTEgPSBTaXplSXMoMik7Ci0gIE1hdGNoZXI8dmVj
dG9yPGludD4gPiBtMiA9IFNpemVJcyhMdCgydSkpOwotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4g
bTMgPSBTaXplSXMoQW55T2YoMCwgMykpOwotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTQgPSBT
aXplSXMoR3JlYXRlclRoYW4oMSkpOwotICB2ZWN0b3I8aW50PiBjb250YWluZXI7Ci0gIEVYUEVD
VF9FUSgid2hvc2Ugc2l6ZSAwIGRvZXNuJ3QgbWF0Y2giLCBFeHBsYWluKG0xLCBjb250YWluZXIp
KTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDAgbWF0Y2hlcyIsIEV4cGxhaW4obTIsIGNvbnRh
aW5lcikpOwotICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMCBtYXRjaGVzIiwgRXhwbGFpbihtMywg
Y29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAwIGRvZXNuJ3QgbWF0Y2gsIHdo
aWNoIGlzIDEgbGVzcyB0aGFuIDEiLAotICAgICAgICAgICAgRXhwbGFpbihtNCwgY29udGFpbmVy
KSk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7
Ci0gIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAyIG1hdGNoZXMiLCBFeHBsYWluKG0xLCBjb250YWlu
ZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDIgZG9lc24ndCBtYXRjaCIsIEV4cGxhaW4o
bTIsIGNvbnRhaW5lcikpOwotICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMiBkb2Vzbid0IG1hdGNo
IiwgRXhwbGFpbihtMywgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAyIG1h
dGNoZXMsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDEiLAotICAgICAgICAgICAgRXhwbGFpbihtNCwg
Y29udGFpbmVyKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotLy8gVGVzdHMgQ29u
dGFpbmVyRXEgd2l0aCBkaWZmZXJlbnQgY29udGFpbmVyIHR5cGVzLCBhbmQKLS8vIGRpZmZlcmVu
dCBlbGVtZW50IHR5cGVzLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIENvbnRhaW5l
ckVxVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHt9OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5
cGVzPAotICAgIHNldDxpbnQ+LAotICAgIHZlY3RvcjxzaXplX3Q+LAotICAgIG11bHRpc2V0PHNp
emVfdD4sCi0gICAgbGlzdDxpbnQ+ID4KLSAgICBDb250YWluZXJFcVRlc3RUeXBlczsKLQotVFlQ
RURfVEVTVF9DQVNFKENvbnRhaW5lckVxVGVzdCwgQ29udGFpbmVyRXFUZXN0VHlwZXMpOwotCi0v
LyBUZXN0cyB0aGF0IHRoZSBmaWxsZWQgY29udGFpbmVyIGlzIGVxdWFsIHRvIGl0c2VsZi4KLVRZ
UEVEX1RFU1QoQ29udGFpbmVyRXFUZXN0LCBFcXVhbHNTZWxmKSB7Ci0gIHN0YXRpYyBjb25zdCBp
bnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9OwotICBUeXBlUGFyYW0gbXlfc2V0KHZhbHMs
IHZhbHMgKyA2KTsKLSAgY29uc3QgTWF0Y2hlcjxUeXBlUGFyYW0+IG0gPSBDb250YWluZXJFcSht
eV9zZXQpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobXlfc2V0KSk7Ci0gIEVYUEVDVF9FUSgi
IiwgRXhwbGFpbihtLCBteV9zZXQpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtaXNzaW5nIHZhbHVl
cyBhcmUgcmVwb3J0ZWQuCi1UWVBFRF9URVNUKENvbnRhaW5lckVxVGVzdCwgVmFsdWVNaXNzaW5n
KSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9OwotICBz
dGF0aWMgY29uc3QgaW50IHRlc3RfdmFsc1tdID0gezIsIDEsIDgsIDV9OwotICBUeXBlUGFyYW0g
bXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKLSAgVHlwZVBhcmFtIHRlc3Rfc2V0KHRlc3RfdmFscywg
dGVzdF92YWxzICsgNCk7Ci0gIGNvbnN0IE1hdGNoZXI8VHlwZVBhcmFtPiBtID0gQ29udGFpbmVy
RXEobXlfc2V0KTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOwotICBFWFBF
Q1RfRVEoIndoaWNoIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogMyIsCi0g
ICAgICAgICAgICBFeHBsYWluKG0sIHRlc3Rfc2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYWRk
ZWQgdmFsdWVzIGFyZSByZXBvcnRlZC4KLVRZUEVEX1RFU1QoQ29udGFpbmVyRXFUZXN0LCBWYWx1
ZUFkZGVkKSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9
OwotICBzdGF0aWMgY29uc3QgaW50IHRlc3RfdmFsc1tdID0gezEsIDIsIDMsIDUsIDgsIDQ2fTsK
LSAgVHlwZVBhcmFtIG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIFR5cGVQYXJhbSB0ZXN0X3Nl
dCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDYpOwotICBjb25zdCBNYXRjaGVyPGNvbnN0IFR5cGVQ
YXJhbSY+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KHRlc3Rfc2V0KSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaGFzIHRoZXNlIHVuZXhwZWN0ZWQgZWxl
bWVudHM6IDQ2IiwgRXhwbGFpbihtLCB0ZXN0X3NldCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFk
ZGVkIGFuZCBtaXNzaW5nIHZhbHVlcyBhcmUgcmVwb3J0ZWQgdG9nZXRoZXIuCi1UWVBFRF9URVNU
KENvbnRhaW5lckVxVGVzdCwgVmFsdWVBZGRlZEFuZFJlbW92ZWQpIHsKLSAgc3RhdGljIGNvbnN0
IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywgNSwgOH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVz
dF92YWxzW10gPSB7MSwgMiwgMywgOCwgNDZ9OwotICBUeXBlUGFyYW0gbXlfc2V0KHZhbHMsIHZh
bHMgKyA2KTsKLSAgVHlwZVBhcmFtIHRlc3Rfc2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgNSk7
Ci0gIGNvbnN0IE1hdGNoZXI8VHlwZVBhcmFtPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGhh
cyB0aGVzZSB1bmV4cGVjdGVkIGVsZW1lbnRzOiA0NixcbiIKLSAgICAgICAgICAgICJhbmQgZG9l
c24ndCBoYXZlIHRoZXNlIGV4cGVjdGVkIGVsZW1lbnRzOiA1IiwKLSAgICAgICAgICAgIEV4cGxh
aW4obSwgdGVzdF9zZXQpKTsKLX0KLQotLy8gVGVzdHMgZHVwbGljYXRlZCB2YWx1ZSAtLSBleHBl
Y3Qgbm8gZXhwbGFuYXRpb24uCi1UWVBFRF9URVNUKENvbnRhaW5lckVxVGVzdCwgRHVwbGljYXRl
RGlmZmVyZW5jZSkgewotICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAyLCAzLCA1
LCA4fTsKLSAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsxLCAyLCAzLCA1LCA4fTsK
LSAgVHlwZVBhcmFtIG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIFR5cGVQYXJhbSB0ZXN0X3Nl
dCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDUpOwotICBjb25zdCBNYXRjaGVyPGNvbnN0IFR5cGVQ
YXJhbSY+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwotICAvLyBEZXBlbmRpbmcgb24gdGhlIGNv
bnRhaW5lciwgbWF0Y2ggbWF5IGJlIHRydWUgb3IgZmFsc2UKLSAgLy8gQnV0IGluIGFueSBjYXNl
IHRoZXJlIHNob3VsZCBiZSBubyBleHBsYW5hdGlvbi4KLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWlu
KG0sIHRlc3Rfc2V0KSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8v
IFRlc3RzIHRoYXQgbXV0bGlwbGUgbWlzc2luZyB2YWx1ZXMgYXJlIHJlcG9ydGVkLgotLy8gVXNp
bmcganVzdCB2ZWN0b3IgaGVyZSwgc28gb3JkZXIgaXMgcHJlZGljYXRibGUuCi1URVNUKENvbnRh
aW5lckVxRXh0cmFUZXN0LCBNdWx0aXBsZVZhbHVlc01pc3NpbmcpIHsKLSAgc3RhdGljIGNvbnN0
IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywgNSwgOH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVz
dF92YWxzW10gPSB7MiwgMSwgNX07Ci0gIHZlY3RvcjxpbnQ+IG15X3NldCh2YWxzLCB2YWxzICsg
Nik7Ci0gIHZlY3RvcjxpbnQ+IHRlc3Rfc2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgMyk7Ci0g
IGNvbnN0IE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGRv
ZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogMywgOCIsCi0gICAgICAgICAgICBF
eHBsYWluKG0sIHRlc3Rfc2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYWRkZWQgdmFsdWVzIGFy
ZSByZXBvcnRlZC4KLS8vIFVzaW5nIGp1c3QgdmVjdG9yIGhlcmUsIHNvIG9yZGVyIGlzIHByZWRp
Y2F0YmxlLgotVEVTVChDb250YWluZXJFcUV4dHJhVGVzdCwgTXVsdGlwbGVWYWx1ZXNBZGRlZCkg
ewotICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAyLCAzLCA1LCA4fTsKLSAgc3Rh
dGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsxLCAyLCA5MiwgMywgNSwgOCwgNDZ9OwotICBs
aXN0PHNpemVfdD4gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKLSAgbGlzdDxzaXplX3Q+IHRlc3Rf
c2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgNyk7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgbGlz
dDxzaXplX3Q+Jj4gbSA9IENvbnRhaW5lckVxKG15X3NldCk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXModGVzdF9zZXQpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBoYXMgdGhlc2UgdW5leHBlY3Rl
ZCBlbGVtZW50czogOTIsIDQ2IiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgdGVzdF9zZXQpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhZGRlZCBhbmQgbWlzc2luZyB2YWx1ZXMgYXJlIHJlcG9ydGVk
IHRvZ2V0aGVyLgotVEVTVChDb250YWluZXJFcUV4dHJhVGVzdCwgTXVsdGlwbGVWYWx1ZXNBZGRl
ZEFuZFJlbW92ZWQpIHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywg
NSwgOH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MSwgMiwgMywgOTIsIDQ2
fTsKLSAgbGlzdDxzaXplX3Q+IG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIGxpc3Q8c2l6ZV90
PiB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDUpOwotICBjb25zdCBNYXRjaGVyPGNv
bnN0IGxpc3Q8c2l6ZV90PiA+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKHRlc3Rfc2V0KSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaGFzIHRoZXNlIHVu
ZXhwZWN0ZWQgZWxlbWVudHM6IDkyLCA0NixcbiIKLSAgICAgICAgICAgICJhbmQgZG9lc24ndCBo
YXZlIHRoZXNlIGV4cGVjdGVkIGVsZW1lbnRzOiA1LCA4IiwKLSAgICAgICAgICAgIEV4cGxhaW4o
bSwgdGVzdF9zZXQpKTsKLX0KLQotLy8gVGVzdHMgdG8gc2VlIHRoYXQgZHVwbGljYXRlIGVsZW1l
bnRzIGFyZSBkZXRlY3RlZCwKLS8vIGJ1dCAoYXMgYWJvdmUpIG5vdCByZXBvcnRlZCBpbiB0aGUg
ZXhwbGFuYXRpb24uCi1URVNUKENvbnRhaW5lckVxRXh0cmFUZXN0LCBNdWx0aVNldE9mSW50RHVw
bGljYXRlRGlmZmVyZW5jZSkgewotICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAy
LCAzLCA1LCA4fTsKLSAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsxLCAyLCAzLCA1
LCA4fTsKLSAgdmVjdG9yPGludD4gbXlfc2V0KHZhbHMsIHZhbHMgKyA2KTsKLSAgdmVjdG9yPGlu
dD4gdGVzdF9zZXQodGVzdF92YWxzLCB0ZXN0X3ZhbHMgKyA1KTsKLSAgY29uc3QgTWF0Y2hlcjx2
ZWN0b3I8aW50PiA+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwotICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMobXlfc2V0KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF9zZXQpKTsKLSAg
Ly8gVGhlcmUgaXMgbm90aGluZyB0byByZXBvcnQgd2hlbiBib3RoIHNldHMgY29udGFpbiBhbGwg
dGhlIHNhbWUgdmFsdWVzLgotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgdGVzdF9zZXQpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBDb250YWluZXJFcSB3b3JrcyBmb3Igbm9uLXRyaXZpYWwgYXNz
b2NpYXRpdmUgY29udGFpbmVycywKLS8vIGxpa2UgbWFwcy4KLVRFU1QoQ29udGFpbmVyRXFFeHRy
YVRlc3QsIFdvcmtzRm9yTWFwcykgewotICBtYXA8aW50LCBzdGQ6OnN0cmluZz4gbXlfbWFwOwot
ICBteV9tYXBbMF0gPSAiYSI7Ci0gIG15X21hcFsxXSA9ICJiIjsKLQotICBtYXA8aW50LCBzdGQ6
OnN0cmluZz4gdGVzdF9tYXA7Ci0gIHRlc3RfbWFwWzBdID0gImFhIjsKLSAgdGVzdF9tYXBbMV0g
PSAiYiI7Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mPiBt
ID0gQ29udGFpbmVyRXEobXlfbWFwKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG15X21hcCkp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHRlc3RfbWFwKSk7Ci0KLSAgRVhQRUNUX0VRKCJ3
aGljaCBoYXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50czogKDAsIFwiYWFcIiksXG4iCi0gICAg
ICAgICAgICAiYW5kIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogKDAsIFwi
YVwiKSIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIHRlc3RfbWFwKSk7Ci19Ci0KLVRFU1QoQ29u
dGFpbmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXkpIHsKLSAgaW50IGExW10gPSB7
MSwgMiwgM307Ci0gIGludCBhMltdID0gezEsIDIsIDN9OwotICBpbnQgYltdID0gezEsIDIsIDR9
OwotCi0gIEVYUEVDVF9USEFUKGExLCBDb250YWluZXJFcShhMikpOwotICBFWFBFQ1RfVEhBVChh
MSwgTm90KENvbnRhaW5lckVxKGIpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbmVyRXFFeHRyYVRlc3Qs
IFdvcmtzRm9yVHdvRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgewotICBjb25zdCBjaGFyIGExW11b
M10gPSB7ImhpIiwgImxvIn07Ci0gIGNvbnN0IGNoYXIgYTJbXVszXSA9IHsiaGkiLCAibG8ifTsK
LSAgY29uc3QgY2hhciBiW11bM10gPSB7ImxvIiwgImhpIn07Ci0KLSAgLy8gVGVzdHMgdXNpbmcg
Q29udGFpbmVyRXEoKSBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLgotICBFWFBFQ1RfVEhBVChhMSwg
Q29udGFpbmVyRXEoYTIpKTsKLSAgRVhQRUNUX1RIQVQoYTEsIE5vdChDb250YWluZXJFcShiKSkp
OwotCi0gIC8vIFRlc3RzIHVzaW5nIENvbnRhaW5lckVxKCkgaW4gdGhlIHNlY29uZCBkaW1lbnNp
b24uCi0gIEVYUEVDVF9USEFUKGExLCBFbGVtZW50c0FyZShDb250YWluZXJFcShhMlswXSksIENv
bnRhaW5lckVxKGEyWzFdKSkpOwotICBFWFBFQ1RfVEhBVChhMSwgRWxlbWVudHNBcmUoTm90KENv
bnRhaW5lckVxKGJbMF0pKSwgQ29udGFpbmVyRXEoYTJbMV0pKSk7Ci19Ci0KLVRFU1QoQ29udGFp
bmVyRXFFeHRyYVRlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXlBc1R1cGxlKSB7Ci0gIGNvbnN0IGlu
dCBhMVtdID0gezEsIDIsIDN9OwotICBjb25zdCBpbnQgYTJbXSA9IHsxLCAyLCAzfTsKLSAgY29u
c3QgaW50IGJbXSA9IHsxLCAyLCAzLCA0fTsKLQotICBjb25zdCBpbnQqIGNvbnN0IHAxID0gYTE7
Ci0gIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUocDEsIDMpLCBDb250YWluZXJFcShhMikpOwotICBF
WFBFQ1RfVEhBVChtYWtlX3R1cGxlKHAxLCAzKSwgTm90KENvbnRhaW5lckVxKGIpKSk7Ci0KLSAg
Y29uc3QgaW50IGNbXSA9IHsxLCAzLCAyfTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwMSwg
MyksIE5vdChDb250YWluZXJFcShjKSkpOwotfQotCi1URVNUKENvbnRhaW5lckVxRXh0cmFUZXN0
LCBDb3BpZXNOYXRpdmVBcnJheVBhcmFtZXRlcikgewotICBzdGQ6OnN0cmluZyBhMVtdWzNdID0g
ewotICAgIHsiaGkiLCAiaGVsbG8iLCAiY2lhbyJ9LAotICAgIHsiYnllIiwgInNlZSB5b3UiLCAi
Y2lhbyJ9Ci0gIH07Ci0KLSAgc3RkOjpzdHJpbmcgYTJbXVszXSA9IHsKLSAgICB7ImhpIiwgImhl
bGxvIiwgImNpYW8ifSwKLSAgICB7ImJ5ZSIsICJzZWUgeW91IiwgImNpYW8ifQotICB9OwotCi0g
IGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcoJilbMl1bM10+IG0gPSBDb250YWluZXJF
cShhMik7Ci0gIEVYUEVDVF9USEFUKGExLCBtKTsKLQotICBhMlswXVswXSA9ICJoYSI7Ci0gIEVY
UEVDVF9USEFUKGExLCBtKTsKLX0KLQotVEVTVChXaGVuU29ydGVkQnlUZXN0LCBXb3Jrc0ZvckVt
cHR5Q29udGFpbmVyKSB7Ci0gIGNvbnN0IHZlY3RvcjxpbnQ+IG51bWJlcnM7Ci0gIEVYUEVDVF9U
SEFUKG51bWJlcnMsIFdoZW5Tb3J0ZWRCeShsZXNzPGludD4oKSwgRWxlbWVudHNBcmUoKSkpOwot
ICBFWFBFQ1RfVEhBVChudW1iZXJzLCBOb3QoV2hlblNvcnRlZEJ5KGxlc3M8aW50PigpLCBFbGVt
ZW50c0FyZSgxKSkpKTsKLX0KLQotVEVTVChXaGVuU29ydGVkQnlUZXN0LCBXb3Jrc0Zvck5vbkVt
cHR5Q29udGFpbmVyKSB7Ci0gIHZlY3Rvcjx1bnNpZ25lZD4gbnVtYmVyczsKLSAgbnVtYmVycy5w
dXNoX2JhY2soMyk7Ci0gIG51bWJlcnMucHVzaF9iYWNrKDEpOwotICBudW1iZXJzLnB1c2hfYmFj
aygyKTsKLSAgbnVtYmVycy5wdXNoX2JhY2soMik7Ci0gIEVYUEVDVF9USEFUKG51bWJlcnMsIFdo
ZW5Tb3J0ZWRCeShncmVhdGVyPHVuc2lnbmVkPigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRWxlbWVudHNBcmUoMywgMiwgMiwgMSkpKTsKLSAgRVhQRUNUX1RIQVQobnVt
YmVycywgTm90KFdoZW5Tb3J0ZWRCeShncmVhdGVyPHVuc2lnbmVkPigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKDEsIDIsIDIsIDMpKSkpOwot
fQotCi1URVNUKFdoZW5Tb3J0ZWRCeVRlc3QsIFdvcmtzRm9yTm9uVmVjdG9yQ29udGFpbmVyKSB7
Ci0gIGxpc3Q8c3RkOjpzdHJpbmc+IHdvcmRzOwotICB3b3Jkcy5wdXNoX2JhY2soInNheSIpOwot
ICB3b3Jkcy5wdXNoX2JhY2soImhlbGxvIik7Ci0gIHdvcmRzLnB1c2hfYmFjaygid29ybGQiKTsK
LSAgRVhQRUNUX1RIQVQod29yZHMsIFdoZW5Tb3J0ZWRCeShsZXNzPHN0ZDo6c3RyaW5nPigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKCJoZWxsbyIsICJz
YXkiLCAid29ybGQiKSkpOwotICBFWFBFQ1RfVEhBVCh3b3JkcywgTm90KFdoZW5Tb3J0ZWRCeShs
ZXNzPHN0ZDo6c3RyaW5nPigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFbGVtZW50c0FyZSgic2F5IiwgImhlbGxvIiwgIndvcmxkIikpKSk7Ci19Ci0KLVRFU1QoV2hl
blNvcnRlZEJ5VGVzdCwgV29ya3NGb3JOYXRpdmVBcnJheSkgewotICBjb25zdCBpbnQgbnVtYmVy
c1tdID0gezEsIDMsIDIsIDR9OwotICBjb25zdCBpbnQgc29ydGVkX251bWJlcnNbXSA9IHsxLCAy
LCAzLCA0fTsKLSAgRVhQRUNUX1RIQVQobnVtYmVycywgV2hlblNvcnRlZEJ5KGxlc3M8aW50Pigp
LCBFbGVtZW50c0FyZSgxLCAyLCAzLCA0KSkpOwotICBFWFBFQ1RfVEhBVChudW1iZXJzLCBXaGVu
U29ydGVkQnkobGVzczxpbnQ+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFbGVtZW50c0FyZUFycmF5KHNvcnRlZF9udW1iZXJzKSkpOwotICBFWFBFQ1RfVEhBVChudW1i
ZXJzLCBOb3QoV2hlblNvcnRlZEJ5KGxlc3M8aW50PigpLCBFbGVtZW50c0FyZSgxLCAzLCAyLCA0
KSkpKTsKLX0KLQotVEVTVChXaGVuU29ydGVkQnlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAg
Y29uc3QgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBXaGVuU29ydGVkQnkobGVzczxpbnQ+KCks
IEVsZW1lbnRzQXJlKDEsIDIpKTsKLSAgRVhQRUNUX0VRKCIod2hlbiBzb3J0ZWQpIGhhcyAyIGVs
ZW1lbnRzIHdoZXJlXG4iCi0gICAgICAgICAgICAiZWxlbWVudCAjMCBpcyBlcXVhbCB0byAxLFxu
IgotICAgICAgICAgICAgImVsZW1lbnQgIzEgaXMgZXF1YWwgdG8gMiIsCi0gICAgICAgICAgICBE
ZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgiKHdoZW4gc29ydGVkKSBkb2Vzbid0IGhhdmUgMiBl
bGVtZW50cywgb3JcbiIKLSAgICAgICAgICAgICJlbGVtZW50ICMwIGlzbid0IGVxdWFsIHRvIDEs
IG9yXG4iCi0gICAgICAgICAgICAiZWxlbWVudCAjMSBpc24ndCBlcXVhbCB0byAyIiwKLSAgICAg
ICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi1URVNUKFdoZW5Tb3J0ZWRCeVRlc3Qs
IEV4cGxhaW5zTWF0Y2hSZXN1bHQpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsyLCAxfTsKLSAgRVhQ
RUNUX0VRKCJ3aGljaCBpcyB7IDEsIDIgfSB3aGVuIHNvcnRlZCwgd2hvc2UgZWxlbWVudCAjMCBk
b2Vzbid0IG1hdGNoIiwKLSAgICAgICAgICAgIEV4cGxhaW4oV2hlblNvcnRlZEJ5KGxlc3M8aW50
PigpLCBFbGVtZW50c0FyZSgyLCAzKSksIGEpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyB7IDEs
IDIgfSB3aGVuIHNvcnRlZCIsCi0gICAgICAgICAgICBFeHBsYWluKFdoZW5Tb3J0ZWRCeShsZXNz
PGludD4oKSwgRWxlbWVudHNBcmUoMSwgMikpLCBhKSk7Ci19Ci0KLS8vIFdoZW5Tb3J0ZWQoKSBp
cyBhIHNpbXBsZSB3cmFwcGVyIG9uIFdoZW5Tb3J0ZWRCeSgpLiAgSGVuY2Ugd2UgZG9uJ3QKLS8v
IG5lZWQgdG8gdGVzdCBpdCBhcyBleGhhdXN0aXZlbHkgYXMgd2UgdGVzdCB0aGUgbGF0dGVyLgot
Ci1URVNUKFdoZW5Tb3J0ZWRUZXN0LCBXb3Jrc0ZvckVtcHR5Q29udGFpbmVyKSB7Ci0gIGNvbnN0
IHZlY3RvcjxpbnQ+IG51bWJlcnM7Ci0gIEVYUEVDVF9USEFUKG51bWJlcnMsIFdoZW5Tb3J0ZWQo
RWxlbWVudHNBcmUoKSkpOwotICBFWFBFQ1RfVEhBVChudW1iZXJzLCBOb3QoV2hlblNvcnRlZChF
bGVtZW50c0FyZSgxKSkpKTsKLX0KLQotVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JOb25F
bXB0eUNvbnRhaW5lcikgewotICBsaXN0PHN0ZDo6c3RyaW5nPiB3b3JkczsKLSAgd29yZHMucHVz
aF9iYWNrKCIzIik7Ci0gIHdvcmRzLnB1c2hfYmFjaygiMSIpOwotICB3b3Jkcy5wdXNoX2JhY2so
IjIiKTsKLSAgd29yZHMucHVzaF9iYWNrKCIyIik7Ci0gIEVYUEVDVF9USEFUKHdvcmRzLCBXaGVu
U29ydGVkKEVsZW1lbnRzQXJlKCIxIiwgIjIiLCAiMiIsICIzIikpKTsKLSAgRVhQRUNUX1RIQVQo
d29yZHMsIE5vdChXaGVuU29ydGVkKEVsZW1lbnRzQXJlKCIzIiwgIjEiLCAiMiIsICIyIikpKSk7
Ci19Ci0KLVRFU1QoV2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yTWFwVHlwZXMpIHsKLSAgbWFwPHN0
ZDo6c3RyaW5nLCBpbnQ+IHdvcmRfY291bnRzOwotICB3b3JkX2NvdW50c1siYW5kIl0gPSAxOwot
ICB3b3JkX2NvdW50c1sidGhlIl0gPSAxOwotICB3b3JkX2NvdW50c1siYnVmZmFsbyJdID0gMjsK
LSAgRVhQRUNUX1RIQVQod29yZF9jb3VudHMsCi0gICAgICAgICAgICAgIFdoZW5Tb3J0ZWQoRWxl
bWVudHNBcmUoUGFpcigiYW5kIiwgMSksIFBhaXIoImJ1ZmZhbG8iLCAyKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKCJ0aGUiLCAxKSkpKTsKLSAgRVhQRUNUX1RI
QVQod29yZF9jb3VudHMsCi0gICAgICAgICAgICAgIE5vdChXaGVuU29ydGVkKEVsZW1lbnRzQXJl
KFBhaXIoImFuZCIsIDEpLCBQYWlyKCJ0aGUiLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFpcigiYnVmZmFsbyIsIDIpKSkpKTsKLX0KLQotVEVTVChXaGVu
U29ydGVkVGVzdCwgV29ya3NGb3JNdWx0aU1hcFR5cGVzKSB7Ci0gICAgbXVsdGltYXA8aW50LCBp
bnQ+IGlmaWI7Ci0gICAgaWZpYi5pbnNlcnQobWFrZV9wYWlyKDgsIDYpKTsKLSAgICBpZmliLmlu
c2VydChtYWtlX3BhaXIoMiwgMykpOwotICAgIGlmaWIuaW5zZXJ0KG1ha2VfcGFpcigxLCAxKSk7
Ci0gICAgaWZpYi5pbnNlcnQobWFrZV9wYWlyKDMsIDQpKTsKLSAgICBpZmliLmluc2VydChtYWtl
X3BhaXIoMSwgMikpOwotICAgIGlmaWIuaW5zZXJ0KG1ha2VfcGFpcig1LCA1KSk7Ci0gICAgRVhQ
RUNUX1RIQVQoaWZpYiwgV2hlblNvcnRlZChFbGVtZW50c0FyZShQYWlyKDEsIDEpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigxLCAyKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoMiwgMyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDMsIDQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcig1LCA1KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoOCwgNikpKSk7
Ci0gICAgRVhQRUNUX1RIQVQoaWZpYiwgTm90KFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoUGFpcig4
LCA2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWlyKDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhaXIoMSwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFpcigzLCA0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYWlyKDEsIDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhaXIoNSwgNSkpKSkpOwotfQotCi1URVNUKFdoZW5Tb3J0ZWRU
ZXN0LCBXb3Jrc0ZvclBvbHltb3JwaGljTWF0Y2hlcikgewotICAgIHN0ZDo6ZGVxdWU8aW50PiBk
OwotICAgIGQucHVzaF9iYWNrKDIpOwotICAgIGQucHVzaF9iYWNrKDEpOwotICAgIEVYUEVDVF9U
SEFUKGQsIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMSwgMikpKTsKLSAgICBFWFBFQ1RfVEhBVChk
LCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgyLCAxKSkpKTsKLX0KLQotVEVTVChXaGVuU29y
dGVkVGVzdCwgV29ya3NGb3JWZWN0b3JDb25zdFJlZk1hdGNoZXIpIHsKLSAgICBzdGQ6OmRlcXVl
PGludD4gZDsKLSAgICBkLnB1c2hfYmFjaygyKTsKLSAgICBkLnB1c2hfYmFjaygxKTsKLSAgICBN
YXRjaGVyPGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mPiB2ZWN0b3JfbWF0Y2ggPSBFbGVtZW50c0Fy
ZSgxLCAyKTsKLSAgICBFWFBFQ1RfVEhBVChkLCBXaGVuU29ydGVkKHZlY3Rvcl9tYXRjaCkpOwot
ICAgIE1hdGNoZXI8Y29uc3Qgc3RkOjp2ZWN0b3I8aW50PiY+IG5vdF92ZWN0b3JfbWF0Y2ggPSBF
bGVtZW50c0FyZSgyLCAxKTsKLSAgICBFWFBFQ1RfVEhBVChkLCBOb3QoV2hlblNvcnRlZChub3Rf
dmVjdG9yX21hdGNoKSkpOwotfQotCi0vLyBEZWxpYmVyYXRlbHkgYmFyZSBwc2V1ZG8tY29udGFp
bmVyLgotLy8gT2ZmZXJzIG9ubHkgYmVnaW4oKSBhbmQgZW5kKCkgYWNjZXNzb3JzLCB5aWVsZGlu
ZyBJbnB1dEl0ZXJhdG9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTdHJlYW1saWtl
IHsKLSBwcml2YXRlOgotICBjbGFzcyBDb25zdEl0ZXI7Ci0gcHVibGljOgotICB0eXBlZGVmIENv
bnN0SXRlciBjb25zdF9pdGVyYXRvcjsKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEluSXRlcj4KLSAgU3RyZWFtbGlrZShJbkl0ZXIgZmlyc3QsIEluSXRl
ciBsYXN0KSA6IHJlbWFpbmRlcl8oZmlyc3QsIGxhc3QpIHt9Ci0KLSAgY29uc3RfaXRlcmF0b3Ig
YmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHJlbWFpbmRl
cl8uYmVnaW4oKSk7Ci0gIH0KLSAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgewotICAgIHJl
dHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCByZW1haW5kZXJfLmVuZCgpKTsKLSAgfQotCi0gcHJp
dmF0ZToKLSAgY2xhc3MgQ29uc3RJdGVyIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjppbnB1
dF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0
cmRpZmZfdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dmFsdWVfdHlwZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZhbHVlX3R5cGUmPiB7Ci0gICBwdWJsaWM6Ci0gICAgQ29uc3RJdGVyKGNvbnN0IFN0cmVh
bWxpa2UqIHMsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6bGlzdDx2YWx1ZV90eXBlPjo6
aXRlcmF0b3IgcG9zKQotICAgICAgICA6IHNfKHMpLCBwb3NfKHBvcykge30KLQotICAgIGNvbnN0
IHZhbHVlX3R5cGUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpwb3NfOyB9Ci0gICAgY29u
c3QgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYqcG9zXzsgfQotICAg
IENvbnN0SXRlciYgb3BlcmF0b3IrKygpIHsKLSAgICAgIHNfLT5yZW1haW5kZXJfLmVyYXNlKHBv
c18rKyk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gKml0ZXIrKyBpcyBy
ZXF1aXJlZCB0byB3b3JrIChzZWUgc3RkOjppc3RyZWFtYnVmX2l0ZXJhdG9yKS4KLSAgICAvLyAo
dm9pZClpdGVyKysgaXMgYWxzbyByZXF1aXJlZCB0byB3b3JrLgotICAgIGNsYXNzIFBvc3RJbmNy
UHJveHkgewotICAgICBwdWJsaWM6Ci0gICAgICBleHBsaWNpdCBQb3N0SW5jclByb3h5KGNvbnN0
IHZhbHVlX3R5cGUmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KLSAgICAgIHZhbHVlX3R5cGUg
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0gICAgIHByaXZhdGU6Ci0gICAg
ICB2YWx1ZV90eXBlIHZhbHVlXzsKLSAgICB9OwotICAgIFBvc3RJbmNyUHJveHkgb3BlcmF0b3Ir
KyhpbnQpIHsKLSAgICAgIFBvc3RJbmNyUHJveHkgcHJveHkoKip0aGlzKTsKLSAgICAgICsrKCp0
aGlzKTsKLSAgICAgIHJldHVybiBwcm94eTsKLSAgICB9Ci0KLSAgICBmcmllbmQgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbnN0SXRlciYgYSwgY29uc3QgQ29uc3RJdGVyJiBiKSB7Ci0gICAgICBy
ZXR1cm4gYS5zXyA9PSBiLnNfICYmIGEucG9zXyA9PSBiLnBvc187Ci0gICAgfQotICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RJdGVyJiBhLCBjb25zdCBDb25zdEl0ZXImIGIp
IHsKLSAgICAgIHJldHVybiAhKGEgPT0gYik7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIGNv
bnN0IFN0cmVhbWxpa2UqIHNfOwotICAgIHR5cGVuYW1lIHN0ZDo6bGlzdDx2YWx1ZV90eXBlPjo6
aXRlcmF0b3IgcG9zXzsKLSAgfTsKLQotICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWxpa2UmIHMpIHsKLSAgICBvcyA8PCAiWyI7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Omxpc3Q8dmFsdWVfdHlwZT46OmNvbnN0X2l0ZXJh
dG9yIEl0ZXI7Ci0gICAgY29uc3QgY2hhciogc2VwID0gIiI7Ci0gICAgZm9yIChJdGVyIGl0ID0g
cy5yZW1haW5kZXJfLmJlZ2luKCk7IGl0ICE9IHMucmVtYWluZGVyXy5lbmQoKTsgKytpdCkgewot
ICAgICAgb3MgPDwgc2VwIDw8ICppdDsKLSAgICAgIHNlcCA9ICIsIjsKLSAgICB9Ci0gICAgb3Mg
PDwgIl0iOwotICAgIHJldHVybiBvczsKLSAgfQotCi0gIG11dGFibGUgc3RkOjpsaXN0PHZhbHVl
X3R5cGU+IHJlbWFpbmRlcl87ICAvLyBtb2RpZmllZCBieSBpdGVyYXRpb24KLX07Ci0KLVRFU1Qo
U3RyZWFtbGlrZVRlc3QsIEl0ZXJhdGlvbikgewotICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0
LCA1LCAzfTsKLSAgU3RyZWFtbGlrZTxpbnQ+IHMoYSwgYSArIDUpOwotICBTdHJlYW1saWtlPGlu
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcy5iZWdpbigpOwotICBjb25zdCBpbnQqIGlwID0gYTsK
LSAgd2hpbGUgKGl0ICE9IHMuZW5kKCkpIHsKLSAgICBTQ09QRURfVFJBQ0UoaXAgLSBhKTsKLSAg
ICBFWFBFQ1RfRVEoKmlwKyssICppdCsrKTsKLSAgfQotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9G
T1JXQVJEX0xJU1RfCi1URVNUKEJlZ2luRW5kRGlzdGFuY2VJc1Rlc3QsIFdvcmtzV2l0aEZvcndh
cmRMaXN0KSB7Ci0gIHN0ZDo6Zm9yd2FyZF9saXN0PGludD4gY29udGFpbmVyOwotICBFWFBFQ1Rf
VEhBVChjb250YWluZXIsIEJlZ2luRW5kRGlzdGFuY2VJcygwKSk7Ci0gIEVYUEVDVF9USEFUKGNv
bnRhaW5lciwgTm90KEJlZ2luRW5kRGlzdGFuY2VJcygxKSkpOwotICBjb250YWluZXIucHVzaF9m
cm9udCgwKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoQmVnaW5FbmREaXN0YW5jZUlz
KDApKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQmVnaW5FbmREaXN0YW5jZUlzKDEpKTsK
LSAgY29udGFpbmVyLnB1c2hfZnJvbnQoMCk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90
KEJlZ2luRW5kRGlzdGFuY2VJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIEJlZ2lu
RW5kRGlzdGFuY2VJcygyKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9M
SVNUXwotCi1URVNUKEJlZ2luRW5kRGlzdGFuY2VJc1Rlc3QsIFdvcmtzV2l0aE5vblN0ZExpc3Qp
IHsKLSAgY29uc3QgaW50IGFbNV0gPSB7MSwgMiwgMywgNCwgNX07Ci0gIFN0cmVhbWxpa2U8aW50
PiBzKGEsIGEgKyA1KTsKLSAgRVhQRUNUX1RIQVQocywgQmVnaW5FbmREaXN0YW5jZUlzKDUpKTsK
LX0KLQotVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAg
TWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBCZWdpbkVuZERpc3RhbmNlSXMoMik7Ci0gIEVYUEVD
VF9FUSgiZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSBpcyBlcXVhbCB0byAyIiwg
RGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoImRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQg
ZW5kKCkgaXNuJ3QgZXF1YWwgdG8gMiIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0p
KTsKLX0KLQotVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBFeHBsYWluc1Jlc3VsdCkgewot
ICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTEgPSBCZWdpbkVuZERpc3RhbmNlSXMoMik7Ci0gIE1h
dGNoZXI8dmVjdG9yPGludD4gPiBtMiA9IEJlZ2luRW5kRGlzdGFuY2VJcyhMdCgyKSk7Ci0gIE1h
dGNoZXI8dmVjdG9yPGludD4gPiBtMyA9IEJlZ2luRW5kRGlzdGFuY2VJcyhBbnlPZigwLCAzKSk7
Ci0gIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtNCA9IEJlZ2luRW5kRGlzdGFuY2VJcyhHcmVhdGVy
VGhhbigxKSk7Ci0gIHZlY3RvcjxpbnQ+IGNvbnRhaW5lcjsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBk
aXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgZG9lc24ndCBtYXRjaCIsCi0gICAg
ICAgICAgICBFeHBsYWluKG0xLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBkaXN0
YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgbWF0Y2hlcyIsCi0gICAgICAgICAgICBF
eHBsYWluKG0yLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBkaXN0YW5jZSBiZXR3
ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgbWF0Y2hlcyIsCi0gICAgICAgICAgICBFeHBsYWluKG0z
LCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKAotICAgICAgIndob3NlIGRpc3RhbmNlIGJldHdl
ZW4gYmVnaW4oKSBhbmQgZW5kKCkgMCBkb2Vzbid0IG1hdGNoLCB3aGljaCBpcyAxICIKLSAgICAg
ICJsZXNzIHRoYW4gMSIsCi0gICAgICBFeHBsYWluKG00LCBjb250YWluZXIpKTsKLSAgY29udGFp
bmVyLnB1c2hfYmFjaygwKTsKLSAgY29udGFpbmVyLnB1c2hfYmFjaygwKTsKLSAgRVhQRUNUX0VR
KCJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgbWF0Y2hlcyIsCi0g
ICAgICAgICAgICBFeHBsYWluKG0xLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBk
aXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgZG9lc24ndCBtYXRjaCIsCi0gICAg
ICAgICAgICBFeHBsYWluKG0yLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBkaXN0
YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgZG9lc24ndCBtYXRjaCIsCi0gICAgICAg
ICAgICBFeHBsYWluKG0zLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKAotICAgICAgIndob3Nl
IGRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgMiBtYXRjaGVzLCB3aGljaCBpcyAx
IG1vcmUgIgotICAgICAgInRoYW4gMSIsCi0gICAgICBFeHBsYWluKG00LCBjb250YWluZXIpKTsK
LX0KLQotVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JTdHJlYW1saWtlKSB7Ci0gIC8vIFN0
cmVhbWxpa2UgJ2NvbnRhaW5lcicgcHJvdmlkZXMgb25seSBtaW5pbWFsIGl0ZXJhdG9yIHN1cHBv
cnQuCi0gIC8vIEl0cyBpdGVyYXRvcnMgYXJlIHRhZ2dlZCB3aXRoIGlucHV0X2l0ZXJhdG9yX3Rh
Zy4KLSAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307Ci0gIFN0cmVhbWxpa2U8aW50
PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIEVYUEVDVF9USEFUKHMsIFdoZW5T
b3J0ZWQoRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpKTsKLSAgRVhQRUNUX1RIQVQocywgTm90
KFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMiwgMSwgNCwgNSwgMykpKSk7Ci19Ci0KLVRFU1QoV2hl
blNvcnRlZFRlc3QsIFdvcmtzRm9yVmVjdG9yQ29uc3RSZWZNYXRjaGVyT25TdHJlYW1saWtlKSB7
Ci0gIGNvbnN0IGludCBhW10gPSB7MiwgMSwgNCwgNSwgM307Ci0gIFN0cmVhbWxpa2U8aW50PiBz
KGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjp2ZWN0
b3I8aW50PiY+IHZlY3Rvcl9tYXRjaCA9IEVsZW1lbnRzQXJlKDEsIDIsIDMsIDQsIDUpOwotICBF
WFBFQ1RfVEhBVChzLCBXaGVuU29ydGVkKHZlY3Rvcl9tYXRjaCkpOwotICBFWFBFQ1RfVEhBVChz
LCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgyLCAxLCA0LCA1LCAzKSkpKTsKLX0KLQotLy8g
VGVzdHMgdXNpbmcgRWxlbWVudHNBcmUoKSBhbmQgRWxlbWVudHNBcmVBcnJheSgpIHdpdGggc3Ry
ZWFtLWxpa2UKLS8vICJjb250YWluZXJzIi4KLQotVEVTVChFbGVtZW5zQXJlU3RyZWFtVGVzdCwg
V29ya3NGb3JTdHJlYW1saWtlKSB7Ci0gIGNvbnN0IGludCBhWzVdID0gezEsIDIsIDMsIDQsIDV9
OwotICBTdHJlYW1saWtlPGludD4gcyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBF
WFBFQ1RfVEhBVChzLCBFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1KSk7Ci0gIEVYUEVDVF9USEFU
KHMsIE5vdChFbGVtZW50c0FyZSgyLCAxLCA0LCA1LCAzKSkpOwotfQotCi1URVNUKEVsZW1lbnNB
cmVBcnJheVN0cmVhbVRlc3QsIFdvcmtzRm9yU3RyZWFtbGlrZSkgewotICBjb25zdCBpbnQgYVs1
XSA9IHsxLCAyLCAzLCA0LCA1fTsKLSAgU3RyZWFtbGlrZTxpbnQ+IHMoYSwgYSArIEdURVNUX0FS
UkFZX1NJWkVfKGEpKTsKLQotICB2ZWN0b3I8aW50PiBleHBlY3RlZDsKLSAgZXhwZWN0ZWQucHVz
aF9iYWNrKDEpOwotICBleHBlY3RlZC5wdXNoX2JhY2soMik7Ci0gIGV4cGVjdGVkLnB1c2hfYmFj
aygzKTsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDQpOwotICBleHBlY3RlZC5wdXNoX2JhY2soNSk7
Ci0gIEVYUEVDVF9USEFUKHMsIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsKLQotICBleHBl
Y3RlZFszXSA9IDA7Ci0gIEVYUEVDVF9USEFUKHMsIE5vdChFbGVtZW50c0FyZUFycmF5KGV4cGVj
dGVkKSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoVW5jb3B5YWJsZSkg
ewotICBVbmNvcHlhYmxlIG9ianNbMl07Ci0gIG9ianNbMF0uc2V0X3ZhbHVlKC0zKTsKLSAgb2Jq
c1sxXS5zZXRfdmFsdWUoMSk7Ci0gIEVYUEVDVF9USEFUKG9ianMsIEVsZW1lbnRzQXJlKFVuY29w
eWFibGVJcygtMyksIFRydWx5KFZhbHVlSXNQb3NpdGl2ZSkpKTsKLX0KLQotVEVTVChFbGVtZW50
c0FyZVRlc3QsIFRha2VzU3RsQ29udGFpbmVyKSB7Ci0gIGNvbnN0IGludCBhY3R1YWxbXSA9IHsz
LCAxLCAyfTsKLQotICA6OnN0ZDo6bGlzdDxpbnQ+IGV4cGVjdGVkOwotICBleHBlY3RlZC5wdXNo
X2JhY2soMyk7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjaygxKTsKLSAgZXhwZWN0ZWQucHVzaF9iYWNr
KDIpOwotICBFWFBFQ1RfVEhBVChhY3R1YWwsIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsK
LQotICBleHBlY3RlZC5wdXNoX2JhY2soNCk7Ci0gIEVYUEVDVF9USEFUKGFjdHVhbCwgTm90KEVs
ZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Ci19Ci0KLS8vIFRlc3RzIGZvciBVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KCkKLQotVEVTVChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5VGVzdCwg
U3VjY2VlZHNXaGVuRXhwZWN0ZWQpIHsKLSAgY29uc3QgaW50IGFbXSA9IHswLCAxLCAyLCAzLCA0
fTsKLSAgc3RkOjp2ZWN0b3I8aW50PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0g
IGRvIHsKLSAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOwotICAgIEVYUEVD
VF9UUlVFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAmbGlzdGVuZXIpKSA8PCBsaXN0
ZW5lci5zdHIoKTsKLSAgfSB3aGlsZSAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKHMuYmVnaW4oKSwg
cy5lbmQoKSkpOwotfQotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBWZWN0
b3JCb29sKSB7Ci0gIGNvbnN0IGJvb2wgYVtdID0gezAsIDEsIDAsIDEsIDF9OwotICBjb25zdCBi
b29sIGJbXSA9IHsxLCAwLCAxLCAxLCAwfTsKLSAgc3RkOjp2ZWN0b3I8Ym9vbD4gZXhwZWN0ZWQo
YSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKLSAgc3RkOjp2ZWN0b3I8Ym9vbD4gYWN0dWFs
KGIsIGIgKyBHVEVTVF9BUlJBWV9TSVpFXyhiKSk7Ci0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVu
ZXIgbGlzdGVuZXI7Ci0gIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdHVhbCwgJmxpc3RlbmVyKSkgPDwgbGlzdGVuZXIuc3RyKCk7Ci19Ci0KLVRFU1QoVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFdvcmtzRm9yU3RyZWFtbGlrZSkgewotICAvLyBT
dHJlYW1saWtlICdjb250YWluZXInIHByb3ZpZGVzIG9ubHkgbWluaW1hbCBpdGVyYXRvciBzdXBw
b3J0LgotICAvLyBJdHMgaXRlcmF0b3JzIGFyZSB0YWdnZWQgd2l0aCBpbnB1dF9pdGVyYXRvcl90
YWcsIGFuZCBpdCBoYXMgbm8KLSAgLy8gc2l6ZSgpIG9yIGVtcHR5KCkgbWV0aG9kcy4KLSAgY29u
c3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307Ci0gIFN0cmVhbWxpa2U8aW50PiBzKGEsIGEg
KyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0KLSAgOjpzdGQ6OnZlY3RvcjxpbnQ+IGV4cGVjdGVk
OwotICBleHBlY3RlZC5wdXNoX2JhY2soMSk7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjaygyKTsKLSAg
ZXhwZWN0ZWQucHVzaF9iYWNrKDMpOwotICBleHBlY3RlZC5wdXNoX2JhY2soNCk7Ci0gIGV4cGVj
dGVkLnB1c2hfYmFjayg1KTsKLSAgRVhQRUNUX1RIQVQocywgVW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheShleHBlY3RlZCkpOwotCi0gIGV4cGVjdGVkLnB1c2hfYmFjayg2KTsKLSAgRVhQRUNUX1RI
QVQocywgTm90KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKSk7Ci19Ci0KLVRF
U1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFRha2VzU3RsQ29udGFpbmVyKSB7Ci0g
IGNvbnN0IGludCBhY3R1YWxbXSA9IHszLCAxLCAyfTsKLQotICA6OnN0ZDo6bGlzdDxpbnQ+IGV4
cGVjdGVkOwotICBleHBlY3RlZC5wdXNoX2JhY2soMSk7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjaygy
KTsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDMpOwotICBFWFBFQ1RfVEhBVChhY3R1YWwsIFVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsKLQotICBleHBlY3RlZC5wdXNoX2JhY2so
NCk7Ci0gIEVYUEVDVF9USEFUKGFjdHVhbCwgTm90KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXko
ZXhwZWN0ZWQpKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi0K
LVRFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFRha2VzSW5pdGlhbGl6ZXJMaXN0
KSB7Ci0gIGNvbnN0IGludCBhWzVdID0gezIsIDEsIDQsIDUsIDN9OwotICBFWFBFQ1RfVEhBVChh
LCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHsxLCAyLCAzLCA0LCA1fSkpOwotICBFWFBFQ1Rf
VEhBVChhLCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7MSwgMiwgMywgNCwgNn0pKSk7
Ci19Ci0KLVRFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheVRlc3QsIFRha2VzSW5pdGlhbGl6
ZXJMaXN0T2ZDU3RyaW5ncykgewotICBjb25zdCBzdGQ6OnN0cmluZyBhWzVdID0geyJhIiwgImIi
LCAiYyIsICJkIiwgImUifTsKLSAgRVhQRUNUX1RIQVQoYSwgVW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheSh7ImEiLCAiYiIsICJjIiwgImQiLCAiZSJ9KSk7Ci0gIEVYUEVDVF9USEFUKGEsIE5vdChV
bm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHsiYSIsICJiIiwgImMiLCAiZCIsICJlZiJ9KSkpOwot
fQotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBUYWtlc0luaXRpYWxpemVy
TGlzdE9mU2FtZVR5cGVkTWF0Y2hlcnMpIHsKLSAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwg
NSwgM307Ci0gIEVYUEVDVF9USEFUKGEsIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoCi0gICAg
ICB7RXEoMSksIEVxKDIpLCBFcSgzKSwgRXEoNCksIEVxKDUpfSkpOwotICBFWFBFQ1RfVEhBVChh
LCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgKLSAgICAgIHtFcSgxKSwgRXEoMiksIEVx
KDMpLCBFcSg0KSwgRXEoNil9KSkpOwotfQotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJy
YXlUZXN0LAotICAgICBUYWtlc0luaXRpYWxpemVyTGlzdE9mRGlmZmVyZW50VHlwZWRNYXRjaGVy
cykgewotICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0LCA1LCAzfTsKLSAgLy8gVGhlIGNvbXBp
bGVyIGNhbm5vdCBpbmZlciB0aGUgdHlwZSBvZiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBpZiBpdHMK
LSAgLy8gZWxlbWVudHMgaGF2ZSBkaWZmZXJlbnQgdHlwZXMuICBXZSBtdXN0IGV4cGxpY2l0bHkg
c3BlY2lmeSB0aGUKLSAgLy8gdW5pZmllZCBlbGVtZW50IHR5cGUgaW4gdGhpcyBjYXNlLgotICBF
WFBFQ1RfVEhBVChhLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5PE1hdGNoZXI8aW50PiA+KAot
ICAgICAge0VxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0KSwgRXEoNSl9KSk7Ci0gIEVYUEVDVF9U
SEFUKGEsIE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5PE1hdGNoZXI8aW50PiA+KAotICAg
ICAge0VxKDEpLCBOZSgtMiksIEdlKDMpLCBMZSg0KSwgRXEoNil9KSkpOwotfQotCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KLQotY2xhc3MgVW5vcmRlcmVkRWxl
bWVudHNBcmVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdHlw
ZWRlZiBzdGQ6OnZlY3RvcjxpbnQ+IEludFZlYzsKLX07Ci0KLVRFU1RfRihVbm9yZGVyZWRFbGVt
ZW50c0FyZVRlc3QsIFdvcmtzV2l0aFVuY29weWFibGUpIHsKLSAgVW5jb3B5YWJsZSBvYmpzWzJd
OwotICBvYmpzWzBdLnNldF92YWx1ZSgtMyk7Ci0gIG9ianNbMV0uc2V0X3ZhbHVlKDEpOwotICBF
WFBFQ1RfVEhBVChvYmpzLAotICAgICAgICAgICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZShUcnVs
eShWYWx1ZUlzUG9zaXRpdmUpLCBVbmNvcHlhYmxlSXMoLTMpKSk7Ci19Ci0KLVRFU1RfRihVbm9y
ZGVyZWRFbGVtZW50c0FyZVRlc3QsIFN1Y2NlZWRzV2hlbkV4cGVjdGVkKSB7Ci0gIGNvbnN0IGlu
dCBhW10gPSB7MSwgMiwgM307Ci0gIHN0ZDo6dmVjdG9yPGludD4gcyhhLCBhICsgR1RFU1RfQVJS
QVlfU0laRV8oYSkpOwotICBkbyB7Ci0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0
ZW5lcjsKLSAgICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxlbWVu
dHNBcmUoMSwgMiwgMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsICZs
aXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOwotICB9IHdoaWxlIChzdGQ6Om5leHRfcGVybXV0
YXRpb24ocy5iZWdpbigpLCBzLmVuZCgpKSk7Ci19Ci0KLVRFU1RfRihVbm9yZGVyZWRFbGVtZW50
c0FyZVRlc3QsIEZhaWxzV2hlbkFuRWxlbWVudE1hdGNoZXNOb01hdGNoZXIpIHsKLSAgY29uc3Qg
aW50IGFbXSA9IHsxLCAyLCAzfTsKLSAgc3RkOjp2ZWN0b3I8aW50PiBzKGEsIGEgKyBHVEVTVF9B
UlJBWV9TSVpFXyhhKSk7Ci0gIHN0ZDo6dmVjdG9yPE1hdGNoZXI8aW50PiA+IG12OwotICBtdi5w
dXNoX2JhY2soMSk7Ci0gIG12LnB1c2hfYmFjaygyKTsKLSAgbXYucHVzaF9iYWNrKDIpOwotICAv
LyBUaGUgZWxlbWVudCB3aXRoIHZhbHVlICczJyBtYXRjaGVzIG5vdGhpbmc6IGZhaWwgZmFzdC4K
LSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgRVhQRUNUX0ZBTFNFKEV4
cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KG12KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAmbGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIo
KTsKLX0KLQotVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgV29ya3NGb3JTdHJlYW1s
aWtlKSB7Ci0gIC8vIFN0cmVhbWxpa2UgJ2NvbnRhaW5lcicgcHJvdmlkZXMgb25seSBtaW5pbWFs
IGl0ZXJhdG9yIHN1cHBvcnQuCi0gIC8vIEl0cyBpdGVyYXRvcnMgYXJlIHRhZ2dlZCB3aXRoIGlu
cHV0X2l0ZXJhdG9yX3RhZywgYW5kIGl0IGhhcyBubwotICAvLyBzaXplKCkgb3IgZW1wdHkoKSBt
ZXRob2RzLgotICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0LCA1LCAzfTsKLSAgU3RyZWFtbGlr
ZTxpbnQ+IHMoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKLQotICBFWFBFQ1RfVEhBVChz
LCBVbm9yZGVyZWRFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1KSk7Ci0gIEVYUEVDVF9USEFUKHMs
IE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZSgyLCAyLCAzLCA0LCA1KSkpOwotfQotCi0vLyBPbmUg
bmFpdmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1hdGNoZXIgcnVucyBpbiBPKE4hKSB0aW1lLCB3
aGljaCBpcyB0b28KLS8vIHNsb3cgZm9yIG1hbnkgcmVhbC13b3JsZCBpbnB1dHMuIFRoaXMgdGVz
dCBzaG93cyB0aGF0IG91ciBtYXRjaGVyIGNhbiBtYXRjaAotLy8gMTAwIGlucHV0cyB2ZXJ5IHF1
aWNrbHkgKGEgZmV3IG1pbGxpc2Vjb25kcykuICBBbiBPKDEwMCEpIGlzIDEwXjE1OAotLy8gaXRl
cmF0aW9ucyBhbmQgb2J2aW91c2x5IGVmZmVjdGl2ZWx5IGluY29tcHV0YWJsZS4KLS8vIFsgUlVO
ICAgICAgXSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9ybWFuY2UKLS8vIFsgICAgICAg
T0sgXSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9ybWFuY2UgKDQgbXMpCi1URVNUX0Yo
VW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBQZXJmb3JtYW5jZSkgewotICBzdGQ6OnZlY3Rvcjxp
bnQ+IHM7Ci0gIHN0ZDo6dmVjdG9yPE1hdGNoZXI8aW50PiA+IG12OwotICBmb3IgKGludCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgcy5wdXNoX2JhY2soaSk7Ci0gICAgbXYucHVzaF9iYWNr
KF8pOwotICB9Ci0gIG12WzUwXSA9IEVxKDApOwotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVy
IGxpc3RlbmVyOwotICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxl
bWVudHNBcmVBcnJheShtdiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAm
bGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKLX0KLQotLy8gQW5vdGhlciB2YXJpYW50IG9m
ICdQZXJmb3JtYW5jZScgd2l0aCBzaW1pbGFyIGV4cGVjdGF0aW9ucy4KLS8vIFsgUlVOICAgICAg
XSBVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QuUGVyZm9ybWFuY2VIYWxmU3RyaWN0Ci0vLyBbICAg
ICAgIE9LIF0gVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LlBlcmZvcm1hbmNlSGFsZlN0cmljdCAo
NCBtcykKLVRFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIFBlcmZvcm1hbmNlSGFsZlN0
cmljdCkgewotICBzdGQ6OnZlY3RvcjxpbnQ+IHM7Ci0gIHN0ZDo6dmVjdG9yPE1hdGNoZXI8aW50
PiA+IG12OwotICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0gICAgcy5wdXNoX2Jh
Y2soaSk7Ci0gICAgaWYgKGkgJiAxKSB7Ci0gICAgICBtdi5wdXNoX2JhY2soXyk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIG12LnB1c2hfYmFjayhpKTsKLSAgICB9Ci0gIH0KLSAgU3RyaW5nTWF0Y2hS
ZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgRVhQRUNUX1RSVUUoRXhwbGFpbk1hdGNoUmVzdWx0
KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkobXYpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcywgJmxpc3RlbmVyKSkgPDwgbGlzdGVuZXIuc3RyKCk7Ci19Ci0KLVRFU1RfRihV
bm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlQ291bnRXcm9uZykgewotICBzdGQ6
OnZlY3RvcjxpbnQ+IHY7Ci0gIHYucHVzaF9iYWNrKDQpOwotICBTdHJpbmdNYXRjaFJlc3VsdExp
c3RlbmVyIGxpc3RlbmVyOwotICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3Jk
ZXJlZEVsZW1lbnRzQXJlKDEsIDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHYsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOwotICBFWFBFQ1RfVEhBVChsaXN0
ZW5lci5zdHIoKSwgRXEoIndoaWNoIGhhcyAxIGVsZW1lbnQiKSk7Ci19Ci0KLVRFU1RfRihVbm9y
ZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlQ291bnRXcm9uZ1plcm8pIHsKLSAgc3Rk
Ojp2ZWN0b3I8aW50PiB2OwotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOwot
ICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3JkZXJlZEVsZW1lbnRzQXJlKDEs
IDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsICZsaXN0ZW5lcikp
IDw8IGxpc3RlbmVyLnN0cigpOwotICBFWFBFQ1RfVEhBVChsaXN0ZW5lci5zdHIoKSwgRXEoIiIp
KTsKLX0KLQotVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgRmFpbE1lc3NhZ2VVbm1h
dGNoZWRNYXRjaGVycykgewotICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Ci0gIHYucHVzaF9iYWNrKDEp
OwotICB2LnB1c2hfYmFjaygxKTsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5l
cjsKLSAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0Fy
ZSgxLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCAmbGlzdGVuZXIp
KSA8PCBsaXN0ZW5lci5zdHIoKTsKLSAgRVhQRUNUX1RIQVQoCi0gICAgICBsaXN0ZW5lci5zdHIo
KSwKLSAgICAgIEVxKCJ3aGVyZSB0aGUgZm9sbG93aW5nIG1hdGNoZXJzIGRvbid0IG1hdGNoIGFu
eSBlbGVtZW50czpcbiIKLSAgICAgICAgICJtYXRjaGVyICMxOiBpcyBlcXVhbCB0byAyIikpOwot
fQotCi1URVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBGYWlsTWVzc2FnZVVubWF0Y2hl
ZEVsZW1lbnRzKSB7Ci0gIHN0ZDo6dmVjdG9yPGludD4gdjsKLSAgdi5wdXNoX2JhY2soMSk7Ci0g
IHYucHVzaF9iYWNrKDIpOwotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOwot
ICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3JkZXJlZEVsZW1lbnRzQXJlKDEs
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsICZsaXN0ZW5lcikpIDw8
IGxpc3RlbmVyLnN0cigpOwotICBFWFBFQ1RfVEhBVCgKLSAgICAgIGxpc3RlbmVyLnN0cigpLAot
ICAgICAgRXEoIndoZXJlIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgZG9uJ3QgbWF0Y2ggYW55IG1h
dGNoZXJzOlxuIgotICAgICAgICAgImVsZW1lbnQgIzE6IDIiKSk7Ci19Ci0KLVRFU1RfRihVbm9y
ZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlVW5tYXRjaGVkTWF0Y2hlckFuZEVsZW1l
bnQpIHsKLSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotICB2LnB1c2hfYmFjaygyKTsKLSAgdi5wdXNo
X2JhY2soMyk7Ci0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7Ci0gIEVYUEVD
VF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgMiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgJmxpc3RlbmVyKSkgPDwgbGlzdGVu
ZXIuc3RyKCk7Ci0gIEVYUEVDVF9USEFUKAotICAgICAgbGlzdGVuZXIuc3RyKCksCi0gICAgICBF
cSgid2hlcmUiCi0gICAgICAgICAiIHRoZSBmb2xsb3dpbmcgbWF0Y2hlcnMgZG9uJ3QgbWF0Y2gg
YW55IGVsZW1lbnRzOlxuIgotICAgICAgICAgIm1hdGNoZXIgIzA6IGlzIGVxdWFsIHRvIDFcbiIK
LSAgICAgICAgICJhbmQiCi0gICAgICAgICAiIHdoZXJlIgotICAgICAgICAgIiB0aGUgZm9sbG93
aW5nIGVsZW1lbnRzIGRvbid0IG1hdGNoIGFueSBtYXRjaGVyczpcbiIKLSAgICAgICAgICJlbGVt
ZW50ICMxOiAzIikpOwotfQotCi0vLyBUZXN0IGhlbHBlciBmb3IgZm9ybWF0dGluZyBlbGVtZW50
LCBtYXRjaGVyIGluZGV4IHBhaXJzIGluIGV4cGVjdGF0aW9ucy4KLXN0YXRpYyBzdGQ6OnN0cmlu
ZyBFTVN0cmluZyhpbnQgZWxlbWVudCwgaW50IG1hdGNoZXIpIHsKLSAgc3RyaW5nc3RyZWFtIHNz
OwotICBzcyA8PCAiKGVsZW1lbnQgIyIgPDwgZWxlbWVudCA8PCAiLCBtYXRjaGVyICMiIDw8IG1h
dGNoZXIgPDwgIikiOwotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLVRFU1RfRihVbm9yZGVyZWRF
bGVtZW50c0FyZVRlc3QsIEZhaWxNZXNzYWdlSW1wZXJmZWN0TWF0Y2hPbmx5KSB7Ci0gIC8vIEEg
c2l0dWF0aW9uIHdoZXJlIGFsbCBlbGVtZW50cyBhbmQgbWF0Y2hlcnMgaGF2ZSBhIG1hdGNoCi0g
IC8vIGFzc29jaWF0ZWQgd2l0aCB0aGVtLCBidXQgdGhlIG1heCBtYXRjaGluZyBpcyBub3QgcGVy
ZmVjdC4KLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHY7Ci0gIHYucHVzaF9iYWNrKCJhIik7
Ci0gIHYucHVzaF9iYWNrKCJiIik7Ci0gIHYucHVzaF9iYWNrKCJjIik7Ci0gIFN0cmluZ01hdGNo
UmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7Ci0gIEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1
bHQoCi0gICAgICBVbm9yZGVyZWRFbGVtZW50c0FyZSgiYSIsICJhIiwgQW55T2YoImIiLCAiYyIp
KSwgdiwgJmxpc3RlbmVyKSkKLSAgICAgIDw8IGxpc3RlbmVyLnN0cigpOwotCi0gIHN0ZDo6c3Ry
aW5nIHByZWZpeCA9Ci0gICAgICAid2hlcmUgbm8gcGVybXV0YXRpb24gb2YgdGhlIGVsZW1lbnRz
IGNhbiBzYXRpc2Z5IGFsbCBtYXRjaGVycywgIgotICAgICAgImFuZCB0aGUgY2xvc2VzdCBtYXRj
aCBpcyAyIG9mIDMgbWF0Y2hlcnMgd2l0aCB0aGUgIgotICAgICAgInBhaXJpbmdzOlxuIjsKLQot
ICAvLyBXZSBoYXZlIHRvIGJlIGEgYml0IGxvb3NlIGhlcmUsIGJlY2F1c2UgdGhlcmUgYXJlIDQg
dmFsaWQgbWF4IG1hdGNoZXMuCi0gIEVYUEVDVF9USEFUKAotICAgICAgbGlzdGVuZXIuc3RyKCks
Ci0gICAgICBBbnlPZihwcmVmaXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMCkgKwotICAgICAg
ICAgICAgICAgICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDEsIDIpICsgIlxufSIsCi0gICAgICAg
ICAgICBwcmVmaXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMSkgKwotICAgICAgICAgICAgICAg
ICAgICAgIixcbiAgIiArIEVNU3RyaW5nKDEsIDIpICsgIlxufSIsCi0gICAgICAgICAgICBwcmVm
aXggKyAie1xuICAiICsgRU1TdHJpbmcoMCwgMCkgKwotICAgICAgICAgICAgICAgICAgICAgIixc
biAgIiArIEVNU3RyaW5nKDIsIDIpICsgIlxufSIsCi0gICAgICAgICAgICBwcmVmaXggKyAie1xu
ICAiICsgRU1TdHJpbmcoMCwgMSkgKwotICAgICAgICAgICAgICAgICAgICAgIixcbiAgIiArIEVN
U3RyaW5nKDIsIDIpICsgIlxufSIpKTsKLX0KLQotVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJl
VGVzdCwgRGVzY3JpYmUpIHsKLSAgRVhQRUNUX1RIQVQoRGVzY3JpYmU8SW50VmVjPihVbm9yZGVy
ZWRFbGVtZW50c0FyZSgpKSwKLSAgICAgICAgICAgICAgRXEoImlzIGVtcHR5IikpOwotICBFWFBF
Q1RfVEhBVCgKLSAgICAgIERlc2NyaWJlPEludFZlYz4oVW5vcmRlcmVkRWxlbWVudHNBcmUoMzQ1
KSksCi0gICAgICBFcSgiaGFzIDEgZWxlbWVudCBhbmQgdGhhdCBlbGVtZW50IGlzIGVxdWFsIHRv
IDM0NSIpKTsKLSAgRVhQRUNUX1RIQVQoCi0gICAgICBEZXNjcmliZTxJbnRWZWM+KFVub3JkZXJl
ZEVsZW1lbnRzQXJlKDExMSwgMjIyLCAzMzMpKSwKLSAgICAgIEVxKCJoYXMgMyBlbGVtZW50cyBh
bmQgdGhlcmUgZXhpc3RzIHNvbWUgcGVybXV0YXRpb24gIgotICAgICAgICAgIm9mIGVsZW1lbnRz
IHN1Y2ggdGhhdDpcbiIKLSAgICAgICAgICIgLSBlbGVtZW50ICMwIGlzIGVxdWFsIHRvIDExMSwg
YW5kXG4iCi0gICAgICAgICAiIC0gZWxlbWVudCAjMSBpcyBlcXVhbCB0byAyMjIsIGFuZFxuIgot
ICAgICAgICAgIiAtIGVsZW1lbnQgIzIgaXMgZXF1YWwgdG8gMzMzIikpOwotfQotCi1URVNUX0Yo
VW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBEZXNjcmliZU5lZ2F0aW9uKSB7Ci0gIEVYUEVDVF9U
SEFUKERlc2NyaWJlTmVnYXRpb248SW50VmVjPihVbm9yZGVyZWRFbGVtZW50c0FyZSgpKSwKLSAg
ICAgICAgICAgICAgRXEoImlzbid0IGVtcHR5IikpOwotICBFWFBFQ1RfVEhBVCgKLSAgICAgIERl
c2NyaWJlTmVnYXRpb248SW50VmVjPihVbm9yZGVyZWRFbGVtZW50c0FyZSgzNDUpKSwKLSAgICAg
IEVxKCJkb2Vzbid0IGhhdmUgMSBlbGVtZW50LCBvciBoYXMgMSBlbGVtZW50IHRoYXQgaXNuJ3Qg
ZXF1YWwgdG8gMzQ1IikpOwotICBFWFBFQ1RfVEhBVCgKLSAgICAgIERlc2NyaWJlTmVnYXRpb248
SW50VmVjPihVbm9yZGVyZWRFbGVtZW50c0FyZSgxMjMsIDIzNCwgMzQ1KSksCi0gICAgICBFcSgi
ZG9lc24ndCBoYXZlIDMgZWxlbWVudHMsIG9yIHRoZXJlIGV4aXN0cyBubyBwZXJtdXRhdGlvbiAi
Ci0gICAgICAgICAib2YgZWxlbWVudHMgc3VjaCB0aGF0OlxuIgotICAgICAgICAgIiAtIGVsZW1l
bnQgIzAgaXMgZXF1YWwgdG8gMTIzLCBhbmRcbiIKLSAgICAgICAgICIgLSBlbGVtZW50ICMxIGlz
IGVxdWFsIHRvIDIzNCwgYW5kXG4iCi0gICAgICAgICAiIC0gZWxlbWVudCAjMiBpcyBlcXVhbCB0
byAzNDUiKSk7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFVzZWQgYXMgYSBjaGVjayBvbiB0aGUg
bW9yZSBjb21wbGV4IG1heCBmbG93IG1ldGhvZCB1c2VkIGluIHRoZQotLy8gcmVhbCB0ZXN0aW5n
OjppbnRlcm5hbDo6RmluZE1heEJpcGFydGl0ZU1hdGNoaW5nLiBUaGlzIG1ldGhvZCBpcwotLy8g
Y29tcGF0aWJsZSBidXQgcnVucyBpbiB3b3JzdC1jYXNlIGZhY3RvcmlhbCB0aW1lLCBzbyB3ZSBv
bmx5Ci0vLyB1c2UgaXQgaW4gdGVzdGluZyBmb3Igc21hbGwgcHJvYmxlbSBzaXplcy4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBHcmFwaD4KLWNsYXNzIEJhY2t0cmFja2luZ01heEJQTVN0YXRlIHsKLSBw
dWJsaWM6Ci0gIC8vIERvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mICdnJy4KLSAgZXhwbGljaXQg
QmFja3RyYWNraW5nTWF4QlBNU3RhdGUoY29uc3QgR3JhcGgqIGcpIDogZ3JhcGhfKGcpIHsgfQot
Ci0gIEVsZW1lbnRNYXRjaGVyUGFpcnMgQ29tcHV0ZSgpIHsKLSAgICBpZiAoZ3JhcGhfLT5MaHNT
aXplKCkgPT0gMCB8fCBncmFwaF8tPlJoc1NpemUoKSA9PSAwKSB7Ci0gICAgICByZXR1cm4gYmVz
dF9zb19mYXJfOwotICAgIH0KLSAgICBsaHNfdXNlZF8uYXNzaWduKGdyYXBoXy0+TGhzU2l6ZSgp
LCBrVW51c2VkKTsKLSAgICByaHNfdXNlZF8uYXNzaWduKGdyYXBoXy0+UmhzU2l6ZSgpLCBrVW51
c2VkKTsKLSAgICBmb3IgKHNpemVfdCBpcmhzID0gMDsgaXJocyA8IGdyYXBoXy0+UmhzU2l6ZSgp
OyArK2lyaHMpIHsKLSAgICAgIG1hdGNoZXNfLmNsZWFyKCk7Ci0gICAgICBSZWN1cnNlSW50byhp
cmhzKTsKLSAgICAgIGlmIChiZXN0X3NvX2Zhcl8uc2l6ZSgpID09IGdyYXBoXy0+UmhzU2l6ZSgp
KQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGJlc3Rfc29fZmFyXzsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgc3RhdGljIGNvbnN0IHNpemVfdCBrVW51c2VkID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigtMSk7Ci0KLSAgdm9pZCBQdXNoTWF0Y2goc2l6ZV90IGxocywgc2l6ZV90IHJocykg
ewotICAgIG1hdGNoZXNfLnB1c2hfYmFjayhFbGVtZW50TWF0Y2hlclBhaXIobGhzLCByaHMpKTsK
LSAgICBsaHNfdXNlZF9bbGhzXSA9IHJoczsKLSAgICByaHNfdXNlZF9bcmhzXSA9IGxoczsKLSAg
ICBpZiAobWF0Y2hlc18uc2l6ZSgpID4gYmVzdF9zb19mYXJfLnNpemUoKSkgewotICAgICAgYmVz
dF9zb19mYXJfID0gbWF0Y2hlc187Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBQb3BNYXRjaCgpIHsK
LSAgICBjb25zdCBFbGVtZW50TWF0Y2hlclBhaXImIGJhY2sgPSBtYXRjaGVzXy5iYWNrKCk7Ci0g
ICAgbGhzX3VzZWRfW2JhY2suZmlyc3RdID0ga1VudXNlZDsKLSAgICByaHNfdXNlZF9bYmFjay5z
ZWNvbmRdID0ga1VudXNlZDsKLSAgICBtYXRjaGVzXy5wb3BfYmFjaygpOwotICB9Ci0KLSAgYm9v
bCBSZWN1cnNlSW50byhzaXplX3QgaXJocykgewotICAgIGlmIChyaHNfdXNlZF9baXJoc10gIT0g
a1VudXNlZCkgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGls
aHMgPSAwOyBpbGhzIDwgZ3JhcGhfLT5MaHNTaXplKCk7ICsraWxocykgewotICAgICAgaWYgKGxo
c191c2VkX1tpbGhzXSAhPSBrVW51c2VkKSB7Ci0gICAgICAgIGNvbnRpbnVlOwotICAgICAgfQot
ICAgICAgaWYgKCFncmFwaF8tPkhhc0VkZ2UoaWxocywgaXJocykpIHsKLSAgICAgICAgY29udGlu
dWU7Ci0gICAgICB9Ci0gICAgICBQdXNoTWF0Y2goaWxocywgaXJocyk7Ci0gICAgICBpZiAoYmVz
dF9zb19mYXJfLnNpemUoKSA9PSBncmFwaF8tPlJoc1NpemUoKSkgewotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICB9Ci0gICAgICBmb3IgKHNpemVfdCBtaSA9IGlyaHMgKyAxOyBtaSA8IGdy
YXBoXy0+UmhzU2l6ZSgpOyArK21pKSB7Ci0gICAgICAgIGlmICghUmVjdXJzZUludG8obWkpKSBy
ZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBQb3BNYXRjaCgpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLSAgfQotCi0gIGNvbnN0IEdyYXBoKiBncmFwaF87ICAvLyBub3Qgb3duZWQKLSAg
c3RkOjp2ZWN0b3I8c2l6ZV90PiBsaHNfdXNlZF87Ci0gIHN0ZDo6dmVjdG9yPHNpemVfdD4gcmhz
X3VzZWRfOwotICBFbGVtZW50TWF0Y2hlclBhaXJzIG1hdGNoZXNfOwotICBFbGVtZW50TWF0Y2hl
clBhaXJzIGJlc3Rfc29fZmFyXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KLWNv
bnN0IHNpemVfdCBCYWNrdHJhY2tpbmdNYXhCUE1TdGF0ZTxHcmFwaD46OmtVbnVzZWQ7Ci0KLX0g
IC8vIG5hbWVzcGFjZQotCi0vLyBJbXBsZW1lbnQgYSBzaW1wbGUgYmFja3RyYWNraW5nIGFsZ29y
aXRobSB0byBkZXRlcm1pbmUgaWYgaXQgaXMgcG9zc2libGUKLS8vIHRvIGZpbmQgb25lIGVsZW1l
bnQgcGVyIG1hdGNoZXIsIHdpdGhvdXQgcmV1c2luZyBlbGVtZW50cy4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBHcmFwaD4KLUVsZW1lbnRNYXRjaGVyUGFpcnMKLUZpbmRCYWNrdHJhY2tpbmdNYXhCUE0o
Y29uc3QgR3JhcGgmIGcpIHsKLSAgcmV0dXJuIEJhY2t0cmFja2luZ01heEJQTVN0YXRlPEdyYXBo
PigmZykuQ29tcHV0ZSgpOwotfQotCi1jbGFzcyBCYWNrdHJhY2tpbmdCUE1UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7IH07Ci0KLS8vIFRlc3RzIHRoZSBNYXhCaXBhcnRpdGVNYXRjaGlu
ZyBhbGdvcml0aG0gd2l0aCBzcXVhcmUgbWF0cmljZXMuCi0vLyBUaGUgc2luZ2xlIGludCBwYXJh
bSBpcyB0aGUgIyBvZiBub2RlcyBvbiBlYWNoIG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcy4K
LWNsYXNzIEJpcGFydGl0ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGlu
dD4geyB9OwotCi0vLyBWZXJpZnkgYWxsIG1hdGNoIGdyYXBocyB1cCB0byBzb21lIG1vZGVyYXRl
IG51bWJlciBvZiBlZGdlcy4KLVRFU1RfUChCaXBhcnRpdGVUZXN0LCBFeGhhdXN0aXZlKSB7Ci0g
IGludCBub2RlcyA9IEdldFBhcmFtKCk7Ci0gIE1hdGNoTWF0cml4IGdyYXBoKG5vZGVzLCBub2Rl
cyk7Ci0gIGRvIHsKLSAgICBFbGVtZW50TWF0Y2hlclBhaXJzIG1hdGNoZXMgPQotICAgICAgICBp
bnRlcm5hbDo6RmluZE1heEJpcGFydGl0ZU1hdGNoaW5nKGdyYXBoKTsKLSAgICBFWFBFQ1RfRVEo
RmluZEJhY2t0cmFja2luZ01heEJQTShncmFwaCkuc2l6ZSgpLCBtYXRjaGVzLnNpemUoKSkKLSAg
ICAgICAgPDwgImdyYXBoOiAiIDw8IGdyYXBoLkRlYnVnU3RyaW5nKCk7Ci0gICAgLy8gQ2hlY2sg
dGhhdCBhbGwgZWxlbWVudHMgb2YgbWF0Y2hlcyBhcmUgaW4gdGhlIGdyYXBoLgotICAgIC8vIENo
ZWNrIHRoYXQgZWxlbWVudHMgb2YgZmlyc3QgYW5kIHNlY29uZCBhcmUgdW5pcXVlLgotICAgIHN0
ZDo6dmVjdG9yPGJvb2w+IHNlZW5fZWxlbWVudChncmFwaC5MaHNTaXplKCkpOwotICAgIHN0ZDo6
dmVjdG9yPGJvb2w+IHNlZW5fbWF0Y2hlcihncmFwaC5SaHNTaXplKCkpOwotICAgIFNDT1BFRF9U
UkFDRShQcmludFRvU3RyaW5nKG1hdGNoZXMpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hdGNoZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgIHNpemVfdCBpbGhzID0gbWF0Y2hlc1tpXS5m
aXJzdDsKLSAgICAgIHNpemVfdCBpcmhzID0gbWF0Y2hlc1tpXS5zZWNvbmQ7Ci0gICAgICBFWFBF
Q1RfVFJVRShncmFwaC5IYXNFZGdlKGlsaHMsIGlyaHMpKTsKLSAgICAgIEVYUEVDVF9GQUxTRShz
ZWVuX2VsZW1lbnRbaWxoc10pOwotICAgICAgRVhQRUNUX0ZBTFNFKHNlZW5fbWF0Y2hlcltpcmhz
XSk7Ci0gICAgICBzZWVuX2VsZW1lbnRbaWxoc10gPSB0cnVlOwotICAgICAgc2Vlbl9tYXRjaGVy
W2lyaHNdID0gdHJ1ZTsKLSAgICB9Ci0gIH0gd2hpbGUgKGdyYXBoLk5leHRHcmFwaCgpKTsKLX0K
LQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsR3JhcGhzLCBCaXBhcnRpdGVUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpSYW5nZSgwLCA1KSk7Ci0KLS8vIFBhcmFt
ZXRlcml6ZWQgYnkgYSBwYWlyIGludGVycHJldGVkIGFzIChMaHNTaXplLCBSaHNTaXplKS4KLWNs
YXNzIEJpcGFydGl0ZU5vblNxdWFyZVRlc3QKLSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90PiA+IHsKLX07Ci0KLVRFU1RfRihCaXBh
cnRpdGVOb25TcXVhcmVUZXN0LCBTaW1wbGVCYWNrdHJhY2tpbmcpIHsKLSAgLy8gICAuLi4uLi4u
Ci0gIC8vIDA6LS0tLS1cIDoKLSAgLy8gMTotLS1cIHwgOgotICAvLyAyOi0tLVwgfCA6Ci0gIC8v
IDM6LVwgfCB8IDoKLSAgLy8gIDouLi4uLi4uOgotICAvLyAgICAwIDEgMgotICBNYXRjaE1hdHJp
eCBnKDQsIDMpOwotICBzdGF0aWMgY29uc3QgaW50IGtFZGdlc1tdWzJdID0ge3swLCAyfSwgezEs
IDF9LCB7MiwgMX0sIHszLCAwfX07Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgR1RFU1RfQVJS
QVlfU0laRV8oa0VkZ2VzKTsgKytpKSB7Ci0gICAgZy5TZXRFZGdlKGtFZGdlc1tpXVswXSwga0Vk
Z2VzW2ldWzFdLCB0cnVlKTsKLSAgfQotICBFWFBFQ1RfVEhBVChGaW5kQmFja3RyYWNraW5nTWF4
QlBNKGcpLAotICAgICAgICAgICAgICBFbGVtZW50c0FyZShQYWlyKDMsIDApLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYWlyKEFueU9mKDEsIDIpLCAxKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFpcigwLCAyKSkpIDw8IGcuRGVidWdTdHJpbmcoKTsKLX0KLQotLy8gVmVyaWZ5
IGEgZmV3IG5vbnNxdWFyZSBtYXRyaWNlcy4KLVRFU1RfUChCaXBhcnRpdGVOb25TcXVhcmVUZXN0
LCBFeGhhdXN0aXZlKSB7Ci0gIHNpemVfdCBubGhzID0gR2V0UGFyYW0oKS5maXJzdDsKLSAgc2l6
ZV90IG5yaHMgPSBHZXRQYXJhbSgpLnNlY29uZDsKLSAgTWF0Y2hNYXRyaXggZ3JhcGgobmxocywg
bnJocyk7Ci0gIGRvIHsKLSAgICBFWFBFQ1RfRVEoRmluZEJhY2t0cmFja2luZ01heEJQTShncmFw
aCkuc2l6ZSgpLAotICAgICAgICAgICAgICBpbnRlcm5hbDo6RmluZE1heEJpcGFydGl0ZU1hdGNo
aW5nKGdyYXBoKS5zaXplKCkpCi0gICAgICAgIDw8ICJncmFwaDogIiA8PCBncmFwaC5EZWJ1Z1N0
cmluZygpCi0gICAgICAgIDw8ICJcbmJhY2t0cmFja2luZzogIgotICAgICAgICA8PCBQcmludFRv
U3RyaW5nKEZpbmRCYWNrdHJhY2tpbmdNYXhCUE0oZ3JhcGgpKQotICAgICAgICA8PCAiXG5tYXgg
ZmxvdzogIgotICAgICAgICA8PCBQcmludFRvU3RyaW5nKGludGVybmFsOjpGaW5kTWF4QmlwYXJ0
aXRlTWF0Y2hpbmcoZ3JhcGgpKTsKLSAgfSB3aGlsZSAoZ3JhcGguTmV4dEdyYXBoKCkpOwotfQot
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGxHcmFwaHMsIEJpcGFydGl0ZU5vblNxdWFyZVRl
c3QsCi0gICAgdGVzdGluZzo6VmFsdWVzKAotICAgICAgICBzdGQ6Om1ha2VfcGFpcigxLCAyKSwK
LSAgICAgICAgc3RkOjptYWtlX3BhaXIoMiwgMSksCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDMs
IDIpLAotICAgICAgICBzdGQ6Om1ha2VfcGFpcigyLCAzKSwKLSAgICAgICAgc3RkOjptYWtlX3Bh
aXIoNCwgMSksCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDEsIDQpLAotICAgICAgICBzdGQ6Om1h
a2VfcGFpcig0LCAzKSwKLSAgICAgICAgc3RkOjptYWtlX3BhaXIoMywgNCkpKTsKLQotY2xhc3Mg
QmlwYXJ0aXRlUmFuZG9tVGVzdAotICAgIDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJh
bTxzdGQ6OnBhaXI8aW50LCBpbnQ+ID4gewotfTsKLQotLy8gVmVyaWZpZXMgYSBsYXJnZSBzYW1w
bGUgb2YgbGFyZ2VyIGdyYXBocy4KLVRFU1RfUChCaXBhcnRpdGVSYW5kb21UZXN0LCBMYXJnZXJO
ZXRzKSB7Ci0gIGludCBub2RlcyA9IEdldFBhcmFtKCkuZmlyc3Q7Ci0gIGludCBpdGVycyA9IEdl
dFBhcmFtKCkuc2Vjb25kOwotICBNYXRjaE1hdHJpeCBncmFwaChub2Rlcywgbm9kZXMpOwotCi0g
IHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiBzZWVkID0gR1RFU1RfRkxBRyhyYW5kb21fc2VlZCk7
Ci0gIGlmIChzZWVkID09IDApIHsKLSAgICBzZWVkID0gc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50
ZXJuYWw6OkludDMyPih0aW1lKE5VTEwpKTsKLSAgfQotCi0gIGZvciAoOyBpdGVycyA+IDA7IC0t
aXRlcnMsICsrc2VlZCkgewotICAgIHNyYW5kKHN0YXRpY19jYXN0PGludD4oc2VlZCkpOwotICAg
IGdyYXBoLlJhbmRvbWl6ZSgpOwotICAgIEVYUEVDVF9FUShGaW5kQmFja3RyYWNraW5nTWF4QlBN
KGdyYXBoKS5zaXplKCksCi0gICAgICAgICAgICAgIGludGVybmFsOjpGaW5kTWF4QmlwYXJ0aXRl
TWF0Y2hpbmcoZ3JhcGgpLnNpemUoKSkKLSAgICAgICAgPDwgIiBncmFwaDogIiA8PCBncmFwaC5E
ZWJ1Z1N0cmluZygpCi0gICAgICAgIDw8ICJcblRvIHJlcHJvZHVjZSB0aGUgZmFpbHVyZSwgcmVy
dW4gdGhlIHRlc3Qgd2l0aCB0aGUgZmxhZyIKLSAgICAgICAgICAgIiAtLSIgPDwgR1RFU1RfRkxB
R19QUkVGSVhfIDw8ICJyYW5kb21fc2VlZD0iIDw8IHNlZWQ7Ci0gIH0KLX0KLQotLy8gVGVzdCBh
cmd1bWVudCBpcyBhIHN0ZDo6cGFpcjxpbnQsIGludD4gcmVwcmVzZW50aW5nIChub2RlcywgaXRl
cnMpLgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2FtcGxlcywgQmlwYXJ0aXRlUmFuZG9tVGVz
dCwKLSAgICB0ZXN0aW5nOjpWYWx1ZXMoCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDUsIDEwMDAw
KSwKLSAgICAgICAgc3RkOjptYWtlX3BhaXIoNiwgNTAwMCksCi0gICAgICAgIHN0ZDo6bWFrZV9w
YWlyKDcsIDIwMDApLAotICAgICAgICBzdGQ6Om1ha2VfcGFpcig4LCA1MDApLAotICAgICAgICBz
dGQ6Om1ha2VfcGFpcig5LCAxMDApKSk7Ci0KLS8vIFRlc3RzIElzUmVhZGFibGVUeXBlTmFtZSgp
LgotCi1URVNUKElzUmVhZGFibGVUeXBlTmFtZVRlc3QsIFJldHVybnNUcnVlRm9yU2hvcnROYW1l
cykgewotICBFWFBFQ1RfVFJVRShJc1JlYWRhYmxlVHlwZU5hbWUoImludCIpKTsKLSAgRVhQRUNU
X1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJjb25zdCB1bnNpZ25lZCBjaGFyKiIpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJNeU1hcDxpbnQsIHZvaWQqPiIpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJ2b2lkICgqKShpbnQsIGJvb2wpIikpOwotfQot
Ci1URVNUKElzUmVhZGFibGVUeXBlTmFtZVRlc3QsIFJldHVybnNUcnVlRm9yTG9uZ05vblRlbXBs
YXRlTm9uRnVuY3Rpb25OYW1lcykgewotICBFWFBFQ1RfVFJVRShJc1JlYWRhYmxlVHlwZU5hbWUo
Im15X2xvbmdfbmFtZXNwYWNlOjpNeUNsYXNzTmFtZSIpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZWFk
YWJsZVR5cGVOYW1lKCJpbnQgWzVdWzZdWzddWzhdWzldWzEwXVsxMV0iKSk7Ci0gIEVYUEVDVF9U
UlVFKElzUmVhZGFibGVUeXBlTmFtZSgibXlfbmFtZXNwYWNlOjpNeU91dGVyQ2xhc3M6Ok15SW5u
ZXJDbGFzcyIpKTsKLX0KLQotVEVTVChJc1JlYWRhYmxlVHlwZU5hbWVUZXN0LCBSZXR1cm5zRmFs
c2VGb3JMb25nVGVtcGxhdGVOYW1lcykgewotICBFWFBFQ1RfRkFMU0UoCi0gICAgICBJc1JlYWRh
YmxlVHlwZU5hbWUoImJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ID4i
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1JlYWRhYmxlVHlwZU5hbWUoInN0ZDo6dmVjdG9yPGludCwg
c3RkOjphbGxvY190cmFpdHM8aW50PiA+IikpOwotfQotCi1URVNUKElzUmVhZGFibGVUeXBlTmFt
ZVRlc3QsIFJldHVybnNGYWxzZUZvckxvbmdGdW5jdGlvblR5cGVOYW1lcykgewotICBFWFBFQ1Rf
RkFMU0UoSXNSZWFkYWJsZVR5cGVOYW1lKCJ2b2lkICgmKShpbnQsIGJvb2wsIGNoYXIsIGZsb2F0
KSIpKTsKLX0KLQotLy8gVGVzdHMgSm9pbkFzVHVwbGUoKS4KLQotVEVTVChKb2luQXNUdXBsZVRl
c3QsIEpvaW5zRW1wdHlUdXBsZSkgewotICBFWFBFQ1RfRVEoIiIsIEpvaW5Bc1R1cGxlKFN0cmlu
Z3MoKSkpOwotfQotCi1URVNUKEpvaW5Bc1R1cGxlVGVzdCwgSm9pbnNPbmVUdXBsZSkgewotICBj
b25zdCBjaGFyKiBmaWVsZHNbXSA9IHsiMSJ9OwotICBFWFBFQ1RfRVEoIjEiLCBKb2luQXNUdXBs
ZShTdHJpbmdzKGZpZWxkcywgZmllbGRzICsgMSkpKTsKLX0KLQotVEVTVChKb2luQXNUdXBsZVRl
c3QsIEpvaW5zVHdvVHVwbGUpIHsKLSAgY29uc3QgY2hhciogZmllbGRzW10gPSB7IjEiLCAiYSJ9
OwotICBFWFBFQ1RfRVEoIigxLCBhKSIsIEpvaW5Bc1R1cGxlKFN0cmluZ3MoZmllbGRzLCBmaWVs
ZHMgKyAyKSkpOwotfQotCi1URVNUKEpvaW5Bc1R1cGxlVGVzdCwgSm9pbnNUZW5UdXBsZSkgewot
ICBjb25zdCBjaGFyKiBmaWVsZHNbXSA9IHsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAi
NyIsICI4IiwgIjkiLCAiMTAifTsKLSAgRVhQRUNUX0VRKCIoMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTApIiwKLSAgICAgICAgICAgIEpvaW5Bc1R1cGxlKFN0cmluZ3MoZmllbGRzLCBmaWVs
ZHMgKyAxMCkpKTsKLX0KLQotLy8gVGVzdHMgRm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKCkuCi0K
LVRFU1QoRm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uVGVzdCwgV29ya3NGb3JFbXB0eURlc2NyaXB0
aW9uKSB7Ci0gIEVYUEVDVF9FUSgiaXMgZXZlbiIsCi0gICAgICAgICAgICBGb3JtYXRNYXRjaGVy
RGVzY3JpcHRpb24oZmFsc2UsICJJc0V2ZW4iLCBTdHJpbmdzKCkpKTsKLSAgRVhQRUNUX0VRKCJu
b3QgKGlzIGV2ZW4pIiwKLSAgICAgICAgICAgIEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbih0cnVl
LCAiSXNFdmVuIiwgU3RyaW5ncygpKSk7Ci0KLSAgY29uc3QgY2hhciogcGFyYW1zW10gPSB7IjUi
fTsKLSAgRVhQRUNUX0VRKCJlcXVhbHMgNSIsCi0gICAgICAgICAgICBGb3JtYXRNYXRjaGVyRGVz
Y3JpcHRpb24oZmFsc2UsICJFcXVhbHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ3MocGFyYW1zLCBwYXJhbXMgKyAxKSkpOwotCi0gIGNvbnN0IGNoYXIqIHBh
cmFtczJbXSA9IHsiNSIsICI4In07Ci0gIEVYUEVDVF9FUSgiaXMgaW4gcmFuZ2UgKDUsIDgpIiwK
LSAgICAgICAgICAgIEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihmYWxzZSwgIklzSW5SYW5nZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5ncyhwYXJhbXMyLCBw
YXJhbXMyICsgMikpKTsKLX0KLQotLy8gVGVzdHMgUG9seW1vcnBoaWNNYXRjaGVyOjptdXRhYmxl
X2ltcGwoKS4KLVRFU1QoUG9seW1vcnBoaWNNYXRjaGVyVGVzdCwgQ2FuQWNjZXNzTXV0YWJsZUlt
cGwpIHsKLSAgUG9seW1vcnBoaWNNYXRjaGVyPERpdmlzaWJsZUJ5SW1wbD4gbShEaXZpc2libGVC
eUltcGwoNDIpKTsKLSAgRGl2aXNpYmxlQnlJbXBsJiBpbXBsID0gbS5tdXRhYmxlX2ltcGwoKTsK
LSAgRVhQRUNUX0VRKDQyLCBpbXBsLmRpdmlkZXIoKSk7Ci0KLSAgaW1wbC5zZXRfZGl2aWRlcigw
KTsKLSAgRVhQRUNUX0VRKDAsIG0ubXV0YWJsZV9pbXBsKCkuZGl2aWRlcigpKTsKLX0KLQotLy8g
VGVzdHMgUG9seW1vcnBoaWNNYXRjaGVyOjppbXBsKCkuCi1URVNUKFBvbHltb3JwaGljTWF0Y2hl
clRlc3QsIENhbkFjY2Vzc0ltcGwpIHsKLSAgY29uc3QgUG9seW1vcnBoaWNNYXRjaGVyPERpdmlz
aWJsZUJ5SW1wbD4gbShEaXZpc2libGVCeUltcGwoNDIpKTsKLSAgY29uc3QgRGl2aXNpYmxlQnlJ
bXBsJiBpbXBsID0gbS5pbXBsKCk7Ci0gIEVYUEVDVF9FUSg0MiwgaW1wbC5kaXZpZGVyKCkpOwot
fQotCi1URVNUKE1hdGNoZXJUdXBsZVRlc3QsIEV4cGxhaW5zTWF0Y2hGYWlsdXJlKSB7Ci0gIHN0
cmluZ3N0cmVhbSBzczE7Ci0gIEV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvKG1ha2VfdHVwbGUo
TWF0Y2hlcjxjaGFyPihFcSgnYScpKSwgR3JlYXRlclRoYW4oNSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYWtlX3R1cGxlKCdhJywgMTApLCAmc3MxKTsKLSAgRVhQRUNUX0VRKCIi
LCBzczEuc3RyKCkpOyAgLy8gU3VjY2Vzc2Z1bCBtYXRjaC4KLQotICBzdHJpbmdzdHJlYW0gc3My
OwotICBFeHBsYWluTWF0Y2hGYWlsdXJlVHVwbGVUbyhtYWtlX3R1cGxlKEdyZWF0ZXJUaGFuKDUp
LCBNYXRjaGVyPGNoYXI+KEVxKCdhJykpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWFrZV90dXBsZSgyLCAnYicpLCAmc3MyKTsKLSAgRVhQRUNUX0VRKCIgIEV4cGVjdGVkIGFyZyAj
MDogaXMgPiA1XG4iCi0gICAgICAgICAgICAiICAgICAgICAgICBBY3R1YWw6IDIsIHdoaWNoIGlz
IDMgbGVzcyB0aGFuIDVcbiIKLSAgICAgICAgICAgICIgIEV4cGVjdGVkIGFyZyAjMTogaXMgZXF1
YWwgdG8gJ2EnICg5NywgMHg2MSlcbiIKLSAgICAgICAgICAgICIgICAgICAgICAgIEFjdHVhbDog
J2InICg5OCwgMHg2MilcbiIsCi0gICAgICAgICAgICBzczIuc3RyKCkpOyAgLy8gRmFpbGVkIG1h
dGNoIHdoZXJlIGJvdGggYXJndW1lbnRzIG5lZWQgZXhwbGFuYXRpb24uCi0KLSAgc3RyaW5nc3Ry
ZWFtIHNzMzsKLSAgRXhwbGFpbk1hdGNoRmFpbHVyZVR1cGxlVG8obWFrZV90dXBsZShHcmVhdGVy
VGhhbig1KSwgTWF0Y2hlcjxjaGFyPihFcSgnYScpKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ha2VfdHVwbGUoMiwgJ2EnKSwgJnNzMyk7Ci0gIEVYUEVDVF9FUSgiICBFeHBlY3Rl
ZCBhcmcgIzA6IGlzID4gNVxuIgotICAgICAgICAgICAgIiAgICAgICAgICAgQWN0dWFsOiAyLCB3
aGljaCBpcyAzIGxlc3MgdGhhbiA1XG4iLAotICAgICAgICAgICAgc3MzLnN0cigpKTsgIC8vIEZh
aWxlZCBtYXRjaCB3aGVyZSBvbmx5IG9uZSBhcmd1bWVudCBuZWVkcwotICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGV4cGxhbmF0aW9uLgotfQotCi0vLyBUZXN0cyBFYWNoKCkuCi0KLVRFU1Qo
RWFjaFRlc3QsIEV4cGxhaW5zTWF0Y2hSZXN1bHRDb3JyZWN0bHkpIHsKLSAgc2V0PGludD4gYTsg
IC8vIGVtcHR5Ci0KLSAgTWF0Y2hlcjxzZXQ8aW50PiA+IG0gPSBFYWNoKDIpOwotICBFWFBFQ1Rf
RVEoIiIsIEV4cGxhaW4obSwgYSkpOwotCi0gIE1hdGNoZXI8Y29uc3QgaW50KCYpWzFdPiBuID0g
RWFjaCgxKTsgIC8vIE5PTElOVAotCi0gIGNvbnN0IGludCBiWzFdID0gezF9OwotICBFWFBFQ1Rf
RVEoIiIsIEV4cGxhaW4obiwgYikpOwotCi0gIG4gPSBFYWNoKDMpOwotICBFWFBFQ1RfRVEoIndo
b3NlIGVsZW1lbnQgIzAgZG9lc24ndCBtYXRjaCIsIEV4cGxhaW4obiwgYikpOwotCi0gIGEuaW5z
ZXJ0KDEpOwotICBhLmluc2VydCgyKTsKLSAgYS5pbnNlcnQoMyk7Ci0gIG0gPSBFYWNoKEdyZWF0
ZXJUaGFuKDApKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIGEpKTsKLQotICBtID0gRWFj
aChHcmVhdGVyVGhhbigxMCkpOwotICBFWFBFQ1RfRVEoIndob3NlIGVsZW1lbnQgIzAgZG9lc24n
dCBtYXRjaCwgd2hpY2ggaXMgOSBsZXNzIHRoYW4gMTAiLAotICAgICAgICAgICAgRXhwbGFpbiht
LCBhKSk7Ci19Ci0KLVRFU1QoRWFjaFRlc3QsIERlc2NyaWJlc0l0c2VsZkNvcnJlY3RseSkgewot
ICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IEVhY2goMSk7Ci0gIEVYUEVDVF9FUSgib25seSBj
b250YWlucyBlbGVtZW50cyB0aGF0IGlzIGVxdWFsIHRvIDEiLCBEZXNjcmliZShtKSk7Ci0KLSAg
TWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0yID0gTm90KG0pOwotICBFWFBFQ1RfRVEoImNvbnRhaW5z
IHNvbWUgZWxlbWVudCB0aGF0IGlzbid0IGVxdWFsIHRvIDEiLCBEZXNjcmliZShtMikpOwotfQot
Ci1URVNUKEVhY2hUZXN0LCBNYXRjaGVzVmVjdG9yV2hlbkFsbEVsZW1lbnRzTWF0Y2gpIHsKLSAg
dmVjdG9yPGludD4gc29tZV92ZWN0b3I7Ci0gIEVYUEVDVF9USEFUKHNvbWVfdmVjdG9yLCBFYWNo
KDEpKTsKLSAgc29tZV92ZWN0b3IucHVzaF9iYWNrKDMpOwotICBFWFBFQ1RfVEhBVChzb21lX3Zl
Y3RvciwgTm90KEVhY2goMSkpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV92ZWN0b3IsIEVhY2goMykp
OwotICBzb21lX3ZlY3Rvci5wdXNoX2JhY2soMSk7Ci0gIHNvbWVfdmVjdG9yLnB1c2hfYmFjaygy
KTsKLSAgRVhQRUNUX1RIQVQoc29tZV92ZWN0b3IsIE5vdChFYWNoKDMpKSk7Ci0gIEVYUEVDVF9U
SEFUKHNvbWVfdmVjdG9yLCBFYWNoKEx0KDMuNSkpKTsKLQotICB2ZWN0b3I8c3RkOjpzdHJpbmc+
IGFub3RoZXJfdmVjdG9yOwotICBhbm90aGVyX3ZlY3Rvci5wdXNoX2JhY2soImZlZSIpOwotICBF
WFBFQ1RfVEhBVChhbm90aGVyX3ZlY3RvciwgRWFjaChzdGQ6OnN0cmluZygiZmVlIikpKTsKLSAg
YW5vdGhlcl92ZWN0b3IucHVzaF9iYWNrKCJmaWUiKTsKLSAgYW5vdGhlcl92ZWN0b3IucHVzaF9i
YWNrKCJmb2UiKTsKLSAgYW5vdGhlcl92ZWN0b3IucHVzaF9iYWNrKCJmdW0iKTsKLSAgRVhQRUNU
X1RIQVQoYW5vdGhlcl92ZWN0b3IsIE5vdChFYWNoKHN0ZDo6c3RyaW5nKCJmZWUiKSkpKTsKLX0K
LQotVEVTVChFYWNoVGVzdCwgTWF0Y2hlc01hcFdoZW5BbGxFbGVtZW50c01hdGNoKSB7Ci0gIG1h
cDxjb25zdCBjaGFyKiwgaW50PiBteV9tYXA7Ci0gIGNvbnN0IGNoYXIqIGJhciA9ICJhIHN0cmlu
ZyI7Ci0gIG15X21hcFtiYXJdID0gMjsKLSAgRVhQRUNUX1RIQVQobXlfbWFwLCBFYWNoKG1ha2Vf
cGFpcihiYXIsIDIpKSk7Ci0KLSAgbWFwPHN0ZDo6c3RyaW5nLCBpbnQ+IGFub3RoZXJfbWFwOwot
ICBFWFBFQ1RfVEhBVChhbm90aGVyX21hcCwgRWFjaChtYWtlX3BhaXIoc3RkOjpzdHJpbmcoImZl
ZSIpLCAxKSkpOwotICBhbm90aGVyX21hcFsiZmVlIl0gPSAxOwotICBFWFBFQ1RfVEhBVChhbm90
aGVyX21hcCwgRWFjaChtYWtlX3BhaXIoc3RkOjpzdHJpbmcoImZlZSIpLCAxKSkpOwotICBhbm90
aGVyX21hcFsiZmllIl0gPSAyOwotICBhbm90aGVyX21hcFsiZm9lIl0gPSAzOwotICBhbm90aGVy
X21hcFsiZnVtIl0gPSA0OwotICBFWFBFQ1RfVEhBVChhbm90aGVyX21hcCwgTm90KEVhY2gobWFr
ZV9wYWlyKHN0ZDo6c3RyaW5nKCJmZWUiKSwgMSkpKSk7Ci0gIEVYUEVDVF9USEFUKGFub3RoZXJf
bWFwLCBOb3QoRWFjaChtYWtlX3BhaXIoc3RkOjpzdHJpbmcoImZ1bSIpLCAxKSkpKTsKLSAgRVhQ
RUNUX1RIQVQoYW5vdGhlcl9tYXAsIEVhY2goUGFpcihfLCBHdCgwKSkpKTsKLX0KLQotVEVTVChF
YWNoVGVzdCwgQWNjZXB0c01hdGNoZXIpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsxLCAyLCAzfTsK
LSAgRVhQRUNUX1RIQVQoYSwgRWFjaChHdCgwKSkpOwotICBFWFBFQ1RfVEhBVChhLCBOb3QoRWFj
aChHdCgxKSkpKTsKLX0KLQotVEVTVChFYWNoVGVzdCwgV29ya3NGb3JOYXRpdmVBcnJheUFzVHVw
bGUpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsxLCAyfTsKLSAgY29uc3QgaW50KiBjb25zdCBwb2lu
dGVyID0gYTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwb2ludGVyLCAyKSwgRWFjaChHdCgw
KSkpOwotICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKHBvaW50ZXIsIDIpLCBOb3QoRWFjaChHdCgx
KSkpKTsKLX0KLQotLy8gRm9yIHRlc3RpbmcgUG9pbnR3aXNlKCkuCi1jbGFzcyBJc0hhbGZPZk1h
dGNoZXIgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgdHVwbGU8VDEsIFQyPiYgYV9wYWlyLAotICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
ewotICAgIGlmIChnZXQ8MD4oYV9wYWlyKSA9PSBnZXQ8MT4oYV9wYWlyKS8yKSB7Ci0gICAgICAq
bGlzdGVuZXIgPDwgIndoZXJlIHRoZSBzZWNvbmQgaXMgIiA8PCBnZXQ8MT4oYV9wYWlyKTsKLSAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIndoZXJl
IHRoZSBzZWNvbmQvMiBpcyAiIDw8IGdldDwxPihhX3BhaXIpLzI7Ci0gICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICB9Ci0KLSAgdm9pZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7
Ci0gICAgKm9zIDw8ICJhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBz
ZWNvbmQiOwotICB9Ci0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8ob3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICAqb3MgPDwgImFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IGlzbid0IGhhbGYg
b2YgdGhlIHNlY29uZCI7Ci0gIH0KLX07Ci0KLVBvbHltb3JwaGljTWF0Y2hlcjxJc0hhbGZPZk1h
dGNoZXI+IElzSGFsZk9mKCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihJc0hh
bGZPZk1hdGNoZXIoKSk7Ci19Ci0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgRGVzY3JpYmVzU2VsZikg
ewotICB2ZWN0b3I8aW50PiByaHM7Ci0gIHJocy5wdXNoX2JhY2soMSk7Ci0gIHJocy5wdXNoX2Jh
Y2soMik7Ci0gIHJocy5wdXNoX2JhY2soMyk7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgdmVjdG9y
PGludD4mPiBtID0gUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyk7Ci0gIEVYUEVDVF9FUSgiY29u
dGFpbnMgMyB2YWx1ZXMsIHdoZXJlIGVhY2ggdmFsdWUgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHZh
bHVlICIKLSAgICAgICAgICAgICJpbiB7IDEsIDIsIDMgfSBhcmUgYSBwYWlyIHdoZXJlIHRoZSBm
aXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQiLAotICAgICAgICAgICAgRGVzY3JpYmUobSkpOwot
ICBFWFBFQ1RfRVEoImRvZXNuJ3QgY29udGFpbiBleGFjdGx5IDMgdmFsdWVzLCBvciBjb250YWlu
cyBhIHZhbHVlIHggYXQgc29tZSAiCi0gICAgICAgICAgICAiaW5kZXggaSB3aGVyZSB4IGFuZCB0
aGUgaS10aCB2YWx1ZSBvZiB7IDEsIDIsIDMgfSBhcmUgYSBwYWlyICIKLSAgICAgICAgICAgICJ3
aGVyZSB0aGUgZmlyc3QgaXNuJ3QgaGFsZiBvZiB0aGUgc2Vjb25kIiwKLSAgICAgICAgICAgIERl
c2NyaWJlTmVnYXRpb24obSkpOwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIE1ha2VzQ29weU9m
UmhzKSB7Ci0gIGxpc3Q8c2lnbmVkIGNoYXI+IHJoczsKLSAgcmhzLnB1c2hfYmFjaygyKTsKLSAg
cmhzLnB1c2hfYmFjayg0KTsKLQotICBpbnQgbGhzW10gPSB7MSwgMn07Ci0gIGNvbnN0IE1hdGNo
ZXI8Y29uc3QgaW50ICgmKVsyXT4gbSA9IFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpOwotICBF
WFBFQ1RfVEhBVChsaHMsIG0pOwotCi0gIC8vIENoYW5naW5nIHJocyBub3cgc2hvdWxkbid0IGFm
ZmVjdCBtLCB3aGljaCBtYWRlIGEgY29weSBvZiByaHMuCi0gIHJocy5wdXNoX2JhY2soNik7Ci0g
IEVYUEVDVF9USEFUKGxocywgbSk7Ci19Ci0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JM
aHNOYXRpdmVBcnJheSkgewotICBjb25zdCBpbnQgbGhzW10gPSB7MSwgMiwgM307Ci0gIHZlY3Rv
cjxpbnQ+IHJoczsKLSAgcmhzLnB1c2hfYmFjaygyKTsKLSAgcmhzLnB1c2hfYmFjayg0KTsKLSAg
cmhzLnB1c2hfYmFjayg2KTsKLSAgRVhQRUNUX1RIQVQobGhzLCBQb2ludHdpc2UoTHQoKSwgcmhz
KSk7Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFBvaW50d2lzZShHdCgpLCByaHMpKSk7Ci19Ci0K
LVRFU1QoUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JSaHNOYXRpdmVBcnJheSkgewotICBjb25zdCBp
bnQgcmhzW10gPSB7MSwgMiwgM307Ci0gIHZlY3RvcjxpbnQ+IGxoczsKLSAgbGhzLnB1c2hfYmFj
aygyKTsKLSAgbGhzLnB1c2hfYmFjayg0KTsKLSAgbGhzLnB1c2hfYmFjayg2KTsKLSAgRVhQRUNU
X1RIQVQobGhzLCBQb2ludHdpc2UoR3QoKSwgcmhzKSk7Ci0gIEVYUEVDVF9USEFUKGxocywgTm90
KFBvaW50d2lzZShMdCgpLCByaHMpKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJ
WkVSX0xJU1RfCi0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JSaHNJbml0aWFsaXplckxp
c3QpIHsKLSAgY29uc3QgdmVjdG9yPGludD4gbGhzezIsIDQsIDZ9OwotICBFWFBFQ1RfVEhBVChs
aHMsIFBvaW50d2lzZShHdCgpLCB7MSwgMiwgM30pKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBOb3Qo
UG9pbnR3aXNlKEx0KCksIHszLCAzLCA3fSkpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgUmVqZWN0c1dyb25n
U2l6ZSkgewotICBjb25zdCBkb3VibGUgbGhzWzJdID0gezEsIDJ9OwotICBjb25zdCBpbnQgcmhz
WzFdID0gezB9OwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQb2ludHdpc2UoR3QoKSwgcmhzKSkp
OwotICBFWFBFQ1RfRVEoIndoaWNoIGNvbnRhaW5zIDIgdmFsdWVzIiwKLSAgICAgICAgICAgIEV4
cGxhaW4oUG9pbnR3aXNlKEd0KCksIHJocyksIGxocykpOwotCi0gIGNvbnN0IGludCByaHMyWzNd
ID0gezAsIDEsIDJ9OwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQb2ludHdpc2UoR3QoKSwgcmhz
MikpKTsKLX0KLQotVEVTVChQb2ludHdpc2VUZXN0LCBSZWplY3RzV3JvbmdDb250ZW50KSB7Ci0g
IGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0IGludCByaHNbM10gPSB7
MiwgNiwgNH07Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFBvaW50d2lzZShJc0hhbGZPZigpLCBy
aHMpKSk7Ci0gIEVYUEVDVF9FUSgid2hlcmUgdGhlIHZhbHVlIHBhaXIgKDIsIDYpIGF0IGluZGV4
ICMxIGRvbid0IG1hdGNoLCAiCi0gICAgICAgICAgICAid2hlcmUgdGhlIHNlY29uZC8yIGlzIDMi
LAotICAgICAgICAgICAgRXhwbGFpbihQb2ludHdpc2UoSXNIYWxmT2YoKSwgcmhzKSwgbGhzKSk7
Ci19Ci0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgQWNjZXB0c0NvcnJlY3RDb250ZW50KSB7Ci0gIGNv
bnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0IGludCByaHNbM10gPSB7Miwg
NCwgNn07Ci0gIEVYUEVDVF9USEFUKGxocywgUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocykpOwot
ICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4oUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyksIGxocykp
OwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIEFsbG93c01vbm9tb3JwaGljSW5uZXJNYXRjaGVy
KSB7Ci0gIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0IGludCByaHNb
M10gPSB7MiwgNCwgNn07Ci0gIGNvbnN0IE1hdGNoZXI8dHVwbGU8Y29uc3QgZG91YmxlJiwgY29u
c3QgaW50Jj4gPiBtMSA9IElzSGFsZk9mKCk7Ci0gIEVYUEVDVF9USEFUKGxocywgUG9pbnR3aXNl
KG0xLCByaHMpKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKFBvaW50d2lzZShtMSwgcmhzKSwg
bGhzKSk7Ci0KLSAgLy8gVGhpcyB0eXBlIHdvcmtzIGFzIGEgdHVwbGU8Y29uc3QgZG91YmxlJiwg
Y29uc3QgaW50Jj4gY2FuIGJlCi0gIC8vIGltcGxpY2l0bHkgY2FzdCB0byB0dXBsZTxkb3VibGUs
IGludD4uCi0gIGNvbnN0IE1hdGNoZXI8dHVwbGU8ZG91YmxlLCBpbnQ+ID4gbTIgPSBJc0hhbGZP
ZigpOwotICBFWFBFQ1RfVEhBVChsaHMsIFBvaW50d2lzZShtMiwgcmhzKSk7Ci0gIEVYUEVDVF9F
USgiIiwgRXhwbGFpbihQb2ludHdpc2UobTIsIHJocyksIGxocykpOwotfQotCi1URVNUKFVub3Jk
ZXJlZFBvaW50d2lzZVRlc3QsIERlc2NyaWJlc1NlbGYpIHsKLSAgdmVjdG9yPGludD4gcmhzOwot
ICByaHMucHVzaF9iYWNrKDEpOwotICByaHMucHVzaF9iYWNrKDIpOwotICByaHMucHVzaF9iYWNr
KDMpOwotICBjb25zdCBNYXRjaGVyPGNvbnN0IHZlY3RvcjxpbnQ+Jj4gbSA9IFVub3JkZXJlZFBv
aW50d2lzZShJc0hhbGZPZigpLCByaHMpOwotICBFWFBFQ1RfRVEoCi0gICAgICAiaGFzIDMgZWxl
bWVudHMgYW5kIHRoZXJlIGV4aXN0cyBzb21lIHBlcm11dGF0aW9uIG9mIGVsZW1lbnRzIHN1Y2gg
IgotICAgICAgInRoYXQ6XG4iCi0gICAgICAiIC0gZWxlbWVudCAjMCBhbmQgMSBhcmUgYSBwYWly
IHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQsICIKLSAgICAgICJhbmRcbiIK
LSAgICAgICIgLSBlbGVtZW50ICMxIGFuZCAyIGFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IGlz
IGhhbGYgb2YgdGhlIHNlY29uZCwgIgotICAgICAgImFuZFxuIgotICAgICAgIiAtIGVsZW1lbnQg
IzIgYW5kIDMgYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgaXMgaGFsZiBvZiB0aGUgc2Vjb25k
IiwKLSAgICAgIERlc2NyaWJlKG0pKTsKLSAgRVhQRUNUX0VRKAotICAgICAgImRvZXNuJ3QgaGF2
ZSAzIGVsZW1lbnRzLCBvciB0aGVyZSBleGlzdHMgbm8gcGVybXV0YXRpb24gb2YgZWxlbWVudHMg
IgotICAgICAgInN1Y2ggdGhhdDpcbiIKLSAgICAgICIgLSBlbGVtZW50ICMwIGFuZCAxIGFyZSBh
IHBhaXIgd2hlcmUgdGhlIGZpcnN0IGlzIGhhbGYgb2YgdGhlIHNlY29uZCwgIgotICAgICAgImFu
ZFxuIgotICAgICAgIiAtIGVsZW1lbnQgIzEgYW5kIDIgYXJlIGEgcGFpciB3aGVyZSB0aGUgZmly
c3QgaXMgaGFsZiBvZiB0aGUgc2Vjb25kLCAiCi0gICAgICAiYW5kXG4iCi0gICAgICAiIC0gZWxl
bWVudCAjMiBhbmQgMyBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBz
ZWNvbmQiLAotICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1QoVW5vcmRlcmVk
UG9pbnR3aXNlVGVzdCwgTWFrZXNDb3B5T2ZSaHMpIHsKLSAgbGlzdDxzaWduZWQgY2hhcj4gcmhz
OwotICByaHMucHVzaF9iYWNrKDIpOwotICByaHMucHVzaF9iYWNrKDQpOwotCi0gIGludCBsaHNb
XSA9IHsyLCAxfTsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBpbnQgKCYpWzJdPiBtID0gVW5vcmRl
cmVkUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyk7Ci0gIEVYUEVDVF9USEFUKGxocywgbSk7Ci0K
LSAgLy8gQ2hhbmdpbmcgcmhzIG5vdyBzaG91bGRuJ3QgYWZmZWN0IG0sIHdoaWNoIG1hZGUgYSBj
b3B5IG9mIHJocy4KLSAgcmhzLnB1c2hfYmFjayg2KTsKLSAgRVhQRUNUX1RIQVQobGhzLCBtKTsK
LX0KLQotVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBXb3Jrc0Zvckxoc05hdGl2ZUFycmF5
KSB7Ci0gIGNvbnN0IGludCBsaHNbXSA9IHsxLCAyLCAzfTsKLSAgdmVjdG9yPGludD4gcmhzOwot
ICByaHMucHVzaF9iYWNrKDQpOwotICByaHMucHVzaF9iYWNrKDYpOwotICByaHMucHVzaF9iYWNr
KDIpOwotICBFWFBFQ1RfVEhBVChsaHMsIFVub3JkZXJlZFBvaW50d2lzZShMdCgpLCByaHMpKTsK
LSAgRVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3aXNlKEd0KCksIHJocykpKTsK
LX0KLQotVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBXb3Jrc0ZvclJoc05hdGl2ZUFycmF5
KSB7Ci0gIGNvbnN0IGludCByaHNbXSA9IHsxLCAyLCAzfTsKLSAgdmVjdG9yPGludD4gbGhzOwot
ICBsaHMucHVzaF9iYWNrKDQpOwotICBsaHMucHVzaF9iYWNrKDIpOwotICBsaHMucHVzaF9iYWNr
KDYpOwotICBFWFBFQ1RfVEhBVChsaHMsIFVub3JkZXJlZFBvaW50d2lzZShHdCgpLCByaHMpKTsK
LSAgRVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3aXNlKEx0KCksIHJocykpKTsK
LX0KLQotI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KLQotVEVTVChVbm9yZGVy
ZWRQb2ludHdpc2VUZXN0LCBXb3Jrc0ZvclJoc0luaXRpYWxpemVyTGlzdCkgewotICBjb25zdCB2
ZWN0b3I8aW50PiBsaHN7MiwgNCwgNn07Ci0gIEVYUEVDVF9USEFUKGxocywgVW5vcmRlcmVkUG9p
bnR3aXNlKEd0KCksIHs1LCAxLCAzfSkpOwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChVbm9yZGVy
ZWRQb2ludHdpc2UoTHQoKSwgezEsIDEsIDd9KSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfSU5JVElBTElaRVJfTElTVF8KLQotVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBS
ZWplY3RzV3JvbmdTaXplKSB7Ci0gIGNvbnN0IGRvdWJsZSBsaHNbMl0gPSB7MSwgMn07Ci0gIGNv
bnN0IGludCByaHNbMV0gPSB7MH07Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFVub3JkZXJlZFBv
aW50d2lzZShHdCgpLCByaHMpKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaGFzIDIgZWxlbWVudHMi
LAotICAgICAgICAgICAgRXhwbGFpbihVbm9yZGVyZWRQb2ludHdpc2UoR3QoKSwgcmhzKSwgbGhz
KSk7Ci0KLSAgY29uc3QgaW50IHJoczJbM10gPSB7MCwgMSwgMn07Ci0gIEVYUEVDVF9USEFUKGxo
cywgTm90KFVub3JkZXJlZFBvaW50d2lzZShHdCgpLCByaHMyKSkpOwotfQotCi1URVNUKFVub3Jk
ZXJlZFBvaW50d2lzZVRlc3QsIFJlamVjdHNXcm9uZ0NvbnRlbnQpIHsKLSAgY29uc3QgZG91Ymxl
IGxoc1szXSA9IHsxLCAyLCAzfTsKLSAgY29uc3QgaW50IHJoc1szXSA9IHsyLCA2LCA2fTsKLSAg
RVhQRUNUX1RIQVQobGhzLCBOb3QoVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocykp
KTsKLSAgRVhQRUNUX0VRKCJ3aGVyZSB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGRvbid0IG1hdGNo
IGFueSBtYXRjaGVyczpcbiIKLSAgICAgICAgICAgICJlbGVtZW50ICMxOiAyIiwKLSAgICAgICAg
ICAgIEV4cGxhaW4oVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyksIGxocykpOwot
fQotCi1URVNUKFVub3JkZXJlZFBvaW50d2lzZVRlc3QsIEFjY2VwdHNDb3JyZWN0Q29udGVudElu
U2FtZU9yZGVyKSB7Ci0gIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0
IGludCByaHNbM10gPSB7MiwgNCwgNn07Ci0gIEVYUEVDVF9USEFUKGxocywgVW5vcmRlcmVkUG9p
bnR3aXNlKElzSGFsZk9mKCksIHJocykpOwotfQotCi1URVNUKFVub3JkZXJlZFBvaW50d2lzZVRl
c3QsIEFjY2VwdHNDb3JyZWN0Q29udGVudEluRGlmZmVyZW50T3JkZXIpIHsKLSAgY29uc3QgZG91
YmxlIGxoc1szXSA9IHsxLCAyLCAzfTsKLSAgY29uc3QgaW50IHJoc1szXSA9IHs2LCA0LCAyfTsK
LSAgRVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2UoSXNIYWxmT2YoKSwgcmhzKSk7
Ci19Ci0KLVRFU1QoVW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgQWxsb3dzTW9ub21vcnBoaWNJbm5l
ck1hdGNoZXIpIHsKLSAgY29uc3QgZG91YmxlIGxoc1szXSA9IHsxLCAyLCAzfTsKLSAgY29uc3Qg
aW50IHJoc1szXSA9IHs0LCA2LCAyfTsKLSAgY29uc3QgTWF0Y2hlcjx0dXBsZTxjb25zdCBkb3Vi
bGUmLCBjb25zdCBpbnQmPiA+IG0xID0gSXNIYWxmT2YoKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBV
bm9yZGVyZWRQb2ludHdpc2UobTEsIHJocykpOwotCi0gIC8vIFRoaXMgdHlwZSB3b3JrcyBhcyBh
IHR1cGxlPGNvbnN0IGRvdWJsZSYsIGNvbnN0IGludCY+IGNhbiBiZQotICAvLyBpbXBsaWNpdGx5
IGNhc3QgdG8gdHVwbGU8ZG91YmxlLCBpbnQ+LgotICBjb25zdCBNYXRjaGVyPHR1cGxlPGRvdWJs
ZSwgaW50PiA+IG0yID0gSXNIYWxmT2YoKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQ
b2ludHdpc2UobTIsIHJocykpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgZ21vY2tfbWF0Y2hlcnNf
dGVzdAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rl
c3QvZ21vY2stbW9yZS1hY3Rpb25zX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLW1v
cmUtYWN0aW9uc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWUyOGVh
ZTg5MzFjODU4NDNjYmVkNWE2NzlkMGNkNWZjYjAyMTcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbW9yZS1hY3Rp
b25zX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw3MTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Ig
d3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgYnVp
bHQtaW4gYWN0aW9ucyBpbiBnbW9jay1tb3JlLWFjdGlvbnMuaC4KLQotI2luY2x1ZGUgImdtb2Nr
L2dtb2NrLW1vcmUtYWN0aW9ucy5oIgotCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
bGlua2VkX3B0ci5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgZ21vY2tfbW9y
ZV9hY3Rpb25zX3Rlc3QgewotCi11c2luZyA6OnN0ZDo6cGx1czsKLXVzaW5nIDo6c3RkOjpzdHJp
bmc7Ci11c2luZyB0ZXN0aW5nOjpnZXQ7Ci11c2luZyB0ZXN0aW5nOjptYWtlX3R1cGxlOwotdXNp
bmcgdGVzdGluZzo6dHVwbGU7Ci11c2luZyB0ZXN0aW5nOjp0dXBsZV9lbGVtZW50OwotdXNpbmcg
dGVzdGluZzo6XzsKLXVzaW5nIHRlc3Rpbmc6OkFjdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OkFjdGlv
bkludGVyZmFjZTsKLXVzaW5nIHRlc3Rpbmc6OkRlbGV0ZUFyZzsKLXVzaW5nIHRlc3Rpbmc6Oklu
dm9rZTsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybkFyZzsK
LXVzaW5nIHRlc3Rpbmc6OlJldHVyblBvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjpTYXZlQXJnOwot
dXNpbmcgdGVzdGluZzo6U2F2ZUFyZ1BvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjpTZXRBcmdSZWZl
cmVlOwotdXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxOwotdXNpbmcgdGVzdGluZzo6
VW51c2VkOwotdXNpbmcgdGVzdGluZzo6V2l0aEFyZzsKLXVzaW5nIHRlc3Rpbmc6OldpdGhvdXRB
cmdzOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Ci0KLS8vIEZvciBzdXBw
cmVzc2luZyBjb21waWxlciB3YXJuaW5ncyBvbiBjb252ZXJzaW9uIHBvc3NpYmx5IGxvc2luZyBw
cmVjaXNpb24uCi1pbmxpbmUgc2hvcnQgU2hvcnQoc2hvcnQgbikgeyByZXR1cm4gbjsgfSAgLy8g
Tk9MSU5UCi1pbmxpbmUgY2hhciBDaGFyKGNoYXIgY2gpIHsgcmV0dXJuIGNoOyB9Ci0KLS8vIFNh
bXBsZSBmdW5jdGlvbnMgYW5kIGZ1bmN0b3JzIGZvciB0ZXN0aW5nIEludm9rZSgpIGFuZCBldGMu
Ci1pbnQgTnVsbGFyeSgpIHsgcmV0dXJuIDE7IH0KLQotY2xhc3MgTnVsbGFyeUZ1bmN0b3Igewot
IHB1YmxpYzoKLSAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiAyOyB9Ci19OwotCi1ib29sIGdf
ZG9uZSA9IGZhbHNlOwotdm9pZCBWb2lkTnVsbGFyeSgpIHsgZ19kb25lID0gdHJ1ZTsgfQotCi1j
bGFzcyBWb2lkTnVsbGFyeUZ1bmN0b3IgewotIHB1YmxpYzoKLSAgdm9pZCBvcGVyYXRvcigpKCkg
eyBnX2RvbmUgPSB0cnVlOyB9Ci19OwotCi1ib29sIFVuYXJ5KGludCB4KSB7IHJldHVybiB4IDwg
MDsgfQotCi1jb25zdCBjaGFyKiBQbHVzMShjb25zdCBjaGFyKiBzKSB7IHJldHVybiBzICsgMTsg
fQotCi12b2lkIFZvaWRVbmFyeShpbnQgLyogbiAqLykgeyBnX2RvbmUgPSB0cnVlOyB9Ci0KLWJv
b2wgQnlDb25zdFJlZihjb25zdCBzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4gcyA9PSAiSGkiOyB9
Ci0KLWNvbnN0IGRvdWJsZSBnX2RvdWJsZSA9IDA7Ci1ib29sIFJlZmVyZW5jZXNHbG9iYWxEb3Vi
bGUoY29uc3QgZG91YmxlJiB4KSB7IHJldHVybiAmeCA9PSAmZ19kb3VibGU7IH0KLQotc3RkOjpz
dHJpbmcgQnlOb25Db25zdFJlZihzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4gcyArPSAiKyI7IH0g
IC8vIE5PTElOVAotCi1zdHJ1Y3QgVW5hcnlGdW5jdG9yIHsKLSAgaW50IG9wZXJhdG9yKCkoYm9v
bCB4KSB7IHJldHVybiB4ID8gMSA6IC0xOyB9Ci19OwotCi1jb25zdCBjaGFyKiBCaW5hcnkoY29u
c3QgY2hhciogaW5wdXQsIHNob3J0IG4pIHsgcmV0dXJuIGlucHV0ICsgbjsgfSAgLy8gTk9MSU5U
Ci0KLXZvaWQgVm9pZEJpbmFyeShpbnQsIGNoYXIpIHsgZ19kb25lID0gdHJ1ZTsgfQotCi1pbnQg
VGVybmFyeShpbnQgeCwgY2hhciB5LCBzaG9ydCB6KSB7IHJldHVybiB4ICsgeSArIHo7IH0gIC8v
IE5PTElOVAotCi12b2lkIFZvaWRUZXJuYXJ5KGludCwgY2hhciwgYm9vbCkgeyBnX2RvbmUgPSB0
cnVlOyB9Ci0KLWludCBTdW1PZjQoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQpIHsgcmV0dXJu
IGEgKyBiICsgYyArIGQ7IH0KLQotaW50IFN1bU9mRmlyc3QyKGludCBhLCBpbnQgYiwgVW51c2Vk
LCBVbnVzZWQpIHsgcmV0dXJuIGEgKyBiOyB9Ci0KLXZvaWQgVm9pZEZ1bmN0aW9uV2l0aEZvdXJB
cmd1bWVudHMoY2hhciwgaW50LCBmbG9hdCwgZG91YmxlKSB7IGdfZG9uZSA9IHRydWU7IH0KLQot
c3RkOjpzdHJpbmcgQ29uY2F0NChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0
IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCkgewotICByZXR1
cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0OwotfQotCi1pbnQgU3VtT2Y1KGludCBh
LCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSkgeyByZXR1cm4gYSArIGIgKyBjICsgZCArIGU7
IH0KLQotc3RydWN0IFN1bU9mNUZ1bmN0b3IgewotICBpbnQgb3BlcmF0b3IoKShpbnQgYSwgaW50
IGIsIGludCBjLCBpbnQgZCwgaW50IGUpIHsKLSAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIGU7
Ci0gIH0KLX07Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDUoY29uc3QgY2hhciogczEsIGNvbnN0IGNo
YXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
czQsIGNvbnN0IGNoYXIqIHM1KSB7Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMz
ICsgczQgKyBzNTsKLX0KLQotaW50IFN1bU9mNihpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwg
aW50IGUsIGludCBmKSB7Ci0gIHJldHVybiBhICsgYiArIGMgKyBkICsgZSArIGY7Ci19Ci0KLXN0
cnVjdCBTdW1PZjZGdW5jdG9yIHsKLSAgaW50IG9wZXJhdG9yKCkoaW50IGEsIGludCBiLCBpbnQg
YywgaW50IGQsIGludCBlLCBpbnQgZikgewotICAgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSAr
IGY7Ci0gIH0KLX07Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDYoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNikgewotICByZXR1cm4gc3RkOjpz
dHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNjsKLX0KLQotc3RkOjpzdHJpbmcgQ29u
Y2F0Nyhjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNo
YXIqIHM2LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNykgewotICByZXR1cm4g
c3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3OwotfQotCi1zdGQ6
OnN0cmluZyBDb25jYXQ4KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hh
ciogczMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBz
NSwgY29uc3QgY2hhciogczYsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBj
b25zdCBjaGFyKiBzOCkgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0
ICsgczUgKyBzNiArIHM3ICsgczg7Ci19Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDkoY29uc3QgY2hh
ciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogczcsIGNvbnN0IGNoYXIqIHM4LCBjb25zdCBjaGFy
KiBzOSkgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBz
NiArIHM3ICsgczggKyBzOTsKLX0KLQotc3RkOjpzdHJpbmcgQ29uY2F0MTAoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciogczYsCi0gICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgsIGNvbnN0IGNoYXIq
IHM5LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEwKSB7Ci0gIHJldHVybiBz
dGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcgKyBzOCArIHM5ICsg
czEwOwotfQotCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAgRm9vKCkgOiB2YWx1ZV8oMTIzKSB7
fQotCi0gIGludCBOdWxsYXJ5KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0KLSAgc2hvcnQg
VW5hcnkobG9uZyB4KSB7IHJldHVybiBzdGF0aWNfY2FzdDxzaG9ydD4odmFsdWVfICsgeCk7IH0g
IC8vIE5PTElOVAotCi0gIHN0ZDo6c3RyaW5nIEJpbmFyeShjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
LCBjaGFyIGMpIGNvbnN0IHsgcmV0dXJuIHN0ciArIGM7IH0KLQotICBpbnQgVGVybmFyeShpbnQg
eCwgYm9vbCB5LCBjaGFyIHopIHsgcmV0dXJuIHZhbHVlXyArIHggKyB5Kno7IH0KLQotICBpbnQg
U3VtT2Y0KGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkKSBjb25zdCB7Ci0gICAgcmV0dXJuIGEg
KyBiICsgYyArIGQgKyB2YWx1ZV87Ci0gIH0KLQotICBpbnQgU3VtT2ZMYXN0MihVbnVzZWQsIFVu
dXNlZCwgaW50IGEsIGludCBiKSBjb25zdCB7IHJldHVybiBhICsgYjsgfQotCi0gIGludCBTdW1P
ZjUoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlKSB7IHJldHVybiBhICsgYiArIGMg
KyBkICsgZTsgfQotCi0gIGludCBTdW1PZjYoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGlu
dCBlLCBpbnQgZikgewotICAgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSArIGY7Ci0gIH0KLQot
ICBzdGQ6OnN0cmluZyBDb25jYXQ3KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29u
c3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0
IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzNykgewotICAgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBz
NSArIHM2ICsgczc7Ci0gIH0KLQotICBzdGQ6OnN0cmluZyBDb25jYXQ4KGNvbnN0IGNoYXIqIHMx
LCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgpIHsKLSAgICByZXR1
cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3ICsgczg7Ci0g
IH0KLQotICBzdGQ6OnN0cmluZyBDb25jYXQ5KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBz
MiwgY29uc3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQs
IGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgsIGNvbnN0IGNoYXIqIHM5KSB7Ci0gICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMgKyBzNCArIHM1ICsgczYgKyBzNyArIHM4ICsg
czk7Ci0gIH0KLQotICBzdGQ6OnN0cmluZyBDb25jYXQxMChjb25zdCBjaGFyKiBzMSwgY29uc3Qg
Y2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgsIGNvbnN0IGNoYXIqIHM5LAot
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMTApIHsKLSAgICByZXR1cm4gc3Rk
OjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3ICsgczggKyBzOSArIHMx
MDsKLSAgfQotCi0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLX07Ci0KLS8vIFRlc3RzIHVzaW5n
IEludm9rZSgpIHdpdGggYSBudWxsYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0LCBOdWxs
YXJ5KSB7Ci0gIEFjdGlvbjxpbnQoKT4gYSA9IEludm9rZShOdWxsYXJ5KTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfRVEoMSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotfQotCi0vLyBUZXN0cyB1
c2luZyBJbnZva2UoKSB3aXRoIGEgdW5hcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZVRlc3QsIFVu
YXJ5KSB7Ci0gIEFjdGlvbjxib29sKGludCk+IGEgPSBJbnZva2UoVW5hcnkpOyAgLy8gTk9MSU5U
Ci0gIEVYUEVDVF9GQUxTRShhLlBlcmZvcm0obWFrZV90dXBsZSgxKSkpOwotICBFWFBFQ1RfVFJV
RShhLlBlcmZvcm0obWFrZV90dXBsZSgtMSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tl
KCkgd2l0aCBhIGJpbmFyeSBmdW5jdGlvbi4KLVRFU1QoSW52b2tlVGVzdCwgQmluYXJ5KSB7Ci0g
IEFjdGlvbjxjb25zdCBjaGFyKihjb25zdCBjaGFyKiwgc2hvcnQpPiBhID0gSW52b2tlKEJpbmFy
eSk7ICAvLyBOT0xJTlQKLSAgY29uc3QgY2hhciogcCA9ICJIZWxsbyI7Ci0gIEVYUEVDVF9FUShw
ICsgMiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUocCwgU2hvcnQoMikpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIEludm9rZSgpIHdpdGggYSB0ZXJuYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0
LCBUZXJuYXJ5KSB7Ci0gIEFjdGlvbjxpbnQoaW50LCBjaGFyLCBzaG9ydCk+IGEgPSBJbnZva2Uo
VGVybmFyeSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDYsIGEuUGVyZm9ybShtYWtlX3R1cGxl
KDEsICdcMicsIFNob3J0KDMpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRo
IGEgNC1hcmd1bWVudCBmdW5jdGlvbi4KLVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFr
ZXM0QXJndW1lbnRzKSB7Ci0gIEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwgaW50KT4gYSA9IElu
dm9rZShTdW1PZjQpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSgxMjM0LCBhLlBlcmZvcm0obWFr
ZV90dXBsZSgxMDAwLCAyMDAsIDMwLCA0KSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2Uo
KSB3aXRoIGEgNS1hcmd1bWVudCBmdW5jdGlvbi4KLVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25U
aGF0VGFrZXM1QXJndW1lbnRzKSB7Ci0gIEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpPiBhID0gSW52b2tlKFN1bU9mNSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEyMzQ1LCBh
LlBlcmZvcm0obWFrZV90dXBsZSgxMDAwMCwgMjAwMCwgMzAwLCA0MCwgNSkpKTsKLX0KLQotLy8g
VGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDYtYXJndW1lbnQgZnVuY3Rpb24uCi1URVNUKElu
dm9rZVRlc3QsIEZ1bmN0aW9uVGhhdFRha2VzNkFyZ3VtZW50cykgewotICBBY3Rpb248aW50KGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPiBhID0gSW52b2tlKFN1bU9mNik7ICAvLyBOT0xJ
TlQKLSAgRVhQRUNUX0VRKDEyMzQ1NiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAwMDAwLCAyMDAw
MCwgMzAwMCwgNDAwLCA1MCwgNikpKTsKLX0KLQotLy8gQSBoZWxwZXIgdGhhdCB0dXJucyB0aGUg
dHlwZSBvZiBhIEMtc3RyaW5nIGxpdGVyYWwgZnJvbSBjb25zdAotLy8gY2hhcltOXSB0byBjb25z
dCBjaGFyKi4KLWlubGluZSBjb25zdCBjaGFyKiBDaGFyUHRyKGNvbnN0IGNoYXIqIHMpIHsgcmV0
dXJuIHM7IH0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDctYXJndW1lbnQgZnVu
Y3Rpb24uCi1URVNUKEludm9rZVRlc3QsIEZ1bmN0aW9uVGhhdFRha2VzN0FyZ3VtZW50cykgewot
ICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
KiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2UoQ29uY2F0Nyk7Ci0gIEVYUEVD
VF9FUSgiMTIzNDU2NyIsCi0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRy
KCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0cigiMyIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBDaGFyUHRyKCI1IiksIENoYXJQdHIoIjYiKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjciKSkpKTsKLX0KLQotLy8g
VGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDgtYXJndW1lbnQgZnVuY3Rpb24uCi1URVNUKElu
dm9rZVRlc3QsIEZ1bmN0aW9uVGhhdFRha2VzOEFyZ3VtZW50cykgewotICBBY3Rpb248c3RkOjpz
dHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
Ci0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKik+Ci0gICAgICBhID0gSW52b2tlKENvbmNhdDgpOwotICBFWFBFQ1Rf
RVEoIjEyMzQ1Njc4IiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIo
IjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigiNiIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpLCBDaGFyUHRyKCI4Iikp
KSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA5LWFyZ3VtZW50IGZ1bmN0
aW9uLgotVEVTVChJbnZva2VUZXN0LCBGdW5jdGlvblRoYXRUYWtlczlBcmd1bWVudHMpIHsKLSAg
QWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKik+Ci0gICAgICBhID0gSW52b2tlKENvbmNhdDkpOwotICBFWFBFQ1RfRVEoIjEyMzQ1
Njc4OSIsCi0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIxIiksIENo
YXJQdHIoIjIiKSwgQ2hhclB0cigiMyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2hhclB0cigiNCIpLCBDaGFyUHRyKCI1IiksIENoYXJQdHIoIjYiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjciKSwgQ2hhclB0cigiOCIpLCBDaGFyUHRy
KCI5IikpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSAxMC1hcmd1bWVu
dCBmdW5jdGlvbi4KLVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXMxMEFyZ3VtZW50
cykgewotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik+Ci0gICAgICBhID0gSW52b2tlKENvbmNhdDEw
KTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3ODkwIiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtl
X3R1cGxlKENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hh
clB0cigiNiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIp
LCBDaGFyUHRyKCI4IiksIENoYXJQdHIoIjkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJQdHIoIjAiKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0
aCBmdW5jdGlvbnMgd2l0aCBwYXJhbWV0ZXJzIGRlY2xhcmVkIGFzIFVudXNlZC4KLVRFU1QoSW52
b2tlVGVzdCwgRnVuY3Rpb25XaXRoVW51c2VkUGFyYW1ldGVycykgewotICBBY3Rpb248aW50KGlu
dCwgaW50LCBkb3VibGUsIGNvbnN0IHN0cmluZyYpPiBhMSA9Ci0gICAgICBJbnZva2UoU3VtT2ZG
aXJzdDIpOwotICBzdHJpbmcgcygiaGkiKTsKLSAgRVhQRUNUX0VRKDEyLCBhMS5QZXJmb3JtKAot
ICAgIHR1cGxlPGludCwgaW50LCBkb3VibGUsIGNvbnN0IHN0cmluZyY+KDEwLCAyLCA1LjYsIHMp
KSk7Ci0KLSAgQWN0aW9uPGludChpbnQsIGludCwgYm9vbCwgaW50Kik+IGEyID0KLSAgICAgIElu
dm9rZShTdW1PZkZpcnN0Mik7Ci0gIEVYUEVDVF9FUSgyMywgYTIuUGVyZm9ybShtYWtlX3R1cGxl
KDIwLCAzLCB0cnVlLCBzdGF0aWNfY2FzdDxpbnQqPihOVUxMKSkpKTsKLX0KLQotLy8gVGVzdHMg
dXNpbmcgSW52b2tlKCkgd2l0aCBtZXRob2RzIHdpdGggcGFyYW1ldGVycyBkZWNsYXJlZCBhcyBV
bnVzZWQuCi1URVNUKEludm9rZVRlc3QsIE1ldGhvZFdpdGhVbnVzZWRQYXJhbWV0ZXJzKSB7Ci0g
IEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoc3RkOjpzdHJpbmcsIGJvb2wsIGludCwgaW50KT4gYTEg
PSBJbnZva2UoJmZvbywgJkZvbzo6U3VtT2ZMYXN0Mik7Ci0gIEVYUEVDVF9FUSgxMiwgYTEuUGVy
Zm9ybShtYWtlX3R1cGxlKENoYXJQdHIoImhpIiksIHRydWUsIDEwLCAyKSkpOwotCi0gIEFjdGlv
bjxpbnQoY2hhciwgZG91YmxlLCBpbnQsIGludCk+IGEyID0KLSAgICAgIEludm9rZSgmZm9vLCAm
Rm9vOjpTdW1PZkxhc3QyKTsKLSAgRVhQRUNUX0VRKDIzLCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUo
J2EnLCAyLjUsIDIwLCAzKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEg
ZnVuY3Rvci4KLVRFU1QoSW52b2tlVGVzdCwgRnVuY3RvcikgewotICBBY3Rpb248bG9uZyhsb25n
LCBpbnQpPiBhID0gSW52b2tlKHBsdXM8bG9uZz4oKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VR
KDNMLCBhLlBlcmZvcm0obWFrZV90dXBsZSgxLCAyKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJ
bnZva2UoZikgYXMgYW4gYWN0aW9uIG9mIGEgY29tcGF0aWJsZSB0eXBlLgotVEVTVChJbnZva2VU
ZXN0LCBGdW5jdGlvbldpdGhDb21wYXRpYmxlVHlwZSkgewotICBBY3Rpb248bG9uZyhpbnQsIHNo
b3J0LCBjaGFyLCBib29sKT4gYSA9IEludm9rZShTdW1PZjQpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9FUSg0MzIxLCBhLlBlcmZvcm0obWFrZV90dXBsZSg0MDAwLCBTaG9ydCgzMDApLCBDaGFyKDIw
KSwgdHJ1ZSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhbiBvYmplY3Qg
cG9pbnRlciBhbmQgYSBtZXRob2QgcG9pbnRlci4KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkg
d2l0aCBhIG51bGxhcnkgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBOdWxsYXJ5KSB7
Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoKT4gYSA9IEludm9rZSgmZm9vLCAmRm9vOjpOdWxs
YXJ5KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMTIzLCBhLlBlcmZvcm0obWFrZV90dXBsZSgp
KSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSB1bmFyeSBtZXRob2QuCi1U
RVNUKEludm9rZU1ldGhvZFRlc3QsIFVuYXJ5KSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxzaG9y
dChsb25nKT4gYSA9IEludm9rZSgmZm9vLCAmRm9vOjpVbmFyeSk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0VRKDQxMjMsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDQwMDApKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIEludm9rZSgpIHdpdGggYSBiaW5hcnkgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RU
ZXN0LCBCaW5hcnkpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPHN0cmluZyhjb25zdCBzdHJpbmcm
LCBjaGFyKT4gYSA9IEludm9rZSgmZm9vLCAmRm9vOjpCaW5hcnkpOwotICBzdHJpbmcgcygiSGVs
bCIpOwotICBFWFBFQ1RfRVEoIkhlbGxvIiwgYS5QZXJmb3JtKAotICAgICAgdHVwbGU8Y29uc3Qg
c3RyaW5nJiwgY2hhcj4ocywgJ28nKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3
aXRoIGEgdGVybmFyeSBtZXRob2QuCi1URVNUKEludm9rZU1ldGhvZFRlc3QsIFRlcm5hcnkpIHsK
LSAgRm9vIGZvbzsKLSAgQWN0aW9uPGludChpbnQsIGJvb2wsIGNoYXIpPiBhID0gSW52b2tlKCZm
b28sICZGb286OlRlcm5hcnkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSgxMTI0LCBhLlBlcmZv
cm0obWFrZV90dXBsZSgxMDAwLCB0cnVlLCBDaGFyKDEpKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBJbnZva2UoKSB3aXRoIGEgNC1hcmd1bWVudCBtZXRob2QuCi1URVNUKEludm9rZU1ldGhvZFRl
c3QsIE1ldGhvZFRoYXRUYWtlczRBcmd1bWVudHMpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPGlu
dChpbnQsIGludCwgaW50LCBpbnQpPiBhID0gSW52b2tlKCZmb28sICZGb286OlN1bU9mNCk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEzNTcsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAsIDIw
MCwgMzAsIDQpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA1LWFyZ3Vt
ZW50IG1ldGhvZC4KLVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgTWV0aG9kVGhhdFRha2VzNUFyZ3Vt
ZW50cykgewotICBGb28gZm9vOwotICBBY3Rpb248aW50KGludCwgaW50LCBpbnQsIGludCwgaW50
KT4gYSA9IEludm9rZSgmZm9vLCAmRm9vOjpTdW1PZjUpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9F
USgxMjM0NSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAwMDAsIDIwMDAsIDMwMCwgNDAsIDUpKSk7
Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA2LWFyZ3VtZW50IG1ldGhvZC4K
LVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgTWV0aG9kVGhhdFRha2VzNkFyZ3VtZW50cykgewotICBG
b28gZm9vOwotICBBY3Rpb248aW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPiBhID0g
IC8vIE5PTElOVAotICAgICAgSW52b2tlKCZmb28sICZGb286OlN1bU9mNik7Ci0gIEVYUEVDVF9F
USgxMjM0NTYsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAwMCwgMjAwMDAsIDMwMDAsIDQwMCwg
NTAsIDYpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA3LWFyZ3VtZW50
IG1ldGhvZC4KLVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgTWV0aG9kVGhhdFRha2VzN0FyZ3VtZW50
cykgewotICBGb28gZm9vOwotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2Uo
JmZvbywgJkZvbzo6Q29uY2F0Nyk7Ci0gIEVYUEVDVF9FUSgiMTIzNDU2NyIsCi0gICAgICAgICAg
ICBhLlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0
cigiMyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBD
aGFyUHRyKCI1IiksIENoYXJQdHIoIjYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENoYXJQdHIoIjciKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBh
IDgtYXJndW1lbnQgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFr
ZXM4QXJndW1lbnRzKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqKT4KLSAgICAgIGEgPSBJbnZva2UoJmZvbywgJkZvbzo6Q29uY2F0OCk7Ci0gIEVYUEVDVF9F
USgiMTIzNDU2NzgiLAotICAgICAgICAgICAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigi
MSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigiNSIpLCBDaGFyUHRyKCI2IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI3IiksIENoYXJQdHIoIjgiKSkp
KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDktYXJndW1lbnQgbWV0aG9k
LgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFrZXM5QXJndW1lbnRzKSB7Ci0g
IEZvbyBmb287Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciopPgotICAgICAgYSA9IEludm9rZSgmZm9vLCAmRm9vOjpDb25j
YXQ5KTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3ODkiLAotICAgICAgICAgICAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigiNSIpLCBD
aGFyUHRyKCI2IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI3
IiksIENoYXJQdHIoIjgiKSwgQ2hhclB0cigiOSIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJ
bnZva2UoKSB3aXRoIGEgMTAtYXJndW1lbnQgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0
LCBNZXRob2RUaGF0VGFrZXMxMEFyZ3VtZW50cykgewotICBGb28gZm9vOwotICBBY3Rpb248c3Rk
OjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKik+Ci0gICAgICBhID0gSW52b2tlKCZmb28sICZGb286OkNvbmNhdDEwKTsKLSAg
RVhQRUNUX0VRKCIxMjM0NTY3ODkwIiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxl
KENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigi
NiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpLCBDaGFy
UHRyKCI4IiksIENoYXJQdHIoIjkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENoYXJQdHIoIjAiKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKGYpIGFzIGFuIGFj
dGlvbiBvZiBhIGNvbXBhdGlibGUgdHlwZS4KLVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgTWV0aG9k
V2l0aENvbXBhdGlibGVUeXBlKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxsb25nKGludCwgc2hv
cnQsIGNoYXIsIGJvb2wpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlKCZmb28sICZGb286
OlN1bU9mNCk7Ci0gIEVYUEVDVF9FUSg0NDQ0LCBhLlBlcmZvcm0obWFrZV90dXBsZSg0MDAwLCBT
aG9ydCgzMDApLCBDaGFyKDIwKSwgdHJ1ZSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aG91
dEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyBubyBhcmd1bWVudC4KLVRFU1QoV2l0aG91
dEFyZ3NUZXN0LCBOb0FyZykgewotICBBY3Rpb248aW50KGludCBuKT4gYSA9IFdpdGhvdXRBcmdz
KEludm9rZShOdWxsYXJ5KSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEsIGEuUGVyZm9ybSht
YWtlX3R1cGxlKDIpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFdpdGhBcmcgd2l0aCBhbiBhY3Rp
b24gdGhhdCB0YWtlcyAxIGFyZ3VtZW50LgotVEVTVChXaXRoQXJnVGVzdCwgT25lQXJnKSB7Ci0g
IEFjdGlvbjxib29sKGRvdWJsZSB4LCBpbnQgbik+IGIgPSBXaXRoQXJnPDE+KEludm9rZShVbmFy
eSkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKGIuUGVyZm9ybShtYWtlX3R1cGxlKDEuNSwg
LTEpKSk7Ci0gIEVYUEVDVF9GQUxTRShiLlBlcmZvcm0obWFrZV90dXBsZSgxLjUsIDEpKSk7Ci19
Ci0KLVRFU1QoUmV0dXJuQXJnQWN0aW9uVGVzdCwgV29ya3NGb3JPbmVBcmdJbnRBcmcwKSB7Ci0g
IGNvbnN0IEFjdGlvbjxpbnQoaW50KT4gYSA9IFJldHVybkFyZzwwPigpOwotICBFWFBFQ1RfRVEo
NSwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoNSkpKTsKLX0KLQotVEVTVChSZXR1cm5BcmdBY3Rpb25U
ZXN0LCBXb3Jrc0Zvck11bHRpQXJnQm9vbEFyZzApIHsKLSAgY29uc3QgQWN0aW9uPGJvb2woYm9v
bCwgYm9vbCwgYm9vbCk+IGEgPSBSZXR1cm5Bcmc8MD4oKTsKLSAgRVhQRUNUX1RSVUUoYS5QZXJm
b3JtKG1ha2VfdHVwbGUodHJ1ZSwgZmFsc2UsIGZhbHNlKSkpOwotfQotCi1URVNUKFJldHVybkFy
Z0FjdGlvblRlc3QsIFdvcmtzRm9yTXVsdGlBcmdTdHJpbmdBcmcyKSB7Ci0gIGNvbnN0IEFjdGlv
bjxzdGQ6OnN0cmluZyhpbnQsIGludCwgc3RkOjpzdHJpbmcsIGludCk+IGEgPSBSZXR1cm5Bcmc8
Mj4oKTsKLSAgRVhQRUNUX0VRKCJzZXZlbiIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDUsIDYsIHN0
ZDo6c3RyaW5nKCJzZXZlbiIpLCA4KSkpOwotfQotCi1URVNUKFNhdmVBcmdBY3Rpb25UZXN0LCBX
b3Jrc0ZvclNhbWVUeXBlKSB7Ci0gIGludCByZXN1bHQgPSAwOwotICBjb25zdCBBY3Rpb248dm9p
ZChpbnQgbik+IGExID0gU2F2ZUFyZzwwPigmcmVzdWx0KTsKLSAgYTEuUGVyZm9ybShtYWtlX3R1
cGxlKDUpKTsKLSAgRVhQRUNUX0VRKDUsIHJlc3VsdCk7Ci19Ci0KLVRFU1QoU2F2ZUFyZ0FjdGlv
blRlc3QsIFdvcmtzRm9yQ29tcGF0aWJsZVR5cGUpIHsKLSAgaW50IHJlc3VsdCA9IDA7Ci0gIGNv
bnN0IEFjdGlvbjx2b2lkKGJvb2wsIGNoYXIpPiBhMSA9IFNhdmVBcmc8MT4oJnJlc3VsdCk7Ci0g
IGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAnYScpKTsKLSAgRVhQRUNUX0VRKCdhJywgcmVz
dWx0KTsKLX0KLQotVEVTVChTYXZlQXJnUG9pbnRlZUFjdGlvblRlc3QsIFdvcmtzRm9yU2FtZVR5
cGUpIHsKLSAgaW50IHJlc3VsdCA9IDA7Ci0gIGNvbnN0IGludCB2YWx1ZSA9IDU7Ci0gIGNvbnN0
IEFjdGlvbjx2b2lkKGNvbnN0IGludCopPiBhMSA9IFNhdmVBcmdQb2ludGVlPDA+KCZyZXN1bHQp
OwotICBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoJnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSg1LCByZXN1
bHQpOwotfQotCi1URVNUKFNhdmVBcmdQb2ludGVlQWN0aW9uVGVzdCwgV29ya3NGb3JDb21wYXRp
YmxlVHlwZSkgewotICBpbnQgcmVzdWx0ID0gMDsKLSAgY2hhciB2YWx1ZSA9ICdhJzsKLSAgY29u
c3QgQWN0aW9uPHZvaWQoYm9vbCwgY2hhciopPiBhMSA9IFNhdmVBcmdQb2ludGVlPDE+KCZyZXN1
bHQpOwotICBhMS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJnZhbHVlKSk7Ci0gIEVYUEVDVF9F
USgnYScsIHJlc3VsdCk7Ci19Ci0KLVRFU1QoU2F2ZUFyZ1BvaW50ZWVBY3Rpb25UZXN0LCBXb3Jr
c0ZvckxpbmtlZFB0cikgewotICBpbnQgcmVzdWx0ID0gMDsKLSAgbGlua2VkX3B0cjxpbnQ+IHZh
bHVlKG5ldyBpbnQoNSkpOwotICBjb25zdCBBY3Rpb248dm9pZChsaW5rZWRfcHRyPGludD4pPiBh
MSA9IFNhdmVBcmdQb2ludGVlPDA+KCZyZXN1bHQpOwotICBhMS5QZXJmb3JtKG1ha2VfdHVwbGUo
dmFsdWUpKTsKLSAgRVhQRUNUX0VRKDUsIHJlc3VsdCk7Ci19Ci0KLVRFU1QoU2V0QXJnUmVmZXJl
ZUFjdGlvblRlc3QsIFdvcmtzRm9yU2FtZVR5cGUpIHsKLSAgaW50IHZhbHVlID0gMDsKLSAgY29u
c3QgQWN0aW9uPHZvaWQoaW50Jik+IGExID0gU2V0QXJnUmVmZXJlZTwwPigxKTsKLSAgYTEuUGVy
Zm9ybSh0dXBsZTxpbnQmPih2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMSwgdmFsdWUpOwotfQotCi1U
RVNUKFNldEFyZ1JlZmVyZWVBY3Rpb25UZXN0LCBXb3Jrc0ZvckNvbXBhdGlibGVUeXBlKSB7Ci0g
IGludCB2YWx1ZSA9IDA7Ci0gIGNvbnN0IEFjdGlvbjx2b2lkKGludCwgaW50Jik+IGExID0gU2V0
QXJnUmVmZXJlZTwxPignYScpOwotICBhMS5QZXJmb3JtKHR1cGxlPGludCwgaW50Jj4oMCwgdmFs
dWUpKTsKLSAgRVhQRUNUX0VRKCdhJywgdmFsdWUpOwotfQotCi1URVNUKFNldEFyZ1JlZmVyZWVB
Y3Rpb25UZXN0LCBXb3Jrc1dpdGhFeHRyYUFyZ3VtZW50cykgewotICBpbnQgdmFsdWUgPSAwOwot
ICBjb25zdCBBY3Rpb248dm9pZChib29sLCBpbnQsIGludCYsIGNvbnN0IGNoYXIqKT4gYTEgPSBT
ZXRBcmdSZWZlcmVlPDI+KCdhJyk7Ci0gIGExLlBlcmZvcm0odHVwbGU8Ym9vbCwgaW50LCBpbnQm
LCBjb25zdCBjaGFyKj4odHJ1ZSwgMCwgdmFsdWUsICJoaSIpKTsKLSAgRVhQRUNUX0VRKCdhJywg
dmFsdWUpOwotfQotCi0vLyBBIGNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IHRoYXQg
aXRzIGRlc3RydWN0b3IgaXMgY2FsbGVkOiBpdCB3aWxsIHNldAotLy8gdGhlIGJvb2wgcHJvdmlk
ZWQgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIHRydWUgd2hlbiBkZXN0cm95ZWQuCi1jbGFzcyBEZWxl
dGlvblRlc3RlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBEZWxldGlvblRlc3Rlcihib29sKiBp
c19kZWxldGVkKQotICAgIDogaXNfZGVsZXRlZF8oaXNfZGVsZXRlZCkgewotICAgIC8vIE1ha2Ug
c3VyZSB0aGUgYml0IGlzIHNldCB0byBmYWxzZS4KLSAgICAqaXNfZGVsZXRlZF8gPSBmYWxzZTsK
LSAgfQotCi0gIH5EZWxldGlvblRlc3RlcigpIHsKLSAgICAqaXNfZGVsZXRlZF8gPSB0cnVlOwot
ICB9Ci0KLSBwcml2YXRlOgotICBib29sKiBpc19kZWxldGVkXzsKLX07Ci0KLVRFU1QoRGVsZXRl
QXJnQWN0aW9uVGVzdCwgT25lQXJnKSB7Ci0gIGJvb2wgaXNfZGVsZXRlZCA9IGZhbHNlOwotICBE
ZWxldGlvblRlc3RlciogdCA9IG5ldyBEZWxldGlvblRlc3RlcigmaXNfZGVsZXRlZCk7Ci0gIGNv
bnN0IEFjdGlvbjx2b2lkKERlbGV0aW9uVGVzdGVyKik+IGExID0gRGVsZXRlQXJnPDA+KCk7ICAg
ICAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShpc19kZWxldGVkKTsKLSAgYTEuUGVyZm9ybSht
YWtlX3R1cGxlKHQpKTsKLSAgRVhQRUNUX1RSVUUoaXNfZGVsZXRlZCk7Ci19Ci0KLVRFU1QoRGVs
ZXRlQXJnQWN0aW9uVGVzdCwgVGVuQXJncykgewotICBib29sIGlzX2RlbGV0ZWQgPSBmYWxzZTsK
LSAgRGVsZXRpb25UZXN0ZXIqIHQgPSBuZXcgRGVsZXRpb25UZXN0ZXIoJmlzX2RlbGV0ZWQpOwot
ICBjb25zdCBBY3Rpb248dm9pZChib29sLCBpbnQsIGludCwgY29uc3QgY2hhciosIGJvb2wsCi0g
ICAgICAgICAgICAgICAgICAgIGludCwgaW50LCBpbnQsIGludCwgRGVsZXRpb25UZXN0ZXIqKT4g
YTEgPSBEZWxldGVBcmc8OT4oKTsKLSAgRVhQRUNUX0ZBTFNFKGlzX2RlbGV0ZWQpOwotICBhMS5Q
ZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgNSwgNiwgQ2hhclB0cigiaGkiKSwgZmFsc2UsIDcsIDgs
IDksIDEwLCB0KSk7Ci0gIEVYUEVDVF9UUlVFKGlzX2RlbGV0ZWQpOwotfQotCi0jaWYgR1RFU1Rf
SEFTX0VYQ0VQVElPTlMKLQotVEVTVChUaHJvd0FjdGlvblRlc3QsIFRocm93c0dpdmVuRXhjZXB0
aW9uSW5Wb2lkRnVuY3Rpb24pIHsKLSAgY29uc3QgQWN0aW9uPHZvaWQoaW50IG4pPiBhID0gVGhy
b3coJ2EnKTsKLSAgRVhQRUNUX1RIUk9XKGEuUGVyZm9ybShtYWtlX3R1cGxlKDApKSwgY2hhcik7
Ci19Ci0KLWNsYXNzIE15RXhjZXB0aW9uIHt9OwotCi1URVNUKFRocm93QWN0aW9uVGVzdCwgVGhy
b3dzR2l2ZW5FeGNlcHRpb25Jbk5vblZvaWRGdW5jdGlvbikgewotICBjb25zdCBBY3Rpb248ZG91
YmxlKGNoYXIgY2gpPiBhID0gVGhyb3coTXlFeGNlcHRpb24oKSk7Ci0gIEVYUEVDVF9USFJPVyhh
LlBlcmZvcm0obWFrZV90dXBsZSgnMCcpKSwgTXlFeGNlcHRpb24pOwotfQotCi1URVNUKFRocm93
QWN0aW9uVGVzdCwgVGhyb3dzR2l2ZW5FeGNlcHRpb25Jbk51bGxhcnlGdW5jdGlvbikgewotICBj
b25zdCBBY3Rpb248ZG91YmxlKCk+IGEgPSBUaHJvdyhNeUV4Y2VwdGlvbigpKTsKLSAgRVhQRUNU
X1RIUk9XKGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpLCBNeUV4Y2VwdGlvbik7Ci19Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgdGhhdCBTZXRBcnJheUFyZ3Vt
ZW50PE4+KGZpcnN0LCBsYXN0KSBzZXRzIHRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkKLS8vIHBv
aW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIHZhbHVlcyBpbiByYW5n
ZSBbZmlyc3QsIGxhc3QpLgotVEVTVChTZXRBcnJheUFyZ3VtZW50VGVzdCwgU2V0c1RoZU50aEFy
cmF5KSB7Ci0gIHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKGJvb2wsIGludCosIGNoYXIqKTsKLSAg
aW50IG51bWJlcnNbXSA9IHsgMSwgMiwgMyB9OwotICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNl
dEFycmF5QXJndW1lbnQ8MT4obnVtYmVycywgbnVtYmVycyArIDMpOwotCi0gIGludCBuWzRdID0g
e307Ci0gIGludCogcG4gPSBuOwotICBjaGFyIGNoWzRdID0ge307Ci0gIGNoYXIqIHBjaCA9IGNo
OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBwbiwgcGNoKSk7Ci0gIEVYUEVDVF9FUSgx
LCBuWzBdKTsKLSAgRVhQRUNUX0VRKDIsIG5bMV0pOwotICBFWFBFQ1RfRVEoMywgblsyXSk7Ci0g
IEVYUEVDVF9FUSgwLCBuWzNdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGNoWzBdKTsKLSAgRVhQRUNU
X0VRKCdcMCcsIGNoWzFdKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGNoWzJdKTsKLSAgRVhQRUNUX0VR
KCdcMCcsIGNoWzNdKTsKLQotICAvLyBUZXN0cyBmaXJzdCBhbmQgbGFzdCBhcmUgaXRlcmF0b3Jz
LgotICBzdGQ6OnN0cmluZyBsZXR0ZXJzID0gImFiYyI7Ci0gIGEgPSBTZXRBcnJheUFyZ3VtZW50
PDI+KGxldHRlcnMuYmVnaW4oKSwgbGV0dGVycy5lbmQoKSk7Ci0gIHN0ZDo6ZmlsbF9uKG4sIDQs
IDApOwotICBzdGQ6OmZpbGxfbihjaCwgNCwgJ1wwJyk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxl
KHRydWUsIHBuLCBwY2gpKTsKLSAgRVhQRUNUX0VRKDAsIG5bMF0pOwotICBFWFBFQ1RfRVEoMCwg
blsxXSk7Ci0gIEVYUEVDVF9FUSgwLCBuWzJdKTsKLSAgRVhQRUNUX0VRKDAsIG5bM10pOwotICBF
WFBFQ1RfRVEoJ2EnLCBjaFswXSk7Ci0gIEVYUEVDVF9FUSgnYicsIGNoWzFdKTsKLSAgRVhQRUNU
X0VRKCdjJywgY2hbMl0pOwotICBFWFBFQ1RfRVEoJ1wwJywgY2hbM10pOwotfQotCi0vLyBUZXN0
cyBTZXRBcnJheUFyZ3VtZW50PE4+KGZpcnN0LCBsYXN0KSB3aGVyZSBmaXJzdCA9PSBsYXN0Lgot
VEVTVChTZXRBcnJheUFyZ3VtZW50VGVzdCwgU2V0c1RoZU50aEFycmF5V2l0aEVtcHR5UmFuZ2Up
IHsKLSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgaW50Kik7Ci0gIGludCBudW1iZXJz
W10gPSB7IDEsIDIsIDMgfTsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcnJheUFyZ3Vt
ZW50PDE+KG51bWJlcnMsIG51bWJlcnMpOwotCi0gIGludCBuWzRdID0ge307Ci0gIGludCogcG4g
PSBuOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBwbikpOwotICBFWFBFQ1RfRVEoMCwg
blswXSk7Ci0gIEVYUEVDVF9FUSgwLCBuWzFdKTsKLSAgRVhQRUNUX0VRKDAsIG5bMl0pOwotICBF
WFBFQ1RfRVEoMCwgblszXSk7Ci19Ci0KLS8vIFRlc3RzIFNldEFycmF5QXJndW1lbnQ8Tj4oZmly
c3QsIGxhc3QpIHdoZXJlICpmaXJzdCBpcyBjb252ZXJ0aWJsZQotLy8gKGJ1dCBub3QgZXF1YWwp
IHRvIHRoZSBhcmd1bWVudCB0eXBlLgotVEVTVChTZXRBcnJheUFyZ3VtZW50VGVzdCwgU2V0c1Ro
ZU50aEFycmF5V2l0aENvbnZlcnRpYmxlVHlwZSkgewotICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlv
bihib29sLCBpbnQqKTsKLSAgY2hhciBjaGFyc1tdID0geyA5NywgOTgsIDk5IH07Ci0gIEFjdGlv
bjxNeUZ1bmN0aW9uPiBhID0gU2V0QXJyYXlBcmd1bWVudDwxPihjaGFycywgY2hhcnMgKyAzKTsK
LQotICBpbnQgY29kZXNbNF0gPSB7IDExMSwgMjIyLCAzMzMsIDQ0NCB9OwotICBpbnQqIHBjb2Rl
cyA9IGNvZGVzOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBwY29kZXMpKTsKLSAgRVhQ
RUNUX0VRKDk3LCBjb2Rlc1swXSk7Ci0gIEVYUEVDVF9FUSg5OCwgY29kZXNbMV0pOwotICBFWFBF
Q1RfRVEoOTksIGNvZGVzWzJdKTsKLSAgRVhQRUNUX0VRKDQ0NCwgY29kZXNbM10pOwotfQotCi0v
LyBUZXN0IFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpIHdpdGggaXRlcmF0b3IgYXMg
YXJndW1lbnQuCi1URVNUKFNldEFycmF5QXJndW1lbnRUZXN0LCBTZXRzVGhlTnRoQXJyYXlXaXRo
SXRlcmF0b3JBcmd1bWVudCkgewotICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihib29sLCBzdGQ6
OmJhY2tfaW5zZXJ0X2l0ZXJhdG9yPHN0ZDo6c3RyaW5nPik7Ci0gIHN0ZDo6c3RyaW5nIGxldHRl
cnMgPSAiYWJjIjsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcnJheUFyZ3VtZW50PDE+
KGxldHRlcnMuYmVnaW4oKSwgbGV0dGVycy5lbmQoKSk7Ci0KLSAgc3RkOjpzdHJpbmcgczsKLSAg
YS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgYmFja19pbnNlcnRlcihzKSkpOwotICBFWFBFQ1Rf
RVEobGV0dGVycywgcyk7Ci19Ci0KLVRFU1QoUmV0dXJuUG9pbnRlZVRlc3QsIFdvcmtzKSB7Ci0g
IGludCBuID0gNDI7Ci0gIGNvbnN0IEFjdGlvbjxpbnQoKT4gYSA9IFJldHVyblBvaW50ZWUoJm4p
OwotICBFWFBFQ1RfRVEoNDIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICBuID0gNDM7
Ci0gIEVYUEVDVF9FUSg0MywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotfQotCi19ICAvLyBu
YW1lc3BhY2UgZ21vY2tfZ2VuZXJhdGVkX2FjdGlvbnNfdGVzdAotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbmljZS1zdHJpY3RfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbmljZS1zdHJpY3RfdGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ2Y2NjNGYxMDBmNGM2NDEwMTg5YTVjODBjNjdjNmIz
MjA1M2IwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay90ZXN0L2dtb2NrLW5pY2Utc3RyaWN0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw0MjMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oIgotCi0jaW5jbHVkZSA8
c3RyaW5nPgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotLy8gVGhpcyBtdXN0IG5vdCBiZSBk
ZWZpbmVkIGluc2lkZSB0aGUgOjp0ZXN0aW5nIG5hbWVzcGFjZSwgb3IgaXQgd2lsbAotLy8gY2xh
c2ggd2l0aCA6OnRlc3Rpbmc6Ok1vY2suCi1jbGFzcyBNb2NrIHsKLSBwdWJsaWM6Ci0gIE1vY2so
KSB7fQotCi0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIHZvaWQoKSk7Ci0KLSBwcml2YXRlOgotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2spOwotfTsKLQotbmFtZXNwYWNlIHRl
c3RpbmcgewotbmFtZXNwYWNlIGdtb2NrX25pY2Vfc3RyaWN0X3Rlc3QgewotCi11c2luZyB0ZXN0
aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpOwotdXNpbmcgdGVzdGluZzo6SGFzU3Vic3RyOwotdXNp
bmcgdGVzdGluZzo6TmFnZ3lNb2NrOwotdXNpbmcgdGVzdGluZzo6TmljZU1vY2s7Ci11c2luZyB0
ZXN0aW5nOjpTdHJpY3RNb2NrOwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7Ci11c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRvdXQ7Ci0jZW5kaWYKLQotLy8gRGVmaW5lcyBzb21lIG1v
Y2sgY2xhc3NlcyBuZWVkZWQgYnkgdGhlIHRlc3RzLgotCi1jbGFzcyBGb28gewotIHB1YmxpYzoK
LSAgdmlydHVhbCB+Rm9vKCkge30KLQotICB2aXJ0dWFsIHZvaWQgRG9UaGlzKCkgPSAwOwotICB2
aXJ0dWFsIGludCBEb1RoYXQoYm9vbCBmbGFnKSA9IDA7Ci19OwotCi1jbGFzcyBNb2NrRm9vIDog
cHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNb2NrRm9vKCkge30KLSAgdm9pZCBEZWxldGUoKSB7
IGRlbGV0ZSB0aGlzOyB9Ci0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgdm9pZCgpKTsKLSAgTU9D
S19NRVRIT0QxKERvVGhhdCwgaW50KGJvb2wgZmxhZykpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRm9vKTsKLX07Ci0KLWNsYXNzIE1vY2tCYXIg
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTW9ja0Jhcihjb25zdCBzdGQ6OnN0cmluZyYgcykgOiBz
dHJfKHMpIHt9Ci0KLSAgTW9ja0JhcihjaGFyIGExLCBjaGFyIGEyLCBzdGQ6OnN0cmluZyBhMywg
c3RkOjpzdHJpbmcgYTQsIGludCBhNSwgaW50IGE2LAotICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBhNywgY29uc3Qgc3RkOjpzdHJpbmcmIGE4LCBib29sIGE5LCBib29sIGExMCkgewotICAg
IHN0cl8gPSBzdGQ6OnN0cmluZygpICsgYTEgKyBhMiArIGEzICsgYTQgKyBzdGF0aWNfY2FzdDxj
aGFyPihhNSkgKwotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPihhNikgKyBhNyArIGE4ICsgKGE5
ID8gJ1QnIDogJ0YnKSArIChhMTAgPyAnVCcgOiAnRicpOwotICB9Ci0KLSAgdmlydHVhbCB+TW9j
a0JhcigpIHt9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigpIGNvbnN0IHsgcmV0dXJuIHN0
cl87IH0KLQotICBNT0NLX01FVEhPRDAoVGhpcywgaW50KCkpOwotICBNT0NLX01FVEhPRDIoVGhh
dCwgc3RkOjpzdHJpbmcoaW50LCBib29sKSk7Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyBz
dHJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Jhcik7Ci19Owot
Ci0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBUZXN0cyB0aGF0IGEgcmF3
IG1vY2sgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB1bmludGVyZXN0aW5nIGNhbGxzLgotVEVTVChS
YXdNb2NrVGVzdCwgV2FybmluZ0ZvclVuaW50ZXJlc3RpbmdDYWxsKSB7Ci0gIGNvbnN0IHN0ZDo6
c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9DS19GTEFHKHZl
cmJvc2UpID0gIndhcm5pbmciOwotCi0gIE1vY2tGb28gcmF3X2ZvbzsKLQotICBDYXB0dXJlU3Rk
b3V0KCk7Ci0gIHJhd19mb28uRG9UaGlzKCk7Ci0gIHJhd19mb28uRG9UaGF0KHRydWUpOwotICBF
WFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIo
IlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikpOwotCi0gIEdNT0NLX0ZMQUcodmVy
Ym9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgcmF3IG1vY2sgZ2VuZXJh
dGVzIHdhcm5pbmdzIGZvciB1bmludGVyZXN0aW5nIGNhbGxzCi0vLyB0aGF0IGRlbGV0ZSB0aGUg
bW9jayBvYmplY3QuCi1URVNUKFJhd01vY2tUZXN0LCBXYXJuaW5nRm9yVW5pbnRlcmVzdGluZ0Nh
bGxBZnRlckRlYXRoKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19G
TEFHKHZlcmJvc2UpOwotICBHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOwotCi0gIE1v
Y2tGb28qIGNvbnN0IHJhd19mb28gPSBuZXcgTW9ja0ZvbzsKLQotICBPTl9DQUxMKCpyYXdfZm9v
LCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZShyYXdfZm9vLCAmTW9ja0Zv
bzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICByYXdfZm9vLT5Eb1RoaXMoKTsK
LSAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKSwKLSAgICAgICAgICAgICAgSGFzU3Vi
c3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpKTsKLQotICBHTU9DS19GTEFH
KHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHJhdyBtb2NrIGdl
bmVyYXRlcyBpbmZvcm1hdGlvbmFsIGxvZ3MgZm9yCi0vLyB1bmludGVyZXN0aW5nIGNhbGxzLgot
VEVTVChSYXdNb2NrVGVzdCwgSW5mb0ZvclVuaW50ZXJlc3RpbmdDYWxsKSB7Ci0gIE1vY2tGb28g
cmF3X2ZvbzsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2
ZXJib3NlKTsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbmZvIjsKLSAgQ2FwdHVyZVN0ZG91
dCgpOwotICByYXdfZm9vLkRvVGhpcygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91
dCgpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlv
biBjYWxsIikpOwotCi0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0v
LyBUZXN0cyB0aGF0IGEgbmljZSBtb2NrIGdlbmVyYXRlcyBubyB3YXJuaW5nIGZvciB1bmludGVy
ZXN0aW5nIGNhbGxzLgotVEVTVChOaWNlTW9ja1Rlc3QsIE5vV2FybmluZ0ZvclVuaW50ZXJlc3Rp
bmdDYWxsKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwotCi0gIENhcHR1cmVTdGRv
dXQoKTsKLSAgbmljZV9mb28uRG9UaGlzKCk7Ci0gIG5pY2VfZm9vLkRvVGhhdCh0cnVlKTsKLSAg
RVhQRUNUX0VRKCIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBh
IG5pY2UgbW9jayBnZW5lcmF0ZXMgbm8gd2FybmluZyBmb3IgdW5pbnRlcmVzdGluZyBjYWxscwot
Ly8gdGhhdCBkZWxldGUgdGhlIG1vY2sgb2JqZWN0LgotVEVTVChOaWNlTW9ja1Rlc3QsIE5vV2Fy
bmluZ0ZvclVuaW50ZXJlc3RpbmdDYWxsQWZ0ZXJEZWF0aCkgewotICBOaWNlTW9jazxNb2NrRm9v
PiogY29uc3QgbmljZV9mb28gPSBuZXcgTmljZU1vY2s8TW9ja0Zvbz47Ci0KLSAgT05fQ0FMTCgq
bmljZV9mb28sIERvVGhpcygpKQotICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKG5pY2VfZm9v
LCAmTW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBuaWNlX2Zvby0+
RG9UaGlzKCk7Ci0gIEVYUEVDVF9FUSgiIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYSBuaWNlIG1vY2sgZ2VuZXJhdGVzIGluZm9ybWF0aW9uYWwgbG9ncyBmb3IK
LS8vIHVuaW50ZXJlc3RpbmcgY2FsbHMuCi1URVNUKE5pY2VNb2NrVGVzdCwgSW5mb0ZvclVuaW50
ZXJlc3RpbmdDYWxsKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwotCi0gIGNvbnN0
IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9DS19G
TEFHKHZlcmJvc2UpID0gImluZm8iOwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIG5pY2VfZm9vLkRv
VGhpcygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICAgICAg
ICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikpOwotCi0gIEdN
T0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8gVGVzdHMgdGhhdCBhIG5pY2UgbW9jayBhbGxvd3Mg
ZXhwZWN0ZWQgY2FsbHMuCi1URVNUKE5pY2VNb2NrVGVzdCwgQWxsb3dzRXhwZWN0ZWRDYWxsKSB7
Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwotCi0gIEVYUEVDVF9DQUxMKG5pY2VfZm9v
LCBEb1RoaXMoKSk7Ci0gIG5pY2VfZm9vLkRvVGhpcygpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFu
IHVuZXhwZWN0ZWQgY2FsbCBvbiBhIG5pY2UgbW9jayBmYWlscy4KLVRFU1QoTmljZU1vY2tUZXN0
LCBVbmV4cGVjdGVkQ2FsbEZhaWxzKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwot
Ci0gIEVYUEVDVF9DQUxMKG5pY2VfZm9vLCBEb1RoaXMoKSkuVGltZXMoMCk7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKG5pY2VfZm9vLkRvVGhpcygpLCAiY2FsbGVkIG1vcmUgdGltZXMgdGhh
biBleHBlY3RlZCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5pY2VNb2NrIHdvcmtzIHdpdGggYSBt
b2NrIGNsYXNzIHRoYXQgaGFzIGEgbm9uLWRlZmF1bHQKLS8vIGNvbnN0cnVjdG9yLgotVEVTVChO
aWNlTW9ja1Rlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RvcikgewotICBOaWNlTW9jazxNb2NrQmFy
PiBuaWNlX2JhcigiaGkiKTsKLSAgRVhQRUNUX0VRKCJoaSIsIG5pY2VfYmFyLnN0cigpKTsKLQot
ICBuaWNlX2Jhci5UaGlzKCk7Ci0gIG5pY2VfYmFyLlRoYXQoNSwgdHJ1ZSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgTmljZU1vY2sgd29ya3Mgd2l0aCBhIG1vY2sgY2xhc3MgdGhhdCBoYXMgYSAxMC1h
cnkKLS8vIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yLgotVEVTVChOaWNlTW9ja1Rlc3QsIE5vbkRl
ZmF1bHRDb25zdHJ1Y3RvcjEwKSB7Ci0gIE5pY2VNb2NrPE1vY2tCYXI+IG5pY2VfYmFyKCdhJywg
J2InLCAiYyIsICJkIiwgJ2UnLCAnZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJn
IiwgImgiLCB0cnVlLCBmYWxzZSk7Ci0gIEVYUEVDVF9FUSgiYWJjZGVmZ2hURiIsIG5pY2VfYmFy
LnN0cigpKTsKLQotICBuaWNlX2Jhci5UaGlzKCk7Ci0gIG5pY2VfYmFyLlRoYXQoNSwgdHJ1ZSk7
Ci19Ci0KLSNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LS8vIFRlc3RzIHRoYXQgTmljZU1vY2s8TW9jaz4gY29tcGlsZXMgd2hlcmUgTW9jayBpcyBhIHVz
ZXItZGVmaW5lZAotLy8gY2xhc3MgKGFzIG9wcG9zZWQgdG8gOjp0ZXN0aW5nOjpNb2NrKS4gIFdl
IGhhZCB0byB3b3JrIGFyb3VuZCBhbgotLy8gTVNWQyA4LjAgYnVnIHRoYXQgY2F1c2VkIHRoZSBz
eW1ib2wgTW9jayB1c2VkIGluIHRoZSBkZWZpbml0aW9uIG9mCi0vLyBOaWNlTW9jayB0byBiZSBs
b29rZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QKLS8vIGVuc3VyZXMg
dGhhdCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0aGlzIHRlc3Qgb24g
U3ltYmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMgdGhlIHByb2dyYW0g
dG8gY3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0LgotVEVTVChOaWNl
TW9ja1Rlc3QsIEFjY2VwdHNDbGFzc05hbWVkTW9jaykgewotICBOaWNlTW9jazwgOjpNb2NrPiBu
aWNlOwotICBFWFBFQ1RfQ0FMTChuaWNlLCBEb1RoaXMoKSk7Ci0gIG5pY2UuRG9UaGlzKCk7Ci19
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklM
RQotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBUZXN0cyB0aGF0IGEg
bmFnZ3kgbW9jayBnZW5lcmF0ZXMgd2FybmluZ3MgZm9yIHVuaW50ZXJlc3RpbmcgY2FsbHMuCi1U
RVNUKE5hZ2d5TW9ja1Rlc3QsIFdhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbCkgewotICBjb25z
dCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKLSAgR01PQ0tf
RkxBRyh2ZXJib3NlKSA9ICJ3YXJuaW5nIjsKLQotICBOYWdneU1vY2s8TW9ja0Zvbz4gbmFnZ3lf
Zm9vOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgbmFnZ3lfZm9vLkRvVGhpcygpOwotICBuYWdn
eV9mb28uRG9UaGF0KHRydWUpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAot
ICAgICAgICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxs
IikpOwotCi0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0vLyBUZXN0
cyB0aGF0IGEgbmFnZ3kgbW9jayBnZW5lcmF0ZXMgYSB3YXJuaW5nIGZvciBhbiB1bmludGVyZXN0
aW5nIGNhbGwKLS8vIHRoYXQgZGVsZXRlcyB0aGUgbW9jayBvYmplY3QuCi1URVNUKE5hZ2d5TW9j
a1Rlc3QsIFdhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbEFmdGVyRGVhdGgpIHsKLSAgY29uc3Qg
c3RkOjpzdHJpbmcgc2F2ZWRfZmxhZyA9IEdNT0NLX0ZMQUcodmVyYm9zZSk7Ci0gIEdNT0NLX0ZM
QUcodmVyYm9zZSkgPSAid2FybmluZyI7Ci0KLSAgTmFnZ3lNb2NrPE1vY2tGb28+KiBjb25zdCBu
YWdneV9mb28gPSBuZXcgTmFnZ3lNb2NrPE1vY2tGb28+OwotCi0gIE9OX0NBTEwoKm5hZ2d5X2Zv
bywgRG9UaGlzKCkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UobmFnZ3lfZm9vLCAmTW9j
a0Zvbzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBuYWdneV9mb28tPkRvVGhp
cygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICAgICAgICBI
YXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikpOwotCi0gIEdNT0NL
X0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KLQotLy8gVGVzdHMgdGhhdCBhIG5hZ2d5IG1vY2sgYWxsb3dzIGV4
cGVjdGVkIGNhbGxzLgotVEVTVChOYWdneU1vY2tUZXN0LCBBbGxvd3NFeHBlY3RlZENhbGwpIHsK
LSAgTmFnZ3lNb2NrPE1vY2tGb28+IG5hZ2d5X2ZvbzsKLQotICBFWFBFQ1RfQ0FMTChuYWdneV9m
b28sIERvVGhpcygpKTsKLSAgbmFnZ3lfZm9vLkRvVGhpcygpOwotfQotCi0vLyBUZXN0cyB0aGF0
IGFuIHVuZXhwZWN0ZWQgY2FsbCBvbiBhIG5hZ2d5IG1vY2sgZmFpbHMuCi1URVNUKE5hZ2d5TW9j
a1Rlc3QsIFVuZXhwZWN0ZWRDYWxsRmFpbHMpIHsKLSAgTmFnZ3lNb2NrPE1vY2tGb28+IG5hZ2d5
X2ZvbzsKLQotICBFWFBFQ1RfQ0FMTChuYWdneV9mb28sIERvVGhpcygpKS5UaW1lcygwKTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUobmFnZ3lfZm9vLkRvVGhpcygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IE5hZ2d5TW9jayB3b3JrcyB3aXRoIGEgbW9jayBjbGFzcyB0aGF0IGhhcyBh
IG5vbi1kZWZhdWx0Ci0vLyBjb25zdHJ1Y3Rvci4KLVRFU1QoTmFnZ3lNb2NrVGVzdCwgTm9uRGVm
YXVsdENvbnN0cnVjdG9yKSB7Ci0gIE5hZ2d5TW9jazxNb2NrQmFyPiBuYWdneV9iYXIoImhpIik7
Ci0gIEVYUEVDVF9FUSgiaGkiLCBuYWdneV9iYXIuc3RyKCkpOwotCi0gIG5hZ2d5X2Jhci5UaGlz
KCk7Ci0gIG5hZ2d5X2Jhci5UaGF0KDUsIHRydWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5hZ2d5
TW9jayB3b3JrcyB3aXRoIGEgbW9jayBjbGFzcyB0aGF0IGhhcyBhIDEwLWFyeQotLy8gbm9uLWRl
ZmF1bHQgY29uc3RydWN0b3IuCi1URVNUKE5hZ2d5TW9ja1Rlc3QsIE5vbkRlZmF1bHRDb25zdHJ1
Y3RvcjEwKSB7Ci0gIE5hZ2d5TW9jazxNb2NrQmFyPiBuYWdneV9iYXIoJzAnLCAnMScsICIyIiwg
IjMiLCAnNCcsICc1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNiIsICI3Iiwg
dHJ1ZSwgZmFsc2UpOwotICBFWFBFQ1RfRVEoIjAxMjM0NTY3VEYiLCBuYWdneV9iYXIuc3RyKCkp
OwotCi0gIG5hZ2d5X2Jhci5UaGlzKCk7Ci0gIG5hZ2d5X2Jhci5UaGF0KDUsIHRydWUpOwotfQot
Ci0jaWYgIUdURVNUX09TX1NZTUJJQU4gJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBU
ZXN0cyB0aGF0IE5hZ2d5TW9jazxNb2NrPiBjb21waWxlcyB3aGVyZSBNb2NrIGlzIGEgdXNlci1k
ZWZpbmVkCi0vLyBjbGFzcyAoYXMgb3Bwb3NlZCB0byA6OnRlc3Rpbmc6Ok1vY2spLiAgV2UgaGFk
IHRvIHdvcmsgYXJvdW5kIGFuCi0vLyBNU1ZDIDguMCBidWcgdGhhdCBjYXVzZWQgdGhlIHN5bWJv
bCBNb2NrIHVzZWQgaW4gdGhlIGRlZmluaXRpb24gb2YKLS8vIE5hZ2d5TW9jayB0byBiZSBsb29r
ZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QKLS8vIGVuc3VyZXMgdGhh
dCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0aGlzIHRlc3Qgb24gU3lt
YmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMgdGhlIHByb2dyYW0gdG8g
Y3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0LgotVEVTVChOYWdneU1v
Y2tUZXN0LCBBY2NlcHRzQ2xhc3NOYW1lZE1vY2spIHsKLSAgTmFnZ3lNb2NrPCA6Ok1vY2s+IG5h
Z2d5OwotICBFWFBFQ1RfQ0FMTChuYWdneSwgRG9UaGlzKCkpOwotICBuYWdneS5Eb1RoaXMoKTsK
LX0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4gJiYgIUdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi0KLS8vIFRlc3RzIHRoYXQgYSBzdHJpY3QgbW9jayBhbGxvd3MgZXhwZWN0ZWQgY2FsbHMu
Ci1URVNUKFN0cmljdE1vY2tUZXN0LCBBbGxvd3NFeHBlY3RlZENhbGwpIHsKLSAgU3RyaWN0TW9j
azxNb2NrRm9vPiBzdHJpY3RfZm9vOwotCi0gIEVYUEVDVF9DQUxMKHN0cmljdF9mb28sIERvVGhp
cygpKTsKLSAgc3RyaWN0X2Zvby5Eb1RoaXMoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbiB1bmV4
cGVjdGVkIGNhbGwgb24gYSBzdHJpY3QgbW9jayBmYWlscy4KLVRFU1QoU3RyaWN0TW9ja1Rlc3Qs
IFVuZXhwZWN0ZWRDYWxsRmFpbHMpIHsKLSAgU3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9v
OwotCi0gIEVYUEVDVF9DQUxMKHN0cmljdF9mb28sIERvVGhpcygpKS5UaW1lcygwKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Zvby5Eb1RoaXMoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgImNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQiKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBhbiB1bmludGVyZXN0aW5nIGNhbGwgb24gYSBzdHJpY3QgbW9jayBmYWlscy4K
LVRFU1QoU3RyaWN0TW9ja1Rlc3QsIFVuaW50ZXJlc3RpbmdDYWxsRmFpbHMpIHsKLSAgU3RyaWN0
TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0
cmljdF9mb28uRG9UaGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmludGVyZXN0
aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFuIHVuaW50ZXJl
c3RpbmcgY2FsbCBvbiBhIHN0cmljdCBtb2NrIGZhaWxzLCBldmVuIGlmCi0vLyB0aGUgY2FsbCBk
ZWxldGVzIHRoZSBtb2NrIG9iamVjdC4KLVRFU1QoU3RyaWN0TW9ja1Rlc3QsIFVuaW50ZXJlc3Rp
bmdDYWxsRmFpbHNBZnRlckRlYXRoKSB7Ci0gIFN0cmljdE1vY2s8TW9ja0Zvbz4qIGNvbnN0IHN0
cmljdF9mb28gPSBuZXcgU3RyaWN0TW9jazxNb2NrRm9vPjsKLQotICBPTl9DQUxMKCpzdHJpY3Rf
Zm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZShzdHJpY3RfZm9vLCAm
TW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Zv
by0+RG9UaGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmludGVyZXN0aW5nIG1v
Y2sgZnVuY3Rpb24gY2FsbCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IFN0cmljdE1vY2sgd29ya3Mg
d2l0aCBhIG1vY2sgY2xhc3MgdGhhdCBoYXMgYQotLy8gbm9uLWRlZmF1bHQgY29uc3RydWN0b3Iu
Ci1URVNUKFN0cmljdE1vY2tUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgU3RyaWN0
TW9jazxNb2NrQmFyPiBzdHJpY3RfYmFyKCJoaSIpOwotICBFWFBFQ1RfRVEoImhpIiwgc3RyaWN0
X2Jhci5zdHIoKSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Jhci5UaGF0
KDUsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2Nr
IGZ1bmN0aW9uIGNhbGwiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTdHJpY3RNb2NrIHdvcmtzIHdp
dGggYSBtb2NrIGNsYXNzIHRoYXQgaGFzIGEgMTAtYXJ5Ci0vLyBub24tZGVmYXVsdCBjb25zdHJ1
Y3Rvci4KLVRFU1QoU3RyaWN0TW9ja1Rlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RvcjEwKSB7Ci0g
IFN0cmljdE1vY2s8TW9ja0Jhcj4gc3RyaWN0X2JhcignYScsICdiJywgImMiLCAiZCIsICdlJywg
J2YnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImciLCAiaCIsIHRydWUsIGZh
bHNlKTsKLSAgRVhQRUNUX0VRKCJhYmNkZWZnaFRGIiwgc3RyaWN0X2Jhci5zdHIoKSk7Ci0KLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Jhci5UaGF0KDUsIHRydWUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsK
LX0KLQotI2lmICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ly8gVGVzdHMgdGhhdCBTdHJpY3RNb2NrPE1vY2s+IGNvbXBpbGVzIHdoZXJlIE1vY2sgaXMgYSB1
c2VyLWRlZmluZWQKLS8vIGNsYXNzIChhcyBvcHBvc2VkIHRvIDo6dGVzdGluZzo6TW9jaykuICBX
ZSBoYWQgdG8gd29yayBhcm91bmQgYW4KLS8vIE1TVkMgOC4wIGJ1ZyB0aGF0IGNhdXNlZCB0aGUg
c3ltYm9sIE1vY2sgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZgotLy8gU3RyaWN0TW9jayB0byBi
ZSBsb29rZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QKLS8vIGVuc3Vy
ZXMgdGhhdCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0aGlzIHRlc3Qg
b24gU3ltYmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMgdGhlIHByb2dy
YW0gdG8gY3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0LgotVEVTVChT
dHJpY3RNb2NrVGVzdCwgQWNjZXB0c0NsYXNzTmFtZWRNb2NrKSB7Ci0gIFN0cmljdE1vY2s8IDo6
TW9jaz4gc3RyaWN0OwotICBFWFBFQ1RfQ0FMTChzdHJpY3QsIERvVGhpcygpKTsKLSAgc3RyaWN0
LkRvVGhpcygpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTiAmJiAhR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKLQotfSAgLy8gbmFtZXNwYWNlIGdtb2NrX25pY2Vfc3RyaWN0X3Rlc3QK
LX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stcG9ydF90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmE4ZDQ0NDY2YjIwMTJiODM2YWZlMmRiZGJm
YWE2NmRlYTgxZWJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stcG9ydF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8gR29v
Z2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8K
LS8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgaW50ZXJuYWwgY3Jvc3MtcGxhdGZvcm0gc3VwcG9ydCB1
dGlsaXRpZXMuCi0KLSNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0jaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gTk9URTogaWYgdGhpcyBmaWxlIGlzIGxlZnQgd2l0
aG91dCB0ZXN0cyBmb3Igc29tZSByZWFzb24sIHB1dCBhIGR1bW15Ci0vLyB0ZXN0IGhlcmUgdG8g
bWFrZSByZWZlcmVuY2VzIHRvIHN5bWJvbHMgaW4gdGhlIGd0ZXN0IGxpYnJhcnkgYW5kIGF2b2lk
Ci0vLyAndW5kZWZpbmVkIHN5bWJvbCcgbGlua2VyIGVycm9ycyBpbiBnbW9ja19tYWluOgotCi1U
RVNUKER1bW15VGVzdCwgRHVtbXkpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stc3BlYy1i
dWlsZGVyc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODllMDcwOTg0
M2UwY2IxODNlYWIxYmFiNzhkMGU0ZTU1MjQ2NmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stc3BlYy1idWlsZGVy
c190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMjY0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3
cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBzcGVj
IGJ1aWxkZXIgc3ludGF4LgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5o
IgotCi0jaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHNzdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJn
bW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNp
bmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0K
LS8vIEhlbHBlciBjbGFzcyBmb3IgdGVzdGluZyB0aGUgRXhwZWN0YXRpb24gY2xhc3MgdGVtcGxh
dGUuCi1jbGFzcyBFeHBlY3RhdGlvblRlc3RlciB7Ci0gcHVibGljOgotICAvLyBTZXRzIHRoZSBj
YWxsIGNvdW50IG9mIHRoZSBnaXZlbiBleHBlY3RhdGlvbiB0byB0aGUgZ2l2ZW4gbnVtYmVyLgot
ICB2b2lkIFNldENhbGxDb3VudChpbnQgbiwgRXhwZWN0YXRpb25CYXNlKiBleHApIHsKLSAgICBl
eHAtPmNhbGxfY291bnRfID0gbjsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Ci19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1uYW1lc3BhY2UgewotCi11c2luZyB0ZXN0aW5n
OjpfOwotdXNpbmcgdGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgdGVzdGluZzo6QXRMZWFzdDsK
LXVzaW5nIHRlc3Rpbmc6OkF0TW9zdDsKLXVzaW5nIHRlc3Rpbmc6OkJldHdlZW47Ci11c2luZyB0
ZXN0aW5nOjpDYXJkaW5hbGl0eTsKLXVzaW5nIHRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNl
OwotdXNpbmcgdGVzdGluZzo6Q29udGFpbnNSZWdleDsKLXVzaW5nIHRlc3Rpbmc6OkNvbnN0Owot
dXNpbmcgdGVzdGluZzo6RG9BbGw7Ci11c2luZyB0ZXN0aW5nOjpEb0RlZmF1bHQ7Ci11c2luZyB0
ZXN0aW5nOjpFcTsKLXVzaW5nIHRlc3Rpbmc6OkV4cGVjdGF0aW9uOwotdXNpbmcgdGVzdGluZzo6
RXhwZWN0YXRpb25TZXQ7Ci11c2luZyB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpOwotdXNp
bmcgdGVzdGluZzo6R3Q7Ci11c2luZyB0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcgdGVzdGlu
Zzo6SW52b2tlOwotdXNpbmcgdGVzdGluZzo6SW52b2tlV2l0aG91dEFyZ3M7Ci11c2luZyB0ZXN0
aW5nOjpJc05vdFN1YnN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OklzU3Vic3RyaW5nOwotdXNpbmcg
dGVzdGluZzo6THQ7Ci11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6TW9j
azsKLXVzaW5nIHRlc3Rpbmc6Ok5hZ2d5TW9jazsKLXVzaW5nIHRlc3Rpbmc6Ok5lOwotdXNpbmcg
dGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGluZzo6U2VxdWVuY2U7Ci11c2luZyB0ZXN0aW5n
OjpTZXRBcmdQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkV4cGVjdGF0aW9uVGVz
dGVyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZpbGVMb2NhdGlvbjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjprRXJyb3JWZXJib3NpdHk7Ci11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6a0luZm9WZXJib3NpdHk7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a1dhcm5pbmdW
ZXJib3NpdHk7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLQotI2lmIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLXVzaW5nIHRlc3Rpbmc6Okhhc1N1YnN0cjsKLXVz
aW5nIHRlc3Rpbmc6OmludGVybmFsOjpDYXB0dXJlU3Rkb3V0OwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldENhcHR1cmVkU3Rkb3V0OwotI2VuZGlmCi0KLWNsYXNzIEluY29tcGxldGU7Ci0K
LWNsYXNzIE1vY2tJbmNvbXBsZXRlIHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMgbGluZSB2ZXJpZmll
cyB0aGF0IGEgbW9jayBtZXRob2QgY2FuIHRha2UgYSBieS1yZWZlcmVuY2UKLSAgLy8gYXJndW1l
bnQgb2YgYW4gaW5jb21wbGV0ZSB0eXBlLgotICBNT0NLX01FVEhPRDEoQnlSZWZGdW5jLCB2b2lk
KGNvbnN0IEluY29tcGxldGUmIHgpKTsKLX07Ci0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIGhvdyB0
byBwcmludCBhIHZhbHVlIG9mIHR5cGUgSW5jb21wbGV0ZS4KLXZvaWQgUHJpbnRUbyhjb25zdCBJ
bmNvbXBsZXRlJiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotCi1URVNUKE1vY2tNZXRob2RUZXN0
LCBDYW5JbnN0YW50aWF0ZVdpdGhJbmNvbXBsZXRlQXJnVHlwZSkgewotICAvLyBFdmVuIHRob3Vn
aCB0aGlzIG1vY2sgY2xhc3MgY29udGFpbnMgYSBtb2NrIG1ldGhvZCB0aGF0IHRha2VzCi0gIC8v
IGJ5LXJlZmVyZW5jZSBhbiBhcmd1bWVudCB3aG9zZSB0eXBlIGlzIGluY29tcGxldGUsIHdlIGNh
biBzdGlsbAotICAvLyB1c2UgdGhlIG1vY2ssIGFzIGxvbmcgYXMgR29vZ2xlIE1vY2sga25vd3Mg
aG93IHRvIHByaW50IHRoZQotICAvLyBhcmd1bWVudC4KLSAgTW9ja0luY29tcGxldGUgaW5jb21w
bGV0ZTsKLSAgRVhQRUNUX0NBTEwoaW5jb21wbGV0ZSwgQnlSZWZGdW5jKF8pKQotICAgICAgLlRp
bWVzKEFueU51bWJlcigpKTsKLX0KLQotLy8gVGhlIGRlZmluaXRpb24gb2YgdGhlIHByaW50ZXIg
Zm9yIHRoZSBhcmd1bWVudCB0eXBlIGRvZXNuJ3QgaGF2ZSB0bwotLy8gYmUgdmlzaWJsZSB3aGVy
ZSB0aGUgbW9jayBpcyB1c2VkLgotdm9pZCBQcmludFRvKGNvbnN0IEluY29tcGxldGUmIC8qIHgg
Ki8sIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgImluY29tcGxldGUiOwotfQotCi1j
bGFzcyBSZXN1bHQge307Ci0KLS8vIEEgdHlwZSB0aGF0J3Mgbm90IGRlZmF1bHQgY29uc3RydWN0
aWJsZS4KLWNsYXNzIE5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IE5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKGludCAvKiBkdW1teSAqLykge30KLX07Ci0KLWNs
YXNzIE1vY2tBIHsKLSBwdWJsaWM6Ci0gIE1vY2tBKCkge30KLQotICBNT0NLX01FVEhPRDEoRG9B
LCB2b2lkKGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMShSZXR1cm5SZXN1bHQsIFJlc3VsdChpbnQg
bikpOwotICBNT0NLX01FVEhPRDAoUmV0dXJuTm9uRGVmYXVsdENvbnN0cnVjdGlibGUsIE5vbkRl
ZmF1bHRDb25zdHJ1Y3RpYmxlKCkpOwotICBNT0NLX01FVEhPRDIoQmluYXJ5LCBib29sKGludCB4
LCBpbnQgeSkpOwotICBNT0NLX01FVEhPRDIoUmV0dXJuSW50LCBpbnQoaW50IHgsIGludCB5KSk7
Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tBKTsK
LX07Ci0KLWNsYXNzIE1vY2tCIHsKLSBwdWJsaWM6Ci0gIE1vY2tCKCkge30KLQotICBNT0NLX0NP
TlNUX01FVEhPRDAoRG9CLCBpbnQoKSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QxKERvQiwg
aW50KGludCBuKSk7ICAvLyBOT0xJTlQKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oTW9ja0IpOwotfTsKLQotY2xhc3MgUmVmZXJlbmNlSG9sZGluZ01vY2sg
ewotIHB1YmxpYzoKLSAgUmVmZXJlbmNlSG9sZGluZ01vY2soKSB7fQotCi0gIE1PQ0tfTUVUSE9E
MShBY2NlcHRSZWZlcmVuY2UsIHZvaWQobGlua2VkX3B0cjxNb2NrQT4qKSk7Ci0KLSBwcml2YXRl
OgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFJlZmVyZW5jZUhvbGRpbmdNb2Nr
KTsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0NBTEwgYW5kIE9OX0NBTEwgY29tcGlsZSBp
biBhIHByZXNlbmNlIG9mIG1hY3JvCi0vLyByZWRlZmluaW5nIGEgbW9jayBtZXRob2QgbmFtZS4g
VGhpcyBjb3VsZCBoYXBwZW4sIGZvciBleGFtcGxlLCB3aGVuCi0vLyB0aGUgdGVzdGVkIGNvZGUg
I2luY2x1ZGVzIFdpbjMyIEFQSSBoZWFkZXJzIHdoaWNoIGRlZmluZSBtYW55IEFQSXMKLS8vIGFz
IG1hY3JvcywgZS5nLiAjZGVmaW5lIFRleHRPdXQgVGV4dE91dFcuCi0KLSNkZWZpbmUgTWV0aG9k
IE1ldGhvZFcKLQotY2xhc3MgQ0MgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Q0MoKSB7fQotICB2
aXJ0dWFsIGludCBNZXRob2QoKSA9IDA7Ci19OwotY2xhc3MgTW9ja0NDIDogcHVibGljIENDIHsK
LSBwdWJsaWM6Ci0gIE1vY2tDQygpIHt9Ci0KLSAgTU9DS19NRVRIT0QwKE1ldGhvZCwgaW50KCkp
OwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrQ0Mp
OwotfTsKLQotLy8gVGVzdHMgdGhhdCBhIG1ldGhvZCB3aXRoIGV4cGFuZGVkIG5hbWUgY29tcGls
ZXMuCi1URVNUKE9uQ2FsbFN5bnRheFRlc3QsIENvbXBpbGVzV2l0aE1ldGhvZE5hbWVFeHBhbmRl
ZEZyb21NYWNybykgewotICBNb2NrQ0MgY2M7Ci0gIE9OX0NBTEwoY2MsIE1ldGhvZCgpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCB0aGUgbWV0aG9kIHdpdGggZXhwYW5kZWQgbmFtZSBub3Qgb25seSBj
b21waWxlcyBidXQgcnVucwotLy8gYW5kIHJldHVybnMgYSBjb3JyZWN0IHZhbHVlLCB0b28uCi1U
RVNUKE9uQ2FsbFN5bnRheFRlc3QsIFdvcmtzV2l0aE1ldGhvZE5hbWVFeHBhbmRlZEZyb21NYWNy
bykgewotICBNb2NrQ0MgY2M7Ci0gIE9OX0NBTEwoY2MsIE1ldGhvZCgpKS5XaWxsQnlEZWZhdWx0
KFJldHVybig0MikpOwotICBFWFBFQ1RfRVEoNDIsIGNjLk1ldGhvZCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBhIG1ldGhvZCB3aXRoIGV4cGFuZGVkIG5hbWUgY29tcGlsZXMuCi1URVNUKEV4cGVj
dENhbGxTeW50YXhUZXN0LCBDb21waWxlc1dpdGhNZXRob2ROYW1lRXhwYW5kZWRGcm9tTWFjcm8p
IHsKLSAgTW9ja0NDIGNjOwotICBFWFBFQ1RfQ0FMTChjYywgTWV0aG9kKCkpOwotICBjYy5NZXRo
b2QoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBpdCB3b3JrcywgdG9vLgotVEVTVChFeHBlY3RDYWxs
U3ludGF4VGVzdCwgV29ya3NXaXRoTWV0aG9kTmFtZUV4cGFuZGVkRnJvbU1hY3JvKSB7Ci0gIE1v
Y2tDQyBjYzsKLSAgRVhQRUNUX0NBTEwoY2MsIE1ldGhvZCgpKS5XaWxsT25jZShSZXR1cm4oNDIp
KTsKLSAgRVhQRUNUX0VRKDQyLCBjYy5NZXRob2QoKSk7Ci19Ci0KLSN1bmRlZiBNZXRob2QgIC8v
IERvbmUgd2l0aCBtYWNybyByZWRlZmluaXRpb24gdGVzdHMuCi0KLS8vIFRlc3RzIHRoYXQgT05f
Q0FMTCBldmFsdWF0ZXMgaXRzIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UgYXMgcHJvbWlzZWQKLS8v
IGJ5IEdvb2dsZSBNb2NrLgotVEVTVChPbkNhbGxTeW50YXhUZXN0LCBFdmFsdWF0ZXNGaXJzdEFy
Z3VtZW50T25jZSkgewotICBNb2NrQSBhOwotICBNb2NrQSogcGEgPSAmYTsKLQotICBPTl9DQUxM
KCpwYSsrLCBEb0EoXykpOwotICBFWFBFQ1RfRVEoJmEgKyAxLCBwYSk7Ci19Ci0KLVRFU1QoT25D
YWxsU3ludGF4VGVzdCwgRXZhbHVhdGVzU2Vjb25kQXJndW1lbnRPbmNlKSB7Ci0gIE1vY2tBIGE7
Ci0gIGludCBuID0gMDsKLQotICBPTl9DQUxMKGEsIERvQShuKyspKTsKLSAgRVhQRUNUX0VRKDEs
IG4pOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBzeW50YXggb2YgT05fQ0FMTCgpIGlzIGVuZm9y
Y2VkIGF0IHJ1biB0aW1lLgotCi1URVNUKE9uQ2FsbFN5bnRheFRlc3QsIFdpdGhJc09wdGlvbmFs
KSB7Ci0gIE1vY2tBIGE7Ci0KLSAgT05fQ0FMTChhLCBEb0EoNSkpCi0gICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwoYSwgRG9BKF8pKQotICAgICAgLldpdGgoXykKLSAg
ICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotVEVTVChPbkNhbGxTeW50YXhUZXN0
LCBXaXRoQ2FuQXBwZWFyQXRNb3N0T25jZSkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIE9OX0NBTEwoYSwgUmV0dXJuUmVzdWx0KF8p
KQotICAgICAgICAuV2l0aChfKQotICAgICAgICAuV2l0aChfKQotICAgICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oUmVzdWx0KCkpKTsKLSAgfSwgIi5XaXRoKCkgY2Fubm90IGFwcGVhciBtb3Jl
IHRoYW4gb25jZSBpbiBhbiBPTl9DQUxMKCkiKTsKLX0KLQotVEVTVChPbkNhbGxTeW50YXhUZXN0
LCBXaWxsQnlEZWZhdWx0SXNNYW5kYXRvcnkpIHsKLSAgTW9ja0EgYTsKLQotICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKHsKLSAgICBPTl9DQUxMKGEsIERvQSg1KSk7Ci0gICAgYS5Eb0EoNSk7
Ci0gIH0sICIiKTsKLX0KLQotVEVTVChPbkNhbGxTeW50YXhUZXN0LCBXaWxsQnlEZWZhdWx0Q2Fu
QXBwZWFyQXRNb3N0T25jZSkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIE9OX0NBTEwoYSwgRG9BKDUpKQotICAgICAgICAuV2lsbEJ5
RGVmYXVsdChSZXR1cm4oKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICB9
LCAiLldpbGxCeURlZmF1bHQoKSBtdXN0IGFwcGVhciBleGFjdGx5IG9uY2UgaW4gYW4gT05fQ0FM
TCgpIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0NBTEwgZXZhbHVhdGVzIGl0cyBhcmd1
bWVudHMgZXhhY3RseSBvbmNlIGFzCi0vLyBwcm9taXNlZCBieSBHb29nbGUgTW9jay4KLVRFU1Qo
RXhwZWN0Q2FsbFN5bnRheFRlc3QsIEV2YWx1YXRlc0ZpcnN0QXJndW1lbnRPbmNlKSB7Ci0gIE1v
Y2tBIGE7Ci0gIE1vY2tBKiBwYSA9ICZhOwotCi0gIEVYUEVDVF9DQUxMKCpwYSsrLCBEb0EoXykp
OwotICBhLkRvQSgwKTsKLSAgRVhQRUNUX0VRKCZhICsgMSwgcGEpOwotfQotCi1URVNUKEV4cGVj
dENhbGxTeW50YXhUZXN0LCBFdmFsdWF0ZXNTZWNvbmRBcmd1bWVudE9uY2UpIHsKLSAgTW9ja0Eg
YTsKLSAgaW50IG4gPSAwOwotCi0gIEVYUEVDVF9DQUxMKGEsIERvQShuKyspKTsKLSAgYS5Eb0Eo
MCk7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgc3ludGF4IG9m
IEVYUEVDVF9DQUxMKCkgaXMgZW5mb3JjZWQgYXQgcnVuIHRpbWUuCi0KLVRFU1QoRXhwZWN0Q2Fs
bFN5bnRheFRlc3QsIFdpdGhJc09wdGlvbmFsKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNUX0NB
TEwoYSwgRG9BKDUpKQotICAgICAgLlRpbWVzKDApOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoNikp
Ci0gICAgICAuV2l0aChfKQotICAgICAgLlRpbWVzKDApOwotfQotCi1URVNUKEV4cGVjdENhbGxT
eW50YXhUZXN0LCBXaXRoQ2FuQXBwZWFyQXRNb3N0T25jZSkgewotICBNb2NrQSBhOwotCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERv
QSg2KSkKLSAgICAgICAgLldpdGgoXykKLSAgICAgICAgLldpdGgoXyk7Ci0gIH0sICIuV2l0aCgp
IGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKSIpOwotCi0g
IGEuRG9BKDYpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBXaXRoTXVzdEJlRmly
c3RDbGF1c2UpIHsKLSAgTW9ja0EgYTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAgIC5UaW1lcygxKQot
ICAgICAgICAuV2l0aChfKTsKLSAgfSwgIi5XaXRoKCkgbXVzdCBiZSB0aGUgZmlyc3QgY2xhdXNl
IGluIGFuIEVYUEVDVF9DQUxMKCkiKTsKLQotICBhLkRvQSgxKTsKLQotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAg
ICAgIC5XaWxsT25jZShSZXR1cm4oKSkKLSAgICAgICAgLldpdGgoXyk7Ci0gIH0sICIuV2l0aCgp
IG11c3QgYmUgdGhlIGZpcnN0IGNsYXVzZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpIik7Ci0KLSAgYS5E
b0EoMik7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFRpbWVzQ2FuQmVJbmZlcnJl
ZCkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgIC5XaWxs
T25jZShSZXR1cm4oKSk7Ci0KLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDIpKQotICAgICAgLldpbGxP
bmNlKFJldHVybigpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigpKTsKLQotICBhLkRv
QSgxKTsKLSAgYS5Eb0EoMik7Ci0gIGEuRG9BKDIpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50
YXhUZXN0LCBUaW1lc0NhbkFwcGVhckF0TW9zdE9uY2UpIHsKLSAgTW9ja0EgYTsKLQotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0Eo
MSkpCi0gICAgICAgIC5UaW1lcygxKQotICAgICAgICAuVGltZXMoMik7Ci0gIH0sICIuVGltZXMo
KSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuIEVYUEVDVF9DQUxMKCkiKTsKLQot
ICBhLkRvQSgxKTsKLSAgYS5Eb0EoMSk7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3Qs
IFRpbWVzTXVzdEJlQmVmb3JlSW5TZXF1ZW5jZSkgewotICBNb2NrQSBhOwotICBTZXF1ZW5jZSBz
OwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9D
QUxMKGEsIERvQSgxKSkKLSAgICAgICAgLkluU2VxdWVuY2UocykKLSAgICAgICAgLlRpbWVzKDEp
OwotICB9LCAiLlRpbWVzKCkgY2Fubm90IGFwcGVhciBhZnRlciAiKTsKLQotICBhLkRvQSgxKTsK
LX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgSW5TZXF1ZW5jZUlzT3B0aW9uYWwpIHsK
LSAgTW9ja0EgYTsKLSAgU2VxdWVuY2UgczsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwot
ICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAgICAuSW5TZXF1ZW5jZShzKTsKLQotICBhLkRv
QSgxKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIEluU2Vx
dWVuY2VDYW5BcHBlYXJNdWx0aXBsZVRpbWVzKSB7Ci0gIE1vY2tBIGE7Ci0gIFNlcXVlbmNlIHMx
LCBzMjsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwg
czIpCi0gICAgICAuSW5TZXF1ZW5jZShzMSk7Ci0KLSAgYS5Eb0EoMSk7Ci19Ci0KLVRFU1QoRXhw
ZWN0Q2FsbFN5bnRheFRlc3QsIEluU2VxdWVuY2VNdXN0QmVCZWZvcmVBZnRlcikgewotICBNb2Nr
QSBhOwotICBTZXF1ZW5jZSBzOwotCi0gIEV4cGVjdGF0aW9uIGUgPSBFWFBFQ1RfQ0FMTChhLCBE
b0EoMSkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAgICAgIC5B
ZnRlcihlKQotICAgICAgICAuSW5TZXF1ZW5jZShzKTsKLSAgfSwgIi5JblNlcXVlbmNlKCkgY2Fu
bm90IGFwcGVhciBhZnRlciAiKTsKLQotICBhLkRvQSgyKTsKLX0KLQotVEVTVChFeHBlY3RDYWxs
U3ludGF4VGVzdCwgSW5TZXF1ZW5jZU11c3RCZUJlZm9yZVdpbGxPbmNlKSB7Ci0gIE1vY2tBIGE7
Ci0gIFNlcXVlbmNlIHM7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKCkp
Ci0gICAgICAgIC5JblNlcXVlbmNlKHMpOwotICB9LCAiLkluU2VxdWVuY2UoKSBjYW5ub3QgYXBw
ZWFyIGFmdGVyICIpOwotCi0gIGEuRG9BKDEpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50YXhU
ZXN0LCBBZnRlck11c3RCZUJlZm9yZVdpbGxPbmNlKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRXhwZWN0
YXRpb24gZSA9IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAgICAgIC5XaWxsT25jZShSZXR1
cm4oKSkKLSAgICAgICAgLkFmdGVyKGUpOwotICB9LCAiLkFmdGVyKCkgY2Fubm90IGFwcGVhciBh
ZnRlciAiKTsKLQotICBhLkRvQSgxKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLVRFU1QoRXhwZWN0Q2Fs
bFN5bnRheFRlc3QsIFdpbGxJc09wdGlvbmFsKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNUX0NB
TEwoYSwgRG9BKDEpKTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDIpKQotICAgICAgLldpbGxPbmNl
KFJldHVybigpKTsKLQotICBhLkRvQSgxKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLVRFU1QoRXhwZWN0
Q2FsbFN5bnRheFRlc3QsIFdpbGxDYW5BcHBlYXJNdWx0aXBsZVRpbWVzKSB7Ci0gIE1vY2tBIGE7
Ci0KLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQotICAgICAgLlRpbWVzKEFueU51bWJlcigpKQot
ICAgICAgLldpbGxPbmNlKFJldHVybigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigpKQotICAg
ICAgLldpbGxPbmNlKFJldHVybigpKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwg
V2lsbE11c3RCZUJlZm9yZVdpbGxSZXBlYXRlZGx5KSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEp
KQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpCi0gICAgICAgIC5XaWxsT25jZShS
ZXR1cm4oKSk7Ci0gIH0sICIuV2lsbE9uY2UoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIpOwotCi0g
IGEuRG9BKDEpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBXaWxsUmVwZWF0ZWRs
eUlzT3B0aW9uYWwpIHsKLSAgTW9ja0EgYTsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwot
Ci0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLVRFU1QoRXhwZWN0
Q2FsbFN5bnRheFRlc3QsIFdpbGxSZXBlYXRlZGx5Q2Fubm90QXBwZWFyTXVsdGlwbGVUaW1lcykg
ewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
bigpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwotICB9LCAiLldpbGxSZXBl
YXRlZGx5KCkgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiAiCi0gICAgICJFWFBF
Q1RfQ0FMTCgpIik7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdpbGxSZXBlYXRl
ZGx5TXVzdEJlQmVmb3JlUmV0aXJlc09uU2F0dXJhdGlvbikgewotICBNb2NrQSBhOwotCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERv
QSgxKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKQotICAgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKCkpOwotICB9LCAiLldpbGxSZXBlYXRlZGx5KCkgY2Fubm90IGFwcGVhciBh
ZnRlciAiKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgUmV0aXJlc09uU2F0dXJh
dGlvbklzT3B0aW9uYWwpIHsKLSAgTW9ja0EgYTsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkp
OwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigp
OwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgxKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4
VGVzdCwgUmV0aXJlc09uU2F0dXJhdGlvbkNhbm5vdEFwcGVhck11bHRpcGxlVGltZXMpIHsKLSAg
TW9ja0EgYTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBF
WFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCkKLSAg
ICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgfSwgIi5SZXRpcmVzT25TYXR1cmF0aW9u
KCkgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSIpOwotCi0gIGEuRG9BKDEpOwotfQotCi1U
RVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBEZWZhdWx0Q2FyZGluYWxpdHlJc09uY2UpIHsKLSAg
ewotICAgIE1vY2tBIGE7Ci0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgICBhLkRvQSgx
KTsKLSAgfQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBNb2Nr
QSBhOwotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIH0sICJ0byBiZSBjYWxsZWQgb25j
ZSIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBNb2NrQSBh
OwotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gICAgYS5Eb0EoMSk7Ci0gICAgYS5Eb0Eo
MSk7Ci0gIH0sICJ0byBiZSBjYWxsZWQgb25jZSIpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBNb2NrIGRvZXNuJ3QgcHJpbnQg
YSB3YXJuaW5nIHdoZW4gdGhlIG51bWJlciBvZgotLy8gV2lsbE9uY2UoKSBpcyBhZGVxdWF0ZS4K
LVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIERvZXNOb3RXYXJuT25BZGVxdWF0ZUFjdGlvbkNv
dW50KSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgewotICAgIE1vY2tCIGI7Ci0KLSAgICAvLyBJ
dCdzIGFsd2F5cyBmaW5lIHRvIG9taXQgV2lsbE9uY2UoKSBlbnRpcmVseS4KLSAgICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoKSkKLSAgICAgICAgLlRpbWVzKDApOwotICAgIEVYUEVDVF9DQUxMKGIsIERv
QigxKSkKLSAgICAgICAgLlRpbWVzKEF0TW9zdCgxKSk7Ci0gICAgRVhQRUNUX0NBTEwoYiwgRG9C
KDIpKQotICAgICAgICAuVGltZXMoMSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigx
KSk7Ci0KLSAgICAvLyBJdCdzIGZpbmUgZm9yIHRoZSBudW1iZXIgb2YgV2lsbE9uY2UoKXMgdG8g
ZXF1YWwgdGhlIHVwcGVyIGJvdW5kLgotICAgIEVYUEVDVF9DQUxMKGIsIERvQigzKSkKLSAgICAg
ICAgLlRpbWVzKEJldHdlZW4oMSwgMikpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0g
ICAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOwotCi0gICAgLy8gSXQncyBmaW5lIGZvciB0aGUg
bnVtYmVyIG9mIFdpbGxPbmNlKClzIHRvIGJlIHNtYWxsZXIgdGhhbiB0aGUKLSAgICAvLyB1cHBl
ciBib3VuZCB3aGVuIHRoZXJlIGlzIGEgV2lsbFJlcGVhdGVkbHkoKS4KLSAgICBFWFBFQ1RfQ0FM
TChiLCBEb0IoNCkpCi0gICAgICAgIC5UaW1lcyhBdE1vc3QoMykpCi0gICAgICAgIC5XaWxsT25j
ZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotCi0gICAg
Ly8gU2F0aXNmaWVzIHRoZSBhYm92ZSBleHBlY3RhdGlvbnMuCi0gICAgYi5Eb0IoMik7Ci0gICAg
Yi5Eb0IoMyk7Ci0gIH0KLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNf
c3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBNb2NrIHdhcm5zIG9uIGhhdmluZyB0
b28gbWFueSBhY3Rpb25zIGluIGFuCi0vLyBleHBlY3RhdGlvbiBjb21wYXJlZCB0byBpdHMgY2Fy
ZGluYWxpdHkuCi1URVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBXYXJuc09uVG9vTWFueUFjdGlv
bnMpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICB7Ci0gICAgTW9ja0IgYjsKLQotICAgIC8vIFdh
cm5zIHdoZW4gdGhlIG51bWJlciBvZiBXaWxsT25jZSgpcyBpcyBsYXJnZXIgdGhhbiB0aGUgdXBw
ZXIgYm91bmQuCi0gICAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAgIC5UaW1lcygwKQot
ICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsgIC8vICMxCi0gICAgRVhQRUNUX0NBTEwoYiwg
RG9CKCkpCi0gICAgICAgIC5UaW1lcyhBdE1vc3QoMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1
cm4oMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOyAgLy8gIzIKLSAgICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoMSkpCi0gICAgICAgIC5UaW1lcygxKQotICAgICAgICAuV2lsbE9uY2UoUmV0
dXJuKDEpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgICAgICAuUmV0aXJlc09u
U2F0dXJhdGlvbigpOyAgLy8gIzMKLQotICAgIC8vIFdhcm5zIHdoZW4gdGhlIG51bWJlciBvZiBX
aWxsT25jZSgpcyBlcXVhbHMgdGhlIHVwcGVyIGJvdW5kIGFuZAotICAgIC8vIHRoZXJlIGlzIGEg
V2lsbFJlcGVhdGVkbHkoKS4KLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgICAgLlRp
bWVzKDApCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMSkpOyAgLy8gIzQKLSAgICBF
WFBFQ1RfQ0FMTChiLCBEb0IoMikpCi0gICAgICAgIC5UaW1lcygxKQotICAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsgIC8vICM1
Ci0KLSAgICAvLyBTYXRpc2ZpZXMgdGhlIGFib3ZlIGV4cGVjdGF0aW9ucy4KLSAgICBiLkRvQigx
KTsKLSAgICBiLkRvQigyKTsKLSAgfQotICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRD
YXB0dXJlZFN0ZG91dCgpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAotICAgICAgSXNTdWJzdHJp
bmcsCi0gICAgICAiVG9vIG1hbnkgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwg
RG9CKCkpLi4uXG4iCi0gICAgICAiRXhwZWN0ZWQgdG8gYmUgbmV2ZXIgY2FsbGVkLCBidXQgaGFz
IDEgV2lsbE9uY2UoKS4iLAotICAgICAgb3V0cHV0KTsgIC8vICMxCi0gIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoCi0gICAgICBJc1N1YnN0cmluZywKLSAgICAgICJUb28gbWFueSBhY3Rpb25zIHNwZWNp
ZmllZCBpbiBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkuLi5cbiIKLSAgICAgICJFeHBlY3RlZCB0byBi
ZSBjYWxsZWQgYXQgbW9zdCBvbmNlLCAiCi0gICAgICAiYnV0IGhhcyAyIFdpbGxPbmNlKClzLiIs
Ci0gICAgICBvdXRwdXQpOyAgLy8gIzIKLSAgRVhQRUNUX1BSRURfRk9STUFUMigKLSAgICAgIElz
U3Vic3RyaW5nLAotICAgICAgIlRvbyBtYW55IGFjdGlvbnMgc3BlY2lmaWVkIGluIEVYUEVDVF9D
QUxMKGIsIERvQigxKSkuLi5cbiIKLSAgICAgICJFeHBlY3RlZCB0byBiZSBjYWxsZWQgb25jZSwg
YnV0IGhhcyAyIFdpbGxPbmNlKClzLiIsCi0gICAgICBvdXRwdXQpOyAgLy8gIzMKLSAgRVhQRUNU
X1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vic3RyaW5nLAotICAgICAgIlRvbyBtYW55IGFjdGlv
bnMgc3BlY2lmaWVkIGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgotICAgICAgIkV4cGVj
dGVkIHRvIGJlIG5ldmVyIGNhbGxlZCwgYnV0IGhhcyAwIFdpbGxPbmNlKClzICIKLSAgICAgICJh
bmQgYSBXaWxsUmVwZWF0ZWRseSgpLiIsCi0gICAgICBvdXRwdXQpOyAgLy8gIzQKLSAgRVhQRUNU
X1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vic3RyaW5nLAotICAgICAgIlRvbyBtYW55IGFjdGlv
bnMgc3BlY2lmaWVkIGluIEVYUEVDVF9DQUxMKGIsIERvQigyKSkuLi5cbiIKLSAgICAgICJFeHBl
Y3RlZCB0byBiZSBjYWxsZWQgb25jZSwgYnV0IGhhcyAxIFdpbGxPbmNlKCkgIgotICAgICAgImFu
ZCBhIFdpbGxSZXBlYXRlZGx5KCkuIiwKLSAgICAgIG91dHB1dCk7ICAvLyAjNQotfQotCi0vLyBU
ZXN0cyB0aGF0IEdvb2dsZSBNb2NrIHdhcm5zIG9uIGhhdmluZyB0b28gZmV3IGFjdGlvbnMgaW4g
YW4KLS8vIGV4cGVjdGF0aW9uIGNvbXBhcmVkIHRvIGl0cyBjYXJkaW5hbGl0eS4KLVRFU1QoRXhw
ZWN0Q2FsbFN5bnRheFRlc3QsIFdhcm5zT25Ub29GZXdBY3Rpb25zKSB7Ci0gIE1vY2tCIGI7Ci0K
LSAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAuVGltZXMoQmV0d2VlbigyLCAzKSkKLSAg
ICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgYi5Eb0Io
KTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSAg
RVhQRUNUX1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vic3RyaW5nLAotICAgICAgIlRvbyBmZXcg
YWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwgRG9CKCkpLi4uXG4iCi0gICAgICAi
RXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJldHdlZW4gMiBhbmQgMyB0aW1lcywgIgotICAgICAgImJ1
dCBoYXMgb25seSAxIFdpbGxPbmNlKCkuIiwKLSAgICAgIG91dHB1dCk7Ci0gIGIuRG9CKCk7Ci19
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBUZXN0cyB0
aGUgc2VtYW50aWNzIG9mIE9OX0NBTEwoKS4KLQotLy8gVGVzdHMgdGhhdCB0aGUgYnVpbHQtaW4g
ZGVmYXVsdCBhY3Rpb24gaXMgdGFrZW4gd2hlbiBubyBPTl9DQUxMKCkKLS8vIGlzIHNwZWNpZmll
ZC4KLVRFU1QoT25DYWxsVGVzdCwgVGFrZXNCdWlsdEluRGVmYXVsdEFjdGlvbldoZW5Ob09uQ2Fs
bCkgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSk7Ci0KLSAgRVhQRUNUX0VR
KDAsIGIuRG9CKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBidWlsdC1pbiBkZWZhdWx0IGFj
dGlvbiBpcyB0YWtlbiB3aGVuIG5vIE9OX0NBTEwoKQotLy8gbWF0Y2hlcyB0aGUgaW52b2NhdGlv
bi4KLVRFU1QoT25DYWxsVGVzdCwgVGFrZXNCdWlsdEluRGVmYXVsdEFjdGlvbldoZW5Ob09uQ2Fs
bE1hdGNoZXMpIHsKLSAgTW9ja0IgYjsKLSAgT05fQ0FMTChiLCBEb0IoMSkpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoXykpOwotCi0gIEVY
UEVDVF9FUSgwLCBiLkRvQigyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGxhc3QgbWF0Y2hp
bmcgT05fQ0FMTCgpIGFjdGlvbiBpcyB0YWtlbi4KLVRFU1QoT25DYWxsVGVzdCwgUGlja3NMYXN0
TWF0Y2hpbmdPbkNhbGwpIHsKLSAgTW9ja0IgYjsKLSAgT05fQ0FMTChiLCBEb0IoXykpCi0gICAg
ICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMykpOwotICBPTl9DQUxMKGIsIERvQigyKSkKLSAgICAg
IC5XaWxsQnlEZWZhdWx0KFJldHVybigyKSk7Ci0gIE9OX0NBTEwoYiwgRG9CKDEpKQotICAgICAg
LldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKF8pKTsKLQot
ICBFWFBFQ1RfRVEoMiwgYi5Eb0IoMikpOwotfQotCi0vLyBUZXN0cyB0aGUgc2VtYW50aWNzIG9m
IEVYUEVDVF9DQUxMKCkuCi0KLS8vIFRlc3RzIHRoYXQgYW55IGNhbGwgaXMgYWxsb3dlZCB3aGVu
IG5vIEVYUEVDVF9DQUxMKCkgaXMgc3BlY2lmaWVkLgotVEVTVChFeHBlY3RDYWxsVGVzdCwgQWxs
b3dzQW55Q2FsbFdoZW5Ob1NwZWMpIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9C
KCkpOwotICAvLyBUaGVyZSBpcyBubyBleHBlY3RhdGlvbiBvbiBEb0IoaW50KS4KLQotICBiLkRv
QigpOwotCi0gIC8vIERvQihpbnQpIGNhbiBiZSBjYWxsZWQgYW55IG51bWJlciBvZiB0aW1lcy4K
LSAgYi5Eb0IoMSk7Ci0gIGIuRG9CKDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBsYXN0IG1h
dGNoaW5nIEVYUEVDVF9DQUxMKCkgZmlyZXMuCi1URVNUKEV4cGVjdENhbGxUZXN0LCBQaWNrc0xh
c3RNYXRjaGluZ0V4cGVjdENhbGwpIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9C
KF8pKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0gIEVYUEVDVF9DQUxMKGIs
IERvQigxKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMSkpOwotCi0gIEVYUEVDVF9F
USgxLCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIGxvd2VyLWJvdW5kIHZpb2xhdGlvbi4KLVRF
U1QoRXhwZWN0Q2FsbFRlc3QsIENhdGNoZXNUb29GZXdDYWxscykgewotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBNb2NrQiBiOwotICAgIEVYUEVDVF9DQUxMKGIs
IERvQig1KSkKLSAgICAgICAgLlRpbWVzKEF0TGVhc3QoMikpOwotCi0gICAgYi5Eb0IoNSk7Ci0g
IH0sICJBY3R1YWwgZnVuY3Rpb24gY2FsbCBjb3VudCBkb2Vzbid0IG1hdGNoIEVYUEVDVF9DQUxM
KGIsIERvQig1KSkuLi5cbiIKLSAgICAgIiAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQg
YXQgbGVhc3QgdHdpY2VcbiIKLSAgICAgIiAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgb25jZSAt
IHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgY2FyZGlu
YWxpdHkgY2FuIGJlIGluZmVycmVkIHdoZW4gbm8gVGltZXMoLi4uKSBpcwotLy8gc3BlY2lmaWVk
LgotVEVTVChFeHBlY3RDYWxsVGVzdCwgSW5mZXJzQ2FyZGluYWxpdHlXaGVuVGhlcmVJc05vV2ls
bFJlcGVhdGVkbHkpIHsKLSAgewotICAgIE1vY2tCIGI7Ci0gICAgRVhQRUNUX0NBTEwoYiwgRG9C
KCkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1
cm4oMikpOwotCi0gICAgRVhQRUNUX0VRKDEsIGIuRG9CKCkpOwotICAgIEVYUEVDVF9FUSgyLCBi
LkRvQigpKTsKLSAgfQotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIE1vY2tCIGI7Ci0gICAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAgIC5XaWxsT25j
ZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOwotCi0gICAgRVhQRUNU
X0VRKDEsIGIuRG9CKCkpOwotICB9LCAidG8gYmUgY2FsbGVkIHR3aWNlIik7Ci0KLSAgeyAgLy8g
Tk9MSU5UCi0gICAgTW9ja0IgYjsKLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgICAg
LldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7Ci0gICAgRVhQRUNUX0VRKDIsIGIuRG9CKCkpOwotICAg
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGIuRG9CKCksICJ0byBiZSBjYWxsZWQgdHdpY2UiKTsK
LSAgfQotfQotCi1URVNUKEV4cGVjdENhbGxUZXN0LCBJbmZlcnNDYXJkaW5hbGl0eTFXaGVuVGhl
cmVJc1dpbGxSZXBlYXRlZGx5KSB7Ci0gIHsKLSAgICBNb2NrQiBiOwotICAgIEVYUEVDVF9DQUxM
KGIsIERvQigpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgICAuV2lsbFJl
cGVhdGVkbHkoUmV0dXJuKDIpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBiLkRvQigpKTsKLSAgfQot
Ci0gIHsgIC8vIE5PTElOVAotICAgIE1vY2tCIGI7Ci0gICAgRVhQRUNUX0NBTEwoYiwgRG9CKCkp
Ci0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oMikpOwotCi0gICAgRVhQRUNUX0VRKDEsIGIuRG9CKCkpOwotICAgIEVYUEVDVF9FUSgy
LCBiLkRvQigpKTsKLSAgICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7Ci0gIH0KLQotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBNb2NrQiBiOwotICAgIEVYUEVDVF9D
QUxMKGIsIERvQigpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgICAuV2ls
bFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKLSAgfSwgInRvIGJlIGNhbGxlZCBhdCBsZWFzdCBvbmNl
Iik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIG4tdGggYWN0aW9uIGlzIHRha2VuIGZvciB0aGUg
bi10aCBtYXRjaGluZwotLy8gaW52b2NhdGlvbi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIE50aE1h
dGNoVGFrZXNOdGhBY3Rpb24pIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKCkp
Ci0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSkK
LSAgICAgIC5XaWxsT25jZShSZXR1cm4oMykpOwotCi0gIEVYUEVDVF9FUSgxLCBiLkRvQigpKTsK
LSAgRVhQRUNUX0VRKDIsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMywgYi5Eb0IoKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIFdpbGxSZXBlYXRlZGx5KCkgYWN0aW9uIGlzIHRha2VuIHdoZW4g
dGhlIFdpbGxPbmNlKC4uLikKLS8vIGxpc3QgaXMgZXhoYXVzdGVkLgotVEVTVChFeHBlY3RDYWxs
VGVzdCwgVGFrZXNSZXBlYXRlZEFjdGlvbldoZW5XaWxsTGlzdElzRXhoYXVzdGVkKSB7Ci0gIE1v
Y2tCIGI7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigx
KSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotCi0gIEVYUEVDVF9FUSgxLCBi
LkRvQigpKTsKLSAgRVhQRUNUX0VRKDIsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMiwgYi5Eb0Io
KSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFRlc3RzIHRo
YXQgdGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRha2VuIHdoZW4gdGhlIFdpbGxPbmNlKC4uLikgbGlz
dCBpcwotLy8gZXhoYXVzdGVkIGFuZCB0aGVyZSBpcyBubyBXaWxsUmVwZWF0ZWRseSgpLgotVEVT
VChFeHBlY3RDYWxsVGVzdCwgVGFrZXNEZWZhdWx0QWN0aW9uV2hlbldpbGxMaXN0SXNFeGhhdXN0
ZWQpIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKF8pKQotICAgICAgLlRpbWVz
KDEpOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkK
LSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsK
LQotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7ICAvLyBTaG91
bGRuJ3QgZ2VuZXJhdGUgYSB3YXJuaW5nIGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZXhwZWN0YXRpb24gaGFzIG5vIGFjdGlvbiBjbGF1c2UgYXQgYWxsLgotICBFWFBFQ1Rf
RVEoMSwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgyLCBiLkRvQigpKTsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgb3V0cHV0MSA9IEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwg
b3V0cHV0MS5jX3N0cigpKTsKLQotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIEVYUEVDVF9FUSgwLCBi
LkRvQigpKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBjb25zdCBzdGQ6OnN0cmluZyBv
dXRwdXQyID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSAgRVhQRUNUX1RIQVQob3V0cHV0Mi5jX3N0
cigpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIkFjdGlvbnMgcmFuIG91dCBpbiBFWFBFQ1Rf
Q0FMTChiLCBEb0IoKSkuLi5cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJDYWxsZWQgMyB0
aW1lcywgYnV0IG9ubHkgMiBXaWxsT25jZSgpcyBhcmUgc3BlY2lmaWVkIgotICAgICAgICAgICAg
ICAgICAgICAgICAgIiAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLiIpKTsKLSAgRVhQRUNUX1RI
QVQob3V0cHV0Mi5jX3N0cigpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIkFjdGlvbnMgcmFu
IG91dCBpbiBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkuLi5cbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJDYWxsZWQgNCB0aW1lcywgYnV0IG9ubHkgMiBXaWxsT25jZSgpcyBhcmUgc3BlY2lmaWVk
IgotICAgICAgICAgICAgICAgICAgICAgICAgIiAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLiIp
KTsKLX0KLQotVEVTVChGdW5jdGlvbk1vY2tlck1lc3NhZ2VUZXN0LCBSZXBvcnRzRXhwZWN0Q2Fs
bExvY2F0aW9uRm9yRXhoYXVzZWRBY3Rpb25zKSB7Ci0gIE1vY2tCIGI7Ci0gIHN0ZDo6c3RyaW5n
IGV4cGVjdF9jYWxsX2xvY2F0aW9uID0gRm9ybWF0RmlsZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJ
TkVfXyArIDEpOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkuVGltZXMoQW55TnVtYmVyKCkpLldp
bGxPbmNlKFJldHVybigxKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIGIuRG9CKCkpOwotCi0gIENhcHR1
cmVTdGRvdXQoKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBjb25zdCBzdGQ6OnN0cmlu
ZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotICAvLyBUaGUgd2FybmluZyBtZXNzYWdl
IHNob3VsZCBjb250YWluIHRoZSBjYWxsIGxvY2F0aW9uLgotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KElzU3Vic3RyaW5nLCBleHBlY3RfY2FsbF9sb2NhdGlvbiwgb3V0cHV0KTsKLX0KLQotVEVTVChG
dW5jdGlvbk1vY2tlck1lc3NhZ2VUZXN0LAotICAgICBSZXBvcnRzRGVmYXVsdEFjdGlvbkxvY2F0
aW9uT2ZVbmludGVyZXN0aW5nQ2FsbHNGb3JOYWdneU1vY2spIHsKLSAgc3RkOjpzdHJpbmcgb25f
Y2FsbF9sb2NhdGlvbjsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICB7Ci0gICAgTmFnZ3lNb2NrPE1v
Y2tCPiBiOwotICAgIG9uX2NhbGxfbG9jYXRpb24gPSBGb3JtYXRGaWxlTG9jYXRpb24oX19GSUxF
X18sIF9fTElORV9fICsgMSk7Ci0gICAgT05fQ0FMTChiLCBEb0IoXykpLldpbGxCeURlZmF1bHQo
UmV0dXJuKDApKTsKLSAgICBiLkRvQigwKTsKLSAgfQotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElz
U3Vic3RyaW5nLCBvbl9jYWxsX2xvY2F0aW9uLCBHZXRDYXB0dXJlZFN0ZG91dCgpKTsKLX0KLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFRlc3RzIHRoYXQg
YW4gdW5pbnRlcmVzdGluZyBjYWxsIHBlcmZvcm1zIHRoZSBkZWZhdWx0IGFjdGlvbi4KLVRFU1Qo
VW5pbnRlcmVzdGluZ0NhbGxUZXN0LCBEb2VzRGVmYXVsdEFjdGlvbikgewotICAvLyBXaGVuIHRo
ZXJlIGlzIGFuIE9OX0NBTEwoKSBzdGF0ZW1lbnQsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IGl0
Ci0gIC8vIHNob3VsZCBiZSB0YWtlbi4KLSAgTW9ja0EgYTsKLSAgT05fQ0FMTChhLCBCaW5hcnko
XywgXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOwotICBFWFBFQ1RfVFJV
RShhLkJpbmFyeSgxLCAyKSk7Ci0KLSAgLy8gV2hlbiB0aGVyZSBpcyBubyBPTl9DQUxMKCksIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcmV0dXJuIHR5cGUKLSAgLy8gc2hvdWxkIGJlIHJldHVy
bmVkLgotICBNb2NrQiBiOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgYW4gdW5leHBlY3RlZCBjYWxsIHBlcmZvcm1zIHRoZSBkZWZhdWx0IGFjdGlvbi4KLVRF
U1QoVW5leHBlY3RlZENhbGxUZXN0LCBEb2VzRGVmYXVsdEFjdGlvbikgewotICAvLyBXaGVuIHRo
ZXJlIGlzIGFuIE9OX0NBTEwoKSBzdGF0ZW1lbnQsIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IGl0
Ci0gIC8vIHNob3VsZCBiZSB0YWtlbi4KLSAgTW9ja0EgYTsKLSAgT05fQ0FMTChhLCBCaW5hcnko
XywgXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOwotICBFWFBFQ1RfQ0FM
TChhLCBCaW5hcnkoMCwgMCkpOwotICBhLkJpbmFyeSgwLCAwKTsKLSAgYm9vbCByZXN1bHQgPSBm
YWxzZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUocmVzdWx0ID0gYS5CaW5hcnkoMSwgMiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2Fs
bCIpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQpOwotCi0gIC8vIFdoZW4gdGhlcmUgaXMgbm8gT05f
Q0FMTCgpLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHJldHVybiB0eXBlCi0gIC8vIHNob3Vs
ZCBiZSByZXR1cm5lZC4KLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDApKQotICAg
ICAgLlRpbWVzKDApOwotICBpbnQgbiA9IC0xOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShu
ID0gYi5Eb0IoMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCIpOwotICBFWFBFQ1RfRVEoMCwgbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
d2hlbiBhbiB1bmV4cGVjdGVkIHZvaWQgZnVuY3Rpb24gZ2VuZXJhdGVzIHRoZSByaWdodAotLy8g
ZmFpbHVyZSBtZXNzYWdlLgotVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIEdlbmVyYXRlc0ZhaWx1
cmVGb3JWb2lkRnVuY3Rpb24pIHsKLSAgLy8gRmlyc3QsIHRlc3RzIHRoZSBtZXNzYWdlIHdoZW4g
dGhlcmUgaXMgb25seSBvbmUgRVhQRUNUX0NBTEwoKS4KLSAgTW9ja0EgYTE7Ci0gIEVYUEVDVF9D
QUxMKGExLCBEb0EoMSkpOwotICBhMS5Eb0EoMSk7Ci0gIC8vIElkZWFsbHkgd2Ugc2hvdWxkIG1h
dGNoIHRoZSBmYWlsdXJlIG1lc3NhZ2UgYWdhaW5zdCBhIHJlZ2V4LCBidXQKLSAgLy8gRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUgZG9lc24ndCBzdXBwb3J0IHRoYXQsIHNvIHdlIHRlc3QgZm9yCi0g
IC8vIG11bHRpcGxlIHN1Yi1zdHJpbmdzIGluc3RlYWQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKAotICAgICAgYTEuRG9BKDkpLAotICAgICAgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBj
YWxsIC0gcmV0dXJuaW5nIGRpcmVjdGx5LlxuIgotICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBE
b0EoOSlcbiIKLSAgICAgICJHb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDEgZXhwZWN0
YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2g6Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KAotICAgICAgYTEuRG9BKDkpLAotICAgICAgIiAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0
byAxXG4iCi0gICAgICAiICAgICAgICAgICBBY3R1YWw6IDlcbiIKLSAgICAgICIgICAgICAgICBF
eHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2VcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDog
Y2FsbGVkIG9uY2UgLSBzYXR1cmF0ZWQgYW5kIGFjdGl2ZSIpOwotCi0gIC8vIE5leHQsIHRlc3Rz
IHRoZSBtZXNzYWdlIHdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgRVhQRUNUX0NBTEwoKS4K
LSAgTW9ja0EgYTI7Ci0gIEVYUEVDVF9DQUxMKGEyLCBEb0EoMSkpOwotICBFWFBFQ1RfQ0FMTChh
MiwgRG9BKDMpKTsKLSAgYTIuRG9BKDEpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAg
ICAgIGEyLkRvQSgyKSwKLSAgICAgICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJl
dHVybmluZyBkaXJlY3RseS5cbiIKLSAgICAgICIgICAgRnVuY3Rpb24gY2FsbDogRG9BKDIpXG4i
Ci0gICAgICAiR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAyIGV4cGVjdGF0aW9ucywg
YnV0IG5vbmUgbWF0Y2hlZDoiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBh
Mi5Eb0EoMiksCi0gICAgICAidHJpZWQgZXhwZWN0YXRpb24gIzA6IEVYUEVDVF9DQUxMKGEyLCBE
b0EoMSkpLi4uXG4iCi0gICAgICAiICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDFcbiIK
LSAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIgotICAgICAgIiAgICAgICAgIEV4cGVjdGVk
OiB0byBiZSBjYWxsZWQgb25jZVxuIgotICAgICAgIiAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQg
b25jZSAtIHNhdHVyYXRlZCBhbmQgYWN0aXZlIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KAotICAgICAgYTIuRG9BKDIpLAotICAgICAgInRyaWVkIGV4cGVjdGF0aW9uICMxOiBFWFBFQ1Rf
Q0FMTChhMiwgRG9BKDMpKS4uLlxuIgotICAgICAgIiAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVh
bCB0byAzXG4iCi0gICAgICAiICAgICAgICAgICBBY3R1YWw6IDJcbiIKLSAgICAgICIgICAgICAg
ICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2VcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVh
bDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZSIpOwotICBhMi5Eb0EoMyk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW4gdW5leHBlY3RlZCBub24tdm9pZCBmdW5jdGlvbiBnZW5l
cmF0ZXMgdGhlIHJpZ2h0Ci0vLyBmYWlsdXJlIG1lc3NhZ2UuCi1URVNUKFVuZXhwZWN0ZWRDYWxs
VGVzdCwgR2VuZWFydGVzRmFpbHVyZUZvck5vblZvaWRGdW5jdGlvbikgewotICBNb2NrQiBiMTsK
LSAgRVhQRUNUX0NBTEwoYjEsIERvQigxKSk7Ci0gIGIxLkRvQigxKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoCi0gICAgICBiMS5Eb0IoMiksCi0gICAgICAiVW5leHBlY3RlZCBtb2NrIGZ1
bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS5cbiIKLSAgICAgICIgICAgRnVu
Y3Rpb24gY2FsbDogRG9CKDIpXG4iCi0gICAgICAiICAgICAgICAgIFJldHVybnM6IDBcbiIKLSAg
ICAgICJHb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDEgZXhwZWN0YXRpb24sIGJ1dCBp
dCBkaWRuJ3QgbWF0Y2g6Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgYjEu
RG9CKDIpLAotICAgICAgIiAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0byAxXG4iCi0gICAg
ICAiICAgICAgICAgICBBY3R1YWw6IDJcbiIKLSAgICAgICIgICAgICAgICBFeHBlY3RlZDogdG8g
YmUgY2FsbGVkIG9uY2VcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogY2FsbGVkIG9uY2Ug
LSBzYXR1cmF0ZWQgYW5kIGFjdGl2ZSIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBNb2Nr
IGV4cGxhaW5zIHRoYXQgYW4gcmV0aXJlZCBleHBlY3RhdGlvbiBkb2Vzbid0Ci0vLyBtYXRjaCB0
aGUgY2FsbC4KLVRFU1QoVW5leHBlY3RlZENhbGxUZXN0LCBSZXRpcmVkRXhwZWN0YXRpb24pIHsK
LSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDEpKQotICAgICAgLlJldGlyZXNPblNh
dHVyYXRpb24oKTsKLQotICBiLkRvQigxKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0g
ICAgICBiLkRvQigxKSwKLSAgICAgICIgICAgICAgICBFeHBlY3RlZDogdGhlIGV4cGVjdGF0aW9u
IGlzIGFjdGl2ZVxuIgotICAgICAgIiAgICAgICAgICAgQWN0dWFsOiBpdCBpcyByZXRpcmVkIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgZXhwbGFpbnMgdGhhdCBhbiBleHBlY3Rh
dGlvbiB0aGF0IGRvZXNuJ3QKLS8vIG1hdGNoIHRoZSBhcmd1bWVudHMgZG9lc24ndCBtYXRjaCB0
aGUgY2FsbC4KLVRFU1QoVW5leHBlY3RlZENhbGxUZXN0LCBVbm1hdGNoZWRBcmd1bWVudHMpIHsK
LSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDEpKTsKLQotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSgKLSAgICAgIGIuRG9CKDIpLAotICAgICAgIiAgRXhwZWN0ZWQgYXJnICMwOiBp
cyBlcXVhbCB0byAxXG4iCi0gICAgICAiICAgICAgICAgICBBY3R1YWw6IDJcbiIpOwotICBiLkRv
QigxKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBleHBsYWlucyB0aGF0IGFuIGV4
cGVjdGF0aW9uIHdpdGgKLS8vIHVuc2F0aXNmaWVkIHByZS1yZXF1aXNpdGVzIGRvZXNuJ3QgbWF0
Y2ggdGhlIGNhbGwuCi1URVNUKFVuZXhwZWN0ZWRDYWxsVGVzdCwgVW5zYXRpc2lmaWVkUHJlcmVx
dWlzaXRlcykgewotICBTZXF1ZW5jZSBzMSwgczI7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxM
KGIsIERvQigxKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9C
KDIpKQotICAgICAgLlRpbWVzKEFueU51bWJlcigpKQotICAgICAgLkluU2VxdWVuY2UoczEpOwot
ICBFWFBFQ1RfQ0FMTChiLCBEb0IoMykpCi0gICAgICAuSW5TZXF1ZW5jZShzMik7Ci0gIEVYUEVD
VF9DQUxMKGIsIERvQig0KSkKLSAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7Ci0KLSAgOjp0ZXN0
aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5IGZhaWx1cmVzOwotICB7Ci0gICAgOjp0ZXN0aW5nOjpT
Y29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigmZmFpbHVyZXMpOwotICAg
IGIuRG9CKDQpOwotICAgIC8vIE5vdyAnZmFpbHVyZXMnIGNvbnRhaW5zIHRoZSBHb29nbGUgVGVz
dCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkKLSAgICAvLyB0aGUgYWJvdmUgc3RhdGVtZW50LgotICB9
Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG9uZSBub24tZmF0YWwgZmFpbHVyZS4KLSAgQVNTRVJU
X0VRKDEsIGZhaWx1cmVzLnNpemUoKSk7Ci0gIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1
bHQmIHIgPSBmYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgwKTsKLSAgRVhQRUNUX0VRKDo6dGVz
dGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIudHlwZSgpKTsKLQotICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlIHR3byB1bnNh
dGlzZmllZAotICAvLyBwcmUtcmVxdWlzaXRlcyBidXQgbm90IHRoZSBzYXRpc2ZpZWQgb25lLgot
I2lmIEdURVNUX1VTRVNfUENSRQotICBFWFBFQ1RfVEhBVChyLm1lc3NhZ2UoKSwgQ29udGFpbnNS
ZWdleCgKLSAgICAgIC8vIFBDUkUgaGFzIHRyb3VibGUgdXNpbmcgKC58XG4pIHRvIG1hdGNoIGFu
eSBjaGFyYWN0ZXIsIGJ1dAotICAgICAgLy8gc3VwcG9ydHMgdGhlICg/cykgcHJlZml4IGZvciB1
c2luZyAuIHRvIG1hdGNoIGFueSBjaGFyYWN0ZXIuCi0gICAgICAiKD9zKXRoZSBmb2xsb3dpbmcg
aW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIGFyZSBub3Qgc2F0aXNmaWVkOlxuIgotICAgICAgIi4q
OiBwcmUtcmVxdWlzaXRlICMwXG4iCi0gICAgICAiLio6IHByZS1yZXF1aXNpdGUgIzEiKSk7Ci0j
ZWxpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCi0gIEVYUEVDVF9USEFUKHIubWVzc2FnZSgpLCBDb250
YWluc1JlZ2V4KAotICAgICAgLy8gUE9TSVggUkUgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAoP3Mp
IHByZWZpeCwgYnV0IGhhcyBubyB0cm91YmxlCi0gICAgICAvLyB3aXRoICgufFxuKS4KLSAgICAg
ICJ0aGUgZm9sbG93aW5nIGltbWVkaWF0ZSBwcmUtcmVxdWlzaXRlcyBhcmUgbm90IHNhdGlzZmll
ZDpcbiIKLSAgICAgICIoLnxcbikqOiBwcmUtcmVxdWlzaXRlICMwXG4iCi0gICAgICAiKC58XG4p
KjogcHJlLXJlcXVpc2l0ZSAjMSIpKTsKLSNlbHNlCi0gIC8vIFdlIGNhbiBvbmx5IHVzZSBHb29n
bGUgVGVzdCdzIG93biBzaW1wbGUgcmVnZXguCi0gIEVYUEVDVF9USEFUKHIubWVzc2FnZSgpLCBD
b250YWluc1JlZ2V4KAotICAgICAgInRoZSBmb2xsb3dpbmcgaW1tZWRpYXRlIHByZS1yZXF1aXNp
dGVzIGFyZSBub3Qgc2F0aXNmaWVkOiIpKTsKLSAgRVhQRUNUX1RIQVQoci5tZXNzYWdlKCksIENv
bnRhaW5zUmVnZXgoIjogcHJlLXJlcXVpc2l0ZSAjMCIpKTsKLSAgRVhQRUNUX1RIQVQoci5tZXNz
YWdlKCksIENvbnRhaW5zUmVnZXgoIjogcHJlLXJlcXVpc2l0ZSAjMSIpKTsKLSNlbmRpZiAgLy8g
R1RFU1RfVVNFU19QQ1JFCi0KLSAgYi5Eb0IoMSk7Ci0gIGIuRG9CKDMpOwotICBiLkRvQig0KTsK
LX0KLQotVEVTVChVbmRlZmluZWRSZXR1cm5WYWx1ZVRlc3QsCi0gICAgIFJldHVyblZhbHVlSXNN
YW5kYXRvcnlXaGVuTm90RGVmYXVsdENvbnN0cnVjdGlibGUpIHsKLSAgTW9ja0EgYTsKLSAgLy8g
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFdlIHNob3VsZCByZWFsbHkgdmVyaWZ5IHRoZSBvdXRwdXQg
bWVzc2FnZSwKLSAgLy8gYnV0IHdlIGNhbm5vdCB5ZXQgZHVlIHRvIHRoYXQgRVhQRUNUX0RFQVRI
IG9ubHkgY2FwdHVyZXMgc3RkZXJyCi0gIC8vIHdoaWxlIEdvb2dsZSBNb2NrIGxvZ3MgdG8gc3Rk
b3V0LgotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gIEVYUEVDVF9BTllfVEhST1coYS5SZXR1
cm5Ob25EZWZhdWx0Q29uc3RydWN0aWJsZSgpKTsKLSNlbHNlCi0gIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoYS5SZXR1cm5Ob25EZWZhdWx0Q29uc3RydWN0aWJsZSgpLCAiIik7Ci0jZW5kaWYK
LX0KLQotLy8gVGVzdHMgdGhhdCBhbiBleGNlc3NpdmUgY2FsbCAob25lIHdob3NlIGFyZ3VtZW50
cyBtYXRjaCB0aGUKLS8vIG1hdGNoZXJzIGJ1dCBpcyBjYWxsZWQgdG9vIG1hbnkgdGltZXMpIHBl
cmZvcm1zIHRoZSBkZWZhdWx0IGFjdGlvbi4KLVRFU1QoRXhjZXNzaXZlQ2FsbFRlc3QsIERvZXNE
ZWZhdWx0QWN0aW9uKSB7Ci0gIC8vIFdoZW4gdGhlcmUgaXMgYW4gT05fQ0FMTCgpIHN0YXRlbWVu
dCwgdGhlIGFjdGlvbiBzcGVjaWZpZWQgYnkgaXQKLSAgLy8gc2hvdWxkIGJlIHRha2VuLgotICBN
b2NrQSBhOwotICBPTl9DQUxMKGEsIEJpbmFyeShfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0
KFJldHVybih0cnVlKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIEJpbmFyeSgwLCAwKSk7Ci0gIGEuQmlu
YXJ5KDAsIDApOwotICBib29sIHJlc3VsdCA9IGZhbHNlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShyZXN1bHQgPSBhLkJpbmFyeSgwLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ik1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCIpOwotICBFWFBF
Q1RfVFJVRShyZXN1bHQpOwotCi0gIC8vIFdoZW4gdGhlcmUgaXMgbm8gT05fQ0FMTCgpLCB0aGUg
ZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHJldHVybiB0eXBlCi0gIC8vIHNob3VsZCBiZSByZXR1cm5l
ZC4KLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDApKQotICAgICAgLlRpbWVzKDAp
OwotICBpbnQgbiA9IC0xOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShuID0gYi5Eb0IoMCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRp
bWVzIHRoYW4gZXhwZWN0ZWQiKTsKLSAgRVhQRUNUX0VRKDAsIG4pOwotfQotCi0vLyBUZXN0cyB0
aGF0IHdoZW4gYSB2b2lkIGZ1bmN0aW9uIGlzIGNhbGxlZCB0b28gbWFueSB0aW1lcywKLS8vIHRo
ZSBmYWlsdXJlIG1lc3NhZ2UgY29udGFpbnMgdGhlIGFyZ3VtZW50IHZhbHVlcy4KLVRFU1QoRXhj
ZXNzaXZlQ2FsbFRlc3QsIEdlbmVyYXRlc0ZhaWx1cmVGb3JWb2lkRnVuY3Rpb24pIHsKLSAgTW9j
a0EgYTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKF8pKQotICAgICAgLlRpbWVzKDApOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIGEuRG9BKDkpLAotICAgICAgIk1vY2sgZnVuY3Rp
b24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCAtIHJldHVybmluZyBkaXJlY3RseS5c
biIKLSAgICAgICIgICAgRnVuY3Rpb24gY2FsbDogRG9BKDkpXG4iCi0gICAgICAiICAgICAgICAg
RXhwZWN0ZWQ6IHRvIGJlIG5ldmVyIGNhbGxlZFxuIgotICAgICAgIiAgICAgICAgICAgQWN0dWFs
OiBjYWxsZWQgb25jZSAtIG92ZXItc2F0dXJhdGVkIGFuZCBhY3RpdmUiKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB3aGVuIGEgbm9uLXZvaWQgZnVuY3Rpb24gaXMgY2FsbGVkIHRvbyBtYW55IHRpbWVz
LCB0aGUKLS8vIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUgYXJndW1lbnQgdmFsdWVzIGFu
ZCB0aGUgcmV0dXJuIHZhbHVlLgotVEVTVChFeGNlc3NpdmVDYWxsVGVzdCwgR2VuZXJhdGVzRmFp
bHVyZUZvck5vblZvaWRGdW5jdGlvbikgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBE
b0IoXykpOwotICBiLkRvQigxKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBi
LkRvQigyKSwKLSAgICAgICJNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhw
ZWN0ZWQgLSAiCi0gICAgICAicmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuXG4iCi0gICAgICAiICAg
IEZ1bmN0aW9uIGNhbGw6IERvQigyKVxuIgotICAgICAgIiAgICAgICAgICBSZXR1cm5zOiAwXG4i
Ci0gICAgICAiICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlXG4iCi0gICAgICAi
ICAgICAgICAgICBBY3R1YWw6IGNhbGxlZCB0d2ljZSAtIG92ZXItc2F0dXJhdGVkIGFuZCBhY3Rp
dmUiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgc2VxdWVuY2VzLgotCi1URVNUKEluU2VxdWVuY2VU
ZXN0LCBBbGxFeHBlY3RhdGlvbkluU2NvcGVBcmVJblNlcXVlbmNlKSB7Ci0gIE1vY2tBIGE7Ci0g
IHsKLSAgICBJblNlcXVlbmNlIGR1bW15OwotCi0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsK
LSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOwotICB9Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYS5Eb0EoMik7Ci0gIH0sICJVbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCIpOwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLX0KLQotVEVTVChJ
blNlcXVlbmNlVGVzdCwgTmVzdGVkSW5TZXF1ZW5jZSkgewotICBNb2NrQSBhOwotICB7Ci0gICAg
SW5TZXF1ZW5jZSBkdW1teTsKLQotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gICAgewot
ICAgICAgSW5TZXF1ZW5jZSBkdW1teTI7Ci0KLSAgICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7
Ci0gICAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpOwotICAgIH0KLSAgfQotCi0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIGEuRG9BKDEpOwotICAgIGEuRG9BKDMp
OwotICB9LCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLQotICBhLkRvQSgyKTsK
LSAgYS5Eb0EoMyk7Ci19Ci0KLVRFU1QoSW5TZXF1ZW5jZVRlc3QsIEV4cGVjdGF0aW9uc091dE9m
U2NvcGVBcmVOb3RBZmZlY3RlZCkgewotICBNb2NrQSBhOwotICB7Ci0gICAgSW5TZXF1ZW5jZSBk
dW1teTsKLQotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gICAgRVhQRUNUX0NBTEwoYSwg
RG9BKDIpKTsKLSAgfQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpOwotCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIGEuRG9BKDIpOwotICB9LCAiVW5leHBlY3Rl
ZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLQotICBhLkRvQSgzKTsKLSAgYS5Eb0EoMSk7Ci0gIGEu
RG9BKDIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFueSBvcmRlciBpcyBhbGxvd2VkIHdoZW4gbm8g
c2VxdWVuY2UgaXMgdXNlZC4KLVRFU1QoU2VxdWVuY2VUZXN0LCBBbnlPcmRlcklzT2tCeURlZmF1
bHQpIHsKLSAgewotICAgIE1vY2tBIGE7Ci0gICAgTW9ja0IgYjsKLQotICAgIEVYUEVDVF9DQUxM
KGEsIERvQSgxKSk7Ci0gICAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAgIC5UaW1lcyhB
bnlOdW1iZXIoKSk7Ci0KLSAgICBhLkRvQSgxKTsKLSAgICBiLkRvQigpOwotICB9Ci0KLSAgeyAg
Ly8gTk9MSU5UCi0gICAgTW9ja0EgYTsKLSAgICBNb2NrQiBiOwotCi0gICAgRVhQRUNUX0NBTEwo
YSwgRG9BKDEpKTsKLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKTsKLQotICAgIGIuRG9CKCk7Ci0gICAgYS5Eb0EoMSk7Ci0gIH0KLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgY2FsbHMgbXVzdCBiZSBpbiBzdHJpY3Qgb3JkZXIgd2hlbiBhIGNvbXBs
ZXRlIG9yZGVyCi0vLyBpcyBzcGVjaWZpZWQuCi1URVNUKFNlcXVlbmNlVGVzdCwgQ2FsbHNNdXN0
QmVJblN0cmljdE9yZGVyV2hlblNhaWRTbzEpIHsKLSAgTW9ja0EgYTsKLSAgT05fQ0FMTChhLCBS
ZXR1cm5SZXN1bHQoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oUmVzdWx0KCkpKTsK
LQotICBTZXF1ZW5jZSBzOwotICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5SZXN1bHQoMSkpCi0gICAg
ICAuSW5TZXF1ZW5jZShzKTsKLSAgRVhQRUNUX0NBTEwoYSwgUmV0dXJuUmVzdWx0KDIpKQotICAg
ICAgLkluU2VxdWVuY2Uocyk7Ci0gIEVYUEVDVF9DQUxMKGEsIFJldHVyblJlc3VsdCgzKSkKLSAg
ICAgIC5JblNlcXVlbmNlKHMpOwotCi0gIGEuUmV0dXJuUmVzdWx0KDEpOwotCi0gIC8vIE1heSBv
bmx5IGJlIGNhbGxlZCBhZnRlciBhLlJldHVyblJlc3VsdCgyKS4KLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoYS5SZXR1cm5SZXN1bHQoMyksICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2Fs
bCIpOwotCi0gIGEuUmV0dXJuUmVzdWx0KDIpOwotICBhLlJldHVyblJlc3VsdCgzKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB0aGUgY2FsbHMgbXVzdCBiZSBpbiBzdHJpY3Qgb3JkZXIgd2hlbiBhIGNv
bXBsZXRlIG9yZGVyCi0vLyBpcyBzcGVjaWZpZWQuCi1URVNUKFNlcXVlbmNlVGVzdCwgQ2FsbHNN
dXN0QmVJblN0cmljdE9yZGVyV2hlblNhaWRTbzIpIHsKLSAgTW9ja0EgYTsKLSAgT05fQ0FMTChh
LCBSZXR1cm5SZXN1bHQoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oUmVzdWx0KCkp
KTsKLQotICBTZXF1ZW5jZSBzOwotICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5SZXN1bHQoMSkpCi0g
ICAgICAuSW5TZXF1ZW5jZShzKTsKLSAgRVhQRUNUX0NBTEwoYSwgUmV0dXJuUmVzdWx0KDIpKQot
ICAgICAgLkluU2VxdWVuY2Uocyk7Ci0KLSAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEu
UmV0dXJuUmVzdWx0KDEpLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLlJldHVyblJlc3Vs
dCgyKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5SZXR1cm5SZXN1
bHQoMSk7Ci0gIGEuUmV0dXJuUmVzdWx0KDIpOwotfQotCi0vLyBUZXN0cyBzcGVjaWZ5aW5nIGEg
REFHIHVzaW5nIG11bHRpcGxlIHNlcXVlbmNlcy4KLWNsYXNzIFBhcnRpYWxPcmRlclRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBQYXJ0aWFsT3JkZXJUZXN0KCkg
ewotICAgIE9OX0NBTEwoYV8sIFJldHVyblJlc3VsdChfKSkKLSAgICAgICAgLldpbGxCeURlZmF1
bHQoUmV0dXJuKFJlc3VsdCgpKSk7Ci0KLSAgICAvLyBTcGVjaWZpZXMgdGhpcyBwYXJ0aWFsIG9y
ZGVyaW5nOgotICAgIC8vCi0gICAgLy8gYS5SZXR1cm5SZXN1bHQoMSkgPT0+Ci0gICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgIGEuUmV0dXJuUmVzdWx0KDIpICogbiAgPT0+ICBhLlJldHVyblJl
c3VsdCgzKQotICAgIC8vIGIuRG9CKCkgKiAyICAgICAgID09PgotICAgIFNlcXVlbmNlIHgsIHk7
Ci0gICAgRVhQRUNUX0NBTEwoYV8sIFJldHVyblJlc3VsdCgxKSkKLSAgICAgICAgLkluU2VxdWVu
Y2UoeCk7Ci0gICAgRVhQRUNUX0NBTEwoYl8sIERvQigpKQotICAgICAgICAuVGltZXMoMikKLSAg
ICAgICAgLkluU2VxdWVuY2UoeSk7Ci0gICAgRVhQRUNUX0NBTEwoYV8sIFJldHVyblJlc3VsdCgy
KSkKLSAgICAgICAgLlRpbWVzKEFueU51bWJlcigpKQotICAgICAgICAuSW5TZXF1ZW5jZSh4LCB5
KTsKLSAgICBFWFBFQ1RfQ0FMTChhXywgUmV0dXJuUmVzdWx0KDMpKQotICAgICAgICAuSW5TZXF1
ZW5jZSh4KTsKLSAgfQotCi0gIE1vY2tBIGFfOwotICBNb2NrQiBiXzsKLX07Ci0KLVRFU1RfRihQ
YXJ0aWFsT3JkZXJUZXN0LCBDYWxsc011c3RDb25mb3JtVG9TcGVjaWZpZWREYWcxKSB7Ci0gIGFf
LlJldHVyblJlc3VsdCgxKTsKLSAgYl8uRG9CKCk7Ci0KLSAgLy8gTWF5IG9ubHkgYmUgY2FsbGVk
IGFmdGVyIHRoZSBzZWNvbmQgRG9CKCkuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGFfLlJl
dHVyblJlc3VsdCgyKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYl8u
RG9CKCk7Ci0gIGFfLlJldHVyblJlc3VsdCgzKTsKLX0KLQotVEVTVF9GKFBhcnRpYWxPcmRlclRl
c3QsIENhbGxzTXVzdENvbmZvcm1Ub1NwZWNpZmllZERhZzIpIHsKLSAgLy8gTWF5IG9ubHkgYmUg
Y2FsbGVkIGFmdGVyIFJldHVyblJlc3VsdCgxKS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
YV8uUmV0dXJuUmVzdWx0KDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLQot
ICBhXy5SZXR1cm5SZXN1bHQoMSk7Ci0gIGJfLkRvQigpOwotICBiXy5Eb0IoKTsKLSAgYV8uUmV0
dXJuUmVzdWx0KDMpOwotfQotCi1URVNUX0YoUGFydGlhbE9yZGVyVGVzdCwgQ2FsbHNNdXN0Q29u
Zm9ybVRvU3BlY2lmaWVkRGFnMykgewotICAvLyBNYXkgb25seSBiZSBjYWxsZWQgbGFzdC4KLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYV8uUmV0dXJuUmVzdWx0KDMpLCAiVW5leHBlY3RlZCBt
b2NrIGZ1bmN0aW9uIGNhbGwiKTsKLQotICBhXy5SZXR1cm5SZXN1bHQoMSk7Ci0gIGJfLkRvQigp
OwotICBiXy5Eb0IoKTsKLSAgYV8uUmV0dXJuUmVzdWx0KDMpOwotfQotCi1URVNUX0YoUGFydGlh
bE9yZGVyVGVzdCwgQ2FsbHNNdXN0Q29uZm9ybVRvU3BlY2lmaWVkRGFnNCkgewotICBhXy5SZXR1
cm5SZXN1bHQoMSk7Ci0gIGJfLkRvQigpOwotICBiXy5Eb0IoKTsKLSAgYV8uUmV0dXJuUmVzdWx0
KDMpOwotCi0gIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgUmV0dXJuUmVzdWx0KDMpLgot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhXy5SZXR1cm5SZXN1bHQoMiksICJVbmV4cGVjdGVk
IG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotfQotCi1URVNUKFNlcXVlbmNlVGVzdCwgUmV0aXJlbWVu
dCkgewotICBNb2NrQSBhOwotICBTZXF1ZW5jZSBzOwotCi0gIEVYUEVDVF9DQUxMKGEsIERvQSgx
KSkKLSAgICAgIC5JblNlcXVlbmNlKHMpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoXykpCi0gICAg
ICAuSW5TZXF1ZW5jZShzKQotICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgRVhQRUNU
X0NBTEwoYSwgRG9BKDEpKQotICAgICAgLkluU2VxdWVuY2Uocyk7Ci0KLSAgYS5Eb0EoMSk7Ci0g
IGEuRG9BKDIpOwotICBhLkRvQSgxKTsKLX0KLQotLy8gVGVzdHMgRXhwZWN0YXRpb24uCi0KLVRF
U1QoRXhwZWN0YXRpb25UZXN0LCBDb25zdHJ1dG9yc1dvcmspIHsKLSAgTW9ja0EgYTsKLSAgRXhw
ZWN0YXRpb24gZTE7ICAvLyBEZWZhdWx0IGN0b3IuCi0KLSAgLy8gQ3RvciBmcm9tIHZhcmlvdXMg
Zm9ybXMgb2YgRVhQRUNUX0NBTEwuCi0gIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYSwg
RG9BKDIpKTsKLSAgRXhwZWN0YXRpb24gZTMgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpLldpdGgo
Xyk7Ci0gIHsKLSAgICBTZXF1ZW5jZSBzOwotICAgIEV4cGVjdGF0aW9uIGU0ID0gRVhQRUNUX0NB
TEwoYSwgRG9BKDQpKS5UaW1lcygxKTsKLSAgICBFeHBlY3RhdGlvbiBlNSA9IEVYUEVDVF9DQUxM
KGEsIERvQSg1KSkuSW5TZXF1ZW5jZShzKTsKLSAgfQotICBFeHBlY3RhdGlvbiBlNiA9IEVYUEVD
VF9DQUxMKGEsIERvQSg2KSkuQWZ0ZXIoZTIpOwotICBFeHBlY3RhdGlvbiBlNyA9IEVYUEVDVF9D
QUxMKGEsIERvQSg3KSkuV2lsbE9uY2UoUmV0dXJuKCkpOwotICBFeHBlY3RhdGlvbiBlOCA9IEVY
UEVDVF9DQUxMKGEsIERvQSg4KSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwotICBFeHBlY3Rh
dGlvbiBlOSA9IEVYUEVDVF9DQUxMKGEsIERvQSg5KSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwot
Ci0gIEV4cGVjdGF0aW9uIGUxMCA9IGUyOyAgLy8gQ29weSBjdG9yLgotCi0gIEVYUEVDVF9USEFU
KGUxLCBOZShlMikpOwotICBFWFBFQ1RfVEhBVChlMiwgRXEoZTEwKSk7Ci0KLSAgYS5Eb0EoMik7
Ci0gIGEuRG9BKDMpOwotICBhLkRvQSg0KTsKLSAgYS5Eb0EoNSk7Ci0gIGEuRG9BKDYpOwotICBh
LkRvQSg3KTsKLSAgYS5Eb0EoOCk7Ci0gIGEuRG9BKDkpOwotfQotCi1URVNUKEV4cGVjdGF0aW9u
VGVzdCwgQXNzaWdubWVudFdvcmtzKSB7Ci0gIE1vY2tBIGE7Ci0gIEV4cGVjdGF0aW9uIGUxOwot
ICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0KLSAgRVhQRUNUX1RI
QVQoZTEsIE5lKGUyKSk7Ci0KLSAgZTEgPSBlMjsKLSAgRVhQRUNUX1RIQVQoZTEsIEVxKGUyKSk7
Ci0KLSAgYS5Eb0EoMSk7Ci19Ci0KLS8vIFRlc3RzIEV4cGVjdGF0aW9uU2V0LgotCi1URVNUKEV4
cGVjdGF0aW9uU2V0VGVzdCwgTWVtYmVyVHlwZXNBcmVDb3JyZWN0KSB7Ci0gIDo6dGVzdGluZzo6
U3RhdGljQXNzZXJ0VHlwZUVxPEV4cGVjdGF0aW9uLCBFeHBlY3RhdGlvblNldDo6dmFsdWVfdHlw
ZT4oKTsKLX0KLQotVEVTVChFeHBlY3RhdGlvblNldFRlc3QsIENvbnN0cnVjdG9yc1dvcmspIHsK
LSAgTW9ja0EgYTsKLQotICBFeHBlY3RhdGlvbiBlMTsKLSAgY29uc3QgRXhwZWN0YXRpb24gZTI7
Ci0gIEV4cGVjdGF0aW9uU2V0IGVzMTsgIC8vIERlZmF1bHQgY3Rvci4KLSAgRXhwZWN0YXRpb25T
ZXQgZXMyID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsgIC8vIEN0b3IgZnJvbSBFWFBFQ1RfQ0FM
TC4KLSAgRXhwZWN0YXRpb25TZXQgZXMzID0gZTE7ICAvLyBDdG9yIGZyb20gRXhwZWN0YXRpb24u
Ci0gIEV4cGVjdGF0aW9uU2V0IGVzNChlMSk7ICAgLy8gQ3RvciBmcm9tIEV4cGVjdGF0aW9uOyBh
bHRlcm5hdGl2ZSBzeW50YXguCi0gIEV4cGVjdGF0aW9uU2V0IGVzNSA9IGUyOyAgLy8gQ3RvciBm
cm9tIGNvbnN0IEV4cGVjdGF0aW9uLgotICBFeHBlY3RhdGlvblNldCBlczYoZTIpOyAgIC8vIEN0
b3IgZnJvbSBjb25zdCBFeHBlY3RhdGlvbjsgYWx0ZXJuYXRpdmUgc3ludGF4LgotICBFeHBlY3Rh
dGlvblNldCBlczcgPSBlczI7ICAvLyBDb3B5IGN0b3IuCi0KLSAgRVhQRUNUX0VRKDAsIGVzMS5z
aXplKCkpOwotICBFWFBFQ1RfRVEoMSwgZXMyLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgxLCBlczMu
c2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDEsIGVzNC5zaXplKCkpOwotICBFWFBFQ1RfRVEoMSwgZXM1
LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgxLCBlczYuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDEsIGVz
Ny5zaXplKCkpOwotCi0gIEVYUEVDVF9USEFUKGVzMywgTmUoZXMyKSk7Ci0gIEVYUEVDVF9USEFU
KGVzNCwgRXEoZXMzKSk7Ci0gIEVYUEVDVF9USEFUKGVzNSwgRXEoZXM0KSk7Ci0gIEVYUEVDVF9U
SEFUKGVzNiwgRXEoZXM1KSk7Ci0gIEVYUEVDVF9USEFUKGVzNywgRXEoZXMyKSk7Ci0gIGEuRG9B
KDEpOwotfQotCi1URVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwgQXNzaWdubWVudFdvcmtzKSB7Ci0g
IEV4cGVjdGF0aW9uU2V0IGVzMTsKLSAgRXhwZWN0YXRpb25TZXQgZXMyID0gRXhwZWN0YXRpb24o
KTsKLQotICBlczEgPSBlczI7Ci0gIEVYUEVDVF9FUSgxLCBlczEuc2l6ZSgpKTsKLSAgRVhQRUNU
X1RIQVQoKihlczEuYmVnaW4oKSksIEVxKEV4cGVjdGF0aW9uKCkpKTsKLSAgRVhQRUNUX1RIQVQo
ZXMxLCBFcShlczIpKTsKLX0KLQotVEVTVChFeHBlY3RhdGlvblNldFRlc3QsIEluc2VydGlvbldv
cmtzKSB7Ci0gIEV4cGVjdGF0aW9uU2V0IGVzMTsKLSAgRXhwZWN0YXRpb24gZTE7Ci0gIGVzMSAr
PSBlMTsKLSAgRVhQRUNUX0VRKDEsIGVzMS5zaXplKCkpOwotICBFWFBFQ1RfVEhBVCgqKGVzMS5i
ZWdpbigpKSwgRXEoZTEpKTsKLQotICBNb2NrQSBhOwotICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVD
VF9DQUxMKGEsIERvQSgxKSk7Ci0gIGVzMSArPSBlMjsKLSAgRVhQRUNUX0VRKDIsIGVzMS5zaXpl
KCkpOwotCi0gIEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdDEgPSBlczEuYmVnaW4o
KTsKLSAgRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0MiA9IGl0MTsKLSAgKytpdDI7
Ci0gIEVYUEVDVF9UUlVFKCppdDEgPT0gZTEgfHwgKml0MiA9PSBlMSk7ICAvLyBlMSBtdXN0IGJl
IGluIHRoZSBzZXQuCi0gIEVYUEVDVF9UUlVFKCppdDEgPT0gZTIgfHwgKml0MiA9PSBlMik7ICAv
LyBlMiBtdXN0IGJlIGluIHRoZSBzZXQgdG9vLgotICBhLkRvQSgxKTsKLX0KLQotVEVTVChFeHBl
Y3RhdGlvblNldFRlc3QsIFNpemVXb3JrcykgewotICBFeHBlY3RhdGlvblNldCBlczsKLSAgRVhQ
RUNUX0VRKDAsIGVzLnNpemUoKSk7Ci0KLSAgZXMgKz0gRXhwZWN0YXRpb24oKTsKLSAgRVhQRUNU
X0VRKDEsIGVzLnNpemUoKSk7Ci0KLSAgTW9ja0EgYTsKLSAgZXMgKz0gRVhQRUNUX0NBTEwoYSwg
RG9BKDEpKTsKLSAgRVhQRUNUX0VRKDIsIGVzLnNpemUoKSk7Ci0KLSAgYS5Eb0EoMSk7Ci19Ci0K
LVRFU1QoRXhwZWN0YXRpb25TZXRUZXN0LCBJc0VudW1lcmFibGUpIHsKLSAgRXhwZWN0YXRpb25T
ZXQgZXM7Ci0gIEVYUEVDVF9UUlVFKGVzLmJlZ2luKCkgPT0gZXMuZW5kKCkpOwotCi0gIGVzICs9
IEV4cGVjdGF0aW9uKCk7Ci0gIEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVz
LmJlZ2luKCk7Ci0gIEVYUEVDVF9UUlVFKGl0ICE9IGVzLmVuZCgpKTsKLSAgRVhQRUNUX1RIQVQo
Kml0LCBFcShFeHBlY3RhdGlvbigpKSk7Ci0gICsraXQ7Ci0gIEVYUEVDVF9UUlVFKGl0PT0gZXMu
ZW5kKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgLkFmdGVyKCkgY2xhdXNlLgotCi1URVNUKEFmdGVy
VGVzdCwgU3VjY2VlZHNXaGVuUGFydGlhbE9yZGVySXNTYXRpc2ZpZWQpIHsKLSAgTW9ja0EgYTsK
LSAgRXhwZWN0YXRpb25TZXQgZXM7Ci0gIGVzICs9IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0g
IGVzICs9IEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSgzKSkK
LSAgICAgIC5BZnRlcihlcyk7Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDIpOwotICBhLkRvQSgz
KTsKLX0KLQotVEVTVChBZnRlclRlc3QsIFN1Y2NlZWRzV2hlblRvdGFsT3JkZXJJc1NhdGlzZmll
ZCkgewotICBNb2NrQSBhOwotICBNb2NrQiBiOwotICAvLyBUaGUgZm9sbG93aW5nIGFsc28gdmVy
aWZpZXMgdGhhdCBjb25zdCBFeHBlY3RhdGlvbiBvYmplY3RzIHdvcmsKLSAgLy8gdG9vLiAgRG8g
bm90IHJlbW92ZSB0aGUgY29uc3QgbW9kaWZpZXJzLgotICBjb25zdCBFeHBlY3RhdGlvbiBlMSA9
IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIGNvbnN0IEV4cGVjdGF0aW9uIGUyID0gRVhQRUNU
X0NBTEwoYiwgRG9CKCkpCi0gICAgICAuVGltZXMoMikKLSAgICAgIC5BZnRlcihlMSk7Ci0gIEVY
UEVDVF9DQUxMKGEsIERvQSgyKSkuQWZ0ZXIoZTIpOwotCi0gIGEuRG9BKDEpOwotICBiLkRvQigp
OwotICBiLkRvQigpOwotICBhLkRvQSgyKTsKLX0KLQotLy8gQ2FsbHMgbXVzdCBiZSBpbiBzdHJp
Y3Qgb3JkZXIgd2hlbiBzcGVjaWZpZWQgc28gdXNpbmcgLkFmdGVyKCkuCi1URVNUKEFmdGVyVGVz
dCwgQ2FsbHNNdXN0QmVJblN0cmljdE9yZGVyV2hlblNwZWNpZmllZFNvMSkgewotICBNb2NrQSBh
OwotICBNb2NrQiBiOwotCi0gIC8vIERlZmluZSBvcmRlcmluZzoKLSAgLy8gICBhLkRvQSgxKSA9
PT4gYi5Eb0IoKSA9PT4gYS5Eb0EoMikKLSAgRXhwZWN0YXRpb24gZTEgPSBFWFBFQ1RfQ0FMTChh
LCBEb0EoMSkpOwotICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAg
ICAgLkFmdGVyKGUxKTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDIpKQotICAgICAgLkFmdGVyKGUy
KTsKLQotICBhLkRvQSgxKTsKLQotICAvLyBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgRG9CKCku
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGEuRG9BKDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1
bmN0aW9uIGNhbGwiKTsKLQotICBiLkRvQigpOwotICBhLkRvQSgyKTsKLX0KLQotLy8gQ2FsbHMg
bXVzdCBiZSBpbiBzdHJpY3Qgb3JkZXIgd2hlbiBzcGVjaWZpZWQgc28gdXNpbmcgLkFmdGVyKCku
Ci1URVNUKEFmdGVyVGVzdCwgQ2FsbHNNdXN0QmVJblN0cmljdE9yZGVyV2hlblNwZWNpZmllZFNv
MikgewotICBNb2NrQSBhOwotICBNb2NrQiBiOwotCi0gIC8vIERlZmluZSBvcmRlcmluZzoKLSAg
Ly8gICBhLkRvQSgxKSA9PT4gYi5Eb0IoKSAqIDIgPT0+IGEuRG9BKDIpCi0gIEV4cGVjdGF0aW9u
IGUxID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1Rf
Q0FMTChiLCBEb0IoKSkKLSAgICAgIC5UaW1lcygyKQotICAgICAgLkFmdGVyKGUxKTsKLSAgRVhQ
RUNUX0NBTEwoYSwgRG9BKDIpKQotICAgICAgLkFmdGVyKGUyKTsKLQotICBhLkRvQSgxKTsKLSAg
Yi5Eb0IoKTsKLQotICAvLyBNYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHNlY29uZCBEb0Io
KS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYS5Eb0EoMiksICJVbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCIpOwotCi0gIGIuRG9CKCk7Ci0gIGEuRG9BKDIpOwotfQotCi0vLyBDYWxs
cyBtdXN0IHNhdGlzZnkgdGhlIHBhcnRpYWwgb3JkZXIgd2hlbiBzcGVjaWZpZWQgc28uCi1URVNU
KEFmdGVyVGVzdCwgQ2FsbHNNdXN0U2F0aXNmeVBhcnRpYWxPcmRlcldoZW5TcGVjaWZpZWRTbykg
ewotICBNb2NrQSBhOwotICBPTl9DQUxMKGEsIFJldHVyblJlc3VsdChfKSkKLSAgICAgIC5XaWxs
QnlEZWZhdWx0KFJldHVybihSZXN1bHQoKSkpOwotCi0gIC8vIERlZmluZSBvcmRlcmluZzoKLSAg
Ly8gICBhLkRvQSgxKSA9PT4KLSAgLy8gICBhLkRvQSgyKSA9PT4gYS5SZXR1cm5SZXN1bHQoMykK
LSAgRXhwZWN0YXRpb24gZSA9IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIGNvbnN0IEV4cGVj
dGF0aW9uU2V0IGVzID0gRVhQRUNUX0NBTEwoYSwgRG9BKDIpKTsKLSAgRVhQRUNUX0NBTEwoYSwg
UmV0dXJuUmVzdWx0KDMpKQotICAgICAgLkFmdGVyKGUsIGVzKTsKLQotICAvLyBNYXkgb25seSBi
ZSBjYWxsZWQgbGFzdC4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYS5SZXR1cm5SZXN1bHQo
MyksICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0gIGEuRG9BKDIpOwotICBh
LkRvQSgxKTsKLSAgYS5SZXR1cm5SZXN1bHQoMyk7Ci19Ci0KLS8vIENhbGxzIG11c3Qgc2F0aXNm
eSB0aGUgcGFydGlhbCBvcmRlciB3aGVuIHNwZWNpZmllZCBzby4KLVRFU1QoQWZ0ZXJUZXN0LCBD
YWxsc011c3RTYXRpc2Z5UGFydGlhbE9yZGVyV2hlblNwZWNpZmllZFNvMikgewotICBNb2NrQSBh
OwotCi0gIC8vIERlZmluZSBvcmRlcmluZzoKLSAgLy8gICBhLkRvQSgxKSA9PT4KLSAgLy8gICBh
LkRvQSgyKSA9PT4gYS5Eb0EoMykKLSAgRXhwZWN0YXRpb24gZSA9IEVYUEVDVF9DQUxMKGEsIERv
QSgxKSk7Ci0gIGNvbnN0IEV4cGVjdGF0aW9uU2V0IGVzID0gRVhQRUNUX0NBTEwoYSwgRG9BKDIp
KTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDMpKQotICAgICAgLkFmdGVyKGUsIGVzKTsKLQotICBh
LkRvQSgyKTsKLQotICAvLyBNYXkgb25seSBiZSBjYWxsZWQgbGFzdC4KLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoYS5Eb0EoMyksICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwot
Ci0gIGEuRG9BKDEpOwotICBhLkRvQSgzKTsKLX0KLQotLy8gLkFmdGVyKCkgY2FuIGJlIGNvbWJp
bmVkIHdpdGggLkluU2VxdWVuY2UoKS4KLVRFU1QoQWZ0ZXJUZXN0LCBDYW5CZVVzZWRXaXRoSW5T
ZXF1ZW5jZSkgewotICBNb2NrQSBhOwotICBTZXF1ZW5jZSBzOwotICBFeHBlY3RhdGlvbiBlID0g
RVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDIpKS5JblNlcXVl
bmNlKHMpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpCi0gICAgICAuSW5TZXF1ZW5jZShzKQot
ICAgICAgLkFmdGVyKGUpOwotCi0gIGEuRG9BKDEpOwotCi0gIC8vIE1heSBvbmx5IGJlIGFmdGVy
IERvQSgyKS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYS5Eb0EoMyksICJVbmV4cGVjdGVk
IG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0gIGEuRG9BKDIpOwotICBhLkRvQSgzKTsKLX0KLQot
Ly8gLkFmdGVyKCkgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KLVRFU1QoQWZ0ZXJUZXN0
LCBDYW5CZUNhbGxlZE1hbnlUaW1lcykgewotICBNb2NrQSBhOwotICBFeHBlY3RhdGlvbiBlMSA9
IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwo
YSwgRG9BKDIpKTsKLSAgRXhwZWN0YXRpb24gZTMgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpOwot
ICBFWFBFQ1RfQ0FMTChhLCBEb0EoNCkpCi0gICAgICAuQWZ0ZXIoZTEpCi0gICAgICAuQWZ0ZXIo
ZTIpCi0gICAgICAuQWZ0ZXIoZTMpOwotCi0gIGEuRG9BKDMpOwotICBhLkRvQSgxKTsKLSAgYS5E
b0EoMik7Ci0gIGEuRG9BKDQpOwotfQotCi0vLyAuQWZ0ZXIoKSBhY2NlcHRzIHVwIHRvIDUgYXJn
dW1lbnRzLgotVEVTVChBZnRlclRlc3QsIEFjY2VwdHNVcFRvRml2ZUFyZ3VtZW50cykgewotICBN
b2NrQSBhOwotICBFeHBlY3RhdGlvbiBlMSA9IEVYUEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIEV4
cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYSwgRG9BKDIpKTsKLSAgRXhwZWN0YXRpb24gZTMg
PSBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpOwotICBFeHBlY3RhdGlvblNldCBlczEgPSBFWFBFQ1Rf
Q0FMTChhLCBEb0EoNCkpOwotICBFeHBlY3RhdGlvblNldCBlczIgPSBFWFBFQ1RfQ0FMTChhLCBE
b0EoNSkpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoNikpCi0gICAgICAuQWZ0ZXIoZTEsIGUyLCBl
MywgZXMxLCBlczIpOwotCi0gIGEuRG9BKDUpOwotICBhLkRvQSgyKTsKLSAgYS5Eb0EoNCk7Ci0g
IGEuRG9BKDEpOwotICBhLkRvQSgzKTsKLSAgYS5Eb0EoNik7Ci19Ci0KLS8vIC5BZnRlcigpIGFs
bG93cyBpbnB1dCB0byBjb250YWluIGR1cGxpY2F0ZWQgRXhwZWN0YXRpb25zLgotVEVTVChBZnRl
clRlc3QsIEFjY2VwdHNEdXBsaWNhdGVkSW5wdXQpIHsKLSAgTW9ja0EgYTsKLSAgT05fQ0FMTChh
LCBSZXR1cm5SZXN1bHQoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oUmVzdWx0KCkp
KTsKLQotICAvLyBEZWZpbmUgb3JkZXJpbmc6Ci0gIC8vICAgRG9BKDEpID09PgotICAvLyAgIERv
QSgyKSA9PT4gUmV0dXJuUmVzdWx0KDMpCi0gIEV4cGVjdGF0aW9uIGUxID0gRVhQRUNUX0NBTEwo
YSwgRG9BKDEpKTsKLSAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOwot
ICBFeHBlY3RhdGlvblNldCBlczsKLSAgZXMgKz0gZTE7Ci0gIGVzICs9IGUyOwotICBFWFBFQ1Rf
Q0FMTChhLCBSZXR1cm5SZXN1bHQoMykpCi0gICAgICAuQWZ0ZXIoZTEsIGUyLCBlcywgZTEpOwot
Ci0gIGEuRG9BKDEpOwotCi0gIC8vIE1heSBvbmx5IGJlIGFmdGVyIERvQSgyKS4KLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoYS5SZXR1cm5SZXN1bHQoMyksICJVbmV4cGVjdGVkIG1vY2sgZnVu
Y3Rpb24gY2FsbCIpOwotCi0gIGEuRG9BKDIpOwotICBhLlJldHVyblJlc3VsdCgzKTsKLX0KLQot
Ly8gQW4gRXhwZWN0YXRpb24gYWRkZWQgdG8gYW4gRXhwZWN0YXRpb25TZXQgYWZ0ZXIgaXQgaGFz
IGJlZW4gdXNlZCBpbgotLy8gYW4gLkFmdGVyKCkgaGFzIG5vIGVmZmVjdC4KLVRFU1QoQWZ0ZXJU
ZXN0LCBDaGFuZ2VzVG9FeHBlY3RhdGlvblNldEhhdmVOb0VmZmVjdEFmdGVyd2FyZHMpIHsKLSAg
TW9ja0EgYTsKLSAgRXhwZWN0YXRpb25TZXQgZXMxID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsK
LSAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOwotICBFWFBFQ1RfQ0FM
TChhLCBEb0EoMykpCi0gICAgICAuQWZ0ZXIoZXMxKTsKLSAgZXMxICs9IGUyOwotCi0gIGEuRG9B
KDEpOwotICBhLkRvQSgzKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xl
IE1vY2sgY29ycmVjdGx5IGhhbmRsZXMgY2FsbHMgdG8gbW9jayBmdW5jdGlvbnMKLS8vIGFmdGVy
IGEgbW9jayBvYmplY3Qgb3duaW5nIG9uZSBvZiB0aGVpciBwcmUtcmVxdWlzaXRlcyBoYXMgZGll
ZC4KLQotLy8gVGVzdHMgdGhhdCBjYWxscyB0aGF0IHNhdGlzZnkgdGhlIG9yaWdpbmFsIHNwZWMg
YXJlIHN1Y2Nlc3NmdWwuCi1URVNUKERlbGV0aW5nTW9ja0Vhcmx5VGVzdCwgU3VjY2VzczEpIHsK
LSAgTW9ja0IqIGNvbnN0IGIxID0gbmV3IE1vY2tCOwotICBNb2NrQSogY29uc3QgYSA9IG5ldyBN
b2NrQTsKLSAgTW9ja0IqIGNvbnN0IGIyID0gbmV3IE1vY2tCOwotCi0gIHsKLSAgICBJblNlcXVl
bmNlIGR1bW15OwotICAgIEVYUEVDVF9DQUxMKCpiMSwgRG9CKF8pKQotICAgICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqYSwgQmluYXJ5KF8sIF8pKQotICAgICAg
ICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4odHJ1
ZSkpOwotICAgIEVYUEVDVF9DQUxMKCpiMiwgRG9CKF8pKQotICAgICAgICAuVGltZXMoQW55TnVt
YmVyKCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotICB9Ci0KLSAgRVhQ
RUNUX0VRKDEsIGIxLT5Eb0IoMSkpOwotICBkZWxldGUgYjE7Ci0gIC8vIGEncyBwcmUtcmVxdWlz
aXRlIGhhcyBkaWVkLgotICBFWFBFQ1RfVFJVRShhLT5CaW5hcnkoMCwgMSkpOwotICBkZWxldGUg
YjI7Ci0gIC8vIGEncyBzdWNjZXNzb3IgaGFzIGRpZWQuCi0gIEVYUEVDVF9UUlVFKGEtPkJpbmFy
eSgxLCAyKSk7Ci0gIGRlbGV0ZSBhOwotfQotCi0vLyBUZXN0cyB0aGF0IGNhbGxzIHRoYXQgc2F0
aXNmeSB0aGUgb3JpZ2luYWwgc3BlYyBhcmUgc3VjY2Vzc2Z1bC4KLVRFU1QoRGVsZXRpbmdNb2Nr
RWFybHlUZXN0LCBTdWNjZXNzMikgewotICBNb2NrQiogY29uc3QgYjEgPSBuZXcgTW9ja0I7Ci0g
IE1vY2tBKiBjb25zdCBhID0gbmV3IE1vY2tBOwotICBNb2NrQiogY29uc3QgYjIgPSBuZXcgTW9j
a0I7Ci0KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0gICAgRVhQRUNUX0NBTEwoKmIxLCBE
b0IoXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotICAgIEVYUEVDVF9DQUxMKCph
LCBCaW5hcnkoXywgXykpCi0gICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgRVhQRUNU
X0NBTEwoKmIyLCBEb0IoXykpCi0gICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKLSAgICAgICAg
LldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0gIH0KLQotICBkZWxldGUgYTsgIC8vIGEgaXMg
dHJpdmlhbGx5IHNhdGlzZmllZC4KLSAgRVhQRUNUX0VRKDEsIGIxLT5Eb0IoMSkpOwotICBFWFBF
Q1RfRVEoMiwgYjItPkRvQigyKSk7Ci0gIGRlbGV0ZSBiMTsKLSAgZGVsZXRlIGIyOwotfQotCi0v
LyBUZXN0cyB0aGF0IGl0J3MgT0sgdG8gZGVsZXRlIGEgbW9jayBvYmplY3QgaXRzZWxmIGluIGl0
cyBhY3Rpb24uCi0KLS8vIFN1cHByZXNzZXMgd2FybmluZyBvbiB1bnJlZmVyZW5jZWQgZm9ybWFs
IHBhcmFtZXRlciBpbiBNU1ZDIHdpdGgKLS8vIC1XNC4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFn
bWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYK
LQotQUNUSU9OX1AoRGVsZXRlLCBwdHIpIHsgZGVsZXRlIHB0cjsgfQotCi0jaWZkZWYgX01TQ19W
RVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLVRFU1QoRGVsZXRpbmdNb2NrRWFy
bHlUZXN0LCBDYW5EZWxldGVTZWxmSW5BY3Rpb25SZXR1cm5pbmdWb2lkKSB7Ci0gIE1vY2tBKiBj
b25zdCBhID0gbmV3IE1vY2tBOwotICBFWFBFQ1RfQ0FMTCgqYSwgRG9BKF8pKS5XaWxsT25jZShE
ZWxldGUoYSkpOwotICBhLT5Eb0EoNDIpOyAgLy8gVGhpcyB3aWxsIGNhdXNlIGEgdG8gYmUgZGVs
ZXRlZC4KLX0KLQotVEVTVChEZWxldGluZ01vY2tFYXJseVRlc3QsIENhbkRlbGV0ZVNlbGZJbkFj
dGlvblJldHVybmluZ1ZhbHVlKSB7Ci0gIE1vY2tBKiBjb25zdCBhID0gbmV3IE1vY2tBOwotICBF
WFBFQ1RfQ0FMTCgqYSwgUmV0dXJuUmVzdWx0KF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKERl
bGV0ZShhKSwgUmV0dXJuKFJlc3VsdCgpKSkpOwotICBhLT5SZXR1cm5SZXN1bHQoNDIpOyAgLy8g
VGhpcyB3aWxsIGNhdXNlIGEgdG8gYmUgZGVsZXRlZC4KLX0KLQotLy8gVGVzdHMgdGhhdCBjYWxs
cyB0aGF0IHZpb2xhdGUgdGhlIG9yaWdpbmFsIHNwZWMgeWllbGQgZmFpbHVyZXMuCi1URVNUKERl
bGV0aW5nTW9ja0Vhcmx5VGVzdCwgRmFpbHVyZTEpIHsKLSAgTW9ja0IqIGNvbnN0IGIxID0gbmV3
IE1vY2tCOwotICBNb2NrQSogY29uc3QgYSA9IG5ldyBNb2NrQTsKLSAgTW9ja0IqIGNvbnN0IGIy
ID0gbmV3IE1vY2tCOwotCi0gIHsKLSAgICBJblNlcXVlbmNlIGR1bW15OwotICAgIEVYUEVDVF9D
QUxMKCpiMSwgRG9CKF8pKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKLSAgICBFWFBF
Q1RfQ0FMTCgqYSwgQmluYXJ5KF8sIF8pKQotICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwot
ICAgIEVYUEVDVF9DQUxMKCpiMiwgRG9CKF8pKQotICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkp
Ci0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotICB9Ci0KLSAgZGVsZXRlIGE7
ICAvLyBhIGlzIHRyaXZpYWxseSBzYXRpc2ZpZWQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsKLSAgICBiMi0+RG9CKDIpOwotICB9LCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwi
KTsKLSAgRVhQRUNUX0VRKDEsIGIxLT5Eb0IoMSkpOwotICBkZWxldGUgYjE7Ci0gIGRlbGV0ZSBi
MjsKLX0KLQotLy8gVGVzdHMgdGhhdCBjYWxscyB0aGF0IHZpb2xhdGUgdGhlIG9yaWdpbmFsIHNw
ZWMgeWllbGQgZmFpbHVyZXMuCi1URVNUKERlbGV0aW5nTW9ja0Vhcmx5VGVzdCwgRmFpbHVyZTIp
IHsKLSAgTW9ja0IqIGNvbnN0IGIxID0gbmV3IE1vY2tCOwotICBNb2NrQSogY29uc3QgYSA9IG5l
dyBNb2NrQTsKLSAgTW9ja0IqIGNvbnN0IGIyID0gbmV3IE1vY2tCOwotCi0gIHsKLSAgICBJblNl
cXVlbmNlIGR1bW15OwotICAgIEVYUEVDVF9DQUxMKCpiMSwgRG9CKF8pKTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqYSwgQmluYXJ5KF8sIF8pKQotICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotICAg
IEVYUEVDVF9DQUxMKCpiMiwgRG9CKF8pKQotICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwot
ICB9Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoZGVsZXRlIGIxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoYS0+QmluYXJ5KDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5l
eHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
YjItPkRvQigxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIik7Ci0gIGRlbGV0ZSBhOwotICBkZWxldGUgYjI7Ci19Ci0KLWNsYXNzIEV2
ZW5OdW1iZXJDYXJkaW5hbGl0eSA6IHB1YmxpYyBDYXJkaW5hbGl0eUludGVyZmFjZSB7Ci0gcHVi
bGljOgotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXRpc2Z5
IHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50
KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAgcmV0dXJuIGNhbGxfY291bnQgJSAyID09IDA7
Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXR1
cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxD
b3VudChpbnQgLyogY2FsbF9jb3VudCAqLykgY29uc3QgewotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotCi0gIC8vIERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiY2FsbGVk
IGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsKLSAgfQotfTsKLQotQ2FyZGluYWxpdHkgRXZlbk51bWJl
cigpIHsKLSAgcmV0dXJuIENhcmRpbmFsaXR5KG5ldyBFdmVuTnVtYmVyQ2FyZGluYWxpdHkpOwot
fQotCi1URVNUKEV4cGVjdGF0aW9uQmFzZVRlc3QsCi0gICAgIEFsbFByZXJlcXVpc2l0ZXNBcmVT
YXRpc2ZpZWRXb3Jrc0Zvck5vbk1vbm90b25pY0NhcmRpbmFsaXR5KSB7Ci0gIE1vY2tBKiBhID0g
bmV3IE1vY2tBOwotICBTZXF1ZW5jZSBzOwotCi0gIEVYUEVDVF9DQUxMKCphLCBEb0EoMSkpCi0g
ICAgICAuVGltZXMoRXZlbk51bWJlcigpKQotICAgICAgLkluU2VxdWVuY2Uocyk7Ci0gIEVYUEVD
VF9DQUxMKCphLCBEb0EoMikpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5T
ZXF1ZW5jZShzKTsKLSAgRVhQRUNUX0NBTEwoKmEsIERvQSgzKSkKLSAgICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci0KLSAgYS0+RG9BKDMpOwotICBhLT5Eb0EoMSk7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKGEtPkRvQSgyKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGRlbGV0ZSBhLCAidG8gYmUgY2FsbGVkIGV2ZW4gbnVt
YmVyIG9mIHRpbWVzIik7Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgdmVyaWZ5IHRoZSBt
ZXNzYWdlIGdlbmVyYXRlZCB3aGVuIGEgbW9jawotLy8gZnVuY3Rpb24gaXMgY2FsbGVkLgotCi1z
dHJ1Y3QgUHJpbnRhYmxlIHsKLX07Ci0KLWlubGluZSB2b2lkIG9wZXJhdG9yPDwoOjpzdGQ6Om9z
dHJlYW0mIG9zLCBjb25zdCBQcmludGFibGUmKSB7Ci0gIG9zIDw8ICJQcmludGFibGUiOwotfQot
Ci1zdHJ1Y3QgVW5wcmludGFibGUgewotICBVbnByaW50YWJsZSgpIDogdmFsdWUoMCkge30KLSAg
aW50IHZhbHVlOwotfTsKLQotY2xhc3MgTW9ja0MgewotIHB1YmxpYzoKLSAgTW9ja0MoKSB7fQot
Ci0gIE1PQ0tfTUVUSE9ENihWb2lkTWV0aG9kLCB2b2lkKGJvb2wgY29uZCwgaW50IG4sIHN0ZDo6
c3RyaW5nIHMsIHZvaWQqIHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFByaW50YWJsZSYgeCwgVW5wcmludGFibGUgeSkpOwotICBNT0NLX01FVEhPRDAoTm9uVm9pZE1l
dGhvZCwgaW50KCkpOyAgLy8gTk9MSU5UCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKE1vY2tDKTsKLX07Ci0KLWNsYXNzIFZlcmJvc2VGbGFnUHJlc2Vydmlu
Z0ZpeHR1cmUgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBWZXJib3Nl
RmxhZ1ByZXNlcnZpbmdGaXh0dXJlKCkKLSAgICAgIDogc2F2ZWRfdmVyYm9zZV9mbGFnXyhHTU9D
S19GTEFHKHZlcmJvc2UpKSB7fQotCi0gIH5WZXJib3NlRmxhZ1ByZXNlcnZpbmdGaXh0dXJlKCkg
eyBHTU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfdmVyYm9zZV9mbGFnXzsgfQotCi0gcHJpdmF0
ZToKLSAgY29uc3Qgc3RkOjpzdHJpbmcgc2F2ZWRfdmVyYm9zZV9mbGFnXzsKLQotICBHVEVTVF9E
SVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZlcmJvc2VGbGFnUHJlc2VydmluZ0ZpeHR1cmUpOwot
fTsKLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8gVGVzdHMgdGhhdCBh
biB1bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCBvbiBhIG5hZ2d5IG1vY2sKLS8vIGdl
bmVyYXRlcyBhIHdhcm5pbmcgd2l0aG91dCB0aGUgc3RhY2sgdHJhY2Ugd2hlbgotLy8gLS1nbW9j
a192ZXJib3NlPXdhcm5pbmcgaXMgc3BlY2lmaWVkLgotVEVTVChGdW5jdGlvbkNhbGxNZXNzYWdl
VGVzdCwKLSAgICAgVW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5TW9ja0dlbmVyYXRlc05vU3RhY2tU
cmFjZVdoZW5WZXJib3NlV2FybmluZykgewotICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga1dhcm5p
bmdWZXJib3NpdHk7Ci0gIE5hZ2d5TW9jazxNb2NrQz4gYzsKLSAgQ2FwdHVyZVN0ZG91dCgpOwot
ICBjLlZvaWRNZXRob2QoZmFsc2UsIDUsICJIaSIsIE5VTEwsIFByaW50YWJsZSgpLCBVbnByaW50
YWJsZSgpKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRvdXQo
KTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIkdNT0NLIFdBUk5JTkciLCBv
dXRwdXQpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzTm90U3Vic3RyaW5nLCAiU3RhY2sgdHJh
Y2U6Iiwgb3V0cHV0KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbiB1bmludGVyZXN0aW5nIG1vY2sg
ZnVuY3Rpb24gY2FsbCBvbiBhIG5hZ2d5IG1vY2sKLS8vIGdlbmVyYXRlcyBhIHdhcm5pbmcgY29u
dGFpbmluZyB0aGUgc3RhY2sgdHJhY2Ugd2hlbgotLy8gLS1nbW9ja192ZXJib3NlPWluZm8gaXMg
c3BlY2lmaWVkLgotVEVTVChGdW5jdGlvbkNhbGxNZXNzYWdlVGVzdCwKLSAgICAgVW5pbnRlcmVz
dGluZ0NhbGxPbk5hZ2d5TW9ja0dlbmVyYXRlc0Z5aVdpdGhTdGFja1RyYWNlV2hlblZlcmJvc2VJ
bmZvKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrSW5mb1ZlcmJvc2l0eTsKLSAgTmFnZ3lN
b2NrPE1vY2tDPiBjOwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGMuVm9pZE1ldGhvZChmYWxzZSwg
NSwgIkhpIiwgTlVMTCwgUHJpbnRhYmxlKCksIFVucHJpbnRhYmxlKCkpOwotICBjb25zdCBzdGQ6
OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKElzU3Vic3RyaW5nLCAiR01PQ0sgV0FSTklORyIsIG91dHB1dCk7Ci0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJTdGFjayB0cmFjZToiLCBvdXRwdXQpOwotCi0jIGlmbmRl
ZiBOREVCVUcKLQotICAvLyBXZSBjaGVjayB0aGUgc3RhY2sgdHJhY2UgY29udGVudCBpbiBkYmct
bW9kZSBvbmx5LCBhcyBvcHQtbW9kZQotICAvLyBtYXkgaW5saW5lIHRoZSBjYWxsIHdlIGFyZSBp
bnRlcmVzdGVkIGluIHNlZWluZy4KLQotICAvLyBWZXJpZmllcyB0aGF0IGEgdm9pZCBtb2NrIGZ1
bmN0aW9uJ3MgbmFtZSBhcHBlYXJzIGluIHRoZSBzdGFjawotICAvLyB0cmFjZS4KLSAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIlZvaWRNZXRob2QoIiwgb3V0cHV0KTsKLQotICAv
LyBWZXJpZmllcyB0aGF0IGEgbm9uLXZvaWQgbW9jayBmdW5jdGlvbidzIG5hbWUgYXBwZWFycyBp
biB0aGUKLSAgLy8gc3RhY2sgdHJhY2UuCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgYy5Ob25Wb2lk
TWV0aG9kKCk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dDIgPSBHZXRDYXB0dXJlZFN0ZG91
dCgpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiTm9uVm9pZE1ldGhvZCgi
LCBvdXRwdXQyKTsKLQotIyBlbmRpZiAgLy8gTkRFQlVHCi19Ci0KLS8vIFRlc3RzIHRoYXQgYW4g
dW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgb24gYSBuYWdneSBtb2NrCi0vLyBjYXVz
ZXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlIHRvIGJlIHByaW50ZWQu
Ci1URVNUKEZ1bmN0aW9uQ2FsbE1lc3NhZ2VUZXN0LAotICAgICBVbmludGVyZXN0aW5nQ2FsbE9u
TmFnZ3lNb2NrUHJpbnRzQXJndW1lbnRzQW5kUmV0dXJuVmFsdWUpIHsKLSAgLy8gQSBub24tdm9p
ZCBtb2NrIGZ1bmN0aW9uLgotICBOYWdneU1vY2s8TW9ja0I+IGI7Ci0gIENhcHR1cmVTdGRvdXQo
KTsKLSAgYi5Eb0IoKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0MSA9IEdldENhcHR1cmVk
U3Rkb3V0KCk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCi0gICAgICBJc1N1YnN0cmluZywKLSAg
ICAgICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0
IHZhbHVlLlxuIgotICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0IoKVxuIgotICAgICAgIiAg
ICAgICAgICBSZXR1cm5zOiAwXG4iLCBvdXRwdXQxLmNfc3RyKCkpOwotICAvLyBNYWtlcyBzdXJl
IHRoZSByZXR1cm4gdmFsdWUgaXMgcHJpbnRlZC4KLQotICAvLyBBIHZvaWQgbW9jayBmdW5jdGlv
bi4KLSAgTmFnZ3lNb2NrPE1vY2tDPiBjOwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGMuVm9pZE1l
dGhvZChmYWxzZSwgNSwgIkhpIiwgTlVMTCwgUHJpbnRhYmxlKCksIFVucHJpbnRhYmxlKCkpOwot
ICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQyID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSAgRVhQ
RUNUX1RIQVQob3V0cHV0Mi5jX3N0cigpLAotICAgICAgICAgICAgICBDb250YWluc1JlZ2V4KAot
ICAgICAgICAgICAgICAgICAgIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0
dXJuaW5nIGRpcmVjdGx5XFwuXG4iCi0gICAgICAgICAgICAgICAgICAiICAgIEZ1bmN0aW9uIGNh
bGw6IFZvaWRNZXRob2QiCi0gICAgICAgICAgICAgICAgICAiXFwoZmFsc2UsIDUsIFwiSGlcIiwg
TlVMTCwgQC4rICIKLSAgICAgICAgICAgICAgICAgICJQcmludGFibGUsIDQtYnl0ZSBvYmplY3Qg
PDAwLTAwIDAwLTAwPlxcKSIpKTsKLSAgLy8gQSB2b2lkIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4g
dmFsdWUgdG8gcHJpbnQuCi19Ci0KLS8vIFRlc3RzIGhvdyB0aGUgLS1nbW9ja192ZXJib3NlIGZs
YWcgYWZmZWN0cyBHb29nbGUgTW9jaydzIG91dHB1dC4KLQotY2xhc3MgR01vY2tWZXJib3NlRmxh
Z1Rlc3QgOiBwdWJsaWMgVmVyYm9zZUZsYWdQcmVzZXJ2aW5nRml4dHVyZSB7Ci0gcHVibGljOgot
ICAvLyBWZXJpZmllcyB0aGF0IHRoZSBnaXZlbiBHb29nbGUgTW9jayBvdXRwdXQgaXMgY29ycmVj
dC4gIChXaGVuCi0gIC8vIHNob3VsZF9wcmludCBpcyB0cnVlLCB0aGUgb3V0cHV0IHNob3VsZCBt
YXRjaCB0aGUgZ2l2ZW4gcmVnZXggYW5kCi0gIC8vIGNvbnRhaW4gdGhlIGdpdmVuIGZ1bmN0aW9u
IG5hbWUgaW4gdGhlIHN0YWNrIHRyYWNlLiAgV2hlbiBpdCdzCi0gIC8vIGZhbHNlLCB0aGUgb3V0
cHV0IHNob3VsZCBiZSBlbXB0eS4pCi0gIHZvaWQgVmVyaWZ5T3V0cHV0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBvdXRwdXQsIGJvb2wgc2hvdWxkX3ByaW50LAotICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgZnVuY3Rpb25fbmFtZSkgewotICAgIGlmIChzaG91bGRfcHJpbnQp
IHsKLSAgICAgIEVYUEVDVF9USEFUKG91dHB1dC5jX3N0cigpLCBIYXNTdWJzdHIoZXhwZWN0ZWRf
c3Vic3RyaW5nKSk7Ci0jIGlmbmRlZiBOREVCVUcKLSAgICAgIC8vIFdlIGNoZWNrIHRoZSBzdGFj
ayB0cmFjZSBjb250ZW50IGluIGRiZy1tb2RlIG9ubHksIGFzIG9wdC1tb2RlCi0gICAgICAvLyBt
YXkgaW5saW5lIHRoZSBjYWxsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHNlZWluZy4KLSAgICAgIEVY
UEVDVF9USEFUKG91dHB1dC5jX3N0cigpLCBIYXNTdWJzdHIoZnVuY3Rpb25fbmFtZSkpOwotIyBl
bHNlCi0gICAgICAvLyBTdXBwcmVzc2VzICd1bnVzZWQgZnVuY3Rpb24gcGFyYW1ldGVyJyB3YXJu
aW5ncy4KLSAgICAgIHN0YXRpY19jYXN0PHZvaWQ+KGZ1bmN0aW9uX25hbWUpOwotIyBlbmRpZiAg
Ly8gTkRFQlVHCi0gICAgfSBlbHNlIHsKLSAgICAgIEVYUEVDVF9TVFJFUSgiIiwgb3V0cHV0LmNf
c3RyKCkpOwotICAgIH0KLSAgfQotCi0gIC8vIFRlc3RzIGhvdyB0aGUgZmxhZyBhZmZlY3RzIGV4
cGVjdGVkIGNhbGxzLgotICB2b2lkIFRlc3RFeHBlY3RlZENhbGwoYm9vbCBzaG91bGRfcHJpbnQp
IHsKLSAgICBNb2NrQSBhOwotICAgIEVYUEVDVF9DQUxMKGEsIERvQSg1KSk7Ci0gICAgRVhQRUNU
X0NBTEwoYSwgQmluYXJ5KF8sIDEpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsK
LQotICAgIC8vIEEgdm9pZC1yZXR1cm5pbmcgZnVuY3Rpb24uCi0gICAgQ2FwdHVyZVN0ZG91dCgp
OwotICAgIGEuRG9BKDUpOwotICAgIFZlcmlmeU91dHB1dCgKLSAgICAgICAgR2V0Q2FwdHVyZWRT
dGRvdXQoKSwKLSAgICAgICAgc2hvdWxkX3ByaW50LAotICAgICAgICAiTW9jayBmdW5jdGlvbiBj
YWxsIG1hdGNoZXMgRVhQRUNUX0NBTEwoYSwgRG9BKDUpKS4uLlxuIgotICAgICAgICAiICAgIEZ1
bmN0aW9uIGNhbGw6IERvQSg1KVxuIgotICAgICAgICAiU3RhY2sgdHJhY2U6XG4iLAotICAgICAg
ICAiRG9BIik7Ci0KLSAgICAvLyBBIG5vbi12b2lkLXJldHVybmluZyBmdW5jdGlvbi4KLSAgICBD
YXB0dXJlU3Rkb3V0KCk7Ci0gICAgYS5CaW5hcnkoMiwgMSk7Ci0gICAgVmVyaWZ5T3V0cHV0KAot
ICAgICAgICBHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICBzaG91bGRfcHJpbnQsCi0gICAg
ICAgICJNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTChhLCBCaW5hcnkoXywg
MSkpLi4uXG4iCi0gICAgICAgICIgICAgRnVuY3Rpb24gY2FsbDogQmluYXJ5KDIsIDEpXG4iCi0g
ICAgICAgICIgICAgICAgICAgUmV0dXJuczogdHJ1ZVxuIgotICAgICAgICAiU3RhY2sgdHJhY2U6
XG4iLAotICAgICAgICAiQmluYXJ5Iik7Ci0gIH0KLQotICAvLyBUZXN0cyBob3cgdGhlIGZsYWcg
YWZmZWN0cyB1bmludGVyZXN0aW5nIGNhbGxzIG9uIGEgbmFnZ3kgbW9jay4KLSAgdm9pZCBUZXN0
VW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5TW9jayhib29sIHNob3VsZF9wcmludCkgewotICAgIE5h
Z2d5TW9jazxNb2NrQT4gYTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBub3RlID0KLSAgICAgICAg
Ik5PVEU6IFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgYWJvdmUgd2FybmluZyB1bmxlc3MgdGhp
cyAiCi0gICAgICAgICJjYWxsIHNob3VsZCBub3QgaGFwcGVuLiAgRG8gbm90IHN1cHByZXNzIGl0
IGJ5IGJsaW5kbHkgYWRkaW5nICIKLSAgICAgICAgImFuIEVYUEVDVF9DQUxMKCkgaWYgeW91IGRv
bid0IG1lYW4gdG8gZW5mb3JjZSB0aGUgY2FsbC4gICIKLSAgICAgICAgIlNlZSBodHRwczovL2dp
dGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0Nv
b2tCb29rLm1kIyIKLSAgICAgICAgImtub3dpbmctd2hlbi10by1leHBlY3QgZm9yIGRldGFpbHMu
IjsKLQotICAgIC8vIEEgdm9pZC1yZXR1cm5pbmcgZnVuY3Rpb24uCi0gICAgQ2FwdHVyZVN0ZG91
dCgpOwotICAgIGEuRG9BKDUpOwotICAgIFZlcmlmeU91dHB1dCgKLSAgICAgICAgR2V0Q2FwdHVy
ZWRTdGRvdXQoKSwKLSAgICAgICAgc2hvdWxkX3ByaW50LAotICAgICAgICAiXG5HTU9DSyBXQVJO
SU5HOlxuIgotICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgLSByZXR1
cm5pbmcgZGlyZWN0bHkuXG4iCi0gICAgICAgICIgICAgRnVuY3Rpb24gY2FsbDogRG9BKDUpXG4i
ICsKLSAgICAgICAgbm90ZSwKLSAgICAgICAgIkRvQSIpOwotCi0gICAgLy8gQSBub24tdm9pZC1y
ZXR1cm5pbmcgZnVuY3Rpb24uCi0gICAgQ2FwdHVyZVN0ZG91dCgpOwotICAgIGEuQmluYXJ5KDIs
IDEpOwotICAgIFZlcmlmeU91dHB1dCgKLSAgICAgICAgR2V0Q2FwdHVyZWRTdGRvdXQoKSwKLSAg
ICAgICAgc2hvdWxkX3ByaW50LAotICAgICAgICAiXG5HTU9DSyBXQVJOSU5HOlxuIgotICAgICAg
ICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGVmYXVsdCB2
YWx1ZS5cbiIKLSAgICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBCaW5hcnkoMiwgMSlcbiIKLSAg
ICAgICAgIiAgICAgICAgICBSZXR1cm5zOiBmYWxzZVxuIiArCi0gICAgICAgIG5vdGUsCi0gICAg
ICAgICJCaW5hcnkiKTsKLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCAtLWdtb2NrX3ZlcmJvc2U9
aW5mbyBjYXVzZXMgYm90aCBleHBlY3RlZCBhbmQKLS8vIHVuaW50ZXJlc3RpbmcgY2FsbHMgdG8g
YmUgcmVwb3J0ZWQuCi1URVNUX0YoR01vY2tWZXJib3NlRmxhZ1Rlc3QsIEluZm8pIHsKLSAgR01P
Q0tfRkxBRyh2ZXJib3NlKSA9IGtJbmZvVmVyYm9zaXR5OwotICBUZXN0RXhwZWN0ZWRDYWxsKHRy
dWUpOwotICBUZXN0VW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5TW9jayh0cnVlKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCAtLWdtb2NrX3ZlcmJvc2U9d2FybmluZyBjYXVzZXMgdW5pbnRlcmVzdGluZyBj
YWxscyB0byBiZQotLy8gcmVwb3J0ZWQuCi1URVNUX0YoR01vY2tWZXJib3NlRmxhZ1Rlc3QsIFdh
cm5pbmcpIHsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtXYXJuaW5nVmVyYm9zaXR5OwotICBU
ZXN0RXhwZWN0ZWRDYWxsKGZhbHNlKTsKLSAgVGVzdFVuaW50ZXJlc3RpbmdDYWxsT25OYWdneU1v
Y2sodHJ1ZSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgLS1nbW9ja192ZXJib3NlPXdhcm5pbmcgY2F1
c2VzIG5laXRoZXIgZXhwZWN0ZWQgbm9yCi0vLyB1bmludGVyZXN0aW5nIGNhbGxzIHRvIGJlIHJl
cG9ydGVkLgotVEVTVF9GKEdNb2NrVmVyYm9zZUZsYWdUZXN0LCBFcnJvcikgewotICBHTU9DS19G
TEFHKHZlcmJvc2UpID0ga0Vycm9yVmVyYm9zaXR5OwotICBUZXN0RXhwZWN0ZWRDYWxsKGZhbHNl
KTsKLSAgVGVzdFVuaW50ZXJlc3RpbmdDYWxsT25OYWdneU1vY2soZmFsc2UpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IC0tZ21vY2tfdmVyYm9zZT1TT01FX0lOVkFMSURfVkFMVUUgaGFzIHRoZSBzYW1l
IGVmZmVjdAotLy8gYXMgLS1nbW9ja192ZXJib3NlPXdhcm5pbmcuCi1URVNUX0YoR01vY2tWZXJi
b3NlRmxhZ1Rlc3QsIEludmFsaWRGbGFnSXNUcmVhdGVkQXNXYXJuaW5nKSB7Ci0gIEdNT0NLX0ZM
QUcodmVyYm9zZSkgPSAiaW52YWxpZCI7ICAvLyBUcmVhdGVkIGFzICJ3YXJuaW5nIi4KLSAgVGVz
dEV4cGVjdGVkQ2FsbChmYWxzZSk7Ci0gIFRlc3RVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2Nr
KHRydWUpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQot
Ly8gQSBoZWxwZXIgY2xhc3MgdGhhdCBnZW5lcmF0ZXMgYSBmYWlsdXJlIHdoZW4gcHJpbnRlZC4g
IFdlIHVzZSBpdCB0bwotLy8gZW5zdXJlIHRoYXQgR29vZ2xlIE1vY2sgZG9lc24ndCBwcmludCBh
IHZhbHVlIChldmVuIHRvIGFuIGludGVybmFsCi0vLyBidWZmZXIpIHdoZW4gaXQgaXMgbm90IHN1
cHBvc2VkIHRvIGRvIHNvLgotY2xhc3MgUHJpbnRNZU5vdCB7fTsKLQotdm9pZCBQcmludFRvKFBy
aW50TWVOb3QgLyogZHVtbXkgKi8sIDo6c3RkOjpvc3RyZWFtKiAvKiBvcyAqLykgewotICBBRERf
RkFJTFVSRSgpIDw8ICJHb29nbGUgTW9jayBpcyBwcmludGluZyBhIHZhbHVlIHRoYXQgc2hvdWxk
bid0IGJlICIKLSAgICAgICAgICAgICAgICA8PCAicHJpbnRlZCBldmVuIHRvIGFuIGludGVybmFs
IGJ1ZmZlci4iOwotfQotCi1jbGFzcyBMb2dUZXN0SGVscGVyIHsKLSBwdWJsaWM6Ci0gIExvZ1Rl
c3RIZWxwZXIoKSB7fQotCi0gIE1PQ0tfTUVUSE9EMShGb28sIFByaW50TWVOb3QoUHJpbnRNZU5v
dCkpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhMb2dU
ZXN0SGVscGVyKTsKLX07Ci0KLWNsYXNzIEdNb2NrTG9nVGVzdCA6IHB1YmxpYyBWZXJib3NlRmxh
Z1ByZXNlcnZpbmdGaXh0dXJlIHsKLSBwcm90ZWN0ZWQ6Ci0gIExvZ1Rlc3RIZWxwZXIgaGVscGVy
XzsKLX07Ci0KLVRFU1RfRihHTW9ja0xvZ1Rlc3QsIERvZXNOb3RQcmludEdvb2RDYWxsSW50ZXJu
YWxseUlmVmVyYm9zaXR5SXNXYXJuaW5nKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrV2Fy
bmluZ1ZlcmJvc2l0eTsKLSAgRVhQRUNUX0NBTEwoaGVscGVyXywgRm9vKF8pKQotICAgICAgLldp
bGxPbmNlKFJldHVybihQcmludE1lTm90KCkpKTsKLSAgaGVscGVyXy5Gb28oUHJpbnRNZU5vdCgp
KTsgIC8vIFRoaXMgaXMgYW4gZXhwZWN0ZWQgY2FsbC4KLX0KLQotVEVTVF9GKEdNb2NrTG9nVGVz
dCwgRG9lc05vdFByaW50R29vZENhbGxJbnRlcm5hbGx5SWZWZXJib3NpdHlJc0Vycm9yKSB7Ci0g
IEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJib3NpdHk7Ci0gIEVYUEVDVF9DQUxMKGhl
bHBlcl8sIEZvbyhfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oUHJpbnRNZU5vdCgpKSk7Ci0g
IGhlbHBlcl8uRm9vKFByaW50TWVOb3QoKSk7ICAvLyBUaGlzIGlzIGFuIGV4cGVjdGVkIGNhbGwu
Ci19Ci0KLVRFU1RfRihHTW9ja0xvZ1Rlc3QsIERvZXNOb3RQcmludFdhcm5pbmdJbnRlcm5hbGx5
SWZWZXJib3NpdHlJc0Vycm9yKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJi
b3NpdHk7Ci0gIE9OX0NBTEwoaGVscGVyXywgRm9vKF8pKQotICAgICAgLldpbGxCeURlZmF1bHQo
UmV0dXJuKFByaW50TWVOb3QoKSkpOwotICBoZWxwZXJfLkZvbyhQcmludE1lTm90KCkpOyAgLy8g
VGhpcyBzaG91bGQgZ2VuZXJhdGUgYSB3YXJuaW5nLgotfQotCi0vLyBUZXN0cyBNb2NrOjpBbGxv
d0xlYWsoKS4KLQotVEVTVChBbGxvd0xlYWtUZXN0LCBBbGxvd3NMZWFraW5nVW51c2VkTW9ja09i
amVjdCkgewotICBNb2NrQSogYSA9IG5ldyBNb2NrQTsKLSAgTW9jazo6QWxsb3dMZWFrKGEpOwot
fQotCi1URVNUKEFsbG93TGVha1Rlc3QsIENhbkJlQ2FsbGVkQmVmb3JlT25DYWxsKSB7Ci0gIE1v
Y2tBKiBhID0gbmV3IE1vY2tBOwotICBNb2NrOjpBbGxvd0xlYWsoYSk7Ci0gIE9OX0NBTEwoKmEs
IERvQShfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIGEtPkRvQSgwKTsKLX0KLQotVEVT
VChBbGxvd0xlYWtUZXN0LCBDYW5CZUNhbGxlZEFmdGVyT25DYWxsKSB7Ci0gIE1vY2tBKiBhID0g
bmV3IE1vY2tBOwotICBPTl9DQUxMKCphLCBEb0EoXykpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkp
OwotICBNb2NrOjpBbGxvd0xlYWsoYSk7Ci19Ci0KLVRFU1QoQWxsb3dMZWFrVGVzdCwgQ2FuQmVD
YWxsZWRCZWZvcmVFeHBlY3RDYWxsKSB7Ci0gIE1vY2tBKiBhID0gbmV3IE1vY2tBOwotICBNb2Nr
OjpBbGxvd0xlYWsoYSk7Ci0gIEVYUEVDVF9DQUxMKCphLCBEb0EoXykpOwotICBhLT5Eb0EoMCk7
Ci19Ci0KLVRFU1QoQWxsb3dMZWFrVGVzdCwgQ2FuQmVDYWxsZWRBZnRlckV4cGVjdENhbGwpIHsK
LSAgTW9ja0EqIGEgPSBuZXcgTW9ja0E7Ci0gIEVYUEVDVF9DQUxMKCphLCBEb0EoXykpLlRpbWVz
KEFueU51bWJlcigpKTsKLSAgTW9jazo6QWxsb3dMZWFrKGEpOwotfQotCi1URVNUKEFsbG93TGVh
a1Rlc3QsIFdvcmtzV2hlbkJvdGhPbkNhbGxBbmRFeHBlY3RDYWxsQXJlUHJlc2VudCkgewotICBN
b2NrQSogYSA9IG5ldyBNb2NrQTsKLSAgT05fQ0FMTCgqYSwgRG9BKF8pKS5XaWxsQnlEZWZhdWx0
KFJldHVybigpKTsKLSAgRVhQRUNUX0NBTEwoKmEsIERvQShfKSkuVGltZXMoQW55TnVtYmVyKCkp
OwotICBNb2NrOjpBbGxvd0xlYWsoYSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIHZlcmlm
eSBhbmQgY2xlYXIgYSBtb2NrIG9iamVjdCdzIGV4cGVjdGF0aW9ucwotLy8gd2hlbiBub25lIG9m
IGl0cyBtZXRob2RzIGhhcyBleHBlY3RhdGlvbnMuCi1URVNUKFZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zVGVzdCwgTm9NZXRob2RIYXNFeHBlY3RhdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAgQVNT
RVJUX1RSVUUoTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpKTsKLQotICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25zIG9uIHRoZSBtZXRob2RzIG5vdywgc28gd2Ug
Y2FuCi0gIC8vIGZyZWVseSBjYWxsIHRoZW0uCi0gIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLSAg
RVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gdmVyaWZ5
IGFuZCBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZXhwZWN0YXRpb25zCi0vLyB3aGVuIHNvbWUsIGJ1
dCBub3QgYWxsLCBvZiBpdHMgbWV0aG9kcyBoYXZlIGV4cGVjdGF0aW9ucyAqYW5kKiB0aGUKLS8v
IHZlcmlmaWNhdGlvbiBzdWNjZWVkcy4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNU
ZXN0LCBTb21lTWV0aG9kc0hhdmVFeHBlY3RhdGlvbnNBbmRTdWNjZWVkKSB7Ci0gIE1vY2tCIGI7
Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0g
IGIuRG9CKCk7Ci0gIEFTU0VSVF9UUlVFKE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZiKSk7Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0
aG9kcyBub3csIHNvIHdlIGNhbgotICAvLyBmcmVlbHkgY2FsbCB0aGVtLgotICBFWFBFQ1RfRVEo
MCwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgd2UgY2FuIHZlcmlmeSBhbmQgY2xlYXIgYSBtb2NrIG9iamVjdCdzIGV4cGVjdGF0aW9ucwot
Ly8gd2hlbiBzb21lLCBidXQgbm90IGFsbCwgb2YgaXRzIG1ldGhvZHMgaGF2ZSBleHBlY3RhdGlv
bnMgKmFuZCogdGhlCi0vLyB2ZXJpZmljYXRpb24gZmFpbHMuCi1URVNUKFZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zVGVzdCwgU29tZU1ldGhvZHNIYXZlRXhwZWN0YXRpb25zQW5kRmFpbCkgewot
ICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4oMSkpOwotICBib29sIHJlc3VsdCA9IHRydWU7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHJlc3VsdCA9IE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkFjdHVhbDogbmV2ZXIgY2FsbGVkIik7Ci0gIEFTU0VSVF9GQUxT
RShyZXN1bHQpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhl
IG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4KLSAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNU
X0VRKDAsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiB2ZXJpZnkgYW5kIGNsZWFyIGEgbW9jayBvYmplY3QncyBleHBlY3RhdGlv
bnMKLS8vIHdoZW4gYWxsIG9mIGl0cyBtZXRob2RzIGhhdmUgZXhwZWN0YXRpb25zLgotVEVTVChW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc1Rlc3QsIEFsbE1ldGhvZHNIYXZlRXhwZWN0YXRpb25z
KSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxPbmNl
KFJldHVybigxKSk7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQihfKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oMikpOwotICBiLkRvQigpOwotICBiLkRvQigxKTsKLSAgQVNTRVJUX1RSVUUoTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpKTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUg
bm8gZXhwZWN0YXRpb25zIG9uIHRoZSBtZXRob2RzIG5vdywgc28gd2UgY2FuCi0gIC8vIGZyZWVs
eSBjYWxsIHRoZW0uCi0gIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLSAgRVhQRUNUX0VRKDAsIGIu
RG9CKDEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gdmVyaWZ5IGFuZCBjbGVhciBhIG1v
Y2sgb2JqZWN0J3MgZXhwZWN0YXRpb25zCi0vLyB3aGVuIGEgbWV0aG9kIGhhcyBtb3JlIHRoYW4g
b25lIGV4cGVjdGF0aW9uLgotVEVTVChWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc1Rlc3QsIEFN
ZXRob2RIYXNNYW55RXhwZWN0YXRpb25zKSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxMKGIs
IERvQigwKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTChiLCBE
b0IoXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKLSAgYi5Eb0IoMSk7Ci0gIGJvb2wg
cmVzdWx0ID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUocmVzdWx0ID0gTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKLSAgQVNTRVJUX0ZBTFNFKHJlc3VsdCk7Ci0KLSAg
Ly8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0aG9kcyBub3csIHNv
IHdlIGNhbgotICAvLyBmcmVlbHkgY2FsbCB0aGVtLgotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7
Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNh
bGwgVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKSBvbiB0aGUgc2FtZQotLy8gbW9jayBvYmpl
Y3QgbXVsdGlwbGUgdGltZXMuCi1URVNUKFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zVGVzdCwg
Q2FuQ2FsbE1hbnlUaW1lcykgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSk7
Ci0gIGIuRG9CKCk7Ci0gIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZiKTsKLQot
ICBFWFBFQ1RfQ0FMTChiLCBEb0IoXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKLSAg
Yi5Eb0IoMSk7Ci0gIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZiKTsKLSAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBi
ZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4KLSAgLy8gZnJl
ZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwg
Yi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBjbGVhciBhIG1vY2sgb2JqZWN0
J3MgZGVmYXVsdCBhY3Rpb25zIHdoZW4gbm9uZQotLy8gb2YgaXRzIG1ldGhvZHMgaGFzIGRlZmF1
bHQgYWN0aW9ucy4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LCBOb01ldGhvZEhhc0RlZmF1bHRB
Y3Rpb25zKSB7Ci0gIE1vY2tCIGI7Ci0gIC8vIElmIHRoaXMgY3Jhc2hlcyBvciBnZW5lcmF0ZXMg
YSBmYWlsdXJlLCB0aGUgdGVzdCB3aWxsIGNhdGNoIGl0LgotICBNb2NrOjpWZXJpZnlBbmRDbGVh
cigmYik7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBj
YW4gY2xlYXIgYSBtb2NrIG9iamVjdCdzIGRlZmF1bHQgYWN0aW9ucyB3aGVuIHNvbWUsCi0vLyBi
dXQgbm90IGFsbCBvZiBpdHMgbWV0aG9kcyBoYXZlIGRlZmF1bHQgYWN0aW9ucy4KLVRFU1QoVmVy
aWZ5QW5kQ2xlYXJUZXN0LCBTb21lTWV0aG9kc0hhdmVEZWZhdWx0QWN0aW9ucykgewotICBNb2Nr
QiBiOwotICBPTl9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEp
KTsKLQotICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYik7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0
aGUgZGVmYXVsdCBhY3Rpb24gb2YgaW50IERvQigpIHdhcyByZW1vdmVkLgotICBFWFBFQ1RfRVEo
MCwgYi5Eb0IoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNsZWFyIGEgbW9jayBvYmpl
Y3QncyBkZWZhdWx0IGFjdGlvbnMgd2hlbiBhbGwgb2YKLS8vIGl0cyBtZXRob2RzIGhhdmUgZGVm
YXVsdCBhY3Rpb25zLgotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIEFsbE1ldGhvZHNIYXZlRGVm
YXVsdEFjdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAgT05fQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5X
aWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIE9OX0NBTEwoYiwgRG9CKF8pKQotICAgICAgLldp
bGxCeURlZmF1bHQoUmV0dXJuKDIpKTsKLQotICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYik7Ci0K
LSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24gb2YgaW50IERvQigpIHdhcyBy
ZW1vdmVkLgotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0
aGUgZGVmYXVsdCBhY3Rpb24gb2YgaW50IERvQihpbnQpIHdhcyByZW1vdmVkLgotICBFWFBFQ1Rf
RVEoMCwgYi5Eb0IoMCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBjbGVhciBhIG1vY2sg
b2JqZWN0J3MgZGVmYXVsdCBhY3Rpb25zIHdoZW4gYQotLy8gbWV0aG9kIGhhcyBtb3JlIHRoYW4g
b25lIE9OX0NBTEwoKSBzZXQgb24gaXQuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQU1ldGhv
ZEhhc01hbnlEZWZhdWx0QWN0aW9ucykgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigw
KSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIE9OX0NBTEwoYiwgRG9CKF8p
KQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDIpKTsKLQotICBNb2NrOjpWZXJpZnlBbmRD
bGVhcigmYik7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb25zICh0aGVy
ZSBhcmUgdHdvKSBvZiBpbnQgRG9CKGludCkKLSAgLy8gd2VyZSByZW1vdmVkLgotICBFWFBFQ1Rf
RVEoMCwgYi5Eb0IoMCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiBjYWxsIFZlcmlmeUFuZENsZWFyKCkgb24gYSBtb2NrIG9iamVjdCBtdWx0
aXBsZQotLy8gdGltZXMuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQ2FuQ2FsbE1hbnlUaW1l
cykgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxCeURlZmF1
bHQoUmV0dXJuKDEpKTsKLSAgTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJmIpOwotICBNb2NrOjpWZXJp
ZnlBbmRDbGVhcigmYik7Ci0KLSAgT05fQ0FMTChiLCBEb0IoXykpCi0gICAgICAuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oMSkpOwotICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYik7Ci0KLSAgRVhQRUNU
X0VRKDAsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFZlcmlmeUFuZENsZWFyKCkgd29ya3Mgd2hlbiB0aGUgdmVyaWZpY2F0aW9uIHN1Y2Nl
ZWRzLgotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIFN1Y2Nlc3MpIHsKLSAgTW9ja0IgYjsKLSAg
T05fQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIEVY
UEVDVF9DQUxMKGIsIERvQigxKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOwotCi0gIGIu
RG9CKCk7Ci0gIGIuRG9CKDEpOwotICBBU1NFUlRfVFJVRShNb2NrOjpWZXJpZnlBbmRDbGVhcigm
YikpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhv
ZHMgbm93LCBzbyB3ZSBjYW4KLSAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNUX0VRKDAs
IGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IFZlcmlmeUFuZENsZWFyKCkgd29ya3Mgd2hlbiB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzLgotVEVT
VChWZXJpZnlBbmRDbGVhclRlc3QsIEZhaWx1cmUpIHsKLSAgTW9ja0IgYjsKLSAgT05fQ0FMTChi
LCBEb0IoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FM
TChiLCBEb0IoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOwotCi0gIGIuRG9CKDEpOwot
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHJlc3VsdCA9
IE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkFj
dHVhbDogbmV2ZXIgY2FsbGVkIik7Ci0gIEFTU0VSVF9GQUxTRShyZXN1bHQpOwotCi0gIC8vIFRo
ZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBj
YW4KLSAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBF
WFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZlcmlmeUFuZENsZWFy
KCkgd29ya3Mgd2hlbiB0aGUgZGVmYXVsdCBhY3Rpb25zIGFuZAotLy8gZXhwZWN0YXRpb25zIGFy
ZSBzZXQgb24gYSBjb25zdCBtb2NrIG9iamVjdC4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LCBD
b25zdCkgewotICBNb2NrQiBiOwotICBPTl9DQUxMKENvbnN0KGIpLCBEb0IoKSkKLSAgICAgIC5X
aWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0KLSAgRVhQRUNUX0NBTEwoQ29uc3QoYiksIERvQigp
KQotICAgICAgLldpbGxPbmNlKERvRGVmYXVsdCgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigy
KSk7Ci0KLSAgYi5Eb0IoKTsKLSAgYi5Eb0IoKTsKLSAgQVNTRVJUX1RSVUUoTW9jazo6VmVyaWZ5
QW5kQ2xlYXIoJmIpKTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25zIG9u
IHRoZSBtZXRob2RzIG5vdywgc28gd2UgY2FuCi0gIC8vIGZyZWVseSBjYWxsIHRoZW0uCi0gIEVY
UEVDVF9FUSgwLCBiLkRvQigpKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB3ZSBjYW4gc2V0IGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIG9u
IGEgbW9jawotLy8gb2JqZWN0IGFmdGVyIFZlcmlmeUFuZENsZWFyKCkgaGFzIGJlZW4gY2FsbGVk
IG9uIGl0LgotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIENhblNldERlZmF1bHRBY3Rpb25zQW5k
RXhwZWN0YXRpb25zQWZ0ZXJ3YXJkcykgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigp
KQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9C
KF8pKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0gIGIuRG9CKDEpOwotCi0gIE1vY2s6
OlZlcmlmeUFuZENsZWFyKCZiKTsKLQotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5X
aWxsT25jZShSZXR1cm4oMykpOwotICBPTl9DQUxMKGIsIERvQihfKSkKLSAgICAgIC5XaWxsQnlE
ZWZhdWx0KFJldHVybig0KSk7Ci0KLSAgRVhQRUNUX0VRKDMsIGIuRG9CKCkpOwotICBFWFBFQ1Rf
RVEoNCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGNhbGxpbmcgVmVyaWZ5QW5kQ2xl
YXIoKSBvbiBvbmUgbW9jayBvYmplY3QgZG9lcyBub3QKLS8vIGFmZmVjdCBvdGhlciBtb2NrIG9i
amVjdHMgKGVpdGhlciBvZiB0aGUgc2FtZSB0eXBlIG9yIG5vdCkuCi1URVNUKFZlcmlmeUFuZENs
ZWFyVGVzdCwgRG9lc05vdEFmZmVjdE90aGVyTW9ja09iamVjdHMpIHsKLSAgTW9ja0EgYTsKLSAg
TW9ja0IgYjE7Ci0gIE1vY2tCIGIyOwotCi0gIE9OX0NBTEwoYSwgQmluYXJ5KF8sIF8pKQotICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKHRydWUpKTsKLSAgRVhQRUNUX0NBTEwoYSwgQmluYXJ5
KF8sIF8pKQotICAgICAgLldpbGxPbmNlKERvRGVmYXVsdCgpKQotICAgICAgLldpbGxPbmNlKFJl
dHVybihmYWxzZSkpOwotCi0gIE9OX0NBTEwoYjEsIERvQigpKQotICAgICAgLldpbGxCeURlZmF1
bHQoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwoYjEsIERvQihfKSkKLSAgICAgIC5XaWxsT25j
ZShSZXR1cm4oMikpOwotCi0gIE9OX0NBTEwoYjIsIERvQigpKQotICAgICAgLldpbGxCeURlZmF1
bHQoUmV0dXJuKDMpKTsKLSAgRVhQRUNUX0NBTEwoYjIsIERvQihfKSk7Ci0KLSAgYjIuRG9CKDAp
OwotICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYjIpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhl
IGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIG9mIGEgYW5kIGIxCi0gIC8vIGFyZSBz
dGlsbCBpbiBlZmZlY3QuCi0gIEVYUEVDVF9UUlVFKGEuQmluYXJ5KDAsIDApKTsKLSAgRVhQRUNU
X0ZBTFNFKGEuQmluYXJ5KDAsIDApKTsKLQotICBFWFBFQ1RfRVEoMSwgYjEuRG9CKCkpOwotICBF
WFBFQ1RfRVEoMiwgYjEuRG9CKDApKTsKLX0KLQotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsCi0g
ICAgIERlc3Ryb3lpbmdDaGFpbmVkTW9ja3NEb2VzTm90RGVhZGxvY2tUaHJvdWdoRXhwZWN0YXRp
b25zKSB7Ci0gIGxpbmtlZF9wdHI8TW9ja0E+IGEobmV3IE1vY2tBKTsKLSAgUmVmZXJlbmNlSG9s
ZGluZ01vY2sgdGVzdF9tb2NrOwotCi0gIC8vIEVYUEVDVF9DQUxMIHN0b3JlcyBhIHJlZmVyZW5j
ZSB0byBhIGluc2lkZSB0ZXN0X21vY2suCi0gIEVYUEVDVF9DQUxMKHRlc3RfbW9jaywgQWNjZXB0
UmVmZXJlbmNlKF8pKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFNldEFyZ1BvaW50ZWU8MD4oYSkp
OwotCi0gIC8vIFRocm93IGF3YXkgdGhlIHJlZmVyZW5jZSB0byB0aGUgbW9jayB0aGF0IHdlIGhh
dmUgaW4gYS4gQWZ0ZXIgdGhpcywgdGhlCi0gIC8vIG9ubHkgcmVmZXJlbmNlIHRvIGl0IGlzIHN0
b3JlZCBieSB0ZXN0X21vY2suCi0gIGEucmVzZXQoKTsKLQotICAvLyBXaGVuIHRlc3RfbW9jayBn
b2VzIG91dCBvZiBzY29wZSwgaXQgZGVzdHJveXMgdGhlIGxhc3QgcmVtYWluaW5nIHJlZmVyZW5j
ZQotICAvLyB0byB0aGUgbW9jayBvYmplY3Qgb3JpZ2luYWxseSBwb2ludGVkIHRvIGJ5IGEuIFRo
aXMgd2lsbCBjYXVzZSB0aGUgTW9ja0EKLSAgLy8gZGVzdHJ1Y3RvciB0byBiZSBjYWxsZWQgZnJv
bSBpbnNpZGUgdGhlIFJlZmVyZW5jZUhvbGRpbmdNb2NrIGRlc3RydWN0b3IuCi0gIC8vIFRoZSBz
dGF0ZSBvZiBhbGwgbW9ja3MgaXMgcHJvdGVjdGVkIGJ5IGEgc2luZ2xlIGdsb2JhbCBsb2NrLCBi
dXQgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIGRlYWRsb2NrLgotfQotCi1URVNUKFZlcmlmeUFu
ZENsZWFyVGVzdCwKLSAgICAgRGVzdHJveWluZ0NoYWluZWRNb2Nrc0RvZXNOb3REZWFkbG9ja1Ro
cm91Z2hEZWZhdWx0QWN0aW9uKSB7Ci0gIGxpbmtlZF9wdHI8TW9ja0E+IGEobmV3IE1vY2tBKTsK
LSAgUmVmZXJlbmNlSG9sZGluZ01vY2sgdGVzdF9tb2NrOwotCi0gIC8vIE9OX0NBTEwgc3RvcmVz
IGEgcmVmZXJlbmNlIHRvIGEgaW5zaWRlIHRlc3RfbW9jay4KLSAgT05fQ0FMTCh0ZXN0X21vY2ss
IEFjY2VwdFJlZmVyZW5jZShfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFNldEFyZ1BvaW50ZWU8
MD4oYSkpOwotCi0gIC8vIFRocm93IGF3YXkgdGhlIHJlZmVyZW5jZSB0byB0aGUgbW9jayB0aGF0
IHdlIGhhdmUgaW4gYS4gQWZ0ZXIgdGhpcywgdGhlCi0gIC8vIG9ubHkgcmVmZXJlbmNlIHRvIGl0
IGlzIHN0b3JlZCBieSB0ZXN0X21vY2suCi0gIGEucmVzZXQoKTsKLQotICAvLyBXaGVuIHRlc3Rf
bW9jayBnb2VzIG91dCBvZiBzY29wZSwgaXQgZGVzdHJveXMgdGhlIGxhc3QgcmVtYWluaW5nIHJl
ZmVyZW5jZQotICAvLyB0byB0aGUgbW9jayBvYmplY3Qgb3JpZ2luYWxseSBwb2ludGVkIHRvIGJ5
IGEuIFRoaXMgd2lsbCBjYXVzZSB0aGUgTW9ja0EKLSAgLy8gZGVzdHJ1Y3RvciB0byBiZSBjYWxs
ZWQgZnJvbSBpbnNpZGUgdGhlIFJlZmVyZW5jZUhvbGRpbmdNb2NrIGRlc3RydWN0b3IuCi0gIC8v
IFRoZSBzdGF0ZSBvZiBhbGwgbW9ja3MgaXMgcHJvdGVjdGVkIGJ5IGEgc2luZ2xlIGdsb2JhbCBs
b2NrLCBidXQgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIGRlYWRsb2NrLgotfQotCi0vLyBUZXN0
cyB0aGF0IGEgbW9jayBmdW5jdGlvbidzIGFjdGlvbiBjYW4gY2FsbCBhIG1vY2sgZnVuY3Rpb24K
LS8vIChlaXRoZXIgdGhlIHNhbWUgZnVuY3Rpb24gb3IgYSBkaWZmZXJlbnQgb25lKSBlaXRoZXIg
YXMgYW4gZXhwbGljaXQKLS8vIGFjdGlvbiBvciBhcyBhIGRlZmF1bHQgYWN0aW9uIHdpdGhvdXQg
Y2F1c2luZyBhIGRlYWQgbG9jay4gIEl0Ci0vLyB2ZXJpZmllcyB0aGF0IHRoZSBhY3Rpb24gaXMg
bm90IHBlcmZvcm1lZCBpbnNpZGUgdGhlIGNyaXRpY2FsCi0vLyBzZWN0aW9uLgotVEVTVChTeW5j
aHJvbml6YXRpb25UZXN0LCBDYW5DYWxsTW9ja01ldGhvZEluQWN0aW9uKSB7Ci0gIE1vY2tBIGE7
Ci0gIE1vY2tDIGM7Ci0gIE9OX0NBTEwoYSwgRG9BKF8pKQotICAgICAgLldpbGxCeURlZmF1bHQo
SWdub3JlUmVzdWx0KEludm9rZVdpdGhvdXRBcmdzKCZjLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZNb2NrQzo6Tm9uVm9pZE1ldGhvZCkpKTsK
LSAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQotICAg
ICAgLldpbGxPbmNlKEludm9rZSgmYSwgJk1vY2tBOjpEb0EpKQotICAgICAgLlJldGlyZXNPblNh
dHVyYXRpb24oKTsKLSAgRVhQRUNUX0NBTEwoYywgTm9uVm9pZE1ldGhvZCgpKTsKLQotICBhLkRv
QSgxKTsKLSAgLy8gVGhpcyB3aWxsIG1hdGNoIHRoZSBzZWNvbmQgRVhQRUNUX0NBTEwoKSBhbmQg
dHJpZ2dlciBhbm90aGVyIGEuRG9BKDEpLAotICAvLyB3aGljaCB3aWxsIGluIHR1cm4gbWF0Y2gg
dGhlIGZpcnN0IEVYUEVDVF9DQUxMKCkgYW5kIHRyaWdnZXIgYSBjYWxsIHRvCi0gIC8vIGMuTm9u
Vm9pZE1ldGhvZCgpIHRoYXQgd2FzIHNwZWNpZmllZCBieSB0aGUgT05fQ0FMTCgpIHNpbmNlIHRo
ZSBmaXJzdAotICAvLyBFWFBFQ1RfQ0FMTCgpIGRpZCBub3Qgc3BlY2lmeSBhbiBhY3Rpb24uCi19
Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBBbGxvd3MgdGhlIHVzZXIgdG8gZGVmaW5lIGhpcyBv
d24gbWFpbiBhbmQgdGhlbiBpbnZva2UgZ21vY2tfbWFpbgotLy8gZnJvbSBpdC4gVGhpcyBtaWdo
dCBiZSBuZWNlc3Nhcnkgb24gc29tZSBwbGF0Zm9ybXMgd2hpY2ggcmVxdWlyZQotLy8gc3BlY2lm
aWMgc2V0dXAgYW5kIHRlYXJkb3duLgotI2lmIEdNT0NLX1JFTkFNRV9NQUlOCi1pbnQgZ21vY2tf
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSNlbHNlCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKLSNlbmRpZiAgLy8gR01PQ0tfUkVOQU1FX01BSU4KLSAgdGVzdGluZzo6
SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIEVuc3VyZXMgdGhhdCB0aGUgdGVz
dHMgcGFzcyBubyBtYXR0ZXIgd2hhdCB2YWx1ZSBvZgotICAvLyAtLWdtb2NrX2NhdGNoX2xlYWtl
ZF9tb2NrcyBhbmQgLS1nbW9ja192ZXJib3NlIHRoZSB1c2VyIHNwZWNpZmllcy4KLSAgdGVzdGlu
Zzo6R01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpID0gdHJ1ZTsKLSAgdGVzdGluZzo6R01P
Q0tfRkxBRyh2ZXJib3NlKSA9IHRlc3Rpbmc6OmludGVybmFsOjprV2FybmluZ1ZlcmJvc2l0eTsK
LQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
dGVzdC9nbW9ja19hbGxfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfYWxsX3Rlc3Qu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZDZjNDljY2M1MzhiNTYzZmRiNzFk
OTllZGQyNWU3YWYwZjhkNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDUxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwot
Ly8gVGVzdHMgZm9yIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsgKEdvb2dsZSBNb2NrKQot
Ly8KLS8vIFNvbWUgdXNlcnMgdXNlIGEgYnVpbGQgc3lzdGVtIHRoYXQgR29vZ2xlIE1vY2sgZG9l
c24ndCBzdXBwb3J0IGRpcmVjdGx5LAotLy8geWV0IHRoZXkgc3RpbGwgd2FudCB0byBidWlsZCBh
bmQgcnVuIEdvb2dsZSBNb2NrJ3Mgb3duIHRlc3RzLiAgVGhpcyBmaWxlCi0vLyBpbmNsdWRlcyBt
b3N0IHN1Y2ggdGVzdHMsIG1ha2luZyBpdCBlYXNpZXIgZm9yIHRoZXNlIHVzZXJzIHRvIG1haW50
YWluCi0vLyB0aGVpciBidWlsZCBzY3JpcHRzICh0aGV5IGp1c3QgbmVlZCB0byBidWlsZCB0aGlz
IGZpbGUsIGV2ZW4gdGhvdWdoIHRoZQotLy8gYmVsb3cgbGlzdCBvZiBhY3R1YWwgKl90ZXN0LmNj
IGZpbGVzIG1pZ2h0IGNoYW5nZSkuCi0jaW5jbHVkZSAidGVzdC9nbW9jay1hY3Rpb25zX3Rlc3Qu
Y2MiCi0jaW5jbHVkZSAidGVzdC9nbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3QuY2MiCi0jaW5jbHVk
ZSAidGVzdC9nbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3Qv
Z21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnNfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0
L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3Qv
Z21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9nbW9jay1p
bnRlcm5hbC11dGlsc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ21vY2stbWF0Y2hlcnNfdGVz
dC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0LmNjIgotI2luY2x1
ZGUgInRlc3QvZ21vY2stbmljZS1zdHJpY3RfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2Nr
LXBvcnRfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5j
YyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrX3Rlc3QuY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay90ZXN0L2dtb2NrX2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2V4X3Rlc3Qu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZmVkODZhYjk2NjVlMTJjZGI3MmZj
MGJiNTc3MGIyMDU2MjhkNzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19leF90ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsODEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8g
VGVzdHMgR29vZ2xlIE1vY2sncyBmdW5jdGlvbmFsaXR5IHRoYXQgZGVwZW5kcyBvbiBleGNlcHRp
b25zLgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi1uYW1lc3BhY2UgewotCi11c2luZyB0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb247Ci0KLS8vIEEgdHlwZSB0
aGF0IGNhbm5vdCBiZSBkZWZhdWx0IGNvbnN0cnVjdGVkLgotY2xhc3MgTm9uRGVmYXVsdENvbnN0
cnVjdGlibGUgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUo
aW50IC8qIGR1bW15ICovKSB7fQotfTsKLQotY2xhc3MgTW9ja0ZvbyB7Ci0gcHVibGljOgotICAv
LyBBIG1vY2sgbWV0aG9kIHRoYXQgcmV0dXJucyBhIHVzZXItZGVmaW5lZCB0eXBlLiAgR29vZ2xl
IE1vY2sKLSAgLy8gZG9lc24ndCBrbm93IHdoYXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMg
dHlwZSBpcy4KLSAgTU9DS19NRVRIT0QwKEdldE5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlLCBOb25E
ZWZhdWx0Q29uc3RydWN0aWJsZSgpKTsKLX07Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
Ci1URVNUKERlZmF1bHRWYWx1ZVRlc3QsIFRocm93c1J1bnRpbWVFcnJvcldoZW5Ob0RlZmF1bHRW
YWx1ZSkgewotICBNb2NrRm9vIG1vY2s7Ci0gIHRyeSB7Ci0gICAgLy8gTm8gZXhwZWN0YXRpb24g
aXMgc2V0IG9uIHRoaXMgbWV0aG9kLCBzbyBHb29nbGUgTW9jayBtdXN0Ci0gICAgLy8gcmV0dXJu
IHRoZSBkZWZhdWx0IHZhbHVlLiAgSG93ZXZlciwgc2luY2UgR29vZ2xlIE1vY2sga25vd3MKLSAg
ICAvLyBub3RoaW5nIGFib3V0IHRoZSByZXR1cm4gdHlwZSwgaXQgZG9lc24ndCBrbm93IHdoYXQg
dG8gcmV0dXJuLAotICAgIC8vIGFuZCBoYXMgdG8gdGhyb3cgKHdoZW4gZXhjZXB0aW9ucyBhcmUg
ZW5hYmxlZCkgb3IgYWJvcnQKLSAgICAvLyAob3RoZXJ3aXNlKS4KLSAgICBtb2NrLkdldE5vbkRl
ZmF1bHRDb25zdHJ1Y3RpYmxlKCk7Ci0gICAgRkFJTCgpIDw8ICJHZXROb25EZWZhdWx0Q29uc3Ry
dWN0aWJsZSgpJ3MgcmV0dXJuIHR5cGUgaGFzIG5vIGRlZmF1bHQgIgotICAgICAgICAgICA8PCAi
dmFsdWUsIHNvIEdvb2dsZSBNb2NrIHNob3VsZCBoYXZlIHRocm93bi4iOwotICB9IGNhdGNoIChj
b25zdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiYgLyogdW51c2VkICovKSB7Ci0gICAgRkFJ
TCgpIDw8ICJHb29nbGUgVGVzdCBkb2VzIG5vdCB0cnkgdG8gY2F0Y2ggYW4gZXhjZXB0aW9uIG9m
IHR5cGUgIgotICAgICAgICAgICA8PCAiR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24sIHdoaWNo
IGlzIHVzZWQgZm9yIHJlcG9ydGluZyAiCi0gICAgICAgICAgIDw8ICJhIGZhaWx1cmUgdG8gb3Ro
ZXIgdGVzdGluZyBmcmFtZXdvcmtzLiAgR29vZ2xlIE1vY2sgc2hvdWxkICIKLSAgICAgICAgICAg
PDwgIm5vdCB0aHJvdyBhIEdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uIGFzIGl0IHdpbGwga2ls
bCB0aGUgIgotICAgICAgICAgICA8PCAiZW50aXJlIHRlc3QgcHJvZ3JhbSBpbnN0ZWFkIG9mIGp1
c3QgdGhlIGN1cnJlbnQgVEVTVC4iOwotICB9IGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYg
ZXgpIHsKLSAgICBFWFBFQ1RfVEhBVChleC53aGF0KCksIEhhc1N1YnN0cigiaGFzIG5vIGRlZmF1
bHQgdmFsdWUiKSk7Ci0gIH0KLX0KLQotI2VuZGlmCi0KLX0gIC8vIHVubmFtZWQgbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xlYWtfdGVzdC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3Rlc3QvZ21vY2tfbGVha190ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCA5OTc2ODBjZTFhZWIxMTE3ODJmODVhZjhhM2I0YWQ1NzA0YWE5MTE1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2tfbGVha190ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRoYXQgbGVha2Vk
IG1vY2sgb2JqZWN0cyBjYW4gYmUgY2F1Z2h0IGJlIEdvb2dsZSBNb2NrLiIiIgotCi1fX2F1dGhv
cl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi0KLWltcG9ydCBnbW9ja190
ZXN0X3V0aWxzCi0KLQotUFJPR1JBTV9QQVRIID0gZ21vY2tfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2dtb2NrX2xlYWtfdGVzdF8nKQotVEVTVF9XSVRIX0VYUEVDVF9DQUxMID0g
W1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfZmlsdGVyPSpFeHBlY3RDYWxsKiddCi1URVNUX1dJVEhf
T05fQ0FMTCA9IFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X2ZpbHRlcj0qT25DYWxsKiddCi1URVNU
X01VTFRJUExFX0xFQUtTID0gW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfZmlsdGVyPSpNdWx0aXBs
ZUxlYWtlZConXQotCi1lbnZpcm9uID0gZ21vY2tfdGVzdF91dGlscy5lbnZpcm9uCi1TZXRFbnZW
YXIgPSBnbW9ja190ZXN0X3V0aWxzLlNldEVudlZhcgotCi0jIFRlc3RzIGluIHRoaXMgZmlsZSBy
dW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBpdAotIyB0byB0
ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21wYXRpYmxlIHdp
dGgKLSMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWduLiAgVW5zZXQg
dGhlCi0jIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xlIFRlc3QgZnJv
bSBjcmVhdGluZwotIyB0aGUgZmlsZS4KLVNldEVudlZhcihnbW9ja190ZXN0X3V0aWxzLlBSRU1B
VFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKLQotCi1jbGFzcyBHTW9ja0xlYWtUZXN0KGdt
b2NrX3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotCi0gIGRlZiB0ZXN0Q2F0Y2hlc0xlYWtlZE1vY2tC
eURlZmF1bHQoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKLSAgICAgICAgMCwKLSAg
ICAgICAgZ21vY2tfdGVzdF91dGlscy5TdWJwcm9jZXNzKFRFU1RfV0lUSF9FWFBFQ1RfQ0FMTCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2Nv
ZGUpCi0gICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKLSAgICAgICAgMCwKLSAgICAgICAgZ21vY2tf
dGVzdF91dGlscy5TdWJwcm9jZXNzKFRFU1RfV0lUSF9PTl9DQUxMLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29kZSkKLQotICBkZWYgdGVz
dERvZXNOb3RDYXRjaExlYWtlZE1vY2tXaGVuRGlzYWJsZWQoc2VsZik6Ci0gICAgc2VsZi5hc3Nl
cnRFcXVhbHMoCi0gICAgICAgIDAsCi0gICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMuU3VicHJvY2Vz
cyhURVNUX1dJVEhfRVhQRUNUX0NBTEwgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyctLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0wJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbikuZXhpdF9jb2RlKQotICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKAotICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoVEVTVF9XSVRIX09OX0NBTEwgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyctLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0wJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbikuZXhpdF9jb2RlKQotCi0gIGRlZiB0ZXN0Q2F0
Y2hlc0xlYWtlZE1vY2tXaGVuRW5hYmxlZChzZWxmKToKLSAgICBzZWxmLmFzc2VydE5vdEVxdWFs
KAotICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9X
SVRIX0VYUEVDVF9DQUxMICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
LS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCi0gICAgc2VsZi5hc3NlcnROb3RFcXVh
bCgKLSAgICAgICAgMCwKLSAgICAgICAgZ21vY2tfdGVzdF91dGlscy5TdWJwcm9jZXNzKFRFU1Rf
V0lUSF9PTl9DQUxMICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1n
bW9ja19jYXRjaF9sZWFrZWRfbW9ja3MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCi0KLSAgZGVmIHRlc3RDYXRjaGVzTGVha2Vk
TW9ja1doZW5FbmFibGVkV2l0aEV4cGxpY3RGbGFnVmFsdWUoc2VsZik6Ci0gICAgc2VsZi5hc3Nl
cnROb3RFcXVhbCgKLSAgICAgICAgMCwKLSAgICAgICAgZ21vY2tfdGVzdF91dGlscy5TdWJwcm9j
ZXNzKFRFU1RfV0lUSF9FWFBFQ1RfQ0FMTCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJy0tZ21vY2tfY2F0Y2hfbGVha2VkX21vY2tzPTEnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCi0KLSAgZGVmIHRl
c3RDYXRjaGVzTXVsdGlwbGVMZWFrZWRNb2NrcyhzZWxmKToKLSAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKAotICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVT
VF9NVUxUSVBMRV9MRUFLUyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Jy0tZ21vY2tfY2F0Y2hfbGVha2VkX21vY2tzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnY9ZW52aXJvbikuZXhpdF9jb2RlKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gIGdtb2NrX3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX2xlYWtfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xl
YWtfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMjdkMjJmNjJkN2E4
N2I1ZWFkODNkMjZlZjE5MWQyMTA4NjU5NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rlc3RfLmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1v
Y2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIHByb2dyYW0gaXMgZm9yIHZlcmlmeWluZyB0aGF0IGEg
bGVha2VkIG1vY2sgb2JqZWN0IGNhbiBiZQotLy8gY2F1Z2h0IGJ5IEdvb2dsZSBNb2NrJ3MgbGVh
ayBkZXRlY3Rvci4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0KLW5hbWVzcGFjZSB7Ci0K
LXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi1jbGFzcyBGb29JbnRlcmZhY2UgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB+Rm9vSW50ZXJmYWNlKCkge30KLSAgdmlydHVhbCB2b2lkIERvVGhpcygp
ID0gMDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vSW50ZXJmYWNlIHsKLSBwdWJs
aWM6Ci0gIE1vY2tGb28oKSB7fQotCi0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIHZvaWQoKSk7Ci0K
LSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tGb28pOwot
fTsKLQotVEVTVChMZWFrVGVzdCwgTGVha2VkTW9ja1dpdGhFeHBlY3RDYWxsQ2F1c2VzRmFpbHVy
ZVdoZW5MZWFrQ2hlY2tpbmdJc0VuYWJsZWQpIHsKLSAgTW9ja0ZvbyogZm9vID0gbmV3IE1vY2tG
b287Ci0KLSAgRVhQRUNUX0NBTEwoKmZvbywgRG9UaGlzKCkpOwotICBmb28tPkRvVGhpcygpOwot
Ci0gIC8vIEluIG9yZGVyIHRvIHRlc3QgdGhlIGxlYWsgZGV0ZWN0b3IsIHdlIGRlbGliZXJhdGVs
eSBsZWFrIGZvby4KLQotICAvLyBNYWtlcyBzdXJlIEdvb2dsZSBNb2NrJ3MgbGVhayBkZXRlY3Rv
ciBjYW4gY2hhbmdlIHRoZSBleGl0IGNvZGUKLSAgLy8gdG8gMSBldmVuIHdoZW4gdGhlIGNvZGUg
aXMgYWxyZWFkeSBleGl0aW5nIHdpdGggMC4KLSAgZXhpdCgwKTsKLX0KLQotVEVTVChMZWFrVGVz
dCwgTGVha2VkTW9ja1dpdGhPbkNhbGxDYXVzZXNGYWlsdXJlV2hlbkxlYWtDaGVja2luZ0lzRW5h
YmxlZCkgewotICBNb2NrRm9vKiBmb28gPSBuZXcgTW9ja0ZvbzsKLQotICBPTl9DQUxMKCpmb28s
IERvVGhpcygpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLQotICAvLyBJbiBvcmRlciB0byB0
ZXN0IHRoZSBsZWFrIGRldGVjdG9yLCB3ZSBkZWxpYmVyYXRlbHkgbGVhayBmb28uCi0KLSAgLy8g
TWFrZXMgc3VyZSBHb29nbGUgTW9jaydzIGxlYWsgZGV0ZWN0b3IgY2FuIGNoYW5nZSB0aGUgZXhp
dCBjb2RlCi0gIC8vIHRvIDEgZXZlbiB3aGVuIHRoZSBjb2RlIGlzIGFscmVhZHkgZXhpdGluZyB3
aXRoIDAuCi0gIGV4aXQoMCk7Ci19Ci0KLVRFU1QoTGVha1Rlc3QsIENhdGNoZXNNdWx0aXBsZUxl
YWtlZE1vY2tPYmplY3RzKSB7Ci0gIE1vY2tGb28qIGZvbzEgPSBuZXcgTW9ja0ZvbzsKLSAgTW9j
a0ZvbyogZm9vMiA9IG5ldyBNb2NrRm9vOwotCi0gIE9OX0NBTEwoKmZvbzEsIERvVGhpcygpKS5X
aWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgRVhQRUNUX0NBTEwoKmZvbzIsIERvVGhpcygpKTsK
LSAgZm9vMi0+RG9UaGlzKCk7Ci0KLSAgLy8gSW4gb3JkZXIgdG8gdGVzdCB0aGUgbGVhayBkZXRl
Y3Rvciwgd2UgZGVsaWJlcmF0ZWx5IGxlYWsgZm9vMSBhbmQKLSAgLy8gZm9vMi4KLQotICAvLyBN
YWtlcyBzdXJlIEdvb2dsZSBNb2NrJ3MgbGVhayBkZXRlY3RvciBjYW4gY2hhbmdlIHRoZSBleGl0
IGNvZGUKLSAgLy8gdG8gMSBldmVuIHdoZW4gdGhlIGNvZGUgaXMgYWxyZWFkeSBleGl0aW5nIHdp
dGggMC4KLSAgZXhpdCgwKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay90ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2Nr
X2xpbmsyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMzEwYzNkODM0
MmEwMWRjMWZmZGU3NTkwYWYyNDM0ZjRiY2NmZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rMl90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbiksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIEdvb2dsZSBNb2Nr
IC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlz
IGZpbGUgaXMgZm9yIHZlcmlmeWluZyB0aGF0IHZhcmlvdXMgR29vZ2xlIE1vY2sgY29uc3RydWN0
cyBkbyBub3QKLS8vIHByb2R1Y2UgbGlua2VyIGVycm9ycyB3aGVuIGluc3RhbnRpYXRlZCBpbiBk
aWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMuCi0vLyBQbGVhc2Ugc2VlIGdtb2NrX2xpbmtfdGVz
dC5oIGZvciBkZXRhaWxzLgotCi0jZGVmaW5lIExpbmtUZXN0IExpbmtUZXN0MgotCi0jaW5jbHVk
ZSAgInRlc3QvZ21vY2tfbGlua190ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrX2xpbmtfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGlua190ZXN0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWU5N2QxMGNhM2FlODE2OTcwNWQwY2Ri
OTk2YTQ2NzhmYjljMGUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGlua190ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIHZsYWRs
QGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsg
Zm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaXMgZm9yIHZl
cmlmeWluZyB0aGF0IHZhcmlvdXMgR29vZ2xlIE1vY2sgY29uc3RydWN0cyBkbyBub3QKLS8vIHBy
b2R1Y2UgbGlua2VyIGVycm9ycyB3aGVuIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQgdHJhbnNs
YXRpb24gdW5pdHMuCi0vLyBQbGVhc2Ugc2VlIGdtb2NrX2xpbmtfdGVzdC5oIGZvciBkZXRhaWxz
LgotCi0jZGVmaW5lIExpbmtUZXN0IExpbmtUZXN0MQotCi0jaW5jbHVkZSAgInRlc3QvZ21vY2tf
bGlua190ZXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmtfdGVz
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rX3Rlc3QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWY1NWY1YmQ3ZjRmZjI4ZjBhOTU0YzhkN2I4NjY5NjU4ZWRlZmFmMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjY5ICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBm
cmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUg
dGVzdHMgdGhhdDoKLS8vIGEuIEEgaGVhZGVyIGZpbGUgZGVmaW5pbmcgYSBtb2NrIGNsYXNzIGNh
biBiZSBpbmNsdWRlZCBpbiBtdWx0aXBsZQotLy8gICAgdHJhbnNsYXRpb24gdW5pdHMgd2l0aG91
dCBjYXVzaW5nIGEgbGluayBlcnJvci4KLS8vIGIuIEFjdGlvbnMgYW5kIG1hdGNoZXJzIGNhbiBi
ZSBpbnN0YW50aWF0ZWQgd2l0aCBpZGVudGljYWwgdGVtcGxhdGUKLS8vICAgIGFyZ3VtZW50cyBp
biBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgd2l0aG91dCBjYXVzaW5nIGxpbmsKLS8vICAg
IGVycm9ycy4KLS8vICAgIFRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBhcmUgY3VycmVudGx5IHRl
c3RlZDoKLS8vICAgIEFjdGlvbnM6Ci0vLyAgICAgIFJldHVybigpCi0vLyAgICAgIFJldHVybih2
YWx1ZSkKLS8vICAgICAgUmV0dXJuTnVsbAotLy8gICAgICBSZXR1cm5SZWYKLS8vICAgICAgQXNz
aWduCi0vLyAgICAgIFNldEFyZ1BvaW50ZWUKLS8vICAgICAgU2V0QXJyYXlBcmd1bWVudAotLy8g
ICAgICBTZXRFcnJub0FuZFJldHVybgotLy8gICAgICBJbnZva2UoZnVuY3Rpb24pCi0vLyAgICAg
IEludm9rZShvYmplY3QsIG1ldGhvZCkKLS8vICAgICAgSW52b2tlV2l0aG91dEFyZ3MoZnVuY3Rp
b24pCi0vLyAgICAgIEludm9rZVdpdGhvdXRBcmdzKG9iamVjdCwgbWV0aG9kKQotLy8gICAgICBJ
bnZva2VBcmd1bWVudAotLy8gICAgICBXaXRoQXJnCi0vLyAgICAgIFdpdGhBcmdzCi0vLyAgICAg
IFdpdGhvdXRBcmdzCi0vLyAgICAgIERvQWxsCi0vLyAgICAgIERvRGVmYXVsdAotLy8gICAgICBJ
Z25vcmVSZXN1bHQKLS8vICAgICAgVGhyb3cKLS8vICAgICAgQUNUSU9OKCktZ2VuZXJhdGVkCi0v
LyAgICAgIEFDVElPTl9QKCktZ2VuZXJhdGVkCi0vLyAgICAgIEFDVElPTl9QMigpLWdlbmVyYXRl
ZAotLy8gICAgTWF0Y2hlcnM6Ci0vLyAgICAgIF8KLS8vICAgICAgQQotLy8gICAgICBBbgotLy8g
ICAgICBFcQotLy8gICAgICBHdCwgTHQsIEdlLCBMZSwgTmUKLS8vICAgICAgTm90TnVsbAotLy8g
ICAgICBSZWYKLS8vICAgICAgVHlwZWRFcQotLy8gICAgICBEb3VibGVFcQotLy8gICAgICBGbG9h
dEVxCi0vLyAgICAgIE5hblNlbnNpdGl2ZURvdWJsZUVxCi0vLyAgICAgIE5hblNlbnNpdGl2ZUZs
b2F0RXEKLS8vICAgICAgQ29udGFpbnNSZWdleAotLy8gICAgICBNYXRjaGVzUmVnZXgKLS8vICAg
ICAgRW5kc1dpdGgKLS8vICAgICAgSGFzU3Vic3RyCi0vLyAgICAgIFN0YXJ0c1dpdGgKLS8vICAg
ICAgU3RyQ2FzZUVxCi0vLyAgICAgIFN0ckNhc2VOZQotLy8gICAgICBTdHJFcQotLy8gICAgICBT
dHJOZQotLy8gICAgICBFbGVtZW50c0FyZQotLy8gICAgICBFbGVtZW50c0FyZUFycmF5Ci0vLyAg
ICAgIENvbnRhaW5lckVxCi0vLyAgICAgIEZpZWxkCi0vLyAgICAgIFByb3BlcnR5Ci0vLyAgICAg
IFJlc3VsdE9mKGZ1bmN0aW9uKQotLy8gICAgICBQb2ludGVlCi0vLyAgICAgIFRydWx5KHByZWRp
Y2F0ZSkKLS8vICAgICAgQWxsT2YKLS8vICAgICAgQW55T2YKLS8vICAgICAgTm90Ci0vLyAgICAg
IE1hdGNoZXJDYXN0PFQ+Ci0vLwotLy8gIFBsZWFzZSBub3RlOiB0aGlzIHRlc3QgZG9lcyBub3Qg
dmVyaWZ5IHRoZSBmdW5jdGlvbmluZyBvZiB0aGVzZQotLy8gIGNvbnN0cnVjdHMsIG9ubHkgdGhh
dCB0aGUgcHJvZ3JhbXMgdXNpbmcgdGhlbSB3aWxsIGxpbmsgc3VjY2Vzc2Z1bGx5LgotLy8KLS8v
IEltcGxlbWVudGF0aW9uIG5vdGU6Ci0vLyBUaGlzIHRlc3QgcmVxdWlyZXMgaWRlbnRpY2FsIGRl
ZmluaXRpb25zIG9mIEludGVyZmFjZSBhbmQgTW9jayB0byBiZQotLy8gaW5jbHVkZWQgaW4gZGlm
ZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzLiAgV2UgYWNoaWV2ZSB0aGlzIGJ5IHdyaXRpbmcKLS8v
IHRoZW0gaW4gdGhpcyBoZWFkZXIgYW5kICNpbmNsdWRpbmcgaXQgaW4gZ21vY2tfbGlua190ZXN0
LmNjIGFuZAotLy8gZ21vY2tfbGluazJfdGVzdC5jYy4gIEJlY2F1c2UgdGhlIHN5bWJvbHMgZ2Vu
ZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IKLS8vIHRob3NlIGNvbnN0cnVjdHMgbXVzdCBiZSBp
ZGVudGljYWwgaW4gYm90aCB0cmFuc2xhdGlvbiB1bml0cywKLS8vIGRlZmluaXRpb25zIG9mIElu
dGVyZmFjZSBhbmQgTW9jayB0ZXN0cyBNVVNUIGJlIGtlcHQgaW4gdGhlIFNBTUUKLS8vIE5PTi1B
Tk9OWU1PVVMgbmFtZXNwYWNlIGluIHRoaXMgZmlsZS4gIFRoZSB0ZXN0IGZpeHR1cmUgY2xhc3Mg
TGlua1Rlc3QKLS8vIGlzIGRlZmluZWQgYXMgTGlua1Rlc3QxIGluIGdtb2NrX2xpbmtfdGVzdC5j
YyBhbmQgYXMgTGlua1Rlc3QyIGluCi0vLyBnbW9ja19saW5rMl90ZXN0LmNjIHRvIGF2b2lkIHBy
b2R1Y2luZyBsaW5rZXIgZXJyb3JzLgotCi0jaWZuZGVmIEdNT0NLX1RFU1RfR01PQ0tfTElOS19U
RVNUX0hfCi0jZGVmaW5lIEdNT0NLX1RFU1RfR01PQ0tfTElOS19URVNUX0hfCi0KLSNpbmNsdWRl
ICJnbW9jay9nbW9jay5oIgotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jIGluY2x1
ZGUgPGVycm5vLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBv
cnQuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2lu
Y2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgdGVzdGluZzo6XzsKLXVzaW5nIHRlc3Rpbmc6OkE7Ci11
c2luZyB0ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIHRlc3Rpbmc6OkFueU9mOwotdXNpbmcgdGVzdGlu
Zzo6QXNzaWduOwotdXNpbmcgdGVzdGluZzo6Q29udGFpbmVyRXE7Ci11c2luZyB0ZXN0aW5nOjpE
b0FsbDsKLXVzaW5nIHRlc3Rpbmc6OkRvRGVmYXVsdDsKLXVzaW5nIHRlc3Rpbmc6OkRvdWJsZUVx
OwotdXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2luZyB0ZXN0aW5nOjpFbGVtZW50c0Fy
ZUFycmF5OwotdXNpbmcgdGVzdGluZzo6RW5kc1dpdGg7Ci11c2luZyB0ZXN0aW5nOjpFcTsKLXVz
aW5nIHRlc3Rpbmc6OkZpZWxkOwotdXNpbmcgdGVzdGluZzo6RmxvYXRFcTsKLXVzaW5nIHRlc3Rp
bmc6OkdlOwotdXNpbmcgdGVzdGluZzo6R3Q7Ci11c2luZyB0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11
c2luZyB0ZXN0aW5nOjpJZ25vcmVSZXN1bHQ7Ci11c2luZyB0ZXN0aW5nOjpJbnZva2U7Ci11c2lu
ZyB0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLXVzaW5nIHRlc3Rpbmc6Okludm9rZVdpdGhvdXRB
cmdzOwotdXNpbmcgdGVzdGluZzo6SXNOdWxsOwotdXNpbmcgdGVzdGluZzo6TGU7Ci11c2luZyB0
ZXN0aW5nOjpMdDsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoZXI7Ci11c2luZyB0ZXN0aW5nOjpNYXRj
aGVyQ2FzdDsKLXVzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZURvdWJsZUVxOwotdXNpbmcgdGVz
dGluZzo6TmFuU2Vuc2l0aXZlRmxvYXRFcTsKLXVzaW5nIHRlc3Rpbmc6Ok5lOwotdXNpbmcgdGVz
dGluZzo6Tm90OwotdXNpbmcgdGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIHRlc3Rpbmc6OlBvaW50
ZWU7Ci11c2luZyB0ZXN0aW5nOjpQcm9wZXJ0eTsKLXVzaW5nIHRlc3Rpbmc6OlJlZjsKLXVzaW5n
IHRlc3Rpbmc6OlJlc3VsdE9mOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGlu
Zzo6UmV0dXJuTnVsbDsKLXVzaW5nIHRlc3Rpbmc6OlJldHVyblJlZjsKLXVzaW5nIHRlc3Rpbmc6
OlNldEFyZ1BvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjpTZXRBcnJheUFyZ3VtZW50OwotdXNpbmcg
dGVzdGluZzo6U3RhcnRzV2l0aDsKLXVzaW5nIHRlc3Rpbmc6OlN0ckNhc2VFcTsKLXVzaW5nIHRl
c3Rpbmc6OlN0ckNhc2VOZTsKLXVzaW5nIHRlc3Rpbmc6OlN0ckVxOwotdXNpbmcgdGVzdGluZzo6
U3RyTmU7Ci11c2luZyB0ZXN0aW5nOjpUcnVseTsKLXVzaW5nIHRlc3Rpbmc6OlR5cGVkRXE7Ci11
c2luZyB0ZXN0aW5nOjpXaXRoQXJnOwotdXNpbmcgdGVzdGluZzo6V2l0aEFyZ3M7Ci11c2luZyB0
ZXN0aW5nOjpXaXRob3V0QXJnczsKLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotdXNp
bmcgdGVzdGluZzo6U2V0RXJybm9BbmRSZXR1cm47Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hBU19F
WENFUFRJT05TCi11c2luZyB0ZXN0aW5nOjpUaHJvdzsKLSNlbmRpZgotCi11c2luZyB0ZXN0aW5n
OjpDb250YWluc1JlZ2V4OwotdXNpbmcgdGVzdGluZzo6TWF0Y2hlc1JlZ2V4OwotCi1jbGFzcyBJ
bnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+SW50ZXJmYWNlKCkge30KLSAgdmlydHVh
bCB2b2lkIFZvaWRGcm9tU3RyaW5nKGNoYXIqIHN0cikgPSAwOwotICB2aXJ0dWFsIGNoYXIqIFN0
cmluZ0Zyb21TdHJpbmcoY2hhciogc3RyKSA9IDA7Ci0gIHZpcnR1YWwgaW50IEludEZyb21TdHJp
bmcoY2hhciogc3RyKSA9IDA7Ci0gIHZpcnR1YWwgaW50JiBJbnRSZWZGcm9tU3RyaW5nKGNoYXIq
IHN0cikgPSAwOwotICB2aXJ0dWFsIHZvaWQgVm9pZEZyb21GdW5jKHZvaWQoKmZ1bmMpKGNoYXIq
IHN0cikpID0gMDsKLSAgdmlydHVhbCB2b2lkIFZvaWRGcm9tSW50UmVmKGludCYgbikgPSAwOyAg
Ly8gTk9MSU5UCi0gIHZpcnR1YWwgdm9pZCBWb2lkRnJvbUZsb2F0KGZsb2F0IG4pID0gMDsKLSAg
dmlydHVhbCB2b2lkIFZvaWRGcm9tRG91YmxlKGRvdWJsZSBuKSA9IDA7Ci0gIHZpcnR1YWwgdm9p
ZCBWb2lkRnJvbVZlY3Rvcihjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiB2KSA9IDA7Ci19OwotCi1j
bGFzcyBNb2NrOiBwdWJsaWMgSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIE1vY2soKSB7fQotCi0g
IE1PQ0tfTUVUSE9EMShWb2lkRnJvbVN0cmluZywgdm9pZChjaGFyKiBzdHIpKTsKLSAgTU9DS19N
RVRIT0QxKFN0cmluZ0Zyb21TdHJpbmcsIGNoYXIqKGNoYXIqIHN0cikpOwotICBNT0NLX01FVEhP
RDEoSW50RnJvbVN0cmluZywgaW50KGNoYXIqIHN0cikpOwotICBNT0NLX01FVEhPRDEoSW50UmVm
RnJvbVN0cmluZywgaW50JihjaGFyKiBzdHIpKTsKLSAgTU9DS19NRVRIT0QxKFZvaWRGcm9tRnVu
Yywgdm9pZCh2b2lkKCpmdW5jKShjaGFyKiBzdHIpKSk7Ci0gIE1PQ0tfTUVUSE9EMShWb2lkRnJv
bUludFJlZiwgdm9pZChpbnQmIG4pKTsgIC8vIE5PTElOVAotICBNT0NLX01FVEhPRDEoVm9pZEZy
b21GbG9hdCwgdm9pZChmbG9hdCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMShWb2lkRnJvbURvdWJsZSwg
dm9pZChkb3VibGUgbikpOwotICBNT0NLX01FVEhPRDEoVm9pZEZyb21WZWN0b3IsIHZvaWQoY29u
c3Qgc3RkOjp2ZWN0b3I8aW50PiYgdikpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrKTsKLX07Ci0KLWNsYXNzIEludm9rZUhlbHBlciB7Ci0gcHVi
bGljOgotICBzdGF0aWMgdm9pZCBTdGF0aWNWb2lkRnJvbVZvaWQoKSB7fQotICB2b2lkIFZvaWRG
cm9tVm9pZCgpIHt9Ci0gIHN0YXRpYyB2b2lkIFN0YXRpY1ZvaWRGcm9tU3RyaW5nKGNoYXIqIC8q
IHN0ciAqLykge30KLSAgdm9pZCBWb2lkRnJvbVN0cmluZyhjaGFyKiAvKiBzdHIgKi8pIHt9Ci0g
IHN0YXRpYyBpbnQgU3RhdGljSW50RnJvbVN0cmluZyhjaGFyKiAvKiBzdHIgKi8pIHsgcmV0dXJu
IDE7IH0KLSAgc3RhdGljIGJvb2wgU3RhdGljQm9vbEZyb21TdHJpbmcoY29uc3QgY2hhciogLyog
c3RyICovKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi1jbGFzcyBGaWVsZEhlbHBlciB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBGaWVsZEhlbHBlcihpbnQgYV9maWVsZCkgOiBmaWVsZF8oYV9maWVs
ZCkge30KLSAgaW50IGZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmllbGRfOyB9Ci0gIGludCBmaWVs
ZF87ICAvLyBOT0xJTlQgLS0gbmVlZCBleHRlcm5hbCBhY2Nlc3MgdG8gZmllbGRfIHRvIHRlc3QK
LSAgICAgICAgICAgICAgIC8vICAgICAgICAgICB0aGUgRmllbGQgbWF0Y2hlci4KLX07Ci0KLS8v
IFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBSZXR1cm5Wb2lkIGFjdGlvbi4KLVRFU1QoTGlua1Rl
c3QsIFRlc3RSZXR1cm5Wb2lkKSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2Nr
LCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoUmV0dXJuKCkpOwotICBtb2NrLlZvaWRGcm9t
U3RyaW5nKE5VTEwpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmV0dXJuIGFj
dGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RSZXR1cm4pIHsKLSAgTW9jayBtb2NrOwotICBjaGFy
IGNoID0gJ3gnOwotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIFN0cmluZ0Zyb21TdHJpbmcoXykpLldp
bGxPbmNlKFJldHVybigmY2gpKTsKLSAgbW9jay5TdHJpbmdGcm9tU3RyaW5nKE5VTEwpOwotfQot
Ci0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmV0dXJuTnVsbCBhY3Rpb24uCi1URVNUKExp
bmtUZXN0LCBUZXN0UmV0dXJuTnVsbCkgewotICBNb2NrIG1vY2s7Ci0KLSAgRVhQRUNUX0NBTEwo
bW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFJldHVybigpKTsKLSAgbW9jay5Wb2lk
RnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFJldHVy
blJlZiBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0UmV0dXJuUmVmKSB7Ci0gIE1vY2sgbW9j
azsKLSAgaW50IG4gPSA0MjsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBJbnRSZWZGcm9tU3RyaW5n
KF8pKS5XaWxsT25jZShSZXR1cm5SZWYobikpOwotICBtb2NrLkludFJlZkZyb21TdHJpbmcoTlVM
TCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBBc3NpZ24gYWN0aW9uLgotVEVT
VChMaW5rVGVzdCwgVGVzdEFzc2lnbikgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7
Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKEFzc2ln
bigmY2gsICd5JykpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpOwotfQotCi0vLyBUZXN0
cyB0aGUgbGlua2FnZSBvZiB0aGUgU2V0QXJnUG9pbnRlZSBhY3Rpb24uCi1URVNUKExpbmtUZXN0
LCBUZXN0U2V0QXJnUG9pbnRlZSkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7Ci0K
LSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFNldEFyZ1Bv
aW50ZWU8MD4oJ3knKSk7Ci0gIG1vY2suVm9pZEZyb21TdHJpbmcoJmNoKTsKLX0KLQotLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFNldEFycmF5QXJndW1lbnQgYWN0aW9uLgotVEVTVChMaW5r
VGVzdCwgVGVzdFNldEFycmF5QXJndW1lbnQpIHsKLSAgTW9jayBtb2NrOwotICBjaGFyIGNoID0g
J3gnOwotICBjaGFyIGNoMiA9ICd5JzsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0
cmluZyhfKSkuV2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVudDwwPigmY2gyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Y2gyICsgMSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKCZjaCk7Ci19Ci0KLSNpZiAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFNldEVycm5v
QW5kUmV0dXJuIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RTZXRFcnJub0FuZFJldHVybikg
ewotICBNb2NrIG1vY2s7Ci0KLSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87Ci0gIEVYUEVDVF9D
QUxMKG1vY2ssIEludEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFNldEVycm5vQW5kUmV0dXJuKDEs
IC0xKSk7Ci0gIG1vY2suSW50RnJvbVN0cmluZyhOVUxMKTsKLSAgZXJybm8gPSBzYXZlZF9lcnJu
bzsKLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlIEludm9rZShmdW5jdGlvbikgYW5kIEludm9rZShvYmplY3QsIG1l
dGhvZCkgYWN0aW9ucy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RJbnZva2UpIHsKLSAgTW9jayBtb2Nr
OwotICBJbnZva2VIZWxwZXIgdGVzdF9pbnZva2VfaGVscGVyOwotCi0gIEVYUEVDVF9DQUxMKG1v
Y2ssIFZvaWRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZSgmSW52b2tlSGVs
cGVyOjpTdGF0aWNWb2lkRnJvbVN0cmluZykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKCZ0ZXN0
X2ludm9rZV9oZWxwZXIsICZJbnZva2VIZWxwZXI6OlZvaWRGcm9tU3RyaW5nKSk7Ci0gIG1vY2su
Vm9pZEZyb21TdHJpbmcoTlVMTCk7Ci0gIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7Ci19Ci0K
LS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJbnZva2VXaXRob3V0QXJncyBhY3Rpb24uCi1U
RVNUKExpbmtUZXN0LCBUZXN0SW52b2tlV2l0aG91dEFyZ3MpIHsKLSAgTW9jayBtb2NrOwotICBJ
bnZva2VIZWxwZXIgdGVzdF9pbnZva2VfaGVscGVyOwotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIFZv
aWRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZVdpdGhvdXRBcmdzKCZJbnZv
a2VIZWxwZXI6OlN0YXRpY1ZvaWRGcm9tVm9pZCkpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlV2l0
aG91dEFyZ3MoJnRlc3RfaW52b2tlX2hlbHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmSW52b2tlSGVscGVyOjpWb2lkRnJvbVZvaWQpKTsKLSAgbW9jay5Wb2lkRnJvbVN0
cmluZyhOVUxMKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlIEludm9rZUFyZ3VtZW50IGFjdGlvbi4KLVRFU1QoTGlua1Rlc3Qs
IFRlc3RJbnZva2VBcmd1bWVudCkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7Ci0K
LSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21GdW5jKF8pKS5XaWxsT25jZShJbnZva2VBcmd1
bWVudDwwPigmY2gpKTsKLSAgbW9jay5Wb2lkRnJvbUZ1bmMoSW52b2tlSGVscGVyOjpTdGF0aWNW
b2lkRnJvbVN0cmluZyk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBXaXRoQXJn
IGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RXaXRoQXJnKSB7Ci0gIE1vY2sgbW9jazsKLQot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkKLSAgICAgIC5XaWxsT25jZShX
aXRoQXJnPDA+KEludm9rZSgmSW52b2tlSGVscGVyOjpTdGF0aWNWb2lkRnJvbVN0cmluZykpKTsK
LSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ug
b2YgdGhlIFdpdGhBcmdzIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RXaXRoQXJncykgewot
ICBNb2NrIG1vY2s7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpCi0g
ICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8MD4oSW52b2tlKCZJbnZva2VIZWxwZXI6OlN0YXRpY1Zv
aWRGcm9tU3RyaW5nKSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpOwotfQotCi0vLyBU
ZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgV2l0aG91dEFyZ3MgYWN0aW9uLgotVEVTVChMaW5rVGVz
dCwgVGVzdFdpdGhvdXRBcmdzKSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2Nr
LCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoV2l0aG91dEFyZ3MoUmV0dXJuKCkpKTsKLSAg
bW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2Yg
dGhlIERvQWxsIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3REb0FsbCkgewotICBNb2NrIG1v
Y2s7Ci0gIGNoYXIgY2ggPSAneCc7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJp
bmcoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigneScpLCBSZXR1
cm4oKSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKCZjaCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBs
aW5rYWdlIG9mIHRoZSBEb0RlZmF1bHQgYWN0aW9uLgotVEVTVChMaW5rVGVzdCwgVGVzdERvRGVm
YXVsdCkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7Ci0KLSAgT05fQ0FMTChtb2Nr
LCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIEVYUEVDVF9D
QUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShEb0RlZmF1bHQoKSk7Ci0gIG1v
Y2suVm9pZEZyb21TdHJpbmcoJmNoKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhl
IElnbm9yZVJlc3VsdCBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0SWdub3JlUmVzdWx0KSB7
Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSku
V2lsbE9uY2UoSWdub3JlUmVzdWx0KFJldHVybig0MikpKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmlu
ZyhOVUxMKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0vLyBUZXN0cyB0aGUgbGlu
a2FnZSBvZiB0aGUgVGhyb3cgYWN0aW9uLgotVEVTVChMaW5rVGVzdCwgVGVzdFRocm93KSB7Ci0g
IE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2ls
bE9uY2UoVGhyb3coNDIpKTsKLSAgRVhQRUNUX1RIUk9XKG1vY2suVm9pZEZyb21TdHJpbmcoTlVM
TCksIGludCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRoZSBB
Q1RJT04qKCkgbWFjcm9zIHRyaWdnZXIgd2FybmluZyBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1h
bAotLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdpdGggLVc0LiAgVW5mb3J0dW5hdGVseSB0aGV5IGNh
bm5vdCBiZSBmaXhlZCBpbgotLy8gdGhlIG1hY3JvIGRlZmluaXRpb24sIGFzIHRoZSB3YXJuaW5n
cyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1hY3JvCi0vLyBpcyBleHBhbmRlZCBhbmQgbWFjcm8g
ZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNwcmFnbWEuICBUaGVyZWZvcmUKLS8vIHdlIHN1cHBy
ZXNzIHRoZW0gaGVyZS4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwdXNoKQot
IyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYKLQotLy8gVGVzdHMgdGhlIGxp
bmthZ2Ugb2YgYWN0aW9ucyBjcmVhdGVkIHVzaW5nIEFDVElPTiBtYWNyby4KLW5hbWVzcGFjZSB7
Ci1BQ1RJT04oUmV0dXJuMSkgeyByZXR1cm4gMTsgfQotfQotCi1URVNUKExpbmtUZXN0LCBUZXN0
QWN0aW9uTWFjcm8pIHsKLSAgTW9jayBtb2NrOwotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEludEZy
b21TdHJpbmcoXykpLldpbGxPbmNlKFJldHVybjEoKSk7Ci0gIG1vY2suSW50RnJvbVN0cmluZyhO
VUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgYWN0aW9ucyBjcmVhdGVkIHVzaW5n
IEFDVElPTl9QIG1hY3JvLgotbmFtZXNwYWNlIHsKLUFDVElPTl9QKFJldHVybkFyZ3VtZW50LCBy
ZXRfdmFsdWUpIHsgcmV0dXJuIHJldF92YWx1ZTsgfQotfQotCi1URVNUKExpbmtUZXN0LCBUZXN0
QWN0aW9uUE1hY3JvKSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBJbnRG
cm9tU3RyaW5nKF8pKS5XaWxsT25jZShSZXR1cm5Bcmd1bWVudCg0MikpOwotICBtb2NrLkludEZy
b21TdHJpbmcoTlVMTCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIGFjdGlvbnMgY3Jl
YXRlZCB1c2luZyBBQ1RJT05fUDIgbWFjcm8uCi1uYW1lc3BhY2UgewotQUNUSU9OX1AyKFJldHVy
bkVxdWFsc0VpdGhlck9mLCBmaXJzdCwgc2Vjb25kKSB7Ci0gIHJldHVybiBhcmcwID09IGZpcnN0
IHx8IGFyZzAgPT0gc2Vjb25kOwotfQotfQotCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdh
cm5pbmcocG9wKQotI2VuZGlmCi0KLVRFU1QoTGlua1Rlc3QsIFRlc3RBY3Rpb25QMk1hY3JvKSB7
Ci0gIE1vY2sgbW9jazsKLSAgY2hhciBjaCA9ICd4JzsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBJ
bnRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNlKFJldHVybkVxdWFsc0VpdGhlck9mKCJv
bmUiLCAidHdvIikpOwotICBtb2NrLkludEZyb21TdHJpbmcoJmNoKTsKLX0KLQotLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlICJfIiBtYXRjaGVyLgotVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNo
ZXJBbnl0aGluZykgewotICBNb2NrIG1vY2s7Ci0KLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0
cmluZyhfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5r
YWdlIG9mIHRoZSBBIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckEpIHsKLSAg
TW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoQTxjaGFyKj4oKSkp
LldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0
aGUgRXEgYW5kIHRoZSAiYmFyZSB2YWx1ZSIgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RN
YXRjaGVyc0VxKSB7Ci0gIE1vY2sgbW9jazsKLSAgY29uc3QgY2hhciogcCA9ICJ4IjsKLQotICBP
Tl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKEVxKHApKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoY29uc3RfY2FzdDxjaGFyKj4oInki
KSkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBs
aW5rYWdlIG9mIHRoZSBMdCwgR3QsIExlLCBHZSwgYW5kIE5lIG1hdGNoZXJzLgotVEVTVChMaW5r
VGVzdCwgVGVzdE1hdGNoZXJzUmVsYXRpb25zKSB7Ci0gIE1vY2sgbW9jazsKLQotICBPTl9DQUxM
KG1vY2ssIFZvaWRGcm9tRmxvYXQoTHQoMS4wZikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsK
LSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbUZsb2F0KEd0KDEuMGYpKSkuV2lsbEJ5RGVmYXVsdChS
ZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21GbG9hdChMZSgxLjBmKSkpLldpbGxC
eURlZmF1bHQoUmV0dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tRmxvYXQoR2UoMS4w
ZikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbUZs
b2F0KE5lKDEuMGYpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
ZSBsaW5rYWdlIG9mIHRoZSBOb3ROdWxsIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0
Y2hlck5vdE51bGwpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21T
dHJpbmcoTm90TnVsbCgpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoZSBsaW5rYWdlIG9mIHRoZSBJc051bGwgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RN
YXRjaGVySXNOdWxsKSB7Ci0gIE1vY2sgbW9jazsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9t
U3RyaW5nKElzTnVsbCgpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoZSBsaW5rYWdlIG9mIHRoZSBSZWYgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRj
aGVyUmVmKSB7Ci0gIE1vY2sgbW9jazsKLSAgaW50IGEgPSAwOwotCi0gIE9OX0NBTEwobW9jaywg
Vm9pZEZyb21JbnRSZWYoUmVmKGEpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBUeXBlZEVxIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0
LCBUZXN0TWF0Y2hlclR5cGVkRXEpIHsKLSAgTW9jayBtb2NrOwotICBsb25nIGEgPSAwOwotCi0g
IE9OX0NBTEwobW9jaywgVm9pZEZyb21JbnRSZWYoVHlwZWRFcTxpbnQmPihhKSkpLldpbGxCeURl
ZmF1bHQoUmV0dXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgRmxvYXRF
cSwgRG91YmxlRXEsIE5hblNlbnNpdGl2ZUZsb2F0RXEgYW5kCi0vLyBOYW5TZW5zaXRpdmVEb3Vi
bGVFcSBtYXRjaGVycy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyc0Zsb2F0aW5nUG9pbnQp
IHsKLSAgTW9jayBtb2NrOwotICBmbG9hdCBhID0gMDsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRG
cm9tRmxvYXQoRmxvYXRFcShhKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICBPTl9DQUxM
KG1vY2ssIFZvaWRGcm9tRG91YmxlKERvdWJsZUVxKGEpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21GbG9hdChOYW5TZW5zaXRpdmVGbG9hdEVxKGEp
KSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21Eb3Vi
bGUoTmFuU2Vuc2l0aXZlRG91YmxlRXEoYSkpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJu
KCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgQ29udGFpbnNSZWdleCBtYXRj
aGVyLgotVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJDb250YWluc1JlZ2V4KSB7Ci0gIE1vY2sg
bW9jazsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKENvbnRhaW5zUmVnZXgoIi4q
IikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ug
b2YgdGhlIE1hdGNoZXNSZWdleCBtYXRjaGVyLgotVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJN
YXRjaGVzUmVnZXgpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21T
dHJpbmcoTWF0Y2hlc1JlZ2V4KCIuKiIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBTdGFydHNXaXRoLCBFbmRzV2l0aCwgYW5kIEhh
c1N1YnN0ciBtYXRjaGVycy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyc1N1YnN0cmluZ3Mp
IHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoU3RhcnRz
V2l0aCgiYSIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9p
ZEZyb21TdHJpbmcoRW5kc1dpdGgoImMiKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICBP
Tl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKEhhc1N1YnN0cigiYiIpKSkuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBTdHJFcSwgU3Ry
TmUsIFN0ckNhc2VFcSwgYW5kIFN0ckNhc2VOZSBtYXRjaGVycy4KLVRFU1QoTGlua1Rlc3QsIFRl
c3RNYXRjaGVyc1N0cmluZ0VxdWFsaXR5KSB7Ci0gIE1vY2sgbW9jazsKLSAgT05fQ0FMTChtb2Nr
LCBWb2lkRnJvbVN0cmluZyhTdHJFcSgiYSIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0g
IE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoU3RyTmUoImEiKSkpLldpbGxCeURlZmF1bHQo
UmV0dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKFN0ckNhc2VFcSgiYSIp
KSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJp
bmcoU3RyQ2FzZU5lKCJhIikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEVsZW1lbnRzQXJlIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0
LCBUZXN0TWF0Y2hlckVsZW1lbnRzQXJlKSB7Ci0gIE1vY2sgbW9jazsKLQotICBPTl9DQUxMKG1v
Y2ssIFZvaWRGcm9tVmVjdG9yKEVsZW1lbnRzQXJlKCdhJywgXykpKS5XaWxsQnlEZWZhdWx0KFJl
dHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEVsZW1lbnRzQXJlQXJy
YXkgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyRWxlbWVudHNBcmVBcnJheSkg
ewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgYXJyW10gPSB7ICdhJywgJ2InIH07Ci0KLSAgT05fQ0FM
TChtb2NrLCBWb2lkRnJvbVZlY3RvcihFbGVtZW50c0FyZUFycmF5KGFycikpKS5XaWxsQnlEZWZh
dWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIENvbnRhaW5l
ckVxIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckNvbnRhaW5lckVxKSB7Ci0g
IE1vY2sgbW9jazsKLSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotCi0gIE9OX0NBTEwobW9jaywgVm9p
ZEZyb21WZWN0b3IoQ29udGFpbmVyRXEodikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0K
LQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEZpZWxkIG1hdGNoZXIuCi1URVNUKExpbmtU
ZXN0LCBUZXN0TWF0Y2hlckZpZWxkKSB7Ci0gIEZpZWxkSGVscGVyIGhlbHBlcigwKTsKLQotICBN
YXRjaGVyPGNvbnN0IEZpZWxkSGVscGVyJj4gbSA9IEZpZWxkKCZGaWVsZEhlbHBlcjo6ZmllbGRf
LCBFcSgwKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhoZWxwZXIpKTsKLQotICBNYXRjaGVy
PGNvbnN0IEZpZWxkSGVscGVyKj4gbTIgPSBGaWVsZCgmRmllbGRIZWxwZXI6OmZpZWxkXywgRXEo
MCkpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCZoZWxwZXIpKTsKLX0KLQotLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlIFByb3BlcnR5IG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0
TWF0Y2hlclByb3BlcnR5KSB7Ci0gIEZpZWxkSGVscGVyIGhlbHBlcigwKTsKLQotICBNYXRjaGVy
PGNvbnN0IEZpZWxkSGVscGVyJj4gbSA9IFByb3BlcnR5KCZGaWVsZEhlbHBlcjo6ZmllbGQsIEVx
KDApKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGhlbHBlcikpOwotCi0gIE1hdGNoZXI8Y29u
c3QgRmllbGRIZWxwZXIqPiBtMiA9IFByb3BlcnR5KCZGaWVsZEhlbHBlcjo6ZmllbGQsIEVxKDAp
KTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygmaGVscGVyKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
ZSBsaW5rYWdlIG9mIHRoZSBSZXN1bHRPZiBtYXRjaGVyLgotVEVTVChMaW5rVGVzdCwgVGVzdE1h
dGNoZXJSZXN1bHRPZikgewotICBNYXRjaGVyPGNoYXIqPiBtID0gUmVzdWx0T2YoJkludm9rZUhl
bHBlcjo6U3RhdGljSW50RnJvbVN0cmluZywgRXEoMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoTlVMTCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmVzdWx0T2YgbWF0
Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyUG9pbnRlZSkgewotICBpbnQgbiA9IDE7
Ci0KLSAgTWF0Y2hlcjxpbnQqPiBtID0gUG9pbnRlZShFcSgxKSk7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcygmbikpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgVHJ1bHkgbWF0
Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyVHJ1bHkpIHsKLSAgTWF0Y2hlcjxjb25z
dCBjaGFyKj4gbSA9IFRydWx5KCZJbnZva2VIZWxwZXI6OlN0YXRpY0Jvb2xGcm9tU3RyaW5nKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmth
Z2Ugb2YgdGhlIEFsbE9mIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckFsbE9m
KSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gQWxsT2YoXywgRXEoMSkpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoMSkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgQW55T2YgbWF0
Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyQW55T2YpIHsKLSAgTWF0Y2hlcjxpbnQ+
IG0gPSBBbnlPZihfLCBFcSgxKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBOb3QgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3Qs
IFRlc3RNYXRjaGVyTm90KSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gTm90KF8pOwotICBFWFBFQ1Rf
RkFMU0UobS5NYXRjaGVzKDEpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIE1h
dGNoZXJDYXN0PFQ+KCkgZnVuY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckNhc3Qp
IHsKLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IE1hdGNoZXJDYXN0PGNvbnN0IGNoYXIqPihf
KTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQotI2VuZGlmICAvLyBHTU9D
S19URVNUX0dNT0NLX0xJTktfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9n
bW9ja19vdXRwdXRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3Qu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVjZWQ4YTgxZjIzMDgzODFhODMwNGQz
MGFkMDVkZGNhYjliOGI2ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDE4MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0iIiJUZXN0cyB0aGUgdGV4dCBvdXRwdXQgb2YgR29vZ2xlIEMrKyBNb2NraW5n
IEZyYW1ld29yay4KLQotU1lOT1BTSVMKLSAgICAgICBnbW9ja19vdXRwdXRfdGVzdC5weSAtLWJ1
aWxkX2Rpcj1CVUlMRC9ESVIgLS1nZW5nb2xkZW4KLSAgICAgICAgICMgd2hlcmUgQlVJTEQvRElS
IGNvbnRhaW5zIHRoZSBidWlsdCBnbW9ja19vdXRwdXRfdGVzdF8gZmlsZS4KLSAgICAgICBnbW9j
a19vdXRwdXRfdGVzdC5weSAtLWdlbmdvbGRlbgotICAgICAgIGdtb2NrX291dHB1dF90ZXN0LnB5
Ci0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQot
aW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotaW1wb3J0IGdtb2NrX3Rlc3RfdXRp
bHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xkZW4gZmlsZQotR0VOR09M
REVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi0KLVBST0dSQU1fUEFUSCA9IGdtb2NrX3Rlc3RfdXRp
bHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdnbW9ja19vdXRwdXRfdGVzdF8nKQotQ09NTUFORCA9
IFtQUk9HUkFNX1BBVEgsICctLWd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoPTAnLCAnLS1ndGVzdF9w
cmludF90aW1lPTAnXQotR09MREVOX05BTUUgPSAnZ21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4
dCcKLUdPTERFTl9QQVRIID0gb3MucGF0aC5qb2luKGdtb2NrX3Rlc3RfdXRpbHMuR2V0U291cmNl
RGlyKCksIEdPTERFTl9OQU1FKQotCi0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJD
aGFuZ2VzIGFsbCBXaW5kb3dzL01hYyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5k
aW5ncy4iIiIKLQotICByZXR1cm4gcy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHIn
LCAnXG4nKQotCi0KLWRlZiBSZW1vdmVSZXBvcnRIZWFkZXJBbmRGb290ZXIob3V0cHV0KToKLSAg
IiIiUmVtb3ZlcyBHb29nbGUgVGVzdCByZXN1bHQgcmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIg
ZnJvbSB0aGUgb3V0cHV0LiIiIgotCi0gIG91dHB1dCA9IHJlLnN1YihyJy4qZ3Rlc3RfbWFpbi4q
XG4nLCAnJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcWy4qXGQrIHRlc3RzLipcbics
ICcnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xbLiogdGVzdCBlbnZpcm9ubWVudCAu
KlxuJywgJycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHInXFs9K1xdIFxkKyB0ZXN0cyAu
KiByYW4uKicsICcnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJy4qIEZBSUxFRCBURVNU
U1xuJywgJycsIG91dHB1dCkKLSAgcmV0dXJuIG91dHB1dAotCi0KLWRlZiBSZW1vdmVMb2NhdGlv
bnMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIGZyb20gYSBH
b29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIEFyZ3M6Ci0gICAgICAgb3V0cHV0OiAg
dGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0IHByb2dyYW0uCi0KLSAgUmV0dXJuczoKLSAgICAg
ICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2NhdGlvbiBpbmZvIChpbiB0aGUgZm9ybSBvZgotICAg
ICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJTkVfTlVNQkVSOiAnb3IKLSAgICAgICAnRElSRUNU
T1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIpOiAnKSByZXBsYWNlZCBieQotICAgICAgICdGSUxF
OiM6ICcuCi0gICIiIgotCi0gIHJldHVybiByZS5zdWIocicuKlsvXFxdKC4rKShcOlxkK3xcKFxk
K1wpKVw6JywgJ0ZJTEU6IzonLCBvdXRwdXQpCi0KLQotZGVmIE5vcm1hbGl6ZUVycm9yTWFya2Vy
KG91dHB1dCk6Ci0gICIiIk5vcm1hbGl6ZXMgdGhlIGVycm9yIG1hcmtlciwgd2hpY2ggaXMgZGlm
ZmVyZW50IG9uIFdpbmRvd3MgdnMgb24gTGludXguIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJyBl
cnJvcjogJywgJyBGYWlsdXJlXG4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZU1lbW9yeUFkZHJl
c3NlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIG1lbW9yeSBhZGRyZXNzZXMgZnJvbSB0aGUgdGVz
dCBvdXRwdXQuIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJ0BcdysnLCAnQDB4IycsIG91dHB1dCkK
LQotCi1kZWYgUmVtb3ZlVGVzdE5hbWVzT2ZMZWFrZWRNb2NrcyhvdXRwdXQpOgotICAiIiJSZW1v
dmVzIHRoZSB0ZXN0IG5hbWVzIG9mIGxlYWtlZCBtb2NrIG9iamVjdHMgZnJvbSB0aGUgdGVzdCBv
dXRwdXQuIiIiCi0KLSAgcmV0dXJuIHJlLnN1YihyJ1wodXNlZCBpbiB0ZXN0IC4rXCkgJywgJycs
IG91dHB1dCkKLQotCi1kZWYgR2V0TGVha3lUZXN0cyhvdXRwdXQpOgotICAiIiJSZXR1cm5zIGEg
bGlzdCBvZiB0ZXN0IG5hbWVzIHRoYXQgbGVhayBtb2NrIG9iamVjdHMuIiIiCi0KLSAgIyBmaW5k
YWxsKCkgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIG1hdGNoZXMgb2YgdGhlIHJlZ2V4IGluIG91dHB1
dC4KLSAgIyBGb3IgZXhhbXBsZSwgaWYgJyh1c2VkIGluIHRlc3QgRm9vVGVzdC5CYXIpJyBpcyBp
biBvdXRwdXQsIHRoZQotICAjIGxpc3Qgd2lsbCBjb250YWluICdGb29UZXN0LkJhcicuCi0gIHJl
dHVybiByZS5maW5kYWxsKHInXCh1c2VkIGluIHRlc3QgKC4rKVwpJywgb3V0cHV0KQotCi0KLWRl
ZiBHZXROb3JtYWxpemVkT3V0cHV0QW5kTGVha3lUZXN0cyhvdXRwdXQpOgotICAiIiJOb3JtYWxp
emVzIHRoZSBvdXRwdXQgb2YgZ21vY2tfb3V0cHV0X3Rlc3RfLgotCi0gIEFyZ3M6Ci0gICAgb3V0
cHV0OiBUaGUgdGVzdCBvdXRwdXQuCi0KLSAgUmV0dXJuczoKLSAgICBBIHR1cGxlICh0aGUgbm9y
bWFsaXplZCB0ZXN0IG91dHB1dCwgdGhlIGxpc3Qgb2YgdGVzdCBuYW1lcyB0aGF0IGhhdmUKLSAg
ICBsZWFrZWQgbW9ja3MpLgotICAiIiIKLQotICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91
dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlUmVwb3J0SGVhZGVyQW5kRm9vdGVyKG91dHB1dCkKLSAg
b3V0cHV0ID0gTm9ybWFsaXplRXJyb3JNYXJrZXIob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVM
b2NhdGlvbnMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVNZW1vcnlBZGRyZXNzZXMob3V0cHV0
KQotICByZXR1cm4gKFJlbW92ZVRlc3ROYW1lc09mTGVha2VkTW9ja3Mob3V0cHV0KSwgR2V0TGVh
a3lUZXN0cyhvdXRwdXQpKQotCi0KLWRlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoY21kKToKLSAg
IiIiUnVucyBhIGNvbW1hbmQgaW4gYSBzdWItcHJvY2VzcywgYW5kIHJldHVybnMgaXRzIFNURE9V
VCBpbiBhIHN0cmluZy4iIiIKLQotICByZXR1cm4gZ21vY2tfdGVzdF91dGlscy5TdWJwcm9jZXNz
KGNtZCwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAotCi0KLWRlZiBHZXROb3JtYWxpemVk
Q29tbWFuZE91dHB1dEFuZExlYWt5VGVzdHMoY21kKToKLSAgIiIiUnVucyBhIGNvbW1hbmQgYW5k
IHJldHVybnMgaXRzIG5vcm1hbGl6ZWQgb3V0cHV0IGFuZCBhIGxpc3Qgb2YgbGVha3kgdGVzdHMu
Ci0KLSAgQXJnczoKLSAgICBjbWQ6ICB0aGUgc2hlbGwgY29tbWFuZC4KLSAgIiIiCi0KLSAgIyBE
aXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBXaW5kb3dzLgotICBvcy5lbnZpcm9uWydHVEVT
VF9DQVRDSF9FWENFUFRJT05TJ10gPSAnMScKLSAgcmV0dXJuIEdldE5vcm1hbGl6ZWRPdXRwdXRB
bmRMZWFreVRlc3RzKEdldFNoZWxsQ29tbWFuZE91dHB1dChjbWQpKQotCi0KLWNsYXNzIEdNb2Nr
T3V0cHV0VGVzdChnbW9ja190ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgZGVmIHRlc3RPdXRwdXQo
c2VsZik6Ci0gICAgKG91dHB1dCwgbGVha3lfdGVzdHMpID0gR2V0Tm9ybWFsaXplZENvbW1hbmRP
dXRwdXRBbmRMZWFreVRlc3RzKENPTU1BTkQpCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERF
Tl9QQVRILCAncmInKQotICAgIGdvbGRlbiA9IGdvbGRlbl9maWxlLnJlYWQoKQotICAgIGdvbGRl
bl9maWxlLmNsb3NlKCkKLQotICAgICMgVGhlIG5vcm1hbGl6ZWQgb3V0cHV0IHNob3VsZCBtYXRj
aCB0aGUgZ29sZGVuIGZpbGUuCi0gICAgc2VsZi5hc3NlcnRFcXVhbHMoZ29sZGVuLCBvdXRwdXQp
Ci0KLSAgICAjIFRoZSByYXcgb3V0cHV0IHNob3VsZCBjb250YWluIDIgbGVha2VkIG1vY2sgb2Jq
ZWN0IGVycm9ycyBmb3IKLSAgICAjIHRlc3QgR01vY2tPdXRwdXRUZXN0LkNhdGNoZXNMZWFrZWRN
b2Nrcy4KLSAgICBzZWxmLmFzc2VydEVxdWFscyhbJ0dNb2NrT3V0cHV0VGVzdC5DYXRjaGVzTGVh
a2VkTW9ja3MnLAotICAgICAgICAgICAgICAgICAgICAgICAnR01vY2tPdXRwdXRUZXN0LkNhdGNo
ZXNMZWFrZWRNb2NrcyddLAotICAgICAgICAgICAgICAgICAgICAgIGxlYWt5X3Rlc3RzKQotCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGlmIHN5cy5hcmd2WzE6XSA9PSBbR0VOR09M
REVOX0ZMQUddOgotICAgIChvdXRwdXQsIF8pID0gR2V0Tm9ybWFsaXplZENvbW1hbmRPdXRwdXRB
bmRMZWFreVRlc3RzKENPTU1BTkQpCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRI
LCAnd2InKQotICAgIGdvbGRlbl9maWxlLndyaXRlKG91dHB1dCkKLSAgICBnb2xkZW5fZmlsZS5j
bG9zZSgpCi0gIGVsc2U6Ci0gICAgZ21vY2tfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVz
dC9nbW9ja19vdXRwdXRfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0
Y2JhMzQyYWRmOWQ2NjcxNmQ3OGQ3MGY1NTVlZjFiNWE5YjRjMTMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRw
dXRfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2ds
ZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIE1vY2sncyBvdXRwdXQgaW4g
dmFyaW91cyBzY2VuYXJpb3MuICBUaGlzIGVuc3VyZXMgdGhhdAotLy8gR29vZ2xlIE1vY2sncyBt
ZXNzYWdlcyBhcmUgcmVhZGFibGUgYW5kIHVzZWZ1bC4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0KLXVzaW5nIHRlc3Rpbmc6Ol87Ci11c2luZyB0ZXN0aW5nOjpBbnlO
dW1iZXI7Ci11c2luZyB0ZXN0aW5nOjpHZTsKLXVzaW5nIHRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11
c2luZyB0ZXN0aW5nOjpOYWdneU1vY2s7Ci11c2luZyB0ZXN0aW5nOjpSZWY7Ci11c2luZyB0ZXN0
aW5nOjpSZXR1cm47Ci11c2luZyB0ZXN0aW5nOjpTZXF1ZW5jZTsKLQotY2xhc3MgTW9ja0ZvbyB7
Ci0gcHVibGljOgotICBNb2NrRm9vKCkge30KLQotICBNT0NLX01FVEhPRDMoQmFyLCBjaGFyKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzLCBpbnQgaSwgZG91YmxlIHgpKTsKLSAgTU9DS19NRVRIT0QyKEJh
cjIsIGJvb2woaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfTUVUSE9EMihCYXIzLCB2b2lkKGludCB4
LCBpbnQgeSkpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhNb2NrRm9vKTsKLX07Ci0KLWNsYXNzIEdNb2NrT3V0cHV0VGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIE5hZ2d5TW9jazxNb2NrRm9vPiBmb29fOwotfTsKLQot
VEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgRXhwZWN0ZWRDYWxsKSB7Ci0gIHRlc3Rpbmc6OkdNT0NL
X0ZMQUcodmVyYm9zZSkgPSAiaW5mbyI7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBf
KSk7Ci0gIGZvb18uQmFyMigwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKLQotICB0ZXN0aW5nOjpH
TU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOwotfQotCi1URVNUX0YoR01vY2tPdXRwdXRU
ZXN0LCBFeHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbikgewotICB0ZXN0aW5nOjpHTU9DS19GTEFH
KHZlcmJvc2UpID0gImluZm8iOwotCi0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjMoMCwgXykpOwot
ICBmb29fLkJhcjMoMCwgMCk7ICAvLyBFeHBlY3RlZCBjYWxsCi0KLSAgdGVzdGluZzo6R01PQ0tf
RkxBRyh2ZXJib3NlKSA9ICJ3YXJuaW5nIjsKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwg
RXhwbGljaXRBY3Rpb25zUnVuT3V0KSB7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoXywgXykp
Ci0gICAgICAuVGltZXMoMikKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oZmFsc2UpKTsKLSAgZm9v
Xy5CYXIyKDIsIDIpOwotICBmb29fLkJhcjIoMSwgMSk7ICAvLyBFeHBsaWNpdCBhY3Rpb25zIGlu
IEVYUEVDVF9DQUxMIHJ1biBvdXQuCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuZXhw
ZWN0ZWRDYWxsKSB7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgXykpOwotCi0gIGZvb18u
QmFyMigxLCAwKTsgIC8vIFVuZXhwZWN0ZWQgY2FsbAotICBmb29fLkJhcjIoMCwgMCk7ICAvLyBF
eHBlY3RlZCBjYWxsCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuZXhwZWN0ZWRDYWxs
VG9Wb2lkRnVuY3Rpb24pIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMygwLCBfKSk7Ci0KLSAg
Zm9vXy5CYXIzKDEsIDApOyAgLy8gVW5leHBlY3RlZCBjYWxsCi0gIGZvb18uQmFyMygwLCAwKTsg
IC8vIEV4cGVjdGVkIGNhbGwKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgRXhjZXNzaXZl
Q2FsbCkgewotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDAsIF8pKTsKLQotICBmb29fLkJhcjIo
MCwgMCk7ICAvLyBFeHBlY3RlZCBjYWxsCi0gIGZvb18uQmFyMigwLCAxKTsgIC8vIEV4Y2Vzc2l2
ZSBjYWxsCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIEV4Y2Vzc2l2ZUNhbGxUb1ZvaWRG
dW5jdGlvbikgewotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIzKDAsIF8pKTsKLQotICBmb29fLkJh
cjMoMCwgMCk7ICAvLyBFeHBlY3RlZCBjYWxsCi0gIGZvb18uQmFyMygwLCAxKTsgIC8vIEV4Y2Vz
c2l2ZSBjYWxsCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuaW50ZXJlc3RpbmdDYWxs
KSB7Ci0gIGZvb18uQmFyMigwLCAxKTsgIC8vIFVuaW50ZXJlc3RpbmcgY2FsbAotfQotCi1URVNU
X0YoR01vY2tPdXRwdXRUZXN0LCBVbmludGVyZXN0aW5nQ2FsbFRvVm9pZEZ1bmN0aW9uKSB7Ci0g
IGZvb18uQmFyMygwLCAxKTsgIC8vIFVuaW50ZXJlc3RpbmcgY2FsbAotfQotCi1URVNUX0YoR01v
Y2tPdXRwdXRUZXN0LCBSZXRpcmVkRXhwZWN0YXRpb24pIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywg
QmFyMihfLCBfKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gIEVYUEVDVF9DQUxM
KGZvb18sIEJhcjIoMCwgMCkpOwotCi0gIGZvb18uQmFyMigxLCAxKTsKLSAgZm9vXy5CYXIyKDEs
IDEpOyAgLy8gTWF0Y2hlcyBhIHJldGlyZWQgZXhwZWN0YXRpb24KLSAgZm9vXy5CYXIyKDAsIDAp
OwotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBVbnNhdGlzZmllZFByZXJlcXVpc2l0ZSkg
ewotICB7Ci0gICAgSW5TZXF1ZW5jZSBzOwotICAgIEVYUEVDVF9DQUxMKGZvb18sIEJhcihfLCAw
LCBfKSk7Ci0gICAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSk7Ci0gICAgRVhQRUNUX0NB
TEwoZm9vXywgQmFyMigxLCBfKSk7Ci0gIH0KLQotICBmb29fLkJhcjIoMSwgMCk7ICAvLyBIYXMg
b25lIGltbWVkaWF0ZSB1bnNhdGlzZmllZCBwcmUtcmVxdWlzaXRlCi0gIGZvb18uQmFyKCJIaSIs
IDAsIDApOwotICBmb29fLkJhcjIoMCwgMCk7Ci0gIGZvb18uQmFyMigxLCAwKTsKLX0KLQotVEVT
VF9GKEdNb2NrT3V0cHV0VGVzdCwgVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGVzKSB7Ci0gIFNlcXVl
bmNlIHMxLCBzMjsKLQotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIoXywgMCwgXykpCi0gICAgICAu
SW5TZXF1ZW5jZShzMSk7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwgMCkpCi0gICAgICAu
SW5TZXF1ZW5jZShzMik7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMSwgXykpCi0gICAgICAu
SW5TZXF1ZW5jZShzMSwgczIpOwotCi0gIGZvb18uQmFyMigxLCAwKTsgIC8vIEhhcyB0d28gaW1t
ZWRpYXRlIHVuc2F0aXNmaWVkIHByZS1yZXF1aXNpdGVzCi0gIGZvb18uQmFyKCJIaSIsIDAsIDAp
OwotICBmb29fLkJhcjIoMCwgMCk7Ci0gIGZvb18uQmFyMigxLCAwKTsKLX0KLQotVEVTVF9GKEdN
b2NrT3V0cHV0VGVzdCwgVW5zYXRpc2ZpZWRXaXRoKSB7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJh
cjIoXywgXykpLldpdGgoR2UoKSk7Ci19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuc2F0
aXNmaWVkRXhwZWN0YXRpb24pIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyKF8sIF8sIF8pKTsK
LSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkKLSAgICAgIC5UaW1lcygyKTsKLQotICBm
b29fLkJhcjIoMCwgMSk7Ci19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIE1pc21hdGNoQXJn
dW1lbnRzKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAiSGkiOwotICBFWFBFQ1RfQ0FMTChm
b29fLCBCYXIoUmVmKHMpLCBfLCBHZSgwKSkpOwotCi0gIGZvb18uQmFyKCJIbyIsIDAsIC0wLjEp
OyAgLy8gTWlzbWF0Y2ggYXJndW1lbnRzCi0gIGZvb18uQmFyKHMsIDAsIDApOwotfQotCi1URVNU
X0YoR01vY2tPdXRwdXRUZXN0LCBNaXNtYXRjaFdpdGgpIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywg
QmFyMihHZSgyKSwgR2UoMSkpKQotICAgICAgLldpdGgoR2UoKSk7Ci0KLSAgZm9vXy5CYXIyKDIs
IDMpOyAgLy8gTWlzbWF0Y2ggV2l0aCgpCi0gIGZvb18uQmFyMigyLCAxKTsKLX0KLQotVEVTVF9G
KEdNb2NrT3V0cHV0VGVzdCwgTWlzbWF0Y2hBcmd1bWVudHNBbmRXaXRoKSB7Ci0gIEVYUEVDVF9D
QUxMKGZvb18sIEJhcjIoR2UoMiksIEdlKDEpKSkKLSAgICAgIC5XaXRoKEdlKCkpOwotCi0gIGZv
b18uQmFyMigxLCAzKTsgIC8vIE1pc21hdGNoIGFyZ3VtZW50cyBhbmQgbWlzbWF0Y2ggV2l0aCgp
Ci0gIGZvb18uQmFyMigyLCAxKTsKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgVW5leHBl
Y3RlZENhbGxXaXRoRGVmYXVsdEFjdGlvbikgewotICBPTl9DQUxMKGZvb18sIEJhcjIoXywgXykp
Ci0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOyAgIC8vIERlZmF1bHQgYWN0aW9u
ICMxCi0gIE9OX0NBTEwoZm9vXywgQmFyMigxLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJl
dHVybihmYWxzZSkpOyAgLy8gRGVmYXVsdCBhY3Rpb24gIzIKLQotICBFWFBFQ1RfQ0FMTChmb29f
LCBCYXIyKDIsIDIpKTsKLSAgZm9vXy5CYXIyKDEsIDApOyAgLy8gVW5leHBlY3RlZCBjYWxsLCB0
YWtlcyBkZWZhdWx0IGFjdGlvbiAjMi4KLSAgZm9vXy5CYXIyKDAsIDApOyAgLy8gVW5leHBlY3Rl
ZCBjYWxsLCB0YWtlcyBkZWZhdWx0IGFjdGlvbiAjMS4KLSAgZm9vXy5CYXIyKDIsIDIpOyAgLy8g
RXhwZWN0ZWQgY2FsbC4KLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgRXhjZXNzaXZlQ2Fs
bFdpdGhEZWZhdWx0QWN0aW9uKSB7Ci0gIE9OX0NBTEwoZm9vXywgQmFyMihfLCBfKSkKLSAgICAg
IC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKLSAg
T05fQ0FMTChmb29fLCBCYXIyKDEsIF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKGZh
bHNlKSk7ICAvLyBEZWZhdWx0IGFjdGlvbiAjMgotCi0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIo
MiwgMikpOwotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDEsIDEpKTsKLQotICBmb29fLkJhcjIo
MiwgMik7ICAvLyBFeHBlY3RlZCBjYWxsLgotICBmb29fLkJhcjIoMiwgMik7ICAvLyBFeGNlc3Np
dmUgY2FsbCwgdGFrZXMgZGVmYXVsdCBhY3Rpb24gIzEuCi0gIGZvb18uQmFyMigxLCAxKTsgIC8v
IEV4cGVjdGVkIGNhbGwuCi0gIGZvb18uQmFyMigxLCAxKTsgIC8vIEV4Y2Vzc2l2ZSBjYWxsLCB0
YWtlcyBkZWZhdWx0IGFjdGlvbiAjMi4KLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgVW5p
bnRlcmVzdGluZ0NhbGxXaXRoRGVmYXVsdEFjdGlvbikgewotICBPTl9DQUxMKGZvb18sIEJhcjIo
XywgXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOyAgIC8vIERlZmF1bHQg
YWN0aW9uICMxCi0gIE9OX0NBTEwoZm9vXywgQmFyMigxLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZh
dWx0KFJldHVybihmYWxzZSkpOyAgLy8gRGVmYXVsdCBhY3Rpb24gIzIKLQotICBmb29fLkJhcjIo
MiwgMik7ICAvLyBVbmludGVyZXN0aW5nIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMxLgot
ICBmb29fLkJhcjIoMSwgMSk7ICAvLyBVbmludGVyZXN0aW5nIGNhbGwsIHRha2VzIGRlZmF1bHQg
YWN0aW9uICMyLgotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBFeHBsaWNpdEFjdGlvbnNS
dW5PdXRXaXRoRGVmYXVsdEFjdGlvbikgewotICBPTl9DQUxMKGZvb18sIEJhcjIoXywgXykpCi0g
ICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOyAgIC8vIERlZmF1bHQgYWN0aW9uICMx
Ci0KLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkKLSAgICAgIC5UaW1lcygyKQotICAg
ICAgLldpbGxPbmNlKFJldHVybihmYWxzZSkpOwotICBmb29fLkJhcjIoMiwgMik7Ci0gIGZvb18u
QmFyMigxLCAxKTsgIC8vIEV4cGxpY2l0IGFjdGlvbnMgaW4gRVhQRUNUX0NBTEwgcnVuIG91dC4K
LX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwgQ2F0Y2hlc0xlYWtlZE1vY2tzKSB7Ci0gIE1v
Y2tGb28qIGZvbzEgPSBuZXcgTW9ja0ZvbzsKLSAgTW9ja0ZvbyogZm9vMiA9IG5ldyBNb2NrRm9v
OwotCi0gIC8vIEludm9rZXMgT05fQ0FMTCBvbiBmb28xLgotICBPTl9DQUxMKCpmb28xLCBCYXIo
XywgXywgXykpLldpbGxCeURlZmF1bHQoUmV0dXJuKCdhJykpOwotCi0gIC8vIEludm9rZXMgRVhQ
RUNUX0NBTEwgb24gZm9vMi4KLSAgRVhQRUNUX0NBTEwoKmZvbzIsIEJhcjIoXywgXykpOwotICBF
WFBFQ1RfQ0FMTCgqZm9vMiwgQmFyMigxLCBfKSk7Ci0gIEVYUEVDVF9DQUxMKCpmb28yLCBCYXIz
KF8sIF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gIGZvbzItPkJhcjIoMiwgMSk7Ci0gIGZvbzIt
PkJhcjIoMSwgMSk7Ci0KLSAgLy8gQm90aCBmb28xIGFuZCBmb28yIGFyZSBkZWxpYmVyYXRlbHkg
bGVha2VkLgotfQotCi12b2lkIFRlc3RDYXRjaGVzTGVha2VkTW9ja3NJbkFkSG9jVGVzdHMoKSB7
Ci0gIE1vY2tGb28qIGZvbyA9IG5ldyBNb2NrRm9vOwotCi0gIC8vIEludm9rZXMgRVhQRUNUX0NB
TEwgb24gZm9vLgotICBFWFBFQ1RfQ0FMTCgqZm9vLCBCYXIyKF8sIF8pKTsKLSAgZm9vLT5CYXIy
KDIsIDEpOwotCi0gIC8vIGZvbyBpcyBkZWxpYmVyYXRlbHkgbGVha2VkLgotfQotCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZU1vY2soJmFy
Z2MsIGFyZ3YpOwotCi0gIC8vIEVuc3VyZXMgdGhhdCB0aGUgdGVzdHMgcGFzcyBubyBtYXR0ZXIg
d2hhdCB2YWx1ZSBvZgotICAvLyAtLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2NrcyBhbmQgLS1nbW9j
a192ZXJib3NlIHRoZSB1c2VyIHNwZWNpZmllcy4KLSAgdGVzdGluZzo6R01PQ0tfRkxBRyhjYXRj
aF9sZWFrZWRfbW9ja3MpID0gdHJ1ZTsKLSAgdGVzdGluZzo6R01PQ0tfRkxBRyh2ZXJib3NlKSA9
ICJ3YXJuaW5nIjsKLQotICBUZXN0Q2F0Y2hlc0xlYWtlZE1vY2tzSW5BZEhvY1Rlc3RzKCk7Ci0g
IHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrX291dHB1dF90ZXN0X2dvbGRlbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX291
dHB1dF90ZXN0X2dvbGRlbi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OWQ1
ZWViMDM3NTNiYWZkNzJiMjQ0OWE4NDM1MzZmNWNhMjEwZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRf
dGVzdF9nb2xkZW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLVsgUlVOICAg
ICAgXSBHTW9ja091dHB1dFRlc3QuRXhwZWN0ZWRDYWxsCi0KLUZJTEU6IzogRVhQRUNUX0NBTEwo
Zm9vXywgQmFyMigwLCBfKSkgaW52b2tlZAotU3RhY2sgdHJhY2U6Ci0KLUZJTEU6IzogTW9jayBm
dW5jdGlvbiBjYWxsIG1hdGNoZXMgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkuLi4KLSAg
ICBGdW5jdGlvbiBjYWxsOiBCYXIyKDAsIDApCi0gICAgICAgICAgUmV0dXJuczogZmFsc2UKLVN0
YWNrIHRyYWNlOgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5FeHBlY3RlZENhbGwKLVsg
UlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuRXhwZWN0ZWRDYWxsVG9Wb2lkRnVuY3Rpb24KLQot
RklMRTojOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIzKDAsIF8pKSBpbnZva2VkCi1TdGFjayB0cmFj
ZToKLQotRklMRTojOiBNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTChmb29f
LCBCYXIzKDAsIF8pKS4uLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjMoMCwgMCkKLVN0YWNrIHRy
YWNlOgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5FeHBlY3RlZENhbGxUb1ZvaWRGdW5j
dGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5FeHBsaWNpdEFjdGlvbnNSdW5PdXQK
LQotR01PQ0sgV0FSTklORzoKLUZJTEU6IzogVG9vIGZldyBhY3Rpb25zIHNwZWNpZmllZCBpbiBF
WFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKS4uLgotRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIHR3
aWNlLCBidXQgaGFzIG9ubHkgMSBXaWxsT25jZSgpLgotR01PQ0sgV0FSTklORzoKLUZJTEU6Izog
QWN0aW9ucyByYW4gb3V0IGluIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoXywgXykpLi4uCi1DYWxs
ZWQgMiB0aW1lcywgYnV0IG9ubHkgMSBXaWxsT25jZSgpIGlzIHNwZWNpZmllZCAtIHJldHVybmlu
ZyBkZWZhdWx0IHZhbHVlLgotU3RhY2sgdHJhY2U6Ci1bICAgICAgIE9LIF0gR01vY2tPdXRwdXRU
ZXN0LkV4cGxpY2l0QWN0aW9uc1J1bk91dAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5V
bmV4cGVjdGVkQ2FsbAotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2Fs
bDogQmFyMigxLCAwKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmll
ZCB0aGUgZm9sbG93aW5nIDEgZXhwZWN0YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2g6Ci0KLUZJ
TEU6IzogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkuLi4KLSAgRXhwZWN0ZWQgYXJnICMw
OiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVhbDogMQotICAgICAgICAgRXhwZWN0ZWQ6
IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5z
YXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbmV4cGVj
dGVkQ2FsbAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbFRvVm9p
ZEZ1bmN0aW9uCi11bmtub3duIGZpbGU6IEZhaWx1cmUKLQotVW5leHBlY3RlZCBtb2NrIGZ1bmN0
aW9uIGNhbGwgLSByZXR1cm5pbmcgZGlyZWN0bHkuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMygx
LCAwKQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQg
aXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjMoMCwgXykp
Li4uCi0gIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMAotICAgICAgICAgICBBY3R1YWw6
IDEKLSAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQotICAgICAgICAgICBBY3R1
YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKLVsgIEZBSUxFRCAgXSBH
TW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbgotWyBSVU4gICAgICBd
IEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsCi1GSUxFOiM6IEZhaWx1cmUKLU1vY2sgZnVu
Y3Rpb24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCAtIHJldHVybmluZyBkZWZhdWx0
IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMCwgMSkKLSAgICAgICAgICBSZXR1cm5z
OiBmYWxzZQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAg
IEFjdHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZQotWyAgRkFJ
TEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsCi1bIFJVTiAgICAgIF0gR01vY2tP
dXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxUb1ZvaWRGdW5jdGlvbgotRklMRTojOiBGYWlsdXJlCi1N
b2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQgLSByZXR1cm5pbmcg
ZGlyZWN0bHkuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMygwLCAxKQotICAgICAgICAgRXhwZWN0
ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogY2FsbGVkIHR3aWNlIC0g
b3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5F
eGNlc3NpdmVDYWxsVG9Wb2lkRnVuY3Rpb24KLVsgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3Qu
VW5pbnRlcmVzdGluZ0NhbGwKLQotR01PQ0sgV0FSTklORzoKLVVuaW50ZXJlc3RpbmcgbW9jayBm
dW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2Fs
bDogQmFyMigwLCAxKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1OT1RFOiBZb3UgY2FuIHNh
ZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRoaXMgY2FsbCBzaG91bGQgbm90
IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBFWFBFQ1Rf
Q0FMTCgpIGlmIHlvdSBkb24ndCBtZWFuIHRvIGVuZm9yY2UgdGhlIGNhbGwuICBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9j
cy9Db29rQm9vay5tZCNrbm93aW5nLXdoZW4tdG8tZXhwZWN0IGZvciBkZXRhaWxzLgotWyAgICAg
ICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbAotWyBSVU4gICAgICBdIEdN
b2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbFRvVm9pZEZ1bmN0aW9uCi0KLUdNT0NLIFdB
Uk5JTkc6Ci1VbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkaXJl
Y3RseS4KLSAgICBGdW5jdGlvbiBjYWxsOiBCYXIzKDAsIDEpCi1OT1RFOiBZb3UgY2FuIHNhZmVs
eSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRoaXMgY2FsbCBzaG91bGQgbm90IGhh
cHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBFWFBFQ1RfQ0FM
TCgpIGlmIHlvdSBkb24ndCBtZWFuIHRvIGVuZm9yY2UgdGhlIGNhbGwuICBTZWUgaHR0cHM6Ly9n
aXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9D
b29rQm9vay5tZCNrbm93aW5nLXdoZW4tdG8tZXhwZWN0IGZvciBkZXRhaWxzLgotWyAgICAgICBP
SyBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbFRvVm9pZEZ1bmN0aW9uCi1bIFJV
TiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LlJldGlyZWRFeHBlY3RhdGlvbgotdW5rbm93biBmaWxl
OiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRl
ZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAxKQotICAgICAgICAgIFJl
dHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDIgZXhwZWN0YXRp
b25zLCBidXQgbm9uZSBtYXRjaGVkOgotCi1GSUxFOiM6IHRyaWVkIGV4cGVjdGF0aW9uICMwOiBF
WFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKS4uLgotICAgICAgICAgRXhwZWN0ZWQ6IHRoZSBl
eHBlY3RhdGlvbiBpcyBhY3RpdmUKLSAgICAgICAgICAgQWN0dWFsOiBpdCBpcyByZXRpcmVkCi0g
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBj
YWxsZWQgb25jZSAtIHNhdHVyYXRlZCBhbmQgcmV0aXJlZAotRklMRTojOiB0cmllZCBleHBlY3Rh
dGlvbiAjMTogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSkuLi4KLSAgRXhwZWN0ZWQgYXJn
ICMwOiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVhbDogMQotICBFeHBlY3RlZCBhcmcg
IzE6IGlzIGVxdWFsIHRvIDAKLSAgICAgICAgICAgQWN0dWFsOiAxCi0gICAgICAgICBFeHBlY3Rl
ZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1
bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlJldGly
ZWRFeHBlY3RhdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZFBy
ZXJlcXVpc2l0ZQotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBmdW5j
dGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2FsbDog
QmFyMigxLCAwKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmllZCB0
aGUgZm9sbG93aW5nIDIgZXhwZWN0YXRpb25zLCBidXQgbm9uZSBtYXRjaGVkOgotCi1GSUxFOiM6
IHRyaWVkIGV4cGVjdGF0aW9uICMwOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDAsIDApKS4uLgot
ICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDAKLSAgICAgICAgICAgQWN0dWFsOiAxCi0g
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBu
ZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1GSUxFOiM6IHRyaWVkIGV4cGVj
dGF0aW9uICMxOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDEsIF8pKS4uLgotICAgICAgICAgRXhw
ZWN0ZWQ6IGFsbCBwcmUtcmVxdWlzaXRlcyBhcmUgc2F0aXNmaWVkCi0gICAgICAgICAgIEFjdHVh
bDogdGhlIGZvbGxvd2luZyBpbW1lZGlhdGUgcHJlLXJlcXVpc2l0ZXMgYXJlIG5vdCBzYXRpc2Zp
ZWQ6Ci1GSUxFOiM6IHByZS1yZXF1aXNpdGUgIzAKLSAgICAgICAgICAgICAgICAgICAoZW5kIG9m
IHByZS1yZXF1aXNpdGVzKQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0g
ICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQot
WyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZFByZXJlcXVpc2l0ZQotWyBS
VU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMKLXVua25v
d24gZmlsZTogRmFpbHVyZQotCi1VbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVy
bmluZyBkZWZhdWx0IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMSwgMCkKLSAgICAg
ICAgICBSZXR1cm5zOiBmYWxzZQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAyIGV4
cGVjdGF0aW9ucywgYnV0IG5vbmUgbWF0Y2hlZDoKLQotRklMRTojOiB0cmllZCBleHBlY3RhdGlv
biAjMDogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSkuLi4KLSAgRXhwZWN0ZWQgYXJnICMw
OiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVhbDogMQotICAgICAgICAgRXhwZWN0ZWQ6
IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5z
YXRpc2ZpZWQgYW5kIGFjdGl2ZQotRklMRTojOiB0cmllZCBleHBlY3RhdGlvbiAjMTogRVhQRUNU
X0NBTEwoZm9vXywgQmFyMigxLCBfKSkuLi4KLSAgICAgICAgIEV4cGVjdGVkOiBhbGwgcHJlLXJl
cXVpc2l0ZXMgYXJlIHNhdGlzZmllZAotICAgICAgICAgICBBY3R1YWw6IHRoZSBmb2xsb3dpbmcg
aW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIGFyZSBub3Qgc2F0aXNmaWVkOgotRklMRTojOiBwcmUt
cmVxdWlzaXRlICMwCi1GSUxFOiM6IHByZS1yZXF1aXNpdGUgIzEKLSAgICAgICAgICAgICAgICAg
ICAoZW5kIG9mIHByZS1yZXF1aXNpdGVzKQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxl
ZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5k
IGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZFByZXJlcXVp
c2l0ZXMKLVsgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRXaXRoCi1GSUxF
OiM6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQ
RUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4KLSAgICBFeHBlY3RlZCBhcmdzOiBhcmUgYSBw
YWlyIHdoZXJlIHRoZSBmaXJzdCA+PSB0aGUgc2Vjb25kCi0gICAgICAgICBFeHBlY3RlZDogdG8g
YmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlz
ZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuc2F0aXNmaWVk
V2l0aAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZEV4cGVjdGF0aW9u
Ci1GSUxFOiM6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0
Y2ggRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkuLi4KLSAgICAgICAgIEV4cGVjdGVkOiB0
byBiZSBjYWxsZWQgdHdpY2UKLSAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgb25jZSAtIHVuc2F0
aXNmaWVkIGFuZCBhY3RpdmUKLUZJTEU6IzogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNhbGwg
Y291bnQgZG9lc24ndCBtYXRjaCBFWFBFQ1RfQ0FMTChmb29fLCBCYXIoXywgXywgXykpLi4uCi0g
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBu
ZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tP
dXRwdXRUZXN0LlVuc2F0aXNmaWVkRXhwZWN0YXRpb24KLVsgUlVOICAgICAgXSBHTW9ja091dHB1
dFRlc3QuTWlzbWF0Y2hBcmd1bWVudHMKLXVua25vd24gZmlsZTogRmFpbHVyZQotCi1VbmV4cGVj
dGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgotICAgIEZ1
bmN0aW9uIGNhbGw6IEJhcihAMHgjICJIbyIsIDAsIC0wLjEpCi0gICAgICAgICAgUmV0dXJuczog
J1wwJwotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQg
aXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcihSZWYocyks
IF8sIEdlKDApKSkuLi4KLSAgRXhwZWN0ZWQgYXJnICMwOiByZWZlcmVuY2VzIHRoZSB2YXJpYWJs
ZSBAMHgjICJIaSIKLSAgICAgICAgICAgQWN0dWFsOiAiSG8iLCB3aGljaCBpcyBsb2NhdGVkIEAw
eCMKLSAgRXhwZWN0ZWQgYXJnICMyOiBpcyA+PSAwCi0gICAgICAgICAgIEFjdHVhbDogLTAuMQot
ICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDog
bmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2Nr
T3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3VtZW50cwotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVz
dC5NaXNtYXRjaFdpdGgKLXVua25vd24gZmlsZTogRmFpbHVyZQotCi1VbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNh
bGw6IEJhcjIoMiwgMykKLSAgICAgICAgICBSZXR1cm5zOiBmYWxzZQotR29vZ2xlIE1vY2sgdHJp
ZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgotCi1G
SUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoR2UoMiksIEdlKDEpKSkuLi4KLSAgICBFeHBl
Y3RlZCBhcmdzOiBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA+PSB0aGUgc2Vjb25kCi0gICAg
ICAgICAgIEFjdHVhbDogZG9uJ3QgbWF0Y2gKLSAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxs
ZWQgb25jZQotICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFu
ZCBhY3RpdmUKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuTWlzbWF0Y2hXaXRoCi1bIFJV
TiAgICAgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoQXJndW1lbnRzQW5kV2l0aAotdW5rbm93
biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJu
aW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAzKQotICAgICAg
ICAgIFJldHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDEgZXhw
ZWN0YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2g6Ci0KLUZJTEU6IzogRVhQRUNUX0NBTEwoZm9v
XywgQmFyMihHZSgyKSwgR2UoMSkpKS4uLgotICBFeHBlY3RlZCBhcmcgIzA6IGlzID49IDIKLSAg
ICAgICAgICAgQWN0dWFsOiAxCi0gICAgRXhwZWN0ZWQgYXJnczogYXJlIGEgcGFpciB3aGVyZSB0
aGUgZmlyc3QgPj0gdGhlIHNlY29uZAotICAgICAgICAgICBBY3R1YWw6IGRvbid0IG1hdGNoCi0g
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBu
ZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tP
dXRwdXRUZXN0Lk1pc21hdGNoQXJndW1lbnRzQW5kV2l0aAotWyBSVU4gICAgICBdIEdNb2NrT3V0
cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0aW9uCi11bmtub3duIGZpbGU6IEZh
aWx1cmUKLQotVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwgLSB0YWtpbmcgZGVmYXVsdCBh
Y3Rpb24gc3BlY2lmaWVkIGF0OgotRklMRTojOgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMSwg
MCkKLSAgICAgICAgICBSZXR1cm5zOiBmYWxzZQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxv
d2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVD
VF9DQUxMKGZvb18sIEJhcjIoMiwgMikpLi4uCi0gIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwg
dG8gMgotICAgICAgICAgICBBY3R1YWw6IDEKLSAgRXhwZWN0ZWQgYXJnICMxOiBpcyBlcXVhbCB0
byAyCi0gICAgICAgICAgIEFjdHVhbDogMAotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxl
ZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5k
IGFjdGl2ZQotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlv
biBjYWxsIC0gdGFraW5nIGRlZmF1bHQgYWN0aW9uIHNwZWNpZmllZCBhdDoKLUZJTEU6IzoKLSAg
ICBGdW5jdGlvbiBjYWxsOiBCYXIyKDAsIDApCi0gICAgICAgICAgUmV0dXJuczogdHJ1ZQotR29v
Z2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0
IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMiwgMikpLi4uCi0gIEV4
cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMgotICAgICAgICAgICBBY3R1YWw6IDAKLSAgRXhw
ZWN0ZWQgYXJnICMxOiBpcyBlcXVhbCB0byAyCi0gICAgICAgICAgIEFjdHVhbDogMAotICAgICAg
ICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIg
Y2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0
VGVzdC5VbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0aW9uCi1bIFJVTiAgICAgIF0gR01vY2tP
dXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxXaXRoRGVmYXVsdEFjdGlvbgotRklMRTojOiBGYWlsdXJl
Ci1Nb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQgLSB0YWtpbmcg
ZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVkIGF0OgotRklMRTojOgotICAgIEZ1bmN0aW9uIGNhbGw6
IEJhcjIoMiwgMikKLSAgICAgICAgICBSZXR1cm5zOiB0cnVlCi0gICAgICAgICBFeHBlY3RlZDog
dG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgdHdpY2UgLSBvdmVy
LXNhdHVyYXRlZCBhbmQgYWN0aXZlCi1GSUxFOiM6IEZhaWx1cmUKLU1vY2sgZnVuY3Rpb24gY2Fs
bGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBzcGVj
aWZpZWQgYXQ6Ci1GSUxFOiM6Ci0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAxKQotICAgICAg
ICAgIFJldHVybnM6IGZhbHNlCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UK
LSAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgdHdpY2UgLSBvdmVyLXNhdHVyYXRlZCBhbmQgYWN0
aXZlCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxXaXRoRGVmYXVs
dEFjdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbFdp
dGhEZWZhdWx0QWN0aW9uCi0KLUdNT0NLIFdBUk5JTkc6Ci1VbmludGVyZXN0aW5nIG1vY2sgZnVu
Y3Rpb24gY2FsbCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZpZWQgYXQ6Ci1GSUxFOiM6
Ci0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigyLCAyKQotICAgICAgICAgIFJldHVybnM6IHRydWUK
LU5PVEU6IFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgYWJvdmUgd2FybmluZyB1bmxlc3MgdGhp
cyBjYWxsIHNob3VsZCBub3QgaGFwcGVuLiAgRG8gbm90IHN1cHByZXNzIGl0IGJ5IGJsaW5kbHkg
YWRkaW5nIGFuIEVYUEVDVF9DQUxMKCkgaWYgeW91IGRvbid0IG1lYW4gdG8gZW5mb3JjZSB0aGUg
Y2FsbC4gIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYmxvYi9tYXN0
ZXIvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI2tub3dpbmctd2hlbi10by1leHBlY3QgZm9y
IGRldGFpbHMuCi0KLUdNT0NLIFdBUk5JTkc6Ci1VbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24g
Y2FsbCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZpZWQgYXQ6Ci1GSUxFOiM6Ci0gICAg
RnVuY3Rpb24gY2FsbDogQmFyMigxLCAxKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1OT1RF
OiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRoaXMgY2Fs
bCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGluZGx5IGFkZGlu
ZyBhbiBFWFBFQ1RfQ0FMTCgpIGlmIHlvdSBkb24ndCBtZWFuIHRvIGVuZm9yY2UgdGhlIGNhbGwu
ICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dv
b2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCNrbm93aW5nLXdoZW4tdG8tZXhwZWN0IGZvciBkZXRh
aWxzLgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbFdpdGhE
ZWZhdWx0QWN0aW9uCi1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkV4cGxpY2l0QWN0aW9u
c1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uCi0KLUdNT0NLIFdBUk5JTkc6Ci1GSUxFOiM6IFRvbyBm
ZXcgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4K
LUV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSwgYnV0IGhhcyBvbmx5IDEgV2lsbE9uY2UoKS4K
LUdNT0NLIFdBUk5JTkc6Ci1GSUxFOiM6IEFjdGlvbnMgcmFuIG91dCBpbiBFWFBFQ1RfQ0FMTChm
b29fLCBCYXIyKF8sIF8pKS4uLgotQ2FsbGVkIDIgdGltZXMsIGJ1dCBvbmx5IDEgV2lsbE9uY2Uo
KSBpcyBzcGVjaWZpZWQgLSB0YWtpbmcgZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVkIGF0OgotRklM
RTojOgotU3RhY2sgdHJhY2U6Ci1bICAgICAgIE9LIF0gR01vY2tPdXRwdXRUZXN0LkV4cGxpY2l0
QWN0aW9uc1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uCi1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRU
ZXN0LkNhdGNoZXNMZWFrZWRNb2NrcwotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5DYXRj
aGVzTGVha2VkTW9ja3MKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENh
bGwKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxUb1ZvaWRGdW5j
dGlvbgotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsCi1bICBGQUlM
RUQgIF0gR01vY2tPdXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxUb1ZvaWRGdW5jdGlvbgotWyAgRkFJ
TEVEICBdIEdNb2NrT3V0cHV0VGVzdC5SZXRpcmVkRXhwZWN0YXRpb24KLVsgIEZBSUxFRCAgXSBH
TW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGUKLVsgIEZBSUxFRCAgXSBHTW9j
a091dHB1dFRlc3QuVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGVzCi1bICBGQUlMRUQgIF0gR01vY2tP
dXRwdXRUZXN0LlVuc2F0aXNmaWVkV2l0aAotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5V
bnNhdGlzZmllZEV4cGVjdGF0aW9uCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21h
dGNoQXJndW1lbnRzCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoV2l0aAot
WyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3VtZW50c0FuZFdpdGgKLVsg
IEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxXaXRoRGVmYXVsdEFjdGlv
bgotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsV2l0aERlZmF1bHRB
Y3Rpb24KLQotCi1GSUxFOiM6IEVSUk9SOiB0aGlzIG1vY2sgb2JqZWN0IHNob3VsZCBiZSBkZWxl
dGVkIGJ1dCBuZXZlciBpcy4gSXRzIGFkZHJlc3MgaXMgQDB4Iy4KLUZJTEU6IzogRVJST1I6IHRo
aXMgbW9jayBvYmplY3Qgc2hvdWxkIGJlIGRlbGV0ZWQgYnV0IG5ldmVyIGlzLiBJdHMgYWRkcmVz
cyBpcyBAMHgjLgotRklMRTojOiBFUlJPUjogdGhpcyBtb2NrIG9iamVjdCBzaG91bGQgYmUgZGVs
ZXRlZCBidXQgbmV2ZXIgaXMuIEl0cyBhZGRyZXNzIGlzIEAweCMuCi1FUlJPUjogMyBsZWFrZWQg
bW9jayBvYmplY3RzIGZvdW5kIGF0IHByb2dyYW0gZXhpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3Rlc3QvZ21vY2tfc3RyZXNzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX3N0
cmVzc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTZiYWRkYThlZWMz
ZTk3MDY2ZDVlNWRjOGUxOGJkNDJlMjFlOGNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfc3RyZXNzX3Rlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBjb25zdHJ1Y3RzIGNhbiBiZSB1
c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mCi0vLyB0aHJlYWRzIGNvbmN1cnJlbnRseS4KLQotI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNw
YWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIHsKLQotLy8gRnJvbSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPi4KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsK
LQotLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHRlc3QgdGhyZWFkcyAobm90IGluY2x1ZGluZyBo
ZWxwZXIgdGhyZWFkcykKLS8vIHRvIGNyZWF0ZS4KLWNvbnN0IGludCBrTWF4VGVzdFRocmVhZHMg
PSA1MDsKLQotLy8gSG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IGEgdGFzayBpbiBhIHRlc3QgdGhy
ZWFkLgotY29uc3QgaW50IGtSZXBlYXQgPSA1MDsKLQotY2xhc3MgTW9ja0ZvbyB7Ci0gcHVibGlj
OgotICBNT0NLX01FVEhPRDEoQmFyLCBpbnQoaW50IG4pKTsgIC8vIE5PTElOVAotICBNT0NLX01F
VEhPRDIoQmF6LCBjaGFyKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBzdGQ6OnN0cmluZyYgczIpKTsg
IC8vIE5PTElOVAotfTsKLQotLy8gSGVscGVyIGZvciB3YWl0aW5nIGZvciB0aGUgZ2l2ZW4gdGhy
ZWFkIHRvIGZpbmlzaCBhbmQgdGhlbiBkZWxldGluZyBpdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotdm9pZCBKb2luQW5kRGVsZXRlKFRocmVhZFdpdGhQYXJhbTxUPiogdCkgewotICB0LT5Kb2lu
KCk7Ci0gIGRlbGV0ZSB0OwotfQotCi11c2luZyBpbnRlcm5hbDo6bGlua2VkX3B0cjsKLQotLy8g
SGVscGVyIGNsYXNzZXMgZm9yIHRlc3RpbmcgdXNpbmcgbGlua2VkX3B0ciBjb25jdXJyZW50bHku
Ci0KLWNsYXNzIEJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQmFzZShpbnQgYV94KSA6IHhf
KGFfeCkge30KLSAgdmlydHVhbCB+QmFzZSgpIHt9Ci0gIGludCB4KCkgY29uc3QgeyByZXR1cm4g
eF87IH0KLSBwcml2YXRlOgotICBpbnQgeF87Ci19OwotCi1jbGFzcyBEZXJpdmVkMSA6IHB1Ymxp
YyBCYXNlIHsKLSBwdWJsaWM6Ci0gIERlcml2ZWQxKGludCBhX3gsIGludCBhX3kpIDogQmFzZShh
X3gpLCB5XyhhX3kpIHt9Ci0gIGludCB5KCkgY29uc3QgeyByZXR1cm4geV87IH0KLSBwcml2YXRl
OgotICBpbnQgeV87Ci19OwotCi1jbGFzcyBEZXJpdmVkMiA6IHB1YmxpYyBCYXNlIHsKLSBwdWJs
aWM6Ci0gIERlcml2ZWQyKGludCBhX3gsIGludCBhX3opIDogQmFzZShhX3gpLCB6XyhhX3opIHt9
Ci0gIGludCB6KCkgY29uc3QgeyByZXR1cm4gel87IH0KLSBwcml2YXRlOgotICBpbnQgel87Ci19
OwotCi1saW5rZWRfcHRyPERlcml2ZWQxPiBwb2ludGVyMShuZXcgRGVyaXZlZDEoMSwgMikpOwot
bGlua2VkX3B0cjxEZXJpdmVkMj4gcG9pbnRlcjIobmV3IERlcml2ZWQyKDMsIDQpKTsKLQotc3Ry
dWN0IER1bW15IHt9OwotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBjb3B5IGZyb20gYSBsaW5rZWRf
cHRyIGFuZCByZWFkIGl0IGNvbmN1cnJlbnRseS4KLXZvaWQgVGVzdENvbmN1cnJlbnRDb3B5QW5k
UmVhZExpbmtlZFB0cihEdW1teSAvKiBkdW1teSAqLykgewotICAvLyBSZWFkcyBwb2ludGVyMSBh
bmQgcG9pbnRlcjIgd2hpbGUgdGhleSBhcmUgYmVpbmcgY29waWVkIGZyb20gaW4KLSAgLy8gYW5v
dGhlciB0aHJlYWQuCi0gIEVYUEVDVF9FUSgxLCBwb2ludGVyMS0+eCgpKTsKLSAgRVhQRUNUX0VR
KDIsIHBvaW50ZXIxLT55KCkpOwotICBFWFBFQ1RfRVEoMywgcG9pbnRlcjItPngoKSk7Ci0gIEVY
UEVDVF9FUSg0LCBwb2ludGVyMi0+eigpKTsKLQotICAvLyBDb3BpZXMgZnJvbSBwb2ludGVyMS4K
LSAgbGlua2VkX3B0cjxEZXJpdmVkMT4gcDEocG9pbnRlcjEpOwotICBFWFBFQ1RfRVEoMSwgcDEt
PngoKSk7Ci0gIEVYUEVDVF9FUSgyLCBwMS0+eSgpKTsKLQotICAvLyBBc3NpZ25zIGZyb20gcG9p
bnRlcjIgd2hlcmUgdGhlIExIUyB3YXMgZW1wdHkuCi0gIGxpbmtlZF9wdHI8QmFzZT4gcDI7Ci0g
IHAyID0gcG9pbnRlcjE7Ci0gIEVYUEVDVF9FUSgxLCBwMi0+eCgpKTsKLQotICAvLyBBc3NpZ25z
IGZyb20gcG9pbnRlcjIgd2hlcmUgdGhlIExIUyB3YXMgbm90IGVtcHR5LgotICBwMiA9IHBvaW50
ZXIyOwotICBFWFBFQ1RfRVEoMywgcDItPngoKSk7Ci19Ci0KLWNvbnN0IGxpbmtlZF9wdHI8RGVy
aXZlZDE+IHAwKG5ldyBEZXJpdmVkMSgxLCAyKSk7Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNv
bmN1cnJlbnRseSBtb2RpZnkgdHdvIGxpbmtlZF9wdHJzIHRoYXQgcG9pbnQgdG8KLS8vIHRoZSBz
YW1lIG9iamVjdC4KLXZvaWQgVGVzdENvbmN1cnJlbnRXcml0ZVRvRXF1YWxMaW5rZWRQdHIoRHVt
bXkgLyogZHVtbXkgKi8pIHsKLSAgLy8gcDEgYW5kIHAyIHBvaW50IHRvIHRoZSBzYW1lLCBzaGFy
ZWQgdGhpbmcuICBPbmUgdGhyZWFkIHJlc2V0cyBwMS4KLSAgLy8gQW5vdGhlciB0aHJlYWQgYXNz
aWducyB0byBwMi4gIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2FtZQotICAvLyB1bmRlcmx5aW5nICJy
aW5nIiB0byBiZSB1cGRhdGVkIGNvbmN1cnJlbnRseS4KLSAgbGlua2VkX3B0cjxEZXJpdmVkMT4g
cDEocDApOwotICBsaW5rZWRfcHRyPERlcml2ZWQxPiBwMihwMCk7Ci0KLSAgRVhQRUNUX0VRKDEs
IHAxLT54KCkpOwotICBFWFBFQ1RfRVEoMiwgcDEtPnkoKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIHAy
LT54KCkpOwotICBFWFBFQ1RfRVEoMiwgcDItPnkoKSk7Ci0KLSAgcDEucmVzZXQoKTsKLSAgcDIg
PSBwMDsKLQotICBFWFBFQ1RfRVEoMSwgcDItPngoKSk7Ci0gIEVYUEVDVF9FUSgyLCBwMi0+eSgp
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkaWZmZXJlbnQgbW9jayBvYmplY3RzIGNhbiBiZSB1c2Vk
IGluIHRoZWlyIHJlc3BlY3RpdmUKLS8vIHRocmVhZHMuICBUaGlzIHNob3VsZCBnZW5lcmF0ZSBu
byBHb29nbGUgVGVzdCBmYWlsdXJlLgotdm9pZCBUZXN0Q29uY3VycmVudE1vY2tPYmplY3RzKER1
bW15IC8qIGR1bW15ICovKSB7Ci0gIC8vIENyZWF0ZXMgYSBtb2NrIGFuZCBkb2VzIHNvbWUgdHlw
aWNhbCBvcGVyYXRpb25zIG9uIGl0LgotICBNb2NrRm9vIGZvbzsKLSAgT05fQ0FMTChmb28sIEJh
cihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIE9OX0NBTEwoZm9vLCBC
YXooXywgXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oJ2InKSk7Ci0gIE9OX0NBTEwo
Zm9vLCBCYXooXywgInlvdSIpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKCdhJykpOwot
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKDApKQotICAgICAgLlRpbWVzKEF0TW9zdCgzKSk7Ci0g
IEVYUEVDVF9DQUxMKGZvbywgQmF6KF8sIF8pKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXooImhp
IiwgInlvdSIpKQotICAgICAgLldpbGxPbmNlKFJldHVybigneicpKQotICAgICAgLldpbGxSZXBl
YXRlZGx5KERvRGVmYXVsdCgpKTsKLQotICBFWFBFQ1RfRVEoMSwgZm9vLkJhcigwKSk7Ci0gIEVY
UEVDVF9FUSgxLCBmb28uQmFyKDApKTsKLSAgRVhQRUNUX0VRKCd6JywgZm9vLkJheigiaGkiLCAi
eW91IikpOwotICBFWFBFQ1RfRVEoJ2EnLCBmb28uQmF6KCJoaSIsICJ5b3UiKSk7Ci0gIEVYUEVD
VF9FUSgnYicsIGZvby5CYXooImhpIiwgIm1lIikpOwotfQotCi0vLyBUZXN0cyBpbnZva2luZyBt
ZXRob2RzIG9mIHRoZSBzYW1lIG1vY2sgb2JqZWN0IGluIG11bHRpcGxlIHRocmVhZHMuCi0KLXN0
cnVjdCBIZWxwZXIxUGFyYW0gewotICBNb2NrRm9vKiBtb2NrX2ZvbzsKLSAgaW50KiBjb3VudDsK
LX07Ci0KLXZvaWQgSGVscGVyMShIZWxwZXIxUGFyYW0gcGFyYW0pIHsKLSAgZm9yIChpbnQgaSA9
IDA7IGkgPCBrUmVwZWF0OyBpKyspIHsKLSAgICBjb25zdCBjaGFyIGNoID0gcGFyYW0ubW9ja19m
b28tPkJheigiYSIsICJiIik7Ci0gICAgaWYgKGNoID09ICdhJykgewotICAgICAgLy8gSXQgd2Fz
IGFuIGV4cGVjdGVkIGNhbGwuCi0gICAgICAoKnBhcmFtLmNvdW50KSsrOwotICAgIH0gZWxzZSB7
Ci0gICAgICAvLyBJdCB3YXMgYW4gZXhjZXNzaXZlIGNhbGwuCi0gICAgICBFWFBFQ1RfRVEoJ1ww
JywgY2gpOwotICAgIH0KLQotICAgIC8vIEFuIHVuZXhwZWN0ZWQgY2FsbC4KLSAgICBFWFBFQ1Rf
RVEoJ1wwJywgcGFyYW0ubW9ja19mb28tPkJheigieCIsICJ5IikpIDw8ICJFeHBlY3RlZCBmYWls
dXJlLiI7Ci0KLSAgICAvLyBBbiB1bmludGVyZXN0aW5nIGNhbGwuCi0gICAgRVhQRUNUX0VRKDEs
IHBhcmFtLm1vY2tfZm9vLT5CYXIoNSkpOwotICB9Ci19Ci0KLS8vIFRoaXMgc2hvdWxkIGdlbmVy
YXRlIDMqa1JlcGVhdCArIDEgZmFpbHVyZXMgaW4gdG90YWwuCi12b2lkIFRlc3RDb25jdXJyZW50
Q2FsbHNPblNhbWVPYmplY3QoRHVtbXkgLyogZHVtbXkgKi8pIHsKLSAgTW9ja0ZvbyBmb287Ci0K
LSAgT05fQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8sICJiIikpCi0gICAgICAuVGltZXMoa1JlcGVhdCkK
LSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJ2EnKSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywg
QmF6KF8sICJjIikpOyAgLy8gRXhwZWN0ZWQgdG8gYmUgdW5zYXRpc2ZpZWQuCi0KLSAgLy8gVGhp
cyBjaHVuayBvZiBjb2RlIHNob3VsZCBnZW5lcmF0ZSBrUmVwZWF0IGZhaWx1cmVzIGFib3V0Ci0g
IC8vIGV4Y2Vzc2l2ZSBjYWxscywgYW5kIDIqa1JlcGVhdCBmYWlsdXJlcyBhYm91dCB1bmV4cGVj
dGVkIGNhbGxzLgotICBpbnQgY291bnQxID0gMDsKLSAgY29uc3QgSGVscGVyMVBhcmFtIHBhcmFt
ID0geyAmZm9vLCAmY291bnQxIH07Ci0gIFRocmVhZFdpdGhQYXJhbTxIZWxwZXIxUGFyYW0+KiBj
b25zdCB0ID0KLSAgICAgIG5ldyBUaHJlYWRXaXRoUGFyYW08SGVscGVyMVBhcmFtPihIZWxwZXIx
LCBwYXJhbSwgTlVMTCk7Ci0KLSAgaW50IGNvdW50MiA9IDA7Ci0gIGNvbnN0IEhlbHBlcjFQYXJh
bSBwYXJhbTIgPSB7ICZmb28sICZjb3VudDIgfTsKLSAgSGVscGVyMShwYXJhbTIpOwotICBKb2lu
QW5kRGVsZXRlKHQpOwotCi0gIEVYUEVDVF9FUShrUmVwZWF0LCBjb3VudDEgKyBjb3VudDIpOwot
Ci0gIC8vIGZvbydzIGRlc3RydWN0b3Igc2hvdWxkIGdlbmVyYXRlIG9uZSBmYWlsdXJlIGFib3V0
IHVuc2F0aXNmaWVkCi0gIC8vIGV4cGVjdGF0aW9uLgotfQotCi0vLyBUZXN0cyB1c2luZyB0aGUg
c2FtZSBtb2NrIG9iamVjdCBpbiBtdWx0aXBsZSB0aHJlYWRzIHdoZW4gdGhlCi0vLyBleHBlY3Rh
dGlvbnMgYXJlIHBhcnRpYWxseSBvcmRlcmVkLgotCi12b2lkIEhlbHBlcjIoTW9ja0ZvbyogZm9v
KSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1JlcGVhdDsgaSsrKSB7Ci0gICAgZm9vLT5CYXIo
Mik7Ci0gICAgZm9vLT5CYXIoMyk7Ci0gIH0KLX0KLQotLy8gVGhpcyBzaG91bGQgZ2VuZXJhdGUg
bm8gR29vZ2xlIFRlc3QgZmFpbHVyZXMuCi12b2lkIFRlc3RQYXJ0aWFsbHlPcmRlcmVkRXhwZWN0
YXRpb25zV2l0aFRocmVhZHMoRHVtbXkgLyogZHVtbXkgKi8pIHsKLSAgTW9ja0ZvbyBmb287Ci0g
IFNlcXVlbmNlIHMxLCBzMjsKLQotICB7Ci0gICAgSW5TZXF1ZW5jZSBkdW1teTsKLSAgICBFWFBF
Q1RfQ0FMTChmb28sIEJhcigwKSk7Ci0gICAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoMSkpCi0gICAg
ICAgIC5JblNlcXVlbmNlKHMxLCBzMik7Ci0gIH0KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigy
KSkKLSAgICAgIC5UaW1lcygyKmtSZXBlYXQpCi0gICAgICAuSW5TZXF1ZW5jZShzMSkKLSAgICAg
IC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKDMpKQotICAg
ICAgLlRpbWVzKDIqa1JlcGVhdCkKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLQotICB7Ci0gICAg
SW5TZXF1ZW5jZSBkdW1teTsKLSAgICBFWFBFQ1RfQ0FMTChmb28sIEJhcigyKSkKLSAgICAgICAg
LkluU2VxdWVuY2UoczEsIHMyKTsKLSAgICBFWFBFQ1RfQ0FMTChmb28sIEJhcig0KSk7Ci0gIH0K
LQotICBmb28uQmFyKDApOwotICBmb28uQmFyKDEpOwotCi0gIFRocmVhZFdpdGhQYXJhbTxNb2Nr
Rm9vKj4qIGNvbnN0IHQgPQotICAgICAgbmV3IFRocmVhZFdpdGhQYXJhbTxNb2NrRm9vKj4oSGVs
cGVyMiwgJmZvbywgTlVMTCk7Ci0gIEhlbHBlcjIoJmZvbyk7Ci0gIEpvaW5BbmREZWxldGUodCk7
Ci0KLSAgZm9vLkJhcigyKTsKLSAgZm9vLkJhcig0KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgR29v
Z2xlIE1vY2sgY29uc3RydWN0cyBpbiBtYW55IHRocmVhZHMgY29uY3VycmVudGx5LgotVEVTVChT
dHJlc3NUZXN0LCBDYW5Vc2VHTW9ja1dpdGhUaHJlYWRzKSB7Ci0gIHZvaWQgKCp0ZXN0X3JvdXRp
bmVzW10pKER1bW15IGR1bW15KSA9IHsKLSAgICAmVGVzdENvbmN1cnJlbnRDb3B5QW5kUmVhZExp
bmtlZFB0ciwKLSAgICAmVGVzdENvbmN1cnJlbnRXcml0ZVRvRXF1YWxMaW5rZWRQdHIsCi0gICAg
JlRlc3RDb25jdXJyZW50TW9ja09iamVjdHMsCi0gICAgJlRlc3RDb25jdXJyZW50Q2FsbHNPblNh
bWVPYmplY3QsCi0gICAgJlRlc3RQYXJ0aWFsbHlPcmRlcmVkRXhwZWN0YXRpb25zV2l0aFRocmVh
ZHMsCi0gIH07Ci0KLSAgY29uc3QgaW50IGtSb3V0aW5lcyA9IHNpemVvZih0ZXN0X3JvdXRpbmVz
KS9zaXplb2YodGVzdF9yb3V0aW5lc1swXSk7Ci0gIGNvbnN0IGludCBrQ29waWVzT2ZFYWNoUm91
dGluZSA9IGtNYXhUZXN0VGhyZWFkcyAvIGtSb3V0aW5lczsKLSAgY29uc3QgaW50IGtUZXN0VGhy
ZWFkcyA9IGtDb3BpZXNPZkVhY2hSb3V0aW5lICoga1JvdXRpbmVzOwotICBUaHJlYWRXaXRoUGFy
YW08RHVtbXk+KiB0aHJlYWRzW2tUZXN0VGhyZWFkc10gPSB7fTsKLSAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrVGVzdFRocmVhZHM7IGkrKykgewotICAgIC8vIENyZWF0ZXMgYSB0aHJlYWQgdG8gcnVu
IHRoZSB0ZXN0IGZ1bmN0aW9uLgotICAgIHRocmVhZHNbaV0gPQotICAgICAgICBuZXcgVGhyZWFk
V2l0aFBhcmFtPER1bW15Pih0ZXN0X3JvdXRpbmVzW2kgJSBrUm91dGluZXNdLCBEdW1teSgpLCBO
VUxMKTsKLSAgICBHVEVTVF9MT0dfKElORk8pIDw8ICJUaHJlYWQgIyIgPDwgaSA8PCAiIHJ1bm5p
bmcgLiAuIC4iOwotICB9Ci0KLSAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBtYW55IHRocmVh
ZHMgcnVubmluZy4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdFRocmVhZHM7IGkrKykgewot
ICAgIEpvaW5BbmREZWxldGUodGhyZWFkc1tpXSk7Ci0gIH0KLQotICAvLyBFbnN1cmVzIHRoYXQg
dGhlIGNvcnJlY3QgbnVtYmVyIG9mIGZhaWx1cmVzIGhhdmUgYmVlbiByZXBvcnRlZC4KLSAgY29u
c3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVu
dF90ZXN0X2luZm8oKTsKLSAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKmluZm8tPnJlc3Vs
dCgpOwotICBjb25zdCBpbnQga0V4cGVjdGVkRmFpbHVyZXMgPSAoMyprUmVwZWF0ICsgMSkqa0Nv
cGllc09mRWFjaFJvdXRpbmU7Ci0gIEdURVNUX0NIRUNLXyhrRXhwZWN0ZWRGYWlsdXJlcyA9PSBy
ZXN1bHQudG90YWxfcGFydF9jb3VudCgpKQotICAgICAgPDwgIkV4cGVjdGVkICIgPDwga0V4cGVj
dGVkRmFpbHVyZXMgPDwgIiBmYWlsdXJlcywgYnV0IGdvdCAiCi0gICAgICA8PCByZXN1bHQudG90
YWxfcGFydF9jb3VudCgpOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpJ
bml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0KLSAgY29uc3QgaW50IGV4aXRfY29kZSA9IFJV
Tl9BTExfVEVTVFMoKTsgIC8vIEV4cGVjdGVkIHRvIGZhaWwuCi0gIEdURVNUX0NIRUNLXyhleGl0
X2NvZGUgIT0gMCkgPDwgIlJVTl9BTExfVEVTVFMoKSBkaWQgbm90IGZhaWwgYXMgZXhwZWN0ZWQi
OwotCi0gIHByaW50ZigiXG5QQVNTXG4iKTsKLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay90ZXN0L2dtb2NrX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX3Rl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZDBjNTdiMTZmMzQ3ZGM1Yzhi
NTc5OWRlMzg5MDk1ODdiMmUwNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja190ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMjIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8v
IEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4K
LS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgY29kZSBpbiBnbW9jay5jYy4KLQotI2luY2x1ZGUgImdt
b2NrL2dtb2NrLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKLQotI2lmICFkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9O
XykKLQotdXNpbmcgdGVzdGluZzo6R01PQ0tfRkxBRyh2ZXJib3NlKTsKLXVzaW5nIHRlc3Rpbmc6
OkluaXRHb29nbGVNb2NrOwotCi0vLyBWZXJpZmllcyB0aGF0IGNhbGxpbmcgSW5pdEdvb2dsZU1v
Y2soKSBvbiBhcmd2IHJlc3VsdHMgaW4gbmV3X2FyZ3YsCi0vLyBhbmQgdGhlIGdtb2NrX3ZlcmJv
c2UgZmxhZydzIHZhbHVlIGlzIHNldCB0byBleHBlY3RlZF9nbW9ja192ZXJib3NlLgotdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXIsIGludCBNLCBpbnQgTj4KLXZvaWQgVGVzdEluaXRHb29nbGVNb2Nr
KGNvbnN0IENoYXIqICgmYXJndilbTV0sIGNvbnN0IENoYXIqICgmbmV3X2FyZ3YpW05dLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjpzdGQ6OnN0cmluZyYgZXhwZWN0ZWRfZ21vY2tf
dmVyYm9zZSkgewotICBjb25zdCA6OnN0ZDo6c3RyaW5nIG9sZF92ZXJib3NlID0gR01PQ0tfRkxB
Ryh2ZXJib3NlKTsKLQotICBpbnQgYXJnYyA9IE07Ci0gIEluaXRHb29nbGVNb2NrKCZhcmdjLCBj
b25zdF9jYXN0PENoYXIqKj4oYXJndikpOwotICBBU1NFUlRfRVEoTiwgYXJnYykgPDwgIlRoZSBu
ZXcgYXJndiBoYXMgd3JvbmcgbnVtYmVyIG9mIGVsZW1lbnRzLiI7Ci0KLSAgZm9yIChpbnQgaSA9
IDA7IGkgPCBOOyBpKyspIHsKLSAgICBFWFBFQ1RfU1RSRVEobmV3X2FyZ3ZbaV0sIGFyZ3ZbaV0p
OwotICB9Ci0KLSAgRVhQRUNUX0VRKGV4cGVjdGVkX2dtb2NrX3ZlcmJvc2UsIEdNT0NLX0ZMQUco
dmVyYm9zZSkuY19zdHIoKSk7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBvbGRfdmVyYm9zZTsg
IC8vIFJlc3RvcmVzIHRoZSBnbW9ja192ZXJib3NlIGZsYWcuCi19Ci0KLVRFU1QoSW5pdEdvb2ds
ZU1vY2tUZXN0LCBQYXJzZXNJbnZhbGlkQ29tbWFuZExpbmUpIHsKLSAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBuZXdfYXJndltdID0gewot
ICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdN
T0NLX0ZMQUcodmVyYm9zZSkpOwotfQotCi1URVNUKEluaXRHb29nbGVNb2NrVGVzdCwgUGFyc2Vz
RW1wdHlDb21tYW5kTGluZSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5l
eGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBuZXdfYXJndltdID0gewotICAg
ICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3Ys
IG5ld19hcmd2LCBHTU9DS19GTEFHKHZlcmJvc2UpKTsKLX0KLQotVEVTVChJbml0R29vZ2xlTW9j
a1Rlc3QsIFBhcnNlc1NpbmdsZUZsYWcpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAg
ICJmb28uZXhlIiwKLSAgICAiLS1nbW9ja192ZXJib3NlPWluZm8iLAotICAgIE5VTEwKLSAgfTsK
LQotICBjb25zdCBjaGFyKiBuZXdfYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxM
Ci0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5ld19hcmd2LCAiaW5mbyIpOwot
fQotCi1URVNUKEluaXRHb29nbGVNb2NrVGVzdCwgUGFyc2VzVW5yZWNvZ25pemVkRmxhZykgewot
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLW5vbl9nbW9j
a19mbGFnPWJsYWgiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBuZXdfYXJndltd
ID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ub25fZ21vY2tfZmxhZz1ibGFoIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5ld19hcmd2LCBHTU9DS19G
TEFHKHZlcmJvc2UpKTsKLX0KLQotVEVTVChJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0dvb2ds
ZU1vY2tGbGFnQW5kVW5yZWNvZ25pemVkRmxhZykgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
Ci0gICAgImZvby5leGUiLAotICAgICItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAotICAgICItLWdt
b2NrX3ZlcmJvc2U9ZXJyb3IiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBuZXdf
YXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ub25fZ21vY2tfZmxhZz1ibGFoIiwK
LSAgICBOVUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5ld19hcmd2LCAi
ZXJyb3IiKTsKLX0KLQotVEVTVChXaWRlSW5pdEdvb2dsZU1vY2tUZXN0LCBQYXJzZXNJbnZhbGlk
Q29tbWFuZExpbmUpIHsKLSAgY29uc3Qgd2NoYXJfdCogYXJndltdID0gewotICAgIE5VTEwKLSAg
fTsKLQotICBjb25zdCB3Y2hhcl90KiBuZXdfYXJndltdID0gewotICAgIE5VTEwKLSAgfTsKLQot
ICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkp
OwotfQotCi1URVNUKFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0VtcHR5Q29tbWFuZExp
bmUpIHsKLSAgY29uc3Qgd2NoYXJfdCogYXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAg
TlVMTAotICB9OwotCi0gIGNvbnN0IHdjaGFyX3QqIG5ld19hcmd2W10gPSB7Ci0gICAgTCJmb28u
ZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5ld19h
cmd2LCBHTU9DS19GTEFHKHZlcmJvc2UpKTsKLX0KLQotVEVTVChXaWRlSW5pdEdvb2dsZU1vY2tU
ZXN0LCBQYXJzZXNTaW5nbGVGbGFnKSB7Ci0gIGNvbnN0IHdjaGFyX3QqIGFyZ3ZbXSA9IHsKLSAg
ICBMImZvby5leGUiLAotICAgIEwiLS1nbW9ja192ZXJib3NlPWluZm8iLAotICAgIE5VTEwKLSAg
fTsKLQotICBjb25zdCB3Y2hhcl90KiBuZXdfYXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0g
ICAgTlVMTAotICB9OwotCi0gIFRlc3RJbml0R29vZ2xlTW9jayhhcmd2LCBuZXdfYXJndiwgImlu
Zm8iKTsKLX0KLQotVEVTVChXaWRlSW5pdEdvb2dsZU1vY2tUZXN0LCBQYXJzZXNVbnJlY29nbml6
ZWRGbGFnKSB7Ci0gIGNvbnN0IHdjaGFyX3QqIGFyZ3ZbXSA9IHsKLSAgICBMImZvby5leGUiLAot
ICAgIEwiLS1ub25fZ21vY2tfZmxhZz1ibGFoIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3Qg
d2NoYXJfdCogbmV3X2FyZ3ZbXSA9IHsKLSAgICBMImZvby5leGUiLAotICAgIEwiLS1ub25fZ21v
Y2tfZmxhZz1ibGFoIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVNb2NrKGFy
Z3YsIG5ld19hcmd2LCBHTU9DS19GTEFHKHZlcmJvc2UpKTsKLX0KLQotVEVTVChXaWRlSW5pdEdv
b2dsZU1vY2tUZXN0LCBQYXJzZXNHb29nbGVNb2NrRmxhZ0FuZFVucmVjb2duaXplZEZsYWcpIHsK
LSAgY29uc3Qgd2NoYXJfdCogYXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLW5v
bl9nbW9ja19mbGFnPWJsYWgiLAotICAgIEwiLS1nbW9ja192ZXJib3NlPWVycm9yIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgY29uc3Qgd2NoYXJfdCogbmV3X2FyZ3ZbXSA9IHsKLSAgICBMImZvby5l
eGUiLAotICAgIEwiLS1ub25fZ21vY2tfZmxhZz1ibGFoIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
VGVzdEluaXRHb29nbGVNb2NrKGFyZ3YsIG5ld19hcmd2LCAiZXJyb3IiKTsKLX0KLQotI2VuZGlm
ICAvLyAhZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCi0K
LS8vIE1ha2VzIHN1cmUgR29vZ2xlIE1vY2sgZmxhZ3MgY2FuIGJlIGFjY2Vzc2VkIGluIGNvZGUu
Ci1URVNUKEZsYWdUZXN0LCBJc0FjY2Vzc2libGVJbkNvZGUpIHsKLSAgYm9vbCBkdW1teSA9IHRl
c3Rpbmc6OkdNT0NLX0ZMQUcoY2F0Y2hfbGVha2VkX21vY2tzKSAmJgotICAgICAgdGVzdGluZzo6
R01PQ0tfRkxBRyh2ZXJib3NlKSA9PSAiIjsKLSAgKHZvaWQpZHVtbXk7ICAvLyBBdm9pZHMgdGhl
ICJ1bnVzZWQgbG9jYWwgdmFyaWFibGUiIHdhcm5pbmcuCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX3Rl
c3RfdXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDIwZTNkM2Q0NDY4NTYw
MDQzOGFjZmJlZjQxNGZmNDgyYmJkMWJkYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja190ZXN0X3V0aWxzLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIEdvb2dsZSBDKysg
TW9ja2luZyBGcmFtZXdvcmsuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi0KLSMgRGV0ZXJtaW5lcyBw
YXRoIHRvIGd0ZXN0X3Rlc3RfdXRpbHMgYW5kIGltcG9ydHMgaXQuCi1TQ1JJUFRfRElSID0gb3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLicKLQotIyBpc2RpciByZXNvbHZlcyBzeW1ib2xp
YyBsaW5rcy4KLWd0ZXN0X3Rlc3RzX3V0aWxfZGlyID0gb3MucGF0aC5qb2luKFNDUklQVF9ESVIs
ICcuLi9ndGVzdC90ZXN0JykKLWlmIG9zLnBhdGguaXNkaXIoZ3Rlc3RfdGVzdHNfdXRpbF9kaXIp
OgotICBHVEVTVF9URVNUU19VVElMX0RJUiA9IGd0ZXN0X3Rlc3RzX3V0aWxfZGlyCi1lbHNlOgot
ICBHVEVTVF9URVNUU19VVElMX0RJUiA9IG9zLnBhdGguam9pbihTQ1JJUFRfRElSLCAnLi4vLi4v
Z3Rlc3QvdGVzdCcpCi0KLXN5cy5wYXRoLmFwcGVuZChHVEVTVF9URVNUU19VVElMX0RJUikKLWlt
cG9ydCBndGVzdF90ZXN0X3V0aWxzICAjIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKLQotCi1k
ZWYgR2V0U291cmNlRGlyKCk6Ci0gICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhl
IGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFyZS4iIiIKLQotICByZXR1cm4gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKQotCi0KLWRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgo
ZXhlY3V0YWJsZV9uYW1lKToKLSAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUg
dGVzdCBiaW5hcnkgZ2l2ZW4gaXRzIG5hbWUuCi0KLSAgVGhlIGZ1bmN0aW9uIHdpbGwgcHJpbnQg
YSBtZXNzYWdlIGFuZCBhYm9ydCB0aGUgcHJvZ3JhbSBpZiB0aGUgcmVzdWx0aW5nIGZpbGUKLSAg
ZG9lc24ndCBleGlzdC4KLQotICBBcmdzOgotICAgIGV4ZWN1dGFibGVfbmFtZTogbmFtZSBvZiB0
aGUgdGVzdCBiaW5hcnkgdGhhdCB0aGUgdGVzdCBzY3JpcHQgcnVucy4KLQotICBSZXR1cm5zOgot
ICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSB0ZXN0IGJpbmFyeS4KLSAgIiIiCi0KLSAgcmV0
dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGV4ZWN1dGFibGVfbmFt
ZSkKLQotCi1kZWYgR2V0RXhpdFN0YXR1cyhleGl0X2NvZGUpOgotICAiIiJSZXR1cm5zIHRoZSBh
cmd1bWVudCB0byBleGl0KCksIG9yIC0xIGlmIGV4aXQoKSB3YXNuJ3QgY2FsbGVkLgotCi0gIEFy
Z3M6Ci0gICAgZXhpdF9jb2RlOiB0aGUgcmVzdWx0IHZhbHVlIG9mIG9zLnN5c3RlbShjb21tYW5k
KS4KLSAgIiIiCi0KLSAgaWYgb3MubmFtZSA9PSAnbnQnOgotICAgICMgT24gV2luZG93cywgb3Mu
V0VYSVRTVEFUVVMoKSBkb2Vzbid0IHdvcmsgYW5kIG9zLnN5c3RlbSgpIHJldHVybnMKLSAgICAj
IHRoZSBhcmd1bWVudCB0byBleGl0KCkgZGlyZWN0bHkuCi0gICAgcmV0dXJuIGV4aXRfY29kZQot
ICBlbHNlOgotICAgICMgT24gVW5peCwgb3MuV0VYSVRTVEFUVVMoKSBtdXN0IGJlIHVzZWQgdG8g
ZXh0cmFjdCB0aGUgZXhpdCBzdGF0dXMKLSAgICAjIGZyb20gdGhlIHJlc3VsdCBvZiBvcy5zeXN0
ZW0oKS4KLSAgICBpZiBvcy5XSUZFWElURUQoZXhpdF9jb2RlKToKLSAgICAgIHJldHVybiBvcy5X
RVhJVFNUQVRVUyhleGl0X2NvZGUpCi0gICAgZWxzZToKLSAgICAgIHJldHVybiAtMQotCi0KLSMg
U3VwcHJlc3NlcyB0aGUgIkludmFsaWQgY29uc3QgbmFtZSIgbGludCBjb21wbGFpbnQKLSMgcHls
aW50OiBkaXNhYmxlLW1zZz1DNjQwOQotCi0jIEV4cG9zZXMgdXRpbGl0aWVzIGZyb20gZ3Rlc3Rf
dGVzdF91dGlscy4KLVN1YnByb2Nlc3MgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MKLVRl
c3RDYXNlID0gZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZQotZW52aXJvbiA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuZW52aXJvbgotU2V0RW52VmFyID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKLVBS
RU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiA9IGd0ZXN0X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VY
SVRfRklMRV9FTlZfVkFSCi0KLSMgcHlsaW50OiBlbmFibGUtbXNnPUM2NDA5Ci0KLQotZGVmIE1h
aW4oKToKLSAgIiIiUnVucyB0aGUgdW5pdCB0ZXN0LiIiIgotCi0gIGd0ZXN0X3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
LmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3YmU0YjkxYjcwMWRi
OWYzZjg5ODkxZTBiZGIxMjc5ZmIxNTNiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi0jIHB5dGhvbgotKi5weWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NI
QU5HRVMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9DSEFOR0VTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwNTUyMTMyNDIxMmM5MTI4N2Q5MjQ0ZDQ0YmFiMzA2ZGI2NjRiYWRiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NIQU5HRVMKKysr
IC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotQ2hhbmdlcyBmb3IgMS43LjA6Ci0KLSogTmV3
IGZlYXR1cmU6IGRlYXRoIHRlc3RzIGFyZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBhbmQgaW4gaU9T
Ci0gIHNpbXVsYXRvciBub3cuCi0qIE5ldyBmZWF0dXJlOiBHb29nbGUgVGVzdCBub3cgaW1wbGVt
ZW50cyBhIHByb3RvY29sIHRvIGFsbG93Ci0gIGEgdGVzdCBydW5uZXIgdG8gZGV0ZWN0IHRoYXQg
YSB0ZXN0IHByb2dyYW0gaGFzIGV4aXRlZAotICBwcmVtYXR1cmVseSBhbmQgcmVwb3J0IGl0IGFz
IGEgZmFpbHVyZSAoYmVmb3JlIGl0IHdvdWxkIGJlCi0gIGZhbHNlbHkgcmVwb3J0ZWQgYXMgYSBz
dWNjZXNzIGlmIHRoZSBleGl0IGNvZGUgaXMgMCkuCi0qIE5ldyBmZWF0dXJlOiBUZXN0OjpSZWNv
cmRQcm9wZXJ0eSgpIGNhbiBub3cgYmUgdXNlZCBvdXRzaWRlIG9mIHRoZQotICBsaWZlc3BhbiBv
ZiBhIHRlc3QgbWV0aG9kLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0bwot
ICB0aGUgY3VycmVudCB0ZXN0IGNhc2Ugb3IgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgWE1MIHJl
cG9ydC4KLSogTmV3IGZlYXR1cmUgKHBvdGVudGlhbGx5IGJyZWFraW5nKTogLS1ndGVzdF9saXN0
X3Rlc3RzIG5vdyBwcmludHMKLSAgdGhlIHR5cGUgcGFyYW1ldGVycyBhbmQgdmFsdWUgcGFyYW1l
dGVycyBmb3IgZWFjaCB0ZXN0LgotKiBJbXByb3ZlbWVudDogY2hhciBwb2ludGVycyBhbmQgY2hh
ciBhcnJheXMgYXJlIG5vdyBlc2NhcGVkIHByb3Blcmx5Ci0gIGluIGZhaWx1cmUgbWVzc2FnZXMu
Ci0qIEltcHJvdmVtZW50OiBmYWlsdXJlIHN1bW1hcnkgaW4gWE1MIHJlcG9ydHMgbm93IGluY2x1
ZGVzIGZpbGUgYW5kCi0gIGxpbmUgaW5mb3JtYXRpb24uCi0qIEltcHJvdmVtZW50OiB0aGUgPHRl
c3RzdWl0ZXM+IFhNTCBlbGVtZW50IG5vdyBoYXMgYSB0aW1lc3RhbXAgYXR0cmlidXRlLgotKiBJ
bXByb3ZlbWVudDogV2hlbiAtLWd0ZXN0X2ZpbHRlciBpcyBzcGVjaWZpZWQsIFhNTCByZXBvcnQg
bm93IGRvZXNuJ3QKLSAgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0ZXN0cyB0aGF0IGFyZSBm
aWx0ZXJlZCBvdXQuCi0qIEZpeGVkIHRoZSBidWcgd2hlcmUgbG9uZyAtLWd0ZXN0X2ZpbHRlciBm
bGFnIHZhbHVlcyBhcmUgdHJ1bmNhdGVkIGluCi0gIGRlYXRoIHRlc3RzLgotKiBQb3RlbnRpYWxs
eSBicmVha2luZyBjaGFuZ2U6IFJVTl9BTExfVEVTVFMoKSBpcyBub3cgaW1wbGVtZW50ZWQgYXMg
YQotICBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbWFjcm8gaW4gb3JkZXIgdG8gd29yayBiZXR0ZXIg
d2l0aCBDbGFuZy4KLSogQ29tcGF0aWJpbGl0eSBmaXhlcyB3aXRoIEMrKyAxMSBhbmQgdmFyaW91
cyBwbGF0Zm9ybXMuCi0qIEJ1Zy93YXJuaW5nIGZpeGVzLgotCi1DaGFuZ2VzIGZvciAxLjYuMDoK
LQotKiBOZXcgZmVhdHVyZTogQUREX0ZBSUxVUkVfQVQoKSBmb3IgcmVwb3J0aW5nIGEgdGVzdCBm
YWlsdXJlIGF0IHRoZQotICBnaXZlbiBzb3VyY2UgbG9jYXRpb24gLS0gdXNlZnVsIGZvciB3cml0
aW5nIHRlc3RpbmcgdXRpbGl0aWVzLgotKiBOZXcgZmVhdHVyZTogdGhlIHVuaXZlcnNhbCB2YWx1
ZSBwcmludGVyIGlzIG1vdmVkIGZyb20gR29vZ2xlIE1vY2sKLSAgdG8gR29vZ2xlIFRlc3QuCi0q
IE5ldyBmZWF0dXJlOiB0eXBlIHBhcmFtZXRlcnMgYW5kIHZhbHVlIHBhcmFtZXRlcnMgYXJlIHJl
cG9ydGVkIGluCi0gIHRoZSBYTUwgcmVwb3J0IG5vdy4KLSogQSBndGVzdF9kaXNhYmxlX3B0aHJl
YWRzIENNYWtlIG9wdGlvbi4KLSogQ29sb3JlZCBvdXRwdXQgd29ya3MgaW4gR05VIFNjcmVlbiBz
ZXNzaW9ucyBub3cuCi0qIFBhcmFtZXRlcnMgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBh
cmUgbm93IHByaW50ZWQgaW4gdGhlCi0gIHRleHR1YWwgb3V0cHV0LgotKiBGYWlsdXJlcyBmcm9t
IGFkIGhvYyB0ZXN0IGFzc2VydGlvbnMgcnVuIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgYXJlCi0g
IG5vdyBjb3JyZWN0bHkgcmVwb3J0ZWQuCi0qIEFyZ3VtZW50cyBvZiBBU1NFUlRfWFkgYW5kIEVY
UEVDVF9YWSBubyBsb25nZXIgbmVlZCB0byBzdXBwb3J0IDw8IHRvCi0gIG9zdHJlYW0uCi0qIE1v
cmUgY29tcGxldGUgaGFuZGxpbmcgb2YgZXhjZXB0aW9ucy4KLSogR1RFU1RfQVNTRVJUX1hZIGNh
biBiZSB1c2VkIGluc3RlYWQgb2YgQVNTRVJUX1hZIGluIGNhc2UgdGhlIGxhdHRlcgotICBuYW1l
IGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIGxpYnJhcnkuCi0qIC0tZ3Rlc3RfY2F0Y2hfZXhj
ZXB0aW9ucyBpcyBub3cgdHJ1ZSBieSBkZWZhdWx0LCBhbGxvd2luZyBhIHRlc3QKLSAgcHJvZ3Jh
bSB0byBjb250aW51ZSBhZnRlciBhbiBleGNlcHRpb24gaXMgdGhyb3duLgotKiBWYWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3QgZml4dHVyZXMgY2FuIG5vdyBkZXJpdmUgZnJvbSBUZXN0IGFuZAotICBX
aXRoUGFyYW1JbnRlcmZhY2U8VD4gc2VwYXJhdGVseSwgZWFzaW5nIGNvbnZlcnNpb24gb2YgbGVn
YWN5IHRlc3RzLgotKiBEZWF0aCB0ZXN0IG1lc3NhZ2VzIGFyZSBjbGVhcmx5IG1hcmtlZCB0byBt
YWtlIHRoZW0gbW9yZQotICBkaXN0aW5ndWlzaGFibGUgZnJvbSBvdGhlciBtZXNzYWdlcy4KLSog
Q29tcGF0aWJpbGl0eSBmaXhlcyBmb3IgQW5kcm9pZCwgR29vZ2xlIE5hdGl2ZSBDbGllbnQsIE1p
bkdXLCBIUCBVWCwKLSAgUG93ZXJQQywgTHVjaWQgYXV0b3Rvb2xzLCBsaWJDU3RkLCBTdW4gQysr
LCBCb3JsYW5kIEMrKyBCdWlsZGVyIChDb2RlIEdlYXIpLAotICBJQk0gWEwgQysrIChWaXN1YWwg
QWdlIEMrKyksIGFuZCBDKysweC4KLSogQnVnIGZpeGVzIGFuZCBpbXBsZW1lbnRhdGlvbiBjbGVh
bi11cHMuCi0qIFBvdGVudGlhbGx5IGluY29tcGF0aWJsZSBjaGFuZ2VzOiBkaXNhYmxlcyB0aGUg
aGFybWZ1bCAnbWFrZSBpbnN0YWxsJwotICBjb21tYW5kIGluIGF1dG90b29scy4KLQotQ2hhbmdl
cyBmb3IgMS41LjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiBhc3NlcnRpb25zIGNhbiBiZSBzYWZlbHkg
Y2FsbGVkIGluIG11bHRpcGxlIHRocmVhZHMKLSAgIHdoZXJlIHRoZSBwdGhyZWFkcyBsaWJyYXJ5
IGlzIGF2YWlsYWJsZS4KLSAqIE5ldyBmZWF0dXJlOiBwcmVkaWNhdGVzIHVzZWQgaW5zaWRlIEVY
UEVDVF9UUlVFKCkgYW5kIGZyaWVuZHMKLSAgIGNhbiBub3cgZ2VuZXJhdGUgY3VzdG9tIGZhaWx1
cmUgbWVzc2FnZXMuCi0gKiBOZXcgZmVhdHVyZTogR29vZ2xlIFRlc3QgY2FuIG5vdyBiZSBjb21w
aWxlZCBhcyBhIERMTC4KLSAqIE5ldyBmZWF0dXJlOiBmdXNlZCBzb3VyY2UgZmlsZXMgYXJlIGlu
Y2x1ZGVkLgotICogTmV3IGZlYXR1cmU6IHByaW50cyBoZWxwIHdoZW4gZW5jb3VudGVyaW5nIHVu
cmVjb2duaXplZCBHb29nbGUgVGVzdCBmbGFncy4KLSAqIEV4cGVyaW1lbnRhbCBmZWF0dXJlOiBD
TWFrZSBidWlsZCBzY3JpcHQgKHJlcXVpcmVzIENNYWtlIDIuNi40KykuCi0gKiBFeHBlcmltZW50
YWwgZmVhdHVyZTogdGhlIFB1bXAgc2NyaXB0IGZvciBtZXRhIHByb2dyYW1taW5nLgotICogZG91
YmxlIHZhbHVlcyBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24gYXJlIHByaW50ZWQgd2l0aCBlbm91
Z2ggcHJlY2lzaW9uCi0gICB0byBkaWZmZXJlbnRpYXRlIGFueSB0d28gZGlmZmVyZW50IHZhbHVl
cy4KLSAqIEdvb2dsZSBUZXN0IG5vdyB3b3JrcyBvbiBTb2xhcmlzIGFuZCBBSVguCi0gKiBCdWls
ZCBhbmQgdGVzdCBzY3JpcHQgaW1wcm92ZW1lbnRzLgotICogQnVnIGZpeGVzIGFuZCBpbXBsZW1l
bnRhdGlvbiBjbGVhbi11cHMuCi0KLSBQb3RlbnRpYWxseSBicmVha2luZyBjaGFuZ2VzOgotCi0g
KiBTdG9wcGVkIHN1cHBvcnRpbmcgVkMrKyA3LjEgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgot
ICogRHJvcHBlZCBzdXBwb3J0IGZvciAnbWFrZSBpbnN0YWxsJy4KLQotQ2hhbmdlcyBmb3IgMS40
LjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiB0aGUgZXZlbnQgbGlzdGVuZXIgQVBJCi0gKiBOZXcgZmVh
dHVyZTogdGVzdCBzaHVmZmxpbmcKLSAqIE5ldyBmZWF0dXJlOiB0aGUgWE1MIHJlcG9ydCBmb3Jt
YXQgaXMgY2xvc2VyIHRvIGp1bml0cmVwb3J0IGFuZCBjYW4KLSAgIGJlIHBhcnNlZCBieSBIdWRz
b24gbm93LgotICogTmV3IGZlYXR1cmU6IHdoZW4gYSB0ZXN0IHJ1bnMgdW5kZXIgVmlzdWFsIFN0
dWRpbywgaXRzIGZhaWx1cmVzIGFyZQotICAgaW50ZWdyYXRlZCBpbiB0aGUgSURFLgotICogTmV3
IGZlYXR1cmU6IC9NRChkKSB2ZXJzaW9ucyBvZiBWQysrIHByb2plY3RzLgotICogTmV3IGZlYXR1
cmU6IGVsYXBzZWQgdGltZSBmb3IgdGhlIHRlc3RzIGlzIHByaW50ZWQgYnkgZGVmYXVsdC4KLSAq
IE5ldyBmZWF0dXJlOiBjb21lcyB3aXRoIGEgVFIxIHR1cGxlIGltcGxlbWVudGF0aW9uIHN1Y2gg
dGhhdCBCb29zdAotICAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgQ29tYmluZSgpLgotICogTmV3
IGZlYXR1cmU6IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQgbWFjcm8gYW5kIGZyaWVuZHMuCi0g
KiBOZXcgZmVhdHVyZTogdGhlIFhjb2RlIHByb2plY3QgY2FuIG5vdyBwcm9kdWNlIHN0YXRpYyBn
dGVzdAotICAgbGlicmFyaWVzIGluIGFkZGl0aW9uIHRvIGEgZnJhbWV3b3JrLgotICogQ29tcGF0
aWJpbGl0eSBmaXhlcyBmb3IgU29sYXJpcywgQ3lnd2luLCBtaW5HVywgV2luZG93cyBNb2JpbGUs
Ci0gICBTeW1iaWFuLCBnY2MsIGFuZCBDKytCdWlsZGVyLgotICogQnVnIGZpeGVzIGFuZCBpbXBs
ZW1lbnRhdGlvbiBjbGVhbi11cHMuCi0KLUNoYW5nZXMgZm9yIDEuMy4wOgotCi0gKiBOZXcgZmVh
dHVyZTogZGVhdGggdGVzdHMgb24gV2luZG93cywgQ3lnd2luLCBhbmQgTWFjLgotICogTmV3IGZl
YXR1cmU6IGFiaWxpdHkgdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gb3RoZXIgdGVz
dGluZwotICAgZnJhbWV3b3Jrcy4KLSAqIE5ldyBmZWF0dXJlOiBhYmlsaXR5IHRvIHJ1biBkaXNh
YmxlZCB0ZXN0IHZpYQotICAgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cy4KLSAqIE5l
dyBmZWF0dXJlOiB0aGUgLS1oZWxwIGZsYWcgZm9yIHByaW50aW5nIHRoZSB1c2FnZS4KLSAqIE5l
dyBmZWF0dXJlOiBhY2Nlc3MgdG8gR29vZ2xlIFRlc3QgZmxhZyB2YWx1ZXMgaW4gdXNlciBjb2Rl
LgotICogTmV3IGZlYXR1cmU6IGEgc2NyaXB0IHRoYXQgcGFja3MgR29vZ2xlIFRlc3QgaW50byBv
bmUgLmggYW5kIG9uZQotICAgLmNjIGZpbGUgZm9yIGVhc3kgZGVwbG95bWVudC4KLSAqIE5ldyBm
ZWF0dXJlOiBzdXBwb3J0IGZvciBkaXN0cmlidXRpbmcgdGVzdCBmdW5jdGlvbnMgdG8gbXVsdGlw
bGUKLSAgIG1hY2hpbmVzIChyZXF1aXJlcyBzdXBwb3J0IGZyb20gdGhlIHRlc3QgcnVubmVyKS4K
LSAqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgotCi1DaGFuZ2VzIGZv
ciAxLjIuMToKLQotICogQ29tcGF0aWJpbGl0eSBmaXhlcyBmb3IgTGludXggSUEtNjQgYW5kIElC
TSB6L09TLgotICogQWRkZWQgc3VwcG9ydCBmb3IgdXNpbmcgQm9vc3QgYW5kIG90aGVyIFRSMSBp
bXBsZW1lbnRhdGlvbnMuCi0gKiBDaGFuZ2VzIHRvIHRoZSBidWlsZCBzY3JpcHRzIHRvIHN1cHBv
cnQgdXBjb21pbmcgcmVsZWFzZSBvZiBHb29nbGUgQysrCi0gICBNb2NraW5nIEZyYW1ld29yay4K
LSAqIEFkZGVkIE1ha2VmaWxlIHRvIHRoZSBkaXN0cmlidXRpb24gcGFja2FnZS4KLSAqIEltcHJv
dmVkIGJ1aWxkIGluc3RydWN0aW9ucyBpbiBSRUFETUUuCi0KLUNoYW5nZXMgZm9yIDEuMi4wOgot
Ci0gKiBOZXcgZmVhdHVyZTogdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSAqIE5ldyBmZWF0
dXJlOiB0aGUgQVNTRVJUL0VYUEVDVF8oTk9OKUZBVEFMX0ZBSUxVUkUoX09OX0FMTF9USFJFQURT
KQotICAgbWFjcm9zLgotICogQ2hhbmdlZCB0aGUgWE1MIHJlcG9ydCBmb3JtYXQgdG8gbWF0Y2gg
SlVuaXQvQW50J3MuCi0gKiBBZGRlZCB0ZXN0cyB0byB0aGUgWGNvZGUgcHJvamVjdC4KLSAqIEFk
ZGVkIHNjb25zL1NDb25zY3JpcHQgZm9yIGJ1aWxkaW5nIHdpdGggU0NvbnMuCi0gKiBBZGRlZCBz
cmMvZ3Rlc3QtYWxsLmNjIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBmcm9tIGEgc2luZ2xlIGZp
bGUuCi0gKiBGaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggU29sYXJpcyBhbmQgei9PUy4KLSAqIEVu
YWJsZWQgcnVubmluZyBQeXRob24gdGVzdHMgb24gc3lzdGVtcyB3aXRoIHB5dGhvbiAyLjMgaW5z
dGFsbGVkLAotICAgZS5nLiBNYWMgT1MgWCAxMC40LgotICogQnVnIGZpeGVzLgotCi1DaGFuZ2Vz
IGZvciAxLjEuMDoKLQotICogTmV3IGZlYXR1cmU6IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
LSAqIE5ldyBmZWF0dXJlOiBleGNlcHRpb24gYXNzZXJ0aW9ucy4KLSAqIE5ldyBmZWF0dXJlOiBw
cmludGluZyBlbGFwc2VkIHRpbWUgb2YgdGVzdHMuCi0gKiBJbXByb3ZlZCB0aGUgcm9idXN0bmVz
cyBvZiBkZWF0aCB0ZXN0cy4KLSAqIEFkZGVkIGFuIFhjb2RlIHByb2plY3QgYW5kIHNhbXBsZXMu
Ci0gKiBBZGp1c3RlZCB0aGUgb3V0cHV0IGZvcm1hdCBvbiBXaW5kb3dzIHRvIGJlIHVuZGVyc3Rh
bmRhYmxlIGJ5IFZpc3VhbCBTdHVkaW8uCi0gKiBNaW5vciBidWcgZml4ZXMuCi0KLUNoYW5nZXMg
Zm9yIDEuMC4xOgotCi0gKiBBZGRlZCBwcm9qZWN0IGZpbGVzIGZvciBWaXN1YWwgU3R1ZGlvIDcu
MS4KLSAqIEZpeGVkIGlzc3VlcyB3aXRoIGNvbXBpbGluZyBvbiBNYWMgT1MgWC4KLSAqIEZpeGVk
IGlzc3VlcyB3aXRoIGNvbXBpbGluZyBvbiBDeWd3aW4uCi0KLUNoYW5nZXMgZm9yIDEuMC4wOgot
Ci0gKiBJbml0aWFsIE9wZW4gU291cmNlIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZDBhOWVjYzI5ODdmOGY3MjFhYjY2
MmYwMWVlZjI0OWJjYzVjZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwy
ODYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENNYWtlIGJ1aWxkIHNjcmlwdCBmb3IgR29v
Z2xlIFRlc3QuCi0jCi0jIFRvIHJ1biB0aGUgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBv
biBMaW51eCwgdXNlICdtYWtlIHRlc3QnIG9yCi0jIGN0ZXN0LiAgWW91IGNhbiBzZWxlY3Qgd2hp
Y2ggdGVzdHMgdG8gcnVuIHVzaW5nICdjdGVzdCAtUiByZWdleCcuCi0jIEZvciBtb3JlIG9wdGlv
bnMsIHJ1biAnY3Rlc3QgLS1oZWxwJy4KLQotIyBCVUlMRF9TSEFSRURfTElCUyBpcyBhIHN0YW5k
YXJkIENNYWtlIHZhcmlhYmxlLCBidXQgd2UgZGVjbGFyZSBpdCBoZXJlIHRvCi0jIG1ha2UgaXQg
cHJvbWluZW50IGluIHRoZSBHVUkuCi1vcHRpb24oQlVJTERfU0hBUkVEX0xJQlMgIkJ1aWxkIHNo
YXJlZCBsaWJyYXJpZXMgKERMTHMpLiIgT0ZGKQotCi0jIFdoZW4gb3RoZXIgbGlicmFyaWVzIGFy
ZSB1c2luZyBhIHNoYXJlZCB2ZXJzaW9uIG9mIHJ1bnRpbWUgbGlicmFyaWVzLAotIyBHb29nbGUg
VGVzdCBhbHNvIGhhcyB0byB1c2Ugb25lLgotb3B0aW9uKAotICBndGVzdF9mb3JjZV9zaGFyZWRf
Y3J0Ci0gICJVc2Ugc2hhcmVkIChETEwpIHJ1bi10aW1lIGxpYiBldmVuIHdoZW4gR29vZ2xlIFRl
c3QgaXMgYnVpbHQgYXMgc3RhdGljIGxpYi4iCi0gIE9GRikKLQotb3B0aW9uKGd0ZXN0X2J1aWxk
X3Rlc3RzICJCdWlsZCBhbGwgb2YgZ3Rlc3QncyBvd24gdGVzdHMuIiBPRkYpCi0KLW9wdGlvbihn
dGVzdF9idWlsZF9zYW1wbGVzICJCdWlsZCBndGVzdCdzIHNhbXBsZSBwcm9ncmFtcy4iIE9GRikK
LQotb3B0aW9uKGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgIkRpc2FibGUgdXNlcyBvZiBwdGhyZWFk
cyBpbiBndGVzdC4iIE9GRikKLQotb3B0aW9uKAotICBndGVzdF9oaWRlX2ludGVybmFsX3N5bWJv
bHMKLSAgIkJ1aWxkIGd0ZXN0IHdpdGggaW50ZXJuYWwgc3ltYm9scyBoaWRkZW4gaW4gc2hhcmVk
IGxpYnJhcmllcy4iCi0gIE9GRikKLQotIyBEZWZpbmVzIHByZV9wcm9qZWN0X3NldF91cF9oZXJt
ZXRpY19idWlsZCgpIGFuZCBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKS4KLWluY2x1ZGUoY21ha2Uv
aGVybWV0aWNfYnVpbGQuY21ha2UgT1BUSU9OQUwpCi0KLWlmIChDT01NQU5EIHByZV9wcm9qZWN0
X3NldF91cF9oZXJtZXRpY19idWlsZCkKLSAgcHJlX3Byb2plY3Rfc2V0X3VwX2hlcm1ldGljX2J1
aWxkKCkKLWVuZGlmKCkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIFByb2plY3Qtd2lkZSBzZXR0
aW5ncwotCi0jIE5hbWUgb2YgdGhlIHByb2plY3QuCi0jCi0jIENNYWtlIGZpbGVzIGluIHRoaXMg
cHJvamVjdCBjYW4gcmVmZXIgdG8gdGhlIHJvb3Qgc291cmNlIGRpcmVjdG9yeQotIyBhcyAke2d0
ZXN0X1NPVVJDRV9ESVJ9IGFuZCB0byB0aGUgcm9vdCBiaW5hcnkgZGlyZWN0b3J5IGFzCi0jICR7
Z3Rlc3RfQklOQVJZX0RJUn0uCi0jIExhbmd1YWdlICJDIiBpcyByZXF1aXJlZCBmb3IgZmluZF9w
YWNrYWdlKFRocmVhZHMpLgotcHJvamVjdChndGVzdCBDWFggQykKLWNtYWtlX21pbmltdW1fcmVx
dWlyZWQoVkVSU0lPTiAyLjYuNCkKLQotaWYgKENPTU1BTkQgc2V0X3VwX2hlcm1ldGljX2J1aWxk
KQotICBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKQotZW5kaWYoKQotCi1pZiAoZ3Rlc3RfaGlkZV9p
bnRlcm5hbF9zeW1ib2xzKQotICBzZXQoQ01BS0VfQ1hYX1ZJU0lCSUxJVFlfUFJFU0VUIGhpZGRl
bikKLSAgc2V0KENNQUtFX1ZJU0lCSUxJVFlfSU5MSU5FU19ISURERU4gMSkKLWVuZGlmKCkKLQot
IyBEZWZpbmUgaGVscGVyIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVzZWQgYnkgR29vZ2xlIFRlc3Qu
Ci1pbmNsdWRlKGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlKQotCi1jb25maWdfY29tcGlsZXJf
YW5kX2xpbmtlcigpICAjIERlZmluZWQgaW4gaW50ZXJuYWxfdXRpbHMuY21ha2UuCi0KLSMgV2hl
cmUgR29vZ2xlIFRlc3QncyAuaCBmaWxlcyBjYW4gYmUgZm91bmQuCi1pbmNsdWRlX2RpcmVjdG9y
aWVzKAotICAke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUKLSAgJHtndGVzdF9TT1VSQ0VfRElS
fSkKLQotIyBXaGVyZSBHb29nbGUgVGVzdCdzIGxpYnJhcmllcyBjYW4gYmUgZm91bmQuCi1saW5r
X2RpcmVjdG9yaWVzKCR7Z3Rlc3RfQklOQVJZX0RJUn0vc3JjKQotCi0jIFN1bW1hcnkgb2YgdHVw
bGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86Ci0jIENvbXBpbGVyICAgIHZl
cnNpb24oTVMpICB2ZXJzaW9uKGNtYWtlKSAgU3VwcG9ydAotIyAtLS0tLS0tLS0tICAtLS0tLS0t
LS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDw9
IFZTIDIwMTAgIDw9IDEwICAgICAgICA8PSAxNjAwICAgICAgICAgVXNlIEdvb2dsZSBUZXN0cydz
IG93biB0dXBsZS4KLSMgVlMgMjAxMiAgICAgMTEgICAgICAgICAgIDE3MDAgICAgICAgICAgICBz
dGQ6OnRyMTo6dHVwbGUgKyBfVkFSSUFESUNfTUFYPTEwCi0jIFZTIDIwMTMgICAgIDEyICAgICAg
ICAgICAxODAwICAgICAgICAgICAgc3RkOjp0cjE6OnR1cGxlCi1pZiAoTVNWQyBBTkQgTVNWQ19W
RVJTSU9OIEVRVUFMIDE3MDApCi0gIGFkZF9kZWZpbml0aW9ucygvRCBfVkFSSUFESUNfTUFYPTEw
KQotZW5kaWYoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgRGVmaW5lcyB0aGUgZ3Rlc3QgJiBn
dGVzdF9tYWluIGxpYnJhcmllcy4gIFVzZXIgdGVzdHMgc2hvdWxkIGxpbmsKLSMgd2l0aCBvbmUg
b2YgdGhlbS4KLQotIyBHb29nbGUgVGVzdCBsaWJyYXJpZXMuICBXZSBidWlsZCB0aGVtIHVzaW5n
IG1vcmUgc3RyaWN0IHdhcm5pbmdzIHRoYW4gd2hhdAotIyBhcmUgdXNlZCBmb3Igb3RoZXIgdGFy
Z2V0cywgdG8gZW5zdXJlIHRoYXQgZ3Rlc3QgY2FuIGJlIGNvbXBpbGVkIGJ5IGEgdXNlcgotIyBh
Z2dyZXNzaXZlIGFib3V0IHdhcm5pbmdzLgotY3h4X2xpYnJhcnkoZ3Rlc3QgIiR7Y3h4X3N0cmlj
dH0iIHNyYy9ndGVzdC1hbGwuY2MpCi1jeHhfbGlicmFyeShndGVzdF9tYWluICIke2N4eF9zdHJp
Y3R9IiBzcmMvZ3Rlc3RfbWFpbi5jYykKLXRhcmdldF9saW5rX2xpYnJhcmllcyhndGVzdF9tYWlu
IGd0ZXN0KQotCi0jIElmIHRoZSBDTWFrZSB2ZXJzaW9uIHN1cHBvcnRzIGl0LCBhdHRhY2ggaGVh
ZGVyIGRpcmVjdG9yeSBpbmZvcm1hdGlvbgotIyB0byB0aGUgdGFyZ2V0cyBmb3Igd2hlbiB3ZSBh
cmUgcGFydCBvZiBhIHBhcmVudCBidWlsZCAoaWUgYmVpbmcgcHVsbGVkCi0jIGluIHZpYSBhZGRf
c3ViZGlyZWN0b3J5KCkgcmF0aGVyIHRoYW4gYmVpbmcgYSBzdGFuZGFsb25lIGJ1aWxkKS4KLWlm
IChERUZJTkVEIENNQUtFX1ZFUlNJT04gQU5EIE5PVCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lP
Tl9MRVNTICIyLjguMTEiKQotICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhndGVzdCAgICAg
IElOVEVSRkFDRSAiJHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRlIikKLSAgdGFyZ2V0X2luY2x1
ZGVfZGlyZWN0b3JpZXMoZ3Rlc3RfbWFpbiBJTlRFUkZBQ0UgIiR7Z3Rlc3RfU09VUkNFX0RJUn0v
aW5jbHVkZSIpCi1lbmRpZigpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBJbnN0YWxsIHJ1bGVz
Ci1pbnN0YWxsKFRBUkdFVFMgZ3Rlc3QgZ3Rlc3RfbWFpbgotICBERVNUSU5BVElPTiBsaWIpCi1p
bnN0YWxsKERJUkVDVE9SWSAke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUvZ3Rlc3QKLSAgREVT
VElOQVRJT04gaW5jbHVkZSkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIFNhbXBsZXMgb24gaG93
IHRvIGxpbmsgdXNlciB0ZXN0cyB3aXRoIGd0ZXN0IG9yIGd0ZXN0X21haW4uCi0jCi0jIFRoZXkg
YXJlIG5vdCBidWlsdCBieSBkZWZhdWx0LiAgVG8gYnVpbGQgdGhlbSwgc2V0IHRoZQotIyBndGVz
dF9idWlsZF9zYW1wbGVzIG9wdGlvbiB0byBPTi4gIFlvdSBjYW4gZG8gaXQgYnkgcnVubmluZyBj
Y21ha2UKLSMgb3Igc3BlY2lmeWluZyB0aGUgLURndGVzdF9idWlsZF9zYW1wbGVzPU9OIGZsYWcg
d2hlbiBydW5uaW5nIGNtYWtlLgotCi1pZiAoZ3Rlc3RfYnVpbGRfc2FtcGxlcykKLSAgY3h4X2V4
ZWN1dGFibGUoc2FtcGxlMV91bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4gc2FtcGxlcy9zYW1w
bGUxLmNjKQotICBjeHhfZXhlY3V0YWJsZShzYW1wbGUyX3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3Rf
bWFpbiBzYW1wbGVzL3NhbXBsZTIuY2MpCi0gIGN4eF9leGVjdXRhYmxlKHNhbXBsZTNfdW5pdHRl
c3Qgc2FtcGxlcyBndGVzdF9tYWluKQotICBjeHhfZXhlY3V0YWJsZShzYW1wbGU0X3VuaXR0ZXN0
IHNhbXBsZXMgZ3Rlc3RfbWFpbiBzYW1wbGVzL3NhbXBsZTQuY2MpCi0gIGN4eF9leGVjdXRhYmxl
KHNhbXBsZTVfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluIHNhbXBsZXMvc2FtcGxlMS5jYykK
LSAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlNl91bml0dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4pCi0g
IGN4eF9leGVjdXRhYmxlKHNhbXBsZTdfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluKQotICBj
eHhfZXhlY3V0YWJsZShzYW1wbGU4X3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3RfbWFpbikKLSAgY3h4
X2V4ZWN1dGFibGUoc2FtcGxlOV91bml0dGVzdCBzYW1wbGVzIGd0ZXN0KQotICBjeHhfZXhlY3V0
YWJsZShzYW1wbGUxMF91bml0dGVzdCBzYW1wbGVzIGd0ZXN0KQotZW5kaWYoKQotCi0jIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKLSMKLSMgR29vZ2xlIFRlc3QncyBvd24gdGVzdHMuCi0jCi0jIFlvdSBjYW4gc2tp
cCB0aGlzIHNlY3Rpb24gaWYgeW91IGFyZW4ndCBpbnRlcmVzdGVkIGluIHRlc3RpbmcKLSMgR29v
Z2xlIFRlc3QgaXRzZWxmLgotIwotIyBUaGUgdGVzdHMgYXJlIG5vdCBidWlsdCBieSBkZWZhdWx0
LiAgVG8gYnVpbGQgdGhlbSwgc2V0IHRoZQotIyBndGVzdF9idWlsZF90ZXN0cyBvcHRpb24gdG8g
T04uICBZb3UgY2FuIGRvIGl0IGJ5IHJ1bm5pbmcgY2NtYWtlCi0jIG9yIHNwZWNpZnlpbmcgdGhl
IC1EZ3Rlc3RfYnVpbGRfdGVzdHM9T04gZmxhZyB3aGVuIHJ1bm5pbmcgY21ha2UuCi0KLWlmIChn
dGVzdF9idWlsZF90ZXN0cykKLSAgIyBUaGlzIG11c3QgYmUgc2V0IGluIHRoZSByb290IGRpcmVj
dG9yeSBmb3IgdGhlIHRlc3RzIHRvIGJlIHJ1biBieQotICAjICdtYWtlIHRlc3QnIG9yIGN0ZXN0
LgotICBlbmFibGVfdGVzdGluZygpCi0KLSAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICMgQysrIHRlc3RzIGJ1aWx0IHdpdGgg
c3RhbmRhcmQgY29tcGlsZXIgZmxhZ3MuCi0KLSAgY3h4X3Rlc3QoZ3Rlc3QtZGVhdGgtdGVzdF90
ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0ZXN0X2Vudmlyb25tZW50X3Rlc3QgZ3Rlc3Qp
Ci0gIGN4eF90ZXN0KGd0ZXN0LWZpbGVwYXRoX3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3Qo
Z3Rlc3QtbGlua2VkX3B0cl90ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0ZXN0LWxpc3Rl
bmVyX3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3QoZ3Rlc3RfbWFpbl91bml0dGVzdCBndGVz
dF9tYWluKQotICBjeHhfdGVzdChndGVzdC1tZXNzYWdlX3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4
X3Rlc3QoZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCBndGVzdCkKLSAgY3h4X3Rlc3QoZ3Rlc3Qtb3B0
aW9uc190ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0ZXN0LXBhcmFtLXRlc3RfdGVzdCBn
dGVzdAotICAgIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYykKLSAgY3h4X3Rlc3QoZ3Rl
c3QtcG9ydF90ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0ZXN0X3ByZWRfaW1wbF91bml0
dGVzdCBndGVzdF9tYWluKQotICBjeHhfdGVzdChndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0IGd0
ZXN0Ci0gICAgdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjKQotICBjeHhfdGVzdChn
dGVzdC1wcmludGVyc190ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0ZXN0X3Byb2RfdGVz
dCBndGVzdF9tYWluCi0gICAgdGVzdC9wcm9kdWN0aW9uLmNjKQotICBjeHhfdGVzdChndGVzdF9y
ZXBlYXRfdGVzdCBndGVzdCkKLSAgY3h4X3Rlc3QoZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdCBndGVz
dF9tYWluKQotICBjeHhfdGVzdChndGVzdF9zdHJlc3NfdGVzdCBndGVzdCkKLSAgY3h4X3Rlc3Qo
Z3Rlc3QtdGVzdC1wYXJ0X3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3QoZ3Rlc3RfdGhyb3df
b25fZmFpbHVyZV9leF90ZXN0IGd0ZXN0KQotICBjeHhfdGVzdChndGVzdC10eXBlZC10ZXN0X3Rl
c3QgZ3Rlc3RfbWFpbgotICAgIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYykKLSAgY3h4
X3Rlc3QoZ3Rlc3RfdW5pdHRlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3QoZ3Rlc3QtdW5pdHRl
c3QtYXBpX3Rlc3QgZ3Rlc3QpCi0KLSAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICMgQysrIHRlc3RzIGJ1aWx0IHdpdGggbm9u
LXN0YW5kYXJkIGNvbXBpbGVyIGZsYWdzLgotCi0gICMgTVNWQyA3LjEgZG9lcyBub3Qgc3VwcG9y
dCBTVEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotICBpZiAoTk9UIE1TVkMgT1IgTVNWQ19W
RVJTSU9OIEdSRUFURVIgMTMxMCkKLSAgICBjeHhfbGlicmFyeShndGVzdF9ub19leGNlcHRpb24g
IiR7Y3h4X25vX2V4Y2VwdGlvbn0iCi0gICAgICBzcmMvZ3Rlc3QtYWxsLmNjKQotICAgIGN4eF9s
aWJyYXJ5KGd0ZXN0X21haW5fbm9fZXhjZXB0aW9uICIke2N4eF9ub19leGNlcHRpb259IgotICAg
ICAgc3JjL2d0ZXN0LWFsbC5jYyBzcmMvZ3Rlc3RfbWFpbi5jYykKLSAgZW5kaWYoKQotICBjeHhf
bGlicmFyeShndGVzdF9tYWluX25vX3J0dGkgIiR7Y3h4X25vX3J0dGl9IgotICAgIHNyYy9ndGVz
dC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCi0KLSAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhndGVz
dC1kZWF0aC10ZXN0X2V4X25vY2F0Y2hfdGVzdAotICAgICIke2N4eF9leGNlcHRpb259IC1ER1RF
U1RfRU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfPTAiCi0gICAgZ3Rlc3QgdGVzdC9ndGVzdC1kZWF0
aC10ZXN0X2V4X3Rlc3QuY2MpCi0gIGN4eF90ZXN0X3dpdGhfZmxhZ3MoZ3Rlc3QtZGVhdGgtdGVz
dF9leF9jYXRjaF90ZXN0Ci0gICAgIiR7Y3h4X2V4Y2VwdGlvbn0gLURHVEVTVF9FTkFCTEVfQ0FU
Q0hfRVhDRVBUSU9OU189MSIKLSAgICBndGVzdCB0ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVz
dC5jYykKLQotICBjeHhfdGVzdF93aXRoX2ZsYWdzKGd0ZXN0X25vX3J0dGlfdW5pdHRlc3QgIiR7
Y3h4X25vX3J0dGl9IgotICAgIGd0ZXN0X21haW5fbm9fcnR0aSB0ZXN0L2d0ZXN0X3VuaXR0ZXN0
LmNjKQotCi0gIGN4eF9zaGFyZWRfbGlicmFyeShndGVzdF9kbGwgIiR7Y3h4X2RlZmF1bHR9Igot
ICAgIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCi0KLSAgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncyhndGVzdF9kbGxfdGVzdF8gIiR7Y3h4X2RlZmF1bHR9IgotICAgIGd0ZXN0
X2RsbCB0ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjKQotICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZ3Rl
c3RfZGxsX3Rlc3RfCi0gICAgICAgICAgICAgICAgICAgICAgICBQUk9QRVJUSUVTCi0gICAgICAg
ICAgICAgICAgICAgICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hB
UkVEX0xJQlJBUlk9MSIpCi0KLSAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lPTiBMRVNTIDE2
MDApICAjIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwLgotICAgICMgVmlzdWFsIFN0dWRpbyAy
MDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0aGF0Ci0gICAg
IyBjb25mbGljdCB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIg
b3duIHR1cGxlIGRvZXMgbm90Ci0gICAgIyB3b3JrIG9uIHRob3NlIGNvbXBpbGVycy4KLSAgICBj
eHhfbGlicmFyeShndGVzdF9tYWluX3VzZV9vd25fdHVwbGUgIiR7Y3h4X3VzZV9vd25fdHVwbGV9
IgotICAgICAgc3JjL2d0ZXN0LWFsbC5jYyBzcmMvZ3Rlc3RfbWFpbi5jYykKLQotICAgIGN4eF90
ZXN0X3dpdGhfZmxhZ3MoZ3Rlc3QtdHVwbGVfdGVzdCAiJHtjeHhfdXNlX293bl90dXBsZX0iCi0g
ICAgICBndGVzdF9tYWluX3VzZV9vd25fdHVwbGUgdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjKQot
Ci0gICAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhndGVzdF91c2Vfb3duX3R1cGxlX3Rlc3QgIiR7Y3h4
X3VzZV9vd25fdHVwbGV9IgotICAgICAgZ3Rlc3RfbWFpbl91c2Vfb3duX3R1cGxlCi0gICAgICB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3Qu
Y2MpCi0gIGVuZGlmKCkKLQotICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgIyBQeXRob24gdGVzdHMuCi0KLSAgY3h4X2V4ZWN1
dGFibGUoZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8gdGVzdCBndGVzdCkKLSAgcHlf
dGVzdChndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0KQotCi0gICMgVmlzdWFsIFN0dWRp
byAuTkVUIDIwMDMgZG9lcyBub3Qgc3VwcG9ydCBTVEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVk
LgotICBpZiAoTk9UIE1TVkMgT1IgTVNWQ19WRVJTSU9OIEdSRUFURVIgMTMxMCkgICMgMTMxMCBp
cyBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMwotICAgIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3Mo
Ci0gICAgICBndGVzdF9jYXRjaF9leGNlcHRpb25zX25vX2V4X3Rlc3RfCi0gICAgICAiJHtjeHhf
bm9fZXhjZXB0aW9ufSIKLSAgICAgIGd0ZXN0X21haW5fbm9fZXhjZXB0aW9uCi0gICAgICB0ZXN0
L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8uY2MpCi0gIGVuZGlmKCkKLQotICBjeHhfZXhl
Y3V0YWJsZV93aXRoX2ZsYWdzKAotICAgIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8K
LSAgICAiJHtjeHhfZXhjZXB0aW9ufSIKLSAgICBndGVzdF9tYWluCi0gICAgdGVzdC9ndGVzdF9j
YXRjaF9leGNlcHRpb25zX3Rlc3RfLmNjKQotICBweV90ZXN0KGd0ZXN0X2NhdGNoX2V4Y2VwdGlv
bnNfdGVzdCkKLQotICBjeHhfZXhlY3V0YWJsZShndGVzdF9jb2xvcl90ZXN0XyB0ZXN0IGd0ZXN0
KQotICBweV90ZXN0KGd0ZXN0X2NvbG9yX3Rlc3QpCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3Rf
ZW52X3Zhcl90ZXN0XyB0ZXN0IGd0ZXN0KQotICBweV90ZXN0KGd0ZXN0X2Vudl92YXJfdGVzdCkK
LQotICBjeHhfZXhlY3V0YWJsZShndGVzdF9maWx0ZXJfdW5pdHRlc3RfIHRlc3QgZ3Rlc3QpCi0g
IHB5X3Rlc3QoZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0KQotCi0gIGN4eF9leGVjdXRhYmxlKGd0ZXN0
X2hlbHBfdGVzdF8gdGVzdCBndGVzdF9tYWluKQotICBweV90ZXN0KGd0ZXN0X2hlbHBfdGVzdCkK
LQotICBjeHhfZXhlY3V0YWJsZShndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyB0ZXN0IGd0ZXN0
KQotICBweV90ZXN0KGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QpCi0KLSAgY3h4X2V4ZWN1dGFi
bGUoZ3Rlc3Rfb3V0cHV0X3Rlc3RfIHRlc3QgZ3Rlc3QpCi0gIHB5X3Rlc3QoZ3Rlc3Rfb3V0cHV0
X3Rlc3QpCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3Rfc2h1ZmZsZV90ZXN0XyB0ZXN0IGd0ZXN0
KQotICBweV90ZXN0KGd0ZXN0X3NodWZmbGVfdGVzdCkKLQotICAjIE1TVkMgNy4xIGRvZXMgbm90
IHN1cHBvcnQgU1RMIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KLSAgaWYgKE5PVCBNU1ZDIE9S
IE1TVkNfVkVSU0lPTiBHUkVBVEVSIDEzMTApCi0gICAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfdGhy
b3dfb25fZmFpbHVyZV90ZXN0XyB0ZXN0IGd0ZXN0X25vX2V4Y2VwdGlvbikKLSAgICBzZXRfdGFy
Z2V0X3Byb3BlcnRpZXMoZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XwotICAgICAgUFJPUEVS
VElFUwotICAgICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfbm9fZXhjZXB0aW9ufSIpCi0gICAgcHlf
dGVzdChndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QpCi0gIGVuZGlmKCkKLQotICBjeHhfZXhl
Y3V0YWJsZShndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfIHRlc3QgZ3Rlc3QpCi0gIHB5X3Rlc3Qo
Z3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0KQotCi0gIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9v
dXRmaWxlMV90ZXN0XyB0ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3ht
bF9vdXRmaWxlMl90ZXN0XyB0ZXN0IGd0ZXN0X21haW4pCi0gIHB5X3Rlc3QoZ3Rlc3RfeG1sX291
dGZpbGVzX3Rlc3QpCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8gdGVzdCBndGVzdCkKLSAgcHlfdGVzdChndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0KQotZW5k
aWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ09OVFJJQlVUT1JTIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
Q09OVFJJQlVUT1JTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWFlMmZjMDQ0MTBk
YzMwOGU0NjRhYTI1NmZlMWYyZDMxZWRjOTg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NPTlRSSUJVVE9SUworKysgL2Rldi9udWxs
CkBAIC0xLDM3ICswLDAgQEAKLSMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBwZW9wbGUg
d2hvJ3ZlIG1hZGUgbm9uLXRyaXZpYWwKLSMgY29udHJpYnV0aW9uIHRvIHRoZSBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIHByb2plY3QuICBQZW9wbGUKLSMgd2hvIGNvbW1pdCBjb2RlIHRv
IHRoZSBwcm9qZWN0IGFyZSBlbmNvdXJhZ2VkIHRvIGFkZCB0aGVpciBuYW1lcwotIyBoZXJlLiAg
UGxlYXNlIGtlZXAgdGhlIGxpc3Qgc29ydGVkIGJ5IGZpcnN0IG5hbWVzLgotCi1BamF5IEpvc2hp
IDxqYWpAZ29vZ2xlLmNvbT4KLUJhbMOhenMgRMOhbiA8YmFsYXpzLmRhbkBnbWFpbC5jb20+Ci1C
aGFyYXQgTWVkaXJhdHRhIDxiaGFyYXRAbWVuYWx0by5jb20+Ci1DaGFuZGxlciBDYXJydXRoIDxj
aGFuZGxlcmNAZ29vZ2xlLmNvbT4KLUNocmlzIFByaW5jZSA8Y3ByaW5jZUBnb29nbGUuY29tPgot
Q2hyaXMgVGF5bG9yIDx0YXlsb3JjQGdvb2dsZS5jb20+Ci1EYW4gRWdub3IgPGVnbm9yQGdvb2ds
ZS5jb20+Ci1FcmljIFJvbWFuIDxlcm9tYW5AY2hyb21pdW0ub3JnPgotSGFkeSBaYWxlayA8aGFk
eS56YWxla0BnbWFpbC5jb20+Ci1KZWZmcmV5IFlhc3NraW4gPGp5YXNza2luQGdvb2dsZS5jb20+
Ci1Kw7NpIFNpZ3Vyw7Bzc29uIDxqb2lAZ29vZ2xlLmNvbT4KLUtlaXIgTWllcmxlIDxtaWVybGVA
Z21haWwuY29tPgotS2VpdGggUmF5IDxrZWl0aC5yYXlAZ21haWwuY29tPgotS2VudG9uIFZhcmRh
IDxrZW50b25AZ29vZ2xlLmNvbT4KLU1hbnVlbCBLbGltZWsgPGtsaW1la0Bnb29nbGUuY29tPgot
TWFya3VzIEhldWxlIDxtYXJrdXMuaGV1bGVAZ21haWwuY29tPgotTWlrYSBSYWVudG8gPG1pa2ll
QGlraS5maT4KLU1pa2zDs3MgRmF6ZWthcyA8bWZhemVrYXNAc3plbWFmb3IuY29tPgotUGFzaSBW
YWxtaW5lbiA8cGFzaS52YWxtaW5lbkBnbWFpbC5jb20+Ci1QYXRyaWNrIEhhbm5hIDxwaGFubmFA
Z29vZ2xlLmNvbT4KLVBhdHJpY2sgUmlsZXkgPHBmckBnb29nbGUuY29tPgotUGV0ZXIgS2FtaW5z
a2kgPHBpb3Rya0Bnb29nbGUuY29tPgotUHJlc3RvbiBKYWNrc29uIDxwcmVzdG9uLmEuamFja3Nv
bkBnbWFpbC5jb20+Ci1SYWluZXIgS2xhZmZlbmJvZWNrIDxyYWluZXIua2xhZmZlbmJvZWNrQGR5
bmF0cmFjZS5jb20+Ci1SdXNzIENveCA8cnNjQGdvb2dsZS5jb20+Ci1SdXNzIFJ1ZmVyIDxydXNz
QHBlbnRhZC5jb20+Ci1TZWFuIE1jYWZlZSA8ZWVmYWNtQGdtYWlsLmNvbT4KLVNpZ3Vyw7B1ciDD
gXNnZWlyc3NvbiA8c2lnZ2lAZ29vZ2xlLmNvbT4KLVRyYWN5IEJpYWxpayA8dHJhY3lAcGVudGFk
LmNvbT4KLVZhZGltIEJlcm1hbiA8dmFkaW1iQGdvb2dsZS5jb20+Ci1WbGFkIExvc2V2IDx2bGFk
bEBnb29nbGUuY29tPgotWmhhbnlvbmcgV2FuIDx3YW5AZ29vZ2xlLmNvbT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxOTQxYTExZjhjZTk0Mzg5MTYwYjQ1ODkyN2EyOWJhMjE3NTQyODE4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAw
OCwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L01ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc5N2U0ZTlkZTRl
MWQ1ZTVmOTNiYmExNDI4OGRlODdmNjIzOTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwK
QEAgLTEsMzEwICswLDAgQEAKLSMgQXV0b21ha2UgZmlsZQotCi1BQ0xPQ0FMX0FNRkxBR1MgPSAt
SSBtNAotCi0jIE5vbnN0YW5kYXJkIHBhY2thZ2UgZmlsZXMgZm9yIGRpc3RyaWJ1dGlvbgotRVhU
UkFfRElTVCA9IFwKLSAgQ0hBTkdFUyBcCi0gIENPTlRSSUJVVE9SUyBcCi0gIExJQ0VOU0UgXAot
ICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgXAotICBpbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBcCi0gIG1ha2UvTWFrZWZpbGUgXAotICBzY3Jp
cHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgXAotICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwu
cHkgXAotICBzY3JpcHRzL3B1bXAucHkgXAotICBzY3JpcHRzL3Rlc3QvTWFrZWZpbGUKLQotIyBn
dGVzdCBzb3VyY2UgZmlsZXMgdGhhdCB3ZSBkb24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhleSBh
cmUKLSMgI2luY2x1ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KLUdURVNUX1NSQyA9IFwKLSAgc3JjL2d0
ZXN0LWRlYXRoLXRlc3QuY2MgXAotICBzcmMvZ3Rlc3QtZmlsZXBhdGguY2MgXAotICBzcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmggXAotICBzcmMvZ3Rlc3QtcG9ydC5jYyBcCi0gIHNyYy9ndGVzdC1w
cmludGVycy5jYyBcCi0gIHNyYy9ndGVzdC10ZXN0LXBhcnQuY2MgXAotICBzcmMvZ3Rlc3QtdHlw
ZWQtdGVzdC5jYyBcCi0gIHNyYy9ndGVzdC5jYwotCi1FWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JD
KQotCi0jIFNhbXBsZSBmaWxlcyB0aGF0IHdlIGRvbid0IGNvbXBpbGUuCi1FWFRSQV9ESVNUICs9
IFwKLSAgc2FtcGxlcy9wcmltZV90YWJsZXMuaCBcCi0gIHNhbXBsZXMvc2FtcGxlMl91bml0dGVz
dC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxl
NF91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYyBcCi0gIHNhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBc
Ci0gIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlOV91bml0
dGVzdC5jYwotCi0jIEMrKyB0ZXN0IGZpbGVzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3Rs
eS4KLUVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBc
Ci0gIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1maWxlcGF0
aF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgXAotICB0ZXN0L2d0
ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBcCi0g
IHRlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90
ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVz
dC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBc
Ci0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmggXAotICB0ZXN0L2d0ZXN0LXBvcnRfdGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rl
c3QtcHJpbnRlcnNfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAot
ICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rl
c3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdF90ZXN0LmggXAotICB0ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIFwK
LSAgdGVzdC9ndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rl
c3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdF8u
Y2MgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2Vudmly
b25tZW50X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MgXAotICB0
ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRl
c3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9u
b190ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgXAotICB0
ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfcHJvZF90ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Rfc2h1ZmZs
ZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBcCi0gIHRlc3Qv
Z3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYyBcCi0gIHRl
c3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pdHRlc3Qu
Y2MgXAotICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZTFfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBcCi0gIHRl
c3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uY2Mg
XAotICB0ZXN0L3Byb2R1Y3Rpb24uaAotCi0jIFB5dGhvbiB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1
bi4KLUVYVFJBX0RJU1QgKz0gXAotICB0ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRl
c3QucHkgXAotICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdC5weSBcCi0gIHRlc3Qv
Z3Rlc3RfY29sb3JfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5IFwKLSAg
dGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdC5w
eSBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rf
b3V0cHV0X3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0
IFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkgXAotICB0ZXN0L2d0ZXN0X3Rlc3RfdXRp
bHMucHkgXAotICB0ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBcCi0gIHRlc3Qv
Z3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSBcCi0gIHRlc3Qv
Z3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKLQotIyBDTWFrZSBzY3JpcHQKLUVYVFJBX0RJU1QgKz0g
XAotICBDTWFrZUxpc3RzLnR4dCBcCi0gIGNtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCi0KLSMg
TVNWQyBwcm9qZWN0IGZpbGVzCi1FWFRSQV9ESVNUICs9IFwKLSAgbXN2Yy9ndGVzdC1tZC5zbG4g
XAotICBtc3ZjL2d0ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3Quc2xuIFwKLSAgbXN2Yy9n
dGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVz
dF9tYWluLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvaiBcCi0gIG1z
dmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNw
cm9qIFwKLSAgbXN2Yy9ndGVzdF91bml0dGVzdC52Y3Byb2oKLQotIyB4Y29kZSBwcm9qZWN0IGZp
bGVzCi1FWFRSQV9ESVNUICs9IFwKLSAgeGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZp
ZyBcCi0gIHhjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcgXAotICB4Y29kZS9D
b25maWcvR2VuZXJhbC54Y2NvbmZpZyBcCi0gIHhjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54
Y2NvbmZpZyBcCi0gIHhjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIFwK
LSAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcgXAotICB4Y29kZS9SZXNvdXJjZXMv
SW5mby5wbGlzdCBcCi0gIHhjb2RlL1NjcmlwdHMvcnVudGVzdHMuc2ggXAotICB4Y29kZS9TY3Jp
cHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCi0gIHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKLQotIyB4Y29kZSBzYW1wbGUgZmlsZXMKLUVYVFJBX0RJU1QgKz0gXAotICB4Y29k
ZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBsaXN0IFwKLSAgeGNvZGUvU2FtcGxlcy9G
cmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
XAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2Rl
L1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5jYyBcCi0gIHhjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL3dpZGdldC5oIFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUv
d2lkZ2V0X3Rlc3QuY2MKLQotIyBDKytCdWlsZGVyIHByb2plY3QgZmlsZXMKLUVYVFJBX0RJU1Qg
Kz0gXAotICBjb2RlZ2Vhci9ndGVzdC5jYnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdC5ncm91cHBy
b2ogXAotICBjb2RlZ2Vhci9ndGVzdF9hbGwuY2MgXAotICBjb2RlZ2Vhci9ndGVzdF9saW5rLmNj
IFwKLSAgY29kZWdlYXIvZ3Rlc3RfbWFpbi5jYnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdF91bml0
dGVzdC5jYnByb2oKLQotIyBEaXN0cmlidXRlIGFuZCBpbnN0YWxsIE00IG1hY3JvCi1tNGRhdGFk
aXIgPSAkKGRhdGFkaXIpL2FjbG9jYWwKLW00ZGF0YV9EQVRBID0gbTQvZ3Rlc3QubTQKLUVYVFJB
X0RJU1QgKz0gJChtNGRhdGFfREFUQSkKLQotIyBXZSBkZWZpbmUgdGhlIGdsb2JhbCBBTV9DUFBG
TEFHUyBhcyBldmVyeXRoaW5nIHdlIGNvbXBpbGUgaW5jbHVkZXMgZnJvbSB0aGVzZQotIyBkaXJl
Y3Rvcmllcy4KLUFNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvaW5jbHVkZQot
Ci0jIE1vZGlmaWVzIGNvbXBpbGVyIGFuZCBsaW5rZXIgZmxhZ3MgZm9yIHB0aHJlYWRzIGNvbXBh
dGliaWxpdHkuCi1pZiBIQVZFX1BUSFJFQURTCi0gIEFNX0NYWEZMQUdTID0gQFBUSFJFQURfQ0ZM
QUdTQCAtREdURVNUX0hBU19QVEhSRUFEPTEKLSAgQU1fTElCUyA9IEBQVEhSRUFEX0xJQlNACi1l
bHNlCi0gIEFNX0NYWEZMQUdTID0gLURHVEVTVF9IQVNfUFRIUkVBRD0wCi1lbmRpZgotCi0jIEJ1
aWxkIHJ1bGVzIGZvciBsaWJyYXJpZXMuCi1saWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3Qu
bGEgbGliL2xpYmd0ZXN0X21haW4ubGEKLQotbGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMv
Z3Rlc3QtYWxsLmNjCi0KLXBrZ2luY2x1ZGVfSEVBREVSUyA9IFwKLSAgaW5jbHVkZS9ndGVzdC9n
dGVzdC1kZWF0aC10ZXN0LmggXAotICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0g
IGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oIFwKLSAgaW5jbHVkZS9ndGVzdC9ndGVz
dC1wcmludGVycy5oIFwKLSAgaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaCBcCi0gIGluY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAotICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRl
c3QuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3Rf
cHJlZF9pbXBsLmggXAotICBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaAotCi1wa2dpbmNsdWRl
X2ludGVybmFsZGlyID0gJChwa2dpbmNsdWRlZGlyKS9pbnRlcm5hbAotcGtnaW5jbHVkZV9pbnRl
cm5hbF9IRUFERVJTID0gXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGgu
aCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCBcCi0gIGluY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIFwKLSAgaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIFwKLSAgaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmgg
XAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIFwKLSAgaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC10eXBlLXV0aWwuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0
LmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggXAotICBp
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wcmludGVycy5oCi0KLWxpYl9saWJn
dGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3RfbWFpbi5jYwotbGliX2xpYmd0ZXN0X21h
aW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0LmxhCi0KLSMgQnVsaWQgcnVsZXMgZm9yIHNhbXBs
ZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29tZSBvZgotIyB0aGVzZSB2YXJp
YWJsZXMgaXNuJ3QgdGVycmlibHkgb2J2aW91cywgc28gdGhpcyBpcyBhIGJyaWVmCi0jIHJlZmVy
ZW5jZToKLSMKLSMgVEVTVFMgLS0gUHJvZ3JhbXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2Ug
Y2hlY2siCi0jIGNoZWNrX1BST0dSQU1TIC0tIFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNr
IiBidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bgotCi1ub2luc3RfTFRMSUJSQVJJRVMgPSBzYW1wbGVz
L2xpYnNhbXBsZXMubGEKLQotc2FtcGxlc19saWJzYW1wbGVzX2xhX1NPVVJDRVMgPSBcCi0gIHNh
bXBsZXMvc2FtcGxlMS5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlMS5oIFwKLSAgc2FtcGxlcy9zYW1w
bGUyLmNjIFwKLSAgc2FtcGxlcy9zYW1wbGUyLmggXAotICBzYW1wbGVzL3NhbXBsZTMtaW5sLmgg
XAotICBzYW1wbGVzL3NhbXBsZTQuY2MgXAotICBzYW1wbGVzL3NhbXBsZTQuaAotCi1URVNUUz0K
LVRFU1RTX0VOVklST05NRU5UID0gR1RFU1RfU09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwK
LSAgICAgICAgICAgICAgICAgICAgR1RFU1RfQlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVz
dCIKLWNoZWNrX1BST0dSQU1TPQotCi0jIEEgc2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4K
LVRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2Ft
cGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1zYW1wbGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9
IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwotc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X0xE
QUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGliL2xpYmd0ZXN0LmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXMvbGlic2FtcGxlcy5sYQotCi0jIEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJp
ZmllcyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgotVEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0
dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAotc2FtcGxl
c19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VTID0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5j
Ywotc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9MREFERCA9IGxpYi9saWJndGVzdC5sYQotCi0j
IFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3RzIG9mIGd0ZXN0IGFuZCB2ZXJpZmllcyB0aGF0IGxp
Ymd0ZXN0X21haW4KLSMgYW5kIGxpYmd0ZXN0IHdvcmsuCi1URVNUUyArPSB0ZXN0L2d0ZXN0X2Fs
bF90ZXN0Ci1jaGVja19QUk9HUkFNUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0Ci10ZXN0X2d0ZXN0
X2FsbF90ZXN0X1NPVVJDRVMgPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2Fs
bF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpYi9saWJndGVzdC5sYQotCi0jIFRlc3RzIHRoYXQgZnVzZWQgZ3Rlc3QgZmls
ZXMgY29tcGlsZSBhbmQgd29yay4KLUZVU0VEX0dURVNUX1NSQyA9IFwKLSAgZnVzZWQtc3JjL2d0
ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2VkLXNyYy9ndGVzdC9ndGVzdC5oIFwKLSAgZnVzZWQt
c3JjL2d0ZXN0L2d0ZXN0X21haW4uY2MKLQotaWYgSEFWRV9QWVRIT04KLVRFU1RTICs9IHRlc3Qv
ZnVzZWRfZ3Rlc3RfdGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0
Ci10ZXN0X2Z1c2VkX2d0ZXN0X3Rlc3RfU09VUkNFUyA9ICQoRlVTRURfR1RFU1RfU1JDKSBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvc2FtcGxlMS5jYyBzYW1wbGVz
L3NhbXBsZTFfdW5pdHRlc3QuY2MKLXRlc3RfZnVzZWRfZ3Rlc3RfdGVzdF9DUFBGTEFHUyA9IC1J
IiQoc3JjZGlyKS9mdXNlZC1zcmMiCi0KLSMgQnVpbGQgcnVsZXMgZm9yIHB1dHRpbmcgZnVzZWQg
R29vZ2xlIFRlc3QgZmlsZXMgaW50byB0aGUgZGlzdHJpYnV0aW9uCi0jIHBhY2thZ2UuIFRoZSB1
c2VyIGNhbiBhbHNvIGNyZWF0ZSB0aG9zZSBmaWxlcyBieSBtYW51YWxseSBydW5uaW5nCi0jIHNj
cmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weS4KLSQodGVzdF9mdXNlZF9ndGVzdF90ZXN0X1NPVVJD
RVMpOiBmdXNlZC1ndGVzdAotCi1mdXNlZC1ndGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQo
cGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTKSBcCi0gICAgICAgICAgICAgJChHVEVTVF9TUkMp
IHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MgXAotICAgICAgICAgICAgIHNjcmlw
dHMvZnVzZV9ndGVzdF9maWxlcy5weQotCW1rZGlyIC1wICIkKHNyY2RpcikvZnVzZWQtc3JjIgot
CWNobW9kIC1SIHUrdyAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQlybSAtZiAiJChzcmNkaXIpL2Z1
c2VkLXNyYy9ndGVzdC9ndGVzdC1hbGwuY2MiCi0Jcm0gLWYgIiQoc3JjZGlyKS9mdXNlZC1zcmMv
Z3Rlc3QvZ3Rlc3QuaCIKLQkiJChzcmNkaXIpL3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSIg
IiQoc3JjZGlyKS9mdXNlZC1zcmMiCi0JY3AgLWYgIiQoc3JjZGlyKS9zcmMvZ3Rlc3RfbWFpbi5j
YyIgIiQoc3JjZGlyKS9mdXNlZC1zcmMvZ3Rlc3QvIgotCi1tYWludGFpbmVyLWNsZWFuLWxvY2Fs
OgotCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLWVuZGlmCi0KLSMgRGVhdGggdGVzdHMg
bWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJbiBjYXNlCi0j
IHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0byBrZWVwIGRpc3RjbGVhbmNoZWNrIGhhcHB5Lgot
Q0xFQU5GSUxFUyA9IGNvcmUKLQotIyBEaXNhYmxlcyAnbWFrZSBpbnN0YWxsJyBhcyBpbnN0YWxs
aW5nIGEgY29tcGlsZWQgdmVyc2lvbiBvZiBHb29nbGUKLSMgVGVzdCBjYW4gbGVhZCB0byB1bmRl
ZmluZWQgYmVoYXZpb3IgZHVlIHRvIHZpb2xhdGlvbiBvZiB0aGUKLSMgT25lLURlZmluaXRpb24g
UnVsZS4KLQotaW5zdGFsbC1leGVjLWxvY2FsOgotCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRh
bmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRv
IGludGVncmF0ZSBHb29nbGUgVGVzdCBpbnRvIHlvdXIgYnVpbGQgc3lzdGVtLiIKLQlmYWxzZQot
Ci1pbnN0YWxsLWRhdGEtbG9jYWw6Ci0JZWNobyAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3Vz
IGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdy
YXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBidWlsZCBzeXN0ZW0uIgotCWZhbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9SRUFETUUubWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMzQ3NGMwMmI0NmFjZGVhMDRhYTVmOWM0NGQ3ODc5
N2E2ODU5MmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvUkVBRE1FLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMzgzICswLDAgQEAKLQot
IyMjIEdlbmVyaWMgQnVpbGQgSW5zdHJ1Y3Rpb25zICMjIwotCi0jIyMjIFNldHVwICMjIyMKLQot
VG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMgdGhhdCB1c2UgaXQsIHlvdSBuZWVk
IHRvIHRlbGwgeW91cgotYnVpbGQgc3lzdGVtIHdoZXJlIHRvIGZpbmQgaXRzIGhlYWRlcnMgYW5k
IHNvdXJjZSBmaWxlcy4gIFRoZSBleGFjdAotd2F5IHRvIGRvIGl0IGRlcGVuZHMgb24gd2hpY2gg
YnVpbGQgc3lzdGVtIHlvdSB1c2UsIGFuZCBpcyB1c3VhbGx5Ci1zdHJhaWdodGZvcndhcmQuCi0K
LSMjIyMgQnVpbGQgIyMjIwotCi1TdXBwb3NlIHlvdSBwdXQgR29vZ2xlIFRlc3QgaW4gZGlyZWN0
b3J5IGAke0dURVNUX0RJUn1gLiAgVG8gYnVpbGQgaXQsCi1jcmVhdGUgYSBsaWJyYXJ5IGJ1aWxk
IHRhcmdldCAob3IgYSBwcm9qZWN0IGFzIGNhbGxlZCBieSBWaXN1YWwgU3R1ZGlvCi1hbmQgWGNv
ZGUpIHRvIGNvbXBpbGUKLQotICAgICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0KLXdp
dGggYCR7R1RFU1RfRElSfS9pbmNsdWRlYCBpbiB0aGUgc3lzdGVtIGhlYWRlciBzZWFyY2ggcGF0
aCBhbmQgYCR7R1RFU1RfRElSfWAKLWluIHRoZSBub3JtYWwgaGVhZGVyIHNlYXJjaCBwYXRoLiAg
QXNzdW1pbmcgYSBMaW51eC1saWtlIHN5c3RlbSBhbmQgZ2NjLAotc29tZXRoaW5nIGxpa2UgdGhl
IGZvbGxvd2luZyB3aWxsIGRvOgotCi0gICAgZysrIC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNs
dWRlIC1JJHtHVEVTVF9ESVJ9IFwKLSAgICAgICAgLXB0aHJlYWQgLWMgJHtHVEVTVF9ESVJ9L3Ny
Yy9ndGVzdC1hbGwuY2MKLSAgICBhciAtcnYgbGliZ3Rlc3QuYSBndGVzdC1hbGwubwotCi0oV2Ug
bmVlZCBgLXB0aHJlYWRgIGFzIEdvb2dsZSBUZXN0IHVzZXMgdGhyZWFkcy4pCi0KLU5leHQsIHlv
dSBzaG91bGQgY29tcGlsZSB5b3VyIHRlc3Qgc291cmNlIGZpbGUgd2l0aAotYCR7R1RFU1RfRElS
fS9pbmNsdWRlYCBpbiB0aGUgc3lzdGVtIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIGxpbmsgaXQK
LXdpdGggZ3Rlc3QgYW5kIGFueSBvdGhlciBuZWNlc3NhcnkgbGlicmFyaWVzOgotCi0gICAgZysr
IC1pc3lzdGVtICR7R1RFU1RfRElSfS9pbmNsdWRlIC1wdGhyZWFkIHBhdGgvdG8veW91cl90ZXN0
LmNjIGxpYmd0ZXN0LmEgXAotICAgICAgICAtbyB5b3VyX3Rlc3QKLQotQXMgYW4gZXhhbXBsZSwg
dGhlIG1ha2UvIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgeW91IGNhbgotdXNl
IHRvIGJ1aWxkIEdvb2dsZSBUZXN0IG9uIHN5c3RlbXMgd2hlcmUgR05VIG1ha2UgaXMgYXZhaWxh
YmxlCi0oZS5nLiBMaW51eCwgTWFjIE9TIFgsIGFuZCBDeWd3aW4pLiAgSXQgZG9lc24ndCB0cnkg
dG8gYnVpbGQgR29vZ2xlCi1UZXN0J3Mgb3duIHRlc3RzLiAgSW5zdGVhZCwgaXQganVzdCBidWls
ZHMgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgYW5kCi1hIHNhbXBsZSB0ZXN0LiAgWW91IGNhbiB1
c2UgaXQgYXMgYSBzdGFydGluZyBwb2ludCBmb3IgeW91ciBvd24gYnVpbGQKLXNjcmlwdC4KLQot
SWYgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGNvcnJlY3QgZm9yIHlvdXIgZW52aXJvbm1lbnQs
IHRoZQotZm9sbG93aW5nIGNvbW1hbmRzIHNob3VsZCBzdWNjZWVkOgotCi0gICAgY2QgJHtHVEVT
VF9ESVJ9L21ha2UKLSAgICBtYWtlCi0gICAgLi9zYW1wbGUxX3VuaXR0ZXN0Ci0KLUlmIHlvdSBz
ZWUgZXJyb3JzLCB0cnkgdG8gdHdlYWsgdGhlIGNvbnRlbnRzIG9mIGBtYWtlL01ha2VmaWxlYCB0
byBtYWtlCi10aGVtIGdvIGF3YXkuICBUaGVyZSBhcmUgaW5zdHJ1Y3Rpb25zIGluIGBtYWtlL01h
a2VmaWxlYCBvbiBob3cgdG8gZG8KLWl0LgotCi0jIyMgVXNpbmcgQ01ha2UgIyMjCi0KLUdvb2ds
ZSBUZXN0IGNvbWVzIHdpdGggYSBDTWFrZSBidWlsZCBzY3JpcHQgKAotW0NNYWtlTGlzdHMudHh0
XShDTWFrZUxpc3RzLnR4dCkpIHRoYXQgY2FuIGJlIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIHBs
YXRmb3JtcyAoIkMiIHN0YW5kcyBmb3IKLWNyb3NzLXBsYXRmb3JtLikuIElmIHlvdSBkb24ndCBo
YXZlIENNYWtlIGluc3RhbGxlZCBhbHJlYWR5LCB5b3UgY2FuCi1kb3dubG9hZCBpdCBmb3IgZnJl
ZSBmcm9tIDxodHRwOi8vd3d3LmNtYWtlLm9yZy8+LgotCi1DTWFrZSB3b3JrcyBieSBnZW5lcmF0
aW5nIG5hdGl2ZSBtYWtlZmlsZXMgb3IgYnVpbGQgcHJvamVjdHMgdGhhdCBjYW4KLWJlIHVzZWQg
aW4gdGhlIGNvbXBpbGVyIGVudmlyb25tZW50IG9mIHlvdXIgY2hvaWNlLiAgWW91IGNhbiBlaXRo
ZXIKLWJ1aWxkIEdvb2dsZSBUZXN0IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0IG9yIGl0IGNhbiBi
ZSBpbmNvcnBvcmF0ZWQKLWludG8gYW4gZXhpc3RpbmcgQ01ha2UgYnVpbGQgZm9yIGFub3RoZXIg
cHJvamVjdC4KLQotIyMjIyBTdGFuZGFsb25lIENNYWtlIFByb2plY3QgIyMjIwotCi1XaGVuIGJ1
aWxkaW5nIEdvb2dsZSBUZXN0IGFzIGEgc3RhbmRhbG9uZSBwcm9qZWN0LCB0aGUgdHlwaWNhbAot
d29ya2Zsb3cgc3RhcnRzIHdpdGg6Ci0KLSAgICBta2RpciBteWJ1aWxkICAgICAgICMgQ3JlYXRl
IGEgZGlyZWN0b3J5IHRvIGhvbGQgdGhlIGJ1aWxkIG91dHB1dC4KLSAgICBjZCBteWJ1aWxkCi0g
ICAgY21ha2UgJHtHVEVTVF9ESVJ9ICAjIEdlbmVyYXRlIG5hdGl2ZSBidWlsZCBzY3JpcHRzLgot
Ci1JZiB5b3Ugd2FudCB0byBidWlsZCBHb29nbGUgVGVzdCdzIHNhbXBsZXMsIHlvdSBzaG91bGQg
cmVwbGFjZSB0aGUKLWxhc3QgY29tbWFuZCB3aXRoCi0KLSAgICBjbWFrZSAtRGd0ZXN0X2J1aWxk
X3NhbXBsZXM9T04gJHtHVEVTVF9ESVJ9Ci0KLUlmIHlvdSBhcmUgb24gYSBcKm5peCBzeXN0ZW0s
IHlvdSBzaG91bGQgbm93IHNlZSBhIE1ha2VmaWxlIGluIHRoZQotY3VycmVudCBkaXJlY3Rvcnku
ICBKdXN0IHR5cGUgJ21ha2UnIHRvIGJ1aWxkIGd0ZXN0LgotCi1JZiB5b3UgdXNlIFdpbmRvd3Mg
YW5kIGhhdmUgVmlzdWFsIFN0dWRpbyBpbnN0YWxsZWQsIGEgYGd0ZXN0LnNsbmAgZmlsZQotYW5k
IHNldmVyYWwgYC52Y3Byb2pgIGZpbGVzIHdpbGwgYmUgY3JlYXRlZC4gIFlvdSBjYW4gdGhlbiBi
dWlsZCB0aGVtCi11c2luZyBWaXN1YWwgU3R1ZGlvLgotCi1PbiBNYWMgT1MgWCB3aXRoIFhjb2Rl
IGluc3RhbGxlZCwgYSBgLnhjb2RlcHJvamAgZmlsZSB3aWxsIGJlIGdlbmVyYXRlZC4KLQotIyMj
IyBJbmNvcnBvcmF0aW5nIEludG8gQW4gRXhpc3RpbmcgQ01ha2UgUHJvamVjdCAjIyMjCi0KLUlm
IHlvdSB3YW50IHRvIHVzZSBndGVzdCBpbiBhIHByb2plY3Qgd2hpY2ggYWxyZWFkeSB1c2VzIENN
YWtlLCB0aGVuIGEKLW1vcmUgcm9idXN0IGFuZCBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBidWls
ZCBndGVzdCBhcyBwYXJ0IG9mIHRoYXQKLXByb2plY3QgZGlyZWN0bHkuIFRoaXMgaXMgZG9uZSBi
eSBtYWtpbmcgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUKLWF2YWlsYWJsZSB0byB0aGUgbWFp
biBidWlsZCBhbmQgYWRkaW5nIGl0IHVzaW5nIENNYWtlJ3MKLWBhZGRfc3ViZGlyZWN0b3J5KClg
IGNvbW1hbmQuIFRoaXMgaGFzIHRoZSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgdGhhdAotdGhlIHNh
bWUgY29tcGlsZXIgYW5kIGxpbmtlciBzZXR0aW5ncyBhcmUgdXNlZCBiZXR3ZWVuIGd0ZXN0IGFu
ZCB0aGUKLXJlc3Qgb2YgeW91ciBwcm9qZWN0LCBzbyBpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHVz
aW5nIGluY29tcGF0aWJsZQotbGlicmFyaWVzIChlZyBkZWJ1Zy9yZWxlYXNlKSwgZXRjLiBhcmUg
YXZvaWRlZC4gVGhpcyBpcyBwYXJ0aWN1bGFybHkKLXVzZWZ1bCBvbiBXaW5kb3dzLiBNYWtpbmcg
R29vZ2xlVGVzdCdzIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSB0byB0aGUKLW1haW4gYnVpbGQgY2Fu
IGJlIGRvbmUgYSBmZXcgZGlmZmVyZW50IHdheXM6Ci0KLSogRG93bmxvYWQgdGhlIEdvb2dsZVRl
c3Qgc291cmNlIGNvZGUgbWFudWFsbHkgYW5kIHBsYWNlIGl0IGF0IGEKLSAga25vd24gbG9jYXRp
b24uIFRoaXMgaXMgdGhlIGxlYXN0IGZsZXhpYmxlIGFwcHJvYWNoIGFuZCBjYW4gbWFrZQotICBp
dCBtb3JlIGRpZmZpY3VsdCB0byB1c2Ugd2l0aCBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3Rl
bXMsIGV0Yy4KLSogRW1iZWQgdGhlIEdvb2dsZVRlc3Qgc291cmNlIGNvZGUgYXMgYSBkaXJlY3Qg
Y29weSBpbiB0aGUgbWFpbgotICBwcm9qZWN0J3Mgc291cmNlIHRyZWUuIFRoaXMgaXMgb2Z0ZW4g
dGhlIHNpbXBsZXN0IGFwcHJvYWNoLCBidXQgaXMKLSAgYWxzbyB0aGUgaGFyZGVzdCB0byBrZWVw
IHVwIHRvIGRhdGUuIFNvbWUgb3JnYW5pemF0aW9ucyBtYXkgbm90Ci0gIHBlcm1pdCB0aGlzIG1l
dGhvZC4KLSogQWRkIEdvb2dsZVRlc3QgYXMgYSBnaXQgc3VibW9kdWxlIG9yIGVxdWl2YWxlbnQu
IFRoaXMgbWF5IG5vdAotICBhbHdheXMgYmUgcG9zc2libGUgb3IgYXBwcm9wcmlhdGUuIEdpdCBz
dWJtb2R1bGVzLCBmb3IgZXhhbXBsZSwKLSAgaGF2ZSB0aGVpciBvd24gc2V0IG9mIGFkdmFudGFn
ZXMgYW5kIGRyYXdiYWNrcy4KLSogVXNlIENNYWtlIHRvIGRvd25sb2FkIEdvb2dsZVRlc3QgYXMg
cGFydCBvZiB0aGUgYnVpbGQncyBjb25maWd1cmUKLSAgc3RlcC4gVGhpcyBpcyBqdXN0IGEgbGl0
dGxlIG1vcmUgY29tcGxleCwgYnV0IGRvZXNuJ3QgaGF2ZSB0aGUKLSAgbGltaXRhdGlvbnMgb2Yg
dGhlIG90aGVyIG1ldGhvZHMuCi0KLVRoZSBsYXN0IG9mIHRoZSBhYm92ZSBtZXRob2RzIGlzIGlt
cGxlbWVudGVkIHdpdGggYSBzbWFsbCBwaWVjZQotb2YgQ01ha2UgY29kZSBpbiBhIHNlcGFyYXRl
IGZpbGUgKGUuZy4gYENNYWtlTGlzdHMudHh0LmluYCkgd2hpY2gKLWlzIGNvcGllZCB0byB0aGUg
YnVpbGQgYXJlYSBhbmQgdGhlbiBpbnZva2VkIGFzIGEgc3ViLWJ1aWxkCi1fZHVyaW5nIHRoZSBD
TWFrZSBzdGFnZV8uIFRoYXQgZGlyZWN0b3J5IGlzIHRoZW4gcHVsbGVkIGludG8gdGhlCi1tYWlu
IGJ1aWxkIHdpdGggYGFkZF9zdWJkaXJlY3RvcnkoKWAuIEZvciBleGFtcGxlOgotCi1OZXcgZmls
ZSBgQ01ha2VMaXN0cy50eHQuaW5gOgotCi0gICAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJT
SU9OIDIuOC4yKQotIAotICAgIHByb2plY3QoZ29vZ2xldGVzdC1kb3dubG9hZCBOT05FKQotIAot
ICAgIGluY2x1ZGUoRXh0ZXJuYWxQcm9qZWN0KQotICAgIEV4dGVybmFsUHJvamVjdF9BZGQoZ29v
Z2xldGVzdAotICAgICAgR0lUX1JFUE9TSVRPUlkgICAgaHR0cHM6Ly9naXRodWIuY29tL2dvb2ds
ZS9nb29nbGV0ZXN0LmdpdAotICAgICAgR0lUX1RBRyAgICAgICAgICAgbWFzdGVyCi0gICAgICBT
T1VSQ0VfRElSICAgICAgICAiJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYyIKLSAg
ICAgIEJJTkFSWV9ESVIgICAgICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVp
bGQiCi0gICAgICBDT05GSUdVUkVfQ09NTUFORCAiIgotICAgICAgQlVJTERfQ09NTUFORCAgICAg
IiIKLSAgICAgIElOU1RBTExfQ09NTUFORCAgICIiCi0gICAgICBURVNUX0NPTU1BTkQgICAgICAi
IgotICAgICkKLSAgICAKLUV4aXN0aW5nIGJ1aWxkJ3MgYENNYWtlTGlzdHMudHh0YDoKLQotICAg
ICMgRG93bmxvYWQgYW5kIHVucGFjayBnb29nbGV0ZXN0IGF0IGNvbmZpZ3VyZSB0aW1lCi0gICAg
Y29uZmlndXJlX2ZpbGUoQ01ha2VMaXN0cy50eHQuaW4gZ29vZ2xldGVzdC1kb3dubG9hZC9DTWFr
ZUxpc3RzLnR4dCkKLSAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9
IC1HICIke0NNQUtFX0dFTkVSQVRPUn0iIC4KLSAgICAgIFJFU1VMVF9WQVJJQUJMRSByZXN1bHQK
LSAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vZ29vZ2xldGVzdC1k
b3dubG9hZCApCi0gICAgaWYocmVzdWx0KQotICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiQ01h
a2Ugc3RlcCBmb3IgZ29vZ2xldGVzdCBmYWlsZWQ6ICR7cmVzdWx0fSIpCi0gICAgZW5kaWYoKQot
ICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuCi0g
ICAgICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0Ci0gICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NN
QUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQotICAgIGlmKHJlc3VsdCkKLSAg
ICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkJ1aWxkIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFpbGVk
OiAke3Jlc3VsdH0iKQotICAgIGVuZGlmKCkKLQotICAgICMgUHJldmVudCBvdmVycmlkaW5nIHRo
ZSBwYXJlbnQgcHJvamVjdCdzIGNvbXBpbGVyL2xpbmtlcgotICAgICMgc2V0dGluZ3Mgb24gV2lu
ZG93cwotICAgIHNldChndGVzdF9mb3JjZV9zaGFyZWRfY3J0IE9OIENBQ0hFIEJPT0wgIiIgRk9S
Q0UpCi0gICAgCi0gICAgIyBBZGQgZ29vZ2xldGVzdCBkaXJlY3RseSB0byBvdXIgYnVpbGQuIFRo
aXMgZGVmaW5lcwotICAgICMgdGhlIGd0ZXN0IGFuZCBndGVzdF9tYWluIHRhcmdldHMuCi0gICAg
YWRkX3N1YmRpcmVjdG9yeSgke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3Qtc3JjCi0gICAg
ICAgICAgICAgICAgICAgICAke0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtYnVpbGQpCi0K
LSAgICAjIFRoZSBndGVzdC9ndGVzdF9tYWluIHRhcmdldHMgY2FycnkgaGVhZGVyIHNlYXJjaCBw
YXRoCi0gICAgIyBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseSB3aGVuIHVzaW5nIENNYWtlIDIu
OC4xMSBvcgotICAgICMgbGF0ZXIuIE90aGVyd2lzZSB3ZSBoYXZlIHRvIGFkZCB0aGVtIGhlcmUg
b3Vyc2VsdmVzLgotICAgIGlmIChDTUFLRV9WRVJTSU9OIFZFUlNJT05fTEVTUyAyLjguMTEpCi0g
ICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCIke2d0ZXN0X1NPVVJDRV9ESVJ9L2luY2x1ZGUiKQot
ICAgIGVuZGlmKCkKLQotICAgICMgTm93IHNpbXBseSBsaW5rIGFnYWluc3QgZ3Rlc3Qgb3IgZ3Rl
c3RfbWFpbiBhcyBuZWVkZWQuIEVnCi0gICAgYWRkX2V4ZWN1dGFibGUoZXhhbXBsZSBleGFtcGxl
LmNwcCkKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoZXhhbXBsZSBndGVzdF9tYWluKQotICAg
IGFkZF90ZXN0KE5BTUUgZXhhbXBsZV90ZXN0IENPTU1BTkQgZXhhbXBsZSkKLQotTm90ZSB0aGF0
IHRoaXMgYXBwcm9hY2ggcmVxdWlyZXMgQ01ha2UgMi44LjIgb3IgbGF0ZXIgZHVlIHRvCi1pdHMg
dXNlIG9mIHRoZSBgRXh0ZXJuYWxQcm9qZWN0X0FkZCgpYCBjb21tYW5kLiBUaGUgYWJvdmUKLXRl
Y2huaXF1ZSBpcyBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwgaW4gCi1bdGhpcyBzZXBhcmF0ZSBh
cnRpY2xlXShodHRwOi8vY3Jhc2NpdC5jb20vMjAxNS8wNy8yNS9jbWFrZS1ndGVzdC8pCi13aGlj
aCBhbHNvIGNvbnRhaW5zIGEgbGluayB0byBhIGZ1bGx5IGdlbmVyYWxpemVkIGltcGxlbWVudGF0
aW9uCi1vZiB0aGUgdGVjaG5pcXVlLgotCi0KLSMjIyBMZWdhY3kgQnVpbGQgU2NyaXB0cyAjIyMK
LQotQmVmb3JlIHNldHRsaW5nIG9uIENNYWtlLCB3ZSBoYXZlIGJlZW4gcHJvdmlkaW5nIGhhbmQt
bWFpbnRhaW5lZCBidWlsZAotcHJvamVjdHMvc2NyaXB0cyBmb3IgVmlzdWFsIFN0dWRpbywgWGNv
ZGUsIGFuZCBBdXRvdG9vbHMuICBXaGlsZSB3ZQotY29udGludWUgdG8gcHJvdmlkZSB0aGVtIGZv
ciBjb252ZW5pZW5jZSwgdGhleSBhcmUgbm90IGFjdGl2ZWx5Ci1tYWludGFpbmVkIGFueSBtb3Jl
LiAgV2UgaGlnaGx5IHJlY29tbWVuZCB0aGF0IHlvdSBmb2xsb3cgdGhlCi1pbnN0cnVjdGlvbnMg
aW4gdGhlIGFib3ZlIHNlY3Rpb25zIHRvIGludGVncmF0ZSBHb29nbGUgVGVzdAotd2l0aCB5b3Vy
IGV4aXN0aW5nIGJ1aWxkIHN5c3RlbS4KLQotSWYgeW91IHN0aWxsIG5lZWQgdG8gdXNlIHRoZSBs
ZWdhY3kgYnVpbGQgc2NyaXB0cywgaGVyZSdzIGhvdzoKLQotVGhlIG1zdmNcIGZvbGRlciBjb250
YWlucyB0d28gc29sdXRpb25zIHdpdGggVmlzdWFsIEMrKyBwcm9qZWN0cy4KLU9wZW4gdGhlIGBn
dGVzdC5zbG5gIG9yIGBndGVzdC1tZC5zbG5gIGZpbGUgdXNpbmcgVmlzdWFsIFN0dWRpbywgYW5k
IHlvdQotYXJlIHJlYWR5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0IHRoZSBzYW1lIHdheSB5b3UgYnVp
bGQgYW55IFZpc3VhbAotU3R1ZGlvIHByb2plY3QuICBGaWxlcyB0aGF0IGhhdmUgbmFtZXMgZW5k
aW5nIHdpdGggLW1kIHVzZSBETEwKLXZlcnNpb25zIG9mIE1pY3Jvc29mdCBydW50aW1lIGxpYnJh
cmllcyAodGhlIC9NRCBvciB0aGUgL01EZCBjb21waWxlcgotb3B0aW9uKS4gIEZpbGVzIHdpdGhv
dXQgdGhhdCBzdWZmaXggdXNlIHN0YXRpYyB2ZXJzaW9ucyBvZiB0aGUgcnVudGltZQotbGlicmFy
aWVzICh0aGUgL01UIG9yIHRoZSAvTVRkIG9wdGlvbikuICBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBt
dXN0IHVzZQotdGhlIHNhbWUgb3B0aW9uIHRvIGNvbXBpbGUgYm90aCBndGVzdCBhbmQgdGhlIHRl
c3QgY29kZS4gIElmIHlvdSB1c2UKLVZpc3VhbCBTdHVkaW8gMjAwNSBvciBhYm92ZSwgd2UgcmVj
b21tZW5kIHRoZSAtbWQgdmVyc2lvbiBhcyAvTUQgaXMKLXRoZSBkZWZhdWx0IGZvciBuZXcgcHJv
amVjdHMgaW4gdGhlc2UgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpby4KLQotT24gTWFjIE9TIFgs
IG9wZW4gdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgeGNvZGUvYCBmb2xkZXIgdXNpbmcK
LVhjb2RlLiAgQnVpbGQgdGhlICJndGVzdCIgdGFyZ2V0LiAgVGhlIHVuaXZlcnNhbCBiaW5hcnkg
ZnJhbWV3b3JrIHdpbGwKLWVuZCB1cCBpbiB5b3VyIHNlbGVjdGVkIGJ1aWxkIGRpcmVjdG9yeSAo
c2VsZWN0ZWQgaW4gdGhlIFhjb2RlCi0iUHJlZmVyZW5jZXMuLi4iIC0+ICJCdWlsZGluZyIgcGFu
ZSBhbmQgZGVmYXVsdHMgdG8geGNvZGUvYnVpbGQpLgotQWx0ZXJuYXRpdmVseSwgYXQgdGhlIGNv
bW1hbmQgbGluZSwgZW50ZXI6Ci0KLSAgICB4Y29kZWJ1aWxkCi0KLVRoaXMgd2lsbCBidWlsZCB0
aGUgIlJlbGVhc2UiIGNvbmZpZ3VyYXRpb24gb2YgZ3Rlc3QuZnJhbWV3b3JrIGluIHlvdXIKLWRl
ZmF1bHQgYnVpbGQgbG9jYXRpb24uICBTZWUgdGhlICJ4Y29kZWJ1aWxkIiBtYW4gcGFnZSBmb3Ig
bW9yZQotaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRpbmcgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25z
IGFuZCBidWlsZGluZyBpbgotZGlmZmVyZW50IGxvY2F0aW9ucy4KLQotSWYgeW91IHdpc2ggdG8g
dXNlIHRoZSBHb29nbGUgVGVzdCBYY29kZSBwcm9qZWN0IHdpdGggWGNvZGUgNC54IGFuZAotYWJv
dmUsIHlvdSBuZWVkIHRvIGVpdGhlcjoKLQotICogdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlv
biBvcHRpb25zIGluIHhjb2RlL0NvbmZpZy9HZW5lcmFsLnhjb25maWcuCi0gICBDb21tZW50IG9w
dGlvbnMgYFNES1JPT1RgLCBgTUFDT1NfREVQTE9ZTUVOVF9UQVJHRVRgLCBhbmQgYEdDQ19WRVJT
SU9OYC4gSWYKLSAgIHlvdSBjaG9vc2UgdGhpcyByb3V0ZSB5b3UgbG9zZSB0aGUgYWJpbGl0eSB0
byB0YXJnZXQgZWFybGllciB2ZXJzaW9ucwotICAgb2YgTWFjT1MgWC4KLSAqIEluc3RhbGwgYW4g
U0RLIGZvciBhbiBlYXJsaWVyIHZlcnNpb24uIFRoaXMgZG9lc24ndCBhcHBlYXIgdG8gYmUKLSAg
IHN1cHBvcnRlZCBieSBBcHBsZSwgYnV0IGhhcyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKLSAgICho
dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUzNzg1MTgpLgotCi0jIyMgVHdlYWtp
bmcgR29vZ2xlIFRlc3QgIyMjCi0KLUdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIGRpdmVyc2Ug
ZW52aXJvbm1lbnRzLiAgVGhlIGRlZmF1bHQKLWNvbmZpZ3VyYXRpb24gbWF5IG5vdCB3b3JrIChv
ciBtYXkgbm90IHdvcmsgd2VsbCkgb3V0IG9mIHRoZSBib3ggaW4KLXNvbWUgZW52aXJvbm1lbnRz
LiAgSG93ZXZlciwgeW91IGNhbiBlYXNpbHkgdHdlYWsgR29vZ2xlIFRlc3QgYnkKLWRlZmluaW5n
IGNvbnRyb2wgbWFjcm9zIG9uIHRoZSBjb21waWxlciBjb21tYW5kIGxpbmUuICBHZW5lcmFsbHks
Ci10aGVzZSBtYWNyb3MgYXJlIG5hbWVkIGxpa2UgYEdURVNUX1hZWmAgYW5kIHlvdSBkZWZpbmUg
dGhlbSB0byBlaXRoZXIgMQotb3IgMCB0byBlbmFibGUgb3IgZGlzYWJsZSBhIGNlcnRhaW4gZmVh
dHVyZS4KLQotV2UgbGlzdCB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgbWFjcm9zIGJlbG93LiAg
Rm9yIGEgY29tcGxldGUgbGlzdCwKLXNlZSBmaWxlIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaF0oaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpLgotCi0jIyMg
Q2hvb3NpbmcgYSBUUjEgVHVwbGUgTGlicmFyeSAjIyMKLQotU29tZSBHb29nbGUgVGVzdCBmZWF0
dXJlcyByZXF1aXJlIHRoZSBDKysgVGVjaG5pY2FsIFJlcG9ydCAxIChUUjEpCi10dXBsZSBsaWJy
YXJ5LCB3aGljaCBpcyBub3QgeWV0IGF2YWlsYWJsZSB3aXRoIGFsbCBjb21waWxlcnMuICBUaGUK
LWdvb2QgbmV3cyBpcyB0aGF0IEdvb2dsZSBUZXN0IGltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIx
IHR1cGxlIHRoYXQncwotZW5vdWdoIGZvciBpdHMgb3duIG5lZWQsIGFuZCB3aWxsIGF1dG9tYXRp
Y2FsbHkgdXNlIHRoaXMgd2hlbiB0aGUKLWNvbXBpbGVyIGRvZXNuJ3QgcHJvdmlkZSBUUjEgdHVw
bGUuCi0KLVVzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBs
aWJyYXJ5IEdvb2dsZSBUZXN0Ci11c2VzLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFscmVh
ZHkgdXNlcyBUUjEgdHVwbGUsIHlvdSBuZWVkIHRvCi10ZWxsIEdvb2dsZSBUZXN0IHRvIHVzZSB0
aGUgc2FtZSBUUjEgdHVwbGUgbGlicmFyeSB0aGUgcmVzdCBvZiB5b3VyCi1wcm9qZWN0IHVzZXMs
IG9yIHRoZSB0d28gdHVwbGUgaW1wbGVtZW50YXRpb25zIHdpbGwgY2xhc2guICBUbyBkbwotdGhh
dCwgYWRkCi0KLSAgICAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTAKLQotdG8gdGhlIGNvbXBp
bGVyIGZsYWdzIHdoaWxlIGNvbXBpbGluZyBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0cy4gIElm
Ci15b3Ugd2FudCB0byBmb3JjZSBHb29nbGUgVGVzdCB0byB1c2UgaXRzIG93biB0dXBsZSBsaWJy
YXJ5LCBqdXN0IGFkZAotCi0gICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRT0xCi0KLXRvIHRo
ZSBjb21waWxlciBmbGFncyBpbnN0ZWFkLgotCi1JZiB5b3UgZG9uJ3Qgd2FudCBHb29nbGUgVGVz
dCB0byB1c2UgdHVwbGUgYXQgYWxsLCBhZGQKLQotICAgIC1ER1RFU1RfSEFTX1RSMV9UVVBMRT0w
Ci0KLWFuZCBhbGwgZmVhdHVyZXMgdXNpbmcgdHVwbGUgd2lsbCBiZSBkaXNhYmxlZC4KLQotIyMj
IE11bHRpLXRocmVhZGVkIFRlc3RzICMjIwotCi1Hb29nbGUgVGVzdCBpcyB0aHJlYWQtc2FmZSB3
aGVyZSB0aGUgcHRocmVhZCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KLUFmdGVyIGAjaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCJgLCB5b3UgY2FuIGNoZWNrIHRoZSBgR1RFU1RfSVNfVEhSRUFEU0FGRWAK
LW1hY3JvIHRvIHNlZSB3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2UgKHllcyBpZiB0aGUgbWFjcm8g
aXMgYCNkZWZpbmVkYCB0bwotMSwgbm8gaWYgaXQncyB1bmRlZmluZWQuKS4KLQotSWYgR29vZ2xl
IFRlc3QgZG9lc24ndCBjb3JyZWN0bHkgZGV0ZWN0IHdoZXRoZXIgcHRocmVhZCBpcyBhdmFpbGFi
bGUKLWluIHlvdXIgZW52aXJvbm1lbnQsIHlvdSBjYW4gZm9yY2UgaXQgd2l0aAotCi0gICAgLURH
VEVTVF9IQVNfUFRIUkVBRD0xCi0KLW9yCi0KLSAgICAtREdURVNUX0hBU19QVEhSRUFEPTAKLQot
V2hlbiBHb29nbGUgVGVzdCB1c2VzIHB0aHJlYWQsIHlvdSBtYXkgbmVlZCB0byBhZGQgZmxhZ3Mg
dG8geW91cgotY29tcGlsZXIgYW5kL29yIGxpbmtlciB0byBzZWxlY3QgdGhlIHB0aHJlYWQgbGli
cmFyeSwgb3IgeW91J2xsIGdldAotbGluayBlcnJvcnMuICBJZiB5b3UgdXNlIHRoZSBDTWFrZSBz
Y3JpcHQgb3IgdGhlIGRlcHJlY2F0ZWQgQXV0b3Rvb2xzCi1zY3JpcHQsIHRoaXMgaXMgdGFrZW4g
Y2FyZSBvZiBmb3IgeW91LiAgSWYgeW91IHVzZSB5b3VyIG93biBidWlsZAotc2NyaXB0LCB5b3Un
bGwgbmVlZCB0byByZWFkIHlvdXIgY29tcGlsZXIgYW5kIGxpbmtlcidzIG1hbnVhbCB0bwotZmln
dXJlIG91dCB3aGF0IGZsYWdzIHRvIGFkZC4KLQotIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERM
TCkgIyMjCi0KLUdvb2dsZSBUZXN0IGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2FuIGJ1aWxk
IGFuZCBsaW5rIGl0IGFzIGEKLXN0YXRpYyBsaWJyYXJ5IGZvciB0aGUgc2ltcGxpY2l0eS4gIFlv
dSBjYW4gY2hvb3NlIHRvIHVzZSBHb29nbGUgVGVzdAotYXMgYSBzaGFyZWQgbGlicmFyeSAoa25v
d24gYXMgYSBETEwgb24gV2luZG93cykgaWYgeW91IHByZWZlci4KLQotVG8gY29tcGlsZSAqZ3Rl
c3QqIGFzIGEgc2hhcmVkIGxpYnJhcnksIGFkZAotCi0gICAgLURHVEVTVF9DUkVBVEVfU0hBUkVE
X0xJQlJBUlk9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MuICBZb3UnbGwgYWxzbyBuZWVkIHRv
IHRlbGwgdGhlIGxpbmtlciB0byBwcm9kdWNlCi1hIHNoYXJlZCBsaWJyYXJ5IGluc3RlYWQgLSBj
b25zdWx0IHlvdXIgbGlua2VyJ3MgbWFudWFsIGZvciBob3cgdG8gZG8KLWl0LgotCi1UbyBjb21w
aWxlIHlvdXIgKnRlc3RzKiB0aGF0IHVzZSB0aGUgZ3Rlc3Qgc2hhcmVkIGxpYnJhcnksIGFkZAot
Ci0gICAgLURHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MQotCi10byB0aGUgY29tcGls
ZXIgZmxhZ3MuCi0KLU5vdGU6IHdoaWxlIHRoZSBhYm92ZSBzdGVwcyBhcmVuJ3QgdGVjaG5pY2Fs
bHkgbmVjZXNzYXJ5IHRvZGF5IHdoZW4KLXVzaW5nIHNvbWUgY29tcGlsZXJzIChlLmcuIEdDQyks
IHRoZXkgbWF5IGJlY29tZSBuZWNlc3NhcnkgaW4gdGhlCi1mdXR1cmUsIGlmIHdlIGRlY2lkZSB0
byBpbXByb3ZlIHRoZSBzcGVlZCBvZiBsb2FkaW5nIHRoZSBsaWJyYXJ5IChzZWUKLTxodHRwOi8v
Z2NjLmdudS5vcmcvd2lraS9WaXNpYmlsaXR5PiBmb3IgZGV0YWlscykuICBUaGVyZWZvcmUgeW91
IGFyZQotcmVjb21tZW5kZWQgdG8gYWx3YXlzIGFkZCB0aGUgYWJvdmUgZmxhZ3Mgd2hlbiB1c2lu
ZyBHb29nbGUgVGVzdCBhcyBhCi1zaGFyZWQgbGlicmFyeS4gIE90aGVyd2lzZSBhIGZ1dHVyZSBy
ZWxlYXNlIG9mIEdvb2dsZSBUZXN0IG1heSBicmVhawoteW91ciBidWlsZCBzY3JpcHQuCi0KLSMj
IyBBdm9pZGluZyBNYWNybyBOYW1lIENsYXNoZXMgIyMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0
IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVm
aW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVg
IGJvdGgKLWRlZmluaXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMg
d2l0aCBhbm90aGVyCi1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFt
ZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBi
b3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1GT08sIHlv
dSBjYW4gYWRkCi0KLSAgICAtREdURVNUX0RPTlRfREVGSU5FX0ZPTz0xCi0KLXRvIHRoZSBjb21w
aWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1l
Ci1mcm9tIGBGT09gIHRvIGBHVEVTVF9GT09gLiAgQ3VycmVudGx5IGBGT09gIGNhbiBiZSBgRkFJ
TGAsIGBTVUNDRUVEYCwKLW9yIGBURVNUYC4gIEZvciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RP
TlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbAotbmVlZCB0byB3cml0ZQotCi0gICAgR1RFU1RfVEVT
VChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW5zdGVhZCBvZgotCi0gICAgVEVTVChT
b21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLQotaW4gb3JkZXIgdG8gZGVmaW5lIGEgdGVzdC4K
LQotIyMgRGV2ZWxvcGluZyBHb29nbGUgVGVzdCAjIwotCi1UaGlzIHNlY3Rpb24gZGlzY3Vzc2Vz
IGhvdyB0byBtYWtlIHlvdXIgb3duIGNoYW5nZXMgdG8gR29vZ2xlIFRlc3QuCi0KLSMjIyBUZXN0
aW5nIEdvb2dsZSBUZXN0IEl0c2VsZiAjIyMKLQotVG8gbWFrZSBzdXJlIHlvdXIgY2hhbmdlcyB3
b3JrIGFzIGludGVuZGVkIGFuZCBkb24ndCBicmVhayBleGlzdGluZwotZnVuY3Rpb25hbGl0eSwg
eW91J2xsIHdhbnQgdG8gY29tcGlsZSBhbmQgcnVuIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzLgot
Rm9yIHRoYXQgeW91IGNhbiB1c2UgQ01ha2U6Ci0KLSAgICBta2RpciBteWJ1aWxkCi0gICAgY2Qg
bXlidWlsZAotICAgIGNtYWtlIC1EZ3Rlc3RfYnVpbGRfdGVzdHM9T04gJHtHVEVTVF9ESVJ9Ci0K
LU1ha2Ugc3VyZSB5b3UgaGF2ZSBQeXRob24gaW5zdGFsbGVkLCBhcyBzb21lIG9mIEdvb2dsZSBU
ZXN0J3MgdGVzdHMKLWFyZSB3cml0dGVuIGluIFB5dGhvbi4gIElmIHRoZSBjbWFrZSBjb21tYW5k
IGNvbXBsYWlucyBhYm91dCBub3QgYmVpbmcKLWFibGUgdG8gZmluZCBQeXRob24gKGBDb3VsZCBO
T1QgZmluZCBQeXRob25JbnRlcnAgKG1pc3Npbmc6Ci1QWVRIT05fRVhFQ1VUQUJMRSlgKSwgdHJ5
IHRlbGxpbmcgaXQgZXhwbGljaXRseSB3aGVyZSB5b3VyIFB5dGhvbgotZXhlY3V0YWJsZSBjYW4g
YmUgZm91bmQ6Ci0KLSAgICBjbWFrZSAtRFBZVEhPTl9FWEVDVVRBQkxFPXBhdGgvdG8vcHl0aG9u
IC1EZ3Rlc3RfYnVpbGRfdGVzdHM9T04gJHtHVEVTVF9ESVJ9Ci0KLU5leHQsIHlvdSBjYW4gYnVp
bGQgR29vZ2xlIFRlc3QgYW5kIGFsbCBvZiBpdHMgb3duIHRlc3RzLiAgT24gXCpuaXgsCi10aGlz
IGlzIHVzdWFsbHkgZG9uZSBieSAnbWFrZScuICBUbyBydW4gdGhlIHRlc3RzLCBkbwotCi0gICAg
bWFrZSB0ZXN0Ci0KLUFsbCB0ZXN0cyBzaG91bGQgcGFzcy4KLQotTm9ybWFsbHkgeW91IGRvbid0
IG5lZWQgdG8gd29ycnkgYWJvdXQgcmVnZW5lcmF0aW5nIHRoZSBzb3VyY2UgZmlsZXMsCi11bmxl
c3MgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZW0uICBJbiB0aGF0IGNhc2UsIHlvdSBzaG91bGQgbW9k
aWZ5IHRoZQotY29ycmVzcG9uZGluZyAucHVtcCBmaWxlcyBpbnN0ZWFkIGFuZCBydW4gdGhlIHB1
bXAucHkgUHl0aG9uIHNjcmlwdCB0bwotcmVnZW5lcmF0ZSB0aGVtLiAgWW91IGNhbiBmaW5kIHB1
bXAucHkgaW4gdGhlIFtzY3JpcHRzL10oc2NyaXB0cy8pIGRpcmVjdG9yeS4KLVJlYWQgdGhlIFtQ
dW1wIG1hbnVhbF0oZG9jcy9QdW1wTWFudWFsLm1kKSBmb3IgaG93IHRvIHVzZSBpdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNtYWtlIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvY21ha2UvaW50ZXJuYWxfdXRpbHMuY21ha2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg4NzhkYzFhOTU5MjIxMjAyNDVhNzYwMTA3MzZkN2RiNzcxMjFhODkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY21ha2UvaW50
ZXJuYWxfdXRpbHMuY21ha2UKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotIyBEZWZp
bmVzIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVzZWZ1bCBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3Qg
YW5kCi0jIEdvb2dsZSBNb2NrLgotIwotIyBOb3RlOgotIwotIyAtIFRoaXMgZmlsZSB3aWxsIGJl
IHJ1biB0d2ljZSB3aGVuIGJ1aWxkaW5nIEdvb2dsZSBNb2NrIChvbmNlIHZpYQotIyAgIEdvb2ds
ZSBUZXN0J3MgQ01ha2VMaXN0cy50eHQsIGFuZCBvbmNlIHZpYSBHb29nbGUgTW9jaydzKS4KLSMg
ICBUaGVyZWZvcmUgaXQgc2hvdWxkbid0IGhhdmUgYW55IHNpZGUgZWZmZWN0cyBvdGhlciB0aGFu
IGRlZmluaW5nCi0jICAgdGhlIGZ1bmN0aW9ucyBhbmQgbWFjcm9zLgotIwotIyAtIFRoZSBmdW5j
dGlvbnMvbWFjcm9zIGRlZmluZWQgaW4gdGhpcyBmaWxlIG1heSBkZXBlbmQgb24gR29vZ2xlCi0j
ICAgVGVzdCBhbmQgR29vZ2xlIE1vY2sncyBvcHRpb24oKSBkZWZpbml0aW9ucywgYW5kIHRodXMg
bXVzdCBiZQotIyAgIGNhbGxlZCAqYWZ0ZXIqIHRoZSBvcHRpb25zIGhhdmUgYmVlbiBkZWZpbmVk
LgotCi0jIFR3ZWFrcyBDTWFrZSdzIGRlZmF1bHQgY29tcGlsZXIvbGlua2VyIHNldHRpbmdzIHRv
IHN1aXQgR29vZ2xlIFRlc3QncyBuZWVkcy4KLSMKLSMgVGhpcyBtdXN0IGJlIGEgbWFjcm8oKSwg
YXMgaW5zaWRlIGEgZnVuY3Rpb24gc3RyaW5nKCkgY2FuIG9ubHkKLSMgdXBkYXRlIHZhcmlhYmxl
cyBpbiB0aGUgZnVuY3Rpb24gc2NvcGUuCi1tYWNybyhmaXhfZGVmYXVsdF9jb21waWxlcl9zZXR0
aW5nc18pCi0gIGlmIChNU1ZDKQotICAgICMgRm9yIE1TVkMsIENNYWtlIHNldHMgY2VydGFpbiBm
bGFncyB0byBkZWZhdWx0cyB3ZSB3YW50IHRvIG92ZXJyaWRlLgotICAgICMgVGhpcyByZXBsYWNl
bWVudCBjb2RlIGlzIHRha2VuIGZyb20gc2FtcGxlIGluIHRoZSBDTWFrZSBXaWtpIGF0Ci0gICAg
IyBodHRwOi8vd3d3LmNtYWtlLm9yZy9XaWtpL0NNYWtlX0ZBUSNEeW5hbWljX1JlcGxhY2UuCi0g
ICAgZm9yZWFjaCAoZmxhZ192YXIKLSAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1MgQ01BS0Vf
Q1hYX0ZMQUdTX0RFQlVHIENNQUtFX0NYWF9GTEFHU19SRUxFQVNFCi0gICAgICAgICAgICAgQ01B
S0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPKQot
ICAgICAgaWYgKE5PVCBCVUlMRF9TSEFSRURfTElCUyBBTkQgTk9UIGd0ZXN0X2ZvcmNlX3NoYXJl
ZF9jcnQpCi0gICAgICAgICMgV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIHNoYXJlZCBs
aWJyYXJ5LCBpdCBzaG91bGQgYWxzbyB1c2UKLSAgICAgICAgIyBzaGFyZWQgcnVudGltZSBsaWJy
YXJpZXMuICBPdGhlcndpc2UsIGl0IG1heSBlbmQgdXAgd2l0aCBtdWx0aXBsZQotICAgICAgICAj
IGNvcGllcyBvZiBydW50aW1lIGxpYnJhcnkgZGF0YSBpbiBkaWZmZXJlbnQgbW9kdWxlcywgcmVz
dWx0aW5nIGluCi0gICAgICAgICMgaGFyZC10by1maW5kIGNyYXNoZXMuIFdoZW4gaXQgaXMgYnVp
bHQgYXMgYSBzdGF0aWMgbGlicmFyeSwgaXQgaXMKLSAgICAgICAgIyBwcmVmZXJhYmxlIHRvIHVz
ZSBDUlQgYXMgc3RhdGljIGxpYnJhcmllcywgYXMgd2UgZG9uJ3QgaGF2ZSB0byByZWx5Ci0gICAg
ICAgICMgb24gQ1JUIERMTHMgYmVpbmcgYXZhaWxhYmxlLiBDTWFrZSBhbHdheXMgZGVmYXVsdHMg
dG8gdXNpbmcgc2hhcmVkCi0gICAgICAgICMgQ1JUIGxpYnJhcmllcywgc28gd2Ugb3ZlcnJpZGUg
dGhhdCBkZWZhdWx0IGhlcmUuCi0gICAgICAgIHN0cmluZyhSRVBMQUNFICIvTUQiICItTVQiICR7
ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCi0gICAgICBlbmRpZigpCi0KLSAgICAgICMgV2Ug
cHJlZmVyIG1vcmUgc3RyaWN0IHdhcm5pbmcgY2hlY2tpbmcgZm9yIGJ1aWxkaW5nIEdvb2dsZSBU
ZXN0LgotICAgICAgIyBSZXBsYWNlcyAvVzMgd2l0aCAvVzQgaW4gZGVmYXVsdHMuCi0gICAgICBz
dHJpbmcoUkVQTEFDRSAiL1czIiAiL1c0IiAke2ZsYWdfdmFyfSAiJHske2ZsYWdfdmFyfX0iKQot
ICAgIGVuZGZvcmVhY2goKQotICBlbmRpZigpCi1lbmRtYWNybygpCi0KLSMgRGVmaW5lcyB0aGUg
Y29tcGlsZXIvbGlua2VyIGZsYWdzIHVzZWQgdG8gYnVpbGQgR29vZ2xlIFRlc3QgYW5kCi0jIEdv
b2dsZSBNb2NrLiAgWW91IGNhbiB0d2VhayB0aGVzZSBkZWZpbml0aW9ucyB0byBzdWl0IHlvdXIg
bmVlZC4gIEEKLSMgdmFyaWFibGUncyB2YWx1ZSBpcyBlbXB0eSBiZWZvcmUgaXQncyBleHBsaWNp
dGx5IGFzc2lnbmVkIHRvLgotbWFjcm8oY29uZmlnX2NvbXBpbGVyX2FuZF9saW5rZXIpCi0gICMg
Tm90ZTogcHRocmVhZHMgb24gTWluR1cgaXMgbm90IHN1cHBvcnRlZCwgZXZlbiBpZiBhdmFpbGFi
bGUKLSAgIyBpbnN0ZWFkLCB3ZSB1c2Ugd2luZG93cyB0aHJlYWRpbmcgcHJpbWl0aXZlcwotICBp
ZiAoTk9UIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQU5EIE5PVCBNSU5HVykKLSAgICAjIERlZmlu
ZXMgQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQgYW5kIENNQUtFX1RIUkVBRF9MSUJTX0lOSVQuCi0g
ICAgZmluZF9wYWNrYWdlKFRocmVhZHMpCi0gIGVuZGlmKCkKLQotICBmaXhfZGVmYXVsdF9jb21w
aWxlcl9zZXR0aW5nc18oKQotICBpZiAoTVNWQykKLSAgICAjIE5ld2xpbmVzIGluc2lkZSBmbGFn
cyB2YXJpYWJsZXMgYnJlYWsgQ01ha2UncyBOTWFrZSBnZW5lcmF0b3IuCi0gICAgIyBUT0RPKHZs
YWRsQGdvb2dsZS5jb20pOiBBZGQgLVJUQ3MgYW5kIC1SVEN1IHRvIGRlYnVnIGJ1aWxkcy4KLSAg
ICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1HUyAtVzQgLVdYIC13ZDQyNTEgLXdkNDI3NSAtbm9sb2dv
IC1KIC1aaSIpCi0gICAgaWYgKE1TVkNfVkVSU0lPTiBMRVNTIDE0MDApICAjIDE0MDAgaXMgVmlz
dWFsIFN0dWRpbyAyMDA1Ci0gICAgICAjIFN1cHByZXNzIHNwdXJpb3VzIHdhcm5pbmdzIE1TVkMg
Ny4xIHNvbWV0aW1lcyBpc3N1ZXMuCi0gICAgICAjIEZvcmNpbmcgdmFsdWUgdG8gYm9vbC4KLSAg
ICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDgwMCIpCi0gICAg
ICAjIENvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJl
IGdlbmVyYXRlZC4KLSAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30g
LXdkNDUxMSAtd2Q0NTEyIikKLSAgICAgICMgQ29tcGF0aWJpbGl0eSB3YXJuaW5ncyBub3QgYXBw
bGljYWJsZSB0byBHb29nbGUgVGVzdC4KLSAgICAgICMgUmVzb2x2ZWQgb3ZlcmxvYWQgd2FzIGZv
dW5kIGJ5IGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAuCi0gICAgICBzZXQoY3h4X2Jhc2VfZmxh
Z3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ2NzUiKQotICAgIGVuZGlmKCkKLSAgICBpZiAoTVNW
Q19WRVJTSU9OIExFU1MgMTUwMCkgICMgMTUwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDgKLSAgICAg
ICMgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudC4KLSAgICAgICMgV2hlbiBjb21w
aWxpbmcgd2l0aCAvVzQsIHdlIGdldCBzZXZlcmFsIGluc3RhbmNlcyBvZiBDNDEyNwotICAgICAg
IyAoQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCkuIEluIG91ciBjb2RlLCB3ZSBk
aXNhYmxlIHRoYXQKLSAgICAgICMgd2FybmluZyBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcy4gSG93
ZXZlciwgb24gVmlzdWFsIFN0dWRpbyAyMDA1LAotICAgICAgIyB0aGUgd2FybmluZyBmaXJlcyBv
biBzdGQ6Omxpc3QuIFRoZXJlZm9yZSBvbiB0aGF0IGNvbXBpbGVyIGFuZCBlYXJsaWVyLAotICAg
ICAgIyB3ZSBkaXNhYmxlIHRoZSB3YXJuaW5nIHByb2plY3Qtd2lkZS4KLSAgICAgIHNldChjeHhf
YmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdkNDEyNyIpCi0gICAgZW5kaWYoKQotICAg
IGlmIChOT1QgKE1TVkNfVkVSU0lPTiBMRVNTIDE3MDApKSAgIyAxNzAwIGlzIFZpc3VhbCBTdHVk
aW8gMjAxMi4KLSAgICAgICMgU3VwcHJlc3MgInVucmVhY2hhYmxlIGNvZGUiIHdhcm5pbmcgb24g
VlMgMjAxMiBhbmQgbGF0ZXIuCi0gICAgICAjIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVz
dGlvbnMvMzIzMjY2OSBleHBsYWlucyB0aGUgaXNzdWUuCi0gICAgICBzZXQoY3h4X2Jhc2VfZmxh
Z3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC13ZDQ3MDIiKQotICAgIGVuZGlmKCkKLSAgICBpZiAoTk9U
IChNU1ZDX1ZFUlNJT04gR1JFQVRFUiAxOTAwKSkgICMgMTkwMCBpcyBWaXN1YWwgU3R1ZGlvIDIw
MTUKLSAgICAgICMgQmlnT2JqIHJlcXVpcmVkIGZvciB0ZXN0cy4KLSAgICAgIHNldChjeHhfYmFz
ZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLWJpZ29iaiIpCi0gICAgZW5kaWYoKQotCi0gICAg
c2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtRF9VTklDT0RFIC1EVU5JQ09E
RSAtRFdJTjMyIC1EX1dJTjMyIikKLSAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2Vf
ZmxhZ3N9IC1EU1RSSUNUIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiIpCi0gICAgc2V0KGN4eF9leGNl
cHRpb25fZmxhZ3MgIi1FSHNjIC1EX0hBU19FWENFUFRJT05TPTEiKQotICAgIHNldChjeHhfbm9f
ZXhjZXB0aW9uX2ZsYWdzICItRF9IQVNfRVhDRVBUSU9OUz0wIikKLSAgICBzZXQoY3h4X25vX3J0
dGlfZmxhZ3MgIi1HUi0iKQotICBlbHNlaWYgKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNYWCkKLSAg
ICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1XYWxsIC1Xc2hhZG93IikKLSAgICBzZXQoY3h4X2V4Y2Vw
dGlvbl9mbGFncyAiLWZleGNlcHRpb25zIikKLSAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFn
cyAiLWZuby1leGNlcHRpb25zIikKLSAgICAjIFVudGlsIHZlcnNpb24gNC4zLjIsIEdDQyBkb2Vz
bid0IGRlZmluZSBhIG1hY3JvIHRvIGluZGljYXRlCi0gICAgIyB3aGV0aGVyIFJUVEkgaXMgZW5h
YmxlZC4gIFRoZXJlZm9yZSB3ZSBkZWZpbmUgR1RFU1RfSEFTX1JUVEkKLSAgICAjIGV4cGxpY2l0
bHkuCi0gICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICItZm5vLXJ0dGkgLURHVEVTVF9IQVNfUlRU
ST0wIikKLSAgICBzZXQoY3h4X3N0cmljdF9mbGFncwotICAgICAgIi1XZXh0cmEgLVduby11bnVz
ZWQtcGFyYW1ldGVyIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiKQotICBlbHNlaWYg
KENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiU3VuUHJvIikKLSAgICBzZXQoY3h4X2V4
Y2VwdGlvbl9mbGFncyAiLWZlYXR1cmVzPWV4Y2VwdCIpCi0gICAgIyBTdW4gUHJvIGRvZXNuJ3Qg
cHJvdmlkZSBtYWNyb3MgdG8gaW5kaWNhdGUgd2hldGhlciBleGNlcHRpb25zIGFuZAotICAgICMg
UlRUSSBhcmUgZW5hYmxlZCwgc28gd2UgZGVmaW5lIEdURVNUX0hBU18qIGV4cGxpY2l0bHkuCi0g
ICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1mZWF0dXJlcz1ubyVleGNlcHQgLURHVEVT
VF9IQVNfRVhDRVBUSU9OUz0wIikKLSAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3MgIi1mZWF0dXJl
cz1ubyVydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCi0gIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJ
TEVSX0lEIFNUUkVRVUFMICJWaXN1YWxBZ2UiIE9SCi0gICAgICBDTUFLRV9DWFhfQ09NUElMRVJf
SUQgU1RSRVFVQUwgIlhMIikKLSAgICAjIENNYWtlIDIuOCBjaGFuZ2VzIFZpc3VhbCBBZ2UncyBj
b21waWxlciBJRCB0byAiWEwiLgotICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItcWVoIikK
LSAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiLXFub2VoIikKLSAgICAjIFVudGlsIHZl
cnNpb24gOS4wLCBWaXN1YWwgQWdlIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5kaWNhdGUK
LSAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmluZSBHVEVT
VF9IQVNfUlRUSQotICAgICMgZXhwbGljaXRseS4KLSAgICBzZXQoY3h4X25vX3J0dGlfZmxhZ3Mg
Ii1xbm9ydHRpIC1ER1RFU1RfSEFTX1JUVEk9MCIpCi0gIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJ
TEVSX0lEIFNUUkVRVUFMICJIUCIpCi0gICAgc2V0KGN4eF9iYXNlX2ZsYWdzICItQUEgLW10IikK
LSAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLURHVEVTVF9IQVNfRVhDRVBUSU9OUz0xIikK
LSAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9mbGFncyAiK25vZWggLURHVEVTVF9IQVNfRVhDRVBU
SU9OUz0wIikKLSAgICAjIFJUVEkgY2FuIG5vdCBiZSBkaXNhYmxlZCBpbiBIUCBhQ0MgY29tcGls
ZXIuCi0gICAgc2V0KGN4eF9ub19ydHRpX2ZsYWdzICIiKQotICBlbmRpZigpCi0KLSAgaWYgKENN
QUtFX1VTRV9QVEhSRUFEU19JTklUKSAgIyBUaGUgcHRocmVhZHMgbGlicmFyeSBpcyBhdmFpbGFi
bGUgYW5kIGFsbG93ZWQuCi0gICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdz
fSAtREdURVNUX0hBU19QVEhSRUFEPTEiKQotICBlbHNlKCkKLSAgICBzZXQoY3h4X2Jhc2VfZmxh
Z3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MCIpCi0gIGVuZGlmKCkK
LQotICAjIEZvciBidWlsZGluZyBndGVzdCdzIG93biB0ZXN0cyBhbmQgc2FtcGxlcy4KLSAgc2V0
KGN4eF9leGNlcHRpb24gIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke2N4eF9iYXNlX2ZsYWdzfSAke2N4
eF9leGNlcHRpb25fZmxhZ3N9IikKLSAgc2V0KGN4eF9ub19leGNlcHRpb24KLSAgICAiJHtDTUFL
RV9DWFhfRkxBR1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X25vX2V4Y2VwdGlvbl9mbGFnc30i
KQotICBzZXQoY3h4X2RlZmF1bHQgIiR7Y3h4X2V4Y2VwdGlvbn0iKQotICBzZXQoY3h4X25vX3J0
dGkgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X25vX3J0dGlfZmxhZ3N9IikKLSAgc2V0KGN4eF91c2Vf
b3duX3R1cGxlICIke2N4eF9kZWZhdWx0fSAtREdURVNUX1VTRV9PV05fVFIxX1RVUExFPTEiKQot
Ci0gICMgRm9yIGJ1aWxkaW5nIHRoZSBndGVzdCBsaWJyYXJpZXMuCi0gIHNldChjeHhfc3RyaWN0
ICIke2N4eF9kZWZhdWx0fSAke2N4eF9zdHJpY3RfZmxhZ3N9IikKLWVuZG1hY3JvKCkKLQotIyBE
ZWZpbmVzIHRoZSBndGVzdCAmIGd0ZXN0X21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91
bGQgbGluawotIyB3aXRoIG9uZSBvZiB0aGVtLgotZnVuY3Rpb24oY3h4X2xpYnJhcnlfd2l0aF90
eXBlIG5hbWUgdHlwZSBjeHhfZmxhZ3MpCi0gICMgdHlwZSBjYW4gYmUgZWl0aGVyIFNUQVRJQyBv
ciBTSEFSRUQgdG8gZGVub3RlIGEgc3RhdGljIG9yIHNoYXJlZCBsaWJyYXJ5LgotICAjIEFSR04g
cmVmZXJzIHRvIGFkZGl0aW9uYWwgYXJndW1lbnRzIGFmdGVyICdjeHhfZmxhZ3MnLgotICBhZGRf
bGlicmFyeSgke25hbWV9ICR7dHlwZX0gJHtBUkdOfSkKLSAgc2V0X3RhcmdldF9wcm9wZXJ0aWVz
KCR7bmFtZX0KLSAgICBQUk9QRVJUSUVTCi0gICAgQ09NUElMRV9GTEFHUyAiJHtjeHhfZmxhZ3N9
IikKLSAgaWYgKEJVSUxEX1NIQVJFRF9MSUJTIE9SIHR5cGUgU1RSRVFVQUwgIlNIQVJFRCIpCi0g
ICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KLSAgICAgIFBST1BFUlRJRVMKLSAgICAg
IENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0NSRUFURV9TSEFSRURfTElCUkFSWT0xIikKLSAg
ZW5kaWYoKQotICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpCi0gICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKCR7bmFtZX0gJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKLSAgZW5kaWYoKQot
ZW5kZnVuY3Rpb24oKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgSGVscGVyIGZ1bmN0aW9ucyBm
b3IgY3JlYXRpbmcgYnVpbGQgdGFyZ2V0cy4KLQotZnVuY3Rpb24oY3h4X3NoYXJlZF9saWJyYXJ5
IG5hbWUgY3h4X2ZsYWdzKQotICBjeHhfbGlicmFyeV93aXRoX3R5cGUoJHtuYW1lfSBTSEFSRUQg
IiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkKLWVuZGZ1bmN0aW9uKCkKLQotZnVuY3Rpb24oY3h4X2xp
YnJhcnkgbmFtZSBjeHhfZmxhZ3MpCi0gIGN4eF9saWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9ICIi
ICIke2N4eF9mbGFnc30iICR7QVJHTn0pCi1lbmRmdW5jdGlvbigpCi0KLSMgY3h4X2V4ZWN1dGFi
bGVfd2l0aF9mbGFncyhuYW1lIGN4eF9mbGFncyBsaWJzIHNyY3MuLi4pCi0jCi0jIGNyZWF0ZXMg
YSBuYW1lZCBDKysgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgb24gdGhlIGdpdmVuIGxpYnJhcmll
cyBhbmQKLSMgaXMgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzIHdpdGggdGhlIGdp
dmVuIGNvbXBpbGVyIGZsYWdzLgotZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncyBu
YW1lIGN4eF9mbGFncyBsaWJzKQotICBhZGRfZXhlY3V0YWJsZSgke25hbWV9ICR7QVJHTn0pCi0g
IGlmIChjeHhfZmxhZ3MpCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KLSAgICAg
IFBST1BFUlRJRVMKLSAgICAgIENPTVBJTEVfRkxBR1MgIiR7Y3h4X2ZsYWdzfSIpCi0gIGVuZGlm
KCkKLSAgaWYgKEJVSUxEX1NIQVJFRF9MSUJTKQotICAgIHNldF90YXJnZXRfcHJvcGVydGllcygk
e25hbWV9Ci0gICAgICBQUk9QRVJUSUVTCi0gICAgICBDT01QSUxFX0RFRklOSVRJT05TICJHVEVT
VF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MSIpCi0gIGVuZGlmKCkKLSAgIyBUbyBzdXBwb3J0
IG1peGluZyBsaW5raW5nIGluIHN0YXRpYyBhbmQgZHluYW1pYyBsaWJyYXJpZXMsIGxpbmsgZWFj
aAotICAjIGxpYnJhcnkgaW4gd2l0aCBhbiBleHRyYSBjYWxsIHRvIHRhcmdldF9saW5rX2xpYnJh
cmllcy4KLSAgZm9yZWFjaCAobGliICIke2xpYnN9IikKLSAgICB0YXJnZXRfbGlua19saWJyYXJp
ZXMoJHtuYW1lfSAke2xpYn0pCi0gIGVuZGZvcmVhY2goKQotZW5kZnVuY3Rpb24oKQotCi0jIGN4
eF9leGVjdXRhYmxlKG5hbWUgZGlyIGxpYiBzcmNzLi4uKQotIwotIyBjcmVhdGVzIGEgbmFtZWQg
dGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKLSMgZnJv
bSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAgZGlyL25hbWUuY2MgaXMgaW1wbGljaXRseSBpbmNs
dWRlZCBpbgotIyB0aGUgc291cmNlIGZpbGUgbGlzdC4KLWZ1bmN0aW9uKGN4eF9leGVjdXRhYmxl
IG5hbWUgZGlyIGxpYnMpCi0gIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoCi0gICAgJHtuYW1l
fSAiJHtjeHhfZGVmYXVsdH0iICIke2xpYnN9IiAiJHtkaXJ9LyR7bmFtZX0uY2MiICR7QVJHTn0p
Ci1lbmRmdW5jdGlvbigpCi0KLSMgU2V0cyBQWVRIT05JTlRFUlBfRk9VTkQgYW5kIFBZVEhPTl9F
WEVDVVRBQkxFLgotZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCkKLQotIyBjeHhfdGVzdF93aXRo
X2ZsYWdzKG5hbWUgY3h4X2ZsYWdzIGxpYnMgc3Jjcy4uLikKLSMKLSMgY3JlYXRlcyBhIG5hbWVk
IEMrKyB0ZXN0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMgYnVpbHQKLSMg
ZnJvbSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzIHdpdGggdGhlIGdpdmVuIGNvbXBpbGVyIGZsYWdz
LgotZnVuY3Rpb24oY3h4X3Rlc3Rfd2l0aF9mbGFncyBuYW1lIGN4eF9mbGFncyBsaWJzKQotICBj
eHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKCR7bmFtZX0gIiR7Y3h4X2ZsYWdzfSIgIiR7bGlic30i
ICR7QVJHTn0pCi0gIGFkZF90ZXN0KCR7bmFtZX0gJHtuYW1lfSkKLWVuZGZ1bmN0aW9uKCkKLQot
IyBjeHhfdGVzdChuYW1lIGxpYnMgc3Jjcy4uLikKLSMKLSMgY3JlYXRlcyBhIG5hbWVkIHRlc3Qg
dGFyZ2V0IHRoYXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicyBhbmQgaXMKLSMgYnVpbHQgZnJv
bSB0aGUgZ2l2ZW4gc291cmNlIGZpbGVzLiAgVW5saWtlIGN4eF90ZXN0X3dpdGhfZmxhZ3MsCi0j
IHRlc3QvbmFtZS5jYyBpcyBhbHJlYWR5IGltcGxpY2l0bHkgaW5jbHVkZWQgaW4gdGhlIHNvdXJj
ZSBmaWxlIGxpc3QuCi1mdW5jdGlvbihjeHhfdGVzdCBuYW1lIGxpYnMpCi0gIGN4eF90ZXN0X3dp
dGhfZmxhZ3MoIiR7bmFtZX0iICIke2N4eF9kZWZhdWx0fSIgIiR7bGlic30iCi0gICAgInRlc3Qv
JHtuYW1lfS5jYyIgJHtBUkdOfSkKLWVuZGZ1bmN0aW9uKCkKLQotIyBweV90ZXN0KG5hbWUpCi0j
Ci0jIGNyZWF0ZXMgYSBQeXRob24gdGVzdCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdob3NlIG1haW4g
bW9kdWxlIGlzIGluCi0jIHRlc3QvbmFtZS5weS4gIEl0IGRvZXMgbm90aGluZyBpZiBQeXRob24g
aXMgbm90IGluc3RhbGxlZC4KLWZ1bmN0aW9uKHB5X3Rlc3QgbmFtZSkKLSAgIyBXZSBhcmUgbm90
IHN1cHBvcnRpbmcgUHl0aG9uIHRlc3RzIG9uIExpbnV4IHlldCBhcyB0aGV5IGNvbnNpZGVyCi0g
ICMgYWxsIExpbnV4IGVudmlyb25tZW50cyB0byBiZSBnb29nbGUzIGFuZCB0cnkgdG8gdXNlIGdv
b2dsZTMgZmVhdHVyZXMuCi0gIGlmIChQWVRIT05JTlRFUlBfRk9VTkQpCi0gICAgIyAke0NNQUtF
X0JJTkFSWV9ESVJ9IGlzIGtub3duIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgc28gd2UgY2FuCi0g
ICAgIyBkaXJlY3RseSBiaW5kIGl0IGZyb20gY21ha2UuICR7Q1RFU1RfQ09ORklHVVJBVElPTl9U
WVBFfSBpcyBrbm93bgotICAgICMgb25seSBhdCBjdGVzdCBydW50aW1lIChieSBjYWxsaW5nIGN0
ZXN0IC1jIDxDb25maWd1cmF0aW9uPiksIHNvCi0gICAgIyB3ZSBoYXZlIHRvIGVzY2FwZSAkIHRv
IGRlbGF5IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBoZXJlLgotICAgIGlmICgke0NNQUtFX01BSk9S
X1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCi0gICAgICBhZGRf
dGVzdCgKLSAgICAgICAgTkFNRSAke25hbWV9Ci0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhF
Q1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3QvJHtuYW1lfS5weQotICAg
ICAgICAgICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyQ8Q09ORklH
VVJBVElPTj4pCi0gICAgZWxzZSAoJHtDTUFLRV9NQUpPUl9WRVJTSU9OfS4ke0NNQUtFX01JTk9S
X1ZFUlNJT059IEdSRUFURVIgMy4xKQotICAgICAgYWRkX3Rlc3QoCi0gICAgICAgICR7bmFtZX0K
LSAgICAgICAgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L3Rlc3QvJHtuYW1lfS5weQotICAgICAgICAgIC0tYnVpbGRfZGlyPSR7Q01BS0VfQ1VSUkVOVF9C
SU5BUllfRElSfS9cJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9KQotICAgIGVuZGlmICgke0NN
QUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCi0g
IGVuZGlmKCkKLWVuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFy
L2d0ZXN0LmNicHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0LmNicHJvagpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVjMzA1NGI4NTFkYWI0ZDhmZTY4YzU2M2Q5NTUyNjY4
MzE4MjRjMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdC5jYnByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMzgg
KzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJv
amVjdCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWls
ZC8yMDAzIj4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0KLSAgICA8UHJvamVjdEd1aWQ+e2JjYTM3YTcy
LTViMDctNDZjZi1iNDRlLTg5ZjhlMDY0NTFhMn08L1Byb2plY3RHdWlkPg0KLSAgICA8Q29uZmln
IENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PScnIj5SZWxlYXNlPC9Db25maWc+DQotICA8L1Byb3Bl
cnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nQmFz
ZScgb3IgJyQoQmFzZSknIT0nJyI+DQotICAgIDxCYXNlPnRydWU8L0Jhc2U+DQotICA8L1Byb3Bl
cnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nRGVi
dWcnIG9yICckKENmZ18xKSchPScnIj4NCi0gICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCi0gICAgPENm
Z18xPnRydWU8L0NmZ18xPg0KLSAgICA8Q2ZnUGFyZW50PkJhc2U8L0NmZ1BhcmVudD4NCi0gIDwv
UHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9
PSdSZWxlYXNlJyBvciAnJChDZmdfMiknIT0nJyI+DQotICAgIDxCYXNlPnRydWU8L0Jhc2U+DQot
ICAgIDxDZmdfMj50cnVlPC9DZmdfMj4NCi0gICAgPENmZ1BhcmVudD5CYXNlPC9DZmdQYXJlbnQ+
DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKEJh
c2UpJyE9JyciPg0KLSAgICA8QkNDX09wdGltaXplRm9yU3BlZWQ+dHJ1ZTwvQkNDX09wdGltaXpl
Rm9yU3BlZWQ+DQotICAgIDxPdXRwdXRFeHQ+bGliPC9PdXRwdXRFeHQ+DQotICAgIDxEQ0NfQ0J1
aWxkZXJPdXRwdXQ+SlBITkU8L0RDQ19DQnVpbGRlck91dHB1dD4NCi0gICAgPERlZmluZXM+Tk9f
U1RSSUNUPC9EZWZpbmVzPg0KLSAgICA8RHluYW1pY1JUTD50cnVlPC9EeW5hbWljUlRMPg0KLSAg
ICA8VXNlUGFja2FnZXM+dHJ1ZTwvVXNlUGFja2FnZXM+DQotICAgIDxQcm9qZWN0VHlwZT5DcHBT
dGF0aWNMaWJyYXJ5PC9Qcm9qZWN0VHlwZT4NCi0gICAgPEJDQ19DUFBDb21waWxlQWx3YXlzPnRy
dWU8L0JDQ19DUFBDb21waWxlQWx3YXlzPg0KLSAgICA8UGFja2FnZUltcG9ydHM+cnRsLmJwaTt2
Y2wuYnBpO2JjYmllLmJwaTt2Y2x4LmJwaTt2Y2xhY3RuYmFuZC5icGk7eG1scnRsLmJwaTtiY2Jz
bXAuYnBpO2RicnRsLmJwaTt2Y2xkYi5icGk7YmRlcnRsLmJwaTt2Y2xkYnguYnBpO2RzbmFwLmJw
aTtkc25hcGNvbi5icGk7dmNsaWIuYnBpO2lieHByZXNzLmJwaTthZG9ydGwuYnBpO2RieGNkcy5i
cGk7ZGJleHByZXNzLmJwaTtEYnhDb21tb25Ecml2ZXIuYnBpO3dlYnNuYXAuYnBpO3ZjbGllLmJw
aTt3ZWJkc25hcC5icGk7aW5ldC5icGk7aW5ldGRiYmRlLmJwaTtpbmV0ZGJ4cHJlc3MuYnBpO3Nv
YXBydGwuYnBpO1JhdmU3NVZDTC5icGk7dGVlVUkuYnBpO3RlZS5icGk7dGVlZGIuYnBpO0luZHlD
b3JlLmJwaTtJbmR5U3lzdGVtLmJwaTtJbmR5UHJvdG9jb2xzLmJwaTtJbnRyYXdlYkRCXzkwXzEw
MC5icGk7SW50cmF3ZWJfOTBfMTAwLmJwaTtkY2xaaXBGb3JnZWQxMS5icGk7dmNsWmlwRm9yZ2Vk
MTEuYnBpO0dSMzJfQkRTMjAwNi5icGk7R1IzMl9EU0dOX0JEUzIwMDYuYnBpO0pjbC5icGk7SmNs
VmNsLmJwaTtKdkNvcmVEMTFSLmJwaTtKdlN5c3RlbUQxMVIuYnBpO0p2U3RkQ3RybHNEMTFSLmJw
aTtKdkFwcEZybUQxMVIuYnBpO0p2QmFuZHNEMTFSLmJwaTtKdkRCRDExUi5icGk7SnZEbGdzRDEx
Ui5icGk7SnZCREVEMTFSLmJwaTtKdkNtcEQxMVIuYnBpO0p2Q3J5cHREMTFSLmJwaTtKdkN0cmxz
RDExUi5icGk7SnZDdXN0b21EMTFSLmJwaTtKdkRvY2tpbmdEMTFSLmJwaTtKdkRvdE5ldEN0cmxz
RDExUi5icGk7SnZFRElEMTFSLmJwaTtKdkdsb2J1c0QxMVIuYnBpO0p2SE1JRDExUi5icGk7SnZJ
bnRlcnByZXRlckQxMVIuYnBpO0p2SmFuc0QxMVIuYnBpO0p2TWFuYWdlZFRocmVhZHNEMTFSLmJw
aTtKdk1NRDExUi5icGk7SnZOZXREMTFSLmJwaTtKdlBhZ2VDb21wc0QxMVIuYnBpO0p2UGx1Z2lu
RDExUi5icGk7SnZQcmludFByZXZpZXdEMTFSLmJwaTtKdlJ1bnRpbWVEZXNpZ25EMTFSLmJwaTtK
dlRpbWVGcmFtZXdvcmtEMTFSLmJwaTtKdlZhbGlkYXRvcnNEMTFSLmJwaTtKdldpemFyZEQxMVIu
YnBpO0p2WFBDdHJsc0QxMVIuYnBpO1ZjbFNtcC5icGk7Q0V4Y2VwdGlvbkV4cGVydDExLmJwaTwv
UGFja2FnZUltcG9ydHM+DQotICAgIDxCQ0Nfd3Bhcj5mYWxzZTwvQkNDX3dwYXI+DQotICAgIDxJ
bmNsdWRlUGF0aD4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRT
KVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5caW5jbHVkZTsuLjwvSW5jbHVkZVBhdGg+DQotICAgIDxB
bGxQYWNrYWdlTGlicz5ydGwubGliO3ZjbC5saWI8L0FsbFBhY2thZ2VMaWJzPg0KLSAgICA8VExJ
Ql9QYWdlU2l6ZT4zMjwvVExJQl9QYWdlU2l6ZT4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQo
QkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrPC9JTElOS19MaWJyYXJ5UGF0
aD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQo
Q2ZnXzEpJyE9JyciPg0KLSAgICA8QkNDX09wdGltaXplRm9yU3BlZWQ+ZmFsc2U8L0JDQ19PcHRp
bWl6ZUZvclNwZWVkPg0KLSAgICA8RENDX09wdGltaXplPmZhbHNlPC9EQ0NfT3B0aW1pemU+DQot
ICAgIDxEQ0NfRGVidWdJbmZvSW5FeGU+dHJ1ZTwvRENDX0RlYnVnSW5mb0luRXhlPg0KLSAgICA8
RGVmaW5lcz5fREVCVUc7JChEZWZpbmVzKTwvRGVmaW5lcz4NCi0gICAgPElMSU5LX0Z1bGxEZWJ1
Z0luZm8+dHJ1ZTwvSUxJTktfRnVsbERlYnVnSW5mbz4NCi0gICAgPEJDQ19JbmxpbmVGdW5jdGlv
bkV4cGFuc2lvbj5mYWxzZTwvQkNDX0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KLSAgICA8SUxJ
TktfRGlzYWJsZUluY3JlbWVudGFsTGlua2luZz50cnVlPC9JTElOS19EaXNhYmxlSW5jcmVtZW50
YWxMaW5raW5nPg0KLSAgICA8QkNDX1VzZVJlZ2lzdGVyVmFyaWFibGVzPk5vbmU8L0JDQ19Vc2VS
ZWdpc3RlclZhcmlhYmxlcz4NCi0gICAgPERDQ19EZWZpbmU+REVCVUc8L0RDQ19EZWZpbmU+DQot
ICAgIDxCQ0NfRGVidWdMaW5lTnVtYmVycz50cnVlPC9CQ0NfRGVidWdMaW5lTnVtYmVycz4NCi0g
ICAgPEludGVybWVkaWF0ZU91dHB1dERpcj5EZWJ1ZzwvSW50ZXJtZWRpYXRlT3V0cHV0RGlyPg0K
LSAgICA8VEFTTV9EaXNwbGF5U291cmNlTGluZXM+dHJ1ZTwvVEFTTV9EaXNwbGF5U291cmNlTGlu
ZXM+DQotICAgIDxCQ0NfU3RhY2tGcmFtZXM+dHJ1ZTwvQkNDX1N0YWNrRnJhbWVzPg0KLSAgICA8
QkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPnRydWU8L0JDQ19EaXNhYmxlT3B0aW1pemF0aW9ucz4N
Ci0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWJcZGVidWc7JChJTElOS19MaWJyYXJ5
UGF0aCk8L0lMSU5LX0xpYnJhcnlQYXRoPg0KLSAgICA8VEFTTV9EZWJ1Z2dpbmc+RnVsbDwvVEFT
TV9EZWJ1Z2dpbmc+DQotICAgIDxCQ0NfU291cmNlRGVidWdnaW5nT24+dHJ1ZTwvQkNDX1NvdXJj
ZURlYnVnZ2luZ09uPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDZmdfMiknIT0nJyI+DQotICAgIDxEZWZpbmVzPk5ERUJVRzskKERlZmluZXMp
PC9EZWZpbmVzPg0KLSAgICA8SW50ZXJtZWRpYXRlT3V0cHV0RGlyPlJlbGVhc2U8L0ludGVybWVk
aWF0ZU91dHB1dERpcj4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWJccmVsZWFz
ZTskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJTktfTGlicmFyeVBhdGg+DQotICAgIDxUQVNNX0Rl
YnVnZ2luZz5Ob25lPC9UQVNNX0RlYnVnZ2luZz4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQ
cm9qZWN0RXh0ZW5zaW9ucz4NCi0gICAgPEJvcmxhbmQuUGVyc29uYWxpdHk+Q1BsdXNQbHVzQnVp
bGRlci5QZXJzb25hbGl0eTwvQm9ybGFuZC5QZXJzb25hbGl0eT4NCi0gICAgPEJvcmxhbmQuUHJv
amVjdFR5cGU+Q3BwU3RhdGljTGlicmFyeTwvQm9ybGFuZC5Qcm9qZWN0VHlwZT4NCi0gICAgPEJv
cmxhbmRQcm9qZWN0Pg0KLTxCb3JsYW5kUHJvamVjdD48Q1BsdXNQbHVzQnVpbGRlci5QZXJzb25h
bGl0eT48VmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkluY2x1ZGVWZXJJbmZvIj5GYWxz
ZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkF1dG9JbmNCdWlsZCI+RmFsc2U8L1Zl
cnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJNYWpvclZlciI+MTwvVmVyc2lvbkluZm8+PFZl
cnNpb25JbmZvIE5hbWU9Ik1pbm9yVmVyIj4wPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFt
ZT0iUmVsZWFzZSI+MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkJ1aWxkIj4wPC9W
ZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iRGVidWciPkZhbHNlPC9WZXJzaW9uSW5mbz48
VmVyc2lvbkluZm8gTmFtZT0iUHJlUmVsZWFzZSI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9u
SW5mbyBOYW1lPSJTcGVjaWFsIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9
IlByaXZhdGUiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iRExMIj5GYWxz
ZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkxvY2FsZSI+MTAzMzwvVmVyc2lvbklu
Zm8+PFZlcnNpb25JbmZvIE5hbWU9IkNvZGVQYWdlIj4xMjUyPC9WZXJzaW9uSW5mbz48L1ZlcnNp
b25JbmZvPjxWZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJDb21wYW55TmFt
ZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJGaWxlRGVzY3JpcHRp
b24iPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iRmlsZVZlcnNpb24i
PjEuMC4wLjA8L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkludGVybmFs
TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbENvcHly
aWdodCI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbFRyYWRl
bWFya3MiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iT3JpZ2luYWxG
aWxlbmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0
TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0VmVy
c2lvbiI+MS4wLjAuMDwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iQ29t
bWVudHMiPjwvVmVyc2lvbkluZm9LZXlzPjwvVmVyc2lvbkluZm9LZXlzPjxEZWJ1Z2dpbmc+PERl
YnVnZ2luZyBOYW1lPSJEZWJ1Z1NvdXJjZURpcnMiPjwvRGVidWdnaW5nPjwvRGVidWdnaW5nPjxQ
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJ1blBhcmFtcyI+PC9QYXJhbWV0ZXJzPjxQYXJh
bWV0ZXJzIE5hbWU9IkxhdW5jaGVyIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iVXNl
TGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkRlYnVnQ1dEIj48
L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iSG9zdEFwcGxpY2F0aW9uIj48L1BhcmFtZXRl
cnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlSG9zdCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJz
IE5hbWU9IlJlbW90ZVBhdGgiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVQ
YXJhbXMiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVMYXVuY2hlciI+PC9Q
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlVzZVJlbW90ZUxhdW5jaGVyIj5GYWxzZTwvUGFy
YW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVDV0QiPjwvUGFyYW1ldGVycz48UGFyYW1l
dGVycyBOYW1lPSJSZW1vdGVEZWJ1ZyI+RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFt
ZT0iRGVidWcgU3ltYm9scyBTZWFyY2ggUGF0aCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IkxvYWRBbGxTeW1ib2xzIj5UcnVlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9Ikxv
YWRVbnNwZWNpZmllZFN5bWJvbHMiPkZhbHNlPC9QYXJhbWV0ZXJzPjwvUGFyYW1ldGVycz48RXhj
bHVkZWRfUGFja2FnZXM+DQotICAgICAgDQotICAgICAgDQotICAgICAgPEV4Y2x1ZGVkX1BhY2th
Z2VzIE5hbWU9IiQoQkRTKVxiaW5cYmNib2ZmaWNlMmsxMDAuYnBsIj5Db2RlR2VhciBDKytCdWls
ZGVyIE9mZmljZSAyMDAwIFNlcnZlcnMgUGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQotICAg
ICAgPEV4Y2x1ZGVkX1BhY2thZ2VzIE5hbWU9IiQoQkRTKVxiaW5cYmNib2ZmaWNleHAxMDAuYnBs
Ij5Db2RlR2VhciBDKytCdWlsZGVyIE9mZmljZSBYUCBTZXJ2ZXJzIFBhY2thZ2U8L0V4Y2x1ZGVk
X1BhY2thZ2VzPg0KLSAgICA8L0V4Y2x1ZGVkX1BhY2thZ2VzPjxMaW5rZXI+PExpbmtlciBOYW1l
PSJMaWJQcmVmaXgiPjwvTGlua2VyPjxMaW5rZXIgTmFtZT0iTGliU3VmZml4Ij48L0xpbmtlcj48
TGlua2VyIE5hbWU9IkxpYlZlcnNpb24iPjwvTGlua2VyPjwvTGlua2VyPjxQcm9qZWN0UHJvcGVy
dGllcz48UHJvamVjdFByb3BlcnRpZXMgTmFtZT0iQXV0b1Nob3dEZXBzIj5GYWxzZTwvUHJvamVj
dFByb3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5hbWU9Ik1hbmFnZVBhdGhzIj5UcnVlPC9Q
cm9qZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRpZXMgTmFtZT0iVmVyaWZ5UGFja2FnZXMi
PlRydWU8L1Byb2plY3RQcm9wZXJ0aWVzPjwvUHJvamVjdFByb3BlcnRpZXM+PEhpc3RvcnlMaXN0
c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJDb3VudCI+
MzwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRo
IE5hbWU9Ikl0ZW0wIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQo
QkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5caW5jbHVkZTsuLjwvSGlzdG9yeUxpc3RzX2hsSW5j
bHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0xIj4kKEJEUylc
aW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxz
cmM7Li5caW5jbHVkZTsuLjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0
c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0yIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVk
ZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5cc3JjOy4uXGluY2x1ZGU8
L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+
PEhpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19M
aWJyYXJ5UGF0aCBOYW1lPSJDb3VudCI+MTwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBh
dGg+PEhpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0wIj4kKEJEUylc
bGliOyQoQkRTKVxsaWJcb2JqOyQoQkRTKVxsaWJccHNkazwvSGlzdG9yeUxpc3RzX2hsSUxJTktf
TGlicmFyeVBhdGg+PC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxp
c3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJDb3VudCI+MTwvSGlz
dG9yeUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJJdGVtMCI+
Tk9fU1RSSUNUPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjwvSGlzdG9yeUxpc3RzX2hsRGVmaW5l
cz48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdl
U2l6ZSBOYW1lPSJDb3VudCI+MTwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9y
eUxpc3RzX2hsVExJQl9QYWdlU2l6ZSBOYW1lPSJJdGVtMCI+MzI8L0hpc3RvcnlMaXN0c19obFRM
SUJfUGFnZVNpemU+PEhpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemUgTmFtZT0iSXRlbTEiPjE2
PC9IaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplPjwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdl
U2l6ZT48L0NQbHVzUGx1c0J1aWxkZXIuUGVyc29uYWxpdHk+PC9Cb3JsYW5kUHJvamVjdD48L0Jv
cmxhbmRQcm9qZWN0Pg0KLSAgPC9Qcm9qZWN0RXh0ZW5zaW9ucz4NCi0gIDxJbXBvcnQgUHJvamVj
dD0iJChNU0J1aWxkQmluUGF0aClcQm9ybGFuZC5DcHAuVGFyZ2V0cyIgLz4NCi0gIDxJdGVtR3Jv
dXA+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVz
dC5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj4zPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQot
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4NCi0g
ICAgICA8QnVpbGRPcmRlcj40PC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25l
IEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtcGFyYW0tdGVzdC5oIj4NCi0gICAgICA8
QnVpbGRPcmRlcj41PC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1
ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3Qtc3BpLmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjY8
L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVk
ZVxndGVzdFxndGVzdC10ZXN0LXBhcnQuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+NzwvQnVpbGRP
cmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0
XGd0ZXN0LXR5cGVkLXRlc3QuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+ODwvQnVpbGRPcmRlcj4N
Ci0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0
LmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjA8L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0g
ICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCI+DQot
ICAgICAgPEJ1aWxkT3JkZXI+MTwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0X3Byb2QuaCI+DQotICAgICAgPEJ1aWxk
T3JkZXI+MjwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIu
LlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+DQot
ICAgICAgPEJ1aWxkT3JkZXI+OTwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LWZpbGVwYXRoLmgiPg0K
LSAgICAgIDxCdWlsZE9yZGVyPjEwPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxO
b25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwuaCI+
DQotICAgICAgPEJ1aWxkT3JkZXI+MTE8L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0gICAg
PE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1saW5rZWRfcHRy
LmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjEyPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQot
ICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+MTQ8L0J1aWxkT3JkZXI+DQot
ICAgIDwvTm9uZT4NCi0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5h
bFxndGVzdC1wYXJhbS11dGlsLmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjEzPC9CdWlsZE9yZGVy
Pg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50
ZXJuYWxcZ3Rlc3QtcG9ydC5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj4xNTwvQnVpbGRPcmRlcj4N
Ci0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LXN0cmluZy5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj4xNjwvQnVpbGRPcmRlcj4N
Ci0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVy
bmFsXGd0ZXN0LXR5cGUtdXRpbC5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj4xNzwvQnVpbGRPcmRl
cj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Q3BwQ29tcGlsZSBJbmNsdWRlPSJndGVzdF9hbGwuY2Mi
Pg0KLSAgICAgIDxCdWlsZE9yZGVyPjE4PC9CdWlsZE9yZGVyPg0KLSAgICA8L0NwcENvbXBpbGU+
DQotICAgIDxCdWlsZENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWciPg0KLSAgICAgIDxLZXk+
Q2ZnXzE8L0tleT4NCi0gICAgPC9CdWlsZENvbmZpZ3VyYXRpb24+DQotICAgIDxCdWlsZENvbmZp
Z3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZSI+DQotICAgICAgPEtleT5DZmdfMjwvS2V5Pg0KLSAg
ICA8L0J1aWxkQ29uZmlndXJhdGlvbj4NCi0gIDwvSXRlbUdyb3VwPg0KLTwvUHJvamVjdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vh
ci9ndGVzdC5ncm91cHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdC5ncm91cHByb2oK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZjMxY2FiNjQwYmI0NTQwODEyZjg4ZjZm
YTBmYWNjNmYwMTBkYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qCisrKyAvZGV2L251bGwK
QEAgLTEsNTQgKzAsMCBAQAot77u/PFByb2plY3QgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jv
c29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQotICA8UHJvcGVydHlHcm91cD4NCi0g
ICAgPFByb2plY3RHdWlkPntjMWQ5MjNlMC02Y2JhLTQzMzItOWI2Zi0zNDIwYWNiZjUwOTF9PC9Q
cm9qZWN0R3VpZD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtR3JvdXAgLz4NCi0gIDxJ
dGVtR3JvdXA+DQotICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJndGVzdC5jYnByb2oiIC8+DQotICAg
IDxQcm9qZWN0cyBJbmNsdWRlPSJndGVzdF9tYWluLmNicHJvaiIgLz4NCi0gICAgPFByb2plY3Rz
IEluY2x1ZGU9Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIgLz4NCi0gIDwvSXRlbUdyb3VwPg0KLSAg
PFByb2plY3RFeHRlbnNpb25zPg0KLSAgICA8Qm9ybGFuZC5QZXJzb25hbGl0eT5EZWZhdWx0LlBl
cnNvbmFsaXR5PC9Cb3JsYW5kLlBlcnNvbmFsaXR5Pg0KLSAgICA8Qm9ybGFuZC5Qcm9qZWN0VHlw
ZSAvPg0KLSAgICA8Qm9ybGFuZFByb2plY3Q+DQotPEJvcmxhbmRQcm9qZWN0IHhtbG5zPSIiPjxE
ZWZhdWx0LlBlcnNvbmFsaXR5PjwvRGVmYXVsdC5QZXJzb25hbGl0eT48L0JvcmxhbmRQcm9qZWN0
PjwvQm9ybGFuZFByb2plY3Q+DQotICA8L1Byb2plY3RFeHRlbnNpb25zPg0KLSAgPFRhcmdldCBO
YW1lPSJndGVzdCI+DQotICAgIDxNU0J1aWxkIFByb2plY3RzPSJndGVzdC5jYnByb2oiIFRhcmdl
dHM9IiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdldCBOYW1lPSJndGVzdDpDbGVhbiI+DQot
ICAgIDxNU0J1aWxkIFByb2plY3RzPSJndGVzdC5jYnByb2oiIFRhcmdldHM9IkNsZWFuIiAvPg0K
LSAgPC9UYXJnZXQ+DQotICA8VGFyZ2V0IE5hbWU9Imd0ZXN0Ok1ha2UiPg0KLSAgICA8TVNCdWls
ZCBQcm9qZWN0cz0iZ3Rlc3QuY2Jwcm9qIiBUYXJnZXRzPSJNYWtlIiAvPg0KLSAgPC9UYXJnZXQ+
DQotICA8VGFyZ2V0IE5hbWU9Imd0ZXN0X21haW4iPg0KLSAgICA8TVNCdWlsZCBQcm9qZWN0cz0i
Z3Rlc3RfbWFpbi5jYnByb2oiIFRhcmdldHM9IiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdl
dCBOYW1lPSJndGVzdF9tYWluOkNsZWFuIj4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0
X21haW4uY2Jwcm9qIiBUYXJnZXRzPSJDbGVhbiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdl
dCBOYW1lPSJndGVzdF9tYWluOk1ha2UiPg0KLSAgICA8TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3Rf
bWFpbi5jYnByb2oiIFRhcmdldHM9Ik1ha2UiIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQg
TmFtZT0iZ3Rlc3RfdW5pdHRlc3QiPg0KLSAgICA8TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3RfdW5p
dHRlc3QuY2Jwcm9qIiBUYXJnZXRzPSIiIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQgTmFt
ZT0iZ3Rlc3RfdW5pdHRlc3Q6Q2xlYW4iPg0KLSAgICA8TVNCdWlsZCBQcm9qZWN0cz0iZ3Rlc3Rf
dW5pdHRlc3QuY2Jwcm9qIiBUYXJnZXRzPSJDbGVhbiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRh
cmdldCBOYW1lPSJndGVzdF91bml0dGVzdDpNYWtlIj4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9
Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIgVGFyZ2V0cz0iTWFrZSIgLz4NCi0gIDwvVGFyZ2V0Pg0K
LSAgPFRhcmdldCBOYW1lPSJCdWlsZCI+DQotICAgIDxDYWxsVGFyZ2V0IFRhcmdldHM9Imd0ZXN0
O2d0ZXN0X21haW47Z3Rlc3RfdW5pdHRlc3QiIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQg
TmFtZT0iQ2xlYW4iPg0KLSAgICA8Q2FsbFRhcmdldCBUYXJnZXRzPSJndGVzdDpDbGVhbjtndGVz
dF9tYWluOkNsZWFuO2d0ZXN0X3VuaXR0ZXN0OkNsZWFuIiAvPg0KLSAgPC9UYXJnZXQ+DQotICA8
VGFyZ2V0IE5hbWU9Ik1ha2UiPg0KLSAgICA8Q2FsbFRhcmdldCBUYXJnZXRzPSJndGVzdDpNYWtl
O2d0ZXN0X21haW46TWFrZTtndGVzdF91bml0dGVzdDpNYWtlIiAvPg0KLSAgPC9UYXJnZXQ+DQot
ICA8SW1wb3J0IENvbmRpdGlvbj0iRXhpc3RzKCckKE1TQnVpbGRCaW5QYXRoKVxCb3JsYW5kLkdy
b3VwLlRhcmdldHMnKSIgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcQm9ybGFuZC5Hcm91cC5U
YXJnZXRzIiAvPg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9j
b2RlZ2Vhci9ndGVzdF9hbGwuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMWIy
ZDgwZTgzZWM3Y2QwZmRmN2RjNjcxMjcyZGM1NGY2ZTlmMGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfYWxs
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuDQotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0vLw0KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0K
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUNCi0vLyBtZXQ6DQotLy8NCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4NCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlDQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCi0vLyBkaXN0cmlidXRp
b24uDQotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cw0KLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCi0vLw0KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMNCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVA0KLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsDQotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVA0KLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0K
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQNCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KLS8vDQot
Ly8gQXV0aG9yOiBKb3NoIEtlbGxleSAoam9zaGtlbEBnbWFpbC5jb20pDQotLy8NCi0vLyBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkNCi0vLw0KLS8vIEMrK0J1aWxk
ZXIncyBJREUgY2Fubm90IGJ1aWxkIGEgc3RhdGljIGxpYnJhcnkgZnJvbSBmaWxlcyB3aXRoIGh5
cGhlbnMNCi0vLyBpbiB0aGVpciBuYW1lLiAgU2VlIGh0dHA6Ly9xYy5jb2RlZ2Vhci5jb20vd2Mv
cWNtYWluLmFzcHg/ZD03MDk3NyAuDQotLy8gVGhpcyBmaWxlIHNlcnZlcyBhcyBhIHdvcmthcm91
bmQuDQotDQotI2luY2x1ZGUgInNyYy9ndGVzdC1hbGwuY2MiDQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0
X2xpbmsuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOGVjY2QxOWI3ZGFmYTMy
YjUyOTM4MGI3MDkyMzhjOWUzYTM2MmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYworKysgL2Rl
di9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotLy8NCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlDQotLy8gbWV0Og0KLS8vDQotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCi0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQ0KLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXINCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQotLy8gZGlzdHJpYnV0aW9uLg0KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMN
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQ0KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uDQotLy8NCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QN
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1INCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QNCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUDQotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFDQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCi0vLw0KLS8vIEF1dGhvcjog
Sm9zaCBLZWxsZXkgKGpvc2hrZWxAZ21haWwuY29tKQ0KLS8vDQotLy8gR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpDQotLy8NCi0vLyBMaW5rcyBndGVzdC5saWIgYW5k
IGd0ZXN0X21haW4ubGliIGludG8gdGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLg0K
LS8vIFRoaXMgbWVhbnMgdGhhdCB0aGVzZSBsaWJyYXJpZXMgY2FuJ3QgYmUgcmVuYW1lZCwgYnV0
IGl0J3MgdGhlIG9ubHkgd2F5IHRvDQotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVh
c2UgdGVzdCBidWlsZHMgYXJlIGxpbmtlZCBhZ2FpbnN0IHRoZQ0KLS8vIGFwcHJvcHJpYXRlIERl
YnVnIG9yIFJlbGVhc2UgYnVpbGQgb2YgdGhlIGxpYnJhcmllcy4NCi0NCi0jcHJhZ21hIGxpbmsg
Imd0ZXN0LmxpYiINCi0jcHJhZ21hIGxpbmsgImd0ZXN0X21haW4ubGliIg0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9qIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29k
ZWdlYXIvZ3Rlc3RfbWFpbi5jYnByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3
NmNlMTM5OGZmMzkzMzMzMzc3MjVmNDQ2NmRhNTYzZTk4MzM1ODEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3Rf
bWFpbi5jYnByb2oKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi3vu788P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTxQcm9qZWN0IHhtbG5zPSJodHRwOi8vc2No
ZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KLSAgPFByb3BlcnR5
R3JvdXA+DQotICAgIDxQcm9qZWN0R3VpZD57YmNhMzdhNzItNWIwNy00NmNmLWI0NGUtODlmOGUw
NjQ1MWEyfTwvUHJvamVjdEd1aWQ+DQotICAgIDxDb25maWcgQ29uZGl0aW9uPSInJChDb25maWcp
Jz09JyciPlJlbGVhc2U8L0NvbmZpZz4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PSdCYXNlJyBvciAnJChCYXNlKSchPScnIj4N
Ci0gICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0
eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PSdEZWJ1Zycgb3IgJyQoQ2ZnXzEpJyE9Jyci
Pg0KLSAgICA8QmFzZT50cnVlPC9CYXNlPg0KLSAgICA8Q2ZnXzE+dHJ1ZTwvQ2ZnXzE+DQotICAg
IDxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J1JlbGVhc2UnIG9yICckKENmZ18y
KSchPScnIj4NCi0gICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCi0gICAgPENmZ18yPnRydWU8L0NmZ18y
Pg0KLSAgICA8Q2ZnUGFyZW50PkJhc2U8L0NmZ1BhcmVudD4NCi0gIDwvUHJvcGVydHlHcm91cD4N
Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQmFzZSknIT0nJyI+DQotICAgIDxCQ0Nf
T3B0aW1pemVGb3JTcGVlZD50cnVlPC9CQ0NfT3B0aW1pemVGb3JTcGVlZD4NCi0gICAgPE91dHB1
dEV4dD5saWI8L091dHB1dEV4dD4NCi0gICAgPERDQ19DQnVpbGRlck91dHB1dD5KUEhORTwvREND
X0NCdWlsZGVyT3V0cHV0Pg0KLSAgICA8RGVmaW5lcz5OT19TVFJJQ1Q8L0RlZmluZXM+DQotICAg
IDxEeW5hbWljUlRMPnRydWU8L0R5bmFtaWNSVEw+DQotICAgIDxVc2VQYWNrYWdlcz50cnVlPC9V
c2VQYWNrYWdlcz4NCi0gICAgPFByb2plY3RUeXBlPkNwcFN0YXRpY0xpYnJhcnk8L1Byb2plY3RU
eXBlPg0KLSAgICA8QkNDX0NQUENvbXBpbGVBbHdheXM+dHJ1ZTwvQkNDX0NQUENvbXBpbGVBbHdh
eXM+DQotICAgIDxQYWNrYWdlSW1wb3J0cz5ydGwuYnBpO3ZjbC5icGk7YmNiaWUuYnBpO3ZjbHgu
YnBpO3ZjbGFjdG5iYW5kLmJwaTt4bWxydGwuYnBpO2JjYnNtcC5icGk7ZGJydGwuYnBpO3ZjbGRi
LmJwaTtiZGVydGwuYnBpO3ZjbGRieC5icGk7ZHNuYXAuYnBpO2RzbmFwY29uLmJwaTt2Y2xpYi5i
cGk7aWJ4cHJlc3MuYnBpO2Fkb3J0bC5icGk7ZGJ4Y2RzLmJwaTtkYmV4cHJlc3MuYnBpO0RieENv
bW1vbkRyaXZlci5icGk7d2Vic25hcC5icGk7dmNsaWUuYnBpO3dlYmRzbmFwLmJwaTtpbmV0LmJw
aTtpbmV0ZGJiZGUuYnBpO2luZXRkYnhwcmVzcy5icGk7c29hcHJ0bC5icGk7UmF2ZTc1VkNMLmJw
aTt0ZWVVSS5icGk7dGVlLmJwaTt0ZWVkYi5icGk7SW5keUNvcmUuYnBpO0luZHlTeXN0ZW0uYnBp
O0luZHlQcm90b2NvbHMuYnBpO0ludHJhd2ViREJfOTBfMTAwLmJwaTtJbnRyYXdlYl85MF8xMDAu
YnBpO2RjbFppcEZvcmdlZDExLmJwaTt2Y2xaaXBGb3JnZWQxMS5icGk7R1IzMl9CRFMyMDA2LmJw
aTtHUjMyX0RTR05fQkRTMjAwNi5icGk7SmNsLmJwaTtKY2xWY2wuYnBpO0p2Q29yZUQxMVIuYnBp
O0p2U3lzdGVtRDExUi5icGk7SnZTdGRDdHJsc0QxMVIuYnBpO0p2QXBwRnJtRDExUi5icGk7SnZC
YW5kc0QxMVIuYnBpO0p2REJEMTFSLmJwaTtKdkRsZ3NEMTFSLmJwaTtKdkJERUQxMVIuYnBpO0p2
Q21wRDExUi5icGk7SnZDcnlwdEQxMVIuYnBpO0p2Q3RybHNEMTFSLmJwaTtKdkN1c3RvbUQxMVIu
YnBpO0p2RG9ja2luZ0QxMVIuYnBpO0p2RG90TmV0Q3RybHNEMTFSLmJwaTtKdkVESUQxMVIuYnBp
O0p2R2xvYnVzRDExUi5icGk7SnZITUlEMTFSLmJwaTtKdkludGVycHJldGVyRDExUi5icGk7SnZK
YW5zRDExUi5icGk7SnZNYW5hZ2VkVGhyZWFkc0QxMVIuYnBpO0p2TU1EMTFSLmJwaTtKdk5ldEQx
MVIuYnBpO0p2UGFnZUNvbXBzRDExUi5icGk7SnZQbHVnaW5EMTFSLmJwaTtKdlByaW50UHJldmll
d0QxMVIuYnBpO0p2UnVudGltZURlc2lnbkQxMVIuYnBpO0p2VGltZUZyYW1ld29ya0QxMVIuYnBp
O0p2VmFsaWRhdG9yc0QxMVIuYnBpO0p2V2l6YXJkRDExUi5icGk7SnZYUEN0cmxzRDExUi5icGk7
VmNsU21wLmJwaTtDRXhjZXB0aW9uRXhwZXJ0MTEuYnBpPC9QYWNrYWdlSW1wb3J0cz4NCi0gICAg
PEJDQ193cGFyPmZhbHNlPC9CQ0Nfd3Bhcj4NCi0gICAgPEluY2x1ZGVQYXRoPiQoQkRTKVxpbmNs
dWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXHNyYzsu
LlxpbmNsdWRlOy4uPC9JbmNsdWRlUGF0aD4NCi0gICAgPEFsbFBhY2thZ2VMaWJzPnJ0bC5saWI7
dmNsLmxpYjwvQWxsUGFja2FnZUxpYnM+DQotICAgIDxUTElCX1BhZ2VTaXplPjMyPC9UTElCX1Bh
Z2VTaXplPg0KLSAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYjskKEJEUylcbGliXG9i
ajskKEJEUylcbGliXHBzZGs8L0lMSU5LX0xpYnJhcnlQYXRoPg0KLSAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMSknIT0nJyI+DQotICAgIDxC
Q0NfT3B0aW1pemVGb3JTcGVlZD5mYWxzZTwvQkNDX09wdGltaXplRm9yU3BlZWQ+DQotICAgIDxE
Q0NfT3B0aW1pemU+ZmFsc2U8L0RDQ19PcHRpbWl6ZT4NCi0gICAgPERDQ19EZWJ1Z0luZm9JbkV4
ZT50cnVlPC9EQ0NfRGVidWdJbmZvSW5FeGU+DQotICAgIDxEZWZpbmVzPl9ERUJVRzskKERlZmlu
ZXMpPC9EZWZpbmVzPg0KLSAgICA8SUxJTktfRnVsbERlYnVnSW5mbz50cnVlPC9JTElOS19GdWxs
RGVidWdJbmZvPg0KLSAgICA8QkNDX0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPmZhbHNlPC9CQ0Nf
SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQotICAgIDxJTElOS19EaXNhYmxlSW5jcmVtZW50YWxM
aW5raW5nPnRydWU8L0lMSU5LX0Rpc2FibGVJbmNyZW1lbnRhbExpbmtpbmc+DQotICAgIDxCQ0Nf
VXNlUmVnaXN0ZXJWYXJpYWJsZXM+Tm9uZTwvQkNDX1VzZVJlZ2lzdGVyVmFyaWFibGVzPg0KLSAg
ICA8RENDX0RlZmluZT5ERUJVRzwvRENDX0RlZmluZT4NCi0gICAgPEJDQ19EZWJ1Z0xpbmVOdW1i
ZXJzPnRydWU8L0JDQ19EZWJ1Z0xpbmVOdW1iZXJzPg0KLSAgICA8SW50ZXJtZWRpYXRlT3V0cHV0
RGlyPkRlYnVnPC9JbnRlcm1lZGlhdGVPdXRwdXREaXI+DQotICAgIDxUQVNNX0Rpc3BsYXlTb3Vy
Y2VMaW5lcz50cnVlPC9UQVNNX0Rpc3BsYXlTb3VyY2VMaW5lcz4NCi0gICAgPEJDQ19TdGFja0Zy
YW1lcz50cnVlPC9CQ0NfU3RhY2tGcmFtZXM+DQotICAgIDxCQ0NfRGlzYWJsZU9wdGltaXphdGlv
bnM+dHJ1ZTwvQkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPg0KLSAgICA8SUxJTktfTGlicmFyeVBh
dGg+JChCRFMpXGxpYlxkZWJ1ZzskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJTktfTGlicmFyeVBh
dGg+DQotICAgIDxUQVNNX0RlYnVnZ2luZz5GdWxsPC9UQVNNX0RlYnVnZ2luZz4NCi0gICAgPEJD
Q19Tb3VyY2VEZWJ1Z2dpbmdPbj50cnVlPC9CQ0NfU291cmNlRGVidWdnaW5nT24+DQotICA8L1By
b3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENmZ18yKSchPScn
Ij4NCi0gICAgPERlZmluZXM+TkRFQlVHOyQoRGVmaW5lcyk8L0RlZmluZXM+DQotICAgIDxJbnRl
cm1lZGlhdGVPdXRwdXREaXI+UmVsZWFzZTwvSW50ZXJtZWRpYXRlT3V0cHV0RGlyPg0KLSAgICA8
SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYlxyZWxlYXNlOyQoSUxJTktfTGlicmFyeVBhdGgp
PC9JTElOS19MaWJyYXJ5UGF0aD4NCi0gICAgPFRBU01fRGVidWdnaW5nPk5vbmU8L1RBU01fRGVi
dWdnaW5nPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb2plY3RFeHRlbnNpb25zPg0KLSAg
ICA8Qm9ybGFuZC5QZXJzb25hbGl0eT5DUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PC9Cb3Js
YW5kLlBlcnNvbmFsaXR5Pg0KLSAgICA8Qm9ybGFuZC5Qcm9qZWN0VHlwZT5DcHBTdGF0aWNMaWJy
YXJ5PC9Cb3JsYW5kLlByb2plY3RUeXBlPg0KLSAgICA8Qm9ybGFuZFByb2plY3Q+DQotPEJvcmxh
bmRQcm9qZWN0PjxDUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PjxWZXJzaW9uSW5mbz48VmVy
c2lvbkluZm8gTmFtZT0iSW5jbHVkZVZlckluZm8iPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lv
bkluZm8gTmFtZT0iQXV0b0luY0J1aWxkIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZv
IE5hbWU9Ik1ham9yVmVyIj4xPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iTWlub3JW
ZXIiPjA8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJSZWxlYXNlIj4wPC9WZXJzaW9u
SW5mbz48VmVyc2lvbkluZm8gTmFtZT0iQnVpbGQiPjA8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5m
byBOYW1lPSJEZWJ1ZyI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJQcmVS
ZWxlYXNlIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlNwZWNpYWwiPkZh
bHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUHJpdmF0ZSI+RmFsc2U8L1ZlcnNp
b25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJETEwiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lv
bkluZm8gTmFtZT0iTG9jYWxlIj4xMDMzPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0i
Q29kZVBhZ2UiPjEyNTI8L1ZlcnNpb25JbmZvPjwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkNvbXBhbnlOYW1lIj48L1ZlcnNpb25JbmZvS2V5cz48
VmVyc2lvbkluZm9LZXlzIE5hbWU9IkZpbGVEZXNjcmlwdGlvbiI+PC9WZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJGaWxlVmVyc2lvbiI+MS4wLjAuMDwvVmVyc2lvbkluZm9L
ZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iSW50ZXJuYWxOYW1lIj48L1ZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkxlZ2FsQ29weXJpZ2h0Ij48L1ZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkxlZ2FsVHJhZGVtYXJrcyI+PC9WZXJzaW9uSW5mb0tl
eXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJPcmlnaW5hbEZpbGVuYW1lIj48L1ZlcnNpb25JbmZv
S2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IlByb2R1Y3ROYW1lIj48L1ZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IlByb2R1Y3RWZXJzaW9uIj4xLjAuMC4wPC9WZXJzaW9u
SW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJDb21tZW50cyI+PC9WZXJzaW9uSW5mb0tl
eXM+PC9WZXJzaW9uSW5mb0tleXM+PERlYnVnZ2luZz48RGVidWdnaW5nIE5hbWU9IkRlYnVnU291
cmNlRGlycyI+PC9EZWJ1Z2dpbmc+PC9EZWJ1Z2dpbmc+PFBhcmFtZXRlcnM+PFBhcmFtZXRlcnMg
TmFtZT0iUnVuUGFyYW1zIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTGF1bmNoZXIi
PjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJVc2VMYXVuY2hlciI+RmFsc2U8L1BhcmFt
ZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iRGVidWdDV0QiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVy
cyBOYW1lPSJIb3N0QXBwbGljYXRpb24iPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJS
ZW1vdGVIb3N0Ij48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlUGF0aCI+PC9Q
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZVBhcmFtcyI+PC9QYXJhbWV0ZXJzPjxQ
YXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUxhdW5jaGVyIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMg
TmFtZT0iVXNlUmVtb3RlTGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IlJlbW90ZUNXRCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZURlYnVn
Ij5GYWxzZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJEZWJ1ZyBTeW1ib2xzIFNlYXJj
aCBQYXRoIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZEFsbFN5bWJvbHMiPlRy
dWU8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZFVuc3BlY2lmaWVkU3ltYm9scyI+
RmFsc2U8L1BhcmFtZXRlcnM+PC9QYXJhbWV0ZXJzPjxFeGNsdWRlZF9QYWNrYWdlcz4NCi0gICAg
ICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0iJChCRFMpXGJpblxiY2JvZmZpY2UyazEwMC5icGwi
PkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNlIDIwMDAgU2VydmVycyBQYWNrYWdlPC9FeGNsdWRl
ZF9QYWNrYWdlcz4NCi0gICAgICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0iJChCRFMpXGJpblxi
Y2JvZmZpY2V4cDEwMC5icGwiPkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNlIFhQIFNlcnZlcnMg
UGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQotICAgIDwvRXhjbHVkZWRfUGFja2FnZXM+PExp
bmtlcj48TGlua2VyIE5hbWU9IkxpYlByZWZpeCI+PC9MaW5rZXI+PExpbmtlciBOYW1lPSJMaWJT
dWZmaXgiPjwvTGlua2VyPjxMaW5rZXIgTmFtZT0iTGliVmVyc2lvbiI+PC9MaW5rZXI+PC9MaW5r
ZXI+PFByb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGllcyBOYW1lPSJBdXRvU2hvd0Rl
cHMiPkZhbHNlPC9Qcm9qZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRpZXMgTmFtZT0iTWFu
YWdlUGF0aHMiPlRydWU8L1Byb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGllcyBOYW1l
PSJWZXJpZnlQYWNrYWdlcyI+VHJ1ZTwvUHJvamVjdFByb3BlcnRpZXM+PC9Qcm9qZWN0UHJvcGVy
dGllcz48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQ
YXRoIE5hbWU9IkNvdW50Ij4zPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxp
c3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTAiPiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNs
dWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXHNyYzsuLlxpbmNsdWRlOy4uPC9I
aXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFt
ZT0iSXRlbTEiPiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMp
XGluY2x1ZGVcdmNsOy4uXHNyYzsuLlxpbmNsdWRlOy4uPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRl
UGF0aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTIiPiQoQkRTKVxpbmNs
dWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXHNyYzsu
LlxzcmM7Li5caW5jbHVkZTwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PC9IaXN0b3J5TGlz
dHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PEhpc3Rv
cnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9IkNvdW50Ij4xPC9IaXN0b3J5TGlzdHNf
aGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGggTmFt
ZT0iSXRlbTAiPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrPC9IaXN0
b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48L0hpc3RvcnlMaXN0c19obElMSU5LX0xpYnJh
cnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzIE5h
bWU9IkNvdW50Ij4xPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxEZWZp
bmVzIE5hbWU9Ikl0ZW0wIj5OT19TVFJJQ1Q8L0hpc3RvcnlMaXN0c19obERlZmluZXM+PC9IaXN0
b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplPjxIaXN0b3J5
TGlzdHNfaGxUTElCX1BhZ2VTaXplIE5hbWU9IkNvdW50Ij4xPC9IaXN0b3J5TGlzdHNfaGxUTElC
X1BhZ2VTaXplPjxIaXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplIE5hbWU9Ikl0ZW0wIj4zMjwv
SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6
ZSBOYW1lPSJJdGVtMSI+MTY8L0hpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemU+PC9IaXN0b3J5
TGlzdHNfaGxUTElCX1BhZ2VTaXplPjwvQ1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eT48L0Jv
cmxhbmRQcm9qZWN0PjwvQm9ybGFuZFByb2plY3Q+DQotICA8L1Byb2plY3RFeHRlbnNpb25zPg0K
LSAgPEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxCb3JsYW5kLkNwcC5UYXJnZXRz
IiAvPg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPENwcENvbXBpbGUgSW5jbHVkZT0iLi5cc3JjXGd0
ZXN0X21haW4uY2MiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjA8L0J1aWxkT3JkZXI+DQotICAgIDwv
Q3BwQ29tcGlsZT4NCi0gICAgPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1ZyI+DQot
ICAgICAgPEtleT5DZmdfMTwvS2V5Pg0KLSAgICA8L0J1aWxkQ29uZmlndXJhdGlvbj4NCi0gICAg
PEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlIj4NCi0gICAgICA8S2V5PkNmZ18y
PC9LZXk+DQotICAgIDwvQnVpbGRDb25maWd1cmF0aW9uPg0KLSAgPC9JdGVtR3JvdXA+DQotPC9Q
cm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0
LmNicHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvagpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM1ZGI4ZTRkYTU5NDU3ZmM4ZWZhYTJkNmNjZWE4
N2M2Yjg0ZGJkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2oKKysrIC9kZXYvbnVs
bApAQCAtMSw4OCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYt
OCI/Pg0KLTxQcm9qZWN0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVs
b3Blci9tc2J1aWxkLzIwMDMiPg0KLSAgPFByb3BlcnR5R3JvdXA+DQotICAgIDxQcm9qZWN0R3Vp
ZD57ZWVhNjMzOTMtNWFjNS00YjljLTg5MDktZDc1ZmVmMmRhYTQxfTwvUHJvamVjdEd1aWQ+DQot
ICAgIDxDb25maWcgQ29uZGl0aW9uPSInJChDb25maWcpJz09JyciPlJlbGVhc2U8L0NvbmZpZz4N
Ci0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlnKSc9PSdCYXNlJyBvciAnJChCYXNlKSchPScnIj4NCi0gICAgPEJhc2U+dHJ1ZTwvQmFzZT4N
Ci0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29u
ZmlnKSc9PSdEZWJ1Zycgb3IgJyQoQ2ZnXzEpJyE9JyciPg0KLSAgICA8QmFzZT50cnVlPC9CYXNl
Pg0KLSAgICA8Q2ZnXzE+dHJ1ZTwvQ2ZnXzE+DQotICAgIDxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFy
ZW50Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWcpJz09J1JlbGVhc2UnIG9yICckKENmZ18yKSchPScnIj4NCi0gICAgPEJhc2U+dHJ1
ZTwvQmFzZT4NCi0gICAgPENmZ18yPnRydWU8L0NmZ18yPg0KLSAgICA8Q2ZnUGFyZW50PkJhc2U8
L0NmZ1BhcmVudD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRp
dGlvbj0iJyQoQmFzZSknIT0nJyI+DQotICAgIDxPdXRwdXRFeHQ+ZXhlPC9PdXRwdXRFeHQ+DQot
ICAgIDxCQ0NfT3B0aW1pemVGb3JTcGVlZD50cnVlPC9CQ0NfT3B0aW1pemVGb3JTcGVlZD4NCi0g
ICAgPERlZmluZXM+Tk9fU1RSSUNUPC9EZWZpbmVzPg0KLSAgICA8RENDX0NCdWlsZGVyT3V0cHV0
PkpQSE5FPC9EQ0NfQ0J1aWxkZXJPdXRwdXQ+DQotICAgIDxEeW5hbWljUlRMPnRydWU8L0R5bmFt
aWNSVEw+DQotICAgIDxJTElOS19PYmplY3RTZWFyY2hQYXRoPi4uXHRlc3Q8L0lMSU5LX09iamVj
dFNlYXJjaFBhdGg+DQotICAgIDxVc2VQYWNrYWdlcz50cnVlPC9Vc2VQYWNrYWdlcz4NCi0gICAg
PFByb2plY3RUeXBlPkNwcENvbnNvbGVBcHBsaWNhdGlvbjwvUHJvamVjdFR5cGU+DQotICAgIDxO
b1ZDTD50cnVlPC9Ob1ZDTD4NCi0gICAgPEJDQ19DUFBDb21waWxlQWx3YXlzPnRydWU8L0JDQ19D
UFBDb21waWxlQWx3YXlzPg0KLSAgICA8UGFja2FnZUltcG9ydHM+cnRsLmJwaTt2Y2wuYnBpO2Jj
YmllLmJwaTt2Y2x4LmJwaTt2Y2xhY3RuYmFuZC5icGk7eG1scnRsLmJwaTtiY2JzbXAuYnBpO2Ri
cnRsLmJwaTt2Y2xkYi5icGk7YmRlcnRsLmJwaTt2Y2xkYnguYnBpO2RzbmFwLmJwaTtkc25hcGNv
bi5icGk7dmNsaWIuYnBpO2lieHByZXNzLmJwaTthZG9ydGwuYnBpO2RieGNkcy5icGk7ZGJleHBy
ZXNzLmJwaTtEYnhDb21tb25Ecml2ZXIuYnBpO3dlYnNuYXAuYnBpO3ZjbGllLmJwaTt3ZWJkc25h
cC5icGk7aW5ldC5icGk7aW5ldGRiYmRlLmJwaTtpbmV0ZGJ4cHJlc3MuYnBpO3NvYXBydGwuYnBp
O1JhdmU3NVZDTC5icGk7dGVlVUkuYnBpO3RlZS5icGk7dGVlZGIuYnBpO0luZHlDb3JlLmJwaTtJ
bmR5U3lzdGVtLmJwaTtJbmR5UHJvdG9jb2xzLmJwaTtJbnRyYXdlYkRCXzkwXzEwMC5icGk7SW50
cmF3ZWJfOTBfMTAwLmJwaTtKY2wuYnBpO0pjbFZjbC5icGk7SnZDb3JlRDExUi5icGk7SnZTeXN0
ZW1EMTFSLmJwaTtKdlN0ZEN0cmxzRDExUi5icGk7SnZBcHBGcm1EMTFSLmJwaTtKdkJhbmRzRDEx
Ui5icGk7SnZEQkQxMVIuYnBpO0p2RGxnc0QxMVIuYnBpO0p2QkRFRDExUi5icGk7SnZDbXBEMTFS
LmJwaTtKdkNyeXB0RDExUi5icGk7SnZDdHJsc0QxMVIuYnBpO0p2Q3VzdG9tRDExUi5icGk7SnZE
b2NraW5nRDExUi5icGk7SnZEb3ROZXRDdHJsc0QxMVIuYnBpO0p2RURJRDExUi5icGk7SnZHbG9i
dXNEMTFSLmJwaTtKdkhNSUQxMVIuYnBpO0p2SW50ZXJwcmV0ZXJEMTFSLmJwaTtKdkphbnNEMTFS
LmJwaTtKdk1hbmFnZWRUaHJlYWRzRDExUi5icGk7SnZNTUQxMVIuYnBpO0p2TmV0RDExUi5icGk7
SnZQYWdlQ29tcHNEMTFSLmJwaTtKdlBsdWdpbkQxMVIuYnBpO0p2UHJpbnRQcmV2aWV3RDExUi5i
cGk7SnZSdW50aW1lRGVzaWduRDExUi5icGk7SnZUaW1lRnJhbWV3b3JrRDExUi5icGk7SnZWYWxp
ZGF0b3JzRDExUi5icGk7SnZXaXphcmREMTFSLmJwaTtKdlhQQ3RybHNEMTFSLmJwaTtWY2xTbXAu
YnBpPC9QYWNrYWdlSW1wb3J0cz4NCi0gICAgPEJDQ193cGFyPmZhbHNlPC9CQ0Nfd3Bhcj4NCi0g
ICAgPEluY2x1ZGVQYXRoPiQoQkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7
JChCRFMpXGluY2x1ZGVcdmNsOy4uXGluY2x1ZGU7Li5cdGVzdDsuLjwvSW5jbHVkZVBhdGg+DQot
ICAgIDxJTElOS19MaWJyYXJ5UGF0aD4kKEJEUylcbGliOyQoQkRTKVxsaWJcb2JqOyQoQkRTKVxs
aWJccHNkazsuLlx0ZXN0PC9JTElOS19MaWJyYXJ5UGF0aD4NCi0gICAgPE11bHRpdGhyZWFkZWQ+
dHJ1ZTwvTXVsdGl0aHJlYWRlZD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ2ZnXzEpJyE9JyciPg0KLSAgICA8QkNDX09wdGltaXplRm9yU3Bl
ZWQ+ZmFsc2U8L0JDQ19PcHRpbWl6ZUZvclNwZWVkPg0KLSAgICA8RENDX09wdGltaXplPmZhbHNl
PC9EQ0NfT3B0aW1pemU+DQotICAgIDxEQ0NfRGVidWdJbmZvSW5FeGU+dHJ1ZTwvRENDX0RlYnVn
SW5mb0luRXhlPg0KLSAgICA8RGVmaW5lcz5fREVCVUc7JChEZWZpbmVzKTwvRGVmaW5lcz4NCi0g
ICAgPElMSU5LX0Z1bGxEZWJ1Z0luZm8+dHJ1ZTwvSUxJTktfRnVsbERlYnVnSW5mbz4NCi0gICAg
PEJDQ19JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5mYWxzZTwvQkNDX0lubGluZUZ1bmN0aW9uRXhw
YW5zaW9uPg0KLSAgICA8SUxJTktfRGlzYWJsZUluY3JlbWVudGFsTGlua2luZz50cnVlPC9JTElO
S19EaXNhYmxlSW5jcmVtZW50YWxMaW5raW5nPg0KLSAgICA8QkNDX1VzZVJlZ2lzdGVyVmFyaWFi
bGVzPk5vbmU8L0JDQ19Vc2VSZWdpc3RlclZhcmlhYmxlcz4NCi0gICAgPERDQ19EZWZpbmU+REVC
VUc8L0RDQ19EZWZpbmU+DQotICAgIDxCQ0NfRGVidWdMaW5lTnVtYmVycz50cnVlPC9CQ0NfRGVi
dWdMaW5lTnVtYmVycz4NCi0gICAgPEludGVybWVkaWF0ZU91dHB1dERpcj5EZWJ1ZzwvSW50ZXJt
ZWRpYXRlT3V0cHV0RGlyPg0KLSAgICA8VEFTTV9EaXNwbGF5U291cmNlTGluZXM+dHJ1ZTwvVEFT
TV9EaXNwbGF5U291cmNlTGluZXM+DQotICAgIDxCQ0NfU3RhY2tGcmFtZXM+dHJ1ZTwvQkNDX1N0
YWNrRnJhbWVzPg0KLSAgICA8QkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPnRydWU8L0JDQ19EaXNh
YmxlT3B0aW1pemF0aW9ucz4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWJcZGVi
dWc7JChJTElOS19MaWJyYXJ5UGF0aCk8L0lMSU5LX0xpYnJhcnlQYXRoPg0KLSAgICA8VEFTTV9E
ZWJ1Z2dpbmc+RnVsbDwvVEFTTV9EZWJ1Z2dpbmc+DQotICAgIDxCQ0NfU291cmNlRGVidWdnaW5n
T24+dHJ1ZTwvQkNDX1NvdXJjZURlYnVnZ2luZ09uPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAg
PFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMiknIT0nJyI+DQotICAgIDxEZWZpbmVz
Pk5ERUJVRzskKERlZmluZXMpPC9EZWZpbmVzPg0KLSAgICA8SW50ZXJtZWRpYXRlT3V0cHV0RGly
PlJlbGVhc2U8L0ludGVybWVkaWF0ZU91dHB1dERpcj4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRo
PiQoQkRTKVxsaWJccmVsZWFzZTskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJTktfTGlicmFyeVBh
dGg+DQotICAgIDxUQVNNX0RlYnVnZ2luZz5Ob25lPC9UQVNNX0RlYnVnZ2luZz4NCi0gIDwvUHJv
cGVydHlHcm91cD4NCi0gIDxQcm9qZWN0RXh0ZW5zaW9ucz4NCi0gICAgPEJvcmxhbmQuUGVyc29u
YWxpdHk+Q1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eTwvQm9ybGFuZC5QZXJzb25hbGl0eT4N
Ci0gICAgPEJvcmxhbmQuUHJvamVjdFR5cGU+Q3BwQ29uc29sZUFwcGxpY2F0aW9uPC9Cb3JsYW5k
LlByb2plY3RUeXBlPg0KLSAgICA8Qm9ybGFuZFByb2plY3Q+DQotPEJvcmxhbmRQcm9qZWN0PjxD
UGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PjxWZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFt
ZT0iSW5jbHVkZVZlckluZm8iPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0i
QXV0b0luY0J1aWxkIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9Ik1ham9y
VmVyIj4xPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iTWlub3JWZXIiPjA8L1ZlcnNp
b25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJSZWxlYXNlIj4wPC9WZXJzaW9uSW5mbz48VmVyc2lv
bkluZm8gTmFtZT0iQnVpbGQiPjA8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJEZWJ1
ZyI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJQcmVSZWxlYXNlIj5GYWxz
ZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlNwZWNpYWwiPkZhbHNlPC9WZXJzaW9u
SW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUHJpdmF0ZSI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJz
aW9uSW5mbyBOYW1lPSJETEwiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0i
TG9jYWxlIj4xMDMzPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iQ29kZVBhZ2UiPjEy
NTI8L1ZlcnNpb25JbmZvPjwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvS2V5cz48VmVyc2lvbklu
Zm9LZXlzIE5hbWU9IkNvbXBhbnlOYW1lIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9L
ZXlzIE5hbWU9IkZpbGVEZXNjcmlwdGlvbiI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZv
S2V5cyBOYW1lPSJGaWxlVmVyc2lvbiI+MS4wLjAuMDwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9u
SW5mb0tleXMgTmFtZT0iSW50ZXJuYWxOYW1lIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbklu
Zm9LZXlzIE5hbWU9IkxlZ2FsQ29weXJpZ2h0Ij48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbklu
Zm9LZXlzIE5hbWU9IkxlZ2FsVHJhZGVtYXJrcyI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25J
bmZvS2V5cyBOYW1lPSJPcmlnaW5hbEZpbGVuYW1lIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lv
bkluZm9LZXlzIE5hbWU9IlByb2R1Y3ROYW1lIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbklu
Zm9LZXlzIE5hbWU9IlByb2R1Y3RWZXJzaW9uIj4xLjAuMC4wPC9WZXJzaW9uSW5mb0tleXM+PFZl
cnNpb25JbmZvS2V5cyBOYW1lPSJDb21tZW50cyI+PC9WZXJzaW9uSW5mb0tleXM+PC9WZXJzaW9u
SW5mb0tleXM+PERlYnVnZ2luZz48RGVidWdnaW5nIE5hbWU9IkRlYnVnU291cmNlRGlycyI+PC9E
ZWJ1Z2dpbmc+PC9EZWJ1Z2dpbmc+PFBhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUnVuUGFy
YW1zIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTGF1bmNoZXIiPjwvUGFyYW1ldGVy
cz48UGFyYW1ldGVycyBOYW1lPSJVc2VMYXVuY2hlciI+RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFt
ZXRlcnMgTmFtZT0iRGVidWdDV0QiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJIb3N0
QXBwbGljYXRpb24iPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVIb3N0Ij48
L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlUGF0aCI+PC9QYXJhbWV0ZXJzPjxQ
YXJhbWV0ZXJzIE5hbWU9IlJlbW90ZVBhcmFtcyI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IlJlbW90ZUxhdW5jaGVyIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iVXNlUmVt
b3RlTGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUNX
RCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZURlYnVnIj5GYWxzZTwvUGFy
YW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJEZWJ1ZyBTeW1ib2xzIFNlYXJjaCBQYXRoIj48L1Bh
cmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZEFsbFN5bWJvbHMiPlRydWU8L1BhcmFtZXRl
cnM+PFBhcmFtZXRlcnMgTmFtZT0iTG9hZFVuc3BlY2lmaWVkU3ltYm9scyI+RmFsc2U8L1BhcmFt
ZXRlcnM+PC9QYXJhbWV0ZXJzPjxFeGNsdWRlZF9QYWNrYWdlcz4NCi0gICAgICANCi0gICAgICAN
Ci0gICAgICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0iJChCRFMpXGJpblxiY2JvZmZpY2UyazEw
MC5icGwiPkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNlIDIwMDAgU2VydmVycyBQYWNrYWdlPC9F
eGNsdWRlZF9QYWNrYWdlcz4NCi0gICAgICA8RXhjbHVkZWRfUGFja2FnZXMgTmFtZT0iJChCRFMp
XGJpblxiY2JvZmZpY2V4cDEwMC5icGwiPkNvZGVHZWFyIEMrK0J1aWxkZXIgT2ZmaWNlIFhQIFNl
cnZlcnMgUGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQotICAgIDwvRXhjbHVkZWRfUGFja2Fn
ZXM+PExpbmtlcj48TGlua2VyIE5hbWU9IkxpYlByZWZpeCI+PC9MaW5rZXI+PExpbmtlciBOYW1l
PSJMaWJTdWZmaXgiPjwvTGlua2VyPjxMaW5rZXIgTmFtZT0iTGliVmVyc2lvbiI+PC9MaW5rZXI+
PC9MaW5rZXI+PFByb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGllcyBOYW1lPSJBdXRv
U2hvd0RlcHMiPkZhbHNlPC9Qcm9qZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRpZXMgTmFt
ZT0iTWFuYWdlUGF0aHMiPlRydWU8L1Byb2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGll
cyBOYW1lPSJWZXJpZnlQYWNrYWdlcyI+VHJ1ZTwvUHJvamVjdFByb3BlcnRpZXM+PC9Qcm9qZWN0
UHJvcGVydGllcz48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obElu
Y2x1ZGVQYXRoIE5hbWU9IkNvdW50Ij4zPC9IaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlz
dG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTAiPiQoQkRTKVxpbmNsdWRlOyQoQkRT
KVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNsOy4uXGluY2x1ZGU7Li5cdGVz
dDsuLjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQ
YXRoIE5hbWU9Ikl0ZW0xIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJl
OyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxpbmNsdWRlOy4uXHRlc3Q8L0hpc3RvcnlMaXN0c19obElu
Y2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJJdGVtMiI+JChCRFMp
XGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5c
aW5jbHVkZTwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PC9IaXN0b3J5TGlzdHNfaGxJbmNs
dWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PEhpc3RvcnlMaXN0c19o
bElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9IkNvdW50Ij4xPC9IaXN0b3J5TGlzdHNfaGxJTElOS19M
aWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGggTmFtZT0iSXRlbTAi
PiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrOy4uXHRlc3Q8L0hpc3Rv
cnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5
UGF0aCBOYW1lPSJJdGVtMSI+JChCRFMpXGxpYjskKEJEUylcbGliXG9iajskKEJEUylcbGliXHBz
ZGs7Li5cdGVzdDwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PEhpc3RvcnlMaXN0
c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0yIj4kKEJEUylcbGliOyQoQkRTKVxsaWJc
b2JqOyQoQkRTKVxsaWJccHNkazskKE9VVFBVVERJUik7Li5cdGVzdDwvSGlzdG9yeUxpc3RzX2hs
SUxJTktfTGlicmFyeVBhdGg+PC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlz
dG9yeUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJDb3VudCI+
MjwvSGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJJ
dGVtMCI+Tk9fU1RSSUNUPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxE
ZWZpbmVzIE5hbWU9Ikl0ZW0xIj5TVFJJQ1Q8L0hpc3RvcnlMaXN0c19obERlZmluZXM+PC9IaXN0
b3J5TGlzdHNfaGxEZWZpbmVzPjwvQ1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eT48L0Jvcmxh
bmRQcm9qZWN0PjwvQm9ybGFuZFByb2plY3Q+DQotICA8L1Byb2plY3RFeHRlbnNpb25zPg0KLSAg
PEltcG9ydCBQcm9qZWN0PSIkKE1TQnVpbGRCaW5QYXRoKVxCb3JsYW5kLkNwcC5UYXJnZXRzIiAv
Pg0KLSAgPEl0ZW1Hcm91cD4NCi0gICAgPENwcENvbXBpbGUgSW5jbHVkZT0iLi5cdGVzdFxndGVz
dF91bml0dGVzdC5jYyI+DQotICAgICAgPEJ1aWxkT3JkZXI+MDwvQnVpbGRPcmRlcj4NCi0gICAg
PC9DcHBDb21waWxlPg0KLSAgICA8Q3BwQ29tcGlsZSBJbmNsdWRlPSJndGVzdF9saW5rLmNjIj4N
Ci0gICAgICA8QnVpbGRPcmRlcj4xPC9CdWlsZE9yZGVyPg0KLSAgICA8L0NwcENvbXBpbGU+DQot
ICAgIDxCdWlsZENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWciPg0KLSAgICAgIDxLZXk+Q2Zn
XzE8L0tleT4NCi0gICAgPC9CdWlsZENvbmZpZ3VyYXRpb24+DQotICAgIDxCdWlsZENvbmZpZ3Vy
YXRpb24gSW5jbHVkZT0iUmVsZWFzZSI+DQotICAgICAgPEtleT5DZmdfMjwvS2V5Pg0KLSAgICA8
L0J1aWxkQ29uZmlndXJhdGlvbj4NCi0gIDwvSXRlbUdyb3VwPg0KLTwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb25maWd1cmUu
YWMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9jb25maWd1cmUuYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNjNTkyZTE1ODMwMmVkNjkzMzNkYjUwZjc1NTE3ZWViZjg4NjQ3ZjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29uZmlndXJl
LmFjCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotbTRfaW5jbHVkZShtNC9hY3hfcHRo
cmVhZC5tNCkKLQotIyBBdCB0aGlzIHBvaW50LCB0aGUgWGNvZGUgcHJvamVjdCBhc3N1bWVzIHRo
ZSB2ZXJzaW9uIHN0cmluZyB3aWxsIGJlIHRocmVlCi0jIGludGVnZXJzIHNlcGFyYXRlZCBieSBw
ZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5IHNxdWFyZSBicmFja2V0cyAoZS5nLgotIyAiWzEuMC4x
XSIpLiBJdCBhbHNvIGFzdW1lcyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBhcmVu
dGhlc2lzCi0jIGJldHdlZW4gIkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1ZGlu
ZyBjb21tZW50cyBhbmQgc3RyaW5ncy4KLUFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmtdLAotICAgICAgICBbMS43LjBdLAotICAgICAgICBbZ29vZ2xldGVzdGZyYW1ld29ya0Bn
b29nbGVncm91cHMuY29tXSwKLSAgICAgICAgW2d0ZXN0XSkKLQotIyBQcm92aWRlIHZhcmlvdXMg
b3B0aW9ucyB0byBpbml0aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nlc3Nl
cy4KLUFDX1BSRVJFUShbMi41OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VOU0VdKQotQUNf
Q09ORklHX01BQ1JPX0RJUihbbTRdKQotQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi1B
Q19DT05GSUdfSEVBREVSUyhbYnVpbGQtYXV4L2NvbmZpZy5oXSkKLUFDX0NPTkZJR19GSUxFUyhb
TWFrZWZpbGVdKQotQUNfQ09ORklHX0ZJTEVTKFtzY3JpcHRzL2d0ZXN0LWNvbmZpZ10sIFtjaG1v
ZCAreCBzY3JpcHRzL2d0ZXN0LWNvbmZpZ10pCi0KLSMgSW5pdGlhbGl6ZSBBdXRvbWFrZSB3aXRo
IHZhcmlvdXMgb3B0aW9ucy4gV2UgcmVxdWlyZSBhdCBsZWFzdCB2MS45LCBwcmV2ZW50Ci0jIHBl
ZGFudGljIGNvbXBsYWludHMgYWJvdXQgcGFja2FnZSBmaWxlcywgYW5kIGVuYWJsZSB2YXJpb3Vz
IGRpc3RyaWJ1dGlvbgotIyB0YXJnZXRzLgotQU1fSU5JVF9BVVRPTUFLRShbMS45IGRpc3QtYnpp
cDIgZGlzdC16aXAgZm9yZWlnbiBzdWJkaXItb2JqZWN0c10pCi0KLSMgQ2hlY2sgZm9yIHByb2dy
YW1zIHVzZWQgaW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QuCi1BQ19QUk9HX0NDCi1BQ19QUk9HX0NY
WAotQUNfTEFORyhbQysrXSkKLUFDX1BST0dfTElCVE9PTAotCi0jIFRPRE8oY2hhbmRsZXJjQGdv
b2dsZS5jb20pOiBDdXJyZW50bHkgd2UgYXJlbid0IHJ1bm5pbmcgdGhlIFB5dGhvbiB0ZXN0cwot
IyBhZ2FpbnN0IHRoZSBpbnRlcnByZXRlciBkZXRlY3RlZCBieSBBTV9QQVRIX1BZVEhPTiwgYW5k
IHNvIHdlIGNvbmRpdGlvbgotIyBIQVZFX1BZVEhPTiBieSByZXF1aXJpbmcgInB5dGhvbiIgdG8g
YmUgaW4gdGhlIFBBVEgsIGFuZCB0aGF0IGludGVycHJldGVyJ3MKLSMgdmVyc2lvbiB0byBiZSA+
PSAyLjMuIFRoaXMgd2lsbCBhbGxvdyB0aGUgc2NyaXB0cyB0byB1c2UgYSAiL3Vzci9iaW4vZW52
IgotIyBoYXNoYmFuZy4KLVBZVEhPTj0gICMgV2UgKmRvIG5vdCogYWxsb3cgdGhlIHVzZXIgdG8g
c3BlY2lmeSBhIHB5dGhvbiBpbnRlcnByZXRlcgotQUNfUEFUSF9QUk9HKFtQWVRIT05dLFtweXRo
b25dLFs6XSkKLUFTX0lGKFt0ZXN0ICIkUFlUSE9OIiAhPSAiOiJdLAotICAgICAgW0FNX1BZVEhP
Tl9DSEVDS19WRVJTSU9OKFskUFlUSE9OXSxbMi4zXSxbOl0sW1BZVEhPTj0iOiJdKV0pCi1BTV9D
T05ESVRJT05BTChbSEFWRV9QWVRIT05dLFt0ZXN0ICIkUFlUSE9OIiAhPSAiOiJdKQotCi0jIENv
bmZpZ3VyZSBwdGhyZWFkcy4KLUFDX0FSR19XSVRIKFtwdGhyZWFkc10sCi0gICAgICAgICAgICBb
QVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wdGhyZWFkc10sCi0gICAgICAgICAgICAgICBbdXNlIHB0
aHJlYWRzIChkZWZhdWx0IGlzIHllcyldKV0sCi0gICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz0k
d2l0aHZhbF0sCi0gICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz1jaGVja10pCi0KLWhhdmVfcHRo
cmVhZHM9bm8KLUFTX0lGKFt0ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKLSAgICAg
IFtBQ1hfUFRIUkVBRCgKLSAgICAgICAgW10sCi0gICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRo
X3B0aHJlYWRzIiAhPSAieGNoZWNrIl0sCi0gICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUo
Ci0gICAgICAgICAgICAgICAgIFstLXdpdGgtcHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVu
YWJsZSB0byBiZSB1c2VkXSldKV0pCi0gICAgICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFk
X29rIl0pCi1BTV9DT05ESVRJT05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhy
ZWFkcyIgPSAieHllcyJdKQotQUNfU1VCU1QoUFRIUkVBRF9DRkxBR1MpCi1BQ19TVUJTVChQVEhS
RUFEX0xJQlMpCi0KLSMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSkgQ2hlY2sgZm9yIHRoZSBu
ZWNlc3Nhcnkgc3lzdGVtIGhlYWRlcnMuCi0KLSMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSkg
Q2hlY2sgdGhlIHR5cGVzLCBzdHJ1Y3R1cmVzLCBhbmQgb3RoZXIgY29tcGlsZXIKLSMgYW5kIGFy
Y2hpdGVjdHVyZSBjaGFyYWN0ZXJpc3RpY3MuCi0KLSMgT3V0cHV0IHRoZSBnZW5lcmF0ZWQgZmls
ZXMuIE5vIGZ1cnRoZXIgYXV0b2NvbmYgbWFjcm9zIG1heSBiZSB1c2VkLgotQUNfT1VUUFVUCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL0FkdmFuY2VkR3VpZGUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkz
YTY1MjAwZGFkYjBhM2JkODFkNjI5OWI4MDBmYTM4OTA4ZjZmOWEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1
aWRlLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMjE4MiArMCwwIEBACi0KLQotTm93IHRoYXQgeW91
IGhhdmUgcmVhZCBbUHJpbWVyXShQcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0
ZXN0cwotdXNpbmcgR29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlj
a3MuIFRoaXMgZG9jdW1lbnQKLXdpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwg
YXMgaG93IHRvIGNvbnN0cnVjdCBjb21wbGV4Ci1mYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUg
ZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCi10ZXN0IGZpeHR1cmVzLCBh
bmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgotCi0jIE1vcmUgQXNzZXJ0aW9u
cyAjCi0KLVRoaXMgc2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0
IHN0aWxsIHNpZ25pZmljYW50LAotYXNzZXJ0aW9ucy4KLQotIyMgRXhwbGljaXQgU3VjY2VzcyBh
bmQgRmFpbHVyZSAjIwotCi1UaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0
ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKLXRoZXkgZ2VuZXJhdGUgYSBzdWNj
ZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Ci1w
ZXJmb3JtIGEgdGVzdCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGlu
dG8gdGhlIHRoZW0uCi0KLXwgYFNVQ0NFRUQoKTtgIHwKLXw6LS0tLS0tLS0tLS0tLXwKLQotR2Vu
ZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3Vj
Y2VlZC4gQSB0ZXN0IGlzCi1jb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0
cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCi0KLU5vdGU6IGBTVUNDRUVE
KClgIGlzIHB1cmVseSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUg
YW55Ci11c2VyLXZpc2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClg
IG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0J3MKLW91dHB1dCBpbiB0aGUgZnV0dXJlLgotCi18IGBG
QUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3Bh
dGhfYCIsIGBfbGluZVxfbnVtYmVyX2ApO2AgfAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLQotYEZBSUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9G
QUlMVVJFKClgIGFuZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAotZmFp
bHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBC
b29sZWFuIGV4cHJlc3Npb24sCi1kZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFp
bHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCi1zb21ldGhpbmcgbGlr
ZToKLQotYGBgCi1zd2l0Y2goZXhwcmVzc2lvbikgewotICBjYXNlIDE6IC4uLiBzb21lIGNoZWNr
cyAuLi4KLSAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKLSAgLi4uCi0gIGRlZmF1bHQ6
IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Ci19Ci1gYGAKLQotTm90ZTogeW91
IGNhbiBvbmx5IHVzZSBgRkFJTCgpYCBpbiBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYHZvaWRgLiBT
ZWUgdGhlIFtBc3NlcnRpb24gUGxhY2VtZW50IHNlY3Rpb25dKCNhc3NlcnRpb24tcGxhY2VtZW50
KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dz
LCBNYWMuCi0KLSMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCi0KLVRoZXNlIGFyZSBmb3IgdmVy
aWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QKLXRocm93KSBh
biBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NF
UlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9U
SFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0
aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Ci18IGBBU1NFUlRfQU5ZX1RI
Uk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhg
X3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4
Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAotfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVt
ZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9g
KTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2Vw
dGlvbiAgICAgICAgICAgIHwKLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJUX1RIUk9XKEZvbyg1
KSwgYmFyX2V4Y2VwdGlvbik7Ci0KLUVYUEVDVF9OT19USFJPVyh7Ci0gIGludCBuID0gNTsKLSAg
QmFyKCZuKTsKLX0pOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
OyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0
dGVyIEVycm9yIE1lc3NhZ2VzICMjCi0KLUV2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJp
Y2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCi1jb21wbGV0ZSwgYXMgaXQn
cyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2Vu
YXJpb3MKLWEgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2Vy
IGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCi10byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lv
biwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCi1vZiBu
b3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24s
IG1ha2luZyBpdCBoYXJkIHRvCi11bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3Jr
YXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCi1mYWlsdXJlIG1lc3Nh
Z2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dl
dmVyLCB0aGlzCi1pcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMg
c2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bwotZXZhbHVhdGUuCi0KLUdvb2dsZSBUZXN0
IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06
Ci0KLSMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIwotCi1JZiB5b3Ug
YWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAg
KG9yIGEgdHlwZQotdGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwg
eW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCi1hc3NlcnRpb25fIHRvIGdldCB0aGUgZnVu
Y3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBB
U1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3By
ZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Ci18IGBBU1NFUlRf
UFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2
YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAotfCAg
Li4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAg
ICB8Ci0KLUluIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbiBvciBmdW5jdG9yLCB3aGVyZQotX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBh
cmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcwotaWYgdGhlIHByZWRpY2F0
ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5k
IGZhaWxzCi1vdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRo
ZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgotZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMg
YXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi0KLUhlcmUncyBhbiBleGFtcGxlLiBHaXZlbgot
Ci1gYGAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29y
cyBleGNlcHQgMS4KLWJvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KLWNv
bnN0IGludCBhID0gMzsKLWNvbnN0IGludCBiID0gNDsKLWNvbnN0IGludCBjID0gMTA7Ci1gYGAK
LQotdGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2ls
bCBzdWNjZWVkLCB3aGlsZSB0aGUKLWFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJp
bWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKLQotPHByZT4KLSFNdXR1YWxs
eVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KLWIgaXMgNDxicj4KLWMgaXMgMTA8YnI+
Ci08L3ByZT4KLQotKipOb3RlczoqKgotCi0gIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJv
ciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQq
YCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpcyBGQVFdKEZBUS5tZCN0aGUtY29t
cGlsZXItY29tcGxhaW5zLW5vLW1hdGNoaW5nLWZ1bmN0aW9uLXRvLWNhbGwtd2hlbi1pLXVzZS1h
c3NlcnRfcHJlZG4taG93LWRvLWktZml4LWl0KSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCi0gIDEu
IEN1cnJlbnRseSB3ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkg
PD0gNS4gSWYgeW91IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4K
LQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKLQotIyMjIFVzaW5nIGEgRnVu
Y3Rpb24gVGhhdCBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKLQotV2hpbGUgYEVYUEVD
VF9QUkVEKigpYCBhbmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKLXN5
bnRheCBpcyBub3Qgc2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3Jv
cyBmb3IKLWRpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhh
biBDKysuICBUaGUKLWA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRo
aXMgcHJvYmxlbS4KLQotQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhl
IHJlc3VsdCBvZiBhbiBhc3NlcnRpb24KLSh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFp
bHVyZSwgYW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKLWNhbiBjcmVhdGUgYW4gYEFz
c2VydGlvblJlc3VsdGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKLWZ1bmN0aW9uczoKLQot
YGBgCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0
IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKLS8vIHN1Y2NlZWRlZC4K
LUFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLS8vIFJldHVybnMgYW4gQXNz
ZXJ0aW9uUmVzdWx0IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKLS8v
IGZhaWxlZC4KLUFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7Ci0KLX0KLWBgYAot
Ci1Zb3UgY2FuIHRoZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0
byB0aGUKLWBBc3NlcnRpb25SZXN1bHRgIG9iamVjdC4KLQotVG8gcHJvdmlkZSBtb3JlIHJlYWRh
YmxlIG1lc3NhZ2VzIGluIEJvb2xlYW4gYXNzZXJ0aW9ucwotKGUuZy4gYEVYUEVDVF9UUlVFKClg
KSwgd3JpdGUgYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCi1gQXNzZXJ0aW9uUmVz
dWx0YCBpbnN0ZWFkIG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKLWBJc0V2
ZW4oKWAgYXM6Ci0KLWBgYAotOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBu
KSB7Ci0gIGlmICgobiAlIDIpID09IDApCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
U3VjY2VzcygpOwotICBlbHNlCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVy
ZSgpIDw8IG4gPDwgIiBpcyBvZGQiOwotfQotYGBgCi0KLWluc3RlYWQgb2Y6Ci0KLWBgYAotYm9v
bCBJc0V2ZW4oaW50IG4pIHsKLSAgcmV0dXJuIChuICUgMikgPT0gMDsKLX0KLWBgYAotCi10aGUg
ZmFpbGVkIGFzc2VydGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50
OgotCi08cHJlPgotVmFsdWUgb2Y6IElzRXZlbihGaWIoNCkpPGJyPgotQWN0dWFsOiBmYWxzZSAo
KjMgaXMgb2RkKik8YnI+Ci1FeHBlY3RlZDogdHJ1ZTxicj4KLTwvcHJlPgotCi1pbnN0ZWFkIG9m
IGEgbW9yZSBvcGFxdWUKLQotPHByZT4KLVZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKTxicj4KLUFj
dHVhbDogZmFsc2U8YnI+Ci1FeHBlY3RlZDogdHJ1ZTxicj4KLTwvcHJlPgotCi1JZiB5b3Ugd2Fu
dCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQRUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxT
RWAKLWFzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRoIG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dl
ciBpbiB0aGUgc3VjY2VzcwotY2FzZSwgeW91IGNhbiBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6
Ci0KLWBgYAotOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7Ci0gIGlm
ICgobiAlIDIpID09IDApCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vzcygp
IDw8IG4gPDwgIiBpcyBldmVuIjsKLSAgZWxzZQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKLX0KLWBgYAotCi1UaGVuIHRoZSBzdGF0
ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmliKDYpKSlgIHdpbGwgcHJpbnQKLQotPHByZT4K
LVZhbHVlIG9mOiBJc0V2ZW4oRmliKDYpKTxicj4KLUFjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxi
cj4KLUV4cGVjdGVkOiBmYWxzZTxicj4KLTwvcHJlPgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgs
IFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KLQotIyMjIFVzaW5nIGEgUHJlZGlj
YXRlLUZvcm1hdHRlciAjIyMKLQotSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5l
cmF0ZWQgYnkgYChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCi1gKEFTU0VSVHxFWFBFQ1QpXyhU
UlVFfEZBTFNFKWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKLXBy
ZWRpY2F0ZSBkbyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGlu
c3RlYWQgdXNlIHRoZQotZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNf
IHRvIF9mdWxseV8gY3VzdG9taXplIGhvdyB0aGUKLW1lc3NhZ2UgaXMgZm9ybWF0dGVkOgotCi18
ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmll
cyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZh
bDFfYCk7YCAgICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZh
bDFfYCk7YCB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYEFTU0VS
VF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNU
X1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9m
b3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYC4uLmAgICAgICAgICAgICAg
ICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgfAotCi1UaGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBp
cyB0aGF0IGluc3RlYWQgb2YKLWEgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9S
TUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVyXwotKF9wcmVkXF9mb3JtYXRuXyksIHdo
aWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6Ci0KLWA6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBf
ZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAuLi4gY29uc3QgY2hhciogYF9leHBybl9g
LCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBUbiBgX3ZhbG5fYCk7YAotCi13aGVyZSBf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVk
aWNhdGUKLWFyZ3VtZW50cywgYW5kIF9leHByMV8sIF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8g
YXJlIHRoZSBjb3JyZXNwb25kaW5nCi1leHByZXNzaW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUg
c291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZAotYFRuYCBjYW4gYmUg
ZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFu
Ci1hcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBg
Rm9vYCBvciBgY29uc3QgRm9vJmAsCi13aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCi0KLUEgcHJl
ZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBv
YmplY3QgdG8gaW5kaWNhdGUKLXdoZXRoZXIgdGhlIGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9y
IG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNoIGFuCi1vYmplY3QgaXMgdG8gY2FsbCBv
bmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6Ci0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGlt
cHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2gg
dXNlcyBgRVhQRUNUX1BSRUQyKClgOgotCi1gYGAKLS8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCi0vLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCi1pbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9Ci0KLS8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KLTo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewot
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0g
ICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5k
ICIgPDwgbgotICAgICAgPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhl
eSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgotICAgICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRp
dmlzb3IobSwgbik7Ci19Ci1gYGAKLQotV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdl
IGNhbiB1c2UKLQotYGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUs
IGIsIGMpOwotYGBgCi0KLXRvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci1iIGFuZCBj
ICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9u
IGRpdmlzb3IgMi48YnI+Ci08L3ByZT4KLQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55
IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllciBhcmUKLXNwZWNpYWwgY2Fz
ZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRo
ZW0gYXJlCi1pbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFU
KmAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0KLSMjIEZsb2F0
aW5nLVBvaW50IENvbXBhcmlzb24gIyMKLQotQ29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMKLXZlcnkgdW5saWtl
bHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3Jl
LAotYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4g
QW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cwotY2FuIGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBu
byBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVyIHRvCi1jb21wYXJl
IGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3Nl
IHRvIDAgZHVlIHRvCi10aGUgbG9zcyBvZiBwcmVjaXNpb24gdGhlcmUuCi0KLUluIGdlbmVyYWws
IGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5l
ZWRzIHRvCi1jYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3
YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgotdGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3Qg
UGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgR29vZ2xlIFRlc3QKLXByb3ZpZGVz
IGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRl
IGxvbmc7IGlmIHlvdQotd2FudCB0byBsZWFybiBtb3JlLCBzZWUKLVt0aGlzIGFydGljbGUgb24g
ZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9j
b21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bSkuCi0KLSMjIyBGbG9hdGluZy1Qb2lu
dCBNYWNyb3MgIyMjCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfRkxPQVRfRVEoYF92YWwx
LCB2YWwyX2ApO2AgIHwgYEVYUEVDVF9GTE9BVF9FUShgX3ZhbDEsIHZhbDJfYCk7YCB8IHRoZSB0
d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Ci18IGBBU1NFUlRfRE9VQkxFX0VR
KGBfdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF92YWwxLCB2YWwyX2ApO2Ag
fCB0aGUgdHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKLQotQnkgImFsbW9z
dCBlcXVhbCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20g
ZWFjaAotb3RoZXIuCi0KLVRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hv
b3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiog
fCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNT
RVJUX05FQVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2
YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwx
XyBhbmQgX3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8Ci0K
LV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgRmxvYXRpbmctUG9p
bnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCi0KLVNvbWUgZmxvYXRpbmctcG9pbnQg
b3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIK
LXRvIGF2b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMg
cHJlZGljYXRlLWZvcm1hdAotZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRl
IGFzc2VydGlvbiBtYWNyb3MgKGUuZy4KLWBFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KLQot
YGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7
Ci1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOwot
YGBgCi0KLVZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFs
IHRvLCBfdmFsMl8uIFlvdSBjYW4KLXJlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRo
ZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KLQotX0F2YWlsYWJpbGl0
eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25z
ICMjCi0KLVRoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFp
bHVyZS4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4
cHJlc3Npb25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2Ap
O2AgfCBfZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Ci18IGBBU1NFUlRfSFJF
U1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVE
KGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VM
VGAgfAotCi1UaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUg
ZXJyb3IgbWVzc2FnZQotYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5l
ZCBieSBfZXhwcmVzc2lvbl8uCi0KLVlvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6Ci0KLWBg
YAotQ0NvbVB0ciBzaGVsbDsKLUFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0
ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7Ci1DQ29tVmFyaWFudCBlbXB0eTsKLUFT
U0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCks
IGVtcHR5LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7Ci1gYGAKLQotX0F2YWlsYWJpbGl0eV86IFdp
bmRvd3MuCi0KLSMjIFR5cGUgQXNzZXJ0aW9ucyAjIwotCi1Zb3UgY2FuIGNhbGwgdGhlIGZ1bmN0
aW9uCi1gYGAKLTo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKLWBgYAot
dG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVu
Y3Rpb24gZG9lcwotbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRo
ZSB0eXBlcyBhcmUgZGlmZmVyZW50LAotdGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNv
bXBpbGUsIGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQotd2lsbCBsaWtlbHkgKGRlcGVu
ZGluZyBvbiB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCi1gVDFg
IGFuZCBgVDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgot
Ci1fQ2F2ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNz
IHRlbXBsYXRlIG9yIGEKLWZ1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQx
LCBUMj4oKWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwotdGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRp
YXRlZC4gIEZvciBleGFtcGxlLCBnaXZlbjoKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIEZvbyB7Ci0gcHVibGljOgotICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3Nl
cnRUeXBlRXE8aW50LCBUPigpOyB9Ci19OwotYGBgCi10aGUgY29kZToKLWBgYAotdm9pZCBUZXN0
MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQotYGBgCi13aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGls
ZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgotYWN0dWFsbHkgaW5zdGFu
dGlhdGVkLiAgSW5zdGVhZCwgeW91IG5lZWQ6Ci1gYGAKLXZvaWQgVGVzdDIoKSB7IEZvbzxib29s
PiBmb287IGZvby5CYXIoKTsgfQotYGBgCi10byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgotCi1f
QXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4K
LQotIyMgQXNzZXJ0aW9uIFBsYWNlbWVudCAjIwotCi1Zb3UgY2FuIHVzZSBhc3NlcnRpb25zIGlu
IGFueSBDKysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKLWhhdmUgdG8gYmUg
YSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlz
Ci10aGF0IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAg
YW5kIGBBU1NFUlRfKmApCi1jYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0
aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCi1Hb29nbGUgVGVzdCBub3QgdXNpbmcgZXhj
ZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCi15b3UnbGwgZ2V0
IGEgY29uZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQotYCJlcnJvcjogdm9pZCB2YWx1ZSBub3Qg
aWdub3JlZCBhcyBpdCBvdWdodCB0byBiZSJgLgotCi1JZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0
aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgotaXMg
dG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVy
IGluc3RlYWQuIEZvcgotZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRv
IGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQotbmVlZCB0byBtYWtlIHN1cmUgdGhh
dCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCi1m
dW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMg
YHZvaWRgLCB5b3UgY2FuIHVzZQotYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCi0KLUlmIGNo
YW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBq
dXN0IHVzZQotYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3Vj
aCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQKLWBFWFBFQ1RfKmAuCi0KLV9Ob3RlXzogQ29uc3RydWN0
b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKLWZ1
bmN0aW9ucywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5k
IHNvIHlvdSBtYXkgbm90IHVzZQotZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0
IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKLXdvcmthcm91bmQgaXMg
dG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVj
dG9yIHRvIGEKLXByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hv
dWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAotYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1
Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgotaW50dWl0
aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9y
IGVhcmx5LCBwb3NzaWJseQotbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25z
dHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKLWFzc2VydGlvbiBmYWlsdXJlIGluIGEg
ZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQotcGFydGlhbGx5LWRlc3RydWN0
ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQot
Ci0jIFRlYWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjCi0KLVdo
ZW4gYSB0ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1RfRVFgIGZhaWxzLCBHb29nbGUgVGVz
dCBwcmludHMgdGhlCi1hcmd1bWVudCB2YWx1ZXMgdG8gaGVscCB5b3UgZGVidWcuICBJdCBkb2Vz
IHRoaXMgdXNpbmcgYQotdXNlci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCi0KLVRoaXMgcHJp
bnRlciBrbm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlz
LCBTVEwKLWNvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9w
ZXJhdG9yLiAgRm9yIG90aGVyCi10eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhl
IHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKLXVzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCi0K
LUFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0
IG1lYW5zCi15b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0dGVyIGpvYiBhdCBwcmludGluZyB5
b3VyIHBhcnRpY3VsYXIgdHlwZQotdGhhbiB0byBkdW1wIHRoZSBieXRlcy4gIFRvIGRvIHRoYXQs
IGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6Ci0KLWBgYAotI2luY2x1ZGUgPGlvc3RyZWFtPgot
Ci1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgQmFyIHsgLi4uIH07ICAvLyBXZSB3YW50IEdvb2ds
ZSBUZXN0IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2VzIG9mIHRoaXMuCi0KLS8vIEl0J3Mg
aW1wb3J0YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKLS8v
IG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9u
IHRoYXQuCi06OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNv
bnN0IEJhciYgYmFyKSB7Ci0gIHJldHVybiBvcyA8PCBiYXIuRGVidWdTdHJpbmcoKTsgIC8vIHdo
YXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGZv
bwotYGBgCi0KLVNvbWV0aW1lcywgdGhpcyBtaWdodCBub3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRl
YW0gbWF5IGNvbnNpZGVyIGl0IGJhZAotc3R5bGUgdG8gaGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9y
IGBCYXJgLCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEKLWA8PGAgb3BlcmF0b3IgdGhhdCBk
b2Vzbid0IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZQotaXQpLiAgSWYg
c28sIHlvdSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRUbygpYCBmdW5jdGlvbiBsaWtlIHRo
aXM6Ci0KLWBgYAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi1uYW1lc3BhY2UgZm9vIHsKLQotY2xh
c3MgQmFyIHsgLi4uIH07Ci0KLS8vIEl0J3MgaW1wb3J0YW50IHRoYXQgUHJpbnRUbygpIGlzIGRl
ZmluZWQgaW4gdGhlIFNBTUUKLS8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3Mg
bG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCi12b2lkIFByaW50VG8oY29uc3QgQmFyJiBiYXIs
IDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3
aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBm
b28KLWBgYAotCi1JZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGggYDw8YCBhbmQgYFByaW50VG8oKWAs
IHRoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkCi13aGVuIEdvb2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4g
IFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRoZSB2YWx1ZQotYXBwZWFycyBpbiBH
b29nbGUgVGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9u
IHRoZQotYmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3IuCi0KLUlmIHlvdSB3YW50IHRvIHBy
aW50IGEgdmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3MgdmFsdWUgcHJpbnRlcgoteW91cnNl
bGYsIGp1c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGBfeF9gKWAsIHdoaWNoCi1y
ZXR1cm5zIGFuIGBzdGQ6OnN0cmluZ2A6Ci0KLWBgYAotdmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4g
YmFyX2ludHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKLQotRVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFy
SW50VmVjdG9yKGJhcl9pbnRzKSkKLSAgICA8PCAiYmFyX2ludHMgPSAiIDw8IDo6dGVzdGluZzo6
UHJpbnRUb1N0cmluZyhiYXJfaW50cyk7Ci1gYGAKLQotIyBEZWF0aCBUZXN0cyAjCi0KLUluIG1h
bnkgYXBwbGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBs
aWNhdGlvbiBmYWlsdXJlCi1pZiBhIGNvbmRpdGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkg
Y2hlY2tzLCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3JhbQotaXMgaW4gYSBrbm93biBnb29k
IHN0YXRlLCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBh
ZnRlcgotc29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBj
aGVja3MgdGhlIHdyb25nIGNvbmRpdGlvbiwKLXRoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQg
aW4gYW4gZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBsZWFkIHRvIG1lbW9yeQotY29ycnVw
dGlvbiwgc2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9y
dGFudCB0byB0ZXN0Ci10aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBl
Y3RlZC4KLQotU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vz
c2VzIHRvIGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCi1fZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVy
YWxseSwgYW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHByb2dyYW0gdGVybWluYXRlcwotKGV4
Y2VwdCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFuIGV4cGVjdGVkIGZhc2hpb24gaXMg
YWxzbyBhIGRlYXRoIHRlc3QuCi0KLU5vdGUgdGhhdCBpZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dz
IGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQgImRlYXRoIgotZm9yIHRoZSBwdXJw
b3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNo
IHRoZSBleGNlcHRpb24KLWFuZCBhdm9pZCB0aGUgY3Jhc2guIElmIHlvdSB3YW50IHRvIHZlcmlm
eSBleGNlcHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCi1zZWUgW0V4Y2VwdGlvbiBBc3NlcnRp
b25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgotCi1JZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBF
Q1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNo
aW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgotCi0jIyBIb3cgdG8gV3JpdGUgYSBE
ZWF0aCBUZXN0ICMjCi0KLUdvb2dsZSBUZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBz
dXBwb3J0IGRlYXRoIHRlc3RzOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX0RFQVRIKGBf
c3RhdGVtZW50LCByZWdleF9gKTtgIHwgYEVYUEVDVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhf
YCk7YCB8IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgfAotfCBgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7YCB8IGBFWFBFQ1Rf
REVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTtgIHwgaWYgZGVhdGggdGVz
dHMgYXJlIHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGgg
dGhlIGdpdmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZyB8Ci18IGBBU1NFUlRf
RVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTtgIHwgYEVYUEVDVF9FWElUKGBf
c3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApO2AgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGgg
dGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAot
Ci13aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNh
dXNlIHRoZSBwcm9jZXNzIHRvCi1kaWUsIF9wcmVkaWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVu
Y3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKLWV4aXQgc3RhdHVzLCBhbmQg
X3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9m
Ci1fc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRf
IGNhbiBiZSBfYW55IHZhbGlkCi1zdGF0ZW1lbnRfIChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRl
bWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KLWV4cHJlc3Npb24uCi0KLUFzIHVzdWFs
LCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwg
d2hpbGUgdGhlCi1gRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCi0KLSoqTm90ZToqKiBXZSB1c2Ug
dGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJvY2VzcwotdGVybWluYXRl
cyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhlcmUgYXJlIHR3bwotcG9z
c2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9l
eGl0KClgCi13aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBz
aWduYWwuCi0KLVRoaXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBw
cm9jZXNzIHdpdGggYSAwIGV4aXQKLWNvZGUsIGl0IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFz
aCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQotYEVYUEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMg
aXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Ci10aGUgZXhpdCBjb2RlIG1v
cmUgcHJlY2lzZWx5LgotCi1BIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFu
ZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0Ci1zdWNjZWVkcyBvbmx5IGlmIHRoZSBw
cmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBmZXcKLXByZWRp
Y2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgotCi1gYGAKLTo6dGVzdGlu
Zzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQotYGBgCi0KLVRoaXMgZXhwcmVzc2lvbiBpcyBg
dHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQK
LWNvZGUuCi0KLWBgYAotOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAg
Ly8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotYGBgCi0KLVRoaXMgZXhwcmVzc2lvbiBpcyBg
dHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgotCi1U
aGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAg
dGhhdCB1c2UgYSBwcmVkaWNhdGUKLXRoYXQgdmVyaWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29k
ZSBpcyBub24temVyby4KLQotTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0
IHRocmVlIHRoaW5nczoKLQotICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhl
IHByb2Nlc3M/Ci0gIDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNU
X0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGlu
IHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4
aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCi0gIDEuIGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0
Y2ggX3JlZ2V4Xz8KLQotSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFu
IGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2Ug
dGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBh
Ym9ydCB0aGUgcHJvY2Vzcy4KLQotVG8gd3JpdGUgYSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9u
ZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKLWZ1bmN0aW9uLiBGb3IgZXhh
bXBsZSwKLQotYGBgCi1URVNUKE15RGVhdGhUZXN0LCBGb28pIHsKLSAgLy8gVGhpcyBkZWF0aCB0
ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCi0gIEFTU0VSVF9ERUFUSCh7IGludCBuID0g
NTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKLX0KLVRFU1QoTXlE
ZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKLSAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRl
c3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwotfQotVEVTVChNeURlYXRoVGVz
dCwgS2lsbE15c2VsZikgewotICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6
S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWdu
YWwiKTsKLX0KLWBgYAotCi12ZXJpZmllcyB0aGF0OgotCi0gICogY2FsbGluZyBgRm9vKDUpYCBj
YXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCi0g
ICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJT
dWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAotICAqIGNh
bGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJ
TExgLgotCi1UaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlv
bnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKLW5lY2Vzc2FyeS4KLQotX0ltcG9ydGFudDpf
IFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5h
bWluZyB5b3VyCi10ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250
YWlucyBhIGRlYXRoIHRlc3QsIGFzCi1kZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUu
IFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKLWV4cGxhaW5zIHdo
eS4KLQotSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBh
bmQgZGVhdGggdGVzdHMsIHlvdQotY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlh
cyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCi1kdXBsaWNhdGluZyBpdHMgY29kZToK
LWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQot
dHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlz
KSB7Ci0gIC8vIG5vcm1hbCB0ZXN0Ci19Ci0KLVRFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0
KSB7Ci0gIC8vIGRlYXRoIHRlc3QKLX0KLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUg
bGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVD
VClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KLQotIyMgUmVndWxhciBF
eHByZXNzaW9uIFN5bnRheCAjIwotCi1PbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3
aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQotW1BPU0lYIGV4dGVuZGVkIHJlZ3Vs
YXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1
Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCi1zeW50YXggaW4gZGVhdGgg
dGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0
aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxh
cl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgotCi1PbiBX
aW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lv
bgotaW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGlu
IFBPU0lYIGV4dGVuZGVkCi1yZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRv
bid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAotZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tl
dHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQKLShgInh7NSw3fSJgKSwgYW1vbmcg
b3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRlciBgQWAgZGVub3RlcyBh
Ci1saXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBgXFxgIGVzY2Fw
ZSBzZXF1ZW5jZTsgYHhgCi1hbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zLik6Ci0K
LXwgYGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKLXw6LS0tLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYFxcZGAgfCBtYXRjaGVzIGFueSBk
ZWNpbWFsIGRpZ2l0ICAgICAgICAgfAotfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0
aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdCB8Ci18IGBcXGZgIHwgbWF0Y2hlcyBgXGZgICAgICAg
ICAgICAgICAgICAgICAgIHwKLXwgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAgICAgICAgICAg
ICAgICAgfAotfCBgXFxyYCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAgICAgICB8Ci18
IGBcXHNgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5nIGBcbmAgfAot
fCBgXFxTYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hpdGVzcGFjZSB8
Ci18IGBcXHRgIHwgbWF0Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcdmAg
fCBtYXRjaGVzIGBcdmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFx3YCB8IG1hdGNoZXMg
YW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0IHwKLXwgYFxcV2AgfCBtYXRjaGVzIGFu
eSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKLXwgYFxcY2AgfCBtYXRjaGVz
IGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5jdHVhdGlvbiB8
Ci18IGBcXC5gIHwgbWF0Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAgICAgIHwKLXwgYC5gIHwg
bWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Ci18IGBBP2AgfCBtYXRj
aGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAotfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1h
bnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3Vy
cmVuY2VzIG9mIGBBYCB8Ci18IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmlu
ZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBh
IHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGB4eWAgfCBtYXRjaGVzIGB4YCBm
b2xsb3dlZCBieSBgeWAgICAgICAgfAotCi1UbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2Fw
YWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0sCi1Hb29nbGUgVGVzdCBkZWZpbmVz
IG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAotZXh0ZW5k
ZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4g
aXQgdXNlcwotdGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0
cyB0byB3b3JrIGluIGJvdGgKLWNhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBt
YWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKLXN5bnRheCBvbmx5LgotCi0jIyBIb3cgSXQg
V29ya3MgIyMKLQotVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcg
cHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCi1kZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHBy
b2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKLXRoYXQgaGFwcGVucyBkZXBl
bmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFibGUKLWA6OnRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQotY29t
bWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgotCi0gICogT24gUE9T
SVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBz
cGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgotICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFs
dWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBl
eGVjdXRlZC4KLSAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJg
LCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0
IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3Mg
dG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0
byBiZSBydW4uCi0gICogT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhl
IGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1
c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBy
dW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgotCi1PdGhlciB2
YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVh
dGggdGVzdCB0bwotZmFpbC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMg
YCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhlCi1yaWdodCB0byBjaGFuZ2UgaXQgaW4g
dGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCi10
aGlzLgotCi1JbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUg
Y2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0Ci0KLSAgMS4gdGhlIGNo
aWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAotICAxLiB0aGUg
Y2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgotCi1JZiB0aGUg
ZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRo
ZSBjaGlsZAotcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3Nl
cnRpb24gZmFpbHMuCi0KLSMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCi0KLVRoZSByZWFz
b24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNh
ZmV0eS4gRHVlIHRvCi13ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJl
c2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCi1iZSBydW4gaW4gYSBzaW5nbGUt
dGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0
bwotYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNh
bGx5LWluaXRpYWxpemVkIG1vZHVsZXMKLW1heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlz
IGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAotaXQgbWF5IGJl
IGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCi0KLUdvb2dsZSBUZXN0
IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFk
aW5nIGlzc3Vlcy4KLQotICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJl
YWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgotICAxLiBU
ZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9y
ZSBhbGwgb3RoZXIgdGVzdHMuCi0gIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZv
cmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBu
b3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtl
bHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFz
IG11bHRpcGxlIHRocmVhZHMuCi0KLUl0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVh
ZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCi1leGVjdXRlZCBpbiBh
IHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KLQotIyMgRGVh
dGggVGVzdCBTdHlsZXMgIyMKLQotVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdh
cyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCi1yaXNrcyBvZiB0ZXN0
aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGlu
Y3JlYXNlZAotdGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNv
KSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KLVdlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3Rl
ciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKLXBy
b2JsZW1zIHdpdGggaXQuCi0KLVlvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBk
ZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCi1wcm9ncmFtbWF0aWNhbGx5OgotCi1gYGAK
LTo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsK
LWBgYAotCi1Zb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3Ig
YWxsIGRlYXRoIHRlc3RzIGluIHRoZQotYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBS
ZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAotdGVzdCBhbmQg
cmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZv
ciBleGFtcGxlOgotCi1gYGAKLVRFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKLSAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOwotICAvLyBU
aGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6Ci0gIEFTU0VSVF9ERUFU
SChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykg
ewotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6Ci0gIEFTU0VSVF9E
RUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICA6
OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7Ci0gIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgQ2F2ZWF0cyAjIwotCi1UaGUgX3N0YXRl
bWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0
YXRlbWVudC4KLUlmIGl0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiB2aWEgYSBgcmV0dXJu
YCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAotdGhlIGRlYXRoIHRlc3Qg
aXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xlIFRlc3QgbWFjcm9zIG1h
eSByZXR1cm4KLWZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4gYEFTU0VSVF9UUlVFKClg
KSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRfLgotCi1TaW5jZSBfc3Rh
dGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZm
ZWN0IChlLmcuCi1tb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBp
dCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCi1pbiB0aGUgcGFyZW50IHByb2Nlc3Mu
IEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCi15
b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2Vz
cyB3aWxsIG5ldmVyIHNlZSB0aGUKLW1lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJv
YmxlbSwgeW91IGNhbgotCi0gIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0
ZXN0OwotICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBv
cgotICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgotCi1E
dWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxl
IGRlYXRoIHRlc3QKLWFzc2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21w
aWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKLWVycm9yIG1lc3NhZ2UuCi0KLURl
c3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRz
YWZlIiBzdHlsZSBvZiBkZWF0aAotdGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxv
Y2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgotaGFuZGxlcnMgcmVnaXN0
ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCi0KLSMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBT
dWItcm91dGluZXMgIwotCi0jIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKLQotSWYg
YSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFu
IGFzc2VydGlvbgotaW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNo
IGludm9jYXRpb24gb2YgdGhlCi1zdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91
IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCi1leHRyYSBsb2dnaW5nIG9yIGN1c3Rv
bSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCi15b3VyIHRl
c3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3Jv
OgotCi18IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLQotd2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1h
YmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCi1tYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50
IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KLW1lc3NhZ2UgdG8gYmUgYWRk
ZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKLXVuZG9uZSB3
aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgotCi1Gb3Ig
ZXhhbXBsZSwKLQotYGBgCi0xMDogdm9pZCBTdWIxKGludCBuKSB7Ci0xMTogICBFWFBFQ1RfRVEo
MSwgQmFyKG4pKTsKLTEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKLTEzOiB9Ci0xNDoK
LTE1OiBURVNUKEZvb1Rlc3QsIEJhcikgewotMTY6ICAgewotMTc6ICAgICBTQ09QRURfVFJBQ0Uo
IkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgotMTg6ICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KLTE5OiAg
ICAgU3ViMSgxKTsKLTIwOiAgIH0KLTIxOiAgIC8vIE5vdyBpdCB3b24ndC4KLTIyOiAgIFN1YjEo
OSk7Ci0yMzogfQotYGBgCi0KLWNvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgot
Ci1gYGAKLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKLVZhbHVlIG9mOiBCYXIobikK
LUV4cGVjdGVkOiAxCi0gIEFjdHVhbDogMgotICAgVHJhY2U6Ci1wYXRoL3RvL2Zvb190ZXN0LmNj
OjE3OiBBCi0KLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKLVZhbHVlIG9mOiBCYXIo
biArIDEpCi1FeHBlY3RlZDogMgotICBBY3R1YWw6IDMKLWBgYAotCi1XaXRob3V0IHRoZSB0cmFj
ZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCi1v
ZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3Ug
Y291bGQgYWRkIGFuCi1leHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClg
IHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgotYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQotCi1T
b21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6Ci0KLSAgMS4gV2l0aCBhIHN1aXRhYmxl
IG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUg
YmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUu
Ci0gIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUg
bG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2gg
dGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCi0g
IDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3Vn
aCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0
aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNz
YWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCi0gIDEuIFlv
dSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMg
b25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBv
aW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNl
IG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgotICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlj
a2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5l
IG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZp
bGUhCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBQcm9wYWdh
dGluZyBGYXRhbCBGYWlsdXJlcyAjIwotCi1BIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFT
U0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Ci13aGVuIHRoZXkg
ZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRp
cmUgdGVzdC4gRm9yCi1leGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoK
LWBgYAotdm9pZCBTdWJyb3V0aW5lKCkgewotICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJl
IGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0gIEFTU0VSVF9FUSgxLCAyKTsKLSAg
Ly8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KLSAgLi4uCi19Ci0KLVRFU1QoRm9v
VGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9y
IGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQotICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQg
dGhlIGVudGlyZSB0ZXN0LgotICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24g
Z29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KLSAgaW50KiBwID0gTlVMTDsKLSAg
KnAgPSAzOyAvLyBTZWdmYXVsdCEKLX0KLWBgYAotCi1TaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0
aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bwotaW1wbGVtZW50IHRoZSBpbnRl
bmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Ci1wcm92
aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCi1gKEFTU0VSVHxF
WFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCi1gSGFzRmF0YWxGYWls
dXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdv
Ci1zdWJzZWN0aW9ucy4KLQotIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKLQotQXMg
c2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4g
YEFTU0VSVF8qYAotZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0
aGUgc3Vicm91dGluZQotcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCi0K
LU9mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2Vw
dGlvbnMuICBGb3IKLXRoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9z
OgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipW
ZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1l
bnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0
YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZC4gfAotCi1Pbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVj
dXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvCi1kZXRlcm1pbmUgdGhlIHJlc3VsdCBv
ZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCi1jcmVhdGVzIG5ldyB0
aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgotCi1FeGFtcGxl
czoKLQotYGBgCi1BU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7Ci0KLWludCBpOwotRVhQ
RUNUX05PX0ZBVEFMX0ZBSUxVUkUoewotICBpID0gQmFyKCk7Ci19KTsKLWBgYAotCi1fQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRo
cmVhZHMKLWFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotIyMjIENoZWNraW5nIGZvciBG
YWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIwotCi1gSGFzRmF0YWxGYWlsdXJlKClgIGlu
IHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgotYXNzZXJ0
aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhp
cwotYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0
aW5lIGFuZCByZXR1cm4KLWVhcmx5LgotCi1gYGAKLWNsYXNzIFRlc3QgewotIHB1YmxpYzoKLSAg
Li4uCi0gIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwotfTsKLWBgYAotCi1UaGUgdHlw
aWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0
aHJvd24KLWV4Y2VwdGlvbiwgaXM6Ci0KLWBgYAotVEVTVChGb29UZXN0LCBCYXIpIHsKLSAgU3Vi
cm91dGluZSgpOwotICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1
cmUuCi0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKLSAgICByZXR1cm47Ci0gIC8vIFRoZSBmb2xs
b3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotYGBgCi0KLUlmIGBIYXNGYXRhbEZh
aWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEg
dGVzdAotZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZp
eCwgYXMgaW46Ci0KLWBgYAotaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkp
Ci0gIHJldHVybjsKLWBgYAotCi1TaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0
dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAotaGFzIGF0IGxlYXN0IG9uZSBub24tZmF0
YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCi1pZiB0aGUgY3Vy
cmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KLQotX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClg
IGFuZAotYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgot
Ci0jIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCi0KLUluIHlvdXIgdGVzdCBjb2Rl
LCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZwotYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5n
IG9yIGFuIGBpbnRgLiBUaGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJl
IGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKLWlmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1w
bGUsIHRoZSB0ZXN0Ci0KLWBgYAotVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lk
Z2V0cykgewotICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNh
Z2UoKSk7Ci0gIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2Fn
ZSgpKTsKLX0KLWBgYAotCi13aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgotCi1gYGAKLS4uLgot
ICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYi
IGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IgotICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9
IjEyIgotICAgICAgICAgICAgTWluaW11bVdpZGdldHM9IjkiIC8+Ci0uLi4KLWBgYAotCi1fTm90
ZV86Ci0gICogYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRl
c3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0
aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0
ZXN0IGZpeHR1cmUgY2xhc3MuCi0gICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1
dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBi
eSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBgY2xhc3NuYW1lYCwgYHR5
cGVfcGFyYW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCi0gICogQ2FsbGluZyBgUmVjb3JkUHJvcGVy
dHkoKWAgb3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlzIGFsbG93ZWQuIElmIGl0
J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEgdGVzdCBjYXNlJ3MgYFNl
dFVwVGVzdENhc2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1ldGhvZHMsIGl0IHdpbGwg
YmUgYXR0cmlidXRlZCB0byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0ZXN0IGNhc2UuIElmIGl0
J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4gaW4gYSB0ZXN0IGVudmly
b25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3AtbGV2ZWwgWE1MIGVsZW1l
bnQuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIFNoYXJpbmcg
UmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBDYXNlICMKLQotCi0KLUdv
b2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3IgZWFjaCB0ZXN0
IGluIG9yZGVyIHRvIG1ha2UKLXRlc3RzIGluZGVwZW5kZW50IGFuZCBlYXNpZXIgdG8gZGVidWcu
IEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCi10aGF0IGFyZSBleHBlbnNp
dmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0IG1vZGVsIHByb2hpYml0
aXZlbHkKLWV4cGVuc2l2ZS4KLQotSWYgdGhlIHRlc3RzIGRvbid0IGNoYW5nZSB0aGUgcmVzb3Vy
Y2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQotc2luZ2xlIHJlc291cmNlIGNv
cHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVhci1kb3duLCBHb29nbGUg
VGVzdAotYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90ZWFyLWRvd24uIFRvIHVz
ZSBpdDoKLQotICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAoc2F5IGBGb29UZXN0YCAp
LCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVzIHRvIGhvbGQgdGhlIHNo
YXJlZCByZXNvdXJjZXMuCi0gIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBjbGFzcywgZGVm
aW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rpb24gKHJlbWVtYmVyIG5v
dCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGggYSBzbWFsbCBgdWAhKSB0
byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCi0KLVRoYXQncyBpdCEgR29v
Z2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2FzZSgpYCBiZWZvcmUgcnVu
bmluZyB0aGUKLV9maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZSAoaS5lLiBi
ZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0Ci1gRm9vVGVzdGAgb2JqZWN0KSwgYW5kIGNhbGxzIGBU
ZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0IHRlc3RfCi1pbiBpdCAo
aS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2JqZWN0KS4gSW4gYmV0d2Vl
biwgdGhlIHRlc3RzCi1jYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgotCi1SZW1lbWJlciB0
aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBjb2RlIGNhbid0IGRlcGVu
ZCBvbiBhIHRlc3QKLXByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhlci4gQWxzbywgdGhlIHRl
c3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCi1zdGF0ZSBvZiBhbnkgc2hhcmVkIHJlc291
cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5IG11c3QKLXJlc3RvcmUg
dGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFzc2luZyBjb250cm9sIHRv
IHRoZSBuZXh0Ci10ZXN0LgotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBwZXItdGVzdC1jYXNlIHNl
dC11cCBhbmQgdGVhci1kb3duOgotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBQZXItdGVzdC1jYXNlIHNldC11cC4KLSAgLy8g
Q2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgLy8gQ2Fu
IGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgp
IHsKLSAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKLSAgfQotCi0gIC8vIFBlci10ZXN0
LWNhc2UgdGVhci1kb3duLgotICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlz
IHRlc3QgY2FzZS4KLSAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KLSAgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgc2hhcmVkX3Jlc291cmNlXzsK
LSAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKLSAgfQotCi0gIC8vIFlvdSBjYW4gZGVmaW5l
IHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVzdWFsLgotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7IC4uLiB9Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgLi4uIH0K
LQotICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkgYWxsIHRlc3RzLgotICBz
dGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKLX07Ci0KLVQqIEZvb1Rlc3Q6OnNoYXJlZF9yZXNv
dXJjZV8gPSBOVUxMOwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKLSAgLi4uIHlvdSBjYW4g
cmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCi19Ci1URVNUX0YoRm9vVGVzdCwgVGVz
dDIpIHsKLSAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCi19
Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgR2xvYmFs
IFNldC1VcCBhbmQgVGVhci1Eb3duICMKLQotSnVzdCBhcyB5b3UgY2FuIGRvIHNldC11cCBhbmQg
dGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBjYXNlCi1sZXZlbCwgeW91
IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwuIEhlcmUncyBob3cuCi0K
LUZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmlyb25tZW50YCBjbGFzcyB0
byBkZWZpbmUgYSB0ZXN0Ci1lbnZpcm9ubWVudCwgd2hpY2gga25vd3MgaG93IHRvIHNldC11cCBh
bmQgdGVhci1kb3duOgotCi1gYGAKLWNsYXNzIEVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZp
cnR1YWwgfkVudmlyb25tZW50KCkge30KLSAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93
IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9Ci0g
IC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRvd24gdGhlIGVudmlyb25t
ZW50LgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQotfTsKLWBgYAotCi1UaGVuLCB5b3Ug
cmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBjbGFzcyB3aXRoIEdvb2ds
ZSBUZXN0IGJ5Ci1jYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoKWAgZnVuY3Rpb246Ci0KLWBgYAotRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9u
bWVudChFbnZpcm9ubWVudCogZW52KTsKLWBgYAotCi1Ob3csIHdoZW4gYFJVTl9BTExfVEVTVFMo
KWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZgotdGhl
IGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBpZiB0aGVyZSB3YXMgbm8g
ZmF0YWwgZmFpbHVyZXMsIGFuZAotZmluYWxseSBjYWxscyBgVGVhckRvd24oKWAgb2YgdGhlIGVu
dmlyb25tZW50IG9iamVjdC4KLQotSXQncyBPSyB0byByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9u
bWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgpYAotd2lsbCBiZSBjYWxs
ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0aGVpciBgVGVhckRvd24o
KWAgd2lsbCBiZQotY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgotCi1Ob3RlIHRoYXQgR29v
Z2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVkIGVudmlyb25tZW50IG9i
amVjdHMuCi1UaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBieSB5b3Vyc2VsZi4KLQot
WW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgYmVmb3JlIGBSVU5f
QUxMX1RFU1RTKClgIGlzCi1jYWxsZWQsIHByb2JhYmx5IGluIGBtYWluKClgLiBJZiB5b3UgdXNl
IGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCi10aGlzIGJlZm9yZSBgbWFpbigp
YCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8K
LWRlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6Ci0KLWBgYAotOjp0ZXN0aW5nOjpF
bnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmly
b25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7Ci1gYGAKLQotSG93ZXZlciwgd2Ugc3Ryb25nbHkg
cmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBhbmQgY2FsbAotYEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBvbiBpbml0aWFsaXphdGlv
biBvZiBnbG9iYWwKLXZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQg
bWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91Ci1yZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVu
dHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRoZQotZW52aXJvbm1lbnRz
IGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRoYXQgdGhlIGNvbXBpbGVy
IGRvZXNuJ3QKLWd1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xvYmFsIHZhcmlhYmxlcyBm
cm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cwotYXJlIGluaXRpYWxpemVkKS4KLQotX0F2
YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLQotIyBWYWx1ZSBQYXJhbWV0ZXJp
emVkIFRlc3RzICMKLQotX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFsbG93IHlvdSB0byB0
ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAotcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcg
bXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCi0KLVN1cHBvc2UgeW91IHdyaXRlIGEg
dGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5b3VyIGNvZGUgaXMgYWZm
ZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBsaW5lIGZsYWcuCi0KLWBg
YAotVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7Ci0gIC8vIEEgY29kZSB0byB0ZXN0IGZvbygp
LgotfQotYGBgCi0KLVVzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0ZXN0IGNvZGUgaW50byBh
IGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNoIHNpdHVhdGlvbnMuIFRo
ZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRoZSB0ZXN0aW5nIGNvZGUu
Ci0KLWBgYAotdm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1ZSkgewotICBmbGFnID0g
ZmxhZ192YWx1ZTsKLSAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCi19Ci0KLVRFU1QoTXlDb2Rl
VGVzdCwgVGVzdEZvbykgewotICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKLSAgVGVzdEZvb0hlbHBl
cih0cnVlKTsKLX0KLWBgYAotCi1CdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3Mu
IEZpcnN0LCB3aGVuIGEgdGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVj
b21lcyB1bmNsZWFyIHdoYXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFp
bC4gWW91IGNhbiBzdHJlYW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1Rg
L2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFs
bCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rp
b24gcGVyIHRlc3QuIFdoYXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJl
ZD8KLQotVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0
ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRo
IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KLQotSGVyZSBhcmUgc29t
ZSBvdGhlciBzaXR1YXRpb25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhh
bmR5OgotCi0gICogWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9m
IGFuIE9PIGludGVyZmFjZS4KLSAgKiBZb3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZh
cmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBp
cyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4g
ZG9pbmcgaXQhCi0KLSMjIEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMj
Ci0KLVRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQg
ZGVmaW5lIGEgZml4dHVyZQotY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6
OnRlc3Rpbmc6OlRlc3RgIGFuZAotYDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAo
dGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJmYWNlKSwKLXdoZXJlIGBUYCBpcyB0aGUgdHlwZSBv
ZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2UsIHlvdQotY2FuIGp1c3Qg
ZGVyaXZlIHRoZSBmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxU
PmAsCi13aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAg
YW5kCi1gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBj
b3B5YWJsZSB0eXBlLiBJZgotaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YKLXRoZSBwb2ludGVkIHZhbHVlcy4KLQotYGBg
Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBj
aGFyKj4gewotICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xh
c3MgbWVtYmVycyBoZXJlLgotICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxs
IEdldFBhcmFtKCkgZnJvbSBjbGFzcwotICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgotfTsKLQotLy8g
T3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4
dHVyZSBjbGFzczoKLWNsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0g
IC4uLgotfTsKLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsCi0gICAgICAgICAgICAg
ICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Ci0g
IC4uLgotfTsKLWBgYAotCi1UaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBh
cyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcKLXRoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRo
ZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCi0icGF0dGVybiIsIHdoaWNo
ZXZlciB5b3UgcHJlZmVyIHRvIHRoaW5rLgotCi1gYGAKLVRFU1RfUChGb29UZXN0LCBEb2VzQmxh
aCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGgg
dGhlIEdldFBhcmFtKCkgbWV0aG9kCi0gIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNz
OgotICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7Ci0gIC4uLgotfQotCi1URVNU
X1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKLSAgLi4uCi19Ci1gYGAKLQotRmluYWxseSwgeW91
IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVz
dAotY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3Qg
ZGVmaW5lcyBhIG51bWJlciBvZgotZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1l
dGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCi0oc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdl
bmVyYXRvcnNfLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLAotd2hpY2ggYXJlIGFsbCBpbiB0
aGUgYHRlc3RpbmdgIG5hbWVzcGFjZToKLQotfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAg
fCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4u
fWAuIFRoZSB2YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAx
LiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYFZhbHVlcyh2MSwgdjIs
IC4uLiwgdk4pYCAgIHwgWWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAotfCBgVmFsdWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihi
ZWdpbiwgZW5kKWAgfCBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwt
c3R5bGUgY29udGFpbmVyLCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNv
bnRhaW5lcmAsIGBiZWdpbmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFs
dWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1biB0aW1lLiAgfAotfCBgQm9vbCgpYCAgICAgICAgICAg
ICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwg
Y29tYmluYXRpb25zICh0aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBv
ZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25s
eSBhdmFpbGFibGUgaWYgeW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVh
ZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRp
c2FncmVlcywgeW91IGNhbiBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9U
VVBMRT0xYC4gU2VlIGNvbW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLiB8Ci0KLUZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhl
IGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCkuCi0KLVRoZSBmb2xsb3dpbmcgc3RhdGVt
ZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQot
ZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9l
ImAuCi0KLWBgYAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOwotYGBgCi0KLVRvIGRp
c3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNh
bgotaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8K
LWBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVk
IHRvIHRoZSBhY3R1YWwKLXRlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBw
cmVmaXhlcyBmb3IgZGlmZmVyZW50Ci1pbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhl
IGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlCi1uYW1lczoKLQotICAqIGBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAgKiBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKLSAgKiBgSW5z
dGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAotICAqIGBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAgKiBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKLSAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAot
Ci1Zb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1h
LXN1YnNldC1vZi10aGUtdGVzdHMpLgotCi1UaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRl
IGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaAotd2l0aCBwYXJhbWV0ZXIgdmFs
dWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6Ci0KLWBgYAotY29uc3QgY2hhciogcGV0c1tdID0geyJj
YXQiLCAiZG9nIn07Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlv
bk5hbWUsIEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVl
c0luKHBldHMpKTsKLWBgYAotCi1UaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92
ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6Ci0KLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1l
L0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKLSAgKiBgQW5vdGhlckluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBgQW5v
dGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAK
LQotUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFu
dGlhdGUgX2FsbF8KLXRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIg
ZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKLV9hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNU
X0NBU0VfUGAgc3RhdGVtZW50LgotCi1Zb3UgY2FuIHNlZQotW3RoZXNlXSguLi9zYW1wbGVzL3Nh
bXBsZTdfdW5pdHRlc3QuY2MpCi1bZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5j
YykgZm9yIG1vcmUgZXhhbXBsZXMuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAo
cmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCi0K
LSMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKLQotSW4g
dGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2Ft
ZSBzb3VyY2UKLWZpbGUuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgaW4gYQotbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0
YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMKLWtub3duIGFzIDxpPmFic3RyYWN0
IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91Ci1h
cmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUg
b2YgYWJzdHJhY3QKLXRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0
aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQKLWFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVy
ZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFzcy4gV2hlbgotc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBp
bnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAotYWxsIHRoZSBp
bnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCi0KLVRvIGRlZmluZSBhYnN0cmFj
dCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgotCi0gIDEu
IFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xh
c3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0
LmhgLiBUaGluayBvZiB0aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0g
IDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwg
d2hpY2ggaW5jbHVkZXMgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBs
ZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0KLU9uY2UgdGhleSBhcmUgZGVmaW5lZCwg
eW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZwotYGZvb19wYXJhbV90ZXN0Lmhg
LCBpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCi13aXRo
IGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJh
Y3QgdGVzdAotY2FzZSBtdWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJj
ZSBmaWxlcy4KLQotIyBUeXBlZCBUZXN0cyAjCi0KLVN1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKLXdhbnQgdG8gbWFrZSBz
dXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCi1P
ciwgeW91IG1heSBoYXZlIGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0
byBjb25mb3JtIHRvCi10aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBp
dC4gIEluIGJvdGggY2FzZXMsIHlvdSB3YW50Ci10aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVk
IGZvciBkaWZmZXJlbnQgdHlwZXMuCi0KLVdoaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBv
ciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvCi10ZXN0IChhbmQgeW91IG1heSBl
dmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKLXRoYXQg
eW91IGludm9rZSBmcm9tIHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2Nh
bGU6Ci1pZiB5b3Ugd2FudCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAg
d3JpdGluZyBfbVwqbl8KLWBURVNUYHMuCi0KLV9UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJl
cGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCi10eXBlcy4gIFlvdSBvbmx5
IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKLWtu
b3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlv
dSBkbyBpdDoKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBz
aG91bGQgYmUgcGFyYW1ldGVyaXplZAotYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0
IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICAuLi4K
LSAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKLSAgc3RhdGljIFQgc2hhcmVkXzsKLSAgVCB2
YWx1ZV87Ci19OwotYGBgCi0KLU5leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0
aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlCi1yZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRo
ZSBsaXN0OgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2ln
bmVkIGludD4gTXlUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKLWBg
YAotCi1UaGUgYHR5cGVkZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0Vg
IG1hY3JvIHRvIHBhcnNlCi1jb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwg
dGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluIHRoZQotdHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcg
bWFjcm8gYXJndW1lbnQuCi0KLVRoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBU
RVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdAotZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91
IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgotCi1gYGAKLVRZUEVE
X1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8g
dGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCi0gIC8vIHBhcmFtZXRl
ci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVx
dWlyZXMKLSAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMn
LgotICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKLQotICAvLyBUbyB2aXNpdCBzdGF0aWMg
bWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKLSAgLy8gcHJl
Zml4LgotICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOwotCi0gIC8vIFRvIHJlZmVyIHRvIHR5
cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Jwot
ICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBj
b21waWxlci4KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOwotICB2YWx1ZXMu
cHVzaF9iYWNrKG4pOwotICAuLi4KLX0KLQotVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0
eUEpIHsgLi4uIH0KLWBgYAotCi1Zb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0
LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOwotc2luY2UgdmVyc2lvbiAx
LjEuMC4KLQotIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIwotCi1fVHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3RzXyBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQotZG9uJ3Qg
cmVxdWlyZSB5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5z
dGVhZCwKLXlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0
ZSBpdCB3aXRoIGRpZmZlcmVudAotdHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0
YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUKLXNhbWUgcHJvZ3JhbS4KLQotSWYgeW91
IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEg
c3VpdGUKLW9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0
aGF0IGFueSB2YWxpZAotaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNo
b3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1dGhvcgotb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4g
anVzdCBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwotdHlwZSB0byB2ZXJpZnkg
dGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bwot
d3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLUZp
cnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBl
ZCB0ZXN0czoKLQotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgLi4uCi19OwotYGBgCi0KLU5leHQsIGRlY2xhcmUg
dGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgotCi1g
YGAKLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotYGBgCi0KLVRoZSBgX1BgIHN1ZmZpeCBp
cyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQotcHJlZmVy
IHRvIHRoaW5rLgotCi1UaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlvdQotY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMg
YXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0g
IC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFy
YW1ldGVyLgotICBUeXBlUGFyYW0gbiA9IDA7Ci0gIC4uLgotfQotCi1UWVBFRF9URVNUX1AoRm9v
VGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAKLQotTm93IHRoZSB0cmlja3kgcGFydDog
eW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCi1gUkVHSVNU
RVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRo
ZW0uCi1UaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZTsgdGhlIHJlc3QgYXJlCi10aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNl
OgotCi1gYGAKLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKLWBgYAotCi1GaW5hbGx5
LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMg
eW91Ci13YW50LiAgSWYgeW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5
b3UgY2FuIGAjaW5jbHVkZWAKLWl0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGlu
c3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpU
eXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKLWBgYAotCi1UbyBkaXN0aW5ndWlz
aCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQK
LXRvIHRoZSBgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4
IHRoYXQgd2lsbCBiZQotYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVt
YmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzCi1mb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KLQot
SW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25l
IHR5cGUsIHlvdQotY2FuIHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rp
bmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6Ci0KLWBgYAotSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7Ci1gYGAKLQotWW91IGNhbiBzZWUgYHNhbXBsZXMv
c2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsK
LXNpbmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVGVzdGluZyBQcml2YXRlIENvZGUgIwotCi1JZiB5
b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0
ZXN0cyBzaG91bGQgbm90Ci1icmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2Vy
dmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwgcGVyIHRoZQotX2JsYWNrLWJveCB0ZXN0aW5nIHBy
aW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQotdGhy
b3VnaCBpdHMgcHVibGljIGludGVyZmFjZXMuCi0KLUlmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxm
IG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAotY29uc2lkZXIg
aWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBk
byBzby4gSWYgeW91Ci1hYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFj
ZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUgYXJlCi10d28gY2FzZXMgdG8gY29uc2lkZXI6
Ci0KLSAgKiBTdGF0aWMgZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVy
IGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCi0gICogUHJpdmF0ZSBvciBw
cm90ZWN0ZWQgY2xhc3MgbWVtYmVycwotCi0jIyBTdGF0aWMgRnVuY3Rpb25zICMjCi0KLUJvdGgg
c3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFt
ZWQgbmFtZXNwYWNlIGFyZQotb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlv
biB1bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAotdGhlIGVudGlyZSBgLmNj
YCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVg
aW5nIGAuY2NgCi1maWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNo
b3VsZCBub3QgZG8gdGhpcyBpbiBwcm9kdWN0aW9uCi1jb2RlISkKLQotSG93ZXZlciwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCi1gZm9vOjpp
bnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJv
amVjdCBub3JtYWxseQotdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4g
YSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCi1wcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5
b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAotaGVhZGVyLCBi
dXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91
ciBpbnRlcm5hbAotaW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xp
ZW50cy4KLQotIyMgUHJpdmF0ZSBDbGFzcyBNZW1iZXJzICMjCi0KLVByaXZhdGUgY2xhc3MgbWVt
YmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmll
bmRzLgotVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJl
IHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEKLWZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBh
Y2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKLWZpeHR1cmUgY2FuIHRo
ZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZp
YSB0aGUKLWFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlv
dXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0bwoteW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRl
c3RzIGFyZSBub3QgYXV0b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5Ci1hcmUgdGVj
aG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KLQotQW5vdGhl
ciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFu
IGltcGxlbWVudGF0aW9uCi1jbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWlu
dGVybmFsLmhgIGZpbGUuIFlvdXIgY2xpZW50cyBhcmVuJ3QKLWFsbG93ZWQgdG8gaW5jbHVkZSB0
aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAot
KFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgotCi1PciwgeW91IGNhbiBkZWNsYXJlIGFu
IGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlz
Ci1saW5lIGluIHRoZSBjbGFzcyBib2R5OgotCi1gYGAKLUZSSUVORF9URVNUKFRlc3RDYXNlTmFt
ZSwgVGVzdE5hbWUpOwotYGBgCi0KLUZvciBleGFtcGxlLAotYGBgCi0vLyBmb28uaAotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKLQotLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KLWNsYXNz
IEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVy
bnNaZXJvT25OdWxsKTsKLSAgaW50IEJhcih2b2lkKiB4KTsKLX07Ci0KLS8vIGZvb190ZXN0LmNj
Ci0uLi4KLVRFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKLSAgRm9vIGZvbzsK
LSAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOwotICAvLyBVc2VzIEZvbydzIHByaXZhdGUg
bWVtYmVyIEJhcigpLgotfQotYGBgCi0KLVBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIg
Y2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAotZGVmaW5lIHlv
dXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3
YW50IHRoZW0gdG8KLWJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRo
ZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29rcyBsaWtlOgotCi1gYGAKLW5hbWVzcGFjZSBteV9uYW1l
c3BhY2UgewotCi1jbGFzcyBGb28gewotICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKLSAgRlJJRU5E
X1RFU1QoRm9vVGVzdCwgQmFyKTsKLSAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKLSAgLi4u
Ci0gIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbwotICAuLi4KLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZSBteV9uYW1lc3BhY2UKLWBgYAotCi1Zb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRo
aW5nIGxpa2U6Ci0KLWBgYAotbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7Ci1jbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLX07Ci0KLVRF
U1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0K
LQotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotYGBgCi0KLSMgQ2F0Y2hpbmcgRmFpbHVy
ZXMgIwotCi1JZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBH
b29nbGUgVGVzdCwgeW91J2xsCi13YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFt
ZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PwotR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4K
LQotVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSBy
ZXBvcnRzIGZhaWx1cmVzCi1jb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEg
ZmFpbHVyZSBieSB0aHJvd2luZyBhbgotZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4
Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQotVGVzdCBkb2Vzbid0IHVzZSBl
eGNlcHRpb25zLCBzbyBob3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQotZ2VuZXJh
dGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/Ci0KLWAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlu
cyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gIEFmdGVyIAotYCNpbmNsdWRlYGluZyB0aGlz
IGhlYWRlciwgeW91IGNhbiB1c2UKLQotfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1l
bnQsIHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Ci0KLXRvIGFzc2VydCB0aGF0IF9zdGF0ZW1lbnRfIGdlbmVyYXRl
cyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKLXdob3NlIG1lc3NhZ2UgY29udGFp
bnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKLQotfCBgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLWlmIHlvdSBhcmUgZXhwZWN0
aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCi0KLUZvciB0ZWNobmlj
YWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKLQotICAxLiBZb3UgY2Fubm90IHN0
cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCi0gIDEuIF9zdGF0ZW1lbnRf
IGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsIG5vbi1z
dGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhpc2Agb2JqZWN0Lgot
ICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgY2Fubm90IHJldHVy
biBhIHZhbHVlLgotCi1fTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHdpdGggdGhyZWFk
cyBpbiBtaW5kLiBPbmNlIHRoZQotc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVz
dC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYCBoYXZlCi1iZWVuIGltcGxlbWVudGVkLCBHb29nbGUg
VGVzdCB3aWxsIGJlY29tZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Ci15b3UgY2FuIHRoZW4g
dXNlIGFzc2VydGlvbnMgaW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuIEJlZm9yZQot
dGhhdCwgaG93ZXZlciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQg
dXNhZ2UuIE9uY2UKLXRocmVhZC1zYWZlLCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpYAotd2lsbCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBj
dXJyZW50IHRocmVhZCBvbmx5LiBJZiBfc3RhdGVtZW50XwotY3JlYXRlcyBuZXcgdGhyZWFkcywg
ZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyB3aWxsIGJlIGlnbm9yZWQuIElmCi15b3Ugd2FudCB0
byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5zdGVhZCwgeW91IHNob3VsZCB1
c2UKLXRoZSBmb2xsb3dpbmcgbWFjcm9zOgotCi18IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9B
TExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwg
YEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJz
dHJpbmdfYCk7YCB8Ci0KLSMgR2V0dGluZyB0aGUgQ3VycmVudCBUZXN0J3MgTmFtZSAjCi0KLVNv
bWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnRseSBydW5uaW5nIHRlc3QuCi1Gb3IgZXhhbXBsZSwgeW91IG1heSBiZSB1c2luZyB0aGUgYFNl
dFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBzZXQKLXRoZSBnb2xkZW4gZmls
ZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4gVGhlIGA6OnRlc3Rpbmc6OlRl
c3RJbmZvYAotY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246Ci0KLWBgYAotbmFtZXNwYWNlIHRl
c3RpbmcgewotCi1jbGFzcyBUZXN0SW5mbyB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVjdGl2ZWx5LgotICAvLwotICAv
LyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1ZSAtIGl0J3MgbWFuYWdlZCBi
eSB0aGUKLSAgLy8gVGVzdEluZm8gY2xhc3MuCi0gIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1l
KCkgY29uc3Q7Ci0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKLX07Ci0KLX0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCi1gYGAKLQotCi0+IFRvIG9idGFpbiBhIGBUZXN0SW5mb2Agb2JqZWN0IGZv
ciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAotYGN1cnJlbnRfdGVzdF9pbmZvKClg
IG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6Ci0KLWBgYAotLy8gR2V0cyBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KLS8vIERvIE5PVCBkZWxl
dGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBieSB0aGUgVW5pdFRlc3QgY2xh
c3MuCi1jb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICA6OnRl
c3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotcHJp
bnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMuXG4iLAotICAgICAgIHRlc3Rf
aW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotYGBgCi0KLWBjdXJy
ZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVyIGlmIG5vIHRlc3QgaXMgcnVu
bmluZy4gSW4KLXBhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0aGUgdGVzdCBjYXNlIG5hbWUg
aW4gYFRlc3RDYXNlU2V0VXAoKWAsCi1gVGVzdENhc2VUZWFyRG93bigpYCAod2hlcmUgeW91IGtu
b3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgotZnVuY3Rpb25zIGNhbGxlZCBm
cm9tIHRoZW0uCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIEV4
dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2ZW50cyAjCi0KLUdvb2dsZSBU
ZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwvYj4gdG8gbGV0IHlvdSByZWNl
aXZlCi1ub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBvZiBhIHRlc3QgcHJvZ3JhbSBh
bmQgdGVzdAotZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBsaXN0ZW4gdG8gaW5jbHVkZSB0
aGUgc3RhcnQgYW5kIGVuZCBvZgotdGhlIHRlc3QgcHJvZ3JhbSwgYSB0ZXN0IGNhc2UsIG9yIGEg
dGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQotdXNlIHRoaXMgQVBJIHRvIGF1Z21l
bnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRwdXQsCi1yZXBsYWNlIHRoZSBY
TUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgZm9ybSBvZgotb3V0
cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBjYW4gYWxzbyB1c2UgdGVzdCBl
dmVudHMgYXMKLWNoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJlc291cmNlIGxlYWsgY2hlY2tl
ciwgZm9yIGV4YW1wbGUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBz
aW5jZSB2MS40LjAuCi0KLSMjIERlZmluaW5nIEV2ZW50IExpc3RlbmVycyAjIwotCi1UbyBkZWZp
bmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhlcgotW3Rlc3Rpbmc6OlRlc3RF
dmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDk5MSkKLW9yIFt0ZXN0aW5n
OjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwNDQp
LgotVGhlIGZvcm1lciBpcyBhbiAoYWJzdHJhY3QpIGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBw
dXJlIHZpcnR1YWwgbWV0aG9kPGJyPgotY2FuIGJlIG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVz
dCBldmVudDwvaT4gKEZvciBleGFtcGxlLCB3aGVuIGEgdGVzdAotc3RhcnRzLCB0aGUgYE9uVGVz
dFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCi1h
biBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhbGwgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBz
dWNoIHRoYXQgYQotc3ViY2xhc3Mgb25seSBuZWVkcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBp
dCBjYXJlcyBhYm91dC4KLQotV2hlbiBhbiBldmVudCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMg
cGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uCi1hcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxv
d2luZyBhcmd1bWVudCB0eXBlcyBhcmUgdXNlZDoKLSAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMMTE1MSkgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVz
dCBwcm9ncmFtLAotICAqIFtUZXN0Q2FzZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w3Nzgp
IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25l
IG9yIG1vcmUgdGVzdHMsCi0gICogW1Rlc3RJbmZvXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0Lmgj
TDY0NCkgY29udGFpbnMgdGhlIHN0YXRlIG9mIGEgdGVzdCwgYW5kCi0gICogW1Rlc3RQYXJ0UmVz
dWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oI0w0NykgcmVwcmVzZW50cyB0
aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3NlcnRpb24uCi0KLUFuIGV2ZW50IGhhbmRsZXIgZnVuY3Rp
b24gY2FuIGV4YW1pbmUgdGhlIGFyZ3VtZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQKLW91dCBpbnRl
cmVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0n
cwotc3RhdGUuICBIZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi0gIGNsYXNzIE1pbmltYWxpc3RQ
cmludGVyIDogcHVibGljIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gICAg
Ly8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAotICAgICAgICAgICAgIHRlc3RfaW5mby50
ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgICB9Ci0KLSAgICAvLyBDYWxs
ZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCi0g
ICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoCi0gICAgICAgIGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgICAgIHByaW50ZigiJXMg
aW4gJXM6JWRcbiVzXG4iLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkg
PyAiKioqIEZhaWx1cmUiIDogIlN1Y2Nlc3MiLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1
bHQuZmlsZV9uYW1lKCksCi0gICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJl
cigpLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKLSAgICB9Ci0K
LSAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCi0gICAgdmlydHVhbCB2b2lkIE9uVGVz
dEVuZChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICAgIHByaW50
ZigiKioqIFRlc3QgJXMuJXMgZW5kaW5nLlxuIiwKLSAgICAgICAgICAgICB0ZXN0X2luZm8udGVz
dF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gICAgfQotICB9OwotYGBgCi0KLSMj
IFVzaW5nIEV2ZW50IExpc3RlbmVycyAjIwotCi1UbyB1c2UgdGhlIGV2ZW50IGxpc3RlbmVyIHlv
dSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0bwotdGhlIEdvb2dsZSBUZXN0
IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJlcHJlc2VudGVkIGJ5IGNsYXNzCi1bVGVzdEV2ZW50TGlz
dGVuZXJzXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwNjQpCi0tIG5vdGUgdGhlICJzIiBh
dCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCi1gbWFpbigpYCBmdW5jdGlvbiwgYmVmb3Jl
IGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAg
Ly8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0LgotICA6OnRlc3Rpbmc6OlRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KLSAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwotICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhl
IGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAuCi0gIGxpc3RlbmVycy5BcHBl
bmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0K
LWBgYAotCi1UaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0
IHByaW50ZXIgaXMgc3RpbGwgaW4KLWVmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3
aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKLXByaW50ZXIuIFRvIHN1cHByZXNz
IHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQotZXZlbnQgbGlz
dGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGlu
ZToKLWBgYAotICAuLi4KLSAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZh
dWx0X3Jlc3VsdF9wcmludGVyKCkpOwotICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0
UHJpbnRlcik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotTm93LCBzaXQgYmFj
ayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCi10ZXN0
cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMKLVtzYW1wbGVdKC4uL3NhbXBs
ZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCi0KLVlvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUg
bGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0KClgCi1vciBgT25UZXN0UGFy
dFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQg
aW4KLXRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVy
cyBhcmUgYWRkZWQgdG8KLXRoZSBlbmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJp
bnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCi1nZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVu
dCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQotcmVjZWl2ZWQgYnkgdGhlIGxp
c3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKLWxp
c3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJz
IGFkZGVkCi1lYXJsaWVyLgotCi0jIyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAj
IwotCi1Zb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBB
U1NFUlRfKigpYCwKLWBGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhl
cmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgotCi0gIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55
IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNl
IGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCi0gIDEuIEEg
bGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2Vk
IHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgotCi1XaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRo
ZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5lcnMKLXRoYXQgaGFuZGxlIGBP
blRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQot
ZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0
dGVyIGFyZQotYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgotCi1X
ZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0ZW5lcgotW2hlcmVdKC4uL3Nh
bXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgotCi0jIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczog
QWR2YW5jZWQgT3B0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGlu
YXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1bgotdGhlbSBkaXJlY3RseSBh
bmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZh
cmlhYmxlcwotYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3Jr
LCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAotYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAg
YmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCi0KLVRvIHNlZSBhIGxpc3Qgb2Ygc3Vw
cG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKLXByb2dy
YW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwg
b3IgYC8/YAotZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4z
LjAuCi0KLUlmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2
YXJpYWJsZSBhbmQgYnkgYQotZmxhZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9z
dCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQotc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNz
IHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZwotYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6
dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKLXRvIHNldCB0
aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KClgCi10byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6Ci1gYGAKLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRp
bWUgYnkgZGVmYXVsdC4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFs
c2U7Ci0KLSAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24g
dGhlIGNvbW1hbmQgbGluZS4KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJn
dik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi0jIyBTZWxlY3Rpbmcg
VGVzdHMgIyMKLQotVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Np
bmcgd2hpY2ggdGVzdHMgdG8gcnVuLgotCi0jIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIwotCi1T
b21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBh
IHByb2dyYW0gYmVmb3JlCi1ydW5uaW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBw
bGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZwotYC0tZ3Rlc3RfbGlzdF90ZXN0c2Ag
b3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2lu
ZwotZm9ybWF0OgotYGBgCi1UZXN0Q2FzZTEuCi0gIFRlc3ROYW1lMQotICBUZXN0TmFtZTIKLVRl
c3RDYXNlMi4KLSAgVGVzdE5hbWUKLWBgYAotCi1Ob25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJl
IGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KLWNvcnJl
c3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRo
ZSBUZXN0cyAjIyMKLQotQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxs
IHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgotU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4g
b25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgotcXVpY2ts
eSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZp
cm9ubWVudCB2YXJpYWJsZQotb3IgdGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRl
ciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhlCi10ZXN0cyB3aG9zZSBmdWxs
IG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhl
Ci1maWx0ZXIuCi0KLVRoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQg
bGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCi10aGUgcG9zaXRpdmUgcGF0dGVybnMp
IG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5vdGhlcgotJ2A6YCctc2VwYXJh
dGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBt
YXRjaGVzIHRoZQotZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBw
b3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKLW1hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUg
cGF0dGVybnMuCi0KLUEgcGF0dGVybiBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3Ry
aW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCi1jaGFyYWN0ZXIpLiBGb3IgY29udmVu
aWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbwotd3Jp
dHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCi0KLUZvciBleGFtcGxlOgotCi0gICogYC4v
Zm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCi0gICog
YC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0
byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVlLgotICAqIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBg
Rm9vVGVzdGAuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1
Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51
bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9
LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3RzLgotICAqIGAuL2Zvb190ZXN0
IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGlu
IHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJhcmAuCi0KLV9BdmFpbGFiaWxp
dHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRl
c3RzICMjIwotCi1JZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXgg
cmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCi1gRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5h
bWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCi1iZXR0ZXIg
dGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxl
ZCB0ZXN0cyBhcmUKLXN0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgotCi1JZiB5
b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRo
ZXIgYWRkIGBESVNBQkxFRF9gCi10byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0
LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YKLXRoZSB0ZXN0IGNhc2Ug
bmFtZS4KLQotRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5
IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Ci13aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgot
Ci1gYGAKLS8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgotVEVTVChGb29UZXN0LCBESVNBQkxF
RF9Eb2VzQWJjKSB7IC4uLiB9Ci0KLWNsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsgLi4uIH07Ci0KLS8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgotVEVT
VF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0KLWBgYAotCi1fTm90ZTpfIFRo
aXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYu
IFlvdSBzdGlsbAotaGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0
ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAotcHJpbnQgYSBiYW5uZXIgd2Fybmlu
ZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgotCi1f
VGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5
b3UgaGF2ZQotdXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJp
YyBmb3IgaW1wcm92aW5nIHlvdXIKLXRlc3QgcXVhbGl0eS4KLQotX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBU
ZXN0cyAjIyMKLQotVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNh
YmxpbmctdGVzdHMpIGluIHRlc3QKLWV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJv
Z3JhbSB3aXRoIHRoZQotYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Ig
c2V0IHRoZQotYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byBhIHZhbHVlIG90aGVyCi10aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdp
dGggdGhlCi1bLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMp
IGZsYWcgdG8gZnVydGhlciBzZWxlY3QKLXdoaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KLQot
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAu
Ci0KLSMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKLQotT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBy
dW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Ci13
aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJl
cHJvZHVjZSB0aGUgYnVnIHVuZGVyCi1hIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNv
dXJjZSBvZiBmcnVzdHJhdGlvbi4KLQotVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3Mg
eW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKLWluIGEgcHJvZ3Jh
bSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFp
bCBhbmQgZ2l2ZQoteW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoK
LQotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3Qg
MTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4gfAotfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAg
ICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAg
ICAgfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBm
aXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRl
ciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBk
ZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwK
LXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJg
IHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRp
bWVzLiB8Ci0KLUlmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVh
ci1kb3duIGNvZGUgcmVnaXN0ZXJlZAotdXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
YCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCi1pdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhl
IGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Ci10aGUgcmVwZWF0
IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxl
LgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgU2h1ZmZsaW5n
IHRoZSBUZXN0cyAjIwotCi1Zb3UgY2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZs
YWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCi1lbnZpcm9ubWVudCB2YXJpYWJsZSB0byBg
MWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCi1vcmRlci4gVGhp
cyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgotCi1CeSBk
ZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRo
ZSBjdXJyZW50Ci10aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBl
dmVyeSB0aW1lLiBUaGUgY29uc29sZQotb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2
YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCi1vcmRlci1yZWxhdGVkIHRlc3Qg
ZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNlZWQKLWV4cGxpY2l0bHksIHVz
ZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQotYEdURVNU
X1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBp
bnRlZ2VyCi1iZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6
IGl0IHRlbGxzIEdvb2dsZSBUZXN0Ci10byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxj
dWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Ci10aW1lLgotCi1JZiB5b3UgY29tYmlu
ZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQot
ZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0
ZXJhdGlvbi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYx
LjQuMC4KLQotIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMKLQotVGhpcyBzZWN0aW9uIHRl
YWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KLQot
IyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gdXNlIGNv
bG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKLXRo
ZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KLQot
WW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQg
dGhlIGAtLWd0ZXN0X2NvbG9yYAotY29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9y
IGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMsCi1kaXNhYmxlIGNvbG9ycywg
b3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29n
bGUKLVRlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0
byBhIHRlcm1pbmFsIGFuZCAob24KLW5vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBvcgotYHh0ZXJtLWNvbG9yYC4K
LQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBTdXBwcmVzc2lu
ZyB0aGUgRWxhcHNlZCBUaW1lICMjIwotCi1CeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMg
dGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRvCi1zdXBwcmVzcyB0aGF0LCBy
dW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCi1jb21t
YW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVu
dAotdmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3QuCi0KLV9BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwK
LXRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoq
IHByaW50ZWQuKQotCi0jIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIwotCi1Hb29nbGUg
VGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9u
IHRvIGl0cyBub3JtYWwKLXRleHR1YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBk
dXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgotaGVscCB5b3UgaWRlbnRpZnkgc2xv
dyB0ZXN0cy4KLQotVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09V
VFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi1gLS1ndGVzdF9vdXRwdXRgIGZsYWcg
dG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAot
Y3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3Qg
dXNlIHRoZSBzdHJpbmcKLWAieG1sImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUg
Zm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4KLXRoZSBjdXJyZW50IGRpcmVj
dG9yeS4KLQotSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpv
dXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCi1gInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJg
IG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KLXRo
YXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29f
dGVzdC54bWxgIGZvciB0ZXN0Ci1wcm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWAp
LiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBsZWZ0Ci1vdmVyIGZyb20gYSBw
cmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5n
LgotYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCi0KLVRoZSByZXBv
cnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCi1g
anVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGlu
dW91cyBidWlsZAotc3lzdGVtcyBsaWtlIFtIdWRzb25dKGh0dHBzOi8vaHVkc29uLmRldi5qYXZh
Lm5ldC8pLiBTaW5jZSB0aGF0IGZvcm1hdAotd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgZm9yIEph
dmEsIGEgbGl0dGxlIGludGVycHJldGF0aW9uIGlzIHJlcXVpcmVkCi10byBtYWtlIGl0IGFwcGx5
IHRvIEdvb2dsZSBUZXN0IHRlc3RzLCBhcyBzaG93biBoZXJlOgotCi1gYGAKLTx0ZXN0c3VpdGVz
IG5hbWU9IkFsbFRlc3RzIiAuLi4+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9jYXNlX25hbWUi
IC4uLj4KLSAgICA8dGVzdGNhc2UgbmFtZT0idGVzdF9uYW1lIiAuLi4+Ci0gICAgICA8ZmFpbHVy
ZSBtZXNzYWdlPSIuLi4iLz4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+
Ci08L3Rlc3RzdWl0ZXM+Ci1gYGAKLQotICAqIFRoZSByb290IGA8dGVzdHN1aXRlcz5gIGVsZW1l
bnQgY29ycmVzcG9uZHMgdG8gdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCi0gICogYDx0ZXN0c3Vp
dGU+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgY2FzZXMuCi0gICog
YDx0ZXN0Y2FzZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBmdW5j
dGlvbnMuCi0KLUZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCi0KLWBgYAotVEVT
VChNYXRoVGVzdCwgQWRkaXRpb24pIHsgLi4uIH0KLVRFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9u
KSB7IC4uLiB9Ci1URVNUKExvZ2ljVGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQotYGBg
Ci0KLWNvdWxkIGdlbmVyYXRlIHRoaXMgcmVwb3J0OgotCi1gYGAKLTw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEi
IGVycm9ycz0iMCIgdGltZT0iMzUiIG5hbWU9IkFsbFRlc3RzIj4KLSAgPHRlc3RzdWl0ZSBuYW1l
PSJNYXRoVGVzdCIgdGVzdHM9IjIiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjE1Ij4K
LSAgICA8dGVzdGNhc2UgbmFtZT0iQWRkaXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI3IiBjbGFz
c25hbWU9IiI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIDEpJiN4
MEE7IEFjdHVhbDogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiLz4KLSAgICAgIDxmYWlsdXJl
IG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgLTEpJiN4MEE7IEFjdHVhbDogMSYjeDBBO0V4cGVj
dGVkOiAwIiB0eXBlPSIiLz4KLSAgICA8L3Rlc3RjYXNlPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJT
dWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0iIj4KLSAgICA8L3Rl
c3RjYXNlPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRl
c3RzPSIxIiBmYWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSI1Ij4KLSAgICA8dGVzdGNhc2Ug
bmFtZT0iTm9uQ29udHJhZGljdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0i
Ij4KLSAgICA8L3Rlc3RjYXNlPgotICA8L3Rlc3RzdWl0ZT4KLTwvdGVzdHN1aXRlcz4KLWBgYAot
Ci1UaGluZ3MgdG8gbm90ZToKLQotICAqIFRoZSBgdGVzdHNgIGF0dHJpYnV0ZSBvZiBhIGA8dGVz
dHN1aXRlcz5gIG9yIGA8dGVzdHN1aXRlPmAgZWxlbWVudCB0ZWxscyBob3cgbWFueSB0ZXN0IGZ1
bmN0aW9ucyB0aGUgR29vZ2xlIFRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMsIHdo
aWxlIHRoZSBgZmFpbHVyZXNgIGF0dHJpYnV0ZSB0ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxl
ZC4KLSAgKiBUaGUgYHRpbWVgIGF0dHJpYnV0ZSBleHByZXNzZXMgdGhlIGR1cmF0aW9uIG9mIHRo
ZSB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGVudGlyZSB0ZXN0IHByb2dyYW0gaW4gbWlsbGlzZWNvbmRz
LgotICAqIEVhY2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBm
YWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgotICAqIFNvbWUgSlVuaXQgY29uY2VwdHMgZG9u
J3QgYXBwbHkgdG8gR29vZ2xlIFRlc3QsIHlldCB3ZSBoYXZlIHRvIGNvbmZvcm0gdG8gdGhlIERU
RC4gVGhlcmVmb3JlIHlvdSdsbCBzZWUgc29tZSBkdW1teSBlbGVtZW50cyBhbmQgYXR0cmlidXRl
cyBpbiB0aGUgcmVwb3J0LiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlc2UgcGFydHMuCi0KLV9B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBDb250cm9sbGluZyBIb3cg
RmFpbHVyZXMgQXJlIFJlcG9ydGVkICMjCi0KLSMjIyBUdXJuaW5nIEFzc2VydGlvbiBGYWlsdXJl
cyBpbnRvIEJyZWFrLVBvaW50cyAjIyMKLQotV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5k
ZXIgYSBkZWJ1Z2dlciwgaXQncyB2ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCi1kZWJ1Z2dlciBjYW4g
Y2F0Y2ggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGlu
dGVyYWN0aXZlCi1tb2RlLiBHb29nbGUgVGVzdCdzIF9icmVhay1vbi1mYWlsdXJlXyBtb2RlIHN1
cHBvcnRzIHRoaXMgYmVoYXZpb3IuCi0KLVRvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZQotb3RoZXIgdGhh
biBgMGAgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZWAKLWNvbW1hbmQgbGluZSBmbGFnLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYy4KLQotIyMjIERpc2FibGluZyBDYXRjaGluZyBUZXN0LVRocm93biBFeGNlcHRp
b25zICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0
IGV4Y2VwdGlvbnMgZW5hYmxlZC4gIElmCi1hIHRlc3QgdGhyb3dzIGEgQysrIGV4Y2VwdGlvbiBv
ciAob24gV2luZG93cykgYSBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbgotKFNFSCksIGJ5IGRlZmF1bHQg
R29vZ2xlIFRlc3QgY2F0Y2hlcyBpdCwgcmVwb3J0cyBpdCBhcyBhIHRlc3QKLWZhaWx1cmUsIGFu
ZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCB0ZXN0IG1ldGhvZC4gIFRoaXMgbWF4aW1pemVzIHRo
ZQotY292ZXJhZ2Ugb2YgYSB0ZXN0IHJ1bi4gIEFsc28sIG9uIFdpbmRvd3MgYW4gdW5jYXVnaHQg
ZXhjZXB0aW9uIHdpbGwKLWNhdXNlIGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hpbmcgdGhlIGV4
Y2VwdGlvbnMgYWxsb3dzIHlvdSB0byBydW4KLXRoZSB0ZXN0cyBhdXRvbWF0aWNhbGx5LgotCi1X
aGVuIGRlYnVnZ2luZyB0aGUgdGVzdCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1heSBpbnN0ZWFk
IHdhbnQgdGhlCi1leGNlcHRpb25zIHRvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVnZ2VyLCBzdWNo
IHRoYXQgeW91IGNhbiBleGFtaW5lCi10aGUgY2FsbCBzdGFjayB3aGVuIGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24uICBUbyBhY2hpZXZlIHRoYXQsIHNldCB0aGUKLWBHVEVTVF9DQVRDSF9FWENFUFRJ
T05TYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMGAsIG9yIHVzZSB0aGUKLWAtLWd0ZXN0X2Nh
dGNoX2V4Y2VwdGlvbnM9MGAgZmxhZyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzLgotCi0qKkF2YWls
YWJpbGl0eSoqOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgTGV0dGluZyBBbm90aGVyIFRl
c3RpbmcgRnJhbWV3b3JrIERyaXZlICMjIwotCi1JZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhh
dCBoYXMgYWxyZWFkeSBiZWVuIHVzaW5nIGFub3RoZXIgdGVzdGluZwotZnJhbWV3b3JrIGFuZCBp
cyBub3QgcmVhZHkgdG8gY29tcGxldGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoteW91
IGNhbiBnZXQgbXVjaCBvZiBHb29nbGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2Vy
dGlvbnMgaW4KLXlvdXIgZXhpc3RpbmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClg
IGZ1bmN0aW9uIHRvIGxvb2sKLWxpa2U6Ci0KLWBgYAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRlc3Rpbmc6OkdURVNU
X0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwotICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBU
ZXN0IG11c3QgYmUgaW5pdGlhbGl6ZWQuCi0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIC4uLiB3aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3
b3JrIHJlcXVpcmVzIC4uLgotfQotYGBgCi0KLVdpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xl
IFRlc3QgYXNzZXJ0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKLW5hdGl2ZSBhc3NlcnRpb25zIHlv
dXIgdGVzdGluZyBmcmFtZXdvcmsgcHJvdmlkZXMsIGZvciBleGFtcGxlOgotCi1gYGAKLXZvaWQg
VGVzdEZvb0RvZXNCYXIoKSB7Ci0gIEZvbyBmb287Ci0gIEVYUEVDVF9MRShmb28uQmFyKDEpLCAx
MDApOyAgICAgLy8gQSBHb29nbGUgVGVzdCBhc3NlcnRpb24uCi0gIENQUFVOSVRfQVNTRVJUKGZv
by5Jc0VtcHR5KCkpOyAgLy8gQSBuYXRpdmUgYXNzZXJ0aW9uLgotfQotYGBgCi0KLUlmIGEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIGZhaWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ug
YW5kCi10aHJvdyBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1
cmUgYnkgeW91ciBob3N0Ci10ZXN0aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIg
Y29kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQsCi1hIGZhaWxlZCBHb29nbGUgVGVzdCBhc3Nl
cnRpb24gd2lsbCBpbnN0ZWFkIGV4aXQgeW91ciBwcm9ncmFtIHdpdGggYQotbm9uLXplcm8gY29k
ZSwgd2hpY2ggd2lsbCBhbHNvIHNpZ25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKLXJ1
bm5lci4KLQotSWYgeW91IGRvbid0IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSkgPSB0cnVlO2AgaW4KLXlvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRp
dmVseSBlbmFibGUgdGhpcyBmZWF0dXJlIGJ5IHNwZWNpZnlpbmcKLXRoZSBgLS1ndGVzdF90aHJv
d19vbl9mYWlsdXJlYCBmbGFnIG9uIHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKLWBH
VEVTVF9USFJPV19PTl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJv
IHZhbHVlLgotCi1EZWF0aCB0ZXN0cyBhcmUgX25vdF8gc3VwcG9ydGVkIHdoZW4gb3RoZXIgdGVz
dCBmcmFtZXdvcmsgaXMgdXNlZCB0byBvcmdhbml6ZSB0ZXN0cy4KLQotX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjMuMC4KLQotIyMgRGlzdHJpYnV0aW5nIFRl
c3QgRnVuY3Rpb25zIHRvIE11bHRpcGxlIE1hY2hpbmVzICMjCi0KLUlmIHlvdSBoYXZlIG1vcmUg
dGhhbiBvbmUgbWFjaGluZSB5b3UgY2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCi15b3Ug
bWlnaHQgd2FudCB0byBydW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQg
dGhlCi1yZXN1bHQgZmFzdGVyLiAgV2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3
aGVyZSBlYWNoIG1hY2hpbmUKLWlzIGNhbGxlZCBhIF9zaGFyZF8uCi0KLUdvb2dsZSBUZXN0IGlz
IGNvbXBhdGlibGUgd2l0aCB0ZXN0IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKLXRo
aXMgZmVhdHVyZSwgeW91ciB0ZXN0IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5l
ZWRzIHRvIGRvCi10aGUgZm9sbG93aW5nOgotCi0gIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1h
Y2hpbmVzIChzaGFyZHMpIHRvIHJ1biB0aGUgdGVzdHMuCi0gIDEuIE9uIGVhY2ggc2hhcmQsIHNl
dCB0aGUgYEdURVNUX1RPVEFMX1NIQVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRv
dGFsIG51bWJlciBvZiBzaGFyZHMuICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRz
LgotICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gdGhlIGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFy
ZHMgbXVzdCBiZSBhc3NpZ25lZCBkaWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0
aGUgcmFuZ2UgYFswLCBHVEVTVF9UT1RBTF9TSEFSRFMgLSAxXWAuCi0gIDEuIFJ1biB0aGUgc2Ft
ZSB0ZXN0IHByb2dyYW0gb24gYWxsIHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUg
YWJvdmUgdHdvIGVudmlyb25tZW50IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQg
b2YgdGhlIHRlc3QgZnVuY3Rpb25zIHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRl
c3QgZnVuY3Rpb24gaW4gdGhlIHByb2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgotICAx
LiBXYWl0IGZvciBhbGwgc2hhcmRzIHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQg
dGhlIHJlc3VsdHMuCi0KLVlvdXIgcHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3Jp
dHRlbiB3aXRob3V0IEdvb2dsZSBUZXN0IGFuZAotdGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMg
cHJvdG9jb2wuICBJbiBvcmRlciBmb3IgeW91ciB0ZXN0IHJ1bm5lciB0bwotZmlndXJlIG91dCB3
aGljaCB0ZXN0IHN1cHBvcnRzIHNoYXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAot
dmFyaWFibGUgYEdURVNUX1NIQVJEX1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxl
IHBhdGguICBJZiBhCi10ZXN0IHByb2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3Jl
YXRlIHRoaXMgZmlsZSB0bwotYWNrbm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVu
dHMgb2YgdGhlIGZpbGUgYXJlIG5vdAotaW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2gg
d2UgbWF5IHN0aWNrIHNvbWUgdXNlZnVsIGluZm9ybWF0aW9uCi1pbiBpdCBpbiB0aGUgZnV0dXJl
Lik7IG90aGVyd2lzZSBpdCB3aWxsIG5vdCBjcmVhdGUgaXQuCi0KLUhlcmUncyBhbiBleGFtcGxl
IHRvIG1ha2UgaXQgY2xlYXIuICBTdXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCi1gZm9v
X3Rlc3RgIHRoYXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgotYGBg
Ci1URVNUKEEsIFYpCi1URVNUKEEsIFcpCi1URVNUKEIsIFgpCi1URVNUKEIsIFkpCi1URVNUKEIs
IFopCi1gYGAKLWFuZCB5b3UgaGF2ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBy
dW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluCi1wYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1Rf
VE9UQUxfU0hBUkRTYCB0byAzIG9uIGFsbCBtYWNoaW5lcywgYW5kCi1zZXQgYEdURVNUX1NIQVJE
X0lOREVYYCB0byAwLCAxLCBhbmQgMiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgotVGhl
biB5b3Ugd291bGQgcnVuIHRoZSBzYW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgotCi1H
b29nbGUgVGVzdCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBk
aXN0cmlidXRlZAotYWNyb3NzIHRoZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNj
ZW5hcmlvOgotCi0gICogTWFjaGluZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KLSAgKiBNYWNo
aW5lICMxIHJ1bnMgYEEuV2AgYW5kIGBCLllgLgotICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4K
LQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4z
LjAuCi0KLSMgRnVzaW5nIEdvb2dsZSBUZXN0IFNvdXJjZSBGaWxlcyAjCi0KLUdvb2dsZSBUZXN0
J3MgaW1wbGVtZW50YXRpb24gY29uc2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93
bgotdGVzdHMpLiAgU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVw
IGluIHR3byBmaWxlcyAoYQotYC5oYCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlv
dSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5ldwotbWFjaGluZSBhbmQgc3RhcnQgaGFja2lu
ZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCi1QeXRob24gc2Ny
aXB0IGBmdXNlX2d0ZXN0X2ZpbGVzLnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNp
bmNlIHJlbGVhc2UgMS4zLjApLgotQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92
ZSBpbnN0YWxsZWQgb24geW91ciBtYWNoaW5lLCBqdXN0Ci1nbyB0byB0aGF0IGRpcmVjdG9yeSBh
bmQgcnVuCi1gYGAKLXB5dGhvbiBmdXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKLWBgYAot
Ci1hbmQgeW91IHNob3VsZCBzZWUgYW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVh
dGVkIHdpdGggZmlsZXMKLWBndGVzdC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2Ag
aW4gaXQuICBUaGVzZSBmaWxlcyBjb250YWluCi1ldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBH
b29nbGUgVGVzdC4gIEp1c3QgY29weSB0aGVtIHRvIGFueXdoZXJlCi15b3Ugd2FudCBhbmQgeW91
IGFyZSByZWFkeSB0byB3cml0ZSB0ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQotW3NjcmlwdHMvdGVz
dC9NYWtlZmlsZV0oLi4vc2NyaXB0cy90ZXN0L01ha2VmaWxlKQotZmlsZSBhcyBhbiBleGFtcGxl
IG9uIGhvdyB0byBjb21waWxlIHlvdXIgdGVzdHMgYWdhaW5zdCB0aGVtLgotCi0jIFdoZXJlIHRv
IEdvIGZyb20gSGVyZSAjCi0KLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1v
cmUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgdG9vbHMgYW5kIGFyZQotcmVhZHkgdG8gdGFja2xlIG1v
cmUgY29tcGxleCB0ZXN0aW5nIHRhc2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVy
LCB5b3UKLWNhbiByZWFkIHRoZSBbRnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKEZBUS5tZCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0Rldkd1aWRlLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
ZG9jcy9EZXZHdWlkZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY0NjdhMzI3
NzFmNTNjNGE5Yjk1YTZhYTEzNGVkZGUzZmFkZjYzNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0Rldkd1aWRlLm1kCisrKyAv
ZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLQotCi1JZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4g
dW5kZXJzdGFuZGluZyB0aGUgaW50ZXJuYWxzIG9mIEdvb2dsZSBUZXN0LAotYnVpbGRpbmcgZnJv
bSBzb3VyY2UsIG9yIGNvbnRyaWJ1dGluZyBpZGVhcyBvciBtb2RpZmljYXRpb25zIHRvIHRoZQot
cHJvamVjdCwgdGhlbiB0aGlzIGRvY3VtZW50IGlzIGZvciB5b3UuCi0KLSMgSW50cm9kdWN0aW9u
ICMKLQotRmlyc3QsIGxldCdzIGdpdmUgeW91IHNvbWUgYmFja2dyb3VuZCBvZiB0aGUgcHJvamVj
dC4KLQotIyMgTGljZW5zaW5nICMjCi0KLUFsbCBHb29nbGUgVGVzdCBzb3VyY2UgYW5kIHByZS1i
dWlsdCBwYWNrYWdlcyBhcmUgcHJvdmlkZWQgdW5kZXIgdGhlIFtOZXcgQlNEIExpY2Vuc2VdKGh0
dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwKS4KLQotIyMg
VGhlIEdvb2dsZSBUZXN0IENvbW11bml0eSAjIwotCi1UaGUgR29vZ2xlIFRlc3QgY29tbXVuaXR5
IGV4aXN0cyBwcmltYXJpbHkgdGhyb3VnaCB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9n
cm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3JrKSBhbmQgdGhlIEdpdEh1
YiByZXBvc2l0b3J5LgotWW91IGFyZSBkZWZpbml0ZWx5IGVuY291cmFnZWQgdG8gY29udHJpYnV0
ZSB0byB0aGUKLWRpc2N1c3Npb24gYW5kIHlvdSBjYW4gYWxzbyBoZWxwIHVzIHRvIGtlZXAgdGhl
IGVmZmVjdGl2ZW5lc3Mgb2YgdGhlCi1ncm91cCBoaWdoIGJ5IGZvbGxvd2luZyBhbmQgcHJvbW90
aW5nIHRoZSBndWlkZWxpbmVzIGxpc3RlZCBoZXJlLgotCi0jIyMgUGxlYXNlIEJlIEZyaWVuZGx5
ICMjIwotCi1TaG93aW5nIGNvdXJ0ZXN5IGFuZCByZXNwZWN0IHRvIG90aGVycyBpcyBhIHZpdGFs
IHBhcnQgb2YgdGhlIEdvb2dsZQotY3VsdHVyZSwgYW5kIHdlIHN0cm9uZ2x5IGVuY291cmFnZSBl
dmVyeW9uZSBwYXJ0aWNpcGF0aW5nIGluIEdvb2dsZQotVGVzdCBkZXZlbG9wbWVudCB0byBqb2lu
IHVzIGluIGFjY2VwdGluZyBub3RoaW5nIGxlc3MuIE9mIGNvdXJzZSwKLWJlaW5nIGNvdXJ0ZW91
cyBpcyBub3QgdGhlIHNhbWUgYXMgZmFpbGluZyB0byBjb25zdHJ1Y3RpdmVseSBkaXNhZ3JlZQot
d2l0aCBlYWNoIG90aGVyLCBidXQgaXQgZG9lcyBtZWFuIHRoYXQgd2Ugc2hvdWxkIGJlIHJlc3Bl
Y3RmdWwgb2YgZWFjaAotb3RoZXIgd2hlbiBlbnVtZXJhdGluZyB0aGUgNDIgdGVjaG5pY2FsIHJl
YXNvbnMgdGhhdCBhIHBhcnRpY3VsYXIKLXByb3Bvc2FsIG1heSBub3QgYmUgdGhlIGJlc3QgY2hv
aWNlLiBUaGVyZSdzIG5ldmVyIGEgcmVhc29uIHRvIGJlCi1hbnRhZ29uaXN0aWMgb3IgZGlzbWlz
c2l2ZSB0b3dhcmQgYW55b25lIHdobyBpcyBzaW5jZXJlbHkgdHJ5aW5nIHRvCi1jb250cmlidXRl
IHRvIGEgZGlzY3Vzc2lvbi4KLQotU3VyZSwgQysrIHRlc3RpbmcgaXMgc2VyaW91cyBidXNpbmVz
cyBhbmQgYWxsIHRoYXQsIGJ1dCBpdCdzIGFsc28KLWEgbG90IG9mIGZ1bi4gTGV0J3Mga2VlcCBp
dCB0aGF0IHdheS4gTGV0J3Mgc3RyaXZlIHRvIGJlIG9uZSBvZiB0aGUKLWZyaWVuZGxpZXN0IGNv
bW11bml0aWVzIGluIGFsbCBvZiBvcGVuIHNvdXJjZS4KLQotQXMgYWx3YXlzLCBkaXNjdXNzIEdv
b2dsZSBUZXN0IGluIHRoZSBvZmZpY2lhbCBHb29nbGVUZXN0IGRpc2N1c3Npb24gZ3JvdXAuCi1Z
b3UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBzdWJtaXQgY29kZSBpbiBvcmRlciB0byBzaWduIHVw
LiBZb3VyIHBhcnRpY2lwYXRpb24KLWl0c2VsZiBpcyBhIHZhbHVhYmxlIGNvbnRyaWJ1dGlvbi4K
LQotIyBXb3JraW5nIHdpdGggdGhlIENvZGUgIwotCi1JZiB5b3Ugd2FudCB0byBnZXQgeW91ciBo
YW5kcyBkaXJ0eSB3aXRoIHRoZSBjb2RlIGluc2lkZSBHb29nbGUgVGVzdCwKLXRoaXMgaXMgdGhl
IHNlY3Rpb24gZm9yIHlvdS4KLQotIyMgQ29tcGlsaW5nIGZyb20gU291cmNlICMjCi0KLU9uY2Ug
eW91IGNoZWNrIG91dCB0aGUgY29kZSwgeW91IGNhbiBmaW5kIGluc3RydWN0aW9ucyBvbiBob3cg
dG8KLWNvbXBpbGUgaXQgaW4gdGhlIFtSRUFETUVdKC4uL1JFQURNRS5tZCkgZmlsZS4KLQotIyMg
VGVzdGluZyAjIwotCi1BIHRlc3RpbmcgZnJhbWV3b3JrIGlzIG9mIG5vIGdvb2QgaWYgaXRzZWxm
IGlzIG5vdCB0aG9yb3VnaGx5IHRlc3RlZC4KLVRlc3RzIHNob3VsZCBiZSB3cml0dGVuIGZvciBh
bnkgbmV3IGNvZGUsIGFuZCBjaGFuZ2VzIHNob3VsZCBiZQotdmVyaWZpZWQgdG8gbm90IGJyZWFr
IGV4aXN0aW5nIHRlc3RzIGJlZm9yZSB0aGV5IGFyZSBzdWJtaXR0ZWQgZm9yCi1yZXZpZXcuIFRv
IHBlcmZvcm0gdGhlIHRlc3RzLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbgotW1JFQURNRV0o
Li4vUkVBRE1FLm1kKSBhbmQgdmVyaWZ5IHRoYXQgdGhlcmUgYXJlIG5vIGZhaWx1cmVzLgotCi0j
IENvbnRyaWJ1dGluZyBDb2RlICMKLQotV2UgYXJlIGV4Y2l0ZWQgdGhhdCBHb29nbGUgVGVzdCBp
cyBub3cgb3BlbiBzb3VyY2UsIGFuZCBob3BlIHRvIGdldAotZ3JlYXQgcGF0Y2hlcyBmcm9tIHRo
ZSBjb21tdW5pdHkuIEJlZm9yZSB5b3UgZmlyZSB1cCB5b3VyIGZhdm9yaXRlIElERQotYW5kIGJl
Z2luIGhhbW1lcmluZyBhd2F5IGF0IHRoYXQgbmV3IGZlYXR1cmUsIHRob3VnaCwgcGxlYXNlIHRh
a2UgdGhlCi10aW1lIHRvIHJlYWQgdGhpcyBzZWN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBwcm9j
ZXNzLiBXaGlsZSBpdCBzZWVtcwotcmlnb3JvdXMsIHdlIHdhbnQgdG8ga2VlcCBhIGhpZ2ggc3Rh
bmRhcmQgb2YgcXVhbGl0eSBpbiB0aGUgY29kZQotYmFzZS4KLQotIyMgQ29udHJpYnV0b3IgTGlj
ZW5zZSBBZ3JlZW1lbnRzICMjCi0KLVlvdSBtdXN0IHNpZ24gYSBDb250cmlidXRvciBMaWNlbnNl
IEFncmVlbWVudCAoQ0xBKSBiZWZvcmUgd2UgY2FuCi1hY2NlcHQgYW55IGNvZGUuICBUaGUgQ0xB
IHByb3RlY3RzIHlvdSBhbmQgdXMuCi0KLSAgKiBJZiB5b3UgYXJlIGFuIGluZGl2aWR1YWwgd3Jp
dGluZyBvcmlnaW5hbCBzb3VyY2UgY29kZSBhbmQgeW91J3JlIHN1cmUgeW91IG93biB0aGUgaW50
ZWxsZWN0dWFsIHByb3BlcnR5LCB0aGVuIHlvdSdsbCBuZWVkIHRvIHNpZ24gYW4gW2luZGl2aWR1
YWwgQ0xBXShodHRwOi8vY29kZS5nb29nbGUuY29tL2xlZ2FsL2luZGl2aWR1YWwtY2xhLXYxLjAu
aHRtbCkuCi0gICogSWYgeW91IHdvcmsgZm9yIGEgY29tcGFueSB0aGF0IHdhbnRzIHRvIGFsbG93
IHlvdSB0byBjb250cmlidXRlIHlvdXIgd29yayB0byBHb29nbGUgVGVzdCwgdGhlbiB5b3UnbGwg
bmVlZCB0byBzaWduIGEgW2NvcnBvcmF0ZSBDTEFdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vbGVn
YWwvY29ycG9yYXRlLWNsYS12MS4wLmh0bWwpLgotCi1Gb2xsb3cgZWl0aGVyIG9mIHRoZSB0d28g
bGlua3MgYWJvdmUgdG8gYWNjZXNzIHRoZSBhcHByb3ByaWF0ZSBDTEEgYW5kCi1pbnN0cnVjdGlv
bnMgZm9yIGhvdyB0byBzaWduIGFuZCByZXR1cm4gaXQuCi0KLSMjIENvZGluZyBTdHlsZSAjIwot
Ci1UbyBrZWVwIHRoZSBzb3VyY2UgY29uc2lzdGVudCwgcmVhZGFibGUsIGRpZmZhYmxlIGFuZCBl
YXN5IHRvIG1lcmdlLAotd2UgdXNlIGEgZmFpcmx5IHJpZ2lkIGNvZGluZyBzdHlsZSwgYXMgZGVm
aW5lZCBieSB0aGUgW2dvb2dsZS1zdHlsZWd1aWRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXN0eWxlZ3VpZGUvKSBwcm9qZWN0LiAgQWxsIHBhdGNoZXMgd2lsbCBiZSBleHBlY3Rl
ZAotdG8gY29uZm9ybSB0byB0aGUgc3R5bGUgb3V0bGluZWQgW2hlcmVdKGh0dHA6Ly9nb29nbGUt
c3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sKS4KLQotIyMg
VXBkYXRpbmcgR2VuZXJhdGVkIENvZGUgIyMKLQotU29tZSBvZiBHb29nbGUgVGVzdCdzIHNvdXJj
ZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBQdW1wIHRvb2wgKGEKLVB5dGhvbiBzY3JpcHQp
LiAgSWYgeW91IG5lZWQgdG8gdXBkYXRlIHN1Y2ggZmlsZXMsIHBsZWFzZSBtb2RpZnkgdGhlCi1z
b3VyY2UgKGBmb28uaC5wdW1wYCkgYW5kIHJlLWdlbmVyYXRlIHRoZSBDKysgZmlsZSB1c2luZyBQ
dW1wLiAgWW91Ci1jYW4gcmVhZCB0aGUgUHVtcE1hbnVhbCBmb3IgZGV0YWlscy4KLQotIyMgU3Vi
bWl0dGluZyBQYXRjaGVzICMjCi0KLVBsZWFzZSBkbyBzdWJtaXQgY29kZS4gSGVyZSdzIHdoYXQg
eW91IG5lZWQgdG8gZG86Ci0KLSAgMS4gQSBzdWJtaXNzaW9uIHNob3VsZCBiZSBhIHNldCBvZiBj
aGFuZ2VzIHRoYXQgYWRkcmVzc2VzIG9uZSBpc3N1ZSBpbiB0aGUgW2lzc3VlIHRyYWNrZXJdKGh0
dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9pc3N1ZXMpLiBQbGVhc2UgZG9uJ3Qg
bWl4IG1vcmUgdGhhbiBvbmUgbG9naWNhbCBjaGFuZ2UgcGVyIHN1Ym1pdHRhbCwgYmVjYXVzZSBp
dCBtYWtlcyB0aGUgaGlzdG9yeSBoYXJkIHRvIGZvbGxvdy4gSWYgeW91IHdhbnQgdG8gbWFrZSBh
IGNoYW5nZSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgaXNzdWUgaW4gdGhlIGlz
c3VlIHRyYWNrZXIsIHBsZWFzZSBjcmVhdGUgb25lLgotICAxLiBBbHNvLCBjb29yZGluYXRlIHdp
dGggdGVhbSBtZW1iZXJzIHRoYXQgYXJlIGxpc3RlZCBvbiB0aGUgaXNzdWUgaW4gcXVlc3Rpb24u
IFRoaXMgZW5zdXJlcyB0aGF0IHdvcmsgaXNuJ3QgYmVpbmcgZHVwbGljYXRlZCBhbmQgY29tbXVu
aWNhdGluZyB5b3VyIHBsYW4gZWFybHkgYWxzbyBnZW5lcmFsbHkgbGVhZHMgdG8gYmV0dGVyIHBh
dGNoZXMuCi0gIDEuIEVuc3VyZSB0aGF0IHlvdXIgY29kZSBhZGhlcmVzIHRvIHRoZSBbR29vZ2xl
IFRlc3Qgc291cmNlIGNvZGUgc3R5bGVdKCNDb2RpbmdfU3R5bGUubWQpLgotICAxLiBFbnN1cmUg
dGhhdCB0aGVyZSBhcmUgdW5pdCB0ZXN0cyBmb3IgeW91ciBjb2RlLgotICAxLiBTaWduIGEgQ29u
dHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQuCi0gIDEuIENyZWF0ZSBhIFB1bGwgUmVxdWVzdCBp
biB0aGUgdXN1YWwgd2F5LgotCi0jIyBHb29nbGUgVGVzdCBDb21taXR0ZXJzICMjCi0KLVRoZSBj
dXJyZW50IG1lbWJlcnMgb2YgdGhlIEdvb2dsZSBUZXN0IGVuZ2luZWVyaW5nIHRlYW0gYXJlIHRo
ZSBvbmx5Ci1jb21taXR0ZXJzIGF0IHByZXNlbnQuIEluIHRoZSBncmVhdCB0cmFkaXRpb24gb2Yg
ZWF0aW5nIG9uZSdzIG93bgotZG9nZm9vZCwgd2Ugd2lsbCBiZSByZXF1aXJpbmcgZWFjaCBuZXcg
R29vZ2xlIFRlc3QgZW5naW5lZXJpbmcgdGVhbQotbWVtYmVyIHRvIGVhcm4gdGhlIHJpZ2h0IHRv
IGJlY29tZSBhIGNvbW1pdHRlciBieSBmb2xsb3dpbmcgdGhlCi1wcm9jZWR1cmVzIGluIHRoaXMg
ZG9jdW1lbnQsIHdyaXRpbmcgY29uc2lzdGVudGx5IGdyZWF0IGNvZGUsIGFuZAotZGVtb25zdHJh
dGluZyByZXBlYXRlZGx5IHRoYXQgaGUgb3Igc2hlIHRydWx5IGdldHMgdGhlIHplbiBvZiBHb29n
bGUKLVRlc3QuCi0KLSMgUmVsZWFzZSBQcm9jZXNzICMKLQotV2UgZm9sbG93IGEgdHlwaWNhbCBy
ZWxlYXNlIHByb2Nlc3M6Ci0KLSAgMS4gQSByZWxlYXNlIGJyYW5jaCBuYW1lZCBgcmVsZWFzZS1Y
LllgIGlzIGNyZWF0ZWQuCi0gIDEuIEJ1Z3MgYXJlIGZpeGVkIGFuZCBmZWF0dXJlcyBhcmUgYWRk
ZWQgaW4gdHJ1bms7IHRob3NlIGluZGl2aWR1YWwgcGF0Y2hlcyBhcmUgbWVyZ2VkIGludG8gdGhl
IHJlbGVhc2UgYnJhbmNoIHVudGlsIGl0J3Mgc3RhYmxlLgotICAxLiBBbiBpbmRpdmlkdWFsIHBv
aW50IHJlbGVhc2UgKHRoZSBgWmAgaW4gYFguWS5aYCkgaXMgbWFkZSBieSBjcmVhdGluZyBhIHRh
ZyBmcm9tIHRoZSBicmFuY2guCi0gIDEuIFJlcGVhdCBzdGVwcyAyIGFuZCAzIHRocm91Z2hvdXQg
b25lIHJlbGVhc2UgY3ljbGUgKGFzIGRldGVybWluZWQgYnkgZmVhdHVyZXMgb3IgdGltZSkuCi0g
IDEuIEdvIGJhY2sgdG8gc3RlcCAxIHRvIGNyZWF0ZSBhbm90aGVyIHJlbGVhc2UgYnJhbmNoIGFu
ZCBzbyBvbi4KLQotLS0tCi0KLVRoaXMgcGFnZSBpcyBiYXNlZCBvbiB0aGUgW01ha2luZyBHV1Qg
QmV0dGVyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3dlYnRvb2xraXQvbWFraW5nZ3d0YmV0dGVy
Lmh0bWwpIGd1aWRlIGZyb20gdGhlIFtHb29nbGUgV2ViIFRvb2xraXRdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vd2VidG9vbGtpdC8pIHByb2plY3QuICBFeGNlcHQgYXMgb3RoZXJ3aXNlIFtub3Rl
ZF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wb2xpY2llcy5odG1sI3Jlc3RyaWN0aW9ucyksIHRo
ZSBjb250ZW50IG9mIHRoaXMgcGFnZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW0NyZWF0aXZlIENv
bW1vbnMgQXR0cmlidXRpb24gMi41IExpY2Vuc2VdKGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3Jn
L2xpY2Vuc2VzL2J5LzIuNS8pLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9Eb2N1bWVu
dGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9Eb2N1bWVudGF0aW9uLm1kCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4Y2ExYWFjNzU5OTM3MmUwZDk1MTlhMjEwYzMzNGFlYjM5MzA2
MWMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAg
QEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZvciBHb29n
bGUgVGVzdCAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioKLS0tICoqaWYgeW91IHVzZSBhIHJl
bGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QsIHBsZWFzZSByZWFkIHRoZQotZG9jdW1lbnRh
dGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3RlYWQuKioKLQotICAqIFtQcmltZXJd
KFByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4K
LSAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4KLSAgKiBb
QWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCkgLS0gbGVhcm4gbW9yZSBhYm91dCBHb29n
bGUgVGVzdC4KLSAgKiBbWGNvZGVHdWlkZV0oWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVzZSBH
b29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCi0gICogW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rp
b25zXShGQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRo
ZSBtYWlsaW5nIGxpc3QuCi0KLVRvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgVGVzdCwgcmVh
ZDoKLQotICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3
cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICogW1B1bXBNYW51YWxdKFB1bXBNYW51YWwubWQp
IC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzLgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3Mv
RkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9GQVEubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDVmZDZjYjcyMzhhMTliN2E3MWE0YTk1YTYzYmU5M2UxOTIxNDUyZDYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9G
QVEubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDg3ICswLDAgQEAKLQotCi1JZiB5b3UgY2Fubm90
IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGhlcmUsIGFuZCB5b3UgaGF2ZSByZWFk
Ci1bUHJpbWVyXShQcmltZXIubWQpIGFuZCBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5t
ZCksIHNlbmQgaXQgdG8KLWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4KLQot
IyMgV2h5IHNob3VsZCBJIHVzZSBHb29nbGUgVGVzdCBpbnN0ZWFkIG9mIG15IGZhdm9yaXRlIEMr
KyB0ZXN0aW5nIGZyYW1ld29yaz8gIyMKLQotRmlyc3QsIGxldCB1cyBzYXkgY2xlYXJseSB0aGF0
IHdlIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgotd2hpY2ggQysrIHRlc3Rp
bmcgZnJhbWV3b3JrIGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkgZmluZQotZnJh
bWV3b3JrcyBmb3Igd3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1lbmRvdXMgcmVz
cGVjdCBmb3IKLXRoZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2UgZG9uJ3QgdGhp
bmsgdGhlcmUgaXMgKG9yIHdpbGwKLWJlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29yayAtIHlvdSBo
YXZlIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQotcGFydGljdWxhciB0YXNrIHlvdSBh
cmUgdGFja2xpbmcuCi0KLVdlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3ZSBjb3VsZG4n
dCBmaW5kIHRoZSByaWdodCBjb21iaW5hdGlvbgotb2YgZmVhdHVyZXMgYW5kIGNvbnZlbmllbmNl
cyBpbiBhbiBleGlzdGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXwotbmVlZHMuICBUaGUg
Zm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJvdXQgR29vZ2xl
Ci1UZXN0LiAgV2UgZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29vZ2xlIFRlc3Qg
LSByYXRoZXIsIHRoZQotY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUgVGVzdCB0aGUg
Y2hvaWNlIGZvciB1cy4gIFdlIGhvcGUgdGhpcwotbGlzdCBjYW4gaGVscCB5b3UgZGVjaWRlIHdo
ZXRoZXIgaXQgaXMgZm9yIHlvdSB0b28uCi0KLSAgKiBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0
byBiZSBwb3J0YWJsZTogaXQgZG9lc24ndCByZXF1aXJlIGV4Y2VwdGlvbnMgb3IgUlRUSTsgaXQg
d29ya3MgYXJvdW5kIHZhcmlvdXMgYnVncyBpbiB2YXJpb3VzIGNvbXBpbGVycyBhbmQgZW52aXJv
bm1lbnRzOyBldGMuICBBcyBhIHJlc3VsdCwgaXQgd29ya3Mgb24gTGludXgsIE1hYyBPUyBYLCBX
aW5kb3dzIGFuZCBzZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGluZyBzeXN0ZW1zLgotICAqIE5vbmZh
dGFsIGFzc2VydGlvbnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJvdmVuIHRvIGJlIGdyZWF0IHRpbWUg
c2F2ZXJzLCBhcyB0aGV5IGFsbG93IGEgdGVzdCB0byByZXBvcnQgbXVsdGlwbGUgZmFpbHVyZXMg
aW4gYSBzaW5nbGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUuCi0gICogSXQncyBlYXN5IHRvIHdy
aXRlIGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdlczogeW91IGp1
c3QgdXNlIHRoZSBzdHJlYW0gc3ludGF4IHRvIGFwcGVuZCBhbnkgYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiwgZS5nLiBgQVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwgIiB3aGVyZSBpID0gIiA8PCBpO2Au
ICBJdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1hY3JvcyBvciBzcGVjaWFsIGZ1bmN0
aW9ucy4KLSAgKiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgeW91ciB0ZXN0cyBh
bmQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4g
dGhlbS4KLSAgKiBEZWF0aCB0ZXN0cyBhcmUgcHJldHR5IGhhbmR5IGZvciBlbnN1cmluZyB0aGF0
IHlvdXIgYXNzZXJ0cyBpbiBwcm9kdWN0aW9uIGNvZGUgYXJlIHRyaWdnZXJlZCBieSB0aGUgcmln
aHQgY29uZGl0aW9ucy4KLSAgKiBgU0NPUEVEX1RSQUNFYCBoZWxwcyB5b3UgdW5kZXJzdGFuZCB0
aGUgY29udGV4dCBvZiBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGl0IGNvbWVzIGZyb20gaW5z
aWRlIGEgc3ViLXJvdXRpbmUgb3IgbG9vcC4KLSAgKiBZb3UgY2FuIGRlY2lkZSB3aGljaCB0ZXN0
cyB0byBydW4gdXNpbmcgbmFtZSBwYXR0ZXJucy4gIFRoaXMgc2F2ZXMgdGltZSB3aGVuIHlvdSB3
YW50IHRvIHF1aWNrbHkgcmVwcm9kdWNlIGEgdGVzdCBmYWlsdXJlLgotICAqIEdvb2dsZSBUZXN0
IGNhbiBnZW5lcmF0ZSBYTUwgdGVzdCByZXN1bHQgcmVwb3J0cyB0aGF0IGNhbiBiZSBwYXJzZWQg
YnkgcG9wdWxhciBjb250aW51b3VzIGJ1aWxkIHN5c3RlbSBsaWtlIEh1ZHNvbi4KLSAgKiBTaW1w
bGUgdGhpbmdzIGFyZSBlYXN5IGluIEdvb2dsZSBUZXN0LCB3aGlsZSBoYXJkIHRoaW5ncyBhcmUg
cG9zc2libGU6IGluIGFkZGl0aW9uIHRvIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgW2dsb2JhbCB0
ZXN0IGVudmlyb25tZW50c10oQWR2YW5jZWRHdWlkZS5tZCNnbG9iYWwtc2V0LXVwLWFuZC10ZWFy
LWRvd24pIGFuZCB0ZXN0cyBwYXJhbWV0ZXJpemVkIGJ5IFt2YWx1ZXNdKEFkdmFuY2VkR3VpZGUu
bWQjdmFsdWUtcGFyYW1ldGVyaXplZC10ZXN0cykgb3IgW3R5cGVzXShkb2NzL0FkdmFuY2VkR3Vp
ZGUubWQjdHlwZWQtdGVzdHMpLCBHb29nbGUgVGVzdCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9y
IHRoZSB1c2VyIHRvIGV4dGVuZCB0aGUgZnJhbWV3b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNu
J3QgZG8gc29tZXRoaW5nIG91dCBvZiB0aGUgYm94LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBj
YW4gaW1wbGVtZW50IHRoZSBmZWF0dXJlIHVzaW5nIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwg
d2l0aG91dCBjaGFuZ2luZyBHb29nbGUgVGVzdCBpdHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3Ug
Y2FuOgotICAgICogZXhwYW5kIHlvdXIgdGVzdGluZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtj
dXN0b20gcHJlZGljYXRlc10oQWR2YW5jZWRHdWlkZS5tZCNwcmVkaWNhdGUtYXNzZXJ0aW9ucy1m
b3ItYmV0dGVyLWVycm9yLW1lc3NhZ2VzKSwKLSAgICAqIHRlYWNoIEdvb2dsZSBUZXN0IGhvdyB0
byBbcHJpbnQgeW91ciB0eXBlc10oQWR2YW5jZWRHdWlkZS5tZCN0ZWFjaGluZy1nb29nbGUtdGVz
dC1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLAotICAgICogZGVmaW5lIHlvdXIgb3duIHRlc3Rp
bmcgbWFjcm9zIG9yIHV0aWxpdGllcyBhbmQgdmVyaWZ5IHRoZW0gdXNpbmcgR29vZ2xlIFRlc3Qn
cyBbU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2VdKEFkdmFuY2VkR3VpZGUubWQjY2F0Y2hpbmct
ZmFpbHVyZXMpLCBhbmQKLSAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMgb3IgY2hhbmdl
IHRoZSB0ZXN0IG91dHB1dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVzdCBldmVudHNd
KEFkdmFuY2VkR3VpZGUubWQjZXh0ZW5kaW5nLWdvb2dsZS10ZXN0LWJ5LWhhbmRsaW5nLXRlc3Qt
ZXZlbnRzKS4KLQotIyMgSSdtIGdldHRpbmcgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xl
IFRlc3QuICBXb3VsZCB5b3UgZml4IHRoZW0/ICMjCi0KLVdlIHN0cml2ZSB0byBtaW5pbWl6ZSBj
b21waWxlciB3YXJuaW5ncyBHb29nbGUgVGVzdCBnZW5lcmF0ZXMuICBCZWZvcmUgcmVsZWFzaW5n
IGEgbmV3IHZlcnNpb24sIHdlIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaXQgZG9lc24ndCBnZW5l
cmF0ZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHVzaW5nIGl0cyBDTWFrZSBzY3JpcHQgb24gV2lu
ZG93cywgTGludXgsIGFuZCBNYWMgT1MuCi0KLVVuZm9ydHVuYXRlbHksIHRoaXMgZG9lc24ndCBt
ZWFuIHlvdSBhcmUgZ3VhcmFudGVlZCB0byBzZWUgbm8gd2FybmluZ3Mgd2hlbiBjb21waWxpbmcg
R29vZ2xlIFRlc3QgaW4geW91ciBlbnZpcm9ubWVudDoKLQotICAqIFlvdSBtYXkgYmUgdXNpbmcg
YSBkaWZmZXJlbnQgY29tcGlsZXIgYXMgd2UgdXNlLCBvciBhIGRpZmZlcmVudCB2ZXJzaW9uIG9m
IHRoZSBzYW1lIGNvbXBpbGVyLiAgV2UgY2Fubm90IHBvc3NpYmx5IHRlc3QgZm9yIGFsbCBjb21w
aWxlcnMuCi0gICogWW91IG1heSBiZSBjb21waWxpbmcgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0g
YXMgd2UgZG8uCi0gICogWW91ciBwcm9qZWN0IG1heSBiZSB1c2luZyBkaWZmZXJlbnQgY29tcGls
ZXIgZmxhZ3MgYXMgd2UgZG8uCi0KLUl0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gbWFrZSBH
b29nbGUgVGVzdCB3YXJuaW5nLWZyZWUgZm9yIGV2ZXJ5b25lLiAgT3IsIGl0IG1heSBub3QgYmUg
ZGVzaXJhYmxlIGlmIHRoZSB3YXJuaW5nIGlzIHJhcmVseSBlbmFibGVkIGFuZCBmaXhpbmcgdGhl
IHZpb2xhdGlvbnMgbWFrZXMgdGhlIGNvZGUgbW9yZSBjb21wbGV4LgotCi1JZiB5b3Ugc2VlIHdh
cm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LCB3ZSBzdWdnZXN0IHRoYXQgeW91IHVz
ZSB0aGUgYC1pc3lzdGVtYCBmbGFnIChhc3N1bWluZyB5b3VyIGFyZSB1c2luZyBHQ0MpIHRvIG1h
cmsgR29vZ2xlIFRlc3QgaGVhZGVycyBhcyBzeXN0ZW0gaGVhZGVycy4gIFRoYXQnbGwgc3VwcHJl
c3Mgd2FybmluZ3MgZnJvbSBHb29nbGUgVGVzdCBoZWFkZXJzLgotCi0jIyBXaHkgc2hvdWxkIG5v
dCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMgY29udGFpbiB1bmRlcnNjb3JlPyAjIwot
Ci1VbmRlcnNjb3JlIChgX2ApIGlzIHNwZWNpYWwsIGFzIEMrKyByZXNlcnZlcyB0aGUgZm9sbG93
aW5nIHRvIGJlIHVzZWQgYnkKLXRoZSBjb21waWxlciBhbmQgdGhlIHN0YW5kYXJkIGxpYnJhcnk6
Ci0KLSAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQg
YnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAotICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IGNv
bnRhaW5lcnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApIF9hbnl3aGVy
ZV8gaW4gaXRzIG5hbWUuCi0KLVVzZXIgY29kZSBpcyBfcHJvaGliaXRlZF8gZnJvbSB1c2luZyBz
dWNoIGlkZW50aWZpZXJzLgotCi1Ob3cgbGV0J3MgbG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9y
IGBURVNUYCBhbmQgYFRFU1RfRmAuCi0KLUN1cnJlbnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRl
c3ROYW1lKWAgZ2VuZXJhdGVzIGEgY2xhc3MgbmFtZWQKLWBUZXN0Q2FzZU5hbWVfVGVzdE5hbWVf
VGVzdGAuICBXaGF0IGhhcHBlbnMgaWYgYFRlc3RDYXNlTmFtZWAgb3IgYFRlc3ROYW1lYAotY29u
dGFpbnMgYF9gPwotCi0gIDEuIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCBm
b2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAoc2F5LCBgX0Zvb2ApLCB3ZSBlbmQgdXAg
d2l0aCBgX0Zvb19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMgaW52
YWxpZC4KLSAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgRm9v
X2ApLCB3ZSBnZXQgYEZvb19fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0gIDEu
IElmIGBUZXN0TmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIChzYXksIGBfQmFyYCksIHdlIGdldCBg
VGVzdENhc2VOYW1lX19CYXJfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0gIDEuIElmIGBUZXN0
TmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQgYFRlc3RDYXNlTmFt
ZV9CYXJfX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgotCi1TbyBjbGVhcmx5IGBUZXN0Q2FzZU5h
bWVgIGFuZCBgVGVzdE5hbWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBgX2AKLShBY3R1YWxs
eSwgYFRlc3RDYXNlTmFtZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxvbmcgYXMgdGhlIGBf
YCBpc24ndAotZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIuICBCdXQgdGhhdCdzIGdl
dHRpbmcgY29tcGxpY2F0ZWQuICBTbwotZm9yIHNpbXBsaWNpdHkgd2UganVzdCBzYXkgdGhhdCBp
dCBjYW5ub3Qgc3RhcnQgd2l0aCBgX2AuKS4KLQotSXQgbWF5IHNlZW0gZmluZSBmb3IgYFRlc3RD
YXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlCi1taWRkbGUuICBI
b3dldmVyLCBjb25zaWRlciB0aGlzOgotYGBgIGNwcAotVEVTVChUaW1lLCBGbGllc19MaWtlX0Fu
X0Fycm93KSB7IC4uLiB9Ci1URVNUKFRpbWVfRmxpZXMsIExpa2VfQW5fQXJyb3cpIHsgLi4uIH0K
LWBgYAotCi1Ob3csIHRoZSB0d28gYFRFU1RgcyB3aWxsIGJvdGggZ2VuZXJhdGUgdGhlIHNhbWUg
Y2xhc3MKLShgVGltZV9GaWxlc19MaWtlX0FuX0Fycm93X1Rlc3RgKS4gIFRoYXQncyBub3QgZ29v
ZC4KLQotU28gZm9yIHNpbXBsaWNpdHksIHdlIGp1c3QgYXNrIHRoZSB1c2VycyB0byBhdm9pZCBg
X2AgaW4gYFRlc3RDYXNlTmFtZWAKLWFuZCBgVGVzdE5hbWVgLiAgVGhlIHJ1bGUgaXMgbW9yZSBj
b25zdHJhaW5pbmcgdGhhbiBuZWNlc3NhcnksIGJ1dCBpdCdzCi1zaW1wbGUgYW5kIGVhc3kgdG8g
cmVtZW1iZXIuICBJdCBhbHNvIGdpdmVzIEdvb2dsZSBUZXN0IHNvbWUgd2lnZ2xlCi1yb29tIGlu
IGNhc2UgaXRzIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgot
Ci1JZiB5b3UgdmlvbGF0ZSB0aGUgcnVsZSwgdGhlcmUgbWF5IG5vdCBiZSBpbW1lZGlhdGVseSBj
b25zZXF1ZW5jZXMsCi1idXQgeW91ciB0ZXN0IG1heSAoanVzdCBtYXkpIGJyZWFrIHdpdGggYSBu
ZXcgY29tcGlsZXIgKG9yIGEgbmV3Ci12ZXJzaW9uIG9mIHRoZSBjb21waWxlciB5b3UgYXJlIHVz
aW5nKSBvciB3aXRoIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlCi1UZXN0LiAgVGhlcmVmb3JlIGl0
J3MgYmVzdCB0byBmb2xsb3cgdGhlIHJ1bGUuCi0KLSMjIFdoeSBpcyBpdCBub3QgcmVjb21tZW5k
ZWQgdG8gaW5zdGFsbCBhIHByZS1jb21waWxlZCBjb3B5IG9mIEdvb2dsZSBUZXN0IChmb3IgZXhh
bXBsZSwgaW50byAvdXNyL2xvY2FsKT8gIyMKLQotSW4gdGhlIGVhcmx5IGRheXMsIHdlIHNhaWQg
dGhhdCB5b3UgY291bGQgaW5zdGFsbAotY29tcGlsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzIG9u
IGAqYG5peCBzeXN0ZW1zIHVzaW5nIGBtYWtlIGluc3RhbGxgLgotVGhlbiBldmVyeSB1c2VyIG9m
IHlvdXIgbWFjaGluZSBjYW4gd3JpdGUgdGVzdHMgd2l0aG91dAotcmVjb21waWxpbmcgR29vZ2xl
IFRlc3QuCi0KLVRoaXMgc2VlbWVkIGxpa2UgYSBnb29kIGlkZWEsIGJ1dCBpdCBoYXMgYQotZ290
LWNoYTogZXZlcnkgdXNlciBuZWVkcyB0byBjb21waWxlIGhpcyB0ZXN0cyB1c2luZyB0aGUgX3Nh
bWVfIGNvbXBpbGVyCi1mbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhlIGluc3RhbGxlZCBHb29nbGUg
VGVzdCBsaWJyYXJpZXM7IG90aGVyd2lzZQotaGUgbWF5IHJ1biBpbnRvIHVuZGVmaW5lZCBiZWhh
dmlvcnMgKGkuZS4gdGhlIHRlc3RzIGNhbiBiZWhhdmUKLXN0cmFuZ2VseSBhbmQgbWF5IGV2ZW4g
Y3Jhc2ggZm9yIG5vIG9idmlvdXMgcmVhc29ucykuCi0KLVdoeT8gIEJlY2F1c2UgQysrIGhhcyB0
aGlzIHRoaW5nIGNhbGxlZCB0aGUgT25lLURlZmluaXRpb24gUnVsZTogaWYKLXR3byBDKysgc291
cmNlIGZpbGVzIGNvbnRhaW4gZGlmZmVyZW50IGRlZmluaXRpb25zIG9mIHRoZSBzYW1lCi1jbGFz
cy9mdW5jdGlvbi92YXJpYWJsZSwgYW5kIHlvdSBsaW5rIHRoZW0gdG9nZXRoZXIsIHlvdSB2aW9s
YXRlIHRoZQotcnVsZS4gIFRoZSBsaW5rZXIgbWF5IG9yIG1heSBub3QgY2F0Y2ggdGhlIGVycm9y
IChpbiBtYW55IGNhc2VzIGl0J3MKLW5vdCByZXF1aXJlZCBieSB0aGUgQysrIHN0YW5kYXJkIHRv
IGNhdGNoIHRoZSB2aW9sYXRpb24pLiAgSWYgaXQKLWRvZXNuJ3QsIHlvdSBnZXQgc3RyYW5nZSBy
dW4tdGltZSBiZWhhdmlvcnMgdGhhdCBhcmUgdW5leHBlY3RlZCBhbmQKLWhhcmQgdG8gZGVidWcu
Ci0KLUlmIHlvdSBjb21waWxlIEdvb2dsZSBUZXN0IGFuZCB5b3VyIHRlc3QgY29kZSB1c2luZyBk
aWZmZXJlbnQgY29tcGlsZXIKLWZsYWdzLCB0aGV5IG1heSBzZWUgZGlmZmVyZW50IGRlZmluaXRp
b25zIG9mIHRoZSBzYW1lCi1jbGFzcy9mdW5jdGlvbi92YXJpYWJsZSAoZS5nLiBkdWUgdG8gdGhl
IHVzZSBvZiBgI2lmYCBpbiBHb29nbGUgVGVzdCkuCi1UaGVyZWZvcmUsIGZvciB5b3VyIHNhbml0
eSwgd2UgcmVjb21tZW5kIHRvIGF2b2lkIGluc3RhbGxpbmcgcHJlLWNvbXBpbGVkCi1Hb29nbGUg
VGVzdCBsaWJyYXJpZXMuICBJbnN0ZWFkLCBlYWNoIHByb2plY3Qgc2hvdWxkIGNvbXBpbGUKLUdv
b2dsZSBUZXN0IGl0c2VsZiBzdWNoIHRoYXQgaXQgY2FuIGJlIHN1cmUgdGhhdCB0aGUgc2FtZSBm
bGFncyBhcmUKLXVzZWQgZm9yIGJvdGggR29vZ2xlIFRlc3QgYW5kIHRoZSB0ZXN0cy4KLQotIyMg
SG93IGRvIEkgZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIG9uIFdpbmRvd3MgKHVzaW5nIFZpc3Vh
bCBTdHVkaW8gMjAwOCk/ICMjCi0KLShBbnN3ZXJlZCBieSBUcmV2b3IgUm9iaW5zb24pCi0KLUxv
YWQgdGhlIHN1cHBsaWVkIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gZmlsZSwgZWl0aGVyIGBtc3Zj
XGd0ZXN0LW1kLnNsbmAgb3IKLWBtc3ZjXGd0ZXN0LnNsbmAuIEdvIHRocm91Z2ggdGhlIG1pZ3Jh
dGlvbiB3aXphcmQgdG8gbWlncmF0ZSB0aGUKLXNvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIHRv
IFZpc3VhbCBTdHVkaW8gMjAwOC4gU2VsZWN0Ci1gQ29uZmlndXJhdGlvbiBNYW5hZ2VyLi4uYCBm
cm9tIHRoZSBgQnVpbGRgIG1lbnUuIFNlbGVjdCBgPE5ldy4uLj5gIGZyb20KLXRoZSBgQWN0aXZl
IHNvbHV0aW9uIHBsYXRmb3JtYCBkcm9wZG93bi4gIFNlbGVjdCBgeDY0YCBmcm9tIHRoZSBuZXcK
LXBsYXRmb3JtIGRyb3Bkb3duLCBsZWF2ZSBgQ29weSBzZXR0aW5ncyBmcm9tYCBzZXQgdG8gYFdp
bjMyYCBhbmQKLWBDcmVhdGUgbmV3IHByb2plY3QgcGxhdGZvcm1zYCBjaGVja2VkLCB0aGVuIGNs
aWNrIGBPS2AuIFlvdSBub3cgaGF2ZQotYFdpbjMyYCBhbmQgYHg2NGAgcGxhdGZvcm0gY29uZmln
dXJhdGlvbnMsIHNlbGVjdGFibGUgZnJvbSB0aGUKLWBTdGFuZGFyZGAgdG9vbGJhciwgd2hpY2gg
YWxsb3cgeW91IHRvIHRvZ2dsZSBiZXR3ZWVuIGJ1aWxkaW5nIDMyLWJpdCBvcgotNjQtYml0IGJp
bmFyaWVzIChvciBib3RoIGF0IG9uY2UgdXNpbmcgQmF0Y2ggQnVpbGQpLgotCi1JbiBvcmRlciB0
byBwcmV2ZW50IGJ1aWxkIG91dHB1dCBmaWxlcyBmcm9tIG92ZXJ3cml0aW5nIG9uZSBhbm90aGVy
LAoteW91J2xsIG5lZWQgdG8gY2hhbmdlIHRoZSBgSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0
dGluZ3MgZm9yIHRoZQotbmV3bHkgY3JlYXRlZCBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGFjcm9z
cyBhbGwgdGhlIHByb2plY3RzLiBUbyBkbwotdGhpcywgbXVsdGktc2VsZWN0IChlLmcuIHVzaW5n
IHNoaWZ0LWNsaWNrKSBhbGwgcHJvamVjdHMgKGJ1dCBub3QgdGhlCi1zb2x1dGlvbikgaW4gdGhl
IGBTb2x1dGlvbiBFeHBsb3JlcmAuIFJpZ2h0LWNsaWNrIG9uZSBvZiB0aGVtIGFuZAotc2VsZWN0
IGBQcm9wZXJ0aWVzYC4gSW4gdGhlIGxlZnQgcGFuZSwgc2VsZWN0IGBDb25maWd1cmF0aW9uIFBy
b3BlcnRpZXNgLAotYW5kIGZyb20gdGhlIGBDb25maWd1cmF0aW9uYCBkcm9wZG93biwgc2VsZWN0
IGBBbGwgQ29uZmlndXJhdGlvbnNgLgotTWFrZSBzdXJlIHRoZSBzZWxlY3RlZCBwbGF0Zm9ybSBp
cyBgeDY0YC4gRm9yIHRoZQotYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmcsIGNoYW5n
ZSB0aGUgdmFsdWUgZnJvbQotYCQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKWAg
dG8KLWAkKE91dERpcilcJChQcm9qZWN0TmFtZSlgLiBDbGljayBgT0tgIGFuZCB0aGVuIGJ1aWxk
IHRoZQotc29sdXRpb24uIFdoZW4gdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB0aGUgNjQtYml0IGJp
bmFyaWVzIHdpbGwgYmUgaW4KLXRoZSBgbXN2Y1x4NjRcRGVidWdgIGRpcmVjdG9yeS4KLQotIyMg
Q2FuIEkgdXNlIEdvb2dsZSBUZXN0IG9uIE1pbkdXPyAjIwotCi1XZSBoYXZlbid0IHRlc3RlZCB0
aGlzIG91cnNlbHZlcywgYnV0IFBlciBBYnJhaGFtc2VuIHJlcG9ydGVkIHRoYXQgaGUKLXdhcyBh
YmxlIHRvIGNvbXBpbGUgYW5kIGluc3RhbGwgR29vZ2xlIFRlc3Qgc3VjY2Vzc2Z1bGx5IHdoZW4g
dXNpbmcKLU1pbkdXIGZyb20gQ3lnd2luLiAgWW91J2xsIG5lZWQgdG8gY29uZmlndXJlIGl0IHdp
dGg6Ci0KLWBQQVRIL1RPL2NvbmZpZ3VyZSBDQz0iZ2NjIC1tbm8tY3lnd2luIiBDWFg9ImcrKyAt
bW5vLWN5Z3dpbiJgCi0KLVlvdSBzaG91bGQgYmUgYWJsZSB0byByZXBsYWNlIHRoZSBgLW1uby1j
eWd3aW5gIG9wdGlvbiB3aXRoIGRpcmVjdCBsaW5rcwotdG8gdGhlIHJlYWwgTWluR1cgYmluYXJp
ZXMsIGJ1dCB3ZSBoYXZlbid0IHRyaWVkIHRoYXQuCi0KLUNhdmVhdHM6Ci0KLSAgKiBUaGVyZSBh
cmUgbWFueSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZy4KLSAgKiBgbWFrZSBjaGVja2Agd2lsbCBw
cm9kdWNlIHNvbWUgZXJyb3JzIGFzIG5vdCBhbGwgdGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0c2Vs
ZiBhcmUgY29tcGF0aWJsZSB3aXRoIE1pbkdXLgotCi1XZSBhbHNvIGhhdmUgcmVwb3J0cyBvbiBz
dWNjZXNzZnVsIGNyb3NzIGNvbXBpbGF0aW9uIG9mIEdvb2dsZSBUZXN0Ci1NaW5HVyBiaW5hcmll
cyBvbiBMaW51eCB1c2luZwotW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRn
ZXRzLm9yZy9Dcm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVy
X0xpbnV4X2Zvcl9NU19XaW5kb3dzKQotb24gdGhlIFd4V2lkZ2V0cyBzaXRlLgotCi1QbGVhc2Ug
Y29udGFjdCBgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UgYXJl
Ci1pbnRlcmVzdGVkIGluIGltcHJvdmluZyB0aGUgc3VwcG9ydCBmb3IgTWluR1cuCi0KLSMjIFdo
eSBkb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgRVhQRUNUXF9FUShOVUxMLCBwdHIpIGFuZCBBU1NF
UlRcX0VRKE5VTEwsIHB0cikgYnV0IG5vdCBFWFBFQ1RcX05FKE5VTEwsIHB0cikgYW5kIEFTU0VS
VFxfTkUoTlVMTCwgcHRyKT8gIyMKLQotRHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgb2YgQysrLCBp
dCByZXF1aXJlcyBzb21lIG5vbi10cml2aWFsIHRlbXBsYXRlCi1tZXRhIHByb2dyYW1taW5nIHRy
aWNrcyB0byBzdXBwb3J0IHVzaW5nIGBOVUxMYCBhcyBhbiBhcmd1bWVudCBvZiB0aGUKLWBFWFBF
Q1RfWFgoKWAgYW5kIGBBU1NFUlRfWFgoKWAgbWFjcm9zLiBUaGVyZWZvcmUgd2Ugb25seSBkbyBp
dCB3aGVyZQotaXQncyBtb3N0IG5lZWRlZCAob3RoZXJ3aXNlIHdlIG1ha2UgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIEdvb2dsZSBUZXN0Ci1oYXJkZXIgdG8gbWFpbnRhaW4gYW5kIG1vcmUgZXJyb3It
cHJvbmUgdGhhbiBuZWNlc3NhcnkpLgotCi1UaGUgYEVYUEVDVF9FUSgpYCBtYWNybyB0YWtlcyB0
aGUgX2V4cGVjdGVkXyB2YWx1ZSBhcyBpdHMgZmlyc3QKLWFyZ3VtZW50IGFuZCB0aGUgX2FjdHVh
bF8gdmFsdWUgYXMgdGhlIHNlY29uZC4gSXQncyByZWFzb25hYmxlIHRoYXQKLXNvbWVvbmUgd2Fu
dHMgdG8gd3JpdGUgYEVYUEVDVF9FUShOVUxMLCBzb21lX2V4cHJlc3Npb24pYCwgYW5kIHRoaXMK
LWluZGVlZCB3YXMgcmVxdWVzdGVkIHNldmVyYWwgdGltZXMuIFRoZXJlZm9yZSB3ZSBpbXBsZW1l
bnRlZCBpdC4KLQotVGhlIG5lZWQgZm9yIGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAgaXNuJ3QgbmVh
cmx5IGFzIHN0cm9uZy4gV2hlbiB0aGUKLWFzc2VydGlvbiBmYWlscywgeW91IGFscmVhZHkga25v
dyB0aGF0IGBwdHJgIG11c3QgYmUgYE5VTExgLCBzbyBpdAotZG9lc24ndCBhZGQgYW55IGluZm9y
bWF0aW9uIHRvIHByaW50IHB0ciBpbiB0aGlzIGNhc2UuIFRoYXQgbWVhbnMKLWBFWFBFQ1RfVFJV
RShwdHIgIT0gTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KLQotSWYgd2Ugd2VyZSB0byBzdXBw
b3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSdsbAotaGF2ZSB0
byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5saWtlIGBFWFBF
Q1RfRVFgLAotd2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhlIG9yZGVyIG9mIHRoZSB0
d28gYXJndW1lbnRzIGZvcgotYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcgdGhlIHRlbXBs
YXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCi10d2ljZSBpbiB0aGUgaW1wbGVtZW50YXRpb24s
IG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAotbWFpbnRhaW4uIFdlIGJl
bGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0LgotCi1GaW5hbGx5LCB3
aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0oLi4vLi4vZ29vZ2xlbW9j
ay9kb2NzL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlv
bnMpIGxpYnJhcnksIHdlIGFyZQotZW5jb3VyYWdpbmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmll
ZCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYAotc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVz
dHMuIE9uZSBzaWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIKLWFwcHJvYWNoIGlz
IHRoYXQgbWF0Y2hlcnMgY2FuIGJlIGVhc2lseSBjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVy
cywKLXdoaWxlIHRoZSBgRVhQRUNUX05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQot
Y29tYmluZWQuIFRoZXJlZm9yZSB3ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVy
cyB0aGFuIGluIHRoZQotYEVYUEVDVF9YWCgpYCBtYWNyb3MuCi0KLSMjIERvZXMgR29vZ2xlIFRl
c3Qgc3VwcG9ydCBydW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsPyAjIwotCi1UZXN0IHJ1bm5lcnMg
dGVuZCB0byBiZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgYnVpbGQvdGVzdAotZW52aXJvbm1l
bnQsIGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHRyeSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgot
cnVubmluZyB0ZXN0cyBpbiBwYXJhbGxlbC4gIEluc3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29v
Z2xlIFRlc3Qgd29yawotbmljZWx5IHdpdGggdGVzdCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdv
b2dsZSBUZXN0J3MgWE1MIHJlcG9ydAotY29udGFpbnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0
ZXN0LCBhbmQgaXRzIGBndGVzdF9saXN0X3Rlc3RzYCBhbmQKLWBndGVzdF9maWx0ZXJgIGZsYWdz
IGNhbiBiZSB1c2VkIGZvciBzcGxpdHRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0Ci1tZXRob2Rz
IGludG8gbXVsdGlwbGUgcHJvY2Vzc2VzLiAgVGhlc2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxw
IHRoZQotdGVzdCBydW5uZXIgcnVuIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KLQotIyMgV2h5IGRv
bid0IEdvb2dsZSBUZXN0IHJ1biB0aGUgdGVzdHMgaW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3Bl
ZWQgdGhpbmdzIHVwPyAjIwotCi1JdCdzIGRpZmZpY3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBj
b2RlLiAgTW9zdCB0ZXN0cyBhcmUgbm90IHdyaXR0ZW4KLXdpdGggdGhyZWFkLXNhZmV0eSBpbiBt
aW5kLCBhbmQgdGh1cyBtYXkgbm90IHdvcmsgY29ycmVjdGx5IGluIGEKLW11bHRpLXRocmVhZGVk
IHNldHRpbmcuCi0KLUlmIHlvdSB0aGluayBhYm91dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8g
bWFrZSB5b3VyIGNvZGUgd29yayB3aGVuCi15b3Uga25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJl
IGRvaW5nLiAgSXQncyBtdWNoIGhhcmRlciwgYW5kCi1zb21ldGltZXMgZXZlbiBpbXBvc3NpYmxl
LCB0byBtYWtlIHlvdXIgY29kZSB3b3JrIHdoZW4geW91IGRvbid0IGtub3cKLXdoYXQgb3RoZXIg
dGhyZWFkcyBhcmUgZG9pbmcgKHJlbWVtYmVyIHRoYXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRl
ZCwKLWRlbGV0ZWQsIG9yIG1vZGlmaWVkIGFmdGVyIHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJ
ZiB5b3Ugd2FudCB0byBydW4KLXRoZSB0ZXN0cyBpbiBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1
biB0aGVtIGluIGRpZmZlcmVudCBwcm9jZXNzZXMuCi0KLSMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRl
c3QgYXNzZXJ0aW9ucyBpbXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zPyAjIwotCi1PdXIgb3Jp
Z2luYWwgbW90aXZhdGlvbiB3YXMgdG8gYmUgYWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJv
amVjdHMKLXRoYXQgZGlzYWJsZSBleGNlcHRpb25zLiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBh
ZGRpdGlvbmFsIGJlbmVmaXRzCi1vZiB0aGlzIGFwcHJvYWNoOgotCi0gIDEuIFRocm93aW5nIGlu
IGEgZGVzdHJ1Y3RvciBpcyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4
Y2VwdGlvbnMgbWVhbnMgR29vZ2xlIFRlc3QncyBhc3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBp
biBkZXN0cnVjdG9ycy4KLSAgMS4gVGhlIGBFWFBFQ1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxs
IGNvbnRpbnVlIGV2ZW4gYWZ0ZXIgYSBmYWlsdXJlLCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJl
cyBpbiBhIGBURVNUYCB0byBiZSByZXBvcnRlZCBpbiBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBw
b3B1bGFyIGZlYXR1cmUsIGFzIGluIEMrKyB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMg
dXN1YWxseSBxdWl0ZSBsb25nIGFuZCBiZWluZyBhYmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25l
IHRoaW5nIGF0IGEgdGltZSBpcyBhIGJsZXNzaW5nLgotICAxLiBJZiBhc3NlcnRpb25zIGFyZSBp
bXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zLCBhIHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEg
ZmFpbHVyZSBpZiBpdCdzIGNhdWdodCBieSB1c2VyIGNvZGU6Ci1gYGAgY3BwCi10cnkgeyAuLi4g
QVNTRVJUX1RSVUUoLi4uKSAuLi4gfQotY2F0Y2ggKC4uLikgeyAuLi4gfQotYGBgCi1UaGUgYWJv
dmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9UUlVFYCB0aHJvd3MuICBXaGls
ZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRoaXMgaW4gYSB0ZXN0LCBpdCdz
IHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVuIHlvdSB3cml0ZSBhc3NlcnRp
b25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4K
LQotVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25zIGlzIHRoYXQgYEFTU0VSVF8q
YCAoaW1wbGVtZW50ZWQKLXVzaW5nIGByZXR1cm5gKSB3aWxsIG9ubHkgYWJvcnQgdGhlIGN1cnJl
bnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAotYFRFU1RgLgotCi0jIyBXaHkgZG8gd2UgdXNl
IHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFuZCB3aXRob3V0IGZpeHR1cmVz
PyAjIwotCi1VbmZvcnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0ZW0gZG9lc24ndCBhbGxvdyB1
cyB0byB1c2UgdGhlIHNhbWUKLW1hY3JvIGZvciBib3RoIGNhc2VzLiAgT25lIHBvc3NpYmlsaXR5
IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8KLWZvciB0ZXN0cyB3aXRoIGZpeHR1cmVzLCBh
bmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkKLWZpeHR1cmUgc29tZXRpbWVz
OgotCi1gYGAgY3BwCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsK
LQotVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLW9yCi1gYGAgY3BwCi10
eXBlZGVmIDo6dGVzdGluZzo6VGVzdCBGb29UZXN0OwotCi1URVNUX0YoRm9vVGVzdCwgRG9lc1Ro
YXQpIHsgLi4uIH0KLWBgYAotCi1ZZXQsIG1hbnkgcGVvcGxlIHRoaW5rIHRoaXMgaXMgb25lIGxp
bmUgdG9vIG1hbnkuIDotKSBPdXIgZ29hbCB3YXMgdG8KLW1ha2UgaXQgcmVhbGx5IGVhc3kgdG8g
d3JpdGUgdGVzdHMsIHNvIHdlIHRyaWVkIHRvIG1ha2Ugc2ltcGxlIHRlc3RzCi10cml2aWFsIHRv
IGNyZWF0ZS4gIFRoYXQgbWVhbnMgdXNpbmcgYSBzZXBhcmF0ZSBtYWNybyBmb3Igc3VjaCB0ZXN0
cy4KLQotV2UgdGhpbmsgbmVpdGhlciBhcHByb2FjaCBpcyBpZGVhbCwgeWV0IGVpdGhlciBvZiB0
aGVtIGlzIHJlYXNvbmFibGUuCi1JbiB0aGUgZW5kLCBpdCBwcm9iYWJseSBkb2Vzbid0IG1hdHRl
ciBtdWNoIGVpdGhlciB3YXkuCi0KLSMjIFdoeSBkb24ndCB3ZSB1c2Ugc3RydWN0cyBhcyB0ZXN0
IGZpeHR1cmVzPyAjIwotCi1XZSBsaWtlIHRvIHVzZSBzdHJ1Y3RzIG9ubHkgd2hlbiByZXByZXNl
bnRpbmcgcGFzc2l2ZSBkYXRhLiAgVGhpcwotZGlzdGluY3Rpb24gYmV0d2VlbiBzdHJ1Y3RzIGFu
ZCBjbGFzc2VzIGlzIGdvb2QgZm9yIGRvY3VtZW50aW5nIHRoZQotaW50ZW50IG9mIHRoZSBjb2Rl
J3MgYXV0aG9yLiAgU2luY2UgdGVzdCBmaXh0dXJlcyBoYXZlIGxvZ2ljIGxpa2UKLWBTZXRVcCgp
YCBhbmQgYFRlYXJEb3duKClgLCB0aGV5IGFyZSBiZXR0ZXIgZGVmaW5lZCBhcyBjbGFzc2VzLgot
Ci0jIyBXaHkgYXJlIGRlYXRoIHRlc3RzIGltcGxlbWVudGVkIGFzIGFzc2VydGlvbnMgaW5zdGVh
ZCBvZiB1c2luZyBhIHRlc3QgcnVubmVyPyAjIwotCi1PdXIgZ29hbCB3YXMgdG8gbWFrZSBkZWF0
aCB0ZXN0cyBhcyBjb252ZW5pZW50IGZvciBhIHVzZXIgYXMgQysrCi1wb3NzaWJseSBhbGxvd3Mu
ICBJbiBwYXJ0aWN1bGFyOgotCi0gICogVGhlIHJ1bm5lci1zdHlsZSByZXF1aXJlcyB0byBzcGxp
dCB0aGUgaW5mb3JtYXRpb24gaW50byB0d28gcGllY2VzOiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUg
ZGVhdGggdGVzdCBpdHNlbGYsIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHJ1bm5lciBv
biBob3cgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0IGFuZCB3aGF0IHRvIGV4cGVjdC4gIFRoZSBkZWF0
aCB0ZXN0IHdvdWxkIGJlIHdyaXR0ZW4gaW4gQysrLCB3aGlsZSB0aGUgcnVubmVyIHNwZWMgbWF5
IG9yIG1heSBub3QgYmUuICBBIHVzZXIgbmVlZHMgdG8gY2FyZWZ1bGx5IGtlZXAgdGhlIHR3byBp
biBzeW5jLiBgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgZXhwZWN0ZWRfbWVzc2FnZSlgIHNwZWNp
ZmllcyBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGluIG9uZSBwbGFjZSwgaW4gb25lIGxhbmd1
YWdlLCB3aXRob3V0IGJvaWxlcnBsYXRlIGNvZGUuIEl0IGlzIHZlcnkgZGVjbGFyYXRpdmUuCi0g
ICogYEFTU0VSVF9ERUFUSGAgaGFzIGEgc2ltaWxhciBzeW50YXggYW5kIGVycm9yLXJlcG9ydGlu
ZyBzZW1hbnRpY3MgYXMgb3RoZXIgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywgYW5kIHRodXMgaXMg
ZWFzeSB0byBsZWFybi4KLSAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhl
ciBhc3NlcnRpb25zIGFuZCBvdGhlciBsb2dpYyBhdCB5b3VyIHdpbGwuICBZb3UgYXJlIG5vdCBs
aW1pdGVkIHRvIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZC4gRm9yIGV4YW1wbGUsIHlv
dSBjYW4gd3JpdGUgc29tZXRoaW5nIGxpa2U6Ci1gYGAgY3BwCi0gICAgaWYgKEZvb0NvbmRpdGlv
bigpKSB7Ci0gICAgICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7Ci0gICAgfSBlbHNlIHsK
LSAgICAgIEFTU0VSVF9FUSg1LCBCYXIoKSk7Ci0gICAgfQotYGBgCi1JZiB5b3UgcHJlZmVyIG9u
ZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRlc3RzIGlu
IHRoYXQgc3R5bGUgdG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBvbiB0aGUg
dXNlcnMuICBUaGUgZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVyLgotICAq
IGBBU1NFUlRfREVBVEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBjdXJy
ZW50IGZ1bmN0aW9uLCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVzdHMgeW91
IHdhbnQgYmFzZWQgb24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwKLWBgYCBj
cHAKLSAgICBjb25zdCBpbnQgY291bnQgPSBHZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBy
dW4gdGltZS4KLSAgICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgaSsrKSB7Ci0gICAgICBB
U1NFUlRfREVBVEgoewotICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07Ci0g
ICAgICAgIC4uLiBpbml0aWFsaXplcyBidWZmZXIgLi4uCi0gICAgICAgIEZvbyhidWZmZXIsIGkp
Ci0gICAgICB9LCAiYmxhaCBibGFoIik7Ci0gICAgfQotYGBgCi1UaGUgcnVubmVyLWJhc2VkIGFw
cHJvYWNoIHRlbmRzIHRvIGJlIG1vcmUgc3RhdGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1
aXJlcyBtb3JlIHVzZXIgZWZmb3J0IHRvIGdldCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCi0K
LUFub3RoZXIgaW50ZXJlc3RpbmcgdGhpbmcgYWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBp
dCBjYWxscyBgZm9yaygpYAotdG8gY3JlYXRlIGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRl
YXRoIHRlc3QuICBUaGlzIGlzIGxpZ2h0ZW5pbmcKLWZhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29w
eS1vbi13cml0ZSBwYWdlcyBhbmQgaW5jdXJzIGFsbW9zdCB6ZXJvCi1vdmVyaGVhZCwgYW5kIHRo
ZSBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBmcm9tIHRoZSB1c2VyLXN1cHBsaWVkCi1zdGF0ZW1lbnQg
ZGlyZWN0bHksIHNraXBwaW5nIGFsbCBnbG9iYWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFu
ZAotYW55IGNvZGUgbGVhZGluZyB0byB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5j
aCB0aGUgY2hpbGQKLXByb2Nlc3MgZnJvbSBzY3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1
c3QgdG8gbG9hZCBldmVyeXRoaW5nIGFuZAotc3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5r
cyB0byBtYW55IGxpYnJhcmllcyBkeW5hbWljYWxseS4KLQotIyMgTXkgZGVhdGggdGVzdCBtb2Rp
ZmllcyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0
aCB0ZXN0IGZpbmlzaGVzLiBXaHk/ICMjCi0KLURlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwg
ZXRjKSBhcmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJvY2VzcyBzLnQuIHRoZQotZXhwZWN0ZWQgY3Jh
c2ggd29uJ3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2Vzcyku
IEFzIGEKLXJlc3VsdCwgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUg
b2JzZXJ2YWJsZSBpbiB0aGVpcgotcmVzcGVjdGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGlu
IHRoZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0aGluayBvZiB0aGVtCi1hcyBydW5uaW5nIGlu
IGEgcGFyYWxsZWwgdW5pdmVyc2UsIG1vcmUgb3IgbGVzcy4KLQotIyMgVGhlIGNvbXBpbGVyIGNv
bXBsYWlucyBhYm91dCAidW5kZWZpbmVkIHJlZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0
IG1lbWJlciB2YXJpYWJsZXMsIGJ1dCBJIGRpZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9k
eS4gV2hhdCdzIHdyb25nPyAjIwotCi1JZiB5b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1l
bWJlcjoKLQotYGBgIGNwcAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICBzdGF0aWMg
Y29uc3QgaW50IGtCYXIgPSAxMDA7Ci19OwotYGBgCi0KLVlvdSBhbHNvIG5lZWQgdG8gZGVmaW5l
IGl0IF9vdXRzaWRlXyBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNjYDoKLQotYGBgIGNwcAot
Y29uc3QgaW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCi1gYGAKLQotT3Ro
ZXJ3aXNlIHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5l
eHBlY3RlZCB3YXlzLiBJbgotcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29t
cGFyaXNvbiBhc3NlcnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQotd2lsbCBnZW5lcmF0ZSBhbiAi
dW5kZWZpbmVkIHJlZmVyZW5jZSIgbGlua2VyIGVycm9yLgotCi0jIyBJIGhhdmUgYW4gaW50ZXJm
YWNlIHRoYXQgaGFzIHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBv
ZiB0ZXN0cyBvbmNlIGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25z
PyAjIwotCi1Hb29nbGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhp
cyBraW5kIG9mIHRlc3RzLCBvcgotZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9w
ZSB0byBiZSBhYmxlIHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKLWFyZWEgc29vbi4KLQot
IyMgQ2FuIEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKLQotWWVzLgot
Ci1FYWNoIHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRl
c3QgY2FzZS4gVGhpcyBtZWFucyBvbmx5Ci1vbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1
bGFyIGZpeHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAotY2FzZXMgbWF5
IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9y
IGV4YW1wbGUsIHlvdQotbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxp
YnJhcnkncyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKLWltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2Vz
IGxpa2UgZm9udHMgYW5kIGJydXNoZXMuCi0KLUluIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBm
aXh0dXJlIGFtb25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCi1sb2dpYyBpbiBh
IGJhc2UgdGVzdCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJh
dGUgZml4dHVyZQotZm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29t
bW9uIGxvZ2ljLiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYAotdG8gd3JpdGUgdGVzdHMgdXNpbmcg
ZWFjaCBkZXJpdmVkIGZpeHR1cmUuCi0KLVR5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2Ug
dGhpczoKLQotYGBgIGNwcAotLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0dXJlLgotY2xhc3Mg
QmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgcHJvdGVjdGVkOgotICAgLi4u
Ci19OwotCi0vLyBEZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZyb20gQmFzZVRlc3QuCi1jbGFz
cyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKLSAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKLSAgICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8gU2V0cyB1cCB0aGUg
YmFzZSBmaXh0dXJlIGZpcnN0LgotICAgICAgLi4uIGFkZGl0aW9uYWwgc2V0LXVwIHdvcmsgLi4u
Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAgIC4uLiBjbGVhbi11
cCB3b3JrIGZvciBGb29UZXN0IC4uLgotICAgICAgQmFzZVRlc3Q6OlRlYXJEb3duKCk7ICAvLyBS
ZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0IQotICAgIH0KLSAgICAuLi4g
ZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCi19OwotCi0vLyBUZXN0cyB0
aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgotVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4g
fQotVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQotCi0uLi4gYWRkaXRpb25hbCBmaXh0dXJl
cyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCi1gYGAKLQotSWYgbmVjZXNzYXJ5LCB5b3UgY2Fu
IGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJpdmVkIGZpeHR1cmUu
Ci1Hb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhlIGhpZXJhcmNoeSBjYW4g
YmUuCi0KLUZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVyaXZlZCB0ZXN0IGZpeHR1cmVz
LCBzZWUKLVtzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MpLgotCi0jIyBN
eSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQg
dG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwotCi1Zb3UncmUgcHJvYmFibHkgdXNpbmcg
YW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAu
Ci1gQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLgotCi0j
IyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1bHRzKS4gSG93IGRvIEkgZml4IGl0PyAj
IwotCi1JbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nl
c3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCi1kZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVz
dHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KLVBsZWFzZSBt
YWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgotCi1JbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0
cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKLXByb2Nl
c3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRp
bmcgdGhyZWFkcwotb3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRIKClgLgotCi1Tb21ldGltZXMgdGhp
cyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0
aW5nCi10aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJlYWNoZWQuIEluIHRoaXMgY2Fz
ZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKLXRoZSBjaGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVp
dGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3NpYmxlIGluc2lkZQotYEVYUEVD
VF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdhbnQgdG8gbW92ZSBldmVyeXRo
aW5nIGluc2lkZSksIG9yCi1sZWF2aW5nIGFzIGZldyB0aGluZ3MgYXMgcG9zc2libGUgaW4gaXQu
IEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgKLXRlc3Qgc3R5bGUgdG8gYCJ0aHJl
YWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMu
Ci0KLUlmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCByZW1lbWJlciB0aGF0
IHRoZXkgcmVydW4gdGhlIHRlc3QKLXByb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nIGluIHRoZSBj
aGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIKLXByb2dyYW0gY2FuIHJ1biBz
aWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWluaXN0aWMuCi0KLUluIHRoZSBl
bmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBo
YXZlIHRvIG1ha2UKLXN1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbnMgb3IgZGVh
ZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgotYnVsbGV0IC0gc29ycnkhCi0KLSMj
IFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0
dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9uPyAjIwotCi1UaGUgZmlyc3QgdGhp
bmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUKLXNh
bWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVzdHMuIEZvciBlYWNoIGBU
RVNUX0ZgLAotR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2Jq
ZWN0LCBfaW1tZWRpYXRlbHlfCi1jYWxsIGBTZXRVcCgpYCwgcnVuIHRoZSB0ZXN0IGJvZHksIGNh
bGwgYFRlYXJEb3duKClgLCBhbmQgdGhlbgotX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3Qg
Zml4dHVyZSBvYmplY3QuCi0KLVdoZW4geW91IG5lZWQgdG8gd3JpdGUgcGVyLXRlc3Qgc2V0LXVw
IGFuZCB0ZWFyLWRvd24gbG9naWMsIHlvdSBoYXZlCi10aGUgY2hvaWNlIGJldHdlZW4gdXNpbmcg
dGhlIHRlc3QgZml4dHVyZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9yCi1gU2V0VXAoKS9UZWFy
RG93bigpYC4gVGhlIGZvcm1lciBpcyB1c3VhbGx5IHByZWZlcnJlZCwgYXMgaXQgaGFzIHRoZQot
Zm9sbG93aW5nIGJlbmVmaXRzOgotCi0gICogQnkgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlh
YmxlIGluIHRoZSBjb25zdHJ1Y3Rvciwgd2UgaGF2ZSB0aGUgb3B0aW9uIHRvIG1ha2UgaXQgYGNv
bnN0YCwgd2hpY2ggaGVscHMgcHJldmVudCBhY2NpZGVudGFsIGNoYW5nZXMgdG8gaXRzIHZhbHVl
IGFuZCBtYWtlcyB0aGUgdGVzdHMgbW9yZSBvYnZpb3VzbHkgY29ycmVjdC4KLSAgKiBJbiBjYXNl
IHdlIG5lZWQgdG8gc3ViY2xhc3MgdGhlIHRlc3QgZml4dHVyZSBjbGFzcywgdGhlIHN1YmNsYXNz
JyBjb25zdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xhc3MnIGNvbnN0
cnVjdG9yIGZpcnN0LCBhbmQgdGhlIHN1YmNsYXNzJyBkZXN0cnVjdG9yIGlzIGd1YXJhbnRlZWQg
dG8gY2FsbCB0aGUgYmFzZSBjbGFzcycgZGVzdHJ1Y3RvciBhZnRlcndhcmQuIFdpdGggYFNldFVw
KCkvVGVhckRvd24oKWAsIGEgc3ViY2xhc3MgbWF5IG1ha2UgdGhlIG1pc3Rha2Ugb2YgZm9yZ2V0
dGluZyB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBgU2V0VXAoKS9UZWFyRG93bigpYCBvciBjYWxs
IHRoZW0gYXQgdGhlIHdyb25nIG1vbWVudC4KLQotWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBg
U2V0VXAoKS9UZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIHJhcmUgY2FzZXM6Ci0gICogSWYg
dGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVz
dCB1c2UgYFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93
aW5nIGluIGEgZGVzdHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHVzdWFs
bHkgd2lsbCBraWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRoYXQgbWFueSBzdGFu
ZGFyZCBsaWJyYXJpZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZSBl
bmFibGVkIGluIHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJlZmVyIGBUZWFy
RG93bigpYCBpZiB5b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0aGF0IHdvcmsgd2l0
aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMuCi0gICogVGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cg
YW4gZXhjZXB0aW9uIHdoZW4gZmxhZyBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBpcyBzcGVj
aWZpZWQuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cyBpbiBhIGRlc3RydWN0b3IgaWYgeW91IHBsYW4gdG8gcnVuIHlvdXIgdGVzdHMgd2l0aCB0aGlz
IGZsYWcuCi0gICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1h
a2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2FuIGNhbGwg
YSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGljYWxseSBi
b3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwg
YmUgb3ZlcnJpZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgp
L1RlYXJEb3duKClgLgotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGluZyBm
dW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJIGZpeCBp
dD8gIyMKLQotSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRfUFJF
RCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCi1vdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBj
b21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKLW92ZXJsb2FkZWQg
dmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCi1gRVhQRUNU
X1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCi0KLUlmIHlvdSBzZWUgdGhp
cyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCi1gKEFTU0VSVHxFWFBFQ1QpX1BS
RURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJlCi1t
ZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJlc29s
dmUgdGhlIHByb2JsZW0gYnkKLWV4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hpY2gg
dmVyc2lvbiB0byBwaWNrLgotCi1Gb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQotCi1gYGAg
Y3BwCi1ib29sIElzUG9zaXRpdmUoaW50IG4pIHsKLSAgcmV0dXJuIG4gPiAwOwotfQotYm9vbCBJ
c1Bvc2l0aXZlKGRvdWJsZSB4KSB7Ci0gIHJldHVybiB4ID4gMDsKLX0KLWBgYAotCi15b3Ugd2ls
bCBnZXQgYSBjb21waWxlciBlcnJvciBpZiB5b3Ugd3JpdGUKLQotYGBgIGNwcAotRVhQRUNUX1BS
RUQxKElzUG9zaXRpdmUsIDUpOwotYGBgCi0KLUhvd2V2ZXIsIHRoaXMgd2lsbCB3b3JrOgotCi1g
YGAgY3BwCi1FWFBFQ1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0
aXZlKSwgNSk7Ci1gYGAKLQotKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBm
b3IgdGhlIGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCi10eXBlIG9mIHRoZSBmdW5jdGlv
biBwb2ludGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCi0KLUFz
IGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCi0KLWBg
YCBjcHAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBJc05lZ2F0aXZlKFQgeCkgewotICBy
ZXR1cm4geCA8IDA7Ci19Ci1gYGAKLQoteW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNz
ZXJ0aW9uIGxpa2UgdGhpczoKLQotYGBgIGNwcAotQVNTRVJUX1BSRUQxKElzTmVnYXRpdmUqPGlu
dD4qLCAtNSk7Ci1gYGAKLQotVGhpbmdzIGFyZSBtb3JlIGludGVyZXN0aW5nIGlmIHlvdXIgdGVt
cGxhdGUgaGFzIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVycy4gVGhlCi1mb2xsb3dpbmcgd29uJ3Qg
Y29tcGlsZToKLQotYGBgIGNwcAotQVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4q
LCA1LCAwKTsKLWBgYAotCi0KLWFzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFy
ZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVudHMsCi13aGljaCBpcyBvbmUgbW9yZSB0
aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKLWZ1
bmN0aW9uIGluIHBhcmVudGhlc2VzOgotCi1gYGAgY3BwCi1BU1NFUlRfUFJFRDIoKihHcmVhdGVy
VGhhbjxpbnQsIGludD4pKiwgNSwgMCk7Ci1gYGAKLQotCi0jIyBNeSBjb21waWxlciBjb21wbGFp
bnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVOXF9BTExcX1RF
U1RTKCkuIFdoeT8gIyMKLQotU29tZSBwZW9wbGUgaGFkIGJlZW4gaWdub3JpbmcgdGhlIHJldHVy
biB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4gVGhhdCBpcywKLWluc3RlYWQgb2YKLQotYGBg
IGNwcAotcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi10aGV5IHdyaXRlCi0KLWBgYCBj
cHAKLVJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi1UaGlzIGlzIHdyb25nIGFuZCBkYW5nZXJvdXMu
IEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2VlIHRoZSByZXR1cm4gdmFsdWUgb2YKLWBSVU5fQUxM
X1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYg
eW91ciBgbWFpbigpYAotZnVuY3Rpb24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29u
c2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQgaGFzIGEKLUdvb2dsZSBUZXN0IGFzc2VydGlv
biBmYWlsdXJlLiBWZXJ5IGJhZC4KLQotVG8gaGVscCB0aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5n
ZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRpb24gb2YKLWBSVU5fQUxMX1RFU1RTKClgIGNhdXNl
cyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5nLCB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMKLWln
bm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJuaW5nLCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBt
YWtlIHN1cmUgaXRzIHZhbHVlCi1pcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgYG1haW4o
KWAuCi0KLSMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRl
c3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hhdCdzIGdvaW5nIG9uPyAjIwotCi1E
dWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRh
eCBmb3Igc3RyZWFtaW5nCi1tZXNzYWdlcyB0byBhbiBgQVNTRVJUXypgLCBlLmcuCi0KLWBgYCBj
cHAKLUFTU0VSVF9FUSgxLCBGb28oKSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOwotYGBgCi0KLXdl
IGhhZCB0byBnaXZlIHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBgRVhQ
RUNUKmAgYW5kCi1gQUREX0ZBSUxVUkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9y
cy4gVGhlIHdvcmthcm91bmQgaXMgdG8gbW92ZSB0aGUKLWNvbnRlbnQgb2YgeW91ciBjb25zdHJ1
Y3Rvci9kZXN0cnVjdG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IKLXN3
aXRjaCB0byBgRVhQRUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4gVGhpcyBzZWN0aW9uIGluIHRoZSB1
c2VyJ3MgZ3VpZGUgZXhwbGFpbnMKLWl0LgotCi0jIyBNeSBzZXQtdXAgZnVuY3Rpb24gaXMgbm90
IGNhbGxlZC4gV2h5PyAjIwotCi1DKysgaXMgY2FzZS1zZW5zaXRpdmUuIEl0IHNob3VsZCBiZSBz
cGVsbGVkIGFzIGBTZXRVcCgpYC4gIERpZCB5b3UKLXNwZWxsIGl0IGFzIGBTZXR1cCgpYD8KLQot
U2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRlc3RDYXNlKClgIGFzIGBT
ZXR1cFRlc3RDYXNlKClgIGFuZAotd29uZGVyIHdoeSBpdCdzIG5ldmVyIGNhbGxlZC4KLQotIyMg
SG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4gRW1hY3MgZGlyZWN0bHk/
ICMjCi0KLUdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29k
IGJ5IEVtYWNzIGFuZCBtYW55IG90aGVyCi1JREVzLCBsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBh
IEdvb2dsZSBUZXN0IG1lc3NhZ2UgaXMgaW4gYSBjb21waWxhdGlvbiBidWZmZXIKLWluIEVtYWNz
LCB0aGVuIGl0J3MgY2xpY2thYmxlLiBZb3UgY2FuIG5vdyBoaXQgYGVudGVyYCBvbiBhIG1lc3Nh
Z2UgdG8ganVtcCB0bwotdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIG9yIHVzZSBgQy14
IGBgIHRvIGp1bXAgdG8gdGhlIG5leHQgZmFpbHVyZS4KLQotIyMgSSBoYXZlIHNldmVyYWwgdGVz
dCBjYXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgbG9naWMsIGRvIEkgaGF2
ZSB0byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNzIGZvciBlYWNoIG9mIHRoZW0/IFRo
aXMgc2VlbXMgcHJldHR5IHRlZGlvdXMuICMjCi0KLVlvdSBkb24ndCBoYXZlIHRvLiBJbnN0ZWFk
IG9mCi0KLWBgYCBjcHAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307Ci0KLVRF
U1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0K
LQotY2xhc3MgQmFyVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKLQotVEVTVF9GKEJhclRlc3Qs
IEFiYykgeyAuLi4gfQotVEVTVF9GKEJhclRlc3QsIERlZikgeyAuLi4gfQotYGBgCi0KLXlvdSBj
YW4gc2ltcGx5IGB0eXBlZGVmYCB0aGUgdGVzdCBmaXh0dXJlczoKLWBgYCBjcHAKLXR5cGVkZWYg
QmFzZVRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9G
KEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEJhc2VUZXN0IEJhclRlc3Q7Ci0KLVRF
U1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0K
LWBgYAotCi0jIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1
bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIwotCi1UaGUgR29vZ2xlIFRlc3Qg
b3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5kbHkgcmVwb3J0
LiBJZgoteW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYsIGl0IHdpbGwg
bWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0Ci1vdXRwdXQsIG1ha2luZyBpdCBoYXJkIHRvIHJlYWQu
IEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcwotcHJvYmxlbS4KLQot
U2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNpZGVkIHRvIGxldCBH
b29nbGUgVGVzdCBvdXRwdXQgZ28KLXRvIHN0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5
IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgotZXhhbXBsZToKLWBgYAot
Li9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0Ci1gYGAKLQotIyMgV2h5IHNob3VsZCBJ
IHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8gIyMKLQotVGhlcmUg
YXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgotICAxLiBJdCdzIGxpa2VseSB5b3VyIHRlc3QgbmVl
ZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgbWFr
ZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRl
c3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5nIGRpZmZpY3VsdC4g
QnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBzZXQgb2YgdmFyaWFibGVz
IHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVzKS4gVGh1cywgdGVzdHMg
YXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgMS4gR2xvYmFsIHZhcmlhYmxl
cyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotICAxLiBUZXN0IGZpeHR1cmVzIGNhbiBi
ZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBlYXNpbHkgd2l0
aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRlc3QgY2FzZXMgaGF2
ZSBzb21ldGhpbmcgaW4gY29tbW9uLgotCi0jIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mg
bWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1Zb3Ugc2hvdWxk
IHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBjbGFzc2VzIHNob3VsZCBi
ZSBlYXNpbHkKLXRlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZhY2UuIE9uZSB3YXkgdG8g
YWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKLXlvdSBtb3ZlIGFsbCBwcml2YXRlIG1l
bWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQgbWFrZSBhbGwKLW1lbWJl
cnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCi0KLVlvdSBoYXZlIHNldmVyYWwgb3RoZXIg
b3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9URVNUYDoKLSAgKiBXcml0
ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzczoKLWBgYCBjcHAKLWNs
YXNzIEZvbyB7Ci0gIGZyaWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICB2
b2lkIFRlc3QxKCkgey4uLn0gLy8gVGhpcyBhY2Nlc3NlcyBwcml2YXRlIG1lbWJlcnMgb2YgY2xh
c3MgRm9vLgotICB2b2lkIFRlc3QyKCkgey4uLn0gLy8gU28gZG9lcyB0aGlzIG9uZS4KLX07Ci0K
LVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotICBUZXN0MSgpOwotfQotCi1URVNUX0YoRm9vVGVz
dCwgVGVzdDIpIHsKLSAgVGVzdDIoKTsKLX0KLWBgYAotICAqIEluIHRoZSBmaXh0dXJlIGNsYXNz
LCB3cml0ZSBhY2Nlc3NvcnMgZm9yIHRoZSB0ZXN0ZWQgY2xhc3MnIHByaXZhdGUgbWVtYmVycywg
dGhlbiB1c2UgdGhlIGFjY2Vzc29ycyBpbiB5b3VyIHRlc3RzOgotYGBgIGNwcAotY2xhc3MgRm9v
IHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Ci0gIC4uLgotfTsKLQotY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLi4uCi0gIFQxIGdldF9w
cml2YXRlX21lbWJlcjEoRm9vKiBvYmopIHsKLSAgICByZXR1cm4gb2JqLT5wcml2YXRlX21lbWJl
cjFfOwotICB9Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsKLSAgLi4uCi0gIGdldF9w
cml2YXRlX21lbWJlcjEoeCkKLSAgLi4uCi19Ci1gYGAKLSAgKiBJZiB0aGUgbWV0aG9kcyBhcmUg
ZGVjbGFyZWQgKipwcm90ZWN0ZWQqKiwgeW91IGNhbiBjaGFuZ2UgdGhlaXIgYWNjZXNzIGxldmVs
IGluIGEgdGVzdC1vbmx5IHN1YmNsYXNzOgotYGBgIGNwcAotY2xhc3MgWW91ckNsYXNzIHsKLSAg
Li4uCi0gcHJvdGVjdGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4KLSAg
aW50IERvU29tZXRoaW5nUmV0dXJuaW5nSW50KCk7Ci0gIC4uLgotfTsKLQotLy8gaW4gdGhlIHlv
dXJfY2xhc3NfdGVzdC5jYyBmaWxlOgotY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJsaWMg
WW91ckNsYXNzIHsKLSAgLi4uCi0gcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRoaW5n
UmV0dXJuaW5nSW50OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKLSAgLi4uCi19OwotCi1URVNU
X0YoWW91ckNsYXNzVGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7Ci0gIFRlc3RhYmxlWW91ckNsYXNz
IG9iajsKLSAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdSZXR1
cm5pbmdJbnQoKSk7Ci19Ci1gYGAKLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIHN0
YXRpYyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCi0KLVdlIGZp
bmQgcHJpdmF0ZSBzdGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRoZXkg
YXJlCi1pbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0IG91
dCBvZiBhIC5oLiBTbyBvZnRlbiBJIG1ha2UKLXRoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVhZC4K
LQotSW5zdGVhZCBvZjoKLWBgYCBjcHAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSBw
cml2YXRlOgotICBzdGF0aWMgYm9vbCBGdW5jKGludCBuKTsKLX07Ci0KLS8vIGZvby5jYwotYm9v
bCBGb286OkZ1bmMoaW50IG4pIHsgLi4uIH0KLQotLy8gZm9vX3Rlc3QuY2MKLUVYUEVDVF9UUlVF
KEZvbzo6RnVuYygxMjM0NSkpOwotYGBgCi0KLVlvdSBwcm9iYWJseSBzaG91bGQgYmV0dGVyIHdy
aXRlOgotYGBgIGNwcAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotfTsKLQotLy8gZm9v
LmNjCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotICBib29sIEZ1bmMoaW50IG4pIHsgLi4uIH0KLX0K
LQotLy8gZm9vX3Rlc3QuY2MKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0gIGJvb2wgRnVuYyhpbnQg
bik7Ci19Ci0KLUVYUEVDVF9UUlVFKGludGVybmFsOjpGdW5jKDEyMzQ1KSk7Ci1gYGAKLQotIyMg
SSB3b3VsZCBsaWtlIHRvIHJ1biBhIHRlc3Qgc2V2ZXJhbCB0aW1lcyB3aXRoIGRpZmZlcmVudCBw
YXJhbWV0ZXJzLiBEbyBJIG5lZWQgdG8gd3JpdGUgc2V2ZXJhbCBzaW1pbGFyIGNvcGllcyBvZiBp
dD8gIyMKLQotTm8uIFlvdSBjYW4gdXNlIGEgZmVhdHVyZSBjYWxsZWQgW3ZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHNdKEFkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykg
d2hpY2gKLWxldHMgeW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRl
cnMsIHdpdGhvdXQgZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCi0KLSMjIEhvdyBkbyBJIHRl
c3QgYSBmaWxlIHRoYXQgZGVmaW5lcyBtYWluKCk/ICMjCi0KLVRvIHRlc3QgYSBgZm9vLmNjYCBm
aWxlLCB5b3UgbmVlZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QK
LXByb2dyYW0uIEhvd2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZv
ciB0aGUgYG1haW4oKWAKLWZ1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClg
IG9mIHlvdXIgdW5pdCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KLWEgYnVpbGQgZXJyb3IuCi0K
LVRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgotICAx
LiBgZm9vLmhgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCi0gIDEuIGBmb28uY2Ng
IHdoaWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAotICAx
LiBgZm9vX21haW4uY2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9u
IG9mIGBtYWluKClgLgotCi1UaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgotCi1J
ZiB5b3UgYXJlIGFkZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50
IGFuIGludHJ1c2l2ZSBjaGFuZ2UKLWxpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGlu
Y2x1ZGUgdGhlIGVudGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAotdGVzdC4gRm9yIGV4
YW1wbGU6Ci1gYGAgY3BwCi0vLyBGaWxlIGZvb191bml0dGVzdC5jYwotCi0vLyBUaGUgaGVhZGVy
cyBzZWN0aW9uCi0uLi4KLQotLy8gUmVuYW1lcyBtYWluKCkgaW4gZm9vLmNjIHRvIG1ha2Ugcm9v
bSBmb3IgdGhlIHVuaXQgdGVzdCBtYWluKCkKLSNkZWZpbmUgbWFpbiBGb29NYWluCi0KLSNpbmNs
dWRlICJhL2IvZm9vLmNjIgotCi0vLyBUaGUgdGVzdHMgc3RhcnQgaGVyZS4KLS4uLgotYGBgCi0K
LQotSG93ZXZlciwgcGxlYXNlIHJlbWVtYmVyIHRoaXMgaXMgYSBoYWNrIGFuZCBzaG91bGQgb25s
eSBiZSB1c2VkIGFzIHRoZSBsYXN0Ci1yZXNvcnQuCi0KLSMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1l
bnQgYXJndW1lbnQgaW4gQVNTRVJUXF9ERUFUSCgpIGJlPyAjIwotCi1gQVNTRVJUX0RFQVRIKF9z
dGF0ZW1lbnRfLCBfcmVnZXhfKWAgKG9yIGFueSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBi
ZSB1c2VkCi13aGVyZXZlciBgX3N0YXRlbWVudF9gIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYF9z
dGF0ZW1lbnRfYCBjYW4gYmUgYW55IEMrKwotc3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4g
dGhlIGN1cnJlbnQgY29udGV4dC4gSW4gcGFydGljdWxhciwgaXQgY2FuCi1yZWZlcmVuY2UgZ2xv
YmFsIGFuZC9vciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBjYW4gYmU6Ci0gICogYSBzaW1wbGUgZnVu
Y3Rpb24gY2FsbCAob2Z0ZW4gdGhlIGNhc2UpLAotICAqIGEgY29tcGxleCBleHByZXNzaW9uLCBv
cgotICAqIGEgY29tcG91bmQgc3RhdGVtZW50LgotCi1Tb21lIGV4YW1wbGVzIGFyZSBzaG93biBo
ZXJlOgotCi1gYGAgY3BwCi0vLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9u
IGNhbGwuCi1URVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKLSAgQVNTRVJUX0RFQVRI
KFh5eig1KSwgIlh5eiBmYWlsZWQiKTsKLX0KLQotLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24g
dGhhdCByZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgotVEVTVChNeURlYXRoVGVz
dCwgQ29tcGxleEV4cHJlc3Npb24pIHsKLSAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7Ci0g
IEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCi0g
ICAgICAgICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Ci19Ci0KLS8vIERlYXRoIGFz
c2VydGlvbnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCi0vLyBwYXJ0
aWN1bGFyLCB0aGV5IGNhbiBiZSBpbnNpZGUgYSBsb29wLgotVEVTVChNeURlYXRoVGVzdCwgSW5z
aWRlTG9vcCkgewotICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBG
b28oNCkgYWxsIGRpZS4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBF
Q1RfREVBVEhfTShGb28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKLSAgICAgICAgICAgICAg
ICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOwotICB9Ci19
Ci0KLS8vIEEgZGVhdGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50
LgotVEVTVChNeURlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKLSAgLy8gVmVyaWZpZXMg
dGhhdCBhdCBsZWFzZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCi0gIC8vIEJhcig0
KSBkaWVzLgotICBBU1NFUlRfREVBVEgoewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsr
KSB7Ci0gICAgICBCYXIoaSk7Ci0gICAgfQotICB9LAotICAiQmFyIGhhcyBcXGQrIGVycm9ycyIp
O30KLWBgYAotCi1gZ29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxl
cyBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCi0KLSMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKLQotT24gUE9TSVggc3lzdGVt
cywgR29vZ2xlIFRlc3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgotZXhwcmVzc2lv
biBzeW50YXgKLShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lv
biNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KLU9uIFdpbmRvd3MsIGl0IHVz
ZXMgYSBsaW1pdGVkIHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uCi1zeW50YXguIEZvciBt
b3JlIGRldGFpbHMsIHNlZSB0aGUKLVtyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShBZHZhbmNl
ZEd1aWRlLm1kI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgotCi0jIyBJIGhhdmUgYSBmaXh0
dXJlIGNsYXNzIEZvbywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBt
YXRjaGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIwotCi1Hb29n
bGUgVGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBm
aXh0dXJlIGNsYXNzLCBzbwotaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9y
bWFsbHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKLXlvdS4gSG93ZXZlciwgdGhl
cmUgYXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKLSAgKiBJZiB5
b3UgZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNz
IGBGb29gLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2
ZW4gaWYgaXQgd291bGQgYmUgZW1wdHkuCi0gICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0
YXRpYyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29u
c3RydWN0b3IgX2FuZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFs
aXplciBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRv
ZXNuJ3QgZm9yY2UgeW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1
ZyB0aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQotCi0jIyBXaHkgZG9lcyBBU1NFUlRc
X0RFQVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkg
am9pbmVkPyAjIwotCi1XaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5v
IHR1cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUKLWxpbmUgZnJvbSBzaW5nbGUgdGhyZWFk
IHRvIG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQotdGhyZWFk
LCBhIG1hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywg
bm90IDIsIHRocmVhZHMuCi1MYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0
aGUgbWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQKLWRlY3JlbWVudHMgYnkgMSwgYnV0IHRo
ZSBtYW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUK
LTIgdGhyZWFkcywgd2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVz
dC4KLQotVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhp
cyBwcm9ibGVtLCBhcyBpdCBkb2Vzbid0Ci1jcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZl
ciwgaWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKLXJ1bnMgb24s
IHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCi0KLSMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0
IHJlcXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0
cywgdG8gYmUgbmFtZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAj
IwotCi1Hb29nbGUgVGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50
IHRlc3QgY2FzZXMuIFRoYXQgaXMsIGl0Ci1ydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNl
IGZpcnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0Ci1jYXNlLCBh
bmQgc28gb24uIEdvb2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1
cCBhIHRlc3QgY2FzZQotYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRl
YXIgaXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKLXRoZSB0ZXN0IGNhc2Ugd291bGQg
cmVxdWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlz
Ci1pbmVmZmljaWVudCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgotCi1JZiB3ZSB3
ZXJlIHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGlu
c3RlYWQgb2YgdGVzdAotY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdp
dGggdGhlIGZvbGxvd2luZyBzaXR1YXRpb246Ci0KLWBgYCBjcHAKLVRFU1RfRihGb29UZXN0LCBB
YmNEZWF0aFRlc3QpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KLQotVEVT
VF9GKEJhclRlc3QsIERlZkRlYXRoVGVzdCkgeyAuLi4gfQotVEVTVF9GKEJhclRlc3QsIFh5eikg
eyAuLi4gfQotYGBgCi0KLVNpbmNlIGBGb29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVu
IGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBhbmQgd2UgZG9uJ3QKLWludGVybGVhdmUgdGVzdHMgZnJv
bSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgd2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQot
YEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBj
YXNlLiBUaGlzIGNvbnRyYWRpY3RzCi13aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRl
c3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUgYEZvb1Rlc3QuVXZ3YC4KLQotIyMgQnV0IEkgZG9uJ3Qg
bGlrZSBjYWxsaW5nIG15IGVudGlyZSB0ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29u
dGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBhbmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/
ICMjCi0KLVlvdSBkb24ndCBoYXZlIHRvLCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQg
dXAgdGhlIHRlc3QgY2FzZSBpbnRvCi1gRm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVy
ZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVhciB0aGF0IHRoZXkgYXJlCi1yZWxhdGVkOgotCi1gYGAg
Y3BwCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OwotCi1U
RVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9
Ci0KLXR5cGVkZWYgRm9vVGVzdCBGb29EZWF0aFRlc3Q7Ci0KLVRFU1RfRihGb29EZWF0aFRlc3Qs
IFV2dykgeyAuLi4gRVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KLVRFU1RfRihGb29EZWF0aFRlc3Qs
IFh5eikgeyAuLi4gQVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KLWBgYAotCi0jIyBUaGUgY29tcGls
ZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNl
IGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8gIyMKLQotSWYgeW91IHVzZSBhIHVzZXItZGVmaW5l
ZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQotdGhl
cmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBG
b29UeXBlJilgIGZ1bmN0aW9uCi1kZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1
ZSBvZiBgRm9vVHlwZWAuCi0KLUluIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQg
aW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCi1uZWVkcyB0byBiZSBkZWZp
bmVkIGluIHRoZSBfc2FtZV8gbmFtZSBzcGFjZS4KLQotIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhl
IG1lbW9yeSBsZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMjCi0KLVNpbmNlIHRoZSBzdGF0aWNh
bGx5IGluaXRpYWxpemVkIEdvb2dsZSBUZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9u
cyBvbgotdGhlIGhlYXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwg
cmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0aGUKLWVuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBl
YXNpZXN0IHdheSB0byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKLWBfQ3J0TWVtQ2hlY2twb2lu
dGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBh
bnkKLXN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9y
ZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFsCi1oZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgotCi0j
IyBJIGFtIGJ1aWxkaW5nIG15IHByb2plY3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1
ZGlvIGFuZCBhbGwgSSdtIGdldHRpbmcgaXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3
YXJuaW5ncykuIEhlbHAhICMjCi0KLVlvdSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dp
bmcgbGlua2VyIGVycm9yIG9yIHdhcm5pbmdzIGlmIHlvdQotYXR0ZW1wdCB0byBsaW5rIHlvdXIg
dGVzdCBwcm9qZWN0IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoteW91ciBwcm9q
ZWN0IGFuZCB0aGUgYXJlIG5vdCBidWlsdCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5n
cy4KLQotICAqIExOSzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0Ci0gICog
TE5LNDIxNzogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5j
dGlvbiAnZnVuY3Rpb24nCi0gICogTE5LNDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3lt
Ym9sJyBpbXBvcnRlZAotCi1UaGUgR29vZ2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBo
YXMgdGhlIFJ1bnRpbWUgTGlicmFyeSBvcHRpb24KLXNldCB0byAvTVQgKHVzZSBtdWx0aS10aHJl
YWRlZCBzdGF0aWMgbGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1ZykuIElmCi15b3VyIHByb2plY3Qg
dXNlcyBzb21ldGhpbmcgZWxzZSwgZm9yIGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQK
LURMTHMsIC9NRGQgZm9yIGRlYnVnKSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGlu
IHRoZSBHb29nbGUKLVRlc3QgcHJvamVjdCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KLQotVG8g
dXBkYXRlIHRoaXMgc2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZp
c3VhbAotU3R1ZGlvIElERSB0aGVuIHNlbGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJv
cGVydGllcyB8IEMvQysrIHwKLUNvZGUgR2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24g
IlJ1bnRpbWUgTGlicmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5Ci11c2luZyBndGVzdC1tZC52Y3By
b2ogaW5zdGVhZCBvZiBndGVzdC52Y3Byb2ouCi0KLSMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGli
cmFyeSBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8g
IyMKLUhhdmUgeW91IHJlYWQgYQotW3dhcm5pbmddKFByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1m
b3ItdmlzdWFsLWMtdXNlcnMpIG9uCi10aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/Ci0KLSMj
IEkgd2FudCB0byB1c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBr
bm93IHdoZXJlIHRvIHN0YXJ0LiAjIwotTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24g
YW5kIG9uZSBvZiB0aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bwotb3VyIG1haWxpbmcgbGlzdC4K
LQotIyMgSSBhbSBzZWVpbmcgY29tcGlsZSBlcnJvcnMgbWVudGlvbmluZyBzdGQ6OnR5cGVcX3Ry
YWl0cyB3aGVuIEkgdHJ5IHRvIHVzZSBHb29nbGUgVGVzdCBvbiBTb2xhcmlzLiAjIwotR29vZ2xl
IFRlc3QgdXNlcyBwYXJ0cyBvZiB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcnkgdGhhdCBTdW5TdHVk
aW8gZG9lcyBub3Qgc3VwcG9ydC4KLU91ciB1c2VycyByZXBvcnRlZCBzdWNjZXNzIHVzaW5nIGFs
dGVybmF0aXZlIGltcGxlbWVudGF0aW9ucy4gVHJ5IHJ1bm5pbmcgdGhlIGJ1aWxkIGFmdGVyIHJ1
bmluZyB0aGlzIGNvbW1hZDoKLQotYGV4cG9ydCBDQz1jYyBDWFg9Q0MgQ1hYRkxBR1M9Jy1saWJy
YXJ5PXN0bHBvcnQ0J2AKLQotIyMgSG93IGNhbiBteSBjb2RlIGRldGVjdCBpZiBpdCBpcyBydW5u
aW5nIGluIGEgdGVzdD8gIyMKLQotSWYgeW91IHdyaXRlIGNvZGUgdGhhdCBzbmlmZnMgd2hldGhl
ciBpdCdzIHJ1bm5pbmcgaW4gYSB0ZXN0IGFuZCBkb2VzCi1kaWZmZXJlbnQgdGhpbmdzIGFjY29y
ZGluZ2x5LCB5b3UgYXJlIGxlYWtpbmcgdGVzdC1vbmx5IGxvZ2ljIGludG8KLXByb2R1Y3Rpb24g
Y29kZSBhbmQgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIHRlc3Qtb25s
eQotY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5IG1pc3Rha2UgaW4gcHJvZHVjdGlvbi4gIFN1Y2gg
Y2xldmVybmVzcyBhbHNvCi1sZWFkcyB0bwotW0hlaXNlbmJ1Z3NdKGh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvVW51c3VhbF9zb2Z0d2FyZV9idWcjSGVpc2VuYnVnKS4KLVRoZXJlZm9yZSB3
ZSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBHb29nbGUgVGVzdCBk
b2Vzbid0Ci1wcm92aWRlIGEgd2F5IHRvIGRvIGl0LgotCi1JbiBnZW5lcmFsLCB0aGUgcmVjb21t
ZW5kZWQgd2F5IHRvIGNhdXNlIHRoZSBjb2RlIHRvIGJlaGF2ZQotZGlmZmVyZW50bHkgdW5kZXIg
dGVzdCBpcyBbZGVwZW5kZW5jeSBpbmplY3Rpb25dKGh0dHA6Ly9qYW1lc3Nob3JlLmNvbS9CbG9n
L0RlcGVuZGVuY3ktSW5qZWN0aW9uLURlbXlzdGlmaWVkLmh0bWwpLgotWW91IGNhbiBpbmplY3Qg
ZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQgZnJvbSB0aGUKLXByb2R1
Y3Rpb24gY29kZS4gIFNpbmNlIHlvdXIgcHJvZHVjdGlvbiBjb2RlIGRvZXNuJ3QgbGluayBpbiB0
aGUKLWZvci10ZXN0IGxvZ2ljIGF0IGFsbCwgdGhlcmUgaXMgbm8gZGFuZ2VyIGluIGFjY2lkZW50
YWxseSBydW5uaW5nIGl0LgotCi1Ib3dldmVyLCBpZiB5b3UgX3JlYWxseV8sIF9yZWFsbHlfLCBf
cmVhbGx5XyBoYXZlIG5vIGNob2ljZSwgYW5kIGlmCi15b3UgZm9sbG93IHRoZSBydWxlIG9mIGVu
ZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAsCi15b3UgY2FuIHVzZSB0
aGUgX2hvcnJpYmxlXyBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0YWJsZSBuYW1lCi0oYGFy
Z3ZbMF1gIGluIGBtYWluKClgKSB0byBrbm93IHdoZXRoZXIgdGhlIGNvZGUgaXMgdW5kZXIgdGVz
dC4KLQotIyMgR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG1hY3JvIHRoYXQgY2xhc2hlcyB3aXRoIG9u
ZSBkZWZpbmVkIGJ5IGFub3RoZXIgbGlicmFyeS4gSG93IGRvIEkgZGVhbCB3aXRoIHRoYXQ/ICMj
Ci0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28g
bGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxs
IGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGgKLWRlZmluaXRpb25zLiAgSW4gY2FzZSBhIEdv
b2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVyCi1saWJyYXJ5LCB5b3UgY2FuIGZv
cmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhlCi1jb25mbGlj
dC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNv
ZGUgZGVmaW5lIG1hY3JvCi1gRk9PYCwgeW91IGNhbiBhZGQKLWBgYAotICAtREdURVNUX0RPTlRf
REVGSU5FX0ZPTz0xCi1gYGAKLXRvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBU
ZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1lCi1mcm9tIGBGT09gIHRvIGBHVEVTVF9GT09g
LiBGb3IgZXhhbXBsZSwgd2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwg
bmVlZCB0byB3cml0ZQotYGBgIGNwcAotICBHVEVTVF9URVNUKFNvbWVUZXN0LCBEb2VzVGhpcykg
eyAuLi4gfQotYGBgCi1pbnN0ZWFkIG9mCi1gYGAgY3BwCi0gIFRFU1QoU29tZVRlc3QsIERvZXNU
aGlzKSB7IC4uLiB9Ci1gYGAKLWluIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCi0KLUN1cnJlbnRs
eSwgdGhlIGZvbGxvd2luZyBgVEVTVGAsIGBGQUlMYCwgYFNVQ0NFRURgLCBhbmQgdGhlIGJhc2lj
IGNvbXBhcmlzb24gYXNzZXJ0aW9uIG1hY3JvcyBjYW4gaGF2ZSBhbHRlcm5hdGl2ZSBuYW1lcy4g
WW91IGNhbiBzZWUgdGhlIGZ1bGwgbGlzdCBvZiBjb3ZlcmVkIG1hY3JvcyBbaGVyZV0oaHR0cDov
L3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1pZishR1RFU1RfRE9OVF9ERUZJTkVfXHclMkIr
cGFja2FnZTpodHRwOi8vZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tK2ZpbGU6L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCkuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSAiQXZv
aWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzIiBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KLQot
Ci0jIyBJcyBpdCBPSyBpZiBJIGhhdmUgdHdvIHNlcGFyYXRlIGBURVNUKEZvbywgQmFyKWAgdGVz
dCBtZXRob2RzIGRlZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXM/ICMjCi0KLVllcy4KLQot
VGhlIHJ1bGUgaXMgKiphbGwgdGVzdCBtZXRob2RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0
IHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzKiouIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93
aW5nIGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlIHNhbWUgZml4dHVy
ZSBjbGFzcyAoYDo6dGVzdGluZzo6VGVzdGApLgotCi1gYGAgY3BwCi1uYW1lc3BhY2UgZm9vIHsK
LVRFU1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7Ci0gIFNVQ0NFRUQoKTsKLX0KLX0gIC8vIG5h
bWVzcGFjZSBmb28KLQotbmFtZXNwYWNlIGJhciB7Ci1URVNUKENvb2xUZXN0LCBEb1NvbWV0aGlu
ZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQotSG93ZXZl
ciwgdGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNl
IGEgcnVudGltZSBlcnJvciBmcm9tIEdvb2dsZSBUZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9k
cyBhcmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUg
dGVzdCBjYXNlIG5hbWUuCi0KLWBgYCBjcHAKLW5hbWVzcGFjZSBmb28gewotY2xhc3MgQ29vbFRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZSBmb286OkNvb2xUZXN0
Ci1URVNUX0YoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7Ci0gIFNVQ0NFRUQoKTsKLX0KLX0gIC8v
IG5hbWVzcGFjZSBmb28KLQotbmFtZXNwYWNlIGJhciB7Ci1jbGFzcyBDb29sVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlOiBiYXI6OkNvb2xUZXN0Ci1URVNUX0Yo
Q29vbFRlc3QsIERvU29tZXRoaW5nKSB7Ci0gIFNVQ0NFRUQoKTsKLX0KLX0gIC8vIG5hbWVzcGFj
ZSBmb28KLWBgYAotCi0jIyBIb3cgZG8gSSBidWlsZCBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsg
d2l0aCBYY29kZSA0PyAjIwotCi1JZiB5b3UgdHJ5IHRvIGJ1aWxkIEdvb2dsZSBUZXN0J3MgWGNv
ZGUgcHJvamVjdCB3aXRoIFhjb2RlIDQuMCBvciBsYXRlciwgeW91IG1heSBlbmNvdW50ZXIgYW4g
ZXJyb3IgbWVzc2FnZSB0aGF0IGxvb2tzIGxpa2UKLSJNaXNzaW5nIFNESyBpbiB0YXJnZXQgZ3Rl
c3RcX2ZyYW1ld29yazogL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayIuIFRoYXQgbWVh
bnMgdGhhdCBYY29kZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTREsgdGhlIHByb2plY3QgaXMgdGFy
Z2V0aW5nLiBTZWUgdGhlIFhjb2RlIHNlY3Rpb24gaW4gdGhlIFtSRUFETUVdKC4uL1JFQURNRS5t
ZCkgZmlsZSBvbiBob3cgdG8gcmVzb2x2ZSB0aGlzLgotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3Qg
Y292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKLQotSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIg
dG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZBUSwgdGhlcmUgYXJlCi1zb21lIG90aGVyIHJlc291
cmNlcyB5b3UgY2FuIHVzZToKLQotICAxLiByZWFkIG90aGVyIFt3aWtpIHBhZ2VzXSguLi9kb2Nz
KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHBzOi8vZ3JvdXBz
Lmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9nb29nbGV0ZXN0ZnJhbWV3b3JrKSwKLSAgMS4gYXNr
IGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29n
bGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5zd2Vy
IGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNjdXNz
aW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1l
d29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgotCi1QbGVhc2Ugbm90ZSB0aGF0IGNyZWF0aW5n
IGFuIGlzc3VlIGluIHRoZQotW2lzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n
bGUvZ29vZ2xldGVzdC9pc3N1ZXMpIGlzIF9ub3RfCi1hIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFu
c3dlciwgYXMgaXQgaXMgbW9uaXRvcmVkIGluZnJlcXVlbnRseSBieSBhCi12ZXJ5IHNtYWxsIG51
bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4gYXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0
byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlCi1mb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2li
bGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5b3UgaWYgdGhlcmUncwotbm90IGVub3VnaCBpbmZvcm1h
dGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToKLQotICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgY29tbWl0
IGhhc2ggaWYgeW91IGNoZWNrIG91dCBmcm9tIEdpdCBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3Qg
eW91IHVzZSAoR29vZ2xlIFRlc3QgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdz
IHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZl
cnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVy
c2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxh
Z3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIg
ZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0g
ICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJv
Z3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2RvY3MvUHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QcmltZXIubWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NGMxZDJhYjYzMjE5MzIwMmY1YmZhNzk5ZWJk
NjQyZDBhMzA4YTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvZG9jcy9QcmltZXIubWQKKysrIC9kZXYvbnVsbApAQCAtMSw1MDIgKzAs
MCBAQAotCi0KLSMgSW50cm9kdWN0aW9uOiBXaHkgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
az8gIwotCi1fR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29ya18gaGVscHMgeW91IHdyaXRlIGJl
dHRlciBDKysgdGVzdHMuCi0KLU5vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExpbnV4LCBX
aW5kb3dzLCBvciBhIE1hYywgaWYgeW91IHdyaXRlIEMrKyBjb2RlLAotR29vZ2xlIFRlc3QgY2Fu
IGhlbHAgeW91LgotCi1TbyB3aGF0IG1ha2VzIGEgZ29vZCB0ZXN0LCBhbmQgaG93IGRvZXMgR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBmaXQgaW4/IFdlIGJlbGlldmU6Ci0gIDEuIFRlc3Rz
IHNob3VsZCBiZSBfaW5kZXBlbmRlbnRfIGFuZCBfcmVwZWF0YWJsZV8uIEl0J3MgYSBwYWluIHRv
IGRlYnVnIGEgdGVzdCB0aGF0IHN1Y2NlZWRzIG9yIGZhaWxzIGFzIGEgcmVzdWx0IG9mIG90aGVy
IHRlc3RzLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpc29sYXRlcyB0aGUgdGVzdHMg
YnkgcnVubmluZyBlYWNoIG9mIHRoZW0gb24gYSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVz
dCBmYWlscywgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBhbGxvd3MgeW91IHRvIHJ1biBp
dCBpbiBpc29sYXRpb24gZm9yIHF1aWNrIGRlYnVnZ2luZy4KLSAgMS4gVGVzdHMgc2hvdWxkIGJl
IHdlbGwgX29yZ2FuaXplZF8gYW5kIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVk
IGNvZGUuICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGdyb3VwcyByZWxhdGVkIHRlc3Rz
IGludG8gdGVzdCBjYXNlcyB0aGF0IGNhbiBzaGFyZSBkYXRhIGFuZCBzdWJyb3V0aW5lcy4gVGhp
cyBjb21tb24gcGF0dGVybiBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQgbWFrZXMgdGVzdHMgZWFz
eSB0byBtYWludGFpbi4gU3VjaCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hl
biBwZW9wbGUgc3dpdGNoIHByb2plY3RzIGFuZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUg
YmFzZS4KLSAgMS4gVGVzdHMgc2hvdWxkIGJlIF9wb3J0YWJsZV8gYW5kIF9yZXVzYWJsZV8uIFRo
ZSBvcGVuLXNvdXJjZSBjb21tdW5pdHkgaGFzIGEgbG90IG9mIGNvZGUgdGhhdCBpcyBwbGF0Zm9y
bS1uZXV0cmFsLCBpdHMgdGVzdHMgc2hvdWxkIGFsc28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgd29ya3Mgb24gZGlmZmVyZW50IE9TZXMsIHdpdGgg
ZGlmZmVyZW50IGNvbXBpbGVycyAoZ2NjLCBNU1ZDLCBhbmQgb3RoZXJzKSwgd2l0aCBvciB3aXRo
b3V0IGV4Y2VwdGlvbnMsIHNvIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgdGVzdHMgY2Fu
IGVhc2lseSB3b3JrIHdpdGggYSB2YXJpZXR5IG9mIGNvbmZpZ3VyYXRpb25zLiAgKE5vdGUgdGhh
dCB0aGUgY3VycmVudCByZWxlYXNlIG9ubHkgY29udGFpbnMgYnVpbGQgc2NyaXB0cyBmb3IgTGlu
dXggLSB3ZSBhcmUgYWN0aXZlbHkgd29ya2luZyBvbiBzY3JpcHRzIGZvciBvdGhlciBwbGF0Zm9y
bXMuKQotICAxLiBXaGVuIHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBf
aW5mb3JtYXRpb25fIGFib3V0IHRoZSBwcm9ibGVtIGFzIHBvc3NpYmxlLiBHb29nbGUgQysrIFRl
c3RpbmcgRnJhbWV3b3JrIGRvZXNuJ3Qgc3RvcCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJ
bnN0ZWFkLCBpdCBvbmx5IHN0b3BzIHRoZSBjdXJyZW50IHRlc3QgYW5kIGNvbnRpbnVlcyB3aXRo
IHRoZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0IHVwIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRh
bCBmYWlsdXJlcyBhZnRlciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4gVGh1cywg
eW91IGNhbiBkZXRlY3QgYW5kIGZpeCBtdWx0aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1lZGl0
LWNvbXBpbGUgY3ljbGUuCi0gIDEuIFRoZSB0ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJh
dGUgdGVzdCB3cml0ZXJzIGZyb20gaG91c2VrZWVwaW5nIGNob3JlcyBhbmQgbGV0IHRoZW0gZm9j
dXMgb24gdGhlIHRlc3QgX2NvbnRlbnRfLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBh
dXRvbWF0aWNhbGx5IGtlZXBzIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24n
dCByZXF1aXJlIHRoZSB1c2VyIHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVt
LgotICAxLiBUZXN0cyBzaG91bGQgYmUgX2Zhc3RfLiBXaXRoIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmssIHlvdSBjYW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcyBhY3Jvc3MgdGVzdHMgYW5k
IHBheSBmb3IgdGhlIHNldC11cC90ZWFyLWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZyB0
ZXN0cyBkZXBlbmQgb24gZWFjaCBvdGhlci4KLQotU2luY2UgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayBpcyBiYXNlZCBvbiB0aGUgcG9wdWxhciB4VW5pdAotYXJjaGl0ZWN0dXJlLCB5b3Un
bGwgZmVlbCByaWdodCBhdCBob21lIGlmIHlvdSd2ZSB1c2VkIEpVbml0IG9yIFB5VW5pdCBiZWZv
cmUuCi1JZiBub3QsIGl0IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAgbWludXRlcyB0byBsZWFybiB0
aGUgYmFzaWNzIGFuZCBnZXQgc3RhcnRlZC4KLVNvIGxldCdzIGdvIQotCi1fTm90ZTpfIFdlIHNv
bWV0aW1lcyByZWZlciB0byBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGluZm9ybWFsbHkK
LWFzIF9Hb29nbGUgVGVzdF8uCi0KLSMgU2V0dGluZyB1cCBhIE5ldyBUZXN0IFByb2plY3QgIwot
Ci1UbyB3cml0ZSBhIHRlc3QgcHJvZ3JhbSB1c2luZyBHb29nbGUgVGVzdCwgeW91IG5lZWQgdG8g
Y29tcGlsZSBHb29nbGUKLVRlc3QgaW50byBhIGxpYnJhcnkgYW5kIGxpbmsgeW91ciB0ZXN0IHdp
dGggaXQuICBXZSBwcm92aWRlIGJ1aWxkCi1maWxlcyBmb3Igc29tZSBwb3B1bGFyIGJ1aWxkIHN5
c3RlbXM6IGBtc3ZjL2AgZm9yIFZpc3VhbCBTdHVkaW8sCi1geGNvZGUvYCBmb3IgTWFjIFhjb2Rl
LCBgbWFrZS9gIGZvciBHTlUgbWFrZSwgYGNvZGVnZWFyL2AgZm9yIEJvcmxhbmQKLUMrKyBCdWls
ZGVyLCBhbmQgdGhlIGF1dG90b29scyBzY3JpcHQgKGRlcHJlY2F0ZWQpIGFuZAotYENNYWtlTGlz
dHMudHh0YCBmb3IgQ01ha2UgKHJlY29tbWVuZGVkKSBpbiB0aGUgR29vZ2xlIFRlc3Qgcm9vdAot
ZGlyZWN0b3J5LiAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaXMgbm90IG9uIHRoaXMgbGlzdCwgeW91
IGNhbiB0YWtlIGEKLWxvb2sgYXQgYG1ha2UvTWFrZWZpbGVgIHRvIGxlYXJuIGhvdyBHb29nbGUg
VGVzdCBzaG91bGQgYmUgY29tcGlsZWQKLShiYXNpY2FsbHkgeW91IHdhbnQgdG8gY29tcGlsZSBg
c3JjL2d0ZXN0LWFsbC5jY2Agd2l0aCBgR1RFU1RfUk9PVGAKLWFuZCBgR1RFU1RfUk9PVC9pbmNs
dWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoLCB3aGVyZSBgR1RFU1RfUk9PVGAKLWlzIHRo
ZSBHb29nbGUgVGVzdCByb290IGRpcmVjdG9yeSkuCi0KLU9uY2UgeW91IGFyZSBhYmxlIHRvIGNv
bXBpbGUgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnksIHlvdSBzaG91bGQKLWNyZWF0ZSBhIHByb2pl
Y3Qgb3IgYnVpbGQgdGFyZ2V0IGZvciB5b3VyIHRlc3QgcHJvZ3JhbS4gIE1ha2Ugc3VyZSB5b3UK
LWhhdmUgYEdURVNUX1JPT1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCBzbyB0
aGF0IHRoZQotY29tcGlsZXIgY2FuIGZpbmQgYCJndGVzdC9ndGVzdC5oImAgd2hlbiBjb21waWxp
bmcgeW91ciB0ZXN0LiAgU2V0IHVwCi15b3VyIHRlc3QgcHJvamVjdCB0byBsaW5rIHdpdGggdGhl
IEdvb2dsZSBUZXN0IGxpYnJhcnkgKGZvciBleGFtcGxlLAotaW4gVmlzdWFsIFN0dWRpbywgdGhp
cyBpcyBkb25lIGJ5IGFkZGluZyBhIGRlcGVuZGVuY3kgb24KLWBndGVzdC52Y3Byb2pgKS4KLQot
SWYgeW91IHN0aWxsIGhhdmUgcXVlc3Rpb25zLCB0YWtlIGEgbG9vayBhdCBob3cgR29vZ2xlIFRl
c3QncyBvd24KLXRlc3RzIGFyZSBidWlsdCBhbmQgdXNlIHRoZW0gYXMgZXhhbXBsZXMuCi0KLSMg
QmFzaWMgQ29uY2VwdHMgIwotCi1XaGVuIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3Ugc3RhcnQgYnkg
d3JpdGluZyBfYXNzZXJ0aW9uc18sIHdoaWNoIGFyZSBzdGF0ZW1lbnRzCi10aGF0IGNoZWNrIHdo
ZXRoZXIgYSBjb25kaXRpb24gaXMgdHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBiZSBf
c3VjY2Vzc18sCi1fbm9uZmF0YWwgZmFpbHVyZV8sIG9yIF9mYXRhbCBmYWlsdXJlXy4gSWYgYSBm
YXRhbCBmYWlsdXJlIG9jY3VycywgaXQgYWJvcnRzCi10aGUgY3VycmVudCBmdW5jdGlvbjsgb3Ro
ZXJ3aXNlIHRoZSBwcm9ncmFtIGNvbnRpbnVlcyBub3JtYWxseS4KLQotX1Rlc3RzXyB1c2UgYXNz
ZXJ0aW9ucyB0byB2ZXJpZnkgdGhlIHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVzdCBj
cmFzaGVzCi1vciBoYXMgYSBmYWlsZWQgYXNzZXJ0aW9uLCB0aGVuIGl0IF9mYWlsc187IG90aGVy
d2lzZSBpdCBfc3VjY2VlZHNfLgotCi1BIF90ZXN0IGNhc2VfIGNvbnRhaW5zIG9uZSBvciBtYW55
IHRlc3RzLiBZb3Ugc2hvdWxkIGdyb3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0Ci1jYXNlcyB0aGF0
IHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlwbGUg
dGVzdHMgaW4gYQotdGVzdCBjYXNlIG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5kIHN1
YnJvdXRpbmVzLCB5b3UgY2FuIHB1dCB0aGVtIGludG8gYQotX3Rlc3QgZml4dHVyZV8gY2xhc3Mu
Ci0KLUEgX3Rlc3QgcHJvZ3JhbV8gY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4KLQot
V2UnbGwgbm93IGV4cGxhaW4gaG93IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGluZyBh
dCB0aGUgaW5kaXZpZHVhbAotYXNzZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0ZXN0
cyBhbmQgdGVzdCBjYXNlcy4KLQotIyBBc3NlcnRpb25zICMKLQotR29vZ2xlIFRlc3QgYXNzZXJ0
aW9ucyBhcmUgbWFjcm9zIHRoYXQgcmVzZW1ibGUgZnVuY3Rpb24gY2FsbHMuIFlvdSB0ZXN0IGEK
LWNsYXNzIG9yIGZ1bmN0aW9uIGJ5IG1ha2luZyBhc3NlcnRpb25zIGFib3V0IGl0cyBiZWhhdmlv
ci4gV2hlbiBhbiBhc3NlcnRpb24KLWZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMgdGhlIGFzc2Vy
dGlvbidzIHNvdXJjZSBmaWxlIGFuZCBsaW5lIG51bWJlciBsb2NhdGlvbiwKLWFsb25nIHdpdGgg
YSBmYWlsdXJlIG1lc3NhZ2UuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBt
ZXNzYWdlCi13aGljaCB3aWxsIGJlIGFwcGVuZGVkIHRvIEdvb2dsZSBUZXN0J3MgbWVzc2FnZS4K
LQotVGhlIGFzc2VydGlvbnMgY29tZSBpbiBwYWlycyB0aGF0IHRlc3QgdGhlIHNhbWUgdGhpbmcg
YnV0IGhhdmUgZGlmZmVyZW50Ci1lZmZlY3RzIG9uIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBgQVNT
RVJUXypgIHZlcnNpb25zIGdlbmVyYXRlIGZhdGFsIGZhaWx1cmVzCi13aGVuIHRoZXkgZmFpbCwg
YW5kICoqYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24qKi4gYEVYUEVDVF8qYCB2ZXJzaW9ucyBn
ZW5lcmF0ZQotbm9uZmF0YWwgZmFpbHVyZXMsIHdoaWNoIGRvbid0IGFib3J0IHRoZSBjdXJyZW50
IGZ1bmN0aW9uLiBVc3VhbGx5IGBFWFBFQ1RfKmAKLWFyZSBwcmVmZXJyZWQsIGFzIHRoZXkgYWxs
b3cgbW9yZSB0aGFuIG9uZSBmYWlsdXJlcyB0byBiZSByZXBvcnRlZCBpbiBhIHRlc3QuCi1Ib3dl
dmVyLCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUXypgIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0
byBjb250aW51ZSB3aGVuCi10aGUgYXNzZXJ0aW9uIGluIHF1ZXN0aW9uIGZhaWxzLgotCi1TaW5j
ZSBhIGZhaWxlZCBgQVNTRVJUXypgIHJldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiBp
bW1lZGlhdGVseSwKLXBvc3NpYmx5IHNraXBwaW5nIGNsZWFuLXVwIGNvZGUgdGhhdCBjb21lcyBh
ZnRlciBpdCwgaXQgbWF5IGNhdXNlIGEgc3BhY2UgbGVhay4KLURlcGVuZGluZyBvbiB0aGUgbmF0
dXJlIG9mIHRoZSBsZWFrLCBpdCBtYXkgb3IgbWF5IG5vdCBiZSB3b3J0aCBmaXhpbmcgLSBzbwot
a2VlcCB0aGlzIGluIG1pbmQgaWYgeW91IGdldCBhIGhlYXAgY2hlY2tlciBlcnJvciBpbiBhZGRp
dGlvbiB0byBhc3NlcnRpb24KLWVycm9ycy4KLQotVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJl
IG1lc3NhZ2UsIHNpbXBseSBzdHJlYW0gaXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCi1gPDxg
IG9wZXJhdG9yLCBvciBhIHNlcXVlbmNlIG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgot
YGBgCi1BU1NFUlRfRVEoeC5zaXplKCksIHkuc2l6ZSgpKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGFy
ZSBvZiB1bmVxdWFsIGxlbmd0aCI7Ci0KLWZvciAoaW50IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsr
aSkgewotICBFWFBFQ1RfRVEoeFtpXSwgeVtpXSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBkaWZmZXIg
YXQgaW5kZXggIiA8PCBpOwotfQotYGBgCi0KLUFueXRoaW5nIHRoYXQgY2FuIGJlIHN0cmVhbWVk
IHRvIGFuIGBvc3RyZWFtYCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uCi1tYWNyby0t
aW4gcGFydGljdWxhciwgQyBzdHJpbmdzIGFuZCBgc3RyaW5nYCBvYmplY3RzLiBJZiBhIHdpZGUg
c3RyaW5nCi0oYHdjaGFyX3QqYCwgYFRDSEFSKmAgaW4gYFVOSUNPREVgIG1vZGUgb24gV2luZG93
cywgb3IgYHN0ZDo6d3N0cmluZ2ApIGlzCi1zdHJlYW1lZCB0byBhbiBhc3NlcnRpb24sIGl0IHdp
bGwgYmUgdHJhbnNsYXRlZCB0byBVVEYtOCB3aGVuIHByaW50ZWQuCi0KLSMjIEJhc2ljIEFzc2Vy
dGlvbnMgIyMKLQotVGhlc2UgYXNzZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlv
biB0ZXN0aW5nLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlv
bioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1RSVUUoYF9jb25kaXRpb25f
YClgOyAgfCBgRVhQRUNUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgIHwgX2NvbmRpdGlvbl8gaXMg
dHJ1ZSB8Ci18IGBBU1NFUlRfRkFMU0UoYF9jb25kaXRpb25fYClgOyB8IGBFWFBFQ1RfRkFMU0Uo
YF9jb25kaXRpb25fYClgOyAgfCBfY29uZGl0aW9uXyBpcyBmYWxzZSB8Ci0KLVJlbWVtYmVyLCB3
aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlIGFuZAotcmV0
dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBh
IG5vbmZhdGFsCi1mYWlsdXJlLCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gY29udGludWUgcnVu
bmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuCi1hc3NlcnRpb24gZmFpbHVyZSBtZWFucyBpdHMgY29u
dGFpbmluZyB0ZXN0IGZhaWxzLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yy4KLQotIyMgQmluYXJ5IENvbXBhcmlzb24gIyMKLQotVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBh
c3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFsdWVzLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9u
KiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfGBB
U1NFUlRfRVEoYF92YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfRVEoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgfCBfdmFsMV8gYD09YCBfdmFsMl8gfAotfGBBU1NFUlRfTkUoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgfGBFWFBFQ1RfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYCE9YCBfdmFs
Ml8gfAotfGBBU1NFUlRfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgfGBFWFBFQ1RfTFQoYF92YWwx
X2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYDxgIF92YWwyXyB8Ci18YEFTU0VSVF9MRShgX3ZhbDFf
YCwgYF92YWwyX2ApO2B8YEVYUEVDVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBg
PD1gIF92YWwyXyB8Ci18YEFTU0VSVF9HVChgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVDVF9H
VChgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgPmAgX3ZhbDJfIHwKLXxgQVNTRVJUX0dF
KGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwg
X3ZhbDFfIGA+PWAgX3ZhbDJfIHwKLQotSW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgR29vZ2xl
IFRlc3QgcHJpbnRzIGJvdGggX3ZhbDFfIGFuZCBfdmFsMl8uCi0KLVZhbHVlIGFyZ3VtZW50cyBt
dXN0IGJlIGNvbXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24KLW9wZXJhdG9y
IG9yIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4gIFdlIHVzZWQgdG8gcmVxdWlyZSB0aGUK
LWFyZ3VtZW50cyB0byBzdXBwb3J0IHRoZSBgPDxgIG9wZXJhdG9yIGZvciBzdHJlYW1pbmcgdG8g
YW4gYG9zdHJlYW1gLAotYnV0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBzaW5jZSB2MS42LjAg
KGlmIGA8PGAgaXMgc3VwcG9ydGVkLCBpdAotd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlIGFy
Z3VtZW50cyB3aGVuIHRoZSBhc3NlcnRpb24gZmFpbHM7Ci1vdGhlcndpc2UgR29vZ2xlIFRlc3Qg
d2lsbCBhdHRlbXB0IHRvIHByaW50IHRoZW0gaW4gdGhlIGJlc3Qgd2F5IGl0Ci1jYW4uIEZvciBt
b3JlIGRldGFpbHMgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlIHByaW50aW5nIG9mIHRoZQotYXJn
dW1lbnRzLCBzZWUgdGhpcyBHb29nbGUgTW9jayBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2NrL2Rv
Y3MvQ29va0Jvb2subWQjdGVhY2hpbmctZ29vZ2xlLW1vY2staG93LXRvLXByaW50LXlvdXItdmFs
dWVzKS4pLgotCi1UaGVzZSBhc3NlcnRpb25zIGNhbiB3b3JrIHdpdGggYSB1c2VyLWRlZmluZWQg
dHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKLWNvcnJlc3BvbmRpbmcgY29tcGFyaXNv
biBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuICBJZiB0aGUgY29ycmVzcG9uZGluZwot
b3BlcmF0b3IgaXMgZGVmaW5lZCwgcHJlZmVyIHVzaW5nIHRoZSBgQVNTRVJUXyooKWAgbWFjcm9z
IGJlY2F1c2UgdGhleSB3aWxsCi1wcmludCBvdXQgbm90IG9ubHkgdGhlIHJlc3VsdCBvZiB0aGUg
Y29tcGFyaXNvbiwgYnV0IHRoZSB0d28gb3BlcmFuZHMgYXMgd2VsbC4KLQotQXJndW1lbnRzIGFy
ZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4gVGhlcmVmb3JlLCBpdCdzIE9LIGZvciB0
aGUKLWFyZ3VtZW50cyB0byBoYXZlIHNpZGUgZWZmZWN0cy4gSG93ZXZlciwgYXMgd2l0aCBhbnkg
b3JkaW5hcnkgQy9DKysgZnVuY3Rpb24sCi10aGUgYXJndW1lbnRzJyBldmFsdWF0aW9uIG9yZGVy
IGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0bwotY2hvb3NlIGFueSBv
cmRlcikgYW5kIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnkgcGFydGljdWxhciBh
cmd1bWVudAotZXZhbHVhdGlvbiBvcmRlci4KLQotYEFTU0VSVF9FUSgpYCBkb2VzIHBvaW50ZXIg
ZXF1YWxpdHkgb24gcG9pbnRlcnMuIElmIHVzZWQgb24gdHdvIEMgc3RyaW5ncywgaXQKLXRlc3Rz
IGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbiwgbm90IGlmIHRoZXkgaGF2
ZSB0aGUgc2FtZSB2YWx1ZS4KLVRoZXJlZm9yZSwgaWYgeW91IHdhbnQgdG8gY29tcGFyZSBDIHN0
cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIqYCkgYnkgdmFsdWUsIHVzZQotYEFTU0VSVF9TVFJFUSgp
YCAsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0byBh
c3NlcnQKLXRoYXQgYSBDIHN0cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKE5VTEws
IGNfc3RyaW5nKWAgLiBIb3dldmVyLCB0bwotY29tcGFyZSB0d28gYHN0cmluZ2Agb2JqZWN0cywg
eW91IHNob3VsZCB1c2UgYEFTU0VSVF9FUWAuCi0KLU1hY3JvcyBpbiB0aGlzIHNlY3Rpb24gd29y
ayB3aXRoIGJvdGggbmFycm93IGFuZCB3aWRlIHN0cmluZyBvYmplY3RzIChgc3RyaW5nYAotYW5k
IGB3c3RyaW5nYCkuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi1f
SGlzdG9yaWNhbCBub3RlXzogQmVmb3JlIEZlYnJ1YXJ5IDIwMTYgYCpfRVFgIGhhZCBhIGNvbnZl
bnRpb24gb2YgY2FsbGluZyBpdCBhcwotYEFTU0VSVF9FUShleHBlY3RlZCwgYWN0dWFsKWAsIHNv
IGxvdHMgb2YgZXhpc3RpbmcgY29kZSB1c2VzIHRoaXMgb3JkZXIuCi1Ob3cgYCpfRVFgIHRyZWF0
cyBib3RoIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgd2F5LgotCi0jIyBTdHJpbmcgQ29tcGFyaXNv
biAjIwotCi1UaGUgYXNzZXJ0aW9ucyBpbiB0aGlzIGdyb3VwIGNvbXBhcmUgdHdvICoqQyBzdHJp
bmdzKiouIElmIHlvdSB3YW50IHRvIGNvbXBhcmUKLXR3byBgc3RyaW5nYCBvYmplY3RzLCB1c2Ug
YEVYUEVDVF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQgZXRjIGluc3RlYWQuCi0KLXwgKipGYXRhbCBh
c3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS18Ci18IGBBU1NFUlRfU1RSRVEoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwgYEVYUEVDVF9T
VFJFUShgX3N0cjFfYCwgYF9zdHJfMmApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0
aGUgc2FtZSBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2Ag
ICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0aGUgdHdvIEMg
c3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJDQVNFRVEoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VFUShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNh
c2UgfAotfCBgQVNTRVJUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBFQ1Rf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUg
ZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAotCi1Ob3RlIHRoYXQgIkNBU0UiIGlu
IGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQgY2FzZSBpcyBpZ25vcmVkLgotCi1gKlNUUkVR
KmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCku
IElmIGEKLWNvbXBhcmlzb24gb2YgdHdvIHdpZGUgc3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVz
IHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOAotbmFycm93IHN0cmluZ3MuCi0KLUEgYE5VTExgIHBv
aW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUgY29uc2lkZXJlZCBfZGlmZmVyZW50Xy4KLQot
X0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLVNlZSBhbHNvOiBGb3IgbW9y
ZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFu
ZAotcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nLCBmb3IgZXhhbXBsZSksIHNlZSB0aGUgW0Fk
dmFuY2VkIEdvb2dsZSBUZXN0IEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKS4KLQotIyBTaW1wbGUg
VGVzdHMgIwotCi1UbyBjcmVhdGUgYSB0ZXN0OgotICAxLiBVc2UgdGhlIGBURVNUKClgIG1hY3Jv
IHRvIGRlZmluZSBhbmQgbmFtZSBhIHRlc3QgZnVuY3Rpb24sIFRoZXNlIGFyZSBvcmRpbmFyeSBD
KysgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgcmV0dXJuIGEgdmFsdWUuCi0gIDEuIEluIHRoaXMgZnVu
Y3Rpb24sIGFsb25nIHdpdGggYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50IHRvIGlu
Y2x1ZGUsIHVzZSB0aGUgdmFyaW91cyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZh
bHVlcy4KLSAgMS4gVGhlIHRlc3QncyByZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0
aW9uczsgaWYgYW55IGFzc2VydGlvbiBpbiB0aGUgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkg
b3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0aGUgdGVzdCBjcmFzaGVzLCB0aGUgZW50aXJlIHRlc3Qg
ZmFpbHMuIE90aGVyd2lzZSwgaXQgc3VjY2VlZHMuCi0KLWBgYAotVEVTVCh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSB7Ci0gLi4uIHRlc3QgYm9keSAuLi4KLX0KLWBgYAotCi0KLWBURVNUKClg
IGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVyYWwgdG8gc3BlY2lmaWMuIFRoZSBfZmlyc3RfIGFyZ3Vt
ZW50IGlzIHRoZQotbmFtZSBvZiB0aGUgdGVzdCBjYXNlLCBhbmQgdGhlIF9zZWNvbmRfIGFyZ3Vt
ZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3aXRoaW4gdGhlCi10ZXN0IGNhc2UuIEJvdGggbmFtZXMg
bXVzdCBiZSB2YWxpZCBDKysgaWRlbnRpZmllcnMsIGFuZCB0aGV5IHNob3VsZCBub3QgY29udGFp
biB1bmRlcnNjb3JlIChgX2ApLiBBIHRlc3QncyBfZnVsbCBuYW1lXyBjb25zaXN0cyBvZiBpdHMg
Y29udGFpbmluZyB0ZXN0IGNhc2UgYW5kIGl0cwotaW5kaXZpZHVhbCBuYW1lLiBUZXN0cyBmcm9t
IGRpZmZlcmVudCB0ZXN0IGNhc2VzIGNhbiBoYXZlIHRoZSBzYW1lIGluZGl2aWR1YWwKLW5hbWUu
Ci0KLUZvciBleGFtcGxlLCBsZXQncyB0YWtlIGEgc2ltcGxlIGludGVnZXIgZnVuY3Rpb246Ci1g
YGAKLWludCBGYWN0b3JpYWwoaW50IG4pOyAvLyBSZXR1cm5zIHRoZSBmYWN0b3JpYWwgb2Ygbgot
YGBgCi0KLUEgdGVzdCBjYXNlIGZvciB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGxvb2sgbGlrZToKLWBg
YAotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIDAuCi1URVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNa
ZXJvSW5wdXQpIHsKLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7Ci19Ci0KLS8vIFRlc3Rz
IGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBudW1iZXJzLgotVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5k
bGVzUG9zaXRpdmVJbnB1dCkgewotICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDEpKTsKLSAgRVhQ
RUNUX0VRKDIsIEZhY3RvcmlhbCgyKSk7Ci0gIEVYUEVDVF9FUSg2LCBGYWN0b3JpYWwoMykpOwot
ICBFWFBFQ1RfRVEoNDAzMjAsIEZhY3RvcmlhbCg4KSk7Ci19Ci1gYGAKLQotR29vZ2xlIFRlc3Qg
Z3JvdXBzIHRoZSB0ZXN0IHJlc3VsdHMgYnkgdGVzdCBjYXNlcywgc28gbG9naWNhbGx5LXJlbGF0
ZWQgdGVzdHMKLXNob3VsZCBiZSBpbiB0aGUgc2FtZSB0ZXN0IGNhc2U7IGluIG90aGVyIHdvcmRz
LCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlaXIKLWBURVNUKClgIHNob3VsZCBiZSB0aGUgc2Ft
ZS4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHdlIGhhdmUgdHdvIHRlc3RzLAotYEhhbmRsZXNaZXJv
SW5wdXRgIGFuZCBgSGFuZGxlc1Bvc2l0aXZlSW5wdXRgLCB0aGF0IGJlbG9uZyB0byB0aGUgc2Ft
ZSB0ZXN0Ci1jYXNlIGBGYWN0b3JpYWxUZXN0YC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCi0KLSMgVGVzdCBGaXh0dXJlczogVXNpbmcgdGhlIFNhbWUgRGF0YSBDb25m
aWd1cmF0aW9uIGZvciBNdWx0aXBsZSBUZXN0cyAjCi0KLUlmIHlvdSBmaW5kIHlvdXJzZWxmIHdy
aXRpbmcgdHdvIG9yIG1vcmUgdGVzdHMgdGhhdCBvcGVyYXRlIG9uIHNpbWlsYXIgZGF0YSwKLXlv
dSBjYW4gdXNlIGEgX3Rlc3QgZml4dHVyZV8uIEl0IGFsbG93cyB5b3UgdG8gcmV1c2UgdGhlIHNh
bWUgY29uZmlndXJhdGlvbiBvZgotb2JqZWN0cyBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgdGVzdHMu
Ci0KLVRvIGNyZWF0ZSBhIGZpeHR1cmUsIGp1c3Q6Ci0gIDEuIERlcml2ZSBhIGNsYXNzIGZyb20g
YDo6dGVzdGluZzo6VGVzdGAgLiBTdGFydCBpdHMgYm9keSB3aXRoIGBwcm90ZWN0ZWQ6YCBvciBg
cHVibGljOmAgYXMgd2UnbGwgd2FudCB0byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3Vi
LWNsYXNzZXMuCi0gIDEuIEluc2lkZSB0aGUgY2xhc3MsIGRlY2xhcmUgYW55IG9iamVjdHMgeW91
IHBsYW4gdG8gdXNlLgotICAxLiBJZiBuZWNlc3NhcnksIHdyaXRlIGEgZGVmYXVsdCBjb25zdHJ1
Y3RvciBvciBgU2V0VXAoKWAgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgb2JqZWN0cyBmb3IgZWFj
aCB0ZXN0LiBBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcyBgU2V0dXAo
KWAgd2l0aCBhIHNtYWxsIGB1YCAtIGRvbid0IGxldCB0aGF0IGhhcHBlbiB0byB5b3UuCi0gIDEu
IElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZXN0cnVjdG9yIG9yIGBUZWFyRG93bigpYCBmdW5jdGlv
biB0byByZWxlYXNlIGFueSByZXNvdXJjZXMgeW91IGFsbG9jYXRlZCBpbiBgU2V0VXAoKWAgLiBU
byBsZWFybiB3aGVuIHlvdSBzaG91bGQgdXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIGFu
ZCB3aGVuIHlvdSBzaG91bGQgdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgLCByZWFkIHRoaXMgW0ZB
USBlbnRyeV0oRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9m
LXRoZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCi0gIDEu
IElmIG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgot
Ci1XaGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgp
YCBhcyBpdCBhbGxvd3MgeW91IHRvCi1hY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4g
dGhlIHRlc3QgZml4dHVyZToKLWBgYAotVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IHsKLSAuLi4gdGVzdCBib2R5IC4uLgotfQotYGBgCi0KLUxpa2UgYFRFU1QoKWAsIHRoZSBmaXJz
dCBhcmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAotdGhp
cyBtdXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9i
YWJseSBndWVzc2VkOiBgX0ZgCi1pcyBmb3IgZml4dHVyZS4KLQotVW5mb3J0dW5hdGVseSwgdGhl
IEMrKyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1h
Y3JvCi10aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25n
IG1hY3JvIGNhdXNlcyBhIGNvbXBpbGVyCi1lcnJvci4KLQotQWxzbywgeW91IG11c3QgZmlyc3Qg
ZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCi1gVEVTVF9G
KClgLCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBj
bGFzcwotZGVjbGFyYXRpb25gIi4KLQotRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1Rf
RigpYCwgR29vZ2xlIFRlc3Qgd2lsbDoKLSAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1
cmUgYXQgcnVudGltZQotICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAo
KWAgLAotICAxLiBSdW4gdGhlIHRlc3QKLSAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRv
d24oKWAKLSAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50
IHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUg
b2JqZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJl
Zm9yZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2Ug
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25l
IHRlc3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KLQot
QXMgYW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBu
YW1lZCBgUXVldWVgLCB3aGljaAotaGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgotYGBgCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgotY2xhc3MgUXVl
dWUgewotIHB1YmxpYzoKLSAgUXVldWUoKTsKLSAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1l
bnQpOwotICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1w
dHkuCi0gIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gIC4uLgotfTsKLWBgYAotCi1GaXJzdCwgZGVm
aW5lIGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRo
ZSBuYW1lCi1gRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4K
LWBgYAotY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcTFfLkVucXVldWUoMSk7Ci0gICAg
cTJfLkVucXVldWUoMik7Ci0gICAgcTJfLkVucXVldWUoMyk7Ci0gIH0KLQotICAvLyB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7fQotCi0gIFF1ZXVlPGludD4gcTBfOwotICBRdWV1ZTxpbnQ+IHEx
XzsKLSAgUXVldWU8aW50PiBxMl87Ci19OwotYGBgCi0KLUluIHRoaXMgY2FzZSwgYFRlYXJEb3du
KClgIGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgot
ZWFjaCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0
b3IuCi0KLU5vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZp
eHR1cmUuCi1gYGAKLVRFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKLSAgRVhQ
RUNUX0VRKDAsIHEwXy5zaXplKCkpOwotfQotCi1URVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29y
a3MpIHsKLSAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKLSAgRVhQRUNUX0VRKE5VTEwsIG4pOwot
Ci0gIG4gPSBxMV8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBF
Q1RfRVEoMSwgKm4pOwotICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwot
Ci0gIG4gPSBxMl8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBF
Q1RfRVEoMiwgKm4pOwotICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwot
fQotYGBgCi0KLVRoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBh
c3NlcnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwotdG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5
b3Ugd2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKLWFmdGVy
IHRoZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWlu
ZyBhZnRlciBmYWlsdXJlCi1kb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vj
b25kIGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKLWBBU1NFUlRfVFJVRShuICE9
IE5VTEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIs
Ci13aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgotCi1X
aGVuIHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgotICAxLiBHb29nbGUg
VGVzdCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAg
KS4KLSAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgotICAxLiBUaGUgZmlyc3Qg
dGVzdCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCi0gIDEuIGB0MS5UZWFy
RG93bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCi0gIDEuIGB0MWAgaXMg
ZGVzdHJ1Y3RlZC4KLSAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVy
IGBRdWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3Ng
IHRlc3QuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi1fTm90ZV86
IEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mg
d2hlbiBhIHRlc3QKLW9iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hl
biBpdCBpcyBkZXN0cnVjdGVkLgotCi0jIEludm9raW5nIHRoZSBUZXN0cyAjCi0KLWBURVNUKClg
IGFuZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29n
bGUgVGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3Jr
cywgeW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9y
ZGVyIHRvIHJ1biB0aGVtLgotCi1BZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1
biB0aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwg
dGhlIHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJV
Tl9BTExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5
IGNhbiBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3Vy
Y2UgZmlsZXMuCi0KLVdoZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgot
ICAxLiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KLSAgMS4gQ3Jl
YXRlcyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgotICAxLiBJbml0
aWFsaXplcyBpdCB2aWEgYFNldFVwKClgLgotICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0
dXJlIG9iamVjdC4KLSAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAu
Ci0gIDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCi0gIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBh
bGwgR29vZ2xlIFRlc3QgZmxhZ3MuCi0gIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0
aGUgbmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCi0KLUluIGFkZGl0aW9uLCBp
ZiB0aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVy
ZSBpbgotc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBh
cmUgdGh1cyBza2lwcGVkLiBTaW1pbGFybHksCi1pZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwg
ZmFpbHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KLQotX0ltcG9ydGFudF86IFlvdSBtdXN0
IG5vdCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdj
Y2AKLXdpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhp
cyBkZXNpZ24gaXMgdGhhdCB0aGUKLWF1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5l
cyB3aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cwotZXhpdCBjb2RlLCBub3Qg
b24gaXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24g
bXVzdAotcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KLQotQWxzbywgeW91
IHNob3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQg
bW9yZSB0aGFuIG9uY2UKLWNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKLXRlc3RzKSBhbmQgdGh1cyBpcyBub3Qg
c3VwcG9ydGVkLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBX
cml0aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIwotCi1Zb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBi
b2lsZXJwbGF0ZToKLWBgYAotI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi0vLyBUaGUgZml4dHVyZSBmb3IgdGVz
dGluZyBjbGFzcyBGb28uCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
Ci0gcHJvdGVjdGVkOgotICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5Ci0gIC8vIGlzIGVtcHR5LgotCi0gIEZvb1Rlc3Qo
KSB7Ci0gICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCi0g
IH0KLQotICB2aXJ0dWFsIH5Gb29UZXN0KCkgewotICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAg
d29yayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgotICB9Ci0KLSAgLy8gSWYg
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5n
IHVwCi0gIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBm
b2xsb3dpbmcgbWV0aG9kczoKLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gQ29k
ZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAo
cmlnaHQKLSAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkg
YWZ0ZXIgZWFjaCB0ZXN0IChyaWdodAotICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCi0g
IH0KLQotICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3Rz
IGluIHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6
QmFyKCkgbWV0aG9kIGRvZXMgQWJjLgotVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMp
IHsKLSAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0
YS9teWlucHV0ZmlsZS5kYXQiOwotICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRo
aXMvcGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKLSAgRm9vIGY7Ci0gIEVYUEVD
VF9FUSgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgRm9vIGRvZXMgWHl6LgotVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKLSAg
Ly8gRXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCi19Ci0KLX0gIC8vIG5hbWVzcGFj
ZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1g
YGAKLQotVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0
aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUKLVRlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCBy
ZWNvZ25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKLXRlc3Qg
cHJvZ3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBp
biBbQWR2YW5jZWRHdWlkZV0oQWR2YW5jZWRHdWlkZS5tZCkuCi1Zb3UgbXVzdCBjYWxsIHRoaXMg
ZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBmbGFncwot
d29uJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCi0KLU9uIFdpbmRvd3MsIGBJbml0R29vZ2xl
VGVzdCgpYCBhbHNvIHdvcmtzIHdpdGggd2lkZSBzdHJpbmdzLCBzbyBpdCBjYW4gYmUgdXNlZAot
aW4gcHJvZ3JhbXMgY29tcGlsZWQgaW4gYFVOSUNPREVgIG1vZGUgYXMgd2VsbC4KLQotQnV0IG1h
eWJlIHlvdSB0aGluayB0aGF0IHdyaXRpbmcgYWxsIHRob3NlIG1haW4oKSBmdW5jdGlvbnMgaXMg
dG9vIG11Y2ggd29yaz8gV2UgYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhhdCdzIHdo
eSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIG1haW4oKS4g
SWYgaXQgZml0cyB5b3VyIG5lZWRzLCB0aGVuIGp1c3QgbGluayB5b3VyIHRlc3Qgd2l0aCBndGVz
dFxfbWFpbiBsaWJyYXJ5IGFuZCB5b3UgYXJlIGdvb2QgdG8gZ28uCi0KLSMjIEltcG9ydGFudCBu
b3RlIGZvciBWaXN1YWwgQysrIHVzZXJzICMjCi1JZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW50byBh
IGxpYnJhcnkgYW5kIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gaXMgaW4gYSBkaWZmZXJlbnQgbGli
cmFyeSBvciBpbiB5b3VyIC5leGUgZmlsZSwgdGhvc2UgdGVzdHMgd2lsbCBub3QgcnVuLiBUaGUg
cmVhc29uIGlzIGEgW2J1Z10oaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vZmVlZGJhY2sv
dmlld2ZlZWRiYWNrLmFzcHg/RmVlZGJhY2tJRD0yNDQ0MTAmc2l0ZWlkPTIxMCkgaW4gVmlzdWFs
IEMrKy4gV2hlbiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgY2Vy
dGFpbiBzdGF0aWMgb2JqZWN0cyB0byByZWdpc3RlciB0aGVtLiBUaGVzZSBvYmplY3RzIGFyZSBu
b3QgcmVmZXJlbmNlZCBmcm9tIGVsc2V3aGVyZSBidXQgdGhlaXIgY29uc3RydWN0b3JzIGFyZSBz
dGlsbCBzdXBwb3NlZCB0byBydW4uIFdoZW4gVmlzdWFsIEMrKyBsaW5rZXIgc2VlcyB0aGF0IG5v
dGhpbmcgaW4gdGhlIGxpYnJhcnkgaXMgcmVmZXJlbmNlZCBmcm9tIG90aGVyIHBsYWNlcyBpdCB0
aHJvd3MgdGhlIGxpYnJhcnkgb3V0LiBZb3UgaGF2ZSB0byByZWZlcmVuY2UgeW91ciBsaWJyYXJ5
IHdpdGggdGVzdHMgZnJvbSB5b3VyIG1haW4gcHJvZ3JhbSB0byBrZWVwIHRoZSBsaW5rZXIgZnJv
bSBkaXNjYXJkaW5nIGl0LiBIZXJlIGlzIGhvdyB0byBkbyBpdC4gU29tZXdoZXJlIGluIHlvdXIg
bGlicmFyeSBjb2RlIGRlY2xhcmUgYSBmdW5jdGlvbjoKLWBgYAotX19kZWNsc3BlYyhkbGxleHBv
cnQpIGludCBQdWxsSW5NeUxpYnJhcnkoKSB7IHJldHVybiAwOyB9Ci1gYGAKLUlmIHlvdSBwdXQg
eW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBsaWJyYXJ5IChub3QgRExMKSB0aGVuIGBfX2RlY2xzcGVj
KGRsbGV4cG9ydClgIGlzIG5vdCByZXF1aXJlZC4gTm93LCBpbiB5b3VyIG1haW4gcHJvZ3JhbSwg
d3JpdGUgYSBjb2RlIHRoYXQgaW52b2tlcyB0aGF0IGZ1bmN0aW9uOgotYGBgCi1pbnQgUHVsbElu
TXlMaWJyYXJ5KCk7Ci1zdGF0aWMgaW50IGR1bW15ID0gUHVsbEluTXlMaWJyYXJ5KCk7Ci1gYGAK
LVRoaXMgd2lsbCBrZWVwIHlvdXIgdGVzdHMgcmVmZXJlbmNlZCBhbmQgd2lsbCBtYWtlIHRoZW0g
cmVnaXN0ZXIgdGhlbXNlbHZlcyBhdCBzdGFydHVwLgotCi1JbiBhZGRpdGlvbiwgaWYgeW91IGRl
ZmluZSB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnksIGFkZCBgL09QVDpOT1JFRmAgdG8g
eW91ciBtYWluIHByb2dyYW0gbGlua2VyIG9wdGlvbnMuIElmIHlvdSB1c2UgTVNWQysrIElERSwg
Z28gdG8geW91ciAuZXhlIHByb2plY3QgcHJvcGVydGllcy9Db25maWd1cmF0aW9uIFByb3BlcnRp
ZXMvTGlua2VyL09wdGltaXphdGlvbiBhbmQgc2V0IFJlZmVyZW5jZXMgc2V0dGluZyB0byBgS2Vl
cCBVbnJlZmVyZW5jZWQgRGF0YSAoL09QVDpOT1JFRilgLiBUaGlzIHdpbGwga2VlcCBWaXN1YWwg
QysrIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBzeW1ib2xzIGdlbmVyYXRlZCBi
eSB5b3VyIHRlc3RzIGZyb20gdGhlIGZpbmFsIGV4ZWN1dGFibGUuCi0KLVRoZXJlIGlzIG9uZSBt
b3JlIHBpdGZhbGwsIHRob3VnaC4gSWYgeW91IHVzZSBHb29nbGUgVGVzdCBhcyBhIHN0YXRpYyBs
aWJyYXJ5ICh0aGF0J3MgaG93IGl0IGlzIGRlZmluZWQgaW4gZ3Rlc3QudmNwcm9qKSB5b3VyIHRl
c3RzIG11c3QgYWxzbyByZXNpZGUgaW4gYSBzdGF0aWMgbGlicmFyeS4gSWYgeW91IGhhdmUgdG8g
aGF2ZSB0aGVtIGluIGEgRExMLCB5b3UgX211c3RfIGNoYW5nZSBHb29nbGUgVGVzdCB0byBidWls
ZCBpbnRvIGEgRExMIGFzIHdlbGwuIE90aGVyd2lzZSB5b3VyIHRlc3RzIHdpbGwgbm90IHJ1biBj
b3JyZWN0bHkgb3Igd2lsbCBub3QgcnVuIGF0IGFsbC4gVGhlIGdlbmVyYWwgY29uY2x1c2lvbiBo
ZXJlIGlzOiBtYWtlIHlvdXIgbGlmZSBlYXNpZXIgLSBkbyBub3Qgd3JpdGUgeW91ciB0ZXN0cyBp
biBsaWJyYXJpZXMhCi0KLSMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKLQotQ29uZ3JhdHVsYXRp
b25zISBZb3UndmUgbGVhcm5lZCB0aGUgR29vZ2xlIFRlc3QgYmFzaWNzLiBZb3UgY2FuIHN0YXJ0
IHdyaXRpbmcKLWFuZCBydW5uaW5nIEdvb2dsZSBUZXN0IHRlc3RzLCByZWFkIHNvbWUgW3NhbXBs
ZXNdKFNhbXBsZXMubWQpLCBvciBjb250aW51ZSB3aXRoCi1bQWR2YW5jZWRHdWlkZV0oQWR2YW5j
ZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdvb2dsZSBUZXN0
IGZlYXR1cmVzLgotCi0jIEtub3duIExpbWl0YXRpb25zICMKLQotR29vZ2xlIFRlc3QgaXMgZGVz
aWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMKLXRocmVhZC1z
YWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFpbGFibGUu
ICBJdAotaXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25z
IGZyb20gdHdvIHRocmVhZHMKLWNvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1zIChlLmcuIFdp
bmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCi1ub3QgYW4gaXNzdWUgYXMgdXN1YWxseSB0
aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCi15b3Ugd2FudCB0
byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeQotc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZv
cm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1B1bXBNYW51YWwubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1B1bXBNYW51YWwubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgx
ODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIzMWJkNzIzNzVmZWUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QdW1wTWFudWFs
Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLQotCi08Yj5QPC9iPnVtcCBpcyA8
Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCi0KLSMgVGhl
IFByb2JsZW0gIwotCi1UZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8g
ZGVmaW5lIG1hbnkgY2xhc3NlcywKLWZ1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5
IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgotYXJndW1lbnRzIHRoZXkgdGFrZS4g
SXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKLWVycm9yLXByb25lIHdv
cmsuCi0KLVZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlh
dGUgdGhlIHByb2JsZW0uCi1Ib3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVk
IGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCi1pcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9y
IHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5Ci1hcmUgb2Z0ZW4gbm90
IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKLXBv
cnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgotCi1BcyBh
IHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNj
cmlwdHMgdG8KLWdlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhw
ZXJpZW5jZSBpcyB0aGF0IGl0J3MKLXRlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGlj
aCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgotdGhlIGdlbmVyYXRlZCBjb2RlIHBv
b3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCi1leGFtcGxlLCBh
IHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNv
bWUKLW5vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhp
cyBpcyBlc3BlY2lhbGx5Ci1wYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2Rl
LgotCi0jIE91ciBTb2x1dGlvbiAjCi0KLVB1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0
YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQotUHJvZ3JhbW1pbmcsIG9yIFBy
YWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Ci1wcmVm
ZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBp
cyB0aGF0IGEKLXByb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRh
aW5zIEMrKyBjb2RlIHBsdXMgbWV0YQotY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29k
ZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCi1pdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVz
dGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKLWRlZmluaXRpb25zLCBzaW1wbGUg
YXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCi12aWV3IGl0
IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBp
cwotZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVt
YWNzJyBDKysgbW9kZSwKLWZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29k
ZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KLW1haW50YWluLgotCi0jIyBIaWdobGlnaHRzICMjCi0K
LSAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQg
dGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBh
bmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgotICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQg
d2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRv
IGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZp
dCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29y
cmVjdGx5LgotICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lz
ZSB0aGFuIFhNTC4KLSAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVt
YWNzJyBDKysgbW9kZS4KLQotIyMgRXhhbXBsZXMgIyMKLQotVGhlIGZvbGxvd2luZyBQdW1wIGNv
ZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJl
IG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMg
d2l0aCB0aGUgbGluZSk6Ci0KLWBgYAotJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEg
dmFyaWFibGUgbi4KLSRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRh
IGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCi0kZm9yIGkgW1sKLSAgICAgICAgICAgICAgICQkIE1l
dGEgbG9vcC4KLS8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCi0kcmFu
Z2UgaiAxLi5pCi10ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4K
LWNsYXNzIEZvbyRpIHsKLSRpZiBpID09IDAgW1sKLSAgYmxhaCBhOwotXV0gJGVsaWYgaSA8PSAy
IFtbCi0gIGJsYWggYjsKLV1dICRlbHNlIFtbCi0gIGJsYWggYzsKLV1dCi19OwotCi1dXQotYGBg
Ci0KLXdpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKLQotYGBgCi0v
LyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3Qg
Tj4KLWNsYXNzIEZvbzAgewotICBibGFoIGE7Ci19OwotCi0vLyBGb28xIGRvZXMgYmxhaCBmb3Ig
MS1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Ci1jbGFz
cyBGb28xIHsKLSAgYmxhaCBiOwotfTsKLQotLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHBy
ZWRpY2F0ZXMuCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4K
LWNsYXNzIEZvbzIgewotICBibGFoIGI7Ci19OwotCi0vLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1h
cnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1l
IEEyLCB0eXBlbmFtZSBBMz4KLWNsYXNzIEZvbzMgewotICBibGFoIGM7Ci19OwotYGBgCi0KLUlu
IGFub3RoZXIgZXhhbXBsZSwKLQotYGBgCi0kcmFuZ2UgaSAxLi5uCi1GdW5jKCRmb3IgaSArIFtb
YSRpXV0pOwotJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJl
dHdlZW4gaXRlcmF0aW9ucy4KLWBgYAotCi13aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93
aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgYG5gOgotCi1gYGAKLUZ1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KLUZ1bmMo
YTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KLUZ1bmMoYTEgKyBhMik7ICAgICAgIC8vIElm
IG4gaXMgMi4KLUZ1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KLS8vIEFuZCBzbyBv
bi4uLgotYGBgCi0KLSMjIENvbnN0cnVjdHMgIyMKLQotV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5n
IG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKLQotfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZp
bmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBv
ZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKLXw6LS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGAkcmFuZ2UgaWQgZXhw
Li5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBj
YW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Ci18IGAkZm9y
IGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBo
YXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAg
ICAgfAotfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rl
ci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXwgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50
IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAotfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENv
bmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgW1sgY29kZSBdXWAgICAg
fCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGNwcF9jb2RlYCAg
ICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkJCBjb21t
ZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0qKk5v
dGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVt
cCBzb3VyY2UKLWNvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdz
IHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKLW9yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0
IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCi12ZXJ5IGxvbmcgbGlu
ZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5
Ci1uZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBu
ZXctbGluZSB0byBzaG93Ci11cCBpbiB5b3VyIG91dHB1dC4KLQotIyMgR3JhbW1hciAjIwotCi1g
YGAKLWNvZGUgOjo9IGF0b21pY19jb2RlKgotYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAK
LSAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCi0gICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKLSAg
ICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KLSAgICB8ICQoJCkKLSAgICB8ICRpZAotICAgIHwg
JChleHApCi0gICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKLSAgICB8IFtbIGNv
ZGUgXV0KLSAgICB8IGNwcF9jb2RlCi1zZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCi1l
bHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQotICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUg
XV0gZWxzZV9icmFuY2gKLSAgICB8IGVtcHR5X3N0cmluZwotZXhwIDo6PSBzaW1wbGVfZXhwcmVz
c2lvbl9pbl9QeXRob25fc3ludGF4Ci1gYGAKLQotIyMgQ29kZSAjIwotCi1Zb3UgY2FuIGZpbmQg
dGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9w
dW1wLnB5KS4gSXQgaXMgc3RpbGwKLXZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVk
IHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgotc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1l
cy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKLXByb2plY3QsIHBsZWFz
ZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCi1p
bXByb3ZpbmcgUHVtcC4KLQotIyMgUmVhbCBFeGFtcGxlcyAjIwotCi1Zb3UgY2FuIGZpbmQgcmVh
bC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93d3cu
Z29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUz
QSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10oaHR0
cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2Ul
M0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3VyY2Ug
ZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCi0KLSMjIFRpcHMgIyMKLQotICAq
IElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwgeW91
IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0eSBz
dHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVscGVy
YCB3aGVuIGBqYCBpcyAxLgotICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2UgbGlu
ZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGluZyBg
W1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJhY3Rl
ciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUgd29u
J3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9T
YW1wbGVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9TYW1wbGVzLm1kCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMjFkMjAwNTY3MzU0NTdmNmY0OWFlY2M2MTIxOWRhZDIyNjEyYmYxLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvU2FtcGxlcy5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUlmIHlvdSdy
ZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxvb2sgYXQgc29tZSBHb29nbGUgVGVzdCBzYW1wbGUg
Y29kZS4gIFRoZQotW3NhbXBsZXMgZm9sZGVyXSguLi9zYW1wbGVzKSBoYXMgYSBudW1iZXIgb2Yg
d2VsbC1jb21tZW50ZWQgc2FtcGxlcyBzaG93aW5nIGhvdyB0byB1c2UgYQotdmFyaWV0eSBvZiBH
b29nbGUgVGVzdCBmZWF0dXJlcy4KLQotICAqIFtTYW1wbGUgIzFdKC4uL3NhbXBsZXMvc2FtcGxl
MV91bml0dGVzdC5jYykgc2hvd3MgdGhlIGJhc2ljIHN0ZXBzIG9mIHVzaW5nIEdvb2dsZSBUZXN0
IHRvIHRlc3QgQysrIGZ1bmN0aW9ucy4KLSAgKiBbU2FtcGxlICMyXSguLi9zYW1wbGVzL3NhbXBs
ZTJfdW5pdHRlc3QuY2MpIHNob3dzIGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFz
cyB3aXRoIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMuCi0gICogW1NhbXBsZSAjM10oLi4vc2Ft
cGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjKSB1c2VzIGEgdGVzdCBmaXh0dXJlLgotICAqIFtTYW1w
bGUgIzRdKC4uL3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYykgaXMgYW5vdGhlciBiYXNpYyBl
eGFtcGxlIG9mIHVzaW5nIEdvb2dsZSBUZXN0LgotICAqIFtTYW1wbGUgIzVdKC4uL3NhbXBsZXMv
c2FtcGxlNV91bml0dGVzdC5jYykgdGVhY2hlcyBob3cgdG8gcmV1c2UgYSB0ZXN0IGZpeHR1cmUg
aW4gbXVsdGlwbGUgdGVzdCBjYXNlcyBieSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4K
LSAgKiBbU2FtcGxlICM2XSguLi9zYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MpIGRlbW9uc3Ry
YXRlcyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICogW1NhbXBsZSAjN10oLi4vc2FtcGxl
cy9zYW1wbGU3X3VuaXR0ZXN0LmNjKSB0ZWFjaGVzIHRoZSBiYXNpY3Mgb2YgdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0cy4KLSAgKiBbU2FtcGxlICM4XSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRl
c3QuY2MpIHNob3dzIHVzaW5nIGBDb21iaW5lKClgIGluIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMuCi0gICogW1NhbXBsZSAjOV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKSBzaG93
cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBtb2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xl
IG91dHB1dCBhbmQgdGhlIHVzZSBvZiBpdHMgcmVmbGVjdGlvbiBBUEkgdG8gaW5zcGVjdCB0ZXN0
IHJlc3VsdHMuCi0gICogW1NhbXBsZSAjMTBdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3Qu
Y2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIgQVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2
ZSBtZW1vcnkgbGVhayBjaGVja2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81
X0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5t
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRlMTljMjZmZGZmMjE5YTVkODM5NTlm
NzVkMzE2MTg5NTEwYjA0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfQWR2YW5jZWRHdWlkZS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDIwOTYgKzAsMCBAQAotCi0KLU5vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1l
cl0oVjFfNV9QcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0ZXN0cwotdXNpbmcg
R29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9j
dW1lbnQKLXdpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNv
bnN0cnVjdCBjb21wbGV4Ci1mYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVy
ZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCi10ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlv
dXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgotCi0jIE1vcmUgQXNzZXJ0aW9ucyAjCi0KLVRoaXMg
c2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25p
ZmljYW50LAotYXNzZXJ0aW9ucy4KLQotIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAj
IwotCi1UaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUg
b3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKLXRoZXkgZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1
cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Ci1wZXJmb3JtIGEgdGVz
dCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlIHRoZW0u
Ci0KLXwgYFNVQ0NFRUQoKTtgIHwKLXw6LS0tLS0tLS0tLS0tLXwKLQotR2VuZXJhdGVzIGEgc3Vj
Y2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0
IGlzCi1jb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25z
IGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCi0KLU5vdGU6IGBTVUNDRUVEKClgIGlzIHB1cmVs
eSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Ci11c2VyLXZp
c2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRv
IEdvb2dsZSBUZXN0J3MKLW91dHB1dCBpbiB0aGUgZnV0dXJlLgotCi18IGBGQUlMKCk7YCAgfCBg
QUREX0ZBSUxVUkUoKTtgIHwKLXw6LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tfAotCi1g
RkFJTCpgIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2hpbGUgYEFERF9GQUlMVVJFKmAgZ2Vu
ZXJhdGVzIGEgbm9uZmF0YWwKLWZhaWx1cmUuIFRoZXNlIGFyZSB1c2VmdWwgd2hlbiBjb250cm9s
IGZsb3csIHJhdGhlciB0aGFuIGEgQm9vbGVhbiBleHByZXNzaW9uLAotZGV0ZXJlbWluZXMgdGhl
IHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCB0
byB3cml0ZQotc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotc3dpdGNoKGV4cHJlc3Npb24pIHsKLSAg
Y2FzZSAxOiAuLi4gc29tZSBjaGVja3MgLi4uCi0gIGNhc2UgMjogLi4uIHNvbWUgb3RoZXIgY2hl
Y2tzCi0gIC4uLgotICBkZWZhdWx0OiBGQUlMKCkgPDwgIldlIHNob3VsZG4ndCBnZXQgaGVyZS4i
OwotfQotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBF
eGNlcHRpb24gQXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhcmUgZm9yIHZlcmlmeWluZyB0aGF0IGEg
cGllY2Ugb2YgY29kZSB0aHJvd3MgKG9yIGRvZXMgbm90Ci10aHJvdykgYW4gZXhjZXB0aW9uIG9m
IHRoZSBnaXZlbiB0eXBlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1RIUk9XKGBfc3Rh
dGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IGBFWFBFQ1RfVEhST1coYF9zdGF0ZW1l
bnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZSAgfAotfCBgQVNTRVJUX0FOWV9USFJPVyhgX3N0YXRlbWVu
dF9gKTtgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7
YCAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgYW55
IHR5cGUgICAgICAgIHwKLXwgYEFTU0VSVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAg
ICAgICAgICAgICB8IGBFWFBFQ1RfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAg
ICAgICAgfCBfc3RhdGVtZW50XyBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24gICAgICAgICAg
ICB8Ci0KLUV4YW1wbGVzOgotCi1gYGAKLUFTU0VSVF9USFJPVyhGb28oNSksIGJhcl9leGNlcHRp
b24pOwotCi1FWFBFQ1RfTk9fVEhST1coewotICBpbnQgbiA9IDU7Ci0gIEJhcigmbik7Ci19KTsK
LWBgYAotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lv
biAxLjEuMC4KLQotIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJldHRlciBFcnJvciBNZXNz
YWdlcyAjIwotCi1FdmVuIHRob3VnaCBHb29nbGUgVGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3Nl
cnRpb25zLCB0aGV5IGNhbiBuZXZlciBiZQotY29tcGxldGUsIGFzIGl0J3MgaW1wb3NzaWJsZSAo
bm9yIGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRlIGFsbCB0aGUgc2NlbmFyaW9zCi1hIHVzZXIg
bWlnaHQgcnVuIGludG8uIFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8gdXNlIGBF
WFBFQ1RfVFJVRSgpYAotdG8gY2hlY2sgYSBjb21wbGV4IGV4cHJlc3Npb24sIGZvciBsYWNrIG9m
IGEgYmV0dGVyIG1hY3JvLiBUaGlzIGhhcyB0aGUgcHJvYmxlbQotb2Ygbm90IHNob3dpbmcgeW91
IHRoZSB2YWx1ZXMgb2YgdGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcgaXQgaGFy
ZCB0bwotdW5kZXJzdGFuZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwgc29tZSB1
c2VycyBjaG9vc2UgdG8gY29uc3RydWN0IHRoZQotZmFpbHVyZSBtZXNzYWdlIGJ5IHRoZW1zZWx2
ZXMsIHN0cmVhbWluZyBpdCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhpcwotaXMg
YXdrd2FyZCBlc3BlY2lhbGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZmZWN0cyBv
ciBpcyBleHBlbnNpdmUgdG8KLWV2YWx1YXRlLgotCi1Hb29nbGUgVGVzdCBnaXZlcyB5b3UgdGhy
ZWUgZGlmZmVyZW50IG9wdGlvbnMgdG8gc29sdmUgdGhpcyBwcm9ibGVtOgotCi0jIyMgVXNpbmcg
YW4gRXhpc3RpbmcgQm9vbGVhbiBGdW5jdGlvbiAjIyMKLQotSWYgeW91IGFscmVhZHkgaGF2ZSBh
IGZ1bmN0aW9uIG9yIGEgZnVuY3RvciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUKLXRo
YXQgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0
IGluIGEgX3ByZWRpY2F0ZQotYXNzZXJ0aW9uXyB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50
cyBwcmludGVkIGZvciBmcmVlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1BSRUQxKGBf
cHJlZDEsIHZhbDFfYCk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtg
IHwgX3ByZWQxKHZhbDEpXyByZXR1cm5zIHRydWUgfAotfCBgQVNTRVJUX1BSRUQyKGBfcHJlZDIs
IHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtg
IHwgIF9wcmVkMih2YWwxLCB2YWwyKV8gcmV0dXJucyB0cnVlIHwKLXwgIC4uLiAgICAgICAgICAg
ICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgfAotCi1JbiB0aGUg
YWJvdmUsIF9wcmVkbl8gaXMgYW4gX25fLWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rv
ciwgd2hlcmUKLV92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIGl0cyBhcmd1bWVu
dHMuIFRoZSBhc3NlcnRpb24gc3VjY2VlZHMKLWlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1
ZWAgd2hlbiBhcHBsaWVkIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscwotb3RoZXJ3
aXNlLiBXaGVuIHRoZSBhc3NlcnRpb24gZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFj
aCBhcmd1bWVudC4gSW4KLWVpdGhlciBjYXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQg
ZXhhY3RseSBvbmNlLgotCi1IZXJlJ3MgYW4gZXhhbXBsZS4gR2l2ZW4KLQotYGBgCi0vLyBSZXR1
cm5zIHRydWUgaWZmIG0gYW5kIG4gaGF2ZSBubyBjb21tb24gZGl2aXNvcnMgZXhjZXB0IDEuCi1i
b29sIE11dHVhbGx5UHJpbWUoaW50IG0sIGludCBuKSB7IC4uLiB9Ci1jb25zdCBpbnQgYSA9IDM7
Ci1jb25zdCBpbnQgYiA9IDQ7Ci1jb25zdCBpbnQgYyA9IDEwOwotYGBgCi0KLXRoZSBhc3NlcnRp
b24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBhLCBiKTtgIHdpbGwgc3VjY2VlZCwgd2hp
bGUgdGhlCi1hc3NlcnRpb24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTtgIHdp
bGwgZmFpbCB3aXRoIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci0hTXV0dWFsbHlQcmltZShiLCBjKSBp
cyBmYWxzZSwgd2hlcmU8YnI+Ci1iIGlzIDQ8YnI+Ci1jIGlzIDEwPGJyPgotPC9wcmU+Ci0KLSoq
Tm90ZXM6KioKLQotICAxLiBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IgIm5vIG1hdGNoaW5n
IGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcgYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9Q
UkVEKmAsIHBsZWFzZSBzZWUgW3RoaXNdKFYxXzVfRkFRLm1kI3RoZS1jb21waWxlci1jb21wbGFp
bnMtYWJvdXQtdW5kZWZpbmVkLXJlZmVyZW5jZXMtdG8tc29tZS1zdGF0aWMtY29uc3QtbWVtYmVy
LXZhcmlhYmxlcy1idXQtaS1kaWQtZGVmaW5lLXRoZW0taW4tdGhlLWNsYXNzLWJvZHktd2hhdHMt
d3JvbmcpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KLSAgMS4gQ3VycmVudGx5IHdlIG9ubHkgcHJv
dmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5b3UgbmVlZCBhIGhp
Z2hlci1hcml0eSBhc3NlcnRpb24sIGxldCB1cyBrbm93LgotCi1fQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYwotCi0jIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0IFJldHVybnMgYW4g
QXNzZXJ0aW9uUmVzdWx0ICMjIwotCi1XaGlsZSBgRVhQRUNUX1BSRUQqKClgIGFuZCBmcmllbmRz
IGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZQotc3ludGF4IGlzIG5vdCBzYXRpc2ZhY3Rv
cnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9zIGZvcgotZGlmZmVyZW50IGFyaXRp
ZXMsIGFuZCBpdCBmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRoZQotYDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0YCBjbGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVtLgotCi1BbiBgQXNz
ZXJ0aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGFuIGFzc2VydGlv
bgotKHdoZXRoZXIgaXQncyBhIHN1Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQgYW4gYXNzb2NpYXRl
ZCBtZXNzYWdlKS4gIFlvdQotY2FuIGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVzdWx0YCB1c2luZyBv
bmUgb2YgdGhlc2UgZmFjdG9yeQotZnVuY3Rpb25zOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5n
IHsKLQotLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRvIGluZGljYXRlIHRo
YXQgYW4gYXNzZXJ0aW9uIGhhcwotLy8gc3VjY2VlZGVkLgotQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dGlvblN1Y2Nlc3MoKTsKLQotLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRv
IGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwotLy8gZmFpbGVkLgotQXNzZXJ0aW9uUmVz
dWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKLQotfQotYGBgCi0KLVlvdSBjYW4gdGhlbiB1c2UgdGhl
IGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIHRoZQotYEFzc2VydGlvblJlc3Vs
dGAgb2JqZWN0LgotCi1UbyBwcm92aWRlIG1vcmUgcmVhZGFibGUgbWVzc2FnZXMgaW4gQm9vbGVh
biBhc3NlcnRpb25zCi0oZS5nLiBgRVhQRUNUX1RSVUUoKWApLCB3cml0ZSBhIHByZWRpY2F0ZSBm
dW5jdGlvbiB0aGF0IHJldHVybnMKLWBBc3NlcnRpb25SZXN1bHRgIGluc3RlYWQgb2YgYGJvb2xg
LiBGb3IgZXhhbXBsZSwgaWYgeW91IGRlZmluZQotYElzRXZlbigpYCBhczoKLQotYGBgCi06OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKLSAgaWYgKChuICUgMikgPT0g
MCkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIGVsc2UKLSAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7
Ci19Ci1gYGAKLQotaW5zdGVhZCBvZjoKLQotYGBgCi1ib29sIElzRXZlbihpbnQgbikgewotICBy
ZXR1cm4gKG4gJSAyKSA9PSAwOwotfQotYGBgCi0KLXRoZSBmYWlsZWQgYXNzZXJ0aW9uIGBFWFBF
Q1RfVFJVRShJc0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6Ci0KLTxwcmU+Ci1WYWx1ZSBvZjog
IUlzRXZlbihGaWIoNCkpPGJyPgotQWN0dWFsOiBmYWxzZSAoKjMgaXMgb2RkKik8YnI+Ci1FeHBl
Y3RlZDogdHJ1ZTxicj4KLTwvcHJlPgotCi1pbnN0ZWFkIG9mIGEgbW9yZSBvcGFxdWUKLQotPHBy
ZT4KLVZhbHVlIG9mOiAhSXNFdmVuKEZpYig0KSk8YnI+Ci1BY3R1YWw6IGZhbHNlPGJyPgotRXhw
ZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVzc2Fn
ZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCi1hcyB3ZWxsLCBhbmQgYXJl
IGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MKLWNh
c2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgotCi1gYGAKLTo6dGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAoKG4gJSAyKSA9PSAwKQotICAg
IHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7
Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8
PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFMU0Uo
SXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50Ci0KLTxwcmU+Ci1WYWx1ZSBvZjogIUlzRXZlbihG
aWIoNikpPGJyPgotQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pPGJyPgotRXhwZWN0ZWQ6IGZhbHNl
PGJyPgotPC9wcmU+Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5j
ZSB2ZXJzaW9uIDEuNC4xLgotCi0jIyMgVXNpbmcgYSBQcmVkaWNhdGUtRm9ybWF0dGVyICMjIwot
Ci1JZiB5b3UgZmluZCB0aGUgZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBieSBgKEFTU0VSVHxF
WFBFQ1QpX1BSRUQqYCBhbmQKLWAoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFMU0UpYCB1bnNhdGlz
ZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVudHMgdG8geW91cgotcHJlZGljYXRlIGRvIG5vdCBzdXBw
b3J0IHN0cmVhbWluZyB0byBgb3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1c2UgdGhlCi1mb2xs
b3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1bGx5XyBjdXN0b21p
emUgaG93IHRoZQotbWVzc2FnZSBpcyBmb3JtYXR0ZWQ6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBB
U1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTtgICAgICAgICB8IGBF
WFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTsgfCBfcHJlZFxfZm9y
bWF0MSh2YWwxKV8gaXMgc3VjY2Vzc2Z1bCB8Ci18IGBBU1NFUlRfUFJFRF9GT1JNQVQyKGBfcHJl
ZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDIoYF9wcmVk
XF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBfcHJlZFxfZm9ybWF0Mih2YWwxLCB2YWwyKV8g
aXMgc3VjY2Vzc2Z1bCB8Ci18IGAuLi5gICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgICAg
ICAgICAgIHwgYC4uLmAgICAgICAgIHwKLQotVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFu
ZCB0aGUgcHJldmlvdXMgdHdvIGdyb3VwcyBvZiBtYWNyb3MgaXMgdGhhdCBpbnN0ZWFkIG9mCi1h
IHByZWRpY2F0ZSwgYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgIHRha2UgYSBfcHJlZGlj
YXRlLWZvcm1hdHRlcl8KLShfcHJlZFxfZm9ybWF0bl8pLCB3aGljaCBpcyBhIGZ1bmN0aW9uIG9y
IGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgotCi1gOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgUHJlZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBgX2V4cHIxX2AsIGNvbnN0IGNoYXIq
IGBfZXhwcjJfYCwgLi4uIGNvbnN0IGNoYXIqIGBfZXhwcm5fYCwgVDEgYF92YWwxX2AsIFQyIGBf
dmFsMl9gLCAuLi4gVG4gYF92YWxuX2ApO2AKLQotd2hlcmUgX3ZhbDFfLCBfdmFsMl8sIC4uLiwg
YW5kIF92YWxuXyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlCi1hcmd1bWVudHMsIGFu
ZCBfZXhwcjFfLCBfZXhwcjJfLCAuLi4sIGFuZCBfZXhwcm5fIGFyZSB0aGUgY29ycmVzcG9uZGlu
ZwotZXhwcmVzc2lvbnMgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGUgdHlw
ZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQKLWBUbmAgY2FuIGJlIGVpdGhlciB2YWx1ZSB0eXBlcyBv
ciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbgotYXJndW1lbnQgaGFzIHR5cGUg
YEZvb2AsIHlvdSBjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3IgYGNvbnN0IEZvbyZg
LAotd2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgotCi1BIHByZWRpY2F0ZS1mb3JtYXR0ZXIgcmV0
dXJucyBhIGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHRvIGluZGljYXRlCi13
aGV0aGVyIHRoZSBhc3NlcnRpb24gaGFzIHN1Y2NlZWRlZCBvciBub3QuIFRoZSBvbmx5IHdheSB0
byBjcmVhdGUgc3VjaCBhbgotb2JqZWN0IGlzIHRvIGNhbGwgb25lIG9mIHRoZXNlIGZhY3Rvcnkg
ZnVuY3Rpb25zOgotCi1BcyBhbiBleGFtcGxlLCBsZXQncyBpbXByb3ZlIHRoZSBmYWlsdXJlIG1l
c3NhZ2UgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoaWNoIHVzZXMgYEVYUEVDVF9QUkVEMigp
YDoKLQotYGBgCi0vLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNvciBv
ZiBtIGFuZCBuLAotLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgotaW50
IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQotCi0vLyBB
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBhcmUg
bXV0dWFsbHkgcHJpbWUuCi06OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1YWxs
eVByaW1lKGNvbnN0IGNoYXIqIG1fZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHByLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsKLSAgaWYgKE11dHVhbGx5UHJpbWUo
bSwgbikpCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgbV9leHByIDw8ICIg
YW5kICIgPDwgbl9leHByIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8IG4KLSAgICAgIDw8ICIp
IGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIgPDwgImFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZp
c29yICIKLSAgICAgIDw8IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKG0sIG4pOwotfQotYGBg
Ci0KLVdpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3ZSBjYW4gdXNlCi0KLWBgYAotRVhQ
RUNUX1BSRURfRk9STUFUMihBc3NlcnRNdXR1YWxseVByaW1lLCBiLCBjKTsKLWBgYAotCi10byBn
ZW5lcmF0ZSB0aGUgbWVzc2FnZQotCi08cHJlPgotYiBhbmQgYyAoNCBhbmQgMTApIGFyZSBub3Qg
bXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yIDIuPGJyPgotPC9w
cmU+Ci0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFueSBvZiB0aGUgYXNzZXJ0aW9ucyB3
ZSBpbnRyb2R1Y2VkIGVhcmxpZXIgYXJlCi1zcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFTU0VS
VClfUFJFRF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQotaW5kZWVkIGRlZmlu
ZWQgdXNpbmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLgotCi1fQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotCi0jIyBGbG9hdGluZy1Qb2ludCBDb21wYXJpc29u
ICMjCi0KLUNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlzIHRyaWNreS4gRHVlIHRv
IHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzCi12ZXJ5IHVubGlrZWx5IHRoYXQgdHdvIGZsb2F0aW5n
LXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwKLWBBU1NFUlRfRVFgICdzIG5h
aXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBzaW5jZSBmbG9hdGluZy1w
b2ludHMKLWNhbiBoYXZlIGEgd2lkZSB2YWx1ZSByYW5nZSwgbm8gc2luZ2xlIGZpeGVkIGVycm9y
IGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0bwotY29tcGFyZSBieSBhIGZpeGVkIHJlbGF0aXZl
IGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAwIGR1ZSB0bwotdGhlIGxv
c3Mgb2YgcHJlY2lzaW9uIHRoZXJlLgotCi1JbiBnZW5lcmFsLCBmb3IgZmxvYXRpbmctcG9pbnQg
Y29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0bwotY2FyZWZ1bGx5IGNo
b29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBvciBjYXJlIHRvLCBjb21w
YXJpbmcgaW4KLXRlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNlIChVTFBzKSBpcyBhIGdv
b2QgZGVmYXVsdCwgYW5kIEdvb2dsZSBUZXN0Ci1wcm92aWRlcyBhc3NlcnRpb25zIHRvIGRvIHRo
aXMuIEZ1bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKLXdhbnQg
dG8gbGVhcm4gbW9yZSwgc2VlCi1bdGhpcyBhcnRpY2xlIG9uIGZsb2F0IGNvbXBhcmlzb25dKGh0
dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRzL2NvbXBh
cmluZ2Zsb2F0cy5odG0pLgotCi0jIyMgRmxvYXRpbmctUG9pbnQgTWFjcm9zICMjIwotCi18ICoq
RmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoq
IHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tfAotfCBgQVNTRVJUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgICB8
IGBFWFBFQ1RfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdvIGBmbG9h
dGAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwgfAotfCBgQVNTRVJUX0RPVUJMRV9FUShgX2V4cGVj
dGVkLCBhY3R1YWxfYCk7YCB8IGBFWFBFQ1RfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9g
KTtgIHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Ci0KLUJ5ICJh
bG1vc3QgZXF1YWwiLCB3ZSBtZWFuIHRoZSB0d28gdmFsdWVzIGFyZSB3aXRoaW4gNCBVTFAncyBm
cm9tIGVhY2gKLW90aGVyLgotCi1UaGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYWxsb3cgeW91IHRv
IGNob29zZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoKLQotfCAqKkZhdGFsIGFzc2VydGlv
bioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwg
YEFTU0VSVF9ORUFSKGBfdmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgYEVYUEVDVF9ORUFS
YF8odmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBf
dmFsMV8gYW5kIF92YWwyXyBkb2Vzbid0IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3Ig
fAotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIEZsb2F0aW5n
LVBvaW50IFByZWRpY2F0ZS1Gb3JtYXQgRnVuY3Rpb25zICMjIwotCi1Tb21lIGZsb2F0aW5nLXBv
aW50IG9wZXJhdGlvbnMgYXJlIHVzZWZ1bCwgYnV0IG5vdCB0aGF0IG9mdGVuIHVzZWQuIEluIG9y
ZGVyCi10byBhdm9pZCBhbiBleHBsb3Npb24gb2YgbmV3IG1hY3Jvcywgd2UgcHJvdmlkZSB0aGVt
IGFzIHByZWRpY2F0ZS1mb3JtYXQKLWZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIHByZWRp
Y2F0ZSBhc3NlcnRpb24gbWFjcm9zIChlLmcuCi1gRVhQRUNUX1BSRURfRk9STUFUMmAsIGV0Yyku
Ci0KLWBgYAotRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkZsb2F0TEUsIHZhbDEsIHZh
bDIpOwotRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkRvdWJsZUxFLCB2YWwxLCB2YWwy
KTsKLWBgYAotCi1WZXJpZmllcyB0aGF0IF92YWwxXyBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBl
cXVhbCB0bywgX3ZhbDJfLiBZb3UgY2FuCi1yZXBsYWNlIGBFWFBFQ1RfUFJFRF9GT1JNQVQyYCBp
biB0aGUgYWJvdmUgdGFibGUgd2l0aCBgQVNTRVJUX1BSRURfRk9STUFUMmAuCi0KLV9BdmFpbGFi
aWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0
aW9ucyAjIwotCi1UaGVzZSBhc3NlcnRpb25zIHRlc3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9y
IGZhaWx1cmUuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQo
YF9leHByZXNzaW9uX2ApO2AgfCBgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGBfZXhwcmVzc2lv
bl9gKTtgIHwgX2V4cHJlc3Npb25fIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAgfAotfCBgQVNTRVJU
X0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgYEVYUEVDVF9IUkVTVUxUX0ZB
SUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IF9leHByZXNzaW9uXyBpcyBhIGZhaWx1cmUgYEhS
RVNVTFRgIHwKLQotVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29udGFpbnMgdGhlIGh1bWFuLXJlYWRh
YmxlIGVycm9yIG1lc3NhZ2UKLWFzc29jaWF0ZWQgd2l0aCB0aGUgYEhSRVNVTFRgIGNvZGUgcmV0
dXJuZWQgYnkgX2V4cHJlc3Npb25fLgotCi1Zb3UgbWlnaHQgdXNlIHRoZW0gbGlrZSB0aGlzOgot
Ci1gYGAKLUNDb21QdHIgc2hlbGw7Ci1BU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwuQ29D
cmVhdGVJbnN0YW5jZShMIlNoZWxsLkFwcGxpY2F0aW9uIikpOwotQ0NvbVZhcmlhbnQgZW1wdHk7
Ci1BU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwtPlNoZWxsRXhlY3V0ZShDQ29tQlNUUih1
cmwpLCBlbXB0eSwgZW1wdHksIGVtcHR5LCBlbXB0eSkpOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlf
OiBXaW5kb3dzLgotCi0jIyBUeXBlIEFzc2VydGlvbnMgIyMKLQotWW91IGNhbiBjYWxsIHRoZSBm
dW5jdGlvbgotYGBgCi06OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KCk7Ci1g
YGAKLXRvIGFzc2VydCB0aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1lLiAgVGhl
IGZ1bmN0aW9uIGRvZXMKLW5vdGhpbmcgaWYgdGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuICBJ
ZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwKLXRoZSBmdW5jdGlvbiBjYWxsIHdpbGwgZmFpbCB0
byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UKLXdpbGwgbGlrZWx5IChk
ZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyKSBzaG93IHlvdSB0aGUgYWN0dWFsIHZhbHVlcyBvZgot
YFQxYCBhbmQgYFQyYC4gIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbnNpZGUgdGVtcGxhdGUgY29k
ZS4KLQotX0NhdmVhdDpfIFdoZW4gdXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYSBj
bGFzcyB0ZW1wbGF0ZSBvciBhCi1mdW5jdGlvbiB0ZW1wbGF0ZSwgYFN0YXRpY0Fzc2VydFR5cGVF
cTxUMSwgVDI+KClgIGlzIGVmZmVjdGl2ZSBfb25seSBpZl8KLXRoZSBmdW5jdGlvbiBpcyBpbnN0
YW50aWF0ZWQuICBGb3IgZXhhbXBsZSwgZ2l2ZW46Ci1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb28gewotIHB1YmxpYzoKLSAgdm9pZCBCYXIoKSB7IDo6dGVzdGluZzo6U3RhdGlj
QXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQotfTsKLWBgYAotdGhlIGNvZGU6Ci1gYGAKLXZvaWQg
VGVzdDEoKSB7IEZvbzxib29sPiBmb287IH0KLWBgYAotd2lsbCBfbm90XyBnZW5lcmF0ZSBhIGNv
bXBpbGVyIGVycm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIKLWFjdHVhbGx5IGlu
c3RhbnRpYXRlZC4gIEluc3RlYWQsIHlvdSBuZWVkOgotYGBgCi12b2lkIFRlc3QyKCkgeyBGb288
Ym9vbD4gZm9vOyBmb28uQmFyKCk7IH0KLWBgYAotdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4K
LQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4z
LjAuCi0KLSMjIEFzc2VydGlvbiBQbGFjZW1lbnQgIyMKLQotWW91IGNhbiB1c2UgYXNzZXJ0aW9u
cyBpbiBhbnkgQysrIGZ1bmN0aW9uLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0Ci1oYXZlIHRv
IGJlIGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFRoZSBvbmUgY29uc3RyYWlu
dCBpcwotdGhhdCBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlIChgRkFJ
TCpgIGFuZCBgQVNTRVJUXypgKQotY2FuIG9ubHkgYmUgdXNlZCBpbiB2b2lkLXJldHVybmluZyBm
dW5jdGlvbnMuIFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZgotR29vZ2xlIFRlc3Qgbm90IHVzaW5n
IGV4Y2VwdGlvbnMuIEJ5IHBsYWNpbmcgaXQgaW4gYSBub24tdm9pZCBmdW5jdGlvbgoteW91J2xs
IGdldCBhIGNvbmZ1c2luZyBjb21waWxlIGVycm9yIGxpa2UKLWAiZXJyb3I6IHZvaWQgdmFsdWUg
bm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYC4KLQotSWYgeW91IG5lZWQgdG8gdXNlIGFz
c2VydGlvbnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm9uLXZvaWQsIG9uZSBvcHRpb24K
LWlzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgaW4gYW4gb3V0IHBhcmFt
ZXRlciBpbnN0ZWFkLiBGb3IKLWV4YW1wbGUsIHlvdSBjYW4gcmV3cml0ZSBgVDIgRm9vKFQxIHgp
YCB0byBgdm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClgLiBZb3UKLW5lZWQgdG8gbWFrZSBzdXJl
IHRoYXQgYCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vuc2libGUgdmFsdWUgZXZlbiB3aGVuIHRo
ZQotZnVuY3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4gQXMgdGhlIGZ1bmN0aW9uIG5vdyByZXR1
cm5zIGB2b2lkYCwgeW91IGNhbiB1c2UKLWFueSBhc3NlcnRpb24gaW5zaWRlIG9mIGl0LgotCi1J
ZiBjaGFuZ2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlzIG5vdCBhbiBvcHRpb24sIHlvdSBzaG91
bGQganVzdCB1c2UKLWFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBub24tZmF0YWwgZmFpbHVyZXMs
IHN1Y2ggYXMgYEFERF9GQUlMVVJFKmAgYW5kCi1gRVhQRUNUXypgLgotCi1fTm90ZV86IENvbnN0
cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25zaWRlcmVkIHZvaWQtcmV0dXJuaW5n
Ci1mdW5jdGlvbnMsIGFjY29yZGluZyB0byB0aGUgQysrIGxhbmd1YWdlIHNwZWNpZmljYXRpb24s
IGFuZCBzbyB5b3UgbWF5IG5vdCB1c2UKLWZhdGFsIGFzc2VydGlvbnMgaW4gdGhlbS4gWW91J2xs
IGdldCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnkuIEEgc2ltcGxlCi13b3JrYXJvdW5k
IGlzIHRvIHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0aGUgY29uc3RydWN0b3Igb3IgZGVz
dHJ1Y3RvciB0byBhCi1wcml2YXRlIHZvaWQtcmV0dXJuaW5nIG1ldGhvZC4gSG93ZXZlciwgeW91
IHNob3VsZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKLWFzc2VydGlvbiBmYWlsdXJlIGluIGEgY29u
c3RydWN0b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJyZW50IHRlc3QsIGFzIHlvdXIKLWlu
dHVpdGlvbiBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0dXJucyBmcm9tIHRoZSBjb25zdHJ1
Y3RvciBlYXJseSwgcG9zc2libHkKLWxlYXZpbmcgeW91ciBvYmplY3QgaW4gYSBwYXJ0aWFsbHkt
Y29uc3RydWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFsCi1hc3NlcnRpb24gZmFpbHVyZSBp
biBhIGRlc3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0IGluIGEKLXBhcnRpYWxseS1kZXN0
cnVjdGVkIHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVsbHkgaW4gdGhlc2Ugc2l0dWF0aW9u
cyEKLQotIyBEZWF0aCBUZXN0cyAjCi0KLUluIG1hbnkgYXBwbGljYXRpb25zLCB0aGVyZSBhcmUg
YXNzZXJ0aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBmYWlsdXJlCi1pZiBhIGNvbmRp
dGlvbiBpcyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3aGljaCBlbnN1cmUgdGhhdCB0
aGUgcHJvZ3JhbQotaXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBhcmUgdGhlcmUgdG8gZmFpbCBh
dCB0aGUgZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgotc29tZSBwcm9ncmFtIHN0YXRlIGlz
IGNvcnJ1cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhlIHdyb25nIGNvbmRpdGlvbiwK
LXRoZW4gdGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJyb25lb3VzIHN0YXRlLCB3aGlj
aCBjb3VsZCBsZWFkIHRvIG1lbW9yeQotY29ycnVwdGlvbiwgc2VjdXJpdHkgaG9sZXMsIG9yIHdv
cnNlLiBIZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0ZXN0Ci10aGF0IHN1Y2ggYXNz
ZXJ0aW9uIHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KLQotU2luY2UgdGhlc2UgcHJlY29u
ZGl0aW9uIGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRpZSwgd2UgY2FsbCBzdWNoIHRl
c3RzCi1fZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55IHRlc3QgdGhhdCBjaGVja3Mg
dGhhdCBhIHByb2dyYW0gdGVybWluYXRlcwotaW4gYW4gZXhwZWN0ZWQgZmFzaGlvbiBpcyBhbHNv
IGEgZGVhdGggdGVzdC4KLQotSWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRf
KigpYCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlIFtDYXRjaGluZyBGYWlsdXJlc10o
I2NhdGNoaW5nLWZhaWx1cmVzKS4KLQotIyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdCAjIwot
Ci1Hb29nbGUgVGVzdCBoYXMgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0
ZXN0czoKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9ERUFUSChgX3N0YXRlbWVudCwgcmVn
ZXhfYCk7IHwgYEVYUEVDVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgX3N0YXRlbWVu
dF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvciB8Ci18IGBBU1NFUlRfREVBVEhfSUZfU1VQ
UE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgaWYgZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZCwg
dmVyaWZpZXMgdGhhdCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yOyBv
dGhlcndpc2UgdmVyaWZpZXMgbm90aGluZyB8Ci18IGBBU1NFUlRfRVhJVChgX3N0YXRlbWVudCwg
cHJlZGljYXRlLCByZWdleF9gKTsgfCBgRVhQRUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0
ZSwgcmVnZXhfYCk7IHxfc3RhdGVtZW50XyBleGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJvciBhbmQg
aXRzIGV4aXQgY29kZSBtYXRjaGVzIF9wcmVkaWNhdGVfIHwKLQotd2hlcmUgX3N0YXRlbWVudF8g
aXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBlY3RlZCB0byBjYXVzZSB0aGUgcHJvY2VzcyB0bwot
ZGllLCBfcHJlZGljYXRlXyBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIG9iamVjdCB0aGF0IGV2
YWx1YXRlcyBhbiBpbnRlZ2VyCi1leGl0IHN0YXR1cywgYW5kIF9yZWdleF8gaXMgYSByZWd1bGFy
IGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJyIG91dHB1dCBvZgotX3N0YXRlbWVudF8gaXMgZXhw
ZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBfc3RhdGVtZW50XyBjYW4gYmUgX2FueSB2YWxpZAot
c3RhdGVtZW50XyAoaW5jbHVkaW5nIF9jb21wb3VuZCBzdGF0ZW1lbnRfKSBhbmQgZG9lc24ndCBo
YXZlIHRvIGJlIGFuCi1leHByZXNzaW9uLgotCi1BcyB1c3VhbCwgdGhlIGBBU1NFUlRgIHZhcmlh
bnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3QgZnVuY3Rpb24sIHdoaWxlIHRoZQotYEVYUEVDVGAg
dmFyaWFudHMgZG8gbm90LgotCi0qKk5vdGU6KiogV2UgdXNlIHRoZSB3b3JkICJjcmFzaCIgaGVy
ZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MKLXRlcm1pbmF0ZXMgd2l0aCBhIF9ub24temVyb18g
ZXhpdCBzdGF0dXMgY29kZS4gIFRoZXJlIGFyZSB0d28KLXBvc3NpYmlsaXRpZXM6IGVpdGhlciB0
aGUgcHJvY2VzcyBoYXMgY2FsbGVkIGBleGl0KClgIG9yIGBfZXhpdCgpYAotd2l0aCBhIG5vbi16
ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2lsbGVkIGJ5IGEgc2lnbmFsLgotCi1UaGlzIG1lYW5z
IHRoYXQgaWYgX3N0YXRlbWVudF8gdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBleGl0
Ci1jb2RlLCBpdCBpcyBfbm90XyBjb25zaWRlcmVkIGEgY3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAu
ICBVc2UKLWBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZiB0aGlzIGlzIHRoZSBjYXNlLCBvciBpZiB5
b3Ugd2FudCB0byByZXN0cmljdAotdGhlIGV4aXQgY29kZSBtb3JlIHByZWNpc2VseS4KLQotQSBw
cmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBhbiBgaW50YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBU
aGUgZGVhdGggdGVzdAotc3VjY2VlZHMgb25seSBpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRy
dWVgLiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgZmV3Ci1wcmVkaWNhdGVzIHRoYXQgaGFuZGxlIHRo
ZSBtb3N0IGNvbW1vbiBjYXNlczoKLQotYGBgCi06OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGV4
aXRfY29kZSkKLWBgYAotCi1UaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFt
IGV4aXRlZCBub3JtYWxseSB3aXRoIHRoZSBnaXZlbiBleGl0Ci1jb2RlLgotCi1gYGAKLTo6dGVz
dGluZzo6S2lsbGVkQnlTaWduYWwoc2lnbmFsX251bWJlcikgIC8vIE5vdCBhdmFpbGFibGUgb24g
V2luZG93cy4KLWBgYAotCi1UaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFt
IHdhcyBraWxsZWQgYnkgdGhlIGdpdmVuIHNpZ25hbC4KLQotVGhlIGAqX0RFQVRIYCBtYWNyb3Mg
YXJlIGNvbnZlbmllbnQgd3JhcHBlcnMgZm9yIGAqX0VYSVRgIHRoYXQgdXNlIGEgcHJlZGljYXRl
Ci10aGF0IHZlcmlmaWVzIHRoZSBwcm9jZXNzJyBleGl0IGNvZGUgaXMgbm9uLXplcm8uCi0KLU5v
dGUgdGhhdCBhIGRlYXRoIHRlc3Qgb25seSBjYXJlcyBhYm91dCB0aHJlZSB0aGluZ3M6Ci0KLSAg
MS4gZG9lcyBfc3RhdGVtZW50XyBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPwotICAxLiAoaW4g
dGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBhbmQgYEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhp
dCBzdGF0dXMgc2F0aXNmeSBfcHJlZGljYXRlXz8gIE9yIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJU
X0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8g
IEFuZAotICAxLiBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIF9yZWdleF8/Ci0KLUluIHBh
cnRpY3VsYXIsIGlmIF9zdGF0ZW1lbnRfIGdlbmVyYXRlcyBhbiBgQVNTRVJUXypgIG9yIGBFWFBF
Q1RfKmAgZmFpbHVyZSwgaXQgd2lsbCAqKm5vdCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZh
aWwsIGFzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQgdGhlIHByb2Nlc3MuCi0K
LVRvIHdyaXRlIGEgZGVhdGggdGVzdCwgc2ltcGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1hY3Jv
cyBpbnNpZGUgeW91ciB0ZXN0Ci1mdW5jdGlvbi4gRm9yIGV4YW1wbGUsCi0KLWBgYAotVEVTVChN
eSpEZWF0aFRlc3QqLCBGb28pIHsKLSAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3Vu
ZCBzdGF0ZW1lbnQuCi0gIEFTU0VSVF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwgIkVy
cm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsKLX0KLVRFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4
aXQpIHsKLSAgRVhQRUNUX0VYSVQoTm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKDApLCAiU3VjY2VzcyIpOwotfQotVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgewot
ICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lH
S0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKLX0KLWBgYAotCi12
ZXJpZmllcyB0aGF0OgotCi0gICogY2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nlc3Mg
dG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UsCi0gICogY2FsbGluZyBgTm9ybWFs
RXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3RkZXJy
IGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAsIGFuZAotICAqIGNhbGxpbmcgYEtpbGxNeXNlbGYo
KWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBzaWduYWwgYFNJR0tJTExgLgotCi1UaGUgdGVzdCBm
dW5jdGlvbiBib2R5IG1heSBjb250YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMg
YXMgd2VsbCwgaWYKLW5lY2Vzc2FyeS4KLQotX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJlY29t
bWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCi10ZXN0IGNh
c2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3Qs
IGFzCi1kZW1vbnN0cmF0ZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVzdHMg
QW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cKLWV4cGxhaW5zIHdoeS4KLQotSWYgYSB0ZXN0IGZp
eHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlv
dQotY2FuIHVzZSB0eXBlZGVmIHRvIGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1cmUg
Y2xhc3MgYW5kIGF2b2lkCi1kdXBsaWNhdGluZyBpdHMgY29kZToKLWBgYAotY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQotdHlwZWRlZiBGb29UZXN0IEZv
b0RlYXRoVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGlzKSB7Ci0gIC8vIG5vcm1hbCB0
ZXN0Ci19Ci0KLVRFU1RfRihGb29EZWF0aFRlc3QsIERvZXNUaGF0KSB7Ci0gIC8vIGRlYXRoIHRl
c3QKLX0KLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1T
VkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFyZSBz
dXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQUE9S
VEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KLQotIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheCAj
IwotCi1PbiBQT1NJWCBzeXN0ZW1zIChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBHb29n
bGUgVGVzdCB1c2VzIHRoZQotW1BPU0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0
cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9j
aGFwMDkuaHRtbCN0YWdfMDlfMDQpCi1zeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJuIGFi
b3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEgZW50
cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lY
X0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lvbnMpLgotCi1PbiBXaW5kb3dzLCBHb29nbGUgVGVz
dCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbgotaW1wbGVtZW50YXRpb24u
IEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVkCi1y
ZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24g
KGAieHx5ImApLAotZ3JvdXBpbmcgKGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5k
IHJlcGV0aXRpb24gY291bnQKLShgInh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBpcyB3
aGF0IHdlIGRvIHN1cHBvcnQgKGBBYCBkZW5vdGVzIGEKLWxpdGVyYWwgY2hhcmFjdGVyLCBwZXJp
b2QgKGAuYCksIG9yIGEgc2luZ2xlIGBcXGAgZXNjYXBlIHNlcXVlbmNlOyBgeGAKLWFuZCBgeWAg
ZGVub3RlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuKToKLQotfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRl
cmFsIGNoYXJhY3RlciBgY2AgfAotfDotLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfCBgXFxkYCB8IG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Ci18
IGBcXERgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0
IHwKLXwgYFxcZmAgfCBtYXRjaGVzIGBcZmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFxu
YCB8IG1hdGNoZXMgYFxuYCAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBcXHJgIHwgbWF0Y2hl
cyBgXHJgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJ
SSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxuYCB8Ci18IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hh
cmFjdGVyIHRoYXQncyBub3QgYSB3aGl0ZXNwYWNlIHwKLXwgYFxcdGAgfCBtYXRjaGVzIGBcdGAg
ICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBcXHdgIHwgbWF0Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2lt
YWwgZGlnaXQgfAotfCBgXFxXYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRv
ZXNuJ3QgbWF0Y2ggfAotfCBgXFxjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBj
YCwgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9uIHwKLXwgYC5gIHwgbWF0Y2hlcyBhbnkgc2lu
Z2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8Ci18IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1
cnJlbmNlcyBvZiBgQWAgfAotfCBgQSpgIHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMg
b2YgYEFgIHwKLXwgYEErYCB8IG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8
Ci18IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2Yg
ZWFjaCBsaW5lKSB8Ci18IGAkYCB8IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRo
YXQgb2YgZWFjaCBsaW5lKSB8Ci18IGB4eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAg
ICAgICAgfAotCi1UbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFp
bGFibGUgb24geW91ciBzeXN0ZW0sCi1Hb29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9V
U0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNlcyBQT1NJWAotZXh0ZW5kZWQgcmVndWxhciBleHBy
ZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwotdGhlIHNp
bXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJv
dGgKLWNhc2VzLCB5b3UgY2FuIGVpdGhlciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRo
ZSBtb3JlIGxpbWl0ZWQKLXN5bnRheCBvbmx5LgotCi0jIyBIb3cgSXQgV29ya3MgIyMKLQotVW5k
ZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhl
Y3V0ZXMgdGhlCi1kZWF0aCB0ZXN0IHN0YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRh
aWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKLXRoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRm
b3JtIGFuZCB0aGUgdmFyaWFibGUKLWA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZQotY29tbWFuZC1saW5lIGZsYWcg
YC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWApLgotCi0gICogT24gUE9TSVggc3lzdGVtcywgYGZv
cmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQs
IGFmdGVyIHdoaWNoOgotICAgICogSWYgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAs
IHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KLSAgICAq
IElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJv
Y2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmln
aW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0
aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCi0gICog
T24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNz
KClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2lu
Z2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2Ug
dGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBPU0lYLgotCi1PdGhlciB2YWx1ZXMgZm9yIHRoZSB2
YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bwotZmFp
bC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2
ZXIsIHdlIHJlc2VydmUgdGhlCi1yaWdodCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhl
cmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBub3QgZGVwZW5kIG9uCi10aGlzLgotCi1JbiBlaXRo
ZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0
byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0Ci0KLSAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0
dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIGFuZAotICAxLiB0aGUgY2hpbGQncyBzdGRlcnIg
bWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLgotCi1JZiB0aGUgZGVhdGggdGVzdCBzdGF0
ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAotcHJvY2Vz
cyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCi0K
LSMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzICMjCi0KLVRoZSByZWFzb24gZm9yIHRoZSB0d28g
ZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCi13
ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFk
cywgZGVhdGggdGVzdHMgc2hvdWxkCi1iZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4
dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBpc24ndCBmZWFzaWJsZSB0bwotYXJyYW5nZSB0aGF0
IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVk
IG1vZHVsZXMKLW1heSBzdGFydCB0aHJlYWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4g
T25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVhdGVkLAotaXQgbWF5IGJlIGRpZmZpY3VsdCBvciBp
bXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAuCi0KLUdvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0
dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KLQot
ICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5n
IHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291bnRlcmVkLgotICAxLiBUZXN0IGNhc2VzIHdpdGgg
YSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVz
dHMuCi0gIDEuIEl0IHVzZXMgYGNsb25lKClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24g
dGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9u
IEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhl
IGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVh
ZHMuCi0KLUl0J3MgcGVyZmVjdGx5IGZpbmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVh
dGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJlCi1leGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nl
c3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBhcmVudC4KLQotIyMgRGVhdGggVGVzdCBTdHlsZXMg
IyMKLQotVGhlICJ0aHJlYWRzYWZlIiBkZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGlu
IG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhlCi1yaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2li
bHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAotdGVzdCBl
eGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQg
dGhyZWFkIHNhZmV0eS4KLVdlIHN1Z2dlc3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFz
dCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBoYXMgc3BlY2lmaWMKLXByb2JsZW1zIHdpdGggaXQu
Ci0KLVlvdSBjYW4gY2hvb3NlIGEgcGFydGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBz
ZXR0aW5nIHRoZSBmbGFnCi1wcm9ncmFtbWF0aWNhbGx5OgotCi1gYGAKLTo6dGVzdGluZzo6RkxB
R1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKLWBgYAotCi1Zb3UgY2Fu
IGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3Rz
IGluIHRoZQotYmluYXJ5LCBvciBpbiBpbmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFn
cyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcgZWFjaAotdGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3
YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgotCi1g
YGAKLVRFU1QoTXlEZWF0aFRlc3QsIFRlc3RPbmUpIHsKLSAgOjp0ZXN0aW5nOjpGTEFHU19ndGVz
dF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOwotICAvLyBUaGlzIHRlc3QgaXMgcnVu
IGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGll
KCksICIiKTsKLX0KLQotVEVTVChNeURlYXRoVGVzdCwgVGVzdFR3bykgewotICAvLyBUaGlzIHRl
c3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxk
RGllKCksICIiKTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICA6OnRlc3Rpbmc6OkZMQUdT
X2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAiZmFzdCI7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Ci19Ci1gYGAKLQotIyMgQ2F2ZWF0cyAjIwotCi1UaGUgX3N0YXRlbWVudF8gYXJndW1lbnQg
b2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudAotZXhjZXB0
IHRoYXQgaXQgY2FuIG5vdCByZXR1cm4gZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbi4gVGhpcyBt
ZWFucwotX3N0YXRlbWVudF8gc2hvdWxkIG5vdCBjb250YWluIGByZXR1cm5gIG9yIGEgbWFjcm8g
dGhhdCBtaWdodCByZXR1cm4gKGUuZy4KLWBBU1NFUlRfVFJVRSgpYCApLiBJZiBfc3RhdGVtZW50
XyByZXR1cm5zIGJlZm9yZSBpdCBjcmFzaGVzLCBHb29nbGUgVGVzdCB3aWxsCi1wcmludCBhbiBl
cnJvciBtZXNzYWdlLCBhbmQgdGhlIHRlc3Qgd2lsbCBmYWlsLgotCi1TaW5jZSBfc3RhdGVtZW50
XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0IChl
LmcuCi1tb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVz
ZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCi1pbiB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHBh
cnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3QsCi15b3VyIHBy
b2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxs
IG5ldmVyIHNlZSB0aGUKLW1lbW9yeSByZWNsYWltZWQuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwg
eW91IGNhbgotCi0gIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0Owot
ICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBhcmVudCBwcm9jZXNzOyBvcgotICAx
LiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91ciBwcm9ncmFtLgotCi1EdWUgdG8g
YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90IHBsYWNlIG11bHRpcGxlIGRlYXRo
IHRlc3QKLWFzc2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlv
biB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKLWVycm9yIG1lc3NhZ2UuCi0KLURlc3BpdGUg
dGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBz
dHlsZSBvZiBkZWF0aAotdGVzdCwgdGhyZWFkIHByb2JsZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJl
IHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgotaGFuZGxlcnMgcmVnaXN0ZXJlZCB3
aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCi0KLSMgVXNpbmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91
dGluZXMgIwotCi0jIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2VydGlvbnMgIyMKLQotSWYgYSB0ZXN0
IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwgcGxhY2VzLCB3aGVuIGFuIGFzc2Vy
dGlvbgotaW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFyZCB0byB0ZWxsIHdoaWNoIGludm9j
YXRpb24gb2YgdGhlCi1zdWItcm91dGluZSB0aGUgZmFpbHVyZSBpcyBmcm9tLiAgWW91IGNhbiBh
bGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCi1leHRyYSBsb2dnaW5nIG9yIGN1c3RvbSBmYWls
dXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0ZXJzIHVwCi15b3VyIHRlc3RzLiBB
IGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09QRURfVFJBQ0VgIG1hY3JvOgotCi18
IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLQotd2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRv
IGBzdGQ6Om9zdHJlYW1gLiBUaGlzCi1tYWNybyB3aWxsIGNhdXNlIHRoZSBjdXJyZW50IGZpbGUg
bmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KLW1lc3NhZ2UgdG8gYmUgYWRkZWQgaW4g
ZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdpbGwgYmUKLXVuZG9uZSB3aGVuIHRo
ZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2FsIHNjb3BlLgotCi1Gb3IgZXhhbXBs
ZSwKLQotYGBgCi0xMDogdm9pZCBTdWIxKGludCBuKSB7Ci0xMTogICBFWFBFQ1RfRVEoMSwgQmFy
KG4pKTsKLTEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEpKTsKLTEzOiB9Ci0xNDoKLTE1OiBU
RVNUKEZvb1Rlc3QsIEJhcikgewotMTY6ICAgewotMTc6ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsg
IC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRlZCBpbgotMTg6ICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhpcyBzY29wZS4KLTE5OiAgICAgU3Vi
MSgxKTsKLTIwOiAgIH0KLTIxOiAgIC8vIE5vdyBpdCB3b24ndC4KLTIyOiAgIFN1YjEoOSk7Ci0y
MzogfQotYGBgCi0KLWNvdWxkIHJlc3VsdCBpbiBtZXNzYWdlcyBsaWtlIHRoZXNlOgotCi1gYGAK
LXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKLVZhbHVlIG9mOiBCYXIobikKLUV4cGVj
dGVkOiAxCi0gIEFjdHVhbDogMgotICAgVHJhY2U6Ci1wYXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBB
Ci0KLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUKLVZhbHVlIG9mOiBCYXIobiArIDEp
Ci1FeHBlY3RlZDogMgotICBBY3R1YWw6IDMKLWBgYAotCi1XaXRob3V0IHRoZSB0cmFjZSwgaXQg
d291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGljaCBpbnZvY2F0aW9uCi1vZiBgU3Vi
MSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNwZWN0aXZlbHkuIChZb3UgY291bGQg
YWRkIGFuCi1leHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0aW9uIGluIGBTdWIxKClgIHRvIGlu
ZGljYXRlIHRoZSB2YWx1ZSBvZgotYG5gLCBidXQgdGhhdCdzIHRlZGlvdXMuKQotCi1Tb21lIHRp
cHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6Ci0KLSAgMS4gV2l0aCBhIHN1aXRhYmxlIG1lc3Nh
Z2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5u
aW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQgZWFjaCBjYWxsIHNpdGUuCi0gIDEu
IFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBp
dGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5
b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWlsdXJlIGlzIGZyb20uCi0gIDEuIFNv
bWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNlIHBvaW50IGlzIGVub3VnaCBmb3Ig
aWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJ
biB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZv
ciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNlIGAiImAuCi0gIDEuIFlvdSBjYW4g
dXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3BlIHdoZW4gdGhlcmUgaXMgb25lIGlu
IHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3
aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVy
IHRoZXkgYXJlIGVuY291bnRlcmVkLgotICAxLiBUaGUgdHJhY2UgZHVtcCBpcyBjbGlja2FibGUg
aW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCByZXR1cm4gb24gYSBsaW5lIG51bWJl
ciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUhCi0K
LV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBQcm9wYWdhdGluZyBG
YXRhbCBGYWlsdXJlcyAjIwotCi1BIGNvbW1vbiBwaXRmYWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8q
YCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0aGF0Ci13aGVuIHRoZXkgZmFpbCB0
aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9uXywgbm90IHRoZSBlbnRpcmUgdGVz
dC4gRm9yCi1leGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBzZWdmYXVsdDoKLWBgYAot
dm9pZCBTdWJyb3V0aW5lKCkgewotICAvLyBHZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBh
Ym9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0gIEFTU0VSVF9FUSgxLCAyKTsKLSAgLy8gVGhl
IGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KLSAgLi4uCi19Ci0KLVRFU1QoRm9vVGVzdCwg
QmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gVGhlIGludGVuZGVkIGJlaGF2aW9yIGlzIGZv
ciB0aGUgZmF0YWwgZmFpbHVyZQotICAvLyBpbiBTdWJyb3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVu
dGlyZSB0ZXN0LgotICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBv
biBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KLSAgaW50KiBwID0gTlVMTDsKLSAgKnAgPSAz
OyAvLyBTZWdmYXVsdCEKLX0KLWBgYAotCi1TaW5jZSB3ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywg
aXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bwotaW1wbGVtZW50IHRoZSBpbnRlbmRlZCBi
ZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdvb2dsZSBUZXN0Ci1wcm92aWRlcyB0
d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIgdGhlCi1gKEFTU0VSVHxFWFBFQ1Qp
X05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhlCi1gSGFzRmF0YWxGYWlsdXJlKClg
IGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgdHdvCi1zdWJz
ZWN0aW9ucy4KLQotCi0KLSMjIyBBc3NlcnRpbmcgb24gU3Vicm91dGluZXMgIyMjCi0KLUFzIHNo
b3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFzIGFuIGBB
U1NFUlRfKmAKLWZhaWx1cmUgaW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0ZXIgdGhl
IHN1YnJvdXRpbmUKLXJldHVybnMuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IHlvdSB3YW50LgotCi1P
ZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBleGNlcHRp
b25zLiAgRm9yCi10aGF0IEdvb2dsZSBUZXN0IG9mZmVycyB0aGUgZm9sbG93aW5nIG1hY3JvczoK
LQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50
X2ApO2AgfCBgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IF9zdGF0
ZW1lbnRfIGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5ldyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgY3Vy
cmVudCB0aHJlYWQuIHwKLQotT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0
ZXMgdGhlIGFzc2VydGlvbiBhcmUgY2hlY2tlZCB0bwotZGV0ZXJtaW5lIHRoZSByZXN1bHQgb2Yg
dGhpcyB0eXBlIG9mIGFzc2VydGlvbnMuICBJZiBfc3RhdGVtZW50XwotY3JlYXRlcyBuZXcgdGhy
ZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBhcmUgaWdub3JlZC4KLQotRXhhbXBsZXM6
Ci0KLWBgYAotQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRm9vKCkpOwotCi1pbnQgaTsKLUVYUEVD
VF9OT19GQVRBTF9GQUlMVVJFKHsKLSAgaSA9IEJhcigpOwotfSk7Ci1gYGAKLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuIEFzc2VydGlvbnMgZnJvbSBtdWx0aXBsZSB0aHJl
YWRzCi1hcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSMjIyBDaGVja2luZyBmb3IgRmFp
bHVyZXMgaW4gdGhlIEN1cnJlbnQgVGVzdCAjIyMKLQotYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0
aGUgYDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KLWFzc2VydGlv
biBpbiB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMK
LWFsbG93cyBmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGlu
ZSBhbmQgcmV0dXJuCi1lYXJseS4KLQotYGBgCi1jbGFzcyBUZXN0IHsKLSBwdWJsaWM6Ci0gIC4u
LgotICBzdGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsKLX07Ci1gYGAKLQotVGhlIHR5cGlj
YWwgdXNhZ2UsIHdoaWNoIGJhc2ljYWxseSBzaW11bGF0ZXMgdGhlIGJlaGF2aW9yIG9mIGEgdGhy
b3duCi1leGNlcHRpb24sIGlzOgotCi1gYGAKLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIFN1YnJv
dXRpbmUoKTsKLSAgLy8gQWJvcnRzIGlmIFN1YnJvdXRpbmUoKSBoYWQgYSBmYXRhbCBmYWlsdXJl
LgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpCi0gICAgcmV0dXJuOwotICAvLyBUaGUgZm9sbG93
aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgotICAuLi4KLX0KLWBgYAotCi1JZiBgSGFzRmF0YWxGYWls
dXJlKClgIGlzIHVzZWQgb3V0c2lkZSBvZiBgVEVTVCgpYCAsIGBURVNUX0YoKWAgLCBvciBhIHRl
c3QKLWZpeHR1cmUsIHlvdSBtdXN0IGFkZCB0aGUgYDo6dGVzdGluZzo6VGVzdDo6YCBwcmVmaXgs
IGFzIGluOgotCi1gYGAKLWlmICg6OnRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKQot
ICByZXR1cm47Ci1gYGAKLQotU2ltaWxhcmx5LCBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIHJldHVy
bnMgYHRydWVgIGlmIHRoZSBjdXJyZW50IHRlc3QKLWhhcyBhdCBsZWFzdCBvbmUgbm9uLWZhdGFs
IGZhaWx1cmUsIGFuZCBgSGFzRmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYAotaWYgdGhlIGN1cnJl
bnQgdGVzdCBoYXMgYXQgbGVhc3Qgb25lIGZhaWx1cmUgb2YgZWl0aGVyIGtpbmQuCi0KLV9BdmFp
bGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCBh
bmQKLWBIYXNGYWlsdXJlKClgIGFyZSBhdmFpbGFibGUgc2luY2UgdmVyc2lvbiAxLjQuMC4KLQot
IyBMb2dnaW5nIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24gIwotCi1JbiB5b3VyIHRlc3QgY29kZSwg
eW91IGNhbiBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFsdWUpYCB0byBsb2cKLWFkZGl0
aW9uYWwgaW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJlIGVpdGhlciBhIEMgc3RyaW5n
IG9yIGEgMzItYml0Ci1pbnRlZ2VyLiBUaGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZvciBhIGtl
eSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKLWlmIHlvdSBzcGVjaWZ5IG9uZS4g
Rm9yIGV4YW1wbGUsIHRoZSB0ZXN0Ci0KLWBgYAotVEVTVF9GKFdpZGdldFVzYWdlVGVzdCwgTWlu
QW5kTWF4V2lkZ2V0cykgewotICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMiLCBDb21w
dXRlTWF4VXNhZ2UoKSk7Ci0gIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIsIENvbXB1
dGVNaW5Vc2FnZSgpKTsKLX0KLWBgYAotCi13aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlzOgotCi1g
YGAKLS4uLgotICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVzPSJydW4i
IHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IgotICAgICAgICAgICAgTWF4aW11
bVdpZGdldHM9IjEyIgotICAgICAgICAgICAgTWluaW11bVdpZGdldHM9IjkiIC8+Ci0uLi4KLWBg
YAotCi1fTm90ZV86Ci0gICogYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1lbWJlciBv
ZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4ZWQgd2l0
aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1RgIGJvZHkg
YW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gICogYGtleWAgbXVzdCBiZSBhIHZhbGlkIFhN
TCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVzIGFscmVh
ZHkgdXNlZCBieSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgICAgIGB0aW1lYCwgYW5k
IGBjbGFzc25hbWVgKS4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0K
LSMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBpbiB0aGUgU2FtZSBUZXN0IENhc2Ug
IwotCi0KLQotR29vZ2xlIFRlc3QgY3JlYXRlcyBhIG5ldyB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZv
ciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQotdGVzdHMgaW5kZXBlbmRlbnQgYW5kIGVhc2ll
ciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3RzIHVzZSByZXNvdXJjZXMKLXRoYXQg
YXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUgb25lLWNvcHktcGVyLXRlc3QgbW9k
ZWwgcHJvaGliaXRpdmVseQotZXhwZW5zaXZlLgotCi1JZiB0aGUgdGVzdHMgZG9uJ3QgY2hhbmdl
IHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRoZW0gc2hhcmluZyBhCi1zaW5nbGUg
cmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBlci10ZXN0IHNldC11cC90ZWFyLWRv
d24sIEdvb2dsZSBUZXN0Ci1hbHNvIHN1cHBvcnRzIHBlci10ZXN0LWNhc2Ugc2V0LXVwL3RlYXIt
ZG93bi4gVG8gdXNlIGl0OgotCi0gIDEuIEluIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzIChzYXkg
YEZvb1Rlc3RgICksIGRlZmluZSBhcyBgc3RhdGljYCBzb21lIG1lbWJlciB2YXJpYWJsZXMgdG8g
aG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KLSAgMS4gSW4gdGhlIHNhbWUgdGVzdCBmaXh0dXJl
IGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpYCBmdW5jdGlvbiAo
cmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVwVGVzdENhc2VgKiogd2l0aCBhIHNt
YWxsIGB1YCEpIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291cmNlcyBhbmQgYSBgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpYCBmdW5jdGlvbiB0byB0ZWFyIHRoZW0gZG93bi4KLQotVGhh
dCdzIGl0ISBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGNhbGxzIGBTZXRVcFRlc3RDYXNlKClg
IGJlZm9yZSBydW5uaW5nIHRoZQotX2ZpcnN0IHRlc3RfIGluIHRoZSBgRm9vVGVzdGAgdGVzdCBj
YXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QKLWBGb29UZXN0YCBvYmplY3QpLCBh
bmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIgcnVubmluZyB0aGUgX2xhc3QgdGVz
dF8KLWluIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGBGb29UZXN0YCBvYmplY3Qp
LiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMKLWNhbiB1c2UgdGhlIHNoYXJlZCByZXNvdXJjZXMuCi0K
LVJlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5kZWZpbmVkLCBzbyB5b3VyIGNvZGUg
Y2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAotcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBhbm90aGVyLiBB
bHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlmeSB0aGUKLXN0YXRlIG9mIGFueSBz
aGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlmeSB0aGUgc3RhdGUsIHRoZXkgbXVz
dAotcmVzdG9yZSB0aGUgc3RhdGUgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGJlZm9yZSBwYXNzaW5n
IGNvbnRyb2wgdG8gdGhlIG5leHQKLXRlc3QuCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIHBlci10
ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246Ci1gYGAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFBlci10ZXN0LWNhc2Ugc2V0
LXVwLgotICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNl
LgotICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVkLgotICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkgewotICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBuZXcgLi4uOwotICB9Ci0KLSAg
Ly8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCi0gIC8vIENhbGxlZCBhZnRlciB0aGUgbGFzdCB0
ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgotICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVk
LgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIGRlbGV0ZSBzaGFyZWRf
cmVzb3VyY2VfOwotICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwotICB9Ci0KLSAgLy8gWW91
IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFyLWRvd24gbG9naWMgYXMgdXN1YWwu
Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeyAuLi4gfQotCi0gIC8vIFNvbWUgZXhwZW5zaXZlIHJlc291cmNlIHNoYXJlZCBieSBhbGwg
dGVzdHMuCi0gIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2VfOwotfTsKLQotVCogRm9vVGVzdDo6
c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotICAu
Li4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2UgaGVyZSAuLi4KLX0KLVRFU1RfRihG
b29UZXN0LCBUZXN0MikgewotICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2Ug
aGVyZSAuLi4KLX0KLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4K
LQotIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURvd24gIwotCi1KdXN0IGFzIHlvdSBjYW4gZG8g
c2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2ZWwgYW5kIHRoZSB0ZXN0IGNhc2UK
LWxldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRlc3QgcHJvZ3JhbSBsZXZlbC4gSGVy
ZSdzIGhvdy4KLQotRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUgYDo6dGVzdGluZzo6RW52aXJvbm1l
bnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKLWVudmlyb25tZW50LCB3aGljaCBrbm93cyBob3cg
dG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246Ci0KLWBgYAotY2xhc3MgRW52aXJvbm1lbnQgewotIHB1
YmxpYzoKLSAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQotICAvLyBPdmVycmlkZSB0aGlzIHRv
IGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudC4KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkge30KLSAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93biB0
aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Ci19OwotYGBgCi0K
LVRoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5b3VyIGVudmlyb25tZW50IGNsYXNz
IHdpdGggR29vZ2xlIFRlc3QgYnkKLWNhbGxpbmcgdGhlIGA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRl
c3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKLQotYGBgCi1FbnZpcm9ubWVudCogQWRkR2xvYmFs
VGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwotYGBgCi0KLU5vdywgd2hlbiBgUlVO
X0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNhbGxzIHRoZSBgU2V0VXAoKWAgbWV0
aG9kIG9mCi10aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVuIHJ1bnMgdGhlIHRlc3RzIGlmIHRo
ZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCi1maW5hbGx5IGNhbGxzIGBUZWFyRG93bigp
YCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgotCi1JdCdzIE9LIHRvIHJlZ2lzdGVyIG11bHRp
cGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2FzZSwgdGhlaXIgYFNldFVwKClgCi13
aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgYW5kIHRoZWly
IGBUZWFyRG93bigpYCB3aWxsIGJlCi1jYWxsZWQgaW4gdGhlIHJldmVyc2Ugb3JkZXIuCi0KLU5v
dGUgdGhhdCBHb29nbGUgVGVzdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHJlZ2lzdGVyZWQgZW52
aXJvbm1lbnQgb2JqZWN0cy4KLVRoZXJlZm9yZSAqKmRvIG5vdCBkZWxldGUgdGhlbSoqIGJ5IHlv
dXJzZWxmLgotCi1Zb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBi
ZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAgaXMKLWNhbGxlZCwgcHJvYmFibHkgaW4gYG1haW4oKWAu
IElmIHlvdSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0byAgICAgIGNhbGwKLXRoaXMgYmVm
b3JlIGBtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuIE9uZSB3YXkgdG8gZG8g
dGhpcyBpcyB0bwotZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIGxpa2UgdGhpczoKLQotYGBgCi06
OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0gOjp0ZXN0aW5nOjpBZGRHbG9i
YWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50KTsKLWBgYAotCi1Ib3dldmVyLCB3
ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlvdXIgb3duIGBtYWluKClgIGFuZCBj
YWxsCi1gQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRoZXJlLCBhcyByZWx5aW5nIG9uIGlu
aXRpYWxpemF0aW9uIG9mIGdsb2JhbAotdmFyaWFibGVzIG1ha2VzIHRoZSBjb2RlIGhhcmRlciB0
byByZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5b3UKLXJlZ2lzdGVyIG11bHRpcGxl
IGVudmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlCi1l
bnZpcm9ubWVudHMgaGF2ZSBkZXBlbmRlbmNpZXMgYW1vbmcgdGhlbSAocmVtZW1iZXIgdGhhdCB0
aGUgY29tcGlsZXIgZG9lc24ndAotZ3VhcmFudGVlIHRoZSBvcmRlciBpbiB3aGljaCBnbG9iYWwg
dmFyaWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzCi1hcmUgaW5pdGlhbGl6
ZWQpLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotCi0jIFZhbHVl
IFBhcmFtZXRlcml6ZWQgVGVzdHMgIwotCi1fVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c18gYWxs
b3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50Ci1wYXJhbWV0ZXJzIHdpdGhv
dXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4KLQotU3VwcG9zZSB5
b3Ugd3JpdGUgYSB0ZXN0IGZvciB5b3VyIGNvZGUgYW5kIHRoZW4gcmVhbGl6ZSB0aGF0IHlvdXIg
Y29kZSBpcyBhZmZlY3RlZCBieSBhIHByZXNlbmNlIG9mIGEgQm9vbGVhbiBjb21tYW5kIGxpbmUg
ZmxhZy4KLQotYGBgCi1URVNUKE15Q29kZVRlc3QsIFRlc3RGb28pIHsKLSAgLy8gQSBjb2RlIHRv
IHRlc3QgZm9vKCkuCi19Ci1gYGAKLQotVXN1YWxseSBwZW9wbGUgZmFjdG9yIHRoZWlyIHRlc3Qg
Y29kZSBpbnRvIGEgZnVuY3Rpb24gd2l0aCBhIEJvb2xlYW4gcGFyYW1ldGVyIGluIHN1Y2ggc2l0
dWF0aW9ucy4gVGhlIGZ1bmN0aW9uIHNldHMgdGhlIGZsYWcsIHRoZW4gZXhlY3V0ZXMgdGhlIHRl
c3RpbmcgY29kZS4KLQotYGBgCi12b2lkIFRlc3RGb29IZWxwZXIoYm9vbCBmbGFnX3ZhbHVlKSB7
Ci0gIGZsYWcgPSBmbGFnX3ZhbHVlOwotICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KLX0KLQot
VEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vbykgewotICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsKLSAg
VGVzdEZvb0hlbHBlcih0cnVlKTsKLX0KLWBgYAotCi1CdXQgdGhpcyBzZXR1cCBoYXMgc2VyaW91
cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEgdGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91ciB0
ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdoYXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBjYXVz
ZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJlYW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50byB5
b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0byBk
byBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3VjaCBo
ZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdoYXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBUd2Vu
dHk/IEEgaHVuZHJlZD8KLQotVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5b3Ug
d3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUgYW5k
IHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4KLQot
SGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRpb25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBjb21lIGhhbmR5OgotCi0gICogWW91IHdhbiB0byB0ZXN0IGRpZmZlcmVudCBpbXBsZW1l
bnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgotICAqIFlvdSB3YW50IHRvIHRlc3QgeW91ciBj
b2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRyaXZlbiB0ZXN0aW5nKS4gVGhp
cyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBleGVyY2lzZSB5b3VyIGdvb2Qg
c2Vuc2Ugd2hlbiBkb2luZyBpdCEKLQotIyMgSG93IHRvIFdyaXRlIFZhbHVlLVBhcmFtZXRlcml6
ZWQgVGVzdHMgIyMKLQotVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgZmlyc3Qg
eW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi1jbGFzcy4gSXQgbXVzdCBiZSBkZXJpdmVkIGZy
b20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAsIHdoZXJlIGBUYAotaXMgdGhlIHR5cGUg
b2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLiBgVGVzdFdpdGhQYXJhbTxUPmAgaXMgaXRzZWxmCi1k
ZXJpdmVkIGZyb20gYDo6dGVzdGluZzo6VGVzdGAuIGBUYCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5
cGUuIElmIGl0J3MKLWEgcmF3IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFn
aW5nIHRoZSBsaWZlc3BhbiBvZiB0aGUKLXBvaW50ZWQgdmFsdWVzLgotCi1gYGAKLWNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7Ci0g
IC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJz
IGhlcmUuCi0gIC8vIFRvIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0o
KSBmcm9tIGNsYXNzCi0gIC8vIFRlc3RXaXRoUGFyYW08VD4uCi19OwotYGBgCi0KLVRoZW4sIHVz
ZSB0aGUgYFRFU1RfUGAgbWFjcm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2lu
ZwotdGhpcyBmaXh0dXJlIGFzIHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFy
YW1ldGVyaXplZCIgb3IKLSJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsu
Ci0KLWBgYAotVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3Qs
IGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKLSAg
Ly8gb2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xhc3M6Ci0gIEVYUEVDVF9UUlVFKGZvby5CbGFo
KEdldFBhcmFtKCkpKTsKLSAgLi4uCi19Ci0KLVRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkg
ewotICAuLi4KLX0KLWBgYAotCi1GaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0Ci1jYXNlIHdpdGggYW55IHNldCBvZiBw
YXJhbWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mCi1mdW5j
dGlvbnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdl
IGNhbGwKLShzdXJwcmlzZSEpIF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMgYSBzdW1t
YXJ5IG9mIHRoZW0sCi13aGljaCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlOgot
Ci18IGBSYW5nZShiZWdpbiwgZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwg
YmVnaW4rc3RlcCwgYmVnaW4rc3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5j
bHVkZSBgZW5kYC4gYHN0ZXBgIGRlZmF1bHRzIHRvIDEuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfCBgVmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVsZHMgdmFs
dWVzIGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBWYWx1
ZXNJbihjb250YWluZXIpYCBhbmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxkcyB2YWx1
ZXMgZnJvbSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0
ZXJhdG9yIHJhbmdlIGBbYmVnaW4sIGVuZClgLiAgICAgICAgICAgICAgICAgIHwKLXwgYEJvb2wo
KWAgICAgICAgICAgICAgICAgICAgIHwgWWllbGRzIHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgQ29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAg
fCBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUg
bWF0aCBzYXZ2eSkgb2YgdGhlIHZhbHVlcyBnZW5lcmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3Jz
LiBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlvdXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRy
MS90dXBsZT5gIGhlYWRlci4gSWYgeW91IGFyZSBzdXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBH
b29nbGUgVGVzdCBkaXNhZ3JlZXMsIHlvdSBjYW4gb3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdU
RVNUX0hBU19UUjFfVFVQTEU9MWAuIFNlZSBjb21tZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmhdKC4uL2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gfAotCi1Gb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNv
bW1lbnRzIGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3Vy
Y2UgY29kZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgpLgotCi1UaGUgZm9s
bG93aW5nIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0
YCB0ZXN0IGNhc2UKLWVhY2ggd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55
ImAsIGFuZCBgIm1vZSJgLgotCi1gYGAKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRp
YXRpb25OYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzKCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsK
LWBgYAotCi1UbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJu
ICh5ZXMsIHlvdSBjYW4KLWluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvCi1gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQg
d2lsbCBiZSBhZGRlZCB0byB0aGUgYWN0dWFsCi10ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8g
cGljayB1bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZlcmVudAotaW5zdGFudGlhdGlvbnMuIFRoZSB0
ZXN0cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZQotbmFtZXM6
Ci0KLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVu
eSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlu
eSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9l
ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJt
ZWVueSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9y
IGAibWlueSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAg
Zm9yIGAibW9lImAKLQotWW91IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gWy0tZ3Rlc3RcLWZpbHRl
cl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKS4KLQotVGhpcyBzdGF0ZW1lbnQgd2ls
bCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBgRm9vVGVzdGAgYWdhaW4sIGVhY2gKLXdpdGgg
cGFyYW1ldGVyIHZhbHVlcyBgImNhdCJgIGFuZCBgImRvZyJgOgotCi1gYGAKLWNvbnN0IGNoYXIq
IHBldHNbXSA9IHsiY2F0IiwgImRvZyJ9OwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhl
ckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjpWYWx1ZXNJbihwZXRzKSk7Ci1gYGAKLQotVGhlIHRlc3RzIGZyb20gdGhlIGluc3Rh
bnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlIG5hbWVzOgotCi0gICogYEFub3RoZXJJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgImNhdCJgCi0gICogYEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzFgIGZvciBgImRvZyJgCi0gICog
YEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNh
dCJgCi0gICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFg
IGZvciBgImRvZyJgCi0KLVBsZWFzZSBub3RlIHRoYXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
YCB3aWxsIGluc3RhbnRpYXRlIF9hbGxfCi10ZXN0cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3
aGV0aGVyIHRoZWlyIGRlZmluaXRpb25zIGNvbWUgYmVmb3JlIG9yCi1fYWZ0ZXJfIHRoZSBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVudC4KLQotWW91IGNhbiBzZWUKLVt0aGVzZV0o
Li4vc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKQotW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBs
ZThfdW5pdHRlc3QuY2MpIGZvciBtb3JlIGV4YW1wbGVzLgotCi1fQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJz
aW9uIDEuMi4wLgotCi0jIyBDcmVhdGluZyBWYWx1ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRl
c3RzICMjCi0KLUluIHRoZSBhYm92ZSwgd2UgZGVmaW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVz
dGAgaW4gdGhlIHNhbWUgc291cmNlCi1maWxlLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGRl
ZmluZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGluIGEKLWxpYnJhcnkgYW5kIGxldCBvdGhl
ciBwZW9wbGUgaW5zdGFudGlhdGUgdGhlbSBsYXRlci4gVGhpcyBwYXR0ZXJuIGlzCi1rbm93biBh
cyA8aT5hYnN0cmFjdCB0ZXN0czwvaT4uIEFzIGFuIGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9u
LCB3aGVuIHlvdQotYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0
YW5kYXJkIHN1aXRlIG9mIGFic3RyYWN0Ci10ZXN0cyAocGVyaGFwcyB1c2luZyBhIGZhY3Rvcnkg
ZnVuY3Rpb24gYXMgdGhlIHRlc3QgcGFyYW1ldGVyKSB0aGF0Ci1hbGwgaW1wbGVtZW50YXRpb25z
IG9mIHRoZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVkIHRvIHBhc3MuIFdoZW4KLXNvbWVvbmUgaW1w
bGVtZW50cyB0aGUgaW50ZXJmYWNlLCBoZSBjYW4gaW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBn
ZXQKLWFsbCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1hbmNlIHRlc3RzIGZvciBmcmVlLgotCi1UbyBk
ZWZpbmUgYWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2Ug
dGhpczoKLQotICAxLiBQdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVz
dCBmaXh0dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBm
b29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3Ry
YWN0IHRlc3RzLgotICAxLiBQdXQgdGhlIGBURVNUX1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFy
YW1fdGVzdC5jY2AsIHdoaWNoIGluY2x1ZGVzIGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2Yg
dGhpcyBhcyBfaW1wbGVtZW50aW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgotCi1PbmNlIHRoZXkg
YXJlIGRlZmluZWQsIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbSBieSBpbmNsdWRpbmcKLWBmb29f
cGFyYW1fdGVzdC5oYCwgaW52b2tpbmcgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQg
bGlua2luZwotd2l0aCBgZm9vX3BhcmFtX3Rlc3QuY2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRo
ZSBzYW1lIGFic3RyYWN0IHRlc3QKLWNhc2UgbXVsdGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRp
ZmZlcmVudCBzb3VyY2UgZmlsZXMuCi0KLSMgVHlwZWQgVGVzdHMgIwotCi1TdXBwb3NlIHlvdSBo
YXZlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCi13
YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVx
dWlyZW1lbnRzLgotT3IsIHlvdSBtYXkgaGF2ZSBkZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBh
cmUgc3VwcG9zZWQgdG8gY29uZm9ybSB0bwotdGhlIHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2Fu
dCB0byB2ZXJpZnkgaXQuICBJbiBib3RoIGNhc2VzLCB5b3Ugd2FudAotdGhlIHNhbWUgdGVzdCBs
b2dpYyByZXBlYXRlZCBmb3IgZGlmZmVyZW50IHR5cGVzLgotCi1XaGlsZSB5b3UgY2FuIHdyaXRl
IG9uZSBgVEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVhY2ggdHlwZSB5b3Ugd2FudCB0bwotdGVzdCAo
YW5kIHlvdSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRlc3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRl
bXBsYXRlCi10aGF0IHlvdSBpbnZva2UgZnJvbSB0aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFu
ZCBkb2Vzbid0IHNjYWxlOgotaWYgeW91IHdhbnQgX21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5
b3UnbGwgZW5kIHVwIHdyaXRpbmcgX21cKm5fCi1gVEVTVGBzLgotCi1fVHlwZWQgdGVzdHNfIGFs
bG93IHlvdSB0byByZXBlYXQgdGhlIHNhbWUgdGVzdCBsb2dpYyBvdmVyIGEgbGlzdCBvZgotdHlw
ZXMuICBZb3Ugb25seSBuZWVkIHRvIHdyaXRlIHRoZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdo
IHlvdSBtdXN0Ci1rbm93IHRoZSB0eXBlIGxpc3Qgd2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAg
SGVyZSdzIGhvdyB5b3UgZG8gaXQ6Ci0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRl
bXBsYXRlLiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQKLWJ5IGEgdHlwZS4gIFJlbWVtYmVy
IHRvIGRlcml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RgOgotCi1gYGAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHB1
YmxpYzoKLSAgLi4uCi0gIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7Ci0gIHN0YXRpYyBUIHNo
YXJlZF87Ci0gIFQgdmFsdWVfOwotfTsKLWBgYAotCi1OZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9m
IHR5cGVzIHdpdGggdGhlIHRlc3QgY2FzZSwgd2hpY2ggd2lsbCBiZQotcmVwZWF0ZWQgZm9yIGVh
Y2ggdHlwZSBpbiB0aGUgbGlzdDoKLQotYGBgCi10eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hh
ciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwg
TXlUeXBlcyk7Ci1gYGAKLQotVGhlIGB0eXBlZGVmYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQ
RURfVEVTVF9DQVNFYCBtYWNybyB0byBwYXJzZQotY29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBj
b21waWxlciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBjb21tYSBpbiB0aGUKLXR5cGUgbGlzdCBpbnRy
b2R1Y2VzIGEgbmV3IG1hY3JvIGFyZ3VtZW50LgotCi1UaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAg
aW5zdGVhZCBvZiBgVEVTVF9GKClgIHRvIGRlZmluZSBhIHR5cGVkIHRlc3QKLWZvciB0aGlzIHRl
c3QgY2FzZS4gIFlvdSBjYW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoK
LQotYGBgCi1UWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRl
c3QsIHJlZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUgVHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQot
ICAvLyBwYXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1w
bGF0ZSwgQysrIHJlcXVpcmVzCi0gIC8vIHVzIHRvIHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rl
c3QgdmlhICd0aGlzJy4KLSAgVHlwZVBhcmFtIG4gPSB0aGlzLT52YWx1ZV87Ci0KLSAgLy8gVG8g
dmlzaXQgc3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJl
OjonCi0gIC8vIHByZWZpeC4KLSAgbiArPSBUZXN0Rml4dHVyZTo6c2hhcmVkXzsKLQotICAvLyBU
byByZWZlciB0byB0eXBlZGVmcyBpbiB0aGUgZml4dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVz
dEZpeHR1cmU6OicKLSAgLy8gcHJlZml4LiAgVGhlICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8g
c2F0aXNmeSB0aGUgY29tcGlsZXIuCi0gIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVl
czsKLSAgdmFsdWVzLnB1c2hfYmFjayhuKTsKLSAgLi4uCi19Ci0KLVRZUEVEX1RFU1QoRm9vVGVz
dCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAKLQotWW91IGNhbiBzZWUgYHNhbXBsZXMvc2Ft
cGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKLXNp
bmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVHlwZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMKLQotX1R5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0c18gYXJlIGxpa2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0
IHRoZXkKLWRvbid0IHJlcXVpcmUgeW91IHRvIGtub3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQg
b2YgdGltZS4gIEluc3RlYWQsCi15b3UgY2FuIGRlZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBh
bmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJlbnQKLXR5cGUgbGlzdHMgbGF0ZXIuICBZb3Ug
Y2FuIGV2ZW4gaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCi1zYW1lIHByb2dy
YW0uCi0KLUlmIHlvdSBhcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSBvciBjb25jZXB0LCB5b3Ug
Y2FuIGRlZmluZSBhIHN1aXRlCi1vZiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5
IHByb3BlcnRpZXMgdGhhdCBhbnkgdmFsaWQKLWltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZh
Y2UvY29uY2VwdCBzaG91bGQgaGF2ZS4gIFRoZW4sIHRoZSBhdXRob3IKLW9mIGVhY2ggaW1wbGVt
ZW50YXRpb24gY2FuIGp1c3QgaW5zdGFudGlhdGUgdGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKLXR5
cGUgdG8gdmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMgdG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91
dCBoYXZpbmcgdG8KLXdyaXRlIHNpbWlsYXIgdGVzdHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBl
eGFtcGxlOgotCi1GaXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2Ug
ZGlkIHdpdGggdHlwZWQgdGVzdHM6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIC4uLgotfTsKLWBgYAotCi1O
ZXh0LCBkZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QgY2FzZToKLQotYGBgCi1UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0KTsKLWBgYAotCi1UaGUg
YF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZl
ciB5b3UKLXByZWZlciB0byB0aGluay4KLQotVGhlbiwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8g
ZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuICBZb3UKLWNhbiByZXBlYXQgdGhpcyBh
cyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgotCi1gYGAKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBE
b2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0
IHRoZSB0eXBlIHBhcmFtZXRlci4KLSAgVHlwZVBhcmFtIG4gPSAwOwotICAuLi4KLX0KLQotVFlQ
RURfVEVTVF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQotYGBgCi0KLU5vdyB0aGUg
dHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lzdGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5n
IHRoZQotYFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBp
bnN0YW50aWF0ZSB0aGVtLgotVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUg
dGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZQotdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZToKLQotYGBgCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7Ci1g
YGAKLQotRmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdp
dGggdGhlIHR5cGVzIHlvdQotd2FudC4gIElmIHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBo
ZWFkZXIgZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVgCi1pdCBpbiBtdWx0aXBsZSBDKysgc291cmNl
IGZpbGVzIGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0aXBsZSB0aW1lcy4KLQotYGBgCi10eXBlZGVm
IDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7Ci1JTlNU
QU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgTXlUeXBlcyk7Ci1gYGAKLQot
VG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZp
cnN0IGFyZ3VtZW50Ci10byB0aGUgYElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNy
byBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUKLWFkZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNl
IG5hbWUuICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcwotZm9yIGRpZmZlcmVudCBp
bnN0YW5jZXMuCi0KLUluIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250
YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UKLWNhbiB3cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0
aG91dCBgOjp0ZXN0aW5nOjpUeXBlczwuLi4+YCwgbGlrZSB0aGlzOgotCi1gYGAKLUlOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOwotYGBgCi0KLVlvdSBjYW4g
c2VlIGBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUu
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3Ig
YWJvdmUpLCBNYWM7Ci1zaW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIFRlc3RpbmcgUHJpdmF0ZSBD
b2RlICMKLQotSWYgeW91IGNoYW5nZSB5b3VyIHNvZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50
YXRpb24sIHlvdXIgdGVzdHMgc2hvdWxkIG5vdAotYnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdl
IGlzIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBUaGVyZWZvcmUsIHBlciB0aGUKLV9ibGFjay1i
b3ggdGVzdGluZyBwcmluY2lwbGVfLCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5
b3VyIGNvZGUKLXRocm91Z2ggaXRzIHB1YmxpYyBpbnRlcmZhY2VzLgotCi1JZiB5b3Ugc3RpbGwg
ZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3QgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29k
ZSwKLWNvbnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVx
dWlyZSB5b3UgdG8gZG8gc28uIElmIHlvdQotYWJzb2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1
YmxpYyBpbnRlcmZhY2UgY29kZSB0aG91Z2gsIHlvdSBjYW4uIFRoZXJlIGFyZQotdHdvIGNhc2Vz
IHRvIGNvbnNpZGVyOgotCi0gICogU3RhdGljIGZ1bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMg
c3RhdGljIG1lbWJlciBmdW5jdGlvbnMhKSBvciB1bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAotICAq
IFByaXZhdGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnMKLQotIyMgU3RhdGljIEZ1bmN0aW9u
cyAjIwotCi1Cb3RoIHN0YXRpYyBmdW5jdGlvbnMgYW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9u
cyBpbiBhbiB1bm5hbWVkIG5hbWVzcGFjZSBhcmUKLW9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNh
bWUgdHJhbnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKLXRo
ZSBlbnRpcmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxl
LiAoYCNpbmNsdWRlYGluZyBgLmNjYAotZmlsZXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2Ug
Y29kZSAtIHlvdSBzaG91bGQgbm90IGRvIHRoaXMgaW4gcHJvZHVjdGlvbgotY29kZSEpCi0KLUhv
d2V2ZXIsIGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRv
IHRoZQotYGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFjZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVz
cGFjZSB5b3VyIHByb2plY3Qgbm9ybWFsbHkKLXVzZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVj
bGFyYXRpb25zIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91cgotcHJvZHVjdGlvbiBgLmNj
YCBmaWxlcyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJu
YWwKLWhlYWRlciwgYnV0IHlvdXIgY2xpZW50cyBhcmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBm
dWxseSB0ZXN0IHlvdXIgaW50ZXJuYWwKLWltcGxlbWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBp
dCB0byB5b3VyIGNsaWVudHMuCi0KLSMjIFByaXZhdGUgQ2xhc3MgTWVtYmVycyAjIwotCi1Qcml2
YXRlIGNsYXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xh
c3Mgb3IgYnkgZnJpZW5kcy4KLVRvIGFjY2VzcyBhIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlv
dSBjYW4gZGVjbGFyZSB5b3VyIHRlc3QgZml4dHVyZSBhcyBhCi1mcmllbmQgdG8gdGhlIGNsYXNz
IGFuZCBkZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIgZml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCi1m
aXh0dXJlIGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVj
dGlvbiBjbGFzcyB2aWEgdGhlCi1hY2Nlc3NvcnMgaW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBl
dmVuIHRob3VnaCB5b3VyIGZpeHR1cmUgaXMgYSBmcmllbmQgdG8KLXlvdXIgcHJvZHVjdGlvbiBj
bGFzcywgeW91ciB0ZXN0cyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMg
dGhleQotYXJlIHRlY2huaWNhbGx5IGRlZmluZWQgaW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1
cmUuCi0KLUFub3RoZXIgd2F5IHRvIHRlc3QgcHJpdmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9y
IHRoZW0gaW50byBhbiBpbXBsZW1lbnRhdGlvbgotY2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFy
ZWQgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyIGNsaWVudHMgYXJlbid0Ci1hbGxvd2Vk
IHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlvdXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxl
ZCB0aGUgUGltcGwKLShQcml2YXRlIEltcGxlbWVudGF0aW9uKSBpZGlvbS4KLQotT3IsIHlvdSBj
YW4gZGVjbGFyZSBhbiBpbmRpdmlkdWFsIHRlc3QgYXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBi
eSBhZGRpbmcgdGhpcwotbGluZSBpbiB0aGUgY2xhc3MgYm9keToKLQotYGBgCi1GUklFTkRfVEVT
VChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKTsKLWBgYAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotLy8g
Zm9vLmgKLSNpbmNsdWRlIDxndGVzdC9ndGVzdF9wcm9kLmg+Ci0KLS8vIERlZmluZXMgRlJJRU5E
X1RFU1QuCi1jbGFzcyBGb28gewotICAuLi4KLSBwcml2YXRlOgotICBGUklFTkRfVEVTVChGb29U
ZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCk7Ci0gIGludCBCYXIodm9pZCogeCk7Ci19OwotCi0v
LyBmb29fdGVzdC5jYwotLi4uCi1URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7
Ci0gIEZvbyBmb287Ci0gIEVYUEVDVF9FUSgwLCBmb28uQmFyKE5VTEwpKTsKLSAgLy8gVXNlcyBG
b28ncyBwcml2YXRlIG1lbWJlciBCYXIoKS4KLX0KLWBgYAotCi1QYXkgc3BlY2lhbCBhdHRlbnRp
b24gd2hlbiB5b3VyIGNsYXNzIGlzIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91
bGQKLWRlZmluZSB5b3VyIHRlc3QgZml4dHVyZXMgYW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVz
cGFjZSBpZiB5b3Ugd2FudCB0aGVtIHRvCi1iZSBmcmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBl
eGFtcGxlLCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0ZWQgbG9va3MgbGlrZToKLQotYGBgCi1uYW1l
c3BhY2UgbXlfbmFtZXNwYWNlIHsKLQotY2xhc3MgRm9vIHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rl
c3Q7Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhcik7Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3Qs
IEJheik7Ci0gIC4uLgotICBkZWZpbml0aW9uIG9mIHRoZSBjbGFzcyBGb28KLSAgLi4uCi19Owot
Ci19ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNlCi1gYGAKLQotWW91ciB0ZXN0IGNvZGUgc2hv
dWxkIGJlIHNvbWV0aGluZyBsaWtlOgotCi1gYGAKLW5hbWVzcGFjZSBteV9uYW1lc3BhY2Ugewot
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAg
Li4uCi19OwotCi1URVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwg
QmF6KSB7IC4uLiB9Ci0KLX0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKLWBgYAotCi0jIENh
dGNoaW5nIEZhaWx1cmVzICMKLQotSWYgeW91IGFyZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0
eSBvbiB0b3Agb2YgR29vZ2xlIFRlc3QsIHlvdSdsbAotd2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0
eS4gIFdoYXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1c2UgdG8gdGVzdCBpdD8KLUdvb2dsZSBUZXN0
LCBvZiBjb3Vyc2UuCi0KLVRoZSBjaGFsbGVuZ2UgaXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0
aW5nIHV0aWxpdHkgcmVwb3J0cyBmYWlsdXJlcwotY29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0
aGF0IHJlcG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dpbmcgYW4KLWV4Y2VwdGlvbiwgeW91IGNvdWxk
IGNhdGNoIHRoZSBleGNlcHRpb24gYW5kIGFzc2VydCBvbiBpdC4gIEJ1dCBHb29nbGUKLVRlc3Qg
ZG9lc24ndCB1c2UgZXhjZXB0aW9ucywgc28gaG93IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9m
IGNvZGUKLWdlbmVyYXRlcyBhbiBleHBlY3RlZCBmYWlsdXJlPwotCi1gPGd0ZXN0L2d0ZXN0LXNw
aS5oPmAgY29udGFpbnMgc29tZSBjb25zdHJ1Y3RzIHRvIGRvIHRoaXMuICBBZnRlcgotYCNpbmNs
dWRlYGluZyB0aGlzIGhlYWRlciwgeW91IGNhbiB1c2UKLQotfCBgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLXRvIGFzc2VydCB0aGF0IF9zdGF0ZW1l
bnRfIGdlbmVyYXRlcyBhIGZhdGFsIChlLmcuIGBBU1NFUlRfKmApIGZhaWx1cmUKLXdob3NlIG1l
c3NhZ2UgY29udGFpbnMgdGhlIGdpdmVuIF9zdWJzdHJpbmdfLCBvciB1c2UKLQotfCBgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLWlmIHlv
dSBhcmUgZXhwZWN0aW5nIGEgbm9uLWZhdGFsIChlLmcuIGBFWFBFQ1RfKmApIGZhaWx1cmUuCi0K
LUZvciB0ZWNobmljYWwgcmVhc29ucywgdGhlcmUgYXJlIHNvbWUgY2F2ZWF0czoKLQotICAxLiBZ
b3UgY2Fubm90IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byBlaXRoZXIgbWFjcm8uCi0gIDEu
IF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmVmZXJlbmNl
IGxvY2FsIG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yIG5vbi1zdGF0aWMgbWVtYmVycyBvZiBgdGhp
c2Agb2JqZWN0LgotICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAg
Y2Fubm90IHJldHVybiBhIHZhbHVlLgotCi1fTm90ZTpfIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVk
IHdpdGggdGhyZWFkcyBpbiBtaW5kLiAgT25jZSB0aGUKLXN5bmNocm9uaXphdGlvbiBwcmltaXRp
dmVzIGluIGA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oPmAgaGF2ZQotYmVlbiBpbXBsZW1l
bnRlZCwgR29vZ2xlIFRlc3Qgd2lsbCBiZWNvbWUgdGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAot
eW91IGNhbiB0aGVuIHVzZSBhc3NlcnRpb25zIGluIG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVu
dGx5LiAgQmVmb3JlCi0KLXRoYXQsIGhvd2V2ZXIsIEdvb2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMg
c2luZ2xlLXRocmVhZGVkIHVzYWdlLiAgT25jZQotdGhyZWFkLXNhZmUsIGBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpYCBhbmQgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKClgCi13aWxsIGNhcHR1cmUg
ZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9ubHkuIElmIF9zdGF0ZW1lbnRfCi1jcmVh
dGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIHdpbGwgYmUgaWdub3Jl
ZC4gIElmCi15b3Ugd2FudCB0byBjYXB0dXJlIGZhaWx1cmVzIGZyb20gYWxsIHRocmVhZHMgaW5z
dGVhZCwgeW91IHNob3VsZCB1c2UKLXRoZSBmb2xsb3dpbmcgbWFjcm9zOgotCi18IGBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2Ag
fAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLXwgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
KGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Ci0KLSMgR2V0dGluZyB0aGUgQ3VycmVudCBU
ZXN0J3MgTmFtZSAjCi0KLVNvbWV0aW1lcyBhIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGtub3cgdGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCi1Gb3IgZXhhbXBsZSwgeW91IG1h
eSBiZSB1c2luZyB0aGUgYFNldFVwKClgIG1ldGhvZCBvZiB5b3VyIHRlc3QgZml4dHVyZSB0byBz
ZXQKLXRoZSBnb2xkZW4gZmlsZSBuYW1lIGJhc2VkIG9uIHdoaWNoIHRlc3QgaXMgcnVubmluZy4g
VGhlIGA6OnRlc3Rpbmc6OlRlc3RJbmZvYAotY2xhc3MgaGFzIHRoaXMgaW5mb3JtYXRpb246Ci0K
LWBgYAotbmFtZXNwYWNlIHRlc3RpbmcgewotCi1jbGFzcyBUZXN0SW5mbyB7Ci0gcHVibGljOgot
ICAvLyBSZXR1cm5zIHRoZSB0ZXN0IGNhc2UgbmFtZSBhbmQgdGhlIHRlc3QgbmFtZSwgcmVzcGVj
dGl2ZWx5LgotICAvLwotICAvLyBEbyBOT1QgZGVsZXRlIG9yIGZyZWUgdGhlIHJldHVybiB2YWx1
ZSAtIGl0J3MgbWFuYWdlZCBieSB0aGUKLSAgLy8gVGVzdEluZm8gY2xhc3MuCi0gIGNvbnN0IGNo
YXIqIHRlc3RfY2FzZV9uYW1lKCkgY29uc3Q7Ci0gIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsK
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi1gYGAKLQotCi0+IFRvIG9idGFpbiBhIGBU
ZXN0SW5mb2Agb2JqZWN0IGZvciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCwgY2FsbAotYGN1
cnJlbnRfdGVzdF9pbmZvKClgIG9uIHRoZSBgVW5pdFRlc3RgIHNpbmdsZXRvbiBvYmplY3Q6Ci0K
LWBgYAotLy8gR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVz
dC4KLS8vIERvIE5PVCBkZWxldGUgdGhlIHJldHVybmVkIG9iamVjdCAtIGl0J3MgbWFuYWdlZCBi
eSB0aGUgVW5pdFRlc3QgY2xhc3MuCi1jb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0
ZXN0X2luZm8gPQotICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOwotcHJpbnRmKCJXZSBhcmUgaW4gdGVzdCAlcyBvZiB0ZXN0IGNhc2UgJXMu
XG4iLAotICAgICAgIHRlc3RfaW5mby0+bmFtZSgpLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1l
KCkpOwotYGBgCi0KLWBjdXJyZW50X3Rlc3RfaW5mbygpYCByZXR1cm5zIGEgbnVsbCBwb2ludGVy
IGlmIG5vIHRlc3QgaXMgcnVubmluZy4gSW4KLXBhcnRpY3VsYXIsIHlvdSBjYW5ub3QgZmluZCB0
aGUgdGVzdCBjYXNlIG5hbWUgaW4gYFRlc3RDYXNlU2V0VXAoKWAsCi1gVGVzdENhc2VUZWFyRG93
bigpYCAod2hlcmUgeW91IGtub3cgdGhlIHRlc3QgY2FzZSBuYW1lIGltcGxpY2l0bHkpLCBvcgot
ZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHRoZW0uCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLgotCi0jIEV4dGVuZGluZyBHb29nbGUgVGVzdCBieSBIYW5kbGluZyBUZXN0IEV2
ZW50cyAjCi0KLUdvb2dsZSBUZXN0IHByb3ZpZGVzIGFuIDxiPmV2ZW50IGxpc3RlbmVyIEFQSTwv
Yj4gdG8gbGV0IHlvdSByZWNlaXZlCi1ub3RpZmljYXRpb25zIGFib3V0IHRoZSBwcm9ncmVzcyBv
ZiBhIHRlc3QgcHJvZ3JhbSBhbmQgdGVzdAotZmFpbHVyZXMuIFRoZSBldmVudHMgeW91IGNhbiBs
aXN0ZW4gdG8gaW5jbHVkZSB0aGUgc3RhcnQgYW5kIGVuZCBvZgotdGhlIHRlc3QgcHJvZ3JhbSwg
YSB0ZXN0IGNhc2UsIG9yIGEgdGVzdCBtZXRob2QsIGFtb25nIG90aGVycy4gWW91IG1heQotdXNl
IHRoaXMgQVBJIHRvIGF1Z21lbnQgb3IgcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29uc29sZSBvdXRw
dXQsCi1yZXBsYWNlIHRoZSBYTUwgb3V0cHV0LCBvciBwcm92aWRlIGEgY29tcGxldGVseSBkaWZm
ZXJlbnQgZm9ybSBvZgotb3V0cHV0LCBzdWNoIGFzIGEgR1VJIG9yIGEgZGF0YWJhc2UuIFlvdSBj
YW4gYWxzbyB1c2UgdGVzdCBldmVudHMgYXMKLWNoZWNrcG9pbnRzIHRvIGltcGxlbWVudCBhIHJl
c291cmNlIGxlYWsgY2hlY2tlciwgZm9yIGV4YW1wbGUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCi0KLSMjIERlZmluaW5nIEV2ZW50IExpc3Rl
bmVycyAjIwotCi1UbyBkZWZpbmUgYSBldmVudCBsaXN0ZW5lciwgeW91IHN1YmNsYXNzIGVpdGhl
cgotW3Rlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0Lmgj
TDg1NSkKLW9yIFt0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyXSguLi9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LmgjTDkwNSkuCi1UaGUgZm9ybWVyIGlzIGFuIChhYnN0cmFjdCkgaW50ZXJmYWNl
LCB3aGVyZSA8aT5lYWNoIHB1cmUgdmlydHVhbCBtZXRob2Q8YnI+Ci1jYW4gYmUgb3ZlcnJpZGRl
biB0byBoYW5kbGUgYSB0ZXN0IGV2ZW50PC9pPiAoRm9yIGV4YW1wbGUsIHdoZW4gYSB0ZXN0Ci1z
dGFydHMsIHRoZSBgT25UZXN0U3RhcnQoKWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLikuIFRoZSBs
YXR0ZXIgcHJvdmlkZXMKLWFuIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGFsbCBtZXRob2RzIGlu
IHRoZSBpbnRlcmZhY2UsIHN1Y2ggdGhhdCBhCi1zdWJjbGFzcyBvbmx5IG5lZWRzIHRvIG92ZXJy
aWRlIHRoZSBtZXRob2RzIGl0IGNhcmVzIGFib3V0LgotCi1XaGVuIGFuIGV2ZW50IGlzIGZpcmVk
LCBpdHMgY29udGV4dCBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24KLWFzIGFuIGFy
Z3VtZW50LiBUaGUgZm9sbG93aW5nIGFyZ3VtZW50IHR5cGVzIGFyZSB1c2VkOgotICAqIFtVbml0
VGVzdF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMDA3KSByZWZsZWN0cyB0aGUgc3RhdGUg
b2YgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0sCi0gICogW1Rlc3RDYXNlXSguLi9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LmgjTDY4OSkgaGFzIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdCBjYXNlLCB3aGlj
aCBjYW4gY29udGFpbiBvbmUgb3IgbW9yZSB0ZXN0cywKLSAgKiBbVGVzdEluZm9dKC4uL2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNTk5KSBjb250YWlucyB0aGUgc3RhdGUgb2YgYSB0ZXN0LCBhbmQK
LSAgKiBbVGVzdFBhcnRSZXN1bHRdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0Lmgj
TDQyKSByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYSB0ZXN0IGFzc2VydGlvbi4KLQotQW4gZXZl
bnQgaGFuZGxlciBmdW5jdGlvbiBjYW4gZXhhbWluZSB0aGUgYXJndW1lbnQgaXQgcmVjZWl2ZXMg
dG8gZmluZAotb3V0IGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudCBhbmQg
dGhlIHRlc3QgcHJvZ3JhbSdzCi1zdGF0ZS4gIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLSAg
Y2xhc3MgTWluaW1hbGlzdFByaW50ZXIgOiBwdWJsaWMgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVu
dExpc3RlbmVyIHsKLSAgICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCi0gICAgdmly
dHVhbCB2b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5m
bykgewotICAgICAgcHJpbnRmKCIqKiogVGVzdCAlcy4lcyBzdGFydGluZy5cbiIsCi0gICAgICAg
ICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAg
IH0KLQotICAgIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3IgYSBTVUNDRVNT
KCkuCi0gICAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoCi0gICAgICAgIGNvbnN0IDo6
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgICAgIHByaW50
ZigiJXMgaW4gJXM6JWRcbiVzXG4iLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFp
bGVkKCkgPyAiKioqIEZhaWx1cmUiIDogIlN1Y2Nlc3MiLAotICAgICAgICAgICAgIHRlc3RfcGFy
dF9yZXN1bHQuZmlsZV9uYW1lKCksCi0gICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5l
X251bWJlcigpLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKLSAg
ICB9Ci0KLSAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCi0gICAgdmlydHVhbCB2b2lk
IE9uVGVzdEVuZChjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICAg
IHByaW50ZigiKioqIFRlc3QgJXMuJXMgZW5kaW5nLlxuIiwKLSAgICAgICAgICAgICB0ZXN0X2lu
Zm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gICAgfQotICB9OwotYGBg
Ci0KLSMjIFVzaW5nIEV2ZW50IExpc3RlbmVycyAjIwotCi1UbyB1c2UgdGhlIGV2ZW50IGxpc3Rl
bmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBpbnN0YW5jZSBvZiBpdCB0bwotdGhlIEdvb2ds
ZSBUZXN0IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJlcHJlc2VudGVkIGJ5IGNsYXNzCi1bVGVzdEV2
ZW50TGlzdGVuZXJzXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDkyOSkKLS0gbm90ZSB0aGUg
InMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGluIHlvdXIKLWBtYWluKClgIGZ1bmN0aW9uLCBi
ZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYDoKLWBgYAotaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3Yp
OwotICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50IGxpc3RlbmVyIGxpc3QuCi0gIDo6dGVzdGlu
Zzo6VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPQotICAgICAgOjp0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Ci0gIC8vIEFkZHMgYSBsaXN0ZW5lciB0
byB0aGUgZW5kLiAgR29vZ2xlIFRlc3QgdGFrZXMgdGhlIG93bmVyc2hpcC4KLSAgbGlzdGVuZXJz
LkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OwotfQotYGBgCi0KLVRoZXJlJ3Mgb25seSBvbmUgcHJvYmxlbTogdGhlIGRlZmF1bHQgdGVzdCBy
ZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbgotZWZmZWN0LCBzbyBpdHMgb3V0cHV0IHdpbGwgbWlu
Z2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIgbWluaW1hbGlzdAotcHJpbnRlci4gVG8gc3Vw
cHJlc3MgdGhlIGRlZmF1bHQgcHJpbnRlciwganVzdCByZWxlYXNlIGl0IGZyb20gdGhlCi1ldmVu
dCBsaXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQuIFlvdSBjYW4gZG8gc28gYnkgYWRkaW5nIG9u
ZSBsaW5lOgotYGBgCi0gIC4uLgotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJz
LmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmlt
YWxpc3RQcmludGVyKTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi1Ob3csIHNp
dCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIK
LXRlc3RzLiBGb3IgbW9yZSBkZXRhaWxzLCB5b3UgY2FuIHJlYWQgdGhpcwotW3NhbXBsZV0oLi4v
c2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKS4KLQotWW91IG1heSBhcHBlbmQgbW9yZSB0aGFu
IG9uZSBsaXN0ZW5lciB0byB0aGUgbGlzdC4gV2hlbiBhbiBgT24qU3RhcnQoKWAKLW9yIGBPblRl
c3RQYXJ0UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVkLCB0aGUgbGlzdGVuZXJzIHdpbGwgcmVjZWl2
ZSBpdCBpbgotdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBsaXN0IChzaW5jZSBuZXcgbGlz
dGVuZXJzIGFyZSBhZGRlZCB0bwotdGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlIGRlZmF1bHQgdGV4
dCBwcmludGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwKLWdlbmVyYXRvciB3aWxsIHJlY2VpdmUgdGhl
IGV2ZW50IGZpcnN0KS4gQW4gYE9uKkVuZCgpYCBldmVudCB3aWxsIGJlCi1yZWNlaXZlZCBieSB0
aGUgbGlzdGVuZXJzIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIuIFRoaXMgYWxsb3dzIG91dHB1dCBi
eQotbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJlIGZyYW1lZCBieSBvdXRwdXQgZnJvbSBsaXN0
ZW5lcnMgYWRkZWQKLWVhcmxpZXIuCi0KLSMjIEdlbmVyYXRpbmcgRmFpbHVyZXMgaW4gTGlzdGVu
ZXJzICMjCi0KLVlvdSBtYXkgdXNlIGZhaWx1cmUtcmFpc2luZyBtYWNyb3MgKGBFWFBFQ1RfKigp
YCwgYEFTU0VSVF8qKClgLAotYEZBSUwoKWAsIGV0Yykgd2hlbiBwcm9jZXNzaW5nIGFuIGV2ZW50
LiBUaGVyZSBhcmUgc29tZSByZXN0cmljdGlvbnM6Ci0KLSAgMS4gWW91IGNhbm5vdCBnZW5lcmF0
ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJlc3VsdCgpYCAob3RoZXJ3aXNlIGl0IHdpbGwg
Y2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4KLSAg
MS4gQSBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9uVGVzdFBhcnRSZXN1bHQoKWAgaXMgbm90IGFs
bG93ZWQgdG8gZ2VuZXJhdGUgYW55IGZhaWx1cmUuCi0KLVdoZW4geW91IGFkZCBsaXN0ZW5lcnMg
dG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91bGQgcHV0IGxpc3RlbmVycwotdGhhdCBoYW5k
bGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgX2JlZm9yZV8gbGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVy
YXRlCi1mYWlsdXJlcy4gVGhpcyBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRo
ZSBsYXR0ZXIgYXJlCi1hdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0IGJ5IHRoZSBmb3JtZXIu
Ci0KLVdlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVyZS1yYWlzaW5nIGxpc3RlbmVyCi1baGVyZV0o
Li4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykuCi0KLSMgUnVubmluZyBUZXN0IFByb2dy
YW1zOiBBZHZhbmNlZCBPcHRpb25zICMKLQotR29vZ2xlIFRlc3QgdGVzdCBwcm9ncmFtcyBhcmUg
b3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVpbHQsIHlvdSBjYW4gcnVuCi10aGVtIGRpcmVj
dGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3IgdmlhIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1l
bnQgdmFyaWFibGVzCi1hbmQvb3IgY29tbWFuZCBsaW5lIGZsYWdzLiBGb3IgdGhlIGZsYWdzIHRv
IHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxsCi1gOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYC4KLQotVG8gc2VlIGEgbGlzdCBv
ZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVzYWdlLCBwbGVhc2UgcnVuIHlvdXIgdGVzdAot
cHJvZ3JhbSB3aXRoIHRoZSBgLS1oZWxwYCBmbGFnLiAgWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBg
LT9gLCBvciBgLz9gCi1mb3Igc2hvcnQuICBUaGlzIGZlYXR1cmUgaXMgYWRkZWQgaW4gdmVyc2lv
biAxLjMuMC4KLQotSWYgYW4gb3B0aW9uIGlzIHNwZWNpZmllZCBib3RoIGJ5IGFuIGVudmlyb25t
ZW50IHZhcmlhYmxlIGFuZCBieSBhCi1mbGFnLCB0aGUgbGF0dGVyIHRha2VzIHByZWNlZGVuY2Uu
ICBNb3N0IG9mIHRoZSBvcHRpb25zIGNhbiBhbHNvIGJlCi1zZXQvcmVhZCBpbiBjb2RlOiB0byBh
Y2Nlc3MgdGhlIHZhbHVlIG9mIGNvbW1hbmQgbGluZSBmbGFnCi1gLS1ndGVzdF9mb29gLCB3cml0
ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGZvbylgLiAgQSBjb21tb24gcGF0dGVybiBpcwotdG8g
c2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcgYmVmb3JlIGNhbGxpbmcgYDo6dGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoKWAKLXRvIGNoYW5nZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZmxhZzoKLWBg
YAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIC8vIERpc2FibGVzIGVsYXBz
ZWQgdGltZSBieSBkZWZhdWx0LgotICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkg
PSBmYWxzZTsKLQotICAvLyBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgZmxh
ZyBvbiB0aGUgY29tbWFuZCBsaW5lLgotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdj
LCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotYGBgCi0KLSMjIFNlbGVj
dGluZyBUZXN0cyAjIwotCi1UaGlzIHNlY3Rpb24gc2hvd3MgdmFyaW91cyBvcHRpb25zIGZvciBj
aG9vc2luZyB3aGljaCB0ZXN0cyB0byBydW4uCi0KLSMjIyBMaXN0aW5nIFRlc3QgTmFtZXMgIyMj
Ci0KLVNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3Rz
IGluIGEgcHJvZ3JhbSBiZWZvcmUKLXJ1bm5pbmcgdGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBi
ZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5nIHRoZSBmbGFnCi1gLS1ndGVzdF9saXN0X3Rl
c3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdzIGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9s
bG93aW5nCi1mb3JtYXQ6Ci1gYGAKLVRlc3RDYXNlMS4KLSAgVGVzdE5hbWUxCi0gIFRlc3ROYW1l
MgotVGVzdENhc2UyLgotICBUZXN0TmFtZQotYGBgCi0KLU5vbmUgb2YgdGhlIHRlc3RzIGxpc3Rl
ZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubwot
Y29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhpcyBmbGFnLgotCi1fQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIFJ1bm5pbmcgYSBTdWJzZXQg
b2YgdGhlIFRlc3RzICMjIwotCi1CeSBkZWZhdWx0LCBhIEdvb2dsZSBUZXN0IHByb2dyYW0gcnVu
cyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmluZWQuCi1Tb21ldGltZXMsIHlvdSB3YW50IHRv
IHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0cyAoZS5nLiBmb3IgZGVidWdnaW5nIG9yCi1x
dWlja2x5IHZlcmlmeWluZyBhIGNoYW5nZSkuIElmIHlvdSBzZXQgdGhlIGBHVEVTVF9GSUxURVJg
IGVudmlyb25tZW50IHZhcmlhYmxlCi1vciB0aGUgYC0tZ3Rlc3RfZmlsdGVyYCBmbGFnIHRvIGEg
ZmlsdGVyIHN0cmluZywgR29vZ2xlIFRlc3Qgd2lsbCBvbmx5IHJ1biB0aGUKLXRlc3RzIHdob3Nl
IGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9mIGBUZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRj
aCB0aGUKLWZpbHRlci4KLQotVGhlIGZvcm1hdCBvZiBhIGZpbHRlciBpcyBhICdgOmAnLXNlcGFy
YXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5zIChjYWxsZWQKLXRoZSBwb3NpdGl2ZSBwYXR0
ZXJucykgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICdgLWAnIGFuZCBhbm90aGVyCi0nYDpgJy1z
ZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zKS4gQSB0
ZXN0IG1hdGNoZXMgdGhlCi1maWx0ZXIgaWYgYW5kIG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2Yg
dGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2VzIG5vdAotbWF0Y2ggYW55IG9mIHRoZSBuZWdh
dGl2ZSBwYXR0ZXJucy4KLQotQSBwYXR0ZXJuIG1heSBjb250YWluIGAnKidgIChtYXRjaGVzIGFu
eSBzdHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFueSBzaW5nbGUKLWNoYXJhY3RlcikuIEZvciBj
b252ZW5pZW5jZSwgdGhlIGZpbHRlciBgJyotTmVnYXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNv
Ci13cml0dGVuIGFzIGAnLU5lZ2F0aXZlUGF0dGVybnMnYC4KLQotRm9yIGV4YW1wbGU6Ci0KLSAg
KiBgLi9mb29fdGVzdGAgSGFzIG5vIGZsYWcsIGFuZCB0aHVzIHJ1bnMgYWxsIGl0cyB0ZXN0cy4K
LSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qYCBBbHNvIHJ1bnMgZXZlcnl0aGluZywg
ZHVlIHRvIHRoZSBzaW5nbGUgbWF0Y2gtZXZlcnl0aGluZyBgKmAgdmFsdWUuCi0gICogYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBj
YXNlIGBGb29UZXN0YC4KLSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNv
bnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgZWl0aGVy
IGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYC4KLSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2Zp
bHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBub24tZGVhdGggdGVzdHMuCi0gICogYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4qLUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhp
bmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNlcHQgYEZvb1Rlc3QuQmFyYC4KLQotX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBUZW1wb3JhcmlseSBEaXNhYmxp
bmcgVGVzdHMgIyMjCi0KLUlmIHlvdSBoYXZlIGEgYnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90
IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0aGUKLWBESVNBQkxFRF9gIHByZWZpeCB0byBp
dHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQgZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKLWJl
dHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBjb2RlIG9yIHVzaW5nIGAjaWYgMGAsIGFzIGRp
c2FibGVkIHRlc3RzIGFyZQotc3RpbGwgY29tcGlsZWQgKGFuZCB0aHVzIHdvbid0IHJvdCkuCi0K
LUlmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLCB5b3UgY2Fu
IGVpdGhlciBhZGQgYERJU0FCTEVEX2AKLXRvIHRoZSBmcm9udCBvZiB0aGUgbmFtZSBvZiBlYWNo
IHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0IHRvIHRoZSBmcm9udCBvZgotdGhlIHRlc3Qg
Y2FzZSBuYW1lLgotCi1Gb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0cyB3b24ndCBiZSBy
dW4gYnkgR29vZ2xlIFRlc3QsIGV2ZW4gdGhvdWdoIHRoZXkKLXdpbGwgc3RpbGwgYmUgY29tcGls
ZWQ6Ci0KLWBgYAotLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBBYmMuCi1URVNUKEZvb1Rlc3QsIERJ
U0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KLQotY2xhc3MgRElTQUJMRURfQmFyVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQotLy8gVGVzdHMgdGhhdCBCYXIgZG9lcyBYeXou
Ci1URVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9lc1h5eikgeyAuLi4gfQotYGBgCi0KLV9Ob3Rl
Ol8gVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlbXBvcmFyeSBwYWluLXJl
bGllZi4gWW91IHN0aWxsCi1oYXZlIHRvIGZpeCB0aGUgZGlzYWJsZWQgdGVzdHMgYXQgYSBsYXRl
ciBkYXRlLiBBcyBhIHJlbWluZGVyLCBHb29nbGUgVGVzdCB3aWxsCi1wcmludCBhIGJhbm5lciB3
YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBjb250YWlucyBhbnkgZGlzYWJsZWQgdGVzdHMu
Ci0KLV9UaXA6XyBZb3UgY2FuIGVhc2lseSBjb3VudCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRl
c3RzIHlvdSBoYXZlCi11c2luZyBgZ3JlcGAuIFRoaXMgbnVtYmVyIGNhbiBiZSB1c2VkIGFzIGEg
bWV0cmljIGZvciBpbXByb3ZpbmcgeW91cgotdGVzdCBxdWFsaXR5LgotCi1fQXZhaWxhYmlsaXR5
Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIFRlbXBvcmFyaWx5IEVuYWJsaW5nIERpc2Fi
bGVkIFRlc3RzICMjIwotCi1UbyBpbmNsdWRlIFtkaXNhYmxlZCB0ZXN0c10oI3RlbXBvcmFyaWx5
LWRpc2FibGluZy10ZXN0cykgaW4gdGVzdAotZXhlY3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVz
dCBwcm9ncmFtIHdpdGggdGhlCi1gLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0c2AgZmxh
ZyBvciBzZXQgdGhlCi1gR1RFU1RfQUxTT19SVU5fRElTQUJMRURfVEVTVFNgIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIKLXRoYW4gYDBgLiAgWW91IGNhbiBjb21iaW5lIHRo
aXMgd2l0aCB0aGUKLVstLWd0ZXN0XF9maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10
ZXN0cykgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdAotd2hpY2ggZGlzYWJsZWQgdGVzdHMgdG8gcnVu
LgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAx
LjMuMC4KLQotIyMgUmVwZWF0aW5nIHRoZSBUZXN0cyAjIwotCi1PbmNlIGluIGEgd2hpbGUgeW91
J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9zZSByZXN1bHQgaXMgaGl0LW9yLW1pc3MuIFBlcmhhcHMg
aXQKLXdpbGwgZmFpbCBvbmx5IDElIG9mIHRoZSB0aW1lLCBtYWtpbmcgaXQgcmF0aGVyIGhhcmQg
dG8gcmVwcm9kdWNlIHRoZSBidWcgdW5kZXIKLWEgZGVidWdnZXIuIFRoaXMgY2FuIGJlIGEgbWFq
b3Igc291cmNlIG9mIGZydXN0cmF0aW9uLgotCi1UaGUgYC0tZ3Rlc3RfcmVwZWF0YCBmbGFnIGFs
bG93cyB5b3UgdG8gcmVwZWF0IGFsbCAob3Igc2VsZWN0ZWQpIHRlc3QgbWV0aG9kcwotaW4gYSBw
cm9ncmFtIG1hbnkgdGltZXMuIEhvcGVmdWxseSwgYSBmbGFreSB0ZXN0IHdpbGwgZXZlbnR1YWxs
eSBmYWlsIGFuZCBnaXZlCi15b3UgYSBjaGFuY2UgdG8gZGVidWcuIEhlcmUncyBob3cgdG8gdXNl
IGl0OgotCi18IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDBgIHwgUmVwZWF0IGZvb1xf
dGVzdCAxMDAwIHRpbWVzIGFuZCBkb24ndCBzdG9wIGF0IGZhaWx1cmVzLiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0
PS0xYCAgIHwgQSBuZWdhdGl2ZSBjb3VudCBtZWFucyByZXBlYXRpbmcgZm9yZXZlci4gICAgICAg
ICAgICAgICB8Ci18IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9icmVh
a19vbl9mYWlsdXJlYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcywgc3RvcHBpbmcgYXQg
dGhlIGZpcnN0IGZhaWx1cmUuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgd2hlbiBydW5uaW5n
IHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRlc3RmYWlscywgaXQgd2lsbCBkcm9wIGludG8g
dGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4gaW5zcGVjdCB2YXJpYWJsZXMgYW5kIHN0YWNr
cy4gfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfZmlsdGVyPUZv
b0JhcmAgfCBSZXBlYXQgdGhlIHRlc3RzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgZmlsdGVyIDEw
MDAgdGltZXMuIHwKLQotSWYgeW91ciB0ZXN0IHByb2dyYW0gY29udGFpbnMgZ2xvYmFsIHNldC11
cC90ZWFyLWRvd24gY29kZSByZWdpc3RlcmVkCi11c2luZyBgQWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KClgLCBpdCB3aWxsIGJlIHJlcGVhdGVkIGluIGVhY2gKLWl0ZXJhdGlvbiBhcyB3ZWxsLCBh
cyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4gWW91IGNhbiBhbHNvIHNwZWNpZnkKLXRoZSBy
ZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdURVNUX1JFUEVBVGAgZW52aXJvbm1lbnQgdmFy
aWFibGUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBTaHVm
ZmxpbmcgdGhlIFRlc3RzICMjCi0KLVlvdSBjYW4gc3BlY2lmeSB0aGUgYC0tZ3Rlc3Rfc2h1ZmZs
ZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hVRkZMRWAKLWVudmlyb25tZW50IHZhcmlhYmxl
IHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHByb2dyYW0gaW4gYSByYW5kb20KLW9yZGVy
LiBUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGVzdHMuCi0K
LUJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHVzZXMgYSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZy
b20gdGhlIGN1cnJlbnQKLXRpbWUuIFRoZXJlZm9yZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9y
ZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlCi1vdXRwdXQgaW5jbHVkZXMgdGhlIHJhbmRvbSBz
ZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiByZXByb2R1Y2UgYW4KLW9yZGVyLXJlbGF0ZWQg
dGVzdCBmYWlsdXJlIGxhdGVyLiBUbyBzcGVjaWZ5IHRoZSByYW5kb20gc2VlZAotZXhwbGljaXRs
eSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2VlZD1TRUVEYCBmbGFnIChvciBzZXQgdGhlCi1g
R1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50IHZhcmlhYmxlKSwgd2hlcmUgYFNFRURgIGlz
IGFuIGludGVnZXIKLWJldHdlZW4gMCBhbmQgOTk5OTkuIFRoZSBzZWVkIHZhbHVlIDAgaXMgc3Bl
Y2lhbDogaXQgdGVsbHMgR29vZ2xlIFRlc3QKLXRvIGRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9m
IGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhlIGN1cnJlbnQKLXRpbWUuCi0KLUlmIHlvdSBj
b21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBlYXQ9TmAsIEdvb2dsZSBUZXN0IHdpbGwgcGlj
ayBhCi1kaWZmZXJlbnQgcmFuZG9tIHNlZWQgYW5kIHJlLXNodWZmbGUgdGhlIHRlc3RzIGluIGVh
Y2ggaXRlcmF0aW9uLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2lu
Y2UgdjEuNC4wLgotCi0jIyBDb250cm9sbGluZyBUZXN0IE91dHB1dCAjIwotCi1UaGlzIHNlY3Rp
b24gdGVhY2hlcyBob3cgdG8gdHdlYWsgdGhlIHdheSB0ZXN0IHJlc3VsdHMgYXJlIHJlcG9ydGVk
LgotCi0jIyMgQ29sb3JlZCBUZXJtaW5hbCBPdXRwdXQgIyMjCi0KLUdvb2dsZSBUZXN0IGNhbiB1
c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3Bv
dAotdGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0ZXN0cywgYW5kIHdoZXRoZXIgdGVzdHMgcGFzc2Vk
LgotCi1Zb3UgY2FuIHNldCB0aGUgR1RFU1RcX0NPTE9SIGVudmlyb25tZW50IHZhcmlhYmxlIG9y
IHNldCB0aGUgYC0tZ3Rlc3RfY29sb3JgCi1jb21tYW5kIGxpbmUgZmxhZyB0byBgeWVzYCwgYG5v
YCwgb3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8gZW5hYmxlIGNvbG9ycywKLWRpc2FibGUgY29s
b3JzLCBvciBsZXQgR29vZ2xlIFRlc3QgZGVjaWRlLiBXaGVuIHRoZSB2YWx1ZSBpcyBgYXV0b2As
IEdvb2dsZQotVGVzdCB3aWxsIHVzZSBjb2xvcnMgaWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1dCBn
b2VzIHRvIGEgdGVybWluYWwgYW5kIChvbgotbm9uLVdpbmRvd3MgcGxhdGZvcm1zKSB0aGUgYFRF
Uk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byBgeHRlcm1gIG9yCi1geHRlcm0tY29s
b3JgLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIFN1cHBy
ZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUgIyMjCi0KLUJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHBy
aW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4gZWFjaCB0ZXN0LiAgVG8KLXN1cHByZXNzIHRo
YXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlIGAtLWd0ZXN0X3ByaW50X3RpbWU9MGAK
LWNvbW1hbmQgbGluZSBmbGFnLiAgU2V0dGluZyB0aGUgYEdURVNUX1BSSU5UX1RJTUVgIGVudmly
b25tZW50Ci12YXJpYWJsZSB0byBgMGAgaGFzIHRoZSBzYW1lIGVmZmVjdC4KLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICAoSW4gR29vZ2xlIFRlc3QgMS4zLjAgYW5kIGxv
d2VyLAotdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhhdCB0aGUgZWxhcHNlZCB0aW1lIGlzICoq
bm90KiogcHJpbnRlZC4pCi0KLSMjIyBHZW5lcmF0aW5nIGFuIFhNTCBSZXBvcnQgIyMjCi0KLUdv
b2dsZSBUZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQgWE1MIHJlcG9ydCB0byBhIGZpbGUgaW4gYWRk
aXRpb24gdG8gaXRzIG5vcm1hbAotdGV4dHVhbCBvdXRwdXQuIFRoZSByZXBvcnQgY29udGFpbnMg
dGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5kIHRodXMgY2FuCi1oZWxwIHlvdSBpZGVudGlm
eSBzbG93IHRlc3RzLgotCi1UbyBnZW5lcmF0ZSB0aGUgWE1MIHJlcG9ydCwgc2V0IHRoZSBgR1RF
U1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLWAtLWd0ZXN0X291dHB1dGAg
ZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOl9wYXRoX3RvX291dHB1dF9maWxlXyJgLCB3aGljaCB3
aWxsCi1jcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28g
anVzdCB1c2UgdGhlIHN0cmluZwotYCJ4bWwiYCwgaW4gd2hpY2ggY2FzZSB0aGUgb3V0cHV0IGNh
biBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWlsLnhtbGAgZmlsZSBpbgotdGhlIGN1cnJlbnQg
ZGlyZWN0b3J5LgotCi1JZiB5b3Ugc3BlY2lmeSBhIGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUsIGAi
eG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGludXggb3IKLWAieG1sOm91dHB1dFxkaXJlY3Rv
cnlcImAgb24gV2luZG93cyksIEdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIHRoZSBYTUwgZmlsZSBp
bgotdGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVyIHRoZSB0ZXN0IGV4ZWN1dGFibGUgKGUuZy4g
YGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKLXByb2dyYW0gYGZvb190ZXN0YCBvciBgZm9vX3Rlc3Qu
ZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzIChwZXJoYXBzIGxlZnQKLW92ZXIgZnJv
bSBhIHByZXZpb3VzIHJ1biksIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1l
IChlLmcuCi1gZm9vX3Rlc3RfMS54bWxgKSB0byBhdm9pZCBvdmVyd3JpdGluZyBpdC4KLQotVGhl
IHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGhlcmUuICBJdCBpcyBiYXNlZCBvbiB0
aGUKLWBqdW5pdHJlcG9ydGAgQW50IHRhc2sgYW5kIGNhbiBiZSBwYXJzZWQgYnkgcG9wdWxhciBj
b250aW51b3VzIGJ1aWxkCi1zeXN0ZW1zIGxpa2UgW0h1ZHNvbl0oaHR0cHM6Ly9odWRzb24uZGV2
LmphdmEubmV0LykuIFNpbmNlIHRoYXQgZm9ybWF0Ci13YXMgb3JpZ2luYWxseSBpbnRlbmRlZCBm
b3IgSmF2YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRpb24gaXMgcmVxdWlyZWQKLXRvIG1ha2UgaXQg
YXBwbHkgdG8gR29vZ2xlIFRlc3QgdGVzdHMsIGFzIHNob3duIGhlcmU6Ci0KLWBgYAotPHRlc3Rz
dWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJ0ZXN0X2Nhc2Vf
bmFtZSIgLi4uPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJ0ZXN0X25hbWUiIC4uLj4KLSAgICAgIDxm
YWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+Ci0g
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KLSAgICA8L3Rlc3RjYXNlPgotICA8L3Rlc3Rz
dWl0ZT4KLTwvdGVzdHN1aXRlcz4KLWBgYAotCi0gICogVGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAg
ZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbS4KLSAgKiBgPHRl
c3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBjYXNlcy4K
LSAgKiBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0
IGZ1bmN0aW9ucy4KLQotRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0KLQotYGBg
Ci1URVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAuLi4gfQotVEVTVChNYXRoVGVzdCwgU3VidHJh
Y3Rpb24pIHsgLi4uIH0KLVRFU1QoTG9naWNUZXN0LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9
Ci1gYGAKLQotY291bGQgZ2VuZXJhdGUgdGhpcyByZXBvcnQ6Ci0KLWBgYAotPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJl
cz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIzNSIgbmFtZT0iQWxsVGVzdHMiPgotICA8dGVzdHN1aXRl
IG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFpbHVyZXM9IjEiKiBlcnJvcnM9IjAiIHRpbWU9
IjE1Ij4KLSAgICA8dGVzdGNhc2UgbmFtZT0iQWRkaXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI3
IiBjbGFzc25hbWU9IiI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEs
IDEpJiN4MEE7IEFjdHVhbDogMyYjeDBBO0V4cGVjdGVkOiAyIiB0eXBlPSIiLz4KLSAgICAgIDxm
YWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgLTEpJiN4MEE7IEFjdHVhbDogMSYjeDBB
O0V4cGVjdGVkOiAwIiB0eXBlPSIiLz4KLSAgICA8L3Rlc3RjYXNlPgotICAgIDx0ZXN0Y2FzZSBu
YW1lPSJTdWJ0cmFjdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0iIj4KLSAg
ICA8L3Rlc3RjYXNlPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rl
c3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZXJyb3JzPSIwIiB0aW1lPSI1Ij4KLSAgICA8dGVz
dGNhc2UgbmFtZT0iTm9uQ29udHJhZGljdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNz
bmFtZT0iIj4KLSAgICA8L3Rlc3RjYXNlPgotICA8L3Rlc3RzdWl0ZT4KLTwvdGVzdHN1aXRlcz4K
LWBgYAotCi1UaGluZ3MgdG8gbm90ZToKLQotICAqIFRoZSBgdGVzdHNgIGF0dHJpYnV0ZSBvZiBh
IGA8dGVzdHN1aXRlcz5gIG9yIGA8dGVzdHN1aXRlPmAgZWxlbWVudCB0ZWxscyBob3cgbWFueSB0
ZXN0IGZ1bmN0aW9ucyB0aGUgR29vZ2xlIFRlc3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFp
bnMsIHdoaWxlIHRoZSBgZmFpbHVyZXNgIGF0dHJpYnV0ZSB0ZWxscyBob3cgbWFueSBvZiB0aGVt
IGZhaWxlZC4KLSAgKiBUaGUgYHRpbWVgIGF0dHJpYnV0ZSBleHByZXNzZXMgdGhlIGR1cmF0aW9u
IG9mIHRoZSB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGVudGlyZSB0ZXN0IHByb2dyYW0gaW4gbWlsbGlz
ZWNvbmRzLgotICAqIEVhY2ggYDxmYWlsdXJlPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNp
bmdsZSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgotICAqIFNvbWUgSlVuaXQgY29uY2Vw
dHMgZG9uJ3QgYXBwbHkgdG8gR29vZ2xlIFRlc3QsIHlldCB3ZSBoYXZlIHRvIGNvbmZvcm0gdG8g
dGhlIERURC4gVGhlcmVmb3JlIHlvdSdsbCBzZWUgc29tZSBkdW1teSBlbGVtZW50cyBhbmQgYXR0
cmlidXRlcyBpbiB0aGUgcmVwb3J0LiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlc2UgcGFydHMu
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBDb250cm9sbGlu
ZyBIb3cgRmFpbHVyZXMgQXJlIFJlcG9ydGVkICMjCi0KLSMjIyBUdXJuaW5nIEFzc2VydGlvbiBG
YWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50cyAjIyMKLQotV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3Jh
bXMgdW5kZXIgYSBkZWJ1Z2dlciwgaXQncyB2ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCi1kZWJ1Z2dl
ciBjYW4gY2F0Y2ggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBp
bnRvIGludGVyYWN0aXZlCi1tb2RlLiBHb29nbGUgVGVzdCdzIF9icmVhay1vbi1mYWlsdXJlXyBt
b2RlIHN1cHBvcnRzIHRoaXMgYmVoYXZpb3IuCi0KLVRvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RF
U1RfQlJFQUtfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZQotb3Ro
ZXIgdGhhbiBgMGAgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZWAKLWNvbW1hbmQgbGluZSBmbGFnLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIFN1cHByZXNzaW5nIFBvcC11cHMgQ2F1c2VkIGJ5IEV4
Y2VwdGlvbnMgIyMjCi0KLU9uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IG1heSBiZSB1c2VkIHdpdGgg
ZXhjZXB0aW9ucyBlbmFibGVkLiBFdmVuIHdoZW4KLWV4Y2VwdGlvbnMgYXJlIGRpc2FibGVkLCBh
biBhcHBsaWNhdGlvbiBjYW4gc3RpbGwgdGhyb3cgc3RydWN0dXJlZCBleGNlcHRpb25zCi0oU0VI
J3MpLiBJZiBhIHRlc3QgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYnkgZGVmYXVsdCBHb29nbGUgVGVz
dCBkb2Vzbid0IHRyeSB0bwotY2F0Y2ggaXQuIEluc3RlYWQsIHlvdSdsbCBzZWUgYSBwb3AtdXAg
ZGlhbG9nLCBhdCB3aGljaCBwb2ludCB5b3UgY2FuIGF0dGFjaAotdGhlIHByb2Nlc3MgdG8gYSBk
ZWJ1Z2dlciBhbmQgZWFzaWx5IGZpbmQgb3V0IHdoYXQgd2VudCB3cm9uZy4KLQotSG93ZXZlciwg
aWYgeW91IGRvbid0IHdhbnQgdG8gc2VlIHRoZSBwb3AtdXBzIChmb3IgZXhhbXBsZSwgaWYgeW91
IHJ1biB0aGUKLXRlc3RzIGluIGEgYmF0Y2ggam9iKSwgc2V0IHRoZSBgR1RFU1RfQ0FUQ0hfRVhD
RVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8KLWEgbm9uLSBgMGAgdmFsdWUsIG9yIHVz
ZSB0aGUgYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc2AgZmxhZy4gR29vZ2xlIFRlc3Qgbm93Ci1j
YXRjaGVzIGFsbCB0ZXN0LXRocm93biBleGNlcHRpb25zIGFuZCBsb2dzIHRoZW0gYXMgZmFpbHVy
ZXMuCi0KLV9BdmFpbGFiaWxpdHk6XyBXaW5kb3dzLiBgR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2Ag
YW5kCi1gLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zYCBoYXZlIG5vIGVmZmVjdCBvbiBHb29nbGUg
VGVzdCdzIGJlaGF2aW9yIG9uIExpbnV4IG9yCi1NYWMsIGV2ZW4gaWYgZXhjZXB0aW9ucyBhcmUg
ZW5hYmxlZC4gSXQgaXMgcG9zc2libGUgdG8gYWRkIHN1cHBvcnQgZm9yIGNhdGNoaW5nCi1leGNl
cHRpb25zIG9uIHRoZXNlIHBsYXRmb3JtcywgYnV0IGl0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQu
Ci0KLSMjIyBMZXR0aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsgRHJpdmUgIyMjCi0KLUlm
IHlvdSB3b3JrIG9uIGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNpbmcgYW5vdGhl
ciB0ZXN0aW5nCi1mcmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBjb21wbGV0ZWx5IHN3aXRj
aCB0byBHb29nbGUgVGVzdCB5ZXQsCi15b3UgY2FuIGdldCBtdWNoIG9mIEdvb2dsZSBUZXN0J3Mg
YmVuZWZpdCBieSB1c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoteW91ciBleGlzdGluZyB0ZXN0cy4g
IEp1c3QgY2hhbmdlIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9vawotbGlrZToKLQotYGBg
Ci0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7Ci0gIDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7
Ci0gIC8vIEltcG9ydGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0aWFsaXplZC4KLSAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLi4uIHdoYXRldmVyIHlv
dXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCi19Ci1gYGAKLQotV2l0
aCB0aGF0LCB5b3UgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGFkZGl0aW9uIHRv
IHRoZQotbmF0aXZlIGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm92aWRlcywg
Zm9yIGV4YW1wbGU6Ci0KLWBgYAotdm9pZCBUZXN0Rm9vRG9lc0JhcigpIHsKLSAgRm9vIGZvbzsK
LSAgRVhQRUNUX0xFKGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbi4KLSAgQ1BQVU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAvLyBBIG5hdGl2ZSBhc3Nl
cnRpb24uCi19Ci1gYGAKLQotSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHMsIGl0IHdp
bGwgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQKLXRocm93IGFuIGV4Y2VwdGlvbiwgd2hpY2gg
d2lsbCBiZSB0cmVhdGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QKLXRlc3RpbmcgZnJhbWV3
b3JrLiAgSWYgeW91IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZCwK
LWEgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3RlYWQgZXhpdCB5b3VyIHBy
b2dyYW0gd2l0aCBhCi1ub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFsc28gc2lnbmFsIGEgdGVz
dCBmYWlsdXJlIHRvIHlvdXIgdGVzdAotcnVubmVyLgotCi1JZiB5b3UgZG9uJ3Qgd3JpdGUgYDo6
dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7YCBpbgoteW91ciBg
bWFpbigpYCwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlzIGZlYXR1cmUgYnkgc3Bl
Y2lmeWluZwotdGhlIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZsYWcgb24gdGhlIGNvbW1h
bmQtbGluZSBvciBzZXR0aW5nIHRoZQotYEdURVNUX1RIUk9XX09OX0ZBSUxVUkVgIGVudmlyb25t
ZW50IHZhcmlhYmxlIHRvIGEgbm9uLXplcm8gdmFsdWUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS4zLjAuCi0KLSMjIERpc3RyaWJ1dGluZyBUZXN0IEZ1
bmN0aW9ucyB0byBNdWx0aXBsZSBNYWNoaW5lcyAjIwotCi1JZiB5b3UgaGF2ZSBtb3JlIHRoYW4g
b25lIG1hY2hpbmUgeW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoteW91IG1pZ2h0
IHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0IHRoZQot
cmVzdWx0IGZhc3Rlci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywgd2hlcmUg
ZWFjaCBtYWNoaW5lCi1pcyBjYWxsZWQgYSBfc2hhcmRfLgotCi1Hb29nbGUgVGVzdCBpcyBjb21w
YXRpYmxlIHdpdGggdGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCi10aGlzIGZl
YXR1cmUsIHlvdXIgdGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBuZWVkcyB0
byBkbwotdGhlIGZvbGxvd2luZzoKLQotICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBtYWNoaW5l
cyAoc2hhcmRzKSB0byBydW4gdGhlIHRlc3RzLgotICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhl
IGBHVEVTVF9UT1RBTF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0b3RhbCBu
dW1iZXIgb2Ygc2hhcmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJkcy4KLSAg
MS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmlyb25tZW50
IHZhcmlhYmxlIHRvIHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hhcmRzIG11
c3QgYmUgYXNzaWduZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4gdGhlIHJh
bmdlIGBbMCwgR1RFU1RfVE9UQUxfU0hBUkRTIC0gMV1gLgotICAxLiBSdW4gdGhlIHNhbWUgdGVz
dCBwcm9ncmFtIG9uIGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhlIGFib3Zl
IHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0IG9mIHRo
ZSB0ZXN0IGZ1bmN0aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0ZXN0IGZ1
bmN0aW9uIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KLSAgMS4gV2Fp
dCBmb3IgYWxsIHNoYXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0IHRoZSBy
ZXN1bHRzLgotCi1Zb3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdyaXR0ZW4g
d2l0aG91dCBHb29nbGUgVGVzdCBhbmQKLXRodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIHByb3Rv
Y29sLiAgSW4gb3JkZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KLWZpZ3VyZSBvdXQgd2hpY2gg
dGVzdCBzdXBwb3J0cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQKLXZhcmlh
YmxlIGBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBwYXRo
LiAgSWYgYQotdGVzdCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNyZWF0ZSB0
aGlzIGZpbGUgdG8KLWFja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRlbnRzIG9m
IHRoZSBmaWxlIGFyZSBub3QKLWltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdoIHdlIG1h
eSBzdGljayBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbgotaW4gaXQgaW4gdGhlIGZ1dHVyZS4pOyBv
dGhlcndpc2UgaXQgd2lsbCBub3QgY3JlYXRlIGl0LgotCi1IZXJlJ3MgYW4gZXhhbXBsZSB0byBt
YWtlIGl0IGNsZWFyLiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQotYGZvb190ZXN0
YCB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKLWBgYAotVEVT
VChBLCBWKQotVEVTVChBLCBXKQotVEVTVChCLCBYKQotVEVTVChCLCBZKQotVEVTVChCLCBaKQot
YGBgCi1hbmQgeW91IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8gcnVuIHRo
ZSB0ZXN0IGZ1bmN0aW9ucyBpbgotcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNUX1RPVEFM
X1NIQVJEU2AgdG8gMyBvbiBhbGwgbWFjaGluZXMsIGFuZAotc2V0IGBHVEVTVF9TSEFSRF9JTkRF
WGAgdG8gMCwgMSwgYW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KLVRoZW4geW91
IHdvdWxkIHJ1biB0aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KLQotR29vZ2xl
IFRlc3QgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMgZGlzdHJp
YnV0ZWQKLWFjcm9zcyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBzY2VuYXJp
bzoKLQotICAqIE1hY2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCi0gICogTWFjaGluZSAj
MSBydW5zIGBBLldgIGFuZCBgQi5ZYC4KLSAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAuCi0KLV9B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgot
Ci0jIEZ1c2luZyBHb29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIwotCi1Hb29nbGUgVGVzdCdzIGlt
cGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBvd24KLXRl
c3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbiB0
d28gZmlsZXMgKGEKLWAuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2Fu
IGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhl
cmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAotUHl0aG9uIHNjcmlwdCBg
ZnVzZV9ndGVzdF9maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChzaW5jZSBy
ZWxlYXNlIDEuMy4wKS4KLUFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUgaW5z
dGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdAotZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1
bgotYGBgCi1weXRob24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCi1gYGAKLQotYW5k
IHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3
aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2NgIGluIGl0
LiAgVGhlc2UgZmlsZXMgY29udGFpbgotZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xl
IFRlc3QuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoteW91IHdhbnQgYW5kIHlvdSBhcmUg
cmVhZHkgdG8gd3JpdGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKLVtzY3JwdHMvdGVzdC9NYWtl
ZmlsZV0oLi4vc2NyaXB0cy90ZXN0L01ha2VmaWxlKQotZmlsZSBhcyBhbiBleGFtcGxlIG9uIGhv
dyB0byBjb21waWxlIHlvdXIgdGVzdHMgYWdhaW5zdCB0aGVtLgotCi0jIFdoZXJlIHRvIEdvIGZy
b20gSGVyZSAjCi0KLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIG5vdyBsZWFybmVkIG1vcmUgYWR2
YW5jZWQgR29vZ2xlIFRlc3QgdG9vbHMgYW5kIGFyZQotcmVhZHkgdG8gdGFja2xlIG1vcmUgY29t
cGxleCB0ZXN0aW5nIHRhc2tzLiBJZiB5b3Ugd2FudCB0byBkaXZlIGV2ZW4gZGVlcGVyLCB5b3UK
LWNhbiByZWFkIHRoZSBbRkFRXShWMV81X0ZBUS5tZCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL1YxXzVfRG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Eb2N1
bWVudGF0aW9uLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmJiYTJlYzg2ZTZj
NmE0ODFiZGJlYWE1YWYxY2ZkYmVlM2FmYTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Eb2N1bWVudGF0aW9uLm1k
CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyBwYWdlIGxpc3RzIGFsbCBvZmZp
Y2lhbCBkb2N1bWVudGF0aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqMS41LjAqKiAt
LSAqKmlmIHlvdSB1c2UgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgbWFrZSBz
dXJlIHRvIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLioq
Ci0KLSAgKiBbUHJpbWVyXShWMV81X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJl
IG5ldyB0byBHb29nbGUgVGVzdC4KLSAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4g
ZnJvbSBleGFtcGxlcy4KLSAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1k
KSAtLSBsZWFybiBtb3JlIGFib3V0IEdvb2dsZSBUZXN0LgotICAqIFtYY29kZUd1aWRlXShWMV81
X1hjb2RlR3VpZGUubWQpIC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFj
LgotICAqIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfNV9GQVEubWQpIC0tIGNoZWNr
IGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCi0KLVRv
IGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKLQotICAqIERldkd1aWRlIC0t
IHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICogW1B1bXBN
YW51YWxdKFYxXzVfUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29v
Z2xlIFRlc3QncyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3Mv
VjFfNV9GQVEubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzBhZmYwMDA3ZjJj
NmEyYzUzZmZhYzIxYmUwYWUwNTFkMjQzZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0ZBUS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDg4NiArMCwwIEBACi0KLQotSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIg
dG8geW91ciBxdWVzdGlvbiBoZXJlLCBhbmQgeW91IGhhdmUgcmVhZAotW1ByaW1lcl0oVjFfNV9Q
cmltZXIubWQpIGFuZCBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSwgc2Vu
ZCBpdCB0bwotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgotCi0jIyBXaHkg
c2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRlc3Rp
bmcgZnJhbWV3b3JrPyAjIwotCi1GaXJzdCwgbGV0J3Mgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24n
dCB3YW50IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKLXdoaWNoIEMrKyB0ZXN0aW5nIGZyYW1l
d29yayBpcyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBtYW55IGZpbmUKLWZyYW1ld29ya3Mg
Zm9yIHdyaXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9y
Ci10aGUgZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJl
IGlzIChvciB3aWxsCi1iZSkgYSBzaW5nbGUgYmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBw
aWNrIHRoZSByaWdodCB0b29sIGZvciB0aGUKLXBhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2ts
aW5nLgotCi1XZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0
aGUgcmlnaHQgY29tYmluYXRpb24KLW9mIGZlYXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4g
ZXhpc3RpbmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8KLW5lZWRzLiAgVGhlIGZvbGxvd2lu
ZyBpcyBhIGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtlIGFib3V0IEdvb2dsZQotVGVzdC4g
IFdlIGRvbid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVy
LCB0aGUKLWNvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBm
b3IgdXMuICBXZSBob3BlIHRoaXMKLWxpc3QgY2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0
IGlzIGZvciB5b3UgdG9vLgotCi0gICogR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9y
dGFibGUuICBJdCB3b3JrcyB3aGVyZSBtYW55IFNUTCB0eXBlcyAoZS5nLiBgc3RkOjpzdHJpbmdg
IGFuZCBgc3RkOjp2ZWN0b3JgKSBkb24ndCBjb21waWxlLiAgSXQgZG9lc24ndCByZXF1aXJlIGV4
Y2VwdGlvbnMgb3IgUlRUSS4gIEFzIGEgcmVzdWx0LCBpdCBydW5zIG9uIExpbnV4LCBNYWMgT1Mg
WCwgV2luZG93cyBhbmQgc2V2ZXJhbCBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcy4KLSAgKiBO
b25mYXRhbCBhc3NlcnRpb25zIChgRVhQRUNUXypgKSBoYXZlIHByb3ZlbiB0byBiZSBncmVhdCB0
aW1lIHNhdmVycywgYXMgdGhleSBhbGxvdyBhIHRlc3QgdG8gcmVwb3J0IG11bHRpcGxlIGZhaWx1
cmVzIGluIGEgc2luZ2xlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlLgotICAqIEl0J3MgZWFzeSB0
byB3cml0ZSBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXM6IHlv
dSBqdXN0IHVzZSB0aGUgc3RyZWFtIHN5bnRheCB0byBhcHBlbmQgYW55IGFkZGl0aW9uYWwgaW5m
b3JtYXRpb24sIGUuZy4gYEFTU0VSVF9FUSg1LCBGb28oaSkpIDw8ICIgd2hlcmUgaSA9ICIgPDwg
aTtgLiAgSXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IHNldCBvZiBtYWNyb3Mgb3Igc3BlY2lhbCBm
dW5jdGlvbnMuCi0gICogR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgdGVz
dHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8g
cnVuIHRoZW0uCi0gICogTm8gZnJhbWV3b3JrIGNhbiBhbnRpY2lwYXRlIGFsbCB5b3VyIG5lZWRz
LCBzbyBHb29nbGUgVGVzdCBwcm92aWRlcyBgRVhQRUNUX1BSRUQqYCB0byBtYWtlIGl0IGVhc3kg
dG8gZXh0ZW5kIHlvdXIgYXNzZXJ0aW9uIHZvY2FidWxhcnkuICBGb3IgYSBuaWNlciBzeW50YXgs
IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIGFzc2VydGlvbiBtYWNyb3MgdHJpdmlhbGx5IGluIHRl
cm1zIG9mIGBFWFBFQ1RfUFJFRCpgLgotICAqIERlYXRoIHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkg
Zm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGluIHByb2R1Y3Rpb24gY29kZSBhcmUgdHJp
Z2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgotICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBz
IHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4g
aXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGluZSBvciBsb29wLgotICAqIFlvdSBjYW4g
ZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBuYW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZl
cyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSByZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUu
Ci0KLSMjIEhvdyBkbyBJIGdlbmVyYXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1c2lu
ZyBWaXN1YWwgU3R1ZGlvIDIwMDgpPyAjIwotCi0oQW5zd2VyZWQgYnkgVHJldm9yIFJvYmluc29u
KQotCi1Mb2FkIHRoZSBzdXBwbGllZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVpdGhl
ciBgbXN2Y1xndGVzdC1tZC5zbG5gIG9yCi1gbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdoIHRo
ZSBtaWdyYXRpb24gd2l6YXJkIHRvIG1pZ3JhdGUgdGhlCi1zb2x1dGlvbiBhbmQgcHJvamVjdCBm
aWxlcyB0byBWaXN1YWwgU3R1ZGlvIDIwMDguIFNlbGVjdAotYENvbmZpZ3VyYXRpb24gTWFuYWdl
ci4uLmAgZnJvbSB0aGUgYEJ1aWxkYCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCi10aGUg
YEFjdGl2ZSBzb2x1dGlvbiBwbGF0Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJvbSB0
aGUgbmV3Ci1wbGF0Zm9ybSBkcm9wZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAgc2V0
IHRvIGBXaW4zMmAgYW5kCi1gQ3JlYXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tlZCwg
dGhlbiBjbGljayBgT0tgLiBZb3Ugbm93IGhhdmUKLWBXaW4zMmAgYW5kIGB4NjRgIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLCBzZWxlY3RhYmxlIGZyb20gdGhlCi1gU3RhbmRhcmRgIHRvb2xiYXIs
IHdoaWNoIGFsbG93IHlvdSB0byB0b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IKLTY0
LWJpdCBiaW5hcmllcyAob3IgYm90aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KLQotSW4g
b3JkZXIgdG8gcHJldmVudCBidWlsZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBvbmUg
YW5vdGhlciwKLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJlY3Rv
cnlgIHNldHRpbmdzIGZvciB0aGUKLW5ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJhdGlv
biBhY3Jvc3MgYWxsIHRoZSBwcm9qZWN0cy4gVG8gZG8KLXRoaXMsIG11bHRpLXNlbGVjdCAoZS5n
LiB1c2luZyBzaGlmdC1jbGljaykgYWxsIHByb2plY3RzIChidXQgbm90IHRoZQotc29sdXRpb24p
IGluIHRoZSBgU29sdXRpb24gRXhwbG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBhbmQK
LXNlbGVjdCBgUHJvcGVydGllc2AuIEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmlndXJh
dGlvbiBQcm9wZXJ0aWVzYCwKLWFuZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRvd24s
IHNlbGVjdCBgQWxsIENvbmZpZ3VyYXRpb25zYC4KLU1ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgcGxh
dGZvcm0gaXMgYHg2NGAuIEZvciB0aGUKLWBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5n
LCBjaGFuZ2UgdGhlIHZhbHVlIGZyb20KLWAkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9u
TmFtZSlgIHRvCi1gJChPdXREaXIpXCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQgdGhl
biBidWlsZCB0aGUKLXNvbHV0aW9uLiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhlIDY0
LWJpdCBiaW5hcmllcyB3aWxsIGJlIGluCi10aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3Rvcnku
Ci0KLSMjIENhbiBJIHVzZSBHb29nbGUgVGVzdCBvbiBNaW5HVz8gIyMKLQotV2UgaGF2ZW4ndCB0
ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMsIGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0IGhl
Ci13YXMgYWJsZSB0byBjb21waWxlIGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3NmdWxs
eSB3aGVuIHVzaW5nCi1NaW5HVyBmcm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZpZ3Vy
ZSBpdCB3aXRoOgotCi1gUEFUSC9UTy9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIgQ1hY
PSJnKysgLW1uby1jeWd3aW4iYAotCi1Zb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGUg
YC1tbm8tY3lnd2luYCBvcHRpb24gd2l0aCBkaXJlY3QgbGlua3MKLXRvIHRoZSByZWFsIE1pbkdX
IGJpbmFyaWVzLCBidXQgd2UgaGF2ZW4ndCB0cmllZCB0aGF0LgotCi1DYXZlYXRzOgotCi0gICog
VGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcuCi0gICogYG1ha2UgY2hlY2tg
IHdpbGwgcHJvZHVjZSBzb21lIGVycm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVz
dCBpdHNlbGYgYXJlIGNvbXBhdGlibGUgd2l0aCBNaW5HVy4KLQotV2UgYWxzbyBoYXZlIHJlcG9y
dHMgb24gc3VjY2Vzc2Z1bCBjcm9zcyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdCBNaW5HVyBi
aW5hcmllcyBvbiBMaW51eCB1c2luZyBbdGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lraS53
eHdpZGdldHMub3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxpbmdf
dW5kZXJfTGludXhfZm9yX01TX1dpbmRvd3MpIG9uIHRoZSBXeFdpZGdldHMgc2l0ZS4KLQotUGxl
YXNlIGNvbnRhY3QgYGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYgeW91
IGFyZQotaW50ZXJlc3RlZCBpbiBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdXLgotCi0j
IyBXaHkgZG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRyKSBhbmQg
QVNTRVJUXF9FUShOVUxMLCBwdHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIpIGFuZCBB
U1NFUlRcX05FKE5VTEwsIHB0cik/ICMjCi0KLUR1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMr
KywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQotbWV0YSBwcm9ncmFtbWlu
ZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlCi1g
RVhQRUNUX1hYKClgIGFuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkg
ZG8gaXQgd2hlcmUKLWl0J3MgbW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdAotaGFyZGVyIHRvIG1haW50YWluIGFuZCBtb3JlIGVy
cm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KLQotVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8gdGFr
ZXMgdGhlIF9leHBlY3RlZF8gdmFsdWUgYXMgaXRzIGZpcnN0Ci1hcmd1bWVudCBhbmQgdGhlIF9h
Y3R1YWxfIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Ci1zb21lb25l
IHdhbnRzIHRvIHdyaXRlIGBFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFuZCB0
aGlzCi1pbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUgd2UgaW1w
bGVtZW50ZWQgaXQuCi0KLVRoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlzbid0
IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlCi1hc3NlcnRpb24gZmFpbHMsIHlvdSBhbHJlYWR5
IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQKLWRvZXNuJ3QgYWRkIGFueSBp
bmZvcm1hdGlvbiB0byBwcmludCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCi1gRVhQRUNU
X1RSVUUocHRyICEgTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KLQotSWYgd2Ugd2VyZSB0byBz
dXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSdsbAotaGF2
ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5saWtlIGBF
WFBFQ1RfRVFgLAotd2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhlIG9yZGVyIG9mIHRo
ZSB0d28gYXJndW1lbnRzIGZvcgotYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcgdGhlIHRl
bXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCi10d2ljZSBpbiB0aGUgaW1wbGVtZW50YXRp
b24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAotbWFpbnRhaW4uIFdl
IGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0LgotCi1GaW5hbGx5
LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0oLi4vLi4vQ29va0Jv
b2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgbGlicmFyeSwg
d2UgYXJlCi1lbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBFWFBFQ1RfVEhB
VCh2YWx1ZSwgbWF0Y2hlcilgCi1zeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4gT25lIHNpZ25p
ZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgotYXBwcm9hY2ggaXMgdGhhdCBtYXRjaGVy
cyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAotd2hpbGUgdGhl
IGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Ci1jb21iaW5lZC4gVGhl
cmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRoYW4gaW4gdGhl
Ci1gRVhQRUNUX1hYKClgIG1hY3Jvcy4KLQotIyMgRG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IHJ1
bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCi0KLVRlc3QgcnVubmVycyB0ZW5kIHRvIGJlIHRp
Z2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0Ci1lbnZpcm9ubWVudCwgYW5kIEdvb2ds
ZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCi1ydW5uaW5nIHRlc3Rz
IGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUgVGVzdCB3b3Jr
Ci1uaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xlIFRlc3QncyBY
TUwgcmVwb3J0Ci1jb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3QsIGFuZCBpdHMg
YGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAotYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2FuIGJlIHVzZWQg
Zm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKLW1ldGhvZHMgaW50byBtdWx0aXBs
ZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhlCi10ZXN0IHJ1
bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgotCi0jIyBXaHkgZG9uJ3QgR29vZ2xlIFRl
c3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0aGluZ3MgdXA/
ICMjCi0KLUl0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUuICBNb3N0IHRl
c3RzIGFyZSBub3Qgd3JpdHRlbgotd2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQsIGFuZCB0aHVz
IG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQotbXVsdGktdGhyZWFkZWQgc2V0dGluZy4KLQot
SWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtlIHlvdXIgY29k
ZSB3b3JrIHdoZW4KLXlvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcuICBJdCdz
IG11Y2ggaGFyZGVyLCBhbmQKLXNvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRvIG1ha2UgeW91
ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdwotd2hhdCBvdGhlciB0aHJlYWRzIGFyZSBk
b2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAotZGVsZXRlZCwg
b3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlvdSB3YW50IHRv
IHJ1bgotdGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRoZW0gaW4gZGlm
ZmVyZW50IHByb2Nlc3Nlcy4KLQotIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBhc3NlcnRpb25z
IGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCi0KLU91ciBvcmlnaW5hbCBtb3RpdmF0
aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0cwotdGhhdCBk
aXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0aW9uYWwgYmVu
ZWZpdHMKLW9mIHRoaXMgYXBwcm9hY2g6Ci0KLSAgMS4gVGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9y
IGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0aW9ucyBtZWFu
cyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRlc3RydWN0b3Jz
LgotICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29udGludWUgZXZl
biBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGluIGEgYFRFU1Rg
IHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVsYXIgZmVhdHVy
ZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3VhbGx5IHF1aXRl
IGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhpbmcgYXQgYSB0
aW1lIGlzIGEgYmxlc3NpbmcuCi0gIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxlbWVudGVkIHVz
aW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWlsdXJlIGlmIGl0
J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKLWBgYAotdHJ5IHsgLi4uIEFTU0VSVF9UUlVFKC4uLikg
Li4uIH0KLWNhdGNoICguLi4pIHsgLi4uIH0KLWBgYAotVGhlIGFib3ZlIGNvZGUgd2lsbCBwYXNz
IGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQncyB1bmxpa2VseSBm
b3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3NzaWJsZSB0byBydW4g
aW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBpbiBjYWxsYmFja3Mg
dGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCi0KLVRoZSBkb3duc2lkZSBv
ZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGltcGxlbWVudGVkCi11
c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBub3Qg
dGhlIGN1cnJlbnQKLWBURVNUYC4KLQotIyMgV2h5IGRvIHdlIHVzZSB0d28gZGlmZmVyZW50IG1h
Y3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMKLQotVW5mb3J0dW5h
dGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8gdXNlIHRoZSBzYW1l
Ci1tYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0byBwcm92aWRlIG9u
bHkgb25lIG1hY3JvCi1mb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJlcXVpcmUgdGhlIHVz
ZXIgdG8gZGVmaW5lIGFuIGVtcHR5Ci1maXh0dXJlIHNvbWV0aW1lczoKLQotYGBgCi1jbGFzcyBG
b29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotVEVTVF9GKEZvb1Rlc3QsIERv
ZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLW9yCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUZXN0IEZv
b1Rlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQotYGBgCi0KLVlldCwg
bWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4gOi0pIE91ciBnb2Fs
IHdhcyB0bwotbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywgc28gd2UgdHJpZWQg
dG8gbWFrZSBzaW1wbGUgdGVzdHMKLXRyaXZpYWwgdG8gY3JlYXRlLiAgVGhhdCBtZWFucyB1c2lu
ZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgotCi1XZSB0aGluayBuZWl0aGVyIGFw
cHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29uYWJsZS4KLUluIHRo
ZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVyIHdheS4KLQotIyMg
V2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMjCi0KLVdlIGxpa2Ug
dG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZlIGRhdGEuICBUaGlz
Ci1kaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMgZ29vZCBmb3IgZG9j
dW1lbnRpbmcgdGhlCi1pbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBTaW5jZSB0ZXN0IGZp
eHR1cmVzIGhhdmUgbG9naWMgbGlrZQotYFNldFVwKClgIGFuZCBgVGVhckRvd24oKWAsIHRoZXkg
YXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCi0KLSMjIFdoeSBhcmUgZGVhdGggdGVzdHMg
aW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEgdGVzdCBydW5uZXI/
ICMjCi0KLU91ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNvbnZlbmllbnQgZm9y
IGEgdXNlciBhcyBDKysKLXBvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3VsYXI6Ci0KLSAgKiBU
aGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1hdGlvbiBpbnRvIHR3
byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0c2VsZiwgYW5kIHRo
ZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4gdGhlIGRlYXRoIHRl
c3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQgYmUgd3JpdHRlbiBp
biBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBiZS4gIEEgdXNlciBu
ZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NFUlRfREVBVEgoc3Rh
dGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNlc3NhcnkgaW5mb3Jt
YXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQgYm9pbGVycGxhdGUg
Y29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KLSAgKiBgQVNTRVJUX0RFQVRIYCBoYXMgYSBz
aW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBhcyBvdGhlciBHb29n
bGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJuLgotICAqIGBBU1NF
UlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMgYW5kIG90aGVyIGxv
Z2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25lIGRlYXRoIHRlc3Qg
cGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBzb21ldGhpbmcgbGlr
ZToKLWBgYAotICAgIGlmIChGb29Db25kaXRpb24oKSkgewotICAgICAgQVNTRVJUX0RFQVRIKEJh
cigpLCAiYmxhaCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBBU1NFUlRfRVEoNSwgQmFyKCkpOwot
ICAgIH0KLWBgYAotSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2Qs
IHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywgYnV0IHdlIGRvbid0
IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2VyIGFydGlmaWNpYWwg
bGltaXRhdGlvbnMgdGhlIGJldHRlci4KLSAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gcmVmZXJlbmNl
IGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5kIHlvdSBjYW4gZGVj
aWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1bi10aW1lIGluZm9y
bWF0aW9uLiAgRm9yIGV4YW1wbGUsCi1gYGAKLSAgICBjb25zdCBpbnQgY291bnQgPSBHZXRDb3Vu
dCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KLSAgICBmb3IgKGludCBpID0gMTsgaSA8
PSBjb3VudDsgaSsrKSB7Ci0gICAgICBBU1NFUlRfREVBVEgoewotICAgICAgICBkb3VibGUqIGJ1
ZmZlciA9IG5ldyBkb3VibGVbaV07Ci0gICAgICAgIC4uLiBpbml0aWFsaXplcyBidWZmZXIgLi4u
Ci0gICAgICAgIEZvbyhidWZmZXIsIGkpCi0gICAgICB9LCAiYmxhaCBibGFoIik7Ci0gICAgfQot
YGBgCi1UaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1vcmUgc3RhdGljIGFu
ZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0IHRvIGdldCB0aGlz
IGtpbmQgb2YgZmxleGliaWxpdHkuCi0KLUFub3RoZXIgaW50ZXJlc3RpbmcgdGhpbmcgYWJvdXQg
YEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAotdG8gY3JlYXRlIGEgY2hp
bGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxpZ2h0ZW5pbmcKLWZh
c3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQgaW5jdXJzIGFsbW9z
dCB6ZXJvCi1vdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBmcm9tIHRoZSB1
c2VyLXN1cHBsaWVkCi1zdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFsbCBnbG9iYWwgYW5k
IGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAotYW55IGNvZGUgbGVhZGluZyB0byB0aGUgZ2l2ZW4g
c3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKLXByb2Nlc3MgZnJvbSBzY3JhdGNo
LCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5nIGFuZAotc3RhcnQg
cnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBkeW5hbWljYWxseS4K
LQotIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQgdGhlIGNoYW5nZSBz
ZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/ICMjCi0KLURlYXRo
IHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4gYSBzdWItcHJvY2Vz
cyBzLnQuIHRoZQotZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVzdCBwcm9ncmFtIChp
LmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKLXJlc3VsdCwgYW55IGluLW1lbW9yeSBzaWRl
IGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgotcmVzcGVjdGl2ZSBz
dWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNhbiB0aGlu
ayBvZiB0aGVtCi1hcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2UsIG1vcmUgb3IgbGVz
cy4KLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZpbmVkIHJlZmVyZW5j
ZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1dCBJIGRpZCBkZWZp
bmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIwotCi1JZiB5b3VyIGNs
YXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKLQotYGBgCi0vLyBmb28uaAotY2xhc3MgRm9v
IHsKLSAgLi4uCi0gIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKLX07Ci1gYGAKLQotWW91
IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5IGluIGBm
b28uY2NgOgotCi1gYGAKLWNvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBpbml0aWFsaXplciBo
ZXJlLgotYGBgCi0KLU90aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlkIEMrKyoqLCBhbmQg
bWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KLXBhcnRpY3VsYXIsIHVzaW5nIGl0IGlu
IEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0YykKLXdp
bGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4KLQotIyMg
SSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVudGF0aW9ucy4gQ2Fu
IEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0gb3ZlciBhbGwgdGhl
IGltcGxlbWVudGF0aW9ucz8gIyMKLQotR29vZ2xlIFRlc3QgZG9lc24ndCB5ZXQgaGF2ZSBnb29k
IHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKLWRhdGEtZHJpdmVuIHRlc3RzIGlu
IGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVtZW50cyBpbiB0aGlz
Ci1hcmVhIHNvb24uCi0KLSMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVyZSBmcm9tIGFub3Ro
ZXI/ICMjCi0KLVllcy4KLQotRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29ycmVzcG9uZGluZyBh
bmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQotb25lIHRlc3QgY2FzZSBj
YW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2ZXIsIG11bHRpcGxl
IHRlc3QKLWNhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGlnaHRseSBkaWZmZXJl
bnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKLW1heSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0
IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFrCi1pbXBvcnRhbnQg
c3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgotCi1JbiBHb29nbGUgVGVz
dCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhlIHNo
YXJlZAotbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9tIHRo
YXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKLWZvciBlYWNoIHRlc3QgY2FzZSB0aGF0IHdhbnRz
IHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAKLXRvIHdy
aXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgotCi1UeXBpY2FsbHksIHlvdXIg
Y29kZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYAotLy8gRGVmaW5lcyBhIGJhc2UgdGVzdCBmaXh0
dXJlLgotY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgcHJvdGVj
dGVkOgotICAgLi4uCi19OwotCi0vLyBEZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZyb20gQmFz
ZVRlc3QuCi1jbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKLSAgcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAgIEJhc2VUZXN0OjpTZXRVcCgpOyAgLy8g
U2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgotICAgICAgLi4uIGFkZGl0aW9uYWwgc2V0
LXVwIHdvcmsgLi4uCi0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAg
IC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgotICAgICAgQmFzZVRlc3Q6OlRlYXJE
b3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0IQotICAg
IH0KLSAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4uCi19Owot
Ci0vLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgotVEVTVF9GKEZvb1Rlc3Qs
IEJhcikgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQotCi0uLi4gYWRkaXRp
b25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCi1gYGAKLQotSWYgbmVjZXNz
YXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20gYSBkZXJp
dmVkIGZpeHR1cmUuCi1Hb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAgdGhlIGhp
ZXJhcmNoeSBjYW4gYmUuCi0KLUZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVyaXZlZCB0
ZXN0IGZpeHR1cmVzLCBzZWUKLWBzYW1wbGVzL3NhbXBsZTVfdW5pdHRlc3QuY2NgLgotCi0jIyBN
eSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQg
dG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwotCi1Zb3UncmUgcHJvYmFibHkgdXNpbmcg
YW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJldHVybiBgdm9pZGAu
Ci1gQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9pZGAgZnVuY3Rpb25zLgotCi0j
IyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1bHRzKS4gSG93IGRvIEkgZml4IGl0PyAj
IwotCi1JbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1biBpbiBhIGNoaWxkIHByb2Nl
c3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCi1kZWxpY2F0ZS4gVG8gd3JpdGUgZGVhdGggdGVz
dHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgd29yay4KLVBsZWFzZSBt
YWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgotCi1JbiBwYXJ0aWN1bGFyLCBkZWF0aCB0ZXN0
cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGluIHRoZSBwYXJlbnQKLXByb2Nl
c3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0byBlbGltaW5hdGUgY3JlYXRp
bmcgdGhyZWFkcwotb3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRIKClgLgotCi1Tb21ldGltZXMgdGhp
cyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVzdCB1c2UgbWF5IGJlIGNyZWF0
aW5nCi10aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJlYWNoZWQuIEluIHRoaXMgY2Fz
ZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKLXRoZSBjaGFuY2Ugb2YgY29uZmxpY3RzIGJ5IGVp
dGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3NpYmxlIGluc2lkZQotYEVYUEVD
VF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdhbnQgdG8gbW92ZSBldmVyeXRo
aW5nIGluc2lkZSksIG9yCi1sZWF2aW5nIGFzIGZldyB0aGluZ3MgYXMgcG9zc2libGUgaW4gaXQu
IEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgKLXRlc3Qgc3R5bGUgdG8gYCJ0aHJl
YWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFuZCBzZWUgaWYgaXQgaGVscHMu
Ci0KLUlmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzLCByZW1lbWJlciB0aGF0
IHRoZXkgcmVydW4gdGhlIHRlc3QKLXByb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nIGluIHRoZSBj
aGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIKLXByb2dyYW0gY2FuIHJ1biBz
aWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWluaXN0aWMuCi0KLUluIHRoZSBl
bmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQgcHJvZ3JhbW1pbmcuIFlvdSBo
YXZlIHRvIG1ha2UKLXN1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbnMgb3IgZGVh
ZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgotYnVsbGV0IC0gc29ycnkhCi0KLSMj
IFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvZiB0aGUgdGVzdCBmaXh0
dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9uPyAjIwotCi1UaGUgZmlyc3QgdGhp
bmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUKLXNh
bWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUgdGVzdHMuIEZvciBlYWNoIGBU
RVNUX0ZgLAotR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBmcmVzaCB0ZXN0IGZpeHR1cmUgb2Jq
ZWN0LCBfaW1tZWRpYXRlbHlfCi1jYWxsIGBTZXRVcCgpYCwgcnVuIHRoZSB0ZXN0LCBjYWxsIGBU
ZWFyRG93bigpYCwgYW5kIHRoZW4KLV9pbW1lZGlhdGVseV8gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1
cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vCi1uZWVkIHRvIHdyaXRlIGEgYFNldFVw
KClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0aGUgY29uc3RydWN0b3IKLW9yIGRlc3Ry
dWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCi0KLVlvdSBtYXkgc3RpbGwgd2FudCB0byB1c2Ug
YFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKLSAgKiBJZiB0aGUg
dGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24sIHlvdSBtdXN0IHVz
ZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1Y3RvciwgYXMgdGhyb3dpbmcg
aW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdXN1YWxseSB3
aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUgdGhhdCBtYW55IHN0YW5kYXJk
IGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3VsZCBwcmVmZXIgYFRlYXJEb3du
KClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3RzIHRoYXQgd29yayB3aXRoIG9y
IHdpdGhvdXQgZXhjZXB0aW9ucy4KLSAgKiBUaGUgR29vZ2xlIFRlc3QgdGVhbSBpcyBjb25zaWRl
cmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cgb24gcGxhdGZvcm1zIHdoZXJl
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywgTWFjIE9TLCBhbmQgTGludXgg
Y2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3IgdGhlIHVzZXIg
dG8gcHJvcGFnYXRlIGZhaWx1cmVzIGZyb20gYSBzdWJyb3V0aW5lIHRvIGl0cyBjYWxsZXIuIFRo
ZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRl
c3RydWN0b3IgaWYgeW91ciBjb2RlIGNvdWxkIHJ1biBvbiBzdWNoIGEgcGxhdGZvcm0uCi0gICog
SW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1ha2UgYSB2aXJ0dWFs
IGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2FuIGNhbGwgYSBtZXRob2QgZGVj
bGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGljYWxseSBib3VuZC4pIFRoZXJl
Zm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwgYmUgb3ZlcnJpZGVu
IGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClg
LgotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGluZyBmdW5jdGlvbiB0byBj
YWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJIGZpeCBpdD8gIyMKLQotSWYg
dGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBFWFBF
Q1RfUFJFRCpgIGlzCi1vdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3aWxs
IGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKLW92ZXJsb2FkZWQgdmVyc2lvbiBpdCBz
aG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCi1gRVhQRUNUX1BSRURfRk9STUFU
KmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCi0KLUlmIHlvdSBzZWUgdGhpcyBlcnJvciwgeW91
IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCi1gKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAs
IHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJlCi1tZXNzYWdlLiBJZiwg
aG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHByb2Js
ZW0gYnkKLWV4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0byBw
aWNrLgotCi1Gb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQotCi1gYGAKLWJvb2wgSXNQb3Np
dGl2ZShpbnQgbikgewotICByZXR1cm4gbiA+IDA7Ci19Ci1ib29sIElzUG9zaXRpdmUoZG91Ymxl
IHgpIHsKLSAgcmV0dXJuIHggPiAwOwotfQotYGBgCi0KLXlvdSB3aWxsIGdldCBhIGNvbXBpbGVy
IGVycm9yIGlmIHlvdSB3cml0ZQotCi1gYGAKLUVYUEVDVF9QUkVEMShJc1Bvc2l0aXZlLCA1KTsK
LWBgYAotCi1Ib3dldmVyLCB0aGlzIHdpbGwgd29yazoKLQotYGBgCi1FWFBFQ1RfUFJFRDEoKnN0
YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZlKSwgNSk7Ci1gYGAKLQotKFRoZSBz
dHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2FzdGAgb3Bl
cmF0b3IgaXMgdGhlCi10eXBlIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgYGludGAt
dmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCi0KLUFzIGFub3RoZXIgZXhhbXBsZSwgd2hlbiB5
b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCi0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1ib29sIElzTmVnYXRpdmUoVCB4KSB7Ci0gIHJldHVybiB4IDwgMDsKLX0KLWBgYAotCi15b3Ug
Y2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgotCi1gYGAKLUFT
U0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOwotYGBgCi0KLVRoaW5ncyBhcmUgbW9y
ZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3JlIHRoYW4gb25lIHBhcmFtZXRl
cnMuIFRoZQotZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6Ci0KLWBgYAotQVNTRVJUX1BSRUQyKCpH
cmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKLWBgYAotCi0KLWFzIHRoZSBDKysgcHJlLXBy
b2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVudHMs
Ci13aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0byB3
cmFwIHRoZSBwcmVkaWNhdGUKLWZ1bmN0aW9uIGluIHBhcmVudGhlc2VzOgotCi1gYGAKLUFTU0VS
VF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50PikqLCA1LCAwKTsKLWBgYAotCi0KLSMjIE15
IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiB3aGVuIEkg
Y2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIwotCi1Tb21lIHBlb3BsZSBoYWQgYmVlbiBp
Z25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0IGlzLAot
aW5zdGVhZCBvZgotCi1gYGAKLXJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotdGhleSB3
cml0ZQotCi1gYGAKLVJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi1UaGlzIGlzIHdyb25nIGFuZCBk
YW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2VlIHRoZSByZXR1cm4gdmFsdWUgb2YK
LWBSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWluZSBpZiBhIHRlc3QgaGFzIHBh
c3NlZC4gSWYgeW91ciBgbWFpbigpYAotZnVuY3Rpb24gaWdub3JlcyBpdCwgeW91ciB0ZXN0IHdp
bGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQgaGFzIGEKLUdvb2dsZSBUZXN0
IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KLQotVG8gaGVscCB0aGUgdXNlcnMgYXZvaWQg
dGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRpb24gb2YKLWBSVU5fQUxMX1RFU1RT
KClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5nLCB3aGVuIHRoZSByZXR1cm4gdmFs
dWUgaXMKLWlnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJuaW5nLCB0aGUgZml4IGlzIHNpbXBs
ZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCi1pcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUg
b2YgYG1haW4oKWAuCi0KLSMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0IGEgY29uc3RydWN0
b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hhdCdzIGdvaW5nIG9u
PyAjIwotCi1EdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRvIHN1cHBvcnQg
dGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCi1tZXNzYWdlcyB0byBhbiBgQVNTRVJUXypgLCBlLmcu
Ci0KLWBgYAotQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287Ci1gYGAK
LQotd2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQgbm90
IGBFWFBFQ1QqYCBhbmQKLWBBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRlc3Ry
dWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQotY29udGVudCBvZiB5b3VyIGNv
bnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9uLCBv
cgotc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzIHNlY3Rpb24gaW4g
dGhlIHVzZXIncyBndWlkZSBleHBsYWlucwotaXQuCi0KLSMjIE15IHNldC11cCBmdW5jdGlvbiBp
cyBub3QgY2FsbGVkLiBXaHk/ICMjCi0KLUMrKyBpcyBjYXNlLXNlbnNpdGl2ZS4gSXQgc2hvdWxk
IGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQotc3BlbGwgaXQgYXMgYFNldHVwKClg
PwotCi1TaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2UoKWAg
YXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCi13b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVkLgot
Ci0jIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBkaXJl
Y3RseT8gIyMKLQotR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlzIHVuZGVy
c3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKLUlERXMsIGxpa2UgYWNtZSBhbmQgWENvZGUu
IElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlcgotaW4g
RW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhpdCBgZW50ZXJgIG9uIGEg
bWVzc2FnZSB0byBqdW1wIHRvCi10aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgb3IgdXNl
IGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgotCi0jIyBJIGhhdmUgc2V2ZXJh
bCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywgZG8g
SSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2YgdGhl
bT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKLQotWW91IGRvbid0IGhhdmUgdG8uIElu
c3RlYWQgb2YKLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OwotCi1U
RVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9
Ci0KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307Ci0KLVRFU1RfRihCYXJUZXN0
LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KLWBgYAotCi15b3Ug
Y2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6Ci1gYGAKLXR5cGVkZWYgQmFz
ZVRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9GKEZv
b1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEJhc2VUZXN0IEJhclRlc3Q7Ci0KLVRFU1Rf
RihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KLWBg
YAotCi0jIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1bmNo
IG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIwotCi1UaGUgR29vZ2xlIFRlc3Qgb3V0
cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5kbHkgcmVwb3J0LiBJ
ZgoteW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYsIGl0IHdpbGwgbWl4
IHdpdGggdGhlIEdvb2dsZSBUZXN0Ci1vdXRwdXQsIG1ha2luZyBpdCBoYXJkIHRvIHJlYWQuIEhv
d2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcwotcHJvYmxlbS4KLQotU2lu
Y2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNpZGVkIHRvIGxldCBHb29n
bGUgVGVzdCBvdXRwdXQgZ28KLXRvIHN0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5IHNl
cGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgotZXhhbXBsZToKLWBgYAotLi9t
eV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0Ci1gYGAKLQotIyMgV2h5IHNob3VsZCBJIHBy
ZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8gIyMKLQotVGhlcmUgYXJl
IHNldmVyYWwgZ29vZCByZWFzb25zOgotICAxLiBJdCdzIGxpa2VseSB5b3VyIHRlc3QgbmVlZHMg
dG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgbWFrZXMg
aXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRlc3Qg
YW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5nIGRpZmZpY3VsdC4gQnkg
dXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBzZXQgb2YgdmFyaWFibGVzIHRo
YXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVzKS4gVGh1cywgdGVzdHMgYXJl
IGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgMS4gR2xvYmFsIHZhcmlhYmxlcyBw
b2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotICAxLiBUZXN0IGZpeHR1cmVzIGNhbiBiZSBy
ZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBlYXNpbHkgd2l0aCBn
bG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRlc3QgY2FzZXMgaGF2ZSBz
b21ldGhpbmcgaW4gY29tbW9uLgotCi0jIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3MgbWVt
YmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1Zb3Ugc2hvdWxkIHRy
eSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBjbGFzc2VzIHNob3VsZCBiZSBl
YXNpbHkKLXRlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZhY2UuIE9uZSB3YXkgdG8gYWNo
aWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKLXlvdSBtb3ZlIGFsbCBwcml2YXRlIG1lbWJl
cnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQgbWFrZSBhbGwKLW1lbWJlcnMg
b2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCi0KLVlvdSBoYXZlIHNldmVyYWwgb3RoZXIgb3B0
aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9URVNUYDoKLSAgKiBXcml0ZSB0
aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzczoKLWBgYAotY2xhc3MgRm9v
IHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Ci0gIC4uLgotfTsKLQotY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLi4uCi0gIHZvaWQgVGVz
dDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVycyBvZiBjbGFzcyBGb28u
Ci0gIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25lLgotfTsKLQotVEVTVF9G
KEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIFRlc3QxKCk7Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0
MikgewotICBUZXN0MigpOwotfQotYGBgCi0gICogSW4gdGhlIGZpeHR1cmUgY2xhc3MsIHdyaXRl
IGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB0aGVuIHVz
ZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIGZyaWVu
ZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICBUMSBnZXRfcHJpdmF0ZV9tZW1i
ZXIxKEZvbyogb2JqKSB7Ci0gICAgcmV0dXJuIG9iai0+cHJpdmF0ZV9tZW1iZXIxXzsKLSAgfQot
fTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLgotICBnZXRfcHJpdmF0ZV9tZW1i
ZXIxKHgpCi0gIC4uLgotfQotYGBgCi0gICogSWYgdGhlIG1ldGhvZHMgYXJlIGRlY2xhcmVkICoq
cHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFjY2VzcyBsZXZlbCBpbiBhIHRlc3Qt
b25seSBzdWJjbGFzczoKLWBgYAotY2xhc3MgWW91ckNsYXNzIHsKLSAgLi4uCi0gcHJvdGVjdGVk
OiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4KLSAgaW50IERvU29tZXRoaW5n
UmV0dXJuaW5nSW50KCk7Ci0gIC4uLgotfTsKLQotLy8gaW4gdGhlIHlvdXJfY2xhc3NfdGVzdC5j
YyBmaWxlOgotY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJsaWMgWW91ckNsYXNzIHsKLSAg
Li4uCi0gcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRoaW5nUmV0dXJuaW5nSW50OyAv
LyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKLSAgLi4uCi19OwotCi1URVNUX0YoWW91ckNsYXNzVGVz
dCwgRG9Tb21ldGhpbmdUZXN0KSB7Ci0gIFRlc3RhYmxlWW91ckNsYXNzIG9iajsKLSAgYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKSk7Ci19
Ci1gYGAKLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIHN0YXRpYyBtZW1iZXJzIHdp
dGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCi0KLVdlIGZpbmQgcHJpdmF0ZSBzdGF0
aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRoZXkgYXJlCi1pbXBsZW1lbnRh
dGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0IG91dCBvZiBhIC5oLiBTbyBv
ZnRlbiBJIG1ha2UKLXRoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVhZC4KLQotSW5zdGVhZCBvZjoK
LWBgYAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0YXRpYyBi
b29sIEZ1bmMoaW50IG4pOwotfTsKLQotLy8gZm9vLmNjCi1ib29sIEZvbzo6RnVuYyhpbnQgbikg
eyAuLi4gfQotCi0vLyBmb29fdGVzdC5jYwotRVhQRUNUX1RSVUUoRm9vOjpGdW5jKDEyMzQ1KSk7
Ci1gYGAKLQotWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6Ci1gYGAKLS8vIGZvby5o
Ci1jbGFzcyBGb28gewotICAuLi4KLX07Ci0KLS8vIGZvby5jYwotbmFtZXNwYWNlIGludGVybmFs
IHsKLSAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Ci19Ci0KLS8vIGZvb190ZXN0LmNjCi1uYW1l
c3BhY2UgaW50ZXJuYWwgewotICBib29sIEZ1bmMoaW50IG4pOwotfQotCi1FWFBFQ1RfVFJVRShp
bnRlcm5hbDo6RnVuYygxMjM0NSkpOwotYGBgCi0KLSMjIEkgd291bGQgbGlrZSB0byBydW4gYSB0
ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycy4gRG8gSSBuZWVkIHRv
IHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/ICMjCi0KLU5vLiBZb3UgY2FuIHVz
ZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXShWMV81X0FkdmFu
Y2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykgd2hpY2gKLWxldHMgeW91IHJl
cGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMsIHdpdGhvdXQgZGVmaW5p
bmcgaXQgbW9yZSB0aGFuIG9uY2UuCi0KLSMjIEhvdyBkbyBJIHRlc3QgYSBmaWxlIHRoYXQgZGVm
aW5lcyBtYWluKCk/ICMjCi0KLVRvIHRlc3QgYSBgZm9vLmNjYCBmaWxlLCB5b3UgbmVlZCB0byBj
b21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QKLXByb2dyYW0uIEhvd2V2ZXIs
IHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0aGUgYG1haW4oKWAKLWZ1
bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClgIG9mIHlvdXIgdW5pdCB0ZXN0
LCBhbmQgd2lsbCByZXN1bHQgaW4KLWEgYnVpbGQgZXJyb3IuCi0KLVRoZSByaWdodCBzb2x1dGlv
biBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgotICAxLiBgZm9vLmhgIHdoaWNoIGNv
bnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCi0gIDEuIGBmb28uY2NgIHdoaWNoIGNvbnRhaW5zIHRo
ZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAotICAxLiBgZm9vX21haW4uY2NgIHdo
aWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9uIG9mIGBtYWluKClgLgotCi1U
aGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgotCi1JZiB5b3UgYXJlIGFkZGluZyB0
ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50IGFuIGludHJ1c2l2ZSBjaGFu
Z2UKLWxpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGluY2x1ZGUgdGhlIGVudGlyZSBg
Zm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAotdGVzdC4gRm9yIGV4YW1wbGU6Ci1gYGAKLS8vIEZp
bGUgZm9vX3VuaXR0ZXN0LmNjCi0KLS8vIFRoZSBoZWFkZXJzIHNlY3Rpb24KLS4uLgotCi0vLyBS
ZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZvciB0aGUgdW5pdCB0ZXN0IG1h
aW4oKQotI2RlZmluZSBtYWluIEZvb01haW4KLQotI2luY2x1ZGUgImEvYi9mb28uY2MiCi0KLS8v
IFRoZSB0ZXN0cyBzdGFydCBoZXJlLgotLi4uCi1gYGAKLQotCi1Ib3dldmVyLCBwbGVhc2UgcmVt
ZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgdGhlIGxhc3QK
LXJlc29ydC4KLQotIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBhcmd1bWVudCBpbiBBU1NFUlRc
X0RFQVRIKCkgYmU/ICMjCi0KLWBBU1NFUlRfREVBVEgoX3N0YXRlbWVudF8sIF9yZWdleF8pYCAo
b3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVzZWQKLXdoZXJldmVyIGBfc3Rh
dGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRlbWVudF9gIGNhbiBiZSBhbnkg
QysrCi1zdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LiBJ
biBwYXJ0aWN1bGFyLCBpdCBjYW4KLXJlZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZhcmlh
YmxlcywgYW5kIGNhbiBiZToKLSAgKiBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsIChvZnRlbiB0aGUg
Y2FzZSksCi0gICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCi0gICogYSBjb21wb3VuZCBzdGF0
ZW1lbnQuCi0KLT4gU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVyZToKLQotYGBgCi0vLyBBIGRl
YXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwuCi1URVNUKE15RGVhdGhUZXN0
LCBGdW5jdGlvbkNhbGwpIHsKLSAgQVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQiKTsK
LX0KLQotLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlhYmxl
cyBhbmQgZnVuY3Rpb25zLgotVEVTVChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24pIHsK
LSAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7Ci0gIEFTU0VSVF9ERUFUSCgoYyA/IEZ1bmMx
KDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCi0gICAgICAgICAgICAgICAiKEZ1bmMxfE1l
dGhvZCkgZmFpbGVkIik7Ci19Ci0KLS8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQgYW55
IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCi0vLyBwYXJ0aWN1bGFyLCB0aGV5IGNhbiBiZSBpbnNp
ZGUgYSBsb29wLgotVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewotICAvLyBWZXJpZmll
cyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxsIGRpZS4KLSAgZm9yIChp
bnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEhfTShGb28oaSksICJGb28g
aGFzIFxcZCsgZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2Uo
KSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOwotICB9Ci19Ci0KLS8vIEEgZGVhdGggYXNzZXJ0aW9u
IGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgotVEVTVChNeURlYXRoVGVzdCwgQ29t
cG91bmRTdGF0ZW1lbnQpIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBhdCBsZWFzZSBvbmUgb2YgQmFy
KDApLCBCYXIoMSksIC4uLiwgYW5kCi0gIC8vIEJhcig0KSBkaWVzLgotICBBU1NFUlRfREVBVEgo
ewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgICBCYXIoaSk7Ci0gICAg
fQotICB9LAotICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30KLWBgYAotCi1gZ29vZ2xldGVzdF91
bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0ZWQu
Ci0KLSMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiBBU1NFUlRc
X0RFQVRIIHVzZT8gIyMKLQotT24gUE9TSVggc3lzdGVtcywgR29vZ2xlIFRlc3QgdXNlcyB0aGUg
UE9TSVggRXh0ZW5kZWQgcmVndWxhcgotZXhwcmVzc2lvbiBzeW50YXgKLShodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFy
X0V4cHJlc3Npb25zKS4gT24KLVdpbmRvd3MsIGl0IHVzZXMgYSBsaW1pdGVkIHZhcmlhbnQgb2Yg
cmVndWxhciBleHByZXNzaW9uIHN5bnRheC4gRm9yCi1tb3JlIGRldGFpbHMsIHNlZSB0aGUgW3Jl
Z3VsYXIgZXhwcmVzc2lvbiBzeW50YXhdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCNSZWd1bGFyX0V4
cHJlc3Npb25fU3ludGF4KS4KLQotIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28sIGJ1dCBU
RVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9y
IGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKLQotR29vZ2xlIFRlc3QgbmVlZHMgdG8gYmUg
YWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywgc28KLWl0
IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21waWxlciB3
aWxsIGRlZmluZSBvbmUgZm9yCi15b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5
b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246Ci0gICogSWYgeW91IGV4cGxpY2l0bHkgZGVjbGFy
ZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5b3UgbmVl
ZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxkIGJlIGVt
cHR5LgotICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIsIHRo
ZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRfIGluaXRp
YWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0aGUgY29u
c3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlvdSB0byBp
bml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVlbiBmaXhl
ZCBpbiBgZ2NjIDRgLikKLQotIyMgV2h5IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFpbiBhYm91
dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKLQotV2l0aCB0
aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sgb25jZSB5
b3UgY3Jvc3MgdGhlCi1saW5lIGZyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0aHJlYWRz
LiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKLXRocmVhZCwgYSBtYW5hZ2VyIHRocmVhZCBp
cyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRzLgotTGF0
ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFkLCB0aGUg
dGhyZWFkIGNvdW50Ci1kZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJlYWQgd2ls
bCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlCi0yIHRocmVhZHMsIHdoaWNoIG1l
YW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCi0KLVRoZSBuZXcgTlBUTCB0
aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMgaXQgZG9l
c24ndAotY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24ndCBjb250
cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0Ci1ydW5zIG9uLCB5b3Ugc2hvdWxkbid0IGRlcGVu
ZCBvbiB0aGlzLgotCi0jIyBXaHkgZG9lcyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBlbnRpcmUg
dGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVkIEZPT0Rl
YXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8gIyMKLQotR29vZ2xlIFRlc3QgZG9l
cyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBUaGF0IGlz
LCBpdAotcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRoZW4gcnVu
cyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAotY2FzZSwgYW5kIHNvIG9uLiBHb29nbGUgVGVz
dCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UKLWJlZm9y
ZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0ZXJ3b3Jk
cy4gU3BsaXR0aW5nIHVwCi10aGUgdGVzdCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgc2V0
LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcwotaW5lZmZpY2llbnQgYW5kIG1h
a2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KLQotSWYgd2Ugd2VyZSB0byBkZXRlcm1pbmUgdGhl
IG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QKLWNhc2Ug
bmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dpbmcgc2l0
dWF0aW9uOgotCi1gYGAKLVRFU1RfRihGb29UZXN0LCBBYmNEZWF0aFRlc3QpIHsgLi4uIH0KLVRF
U1RfRihGb29UZXN0LCBVdncpIHsgLi4uIH0KLQotVEVTVF9GKEJhclRlc3QsIERlZkRlYXRoVGVz
dCkgeyAuLi4gfQotVEVTVF9GKEJhclRlc3QsIFh5eikgeyAuLi4gfQotYGBgCi0KLVNpbmNlIGBG
b29UZXN0LkFiY0RlYXRoVGVzdGAgbmVlZHMgdG8gcnVuIGJlZm9yZSBgQmFyVGVzdC5YeXpgLCBh
bmQgd2UgZG9uJ3QKLWludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywg
d2UgbmVlZCB0byBydW4gYWxsIHRlc3RzIGluIHRoZQotYEZvb1Rlc3RgIGNhc2UgYmVmb3JlIHJ1
bm5pbmcgYW55IHRlc3QgaW4gdGhlIGBCYXJUZXN0YCBjYXNlLiBUaGlzIGNvbnRyYWRpY3RzCi13
aXRoIHRoZSByZXF1aXJlbWVudCB0byBydW4gYEJhclRlc3QuRGVmRGVhdGhUZXN0YCBiZWZvcmUg
YEZvb1Rlc3QuVXZ3YC4KLQotIyMgQnV0IEkgZG9uJ3QgbGlrZSBjYWxsaW5nIG15IGVudGlyZSB0
ZXN0IGNhc2UgRk9PRGVhdGhUZXN0IHdoZW4gaXQgY29udGFpbnMgYm90aCBkZWF0aCB0ZXN0cyBh
bmQgbm9uLWRlYXRoIHRlc3RzLiBXaGF0IGRvIEkgZG8/ICMjCi0KLVlvdSBkb24ndCBoYXZlIHRv
LCBidXQgaWYgeW91IGxpa2UsIHlvdSBtYXkgc3BsaXQgdXAgdGhlIHRlc3QgY2FzZSBpbnRvCi1g
Rm9vVGVzdGAgYW5kIGBGb29EZWF0aFRlc3RgLCB3aGVyZSB0aGUgbmFtZXMgbWFrZSBpdCBjbGVh
ciB0aGF0IHRoZXkgYXJlCi1yZWxhdGVkOgotCi1gYGAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0K
LVRFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KLQotdHlwZWRlZiBGb29UZXN0IEZvb0RlYXRo
VGVzdDsKLQotVEVTVF9GKEZvb0RlYXRoVGVzdCwgVXZ3KSB7IC4uLiBFWFBFQ1RfREVBVEgoLi4u
KSAuLi4gfQotVEVTVF9GKEZvb0RlYXRoVGVzdCwgWHl6KSB7IC4uLiBBU1NFUlRfREVBVEgoLi4u
KSAuLi4gfQotYGBgCi0KLSMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgIm5vIG1hdGNo
IGZvciAnb3BlcmF0b3I8PCciIHdoZW4gSSB1c2UgYW4gYXNzZXJ0aW9uLiBXaGF0IGdpdmVzPyAj
IwotCi1JZiB5b3UgdXNlIGEgdXNlci1kZWZpbmVkIHR5cGUgYEZvb1R5cGVgIGluIGFuIGFzc2Vy
dGlvbiwgeW91IG11c3QgbWFrZSBzdXJlCi10aGVyZSBpcyBhbiBgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvb1R5cGUmKWAgZnVuY3Rpb24KLWRlZmluZWQg
c3VjaCB0aGF0IHdlIGNhbiBwcmludCBhIHZhbHVlIG9mIGBGb29UeXBlYC4KLQotSW4gYWRkaXRp
b24sIGlmIGBGb29UeXBlYCBpcyBkZWNsYXJlZCBpbiBhIG5hbWUgc3BhY2UsIHRoZSBgPDxgIG9w
ZXJhdG9yIGFsc28KLW5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIF9zYW1lXyBuYW1lIHNwYWNl
LgotCi0jIyBIb3cgZG8gSSBzdXBwcmVzcyB0aGUgbWVtb3J5IGxlYWsgbWVzc2FnZXMgb24gV2lu
ZG93cz8gIyMKLQotU2luY2UgdGhlIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgR29vZ2xlIFRlc3Qg
c2luZ2xldG9uIHJlcXVpcmVzIGFsbG9jYXRpb25zIG9uCi10aGUgaGVhcCwgdGhlIFZpc3VhbCBD
KysgbWVtb3J5IGxlYWsgZGV0ZWN0b3Igd2lsbCByZXBvcnQgbWVtb3J5IGxlYWtzIGF0IHRoZQot
ZW5kIG9mIHRoZSBwcm9ncmFtIHJ1bi4gVGhlIGVhc2llc3Qgd2F5IHRvIGF2b2lkIHRoaXMgaXMg
dG8gdXNlIHRoZQotYF9DcnRNZW1DaGVja3BvaW50YCBhbmQgYF9DcnRNZW1EdW1wQWxsT2JqZWN0
c1NpbmNlYCBjYWxscyB0byBub3QgcmVwb3J0IGFueQotc3RhdGljYWxseSBpbml0aWFsaXplZCBo
ZWFwIG9iamVjdHMuIFNlZSBNU0ROIGZvciBtb3JlIGRldGFpbHMgYW5kIGFkZGl0aW9uYWwKLWhl
YXAgY2hlY2svZGVidWcgcm91dGluZXMuCi0KLSMjIEkgYW0gYnVpbGRpbmcgbXkgcHJvamVjdCB3
aXRoIEdvb2dsZSBUZXN0IGluIFZpc3VhbCBTdHVkaW8gYW5kIGFsbCBJJ20gZ2V0dGluZyBpcyBh
IGJ1bmNoIG9mIGxpbmtlciBlcnJvcnMgKG9yIHdhcm5pbmdzKS4gSGVscCEgIyMKLQotWW91IG1h
eSBnZXQgYSBudW1iZXIgb2YgdGhlIGZvbGxvd2luZyBsaW5rZXIgZXJyb3Igb3Igd2FybmluZ3Mg
aWYgeW91Ci1hdHRlbXB0IHRvIGxpbmsgeW91ciB0ZXN0IHByb2plY3Qgd2l0aCB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSB3aGVuCi15b3VyIHByb2plY3QgYW5kIHRoZSBhcmUgbm90IGJ1aWx0IHVz
aW5nIHRoZSBzYW1lIGNvbXBpbGVyIHNldHRpbmdzLgotCi0gICogTE5LMjAwNTogc3ltYm9sIGFs
cmVhZHkgZGVmaW5lZCBpbiBvYmplY3QKLSAgKiBMTks0MjE3OiBsb2NhbGx5IGRlZmluZWQgc3lt
Ym9sICdzeW1ib2wnIGltcG9ydGVkIGluIGZ1bmN0aW9uICdmdW5jdGlvbicKLSAgKiBMTks0MDQ5
OiBsb2NhbGx5IGRlZmluZWQgc3ltYm9sICdzeW1ib2wnIGltcG9ydGVkCi0KLVRoZSBHb29nbGUg
VGVzdCBwcm9qZWN0IChndGVzdC52Y3Byb2opIGhhcyB0aGUgUnVudGltZSBMaWJyYXJ5IG9wdGlv
bgotc2V0IHRvIC9NVCAodXNlIG11bHRpLXRocmVhZGVkIHN0YXRpYyBsaWJyYXJpZXMsIC9NVGQg
Zm9yIGRlYnVnKS4gSWYKLXlvdXIgcHJvamVjdCB1c2VzIHNvbWV0aGluZyBlbHNlLCBmb3IgZXhh
bXBsZSAvTUQgKHVzZSBtdWx0aS10aHJlYWRlZAotRExMcywgL01EZCBmb3IgZGVidWcpLCB5b3Ug
bmVlZCB0byBjaGFuZ2UgdGhlIHNldHRpbmcgaW4gdGhlIEdvb2dsZQotVGVzdCBwcm9qZWN0IHRv
IG1hdGNoIHlvdXIgcHJvamVjdCdzLgotCi1UbyB1cGRhdGUgdGhpcyBzZXR0aW5nIG9wZW4gdGhl
IHByb2plY3QgcHJvcGVydGllcyBpbiB0aGUgVmlzdWFsCi1TdHVkaW8gSURFIHRoZW4gc2VsZWN0
IHRoZSBicmFuY2ggQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzIHwgQy9DKysgfAotQ29kZSBHZW5l
cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiAiUnVudGltZSBMaWJyYXJ5Ii4gIFlvdSBtYXkg
YWxzbyB0cnkKLXVzaW5nIGd0ZXN0LW1kLnZjcHJvaiBpbnN0ZWFkIG9mIGd0ZXN0LnZjcHJvai4K
LQotIyMgSSBwdXQgbXkgdGVzdHMgaW4gYSBsaWJyYXJ5IGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0
IHJ1biB0aGVtLiBXaGF0J3MgaGFwcGVuaW5nPyAjIwotSGF2ZSB5b3UgcmVhZCBhCi1bd2Fybmlu
Z10oVjFfNV9QcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVzZXJzKSBvbgot
dGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPwotCi0jIyBJIHdhbnQgdG8gdXNlIEdvb2dsZSBU
ZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25vdyB3aGVyZSB0byBzdGFydC4gIyMK
LU1hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhlIHBvc3RlZCBo
aXMgc29sdXRpb24gdG8KLW91ciBtYWlsaW5nIGxpc3QuIEhlcmUgaXMgaGlzIGxpbms6Ci1odHRw
Oi8vaGFzc2FuamFtaWxhaG1hZC5ibG9nc3BvdC5jb20vMjAwOS8wNy9ndGVzdC1zdGFydGVycy1o
ZWxwLmh0bWwuCi0KLSMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3ZlcmVkIGluIHlvdXIgRkFRISAj
IwotCi1JZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGluIHRo
aXMgRkFRLCB0aGVyZSBhcmUKLXNvbWUgb3RoZXIgcmVzb3VyY2VzIHlvdSBjYW4gdXNlOgotCi0g
IDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGV0ZXN0L3cvbGlzdCksCi0gIDEuIHNlYXJjaCB0aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXSho
dHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yay90b3BpY3Mp
LAotICAxLiBhc2sgaXQgb24gW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbV0o
bWFpbHRvOmdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUg
d2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0
aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29n
bGV0ZXN0ZnJhbWV3b3JrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFzZSBub3RlIHRo
YXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvaXNzdWVzL2xpc3QpIGlzIF9ub3RfCi1hIGdvb2Qgd2F5
IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVkIGluZnJlcXVlbnRseSBieSBh
Ci12ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4gYXNraW5nIGEgcXVlc3Rpb24s
IGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlCi1mb2xsb3dpbmcgaW5mb3Jt
YXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5b3UgaWYgdGhlcmUncwotbm90
IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToKLQotICAqIHRoZSB2ZXJzaW9u
IChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBvdXQgZnJvbSBTVk4gZGlyZWN0
bHkpIG9mIEdvb2dsZSBUZXN0IHlvdSB1c2UgKEdvb2dsZSBUZXN0IGlzIHVuZGVyIGFjdGl2ZSBk
ZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIgcHJvYmxlbSBoYXMgYmVlbiBz
b2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0sCi0g
ICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxl
dGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIgY29tcGlsZXIsCi0gICogdGhl
IGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0aGUgcXVlc3Rpb24gaXMgYWJv
dXQgY29tcGlsYXRpb24pLAotICAqIHRoZSBfYWN0dWFsXyBjb2RlIChpZGVhbGx5LCBhIG1pbmlt
YWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBwcm9ibGVtIHlvdSBlbmNvdW50
ZXIu75yBCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfUHJpbWVyLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvZG9jcy9WMV81X1ByaW1lci5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjk2MGQyY2U0YzM0NGZkMzkyMzE3YmRiMDM5ZmQ0YjNiMThjYzQwNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVf
UHJpbWVyLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNDk3ICswLDAgQEAKLQotCi0jIEludHJvZHVj
dGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/ICMKLQotX0dvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIgQysrIHRlc3RzLgotCi1O
byBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2luZG93cywgb3IgYSBNYWMsIGlm
IHlvdSB3cml0ZSBDKysgY29kZSwKLUdvb2dsZSBUZXN0IGNhbiBoZWxwIHlvdS4KLQotU28gd2hh
dCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgotICAxLiBUZXN0cyBzaG91bGQgYmUgX2luZGVwZW5k
ZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBkZWJ1ZyBhIHRlc3QgdGhhdCBz
dWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0cy4gIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5IHJ1bm5pbmcgZWFjaCBvZiB0
aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3QgZmFpbHMsIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4gaXNvbGF0aW9uIGZvciBx
dWljayBkZWJ1Z2dpbmcuCi0gIDEuIFRlc3RzIHNob3VsZCBiZSB3ZWxsIF9vcmdhbml6ZWRfIGFu
ZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiAgR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRvIHRlc3QgY2FzZXMgdGhh
dCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29tbW9uIHBhdHRlcm4gaXMg
ZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kgdG8gbWFpbnRhaW4uIFN1Y2gg
Y29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVvcGxlIHN3aXRjaCBwcm9q
ZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2UuCi0gIDEuIFRlc3RzIHNo
b3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUgb3Blbi1zb3VyY2UgY29tbXVu
aXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0tbmV1dHJhbCwgaXRzIHRlc3Rz
IHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29nbGUgQysrIFRlc3RpbmcgRnJh
bWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZlcmVudCBjb21waWxlcnMg
KGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zLCBzbyBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBlYXNpbHkgd29yayB3aXRoIGEg
dmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQgdGhlIGN1cnJlbnQgcmVsZWFz
ZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4IC0gd2UgYXJlIGFjdGl2ZWx5
IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1zLikKLSAgMS4gV2hlbiB0ZXN0
cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2luZm9ybWF0aW9uXyBhYm91dCB0
aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBkb2Vz
bid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVhZCwgaXQgb25seSBzdG9w
cyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dC4gWW91IGNhbiBh
bHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFpbHVyZXMgYWZ0ZXIgd2hp
Y2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlvdSBjYW4gZGV0ZWN0IGFuZCBm
aXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21waWxlIGN5Y2xlLgotICAx
LiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRlc3Qgd3JpdGVycyBmcm9t
IGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3VzIG9uIHRoZSB0ZXN0IF9jb250
ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0b21hdGljYWxseSBrZWVwcyB0
cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVxdWlyZSB0aGUgdXNlciB0
byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KLSAgMS4gVGVzdHMgc2hvdWxk
IGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLCB5b3UgY2FuIHJl
dXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBwYXkgZm9yIHRoZSBzZXQtdXAv
dGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVzdHMgZGVwZW5kIG9uIGVhY2gg
b3RoZXIuCi0KLVNpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXMgYmFzZWQgb24g
dGhlIHBvcHVsYXIgeFVuaXQKLWFyY2hpdGVjdHVyZSwgeW91J2xsIGZlZWwgcmlnaHQgYXQgaG9t
ZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3JlLgotSWYgbm90LCBpdCB3aWxs
IHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhlIGJhc2ljcyBhbmQgZ2V0IHN0
YXJ0ZWQuCi1TbyBsZXQncyBnbyEKLQotX05vdGU6XyBXZSBzb21ldGltZXMgcmVmZXIgdG8gR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5Ci1hcyBfR29vZ2xlIFRlc3RfLgot
Ci0jIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKLQotVG8gd3JpdGUgYSB0ZXN0IHBy
b2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNvbXBpbGUgR29vZ2xlCi1UZXN0
IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRoIGl0LiAgV2UgcHJvdmlkZSBi
dWlsZAotZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0ZW1zIChgbXN2Yy9gIGZvciBW
aXN1YWwgU3R1ZGlvLAotYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwgYG1ha2UvYCBmb3IgR05VIG1h
a2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCi1DKysgQnVpbGRlciwgYW5kIHRoZSBhdXRvdG9v
bHMgc2NyaXB0IGluIHRoZQotR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLiAgSWYgeW91ciBi
dWlsZCBzeXN0ZW0gaXMgbm90IG9uIHRoaXMKLWxpc3QsIHlvdSBjYW4gdGFrZSBhIGxvb2sgYXQg
YG1ha2UvTWFrZWZpbGVgIHRvIGxlYXJuIGhvdyBHb29nbGUgVGVzdAotc2hvdWxkIGJlIGNvbXBp
bGVkIChiYXNpY2FsbHkgeW91IHdhbnQgdG8gY29tcGlsZSBgc3JjL2d0ZXN0LWFsbC5jY2AKLXdp
dGggYEdURVNUX1JPT1RgIGFuZCBgR1RFU1RfUk9PVC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVyIHNl
YXJjaCBwYXRoLAotd2hlcmUgYEdURVNUX1JPT1RgIGlzIHRoZSBHb29nbGUgVGVzdCByb290IGRp
cmVjdG9yeSkuCi0KLU9uY2UgeW91IGFyZSBhYmxlIHRvIGNvbXBpbGUgdGhlIEdvb2dsZSBUZXN0
IGxpYnJhcnksIHlvdSBzaG91bGQKLWNyZWF0ZSBhIHByb2plY3Qgb3IgYnVpbGQgdGFyZ2V0IGZv
ciB5b3VyIHRlc3QgcHJvZ3JhbS4gIE1ha2Ugc3VyZSB5b3UKLWhhdmUgYEdURVNUX1JPT1QvaW5j
bHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCBzbyB0aGF0IHRoZQotY29tcGlsZXIgY2Fu
IGZpbmQgYDxndGVzdC9ndGVzdC5oPmAgd2hlbiBjb21waWxpbmcgeW91ciB0ZXN0LiAgU2V0IHVw
Ci15b3VyIHRlc3QgcHJvamVjdCB0byBsaW5rIHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkg
KGZvciBleGFtcGxlLAotaW4gVmlzdWFsIFN0dWRpbywgdGhpcyBpcyBkb25lIGJ5IGFkZGluZyBh
IGRlcGVuZGVuY3kgb24KLWBndGVzdC52Y3Byb2pgKS4KLQotSWYgeW91IHN0aWxsIGhhdmUgcXVl
c3Rpb25zLCB0YWtlIGEgbG9vayBhdCBob3cgR29vZ2xlIFRlc3QncyBvd24KLXRlc3RzIGFyZSBi
dWlsdCBhbmQgdXNlIHRoZW0gYXMgZXhhbXBsZXMuCi0KLSMgQmFzaWMgQ29uY2VwdHMgIwotCi1X
aGVuIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3Ugc3RhcnQgYnkgd3JpdGluZyBfYXNzZXJ0aW9uc18s
IHdoaWNoIGFyZSBzdGF0ZW1lbnRzCi10aGF0IGNoZWNrIHdoZXRoZXIgYSBjb25kaXRpb24gaXMg
dHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBiZSBfc3VjY2Vzc18sCi1fbm9uZmF0YWwg
ZmFpbHVyZV8sIG9yIF9mYXRhbCBmYWlsdXJlXy4gSWYgYSBmYXRhbCBmYWlsdXJlIG9jY3Vycywg
aXQgYWJvcnRzCi10aGUgY3VycmVudCBmdW5jdGlvbjsgb3RoZXJ3aXNlIHRoZSBwcm9ncmFtIGNv
bnRpbnVlcyBub3JtYWxseS4KLQotX1Rlc3RzXyB1c2UgYXNzZXJ0aW9ucyB0byB2ZXJpZnkgdGhl
IHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVzdCBjcmFzaGVzCi1vciBoYXMgYSBmYWls
ZWQgYXNzZXJ0aW9uLCB0aGVuIGl0IF9mYWlsc187IG90aGVyd2lzZSBpdCBfc3VjY2VlZHNfLgot
Ci1BIF90ZXN0IGNhc2VfIGNvbnRhaW5zIG9uZSBvciBtYW55IHRlc3RzLiBZb3Ugc2hvdWxkIGdy
b3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0Ci1jYXNlcyB0aGF0IHJlZmxlY3QgdGhlIHN0cnVjdHVy
ZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYQotdGVzdCBjYXNl
IG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzLCB5b3UgY2FuIHB1
dCB0aGVtIGludG8gYQotX3Rlc3QgZml4dHVyZV8gY2xhc3MuCi0KLUEgX3Rlc3QgcHJvZ3JhbV8g
Y2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4KLQotV2UnbGwgbm93IGV4cGxhaW4gaG93
IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGluZyBhdCB0aGUgaW5kaXZpZHVhbAotYXNz
ZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0ZXN0cyBhbmQgdGVzdCBjYXNlcy4KLQot
IyBBc3NlcnRpb25zICMKLQotR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9zIHRoYXQg
cmVzZW1ibGUgZnVuY3Rpb24gY2FsbHMuIFlvdSB0ZXN0IGEKLWNsYXNzIG9yIGZ1bmN0aW9uIGJ5
IG1ha2luZyBhc3NlcnRpb25zIGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3NlcnRpb24K
LWZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMgdGhlIGFzc2VydGlvbidzIHNvdXJjZSBmaWxlIGFu
ZCBsaW5lIG51bWJlciBsb2NhdGlvbiwKLWFsb25nIHdpdGggYSBmYWlsdXJlIG1lc3NhZ2UuIFlv
dSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlCi13aGljaCB3aWxsIGJl
IGFwcGVuZGVkIHRvIEdvb2dsZSBUZXN0J3MgbWVzc2FnZS4KLQotVGhlIGFzc2VydGlvbnMgY29t
ZSBpbiBwYWlycyB0aGF0IHRlc3QgdGhlIHNhbWUgdGhpbmcgYnV0IGhhdmUgZGlmZmVyZW50Ci1l
ZmZlY3RzIG9uIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBgQVNTRVJUXypgIHZlcnNpb25zIGdlbmVy
YXRlIGZhdGFsIGZhaWx1cmVzCi13aGVuIHRoZXkgZmFpbCwgYW5kICoqYWJvcnQgdGhlIGN1cnJl
bnQgZnVuY3Rpb24qKi4gYEVYUEVDVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZQotbm9uZmF0YWwgZmFp
bHVyZXMsIHdoaWNoIGRvbid0IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBVc3VhbGx5IGBF
WFBFQ1RfKmAKLWFyZSBwcmVmZXJyZWQsIGFzIHRoZXkgYWxsb3cgbW9yZSB0aGFuIG9uZSBmYWls
dXJlcyB0byBiZSByZXBvcnRlZCBpbiBhIHRlc3QuCi1Ib3dldmVyLCB5b3Ugc2hvdWxkIHVzZSBg
QVNTRVJUXypgIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVuCi10aGUg
YXNzZXJ0aW9uIGluIHF1ZXN0aW9uIGZhaWxzLgotCi1TaW5jZSBhIGZhaWxlZCBgQVNTRVJUXypg
IHJldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKLXBvc3NpYmx5
IHNraXBwaW5nIGNsZWFuLXVwIGNvZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5IGNhdXNl
IGEgc3BhY2UgbGVhay4KLURlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFrLCBpdCBt
YXkgb3IgbWF5IG5vdCBiZSB3b3J0aCBmaXhpbmcgLSBzbwota2VlcCB0aGlzIGluIG1pbmQgaWYg
eW91IGdldCBhIGhlYXAgY2hlY2tlciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRpb24KLWVy
cm9ycy4KLQotVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UsIHNpbXBseSBzdHJl
YW0gaXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCi1gPDxgIG9wZXJhdG9yLCBvciBhIHNlcXVl
bmNlIG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgotYGBgCi1BU1NFUlRfRVEoeC5zaXpl
KCksIHkuc2l6ZSgpKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGFyZSBvZiB1bmVxdWFsIGxlbmd0aCI7
Ci0KLWZvciAoaW50IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgewotICBFWFBFQ1RfRVEoeFtp
XSwgeVtpXSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOwotfQot
YGBgCi0KLUFueXRoaW5nIHRoYXQgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGBvc3RyZWFtYCBjYW4g
YmUgc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uCi1tYWNyby0taW4gcGFydGljdWxhciwgQyBzdHJp
bmdzIGFuZCBgc3RyaW5nYCBvYmplY3RzLiBJZiBhIHdpZGUgc3RyaW5nCi0oYHdjaGFyX3QqYCwg
YFRDSEFSKmAgaW4gYFVOSUNPREVgIG1vZGUgb24gV2luZG93cywgb3IgYHN0ZDo6d3N0cmluZ2Ap
IGlzCi1zdHJlYW1lZCB0byBhbiBhc3NlcnRpb24sIGl0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBV
VEYtOCB3aGVuIHByaW50ZWQuCi0KLSMjIEJhc2ljIEFzc2VydGlvbnMgIyMKLQotVGhlc2UgYXNz
ZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlvbiB0ZXN0aW5nLgotfCAqKkZhdGFs
IGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLXwKLXwgYEFTU0VSVF9UUlVFKGBfY29uZGl0aW9uX2ApYDsgIHwgYEVYUEVDVF9UUlVFKGBf
Y29uZGl0aW9uX2ApYDsgICB8IF9jb25kaXRpb25fIGlzIHRydWUgfAotfCBgQVNTRVJUX0ZBTFNF
KGBfY29uZGl0aW9uX2ApYDsgfCBgRVhQRUNUX0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsgIHwgX2Nv
bmRpdGlvbl8gaXMgZmFsc2UgfAotCi1SZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBBU1NFUlRf
KmAgeWllbGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQKLXJldHVybnMgZnJvbSB0aGUgY3VycmVudCBm
dW5jdGlvbiwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbAotZmFpbHVyZSwgYWxs
b3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBjYXNlLCBh
bgotYXNzZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzIGNvbnRhaW5pbmcgdGVzdCBmYWlscy4KLQot
X0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIEJpbmFyeSBDb21wYXJp
c29uICMjCi0KLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNvbXBhcmUg
dHdvIHZhbHVlcy4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRp
b24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXxgQVNTRVJUX0VRKGBfZXhwZWN0ZWRfYCwg
YF9hY3R1YWxfYCk7YHxgRVhQRUNUX0VRKGBfZXhwZWN0ZWRfYCwgYF9hY3R1YWxfYCk7YHwgX2V4
cGVjdGVkXyBgPT1gIF9hY3R1YWxfIHwKLXxgQVNTRVJUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YCAgICAgIHxgRVhQRUNUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGAh
PWAgX3ZhbDJfIHwKLXxgQVNTRVJUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQ
RUNUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8YCBfdmFsMl8gfAot
fGBBU1NFUlRfTEUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTEUoYF92YWwx
X2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDw9YCBfdmFsMl8gfAotfGBBU1NFUlRfR1Qo
YF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR1QoYF92YWwxX2AsIGBfdmFsMl9g
KTtgICAgICAgfCBfdmFsMV8gYD5gIF92YWwyXyB8Ci18YEFTU0VSVF9HRShgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92
YWwxXyBgPj1gIF92YWwyXyB8Ci0KLUluIHRoZSBldmVudCBvZiBhIGZhaWx1cmUsIEdvb2dsZSBU
ZXN0IHByaW50cyBib3RoIF92YWwxXyBhbmQgX3ZhbDJfCi0uIEluIGBBU1NFUlRfRVEqYCBhbmQg
YEVYUEVDVF9FUSpgIChhbmQgYWxsIG90aGVyIGVxdWFsaXR5IGFzc2VydGlvbnMKLXdlJ2xsIGlu
dHJvZHVjZSBsYXRlciksIHlvdSBzaG91bGQgcHV0IHRoZSBleHByZXNzaW9uIHlvdSB3YW50IHRv
IHRlc3QKLWluIHRoZSBwb3NpdGlvbiBvZiBfYWN0dWFsXywgYW5kIHB1dCBpdHMgZXhwZWN0ZWQg
dmFsdWUgaW4gX2V4cGVjdGVkXywKLWFzIEdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdlcyBh
cmUgb3B0aW1pemVkIGZvciB0aGlzIGNvbnZlbnRpb24uCi0KLVZhbHVlIGFyZ3VtZW50cyBtdXN0
IGJlIGNvbXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24gb3BlcmF0b3Igb3IK
LXlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4gVmFsdWVzIG11c3QgYWxzbyBzdXBwb3J0IHRo
ZSBgPDxgIG9wZXJhdG9yIGZvcgotc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYC4gQWxsIGJ1aWx0
LWluIHR5cGVzIHN1cHBvcnQgdGhpcy4KLQotVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRo
IGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCi1jb3JyZXNw
b25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYgdGhl
IGNvcnJlc3BvbmRpbmcKLW9wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUgYEFT
U0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAotcHJpbnQgb3V0IG5vdCBvbmx5IHRo
ZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdlbGwu
Ci0KLUFyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9y
ZSwgaXQncyBPSyBmb3IgdGhlCi1hcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2
ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAotdGhlIGFyZ3VtZW50cycg
ZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUg
dG8KLWNob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24g
YW55IHBhcnRpY3VsYXIgYXJndW1lbnQKLWV2YWx1YXRpb24gb3JkZXIuCi0KLWBBU1NFUlRfRVEo
KWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0
cmluZ3MsIGl0Ci10ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24s
IG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCi1UaGVyZWZvcmUsIGlmIHlvdSB3YW50
IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UK
LWBBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4g
cGFydGljdWxhciwgdG8gYXNzZXJ0Ci10aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFT
U0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KLWNvbXBhcmUgdHdvIGBz
dHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgotCi1NYWNyb3MgaW4g
dGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0
cyAoYHN0cmluZ2AKLWFuZCBgd3N0cmluZ2ApLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYy4KLQotIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKLQotVGhlIGFzc2VydGlvbnMg
aW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBj
b21wYXJlCi10d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05F
YCwgYW5kIGV0YyBpbnN0ZWFkLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBf
ZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmlu
Z3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9z
dHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0
aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9TVFJD
QVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28gQyBz
dHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Ci18IGBBU1NFUlRf
U1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIx
X2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVu
dCwgaWdub3JpbmcgY2FzZSB8Ci0KLU5vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5h
bWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCi0KLWAqU1RSRVEqYCBhbmQgYCpTVFJORSpg
IGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQotY29tcGFyaXNv
biBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVk
IGFzIFVURi04Ci1uYXJyb3cgc3RyaW5ncy4KLQotQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1w
dHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgotCi1fQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KLQotU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJp
c29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCi1yZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWRHdWlkZSBBZHZh
bmNlZAotR29vZ2xlIFRlc3QgR3VpZGVdLgotCi0jIFNpbXBsZSBUZXN0cyAjCi0KLVRvIGNyZWF0
ZSBhIHRlc3Q6Ci0gIDEuIFVzZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBuYW1l
IGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBk
b24ndCByZXR1cm4gYSB2YWx1ZS4KLSAgMS4gSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBh
bnkgdmFsaWQgQysrIHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwgdXNlIHRoZSB2YXJp
b3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgotICAxLiBUaGUgdGVz
dCdzIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNzZXJ0
aW9uIGluIHRoZSB0ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9y
IGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRoZSBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBp
dCBzdWNjZWVkcy4KLQotYGBgCi1URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKLSAu
Li4gdGVzdCBib2R5IC4uLgotfQotYGBgCi0KLQotYFRFU1QoKWAgYXJndW1lbnRzIGdvIGZyb20g
Z2VuZXJhbCB0byBzcGVjaWZpYy4gVGhlIF9maXJzdF8gYXJndW1lbnQgaXMgdGhlCi1uYW1lIG9m
IHRoZSB0ZXN0IGNhc2UsIGFuZCB0aGUgX3NlY29uZF8gYXJndW1lbnQgaXMgdGhlIHRlc3QncyBu
YW1lIHdpdGhpbiB0aGUKLXRlc3QgY2FzZS4gUmVtZW1iZXIgdGhhdCBhIHRlc3QgY2FzZSBjYW4g
Y29udGFpbiBhbnkgbnVtYmVyIG9mIGluZGl2aWR1YWwKLXRlc3RzLiBBIHRlc3QncyBfZnVsbCBu
YW1lXyBjb25zaXN0cyBvZiBpdHMgY29udGFpbmluZyB0ZXN0IGNhc2UgYW5kIGl0cwotaW5kaXZp
ZHVhbCBuYW1lLiBUZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzIGNhbiBoYXZlIHRoZSBz
YW1lIGluZGl2aWR1YWwKLW5hbWUuCi0KLUZvciBleGFtcGxlLCBsZXQncyB0YWtlIGEgc2ltcGxl
IGludGVnZXIgZnVuY3Rpb246Ci1gYGAKLWludCBGYWN0b3JpYWwoaW50IG4pOyAvLyBSZXR1cm5z
IHRoZSBmYWN0b3JpYWwgb2YgbgotYGBgCi0KLUEgdGVzdCBjYXNlIGZvciB0aGlzIGZ1bmN0aW9u
IG1pZ2h0IGxvb2sgbGlrZToKLWBgYAotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIDAuCi1URVNUKEZh
Y3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQpIHsKLSAgRVhQRUNUX0VRKDEsIEZhY3Rvcmlh
bCgwKSk7Ci19Ci0KLS8vIFRlc3RzIGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBudW1iZXJzLgotVEVT
VChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRpdmVJbnB1dCkgewotICBFWFBFQ1RfRVEoMSwg
RmFjdG9yaWFsKDEpKTsKLSAgRVhQRUNUX0VRKDIsIEZhY3RvcmlhbCgyKSk7Ci0gIEVYUEVDVF9F
USg2LCBGYWN0b3JpYWwoMykpOwotICBFWFBFQ1RfRVEoNDAzMjAsIEZhY3RvcmlhbCg4KSk7Ci19
Ci1gYGAKLQotR29vZ2xlIFRlc3QgZ3JvdXBzIHRoZSB0ZXN0IHJlc3VsdHMgYnkgdGVzdCBjYXNl
cywgc28gbG9naWNhbGx5LXJlbGF0ZWQgdGVzdHMKLXNob3VsZCBiZSBpbiB0aGUgc2FtZSB0ZXN0
IGNhc2U7IGluIG90aGVyIHdvcmRzLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlaXIKLWBURVNU
KClgIHNob3VsZCBiZSB0aGUgc2FtZS4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHdlIGhhdmUgdHdv
IHRlc3RzLAotYEhhbmRsZXNaZXJvSW5wdXRgIGFuZCBgSGFuZGxlc1Bvc2l0aXZlSW5wdXRgLCB0
aGF0IGJlbG9uZyB0byB0aGUgc2FtZSB0ZXN0Ci1jYXNlIGBGYWN0b3JpYWxUZXN0YC4KLQotX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgVGVzdCBGaXh0dXJlczogVXNp
bmcgdGhlIFNhbWUgRGF0YSBDb25maWd1cmF0aW9uIGZvciBNdWx0aXBsZSBUZXN0cyAjCi0KLUlm
IHlvdSBmaW5kIHlvdXJzZWxmIHdyaXRpbmcgdHdvIG9yIG1vcmUgdGVzdHMgdGhhdCBvcGVyYXRl
IG9uIHNpbWlsYXIgZGF0YSwKLXlvdSBjYW4gdXNlIGEgX3Rlc3QgZml4dHVyZV8uIEl0IGFsbG93
cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBvZgotb2JqZWN0cyBmb3Igc2V2
ZXJhbCBkaWZmZXJlbnQgdGVzdHMuCi0KLVRvIGNyZWF0ZSBhIGZpeHR1cmUsIGp1c3Q6Ci0gIDEu
IERlcml2ZSBhIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdGAgLiBTdGFydCBpdHMgYm9keSB3
aXRoIGBwcm90ZWN0ZWQ6YCBvciBgcHVibGljOmAgYXMgd2UnbGwgd2FudCB0byBhY2Nlc3MgZml4
dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNzZXMuCi0gIDEuIEluc2lkZSB0aGUgY2xhc3MsIGRl
Y2xhcmUgYW55IG9iamVjdHMgeW91IHBsYW4gdG8gdXNlLgotICAxLiBJZiBuZWNlc3NhcnksIHdy
aXRlIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBvciBgU2V0VXAoKWAgZnVuY3Rpb24gdG8gcHJlcGFy
ZSB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiBBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHNwZWxs
IGBTZXRVcCgpYCBhcyBgU2V0dXAoKWAgd2l0aCBhIHNtYWxsIGB1YCAtIGRvbid0IGxldCB0aGF0
IGhhcHBlbiB0byB5b3UuCi0gIDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZXN0cnVjdG9yIG9y
IGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFueSByZXNvdXJjZXMgeW91IGFsbG9j
YXRlZCBpbiBgU2V0VXAoKWAgLiBUbyBsZWFybiB3aGVuIHlvdSBzaG91bGQgdXNlIHRoZSBjb25z
dHJ1Y3Rvci9kZXN0cnVjdG9yIGFuZCB3aGVuIHlvdSBzaG91bGQgdXNlIGBTZXRVcCgpL1RlYXJE
b3duKClgLCByZWFkIHRoaXMgW0ZBUSBlbnRyeV0oVjFfNV9GQVEubWQjc2hvdWxkLWktdXNlLXRo
ZS1jb25zdHJ1Y3RvcmRlc3RydWN0b3Itb2YtdGhlLXRlc3QtZml4dHVyZS1vci10aGUtc2V0LXVw
dGVhci1kb3duLWZ1bmN0aW9uKS4KLSAgMS4gSWYgbmVlZGVkLCBkZWZpbmUgc3Vicm91dGluZXMg
Zm9yIHlvdXIgdGVzdHMgdG8gc2hhcmUuCi0KLVdoZW4gdXNpbmcgYSBmaXh0dXJlLCB1c2UgYFRF
U1RfRigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5b3UgdG8KLWFjY2VzcyBv
YmplY3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJlOgotYGBgCi1URVNUX0Yo
dGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgewotIC4uLiB0ZXN0IGJvZHkgLi4uCi19Ci1gYGAK
LQotTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0ZXN0IGNhc2UgbmFt
ZSwgYnV0IGZvciBgVEVTVF9GKClgCi10aGlzIG11c3QgYmUgdGhlIG5hbWUgb2YgdGhlIHRlc3Qg
Zml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBfRmAKLWlzIGZvciBmaXh0
dXJlLgotCi1VbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3RlbSBkb2VzIG5vdCBhbGxv
dyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KLXRoYXQgY2FuIGhhbmRsZSBib3RoIHR5cGVz
IG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEgY29tcGlsZXIKLWVycm9y
LgotCi1BbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgYmVm
b3JlIHVzaW5nIGl0IGluIGEKLWBURVNUX0YoKWAsIG9yIHlvdSdsbCBnZXQgdGhlIGNvbXBpbGVy
IGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCi1kZWNsYXJhdGlvbmAiLgotCi1Gb3IgZWFj
aCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgLCBHb29nbGUgVGVzdCB3aWxsOgotICAxLiBD
cmVhdGUgYSBfZnJlc2hfIHRlc3QgZml4dHVyZSBhdCBydW50aW1lCi0gIDEuIEltbWVkaWF0ZWx5
IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsCi0gIDEuIFJ1biB0aGUgdGVzdAotICAxLiBD
bGVhbiB1cCBieSBjYWxsaW5nIGBUZWFyRG93bigpYAotICAxLiBEZWxldGUgdGhlIHRlc3QgZml4
dHVyZS4gIE5vdGUgdGhhdCBkaWZmZXJlbnQgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGhh
dmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQgR29vZ2xlIFRlc3QgYWx3YXlz
IGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0ZXMgdGhlIG5leHQgb25lLiBH
b29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgZm9yIG11bHRp
cGxlIHRlc3RzLiBBbnkgY2hhbmdlcyBvbmUgdGVzdCBtYWtlcyB0byB0aGUgZml4dHVyZSBkbyBu
b3QgYWZmZWN0IG90aGVyIHRlc3RzLgotCi1BcyBhbiBleGFtcGxlLCBsZXQncyB3cml0ZSB0ZXN0
cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1ZWAsIHdoaWNoCi1oYXMgdGhlIGZv
bGxvd2luZyBpbnRlcmZhY2U6Ci1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFPiAvLyBFIGlzIHRo
ZSBlbGVtZW50IHR5cGUuCi1jbGFzcyBRdWV1ZSB7Ci0gcHVibGljOgotICBRdWV1ZSgpOwotICB2
b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7Ci0gIEUqIERlcXVldWUoKTsgLy8gUmV0dXJu
cyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAg
Li4uCi19OwotYGBgCi0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzLiBCeSBjb252ZW50
aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKLWBGb29UZXN0YCB3aGVyZSBgRm9vYCBp
cyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgotYGBgCi1jbGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBxMV8uRW5xdWV1ZSgxKTsKLSAgICBxMl8uRW5xdWV1ZSgyKTsKLSAgICBxMl8uRW5xdWV1
ZSgzKTsKLSAgfQotCi0gIC8vIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Ci0KLSAgUXVldWU8
aW50PiBxMF87Ci0gIFF1ZXVlPGludD4gcTFfOwotICBRdWV1ZTxpbnQ+IHEyXzsKLX07Ci1gYGAK
LQotSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRlZCBzaW5jZSB3ZSBkb24n
dCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCi1lYWNoIHRlc3QsIG90aGVyIHRoYW4gd2hhdCdzIGFs
cmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KLQotTm93IHdlJ2xsIHdyaXRlIHRlc3RzIHVz
aW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KLWBgYAotVEVTVF9GKFF1ZXVlVGVzdCwg
SXNFbXB0eUluaXRpYWxseSkgewotICBFWFBFQ1RfRVEoMCwgcTBfLnNpemUoKSk7Ci19Ci0KLVRF
U1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3JrcykgewotICBpbnQqIG4gPSBxMF8uRGVxdWV1ZSgp
OwotICBFWFBFQ1RfRVEoTlVMTCwgbik7Ci0KLSAgbiA9IHExXy5EZXF1ZXVlKCk7Ci0gIEFTU0VS
VF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgxLCAqbik7Ci0gIEVYUEVDVF9FUSgwLCBx
MV8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci0KLSAgbiA9IHEyXy5EZXF1ZXVlKCk7Ci0gIEFTU0VS
VF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgyLCAqbik7Ci0gIEVYUEVDVF9FUSgxLCBx
Ml8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci19Ci1gYGAKLQotVGhlIGFib3ZlIHVzZXMgYm90aCBg
QVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBydWxlIG9mIHRodW1iIGlz
Ci10byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0IHRvIGNvbnRpbnVlIHRv
IHJldmVhbCBtb3JlIGVycm9ycwotYWZ0ZXIgdGhlIGFzc2VydGlvbiBmYWlsdXJlLCBhbmQgdXNl
IGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUKLWRvZXNuJ3QgbWFrZSBz
ZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGluIHRoZSBgRGVxdWV1ZWAg
dGVzdCBpcwotYEFTU0VSVF9UUlVFKG4gIT0gTlVMTClgLCBhcyB3ZSBuZWVkIHRvIGRlcmVmZXJl
bmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwKLXdoaWNoIHdvdWxkIGxlYWQgdG8gYSBzZWdmYXVs
dCB3aGVuIGBuYCBpcyBgTlVMTGAuCi0KLVdoZW4gdGhlc2UgdGVzdHMgcnVuLCB0aGUgZm9sbG93
aW5nIGhhcHBlbnM6Ci0gIDEuIEdvb2dsZSBUZXN0IGNvbnN0cnVjdHMgYSBgUXVldWVUZXN0YCBv
YmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCApLgotICAxLiBgdDEuU2V0VXAoKWAgaW5pdGlhbGl6
ZXMgYHQxYCAuCi0gIDEuIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJbml0aWFsbHlgICkgcnVu
cyBvbiBgdDFgIC4KLSAgMS4gYHQxLlRlYXJEb3duKClgIGNsZWFucyB1cCBhZnRlciB0aGUgdGVz
dCBmaW5pc2hlcy4KLSAgMS4gYHQxYCBpcyBkZXN0cnVjdGVkLgotICAxLiBUaGUgYWJvdmUgc3Rl
cHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2JqZWN0LCB0aGlzIHRpbWUg
cnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2AgdGVzdC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWMuCi0KLV9Ob3RlXzogR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBzYXZl
cyBhbGwgX0dvb2dsZSBUZXN0XyBmbGFncyB3aGVuIGEgdGVzdAotb2JqZWN0IGlzIGNvbnN0cnVj
dGVkLCBhbmQgcmVzdG9yZXMgdGhlbSB3aGVuIGl0IGlzIGRlc3RydWN0ZWQuCi0KLSMgSW52b2tp
bmcgdGhlIFRlc3RzICMKLQotYFRFU1QoKWAgYW5kIGBURVNUX0YoKWAgaW1wbGljaXRseSByZWdp
c3RlciB0aGVpciB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiBTbywgdW5saWtlIHdpdGggbWFueSBv
dGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3QgaGF2ZSB0byByZS1saXN0IGFs
bCB5b3VyIGRlZmluZWQgdGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCi0KLUFmdGVyIGRlZmlu
aW5nIHlvdXIgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FMTF9URVNUUygpYCAs
IHdoaWNoIHJldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIGAx
YCBvdGhlcndpc2UuIE5vdGUgdGhhdCBgUlVOX0FMTF9URVNUUygpYCBydW5zIF9hbGwgdGVzdHNf
IGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMsIG9yIGV2ZW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQotV2hlbiBpbnZva2VkLCB0aGUg
YFJVTl9BTExfVEVTVFMoKWAgbWFjcm86Ci0gIDEuIFNhdmVzIHRoZSBzdGF0ZSBvZiBhbGwgIEdv
b2dsZSBUZXN0IGZsYWdzLgotICAxLiBDcmVhdGVzIGEgdGVzdCBmaXh0dXJlIG9iamVjdCBmb3Ig
dGhlIGZpcnN0IHRlc3QuCi0gIDEuIEluaXRpYWxpemVzIGl0IHZpYSBgU2V0VXAoKWAuCi0gIDEu
IFJ1bnMgdGhlIHRlc3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgotICAxLiBDbGVhbnMgdXAgdGhl
IGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KLSAgMS4gRGVsZXRlcyB0aGUgZml4dHVyZS4KLSAg
MS4gUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBHb29nbGUgVGVzdCBmbGFncy4KLSAgMS4gUmVw
ZWF0cyB0aGUgYWJvdmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGlsIGFsbCB0ZXN0cyBo
YXZlIHJ1bi4KLQotSW4gYWRkaXRpb24sIGlmIHRoZSB0ZXh0IGZpeHR1cmUncyBjb25zdHJ1Y3Rv
ciBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGluCi1zdGVwIDIsIHRoZXJlIGlzIG5vIHBvaW50
IGZvciBzdGVwIDMgLSA1IGFuZCB0aGV5IGFyZSB0aHVzIHNraXBwZWQuIFNpbWlsYXJseSwKLWlm
IHN0ZXAgMyBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCBzdGVwIDQgd2lsbCBiZSBza2lwcGVk
LgotCi1fSW1wb3J0YW50XzogWW91IG11c3Qgbm90IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIG9m
IGBSVU5fQUxMX1RFU1RTKClgLCBvciBgZ2NjYAotd2lsbCBnaXZlIHlvdSBhIGNvbXBpbGVyIGVy
cm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0IHRoZQotYXV0b21hdGVk
IHRlc3Rpbmcgc2VydmljZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0ZXN0IGhhcyBwYXNzZWQgYmFz
ZWQgb24gaXRzCi1leGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0ZGVyciBvdXRwdXQ7IHRo
dXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Ci1yZXR1cm4gdGhlIHZhbHVlIG9mIGBSVU5f
QUxMX1RFU1RTKClgLgotCi1BbHNvLCB5b3Ugc2hvdWxkIGNhbGwgYFJVTl9BTExfVEVTVFMoKWAg
b25seSAqKm9uY2UqKi4gQ2FsbGluZyBpdCBtb3JlIHRoYW4gb25jZQotY29uZmxpY3RzIHdpdGgg
c29tZSBhZHZhbmNlZCBHb29nbGUgVGVzdCBmZWF0dXJlcyAoZS5nLiB0aHJlYWQtc2FmZSBkZWF0
aAotdGVzdHMpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLV9BdmFpbGFiaWxpdHlfOiBM
aW51eCwgV2luZG93cywgTWFjLgotCi0jIFdyaXRpbmcgdGhlIG1haW4oKSBGdW5jdGlvbiAjCi0K
LVlvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgotYGBgCi0jaW5jbHVkZSAidGhp
cy9wYWNrYWdlL2Zvby5oIgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLW5hbWVzcGFjZSB7
Ci0KLS8vIFRoZSBmaXh0dXJlIGZvciB0ZXN0aW5nIGNsYXNzIEZvby4KLWNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFlvdSBjYW4gcmVt
b3ZlIGFueSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaWYgaXRzIGJvZHkKLSAg
Ly8gaXMgZW1wdHkuCi0KLSAgRm9vVGVzdCgpIHsKLSAgICAvLyBZb3UgY2FuIGRvIHNldC11cCB3
b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KLSAgfQotCi0gIHZpcnR1YWwgfkZvb1Rlc3QoKSB7Ci0g
ICAgLy8gWW91IGNhbiBkbyBjbGVhbi11cCB3b3JrIHRoYXQgZG9lc24ndCB0aHJvdyBleGNlcHRp
b25zIGhlcmUuCi0gIH0KLQotICAvLyBJZiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Ig
YXJlIG5vdCBlbm91Z2ggZm9yIHNldHRpbmcgdXAKLSAgLy8gYW5kIGNsZWFuaW5nIHVwIGVhY2gg
dGVzdCwgeW91IGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0gIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRl
bHkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIChyaWdodAotICAgIC8vIGJlZm9yZSBlYWNoIHRlc3Qp
LgotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIENvZGUgaGVyZSB3
aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIHRlc3QgKHJpZ2h0Ci0gICAgLy8g
YmVmb3JlIHRoZSBkZXN0cnVjdG9yKS4KLSAgfQotCi0gIC8vIE9iamVjdHMgZGVjbGFyZWQgaGVy
ZSBjYW4gYmUgdXNlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBmb3IgRm9vLgotfTsK
LQotLy8gVGVzdHMgdGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9lcyBBYmMuCi1URVNUX0Yo
Rm9vVGVzdCwgTWV0aG9kQmFyRG9lc0FiYykgewotICBjb25zdCBzdHJpbmcgaW5wdXRfZmlsZXBh
dGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxlLmRhdCI7Ci0gIGNvbnN0IHN0
cmluZyBvdXRwdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215b3V0cHV0Zmls
ZS5kYXQiOwotICBGb28gZjsKLSAgRVhQRUNUX0VRKDAsIGYuQmFyKGlucHV0X2ZpbGVwYXRoLCBv
dXRwdXRfZmlsZXBhdGgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGb28gZG9lcyBYeXouCi1URVNU
X0YoRm9vVGVzdCwgRG9lc1h5eikgewotICAvLyBFeGVyY2lzZXMgdGhlIFh5eiBmZWF0dXJlIG9m
IEZvby4KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoq
YXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgcmV0
dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGUgYDo6dGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZQotVGVz
dCBmbGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxhZ3MuIFRoaXMgYWxsb3dzIHRo
ZSB1c2VyIHRvIGNvbnRyb2wgYQotdGVzdCBwcm9ncmFtJ3MgYmVoYXZpb3IgdmlhIHZhcmlvdXMg
ZmxhZ3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluIFtBZHZhbmNlZEd1aWRlXShWMV81X0FkdmFuY2Vk
R3VpZGUubWQpLgotWW91IG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBjYWxsaW5nIGBS
VU5fQUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3MKLXdvbid0IGJlIHByb3Blcmx5IGluaXRpYWxp
emVkLgotCi1PbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3b3JrcyB3aXRoIHdp
ZGUgc3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKLWluIHByb2dyYW1zIGNvbXBpbGVkIGluIGBV
TklDT0RFYCBtb2RlIGFzIHdlbGwuCi0KLUJ1dCBtYXliZSB5b3UgdGhpbmsgdGhhdCB3cml0aW5n
IGFsbCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/IFdlIGFncmVlIHdp
dGggeW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3QgcHJvdmlkZXMgYSBi
YXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91ciBuZWVkcywgdGhl
biBqdXN0IGxpbmsgeW91ciB0ZXN0IHdpdGggZ3Rlc3RcX21haW4gbGlicmFyeSBhbmQgeW91IGFy
ZSBnb29kIHRvIGdvLgotCi0jIyBJbXBvcnRhbnQgbm90ZSBmb3IgVmlzdWFsIEMrKyB1c2VycyAj
IwotSWYgeW91IHB1dCB5b3VyIHRlc3RzIGludG8gYSBsaWJyYXJ5IGFuZCB5b3VyIGBtYWluKClg
IGZ1bmN0aW9uIGlzIGluIGEgZGlmZmVyZW50IGxpYnJhcnkgb3IgaW4geW91ciAuZXhlIGZpbGUs
IHRob3NlIHRlc3RzIHdpbGwgbm90IHJ1bi4gVGhlIHJlYXNvbiBpcyBhIFtidWddKGh0dHBzOi8v
Y29ubmVjdC5taWNyb3NvZnQuY29tL2ZlZWRiYWNrL3ZpZXdmZWVkYmFjay5hc3B4P0ZlZWRiYWNr
SUQ9MjQ0NDEwJnNpdGVpZD0yMTApIGluIFZpc3VhbCBDKysuIFdoZW4geW91IGRlZmluZSB5b3Vy
IHRlc3RzLCBHb29nbGUgVGVzdCBjcmVhdGVzIGNlcnRhaW4gc3RhdGljIG9iamVjdHMgdG8gcmVn
aXN0ZXIgdGhlbS4gVGhlc2Ugb2JqZWN0cyBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSBlbHNld2hl
cmUgYnV0IHRoZWlyIGNvbnN0cnVjdG9ycyBhcmUgc3RpbGwgc3VwcG9zZWQgdG8gcnVuLiBXaGVu
IFZpc3VhbCBDKysgbGlua2VyIHNlZXMgdGhhdCBub3RoaW5nIGluIHRoZSBsaWJyYXJ5IGlzIHJl
ZmVyZW5jZWQgZnJvbSBvdGhlciBwbGFjZXMgaXQgdGhyb3dzIHRoZSBsaWJyYXJ5IG91dC4gWW91
IGhhdmUgdG8gcmVmZXJlbmNlIHlvdXIgbGlicmFyeSB3aXRoIHRlc3RzIGZyb20geW91ciBtYWlu
IHByb2dyYW0gdG8ga2VlcCB0aGUgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpdC4gSGVyZSBpcyBo
b3cgdG8gZG8gaXQuIFNvbWV3aGVyZSBpbiB5b3VyIGxpYnJhcnkgY29kZSBkZWNsYXJlIGEgZnVu
Y3Rpb246Ci1gYGAKLV9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgUHVsbEluTXlMaWJyYXJ5KCkg
eyByZXR1cm4gMDsgfQotYGBgCi1JZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGli
cmFyeSAobm90IERMTCkgdGhlbiBgX19kZWNsc3BlYyhkbGxleHBvcnQpYCBpcyBub3QgcmVxdWly
ZWQuIE5vdywgaW4geW91ciBtYWluIHByb2dyYW0sIHdyaXRlIGEgY29kZSB0aGF0IGludm9rZXMg
dGhhdCBmdW5jdGlvbjoKLWBgYAotaW50IFB1bGxJbk15TGlicmFyeSgpOwotc3RhdGljIGludCBk
dW1teSA9IFB1bGxJbk15TGlicmFyeSgpOwotYGBgCi1UaGlzIHdpbGwga2VlcCB5b3VyIHRlc3Rz
IHJlZmVyZW5jZWQgYW5kIHdpbGwgbWFrZSB0aGVtIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgYXQgc3Rh
cnR1cC4KLQotSW4gYWRkaXRpb24sIGlmIHlvdSBkZWZpbmUgeW91ciB0ZXN0cyBpbiBhIHN0YXRp
YyBsaWJyYXJ5LCBhZGQgYC9PUFQ6Tk9SRUZgIHRvIHlvdXIgbWFpbiBwcm9ncmFtIGxpbmtlciBv
cHRpb25zLiBJZiB5b3UgdXNlIE1TVkMrKyBJREUsIGdvIHRvIHlvdXIgLmV4ZSBwcm9qZWN0IHBy
b3BlcnRpZXMvQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzL0xpbmtlci9PcHRpbWl6YXRpb24gYW5k
IHNldCBSZWZlcmVuY2VzIHNldHRpbmcgdG8gYEtlZXAgVW5yZWZlcmVuY2VkIERhdGEgKC9PUFQ6
Tk9SRUYpYC4gVGhpcyB3aWxsIGtlZXAgVmlzdWFsIEMrKyBsaW5rZXIgZnJvbSBkaXNjYXJkaW5n
IGluZGl2aWR1YWwgc3ltYm9scyBnZW5lcmF0ZWQgYnkgeW91ciB0ZXN0cyBmcm9tIHRoZSBmaW5h
bCBleGVjdXRhYmxlLgotCi1UaGVyZSBpcyBvbmUgbW9yZSBwaXRmYWxsLCB0aG91Z2guIElmIHlv
dSB1c2UgR29vZ2xlIFRlc3QgYXMgYSBzdGF0aWMgbGlicmFyeSAodGhhdCdzIGhvdyBpdCBpcyBk
ZWZpbmVkIGluIGd0ZXN0LnZjcHJvaikgeW91ciB0ZXN0cyBtdXN0IGFsc28gcmVzaWRlIGluIGEg
c3RhdGljIGxpYnJhcnkuIElmIHlvdSBoYXZlIHRvIGhhdmUgdGhlbSBpbiBhIERMTCwgeW91IF9t
dXN0XyBjaGFuZ2UgR29vZ2xlIFRlc3QgdG8gYnVpbGQgaW50byBhIERMTCBhcyB3ZWxsLiBPdGhl
cndpc2UgeW91ciB0ZXN0cyB3aWxsIG5vdCBydW4gY29ycmVjdGx5IG9yIHdpbGwgbm90IHJ1biBh
dCBhbGwuIFRoZSBnZW5lcmFsIGNvbmNsdXNpb24gaGVyZSBpczogbWFrZSB5b3VyIGxpZmUgZWFz
aWVyIC0gZG8gbm90IHdyaXRlIHlvdXIgdGVzdHMgaW4gbGlicmFyaWVzIQotCi0jIFdoZXJlIHRv
IEdvIGZyb20gSGVyZSAjCi0KLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgdGhlIEdv
b2dsZSBUZXN0IGJhc2ljcy4gWW91IGNhbiBzdGFydCB3cml0aW5nCi1hbmQgcnVubmluZyBHb29n
bGUgVGVzdCB0ZXN0cywgcmVhZCBzb21lIFtzYW1wbGVzXShTYW1wbGVzLm1kKSwgb3IgY29udGlu
dWUgd2l0aAotW0FkdmFuY2VkR3VpZGVdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRl
c2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgotCi0jIEtub3du
IExpbWl0YXRpb25zICMKLQotR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNh
ZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMKLXRocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUg
dGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFpbGFibGUuICBJdAotaXMgY3VycmVudGx5IF91
bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKLWNv
bmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1zIChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0
cyB0aGlzIGlzCi1ub3QgYW4gaXNzdWUgYXMgdXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9u
ZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCi15b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVu
dGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2FyeQotc3luY2hyb25pemF0aW9uIHByaW1pdGl2
ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzVfUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Q
dW1wTWFudWFsLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTcxMDc4OWRkZDFl
ZWE1ZWY1ZTc5M2NhMzUwZTUyZTA0NTU2YTU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kCisr
KyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLQotCi08Yj5QPC9iPnVtcCBpcyA8Yj5VPC9i
PnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCi0KLSMgVGhlIFByb2Js
ZW0gIwotCi1UZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5l
IG1hbnkgY2xhc3NlcywKLWZ1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBh
bG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgotYXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBh
IGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKLWVycm9yLXByb25lIHdvcmsuCi0K
LVZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhl
IHByb2JsZW0uCi1Ib3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRo
ZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCi1pcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVs
eSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5Ci1hcmUgb2Z0ZW4gbm90IGEgZ29v
ZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKLXBvcnRhYmxl
LiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgotCi1BcyBhIHJlc3Vs
dCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMg
dG8KLWdlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5j
ZSBpcyB0aGF0IGl0J3MKLXRlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5k
IHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgotdGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBh
bmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCi1leGFtcGxlLCBhIHNtYWxs
IGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKLW5v
bi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBl
c3BlY2lhbGx5Ci1wYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2RlLgotCi0j
IE91ciBTb2x1dGlvbiAjCi0KLVB1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9n
cmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQotUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNh
bCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Ci1wcmVmZXIpIGlz
IGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0
IGEKLXByb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMr
KyBjb2RlIHBsdXMgbWV0YQotY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhl
IG1ldGEgY29kZSBjYW4gaGFuZGxlCi1pdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0
ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKLWRlZmluaXRpb25zLCBzaW1wbGUgYXJpdGht
ZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCi12aWV3IGl0IGFzIGEg
c21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBpcwotZGVz
aWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBD
KysgbW9kZSwKLWZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1
aXRpdmUgYW5kIGVhc3kgdG8KLW1haW50YWluLgotCi0jIyBIaWdobGlnaHRzICMjCi0KLSAgKiBU
aGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1
bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQg
d29ya3MgY3Jvc3MgcGxhdGZvcm1zLgotICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCBy
ZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUg
d2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRo
aW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5
LgotICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFu
IFhNTC4KLSAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBD
KysgbW9kZS4KLQotIyMgRXhhbXBsZXMgIyMKLQotVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdo
ZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEg
YnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0
aGUgbGluZSk6Ci0KLWBgYAotJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFi
bGUgbi4KLSRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJh
dG9yIGkgKGluY2x1c2l2ZSkuCi0kZm9yIGkgW1sKLSAgICAgICAgICAgICAgICQkIE1ldGEgbG9v
cC4KLS8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCi0kcmFuZ2UgaiAx
Li5pCi10ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KLWNsYXNz
IEZvbyRpIHsKLSRpZiBpID09IDAgW1sKLSAgYmxhaCBhOwotXV0gJGVsaWYgaSA8PSAyIFtbCi0g
IGJsYWggYjsKLV1dICRlbHNlIFtbCi0gIGJsYWggYzsKLV1dCi19OwotCi1dXQotYGBgCi0KLXdp
bGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKLQotYGBgCi0vLyBGb28w
IGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNs
YXNzIEZvbzAgewotICBibGFoIGE7Ci19OwotCi0vLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkg
cHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Ci1jbGFzcyBGb28x
IHsKLSAgYmxhaCBiOwotfTsKLQotLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0
ZXMuCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLWNsYXNz
IEZvbzIgewotICBibGFoIGI7Ci19OwotCi0vLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJl
ZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0
eXBlbmFtZSBBMz4KLWNsYXNzIEZvbzMgewotICBibGFoIGM7Ci19OwotYGBgCi0KLUluIGFub3Ro
ZXIgZXhhbXBsZSwKLQotYGBgCi0kcmFuZ2UgaSAxLi5uCi1GdW5jKCRmb3IgaSArIFtbYSRpXV0p
OwotJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4g
aXRlcmF0aW9ucy4KLWBgYAotCi13aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxp
bmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5g
OgotCi1gYGAKLUZ1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KLUZ1bmMoYTEpOyAg
ICAgICAgICAgIC8vIElmIG4gaXMgMS4KLUZ1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMg
Mi4KLUZ1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KLS8vIEFuZCBzbyBvbi4uLgot
YGBgCi0KLSMjIENvbnN0cnVjdHMgIyMKLQotV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEg
cHJvZ3JhbW1pbmcgY29uc3RydWN0czoKLQotfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEg
bmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUg
Y3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwKLXw6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18ICRyYW5nZSBpZCBleHAuLmV4cCB8
IFNldHMgdGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJl
dXNlZCBpbiBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAgICAgICAgfAotfCAkZm9yIGlkIHNlcCBb
W2NvZGUgXSgubWQpXSB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJl
ZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAot
fCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKLXwgYCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0
ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8Ci18IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAotfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlv
bmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgW1sgY29kZSBdXWAgICAgfCBNZXRh
IGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGNwcF9jb2RlYCAgICAgIHwg
UmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkJCBjb21tZW50YCAg
ICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0qKk5vdGU6Kiog
VG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3Vy
Y2UKLWNvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0
IGFmdGVyIGAkZm9yIGZvb2AKLW9yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMg
cnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCi12ZXJ5IGxvbmcgbGluZXMgdG8g
Z2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5Ci1uZWVk
IHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGlu
ZSB0byBzaG93Ci11cCBpbiB5b3VyIG91dHB1dC4KLQotIyMgR3JhbW1hciAjIwotCi1gYGAKLWNv
ZGUgOjo9IGF0b21pY19jb2RlKgotYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKLSAgICB8
ICR2YXIgaWQgPSBbWyBjb2RlIF1dCi0gICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKLSAgICB8ICRm
b3IgaWQgc2VwIFtbIGNvZGUgXV0KLSAgICB8ICQoJCkKLSAgICB8ICRpZAotICAgIHwgJChleHAp
Ci0gICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKLSAgICB8IFtbIGNvZGUgXV0K
LSAgICB8IGNwcF9jb2RlCi1zZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCi1lbHNlX2Jy
YW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQotICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxz
ZV9icmFuY2gKLSAgICB8IGVtcHR5X3N0cmluZwotZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9p
bl9QeXRob25fc3ludGF4Ci1gYGAKLQotIyMgQ29kZSAjIwotCi1Zb3UgY2FuIGZpbmQgdGhlIHNv
dXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2Jyb3dzZS90cnVuay9zY3JpcHRzL3B1bXAucHkpLiBJ
dCBpcyBzdGlsbAotdmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFs
dGhvdWdoIGl0IGhhcyBiZWVuCi1zdWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVzLiBJZiB5b3Ug
ZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgotcHJvamVjdCwgcGxlYXNlIGxldCB1cyBr
bm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KLWltcHJvdmluZyBQ
dW1wLgotCi0jIyBSZWFsIEV4YW1wbGVzICMjCi0KLVlvdSBjYW4gZmluZCByZWFsLXdvcmxkIGFw
cGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDovL3d3dy5nb29nbGUuY29t
L2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNBJTJGJTJGZ29v
Z2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2NrXShodHRwOi8vd3d3Lmdv
b2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUzQWh0dHAlM0El
MkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNvdXJjZSBmaWxlIGBmb28u
aC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KLQotIyMgVGlwcyAjIwotCi0gICogSWYgYSBtZXRh
IHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFy
YXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0cmluZy4gRm9y
IGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpg
IGlzIDEuCi0gICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5lcywgeW91IGNh
biBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xs
b3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8g
YFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24ndCBjb250YWlu
IHRoaXMgbmV3IGxpbmUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV81X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1Yx
XzVfWGNvZGVHdWlkZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyNGJmNTFi
ZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3NzMwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfWGNvZGVHdWlkZS5t
ZAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLQotCi1UaGlzIGd1aWRlIHdpbGwgZXhw
bGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaW4geW91ciBYY29k
ZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdpbnMgYnkgcXVpY2tseSBl
eHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJzLiBBZnRlciB0aGUgcXVp
Y2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9uYWwgZXhwbGFuYXRpb24g
YWJvdXQgZWFjaCBzdGVwLgotCi0jIFF1aWNrIFN0YXJ0ICMKLQotSGVyZSBpcyB0aGUgcXVpY2sg
Z3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUgcHJvamVjdC4KLQotICAx
LiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXShodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFk
LW9ubHlgCi0gIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xl
dGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFt
ZXdvcmsuCi0gIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNv
ZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0cyIKLSAgMS4gQWRkIHRo
ZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5r
IEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKLSAgMS4g
QWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBi
dWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgotICAxLiBFZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVj
dXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgIkRZTERcX0ZSQU1F
V09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdv
cmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZlIHRvIHRoZSBjb21waWxl
ZCBleGVjdXRhYmxlLgotICAxLiBCdWlsZCBhbmQgR28KLQotVGhlIGZvbGxvd2luZyBzZWN0aW9u
cyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVkIGFib3ZlIGluIGRlcHRo
LCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcg
c29tZSB2YXJpYXRpb25zLgotCi0jIEdldCB0aGUgU291cmNlICMKLQotQ3VycmVudGx5LCB0aGUg
Z3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dl
ZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1
bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3ZuKSwgeW91IGNhbiBnZXQg
dGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21tYW5kOgotCi1gYGAKLXN2
biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdv
b2dsZXRlc3QtcmVhZC1vbmx5Ci1gYGAKLQotQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB3b3Jr
aW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdv
b2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91ciBvd24gU3VidmVyc2lv
biByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwgZXZlcnlvbmUgdGhhdCBj
aGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9m
IEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3aXNoKSB3aXRob3V0IGhh
dmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9m
IHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3BpZWQgY29kZSBpbiB0aGUg
cmVwb3NpdG9yeS4KLQotVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3
b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNpZGUuIFlvdSBtaWdodCBj
aG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRoZSB0cnVuaywgYmVjYXVz
ZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJl
bGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9u
LXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29n
bGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVz
dGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0
byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJlY3RvcnkgaW4geW91ciBy
ZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRoZSBjb2RlLCBidXQgYmUg
aXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgotCi1UaGUgY29tbWFuZCBgc3ZuIHByb3Bl
ZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3IsIG1ha2luZyBlZGl0aW5n
IHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVydHkgc2ltcGxlci4gVGhp
cyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBi
eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2
bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgcGFydGlj
dWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcu
IGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmtgKS4KLQotSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBz
dm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0
YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBU
ZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QvYCBkaXJlY3Rvcnku
Ci0KLWBgYAotW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQgc3ZuOmV4dGVybmFscyB0
cnVuawotZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNv
ZGUuY29tL3N2bi90cnVuawotYGBgCi0KLSMgQWRkIHRoZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9q
ZWN0ICMKLQotVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFt
ZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNjcmliZXMgdHdvIGNvbW1v
biB3YXlzIGJlbG93LgotCi0gICogKipPcHRpb24gMSoqIC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRv
IGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhj
b2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0
IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4gVGhlbiwgYWRkIHRoZSBi
dWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhlICJBZGQtPkV4aXN0aW5n
IEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQcm9qZWN0LT5BZGQuLi4i
IGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBpcyByZWxvY2F0YWJsZSBh
bmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRoYXQgeW91J2xsIG5lZWQg
dG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWlsZGluZyBldmVyeSB0aW1l
IHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4KLSAgKiAqKk9wdGlvbiAy
KiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29v
Z2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5p
dCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xs
IHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRh
dGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBm
aWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3duIFhjb2RlIHByb2plY3Qu
IFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBw
cm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFt
ZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMgKGRpc2N1c3NlZCBiZWxv
dykuCi0KLSMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKLQotVG8gc3RhcnQgd3JpdGluZyB0ZXN0cywg
bWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBh
dmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQgeW91ciB1bml0IHRlc3Qg
c291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0
YXJnZXQuCi0KLU5leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdv
IGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRpb24geW91IGNob3NlIGFi
b3ZlLgotCi0gICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGlsYXRpb24sIFhjb2RlIHdp
bGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZy
YW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRo
IExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGlu
Y2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFkZXIgc2VhcmNoIHBhdGgs
IGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRoZSBsaWJyYXJ5LgotICAq
ICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0aGUgdHJ1bmssIHlvdSds
bCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyICJMaW5rIEJpbmFyeSB3
aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRp
b24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayBhcyBhIGRlcGVuZGVu
Y3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1
cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1
aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0
b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJh
bWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1
biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgotCi0jIFNldCBVcCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52
aXJvbm1lbnQgIwotCi1TaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0
b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250ZW50cy9GcmFtZXdvcmtz
YCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwg
dGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1lIHRvIHNlYXJjaCBmb3Ig
dGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNo
ZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgZW52aXJvbm1lbnQgdmFy
aWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIgQXJndW1lbnRzIHRhYiwg
dW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25tZW50OiIuIFRoZSBwYXRo
IGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhl
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuCi0KLUlmIHlvdSBoYXZl
bid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3JyZWN0bHksIHlvdSBtaWdo
dCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKLQotYGBgCi1bU2Vzc2lvbiBzdGFydGVkIGF0IDIw
MDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQotICBkeWxkOiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBs
b2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0
Ci0gICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9jdW1lbnRzL1NhbmRib3gv
Z3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVzdAotICAgIFJlYXNvbjog
aW1hZ2Ugbm90IGZvdW5kCi1gYGAKLQotVG8gY29ycmVjdCB0aGlzIHByb2JsZW0sIGdvdCB0byB0
aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5j
ZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRo
ZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRo
ZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2
YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSC4KLQot
IyBCdWlsZCBhbmQgR28gIwotCi1Ob3csIHdoZW4geW91IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0
aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21ldGhpbmcgbGlrZSB0aGlz
OgotCi1gYGAKLVtTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAwNjozNjoxMyAtMDYwMC5d
Ci1bPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0t
LS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0tLS0tLS0tLS1dIDIgdGVz
dHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKLVsgUlVOICAgICAgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnN0cnVjdG9yCi1bICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29udmVyc2lvbgotWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29u
dmVyc2lvbgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93bgot
Wz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4uCi1bICBQQVNTRUQgIF0g
MiB0ZXN0cy4KLQotVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBzdGF0dXMgMC4gIAotYGBg
Ci0KLSMgU3VtbWFyeSAjCi0KLVVuaXQgdGVzdGluZyBpcyBhIHZhbHVhYmxlIHdheSB0byBlbnN1
cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3Bt
ZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3Jl
YXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdoaWNoIGludGVncmF0ZXMg
d2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9BZHZhbmNl
ZEd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ODY0YjE2NjdjMWM0MDczMzAwOWQxYTE3MGNjMWFi
YjEwMDg3ODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV82X0FkdmFuY2VkR3VpZGUubWQKKysrIC9kZXYvbnVsbApAQCAt
MSwyMTc4ICswLDAgQEAKLQotCi1Ob3cgdGhhdCB5b3UgaGF2ZSByZWFkIFtQcmltZXJdKFYxXzZf
UHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUgdGVzdHMKLXVzaW5nIEdvb2dsZSBU
ZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50Ci13
aWxsIHNob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1Y3Qg
Y29tcGxleAotZmFpbHVyZSBtZXNzYWdlcywgcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCByZXVz
ZSBhbmQgc3BlZWQgdXAgeW91cgotdGVzdCBmaXh0dXJlcywgYW5kIHVzZSB2YXJpb3VzIGZsYWdz
IHdpdGggeW91ciB0ZXN0cy4KLQotIyBNb3JlIEFzc2VydGlvbnMgIwotCi1UaGlzIHNlY3Rpb24g
Y292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBzdGlsbCBzaWduaWZpY2FudCwK
LWFzc2VydGlvbnMuCi0KLSMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUgIyMKLQotVGhl
c2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4cHJl
c3Npb24uIEluc3RlYWQsCi10aGV5IGdlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRpcmVj
dGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseQotcGVyZm9ybSBhIHRlc3QsIHlvdSBt
YXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZSB0aGVtLgotCi18IGBT
VUNDRUVEKCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS18Ci0KLUdlbmVyYXRlcyBhIHN1Y2Nlc3MuIFRo
aXMgZG9lcyBOT1QgbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2NlZWQuIEEgdGVzdCBpcwotY29u
c2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMgYXNzZXJ0aW9ucyBmYWlsIGR1
cmluZyBpdHMgZXhlY3V0aW9uLgotCi1Ob3RlOiBgU1VDQ0VFRCgpYCBpcyBwdXJlbHkgZG9jdW1l
bnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFueQotdXNlci12aXNpYmxlIG91
dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBtZXNzYWdlcyB0byBHb29nbGUg
VGVzdCdzCi1vdXRwdXQgaW4gdGhlIGZ1dHVyZS4KLQotfCBgRkFJTCgpO2AgIHwgYEFERF9GQUlM
VVJFKCk7YCB8IGBBRERfRkFJTFVSRV9BVCgiYF9maWxlXF9wYXRoX2AiLCBgX2xpbmVcX251bWJl
cl9gKTtgIHwKLXw6LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLWBGQUlMKClgIGdl
bmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHdoaWxlIGBBRERfRkFJTFVSRSgpYCBhbmQgYEFERF9G
QUlMVVJFX0FUKClgIGdlbmVyYXRlIGEgbm9uZmF0YWwKLWZhaWx1cmUuIFRoZXNlIGFyZSB1c2Vm
dWwgd2hlbiBjb250cm9sIGZsb3csIHJhdGhlciB0aGFuIGEgQm9vbGVhbiBleHByZXNzaW9uLAot
ZGV0ZXJlbWluZXMgdGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxlLCB5
b3UgbWlnaHQgd2FudCB0byB3cml0ZQotc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotc3dpdGNoKGV4
cHJlc3Npb24pIHsKLSAgY2FzZSAxOiAuLi4gc29tZSBjaGVja3MgLi4uCi0gIGNhc2UgMjogLi4u
IHNvbWUgb3RoZXIgY2hlY2tzCi0gIC4uLgotICBkZWZhdWx0OiBGQUlMKCkgPDwgIldlIHNob3Vs
ZG4ndCBnZXQgaGVyZS4iOwotfQotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgotCi0jIyBFeGNlcHRpb24gQXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhcmUgZm9yIHZl
cmlmeWluZyB0aGF0IGEgcGllY2Ugb2YgY29kZSB0aHJvd3MgKG9yIGRvZXMgbm90Ci10aHJvdykg
YW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiog
fCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNT
RVJUX1RIUk9XKGBfc3RhdGVtZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IGBFWFBFQ1Rf
VEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgX3N0YXRlbWVudF8g
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgZ2l2ZW4gdHlwZSAgfAotfCBgQVNTRVJUX0FOWV9U
SFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1co
YF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBl
eGNlcHRpb24gb2YgYW55IHR5cGUgICAgICAgIHwKLXwgYEFTU0VSVF9OT19USFJPVyhgX3N0YXRl
bWVudF9gKTtgICAgICAgICAgICAgICAgICB8IGBFWFBFQ1RfTk9fVEhST1coYF9zdGF0ZW1lbnRf
YCk7YCAgICAgICAgICAgICAgICAgfCBfc3RhdGVtZW50XyBkb2Vzbid0IHRocm93IGFueSBleGNl
cHRpb24gICAgICAgICAgICB8Ci0KLUV4YW1wbGVzOgotCi1gYGAKLUFTU0VSVF9USFJPVyhGb28o
NSksIGJhcl9leGNlcHRpb24pOwotCi1FWFBFQ1RfTk9fVEhST1coewotICBpbnQgbiA9IDU7Ci0g
IEJhcigmbik7Ci19KTsKLWBgYAotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1h
Yzsgc2luY2UgdmVyc2lvbiAxLjEuMC4KLQotIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJl
dHRlciBFcnJvciBNZXNzYWdlcyAjIwotCi1FdmVuIHRob3VnaCBHb29nbGUgVGVzdCBoYXMgYSBy
aWNoIHNldCBvZiBhc3NlcnRpb25zLCB0aGV5IGNhbiBuZXZlciBiZQotY29tcGxldGUsIGFzIGl0
J3MgaW1wb3NzaWJsZSAobm9yIGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRlIGFsbCB0aGUgc2Nl
bmFyaW9zCi1hIHVzZXIgbWlnaHQgcnVuIGludG8uIFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNl
ciBoYXMgdG8gdXNlIGBFWFBFQ1RfVFJVRSgpYAotdG8gY2hlY2sgYSBjb21wbGV4IGV4cHJlc3Np
b24sIGZvciBsYWNrIG9mIGEgYmV0dGVyIG1hY3JvLiBUaGlzIGhhcyB0aGUgcHJvYmxlbQotb2Yg
bm90IHNob3dpbmcgeW91IHRoZSB2YWx1ZXMgb2YgdGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9u
LCBtYWtpbmcgaXQgaGFyZCB0bwotdW5kZXJzdGFuZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29y
a2Fyb3VuZCwgc29tZSB1c2VycyBjaG9vc2UgdG8gY29uc3RydWN0IHRoZQotZmFpbHVyZSBtZXNz
YWdlIGJ5IHRoZW1zZWx2ZXMsIHN0cmVhbWluZyBpdCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93
ZXZlciwgdGhpcwotaXMgYXdrd2FyZCBlc3BlY2lhbGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFz
IHNpZGUtZWZmZWN0cyBvciBpcyBleHBlbnNpdmUgdG8KLWV2YWx1YXRlLgotCi1Hb29nbGUgVGVz
dCBnaXZlcyB5b3UgdGhyZWUgZGlmZmVyZW50IG9wdGlvbnMgdG8gc29sdmUgdGhpcyBwcm9ibGVt
OgotCi0jIyMgVXNpbmcgYW4gRXhpc3RpbmcgQm9vbGVhbiBGdW5jdGlvbiAjIyMKLQotSWYgeW91
IGFscmVhZHkgaGF2ZSBhIGZ1bmN0aW9uIG9yIGEgZnVuY3RvciB0aGF0IHJldHVybnMgYGJvb2xg
IChvciBhIHR5cGUKLXRoYXQgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGBib29sYCks
IHlvdSBjYW4gdXNlIGl0IGluIGEgX3ByZWRpY2F0ZQotYXNzZXJ0aW9uXyB0byBnZXQgdGhlIGZ1
bmN0aW9uIGFyZ3VtZW50cyBwcmludGVkIGZvciBmcmVlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9u
KiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBg
QVNTRVJUX1BSRUQxKGBfcHJlZDEsIHZhbDFfYCk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEoYF9w
cmVkMSwgdmFsMV9gKTtgIHwgX3ByZWQxKHZhbDEpXyByZXR1cm5zIHRydWUgfAotfCBgQVNTRVJU
X1BSRUQyKGBfcHJlZDIsIHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRDIoYF9wcmVkMiwg
dmFsMSwgdmFsMl9gKTtgIHwgIF9wcmVkMih2YWwxLCB2YWwyKV8gcmV0dXJucyB0cnVlIHwKLXwg
IC4uLiAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAg
ICAgfAotCi1JbiB0aGUgYWJvdmUsIF9wcmVkbl8gaXMgYW4gX25fLWFyeSBwcmVkaWNhdGUgZnVu
Y3Rpb24gb3IgZnVuY3Rvciwgd2hlcmUKLV92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8g
YXJlIGl0cyBhcmd1bWVudHMuIFRoZSBhc3NlcnRpb24gc3VjY2VlZHMKLWlmIHRoZSBwcmVkaWNh
dGUgcmV0dXJucyBgdHJ1ZWAgd2hlbiBhcHBsaWVkIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFu
ZCBmYWlscwotb3RoZXJ3aXNlLiBXaGVuIHRoZSBhc3NlcnRpb24gZmFpbHMsIGl0IHByaW50cyB0
aGUgdmFsdWUgb2YgZWFjaCBhcmd1bWVudC4gSW4KLWVpdGhlciBjYXNlLCB0aGUgYXJndW1lbnRz
IGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgotCi1IZXJlJ3MgYW4gZXhhbXBsZS4gR2l2ZW4K
LQotYGBgCi0vLyBSZXR1cm5zIHRydWUgaWZmIG0gYW5kIG4gaGF2ZSBubyBjb21tb24gZGl2aXNv
cnMgZXhjZXB0IDEuCi1ib29sIE11dHVhbGx5UHJpbWUoaW50IG0sIGludCBuKSB7IC4uLiB9Ci1j
b25zdCBpbnQgYSA9IDM7Ci1jb25zdCBpbnQgYiA9IDQ7Ci1jb25zdCBpbnQgYyA9IDEwOwotYGBg
Ci0KLXRoZSBhc3NlcnRpb24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBhLCBiKTtgIHdp
bGwgc3VjY2VlZCwgd2hpbGUgdGhlCi1hc3NlcnRpb24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVBy
aW1lLCBiLCBjKTtgIHdpbGwgZmFpbCB3aXRoIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci0hTXV0dWFs
bHlQcmltZShiLCBjKSBpcyBmYWxzZSwgd2hlcmU8YnI+Ci1iIGlzIDQ8YnI+Ci1jIGlzIDEwPGJy
PgotPC9wcmU+Ci0KLSoqTm90ZXM6KioKLQotICAxLiBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJy
b3IgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcgYEFTU0VSVF9QUkVE
KmAgb3IgYEVYUEVDVF9QUkVEKmAsIHBsZWFzZSBzZWUgW3RoaXNdKHYxXzZfRkFRLm1kI2l0aGUt
Y29tcGlsZXItY29tcGxhaW5zLWFib3V0LXVuZGVmaW5lZC1yZWZlcmVuY2VzLXRvLXNvbWUtc3Rh
dGljLWNvbnN0LW1lbWJlci12YXJpYWJsZXMtYnV0LWktZGlkLWRlZmluZS10aGVtLWluLXRoZS1j
bGFzcy1ib2R5LXdoYXRzLXdyb25nKSBmb3IgaG93IHRvIHJlc29sdmUgaXQuCi0gIDEuIEN1cnJl
bnRseSB3ZSBvbmx5IHByb3ZpZGUgcHJlZGljYXRlIGFzc2VydGlvbnMgb2YgYXJpdHkgPD0gNS4g
SWYgeW91IG5lZWQgYSBoaWdoZXItYXJpdHkgYXNzZXJ0aW9uLCBsZXQgdXMga25vdy4KLQotX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMKLQotIyMjIFVzaW5nIGEgRnVuY3Rpb24g
VGhhdCBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCAjIyMKLQotV2hpbGUgYEVYUEVDVF9QUkVE
KigpYCBhbmQgZnJpZW5kcyBhcmUgaGFuZHkgZm9yIGEgcXVpY2sgam9iLCB0aGUKLXN5bnRheCBp
cyBub3Qgc2F0aXNmYWN0b3J5OiB5b3UgaGF2ZSB0byB1c2UgZGlmZmVyZW50IG1hY3JvcyBmb3IK
LWRpZmZlcmVudCBhcml0aWVzLCBhbmQgaXQgZmVlbHMgbW9yZSBsaWtlIExpc3AgdGhhbiBDKysu
ICBUaGUKLWA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgY2xhc3Mgc29sdmVzIHRoaXMgcHJv
YmxlbS4KLQotQW4gYEFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHJlcHJlc2VudHMgdGhlIHJlc3Vs
dCBvZiBhbiBhc3NlcnRpb24KLSh3aGV0aGVyIGl0J3MgYSBzdWNjZXNzIG9yIGEgZmFpbHVyZSwg
YW5kIGFuIGFzc29jaWF0ZWQgbWVzc2FnZSkuICBZb3UKLWNhbiBjcmVhdGUgYW4gYEFzc2VydGlv
blJlc3VsdGAgdXNpbmcgb25lIG9mIHRoZXNlIGZhY3RvcnkKLWZ1bmN0aW9uczoKLQotYGBgCi1u
YW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0IG9iamVj
dCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKLS8vIHN1Y2NlZWRlZC4KLUFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLS8vIFJldHVybnMgYW4gQXNzZXJ0aW9u
UmVzdWx0IG9iamVjdCB0byBpbmRpY2F0ZSB0aGF0IGFuIGFzc2VydGlvbiBoYXMKLS8vIGZhaWxl
ZC4KLUFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCk7Ci0KLX0KLWBgYAotCi1Zb3Ug
Y2FuIHRoZW4gdXNlIHRoZSBgPDxgIG9wZXJhdG9yIHRvIHN0cmVhbSBtZXNzYWdlcyB0byB0aGUK
LWBBc3NlcnRpb25SZXN1bHRgIG9iamVjdC4KLQotVG8gcHJvdmlkZSBtb3JlIHJlYWRhYmxlIG1l
c3NhZ2VzIGluIEJvb2xlYW4gYXNzZXJ0aW9ucwotKGUuZy4gYEVYUEVDVF9UUlVFKClgKSwgd3Jp
dGUgYSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zCi1gQXNzZXJ0aW9uUmVzdWx0YCBp
bnN0ZWFkIG9mIGBib29sYC4gRm9yIGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUKLWBJc0V2ZW4oKWAg
YXM6Ci0KLWBgYAotOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7Ci0g
IGlmICgobiAlIDIpID09IDApCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOwotICBlbHNlCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8
IG4gPDwgIiBpcyBvZGQiOwotfQotYGBgCi0KLWluc3RlYWQgb2Y6Ci0KLWBgYAotYm9vbCBJc0V2
ZW4oaW50IG4pIHsKLSAgcmV0dXJuIChuICUgMikgPT0gMDsKLX0KLWBgYAotCi10aGUgZmFpbGVk
IGFzc2VydGlvbiBgRVhQRUNUX1RSVUUoSXNFdmVuKEZpYig0KSkpYCB3aWxsIHByaW50OgotCi08
cHJlPgotVmFsdWUgb2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KLUFjdHVhbDogZmFsc2UgKCozIGlz
IG9kZCopPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotaW5zdGVhZCBvZiBhIG1v
cmUgb3BhcXVlCi0KLTxwcmU+Ci1WYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgotQWN0dWFs
OiBmYWxzZTxicj4KLUV4cGVjdGVkOiB0cnVlPGJyPgotPC9wcmU+Ci0KLUlmIHlvdSB3YW50IGlu
Zm9ybWF0aXZlIG1lc3NhZ2VzIGluIGBFWFBFQ1RfRkFMU0VgIGFuZCBgQVNTRVJUX0ZBTFNFYAot
YXMgd2VsbCwgYW5kIGFyZSBmaW5lIHdpdGggbWFraW5nIHRoZSBwcmVkaWNhdGUgc2xvd2VyIGlu
IHRoZSBzdWNjZXNzCi1jYXNlLCB5b3UgY2FuIHN1cHBseSBhIHN1Y2Nlc3MgbWVzc2FnZToKLQot
YGBgCi06OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKLSAgaWYgKChu
ICUgMikgPT0gMCkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwg
biA8PCAiIGlzIGV2ZW4iOwotICBlbHNlCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOwotfQotYGBgCi0KLVRoZW4gdGhlIHN0YXRlbWVu
dCBgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIoNikpKWAgd2lsbCBwcmludAotCi08cHJlPgotVmFs
dWUgb2Y6ICFJc0V2ZW4oRmliKDYpKTxicj4KLUFjdHVhbDogdHJ1ZSAoOCBpcyBldmVuKTxicj4K
LUV4cGVjdGVkOiBmYWxzZTxicj4KLTwvcHJlPgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdp
bmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjQuMS4KLQotIyMjIFVzaW5nIGEgUHJlZGljYXRl
LUZvcm1hdHRlciAjIyMKLQotSWYgeW91IGZpbmQgdGhlIGRlZmF1bHQgbWVzc2FnZSBnZW5lcmF0
ZWQgYnkgYChBU1NFUlR8RVhQRUNUKV9QUkVEKmAgYW5kCi1gKEFTU0VSVHxFWFBFQ1QpXyhUUlVF
fEZBTFNFKWAgdW5zYXRpc2ZhY3RvcnksIG9yIHNvbWUgYXJndW1lbnRzIHRvIHlvdXIKLXByZWRp
Y2F0ZSBkbyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgdG8gYG9zdHJlYW1gLCB5b3UgY2FuIGluc3Rl
YWQgdXNlIHRoZQotZm9sbG93aW5nIF9wcmVkaWNhdGUtZm9ybWF0dGVyIGFzc2VydGlvbnNfIHRv
IF9mdWxseV8gY3VzdG9taXplIGhvdyB0aGUKLW1lc3NhZ2UgaXMgZm9ybWF0dGVkOgotCi18ICoq
RmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoq
IHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tfAotfCBgQVNTRVJUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFf
YCk7YCAgICAgICAgfCBgRVhQRUNUX1BSRURfRk9STUFUMShgX3ByZWRcX2Zvcm1hdDEsIHZhbDFf
YCk7IHwgX3ByZWRcX2Zvcm1hdDEodmFsMSlfIGlzIHN1Y2Nlc3NmdWwgfAotfCBgQVNTRVJUX1BS
RURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJF
RF9GT1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgX3ByZWRcX2Zvcm1h
dDIodmFsMSwgdmFsMilfIGlzIHN1Y2Nlc3NmdWwgfAotfCBgLi4uYCAgICAgICAgICAgICAgIHwg
YC4uLmAgICAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICB8Ci0KLVRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gdGhpcyBhbmQgdGhlIHByZXZpb3VzIHR3byBncm91cHMgb2YgbWFjcm9zIGlzIHRo
YXQgaW5zdGVhZCBvZgotYSBwcmVkaWNhdGUsIGAoQVNTRVJUfEVYUEVDVClfUFJFRF9GT1JNQVQq
YCB0YWtlIGEgX3ByZWRpY2F0ZS1mb3JtYXR0ZXJfCi0oX3ByZWRcX2Zvcm1hdG5fKSwgd2hpY2gg
aXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHdpdGggdGhlIHNpZ25hdHVyZToKLQotYDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRpY2F0ZUZvcm1hdHRlcm4oY29uc3QgY2hhciogYF9leHBy
MV9gLCBjb25zdCBjaGFyKiBgX2V4cHIyX2AsIC4uLiBjb25zdCBjaGFyKiBgX2V4cHJuX2AsIFQx
IGBfdmFsMV9gLCBUMiBgX3ZhbDJfYCwgLi4uIFRuIGBfdmFsbl9gKTtgCi0KLXdoZXJlIF92YWwx
XywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIHByZWRpY2F0
ZQotYXJndW1lbnRzLCBhbmQgX2V4cHIxXywgX2V4cHIyXywgLi4uLCBhbmQgX2V4cHJuXyBhcmUg
dGhlIGNvcnJlc3BvbmRpbmcKLWV4cHJlc3Npb25zIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3Vy
Y2UgY29kZS4gVGhlIHR5cGVzIGBUMWAsIGBUMmAsIC4uLiwgYW5kCi1gVG5gIGNhbiBiZSBlaXRo
ZXIgdmFsdWUgdHlwZXMgb3IgcmVmZXJlbmNlIHR5cGVzLiBGb3IgZXhhbXBsZSwgaWYgYW4KLWFy
Z3VtZW50IGhhcyB0eXBlIGBGb29gLCB5b3UgY2FuIGRlY2xhcmUgaXQgYXMgZWl0aGVyIGBGb29g
IG9yIGBjb25zdCBGb28mYCwKLXdoaWNoZXZlciBpcyBhcHByb3ByaWF0ZS4KLQotQSBwcmVkaWNh
dGUtZm9ybWF0dGVyIHJldHVybnMgYSBgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIG9iamVj
dCB0byBpbmRpY2F0ZQotd2hldGhlciB0aGUgYXNzZXJ0aW9uIGhhcyBzdWNjZWVkZWQgb3Igbm90
LiBUaGUgb25seSB3YXkgdG8gY3JlYXRlIHN1Y2ggYW4KLW9iamVjdCBpcyB0byBjYWxsIG9uZSBv
ZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9uczoKLQotQXMgYW4gZXhhbXBsZSwgbGV0J3MgaW1wcm92
ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aGljaCB1c2Vz
IGBFWFBFQ1RfUFJFRDIoKWA6Ci0KLWBgYAotLy8gUmV0dXJucyB0aGUgc21hbGxlc3QgcHJpbWUg
Y29tbW9uIGRpdmlzb3Igb2YgbSBhbmQgbiwKLS8vIG9yIDEgd2hlbiBtIGFuZCBuIGFyZSBtdXR1
YWxseSBwcmltZS4KLWludCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNvcihpbnQgbSwgaW50IG4p
IHsgLi4uIH0KLQotLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZvciBhc3NlcnRpbmcgdGhhdCB0
d28gaW50ZWdlcnMgYXJlIG11dHVhbGx5IHByaW1lLgotOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1
bHQgQXNzZXJ0TXV0dWFsbHlQcmltZShjb25zdCBjaGFyKiBtX2V4cHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5fZXhwciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuKSB7Ci0gIGlm
IChNdXR1YWxseVByaW1lKG0sIG4pKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1
Y2Nlc3MoKTsKLQotICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKLSAgICAg
IDw8IG1fZXhwciA8PCAiIGFuZCAiIDw8IG5fZXhwciA8PCAiICgiIDw8IG0gPDwgIiBhbmQgIiA8
PCBuCi0gICAgICA8PCAiKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCAiIDw8ICJhcyB0aGV5IGhh
dmUgYSBjb21tb24gZGl2aXNvciAiCi0gICAgICA8PCBTbWFsbGVzdFByaW1lQ29tbW9uRGl2aXNv
cihtLCBuKTsKLX0KLWBgYAotCi1XaXRoIHRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciwgd2UgY2Fu
IHVzZQotCi1gYGAKLUVYUEVDVF9QUkVEX0ZPUk1BVDIoQXNzZXJ0TXV0dWFsbHlQcmltZSwgYiwg
Yyk7Ci1gYGAKLQotdG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UKLQotPHByZT4KLWIgYW5kIGMgKDQg
YW5kIDEwKSBhcmUgbm90IG11dHVhbGx5IHByaW1lLCBhcyB0aGV5IGhhdmUgYSBjb21tb24gZGl2
aXNvciAyLjxicj4KLTwvcHJlPgotCi1BcyB5b3UgbWF5IGhhdmUgcmVhbGl6ZWQsIG1hbnkgb2Yg
dGhlIGFzc2VydGlvbnMgd2UgaW50cm9kdWNlZCBlYXJsaWVyIGFyZQotc3BlY2lhbCBjYXNlcyBv
ZiBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuIEluIGZhY3QsIG1vc3Qgb2YgdGhlbSBh
cmUKLWluZGVlZCBkZWZpbmVkIHVzaW5nIGAoRVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4K
LQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLQotIyMgRmxvYXRpbmct
UG9pbnQgQ29tcGFyaXNvbiAjIwotCi1Db21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBp
cyB0cmlja3kuIER1ZSB0byByb3VuZC1vZmYgZXJyb3JzLCBpdCBpcwotdmVyeSB1bmxpa2VseSB0
aGF0IHR3byBmbG9hdGluZy1wb2ludHMgd2lsbCBtYXRjaCBleGFjdGx5LiBUaGVyZWZvcmUsCi1g
QVNTRVJUX0VRYCAncyBuYWl2ZSBjb21wYXJpc29uIHVzdWFsbHkgZG9lc24ndCB3b3JrLiBBbmQg
c2luY2UgZmxvYXRpbmctcG9pbnRzCi1jYW4gaGF2ZSBhIHdpZGUgdmFsdWUgcmFuZ2UsIG5vIHNp
bmdsZSBmaXhlZCBlcnJvciBib3VuZCB3b3Jrcy4gSXQncyBiZXR0ZXIgdG8KLWNvbXBhcmUgYnkg
YSBmaXhlZCByZWxhdGl2ZSBlcnJvciBib3VuZCwgZXhjZXB0IGZvciB2YWx1ZXMgY2xvc2UgdG8g
MCBkdWUgdG8KLXRoZSBsb3NzIG9mIHByZWNpc2lvbiB0aGVyZS4KLQotSW4gZ2VuZXJhbCwgZm9y
IGZsb2F0aW5nLXBvaW50IGNvbXBhcmlzb24gdG8gbWFrZSBzZW5zZSwgdGhlIHVzZXIgbmVlZHMg
dG8KLWNhcmVmdWxseSBjaG9vc2UgdGhlIGVycm9yIGJvdW5kLiBJZiB0aGV5IGRvbid0IHdhbnQg
b3IgY2FyZSB0bywgY29tcGFyaW5nIGluCi10ZXJtcyBvZiBVbml0cyBpbiB0aGUgTGFzdCBQbGFj
ZSAoVUxQcykgaXMgYSBnb29kIGRlZmF1bHQsIGFuZCBHb29nbGUgVGVzdAotcHJvdmlkZXMgYXNz
ZXJ0aW9ucyB0byBkbyB0aGlzLiBGdWxsIGRldGFpbHMgYWJvdXQgVUxQcyBhcmUgcXVpdGUgbG9u
ZzsgaWYgeW91Ci13YW50IHRvIGxlYXJuIG1vcmUsIHNlZQotW3RoaXMgYXJ0aWNsZSBvbiBmbG9h
dCBjb21wYXJpc29uXShodHRwOi8vd3d3LmN5Z251cy1zb2Z0d2FyZS5jb20vcGFwZXJzL2NvbXBh
cmluZ2Zsb2F0cy9jb21wYXJpbmdmbG9hdHMuaHRtKS4KLQotIyMjIEZsb2F0aW5nLVBvaW50IE1h
Y3JvcyAjIyMKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24q
KiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9GTE9BVF9FUShgX2V4cGVjdGVk
LCBhY3R1YWxfYCk7YCAgfCBgRVhQRUNUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtg
IHwgdGhlIHR3byBgZmxvYXRgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKLXwgYEFTU0VSVF9E
T1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCBgRVhQRUNUX0RPVUJMRV9FUShgX2V4
cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGRvdWJsZWAgdmFsdWVzIGFyZSBhbG1vc3Qg
ZXF1YWwgfAotCi1CeSAiYWxtb3N0IGVxdWFsIiwgd2UgbWVhbiB0aGUgdHdvIHZhbHVlcyBhcmUg
d2l0aGluIDQgVUxQJ3MgZnJvbSBlYWNoCi1vdGhlci4KLQotVGhlIGZvbGxvd2luZyBhc3NlcnRp
b25zIGFsbG93IHlvdSB0byBjaG9vc2UgdGhlIGFjY2VwdGFibGUgZXJyb3IgYm91bmQ6Ci0KLXwg
KipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVz
KiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfTkVBUihgX3ZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7
YCB8IGBFWFBFQ1RfTkVBUmBfKHZhbDEsIHZhbDIsIGFic1xfZXJyb3JfYCk7YCB8IHRoZSBkaWZm
ZXJlbmNlIGJldHdlZW4gX3ZhbDFfIGFuZCBfdmFsMl8gZG9lc24ndCBleGNlZWQgdGhlIGdpdmVu
IGFic29sdXRlIGVycm9yIHwKLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMu
Ci0KLSMjIyBGbG9hdGluZy1Qb2ludCBQcmVkaWNhdGUtRm9ybWF0IEZ1bmN0aW9ucyAjIyMKLQot
U29tZSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGFyZSB1c2VmdWwsIGJ1dCBub3QgdGhhdCBv
ZnRlbiB1c2VkLiBJbiBvcmRlcgotdG8gYXZvaWQgYW4gZXhwbG9zaW9uIG9mIG5ldyBtYWNyb3Ms
IHdlIHByb3ZpZGUgdGhlbSBhcyBwcmVkaWNhdGUtZm9ybWF0Ci1mdW5jdGlvbnMgdGhhdCBjYW4g
YmUgdXNlZCBpbiBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLgotYEVYUEVDVF9QUkVE
X0ZPUk1BVDJgLCBldGMpLgotCi1gYGAKLUVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpG
bG9hdExFLCB2YWwxLCB2YWwyKTsKLUVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpEb3Vi
bGVMRSwgdmFsMSwgdmFsMik7Ci1gYGAKLQotVmVyaWZpZXMgdGhhdCBfdmFsMV8gaXMgbGVzcyB0
aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIF92YWwyXy4gWW91IGNhbgotcmVwbGFjZSBgRVhQRUNU
X1BSRURfRk9STUFUMmAgaW4gdGhlIGFib3ZlIHRhYmxlIHdpdGggYEFTU0VSVF9QUkVEX0ZPUk1B
VDJgLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgV2luZG93
cyBIUkVTVUxUIGFzc2VydGlvbnMgIyMKLQotVGhlc2UgYXNzZXJ0aW9ucyB0ZXN0IGZvciBgSFJF
U1VMVGAgc3VjY2VzcyBvciBmYWlsdXJlLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX0hS
RVNVTFRfU1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgYEVYUEVDVF9IUkVTVUxUX1NVQ0NF
RURFRChgX2V4cHJlc3Npb25fYCk7YCB8IF9leHByZXNzaW9uXyBpcyBhIHN1Y2Nlc3MgYEhSRVNV
TFRgIHwKLXwgYEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IGBF
WFBFQ1RfSFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBfZXhwcmVzc2lvbl8g
aXMgYSBmYWlsdXJlIGBIUkVTVUxUYCB8Ci0KLVRoZSBnZW5lcmF0ZWQgb3V0cHV0IGNvbnRhaW5z
IHRoZSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlCi1hc3NvY2lhdGVkIHdpdGggdGhlIGBI
UkVTVUxUYCBjb2RlIHJldHVybmVkIGJ5IF9leHByZXNzaW9uXy4KLQotWW91IG1pZ2h0IHVzZSB0
aGVtIGxpa2UgdGhpczoKLQotYGBgCi1DQ29tUHRyIHNoZWxsOwotQVNTRVJUX0hSRVNVTFRfU1VD
Q0VFREVEKHNoZWxsLkNvQ3JlYXRlSW5zdGFuY2UoTCJTaGVsbC5BcHBsaWNhdGlvbiIpKTsKLUND
b21WYXJpYW50IGVtcHR5OwotQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKHNoZWxsLT5TaGVsbEV4
ZWN1dGUoQ0NvbUJTVFIodXJsKSwgZW1wdHksIGVtcHR5LCBlbXB0eSwgZW1wdHkpKTsKLWBgYAot
Ci1fQXZhaWxhYmlsaXR5XzogV2luZG93cy4KLQotIyMgVHlwZSBBc3NlcnRpb25zICMjCi0KLVlv
dSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KLWBgYAotOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBl
RXE8VDEsIFQyPigpOwotYGBgCi10byBhc3NlcnQgdGhhdCB0eXBlcyBgVDFgIGFuZCBgVDJgIGFy
ZSB0aGUgc2FtZS4gIFRoZSBmdW5jdGlvbiBkb2VzCi1ub3RoaW5nIGlmIHRoZSBhc3NlcnRpb24g
aXMgc2F0aXNmaWVkLiAgSWYgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQsCi10aGUgZnVuY3Rpb24g
Y2FsbCB3aWxsIGZhaWwgdG8gY29tcGlsZSwgYW5kIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdl
Ci13aWxsIGxpa2VseSAoZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcikgc2hvdyB5b3UgdGhlIGFj
dHVhbCB2YWx1ZXMgb2YKLWBUMWAgYW5kIGBUMmAuICBUaGlzIGlzIG1haW5seSB1c2VmdWwgaW5z
aWRlIHRlbXBsYXRlIGNvZGUuCi0KLV9DYXZlYXQ6XyBXaGVuIHVzZWQgaW5zaWRlIGEgbWVtYmVy
IGZ1bmN0aW9uIG9mIGEgY2xhc3MgdGVtcGxhdGUgb3IgYQotZnVuY3Rpb24gdGVtcGxhdGUsIGBT
dGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQyPigpYCBpcyBlZmZlY3RpdmUgX29ubHkgaWZfCi10aGUg
ZnVuY3Rpb24gaXMgaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVuOgotYGBgCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZvaWQgQmFyKCkgeyA6
OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQsIFQ+KCk7IH0KLX07Ci1gYGAKLXRoZSBj
b2RlOgotYGBgCi12b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9Ci1gYGAKLXdpbGwgX25v
dF8gZ2VuZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgYEZvbzxib29sPjo6QmFyKClgIGlzIG5l
dmVyCi1hY3R1YWxseSBpbnN0YW50aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKLWBgYAotdm9p
ZCBUZXN0MigpIHsgRm9vPGJvb2w+IGZvbzsgZm9vLkJhcigpOyB9Ci1gYGAKLXRvIGNhdXNlIGEg
Y29tcGlsZXIgZXJyb3IuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBz
aW5jZSB2ZXJzaW9uIDEuMy4wLgotCi0jIyBBc3NlcnRpb24gUGxhY2VtZW50ICMjCi0KLVlvdSBj
YW4gdXNlIGFzc2VydGlvbnMgaW4gYW55IEMrKyBmdW5jdGlvbi4gSW4gcGFydGljdWxhciwgaXQg
ZG9lc24ndAotaGF2ZSB0byBiZSBhIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBU
aGUgb25lIGNvbnN0cmFpbnQgaXMKLXRoYXQgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGEgZmF0
YWwgZmFpbHVyZSAoYEZBSUwqYCBhbmQgYEFTU0VSVF8qYCkKLWNhbiBvbmx5IGJlIHVzZWQgaW4g
dm9pZC1yZXR1cm5pbmcgZnVuY3Rpb25zLiBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YKLUdvb2ds
ZSBUZXN0IG5vdCB1c2luZyBleGNlcHRpb25zLiBCeSBwbGFjaW5nIGl0IGluIGEgbm9uLXZvaWQg
ZnVuY3Rpb24KLXlvdSdsbCBnZXQgYSBjb25mdXNpbmcgY29tcGlsZSBlcnJvciBsaWtlCi1gImVy
cm9yOiB2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlImAuCi0KLUlmIHlv
dSBuZWVkIHRvIHVzZSBhc3NlcnRpb25zIGluIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG5vbi12
b2lkLCBvbmUgb3B0aW9uCi1pcyB0byBtYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVl
IGluIGFuIG91dCBwYXJhbWV0ZXIgaW5zdGVhZC4gRm9yCi1leGFtcGxlLCB5b3UgY2FuIHJld3Jp
dGUgYFQyIEZvbyhUMSB4KWAgdG8gYHZvaWQgRm9vKFQxIHgsIFQyKiByZXN1bHQpYC4gWW91Ci1u
ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGAqcmVzdWx0YCBjb250YWlucyBzb21lIHNlbnNpYmxlIHZh
bHVlIGV2ZW4gd2hlbiB0aGUKLWZ1bmN0aW9uIHJldHVybnMgcHJlbWF0dXJlbHkuIEFzIHRoZSBm
dW5jdGlvbiBub3cgcmV0dXJucyBgdm9pZGAsIHlvdSBjYW4gdXNlCi1hbnkgYXNzZXJ0aW9uIGlu
c2lkZSBvZiBpdC4KLQotSWYgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uJ3MgdHlwZSBpcyBub3QgYW4g
b3B0aW9uLCB5b3Ugc2hvdWxkIGp1c3QgdXNlCi1hc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgbm9u
LWZhdGFsIGZhaWx1cmVzLCBzdWNoIGFzIGBBRERfRkFJTFVSRSpgIGFuZAotYEVYUEVDVF8qYC4K
LQotX05vdGVfOiBDb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFyZSBub3QgY29uc2lkZXJl
ZCB2b2lkLXJldHVybmluZwotZnVuY3Rpb25zLCBhY2NvcmRpbmcgdG8gdGhlIEMrKyBsYW5ndWFn
ZSBzcGVjaWZpY2F0aW9uLCBhbmQgc28geW91IG1heSBub3QgdXNlCi1mYXRhbCBhc3NlcnRpb25z
IGluIHRoZW0uIFlvdSdsbCBnZXQgYSBjb21waWxhdGlvbiBlcnJvciBpZiB5b3UgdHJ5LiBBIHNp
bXBsZQotd29ya2Fyb3VuZCBpcyB0byB0cmFuc2ZlciB0aGUgZW50aXJlIGJvZHkgb2YgdGhlIGNv
bnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgdG8gYQotcHJpdmF0ZSB2b2lkLXJldHVybmluZyBtZXRo
b2QuIEhvd2V2ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBhIGZhdGFsCi1hc3NlcnRpb24g
ZmFpbHVyZSBpbiBhIGNvbnN0cnVjdG9yIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgY3VycmVudCB0
ZXN0LCBhcyB5b3VyCi1pbnR1aXRpb24gbWlnaHQgc3VnZ2VzdDsgaXQgbWVyZWx5IHJldHVybnMg
ZnJvbSB0aGUgY29uc3RydWN0b3IgZWFybHksIHBvc3NpYmx5Ci1sZWF2aW5nIHlvdXIgb2JqZWN0
IGluIGEgcGFydGlhbGx5LWNvbnN0cnVjdGVkIHN0YXRlLiBMaWtld2lzZSwgYSBmYXRhbAotYXNz
ZXJ0aW9uIGZhaWx1cmUgaW4gYSBkZXN0cnVjdG9yIG1heSBsZWF2ZSB5b3VyIG9iamVjdCBpbiBh
Ci1wYXJ0aWFsbHktZGVzdHJ1Y3RlZCBzdGF0ZS4gVXNlIGFzc2VydGlvbnMgY2FyZWZ1bGx5IGlu
IHRoZXNlIHNpdHVhdGlvbnMhCi0KLSMgVGVhY2hpbmcgR29vZ2xlIFRlc3QgSG93IHRvIFByaW50
IFlvdXIgVmFsdWVzICMKLQotV2hlbiBhIHRlc3QgYXNzZXJ0aW9uIHN1Y2ggYXMgYEVYUEVDVF9F
UWAgZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUKLWFyZ3VtZW50IHZhbHVlcyB0byBoZWxw
IHlvdSBkZWJ1Zy4gIEl0IGRvZXMgdGhpcyB1c2luZyBhCi11c2VyLWV4dGVuc2libGUgdmFsdWUg
cHJpbnRlci4KLQotVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBidWlsdC1pbiBDKysg
dHlwZXMsIG5hdGl2ZSBhcnJheXMsIFNUTAotY29udGFpbmVycywgYW5kIGFueSB0eXBlIHRoYXQg
c3VwcG9ydHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKLXR5cGVzLCBpdCBwcmludHMg
dGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91IHRoZQotdXNlciBj
YW4gZmlndXJlIGl0IG91dC4KLQotQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBwcmludGVyIGlz
IF9leHRlbnNpYmxlXy4gIFRoYXQgbWVhbnMKLXlvdSBjYW4gdGVhY2ggaXQgdG8gZG8gYSBiZXR0
ZXIgam9iIGF0IHByaW50aW5nIHlvdXIgcGFydGljdWxhciB0eXBlCi10aGFuIHRvIGR1bXAgdGhl
IGJ5dGVzLiAgVG8gZG8gdGhhdCwgZGVmaW5lIGA8PGAgZm9yIHlvdXIgdHlwZToKLQotYGBgCi0j
aW5jbHVkZSA8aW9zdHJlYW0+Ci0KLW5hbWVzcGFjZSBmb28gewotCi1jbGFzcyBCYXIgeyAuLi4g
fTsgIC8vIFdlIHdhbnQgR29vZ2xlIFRlc3QgdG8gYmUgYWJsZSB0byBwcmludCBpbnN0YW5jZXMg
b2YgdGhpcy4KLQotLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgPDwgb3BlcmF0b3IgaXMgZGVm
aW5lZCBpbiB0aGUgU0FNRQotLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBCYXIuICBDKysncyBs
b29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KLTo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6
c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgQmFyJiBiYXIpIHsKLSAgcmV0dXJuIG9zIDw8IGJhci5E
ZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcwotfQot
Ci19ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQotU29tZXRpbWVzLCB0aGlzIG1pZ2h0IG5vdCBi
ZSBhbiBvcHRpb246IHlvdXIgdGVhbSBtYXkgY29uc2lkZXIgaXQgYmFkCi1zdHlsZSB0byBoYXZl
IGEgYDw8YCBvcGVyYXRvciBmb3IgYEJhcmAsIG9yIGBCYXJgIG1heSBhbHJlYWR5IGhhdmUgYQot
YDw8YCBvcGVyYXRvciB0aGF0IGRvZXNuJ3QgZG8gd2hhdCB5b3Ugd2FudCAoYW5kIHlvdSBjYW5u
b3QgY2hhbmdlCi1pdCkuICBJZiBzbywgeW91IGNhbiBpbnN0ZWFkIGRlZmluZSBhIGBQcmludFRv
KClgIGZ1bmN0aW9uIGxpa2UgdGhpczoKLQotYGBgCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLW5h
bWVzcGFjZSBmb28gewotCi1jbGFzcyBCYXIgeyAuLi4gfTsKLQotLy8gSXQncyBpbXBvcnRhbnQg
dGhhdCBQcmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQotLy8gbmFtZXNwYWNlIHRoYXQg
ZGVmaW5lcyBCYXIuICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KLXZvaWQgUHJp
bnRUbyhjb25zdCBCYXImIGJhciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCBiYXIu
RGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBgCi0KLUlmIHlvdSBoYXZlIGRlZmluZWQgYm90aCBg
PDxgIGFuZCBgUHJpbnRUbygpYCwgdGhlIGxhdHRlciB3aWxsIGJlIHVzZWQKLXdoZW4gR29vZ2xl
IFRlc3QgaXMgY29uY2VybmVkLiAgVGhpcyBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSBob3cgdGhl
IHZhbHVlCi1hcHBlYXJzIGluIEdvb2dsZSBUZXN0J3Mgb3V0cHV0IHdpdGhvdXQgYWZmZWN0aW5n
IGNvZGUgdGhhdCByZWxpZXMgb24gdGhlCi1iZWhhdmlvciBvZiBpdHMgYDw8YCBvcGVyYXRvci4K
LQotSWYgeW91IHdhbnQgdG8gcHJpbnQgYSB2YWx1ZSBgeGAgdXNpbmcgR29vZ2xlIFRlc3QncyB2
YWx1ZSBwcmludGVyCi15b3Vyc2VsZiwganVzdCBjYWxsIGA6OnRlc3Rpbmc6OlByaW50VG9TdHJp
bmcoYF94X2ApYCwgd2hpY2gKLXJldHVybnMgYW4gYHN0ZDo6c3RyaW5nYDoKLQotYGBgCi12ZWN0
b3I8cGFpcjxCYXIsIGludD4gPiBiYXJfaW50cyA9IEdldEJhckludFZlY3RvcigpOwotCi1FWFBF
Q1RfVFJVRShJc0NvcnJlY3RCYXJJbnRWZWN0b3IoYmFyX2ludHMpKQotICAgIDw8ICJiYXJfaW50
cyA9ICIgPDwgOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKGJhcl9pbnRzKTsKLWBgYAotCi0jIERl
YXRoIFRlc3RzICMKLQotSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25z
IHRoYXQgY2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUKLWlmIGEgY29uZGl0aW9uIGlzIG5v
dCBtZXQuIFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFt
Ci1pcyBpbiBhIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJs
aWVzdCBwb3NzaWJsZSB0aW1lIGFmdGVyCi1zb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVk
LiBJZiB0aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAotdGhlbiB0aGUg
cHJvZ3JhbSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxl
YWQgdG8gbWVtb3J5Ci1jb3JydXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNl
IGl0IGlzIHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QKLXRoYXQgc3VjaCBhc3NlcnRpb24gc3Rh
dGVtZW50cyB3b3JrIGFzIGV4cGVjdGVkLgotCi1TaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hl
Y2tzIGNhdXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKLV9kZWF0
aCB0ZXN0c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJv
Z3JhbSB0ZXJtaW5hdGVzCi0oZXhjZXB0IGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbikgaW4gYW4g
ZXhwZWN0ZWQgZmFzaGlvbiBpcyBhbHNvIGEgZGVhdGggdGVzdC4KLQotTm90ZSB0aGF0IGlmIGEg
cGllY2Ugb2YgY29kZSB0aHJvd3MgYW4gZXhjZXB0aW9uLCB3ZSBkb24ndCBjb25zaWRlciBpdCAi
ZGVhdGgiCi1mb3IgdGhlIHB1cnBvc2Ugb2YgZGVhdGggdGVzdHMsIGFzIHRoZSBjYWxsZXIgb2Yg
dGhlIGNvZGUgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbgotYW5kIGF2b2lkIHRoZSBjcmFzaC4g
SWYgeW91IHdhbnQgdG8gdmVyaWZ5IGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHlvdXIgY29kZSwKLXNl
ZSBbRXhjZXB0aW9uIEFzc2VydGlvbnNdKCNleGNlcHRpb24tYXNzZXJ0aW9ucykuCi0KLUlmIHlv
dSB3YW50IHRvIHRlc3QgYEVYUEVDVF8qKCkvQVNTRVJUXyooKWAgZmFpbHVyZXMgaW4geW91ciB0
ZXN0IGNvZGUsIHNlZSBbQ2F0Y2hpbmcgRmFpbHVyZXNdKCNjYXRjaGluZy1mYWlsdXJlcykuCi0K
LSMjIEhvdyB0byBXcml0ZSBhIERlYXRoIFRlc3QgIyMKLQotR29vZ2xlIFRlc3QgaGFzIHRoZSBm
b2xsb3dpbmcgbWFjcm9zIHRvIHN1cHBvcnQgZGVhdGggdGVzdHM6Ci0KLXwgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Ci18IGBBU1NFUlRfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEgo
YF9zdGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2
ZW4gZXJyb3IgfAotfCBgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVn
ZXhfYCk7IHwgYEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2Ap
OyB8IGlmIGRlYXRoIHRlc3RzIGFyZSBzdXBwb3J0ZWQsIHZlcmlmaWVzIHRoYXQgX3N0YXRlbWVu
dF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcjsgb3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhp
bmcgfAotfCBgQVNTRVJUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHwg
YEVYUEVDVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8X3N0YXRlbWVu
dF8gZXhpdHMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IgYW5kIGl0cyBleGl0IGNvZGUgbWF0Y2hlcyBf
cHJlZGljYXRlXyB8Ci0KLXdoZXJlIF9zdGF0ZW1lbnRfIGlzIGEgc3RhdGVtZW50IHRoYXQgaXMg
ZXhwZWN0ZWQgdG8gY2F1c2UgdGhlIHByb2Nlc3MgdG8KLWRpZSwgX3ByZWRpY2F0ZV8gaXMgYSBm
dW5jdGlvbiBvciBmdW5jdGlvbiBvYmplY3QgdGhhdCBldmFsdWF0ZXMgYW4gaW50ZWdlcgotZXhp
dCBzdGF0dXMsIGFuZCBfcmVnZXhfIGlzIGEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgdGhlIHN0
ZGVyciBvdXRwdXQgb2YKLV9zdGF0ZW1lbnRfIGlzIGV4cGVjdGVkIHRvIG1hdGNoLiBOb3RlIHRo
YXQgX3N0YXRlbWVudF8gY2FuIGJlIF9hbnkgdmFsaWQKLXN0YXRlbWVudF8gKGluY2x1ZGluZyBf
Y29tcG91bmQgc3RhdGVtZW50XykgYW5kIGRvZXNuJ3QgaGF2ZSB0byBiZSBhbgotZXhwcmVzc2lv
bi4KLQotQXMgdXN1YWwsIHRoZSBgQVNTRVJUYCB2YXJpYW50cyBhYm9ydCB0aGUgY3VycmVudCB0
ZXN0IGZ1bmN0aW9uLCB3aGlsZSB0aGUKLWBFWFBFQ1RgIHZhcmlhbnRzIGRvIG5vdC4KLQotKipO
b3RlOioqIFdlIHVzZSB0aGUgd29yZCAiY3Jhc2giIGhlcmUgdG8gbWVhbiB0aGF0IHRoZSBwcm9j
ZXNzCi10ZXJtaW5hdGVzIHdpdGggYSBfbm9uLXplcm9fIGV4aXQgc3RhdHVzIGNvZGUuICBUaGVy
ZSBhcmUgdHdvCi1wb3NzaWJpbGl0aWVzOiBlaXRoZXIgdGhlIHByb2Nlc3MgaGFzIGNhbGxlZCBg
ZXhpdCgpYCBvciBgX2V4aXQoKWAKLXdpdGggYSBub24temVybyB2YWx1ZSwgb3IgaXQgbWF5IGJl
IGtpbGxlZCBieSBhIHNpZ25hbC4KLQotVGhpcyBtZWFucyB0aGF0IGlmIF9zdGF0ZW1lbnRfIHRl
cm1pbmF0ZXMgdGhlIHByb2Nlc3Mgd2l0aCBhIDAgZXhpdAotY29kZSwgaXQgaXMgX25vdF8gY29u
c2lkZXJlZCBhIGNyYXNoIGJ5IGBFWFBFQ1RfREVBVEhgLiAgVXNlCi1gRVhQRUNUX0VYSVRgIGlu
c3RlYWQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgb3IgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QKLXRo
ZSBleGl0IGNvZGUgbW9yZSBwcmVjaXNlbHkuCi0KLUEgcHJlZGljYXRlIGhlcmUgbXVzdCBhY2Nl
cHQgYW4gYGludGAgYW5kIHJldHVybiBhIGBib29sYC4gVGhlIGRlYXRoIHRlc3QKLXN1Y2NlZWRz
IG9ubHkgaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYC4gR29vZ2xlIFRlc3QgZGVmaW5l
cyBhIGZldwotcHJlZGljYXRlcyB0aGF0IGhhbmRsZSB0aGUgbW9zdCBjb21tb24gY2FzZXM6Ci0K
LWBgYAotOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZShleGl0X2NvZGUpCi1gYGAKLQotVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkgd2l0aCB0
aGUgZ2l2ZW4gZXhpdAotY29kZS4KLQotYGBgCi06OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKHNp
Z25hbF9udW1iZXIpICAvLyBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCi1gYGAKLQotVGhpcyBl
eHByZXNzaW9uIGlzIGB0cnVlYCBpZiB0aGUgcHJvZ3JhbSB3YXMga2lsbGVkIGJ5IHRoZSBnaXZl
biBzaWduYWwuCi0KLVRoZSBgKl9ERUFUSGAgbWFjcm9zIGFyZSBjb252ZW5pZW50IHdyYXBwZXJz
IGZvciBgKl9FWElUYCB0aGF0IHVzZSBhIHByZWRpY2F0ZQotdGhhdCB2ZXJpZmllcyB0aGUgcHJv
Y2VzcycgZXhpdCBjb2RlIGlzIG5vbi16ZXJvLgotCi1Ob3RlIHRoYXQgYSBkZWF0aCB0ZXN0IG9u
bHkgY2FyZXMgYWJvdXQgdGhyZWUgdGhpbmdzOgotCi0gIDEuIGRvZXMgX3N0YXRlbWVudF8gYWJv
cnQgb3IgZXhpdCB0aGUgcHJvY2Vzcz8KLSAgMS4gKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfRVhJ
VGAgYW5kIGBFWFBFQ1RfRVhJVGApIGRvZXMgdGhlIGV4aXQgc3RhdHVzIHNhdGlzZnkgX3ByZWRp
Y2F0ZV8/ICBPciAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9ERUFUSGAgYW5kIGBFWFBFQ1RfREVB
VEhgKSBpcyB0aGUgZXhpdCBzdGF0dXMgbm9uLXplcm8/ICBBbmQKLSAgMS4gZG9lcyB0aGUgc3Rk
ZXJyIG91dHB1dCBtYXRjaCBfcmVnZXhfPwotCi1JbiBwYXJ0aWN1bGFyLCBpZiBfc3RhdGVtZW50
XyBnZW5lcmF0ZXMgYW4gYEFTU0VSVF8qYCBvciBgRVhQRUNUXypgIGZhaWx1cmUsIGl0IHdpbGwg
Kipub3QqKiBjYXVzZSB0aGUgZGVhdGggdGVzdCB0byBmYWlsLCBhcyBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGRvbid0IGFib3J0IHRoZSBwcm9jZXNzLgotCi1UbyB3cml0ZSBhIGRlYXRoIHRlc3Qs
IHNpbXBseSB1c2Ugb25lIG9mIHRoZSBhYm92ZSBtYWNyb3MgaW5zaWRlIHlvdXIgdGVzdAotZnVu
Y3Rpb24uIEZvciBleGFtcGxlLAotCi1gYGAKLVRFU1QoTXkqRGVhdGhUZXN0KiwgRm9vKSB7Ci0g
IC8vIFRoaXMgZGVhdGggdGVzdCB1c2VzIGEgY29tcG91bmQgc3RhdGVtZW50LgotICBBU1NFUlRf
REVBVEgoeyBpbnQgbiA9IDU7IEZvbygmbik7IH0sICJFcnJvciBvbiBsaW5lIC4qIG9mIEZvbygp
Iik7Ci19Ci1URVNUKE15RGVhdGhUZXN0LCBOb3JtYWxFeGl0KSB7Ci0gIEVYUEVDVF9FWElUKE5v
cm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0K
LVRFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsKLSAgRVhQRUNUX0VYSVQoS2lsbE15c2Vs
ZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiU2VuZGluZyBteXNlbGYg
dW5ibG9ja2FibGUgc2lnbmFsIik7Ci19Ci1gYGAKLQotdmVyaWZpZXMgdGhhdDoKLQotICAqIGNh
bGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBl
cnJvciBtZXNzYWdlLAotICAqIGNhbGxpbmcgYE5vcm1hbEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9j
ZXNzIHRvIHByaW50IGAiU3VjY2VzcyJgIHRvIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGV4aXQgY29k
ZSAwLCBhbmQKLSAgKiBjYWxsaW5nIGBLaWxsTXlzZWxmKClgIGtpbGxzIHRoZSBwcm9jZXNzIHdp
dGggc2lnbmFsIGBTSUdLSUxMYC4KLQotVGhlIHRlc3QgZnVuY3Rpb24gYm9keSBtYXkgY29udGFp
biBvdGhlciBhc3NlcnRpb25zIGFuZCBzdGF0ZW1lbnRzIGFzIHdlbGwsIGlmCi1uZWNlc3Nhcnku
Ci0KLV9JbXBvcnRhbnQ6XyBXZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIGZvbGxvdyB0aGUg
Y29udmVudGlvbiBvZiBuYW1pbmcgeW91cgotdGVzdCBjYXNlIChub3QgdGVzdCkgYCpEZWF0aFRl
c3RgIHdoZW4gaXQgY29udGFpbnMgYSBkZWF0aCB0ZXN0LCBhcwotZGVtb25zdHJhdGVkIGluIHRo
ZSBhYm92ZSBleGFtcGxlLiBUaGUgYERlYXRoIFRlc3RzIEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJl
bG93Ci1leHBsYWlucyB3aHkuCi0KLUlmIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBi
eSBub3JtYWwgdGVzdHMgYW5kIGRlYXRoIHRlc3RzLCB5b3UKLWNhbiB1c2UgdHlwZWRlZiB0byBp
bnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRoZSBmaXh0dXJlIGNsYXNzIGFuZCBhdm9pZAotZHVwbGlj
YXRpbmcgaXRzIGNvZGU6Ci1gYGAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsgLi4uIH07Ci0KLXR5cGVkZWYgRm9vVGVzdCBGb29EZWF0aFRlc3Q7Ci0KLVRFU1RfRihG
b29UZXN0LCBEb2VzVGhpcykgewotICAvLyBub3JtYWwgdGVzdAotfQotCi1URVNUX0YoRm9vRGVh
dGhUZXN0LCBEb2VzVGhhdCkgewotICAvLyBkZWF0aCB0ZXN0Ci19Ci1gYGAKLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIEN5Z3dp
biwgYW5kIE1hYyAodGhlIGxhdHRlciB0aHJlZSBhcmUgc3VwcG9ydGVkIHNpbmNlIHYxLjMuMCku
ICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRIX0lGX1NVUFBPUlRFRGAgYXJlIG5ldyBpbiB2MS40LjAu
Ci0KLSMjIFJlZ3VsYXIgRXhwcmVzc2lvbiBTeW50YXggIyMKLQotT24gUE9TSVggc3lzdGVtcyAo
ZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQgTWFjKSwgR29vZ2xlIFRlc3QgdXNlcyB0aGUKLVtQT1NJ
WCBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25dKGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9v
bmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNlZGVmcy94YmRfY2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQot
c3ludGF4IGluIGRlYXRoIHRlc3RzLiBUbyBsZWFybiBhYm91dCB0aGlzIHN5bnRheCwgeW91IG1h
eSB3YW50IHRvIHJlYWQgdGhpcyBbV2lraXBlZGlhIGVudHJ5XShodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJl
c3Npb25zKS4KLQotT24gV2luZG93cywgR29vZ2xlIFRlc3QgdXNlcyBpdHMgb3duIHNpbXBsZSBy
ZWd1bGFyIGV4cHJlc3Npb24KLWltcGxlbWVudGF0aW9uLiBJdCBsYWNrcyBtYW55IGZlYXR1cmVz
IHlvdSBjYW4gZmluZCBpbiBQT1NJWCBleHRlbmRlZAotcmVndWxhciBleHByZXNzaW9ucy4gIEZv
ciBleGFtcGxlLCB3ZSBkb24ndCBzdXBwb3J0IHVuaW9uIChgInh8eSJgKSwKLWdyb3VwaW5nIChg
Iih4eSkiYCksIGJyYWNrZXRzIChgIlt4eV0iYCksIGFuZCByZXBldGl0aW9uIGNvdW50Ci0oYCJ4
ezUsN30iYCksIGFtb25nIG90aGVycy4gQmVsb3cgaXMgd2hhdCB3ZSBkbyBzdXBwb3J0IChgQWAg
ZGVub3RlcyBhCi1saXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNpbmdsZSBg
XFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhgCi1hbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Np
b25zLik6Ci0KLXwgYGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgIHwKLXw6
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYFxcZGAgfCBtYXRj
aGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAgICAgICAgfAotfCBgXFxEYCB8IG1hdGNoZXMgYW55IGNo
YXJhY3RlciB0aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdCB8Ci18IGBcXGZgIHwgbWF0Y2hlcyBg
XGZgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcbmAgfCBtYXRjaGVzIGBcbmAgICAgICAg
ICAgICAgICAgICAgICAgfAotfCBgXFxyYCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAgICAgICAg
ICAgICB8Ci18IGBcXHNgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5jbHVkaW5n
IGBcbmAgfAotfCBgXFxTYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgd2hp
dGVzcGFjZSB8Ci18IGBcXHRgIHwgbWF0Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAgICAgIHwK
LXwgYFxcdmAgfCBtYXRjaGVzIGBcdmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFx3YCB8
IG1hdGNoZXMgYW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0IHwKLXwgYFxcV2AgfCBt
YXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKLXwgYFxcY2Ag
fCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUgYSBwdW5j
dHVhdGlvbiB8Ci18IGAuYCB8IG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgZXhjZXB0IGBc
bmAgfAotfCBgQT9gIHwgbWF0Y2hlcyAwIG9yIDEgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYEEq
YCB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8Ci18IGBBK2AgfCBtYXRj
aGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAotfCBgXmAgfCBtYXRjaGVzIHRoZSBi
ZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAotfCBgJGAgfCBt
YXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkgfAotfCBg
eHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93ZWQgYnkgYHlgICAgICAgIHwKLQotVG8gaGVscCB5b3Ug
ZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxpdHkgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLAot
R29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNybyBgR1RFU1RfVVNFU19QT1NJWF9SRT0xYCB3aGVuIGl0
IHVzZXMgUE9TSVgKLWV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIG9yIGBHVEVTVF9VU0VT
X1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVzZXMKLXRoZSBzaW1wbGUgdmVyc2lvbi4gIElmIHlvdSB3
YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29yayBpbiBib3RoCi1jYXNlcywgeW91IGNhbiBlaXRo
ZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9zIG9yIHVzZSB0aGUgbW9yZSBsaW1pdGVkCi1zeW50YXgg
b25seS4KLQotIyMgSG93IEl0IFdvcmtzICMjCi0KLVVuZGVyIHRoZSBob29kLCBgQVNTRVJUX0VY
SVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nlc3MgYW5kIGV4ZWN1dGVzIHRoZQotZGVhdGggdGVzdCBz
dGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNzLiBUaGUgZGV0YWlscyBvZiBvZiBob3cgcHJlY2lzZWx5
Ci10aGF0IGhhcHBlbnMgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBhbmQgdGhlIHZhcmlhYmxlCi1g
Ojp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpYCAod2hpY2ggaXMgaW5pdGlh
bGl6ZWQgZnJvbSB0aGUKLWNvbW1hbmQtbGluZSBmbGFnIGAtLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGVgKS4KLQotICAqIE9uIFBPU0lYIHN5c3RlbXMsIGBmb3JrKClgIChvciBgY2xvbmUoKWAgb24g
TGludXgpIGlzIHVzZWQgdG8gc3Bhd24gdGhlIGNoaWxkLCBhZnRlciB3aGljaDoKLSAgICAqIElm
IHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAiZmFzdCJgLCB0aGUgZGVhdGggdGVzdCBzdGF0ZW1l
bnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0ZWQuCi0gICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1
ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhlIGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHVu
aXQgdGVzdCBiaW5hcnkganVzdCBhcyBpdCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLCBidXQgd2l0
aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNhdXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVu
ZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuLgotICAqIE9uIFdpbmRvd3MsIHRoZSBjaGlsZCBp
cyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3JlYXRlUHJvY2VzcygpYCBBUEksIGFuZCByZS1leGVjdXRl
cyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1c3QgdGhlIHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNv
bnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRoZSBgdGhyZWFkc2FmZWAgbW9kZSBv
biBQT1NJWC4KLQotT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgYXJlIGlsbGVnYWwgYW5k
IHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8KLWZhaWwuIEN1cnJlbnRseSwgdGhlIGZsYWcn
cyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFzdCJgLiBIb3dldmVyLCB3ZSByZXNlcnZlIHRoZQotcmln
aHQgdG8gY2hhbmdlIGl0IGluIHRoZSBmdXR1cmUuIFRoZXJlZm9yZSwgeW91ciB0ZXN0cyBzaG91
bGQgbm90IGRlcGVuZCBvbgotdGhpcy4KLQotSW4gZWl0aGVyIGNhc2UsIHRoZSBwYXJlbnQgcHJv
Y2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgdG8gY29tcGxldGUsIGFuZCBjaGVja3Mg
dGhhdAotCi0gIDEuIHRoZSBjaGlsZCdzIGV4aXQgc3RhdHVzIHNhdGlzZmllcyB0aGUgcHJlZGlj
YXRlLCBhbmQKLSAgMS4gdGhlIGNoaWxkJ3Mgc3RkZXJyIG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbi4KLQotSWYgdGhlIGRlYXRoIHRlc3Qgc3RhdGVtZW50IHJ1bnMgdG8gY29tcGxldGlv
biB3aXRob3V0IGR5aW5nLCB0aGUgY2hpbGQKLXByb2Nlc3Mgd2lsbCBub25ldGhlbGVzcyB0ZXJt
aW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9uIGZhaWxzLgotCi0jIyBEZWF0aCBUZXN0cyBBbmQgVGhy
ZWFkcyAjIwotCi1UaGUgcmVhc29uIGZvciB0aGUgdHdvIGRlYXRoIHRlc3Qgc3R5bGVzIGhhcyB0
byBkbyB3aXRoIHRocmVhZCBzYWZldHkuIER1ZSB0bwotd2VsbC1rbm93biBwcm9ibGVtcyB3aXRo
IGZvcmtpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMsIGRlYXRoIHRlc3RzIHNob3VsZAot
YmUgcnVuIGluIGEgc2luZ2xlLXRocmVhZGVkIGNvbnRleHQuIFNvbWV0aW1lcywgaG93ZXZlciwg
aXQgaXNuJ3QgZmVhc2libGUgdG8KLWFycmFuZ2UgdGhhdCBraW5kIG9mIGVudmlyb25tZW50LiBG
b3IgZXhhbXBsZSwgc3RhdGljYWxseS1pbml0aWFsaXplZCBtb2R1bGVzCi1tYXkgc3RhcnQgdGhy
ZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVyIHJlYWNoZWQuIE9uY2UgdGhyZWFkcyBoYXZlIGJlZW4g
Y3JlYXRlZCwKLWl0IG1heSBiZSBkaWZmaWN1bHQgb3IgaW1wb3NzaWJsZSB0byBjbGVhbiB0aGVt
IHVwLgotCi1Hb29nbGUgVGVzdCBoYXMgdGhyZWUgZmVhdHVyZXMgaW50ZW5kZWQgdG8gcmFpc2Ug
YXdhcmVuZXNzIG9mIHRocmVhZGluZyBpc3N1ZXMuCi0KLSAgMS4gQSB3YXJuaW5nIGlzIGVtaXR0
ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIGEgZGVhdGggdGVzdCBpcyBl
bmNvdW50ZXJlZC4KLSAgMS4gVGVzdCBjYXNlcyB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIkRlYXRo
VGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxsIG90aGVyIHRlc3RzLgotICAxLiBJdCB1c2VzIGBjbG9u
ZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzIG9uIExp
bnV4IChgY2xvbmUoKWAgaXMgbm90IGF2YWlsYWJsZSBvbiBDeWd3aW4gYW5kIE1hYyksIGFzIGBm
b3JrKClgIGlzIG1vcmUgbGlrZWx5IHRvIGNhdXNlIHRoZSBjaGlsZCB0byBoYW5nIHdoZW4gdGhl
IHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0aXBsZSB0aHJlYWRzLgotCi1JdCdzIHBlcmZlY3RseSBm
aW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGluc2lkZSBhIGRlYXRoIHRlc3Qgc3RhdGVtZW50OyB0aGV5
IGFyZQotZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzIGFuZCBjYW5ub3QgYWZmZWN0IHRo
ZSBwYXJlbnQuCi0KLSMjIERlYXRoIFRlc3QgU3R5bGVzICMjCi0KLVRoZSAidGhyZWFkc2FmZSIg
ZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50cm9kdWNlZCBpbiBvcmRlciB0byBoZWxwIG1pdGlnYXRl
IHRoZQotcmlza3Mgb2YgdGVzdGluZyBpbiBhIHBvc3NpYmx5IG11bHRpdGhyZWFkZWQgZW52aXJv
bm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFzZWQKLXRlc3QgZXhlY3V0aW9uIHRpbWUgKHBvdGVudGlh
bGx5IGRyYW1hdGljYWxseSBzbykgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuCi1XZSBzdWdn
ZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRlZmF1bHQgImZhc3QiIHN0eWxlIHVubGVzcyB5b3VyIHRl
c3QgaGFzIHNwZWNpZmljCi1wcm9ibGVtcyB3aXRoIGl0LgotCi1Zb3UgY2FuIGNob29zZSBhIHBh
cnRpY3VsYXIgc3R5bGUgb2YgZGVhdGggdGVzdHMgYnkgc2V0dGluZyB0aGUgZmxhZwotcHJvZ3Jh
bW1hdGljYWxseToKLQotYGBgCi06OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGUgPSAidGhyZWFkc2FmZSI7Ci1gYGAKLQotWW91IGNhbiBkbyB0aGlzIGluIGBtYWluKClgIHRv
IHNldCB0aGUgc3R5bGUgZm9yIGFsbCBkZWF0aCB0ZXN0cyBpbiB0aGUKLWJpbmFyeSwgb3IgaW4g
aW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxsIHRoYXQgZmxhZ3MgYXJlIHNhdmVkIGJlZm9yZSBydW5u
aW5nIGVhY2gKLXRlc3QgYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMsIHNvIHlvdSBuZWVkIG5vdCBk
byB0aGF0IHlvdXJzZWxmLiBGb3IgZXhhbXBsZToKLQotYGBgCi1URVNUKE15RGVhdGhUZXN0LCBU
ZXN0T25lKSB7Ci0gIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0
aHJlYWRzYWZlIjsKLSAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgInRocmVhZHNhZmUiIHN0
eWxlOgotICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERpZSgpLCAiIik7Ci19Ci0KLVRFU1QoTXlE
ZWF0aFRlc3QsIFRlc3RUd28pIHsKLSAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBpbiB0aGUgImZhc3Qi
IHN0eWxlOgotICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERpZSgpLCAiIik7Ci19Ci0KLWludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLSAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxl
ID0gImZhc3QiOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotYGBgCi0KLSMjIENhdmVh
dHMgIyMKLQotVGhlIF9zdGF0ZW1lbnRfIGFyZ3VtZW50IG9mIGBBU1NFUlRfRVhJVCgpYCBjYW4g
YmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQuCi1JZiBpdCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVu
Y3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVtZW50IG9yIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlv
biwKLXRoZSBkZWF0aCB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBmYWlsZWQuICBTb21lIEdv
b2dsZSBUZXN0IG1hY3JvcyBtYXkgcmV0dXJuCi1mcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIChl
LmcuIGBBU1NFUlRfVFJVRSgpYCksIHNvIGJlIHN1cmUgdG8gYXZvaWQgdGhlbSBpbiBfc3RhdGVt
ZW50Xy4KLQotU2luY2UgX3N0YXRlbWVudF8gcnVucyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW55
IGluLW1lbW9yeSBzaWRlIGVmZmVjdCAoZS5nLgotbW9kaWZ5aW5nIGEgdmFyaWFibGUsIHJlbGVh
c2luZyBtZW1vcnksIGV0YykgaXQgY2F1c2VzIHdpbGwgX25vdF8gYmUgb2JzZXJ2YWJsZQotaW4g
dGhlIHBhcmVudCBwcm9jZXNzLiBJbiBwYXJ0aWN1bGFyLCBpZiB5b3UgcmVsZWFzZSBtZW1vcnkg
aW4gYSBkZWF0aCB0ZXN0LAoteW91ciBwcm9ncmFtIHdpbGwgZmFpbCB0aGUgaGVhcCBjaGVjayBh
cyB0aGUgcGFyZW50IHByb2Nlc3Mgd2lsbCBuZXZlciBzZWUgdGhlCi1tZW1vcnkgcmVjbGFpbWVk
LiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBjYW4KLQotICAxLiB0cnkgbm90IHRvIGZyZWUg
bWVtb3J5IGluIGEgZGVhdGggdGVzdDsKLSAgMS4gZnJlZSB0aGUgbWVtb3J5IGFnYWluIGluIHRo
ZSBwYXJlbnQgcHJvY2Vzczsgb3IKLSAgMS4gZG8gbm90IHVzZSB0aGUgaGVhcCBjaGVja2VyIGlu
IHlvdXIgcHJvZ3JhbS4KLQotRHVlIHRvIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgeW91IGNh
bm5vdCBwbGFjZSBtdWx0aXBsZSBkZWF0aCB0ZXN0Ci1hc3NlcnRpb25zIG9uIHRoZSBzYW1lIGxp
bmU7IG90aGVyd2lzZSwgY29tcGlsYXRpb24gd2lsbCBmYWlsIHdpdGggYW4gdW5vYnZpb3VzCi1l
cnJvciBtZXNzYWdlLgotCi1EZXNwaXRlIHRoZSBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5IGFmZm9y
ZGVkIGJ5IHRoZSAidGhyZWFkc2FmZSIgc3R5bGUgb2YgZGVhdGgKLXRlc3QsIHRocmVhZCBwcm9i
bGVtcyBzdWNoIGFzIGRlYWRsb2NrIGFyZSBzdGlsbCBwb3NzaWJsZSBpbiB0aGUgcHJlc2VuY2Ug
b2YKLWhhbmRsZXJzIHJlZ2lzdGVyZWQgd2l0aCBgcHRocmVhZF9hdGZvcmsoMylgLgotCi0jIFVz
aW5nIEFzc2VydGlvbnMgaW4gU3ViLXJvdXRpbmVzICMKLQotIyMgQWRkaW5nIFRyYWNlcyB0byBB
c3NlcnRpb25zICMjCi0KLUlmIGEgdGVzdCBzdWItcm91dGluZSBpcyBjYWxsZWQgZnJvbSBzZXZl
cmFsIHBsYWNlcywgd2hlbiBhbiBhc3NlcnRpb24KLWluc2lkZSBpdCBmYWlscywgaXQgY2FuIGJl
IGhhcmQgdG8gdGVsbCB3aGljaCBpbnZvY2F0aW9uIG9mIHRoZQotc3ViLXJvdXRpbmUgdGhlIGZh
aWx1cmUgaXMgZnJvbS4gIFlvdSBjYW4gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSB1c2luZwotZXh0
cmEgbG9nZ2luZyBvciBjdXN0b20gZmFpbHVyZSBtZXNzYWdlcywgYnV0IHRoYXQgdXN1YWxseSBj
bHV0dGVycyB1cAoteW91ciB0ZXN0cy4gQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIHRoZSBg
U0NPUEVEX1RSQUNFYCBtYWNybzoKLQotfCBgU0NPUEVEX1RSQUNFKGBfbWVzc2FnZV9gKTtgIHwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLXdoZXJlIF9tZXNzYWdlXyBjYW4g
YmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBgc3RkOjpvc3RyZWFtYC4gVGhpcwotbWFjcm8gd2ls
bCBjYXVzZSB0aGUgY3VycmVudCBmaWxlIG5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdGhlIGdpdmVu
Ci1tZXNzYWdlIHRvIGJlIGFkZGVkIGluIGV2ZXJ5IGZhaWx1cmUgbWVzc2FnZS4gVGhlIGVmZmVj
dCB3aWxsIGJlCi11bmRvbmUgd2hlbiB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIGN1cnJlbnQgbGV4
aWNhbCBzY29wZS4KLQotRm9yIGV4YW1wbGUsCi0KLWBgYAotMTA6IHZvaWQgU3ViMShpbnQgbikg
ewotMTE6ICAgRVhQRUNUX0VRKDEsIEJhcihuKSk7Ci0xMjogICBFWFBFQ1RfRVEoMiwgQmFyKG4g
KyAxKSk7Ci0xMzogfQotMTQ6Ci0xNTogVEVTVChGb29UZXN0LCBCYXIpIHsKLTE2OiAgIHsKLTE3
OiAgICAgU0NPUEVEX1RSQUNFKCJBIik7ICAvLyBUaGlzIHRyYWNlIHBvaW50IHdpbGwgYmUgaW5j
bHVkZWQgaW4KLTE4OiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBmYWlsdXJlIGlu
IHRoaXMgc2NvcGUuCi0xOTogICAgIFN1YjEoMSk7Ci0yMDogICB9Ci0yMTogICAvLyBOb3cgaXQg
d29uJ3QuCi0yMjogICBTdWIxKDkpOwotMjM6IH0KLWBgYAotCi1jb3VsZCByZXN1bHQgaW4gbWVz
c2FnZXMgbGlrZSB0aGVzZToKLQotYGBgCi1wYXRoL3RvL2Zvb190ZXN0LmNjOjExOiBGYWlsdXJl
Ci1WYWx1ZSBvZjogQmFyKG4pCi1FeHBlY3RlZDogMQotICBBY3R1YWw6IDIKLSAgIFRyYWNlOgot
cGF0aC90by9mb29fdGVzdC5jYzoxNzogQQotCi1wYXRoL3RvL2Zvb190ZXN0LmNjOjEyOiBGYWls
dXJlCi1WYWx1ZSBvZjogQmFyKG4gKyAxKQotRXhwZWN0ZWQ6IDIKLSAgQWN0dWFsOiAzCi1gYGAK
LQotV2l0aG91dCB0aGUgdHJhY2UsIGl0IHdvdWxkJ3ZlIGJlZW4gZGlmZmljdWx0IHRvIGtub3cg
d2hpY2ggaW52b2NhdGlvbgotb2YgYFN1YjEoKWAgdGhlIHR3byBmYWlsdXJlcyBjb21lIGZyb20g
cmVzcGVjdGl2ZWx5LiAoWW91IGNvdWxkIGFkZCBhbgotZXh0cmEgbWVzc2FnZSB0byBlYWNoIGFz
c2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRpY2F0ZSB0aGUgdmFsdWUgb2YKLWBuYCwgYnV0IHRo
YXQncyB0ZWRpb3VzLikKLQotU29tZSB0aXBzIG9uIHVzaW5nIGBTQ09QRURfVFJBQ0VgOgotCi0g
IDEuIFdpdGggYSBzdWl0YWJsZSBtZXNzYWdlLCBpdCdzIG9mdGVuIGVub3VnaCB0byB1c2UgYFND
T1BFRF9UUkFDRWAgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHN1Yi1yb3V0aW5lLCBpbnN0ZWFkIG9m
IGF0IGVhY2ggY2FsbCBzaXRlLgotICAxLiBXaGVuIGNhbGxpbmcgc3ViLXJvdXRpbmVzIGluc2lk
ZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRlcmF0b3IgcGFydCBvZiB0aGUgbWVzc2FnZSBpbiBg
U0NPUEVEX1RSQUNFYCBzdWNoIHRoYXQgeW91IGNhbiBrbm93IHdoaWNoIGl0ZXJhdGlvbiB0aGUg
ZmFpbHVyZSBpcyBmcm9tLgotICAxLiBTb21ldGltZXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSB0
cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9yIGlkZW50aWZ5aW5nIHRoZSBwYXJ0aWN1bGFyIGludm9j
YXRpb24gb2YgYSBzdWItcm91dGluZS4gSW4gdGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBj
aG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9UUkFDRWAuIFlvdSBjYW4gc2ltcGx5
IHVzZSBgIiJgLgotICAxLiBZb3UgY2FuIHVzZSBgU0NPUEVEX1RSQUNFYCBpbiBhbiBpbm5lciBz
Y29wZSB3aGVuIHRoZXJlIGlzIG9uZSBpbiB0aGUgb3V0ZXIgc2NvcGUuIEluIHRoaXMgY2FzZSwg
YWxsIGFjdGl2ZSB0cmFjZSBwb2ludHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmFpbHVyZSBt
ZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0aGV5IGFyZSBlbmNvdW50ZXJlZC4KLSAgMS4gVGhl
IHRyYWNlIGR1bXAgaXMgY2xpY2thYmxlIGluIEVtYWNzJyBjb21waWxhdGlvbiBidWZmZXIgLSBo
aXQgcmV0dXJuIG9uIGEgbGluZSBudW1iZXIgYW5kIHlvdSdsbCBiZSB0YWtlbiB0byB0aGF0IGxp
bmUgaW4gdGhlIHNvdXJjZSBmaWxlIQotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYy4KLQotIyMgUHJvcGFnYXRpbmcgRmF0YWwgRmFpbHVyZXMgIyMKLQotQSBjb21tb24gcGl0
ZmFsbCB3aGVuIHVzaW5nIGBBU1NFUlRfKmAgYW5kIGBGQUlMKmAgaXMgbm90IHVuZGVyc3RhbmRp
bmcgdGhhdAotd2hlbiB0aGV5IGZhaWwgdGhleSBvbmx5IGFib3J0IHRoZSBfY3VycmVudCBmdW5j
dGlvbl8sIG5vdCB0aGUgZW50aXJlIHRlc3QuIEZvcgotZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0
ZXN0IHdpbGwgc2VnZmF1bHQ6Ci1gYGAKLXZvaWQgU3Vicm91dGluZSgpIHsKLSAgLy8gR2VuZXJh
dGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgotICBB
U1NFUlRfRVEoMSwgMik7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCi0g
IC4uLgotfQotCi1URVNUKEZvb1Rlc3QsIEJhcikgewotICBTdWJyb3V0aW5lKCk7Ci0gIC8vIFRo
ZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFsIGZhaWx1cmUKLSAgLy8gaW4gU3Vi
cm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRpcmUgdGVzdC4KLSAgLy8gVGhlIGFjdHVhbCBiZWhh
dmlvcjogdGhlIGZ1bmN0aW9uIGdvZXMgb24gYWZ0ZXIgU3Vicm91dGluZSgpIHJldHVybnMuCi0g
IGludCogcCA9IE5VTEw7Ci0gICpwID0gMzsgLy8gU2VnZmF1bHQhCi19Ci1gYGAKLQotU2luY2Ug
d2UgZG9uJ3QgdXNlIGV4Y2VwdGlvbnMsIGl0IGlzIHRlY2huaWNhbGx5IGltcG9zc2libGUgdG8K
LWltcGxlbWVudCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IgaGVyZS4gIFRvIGFsbGV2aWF0ZSB0aGlz
LCBHb29nbGUgVGVzdAotcHJvdmlkZXMgdHdvIHNvbHV0aW9ucy4gIFlvdSBjb3VsZCB1c2UgZWl0
aGVyIHRoZQotYChBU1NFUlR8RVhQRUNUKV9OT19GQVRBTF9GQUlMVVJFYCBhc3NlcnRpb25zIG9y
IHRoZQotYEhhc0ZhdGFsRmFpbHVyZSgpYCBmdW5jdGlvbi4gIFRoZXkgYXJlIGRlc2NyaWJlZCBp
biB0aGUgZm9sbG93aW5nIHR3bwotc3Vic2VjdGlvbnMuCi0KLSMjIyBBc3NlcnRpbmcgb24gU3Vi
cm91dGluZXMgIyMjCi0KLUFzIHNob3duIGFib3ZlLCBpZiB5b3VyIHRlc3QgY2FsbHMgYSBzdWJy
b3V0aW5lIHRoYXQgaGFzIGFuIGBBU1NFUlRfKmAKLWZhaWx1cmUgaW4gaXQsIHRoZSB0ZXN0IHdp
bGwgY29udGludWUgYWZ0ZXIgdGhlIHN1YnJvdXRpbmUKLXJldHVybnMuIFRoaXMgbWF5IG5vdCBi
ZSB3aGF0IHlvdSB3YW50LgotCi1PZnRlbiBwZW9wbGUgd2FudCBmYXRhbCBmYWlsdXJlcyB0byBw
cm9wYWdhdGUgbGlrZSBleGNlcHRpb25zLiAgRm9yCi10aGF0IEdvb2dsZSBUZXN0IG9mZmVycyB0
aGUgZm9sbG93aW5nIG1hY3JvczoKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRh
bCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9OT19GQVRB
TF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2AgfCBgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoYF9z
dGF0ZW1lbnRfYCk7YCB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgZ2VuZXJhdGUgYW55IG5ldyBmYXRh
bCBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuIHwKLQotT25seSBmYWlsdXJlcyBpbiB0
aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhlIGFzc2VydGlvbiBhcmUgY2hlY2tlZCB0bwotZGV0
ZXJtaW5lIHRoZSByZXN1bHQgb2YgdGhpcyB0eXBlIG9mIGFzc2VydGlvbnMuICBJZiBfc3RhdGVt
ZW50XwotY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFkcyBhcmUg
aWdub3JlZC4KLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRm9v
KCkpOwotCi1pbnQgaTsKLUVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHsKLSAgaSA9IEJhcigpOwot
fSk7Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuIEFzc2VydGlv
bnMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzCi1hcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0K
LSMjIyBDaGVja2luZyBmb3IgRmFpbHVyZXMgaW4gdGhlIEN1cnJlbnQgVGVzdCAjIyMKLQotYEhh
c0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUgYDo6dGVzdGluZzo6VGVzdGAgY2xhc3MgcmV0dXJucyBg
dHJ1ZWAgaWYgYW4KLWFzc2VydGlvbiBpbiB0aGUgY3VycmVudCB0ZXN0IGhhcyBzdWZmZXJlZCBh
IGZhdGFsIGZhaWx1cmUuIFRoaXMKLWFsbG93cyBmdW5jdGlvbnMgdG8gY2F0Y2ggZmF0YWwgZmFp
bHVyZXMgaW4gYSBzdWItcm91dGluZSBhbmQgcmV0dXJuCi1lYXJseS4KLQotYGBgCi1jbGFzcyBU
ZXN0IHsKLSBwdWJsaWM6Ci0gIC4uLgotICBzdGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsK
LX07Ci1gYGAKLQotVGhlIHR5cGljYWwgdXNhZ2UsIHdoaWNoIGJhc2ljYWxseSBzaW11bGF0ZXMg
dGhlIGJlaGF2aW9yIG9mIGEgdGhyb3duCi1leGNlcHRpb24sIGlzOgotCi1gYGAKLVRFU1QoRm9v
VGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gQWJvcnRzIGlmIFN1YnJvdXRpbmUo
KSBoYWQgYSBmYXRhbCBmYWlsdXJlLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpCi0gICAgcmV0
dXJuOwotICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4ZWN1dGVkLgotICAuLi4KLX0KLWBg
YAotCi1JZiBgSGFzRmF0YWxGYWlsdXJlKClgIGlzIHVzZWQgb3V0c2lkZSBvZiBgVEVTVCgpYCAs
IGBURVNUX0YoKWAgLCBvciBhIHRlc3QKLWZpeHR1cmUsIHlvdSBtdXN0IGFkZCB0aGUgYDo6dGVz
dGluZzo6VGVzdDo6YCBwcmVmaXgsIGFzIGluOgotCi1gYGAKLWlmICg6OnRlc3Rpbmc6OlRlc3Q6
Okhhc0ZhdGFsRmFpbHVyZSgpKQotICByZXR1cm47Ci1gYGAKLQotU2ltaWxhcmx5LCBgSGFzTm9u
ZmF0YWxGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRoZSBjdXJyZW50IHRlc3QKLWhhcyBh
dCBsZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1cmUsIGFuZCBgSGFzRmFpbHVyZSgpYCByZXR1cm5z
IGB0cnVlYAotaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQgbGVhc3Qgb25lIGZhaWx1cmUgb2Yg
ZWl0aGVyIGtpbmQuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgYEhh
c05vbmZhdGFsRmFpbHVyZSgpYCBhbmQKLWBIYXNGYWlsdXJlKClgIGFyZSBhdmFpbGFibGUgc2lu
Y2UgdmVyc2lvbiAxLjQuMC4KLQotIyBMb2dnaW5nIEFkZGl0aW9uYWwgSW5mb3JtYXRpb24gIwot
Ci1JbiB5b3VyIHRlc3QgY29kZSwgeW91IGNhbiBjYWxsIGBSZWNvcmRQcm9wZXJ0eSgia2V5Iiwg
dmFsdWUpYCB0byBsb2cKLWFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHdoZXJlIGB2YWx1ZWAgY2Fu
IGJlIGVpdGhlciBhIEMgc3RyaW5nIG9yIGEgMzItYml0Ci1pbnRlZ2VyLiBUaGUgX2xhc3RfIHZh
bHVlIHJlY29yZGVkIGZvciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQK
LWlmIHlvdSBzcGVjaWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0Ci0KLWBgYAotVEVTVF9G
KFdpZGdldFVzYWdlVGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgewotICBSZWNvcmRQcm9wZXJ0eSgi
TWF4aW11bVdpZGdldHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7Ci0gIFJlY29yZFByb3BlcnR5KCJN
aW5pbXVtV2lkZ2V0cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKLX0KLWBgYAotCi13aWxsIG91dHB1
dCBYTUwgbGlrZSB0aGlzOgotCi1gYGAKLS4uLgotICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4
V2lkZ2V0cyIgc3RhdHVzPSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0
IgotICAgICAgICAgICAgTWF4aW11bVdpZGdldHM9IjEyIgotICAgICAgICAgICAgTWluaW11bVdp
ZGdldHM9IjkiIC8+Ci0uLi4KLWBgYAotCi1fTm90ZV86Ci0gICogYFJlY29yZFByb3BlcnR5KClg
IGlzIGEgc3RhdGljIG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVl
ZHMgdG8gYmUgcHJlZml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lk
ZSBvZiB0aGUgYFRFU1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gICogYGtl
eWAgbXVzdCBiZSBhIHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGlj
dCB3aXRoIHRoZSBvbmVzIGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3Rh
dHVzYCwgICAgIGB0aW1lYCwgYW5kIGBjbGFzc25hbWVgKS4KLQotX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgU2hhcmluZyBSZXNvdXJjZXMgQmV0d2VlbiBUZXN0cyBp
biB0aGUgU2FtZSBUZXN0IENhc2UgIwotCi0KLQotR29vZ2xlIFRlc3QgY3JlYXRlcyBhIG5ldyB0
ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciBlYWNoIHRlc3QgaW4gb3JkZXIgdG8gbWFrZQotdGVzdHMg
aW5kZXBlbmRlbnQgYW5kIGVhc2llciB0byBkZWJ1Zy4gSG93ZXZlciwgc29tZXRpbWVzIHRlc3Rz
IHVzZSByZXNvdXJjZXMKLXRoYXQgYXJlIGV4cGVuc2l2ZSB0byBzZXQgdXAsIG1ha2luZyB0aGUg
b25lLWNvcHktcGVyLXRlc3QgbW9kZWwgcHJvaGliaXRpdmVseQotZXhwZW5zaXZlLgotCi1JZiB0
aGUgdGVzdHMgZG9uJ3QgY2hhbmdlIHRoZSByZXNvdXJjZSwgdGhlcmUncyBubyBoYXJtIGluIHRo
ZW0gc2hhcmluZyBhCi1zaW5nbGUgcmVzb3VyY2UgY29weS4gU28sIGluIGFkZGl0aW9uIHRvIHBl
ci10ZXN0IHNldC11cC90ZWFyLWRvd24sIEdvb2dsZSBUZXN0Ci1hbHNvIHN1cHBvcnRzIHBlci10
ZXN0LWNhc2Ugc2V0LXVwL3RlYXItZG93bi4gVG8gdXNlIGl0OgotCi0gIDEuIEluIHlvdXIgdGVz
dCBmaXh0dXJlIGNsYXNzIChzYXkgYEZvb1Rlc3RgICksIGRlZmluZSBhcyBgc3RhdGljYCBzb21l
IG1lbWJlciB2YXJpYWJsZXMgdG8gaG9sZCB0aGUgc2hhcmVkIHJlc291cmNlcy4KLSAgMS4gSW4g
dGhlIHNhbWUgdGVzdCBmaXh0dXJlIGNsYXNzLCBkZWZpbmUgYSBgc3RhdGljIHZvaWQgU2V0VXBU
ZXN0Q2FzZSgpYCBmdW5jdGlvbiAocmVtZW1iZXIgbm90IHRvIHNwZWxsIGl0IGFzICoqYFNldHVw
VGVzdENhc2VgKiogd2l0aCBhIHNtYWxsIGB1YCEpIHRvIHNldCB1cCB0aGUgc2hhcmVkIHJlc291
cmNlcyBhbmQgYSBgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpYCBmdW5jdGlvbiB0byB0
ZWFyIHRoZW0gZG93bi4KLQotVGhhdCdzIGl0ISBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGNh
bGxzIGBTZXRVcFRlc3RDYXNlKClgIGJlZm9yZSBydW5uaW5nIHRoZQotX2ZpcnN0IHRlc3RfIGlu
IHRoZSBgRm9vVGVzdGAgdGVzdCBjYXNlIChpLmUuIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlyc3QK
LWBGb29UZXN0YCBvYmplY3QpLCBhbmQgY2FsbHMgYFRlYXJEb3duVGVzdENhc2UoKWAgYWZ0ZXIg
cnVubmluZyB0aGUgX2xhc3QgdGVzdF8KLWluIGl0IChpLmUuIGFmdGVyIGRlbGV0aW5nIHRoZSBs
YXN0IGBGb29UZXN0YCBvYmplY3QpLiBJbiBiZXR3ZWVuLCB0aGUgdGVzdHMKLWNhbiB1c2UgdGhl
IHNoYXJlZCByZXNvdXJjZXMuCi0KLVJlbWVtYmVyIHRoYXQgdGhlIHRlc3Qgb3JkZXIgaXMgdW5k
ZWZpbmVkLCBzbyB5b3VyIGNvZGUgY2FuJ3QgZGVwZW5kIG9uIGEgdGVzdAotcHJlY2VkaW5nIG9y
IGZvbGxvd2luZyBhbm90aGVyLiBBbHNvLCB0aGUgdGVzdHMgbXVzdCBlaXRoZXIgbm90IG1vZGlm
eSB0aGUKLXN0YXRlIG9mIGFueSBzaGFyZWQgcmVzb3VyY2UsIG9yLCBpZiB0aGV5IGRvIG1vZGlm
eSB0aGUgc3RhdGUsIHRoZXkgbXVzdAotcmVzdG9yZSB0aGUgc3RhdGUgdG8gaXRzIG9yaWdpbmFs
IHZhbHVlIGJlZm9yZSBwYXNzaW5nIGNvbnRyb2wgdG8gdGhlIG5leHQKLXRlc3QuCi0KLUhlcmUn
cyBhbiBleGFtcGxlIG9mIHBlci10ZXN0LWNhc2Ugc2V0LXVwIGFuZCB0ZWFyLWRvd246Ci1gYGAK
LWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IC8vIFBlci10ZXN0LWNhc2Ugc2V0LXVwLgotICAvLyBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB0
ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgotICAvLyBDYW4gYmUgb21pdHRlZCBpZiBub3QgbmVlZGVk
LgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIHNoYXJlZF9yZXNvdXJjZV8g
PSBuZXcgLi4uOwotICB9Ci0KLSAgLy8gUGVyLXRlc3QtY2FzZSB0ZWFyLWRvd24uCi0gIC8vIENh
bGxlZCBhZnRlciB0aGUgbGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlLgotICAvLyBDYW4gYmUg
b21pdHRlZCBpZiBub3QgbmVlZGVkLgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkg
ewotICAgIGRlbGV0ZSBzaGFyZWRfcmVzb3VyY2VfOwotICAgIHNoYXJlZF9yZXNvdXJjZV8gPSBO
VUxMOwotICB9Ci0KLSAgLy8gWW91IGNhbiBkZWZpbmUgcGVyLXRlc3Qgc2V0LXVwIGFuZCB0ZWFy
LWRvd24gbG9naWMgYXMgdXN1YWwuCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgLi4uIH0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeyAuLi4gfQotCi0gIC8vIFNvbWUgZXhwZW5zaXZlIHJl
c291cmNlIHNoYXJlZCBieSBhbGwgdGVzdHMuCi0gIHN0YXRpYyBUKiBzaGFyZWRfcmVzb3VyY2Vf
OwotfTsKLQotVCogRm9vVGVzdDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7Ci0KLVRFU1RfRihG
b29UZXN0LCBUZXN0MSkgewotICAuLi4geW91IGNhbiByZWZlciB0byBzaGFyZWRfcmVzb3VyY2Ug
aGVyZSAuLi4KLX0KLVRFU1RfRihGb29UZXN0LCBUZXN0MikgewotICAuLi4geW91IGNhbiByZWZl
ciB0byBzaGFyZWRfcmVzb3VyY2UgaGVyZSAuLi4KLX0KLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBHbG9iYWwgU2V0LVVwIGFuZCBUZWFyLURvd24gIwot
Ci1KdXN0IGFzIHlvdSBjYW4gZG8gc2V0LXVwIGFuZCB0ZWFyLWRvd24gYXQgdGhlIHRlc3QgbGV2
ZWwgYW5kIHRoZSB0ZXN0IGNhc2UKLWxldmVsLCB5b3UgY2FuIGFsc28gZG8gaXQgYXQgdGhlIHRl
c3QgcHJvZ3JhbSBsZXZlbC4gSGVyZSdzIGhvdy4KLQotRmlyc3QsIHlvdSBzdWJjbGFzcyB0aGUg
YDo6dGVzdGluZzo6RW52aXJvbm1lbnRgIGNsYXNzIHRvIGRlZmluZSBhIHRlc3QKLWVudmlyb25t
ZW50LCB3aGljaCBrbm93cyBob3cgdG8gc2V0LXVwIGFuZCB0ZWFyLWRvd246Ci0KLWBgYAotY2xh
c3MgRW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQot
ICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVu
dC4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkge30KLSAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZp
bmUgaG93IHRvIHRlYXIgZG93biB0aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHt9Ci19OwotYGBgCi0KLVRoZW4sIHlvdSByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiB5
b3VyIGVudmlyb25tZW50IGNsYXNzIHdpdGggR29vZ2xlIFRlc3QgYnkKLWNhbGxpbmcgdGhlIGA6
OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCBmdW5jdGlvbjoKLQotYGBgCi1F
bnZpcm9ubWVudCogQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwot
YGBgCi0KLU5vdywgd2hlbiBgUlVOX0FMTF9URVNUUygpYCBpcyBjYWxsZWQsIGl0IGZpcnN0IGNh
bGxzIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mCi10aGUgZW52aXJvbm1lbnQgb2JqZWN0LCB0aGVu
IHJ1bnMgdGhlIHRlc3RzIGlmIHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlcywgYW5kCi1maW5h
bGx5IGNhbGxzIGBUZWFyRG93bigpYCBvZiB0aGUgZW52aXJvbm1lbnQgb2JqZWN0LgotCi1JdCdz
IE9LIHRvIHJlZ2lzdGVyIG11bHRpcGxlIGVudmlyb25tZW50IG9iamVjdHMuIEluIHRoaXMgY2Fz
ZSwgdGhlaXIgYFNldFVwKClgCi13aWxsIGJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUg
cmVnaXN0ZXJlZCwgYW5kIHRoZWlyIGBUZWFyRG93bigpYCB3aWxsIGJlCi1jYWxsZWQgaW4gdGhl
IHJldmVyc2Ugb3JkZXIuCi0KLU5vdGUgdGhhdCBHb29nbGUgVGVzdCB0YWtlcyBvd25lcnNoaXAg
b2YgdGhlIHJlZ2lzdGVyZWQgZW52aXJvbm1lbnQgb2JqZWN0cy4KLVRoZXJlZm9yZSAqKmRvIG5v
dCBkZWxldGUgdGhlbSoqIGJ5IHlvdXJzZWxmLgotCi1Zb3Ugc2hvdWxkIGNhbGwgYEFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudCgpYCBiZWZvcmUgYFJVTl9BTExfVEVTVFMoKWAgaXMKLWNhbGxlZCwg
cHJvYmFibHkgaW4gYG1haW4oKWAuIElmIHlvdSB1c2UgYGd0ZXN0X21haW5gLCB5b3UgbmVlZCB0
byAgICAgIGNhbGwKLXRoaXMgYmVmb3JlIGBtYWluKClgIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBl
ZmZlY3QuIE9uZSB3YXkgdG8gZG8gdGhpcyBpcyB0bwotZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxl
IGxpa2UgdGhpczoKLQotYGBgCi06OnRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52
ID0gOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZvb0Vudmlyb25tZW50
KTsKLWBgYAotCi1Ib3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91IHRvIHdyaXRlIHlv
dXIgb3duIGBtYWluKClgIGFuZCBjYWxsCi1gQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIHRo
ZXJlLCBhcyByZWx5aW5nIG9uIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbAotdmFyaWFibGVzIG1h
a2VzIHRoZSBjb2RlIGhhcmRlciB0byByZWFkIGFuZCBtYXkgY2F1c2UgcHJvYmxlbXMgd2hlbiB5
b3UKLXJlZ2lzdGVyIG11bHRpcGxlIGVudmlyb25tZW50cyBmcm9tIGRpZmZlcmVudCB0cmFuc2xh
dGlvbiB1bml0cyBhbmQgdGhlCi1lbnZpcm9ubWVudHMgaGF2ZSBkZXBlbmRlbmNpZXMgYW1vbmcg
dGhlbSAocmVtZW1iZXIgdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndAotZ3VhcmFudGVlIHRoZSBv
cmRlciBpbiB3aGljaCBnbG9iYWwgdmFyaWFibGVzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9u
IHVuaXRzCi1hcmUgaW5pdGlhbGl6ZWQpLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRv
d3MsIE1hYy4KLQotCi0jIFZhbHVlIFBhcmFtZXRlcml6ZWQgVGVzdHMgIwotCi1fVmFsdWUtcGFy
YW1ldGVyaXplZCB0ZXN0c18gYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdpdGggZGlmZmVy
ZW50Ci1wYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNh
bWUgdGVzdC4KLQotU3VwcG9zZSB5b3Ugd3JpdGUgYSB0ZXN0IGZvciB5b3VyIGNvZGUgYW5kIHRo
ZW4gcmVhbGl6ZSB0aGF0IHlvdXIgY29kZSBpcyBhZmZlY3RlZCBieSBhIHByZXNlbmNlIG9mIGEg
Qm9vbGVhbiBjb21tYW5kIGxpbmUgZmxhZy4KLQotYGBgCi1URVNUKE15Q29kZVRlc3QsIFRlc3RG
b28pIHsKLSAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCi19Ci1gYGAKLQotVXN1YWxseSBwZW9w
bGUgZmFjdG9yIHRoZWlyIHRlc3QgY29kZSBpbnRvIGEgZnVuY3Rpb24gd2l0aCBhIEJvb2xlYW4g
cGFyYW1ldGVyIGluIHN1Y2ggc2l0dWF0aW9ucy4gVGhlIGZ1bmN0aW9uIHNldHMgdGhlIGZsYWcs
IHRoZW4gZXhlY3V0ZXMgdGhlIHRlc3RpbmcgY29kZS4KLQotYGBgCi12b2lkIFRlc3RGb29IZWxw
ZXIoYm9vbCBmbGFnX3ZhbHVlKSB7Ci0gIGZsYWcgPSBmbGFnX3ZhbHVlOwotICAvLyBBIGNvZGUg
dG8gdGVzdCBmb28oKS4KLX0KLQotVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vbykgewotICBUZXN0
Rm9vSGVscGVyKGZhbHNlKTsKLSAgVGVzdEZvb0hlbHBlcih0cnVlKTsKLX0KLWBgYAotCi1CdXQg
dGhpcyBzZXR1cCBoYXMgc2VyaW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEgdGVzdCBhc3Nl
cnRpb24gZmFpbHMgaW4geW91ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdoYXQgdmFsdWUg
b2YgdGhlIHBhcmFtZXRlciBjYXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJlYW0gYSBjbGFy
aWZ5aW5nIG1lc3NhZ2UgaW50byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1
dCBpdCB5b3UnbGwgaGF2ZSB0byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBo
YXZlIHRvIGFkZCBvbmUgc3VjaCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdoYXQgaWYgeW91
IGhhdmUgdGVuIHRlc3RzPyBUd2VudHk/IEEgaHVuZHJlZD8KLQotVmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cyB3aWxsIGxldCB5b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBl
YXNpbHkgaW5zdGFudGlhdGUgYW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yg
cGFyYW1ldGVyIHZhbHVlcy4KLQotSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRpb25zIHdoZW4g
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBjb21lIGhhbmR5OgotCi0gICogWW91IHdhbnQgdG8g
dGVzdCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KLSAgKiBZ
b3Ugd2FudCB0byB0ZXN0IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0
YS1kcml2ZW4gdGVzdGluZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVh
c2UgZXhlcmNpc2UgeW91ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCi0KLSMjIEhvdyB0byBX
cml0ZSBWYWx1ZS1QYXJhbWV0ZXJpemVkIFRlc3RzICMjCi0KLVRvIHdyaXRlIHZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotY2xhc3Mu
ICBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAotYDo6
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBhIHB1cmUgaW50
ZXJmYWNlKSwKLXdoZXJlIGBUYCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMu
ICBGb3IgY29udmVuaWVuY2UsIHlvdQotY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0dXJlIGNsYXNz
IGZyb20gYDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxUPmAsCi13aGljaCBpdHNlbGYgaXMgZGVy
aXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCi1gOjp0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8VD5gLiBgVGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJZgotaXQncyBh
IHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNw
YW4gb2YKLXRoZSBwb2ludGVkIHZhbHVlcy4KLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewotICAvLyBZb3UgY2FuIGlt
cGxlbWVudCBhbGwgdGhlIHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJlLgotICAvLyBU
byBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJvbSBjbGFzcwot
ICAvLyBUZXN0V2l0aFBhcmFtPFQ+LgotfTsKLQotLy8gT3IsIHdoZW4geW91IHdhbnQgdG8gYWRk
IHBhcmFtZXRlcnMgdG8gYSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKLWNsYXNzIEJhc2VU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIC4uLgotfTsKLWNsYXNzIEJhclRlc3Qg
OiBwdWJsaWMgQmFzZVRlc3QsCi0gICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0
aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIqPiB7Ci0gIC4uLgotfTsKLWBgYAotCi1UaGVuLCB1
c2UgdGhlIGBURVNUX1BgIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0dGVybnMgdXNp
bmcKLXRoaXMgZml4dHVyZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBh
cmFtZXRlcml6ZWQiIG9yCi0icGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVyIHRvIHRoaW5r
LgotCi1gYGAKLVRFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0
LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCi0g
IC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgotICBFWFBFQ1RfVFJVRShmb28uQmxh
aChHZXRQYXJhbSgpKSk7Ci0gIC4uLgotfQotCi1URVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgp
IHsKLSAgLi4uCi19Ci1gYGAKLQotRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QYCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdAotY2FzZSB3aXRoIGFueSBzZXQgb2Yg
cGFyYW1ldGVycyB5b3Ugd2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJlciBvZgotZnVu
Y3Rpb25zIGZvciBnZW5lcmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3
ZSBjYWxsCi0oc3VycHJpc2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJlIGlzIGEgc3Vt
bWFyeSBvZiB0aGVtLAotd2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZToK
LQotfCBgUmFuZ2UoYmVnaW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4s
IGJlZ2luK3N0ZXAsIGJlZ2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMgZG8gbm90IGlu
Y2x1ZGUgYGVuZGAuIGBzdGVwYCBkZWZhdWx0cyB0byAxLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLXwgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwgWWllbGRzIHZh
bHVlcyBge3YxLCB2MiwgLi4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgVmFs
dWVzSW4oY29udGFpbmVyKWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZaWVsZHMgdmFs
dWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVyLCBvciBhbiBp
dGVyYXRvciByYW5nZSBgW2JlZ2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdpbmAsIGFuZCBg
ZW5kYCBjYW4gYmUgZXhwcmVzc2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1
biB0aW1lLiAgfAotfCBgQm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVu
Y2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBDb21iaW5l
KGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0aGUgQ2FydGVz
aWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBi
eSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYgeW91ciBzeXN0
ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91
ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNhbiBvdmVycmlk
ZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNvbW1lbnRzIGlu
IFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8Ci0KLUZvciBtb3Jl
IGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1
bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QuaCkuCi0KLVRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVz
dHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2FzZQotZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1
ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAibW9lImAuCi0KLWBgYAotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBG
b29UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55
IiwgIm1pbnkiLCAibW9lIikpOwotYGBgCi0KLVRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0
YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91IGNhbgotaW5zdGFudGlhdGUgaXQgbW9yZSB0
aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8KLWBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwKLXRlc3QgY2Fz
ZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50Ci1p
bnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2ls
bCBoYXZlIHRoZXNlCi1uYW1lczoKLQotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRv
ZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5E
b2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5E
b2VzQmxhaC8yYCBmb3IgYCJtb2UiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhh
c0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9v
VGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2UiYAotCi1Zb3UgY2FuIHVzZSB0aGVzZSBuYW1l
cyBpbiBbLS1ndGVzdFwtZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpLgot
Ci1UaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0
YCBhZ2FpbiwgZWFjaAotd2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6
Ci0KLWBgYAotY29uc3QgY2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07Ci1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKLWBgYAotCi1UaGUg
dGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6
Ci0KLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9y
IGAiY2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgv
MWAgZm9yIGAiZG9nImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFz
QmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9nImAKLQotUGxlYXNlIG5vdGUgdGhhdCBgSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KLXRlc3RzIGluIHRo
ZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUg
b3IKLV9hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50LgotCi1Z
b3UgY2FuIHNlZQotW3RoZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MpCi1bZmls
ZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhhbXBsZXMuCi0K
LV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJv
dmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAuCi0KLSMjIENyZWF0aW5nIFZhbHVlLVBhcmFt
ZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKLQotSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5k
IGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKLWZpbGUuIFNvbWV0aW1l
cyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW4gYQot
bGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlz
IHBhdHRlcm4gaXMKLWtub3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBs
ZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91Ci1hcmUgZGVzaWduaW5nIGFuIGludGVyZmFj
ZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKLXRlc3RzIChwZXJo
YXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQK
LWFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFz
cy4gV2hlbgotc29tZW9uZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50
aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAotYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9ybWFuY2UgdGVz
dHMgZm9yIGZyZWUuCi0KLVRvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNob3VsZCBvcmdh
bml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgotCi0gIDEuIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0
aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBh
IGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9k
ZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0gIDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVm
aW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMgYGZvb19wYXJh
bV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3Qg
dGVzdHMuCi0KLU9uY2UgdGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVt
IGJ5IGluY2x1ZGluZwotYGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCi13aXRoIGBmb29fcGFyYW1fdGVzdC5jY2AuIFlv
dSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAotY2FzZSBtdWx0aXBsZSB0
aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQotIyBUeXBlZCBUZXN0
cyAjCi0KLVN1cHBvc2UgeW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBz
YW1lIGludGVyZmFjZSBhbmQKLXdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0
aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMuCi1PciwgeW91IG1heSBoYXZlIGRlZmluZWQg
c2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCi10aGUgc2FtZSAi
Y29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2FzZXMsIHlvdSB3
YW50Ci10aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0K
LVdoaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBl
IHlvdSB3YW50IHRvCi10ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dp
YyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKLXRoYXQgeW91IGludm9rZSBmcm9tIHRoZSBgVEVT
VGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qgc2NhbGU6Ci1pZiB5b3Ugd2FudCBfbV8gdGVz
dHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8KLWBURVNUYHMu
Ci0KLV9UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2lj
IG92ZXIgYSBsaXN0IG9mCi10eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3Qg
bG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QKLWtub3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdy
aXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKLQotRmlyc3QsIGRlZmlu
ZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZAot
YnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6
Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICAuLi4KLSAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4g
TGlzdDsKLSAgc3RhdGljIFQgc2hhcmVkXzsKLSAgVCB2YWx1ZV87Ci19OwotYGBgCi0KLU5leHQs
IGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxs
IGJlCi1yZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgotCi1gYGAKLXR5cGVkZWYg
Ojp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVE
X1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKLWBgYAotCi1UaGUgYHR5cGVkZWZgIGlzIG5l
Y2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNlCi1jb3JyZWN0
bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGlu
IHRoZQotdHlwZSBsaXN0IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCi0KLVRoZW4s
IHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlw
ZWQgdGVzdAotZm9yIHRoaXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55
IHRpbWVzIGFzIHlvdSB3YW50OgotCi1gYGAKLVRZUEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgp
IHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFy
YW0gdG8gZ2V0IHRoZSB0eXBlCi0gIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUg
YSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKLSAgLy8gdXMgdG8gdmlzaXQg
dGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3RoaXMnLgotICBUeXBlUGFyYW0gbiA9IHRoaXMt
PnZhbHVlXzsKLQotICAvLyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwg
YWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKLSAgLy8gcHJlZml4LgotICBuICs9IFRlc3RGaXh0dXJl
OjpzaGFyZWRfOwotCi0gIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBh
ZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6JwotICAvLyBwcmVmaXguICBUaGUgJ3R5cGVu
YW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KLSAgdHlwZW5hbWUgVGVz
dEZpeHR1cmU6Okxpc3QgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKG4pOwotICAuLi4KLX0K
LQotVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KLWBgYAotCi1Zb3Ug
Y2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFt
cGxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4w
IG9yIGFib3ZlKSwgTWFjOwotc2luY2UgdmVyc2lvbiAxLjEuMC4KLQotIyBUeXBlLVBhcmFtZXRl
cml6ZWQgVGVzdHMgIwotCi1fVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUgbGlrZSB0eXBl
ZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQotZG9uJ3QgcmVxdWlyZSB5b3UgdG8ga25vdyB0aGUg
bGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKLXlvdSBjYW4gZGVmaW5lIHRo
ZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZlcmVudAotdHlw
ZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25j
ZSBpbiB0aGUKLXNhbWUgcHJvZ3JhbS4KLQotSWYgeW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJm
YWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKLW9mIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAotaW1wbGVtZW50
YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1
dGhvcgotb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0ZSB0aGUgdGVz
dCBzdWl0ZSB3aXRoIGhpcwotdHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3JtcyB0byB0aGUg
cmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0bwotd3JpdGUgc2ltaWxhciB0ZXN0cyByZXBl
YXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNs
YXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKLQotYGBgCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
LSAgLi4uCi19OwotYGBgCi0KLU5leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgotCi1gYGAKLVRZUEVEX1RFU1RfQ0FTRV9QKEZv
b1Rlc3QpOwotYGBgCi0KLVRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9y
ICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQotcHJlZmVyIHRvIHRoaW5rLgotCi1UaGVuLCB1c2Ug
YFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlv
dQotY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQ
RURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVy
IHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgotICBUeXBlUGFyYW0gbiA9
IDA7Ci0gIC4uLgotfQotCi1UWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4u
LiB9Ci1gYGAKLQotTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxs
IHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCi1gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1BgIG1h
Y3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uCi1UaGUgZmlyc3QgYXJndW1lbnQg
b2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJlCi10aGUgbmFt
ZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlOgotCi1gYGAKLVJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzQmxh
aCwgSGFzUHJvcGVydHlBKTsKLWBgYAotCi1GaW5hbGx5LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFu
dGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlwZXMgeW91Ci13YW50LiAgSWYgeW91IHB1dCB0
aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAKLWl0IGlu
IG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRp
bWVzLgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVk
IGludD4gTXlUeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0
LCBNeVR5cGVzKTsKLWBgYAotCi1UbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9m
IHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1lbnQKLXRvIHRoZSBgSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQotYWRkZWQgdG8g
dGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZp
eGVzCi1mb3IgZGlmZmVyZW50IGluc3RhbmNlcy4KLQotSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVy
ZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQotY2FuIHdyaXRlIHRo
YXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRo
aXM6Ci0KLWBgYAotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGlu
dCk7Ci1gYGAKLQotWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9y
IGEgY29tcGxldGUgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChy
ZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1hYzsKLXNpbmNlIHZlcnNpb24gMS4xLjAuCi0K
LSMgVGVzdGluZyBQcml2YXRlIENvZGUgIwotCi1JZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUn
cyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90Ci1icmVhayBh
cyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9y
ZSwgcGVyIHRoZQotX2JsYWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRp
bWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQotdGhyb3VnaCBpdHMgcHVibGljIGludGVyZmFj
ZXMuCi0KLUlmIHlvdSBzdGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5h
bCBpbXBsZW1lbnRhdGlvbiBjb2RlLAotY29uc2lkZXIgaWYgdGhlcmUncyBhIGJldHRlciBkZXNp
Z24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Ci1hYnNvbHV0ZWx5
IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4g
VGhlcmUgYXJlCi10d28gY2FzZXMgdG8gY29uc2lkZXI6Ci0KLSAgKiBTdGF0aWMgZnVuY3Rpb25z
IChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQg
bmFtZXNwYWNlcywgYW5kCi0gICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycwot
Ci0jIyBTdGF0aWMgRnVuY3Rpb25zICMjCi0KLUJvdGggc3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVm
aW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFyZQotb25seSB2
aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0sIHlv
dSBjYW4gYCNpbmNsdWRlYAotdGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5
b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCi1maWxlcyBpcyBub3Qg
YSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhpcyBpbiBwcm9k
dWN0aW9uCi1jb2RlISkKLQotSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0
aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCi1gZm9vOjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVy
ZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQotdXNlcywgYW5k
IHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZ
b3VyCi1wcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRv
IGluY2x1ZGUgdGhpcyBpbnRlcm5hbAotaGVhZGVyLCBidXQgeW91ciBjbGllbnRzIGFyZSBub3Qu
IFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAotaW1wbGVtZW50YXRp
b24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KLQotIyMgUHJpdmF0ZSBDbGFz
cyBNZW1iZXJzICMjCi0KLVByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxl
IGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBmcmllbmRzLgotVG8gYWNjZXNzIGEgY2xhc3Mn
IHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEK
LWZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJl
LiBUZXN0cyB1c2luZyB0aGUKLWZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1l
bWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKLWFjY2Vzc29ycyBpbiB0aGUg
Zml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0
bwoteW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0b21hdGljYWxs
eSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5Ci1hcmUgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWIt
Y2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KLQotQW5vdGhlciB3YXkgdG8gdGVzdCBwcml2YXRlIG1l
bWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9uCi1jbGFzcywg
d2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIgY2xp
ZW50cyBhcmVuJ3QKLWFsbG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0
cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1wbAotKFByaXZhdGUgSW1wbGVtZW50YXRpb24p
IGlkaW9tLgotCi1PciwgeW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVzdCBhcyBhIGZy
aWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0aGlzCi1saW5lIGluIHRoZSBjbGFzcyBib2R5
OgotCi1gYGAKLUZSSUVORF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwotYGBgCi0KLUZv
ciBleGFtcGxlLAotYGBgCi0vLyBmb28uaAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIK
LQotLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6
Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsKLSAgaW50IEJh
cih2b2lkKiB4KTsKLX07Ci0KLS8vIGZvb190ZXN0LmNjCi0uLi4KLVRFU1QoRm9vVGVzdCwgQmFy
UmV0dXJuc1plcm9Pbk51bGwpIHsKLSAgRm9vIGZvbzsKLSAgRVhQRUNUX0VRKDAsIGZvby5CYXIo
TlVMTCkpOwotICAvLyBVc2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgotfQotYGBgCi0K
LVBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5h
bWVzcGFjZSwgYXMgeW91IHNob3VsZAotZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVz
dHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KLWJlIGZyaWVuZHMg
b2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29r
cyBsaWtlOgotCi1gYGAKLW5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewotCi1jbGFzcyBGb28gewot
ICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKLSAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKLSAg
RlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKLSAgLi4uCi0gIGRlZmluaXRpb24gb2YgdGhlIGNs
YXNzIEZvbwotICAuLi4KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKLWBgYAot
Ci1Zb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotbmFtZXNw
YWNlIG15X25hbWVzcGFjZSB7Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLX07Ci0KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4u
IH0KLVRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KLQotfSAgLy8gbmFtZXNwYWNlIG15X25h
bWVzcGFjZQotYGBgCi0KLSMgQ2F0Y2hpbmcgRmFpbHVyZXMgIwotCi1JZiB5b3UgYXJlIGJ1aWxk
aW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91J2xsCi13YW50
IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91IHVzZSB0byB0
ZXN0IGl0PwotR29vZ2xlIFRlc3QsIG9mIGNvdXJzZS4KLQotVGhlIGNoYWxsZW5nZSBpcyB0byB2
ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVzCi1jb3JyZWN0
bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJvd2luZyBhbgot
ZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0
LiAgQnV0IEdvb2dsZQotVGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBob3cgZG8gd2Ug
dGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQotZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/
Ci0KLWAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8g
dGhpcy4gIEFmdGVyCi1gI2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQotCi18
IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotdG8g
YXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8q
YCkgZmFpbHVyZQotd2hvc2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18s
IG9yIHVzZQotCi18IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3Ry
aW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLQotaWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVY
UEVDVF8qYCkgZmFpbHVyZS4KLQotRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29t
ZSBjYXZlYXRzOgotCi0gIDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRv
IGVpdGhlciBtYWNyby4KLSAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJF
KClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0
YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3QuCi0gIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCi0KLV9Ob3RlOl8gR29v
Z2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNlIHRoZQotc3lu
Y2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgi
YCBoYXZlCi1iZWVuIGltcGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29tZSB0aHJlYWQt
c2FmZSwgbWVhbmluZyB0aGF0Ci15b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMgaW4gbXVsdGlw
bGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZvcmUKLQotdGhhdCwgaG93ZXZlciwgR29vZ2xl
IFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNlCi10aHJlYWQt
c2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoKWAKLXdpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgb25seS4g
SWYgX3N0YXRlbWVudF8KLWNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRo
cmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKLXlvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMg
ZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQotdGhlIGZvbGxvd2luZyBt
YWNyb3M6Ci0KLXwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVt
ZW50LCBzdWJzdHJpbmdfYCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLQotIyBH
ZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1lICMKLQotU29tZXRpbWVzIGEgZnVuY3Rpb24g
bWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4K
LUZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlv
dXIgdGVzdCBmaXh0dXJlIHRvIHNldAotdGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hp
Y2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCi1jbGFzcyBoYXMg
dGhpcyBpbmZvcm1hdGlvbjoKLQotYGBgCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLWNsYXNzIFRl
c3RJbmZvIHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0
aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCi0gIC8vCi0gIC8vIERvIE5PVCBkZWxldGUgb3Ig
ZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQotICAvLyBUZXN0SW5m
byBjbGFzcy4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsKLSAgY29uc3Qg
Y2hhciogbmFtZSgpIGNvbnN0OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLWBgYAot
Ci0KLT4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVu
bmluZyB0ZXN0LCBjYWxsCi1gY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAg
c2luZ2xldG9uIG9iamVjdDoKLQotYGBgCi0vLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj
dXJyZW50bHkgcnVubmluZyB0ZXN0LgotLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2Jq
ZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KLWNvbnN0IDo6dGVzdGlu
Zzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gIDo6dGVzdGluZzo6VW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci1wcmludGYoIldlIGFyZSBpbiB0ZXN0
ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCi0gICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3Rf
aW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci1gYGAKLQotYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJl
dHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgotcGFydGljdWxh
ciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgp
YCwKLWBUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5h
bWUgaW1wbGljaXRseSksIG9yCi1mdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KLQotX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0
IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKLQotR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+
ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKLW5vdGlmaWNhdGlvbnMg
YWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Ci1mYWlsdXJlcy4g
VGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9m
Ci10aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcg
b3RoZXJzLiBZb3UgbWF5Ci11c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBz
dGFuZGFyZCBjb25zb2xlIG91dHB1dCwKLXJlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3Zp
ZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3JtIG9mCi1vdXRwdXQsIHN1Y2ggYXMgYSBHVUkg
b3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwotY2hlY2twb2lu
dHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KLQot
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMg
RGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCi0KLVRvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVy
LCB5b3Ugc3ViY2xhc3MgZWl0aGVyCi1bdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQotb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlz
dGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KLVRoZSBmb3JtZXIgaXMgYW4g
KGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZDxi
cj4KLWNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+IChGb3IgZXhh
bXBsZSwgd2hlbiBhIHRlc3QKLXN0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBtZXRob2Qgd2ls
bCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcwotYW4gZW1wdHkgaW1wbGVtZW50YXRp
b24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEKLXN1YmNsYXNz
IG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJvdXQuCi0KLVdo
ZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFuZGxl
ciBmdW5jdGlvbgotYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlwZXMg
YXJlIHVzZWQ6Ci0gICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwMDcp
IHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwKLSAgKiBbVGVz
dENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3JtYXRpb24gYWJv
dXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRlc3RzLAotICAq
IFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRhaW5zIHRoZSBz
dGF0ZSBvZiBhIHRlc3QsIGFuZAotICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5jbHVkZS9ndGVz
dC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3Qg
YXNzZXJ0aW9uLgotCi1BbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBh
cmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCi1vdXQgaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKLXN0YXRlLiAgSGVyZSdzIGFu
IGV4YW1wbGU6Ci0KLWBgYAotICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6OnRl
c3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotICAgIC8vIENhbGxlZCBiZWZvcmUgYSB0
ZXN0IHN0YXJ0cy4KLSAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0aW5n
OjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIHN0
YXJ0aW5nLlxuIiwKLSAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVz
dF9pbmZvLm5hbWUoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFz
c2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBPblRl
c3RQYXJ0UmVzdWx0KAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0
ZXN0X3BhcnRfcmVzdWx0KSB7Ci0gICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKLSAg
ICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJT
dWNjZXNzIiwKLSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAotICAg
ICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKLSAgICAgICAgICAgICB0
ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVy
IGEgdGVzdCBlbmRzLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5n
OjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVu
ZGluZy5cbiIsCi0gICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3Rf
aW5mby5uYW1lKCkpOwotICAgIH0KLSAgfTsKLWBgYAotCi0jIyBVc2luZyBFdmVudCBMaXN0ZW5l
cnMgIyMKLQotVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQg
YW4gaW5zdGFuY2Ugb2YgaXQgdG8KLXRoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0
IChyZXByZXNlbnRlZCBieSBjbGFzcwotW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9n
dGVzdC9ndGVzdC5oI0w5MjkpCi0tIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1l
KSBpbiB5b3VyCi1gbWFpbigpYCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVT
VFMoKWA6Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgLy8gR2V0cyBob2xkIG9mIHRoZSBl
dmVudCBsaXN0ZW5lciBsaXN0LgotICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlz
dGVuZXJzID0KLSAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3Rl
bmVycygpOwotICAvLyBBZGRzIGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRh
a2VzIHRoZSBvd25lcnNoaXAuCi0gIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmlu
dGVyKTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGVyZSdzIG9ubHkg
b25lIHByb2JsZW06IHRoZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4K
LWVmZmVjdCwgc28gaXRzIG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5
b3VyIG1pbmltYWxpc3QKLXByaW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIs
IGp1c3QgcmVsZWFzZSBpdCBmcm9tIHRoZQotZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRl
IGl0LiBZb3UgY2FuIGRvIHNvIGJ5IGFkZGluZyBvbmUgbGluZToKLWBgYAotICAuLi4KLSAgZGVs
ZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkp
OwotICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Ci0gIHJldHVybiBS
VU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0
ZWx5IGRpZmZlcmVudCBvdXRwdXQgZnJvbSB5b3VyCi10ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywg
eW91IGNhbiByZWFkIHRoaXMKLVtzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5j
YykuCi0KLVlvdSBtYXkgYXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3Qu
IFdoZW4gYW4gYE9uKlN0YXJ0KClgCi1vciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBm
aXJlZCwgdGhlIGxpc3RlbmVycyB3aWxsIHJlY2VpdmUgaXQgaW4KLXRoZSBvcmRlciB0aGV5IGFw
cGVhciBpbiB0aGUgbGlzdCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KLXRoZSBl
bmQgb2YgdGhlIGxpc3QsIHRoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQg
WE1MCi1nZW5lcmF0b3Igd2lsbCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQo
KWAgZXZlbnQgd2lsbCBiZQotcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVy
c2VfIG9yZGVyLiBUaGlzIGFsbG93cyBvdXRwdXQgYnkKLWxpc3RlbmVycyBhZGRlZCBsYXRlciB0
byBiZSBmcmFtZWQgYnkgb3V0cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCi1lYXJsaWVyLgotCi0j
IyBHZW5lcmF0aW5nIEZhaWx1cmVzIGluIExpc3RlbmVycyAjIwotCi1Zb3UgbWF5IHVzZSBmYWls
dXJlLXJhaXNpbmcgbWFjcm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKLWBGQUlMKClg
LCBldGMpIHdoZW4gcHJvY2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rp
b25zOgotCi0gIDEuIFlvdSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBh
cnRSZXN1bHQoKWAgKG90aGVyd2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClg
IHRvIGJlIGNhbGxlZCByZWN1cnNpdmVseSkuCi0gIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVz
IGBPblRlc3RQYXJ0UmVzdWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWls
dXJlLgotCi1XaGVuIHlvdSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ug
c2hvdWxkIHB1dCBsaXN0ZW5lcnMKLXRoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9i
ZWZvcmVfIGxpc3RlbmVycyB0aGF0IGNhbiBnZW5lcmF0ZQotZmFpbHVyZXMuIFRoaXMgZW5zdXJl
cyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQotYXR0cmlidXRlZCB0
byB0aGUgcmlnaHQgdGVzdCBieSB0aGUgZm9ybWVyLgotCi1XZSBoYXZlIGEgc2FtcGxlIG9mIGZh
aWx1cmUtcmFpc2luZyBsaXN0ZW5lcgotW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRl
c3QuY2MpLgotCi0jIFJ1bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCi0K
LUdvb2dsZSBUZXN0IHRlc3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNl
IGJ1aWx0LCB5b3UgY2FuIHJ1bgotdGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2
aW9yIHZpYSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwotYW5kL29yIGNvbW1h
bmQgbGluZSBmbGFncy4gRm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3Qg
Y2FsbAotYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9B
TExfVEVTVFMoKWAuCi0KLVRvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVp
ciB1c2FnZSwgcGxlYXNlIHJ1biB5b3VyIHRlc3QKLXByb2dyYW0gd2l0aCB0aGUgYC0taGVscGAg
ZmxhZy4gIFlvdSBjYW4gYWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAotZm9yIHNob3J0LiAg
VGhpcyBmZWF0dXJlIGlzIGFkZGVkIGluIHZlcnNpb24gMS4zLjAuCi0KLUlmIGFuIG9wdGlvbiBp
cyBzcGVjaWZpZWQgYm90aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQotZmxh
ZywgdGhlIGxhdHRlciB0YWtlcyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4g
YWxzbyBiZQotc2V0L3JlYWQgaW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5k
IGxpbmUgZmxhZwotYC0tZ3Rlc3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhm
b28pYC4gIEEgY29tbW9uIHBhdHRlcm4gaXMKLXRvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJl
Zm9yZSBjYWxsaW5nIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCi10byBjaGFuZ2UgdGhl
IGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZsYWc6Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikgewotICAvLyBEaXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KLSAgOjp0
ZXN0aW5nOjpHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gVGhpcyBhbGxv
d3MgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKLX0KLWBgYAotCi0jIyBTZWxlY3RpbmcgVGVzdHMgIyMKLQotVGhpcyBzZWN0
aW9uIHNob3dzIHZhcmlvdXMgb3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVu
LgotCi0jIyMgTGlzdGluZyBUZXN0IE5hbWVzICMjIwotCi1Tb21ldGltZXMgaXQgaXMgbmVjZXNz
YXJ5IHRvIGxpc3QgdGhlIGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCi1ydW5u
aW5nIHRoZW0gc28gdGhhdCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1
ZGluZyB0aGUgZmxhZwotYC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBm
bGFncyBhbmQgbGlzdHMgdGVzdHMgaW4gdGhlIGZvbGxvd2luZwotZm9ybWF0OgotYGBgCi1UZXN0
Q2FzZTEuCi0gIFRlc3ROYW1lMQotICBUZXN0TmFtZTIKLVRlc3RDYXNlMi4KLSAgVGVzdE5hbWUK
LWBgYAotCi1Ob25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUg
ZmxhZyBpcyBwcm92aWRlZC4gVGhlcmUgaXMgbm8KLWNvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQg
dmFyaWFibGUgZm9yIHRoaXMgZmxhZy4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCi0KLSMjIyBSdW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKLQotQnkgZGVm
YXVsdCwgYSBHb29nbGUgVGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBk
ZWZpbmVkLgotU29tZXRpbWVzLCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUg
dGVzdHMgKGUuZy4gZm9yIGRlYnVnZ2luZyBvcgotcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2Up
LiBJZiB5b3Ugc2V0IHRoZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQotb3Ig
dGhlIGAtLWd0ZXN0X2ZpbHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0
IHdpbGwgb25seSBydW4gdGhlCi10ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBv
ZiBgVGVzdENhc2VOYW1lLlRlc3ROYW1lYCkgbWF0Y2ggdGhlCi1maWx0ZXIuCi0KLVRoZSBmb3Jt
YXQgb2YgYSBmaWx0ZXIgaXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0
ZXJucyAoY2FsbGVkCi10aGUgcG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQg
YnkgYSAnYC1gJyBhbmQgYW5vdGhlcgotJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2Fs
bGVkIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQotZmlsdGVyIGlm
IGFuZCBvbmx5IGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQg
ZG9lcyBub3QKLW1hdGNoIGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCi0KLUEgcGF0dGVy
biBtYXkgY29udGFpbiBgJyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hl
cyBhbnkgc2luZ2xlCi1jaGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcq
LU5lZ2F0aXZlUGF0dGVybnMnYCBjYW4gYmUgYWxzbwotd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBh
dHRlcm5zJ2AuCi0KLUZvciBleGFtcGxlOgotCi0gICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFn
LCBhbmQgdGh1cyBydW5zIGFsbCBpdHMgdGVzdHMuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9m
aWx0ZXI9KmAgQWxzbyBydW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2
ZXJ5dGhpbmcgYCpgIHZhbHVlLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rl
c3QuKmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCi0gICogYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qg
d2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9y
ImAuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBh
bGwgbm9uLWRlYXRoIHRlc3RzLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rl
c3QuKi1Gb29UZXN0LkJhcmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAg
ZXhjZXB0IGBGb29UZXN0LkJhcmAuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIyMgVGVtcG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIwotCi1JZiB5b3UgaGF2
ZSBhIGJyb2tlbiB0ZXN0IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBh
ZGQgdGhlCi1gRElTQUJMRURfYCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRl
IGl0IGZyb20gZXhlY3V0aW9uLiBUaGlzIGlzCi1iZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0
aGUgY29kZSBvciB1c2luZyBgI2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKLXN0aWxsIGNv
bXBpbGVkIChhbmQgdGh1cyB3b24ndCByb3QpLgotCi1JZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFs
bCB0ZXN0cyBpbiBhIHRlc3QgY2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCi10
byB0aGUgZnJvbnQgb2YgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFk
ZCBpdCB0byB0aGUgZnJvbnQgb2YKLXRoZSB0ZXN0IGNhc2UgbmFtZS4KLQotRm9yIGV4YW1wbGUs
IHRoZSBmb2xsb3dpbmcgdGVzdHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRo
b3VnaCB0aGV5Ci13aWxsIHN0aWxsIGJlIGNvbXBpbGVkOgotCi1gYGAKLS8vIFRlc3RzIHRoYXQg
Rm9vIGRvZXMgQWJjLgotVEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9Ci0K
LWNsYXNzIERJU0FCTEVEX0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07
Ci0KLS8vIFRlc3RzIHRoYXQgQmFyIGRvZXMgWHl6LgotVEVTVF9GKERJU0FCTEVEX0JhclRlc3Qs
IERvZXNYeXopIHsgLi4uIH0KLWBgYAotCi1fTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25s
eSBiZSB1c2VkIGZvciB0ZW1wb3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAotaGF2ZSB0byBm
aXggdGhlIGRpc2FibGVkIHRlc3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29v
Z2xlIFRlc3Qgd2lsbAotcHJpbnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dy
YW0gY29udGFpbnMgYW55IGRpc2FibGVkIHRlc3RzLgotCi1fVGlwOl8gWW91IGNhbiBlYXNpbHkg
Y291bnQgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQotdXNpbmcgYGdyZXBg
LiBUaGlzIG51bWJlciBjYW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIK
LXRlc3QgcXVhbGl0eS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0K
LSMjIyBUZW1wb3JhcmlseSBFbmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKLQotVG8gaW5jbHVk
ZSBbZGlzYWJsZWQgdGVzdHNdKCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QK
LWV4ZWN1dGlvbiwganVzdCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQotYC0tZ3Rl
c3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQotYEdURVNUX0FMU09f
UlVOX0RJU0FCTEVEX1RFU1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVy
Ci10aGFuIGAwYC4gIFlvdSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlCi1bLS1ndGVzdFwtZmls
dGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGVfdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxl
Y3QKLXdoaWNoIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4
LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCi0KLSMjIFJlcGVhdGluZyB0aGUg
VGVzdHMgIyMKLQotT25jZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2Ug
cmVzdWx0IGlzIGhpdC1vci1taXNzLiBQZXJoYXBzIGl0Ci13aWxsIGZhaWwgb25seSAxJSBvZiB0
aGUgdGltZSwgbWFraW5nIGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVy
Ci1hIGRlYnVnZ2VyLiBUaGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4K
LQotVGhlIGAtLWd0ZXN0X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9y
IHNlbGVjdGVkKSB0ZXN0IG1ldGhvZHMKLWluIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVs
bHksIGEgZmxha3kgdGVzdCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoteW91IGEgY2hh
bmNlIHRvIGRlYnVnLiBIZXJlJ3MgaG93IHRvIHVzZSBpdDoKLQotfCBgJCBmb29fdGVzdCAtLWd0
ZXN0X3JlcGVhdD0xMDAwYCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qg
c3RvcCBhdCBmYWlsdXJlcy4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQg
bWVhbnMgcmVwZWF0aW5nIGZvcmV2ZXIuICAgICAgICAgICAgICAgfAotfCBgJCBmb29fdGVzdCAt
LWd0ZXN0X3JlcGVhdD0xMDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9v
XF90ZXN0IDEwMDAgdGltZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlz
IGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRo
ZSB0ZXN0ZmFpbHMsIGl0IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0
aGVuIGluc3BlY3QgdmFyaWFibGVzIGFuZCBzdGFja3MuIHwKLXwgYCQgZm9vX3Rlc3QgLS1ndGVz
dF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3
aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8Ci0KLUlmIHlvdXIgdGVz
dCBwcm9ncmFtIGNvbnRhaW5zIGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJl
ZAotdXNpbmcgYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRl
ZCBpbiBlYWNoCi1pdGVyYXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4g
aXQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5Ci10aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhl
IGBHVEVTVF9SRVBFQVRgIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1fQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIwotCi1Zb3Ug
Y2FuIHNwZWNpZnkgdGhlIGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNU
X1NIVUZGTEVgCi1lbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMg
aW4gYSBwcm9ncmFtIGluIGEgcmFuZG9tCi1vcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFk
IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLgotCi1CeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1
c2VzIGEgcmFuZG9tIHNlZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Ci10aW1lLiBUaGVy
ZWZvcmUgeW91J2xsIGdldCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29s
ZQotb3V0cHV0IGluY2x1ZGVzIHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBj
YW4gcmVwcm9kdWNlIGFuCi1vcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3Bl
Y2lmeSB0aGUgcmFuZG9tIHNlZWQKLWV4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9t
X3NlZWQ9U0VFRGAgZmxhZyAob3Igc2V0IHRoZQotYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9u
bWVudCB2YXJpYWJsZSksIHdoZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCi1iZXR3ZWVuIDAgYW5k
IDk5OTk5LiBUaGUgc2VlZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0
Ci10byBkbyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9t
IHRoZSBjdXJyZW50Ci10aW1lLgotCi1JZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3Rf
cmVwZWF0PU5gLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYQotZGlmZmVyZW50IHJhbmRvbSBzZWVk
IGFuZCByZS1zaHVmZmxlIHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgQ29udHJvbGxp
bmcgVGVzdCBPdXRwdXQgIyMKLQotVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRo
ZSB3YXkgdGVzdCByZXN1bHRzIGFyZSByZXBvcnRlZC4KLQotIyMjIENvbG9yZWQgVGVybWluYWwg
T3V0cHV0ICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwg
b3V0cHV0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QKLXRoZSBzZXBhcmF0aW9uIGJldHdlZW4g
dGVzdHMsIGFuZCB3aGV0aGVyIHRlc3RzIHBhc3NlZC4KLQotWW91IGNhbiBzZXQgdGhlIEdURVNU
XF9DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAot
Y29tbWFuZCBsaW5lIGZsYWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQp
IHRvIGVuYWJsZSBjb2xvcnMsCi1kaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRl
Y2lkZS4gV2hlbiB0aGUgdmFsdWUgaXMgYGF1dG9gLCBHb29nbGUKLVRlc3Qgd2lsbCB1c2UgY29s
b3JzIGlmIGFuZCBvbmx5IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24K
LW5vbi1XaW5kb3dzIHBsYXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBp
cyBzZXQgdG8gYHh0ZXJtYCBvcgotYHh0ZXJtLWNvbG9yYC4KLQotX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMj
IwotCi1CeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8g
cnVuIGVhY2ggdGVzdC4gIFRvCi1zdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3
aXRoIHRoZSBgLS1ndGVzdF9wcmludF90aW1lPTBgCi1jb21tYW5kIGxpbmUgZmxhZy4gIFNldHRp
bmcgdGhlIGBHVEVTVF9QUklOVF9USU1FYCBlbnZpcm9ubWVudAotdmFyaWFibGUgdG8gYDBgIGhh
cyB0aGUgc2FtZSBlZmZlY3QuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
LiAgKEluIEdvb2dsZSBUZXN0IDEuMy4wIGFuZCBsb3dlciwKLXRoZSBkZWZhdWx0IGJlaGF2aW9y
IGlzIHRoYXQgdGhlIGVsYXBzZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQotCi0jIyMgR2Vu
ZXJhdGluZyBhbiBYTUwgUmVwb3J0ICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFp
bGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKLXRleHR1
YWwgb3V0cHV0LiBUaGUgcmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3Qs
IGFuZCB0aHVzIGNhbgotaGVscCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KLQotVG8gZ2VuZXJh
dGUgdGhlIFhNTCByZXBvcnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgdGhlCi1gLS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpf
cGF0aF90b19vdXRwdXRfZmlsZV8iYCwgd2hpY2ggd2lsbAotY3JlYXRlIHRoZSBmaWxlIGF0IHRo
ZSBnaXZlbiBsb2NhdGlvbi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKLWAieG1s
ImAsIGluIHdoaWNoIGNhc2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2Rl
dGFpbC54bWxgIGZpbGUgaW4KLXRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotSWYgeW91IHNwZWNp
ZnkgYSBkaXJlY3RvcnkgKGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9u
IExpbnV4IG9yCi1gInhtbDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUg
VGVzdCB3aWxsIGNyZWF0ZSB0aGUgWE1MIGZpbGUgaW4KLXRoYXQgZGlyZWN0b3J5LCBuYW1lZCBh
ZnRlciB0aGUgdGVzdCBleGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Ci1w
cm9ncmFtIGBmb29fdGVzdGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5
IGV4aXN0cyAocGVyaGFwcyBsZWZ0Ci1vdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUg
VGVzdCB3aWxsIHBpY2sgYSBkaWZmZXJlbnQgbmFtZSAoZS5nLgotYGZvb190ZXN0XzEueG1sYCkg
dG8gYXZvaWQgb3ZlcndyaXRpbmcgaXQuCi0KLVRoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRl
c2NyaWJlZCBoZXJlLiAgSXQgaXMgYmFzZWQgb24gdGhlCi1ganVuaXRyZXBvcnRgIEFudCB0YXNr
IGFuZCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAotc3lzdGVtcyBs
aWtlIFtIdWRzb25dKGh0dHBzOi8vaHVkc29uLmRldi5qYXZhLm5ldC8pLiBTaW5jZSB0aGF0IGZv
cm1hdAotd2FzIG9yaWdpbmFsbHkgaW50ZW5kZWQgZm9yIEphdmEsIGEgbGl0dGxlIGludGVycHJl
dGF0aW9uIGlzIHJlcXVpcmVkCi10byBtYWtlIGl0IGFwcGx5IHRvIEdvb2dsZSBUZXN0IHRlc3Rz
LCBhcyBzaG93biBoZXJlOgotCi1gYGAKLTx0ZXN0c3VpdGVzIG5hbWU9IkFsbFRlc3RzIiAuLi4+
Ci0gIDx0ZXN0c3VpdGUgbmFtZT0idGVzdF9jYXNlX25hbWUiIC4uLj4KLSAgICA8dGVzdGNhc2Ug
bmFtZT0idGVzdF9uYW1lIiAuLi4+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KLSAg
ICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4u
Ii8+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci08L3Rlc3RzdWl0ZXM+Ci1gYGAK
LQotICAqIFRoZSByb290IGA8dGVzdHN1aXRlcz5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gdGhl
IGVudGlyZSB0ZXN0IHByb2dyYW0uCi0gICogYDx0ZXN0c3VpdGU+YCBlbGVtZW50cyBjb3JyZXNw
b25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgY2FzZXMuCi0gICogYDx0ZXN0Y2FzZT5gIGVsZW1lbnRz
IGNvcnJlc3BvbmQgdG8gR29vZ2xlIFRlc3QgdGVzdCBmdW5jdGlvbnMuCi0KLUZvciBpbnN0YW5j
ZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtCi0KLWBgYAotVEVTVChNYXRoVGVzdCwgQWRkaXRpb24p
IHsgLi4uIH0KLVRFU1QoTWF0aFRlc3QsIFN1YnRyYWN0aW9uKSB7IC4uLiB9Ci1URVNUKExvZ2lj
VGVzdCwgTm9uQ29udHJhZGljdGlvbikgeyAuLi4gfQotYGBgCi0KLWNvdWxkIGdlbmVyYXRlIHRo
aXMgcmVwb3J0OgotCi1gYGAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Ci08dGVzdHN1aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMzUi
IG5hbWU9IkFsbFRlc3RzIj4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJNYXRoVGVzdCIgdGVzdHM9IjIi
IGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjE1Ij4KLSAgICA8dGVzdGNhc2UgbmFtZT0i
QWRkaXRpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI3IiBjbGFzc25hbWU9IiI+Ci0gICAgICA8ZmFp
bHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIDEpJiN4MEE7IEFjdHVhbDogMyYjeDBBO0V4
cGVjdGVkOiAyIiB0eXBlPSIiLz4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBh
ZGQoMSwgLTEpJiN4MEE7IEFjdHVhbDogMSYjeDBBO0V4cGVjdGVkOiAwIiB0eXBlPSIiLz4KLSAg
ICA8L3Rlc3RjYXNlPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWJ0cmFjdGlvbiIgc3RhdHVzPSJy
dW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0iIj4KLSAgICA8L3Rlc3RjYXNlPgotICA8L3Rlc3RzdWl0
ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJMb2dpY1Rlc3QiIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIg
ZXJyb3JzPSIwIiB0aW1lPSI1Ij4KLSAgICA8dGVzdGNhc2UgbmFtZT0iTm9uQ29udHJhZGljdGlv
biIgc3RhdHVzPSJydW4iIHRpbWU9IjUiIGNsYXNzbmFtZT0iIj4KLSAgICA8L3Rlc3RjYXNlPgot
ICA8L3Rlc3RzdWl0ZT4KLTwvdGVzdHN1aXRlcz4KLWBgYAotCi1UaGluZ3MgdG8gbm90ZToKLQot
ICAqIFRoZSBgdGVzdHNgIGF0dHJpYnV0ZSBvZiBhIGA8dGVzdHN1aXRlcz5gIG9yIGA8dGVzdHN1
aXRlPmAgZWxlbWVudCB0ZWxscyBob3cgbWFueSB0ZXN0IGZ1bmN0aW9ucyB0aGUgR29vZ2xlIFRl
c3QgcHJvZ3JhbSBvciB0ZXN0IGNhc2UgY29udGFpbnMsIHdoaWxlIHRoZSBgZmFpbHVyZXNgIGF0
dHJpYnV0ZSB0ZWxscyBob3cgbWFueSBvZiB0aGVtIGZhaWxlZC4KLSAgKiBUaGUgYHRpbWVgIGF0
dHJpYnV0ZSBleHByZXNzZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LCB0ZXN0IGNhc2UsIG9y
IGVudGlyZSB0ZXN0IHByb2dyYW0gaW4gbWlsbGlzZWNvbmRzLgotICAqIEVhY2ggYDxmYWlsdXJl
PmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNz
ZXJ0aW9uLgotICAqIFNvbWUgSlVuaXQgY29uY2VwdHMgZG9uJ3QgYXBwbHkgdG8gR29vZ2xlIFRl
c3QsIHlldCB3ZSBoYXZlIHRvIGNvbmZvcm0gdG8gdGhlIERURC4gVGhlcmVmb3JlIHlvdSdsbCBz
ZWUgc29tZSBkdW1teSBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyBpbiB0aGUgcmVwb3J0LiBZb3Ug
Y2FuIHNhZmVseSBpZ25vcmUgdGhlc2UgcGFydHMuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgotCi0jIyBDb250cm9sbGluZyBIb3cgRmFpbHVyZXMgQXJlIFJlcG9ydGVk
ICMjCi0KLSMjIyBUdXJuaW5nIEFzc2VydGlvbiBGYWlsdXJlcyBpbnRvIEJyZWFrLVBvaW50cyAj
IyMKLQotV2hlbiBydW5uaW5nIHRlc3QgcHJvZ3JhbXMgdW5kZXIgYSBkZWJ1Z2dlciwgaXQncyB2
ZXJ5IGNvbnZlbmllbnQgaWYgdGhlCi1kZWJ1Z2dlciBjYW4gY2F0Y2ggYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgYW5kIGF1dG9tYXRpY2FsbHkgZHJvcCBpbnRvIGludGVyYWN0aXZlCi1tb2RlLiBHb29n
bGUgVGVzdCdzIF9icmVhay1vbi1mYWlsdXJlXyBtb2RlIHN1cHBvcnRzIHRoaXMgYmVoYXZpb3Iu
Ci0KLVRvIGVuYWJsZSBpdCwgc2V0IHRoZSBgR1RFU1RfQlJFQUtfT05fRkFJTFVSRWAgZW52aXJv
bm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZQotb3RoZXIgdGhhbiBgMGAgLiBBbHRlcm5hdGl2ZWx5
LCB5b3UgY2FuIHVzZSB0aGUgYC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAKLWNvbW1hbmQgbGlu
ZSBmbGFnLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIERp
c2FibGluZyBDYXRjaGluZyBUZXN0LVRocm93biBFeGNlcHRpb25zICMjIwotCi1Hb29nbGUgVGVz
dCBjYW4gYmUgdXNlZCBlaXRoZXIgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMgZW5hYmxlZC4g
IElmCi1hIHRlc3QgdGhyb3dzIGEgQysrIGV4Y2VwdGlvbiBvciAob24gV2luZG93cykgYSBzdHJ1
Y3R1cmVkIGV4Y2VwdGlvbgotKFNFSCksIGJ5IGRlZmF1bHQgR29vZ2xlIFRlc3QgY2F0Y2hlcyBp
dCwgcmVwb3J0cyBpdCBhcyBhIHRlc3QKLWZhaWx1cmUsIGFuZCBjb250aW51ZXMgd2l0aCB0aGUg
bmV4dCB0ZXN0IG1ldGhvZC4gIFRoaXMgbWF4aW1pemVzIHRoZQotY292ZXJhZ2Ugb2YgYSB0ZXN0
IHJ1bi4gIEFsc28sIG9uIFdpbmRvd3MgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIHdpbGwKLWNhdXNl
IGEgcG9wLXVwIHdpbmRvdywgc28gY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbnMgYWxsb3dzIHlvdSB0
byBydW4KLXRoZSB0ZXN0cyBhdXRvbWF0aWNhbGx5LgotCi1XaGVuIGRlYnVnZ2luZyB0aGUgdGVz
dCBmYWlsdXJlcywgaG93ZXZlciwgeW91IG1heSBpbnN0ZWFkIHdhbnQgdGhlCi1leGNlcHRpb25z
IHRvIGJlIGhhbmRsZWQgYnkgdGhlIGRlYnVnZ2VyLCBzdWNoIHRoYXQgeW91IGNhbiBleGFtaW5l
Ci10aGUgY2FsbCBzdGFjayB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uICBUbyBhY2hpZXZl
IHRoYXQsIHNldCB0aGUKLWBHVEVTVF9DQVRDSF9FWENFUFRJT05TYCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byBgMGAsIG9yIHVzZSB0aGUKLWAtLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnM9MGAgZmxh
ZyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzLgotCi0qKkF2YWlsYWJpbGl0eSoqOiBMaW51eCwgV2lu
ZG93cywgTWFjLgotCi0jIyMgTGV0dGluZyBBbm90aGVyIFRlc3RpbmcgRnJhbWV3b3JrIERyaXZl
ICMjIwotCi1JZiB5b3Ugd29yayBvbiBhIHByb2plY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVz
aW5nIGFub3RoZXIgdGVzdGluZwotZnJhbWV3b3JrIGFuZCBpcyBub3QgcmVhZHkgdG8gY29tcGxl
dGVseSBzd2l0Y2ggdG8gR29vZ2xlIFRlc3QgeWV0LAoteW91IGNhbiBnZXQgbXVjaCBvZiBHb29n
bGUgVGVzdCdzIGJlbmVmaXQgYnkgdXNpbmcgaXRzIGFzc2VydGlvbnMgaW4KLXlvdXIgZXhpc3Rp
bmcgdGVzdHMuICBKdXN0IGNoYW5nZSB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIHRvIGxvb2sKLWxp
a2U6Ci0KLWBgYAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLWludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikgewotICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSkgPSB0cnVlOwotICAvLyBJbXBvcnRhbnQ6IEdvb2dsZSBUZXN0IG11c3QgYmUgaW5pdGlhbGl6
ZWQuCi0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC4uLiB3
aGF0ZXZlciB5b3VyIGV4aXN0aW5nIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4uLgotfQot
YGBgCi0KLVdpdGggdGhhdCwgeW91IGNhbiB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBh
ZGRpdGlvbiB0byB0aGUKLW5hdGl2ZSBhc3NlcnRpb25zIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsg
cHJvdmlkZXMsIGZvciBleGFtcGxlOgotCi1gYGAKLXZvaWQgVGVzdEZvb0RvZXNCYXIoKSB7Ci0g
IEZvbyBmb287Ci0gIEVYUEVDVF9MRShmb28uQmFyKDEpLCAxMDApOyAgICAgLy8gQSBHb29nbGUg
VGVzdCBhc3NlcnRpb24uCi0gIENQUFVOSVRfQVNTRVJUKGZvby5Jc0VtcHR5KCkpOyAgLy8gQSBu
YXRpdmUgYXNzZXJ0aW9uLgotfQotYGBgCi0KLUlmIGEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIGZh
aWxzLCBpdCB3aWxsIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kCi10aHJvdyBhbiBleGNlcHRp
b24sIHdoaWNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGZhaWx1cmUgYnkgeW91ciBob3N0Ci10ZXN0
aW5nIGZyYW1ld29yay4gIElmIHlvdSBjb21waWxlIHlvdXIgY29kZSB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQsCi1hIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRpb24gd2lsbCBpbnN0ZWFkIGV4
aXQgeW91ciBwcm9ncmFtIHdpdGggYQotbm9uLXplcm8gY29kZSwgd2hpY2ggd2lsbCBhbHNvIHNp
Z25hbCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3QKLXJ1bm5lci4KLQotSWYgeW91IGRvbid0
IHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlO2Ag
aW4KLXlvdXIgYG1haW4oKWAsIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBlbmFibGUgdGhpcyBmZWF0
dXJlIGJ5IHNwZWNpZnlpbmcKLXRoZSBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBmbGFnIG9u
IHRoZSBjb21tYW5kLWxpbmUgb3Igc2V0dGluZyB0aGUKLWBHVEVTVF9USFJPV19PTl9GQUlMVVJF
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIG5vbi16ZXJvIHZhbHVlLgotCi1fQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuMy4wLgotCi0jIyBEaXN0cmlidXRp
bmcgVGVzdCBGdW5jdGlvbnMgdG8gTXVsdGlwbGUgTWFjaGluZXMgIyMKLQotSWYgeW91IGhhdmUg
bW9yZSB0aGFuIG9uZSBtYWNoaW5lIHlvdSBjYW4gdXNlIHRvIHJ1biBhIHRlc3QgcHJvZ3JhbSwK
LXlvdSBtaWdodCB3YW50IHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4gcGFyYWxsZWwgYW5k
IGdldCB0aGUKLXJlc3VsdCBmYXN0ZXIuICBXZSBjYWxsIHRoaXMgdGVjaG5pcXVlIF9zaGFyZGlu
Z18sIHdoZXJlIGVhY2ggbWFjaGluZQotaXMgY2FsbGVkIGEgX3NoYXJkXy4KLQotR29vZ2xlIFRl
c3QgaXMgY29tcGF0aWJsZSB3aXRoIHRlc3Qgc2hhcmRpbmcuICBUbyB0YWtlIGFkdmFudGFnZSBv
ZgotdGhpcyBmZWF0dXJlLCB5b3VyIHRlc3QgcnVubmVyIChub3QgcGFydCBvZiBHb29nbGUgVGVz
dCkgbmVlZHMgdG8gZG8KLXRoZSBmb2xsb3dpbmc6Ci0KLSAgMS4gQWxsb2NhdGUgYSBudW1iZXIg
b2YgbWFjaGluZXMgKHNoYXJkcykgdG8gcnVuIHRoZSB0ZXN0cy4KLSAgMS4gT24gZWFjaCBzaGFy
ZCwgc2V0IHRoZSBgR1RFU1RfVE9UQUxfU0hBUkRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0
aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcy4gIEl0IG11c3QgYmUgdGhlIHNhbWUgZm9yIGFsbCBz
aGFyZHMuCi0gIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1NIQVJEX0lOREVYYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgaW5kZXggb2YgdGhlIHNoYXJkLiAgRGlmZmVyZW50
IHNoYXJkcyBtdXN0IGJlIGFzc2lnbmVkIGRpZmZlcmVudCBpbmRpY2VzLCB3aGljaCBtdXN0IGJl
IGluIHRoZSByYW5nZSBgWzAsIEdURVNUX1RPVEFMX1NIQVJEUyAtIDFdYC4KLSAgMS4gUnVuIHRo
ZSBzYW1lIHRlc3QgcHJvZ3JhbSBvbiBhbGwgc2hhcmRzLiAgV2hlbiBHb29nbGUgVGVzdCBzZWVz
IHRoZSBhYm92ZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBpdCB3aWxsIHNlbGVjdCBhIHN1
YnNldCBvZiB0aGUgdGVzdCBmdW5jdGlvbnMgdG8gcnVuLiAgQWNyb3NzIGFsbCBzaGFyZHMsIGVh
Y2ggdGVzdCBmdW5jdGlvbiBpbiB0aGUgcHJvZ3JhbSB3aWxsIGJlIHJ1biBleGFjdGx5IG9uY2Uu
Ci0gIDEuIFdhaXQgZm9yIGFsbCBzaGFyZHMgdG8gZmluaXNoLCB0aGVuIGNvbGxlY3QgYW5kIHJl
cG9ydCB0aGUgcmVzdWx0cy4KLQotWW91ciBwcm9qZWN0IG1heSBoYXZlIHRlc3RzIHRoYXQgd2Vy
ZSB3cml0dGVuIHdpdGhvdXQgR29vZ2xlIFRlc3QgYW5kCi10aHVzIGRvbid0IHVuZGVyc3RhbmQg
dGhpcyBwcm90b2NvbC4gIEluIG9yZGVyIGZvciB5b3VyIHRlc3QgcnVubmVyIHRvCi1maWd1cmUg
b3V0IHdoaWNoIHRlc3Qgc3VwcG9ydHMgc2hhcmRpbmcsIGl0IGNhbiBzZXQgdGhlIGVudmlyb25t
ZW50Ci12YXJpYWJsZSBgR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEVgIHRvIGEgbm9uLWV4aXN0ZW50
IGZpbGUgcGF0aC4gIElmIGEKLXRlc3QgcHJvZ3JhbSBzdXBwb3J0cyBzaGFyZGluZywgaXQgd2ls
bCBjcmVhdGUgdGhpcyBmaWxlIHRvCi1hY2tub3dsZWRnZSB0aGUgZmFjdCAodGhlIGFjdHVhbCBj
b250ZW50cyBvZiB0aGUgZmlsZSBhcmUgbm90Ci1pbXBvcnRhbnQgYXQgdGhpcyB0aW1lOyBhbHRo
b3VnaCB3ZSBtYXkgc3RpY2sgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24KLWluIGl0IGluIHRoZSBm
dXR1cmUuKTsgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IGNyZWF0ZSBpdC4KLQotSGVyZSdzIGFuIGV4
YW1wbGUgdG8gbWFrZSBpdCBjbGVhci4gIFN1cHBvc2UgeW91IGhhdmUgYSB0ZXN0IHByb2dyYW0K
LWBmb29fdGVzdGAgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nIDUgdGVzdCBmdW5jdGlvbnM6
Ci1gYGAKLVRFU1QoQSwgVikKLVRFU1QoQSwgVykKLVRFU1QoQiwgWCkKLVRFU1QoQiwgWSkKLVRF
U1QoQiwgWikKLWBgYAotYW5kIHlvdSBoYXZlIDMgbWFjaGluZXMgYXQgeW91ciBkaXNwb3NhbC4g
IFRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbnMgaW4KLXBhcmFsbGVsLCB5b3Ugd291bGQgc2V0IGBH
VEVTVF9UT1RBTF9TSEFSRFNgIHRvIDMgb24gYWxsIG1hY2hpbmVzLCBhbmQKLXNldCBgR1RFU1Rf
U0hBUkRfSU5ERVhgIHRvIDAsIDEsIGFuZCAyIG9uIHRoZSBtYWNoaW5lcyByZXNwZWN0aXZlbHku
Ci1UaGVuIHlvdSB3b3VsZCBydW4gdGhlIHNhbWUgYGZvb190ZXN0YCBvbiBlYWNoIG1hY2hpbmUu
Ci0KLUdvb2dsZSBUZXN0IHJlc2VydmVzIHRoZSByaWdodCB0byBjaGFuZ2UgaG93IHRoZSB3b3Jr
IGlzIGRpc3RyaWJ1dGVkCi1hY3Jvc3MgdGhlIHNoYXJkcywgYnV0IGhlcmUncyBvbmUgcG9zc2li
bGUgc2NlbmFyaW86Ci0KLSAgKiBNYWNoaW5lICMwIHJ1bnMgYEEuVmAgYW5kIGBCLlhgLgotICAq
IE1hY2hpbmUgIzEgcnVucyBgQS5XYCBhbmQgYEIuWWAuCi0gICogTWFjaGluZSAjMiBydW5zIGBC
LlpgLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lv
biAxLjMuMC4KLQotIyBGdXNpbmcgR29vZ2xlIFRlc3QgU291cmNlIEZpbGVzICMKLQotR29vZ2xl
IFRlc3QncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiB+MzAgZmlsZXMgKGV4Y2x1ZGluZyBp
dHMgb3duCi10ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2Fn
ZWQgdXAgaW4gdHdvIGZpbGVzIChhCi1gLmhgIGFuZCBhIGAuY2NgKSBpbnN0ZWFkLCBzdWNoIHRo
YXQgeW91IGNhbiBlYXNpbHkgY29weSB0aGVtIHRvIGEgbmV3Ci1tYWNoaW5lIGFuZCBzdGFydCBo
YWNraW5nIHRoZXJlLiAgRm9yIHRoaXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKLVB5dGhv
biBzY3JpcHQgYGZ1c2VfZ3Rlc3RfZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9y
eSAoc2luY2UgcmVsZWFzZSAxLjMuMCkuCi1Bc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9y
IGFib3ZlIGluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QKLWdvIHRvIHRoYXQgZGlyZWN0
b3J5IGFuZCBydW4KLWBgYAotcHl0aG9uIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgot
YGBgCi0KLWFuZCB5b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5n
IGNyZWF0ZWQgd2l0aCBmaWxlcwotYGd0ZXN0L2d0ZXN0LmhgIGFuZCBgZ3Rlc3QvZ3Rlc3QtYWxs
LmNjYCBpbiBpdC4gIFRoZXNlIGZpbGVzIGNvbnRhaW4KLWV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8g
dXNlIEdvb2dsZSBUZXN0LiAgSnVzdCBjb3B5IHRoZW0gdG8gYW55d2hlcmUKLXlvdSB3YW50IGFu
ZCB5b3UgYXJlIHJlYWR5IHRvIHdyaXRlIHRlc3RzLiAgWW91IGNhbiB1c2UgdGhlCi1bc2NyaXB0
cy90ZXN0L01ha2VmaWxlXSguLi9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUpCi1maWxlIGFzIGFuIGV4
YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0uCi0KLSMgV2hl
cmUgdG8gR28gZnJvbSBIZXJlICMKLQotQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbm93IGxlYXJu
ZWQgbW9yZSBhZHZhbmNlZCBHb29nbGUgVGVzdCB0b29scyBhbmQgYXJlCi1yZWFkeSB0byB0YWNr
bGUgbW9yZSBjb21wbGV4IHRlc3RpbmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRpdmUgZXZlbiBk
ZWVwZXIsIHlvdQotY2FuIHJlYWQgdGhlIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oVjFf
Nl9GQVEubWQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0RvY3VtZW50YXRp
b24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRG9jdW1lbnRhdGlvbi5tZApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2E5MjQ2NjBhM2RjMDYwM2Y4MTM3NDM4OThjY2Q2YzNjOTIw
Nzk3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzZfRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE0
ICswLDAgQEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZv
ciBHb29nbGUgVGVzdCAqKjEuNioqCi0tLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9u
IG9mIEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKLWRvY3VtZW50YXRpb24gZm9yIHRoYXQg
c3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCi0KLSAgKiBbUHJpbWVyXShWMV82X1ByaW1lci5t
ZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KLSAgKiBbU2Ft
cGxlc10oVjFfNl9TYW1wbGVzLm1kKSAtLSBsZWFybiBmcm9tIGV4YW1wbGVzLgotICAqIFtBZHZh
bmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29v
Z2xlIFRlc3QuCi0gICogW1hjb2RlR3VpZGVdKFYxXzZfWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRv
IHVzZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCi0gICogW0ZyZXF1ZW50bHktQXNrZWQg
UXVlc3Rpb25zXShWMV82X0ZBUS5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVl
c3Rpb24gb24gdGhlIG1haWxpbmcgbGlzdC4KLQotVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2ds
ZSBUZXN0LCByZWFkOgotCi0gICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlz
IF9iZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KLSAgKiBbUHVtcE1hbnVhbF0oVjFf
Nl9QdW1wTWFudWFsLm1kKSAtLSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdz
IHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1YxXzZfRkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0ZBUS5t
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3Zjc4NDA3NzIyZTFlNWU3YTg2YzY3
MTM1OThlNTc5NjA3Yjc4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRkFRLm1kCisrKyAvZGV2L251bGwKQEAgLTEs
MTAzOCArMCwwIEBACi0KLQotSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBx
dWVzdGlvbiBoZXJlLCBhbmQgeW91IGhhdmUgcmVhZAotW1ByaW1lcl0oVjFfNl9QcmltZXIubWQp
IGFuZCBbQWR2YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kKSwgc2VuZCBpdCB0bwot
Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLgotCi0jIyBXaHkgc2hvdWxkIEkg
dXNlIEdvb2dsZSBUZXN0IGluc3RlYWQgb2YgbXkgZmF2b3JpdGUgQysrIHRlc3RpbmcgZnJhbWV3
b3JrPyAjIwotCi1GaXJzdCwgbGV0IHVzIHNheSBjbGVhcmx5IHRoYXQgd2UgZG9uJ3Qgd2FudCB0
byBnZXQgaW50byB0aGUgZGViYXRlIG9mCi13aGljaCBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMg
Kip0aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCi1mcmFtZXdvcmtzIGZvciB3cml0
aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0IGZvcgotdGhlIGRl
dmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0aGVyZSBpcyAob3Ig
d2lsbAotYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUgdG8gcGljayB0aGUg
cmlnaHQgdG9vbCBmb3IgdGhlCi1wYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0YWNrbGluZy4KLQot
V2UgY3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0
IGNvbWJpbmF0aW9uCi1vZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGluIGFuIGV4aXN0aW5n
IGZyYW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCi1uZWVkcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBs
aXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKLVRlc3QuICBXZSBkb24n
dCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJhdGhlciwgdGhlCi1j
b21iaW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9pY2UgZm9yIHVzLiAg
V2UgaG9wZSB0aGlzCi1saXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhlciBpdCBpcyBmb3Ig
eW91IHRvby4KLQotICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlOiBp
dCBkb2Vzbid0IHJlcXVpcmUgZXhjZXB0aW9ucyBvciBSVFRJOyBpdCB3b3JrcyBhcm91bmQgdmFy
aW91cyBidWdzIGluIHZhcmlvdXMgY29tcGlsZXJzIGFuZCBlbnZpcm9ubWVudHM7IGV0Yy4gIEFz
IGEgcmVzdWx0LCBpdCB3b3JrcyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRvd3MgYW5kIHNldmVy
YWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCi0gICogTm9uZmF0YWwgYXNzZXJ0aW9ucyAo
YEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZlcnMsIGFzIHRoZXkg
YWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIHNpbmdsZSBlZGl0
LWNvbXBpbGUtdGVzdCBjeWNsZS4KLSAgKiBJdCdzIGVhc3kgdG8gd3JpdGUgYXNzZXJ0aW9ucyB0
aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1c2UgdGhlIHN0cmVh
bSBzeW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBlLmcuIGBBU1NF
UlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0IGRvZXNuJ3QgcmVx
dWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25zLgotICAqIEdvb2ds
ZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBkb2Vzbid0IHJlcXVp
cmUgeW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgotICAqIERlYXRo
IHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkgZm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGlu
IHByb2R1Y3Rpb24gY29kZSBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgot
ICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBzIHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFu
IGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gaXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGlu
ZSBvciBsb29wLgotICAqIFlvdSBjYW4gZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBu
YW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZlcyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSBy
ZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUuCi0gICogR29vZ2xlIFRlc3QgY2FuIGdlbmVyYXRlIFhN
TCB0ZXN0IHJlc3VsdCByZXBvcnRzIHRoYXQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRp
bnVvdXMgYnVpbGQgc3lzdGVtIGxpa2UgSHVkc29uLgotICAqIFNpbXBsZSB0aGluZ3MgYXJlIGVh
c3kgaW4gR29vZ2xlIFRlc3QsIHdoaWxlIGhhcmQgdGhpbmdzIGFyZSBwb3NzaWJsZTogaW4gYWRk
aXRpb24gdG8gYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBbZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRz
XShWMV82X0FkdmFuY2VkR3VpZGUubWQjR2xvYmFsX1NldC1VcF9hbmRfVGVhci1Eb3duKSBhbmQg
dGVzdHMgcGFyYW1ldGVyaXplZCBieSBbdmFsdWVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjdmFs
dWUtcGFyYW1ldGVyaXplZC10ZXN0cykgb3IgW3R5cGVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQj
dHlwZWQtdGVzdHMpLCBHb29nbGUgVGVzdCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9yIHRoZSB1
c2VyIHRvIGV4dGVuZCB0aGUgZnJhbWV3b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgZG8g
c29tZXRoaW5nIG91dCBvZiB0aGUgYm94LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBjYW4gaW1w
bGVtZW50IHRoZSBmZWF0dXJlIHVzaW5nIEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwgd2l0aG91
dCBjaGFuZ2luZyBHb29nbGUgVGVzdCBpdHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuOgot
ICAgICogZXhwYW5kIHlvdXIgdGVzdGluZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtjdXN0b20g
cHJlZGljYXRlc10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZv
ci1iZXR0ZXItZXJyb3ItbWVzc2FnZXMpLAotICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRv
IFtwcmludCB5b3VyIHR5cGVzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjdGVhY2hpbmctZ29vZ2xl
LXRlc3QtaG93LXRvLXByaW50LXlvdXItdmFsdWVzKSwKLSAgICAqIGRlZmluZSB5b3VyIG93biB0
ZXN0aW5nIG1hY3JvcyBvciB1dGlsaXRpZXMgYW5kIHZlcmlmeSB0aGVtIHVzaW5nIEdvb2dsZSBU
ZXN0J3MgW1NlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlXShWMV82X0FkdmFuY2VkR3VpZGUubWQj
Y2F0Y2hpbmctZmFpbHVyZXMpLCBhbmQKLSAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMg
b3IgY2hhbmdlIHRoZSB0ZXN0IG91dHB1dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVz
dCBldmVudHNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnkt
aGFuZGxpbmctdGVzdC1ldmVudHMpLgotCi0jIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNv
bXBpbGluZyBHb29nbGUgVGVzdC4gIFdvdWxkIHlvdSBmaXggdGhlbT8gIyMKLQotV2Ugc3RyaXZl
IHRvIG1pbmltaXplIGNvbXBpbGVyIHdhcm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJl
Zm9yZSByZWxlYXNpbmcgYSBuZXcgdmVyc2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBp
dCBkb2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtl
IHNjcmlwdCBvbiBXaW5kb3dzLCBMaW51eCwgYW5kIE1hYyBPUy4KLQotVW5mb3J0dW5hdGVseSwg
dGhpcyBkb2Vzbid0IG1lYW4geW91IGFyZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3
aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdCBpbiB5b3VyIGVudmlyb25tZW50OgotCi0gICogWW91
IG1heSBiZSB1c2luZyBhIGRpZmZlcmVudCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVy
ZW50IHZlcnNpb24gb2YgdGhlIHNhbWUgY29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVz
dCBmb3IgYWxsIGNvbXBpbGVycy4KLSAgKiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZl
cmVudCBwbGF0Zm9ybSBhcyB3ZSBkby4KLSAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRp
ZmZlcmVudCBjb21waWxlciBmbGFncyBhcyB3ZSBkby4KLQotSXQgaXMgbm90IGFsd2F5cyBwb3Nz
aWJsZSB0byBtYWtlIEdvb2dsZSBUZXN0IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwg
aXQgbWF5IG5vdCBiZSBkZXNpcmFibGUgaWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQg
YW5kIGZpeGluZyB0aGUgdmlvbGF0aW9ucyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCi0K
LUlmIHlvdSBzZWUgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dl
c3QgdGhhdCB5b3UgdXNlIHRoZSBgLWlzeXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVz
aW5nIEdDQykgdG8gbWFyayBHb29nbGUgVGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAg
VGhhdCdsbCBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCi0KLSMj
IFdoeSBzaG91bGQgbm90IHRlc3QgY2FzZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVu
ZGVyc2NvcmU/ICMjCi0KLVVuZGVyc2NvcmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2Vy
dmVzIHRoZSBmb2xsb3dpbmcgdG8gYmUgdXNlZCBieQotdGhlIGNvbXBpbGVyIGFuZCB0aGUgc3Rh
bmRhcmQgbGlicmFyeToKLQotICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFu
IGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciwgYW5kCi0gIDEuIGFueSBpZGVu
dGlmaWVyIHRoYXQgY29udGFpbmVycyB0d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4g
YF9fYCkgX2FueXdoZXJlXyBpbiBpdHMgbmFtZS4KLQotVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVk
XyBmcm9tIHVzaW5nIHN1Y2ggaWRlbnRpZmllcnMuCi0KLU5vdyBsZXQncyBsb29rIGF0IHdoYXQg
dGhpcyBtZWFucyBmb3IgYFRFU1RgIGFuZCBgVEVTVF9GYC4KLQotQ3VycmVudGx5IGBURVNUKFRl
c3RDYXNlTmFtZSwgVGVzdE5hbWUpYCBnZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAotYFRlc3RDYXNl
TmFtZV9UZXN0TmFtZV9UZXN0YC4gIFdoYXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBg
VGVzdE5hbWVgCi1jb250YWlucyBgX2A/Ci0KLSAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRz
IHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9v
YCksIHdlIGVuZCB1cCB3aXRoIGBfRm9vX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZl
ZCBhbmQgdGh1cyBpbnZhbGlkLgotICAxLiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4g
YF9gIChzYXksIGBGb29fYCksIHdlIGdldCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMg
aW52YWxpZC4KLSAgMS4gSWYgYFRlc3ROYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9C
YXJgKSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4K
LSAgMS4gSWYgYFRlc3ROYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdl
dCBgVGVzdENhc2VOYW1lX0Jhcl9fVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0KLVNvIGNsZWFy
bHkgYFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRo
IGBfYAotKEFjdHVhbGx5LCBgVGVzdENhc2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMg
bG9uZyBhcyB0aGUgYF9gIGlzbid0Ci1mb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4g
IEJ1dCB0aGF0J3MgZ2V0dGluZyBjb21wbGljYXRlZC4gIFNvCi1mb3Igc2ltcGxpY2l0eSB3ZSBq
dXN0IHNheSB0aGF0IGl0IGNhbm5vdCBzdGFydCB3aXRoIGBfYC4pLgotCi1JdCBtYXkgc2VlbSBm
aW5lIGZvciBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0
aGUKLW1pZGRsZS4gIEhvd2V2ZXIsIGNvbnNpZGVyIHRoaXM6Ci1gYGAKLVRFU1QoVGltZSwgRmxp
ZXNfTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQotVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93
KSB7IC4uLiB9Ci1gYGAKLQotTm93LCB0aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRl
IHRoZSBzYW1lIGNsYXNzCi0oYFRpbWVfRmlsZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuICBUaGF0
J3Mgbm90IGdvb2QuCi0KLVNvIGZvciBzaW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMg
dG8gYXZvaWQgYF9gIGluIGBUZXN0Q2FzZU5hbWVgCi1hbmQgYFRlc3ROYW1lYC4gIFRoZSBydWxl
IGlzIG1vcmUgY29uc3RyYWluaW5nIHRoYW4gbmVjZXNzYXJ5LCBidXQgaXQncwotc2ltcGxlIGFu
ZCBlYXN5IHRvIHJlbWVtYmVyLiAgSXQgYWxzbyBnaXZlcyBHb29nbGUgVGVzdCBzb21lIHdpZ2ds
ZQotcm9vbSBpbiBjYXNlIGl0cyBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhl
IGZ1dHVyZS4KLQotSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1t
ZWRpYXRlbHkgY29uc2VxdWVuY2VzLAotYnV0IHlvdXIgdGVzdCBtYXkgKGp1c3QgbWF5KSBicmVh
ayB3aXRoIGEgbmV3IGNvbXBpbGVyIChvciBhIG5ldwotdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIg
eW91IGFyZSB1c2luZykgb3Igd2l0aCBhIG5ldyB2ZXJzaW9uIG9mIEdvb2dsZQotVGVzdC4gIFRo
ZXJlZm9yZSBpdCdzIGJlc3QgdG8gZm9sbG93IHRoZSBydWxlLgotCi0jIyBXaHkgaXMgaXQgbm90
IHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYSBwcmUtY29tcGlsZWQgY29weSBvZiBHb29nbGUgVGVz
dCAoZm9yIGV4YW1wbGUsIGludG8gL3Vzci9sb2NhbCk/ICMjCi0KLUluIHRoZSBlYXJseSBkYXlz
LCB3ZSBzYWlkIHRoYXQgeW91IGNvdWxkIGluc3RhbGwKLWNvbXBpbGVkIEdvb2dsZSBUZXN0IGxp
YnJhcmllcyBvbiBgKmBuaXggc3lzdGVtcyB1c2luZyBgbWFrZSBpbnN0YWxsYC4KLVRoZW4gZXZl
cnkgdXNlciBvZiB5b3VyIG1hY2hpbmUgY2FuIHdyaXRlIHRlc3RzIHdpdGhvdXQKLXJlY29tcGls
aW5nIEdvb2dsZSBUZXN0LgotCi1UaGlzIHNlZW1lZCBsaWtlIGEgZ29vZCBpZGVhLCBidXQgaXQg
aGFzIGEKLWdvdC1jaGE6IGV2ZXJ5IHVzZXIgbmVlZHMgdG8gY29tcGlsZSBoaXMgdGVzdHMgdXNp
bmcgdGhlIF9zYW1lXyBjb21waWxlcgotZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoZSBpbnN0YWxs
ZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVzOyBvdGhlcndpc2UKLWhlIG1heSBydW4gaW50byB1bmRl
ZmluZWQgYmVoYXZpb3JzIChpLmUuIHRoZSB0ZXN0cyBjYW4gYmVoYXZlCi1zdHJhbmdlbHkgYW5k
IG1heSBldmVuIGNyYXNoIGZvciBubyBvYnZpb3VzIHJlYXNvbnMpLgotCi1XaHk/ICBCZWNhdXNl
IEMrKyBoYXMgdGhpcyB0aGluZyBjYWxsZWQgdGhlIE9uZS1EZWZpbml0aW9uIFJ1bGU6IGlmCi10
d28gQysrIHNvdXJjZSBmaWxlcyBjb250YWluIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUg
c2FtZQotY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUsIGFuZCB5b3UgbGluayB0aGVtIHRvZ2V0aGVy
LCB5b3UgdmlvbGF0ZSB0aGUKLXJ1bGUuICBUaGUgbGlua2VyIG1heSBvciBtYXkgbm90IGNhdGNo
IHRoZSBlcnJvciAoaW4gbWFueSBjYXNlcyBpdCdzCi1ub3QgcmVxdWlyZWQgYnkgdGhlIEMrKyBz
dGFuZGFyZCB0byBjYXRjaCB0aGUgdmlvbGF0aW9uKS4gIElmIGl0Ci1kb2Vzbid0LCB5b3UgZ2V0
IHN0cmFuZ2UgcnVuLXRpbWUgYmVoYXZpb3JzIHRoYXQgYXJlIHVuZXhwZWN0ZWQgYW5kCi1oYXJk
IHRvIGRlYnVnLgotCi1JZiB5b3UgY29tcGlsZSBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0IGNv
ZGUgdXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyCi1mbGFncywgdGhleSBtYXkgc2VlIGRpZmZlcmVu
dCBkZWZpbml0aW9ucyBvZiB0aGUgc2FtZQotY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUgKGUuZy4g
ZHVlIHRvIHRoZSB1c2Ugb2YgYCNpZmAgaW4gR29vZ2xlIFRlc3QpLgotVGhlcmVmb3JlLCBmb3Ig
eW91ciBzYW5pdHksIHdlIHJlY29tbWVuZCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1jb21waWxl
ZAotR29vZ2xlIFRlc3QgbGlicmFyaWVzLiAgSW5zdGVhZCwgZWFjaCBwcm9qZWN0IHNob3VsZCBj
b21waWxlCi1Hb29nbGUgVGVzdCBpdHNlbGYgc3VjaCB0aGF0IGl0IGNhbiBiZSBzdXJlIHRoYXQg
dGhlIHNhbWUgZmxhZ3MgYXJlCi11c2VkIGZvciBib3RoIEdvb2dsZSBUZXN0IGFuZCB0aGUgdGVz
dHMuCi0KLSMjIEhvdyBkbyBJIGdlbmVyYXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1
c2luZyBWaXN1YWwgU3R1ZGlvIDIwMDgpPyAjIwotCi0oQW5zd2VyZWQgYnkgVHJldm9yIFJvYmlu
c29uKQotCi1Mb2FkIHRoZSBzdXBwbGllZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVp
dGhlciBgbXN2Y1xndGVzdC1tZC5zbG5gIG9yCi1gbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdo
IHRoZSBtaWdyYXRpb24gd2l6YXJkIHRvIG1pZ3JhdGUgdGhlCi1zb2x1dGlvbiBhbmQgcHJvamVj
dCBmaWxlcyB0byBWaXN1YWwgU3R1ZGlvIDIwMDguIFNlbGVjdAotYENvbmZpZ3VyYXRpb24gTWFu
YWdlci4uLmAgZnJvbSB0aGUgYEJ1aWxkYCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCi10
aGUgYEFjdGl2ZSBzb2x1dGlvbiBwbGF0Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJv
bSB0aGUgbmV3Ci1wbGF0Zm9ybSBkcm9wZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAg
c2V0IHRvIGBXaW4zMmAgYW5kCi1gQ3JlYXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tl
ZCwgdGhlbiBjbGljayBgT0tgLiBZb3Ugbm93IGhhdmUKLWBXaW4zMmAgYW5kIGB4NjRgIHBsYXRm
b3JtIGNvbmZpZ3VyYXRpb25zLCBzZWxlY3RhYmxlIGZyb20gdGhlCi1gU3RhbmRhcmRgIHRvb2xi
YXIsIHdoaWNoIGFsbG93IHlvdSB0byB0b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IK
LTY0LWJpdCBiaW5hcmllcyAob3IgYm90aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KLQot
SW4gb3JkZXIgdG8gcHJldmVudCBidWlsZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBv
bmUgYW5vdGhlciwKLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJl
Y3RvcnlgIHNldHRpbmdzIGZvciB0aGUKLW5ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJh
dGlvbiBhY3Jvc3MgYWxsIHRoZSBwcm9qZWN0cy4gVG8gZG8KLXRoaXMsIG11bHRpLXNlbGVjdCAo
ZS5nLiB1c2luZyBzaGlmdC1jbGljaykgYWxsIHByb2plY3RzIChidXQgbm90IHRoZQotc29sdXRp
b24pIGluIHRoZSBgU29sdXRpb24gRXhwbG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBh
bmQKLXNlbGVjdCBgUHJvcGVydGllc2AuIEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmln
dXJhdGlvbiBQcm9wZXJ0aWVzYCwKLWFuZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRv
d24sIHNlbGVjdCBgQWxsIENvbmZpZ3VyYXRpb25zYC4KLU1ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQg
cGxhdGZvcm0gaXMgYHg2NGAuIEZvciB0aGUKLWBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0
aW5nLCBjaGFuZ2UgdGhlIHZhbHVlIGZyb20KLWAkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0
aW9uTmFtZSlgIHRvCi1gJChPdXREaXIpXCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQg
dGhlbiBidWlsZCB0aGUKLXNvbHV0aW9uLiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhl
IDY0LWJpdCBiaW5hcmllcyB3aWxsIGJlIGluCi10aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3Rv
cnkuCi0KLSMjIENhbiBJIHVzZSBHb29nbGUgVGVzdCBvbiBNaW5HVz8gIyMKLQotV2UgaGF2ZW4n
dCB0ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMsIGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0
IGhlCi13YXMgYWJsZSB0byBjb21waWxlIGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3Nm
dWxseSB3aGVuIHVzaW5nCi1NaW5HVyBmcm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZp
Z3VyZSBpdCB3aXRoOgotCi1gUEFUSC9UTy9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIg
Q1hYPSJnKysgLW1uby1jeWd3aW4iYAotCi1Zb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0
aGUgYC1tbm8tY3lnd2luYCBvcHRpb24gd2l0aCBkaXJlY3QgbGlua3MKLXRvIHRoZSByZWFsIE1p
bkdXIGJpbmFyaWVzLCBidXQgd2UgaGF2ZW4ndCB0cmllZCB0aGF0LgotCi1DYXZlYXRzOgotCi0g
ICogVGhlcmUgYXJlIG1hbnkgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcuCi0gICogYG1ha2UgY2hl
Y2tgIHdpbGwgcHJvZHVjZSBzb21lIGVycm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUg
VGVzdCBpdHNlbGYgYXJlIGNvbXBhdGlibGUgd2l0aCBNaW5HVy4KLQotV2UgYWxzbyBoYXZlIHJl
cG9ydHMgb24gc3VjY2Vzc2Z1bCBjcm9zcyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdAotTWlu
R1cgYmluYXJpZXMgb24gTGludXggdXNpbmcKLVt0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHA6Ly93
aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3MtQ29tcGlsaW5nX1VuZGVyX0xpbnV4I0Nyb3NzLWNvbXBp
bGluZ191bmRlcl9MaW51eF9mb3JfTVNfV2luZG93cykKLW9uIHRoZSBXeFdpZGdldHMgc2l0ZS4K
LQotUGxlYXNlIGNvbnRhY3QgYGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAg
aWYgeW91IGFyZQotaW50ZXJlc3RlZCBpbiBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdX
LgotCi0jIyBXaHkgZG9lcyBHb29nbGUgVGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRy
KSBhbmQgQVNTRVJUXF9FUShOVUxMLCBwdHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIp
IGFuZCBBU1NFUlRcX05FKE5VTEwsIHB0cik/ICMjCi0KLUR1ZSB0byBzb21lIHBlY3VsaWFyaXR5
IG9mIEMrKywgaXQgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQotbWV0YSBwcm9n
cmFtbWluZyB0cmlja3MgdG8gc3VwcG9ydCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2Yg
dGhlCi1gRVhQRUNUX1hYKClgIGFuZCBgQVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdl
IG9ubHkgZG8gaXQgd2hlcmUKLWl0J3MgbW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBHb29nbGUgVGVzdAotaGFyZGVyIHRvIG1haW50YWluIGFuZCBt
b3JlIGVycm9yLXByb25lIHRoYW4gbmVjZXNzYXJ5KS4KLQotVGhlIGBFWFBFQ1RfRVEoKWAgbWFj
cm8gdGFrZXMgdGhlIF9leHBlY3RlZF8gdmFsdWUgYXMgaXRzIGZpcnN0Ci1hcmd1bWVudCBhbmQg
dGhlIF9hY3R1YWxfIHZhbHVlIGFzIHRoZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Ci1z
b21lb25lIHdhbnRzIHRvIHdyaXRlIGBFWFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAs
IGFuZCB0aGlzCi1pbmRlZWQgd2FzIHJlcXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUg
d2UgaW1wbGVtZW50ZWQgaXQuCi0KLVRoZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilg
IGlzbid0IG5lYXJseSBhcyBzdHJvbmcuIFdoZW4gdGhlCi1hc3NlcnRpb24gZmFpbHMsIHlvdSBh
bHJlYWR5IGtub3cgdGhhdCBgcHRyYCBtdXN0IGJlIGBOVUxMYCwgc28gaXQKLWRvZXNuJ3QgYWRk
IGFueSBpbmZvcm1hdGlvbiB0byBwcmludCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCi1g
RVhQRUNUX1RSVUUocHRyICEgTlVMTClgIHdvcmtzIGp1c3QgYXMgd2VsbC4KLQotSWYgd2Ugd2Vy
ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUoTlVMTCwgcHRyKWAsIGZvciBjb25zaXN0ZW5jeSB3ZSds
bAotaGF2ZSB0byBzdXBwb3J0IGBFWFBFQ1RfTkUocHRyLCBOVUxMKWAgYXMgd2VsbCwgYXMgdW5s
aWtlIGBFWFBFQ1RfRVFgLAotd2UgZG9uJ3QgaGF2ZSBhIGNvbnZlbnRpb24gb24gdGhlIG9yZGVy
IG9mIHRoZSB0d28gYXJndW1lbnRzIGZvcgotYEVYUEVDVF9ORWAuIFRoaXMgbWVhbnMgdXNpbmcg
dGhlIHRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzCi10d2ljZSBpbiB0aGUgaW1wbGVt
ZW50YXRpb24sIG1ha2luZyBpdCBldmVuIGhhcmRlciB0byB1bmRlcnN0YW5kIGFuZAotbWFpbnRh
aW4uIFdlIGJlbGlldmUgdGhlIGJlbmVmaXQgZG9lc24ndCBqdXN0aWZ5IHRoZSBjb3N0LgotCi1G
aW5hbGx5LCB3aXRoIHRoZSBncm93dGggb2YgR29vZ2xlIE1vY2sncyBbbWF0Y2hlcl0oLi4vLi4v
Q29va0Jvb2subWQjdXNpbmctbWF0Y2hlcnMtaW4tZ29vZ2xlLXRlc3QtYXNzZXJ0aW9ucykgbGli
cmFyeSwgd2UgYXJlCi1lbmNvdXJhZ2luZyBwZW9wbGUgdG8gdXNlIHRoZSB1bmlmaWVkIGBFWFBF
Q1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgCi1zeW50YXggbW9yZSBvZnRlbiBpbiB0ZXN0cy4gT25l
IHNpZ25pZmljYW50IGFkdmFudGFnZSBvZiB0aGUgbWF0Y2hlcgotYXBwcm9hY2ggaXMgdGhhdCBt
YXRjaGVycyBjYW4gYmUgZWFzaWx5IGNvbWJpbmVkIHRvIGZvcm0gbmV3IG1hdGNoZXJzLAotd2hp
bGUgdGhlIGBFWFBFQ1RfTkVgLCBldGMsIG1hY3JvcyBjYW5ub3QgYmUgZWFzaWx5Ci1jb21iaW5l
ZC4gVGhlcmVmb3JlIHdlIHdhbnQgdG8gaW52ZXN0IG1vcmUgaW4gdGhlIG1hdGNoZXJzIHRoYW4g
aW4gdGhlCi1gRVhQRUNUX1hYKClgIG1hY3Jvcy4KLQotIyMgRG9lcyBHb29nbGUgVGVzdCBzdXBw
b3J0IHJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWw/ICMjCi0KLVRlc3QgcnVubmVycyB0ZW5kIHRv
IGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBidWlsZC90ZXN0Ci1lbnZpcm9ubWVudCwgYW5k
IEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJ5IHRvIHNvbHZlIHRoZSBwcm9ibGVtIG9mCi1ydW5uaW5n
IHRlc3RzIGluIHBhcmFsbGVsLiAgSW5zdGVhZCwgd2UgdHJpZWQgdG8gbWFrZSBHb29nbGUgVGVz
dCB3b3JrCi1uaWNlbHkgd2l0aCB0ZXN0IHJ1bm5lcnMuICBGb3IgZXhhbXBsZSwgR29vZ2xlIFRl
c3QncyBYTUwgcmVwb3J0Ci1jb250YWlucyB0aGUgdGltZSBzcGVudCBvbiBlYWNoIHRlc3QsIGFu
ZCBpdHMgYGd0ZXN0X2xpc3RfdGVzdHNgIGFuZAotYGd0ZXN0X2ZpbHRlcmAgZmxhZ3MgY2FuIGJl
IHVzZWQgZm9yIHNwbGl0dGluZyB0aGUgZXhlY3V0aW9uIG9mIHRlc3QKLW1ldGhvZHMgaW50byBt
dWx0aXBsZSBwcm9jZXNzZXMuICBUaGVzZSBmdW5jdGlvbmFsaXRpZXMgY2FuIGhlbHAgdGhlCi10
ZXN0IHJ1bm5lciBydW4gdGhlIHRlc3RzIGluIHBhcmFsbGVsLgotCi0jIyBXaHkgZG9uJ3QgR29v
Z2xlIFRlc3QgcnVuIHRoZSB0ZXN0cyBpbiBkaWZmZXJlbnQgdGhyZWFkcyB0byBzcGVlZCB0aGlu
Z3MgdXA/ICMjCi0KLUl0J3MgZGlmZmljdWx0IHRvIHdyaXRlIHRocmVhZC1zYWZlIGNvZGUuICBN
b3N0IHRlc3RzIGFyZSBub3Qgd3JpdHRlbgotd2l0aCB0aHJlYWQtc2FmZXR5IGluIG1pbmQsIGFu
ZCB0aHVzIG1heSBub3Qgd29yayBjb3JyZWN0bHkgaW4gYQotbXVsdGktdGhyZWFkZWQgc2V0dGlu
Zy4KLQotSWYgeW91IHRoaW5rIGFib3V0IGl0LCBpdCdzIGFscmVhZHkgaGFyZCB0byBtYWtlIHlv
dXIgY29kZSB3b3JrIHdoZW4KLXlvdSBrbm93IHdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcu
ICBJdCdzIG11Y2ggaGFyZGVyLCBhbmQKLXNvbWV0aW1lcyBldmVuIGltcG9zc2libGUsIHRvIG1h
a2UgeW91ciBjb2RlIHdvcmsgd2hlbiB5b3UgZG9uJ3Qga25vdwotd2hhdCBvdGhlciB0aHJlYWRz
IGFyZSBkb2luZyAocmVtZW1iZXIgdGhhdCB0ZXN0IG1ldGhvZHMgY2FuIGJlIGFkZGVkLAotZGVs
ZXRlZCwgb3IgbW9kaWZpZWQgYWZ0ZXIgeW91ciB0ZXN0IHdhcyB3cml0dGVuKS4gIElmIHlvdSB3
YW50IHRvIHJ1bgotdGhlIHRlc3RzIGluIHBhcmFsbGVsLCB5b3UnZCBiZXR0ZXIgcnVuIHRoZW0g
aW4gZGlmZmVyZW50IHByb2Nlc3Nlcy4KLQotIyMgV2h5IGFyZW4ndCBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGltcGxlbWVudGVkIHVzaW5nIGV4Y2VwdGlvbnM/ICMjCi0KLU91ciBvcmlnaW5hbCBt
b3RpdmF0aW9uIHdhcyB0byBiZSBhYmxlIHRvIHVzZSBHb29nbGUgVGVzdCBpbiBwcm9qZWN0cwot
dGhhdCBkaXNhYmxlIGV4Y2VwdGlvbnMuICBMYXRlciB3ZSByZWFsaXplZCBzb21lIGFkZGl0aW9u
YWwgYmVuZWZpdHMKLW9mIHRoaXMgYXBwcm9hY2g6Ci0KLSAgMS4gVGhyb3dpbmcgaW4gYSBkZXN0
cnVjdG9yIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBpbiBDKysuICBOb3QgdXNpbmcgZXhjZXB0aW9u
cyBtZWFucyBHb29nbGUgVGVzdCdzIGFzc2VydGlvbnMgYXJlIHNhZmUgdG8gdXNlIGluIGRlc3Ry
dWN0b3JzLgotICAxLiBUaGUgYEVYUEVDVF8qYCBmYW1pbHkgb2YgbWFjcm9zIHdpbGwgY29udGlu
dWUgZXZlbiBhZnRlciBhIGZhaWx1cmUsIGFsbG93aW5nIG11bHRpcGxlIGZhaWx1cmVzIGluIGEg
YFRFU1RgIHRvIGJlIHJlcG9ydGVkIGluIGEgc2luZ2xlIHJ1bi4gVGhpcyBpcyBhIHBvcHVsYXIg
ZmVhdHVyZSwgYXMgaW4gQysrIHRoZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZSBpcyB1c3VhbGx5
IHF1aXRlIGxvbmcgYW5kIGJlaW5nIGFibGUgdG8gZml4aW5nIG1vcmUgdGhhbiBvbmUgdGhpbmcg
YXQgYSB0aW1lIGlzIGEgYmxlc3NpbmcuCi0gIDEuIElmIGFzc2VydGlvbnMgYXJlIGltcGxlbWVu
dGVkIHVzaW5nIGV4Y2VwdGlvbnMsIGEgdGVzdCBtYXkgZmFsc2VseSBpZ25vcmUgYSBmYWlsdXJl
IGlmIGl0J3MgY2F1Z2h0IGJ5IHVzZXIgY29kZToKLWBgYAotdHJ5IHsgLi4uIEFTU0VSVF9UUlVF
KC4uLikgLi4uIH0KLWNhdGNoICguLi4pIHsgLi4uIH0KLWBgYAotVGhlIGFib3ZlIGNvZGUgd2ls
bCBwYXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQncyB1bmxp
a2VseSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3NzaWJsZSB0
byBydW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBpbiBjYWxs
YmFja3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCi0KLVRoZSBkb3du
c2lkZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGltcGxlbWVu
dGVkCi11c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCBub3QgdGhlIGN1cnJlbnQKLWBURVNUYC4KLQotIyMgV2h5IGRvIHdlIHVzZSB0d28gZGlmZmVy
ZW50IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMKLQotVW5m
b3J0dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8gdXNlIHRo
ZSBzYW1lCi1tYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0byBwcm92
aWRlIG9ubHkgb25lIG1hY3JvCi1mb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJlcXVpcmUg
dGhlIHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5Ci1maXh0dXJlIHNvbWV0aW1lczoKLQotYGBgCi1j
bGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsKLQotVEVTVF9GKEZvb1Rl
c3QsIERvZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLW9yCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpU
ZXN0IEZvb1Rlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBEb2VzVGhhdCkgeyAuLi4gfQotYGBgCi0K
LVlldCwgbWFueSBwZW9wbGUgdGhpbmsgdGhpcyBpcyBvbmUgbGluZSB0b28gbWFueS4gOi0pIE91
ciBnb2FsIHdhcyB0bwotbWFrZSBpdCByZWFsbHkgZWFzeSB0byB3cml0ZSB0ZXN0cywgc28gd2Ug
dHJpZWQgdG8gbWFrZSBzaW1wbGUgdGVzdHMKLXRyaXZpYWwgdG8gY3JlYXRlLiAgVGhhdCBtZWFu
cyB1c2luZyBhIHNlcGFyYXRlIG1hY3JvIGZvciBzdWNoIHRlc3RzLgotCi1XZSB0aGluayBuZWl0
aGVyIGFwcHJvYWNoIGlzIGlkZWFsLCB5ZXQgZWl0aGVyIG9mIHRoZW0gaXMgcmVhc29uYWJsZS4K
LUluIHRoZSBlbmQsIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIG11Y2ggZWl0aGVyIHdheS4K
LQotIyMgV2h5IGRvbid0IHdlIHVzZSBzdHJ1Y3RzIGFzIHRlc3QgZml4dHVyZXM/ICMjCi0KLVdl
IGxpa2UgdG8gdXNlIHN0cnVjdHMgb25seSB3aGVuIHJlcHJlc2VudGluZyBwYXNzaXZlIGRhdGEu
ICBUaGlzCi1kaXN0aW5jdGlvbiBiZXR3ZWVuIHN0cnVjdHMgYW5kIGNsYXNzZXMgaXMgZ29vZCBm
b3IgZG9jdW1lbnRpbmcgdGhlCi1pbnRlbnQgb2YgdGhlIGNvZGUncyBhdXRob3IuICBTaW5jZSB0
ZXN0IGZpeHR1cmVzIGhhdmUgbG9naWMgbGlrZQotYFNldFVwKClgIGFuZCBgVGVhckRvd24oKWAs
IHRoZXkgYXJlIGJldHRlciBkZWZpbmVkIGFzIGNsYXNzZXMuCi0KLSMjIFdoeSBhcmUgZGVhdGgg
dGVzdHMgaW1wbGVtZW50ZWQgYXMgYXNzZXJ0aW9ucyBpbnN0ZWFkIG9mIHVzaW5nIGEgdGVzdCBy
dW5uZXI/ICMjCi0KLU91ciBnb2FsIHdhcyB0byBtYWtlIGRlYXRoIHRlc3RzIGFzIGNvbnZlbmll
bnQgZm9yIGEgdXNlciBhcyBDKysKLXBvc3NpYmx5IGFsbG93cy4gIEluIHBhcnRpY3VsYXI6Ci0K
LSAgKiBUaGUgcnVubmVyLXN0eWxlIHJlcXVpcmVzIHRvIHNwbGl0IHRoZSBpbmZvcm1hdGlvbiBp
bnRvIHR3byBwaWVjZXM6IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBkZWF0aCB0ZXN0IGl0c2VsZiwg
YW5kIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgcnVubmVyIG9uIGhvdyB0byBydW4gdGhlIGRl
YXRoIHRlc3QgYW5kIHdoYXQgdG8gZXhwZWN0LiAgVGhlIGRlYXRoIHRlc3Qgd291bGQgYmUgd3Jp
dHRlbiBpbiBDKyssIHdoaWxlIHRoZSBydW5uZXIgc3BlYyBtYXkgb3IgbWF5IG5vdCBiZS4gIEEg
dXNlciBuZWVkcyB0byBjYXJlZnVsbHkga2VlcCB0aGUgdHdvIGluIHN5bmMuIGBBU1NFUlRfREVB
VEgoc3RhdGVtZW50LCBleHBlY3RlZF9tZXNzYWdlKWAgc3BlY2lmaWVzIGFsbCBuZWNlc3Nhcnkg
aW5mb3JtYXRpb24gaW4gb25lIHBsYWNlLCBpbiBvbmUgbGFuZ3VhZ2UsIHdpdGhvdXQgYm9pbGVy
cGxhdGUgY29kZS4gSXQgaXMgdmVyeSBkZWNsYXJhdGl2ZS4KLSAgKiBgQVNTRVJUX0RFQVRIYCBo
YXMgYSBzaW1pbGFyIHN5bnRheCBhbmQgZXJyb3ItcmVwb3J0aW5nIHNlbWFudGljcyBhcyBvdGhl
ciBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCBhbmQgdGh1cyBpcyBlYXN5IHRvIGxlYXJuLgotICAq
IGBBU1NFUlRfREVBVEhgIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIGFzc2VydGlvbnMgYW5kIG90
aGVyIGxvZ2ljIGF0IHlvdXIgd2lsbC4gIFlvdSBhcmUgbm90IGxpbWl0ZWQgdG8gb25lIGRlYXRo
IHRlc3QgcGVyIHRlc3QgbWV0aG9kLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB3cml0ZSBzb21ldGhp
bmcgbGlrZToKLWBgYAotICAgIGlmIChGb29Db25kaXRpb24oKSkgewotICAgICAgQVNTRVJUX0RF
QVRIKEJhcigpLCAiYmxhaCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBBU1NFUlRfRVEoNSwgQmFy
KCkpOwotICAgIH0KLWBgYAotSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBt
ZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRvbywgYnV0IHdl
IGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZld2VyIGFydGlm
aWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KLSAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gcmVm
ZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwgYW5kIHlvdSBj
YW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9uIHJ1bi10aW1l
IGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCi1gYGAKLSAgICBjb25zdCBpbnQgY291bnQgPSBH
ZXRDb3VudCgpOyAgLy8gT25seSBrbm93biBhdCBydW4gdGltZS4KLSAgICBmb3IgKGludCBpID0g
MTsgaSA8PSBjb3VudDsgaSsrKSB7Ci0gICAgICBBU1NFUlRfREVBVEgoewotICAgICAgICBkb3Vi
bGUqIGJ1ZmZlciA9IG5ldyBkb3VibGVbaV07Ci0gICAgICAgIC4uLiBpbml0aWFsaXplcyBidWZm
ZXIgLi4uCi0gICAgICAgIEZvbyhidWZmZXIsIGkpCi0gICAgICB9LCAiYmxhaCBibGFoIik7Ci0g
ICAgfQotYGBgCi1UaGUgcnVubmVyLWJhc2VkIGFwcHJvYWNoIHRlbmRzIHRvIGJlIG1vcmUgc3Rh
dGljIGFuZCBsZXNzIGZsZXhpYmxlLCBvciByZXF1aXJlcyBtb3JlIHVzZXIgZWZmb3J0IHRvIGdl
dCB0aGlzIGtpbmQgb2YgZmxleGliaWxpdHkuCi0KLUFub3RoZXIgaW50ZXJlc3RpbmcgdGhpbmcg
YWJvdXQgYEFTU0VSVF9ERUFUSGAgaXMgdGhhdCBpdCBjYWxscyBgZm9yaygpYAotdG8gY3JlYXRl
IGEgY2hpbGQgcHJvY2VzcyB0byBydW4gdGhlIGRlYXRoIHRlc3QuICBUaGlzIGlzIGxpZ2h0ZW5p
bmcKLWZhc3QsIGFzIGBmb3JrKClgIHVzZXMgY29weS1vbi13cml0ZSBwYWdlcyBhbmQgaW5jdXJz
IGFsbW9zdCB6ZXJvCi1vdmVyaGVhZCwgYW5kIHRoZSBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBmcm9t
IHRoZSB1c2VyLXN1cHBsaWVkCi1zdGF0ZW1lbnQgZGlyZWN0bHksIHNraXBwaW5nIGFsbCBnbG9i
YWwgYW5kIGxvY2FsIGluaXRpYWxpemF0aW9uIGFuZAotYW55IGNvZGUgbGVhZGluZyB0byB0aGUg
Z2l2ZW4gc3RhdGVtZW50LiAgSWYgeW91IGxhdW5jaCB0aGUgY2hpbGQKLXByb2Nlc3MgZnJvbSBz
Y3JhdGNoLCBpdCBjYW4gdGFrZSBzZWNvbmRzIGp1c3QgdG8gbG9hZCBldmVyeXRoaW5nIGFuZAot
c3RhcnQgcnVubmluZyBpZiB0aGUgdGVzdCBsaW5rcyB0byBtYW55IGxpYnJhcmllcyBkeW5hbWlj
YWxseS4KLQotIyMgTXkgZGVhdGggdGVzdCBtb2RpZmllcyBzb21lIHN0YXRlLCBidXQgdGhlIGNo
YW5nZSBzZWVtcyBsb3N0IGFmdGVyIHRoZSBkZWF0aCB0ZXN0IGZpbmlzaGVzLiBXaHk/ICMjCi0K
LURlYXRoIHRlc3RzIChgRVhQRUNUX0RFQVRIYCwgZXRjKSBhcmUgZXhlY3V0ZWQgaW4gYSBzdWIt
cHJvY2VzcyBzLnQuIHRoZQotZXhwZWN0ZWQgY3Jhc2ggd29uJ3Qga2lsbCB0aGUgdGVzdCBwcm9n
cmFtIChpLmUuIHRoZSBwYXJlbnQgcHJvY2VzcykuIEFzIGEKLXJlc3VsdCwgYW55IGluLW1lbW9y
eSBzaWRlIGVmZmVjdHMgdGhleSBpbmN1ciBhcmUgb2JzZXJ2YWJsZSBpbiB0aGVpcgotcmVzcGVj
dGl2ZSBzdWItcHJvY2Vzc2VzLCBidXQgbm90IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gWW91IGNh
biB0aGluayBvZiB0aGVtCi1hcyBydW5uaW5nIGluIGEgcGFyYWxsZWwgdW5pdmVyc2UsIG1vcmUg
b3IgbGVzcy4KLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAidW5kZWZpbmVkIHJl
ZmVyZW5jZXMiIHRvIHNvbWUgc3RhdGljIGNvbnN0IG1lbWJlciB2YXJpYWJsZXMsIGJ1dCBJIGRp
ZCBkZWZpbmUgdGhlbSBpbiB0aGUgY2xhc3MgYm9keS4gV2hhdCdzIHdyb25nPyAjIwotCi1JZiB5
b3VyIGNsYXNzIGhhcyBhIHN0YXRpYyBkYXRhIG1lbWJlcjoKLQotYGBgCi0vLyBmb28uaAotY2xh
c3MgRm9vIHsKLSAgLi4uCi0gIHN0YXRpYyBjb25zdCBpbnQga0JhciA9IDEwMDsKLX07Ci1gYGAK
LQotWW91IGFsc28gbmVlZCB0byBkZWZpbmUgaXQgX291dHNpZGVfIG9mIHRoZSBjbGFzcyBib2R5
IGluIGBmb28uY2NgOgotCi1gYGAKLWNvbnN0IGludCBGb286OmtCYXI7ICAvLyBObyBpbml0aWFs
aXplciBoZXJlLgotYGBgCi0KLU90aGVyd2lzZSB5b3VyIGNvZGUgaXMgKippbnZhbGlkIEMrKyoq
LCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4gSW4KLXBhcnRpY3VsYXIsIHVzaW5n
IGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0aW9ucyAoYEVYUEVDVF9FUWAsIGV0
YykKLXdpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZlcmVuY2UiIGxpbmtlciBlcnJvci4K
LQotIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBzZXZlcmFsIGltcGxlbWVudGF0aW9u
cy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBhbmQgcmVwZWF0IHRoZW0gb3ZlciBh
bGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKLQotR29vZ2xlIFRlc3QgZG9lc24ndCB5ZXQgaGF2
ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0cywgb3IKLWRhdGEtZHJpdmVuIHRl
c3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0byBtYWtlIGltcHJvdmVtZW50cyBp
biB0aGlzCi1hcmVhIHNvb24uCi0KLSMjIENhbiBJIGRlcml2ZSBhIHRlc3QgZml4dHVyZSBmcm9t
IGFub3RoZXI/ICMjCi0KLVllcy4KLQotRWFjaCB0ZXN0IGZpeHR1cmUgaGFzIGEgY29ycmVzcG9u
ZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMgbWVhbnMgb25seQotb25lIHRlc3Qg
Y2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBTb21ldGltZXMsIGhvd2V2ZXIsIG11
bHRpcGxlIHRlc3QKLWNhc2VzIG1heSB3YW50IHRvIHVzZSB0aGUgc2FtZSBvciBzbGlnaHRseSBk
aWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UKLW1heSB3YW50IHRvIG1ha2Ugc3Vy
ZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBjYXNlcyBkb24ndCBsZWFrCi1pbXBv
cnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLgotCi1JbiBHb29n
bGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0ZXN0IGNhc2VzIGJ5IHB1dHRpbmcg
dGhlIHNoYXJlZAotbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4dHVyZSwgdGhlbiBkZXJpdmluZyBm
cm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKLWZvciBlYWNoIHRlc3QgY2FzZSB0aGF0
IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91IHRoZW4gdXNlIGBURVNUX0YoKWAK
LXRvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBmaXh0dXJlLgotCi1UeXBpY2FsbHks
IHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYAotLy8gRGVmaW5lcyBhIGJhc2UgdGVz
dCBmaXh0dXJlLgotY2xhc3MgQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAg
cHJvdGVjdGVkOgotICAgLi4uCi19OwotCi0vLyBEZXJpdmVzIGEgZml4dHVyZSBGb29UZXN0IGZy
b20gQmFzZVRlc3QuCi1jbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHsKLSAgcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAgIEJhc2VUZXN0OjpTZXRVcCgp
OyAgLy8gU2V0cyB1cCB0aGUgYmFzZSBmaXh0dXJlIGZpcnN0LgotICAgICAgLi4uIGFkZGl0aW9u
YWwgc2V0LXVwIHdvcmsgLi4uCi0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
LSAgICAgIC4uLiBjbGVhbi11cCB3b3JrIGZvciBGb29UZXN0IC4uLgotICAgICAgQmFzZVRlc3Q6
OlRlYXJEb3duKCk7ICAvLyBSZW1lbWJlciB0byB0ZWFyIGRvd24gdGhlIGJhc2UgZml4dHVyZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBjbGVhbmluZyB1cCBGb29UZXN0
IQotICAgIH0KLSAgICAuLi4gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZm9yIEZvb1Rlc3QgLi4u
Ci19OwotCi0vLyBUZXN0cyB0aGF0IHVzZSB0aGUgZml4dHVyZSBGb29UZXN0LgotVEVTVF9GKEZv
b1Rlc3QsIEJhcikgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQotCi0uLi4g
YWRkaXRpb25hbCBmaXh0dXJlcyBkZXJpdmVkIGZyb20gQmFzZVRlc3QgLi4uCi1gYGAKLQotSWYg
bmVjZXNzYXJ5LCB5b3UgY2FuIGNvbnRpbnVlIHRvIGRlcml2ZSB0ZXN0IGZpeHR1cmVzIGZyb20g
YSBkZXJpdmVkIGZpeHR1cmUuCi1Hb29nbGUgVGVzdCBoYXMgbm8gbGltaXQgb24gaG93IGRlZXAg
dGhlIGhpZXJhcmNoeSBjYW4gYmUuCi0KLUZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdXNpbmcgZGVy
aXZlZCB0ZXN0IGZpeHR1cmVzLCBzZWUKLVtzYW1wbGU1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MpLgotCi0jIyBNeSBjb21waWxlciBjb21wbGFpbnMgInZvaWQgdmFsdWUgbm90IGln
bm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUuIiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAjIwotCi1Zb3Un
cmUgcHJvYmFibHkgdXNpbmcgYW4gYEFTU0VSVF8qKClgIGluIGEgZnVuY3Rpb24gdGhhdCBkb2Vz
bid0IHJldHVybiBgdm9pZGAuCi1gQVNTRVJUXyooKWAgY2FuIG9ubHkgYmUgdXNlZCBpbiBgdm9p
ZGAgZnVuY3Rpb25zLgotCi0jIyBNeSBkZWF0aCB0ZXN0IGhhbmdzIChvciBzZWctZmF1bHRzKS4g
SG93IGRvIEkgZml4IGl0PyAjIwotCi1JbiBHb29nbGUgVGVzdCwgZGVhdGggdGVzdHMgYXJlIHJ1
biBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kIHRoZSB3YXkgdGhleSB3b3JrIGlzCi1kZWxpY2F0ZS4g
VG8gd3JpdGUgZGVhdGggdGVzdHMgeW91IHJlYWxseSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRo
ZXkgd29yay4KLVBsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgcmVhZCB0aGlzLgotCi1JbiBwYXJ0
aWN1bGFyLCBkZWF0aCB0ZXN0cyBkb24ndCBsaWtlIGhhdmluZyBtdWx0aXBsZSB0aHJlYWRzIGlu
IHRoZSBwYXJlbnQKLXByb2Nlc3MuIFNvIHRoZSBmaXJzdCB0aGluZyB5b3UgY2FuIHRyeSBpcyB0
byBlbGltaW5hdGUgY3JlYXRpbmcgdGhyZWFkcwotb3V0c2lkZSBvZiBgRVhQRUNUX0RFQVRIKClg
LgotCi1Tb21ldGltZXMgdGhpcyBpcyBpbXBvc3NpYmxlIGFzIHNvbWUgbGlicmFyeSB5b3UgbXVz
dCB1c2UgbWF5IGJlIGNyZWF0aW5nCi10aHJlYWRzIGJlZm9yZSBgbWFpbigpYCBpcyBldmVuIHJl
YWNoZWQuIEluIHRoaXMgY2FzZSwgeW91IGNhbiB0cnkgdG8gbWluaW1pemUKLXRoZSBjaGFuY2Ug
b2YgY29uZmxpY3RzIGJ5IGVpdGhlciBtb3ZpbmcgYXMgbWFueSBhY3Rpdml0aWVzIGFzIHBvc3Np
YmxlIGluc2lkZQotYEVYUEVDVF9ERUFUSCgpYCAoaW4gdGhlIGV4dHJlbWUgY2FzZSwgeW91IHdh
bnQgdG8gbW92ZSBldmVyeXRoaW5nIGluc2lkZSksIG9yCi1sZWF2aW5nIGFzIGZldyB0aGluZ3Mg
YXMgcG9zc2libGUgaW4gaXQuIEFsc28sIHlvdSBjYW4gdHJ5IHRvIHNldCB0aGUgZGVhdGgKLXRl
c3Qgc3R5bGUgdG8gYCJ0aHJlYWRzYWZlImAsIHdoaWNoIGlzIHNhZmVyIGJ1dCBzbG93ZXIsIGFu
ZCBzZWUgaWYgaXQgaGVscHMuCi0KLUlmIHlvdSBnbyB3aXRoIHRocmVhZC1zYWZlIGRlYXRoIHRl
c3RzLCByZW1lbWJlciB0aGF0IHRoZXkgcmVydW4gdGhlIHRlc3QKLXByb2dyYW0gZnJvbSB0aGUg
YmVnaW5uaW5nIGluIHRoZSBjaGlsZCBwcm9jZXNzLiBUaGVyZWZvcmUgbWFrZSBzdXJlIHlvdXIK
LXByb2dyYW0gY2FuIHJ1biBzaWRlLWJ5LXNpZGUgd2l0aCBpdHNlbGYgYW5kIGlzIGRldGVybWlu
aXN0aWMuCi0KLUluIHRoZSBlbmQsIHRoaXMgYm9pbHMgZG93biB0byBnb29kIGNvbmN1cnJlbnQg
cHJvZ3JhbW1pbmcuIFlvdSBoYXZlIHRvIG1ha2UKLXN1cmUgdGhhdCB0aGVyZSBpcyBubyByYWNl
IGNvbmRpdGlvbnMgb3IgZGVhZCBsb2NrcyBpbiB5b3VyIHByb2dyYW0uIE5vIHNpbHZlcgotYnVs
bGV0IC0gc29ycnkhCi0KLSMjIFNob3VsZCBJIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3Rv
ciBvZiB0aGUgdGVzdCBmaXh0dXJlIG9yIHRoZSBzZXQtdXAvdGVhci1kb3duIGZ1bmN0aW9uPyAj
IwotCi1UaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBHb29nbGUgVGVzdCBkb2Vz
IG5vdCByZXVzZSB0aGUKLXNhbWUgdGVzdCBmaXh0dXJlIG9iamVjdCBhY3Jvc3MgbXVsdGlwbGUg
dGVzdHMuIEZvciBlYWNoIGBURVNUX0ZgLAotR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgYSBmcmVz
aCB0ZXN0IGZpeHR1cmUgb2JqZWN0LCBfaW1tZWRpYXRlbHlfCi1jYWxsIGBTZXRVcCgpYCwgcnVu
IHRoZSB0ZXN0LCBjYWxsIGBUZWFyRG93bigpYCwgYW5kIHRoZW4KLV9pbW1lZGlhdGVseV8gZGVs
ZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0LiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vCi1uZWVk
IHRvIHdyaXRlIGEgYFNldFVwKClgIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiBpZiB0aGUgY29u
c3RydWN0b3IKLW9yIGRlc3RydWN0b3IgYWxyZWFkeSBkb2VzIHRoZSBqb2IuCi0KLVlvdSBtYXkg
c3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAgaW4gdGhlIGZvbGxvd2luZyBj
YXNlczoKLSAgKiBJZiB0aGUgdGVhci1kb3duIG9wZXJhdGlvbiBjb3VsZCB0aHJvdyBhbiBleGNl
cHRpb24sIHlvdSBtdXN0IHVzZSBgVGVhckRvd24oKWAgYXMgb3Bwb3NlZCB0byB0aGUgZGVzdHJ1
Y3RvciwgYXMgdGhyb3dpbmcgaW4gYSBkZXN0cnVjdG9yIGxlYWRzIHRvIHVuZGVmaW5lZCBiZWhh
dmlvciBhbmQgdXN1YWxseSB3aWxsIGtpbGwgeW91ciBwcm9ncmFtIHJpZ2h0IGF3YXkuIE5vdGUg
dGhhdCBtYW55IHN0YW5kYXJkIGxpYnJhcmllcyAobGlrZSBTVEwpIG1heSB0aHJvdyB3aGVuIGV4
Y2VwdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIGNvbXBpbGVyLiBUaGVyZWZvcmUgeW91IHNob3Vs
ZCBwcmVmZXIgYFRlYXJEb3duKClgIGlmIHlvdSB3YW50IHRvIHdyaXRlIHBvcnRhYmxlIHRlc3Rz
IHRoYXQgd29yayB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucy4KLSAgKiBUaGUgR29vZ2xlIFRl
c3QgdGVhbSBpcyBjb25zaWRlcmluZyBtYWtpbmcgdGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cg
b24gcGxhdGZvcm1zIHdoZXJlIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgKGUuZy4gV2luZG93cywg
TWFjIE9TLCBhbmQgTGludXggY2xpZW50LXNpZGUpLCB3aGljaCB3aWxsIGVsaW1pbmF0ZSB0aGUg
bmVlZCBmb3IgdGhlIHVzZXIgdG8gcHJvcGFnYXRlIGZhaWx1cmVzIGZyb20gYSBzdWJyb3V0aW5l
IHRvIGl0cyBjYWxsZXIuIFRoZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBpbiBhIGRlc3RydWN0b3IgaWYgeW91ciBjb2RlIGNvdWxkIHJ1biBvbiBzdWNo
IGEgcGxhdGZvcm0uCi0gICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fu
bm90IG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2Fu
IGNhbGwgYSBtZXRob2QgZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGlj
YWxseSBib3VuZC4pIFRoZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0
IHdpbGwgYmUgb3ZlcnJpZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBT
ZXRVcCgpL1RlYXJEb3duKClgLgotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRj
aGluZyBmdW5jdGlvbiB0byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJ
IGZpeCBpdD8gIyMKLQotSWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NF
UlRfUFJFRCpgIG9yIGBFWFBFQ1RfUFJFRCpgIGlzCi1vdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUs
IHRoZSBjb21waWxlciB3aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKLW92ZXJs
b2FkZWQgdmVyc2lvbiBpdCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCi1g
RVhQRUNUX1BSRURfRk9STUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCi0KLUlmIHlvdSBz
ZWUgdGhpcyBlcnJvciwgeW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCi1gKEFTU0VSVHxFWFBF
Q1QpX1BSRURfRk9STUFUKmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWls
dXJlCi1tZXNzYWdlLiBJZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2Fu
IHJlc29sdmUgdGhlIHByb2JsZW0gYnkKLWV4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIg
d2hpY2ggdmVyc2lvbiB0byBwaWNrLgotCi1Gb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQot
Ci1gYGAKLWJvb2wgSXNQb3NpdGl2ZShpbnQgbikgewotICByZXR1cm4gbiA+IDA7Ci19Ci1ib29s
IElzUG9zaXRpdmUoZG91YmxlIHgpIHsKLSAgcmV0dXJuIHggPiAwOwotfQotYGBgCi0KLXlvdSB3
aWxsIGdldCBhIGNvbXBpbGVyIGVycm9yIGlmIHlvdSB3cml0ZQotCi1gYGAKLUVYUEVDVF9QUkVE
MShJc1Bvc2l0aXZlLCA1KTsKLWBgYAotCi1Ib3dldmVyLCB0aGlzIHdpbGwgd29yazoKLQotYGBg
Ci1FWFBFQ1RfUFJFRDEoKnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZlKSwg
NSk7Ci1gYGAKLQotKFRoZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhl
IGBzdGF0aWNfY2FzdGAgb3BlcmF0b3IgaXMgdGhlCi10eXBlIG9mIHRoZSBmdW5jdGlvbiBwb2lu
dGVyIGZvciB0aGUgYGludGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCi0KLUFzIGFub3Ro
ZXIgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCi0KLWBgYAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIElzTmVnYXRpdmUoVCB4KSB7Ci0gIHJldHVybiB4IDwg
MDsKLX0KLWBgYAotCi15b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlr
ZSB0aGlzOgotCi1gYGAKLUFTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOwotYGBg
Ci0KLVRoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3Jl
IHRoYW4gb25lIHBhcmFtZXRlcnMuIFRoZQotZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6Ci0KLWBg
YAotQVNTRVJUX1BSRUQyKCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKLWBgYAotCi0K
LWFzIHRoZSBDKysgcHJlLXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9Q
UkVEMmAgNCBhcmd1bWVudHMsCi13aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUg
d29ya2Fyb3VuZCBpcyB0byB3cmFwIHRoZSBwcmVkaWNhdGUKLWZ1bmN0aW9uIGluIHBhcmVudGhl
c2VzOgotCi1gYGAKLUFTU0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50PikqLCA1LCAw
KTsKLWBgYAotCi0KLSMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3JpbmcgcmV0
dXJuIHZhbHVlIiB3aGVuIEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIwotCi1Tb21l
IHBlb3BsZSBoYWQgYmVlbiBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RF
U1RTKClgLiBUaGF0IGlzLAotaW5zdGVhZCBvZgotCi1gYGAKLXJldHVybiBSVU5fQUxMX1RFU1RT
KCk7Ci1gYGAKLQotdGhleSB3cml0ZQotCi1gYGAKLVJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi1U
aGlzIGlzIHdyb25nIGFuZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2VlIHRo
ZSByZXR1cm4gdmFsdWUgb2YKLWBSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWlu
ZSBpZiBhIHRlc3QgaGFzIHBhc3NlZC4gSWYgeW91ciBgbWFpbigpYAotZnVuY3Rpb24gaWdub3Jl
cyBpdCwgeW91ciB0ZXN0IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQg
aGFzIGEKLUdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KLQotVG8gaGVs
cCB0aGUgdXNlcnMgYXZvaWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRpb24g
b2YKLWBSVU5fQUxMX1RFU1RTKClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5nLCB3
aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMKLWlnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJuaW5n
LCB0aGUgZml4IGlzIHNpbXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCi1pcyB1c2VkIGFz
IHRoZSByZXR1cm4gdmFsdWUgb2YgYG1haW4oKWAuCi0KLSMjIE15IGNvbXBpbGVyIGNvbXBsYWlu
cyB0aGF0IGEgY29uc3RydWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1
ZS4gV2hhdCdzIGdvaW5nIG9uPyAjIwotCi1EdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGlu
IG9yZGVyIHRvIHN1cHBvcnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCi1tZXNzYWdlcyB0byBh
biBgQVNTRVJUXypgLCBlLmcuCi0KLWBgYAotQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBi
bGFoIiA8PCBmb287Ci1gYGAKLQotd2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFu
ZCBgRkFJTCpgIChidXQgbm90IGBFWFBFQ1QqYCBhbmQKLWBBRERfRkFJTFVSRSpgKSBpbiBjb25z
dHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQot
Y29udGVudCBvZiB5b3VyIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQg
bWVtYmVyIGZ1bmN0aW9uLCBvcgotc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtz
LiBUaGlzIHNlY3Rpb24gaW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucwotaXQuCi0KLSMjIE15
IHNldC11cCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLiBXaHk/ICMjCi0KLUMrKyBpcyBjYXNlLXNl
bnNpdGl2ZS4gSXQgc2hvdWxkIGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQotc3Bl
bGwgaXQgYXMgYFNldHVwKClgPwotCi1TaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwg
YFNldFVwVGVzdENhc2UoKWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCi13b25kZXIgd2h5IGl0
J3MgbmV2ZXIgY2FsbGVkLgotCi0jIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFp
bHVyZSBpbiBFbWFjcyBkaXJlY3RseT8gIyMKLQotR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3Nh
Z2UgZm9ybWF0IGlzIHVuZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKLUlERXMsIGxp
a2UgYWNtZSBhbmQgWENvZGUuIElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBp
bGF0aW9uIGJ1ZmZlcgotaW4gRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93
IGhpdCBgZW50ZXJgIG9uIGEgbWVzc2FnZSB0byBqdW1wIHRvCi10aGUgY29ycmVzcG9uZGluZyBz
b3VyY2UgY29kZSwgb3IgdXNlIGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgot
Ci0jIyBJIGhhdmUgc2V2ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3Qg
Zml4dHVyZSBsb2dpYywgZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xh
c3MgZm9yIGVhY2ggb2YgdGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKLQotWW91
IGRvbid0IGhhdmUgdG8uIEluc3RlYWQgb2YKLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGlj
IEJhc2VUZXN0IHt9OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9v
VGVzdCwgRGVmKSB7IC4uLiB9Ci0KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307
Ci0KLVRFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsg
Li4uIH0KLWBgYAotCi15b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6
Ci1gYGAKLXR5cGVkZWYgQmFzZVRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykg
eyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEJhc2VUZXN0
IEJhclRlc3Q7Ci0KLVRFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0
LCBEZWYpIHsgLi4uIH0KLWBgYAotCi0jIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmll
ZCBpbiBhIHdob2xlIGJ1bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIwotCi1U
aGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4t
ZnJpZW5kbHkgcmVwb3J0LiBJZgoteW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBp
dHNlbGYsIGl0IHdpbGwgbWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0Ci1vdXRwdXQsIG1ha2luZyBp
dCBoYXJkIHRvIHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhp
cwotcHJvYmxlbS4KLQotU2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBk
ZWNpZGVkIHRvIGxldCBHb29nbGUgVGVzdCBvdXRwdXQgZ28KLXRvIHN0ZG91dC4gVGhpcyB3YXks
IHlvdSBjYW4gZWFzaWx5IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgot
ZXhhbXBsZToKLWBgYAotLi9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0Ci1gYGAKLQot
IyMgV2h5IHNob3VsZCBJIHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxl
cz8gIyMKLQotVGhlcmUgYXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgotICAxLiBJdCdzIGxpa2Vs
eSB5b3VyIHRlc3QgbmVlZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJp
YWJsZXMuIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20g
ZXNjYXBpbmcgb25lIHRlc3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdn
aW5nIGRpZmZpY3VsdC4gQnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBz
ZXQgb2YgdmFyaWFibGVzIHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVz
KS4gVGh1cywgdGVzdHMgYXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgMS4g
R2xvYmFsIHZhcmlhYmxlcyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotICAxLiBUZXN0
IGZpeHR1cmVzIGNhbiBiZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUg
ZG9uZSBlYXNpbHkgd2l0aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55
IHRlc3QgY2FzZXMgaGF2ZSBzb21ldGhpbmcgaW4gY29tbW9uLgotCi0jIyBIb3cgZG8gSSB0ZXN0
IHByaXZhdGUgY2xhc3MgbWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAj
IwotCi1Zb3Ugc2hvdWxkIHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBj
bGFzc2VzIHNob3VsZCBiZSBlYXNpbHkKLXRlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZh
Y2UuIE9uZSB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKLXlvdSBtb3Zl
IGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQg
bWFrZSBhbGwKLW1lbWJlcnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCi0KLVlvdSBoYXZl
IHNldmVyYWwgb3RoZXIgb3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9U
RVNUYDoKLSAgKiBXcml0ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFz
czoKLWBgYAotY2xhc3MgRm9vIHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Ci0gIC4uLgotfTsK
LQotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoK
LSAgLi4uCi0gIHZvaWQgVGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVt
YmVycyBvZiBjbGFzcyBGb28uCi0gIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMg
b25lLgotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIFRlc3QxKCk7Ci19Ci0KLVRF
U1RfRihGb29UZXN0LCBUZXN0MikgewotICBUZXN0MigpOwotfQotYGBgCi0gICogSW4gdGhlIGZp
eHR1cmUgY2xhc3MsIHdyaXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0
ZSBtZW1iZXJzLCB0aGVuIHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6Ci1gYGAKLWNs
YXNzIEZvbyB7Ci0gIGZyaWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZv
b1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICBU
MSBnZXRfcHJpdmF0ZV9tZW1iZXIxKEZvbyogb2JqKSB7Ci0gICAgcmV0dXJuIG9iai0+cHJpdmF0
ZV9tZW1iZXIxXzsKLSAgfQotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLgot
ICBnZXRfcHJpdmF0ZV9tZW1iZXIxKHgpCi0gIC4uLgotfQotYGBgCi0gICogSWYgdGhlIG1ldGhv
ZHMgYXJlIGRlY2xhcmVkICoqcHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFjY2Vz
cyBsZXZlbCBpbiBhIHRlc3Qtb25seSBzdWJjbGFzczoKLWBgYAotY2xhc3MgWW91ckNsYXNzIHsK
LSAgLi4uCi0gcHJvdGVjdGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4K
LSAgaW50IERvU29tZXRoaW5nUmV0dXJuaW5nSW50KCk7Ci0gIC4uLgotfTsKLQotLy8gaW4gdGhl
IHlvdXJfY2xhc3NfdGVzdC5jYyBmaWxlOgotY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJs
aWMgWW91ckNsYXNzIHsKLSAgLi4uCi0gcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRo
aW5nUmV0dXJuaW5nSW50OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKLSAgLi4uCi19OwotCi1U
RVNUX0YoWW91ckNsYXNzVGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7Ci0gIFRlc3RhYmxlWW91ckNs
YXNzIG9iajsKLSAgYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdS
ZXR1cm5pbmdJbnQoKSk7Ci19Ci1gYGAKLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNz
IHN0YXRpYyBtZW1iZXJzIHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCi0KLVdl
IGZpbmQgcHJpdmF0ZSBzdGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRo
ZXkgYXJlCi1pbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0
IG91dCBvZiBhIC5oLiBTbyBvZnRlbiBJIG1ha2UKLXRoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVh
ZC4KLQotSW5zdGVhZCBvZjoKLWBgYAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHBy
aXZhdGU6Ci0gIHN0YXRpYyBib29sIEZ1bmMoaW50IG4pOwotfTsKLQotLy8gZm9vLmNjCi1ib29s
IEZvbzo6RnVuYyhpbnQgbikgeyAuLi4gfQotCi0vLyBmb29fdGVzdC5jYwotRVhQRUNUX1RSVUUo
Rm9vOjpGdW5jKDEyMzQ1KSk7Ci1gYGAKLQotWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3Jp
dGU6Ci1gYGAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLX07Ci0KLS8vIGZvby5jYwot
bmFtZXNwYWNlIGludGVybmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Ci19Ci0KLS8v
IGZvb190ZXN0LmNjCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotICBib29sIEZ1bmMoaW50IG4pOwot
fQotCi1FWFBFQ1RfVFJVRShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOwotYGBgCi0KLSMjIEkgd291
bGQgbGlrZSB0byBydW4gYSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1l
dGVycy4gRG8gSSBuZWVkIHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/ICMj
Ci0KLU5vLiBZb3UgY2FuIHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykg
d2hpY2gKLWxldHMgeW91IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRl
cnMsIHdpdGhvdXQgZGVmaW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCi0KLSMjIEhvdyBkbyBJIHRl
c3QgYSBmaWxlIHRoYXQgZGVmaW5lcyBtYWluKCk/ICMjCi0KLVRvIHRlc3QgYSBgZm9vLmNjYCBm
aWxlLCB5b3UgbmVlZCB0byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QK
LXByb2dyYW0uIEhvd2V2ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZv
ciB0aGUgYG1haW4oKWAKLWZ1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClg
IG9mIHlvdXIgdW5pdCB0ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KLWEgYnVpbGQgZXJyb3IuCi0K
LVRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgotICAx
LiBgZm9vLmhgIHdoaWNoIGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCi0gIDEuIGBmb28uY2Ng
IHdoaWNoIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAotICAx
LiBgZm9vX21haW4uY2NgIHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9u
IG9mIGBtYWluKClgLgotCi1UaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgotCi1J
ZiB5b3UgYXJlIGFkZGluZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50
IGFuIGludHJ1c2l2ZSBjaGFuZ2UKLWxpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGlu
Y2x1ZGUgdGhlIGVudGlyZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAotdGVzdC4gRm9yIGV4
YW1wbGU6Ci1gYGAKLS8vIEZpbGUgZm9vX3VuaXR0ZXN0LmNjCi0KLS8vIFRoZSBoZWFkZXJzIHNl
Y3Rpb24KLS4uLgotCi0vLyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZv
ciB0aGUgdW5pdCB0ZXN0IG1haW4oKQotI2RlZmluZSBtYWluIEZvb01haW4KLQotI2luY2x1ZGUg
ImEvYi9mb28uY2MiCi0KLS8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgotLi4uCi1gYGAKLQotCi1I
b3dldmVyLCBwbGVhc2UgcmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJl
IHVzZWQgYXMgdGhlIGxhc3QKLXJlc29ydC4KLQotIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBh
cmd1bWVudCBpbiBBU1NFUlRcX0RFQVRIKCkgYmU/ICMjCi0KLWBBU1NFUlRfREVBVEgoX3N0YXRl
bWVudF8sIF9yZWdleF8pYCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVz
ZWQKLXdoZXJldmVyIGBfc3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRl
bWVudF9gIGNhbiBiZSBhbnkgQysrCi1zdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUg
Y3VycmVudCBjb250ZXh0LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KLXJlZmVyZW5jZSBnbG9iYWwg
YW5kL29yIGxvY2FsIHZhcmlhYmxlcywgYW5kIGNhbiBiZToKLSAgKiBhIHNpbXBsZSBmdW5jdGlv
biBjYWxsIChvZnRlbiB0aGUgY2FzZSksCi0gICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCi0g
ICogYSBjb21wb3VuZCBzdGF0ZW1lbnQuCi0KLT4gU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVy
ZToKLQotYGBgCi0vLyBBIGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwu
Ci1URVNUKE15RGVhdGhUZXN0LCBGdW5jdGlvbkNhbGwpIHsKLSAgQVNTRVJUX0RFQVRIKFh5eig1
KSwgIlh5eiBmYWlsZWQiKTsKLX0KLQotLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCBy
ZWZlcmVuY2VzIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLgotVEVTVChNeURlYXRoVGVzdCwgQ29t
cGxleEV4cHJlc3Npb24pIHsKLSAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7Ci0gIEFTU0VS
VF9ERUFUSCgoYyA/IEZ1bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCi0gICAgICAg
ICAgICAgICAiKEZ1bmMxfE1ldGhvZCkgZmFpbGVkIik7Ci19Ci0KLS8vIERlYXRoIGFzc2VydGlv
bnMgY2FuIGJlIHVzZWQgYW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCi0vLyBwYXJ0aWN1bGFy
LCB0aGV5IGNhbiBiZSBpbnNpZGUgYSBsb29wLgotVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9v
cCkgewotICAvLyBWZXJpZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkg
YWxsIGRpZS4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVB
VEhfTShGb28oaSksICJGb28gaGFzIFxcZCsgZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOwotICB9Ci19Ci0KLS8v
IEEgZGVhdGggYXNzZXJ0aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgotVEVT
VChNeURlYXRoVGVzdCwgQ29tcG91bmRTdGF0ZW1lbnQpIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBh
dCBsZWFzZSBvbmUgb2YgQmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCi0gIC8vIEJhcig0KSBkaWVz
LgotICBBU1NFUlRfREVBVEgoewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0g
ICAgICBCYXIoaSk7Ci0gICAgfQotICB9LAotICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30KLWBg
YAotCi1gZ29vZ2xldGVzdF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5
b3UgYXJlIGludGVyZXN0ZWQuCi0KLSMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbiBpbiBBU1NFUlRcX0RFQVRIIHVzZT8gIyMKLQotT24gUE9TSVggc3lzdGVtcywgR29v
Z2xlIFRlc3QgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgotZXhwcmVzc2lvbiBzeW50
YXgKLShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJ
WF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KLU9uIFdpbmRvd3MsIGl0IHVzZXMgYSBs
aW1pdGVkIHZhcmlhbnQgb2YgcmVndWxhciBleHByZXNzaW9uCi1zeW50YXguIEZvciBtb3JlIGRl
dGFpbHMsIHNlZSB0aGUKLVtyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShWMV82X0FkdmFuY2Vk
R3VpZGUubWQjUmVndWxhcl9FeHByZXNzaW9uX1N5bnRheCkuCi0KLSMjIEkgaGF2ZSBhIGZpeHR1
cmUgY2xhc3MgRm9vLCBidXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1h
dGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCi0KLUdvb2ds
ZSBUZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZp
eHR1cmUgY2xhc3MsIHNvCi1pdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3Jt
YWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoteW91LiBIb3dldmVyLCB0aGVy
ZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgotICAqIElmIHlv
dSBleHBsaWNpdGx5IGRlY2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3Mg
YEZvb2AsIHRoZW4geW91IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZl
biBpZiBpdCB3b3VsZCBiZSBlbXB0eS4KLSAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3Rh
dGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25z
dHJ1Y3RvciBfYW5kXyBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxp
emVyIGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9l
c24ndCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVn
IHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdjYyA0YC4pCi0KLSMjIFdoeSBkb2VzIEFTU0VSVFxf
REVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBq
b2luZWQ/ICMjCi0KLVdpdGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8g
dHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3NzIHRoZQotbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQg
dG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCi10aHJlYWQs
IGEgbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBu
b3QgMiwgdGhyZWFkcy4KLUxhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRo
ZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBjb3VudAotZGVjcmVtZW50cyBieSAxLCBidXQgdGhl
IG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQot
MiB0aHJlYWRzLCB3aGljaCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0
LgotCi1UaGUgbmV3IE5QVEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlz
IHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKLWNyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVy
LCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAotcnVucyBvbiwg
eW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhpcy4KLQotIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3Qg
cmVxdWlyZSB0aGUgZW50aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3Rz
LCB0byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMj
Ci0KLUdvb2dsZSBUZXN0IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQg
dGVzdCBjYXNlcy4gVGhhdCBpcywgaXQKLXJ1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2Ug
Zmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKLWNhc2UsIGFu
ZCBzbyBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVw
IGEgdGVzdCBjYXNlCi1iZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVh
ciBpdCBkb3duIGFmdGVyd29yZHMuIFNwbGl0dGluZyB1cAotdGhlIHRlc3QgY2FzZSB3b3VsZCBy
ZXF1aXJlIG11bHRpcGxlIHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMK
LWluZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCi0KLUlmIHdlIHdl
cmUgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5z
dGVhZCBvZiB0ZXN0Ci1jYXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0
aCB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoKLQotYGBgCi1URVNUX0YoRm9vVGVzdCwgQWJjRGVh
dGhUZXN0KSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9Ci0KLVRFU1RfRihC
YXJUZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4u
IH0KLWBgYAotCi1TaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZv
cmUgYEJhclRlc3QuWHl6YCwgYW5kIHdlIGRvbid0Ci1pbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlm
ZmVyZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKLWBGb29U
ZXN0YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4g
VGhpcyBjb250cmFkaWN0cwotd2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRl
ZkRlYXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCi0KLSMjIEJ1dCBJIGRvbid0IGxpa2Ug
Y2FsbGluZyBteSBlbnRpcmUgdGVzdCBjYXNlIEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5z
IGJvdGggZGVhdGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPyAjIwot
Ci1Zb3UgZG9uJ3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRo
ZSB0ZXN0IGNhc2UgaW50bwotYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhl
IG5hbWVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQotcmVsYXRlZDoKLQotYGBgCi1jbGFz
cyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OwotCi1URVNUX0YoRm9v
VGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9Ci0KLXR5cGVk
ZWYgRm9vVGVzdCBGb29EZWF0aFRlc3Q7Ci0KLVRFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAu
Li4gRVhQRUNUX0RFQVRIKC4uLikgLi4uIH0KLVRFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAu
Li4gQVNTRVJUX0RFQVRIKC4uLikgLi4uIH0KLWBgYAotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxh
aW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2Vy
dGlvbi4gV2hhdCBnaXZlcz8gIyMKLQotSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBG
b29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQotdGhlcmUgaXMgYW4g
YHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilg
IGZ1bmN0aW9uCi1kZWZpbmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9v
VHlwZWAuCi0KLUluIGFkZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1l
IHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBhbHNvCi1uZWVkcyB0byBiZSBkZWZpbmVkIGluIHRo
ZSBfc2FtZV8gbmFtZSBzcGFjZS4KLQotIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1lbW9yeSBs
ZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMjCi0KLVNpbmNlIHRoZSBzdGF0aWNhbGx5IGluaXRp
YWxpemVkIEdvb2dsZSBUZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgotdGhl
IGhlYXAsIHRoZSBWaXN1YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1l
bW9yeSBsZWFrcyBhdCB0aGUKLWVuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdh
eSB0byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0aGUKLWBfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBf
Q3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKLXN0YXRp
Y2FsbHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxz
IGFuZCBhZGRpdGlvbmFsCi1oZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgotCi0jIyBJIGFtIGJ1
aWxkaW5nIG15IHByb2plY3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlvIGFuZCBh
bGwgSSdtIGdldHRpbmcgaXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3YXJuaW5ncyku
IEhlbHAhICMjCi0KLVlvdSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcgbGlua2Vy
IGVycm9yIG9yIHdhcm5pbmdzIGlmIHlvdQotYXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVzdCBwcm9q
ZWN0IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoteW91ciBwcm9qZWN0IGFuZCB0
aGUgYXJlIG5vdCBidWlsdCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5ncy4KLQotICAq
IExOSzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0Ci0gICogTE5LNDIxNzog
bG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5jdGlvbiAnZnVu
Y3Rpb24nCi0gICogTE5LNDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBv
cnRlZAotCi1UaGUgR29vZ2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMgdGhlIFJ1
bnRpbWUgTGlicmFyeSBvcHRpb24KLXNldCB0byAvTVQgKHVzZSBtdWx0aS10aHJlYWRlZCBzdGF0
aWMgbGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1ZykuIElmCi15b3VyIHByb2plY3QgdXNlcyBzb21l
dGhpbmcgZWxzZSwgZm9yIGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQKLURMTHMsIC9N
RGQgZm9yIGRlYnVnKSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBHb29n
bGUKLVRlc3QgcHJvamVjdCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KLQotVG8gdXBkYXRlIHRo
aXMgc2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZpc3VhbAotU3R1
ZGlvIElERSB0aGVuIHNlbGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcyB8
IEMvQysrIHwKLUNvZGUgR2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1bnRpbWUg
TGlicmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5Ci11c2luZyBndGVzdC1tZC52Y3Byb2ogaW5zdGVh
ZCBvZiBndGVzdC52Y3Byb2ouCi0KLSMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGlicmFyeSBhbmQg
R29vZ2xlIFRlc3QgZG9lc24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8gIyMKLUhhdmUg
eW91IHJlYWQgYQotW3dhcm5pbmddKFYxXzZfUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12
aXN1YWwtYy11c2Vycykgb24KLXRoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KLQotIyMgSSB3
YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cg
d2hlcmUgdG8gc3RhcnQuICMjCi1NYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQg
b25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0aW9uIHRvCi1vdXIgbWFpbGluZyBsaXN0LiBIZXJl
IGlzIGhpcyBsaW5rOgotaHR0cDovL2hhc3NhbmphbWlsYWhtYWQuYmxvZ3Nwb3QuY29tLzIwMDkv
MDcvZ3Rlc3Qtc3RhcnRlcnMtaGVscC5odG1sLgotCi0jIyBJIGFtIHNlZWluZyBjb21waWxlIGVy
cm9ycyBtZW50aW9uaW5nIHN0ZDo6dHlwZVxfdHJhaXRzIHdoZW4gSSB0cnkgdG8gdXNlIEdvb2ds
ZSBUZXN0IG9uIFNvbGFyaXMuICMjCi1Hb29nbGUgVGVzdCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFu
ZGFyZCBDKysgbGlicmFyeSB0aGF0IFN1blN0dWRpbyBkb2VzIG5vdCBzdXBwb3J0LgotT3VyIHVz
ZXJzIHJlcG9ydGVkIHN1Y2Nlc3MgdXNpbmcgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zLiBU
cnkgcnVubmluZyB0aGUgYnVpbGQgYWZ0ZXIgcnVuaW5nIHRoaXMgY29tbWFkOgotCi1gZXhwb3J0
IENDPWNjIENYWD1DQyBDWFhGTEFHUz0nLWxpYnJhcnk9c3RscG9ydDQnYAotCi0jIyBIb3cgY2Fu
IG15IGNvZGUgZGV0ZWN0IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PyAjIwotCi1JZiB5b3Ug
d3JpdGUgY29kZSB0aGF0IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRlc3QgYW5k
IGRvZXMKLWRpZmZlcmVudCB0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2luZyB0ZXN0
LW9ubHkgbG9naWMgaW50bwotcHJvZHVjdGlvbiBjb2RlIGFuZCB0aGVyZSBpcyBubyBlYXN5IHdh
eSB0byBlbnN1cmUgdGhhdCB0aGUgdGVzdC1vbmx5Ci1jb2RlIHBhdGhzIGFyZW4ndCBydW4gYnkg
bWlzdGFrZSBpbiBwcm9kdWN0aW9uLiAgU3VjaCBjbGV2ZXJuZXNzIGFsc28KLWxlYWRzIHRvCi1b
SGVpc2VuYnVnc10oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbnVzdWFsX3NvZnR3YXJl
X2J1ZyNIZWlzZW5idWcpLgotVGhlcmVmb3JlIHdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRo
ZSBwcmFjdGljZSwgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3QKLXByb3ZpZGUgYSB3YXkgdG8gZG8g
aXQuCi0KLUluIGdlbmVyYWwsIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUg
dG8gYmVoYXZlCi1kaWZmZXJlbnRseSB1bmRlciB0ZXN0IGlzIFtkZXBlbmRlbmN5IGluamVjdGlv
bl0oaHR0cDovL2phbWVzc2hvcmUuY29tL0Jsb2cvRGVwZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0
aWZpZWQuaHRtbCkuCi1Zb3UgY2FuIGluamVjdCBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9t
IHRoZSB0ZXN0IGFuZCBmcm9tIHRoZQotcHJvZHVjdGlvbiBjb2RlLiAgU2luY2UgeW91ciBwcm9k
dWN0aW9uIGNvZGUgZG9lc24ndCBsaW5rIGluIHRoZQotZm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0
aGVyZSBpcyBubyBkYW5nZXIgaW4gYWNjaWRlbnRhbGx5IHJ1bm5pbmcgaXQuCi0KLUhvd2V2ZXIs
IGlmIHlvdSBfcmVhbGx5XywgX3JlYWxseV8sIF9yZWFsbHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQg
aWYKLXlvdSBmb2xsb3cgdGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVz
IHdpdGggYF90ZXN0YCwKLXlvdSBjYW4gdXNlIHRoZSBfaG9ycmlibGVfIGhhY2sgb2Ygc25pZmZp
bmcgeW91ciBleGVjdXRhYmxlIG5hbWUKLShgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cg
d2hldGhlciB0aGUgY29kZSBpcyB1bmRlciB0ZXN0LgotCi0jIyBHb29nbGUgVGVzdCBkZWZpbmVz
IGEgbWFjcm8gdGhhdCBjbGFzaGVzIHdpdGggb25lIGRlZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5
LiBIb3cgZG8gSSBkZWFsIHdpdGggdGhhdD8gIyMKLQotSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2Jl
eSBuYW1lc3BhY2VzLiAgVGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90aCBkZWZpbmUg
YSBtYWNybyBvZiB0aGUgc2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90
aAotZGVmaW5pdGlvbnMuICBJbiBjYXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRo
IGFub3RoZXIKLWxpYnJhcnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0
cyBtYWNybyB0byBhdm9pZCB0aGUKLWNvbmZsaWN0LgotCi1TcGVjaWZpY2FsbHksIGlmIGJvdGgg
R29vZ2xlIFRlc3QgYW5kIHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KLWBGT09gLCB5b3Ug
Y2FuIGFkZAotYGBgCi0gIC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKLWBgYAotdG8gdGhlIGNv
bXBpbGVyIGZsYWdzIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5h
bWUKLWZyb20gYEZPT2AgdG8gYEdURVNUX0ZPT2AuIEZvciBleGFtcGxlLCB3aXRoIGAtREdURVNU
X0RPTlRfREVGSU5FX1RFU1Q9MWAsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCi1gYGAKLSAgR1RFU1Rf
VEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLWBgYAotaW5zdGVhZCBvZgotYGBgCi0g
IFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLWluIG9yZGVyIHRvIGRlZmlu
ZSBhIHRlc3QuCi0KLUN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBgVEVTVGAsIGBGQUlMYCwgYFNV
Q0NFRURgLCBhbmQgdGhlIGJhc2ljIGNvbXBhcmlzb24gYXNzZXJ0aW9uIG1hY3JvcyBjYW4gaGF2
ZSBhbHRlcm5hdGl2ZSBuYW1lcy4gWW91IGNhbiBzZWUgdGhlIGZ1bGwgbGlzdCBvZiBjb3ZlcmVk
IG1hY3JvcyBbaGVyZV0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1pZishR1RF
U1RfRE9OVF9ERUZJTkVfXHclMkIrcGFja2FnZTpodHRwOi8vZ29vZ2xldGVzdFwuZ29vZ2xlY29k
ZVwuY29tK2ZpbGU6L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCkuIE1vcmUgaW5mb3JtYXRpb24gY2Fu
IGJlIGZvdW5kIGluIHRoZSAiQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzIiBzZWN0aW9uIG9m
IHRoZSBSRUFETUUgZmlsZS4KLQotIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVyZWQgaW4geW91
ciBGQVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rp
b24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1
c2U6Ci0KLSAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3Qvdy9saXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2Fy
Y2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3Jr
L3RvcGljcyksCi0gIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91
cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tKSBhbmQg
c29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0
byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dy
b3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4KLQotUGxlYXNl
IG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKLVtpc3N1ZSB0cmFja2VyXShodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlzdCkgaXMgX25vdF8KLWEg
Z29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVu
dGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcgYSBx
dWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxvd2lu
ZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVy
ZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICogdGhl
IHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNW
TiBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xlIFRlc3QgaXMgdW5kZXIg
YWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhh
cyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5nIHN5
c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAqIHRo
ZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwK
LSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlv
biBpcyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHks
IGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91
IGVuY291bnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9QcmltZXIubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZDg0MGVmNDViOWNhNTdmMTViMDk3NDRmM2I4MGFhMTdmMDk2NDZhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3Mv
VjFfNl9QcmltZXIubWQKKysrIC9kZXYvbnVsbApAQCAtMSw1MDEgKzAsMCBAQAotCi0KLSMgSW50
cm9kdWN0aW9uOiBXaHkgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaz8gIwotCi1fR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29ya18gaGVscHMgeW91IHdyaXRlIGJldHRlciBDKysgdGVzdHMu
Ci0KLU5vIG1hdHRlciB3aGV0aGVyIHlvdSB3b3JrIG9uIExpbnV4LCBXaW5kb3dzLCBvciBhIE1h
YywgaWYgeW91IHdyaXRlIEMrKyBjb2RlLAotR29vZ2xlIFRlc3QgY2FuIGhlbHAgeW91LgotCi1T
byB3aGF0IG1ha2VzIGEgZ29vZCB0ZXN0LCBhbmQgaG93IGRvZXMgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayBmaXQgaW4/IFdlIGJlbGlldmU6Ci0gIDEuIFRlc3RzIHNob3VsZCBiZSBfaW5k
ZXBlbmRlbnRfIGFuZCBfcmVwZWF0YWJsZV8uIEl0J3MgYSBwYWluIHRvIGRlYnVnIGEgdGVzdCB0
aGF0IHN1Y2NlZWRzIG9yIGZhaWxzIGFzIGEgcmVzdWx0IG9mIG90aGVyIHRlc3RzLiAgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayBpc29sYXRlcyB0aGUgdGVzdHMgYnkgcnVubmluZyBlYWNo
IG9mIHRoZW0gb24gYSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVzdCBmYWlscywgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yayBhbGxvd3MgeW91IHRvIHJ1biBpdCBpbiBpc29sYXRpb24g
Zm9yIHF1aWNrIGRlYnVnZ2luZy4KLSAgMS4gVGVzdHMgc2hvdWxkIGJlIHdlbGwgX29yZ2FuaXpl
ZF8gYW5kIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuICBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIGdyb3VwcyByZWxhdGVkIHRlc3RzIGludG8gdGVzdCBjYXNl
cyB0aGF0IGNhbiBzaGFyZSBkYXRhIGFuZCBzdWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVy
biBpcyBlYXN5IHRvIHJlY29nbml6ZSBhbmQgbWFrZXMgdGVzdHMgZWFzeSB0byBtYWludGFpbi4g
U3VjaCBjb25zaXN0ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBwZW9wbGUgc3dpdGNo
IHByb2plY3RzIGFuZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUgYmFzZS4KLSAgMS4gVGVz
dHMgc2hvdWxkIGJlIF9wb3J0YWJsZV8gYW5kIF9yZXVzYWJsZV8uIFRoZSBvcGVuLXNvdXJjZSBj
b21tdW5pdHkgaGFzIGEgbG90IG9mIGNvZGUgdGhhdCBpcyBwbGF0Zm9ybS1uZXV0cmFsLCBpdHMg
dGVzdHMgc2hvdWxkIGFsc28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsgd29ya3Mgb24gZGlmZmVyZW50IE9TZXMsIHdpdGggZGlmZmVyZW50IGNvbXBp
bGVycyAoZ2NjLCBNU1ZDLCBhbmQgb3RoZXJzKSwgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMs
IHNvIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgdGVzdHMgY2FuIGVhc2lseSB3b3JrIHdp
dGggYSB2YXJpZXR5IG9mIGNvbmZpZ3VyYXRpb25zLiAgKE5vdGUgdGhhdCB0aGUgY3VycmVudCBy
ZWxlYXNlIG9ubHkgY29udGFpbnMgYnVpbGQgc2NyaXB0cyBmb3IgTGludXggLSB3ZSBhcmUgYWN0
aXZlbHkgd29ya2luZyBvbiBzY3JpcHRzIGZvciBvdGhlciBwbGF0Zm9ybXMuKQotICAxLiBXaGVu
IHRlc3RzIGZhaWwsIHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBfaW5mb3JtYXRpb25fIGFi
b3V0IHRoZSBwcm9ibGVtIGFzIHBvc3NpYmxlLiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
IGRvZXNuJ3Qgc3RvcCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJbnN0ZWFkLCBpdCBvbmx5
IHN0b3BzIHRoZSBjdXJyZW50IHRlc3QgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3Ug
Y2FuIGFsc28gc2V0IHVwIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRhbCBmYWlsdXJlcyBhZnRl
ciB3aGljaCB0aGUgY3VycmVudCB0ZXN0IGNvbnRpbnVlcy4gVGh1cywgeW91IGNhbiBkZXRlY3Qg
YW5kIGZpeCBtdWx0aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1lZGl0LWNvbXBpbGUgY3ljbGUu
Ci0gIDEuIFRoZSB0ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJhdGUgdGVzdCB3cml0ZXJz
IGZyb20gaG91c2VrZWVwaW5nIGNob3JlcyBhbmQgbGV0IHRoZW0gZm9jdXMgb24gdGhlIHRlc3Qg
X2NvbnRlbnRfLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBhdXRvbWF0aWNhbGx5IGtl
ZXBzIHRyYWNrIG9mIGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24ndCByZXF1aXJlIHRoZSB1
c2VyIHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgotICAxLiBUZXN0cyBz
aG91bGQgYmUgX2Zhc3RfLiBXaXRoIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmssIHlvdSBj
YW4gcmV1c2Ugc2hhcmVkIHJlc291cmNlcyBhY3Jvc3MgdGVzdHMgYW5kIHBheSBmb3IgdGhlIHNl
dC11cC90ZWFyLWRvd24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZyB0ZXN0cyBkZXBlbmQgb24g
ZWFjaCBvdGhlci4KLQotU2luY2UgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpcyBiYXNl
ZCBvbiB0aGUgcG9wdWxhciB4VW5pdAotYXJjaGl0ZWN0dXJlLCB5b3UnbGwgZmVlbCByaWdodCBh
dCBob21lIGlmIHlvdSd2ZSB1c2VkIEpVbml0IG9yIFB5VW5pdCBiZWZvcmUuCi1JZiBub3QsIGl0
IHdpbGwgdGFrZSB5b3UgYWJvdXQgMTAgbWludXRlcyB0byBsZWFybiB0aGUgYmFzaWNzIGFuZCBn
ZXQgc3RhcnRlZC4KLVNvIGxldCdzIGdvIQotCi1fTm90ZTpfIFdlIHNvbWV0aW1lcyByZWZlciB0
byBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGluZm9ybWFsbHkKLWFzIF9Hb29nbGUgVGVz
dF8uCi0KLSMgU2V0dGluZyB1cCBhIE5ldyBUZXN0IFByb2plY3QgIwotCi1UbyB3cml0ZSBhIHRl
c3QgcHJvZ3JhbSB1c2luZyBHb29nbGUgVGVzdCwgeW91IG5lZWQgdG8gY29tcGlsZSBHb29nbGUK
LVRlc3QgaW50byBhIGxpYnJhcnkgYW5kIGxpbmsgeW91ciB0ZXN0IHdpdGggaXQuICBXZSBwcm92
aWRlIGJ1aWxkCi1maWxlcyBmb3Igc29tZSBwb3B1bGFyIGJ1aWxkIHN5c3RlbXM6IGBtc3ZjL2Ag
Zm9yIFZpc3VhbCBTdHVkaW8sCi1geGNvZGUvYCBmb3IgTWFjIFhjb2RlLCBgbWFrZS9gIGZvciBH
TlUgbWFrZSwgYGNvZGVnZWFyL2AgZm9yIEJvcmxhbmQKLUMrKyBCdWlsZGVyLCBhbmQgdGhlIGF1
dG90b29scyBzY3JpcHQgKGRlcHJlY2F0ZWQpIGFuZAotYENNYWtlTGlzdHMudHh0YCBmb3IgQ01h
a2UgKHJlY29tbWVuZGVkKSBpbiB0aGUgR29vZ2xlIFRlc3Qgcm9vdAotZGlyZWN0b3J5LiAgSWYg
eW91ciBidWlsZCBzeXN0ZW0gaXMgbm90IG9uIHRoaXMgbGlzdCwgeW91IGNhbiB0YWtlIGEKLWxv
b2sgYXQgYG1ha2UvTWFrZWZpbGVgIHRvIGxlYXJuIGhvdyBHb29nbGUgVGVzdCBzaG91bGQgYmUg
Y29tcGlsZWQKLShiYXNpY2FsbHkgeW91IHdhbnQgdG8gY29tcGlsZSBgc3JjL2d0ZXN0LWFsbC5j
Y2Agd2l0aCBgR1RFU1RfUk9PVGAKLWFuZCBgR1RFU1RfUk9PVC9pbmNsdWRlYCBpbiB0aGUgaGVh
ZGVyIHNlYXJjaCBwYXRoLCB3aGVyZSBgR1RFU1RfUk9PVGAKLWlzIHRoZSBHb29nbGUgVGVzdCBy
b290IGRpcmVjdG9yeSkuCi0KLU9uY2UgeW91IGFyZSBhYmxlIHRvIGNvbXBpbGUgdGhlIEdvb2ds
ZSBUZXN0IGxpYnJhcnksIHlvdSBzaG91bGQKLWNyZWF0ZSBhIHByb2plY3Qgb3IgYnVpbGQgdGFy
Z2V0IGZvciB5b3VyIHRlc3QgcHJvZ3JhbS4gIE1ha2Ugc3VyZSB5b3UKLWhhdmUgYEdURVNUX1JP
T1QvaW5jbHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCBzbyB0aGF0IHRoZQotY29tcGls
ZXIgY2FuIGZpbmQgYCJndGVzdC9ndGVzdC5oImAgd2hlbiBjb21waWxpbmcgeW91ciB0ZXN0LiAg
U2V0IHVwCi15b3VyIHRlc3QgcHJvamVjdCB0byBsaW5rIHdpdGggdGhlIEdvb2dsZSBUZXN0IGxp
YnJhcnkgKGZvciBleGFtcGxlLAotaW4gVmlzdWFsIFN0dWRpbywgdGhpcyBpcyBkb25lIGJ5IGFk
ZGluZyBhIGRlcGVuZGVuY3kgb24KLWBndGVzdC52Y3Byb2pgKS4KLQotSWYgeW91IHN0aWxsIGhh
dmUgcXVlc3Rpb25zLCB0YWtlIGEgbG9vayBhdCBob3cgR29vZ2xlIFRlc3QncyBvd24KLXRlc3Rz
IGFyZSBidWlsdCBhbmQgdXNlIHRoZW0gYXMgZXhhbXBsZXMuCi0KLSMgQmFzaWMgQ29uY2VwdHMg
IwotCi1XaGVuIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3Ugc3RhcnQgYnkgd3JpdGluZyBfYXNzZXJ0
aW9uc18sIHdoaWNoIGFyZSBzdGF0ZW1lbnRzCi10aGF0IGNoZWNrIHdoZXRoZXIgYSBjb25kaXRp
b24gaXMgdHJ1ZS4gQW4gYXNzZXJ0aW9uJ3MgcmVzdWx0IGNhbiBiZSBfc3VjY2Vzc18sCi1fbm9u
ZmF0YWwgZmFpbHVyZV8sIG9yIF9mYXRhbCBmYWlsdXJlXy4gSWYgYSBmYXRhbCBmYWlsdXJlIG9j
Y3VycywgaXQgYWJvcnRzCi10aGUgY3VycmVudCBmdW5jdGlvbjsgb3RoZXJ3aXNlIHRoZSBwcm9n
cmFtIGNvbnRpbnVlcyBub3JtYWxseS4KLQotX1Rlc3RzXyB1c2UgYXNzZXJ0aW9ucyB0byB2ZXJp
ZnkgdGhlIHRlc3RlZCBjb2RlJ3MgYmVoYXZpb3IuIElmIGEgdGVzdCBjcmFzaGVzCi1vciBoYXMg
YSBmYWlsZWQgYXNzZXJ0aW9uLCB0aGVuIGl0IF9mYWlsc187IG90aGVyd2lzZSBpdCBfc3VjY2Vl
ZHNfLgotCi1BIF90ZXN0IGNhc2VfIGNvbnRhaW5zIG9uZSBvciBtYW55IHRlc3RzLiBZb3Ugc2hv
dWxkIGdyb3VwIHlvdXIgdGVzdHMgaW50byB0ZXN0Ci1jYXNlcyB0aGF0IHJlZmxlY3QgdGhlIHN0
cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuIFdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYQotdGVz
dCBjYXNlIG5lZWQgdG8gc2hhcmUgY29tbW9uIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzLCB5b3Ug
Y2FuIHB1dCB0aGVtIGludG8gYQotX3Rlc3QgZml4dHVyZV8gY2xhc3MuCi0KLUEgX3Rlc3QgcHJv
Z3JhbV8gY2FuIGNvbnRhaW4gbXVsdGlwbGUgdGVzdCBjYXNlcy4KLQotV2UnbGwgbm93IGV4cGxh
aW4gaG93IHRvIHdyaXRlIGEgdGVzdCBwcm9ncmFtLCBzdGFydGluZyBhdCB0aGUgaW5kaXZpZHVh
bAotYXNzZXJ0aW9uIGxldmVsIGFuZCBidWlsZGluZyB1cCB0byB0ZXN0cyBhbmQgdGVzdCBjYXNl
cy4KLQotIyBBc3NlcnRpb25zICMKLQotR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBhcmUgbWFjcm9z
IHRoYXQgcmVzZW1ibGUgZnVuY3Rpb24gY2FsbHMuIFlvdSB0ZXN0IGEKLWNsYXNzIG9yIGZ1bmN0
aW9uIGJ5IG1ha2luZyBhc3NlcnRpb25zIGFib3V0IGl0cyBiZWhhdmlvci4gV2hlbiBhbiBhc3Nl
cnRpb24KLWZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMgdGhlIGFzc2VydGlvbidzIHNvdXJjZSBm
aWxlIGFuZCBsaW5lIG51bWJlciBsb2NhdGlvbiwKLWFsb25nIHdpdGggYSBmYWlsdXJlIG1lc3Nh
Z2UuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlCi13aGljaCB3
aWxsIGJlIGFwcGVuZGVkIHRvIEdvb2dsZSBUZXN0J3MgbWVzc2FnZS4KLQotVGhlIGFzc2VydGlv
bnMgY29tZSBpbiBwYWlycyB0aGF0IHRlc3QgdGhlIHNhbWUgdGhpbmcgYnV0IGhhdmUgZGlmZmVy
ZW50Ci1lZmZlY3RzIG9uIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBgQVNTRVJUXypgIHZlcnNpb25z
IGdlbmVyYXRlIGZhdGFsIGZhaWx1cmVzCi13aGVuIHRoZXkgZmFpbCwgYW5kICoqYWJvcnQgdGhl
IGN1cnJlbnQgZnVuY3Rpb24qKi4gYEVYUEVDVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZQotbm9uZmF0
YWwgZmFpbHVyZXMsIHdoaWNoIGRvbid0IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBVc3Vh
bGx5IGBFWFBFQ1RfKmAKLWFyZSBwcmVmZXJyZWQsIGFzIHRoZXkgYWxsb3cgbW9yZSB0aGFuIG9u
ZSBmYWlsdXJlcyB0byBiZSByZXBvcnRlZCBpbiBhIHRlc3QuCi1Ib3dldmVyLCB5b3Ugc2hvdWxk
IHVzZSBgQVNTRVJUXypgIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSB3aGVu
Ci10aGUgYXNzZXJ0aW9uIGluIHF1ZXN0aW9uIGZhaWxzLgotCi1TaW5jZSBhIGZhaWxlZCBgQVNT
RVJUXypgIHJldHVybnMgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbiBpbW1lZGlhdGVseSwKLXBv
c3NpYmx5IHNraXBwaW5nIGNsZWFuLXVwIGNvZGUgdGhhdCBjb21lcyBhZnRlciBpdCwgaXQgbWF5
IGNhdXNlIGEgc3BhY2UgbGVhay4KLURlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBsZWFr
LCBpdCBtYXkgb3IgbWF5IG5vdCBiZSB3b3J0aCBmaXhpbmcgLSBzbwota2VlcCB0aGlzIGluIG1p
bmQgaWYgeW91IGdldCBhIGhlYXAgY2hlY2tlciBlcnJvciBpbiBhZGRpdGlvbiB0byBhc3NlcnRp
b24KLWVycm9ycy4KLQotVG8gcHJvdmlkZSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UsIHNpbXBs
eSBzdHJlYW0gaXQgaW50byB0aGUgbWFjcm8gdXNpbmcgdGhlCi1gPDxgIG9wZXJhdG9yLCBvciBh
IHNlcXVlbmNlIG9mIHN1Y2ggb3BlcmF0b3JzLiBBbiBleGFtcGxlOgotYGBgCi1BU1NFUlRfRVEo
eC5zaXplKCksIHkuc2l6ZSgpKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGFyZSBvZiB1bmVxdWFsIGxl
bmd0aCI7Ci0KLWZvciAoaW50IGkgPSAwOyBpIDwgeC5zaXplKCk7ICsraSkgewotICBFWFBFQ1Rf
RVEoeFtpXSwgeVtpXSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBkaWZmZXIgYXQgaW5kZXggIiA8PCBp
OwotfQotYGBgCi0KLUFueXRoaW5nIHRoYXQgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGBvc3RyZWFt
YCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uCi1tYWNyby0taW4gcGFydGljdWxhciwg
QyBzdHJpbmdzIGFuZCBgc3RyaW5nYCBvYmplY3RzLiBJZiBhIHdpZGUgc3RyaW5nCi0oYHdjaGFy
X3QqYCwgYFRDSEFSKmAgaW4gYFVOSUNPREVgIG1vZGUgb24gV2luZG93cywgb3IgYHN0ZDo6d3N0
cmluZ2ApIGlzCi1zdHJlYW1lZCB0byBhbiBhc3NlcnRpb24sIGl0IHdpbGwgYmUgdHJhbnNsYXRl
ZCB0byBVVEYtOCB3aGVuIHByaW50ZWQuCi0KLSMjIEJhc2ljIEFzc2VydGlvbnMgIyMKLQotVGhl
c2UgYXNzZXJ0aW9ucyBkbyBiYXNpYyB0cnVlL2ZhbHNlIGNvbmRpdGlvbiB0ZXN0aW5nLgotfCAq
KkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMq
KiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9UUlVFKGBfY29uZGl0aW9uX2ApYDsgIHwgYEVYUEVDVF9U
UlVFKGBfY29uZGl0aW9uX2ApYDsgICB8IF9jb25kaXRpb25fIGlzIHRydWUgfAotfCBgQVNTRVJU
X0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsgfCBgRVhQRUNUX0ZBTFNFKGBfY29uZGl0aW9uX2ApYDsg
IHwgX2NvbmRpdGlvbl8gaXMgZmFsc2UgfAotCi1SZW1lbWJlciwgd2hlbiB0aGV5IGZhaWwsIGBB
U1NFUlRfKmAgeWllbGRzIGEgZmF0YWwgZmFpbHVyZSBhbmQKLXJldHVybnMgZnJvbSB0aGUgY3Vy
cmVudCBmdW5jdGlvbiwgd2hpbGUgYEVYUEVDVF8qYCB5aWVsZHMgYSBub25mYXRhbAotZmFpbHVy
ZSwgYWxsb3dpbmcgdGhlIGZ1bmN0aW9uIHRvIGNvbnRpbnVlIHJ1bm5pbmcuIEluIGVpdGhlciBj
YXNlLCBhbgotYXNzZXJ0aW9uIGZhaWx1cmUgbWVhbnMgaXRzIGNvbnRhaW5pbmcgdGVzdCBmYWls
cy4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIEJpbmFyeSBD
b21wYXJpc29uICMjCi0KLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgYXNzZXJ0aW9ucyB0aGF0IGNv
bXBhcmUgdHdvIHZhbHVlcy4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBh
c3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXxgQVNTRVJUX0VRKGBfZXhwZWN0
ZWRfYCwgYF9hY3R1YWxfYCk7YHxgRVhQRUNUX0VRKGBfZXhwZWN0ZWRfYCwgYF9hY3R1YWxfYCk7
YHwgX2V4cGVjdGVkXyBgPT1gIF9hY3R1YWxfIHwKLXxgQVNTRVJUX05FKGBfdmFsMV9gLCBgX3Zh
bDJfYCk7YCAgICAgIHxgRVhQRUNUX05FKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3Zh
bDFfIGAhPWAgX3ZhbDJfIHwKLXxgQVNTRVJUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHxgRVhQRUNUX0xUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8YCBfdmFs
Ml8gfAotfGBBU1NFUlRfTEUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTEUo
YF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDw9YCBfdmFsMl8gfAotfGBBU1NF
UlRfR1QoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR1QoYF92YWwxX2AsIGBf
dmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD5gIF92YWwyXyB8Ci18YEFTU0VSVF9HRShgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPj1gIF92YWwyXyB8Ci0KLUluIHRoZSBldmVudCBvZiBhIGZhaWx1cmUsIEdv
b2dsZSBUZXN0IHByaW50cyBib3RoIF92YWwxXyBhbmQgX3ZhbDJfCi0uIEluIGBBU1NFUlRfRVEq
YCBhbmQgYEVYUEVDVF9FUSpgIChhbmQgYWxsIG90aGVyIGVxdWFsaXR5IGFzc2VydGlvbnMKLXdl
J2xsIGludHJvZHVjZSBsYXRlciksIHlvdSBzaG91bGQgcHV0IHRoZSBleHByZXNzaW9uIHlvdSB3
YW50IHRvIHRlc3QKLWluIHRoZSBwb3NpdGlvbiBvZiBfYWN0dWFsXywgYW5kIHB1dCBpdHMgZXhw
ZWN0ZWQgdmFsdWUgaW4gX2V4cGVjdGVkXywKLWFzIEdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNz
YWdlcyBhcmUgb3B0aW1pemVkIGZvciB0aGlzIGNvbnZlbnRpb24uCi0KLVZhbHVlIGFyZ3VtZW50
cyBtdXN0IGJlIGNvbXBhcmFibGUgYnkgdGhlIGFzc2VydGlvbidzIGNvbXBhcmlzb24KLW9wZXJh
dG9yIG9yIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvci4gIFdlIHVzZWQgdG8gcmVxdWlyZSB0
aGUKLWFyZ3VtZW50cyB0byBzdXBwb3J0IHRoZSBgPDxgIG9wZXJhdG9yIGZvciBzdHJlYW1pbmcg
dG8gYW4gYG9zdHJlYW1gLAotYnV0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBzaW5jZSB2MS42
LjAgKGlmIGA8PGAgaXMgc3VwcG9ydGVkLCBpdAotd2lsbCBiZSBjYWxsZWQgdG8gcHJpbnQgdGhl
IGFyZ3VtZW50cyB3aGVuIHRoZSBhc3NlcnRpb24gZmFpbHM7Ci1vdGhlcndpc2UgR29vZ2xlIFRl
c3Qgd2lsbCBhdHRlbXB0IHRvIHByaW50IHRoZW0gaW4gdGhlIGJlc3Qgd2F5IGl0Ci1jYW4uIEZv
ciBtb3JlIGRldGFpbHMgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlIHByaW50aW5nIG9mIHRoZQot
YXJndW1lbnRzLCBzZWUgdGhpcyBHb29nbGUgTW9jayBbcmVjaXBlXSguLi8uLi9nb29nbGVtb2Nr
L2RvY3MvQ29va0Jvb2subWQjdGVhY2hpbmctZ29vZ2xlLW1vY2staG93LXRvLXByaW50LXlvdXIt
dmFsdWVzKS4pLgotCi1UaGVzZSBhc3NlcnRpb25zIGNhbiB3b3JrIHdpdGggYSB1c2VyLWRlZmlu
ZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKLWNvcnJlc3BvbmRpbmcgY29tcGFy
aXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuICBJZiB0aGUgY29ycmVzcG9uZGlu
Zwotb3BlcmF0b3IgaXMgZGVmaW5lZCwgcHJlZmVyIHVzaW5nIHRoZSBgQVNTRVJUXyooKWAgbWFj
cm9zIGJlY2F1c2UgdGhleSB3aWxsCi1wcmludCBvdXQgbm90IG9ubHkgdGhlIHJlc3VsdCBvZiB0
aGUgY29tcGFyaXNvbiwgYnV0IHRoZSB0d28gb3BlcmFuZHMgYXMgd2VsbC4KLQotQXJndW1lbnRz
IGFyZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4gVGhlcmVmb3JlLCBpdCdzIE9LIGZv
ciB0aGUKLWFyZ3VtZW50cyB0byBoYXZlIHNpZGUgZWZmZWN0cy4gSG93ZXZlciwgYXMgd2l0aCBh
bnkgb3JkaW5hcnkgQy9DKysgZnVuY3Rpb24sCi10aGUgYXJndW1lbnRzJyBldmFsdWF0aW9uIG9y
ZGVyIGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0bwotY2hvb3NlIGFu
eSBvcmRlcikgYW5kIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnkgcGFydGljdWxh
ciBhcmd1bWVudAotZXZhbHVhdGlvbiBvcmRlci4KLQotYEFTU0VSVF9FUSgpYCBkb2VzIHBvaW50
ZXIgZXF1YWxpdHkgb24gcG9pbnRlcnMuIElmIHVzZWQgb24gdHdvIEMgc3RyaW5ncywgaXQKLXRl
c3RzIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbiwgbm90IGlmIHRoZXkg
aGF2ZSB0aGUgc2FtZSB2YWx1ZS4KLVRoZXJlZm9yZSwgaWYgeW91IHdhbnQgdG8gY29tcGFyZSBD
IHN0cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIqYCkgYnkgdmFsdWUsIHVzZQotYEFTU0VSVF9TVFJF
USgpYCAsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1bGFyLCB0
byBhc3NlcnQKLXRoYXQgYSBDIHN0cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NUUkVRKE5V
TEwsIGNfc3RyaW5nKWAgLiBIb3dldmVyLCB0bwotY29tcGFyZSB0d28gYHN0cmluZ2Agb2JqZWN0
cywgeW91IHNob3VsZCB1c2UgYEFTU0VSVF9FUWAuCi0KLU1hY3JvcyBpbiB0aGlzIHNlY3Rpb24g
d29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3aWRlIHN0cmluZyBvYmplY3RzIChgc3RyaW5nYAot
YW5kIGB3c3RyaW5nYCkuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgot
Ci0jIyBTdHJpbmcgQ29tcGFyaXNvbiAjIwotCi1UaGUgYXNzZXJ0aW9ucyBpbiB0aGlzIGdyb3Vw
IGNvbXBhcmUgdHdvICoqQyBzdHJpbmdzKiouIElmIHlvdSB3YW50IHRvIGNvbXBhcmUKLXR3byBg
c3RyaW5nYCBvYmplY3RzLCB1c2UgYEVYUEVDVF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQgZXRjIGlu
c3RlYWQuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfU1RSRVEoYF9leHBlY3RlZFxfc3Ry
X2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSRVEoYF9leHBlY3RlZFxfc3Ry
X2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBz
YW1lIGNvbnRlbnQgfAotfCBgQVNTRVJUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICB8
IGBFWFBFQ1RfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJp
bmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQgfAotfCBgQVNTRVJUX1NUUkNBU0VFUShgX2V4cGVj
dGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VFUShgX2V4cGVj
dGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSB0
aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKLXwgYEFTU0VSVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9zdHIyX2Ap
O2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50LCBpZ25vcmluZyBj
YXNlIHwKLQotTm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFucyB0aGF0
IGNhc2UgaXMgaWdub3JlZC4KLQotYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBhY2NlcHQg
d2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhCi1jb21wYXJpc29uIG9mIHR3byB3aWRl
IHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRGLTgKLW5h
cnJvdyBzdHJpbmdzLgotCi1BIGBOVUxMYCBwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJpbmcgYXJl
IGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgotCi1TZWUgYWxzbzogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJpY2tzIChz
dWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBhbmQKLXJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGlu
ZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtBZHZhbmNlZCBHb29nbGUgVGVzdCBHdWlkZV0oVjFf
Nl9BZHZhbmNlZEd1aWRlLm1kKS4KLQotIyBTaW1wbGUgVGVzdHMgIwotCi1UbyBjcmVhdGUgYSB0
ZXN0OgotICAxLiBVc2UgdGhlIGBURVNUKClgIG1hY3JvIHRvIGRlZmluZSBhbmQgbmFtZSBhIHRl
c3QgZnVuY3Rpb24sIFRoZXNlIGFyZSBvcmRpbmFyeSBDKysgZnVuY3Rpb25zIHRoYXQgZG9uJ3Qg
cmV0dXJuIGEgdmFsdWUuCi0gIDEuIEluIHRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYW55IHZh
bGlkIEMrKyBzdGF0ZW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUsIHVzZSB0aGUgdmFyaW91cyBH
b29nbGUgVGVzdCBhc3NlcnRpb25zIHRvIGNoZWNrIHZhbHVlcy4KLSAgMS4gVGhlIHRlc3QncyBy
ZXN1bHQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXNzZXJ0aW9uczsgaWYgYW55IGFzc2VydGlvbiBp
biB0aGUgdGVzdCBmYWlscyAoZWl0aGVyIGZhdGFsbHkgb3Igbm9uLWZhdGFsbHkpLCBvciBpZiB0
aGUgdGVzdCBjcmFzaGVzLCB0aGUgZW50aXJlIHRlc3QgZmFpbHMuIE90aGVyd2lzZSwgaXQgc3Vj
Y2VlZHMuCi0KLWBgYAotVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7Ci0gLi4uIHRl
c3QgYm9keSAuLi4KLX0KLWBgYAotCi0KLWBURVNUKClgIGFyZ3VtZW50cyBnbyBmcm9tIGdlbmVy
YWwgdG8gc3BlY2lmaWMuIFRoZSBfZmlyc3RfIGFyZ3VtZW50IGlzIHRoZQotbmFtZSBvZiB0aGUg
dGVzdCBjYXNlLCBhbmQgdGhlIF9zZWNvbmRfIGFyZ3VtZW50IGlzIHRoZSB0ZXN0J3MgbmFtZSB3
aXRoaW4gdGhlCi10ZXN0IGNhc2UuIEJvdGggbmFtZXMgbXVzdCBiZSB2YWxpZCBDKysgaWRlbnRp
ZmllcnMsIGFuZCB0aGV5IHNob3VsZCBub3QgY29udGFpbiB1bmRlcnNjb3JlIChgX2ApLiBBIHRl
c3QncyBfZnVsbCBuYW1lXyBjb25zaXN0cyBvZiBpdHMgY29udGFpbmluZyB0ZXN0IGNhc2UgYW5k
IGl0cwotaW5kaXZpZHVhbCBuYW1lLiBUZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzIGNh
biBoYXZlIHRoZSBzYW1lIGluZGl2aWR1YWwKLW5hbWUuCi0KLUZvciBleGFtcGxlLCBsZXQncyB0
YWtlIGEgc2ltcGxlIGludGVnZXIgZnVuY3Rpb246Ci1gYGAKLWludCBGYWN0b3JpYWwoaW50IG4p
OyAvLyBSZXR1cm5zIHRoZSBmYWN0b3JpYWwgb2YgbgotYGBgCi0KLUEgdGVzdCBjYXNlIGZvciB0
aGlzIGZ1bmN0aW9uIG1pZ2h0IGxvb2sgbGlrZToKLWBgYAotLy8gVGVzdHMgZmFjdG9yaWFsIG9m
IDAuCi1URVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNaZXJvSW5wdXQpIHsKLSAgRVhQRUNUX0VR
KDEsIEZhY3RvcmlhbCgwKSk7Ci19Ci0KLS8vIFRlc3RzIGZhY3RvcmlhbCBvZiBwb3NpdGl2ZSBu
dW1iZXJzLgotVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzUG9zaXRpdmVJbnB1dCkgewotICBF
WFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDEpKTsKLSAgRVhQRUNUX0VRKDIsIEZhY3RvcmlhbCgyKSk7
Ci0gIEVYUEVDVF9FUSg2LCBGYWN0b3JpYWwoMykpOwotICBFWFBFQ1RfRVEoNDAzMjAsIEZhY3Rv
cmlhbCg4KSk7Ci19Ci1gYGAKLQotR29vZ2xlIFRlc3QgZ3JvdXBzIHRoZSB0ZXN0IHJlc3VsdHMg
YnkgdGVzdCBjYXNlcywgc28gbG9naWNhbGx5LXJlbGF0ZWQgdGVzdHMKLXNob3VsZCBiZSBpbiB0
aGUgc2FtZSB0ZXN0IGNhc2U7IGluIG90aGVyIHdvcmRzLCB0aGUgZmlyc3QgYXJndW1lbnQgdG8g
dGhlaXIKLWBURVNUKClgIHNob3VsZCBiZSB0aGUgc2FtZS4gSW4gdGhlIGFib3ZlIGV4YW1wbGUs
IHdlIGhhdmUgdHdvIHRlc3RzLAotYEhhbmRsZXNaZXJvSW5wdXRgIGFuZCBgSGFuZGxlc1Bvc2l0
aXZlSW5wdXRgLCB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSB0ZXN0Ci1jYXNlIGBGYWN0b3JpYWxU
ZXN0YC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgVGVzdCBG
aXh0dXJlczogVXNpbmcgdGhlIFNhbWUgRGF0YSBDb25maWd1cmF0aW9uIGZvciBNdWx0aXBsZSBU
ZXN0cyAjCi0KLUlmIHlvdSBmaW5kIHlvdXJzZWxmIHdyaXRpbmcgdHdvIG9yIG1vcmUgdGVzdHMg
dGhhdCBvcGVyYXRlIG9uIHNpbWlsYXIgZGF0YSwKLXlvdSBjYW4gdXNlIGEgX3Rlc3QgZml4dHVy
ZV8uIEl0IGFsbG93cyB5b3UgdG8gcmV1c2UgdGhlIHNhbWUgY29uZmlndXJhdGlvbiBvZgotb2Jq
ZWN0cyBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgdGVzdHMuCi0KLVRvIGNyZWF0ZSBhIGZpeHR1cmUs
IGp1c3Q6Ci0gIDEuIERlcml2ZSBhIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6VGVzdGAgLiBTdGFy
dCBpdHMgYm9keSB3aXRoIGBwcm90ZWN0ZWQ6YCBvciBgcHVibGljOmAgYXMgd2UnbGwgd2FudCB0
byBhY2Nlc3MgZml4dHVyZSBtZW1iZXJzIGZyb20gc3ViLWNsYXNzZXMuCi0gIDEuIEluc2lkZSB0
aGUgY2xhc3MsIGRlY2xhcmUgYW55IG9iamVjdHMgeW91IHBsYW4gdG8gdXNlLgotICAxLiBJZiBu
ZWNlc3NhcnksIHdyaXRlIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciBvciBgU2V0VXAoKWAgZnVuY3Rp
b24gdG8gcHJlcGFyZSB0aGUgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0LiBBIGNvbW1vbiBtaXN0YWtl
IGlzIHRvIHNwZWxsIGBTZXRVcCgpYCBhcyBgU2V0dXAoKWAgd2l0aCBhIHNtYWxsIGB1YCAtIGRv
bid0IGxldCB0aGF0IGhhcHBlbiB0byB5b3UuCi0gIDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBk
ZXN0cnVjdG9yIG9yIGBUZWFyRG93bigpYCBmdW5jdGlvbiB0byByZWxlYXNlIGFueSByZXNvdXJj
ZXMgeW91IGFsbG9jYXRlZCBpbiBgU2V0VXAoKWAgLiBUbyBsZWFybiB3aGVuIHlvdSBzaG91bGQg
dXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIGFuZCB3aGVuIHlvdSBzaG91bGQgdXNlIGBT
ZXRVcCgpL1RlYXJEb3duKClgLCByZWFkIHRoaXMgW0ZBUSBlbnRyeV0oVjFfNl9GQVEubWQjc2hv
dWxkLWktdXNlLXRoZS1jb25zdHJ1Y3RvcmRlc3RydWN0b3Itb2YtdGhlLXRlc3QtZml4dHVyZS1v
ci10aGUtc2V0LXVwdGVhci1kb3duLWZ1bmN0aW9uKS4KLSAgMS4gSWYgbmVlZGVkLCBkZWZpbmUg
c3Vicm91dGluZXMgZm9yIHlvdXIgdGVzdHMgdG8gc2hhcmUuCi0KLVdoZW4gdXNpbmcgYSBmaXh0
dXJlLCB1c2UgYFRFU1RfRigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93cyB5b3Ug
dG8KLWFjY2VzcyBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0dXJlOgot
YGBgCi1URVNUX0YodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgewotIC4uLiB0ZXN0IGJvZHkg
Li4uCi19Ci1gYGAKLQotTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSB0
ZXN0IGNhc2UgbmFtZSwgYnV0IGZvciBgVEVTVF9GKClgCi10aGlzIG11c3QgYmUgdGhlIG5hbWUg
b2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6IGBfRmAK
LWlzIGZvciBmaXh0dXJlLgotCi1VbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5c3RlbSBk
b2VzIG5vdCBhbGxvdyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KLXRoYXQgY2FuIGhhbmRs
ZSBib3RoIHR5cGVzIG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2VzIGEgY29t
cGlsZXIKLWVycm9yLgotCi1BbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0IGZpeHR1
cmUgY2xhc3MgYmVmb3JlIHVzaW5nIGl0IGluIGEKLWBURVNUX0YoKWAsIG9yIHlvdSdsbCBnZXQg
dGhlIGNvbXBpbGVyIGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCi1kZWNsYXJhdGlvbmAi
LgotCi1Gb3IgZWFjaCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgLCBHb29nbGUgVGVzdCB3
aWxsOgotICAxLiBDcmVhdGUgYSBfZnJlc2hfIHRlc3QgZml4dHVyZSBhdCBydW50aW1lCi0gIDEu
IEltbWVkaWF0ZWx5IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsCi0gIDEuIFJ1biB0aGUg
dGVzdAotICAxLiBDbGVhbiB1cCBieSBjYWxsaW5nIGBUZWFyRG93bigpYAotICAxLiBEZWxldGUg
dGhlIHRlc3QgZml4dHVyZS4gIE5vdGUgdGhhdCBkaWZmZXJlbnQgdGVzdHMgaW4gdGhlIHNhbWUg
dGVzdCBjYXNlIGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQgR29vZ2xl
IFRlc3QgYWx3YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0ZXMgdGhl
IG5leHQgb25lLiBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1
cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBBbnkgY2hhbmdlcyBvbmUgdGVzdCBtYWtlcyB0byB0aGUg
Zml4dHVyZSBkbyBub3QgYWZmZWN0IG90aGVyIHRlc3RzLgotCi1BcyBhbiBleGFtcGxlLCBsZXQn
cyB3cml0ZSB0ZXN0cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1ZWAsIHdoaWNo
Ci1oYXMgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6Ci1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBF
PiAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCi1jbGFzcyBRdWV1ZSB7Ci0gcHVibGljOgotICBR
dWV1ZSgpOwotICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7Ci0gIEUqIERlcXVldWUo
KTsgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgc2l6ZV90IHNpemUo
KSBjb25zdDsKLSAgLi4uCi19OwotYGBgCi0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNz
LiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKLWBGb29UZXN0YCB3
aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgotYGBgCi1jbGFzcyBRdWV1ZVRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKLSAgICBxMV8uRW5xdWV1ZSgxKTsKLSAgICBxMl8uRW5xdWV1ZSgyKTsKLSAg
ICBxMl8uRW5xdWV1ZSgzKTsKLSAgfQotCi0gIC8vIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9
Ci0KLSAgUXVldWU8aW50PiBxMF87Ci0gIFF1ZXVlPGludD4gcTFfOwotICBRdWV1ZTxpbnQ+IHEy
XzsKLX07Ci1gYGAKLQotSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5lZWRlZCBz
aW5jZSB3ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCi1lYWNoIHRlc3QsIG90aGVyIHRo
YW4gd2hhdCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KLQotTm93IHdlJ2xsIHdy
aXRlIHRlc3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KLWBgYAotVEVTVF9G
KFF1ZXVlVGVzdCwgSXNFbXB0eUluaXRpYWxseSkgewotICBFWFBFQ1RfRVEoMCwgcTBfLnNpemUo
KSk7Ci19Ci0KLVRFU1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3JrcykgewotICBpbnQqIG4gPSBx
MF8uRGVxdWV1ZSgpOwotICBFWFBFQ1RfRVEoTlVMTCwgbik7Ci0KLSAgbiA9IHExXy5EZXF1ZXVl
KCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgxLCAqbik7Ci0gIEVY
UEVDVF9FUSgwLCBxMV8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci0KLSAgbiA9IHEyXy5EZXF1ZXVl
KCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgyLCAqbik7Ci0gIEVY
UEVDVF9FUSgxLCBxMl8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci19Ci1gYGAKLQotVGhlIGFib3Zl
IHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRoZSBydWxl
IG9mIHRodW1iIGlzCi10byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0ZXN0IHRv
IGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycwotYWZ0ZXIgdGhlIGFzc2VydGlvbiBmYWls
dXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1cmUKLWRv
ZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9uIGluIHRo
ZSBgRGVxdWV1ZWAgdGVzdCBpcwotYEFTU0VSVF9UUlVFKG4gIT0gTlVMTClgLCBhcyB3ZSBuZWVk
IHRvIGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwKLXdoaWNoIHdvdWxkIGxlYWQg
dG8gYSBzZWdmYXVsdCB3aGVuIGBuYCBpcyBgTlVMTGAuCi0KLVdoZW4gdGhlc2UgdGVzdHMgcnVu
LCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6Ci0gIDEuIEdvb2dsZSBUZXN0IGNvbnN0cnVjdHMgYSBg
UXVldWVUZXN0YCBvYmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCApLgotICAxLiBgdDEuU2V0VXAo
KWAgaW5pdGlhbGl6ZXMgYHQxYCAuCi0gIDEuIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1wdHlJbml0
aWFsbHlgICkgcnVucyBvbiBgdDFgIC4KLSAgMS4gYHQxLlRlYXJEb3duKClgIGNsZWFucyB1cCBh
ZnRlciB0aGUgdGVzdCBmaW5pc2hlcy4KLSAgMS4gYHQxYCBpcyBkZXN0cnVjdGVkLgotICAxLiBU
aGUgYWJvdmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAgb2JqZWN0
LCB0aGlzIHRpbWUgcnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2AgdGVzdC4KLQotX0F2YWlsYWJp
bGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLV9Ob3RlXzogR29vZ2xlIFRlc3QgYXV0b21h
dGljYWxseSBzYXZlcyBhbGwgX0dvb2dsZSBUZXN0XyBmbGFncyB3aGVuIGEgdGVzdAotb2JqZWN0
IGlzIGNvbnN0cnVjdGVkLCBhbmQgcmVzdG9yZXMgdGhlbSB3aGVuIGl0IGlzIGRlc3RydWN0ZWQu
Ci0KLSMgSW52b2tpbmcgdGhlIFRlc3RzICMKLQotYFRFU1QoKWAgYW5kIGBURVNUX0YoKWAgaW1w
bGljaXRseSByZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiBTbywgdW5saWtl
IHdpdGggbWFueSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3QgaGF2ZSB0
byByZS1saXN0IGFsbCB5b3VyIGRlZmluZWQgdGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRoZW0uCi0K
LUFmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBgUlVOX0FM
TF9URVNUUygpYCAsIHdoaWNoIHJldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJlIHN1Y2Nl
c3NmdWwsIG9yIGAxYCBvdGhlcndpc2UuIE5vdGUgdGhhdCBgUlVOX0FMTF9URVNUUygpYCBydW5z
IF9hbGwgdGVzdHNfIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20gZGlmZmVy
ZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQotV2hlbiBp
bnZva2VkLCB0aGUgYFJVTl9BTExfVEVTVFMoKWAgbWFjcm86Ci0gIDEuIFNhdmVzIHRoZSBzdGF0
ZSBvZiBhbGwgIEdvb2dsZSBUZXN0IGZsYWdzLgotICAxLiBDcmVhdGVzIGEgdGVzdCBmaXh0dXJl
IG9iamVjdCBmb3IgdGhlIGZpcnN0IHRlc3QuCi0gIDEuIEluaXRpYWxpemVzIGl0IHZpYSBgU2V0
VXAoKWAuCi0gIDEuIFJ1bnMgdGhlIHRlc3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0LgotICAxLiBD
bGVhbnMgdXAgdGhlIGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KLSAgMS4gRGVsZXRlcyB0aGUg
Zml4dHVyZS4KLSAgMS4gUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBHb29nbGUgVGVzdCBmbGFn
cy4KLSAgMS4gUmVwZWF0cyB0aGUgYWJvdmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3QsIHVudGls
IGFsbCB0ZXN0cyBoYXZlIHJ1bi4KLQotSW4gYWRkaXRpb24sIGlmIHRoZSB0ZXh0IGZpeHR1cmUn
cyBjb25zdHJ1Y3RvciBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGluCi1zdGVwIDIsIHRoZXJl
IGlzIG5vIHBvaW50IGZvciBzdGVwIDMgLSA1IGFuZCB0aGV5IGFyZSB0aHVzIHNraXBwZWQuIFNp
bWlsYXJseSwKLWlmIHN0ZXAgMyBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCBzdGVwIDQgd2ls
bCBiZSBza2lwcGVkLgotCi1fSW1wb3J0YW50XzogWW91IG11c3Qgbm90IGlnbm9yZSB0aGUgcmV0
dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLCBvciBgZ2NjYAotd2lsbCBnaXZlIHlvdSBh
IGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0IHRo
ZQotYXV0b21hdGVkIHRlc3Rpbmcgc2VydmljZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0ZXN0IGhh
cyBwYXNzZWQgYmFzZWQgb24gaXRzCi1leGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0L3N0ZGVy
ciBvdXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Ci1yZXR1cm4gdGhlIHZh
bHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLgotCi1BbHNvLCB5b3Ugc2hvdWxkIGNhbGwgYFJVTl9B
TExfVEVTVFMoKWAgb25seSAqKm9uY2UqKi4gQ2FsbGluZyBpdCBtb3JlIHRoYW4gb25jZQotY29u
ZmxpY3RzIHdpdGggc29tZSBhZHZhbmNlZCBHb29nbGUgVGVzdCBmZWF0dXJlcyAoZS5nLiB0aHJl
YWQtc2FmZSBkZWF0aAotdGVzdHMpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLV9BdmFp
bGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIFdyaXRpbmcgdGhlIG1haW4oKSBG
dW5jdGlvbiAjCi0KLVlvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgotYGBgCi0j
aW5jbHVkZSAidGhpcy9wYWNrYWdlL2Zvby5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0K
LW5hbWVzcGFjZSB7Ci0KLS8vIFRoZSBmaXh0dXJlIGZvciB0ZXN0aW5nIGNsYXNzIEZvby4KLWNs
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8v
IFlvdSBjYW4gcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaWYg
aXRzIGJvZHkKLSAgLy8gaXMgZW1wdHkuCi0KLSAgRm9vVGVzdCgpIHsKLSAgICAvLyBZb3UgY2Fu
IGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KLSAgfQotCi0gIHZpcnR1YWwgfkZv
b1Rlc3QoKSB7Ci0gICAgLy8gWW91IGNhbiBkbyBjbGVhbi11cCB3b3JrIHRoYXQgZG9lc24ndCB0
aHJvdyBleGNlcHRpb25zIGhlcmUuCi0gIH0KLQotICAvLyBJZiB0aGUgY29uc3RydWN0b3IgYW5k
IGRlc3RydWN0b3IgYXJlIG5vdCBlbm91Z2ggZm9yIHNldHRpbmcgdXAKLSAgLy8gYW5kIGNsZWFu
aW5nIHVwIGVhY2ggdGVzdCwgeW91IGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgot
Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxs
ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIChyaWdodAotICAgIC8vIGJlZm9y
ZSBlYWNoIHRlc3QpLgotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8v
IENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIHRlc3QgKHJp
Z2h0Ci0gICAgLy8gYmVmb3JlIHRoZSBkZXN0cnVjdG9yKS4KLSAgfQotCi0gIC8vIE9iamVjdHMg
ZGVjbGFyZWQgaGVyZSBjYW4gYmUgdXNlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBm
b3IgRm9vLgotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2QgZG9lcyBB
YmMuCi1URVNUX0YoRm9vVGVzdCwgTWV0aG9kQmFyRG9lc0FiYykgewotICBjb25zdCBzdHJpbmcg
aW5wdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxlLmRhdCI7
Ci0gIGNvbnN0IHN0cmluZyBvdXRwdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRh
L215b3V0cHV0ZmlsZS5kYXQiOwotICBGb28gZjsKLSAgRVhQRUNUX0VRKDAsIGYuQmFyKGlucHV0
X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGb28gZG9l
cyBYeXouCi1URVNUX0YoRm9vVGVzdCwgRG9lc1h5eikgewotICAvLyBFeGVyY2lzZXMgdGhlIFh5
eiBmZWF0dXJlIG9mIEZvby4KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBh
cmdjLCBjaGFyICoqYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGUgYDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9y
IEdvb2dsZQotVGVzdCBmbGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxhZ3MuIFRo
aXMgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbnRyb2wgYQotdGVzdCBwcm9ncmFtJ3MgYmVoYXZpb3Ig
dmlhIHZhcmlvdXMgZmxhZ3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluIFtBZHZhbmNlZEd1aWRlXShW
MV82X0FkdmFuY2VkR3VpZGUubWQpLgotWW91IG11c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9y
ZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLCBvciB0aGUgZmxhZ3MKLXdvbid0IGJlIHByb3Bl
cmx5IGluaXRpYWxpemVkLgotCi1PbiBXaW5kb3dzLCBgSW5pdEdvb2dsZVRlc3QoKWAgYWxzbyB3
b3JrcyB3aXRoIHdpZGUgc3RyaW5ncywgc28gaXQgY2FuIGJlIHVzZWQKLWluIHByb2dyYW1zIGNv
bXBpbGVkIGluIGBVTklDT0RFYCBtb2RlIGFzIHdlbGwuCi0KLUJ1dCBtYXliZSB5b3UgdGhpbmsg
dGhhdCB3cml0aW5nIGFsbCB0aG9zZSBtYWluKCkgZnVuY3Rpb25zIGlzIHRvbyBtdWNoIHdvcms/
IFdlIGFncmVlIHdpdGggeW91IGNvbXBsZXRlbHkgYW5kIHRoYXQncyB3aHkgR29vZ2xlIFRlc3Qg
cHJvdmlkZXMgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBtYWluKCkuIElmIGl0IGZpdHMgeW91
ciBuZWVkcywgdGhlbiBqdXN0IGxpbmsgeW91ciB0ZXN0IHdpdGggZ3Rlc3RcX21haW4gbGlicmFy
eSBhbmQgeW91IGFyZSBnb29kIHRvIGdvLgotCi0jIyBJbXBvcnRhbnQgbm90ZSBmb3IgVmlzdWFs
IEMrKyB1c2VycyAjIwotSWYgeW91IHB1dCB5b3VyIHRlc3RzIGludG8gYSBsaWJyYXJ5IGFuZCB5
b3VyIGBtYWluKClgIGZ1bmN0aW9uIGlzIGluIGEgZGlmZmVyZW50IGxpYnJhcnkgb3IgaW4geW91
ciAuZXhlIGZpbGUsIHRob3NlIHRlc3RzIHdpbGwgbm90IHJ1bi4gVGhlIHJlYXNvbiBpcyBhIFti
dWddKGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL2ZlZWRiYWNrL3ZpZXdmZWVkYmFjay5h
c3B4P0ZlZWRiYWNrSUQ9MjQ0NDEwJnNpdGVpZD0yMTApIGluIFZpc3VhbCBDKysuIFdoZW4geW91
IGRlZmluZSB5b3VyIHRlc3RzLCBHb29nbGUgVGVzdCBjcmVhdGVzIGNlcnRhaW4gc3RhdGljIG9i
amVjdHMgdG8gcmVnaXN0ZXIgdGhlbS4gVGhlc2Ugb2JqZWN0cyBhcmUgbm90IHJlZmVyZW5jZWQg
ZnJvbSBlbHNld2hlcmUgYnV0IHRoZWlyIGNvbnN0cnVjdG9ycyBhcmUgc3RpbGwgc3VwcG9zZWQg
dG8gcnVuLiBXaGVuIFZpc3VhbCBDKysgbGlua2VyIHNlZXMgdGhhdCBub3RoaW5nIGluIHRoZSBs
aWJyYXJ5IGlzIHJlZmVyZW5jZWQgZnJvbSBvdGhlciBwbGFjZXMgaXQgdGhyb3dzIHRoZSBsaWJy
YXJ5IG91dC4gWW91IGhhdmUgdG8gcmVmZXJlbmNlIHlvdXIgbGlicmFyeSB3aXRoIHRlc3RzIGZy
b20geW91ciBtYWluIHByb2dyYW0gdG8ga2VlcCB0aGUgbGlua2VyIGZyb20gZGlzY2FyZGluZyBp
dC4gSGVyZSBpcyBob3cgdG8gZG8gaXQuIFNvbWV3aGVyZSBpbiB5b3VyIGxpYnJhcnkgY29kZSBk
ZWNsYXJlIGEgZnVuY3Rpb246Ci1gYGAKLV9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgUHVsbElu
TXlMaWJyYXJ5KCkgeyByZXR1cm4gMDsgfQotYGBgCi1JZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW4g
YSBzdGF0aWMgbGlicmFyeSAobm90IERMTCkgdGhlbiBgX19kZWNsc3BlYyhkbGxleHBvcnQpYCBp
cyBub3QgcmVxdWlyZWQuIE5vdywgaW4geW91ciBtYWluIHByb2dyYW0sIHdyaXRlIGEgY29kZSB0
aGF0IGludm9rZXMgdGhhdCBmdW5jdGlvbjoKLWBgYAotaW50IFB1bGxJbk15TGlicmFyeSgpOwot
c3RhdGljIGludCBkdW1teSA9IFB1bGxJbk15TGlicmFyeSgpOwotYGBgCi1UaGlzIHdpbGwga2Vl
cCB5b3VyIHRlc3RzIHJlZmVyZW5jZWQgYW5kIHdpbGwgbWFrZSB0aGVtIHJlZ2lzdGVyIHRoZW1z
ZWx2ZXMgYXQgc3RhcnR1cC4KLQotSW4gYWRkaXRpb24sIGlmIHlvdSBkZWZpbmUgeW91ciB0ZXN0
cyBpbiBhIHN0YXRpYyBsaWJyYXJ5LCBhZGQgYC9PUFQ6Tk9SRUZgIHRvIHlvdXIgbWFpbiBwcm9n
cmFtIGxpbmtlciBvcHRpb25zLiBJZiB5b3UgdXNlIE1TVkMrKyBJREUsIGdvIHRvIHlvdXIgLmV4
ZSBwcm9qZWN0IHByb3BlcnRpZXMvQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzL0xpbmtlci9PcHRp
bWl6YXRpb24gYW5kIHNldCBSZWZlcmVuY2VzIHNldHRpbmcgdG8gYEtlZXAgVW5yZWZlcmVuY2Vk
IERhdGEgKC9PUFQ6Tk9SRUYpYC4gVGhpcyB3aWxsIGtlZXAgVmlzdWFsIEMrKyBsaW5rZXIgZnJv
bSBkaXNjYXJkaW5nIGluZGl2aWR1YWwgc3ltYm9scyBnZW5lcmF0ZWQgYnkgeW91ciB0ZXN0cyBm
cm9tIHRoZSBmaW5hbCBleGVjdXRhYmxlLgotCi1UaGVyZSBpcyBvbmUgbW9yZSBwaXRmYWxsLCB0
aG91Z2guIElmIHlvdSB1c2UgR29vZ2xlIFRlc3QgYXMgYSBzdGF0aWMgbGlicmFyeSAodGhhdCdz
IGhvdyBpdCBpcyBkZWZpbmVkIGluIGd0ZXN0LnZjcHJvaikgeW91ciB0ZXN0cyBtdXN0IGFsc28g
cmVzaWRlIGluIGEgc3RhdGljIGxpYnJhcnkuIElmIHlvdSBoYXZlIHRvIGhhdmUgdGhlbSBpbiBh
IERMTCwgeW91IF9tdXN0XyBjaGFuZ2UgR29vZ2xlIFRlc3QgdG8gYnVpbGQgaW50byBhIERMTCBh
cyB3ZWxsLiBPdGhlcndpc2UgeW91ciB0ZXN0cyB3aWxsIG5vdCBydW4gY29ycmVjdGx5IG9yIHdp
bGwgbm90IHJ1biBhdCBhbGwuIFRoZSBnZW5lcmFsIGNvbmNsdXNpb24gaGVyZSBpczogbWFrZSB5
b3VyIGxpZmUgZWFzaWVyIC0gZG8gbm90IHdyaXRlIHlvdXIgdGVzdHMgaW4gbGlicmFyaWVzIQot
Ci0jIFdoZXJlIHRvIEdvIGZyb20gSGVyZSAjCi0KLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxl
YXJuZWQgdGhlIEdvb2dsZSBUZXN0IGJhc2ljcy4gWW91IGNhbiBzdGFydCB3cml0aW5nCi1hbmQg
cnVubmluZyBHb29nbGUgVGVzdCB0ZXN0cywgcmVhZCBzb21lIFtzYW1wbGVzXShWMV82X1NhbXBs
ZXMubWQpLCBvciBjb250aW51ZSB3aXRoCi1bQWR2YW5jZWRHdWlkZV0oVjFfNl9BZHZhbmNlZEd1
aWRlLm1kKSwgd2hpY2ggZGVzY3JpYmVzIG1hbnkgbW9yZSB1c2VmdWwgR29vZ2xlIFRlc3QgZmVh
dHVyZXMuCi0KLSMgS25vd24gTGltaXRhdGlvbnMgIwotCi1Hb29nbGUgVGVzdCBpcyBkZXNpZ25l
ZCB0byBiZSB0aHJlYWQtc2FmZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcwotdGhyZWFkLXNhZmUg
b24gc3lzdGVtcyB3aGVyZSB0aGUgYHB0aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gIEl0
Ci1pcyBjdXJyZW50bHkgX3Vuc2FmZV8gdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJv
bSB0d28gdGhyZWFkcwotY29uY3VycmVudGx5IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93
cykuICBJbiBtb3N0IHRlc3RzIHRoaXMgaXMKLW5vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5IHRoZSBh
c3NlcnRpb25zIGFyZSBkb25lIGluIHRoZSBtYWluIHRocmVhZC4gSWYKLXlvdSB3YW50IHRvIGhl
bHAsIHlvdSBjYW4gdm9sdW50ZWVyIHRvIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5Ci1zeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcyBpbiBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9QdW1wTWFudWFsLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV82X1B1bXBNYW51YWwubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDgxODRmMTUzY2EyZWNhZDdjNjVjYjU4YzI3ZmIzMWJkNzIzNzVmZWUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82
X1B1bXBNYW51YWwubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotCi0KLTxiPlA8
L2I+dW1wIGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWlu
Zy4KLQotIyBUaGUgUHJvYmxlbSAjCi0KLVRlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0
ZW4gbmVlZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAotZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhh
dCB2YXJ5IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCi1hcmd1bWVudHMg
dGhleSB0YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAotZXJy
b3ItcHJvbmUgd29yay4KLQotVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3Mg
Y2FuIGFsbGV2aWF0ZSB0aGUgcHJvYmxlbS4KLUhvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5n
IGNvbnNpZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKLWlzIGluIHRoZSBzdGFu
ZGFyZCB5ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKLWFy
ZSBvZnRlbiBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVk
cyB0byBiZQotcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0
ZWQuCi0KLUFzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUg
dG8gd3JpdGUgc2NyaXB0cyB0bwotZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2
ZXIsIG91ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwotdGVkaW91cyB0byB3cml0ZSBzdWNoIHNj
cmlwdHMsIHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCi10aGUgZ2VuZXJh
dGVkIGNvZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IK
LWV4YW1wbGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5
IHJlcXVpcmUgc29tZQotbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUg
c2NyaXB0LiBUaGlzIGlzIGVzcGVjaWFsbHkKLXBhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdp
dGggdGhlIGNvZGUuCi0KLSMgT3VyIFNvbHV0aW9uICMKLQotUHVtcCAoZm9yIFB1bXAgaXMgVXNl
ZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCi1Qcm9ncmFt
bWluZywgb3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZl
ciB5b3UKLXByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysu
IFRoZSBpZGVhIGlzIHRoYXQgYQotcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUg
d2hpY2ggY29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCi1jb2RlIHRoYXQgbWFuaXB1bGF0ZXMg
dGhlIEMrKyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKLWl0ZXJhdGlvbnMgb3ZlciBh
IHJhbmdlLCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQotZGVmaW5pdGlv
bnMsIHNpbXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBj
YW4KLXZpZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRh
IGxhbmd1YWdlIGlzCi1kZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0
IGNvbmZ1c2UgRW1hY3MnIEMrKyBtb2RlLAotZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtp
bmcgUHVtcCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bwotbWFpbnRhaW4uCi0KLSMjIEhpZ2hs
aWdodHMgIyMKLQotICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24g
c2NyaXB0IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24g
aXMgbmVlZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCi0gICogUHVtcCB0cmllcyB0
byBiZSBzbWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGlu
ZXMgKGVhc3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBw
bGFjZXMgdG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlv
biBsaW5lcyBjb3JyZWN0bHkuCi0gICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQg
bW9yZSBjb25jaXNlIHRoYW4gWE1MLgotICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3
ZWxsIHdpdGggRW1hY3MnIEMrKyBtb2RlLgotCi0jIyBFeGFtcGxlcyAjIwotCi1UaGUgZm9sbG93
aW5nIFB1bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBh
bmQgYF1dYCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50
IHRoYXQgZW5kcyB3aXRoIHRoZSBsaW5lKToKLQotYGBgCi0kdmFyIG4gPSAzICAgICAkJCBEZWZp
bmVzIGEgbWV0YSB2YXJpYWJsZSBuLgotJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJh
bmdlIG9mIG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KLSRmb3IgaSBbWwotICAgICAgICAg
ICAgICAgJCQgTWV0YSBsb29wLgotLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGlj
YXRlcy4KLSRyYW5nZSBqIDEuLmkKLXRlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVu
YW1lIEEkal1dPgotY2xhc3MgRm9vJGkgewotJGlmIGkgPT0gMCBbWwotICBibGFoIGE7Ci1dXSAk
ZWxpZiBpIDw9IDIgW1sKLSAgYmxhaCBiOwotXV0gJGVsc2UgW1sKLSAgYmxhaCBjOwotXV0KLX07
Ci0KLV1dCi1gYGAKLQotd2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRv
OgotCi1gYGAKLS8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxh
dGUgPHNpemVfdCBOPgotY2xhc3MgRm9vMCB7Ci0gIGJsYWggYTsKLX07Ci0KLS8vIEZvbzEgZG9l
cyBibGFoIGZvciAxLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFt
ZSBBMT4KLWNsYXNzIEZvbzEgewotICBibGFoIGI7Ci19OwotCi0vLyBGb28yIGRvZXMgYmxhaCBm
b3IgMi1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyPgotY2xhc3MgRm9vMiB7Ci0gIGJsYWggYjsKLX07Ci0KLS8vIEZvbzMgZG9lcyBi
bGFoIGZvciAzLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotY2xhc3MgRm9vMyB7Ci0gIGJsYWggYzsKLX07
Ci1gYGAKLQotSW4gYW5vdGhlciBleGFtcGxlLAotCi1gYGAKLSRyYW5nZSBpIDEuLm4KLUZ1bmMo
JGZvciBpICsgW1thJGldXSk7Ci0kJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBz
ZXBhcmF0b3IgYmV0d2VlbiBpdGVyYXRpb25zLgotYGBgCi0KLXdpbGwgZ2VuZXJhdGUgb25lIG9m
IHRoZSBmb2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZSBvZiBgbmA6Ci0KLWBgYAotRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBp
cyAwLgotRnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgotRnVuYyhhMSArIGEyKTsg
ICAgICAgLy8gSWYgbiBpcyAyLgotRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgot
Ly8gQW5kIHNvIG9uLi4uCi1gYGAKLQotIyMgQ29uc3RydWN0cyAjIwotCi1XZSBzdXBwb3J0IHRo
ZSBmb2xsb3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgotCi18IGAkdmFyIGlkID0g
ZXhwYCB8IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRp
bCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAotfDotLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYCRy
YW5nZSBpZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFi
bGUsIHdoaWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAg
IHwKLXwgYCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2Yg
YGlkYCBtdXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBj
b2RlYC4gICAgICAgICB8Ci18IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBg
JGAgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFt
ZWQgY29uc3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhl
IGV4cHJlc3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2hgIHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBbWyBj
b2RlIF1dYCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
Y3BwX2NvZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LXwgYCQkIGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8Ci0KLSoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0
aW5nIHRoZSBQdW1wIHNvdXJjZQotY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFj
dGVyIGlmIGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAotb3IgbmV4dCB0byBgW1tgIG9yIGBd
XWAuIFdpdGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKLXZl
cnkgbG9uZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRp
bWVzIHlvdSBtYXkKLW5lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxh
Y2VzIGZvciBhIG5ldy1saW5lIHRvIHNob3cKLXVwIGluIHlvdXIgb3V0cHV0LgotCi0jIyBHcmFt
bWFyICMjCi0KLWBgYAotY29kZSA6Oj0gYXRvbWljX2NvZGUqCi1hdG9taWNfY29kZSA6Oj0gJHZh
ciBpZCA9IGV4cAotICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KLSAgICB8ICRyYW5nZSBpZCBl
eHAuLmV4cAotICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQotICAgIHwgJCgkKQotICAgIHwg
JGlkCi0gICAgfCAkKGV4cCkKLSAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAot
ICAgIHwgW1sgY29kZSBdXQotICAgIHwgY3BwX2NvZGUKLXNlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0
eV9zdHJpbmcKLWVsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCi0gICAgfCAkZWxpZiBl
eHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAotICAgIHwgZW1wdHlfc3RyaW5nCi1leHAgOjo9IHNp
bXBsZV9leHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKLWBgYAotCi0jIyBDb2RlICMjCi0KLVlv
dSBjYW4gZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSgu
Li9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAotdmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNr
cyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCi1zdWNjZXNzZnVsbHkgdXNl
ZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgotcHJv
amVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21l
IGhlbHAgb24KLWltcHJvdmluZyBQdW1wLgotCi0jIyBSZWFsIEV4YW1wbGVzICMjCi0KLVlvdSBj
YW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2ds
ZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAl
MjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAg
VGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KLQotIyMgVGlw
cyAjIwotCi0gICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9y
IGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRz
IGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUg
YEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCi0gICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1w
IHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkg
aW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxp
bmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0
ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9TYW1wbGVz
Lm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjFkMjAwNTY3MzU0NTdmNmY0OWFl
Y2M2MTIxOWRhZDIyNjEyYmYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9TYW1wbGVzLm1kCisrKyAvZGV2L251bGwK
QEAgLTEsMTQgKzAsMCBAQAotSWYgeW91J3JlIGxpa2UgdXMsIHlvdSdkIGxpa2UgdG8gbG9vayBh
dCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAgVGhlCi1bc2FtcGxlcyBmb2xkZXJdKC4u
L3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRlZCBzYW1wbGVzIHNob3dpbmcg
aG93IHRvIHVzZSBhCi12YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZlYXR1cmVzLgotCi0gICogW1Nh
bXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjKSBzaG93cyB0aGUgYmFzaWMg
c3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVzdCBDKysgZnVuY3Rpb25zLgotICAqIFtT
YW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYykgc2hvd3MgYSBtb3JlIGNv
bXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlwbGUgbWVtYmVyIGZ1bmN0aW9u
cy4KLSAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3QuY2MpIHVzZXMg
YSB0ZXN0IGZpeHR1cmUuCi0gICogW1NhbXBsZSAjNF0oLi4vc2FtcGxlcy9zYW1wbGU0X3VuaXR0
ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNpbmcgR29vZ2xlIFRlc3QuCi0g
ICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKSB0ZWFjaGVzIGhv
dyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzIGJ5IGRlcml2
aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgotICAqIFtTYW1wbGUgIzZdKC4uL3NhbXBsZXMvc2Ft
cGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4K
LSAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MpIHRlYWNoZXMg
dGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotICAqIFtTYW1wbGUgIzhd
KC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgc2hvd3MgdXNpbmcgYENvbWJpbmUoKWAg
aW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSAgKiBbU2FtcGxlICM5XSguLi9zYW1wbGVz
L3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIgQVBJIHRvIG1v
ZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0aGUgdXNlIG9mIGl0cyByZWZs
ZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KLSAgKiBbU2FtcGxlICMxMF0oLi4v
c2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRoZSBsaXN0ZW5lciBB
UEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFrIGNoZWNrZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Rv
Y3MvVjFfNl9YY29kZUd1aWRlLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjI0
YmY1MWJmYzQ1NDEyZjY1OGJkZGQ1M2EzMzJlMTQ5ZDc3MzA5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9YY29kZUd1
aWRlLm1kCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotCi0KLVRoaXMgZ3VpZGUgd2ls
bCBleHBsYWluIGhvdyB0byB1c2UgdGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3Vy
IFhjb2RlIHByb2plY3RzIG9uIE1hYyBPUyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlj
a2x5IGV4cGxhaW5pbmcgd2hhdCB0byBkbyBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRo
ZSBxdWljayBzdGFydCwgdGhlIGd1aWRlIGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5h
dGlvbiBhYm91dCBlYWNoIHN0ZXAuCi0KLSMgUXVpY2sgU3RhcnQgIwotCi1IZXJlIGlzIHRoZSBx
dWljayBndWlkZSBmb3IgdXNpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0Lgot
Ci0gIDEuIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tv
dXQgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0
LXJlYWQtb25seWAKLSAgMS4gT3BlbiB1cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBn
b29nbGV0ZXN0LXJlYWQtb25seS94Y29kZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0
LmZyYW1ld29yay4KLSAgMS4gQ3JlYXRlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91
ciBYY29kZSBwcm9qZWN0IGNhbGxlZCBzb21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIgotICAxLiBB
ZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUg
IkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgot
ICAxLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJj
ZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCi0gIDEuIEVkaXQgdGhlICJVbml0VGVzdHMi
IGV4ZWN1dGFibGUgYW5kIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxf
RlJBTUVXT1JLXF9QQVRIIiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZy
YW1ld29yayBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNv
bXBpbGVkIGV4ZWN1dGFibGUuCi0gIDEuIEJ1aWxkIGFuZCBHbwotCi1UaGUgZm9sbG93aW5nIHNl
Y3Rpb25zIGZ1cnRoZXIgZXhwbGFpbiBlYWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4g
ZGVwdGgsIGRlc2NyaWJpbmcgaW4gbW9yZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1
ZGluZyBzb21lIHZhcmlhdGlvbnMuCi0KLSMgR2V0IHRoZSBTb3VyY2UgIwotCi1DdXJyZW50bHks
IHRoZSBndGVzdC5mcmFtZXdvcmsgZGlzY3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEg
dGFnZ2VkIHJlbGVhc2Ugb2YgR29vZ2xlIFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRo
ZSB0cnVuay4gQXMgZXhwbGFpbmVkIGF0IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvc291cmNlL2NoZWNrb3V0Ij5zdm4pLCB5b3UgY2Fu
IGdldCB0aGUgY29kZSBmcm9tIGFub255bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6Ci0KLWBg
YAotc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVu
ay8gZ29vZ2xldGVzdC1yZWFkLW9ubHkKLWBgYAotCi1BbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJl
IHdvcmtpbmcgd2l0aCBTdWJ2ZXJzaW9uIGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBh
ZGQgR29vZ2xlIFRlc3QgYXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2
ZXJzaW9uIHJlcG9zaXRvcnkuIEJ5IGZvbGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0
aGF0IGNoZWNrcyBvdXQgeW91ciBzdm4gcmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNv
cHkgb2YgR29vZ2xlIFRlc3QgKGEgc3BlY2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhv
dXQgaGF2aW5nIHRvIGNoZWNrIGl0IG91dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQg
dXAgb2YgeW91ciBwcm9qZWN0IHNpbXBsZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGlu
IHRoZSByZXBvc2l0b3J5LgotCi1UbyB1c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUg
eW91IHdvdWxkIGxpa2UgdG8gaGF2ZSB0aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1p
Z2h0IGNob29zZSB0byBwdXQgdGhlIGV4dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBi
ZWNhdXNlIHlvdSB3YW50IGl0IHRvIGJlIHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtl
IGEgcmVsZWFzZS4gSG93ZXZlciwga2VlcGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZl
cnNpb24tdGFnZ2VkIGRpcmVjdG9yeSBjYWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5
L2dvb2dsZXRlc3QvMS4wLjFgLCBpcyBhbm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24g
aXMgZXN0YWJsaXNoZWQsIHVzZSBgc3ZuIHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9y
eV9gIHRvIHNldCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5
b3VyIHJlcG9zaXRvcnkuIFRoaXMgZGlyZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1
dCBiZSBpdHMgdmVyc2lvbmVkIHBhcmVudCBkaXJlY3RvcnkuCi0KLVRoZSBjb21tYW5kIGBzdm4g
cHJvcGVkaXRgIHdpbGwgYnJpbmcgdXAgeW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVk
aXRpbmcgdGhlIGxvbmcsIChwb3RlbnRpYWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVy
LiBUaGlzIHNhbWUgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFu
Y2gsIGJ5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBVUkwgKGUuZy4gYGh0dHA6Ly9nb29nbGV0ZXN0
Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdzL3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0
aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBw
YXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRoZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24g
KGUuZy4gYGV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdv
b2dsZWNvZGUuY29tL3N2bi90cnVua2ApLgotCi1IZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcg
dGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydGllcyBvbiBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHBy
b3BnZXRgKSBvZiBhIHByb2plY3QuIFRoaXMgdmFsdWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29v
Z2xlIFRlc3QgaW50byB0aGUgYHRydW5rL2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVj
dG9yeS4KLQotYGBgCi1bQ29tcHV0ZXI6c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJu
YWxzIHRydW5rCi1leHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rCi1gYGAKLQotIyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3Vy
IFByb2plY3QgIwotCi1UaGUgbmV4dCBzdGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0
LmZyYW1ld29yayB0byB5b3VyIG93biBwcm9qZWN0LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28g
Y29tbW9uIHdheXMgYmVsb3cuCi0KLSAgKiAqKk9wdGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3
YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRvIHlvdXIgb3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rl
c3QueGNvZGVwcm9qIChmb3VuZCBpbiB0aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xl
IFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQg
dGhlIGJ1aWx0IGZyYW1ld29yayBpbnRvIHlvdXIgcHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhp
c3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9tIHRoZSBjb250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFk
ZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRh
YmxlIGFuZCBjb250YWlucyB0aGUgaGVhZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwg
bmVlZCB0byBtYWtlIHRlc3RzLiBUaGlzIG1ldGhvZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5
IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xlIFRlc3QgaW4geW91ciBwcm9qZWN0LgotICAqICoqT3B0
aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBnb2luZyB0byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBv
ZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3JhdGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91
ciB1bml0IHRlc3RzIChvciBhcmUgYSBHb29nbGUgVGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZ
b3UnbGwgd2FudCB0byByZWJ1aWxkIHRoZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNl
IHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlvdSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVw
cm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJv
amVjdC4gVGhlbiwgZnJvbSB0aGUgYnVpbGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkg
dGhlIHByb2plY3QncyBkaXNjbG9zdXJlIHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0
LmZyYW1ld29yaywgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2Vk
IGJlbG93KS4KLQotIyBNYWtlIGEgVGVzdCBUYXJnZXQgIwotCi1UbyBzdGFydCB3cml0aW5nIHRl
c3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRl
IGlzIGF2YWlsYWJsZSB1bmRlciBCU0QsIENvY29hLCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQg
dGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2Yg
dGhlIHRhcmdldC4KLQotTmV4dCwgeW91J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBp
biB0d28gZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hv
c2UgYWJvdmUuCi0KLSAgKiAqKk9wdGlvbiAxKiogLS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNv
ZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhhdCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rl
c3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5
IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdp
bGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRlc3QgaGVhZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2gg
cGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUgbGlua2VyIHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnku
Ci0gICogKipPcHRpb24gMioqIC0tLSBJZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywg
eW91J2xsIGFsc28gd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmlu
YXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBh
ZGRpdGlvbiwgeW91J2xsICB3YW50IHRvIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVw
ZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVzdCB0YXJnZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1h
a2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1ld29yayBpcyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlv
dXIgYnVpbGQgeW91ciB0YXJnZXQuIEZpbmFsbHksIGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBk
aXJlY3RvcmllcyB3aXRoIEdvb2dsZSBUZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVz
dC5mcmFtZXdvcmsgaW50byB5b3VyIG93biBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcg
YSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhhc2UuCi0KLSMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1
biBFbnZpcm9ubWVudCAjCi0KLVNpbmNlIHRoZSB1bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNo
ZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1l
d29ya3NgIGRpcmVjdG9yeSwgaW4gd2hpY2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0
ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIgbXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNo
IGZvciB0aGUgZnJhbWV3b3JrIGluIGFub3RoZXIgbG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29t
cGxpc2hlZCBieSBzZXR0aW5nIHRoZSAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQgQWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMg
dGFiLCB1bmRlciAiVmFyaWFibGVzIHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhl
IHBhdGggZm9yIHRoaXMgdmFsdWUgaXMgdGhlIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBv
ZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4KLQotSWYgeW91
IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91
IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgotCi1gYGAKLVtTZXNzaW9uIHN0YXJ0ZWQg
YXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAtMDYwMC5dCi0gIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRl
ZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
Z3Rlc3QKLSAgICBSZWZlcmVuY2VkIGZyb206IC9Vc2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2Fu
ZGJveC9ndGVzdFNhbXBsZS9idWlsZC9EZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0Ci0gICAgUmVh
c29uOiBpbWFnZSBub3QgZm91bmQKLWBgYAotCi1UbyBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ290
IHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVm
ZXJlbmNlZCBmcm9tOiIgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdp
dGggdGhlIHRlcm1pbmFsIGluIHRoaXMgbG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGgg
dG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMg
dGhlIHZhbHVlIHlvdSdsbCBuZWVkIHRvIHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRI
LgotCi0jIEJ1aWxkIGFuZCBHbyAjCi0KLU5vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBH
byIsIHRoZSB0ZXN0IHdpbGwgYmUgZXhlY3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtl
IHRoaXM6Ci0KLWBgYAotW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0w
NjAwLl0KLVs9PT09PT09PT09XSBSdW5uaW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KLVst
LS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0g
MiB0ZXN0cyBmcm9tIFdpZGdldEluaXRpYWxpemVyVGVzdAotWyBSVU4gICAgICBdIFdpZGdldElu
aXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKLVsgICAgICAgT0sgXSBXaWRnZXRJbml0aWFs
aXplclRlc3QuVGVzdENvbnN0cnVjdG9yCi1bIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb252ZXJzaW9uCi1bICAgICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRl
c3RDb252ZXJzaW9uCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1k
b3duCi1bPT09PT09PT09PV0gMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NF
RCAgXSAyIHRlc3RzLgotCi1UaGUgRGVidWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAg
Ci1gYGAKLQotIyBTdW1tYXJ5ICMKLQotVW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRv
IGVuc3VyZSB5b3VyIGRhdGEgbW9kZWwgc3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2
ZWxvcG1lbnQgb3IgcmVmYWN0b3JpbmcuIFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMg
YSBncmVhdCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdy
YXRlcyB3ZWxsIHdpdGggYW4gWGNvZGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X0Fk
dmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ0YWY4ZjM2NmFhNmFjYTgxNDQwZGJkNjY1
OWI1NGJlYWUzMTk5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZAorKysgL2Rldi9udWxs
CkBAIC0xLDIxODEgKzAsMCBAQAotCi0KLU5vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0o
VjFfN19QcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0ZXN0cwotdXNpbmcgR29v
Z2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1l
bnQKLXdpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0
cnVjdCBjb21wbGV4Ci1mYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMs
IHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCi10ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMg
ZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgotCi0jIE1vcmUgQXNzZXJ0aW9ucyAjCi0KLVRoaXMgc2Vj
dGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmlj
YW50LAotYXNzZXJ0aW9ucy4KLQotIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIwot
Ci1UaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3Ig
ZXhwcmVzc2lvbi4gSW5zdGVhZCwKLXRoZXkgZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUg
ZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Ci1wZXJmb3JtIGEgdGVzdCwg
eW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCi0K
LXwgYFNVQ0NFRUQoKTtgIHwKLXw6LS0tLS0tLS0tLS0tLXwKLQotR2VuZXJhdGVzIGEgc3VjY2Vz
cy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlz
Ci1jb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZh
aWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCi0KLU5vdGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBk
b2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Ci11c2VyLXZpc2li
bGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdv
b2dsZSBUZXN0J3MKLW91dHB1dCBpbiB0aGUgZnV0dXJlLgotCi18IGBGQUlMKCk7YCAgfCBgQURE
X0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxf
bnVtYmVyX2ApO2AgfAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotYEZBSUwo
KWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBg
QUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAotZmFpbHVyZS4gVGhlc2UgYXJl
IHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Np
b24sCi1kZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1w
bGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCi1zb21ldGhpbmcgbGlrZToKLQotYGBgCi1zd2l0
Y2goZXhwcmVzc2lvbikgewotICBjYXNlIDE6IC4uLiBzb21lIGNoZWNrcyAuLi4KLSAgY2FzZSAy
OiAuLi4gc29tZSBvdGhlciBjaGVja3MKLSAgLi4uCi0gIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ug
c2hvdWxkbid0IGdldCBoZXJlLiI7Ci19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCi0KLSMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCi0KLVRoZXNlIGFyZSBm
b3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QKLXRo
cm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6Ci0KLXwgKipGYXRhbCBhc3NlcnRp
b24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18
IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVY
UEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVt
ZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Ci18IGBBU1NFUlRf
QU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9U
SFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dz
IGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAotfCBgQVNTRVJUX05PX1RIUk9XKGBf
c3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRl
bWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55
IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJUX1RIUk9X
KEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7Ci0KLUVYUEVDVF9OT19USFJPVyh7Ci0gIGludCBuID0g
NTsKLSAgQmFyKCZuKTsKLX0pOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBm
b3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCi0KLUV2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhh
cyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCi1jb21wbGV0ZSwg
YXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRo
ZSBzY2VuYXJpb3MKLWEgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMg
YSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCi10byBjaGVjayBhIGNvbXBsZXggZXhw
cmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVt
Ci1vZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJl
c3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCi11bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMg
YSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCi1mYWlsdXJl
IG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClg
LiBIb3dldmVyLCB0aGlzCi1pcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lv
biBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bwotZXZhbHVhdGUuCi0KLUdvb2ds
ZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHBy
b2JsZW06Ci0KLSMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIwotCi1J
ZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBg
Ym9vbGAgKG9yIGEgdHlwZQotdGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJv
b2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCi1hc3NlcnRpb25fIHRvIGdldCB0
aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6Ci0KLXwgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Ci18IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVE
MShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Ci18IGBB
U1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3By
ZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUg
fAotfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4uLiAg
ICAgICAgICB8Ci0KLUluIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0
ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQotX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92
YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcwotaWYgdGhlIHBy
ZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50
cywgYW5kIGZhaWxzCi1vdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJp
bnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgotZWl0aGVyIGNhc2UsIHRoZSBhcmd1
bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi0KLUhlcmUncyBhbiBleGFtcGxlLiBH
aXZlbgotCi1gYGAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBk
aXZpc29ycyBleGNlcHQgMS4KLWJvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4u
IH0KLWNvbnN0IGludCBhID0gMzsKLWNvbnN0IGludCBiID0gNDsKLWNvbnN0IGludCBjID0gMTA7
Ci1gYGAKLQotdGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIp
O2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKLWFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVh
bGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKLQotPHByZT4KLSFN
dXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KLWIgaXMgNDxicj4KLWMgaXMg
MTA8YnI+Ci08L3ByZT4KLQotKipOb3RlczoqKgotCi0gIDEuIElmIHlvdSBzZWUgYSBjb21waWxl
ciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJU
X1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpc10oVjFfN19GQVEubWQj
dGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21l
LXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVzLWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10
aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9yIGhvdyB0byByZXNvbHZlIGl0LgotICAxLiBD
dXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9
IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCi0K
LV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjCi0KLSMjIyBVc2luZyBhIEZ1bmN0
aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgIyMjCi0KLVdoaWxlIGBFWFBFQ1Rf
UFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBhIHF1aWNrIGpvYiwgdGhlCi1zeW50
YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3Mg
Zm9yCi1kaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4g
QysrLiAgVGhlCi1gOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlz
IHByb2JsZW0uCi0KLUFuIGBBc3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSBy
ZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCi0od2hldGhlciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1
cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2UpLiAgWW91Ci1jYW4gY3JlYXRlIGFuIGBBc3Nl
cnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVzZSBmYWN0b3J5Ci1mdW5jdGlvbnM6Ci0KLWBg
YAotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBv
YmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBzdWNjZWVkZWQuCi1B
c3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0vLyBSZXR1cm5zIGFuIEFzc2Vy
dGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBm
YWlsZWQuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwotCi19Ci1gYGAKLQot
WW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8g
dGhlCi1gQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QuCi0KLVRvIHByb3ZpZGUgbW9yZSByZWFkYWJs
ZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMKLShlLmcuIGBFWFBFQ1RfVFJVRSgpYCks
IHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucwotYEFzc2VydGlvblJlc3Vs
dGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lCi1gSXNFdmVu
KClgIGFzOgotCi1gYGAKLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikg
ewotICBpZiAoKG4gJSAyKSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1
Y2Nlc3MoKTsKLSAgZWxzZQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUo
KSA8PCBuIDw8ICIgaXMgb2RkIjsKLX0KLWBgYAotCi1pbnN0ZWFkIG9mOgotCi1gYGAKLWJvb2wg
SXNFdmVuKGludCBuKSB7Ci0gIHJldHVybiAobiAlIDIpID09IDA7Ci19Ci1gYGAKLQotdGhlIGZh
aWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoK
LQotPHByZT4KLVZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKTxicj4KLUFjdHVhbDogZmFsc2UgKCoz
IGlzIG9kZCopPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotaW5zdGVhZCBvZiBh
IG1vcmUgb3BhcXVlCi0KLTxwcmU+Ci1WYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+Ci1BY3R1
YWw6IGZhbHNlPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotSWYgeW91IHdhbnQg
aW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0Vg
Ci1hcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIg
aW4gdGhlIHN1Y2Nlc3MKLWNhc2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgot
Ci1gYGAKLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAo
KG4gJSAyKSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8
PCBuIDw8ICIgaXMgZXZlbiI7Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotVGhlbiB0aGUgc3RhdGVt
ZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50Ci0KLTxwcmU+Ci1W
YWx1ZSBvZjogSXNFdmVuKEZpYig2KSk8YnI+Ci1BY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+
Ci1FeHBlY3RlZDogZmFsc2U8YnI+Ci08L3ByZT4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40LjEuCi0KLSMjIyBVc2luZyBhIFByZWRpY2F0
ZS1Gb3JtYXR0ZXIgIyMjCi0KLUlmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJh
dGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAotYChBU1NFUlR8RVhQRUNUKV8oVFJV
RXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCi1wcmVk
aWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0
ZWFkIHVzZSB0aGUKLWZvbGxvd2luZyBfcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0
byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCi1tZXNzYWdlIGlzIGZvcm1hdHRlZDoKLQotfCAq
KkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMq
KiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwx
X2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwx
X2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYEFTU0VSVF9Q
UkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BS
RURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3Jt
YXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYC4uLmAgICAgICAgICAgICAgICB8
IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgfAotCi1UaGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0
aGF0IGluc3RlYWQgb2YKLWEgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFU
KmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVyXwotKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNo
IGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6Ci0KLWA6OnRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhw
cjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAuLi4gY29uc3QgY2hhciogYF9leHBybl9gLCBU
MSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBUbiBgX3ZhbG5fYCk7YAotCi13aGVyZSBfdmFs
MV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNh
dGUKLWFyZ3VtZW50cywgYW5kIF9leHByMV8sIF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJl
IHRoZSBjb3JyZXNwb25kaW5nCi1leHByZXNzaW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291
cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZAotYFRuYCBjYW4gYmUgZWl0
aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCi1h
cmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9v
YCBvciBgY29uc3QgRm9vJmAsCi13aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCi0KLUEgcHJlZGlj
YXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmpl
Y3QgdG8gaW5kaWNhdGUKLXdoZXRoZXIgdGhlIGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5v
dC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNoIGFuCi1vYmplY3QgaXMgdG8gY2FsbCBvbmUg
b2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6Ci0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJv
dmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNl
cyBgRVhQRUNUX1BSRUQyKClgOgotCi1gYGAKLS8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1l
IGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCi0vLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0
dWFsbHkgcHJpbWUuCi1pbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBu
KSB7IC4uLiB9Ci0KLS8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQg
dHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewotICBp
ZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25T
dWNjZXNzKCk7Ci0KLSAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAg
ICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIg
PDwgbgotICAgICAgPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBo
YXZlIGEgY29tbW9uIGRpdmlzb3IgIgotICAgICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlz
b3IobSwgbik7Ci19Ci1gYGAKLQotV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNh
biB1c2UKLQotYGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIs
IGMpOwotYGBgCi0KLXRvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci1iIGFuZCBjICg0
IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRp
dmlzb3IgMi48YnI+Ci08L3ByZT4KLQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9m
IHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllciBhcmUKLXNwZWNpYWwgY2FzZXMg
b2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0g
YXJlCi1pbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAu
Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0KLSMjIEZsb2F0aW5n
LVBvaW50IENvbXBhcmlzb24gIyMKLQotQ29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMg
aXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMKLXZlcnkgdW5saWtlbHkg
dGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAot
YEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5k
IHNpbmNlIGZsb2F0aW5nLXBvaW50cwotY2FuIGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBz
aW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVyIHRvCi1jb21wYXJlIGJ5
IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRv
IDAgZHVlIHRvCi10aGUgbG9zcyBvZiBwcmVjaXNpb24gdGhlcmUuCi0KLUluIGdlbmVyYWwsIGZv
ciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRz
IHRvCi1jYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50
IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgotdGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxh
Y2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgR29vZ2xlIFRlc3QKLXByb3ZpZGVzIGFz
c2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxv
bmc7IGlmIHlvdQotd2FudCB0byBsZWFybiBtb3JlLCBzZWUKLVt0aGlzIGFydGljbGUgb24gZmxv
YXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21w
YXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bSkuCi0KLSMjIyBGbG9hdGluZy1Qb2ludCBN
YWNyb3MgIyMjCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3Rl
ZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7
YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Ci18IGBBU1NFUlRf
RE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9l
eHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0
IGVxdWFsIHwKLQotQnkgImFsbW9zdCBlcXVhbCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJl
IHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAotb3RoZXIuCi0KLVRoZSBmb2xsb3dpbmcgYXNzZXJ0
aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgotCi18
ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmll
cyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05FQVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2Ap
O2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZl
biBhYnNvbHV0ZSBlcnJvciB8Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCi0K
LVNvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQg
b2Z0ZW4gdXNlZC4gSW4gb3JkZXIKLXRvIGF2b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9z
LCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRlLWZvcm1hdAotZnVuY3Rpb25zIHRoYXQgY2Fu
IGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MgKGUuZy4KLWBFWFBFQ1RfUFJF
RF9GT1JNQVQyYCwgZXRjKS4KLQotYGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
RmxvYXRMRSwgdmFsMSwgdmFsMik7Ci1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91
YmxlTEUsIHZhbDEsIHZhbDIpOwotYGBgCi0KLVZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3Mg
dGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFsMl8uIFlvdSBjYW4KLXJlcGxhY2UgYEVYUEVD
VF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JN
QVQyYC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFdpbmRv
d3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCi0KLVRoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhS
RVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipO
b25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9I
UkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUND
RUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVT
VUxUYCB8Ci18IGBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBg
RVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25f
IGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAotCi1UaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlu
cyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZQotYXNzb2NpYXRlZCB3aXRoIHRoZSBg
SFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhwcmVzc2lvbl8uCi0KLVlvdSBtaWdodCB1c2Ug
dGhlbSBsaWtlIHRoaXM6Ci0KLWBgYAotQ0NvbVB0ciBzaGVsbDsKLUFTU0VSVF9IUkVTVUxUX1NV
Q0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7Ci1D
Q29tVmFyaWFudCBlbXB0eTsKLUFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxF
eGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7Ci1gYGAK
LQotX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCi0KLSMjIFR5cGUgQXNzZXJ0aW9ucyAjIwotCi1Z
b3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCi1gYGAKLTo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlw
ZUVxPFQxLCBUMj4oKTsKLWBgYAotdG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBh
cmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9lcwotbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9u
IGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LAotdGhlIGZ1bmN0aW9u
IGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2Fn
ZQotd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBh
Y3R1YWwgdmFsdWVzIG9mCi1gVDFgIGFuZCBgVDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGlu
c2lkZSB0ZW1wbGF0ZSBjb2RlLgotCi1fQ2F2ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJl
ciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRlIG9yIGEKLWZ1bmN0aW9uIHRlbXBsYXRlLCBg
U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwotdGhl
IGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZvciBleGFtcGxlLCBnaXZlbjoKLWBgYAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2b2lkIEJhcigpIHsg
Ojp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Ci19OwotYGBgCi10aGUg
Y29kZToKLWBgYAotdm9pZCBUZXN0MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQotYGBgCi13aWxsIF9u
b3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBu
ZXZlcgotYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAgSW5zdGVhZCwgeW91IG5lZWQ6Ci1gYGAKLXZv
aWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsgfQotYGBgCi10byBjYXVzZSBh
IGNvbXBpbGVyIGVycm9yLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsg
c2luY2UgdmVyc2lvbiAxLjMuMC4KLQotIyMgQXNzZXJ0aW9uIFBsYWNlbWVudCAjIwotCi1Zb3Ug
Y2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0
IGRvZXNuJ3QKLWhhdmUgdG8gYmUgYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4g
VGhlIG9uZSBjb25zdHJhaW50IGlzCi10aGF0IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZh
dGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NFUlRfKmApCi1jYW4gb25seSBiZSB1c2VkIGlu
IHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCi1Hb29n
bGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lk
IGZ1bmN0aW9uCi15b3UnbGwgZ2V0IGEgY29uZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQotYCJl
cnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBiZSJgLgotCi1JZiB5
b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24t
dm9pZCwgb25lIG9wdGlvbgotaXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1
ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgotZXhhbXBsZSwgeW91IGNhbiByZXdy
aXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQot
bmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2
YWx1ZSBldmVuIHdoZW4gdGhlCi1mdW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUg
ZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQotYW55IGFzc2VydGlvbiBp
bnNpZGUgb2YgaXQuCi0KLUlmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFu
IG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQotYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5v
bi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQKLWBFWFBFQ1RfKmAu
Ci0KLV9Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVy
ZWQgdm9pZC1yZXR1cm5pbmcKLWZ1bmN0aW9ucywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3Vh
Z2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZQotZmF0YWwgYXNzZXJ0aW9u
cyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBz
aW1wbGUKLXdvcmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBj
b25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEKLXByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0
aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAotYXNzZXJ0aW9u
IGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQg
dGVzdCwgYXMgeW91cgotaW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5z
IGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQotbGVhdmluZyB5b3VyIG9iamVj
dCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKLWFz
c2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4g
YQotcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBp
biB0aGVzZSBzaXR1YXRpb25zIQotCi0jIFRlYWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQcmlu
dCBZb3VyIFZhbHVlcyAjCi0KLVdoZW4gYSB0ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBFQ1Rf
RVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMgdGhlCi1hcmd1bWVudCB2YWx1ZXMgdG8gaGVs
cCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMgdXNpbmcgYQotdXNlci1leHRlbnNpYmxlIHZhbHVl
IHByaW50ZXIuCi0KLVRoaXMgcHJpbnRlciBrbm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4gQysr
IHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKLWNvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0aGF0
IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAgRm9yIG90aGVyCi10eXBlcywgaXQgcHJpbnRz
IHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKLXVzZXIg
Y2FuIGZpZ3VyZSBpdCBvdXQuCi0KLUFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRlciBp
cyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5zCi15b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEgYmV0
dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRpY3VsYXIgdHlwZQotdGhhbiB0byBkdW1wIHRo
ZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6Ci0KLWBgYAot
I2luY2x1ZGUgPGlvc3RyZWFtPgotCi1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgQmFyIHsgLi4u
IH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFuY2Vz
IG9mIHRoaXMuCi0KLS8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlzIGRl
ZmluZWQgaW4gdGhlIFNBTUUKLS8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysrJ3Mg
bG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCi06OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6
OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYgYmFyKSB7Ci0gIHJldHVybiBvcyA8PCBiYXIu
RGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBgCi0KLVNvbWV0aW1lcywgdGhpcyBtaWdodCBub3Qg
YmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5IGNvbnNpZGVyIGl0IGJhZAotc3R5bGUgdG8gaGF2
ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJgLCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZlIGEK
LWA8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3UgY2Fu
bm90IGNoYW5nZQotaXQpLiAgSWYgc28sIHlvdSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJpbnRU
bygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6Ci0KLWBgYAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi1u
YW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgQmFyIHsgLi4uIH07Ci0KLS8vIEl0J3MgaW1wb3J0YW50
IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKLS8vIG5hbWVzcGFjZSB0aGF0
IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCi12b2lkIFBy
aW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgYmFy
LkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCi19
Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1JZiB5b3UgaGF2ZSBkZWZpbmVkIGJvdGgg
YDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkCi13aGVuIEdvb2ds
ZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93IHRo
ZSB2YWx1ZQotYXBwZWFycyBpbiBHb29nbGUgVGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVjdGlu
ZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQotYmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0b3Iu
Ci0KLUlmIHlvdSB3YW50IHRvIHByaW50IGEgdmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0J3Mg
dmFsdWUgcHJpbnRlcgoteW91cnNlbGYsIGp1c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nKGBfeF9gKWAsIHdoaWNoCi1yZXR1cm5zIGFuIGBzdGQ6OnN0cmluZ2A6Ci0KLWBgYAotdmVj
dG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKLQotRVhQ
RUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9yKGJhcl9pbnRzKSkKLSAgICA8PCAiYmFyX2lu
dHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhiYXJfaW50cyk7Ci1gYGAKLQotIyBE
ZWF0aCBUZXN0cyAjCi0KLUluIG1hbnkgYXBwbGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0aW9u
cyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBmYWlsdXJlCi1pZiBhIGNvbmRpdGlvbiBpcyBu
b3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJvZ3Jh
bQotaXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUgZWFy
bGllc3QgcG9zc2libGUgdGltZSBhZnRlcgotc29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1cHRl
ZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhlIHdyb25nIGNvbmRpdGlvbiwKLXRoZW4gdGhl
IHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3VsZCBs
ZWFkIHRvIG1lbW9yeQotY29ycnVwdGlvbiwgc2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBIZW5j
ZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0ZXN0Ci10aGF0IHN1Y2ggYXNzZXJ0aW9uIHN0
YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KLQotU2luY2UgdGhlc2UgcHJlY29uZGl0aW9uIGNo
ZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCi1fZGVh
dGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBhIHBy
b2dyYW0gdGVybWluYXRlcwotKGV4Y2VwdCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGluIGFu
IGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCi0KLU5vdGUgdGhhdCBpZiBh
IHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIgaXQg
ImRlYXRoIgotZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVyIG9m
IHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBleGNlcHRpb24KLWFuZCBhdm9pZCB0aGUgY3Jhc2gu
IElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93biBieSB5b3VyIGNvZGUsCi1z
ZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgotCi1JZiB5
b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlvdXIg
dGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMpLgot
Ci0jIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0ICMjCi0KLUdvb2dsZSBUZXN0IGhhcyB0aGUg
Zm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgotCi18ICoqRmF0YWwgYXNz
ZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
fAotfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RFQVRI
KGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhlIGdp
dmVuIGVycm9yIHwKLXwgYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQsIHJl
Z2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9g
KTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0ZW1l
bnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBub3Ro
aW5nIHwKLXwgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2ApOyB8
IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0ZW1l
bnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNoZXMg
X3ByZWRpY2F0ZV8gfAotCi13aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0IGlz
IGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNzIHRvCi1kaWUsIF9wcmVkaWNhdGVfIGlzIGEg
ZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIKLWV4
aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRoZSBz
dGRlcnIgb3V0cHV0IG9mCi1fc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90ZSB0
aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZhbGlkCi1zdGF0ZW1lbnRfIChpbmNsdWRpbmcg
X2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KLWV4cHJlc3Np
b24uCi0KLUFzIHVzdWFsLCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJlbnQg
dGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCi1gRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCi0KLSoq
Tm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUgcHJv
Y2VzcwotdGVybWluYXRlcyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAgVGhl
cmUgYXJlIHR3bwotcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxsZWQg
YGV4aXQoKWAgb3IgYF9leGl0KClgCi13aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1heSBi
ZSBraWxsZWQgYnkgYSBzaWduYWwuCi0KLVRoaXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50XyB0
ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAwIGV4aXQKLWNvZGUsIGl0IGlzIF9ub3RfIGNv
bnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQotYEVYUEVDVF9FWElUYCBp
bnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0Ci10
aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5LgotCi1BIHByZWRpY2F0ZSBoZXJlIG11c3QgYWNj
ZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0Ci1zdWNjZWVk
cyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRlZmlu
ZXMgYSBmZXcKLXByZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2VzOgot
Ci1gYGAKLTo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQotYGBgCi0KLVRoaXMg
ZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdpdGgg
dGhlIGdpdmVuIGV4aXQKLWNvZGUuCi0KLWBgYAotOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChz
aWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotYGBgCi0KLVRoaXMg
ZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUgZ2l2
ZW4gc2lnbmFsLgotCi1UaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFwcGVy
cyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKLXRoYXQgdmVyaWZpZXMgdGhlIHBy
b2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4KLQotTm90ZSB0aGF0IGEgZGVhdGggdGVzdCBv
bmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoKLQotICAxLiBkb2VzIF9zdGF0ZW1lbnRfIGFi
b3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Ci0gIDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0VY
SVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9wcmVk
aWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNUX0RF
QVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCi0gIDEuIGRvZXMgdGhlIHN0
ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KLQotSW4gcGFydGljdWxhciwgaWYgX3N0YXRlbWVu
dF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3aWxs
ICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3QgYXNz
ZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4KLQotVG8gd3JpdGUgYSBkZWF0aCB0ZXN0
LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QKLWZ1
bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1URVNUKE15RGVhdGhUZXN0LCBGb28pIHsKLSAg
Ly8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCi0gIEFTU0VSVF9E
RUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCki
KTsKLX0KLVRFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKLSAgRVhQRUNUX0VYSVQoTm9y
bWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwotfQot
VEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgewotICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxm
KCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1
bmJsb2NrYWJsZSBzaWduYWwiKTsKLX0KLWBgYAotCi12ZXJpZmllcyB0aGF0OgotCi0gICogY2Fs
bGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVy
cm9yIG1lc3NhZ2UsCi0gICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nl
c3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2Rl
IDAsIGFuZAotICAqIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0
aCBzaWduYWwgYFNJR0tJTExgLgotCi1UaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250YWlu
IG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKLW5lY2Vzc2FyeS4K
LQotX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBj
b252ZW50aW9uIG9mIG5hbWluZyB5b3VyCi10ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVz
dGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCi1kZW1vbnN0cmF0ZWQgaW4gdGhl
IGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVs
b3cKLWV4cGxhaW5zIHdoeS4KLQotSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5
IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlvdQotY2FuIHVzZSB0eXBlZGVmIHRvIGlu
dHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCi1kdXBsaWNh
dGluZyBpdHMgY29kZToKLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgeyAuLi4gfTsKLQotdHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKLQotVEVTVF9GKEZv
b1Rlc3QsIERvZXNUaGlzKSB7Ci0gIC8vIG5vcm1hbCB0ZXN0Ci19Ci0KLVRFU1RfRihGb29EZWF0
aFRlc3QsIERvZXNUaGF0KSB7Ci0gIC8vIGRlYXRoIHRlc3QKLX0KLWBgYAotCi1fQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2lu
LCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4g
IGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4K
LQotIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheCAjIwotCi1PbiBQT1NJWCBzeXN0ZW1zIChl
LmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQotW1BPU0lY
IGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29u
bGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCi1z
eW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5
IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVz
c2lvbnMpLgotCi1PbiBXaW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJl
Z3VsYXIgZXhwcmVzc2lvbgotaW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMg
eW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVkCi1yZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9y
IGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAotZ3JvdXBpbmcgKGAi
KHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQKLShgInh7
NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKExldHRl
ciBgQWAgZGVub3RlcyBhCi1saXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kIChgLmApLCBvciBhIHNp
bmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhgCi1hbmQgYHlgIGRlbm90ZSByZWd1bGFyIGV4
cHJlc3Npb25zLik6Ci0KLXwgYGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNg
IHwKLXw6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYFxcZGAg
fCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAgICAgICAgfAotfCBgXFxEYCB8IG1hdGNoZXMg
YW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdCB8Ci18IGBcXGZgIHwgbWF0
Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcbmAgfCBtYXRjaGVzIGBcbmAg
ICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFxyYCB8IG1hdGNoZXMgYFxyYCAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBcXHNgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5j
bHVkaW5nIGBcbmAgfAotfCBgXFxTYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90
IGEgd2hpdGVzcGFjZSB8Ci18IGBcXHRgIHwgbWF0Y2hlcyBgXHRgICAgICAgICAgICAgICAgICAg
ICAgIHwKLXwgYFxcdmAgfCBtYXRjaGVzIGBcdmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
XFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0IHwKLXwgYFxc
V2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwKLXwg
YFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11c3QgYmUg
YSBwdW5jdHVhdGlvbiB8Ci18IGBcXC5gIHwgbWF0Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAgICAg
ICAgIHwKLXwgYC5gIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8
Ci18IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAotfCBgQSpgIHwg
bWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYEErYCB8IG1hdGNoZXMg
MSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8Ci18IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lu
bmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGAkYCB8IG1hdGNo
ZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGB4eWAg
fCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAgICAgICAgfAotCi1UbyBoZWxwIHlvdSBkZXRl
cm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0sCi1Hb29n
bGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNl
cyBQT1NJWAotZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lN
UExFX1JFPTFgIHdoZW4gaXQgdXNlcwotdGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQg
eW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJvdGgKLWNhc2VzLCB5b3UgY2FuIGVpdGhlciBg
I2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKLXN5bnRheCBvbmx5
LgotCi0jIyBIb3cgSXQgV29ya3MgIyMKLQotVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgp
YCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCi1kZWF0aCB0ZXN0IHN0YXRl
bWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKLXRo
YXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFibGUKLWA6OnRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXpl
ZCBmcm9tIHRoZQotY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWAp
LgotCi0gICogT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51
eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgotICAgICogSWYgdGhl
IHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBp
cyBpbW1lZGlhdGVseSBleGVjdXRlZC4KLSAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz
IGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0
ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNv
bWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIg
Y29uc2lkZXJhdGlvbiB0byBiZSBydW4uCi0gICogT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNw
YXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRo
ZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lk
ZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBP
U0lYLgotCi1PdGhlciB2YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2ls
bCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bwotZmFpbC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRl
ZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhlCi1yaWdodCB0
byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBu
b3QgZGVwZW5kIG9uCi10aGlzLgotCi1JbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNz
IHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0
Ci0KLSAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUs
IGFuZAotICAxLiB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNz
aW9uLgotCi1JZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdp
dGhvdXQgZHlpbmcsIHRoZSBjaGlsZAotcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0
ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCi0KLSMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRz
ICMjCi0KLVRoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRv
IHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCi13ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9y
a2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCi1iZSBy
dW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBp
c24ndCBmZWFzaWJsZSB0bwotYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBl
eGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKLW1heSBzdGFydCB0aHJlYWRz
IGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVh
dGVkLAotaXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAu
Ci0KLUdvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2Fy
ZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KLQotICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBp
ZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291
bnRlcmVkLgotICAxLiBUZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0
IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCi0gIDEuIEl0IHVzZXMgYGNsb25lKClg
IGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXgg
KGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmso
KWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFy
ZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVhZHMuCi0KLUl0J3MgcGVyZmVjdGx5IGZpbmUg
dG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJl
Ci1leGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBh
cmVudC4KLQotIyMgRGVhdGggVGVzdCBTdHlsZXMgIyMKLQotVGhlICJ0aHJlYWRzYWZlIiBkZWF0
aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhl
Ci1yaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVu
dC4gSXQgdHJhZGVzIGluY3JlYXNlZAotdGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkg
ZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KLVdlIHN1Z2dlc3Qg
dXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBo
YXMgc3BlY2lmaWMKLXByb2JsZW1zIHdpdGggaXQuCi0KLVlvdSBjYW4gY2hvb3NlIGEgcGFydGlj
dWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCi1wcm9ncmFtbWF0
aWNhbGx5OgotCi1gYGAKLTo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9
ICJ0aHJlYWRzYWZlIjsKLWBgYAotCi1Zb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0
IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3RzIGluIHRoZQotYmluYXJ5LCBvciBpbiBpbmRp
dmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcg
ZWFjaAotdGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRo
YXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgotCi1gYGAKLVRFU1QoTXlEZWF0aFRlc3QsIFRlc3RP
bmUpIHsKLSAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVh
ZHNhZmUiOwotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6
Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotVEVTVChNeURlYXRo
VGVzdCwgVGVzdFR3bykgewotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5
bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAi
ZmFzdCI7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgQ2F2ZWF0cyAj
IwotCi1UaGUgX3N0YXRlbWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBh
bnkgdmFsaWQgQysrIHN0YXRlbWVudC4KLUlmIGl0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlv
biB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAot
dGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xl
IFRlc3QgbWFjcm9zIG1heSByZXR1cm4KLWZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4g
YEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRf
LgotCi1TaW5jZSBfc3RhdGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4t
bWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCi1tb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5n
IG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCi1pbiB0aGUg
cGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBh
IGRlYXRoIHRlc3QsCi15b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRo
ZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNlZSB0aGUKLW1lbW9yeSByZWNsYWltZWQuIFRv
IHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgotCi0gIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1v
cnkgaW4gYSBkZWF0aCB0ZXN0OwotICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBh
cmVudCBwcm9jZXNzOyBvcgotICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91
ciBwcm9ncmFtLgotCi1EdWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90
IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKLWFzc2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsg
b3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKLWVycm9y
IG1lc3NhZ2UuCi0KLURlc3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQg
YnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBkZWF0aAotdGVzdCwgdGhyZWFkIHByb2JsZW1z
IHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgot
aGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCi0KLSMgVXNpbmcg
QXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwotCi0jIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2Vy
dGlvbnMgIyMKLQotSWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwg
cGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgotaW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFy
ZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2YgdGhlCi1zdWItcm91dGluZSB0aGUgZmFpbHVy
ZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCi1leHRyYSBs
b2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0
ZXJzIHVwCi15b3VyIHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09Q
RURfVFJBQ0VgIG1hY3JvOgotCi18IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotd2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBh
bnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCi1tYWNybyB3aWxsIGNh
dXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KLW1l
c3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdp
bGwgYmUKLXVuZG9uZSB3aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2Fs
IHNjb3BlLgotCi1Gb3IgZXhhbXBsZSwKLQotYGBgCi0xMDogdm9pZCBTdWIxKGludCBuKSB7Ci0x
MTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKLTEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEp
KTsKLTEzOiB9Ci0xNDoKLTE1OiBURVNUKEZvb1Rlc3QsIEJhcikgewotMTY6ICAgewotMTc6ICAg
ICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRl
ZCBpbgotMTg6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhp
cyBzY29wZS4KLTE5OiAgICAgU3ViMSgxKTsKLTIwOiAgIH0KLTIxOiAgIC8vIE5vdyBpdCB3b24n
dC4KLTIyOiAgIFN1YjEoOSk7Ci0yMzogfQotYGBgCi0KLWNvdWxkIHJlc3VsdCBpbiBtZXNzYWdl
cyBsaWtlIHRoZXNlOgotCi1gYGAKLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKLVZh
bHVlIG9mOiBCYXIobikKLUV4cGVjdGVkOiAxCi0gIEFjdHVhbDogMgotICAgVHJhY2U6Ci1wYXRo
L3RvL2Zvb190ZXN0LmNjOjE3OiBBCi0KLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUK
LVZhbHVlIG9mOiBCYXIobiArIDEpCi1FeHBlY3RlZDogMgotICBBY3R1YWw6IDMKLWBgYAotCi1X
aXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGlj
aCBpbnZvY2F0aW9uCi1vZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNw
ZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCi1leHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0
aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgotYG5gLCBidXQgdGhhdCdz
IHRlZGlvdXMuKQotCi1Tb21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6Ci0KLSAgMS4g
V2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVE
X1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQg
ZWFjaCBjYWxsIHNpdGUuCi0gIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEg
bG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09Q
RURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWls
dXJlIGlzIGZyb20uCi0gIDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNl
IHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlv
biBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29z
ZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNl
IGAiImAuCi0gIDEuIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3Bl
IHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwg
YWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3Nh
Z2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgotICAxLiBUaGUgdHJh
Y2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCBy
ZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBp
biB0aGUgc291cmNlIGZpbGUhCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJlcyAjIwotCi1BIGNvbW1vbiBwaXRmYWxs
IHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0
aGF0Ci13aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9u
Xywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCi1leGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qg
d2lsbCBzZWdmYXVsdDoKLWBgYAotdm9pZCBTdWJyb3V0aW5lKCkgewotICAvLyBHZW5lcmF0ZXMg
YSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0gIEFTU0VS
VF9FUSgxLCAyKTsKLSAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KLSAgLi4u
Ci19Ci0KLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gVGhlIGlu
dGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQotICAvLyBpbiBTdWJyb3V0
aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0LgotICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9y
OiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KLSAgaW50
KiBwID0gTlVMTDsKLSAgKnAgPSAzOyAvLyBTZWdmYXVsdCEKLX0KLWBgYAotCi1TaW5jZSB3ZSBk
b24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bwotaW1w
bGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdv
b2dsZSBUZXN0Ci1wcm92aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIg
dGhlCi1gKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhl
Ci1gSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRo
ZSBmb2xsb3dpbmcgdHdvCi1zdWJzZWN0aW9ucy4KLQotIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0
aW5lcyAjIyMKLQotQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRp
bmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAotZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBj
b250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQotcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdo
YXQgeW91IHdhbnQuCi0KLU9mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3Bh
Z2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKLXRoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBm
b2xsb3dpbmcgbWFjcm9zOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05PX0ZBVEFMX0ZB
SUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRl
bWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZh
aWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4gfAotCi1Pbmx5IGZhaWx1cmVzIGluIHRoZSB0
aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvCi1kZXRlcm1p
bmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRf
Ci1jcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25v
cmVkLgotCi1FeGFtcGxlczoKLQotYGBgCi1BU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7
Ci0KLWludCBpOwotRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoewotICBpID0gQmFyKCk7Ci19KTsK
LWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBm
cm9tIG11bHRpcGxlIHRocmVhZHMKLWFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotIyMj
IENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIwotCi1gSGFzRmF0
YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVl
YCBpZiBhbgotYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0
YWwgZmFpbHVyZS4gVGhpcwotYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJl
cyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4KLWVhcmx5LgotCi1gYGAKLWNsYXNzIFRlc3Qg
ewotIHB1YmxpYzoKLSAgLi4uCi0gIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwotfTsK
LWBgYAotCi1UaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUg
YmVoYXZpb3Igb2YgYSB0aHJvd24KLWV4Y2VwdGlvbiwgaXM6Ci0KLWBgYAotVEVTVChGb29UZXN0
LCBCYXIpIHsKLSAgU3Vicm91dGluZSgpOwotICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhh
ZCBhIGZhdGFsIGZhaWx1cmUuCi0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKLSAgICByZXR1cm47
Ci0gIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotYGBgCi0K
LUlmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRF
U1RfRigpYCAsIG9yIGEgdGVzdAotZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0OjpgIHByZWZpeCwgYXMgaW46Ci0KLWBgYAotaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFz
RmF0YWxGYWlsdXJlKCkpCi0gIHJldHVybjsKLWBgYAotCi1TaW1pbGFybHksIGBIYXNOb25mYXRh
bEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAotaGFzIGF0IGxl
YXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRy
dWVgCi1pZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRo
ZXIga2luZC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9u
ZmF0YWxGYWlsdXJlKClgIGFuZAotYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2
ZXJzaW9uIDEuNC4wLgotCi0jIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCi0KLUlu
IHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1
ZSlgIHRvIGxvZwotYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUg
ZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBUaGUgX2xhc3RfIHZhbHVlIHJlY29yZGVkIGZv
ciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKLWlmIHlvdSBzcGVjaWZ5
IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0Ci0KLWBgYAotVEVTVF9GKFdpZGdldFVzYWdlVGVz
dCwgTWluQW5kTWF4V2lkZ2V0cykgewotICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdldHMi
LCBDb21wdXRlTWF4VXNhZ2UoKSk7Ci0gIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0cyIs
IENvbXB1dGVNaW5Vc2FnZSgpKTsKLX0KLWBgYAotCi13aWxsIG91dHB1dCBYTUwgbGlrZSB0aGlz
OgotCi1gYGAKLS4uLgotICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3RhdHVz
PSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IgotICAgICAgICAgICAg
TWF4aW11bVdpZGdldHM9IjEyIgotICAgICAgICAgICAgTWluaW11bVdpZGdldHM9IjkiIC8+Ci0u
Li4KLWBgYAotCi1fTm90ZV86Ci0gICogYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGljIG1l
bWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJlZml4
ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRFU1Rg
IGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gICogYGtleWAgbXVzdCBiZSBhIHZh
bGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZSBvbmVz
IGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVgLCBg
Y2xhc3NuYW1lYCwgYHR5cGVfcGFyYW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCi0gICogQ2FsbGlu
ZyBgUmVjb3JkUHJvcGVydHkoKWAgb3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0IGlz
IGFsbG93ZWQuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVuIGEg
dGVzdCBjYXNlJ3MgYFNldFVwVGVzdENhc2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClgIG1l
dGhvZHMsIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRoZSB0
ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUuZy4g
aW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0b3At
bGV2ZWwgWE1MIGVsZW1lbnQuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVzdCBD
YXNlICMKLQotCi0KLUdvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9iamVj
dCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKLXRlc3RzIGluZGVwZW5kZW50IGFuZCBl
YXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2VzCi10
aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10ZXN0
IG1vZGVsIHByb2hpYml0aXZlbHkKLWV4cGVuc2l2ZS4KLQotSWYgdGhlIHRlc3RzIGRvbid0IGNo
YW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQotc2lu
Z2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAvdGVh
ci1kb3duLCBHb29nbGUgVGVzdAotYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11cC90
ZWFyLWRvd24uIFRvIHVzZSBpdDoKLQotICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcyAo
c2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFibGVz
IHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCi0gIDEuIEluIHRoZSBzYW1lIHRlc3QgZml4
dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVuY3Rp
b24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdpdGgg
YSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0YXRp
YyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24uCi0K
LVRoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0Q2Fz
ZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKLV9maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3RgIHRl
c3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0Ci1gRm9vVGVzdGAgb2JqZWN0
KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9sYXN0
IHRlc3RfCi1pbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAgb2Jq
ZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCi1jYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3VyY2Vz
LgotCi1SZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91ciBj
b2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKLXByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5vdGhl
ci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCi1zdGF0ZSBvZiBh
bnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0aGV5
IG11c3QKLXJlc3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUgcGFz
c2luZyBjb250cm9sIHRvIHRoZSBuZXh0Ci10ZXN0LgotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBw
ZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgotYGBgCi1jbGFzcyBGb29UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBQZXItdGVzdC1jYXNl
IHNldC11cC4KLSAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRlc3Qg
Y2FzZS4KLSAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KLSAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKLSAgfQot
Ci0gIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgotICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGxh
c3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5l
ZWRlZC4KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgc2hh
cmVkX3Jlc291cmNlXzsKLSAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKLSAgfQotCi0gIC8v
IFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFzIHVz
dWFsLgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9Ci0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsgLi4uIH0KLQotICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQgYnkg
YWxsIHRlc3RzLgotICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKLX07Ci0KLVQqIEZvb1Rl
c3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsK
LSAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCi19Ci1URVNU
X0YoRm9vVGVzdCwgVGVzdDIpIHsKLSAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291
cmNlIGhlcmUgLi4uCi19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBN
YWMuCi0KLSMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKLQotSnVzdCBhcyB5b3UgY2Fu
IGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVzdCBj
YXNlCi1sZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2ZWwu
IEhlcmUncyBob3cuCi0KLUZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVudmly
b25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0Ci1lbnZpcm9ubWVudCwgd2hpY2gga25vd3Mg
aG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgotCi1gYGAKLWNsYXNzIEVudmlyb25tZW50IHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KLSAgLy8gT3ZlcnJpZGUgdGhp
cyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHt9Ci0gIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFyIGRv
d24gdGhlIGVudmlyb25tZW50LgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQotfTsKLWBg
YAotCi1UaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVudCBj
bGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5Ci1jYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRHbG9i
YWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246Ci0KLWBgYAotRW52aXJvbm1lbnQqIEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKLWBgYAotCi1Ob3csIHdoZW4g
YFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVwKClg
IG1ldGhvZCBvZgotdGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0cyBp
ZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAotZmluYWxseSBjYWxscyBgVGVhckRv
d24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVjdC4KLQotSXQncyBPSyB0byByZWdpc3RlciBt
dWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRVcCgp
YAotd2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFuZCB0
aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQotY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyLgot
Ci1Ob3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3RlcmVk
IGVudmlyb25tZW50IG9iamVjdHMuCi1UaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0qKiBi
eSB5b3Vyc2VsZi4KLQotWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQo
KWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzCi1jYWxsZWQsIHByb2JhYmx5IGluIGBtYWlu
KClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCi10aGlz
IGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5IHRv
IGRvIHRoaXMgaXMgdG8KLWRlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6Ci0KLWBg
YAotOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6QWRk
R2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7Ci1gYGAKLQotSG93ZXZl
ciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigpYCBh
bmQgY2FsbAotYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWluZyBv
biBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKLXZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBoYXJk
ZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91Ci1yZWdpc3RlciBtdWx0
aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5kIHRo
ZQotZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVyIHRo
YXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKLWd1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2ggZ2xv
YmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cwotYXJlIGluaXRp
YWxpemVkKS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLQotIyBW
YWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKLQotX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHNf
IGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAotcGFyYW1ldGVycyB3
aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCi0KLVN1cHBv
c2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhhdCB5
b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFuZCBs
aW5lIGZsYWcuCi0KLWBgYAotVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7Ci0gIC8vIEEgY29k
ZSB0byB0ZXN0IGZvbygpLgotfQotYGBgCi0KLVVzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVpciB0
ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBzdWNo
IHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVzIHRo
ZSB0ZXN0aW5nIGNvZGUuCi0KLWBgYAotdm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192YWx1
ZSkgewotICBmbGFnID0gZmxhZ192YWx1ZTsKLSAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCkuCi19
Ci0KLVRFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykgewotICBUZXN0Rm9vSGVscGVyKGZhbHNlKTsK
LSAgVGVzdEZvb0hlbHBlcih0cnVlKTsKLX0KLWBgYAotCi1CdXQgdGhpcyBzZXR1cCBoYXMgc2Vy
aW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEgdGVzdCBhc3NlcnRpb24gZmFpbHMgaW4geW91
ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdoYXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBj
YXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJlYW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2UgaW50
byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2ZSB0
byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUgc3Vj
aCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdoYXQgaWYgeW91IGhhdmUgdGVuIHRlc3RzPyBU
d2VudHk/IEEgaHVuZHJlZD8KLQotVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxldCB5
b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBlYXNpbHkgaW5zdGFudGlhdGUg
YW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVlcy4K
LQotSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRpb25zIHdoZW4gdmFsdWUtcGFyYW1ldGVyaXpl
ZCB0ZXN0cyBjb21lIGhhbmR5OgotCi0gICogWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQgaW1w
bGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KLSAgKiBZb3Ugd2FudCB0byB0ZXN0IHlv
dXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGluZyku
IFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91ciBn
b29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCi0KLSMjIEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJhbWV0
ZXJpemVkIFRlc3RzICMjCi0KLVRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZp
cnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotY2xhc3MuICBJdCBtdXN0IGJlIGRlcml2
ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAotYDo6dGVzdGluZzo6V2l0aFBhcmFt
SW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJmYWNlKSwKLXdoZXJlIGBU
YCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuICBGb3IgY29udmVuaWVuY2Us
IHlvdQotY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGluZzo6
VGVzdFdpdGhQYXJhbTxUPmAsCi13aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tIGJvdGggYDo6
dGVzdGluZzo6VGVzdGAgYW5kCi1gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gLiBg
VGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJZgotaXQncyBhIHJhdyBwb2ludGVyLCB5b3Ug
YXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YKLXRoZSBwb2ludGVk
IHZhbHVlcy4KLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdp
dGhQYXJhbTxjb25zdCBjaGFyKj4gewotICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhlIHVz
dWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJlLgotICAvLyBUbyBhY2Nlc3MgdGhlIHRlc3Qg
cGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJvbSBjbGFzcwotICAvLyBUZXN0V2l0aFBhcmFt
PFQ+LgotfTsKLQotLy8gT3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8gYSBw
cmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKLWNsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7Ci0gIC4uLgotfTsKLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qs
Ci0gICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNv
bnN0IGNoYXIqPiB7Ci0gIC4uLgotfTsKLWBgYAotCi1UaGVuLCB1c2UgdGhlIGBURVNUX1BgIG1h
Y3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcKLXRoaXMgZml4dHVyZSBh
cyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yCi0i
cGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVyIHRvIHRoaW5rLgotCi1gYGAKLVRFU1RfUChG
b29UZXN0LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3Qg
cGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCi0gIC8vIG9mIHRoZSBUZXN0V2l0
aFBhcmFtPFQ+IGNsYXNzOgotICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7Ci0g
IC4uLgotfQotCi1URVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKLSAgLi4uCi19Ci1gYGAK
LQotRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBpbnN0
YW50aWF0ZSB0aGUgdGVzdAotY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ugd2Fu
dC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJlciBvZgotZnVuY3Rpb25zIGZvciBnZW5lcmF0
aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCi0oc3VycHJpc2Uh
KSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLAotd2hp
Y2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZToKLQotfCBgUmFuZ2UoYmVnaW4s
IGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJlZ2lu
K3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBzdGVw
YCBkZWZhdWx0cyB0byAxLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwg
YFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwgWWllbGRzIHZhbHVlcyBge3YxLCB2MiwgLi4u
LCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgVmFsdWVzSW4oY29udGFpbmVyKWAg
YW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxl
IGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVyLCBvciBhbiBpdGVyYXRvciByYW5nZSBgW2Jl
Z2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdpbmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhwcmVz
c2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1biB0aW1lLiAgfAotfCBgQm9v
bCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1g
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilg
ICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRo
ZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRv
cnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYgeW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8
dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5k
IEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNhbiBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBg
R1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNvbW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8Ci0KLUZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUg
Y29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3Nv
dXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCkuCi0KLVRoZSBm
b2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rl
c3RgIHRlc3QgY2FzZQotZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1p
bnkiYCwgYW5kIGAibW9lImAuCi0KLWBgYAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFu
dGlhdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikp
OwotYGBgCi0KLVRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRl
cm4gKHllcywgeW91IGNhbgotaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmly
c3QgYXJndW1lbnQgdG8KLWBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhh
dCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwKLXRlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0
byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50Ci1pbnN0YW50aWF0aW9ucy4gVGhl
IHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlCi1uYW1l
czoKLQotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1l
ZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJt
aW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJt
b2UiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBg
Im1lZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBm
b3IgYCJtaW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8y
YCBmb3IgYCJtb2UiYAotCi1Zb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxfZmls
dGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpLgotCi1UaGlzIHN0YXRlbWVudCB3
aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaAotd2l0
aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6Ci0KLWBgYAotY29uc3QgY2hh
ciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90
aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICA6
OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKLWBgYAotCi1UaGUgdGVzdHMgZnJvbSB0aGUgaW5z
dGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6Ci0KLSAgKiBgQW5vdGhlcklu
c3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBgQW5v
dGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKLSAg
KiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAi
Y2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgv
MWAgZm9yIGAiZG9nImAKLQotUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KLXRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2Us
IHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKLV9hZnRlcl8gdGhlIGBJ
TlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50LgotCi1Zb3UgY2FuIHNlZQotW3RoZXNl
XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MpCi1bZmlsZXNdKC4uL3NhbXBsZXMvc2Ft
cGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhhbXBsZXMuCi0KLV9BdmFpbGFiaWxpdHlfOiBM
aW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZl
cnNpb24gMS4yLjAuCi0KLSMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3Qg
VGVzdHMgIyMKLQotSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29U
ZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKLWZpbGUuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8g
ZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW4gYQotbGlicmFyeSBhbmQgbGV0IG90
aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMKLWtub3du
IGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRp
b24sIHdoZW4geW91Ci1hcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEg
c3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKLXRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9y
eSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQKLWFsbCBpbXBsZW1lbnRhdGlv
bnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFzcy4gV2hlbgotc29tZW9uZSBp
bXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRv
IGdldAotYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCi0KLVRv
IGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlr
ZSB0aGlzOgotCi0gIDEuIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0
ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkg
YGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJz
dHJhY3QgdGVzdHMuCi0gIDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19w
YXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBv
ZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0KLU9uY2UgdGhl
eSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZwotYGZv
b19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFu
ZCBsaW5raW5nCi13aXRoIGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUg
dGhlIHNhbWUgYWJzdHJhY3QgdGVzdAotY2FzZSBtdWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4g
ZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQotIyBUeXBlZCBUZXN0cyAjCi0KLVN1cHBvc2UgeW91
IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQK
LXdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiBy
ZXF1aXJlbWVudHMuCi1PciwgeW91IG1heSBoYXZlIGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0
IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCi10aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3
YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2FzZXMsIHlvdSB3YW50Ci10aGUgc2FtZSB0ZXN0
IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0KLVdoaWxlIHlvdSBjYW4gd3Jp
dGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvCi10ZXN0
IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24g
dGVtcGxhdGUKLXRoYXQgeW91IGludm9rZSBmcm9tIHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMg
YW5kIGRvZXNuJ3Qgc2NhbGU6Ci1pZiB5b3Ugd2FudCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMs
IHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8KLWBURVNUYHMuCi0KLV9UeXBlZCB0ZXN0c18g
YWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCi10
eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91
Z2ggeW91IG11c3QKLWtub3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMu
ICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3Mg
dGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZAotYnkgYSB0eXBlLiAgUmVtZW1i
ZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6Ci0KLWBgYAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0g
cHVibGljOgotICAuLi4KLSAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKLSAgc3RhdGljIFQg
c2hhcmVkXzsKLSAgVCB2YWx1ZV87Ci19OwotYGBgCi0KLU5leHQsIGFzc29jaWF0ZSBhIGxpc3Qg
b2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlCi1yZXBlYXRlZCBmb3Ig
ZWFjaCB0eXBlIGluIHRoZSBsaXN0OgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxj
aGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShGb29UZXN0
LCBNeVR5cGVzKTsKLWBgYAotCi1UaGUgYHR5cGVkZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBU
WVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNlCi1jb3JyZWN0bHkuICBPdGhlcndpc2UgdGhl
IGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluIHRoZQotdHlwZSBsaXN0IGlu
dHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCi0KLVRoZW4sIHVzZSBgVFlQRURfVEVTVCgp
YCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdAotZm9yIHRoaXMg
dGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50
OgotCi1gYGAKLVRZUEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEg
dGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBl
Ci0gIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRl
bXBsYXRlLCBDKysgcmVxdWlyZXMKLSAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9v
VGVzdCB2aWEgJ3RoaXMnLgotICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKLQotICAvLyBU
byB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1
cmU6OicKLSAgLy8gcHJlZml4LgotICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOwotCi0gIC8v
IFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBU
ZXN0Rml4dHVyZTo6JwotICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0
byBzYXRpc2Z5IHRoZSBjb21waWxlci4KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFs
dWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKG4pOwotICAuLi4KLX0KLQotVFlQRURfVEVTVChGb29U
ZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KLWBgYAotCi1Zb3UgY2FuIHNlZSBgc2FtcGxlcy9z
YW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgotCi1fQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOwot
c2luY2UgdmVyc2lvbiAxLjEuMC4KLQotIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIwotCi1f
VHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRo
YXQgdGhleQotZG9uJ3QgcmVxdWlyZSB5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVh
ZCBvZiB0aW1lLiAgSW5zdGVhZCwKLXlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0
IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZlcmVudAotdHlwZSBsaXN0cyBsYXRlci4gIFlv
dSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUKLXNhbWUgcHJv
Z3JhbS4KLQotSWYgeW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlv
dSBjYW4gZGVmaW5lIGEgc3VpdGUKLW9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJp
ZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAotaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVy
ZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1dGhvcgotb2YgZWFjaCBpbXBs
ZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwot
dHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRo
b3V0IGhhdmluZyB0bwotd3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFu
IGV4YW1wbGU6Ci0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3
ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKLQotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgLi4uCi19OwotYGBgCi0K
LU5leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQg
dGVzdCBjYXNlOgotCi1gYGAKLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotYGBgCi0KLVRo
ZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hl
dmVyIHlvdQotcHJlZmVyIHRvIHRoaW5rLgotCi1UaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0
byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlvdQotY2FuIHJlcGVhdCB0aGlz
IGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQRURfVEVTVF9QKEZvb1Rlc3Qs
IERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBn
ZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgotICBUeXBlUGFyYW0gbiA9IDA7Ci0gIC4uLgotfQotCi1U
WVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAKLQotTm93IHRo
ZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNp
bmcgdGhlCi1gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2Fu
IGluc3RhbnRpYXRlIHRoZW0uCi1UaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRo
ZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJlCi10aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGlu
IHRoaXMgdGVzdCBjYXNlOgotCi1gYGAKLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsK
LWBgYAotCi1GaW5hbGx5LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4g
d2l0aCB0aGUgdHlwZXMgeW91Ci13YW50LiAgSWYgeW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBh
IGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAKLWl0IGluIG11bHRpcGxlIEMrKyBzb3Vy
Y2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgotCi1gYGAKLXR5cGVk
ZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLUlO
U1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKLWBgYAot
Ci1UbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUg
Zmlyc3QgYXJndW1lbnQKLXRvIHRoZSBgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1h
Y3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQotYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNh
c2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzCi1mb3IgZGlmZmVyZW50
IGluc3RhbmNlcy4KLQotSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNv
bnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQotY2FuIHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3
aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6Ci0KLWBgYAotSU5TVEFO
VElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7Ci1gYGAKLQotWW91IGNh
biBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBs
ZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBv
ciBhYm92ZSksIE1hYzsKLXNpbmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVGVzdGluZyBQcml2YXRl
IENvZGUgIwotCi1JZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90Ci1icmVhayBhcyBsb25nIGFzIHRoZSBjaGFu
Z2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwgcGVyIHRoZQotX2JsYWNr
LWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0
IHlvdXIgY29kZQotdGhyb3VnaCBpdHMgcHVibGljIGludGVyZmFjZXMuCi0KLUlmIHlvdSBzdGls
bCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBj
b2RlLAotY29uc2lkZXIgaWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCBy
ZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Ci1hYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24t
cHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUgYXJlCi10d28gY2Fz
ZXMgdG8gY29uc2lkZXI6Ci0KLSAgKiBTdGF0aWMgZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBh
cyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCi0g
ICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycwotCi0jIyBTdGF0aWMgRnVuY3Rp
b25zICMjCi0KLUJvdGggc3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRp
b25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFyZQotb25seSB2aXNpYmxlIHdpdGhpbiB0aGUg
c2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAot
dGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZp
bGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCi1maWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVz
ZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhpcyBpbiBwcm9kdWN0aW9uCi1jb2RlISkKLQot
SG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGlu
dG8gdGhlCi1gZm9vOjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFt
ZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQotdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBk
ZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCi1wcm9kdWN0aW9uIGAu
Y2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRl
cm5hbAotaGVhZGVyLCBidXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2Fu
IGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAotaW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5n
IGl0IHRvIHlvdXIgY2xpZW50cy4KLQotIyMgUHJpdmF0ZSBDbGFzcyBNZW1iZXJzICMjCi0KLVBy
aXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBj
bGFzcyBvciBieSBmcmllbmRzLgotVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywg
eW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEKLWZyaWVuZCB0byB0aGUgY2xh
c3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUK
LWZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9k
dWN0aW9uIGNsYXNzIHZpYSB0aGUKLWFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0
IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0bwoteW91ciBwcm9kdWN0aW9u
IGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBh
cyB0aGV5Ci1hcmUgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4
dHVyZS4KLQotQW5vdGhlciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0
b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9uCi1jbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNs
YXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIgY2xpZW50cyBhcmVuJ3QKLWFsbG93
ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2Fs
bGVkIHRoZSBQaW1wbAotKFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgotCi1PciwgeW91
IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNz
IGJ5IGFkZGluZyB0aGlzCi1saW5lIGluIHRoZSBjbGFzcyBib2R5OgotCi1gYGAKLUZSSUVORF9U
RVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwotYGBgCi0KLUZvciBleGFtcGxlLAotYGBgCi0v
LyBmb28uaAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKLQotLy8gRGVmaW5lcyBGUklF
TkRfVEVTVC4KLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIEZSSUVORF9URVNUKEZv
b1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsKLSAgaW50IEJhcih2b2lkKiB4KTsKLX07Ci0K
LS8vIGZvb190ZXN0LmNjCi0uLi4KLVRFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwp
IHsKLSAgRm9vIGZvbzsKLSAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOwotICAvLyBVc2Vz
IEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgotfQotYGBgCi0KLVBheSBzcGVjaWFsIGF0dGVu
dGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNo
b3VsZAotZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFt
ZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KLWJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9y
IGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29rcyBsaWtlOgotCi1gYGAKLW5h
bWVzcGFjZSBteV9uYW1lc3BhY2UgewotCi1jbGFzcyBGb28gewotICBmcmllbmQgY2xhc3MgRm9v
VGVzdDsKLSAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKLSAgRlJJRU5EX1RFU1QoRm9vVGVz
dCwgQmF6KTsKLSAgLi4uCi0gIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbwotICAuLi4KLX07
Ci0KLX0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKLWBgYAotCi1Zb3VyIHRlc3QgY29kZSBz
aG91bGQgYmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7
Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgot
ICAuLi4KLX07Ci0KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0
LCBCYXopIHsgLi4uIH0KLQotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotYGBgCi0KLSMg
Q2F0Y2hpbmcgRmFpbHVyZXMgIwotCi1JZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGls
aXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91J2xsCi13YW50IHRvIHRlc3QgeW91ciB1dGls
aXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PwotR29vZ2xlIFRl
c3QsIG9mIGNvdXJzZS4KLQotVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRl
c3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVzCi1jb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtz
IHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJvd2luZyBhbgotZXhjZXB0aW9uLCB5b3UgY291
bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQotVGVz
dCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBob3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ug
b2YgY29kZQotZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/Ci0KLWAiZ3Rlc3QvZ3Rlc3Qt
c3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gIEFmdGVyCi1gI2lu
Y2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQotCi18IGBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotdG8gYXNzZXJ0IHRoYXQgX3N0YXRl
bWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQotd2hvc2Ug
bWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQotCi18IGBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotaWYg
eW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4K
LQotRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgotCi0gIDEu
IFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KLSAg
MS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVu
Y2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0
aGlzYCBvYmplY3QuCi0gIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgp
YCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCi0KLV9Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWdu
ZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNlIHRoZQotc3luY2hyb25pemF0aW9uIHByaW1p
dGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYCBoYXZlCi1iZWVuIGltcGxl
bWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29tZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0
Ci15b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMgaW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJy
ZW50bHkuICBCZWZvcmUKLQotdGhhdCwgaG93ZXZlciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0
cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNlCi10aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRB
TF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKWAKLXdpbGwgY2FwdHVy
ZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgb25seS4gSWYgX3N0YXRlbWVudF8KLWNy
ZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25v
cmVkLiAgSWYKLXlvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBp
bnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQotdGhlIGZvbGxvd2luZyBtYWNyb3M6Ci0KLXwgYEVYUEVD
VF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7
YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfAotfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVB
RFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLQotIyBHZXR0aW5nIHRoZSBDdXJyZW50
IFRlc3QncyBOYW1lICMKLQotU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0
aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KLUZvciBleGFtcGxlLCB5b3Ug
bWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRv
IHNldAotdGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5n
LiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCi1jbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoK
LQotYGBgCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLWNsYXNzIFRlc3RJbmZvIHsKLSBwdWJsaWM6
Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNw
ZWN0aXZlbHkuCi0gIC8vCi0gIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZh
bHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQotICAvLyBUZXN0SW5mbyBjbGFzcy4KLSAgY29uc3Qg
Y2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsKLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLWBgYAotCi0KLT4gVG8gb2J0YWluIGEg
YFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCi1g
Y3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoK
LQotYGBgCi0vLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0
ZXN0LgotLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2Vk
IGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KLWNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mbyA9Ci0gIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJl
bnRfdGVzdF9pbmZvKCk7Ci1wcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAl
cy5cbiIsCi0gICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25h
bWUoKSk7Ci1gYGAKLQotYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50
ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgotcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5k
IHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKLWBUZXN0Q2FzZVRlYXJE
b3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9y
Ci1mdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWMuCi0KLSMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3Qg
RXZlbnRzICMKLQotR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJ
PC9iPiB0byBsZXQgeW91IHJlY2VpdmUKLW5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNz
IG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Ci1mYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2Fu
IGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCi10aGUgdGVzdCBwcm9ncmFt
LCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Ci11
c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91
dHB1dCwKLXJlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRp
ZmZlcmVudCBmb3JtIG9mCi1vdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91
IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwotY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEg
cmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgRGVmaW5pbmcgRXZlbnQgTGlz
dGVuZXJzICMjCi0KLVRvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0
aGVyCi1bdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qu
aCNMODU1KQotb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KLVRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZh
Y2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZDxicj4KLWNhbiBiZSBvdmVycmlk
ZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QK
LXN0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhl
IGxhdHRlciBwcm92aWRlcwotYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMg
aW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEKLXN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3Zl
cnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJvdXQuCi0KLVdoZW4gYW4gZXZlbnQgaXMgZmly
ZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbgotYXMgYW4g
YXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6Ci0gICogW1Vu
aXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0
ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwKLSAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdo
aWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRlc3RzLAotICAqIFtUZXN0SW5mb10oLi4vaW5j
bHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFu
ZAotICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQu
aCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNzZXJ0aW9uLgotCi1BbiBl
dmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZl
cyB0byBmaW5kCi1vdXQgaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFu
ZCB0aGUgdGVzdCBwcm9ncmFtJ3MKLXN0YXRlLiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAot
ICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2
ZW50TGlzdGVuZXIgewotICAgIC8vIENhbGxlZCBiZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KLSAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKLSAgICAg
ICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0g
ICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NF
RUQoKSBpbnZvY2F0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KAotICAg
ICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KSB7
Ci0gICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKLSAgICAgICAgICAgICB0ZXN0X3Bh
cnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKLSAgICAgICAg
ICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAotICAgICAgICAgICAgIHRlc3RfcGFy
dF9yZXN1bHQubGluZV9udW1iZXIoKSwKLSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1
bW1hcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgotICAg
IHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9p
bmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCi0gICAgICAg
ICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwotICAg
IH0KLSAgfTsKLWBgYAotCi0jIyBVc2luZyBFdmVudCBMaXN0ZW5lcnMgIyMKLQotVG8gdXNlIHRo
ZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2YgaXQg
dG8KLXRoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXByZXNlbnRlZCBieSBj
bGFzcwotW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5Mjkp
Ci0tIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCi1gbWFpbigp
YCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6Ci1gYGAKLWludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0
KCZhcmdjLCBhcmd2KTsKLSAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBsaXN0
LgotICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KLSAgICAgIDo6
dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwotICAvLyBBZGRz
IGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNoaXAu
Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKLSAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRoZSBk
ZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4KLWVmZmVjdCwgc28gaXRzIG91
dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QKLXBy
aW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBpdCBm
cm9tIHRoZQotZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRvIHNv
IGJ5IGFkZGluZyBvbmUgbGluZToKLWBgYAotICAuLi4KLSAgZGVsZXRlIGxpc3RlbmVycy5SZWxl
YXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOwotICBsaXN0ZW5lcnMuQXBw
ZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci1g
YGAKLQotTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRw
dXQgZnJvbSB5b3VyCi10ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRoaXMK
LVtzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCi0KLVlvdSBtYXkgYXBw
ZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0YXJ0
KClgCi1vciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3RlbmVy
cyB3aWxsIHJlY2VpdmUgaXQgaW4KLXRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlzdCAo
c2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KLXRoZSBlbmQgb2YgdGhlIGxpc3QsIHRo
ZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCi1nZW5lcmF0b3Igd2ls
bCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBiZQot
cmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlzIGFs
bG93cyBvdXRwdXQgYnkKLWxpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkgb3V0
cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCi1lYXJsaWVyLgotCi0jIyBHZW5lcmF0aW5nIEZhaWx1
cmVzIGluIExpc3RlbmVycyAjIwotCi1Zb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFjcm9z
IChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKLWBGQUlMKClgLCBldGMpIHdoZW4gcHJvY2Vz
c2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgotCi0gIDEuIFlvdSBj
YW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90aGVy
d2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCByZWN1
cnNpdmVseSkuCi0gIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVzdWx0
KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgotCi1XaGVuIHlvdSBh
ZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0ZW5l
cnMKLXRoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVycyB0
aGF0IGNhbiBnZW5lcmF0ZQotZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdl
bmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQotYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVzdCBi
eSB0aGUgZm9ybWVyLgotCi1XZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBsaXN0
ZW5lcgotW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgotCi0jIFJ1bm5p
bmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IHRlc3Qg
cHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2FuIHJ1
bgotdGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9sbG93
aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwotYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4gRm9y
IHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAotYDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCi0KLVRv
IHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNlIHJ1
biB5b3VyIHRlc3QKLXByb2dyYW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4gYWxz
byB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAotZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlzIGFk
ZGVkIGluIHZlcnNpb24gMS4zLjAuCi0KLUlmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90aCBi
eSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQotZmxhZywgdGhlIGxhdHRlciB0YWtl
cyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQotc2V0L3JlYWQg
aW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZwotYC0tZ3Rl
c3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9uIHBh
dHRlcm4gaXMKLXRvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCi10byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2Yg
dGhlIGZsYWc6Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICAvLyBE
aXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFH
KHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gb3Zl
cnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBg
YAotCi0jIyBTZWxlY3RpbmcgVGVzdHMgIyMKLQotVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMg
b3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVuLgotCi0jIyMgTGlzdGluZyBU
ZXN0IE5hbWVzICMjIwotCi1Tb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhlIGF2
YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCi1ydW5uaW5nIHRoZW0gc28gdGhhdCBh
IGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZwotYC0t
Z3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMgdGVz
dHMgaW4gdGhlIGZvbGxvd2luZwotZm9ybWF0OgotYGBgCi1UZXN0Q2FzZTEuCi0gIFRlc3ROYW1l
MQotICBUZXN0TmFtZTIKLVRlc3RDYXNlMi4KLSAgVGVzdE5hbWUKLWBgYAotCi1Ob25lIG9mIHRo
ZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRlZC4g
VGhlcmUgaXMgbm8KLWNvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoaXMg
ZmxhZy4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBSdW5u
aW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKLQotQnkgZGVmYXVsdCwgYSBHb29nbGUgVGVz
dCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgotU29tZXRpbWVz
LCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9yIGRl
YnVnZ2luZyBvcgotcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRoZSBg
R1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQotb3IgdGhlIGAtLWd0ZXN0X2ZpbHRl
cmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4gdGhl
Ci10ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1lLlRl
c3ROYW1lYCkgbWF0Y2ggdGhlCi1maWx0ZXIuCi0KLVRoZSBmb3JtYXQgb2YgYSBmaWx0ZXIgaXMg
YSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCi10aGUg
cG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQgYW5v
dGhlcgotJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2ZSBw
YXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQotZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0IG1h
dGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKLW1hdGNoIGFu
eSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCi0KLUEgcGF0dGVybiBtYXkgY29udGFpbiBgJyon
YCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCi1jaGFy
YWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVybnMn
YCBjYW4gYmUgYWxzbwotd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCi0KLUZvciBl
eGFtcGxlOgotCi0gICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5zIGFs
bCBpdHMgdGVzdHMuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBydW5z
IGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZhbHVl
LgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVyeXRo
aW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0
ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1lIGNv
bnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCi0gICogYC4vZm9vX3Rl
c3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRlc3Rz
LgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJhcmAg
UnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0LkJh
cmAuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgVGVtcG9y
YXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIwotCi1JZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0IHRo
YXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCi1gRElTQUJMRURf
YCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0aW9u
LiBUaGlzIGlzCi1iZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2luZyBg
I2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKLXN0aWxsIGNvbXBpbGVkIChhbmQgdGh1cyB3
b24ndCByb3QpLgotCi1JZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRlc3Qg
Y2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCi10byB0aGUgZnJvbnQgb2YgdGhl
IG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJvbnQg
b2YKLXRoZSB0ZXN0IGNhc2UgbmFtZS4KLQotRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVz
dHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Ci13aWxsIHN0
aWxsIGJlIGNvbXBpbGVkOgotCi1gYGAKLS8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgotVEVT
VChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9Ci0KLWNsYXNzIERJU0FCTEVEX0Jh
clRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07Ci0KLS8vIFRlc3RzIHRoYXQg
QmFyIGRvZXMgWHl6LgotVEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4uIH0K
LWBgYAotCi1fTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZW1w
b3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAotaGF2ZSB0byBmaXggdGhlIGRpc2FibGVkIHRl
c3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAotcHJp
bnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55IGRp
c2FibGVkIHRlc3RzLgotCi1fVGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJlciBv
ZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQotdXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBjYW4g
YmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIKLXRlc3QgcXVhbGl0eS4KLQot
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBUZW1wb3JhcmlseSBF
bmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKLQotVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVzdHNd
KCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QKLWV4ZWN1dGlvbiwganVzdCBp
bnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQotYC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQotYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RFU1RT
YCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyCi10aGFuIGAwYC4gIFlvdSBj
YW4gY29tYmluZSB0aGlzIHdpdGggdGhlCi1bLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1hLXN1
YnNldC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxlY3QKLXdoaWNoIGRpc2FibGVk
IHRlc3RzIHRvIHJ1bi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNp
bmNlIHZlcnNpb24gMS4zLjAuCi0KLSMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKLQotT25jZSBp
biBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1vci1t
aXNzLiBQZXJoYXBzIGl0Ci13aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5nIGl0
IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCi1hIGRlYnVnZ2VyLiBUaGlz
IGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KLQotVGhlIGAtLWd0ZXN0X3Jl
cGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0IG1l
dGhvZHMKLWluIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVzdCB3
aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoteW91IGEgY2hhbmNlIHRvIGRlYnVnLiBIZXJl
J3MgaG93IHRvIHVzZSBpdDoKLQotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAwYCB8
IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJlcy4g
fAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgJCBmb29fdGVzdCAt
LWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5nIGZv
cmV2ZXIuICAgICAgICAgICAgICAgfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAw
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMs
IHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVs
IHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0IHdp
bGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFyaWFi
bGVzIGFuZCBzdGFja3MuIHwKLXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0
ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMg
dGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8Ci0KLUlmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRhaW5z
IGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJlZAotdXNpbmcgYEFkZEdsb2Jh
bFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCi1pdGVyYXRp
b24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxzbyBz
cGVjaWZ5Ci10aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRgIGVu
dmlyb25tZW50IHZhcmlhYmxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KLQotIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIwotCi1Zb3UgY2FuIHNwZWNpZnkgdGhlIGAt
LWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCi1lbnZpcm9u
bWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGluIGEg
cmFuZG9tCi1vcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBiZXR3
ZWVuIHRlc3RzLgotCi1CeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNlZWQg
Y2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Ci10aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdldCBh
IGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZQotb3V0cHV0IGluY2x1ZGVz
IHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFuCi1v
cmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9tIHNl
ZWQKLWV4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxhZyAo
b3Igc2V0IHRoZQotYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSksIHdo
ZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCi1iZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2VlZCB2
YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0Ci10byBkbyB0aGUgZGVmYXVs
dCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Ci10aW1l
LgotCi1JZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29nbGUg
VGVzdCB3aWxsIHBpY2sgYQotZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxlIHRo
ZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQgIyMK
LQotVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1bHRz
IGFyZSByZXBvcnRlZC4KLQotIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIwotCi1Hb29n
bGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2UgaXQg
ZWFzaWVyIHRvIHNwb3QKLXRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0aGVy
IHRlc3RzIHBhc3NlZC4KLQotWW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAotY29tbWFuZCBsaW5lIGZsYWcg
dG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xvcnMs
Ci1kaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUgdmFs
dWUgaXMgYGF1dG9gLCBHb29nbGUKLVRlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5IGlm
IHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24KLW5vbi1XaW5kb3dzIHBsYXRm
b3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJtYCBv
cgotYHh0ZXJtLWNvbG9yYC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
Ci0KLSMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMjIwotCi1CeSBkZWZhdWx0LCBH
b29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4gIFRv
Ci1zdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVzdF9w
cmludF90aW1lPTBgCi1jb21tYW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9QUklO
VF9USU1FYCBlbnZpcm9ubWVudAotdmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZlY3Qu
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBUZXN0
IDEuMy4wIGFuZCBsb3dlciwKLXRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVsYXBz
ZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQotCi0jIyMgR2VuZXJhdGluZyBhbiBYTUwgUmVw
b3J0ICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQgdG8g
YSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKLXRleHR1YWwgb3V0cHV0LiBUaGUgcmVw
b3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgotaGVs
cCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KLQotVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBvcnQs
IHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi1gLS1n
dGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRfZmls
ZV8iYCwgd2hpY2ggd2lsbAotY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4g
WW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKLWAieG1sImAsIGluIHdoaWNoIGNhc2Ug
dGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUgaW4K
LXRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotSWYgeW91IHNwZWNpZnkgYSBkaXJlY3RvcnkgKGZv
ciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCi1gInhtbDpv
dXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0ZSB0
aGUgWE1MIGZpbGUgaW4KLXRoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBleGVj
dXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Ci1wcm9ncmFtIGBmb29fdGVzdGAg
b3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFwcyBs
ZWZ0Ci1vdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sgYSBk
aWZmZXJlbnQgbmFtZSAoZS5nLgotYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3ZlcndyaXRp
bmcgaXQuCi0KLVRoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAgSXQg
aXMgYmFzZWQgb24gdGhlCi1ganVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFyc2Vk
IGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAotc3lzdGVtcyBsaWtlIFtKZW5raW5zXShodHRw
Oi8vamVua2lucy1jaS5vcmcvKS4gU2luY2UgdGhhdCBmb3JtYXQKLXdhcyBvcmlnaW5hbGx5IGlu
dGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAotdG8g
bWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKLQotYGBg
Ci08dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgotICA8dGVzdHN1aXRlIG5hbWU9InRl
c3RfY2FzZV9uYW1lIiAuLi4+Ci0gICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgot
ICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIu
Li4iLz4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgIDwvdGVzdGNhc2U+Ci0g
IDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotYGBgCi0KLSAgKiBUaGUgcm9vdCBgPHRlc3Rz
dWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgot
ICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0
IGNhc2VzLgotICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBU
ZXN0IHRlc3QgZnVuY3Rpb25zLgotCi1Gb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3Jh
bQotCi1gYGAKLVRFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9Ci1URVNUKE1hdGhUZXN0
LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQotVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24p
IHsgLi4uIH0KLWBgYAotCi1jb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKLQotYGBgCi08P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjMi
IGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+Ci0gIDx0
ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIw
IiB0aW1lPSIxNSI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIg
dGltZT0iNyIgY2xhc3NuYW1lPSIiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6
IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+Ci0g
ICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6
IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgICA8dGVz
dGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9
IiI+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0i
TG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+Ci0g
ICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1
IiBjbGFzc25hbWU9IiI+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci08L3Rlc3Rz
dWl0ZXM+Ci1gYGAKLQotVGhpbmdzIHRvIG5vdGU6Ci0KLSAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1
dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93
IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNl
IGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkg
b2YgdGhlbSBmYWlsZWQuCi0gICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBk
dXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGlu
IG1pbGxpc2Vjb25kcy4KLSAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMg
dG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KLSAgKiBTb21lIEpVbml0
IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25m
b3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMg
YW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNl
IHBhcnRzLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgQ29u
dHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIwotCi0jIyMgVHVybmluZyBBc3Nl
cnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCi0KLVdoZW4gcnVubmluZyB0ZXN0
IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQot
ZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5
IGRyb3AgaW50byBpbnRlcmFjdGl2ZQotbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFp
bHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgotCi1UbyBlbmFibGUgaXQsIHNldCB0
aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFs
dWUKLW90aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0
ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCi1jb21tYW5kIGxpbmUgZmxhZy4KLQotX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1U
aHJvd24gRXhjZXB0aW9ucyAjIyMKLQotR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdp
dGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuICBJZgotYSB0ZXN0IHRocm93cyBhIEMr
KyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24KLShTRUgp
LCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0
Ci1mYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlz
IG1heGltaXplcyB0aGUKLWNvdmVyYWdlIG9mIGEgdGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dz
IGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCi1jYXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNh
dGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5b3UgdG8gcnVuCi10aGUgdGVzdHMgYXV0b21h
dGljYWxseS4KLQotV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlv
dSBtYXkgaW5zdGVhZCB3YW50IHRoZQotZXhjZXB0aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBk
ZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZQotdGhlIGNhbGwgc3RhY2sgd2hlbiBh
biBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNoaWV2ZSB0aGF0LCBzZXQgdGhlCi1gR1RFU1Rf
Q0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhl
Ci1gLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0
cy4KLQotKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIExldHRp
bmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKLQotSWYgeW91IHdvcmsgb24g
YSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcKLWZy
YW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBU
ZXN0IHlldCwKLXlvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVz
aW5nIGl0cyBhc3NlcnRpb25zIGluCi15b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2Ug
eW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCi1saWtlOgotCi1gYGAKLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgOjp0
ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgLy8gSW1wb3J0
YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgotICA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0
ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KLX0KLWBgYAotCi1XaXRoIHRoYXQsIHlvdSBj
YW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCi1uYXRpdmUg
YXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToK
LQotYGBgCi12b2lkIFRlc3RGb29Eb2VzQmFyKCkgewotICBGb28gZm9vOwotICBFWFBFQ1RfTEUo
Zm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgotICBDUFBV
TklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KLX0KLWBg
YAotCi1JZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBhbiBl
cnJvciBtZXNzYWdlIGFuZAotdGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0
ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAotdGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3Ug
Y29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAotYSBmYWlsZWQgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEK
LW5vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8g
eW91ciB0ZXN0Ci1ydW5uZXIuCi0KLUlmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVT
VF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCi15b3VyIGBtYWluKClgLCB5b3Ug
Y2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCi10aGUg
YC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNl
dHRpbmcgdGhlCi1gR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gYSBub24temVybyB2YWx1ZS4KLQotRGVhdGggdGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRlZCB3
aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVzZWQgdG8gb3JnYW5pemUgdGVzdHMuCi0KLV9B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS4zLjAuCi0KLSMjIERp
c3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBNdWx0aXBsZSBNYWNoaW5lcyAjIwotCi1JZiB5
b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUgeW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBw
cm9ncmFtLAoteW91IG1pZ2h0IHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJh
bGxlbCBhbmQgZ2V0IHRoZQotcmVzdWx0IGZhc3Rlci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUg
X3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5lCi1pcyBjYWxsZWQgYSBfc2hhcmRfLgotCi1H
b29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2
YW50YWdlIG9mCi10aGlzIGZlYXR1cmUsIHlvdXIgdGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdv
b2dsZSBUZXN0KSBuZWVkcyB0byBkbwotdGhlIGZvbGxvd2luZzoKLQotICAxLiBBbGxvY2F0ZSBh
IG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0byBydW4gdGhlIHRlc3RzLgotICAxLiBPbiBl
YWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RBTF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlh
YmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBm
b3IgYWxsIHNoYXJkcy4KLSAgMS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRf
SU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBE
aWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWduZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNo
IG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RFU1RfVE9UQUxfU0hBUkRTIC0gMV1gLgotICAx
LiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9uIGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBU
ZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2Vs
ZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNo
YXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0
bHkgb25jZS4KLSAgMS4gV2FpdCBmb3IgYWxsIHNoYXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVj
dCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgotCi1Zb3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMg
dGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29nbGUgVGVzdCBhbmQKLXRodXMgZG9uJ3QgdW5k
ZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3JkZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8K
LWZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUg
ZW52aXJvbm1lbnQKLXZhcmlhYmxlIGBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24t
ZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQotdGVzdCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5n
LCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8KLWFja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUg
YWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZSBub3QKLWltcG9ydGFudCBhdCB0aGlzIHRp
bWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbgotaW4gaXQg
aW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQgd2lsbCBub3QgY3JlYXRlIGl0LgotCi1IZXJl
J3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFyLiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3Qg
cHJvZ3JhbQotYGZvb190ZXN0YCB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1
bmN0aW9uczoKLWBgYAotVEVTVChBLCBWKQotVEVTVChBLCBXKQotVEVTVChCLCBYKQotVEVTVChC
LCBZKQotVEVTVChCLCBaKQotYGBgCi1hbmQgeW91IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRp
c3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbgotcGFyYWxsZWwsIHlvdSB3b3Vs
ZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8gMyBvbiBhbGwgbWFjaGluZXMsIGFuZAotc2V0
IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwgYW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3Bl
Y3RpdmVseS4KLVRoZW4geW91IHdvdWxkIHJ1biB0aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2gg
bWFjaGluZS4KLQotR29vZ2xlIFRlc3QgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cg
dGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKLWFjcm9zcyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9u
ZSBwb3NzaWJsZSBzY2VuYXJpbzoKLQotICAqIE1hY2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIu
WGAuCi0gICogTWFjaGluZSAjMSBydW5zIGBBLldgIGFuZCBgQi5ZYC4KLSAgKiBNYWNoaW5lICMy
IHJ1bnMgYEIuWmAuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5j
ZSB2ZXJzaW9uIDEuMy4wLgotCi0jIEZ1c2luZyBHb29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIwot
Ci1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhj
bHVkaW5nIGl0cyBvd24KLXRlc3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBi
ZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEKLWAuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQs
IHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5k
IHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRh
bAotUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2Ag
ZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4wKS4KLUFzc3VtaW5nIHlvdSBoYXZlIFB5dGhv
biAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdAotZ28gdG8gdGhh
dCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQ
VVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3Rv
cnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9n
dGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmlsZXMgY29udGFpbgotZXZlcnl0aGluZyB5b3Ug
bmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoteW91
IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3JpdGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUK
LVtzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKLWZpbGUg
YXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4K
LQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBu
b3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKLXJlYWR5
IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2
ZSBldmVuIGRlZXBlciwgeW91Ci1jYW4gcmVhZCB0aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rp
b25zXShWMV83X0ZBUS5tZCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfRG9j
dW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1kCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODI2OTdhNTBiOWFhYWQxZDA0ZmI0YWUzZmY5
MGNhNzEwNDJiYWEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1kCisrKyAvZGV2L251bGwK
QEAgLTEsMTQgKzAsMCBAQAotVGhpcyBwYWdlIGxpc3RzIGFsbCBkb2N1bWVudGF0aW9uIHdpa2kg
cGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqKHRoZSBTVk4gdHJ1bmsgdmVyc2lvbikqKgotLS0gKipp
ZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgcGxlYXNlIHJlYWQg
dGhlCi1kb2N1bWVudGF0aW9uIGZvciB0aGF0IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgot
Ci0gICogW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBu
ZXcgdG8gR29vZ2xlIFRlc3QuCi0gICogW1NhbXBsZXNdKFYxXzdfU2FtcGxlcy5tZCkgLS0gbGVh
cm4gZnJvbSBleGFtcGxlcy4KLSAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRl
Lm1kKSAtLSBsZWFybiBtb3JlIGFib3V0IEdvb2dsZSBUZXN0LgotICAqIFtYY29kZUd1aWRlXShW
MV83X1hjb2RlR3VpZGUubWQpIC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24g
TWFjLgotICAqIFtGcmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfN19GQVEubWQpIC0tIGNo
ZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCi0K
LVRvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKLQotICAqIFtEZXZHdWlk
ZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3Qg
cGF0Y2guCi0gICogW1B1bXBNYW51YWxdKFYxXzdfUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdl
bmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3QncyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X0ZBUS5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvVjFfN19GQVEubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNkZDkxNGRjZjE2YWUzNDIwOGUwOTA4ZDE2Y2I5MzMyNDEzMjA2ZjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83
X0ZBUS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDEwODIgKzAsMCBAQAotCi0KLUlmIHlvdSBjYW5u
b3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJl
YWQKLVtQcmltZXJdKFYxXzdfUHJpbWVyLm1kKSBhbmQgW0FkdmFuY2VkR3VpZGVdKFYxXzdfQWR2
YW5jZWRHdWlkZS5tZCksIHNlbmQgaXQgdG8KLWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3Jv
dXBzLmNvbS4KLQotIyMgV2h5IHNob3VsZCBJIHVzZSBHb29nbGUgVGVzdCBpbnN0ZWFkIG9mIG15
IGZhdm9yaXRlIEMrKyB0ZXN0aW5nIGZyYW1ld29yaz8gIyMKLQotRmlyc3QsIGxldCB1cyBzYXkg
Y2xlYXJseSB0aGF0IHdlIGRvbid0IHdhbnQgdG8gZ2V0IGludG8gdGhlIGRlYmF0ZSBvZgotd2hp
Y2ggQysrIHRlc3RpbmcgZnJhbWV3b3JrIGlzICoqdGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1h
bnkgZmluZQotZnJhbWV3b3JrcyBmb3Igd3JpdGluZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRy
ZW1lbmRvdXMgcmVzcGVjdCBmb3IKLXRoZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAg
V2UgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgKG9yIHdpbGwKLWJlKSBhIHNpbmdsZSBiZXN0IGZyYW1l
d29yayAtIHlvdSBoYXZlIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZQotcGFydGljdWxh
ciB0YXNrIHlvdSBhcmUgdGFja2xpbmcuCi0KLVdlIGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVz
ZSB3ZSBjb3VsZG4ndCBmaW5kIHRoZSByaWdodCBjb21iaW5hdGlvbgotb2YgZmVhdHVyZXMgYW5k
IGNvbnZlbmllbmNlcyBpbiBhbiBleGlzdGluZyBmcmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXwot
bmVlZHMuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2Ug
YWJvdXQgR29vZ2xlCi1UZXN0LiAgV2UgZG9uJ3QgY2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8g
R29vZ2xlIFRlc3QgLSByYXRoZXIsIHRoZQotY29tYmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29n
bGUgVGVzdCB0aGUgY2hvaWNlIGZvciB1cy4gIFdlIGhvcGUgdGhpcwotbGlzdCBjYW4gaGVscCB5
b3UgZGVjaWRlIHdoZXRoZXIgaXQgaXMgZm9yIHlvdSB0b28uCi0KLSAgKiBHb29nbGUgVGVzdCBp
cyBkZXNpZ25lZCB0byBiZSBwb3J0YWJsZTogaXQgZG9lc24ndCByZXF1aXJlIGV4Y2VwdGlvbnMg
b3IgUlRUSTsgaXQgd29ya3MgYXJvdW5kIHZhcmlvdXMgYnVncyBpbiB2YXJpb3VzIGNvbXBpbGVy
cyBhbmQgZW52aXJvbm1lbnRzOyBldGMuICBBcyBhIHJlc3VsdCwgaXQgd29ya3Mgb24gTGludXgs
IE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBzZXZlcmFsIGVtYmVkZGVkIG9wZXJhdGluZyBzeXN0ZW1z
LgotICAqIE5vbmZhdGFsIGFzc2VydGlvbnMgKGBFWFBFQ1RfKmApIGhhdmUgcHJvdmVuIHRvIGJl
IGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0aGV5IGFsbG93IGEgdGVzdCB0byByZXBvcnQgbXVsdGlw
bGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUuCi0gICogSXQn
cyBlYXN5IHRvIHdyaXRlIGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNz
YWdlczogeW91IGp1c3QgdXNlIHRoZSBzdHJlYW0gc3ludGF4IHRvIGFwcGVuZCBhbnkgYWRkaXRp
b25hbCBpbmZvcm1hdGlvbiwgZS5nLiBgQVNTRVJUX0VRKDUsIEZvbyhpKSkgPDwgIiB3aGVyZSBp
ID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgc2V0IG9mIG1hY3JvcyBvciBz
cGVjaWFsIGZ1bmN0aW9ucy4KLSAgKiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMg
eW91ciB0ZXN0cyBhbmQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBlbnVtZXJhdGUgdGhlbSBpbiBv
cmRlciB0byBydW4gdGhlbS4KLSAgKiBEZWF0aCB0ZXN0cyBhcmUgcHJldHR5IGhhbmR5IGZvciBl
bnN1cmluZyB0aGF0IHlvdXIgYXNzZXJ0cyBpbiBwcm9kdWN0aW9uIGNvZGUgYXJlIHRyaWdnZXJl
ZCBieSB0aGUgcmlnaHQgY29uZGl0aW9ucy4KLSAgKiBgU0NPUEVEX1RSQUNFYCBoZWxwcyB5b3Ug
dW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGl0IGNv
bWVzIGZyb20gaW5zaWRlIGEgc3ViLXJvdXRpbmUgb3IgbG9vcC4KLSAgKiBZb3UgY2FuIGRlY2lk
ZSB3aGljaCB0ZXN0cyB0byBydW4gdXNpbmcgbmFtZSBwYXR0ZXJucy4gIFRoaXMgc2F2ZXMgdGlt
ZSB3aGVuIHlvdSB3YW50IHRvIHF1aWNrbHkgcmVwcm9kdWNlIGEgdGVzdCBmYWlsdXJlLgotICAq
IEdvb2dsZSBUZXN0IGNhbiBnZW5lcmF0ZSBYTUwgdGVzdCByZXN1bHQgcmVwb3J0cyB0aGF0IGNh
biBiZSBwYXJzZWQgYnkgcG9wdWxhciBjb250aW51b3VzIGJ1aWxkIHN5c3RlbSBsaWtlIEh1ZHNv
bi4KLSAgKiBTaW1wbGUgdGhpbmdzIGFyZSBlYXN5IGluIEdvb2dsZSBUZXN0LCB3aGlsZSBoYXJk
IHRoaW5ncyBhcmUgcG9zc2libGU6IGluIGFkZGl0aW9uIHRvIGFkdmFuY2VkIGZlYXR1cmVzIGxp
a2UgW2dsb2JhbCB0ZXN0IGVudmlyb25tZW50c10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI2dsb2Jh
bC1zZXQtdXAtYW5kLXRlYXItZG93bikgYW5kIHRlc3RzIHBhcmFtZXRlcml6ZWQgYnkgW3ZhbHVl
c10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI3ZhbHVlLXBhcmFtZXRlcml6ZWQtdGVzdHMpIG9yIFt0
eXBlc10oVjFfN19BZHZhbmNlZEd1aWRlLm1kI3R5cGVkLXRlc3RzKSwgR29vZ2xlIFRlc3Qgc3Vw
cG9ydHMgdmFyaW91cyB3YXlzIGZvciB0aGUgdXNlciB0byBleHRlbmQgdGhlIGZyYW1ld29yayAt
LSBpZiBHb29nbGUgVGVzdCBkb2Vzbid0IGRvIHNvbWV0aGluZyBvdXQgb2YgdGhlIGJveCwgY2hh
bmNlcyBhcmUgdGhhdCBhIHVzZXIgY2FuIGltcGxlbWVudCB0aGUgZmVhdHVyZSB1c2luZyBHb29n
bGUgVGVzdCdzIHB1YmxpYyBBUEksIHdpdGhvdXQgY2hhbmdpbmcgR29vZ2xlIFRlc3QgaXRzZWxm
LiAgSW4gcGFydGljdWxhciwgeW91IGNhbjoKLSAgICAqIGV4cGFuZCB5b3VyIHRlc3Rpbmcgdm9j
YWJ1bGFyeSBieSBkZWZpbmluZyBbY3VzdG9tIHByZWRpY2F0ZXNdKFYxXzdfQWR2YW5jZWRHdWlk
ZS5tZCNwcmVkaWNhdGUtYXNzZXJ0aW9ucy1mb3ItYmV0dGVyLWVycm9yLW1lc3NhZ2VzKSwKLSAg
ICAqIHRlYWNoIEdvb2dsZSBUZXN0IGhvdyB0byBbcHJpbnQgeW91ciB0eXBlc10oVjFfN19BZHZh
bmNlZEd1aWRlLm1kI3RlYWNoaW5nLWdvb2dsZS10ZXN0LWhvdy10by1wcmludC15b3VyLXZhbHVl
cyksCi0gICAgKiBkZWZpbmUgeW91ciBvd24gdGVzdGluZyBtYWNyb3Mgb3IgdXRpbGl0aWVzIGFu
ZCB2ZXJpZnkgdGhlbSB1c2luZyBHb29nbGUgVGVzdCdzIFtTZXJ2aWNlIFByb3ZpZGVyIEludGVy
ZmFjZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kI2NhdGNoaW5nLWZhaWx1cmVzKSwgYW5kCi0gICAg
KiByZWZsZWN0IG9uIHRoZSB0ZXN0IGNhc2VzIG9yIGNoYW5nZSB0aGUgdGVzdCBvdXRwdXQgZm9y
bWF0IGJ5IGludGVyY2VwdGluZyB0aGUgW3Rlc3QgZXZlbnRzXShWMV83X0FkdmFuY2VkR3VpZGUu
bWQjZXh0ZW5kaW5nLWdvb2dsZS10ZXN0LWJ5LWhhbmRsaW5nLXRlc3QtZXZlbnRzKS4KLQotIyMg
SSdtIGdldHRpbmcgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QuICBXb3VsZCB5
b3UgZml4IHRoZW0/ICMjCi0KLVdlIHN0cml2ZSB0byBtaW5pbWl6ZSBjb21waWxlciB3YXJuaW5n
cyBHb29nbGUgVGVzdCBnZW5lcmF0ZXMuICBCZWZvcmUgcmVsZWFzaW5nIGEgbmV3IHZlcnNpb24s
IHdlIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaXQgZG9lc24ndCBnZW5lcmF0ZSB3YXJuaW5ncyB3
aGVuIGNvbXBpbGVkIHVzaW5nIGl0cyBDTWFrZSBzY3JpcHQgb24gV2luZG93cywgTGludXgsIGFu
ZCBNYWMgT1MuCi0KLVVuZm9ydHVuYXRlbHksIHRoaXMgZG9lc24ndCBtZWFuIHlvdSBhcmUgZ3Vh
cmFudGVlZCB0byBzZWUgbm8gd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QgaW4g
eW91ciBlbnZpcm9ubWVudDoKLQotICAqIFlvdSBtYXkgYmUgdXNpbmcgYSBkaWZmZXJlbnQgY29t
cGlsZXIgYXMgd2UgdXNlLCBvciBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIHRoZSBzYW1lIGNvbXBp
bGVyLiAgV2UgY2Fubm90IHBvc3NpYmx5IHRlc3QgZm9yIGFsbCBjb21waWxlcnMuCi0gICogWW91
IG1heSBiZSBjb21waWxpbmcgb24gYSBkaWZmZXJlbnQgcGxhdGZvcm0gYXMgd2UgZG8uCi0gICog
WW91ciBwcm9qZWN0IG1heSBiZSB1c2luZyBkaWZmZXJlbnQgY29tcGlsZXIgZmxhZ3MgYXMgd2Ug
ZG8uCi0KLUl0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gbWFrZSBHb29nbGUgVGVzdCB3YXJu
aW5nLWZyZWUgZm9yIGV2ZXJ5b25lLiAgT3IsIGl0IG1heSBub3QgYmUgZGVzaXJhYmxlIGlmIHRo
ZSB3YXJuaW5nIGlzIHJhcmVseSBlbmFibGVkIGFuZCBmaXhpbmcgdGhlIHZpb2xhdGlvbnMgbWFr
ZXMgdGhlIGNvZGUgbW9yZSBjb21wbGV4LgotCi1JZiB5b3Ugc2VlIHdhcm5pbmdzIHdoZW4gY29t
cGlsaW5nIEdvb2dsZSBUZXN0LCB3ZSBzdWdnZXN0IHRoYXQgeW91IHVzZSB0aGUgYC1pc3lzdGVt
YCBmbGFnIChhc3N1bWluZyB5b3VyIGFyZSB1c2luZyBHQ0MpIHRvIG1hcmsgR29vZ2xlIFRlc3Qg
aGVhZGVycyBhcyBzeXN0ZW0gaGVhZGVycy4gIFRoYXQnbGwgc3VwcHJlc3Mgd2FybmluZ3MgZnJv
bSBHb29nbGUgVGVzdCBoZWFkZXJzLgotCi0jIyBXaHkgc2hvdWxkIG5vdCB0ZXN0IGNhc2UgbmFt
ZXMgYW5kIHRlc3QgbmFtZXMgY29udGFpbiB1bmRlcnNjb3JlPyAjIwotCi1VbmRlcnNjb3JlIChg
X2ApIGlzIHNwZWNpYWwsIGFzIEMrKyByZXNlcnZlcyB0aGUgZm9sbG93aW5nIHRvIGJlIHVzZWQg
YnkKLXRoZSBjb21waWxlciBhbmQgdGhlIHN0YW5kYXJkIGxpYnJhcnk6Ci0KLSAgMS4gYW55IGlk
ZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2Fz
ZSBsZXR0ZXIsIGFuZAotICAxLiBhbnkgaWRlbnRpZmllciB0aGF0IGNvbnRhaW5lcnMgdHdvIGNv
bnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBfX2ApIF9hbnl3aGVyZV8gaW4gaXRzIG5hbWUu
Ci0KLVVzZXIgY29kZSBpcyBfcHJvaGliaXRlZF8gZnJvbSB1c2luZyBzdWNoIGlkZW50aWZpZXJz
LgotCi1Ob3cgbGV0J3MgbG9vayBhdCB3aGF0IHRoaXMgbWVhbnMgZm9yIGBURVNUYCBhbmQgYFRF
U1RfRmAuCi0KLUN1cnJlbnRseSBgVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKWAgZ2VuZXJh
dGVzIGEgY2xhc3MgbmFtZWQKLWBUZXN0Q2FzZU5hbWVfVGVzdE5hbWVfVGVzdGAuICBXaGF0IGhh
cHBlbnMgaWYgYFRlc3RDYXNlTmFtZWAgb3IgYFRlc3ROYW1lYAotY29udGFpbnMgYF9gPwotCi0g
IDEuIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1
cHBlci1jYXNlIGxldHRlciAoc2F5LCBgX0Zvb2ApLCB3ZSBlbmQgdXAgd2l0aCBgX0Zvb19UZXN0
TmFtZV9UZXN0YCwgd2hpY2ggaXMgcmVzZXJ2ZWQgYW5kIHRodXMgaW52YWxpZC4KLSAgMS4gSWYg
YFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQgYEZv
b19fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0gIDEuIElmIGBUZXN0TmFtZWAg
c3RhcnRzIHdpdGggYW4gYF9gIChzYXksIGBfQmFyYCksIHdlIGdldCBgVGVzdENhc2VOYW1lX19C
YXJfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0gIDEuIElmIGBUZXN0TmFtZWAgZW5kcyB3aXRo
IGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9CYXJfX1Rlc3RgLCB3
aGljaCBpcyBpbnZhbGlkLgotCi1TbyBjbGVhcmx5IGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVzdE5h
bWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBgX2AKLShBY3R1YWxseSwgYFRlc3RDYXNlTmFt
ZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxvbmcgYXMgdGhlIGBfYCBpc24ndAotZm9sbG93
ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIuICBCdXQgdGhhdCdzIGdldHRpbmcgY29tcGxpY2F0
ZWQuICBTbwotZm9yIHNpbXBsaWNpdHkgd2UganVzdCBzYXkgdGhhdCBpdCBjYW5ub3Qgc3RhcnQg
d2l0aCBgX2AuKS4KLQotSXQgbWF5IHNlZW0gZmluZSBmb3IgYFRlc3RDYXNlTmFtZWAgYW5kIGBU
ZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhlCi1taWRkbGUuICBIb3dldmVyLCBjb25zaWRl
ciB0aGlzOgotYGBgCi1URVNUKFRpbWUsIEZsaWVzX0xpa2VfQW5fQXJyb3cpIHsgLi4uIH0KLVRF
U1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykgeyAuLi4gfQotYGBgCi0KLU5vdywgdGhlIHR3
byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0aGUgc2FtZSBjbGFzcwotKGBUaW1lX0ZpbGVz
X0xpa2VfQW5fQXJyb3dfVGVzdGApLiAgVGhhdCdzIG5vdCBnb29kLgotCi1TbyBmb3Igc2ltcGxp
Y2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRvIGF2b2lkIGBfYCBpbiBgVGVzdENhc2VOYW1l
YAotYW5kIGBUZXN0TmFtZWAuICBUaGUgcnVsZSBpcyBtb3JlIGNvbnN0cmFpbmluZyB0aGFuIG5l
Y2Vzc2FyeSwgYnV0IGl0J3MKLXNpbXBsZSBhbmQgZWFzeSB0byByZW1lbWJlci4gIEl0IGFsc28g
Z2l2ZXMgR29vZ2xlIFRlc3Qgc29tZSB3aWdnbGUKLXJvb20gaW4gY2FzZSBpdHMgaW1wbGVtZW50
YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCi0KLUlmIHlvdSB2aW9sYXRlIHRo
ZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVkaWF0ZWx5IGNvbnNlcXVlbmNlcywKLWJ1dCB5
b3VyIHRlc3QgbWF5IChqdXN0IG1heSkgYnJlYWsgd2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBu
ZXcKLXZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlvdSBhcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcg
dmVyc2lvbiBvZiBHb29nbGUKLVRlc3QuICBUaGVyZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdyB0
aGUgcnVsZS4KLQotIyMgV2h5IGlzIGl0IG5vdCByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGEgcHJl
LWNvbXBpbGVkIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGZvciBleGFtcGxlLCBpbnRvIC91c3IvbG9j
YWwpPyAjIwotCi1JbiB0aGUgZWFybHkgZGF5cywgd2Ugc2FpZCB0aGF0IHlvdSBjb3VsZCBpbnN0
YWxsCi1jb21waWxlZCBHb29nbGUgVGVzdCBsaWJyYXJpZXMgb24gYCpgbml4IHN5c3RlbXMgdXNp
bmcgYG1ha2UgaW5zdGFsbGAuCi1UaGVuIGV2ZXJ5IHVzZXIgb2YgeW91ciBtYWNoaW5lIGNhbiB3
cml0ZSB0ZXN0cyB3aXRob3V0Ci1yZWNvbXBpbGluZyBHb29nbGUgVGVzdC4KLQotVGhpcyBzZWVt
ZWQgbGlrZSBhIGdvb2QgaWRlYSwgYnV0IGl0IGhhcyBhCi1nb3QtY2hhOiBldmVyeSB1c2VyIG5l
ZWRzIHRvIGNvbXBpbGUgaGlzIHRlc3RzIHVzaW5nIHRoZSBfc2FtZV8gY29tcGlsZXIKLWZsYWdz
IHVzZWQgdG8gY29tcGlsZSB0aGUgaW5zdGFsbGVkIEdvb2dsZSBUZXN0IGxpYnJhcmllczsgb3Ro
ZXJ3aXNlCi1oZSBtYXkgcnVuIGludG8gdW5kZWZpbmVkIGJlaGF2aW9ycyAoaS5lLiB0aGUgdGVz
dHMgY2FuIGJlaGF2ZQotc3RyYW5nZWx5IGFuZCBtYXkgZXZlbiBjcmFzaCBmb3Igbm8gb2J2aW91
cyByZWFzb25zKS4KLQotV2h5PyAgQmVjYXVzZSBDKysgaGFzIHRoaXMgdGhpbmcgY2FsbGVkIHRo
ZSBPbmUtRGVmaW5pdGlvbiBSdWxlOiBpZgotdHdvIEMrKyBzb3VyY2UgZmlsZXMgY29udGFpbiBk
aWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKLWNsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxl
LCBhbmQgeW91IGxpbmsgdGhlbSB0b2dldGhlciwgeW91IHZpb2xhdGUgdGhlCi1ydWxlLiAgVGhl
IGxpbmtlciBtYXkgb3IgbWF5IG5vdCBjYXRjaCB0aGUgZXJyb3IgKGluIG1hbnkgY2FzZXMgaXQn
cwotbm90IHJlcXVpcmVkIGJ5IHRoZSBDKysgc3RhbmRhcmQgdG8gY2F0Y2ggdGhlIHZpb2xhdGlv
bikuICBJZiBpdAotZG9lc24ndCwgeW91IGdldCBzdHJhbmdlIHJ1bi10aW1lIGJlaGF2aW9ycyB0
aGF0IGFyZSB1bmV4cGVjdGVkIGFuZAotaGFyZCB0byBkZWJ1Zy4KLQotSWYgeW91IGNvbXBpbGUg
R29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdCBjb2RlIHVzaW5nIGRpZmZlcmVudCBjb21waWxlcgot
ZmxhZ3MsIHRoZXkgbWF5IHNlZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKLWNs
YXNzL2Z1bmN0aW9uL3ZhcmlhYmxlIChlLmcuIGR1ZSB0byB0aGUgdXNlIG9mIGAjaWZgIGluIEdv
b2dsZSBUZXN0KS4KLVRoZXJlZm9yZSwgZm9yIHlvdXIgc2FuaXR5LCB3ZSByZWNvbW1lbmQgdG8g
YXZvaWQgaW5zdGFsbGluZyBwcmUtY29tcGlsZWQKLUdvb2dsZSBUZXN0IGxpYnJhcmllcy4gIElu
c3RlYWQsIGVhY2ggcHJvamVjdCBzaG91bGQgY29tcGlsZQotR29vZ2xlIFRlc3QgaXRzZWxmIHN1
Y2ggdGhhdCBpdCBjYW4gYmUgc3VyZSB0aGF0IHRoZSBzYW1lIGZsYWdzIGFyZQotdXNlZCBmb3Ig
Ym90aCBHb29nbGUgVGVzdCBhbmQgdGhlIHRlc3RzLgotCi0jIyBIb3cgZG8gSSBnZW5lcmF0ZSA2
NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNpbmcgVmlzdWFsIFN0dWRpbyAyMDA4KT8gIyMK
LQotKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNvbikKLQotTG9hZCB0aGUgc3VwcGxpZWQgVmlz
dWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRoZXIgYG1zdmNcZ3Rlc3QtbWQuc2xuYCBvcgot
YG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0aGUgbWlncmF0aW9uIHdpemFyZCB0byBtaWdy
YXRlIHRoZQotc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgdG8gVmlzdWFsIFN0dWRpbyAyMDA4
LiBTZWxlY3QKLWBDb25maWd1cmF0aW9uIE1hbmFnZXIuLi5gIGZyb20gdGhlIGBCdWlsZGAgbWVu
dS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQotdGhlIGBBY3RpdmUgc29sdXRpb24gcGxhdGZvcm1g
IGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20gdGhlIG5ldwotcGxhdGZvcm0gZHJvcGRvd24s
IGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNldCB0byBgV2luMzJgIGFuZAotYENyZWF0ZSBu
ZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQsIHRoZW4gY2xpY2sgYE9LYC4gWW91IG5vdyBo
YXZlCi1gV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucywgc2VsZWN0YWJs
ZSBmcm9tIHRoZQotYFN0YW5kYXJkYCB0b29sYmFyLCB3aGljaCBhbGxvdyB5b3UgdG8gdG9nZ2xl
IGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCi02NC1iaXQgYmluYXJpZXMgKG9yIGJvdGggYXQg
b25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCi0KLUluIG9yZGVyIHRvIHByZXZlbnQgYnVpbGQgb3V0
cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25lIGFub3RoZXIsCi15b3UnbGwgbmVlZCB0byBj
aGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5ncyBmb3IgdGhlCi1uZXds
eSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gYWNyb3NzIGFsbCB0aGUgcHJvamVjdHMu
IFRvIGRvCi10aGlzLCBtdWx0aS1zZWxlY3QgKGUuZy4gdXNpbmcgc2hpZnQtY2xpY2spIGFsbCBw
cm9qZWN0cyAoYnV0IG5vdCB0aGUKLXNvbHV0aW9uKSBpbiB0aGUgYFNvbHV0aW9uIEV4cGxvcmVy
YC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5kCi1zZWxlY3QgYFByb3BlcnRpZXNgLiBJbiB0
aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3VyYXRpb24gUHJvcGVydGllc2AsCi1hbmQgZnJv
bSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3duLCBzZWxlY3QgYEFsbCBDb25maWd1cmF0aW9u
c2AuCi1NYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBsYXRmb3JtIGlzIGB4NjRgLiBGb3IgdGhlCi1g
SW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZywgY2hhbmdlIHRoZSB2YWx1ZSBmcm9tCi1g
JChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpYCB0bwotYCQoT3V0RGlyKVwkKFBy
b2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRoZW4gYnVpbGQgdGhlCi1zb2x1dGlvbi4gV2hl
biB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2NC1iaXQgYmluYXJpZXMgd2lsbCBiZSBpbgot
dGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5LgotCi0jIyBDYW4gSSB1c2UgR29vZ2xlIFRl
c3Qgb24gTWluR1c/ICMjCi0KLVdlIGhhdmVuJ3QgdGVzdGVkIHRoaXMgb3Vyc2VsdmVzLCBidXQg
UGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBoZQotd2FzIGFibGUgdG8gY29tcGlsZSBhbmQg
aW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVsbHkgd2hlbiB1c2luZwotTWluR1cgZnJvbSBD
eWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1cmUgaXQgd2l0aDoKLQotYFBBVEgvVE8vY29u
ZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENYWD0iZysrIC1tbm8tY3lnd2luImAKLQotWW91
IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGAtbW5vLWN5Z3dpbmAgb3B0aW9uIHdpdGgg
ZGlyZWN0IGxpbmtzCi10byB0aGUgcmVhbCBNaW5HVyBiaW5hcmllcywgYnV0IHdlIGhhdmVuJ3Qg
dHJpZWQgdGhhdC4KLQotQ2F2ZWF0czoKLQotICAqIFRoZXJlIGFyZSBtYW55IHdhcm5pbmdzIHdo
ZW4gY29tcGlsaW5nLgotICAqIGBtYWtlIGNoZWNrYCB3aWxsIHByb2R1Y2Ugc29tZSBlcnJvcnMg
YXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmIGFyZSBjb21wYXRpYmxlIHdp
dGggTWluR1cuCi0KLVdlIGFsc28gaGF2ZSByZXBvcnRzIG9uIHN1Y2Nlc3NmdWwgY3Jvc3MgY29t
cGlsYXRpb24gb2YgR29vZ2xlIFRlc3QKLU1pbkdXIGJpbmFyaWVzIG9uIExpbnV4IHVzaW5nCi1b
dGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lraS53eHdpZGdldHMub3JnL0Nyb3NzLUNvbXBp
bGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxpbmdfdW5kZXJfTGludXhfZm9yX01TX1dpbmRv
d3MpCi1vbiB0aGUgV3hXaWRnZXRzIHNpdGUuCi0KLVBsZWFzZSBjb250YWN0IGBnb29nbGV0ZXN0
ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdSBhcmUKLWludGVyZXN0ZWQgaW4gaW1w
cm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4KLQotIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3Qg
c3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxfRVEoTlVMTCwgcHRyKSBi
dXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9ORShOVUxMLCBwdHIpPyAj
IwotCi1EdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJlcXVpcmVzIHNvbWUgbm9u
LXRyaXZpYWwgdGVtcGxhdGUKLW1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tzIHRvIHN1cHBvcnQgdXNp
bmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZQotYEVYUEVDVF9YWCgpYCBhbmQgYEFTU0VS
VF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdoZXJlCi1pdCdzIG1vc3Qg
bmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgR29vZ2xlIFRl
c3QKLWhhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZSBlcnJvci1wcm9uZSB0aGFuIG5lY2Vzc2Fy
eSkuCi0KLVRoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSBfZXhwZWN0ZWRfIHZhbHVl
IGFzIGl0cyBmaXJzdAotYXJndW1lbnQgYW5kIHRoZSBfYWN0dWFsXyB2YWx1ZSBhcyB0aGUgc2Vj
b25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAotc29tZW9uZSB3YW50cyB0byB3cml0ZSBgRVhQRUNU
X0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcwotaW5kZWVkIHdhcyByZXF1ZXN0
ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdlIGltcGxlbWVudGVkIGl0LgotCi1UaGUgbmVl
ZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkgYXMgc3Ryb25nLiBXaGVu
IHRoZQotYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRoYXQgYHB0cmAgbXVzdCBi
ZSBgTlVMTGAsIHNvIGl0Ci1kb2Vzbid0IGFkZCBhbnkgaW5mb3JtYXRpb24gdG8gcHJpbnQgcHRy
IGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucwotYEVYUEVDVF9UUlVFKHB0ciAhPSBOVUxMKWAgd29y
a3MganVzdCBhcyB3ZWxsLgotCi1JZiB3ZSB3ZXJlIHRvIHN1cHBvcnQgYEVYUEVDVF9ORShOVUxM
LCBwdHIpYCwgZm9yIGNvbnNpc3RlbmN5IHdlJ2xsCi1oYXZlIHRvIHN1cHBvcnQgYEVYUEVDVF9O
RShwdHIsIE5VTEwpYCBhcyB3ZWxsLCBhcyB1bmxpa2UgYEVYUEVDVF9FUWAsCi13ZSBkb24ndCBo
YXZlIGEgY29udmVudGlvbiBvbiB0aGUgb3JkZXIgb2YgdGhlIHR3byBhcmd1bWVudHMgZm9yCi1g
RVhQRUNUX05FYC4gVGhpcyBtZWFucyB1c2luZyB0aGUgdGVtcGxhdGUgbWV0YSBwcm9ncmFtbWlu
ZyB0cmlja3MKLXR3aWNlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgbWFraW5nIGl0IGV2ZW4gaGFy
ZGVyIHRvIHVuZGVyc3RhbmQgYW5kCi1tYWludGFpbi4gV2UgYmVsaWV2ZSB0aGUgYmVuZWZpdCBk
b2Vzbid0IGp1c3RpZnkgdGhlIGNvc3QuCi0KLUZpbmFsbHksIHdpdGggdGhlIGdyb3d0aCBvZiBH
b29nbGUgTW9jaydzIFttYXRjaGVyXSguLi8uLi9Db29rQm9vay5tZCN1c2luZy1tYXRjaGVycy1p
bi1nb29nbGUtdGVzdC1hc3NlcnRpb25zKSBsaWJyYXJ5LCB3ZSBhcmUKLWVuY291cmFnaW5nIHBl
b3BsZSB0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAKLXN5
bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBPbmUgc2lnbmlmaWNhbnQgYWR2YW50YWdlIG9mIHRo
ZSBtYXRjaGVyCi1hcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJzIGNhbiBiZSBlYXNpbHkgY29tYmlu
ZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsCi13aGlsZSB0aGUgYEVYUEVDVF9ORWAsIGV0YywgbWFj
cm9zIGNhbm5vdCBiZSBlYXNpbHkKLWNvbWJpbmVkLiBUaGVyZWZvcmUgd2Ugd2FudCB0byBpbnZl
c3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUKLWBFWFBFQ1RfWFgoKWAgbWFjcm9z
LgotCi0jIyBEb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgcnVubmluZyB0ZXN0cyBpbiBwYXJhbGxl
bD8gIyMKLQotVGVzdCBydW5uZXJzIHRlbmQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhl
IGJ1aWxkL3Rlc3QKLWVudmlyb25tZW50LCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cnkgdG8g
c29sdmUgdGhlIHByb2JsZW0gb2YKLXJ1bm5pbmcgdGVzdHMgaW4gcGFyYWxsZWwuICBJbnN0ZWFk
LCB3ZSB0cmllZCB0byBtYWtlIEdvb2dsZSBUZXN0IHdvcmsKLW5pY2VseSB3aXRoIHRlc3QgcnVu
bmVycy4gIEZvciBleGFtcGxlLCBHb29nbGUgVGVzdCdzIFhNTCByZXBvcnQKLWNvbnRhaW5zIHRo
ZSB0aW1lIHNwZW50IG9uIGVhY2ggdGVzdCwgYW5kIGl0cyBgZ3Rlc3RfbGlzdF90ZXN0c2AgYW5k
Ci1gZ3Rlc3RfZmlsdGVyYCBmbGFncyBjYW4gYmUgdXNlZCBmb3Igc3BsaXR0aW5nIHRoZSBleGVj
dXRpb24gb2YgdGVzdAotbWV0aG9kcyBpbnRvIG11bHRpcGxlIHByb2Nlc3Nlcy4gIFRoZXNlIGZ1
bmN0aW9uYWxpdGllcyBjYW4gaGVscCB0aGUKLXRlc3QgcnVubmVyIHJ1biB0aGUgdGVzdHMgaW4g
cGFyYWxsZWwuCi0KLSMjIFdoeSBkb24ndCBHb29nbGUgVGVzdCBydW4gdGhlIHRlc3RzIGluIGRp
ZmZlcmVudCB0aHJlYWRzIHRvIHNwZWVkIHRoaW5ncyB1cD8gIyMKLQotSXQncyBkaWZmaWN1bHQg
dG8gd3JpdGUgdGhyZWFkLXNhZmUgY29kZS4gIE1vc3QgdGVzdHMgYXJlIG5vdCB3cml0dGVuCi13
aXRoIHRocmVhZC1zYWZldHkgaW4gbWluZCwgYW5kIHRodXMgbWF5IG5vdCB3b3JrIGNvcnJlY3Rs
eSBpbiBhCi1tdWx0aS10aHJlYWRlZCBzZXR0aW5nLgotCi1JZiB5b3UgdGhpbmsgYWJvdXQgaXQs
IGl0J3MgYWxyZWFkeSBoYXJkIHRvIG1ha2UgeW91ciBjb2RlIHdvcmsgd2hlbgoteW91IGtub3cg
d2hhdCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZy4gIEl0J3MgbXVjaCBoYXJkZXIsIGFuZAotc29t
ZXRpbWVzIGV2ZW4gaW1wb3NzaWJsZSwgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3aGVuIHlvdSBk
b24ndCBrbm93Ci13aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nIChyZW1lbWJlciB0aGF0IHRl
c3QgbWV0aG9kcyBjYW4gYmUgYWRkZWQsCi1kZWxldGVkLCBvciBtb2RpZmllZCBhZnRlciB5b3Vy
IHRlc3Qgd2FzIHdyaXR0ZW4pLiAgSWYgeW91IHdhbnQgdG8gcnVuCi10aGUgdGVzdHMgaW4gcGFy
YWxsZWwsIHlvdSdkIGJldHRlciBydW4gdGhlbSBpbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgotCi0j
IyBXaHkgYXJlbid0IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgZXhj
ZXB0aW9ucz8gIyMKLQotT3VyIG9yaWdpbmFsIG1vdGl2YXRpb24gd2FzIHRvIGJlIGFibGUgdG8g
dXNlIEdvb2dsZSBUZXN0IGluIHByb2plY3RzCi10aGF0IGRpc2FibGUgZXhjZXB0aW9ucy4gIExh
dGVyIHdlIHJlYWxpemVkIHNvbWUgYWRkaXRpb25hbCBiZW5lZml0cwotb2YgdGhpcyBhcHByb2Fj
aDoKLQotICAxLiBUaHJvd2luZyBpbiBhIGRlc3RydWN0b3IgaXMgdW5kZWZpbmVkIGJlaGF2aW9y
IGluIEMrKy4gIE5vdCB1c2luZyBleGNlcHRpb25zIG1lYW5zIEdvb2dsZSBUZXN0J3MgYXNzZXJ0
aW9ucyBhcmUgc2FmZSB0byB1c2UgaW4gZGVzdHJ1Y3RvcnMuCi0gIDEuIFRoZSBgRVhQRUNUXypg
IGZhbWlseSBvZiBtYWNyb3Mgd2lsbCBjb250aW51ZSBldmVuIGFmdGVyIGEgZmFpbHVyZSwgYWxs
b3dpbmcgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBgVEVTVGAgdG8gYmUgcmVwb3J0ZWQgaW4gYSBz
aW5nbGUgcnVuLiBUaGlzIGlzIGEgcG9wdWxhciBmZWF0dXJlLCBhcyBpbiBDKysgdGhlIGVkaXQt
Y29tcGlsZS10ZXN0IGN5Y2xlIGlzIHVzdWFsbHkgcXVpdGUgbG9uZyBhbmQgYmVpbmcgYWJsZSB0
byBmaXhpbmcgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBhIHRpbWUgaXMgYSBibGVzc2luZy4KLSAg
MS4gSWYgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucywgYSB0ZXN0
IG1heSBmYWxzZWx5IGlnbm9yZSBhIGZhaWx1cmUgaWYgaXQncyBjYXVnaHQgYnkgdXNlciBjb2Rl
OgotYGBgCi10cnkgeyAuLi4gQVNTRVJUX1RSVUUoLi4uKSAuLi4gfQotY2F0Y2ggKC4uLikgeyAu
Li4gfQotYGBgCi1UaGUgYWJvdmUgY29kZSB3aWxsIHBhc3MgZXZlbiBpZiB0aGUgYEFTU0VSVF9U
UlVFYCB0aHJvd3MuICBXaGlsZSBpdCdzIHVubGlrZWx5IGZvciBzb21lb25lIHRvIHdyaXRlIHRo
aXMgaW4gYSB0ZXN0LCBpdCdzIHBvc3NpYmxlIHRvIHJ1biBpbnRvIHRoaXMgcGF0dGVybiB3aGVu
IHlvdSB3cml0ZSBhc3NlcnRpb25zIGluIGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgYnkgdGhl
IGNvZGUgdW5kZXIgdGVzdC4KLQotVGhlIGRvd25zaWRlIG9mIG5vdCB1c2luZyBleGNlcHRpb25z
IGlzIHRoYXQgYEFTU0VSVF8qYCAoaW1wbGVtZW50ZWQKLXVzaW5nIGByZXR1cm5gKSB3aWxsIG9u
bHkgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24sIG5vdCB0aGUgY3VycmVudAotYFRFU1RgLgot
Ci0jIyBXaHkgZG8gd2UgdXNlIHR3byBkaWZmZXJlbnQgbWFjcm9zIGZvciB0ZXN0cyB3aXRoIGFu
ZCB3aXRob3V0IGZpeHR1cmVzPyAjIwotCi1VbmZvcnR1bmF0ZWx5LCBDKysncyBtYWNybyBzeXN0
ZW0gZG9lc24ndCBhbGxvdyB1cyB0byB1c2UgdGhlIHNhbWUKLW1hY3JvIGZvciBib3RoIGNhc2Vz
LiAgT25lIHBvc3NpYmlsaXR5IGlzIHRvIHByb3ZpZGUgb25seSBvbmUgbWFjcm8KLWZvciB0ZXN0
cyB3aXRoIGZpeHR1cmVzLCBhbmQgcmVxdWlyZSB0aGUgdXNlciB0byBkZWZpbmUgYW4gZW1wdHkK
LWZpeHR1cmUgc29tZXRpbWVzOgotCi1gYGAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHt9OwotCi1URVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLWBgYAot
b3IKLWBgYAotdHlwZWRlZiA6OnRlc3Rpbmc6OlRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rl
c3QsIERvZXNUaGF0KSB7IC4uLiB9Ci1gYGAKLQotWWV0LCBtYW55IHBlb3BsZSB0aGluayB0aGlz
IGlzIG9uZSBsaW5lIHRvbyBtYW55LiA6LSkgT3VyIGdvYWwgd2FzIHRvCi1tYWtlIGl0IHJlYWxs
eSBlYXN5IHRvIHdyaXRlIHRlc3RzLCBzbyB3ZSB0cmllZCB0byBtYWtlIHNpbXBsZSB0ZXN0cwot
dHJpdmlhbCB0byBjcmVhdGUuICBUaGF0IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUgbWFjcm8gZm9y
IHN1Y2ggdGVzdHMuCi0KLVdlIHRoaW5rIG5laXRoZXIgYXBwcm9hY2ggaXMgaWRlYWwsIHlldCBl
aXRoZXIgb2YgdGhlbSBpcyByZWFzb25hYmxlLgotSW4gdGhlIGVuZCwgaXQgcHJvYmFibHkgZG9l
c24ndCBtYXR0ZXIgbXVjaCBlaXRoZXIgd2F5LgotCi0jIyBXaHkgZG9uJ3Qgd2UgdXNlIHN0cnVj
dHMgYXMgdGVzdCBmaXh0dXJlcz8gIyMKLQotV2UgbGlrZSB0byB1c2Ugc3RydWN0cyBvbmx5IHdo
ZW4gcmVwcmVzZW50aW5nIHBhc3NpdmUgZGF0YS4gIFRoaXMKLWRpc3RpbmN0aW9uIGJldHdlZW4g
c3RydWN0cyBhbmQgY2xhc3NlcyBpcyBnb29kIGZvciBkb2N1bWVudGluZyB0aGUKLWludGVudCBv
ZiB0aGUgY29kZSdzIGF1dGhvci4gIFNpbmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBsb2dpYyBsaWtl
Ci1gU2V0VXAoKWAgYW5kIGBUZWFyRG93bigpYCwgdGhleSBhcmUgYmV0dGVyIGRlZmluZWQgYXMg
Y2xhc3Nlcy4KLQotIyMgV2h5IGFyZSBkZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBhcyBhc3NlcnRp
b25zIGluc3RlYWQgb2YgdXNpbmcgYSB0ZXN0IHJ1bm5lcj8gIyMKLQotT3VyIGdvYWwgd2FzIHRv
IG1ha2UgZGVhdGggdGVzdHMgYXMgY29udmVuaWVudCBmb3IgYSB1c2VyIGFzIEMrKwotcG9zc2li
bHkgYWxsb3dzLiAgSW4gcGFydGljdWxhcjoKLQotICAqIFRoZSBydW5uZXItc3R5bGUgcmVxdWly
ZXMgdG8gc3BsaXQgdGhlIGluZm9ybWF0aW9uIGludG8gdHdvIHBpZWNlczogdGhlIGRlZmluaXRp
b24gb2YgdGhlIGRlYXRoIHRlc3QgaXRzZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRo
ZSBydW5uZXIgb24gaG93IHRvIHJ1biB0aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0byBleHBlY3Qu
ICBUaGUgZGVhdGggdGVzdCB3b3VsZCBiZSB3cml0dGVuIGluIEMrKywgd2hpbGUgdGhlIHJ1bm5l
ciBzcGVjIG1heSBvciBtYXkgbm90IGJlLiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVmdWxseSBrZWVw
IHRoZSB0d28gaW4gc3luYy4gYEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVjdGVkX21lc3Nh
Z2UpYCBzcGVjaWZpZXMgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUgcGxhY2UsIGlu
IG9uZSBsYW5ndWFnZSwgd2l0aG91dCBib2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2ZXJ5IGRlY2xh
cmF0aXZlLgotICAqIGBBU1NFUlRfREVBVEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4IGFuZCBlcnJv
ci1yZXBvcnRpbmcgc2VtYW50aWNzIGFzIG90aGVyIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsIGFu
ZCB0aHVzIGlzIGVhc3kgdG8gbGVhcm4uCi0gICogYEFTU0VSVF9ERUFUSGAgY2FuIGJlIG1peGVk
IHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBhbmQgb3RoZXIgbG9naWMgYXQgeW91ciB3aWxsLiAgWW91
IGFyZSBub3QgbGltaXRlZCB0byBvbmUgZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2QuIEZvciBl
eGFtcGxlLCB5b3UgY2FuIHdyaXRlIHNvbWV0aGluZyBsaWtlOgotYGBgCi0gICAgaWYgKEZvb0Nv
bmRpdGlvbigpKSB7Ci0gICAgICBBU1NFUlRfREVBVEgoQmFyKCksICJibGFoIik7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIEFTU0VSVF9FUSg1LCBCYXIoKSk7Ci0gICAgfQotYGBgCi1JZiB5b3UgcHJl
ZmVyIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZCwgeW91IGNhbiB3cml0ZSB5b3VyIHRl
c3RzIGluIHRoYXQgc3R5bGUgdG9vLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBpbXBvc2UgdGhhdCBv
biB0aGUgdXNlcnMuICBUaGUgZmV3ZXIgYXJ0aWZpY2lhbCBsaW1pdGF0aW9ucyB0aGUgYmV0dGVy
LgotICAqIGBBU1NFUlRfREVBVEhgIGNhbiByZWZlcmVuY2UgbG9jYWwgdmFyaWFibGVzIGluIHRo
ZSBjdXJyZW50IGZ1bmN0aW9uLCBhbmQgeW91IGNhbiBkZWNpZGUgaG93IG1hbnkgZGVhdGggdGVz
dHMgeW91IHdhbnQgYmFzZWQgb24gcnVuLXRpbWUgaW5mb3JtYXRpb24uICBGb3IgZXhhbXBsZSwK
LWBgYAotICAgIGNvbnN0IGludCBjb3VudCA9IEdldENvdW50KCk7ICAvLyBPbmx5IGtub3duIGF0
IHJ1biB0aW1lLgotICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKLSAgICAg
IEFTU0VSVF9ERUFUSCh7Ci0gICAgICAgIGRvdWJsZSogYnVmZmVyID0gbmV3IGRvdWJsZVtpXTsK
LSAgICAgICAgLi4uIGluaXRpYWxpemVzIGJ1ZmZlciAuLi4KLSAgICAgICAgRm9vKGJ1ZmZlciwg
aSkKLSAgICAgIH0sICJibGFoIGJsYWgiKTsKLSAgICB9Ci1gYGAKLVRoZSBydW5uZXItYmFzZWQg
YXBwcm9hY2ggdGVuZHMgdG8gYmUgbW9yZSBzdGF0aWMgYW5kIGxlc3MgZmxleGlibGUsIG9yIHJl
cXVpcmVzIG1vcmUgdXNlciBlZmZvcnQgdG8gZ2V0IHRoaXMga2luZCBvZiBmbGV4aWJpbGl0eS4K
LQotQW5vdGhlciBpbnRlcmVzdGluZyB0aGluZyBhYm91dCBgQVNTRVJUX0RFQVRIYCBpcyB0aGF0
IGl0IGNhbGxzIGBmb3JrKClgCi10byBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzIHRvIHJ1biB0aGUg
ZGVhdGggdGVzdC4gIFRoaXMgaXMgbGlnaHRlbmluZwotZmFzdCwgYXMgYGZvcmsoKWAgdXNlcyBj
b3B5LW9uLXdyaXRlIHBhZ2VzIGFuZCBpbmN1cnMgYWxtb3N0IHplcm8KLW92ZXJoZWFkLCBhbmQg
dGhlIGNoaWxkIHByb2Nlc3Mgc3RhcnRzIGZyb20gdGhlIHVzZXItc3VwcGxpZWQKLXN0YXRlbWVu
dCBkaXJlY3RseSwgc2tpcHBpbmcgYWxsIGdsb2JhbCBhbmQgbG9jYWwgaW5pdGlhbGl6YXRpb24g
YW5kCi1hbnkgY29kZSBsZWFkaW5nIHRvIHRoZSBnaXZlbiBzdGF0ZW1lbnQuICBJZiB5b3UgbGF1
bmNoIHRoZSBjaGlsZAotcHJvY2VzcyBmcm9tIHNjcmF0Y2gsIGl0IGNhbiB0YWtlIHNlY29uZHMg
anVzdCB0byBsb2FkIGV2ZXJ5dGhpbmcgYW5kCi1zdGFydCBydW5uaW5nIGlmIHRoZSB0ZXN0IGxp
bmtzIHRvIG1hbnkgbGlicmFyaWVzIGR5bmFtaWNhbGx5LgotCi0jIyBNeSBkZWF0aCB0ZXN0IG1v
ZGlmaWVzIHNvbWUgc3RhdGUsIGJ1dCB0aGUgY2hhbmdlIHNlZW1zIGxvc3QgYWZ0ZXIgdGhlIGRl
YXRoIHRlc3QgZmluaXNoZXMuIFdoeT8gIyMKLQotRGVhdGggdGVzdHMgKGBFWFBFQ1RfREVBVEhg
LCBldGMpIGFyZSBleGVjdXRlZCBpbiBhIHN1Yi1wcm9jZXNzIHMudC4gdGhlCi1leHBlY3RlZCBj
cmFzaCB3b24ndCBraWxsIHRoZSB0ZXN0IHByb2dyYW0gKGkuZS4gdGhlIHBhcmVudCBwcm9jZXNz
KS4gQXMgYQotcmVzdWx0LCBhbnkgaW4tbWVtb3J5IHNpZGUgZWZmZWN0cyB0aGV5IGluY3VyIGFy
ZSBvYnNlcnZhYmxlIGluIHRoZWlyCi1yZXNwZWN0aXZlIHN1Yi1wcm9jZXNzZXMsIGJ1dCBub3Qg
aW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRoaW5rIG9mIHRoZW0KLWFzIHJ1bm5pbmcg
aW4gYSBwYXJhbGxlbCB1bml2ZXJzZSwgbW9yZSBvciBsZXNzLgotCi0jIyBUaGUgY29tcGlsZXIg
Y29tcGxhaW5zIGFib3V0ICJ1bmRlZmluZWQgcmVmZXJlbmNlcyIgdG8gc29tZSBzdGF0aWMgY29u
c3QgbWVtYmVyIHZhcmlhYmxlcywgYnV0IEkgZGlkIGRlZmluZSB0aGVtIGluIHRoZSBjbGFzcyBi
b2R5LiBXaGF0J3Mgd3Jvbmc/ICMjCi0KLUlmIHlvdXIgY2xhc3MgaGFzIGEgc3RhdGljIGRhdGEg
bWVtYmVyOgotCi1gYGAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSAgc3RhdGljIGNv
bnN0IGludCBrQmFyID0gMTAwOwotfTsKLWBgYAotCi1Zb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBp
dCBfb3V0c2lkZV8gb2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6Ci0KLWBgYAotY29uc3Qg
aW50IEZvbzo6a0JhcjsgIC8vIE5vIGluaXRpYWxpemVyIGhlcmUuCi1gYGAKLQotT3RoZXJ3aXNl
IHlvdXIgY29kZSBpcyAqKmludmFsaWQgQysrKiosIGFuZCBtYXkgYnJlYWsgaW4gdW5leHBlY3Rl
ZCB3YXlzLiBJbgotcGFydGljdWxhciwgdXNpbmcgaXQgaW4gR29vZ2xlIFRlc3QgY29tcGFyaXNv
biBhc3NlcnRpb25zIChgRVhQRUNUX0VRYCwgZXRjKQotd2lsbCBnZW5lcmF0ZSBhbiAidW5kZWZp
bmVkIHJlZmVyZW5jZSIgbGlua2VyIGVycm9yLgotCi0jIyBJIGhhdmUgYW4gaW50ZXJmYWNlIHRo
YXQgaGFzIHNldmVyYWwgaW1wbGVtZW50YXRpb25zLiBDYW4gSSB3cml0ZSBhIHNldCBvZiB0ZXN0
cyBvbmNlIGFuZCByZXBlYXQgdGhlbSBvdmVyIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zPyAjIwot
Ci1Hb29nbGUgVGVzdCBkb2Vzbid0IHlldCBoYXZlIGdvb2Qgc3VwcG9ydCBmb3IgdGhpcyBraW5k
IG9mIHRlc3RzLCBvcgotZGF0YS1kcml2ZW4gdGVzdHMgaW4gZ2VuZXJhbC4gV2UgaG9wZSB0byBi
ZSBhYmxlIHRvIG1ha2UgaW1wcm92ZW1lbnRzIGluIHRoaXMKLWFyZWEgc29vbi4KLQotIyMgQ2Fu
IEkgZGVyaXZlIGEgdGVzdCBmaXh0dXJlIGZyb20gYW5vdGhlcj8gIyMKLQotWWVzLgotCi1FYWNo
IHRlc3QgZml4dHVyZSBoYXMgYSBjb3JyZXNwb25kaW5nIGFuZCBzYW1lIG5hbWVkIHRlc3QgY2Fz
ZS4gVGhpcyBtZWFucyBvbmx5Ci1vbmUgdGVzdCBjYXNlIGNhbiB1c2UgYSBwYXJ0aWN1bGFyIGZp
eHR1cmUuIFNvbWV0aW1lcywgaG93ZXZlciwgbXVsdGlwbGUgdGVzdAotY2FzZXMgbWF5IHdhbnQg
dG8gdXNlIHRoZSBzYW1lIG9yIHNsaWdodGx5IGRpZmZlcmVudCBmaXh0dXJlcy4gRm9yIGV4YW1w
bGUsIHlvdQotbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIGEgR1VJIGxpYnJhcnkn
cyB0ZXN0IGNhc2VzIGRvbid0IGxlYWsKLWltcG9ydGFudCBzeXN0ZW0gcmVzb3VyY2VzIGxpa2Ug
Zm9udHMgYW5kIGJydXNoZXMuCi0KLUluIEdvb2dsZSBUZXN0LCB5b3Ugc2hhcmUgYSBmaXh0dXJl
IGFtb25nIHRlc3QgY2FzZXMgYnkgcHV0dGluZyB0aGUgc2hhcmVkCi1sb2dpYyBpbiBhIGJhc2Ug
dGVzdCBmaXh0dXJlLCB0aGVuIGRlcml2aW5nIGZyb20gdGhhdCBiYXNlIGEgc2VwYXJhdGUgZml4
dHVyZQotZm9yIGVhY2ggdGVzdCBjYXNlIHRoYXQgd2FudHMgdG8gdXNlIHRoaXMgY29tbW9uIGxv
Z2ljLiBZb3UgdGhlbiB1c2UgYFRFU1RfRigpYAotdG8gd3JpdGUgdGVzdHMgdXNpbmcgZWFjaCBk
ZXJpdmVkIGZpeHR1cmUuCi0KLVR5cGljYWxseSwgeW91ciBjb2RlIGxvb2tzIGxpa2UgdGhpczoK
LQotYGBgCi0vLyBEZWZpbmVzIGEgYmFzZSB0ZXN0IGZpeHR1cmUuCi1jbGFzcyBCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotICBwcm90ZWN0ZWQ6Ci0gICAuLi4KLX07Ci0KLS8v
IERlcml2ZXMgYSBmaXh0dXJlIEZvb1Rlc3QgZnJvbSBCYXNlVGVzdC4KLWNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgQmFzZVRlc3QgewotICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVw
KCkgewotICAgICAgQmFzZVRlc3Q6OlNldFVwKCk7ICAvLyBTZXRzIHVwIHRoZSBiYXNlIGZpeHR1
cmUgZmlyc3QuCi0gICAgICAuLi4gYWRkaXRpb25hbCBzZXQtdXAgd29yayAuLi4KLSAgICB9Ci0g
ICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgICAgLi4uIGNsZWFuLXVwIHdvcmsgZm9y
IEZvb1Rlc3QgLi4uCi0gICAgICBCYXNlVGVzdDo6VGVhckRvd24oKTsgIC8vIFJlbWVtYmVyIHRv
IHRlYXIgZG93biB0aGUgYmFzZSBmaXh0dXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFmdGVyIGNsZWFuaW5nIHVwIEZvb1Rlc3QhCi0gICAgfQotICAgIC4uLiBmdW5jdGlvbnMg
YW5kIHZhcmlhYmxlcyBmb3IgRm9vVGVzdCAuLi4KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdXNlIHRo
ZSBmaXh0dXJlIEZvb1Rlc3QuCi1URVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9Ci1URVNUX0Yo
Rm9vVGVzdCwgQmF6KSB7IC4uLiB9Ci0KLS4uLiBhZGRpdGlvbmFsIGZpeHR1cmVzIGRlcml2ZWQg
ZnJvbSBCYXNlVGVzdCAuLi4KLWBgYAotCi1JZiBuZWNlc3NhcnksIHlvdSBjYW4gY29udGludWUg
dG8gZGVyaXZlIHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQgZml4dHVyZS4KLUdvb2dsZSBU
ZXN0IGhhcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5IGNhbiBiZS4KLQotRm9y
IGEgY29tcGxldGUgZXhhbXBsZSB1c2luZyBkZXJpdmVkIHRlc3QgZml4dHVyZXMsIHNlZQotW3Nh
bXBsZTVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykuCi0KLSMjIE15IGNvbXBpbGVy
IGNvbXBsYWlucyAidm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBiZS4iIFdo
YXQgZG9lcyB0aGlzIG1lYW4/ICMjCi0KLVlvdSdyZSBwcm9iYWJseSB1c2luZyBhbiBgQVNTRVJU
XyooKWAgaW4gYSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuIGB2b2lkYC4KLWBBU1NFUlRf
KigpYCBjYW4gb25seSBiZSB1c2VkIGluIGB2b2lkYCBmdW5jdGlvbnMuCi0KLSMjIE15IGRlYXRo
IHRlc3QgaGFuZ3MgKG9yIHNlZy1mYXVsdHMpLiBIb3cgZG8gSSBmaXggaXQ/ICMjCi0KLUluIEdv
b2dsZSBUZXN0LCBkZWF0aCB0ZXN0cyBhcmUgcnVuIGluIGEgY2hpbGQgcHJvY2VzcyBhbmQgdGhl
IHdheSB0aGV5IHdvcmsgaXMKLWRlbGljYXRlLiBUbyB3cml0ZSBkZWF0aCB0ZXN0cyB5b3UgcmVh
bGx5IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSB3b3JrLgotUGxlYXNlIG1ha2Ugc3VyZSB5
b3UgaGF2ZSByZWFkIHRoaXMuCi0KLUluIHBhcnRpY3VsYXIsIGRlYXRoIHRlc3RzIGRvbid0IGxp
a2UgaGF2aW5nIG11bHRpcGxlIHRocmVhZHMgaW4gdGhlIHBhcmVudAotcHJvY2Vzcy4gU28gdGhl
IGZpcnN0IHRoaW5nIHlvdSBjYW4gdHJ5IGlzIHRvIGVsaW1pbmF0ZSBjcmVhdGluZyB0aHJlYWRz
Ci1vdXRzaWRlIG9mIGBFWFBFQ1RfREVBVEgoKWAuCi0KLVNvbWV0aW1lcyB0aGlzIGlzIGltcG9z
c2libGUgYXMgc29tZSBsaWJyYXJ5IHlvdSBtdXN0IHVzZSBtYXkgYmUgY3JlYXRpbmcKLXRocmVh
ZHMgYmVmb3JlIGBtYWluKClgIGlzIGV2ZW4gcmVhY2hlZC4gSW4gdGhpcyBjYXNlLCB5b3UgY2Fu
IHRyeSB0byBtaW5pbWl6ZQotdGhlIGNoYW5jZSBvZiBjb25mbGljdHMgYnkgZWl0aGVyIG1vdmlu
ZyBhcyBtYW55IGFjdGl2aXRpZXMgYXMgcG9zc2libGUgaW5zaWRlCi1gRVhQRUNUX0RFQVRIKClg
IChpbiB0aGUgZXh0cmVtZSBjYXNlLCB5b3Ugd2FudCB0byBtb3ZlIGV2ZXJ5dGhpbmcgaW5zaWRl
KSwgb3IKLWxlYXZpbmcgYXMgZmV3IHRoaW5ncyBhcyBwb3NzaWJsZSBpbiBpdC4gQWxzbywgeW91
IGNhbiB0cnkgdG8gc2V0IHRoZSBkZWF0aAotdGVzdCBzdHlsZSB0byBgInRocmVhZHNhZmUiYCwg
d2hpY2ggaXMgc2FmZXIgYnV0IHNsb3dlciwgYW5kIHNlZSBpZiBpdCBoZWxwcy4KLQotSWYgeW91
IGdvIHdpdGggdGhyZWFkLXNhZmUgZGVhdGggdGVzdHMsIHJlbWVtYmVyIHRoYXQgdGhleSByZXJ1
biB0aGUgdGVzdAotcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nl
c3MuIFRoZXJlZm9yZSBtYWtlIHN1cmUgeW91cgotcHJvZ3JhbSBjYW4gcnVuIHNpZGUtYnktc2lk
ZSB3aXRoIGl0c2VsZiBhbmQgaXMgZGV0ZXJtaW5pc3RpYy4KLQotSW4gdGhlIGVuZCwgdGhpcyBi
b2lscyBkb3duIHRvIGdvb2QgY29uY3VycmVudCBwcm9ncmFtbWluZy4gWW91IGhhdmUgdG8gbWFr
ZQotc3VyZSB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9ucyBvciBkZWFkIGxvY2tzIGlu
IHlvdXIgcHJvZ3JhbS4gTm8gc2lsdmVyCi1idWxsZXQgLSBzb3JyeSEKLQotIyMgU2hvdWxkIEkg
dXNlIHRoZSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIG9mIHRoZSB0ZXN0IGZpeHR1cmUgb3IgdGhl
IHNldC11cC90ZWFyLWRvd24gZnVuY3Rpb24/ICMjCi0KLVRoZSBmaXJzdCB0aGluZyB0byByZW1l
bWJlciBpcyB0aGF0IEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZQotc2FtZSB0ZXN0IGZp
eHR1cmUgb2JqZWN0IGFjcm9zcyBtdWx0aXBsZSB0ZXN0cy4gRm9yIGVhY2ggYFRFU1RfRmAsCi1H
b29nbGUgVGVzdCB3aWxsIGNyZWF0ZSBhIGZyZXNoIHRlc3QgZml4dHVyZSBvYmplY3QsIF9pbW1l
ZGlhdGVseV8KLWNhbGwgYFNldFVwKClgLCBydW4gdGhlIHRlc3QsIGNhbGwgYFRlYXJEb3duKClg
LCBhbmQgdGhlbgotX2ltbWVkaWF0ZWx5XyBkZWxldGUgdGhlIHRlc3QgZml4dHVyZSBvYmplY3Qu
IFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8KLW5lZWQgdG8gd3JpdGUgYSBgU2V0VXAoKWAgb3IgYFRl
YXJEb3duKClgIGZ1bmN0aW9uIGlmIHRoZSBjb25zdHJ1Y3Rvcgotb3IgZGVzdHJ1Y3RvciBhbHJl
YWR5IGRvZXMgdGhlIGpvYi4KLQotWW91IG1heSBzdGlsbCB3YW50IHRvIHVzZSBgU2V0VXAoKS9U
ZWFyRG93bigpYCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgotICAqIElmIHRoZSB0ZWFyLWRvd24g
b3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNlIGBUZWFyRG93
bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBpbiBhIGRlc3Ry
dWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5
b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVz
IChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUg
Y29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91
IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBl
eGNlcHRpb25zLgotICAqIFRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IGFuIGV4Y2VwdGlvbiB3
aGVuIGZsYWcgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgaXMgc3BlY2lmaWVkLiBUaGVyZWZv
cmUsIHlvdSBzaG91bGRuJ3QgdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYSBkZXN0cnVj
dG9yIGlmIHlvdSBwbGFuIHRvIHJ1biB5b3VyIHRlc3RzIHdpdGggdGhpcyBmbGFnLgotICAqIElu
IGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBm
dW5jdGlvbiBjYWxsIG9uIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEgbWV0aG9kIGRlY2xh
cmVkIGFzIHZpcnR1YWwsIGJ1dCBpdCB3aWxsIGJlIHN0YXRpY2FsbHkgYm91bmQuKSBUaGVyZWZv
cmUsIGlmIHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3aWxsIGJlIG92ZXJyaWRlbiBp
biBhIGRlcml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYC4K
LQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2Fs
bCIgd2hlbiBJIHVzZSBBU1NFUlRcX1BSRURuLiBIb3cgZG8gSSBmaXggaXQ/ICMjCi0KLUlmIHRo
ZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNU
X1BSRUQqYCBpcwotb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0aGUgY29tcGlsZXIgd2lsbCBo
YXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCi1vdmVybG9hZGVkIHZlcnNpb24gaXQgc2hv
dWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAotYEVYUEVDVF9QUkVEX0ZPUk1BVCpg
IGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgotCi1JZiB5b3Ugc2VlIHRoaXMgZXJyb3IsIHlvdSBt
aWdodCB3YW50IHRvIHN3aXRjaCB0bwotYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgLCB3
aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVyZQotbWVzc2FnZS4gSWYsIGhv
d2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVt
IGJ5Ci1leHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24gdG8gcGlj
ay4KLQotRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKLQotYGBgCi1ib29sIElzUG9zaXRp
dmUoaW50IG4pIHsKLSAgcmV0dXJuIG4gPiAwOwotfQotYm9vbCBJc1Bvc2l0aXZlKGRvdWJsZSB4
KSB7Ci0gIHJldHVybiB4ID4gMDsKLX0KLWBgYAotCi15b3Ugd2lsbCBnZXQgYSBjb21waWxlciBl
cnJvciBpZiB5b3Ugd3JpdGUKLQotYGBgCi1FWFBFQ1RfUFJFRDEoSXNQb3NpdGl2ZSwgNSk7Ci1g
YGAKLQotSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6Ci0KLWBgYAotRVhQRUNUX1BSRUQxKCpzdGF0
aWNfY2FzdDxib29sICgqKShpbnQpPiooSXNQb3NpdGl2ZSksIDUpOwotYGBgCi0KLShUaGUgc3R1
ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBgc3RhdGljX2Nhc3RgIG9wZXJh
dG9yIGlzIHRoZQotdHlwZSBvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhlIGBpbnRgLXZl
cnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQotCi1BcyBhbm90aGVyIGV4YW1wbGUsIHdoZW4geW91
IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Ym9vbCBJc05lZ2F0aXZlKFQgeCkgewotICByZXR1cm4geCA8IDA7Ci19Ci1gYGAKLQoteW91IGNh
biB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2UgdGhpczoKLQotYGBgCi1BU1NF
UlRfUFJFRDEoSXNOZWdhdGl2ZSo8aW50PiosIC01KTsKLWBgYAotCi1UaGluZ3MgYXJlIG1vcmUg
aW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJz
LiBUaGUKLWZvbGxvd2luZyB3b24ndCBjb21waWxlOgotCi1gYGAKLUFTU0VSVF9QUkVEMigqR3Jl
YXRlclRoYW48aW50LCBpbnQ+KiwgNSwgMCk7Ci1gYGAKLQotCi1hcyB0aGUgQysrIHByZS1wcm9j
ZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NFUlRfUFJFRDJgIDQgYXJndW1lbnRzLAot
d2hpY2ggaXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4gVGhlIHdvcmthcm91bmQgaXMgdG8gd3Jh
cCB0aGUgcHJlZGljYXRlCi1mdW5jdGlvbiBpbiBwYXJlbnRoZXNlczoKLQotYGBgCi1BU1NFUlRf
UFJFRDIoKihHcmVhdGVyVGhhbjxpbnQsIGludD4pKiwgNSwgMCk7Ci1gYGAKLQotCi0jIyBNeSBj
b21waWxlciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNh
bGwgUlVOXF9BTExcX1RFU1RTKCkuIFdoeT8gIyMKLQotU29tZSBwZW9wbGUgaGFkIGJlZW4gaWdu
b3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4gVGhhdCBpcywKLWlu
c3RlYWQgb2YKLQotYGBgCi1yZXR1cm4gUlVOX0FMTF9URVNUUygpOwotYGBgCi0KLXRoZXkgd3Jp
dGUKLQotYGBgCi1SVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotVGhpcyBpcyB3cm9uZyBhbmQgZGFu
Z2Vyb3VzLiBBIHRlc3QgcnVubmVyIG5lZWRzIHRvIHNlZSB0aGUgcmV0dXJuIHZhbHVlIG9mCi1g
UlVOX0FMTF9URVNUUygpYCBpbiBvcmRlciB0byBkZXRlcm1pbmUgaWYgYSB0ZXN0IGhhcyBwYXNz
ZWQuIElmIHlvdXIgYG1haW4oKWAKLWZ1bmN0aW9uIGlnbm9yZXMgaXQsIHlvdXIgdGVzdCB3aWxs
IGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBldmVuIGlmIGl0IGhhcyBhCi1Hb29nbGUgVGVzdCBh
c3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCi0KLVRvIGhlbHAgdGhlIHVzZXJzIGF2b2lkIHRo
aXMgZGFuZ2Vyb3VzIGJ1ZywgdGhlIGltcGxlbWVudGF0aW9uIG9mCi1gUlVOX0FMTF9URVNUUygp
YCBjYXVzZXMgZ2NjIHRvIHJhaXNlIHRoaXMgd2FybmluZywgd2hlbiB0aGUgcmV0dXJuIHZhbHVl
IGlzCi1pZ25vcmVkLiBJZiB5b3Ugc2VlIHRoaXMgd2FybmluZywgdGhlIGZpeCBpcyBzaW1wbGU6
IGp1c3QgbWFrZSBzdXJlIGl0cyB2YWx1ZQotaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9m
IGBtYWluKClgLgotCi0jIyBNeSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9y
IChvciBkZXN0cnVjdG9yKSBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8g
IyMKLQotRHVlIHRvIGEgcGVjdWxpYXJpdHkgb2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRo
ZSBzeW50YXggZm9yIHN0cmVhbWluZwotbWVzc2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgot
Ci1gYGAKLUFTU0VSVF9FUSgxLCBGb28oKSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOwotYGBgCi0K
LXdlIGhhZCB0byBnaXZlIHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBg
RVhQRUNUKmAgYW5kCi1gQUREX0ZBSUxVUkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVj
dG9ycy4gVGhlIHdvcmthcm91bmQgaXMgdG8gbW92ZSB0aGUKLWNvbnRlbnQgb2YgeW91ciBjb25z
dHJ1Y3Rvci9kZXN0cnVjdG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IK
LXN3aXRjaCB0byBgRVhQRUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4gVGhpcyBzZWN0aW9uIGluIHRo
ZSB1c2VyJ3MgZ3VpZGUgZXhwbGFpbnMKLWl0LgotCi0jIyBNeSBzZXQtdXAgZnVuY3Rpb24gaXMg
bm90IGNhbGxlZC4gV2h5PyAjIwotCi1DKysgaXMgY2FzZS1zZW5zaXRpdmUuIEl0IHNob3VsZCBi
ZSBzcGVsbGVkIGFzIGBTZXRVcCgpYC4gIERpZCB5b3UKLXNwZWxsIGl0IGFzIGBTZXR1cCgpYD8K
LQotU2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRlc3RDYXNlKClgIGFz
IGBTZXR1cFRlc3RDYXNlKClgIGFuZAotd29uZGVyIHdoeSBpdCdzIG5ldmVyIGNhbGxlZC4KLQot
IyMgSG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4gRW1hY3MgZGlyZWN0
bHk/ICMjCi0KLUdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0
b29kIGJ5IEVtYWNzIGFuZCBtYW55IG90aGVyCi1JREVzLCBsaWtlIGFjbWUgYW5kIFhDb2RlLiBJ
ZiBhIEdvb2dsZSBUZXN0IG1lc3NhZ2UgaXMgaW4gYSBjb21waWxhdGlvbiBidWZmZXIKLWluIEVt
YWNzLCB0aGVuIGl0J3MgY2xpY2thYmxlLiBZb3UgY2FuIG5vdyBoaXQgYGVudGVyYCBvbiBhIG1l
c3NhZ2UgdG8ganVtcCB0bwotdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIG9yIHVzZSBg
Qy14IGBgIHRvIGp1bXAgdG8gdGhlIG5leHQgZmFpbHVyZS4KLQotIyMgSSBoYXZlIHNldmVyYWwg
dGVzdCBjYXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgbG9naWMsIGRvIEkg
aGF2ZSB0byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNzIGZvciBlYWNoIG9mIHRoZW0/
IFRoaXMgc2VlbXMgcHJldHR5IHRlZGlvdXMuICMjCi0KLVlvdSBkb24ndCBoYXZlIHRvLiBJbnN0
ZWFkIG9mCi0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKLQotVEVT
VF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQot
Ci1jbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OwotCi1URVNUX0YoQmFyVGVzdCwg
QWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9Ci1gYGAKLQoteW91IGNh
biBzaW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgotYGBgCi10eXBlZGVmIEJhc2VU
ZXN0IEZvb1Rlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihGb29U
ZXN0LCBEZWYpIHsgLi4uIH0KLQotdHlwZWRlZiBCYXNlVGVzdCBCYXJUZXN0OwotCi1URVNUX0Yo
QmFyVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9Ci1gYGAK
LQotIyMgVGhlIEdvb2dsZSBUZXN0IG91dHB1dCBpcyBidXJpZWQgaW4gYSB3aG9sZSBidW5jaCBv
ZiBsb2cgbWVzc2FnZXMuIFdoYXQgZG8gSSBkbz8gIyMKLQotVGhlIEdvb2dsZSBUZXN0IG91dHB1
dCBpcyBtZWFudCB0byBiZSBhIGNvbmNpc2UgYW5kIGh1bWFuLWZyaWVuZGx5IHJlcG9ydC4gSWYK
LXlvdXIgdGVzdCBnZW5lcmF0ZXMgdGV4dHVhbCBvdXRwdXQgaXRzZWxmLCBpdCB3aWxsIG1peCB3
aXRoIHRoZSBHb29nbGUgVGVzdAotb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dl
dmVyLCB0aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKLXByb2JsZW0uCi0KLVNpbmNl
IG1vc3QgbG9nIG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgR29vZ2xl
IFRlc3Qgb3V0cHV0IGdvCi10byBzdGRvdXQuIFRoaXMgd2F5LCB5b3UgY2FuIGVhc2lseSBzZXBh
cmF0ZSB0aGUgdHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKLWV4YW1wbGU6Ci1gYGAKLS4vbXlf
dGVzdCA+IGdvb2dsZXRlc3Rfb3V0cHV0LnR4dAotYGBgCi0KLSMjIFdoeSBzaG91bGQgSSBwcmVm
ZXIgdGVzdCBmaXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/ICMjCi0KLVRoZXJlIGFyZSBz
ZXZlcmFsIGdvb2QgcmVhc29uczoKLSAgMS4gSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRv
IGNoYW5nZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIG1ha2VzIGl0
IGRpZmZpY3VsdCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVzY2FwaW5nIG9uZSB0ZXN0IGFu
ZCBjb250YW1pbmF0aW5nIG90aGVycywgbWFraW5nIGRlYnVnZ2luZyBkaWZmaWN1bHQuIEJ5IHVz
aW5nIGZpeHR1cmVzLCBlYWNoIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlhYmxlcyB0aGF0
J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZSBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBr
ZXB0IGluZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIuCi0gIDEuIEdsb2JhbCB2YXJpYWJsZXMgcG9s
bHV0ZSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLSAgMS4gVGVzdCBmaXh0dXJlcyBjYW4gYmUgcmV1
c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFzaWx5IHdpdGggZ2xv
YmFsIHZhcmlhYmxlcy4gVGhpcyBpcyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29t
ZXRoaW5nIGluIGNvbW1vbi4KLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIG1lbWJl
cnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKLQotWW91IHNob3VsZCB0cnkg
dG8gd3JpdGUgdGVzdGFibGUgY29kZSwgd2hpY2ggbWVhbnMgY2xhc3NlcyBzaG91bGQgYmUgZWFz
aWx5Ci10ZXN0ZWQgZnJvbSB0aGVpciBwdWJsaWMgaW50ZXJmYWNlLiBPbmUgd2F5IHRvIGFjaGll
dmUgdGhpcyBpcyB0aGUgUGltcGwgaWRpb206Ci15b3UgbW92ZSBhbGwgcHJpdmF0ZSBtZW1iZXJz
IG9mIGEgY2xhc3MgaW50byBhIGhlbHBlciBjbGFzcywgYW5kIG1ha2UgYWxsCi1tZW1iZXJzIG9m
IHRoZSBoZWxwZXIgY2xhc3MgcHVibGljLgotCi1Zb3UgaGF2ZSBzZXZlcmFsIG90aGVyIG9wdGlv
bnMgdGhhdCBkb24ndCByZXF1aXJlIHVzaW5nIGBGUklFTkRfVEVTVGA6Ci0gICogV3JpdGUgdGhl
IHRlc3RzIGFzIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3M6Ci1gYGAKLWNsYXNzIEZvbyB7
Ci0gIGZyaWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICB2b2lkIFRlc3Qx
KCkgey4uLn0gLy8gVGhpcyBhY2Nlc3NlcyBwcml2YXRlIG1lbWJlcnMgb2YgY2xhc3MgRm9vLgot
ICB2b2lkIFRlc3QyKCkgey4uLn0gLy8gU28gZG9lcyB0aGlzIG9uZS4KLX07Ci0KLVRFU1RfRihG
b29UZXN0LCBUZXN0MSkgewotICBUZXN0MSgpOwotfQotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDIp
IHsKLSAgVGVzdDIoKTsKLX0KLWBgYAotICAqIEluIHRoZSBmaXh0dXJlIGNsYXNzLCB3cml0ZSBh
Y2Nlc3NvcnMgZm9yIHRoZSB0ZXN0ZWQgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgdGhlbiB1c2Ug
dGhlIGFjY2Vzc29ycyBpbiB5b3VyIHRlc3RzOgotYGBgCi1jbGFzcyBGb28gewotICBmcmllbmQg
Y2xhc3MgRm9vVGVzdDsKLSAgLi4uCi19OwotCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLSAgVDEgZ2V0X3ByaXZhdGVfbWVtYmVy
MShGb28qIG9iaikgewotICAgIHJldHVybiBvYmotPnByaXZhdGVfbWVtYmVyMV87Ci0gIH0KLX07
Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotICAuLi4KLSAgZ2V0X3ByaXZhdGVfbWVtYmVy
MSh4KQotICAuLi4KLX0KLWBgYAotICAqIElmIHRoZSBtZXRob2RzIGFyZSBkZWNsYXJlZCAqKnBy
b3RlY3RlZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3MgbGV2ZWwgaW4gYSB0ZXN0LW9u
bHkgc3ViY2xhc3M6Ci1gYGAKLWNsYXNzIFlvdXJDbGFzcyB7Ci0gIC4uLgotIHByb3RlY3RlZDog
Ly8gcHJvdGVjdGVkIGFjY2VzcyBmb3IgdGVzdGFiaWxpdHkuCi0gIGludCBEb1NvbWV0aGluZ1Jl
dHVybmluZ0ludCgpOwotICAuLi4KLX07Ci0KLS8vIGluIHRoZSB5b3VyX2NsYXNzX3Rlc3QuY2Mg
ZmlsZToKLWNsYXNzIFRlc3RhYmxlWW91ckNsYXNzIDogcHVibGljIFlvdXJDbGFzcyB7Ci0gIC4u
LgotIHB1YmxpYzogdXNpbmcgWW91ckNsYXNzOjpEb1NvbWV0aGluZ1JldHVybmluZ0ludDsgLy8g
Y2hhbmdlcyBhY2Nlc3MgcmlnaHRzCi0gIC4uLgotfTsKLQotVEVTVF9GKFlvdXJDbGFzc1Rlc3Qs
IERvU29tZXRoaW5nVGVzdCkgewotICBUZXN0YWJsZVlvdXJDbGFzcyBvYmo7Ci0gIGFzc2VydEVx
dWFscyhleHBlY3RlZF92YWx1ZSwgb2JqLkRvU29tZXRoaW5nUmV0dXJuaW5nSW50KCkpOwotfQot
YGBgCi0KLSMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBzdGF0aWMgbWVtYmVycyB3aXRo
b3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1XZSBmaW5kIHByaXZhdGUgc3RhdGlj
IG1ldGhvZHMgY2x1dHRlciB0aGUgaGVhZGVyIGZpbGUuICBUaGV5IGFyZQotaW1wbGVtZW50YXRp
b24gZGV0YWlscyBhbmQgaWRlYWxseSBzaG91bGQgYmUga2VwdCBvdXQgb2YgYSAuaC4gU28gb2Z0
ZW4gSSBtYWtlCi10aGVtIGZyZWUgZnVuY3Rpb25zIGluc3RlYWQuCi0KLUluc3RlYWQgb2Y6Ci1g
YGAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSBwcml2YXRlOgotICBzdGF0aWMgYm9v
bCBGdW5jKGludCBuKTsKLX07Ci0KLS8vIGZvby5jYwotYm9vbCBGb286OkZ1bmMoaW50IG4pIHsg
Li4uIH0KLQotLy8gZm9vX3Rlc3QuY2MKLUVYUEVDVF9UUlVFKEZvbzo6RnVuYygxMjM0NSkpOwot
YGBgCi0KLVlvdSBwcm9iYWJseSBzaG91bGQgYmV0dGVyIHdyaXRlOgotYGBgCi0vLyBmb28uaAot
Y2xhc3MgRm9vIHsKLSAgLi4uCi19OwotCi0vLyBmb28uY2MKLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0gIGJvb2wgRnVuYyhpbnQgbikgeyAuLi4gfQotfQotCi0vLyBmb29fdGVzdC5jYwotbmFtZXNw
YWNlIGludGVybmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKTsKLX0KLQotRVhQRUNUX1RSVUUoaW50
ZXJuYWw6OkZ1bmMoMTIzNDUpKTsKLWBgYAotCi0jIyBJIHdvdWxkIGxpa2UgdG8gcnVuIGEgdGVz
dCBzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMuIERvIEkgbmVlZCB0byB3
cml0ZSBzZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAjIwotCi1Oby4gWW91IGNhbiB1c2Ug
YSBmZWF0dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c10oVjFfN19BZHZhbmNl
ZEd1aWRlLm1kI1ZhbHVlX1BhcmFtZXRlcml6ZWRfVGVzdHMpIHdoaWNoCi1sZXRzIHlvdSByZXBl
YXQgeW91ciB0ZXN0cyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLCB3aXRob3V0IGRlZmluaW5n
IGl0IG1vcmUgdGhhbiBvbmNlLgotCi0jIyBIb3cgZG8gSSB0ZXN0IGEgZmlsZSB0aGF0IGRlZmlu
ZXMgbWFpbigpPyAjIwotCi1UbyB0ZXN0IGEgYGZvby5jY2AgZmlsZSwgeW91IG5lZWQgdG8gY29t
cGlsZSBhbmQgbGluayBpdCBpbnRvIHlvdXIgdW5pdCB0ZXN0Ci1wcm9ncmFtLiBIb3dldmVyLCB3
aGVuIHRoZSBmaWxlIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGBtYWluKClgCi1mdW5j
dGlvbiwgaXQgd2lsbCBjbGFzaCB3aXRoIHRoZSBgbWFpbigpYCBvZiB5b3VyIHVuaXQgdGVzdCwg
YW5kIHdpbGwgcmVzdWx0IGluCi1hIGJ1aWxkIGVycm9yLgotCi1UaGUgcmlnaHQgc29sdXRpb24g
aXMgdG8gc3BsaXQgaXQgaW50byB0aHJlZSBmaWxlczoKLSAgMS4gYGZvby5oYCB3aGljaCBjb250
YWlucyB0aGUgZGVjbGFyYXRpb25zLAotICAxLiBgZm9vLmNjYCB3aGljaCBjb250YWlucyB0aGUg
ZGVmaW5pdGlvbnMgZXhjZXB0IGBtYWluKClgLCBhbmQKLSAgMS4gYGZvb19tYWluLmNjYCB3aGlj
aCBjb250YWlucyBub3RoaW5nIGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiBgbWFpbigpYC4KLQotVGhl
biBgZm9vLmNjYCBjYW4gYmUgZWFzaWx5IHRlc3RlZC4KLQotSWYgeW91IGFyZSBhZGRpbmcgdGVz
dHMgdG8gYW4gZXhpc3RpbmcgZmlsZSBhbmQgZG9uJ3Qgd2FudCBhbiBpbnRydXNpdmUgY2hhbmdl
Ci1saWtlIHRoaXMsIHRoZXJlIGlzIGEgaGFjazoganVzdCBpbmNsdWRlIHRoZSBlbnRpcmUgYGZv
by5jY2AgZmlsZSBpbiB5b3VyIHVuaXQKLXRlc3QuIEZvciBleGFtcGxlOgotYGBgCi0vLyBGaWxl
IGZvb191bml0dGVzdC5jYwotCi0vLyBUaGUgaGVhZGVycyBzZWN0aW9uCi0uLi4KLQotLy8gUmVu
YW1lcyBtYWluKCkgaW4gZm9vLmNjIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHVuaXQgdGVzdCBtYWlu
KCkKLSNkZWZpbmUgbWFpbiBGb29NYWluCi0KLSNpbmNsdWRlICJhL2IvZm9vLmNjIgotCi0vLyBU
aGUgdGVzdHMgc3RhcnQgaGVyZS4KLS4uLgotYGBgCi0KLQotSG93ZXZlciwgcGxlYXNlIHJlbWVt
YmVyIHRoaXMgaXMgYSBoYWNrIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGFzIHRoZSBsYXN0Ci1y
ZXNvcnQuCi0KLSMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUXF9E
RUFUSCgpIGJlPyAjIwotCi1gQVNTRVJUX0RFQVRIKF9zdGF0ZW1lbnRfLCBfcmVnZXhfKWAgKG9y
IGFueSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2VkCi13aGVyZXZlciBgX3N0YXRl
bWVudF9gIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYF9zdGF0ZW1lbnRfYCBjYW4gYmUgYW55IEMr
Kwotc3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4gSW4g
cGFydGljdWxhciwgaXQgY2FuCi1yZWZlcmVuY2UgZ2xvYmFsIGFuZC9vciBsb2NhbCB2YXJpYWJs
ZXMsIGFuZCBjYW4gYmU6Ci0gICogYSBzaW1wbGUgZnVuY3Rpb24gY2FsbCAob2Z0ZW4gdGhlIGNh
c2UpLAotICAqIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgotICAqIGEgY29tcG91bmQgc3RhdGVt
ZW50LgotCi0+IFNvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6Ci0KLWBgYAotLy8gQSBkZWF0
aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgotVEVTVChNeURlYXRoVGVzdCwg
RnVuY3Rpb25DYWxsKSB7Ci0gIEFTU0VSVF9ERUFUSChYeXooNSksICJYeXogZmFpbGVkIik7Ci19
Ci0KLS8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVmZXJlbmNlcyB2YXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucy4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBsZXhFeHByZXNzaW9uKSB7Ci0g
IGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOwotICBBU1NFUlRfREVBVEgoKGMgPyBGdW5jMSgw
KSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAotICAgICAgICAgICAgICAgIihGdW5jMXxNZXRo
b2QpIGZhaWxlZCIpOwotfQotCi0vLyBEZWF0aCBhc3NlcnRpb25zIGNhbiBiZSB1c2VkIGFueSB3
aGVyZSBpbiBhIGZ1bmN0aW9uLiBJbgotLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRl
IGEgbG9vcC4KLVRFU1QoTXlEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKLSAgLy8gVmVyaWZpZXMg
dGhhdCBGb28oMCksIEZvbygxKSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhh
cyBcXGQrIGVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkg
PDwgIndoZXJlIGkgaXMgIiA8PCBpKTsKLSAgfQotfQotCi0vLyBBIGRlYXRoIGFzc2VydGlvbiBj
YW4gY29udGFpbiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBv
dW5kU3RhdGVtZW50KSB7Ci0gIC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigw
KSwgQmFyKDEpLCAuLi4sIGFuZAotICAvLyBCYXIoNCkgZGllcy4KLSAgQVNTRVJUX0RFQVRIKHsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewotICAgICAgQmFyKGkpOwotICAgIH0K
LSAgfSwKLSAgIkJhciBoYXMgXFxkKyBlcnJvcnMiKTt9Ci1gYGAKLQotYGdvb2dsZXRlc3RfdW5p
dHRlc3QuY2NgIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91IGFyZSBpbnRlcmVzdGVkLgot
Ci0jIyBXaGF0IHN5bnRheCBkb2VzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gaW4gQVNTRVJUXF9E
RUFUSCB1c2U/ICMjCi0KLU9uIFBPU0lYIHN5c3RlbXMsIEdvb2dsZSBUZXN0IHVzZXMgdGhlIFBP
U0lYIEV4dGVuZGVkIHJlZ3VsYXIKLWV4cHJlc3Npb24gc3ludGF4Ci0oaHR0cDovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9F
eHByZXNzaW9ucykuCi1PbiBXaW5kb3dzLCBpdCB1c2VzIGEgbGltaXRlZCB2YXJpYW50IG9mIHJl
Z3VsYXIgZXhwcmVzc2lvbgotc3ludGF4LiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlCi1bcmVn
dWxhciBleHByZXNzaW9uIHN5bnRheF0oVjFfN19BZHZhbmNlZEd1aWRlLm1kI1JlZ3VsYXJfRXhw
cmVzc2lvbl9TeW50YXgpLgotCi0jIyBJIGhhdmUgYSBmaXh0dXJlIGNsYXNzIEZvbywgYnV0IFRF
U1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRjaGluZyBmdW5jdGlvbiBmb3Ig
Y2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIwotCi1Hb29nbGUgVGVzdCBuZWVkcyB0byBiZSBh
YmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0dXJlIGNsYXNzLCBzbwotaXQg
bXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFsbHkgdGhlIGNvbXBpbGVyIHdp
bGwgZGVmaW5lIG9uZSBmb3IKLXlvdS4gSG93ZXZlciwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHlv
dSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKLSAgKiBJZiB5b3UgZXhwbGljaXRseSBkZWNsYXJl
IGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBGb29gLCB0aGVuIHlvdSBuZWVk
IHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4gaWYgaXQgd291bGQgYmUgZW1w
dHkuCi0gICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRpYyBkYXRhIG1lbWJlciwgdGhl
biB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgX2FuZF8gaW5pdGlh
bGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXplciBsaXN0IG9mIHRoZSBjb25z
dHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNuJ3QgZm9yY2UgeW91IHRvIGlu
aXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0aGF0IGhhcyBiZWVuIGZpeGVk
IGluIGBnY2MgNGAuKQotCi0jIyBXaHkgZG9lcyBBU1NFUlRcX0RFQVRIIGNvbXBsYWluIGFib3V0
IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9pbmVkPyAjIwotCi1XaXRoIHRo
ZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1cm5pbmcgYmFjayBvbmNlIHlv
dSBjcm9zcyB0aGUKLWxpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRvIG11bHRpcGxlIHRocmVhZHMu
IFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQotdGhyZWFkLCBhIG1hbmFnZXIgdGhyZWFkIGlz
IGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90IDIsIHRocmVhZHMuCi1MYXRl
ciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUgbWFpbiB0aHJlYWQsIHRoZSB0
aHJlYWQgY291bnQKLWRlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBtYW5hZ2VyIHRocmVhZCB3aWxs
IG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKLTIgdGhyZWFkcywgd2hpY2ggbWVh
bnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4KLQotVGhlIG5ldyBOUFRMIHRo
cmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBwcm9ibGVtLCBhcyBpdCBkb2Vz
bid0Ci1jcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwgaWYgeW91IGRvbid0IGNvbnRy
b2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKLXJ1bnMgb24sIHlvdSBzaG91bGRuJ3QgZGVwZW5k
IG9uIHRoaXMuCi0KLSMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJlcXVpcmUgdGhlIGVudGlyZSB0
ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywgdG8gYmUgbmFtZWQgRk9PRGVh
dGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIwotCi1Hb29nbGUgVGVzdCBkb2Vz
IG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMuIFRoYXQgaXMs
IGl0Ci1ydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZpcnN0LCBhbmQgdGhlbiBydW5z
IGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0Ci1jYXNlLCBhbmQgc28gb24uIEdvb2dsZSBUZXN0
IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBhIHRlc3QgY2FzZQotYmVmb3Jl
IHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIgaXQgZG93biBhZnRlcndvcmRz
LiBTcGxpdHRpbmcgdXAKLXRoZSB0ZXN0IGNhc2Ugd291bGQgcmVxdWlyZSBtdWx0aXBsZSBzZXQt
dXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCi1pbmVmZmljaWVudCBhbmQgbWFr
ZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgotCi1JZiB3ZSB3ZXJlIHRvIGRldGVybWluZSB0aGUg
b3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3RlYWQgb2YgdGVzdAotY2FzZSBu
YW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhlIGZvbGxvd2luZyBzaXR1
YXRpb246Ci0KLWBgYAotVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRoVGVzdCkgeyAuLi4gfQotVEVT
VF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQotCi1URVNUX0YoQmFyVGVzdCwgRGVmRGVhdGhUZXN0
KSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9Ci1gYGAKLQotU2luY2UgYEZv
b1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3JlIGBCYXJUZXN0Llh5emAsIGFu
ZCB3ZSBkb24ndAotaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCB3
ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCi1gRm9vVGVzdGAgY2FzZSBiZWZvcmUgcnVu
bmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRoaXMgY29udHJhZGljdHMKLXdp
dGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZEZWF0aFRlc3RgIGJlZm9yZSBg
Rm9vVGVzdC5VdndgLgotCi0jIyBCdXQgSSBkb24ndCBsaWtlIGNhbGxpbmcgbXkgZW50aXJlIHRl
c3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBib3RoIGRlYXRoIHRlc3RzIGFu
ZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMKLQotWW91IGRvbid0IGhhdmUgdG8s
IGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUgdGVzdCBjYXNlIGludG8KLWBG
b29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBuYW1lcyBtYWtlIGl0IGNsZWFy
IHRoYXQgdGhleSBhcmUKLXJlbGF0ZWQ6Ci0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQot
VEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhU
ZXN0OwotCi1URVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVYUEVDVF9ERUFUSCguLi4p
IC4uLiB9Ci1URVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFTU0VSVF9ERUFUSCguLi4p
IC4uLiB9Ci1gYGAKLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAibm8gbWF0Y2gg
Zm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRpb24uIFdoYXQgZ2l2ZXM/ICMj
Ci0KLUlmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9vVHlwZWAgaW4gYW4gYXNzZXJ0
aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKLXRoZXJlIGlzIGFuIGBzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBmdW5jdGlvbgotZGVmaW5lZCBz
dWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5cGVgLgotCi1JbiBhZGRpdGlv
biwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBzcGFjZSwgdGhlIGA8PGAgb3Bl
cmF0b3IgYWxzbwotbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgX3NhbWVfIG5hbWUgc3BhY2Uu
Ci0KLSMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVhayBtZXNzYWdlcyBvbiBXaW5k
b3dzPyAjIwotCi1TaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFsaXplZCBHb29nbGUgVGVzdCBz
aW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KLXRoZSBoZWFwLCB0aGUgVmlzdWFsIEMr
KyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1vcnkgbGVha3MgYXQgdGhlCi1l
bmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkgdG8gYXZvaWQgdGhpcyBpcyB0
byB1c2UgdGhlCi1gX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0NydE1lbUR1bXBBbGxPYmplY3Rz
U2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55Ci1zdGF0aWNhbGx5IGluaXRpYWxpemVkIGhl
YXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBhbmQgYWRkaXRpb25hbAotaGVh
cCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KLQotIyMgSSBhbSBidWlsZGluZyBteSBwcm9qZWN0IHdp
dGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxsIEknbSBnZXR0aW5nIGlzIGEg
YnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBIZWxwISAjIwotCi1Zb3UgbWF5
IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBlcnJvciBvciB3YXJuaW5ncyBp
ZiB5b3UKLWF0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVjdCB3aXRoIHRoZSBHb29nbGUg
VGVzdCBsaWJyYXJ5IHdoZW4KLXlvdXIgcHJvamVjdCBhbmQgdGhlIGFyZSBub3QgYnVpbHQgdXNp
bmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCi0KLSAgKiBMTksyMDA1OiBzeW1ib2wgYWxy
ZWFkeSBkZWZpbmVkIGluIG9iamVjdAotICAqIExOSzQyMTc6IGxvY2FsbHkgZGVmaW5lZCBzeW1i
b2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0aW9uJwotICAqIExOSzQwNDk6
IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQKLQotVGhlIEdvb2dsZSBU
ZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50aW1lIExpYnJhcnkgb3B0aW9u
Ci1zZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGljIGxpYnJhcmllcywgL01UZCBm
b3IgZGVidWcpLiBJZgoteW91ciBwcm9qZWN0IHVzZXMgc29tZXRoaW5nIGVsc2UsIGZvciBleGFt
cGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCi1ETExzLCAvTURkIGZvciBkZWJ1ZyksIHlvdSBu
ZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xlCi1UZXN0IHByb2plY3QgdG8g
bWF0Y2ggeW91ciBwcm9qZWN0J3MuCi0KLVRvIHVwZGF0ZSB0aGlzIHNldHRpbmcgb3BlbiB0aGUg
cHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKLVN0dWRpbyBJREUgdGhlbiBzZWxlY3Qg
dGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBDL0MrKyB8Ci1Db2RlIEdlbmVy
YXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExpYnJhcnkiLiAgWW91IG1heSBh
bHNvIHRyeQotdXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQgb2YgZ3Rlc3QudmNwcm9qLgot
Ci0jIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdvb2dsZSBUZXN0IGRvZXNuJ3Qg
cnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCi1IYXZlIHlvdSByZWFkIGEKLVt3YXJuaW5n
XShWMV83X1ByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3ItdmlzdWFsLWMtdXNlcnMpIG9uCi10
aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/Ci0KLSMjIEkgd2FudCB0byB1c2UgR29vZ2xlIFRl
c3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdoZXJlIHRvIHN0YXJ0LiAjIwot
TWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9uZSBvZiB0aGUgcG9zdGVkIGhp
cyBzb2x1dGlvbiB0bwotb3VyIG1haWxpbmcgbGlzdC4gSGVyZSBpcyBoaXMgbGluazoKLWh0dHA6
Ly9oYXNzYW5qYW1pbGFobWFkLmJsb2dzcG90LmNvbS8yMDA5LzA3L2d0ZXN0LXN0YXJ0ZXJzLWhl
bHAuaHRtbC4KLQotIyMgSSBhbSBzZWVpbmcgY29tcGlsZSBlcnJvcnMgbWVudGlvbmluZyBzdGQ6
OnR5cGVcX3RyYWl0cyB3aGVuIEkgdHJ5IHRvIHVzZSBHb29nbGUgVGVzdCBvbiBTb2xhcmlzLiAj
IwotR29vZ2xlIFRlc3QgdXNlcyBwYXJ0cyBvZiB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcnkgdGhh
dCBTdW5TdHVkaW8gZG9lcyBub3Qgc3VwcG9ydC4KLU91ciB1c2VycyByZXBvcnRlZCBzdWNjZXNz
IHVzaW5nIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucy4gVHJ5IHJ1bm5pbmcgdGhlIGJ1aWxk
IGFmdGVyIHJ1bmluZyB0aGlzIGNvbW1hZDoKLQotYGV4cG9ydCBDQz1jYyBDWFg9Q0MgQ1hYRkxB
R1M9Jy1saWJyYXJ5PXN0bHBvcnQ0J2AKLQotIyMgSG93IGNhbiBteSBjb2RlIGRldGVjdCBpZiBp
dCBpcyBydW5uaW5nIGluIGEgdGVzdD8gIyMKLQotSWYgeW91IHdyaXRlIGNvZGUgdGhhdCBzbmlm
ZnMgd2hldGhlciBpdCdzIHJ1bm5pbmcgaW4gYSB0ZXN0IGFuZCBkb2VzCi1kaWZmZXJlbnQgdGhp
bmdzIGFjY29yZGluZ2x5LCB5b3UgYXJlIGxlYWtpbmcgdGVzdC1vbmx5IGxvZ2ljIGludG8KLXBy
b2R1Y3Rpb24gY29kZSBhbmQgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhl
IHRlc3Qtb25seQotY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5IG1pc3Rha2UgaW4gcHJvZHVjdGlv
bi4gIFN1Y2ggY2xldmVybmVzcyBhbHNvCi1sZWFkcyB0bwotW0hlaXNlbmJ1Z3NdKGh0dHA6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvVW51c3VhbF9zb2Z0d2FyZV9idWcjSGVpc2VuYnVnKS4KLVRo
ZXJlZm9yZSB3ZSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCB0aGUgcHJhY3RpY2UsIGFuZCBHb29n
bGUgVGVzdCBkb2Vzbid0Ci1wcm92aWRlIGEgd2F5IHRvIGRvIGl0LgotCi1JbiBnZW5lcmFsLCB0
aGUgcmVjb21tZW5kZWQgd2F5IHRvIGNhdXNlIHRoZSBjb2RlIHRvIGJlaGF2ZQotZGlmZmVyZW50
bHkgdW5kZXIgdGVzdCBpcyBbZGVwZW5kZW5jeSBpbmplY3Rpb25dKGh0dHA6Ly9qYW1lc3Nob3Jl
LmNvbS9CbG9nL0RlcGVuZGVuY3ktSW5qZWN0aW9uLURlbXlzdGlmaWVkLmh0bWwpLgotWW91IGNh
biBpbmplY3QgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgdGVzdCBhbmQgZnJvbSB0
aGUKLXByb2R1Y3Rpb24gY29kZS4gIFNpbmNlIHlvdXIgcHJvZHVjdGlvbiBjb2RlIGRvZXNuJ3Qg
bGluayBpbiB0aGUKLWZvci10ZXN0IGxvZ2ljIGF0IGFsbCwgdGhlcmUgaXMgbm8gZGFuZ2VyIGlu
IGFjY2lkZW50YWxseSBydW5uaW5nIGl0LgotCi1Ib3dldmVyLCBpZiB5b3UgX3JlYWxseV8sIF9y
ZWFsbHlfLCBfcmVhbGx5XyBoYXZlIG5vIGNob2ljZSwgYW5kIGlmCi15b3UgZm9sbG93IHRoZSBy
dWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3aXRoIGBfdGVzdGAsCi15b3Ug
Y2FuIHVzZSB0aGUgX2hvcnJpYmxlXyBoYWNrIG9mIHNuaWZmaW5nIHlvdXIgZXhlY3V0YWJsZSBu
YW1lCi0oYGFyZ3ZbMF1gIGluIGBtYWluKClgKSB0byBrbm93IHdoZXRoZXIgdGhlIGNvZGUgaXMg
dW5kZXIgdGVzdC4KLQotIyMgR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG1hY3JvIHRoYXQgY2xhc2hl
cyB3aXRoIG9uZSBkZWZpbmVkIGJ5IGFub3RoZXIgbGlicmFyeS4gSG93IGRvIEkgZGVhbCB3aXRo
IHRoYXQ/ICMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkgbmFtZXNwYWNlcy4gIFRoZXJl
Zm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEgbWFjcm8gb2YgdGhlIHNhbWUg
bmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGgKLWRlZmluaXRpb25zLiAgSW4g
Y2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBhbm90aGVyCi1saWJyYXJ5LCB5
b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMgbWFjcm8gdG8gYXZvaWQgdGhl
Ci1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdvb2dsZSBUZXN0IGFuZCBzb21l
IG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1gRk9PYCwgeW91IGNhbiBhZGQKLWBgYAotICAtREdU
RVNUX0RPTlRfREVGSU5FX0ZPTz0xCi1gYGAKLXRvIHRoZSBjb21waWxlciBmbGFncyB0byB0ZWxs
IEdvb2dsZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1lCi1mcm9tIGBGT09gIHRvIGBH
VEVTVF9GT09gLiBGb3IgZXhhbXBsZSwgd2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFg
LCB5b3UnbGwgbmVlZCB0byB3cml0ZQotYGBgCi0gIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNU
aGlzKSB7IC4uLiB9Ci1gYGAKLWluc3RlYWQgb2YKLWBgYAotICBURVNUKFNvbWVUZXN0LCBEb2Vz
VGhpcykgeyAuLi4gfQotYGBgCi1pbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1DdXJyZW50
bHksIHRoZSBmb2xsb3dpbmcgYFRFU1RgLCBgRkFJTGAsIGBTVUNDRUVEYCwgYW5kIHRoZSBiYXNp
YyBjb21wYXJpc29uIGFzc2VydGlvbiBtYWNyb3MgY2FuIGhhdmUgYWx0ZXJuYXRpdmUgbmFtZXMu
IFlvdSBjYW4gc2VlIHRoZSBmdWxsIGxpc3Qgb2YgY292ZXJlZCBtYWNyb3MgW2hlcmVdKGh0dHA6
Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9aWYrIUdURVNUX0RPTlRfREVGSU5FX1x3JTJC
K3BhY2thZ2U6aHR0cDovL2dvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbStmaWxlOi9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LmgpLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgIkF2
b2lkaW5nIE1hY3JvIE5hbWUgQ2xhc2hlcyIgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGZpbGUuCi0K
LQotIyMgSXMgaXQgT0sgaWYgSSBoYXZlIHR3byBzZXBhcmF0ZSBgVEVTVChGb28sIEJhcilgIHRl
c3QgbWV0aG9kcyBkZWZpbmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzPyAjIwotCi1ZZXMuCi0K
LVRoZSBydWxlIGlzICoqYWxsIHRlc3QgbWV0aG9kcyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVz
dCB1c2UgdGhlIHNhbWUgZml4dHVyZSBjbGFzcyoqLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxv
d2luZyBpcyAqKmFsbG93ZWQqKiBiZWNhdXNlIGJvdGggdGVzdHMgdXNlIHRoZSBzYW1lIGZpeHR1
cmUgY2xhc3MgKGA6OnRlc3Rpbmc6OlRlc3RgKS4KLQotYGBgCi1uYW1lc3BhY2UgZm9vIHsKLVRF
U1QoQ29vbFRlc3QsIERvU29tZXRoaW5nKSB7Ci0gIFNVQ0NFRUQoKTsKLX0KLX0gIC8vIG5hbWVz
cGFjZSBmb28KLQotbmFtZXNwYWNlIGJhciB7Ci1URVNUKENvb2xUZXN0LCBEb1NvbWV0aGluZykg
ewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQotSG93ZXZlciwg
dGhlIGZvbGxvd2luZyBjb2RlIGlzICoqbm90IGFsbG93ZWQqKiBhbmQgd2lsbCBwcm9kdWNlIGEg
cnVudGltZSBlcnJvciBmcm9tIEdvb2dsZSBUZXN0IGJlY2F1c2UgdGhlIHRlc3QgbWV0aG9kcyBh
cmUgdXNpbmcgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzIHdpdGggdGhlIHNhbWUgdGVz
dCBjYXNlIG5hbWUuCi0KLWBgYAotbmFtZXNwYWNlIGZvbyB7Ci1jbGFzcyBDb29sVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307ICAvLyBGaXh0dXJlIGZvbzo6Q29vbFRlc3QKLVRFU1Rf
RihDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKLSAgU1VDQ0VFRCgpOwotfQotfSAgLy8gbmFtZXNw
YWNlIGZvbwotCi1uYW1lc3BhY2UgYmFyIHsKLWNsYXNzIENvb2xUZXN0IDogcHVibGljIDo6dGVz
dGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmU6IGJhcjo6Q29vbFRlc3QKLVRFU1RfRihDb29sVGVz
dCwgRG9Tb21ldGhpbmcpIHsKLSAgU1VDQ0VFRCgpOwotfQotfSAgLy8gbmFtZXNwYWNlIGZvbwot
YGBgCi0KLSMjIEhvdyBkbyBJIGJ1aWxkIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayB3aXRoIFhj
b2RlIDQ/ICMjCi0KLUlmIHlvdSB0cnkgdG8gYnVpbGQgR29vZ2xlIFRlc3QncyBYY29kZSBwcm9q
ZWN0IHdpdGggWGNvZGUgNC4wIG9yIGxhdGVyLCB5b3UgbWF5IGVuY291bnRlciBhbiBlcnJvciBt
ZXNzYWdlIHRoYXQgbG9va3MgbGlrZQotIk1pc3NpbmcgU0RLIGluIHRhcmdldCBndGVzdFxfZnJh
bWV3b3JrOiAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIi4gVGhhdCBtZWFucyB0aGF0
IFhjb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIFNESyB0aGUgcHJvamVjdCBpcyB0YXJnZXRpbmcu
IFNlZSB0aGUgWGNvZGUgc2VjdGlvbiBpbiB0aGUgW1JFQURNRV0oLi4vLi4vUkVBRE1FLk1EKSBm
aWxlIG9uIGhvdyB0byByZXNvbHZlIHRoaXMuCi0KLSMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3Zl
cmVkIGluIHlvdXIgRkFRISAjIwotCi1JZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5
b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKLXNvbWUgb3RoZXIgcmVzb3VyY2Vz
IHlvdSBjYW4gdXNlOgotCi0gIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3cvbGlzdCksCi0gIDEuIHNlYXJjaCB0aGUgbWFpbGlu
ZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVz
dGZyYW1ld29yay90b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dvb2dsZXRlc3RmcmFtZXdvcmtA
Z29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVx
dWlyZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29v
Z2xlLmNvbS9ncm91cC9nb29nbGV0ZXN0ZnJhbWV3b3JrKSBiZWZvcmUgeW91IGNhbiBwb3N0Liku
Ci0KLVBsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJh
Y2tlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvaXNzdWVzL2xpc3QpIGlz
IF9ub3RfCi1hIGdvb2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVk
IGluZnJlcXVlbnRseSBieSBhCi12ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4g
YXNraW5nIGEgcXVlc3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhl
Ci1mb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5
b3UgaWYgdGhlcmUncwotbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToK
LQotICAqIHRoZSB2ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBv
dXQgZnJvbSBTVk4gZGlyZWN0bHkpIG9mIEdvb2dsZSBUZXN0IHlvdSB1c2UgKEdvb2dsZSBUZXN0
IGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIg
cHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5b3VyIG9w
ZXJhdGluZyBzeXN0ZW0sCi0gICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxl
ciwKLSAgKiB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIg
Y29tcGlsZXIsCi0gICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0
aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGlsYXRpb24pLAotICAqIHRoZSBfYWN0dWFsXyBjb2Rl
IChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBw
cm9ibGVtIHlvdSBlbmNvdW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdf
UHJpbWVyLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1ByaW1lci5tZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjE4MjdjNzM1NTgxM2FkOTQxODAzNDkxM2JjYzM5ZGY0MThkYWY2
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzdfUHJpbWVyLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNTAxICswLDAgQEAK
LQotCi0jIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcms/ICMK
LQotX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBiZXR0ZXIg
QysrIHRlc3RzLgotCi1ObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwgV2luZG93
cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKLUdvb2dsZSBUZXN0IGNhbiBoZWxw
IHlvdS4KLQotU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgotICAxLiBUZXN0cyBzaG91
bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0byBkZWJ1
ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhlciB0ZXN0
cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3RzIGJ5IHJ1
bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRlc3QgZmFp
bHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4gaXQgaW4g
aXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCi0gIDEuIFRlc3RzIHNob3VsZCBiZSB3ZWxs
IF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2Rl
LiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0cyBpbnRv
IHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRoaXMgY29t
bW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVhc3kgdG8g
bWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gcGVv
cGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2RlIGJhc2Uu
Ci0gIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBUaGUgb3Bl
bi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZvcm0tbmV1
dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRoIGRpZmZl
cmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0aG91dCBl
eGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNhbiBlYXNp
bHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRoYXQgdGhl
IGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExpbnV4IC0g
d2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZvcm1zLikK
LSAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggX2luZm9y
bWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4gSW5zdGVh
ZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0aCB0aGUg
bmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0YWwgZmFp
bHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMsIHlvdSBj
YW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRpdC1jb21w
aWxlIGN5Y2xlLgotICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVyYXRlIHRl
c3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZvY3VzIG9u
IHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYXV0b21h
dGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNuJ3QgcmVx
dWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KLSAg
MS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFuZCBwYXkg
Zm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcgdGVzdHMg
ZGVwZW5kIG9uIGVhY2ggb3RoZXIuCi0KLVNpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKLWFyY2hpdGVjdHVyZSwgeW91J2xsIGZl
ZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVmb3JlLgot
SWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4gdGhlIGJh
c2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCi1TbyBsZXQncyBnbyEKLQotX05vdGU6XyBXZSBzb21ldGlt
ZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5Ci1hcyBf
R29vZ2xlIFRlc3RfLgotCi0jIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMKLQotVG8g
d3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRvIGNvbXBp
bGUgR29vZ2xlCi1UZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3aXRoIGl0
LiAgV2UgcHJvdmlkZSBidWlsZAotZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBzeXN0ZW1z
OiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAotYHhjb2RlL2AgZm9yIE1hYyBYY29kZSwgYG1h
a2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCi1DKysgQnVpbGRlciwg
YW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKLWBDTWFrZUxpc3RzLnR4
dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QKLWRpcmVj
dG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlvdSBjYW4g
dGFrZSBhCi1sb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xlIFRlc3Qg
c2hvdWxkIGJlIGNvbXBpbGVkCi0oYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUgYHNyYy9n
dGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCi1hbmQgYEdURVNUX1JPT1QvaW5jbHVkZWAg
aW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCi1pcyB0aGUgR29v
Z2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgotCi1PbmNlIHlvdSBhcmUgYWJsZSB0byBjb21waWxl
IHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCi1jcmVhdGUgYSBwcm9qZWN0IG9y
IGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91Ci1oYXZl
IGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28gdGhhdCB0
aGUKLWNvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGlsaW5nIHlv
dXIgdGVzdC4gIFNldCB1cAoteW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRoZSBHb29n
bGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKLWluIFZpc3VhbCBTdHVkaW8sIHRoaXMgaXMg
ZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCi1gZ3Rlc3QudmNwcm9qYCkuCi0KLUlmIHlv
dSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBUZXN0J3Mg
b3duCi10ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgotCi0jIEJhc2lj
IENvbmNlcHRzICMKLQotV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5IHdyaXRp
bmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwotdGhhdCBjaGVjayB3aGV0aGVy
IGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUgX3N1Y2Nl
c3NfLAotX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEgZmF0YWwg
ZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwotdGhlIGN1cnJlbnQgZnVuY3Rpb247IG90aGVyd2lz
ZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCi0KLV9UZXN0c18gdXNlIGFzc2VydGlv
bnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3QgY3Jhc2hl
cwotb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhlcndpc2Ug
aXQgX3N1Y2NlZWRzXy4KLQotQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFueSB0ZXN0
cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAotY2FzZXMgdGhhdCByZWZs
ZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxlIHRlc3Rz
IGluIGEKLXRlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBzdWJyb3V0
aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKLV90ZXN0IGZpeHR1cmVfIGNsYXNzLgotCi1B
IF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCi0KLVdlJ2xs
IG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcgYXQgdGhl
IGluZGl2aWR1YWwKLWFzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVzdHMgYW5k
IHRlc3QgY2FzZXMuCi0KLSMgQXNzZXJ0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
YXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBhCi1jbGFz
cyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZpb3IuIFdo
ZW4gYW4gYXNzZXJ0aW9uCi1mYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3NlcnRpb24n
cyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCi1hbG9uZyB3aXRoIGEgZmFp
bHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZQotd2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2UuCi0KLVRo
ZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5nIGJ1dCBo
YXZlIGRpZmZlcmVudAotZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFTU0VSVF8q
YCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcwotd2hlbiB0aGV5IGZhaWwsIGFuZCAq
KmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMgZ2VuZXJh
dGUKLW5vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVudCBmdW5j
dGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCi1hcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFsbG93IG1v
cmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgotSG93ZXZlciwg
eW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29u
dGludWUgd2hlbgotdGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KLQotU2luY2UgYSBm
YWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaW1tZWRp
YXRlbHksCi1wb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMgYWZ0ZXIg
aXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCi1EZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBv
ZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28KLWtlZXAg
dGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRkaXRpb24g
dG8gYXNzZXJ0aW9uCi1lcnJvcnMuCi0KLVRvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVyZSBtZXNz
YWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQotYDw8YCBvcGVy
YXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToKLWBgYAot
QVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBhcmUgb2Yg
dW5lcXVhbCBsZW5ndGgiOwotCi1mb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpIHsK
LSAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVyIGF0IGlu
ZGV4ICIgPDwgaTsKLX0KLWBgYAotCi1Bbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1lZCB0byBh
biBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgotbWFjcm8tLWluIHBh
cnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRlIHN0cmlu
ZwotKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRvd3MsIG9y
IGBzdGQ6OndzdHJpbmdgKSBpcwotc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3aWxsIGJl
IHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgotCi0jIyBCYXNpYyBBc3NlcnRpb25z
ICMjCi0KLVRoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRpb24gdGVz
dGluZy4KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAq
KlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8
IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwK
LXwgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRp
dGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKLQotUmVtZW1iZXIsIHdoZW4gdGhl
eSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCi1yZXR1cm5zIGZy
b20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0
YWwKLWZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJ
biBlaXRoZXIgY2FzZSwgYW4KLWFzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5n
IHRlc3QgZmFpbHMuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0j
IyBCaW5hcnkgQ29tcGFyaXNvbiAjIwotCi1UaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlv
bnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoq
Tm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18YEFTU0VSVF9F
UShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVkX2AsIGBf
YWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Ci18YEFTU0VSVF9ORShgX3Zh
bDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2Ag
ICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Ci18YEFTU0VSVF9MVChgX3ZhbDFfYCwgYF92YWwy
X2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwx
XyBgPGAgX3ZhbDJfIHwKLXxgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxg
RVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAgX3ZhbDJf
IHwKLXxgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dUKGBf
dmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAotfGBBU1NFUlRf
R0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAotCi1JbiB0aGUgZXZlbnQgb2YgYSBm
YWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXwotLiBJbiBg
QVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0eSBhc3Nl
cnRpb25zCi13ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUgZXhwcmVz
c2lvbiB5b3Ugd2FudCB0byB0ZXN0Ci1pbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8sIGFuZCBw
dXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCi1hcyBHb29nbGUgVGVzdCdzIGZh
aWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgotCi1WYWx1
ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBjb21wYXJp
c29uCi1vcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBXZSB1c2VkIHRv
IHJlcXVpcmUgdGhlCi1hcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVyYXRvciBmb3Ig
c3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKLWJ1dCBpdCdzIG5vIGxvbmdlciBuZWNlc3Nhcnkg
c2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKLXdpbGwgYmUgY2FsbGVkIHRv
IHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOwotb3RoZXJ3aXNl
IEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0IHdheSBp
dAotY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBwcmludGlu
ZyBvZiB0aGUKLWFyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lwZV0oLi4vLi4v
Z29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhvdy10by1w
cmludC15b3VyLXZhbHVlcykuKS4KLQotVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3aXRoIGEg
dXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCi1jb3JyZXNwb25k
aW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYgdGhlIGNv
cnJlc3BvbmRpbmcKLW9wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUgYEFTU0VS
VF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAotcHJpbnQgb3V0IG5vdCBvbmx5IHRoZSBy
ZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdlbGwuCi0K
LUFyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJlZm9yZSwg
aXQncyBPSyBmb3IgdGhlCi1hcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhvd2V2ZXIs
IGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAotdGhlIGFyZ3VtZW50cycgZXZh
bHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZyZWUgdG8K
LWNob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55
IHBhcnRpY3VsYXIgYXJndW1lbnQKLWV2YWx1YXRpb24gb3JkZXIuCi0KLWBBU1NFUlRfRVEoKWAg
ZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBDIHN0cmlu
Z3MsIGl0Ci10ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIG5v
dCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCi1UaGVyZWZvcmUsIGlmIHlvdSB3YW50IHRv
IGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1c2UKLWBB
U1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4gSW4gcGFy
dGljdWxhciwgdG8gYXNzZXJ0Ci10aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2UgYEFTU0VS
VF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KLWNvbXBhcmUgdHdvIGBzdHJp
bmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgotCi1NYWNyb3MgaW4gdGhp
cyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2JqZWN0cyAo
YHN0cmluZ2AKLWFuZCBgd3N0cmluZ2ApLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRv
d3MsIE1hYy4KLQotIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKLQotVGhlIGFzc2VydGlvbnMgaW4g
dGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0byBjb21w
YXJlCi10d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNUX05FYCwg
YW5kIGV0YyBpbnN0ZWFkLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1NUUkVRKGBfZXhw
ZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBfZXhw
ZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmluZ3Mg
aGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwgYF9zdHIy
X2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAgfCB0aGUg
dHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJDQVNF
RVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9TVFJDQVNF
RVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28gQyBzdHJp
bmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Ci18IGBBU1NFUlRfU1RS
Q0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9zdHIxX2As
IGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudCwg
aWdub3JpbmcgY2FzZSB8Ci0KLU5vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9uIG5hbWUg
bWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCi0KLWAqU1RSRVEqYCBhbmQgYCpTVFJORSpgIGFs
c28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQotY29tcGFyaXNvbiBv
ZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmludGVkIGFz
IFVURi04Ci1uYXJyb3cgc3RyaW5ncy4KLQotQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4gZW1wdHkg
c3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgotCi1fQXZhaWxhYmlsaXR5XzogTGlu
dXgsIFdpbmRvd3MsIE1hYy4KLQotU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21wYXJpc29u
IHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCi1yZWd1bGFyIGV4cHJlc3Np
b24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xlIFRlc3Qg
R3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCi0KLSMgU2ltcGxlIFRlc3RzICMKLQotVG8g
Y3JlYXRlIGEgdGVzdDoKLSAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5k
IG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0
aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgotICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3
aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2UgdGhl
IHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCi0gIDEuIFRo
ZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBh
c3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5
KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndp
c2UsIGl0IHN1Y2NlZWRzLgotCi1gYGAKLVRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
ewotIC4uLiB0ZXN0IGJvZHkgLi4uCi19Ci1gYGAKLQotCi1gVEVTVCgpYCBhcmd1bWVudHMgZ28g
ZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUKLW5h
bWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUgdGVz
dCdzIG5hbWUgd2l0aGluIHRoZQotdGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUgdmFsaWQg
QysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJzY29yZSAo
YF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5pbmcgdGVz
dCBjYXNlIGFuZCBpdHMKLWluZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVz
dCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCi1uYW1lLgotCi1Gb3IgZXhhbXBs
ZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgotYGBgCi1pbnQgRmFjdG9y
aWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KLWBgYAotCi1BIHRlc3Qg
Y2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6Ci1gYGAKLS8vIFRlc3RzIGZh
Y3RvcmlhbCBvZiAwLgotVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0KSB7Ci0g
IEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwotfQotCi0vLyBUZXN0cyBmYWN0b3JpYWwgb2Yg
cG9zaXRpdmUgbnVtYmVycy4KLVRFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0aXZlSW5w
dXQpIHsKLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7Ci0gIEVYUEVDVF9FUSgyLCBGYWN0
b3JpYWwoMikpOwotICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKLSAgRVhQRUNUX0VRKDQw
MzIwLCBGYWN0b3JpYWwoOCkpOwotfQotYGBgCi0KLUdvb2dsZSBUZXN0IGdyb3VwcyB0aGUgdGVz
dCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3RzCi1zaG91
bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZpcnN0IGFy
Z3VtZW50IHRvIHRoZWlyCi1gVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBhYm92
ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKLWBIYW5kbGVzWmVyb0lucHV0YCBhbmQgYEhh
bmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAotY2FzZSBg
RmFjdG9yaWFsVGVzdGAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgot
Ci0jIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlvbiBmb3Ig
TXVsdGlwbGUgVGVzdHMgIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3byBvciBt
b3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCi15b3UgY2FuIHVzZSBhIF90
ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZpZ3VyYXRp
b24gb2YKLW9iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgotCi1UbyBjcmVhdGUg
YSBmaXh0dXJlLCBqdXN0OgotICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRl
c3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpgIGFzIHdl
J2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2VzLgotICAx
LiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRvIHVzZS4K
LSAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3IgYFNldFVw
KClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4gQSBjb21t
b24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGggYSBzbWFs
bCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgotICAxLiBJZiBuZWNlc3Nhcnks
IHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVsZWFzZSBh
bnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4gd2hlbiB5
b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5b3Ugc2hv
dWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnldKFYxXzdf
RkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRoZS10ZXN0
LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCi0gIDEuIElmIG5lZWRl
ZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgotCi1XaGVuIHVz
aW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBhcyBpdCBh
bGxvd3MgeW91IHRvCi1hY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhlIHRlc3Qg
Zml4dHVyZToKLWBgYAotVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKLSAuLi4g
dGVzdCBib2R5IC4uLgotfQotYGBgCi0KLUxpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBhcmd1bWVu
dCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAotdGhpcyBtdXN0IGJl
IHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJseSBndWVz
c2VkOiBgX0ZgCi1pcyBmb3IgZml4dHVyZS4KLQotVW5mb3J0dW5hdGVseSwgdGhlIEMrKyBtYWNy
byBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3JvCi10aGF0
IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1hY3JvIGNh
dXNlcyBhIGNvbXBpbGVyCi1lcnJvci4KLQotQWxzbywgeW91IG11c3QgZmlyc3QgZGVmaW5lIGEg
dGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCi1gVEVTVF9GKClgLCBvciB5
b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFzcwotZGVj
bGFyYXRpb25gIi4KLQotRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigpYCwgR29v
Z2xlIFRlc3Qgd2lsbDoKLSAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1cmUgYXQgcnVu
dGltZQotICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAgLAotICAx
LiBSdW4gdGhlIHRlc3QKLSAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24oKWAKLSAg
MS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50IHRlc3RzIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2JqZWN0cywg
YW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9yZSBpdCBj
cmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlIHNhbWUg
dGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25lIHRlc3QgbWFr
ZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KLQotQXMgYW4gZXhh
bXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1lZCBgUXVl
dWVgLCB3aGljaAotaGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgotYGBgCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgotY2xhc3MgUXVldWUgewotIHB1
YmxpYzoKLSAgUXVldWUoKTsKLSAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQpOwotICBF
KiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHkuCi0gIHNp
emVfdCBzaXplKCkgY29uc3Q7Ci0gIC4uLgotfTsKLWBgYAotCi1GaXJzdCwgZGVmaW5lIGEgZml4
dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBuYW1lCi1g
Rm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KLWBgYAotY2xh
c3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcTFfLkVucXVldWUoMSk7Ci0gICAgcTJfLkVucXVl
dWUoMik7Ci0gICAgcTJfLkVucXVldWUoMyk7Ci0gIH0KLQotICAvLyB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7fQotCi0gIFF1ZXVlPGludD4gcTBfOwotICBRdWV1ZTxpbnQ+IHExXzsKLSAgUXVl
dWU8aW50PiBxMl87Ci19OwotYGBgCi0KLUluIHRoaXMgY2FzZSwgYFRlYXJEb3duKClgIGlzIG5v
dCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgotZWFjaCB0ZXN0
LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3IuCi0KLU5v
dyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1cmUuCi1g
YGAKLVRFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKLSAgRVhQRUNUX0VRKDAs
IHEwXy5zaXplKCkpOwotfQotCi1URVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3MpIHsKLSAg
aW50KiBuID0gcTBfLkRlcXVldWUoKTsKLSAgRVhQRUNUX0VRKE5VTEwsIG4pOwotCi0gIG4gPSBx
MV8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoMSwg
Km4pOwotICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotCi0gIG4gPSBx
Ml8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoMiwg
Km4pOwotICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotfQotYGBgCi0K
LVRoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBhc3NlcnRpb25z
LiBUaGUgcnVsZSBvZiB0aHVtYiBpcwotdG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ugd2FudCB0
aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKLWFmdGVyIHRoZSBhc3Nl
cnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWluZyBhZnRlciBm
YWlsdXJlCi1kb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vjb25kIGFzc2Vy
dGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKLWBBU1NFUlRfVFJVRShuICE9IE5VTEwpYCwg
YXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsCi13aGljaCB3
b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgotCi1XaGVuIHRoZXNl
IHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgotICAxLiBHb29nbGUgVGVzdCBjb25z
dHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4KLSAgMS4g
YHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgotICAxLiBUaGUgZmlyc3QgdGVzdCAoIGBJ
c0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCi0gIDEuIGB0MS5UZWFyRG93bigpYCBj
bGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCi0gIDEuIGB0MWAgaXMgZGVzdHJ1Y3Rl
ZC4KLSAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBRdWV1ZVRl
c3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRlc3QuCi0K
LV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi1fTm90ZV86IEdvb2dsZSBU
ZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mgd2hlbiBhIHRl
c3QKLW9iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hlbiBpdCBpcyBk
ZXN0cnVjdGVkLgotCi0jIEludm9raW5nIHRoZSBUZXN0cyAjCi0KLWBURVNUKClgIGFuZCBgVEVT
VF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29nbGUgVGVzdC4g
U28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3JrcywgeW91IGRv
bid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVyIHRvIHJ1
biB0aGVtLgotCi1BZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0aGVtIHdp
dGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwgdGhlIHRlc3Rz
IGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJVTl9BTExfVEVT
VFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNhbiBiZSBm
cm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMu
Ci0KLVdoZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgotICAxLiBTYXZl
cyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KLSAgMS4gQ3JlYXRlcyBhIHRl
c3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgotICAxLiBJbml0aWFsaXplcyBp
dCB2aWEgYFNldFVwKClgLgotICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJlIG9iamVj
dC4KLSAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCi0gIDEuIERl
bGV0ZXMgdGhlIGZpeHR1cmUuCi0gIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwgR29vZ2xl
IFRlc3QgZmxhZ3MuCi0gIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUgbmV4dCB0
ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCi0KLUluIGFkZGl0aW9uLCBpZiB0aGUgdGV4
dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBpbgotc3Rl
cCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBhcmUgdGh1cyBz
a2lwcGVkLiBTaW1pbGFybHksCi1pZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwg
c3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KLQotX0ltcG9ydGFudF86IFlvdSBtdXN0IG5vdCBpZ25v
cmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdjY2AKLXdpbGwg
Z2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBkZXNpZ24g
aXMgdGhhdCB0aGUKLWF1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3aGV0aGVy
IGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cwotZXhpdCBjb2RlLCBub3Qgb24gaXRzIHN0
ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVzdAotcmV0
dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KLQotQWxzbywgeW91IHNob3VsZCBj
YWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQgbW9yZSB0aGFu
IG9uY2UKLWNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgZmVhdHVyZXMg
KGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKLXRlc3RzKSBhbmQgdGh1cyBpcyBub3Qgc3VwcG9ydGVk
LgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBXcml0aW5nIHRo
ZSBtYWluKCkgRnVuY3Rpb24gIwotCi1Zb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBib2lsZXJwbGF0
ZToKLWBgYAotI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKLSNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi0vLyBUaGUgZml4dHVyZSBmb3IgdGVzdGluZyBjbGFz
cyBGb28uCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVj
dGVkOgotICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmcgZnVu
Y3Rpb25zIGlmIGl0cyBib2R5Ci0gIC8vIGlzIGVtcHR5LgotCi0gIEZvb1Rlc3QoKSB7Ci0gICAg
Ly8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCi0gIH0KLQotICB2
aXJ0dWFsIH5Gb29UZXN0KCkgewotICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAgd29yayB0aGF0
IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgotICB9Ci0KLSAgLy8gSWYgdGhlIGNvbnN0
cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5nIHVwCi0gIC8v
IGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xsb3dpbmcg
bWV0aG9kczoKLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gQ29kZSBoZXJlIHdp
bGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmlnaHQKLSAg
ICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZWFj
aCB0ZXN0IChyaWdodAotICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCi0gIH0KLQotICAv
LyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGluIHRoZSB0
ZXN0IGNhc2UgZm9yIEZvby4KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFyKCkgbWV0
aG9kIGRvZXMgQWJjLgotVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsKLSAgY29u
c3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9teWlucHV0
ZmlsZS5kYXQiOwotICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2Fn
ZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKLSAgRm9vIGY7Ci0gIEVYUEVDVF9FUSgwLCBm
LkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgRm9vIGRvZXMgWHl6LgotVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKLSAgLy8gRXhlcmNp
c2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotVGhl
IGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUgY29tbWFu
ZCBsaW5lIGZvciBHb29nbGUKLVRlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNvZ25pemVk
IGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKLXRlc3QgcHJvZ3JhbSdz
IGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbiBbQWR2YW5j
ZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKS4KLVlvdSBtdXN0IGNhbGwgdGhpcyBmdW5j
dGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCi13b24n
dCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KLQotT24gV2luZG93cywgYEluaXRHb29nbGVUZXN0
KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCi1pbiBw
cm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgotCi1CdXQgbWF5YmUg
eW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28g
bXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdv
b2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBp
dCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9t
YWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KLQotIyMgSW1wb3J0YW50IG5vdGUg
Zm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKLUlmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGli
cmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5
IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFz
b24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3
ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysr
LiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWlu
IHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCBy
ZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxs
IHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGlu
ZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93
cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0
aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRp
c2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJy
YXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgotYGBgCi1fX2RlY2xzcGVjKGRsbGV4cG9ydCkg
aW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KLWBgYAotSWYgeW91IHB1dCB5b3Vy
IHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0
ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246Ci1gYGAKLWludCBQdWxsSW5NeUxp
YnJhcnkoKTsKLXN0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKLWBgYAotVGhp
cyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdp
c3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCi0KLUluIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5l
IHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3Vy
IG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0
byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9M
aW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVu
cmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysg
bGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlv
dXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KLQotVGhlcmUgaXMgb25lIG1vcmUg
cGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJh
cnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMg
bXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZl
IHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGlu
dG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJl
Y3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUg
aXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxp
YnJhcmllcyEKLQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxhdGlvbnMh
IFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3Jp
dGluZwotYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10o
VjFfN19TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAotW0FkdmFuY2VkR3VpZGVdKFYxXzdf
QWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVsIEdvb2ds
ZSBUZXN0IGZlYXR1cmVzLgotCi0jIEtub3duIExpbWl0YXRpb25zICMKLQotR29vZ2xlIFRlc3Qg
aXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24gaXMKLXRo
cmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBpcyBhdmFp
bGFibGUuICBJdAotaXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVzdCBhc3Nl
cnRpb25zIGZyb20gdHdvIHRocmVhZHMKLWNvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0ZW1zIChl
LmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCi1ub3QgYW4gaXNzdWUgYXMgdXN1
YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElmCi15b3Ug
d2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5lY2Vzc2Fy
eQotc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9yIHlvdXIg
cGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfUHVtcE1hbnVhbC5t
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4MTg0ZjE1M2NhMmVjYWQ3YzY1Y2I1OGMyN2ZiMzFiZDcyMzc1ZmVlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAK
LQotCi08Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVsIGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9i
PnJvZ3JhbW1pbmcuCi0KLSMgVGhlIFByb2JsZW0gIwotCi1UZW1wbGF0ZSBhbmQgbWFjcm8gbGli
cmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkgY2xhc3NlcywKLWZ1bmN0aW9ucywgb3Ig
bWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qgb25seSkgaW4gdGhlIG51bWJlciBvZgot
YXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBvZiByZXBldGl0aXZlLCBtZWNoYW5pY2Fs
LCBhbmQKLWVycm9yLXByb25lIHdvcmsuCi0KLVZhcmlhZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFk
aWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2JsZW0uCi1Ib3dldmVyLCB3aGlsZSBib3Ro
IGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysgY29tbWl0dGVlLCBuZWl0aGVyCi1pcyBp
biB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1
cyB0aGV5Ci1hcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9pY2UsIGVzcGVjaWFsbHkgd2hlbiB5b3Vy
IGNvZGUgbmVlZHMgdG8gYmUKLXBvcnRhYmxlLiBBbmQgdGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBz
dGlsbCBsaW1pdGVkLgotCi1BcyBhIHJlc3VsdCwgYXV0aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBv
ZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KLWdlbmVyYXRlIHRoZWlyIGltcGxlbWVudGF0
aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0aGF0IGl0J3MKLXRlZGlvdXMgdG8gd3Jp
dGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJlZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgot
dGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJlIG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQg
ZWRpdC4gRm9yCi1leGFtcGxlLCBhIHNtYWxsIGNoYW5nZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRl
ZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKLW5vbi1pbnR1aXRpdmUsIG5vbi10cml2aWFsIGNoYW5n
ZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lhbGx5Ci1wYWluZnVsIHdoZW4gZXhwZXJp
bWVudGluZyB3aXRoIHRoZSBjb2RlLgotCi0jIE91ciBTb2x1dGlvbiAjCi0KLVB1bXAgKGZvciBQ
dW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWluZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0
YQotUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGlsaXR5IGZvciBNZXRhIFByb2dyYW1taW5n
LCB3aGljaGV2ZXIgeW91Ci1wcmVmZXIpIGlzIGEgc2ltcGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9v
bCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKLXByb2dyYW1tZXIgd3JpdGVzIGEgYGZvby5w
dW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2RlIHBsdXMgbWV0YQotY29kZSB0aGF0IG1h
bmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEgY29kZSBjYW4gaGFuZGxlCi1pdGVyYXRp
b25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlvbnMsIGxvY2FsIG1ldGEgdmFyaWFibGUK
LWRlZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywgYW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Np
b25zLiBZb3UgY2FuCi12aWV3IGl0IGFzIGEgc21hbGwgRG9tYWluLVNwZWNpZmljIExhbmd1YWdl
LiBUaGUgbWV0YSBsYW5ndWFnZSBpcwotZGVzaWduZWQgdG8gYmUgbm9uLWludHJ1c2l2ZSAocy50
LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9kZSwKLWZvciBleGFtcGxlKSBhbmQgY29u
Y2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUgYW5kIGVhc3kgdG8KLW1haW50YWluLgot
Ci0jIyBIaWdobGlnaHRzICMjCi0KLSAgKiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaW4gYSBzaW5n
bGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBwb3J0YWJsZTogbm8gYnVpbGQgb3IgaW5z
dGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3MgY3Jvc3MgcGxhdGZvcm1zLgotICAqIFB1
bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0IHRvIFtHb29nbGUncyBzdHlsZSBndWlk
ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFr
cyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFj
Y2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAgY29sdW1ucyBhbmQgaW5kZW50IHRoZSBj
b250aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgotICAqIFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVh
ZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4KLSAgKiBUaGUgZm9ybWF0IHdvcmtzIHJl
bGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9kZS4KLQotIyMgRXhhbXBsZXMgIyMKLQot
VGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1ldGEga2V5d29yZHMgc3RhcnQgd2l0aCBg
JGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tldHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1l
dGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGluZSk6Ci0KLWBgYAotJHZhciBuID0gMyAg
ICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4KLSRyYW5nZSBpIDAuLm4gICQkIERlY2xh
cmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkgKGluY2x1c2l2ZSkuCi0kZm9yIGkgW1sK
LSAgICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KLS8vIEZvbyRpIGRvZXMgYmxhaCBmb3IgJGkt
YXJ5IHByZWRpY2F0ZXMuCi0kcmFuZ2UgaiAxLi5pCi10ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBq
IFtbLCB0eXBlbmFtZSBBJGpdXT4KLWNsYXNzIEZvbyRpIHsKLSRpZiBpID09IDAgW1sKLSAgYmxh
aCBhOwotXV0gJGVsaWYgaSA8PSAyIFtbCi0gIGJsYWggYjsKLV1dICRlbHNlIFtbCi0gIGJsYWgg
YzsKLV1dCi19OwotCi1dXQotYGBgCi0KLXdpbGwgYmUgdHJhbnNsYXRlZCBieSB0aGUgUHVtcCBj
b21waWxlciB0bzoKLQotYGBgCi0vLyBGb28wIGRvZXMgYmxhaCBmb3IgMC1hcnkgcHJlZGljYXRl
cy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNsYXNzIEZvbzAgewotICBibGFoIGE7Ci19OwotCi0v
LyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3Qg
TiwgdHlwZW5hbWUgQTE+Ci1jbGFzcyBGb28xIHsKLSAgYmxhaCBiOwotfTsKLQotLy8gRm9vMiBk
b2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVu
YW1lIEExLCB0eXBlbmFtZSBBMj4KLWNsYXNzIEZvbzIgewotICBibGFoIGI7Ci19OwotCi0vLyBG
b28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KLWNsYXNzIEZvbzMgewotICBi
bGFoIGM7Ci19OwotYGBgCi0KLUluIGFub3RoZXIgZXhhbXBsZSwKLQotYGBgCi0kcmFuZ2UgaSAx
Li5uCi1GdW5jKCRmb3IgaSArIFtbYSRpXV0pOwotJCQgVGhlIHRleHQgYmV0d2VlbiBpIGFuZCBb
WyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0aW9ucy4KLWBgYAotCi13aWxsIGdlbmVy
YXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3aXRob3V0IHRoZSBjb21tZW50cyksIGRl
cGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgotCi1gYGAKLUZ1bmMoKTsgICAgICAgICAgICAg
IC8vIElmIG4gaXMgMC4KLUZ1bmMoYTEpOyAgICAgICAgICAgIC8vIElmIG4gaXMgMS4KLUZ1bmMo
YTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KLUZ1bmMoYTEgKyBhMiArIGEzKTsgIC8vIElm
IG4gaXMgMy4KLS8vIEFuZCBzbyBvbi4uLgotYGBgCi0KLSMjIENvbnN0cnVjdHMgIyMKLQotV2Ug
c3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3JhbW1pbmcgY29uc3RydWN0czoKLQotfCBg
JHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQgY29uc3RhbnQgdmFsdWUuIGAkaWRgIGlz
IHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBtZXRhIGxleGljYWwgYmxvY2suIHwK
LXw6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Ci18IGAkcmFuZ2UgaWQgZXhwLi5leHBgIHwgU2V0cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0
aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgcmV1c2VkIGluIG11bHRpcGxlIGxvb3BzIGxhdGVy
LiAgICAgICAgICB8Ci18IGAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhl
IHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVmaW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2
YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAotfCBgJCgkKWAgICAgICAgICAgfCBHZW5lcmF0ZXMg
YSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYCRpZGAgICAgICAgICAgIHwgVmFsdWUg
b2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlvbiB2YXJpYWJsZS4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkKGV4cClgICAgICAgICB8IFZh
bHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgJGlmIGV4cCBbWyBjb2Rl
IF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAotfCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGljYWwgYmxvY2suICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKLXwgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMrKyBjb2RlLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Ci18IGAkJCBjb21tZW50YCAgICB8IE1ldGEgY29tbWVudC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotCi0qKk5vdGU6KiogVG8gZ2l2ZSB0aGUgdXNlciBzb21lIGZyZWVkb20g
aW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKLWNvZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1s
aW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVyIGAkZm9yIGZvb2AKLW9yIG5leHQgdG8g
YFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRv
IHdyaXRlCi12ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVm
b3JlIHNvbWV0aW1lcyB5b3UgbWF5Ci1uZWVkIHRvIGluc2VydCBhbiBleHRyYSBuZXctbGluZSBp
biBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBzaG93Ci11cCBpbiB5b3VyIG91dHB1dC4K
LQotIyMgR3JhbW1hciAjIwotCi1gYGAKLWNvZGUgOjo9IGF0b21pY19jb2RlKgotYXRvbWljX2Nv
ZGUgOjo9ICR2YXIgaWQgPSBleHAKLSAgICB8ICR2YXIgaWQgPSBbWyBjb2RlIF1dCi0gICAgfCAk
cmFuZ2UgaWQgZXhwLi5leHAKLSAgICB8ICRmb3IgaWQgc2VwIFtbIGNvZGUgXV0KLSAgICB8ICQo
JCkKLSAgICB8ICRpZAotICAgIHwgJChleHApCi0gICAgfCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxz
ZV9icmFuY2gKLSAgICB8IFtbIGNvZGUgXV0KLSAgICB8IGNwcF9jb2RlCi1zZXAgOjo9IGNwcF9j
b2RlIHwgZW1wdHlfc3RyaW5nCi1lbHNlX2JyYW5jaCA6Oj0gJGVsc2UgW1sgY29kZSBdXQotICAg
IHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKLSAgICB8IGVtcHR5X3N0cmluZwot
ZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRob25fc3ludGF4Ci1gYGAKLQotIyMgQ29k
ZSAjIwotCi1Zb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBjb2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMv
cHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5KS4gSXQgaXMgc3RpbGwKLXZlcnkgdW5wb2xpc2hl
ZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3RzLCBhbHRob3VnaCBpdCBoYXMgYmVlbgotc3VjY2Vz
c2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYgeW91IGZpbmQgYSBjaGFuY2UgdG8gdXNlIGl0IGlu
IHlvdXIKLXByb2plY3QsIHBsZWFzZSBsZXQgdXMga25vdyB3aGF0IHlvdSB0aGluayEgIFdlIGFs
c28gd2VsY29tZSBoZWxwIG9uCi1pbXByb3ZpbmcgUHVtcC4KLQotIyMgUmVhbCBFeGFtcGxlcyAj
IwotCi1Zb3UgY2FuIGZpbmQgcmVhbC13b3JsZCBhcHBsaWNhdGlvbnMgb2YgUHVtcCBpbiBbR29v
Z2xlIFRlc3RdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVt
cCUyNCtwYWNrYWdlJTNBaHR0cCUzQSUyRiUyRmdvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkg
YW5kIFtHb29nbGUgTW9ja10oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxl
JTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29k
ZVwuY29tKS4gIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgucHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAu
Ci0KLSMjIFRpcHMgIyMKLQotICAqIElmIGEgbWV0YSB2YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBh
IGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hp
Y2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBleGFtcGxlIGBGb28kaltbXV1IZWxwZXJg
IGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBpcyAxLgotICAqIFRvIGF2b2lkIGV4dHJh
LWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4gYnJlYWsgYSBsaW5lIGFueXdoZXJlIHlv
dSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93ZWQgYnkgYSBuZXcgbGluZS4gU2luY2Ug
YW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBbW2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0
aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1NhbXBsZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1Yx
XzdfU2FtcGxlcy5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIxZDIwMDU2NzM1
NDU3ZjZmNDlhZWNjNjEyMTlkYWQyMjYxMmJmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfU2FtcGxlcy5tZAorKysg
L2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUlmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtl
IHRvIGxvb2sgYXQgc29tZSBHb29nbGUgVGVzdCBzYW1wbGUgY29kZS4gIFRoZQotW3NhbXBsZXMg
Zm9sZGVyXSguLi9zYW1wbGVzKSBoYXMgYSBudW1iZXIgb2Ygd2VsbC1jb21tZW50ZWQgc2FtcGxl
cyBzaG93aW5nIGhvdyB0byB1c2UgYQotdmFyaWV0eSBvZiBHb29nbGUgVGVzdCBmZWF0dXJlcy4K
LQotICAqIFtTYW1wbGUgIzFdKC4uL3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYykgc2hvd3Mg
dGhlIGJhc2ljIHN0ZXBzIG9mIHVzaW5nIEdvb2dsZSBUZXN0IHRvIHRlc3QgQysrIGZ1bmN0aW9u
cy4KLSAgKiBbU2FtcGxlICMyXSguLi9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MpIHNob3dz
IGEgbW9yZSBjb21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11bHRpcGxlIG1lbWJl
ciBmdW5jdGlvbnMuCi0gICogW1NhbXBsZSAjM10oLi4vc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0
LmNjKSB1c2VzIGEgdGVzdCBmaXh0dXJlLgotICAqIFtTYW1wbGUgIzRdKC4uL3NhbXBsZXMvc2Ft
cGxlNF91bml0dGVzdC5jYykgaXMgYW5vdGhlciBiYXNpYyBleGFtcGxlIG9mIHVzaW5nIEdvb2ds
ZSBUZXN0LgotICAqIFtTYW1wbGUgIzVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykg
dGVhY2hlcyBob3cgdG8gcmV1c2UgYSB0ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdCBjYXNl
cyBieSBkZXJpdmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KLSAgKiBbU2FtcGxlICM2XSguLi9z
YW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2MpIGRlbW9uc3RyYXRlcyB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdHMuCi0gICogW1NhbXBsZSAjN10oLi4vc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNj
KSB0ZWFjaGVzIHRoZSBiYXNpY3Mgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSAgKiBb
U2FtcGxlICM4XSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MpIHNob3dzIHVzaW5nIGBD
b21iaW5lKClgIGluIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICogW1NhbXBsZSAjOV0o
Li4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKSBzaG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVy
IEFQSSB0byBtb2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xlIG91dHB1dCBhbmQgdGhlIHVzZSBv
ZiBpdHMgcmVmbGVjdGlvbiBBUEkgdG8gaW5zcGVjdCB0ZXN0IHJlc3VsdHMuCi0gICogW1NhbXBs
ZSAjMTBdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUg
bGlzdGVuZXIgQVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkgbGVhayBjaGVja2Vy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1hjb2RlR3VpZGUubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzdfWGNvZGVHdWlkZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0OWQ3NzMwOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1Yx
XzdfWGNvZGVHdWlkZS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLQotCi1UaGlz
IGd1aWRlIHdpbGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdv
cmsgaW4geW91ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRvcmlhbCBiZWdp
bnMgYnkgcXVpY2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVuY2VkIHVzZXJz
LiBBZnRlciB0aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVzIGFkZGl0aW9u
YWwgZXhwbGFuYXRpb24gYWJvdXQgZWFjaCBzdGVwLgotCi0jIFF1aWNrIFN0YXJ0ICMKLQotSGVy
ZSBpcyB0aGUgcXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlvdXIgWGNvZGUg
cHJvamVjdC4KLQotICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3ZWJzaXRlXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBjb21tYW5kOiBg
c3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8g
Z29vZ2xldGVzdC1yZWFkLW9ubHlgCi0gIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54Y29kZXByb2pg
IGluIHRoZSBgZ29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3RvcnkgYW5kIGJ1aWxk
IHRoZSBndGVzdC5mcmFtZXdvcmsuCi0gIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFy
Z2V0IGluIHlvdXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2UgIlVuaXRUZXN0
cyIKLSAgMS4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0IGFuZCBhZGQg
aXQgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgIlVu
aXRUZXN0cyIKLSAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29t
cGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgotICAxLiBFZGl0IHRoZSAi
VW5pdFRlc3RzIiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFt
ZWQgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRvIHRoZSBwYXRo
IHRvIHRoZSBmcmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHJlbGF0aXZl
IHRvIHRoZSBjb21waWxlZCBleGVjdXRhYmxlLgotICAxLiBCdWlsZCBhbmQgR28KLQotVGhlIGZv
bGxvd2luZyBzZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3RlcHMgbGlzdGVk
IGFib3ZlIGluIGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0byBjb21wbGV0
ZSBpdCBpbmNsdWRpbmcgc29tZSB2YXJpYXRpb25zLgotCi0jIEdldCB0aGUgU291cmNlICMKLQot
Q3VycmVudGx5LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlzbid0IGF2YWls
YWJsZSBpbiBhIHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBvbmx5IGF2YWls
YWJsZSBpbiB0aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRlc3QgW3NpdGVd
KGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVja291dCI+c3Zu
KSwgeW91IGNhbiBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGggdGhpcyBjb21t
YW5kOgotCi1gYGAKLXN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5Ci1gYGAKLQotQWx0ZXJuYXRpdmVseSwg
aWYgeW91IGFyZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBjb2RlIGJhc2Us
IHlvdSBjYW4gYWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVuY3kgdG8geW91
ciBvd24gU3VidmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBhcHByb2FjaCwg
ZXZlcnlvbmUgdGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2lsbCBhbHNvIHJl
Y2VpdmUgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24sIGlmIHlvdSB3
aXNoKSB3aXRob3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4gVGhpcyBtYWtl
cyB0aGUgc2V0IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2VzIHRoZSBjb3Bp
ZWQgY29kZSBpbiB0aGUgcmVwb3NpdG9yeS4KLQotVG8gdXNlIGBzdm46ZXh0ZXJuYWxzYCwgZGVj
aWRlIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNvdXJjZSByZXNp
ZGUuIFlvdSBtaWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2UgaW5zaWRlIHRo
ZSB0cnVuaywgYmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBicmFuY2ggd2hl
biB5b3UgbWFrZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lkZSB0aGUgdHJ1
bmsgaW4gYSB2ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGluZyBsaWtlIGB0
aGlyZC1wYXJ0eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24uIE9uY2UgdGhl
IGxvY2F0aW9uIGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46ZXh0ZXJuYWxz
IF9kaXJlY3RvcnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgb24gYSBkaXJl
Y3RvcnkgaW4geW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBjb250YWluIHRo
ZSBjb2RlLCBidXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5LgotCi1UaGUgY29t
bWFuZCBgc3ZuIHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lvbiBlZGl0b3Is
IG1ha2luZyBlZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGluZSkgcHJvcGVy
dHkgc2ltcGxlci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVjayBvdXQgYSB0
YWdnZWQgYnJhbmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcuIGBodHRwOi8v
Z29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4xYCkuIEFkZGl0
aW9uYWxseSwgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBzcGVjaWZpY2F0
aW9uIG9mIGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0aGUgYC1yXyMj
X2Agb3B0aW9uIChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBodHRwOi8vZ29v
Z2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KLQotSGVyZSBpcyBhbiBleGFtcGxl
IG9mIHVzaW5nIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVuayAocmVhZCB2
aWEgYHN2biBwcm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNrcyBvdXQgYSBj
b3B5IG9mIEdvb2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3JjL2dvb2dsZXRl
c3QvYCBkaXJlY3RvcnkuCi0KLWBgYAotW0NvbXB1dGVyOnN2bl0gdXNlciQgc3ZuIHByb3BnZXQg
c3ZuOmV4dGVybmFscyB0cnVuawotZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0dHA6Ly9nb29n
bGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuawotYGBgCi0KLSMgQWRkIHRoZSBGcmFtZXdv
cmsgdG8gWW91ciBQcm9qZWN0ICMKLQotVGhlIG5leHQgc3RlcCBpcyB0byBidWlsZCBhbmQgYWRk
IHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBndWlkZSBkZXNj
cmliZXMgdHdvIGNvbW1vbiB3YXlzIGJlbG93LgotCi0gICogKipPcHRpb24gMSoqIC0tLSBUaGUg
c2ltcGxlc3Qgd2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9qZWN0LCBpcyB0
byBvcGVuIGd0ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJlY3Rvcnkgb2Yg
dGhlIEdvb2dsZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBtYW51YWxseS4g
VGhlbiwgYWRkIHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3QgdXNpbmcgdGhl
ICJBZGQtPkV4aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBtZW51IG9yICJQ
cm9qZWN0LT5BZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZyYW1ld29yayBp
cyByZWxvY2F0YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVjdCBjb2RlIHRo
YXQgeW91J2xsIG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgcmVidWls
ZGluZyBldmVyeSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIgcHJvamVjdC4K
LSAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2aW5nIG9mZiB0
aGUgdHJ1bmsgb2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVzdCBmZWF0dXJl
cyBpbnRvIHlvdXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2ZWxvcGVyIHlv
dXJzZWxmKS4gWW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2ZXJ5IHRpbWUg
dGhlIHNvdXJjZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBhZGQgdGhlIGd0
ZXN0Lnhjb2RlcHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRvIHlvdXIgb3du
IFhjb2RlIHByb2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRoYXQgYXJlIHJl
dmVhbGVkIGJ5IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91IGNhbiBmaW5k
IHRoZSBndGVzdC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3VyIHRhcmdldHMg
KGRpc2N1c3NlZCBiZWxvdykuCi0KLSMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKLQotVG8gc3RhcnQg
d3JpdGluZyB0ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBUaGlzIHRhcmdl
dCB0ZW1wbGF0ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2FyYm9uLiBBZGQg
eW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxk
IHBoYXNlIG9mIHRoZSB0YXJnZXQuCi0KLU5leHQsIHlvdSdsbCB3YW50IHRvIGFkZCBndGVzdC5m
cmFtZXdvcmsgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3aGljaCBvcHRp
b24geW91IGNob3NlIGFib3ZlLgotCi0gICogKipPcHRpb24gMSoqIC0tLSBEdXJpbmcgY29tcGls
YXRpb24sIFhjb2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5raW5nIGFnYWlu
c3QgdGhlIGd0ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8gdGhlICJM
aW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRhcmdl
dC4gVGhpcyB3aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4geW91ciBoZWFk
ZXIgc2VhcmNoIHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0byBmaW5kIHRo
ZSBsaWJyYXJ5LgotICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5nIG91dCBvZiB0
aGUgdHJ1bmssIHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayB0byB5b3Vy
ICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0ZXN0IHRh
cmdldC4gSW4gYWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0LmZyYW1ld29y
ayBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlzIHdheSwgWGNv
ZGUgd2lsbCBtYWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8gZGF0ZSwgZXZl
cnkgdGltZSB5b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3UgZG9uJ3Qgc2hh
cmUgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhhdmUgdG8gY29w
eSB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVjdHMgZGlyZWN0
b3J5IHVzaW5nIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgotCi0jIFNldCBVcCB0aGUgRXhl
Y3V0YWJsZSBSdW4gRW52aXJvbm1lbnQgIwotCi1TaW5jZSB0aGUgdW5pdCB0ZXN0IGV4ZWN1dGFi
bGUgaXMgYSBzaGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0aCBhIGBDb250
ZW50cy9GcmFtZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0ZXN0LmZyYW1l
d29yay4gSW5zdGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBhdCBydW50aW1l
IHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGNh
biBiZSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIg
ZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRhYmxlIC4uLiIg
QXJndW1lbnRzIHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhlIGVudmlyb25t
ZW50OiIuIFRoZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxhdGl2ZSBvciBh
YnNvbHV0ZSkgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5mcmFtZXdvcmsu
Ci0KLUlmIHlvdSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILCBjb3Jy
ZWN0bHksIHlvdSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKLQotYGBgCi1bU2Vzc2lv
biBzdGFydGVkIGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQotICBkeWxkOiBMaWJyYXJ5
IG5vdCBsb2FkZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZyYW1ld29yay9W
ZXJzaW9ucy9BL2d0ZXN0Ci0gICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNlcm5hbWUvRG9j
dW1lbnRzL1NhbmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJhbWV3b3JrVGVz
dAotICAgIFJlYXNvbjogaW1hZ2Ugbm90IGZvdW5kCi1gYGAKLQotVG8gY29ycmVjdCB0aGlzIHBy
b2JsZW0sIGdvdCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1dGFibGUgbmFt
ZWQgaW4gIlJlZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNzYWdlIGFib3Zl
LiBUaGVuLCB3aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5kIHRoZSByZWxh
dGl2ZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
LiBUaGF0IGlzIHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZTERcX0ZSQU1F
V09SS1xfUEFUSC4KLQotIyBCdWlsZCBhbmQgR28gIwotCi1Ob3csIHdoZW4geW91IGNsaWNrICJC
dWlsZCBhbmQgR28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5nIG91dCBzb21l
dGhpbmcgbGlrZSB0aGlzOgotCi1gYGAKLVtTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0wNiAw
NjozNjoxMyAtMDYwMC5dCi1bPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZyb20gMSB0ZXN0
IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0LXVwLgotWy0t
LS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKLVsgUlVOICAgICAg
XSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCi1bICAgICAgIE9LIF0gV2lk
Z2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyBSVU4gICAgICBdIFdpZGdldElu
aXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgotWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxp
emVyVGVzdC5UZXN0Q29udmVyc2lvbgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25t
ZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZSByYW4u
Ci1bICBQQVNTRUQgIF0gMiB0ZXN0cy4KLQotVGhlIERlYnVnZ2VyIGhhcyBleGl0ZWQgd2l0aCBz
dGF0dXMgMC4gIAotYGBgCi0KLSMgU3VtbWFyeSAjCi0KLVVuaXQgdGVzdGluZyBpcyBhIHZhbHVh
YmxlIHdheSB0byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2ZW4gZHVyaW5n
IHJhcGlkIGRldmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRlc3RpbmcgRnJh
bWV3b3JrIGlzIGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBhbmQgQysrIHdo
aWNoIGludGVncmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVudmlyb25tZW50
LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Rv
Y3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyNGJmNTFiZmM0NTQxMmY2NThiZGRkNTNhMzMyZTE0
OWQ3NzMwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1hjb2RlR3VpZGUubWQKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCww
IEBACi0KLQotVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4gaG93IHRvIHVzZSB0aGUgR29vZ2xlIFRl
c3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJvamVjdHMgb24gTWFjIE9TIFguIFRoaXMg
dHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFpbmluZyB3aGF0IHRvIGRvIGZvciBleHBl
cmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0YXJ0LCB0aGUgZ3VpZGUgZ29lcyBwcm92
aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0IGVhY2ggc3RlcC4KLQotIyBRdWljayBT
dGFydCAjCi0KLUhlcmUgaXMgdGhlIHF1aWNrIGd1aWRlIGZvciB1c2luZyBHb29nbGUgVGVzdCBp
biB5b3VyIFhjb2RlIHByb2plY3QuCi0KLSAgMS4gRG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRo
ZSBbd2Vic2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QpIHVzaW5nIHRo
aXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5YAotICAxLiBPcGVuIHVwIHRoZSBgZ3Rl
c3QueGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0
b3J5IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgotICAxLiBDcmVhdGUgYSBuZXcgIlNo
ZWxsIFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBs
aWtlICJVbml0VGVzdHMiCi0gIDEuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgcHJv
amVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxk
IHBoYXNlIG9mICJVbml0VGVzdHMiCi0gIDEuIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29k
ZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKLSAg
MS4gRWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50
IHZhcmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVh
bCB0byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1l
d29yayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhlY3V0YWJsZS4KLSAgMS4gQnVpbGQgYW5k
IEdvCi0KLVRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVydGhlciBleHBsYWluIGVhY2ggb2YgdGhl
IHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVzY3JpYmluZyBpbiBtb3JlIGRldGFpbCBo
b3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUgdmFyaWF0aW9ucy4KLQotIyBHZXQgdGhl
IFNvdXJjZSAjCi0KLUN1cnJlbnRseSwgdGhlIGd0ZXN0LmZyYW1ld29yayBkaXNjdXNzZWQgaGVy
ZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVsZWFzZSBvZiBHb29nbGUgVGVzdCwgaXQg
aXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBBcyBleHBsYWluZWQgYXQgdGhlIEdvb2ds
ZSBUZXN0IFtzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9zb3VyY2Uv
Y2hlY2tvdXQiPnN2biksIHlvdSBjYW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3VzIFNWTiB3
aXRoIHRoaXMgY29tbWFuZDoKLQotYGBgCi1zdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3Qu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQotYGBgCi0KLUFs
dGVybmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4geW91ciBv
d24gY29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5hbCBkZXBl
bmRlbmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93aW5nIHRo
aXMgYXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBvc2l0b3J5
IHdpbGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJz
aW9uLCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0
bHkuIFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBhbmQgcmVk
dWNlcyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9zaXRvcnkuCi0KLVRvIHVzZSBgc3ZuOmV4
dGVybmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBleHRlcm5h
bCBzb3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291
cmNlIGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0
aGUgYnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5nIGl0IG91
dHNpZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21l
dGhpbmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0
aW9uLiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQg
c3ZuOmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3Bl
cnR5IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29u
J3QgY29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9y
eS4KLQotVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3VyIFN1YnZl
cnNpb24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5IG11bHRp
LWxpbmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8g
Y2hlY2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAo
ZS5nLiBgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0x
LjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IGFsbG93cyB0
aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIgcmV2aXNpb24gb2YgdGhlIHRydW5rIHdp
dGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IC1y
NjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rYCkuCi0KLUhlcmUg
aXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0aWVzIG9uIGEg
dHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9mIGEgcHJvamVjdC4gVGhpcyB2YWx1ZSBj
aGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBpbnRvIHRoZSBgdHJ1bmsvZXh0ZXJuYWxz
L3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgotCi1gYGAKLVtDb21wdXRlcjpzdm5dIHVzZXIk
IHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsKLWV4dGVybmFscy9zcmMvZ29vZ2xldGVz
dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsKLWBgYAotCi0jIEFk
ZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAjCi0KLVRoZSBuZXh0IHN0ZXAgaXMgdG8g
YnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgb3duIHByb2plY3QuIFRo
aXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5cyBiZWxvdy4KLQotICAqICoqT3B0aW9u
IDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQgR29vZ2xlIFRlc3QgdG8geW91ciBvd24g
cHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXByb2ogKGZvdW5kIGluIHRoZSB4Y29kZS8g
ZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVuaykgYW5kIGJ1aWxkIHRoZSBmcmFtZXdv
cmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQgZnJhbWV3b3JrIGludG8geW91ciBwcm9q
ZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFtZXdvcmsuLi4iIGZyb20gdGhlIGNvbnRl
eHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9tIHRoZSBtYWluIG1lbnUuIFRoZSBndGVz
dC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNvbnRhaW5zIHRoZSBoZWFkZXJzIGFuZCBv
YmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1ha2UgdGVzdHMuIFRoaXMgbWV0aG9kIHJl
cXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3UgdXBncmFkZSBHb29nbGUgVGVzdCBpbiB5
b3VyIHByb2plY3QuCi0gICogKipPcHRpb24gMioqIC0tLSBJZiB5b3UgYXJlIGdvaW5nIHRvIGJl
IGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBUZXN0LCBpbmNvcnBvcmF0aW5nIGl0cyBs
YXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVzdHMgKG9yIGFyZSBhIEdvb2dsZSBUZXN0
IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50IHRvIHJlYnVpbGQgdGhlIGZyYW1ld29y
ayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4gdG8gZG8gdGhpcywgeW91J2xsIG5lZWQg
dG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwgbm90IHRoZSBmcmFtZXdvcmsgaXRzZWxm
LCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVuLCBmcm9tIHRoZSBidWlsZCBwcm9kdWN0
cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVjdCdzIGRpc2Nsb3N1cmUgdHJpYW5nbGUs
IHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLCB3aGljaCBjYW4gYmUgYWRkZWQgdG8g
eW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgotCi0jIE1ha2UgYSBUZXN0IFRhcmdldCAj
Ci0KLVRvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2UgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdl
dC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxhYmxlIHVuZGVyIEJTRCwgQ29jb2EsIG9y
IENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBT
b3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0LgotCi1OZXh0LCB5b3UnbGwgd2FudCB0
byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZmZXJlbnQgd2F5cywgZGVwZW5kaW5nIHVw
b24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4KLQotICAqICoqT3B0aW9uIDEqKiAtLS0g
RHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHlvdSBhcmUg
bGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdvcmsuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3
b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlv
dXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBHb29nbGUgVGVzdCBoZWFkZXJz
IGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQgd2lsbCB0ZWxsIHRoZSBsaW5rZXIgd2hl
cmUgdG8gZmluZCB0aGUgbGlicmFyeS4KLSAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdXIgd29y
a2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxzbyB3YW50IHRvIGFkZCBndGVzdC5mcmFt
ZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9m
IHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5b3UnbGwgIHdhbnQgdG8gYWRkIHRoZSBn
dGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRvIHlvdXIgdW5pdCB0ZXN0IHRhcmdldC4g
VGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRoYXQgZ3Rlc3QuZnJhbWV3b3JrIGlzIHVw
IHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5b3VyIHRhcmdldC4gRmluYWxseSwgaWYg
eW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVzIHdpdGggR29vZ2xlIFRlc3QsIHlvdSds
bCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29yayBpbnRvIHlvdXIgb3duIGJ1aWxkIHBy
b2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2NyaXB0IiBidWlsZCBwaGFzZS4KLQotIyBT
ZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25tZW50ICMKLQotU2luY2UgdGhlIHVuaXQg
dGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwgaXQgZG9lc24ndCBoYXZlIGEgYnVuZGxl
IHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGlyZWN0b3J5LCBpbiB3aGljaCB0byBwbGFj
ZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBkeW5hbWljIGxpbmtlciBtdXN0IGJlIHRv
bGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBmcmFtZXdvcmsgaW4gYW5vdGhlciBsb2Nh
dGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlICJEWUxEXF9GUkFN
RVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSAiRWRpdCBBY3RpdmUgRXhl
Y3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVyICJWYXJpYWJsZXMgdG8gYmUgc2V0IGlu
IHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3IgdGhpcyB2YWx1ZSBpcyB0aGUgcGF0aCAo
cmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rl
c3QuZnJhbWV3b3JrLgotCi1JZiB5b3UgaGF2ZW4ndCBzZXQgdXAgdGhlIERZTERcX0ZSQU1FV09S
S1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0IGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0K
LWBgYAotW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4LTE1IDA2OjIzOjU3IC0wNjAwLl0KLSAg
ZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3Jrcy9ndGVz
dC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAotICAgIFJlZmVyZW5jZWQgZnJvbTogL1VzZXJz
L3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0U2FtcGxlL2J1aWxkL0RlYnVnL1dpZGdl
dEZyYW1ld29ya1Rlc3QKLSAgICBSZWFzb246IGltYWdlIG5vdCBmb3VuZAotYGBgCi0KLVRvIGNv
cnJlY3QgdGhpcyBwcm9ibGVtLCBnb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBl
eGVjdXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3Ig
bWVzc2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwg
ZmluZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0
ZXN0LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRo
ZSBEWUxEXF9GUkFNRVdPUktcX1BBVEguCi0KLSMgQnVpbGQgYW5kIEdvICMKLQotTm93LCB3aGVu
IHlvdSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVt
cGluZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKLQotYGBgCi1bU2Vzc2lvbiBzdGFydGVkIGF0
IDIwMDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQotWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0
cyBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50
IHNldC11cC4KLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0
Ci1bIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyAg
ICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKLVsgUlVOICAg
ICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KLVsgICAgICAgT0sgXSBX
aWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNpb24KLVstLS0tLS0tLS0tXSBHbG9iYWwg
dGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0
ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDIgdGVzdHMuCi0KLVRoZSBEZWJ1Z2dlciBoYXMg
ZXhpdGVkIHdpdGggc3RhdHVzIDAuICAKLWBgYAotCi0jIFN1bW1hcnkgIwotCi1Vbml0IHRlc3Rp
bmcgaXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxp
ZCBldmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2ds
ZSBUZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9y
IEMgYW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVu
dCBlbnZpcm9ubWVudC4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NTdhNjljNmE5ZTdiZWQ3ZDU3ZWJkNzg3MmZiMDQ3Zjk3MTc1ZmMxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjk0ICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVhZGVyIGZp
bGUgZGVmaW5lcyB0aGUgcHVibGljIEFQSSBmb3IgZGVhdGggdGVzdHMuICBJdCBpcwotLy8gI2lu
Y2x1ZGVkIGJ5IGd0ZXN0Lmggc28gYSB1c2VyIGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIHRoaXMK
LS8vIGRpcmVjdGx5LgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfREVBVEhf
VEVTVF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0RFQVRIX1RFU1RfSF8K
LQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCIK
LQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGlzIGZsYWcgY29udHJvbHMgdGhlIHN0eWxl
IG9mIGRlYXRoIHRlc3RzLiAgVmFsaWQgdmFsdWVzIGFyZSAidGhyZWFkc2FmZSIsCi0vLyBtZWFu
aW5nIHRoYXQgdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2VzcyB3aWxsIHJlLWV4ZWN1dGUgdGhl
IHRlc3QgYmluYXJ5Ci0vLyBmcm9tIHRoZSBzdGFydCwgcnVubmluZyBvbmx5IGEgc2luZ2xlIGRl
YXRoIHRlc3QsIG9yICJmYXN0IiwKLS8vIG1lYW5pbmcgdGhhdCB0aGUgY2hpbGQgcHJvY2VzcyB3
aWxsIGV4ZWN1dGUgdGhlIHRlc3QgbG9naWMgaW1tZWRpYXRlbHkKLS8vIGFmdGVyIGZvcmtpbmcu
Ci1HVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7Ci0KLSNpZiBHVEVTVF9I
QVNfREVBVEhfVEVTVAotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBSZXR1cm5zIGEgQm9v
bGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxlciBpcyBjdXJyZW50bHkKLS8v
IGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNz
LiAgVG9vbHMgc3VjaCBhcwotLy8gVmFsZ3JpbmQgaGVhcCBjaGVja2VycyBtYXkgbmVlZCB0aGlz
IHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAotLy8gdGVzdHMuICBJTVBPUlRBTlQ6
IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0IG1heSBicmVhayB0aGUKLS8v
IGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBjb2RlIE1VU1QgTk9UIHVzZSBp
dC4KLUdURVNUX0FQSV8gYm9vbCBJbkRlYXRoVGVzdENoaWxkKCk7Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBpbnRlcm5hbAotCi0vLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdXNlZnVsIGZvciB3cml0
aW5nIGRlYXRoIHRlc3RzLgotCi0vLyBIZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gYW4gQVNTRVJU
X0RFQVRIKiBvciBFWFBFQ1RfREVBVEgqIGlzCi0vLyBleGVjdXRlZDoKLS8vCi0vLyAgIDEuIEl0
IGdlbmVyYXRlcyBhIHdhcm5pbmcgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBhY3RpdmUKLS8v
ICAgdGhyZWFkLiAgVGhpcyBpcyBiZWNhdXNlIGl0J3Mgc2FmZSB0byBmb3JrKCkgb3IgY2xvbmUo
KSBvbmx5Ci0vLyAgIHdoZW4gdGhlcmUgaXMgYSBzaW5nbGUgdGhyZWFkLgotLy8KLS8vICAgMi4g
VGhlIHBhcmVudCBwcm9jZXNzIGNsb25lKClzIGEgc3ViLXByb2Nlc3MgYW5kIHJ1bnMgdGhlIGRl
YXRoCi0vLyAgIHRlc3QgaW4gaXQ7IHRoZSBzdWItcHJvY2VzcyBleGl0cyB3aXRoIGNvZGUgMCBh
dCB0aGUgZW5kIG9mIHRoZQotLy8gICBkZWF0aCB0ZXN0LCBpZiBpdCBoYXNuJ3QgZXhpdGVkIGFs
cmVhZHkuCi0vLwotLy8gICAzLiBUaGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBzdWIt
cHJvY2VzcyB0byB0ZXJtaW5hdGUuCi0vLwotLy8gICA0LiBUaGUgcGFyZW50IHByb2Nlc3MgY2hl
Y2tzIHRoZSBleGl0IGNvZGUgYW5kIGVycm9yIG1lc3NhZ2Ugb2YKLS8vICAgdGhlIHN1Yi1wcm9j
ZXNzLgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vICAgQVNTRVJUX0RFQVRIKHNlcnZlci5TZW5k
TWVzc2FnZSg1NiwgIkhlbGxvIiksICJJbnZhbGlkIHBvcnQgbnVtYmVyIik7Ci0vLyAgIGZvciAo
aW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0vLyAgICAgRVhQRUNUX0RFQVRIKHNlcnZlci5Qcm9j
ZXNzUmVxdWVzdChpKSwKLS8vICAgICAgICAgICAgICAgICAgIkludmFsaWQgcmVxdWVzdCAuKiBp
biBQcm9jZXNzUmVxdWVzdCgpIikKLS8vICAgICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byBk
aWUgb24gcmVxdWVzdCAiIDw8IGk7Ci0vLyAgIH0KLS8vCi0vLyAgIEFTU0VSVF9FWElUKHNlcnZl
ci5FeGl0Tm93KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJFeGl0aW5nIik7Ci0v
LwotLy8gICBib29sIEtpbGxlZEJ5U0lHSFVQKGludCBleGl0X2NvZGUpIHsKLS8vICAgICByZXR1
cm4gV0lGU0lHTkFMRUQoZXhpdF9jb2RlKSAmJiBXVEVSTVNJRyhleGl0X2NvZGUpID09IFNJR0hV
UDsKLS8vICAgfQotLy8KLS8vICAgQVNTRVJUX0VYSVQoY2xpZW50LkhhbmdVcFNlcnZlcigpLCBL
aWxsZWRCeVNJR0hVUCwgIkhhbmdpbmcgdXAhIik7Ci0vLwotLy8gT24gdGhlIHJlZ3VsYXIgZXhw
cmVzc2lvbnMgdXNlZCBpbiBkZWF0aCB0ZXN0czoKLS8vCi0vLyAgIE9uIFBPU0lYLWNvbXBsaWFu
dCBzeXN0ZW1zICgqbml4KSwgd2UgdXNlIHRoZSA8cmVnZXguaD4gbGlicmFyeSwKLS8vICAgd2hp
Y2ggdXNlcyB0aGUgUE9TSVggZXh0ZW5kZWQgcmVnZXggc3ludGF4LgotLy8KLS8vICAgT24gb3Ro
ZXIgcGxhdGZvcm1zIChlLmcuIFdpbmRvd3MpLCB3ZSBvbmx5IHN1cHBvcnQgYSBzaW1wbGUgcmVn
ZXgKLS8vICAgc3ludGF4IGltcGxlbWVudGVkIGFzIHBhcnQgb2YgR29vZ2xlIFRlc3QuICBUaGlz
IGxpbWl0ZWQKLS8vICAgaW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGVub3VnaCBtb3N0IG9mIHRo
ZSB0aW1lIHdoZW4gd3JpdGluZwotLy8gICBkZWF0aCB0ZXN0czsgdGhvdWdoIGl0IGxhY2tzIG1h
bnkgZmVhdHVyZXMgeW91IGNhbiBmaW5kIGluIFBDUkUKLS8vICAgb3IgUE9TSVggZXh0ZW5kZWQg
cmVnZXggc3ludGF4LiAgRm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQKLS8vICAgdW5pb24g
KCJ4fHkiKSwgZ3JvdXBpbmcgKCIoeHkpIiksIGJyYWNrZXRzICgiW3h5XSIpLCBhbmQKLS8vICAg
cmVwZXRpdGlvbiBjb3VudCAoInh7NSw3fSIpLCBhbW9uZyBvdGhlcnMuCi0vLwotLy8gICBCZWxv
dyBpcyB0aGUgc3ludGF4IHRoYXQgd2UgZG8gc3VwcG9ydC4gIFdlIGNob3NlIGl0IHRvIGJlIGEK
LS8vICAgc3Vic2V0IG9mIGJvdGggUENSRSBhbmQgUE9TSVggZXh0ZW5kZWQgcmVnZXgsIHNvIGl0
J3MgZWFzeSB0bwotLy8gICBsZWFybiB3aGVyZXZlciB5b3UgY29tZSBmcm9tLiAgSW4gdGhlIGZv
bGxvd2luZzogJ0EnIGRlbm90ZXMgYQotLy8gICBsaXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kICgu
KSwgb3IgYSBzaW5nbGUgXFwgZXNjYXBlIHNlcXVlbmNlOwotLy8gICAneCcgYW5kICd5JyBkZW5v
dGUgcmVndWxhciBleHByZXNzaW9uczsgJ20nIGFuZCAnbicgYXJlIGZvcgotLy8gICBuYXR1cmFs
IG51bWJlcnMuCi0vLwotLy8gICAgIGMgICAgIG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVy
IGMKLS8vICAgICBcXGQgICBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0Ci0vLyAgICAgXFxEICAg
bWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0Ci0vLyAgICAg
XFxmICAgbWF0Y2hlcyBcZgotLy8gICAgIFxcbiAgIG1hdGNoZXMgXG4KLS8vICAgICBcXHIgICBt
YXRjaGVzIFxyCi0vLyAgICAgXFxzICAgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwgaW5j
bHVkaW5nIFxuCi0vLyAgICAgXFxTICAgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3Qg
YSB3aGl0ZXNwYWNlCi0vLyAgICAgXFx0ICAgbWF0Y2hlcyBcdAotLy8gICAgIFxcdiAgIG1hdGNo
ZXMgXHYKLS8vICAgICBcXHcgICBtYXRjaGVzIGFueSBsZXR0ZXIsIF8sIG9yIGRlY2ltYWwgZGln
aXQKLS8vICAgICBcXFcgICBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBcXHcgZG9lc24ndCBt
YXRjaAotLy8gICAgIFxcYyAgIG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGMsIHdoaWNo
IG11c3QgYmUgYSBwdW5jdHVhdGlvbgotLy8gICAgIC4gICAgIG1hdGNoZXMgYW55IHNpbmdsZSBj
aGFyYWN0ZXIgZXhjZXB0IFxuCi0vLyAgICAgQT8gICAgbWF0Y2hlcyAwIG9yIDEgb2NjdXJyZW5j
ZXMgb2YgQQotLy8gICAgIEEqICAgIG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9mIEEK
LS8vICAgICBBKyAgICBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBBCi0vLyAgICAg
XiAgICAgbWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNo
IGxpbmUpCi0vLyAgICAgJCAgICAgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhh
dCBvZiBlYWNoIGxpbmUpCi0vLyAgICAgeHkgICAgbWF0Y2hlcyB4IGZvbGxvd2VkIGJ5IHkKLS8v
Ci0vLyAgIElmIHlvdSBhY2NpZGVudGFsbHkgdXNlIFBDUkUgb3IgUE9TSVggZXh0ZW5kZWQgcmVn
ZXggZmVhdHVyZXMKLS8vICAgbm90IGltcGxlbWVudGVkIGJ5IHVzLCB5b3Ugd2lsbCBnZXQgYSBy
dW4tdGltZSBmYWlsdXJlLiAgSW4gdGhhdAotLy8gICBjYXNlLCBwbGVhc2UgdHJ5IHRvIHJld3Jp
dGUgeW91ciByZWd1bGFyIGV4cHJlc3Npb24gd2l0aGluIHRoZQotLy8gICBhYm92ZSBzeW50YXgu
Ci0vLwotLy8gICBUaGlzIGltcGxlbWVudGF0aW9uIGlzICpub3QqIG1lYW50IHRvIGJlIGFzIGhp
Z2hseSB0dW5lZCBvciByb2J1c3QKLS8vICAgYXMgYSBjb21waWxlZCByZWdleCBsaWJyYXJ5LCBi
dXQgc2hvdWxkIHBlcmZvcm0gd2VsbCBlbm91Z2ggZm9yIGEKLS8vICAgZGVhdGggdGVzdCwgd2hp
Y2ggYWxyZWFkeSBpbmN1cnMgc2lnbmlmaWNhbnQgb3ZlcmhlYWQgYnkgbGF1bmNoaW5nCi0vLyAg
IGEgY2hpbGQgcHJvY2Vzcy4KLS8vCi0vLyBLbm93biBjYXZlYXRzOgotLy8KLS8vICAgQSAidGhy
ZWFkc2FmZSIgc3R5bGUgZGVhdGggdGVzdCBvYnRhaW5zIHRoZSBwYXRoIHRvIHRoZSB0ZXN0Ci0v
LyAgIHByb2dyYW0gZnJvbSBhcmd2WzBdIGFuZCByZS1leGVjdXRlcyBpdCBpbiB0aGUgc3ViLXBy
b2Nlc3MuICBGb3IKLS8vICAgc2ltcGxpY2l0eSwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
ZG9lc24ndCBzZWFyY2ggdGhlIFBBVEgKLS8vICAgd2hlbiBsYXVuY2hpbmcgdGhlIHN1Yi1wcm9j
ZXNzLiAgVGhpcyBtZWFucyB0aGF0IHRoZSB1c2VyIG11c3QKLS8vICAgaW52b2tlIHRoZSB0ZXN0
IHByb2dyYW0gdmlhIGEgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZQotLy8gICBwYXRo
IHNlcGFyYXRvciAoZS5nLiBwYXRoL3RvL2Zvb190ZXN0IGFuZAotLy8gICAvYWJzb2x1dGUvcGF0
aC90by9iYXJfdGVzdCBhcmUgZmluZSwgYnV0IGZvb190ZXN0IGlzIG5vdCkuICBUaGlzCi0vLyAg
IGlzIHJhcmVseSBhIHByb2JsZW0gYXMgcGVvcGxlIHVzdWFsbHkgZG9uJ3QgcHV0IHRoZSB0ZXN0
IGJpbmFyeQotLy8gICBkaXJlY3RvcnkgaW4gUEFUSC4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUu
Y29tKTogbWFrZSB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cyBzZWFyY2ggdGhlIFBBVEguCi0KLS8v
IEFzc2VydHMgdGhhdCBhIGdpdmVuIHN0YXRlbWVudCBjYXVzZXMgdGhlIHByb2dyYW0gdG8gZXhp
dCwgd2l0aCBhbgotLy8gaW50ZWdlciBleGl0IHN0YXR1cyB0aGF0IHNhdGlzZmllcyBwcmVkaWNh
dGUsIGFuZCBlbWl0dGluZyBlcnJvciBvdXRwdXQKLS8vIHRoYXQgbWF0Y2hlcyByZWdleC4KLSMg
ZGVmaW5lIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCkgXAotICAgIEdU
RVNUX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleCwgR1RFU1RfRkFUQUxf
RkFJTFVSRV8pCi0KLS8vIExpa2UgQVNTRVJUX0VYSVQsIGJ1dCBjb250aW51ZXMgb24gdG8gc3Vj
Y2Vzc2l2ZSB0ZXN0cyBpbiB0aGUKLS8vIHRlc3QgY2FzZSwgaWYgYW55OgotIyBkZWZpbmUgRVhQ
RUNUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4KSBcCi0gICAgR1RFU1RfREVBVEhf
VEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJF
XykKLQotLy8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJvZ3Jh
bSB0byBleGl0LCBlaXRoZXIgYnkKLS8vIGV4cGxpY2l0bHkgZXhpdGluZyB3aXRoIGEgbm9uemVy
byBleGl0IGNvZGUgb3IgYmVpbmcga2lsbGVkIGJ5IGEKLS8vIHNpZ25hbCwgYW5kIGVtaXR0aW5n
IGVycm9yIG91dHB1dCB0aGF0IG1hdGNoZXMgcmVnZXguCi0jIGRlZmluZSBBU1NFUlRfREVBVEgo
c3RhdGVtZW50LCByZWdleCkgXAotICAgIEFTU0VSVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6RXhpdGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQotCi0vLyBMaWtlIEFTU0VS
VF9ERUFUSCwgYnV0IGNvbnRpbnVlcyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQotLy8g
dGVzdCBjYXNlLCBpZiBhbnk6Ci0jIGRlZmluZSBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdl
eCkgXAotICAgIEVYUEVDVF9FWElUKHN0YXRlbWVudCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhp
dGVkVW5zdWNjZXNzZnVsbHksIHJlZ2V4KQotCi0vLyBUd28gcHJlZGljYXRlIGNsYXNzZXMgdGhh
dCBjYW4gYmUgdXNlZCBpbiB7QVNTRVJULEVYUEVDVH1fRVhJVCo6Ci0KLS8vIFRlc3RzIHRoYXQg
YW4gZXhpdCBjb2RlIGRlc2NyaWJlcyBhIG5vcm1hbCBleGl0IHdpdGggYSBnaXZlbiBleGl0IGNv
ZGUuCi1jbGFzcyBHVEVTVF9BUElfIEV4aXRlZFdpdGhDb2RlIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEV4aXRlZFdpdGhDb2RlKGludCBleGl0X2NvZGUpOwotICBib29sIG9wZXJhdG9yKCkoaW50
IGV4aXRfc3RhdHVzKSBjb25zdDsKLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEV4aXRl
ZFdpdGhDb2RlJiBvdGhlcik7Ci0KLSAgY29uc3QgaW50IGV4aXRfY29kZV87Ci19OwotCi0jIGlm
ICFHVEVTVF9PU19XSU5ET1dTCi0vLyBUZXN0cyB0aGF0IGFuIGV4aXQgY29kZSBkZXNjcmliZXMg
YW4gZXhpdCBkdWUgdG8gdGVybWluYXRpb24gYnkgYQotLy8gZ2l2ZW4gc2lnbmFsLgotY2xhc3Mg
R1RFU1RfQVBJXyBLaWxsZWRCeVNpZ25hbCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBLaWxsZWRC
eVNpZ25hbChpbnQgc2lnbnVtKTsKLSAgYm9vbCBvcGVyYXRvcigpKGludCBleGl0X3N0YXR1cykg
Y29uc3Q7Ci0gcHJpdmF0ZToKLSAgY29uc3QgaW50IHNpZ251bV87Ci19OwotIyBlbmRpZiAgLy8g
IUdURVNUX09TX1dJTkRPV1MKLQotLy8gRVhQRUNUX0RFQlVHX0RFQVRIIGFzc2VydHMgdGhhdCB0
aGUgZ2l2ZW4gc3RhdGVtZW50cyBkaWUgaW4gZGVidWcgbW9kZS4KLS8vIFRoZSBkZWF0aCB0ZXN0
aW5nIGZyYW1ld29yayBjYXVzZXMgdGhpcyB0byBoYXZlIGludGVyZXN0aW5nIHNlbWFudGljcywK
LS8vIHNpbmNlIHRoZSBzaWRlZWZmZWN0cyBvZiB0aGUgY2FsbCBhcmUgb25seSB2aXNpYmxlIGlu
IG9wdCBtb2RlLCBhbmQgbm90Ci0vLyBpbiBkZWJ1ZyBtb2RlLgotLy8KLS8vIEluIHByYWN0aWNl
LCB0aGlzIGNhbiBiZSB1c2VkIHRvIHRlc3QgZnVuY3Rpb25zIHRoYXQgdXRpbGl6ZSB0aGUKLS8v
IExPRyhERkFUQUwpIG1hY3JvIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3R5bGU6Ci0vLwotLy8gaW50
IERpZUluRGVidWdPcjEyKGludCogc2lkZWVmZmVjdCkgewotLy8gICBpZiAoc2lkZWVmZmVjdCkg
ewotLy8gICAgICpzaWRlZWZmZWN0ID0gMTI7Ci0vLyAgIH0KLS8vICAgTE9HKERGQVRBTCkgPDwg
ImRlYXRoIjsKLS8vICAgcmV0dXJuIDEyOwotLy8gfQotLy8KLS8vIFRFU1QoVGVzdENhc2UsIFRl
c3REaWVPcjEyV29ya3NJbkRnYkFuZE9wdCkgewotLy8gICBpbnQgc2lkZWVmZmVjdCA9IDA7Ci0v
LyAgIC8vIE9ubHkgYXNzZXJ0cyBpbiBkYmcuCi0vLyAgIEVYUEVDVF9ERUJVR19ERUFUSChEaWVJ
bkRlYnVnT3IxMigmc2lkZWVmZmVjdCksICJkZWF0aCIpOwotLy8KLS8vICNpZmRlZiBOREVCVUcK
LS8vICAgLy8gb3B0LW1vZGUgaGFzIHNpZGVlZmZlY3QgdmlzaWJsZS4KLS8vICAgRVhQRUNUX0VR
KDEyLCBzaWRlZWZmZWN0KTsKLS8vICNlbHNlCi0vLyAgIC8vIGRiZy1tb2RlIG5vIHZpc2libGUg
c2lkZWVmZmVjdC4KLS8vICAgRVhQRUNUX0VRKDAsIHNpZGVlZmZlY3QpOwotLy8gI2VuZGlmCi0v
LyB9Ci0vLwotLy8gVGhpcyB3aWxsIGFzc2VydCB0aGF0IERpZUluRGVidWdSZXR1cm4xMkluT3B0
KCkgY3Jhc2hlcyBpbiBkZWJ1ZwotLy8gbW9kZSwgdXN1YWxseSBkdWUgdG8gYSBEQ0hFQ0sgb3Ig
TE9HKERGQVRBTCksIGJ1dCByZXR1cm5zIHRoZQotLy8gYXBwcm9wcmlhdGUgZmFsbGJhY2sgdmFs
dWUgKDEyIGluIHRoaXMgY2FzZSkgaW4gb3B0IG1vZGUuIElmIHlvdQotLy8gbmVlZCB0byB0ZXN0
IHRoYXQgYSBmdW5jdGlvbiBoYXMgYXBwcm9wcmlhdGUgc2lkZS1lZmZlY3RzIGluIG9wdAotLy8g
bW9kZSwgaW5jbHVkZSBhc3NlcnRpb25zIGFnYWluc3QgdGhlIHNpZGUtZWZmZWN0cy4gIEEgZ2Vu
ZXJhbAotLy8gcGF0dGVybiBmb3IgdGhpcyBpczoKLS8vCi0vLyBFWFBFQ1RfREVCVUdfREVBVEgo
ewotLy8gICAvLyBTaWRlLWVmZmVjdHMgaGVyZSB3aWxsIGhhdmUgYW4gZWZmZWN0IGFmdGVyIHRo
aXMgc3RhdGVtZW50IGluCi0vLyAgIC8vIG9wdCBtb2RlLCBidXQgbm9uZSBpbiBkZWJ1ZyBtb2Rl
LgotLy8gICBFWFBFQ1RfRVEoMTIsIERpZUluRGVidWdPcjEyKCZzaWRlZWZmZWN0KSk7Ci0vLyB9
LCAiZGVhdGgiKTsKLS8vCi0jIGlmZGVmIE5ERUJVRwotCi0jICBkZWZpbmUgRVhQRUNUX0RFQlVH
X0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgR1RFU1RfRVhFQ1VURV9TVEFURU1FTlRfKHN0
YXRlbWVudCwgcmVnZXgpCi0KLSMgIGRlZmluZSBBU1NFUlRfREVCVUdfREVBVEgoc3RhdGVtZW50
LCByZWdleCkgXAotICBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCByZWdleCkK
LQotIyBlbHNlCi0KLSMgIGRlZmluZSBFWFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdl
eCkgXAotICBFWFBFQ1RfREVBVEgoc3RhdGVtZW50LCByZWdleCkKLQotIyAgZGVmaW5lIEFTU0VS
VF9ERUJVR19ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIEFTU0VSVF9ERUFUSChzdGF0ZW1l
bnQsIHJlZ2V4KQotCi0jIGVuZGlmICAvLyBOREVCVUcgZm9yIEVYUEVDVF9ERUJVR19ERUFUSAot
I2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGFuZAotLy8gQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RChzdGF0ZW1lbnQsIHJlZ2V4KSBleHBhbmQgdG8gcmVhbCBkZWF0aCB0ZXN0cyBpZgotLy8gZGVh
dGggdGVzdHMgYXJlIHN1cHBvcnRlZDsgb3RoZXJ3aXNlIHRoZXkganVzdCBpc3N1ZSBhIHdhcm5p
bmcuICBUaGlzIGlzCi0vLyB1c2VmdWwgd2hlbiB5b3UgYXJlIGNvbWJpbmluZyBkZWF0aCB0ZXN0
IGFzc2VydGlvbnMgd2l0aCBub3JtYWwgdGVzdAotLy8gYXNzZXJ0aW9ucyBpbiBvbmUgdGVzdC4K
LSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotIyBkZWZpbmUgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAgRVhQRUNUX0RFQVRIKHN0YXRlbWVudCwgcmVn
ZXgpCi0jIGRlZmluZSBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgp
IFwKLSAgICBBU1NFUlRfREVBVEgoc3RhdGVtZW50LCByZWdleCkKLSNlbHNlCi0jIGRlZmluZSBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgICBHVEVTVF9V
TlNVUFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4LCApCi0jIGRlZmluZSBBU1NF
UlRfREVBVEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgICBHVEVTVF9VTlNV
UFBPUlRFRF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHJlZ2V4LCByZXR1cm4pCi0jZW5kaWYKLQot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0dURVNUX0RFQVRIX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNz
YWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlODc5YmNhNzkyN2FmYWUyNDk5
YTYxMzdhYjI2ZjQ5OTFmYmJhY2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBNZXNzYWdlIGNsYXNzLgot
Ly8KLS8vIElNUE9SVEFOVCBOT1RFOiBEdWUgdG8gbGltaXRhdGlvbiBvZiB0aGUgQysrIGxhbmd1
YWdlLCB3ZSBoYXZlIHRvCi0vLyBsZWF2ZSBzb21lIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRl
dGFpbHMgaW4gdGhpcyBoZWFkZXIgZmlsZS4KLS8vIFRoZXkgYXJlIGNsZWFybHkgbWFya2VkIGJ5
IGNvbW1lbnRzIGxpa2UgdGhpczoKLS8vCi0vLyAgIC8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9O
IC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLS8vCi0vLyBTdWNoIGNvZGUgaXMgTk9U
IG1lYW50IHRvIGJlIHVzZWQgYnkgYSB1c2VyIGRpcmVjdGx5LCBhbmQgaXMgc3ViamVjdAotLy8g
dG8gQ0hBTkdFIFdJVEhPVVQgTk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBERVBFTkQgT04gSVQg
aW4gYSB1c2VyCi0vLyBwcm9ncmFtIQotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RF
U1RfTUVTU0FHRV9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0Vf
SF8KLQotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKLQotLy8gRW5zdXJlcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBvcGVyYXRv
cjw8IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotLy8gU2VlIE1lc3NhZ2UmIG9wZXJhdG9yPDwo
Li4uKSBiZWxvdyBmb3Igd2h5Lgotdm9pZCBvcGVyYXRvcjw8KGNvbnN0IHRlc3Rpbmc6OmludGVy
bmFsOjpTZWNyZXQmLCBpbnQpOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRoZSBNZXNz
YWdlIGNsYXNzIHdvcmtzIGxpa2UgYW4gb3N0cmVhbSByZXBlYXRlci4KLS8vCi0vLyBUeXBpY2Fs
IHVzYWdlOgotLy8KLS8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZhbHVlcyB0byBhIE1l
c3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0ZXh0IGluIGEgc3Ry
aW5nc3RyZWFtLgotLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3NhZ2Ugb2JqZWN0IHRv
IGFuIG9zdHJlYW0uCi0vLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGluIHRoZSBNZXNzYWdl
IHRvIGJlIHN0cmVhbWVkCi0vLyAgICAgIHRvIHRoZSBvc3RyZWFtLgotLy8KLS8vIEZvciBleGFt
cGxlOwotLy8KLS8vICAgdGVzdGluZzo6TWVzc2FnZSBmb287Ci0vLyAgIGZvbyA8PCAxIDw8ICIg
IT0gIiA8PCAyOwotLy8gICBzdGQ6OmNvdXQgPDwgZm9vOwotLy8KLS8vIHdpbGwgcHJpbnQgIjEg
IT0gMiIuCi0vLwotLy8gTWVzc2FnZSBpcyBub3QgaW50ZW5kZWQgdG8gYmUgaW5oZXJpdGVkIGZy
b20uICBJbiBwYXJ0aWN1bGFyLCBpdHMKLS8vIGRlc3RydWN0b3IgaXMgbm90IHZpcnR1YWwuCi0v
LwotLy8gTm90ZSB0aGF0IHN0cmluZ3N0cmVhbSBiZWhhdmVzIGRpZmZlcmVudGx5IGluIGdjYyBh
bmQgaW4gTVNWQy4gIFlvdQotLy8gY2FuIHN0cmVhbSBhIE5VTEwgY2hhciBwb2ludGVyIHRvIGl0
IGluIHRoZSBmb3JtZXIsIGJ1dCBub3QgaW4gdGhlCi0vLyBsYXR0ZXIgKGl0IGNhdXNlcyBhbiBh
Y2Nlc3MgdmlvbGF0aW9uIGlmIHlvdSBkbykuICBUaGUgTWVzc2FnZQotLy8gY2xhc3MgaGlkZXMg
dGhpcyBkaWZmZXJlbmNlIGJ5IHRyZWF0aW5nIGEgTlVMTCBjaGFyIHBvaW50ZXIgYXMKLS8vICIo
bnVsbCkiLgotY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKLSBwcml2YXRlOgotICAvLyBUaGUg
dHlwZSBvZiBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBmbHVzaCkgZm9y
Ci0gIC8vIG5hcnJvdyBzdHJlYW1zLgotICB0eXBlZGVmIHN0ZDo6b3N0cmVhbSYgKCpCYXNpY05h
cnJvd0lvTWFuaXApKHN0ZDo6b3N0cmVhbSYpOwotCi0gcHVibGljOgotICAvLyBDb25zdHJ1Y3Rz
IGFuIGVtcHR5IE1lc3NhZ2UuCi0gIE1lc3NhZ2UoKTsKLQotICAvLyBDb3B5IGNvbnN0cnVjdG9y
LgotICBNZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdz
dHJlYW0pIHsgIC8vIE5PTElOVAotICAgICpzc18gPDwgbXNnLkdldFN0cmluZygpOwotICB9Ci0K
LSAgLy8gQ29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotICBleHBsaWNpdCBN
ZXNzYWdlKGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsK
LSAgICAqc3NfIDw8IHN0cjsKLSAgfQotCi0jaWYgR1RFU1RfT1NfU1lNQklBTgotICAvLyBTdHJl
YW1zIGEgdmFsdWUgKGVpdGhlciBhIHBvaW50ZXIgb3Igbm90KSB0byB0aGlzIG9iamVjdC4KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGlubGluZSBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25z
dCBUJiB2YWx1ZSkgewotICAgIFN0cmVhbUhlbHBlcih0eXBlbmFtZSBpbnRlcm5hbDo6aXNfcG9p
bnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0jZWxzZQot
ICAvLyBTdHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYg
dmFsKSB7Ci0gICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9yIFNUTCBjb250YWlu
ZXJzLiAgVGhlc2UKLSAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBu
YW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KLSAgICAvLwotICAgIC8vIEMrKydzIHN5bWJvbCBs
b29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhlc2UKLSAgICAvLyBv
dmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNwYWNlIG9yIHRoZSBn
bG9iYWwKLSAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNwYWNlcywgaW5jbHVk
aW5nIHRoZSB0ZXN0aW5nCi0gICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2dsZSBUZXN0J3MgTWVz
c2FnZSBjbGFzcyBpcyBpbi4KLSAgICAvLwotICAgIC8vIFRvIGFsbG93IFNUTCBjb250YWluZXJz
IChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgotICAgIC8vIGRlZmluZWQg
aW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xlIFRlc3QKLSAgICAv
LyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRoZSBjdXN0b20gPDwg
b3BlcmF0b3IKLSAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgV2l0aCB0aGlzIHVz
aW5nIGRlY2xhcmF0aW9uLAotICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZpbmVkIGluIHRoZSBn
bG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQotICAgIC8vIHZpc2libGUgdmlhIEtvZW5pZyBsb29r
dXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIHVzaW5nIDo6b3BlcmF0
b3IgPDw7Ci0gICAgKnNzXyA8PCB2YWw7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8g
U3RyZWFtcyBhIHBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCi0gIC8vCi0gIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgYW4gb3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIG9uZS4gIFdoZW4geW91Ci0g
IC8vIHN0cmVhbSBhIHBvaW50ZXIgdG8gYSBNZXNzYWdlLCB0aGlzIGRlZmluaXRpb24gd2lsbCBi
ZSB1c2VkIGFzIGl0Ci0gIC8vIGlzIG1vcmUgc3BlY2lhbGl6ZWQuICAoVGhlIEMrKyBTdGFuZGFy
ZCwgc2VjdGlvbgotICAvLyBbdGVtcC5mdW5jLm9yZGVyXS4pICBJZiB5b3Ugc3RyZWFtIGEgbm9u
LXBvaW50ZXIsIHRoZW4gdGhlCi0gIC8vIHByZXZpb3VzIGRlZmluaXRpb24gd2lsbCBiZSB1c2Vk
LgotICAvLwotICAvLyBUaGUgcmVhc29uIGZvciB0aGlzIG92ZXJsb2FkIGlzIHRoYXQgc3RyZWFt
aW5nIGEgTlVMTCBwb2ludGVyIHRvCi0gIC8vIG9zdHJlYW0gaXMgdW5kZWZpbmVkIGJlaGF2aW9y
LiAgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciwgeW91Ci0gIC8vIG1heSBnZXQgIjAiLCAiKG5p
bCkiLCAiKG51bGwpIiwgb3IgYW4gYWNjZXNzIHZpb2xhdGlvbi4gIFRvCi0gIC8vIGVuc3VyZSBj
b25zaXN0ZW50IHJlc3VsdCBhY3Jvc3MgY29tcGlsZXJzLCB3ZSBhbHdheXMgdHJlYXQgTlVMTAot
ICAvLyBhcyAiKG51bGwpIi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGlubGluZSBNZXNz
YWdlJiBvcGVyYXRvciA8PChUKiBjb25zdCYgcG9pbnRlcikgeyAgLy8gTk9MSU5UCi0gICAgaWYg
KHBvaW50ZXIgPT0gTlVMTCkgewotICAgICAgKnNzXyA8PCAiKG51bGwpIjsKLSAgICB9IGVsc2Ug
ewotICAgICAgKnNzXyA8PCBwb2ludGVyOwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LSNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgotCi0gIC8vIFNpbmNlIHRoZSBiYXNpYyBJTyBt
YW5pcHVsYXRvcnMgYXJlIG92ZXJsb2FkZWQgZm9yIGJvdGggbmFycm93Ci0gIC8vIGFuZCB3aWRl
IHN0cmVhbXMsIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGlzIHNwZWNpYWxpemVkIGRlZmluaXRpb24K
LSAgLy8gb2Ygb3BlcmF0b3IgPDwsIGV2ZW4gdGhvdWdoIGl0cyBib2R5IGlzIHRoZSBzYW1lIGFz
IHRoZQotICAvLyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGFib3ZlLiAgV2l0aG91dCB0aGlzIGRlZmlu
aXRpb24sIHN0cmVhbWluZwotICAvLyBlbmRsIG9yIG90aGVyIGJhc2ljIElPIG1hbmlwdWxhdG9y
cyB0byBNZXNzYWdlIHdpbGwgY29uZnVzZSB0aGUKLSAgLy8gY29tcGlsZXIuCi0gIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KEJhc2ljTmFycm93SW9NYW5pcCB2YWwpIHsKLSAgICAqc3NfIDw8IHZhbDsK
LSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBJbnN0ZWFkIG9mIDEvMCwgd2Ugd2FudCB0
byBzZWUgdHJ1ZS9mYWxzZSBmb3IgYm9vbCB2YWx1ZXMuCi0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8
KGJvb2wgYikgewotICAgIHJldHVybiAqdGhpcyA8PCAoYiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwot
ICB9Ci0KLSAgLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMg
c3RyaW5nIHRvIGEgTWVzc2FnZQotICAvLyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCi0gIE1l
c3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIpOwotICBNZXNzYWdl
JiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotI2lmIEdURVNUX0hBU19TVERf
V1NUUklORwotICAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cg
c3RyaW5nIHVzaW5nIHRoZSBVVEYtOAotICAvLyBlbmNvZGluZywgYW5kIHN0cmVhbXMgdGhlIHJl
c3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgotICBNZXNzYWdlJiBvcGVyYXRvciA8PChjb25z
dCA6OnN0ZDo6d3N0cmluZyYgd3N0cik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklO
RwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0gIC8vIENvbnZlcnRzIHRoZSBnaXZl
biB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVURi04Ci0gIC8vIGVu
Y29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVzc2FnZSBvYmplY3QuCi0g
IE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IDo6d3N0cmluZyYgd3N0cik7Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0gIC8vIEdldHMgdGhlIHRleHQgc3RyZWFtZWQg
dG8gdGhpcyBvYmplY3Qgc28gZmFyIGFzIGFuIHN0ZDo6c3RyaW5nLgotICAvLyBFYWNoICdcMCcg
Y2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLSAgLy8KLSAg
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotICBzdGQ6OnN0cmluZyBHZXRTdHJpbmcoKSBjb25zdDsKLQotIHByaXZhdGU6Ci0KLSNpZiBH
VEVTVF9PU19TWU1CSUFOCi0gIC8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhlIE5va2lhIFN5bWJp
YW4gQ29tcGlsZXIgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCi0gIC8vIGNvbnN0IFQmIGFuZCBjb25z
dCBUKiBpbiBhIGZ1bmN0aW9uIHRlbXBsYXRlLiBUaGUgTm9raWEgY29tcGlsZXIgX2Nhbl8KLSAg
Ly8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFu
ZCBUKiwgc28gYQotICAvLyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9pbnRlciB3b3Jrcywg
YW5kIHdlIGNhbiBvdmVybG9hZCBvbiB0aGF0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
aW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUgLyppc19wb2ludGVy
Ki8sIFQqIHBvaW50ZXIpIHsKLSAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7Ci0gICAgICAqc3Nf
IDw8ICIobnVsbCkiOwotICAgIH0gZWxzZSB7Ci0gICAgICAqc3NfIDw8IHBvaW50ZXI7Ci0gICAg
fQotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCBTdHJlYW1IZWxw
ZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUgLyppc19wb2ludGVyKi8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSkgewotICAgIC8vIFNlZSB0aGUgY29tbWVudHMgaW4g
TWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYpIGFib3ZlIGZvciB3aHkKLSAgICAvLyB3ZSBu
ZWVkIHRoaXMgdXNpbmcgc3RhdGVtZW50LgotICAgIHVzaW5nIDo6b3BlcmF0b3IgPDw7Ci0gICAg
KnNzXyA8PCB2YWx1ZTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9PU19TWU1CSUFOCi0KLSAgLy8g
V2UnbGwgaG9sZCB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBoZXJlLgotICBjb25z
dCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0cmluZ3N0cmVhbT4gc3NfOwotCi0gIC8v
IFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1lbnQpIHRoaXMgdG8gcHJldmVudCB0aGUgY29t
cGlsZXIKLSAgLy8gZnJvbSBpbXBsZW1lbnRpbmcgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0g
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2UmKTsKLX07Ci0KLS8vIFN0cmVhbXMgYSBNZXNz
YWdlIHRvIGFuIG9zdHJlYW0uCi1pbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PChzdGQ6
Om9zdHJlYW0mIG9zLCBjb25zdCBNZXNzYWdlJiBzYikgewotICByZXR1cm4gb3MgPDwgc2IuR2V0
U3RyaW5nKCk7Ci19Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIENvbnZlcnRzIGEgc3Ry
ZWFtYWJsZSB2YWx1ZSB0byBhbiBzdGQ6OnN0cmluZy4gIEEgTlVMTCBwb2ludGVyIGlzCi0vLyBj
b252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIDo6c3RyaW5n
LAotLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0cmluZyBvYmplY3Qs
IGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0aCAiXFwwIi4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjpzdHJpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKGNvbnN0
IFQmIHN0cmVhbWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3RyZWFtYWJsZSkuR2V0
U3RyaW5nKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNl
IHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX01FU1NBR0Vf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVz
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOGY5YmE3OWViMzAzNzdmMTY1ZDhhMDIwMGQ0NzUw
ZDM0OWI4ZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDQ0ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1h
bmQ6Ci0vLyAgICAgcHVtcC5weSBndGVzdC1wYXJhbS10ZXN0LmgucHVtcAotLy8gRE8gTk9UIEVE
SVQgQlkgSEFORCEhIQotCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0v
LyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVz
dHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8K
LS8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBI
QU5EIQotLy8KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QQVJBTV9URVNUX0hf
Ci0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwotCi0KLS8v
IFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYWxsb3cgeW91IHRvIHRlc3QgeW91ciBjb2RlIHdp
dGggZGlmZmVyZW50Ci0vLyBwYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGluZyBtdWx0aXBsZSBjb3Bp
ZXMgb2YgdGhlIHNhbWUgdGVzdC4KLS8vCi0vLyBIZXJlIGlzIGhvdyB5b3UgdXNlIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHM6Ci0KLSNpZiAwCi0KLS8vIFRvIHdyaXRlIHZhbHVlLXBhcmFtZXRl
cml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotLy8gY2xhc3Mu
IEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD4gKHNl
ZSBiZWxvdyBmb3IKLS8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1lIHRoYXQncyBzb21ldGlt
ZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKLS8vIGNsYXNzIGhpZXJhcmNoaWVzKSwgd2hl
cmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgotLy8gVGVzdFdpdGhQYXJhbTxU
PiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQgY2FuIGJlIGFueQotLy8g
Y29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3UgYXJlIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUKLS8vIGxpZmVzcGFuIG9mIHRoZSBwb2ludGVkIHZhbHVlcy4KLQot
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hh
cio+IHsKLSAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBjbGFzcyBmaXh0dXJl
IG1lbWJlcnMgaGVyZS4KLX07Ci0KLS8vIFRoZW4sIHVzZSB0aGUgVEVTVF9QIG1hY3JvIHRvIGRl
ZmluZSBhcyBtYW55IHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGZvciB0aGlzIGZpeHR1cmUgYXMg
eW91IHdhbnQuIFRoZSBfUCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIgotLy8gb3IgInBh
dHRlcm4iLCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KLQotVEVTVF9QKEZvb1Rlc3Qs
IERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0aGUgdGVzdCBwYXJhbWV0
ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKLSAgLy8gb2YgdGhlIFRlc3RXaXRoUGFyYW08
VD4gY2xhc3M6Ci0gIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKLSAgLi4uCi19
Ci0KLVRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewotICAuLi4KLX0KLQotLy8gRmluYWxs
eSwgeW91IGNhbiB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8gaW5zdGFudGlhdGUgdGhl
IHRlc3QKLS8vIGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBudW1iZXIKLS8vIG9mIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0
ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotLy8gKHN1cnByaXNlISkg
cGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBvZiB0aGVtLCB3aGljaAot
Ly8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6Ci0vLwotLy8KLS8vICBSYW5nZShi
ZWdpbiwgZW5kIFssIHN0ZXBdKSAtIFlpZWxkcyB2YWx1ZXMge2JlZ2luLCBiZWdpbitzdGVwLAot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4rc3RlcCtzdGVwLCAuLi59LiBU
aGUgdmFsdWVzIGRvIG5vdAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVk
ZSBlbmQuIHN0ZXAgZGVmYXVsdHMgdG8gMS4KLS8vICBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKSAg
ICAtIFlpZWxkcyB2YWx1ZXMge3YxLCB2MiwgLi4uLCB2Tn0uCi0vLyAgVmFsdWVzSW4oY29udGFp
bmVyKSAgICAgICAgLSBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxlIGFycmF5LCBhbiBTVEwK
LS8vICBWYWx1ZXNJbihiZWdpbixlbmQpICAgICAgICAgIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0
b3IgcmFuZ2UgW2JlZ2luLCBlbmQpLgotLy8gIEJvb2woKSAgICAgICAgICAgICAgICAgICAgIC0g
WWllbGRzIHNlcXVlbmNlIHtmYWxzZSwgdHJ1ZX0uCi0vLyAgQ29tYmluZShnMSwgZzIsIC4uLiwg
Z04pICAgLSBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRlc2lhbiBwcm9kdWN0Ci0v
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRo
ZSB2YWx1ZXMgZ2VuZXJhdGVkCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0
aGUgTiBnZW5lcmF0b3JzLgotLy8KLS8vIEZvciBtb3JlIGRldGFpbHMsIHNlZSBjb21tZW50cyBh
dCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGJlbG93Ci0vLyBpbiB0aGlzIGZp
bGUuCi0vLwotLy8gVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0
cyBmcm9tIHRoZSBGb29UZXN0IHRlc3QgY2FzZQotLy8gZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1
ZXMgIm1lZW55IiwgIm1pbnkiLCBhbmQgIm1vZSIuCi0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEluc3RhbnRpYXRpb25OYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgRm9vVGVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygibWVlbnkiLCAibWlueSIsICJtb2UiKSk7Ci0K
LS8vIFRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4sICh5
ZXMsIHlvdQotLy8gY2FuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhlbiBvbmNlKSB0aGUgZmlyc3Qg
YXJndW1lbnQgdG8gdGhlCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpcyBhIHBy
ZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCi0vLyBhY3R1YWwgdGVzdCBjYXNlIG5hbWUu
IFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKLS8vIGluc3Rh
bnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhh
dmUKLS8vIHRoZXNlIG5hbWVzOgotLy8KLS8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5Eb2VzQmxhaC8wIGZvciAibWVlbnkiCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuRG9lc0JsYWgvMSBmb3IgIm1pbnkiCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuRG9lc0JsYWgvMiBmb3IgIm1vZSIKLS8vICAgICogSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5IYXNCbGFoQmxhaC8wIGZvciAibWVlbnkiCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuSGFzQmxhaEJsYWgvMSBmb3IgIm1pbnkiCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1l
L0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMiBmb3IgIm1vZSIKLS8vCi0vLyBZb3UgY2FuIHVzZSB0aGVz
ZSBuYW1lcyBpbiAtLWd0ZXN0X2ZpbHRlci4KLS8vCi0vLyBUaGlzIHN0YXRlbWVudCB3aWxsIGlu
c3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIEZvb1Rlc3QgYWdhaW4sIGVhY2gKLS8vIHdpdGggcGFy
YW1ldGVyIHZhbHVlcyAiY2F0IiBhbmQgImRvZyI6Ci0KLWNvbnN0IGNoYXIqIHBldHNbXSA9IHsi
Y2F0IiwgImRvZyJ9OwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRp
b25OYW1lLCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7Ci0KLS8vIFRoZSB0ZXN0cyBmcm9tIHRo
ZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKLS8vCi0vLyAgICAq
IEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzAgZm9yICJjYXQiCi0v
LyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzEgZm9yICJk
b2ciCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFo
LzAgZm9yICJjYXQiCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhh
c0JsYWhCbGFoLzEgZm9yICJkb2ciCi0vLwotLy8gUGxlYXNlIG5vdGUgdGhhdCBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cwotLy8gaW4gdGhlIGdpdmVu
IHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgotLy8g
QUZURVIgdGhlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHN0YXRlbWVudC4KLS8vCi0vLyBQbGVh
c2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChpbmNsdWRpbmcgcGFyYW1l
dGVycyB0byB0aGUKLS8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQgaW4gSW5pdEdvb2dsZVRl
c3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgotLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIg
b24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVycyBpbiBvcmRlcgotLy8g
dG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRvIHJ1biBhbmQgb24gdGhl
IG90aGVyIGhhbmQsCi0vLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIGluc3BlY3QgdGhlIGdl
bmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0Ci0vLyByZWZsZWN0aW9uIEFQSSBiZWZvcmUg
UlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgotLy8KLS8vIFlvdSBjYW4gc2VlIHNhbXBsZXMv
c2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCi0vLyBm
b3IgbW9yZSBleGFtcGxlcy4KLS8vCi0vLyBJbiB0aGUgZnV0dXJlLCB3ZSBwbGFuIHRvIHB1Ymxp
c2ggdGhlIEFQSSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgotLy8gZ2VuZXJhdG9ycy4gQnV0
IGZvciBub3cgdGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9mIHRoZSBpbnRlcm5hbAotLy8g
aW1wbGVtZW50YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdlLgotLy8KLS8vCi0vLyBBIHBh
cmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRl
c3QgYW5kIGZyb20KLS8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPiwgd2hlcmUgVCBp
cyB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCi0vLyB2YWx1ZXMuIEluaGVyaXRpbmcgZnJvbSBU
ZXN0V2l0aFBhcmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVtZW50IGJlY2F1c2UKLS8vIFRl
c3RXaXRoUGFyYW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3QgYW5kIFdpdGhQYXJhbUludGVy
ZmFjZS4gSW4gbW9yZQotLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hpZXMsIGhvd2V2ZXIsIGl0IGlz
IG9jY2FzaW9uYWxseSB1c2VmdWwgdG8gaW5oZXJpdAotLy8gc2VwYXJhdGVseSBmcm9tIFRlc3Qg
YW5kIFdpdGhQYXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6Ci0KLWNsYXNzIEJhc2VUZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIC8vIFlvdSBjYW4gaW5oZXJpdCBhbGwgdGhlIHVz
dWFsIG1lbWJlcnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdAotICAvLyBmaXh0dXJlIGhl
cmUuCi19OwotCi1jbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCwgcHVibGljIDo6
dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4gewotICAvLyBUaGUgdXN1YWwgdGVzdCBm
aXh0dXJlIG1lbWJlcnMgZ28gaGVyZSB0b28uCi19OwotCi1URVNUX0YoQmFzZVRlc3QsIEhhc0Zv
bykgewotICAvLyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QuCi19
Ci0KLVRFU1RfUChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gR2V0UGFyYW0gd29ya3Mg
anVzdCB0aGUgc2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZyb20gVGVzdFdpdGhQYXJhbS4K
LSAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOwotfQotCi0jZW5kaWYgIC8vIDAK
LQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2lmICFHVEVTVF9P
U19TWU1CSUFOCi0jIGluY2x1ZGUgPHV0aWxpdHk+Ci0jZW5kaWYKLQotLy8gc2NyaXB0cy9mdXNl
X2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAot
Ly8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBi
ZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJh
bS11dGlsLWdlbmVyYXRlZC5oIgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotbmFtZXNw
YWNlIHRlc3RpbmcgewotCi0vLyBGdW5jdGlvbnMgcHJvZHVjaW5nIHBhcmFtZXRlciBnZW5lcmF0
b3JzLgotLy8KLS8vIEdvb2dsZSBUZXN0IHVzZXMgdGhlc2UgZ2VuZXJhdG9ycyB0byBwcm9kdWNl
IHBhcmFtZXRlcnMgZm9yIHZhbHVlLQotLy8gcGFyYW1ldGVyaXplZCB0ZXN0cy4gV2hlbiBhIHBh
cmFtZXRlcml6ZWQgdGVzdCBjYXNlIGlzIGluc3RhbnRpYXRlZAotLy8gd2l0aCBhIHBhcnRpY3Vs
YXIgZ2VuZXJhdG9yLCBHb29nbGUgVGVzdCBjcmVhdGVzIGFuZCBydW5zIHRlc3RzCi0vLyBmb3Ig
ZWFjaCBlbGVtZW50IGluIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yLgot
Ly8KLS8vIEluIHRoZSBmb2xsb3dpbmcgc2FtcGxlLCB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBGb29U
ZXN0IGFyZSBpbnN0YW50aWF0ZWQKLS8vIGVhY2ggdGhyZWUgdGltZXMgd2l0aCBwYXJhbWV0ZXIg
dmFsdWVzIDMsIDUsIGFuZCA4OgotLy8KLS8vIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgVGVzdFdp
dGhQYXJhbTxpbnQ+IHsgLi4uIH07Ci0vLwotLy8gVEVTVF9QKEZvb1Rlc3QsIFRlc3RUaGlzKSB7
Ci0vLyB9Ci0vLyBURVNUX1AoRm9vVGVzdCwgVGVzdFRoYXQpIHsKLS8vIH0KLS8vIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKFRlc3RTZXF1ZW5jZSwgRm9vVGVzdCwgVmFsdWVzKDMsIDUsIDgpKTsK
LS8vCi0KLS8vIFJhbmdlKCkgcmV0dXJucyBnZW5lcmF0b3JzIHByb3ZpZGluZyBzZXF1ZW5jZXMg
b2YgdmFsdWVzIGluIGEgcmFuZ2UuCi0vLwotLy8gU3lub3BzaXM6Ci0vLyBSYW5nZShzdGFydCwg
ZW5kKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIGEgc2VxdWVuY2Ugb2Yg
dmFsdWVzIHtzdGFydCwgc3RhcnQrMSwKLS8vICAgICBzdGFydCsyLCAuLi4sIH0uCi0vLyBSYW5n
ZShzdGFydCwgZW5kLCBzdGVwKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5n
IGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHtzdGFydCwgc3RhcnQrc3RlcCwKLS8vICAgICBzdGFydCtz
dGVwK3N0ZXAsIC4uLiwgfS4KLS8vIE5vdGVzOgotLy8gICAqIFRoZSBnZW5lcmF0ZWQgc2VxdWVu
Y2VzIG5ldmVyIGluY2x1ZGUgZW5kLiBGb3IgZXhhbXBsZSwgUmFuZ2UoMSwgNSkKLS8vICAgICBy
ZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIHsxLCAyLCAzLCA0fS4gUmFu
Z2UoMSwgOSwgMikKLS8vICAgICByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyB7MSwgMywg
NSwgN30uCi0vLyAgICogc3RhcnQgYW5kIGVuZCBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS4gVGhh
dCB0eXBlIG1heSBiZSBhbnkgaW50ZWdyYWwgb3IKLS8vICAgICBmbG9hdGluZy1wb2ludCB0eXBl
IG9yIGEgdXNlciBkZWZpbmVkIHR5cGUgc2F0aXNmeWluZyB0aGVzZSBjb25kaXRpb25zOgotLy8g
ICAgICogSXQgbXVzdCBiZSBhc3NpZ25hYmxlIChoYXZlIG9wZXJhdG9yPSgpIGRlZmluZWQpLgot
Ly8gICAgICogSXQgbXVzdCBoYXZlIG9wZXJhdG9yKygpIChvcGVyYXRvcisoaW50LWNvbXBhdGli
bGUgdHlwZSkgZm9yCi0vLyAgICAgICB0d28tb3BlcmFuZCB2ZXJzaW9uKS4KLS8vICAgICAqIEl0
IG11c3QgaGF2ZSBvcGVyYXRvcjwoKSBkZWZpbmVkLgotLy8gICAgIEVsZW1lbnRzIGluIHRoZSBy
ZXN1bHRpbmcgc2VxdWVuY2VzIHdpbGwgYWxzbyBoYXZlIHRoYXQgdHlwZS4KLS8vICAgKiBDb25k
aXRpb24gc3RhcnQgPCBlbmQgbXVzdCBiZSBzYXRpc2ZpZWQgaW4gb3JkZXIgZm9yIHJlc3VsdGlu
ZyBzZXF1ZW5jZXMKLS8vICAgICB0byBjb250YWluIGFueSBlbGVtZW50cy4KLS8vCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW5jcmVtZW50VD4KLWludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCwgSW5jcmVtZW50VCBzdGVwKSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4oCi0gICAgICBuZXcgaW50ZXJuYWw6OlJhbmdl
R2VuZXJhdG9yPFQsIEluY3JlbWVudFQ+KHN0YXJ0LCBlbmQsIHN0ZXApKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFuZ2UoVCBzdGFy
dCwgVCBlbmQpIHsKLSAgcmV0dXJuIFJhbmdlKHN0YXJ0LCBlbmQsIDEpOwotfQotCi0vLyBWYWx1
ZXNJbigpIGZ1bmN0aW9uIGFsbG93cyBnZW5lcmF0aW9uIG9mIHRlc3RzIHdpdGggcGFyYW1ldGVy
cyBjb21pbmcgZnJvbQotLy8gYSBjb250YWluZXIuCi0vLwotLy8gU3lub3BzaXM6Ci0vLyBWYWx1
ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJv
ZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KLS8vICAgICBhIEMtc3R5bGUgYXJy
YXkuCi0vLyBWYWx1ZXNJbihjb25zdCBDb250YWluZXImIGNvbnRhaW5lcikKLS8vICAgLSByZXR1
cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBmcm9tCi0v
LyAgICAgYW4gU1RMLXN0eWxlIGNvbnRhaW5lci4KLS8vIFZhbHVlc0luKEl0ZXJhdG9yIGJlZ2lu
LCBJdGVyYXRvciBlbmQpCi0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2Vx
dWVuY2VzIHdpdGggZWxlbWVudHMgZnJvbQotLy8gICAgIGEgcmFuZ2UgW2JlZ2luLCBlbmQpIGRl
ZmluZWQgYnkgYSBwYWlyIG9mIFNUTC1zdHlsZSBpdGVyYXRvcnMuIFRoZXNlCi0vLyAgICAgaXRl
cmF0b3JzIGNhbiBhbHNvIGJlIHBsYWluIEMgcG9pbnRlcnMuCi0vLwotLy8gUGxlYXNlIG5vdGUg
dGhhdCBWYWx1ZXNJbiBjb3BpZXMgdGhlIHZhbHVlcyBmcm9tIHRoZSBjb250YWluZXJzCi0vLyBw
YXNzZWQgaW4gYW5kIGtlZXBzIHRoZW0gdG8gZ2VuZXJhdGUgdGVzdHMgaW4gUlVOX0FMTF9URVNU
UygpLgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZy
b20gdGVzdCBjYXNlIFN0cmluZ1Rlc3QKLS8vIGVhY2ggd2l0aCBDLXN0cmluZyB2YWx1ZXMgb2Yg
ImZvbyIsICJiYXIiLCBhbmQgImJheiI6Ci0vLwotLy8gY29uc3QgY2hhciogc3RyaW5nc1tdID0g
eyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU3RyaW5n
U2VxdWVuY2UsIFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsKLS8vCi0vLyBUaGlzIGlu
c3RhbnRpYXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxTdHJpbmdUZXN0Ci0vLyBlYWNoIHdp
dGggU1RMIHN0cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAiYiI6Ci0vLwotLy8gOjpzdGQ6OnZl
Y3RvcjwgOjpzdGQ6OnN0cmluZz4gR2V0UGFyYW1ldGVyU3RyaW5ncygpIHsKLS8vICAgOjpzdGQ6
OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gdjsKLS8vICAgdi5wdXNoX2JhY2soImEiKTsKLS8vICAg
di5wdXNoX2JhY2soImIiKTsKLS8vICAgcmV0dXJuIHY7Ci0vLyB9Ci0vLwotLy8gSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoQ2hhclNlcXVlbmNlLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
U3RsU3RyaW5nVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKEdldFBh
cmFtZXRlclN0cmluZ3MoKSkpOwotLy8KLS8vCi0vLyBUaGlzIHdpbGwgYWxzbyBpbnN0YW50aWF0
ZSB0ZXN0cyBmcm9tIENoYXJUZXN0Ci0vLyBlYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyAnYScg
YW5kICdiJzoKLS8vCi0vLyA6OnN0ZDo6bGlzdDxjaGFyPiBHZXRQYXJhbWV0ZXJDaGFycygpIHsK
LS8vICAgOjpzdGQ6Omxpc3Q8Y2hhcj4gbGlzdDsKLS8vICAgbGlzdC5wdXNoX2JhY2soJ2EnKTsK
LS8vICAgbGlzdC5wdXNoX2JhY2soJ2InKTsKLS8vICAgcmV0dXJuIGxpc3Q7Ci0vLyB9Ci0vLyA6
OnN0ZDo6bGlzdDxjaGFyPiBsID0gR2V0UGFyYW1ldGVyQ2hhcnMoKTsKLS8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKENoYXJTZXF1ZW5jZTIsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBD
aGFyVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKGwuYmVnaW4oKSwg
bC5lbmQoKSkpOwotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0
ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+Ci1WYWx1ZXNJbihGb3J3
YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsKLSAgdHlwZWRlZiB0eXBl
bmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+
Ci0gICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwotICByZXR1cm4gaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPFBhcmFtVHlwZT4oCi0gICAgICBuZXcgaW50ZXJuYWw6OlZhbHVlc0luSXRlcmF0
b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgotaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVl
c0luKGNvbnN0IFQgKCZhcnJheSlbTl0pIHsKLSAgcmV0dXJuIFZhbHVlc0luKGFycmF5LCBhcnJh
eSArIE4pOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotaW50ZXJuYWw6OlBhcmFt
R2VuZXJhdG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4oCi0gICAg
Y29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpIHsKLSAgcmV0dXJuIFZhbHVlc0luKGNvbnRhaW5l
ci5iZWdpbigpLCBjb250YWluZXIuZW5kKCkpOwotfQotCi0vLyBWYWx1ZXMoKSBhbGxvd3MgZ2Vu
ZXJhdGluZyB0ZXN0cyBmcm9tIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGxpc3Qgb2YKLS8vIHBhcmFt
ZXRlcnMuCi0vLwotLy8gU3lub3BzaXM6Ci0vLyBWYWx1ZXMoVCB2MSwgVCB2MiwgLi4uLCBUIHZO
KQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVs
ZW1lbnRzIHYxLCB2MiwgLi4uLCB2Ti4KLS8vCi0vLyBGb3IgZXhhbXBsZSwgdGhpcyBpbnN0YW50
aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmFyVGVzdCBlYWNoCi0vLyB3aXRoIHZhbHVlcyAi
b25lIiwgInR3byIsIGFuZCAidGhyZWUiOgotLy8KLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KE51bVNlcXVlbmNlLCBCYXJUZXN0LCBWYWx1ZXMoIm9uZSIsICJ0d28iLCAidGhyZWUiKSk7Ci0v
LwotLy8gVGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmF6VGVzdCBlYWNo
IHdpdGggdmFsdWVzIDEsIDIsIDMuNS4KLS8vIFRoZSBleGFjdCB0eXBlIG9mIHZhbHVlcyB3aWxs
IGRlcGVuZCBvbiB0aGUgdHlwZSBvZiBwYXJhbWV0ZXIgaW4gQmF6VGVzdC4KLS8vCi0vLyBJTlNU
QU5USUFURV9URVNUX0NBU0VfUChGbG9hdGluZ051bWJlcnMsIEJhelRlc3QsIFZhbHVlcygxLCAy
LCAzLjUpKTsKLS8vCi0vLyBDdXJyZW50bHksIFZhbHVlcygpIHN1cHBvcnRzIGZyb20gMSB0byA1
MCBwYXJhbWV0ZXJzLgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLWludGVybmFsOjpWYWx1
ZUFycmF5MTxUMT4gVmFsdWVzKFQxIHYxKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJh
eTE8VDE+KHYxKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5MjxUMSwgVDI+IFZhbHVlcyhUMSB2MSwgVDIgdjIpIHsKLSAgcmV0
dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MjxUMSwgVDI+KHYxLCB2Mik7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotaW50ZXJuYWw6OlZhbHVl
QXJyYXkzPFQxLCBUMiwgVDM+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzKSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6VmFsdWVBcnJheTM8VDEsIFQyLCBUMz4odjEsIHYyLCB2Myk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
ND4KLWludGVybmFsOjpWYWx1ZUFycmF5NDxUMSwgVDIsIFQzLCBUND4gVmFsdWVzKFQxIHYxLCBU
MiB2MiwgVDMgdjMsIFQ0IHY0KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQ8VDEs
IFQyLCBUMywgVDQ+KHYxLCB2MiwgdjMsIHY0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5NTxUMSwgVDIsIFQzLCBUNCwgVDU+IFZhbHVlcyhUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwKLSAgICBUNSB2NSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVl
QXJyYXk1PFQxLCBUMiwgVDMsIFQ0LCBUNT4odjEsIHYyLCB2MywgdjQsIHY1KTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNj4KLWludGVybmFsOjpWYWx1ZUFycmF5NjxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywKLSAgICBU
NCB2NCwgVDUgdjUsIFQ2IHY2KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTY8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNj4odjEsIHYyLCB2MywgdjQsIHY1LCB2Nik7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3PgotaW50ZXJuYWw6OlZh
bHVlQXJyYXk3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBWYWx1ZXMoVDEgdjEsIFQyIHYy
LCBUMyB2MywKLSAgICBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NykgewotICByZXR1cm4gaW50
ZXJuYWw6OlZhbHVlQXJyYXk3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pih2MSwgdjIsIHYz
LCB2NCwgdjUsCi0gICAgICB2NiwgdjcpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci1pbnRlcm5hbDo6VmFsdWVBcnJh
eTg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLAot
ICAgIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgpIHsKLSAgcmV0dXJu
IGludGVybmFsOjpWYWx1ZUFycmF5ODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KHYx
LCB2MiwgdjMsIHY0LAotICAgICAgdjUsIHY2LCB2NywgdjgpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5PgotaW50ZXJuYWw6OlZhbHVlQXJyYXk5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDk+IFZhbHVlcyhUMSB2MSwgVDIgdjIsCi0gICAgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjkpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5
OTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pih2MSwgdjIsIHYzLAotICAgICAg
djQsIHY1LCB2NiwgdjcsIHY4LCB2OSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMD4KLWludGVybmFsOjpWYWx1ZUFycmF5MTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwPiBWYWx1ZXMoVDEgdjEsCi0gICAgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUg
djUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwKSB7Ci0gIHJldHVybiBpbnRl
cm5hbDo6VmFsdWVBcnJheTEwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MD4odjEsCi0gICAgICB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTE+Ci1pbnRl
cm5hbDo6VmFsdWVBcnJheTExPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwKLSAgICBUMTE+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2MTEpIHsKLSAgcmV0
dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MTE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLAotICAgICAgVDExPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5
LCB2MTAsIHYxMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMj4KLWludGVybmFsOjpWYWx1ZUFycmF5MTI8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgVDEyPiBWYWx1ZXMo
VDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBU
OSB2OSwKLSAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyKSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6VmFsdWVBcnJheTEyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLAotICAgICAgVDEyPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAs
IHYxMSwgdjEyKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+Ci1pbnRlcm5hbDo6VmFsdWVB
cnJheTEzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
Ci0gICAgVDEzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2
NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBU
MTMgdjEzKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTEzPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTM+KHYxLCB2Miwg
djMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMyk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQ+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTE0
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywK
LSAgICBUMTQ+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MTQ8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywg
VDE0Pih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2
MTMsCi0gICAgICB2MTQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTU+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTE1PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNT4gVmFs
dWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2
OCwKLSAgICBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYx
NCwgVDE1IHYxNSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxNTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQs
IFQxNT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwK
LSAgICAgIHYxMywgdjE0LCB2MTUpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2PgotaW50ZXJuYWw6OlZhbHVl
QXJyYXkxNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LAotICAgIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwKLSAgICBUMTYgdjE2KSB7
Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTE2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTY+KHYx
LCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLAotICAgICAgdjEyLCB2
MTMsIHYxNCwgdjE1LCB2MTYpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
Ci0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTc+Ci1pbnRl
cm5hbDo6VmFsdWVBcnJheTE3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTc+IFZhbHVlcyhUMSB2MSwg
VDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywKLSAgICBUOCB2OCwgVDkg
djksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUs
Ci0gICAgVDE2IHYxNiwgVDE3IHYxNykgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkx
NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQx
MiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTc+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2
OCwgdjksIHYxMCwKLSAgICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNyk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAg
ICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4PgotaW50ZXJuYWw6OlZh
bHVlQXJyYXkxODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTg+IFZhbHVlcyhUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LAotICAgIFQ3IHY3LCBUOCB2OCwgVDkgdjks
IFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCi0g
ICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVl
QXJyYXkxODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAg
ICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOD4odjEsIHYyLCB2MywgdjQsIHY1
LCB2NiwgdjcsIHY4LCB2OSwKLSAgICAgIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYx
NiwgdjE3LCB2MTgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQx
OCwgdHlwZW5hbWUgVDE5PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkxOTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2
NSwKLSAgICBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEy
IHYxMiwgVDEzIHYxMywgVDE0IHYxNCwKLSAgICBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBU
MTggdjE4LCBUMTkgdjE5KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTE5PFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMs
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTk+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3
LCB2OCwKLSAgICAgIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywg
djE4LCB2MTkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjA+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTIwPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBU
MTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjA+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQz
IHYzLCBUNCB2NCwKLSAgICBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2
MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsCi0gICAgVDE0IHYxNCwgVDE1IHYxNSwgVDE2
IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCkgewotICByZXR1cm4gaW50
ZXJuYWw6OlZhbHVlQXJyYXkyMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjA+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LAotICAgICAgdjgsIHY5LCB2MTAsIHYxMSwg
djEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKLSAgICB0eXBlbmFtZSBUMjE+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTIxPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMT4gVmFsdWVzKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LAotICAgIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEw
IHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywKLSAgICBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxKSB7Ci0g
IHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTIxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LAotICAgICAgdjcsIHY4
LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2
MjAsIHYyMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVu
YW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0
eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQy
Mj4KLWludGVybmFsOjpWYWx1ZUFycmF5MjI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjI+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLAotICAgIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQx
MiB2MTIsCi0gICAgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywg
VDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwKLSAgICBUMjEgdjIxLCBUMjIgdjIyKSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTIyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjI+KHYxLCB2MiwgdjMsIHY0LAotICAgICAgdjUsIHY2LCB2Nywg
djgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTks
Ci0gICAgICB2MjAsIHYyMSwgdjIyKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjM+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTIzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAg
ICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+IFZhbHVl
cyhUMSB2MSwgVDIgdjIsCi0gICAgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBU
OCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsCi0gICAgVDEzIHYxMywgVDE0
IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYy
MCwKLSAgICBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
VmFsdWVBcnJheTIzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMz4odjEsIHYyLCB2MywKLSAgICAgIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwKLSAgICAgIHYy
MCwgdjIxLCB2MjIsIHYyMyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
LSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+Ci1pbnRlcm5hbDo6VmFsdWVB
cnJheTI0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyND4gVmFsdWVzKFQxIHYxLCBUMiB2MiwKLSAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwKLSAg
ICBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBU
MTkgdjE5LCBUMjAgdjIwLAotICAgIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQp
IHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MjQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQ+KHYxLCB2MiwKLSAgICAgIHYz
LCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2
MTYsIHYxNywgdjE4LAotICAgICAgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNT4KLWludGVybmFsOjpWYWx1ZUFycmF5MjU8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAg
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjU+IFZhbHVlcyhUMSB2MSwKLSAgICBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsCi0gICAgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYx
OSwKLSAgICBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUg
djI1KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTI1PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+KHYxLAotICAg
ICAgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYx
NCwgdjE1LCB2MTYsIHYxNywKLSAgICAgIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYy
NCwgdjI1KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1l
IFQyNj4KLWludGVybmFsOjpWYWx1ZUFycmF5MjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgVDI2PiBWYWx1ZXMoVDEg
djEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2
OSwKLSAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUg
djE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQy
MSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgVDI2IHYyNikg
ewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2Pih2
MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYx
NCwgdjE1LAotICAgICAgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYy
NCwgdjI1LCB2MjYpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQx
OCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFt
ZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlw
ZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjc+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTI3PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsCi0gICAgVDI3PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgIFQxOCB2
MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQs
IFQyNSB2MjUsCi0gICAgVDI2IHYyNiwgVDI3IHYyNykgewotICByZXR1cm4gaW50ZXJuYWw6OlZh
bHVlQXJyYXkyNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwK
LSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjc+KHYxLCB2MiwgdjMsIHY0LCB2NSwg
djYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LAotICAgICAgdjE1LCB2MTYs
IHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3KTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwg
dHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAot
ICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQx
OSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFt
ZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlw
ZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjg+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTI4PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywKLSAgICBUMjg+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUg
djUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQx
MiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAg
VDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0
IHYyNCwgVDI1IHYyNSwKLSAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4KSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6VmFsdWVBcnJheTI4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4Pih2
MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsCi0g
ICAgICB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYy
NCwgdjI1LCB2MjYsIHYyNywKLSAgICAgIHYyOCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjk+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTI5PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4
LAotICAgIFQyOT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBU
MjUgdjI1LAotICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjkpIHsKLSAgcmV0
dXJuIGludGVybmFsOjpWYWx1ZUFycmF5Mjk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgs
IFQyOT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwK
LSAgICAgIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwg
djIzLCB2MjQsIHYyNSwgdjI2LAotICAgICAgdjI3LCB2MjgsIHYyOSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMD4KLWludGVybmFsOjpWYWx1ZUFy
cmF5MzA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzA+IFZhbHVlcyhUMSB2MSwg
VDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsCi0gICAgVDkg
djksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUs
IFQxNiB2MTYsCi0gICAgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYy
MSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwKLSAgICBUMjUgdjI1LCBUMjYgdjI2LCBUMjcg
djI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFs
dWVBcnJheTMwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAot
ICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMD4odjEsIHYy
LCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsCi0gICAgICB2MTIsIHYxMywg
djE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYy
NSwKLSAgICAgIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMT4KLWludGVy
bmFsOjpWYWx1ZUFycmF5MzE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQz
MT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3
LAotICAgIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwKLSAgICBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLAotICAgIFQyNCB2MjQsIFQyNSB2
MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEp
IHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzE8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwg
VDI3LCBUMjgsIFQyOSwgVDMwLCBUMzE+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwg
djksIHYxMCwKLSAgICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2
MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LAotICAgICAgdjI1LCB2MjYsIHYyNywgdjI4LCB2
MjksIHYzMCwgdjMxKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyPgotaW50ZXJuYWw6OlZh
bHVlQXJyYXkzMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzI+
IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywK
LSAgICBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsCi0gICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwg
VDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKLSAgICBUMjQgdjI0LCBUMjUgdjI1
LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAot
ICAgIFQzMiB2MzIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzI8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwK
LSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMj4odjEsIHYyLCB2MywgdjQs
IHY1LCB2NiwgdjcsIHY4LCB2OSwKLSAgICAgIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUs
IHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLAotICAgICAgdjI0LCB2MjUs
IHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVu
YW1lIFQzMiwgdHlwZW5hbWUgVDMzPgotaW50ZXJuYWw6OlZhbHVlQXJyYXkzMzxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMz4gVmFsdWVzKFQxIHYxLCBU
MiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsCi0gICAgVDcgdjcsIFQ4IHY4LCBUOSB2
OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwK
LSAgICBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIx
LCBUMjIgdjIyLCBUMjMgdjIzLAotICAgIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2
MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsCi0gICAgVDMyIHYzMiwgVDMz
IHYzMykgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkzMzxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAg
VDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+KHYxLCB2MiwgdjMsIHY0LCB2
NSwgdjYsIHY3LCB2OCwKLSAgICAgIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2
MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKLSAgICAgIHYyNCwgdjI1LCB2
MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMyk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQ+Ci1pbnRlcm5hbDo6VmFsdWVB
cnJheTM0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQ+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsCi0gICAgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2
MTMsIFQxNCB2MTQsCi0gICAgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5
IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwKLSAgICBUMjMgdjIzLCBUMjQgdjI0LCBU
MjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLAotICAg
IFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpWYWx1ZUFycmF5MzQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQ+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LAotICAgICAgdjgs
IHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYy
MCwgdjIxLCB2MjIsCi0gICAgICB2MjMsIHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYz
MCwgdjMxLCB2MzIsIHYzMywgdjM0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1
LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1l
IFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBl
bmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1PgotaW50ZXJuYWw6OlZhbHVlQXJy
YXkzNTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzU+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwKLSAgICBUNSB2NSwg
VDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsCi0gICAgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwg
VDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwKLSAgICBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0
LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LAotICAgIFQzMCB2
MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUpIHsKLSAgcmV0
dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgs
IFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNT4odjEsIHYyLCB2MywgdjQsIHY1LCB2
NiwKLSAgICAgIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwg
djE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsCi0gICAgICB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwg
djI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQz
NSwKLSAgICB0eXBlbmFtZSBUMzY+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTM2PFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2PiBW
YWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsCi0gICAgVDUgdjUsIFQ2IHY2LCBUNyB2
NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLAotICAg
IFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQy
MCB2MjAsIFQyMSB2MjEsCi0gICAgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwg
VDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwKLSAgICBUMzAgdjMwLCBUMzEgdjMx
LCBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2KSB7Ci0gIHJldHVy
biBpbnRlcm5hbDo6VmFsdWVBcnJheTM2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNj4odjEsIHYyLCB2MywgdjQsCi0g
ICAgICB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYx
NiwgdjE3LCB2MTgsIHYxOSwKLSAgICAgIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYy
NiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLAotICAgICAgdjM0LCB2MzUsIHYz
Nik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFt
ZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlw
ZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYs
IHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwK
LSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBU
MzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNz4KLWludGVy
bmFsOjpWYWx1ZUFycmF5Mzc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNz4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMg
djMsCi0gICAgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYx
MCwgVDExIHYxMSwgVDEyIHYxMiwKLSAgICBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLAotICAgIFQyMSB2MjEsIFQy
MiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2
MjgsCi0gICAgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0
IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwKLSAgICBUMzcgdjM3KSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6VmFsdWVBcnJheTM3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3Pih2MSwgdjIsIHYzLAotICAgICAgdjQs
IHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2
MTcsIHYxOCwgdjE5LAotICAgICAgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2
MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsCi0gICAgICB2MzQsIHYzNSwgdjM2LCB2
MzcpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5
cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2
LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAs
Ci0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUg
VDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVu
YW1lIFQzOD4KLWludGVybmFsOjpWYWx1ZUFycmF5Mzg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0g
ICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4PiBWYWx1
ZXMoVDEgdjEsIFQyIHYyLAotICAgIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2Nywg
VDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLAotICAgIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2
MjAsCi0gICAgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2
IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwKLSAgICBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBU
MzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LAotICAgIFQzNyB2Mzcs
IFQzOCB2MzgpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5Mzg8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAg
ICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOD4odjEsIHYyLAotICAgICAgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsCi0gICAgICB2MTksIHYy
MCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEs
IHYzMiwKLSAgICAgIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
Ci0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUg
VDM5PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOT4gVmFs
dWVzKFQxIHYxLCBUMiB2MiwKLSAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcs
IFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwKLSAgICBUMTMgdjEzLCBU
MTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAg
djIwLAotICAgIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQy
NiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsCi0gICAgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwg
VDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwKLSAgICBUMzcgdjM3
LCBUMzggdjM4LCBUMzkgdjM5KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTM5PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBU
MTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOT4odjEsCi0gICAgICB2MiwgdjMsIHY0LCB2NSwgdjYs
IHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LAotICAg
ICAgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2Mjgs
IHYyOSwgdjMwLCB2MzEsCi0gICAgICB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2Mzgs
IHYzOSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQz
MCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFt
ZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlw
ZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MD4KLWludGVybmFsOjpWYWx1ZUFy
cmF5NDA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MD4gVmFsdWVzKFQxIHYxLAotICAgIFQy
IHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEw
IHYxMCwgVDExIHYxMSwKLSAgICBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LAotICAgIFQyMCB2MjAsIFQyMSB2MjEs
IFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsCi0g
ICAgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywg
VDM0IHYzNCwgVDM1IHYzNSwKLSAgICBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5
LCBUNDAgdjQwKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQwPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0g
ICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQz
NiwgVDM3LCBUMzgsIFQzOSwKLSAgICAgIFQ0MD4odjEsIHYyLCB2MywgdjQsIHY1LCB2Niwgdjcs
IHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwKLSAgICAgIHYxNiwgdjE3LCB2
MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwgdjI5
LAotICAgICAgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5
LCB2NDApOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5
cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQx
PgotaW50ZXJuYWw6OlZhbHVlQXJyYXk0MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjks
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAot
ICAgIFQ0MT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICBUMTggdjE4LCBU
MTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUg
djI1LAotICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQz
MSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwg
VDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSkgewotICByZXR1cm4g
aW50ZXJuYWw6OlZhbHVlQXJyYXk0MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAg
ICBUNDAsIFQ0MT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEs
IHYxMiwgdjEzLCB2MTQsCi0gICAgICB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEs
IHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwKLSAgICAgIHYyOSwgdjMwLCB2MzEs
IHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5LCB2NDAsIHY0MSk7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1l
IFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBl
bmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVu
YW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0
eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0
Mj4KLWludGVybmFsOjpWYWx1ZUFycmF5NDI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxLAotICAgIFQ0Mj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwg
VDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYx
MiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICBUMTgg
djE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0
LCBUMjUgdjI1LAotICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2
MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICBU
NDIgdjQyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQyPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAg
ICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwKLSAgICAgIFQ0MCwgVDQxLCBUNDI+KHYxLCB2MiwgdjMsIHY0LCB2NSwg
djYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywKLSAgICAgIHYxNCwgdjE1LCB2MTYs
IHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LAot
ICAgICAgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2
MzgsIHYzOSwgdjQwLCB2NDEsCi0gICAgICB2NDIpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBl
bmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwg
dHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBU
MzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5h
bWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFt
ZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0Mz4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5NDM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBU
NDIsCi0gICAgVDQzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgIFQxOCB2
MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQs
IFQyNSB2MjUsCi0gICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYz
MCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYg
djM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLCBUNDEgdjQxLAotICAgIFQ0
MiB2NDIsIFQ0MyB2NDMpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwKLSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOCwgVDM5LAotICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzPih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLAotICAgICAgdjEzLCB2
MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
LCB2MjYsCi0gICAgICB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1
LCB2MzYsIHYzNywgdjM4LCB2MzksIHY0MCwKLSAgICAgIHY0MSwgdjQyLCB2NDMpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFt
ZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlw
ZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBl
bmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywg
dHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBU
MjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5h
bWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFt
ZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlw
ZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIs
IHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0PgotaW50ZXJuYWw6OlZhbHVlQXJyYXk0NDxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAgIFQ0ND4gVmFsdWVz
KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIw
LCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgIFQyNiB2
MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIs
IFQzMyB2MzMsCi0gICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYz
OCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQg
djQ0KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQ0PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBU
MjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwKLSAgICAgIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0Pih2MSwgdjIsIHYzLCB2
NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwKLSAgICAgIHYxMiwgdjEzLCB2MTQsIHYx
NSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1LAotICAg
ICAgdjI2LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LCB2MzYs
IHYzNywgdjM4LCB2MzksCi0gICAgICB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFt
ZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1l
IFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBl
bmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Miwg
dHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NT4KLWludGVybmFsOjpWYWx1
ZUFycmF5NDU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAg
ICBUNDQsIFQ0NT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwKLSAgICBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwKLSAgICBUMTcgdjE3LCBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LAot
ICAgIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAs
IFQzMSB2MzEsIFQzMiB2MzIsCi0gICAgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYz
NiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwKLSAgICBUNDEgdjQxLCBUNDIg
djQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFs
dWVBcnJheTQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAot
ICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwKLSAgICAgIFQ0MCwgVDQxLCBU
NDIsIFQ0MywgVDQ0LCBUNDU+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwKLSAgICAgIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYy
MCwgdjIxLCB2MjIsIHYyMywgdjI0LAotICAgICAgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYz
MCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgsCi0gICAgICB2MzksIHY0
MCwgdjQxLCB2NDIsIHY0MywgdjQ0LCB2NDUpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBU
MTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5h
bWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFt
ZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlw
ZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIs
IHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUg
VDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBU
NDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5h
bWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2PgotaW50ZXJuYWw6OlZhbHVl
QXJyYXk0NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAg
IFQ0NCwgVDQ1LCBUNDY+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUs
IFQ2IHY2LCBUNyB2NywKLSAgICBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2
MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCi0gICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4
IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKLSAgICBU
MjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAg
djMwLCBUMzEgdjMxLAotICAgIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQz
NiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksCi0gICAgVDQwIHY0MCwgVDQxIHY0MSwg
VDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSwgVDQ2IHY0NikgewotICByZXR1cm4g
aW50ZXJuYWw6OlZhbHVlQXJyYXk0NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAg
ICBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDY+KHYxLCB2MiwgdjMsIHY0LCB2NSwg
djYsIHY3LCB2OCwgdjksCi0gICAgICB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYs
IHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKLSAgICAgIHYyNCwgdjI1LCB2MjYs
IHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LAot
ICAgICAgdjM4LCB2MzksIHY0MCwgdjQxLCB2NDIsIHY0MywgdjQ0LCB2NDUsIHY0Nik7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1l
IFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBl
bmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVu
YW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0
eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0
MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFt
ZSBUNDYsIHR5cGVuYW1lIFQ0Nz4KLWludGVybmFsOjpWYWx1ZUFycmF5NDc8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICBUNDQsIFQ0NSwgVDQ2LCBUNDc+
IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywK
LSAgICBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsCi0gICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwg
VDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKLSAgICBUMjQgdjI0LCBUMjUgdjI1
LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAot
ICAgIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2Mzcs
IFQzOCB2MzgsIFQzOSB2MzksCi0gICAgVDQwIHY0MCwgVDQxIHY0MSwgVDQyIHY0MiwgVDQzIHY0
MywgVDQ0IHY0NCwgVDQ1IHY0NSwgVDQ2IHY0NiwgVDQ3IHY0NykgewotICByZXR1cm4gaW50ZXJu
YWw6OlZhbHVlQXJyYXk0NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAgICBUNDAs
IFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4odjEsIHYyLCB2MywgdjQsIHY1LCB2
NiwgdjcsIHY4LAotICAgICAgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwg
djE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLAotICAgICAgdjI0LCB2MjUsIHYyNiwg
djI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsCi0g
ICAgICB2MzgsIHYzOSwgdjQwLCB2NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwgdjQ2LCB2NDcpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0
eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQz
OCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFt
ZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlw
ZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OD4KLWludGVybmFsOjpWYWx1ZUFy
cmF5NDg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICBU
NDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OD4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsCi0gICAgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYx
MSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwKLSAgICBUMTYgdjE2LCBUMTcg
djE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIz
LAotICAgIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2
MjksIFQzMCB2MzAsIFQzMSB2MzEsCi0gICAgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1
IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwKLSAgICBUNDAgdjQwLCBU
NDEgdjQxLCBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2LCBUNDcg
djQ3LAotICAgIFQ0OCB2NDgpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDg8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQx
MywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LAotICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQs
IFQ0NSwgVDQ2LCBUNDcsIFQ0OD4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsCi0gICAgICB2
OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwg
djIwLCB2MjEsIHYyMiwKLSAgICAgIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwg
djMwLCB2MzEsIHYzMiwgdjMzLCB2MzQsIHYzNSwgdjM2LAotICAgICAgdjM3LCB2MzgsIHYzOSwg
djQwLCB2NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwgdjQ2LCB2NDcsIHY0OCk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQz
NSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFt
ZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlw
ZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBUNDYs
IHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDk+Ci1pbnRlcm5hbDo6VmFs
dWVBcnJheTQ5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0g
ICAgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMg
djMsIFQ0IHY0LCBUNSB2NSwKLSAgICBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYx
MCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwKLSAgICBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIy
LAotICAgIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2
MjgsIFQyOSB2MjksIFQzMCB2MzAsCi0gICAgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0
IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwKLSAgICBUMzkgdjM5LCBU
NDAgdjQwLCBUNDEgdjQxLCBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYg
djQ2LAotICAgIFQ0NyB2NDcsIFQ0OCB2NDgsIFQ0OSB2NDkpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpWYWx1ZUFycmF5NDk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LAotICAgICAgVDQwLCBU
NDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5Pih2MSwgdjIsIHYzLCB2
NCwgdjUsIHY2LAotICAgICAgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYx
NSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwKLSAgICAgIHYyMiwgdjIzLCB2MjQsIHYy
NSwgdjI2LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LAotICAg
ICAgdjM2LCB2MzcsIHYzOCwgdjM5LCB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCwgdjQ1LCB2NDYs
IHY0NywgdjQ4LCB2NDkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1l
IFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBl
bmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAg
dHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0
eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQz
MywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFt
ZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlw
ZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBl
bmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwg
dHlwZW5hbWUgVDQ5LCB0eXBlbmFtZSBUNTA+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTUwPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBU
MTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgVDQ0LCBUNDUsIFQ0
NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQs
Ci0gICAgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLAotICAgIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2
MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsCi0gICAgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYy
OSwKLSAgICBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUg
djM1LCBUMzYgdjM2LCBUMzcgdjM3LAotICAgIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0
MSB2NDEsIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsCi0gICAgVDQ2IHY0Niwg
VDQ3IHY0NywgVDQ4IHY0OCwgVDQ5IHY0OSwgVDUwIHY1MCkgewotICByZXR1cm4gaW50ZXJuYWw6
OlZhbHVlQXJyYXk1MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAgICBUNDAsIFQ0
MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBUNDksIFQ1MD4odjEsIHYyLCB2
MywgdjQsCi0gICAgICB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0
LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwKLSAgICAgIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0
LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLAotICAgICAgdjM0
LCB2MzUsIHYzNiwgdjM3LCB2MzgsIHYzOSwgdjQwLCB2NDEsIHY0MiwgdjQzLCB2NDQsIHY0NSwg
djQ2LCB2NDcsCi0gICAgICB2NDgsIHY0OSwgdjUwKTsKLX0KLQotLy8gQm9vbCgpIGFsbG93cyBn
ZW5lcmF0aW5nIHRlc3RzIHdpdGggcGFyYW1ldGVycyBpbiBhIHNldCBvZiAoZmFsc2UsIHRydWUp
LgotLy8KLS8vIFN5bm9wc2lzOgotLy8gQm9vbCgpCi0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRv
ciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMge2ZhbHNlLCB0cnVlfS4KLS8vCi0v
LyBJdCBpcyB1c2VmdWwgd2hlbiB0ZXN0aW5nIGNvZGUgdGhhdCBkZXBlbmRzIG9uIEJvb2xlYW4g
ZmxhZ3MuIENvbWJpbmF0aW9ucwotLy8gb2YgbXVsdGlwbGUgZmxhZ3MgY2FuIGJlIHRlc3RlZCB3
aGVuIHNldmVyYWwgQm9vbCgpJ3MgYXJlIGNvbWJpbmVkIHVzaW5nCi0vLyBDb21iaW5lKCkgZnVu
Y3Rpb24uCi0vLwotLy8gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIGFsbCB0ZXN0cyBpbiB0aGUg
dGVzdCBjYXNlIEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyB3aWxsIGJlIGluc3RhbnRpYXRlZCB0d2lj
ZSB3aXRoIHBhcmFtZXRlcnMgZmFsc2UgYW5kIHRydWUuCi0vLwotLy8gY2xhc3MgRmxhZ0RlcGVu
ZGVudFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxib29sPiB7Ci0vLyAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpIHsKLS8vICAgICBleHRlcm5hbF9mbGFnID0gR2V0UGFyYW0oKTsK
LS8vICAgfQotLy8gfQotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQm9vbFNlcXVlbmNlLCBG
bGFnRGVwZW5kZW50VGVzdCwgQm9vbCgpKTsKLS8vCi1pbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPGJvb2w+IEJvb2woKSB7Ci0gIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwotfQot
Ci0jIGlmIEdURVNUX0hBU19DT01CSU5FCi0vLyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRv
IGNvbWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKLS8vIHZhbHVlcyBvZiBh
IENhcnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVudHMuCi0vLwotLy8g
U3lub3BzaXM6Ci0vLyBDb21iaW5lKGdlbjEsIGdlbjIsIC4uLiwgZ2VuTikKLS8vICAgLSByZXR1
cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBjb21pbmcg
ZnJvbQotLy8gICAgIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBz
ZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5Ci0vLyAgICAgZ2VuMSwgZ2VuMiwgLi4uLCBnZW5OLiBUaGUg
c2VxdWVuY2UgZWxlbWVudHMgd2lsbCBoYXZlIGEgdHlwZSBvZgotLy8gICAgIHR1cGxlPFQxLCBU
MiwgLi4uLCBUTj4gd2hlcmUgVDEsIFQyLCAuLi4sIFROIGFyZSB0aGUgdHlwZXMKLS8vICAgICBv
ZiBlbGVtZW50cyBmcm9tIHNlcXVlbmNlcyBwcm9kdWNlcyBieSBnZW4xLCBnZW4yLCAuLi4sIGdl
bk4uCi0vLwotLy8gQ29tYmluZSBjYW4gaGF2ZSB1cCB0byAxMCBhcmd1bWVudHMuIFRoaXMgbnVt
YmVyIGlzIGN1cnJlbnRseSBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gdGhlIHR1cGxlIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgR29vZ2xlCi0vLyBUZXN0
LgotLy8KLS8vIEV4YW1wbGU6Ci0vLwotLy8gVGhpcyB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGlu
IHRlc3QgY2FzZSBBbmltYWxUZXN0IGVhY2ggb25lIHdpdGgKLS8vIHRoZSBwYXJhbWV0ZXIgdmFs
dWVzIHR1cGxlKCJjYXQiLCBCTEFDSyksIHR1cGxlKCJjYXQiLCBXSElURSksCi0vLyB0dXBsZSgi
ZG9nIiwgQkxBQ0spLCBhbmQgdHVwbGUoImRvZyIsIFdISVRFKToKLS8vCi0vLyBlbnVtIENvbG9y
IHsgQkxBQ0ssIEdSQVksIFdISVRFIH07Ci0vLyBjbGFzcyBBbmltYWxUZXN0Ci0vLyAgICAgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxjb25zdCBjaGFyKiwgQ29sb3I+ID4g
ey4uLn07Ci0vLwotLy8gVEVTVF9QKEFuaW1hbFRlc3QsIEFuaW1hbExvb2tzTmljZSkgey4uLn0K
LS8vCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChBbmltYWxWYXJpYXRpb25zLCBBbmltYWxU
ZXN0LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShWYWx1ZXMoImNhdCIsICJk
b2ciKSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEJMQUNLLCBX
SElURSkpKTsKLS8vCi0vLyBUaGlzIHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgaW4gRmxhZ0RlcGVu
ZGVudFRlc3Qgd2l0aCBhbGwgdmFyaWF0aW9ucyBvZiB0d28KLS8vIEJvb2xlYW4gZmxhZ3M6Ci0v
LwotLy8gY2xhc3MgRmxhZ0RlcGVuZGVudFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0V2l0aFBhcmFtPHR1cGxlPGJvb2wsIGJvb2w+ID4gewotLy8gICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0vLyAgICAgLy8gQXNzaWducyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2Zs
YWdfMiB2YWx1ZXMgZnJvbSB0aGUgdHVwbGUuCi0vLyAgICAgdGllKGV4dGVybmFsX2ZsYWdfMSwg
ZXh0ZXJuYWxfZmxhZ18yKSA9IEdldFBhcmFtKCk7Ci0vLyAgIH0KLS8vIH07Ci0vLwotLy8gVEVT
VF9QKEZsYWdEZXBlbmRlbnRUZXN0LCBUZXN0RmVhdHVyZTEpIHsKLS8vICAgLy8gVGVzdCB5b3Vy
IGNvZGUgdXNpbmcgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5hbF9mbGFnXzIgaGVyZS4KLS8v
IH0KLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFR3b0Jvb2xTZXF1ZW5jZSwgRmxhZ0RlcGVu
ZGVudFRlc3QsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKEJvb2woKSwgQm9v
bCgpKSk7Ci0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1lIEdlbmVy
YXRvcjI+Ci1pbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjI8R2VuZXJhdG9yMSwgR2Vu
ZXJhdG9yMj4gQ29tYmluZSgKLSAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJh
dG9yMiYgZzIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMjxH
ZW5lcmF0b3IxLCBHZW5lcmF0b3IyPigKLSAgICAgIGcxLCBnMik7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBHZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0
b3IzPgotaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIzPEdlbmVyYXRvcjEsIEdlbmVy
YXRvcjIsIEdlbmVyYXRvcjM+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNv
bnN0IEdlbmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMykgewotICByZXR1cm4gaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIzPEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdl
bmVyYXRvcjM+KAotICAgICAgZzEsIGcyLCBnMyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAotICAg
IHR5cGVuYW1lIEdlbmVyYXRvcjQ+Ci1pbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjQ8
R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKLSAgICBHZW5lcmF0b3I0PiBDb21i
aW5lKAotICAgIGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29u
c3QgR2VuZXJhdG9yMyYgZzMsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjQmIGc0KSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjQ8R2VuZXJhdG9yMSwgR2VuZXJh
dG9yMiwgR2VuZXJhdG9yMywKLSAgICAgIEdlbmVyYXRvcjQ+KAotICAgICAgZzEsIGcyLCBnMywg
ZzQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJh
dG9yMiwgdHlwZW5hbWUgR2VuZXJhdG9yMywKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0eXBl
bmFtZSBHZW5lcmF0b3I1PgotaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI1PEdlbmVy
YXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9y
NT4gQ29tYmluZSgKLSAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYg
ZzIsIGNvbnN0IEdlbmVyYXRvcjMmIGczLAotICAgICAgICBjb25zdCBHZW5lcmF0b3I0JiBnNCwg
Y29uc3QgR2VuZXJhdG9yNSYgZzUpIHsKLSAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyNTxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgICAgR2Vu
ZXJhdG9yNCwgR2VuZXJhdG9yNT4oCi0gICAgICBnMSwgZzIsIGczLCBnNCwgZzUpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwgdHlwZW5h
bWUgR2VuZXJhdG9yMywKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0eXBlbmFtZSBHZW5lcmF0
b3I1LCB0eXBlbmFtZSBHZW5lcmF0b3I2PgotaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xk
ZXI2PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgR2VuZXJhdG9yNCwg
R2VuZXJhdG9yNSwgR2VuZXJhdG9yNj4gQ29tYmluZSgKLSAgICBjb25zdCBHZW5lcmF0b3IxJiBn
MSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsIGNvbnN0IEdlbmVyYXRvcjMmIGczLAotICAgICAgICBj
b25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUsIGNvbnN0IEdlbmVyYXRv
cjYmIGc2KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjY8R2Vu
ZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKLSAgICAgIEdlbmVyYXRvcjQsIEdlbmVy
YXRvcjUsIEdlbmVyYXRvcjY+KAotICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNik7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBl
bmFtZSBHZW5lcmF0b3IzLAotICAgIHR5cGVuYW1lIEdlbmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVy
YXRvcjUsIHR5cGVuYW1lIEdlbmVyYXRvcjYsCi0gICAgdHlwZW5hbWUgR2VuZXJhdG9yNz4KLWlu
dGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNzxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBH
ZW5lcmF0b3IzLAotICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVy
YXRvcjc+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRv
cjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKLSAgICAgICAgY29uc3QgR2VuZXJhdG9yNCYg
ZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5lcmF0b3I2JiBnNiwKLSAgICAgICAg
Y29uc3QgR2VuZXJhdG9yNyYgZzcpIHsKLSAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyNzxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgICAgR2Vu
ZXJhdG9yNCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJhdG9yNz4oCi0gICAgICBnMSwg
ZzIsIGczLCBnNCwgZzUsIGc2LCBnNyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAotICAgIHR5cGVu
YW1lIEdlbmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVyYXRvcjUsIHR5cGVuYW1lIEdlbmVyYXRvcjYs
Ci0gICAgdHlwZW5hbWUgR2VuZXJhdG9yNywgdHlwZW5hbWUgR2VuZXJhdG9yOD4KLWludGVybmFs
OjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyODxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0
b3IzLAotICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjcs
IEdlbmVyYXRvcjg+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdl
bmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKLSAgICAgICAgY29uc3QgR2VuZXJh
dG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5lcmF0b3I2JiBnNiwKLSAg
ICAgICAgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRvcjgmIGc4KSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjg8R2VuZXJhdG9yMSwgR2VuZXJh
dG9yMiwgR2VuZXJhdG9yMywKLSAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRv
cjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjg+KAotICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBn
NiwgZzcsIGc4KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1l
IEdlbmVyYXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCi0gICAgdHlwZW5hbWUgR2VuZXJhdG9y
NCwgdHlwZW5hbWUgR2VuZXJhdG9yNSwgdHlwZW5hbWUgR2VuZXJhdG9yNiwKLSAgICB0eXBlbmFt
ZSBHZW5lcmF0b3I3LCB0eXBlbmFtZSBHZW5lcmF0b3I4LCB0eXBlbmFtZSBHZW5lcmF0b3I5Pgot
aW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI5PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIs
IEdlbmVyYXRvcjMsCi0gICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2Vu
ZXJhdG9yNywgR2VuZXJhdG9yOCwKLSAgICBHZW5lcmF0b3I5PiBDb21iaW5lKAotICAgIGNvbnN0
IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwg
Y29uc3QgR2VuZXJhdG9yNiYgZzYsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjcmIGc3LCBjb25z
dCBHZW5lcmF0b3I4JiBnOCwgY29uc3QgR2VuZXJhdG9yOSYgZzkpIHsKLSAgcmV0dXJuIGludGVy
bmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOTxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5l
cmF0b3IzLAotICAgICAgR2VuZXJhdG9yNCwgR2VuZXJhdG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJh
dG9yNywgR2VuZXJhdG9yOCwgR2VuZXJhdG9yOT4oCi0gICAgICBnMSwgZzIsIGczLCBnNCwgZzUs
IGc2LCBnNywgZzgsIGc5KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5
cGVuYW1lIEdlbmVyYXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCi0gICAgdHlwZW5hbWUgR2Vu
ZXJhdG9yNCwgdHlwZW5hbWUgR2VuZXJhdG9yNSwgdHlwZW5hbWUgR2VuZXJhdG9yNiwKLSAgICB0
eXBlbmFtZSBHZW5lcmF0b3I3LCB0eXBlbmFtZSBHZW5lcmF0b3I4LCB0eXBlbmFtZSBHZW5lcmF0
b3I5LAotICAgIHR5cGVuYW1lIEdlbmVyYXRvcjEwPgotaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1
Y3RIb2xkZXIxMDxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgIEdlbmVy
YXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjgsIEdl
bmVyYXRvcjksCi0gICAgR2VuZXJhdG9yMTA+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9y
MSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKLSAgICAg
ICAgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBjb25zdCBHZW5l
cmF0b3I2JiBnNiwKLSAgICAgICAgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRv
cjgmIGc4LCBjb25zdCBHZW5lcmF0b3I5JiBnOSwKLSAgICAgICAgY29uc3QgR2VuZXJhdG9yMTAm
IGcxMCkgewotICByZXR1cm4gaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMDxHZW5l
cmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgICAgR2VuZXJhdG9yNCwgR2VuZXJh
dG9yNSwgR2VuZXJhdG9yNiwgR2VuZXJhdG9yNywgR2VuZXJhdG9yOCwgR2VuZXJhdG9yOSwKLSAg
ICAgIEdlbmVyYXRvcjEwPigKLSAgICAgIGcxLCBnMiwgZzMsIGc0LCBnNSwgZzYsIGc3LCBnOCwg
ZzksIGcxMCk7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0KLQotIyBkZWZp
bmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKLSAgY2xhc3MgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCi0gICAgICA6IHB1Ymxp
YyB0ZXN0X2Nhc2VfbmFtZSB7IFwKLSAgIHB1YmxpYzogXAotICAgIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkoKSB7fSBcCi0gICAgdmlydHVhbCB2b2lk
IFRlc3RCb2R5KCk7IFwKLSAgIHByaXZhdGU6IFwKLSAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0
cnkoKSB7IFwKLSAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFt
ZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCi0gICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJu
SG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwg
XAotICAgICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAotICAg
ICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RQYXR0ZXJuKFwKLSAg
ICAgICAgICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6
aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigpKTsgXAotICAgICAgcmV0dXJuIDA7IFwKLSAgICB9
IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXzsgXAotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAotICAg
ICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsg
XAotICB9OyBcCi0gIGludCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZSk6Omd0ZXN0X3JlZ2lzdGVy
aW5nX2R1bW15XyA9IFwKLSAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0cnkoKTsgXAotICB2b2lkIEdURVNUX1RFU1RfQ0xB
U1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKLQotLy8gVGhl
IG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dz
IHRoZSB1c2VyCi0vLyB0byBzcGVjaWZ5IGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVy
YXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZpeGVzCi0vLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJh
bWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxkIGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKLS8vIHR5
cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxjbGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0
ZDo6c3RyaW5nLgotLy8KLS8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBi
dWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRvciB0aGF0Ci0vLyByZXR1cm5zIHRoZSB2YWx1ZSBv
ZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdldFBhcmFtKCkpLiBJdCBkb2VzIG5vdCB3b3JrCi0v
LyBmb3Igc3RkOjpzdHJpbmcgb3IgQyBzdHJpbmdzLgotLy8KLS8vIE5vdGU6IHRlc3QgbmFtZXMg
bXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKLS8v
IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIHVuZGVyc2NvcmUuCi0KLSMgZGVmaW5lIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNlX25hbWUsIGdlbmVyYXRvciwgLi4u
KSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHRlc3RfY2FzZV9uYW1l
OjpQYXJhbVR5cGU+IFwKLSAgICAgIGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2
YWxHZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9IFwKLSAgOjpzdGQ6OnN0cmluZyBn
dGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXyggXAotICAg
ICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5
cGU+JiBpbmZvKSB7IFwKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0UGFyYW1O
YW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKLSAgICAgICAgKF9fVkFfQVJHU19f
KShpbmZvKTsgXAotICB9IFwKLSAgaW50IGd0ZXN0XyMjcHJlZml4IyN0ZXN0X2Nhc2VfbmFtZSMj
X2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKLSAgICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBcCi0g
ICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0gICAg
ICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAotICAgICAgICAgICAgICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDb2RlTG9jYXRpb24oXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElO
RV9fKSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCi0gICAgICAgICAgICAgICAgICAgICAg
I3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9j
YXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAgICAgICAgICAgICAgICAgICZndGVz
dF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdGVOYW1lXywgXAotICAgICAg
ICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykKLQotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYgIC8vIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMwNzhkNmQyYTE5ZDc5MThlZDNjNzU2YWJjZmNiNDk5MzdlMTZlYjEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0x
LDUxMCArMCwwIEBACi0kJCAtKi0gbW9kZTogYysrOyAtKi0KLSR2YXIgbiA9IDUwICAkJCBNYXhp
bXVtIGxlbmd0aCBvZiBWYWx1ZXMgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KLSR2YXIg
bWF4dHVwbGUgPSAxMCAgJCQgTWF4aW11bSBudW1iZXIgb2YgQ29tYmluZSBhcmd1bWVudHMgd2Ug
d2FudCB0byBzdXBwb3J0LgotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwot
Ly8gTWFjcm9zIGFuZCBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJpemVkIHRl
c3RzCi0vLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8v
Ci0vLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkg
SEFORCEKLS8vCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9I
XwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KLQotCi0v
LyBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3
aXRoIGRpZmZlcmVudAotLy8gcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29w
aWVzIG9mIHRoZSBzYW1lIHRlc3QuCi0vLwotLy8gSGVyZSBpcyBob3cgeW91IHVzZSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3RzOgotCi0jaWYgMAotCi0vLyBUbyB3cml0ZSB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUKLS8vIGNsYXNz
LiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+IChz
ZWUgYmVsb3cgZm9yCi0vLyBhbm90aGVyIGluaGVyaXRhbmNlIHNjaGVtZSB0aGF0J3Mgc29tZXRp
bWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCi0vLyBjbGFzcyBoaWVyYXJjaGllcyksIHdo
ZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4KLS8vIFRlc3RXaXRoUGFyYW08
VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNhbiBiZSBhbnkKLS8v
IGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJs
ZSBmb3IgbWFuYWdpbmcgdGhlCi0vLyBsaWZlc3BhbiBvZiB0aGUgcG9pbnRlZCB2YWx1ZXMuCi0K
LWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNo
YXIqPiB7Ci0gIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwgY2xhc3MgZml4dHVy
ZSBtZW1iZXJzIGhlcmUuCi19OwotCi0vLyBUaGVuLCB1c2UgdGhlIFRFU1RfUCBtYWNybyB0byBk
ZWZpbmUgYXMgbWFueSBwYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBmb3IgdGhpcyBmaXh0dXJlIGFz
IHlvdSB3YW50LiBUaGUgX1Agc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIKLS8vIG9yICJw
YXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCi0KLVRFU1RfUChGb29UZXN0
LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRlc3QgcGFyYW1l
dGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCi0gIC8vIG9mIHRoZSBUZXN0V2l0aFBhcmFt
PFQ+IGNsYXNzOgotICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7Ci0gIC4uLgot
fQotCi1URVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKLSAgLi4uCi19Ci0KLS8vIEZpbmFs
bHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRvIGluc3RhbnRpYXRlIHRo
ZSB0ZXN0Ci0vLyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlvdSB3YW50LiBHb29n
bGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCi0vLyBvZiBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcg
dGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKLS8vIChzdXJwcmlzZSEp
IHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkgb2YgdGhlbSwgd2hpY2gK
LS8vIGFyZSBhbGwgaW4gdGhlIHRlc3RpbmcgbmFtZXNwYWNlOgotLy8KLS8vCi0vLyAgUmFuZ2Uo
YmVnaW4sIGVuZCBbLCBzdGVwXSkgLSBZaWVsZHMgdmFsdWVzIHtiZWdpbiwgYmVnaW4rc3RlcCwK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luK3N0ZXArc3RlcCwgLi4ufS4g
VGhlIHZhbHVlcyBkbyBub3QKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1
ZGUgZW5kLiBzdGVwIGRlZmF1bHRzIHRvIDEuCi0vLyAgVmFsdWVzKHYxLCB2MiwgLi4uLCB2Tikg
ICAgLSBZaWVsZHMgdmFsdWVzIHt2MSwgdjIsIC4uLiwgdk59LgotLy8gIFZhbHVlc0luKGNvbnRh
aW5lcikgICAgICAgIC0gWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwgYW4gU1RM
Ci0vLyAgVmFsdWVzSW4oYmVnaW4sZW5kKSAgICAgICAgICBjb250YWluZXIsIG9yIGFuIGl0ZXJh
dG9yIHJhbmdlIFtiZWdpbiwgZW5kKS4KLS8vICBCb29sKCkgICAgICAgICAgICAgICAgICAgICAt
IFlpZWxkcyBzZXF1ZW5jZSB7ZmFsc2UsIHRydWV9LgotLy8gIENvbWJpbmUoZzEsIGcyLCAuLi4s
IGdOKSAgIC0gWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdAot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBtYXRoIHNhdnZ5KSBvZiB0
aGUgdmFsdWVzIGdlbmVyYXRlZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkg
dGhlIE4gZ2VuZXJhdG9ycy4KLS8vCi0vLyBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgY29tbWVudHMg
YXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBiZWxvdwotLy8gaW4gdGhpcyBm
aWxlLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVz
dHMgZnJvbSB0aGUgRm9vVGVzdCB0ZXN0IGNhc2UKLS8vIGVhY2ggd2l0aCBwYXJhbWV0ZXIgdmFs
dWVzICJtZWVueSIsICJtaW55IiwgYW5kICJtb2UiLgotCi1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChJbnN0YW50aWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOwot
Ci0vLyBUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCAo
eWVzLCB5b3UKLS8vIGNhbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoZW4gb25jZSkgdGhlIGZpcnN0
IGFyZ3VtZW50IHRvIHRoZQotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgbWFjcm8gaXMgYSBw
cmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQotLy8gYWN0dWFsIHRlc3QgY2FzZSBuYW1l
LiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50Ci0vLyBpbnN0
YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBo
YXZlCi0vLyB0aGVzZSBuYW1lczoKLS8vCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuRG9lc0JsYWgvMCBmb3IgIm1lZW55IgotLy8gICAgKiBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0LkRvZXNCbGFoLzEgZm9yICJtaW55IgotLy8gICAgKiBJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0LkRvZXNCbGFoLzIgZm9yICJtb2UiCi0vLyAgICAqIEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rl
c3QuSGFzQmxhaEJsYWgvMCBmb3IgIm1lZW55IgotLy8gICAgKiBJbnN0YW50aWF0aW9uTmFtZS9G
b29UZXN0Lkhhc0JsYWhCbGFoLzEgZm9yICJtaW55IgotLy8gICAgKiBJbnN0YW50aWF0aW9uTmFt
ZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzIgZm9yICJtb2UiCi0vLwotLy8gWW91IGNhbiB1c2UgdGhl
c2UgbmFtZXMgaW4gLS1ndGVzdF9maWx0ZXIuCi0vLwotLy8gVGhpcyBzdGF0ZW1lbnQgd2lsbCBp
bnN0YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBGb29UZXN0IGFnYWluLCBlYWNoCi0vLyB3aXRoIHBh
cmFtZXRlciB2YWx1ZXMgImNhdCIgYW5kICJkb2ciOgotCi1jb25zdCBjaGFyKiBwZXRzW10gPSB7
ImNhdCIsICJkb2cifTsKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0
aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwotCi0vLyBUaGUgdGVzdHMgZnJvbSB0
aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6Ci0vLwotLy8gICAg
KiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wIGZvciAiY2F0Igot
Ly8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xIGZvciAi
ZG9nIgotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxh
aC8wIGZvciAiY2F0IgotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5I
YXNCbGFoQmxhaC8xIGZvciAiZG9nIgotLy8KLS8vIFBsZWFzZSBub3RlIHRoYXQgSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1Agd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMKLS8vIGluIHRoZSBnaXZl
biB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKLS8v
IEFGVEVSIHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQuCi0vLwotLy8gUGxl
YXNlIGFsc28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyAoaW5jbHVkaW5nIHBhcmFt
ZXRlcnMgdG8gdGhlCi0vLyBnZW5lcmF0b3JzKSBhcmUgZXZhbHVhdGVkIGluIEluaXRHb29nbGVU
ZXN0KCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4KLS8vIFRoaXMgYWxsb3dzIHRoZSB1c2Vy
IG9uIG9uZSBoYW5kLCB0byBhZGp1c3QgZ2VuZXJhdG9yIHBhcmFtZXRlcnMgaW4gb3JkZXIKLS8v
IHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhIHNldCBvZiB0ZXN0cyB0byBydW4gYW5kIG9uIHRo
ZSBvdGhlciBoYW5kLAotLy8gZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0byBpbnNwZWN0IHRoZSBn
ZW5lcmF0ZWQgdGVzdHMgd2l0aCBHb29nbGUgVGVzdAotLy8gcmVmbGVjdGlvbiBBUEkgYmVmb3Jl
IFJVTl9BTExfVEVTVFMoKSBpcyBleGVjdXRlZC4KLS8vCi0vLyBZb3UgY2FuIHNlZSBzYW1wbGVz
L3NhbXBsZTdfdW5pdHRlc3QuY2MgYW5kIHNhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYwotLy8g
Zm9yIG1vcmUgZXhhbXBsZXMuCi0vLwotLy8gSW4gdGhlIGZ1dHVyZSwgd2UgcGxhbiB0byBwdWJs
aXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKLS8vIGdlbmVyYXRvcnMuIEJ1
dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUgaW50ZXJuYWwKLS8v
IGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KLS8vCi0vLwotLy8gQSBw
YXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpU
ZXN0IGFuZCBmcm9tCi0vLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD4sIHdoZXJlIFQg
aXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgotLy8gdmFsdWVzLiBJbmhlcml0aW5nIGZyb20g
VGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBiZWNhdXNlCi0vLyBU
ZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBXaXRoUGFyYW1JbnRl
cmZhY2UuIEluIG1vcmUKLS8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBob3dldmVyLCBpdCBp
cyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKLS8vIHNlcGFyYXRlbHkgZnJvbSBUZXN0
IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgotCi1jbGFzcyBCYXNlVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotICAvLyBZb3UgY2FuIGluaGVyaXQgYWxsIHRoZSB1
c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKLSAgLy8gZml4dHVyZSBo
ZXJlLgotfTsKLQotY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRlc3QsIHB1YmxpYyA6
OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKLSAgLy8gVGhlIHVzdWFsIHRlc3Qg
Zml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgotfTsKLQotVEVTVF9GKEJhc2VUZXN0LCBIYXNG
b28pIHsKLSAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVyaXplZCB0ZXN0Lgot
fQotCi1URVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEdldFBhcmFtIHdvcmtz
IGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRlc3RXaXRoUGFyYW0u
Ci0gIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKLX0KLQotI2VuZGlmICAvLyAw
Ci0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0KLSNpZiAhR1RFU1Rf
T1NfU1lNQklBTgotIyBpbmNsdWRlIDx1dGlsaXR5PgotI2VuZGlmCi0KLS8vIHNjcmlwdHMvZnVz
ZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQK
LS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3Qg
YmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLW5hbWVz
cGFjZSB0ZXN0aW5nIHsKLQotLy8gRnVuY3Rpb25zIHByb2R1Y2luZyBwYXJhbWV0ZXIgZ2VuZXJh
dG9ycy4KLS8vCi0vLyBHb29nbGUgVGVzdCB1c2VzIHRoZXNlIGdlbmVyYXRvcnMgdG8gcHJvZHVj
ZSBwYXJhbWV0ZXJzIGZvciB2YWx1ZS0KLS8vIHBhcmFtZXRlcml6ZWQgdGVzdHMuIFdoZW4gYSBw
YXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBpcyBpbnN0YW50aWF0ZWQKLS8vIHdpdGggYSBwYXJ0aWN1
bGFyIGdlbmVyYXRvciwgR29vZ2xlIFRlc3QgY3JlYXRlcyBhbmQgcnVucyB0ZXN0cwotLy8gZm9y
IGVhY2ggZWxlbWVudCBpbiB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvci4K
LS8vCi0vLyBJbiB0aGUgZm9sbG93aW5nIHNhbXBsZSwgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgRm9v
VGVzdCBhcmUgaW5zdGFudGlhdGVkCi0vLyBlYWNoIHRocmVlIHRpbWVzIHdpdGggcGFyYW1ldGVy
IHZhbHVlcyAzLCA1LCBhbmQgODoKLS8vCi0vLyBjbGFzcyBGb29UZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08aW50PiB7IC4uLiB9OwotLy8KLS8vIFRFU1RfUChGb29UZXN0LCBUZXN0VGhpcykg
ewotLy8gfQotLy8gVEVTVF9QKEZvb1Rlc3QsIFRlc3RUaGF0KSB7Ci0vLyB9Ci0vLyBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUChUZXN0U2VxdWVuY2UsIEZvb1Rlc3QsIFZhbHVlcygzLCA1LCA4KSk7
Ci0vLwotCi0vLyBSYW5nZSgpIHJldHVybnMgZ2VuZXJhdG9ycyBwcm92aWRpbmcgc2VxdWVuY2Vz
IG9mIHZhbHVlcyBpbiBhIHJhbmdlLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gUmFuZ2Uoc3RhcnQs
IGVuZCkKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIG9m
IHZhbHVlcyB7c3RhcnQsIHN0YXJ0KzEsCi0vLyAgICAgc3RhcnQrMiwgLi4uLCB9LgotLy8gUmFu
Z2Uoc3RhcnQsIGVuZCwgc3RlcCkKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2lu
ZyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB7c3RhcnQsIHN0YXJ0K3N0ZXAsCi0vLyAgICAgc3RhcnQr
c3RlcCtzdGVwLCAuLi4sIH0uCi0vLyBOb3RlczoKLS8vICAgKiBUaGUgZ2VuZXJhdGVkIHNlcXVl
bmNlcyBuZXZlciBpbmNsdWRlIGVuZC4gRm9yIGV4YW1wbGUsIFJhbmdlKDEsIDUpCi0vLyAgICAg
cmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgYSBzZXF1ZW5jZSB7MSwgMiwgMywgNH0uIFJh
bmdlKDEsIDksIDIpCi0vLyAgICAgcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgezEsIDMs
IDUsIDd9LgotLy8gICAqIHN0YXJ0IGFuZCBlbmQgbXVzdCBoYXZlIHRoZSBzYW1lIHR5cGUuIFRo
YXQgdHlwZSBtYXkgYmUgYW55IGludGVncmFsIG9yCi0vLyAgICAgZmxvYXRpbmctcG9pbnQgdHlw
ZSBvciBhIHVzZXIgZGVmaW5lZCB0eXBlIHNhdGlzZnlpbmcgdGhlc2UgY29uZGl0aW9uczoKLS8v
ICAgICAqIEl0IG11c3QgYmUgYXNzaWduYWJsZSAoaGF2ZSBvcGVyYXRvcj0oKSBkZWZpbmVkKS4K
LS8vICAgICAqIEl0IG11c3QgaGF2ZSBvcGVyYXRvcisoKSAob3BlcmF0b3IrKGludC1jb21wYXRp
YmxlIHR5cGUpIGZvcgotLy8gICAgICAgdHdvLW9wZXJhbmQgdmVyc2lvbikuCi0vLyAgICAgKiBJ
dCBtdXN0IGhhdmUgb3BlcmF0b3I8KCkgZGVmaW5lZC4KLS8vICAgICBFbGVtZW50cyBpbiB0aGUg
cmVzdWx0aW5nIHNlcXVlbmNlcyB3aWxsIGFsc28gaGF2ZSB0aGF0IHR5cGUuCi0vLyAgICogQ29u
ZGl0aW9uIHN0YXJ0IDwgZW5kIG11c3QgYmUgc2F0aXNmaWVkIGluIG9yZGVyIGZvciByZXN1bHRp
bmcgc2VxdWVuY2VzCi0vLyAgICAgdG8gY29udGFpbiBhbnkgZWxlbWVudHMuCi0vLwotdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEluY3JlbWVudFQ+Ci1pbnRlcm5hbDo6UGFyYW1HZW5l
cmF0b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQsIEluY3JlbWVudFQgc3RlcCkgewotICByZXR1
cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+KAotICAgICAgbmV3IGludGVybmFsOjpSYW5n
ZUdlbmVyYXRvcjxULCBJbmNyZW1lbnRUPihzdGFydCwgZW5kLCBzdGVwKSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFJhbmdlKFQgc3Rh
cnQsIFQgZW5kKSB7Ci0gIHJldHVybiBSYW5nZShzdGFydCwgZW5kLCAxKTsKLX0KLQotLy8gVmFs
dWVzSW4oKSBmdW5jdGlvbiBhbGxvd3MgZ2VuZXJhdGlvbiBvZiB0ZXN0cyB3aXRoIHBhcmFtZXRl
cnMgY29taW5nIGZyb20KLS8vIGEgY29udGFpbmVyLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gVmFs
dWVzSW4oY29uc3QgVCAoJmFycmF5KVtOXSkKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHBy
b2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBmcm9tCi0vLyAgICAgYSBDLXN0eWxlIGFy
cmF5LgotLy8gVmFsdWVzSW4oY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpCi0vLyAgIC0gcmV0
dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMgZnJvbQot
Ly8gICAgIGFuIFNUTC1zdHlsZSBjb250YWluZXIuCi0vLyBWYWx1ZXNJbihJdGVyYXRvciBiZWdp
biwgSXRlcmF0b3IgZW5kKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNl
cXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KLS8vICAgICBhIHJhbmdlIFtiZWdpbiwgZW5kKSBk
ZWZpbmVkIGJ5IGEgcGFpciBvZiBTVEwtc3R5bGUgaXRlcmF0b3JzLiBUaGVzZQotLy8gICAgIGl0
ZXJhdG9ycyBjYW4gYWxzbyBiZSBwbGFpbiBDIHBvaW50ZXJzLgotLy8KLS8vIFBsZWFzZSBub3Rl
IHRoYXQgVmFsdWVzSW4gY29waWVzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgY29udGFpbmVycwotLy8g
cGFzc2VkIGluIGFuZCBrZWVwcyB0aGVtIHRvIGdlbmVyYXRlIHRlc3RzIGluIFJVTl9BTExfVEVT
VFMoKS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBm
cm9tIHRlc3QgY2FzZSBTdHJpbmdUZXN0Ci0vLyBlYWNoIHdpdGggQy1zdHJpbmcgdmFsdWVzIG9m
ICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgotLy8KLS8vIGNvbnN0IGNoYXIqIHN0cmluZ3NbXSA9
IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFN0cmlu
Z1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7Ci0vLwotLy8gVGhpcyBp
bnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgU3RsU3RyaW5nVGVzdAotLy8gZWFjaCB3
aXRoIFNUTCBzdHJpbmdzIHdpdGggdmFsdWVzICJhIiBhbmQgImIiOgotLy8KLS8vIDo6c3RkOjp2
ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IEdldFBhcmFtZXRlclN0cmluZ3MoKSB7Ci0vLyAgIDo6c3Rk
Ojp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHY7Ci0vLyAgIHYucHVzaF9iYWNrKCJhIik7Ci0vLyAg
IHYucHVzaF9iYWNrKCJiIik7Ci0vLyAgIHJldHVybiB2OwotLy8gfQotLy8KLS8vIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKENoYXJTZXF1ZW5jZSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAg
IFN0bFN0cmluZ1Rlc3QsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbihHZXRQ
YXJhbWV0ZXJTdHJpbmdzKCkpKTsKLS8vCi0vLwotLy8gVGhpcyB3aWxsIGFsc28gaW5zdGFudGlh
dGUgdGVzdHMgZnJvbSBDaGFyVGVzdAotLy8gZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgJ2En
IGFuZCAnYic6Ci0vLwotLy8gOjpzdGQ6Omxpc3Q8Y2hhcj4gR2V0UGFyYW1ldGVyQ2hhcnMoKSB7
Ci0vLyAgIDo6c3RkOjpsaXN0PGNoYXI+IGxpc3Q7Ci0vLyAgIGxpc3QucHVzaF9iYWNrKCdhJyk7
Ci0vLyAgIGxpc3QucHVzaF9iYWNrKCdiJyk7Ci0vLyAgIHJldHVybiBsaXN0OwotLy8gfQotLy8g
OjpzdGQ6Omxpc3Q8Y2hhcj4gbCA9IEdldFBhcmFtZXRlckNoYXJzKCk7Ci0vLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChDaGFyU2VxdWVuY2UyLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
Q2hhclRlc3QsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJbihsLmJlZ2luKCks
IGwuZW5kKCkpKTsKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW50
ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJ
dGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotVmFsdWVzSW4oRm9y
d2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9y
PgotICAgICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKLSAgcmV0dXJuIGludGVybmFsOjpQYXJh
bUdlbmVyYXRvcjxQYXJhbVR5cGU+KAotICAgICAgbmV3IGludGVybmFsOjpWYWx1ZXNJbkl0ZXJh
dG9yUmFuZ2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLWludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBWYWx1
ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKSB7Ci0gIHJldHVybiBWYWx1ZXNJbihhcnJheSwgYXJy
YXkgKyBOKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KLWludGVybmFsOjpQYXJh
bUdlbmVyYXRvcjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICAg
IGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0gIHJldHVybiBWYWx1ZXNJbihjb250YWlu
ZXIuYmVnaW4oKSwgY29udGFpbmVyLmVuZCgpKTsKLX0KLQotLy8gVmFsdWVzKCkgYWxsb3dzIGdl
bmVyYXRpbmcgdGVzdHMgZnJvbSBleHBsaWNpdGx5IHNwZWNpZmllZCBsaXN0IG9mCi0vLyBwYXJh
bWV0ZXJzLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gVmFsdWVzKFQgdjEsIFQgdjIsIC4uLiwgVCB2
TikKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBl
bGVtZW50cyB2MSwgdjIsIC4uLiwgdk4uCi0vLwotLy8gRm9yIGV4YW1wbGUsIHRoaXMgaW5zdGFu
dGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIEJhclRlc3QgZWFjaAotLy8gd2l0aCB2YWx1ZXMg
Im9uZSIsICJ0d28iLCBhbmQgInRocmVlIjoKLS8vCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChOdW1TZXF1ZW5jZSwgQmFyVGVzdCwgVmFsdWVzKCJvbmUiLCAidHdvIiwgInRocmVlIikpOwot
Ly8KLS8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIEJhelRlc3QgZWFj
aCB3aXRoIHZhbHVlcyAxLCAyLCAzLjUuCi0vLyBUaGUgZXhhY3QgdHlwZSBvZiB2YWx1ZXMgd2ls
bCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgcGFyYW1ldGVyIGluIEJhelRlc3QuCi0vLwotLy8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRpbmdOdW1iZXJzLCBCYXpUZXN0LCBWYWx1ZXMoMSwg
MiwgMy41KSk7Ci0vLwotLy8gQ3VycmVudGx5LCBWYWx1ZXMoKSBzdXBwb3J0cyBmcm9tIDEgdG8g
JG4gcGFyYW1ldGVycy4KLS8vCi0kcmFuZ2UgaSAxLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEu
LmkKLQotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KLWludGVybmFsOjpWYWx1
ZUFycmF5JGk8JGZvciBqLCBbW1Qkal1dPiBWYWx1ZXMoJGZvciBqLCBbW1QkaiB2JGpdXSkgewot
ICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkkaTwkZm9yIGosIFtbVCRqXV0+KCRmb3Igaiwg
W1t2JGpdXSk7Ci19Ci0KLV1dCi0KLS8vIEJvb2woKSBhbGxvd3MgZ2VuZXJhdGluZyB0ZXN0cyB3
aXRoIHBhcmFtZXRlcnMgaW4gYSBzZXQgb2YgKGZhbHNlLCB0cnVlKS4KLS8vCi0vLyBTeW5vcHNp
czoKLS8vIEJvb2woKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVl
bmNlcyB3aXRoIGVsZW1lbnRzIHtmYWxzZSwgdHJ1ZX0uCi0vLwotLy8gSXQgaXMgdXNlZnVsIHdo
ZW4gdGVzdGluZyBjb2RlIHRoYXQgZGVwZW5kcyBvbiBCb29sZWFuIGZsYWdzLiBDb21iaW5hdGlv
bnMKLS8vIG9mIG11bHRpcGxlIGZsYWdzIGNhbiBiZSB0ZXN0ZWQgd2hlbiBzZXZlcmFsIEJvb2wo
KSdzIGFyZSBjb21iaW5lZCB1c2luZwotLy8gQ29tYmluZSgpIGZ1bmN0aW9uLgotLy8KLS8vIElu
IHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhbGwgdGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBGbGFnRGVw
ZW5kZW50VGVzdAotLy8gd2lsbCBiZSBpbnN0YW50aWF0ZWQgdHdpY2Ugd2l0aCBwYXJhbWV0ZXJz
IGZhbHNlIGFuZCB0cnVlLgotLy8KLS8vIGNsYXNzIEZsYWdEZXBlbmRlbnRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Ym9vbD4gewotLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0vLyAgICAgZXh0ZXJuYWxfZmxhZyA9IEdldFBhcmFtKCk7Ci0vLyAgIH0KLS8vIH0KLS8v
IElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEJvb2xTZXF1ZW5jZSwgRmxhZ0RlcGVuZGVudFRlc3Qs
IEJvb2woKSk7Ci0vLwotaW5saW5lIGludGVybmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29s
KCkgewotICByZXR1cm4gVmFsdWVzKGZhbHNlLCB0cnVlKTsKLX0KLQotIyBpZiBHVEVTVF9IQVNf
Q09NQklORQotLy8gQ29tYmluZSgpIGFsbG93cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBt
b3JlIHNlcXVlbmNlcyB0byBwcm9kdWNlCi0vLyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVj
dCBvZiB0aG9zZSBzZXF1ZW5jZXMnIGVsZW1lbnRzLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gQ29t
YmluZShnZW4xLCBnZW4yLCAuLi4sIGdlbk4pCi0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBw
cm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMgY29taW5nIGZyb20KLS8vICAgICB0aGUg
Q2FydGVzaWFuIHByb2R1Y3Qgb2YgZWxlbWVudHMgZnJvbSB0aGUgc2VxdWVuY2VzIGdlbmVyYXRl
ZCBieQotLy8gICAgIGdlbjEsIGdlbjIsIC4uLiwgZ2VuTi4gVGhlIHNlcXVlbmNlIGVsZW1lbnRz
IHdpbGwgaGF2ZSBhIHR5cGUgb2YKLS8vICAgICB0dXBsZTxUMSwgVDIsIC4uLiwgVE4+IHdoZXJl
IFQxLCBUMiwgLi4uLCBUTiBhcmUgdGhlIHR5cGVzCi0vLyAgICAgb2YgZWxlbWVudHMgZnJvbSBz
ZXF1ZW5jZXMgcHJvZHVjZXMgYnkgZ2VuMSwgZ2VuMiwgLi4uLCBnZW5OLgotLy8KLS8vIENvbWJp
bmUgY2FuIGhhdmUgdXAgdG8gJG1heHR1cGxlIGFyZ3VtZW50cy4gVGhpcyBudW1iZXIgaXMgY3Vy
cmVudGx5IGxpbWl0ZWQKLS8vIGJ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBpbiB0
aGUgdHVwbGUgaW1wbGVtZW50YXRpb24gdXNlZCBieSBHb29nbGUKLS8vIFRlc3QuCi0vLwotLy8g
RXhhbXBsZToKLS8vCi0vLyBUaGlzIHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgaW4gdGVzdCBjYXNl
IEFuaW1hbFRlc3QgZWFjaCBvbmUgd2l0aAotLy8gdGhlIHBhcmFtZXRlciB2YWx1ZXMgdHVwbGUo
ImNhdCIsIEJMQUNLKSwgdHVwbGUoImNhdCIsIFdISVRFKSwKLS8vIHR1cGxlKCJkb2ciLCBCTEFD
SyksIGFuZCB0dXBsZSgiZG9nIiwgV0hJVEUpOgotLy8KLS8vIGVudW0gQ29sb3IgeyBCTEFDSywg
R1JBWSwgV0hJVEUgfTsKLS8vIGNsYXNzIEFuaW1hbFRlc3QKLS8vICAgICA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPHR1cGxlPGNvbnN0IGNoYXIqLCBDb2xvcj4gPiB7Li4ufTsKLS8v
Ci0vLyBURVNUX1AoQW5pbWFsVGVzdCwgQW5pbWFsTG9va3NOaWNlKSB7Li4ufQotLy8KLS8vIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFuaW1hbFZhcmlhdGlvbnMsIEFuaW1hbFRlc3QsCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcygiY2F0IiwgImRvZyIpLAotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoQkxBQ0ssIFdISVRFKSkpOwot
Ly8KLS8vIFRoaXMgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBpbiBGbGFnRGVwZW5kZW50VGVzdCB3
aXRoIGFsbCB2YXJpYXRpb25zIG9mIHR3bwotLy8gQm9vbGVhbiBmbGFnczoKLS8vCi0vLyBjbGFz
cyBGbGFnRGVwZW5kZW50VGVzdAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW08dHVwbGU8Ym9vbCwgYm9vbD4gPiB7Ci0vLyAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLS8v
ICAgICAvLyBBc3NpZ25zIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIHZhbHVl
cyBmcm9tIHRoZSB0dXBsZS4KLS8vICAgICB0aWUoZXh0ZXJuYWxfZmxhZ18xLCBleHRlcm5hbF9m
bGFnXzIpID0gR2V0UGFyYW0oKTsKLS8vICAgfQotLy8gfTsKLS8vCi0vLyBURVNUX1AoRmxhZ0Rl
cGVuZGVudFRlc3QsIFRlc3RGZWF0dXJlMSkgewotLy8gICAvLyBUZXN0IHlvdXIgY29kZSB1c2lu
ZyBleHRlcm5hbF9mbGFnXzEgYW5kIGV4dGVybmFsX2ZsYWdfMiBoZXJlLgotLy8gfQotLy8gSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoVHdvQm9vbFNlcXVlbmNlLCBGbGFnRGVwZW5kZW50VGVzdCwK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoQm9vbCgpLCBCb29sKCkpKTsKLS8v
Ci0kcmFuZ2UgaSAyLi5tYXh0dXBsZQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0KLXRlbXBs
YXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgR2VuZXJhdG9yJGpdXT4KLWludGVybmFsOjpDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyJGk8JGZvciBqLCBbW0dlbmVyYXRvciRqXV0+IENvbWJpbmUoCi0gICAg
JGZvciBqLCBbW2NvbnN0IEdlbmVyYXRvciRqJiBnJGpdXSkgewotICByZXR1cm4gaW50ZXJuYWw6
OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4oCi0gICAg
ICAkZm9yIGosIFtbZyRqXV0pOwotfQotCi1dXQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJ
TkUKLQotCi0KLSMgZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCi0g
IGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkg
XAotICAgICAgOiBwdWJsaWMgdGVzdF9jYXNlX25hbWUgeyBcCi0gICBwdWJsaWM6IFwKLSAgICBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge30gXAot
ICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyBcCi0gICBwcml2YXRlOiBcCi0gICAgc3RhdGlj
IGludCBBZGRUb1JlZ2lzdHJ5KCkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAotICAgICAgICAgIEdl
dFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAj
dGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29k
ZUxvY2F0aW9uKFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRU
ZXN0UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgI3Rlc3RfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgICAg
IG5ldyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKLSAgICAgIHJl
dHVybiAwOyBcCi0gICAgfSBcCi0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1t
eV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFwKLSAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSk7IFwKLSAgfTsgXAotICBpbnQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0
ZXN0X2Nhc2VfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWUp
OjpndGVzdF9yZWdpc3RlcmluZ19kdW1teV8gPSBcCi0gICAgICBHVEVTVF9URVNUX0NMQVNTX05B
TUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5KCk7IFwKLSAgdm9p
ZCBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpUZXN0
Qm9keSgpCi0KLS8vIFRoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIElOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QIGFsbG93cyB0aGUgdXNlcgotLy8gdG8gc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1
bmN0b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcwotLy8gYmFzZWQg
b24gdGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFy
Z3VtZW50IG9mCi0vLyB0eXBlIHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBl
PiwgYW5kIHJldHVybiBzdGQ6OnN0cmluZy4KLS8vCi0vLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5n
UGFyYW1OYW1lIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAotLy8gcmV0
dXJucyB0aGUgdmFsdWUgb2YgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKS4KLS8v
Ci0vLyBOb3RlOiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkg
b25seSBjb250YWluIEFTQ0lJCi0vLyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNj
b3JlLiBCZWNhdXNlIFByaW50VG9TdHJpbmcgYWRkcyBxdW90ZXMKLS8vIHRvIHN0ZDo6c3RyaW5n
IGFuZCBDIHN0cmluZ3MsIGl0IHdvbid0IHdvcmsgZm9yIHRoZXNlIHR5cGVzLgotCi0jIGRlZmlu
ZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBnZW5lcmF0
b3IsIC4uLikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0ZXN0X2Nh
c2VfbmFtZTo6UGFyYW1UeXBlPiBcCi0gICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25h
bWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIDo6c3RkOjpz
dHJpbmcgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8o
IFwKLSAgICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2VfbmFtZTo6
UGFyYW1UeXBlPiYgaW5mbykgeyBcCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Okdl
dFBhcmFtTmFtZUdlbjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCi0gICAgICAgIChfX1ZB
X0FSR1NfXykoaW5mbyk7IFwKLSAgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNl
X25hbWUjI19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCi0gICAgICA6OnRlc3Rp
bmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnko
KS4gXAotICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4o
XAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9f
LCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAotICAgICAgICAgICAgICAg
ICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgj
I3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFtZV8sIFwK
LSAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCi0KLX0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTg1MGQ2MDU0MjBhOWVjM2NjMWM5YzQzYTYzYzUxNDQyYTY1MjI3Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDA2ICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBUZXN0IC0gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsKLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50
cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50IGEKLS8vIHZhbHVlIG9m
IGFueSB0eXBlIFQ6Ci0vLwotLy8gICB2b2lkIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNh
bFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7Ci0vLwotLy8gQSB1c2VyIGNh
biB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNzIHR5cGUgVCBieQotLy8g
ZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkgaW4gdGhlIG5hbWVzcGFj
ZSB0aGF0Ci0vLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIEZJUlNUIGRlZmlu
ZWQgZnVuY3Rpb24gaW4gdGhlCi0vLyBmb2xsb3dpbmcgbGlzdCB3aWxsIGJlIHVzZWQgKGFzc3Vt
aW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKLS8vIGZvbyk6Ci0vLwotLy8gICAxLiBmb286
OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQotLy8gICAyLiBvcGVyYXRvcjw8KG9zdHJlYW0m
LCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQotLy8gICAgICBnbG9iYWwg
bmFtZXNwYWNlLgotLy8KLS8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIGlzIGRlZmluZWQsIGl0IHdp
bGwgcHJpbnQgdGhlIGRlYnVnIHN0cmluZyBvZgotLy8gdGhlIHZhbHVlIGlmIGl0IGlzIGEgcHJv
dG9jb2wgYnVmZmVyLCBvciBwcmludCB0aGUgcmF3IGJ5dGVzIGluIHRoZQotLy8gdmFsdWUgb3Ro
ZXJ3aXNlLgotLy8KLS8vIFRvIGFpZCBkZWJ1Z2dpbmc6IHdoZW4gVCBpcyBhIHJlZmVyZW5jZSB0
eXBlLCB0aGUgYWRkcmVzcyBvZiB0aGUKLS8vIHZhbHVlIGlzIGFsc28gcHJpbnRlZDsgd2hlbiBU
IGlzIGEgKGNvbnN0KSBjaGFyIHBvaW50ZXIsIGJvdGggdGhlCi0vLyBwb2ludGVyIHZhbHVlIGFu
ZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGl0IHBvaW50cyB0byBhcmUKLS8vIHByaW50ZWQu
Ci0vLwotLy8gV2UgYWxzbyBwcm92aWRlIHNvbWUgY29udmVuaWVudCB3cmFwcGVyczoKLS8vCi0v
LyAgIC8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLiAgRm9yIGEgKGNvbnN0IG9yIG5vdCkg
Y2hhcgotLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIChidXQgbm90
IHRoZSBwb2ludGVyKSBpcwotLy8gICAvLyBwcmludGVkLgotLy8gICBzdGQ6OnN0cmluZyA6OnRl
c3Rpbmc6OlByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOwotLy8KLS8vICAgLy8gUHJpbnRz
IGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRoZSByZWZlcmVuY2VkCi0v
LyAgIC8vIHZhbHVlIChidXQgbm90IHRoZSBhZGRyZXNzKSBpcyBwcmludGVkOyBmb3IgYSAoY29u
c3Qgb3Igbm90KSBjaGFyCi0vLyAgIC8vIHBvaW50ZXIsIHRoZSBOVUwtdGVybWluYXRlZCBzdHJp
bmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCi0vLyAgIC8vIHByaW50ZWQuCi0vLyAgIHZvaWQg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludChjb25zdCBUJiB2YWx1ZSwg
b3N0cmVhbSopOwotLy8KLS8vICAgLy8gUHJpbnRzIHZhbHVlIHVzaW5nIHRoZSB0eXBlIGluZmVy
cmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZSBkaWZmZXJlbmNlCi0vLyAgIC8vIGZyb20gVW5pdmVy
c2FsVGVyc2VQcmludCgpIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBwcmludHMgYm90aCB0aGUKLS8v
ICAgLy8gcG9pbnRlciBhbmQgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBmb3IgYSAoY29uc3Qg
b3Igbm90KSBjaGFyIHBvaW50ZXIuCi0vLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5p
dmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9zdHJlYW0qKTsKLS8vCi0vLyAgIC8vIFByaW50
cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0byBhIHN0cmluZyB2ZWN0b3IsIG9uZQot
Ly8gICAvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiBUdXBsZSBzdXBwb3J0IG11c3QgYmUgZW5h
YmxlZCBpbgotLy8gICAvLyBndGVzdC1wb3J0LmguCi0vLyAgIHN0ZDo6dmVjdG9yPHN0cmluZz4g
VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAotLy8gICAgICAgY29uc3Qg
VHVwbGUmIHZhbHVlKTsKLS8vCi0vLyBLbm93biBsaW1pdGF0aW9uOgotLy8KLS8vIFRoZSBwcmlu
dCBwcmltaXRpdmVzIHByaW50IHRoZSBlbGVtZW50cyBvZiBhbiBTVEwtc3R5bGUgY29udGFpbmVy
Ci0vLyB1c2luZyB0aGUgY29tcGlsZXItaW5mZXJyZWQgdHlwZSBvZiAqaXRlciB3aGVyZSBpdGVy
IGlzIGEKLS8vIGNvbnN0X2l0ZXJhdG9yIG9mIHRoZSBjb250YWluZXIuICBXaGVuIGNvbnN0X2l0
ZXJhdG9yIGlzIGFuIGlucHV0Ci0vLyBpdGVyYXRvciBidXQgbm90IGEgZm9yd2FyZCBpdGVyYXRv
ciwgdGhpcyBpbmZlcnJlZCB0eXBlIG1heSBub3QKLS8vIG1hdGNoIHZhbHVlX3R5cGUsIGFuZCB0
aGUgcHJpbnQgb3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuICBJbgotLy8gcHJhY3RpY2UsIHRoaXMg
aXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBmb3IgbW9zdCBjb250YWluZXJzCi0vLyBjb25zdF9pdGVy
YXRvciBpcyBhIGZvcndhcmQgaXRlcmF0b3IuICBXZSdsbCBmaXggdGhpcyBpZiB0aGVyZSdzIGFu
Ci0vLyBhY3R1YWwgbmVlZCBmb3IgaXQuICBOb3RlIHRoYXQgdGhpcyBmaXggY2Fubm90IHJlbHkg
b24gdmFsdWVfdHlwZQotLy8gYmVpbmcgZGVmaW5lZCBhcyBtYW55IHVzZXItZGVmaW5lZCBjb250
YWluZXIgdHlwZXMgZG9uJ3QgaGF2ZQotLy8gdmFsdWVfdHlwZS4KLQotI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfUFJJTlRFUlNfSF8KLQotI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKLSNp
bmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5Pgot
I2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmgi
Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLQotI2lmIEdURVNU
X0hBU19TVERfVFVQTEVfCi0jIGluY2x1ZGUgPHR1cGxlPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLQotLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5hbCcgYW5kICdpbnRlcm5h
bDInIG5hbWUgc3BhY2VzIGFyZQotLy8gc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2Uu
ICBETyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQotbmFtZXNwYWNlIGludGVybmFsMiB7Ci0K
LS8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3Qg
dG8gdGhlIGdpdmVuCi0vLyBvc3RyZWFtLgotR1RFU1RfQVBJXyB2b2lkIFByaW50Qnl0ZXNJbk9i
amVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLQotLy8gRm9yIHNlbGVjdGluZyB3
aGljaCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMgbmVpdGhlciA8PAotLy8g
bm9yIFByaW50VG8oKS4KLWVudW0gVHlwZUtpbmQgewotICBrUHJvdG9idWYsICAgICAgICAgICAg
ICAvLyBhIHByb3RvYnVmIHR5cGUKLSAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyLCAgLy8gYSB0eXBl
IGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0eXBlKQotICBrT3RoZXJU
eXBlICAgICAgICAgICAgICAvLyBhbnl0aGluZyBlbHNlCi19OwotCi0vLyBUeXBlV2l0aG91dEZv
cm1hdHRlcjxULCBrVHlwZUtpbmQ+OjpQcmludFZhbHVlKHZhbHVlLCBvcykgaXMgY2FsbGVkCi0v
LyBieSB0aGUgdW5pdmVyc2FsIHByaW50ZXIgdG8gcHJpbnQgYSB2YWx1ZSBvZiB0eXBlIFQgd2hl
biBuZWl0aGVyCi0vLyBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgaXMgZGVmaW5lZCBmb3IgVCwg
d2hlcmUga1R5cGVLaW5kIGlzIHRoZQotLy8gImtpbmQiIG9mIFQgYXMgZGVmaW5lZCBieSBlbnVt
IFR5cGVLaW5kLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFR5cGVLaW5kIGtUeXBlS2luZD4KLWNs
YXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMgZGVmYXVsdCB2
ZXJzaW9uIGlzIGNhbGxlZCB3aGVuIGtUeXBlS2luZCBpcyBrT3RoZXJUeXBlLgotICBzdGF0aWMg
dm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
ICBQcmludEJ5dGVzSW5PYmplY3RUbyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPigmdmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YWx1ZSksIG9z
KTsKLSAgfQotfTsKLQotLy8gV2UgcHJpbnQgYSBwcm90b2J1ZiB1c2luZyBpdHMgU2hvcnREZWJ1
Z1N0cmluZygpIHdoZW4gdGhlIHN0cmluZwotLy8gZG9lc24ndCBleGNlZWQgdGhpcyBtYW55IGNo
YXJhY3RlcnM7IG90aGVyd2lzZSB3ZSBwcmludCBpdCB1c2luZwotLy8gRGVidWdTdHJpbmcoKSBm
b3IgYmV0dGVyIHJlYWRhYmlsaXR5LgotY29uc3Qgc2l6ZV90IGtQcm90b2J1Zk9uZUxpbmVyTWF4
TGVuZ3RoID0gNTA7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZVdpdGhvdXRG
b3JtYXR0ZXI8VCwga1Byb3RvYnVmPiB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBQcmludFZh
bHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICBzdGQ6OnN0cmlu
ZyBwcmV0dHlfc3RyID0gdmFsdWUuU2hvcnREZWJ1Z1N0cmluZygpOwotICAgIGlmIChwcmV0dHlf
c3RyLmxlbmd0aCgpID4ga1Byb3RvYnVmT25lTGluZXJNYXhMZW5ndGgpIHsKLSAgICAgIHByZXR0
eV9zdHIgPSAiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKTsKLSAgICB9Ci0gICAgKm9zIDw8ICgi
PCIgKyBwcmV0dHlfc3RyICsgIj4iKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGlibGVUb0ludGVnZXI+IHsK
LSBwdWJsaWM6Ci0gIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9yIG9yIFByaW50VG8oKSBi
dXQgY2FuIGJlIGltcGxpY2l0bHkKLSAgLy8gY29udmVydGVkIHRvIEJpZ2dlc3RJbnQsIHdlIHBy
aW50IGl0IGFzIGEgQmlnZ2VzdEludC4KLSAgLy8KLSAgLy8gTW9zdCBsaWtlbHkgVCBpcyBhbiBl
bnVtIHR5cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hpY2gKLSAgLy8gY2FzZSBw
cmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLiAgSW4gY2Fz
ZQotICAvLyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRo
ZSBiZXN0IHdlIGNhbiBkbwotICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBubyB1c2VyLWRlZmluZWQg
cHJpbnRlci4KLSAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7Ci0gICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dlc3RJbnQga0JpZ0ludCA9
IHZhbHVlOwotICAgICpvcyA8PCBrQmlnSW50OwotICB9Ci19OwotCi0vLyBQcmludHMgdGhlIGdp
dmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZhbHVlIGlzIGEKLS8vIHBy
b3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRlZDsgaWYgaXQncyBhbiBl
bnVtIG9yCi0vLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBCaWdnZXN0SW50
LCBpdCdzIHByaW50ZWQgYXMgYW4KLS8vIGludGVnZXI7IG90aGVyd2lzZSB0aGUgYnl0ZXMgaW4g
dGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcwotLy8gd2hhdCBVbml2ZXJzYWxQcmludGVy
PFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFib3V0Ci0vLyB0eXBlIFQg
YW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8oKS4KLS8vCi0vLyBBIHVz
ZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlwZSBGb28gYnkgZGVm
aW5pbmcKLS8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSBGb28gaXMgZGVm
aW5lZC4KLS8vCi0vLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1lc3BhY2UgJ2ludGVybmFs
MicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCi0vLyB0byBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRp
b24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCi0vLyB1c2UgPDwgaW4gU1RM
LCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2VyZSBpdCBkZWZpbmVkCi0v
LyBpbiAnaW50ZXJuYWwnLgotLy8KLS8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdG9yPDwgdGFrZXMg
YSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAotLy8gQ2hhclRyYWl0cz4gdHlwZSBp
bnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFtLiAgSWYKLS8vIHdlIGRl
ZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3ZSdsbCBnZXQgYW4KLS8v
ICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVuIHRyeWluZyB0byBwcmlu
dCBhIHR5cGUKLS8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0byBzdGQ6OmJhc2ljX29z
dHJlYW08Q2hhciwKLS8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGlsZXIgY2Fubm90IHRlbGwg
d2hldGhlcgotLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBUJikgb3IKLS8vIG9w
ZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4sIGNvbnN0IEZvbyYp
IGlzIG1vcmUKLS8vIHNwZWNpZmljLgotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1l
IENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Ci06OnN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFy
VHJhaXRzPiYgb3BlcmF0b3I8PCgKLSAgICA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFy
VHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKLSAgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwKLSAg
ICAgIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSA/IGtQcm90b2J1ZiA6
Ci0gICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBUJiwgaW50ZXJu
YWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZSA/Ci0gICAgICAga0NvbnZlcnRpYmxlVG9JbnRlZ2VyIDog
a090aGVyVHlwZSk+OjpQcmludFZhbHVlKHgsICZvcyk7Ci0gIHJldHVybiBvczsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsMgotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotLy8gVGhp
cyBuYW1lc3BhY2UgTVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGluZywgb3IgdGhlIG5hbWUg
bG9vay11cAotLy8gbWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgVW5pdmVyc2FsUHJpbnRl
ciB3b24ndCB3b3JrLgotbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwgewotCi0vLyBVc2VkIHRv
IHByaW50IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciB3aGVuIHRo
ZQotLy8gdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRvKGNvbnN0IFQmIHZhbHVl
LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgLy8gV2l0aCB0aGUgZm9sbG93aW5nIHN0YXRlbWVu
dCwgZHVyaW5nIHVucXVhbGlmaWVkIG5hbWUgbG9va3VwLAotICAvLyB0ZXN0aW5nOjppbnRlcm5h
bDI6Om9wZXJhdG9yPDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFyZWQgaW4KLSAgLy8gdGhl
IG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGJvdGgKLSAgLy8gOjp0
ZXN0aW5nX2ludGVybmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwgaS5lLiB0aGUgZ2xvYmFs
Ci0gIC8vIG5hbWVzcGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRoZSBDKysgU3Rh
bmRhcmQgc2VjdGlvbgotICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRpcl0uICBUaGlzIGFsbG93
cyB1cyB0byBmYWxsIGJhY2sgb250bwotICAvLyB0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9y
PDwgaW4gY2FzZSBUIGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKLSAgLy8gb3BlcmF0b3IuCi0gIC8v
Ci0gIC8vIFdlIGNhbm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJh
dG9yPDw7Jywgd2hpY2gKLSAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21waWxlIGR1ZSB0byBhIGNv
bXBpbGVyIGJ1Zy4KLSAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6aW50ZXJuYWwyOyAgLy8g
Tk9MSU5UCi0KLSAgLy8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5hbWVzcGFjZSBmb28sIGlu
IHRoZSBuZXh0IHN0YXRlbWVudCwKLSAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgY29uc2lkZXIgYWxs
IG9mOgotICAvLwotICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhhbmtzIHRvIEtvZW5pZyBs
b29rLXVwKSwKLSAgLy8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBjdXJyZW50IG5hbWVzcGFj
ZSBpcyBlbmNsb3NlZCBpbiA6OiksCi0gIC8vICAgMy4gdGVzdGluZzo6aW50ZXJuYWwyOjpvcGVy
YXRvcjw8ICh0aGFua3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92ZSkuCi0gIC8vCi0gIC8v
IFRoZSBvcGVyYXRvcjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qgd2lsbCBiZSBwaWNrZWQu
Ci0gIC8vCi0gIC8vIFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBiZSBhIGNhbmRpZGF0ZSwg
YXMgc29tZXRpbWVzIGl0J3MKLSAgLy8gaW1wb3NzaWJsZSB0byBkZWZpbmUgIzEgKGUuZy4gd2hl
biBmb28gaXMgOjpzdGQsIGRlZmluaW5nCi0gIC8vIGFueXRoaW5nIGluIGl0IGlzIHVuZGVmaW5l
ZCBiZWhhdmlvciB1bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCi0gIC8vIHZlbmRvci4pLgotICAq
b3MgPDwgdmFsdWU7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nX2ludGVybmFsCi0KLW5h
bWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEZvcm1hdEZvckNv
bXBhcmlzb248VG9QcmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZhbHVlKSBmb3JtYXRzIGEK
LS8vIHZhbHVlIG9mIHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJhbmQgb2YgYSBjb21wYXJp
c29uIGFzc2VydGlvbgotLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVyT3BlcmFuZCBpcyB0aGUg
dHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZCBpbgotLy8gdGhlIGNvbXBhcmlzb24sIGFuZCBpcyB1
c2VkIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bwotLy8gZm9ybWF0IHRoZSB2YWx1
ZS4gIEluIHBhcnRpY3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBzdHJpbmcKLS8vIChjaGFy
IHBvaW50ZXIpIGFuZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwgc3RyaW5nIG9iamVjdCwg
d2UKLS8vIHdhbnQgdG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0cmluZywgc2luY2Ugd2Ug
a25vdyBpdCBpcwotLy8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUgc3RyaW5nIG9iamVjdC4g
IElmIHRoZSB2YWx1ZSBpcyBhIGNoYXIKLS8vIHBvaW50ZXIgYnV0IHRoZSBvdGhlciBvcGVyYW5k
IGlzIG5vdCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKLS8vIGtub3cgd2hldGhlciB0
aGUgcG9pbnRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkCi0vLyBz
dHJpbmcsIGFuZCB0aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2ludGVyIHRvIGJlIHNhZmUu
Ci0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQ
Uk9HUkFNLgotCi0vLyBUaGUgZGVmYXVsdCBjYXNlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJp
bnQsIHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KLWNsYXNzIEZvcm1hdEZvckNvbXBhcmlzb24gewot
IHB1YmxpYzoKLSAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQmIHZh
bHVlKSB7Ci0gICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyh2YWx1ZSk7Ci0gIH0K
LX07Ci0KLS8vIEFycmF5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJpbnQsIHNpemVfdCBOLCB0
eXBlbmFtZSBPdGhlck9wZXJhbmQ+Ci1jbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPFRvUHJpbnRb
Tl0sIE90aGVyT3BlcmFuZD4gewotIHB1YmxpYzoKLSAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9y
bWF0KGNvbnN0IFRvUHJpbnQqIHZhbHVlKSB7Ci0gICAgcmV0dXJuIEZvcm1hdEZvckNvbXBhcmlz
b248Y29uc3QgVG9QcmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2YWx1ZSk7Ci0gIH0KLX07
Ci0KLS8vIEJ5IGRlZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50ZXJzIHRvIGJlIHNhZmUs
IGFzIHdlIGRvbid0IGtub3cKLS8vIHdoZXRoZXIgdGhleSBhY3R1YWxseSBwb2ludCB0byBhIE5V
TC10ZXJtaW5hdGVkIHN0cmluZy4KLQotI2RlZmluZSBHVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklO
R19BU19QT0lOVEVSXyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT3RoZXJPcGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwgT3RoZXJPcGVyYW5kPiB7
ICAgICAgICAgICAgICAgICAgXAotICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyA6OnN0ZDo6
c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4odmFsdWUpKTsgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLUdURVNUX0lNUExfRk9S
TUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNoYXIpOwotR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJ
TkdfQVNfUE9JTlRFUl8oY29uc3QgY2hhcik7Ci1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19B
U19QT0lOVEVSXyh3Y2hhcl90KTsKLUdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5U
RVJfKGNvbnN0IHdjaGFyX3QpOwotCi0jdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdf
QVNfUE9JTlRFUl8KLQotLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJlZCB3aXRoIGFuIFNUTCBz
dHJpbmcgb2JqZWN0LCB3ZSBrbm93IGl0J3MgbWVhbnQKLS8vIHRvIHBvaW50IHRvIGEgTlVMLXRl
cm1pbmF0ZWQgc3RyaW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMgYSBzdHJpbmcuCi0KLSNk
ZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhDaGFyVHlwZSwgT3Ro
ZXJTdHJpbmdUeXBlKSBcCi0gIHRlbXBsYXRlIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGNsYXNzIEZvcm1hdEZvckNvbXBh
cmlzb248Q2hhclR5cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAgICAgICAgICBcCi0gICBw
dWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KENoYXJUeXBlKiB2
YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIH0KLQotR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhj
aGFyLCA6OnN0ZDo6c3RyaW5nKTsKLUdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1NUUklO
R18oY29uc3QgY2hhciwgOjpzdGQ6OnN0cmluZyk7Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwotR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyhjaGFyLCA6OnN0cmlu
Zyk7Ci1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IGNoYXIsIDo6
c3RyaW5nKTsKLSNlbmRpZgotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1HVEVTVF9J
TVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6d3N0cmluZyk7Ci1HVEVT
VF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6d3N0cmlu
Zyk7Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotR1RFU1RfSU1QTF9GT1JN
QVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0cmluZyk7Ci1HVEVTVF9J
TVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFyX3QsIDo6c3RkOjp3c3Ry
aW5nKTsKLSNlbmRpZgotCi0jdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RS
SU5HXwotCi0vLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24gKGUuZy4gQVNTRVJUX0VR
LCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBvcGVyYW5kIHRvIGJlIHVzZWQgaW4gYSBmYWlsdXJl
IG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKLS8vIG9mIHRoZSBvdGhlciBvcGVy
YW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBwcmludCBh
IGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGFub3Ro
ZXIKLS8vIGNoYXIqIG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBDIHN0cmluZyB3aGVuIGl0
IGlzIGNvbXBhcmVkCi0vLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9iamVjdCwgZm9yIGV4YW1w
bGUuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNF
UiBQUk9HUkFNLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0ZDo6c3Ry
aW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKLSAgICBjb25zdCBUMSYgdmFs
dWUsIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7Ci0gIHJldHVybiBGb3JtYXRGb3JD
b21wYXJpc29uPFQxLCBUMj46OkZvcm1hdCh2YWx1ZSk7Ci19Ci0KLS8vIFVuaXZlcnNhbFByaW50
ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRoZSBnaXZlbgotLy8gdmFs
dWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQKLS8v
ICdvc3RyZWFtX3B0cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQu
Ci0vLwotLy8gV2UgZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBjbGFzcyB0ZW1wbGF0ZSAo
YXMgb3Bwb3NlZCB0byBhCi0vLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFzIHdlIG5lZWQgdG8gcGFy
dGlhbGx5IHNwZWNpYWxpemUgaXQgZm9yCi0vLyByZWZlcmVuY2UgdHlwZXMsIHdoaWNoIGNhbm5v
dCBiZSBkb25lIHdpdGggZnVuY3Rpb24gdGVtcGxhdGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBVbml2ZXJzYWxQcmludGVyOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQg
VW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci0KLWVu
dW0gRGVmYXVsdFByaW50ZXJUeXBlIHsKLSAga1ByaW50Q29udGFpbmVyLAotICBrUHJpbnRQb2lu
dGVyLAotICBrUHJpbnRGdW5jdGlvblBvaW50ZXIsCi0gIGtQcmludE90aGVyLAotfTsKLXRlbXBs
YXRlIDxEZWZhdWx0UHJpbnRlclR5cGUgdHlwZT4gc3RydWN0IFdyYXBQcmludGVyVHlwZSB7fTsK
LQotLy8gVXNlZCB0byBwcmludCBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdoZW4gdGhlIHVzZXIg
ZG9lc24ndCBkZWZpbmUKLS8vIGEgUHJpbnRUbygpIGZvciBpdC4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDPgotdm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8a1ByaW50Q29udGFpbmVy
PiAvKiBkdW1teSAqLywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgQyYgY29udGFpbmVyLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgY29uc3Qgc2l6ZV90IGtNYXhDb3VudCA9IDMyOyAgLy8g
VGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHByaW50LgotICAqb3MgPDwgJ3snOwot
ICBzaXplX3QgY291bnQgPSAwOwotICBmb3IgKHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gY29udGFpbmVyLmVuZCgpOyArK2l0
LCArK2NvdW50KSB7Ci0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgKm9zIDw8ICcsJzsKLSAg
ICAgIGlmIChjb3VudCA9PSBrTWF4Q291bnQpIHsgIC8vIEVub3VnaCBoYXMgYmVlbiBwcmludGVk
LgotICAgICAgICAqb3MgPDwgIiAuLi4iOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9
Ci0gICAgKm9zIDw8ICcgJzsKLSAgICAvLyBXZSBjYW5ub3QgY2FsbCBQcmludFRvKCppdCwgb3Mp
IGhlcmUgYXMgUHJpbnRUbygpIGRvZXNuJ3QKLSAgICAvLyBoYW5kbGUgKml0IGJlaW5nIGEgbmF0
aXZlIGFycmF5LgotICAgIGludGVybmFsOjpVbml2ZXJzYWxQcmludCgqaXQsIG9zKTsKLSAgfQot
Ci0gIGlmIChjb3VudCA+IDApIHsKLSAgICAqb3MgPDwgJyAnOwotICB9Ci0gICpvcyA8PCAnfSc7
Ci19Ci0KLS8vIFVzZWQgdG8gcHJpbnQgYSBwb2ludGVyIHRoYXQgaXMgbmVpdGhlciBhIGNoYXIg
cG9pbnRlciBub3IgYSBtZW1iZXIKLS8vIHBvaW50ZXIsIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBk
ZWZpbmUgUHJpbnRUbygpIGZvciBpdC4gIChBIG1lbWJlcgotLy8gdmFyaWFibGUgcG9pbnRlciBv
ciBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlciBkb2Vzbid0IHJlYWxseSBwb2ludCB0bwotLy8gYSBs
b2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJlc2VudGF0aW9uIGlzCi0v
LyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkgd2lsbCBiZSBwcmludGVk
IGFzIHJhdwotLy8gYnl0ZXMuKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQ
cmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRQb2ludGVyPiAvKiBkdW1teSAqLywKLSAgICAg
ICAgICAgICAgICAgICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIGlmIChwID09IE5V
TEwpIHsKLSAgICAqb3MgPDwgIk5VTEwiOwotICB9IGVsc2UgewotICAgIC8vIFQgaXMgbm90IGEg
ZnVuY3Rpb24gdHlwZS4gIFdlIGp1c3QgY2FsbCA8PCB0byBwcmludCBwLAotICAgIC8vIHJlbHlp
bmcgb24gQURMIHRvIHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0aGVpciBwb2ludGVyCi0g
ICAgLy8gdHlwZXMsIGlmIGFueS4KLSAgICAqb3MgPDwgcDsKLSAgfQotfQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRGdW5j
dGlvblBvaW50ZXI+IC8qIGR1bW15ICovLAotICAgICAgICAgICAgICAgICAgICBUKiBwLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKLSAgaWYgKHAgPT0gTlVMTCkgewotICAgICpvcyA8PCAiTlVMTCI7
Ci0gIH0gZWxzZSB7Ci0gICAgLy8gVCBpcyBhIGZ1bmN0aW9uIHR5cGUsIHNvICcqb3MgPDwgcCcg
ZG9lc24ndCBkbyB3aGF0IHdlIHdhbnQKLSAgICAvLyAoaXQganVzdCBwcmludHMgcCBhcyBib29s
KS4gIFdlIHdhbnQgdG8gcHJpbnQgcCBhcyBhIGNvbnN0Ci0gICAgLy8gdm9pZCouICBIb3dldmVy
LCB3ZSBjYW5ub3QgY2FzdCBpdCB0byBjb25zdCB2b2lkKiBkaXJlY3RseSwKLSAgICAvLyBldmVu
IHVzaW5nIHJlaW50ZXJwcmV0X2Nhc3QsIGFzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZ2NjCi0gICAg
Ly8gKGUuZy4gMy40LjUpIGNhbm5vdCBjb21waWxlIHRoZSBjYXN0IHdoZW4gcCBpcyBhIGZ1bmN0
aW9uCi0gICAgLy8gcG9pbnRlci4gIENhc3RpbmcgdG8gVUludDY0IGZpcnN0IHNvbHZlcyB0aGUg
cHJvYmxlbS4KLSAgICAqb3MgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oCi0gICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OlVJbnQ2ND4ocCkpOwotICB9Ci19Ci0KLS8v
IFVzZWQgdG8gcHJpbnQgYSBub24tY29udGFpbmVyLCBub24tcG9pbnRlciB2YWx1ZSB3aGVuIHRo
ZSB1c2VyCi0vLyBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0LgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRPdGhl
cj4gLyogZHVtbXkgKi8sCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHZhbHVlLCA6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKLSAgOjp0ZXN0aW5nX2ludGVybmFsOjpEZWZhdWx0UHJpbnROb25D
b250YWluZXJUbyh2YWx1ZSwgb3MpOwotfQotCi0vLyBQcmludHMgdGhlIGdpdmVuIHZhbHVlIHVz
aW5nIHRoZSA8PCBvcGVyYXRvciBpZiBpdCBoYXMgb25lOwotLy8gb3RoZXJ3aXNlIHByaW50cyB0
aGUgYnl0ZXMgaW4gaXQuICBUaGlzIGlzIHdoYXQKLS8vIFVuaXZlcnNhbFByaW50ZXI8VD46OlBy
aW50KCkgZG9lcyB3aGVuIFByaW50VG8oKSBpcyBub3Qgc3BlY2lhbGl6ZWQKLS8vIG9yIG92ZXJs
b2FkZWQgZm9yIHR5cGUgVC4KLS8vCi0vLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZp
b3IgZm9yIGEgY2xhc3MgdHlwZSBGb28gYnkgZGVmaW5pbmcKLS8vIGFuIG92ZXJsb2FkIG9mIFBy
aW50VG8oKSBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZpbmVkLiAgV2UKLS8vIGdp
dmUgdGhlIHVzZXIgdGhpcyBvcHRpb24gYXMgc29tZXRpbWVzIGRlZmluaW5nIGEgPDwgb3BlcmF0
b3IgZm9yCi0vLyBGb28gaXMgbm90IGRlc2lyYWJsZSAoZS5nLiB0aGUgY29kaW5nIHN0eWxlIG1h
eSBwcmV2ZW50IGRvaW5nIGl0LAotLy8gb3IgdGhlcmUgaXMgYWxyZWFkeSBhIDw8IG9wZXJhdG9y
IGJ1dCBpdCBkb2Vzbid0IGRvIHdoYXQgdGhlIHVzZXIKLS8vIHdhbnRzKS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotdm9pZCBQcmludFRvKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgLy8gRGVmYXVsdFByaW50VG8oKSBpcyBvdmVybG9hZGVkLiAgVGhlIHR5cGUgb2Yg
aXRzIGZpcnN0IGFyZ3VtZW50Ci0gIC8vIGRldGVybWluZXMgd2hpY2ggdmVyc2lvbiB3aWxsIGJl
IHBpY2tlZC4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IHdlIGNoZWNrIGZvciBjb250YWluZXIgdHlw
ZXMgaGVyZSwgcHJpb3IgdG8gd2UgY2hlY2sKLSAgLy8gZm9yIHByb3RvY29sIG1lc3NhZ2UgdHlw
ZXMgaW4gb3VyIG9wZXJhdG9yPDwuICBUaGUgcmF0aW9uYWxlIGlzOgotICAvLwotICAvLyBGb3Ig
cHJvdG9jb2wgbWVzc2FnZXMsIHdlIHdhbnQgdG8gZ2l2ZSBwZW9wbGUgYSBjaGFuY2UgdG8KLSAg
Ly8gb3ZlcnJpZGUgR29vZ2xlIE1vY2sncyBmb3JtYXQgYnkgZGVmaW5pbmcgYSBQcmludFRvKCkg
b3IKLSAgLy8gb3BlcmF0b3I8PC4gIEZvciBTVEwgY29udGFpbmVycywgb3RoZXIgZm9ybWF0cyBj
YW4gYmUKLSAgLy8gaW5jb21wYXRpYmxlIHdpdGggR29vZ2xlIE1vY2sncyBmb3JtYXQgZm9yIHRo
ZSBjb250YWluZXIKLSAgLy8gZWxlbWVudHM7IHRoZXJlZm9yZSB3ZSBjaGVjayBmb3IgY29udGFp
bmVyIHR5cGVzIGhlcmUgdG8gZW5zdXJlCi0gIC8vIHRoYXQgb3VyIGZvcm1hdCBpcyB1c2VkLgot
ICAvLwotICAvLyBOb3RlIHRoYXQgTVNWQyBhbmQgY2xhbmctY2wgZG8gYWxsb3cgYW4gaW1wbGlj
aXQgY29udmVyc2lvbiBmcm9tCi0gIC8vIHBvaW50ZXItdG8tZnVuY3Rpb24gdG8gcG9pbnRlci10
by1vYmplY3QsIGJ1dCBjbGFuZy1jbCB3YXJucyBvbiBpdC4KLSAgLy8gU28gZG9uJ3QgdXNlIElt
cGxpY2l0bHlDb252ZXJ0aWJsZSBpZiBpdCBjYW4gYmUgaGVscGVkIHNpbmNlIGl0IHdpbGwKLSAg
Ly8gY2F1c2UgdGhpcyB3YXJuaW5nLCBhbmQgdXNlIGEgc2VwYXJhdGUgb3ZlcmxvYWQgb2YgRGVm
YXVsdFByaW50VG8gZm9yCi0gIC8vIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRoYXQgdGhlIGAqb3Mg
PDwgcGAgaW4gdGhlIG9iamVjdCBwb2ludGVyIG92ZXJsb2FkCi0gIC8vIGRvZXNuJ3QgY2F1c2Ug
dGhhdCB3YXJuaW5nIGVpdGhlci4KLSAgRGVmYXVsdFByaW50VG8oCi0gICAgICBXcmFwUHJpbnRl
clR5cGU8c2l6ZW9mKElzQ29udGFpbmVyVGVzdDxUPigwKSkgPT0gc2l6ZW9mKElzQ29udGFpbmVy
KQotICAgICAgICAgID8ga1ByaW50Q29udGFpbmVyIDogIWlzX3BvaW50ZXI8VD46OnZhbHVlCi0g
ICAgICAgICAgICAgICAgPyBrUHJpbnRPdGhlcgotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLSAgICAg
ICAgICAgICAgICA6IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRl
cjxUPjo6dHlwZT46OnZhbHVlCi0jZWxzZQotICAgICAgICAgICAgICAgIDogIWludGVybmFsOjpJ
bXBsaWNpdGx5Q29udmVydGlibGU8VCwgY29uc3Qgdm9pZCo+Ojp2YWx1ZQotI2VuZGlmCi0gICAg
ICAgICAgICAgICAgICAgICAgPyBrUHJpbnRGdW5jdGlvblBvaW50ZXIKLSAgICAgICAgICAgICAg
ICAgICAgICA6IGtQcmludFBvaW50ZXI+KCksCi0gICAgICB2YWx1ZSwgb3MpOwotfQotCi0vLyBU
aGUgZm9sbG93aW5nIGxpc3Qgb2YgUHJpbnRUbygpIG92ZXJsb2FkcyB0ZWxscwotLy8gVW5pdmVy
c2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBob3cgdG8gcHJpbnQgc3RhbmRhcmQgdHlwZXMgKGJ1aWx0
LWluCi0vLyB0eXBlcywgc3RyaW5ncywgcGxhaW4gYXJyYXlzLCBhbmQgcG9pbnRlcnMpLgotCi0v
LyBPdmVybG9hZHMgZm9yIHZhcmlvdXMgY2hhciB0eXBlcy4KLUdURVNUX0FQSV8gdm9pZCBQcmlu
dFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLUdURVNUX0FQSV8gdm9p
ZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci1pbmxpbmUgdm9p
ZCBQcmludFRvKGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIC8vIFdoZW4gcHJpbnRp
bmcgYSBwbGFpbiBjaGFyLCB3ZSBhbHdheXMgdHJlYXQgaXQgYXMgdW5zaWduZWQuICBUaGlzCi0g
IC8vIHdheSwgdGhlIG91dHB1dCB3b24ndCBiZSBhZmZlY3RlZCBieSB3aGV0aGVyIHRoZSBjb21w
aWxlciB0aGlua3MKLSAgLy8gY2hhciBpcyBzaWduZWQgb3Igbm90LgotICBQcmludFRvKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpLCBvcyk7Ci19Ci0KLS8vIE92ZXJsb2FkcyBmb3Igb3Ro
ZXIgc2ltcGxlIGJ1aWx0LWluIHR5cGVzLgotaW5saW5lIHZvaWQgUHJpbnRUbyhib29sIHgsIDo6
c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgKHggPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLX0K
LQotLy8gT3ZlcmxvYWQgZm9yIHdjaGFyX3QgdHlwZS4KLS8vIFByaW50cyBhIHdjaGFyX3QgYXMg
YSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRlcm5hbAotLy8gY29kZSBv
dGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGRlY2ltYWwgY29kZSAoZXhjZXB0IGZvciBMJ1wwJyku
Ci0vLyBUaGUgTCdcMCcgY2hhciBpcyBwcmludGVkIGFzICJMJ1xcMCciLiBUaGUgZGVjaW1hbCBj
b2RlIGlzIHByaW50ZWQKLS8vIGFzIHNpZ25lZCBpbnRlZ2VyIHdoZW4gd2NoYXJfdCBpcyBpbXBs
ZW1lbnRlZCBieSB0aGUgY29tcGlsZXIKLS8vIGFzIGEgc2lnbmVkIHR5cGUgYW5kIGlzIHByaW50
ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QKLS8vIGlzIGltcGxlbWVudGVk
IGFzIGFuIHVuc2lnbmVkIHR5cGUuCi1HVEVTVF9BUElfIHZvaWQgUHJpbnRUbyh3Y2hhcl90IHdj
LCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotCi0vLyBPdmVybG9hZHMgZm9yIEMgc3RyaW5ncy4KLUdU
RVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7
Ci1pbmxpbmUgdm9pZCBQcmludFRvKGNoYXIqIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQ
cmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3QgY2hhcio+KHMpLCBvcyk7Ci19Ci0KLS8vIHNpZ25l
ZC91bnNpZ25lZCBjaGFyIGlzIG9mdGVuIHVzZWQgZm9yIHJlcHJlc2VudGluZyBiaW5hcnkgZGF0
YSwgc28KLS8vIHdlIHByaW50IHBvaW50ZXJzIHRvIGl0IGFzIHZvaWQqIHRvIGJlIHNhZmUuCi1p
bmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHNpZ25lZCBjaGFyKiBzLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSwgb3MpOwotfQot
aW5saW5lIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKLX0KLWlubGlu
ZSB2b2lkIFByaW50VG8oY29uc3QgdW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKLX0KLWlu
bGluZSB2b2lkIFByaW50VG8odW5zaWduZWQgY2hhciogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyksIG9zKTsKLX0KLQotLy8g
TVNWQyBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2NoYXJfdCBhcyBhIHR5cGVkZWYgb2Yg
dW5zaWduZWQKLS8vIHNob3J0LiAgSXQgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCB3
aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUKLS8vIHR5cGUuICBXaGVuIHdjaGFyX3QgaXMgYSB0eXBl
ZGVmLCBkZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3QKLS8vIHdjaGFyX3QqIHdvdWxkIGNh
dXNlIHVuc2lnbmVkIHNob3J0KiBiZSBwcmludGVkIGFzIGEgd2lkZSBzdHJpbmcsCi0vLyBwb3Nz
aWJseSBjYXVzaW5nIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLgotI2lmICFkZWZpbmVkKF9NU0Nf
VkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQotLy8gT3ZlcmxvYWRzIGZv
ciB3aWRlIEMgc3RyaW5ncwotR1RFU1RfQVBJXyB2b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCog
cywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLWlubGluZSB2b2lkIFByaW50VG8od2NoYXJfdCogcywg
OjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB3Y2hh
cl90Kj4ocyksIG9zKTsKLX0KLSNlbmRpZgotCi0vLyBPdmVybG9hZCBmb3IgQyBhcnJheXMuICBN
dWx0aS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHByaW50ZWQKLS8vIHByb3Blcmx5LgotCi0vLyBQ
cmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBhcnJheSwgd2l0aG91dCBw
cmludGluZwotLy8gdGhlIGN1cmx5IGJyYWNlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9p
ZCBQcmludFJhd0FycmF5VG8oY29uc3QgVCBhW10sIHNpemVfdCBjb3VudCwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7Ci0gIFVuaXZlcnNhbFByaW50KGFbMF0sIG9zKTsKLSAgZm9yIChzaXplX3QgaSA9
IDE7IGkgIT0gY291bnQ7IGkrKykgewotICAgICpvcyA8PCAiLCAiOwotICAgIFVuaXZlcnNhbFBy
aW50KGFbaV0sIG9zKTsKLSAgfQotfQotCi0vLyBPdmVybG9hZHMgZm9yIDo6c3RyaW5nIGFuZCA6
OnN0ZDo6c3RyaW5nLgotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HVEVTVF9BUElfIHZv
aWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwot
aW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0cmluZyYgcywgOjpzdGQ6Om9zdHJlYW0qIG9z
KSB7Ci0gIFByaW50U3RyaW5nVG8ocywgb3MpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORwotCi1HVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0ZDo6
c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci1pbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0
IDo6c3RkOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFN0cmluZ1Rv
KHMsIG9zKTsKLX0KLQotLy8gT3ZlcmxvYWRzIGZvciA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3Ry
aW5nLgotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1RfQVBJXyB2b2lkIFByaW50
V2lkZVN0cmluZ1RvKGNvbnN0IDo6d3N0cmluZyZzLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotaW5s
aW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykg
ewotICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi1HVEVTVF9BUElfIHZv
aWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmcywgOjpzdGQ6Om9zdHJl
YW0qIG9zKTsKLWlubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OndzdHJpbmcmIHMsIDo6
c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Ci19Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX1RSMV9UVVBMRSB8
fCBHVEVTVF9IQVNfU1REX1RVUExFXwotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBwcmludGluZyBh
IHR1cGxlLiAgVCBtdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoCi0vLyBhIHR1cGxlIHR5cGUuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUHJpbnRUdXBsZVRvKGNvbnN0IFQmIHQsIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1Rf
SEFTX1NURF9UVVBMRV8KLQotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKLS8vIE92ZXJsb2FkIGZv
ciA6OnN0ZDo6dHIxOjp0dXBsZS4gIE5lZWRlZCBmb3IgcHJpbnRpbmcgZnVuY3Rpb24gYXJndW1l
bnRzLAotLy8gd2hpY2ggYXJlIHBhY2tlZCBhcyB0dXBsZXMuCi0KLS8vIE92ZXJsb2FkZWQgUHJp
bnRUbygpIGZvciB0dXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLiAgV2Ugc3VwcG9ydAotLy8gdHVw
bGVzIG9mIHVwLXRvIDEwIGZpZWxkcy4gIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gd29y
a3MKLS8vIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0cjE6OnR1cGxlIGlzIGltcGxlbWVudGVkIHVz
aW5nIHRoZQotLy8gbm9uLXN0YW5kYXJkIHZhcmlhZGljIHRlbXBsYXRlIGZlYXR1cmUgb3Igbm90
LgotCi1pbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPD4mIHQsIDo6
c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDE+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDE+
JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXZvaWQgUHJpbnRUbyhjb25zdCA6
OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDI+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJp
bnRUdXBsZVRvKHQsIG9zKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDM+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEs
IFQyLCBUMz4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3Mp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQ+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQy
LCBUMywgVDQ+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQsIG9z
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLXZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIx
Ojp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+JiB0LAotICAgICAgICAgICAgIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgICAgICAgIHR5cGVuYW1lIFQ2Pgotdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+JiB0LAotICAgICAgICAgICAgIDo6c3RkOjpv
c3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLXZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4mIHQsCi0g
ICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VHVwbGVUbyh0LCBvcyk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOD4KLXZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+JiB0LAotICAgICAgICAgICAgIDo6c3RkOjpv
c3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5Pgotdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiB0LAotICAgICAgICAgICAgIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci12b2lkIFByaW50VG8oCi0gICAgY29uc3QgOjpzdGQ6OnRy
MTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiYgdCwKLSAg
ICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKLX0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQotCi0jaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KLXRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4KLXZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHVw
bGU8VHlwZXMuLi4+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQs
IG9zKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotLy8gT3ZlcmxvYWQg
Zm9yIHN0ZDo6cGFpci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci12b2lk
IFByaW50VG8oY29uc3QgOjpzdGQ6OnBhaXI8VDEsIFQyPiYgdmFsdWUsIDo6c3RkOjpvc3RyZWFt
KiBvcykgewotICAqb3MgPDwgJygnOwotICAvLyBXZSBjYW5ub3QgdXNlIFVuaXZlcnNhbFByaW50
KHZhbHVlLmZpcnN0LCBvcykgaGVyZSwgYXMgVDEgbWF5IGJlCi0gIC8vIGEgcmVmZXJlbmNlIHR5
cGUuICBUaGUgc2FtZSBmb3IgcHJpbnRpbmcgdmFsdWUuc2Vjb25kLgotICBVbml2ZXJzYWxQcmlu
dGVyPFQxPjo6UHJpbnQodmFsdWUuZmlyc3QsIG9zKTsKLSAgKm9zIDw8ICIsICI7Ci0gIFVuaXZl
cnNhbFByaW50ZXI8VDI+OjpQcmludCh2YWx1ZS5zZWNvbmQsIG9zKTsKLSAgKm9zIDw8ICcpJzsK
LX0KLQotLy8gSW1wbGVtZW50cyBwcmludGluZyBhIG5vbi1yZWZlcmVuY2UgdHlwZSBUIGJ5IGxl
dHRpbmcgdGhlIGNvbXBpbGVyCi0vLyBwaWNrIHRoZSByaWdodCBvdmVybG9hZCBvZiBQcmludFRv
KCkgZm9yIFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVuaXZlcnNhbFByaW50ZXIg
ewotIHB1YmxpYzoKLSAgLy8gTVNWQyB3YXJucyBhYm91dCBhZGRpbmcgY29uc3QgdG8gYSBmdW5j
dGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRvCi0gIC8vIGRpc2FibGUgdGhlIHdhcm5pbmcuCi0gIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxODApCi0KLSAgLy8gTm90ZTogd2UgZGVs
aWJlcmF0ZWx5IGRvbid0IGNhbGwgdGhpcyBQcmludFRvKCksIGFzIHRoYXQgbmFtZQotICAvLyBj
b25mbGljdHMgd2l0aCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRvIGluIHRoZSBib2R5IG9m
IHRoZQotICAvLyBmdW5jdGlvbi4KLSAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCYgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAgIC8vIEJ5IGRlZmF1bHQsIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlByaW50VG8oKSBpcyB1c2VkIGZvciBwcmludGluZwotICAgIC8vIHRoZSB2YWx1ZS4K
LSAgICAvLwotICAgIC8vIFRoYW5rcyB0byBLb2VuaWcgbG9vay11cCwgaWYgVCBpcyBhIGNsYXNz
IGFuZCBoYXMgaXRzIG93bgotICAgIC8vIFByaW50VG8oKSBmdW5jdGlvbiBkZWZpbmVkIGluIGl0
cyBuYW1lc3BhY2UsIHRoYXQgZnVuY3Rpb24gd2lsbAotICAgIC8vIGJlIHZpc2libGUgaGVyZS4g
IFNpbmNlIGl0IGlzIG1vcmUgc3BlY2lmaWMgdGhhbiB0aGUgZ2VuZXJpYyBvbmVzCi0gICAgLy8g
aW4gOjp0ZXN0aW5nOjppbnRlcm5hbCwgaXQgd2lsbCBiZSBwaWNrZWQgYnkgdGhlIGNvbXBpbGVy
IGluIHRoZQotICAgIC8vIGZvbGxvd2luZyBzdGF0ZW1lbnQgLSBleGFjdGx5IHdoYXQgd2Ugd2Fu
dC4KLSAgICBQcmludFRvKHZhbHVlLCBvcyk7Ci0gIH0KLQotICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QT1BfKCkKLX07Ci0KLS8vIFVuaXZlcnNhbFByaW50QXJyYXkoYmVnaW4sIGxlbiwg
b3MpIHByaW50cyBhbiBhcnJheSBvZiAnbGVuJwotLy8gZWxlbWVudHMsIHN0YXJ0aW5nIGF0IGFk
ZHJlc3MgJ2JlZ2luJy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVbml2ZXJzYWxQcmlu
dEFycmF5KGNvbnN0IFQqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
LSAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgKm9zIDw8ICJ7fSI7Ci0gIH0gZWxzZSB7Ci0gICAgKm9z
IDw8ICJ7ICI7Ci0gICAgY29uc3Qgc2l6ZV90IGtUaHJlc2hvbGQgPSAxODsKLSAgICBjb25zdCBz
aXplX3Qga0NodW5rU2l6ZSA9IDg7Ci0gICAgLy8gSWYgdGhlIGFycmF5IGhhcyBtb3JlIHRoYW4g
a1RocmVzaG9sZCBlbGVtZW50cywgd2UnbGwgaGF2ZSB0bwotICAgIC8vIG9taXQgc29tZSBkZXRh
aWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdAotICAgIC8vIGtDaHVu
a1NpemUgZWxlbWVudHMuCi0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGxldCB0aGUgdXNl
ciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgotICAgIGlmIChsZW4gPD0ga1Ro
cmVzaG9sZCkgewotICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBsZW4sIG9zKTsKLSAgICB9
IGVsc2UgewotICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBrQ2h1bmtTaXplLCBvcyk7Ci0g
ICAgICAqb3MgPDwgIiwgLi4uLCAiOwotICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luICsgbGVu
IC0ga0NodW5rU2l6ZSwga0NodW5rU2l6ZSwgb3MpOwotICAgIH0KLSAgICAqb3MgPDwgIiB9IjsK
LSAgfQotfQotLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29uc3QpIGNoYXIgYXJyYXkgY29t
cGFjdGx5LgotR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFByaW50QXJyYXkoCi0gICAgY29uc3Qg
Y2hhciogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci0KLS8vIFRoaXMg
b3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IGNvbXBhY3RseS4KLUdURVNU
X0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAotICAgIGNvbnN0IHdjaGFyX3QqIGJlZ2lu
LCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotCi0vLyBJbXBsZW1lbnRzIHByaW50
aW5nIGFuIGFycmF5IHR5cGUgVFtOXS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4K
LWNsYXNzIFVuaXZlcnNhbFByaW50ZXI8VFtOXT4gewotIHB1YmxpYzoKLSAgLy8gUHJpbnRzIHRo
ZSBnaXZlbiBhcnJheSwgb21pdHRpbmcgc29tZSBlbGVtZW50cyB3aGVuIHRoZXJlIGFyZSB0b28K
LSAgLy8gbWFueS4KLSAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAoJmEpW05dLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKLSAgICBVbml2ZXJzYWxQcmludEFycmF5KGEsIE4sIG9zKTsKLSAgfQot
fTsKLQotLy8gSW1wbGVtZW50cyBwcmludGluZyBhIHJlZmVyZW5jZSB0eXBlIFQmLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVbml2ZXJzYWxQcmludGVyPFQmPiB7Ci0gcHVibGljOgot
ICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBjb25zdCB0byBhIGZ1bmN0aW9uIHR5cGUsIHNv
IHdlIHdhbnQgdG8KLSAgLy8gZGlzYWJsZSB0aGUgd2FybmluZy4KLSAgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKLQotICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBUJiB2
YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgLy8gUHJpbnRzIHRoZSBhZGRyZXNzIG9m
IHRoZSB2YWx1ZS4gIFdlIHVzZSByZWludGVycHJldF9jYXN0IGhlcmUKLSAgICAvLyBhcyBzdGF0
aWNfY2FzdCBkb2Vzbid0IGNvbXBpbGUgd2hlbiBUIGlzIGEgZnVuY3Rpb24gdHlwZS4KLSAgICAq
b3MgPDwgIkAiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZ2YWx1ZSkgPDwgIiAi
OwotCi0gICAgLy8gVGhlbiBwcmludHMgdGhlIHZhbHVlIGl0c2VsZi4KLSAgICBVbml2ZXJzYWxQ
cmludCh2YWx1ZSwgb3MpOwotICB9Ci0KLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9Q
XygpCi19OwotCi0vLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3IgYSByZWZlcmVuY2UgdHlw
ZSwgdGhlIHJlZmVyZW5jZWQgdmFsdWUKLS8vIChidXQgbm90IHRoZSBhZGRyZXNzKSBpcyBwcmlu
dGVkOyBmb3IgYSAoY29uc3QpIGNoYXIgcG9pbnRlciwgdGhlCi0vLyBOVUwtdGVybWluYXRlZCBz
dHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzIHByaW50ZWQuCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyIHsKLSBwdWJsaWM6Ci0gIHN0YXRp
YyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICBV
bml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOwotICB9Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VCY+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2
b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICBVbml2
ZXJzYWxQcmludCh2YWx1ZSwgb3MpOwotICB9Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNp
emVfdCBOPgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPFRbTl0+IHsKLSBwdWJsaWM6Ci0g
IHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZ2YWx1ZSlbTl0sIDo6c3RkOjpvc3RyZWFtKiBv
cykgewotICAgIFVuaXZlcnNhbFByaW50ZXI8VFtOXT46OlByaW50KHZhbHVlLCBvcyk7Ci0gIH0K
LX07Ci10ZW1wbGF0ZSA8PgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IGNoYXIq
PiB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBjaGFyKiBzdHIsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgewotICAgIGlmIChzdHIgPT0gTlVMTCkgewotICAgICAgKm9zIDw8ICJO
VUxMIjsKLSAgICB9IGVsc2UgewotICAgICAgVW5pdmVyc2FsUHJpbnQoc3RkOjpzdHJpbmcoc3Ry
KSwgb3MpOwotICAgIH0KLSAgfQotfTsKLXRlbXBsYXRlIDw+Ci1jbGFzcyBVbml2ZXJzYWxUZXJz
ZVByaW50ZXI8Y2hhcio+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNoYXIqIHN0
ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0
IGNoYXIqPjo6UHJpbnQoc3RyLCBvcyk7Ci0gIH0KLX07Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKLXRlbXBsYXRlIDw+Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y29uc3Qgd2No
YXJfdCo+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IHdjaGFyX3QqIHN0
ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKSB7Ci0gICAgICAq
b3MgPDwgIk5VTEwiOwotICAgIH0gZWxzZSB7Ci0gICAgICBVbml2ZXJzYWxQcmludCg6OnN0ZDo6
d3N0cmluZyhzdHIpLCBvcyk7Ci0gICAgfQotICB9Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDw+
Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8d2NoYXJfdCo+IHsKLSBwdWJsaWM6Ci0gIHN0
YXRpYyB2b2lkIFByaW50KHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAg
VW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IHdjaGFyX3QqPjo6UHJpbnQoc3RyLCBvcyk7Ci0g
IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVbml2ZXJzYWxUZXJzZVByaW50
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgVW5pdmVyc2FsVGVyc2VQ
cmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3MpOwotfQotCi0vLyBQcmludHMgYSB2YWx1ZSB1c2lu
ZyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBUaGUKLS8vIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0aGlzIGFuZCBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMgdGhhdCBmb3IgYQotLy8g
KGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoaXMgcHJpbnRzIGJvdGggdGhlIHBvaW50ZXIgYW5kIHRo
ZQotLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lk
IFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
Ly8gQSB3b3JrYXJvbmQgZm9yIHRoZSBidWcgaW4gVkMrKyA3LjEgdGhhdCBwcmV2ZW50cyB1cyBm
cm9tIGluc3RhbnRpYXRpbmcKLSAgLy8gVW5pdmVyc2FsUHJpbnRlciB3aXRoIFQgZGlyZWN0bHku
Ci0gIHR5cGVkZWYgVCBUMTsKLSAgVW5pdmVyc2FsUHJpbnRlcjxUMT46OlByaW50KHZhbHVlLCBv
cyk7Ci19Ci0KLXR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdHJpbmc+IFN0cmluZ3M7Ci0KLS8vIFR1
cGxlUG9saWN5PFR1cGxlVD4gbXVzdCBwcm92aWRlOgotLy8gLSB0dXBsZV9zaXplCi0vLyAgICAg
c2l6ZSBvZiB0dXBsZSBUdXBsZVQuCi0vLyAtIGdldDxzaXplX3QgST4oY29uc3QgVHVwbGVUJiB0
KQotLy8gICAgIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0aW5nIGVsZW1lbnQgSSBvZiB0dXBsZSBU
dXBsZVQuCi0vLyAtIHR1cGxlX2VsZW1lbnQ8c2l6ZV90IEk+Ojp0eXBlCi0vLyAgICAgdHlwZSBv
ZiBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlVD4K
LXN0cnVjdCBUdXBsZVBvbGljeTsKLQotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUdXBsZVQ+Ci1zdHJ1Y3QgVHVwbGVQb2xpY3kgewotICB0eXBlZGVmIFR1cGxl
VCBUdXBsZTsKLSAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9zaXplID0gOjpzdGQ6OnRyMTo6
dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlOwotCi0gIHRlbXBsYXRlIDxzaXplX3QgST4KLSAgc3Ry
dWN0IHR1cGxlX2VsZW1lbnQgOiA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPiB7
fTsKLQotICB0ZW1wbGF0ZSA8c2l6ZV90IEk+Ci0gIHN0YXRpYyB0eXBlbmFtZSBBZGRSZWZlcmVu
Y2U8Ci0gICAgICBjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVtZW50PEksIFR1
cGxlPjo6dHlwZT46OnR5cGUgZ2V0KAotICAgICAgY29uc3QgVHVwbGUmIHR1cGxlKSB7Ci0gICAg
cmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7Ci0gIH0KLX07Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGVUPgotY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PFR1cGxlVD46OnR1cGxlX3Np
emU7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKLQotI2lmIEdURVNUX0hBU19TVERf
VFVQTEVfCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Ci1zdHJ1Y3QgVHVwbGVQb2xpY3k8
IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnR1cGxlPFR5cGVz
Li4uPiBUdXBsZTsKLSAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9zaXplID0gOjpzdGQ6OnR1
cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKLQotICB0ZW1wbGF0ZSA8c2l6ZV90IEk+Ci0gIHN0cnVj
dCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgVHVwbGU+IHt9OwotCi0g
IHRlbXBsYXRlIDxzaXplX3QgST4KLSAgc3RhdGljIGNvbnN0IHR5cGVuYW1lIDo6c3RkOjp0dXBs
ZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAotICAgICAgY29uc3QgVHVwbGUmIHR1cGxl
KSB7Ci0gICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVwbGUpOwotICB9Ci19OwotdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIFR5cGVzPgotY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PCA6OnN0ZDo6dHVw
bGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFVQ
TEVfCi0KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERfVFVQTEVfCi0v
LyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJpbnRUbygpIGZvciB0dXBsZXMgYW5kCi0v
LyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoKSB0byBiZSBkZWZpbmVk
IGJ5Ci0vLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBvZiB0dXBsZSBmaWVsZHMuICBUaGUgaWRl
YSBpcyB0aGF0Ci0vLyBUdXBsZVByZWZpeFByaW50ZXI8Tj46OlByaW50UHJlZml4VG8odCwgb3Mp
IHByaW50cyB0aGUgZmlyc3QgTgotLy8gZmllbGRzIGluIHR1cGxlIHQsIGFuZCBjYW4gYmUgZGVm
aW5lZCBpbiB0ZXJtcyBvZgotLy8gVHVwbGVQcmVmaXhQcmludGVyPE4gLSAxPi4KLS8vCi0vLyBU
aGUgaW5kdWN0aXZlIGNhc2UuCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1zdHJ1Y3QgVHVwbGVQcmVm
aXhQcmludGVyIHsKLSAgLy8gUHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlLgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIHN0YXRpYyB2b2lkIFByaW50UHJlZml4VG8o
Y29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAgIFR1cGxlUHJlZml4UHJp
bnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3MpOwotICAgIEdURVNUX0lOVEVOVElPTkFM
X0NPTlNUX0NPTkRfUFVTSF8oKQotICAgIGlmIChOID4gMSkgewotICAgIEdURVNUX0lOVEVOVElP
TkFMX0NPTlNUX0NPTkRfUE9QXygpCi0gICAgICAqb3MgPDwgIiwgIjsKLSAgICB9Ci0gICAgVW5p
dmVyc2FsUHJpbnRlcjwKLSAgICAgICAgdHlwZW5hbWUgVHVwbGVQb2xpY3k8VHVwbGU+Ojp0ZW1w
bGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4KLSAgICAgICAgOjpQcmludChUdXBsZVBv
bGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksIG9zKTsKLSAgfQotCi0gIC8vIFRl
cnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxlIHRvIGEgc3RyaW5nIHZl
Y3RvciwKLSAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4KLSAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyhjb25z
dCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgewotICAgIFR1cGxlUHJlZml4UHJpbnRlcjxO
IC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModCwgc3RyaW5ncyk7Ci0gICAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKLSAgICBVbml2ZXJzYWxUZXJzZVByaW50KFR1cGxlUG9saWN5PFR1
cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNzKTsKLSAgICBzdHJpbmdzLT5wdXNoX2Jh
Y2soc3Muc3RyKCkpOwotICB9Ci19OwotCi0vLyBCYXNlIGNhc2UuCi10ZW1wbGF0ZSA8Pgotc3Ry
dWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4K
LSAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYsIDo6c3RkOjpvc3RyZWFt
Kikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIHN0YXRpYyB2b2lkIFRlcnNl
UHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmLCBTdHJpbmdzKikge30KLX07Ci0KLS8v
IEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4KLS8vIFR1cGxlIG11c3QgYmUg
ZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1cGxlIHR5cGUuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHVwbGU+Ci12b2lkIFByaW50VHVwbGVUbyhjb25zdCBUdXBsZSYgdCwgOjpzdGQ6Om9z
dHJlYW0qIG9zKSB7Ci0gICpvcyA8PCAiKCI7Ci0gIFR1cGxlUHJlZml4UHJpbnRlcjxUdXBsZVBv
bGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFByZWZpeFRvKHQsIG9zKTsKLSAgKm9zIDw8
ICIpIjsKLX0KLQotLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBsZSB0ZXJzZWx5IHRvIGEg
c3RyaW5nIHZlY3Rvciwgb25lCi0vLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiAgU2VlIHRoZSBj
b21tZW50IGJlZm9yZQotLy8gVW5pdmVyc2FsVGVyc2VQcmludCgpIGZvciBob3cgd2UgZGVmaW5l
ICJ0ZXJzZWx5Ii4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KLVN0cmluZ3MgVW5pdmVyc2Fs
VGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNvbnN0IFR1cGxlJiB2YWx1ZSkgewotICBT
dHJpbmdzIHJlc3VsdDsKLSAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxlUG9saWN5PFR1cGxlPjo6
dHVwbGVfc2l6ZT46OgotICAgICAgVGVyc2VQcmludFByZWZpeFRvU3RyaW5ncyh2YWx1ZSwgJnJl
c3VsdCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQ
TEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotOjpzdGQ6OnN0cmluZyBQcmludFRvU3RyaW5nKGNvbnN0
IFQmIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIGludGVybmFsOjpVbml2
ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOwotICByZXR1cm4gc3Muc3Ry
KCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8vIEluY2x1ZGUgYW55IGN1c3Rv
bSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24uCi0vLyBXZSBtdXN0IGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUgaXQgY2FuIHVzZSB0aGUK
LS8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dU
RVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1YzEwY2Y3Y2Q3ZDk3Y2VmNDIwNzc3ZWU2
NGZmNTZlYzU5NjYzMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjMxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwot
Ly8gVXRpbGl0aWVzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZiBhbmQgY29kZSB0aGF0
IHVzZXMgR29vZ2xlIFRlc3QKLS8vIChlLmcuIGZyYW1ld29ya3MgYnVpbHQgb24gdG9wIG9mIEdv
b2dsZSBUZXN0KS4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwot
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1NQSV9IXwotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUaGlzIGhlbHBlciBjbGFz
cyBjYW4gYmUgdXNlZCB0byBtb2NrIG91dCBHb29nbGUgVGVzdCBmYWlsdXJlIHJlcG9ydGluZwot
Ly8gc28gdGhhdCB3ZSBjYW4gdGVzdCBHb29nbGUgVGVzdCBvciBjb2RlIHRoYXQgYnVpbGRzIG9u
IEdvb2dsZSBUZXN0LgotLy8KLS8vIEFuIG9iamVjdCBvZiB0aGlzIGNsYXNzIGFwcGVuZHMgYSBU
ZXN0UGFydFJlc3VsdCBvYmplY3QgdG8gdGhlCi0vLyBUZXN0UGFydFJlc3VsdEFycmF5IG9iamVj
dCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3Igd2hlbmV2ZXIgYSBHb29nbGUgVGVzdAotLy8gZmFp
bHVyZSBpcyByZXBvcnRlZC4gSXQgY2FuIGVpdGhlciBpbnRlcmNlcHQgb25seSBmYWlsdXJlcyB0
aGF0IGFyZQotLy8gZ2VuZXJhdGVkIGluIHRoZSBzYW1lIHRocmVhZCB0aGF0IGNyZWF0ZWQgdGhp
cyBvYmplY3Qgb3IgaXQgY2FuIGludGVyY2VwdAotLy8gYWxsIGdlbmVyYXRlZCBmYWlsdXJlcy4g
VGhlIHNjb3BlIG9mIHRoaXMgbW9jayBvYmplY3QgY2FuIGJlIGNvbnRyb2xsZWQgd2l0aAotLy8g
dGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgdHdvIGFyZ3VtZW50cyBjb25zdHJ1Y3Rvci4KLWNs
YXNzIEdURVNUX0FQSV8gU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKLSAgICA6IHB1
YmxpYyBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFRo
ZSB0d28gcG9zc2libGUgbW9ja2luZyBtb2RlcyBvZiB0aGlzIG9iamVjdC4KLSAgZW51bSBJbnRl
cmNlcHRNb2RlIHsKLSAgICBJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCwgIC8vIEludGVy
Y2VwdHMgb25seSB0aHJlYWQgbG9jYWwgZmFpbHVyZXMuCi0gICAgSU5URVJDRVBUX0FMTF9USFJF
QURTICAgICAgICAgICAvLyBJbnRlcmNlcHRzIGFsbCBmYWlsdXJlcy4KLSAgfTsKLQotICAvLyBU
aGUgYyd0b3Igc2V0cyB0aGlzIG9iamVjdCBhcyB0aGUgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRl
ciB1c2VkCi0gIC8vIGJ5IEdvb2dsZSBUZXN0LiAgVGhlICdyZXN1bHQnIHBhcmFtZXRlciBzcGVj
aWZpZXMgd2hlcmUgdG8gcmVwb3J0IHRoZQotICAvLyByZXN1bHRzLiBUaGlzIHJlcG9ydGVyIHdp
bGwgb25seSBjYXRjaCBmYWlsdXJlcyBnZW5lcmF0ZWQgaW4gdGhlIGN1cnJlbnQKLSAgLy8gdGhy
ZWFkLiBERVBSRUNBVEVECi0gIGV4cGxpY2l0IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9y
dGVyKFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdCk7Ci0KLSAgLy8gU2FtZSBhcyBhYm92ZSwg
YnV0IHlvdSBjYW4gY2hvb3NlIHRoZSBpbnRlcmNlcHRpb24gc2NvcGUgb2YgdGhpcyBvYmplY3Qu
Ci0gIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyKEludGVyY2VwdE1vZGUgaW50ZXJj
ZXB0X21vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVz
dWx0QXJyYXkqIHJlc3VsdCk7Ci0KLSAgLy8gVGhlIGQndG9yIHJlc3RvcmVzIHRoZSBwcmV2aW91
cyB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyLgotICB2aXJ0dWFsIH5TY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlcigpOwotCi0gIC8vIEFwcGVuZHMgdGhlIFRlc3RQYXJ0UmVzdWx0IG9i
amVjdCB0byB0aGUgVGVzdFBhcnRSZXN1bHRBcnJheQotICAvLyByZWNlaXZlZCBpbiB0aGUgY29u
c3RydWN0b3IuCi0gIC8vCi0gIC8vIFRoaXMgbWV0aG9kIGlzIGZyb20gdGhlIFRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJJbnRlcmZhY2UKLSAgLy8gaW50ZXJmYWNlLgotICB2aXJ0dWFsIHZvaWQgUmVw
b3J0VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7Ci0gcHJpdmF0
ZToKLSAgdm9pZCBJbml0KCk7Ci0KLSAgY29uc3QgSW50ZXJjZXB0TW9kZSBpbnRlcmNlcHRfbW9k
ZV87Ci0gIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIG9sZF9yZXBvcnRlcl87Ci0g
IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIGNvbnN0IHJlc3VsdF87Ci0KLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcik7Ci19Owot
Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBIGhlbHBlciBjbGFzcyBmb3IgaW1wbGVtZW50
aW5nIEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgYW5kCi0vLyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgpLiAgSXRzIGRlc3RydWN0b3IgdmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4KLS8vIFRlc3RQYXJ0
UmVzdWx0QXJyYXkgY29udGFpbnMgZXhhY3RseSBvbmUgZmFpbHVyZSB0aGF0IGhhcyB0aGUgZ2l2
ZW4KLS8vIHR5cGUgYW5kIGNvbnRhaW5zIHRoZSBnaXZlbiBzdWJzdHJpbmcuICBJZiB0aGF0J3Mg
bm90IHRoZSBjYXNlLCBhCi0vLyBub24tZmF0YWwgZmFpbHVyZSB3aWxsIGJlIGdlbmVyYXRlZC4K
LWNsYXNzIEdURVNUX0FQSV8gU2luZ2xlRmFpbHVyZUNoZWNrZXIgewotIHB1YmxpYzoKLSAgLy8g
VGhlIGNvbnN0cnVjdG9yIHJlbWVtYmVycyB0aGUgYXJndW1lbnRzLgotICBTaW5nbGVGYWlsdXJl
Q2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAotICAgICAgICAgICAg
ICAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYg
c3Vic3RyKTsKLSAgflNpbmdsZUZhaWx1cmVDaGVja2VyKCk7Ci0gcHJpdmF0ZToKLSAgY29uc3Qg
VGVzdFBhcnRSZXN1bHRBcnJheSogY29uc3QgcmVzdWx0c187Ci0gIGNvbnN0IFRlc3RQYXJ0UmVz
dWx0OjpUeXBlIHR5cGVfOwotICBjb25zdCBzdGQ6OnN0cmluZyBzdWJzdHJfOwotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2luZ2xlRmFpbHVyZUNoZWNrZXIpOwotfTsKLQot
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8v
IEEgc2V0IG9mIG1hY3JvcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBhc3NlcnRpb25zIG9yIGNv
ZGUgdGhhdCdzIGV4cGVjdGVkCi0vLyB0byBnZW5lcmF0ZSBHb29nbGUgVGVzdCBmYXRhbCBmYWls
dXJlcy4gIEl0IHZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuCi0vLyBzdGF0ZW1lbnQgd2lsbCBjYXVz
ZSBleGFjdGx5IG9uZSBmYXRhbCBHb29nbGUgVGVzdCBmYWlsdXJlIHdpdGggJ3N1YnN0cicKLS8v
IGJlaW5nIHBhcnQgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZS4KLS8vCi0vLyBUaGVyZSBhcmUgdHdv
IGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGlzIG1hY3JvLiBFWFBFQ1RfRkFUQUxfRkFJTFVSRSBv
bmx5Ci0vLyBhZmZlY3RzIGFuZCBjb25zaWRlcnMgZmFpbHVyZXMgZ2VuZXJhdGVkIGluIHRoZSBj
dXJyZW50IHRocmVhZCBhbmQKLS8vIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURT
IGRvZXMgdGhlIHNhbWUgYnV0IGZvciBhbGwgdGhyZWFkcy4KLS8vCi0vLyBUaGUgdmVyaWZpY2F0
aW9uIG9mIHRoZSBhc3NlcnRpb24gaXMgZG9uZSBjb3JyZWN0bHkgZXZlbiB3aGVuIHRoZSBzdGF0
ZW1lbnQKLS8vIHRocm93cyBhbiBleGNlcHRpb24gb3IgYWJvcnRzIHRoZSBjdXJyZW50IGZ1bmN0
aW9uLgotLy8KLS8vIEtub3duIHJlc3RyaWN0aW9uczoKLS8vICAgLSAnc3RhdGVtZW50JyBjYW5u
b3QgcmVmZXJlbmNlIGxvY2FsIG5vbi1zdGF0aWMgdmFyaWFibGVzIG9yCi0vLyAgICAgbm9uLXN0
YXRpYyBtZW1iZXJzIG9mIHRoZSBjdXJyZW50IG9iamVjdC4KLS8vICAgLSAnc3RhdGVtZW50JyBj
YW5ub3QgcmV0dXJuIGEgdmFsdWUuCi0vLyAgIC0gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJl
IG1lc3NhZ2UgdG8gdGhpcyBtYWNyby4KLS8vCi0vLyBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggdGhl
IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZm9sbG93aW5nIHR3bwotLy8gbWFjcm9zIGFyZSBtdWNo
IGFsaWtlLCB3ZSBjYW5ub3QgcmVmYWN0b3IgdGhlbSB0byB1c2UgYSBjb21tb24KLS8vIGhlbHBl
ciBtYWNybywgZHVlIHRvIHNvbWUgcGVjdWxpYXJpdHkgaW4gaG93IHRoZSBwcmVwcm9jZXNzb3IK
LS8vIHdvcmtzLiAgVGhlIEFjY2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9VbnByb3RlY3RlZENvbW1h
IHRlc3QgaW4KLS8vIGd0ZXN0X3VuaXR0ZXN0LmNjIHdpbGwgZmFpbCB0byBjb21waWxlIGlmIHdl
IGRvIHRoYXQuCi0jZGVmaW5lIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vic3Ry
KSBcCi0gIGRvIHsgXAotICAgIGNsYXNzIEdUZXN0RXhwZWN0RmF0YWxGYWlsdXJlSGVscGVyIHtc
Ci0gICAgIHB1YmxpYzpcCi0gICAgICBzdGF0aWMgdm9pZCBFeGVjdXRlKCkgeyBzdGF0ZW1lbnQ7
IH1cCi0gICAgfTtcCi0gICAgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2Zh
aWx1cmVzO1wKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpTaW5nbGVGYWlsdXJlQ2hlY2tlciBn
dGVzdF9jaGVja2VyKFwKLSAgICAgICAgJmd0ZXN0X2ZhaWx1cmVzLCA6OnRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAoc3Vic3RyKSk7XAotICAgIHtcCi0gICAgICA6OnRl
c3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwK
LSAgICAgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjog
XAotICAgICAgICAgIElOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELCAmZ3Rlc3RfZmFpbHVy
ZXMpO1wKLSAgICAgIEdUZXN0RXhwZWN0RmF0YWxGYWlsdXJlSGVscGVyOjpFeGVjdXRlKCk7XAot
ICAgIH1cCi0gIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCi0K
LSNkZWZpbmUgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBz
dWJzdHIpIFwKLSAgZG8geyBcCi0gICAgY2xhc3MgR1Rlc3RFeHBlY3RGYXRhbEZhaWx1cmVIZWxw
ZXIge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHN0YXRpYyB2b2lkIEV4ZWN1dGUoKSB7IHN0YXRl
bWVudDsgfVwKLSAgICB9O1wKLSAgICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXkgZ3Rl
c3RfZmFpbHVyZXM7XAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNpbmdsZUZhaWx1cmVDaGVj
a2VyIGd0ZXN0X2NoZWNrZXIoXAotICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMsIDo6dGVzdGluZzo6
VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIChzdWJzdHIpKTtcCi0gICAge1wKLSAgICAg
IDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0
ZXIoXAotICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXI6OiBcCi0gICAgICAgICAgSU5URVJDRVBUX0FMTF9USFJFQURTLCAmZ3Rlc3RfZmFpbHVyZXMp
O1wKLSAgICAgIEdUZXN0RXhwZWN0RmF0YWxGYWlsdXJlSGVscGVyOjpFeGVjdXRlKCk7XAotICAg
IH1cCi0gIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCi0KLS8v
IEEgbWFjcm8gZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBvciBjb2RlIHRoYXQn
cyBleHBlY3RlZCB0bwotLy8gZ2VuZXJhdGUgR29vZ2xlIFRlc3Qgbm9uLWZhdGFsIGZhaWx1cmVz
LiAgSXQgYXNzZXJ0cyB0aGF0IHRoZSBnaXZlbgotLy8gc3RhdGVtZW50IHdpbGwgY2F1c2UgZXhh
Y3RseSBvbmUgbm9uLWZhdGFsIEdvb2dsZSBUZXN0IGZhaWx1cmUgd2l0aCAnc3Vic3RyJwotLy8g
YmVpbmcgcGFydCBvZiB0aGUgZmFpbHVyZSBtZXNzYWdlLgotLy8KLS8vIFRoZXJlIGFyZSB0d28g
ZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoaXMgbWFjcm8uIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
IG9ubHkKLS8vIGFmZmVjdHMgYW5kIGNvbnNpZGVycyBmYWlsdXJlcyBnZW5lcmF0ZWQgaW4gdGhl
IGN1cnJlbnQgdGhyZWFkIGFuZAotLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMgZG9lcyB0aGUgc2FtZSBidXQgZm9yIGFsbCB0aHJlYWRzLgotLy8KLS8vICdzdGF0ZW1l
bnQnIGlzIGFsbG93ZWQgdG8gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBhbmQgbWVtYmVycyBv
ZgotLy8gdGhlIGN1cnJlbnQgb2JqZWN0LgotLy8KLS8vIFRoZSB2ZXJpZmljYXRpb24gb2YgdGhl
IGFzc2VydGlvbiBpcyBkb25lIGNvcnJlY3RseSBldmVuIHdoZW4gdGhlIHN0YXRlbWVudAotLy8g
dGhyb3dzIGFuIGV4Y2VwdGlvbiBvciBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0vLwot
Ly8gS25vd24gcmVzdHJpY3Rpb25zOgotLy8gICAtIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVy
ZSBtZXNzYWdlIHRvIHRoaXMgbWFjcm8uCi0vLwotLy8gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIHRo
ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZvbGxvd2luZyB0d28KLS8vIG1hY3JvcyBhcmUgbXVj
aCBhbGlrZSwgd2UgY2Fubm90IHJlZmFjdG9yIHRoZW0gdG8gdXNlIGEgY29tbW9uCi0vLyBoZWxw
ZXIgbWFjcm8sIGR1ZSB0byBzb21lIHBlY3VsaWFyaXR5IGluIGhvdyB0aGUgcHJlcHJvY2Vzc29y
Ci0vLyB3b3Jrcy4gIElmIHdlIGRvIHRoYXQsIHRoZSBjb2RlIHdvbid0IGNvbXBpbGUgd2hlbiB0
aGUgdXNlciBnaXZlcwotLy8gRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBhIHN0YXRlbWVudCB0
aGF0IGNvbnRhaW5zIGEgbWFjcm8gdGhhdAotLy8gZXhwYW5kcyB0byBjb2RlIGNvbnRhaW5pbmcg
YW4gdW5wcm90ZWN0ZWQgY29tbWEuICBUaGUKLS8vIEFjY2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9V
bnByb3RlY3RlZENvbW1hIHRlc3QgaW4gZ3Rlc3RfdW5pdHRlc3QuY2MKLS8vIGNhdGNoZXMgdGhh
dC4KLS8vCi0vLyBGb3IgdGhlIHNhbWUgcmVhc29uLCB3ZSBoYXZlIHRvIHdyaXRlCi0vLyAgIGlm
ICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9Ci0vLyBp
bnN0ZWFkIG9mCi0vLyAgIEdURVNUX1NVUFBSRVNTX1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19C
RUxPV18oc3RhdGVtZW50KQotLy8gdG8gYXZvaWQgYW4gTVNWQyB3YXJuaW5nIG9uIHVucmVhY2hh
YmxlIGNvZGUuCi0jZGVmaW5lIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCwgc3Vi
c3RyKSBcCi0gIGRvIHtcCi0gICAgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0
X2ZhaWx1cmVzO1wKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpTaW5nbGVGYWlsdXJlQ2hlY2tl
ciBndGVzdF9jaGVja2VyKFwKLSAgICAgICAgJmd0ZXN0X2ZhaWx1cmVzLCA6OnRlc3Rpbmc6OlRl
c3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxGYWlsdXJlLCBcCi0gICAgICAgIChzdWJzdHIpKTtcCi0g
ICAge1wKLSAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIg
Z3Rlc3RfcmVwb3J0ZXIoXAotICAgICAgICAgIDo6dGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXI6OiBcCi0gICAgICAgICAgSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9USFJF
QUQsICZndGVzdF9mYWlsdXJlcyk7XAotICAgICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFs
d2F5c1RydWUoKSkgeyBzdGF0ZW1lbnQ7IH1cCi0gICAgfVwKLSAgfSB3aGlsZSAoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKLQotI2RlZmluZSBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRV9PTl9BTExfVEhSRUFEUyhzdGF0ZW1lbnQsIHN1YnN0cikgXAotICBkbyB7XAotICAgIDo6
dGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheSBndGVzdF9mYWlsdXJlcztcCi0gICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6U2luZ2xlRmFpbHVyZUNoZWNrZXIgZ3Rlc3RfY2hlY2tlcihcCi0gICAg
ICAgICZndGVzdF9mYWlsdXJlcywgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFs
RmFpbHVyZSwgXAotICAgICAgICAoc3Vic3RyKSk7XAotICAgIHtcCi0gICAgICA6OnRlc3Rpbmc6
OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwKLSAgICAg
ICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNF
UFRfQUxMX1RIUkVBRFMsIFwKLSAgICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMpO1wKLSAgICAgIGlm
ICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAotICAg
IH1cCi0gIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9TUElfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3N2ViODQ0ODM5ZDg5MjdhMjkzZDI1NzA0ZGY5YjE3MDdhNDI3M2E1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCi0KLSNpZm5kZWYgR1RFU1Rf
SU5DTFVERV9HVEVTVF9HVEVTVF9URVNUX1BBUlRfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9URVNUX1BBUlRfSF8KLQotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDx2
ZWN0b3I+Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLSNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKLQotbmFtZXNwYWNlIHRlc3Rpbmcg
ewotCi0vLyBBIGNvcHlhYmxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHRl
c3QgcGFydCAoaS5lLiBhbgotLy8gYXNzZXJ0aW9uIG9yIGFuIGV4cGxpY2l0IEZBSUwoKSwgQURE
X0ZBSUxVUkUoKSwgb3IgU1VDQ0VTUygpKS4KLS8vCi0vLyBEb24ndCBpbmhlcml0IGZyb20gVGVz
dFBhcnRSZXN1bHQgYXMgaXRzIGRlc3RydWN0b3IgaXMgbm90IHZpcnR1YWwuCi1jbGFzcyBHVEVT
VF9BUElfIFRlc3RQYXJ0UmVzdWx0IHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBwb3NzaWJsZSBvdXRj
b21lcyBvZiBhIHRlc3QgcGFydCAoaS5lLiBhbiBhc3NlcnRpb24gb3IgYW4KLSAgLy8gZXhwbGlj
aXQgU1VDQ0VFRCgpLCBGQUlMKCksIG9yIEFERF9GQUlMVVJFKCkpLgotICBlbnVtIFR5cGUgewot
ICAgIGtTdWNjZXNzLCAgICAgICAgICAvLyBTdWNjZWVkZWQuCi0gICAga05vbkZhdGFsRmFpbHVy
ZSwgIC8vIEZhaWxlZCBidXQgdGhlIHRlc3QgY2FuIGNvbnRpbnVlLgotICAgIGtGYXRhbEZhaWx1
cmUgICAgICAvLyBGYWlsZWQgYW5kIHRoZSB0ZXN0IHNob3VsZCBiZSB0ZXJtaW5hdGVkLgotICB9
OwotCi0gIC8vIEMndG9yLiAgVGVzdFBhcnRSZXN1bHQgZG9lcyBOT1QgaGF2ZSBhIGRlZmF1bHQg
Y29uc3RydWN0b3IuCi0gIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25zdHJ1Y3RvciAod2l0aCBwYXJh
bWV0ZXJzKSB0byBjcmVhdGUgYQotICAvLyBUZXN0UGFydFJlc3VsdCBvYmplY3QuCi0gIFRlc3RQ
YXJ0UmVzdWx0KFR5cGUgYV90eXBlLAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX2Zp
bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgaW50IGFfbGluZV9udW1iZXIsCi0gICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGFfbWVzc2FnZSkKLSAgICAgIDogdHlwZV8oYV90eXBlKSwKLSAg
ICAgICAgZmlsZV9uYW1lXyhhX2ZpbGVfbmFtZSA9PSBOVUxMID8gIiIgOiBhX2ZpbGVfbmFtZSks
Ci0gICAgICAgIGxpbmVfbnVtYmVyXyhhX2xpbmVfbnVtYmVyKSwKLSAgICAgICAgc3VtbWFyeV8o
RXh0cmFjdFN1bW1hcnkoYV9tZXNzYWdlKSksCi0gICAgICAgIG1lc3NhZ2VfKGFfbWVzc2FnZSkg
ewotICB9Ci0KLSAgLy8gR2V0cyB0aGUgb3V0Y29tZSBvZiB0aGUgdGVzdCBwYXJ0LgotICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlXzsgfQotCi0gIC8vIEdldHMgdGhlIG5hbWUgb2Yg
dGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IKLSAgLy8g
TlVMTCBpZiBpdCdzIHVua25vd24uCi0gIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSgpIGNvbnN0IHsK
LSAgICByZXR1cm4gZmlsZV9uYW1lXy5lbXB0eSgpID8gTlVMTCA6IGZpbGVfbmFtZV8uY19zdHIo
KTsKLSAgfQotCi0gIC8vIEdldHMgdGhlIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRo
ZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwKLSAgLy8gb3IgLTEgaWYgaXQncyB1bmtub3duLgotICBp
bnQgbGluZV9udW1iZXIoKSBjb25zdCB7IHJldHVybiBsaW5lX251bWJlcl87IH0KLQotICAvLyBH
ZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3NhZ2UuCi0gIGNvbnN0IGNoYXIqIHN1
bW1hcnkoKSBjb25zdCB7IHJldHVybiBzdW1tYXJ5Xy5jX3N0cigpOyB9Ci0KLSAgLy8gR2V0cyB0
aGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHRlc3QgcGFydC4KLSAgY29uc3QgY2hhciog
bWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1lc3NhZ2VfLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgcGFzc2VkLgotICBib29sIHBhc3NlZCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGVfID09IGtTdWNjZXNzOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgdGVzdCBwYXJ0IGZhaWxlZC4KLSAgYm9vbCBmYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBl
XyAhPSBrU3VjY2VzczsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBu
b24tZmF0YWxseSBmYWlsZWQuCi0gIGJvb2wgbm9uZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJl
dHVybiB0eXBlXyA9PSBrTm9uRmF0YWxGYWlsdXJlOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgdGVzdCBwYXJ0IGZhdGFsbHkgZmFpbGVkLgotICBib29sIGZhdGFsbHlfZmFpbGVkKCkg
Y29uc3QgeyByZXR1cm4gdHlwZV8gPT0ga0ZhdGFsRmFpbHVyZTsgfQotCi0gcHJpdmF0ZToKLSAg
VHlwZSB0eXBlXzsKLQotICAvLyBHZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1lc3Nh
Z2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrCi0gIC8vIHRyYWNlIGluIGl0LgotICBzdGF0aWMgc3Rk
OjpzdHJpbmcgRXh0cmFjdFN1bW1hcnkoY29uc3QgY2hhciogbWVzc2FnZSk7Ci0KLSAgLy8gVGhl
IG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwg
b3IKLSAgLy8gIiIgaWYgdGhlIHNvdXJjZSBmaWxlIGlzIHVua25vd24uCi0gIHN0ZDo6c3RyaW5n
IGZpbGVfbmFtZV87Ci0gIC8vIFRoZSBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSB3aGVyZSB0aGUg
dGVzdCBwYXJ0IHRvb2sgcGxhY2UsIG9yIC0xCi0gIC8vIGlmIHRoZSBsaW5lIG51bWJlciBpcyB1
bmtub3duLgotICBpbnQgbGluZV9udW1iZXJfOwotICBzdGQ6OnN0cmluZyBzdW1tYXJ5XzsgIC8v
IFRoZSB0ZXN0IGZhaWx1cmUgc3VtbWFyeS4KLSAgc3RkOjpzdHJpbmcgbWVzc2FnZV87ICAvLyBU
aGUgdGVzdCBmYWlsdXJlIG1lc3NhZ2UuCi19OwotCi0vLyBQcmludHMgYSBUZXN0UGFydFJlc3Vs
dCBvYmplY3QuCi1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29u
c3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7Ci0KLS8vIEFuIGFycmF5IG9mIFRlc3RQYXJ0UmVz
dWx0IG9iamVjdHMuCi0vLwotLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgYXMgaXRzIGRlc3RydWN0b3IgaXMgbm90Ci0vLyB2aXJ0dWFsLgotY2xhc3MgR1RFU1RfQVBJ
XyBUZXN0UGFydFJlc3VsdEFycmF5IHsKLSBwdWJsaWM6Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXko
KSB7fQotCi0gIC8vIEFwcGVuZHMgdGhlIGdpdmVuIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBhcnJh
eS4KLSAgdm9pZCBBcHBlbmQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7Ci0KLSAgLy8g
UmV0dXJucyB0aGUgVGVzdFBhcnRSZXN1bHQgYXQgdGhlIGdpdmVuIGluZGV4ICgwLWJhc2VkKS4K
LSAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIEdldFRlc3RQYXJ0UmVzdWx0KGludCBpbmRleCkgY29u
c3Q7Ci0KLSAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIFRlc3RQYXJ0UmVzdWx0IG9iamVjdHMg
aW4gdGhlIGFycmF5LgotICBpbnQgc2l6ZSgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgc3RkOjp2
ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+IGFycmF5XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKFRlc3RQYXJ0UmVzdWx0QXJyYXkpOwotfTsKLQotLy8gVGhpcyBpbnRlcmZhY2Ug
a25vd3MgaG93IHRvIHJlcG9ydCBhIHRlc3QgcGFydCByZXN1bHQuCi1jbGFzcyBUZXN0UGFydFJl
c3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJJbnRlcmZhY2UoKSB7fQotCi0gIHZpcnR1YWwgdm9pZCBSZXBvcnRUZXN0UGFy
dFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSA9IDA7Ci19OwotCi1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBUaGlzIGhlbHBlciBjbGFzcyBpcyB1c2VkIGJ5IHtBU1NFUlR8
RVhQRUNUfV9OT19GQVRBTF9GQUlMVVJFIHRvIGNoZWNrIGlmIGEKLS8vIHN0YXRlbWVudCBnZW5l
cmF0ZXMgbmV3IGZhdGFsIGZhaWx1cmVzLiBUbyBkbyBzbyBpdCByZWdpc3RlcnMgaXRzZWxmIGFz
IHRoZQotLy8gY3VycmVudCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyLiBCZXNpZGVzIGNoZWNr
aW5nIGlmIGZhdGFsIGZhaWx1cmVzIHdlcmUKLS8vIHJlcG9ydGVkLCBpdCBvbmx5IGRlbGVnYXRl
cyB0aGUgcmVwb3J0aW5nIHRvIHRoZSBmb3JtZXIgcmVzdWx0IHJlcG9ydGVyLgotLy8gVGhlIG9y
aWdpbmFsIHJlc3VsdCByZXBvcnRlciBpcyByZXN0b3JlZCBpbiB0aGUgZGVzdHJ1Y3Rvci4KLS8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
LWNsYXNzIEdURVNUX0FQSV8gSGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyCi0gICAgOiBwdWJsaWMg
VGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICBIYXNOZXdGYXRh
bEZhaWx1cmVIZWxwZXIoKTsKLSAgdmlydHVhbCB+SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyKCk7
Ci0gIHZpcnR1YWwgdm9pZCBSZXBvcnRUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3Vs
dCYgcmVzdWx0KTsKLSAgYm9vbCBoYXNfbmV3X2ZhdGFsX2ZhaWx1cmUoKSBjb25zdCB7IHJldHVy
biBoYXNfbmV3X2ZhdGFsX2ZhaWx1cmVfOyB9Ci0gcHJpdmF0ZToKLSAgYm9vbCBoYXNfbmV3X2Zh
dGFsX2ZhaWx1cmVfOwotICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKiBvcmlnaW5h
bF9yZXBvcnRlcl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhIYXNOZXdG
YXRhbEZhaWx1cmVIZWxwZXIpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0g
IC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9H
VEVTVF9URVNUX1BBUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3QtdHlwZWQtdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBl
ZC10ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNzI2YjJjZDViZmMyZGFh
YjgyNzVmYTBlNTRlOGNhOTExZjg2MTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29v
Z2xlIEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfVFlQRURfVEVT
VF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RZUEVEX1RFU1RfSF8KLQot
Ly8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyB0eXBlZCB0ZXN0cyBhbmQgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3RzLgotCi0vLyBUeXBlZCAoYWthIHR5cGUtZHJpdmVuKSB0ZXN0cyByZXBlYXQgdGhl
IHNhbWUgdGVzdCBmb3IgdHlwZXMgaW4gYQotLy8gbGlzdC4gIFlvdSBtdXN0IGtub3cgd2hpY2gg
dHlwZXMgeW91IHdhbnQgdG8gdGVzdCB3aXRoIHdoZW4gd3JpdGluZwotLy8gdHlwZWQgdGVzdHMu
IEhlcmUncyBob3cgeW91IGRvIGl0OgotCi0jaWYgMAotCi0vLyBGaXJzdCwgZGVmaW5lIGEgZml4
dHVyZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCi0vLyBieSBh
IHR5cGUuICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSB0ZXN0aW5nOjpUZXN0LgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHB1YmxpYzoKLSAgLi4uCi0gIHR5cGVkZWYgc3RkOjpsaXN0PFQ+IExpc3Q7Ci0gIHN0YXRpYyBU
IHNoYXJlZF87Ci0gIFQgdmFsdWVfOwotfTsKLQotLy8gTmV4dCwgYXNzb2NpYXRlIGEgbGlzdCBv
ZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUKLS8vIHJlcGVhdGVkIGZv
ciBlYWNoIHR5cGUgaW4gdGhlIGxpc3QuICBUaGUgdHlwZWRlZiBpcyBuZWNlc3NhcnkgZm9yCi0v
LyB0aGUgbWFjcm8gdG8gcGFyc2UgY29ycmVjdGx5LgotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxj
aGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShGb29UZXN0
LCBNeVR5cGVzKTsKLQotLy8gSWYgdGhlIHR5cGUgbGlzdCBjb250YWlucyBvbmx5IG9uZSB0eXBl
LCB5b3UgY2FuIHdyaXRlIHRoYXQgdHlwZQotLy8gZGlyZWN0bHkgd2l0aG91dCBUeXBlczwuLi4+
OgotLy8gICBUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgaW50KTsKLQotLy8gVGhlbiwgdXNlIFRZ
UEVEX1RFU1QoKSBpbnN0ZWFkIG9mIFRFU1RfRigpIHRvIGRlZmluZSBhcyBtYW55IHR5cGVkCi0v
LyB0ZXN0cyBmb3IgdGhpcyB0ZXN0IGNhc2UgYXMgeW91IHdhbnQuCi1UWVBFRF9URVNUKEZvb1Rl
c3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0
byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgotICAvLyBTaW5jZSB3ZSBhcmUgaW5zaWRlIGEgZGVy
aXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVzIHVzZSB0bwotICAvLyB2aXNpdCB0aGUg
bWVtYmVycyBvZiBGb29UZXN0IHZpYSAndGhpcycuCi0gIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFs
dWVfOwotCi0gIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQg
dGhlIFRlc3RGaXh0dXJlOjoKLSAgLy8gcHJlZml4LgotICBuICs9IFRlc3RGaXh0dXJlOjpzaGFy
ZWRfOwotCi0gIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhl
ICJ0eXBlbmFtZQotICAvLyBUZXN0Rml4dHVyZTo6IiBwcmVmaXguCi0gIHR5cGVuYW1lIFRlc3RG
aXh0dXJlOjpMaXN0IHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFjayhuKTsKLSAgLi4uCi19Ci0K
LVRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci0KLSNlbmRpZiAgLy8g
MAotCi0vLyBUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGFic3RyYWN0IHRlc3QgcGF0dGVy
bnMgcGFyYW1ldGVyaXplZAotLy8gYnkgYSB0eXBlLiAgQ29tcGFyZWQgd2l0aCB0eXBlZCB0ZXN0
cywgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBhbGxvdyB5b3UgdG8gZGVmaW5lIHRoZSB0
ZXN0IHBhdHRlcm4gd2l0aG91dCBrbm93aW5nIHdoYXQgdGhlIHR5cGUKLS8vIHBhcmFtZXRlcnMg
YXJlLiAgVGhlIGRlZmluZWQgcGF0dGVybiBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGgKLS8vIGRp
ZmZlcmVudCB0eXBlcyBhbnkgbnVtYmVyIG9mIHRpbWVzLCBpbiBhbnkgbnVtYmVyIG9mIHRyYW5z
bGF0aW9uCi0vLyB1bml0cy4KLS8vCi0vLyBJZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZh
Y2Ugb3IgY29uY2VwdCwgeW91IGNhbiBkZWZpbmUgYQotLy8gc3VpdGUgb2YgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzIHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55Ci0vLyB2YWxpZCBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLAot
Ly8gZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4gZWFzaWx5IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1
aXRlIHRvIHZlcmlmeQotLy8gdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3
aXRob3V0IGhhdmluZyB0byB3cml0ZQotLy8gc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVy
ZSdzIGFuIGV4YW1wbGU6Ci0KLSNpZiAwCi0KLS8vIEZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNs
YXNzIHRlbXBsYXRlLiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6ZWQKLS8vIGJ5IGEgdHlwZS4g
IFJlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIHRlc3Rpbmc6OlRlc3QuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gIC4uLgot
fTsKLQotLy8gTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2UKLS8vICh0aGUgX1Agc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXpl
ZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91Ci0vLyBwcmVmZXIpOgotVFlQRURfVEVTVF9D
QVNFX1AoRm9vVGVzdCk7Ci0KLS8vIFRoZW4sIHVzZSBUWVBFRF9URVNUX1AoKSB0byBkZWZpbmUg
YXMgbWFueSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGZvciB0aGlzIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2UgYXMgeW91IHdhbnQuCi1UWVBFRF9URVNUX1AoRm9vVGVzdCwgRG9l
c0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8gVHlwZVBhcmFtIHRvIGdldCB0
aGUgdHlwZSBwYXJhbWV0ZXIuCi0gIFR5cGVQYXJhbSBuID0gMDsKLSAgLi4uCi19Ci0KLVRZUEVE
X1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KLQotLy8gTm93IHRoZSB0cmlj
a3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgYmVmb3JlCi0v
LyB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uICBUaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1h
Y3JvIGlzIHRoZQotLy8gdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZSB0aGUgbmFtZXMgb2Yg
dGhlIHRlc3RzIGluIHRoaXMgdGVzdAotLy8gY2FzZS4KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJv
cGVydHlBKTsKLQotLy8gRmluYWxseSwgeW91IGFyZSBmcmVlIHRvIGluc3RhbnRpYXRlIHRoZSBw
YXR0ZXJuIHdpdGggdGhlIHR5cGVzIHlvdQotLy8gd2FudC4gIElmIHlvdSBwdXQgdGhlIGFib3Zl
IGNvZGUgaW4gYSBoZWFkZXIgZmlsZSwgeW91IGNhbiAjaW5jbHVkZQotLy8gaXQgaW4gbXVsdGlw
bGUgQysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMuCi0v
LwotLy8gVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNlcyBvZiB0aGUgcGF0dGVybiwg
dGhlIGZpcnN0Ci0vLyBhcmd1bWVudCB0byB0aGUgSU5TVEFOVElBVEVfKiBtYWNybyBpcyBhIHBy
ZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQKLS8vIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUu
ICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IKLS8vIGRpZmZlcmVudCBpbnN0
YW5jZXMuCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBN
eVR5cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15VHlw
ZXMpOwotCi0vLyBJZiB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdSBj
YW4gd3JpdGUgdGhhdCB0eXBlCi0vLyBkaXJlY3RseSB3aXRob3V0IFR5cGVzPC4uLj46Ci0vLyAg
IElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBpbnQpOwotCi0jZW5k
aWYgIC8vIDAKLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLSNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKLQotLy8gSW1wbGVtZW50cyB0
eXBlZCB0ZXN0cy4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gRXhwYW5kcyB0
byB0aGUgbmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUK
LS8vIGdpdmVuIHRlc3QgY2FzZS4KLSMgZGVmaW5lIEdURVNUX1RZUEVfUEFSQU1TXyhUZXN0Q2Fz
ZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1lIyNfCi0KLS8vIFRoZSAnVHlw
ZXMnIHRlbXBsYXRlIGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBzcGFjZXMgYXJvdW5kIGl0Ci0v
LyBzaW5jZSBzb21lIGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+JyB3aGVuIHBhc3NpbmcgYSB0
ZW1wbGF0ZQotLy8gaW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikKLSMgZGVmaW5lIFRZUEVEX1RF
U1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OmludGVybmFs
OjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0gICAgICBHVEVTVF9UWVBFX1BBUkFNU18oQ2Fz
ZU5hbWUpCi0KLSMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCi0gIGNsYXNzIEdURVNUX1RFU1Rf
Q0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0gICAgICA6IHB1YmxpYyBDYXNlTmFt
ZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKLSAgIHByaXZhdGU6IFwKLSAgICB0eXBlZGVmIENhc2VO
YW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyBcCi0gICAgdHlwZWRlZiBndGVzdF9U
eXBlUGFyYW1fIFR5cGVQYXJhbTsgXAotICAgIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyBcCi0g
IH07IFwKLSAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNfIyNUZXN0TmFtZSMjX3JlZ2lzdGVyZWRf
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
VHlwZVBhcmFtZXRlcml6ZWRUZXN0PCBcCi0gICAgICAgICAgQ2FzZU5hbWUsIFwKLSAgICAgICAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1wbGF0ZVNlbDwgXAotICAgICAgICAgICAgICBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk+LCBcCi0gICAgICAgICAgR1RF
U1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKT46OlJlZ2lzdGVyKFwKLSAgICAgICAgICAgICAgIiIs
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLCBc
Ci0gICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAwKTsgXAotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFN
RV8oQ2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1fPjo6VGVzdEJvZHkoKQotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIEltcGxlbWVudHMgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLgotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0vLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgotLy8KLS8vIEV4
cGFuZHMgdG8gdGhlIG5hbWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBmb3IKLS8vIHRoZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGFyZSBk
ZWZpbmVkIGluLiAgVGhlIGV4YWN0Ci0vLyBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgaXMgc3ViamVj
dCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0jIGRlZmluZSBHVEVTVF9DQVNFX05BTUVTUEFD
RV8oVGVzdENhc2VOYW1lKSBcCi0gIGd0ZXN0X2Nhc2VfIyNUZXN0Q2FzZU5hbWUjI18KLQotLy8g
SU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0v
LyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJlbWVtYmVyIHRo
ZSBuYW1lcyBvZgotLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4K
LSMgZGVmaW5lIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhUZXN0Q2FzZU5hbWUpIFwK
LSAgZ3Rlc3RfdHlwZWRfdGVzdF9jYXNlX3Bfc3RhdGVfIyNUZXN0Q2FzZU5hbWUjI18KLQotLy8g
SU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERSBESVJFQ1RM
WS4KLS8vCi0vLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1c2VkIHRvIHJl
bWVtYmVyIHRoZSBuYW1lcyBvZgotLy8gdGhlIHJlZ2lzdGVyZWQgdGVzdHMgaW4gdGhlIGdpdmVu
IHRlc3QgY2FzZS4KLSMgZGVmaW5lIEdURVNUX1JFR0lTVEVSRURfVEVTVF9OQU1FU18oVGVzdENh
c2VOYW1lKSBcCi0gIGd0ZXN0X3JlZ2lzdGVyZWRfdGVzdF9uYW1lc18jI1Rlc3RDYXNlTmFtZSMj
XwotCi0vLyBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0IG1hY3JvcyBhcmUKLS8vIHN0YXRpYyBhcyB0eXBpY2FsbHkgdGhlc2UgbWFjcm9zIGFyZSB1
c2VkIGluIGEgLmggZmlsZSB0aGF0IGNhbiBiZQotLy8gI2luY2x1ZGVkIGluIG11bHRpcGxlIHRy
YW5zbGF0aW9uIHVuaXRzIGxpbmtlZCB0b2dldGhlci4KLSMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FT
RV9QKENhc2VOYW1lKSBcCi0gIHN0YXRpYyA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlZFRlc3RD
YXNlUFN0YXRlIFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFt
ZSkKLQotIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBUZXN0TmFtZSkgXAotICBuYW1l
c3BhY2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7IFwKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKLSAgY2xhc3MgVGVzdE5hbWUgOiBwdWJsaWMgQ2Fz
ZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCi0gICBwcml2YXRlOiBcCi0gICAgdHlwZWRlZiBD
YXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsgXAotICAgIHR5cGVkZWYgZ3Rl
c3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKLSAgICB2aXJ0dWFsIHZvaWQgVGVzdEJvZHkoKTsg
XAotICB9OyBcCi0gIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5hbWUjI19kZWZpbmVkXyBHVEVT
VF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NU
QVRFXyhDYXNlTmFtZSkuQWRkVGVzdE5hbWUoXAotICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVf
XywgI0Nhc2VOYW1lLCAjVGVzdE5hbWUpOyBcCi0gIH0gXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Z3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lkIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFt
ZSk6OlRlc3ROYW1lPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9keSgpCi0KLSMgZGVmaW5lIFJF
R0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4pIFwKLSAgbmFtZXNwYWNlIEdU
RVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSkgeyBcCi0gIHR5cGVkZWYgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VGVtcGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBndGVzdF9BbGxUZXN0c187IFwK
LSAgfSBcCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVTVF9SRUdJU1RFUkVEX1RFU1Rf
TkFNRVNfKENhc2VOYW1lKSBcCi0gICAgICBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKLSAg
ICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8oQ2FzZU5hbWUpLlZlcmlmeVJl
Z2lzdGVyZWRUZXN0TmFtZXMoXAotICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNf
X1ZBX0FSR1NfXykKLQotLy8gVGhlICdUeXBlcycgdGVtcGxhdGUgYXJndW1lbnQgYmVsb3cgbXVz
dCBoYXZlIHNwYWNlcyBhcm91bmQgaXQKLS8vIHNpbmNlIHNvbWUgY29tcGlsZXJzIG1heSBjaG9r
ZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBhIHRlbXBsYXRlCi0vLyBpbnN0YW5jZSAoZS5nLiBUeXBl
czxpbnQ+KQotIyBkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoUHJlZml4LCBD
YXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZpeCMjXyMjQ2FzZU5hbWUgR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUeXBl
UGFyYW1ldGVyaXplZFRlc3RDYXNlPENhc2VOYW1lLCBcCi0gICAgICAgICAgR1RFU1RfQ0FTRV9O
QU1FU1BBQ0VfKENhc2VOYW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBcCi0gICAgICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+OjpSZWdpc3RlcihcCi0gICAg
ICAgICAgICAgICNQcmVmaXgsIFwKLSAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Q29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKLSAgICAgICAgICAgICAgJkdURVNU
X1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSksIFwKLSAgICAgICAgICAgICAgI0Nh
c2VOYW1lLCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSkKLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9H
VEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxY2Q2OWFiNDY2YzdjMWIyZTc2MzY4MGIzMzg0YTRl
Yjg3Yzk4YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI0
MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoZSBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhl
YWRlciBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgZm9yIEdvb2dsZSBUZXN0LiAgSXQgc2hv
dWxkIGJlCi0vLyBpbmNsdWRlZCBieSBhbnkgdGVzdCBwcm9ncmFtIHRoYXQgdXNlcyBHb29nbGUg
VGVzdC4KLS8vCi0vLyBJTVBPUlRBTlQgTk9URTogRHVlIHRvIGxpbWl0YXRpb24gb2YgdGhlIEMr
KyBsYW5ndWFnZSwgd2UgaGF2ZSB0bwotLy8gbGVhdmUgc29tZSBpbnRlcm5hbCBpbXBsZW1lbnRh
dGlvbiBkZXRhaWxzIGluIHRoaXMgaGVhZGVyIGZpbGUuCi0vLyBUaGV5IGFyZSBjbGVhcmx5IG1h
cmtlZCBieSBjb21tZW50cyBsaWtlIHRoaXM6Ci0vLwotLy8gICAvLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi0vLwotLy8gU3VjaCBjb2Rl
IGlzIE5PVCBtZWFudCB0byBiZSB1c2VkIGJ5IGEgdXNlciBkaXJlY3RseSwgYW5kIGlzIHN1Ympl
Y3QKLS8vIHRvIENIQU5HRSBXSVRIT1VUIE5PVElDRS4gIFRoZXJlZm9yZSBETyBOT1QgREVQRU5E
IE9OIElUIGluIGEgdXNlcgotLy8gcHJvZ3JhbSEKLS8vCi0vLyBBY2tub3dsZWRnbWVudDogR29v
Z2xlIFRlc3QgYm9ycm93ZWQgdGhlIGlkZWEgb2YgYXV0b21hdGljIHRlc3QKLS8vIHJlZ2lzdHJh
dGlvbiBmcm9tIEJhcnRoZWxlbXkgRGFnZW5haXMnIChiYXJ0aGVsZW15QHByb2xvZ2lxdWUuY29t
KQotLy8gZWFzeVVuaXQgZnJhbWV3b3JrLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwotCi0jaW5jbHVk
ZSA8bGltaXRzPgotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgotI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LXBhcmFtLXRlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC10eXBlZC10ZXN0LmgiCi0KLS8vIERlcGVuZGlu
ZyBvbiB0aGUgcGxhdGZvcm0sIGRpZmZlcmVudCBzdHJpbmcgY2xhc3NlcyBhcmUgYXZhaWxhYmxl
LgotLy8gT24gTGludXgsIGluIGFkZGl0aW9uIHRvIDo6c3RkOjpzdHJpbmcsIEdvb2dsZSBhbHNv
IG1ha2VzIHVzZSBvZgotLy8gY2xhc3MgOjpzdHJpbmcsIHdoaWNoIGhhcyB0aGUgc2FtZSBpbnRl
cmZhY2UgYXMgOjpzdGQ6OnN0cmluZywgYnV0Ci0vLyBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50
YXRpb24uCi0vLwotLy8gWW91IGNhbiBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcgdG8g
MSB0byBpbmRpY2F0ZSB0aGF0Ci0vLyA6OnN0cmluZyBpcyBhdmFpbGFibGUgQU5EIGlzIGEgZGlz
dGluY3QgdHlwZSB0byA6OnN0ZDo6c3RyaW5nLCBvcgotLy8gZGVmaW5lIGl0IHRvIDAgdG8gaW5k
aWNhdGUgb3RoZXJ3aXNlLgotLy8KLS8vIElmIDo6c3RkOjpzdHJpbmcgYW5kIDo6c3RyaW5nIGFy
ZSB0aGUgc2FtZSBjbGFzcyBvbiB5b3VyIHBsYXRmb3JtCi0vLyBkdWUgdG8gYWxpYXNpbmcsIHlv
dSBzaG91bGQgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HIHRvIDAuCi0vLwotLy8gSWYg
eW91IGRvIG5vdCBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcsIGl0IGlzIGRlZmluZWQK
LS8vIGhldXJpc3RpY2FsbHkuCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRGVjbGFyZXMg
dGhlIGZsYWdzLgotCi0vLyBUaGlzIGZsYWcgdGVtcG9yYXJ5IGVuYWJsZXMgdGhlIGRpc2FibGVk
IHRlc3RzLgotR1RFU1RfREVDTEFSRV9ib29sXyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyk7Ci0K
LS8vIFRoaXMgZmxhZyBicmluZ3MgdGhlIGRlYnVnZ2VyIG9uIGFuIGFzc2VydGlvbiBmYWlsdXJl
LgotR1RFU1RfREVDTEFSRV9ib29sXyhicmVha19vbl9mYWlsdXJlKTsKLQotLy8gVGhpcyBmbGFn
IGNvbnRyb2xzIHdoZXRoZXIgR29vZ2xlIFRlc3QgY2F0Y2hlcyBhbGwgdGVzdC10aHJvd24gZXhj
ZXB0aW9ucwotLy8gYW5kIGxvZ3MgdGhlbSBhcyBmYWlsdXJlcy4KLUdURVNUX0RFQ0xBUkVfYm9v
bF8oY2F0Y2hfZXhjZXB0aW9ucyk7Ci0KLS8vIFRoaXMgZmxhZyBlbmFibGVzIHVzaW5nIGNvbG9y
cyBpbiB0ZXJtaW5hbCBvdXRwdXQuIEF2YWlsYWJsZSB2YWx1ZXMgYXJlCi0vLyAieWVzIiB0byBl
bmFibGUgY29sb3JzLCAibm8iIChkaXNhYmxlIGNvbG9ycyksIG9yICJhdXRvIiAodGhlIGRlZmF1
bHQpCi0vLyB0byBsZXQgR29vZ2xlIFRlc3QgZGVjaWRlLgotR1RFU1RfREVDTEFSRV9zdHJpbmdf
KGNvbG9yKTsKLQotLy8gVGhpcyBmbGFnIHNldHMgdXAgdGhlIGZpbHRlciB0byBzZWxlY3QgYnkg
bmFtZSB1c2luZyBhIGdsb2IgcGF0dGVybgotLy8gdGhlIHRlc3RzIHRvIHJ1bi4gSWYgdGhlIGZp
bHRlciBpcyBub3QgZ2l2ZW4gYWxsIHRlc3RzIGFyZSBleGVjdXRlZC4KLUdURVNUX0RFQ0xBUkVf
c3RyaW5nXyhmaWx0ZXIpOwotCi0vLyBUaGlzIGZsYWcgY2F1c2VzIHRoZSBHb29nbGUgVGVzdCB0
byBsaXN0IHRlc3RzLiBOb25lIG9mIHRoZSB0ZXN0cyBsaXN0ZWQKLS8vIGFyZSBhY3R1YWxseSBy
dW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuCi1HVEVTVF9ERUNMQVJFX2Jvb2xfKGxpc3RfdGVz
dHMpOwotCi0vLyBUaGlzIGZsYWcgY29udHJvbHMgd2hldGhlciBHb29nbGUgVGVzdCBlbWl0cyBh
IGRldGFpbGVkIFhNTCByZXBvcnQgdG8gYSBmaWxlCi0vLyBpbiBhZGRpdGlvbiB0byBpdHMgbm9y
bWFsIHRleHR1YWwgb3V0cHV0LgotR1RFU1RfREVDTEFSRV9zdHJpbmdfKG91dHB1dCk7Ci0KLS8v
IFRoaXMgZmxhZ3MgY29udHJvbCB3aGV0aGVyIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgZWxhcHNl
ZCB0aW1lIGZvciBlYWNoCi0vLyB0ZXN0LgotR1RFU1RfREVDTEFSRV9ib29sXyhwcmludF90aW1l
KTsKLQotLy8gVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUgcmFuZG9tIG51bWJlciBzZWVkLgotR1RF
U1RfREVDTEFSRV9pbnQzMl8ocmFuZG9tX3NlZWQpOwotCi0vLyBUaGlzIGZsYWcgc2V0cyBob3cg
bWFueSB0aW1lcyB0aGUgdGVzdHMgYXJlIHJlcGVhdGVkLiBUaGUgZGVmYXVsdCB2YWx1ZQotLy8g
aXMgMS4gSWYgdGhlIHZhbHVlIGlzIC0xIHRoZSB0ZXN0cyBhcmUgcmVwZWF0aW5nIGZvcmV2ZXIu
Ci1HVEVTVF9ERUNMQVJFX2ludDMyXyhyZXBlYXQpOwotCi0vLyBUaGlzIGZsYWcgY29udHJvbHMg
d2hldGhlciBHb29nbGUgVGVzdCBpbmNsdWRlcyBHb29nbGUgVGVzdCBpbnRlcm5hbAotLy8gc3Rh
Y2sgZnJhbWVzIGluIGZhaWx1cmUgc3RhY2sgdHJhY2VzLgotR1RFU1RfREVDTEFSRV9ib29sXyhz
aG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7Ci0KLS8vIFdoZW4gdGhpcyBmbGFnIGlzIHNwZWNp
ZmllZCwgdGVzdHMnIG9yZGVyIGlzIHJhbmRvbWl6ZWQgb24gZXZlcnkgaXRlcmF0aW9uLgotR1RF
U1RfREVDTEFSRV9ib29sXyhzaHVmZmxlKTsKLQotLy8gVGhpcyBmbGFnIHNwZWNpZmllcyB0aGUg
bWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlCi0vLyBwcmludGVkIGluIGEgZmFp
bHVyZSBtZXNzYWdlLgotR1RFU1RfREVDTEFSRV9pbnQzMl8oc3RhY2tfdHJhY2VfZGVwdGgpOwot
Ci0vLyBXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIGEgZmFpbGVkIGFzc2VydGlvbiB3aWxs
IHRocm93IGFuCi0vLyBleGNlcHRpb24gaWYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwgb3IgZXhp
dCB0aGUgcHJvZ3JhbSB3aXRoIGEKLS8vIG5vbi16ZXJvIGNvZGUgb3RoZXJ3aXNlLgotR1RFU1Rf
REVDTEFSRV9ib29sXyh0aHJvd19vbl9mYWlsdXJlKTsKLQotLy8gV2hlbiB0aGlzIGZsYWcgaXMg
c2V0IHdpdGggYSAiaG9zdDpwb3J0IiBzdHJpbmcsIG9uIHN1cHBvcnRlZAotLy8gcGxhdGZvcm1z
IHRlc3QgcmVzdWx0cyBhcmUgc3RyZWFtZWQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uCi0vLyB0
aGUgc3BlY2lmaWVkIGhvc3QgbWFjaGluZS4KLUdURVNUX0RFQ0xBUkVfc3RyaW5nXyhzdHJlYW1f
cmVzdWx0X3RvKTsKLQotLy8gVGhlIHVwcGVyIGxpbWl0IGZvciB2YWxpZCBzdGFjayB0cmFjZSBk
ZXB0aHMuCi1jb25zdCBpbnQga01heFN0YWNrVHJhY2VEZXB0aCA9IDEwMDsKLQotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotY2xhc3MgQXNzZXJ0SGVscGVyOwotY2xhc3MgRGVmYXVsdEdsb2JhbFRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXI7Ci1jbGFzcyBFeGVjRGVhdGhUZXN0OwotY2xhc3MgTm9FeGVj
RGVhdGhUZXN0OwotY2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlcjsKLWNsYXNzIEdUZXN0RmxhZ1Nh
dmVyOwotY2xhc3MgU3RyZWFtaW5nTGlzdGVuZXJUZXN0OwotY2xhc3MgVGVzdFJlc3VsdEFjY2Vz
c29yOwotY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7Ci1jbGFzcyBUZXN0RXZlbnRS
ZXBlYXRlcjsKLWNsYXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyOwotY2xhc3Mg
V2luZG93c0RlYXRoVGVzdDsKLWNsYXNzIFVuaXRUZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBsKCk7
Ci12b2lkIFJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbihUZXN0UGFydFJlc3VsdDo6VHlw
ZSByZXN1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8v
IFRoZSBmcmllbmQgcmVsYXRpb25zaGlwIG9mIHNvbWUgb2YgdGhlc2UgY2xhc3NlcyBpcyBjeWNs
aWMuCi0vLyBJZiB3ZSBkb24ndCBmb3J3YXJkIGRlY2xhcmUgdGhlbSB0aGUgY29tcGlsZXIgbWln
aHQgY29uZnVzZSB0aGUgY2xhc3NlcwotLy8gaW4gZnJpZW5kc2hpcCBjbGF1c2VzIHdpdGggc2Ft
ZSBuYW1lZCBjbGFzc2VzIG9uIHRoZSBzY29wZS4KLWNsYXNzIFRlc3Q7Ci1jbGFzcyBUZXN0Q2Fz
ZTsKLWNsYXNzIFRlc3RJbmZvOwotY2xhc3MgVW5pdFRlc3Q7Ci0KLS8vIEEgY2xhc3MgZm9yIGlu
ZGljYXRpbmcgd2hldGhlciBhbiBhc3NlcnRpb24gd2FzIHN1Y2Nlc3NmdWwuICBXaGVuCi0vLyB0
aGUgYXNzZXJ0aW9uIHdhc24ndCBzdWNjZXNzZnVsLCB0aGUgQXNzZXJ0aW9uUmVzdWx0IG9iamVj
dAotLy8gcmVtZW1iZXJzIGEgbm9uLWVtcHR5IG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMgaG93IGl0
IGZhaWxlZC4KLS8vCi0vLyBUbyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywgdXNl
IG9uZSBvZiB0aGUgZmFjdG9yeSBmdW5jdGlvbnMKLS8vIChBc3NlcnRpb25TdWNjZXNzKCkgYW5k
IEFzc2VydGlvbkZhaWx1cmUoKSkuCi0vLwotLy8gVGhpcyBjbGFzcyBpcyB1c2VmdWwgZm9yIHR3
byBwdXJwb3NlczoKLS8vICAgMS4gRGVmaW5pbmcgcHJlZGljYXRlIGZ1bmN0aW9ucyB0byBiZSB1
c2VkIHdpdGggQm9vbGVhbiB0ZXN0IGFzc2VydGlvbnMKLS8vICAgICAgRVhQRUNUX1RSVUUvRVhQ
RUNUX0ZBTFNFIGFuZCB0aGVpciBBU1NFUlRfIGNvdW50ZXJwYXJ0cwotLy8gICAyLiBEZWZpbmlu
ZyBwcmVkaWNhdGUtZm9ybWF0IGZ1bmN0aW9ucyB0byBiZQotLy8gICAgICB1c2VkIHdpdGggcHJl
ZGljYXRlIGFzc2VydGlvbnMgKEFTU0VSVF9QUkVEX0ZPUk1BVCosIGV0YykuCi0vLwotLy8gRm9y
IGV4YW1wbGUsIGlmIHlvdSBkZWZpbmUgSXNFdmVuIHByZWRpY2F0ZToKLS8vCi0vLyAgIHRlc3Rp
bmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKLS8vICAgICBpZiAoKG4gJSAyKSA9
PSAwKQotLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLS8vICAg
ICBlbHNlCi0vLyAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4g
PDwgIiBpcyBvZGQiOwotLy8gICB9Ci0vLwotLy8gVGhlbiB0aGUgZmFpbGVkIGV4cGVjdGF0aW9u
IEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNSkpKQotLy8gd2lsbCBwcmludCB0aGUgbWVzc2FnZQot
Ly8KLS8vICAgVmFsdWUgb2Y6IElzRXZlbihGaWIoNSkpCi0vLyAgICAgQWN0dWFsOiBmYWxzZSAo
NSBpcyBvZGQpCi0vLyAgIEV4cGVjdGVkOiB0cnVlCi0vLwotLy8gaW5zdGVhZCBvZiBhIG1vcmUg
b3BhcXVlCi0vLwotLy8gICBWYWx1ZSBvZjogSXNFdmVuKEZpYig1KSkKLS8vICAgICBBY3R1YWw6
IGZhbHNlCi0vLyAgIEV4cGVjdGVkOiB0cnVlCi0vLwotLy8gaW4gY2FzZSBJc0V2ZW4gaXMgYSBz
aW1wbGUgQm9vbGVhbiBwcmVkaWNhdGUuCi0vLwotLy8gSWYgeW91IGV4cGVjdCB5b3VyIHByZWRp
Y2F0ZSB0byBiZSByZXVzZWQgYW5kIHdhbnQgdG8gc3VwcG9ydCBpbmZvcm1hdGl2ZQotLy8gbWVz
c2FnZXMgaW4gRVhQRUNUX0ZBTFNFIGFuZCBBU1NFUlRfRkFMU0UgKG5lZ2F0aXZlIGFzc2VydGlv
bnMgc2hvdyB1cAotLy8gYWJvdXQgaGFsZiBhcyBvZnRlbiBhcyBwb3NpdGl2ZSBvbmVzIGluIG91
ciB0ZXN0cyksIHN1cHBseSBtZXNzYWdlcyBmb3IKLS8vIGJvdGggc3VjY2VzcyBhbmQgZmFpbHVy
ZSBjYXNlczoKLS8vCi0vLyAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4p
IHsKLS8vICAgICBpZiAoKG4gJSAyKSA9PSAwKQotLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7Ci0vLyAgICAgZWxzZQotLy8gICAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsK
LS8vICAgfQotLy8KLS8vIFRoZW4gYSBzdGF0ZW1lbnQgRVhQRUNUX0ZBTFNFKElzRXZlbihGaWIo
NikpKSB3aWxsIHByaW50Ci0vLwotLy8gICBWYWx1ZSBvZjogSXNFdmVuKEZpYig2KSkKLS8vICAg
ICBBY3R1YWw6IHRydWUgKDggaXMgZXZlbikKLS8vICAgRXhwZWN0ZWQ6IGZhbHNlCi0vLwotLy8g
TkI6IFByZWRpY2F0ZXMgdGhhdCBzdXBwb3J0IG5lZ2F0aXZlIEJvb2xlYW4gYXNzZXJ0aW9ucyBo
YXZlIHJlZHVjZWQKLS8vIHBlcmZvcm1hbmNlIGluIHBvc2l0aXZlIG9uZXMgc28gYmUgY2FyZWZ1
bCBub3QgdG8gdXNlIHRoZW0gaW4gdGVzdHMKLS8vIHRoYXQgaGF2ZSBsb3RzICh0ZW5zIG9mIHRo
b3VzYW5kcykgb2YgcG9zaXRpdmUgQm9vbGVhbiBhc3NlcnRpb25zLgotLy8KLS8vIFRvIHVzZSB0
aGlzIGNsYXNzIHdpdGggRVhQRUNUX1BSRURfRk9STUFUIGFzc2VydGlvbnMgc3VjaCBhczoKLS8v
Ci0vLyAgIC8vIFZlcmlmaWVzIHRoYXQgRm9vKCkgcmV0dXJucyBhbiBldmVuIG51bWJlci4KLS8v
ICAgRVhQRUNUX1BSRURfRk9STUFUMShJc0V2ZW4sIEZvbygpKTsKLS8vCi0vLyB5b3UgbmVlZCB0
byBkZWZpbmU6Ci0vLwotLy8gICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGNvbnN0
IGNoYXIqIGV4cHIsIGludCBuKSB7Ci0vLyAgICAgaWYgKChuICUgMikgPT0gMCkKLS8vICAgICAg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0vLyAgICAgZWxzZQotLy8gICAg
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotLy8gICAgICAgICA8PCAiRXhw
ZWN0ZWQ6ICIgPDwgZXhwciA8PCAiIGlzIGV2ZW5cbiAgQWN0dWFsOiBpdCdzICIgPDwgbjsKLS8v
ICAgfQotLy8KLS8vIElmIEZvbygpIHJldHVybnMgNSwgeW91IHdpbGwgc2VlIHRoZSBmb2xsb3dp
bmcgbWVzc2FnZToKLS8vCi0vLyAgIEV4cGVjdGVkOiBGb28oKSBpcyBldmVuCi0vLyAgICAgQWN0
dWFsOiBpdCdzIDUKLS8vCi1jbGFzcyBHVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCB7Ci0gcHVi
bGljOgotICAvLyBDb3B5IGNvbnN0cnVjdG9yLgotICAvLyBVc2VkIGluIEVYUEVDVF9UUlVFL0ZB
TFNFKGFzc2VydGlvbl9yZXN1bHQpLgotICBBc3NlcnRpb25SZXN1bHQoY29uc3QgQXNzZXJ0aW9u
UmVzdWx0JiBvdGhlcik7Ci0KLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDgw
MCAvKiBmb3JjaW5nIHZhbHVlIHRvIGJvb2wgKi8pCi0KLSAgLy8gVXNlZCBpbiB0aGUgRVhQRUNU
X1RSVUUvRkFMU0UoYm9vbF9leHByZXNzaW9uKS4KLSAgLy8KLSAgLy8gVCBtdXN0IGJlIGNvbnRl
eHR1YWxseSBjb252ZXJ0aWJsZSB0byBib29sLgotICAvLwotICAvLyBUaGUgc2Vjb25kIHBhcmFt
ZXRlciBwcmV2ZW50cyB0aGlzIG92ZXJsb2FkIGZyb20gYmVpbmcgY29uc2lkZXJlZCBpZgotICAv
LyB0aGUgYXJndW1lbnQgaXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBc3NlcnRpb25SZXN1
bHQuIEluIHRoYXQgY2FzZQotICAvLyB3ZSB3YW50IEFzc2VydGlvblJlc3VsdCdzIGNvcHkgY29u
c3RydWN0b3IgdG8gYmUgdXNlZC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGV4cGxpY2l0
IEFzc2VydGlvblJlc3VsdCgKLSAgICAgIGNvbnN0IFQmIHN1Y2Nlc3MsCi0gICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RW5hYmxlSWY8Ci0gICAgICAgICAgIWludGVybmFsOjpJbXBsaWNpdGx5Q29u
dmVydGlibGU8VCwgQXNzZXJ0aW9uUmVzdWx0Pjo6dmFsdWU+Ojp0eXBlKgotICAgICAgICAgIC8q
ZW5hYmxlciovID0gTlVMTCkKLSAgICAgIDogc3VjY2Vzc18oc3VjY2Vzcykge30KLQotICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLQotICAvLyBBc3NpZ25tZW50IG9wZXJhdG9y
LgotICBBc3NlcnRpb25SZXN1bHQmIG9wZXJhdG9yPShBc3NlcnRpb25SZXN1bHQgb3RoZXIpIHsK
LSAgICBzd2FwKG90aGVyKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSBhc3NlcnRpb24gc3VjY2VlZGVkLgotICBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gc3VjY2Vzc187IH0gIC8vIE5PTElOVAotCi0gIC8vIFJldHVybnMgdGhlIGFz
c2VydGlvbidzIG5lZ2F0aW9uLiBVc2VkIHdpdGggRVhQRUNUL0FTU0VSVF9GQUxTRS4KLSAgQXNz
ZXJ0aW9uUmVzdWx0IG9wZXJhdG9yISgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIHRleHQg
c3RyZWFtZWQgaW50byB0aGlzIEFzc2VydGlvblJlc3VsdC4gVGVzdCBhc3NlcnRpb25zCi0gIC8v
IHVzZSBpdCB3aGVuIHRoZXkgZmFpbCAoaS5lLiwgdGhlIHByZWRpY2F0ZSdzIG91dGNvbWUgZG9l
c24ndCBtYXRjaCB0aGUKLSAgLy8gYXNzZXJ0aW9uJ3MgZXhwZWN0YXRpb24pLiBXaGVuIG5vdGhp
bmcgaGFzIGJlZW4gc3RyZWFtZWQgaW50byB0aGUKLSAgLy8gb2JqZWN0LCByZXR1cm5zIGFuIGVt
cHR5IHN0cmluZy4KLSAgY29uc3QgY2hhciogbWVzc2FnZSgpIGNvbnN0IHsKLSAgICByZXR1cm4g
bWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCA/ICBtZXNzYWdlXy0+Y19zdHIoKSA6ICIiOwotICB9Ci0g
IC8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IFJlbW92ZSB0aGlzIGFmdGVyIG1ha2luZyBzdXJl
IG5vIGNsaWVudHMgdXNlIGl0LgotICAvLyBEZXByZWNhdGVkOyBwbGVhc2UgdXNlIG1lc3NhZ2Uo
KSBpbnN0ZWFkLgotICBjb25zdCBjaGFyKiBmYWlsdXJlX21lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtZXNzYWdlKCk7IH0KLQotICAvLyBTdHJlYW1zIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBp
bnRvIHRoaXMgb2JqZWN0LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gQXNzZXJ0aW9uUmVzdWx0
JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgQXBwZW5kTWVzc2FnZShNZXNzYWdl
KCkgPDwgdmFsdWUpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIEFsbG93cyBzdHJl
YW1pbmcgYmFzaWMgb3V0cHV0IG1hbmlwdWxhdG9ycyBzdWNoIGFzIGVuZGwgb3IgZmx1c2ggaW50
bwotICAvLyB0aGlzIG9iamVjdC4KLSAgQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcjw8KAotICAg
ICAgOjpzdGQ6Om9zdHJlYW0mICgqYmFzaWNfbWFuaXB1bGF0b3IpKDo6c3RkOjpvc3RyZWFtJiBz
dHJlYW0pKSB7Ci0gICAgQXBwZW5kTWVzc2FnZShNZXNzYWdlKCkgPDwgYmFzaWNfbWFuaXB1bGF0
b3IpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gQXBwZW5kcyB0
aGUgY29udGVudHMgb2YgbWVzc2FnZSB0byBtZXNzYWdlXy4KLSAgdm9pZCBBcHBlbmRNZXNzYWdl
KGNvbnN0IE1lc3NhZ2UmIGFfbWVzc2FnZSkgewotICAgIGlmIChtZXNzYWdlXy5nZXQoKSA9PSBO
VUxMKQotICAgICAgbWVzc2FnZV8ucmVzZXQobmV3IDo6c3RkOjpzdHJpbmcpOwotICAgIG1lc3Nh
Z2VfLT5hcHBlbmQoYV9tZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwotICB9Ci0KLSAgLy8g
U3dhcCB0aGUgY29udGVudHMgb2YgdGhpcyBBc3NlcnRpb25SZXN1bHQgd2l0aCBvdGhlci4KLSAg
dm9pZCBzd2FwKEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwotCi0gIC8vIFN0b3JlcyByZXN1bHQg
b2YgdGhlIGFzc2VydGlvbiBwcmVkaWNhdGUuCi0gIGJvb2wgc3VjY2Vzc187Ci0gIC8vIFN0b3Jl
cyB0aGUgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBjb25kaXRpb24gaW4gY2FzZSB0aGUgZXhwZWN0
YXRpb24KLSAgLy8gY29uc3RydWN0IGlzIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgcHJlZGljYXRl
J3Mgb3V0Y29tZS4KLSAgLy8gUmVmZXJlbmNlZCB2aWEgYSBwb2ludGVyIHRvIGF2b2lkIHRha2lu
ZyB0b28gbXVjaCBzdGFjayBmcmFtZSBzcGFjZQotICAvLyB3aXRoIHRlc3QgYXNzZXJ0aW9ucy4K
LSAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6c3RkOjpzdHJpbmc+IG1lc3NhZ2VfOwotfTsKLQot
Ly8gTWFrZXMgYSBzdWNjZXNzZnVsIGFzc2VydGlvbiByZXN1bHQuCi1HVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLS8vIE1ha2VzIGEgZmFpbGVkIGFzc2Vy
dGlvbiByZXN1bHQuCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJl
KCk7Ci0KLS8vIE1ha2VzIGEgZmFpbGVkIGFzc2VydGlvbiByZXN1bHQgd2l0aCB0aGUgZ2l2ZW4g
ZmFpbHVyZSBtZXNzYWdlLgotLy8gRGVwcmVjYXRlZDsgdXNlIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCBtc2cuCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKGNvbnN0
IE1lc3NhZ2UmIG1zZyk7Ci0KLS8vIFRoZSBhYnN0cmFjdCBjbGFzcyB0aGF0IGFsbCB0ZXN0cyBp
bmhlcml0IGZyb20uCi0vLwotLy8gSW4gR29vZ2xlIFRlc3QsIGEgdW5pdCB0ZXN0IHByb2dyYW0g
Y29udGFpbnMgb25lIG9yIG1hbnkgVGVzdENhc2VzLCBhbmQKLS8vIGVhY2ggVGVzdENhc2UgY29u
dGFpbnMgb25lIG9yIG1hbnkgVGVzdHMuCi0vLwotLy8gV2hlbiB5b3UgZGVmaW5lIGEgdGVzdCB1
c2luZyB0aGUgVEVTVCBtYWNybywgeW91IGRvbid0IG5lZWQgdG8KLS8vIGV4cGxpY2l0bHkgZGVy
aXZlIGZyb20gVGVzdCAtIHRoZSBURVNUIG1hY3JvIGF1dG9tYXRpY2FsbHkgZG9lcwotLy8gdGhp
cyBmb3IgeW91LgotLy8KLS8vIFRoZSBvbmx5IHRpbWUgeW91IGRlcml2ZSBmcm9tIFRlc3QgaXMg
d2hlbiBkZWZpbmluZyBhIHRlc3QgZml4dHVyZQotLy8gdG8gYmUgdXNlZCBhIFRFU1RfRi4gIEZv
ciBleGFtcGxlOgotLy8KLS8vICAgY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLS8vICAgIHByb3RlY3RlZDoKLS8vICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUgeyAuLi4g
fQotLy8gICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IC4uLiB9Ci0vLyAgICAgLi4uCi0v
LyAgIH07Ci0vLwotLy8gICBURVNUX0YoRm9vVGVzdCwgQmFyKSB7IC4uLiB9Ci0vLyAgIFRFU1Rf
RihGb29UZXN0LCBCYXopIHsgLi4uIH0KLS8vCi0vLyBUZXN0IGlzIG5vdCBjb3B5YWJsZS4KLWNs
YXNzIEdURVNUX0FQSV8gVGVzdCB7Ci0gcHVibGljOgotICBmcmllbmQgY2xhc3MgVGVzdEluZm87
Ci0KLSAgLy8gRGVmaW5lcyB0eXBlcyBmb3IgcG9pbnRlcnMgdG8gZnVuY3Rpb25zIHRoYXQgc2V0
IHVwIGFuZCB0ZWFyIGRvd24KLSAgLy8gYSB0ZXN0IGNhc2UuCi0gIHR5cGVkZWYgaW50ZXJuYWw6
OlNldFVwVGVzdENhc2VGdW5jIFNldFVwVGVzdENhc2VGdW5jOwotICB0eXBlZGVmIGludGVybmFs
OjpUZWFyRG93blRlc3RDYXNlRnVuYyBUZWFyRG93blRlc3RDYXNlRnVuYzsKLQotICAvLyBUaGUg
ZCd0b3IgaXMgdmlydHVhbCBhcyB3ZSBpbnRlbmQgdG8gaW5oZXJpdCBmcm9tIFRlc3QuCi0gIHZp
cnR1YWwgflRlc3QoKTsKLQotICAvLyBTZXRzIHVwIHRoZSBzdHVmZiBzaGFyZWQgYnkgYWxsIHRl
c3RzIGluIHRoaXMgdGVzdCBjYXNlLgotICAvLwotICAvLyBHb29nbGUgVGVzdCB3aWxsIGNhbGwg
Rm9vOjpTZXRVcFRlc3RDYXNlKCkgYmVmb3JlIHJ1bm5pbmcgdGhlIGZpcnN0Ci0gIC8vIHRlc3Qg
aW4gdGVzdCBjYXNlIEZvby4gIEhlbmNlIGEgc3ViLWNsYXNzIGNhbiBkZWZpbmUgaXRzIG93bgot
ICAvLyBTZXRVcFRlc3RDYXNlKCkgbWV0aG9kIHRvIHNoYWRvdyB0aGUgb25lIGRlZmluZWQgaW4g
dGhlIHN1cGVyCi0gIC8vIGNsYXNzLgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkge30K
LQotICAvLyBUZWFycyBkb3duIHRoZSBzdHVmZiBzaGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoaXMg
dGVzdCBjYXNlLgotICAvLwotICAvLyBHb29nbGUgVGVzdCB3aWxsIGNhbGwgRm9vOjpUZWFyRG93
blRlc3RDYXNlKCkgYWZ0ZXIgcnVubmluZyB0aGUgbGFzdAotICAvLyB0ZXN0IGluIHRlc3QgY2Fz
ZSBGb28uICBIZW5jZSBhIHN1Yi1jbGFzcyBjYW4gZGVmaW5lIGl0cyBvd24KLSAgLy8gVGVhckRv
d25UZXN0Q2FzZSgpIG1ldGhvZCB0byBzaGFkb3cgdGhlIG9uZSBkZWZpbmVkIGluIHRoZSBzdXBl
cgotICAvLyBjbGFzcy4KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHt9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhIGZhdGFsIGZhaWx1cmUu
Ci0gIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgc3RhdGljIGJv
b2wgSGFzTm9uZmF0YWxGYWlsdXJlKCk7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3Vy
cmVudCB0ZXN0IGhhcyBhIChlaXRoZXIgZmF0YWwgb3IKLSAgLy8gbm9uLWZhdGFsKSBmYWlsdXJl
LgotICBzdGF0aWMgYm9vbCBIYXNGYWlsdXJlKCkgeyByZXR1cm4gSGFzRmF0YWxGYWlsdXJlKCkg
fHwgSGFzTm9uZmF0YWxGYWlsdXJlKCk7IH0KLQotICAvLyBMb2dzIGEgcHJvcGVydHkgZm9yIHRo
ZSBjdXJyZW50IHRlc3QsIHRlc3QgY2FzZSwgb3IgZm9yIHRoZSBlbnRpcmUKLSAgLy8gaW52b2Nh
dGlvbiBvZiB0aGUgdGVzdCBwcm9ncmFtIHdoZW4gdXNlZCBvdXRzaWRlIG9mIHRoZSBjb250ZXh0
IG9mIGEKLSAgLy8gdGVzdCBjYXNlLiAgT25seSB0aGUgbGFzdCB2YWx1ZSBmb3IgYSBnaXZlbiBr
ZXkgaXMgcmVtZW1iZXJlZC4gIFRoZXNlCi0gIC8vIGFyZSBwdWJsaWMgc3RhdGljIHNvIHRoZXkg
Y2FuIGJlIGNhbGxlZCBmcm9tIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlCi0gIC8vIG5vdCBt
ZW1iZXJzIG9mIHRoZSB0ZXN0IGZpeHR1cmUuICBDYWxscyB0byBSZWNvcmRQcm9wZXJ0eSBtYWRl
IGR1cmluZwotICAvLyBsaWZlc3BhbiBvZiB0aGUgdGVzdCAoZnJvbSB0aGUgbW9tZW50IGl0cyBj
b25zdHJ1Y3RvciBzdGFydHMgdG8gdGhlCi0gIC8vIG1vbWVudCBpdHMgZGVzdHJ1Y3RvciBmaW5p
c2hlcykgd2lsbCBiZSBvdXRwdXQgaW4gWE1MIGFzIGF0dHJpYnV0ZXMgb2YKLSAgLy8gdGhlIDx0
ZXN0Y2FzZT4gZWxlbWVudC4gIFByb3BlcnRpZXMgcmVjb3JkZWQgZnJvbSBmaXh0dXJlJ3MKLSAg
Ly8gU2V0VXBUZXN0Q2FzZSBvciBUZWFyRG93blRlc3RDYXNlIGFyZSBsb2dnZWQgYXMgYXR0cmli
dXRlcyBvZiB0aGUKLSAgLy8gY29ycmVzcG9uZGluZyA8dGVzdHN1aXRlPiBlbGVtZW50LiAgQ2Fs
bHMgdG8gUmVjb3JkUHJvcGVydHkgbWFkZSBpbiB0aGUKLSAgLy8gZ2xvYmFsIGNvbnRleHQgKGJl
Zm9yZSBvciBhZnRlciBpbnZvY2F0aW9uIG9mIFJVTl9BTExfVEVTVFMgYW5kIGZyb20KLSAgLy8g
U2V0VXAvVGVhckRvd24gbWV0aG9kIG9mIEVudmlyb25tZW50IG9iamVjdHMgcmVnaXN0ZXJlZCB3
aXRoIEdvb2dsZQotICAvLyBUZXN0KSB3aWxsIGJlIG91dHB1dCBhcyBhdHRyaWJ1dGVzIG9mIHRo
ZSA8dGVzdHN1aXRlcz4gZWxlbWVudC4KLSAgc3RhdGljIHZvaWQgUmVjb3JkUHJvcGVydHkoY29u
c3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKTsKLSAgc3RhdGlj
IHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKTsK
LQotIHByb3RlY3RlZDoKLSAgLy8gQ3JlYXRlcyBhIFRlc3Qgb2JqZWN0LgotICBUZXN0KCk7Ci0K
LSAgLy8gU2V0cyB1cCB0aGUgdGVzdCBmaXh0dXJlLgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKTsK
LQotICAvLyBUZWFycyBkb3duIHRoZSB0ZXN0IGZpeHR1cmUuCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpOwotCi0gcHJpdmF0ZToKLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgY3VycmVudCB0
ZXN0IGhhcyB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzIGFzCi0gIC8vIHRoZSBmaXJzdCB0ZXN0IGlu
IHRoZSBjdXJyZW50IHRlc3QgY2FzZS4KLSAgc3RhdGljIGJvb2wgSGFzU2FtZUZpeHR1cmVDbGFz
cygpOwotCi0gIC8vIFJ1bnMgdGhlIHRlc3QgYWZ0ZXIgdGhlIHRlc3QgZml4dHVyZSBoYXMgYmVl
biBzZXQgdXAuCi0gIC8vCi0gIC8vIEEgc3ViLWNsYXNzIG11c3QgaW1wbGVtZW50IHRoaXMgdG8g
ZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljLgotICAvLwotICAvLyBETyBOT1QgT1ZFUlJJREUgVEhJUyBG
VU5DVElPTiBESVJFQ1RMWSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgLy8gSW5zdGVhZCwgdXNlIHRo
ZSBURVNUIG9yIFRFU1RfRiBtYWNyby4KLSAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCkgPSAwOwot
Ci0gIC8vIFNldHMgdXAsIGV4ZWN1dGVzLCBhbmQgdGVhcnMgZG93biB0aGUgdGVzdC4KLSAgdm9p
ZCBSdW4oKTsKLQotICAvLyBEZWxldGVzIHNlbGYuICBXZSBkZWxpYmVyYXRlbHkgcGljayBhbiB1
bnVzdWFsIG5hbWUgZm9yIHRoaXMKLSAgLy8gaW50ZXJuYWwgbWV0aG9kIHRvIGF2b2lkIGNsYXNo
aW5nIHdpdGggbmFtZXMgdXNlZCBpbiB1c2VyIFRFU1RzLgotICB2b2lkIERlbGV0ZVNlbGZfKCkg
eyBkZWxldGUgdGhpczsgfQotCi0gIGNvbnN0IGludGVybmFsOjpzY29wZWRfcHRyPCBHVEVTVF9G
TEFHX1NBVkVSXyA+IGd0ZXN0X2ZsYWdfc2F2ZXJfOwotCi0gIC8vIE9mdGVuIGEgdXNlciBtaXNz
cGVsbHMgU2V0VXAoKSBhcyBTZXR1cCgpIGFuZCBzcGVuZHMgYSBsb25nIHRpbWUKLSAgLy8gd29u
ZGVyaW5nIHdoeSBpdCBpcyBuZXZlciBjYWxsZWQgYnkgR29vZ2xlIFRlc3QuICBUaGUgZGVjbGFy
YXRpb24gb2YKLSAgLy8gdGhlIGZvbGxvd2luZyBtZXRob2QgaXMgc29sZWx5IGZvciBjYXRjaGlu
ZyBzdWNoIGFuIGVycm9yIGF0Ci0gIC8vIGNvbXBpbGUgdGltZToKLSAgLy8KLSAgLy8gICAtIFRo
ZSByZXR1cm4gdHlwZSBpcyBkZWxpYmVyYXRlbHkgY2hvc2VuIHRvIGJlIG5vdCB2b2lkLCBzbyBp
dAotICAvLyAgIHdpbGwgYmUgYSBjb25mbGljdCBpZiB2b2lkIFNldHVwKCkgaXMgZGVjbGFyZWQg
aW4gdGhlIHVzZXIncwotICAvLyAgIHRlc3QgZml4dHVyZS4KLSAgLy8KLSAgLy8gICAtIFRoaXMg
bWV0aG9kIGlzIHByaXZhdGUsIHNvIGl0IHdpbGwgYmUgYW5vdGhlciBjb21waWxlciBlcnJvcgot
ICAvLyAgIGlmIHRoZSBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIHVzZXIncyB0ZXN0IGZpeHR1
cmUuCi0gIC8vCi0gIC8vIERPIE5PVCBPVkVSUklERSBUSElTIEZVTkNUSU9OLgotICAvLwotICAv
LyBJZiB5b3Ugc2VlIGFuIGVycm9yIGFib3V0IG92ZXJyaWRpbmcgdGhlIGZvbGxvd2luZyBmdW5j
dGlvbiBvcgotICAvLyBhYm91dCBpdCBiZWluZyBwcml2YXRlLCB5b3UgaGF2ZSBtaXMtc3BlbGxl
ZCBTZXRVcCgpIGFzIFNldHVwKCkuCi0gIHN0cnVjdCBTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9T
ZXRVcCB7fTsKLSAgdmlydHVhbCBTZXR1cF9zaG91bGRfYmVfc3BlbGxlZF9TZXRVcCogU2V0dXAo
KSB7IHJldHVybiBOVUxMOyB9Ci0KLSAgLy8gV2UgZGlzYWxsb3cgY29weWluZyBUZXN0cy4KLSAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0KTsKLX07Ci0KLXR5cGVkZWYgaW50
ZXJuYWw6OlRpbWVJbk1pbGxpcyBUaW1lSW5NaWxsaXM7Ci0KLS8vIEEgY29weWFibGUgb2JqZWN0
IHJlcHJlc2VudGluZyBhIHVzZXIgc3BlY2lmaWVkIHRlc3QgcHJvcGVydHkgd2hpY2ggY2FuIGJl
Ci0vLyBvdXRwdXQgYXMgYSBrZXkvdmFsdWUgc3RyaW5nIHBhaXIuCi0vLwotLy8gRG9uJ3QgaW5o
ZXJpdCBmcm9tIFRlc3RQcm9wZXJ0eSBhcyBpdHMgZGVzdHJ1Y3RvciBpcyBub3QgdmlydHVhbC4K
LWNsYXNzIFRlc3RQcm9wZXJ0eSB7Ci0gcHVibGljOgotICAvLyBDJ3Rvci4gIFRlc3RQcm9wZXJ0
eSBkb2VzIE5PVCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgLy8gQWx3YXlzIHVzZSB0
aGlzIGNvbnN0cnVjdG9yICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCi0gIC8vIFRlc3RQ
cm9wZXJ0eSBvYmplY3QuCi0gIFRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgYV9rZXks
IGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6Ci0gICAga2V5XyhhX2tleSksIHZhbHVlXyhh
X3ZhbHVlKSB7Ci0gIH0KLQotICAvLyBHZXRzIHRoZSB1c2VyIHN1cHBsaWVkIGtleS4KLSAgY29u
c3QgY2hhcioga2V5KCkgY29uc3QgewotICAgIHJldHVybiBrZXlfLmNfc3RyKCk7Ci0gIH0KLQot
ICAvLyBHZXRzIHRoZSB1c2VyIHN1cHBsaWVkIHZhbHVlLgotICBjb25zdCBjaGFyKiB2YWx1ZSgp
IGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfLmNfc3RyKCk7Ci0gIH0KLQotICAvLyBTZXRzIGEg
bmV3IHZhbHVlLCBvdmVycmlkaW5nIHRoZSBvbmUgc3VwcGxpZWQgaW4gdGhlIGNvbnN0cnVjdG9y
LgotICB2b2lkIFNldFZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBuZXdfdmFsdWUpIHsKLSAgICB2
YWx1ZV8gPSBuZXdfdmFsdWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIFRoZSBrZXkgc3VwcGxp
ZWQgYnkgdGhlIHVzZXIuCi0gIHN0ZDo6c3RyaW5nIGtleV87Ci0gIC8vIFRoZSB2YWx1ZSBzdXBw
bGllZCBieSB0aGUgdXNlci4KLSAgc3RkOjpzdHJpbmcgdmFsdWVfOwotfTsKLQotLy8gVGhlIHJl
c3VsdCBvZiBhIHNpbmdsZSBUZXN0LiAgVGhpcyBpbmNsdWRlcyBhIGxpc3Qgb2YKLS8vIFRlc3RQ
YXJ0UmVzdWx0cywgYSBsaXN0IG9mIFRlc3RQcm9wZXJ0aWVzLCBhIGNvdW50IG9mIGhvdyBtYW55
Ci0vLyBkZWF0aCB0ZXN0cyB0aGVyZSBhcmUgaW4gdGhlIFRlc3QsIGFuZCBob3cgbXVjaCB0aW1l
IGl0IHRvb2sgdG8gcnVuCi0vLyB0aGUgVGVzdC4KLS8vCi0vLyBUZXN0UmVzdWx0IGlzIG5vdCBj
b3B5YWJsZS4KLWNsYXNzIEdURVNUX0FQSV8gVGVzdFJlc3VsdCB7Ci0gcHVibGljOgotICAvLyBD
cmVhdGVzIGFuIGVtcHR5IFRlc3RSZXN1bHQuCi0gIFRlc3RSZXN1bHQoKTsKLQotICAvLyBEJ3Rv
ci4gIERvIG5vdCBpbmhlcml0IGZyb20gVGVzdFJlc3VsdC4KLSAgflRlc3RSZXN1bHQoKTsKLQot
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgcGFydHMuICBUaGlzIGlzIHRoZSBzdW0g
b2YgdGhlIG51bWJlcgotICAvLyBvZiBzdWNjZXNzZnVsIHRlc3QgcGFydHMgYW5kIHRoZSBudW1i
ZXIgb2YgZmFpbGVkIHRlc3QgcGFydHMuCi0gIGludCB0b3RhbF9wYXJ0X2NvdW50KCkgY29uc3Q7
Ci0KLSAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSB0ZXN0IHByb3BlcnRpZXMuCi0gIGlu
dCB0ZXN0X3Byb3BlcnR5X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgdGVzdCBwYXNzZWQgKGkuZS4gbm8gdGVzdCBwYXJ0IGZhaWxlZCkuCi0gIGJvb2wgUGFzc2Vk
KCkgY29uc3QgeyByZXR1cm4gIUZhaWxlZCgpOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgdGVzdCBmYWlsZWQuCi0gIGJvb2wgRmFpbGVkKCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGUgdGVzdCBmYXRhbGx5IGZhaWxlZC4KLSAgYm9vbCBIYXNGYXRhbEZhaWx1cmUo
KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGhhcyBhIG5vbi1mYXRh
bCBmYWlsdXJlLgotICBib29sIEhhc05vbmZhdGFsRmFpbHVyZSgpIGNvbnN0OwotCi0gIC8vIFJl
dHVybnMgdGhlIGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgotICBUaW1lSW5NaWxsaXMg
ZWxhcHNlZF90aW1lKCkgY29uc3QgeyByZXR1cm4gZWxhcHNlZF90aW1lXzsgfQotCi0gIC8vIFJl
dHVybnMgdGhlIGktdGggdGVzdCBwYXJ0IHJlc3VsdCBhbW9uZyBhbGwgdGhlIHJlc3VsdHMuIGkg
Y2FuIHJhbmdlCi0gIC8vIGZyb20gMCB0byB0ZXN0X3Byb3BlcnR5X2NvdW50KCkgLSAxLiBJZiBp
IGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBhYm9ydHMKLSAgLy8gdGhlIHByb2dyYW0uCi0gIGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiBHZXRUZXN0UGFydFJlc3VsdChpbnQgaSkgY29uc3Q7Ci0KLSAgLy8g
UmV0dXJucyB0aGUgaS10aCB0ZXN0IHByb3BlcnR5LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLSAg
Ly8gdGVzdF9wcm9wZXJ0eV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwg
YWJvcnRzIHRoZQotICAvLyBwcm9ncmFtLgotICBjb25zdCBUZXN0UHJvcGVydHkmIEdldFRlc3RQ
cm9wZXJ0eShpbnQgaSkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3MgVGVzdElu
Zm87Ci0gIGZyaWVuZCBjbGFzcyBUZXN0Q2FzZTsKLSAgZnJpZW5kIGNsYXNzIFVuaXRUZXN0Owot
ICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9y
dGVyOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkV4ZWNEZWF0aFRlc3Q7Ci0gIGZyaWVuZCBj
bGFzcyBpbnRlcm5hbDo6VGVzdFJlc3VsdEFjY2Vzc29yOwotICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OlVuaXRUZXN0SW1wbDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpXaW5kb3dzRGVhdGhU
ZXN0OwotCi0gIC8vIEdldHMgdGhlIHZlY3RvciBvZiBUZXN0UGFydFJlc3VsdHMuCi0gIGNvbnN0
IHN0ZDo6dmVjdG9yPFRlc3RQYXJ0UmVzdWx0PiYgdGVzdF9wYXJ0X3Jlc3VsdHMoKSBjb25zdCB7
Ci0gICAgcmV0dXJuIHRlc3RfcGFydF9yZXN1bHRzXzsKLSAgfQotCi0gIC8vIEdldHMgdGhlIHZl
Y3RvciBvZiBUZXN0UHJvcGVydGllcy4KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFByb3BlcnR5
PiYgdGVzdF9wcm9wZXJ0aWVzKCkgY29uc3QgewotICAgIHJldHVybiB0ZXN0X3Byb3BlcnRpZXNf
OwotICB9Ci0KLSAgLy8gU2V0cyB0aGUgZWxhcHNlZCB0aW1lLgotICB2b2lkIHNldF9lbGFwc2Vk
X3RpbWUoVGltZUluTWlsbGlzIGVsYXBzZWQpIHsgZWxhcHNlZF90aW1lXyA9IGVsYXBzZWQ7IH0K
LQotICAvLyBBZGRzIGEgdGVzdCBwcm9wZXJ0eSB0byB0aGUgbGlzdC4gVGhlIHByb3BlcnR5IGlz
IHZhbGlkYXRlZCBhbmQgbWF5IGFkZAotICAvLyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlmIGludmFs
aWQgKGUuZy4sIGlmIGl0IGNvbmZsaWN0cyB3aXRoIHJlc2VydmVkCi0gIC8vIGtleSBuYW1lcyku
IElmIGEgcHJvcGVydHkgaXMgYWxyZWFkeSByZWNvcmRlZCBmb3IgdGhlIHNhbWUga2V5LCB0aGUK
LSAgLy8gdmFsdWUgd2lsbCBiZSB1cGRhdGVkLCByYXRoZXIgdGhhbiBzdG9yaW5nIG11bHRpcGxl
IHZhbHVlcyBmb3IgdGhlIHNhbWUKLSAgLy8ga2V5LiAgeG1sX2VsZW1lbnQgc3BlY2lmaWVzIHRo
ZSBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvcGVydHkgaXMgYmVpbmcKLSAgLy8gcmVjb3JkZWQg
YW5kIGlzIHVzZWQgZm9yIHZhbGlkYXRpb24uCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
c3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7Ci0KLSAgLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhl
IGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiBHb29nbGUgVGVzdAotICAvLyB0ZXN0Y2Fz
ZSB0YWdzLiAgUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyB2YWxpZC4KLSAgLy8gVE9E
TyhydXNzcik6IFZhbGlkYXRlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgbGVnYWwgYW5kIGh1bWFuIHJl
YWRhYmxlLgotICBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYgeG1sX2VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7Ci0KLSAgLy8gQWRkcyBhIHRlc3QgcGFy
dCByZXN1bHQgdG8gdGhlIGxpc3QuCi0gIHZvaWQgQWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpOwotCi0gIC8vIFJldHVybnMgdGhlIGRlYXRo
IHRlc3QgY291bnQuCi0gIGludCBkZWF0aF90ZXN0X2NvdW50KCkgY29uc3QgeyByZXR1cm4gZGVh
dGhfdGVzdF9jb3VudF87IH0KLQotICAvLyBJbmNyZW1lbnRzIHRoZSBkZWF0aCB0ZXN0IGNvdW50
LCByZXR1cm5pbmcgdGhlIG5ldyBjb3VudC4KLSAgaW50IGluY3JlbWVudF9kZWF0aF90ZXN0X2Nv
dW50KCkgeyByZXR1cm4gKytkZWF0aF90ZXN0X2NvdW50XzsgfQotCi0gIC8vIENsZWFycyB0aGUg
dGVzdCBwYXJ0IHJlc3VsdHMuCi0gIHZvaWQgQ2xlYXJUZXN0UGFydFJlc3VsdHMoKTsKLQotICAv
LyBDbGVhcnMgdGhlIG9iamVjdC4KLSAgdm9pZCBDbGVhcigpOwotCi0gIC8vIFByb3RlY3RzIG11
dGFibGUgc3RhdGUgb2YgdGhlIHByb3BlcnR5IHZlY3RvciBhbmQgb2Ygb3duZWQKLSAgLy8gcHJv
cGVydGllcywgd2hvc2UgdmFsdWVzIG1heSBiZSB1cGRhdGVkLgotICBpbnRlcm5hbDo6TXV0ZXgg
dGVzdF9wcm9wZXJpdGVzX211dGV4XzsKLQotICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RQYXJ0UmVz
dWx0cwotICBzdGQ6OnZlY3RvcjxUZXN0UGFydFJlc3VsdD4gdGVzdF9wYXJ0X3Jlc3VsdHNfOwot
ICAvLyBUaGUgdmVjdG9yIG9mIFRlc3RQcm9wZXJ0aWVzCi0gIHN0ZDo6dmVjdG9yPFRlc3RQcm9w
ZXJ0eT4gdGVzdF9wcm9wZXJ0aWVzXzsKLSAgLy8gUnVubmluZyBjb3VudCBvZiBkZWF0aCB0ZXN0
cy4KLSAgaW50IGRlYXRoX3Rlc3RfY291bnRfOwotICAvLyBUaGUgZWxhcHNlZCB0aW1lLCBpbiBt
aWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwotCi0gIC8vIFdlIGRp
c2FsbG93IGNvcHlpbmcgVGVzdFJlc3VsdC4KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhUZXN0UmVzdWx0KTsKLX07ICAvLyBjbGFzcyBUZXN0UmVzdWx0Ci0KLS8vIEEgVGVzdElu
Zm8gb2JqZWN0IHN0b3JlcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFib3V0IGEgdGVzdDoK
LS8vCi0vLyAgIFRlc3QgY2FzZSBuYW1lCi0vLyAgIFRlc3QgbmFtZQotLy8gICBXaGV0aGVyIHRo
ZSB0ZXN0IHNob3VsZCBiZSBydW4KLS8vICAgQSBmdW5jdGlvbiBwb2ludGVyIHRoYXQgY3JlYXRl
cyB0aGUgdGVzdCBvYmplY3Qgd2hlbiBpbnZva2VkCi0vLyAgIFRlc3QgcmVzdWx0Ci0vLwotLy8g
VGhlIGNvbnN0cnVjdG9yIG9mIFRlc3RJbmZvIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgVW5p
dFRlc3QKLS8vIHNpbmdsZXRvbiBzdWNoIHRoYXQgdGhlIFJVTl9BTExfVEVTVFMoKSBtYWNybyBr
bm93cyB3aGljaCB0ZXN0cyB0bwotLy8gcnVuLgotY2xhc3MgR1RFU1RfQVBJXyBUZXN0SW5mbyB7
Ci0gcHVibGljOgotICAvLyBEZXN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuICBUaGlzIGZ1bmN0
aW9uIGlzIG5vdCB2aXJ0dWFsLCBzbwotICAvLyBkb24ndCBpbmhlcml0IGZyb20gVGVzdEluZm8u
Ci0gIH5UZXN0SW5mbygpOwotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lLgotICBj
b25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1l
Xy5jX3N0cigpOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBuYW1lLgotICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMg
dGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEg
dHlwZWQKLSAgLy8gb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KLSAgY29uc3QgY2hhciog
dHlwZV9wYXJhbSgpIGNvbnN0IHsKLSAgICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkK
LSAgICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIoKTsKLSAgICByZXR1cm4gTlVMTDsKLSAg
fQotCi0gIC8vIFJldHVybnMgdGhlIHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlIHBh
cmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzCi0gIC8vIGlzIG5vdCBhIHZhbHVlLXBhcmFtZXRlcml6
ZWQgdGVzdC4KLSAgY29uc3QgY2hhciogdmFsdWVfcGFyYW0oKSBjb25zdCB7Ci0gICAgaWYgKHZh
bHVlX3BhcmFtXy5nZXQoKSAhPSBOVUxMKQotICAgICAgcmV0dXJuIHZhbHVlX3BhcmFtXy0+Y19z
dHIoKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGZpbGUgbmFt
ZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KLSAgY29uc3QgY2hhciogZmlsZSgpIGNvbnN0
IHsgcmV0dXJuIGxvY2F0aW9uXy5maWxlLmNfc3RyKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBs
aW5lIHdoZXJlIHRoaXMgdGVzdCBpcyBkZWZpbmVkLgotICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0
dXJuIGxvY2F0aW9uXy5saW5lOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGVzdCBz
aG91bGQgcnVuLCB0aGF0IGlzIGlmIHRoZSB0ZXN0IGlzIG5vdAotICAvLyBkaXNhYmxlZCAob3Ig
aXQgaXMgZGlzYWJsZWQgYnV0IHRoZSBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIGhhcwot
ICAvLyBiZWVuIHNwZWNpZmllZCkgYW5kIGl0cyBmdWxsIG5hbWUgbWF0Y2hlcyB0aGUgdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgotICAvLwotICAvLyBHb29nbGUgVGVzdCBhbGxvd3MgdGhlIHVzZXIg
dG8gZmlsdGVyIHRoZSB0ZXN0cyBieSB0aGVpciBmdWxsIG5hbWVzLgotICAvLyBUaGUgZnVsbCBu
YW1lIG9mIGEgdGVzdCBCYXIgaW4gdGVzdCBjYXNlIEZvbyBpcyBkZWZpbmVkIGFzCi0gIC8vICJG
b28uQmFyIi4gIE9ubHkgdGhlIHRlc3RzIHRoYXQgbWF0Y2ggdGhlIGZpbHRlciB3aWxsIHJ1bi4K
LSAgLy8KLSAgLy8gQSBmaWx0ZXIgaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iIChu
b3QgcmVnZXgpIHBhdHRlcm5zLAotICAvLyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgJy0nIGFu
ZCBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mCi0gIC8vIG5lZ2F0aXZlIHBhdHRlcm5zICh0ZXN0
cyB0byBleGNsdWRlKS4gIEEgdGVzdCBpcyBydW4gaWYgaXQKLSAgLy8gbWF0Y2hlcyBvbmUgb2Yg
dGhlIHBvc2l0aXZlIHBhdHRlcm5zIGFuZCBkb2VzIG5vdCBtYXRjaCBhbnkgb2YKLSAgLy8gdGhl
IG5lZ2F0aXZlIHBhdHRlcm5zLgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwgKkEqOkZvby4qIGlz
IGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBhbnkgc3RyaW5nIHRoYXQKLSAgLy8gY29udGFpbnMgdGhl
IGNoYXJhY3RlciAnQScgb3Igc3RhcnRzIHdpdGggIkZvby4iLgotICBib29sIHNob3VsZF9ydW4o
KSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhpcyB0ZXN0IHdpbGwgYXBwZWFyIGluIHRoZSBYTUwgcmVwb3J0LgotICBib29sIGlzX3JlcG9y
dGFibGUoKSBjb25zdCB7Ci0gICAgLy8gRm9yIG5vdywgdGhlIFhNTCByZXBvcnQgaW5jbHVkZXMg
YWxsIHRlc3RzIG1hdGNoaW5nIHRoZSBmaWx0ZXIuCi0gICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2Ug
bWF5IHRyaW0gdGVzdHMgdGhhdCBhcmUgZXhjbHVkZWQgYmVjYXVzZSBvZgotICAgIC8vIHNoYXJk
aW5nLgotICAgIHJldHVybiBtYXRjaGVzX2ZpbHRlcl87Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRo
ZSByZXN1bHQgb2YgdGhlIHRlc3QuCi0gIGNvbnN0IFRlc3RSZXN1bHQqIHJlc3VsdCgpIGNvbnN0
IHsgcmV0dXJuICZyZXN1bHRfOyB9Ci0KLSBwcml2YXRlOgotI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUCi0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6RGVmYXVsdERlYXRoVGVzdEZhY3Rvcnk7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0gIGZyaWVuZCBjbGFzcyBUZXN0OwotICBm
cmllbmQgY2xhc3MgVGVzdENhc2U7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5pdFRlc3RJ
bXBsOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKLSAg
ZnJpZW5kIFRlc3RJbmZvKiBpbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAg
ICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCi0g
ICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAotICAgICAgY29uc3QgY2hhciogdmFsdWVfcGFy
YW0sCi0gICAgICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCi0gICAgICBp
bnRlcm5hbDo6VHlwZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICBUZXN0OjpTZXRVcFRlc3RD
YXNlRnVuYyBzZXRfdXBfdGMsCi0gICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFy
X2Rvd25fdGMsCi0gICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKLQot
ICAvLyBDb25zdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LiBUaGUgbmV3bHkgY29uc3RydWN0ZWQg
aW5zdGFuY2UgYXNzdW1lcwotICAvLyBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0Lgot
ICBUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAotICAgICAgICAgICBjb25zdCBjaGFyKiBhX3R5cGVf
cGFyYW0sICAgLy8gTlVMTCBpZiBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdAotICAgICAg
ICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLCAgLy8gTlVMTCBpZiBub3QgYSB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QKLSAgICAgICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBhX2Nv
ZGVfbG9jYXRpb24sCi0gICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19p
ZCwKLSAgICAgICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSk7Ci0KLSAg
Ly8gSW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGRlYXRoIHRlc3RzIGVuY291bnRlcmVkIGluIHRo
aXMgdGVzdCBzbwotICAvLyBmYXIuCi0gIGludCBpbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgp
IHsKLSAgICByZXR1cm4gcmVzdWx0Xy5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpOwotICB9
Ci0KLSAgLy8gQ3JlYXRlcyB0aGUgdGVzdCBvYmplY3QsIHJ1bnMgaXQsIHJlY29yZHMgaXRzIHJl
c3VsdCwgYW5kIHRoZW4KLSAgLy8gZGVsZXRlcyBpdC4KLSAgdm9pZCBSdW4oKTsKLQotICBzdGF0
aWMgdm9pZCBDbGVhclRlc3RSZXN1bHQoVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAgIHRlc3Rf
aW5mby0+cmVzdWx0Xy5DbGVhcigpOwotICB9Ci0KLSAgLy8gVGhlc2UgZmllbGRzIGFyZSBpbW11
dGFibGUgcHJvcGVydGllcyBvZiB0aGUgdGVzdC4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9j
YXNlX25hbWVfOyAgICAgLy8gVGVzdCBjYXNlIG5hbWUKLSAgY29uc3Qgc3RkOjpzdHJpbmcgbmFt
ZV87ICAgICAgICAgICAgICAgLy8gVGVzdCBuYW1lCi0gIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRl
ciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYQotICAvLyB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpz
dGQ6OnN0cmluZz4gdHlwZV9wYXJhbV87Ci0gIC8vIFRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IHZhbHVlIHBhcmFtZXRlciwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhCi0gIC8vIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpz
dGQ6OnN0cmluZz4gdmFsdWVfcGFyYW1fOwotICBpbnRlcm5hbDo6Q29kZUxvY2F0aW9uIGxvY2F0
aW9uXzsKLSAgY29uc3QgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkXzsgICAvLyBJ
RCBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzCi0gIGJvb2wgc2hvdWxkX3J1bl87ICAgICAgICAg
ICAgICAgICAvLyBUcnVlIGlmZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1bgotICBib29sIGlzX2Rpc2Fi
bGVkXzsgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IGlzIGRpc2FibGVkCi0g
IGJvb2wgbWF0Y2hlc19maWx0ZXJfOyAgICAgICAgICAgICAvLyBUcnVlIGlmIHRoaXMgdGVzdCBt
YXRjaGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlci1z
cGVjaWZpZWQgZmlsdGVyLgotICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBjb25zdCBmYWN0
b3J5XzsgIC8vIFRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0ZXN0IG9iamVjdAotCi0gIC8vIFRoaXMg
ZmllbGQgaXMgbXV0YWJsZSBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIHJ1bm5pbmcgdGhl
Ci0gIC8vIHRlc3QgZm9yIHRoZSBzZWNvbmQgdGltZS4KLSAgVGVzdFJlc3VsdCByZXN1bHRfOwot
Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEluZm8pOwotfTsKLQotLy8g
QSB0ZXN0IGNhc2UsIHdoaWNoIGNvbnNpc3RzIG9mIGEgdmVjdG9yIG9mIFRlc3RJbmZvcy4KLS8v
Ci0vLyBUZXN0Q2FzZSBpcyBub3QgY29weWFibGUuCi1jbGFzcyBHVEVTVF9BUElfIFRlc3RDYXNl
IHsKLSBwdWJsaWM6Ci0gIC8vIENyZWF0ZXMgYSBUZXN0Q2FzZSB3aXRoIHRoZSBnaXZlbiBuYW1l
LgotICAvLwotICAvLyBUZXN0Q2FzZSBkb2VzIE5PVCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rv
ci4gIEFsd2F5cyB1c2UgdGhpcwotICAvLyBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBUZXN0Q2Fz
ZSBvYmplY3QuCi0gIC8vCi0gIC8vIEFyZ3VtZW50czoKLSAgLy8KLSAgLy8gICBuYW1lOiAgICAg
ICAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotICAvLyAgIGFfdHlwZV9wYXJhbTogdGhlIG5hbWUg
b2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgotICAvLyAgICAgICAgICAg
ICAgICAgdGhpcyBpcyBub3QgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KLSAgLy8gICBzZXRf
dXBfdGM6ICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBj
YXNlCi0gIC8vICAgdGVhcl9kb3duX3RjOiBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRl
YXJzIGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBjaGFyKiBhX3R5cGVfcGFyYW0sCi0gICAgICAgICAgIFRlc3Q6OlNldFVwVGVzdENhc2VGdW5j
IHNldF91cF90YywKLSAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9k
b3duX3RjKTsKLQotICAvLyBEZXN0cnVjdG9yIG9mIFRlc3RDYXNlLgotICB2aXJ0dWFsIH5UZXN0
Q2FzZSgpOwotCi0gIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRlc3RDYXNlLgotICBjb25zdCBj
aGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVy
bnMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBlLCBvciBOVUxMIGlmIHRoaXMgaXMgbm90
IGEKLSAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KLSAgY29uc3QgY2hhciogdHlw
ZV9wYXJhbSgpIGNvbnN0IHsKLSAgICBpZiAodHlwZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKLSAg
ICAgIHJldHVybiB0eXBlX3BhcmFtXy0+Y19zdHIoKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQot
Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBzaG91bGQg
cnVuLgotICBib29sIHNob3VsZF9ydW4oKSBjb25zdCB7IHJldHVybiBzaG91bGRfcnVuXzsgfQot
Ci0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlLgotICBpbnQgc3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgaW50IGZhaWxl
ZF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVk
IHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KLSAgaW50IHJl
cG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51
bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgaW50IGRpc2FibGVk
X3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdG8g
YmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KLSAgaW50IHJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0OwotCi0gIC8vIEdldCB0aGUgbnVtYmVyIG9mIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlIHRoYXQgc2hvdWxkIHJ1bi4KLSAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3Q7Ci0K
LSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAg
aW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSB0ZXN0IGNhc2UgcGFzc2VkLgotICBib29sIFBhc3NlZCgpIGNvbnN0IHsgcmV0dXJuICFGYWls
ZWQoKTsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgY2FzZSBmYWlsZWQuCi0g
IGJvb2wgRmFpbGVkKCkgY29uc3QgeyByZXR1cm4gZmFpbGVkX3Rlc3RfY291bnQoKSA+IDA7IH0K
LQotICAvLyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KLSAgVGlt
ZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0K
LQotICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgYW1vbmcgYWxsIHRoZSB0ZXN0cy4gaSBjYW4g
cmFuZ2UgZnJvbSAwIHRvCi0gIC8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90
IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KLSAgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJ
bmZvKGludCBpKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IHRoYXQgaG9s
ZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZwotICAvLyBleGVjdXRpb24gb2YgU2V0
VXBUZXN0Q2FzZSBhbmQgVGVhckRvd25UZXN0Q2FzZS4KLSAgY29uc3QgVGVzdFJlc3VsdCYgYWRf
aG9jX3Rlc3RfcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gYWRfaG9jX3Rlc3RfcmVzdWx0XzsgfQot
Ci0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIFRlc3Q7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5h
bDo6VW5pdFRlc3RJbXBsOwotCi0gIC8vIEdldHMgdGhlIChtdXRhYmxlKSB2ZWN0b3Igb2YgVGVz
dEluZm9zIGluIHRoaXMgVGVzdENhc2UuCi0gIHN0ZDo6dmVjdG9yPFRlc3RJbmZvKj4mIHRlc3Rf
aW5mb19saXN0KCkgeyByZXR1cm4gdGVzdF9pbmZvX2xpc3RfOyB9Ci0KLSAgLy8gR2V0cyB0aGUg
KGltbXV0YWJsZSkgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGlzIFRlc3RDYXNlLgotICBjb25z
dCBzdGQ6OnZlY3RvcjxUZXN0SW5mbyo+JiB0ZXN0X2luZm9fbGlzdCgpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gdGVzdF9pbmZvX2xpc3RfOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0
IGFtb25nIGFsbCB0aGUgdGVzdHMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwotICAvLyB0b3RhbF90
ZXN0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwu
Ci0gIFRlc3RJbmZvKiBHZXRNdXRhYmxlVGVzdEluZm8oaW50IGkpOwotCi0gIC8vIFNldHMgdGhl
IHNob3VsZF9ydW4gbWVtYmVyLgotICB2b2lkIHNldF9zaG91bGRfcnVuKGJvb2wgc2hvdWxkKSB7
IHNob3VsZF9ydW5fID0gc2hvdWxkOyB9Ci0KLSAgLy8gQWRkcyBhIFRlc3RJbmZvIHRvIHRoaXMg
dGVzdCBjYXNlLiAgV2lsbCBkZWxldGUgdGhlIFRlc3RJbmZvIHVwb24KLSAgLy8gZGVzdHJ1Y3Rp
b24gb2YgdGhlIFRlc3RDYXNlIG9iamVjdC4KLSAgdm9pZCBBZGRUZXN0SW5mbyhUZXN0SW5mbyAq
IHRlc3RfaW5mbyk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cyBpbiB0
aGlzIHRlc3QgY2FzZS4KLSAgdm9pZCBDbGVhclJlc3VsdCgpOwotCi0gIC8vIENsZWFycyB0aGUg
cmVzdWx0cyBvZiBhbGwgdGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4KLSAgc3RhdGljIHZv
aWQgQ2xlYXJUZXN0Q2FzZVJlc3VsdChUZXN0Q2FzZSogdGVzdF9jYXNlKSB7Ci0gICAgdGVzdF9j
YXNlLT5DbGVhclJlc3VsdCgpOwotICB9Ci0KLSAgLy8gUnVucyBldmVyeSB0ZXN0IGluIHRoaXMg
VGVzdENhc2UuCi0gIHZvaWQgUnVuKCk7Ci0KLSAgLy8gUnVucyBTZXRVcFRlc3RDYXNlKCkgZm9y
IHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBwZXIgaXMgbmVlZGVkCi0gIC8vIGZvciBjYXRjaGlu
ZyBleGNlcHRpb25zIHRocm93biBmcm9tIFNldFVwVGVzdENhc2UoKS4KLSAgdm9pZCBSdW5TZXRV
cFRlc3RDYXNlKCkgeyAoKnNldF91cF90Y18pKCk7IH0KLQotICAvLyBSdW5zIFRlYXJEb3duVGVz
dENhc2UoKSBmb3IgdGhpcyBUZXN0Q2FzZS4gIFRoaXMgd3JhcHBlciBpcwotICAvLyBuZWVkZWQg
Zm9yIGNhdGNoaW5nIGV4Y2VwdGlvbnMgdGhyb3duIGZyb20gVGVhckRvd25UZXN0Q2FzZSgpLgot
ICB2b2lkIFJ1blRlYXJEb3duVGVzdENhc2UoKSB7ICgqdGVhcl9kb3duX3RjXykoKTsgfQotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBwYXNzZWQuCi0gIHN0YXRpYyBib29sIFRlc3RQYXNz
ZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAgIHJldHVybiB0ZXN0X2luZm8tPnNo
b3VsZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5QYXNzZWQoKTsKLSAgfQotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBmYWlsZWQuCi0gIHN0YXRpYyBib29sIFRlc3RGYWlsZWQo
Y29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAgIHJldHVybiB0ZXN0X2luZm8tPnNob3Vs
ZF9ydW4oKSAmJiB0ZXN0X2luZm8tPnJlc3VsdCgpLT5GYWlsZWQoKTsKLSAgfQotCi0gIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgaXMgZGlzYWJsZWQgYW5kIHdpbGwgYmUgcmVwb3J0ZWQg
aW4gdGhlIFhNTAotICAvLyByZXBvcnQuCi0gIHN0YXRpYyBib29sIFRlc3RSZXBvcnRhYmxlRGlz
YWJsZWQoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAgIHJldHVybiB0ZXN0X2luZm8t
PmlzX3JlcG9ydGFibGUoKSAmJiB0ZXN0X2luZm8tPmlzX2Rpc2FibGVkXzsKLSAgfQotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGVzdCBpcyBkaXNhYmxlZC4KLSAgc3RhdGljIGJvb2wgVGVzdERp
c2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAgICByZXR1cm4gdGVzdF9pbmZv
LT5pc19kaXNhYmxlZF87Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3
aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJlcG9ydC4KLSAgc3RhdGljIGJvb2wgVGVzdFJlcG9ydGFi
bGUoY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAgIHJldHVybiB0ZXN0X2luZm8tPmlz
X3JlcG9ydGFibGUoKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGVz
dCBzaG91bGQgcnVuLgotICBzdGF0aWMgYm9vbCBTaG91bGRSdW5UZXN0KGNvbnN0IFRlc3RJbmZv
KiB0ZXN0X2luZm8pIHsKLSAgICByZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCk7Ci0gIH0K
LQotICAvLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIHZvaWQgU2h1
ZmZsZVRlc3RzKGludGVybmFsOjpSYW5kb20qIHJhbmRvbSk7Ci0KLSAgLy8gUmVzdG9yZXMgdGhl
IHRlc3Qgb3JkZXIgdG8gYmVmb3JlIHRoZSBmaXJzdCBzaHVmZmxlLgotICB2b2lkIFVuc2h1ZmZs
ZVRlc3RzKCk7Ci0KLSAgLy8gTmFtZSBvZiB0aGUgdGVzdCBjYXNlLgotICBzdGQ6OnN0cmluZyBu
YW1lXzsKLSAgLy8gTmFtZSBvZiB0aGUgcGFyYW1ldGVyIHR5cGUsIG9yIE5VTEwgaWYgdGhpcyBp
cyBub3QgYSB0eXBlZCBvciBhCi0gIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotICBjb25z
dCBpbnRlcm5hbDo6c2NvcGVkX3B0cjxjb25zdCA6OnN0ZDo6c3RyaW5nPiB0eXBlX3BhcmFtXzsK
LSAgLy8gVGhlIHZlY3RvciBvZiBUZXN0SW5mb3MgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBJ
dCBvd25zIHRoZQotICAvLyBlbGVtZW50cyBpbiB0aGUgdmVjdG9yLgotICBzdGQ6OnZlY3RvcjxU
ZXN0SW5mbyo+IHRlc3RfaW5mb19saXN0XzsKLSAgLy8gUHJvdmlkZXMgYSBsZXZlbCBvZiBpbmRp
cmVjdGlvbiBmb3IgdGhlIHRlc3QgbGlzdCB0byBhbGxvdyBlYXN5Ci0gIC8vIHNodWZmbGluZyBh
bmQgcmVzdG9yaW5nIHRoZSB0ZXN0IG9yZGVyLiAgVGhlIGktdGggZWxlbWVudCBpbiB0aGlzCi0g
IC8vIHZlY3RvciBpcyB0aGUgaW5kZXggb2YgdGhlIGktdGggdGVzdCBpbiB0aGUgc2h1ZmZsZWQg
dGVzdCBsaXN0LgotICBzdGQ6OnZlY3RvcjxpbnQ+IHRlc3RfaW5kaWNlc187Ci0gIC8vIFBvaW50
ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlLgotICBUZXN0OjpT
ZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGNfOwotICAvLyBQb2ludGVyIHRvIHRoZSBmdW5jdGlv
biB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZS4KLSAgVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjXzsKLSAgLy8gVHJ1ZSBpZmYgYW55IHRlc3QgaW4gdGhpcyB0ZXN0
IGNhc2Ugc2hvdWxkIHJ1bi4KLSAgYm9vbCBzaG91bGRfcnVuXzsKLSAgLy8gRWxhcHNlZCB0aW1l
LCBpbiBtaWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwotICAvLyBI
b2xkcyB0ZXN0IHByb3BlcnRpZXMgcmVjb3JkZWQgZHVyaW5nIGV4ZWN1dGlvbiBvZiBTZXRVcFRl
c3RDYXNlIGFuZAotICAvLyBUZWFyRG93blRlc3RDYXNlLgotICBUZXN0UmVzdWx0IGFkX2hvY190
ZXN0X3Jlc3VsdF87Ci0KLSAgLy8gV2UgZGlzYWxsb3cgY29weWluZyBUZXN0Q2FzZXMuCi0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdENhc2UpOwotfTsKLQotLy8gQW4gRW52
aXJvbm1lbnQgb2JqZWN0IGlzIGNhcGFibGUgb2Ygc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3du
IGFuCi0vLyBlbnZpcm9ubWVudC4gIFlvdSBzaG91bGQgc3ViY2xhc3MgdGhpcyB0byBkZWZpbmUg
eW91ciBvd24KLS8vIGVudmlyb25tZW50KHMpLgotLy8KLS8vIEFuIEVudmlyb25tZW50IG9iamVj
dCBkb2VzIHRoZSBzZXQtdXAgYW5kIHRlYXItZG93biBpbiB2aXJ0dWFsCi0vLyBtZXRob2RzIFNl
dFVwKCkgYW5kIFRlYXJEb3duKCkgaW5zdGVhZCBvZiB0aGUgY29uc3RydWN0b3IgYW5kIHRoZQot
Ly8gZGVzdHJ1Y3RvciwgYXM6Ci0vLwotLy8gICAxLiBZb3UgY2Fubm90IHNhZmVseSB0aHJvdyBm
cm9tIGEgZGVzdHJ1Y3Rvci4gIFRoaXMgaXMgYSBwcm9ibGVtCi0vLyAgICAgIGFzIGluIHNvbWUg
Y2FzZXMgR29vZ2xlIFRlc3QgaXMgdXNlZCB3aGVyZSBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBh
bmQKLS8vICAgICAgd2UgbWF5IHdhbnQgdG8gaW1wbGVtZW50IEFTU0VSVF8qIHVzaW5nIGV4Y2Vw
dGlvbnMgd2hlcmUgdGhleSBhcmUKLS8vICAgICAgYXZhaWxhYmxlLgotLy8gICAyLiBZb3UgY2Fu
bm90IHVzZSBBU1NFUlRfKiBkaXJlY3RseSBpbiBhIGNvbnN0cnVjdG9yIG9yCi0vLyAgICAgIGRl
c3RydWN0b3IuCi1jbGFzcyBFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICAvLyBUaGUgZCd0b3Ig
aXMgdmlydHVhbCBhcyB3ZSBuZWVkIHRvIHN1YmNsYXNzIEVudmlyb25tZW50LgotICB2aXJ0dWFs
IH5FbnZpcm9ubWVudCgpIHt9Ci0KLSAgLy8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRv
IHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHt9Ci0KLSAg
Ly8gT3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgaG93IHRvIHRlYXIgZG93biB0aGUgZW52aXJvbm1l
bnQuCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Ci0gcHJpdmF0ZToKLSAgLy8gSWYgeW91
IHNlZSBhbiBlcnJvciBhYm91dCBvdmVycmlkaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gb3IK
LSAgLy8gYWJvdXQgaXQgYmVpbmcgcHJpdmF0ZSwgeW91IGhhdmUgbWlzLXNwZWxsZWQgU2V0VXAo
KSBhcyBTZXR1cCgpLgotICBzdHJ1Y3QgU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAge307
Ci0gIHZpcnR1YWwgU2V0dXBfc2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAqIFNldHVwKCkgeyByZXR1
cm4gTlVMTDsgfQotfTsKLQotLy8gVGhlIGludGVyZmFjZSBmb3IgdHJhY2luZyBleGVjdXRpb24g
b2YgdGVzdHMuIFRoZSBtZXRob2RzIGFyZSBvcmdhbml6ZWQgaW4KLS8vIHRoZSBvcmRlciB0aGUg
Y29ycmVzcG9uZGluZyBldmVudHMgYXJlIGZpcmVkLgotY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXIg
ewotIHB1YmxpYzoKLSAgdmlydHVhbCB+VGVzdEV2ZW50TGlzdGVuZXIoKSB7fQotCi0gIC8vIEZp
cmVkIGJlZm9yZSBhbnkgdGVzdCBhY3Rpdml0eSBzdGFydHMuCi0gIHZpcnR1YWwgdm9pZCBPblRl
c3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgPSAwOwotCi0gIC8vIEZp
cmVkIGJlZm9yZSBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBzdGFydHMuICBUaGVyZSBtYXkgYmUg
bW9yZSB0aGFuCi0gIC8vIG9uZSBpdGVyYXRpb24gaWYgR1RFU1RfRkxBRyhyZXBlYXQpIGlzIHNl
dC4gaXRlcmF0aW9uIGlzIHRoZSBpdGVyYXRpb24KLSAgLy8gaW5kZXgsIHN0YXJ0aW5nIGZyb20g
MC4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1
bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0
aW9uKSA9IDA7Ci0KLSAgLy8gRmlyZWQgYmVmb3JlIGVudmlyb25tZW50IHNldC11cCBmb3IgZWFj
aCBpdGVyYXRpb24gb2YgdGVzdHMgc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVu
dHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0gMDsKLQotICAvLyBGaXJl
ZCBhZnRlciBlbnZpcm9ubWVudCBzZXQtdXAgZm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIGVu
ZHMuCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpID0gMDsKLQotICAvLyBGaXJlZCBiZWZvcmUgdGhlIHRlc3QgY2FzZSBzdGFy
dHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3Rf
Y2FzZSkgPSAwOwotCi0gIC8vIEZpcmVkIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuCi0gIHZpcnR1
YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9IDA7Ci0KLSAg
Ly8gRmlyZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRp
b24uCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0
JiB0ZXN0X3BhcnRfcmVzdWx0KSA9IDA7Ci0KLSAgLy8gRmlyZWQgYWZ0ZXIgdGhlIHRlc3QgZW5k
cy4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSA9
IDA7Ci0KLSAgLy8gRmlyZWQgYWZ0ZXIgdGhlIHRlc3QgY2FzZSBlbmRzLgotICB2aXJ0dWFsIHZv
aWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSA9IDA7Ci0KLSAgLy8g
RmlyZWQgYmVmb3JlIGVudmlyb25tZW50IHRlYXItZG93biBmb3IgZWFjaCBpdGVyYXRpb24gb2Yg
dGVzdHMgc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpID0gMDsKLQotICAvLyBGaXJlZCBhZnRlciBlbnZp
cm9ubWVudCB0ZWFyLWRvd24gZm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIGVuZHMuCi0gIHZp
cnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0
X3Rlc3QpID0gMDsKLQotICAvLyBGaXJlZCBhZnRlciBlYWNoIGl0ZXJhdGlvbiBvZiB0ZXN0cyBm
aW5pc2hlcy4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVy
YXRpb24pID0gMDsKLQotICAvLyBGaXJlZCBhZnRlciBhbGwgdGVzdCBhY3Rpdml0aWVzIGhhdmUg
ZW5kZWQuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiB1
bml0X3Rlc3QpID0gMDsKLX07Ci0KLS8vIFRoZSBjb252ZW5pZW5jZSBjbGFzcyBmb3IgdXNlcnMg
d2hvIG5lZWQgdG8gb3ZlcnJpZGUganVzdCBvbmUgb3IgdHdvCi0vLyBtZXRob2RzIGFuZCBhcmUg
bm90IGNvbmNlcm5lZCB0aGF0IGEgcG9zc2libGUgY2hhbmdlIHRvIGEgc2lnbmF0dXJlIG9mCi0v
LyB0aGUgbWV0aG9kcyB0aGV5IG92ZXJyaWRlIHdpbGwgbm90IGJlIGNhdWdodCBkdXJpbmcgdGhl
IGJ1aWxkLiAgRm9yCi0vLyBjb21tZW50cyBhYm91dCBlYWNoIG1ldGhvZCBwbGVhc2Ugc2VlIHRo
ZSBkZWZpbml0aW9uIG9mIFRlc3RFdmVudExpc3RlbmVyCi0vLyBhYm92ZS4KLWNsYXNzIEVtcHR5
VGVzdEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoK
LSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0
X3Rlc3QqLykge30KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVu
aXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IC8qaXRlcmF0aW9uKi8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1Nl
dFVwU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9p
ZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7
fQotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNvbnN0IFRlc3RDYXNlJiAvKnRlc3Rf
Y2FzZSovKSB7fQotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8q
dGVzdF9pbmZvKi8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykge30KLSAgdmlydHVhbCB2b2lkIE9u
VGVzdEVuZChjb25zdCBUZXN0SW5mbyYgLyp0ZXN0X2luZm8qLykge30KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHt9Ci0gIHZpcnR1
YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7fQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRl
cmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7fQotICB2aXJ0dWFsIHZvaWQg
T25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykge30KLX07Ci0K
LS8vIFRlc3RFdmVudExpc3RlbmVycyBsZXRzIHVzZXJzIGFkZCBsaXN0ZW5lcnMgdG8gdHJhY2sg
ZXZlbnRzIGluIEdvb2dsZSBUZXN0LgotY2xhc3MgR1RFU1RfQVBJXyBUZXN0RXZlbnRMaXN0ZW5l
cnMgewotIHB1YmxpYzoKLSAgVGVzdEV2ZW50TGlzdGVuZXJzKCk7Ci0gIH5UZXN0RXZlbnRMaXN0
ZW5lcnMoKTsKLQotICAvLyBBcHBlbmRzIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBlbmQgb2Yg
dGhlIGxpc3QuIEdvb2dsZSBUZXN0IGFzc3VtZXMKLSAgLy8gdGhlIG93bmVyc2hpcCBvZiB0aGUg
bGlzdGVuZXIgKGkuZS4gaXQgd2lsbCBkZWxldGUgdGhlIGxpc3RlbmVyIHdoZW4KLSAgLy8gdGhl
IHRlc3QgcHJvZ3JhbSBmaW5pc2hlcykuCi0gIHZvaWQgQXBwZW5kKFRlc3RFdmVudExpc3RlbmVy
KiBsaXN0ZW5lcik7Ci0KLSAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gZXZlbnQgbGlzdGVuZXIgZnJv
bSB0aGUgbGlzdCBhbmQgcmV0dXJucyBpdC4gIEl0IHRoZW4KLSAgLy8gYmVjb21lcyB0aGUgY2Fs
bGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZGVsZXRlIHRoZSBsaXN0ZW5lci4gUmV0dXJucwotICAv
LyBOVUxMIGlmIHRoZSBsaXN0ZW5lciBpcyBub3QgZm91bmQgaW4gdGhlIGxpc3QuCi0gIFRlc3RF
dmVudExpc3RlbmVyKiBSZWxlYXNlKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcik7Ci0KLSAg
Ly8gUmV0dXJucyB0aGUgc3RhbmRhcmQgbGlzdGVuZXIgcmVzcG9uc2libGUgZm9yIHRoZSBkZWZh
dWx0IGNvbnNvbGUKLSAgLy8gb3V0cHV0LiAgQ2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdGVu
ZXJzIGxpc3QgdG8gc2h1dCBkb3duIGRlZmF1bHQKLSAgLy8gY29uc29sZSBvdXRwdXQuICBOb3Rl
IHRoYXQgcmVtb3ZpbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgbGlzdGVuZXIgbGlzdAotICAvLyB3
aXRoIFJlbGVhc2UgdHJhbnNmZXJzIGl0cyBvd25lcnNoaXAgdG8gdGhlIGNhbGxlciBhbmQgbWFr
ZXMgdGhpcwotICAvLyBmdW5jdGlvbiByZXR1cm4gTlVMTCB0aGUgbmV4dCB0aW1lLgotICBUZXN0
RXZlbnRMaXN0ZW5lciogZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpIGNvbnN0IHsKLSAgICByZXR1
cm4gZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl87Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBzdGFu
ZGFyZCBsaXN0ZW5lciByZXNwb25zaWJsZSBmb3IgdGhlIGRlZmF1bHQgWE1MIG91dHB1dAotICAv
LyBjb250cm9sbGVkIGJ5IHRoZSAtLWd0ZXN0X291dHB1dD14bWwgZmxhZy4gIENhbiBiZSByZW1v
dmVkIGZyb20gdGhlCi0gIC8vIGxpc3RlbmVycyBsaXN0IGJ5IHVzZXJzIHdobyB3YW50IHRvIHNo
dXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0Ci0gIC8vIGNvbnRyb2xsZWQgYnkgdGhpcyBm
bGFnIGFuZCBzdWJzdGl0dXRlIGl0IHdpdGggY3VzdG9tIG9uZS4gIE5vdGUgdGhhdAotICAvLyBy
ZW1vdmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBsaXN0ZW5lciBsaXN0IHdpdGggUmVsZWFzZSB0
cmFuc2ZlcnMgaXRzCi0gIC8vIG93bmVyc2hpcCB0byB0aGUgY2FsbGVyIGFuZCBtYWtlcyB0aGlz
IGZ1bmN0aW9uIHJldHVybiBOVUxMIHRoZSBuZXh0Ci0gIC8vIHRpbWUuCi0gIFRlc3RFdmVudExp
c3RlbmVyKiBkZWZhdWx0X3htbF9nZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRlZmF1
bHRfeG1sX2dlbmVyYXRvcl87Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBUZXN0
Q2FzZTsKLSAgZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6
OkRlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwotICBmcmllbmQgY2xhc3MgaW50
ZXJuYWw6Ok5vRXhlY0RlYXRoVGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpUZXN0RXZl
bnRMaXN0ZW5lcnNBY2Nlc3NvcjsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdElt
cGw7Ci0KLSAgLy8gUmV0dXJucyByZXBlYXRlciB0aGF0IGJyb2FkY2FzdHMgdGhlIFRlc3RFdmVu
dExpc3RlbmVyIGV2ZW50cyB0byBhbGwKLSAgLy8gc3Vic2NyaWJlcnMuCi0gIFRlc3RFdmVudExp
c3RlbmVyKiByZXBlYXRlcigpOwotCi0gIC8vIFNldHMgdGhlIGRlZmF1bHRfcmVzdWx0X3ByaW50
ZXIgYXR0cmlidXRlIHRvIHRoZSBwcm92aWRlZCBsaXN0ZW5lci4KLSAgLy8gVGhlIGxpc3RlbmVy
IGlzIGFsc28gYWRkZWQgdG8gdGhlIGxpc3RlbmVyIGxpc3QgYW5kIHByZXZpb3VzCi0gIC8vIGRl
ZmF1bHRfcmVzdWx0X3ByaW50ZXIgaXMgcmVtb3ZlZCBmcm9tIGl0IGFuZCBkZWxldGVkLiBUaGUg
bGlzdGVuZXIgY2FuCi0gIC8vIGFsc28gYmUgTlVMTCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgbm90
IGJlIGFkZGVkIHRvIHRoZSBsaXN0LiBEb2VzCi0gIC8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3Vz
IGFuZCB0aGUgY3VycmVudCBsaXN0ZW5lciBvYmplY3RzIGFyZSB0aGUgc2FtZS4KLSAgdm9pZCBT
ZXREZWZhdWx0UmVzdWx0UHJpbnRlcihUZXN0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpOwotCi0g
IC8vIFNldHMgdGhlIGRlZmF1bHRfeG1sX2dlbmVyYXRvciBhdHRyaWJ1dGUgdG8gdGhlIHByb3Zp
ZGVkIGxpc3RlbmVyLiAgVGhlCi0gIC8vIGxpc3RlbmVyIGlzIGFsc28gYWRkZWQgdG8gdGhlIGxp
c3RlbmVyIGxpc3QgYW5kIHByZXZpb3VzCi0gIC8vIGRlZmF1bHRfeG1sX2dlbmVyYXRvciBpcyBy
ZW1vdmVkIGZyb20gaXQgYW5kIGRlbGV0ZWQuIFRoZSBsaXN0ZW5lciBjYW4KLSAgLy8gYWxzbyBi
ZSBOVUxMIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGxpc3QuIERv
ZXMKLSAgLy8gbm90aGluZyBpZiB0aGUgcHJldmlvdXMgYW5kIHRoZSBjdXJyZW50IGxpc3RlbmVy
IG9iamVjdHMgYXJlIHRoZSBzYW1lLgotICB2b2lkIFNldERlZmF1bHRYbWxHZW5lcmF0b3IoVGVz
dEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKTsKLQotICAvLyBDb250cm9scyB3aGV0aGVyIGV2ZW50
cyB3aWxsIGJlIGZvcndhcmRlZCBieSB0aGUgcmVwZWF0ZXIgdG8gdGhlCi0gIC8vIGxpc3RlbmVy
cyBpbiB0aGUgbGlzdC4KLSAgYm9vbCBFdmVudEZvcndhcmRpbmdFbmFibGVkKCkgY29uc3Q7Ci0g
IHZvaWQgU3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKTsKLQotICAvLyBUaGUgYWN0dWFsIGxpc3Qg
b2YgbGlzdGVuZXJzLgotICBpbnRlcm5hbDo6VGVzdEV2ZW50UmVwZWF0ZXIqIHJlcGVhdGVyXzsK
LSAgLy8gTGlzdGVuZXIgcmVzcG9uc2libGUgZm9yIHRoZSBzdGFuZGFyZCByZXN1bHQgb3V0cHV0
LgotICBUZXN0RXZlbnRMaXN0ZW5lciogZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl87Ci0gIC8vIExp
c3RlbmVyIHJlc3BvbnNpYmxlIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIFhNTCBvdXRwdXQgZmls
ZS4KLSAgVGVzdEV2ZW50TGlzdGVuZXIqIGRlZmF1bHRfeG1sX2dlbmVyYXRvcl87Ci0KLSAgLy8g
V2UgZGlzYWxsb3cgY29weWluZyBUZXN0RXZlbnRMaXN0ZW5lcnMuCi0gIEdURVNUX0RJU0FMTE9X
X0NPUFlfQU5EX0FTU0lHTl8oVGVzdEV2ZW50TGlzdGVuZXJzKTsKLX07Ci0KLS8vIEEgVW5pdFRl
c3QgY29uc2lzdHMgb2YgYSB2ZWN0b3Igb2YgVGVzdENhc2VzLgotLy8KLS8vIFRoaXMgaXMgYSBz
aW5nbGV0b24gY2xhc3MuICBUaGUgb25seSBpbnN0YW5jZSBvZiBVbml0VGVzdCBpcwotLy8gY3Jl
YXRlZCB3aGVuIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpIGlzIGZpcnN0IGNhbGxlZC4gIFRoaXMK
LS8vIGluc3RhbmNlIGlzIG5ldmVyIGRlbGV0ZWQuCi0vLwotLy8gVW5pdFRlc3QgaXMgbm90IGNv
cHlhYmxlLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUgYXMgbG9uZyBhcyB0aGUg
bWV0aG9kcyBhcmUgY2FsbGVkCi0vLyBhY2NvcmRpbmcgdG8gdGhlaXIgc3BlY2lmaWNhdGlvbi4K
LWNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3QgewotIHB1YmxpYzoKLSAgLy8gR2V0cyB0aGUgc2lu
Z2xldG9uIFVuaXRUZXN0IG9iamVjdC4gIFRoZSBmaXJzdCB0aW1lIHRoaXMgbWV0aG9kCi0gIC8v
IGlzIGNhbGxlZCwgYSBVbml0VGVzdCBvYmplY3QgaXMgY29uc3RydWN0ZWQgYW5kIHJldHVybmVk
LgotICAvLyBDb25zZWN1dGl2ZSBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSBvYmplY3QuCi0g
IHN0YXRpYyBVbml0VGVzdCogR2V0SW5zdGFuY2UoKTsKLQotICAvLyBSdW5zIGFsbCB0ZXN0cyBp
biB0aGlzIFVuaXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCi0gIC8vIFJldHVy
bnMgMCBpZiBzdWNjZXNzZnVsLCBvciAxIG90aGVyd2lzZS4KLSAgLy8KLSAgLy8gVGhpcyBtZXRo
b2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAvLwotICAvLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi0g
IGludCBSdW4oKSBHVEVTVF9NVVNUX1VTRV9SRVNVTFRfOwotCi0gIC8vIFJldHVybnMgdGhlIHdv
cmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0IFRFU1QoKSBvciBURVNUX0YoKQotICAvLyB3
YXMgZXhlY3V0ZWQuICBUaGUgVW5pdFRlc3Qgb2JqZWN0IG93bnMgdGhlIHN0cmluZy4KLSAgY29u
c3QgY2hhciogb3JpZ2luYWxfd29ya2luZ19kaXIoKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRo
ZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywK
LSAgLy8gb3IgTlVMTCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0gIGNvbnN0IFRlc3RDYXNlKiBj
dXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0Ci0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRl
eF8pOwotCi0gIC8vIFJldHVybnMgdGhlIFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhh
dCdzIGN1cnJlbnRseSBydW5uaW5nLAotICAvLyBvciBOVUxMIGlmIG5vIHRlc3QgaXMgcnVubmlu
Zy4KLSAgY29uc3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QKLSAgICAgIEdU
RVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7Ci0KLSAgLy8gUmV0dXJucyB0aGUgcmFuZG9tIHNl
ZWQgdXNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBydW4uCi0gIGludCByYW5k
b21fc2VlZCgpIGNvbnN0OwotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgLy8gUmV0dXJu
cyB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0
cmFjayBvZgotICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBh
bmQgcmVnaXN0ZXIgdGhlbS4KLSAgLy8KLSAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotICBpbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRl
c3RDYXNlUmVnaXN0cnkmIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCi0gICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVT
VAotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCi0gIGlu
dCBzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51
bWJlciBvZiBmYWlsZWQgdGVzdCBjYXNlcy4KLSAgaW50IGZhaWxlZF90ZXN0X2Nhc2VfY291bnQo
KSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMuCi0gIGlu
dCB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgYWxsIHRlc3QgY2FzZXMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0Ci0gIC8vIHRo
YXQgc2hvdWxkIHJ1bi4KLSAgaW50IHRlc3RfY2FzZV90b19ydW5fY291bnQoKSBjb25zdDsKLQot
ICAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0cy4KLSAgaW50IHN1Y2Nlc3Nm
dWxfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQg
dGVzdHMuCi0gIGludCBmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhl
IG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCi0gIGludCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsK
LQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCi0gIGludCBkaXNhYmxl
ZF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRv
IGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi0gIGludCByZXBvcnRhYmxlX3Rlc3RfY291
bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgotICBpbnQg
dG90YWxfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0
cyB0aGF0IHNob3VsZCBydW4uCi0gIGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwotCi0g
IC8vIEdldHMgdGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0
aGUgc3RhcnQgb2YgdGhlCi0gIC8vIFVOSVggZXBvY2guCi0gIFRpbWVJbk1pbGxpcyBzdGFydF90
aW1lc3RhbXAoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxp
c2Vjb25kcy4KLSAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0OwotCi0gIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHVuaXQgdGVzdCBwYXNzZWQgKGkuZS4gYWxsIHRlc3QgY2FzZXMg
cGFzc2VkKS4KLSAgYm9vbCBQYXNzZWQoKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSB1bml0IHRlc3QgZmFpbGVkIChpLmUuIHNvbWUgdGVzdCBjYXNlIGZhaWxlZAotICAvLyBv
ciBzb21ldGhpbmcgb3V0c2lkZSBvZiBhbGwgdGVzdHMgZmFpbGVkKS4KLSAgYm9vbCBGYWlsZWQo
KSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2FzZSBhbW9uZyBhbGwgdGhlIHRl
c3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwotICAvLyB0b3RhbF90ZXN0X2Nhc2VfY291
bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KLSAgY29u
c3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRo
ZSBUZXN0UmVzdWx0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGVzdCBmYWlsdXJlcyBhbmQK
LSAgLy8gcHJvcGVydGllcyBsb2dnZWQgb3V0c2lkZSBvZiBpbmRpdmlkdWFsIHRlc3QgY2FzZXMu
Ci0gIGNvbnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0OwotCi0gIC8v
IFJldHVybnMgdGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8g
dHJhY2sgZXZlbnRzCi0gIC8vIGluc2lkZSBHb29nbGUgVGVzdC4KLSAgVGVzdEV2ZW50TGlzdGVu
ZXJzJiBsaXN0ZW5lcnMoKTsKLQotIHByaXZhdGU6Ci0gIC8vIFJlZ2lzdGVycyBhbmQgcmV0dXJu
cyBhIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50LiAgV2hlbiBhIHRlc3QKLSAgLy8gcHJvZ3JhbSBp
cyBydW4sIGFsbCBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMgd2lsbCBiZSBzZXQtdXAgaW4KLSAg
Ly8gdGhlIG9yZGVyIHRoZXkgd2VyZSByZWdpc3RlcmVkLiAgQWZ0ZXIgYWxsIHRlc3RzIGluIHRo
ZSBwcm9ncmFtCi0gIC8vIGhhdmUgZmluaXNoZWQsIGFsbCBnbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dHMgd2lsbCBiZSB0b3JuLWRvd24gaW4KLSAgLy8gdGhlICpyZXZlcnNlKiBvcmRlciB0aGV5IHdl
cmUgcmVnaXN0ZXJlZC4KLSAgLy8KLSAgLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0YWtlcyBvd25l
cnNoaXAgb2YgdGhlIGdpdmVuIGVudmlyb25tZW50LgotICAvLwotICAvLyBUaGlzIG1ldGhvZCBj
YW4gb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gIEVudmlyb25tZW50KiBB
ZGRFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKLQotICAvLyBBZGRzIGEgVGVzdFBhcnRS
ZXN1bHQgdG8gdGhlIGN1cnJlbnQgVGVzdFJlc3VsdCBvYmplY3QuICBBbGwKLSAgLy8gR29vZ2xl
IFRlc3QgYXNzZXJ0aW9uIG1hY3JvcyAoZS5nLiBBU1NFUlRfVFJVRSwgRVhQRUNUX0VRLCBldGMp
Ci0gIC8vIGV2ZW50dWFsbHkgY2FsbCB0aGlzIHRvIHJlcG9ydCB0aGVpciByZXN1bHRzLiAgVGhl
IHVzZXIgY29kZQotICAvLyBzaG91bGQgdXNlIHRoZSBhc3NlcnRpb24gbWFjcm9zIGluc3RlYWQg
b2YgY2FsbGluZyB0aGlzIGRpcmVjdGx5LgotICB2b2lkIEFkZFRlc3RQYXJ0UmVzdWx0KFRlc3RQ
YXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9u
dW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3Nh
Z2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNr
X3RyYWNlKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKLQotICAvLyBBZGRz
IGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52
b2tlZCBmcm9tCi0gIC8vIGluc2lkZSBhIHRlc3QsIHRvIGN1cnJlbnQgVGVzdENhc2UncyBhZF9o
b2NfdGVzdF9yZXN1bHRfIHdoZW4gaW52b2tlZAotICAvLyBmcm9tIFNldFVwVGVzdENhc2Ugb3Ig
VGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKLSAgLy8gd2hl
biBpbnZva2VkIGVsc2V3aGVyZS4gIElmIHRoZSByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHBy
b3BlcnR5IHdpdGgKLSAgLy8gdGhlIHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVk
LgotICB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0
ZDo6c3RyaW5nJiB2YWx1ZSk7Ci0KLSAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcg
YWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLSAgLy8gdG90YWxfdGVz
dF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5V
TEwuCi0gIFRlc3RDYXNlKiBHZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpOwotCi0gIC8vIEFjY2Vz
c29ycyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OlVuaXRUZXN0
SW1wbCogaW1wbCgpIHsgcmV0dXJuIGltcGxfOyB9Ci0gIGNvbnN0IGludGVybmFsOjpVbml0VGVz
dEltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBpbXBsXzsgfQotCi0gIC8vIFRoZXNlIGNsYXNz
ZXMgYW5kIGZ1bmN0aW9ucyBhcmUgZnJpZW5kcyBhcyB0aGV5IG5lZWQgdG8gYWNjZXNzIHByaXZh
dGUKLSAgLy8gbWVtYmVycyBvZiBVbml0VGVzdC4KLSAgZnJpZW5kIGNsYXNzIFRlc3Q7Ci0gIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6QXNzZXJ0SGVscGVyOwotICBmcmllbmQgY2xhc3MgaW50ZXJu
YWw6OlNjb3BlZFRyYWNlOwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlN0cmVhbWluZ0xpc3Rl
bmVyVGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEhlbHBlcjsKLSAgZnJpZW5kIEVudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoRW52aXJvbm1lbnQqIGVudik7Ci0gIGZyaWVuZCBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBp
bnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGZyaWVuZCB2b2lkIGludGVybmFsOjpSZXBv
cnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCi0gICAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSBy
ZXN1bHRfdHlwZSwKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKTsKLQotICAvLyBD
cmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgotICBVbml0VGVzdCgpOwotCi0gIC8vIEQndG9yCi0g
IHZpcnR1YWwgflVuaXRUZXN0KCk7Ci0KLSAgLy8gUHVzaGVzIGEgdHJhY2UgZGVmaW5lZCBieSBT
Q09QRURfVFJBQ0UoKSBvbiB0byB0aGUgcGVyLXRocmVhZAotICAvLyBHb29nbGUgVGVzdCB0cmFj
ZSBzdGFjay4KLSAgdm9pZCBQdXNoR1Rlc3RUcmFjZShjb25zdCBpbnRlcm5hbDo6VHJhY2VJbmZv
JiB0cmFjZSkKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4Xyk7Ci0KLSAgLy8gUG9w
cyBhIHRyYWNlIGZyb20gdGhlIHBlci10aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0g
IHZvaWQgUG9wR1Rlc3RUcmFjZSgpCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8p
OwotCi0gIC8vIFByb3RlY3RzIG11dGFibGUgc3RhdGUgaW4gKmltcGxfLiAgVGhpcyBpcyBtdXRh
YmxlIGFzIHNvbWUgY29uc3QKLSAgLy8gbWV0aG9kcyBuZWVkIHRvIGxvY2sgaXQgdG9vLgotICBt
dXRhYmxlIGludGVybmFsOjpNdXRleCBtdXRleF87Ci0KLSAgLy8gT3BhcXVlIGltcGxlbWVudGF0
aW9uIG9iamVjdC4gIFRoaXMgZmllbGQgaXMgbmV2ZXIgY2hhbmdlZCBvbmNlCi0gIC8vIHRoZSBv
YmplY3QgaXMgY29uc3RydWN0ZWQuICBXZSBkb24ndCBtYXJrIGl0IGFzIGNvbnN0IGhlcmUsIGFz
Ci0gIC8vIGRvaW5nIHNvIHdpbGwgY2F1c2UgYSB3YXJuaW5nIGluIHRoZSBjb25zdHJ1Y3RvciBv
ZiBVbml0VGVzdC4KLSAgLy8gTXV0YWJsZSBzdGF0ZSBpbiAqaW1wbF8gaXMgcHJvdGVjdGVkIGJ5
IG11dGV4Xy4KLSAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogaW1wbF87Ci0KLSAgLy8gV2UgZGlz
YWxsb3cgY29weWluZyBVbml0VGVzdC4KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhVbml0VGVzdCk7Ci19OwotCi0vLyBBIGNvbnZlbmllbnQgd3JhcHBlciBmb3IgYWRkaW5nIGFu
IGVudmlyb25tZW50IGZvciB0aGUgdGVzdAotLy8gcHJvZ3JhbS4KLS8vCi0vLyBZb3Ugc2hvdWxk
IGNhbGwgdGhpcyBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGNhbGxlZCwgcHJvYmFibHkgaW4K
LS8vIG1haW4oKS4gIElmIHlvdSB1c2UgZ3Rlc3RfbWFpbiwgeW91IG5lZWQgdG8gY2FsbCB0aGlz
IGJlZm9yZSBtYWluKCkKLS8vIHN0YXJ0cyBmb3IgaXQgdG8gdGFrZSBlZmZlY3QuICBGb3IgZXhh
bXBsZSwgeW91IGNhbiBkZWZpbmUgYSBnbG9iYWwKLS8vIHZhcmlhYmxlIGxpa2UgdGhpczoKLS8v
Ci0vLyAgIHRlc3Rpbmc6OkVudmlyb25tZW50KiBjb25zdCBmb29fZW52ID0KLS8vICAgICAgIHRl
c3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOwotLy8K
LS8vIEhvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gd3JpdGUgeW91ciBvd24g
bWFpbigpIGFuZAotLy8gY2FsbCBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKSB0aGVyZSwgYXMg
cmVseWluZyBvbiBpbml0aWFsaXphdGlvbgotLy8gb2YgZ2xvYmFsIHZhcmlhYmxlcyBtYWtlcyB0
aGUgY29kZSBoYXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlCi0vLyBwcm9ibGVtcyB3aGVuIHlv
dSByZWdpc3RlciBtdWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQKLS8vIHRyYW5z
bGF0aW9uIHVuaXRzIGFuZCB0aGUgZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25n
IHRoZW0KLS8vIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IGd1YXJhbnRlZSB0
aGUgb3JkZXIgaW4gd2hpY2gKLS8vIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJh
bnNsYXRpb24gdW5pdHMgYXJlIGluaXRpYWxpemVkKS4KLWlubGluZSBFbnZpcm9ubWVudCogQWRk
R2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsKLSAgcmV0dXJuIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRFbnZpcm9ubWVudChlbnYpOwotfQotCi0vLyBJbml0aWFs
aXplcyBHb29nbGUgVGVzdC4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKLS8v
IFJVTl9BTExfVEVTVFMoKS4gIEluIHBhcnRpY3VsYXIsIGl0IHBhcnNlcyBhIGNvbW1hbmQgbGlu
ZSBmb3IgdGhlCi0vLyBmbGFncyB0aGF0IEdvb2dsZSBUZXN0IHJlY29nbml6ZXMuICBXaGVuZXZl
ciBhIEdvb2dsZSBUZXN0IGZsYWcgaXMKLS8vIHNlZW4sIGl0IGlzIHJlbW92ZWQgZnJvbSBhcmd2
LCBhbmQgKmFyZ2MgaXMgZGVjcmVtZW50ZWQuCi0vLwotLy8gTm8gdmFsdWUgaXMgcmV0dXJuZWQu
ICBJbnN0ZWFkLCB0aGUgR29vZ2xlIFRlc3QgZmxhZyB2YXJpYWJsZXMgYXJlCi0vLyB1cGRhdGVk
LgotLy8KLS8vIENhbGxpbmcgdGhlIGZ1bmN0aW9uIGZvciB0aGUgc2Vjb25kIHRpbWUgaGFzIG5v
IHVzZXItdmlzaWJsZSBlZmZlY3QuCi1HVEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50
KiBhcmdjLCBjaGFyKiogYXJndik7Ci0KLS8vIFRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uIGNhbiBi
ZSB1c2VkIGluIFdpbmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KLS8vIFVOSUNPREUgbW9kZS4K
LUdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlVGVzdChpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2
KTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gU2VwYXJhdGUgdGhlIGVycm9yIGdlbmVy
YXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGggdG8gcmVkdWNlIHRoZSBzdGFjawotLy8gZnJh
bWUgc2l6ZSBvZiBDbXBIZWxwZXJFUS4gVGhpcyBoZWxwcyByZWR1Y2UgdGhlIG92ZXJoZWFkIG9m
IHNvbWUgc2FuaXRpemVycwotLy8gd2hlbiBjYWxsaW5nIEVYUEVDVF8qIGluIGEgdGlnaHQgbG9v
cC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1bHQg
Q21wSGVscGVyRVFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywgY29uc3QgVDIm
IHJocykgewotICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgIHJoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShsaHMsIHJocyksCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHJocywgbGhzKSwKLSAgICAgICAgICAgICAgICAg
ICBmYWxzZSk7Ci19Ci0KLS8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNU
fV9FUS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1
bHQgQ21wSGVscGVyRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMiYgcmhzKSB7Ci1HVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0Mzg5
IC8qIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaCAqLykKLSAgaWYgKGxocyA9PSByaHMpIHsKLSAg
ICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci1HVEVTVF9ESVNBQkxFX01TQ19XQVJO
SU5HU19QT1BfKCkKLQotICByZXR1cm4gQ21wSGVscGVyRVFGYWlsdXJlKGxoc19leHByZXNzaW9u
LCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwotfQotCi0vLyBXaXRoIHRoaXMgb3ZlcmxvYWRl
ZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51bXMgdG8gYmUgdXNlZAotLy8gaW4ge0FT
U0VSVHxFWFBFQ1R9X0VRIHdoZW4gY29tcGlsZWQgd2l0aCBnY2MgNCwgYXMgYW5vbnltb3VzIGVu
dW1zCi0vLyBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRvIEJpZ2dlc3RJbnQuCi1HVEVTVF9BUElf
IEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlnZ2Vz
dEludCBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0
SW50IHJocyk7Ci0KLS8vIFRoZSBoZWxwZXIgY2xhc3MgZm9yIHtBU1NFUlR8RVhQRUNUfV9FUS4g
IFRoZSB0ZW1wbGF0ZSBhcmd1bWVudAotLy8gbGhzX2lzX251bGxfbGl0ZXJhbCBpcyB0cnVlIGlm
ZiB0aGUgZmlyc3QgYXJndW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVy
IGxpdGVyYWwuICBUaGUgZm9sbG93aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMKLS8vIGZv
ciBsaHNfaXNfbnVsbF9saXRlcmFsIGJlaW5nIGZhbHNlLgotdGVtcGxhdGUgPGJvb2wgbGhzX2lz
X251bGxfbGl0ZXJhbD4KLWNsYXNzIEVxSGVscGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMgdGVt
cGxhdGl6ZWQgdmVyc2lvbiBpcyBmb3IgdGhlIGdlbmVyYWwgY2FzZS4KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21wYXJl
KGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUMSYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVDImIHJocykgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNfZXhwcmVzc2lv
biwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKLSAgfQotCi0gIC8vIFdpdGggdGhpcyBvdmVy
bG9hZGVkIHZlcnNpb24sIHdlIGFsbG93IGFub255bW91cyBlbnVtcyB0byBiZSB1c2VkCi0gIC8v
IGluIHtBU1NFUlR8RVhQRUNUfV9FUSB3aGVuIGNvbXBpbGVkIHdpdGggZ2NjIDQsIGFzIGFub255
bW91cwotICAvLyBlbnVtcyBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRvIEJpZ2dlc3RJbnQuCi0g
IC8vCi0gIC8vIEV2ZW4gdGhvdWdoIGl0cyBib2R5IGxvb2tzIHRoZSBzYW1lIGFzIHRoZSBhYm92
ZSB2ZXJzaW9uLCB3ZQotICAvLyBjYW5ub3QgbWVyZ2UgdGhlIHR3bywgYXMgaXQgd2lsbCBtYWtl
IGFub255bW91cyBlbnVtcyB1bmhhcHB5LgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENvbXBh
cmUoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQmlnZ2VzdEludCByaHMpIHsKLSAgICByZXR1cm4gQ21wSGVscGVyRVEobGhzX2V4cHJl
c3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7Ci0gIH0KLX07Ci0KLS8vIFRoaXMgc3Bl
Y2lhbGl6YXRpb24gaXMgdXNlZCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCB0byBBU1NFUlRfRVEo
KQotLy8gaXMgYSBudWxsIHBvaW50ZXIgbGl0ZXJhbCwgbGlrZSBOVUxMLCBmYWxzZSwgb3IgMC4K
LXRlbXBsYXRlIDw+Ci1jbGFzcyBFcUhlbHBlcjx0cnVlPiB7Ci0gcHVibGljOgotICAvLyBXZSBk
ZWZpbmUgdHdvIG92ZXJsb2FkZWQgdmVyc2lvbnMgb2YgQ29tcGFyZSgpLiAgVGhlIGZpcnN0Ci0g
IC8vIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIEFT
U0VSVF9FUSgpIGlzCi0gIC8vIE5PVCBhIHBvaW50ZXIsIGUuZy4gQVNTRVJUX0VRKDAsIEFuSW50
RnVuY3Rpb24oKSkgb3IKLSAgLy8gRVhQRUNUX0VRKGZhbHNlLCBhX2Jvb2wpLgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBzdGF0aWMgQXNzZXJ0aW9uUmVzdWx0IENv
bXBhcmUoCi0gICAgICBjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKLSAgICAgIGNvbnN0IGNo
YXIqIHJoc19leHByZXNzaW9uLAotICAgICAgY29uc3QgVDEmIGxocywKLSAgICAgIGNvbnN0IFQy
JiByaHMsCi0gICAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMgdGhpcyBvdmVybG9h
ZCBmcm9tIGJlaW5nIGNvbnNpZGVyZWQgaWYgVDIKLSAgICAgIC8vIGlzIG5vdCBhIHBvaW50ZXIg
dHlwZS4gIFdlIG5lZWQgdGhpcyBiZWNhdXNlIEFTU0VSVF9FUShOVUxMLCBteV9wdHIpCi0gICAg
ICAvLyBleHBhbmRzIHRvIENvbXBhcmUoIiIsICIiLCBOVUxMLCBteV9wdHIpLCB3aGljaCByZXF1
aXJlcyBhIGNvbnZlcnNpb24KLSAgICAgIC8vIHRvIG1hdGNoIHRoZSBTZWNyZXQqIGluIHRoZSBv
dGhlciBvdmVybG9hZCwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIG1ha2UKLSAgICAgIC8vIHRoaXMg
dGVtcGxhdGUgbWF0Y2ggYmV0dGVyLgotICAgICAgdHlwZW5hbWUgRW5hYmxlSWY8IWlzX3BvaW50
ZXI8VDI+Ojp2YWx1ZT46OnR5cGUqID0gMCkgewotICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNf
ZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKLSAgfQotCi0gIC8vIFRoaXMg
dmVyc2lvbiB3aWxsIGJlIHBpY2tlZCB3aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gQVNTRVJU
X0VRKCkgaXMgYQotICAvLyBwb2ludGVyLCBlLmcuIEFTU0VSVF9FUShOVUxMLCBhX3BvaW50ZXIp
LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RhdGljIEFzc2VydGlvblJlc3VsdCBDb21w
YXJlKAotICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0gICAgICBjb25zdCBjaGFy
KiByaHNfZXhwcmVzc2lvbiwKLSAgICAgIC8vIFdlIHVzZWQgdG8gaGF2ZSBhIHNlY29uZCB0ZW1w
bGF0ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBTZWNyZXQqLiAgVGhhdAotICAgICAgLy8gdGVtcGxh
dGUgcGFyYW1ldGVyIHdvdWxkIGRlZHVjZSB0byAnbG9uZycsIG1ha2luZyB0aGlzIGEgYmV0dGVy
IG1hdGNoCi0gICAgICAvLyB0aGFuIHRoZSBmaXJzdCBvdmVybG9hZCBldmVuIHdpdGhvdXQgdGhl
IGZpcnN0IG92ZXJsb2FkJ3MgRW5hYmxlSWYuCi0gICAgICAvLyBVbmZvcnR1bmF0ZWx5LCBnY2Mg
d2l0aCAtV2NvbnZlcnNpb24tbnVsbCB3YXJucyB3aGVuICJwYXNzaW5nIE5VTEwgdG8KLSAgICAg
IC8vIG5vbi1wb2ludGVyIGFyZ3VtZW50IiAoZXZlbiBhIGRlZHVjZWQgaW50ZWdyYWwgYXJndW1l
bnQpLCBzbyB0aGUgb2xkCi0gICAgICAvLyBpbXBsZW1lbnRhdGlvbiBjYXVzZWQgd2FybmluZ3Mg
aW4gdXNlciBjb2RlLgotICAgICAgU2VjcmV0KiAvKiBsaHMgKE5VTEwpICovLAotICAgICAgVCog
cmhzKSB7Ci0gICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgJ2xocycgaXMgYSBudWxsIHBvaW50
ZXIuCi0gICAgcmV0dXJuIENtcEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VCo+KE5VTEwpLCByaHMpOwot
ICB9Ci19OwotCi0vLyBTZXBhcmF0ZSB0aGUgZXJyb3IgZ2VuZXJhdGluZyBjb2RlIGZyb20gdGhl
IGNvZGUgcGF0aCB0byByZWR1Y2UgdGhlIHN0YWNrCi0vLyBmcmFtZSBzaXplIG9mIENtcEhlbHBl
ck9QLiBUaGlzIGhlbHBzIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2Ygc29tZSBzYW5pdGl6ZXJzCi0v
LyB3aGVuIGNhbGxpbmcgRVhQRUNUX09QIGluIGEgdGlnaHQgbG9vcC4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyT3BGYWlsdXJl
KGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHZhbDEsIGNvbnN0IFQyJiB2YWwyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBvcCkgewotICByZXR1cm4g
QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8
ICIpICIgPDwgb3AgPDwgIiAoIiA8PCBleHByMgotICAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8
PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMikKLSAgICAgICAg
IDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFs
MSk7Ci19Ci0KLS8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyB0aGUgaGVscGVyIGZ1bmN0aW9u
cyBuZWVkZWQgdG8gaW1wbGVtZW50Ci0vLyBBU1NFUlRfPz8gYW5kIEVYUEVDVF8/Py4gIEl0IGlz
IGhlcmUganVzdCB0byBhdm9pZCBjb3B5LWFuZC1wYXN0ZQotLy8gb2Ygc2ltaWxhciBjb2RlLgot
Ly8KLS8vIEZvciBlYWNoIHRlbXBsYXRpemVkIGhlbHBlciBmdW5jdGlvbiwgd2UgYWxzbyBkZWZp
bmUgYW4gb3ZlcmxvYWRlZAotLy8gdmVyc2lvbiBmb3IgQmlnZ2VzdEludCBpbiBvcmRlciB0byBy
ZWR1Y2UgY29kZSBibG9hdCBhbmQgYWxsb3cKLS8vIGFub255bW91cyBlbnVtcyB0byBiZSB1c2Vk
IHdpdGgge0FTU0VSVHxFWFBFQ1R9Xz8/IHdoZW4gY29tcGlsZWQKLS8vIHdpdGggZ2NjIDQuCi0v
LwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9H
UkFNLgotCi0jZGVmaW5lIEdURVNUX0lNUExfQ01QX0hFTFBFUl8ob3BfbmFtZSwgb3ApXAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj5cCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVs
cGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdmFsMSwgY29uc3QgVDIm
IHZhbDIpIHtcCi0gIGlmICh2YWwxIG9wIHZhbDIpIHtcCi0gICAgcmV0dXJuIEFzc2VydGlvblN1
Y2Nlc3MoKTtcCi0gIH0gZWxzZSB7XAotICAgIHJldHVybiBDbXBIZWxwZXJPcEZhaWx1cmUoZXhw
cjEsIGV4cHIyLCB2YWwxLCB2YWwyLCAjb3ApO1wKLSAgfVwKLX1cCi1HVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXIjI29wX25hbWUoXAotICAgIGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwgQmlnZ2VzdEludCB2YWwxLCBCaWdnZXN0SW50IHZhbDIpCi0KLS8v
IElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4K
LQotLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
TkUKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTkUsICE9KTsKLS8vIEltcGxlbWVudHMgdGhlIGhl
bHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0xFCi1HVEVTVF9JTVBMX0NNUF9IRUxQ
RVJfKExFLCA8PSk7Ci0vLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NF
UlR8RVhQRUNUfV9MVAotR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMVCwgPCk7Ci0vLyBJbXBsZW1l
bnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9HRQotR1RFU1RfSU1Q
TF9DTVBfSEVMUEVSXyhHRSwgPj0pOwotLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fR1QKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oR1QsID4pOwot
Ci0jdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXwotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHMyKTsKLQotLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NU
UkNBU0VFUS4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4g
QSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJD
QVNFRVEoY29uc3QgY2hhciogczFfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMyKTsKLQotLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUk5F
LgotLy8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIg
UFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0
IGNoYXIqIHMxX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7Ci0KLS8vIFRoZSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFTkUuCi0vLwotLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJ
XyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSQ0FTRU5FKGNvbnN0IGNoYXIqIHMxX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogczJfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7Ci0KLQotLy8gSGVscGVyIGZ1bmN0
aW9uIGZvciAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJTVFJFUShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd2NoYXJfdCogczIpOwotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9yICpfU1RSTkUgb24g
d2lkZSBzdHJpbmdzLgotLy8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVT
RSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogczEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBzMik7
Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBJc1N1YnN0cmluZygpIGFuZCBJc05v
dFN1YnN0cmluZygpIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIHRoZQotLy8gZmlyc3QgYXJn
dW1lbnQgdG8ge0VYUEVDVCxBU1NFUlR9X1BSRURfRk9STUFUMigpLCBub3QgYnkKLS8vIHRoZW1z
ZWx2ZXMuICBUaGV5IGNoZWNrIHdoZXRoZXIgbmVlZGxlIGlzIGEgc3Vic3RyaW5nIG9mIGhheXN0
YWNrCi0vLyAoTlVMTCBpcyBjb25zaWRlcmVkIGEgc3Vic3RyaW5nIG9mIGl0c2VsZiBvbmx5KSwg
YW5kIHJldHVybiBhbgotLy8gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZXkgZmFp
bC4KLS8vCi0vLyBUaGUge25lZWRsZSxoYXlzdGFja31fZXhwciBhcmd1bWVudHMgYXJlIHRoZSBz
dHJpbmdpZmllZAotLy8gZXhwcmVzc2lvbnMgdGhhdCBnZW5lcmF0ZWQgdGhlIHR3byByZWFsIGFy
Z3VtZW50cy4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNv
bnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNv
bnN0IGNoYXIqIG5lZWRsZSwgY29uc3QgY2hhciogaGF5c3RhY2spOwotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNv
bnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3Qgd2NoYXJfdCogbmVlZGxlLCBjb25z
dCB3Y2hhcl90KiBoYXlzdGFjayk7Ci1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc05vdFN1
YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3Rh
Y2tfZXhwciwKLSAgICBjb25zdCBjaGFyKiBuZWVkbGUsIGNvbnN0IGNoYXIqIGhheXN0YWNrKTsK
LUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzTm90U3Vic3RyaW5nKAotICAgIGNvbnN0IGNo
YXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IHdj
aGFyX3QqIG5lZWRsZSwgY29uc3Qgd2NoYXJfdCogaGF5c3RhY2spOwotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNv
bnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgOjpzdGQ6OnN0cmluZyYgbmVlZGxl
LCBjb25zdCA6OnN0ZDo6c3RyaW5nJiBoYXlzdGFjayk7Ci1HVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBJc05vdFN1YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3Qg
Y2hhciogaGF5c3RhY2tfZXhwciwKLSAgICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBuZWVkbGUsIGNv
bnN0IDo6c3RkOjpzdHJpbmcmIGhheXN0YWNrKTsKLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklO
RwotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgSXNTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hh
ciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgOjpz
dGQ6OndzdHJpbmcmIG5lZWRsZSwgY29uc3QgOjpzdGQ6OndzdHJpbmcmIGhheXN0YWNrKTsKLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzTm90U3Vic3RyaW5nKAotICAgIGNvbnN0IGNoYXIq
IG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IDo6c3Rk
Ojp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBoYXlzdGFjayk7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBIZWxwZXIgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIGNvbXBhcmluZyBmbG9hdGluZy1wb2ludHMu
Ci0vLwotLy8gVGVtcGxhdGUgcGFyYW1ldGVyOgotLy8KLS8vICAgUmF3VHlwZTogdGhlIHJhdyBm
bG9hdGluZy1wb2ludCB0eXBlIChlaXRoZXIgZmxvYXQgb3IgZG91YmxlKQotLy8KLS8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgbGhzX3ZhbHVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdUeXBlIHJoc192YWx1ZSkg
ewotICBjb25zdCBGbG9hdGluZ1BvaW50PFJhd1R5cGU+IGxocyhsaHNfdmFsdWUpLCByaHMocmhz
X3ZhbHVlKTsKLQotICBpZiAobGhzLkFsbW9zdEVxdWFscyhyaHMpKSB7Ci0gICAgcmV0dXJuIEFz
c2VydGlvblN1Y2Nlc3MoKTsKLSAgfQotCi0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gbGhzX3NzOwot
ICBsaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1lcmljX2xpbWl0czxSYXdUeXBl
Pjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgPDwgbGhzX3ZhbHVlOwotCi0gIDo6c3RkOjpzdHJp
bmdzdHJlYW0gcmhzX3NzOwotICByaHNfc3MgPDwgc3RkOjpzZXRwcmVjaXNpb24oc3RkOjpudW1l
cmljX2xpbWl0czxSYXdUeXBlPjo6ZGlnaXRzMTAgKyAyKQotICAgICAgICAgPDwgcmhzX3ZhbHVl
OwotCi0gIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJp
bmcoJmxoc19zcyksCi0gICAgICAgICAgICAgICAgICAgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnJo
c19zcyksCi0gICAgICAgICAgICAgICAgICAgZmFsc2UpOwotfQotCi0vLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIGltcGxlbWVudGluZyBBU1NFUlRfTkVBUi4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBEb3VibGVOZWFyUHJlZEZvcm1hdChjb25zdCBjaGFyKiBleHByMSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4
cHIyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYWJzX2Vycm9yX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgdmFsMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFic19lcnJvcik7Ci0KLS8vIElOVEVS
TkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLyBBIGNsYXNz
IHRoYXQgZW5hYmxlcyBvbmUgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIGFzc2VydGlvbiBtYWNyb3MK
LWNsYXNzIEdURVNUX0FQSV8gQXNzZXJ0SGVscGVyIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVj
dG9yLgotICBBc3NlcnRIZWxwZXIoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwKLSAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICAgICAgICAgICBpbnQgbGluZSwKLSAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotICB+QXNzZXJ0SGVscGVyKCk7Ci0KLSAg
Ly8gTWVzc2FnZSBhc3NpZ25tZW50IGlzIGEgc2VtYW50aWMgdHJpY2sgdG8gZW5hYmxlIGFzc2Vy
dGlvbgotICAvLyBzdHJlYW1pbmc7IHNlZSB0aGUgR1RFU1RfTUVTU0FHRV8gbWFjcm8gYmVsb3cu
Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2UmIG1lc3NhZ2UpIGNvbnN0OwotCi0gcHJp
dmF0ZToKLSAgLy8gV2UgcHV0IG91ciBkYXRhIGluIGEgc3RydWN0IHNvIHRoYXQgdGhlIHNpemUg
b2YgdGhlIEFzc2VydEhlbHBlciBjbGFzcyBjYW4KLSAgLy8gYmUgYXMgc21hbGwgYXMgcG9zc2li
bGUuICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGdjYyBpcyBpbmNhcGFibGUgb2YKLSAgLy8g
cmUtdXNpbmcgc3RhY2sgc3BhY2UgZXZlbiBmb3IgdGVtcG9yYXJ5IHZhcmlhYmxlcywgc28gZXZl
cnkgRVhQRUNUX0VRCi0gIC8vIHJlc2VydmVzIHN0YWNrIHNwYWNlIGZvciBhbm90aGVyIEFzc2Vy
dEhlbHBlci4KLSAgc3RydWN0IEFzc2VydEhlbHBlckRhdGEgewotICAgIEFzc2VydEhlbHBlckRh
dGEoVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdCwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHNyY2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgbGluZV9udW0sCi0gICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2cpCi0gICAgICAgIDogdHlwZSh0KSwgZmlsZShz
cmNmaWxlKSwgbGluZShsaW5lX251bSksIG1lc3NhZ2UobXNnKSB7IH0KLQotICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIGNvbnN0IHR5cGU7Ci0gICAgY29uc3QgY2hhciogY29uc3QgZmlsZTsKLSAg
ICBpbnQgY29uc3QgbGluZTsKLSAgICBzdGQ6OnN0cmluZyBjb25zdCBtZXNzYWdlOwotCi0gICBw
cml2YXRlOgotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVscGVy
RGF0YSk7Ci0gIH07Ci0KLSAgQXNzZXJ0SGVscGVyRGF0YSogY29uc3QgZGF0YV87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBc3NlcnRIZWxwZXIpOwotfTsKLQotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotLy8gVGhlIHB1
cmUgaW50ZXJmYWNlIGNsYXNzIHRoYXQgYWxsIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW5o
ZXJpdCBmcm9tLgotLy8gQSB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzIG11c3QgaW5oZXJpdCBm
cm9tIGJvdGggOjp0ZXN0aW5nOjpUZXN0IGFuZAotLy8gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRl
cmZhY2UuIEluIG1vc3QgY2FzZXMgdGhhdCBqdXN0IG1lYW5zIGluaGVyaXRpbmcKLS8vIGZyb20g
Ojp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLCBidXQgbW9yZSBjb21wbGljYXRlZCB0ZXN0IGhpZXJh
cmNoaWVzCi0vLyBtYXkgbmVlZCB0byBpbmhlcml0IGZyb20gVGVzdCBhbmQgV2l0aFBhcmFtSW50
ZXJmYWNlIGF0IGRpZmZlcmVudCBsZXZlbHMuCi0vLwotLy8gVGhpcyBpbnRlcmZhY2UgaGFzIHN1
cHBvcnQgZm9yIGFjY2Vzc2luZyB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFsdWUgdmlhCi0vLyB0aGUg
R2V0UGFyYW0oKSBtZXRob2QuCi0vLwotLy8gVXNlIGl0IHdpdGggb25lIG9mIHRoZSBwYXJhbWV0
ZXIgZ2VuZXJhdG9yIGRlZmluaW5nIGZ1bmN0aW9ucywgbGlrZSBSYW5nZSgpLAotLy8gVmFsdWVz
KCksIFZhbHVlc0luKCksIEJvb2woKSwgYW5kIENvbWJpbmUoKS4KLS8vCi0vLyBjbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKLS8vICBwcm90ZWN0
ZWQ6Ci0vLyAgIEZvb1Rlc3QoKSB7Ci0vLyAgICAgLy8gQ2FuIHVzZSBHZXRQYXJhbSgpIGhlcmUu
Ci0vLyAgIH0KLS8vICAgdmlydHVhbCB+Rm9vVGVzdCgpIHsKLS8vICAgICAvLyBDYW4gdXNlIEdl
dFBhcmFtKCkgaGVyZS4KLS8vICAgfQotLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0vLyAg
ICAgLy8gQ2FuIHVzZSBHZXRQYXJhbSgpIGhlcmUuCi0vLyAgIH0KLS8vICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duIHsKLS8vICAgICAvLyBDYW4gdXNlIEdldFBhcmFtKCkgaGVyZS4KLS8vICAgfQot
Ly8gfTsKLS8vIFRFU1RfUChGb29UZXN0LCBEb2VzQmFyKSB7Ci0vLyAgIC8vIENhbiB1c2UgR2V0
UGFyYW0oKSBtZXRob2QgaGVyZS4KLS8vICAgRm9vIGZvbzsKLS8vICAgQVNTRVJUX1RSVUUoZm9v
LkRvZXNCYXIoR2V0UGFyYW0oKSkpOwotLy8gfQotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
T25lVG9UZW5SYW5nZSwgRm9vVGVzdCwgOjp0ZXN0aW5nOjpSYW5nZSgxLCAxMCkpOwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFdpdGhQYXJhbUludGVyZmFjZSB7Ci0gcHVibGljOgot
ICB0eXBlZGVmIFQgUGFyYW1UeXBlOwotICB2aXJ0dWFsIH5XaXRoUGFyYW1JbnRlcmZhY2UoKSB7
fQotCi0gIC8vIFRoZSBjdXJyZW50IHBhcmFtZXRlciB2YWx1ZS4gSXMgYWxzbyBhdmFpbGFibGUg
aW4gdGhlIHRlc3QgZml4dHVyZSdzCi0gIC8vIGNvbnN0cnVjdG9yLiBUaGlzIG1lbWJlciBmdW5j
dGlvbiBpcyBub24tc3RhdGljLCBldmVuIHRob3VnaCBpdCBvbmx5Ci0gIC8vIHJlZmVyZW5jZXMg
c3RhdGljIGRhdGEsIHRvIHJlZHVjZSB0aGUgb3Bwb3J0dW5pdHkgZm9yIGluY29ycmVjdCB1c2Vz
Ci0gIC8vIGxpa2Ugd3JpdGluZyAnV2l0aFBhcmFtSW50ZXJmYWNlPGJvb2w+OjpHZXRQYXJhbSgp
JyBmb3IgYSB0ZXN0IHRoYXQKLSAgLy8gdXNlcyBhIGZpeHR1cmUgd2hvc2UgcGFyYW1ldGVyIHR5
cGUgaXMgaW50LgotICBjb25zdCBQYXJhbVR5cGUmIEdldFBhcmFtKCkgY29uc3QgewotICAgIEdU
RVNUX0NIRUNLXyhwYXJhbWV0ZXJfICE9IE5VTEwpCi0gICAgICAgIDw8ICJHZXRQYXJhbSgpIGNh
biBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QgIgotICAg
ICAgICA8PCAiLS0gZGlkIHlvdSBpbnRlbmQgdG8gd3JpdGUgVEVTVF9QIGluc3RlYWQgb2YgVEVT
VF9GPyI7Ci0gICAgcmV0dXJuICpwYXJhbWV0ZXJfOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBT
ZXRzIHBhcmFtZXRlciB2YWx1ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5n
IHN1cmUgdGhlIHZhbHVlCi0gIC8vIHJlbWFpbnMgYWxpdmUgYW5kIHVuY2hhbmdlZCB0aHJvdWdo
b3V0IHRoZSBjdXJyZW50IHRlc3QuCi0gIHN0YXRpYyB2b2lkIFNldFBhcmFtKGNvbnN0IFBhcmFt
VHlwZSogcGFyYW1ldGVyKSB7Ci0gICAgcGFyYW1ldGVyXyA9IHBhcmFtZXRlcjsKLSAgfQotCi0g
IC8vIFN0YXRpYyB2YWx1ZSB1c2VkIGZvciBhY2Nlc3NpbmcgcGFyYW1ldGVyIGR1cmluZyBhIHRl
c3QgbGlmZXRpbWUuCi0gIHN0YXRpYyBjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcl87Ci0KLSAg
Ly8gVGVzdENsYXNzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBXaXRoUGFyYW1JbnRlcmZhY2U8VD4g
YW5kIFRlc3QuCi0gIHRlbXBsYXRlIDxjbGFzcyBUZXN0Q2xhc3M+IGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6UGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jb25zdCBUKiBXaXRoUGFyYW1JbnRlcmZhY2U8VD46OnBhcmFtZXRlcl8gPSBOVUxMOwot
Ci0vLyBNb3N0IHZhbHVlLXBhcmFtZXRlcml6ZWQgY2xhc3NlcyBjYW4gaWdub3JlIHRoZSBleGlz
dGVuY2Ugb2YKLS8vIFdpdGhQYXJhbUludGVyZmFjZSwgYW5kIGNhbiBqdXN0IGluaGVyaXQgZnJv
bSA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW0uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3MgVGVzdFdpdGhQYXJhbSA6IHB1YmxpYyBUZXN0LCBwdWJsaWMgV2l0aFBhcmFtSW50ZXJmYWNl
PFQ+IHsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotLy8gTWFjcm9z
IGZvciBpbmRpY2F0aW5nIHN1Y2Nlc3MvZmFpbHVyZSBpbiB0ZXN0IGNvZGUuCi0KLS8vIEFERF9G
QUlMVVJFIHVuY29uZGl0aW9uYWxseSBhZGRzIGEgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0
LgotLy8gU1VDQ0VFRCBnZW5lcmF0ZXMgYSBzdWNjZXNzIC0gaXQgZG9lc24ndCBhdXRvbWF0aWNh
bGx5IG1ha2UgdGhlCi0vLyBjdXJyZW50IHRlc3Qgc3VjY2Vzc2Z1bCwgYXMgYSB0ZXN0IGlzIG9u
bHkgc3VjY2Vzc2Z1bCB3aGVuIGl0IGhhcwotLy8gbm8gZmFpbHVyZS4KLS8vCi0vLyBFWFBFQ1Rf
KiB2ZXJpZmllcyB0aGF0IGEgY2VydGFpbiBjb25kaXRpb24gaXMgc2F0aXNmaWVkLiAgSWYgbm90
LAotLy8gaXQgYmVoYXZlcyBsaWtlIEFERF9GQUlMVVJFLiAgSW4gcGFydGljdWxhcjoKLS8vCi0v
LyAgIEVYUEVDVF9UUlVFICB2ZXJpZmllcyB0aGF0IGEgQm9vbGVhbiBjb25kaXRpb24gaXMgdHJ1
ZS4KLS8vICAgRVhQRUNUX0ZBTFNFIHZlcmlmaWVzIHRoYXQgYSBCb29sZWFuIGNvbmRpdGlvbiBp
cyBmYWxzZS4KLS8vCi0vLyBGQUlMIGFuZCBBU1NFUlRfKiBhcmUgc2ltaWxhciB0byBBRERfRkFJ
TFVSRSBhbmQgRVhQRUNUXyosIGV4Y2VwdAotLy8gdGhhdCB0aGV5IHdpbGwgYWxzbyBhYm9ydCB0
aGUgY3VycmVudCBmdW5jdGlvbiBvbiBmYWlsdXJlLiAgUGVvcGxlCi0vLyB1c3VhbGx5IHdhbnQg
dGhlIGZhaWwtZmFzdCBiZWhhdmlvciBvZiBGQUlMIGFuZCBBU1NFUlRfKiwgYnV0IHRob3NlCi0v
LyB3cml0aW5nIGRhdGEtZHJpdmVuIHRlc3RzIG9mdGVuIGZpbmQgdGhlbXNlbHZlcyB1c2luZyBB
RERfRkFJTFVSRQotLy8gYW5kIEVYUEVDVF8qIG1vcmUuCi0KLS8vIEdlbmVyYXRlcyBhIG5vbmZh
dGFsIGZhaWx1cmUgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KLSNkZWZpbmUgQUREX0ZBSUxVUkUo
KSBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXygiRmFpbGVkIikKLQotLy8gR2VuZXJhdGVzIGEgbm9u
ZmF0YWwgZmFpbHVyZSBhdCB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24gd2l0aAotLy8g
YSBnZW5lcmljIG1lc3NhZ2UuCi0jZGVmaW5lIEFERF9GQUlMVVJFX0FUKGZpbGUsIGxpbmUpIFwK
LSAgR1RFU1RfTUVTU0FHRV9BVF8oZmlsZSwgbGluZSwgIkZhaWxlZCIsIFwKLSAgICAgICAgICAg
ICAgICAgICAgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSkKLQot
Ly8gR2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSB3aXRoIGEgZ2VuZXJpYyBtZXNzYWdlLgotI2Rl
ZmluZSBHVEVTVF9GQUlMKCkgR1RFU1RfRkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIpCi0KLS8vIERl
ZmluZSB0aGlzIG1hY3JvIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBGQUlMKCksIHdo
aWNoIGlzIGEKLS8vIGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGli
cmFyaWVzLgotI2lmICFHVEVTVF9ET05UX0RFRklORV9GQUlMCi0jIGRlZmluZSBGQUlMKCkgR1RF
U1RfRkFJTCgpCi0jZW5kaWYKLQotLy8gR2VuZXJhdGVzIGEgc3VjY2VzcyB3aXRoIGEgZ2VuZXJp
YyBtZXNzYWdlLgotI2RlZmluZSBHVEVTVF9TVUNDRUVEKCkgR1RFU1RfU1VDQ0VTU18oIlN1Y2Nl
ZWRlZCIpCi0KLS8vIERlZmluZSB0aGlzIG1hY3JvIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlv
biBvZiBTVUNDRUVEKCksIHdoaWNoCi0vLyBpcyBhIGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3
aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgotI2lmICFHVEVTVF9ET05UX0RFRklORV9TVUNDRUVE
Ci0jIGRlZmluZSBTVUNDRUVEKCkgR1RFU1RfU1VDQ0VFRCgpCi0jZW5kaWYKLQotLy8gTWFjcm9z
IGZvciB0ZXN0aW5nIGV4Y2VwdGlvbnMuCi0vLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fVEhS
T1coc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24pOgotLy8gICAgICAgICBUZXN0cyB0aGF0
IHRoZSBzdGF0ZW1lbnQgdGhyb3dzIHRoZSBleHBlY3RlZCBleGNlcHRpb24uCi0vLyAgICAqIHtB
U1NFUlR8RVhQRUNUfV9OT19USFJPVyhzdGF0ZW1lbnQpOgotLy8gICAgICAgICBUZXN0cyB0aGF0
IHRoZSBzdGF0ZW1lbnQgZG9lc24ndCB0aHJvdyBhbnkgZXhjZXB0aW9uLgotLy8gICAgKiB7QVNT
RVJUfEVYUEVDVH1fQU5ZX1RIUk9XKHN0YXRlbWVudCk6Ci0vLyAgICAgICAgIFRlc3RzIHRoYXQg
dGhlIHN0YXRlbWVudCB0aHJvd3MgYW4gZXhjZXB0aW9uLgotCi0jZGVmaW5lIEVYUEVDVF9USFJP
VyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbikgXAotICBHVEVTVF9URVNUX1RIUk9XXyhz
dGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0j
ZGVmaW5lIEVYUEVDVF9OT19USFJPVyhzdGF0ZW1lbnQpIFwKLSAgR1RFU1RfVEVTVF9OT19USFJP
V18oc3RhdGVtZW50LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgRVhQRUNUX0FO
WV9USFJPVyhzdGF0ZW1lbnQpIFwKLSAgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwg
R1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9USFJPVyhzdGF0ZW1lbnQs
IGV4cGVjdGVkX2V4Y2VwdGlvbikgXAotICBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4
cGVjdGVkX2V4Y2VwdGlvbiwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9O
T19USFJPVyhzdGF0ZW1lbnQpIFwKLSAgR1RFU1RfVEVTVF9OT19USFJPV18oc3RhdGVtZW50LCBH
VEVTVF9GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNTRVJUX0FOWV9USFJPVyhzdGF0ZW1lbnQp
IFwKLSAgR1RFU1RfVEVTVF9BTllfVEhST1dfKHN0YXRlbWVudCwgR1RFU1RfRkFUQUxfRkFJTFVS
RV8pCi0KLS8vIEJvb2xlYW4gYXNzZXJ0aW9ucy4gQ29uZGl0aW9uIGNhbiBiZSBlaXRoZXIgYSBC
b29sZWFuIGV4cHJlc3Npb24gb3IgYW4KLS8vIEFzc2VydGlvblJlc3VsdC4gRm9yIG1vcmUgaW5m
b3JtYXRpb24gb24gaG93IHRvIHVzZSBBc3NlcnRpb25SZXN1bHQgd2l0aAotLy8gdGhlc2UgbWFj
cm9zIHNlZSBjb21tZW50cyBvbiB0aGF0IGNsYXNzLgotI2RlZmluZSBFWFBFQ1RfVFJVRShjb25k
aXRpb24pIFwKLSAgR1RFU1RfVEVTVF9CT09MRUFOXygoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwg
ZmFsc2UsIHRydWUsIFwKLSAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9OT05GQVRBTF9GQUlM
VVJFXykKLSNkZWZpbmUgRVhQRUNUX0ZBTFNFKGNvbmRpdGlvbikgXAotICBHVEVTVF9URVNUX0JP
T0xFQU5fKCEoY29uZGl0aW9uKSwgI2NvbmRpdGlvbiwgdHJ1ZSwgZmFsc2UsIFwKLSAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNTRVJUX1RS
VUUoY29uZGl0aW9uKSBcCi0gIEdURVNUX1RFU1RfQk9PTEVBTl8oKGNvbmRpdGlvbiksICNjb25k
aXRpb24sIGZhbHNlLCB0cnVlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfRkFUQUxf
RkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9GQUxTRShjb25kaXRpb24pIFwKLSAgR1RFU1RfVEVT
VF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25kaXRpb24sIHRydWUsIGZhbHNlLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0KLS8vIEluY2x1ZGVzIHRo
ZSBhdXRvLWdlbmVyYXRlZCBoZWFkZXIgdGhhdCBpbXBsZW1lbnRzIGEgZmFtaWx5IG9mCi0vLyBn
ZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
X3ByZWRfaW1wbC5oIgotCi0vLyBNYWNyb3MgZm9yIHRlc3RpbmcgZXF1YWxpdGllcyBhbmQgaW5l
cXVhbGl0aWVzLgotLy8KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0VRKHYxLCB2Mik6IFRlc3Rz
IHRoYXQgdjEgPT0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X05FKHYxLCB2Mik6IFRlc3Rz
IHRoYXQgdjEgIT0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0xUKHYxLCB2Mik6IFRlc3Rz
IHRoYXQgdjEgPCB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTEUodjEsIHYyKTogVGVzdHMg
dGhhdCB2MSA8PSB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fR1QodjEsIHYyKTogVGVzdHMg
dGhhdCB2MSA+IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9HRSh2MSwgdjIpOiBUZXN0cyB0
aGF0IHYxID49IHYyCi0vLwotLy8gV2hlbiB0aGV5IGFyZSBub3QsIEdvb2dsZSBUZXN0IHByaW50
cyBib3RoIHRoZSB0ZXN0ZWQgZXhwcmVzc2lvbnMgYW5kCi0vLyB0aGVpciBhY3R1YWwgdmFsdWVz
LiAgVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBhdGlibGUgYnVpbHQtaW4gdHlwZXMsCi0vLyBvciB5
b3Ugd2lsbCBnZXQgYSBjb21waWxlciBlcnJvci4gIEJ5ICJjb21wYXRpYmxlIiB3ZSBtZWFuIHRo
YXQgdGhlCi0vLyB2YWx1ZXMgY2FuIGJlIGNvbXBhcmVkIGJ5IHRoZSByZXNwZWN0aXZlIG9wZXJh
dG9yLgotLy8KLS8vIE5vdGU6Ci0vLwotLy8gICAxLiBJdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEg
dXNlci1kZWZpbmVkIHR5cGUgd29yayB3aXRoCi0vLyAgIHtBU1NFUlR8RVhQRUNUfV8/PygpLCBi
dXQgdGhhdCByZXF1aXJlcyBvdmVybG9hZGluZyB0aGUKLS8vICAgY29tcGFyaXNvbiBvcGVyYXRv
cnMgYW5kIGlzIHRodXMgZGlzY291cmFnZWQgYnkgdGhlIEdvb2dsZSBDKysKLS8vICAgVXNhZ2Ug
R3VpZGUuICBUaGVyZWZvcmUsIHlvdSBhcmUgYWR2aXNlZCB0byB1c2UgdGhlCi0vLyAgIHtBU1NF
UlR8RVhQRUNUfV9UUlVFKCkgbWFjcm8gdG8gYXNzZXJ0IHRoYXQgdHdvIG9iamVjdHMgYXJlCi0v
LyAgIGVxdWFsLgotLy8KLS8vICAgMi4gVGhlIHtBU1NFUlR8RVhQRUNUfV8/PygpIG1hY3JvcyBk
byBwb2ludGVyIGNvbXBhcmlzb25zIG9uCi0vLyAgIHBvaW50ZXJzIChpbiBwYXJ0aWN1bGFyLCBD
IHN0cmluZ3MpLiAgVGhlcmVmb3JlLCBpZiB5b3UgdXNlIGl0Ci0vLyAgIHdpdGggdHdvIEMgc3Ry
aW5ncywgeW91IGFyZSB0ZXN0aW5nIGhvdyB0aGVpciBsb2NhdGlvbnMgaW4gbWVtb3J5Ci0vLyAg
IGFyZSByZWxhdGVkLCBub3QgaG93IHRoZWlyIGNvbnRlbnQgaXMgcmVsYXRlZC4gIFRvIGNvbXBh
cmUgdHdvIEMKLS8vICAgc3RyaW5ncyBieSBjb250ZW50LCB1c2Uge0FTU0VSVHxFWFBFQ1R9X1NU
UiooKS4KLS8vCi0vLyAgIDMuIHtBU1NFUlR8RVhQRUNUfV9FUSh2MSwgdjIpIGlzIHByZWZlcnJl
ZCB0bwotLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRSh2MSA9PSB2MiksIGFzIHRoZSBmb3JtZXIg
dGVsbHMgeW91Ci0vLyAgIHdoYXQgdGhlIGFjdHVhbCB2YWx1ZSBpcyB3aGVuIGl0IGZhaWxzLCBh
bmQgc2ltaWxhcmx5IGZvciB0aGUKLS8vICAgb3RoZXIgY29tcGFyaXNvbnMuCi0vLwotLy8gICA0
LiBEbyBub3QgZGVwZW5kIG9uIHRoZSBvcmRlciBpbiB3aGljaCB7QVNTRVJUfEVYUEVDVH1fPz8o
KQotLy8gICBldmFsdWF0ZSB0aGVpciBhcmd1bWVudHMsIHdoaWNoIGlzIHVuZGVmaW5lZC4KLS8v
Ci0vLyAgIDUuIFRoZXNlIG1hY3JvcyBldmFsdWF0ZSB0aGVpciBhcmd1bWVudHMgZXhhY3RseSBv
bmNlLgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vICAgRVhQRUNUX05FKDUsIEZvbygpKTsKLS8v
ICAgRVhQRUNUX0VRKE5VTEwsIGFfcG9pbnRlcik7Ci0vLyAgIEFTU0VSVF9MVChpLCBhcnJheV9z
aXplKTsKLS8vICAgQVNTRVJUX0dUKHJlY29yZHMuc2l6ZSgpLCAwKSA8PCAiVGhlcmUgaXMgbm8g
cmVjb3JkIGxlZnQuIjsKLQotI2RlZmluZSBFWFBFQ1RfRVEodmFsMSwgdmFsMikgXAotICBFWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAg
ICAgICAgRXFIZWxwZXI8R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwK
LSAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQotI2RlZmluZSBFWFBFQ1RfTkUodmFs
MSwgdmFsMikgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNt
cEhlbHBlck5FLCB2YWwxLCB2YWwyKQotI2RlZmluZSBFWFBFQ1RfTEUodmFsMSwgdmFsMikgXAot
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2
YWwxLCB2YWwyKQotI2RlZmluZSBFWFBFQ1RfTFQodmFsMSwgdmFsMikgXAotICBFWFBFQ1RfUFJF
RF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwxLCB2YWwyKQot
I2RlZmluZSBFWFBFQ1RfR0UodmFsMSwgdmFsMikgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2RlZmluZSBFWFBF
Q1RfR1QodmFsMSwgdmFsMikgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2YWwyKQotCi0jZGVmaW5lIEdURVNUX0FTU0VSVF9F
USh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6IFwKLSAgICAgICAgICAgICAgICAgICAgICBFcUhlbHBlcjxHVEVTVF9JU19OVUxMX0xJVEVS
QUxfKHZhbDEpPjo6Q29tcGFyZSwgXAotICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIp
Ci0jZGVmaW5lIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTkUsIHZhbDEsIHZhbDIpCi0jZGVm
aW5lIEdURVNUX0FTU0VSVF9MRSh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTEUsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEdU
RVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0
aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyTFQsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEdURVNUX0FT
U0VSVF9HRSh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6Q21wSGVscGVyR0UsIHZhbDEsIHZhbDIpCi0jZGVmaW5lIEdURVNUX0FTU0VSVF9H
VCh2YWwxLCB2YWwyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyR1QsIHZhbDEsIHZhbDIpCi0KLS8vIERlZmluZSBtYWNybyBHVEVTVF9ET05U
X0RFRklORV9BU1NFUlRfWFkgdG8gMSB0byBvbWl0IHRoZSBkZWZpbml0aW9uIG9mCi0vLyBBU1NF
UlRfWFkoKSwgd2hpY2ggY2xhc2hlcyB3aXRoIHNvbWUgdXNlcnMnIG93biBjb2RlLgotCi0jaWYg
IUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9FUQotIyBkZWZpbmUgQVNTRVJUX0VRKHZhbDEsIHZh
bDIpIEdURVNUX0FTU0VSVF9FUSh2YWwxLCB2YWwyKQotI2VuZGlmCi0KLSNpZiAhR1RFU1RfRE9O
VF9ERUZJTkVfQVNTRVJUX05FCi0jIGRlZmluZSBBU1NFUlRfTkUodmFsMSwgdmFsMikgR1RFU1Rf
QVNTRVJUX05FKHZhbDEsIHZhbDIpCi0jZW5kaWYKLQotI2lmICFHVEVTVF9ET05UX0RFRklORV9B
U1NFUlRfTEUKLSMgZGVmaW5lIEFTU0VSVF9MRSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfTEUo
dmFsMSwgdmFsMikKLSNlbmRpZgotCi0jaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9MVAot
IyBkZWZpbmUgQVNTRVJUX0xUKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9MVCh2YWwxLCB2YWwy
KQotI2VuZGlmCi0KLSNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dFCi0jIGRlZmluZSBB
U1NFUlRfR0UodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dFKHZhbDEsIHZhbDIpCi0jZW5kaWYK
LQotI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfR1QKLSMgZGVmaW5lIEFTU0VSVF9HVCh2
YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikKLSNlbmRpZgotCi0vLyBDLXN0
cmluZyBDb21wYXJpc29ucy4gIEFsbCB0ZXN0cyB0cmVhdCBOVUxMIGFuZCBhbnkgbm9uLU5VTEwg
c3RyaW5nCi0vLyBhcyBkaWZmZXJlbnQuICBUd28gTlVMTHMgYXJlIGVxdWFsLgotLy8KLS8vICAg
ICoge0FTU0VSVHxFWFBFQ1R9X1NUUkVRKHMxLCBzMik6ICAgICBUZXN0cyB0aGF0IHMxID09IHMy
Ci0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9TVFJORShzMSwgczIpOiAgICAgVGVzdHMgdGhhdCBz
MSAhPSBzMgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRUVRKHMxLCBzMik6IFRlc3Rz
IHRoYXQgczEgPT0gczIsIGlnbm9yaW5nIGNhc2UKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NU
UkNBU0VORShzMSwgczIpOiBUZXN0cyB0aGF0IHMxICE9IHMyLCBpZ25vcmluZyBjYXNlCi0vLwot
Ly8gRm9yIHdpZGUgb3IgbmFycm93IHN0cmluZyBvYmplY3RzLCB5b3UgY2FuIHVzZSB0aGUKLS8v
IHtBU1NFUlR8RVhQRUNUfV8/PygpIG1hY3Jvcy4KLS8vCi0vLyBEb24ndCBkZXBlbmQgb24gdGhl
IG9yZGVyIGluIHdoaWNoIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCwKLS8vIHdoaWNoIGlz
IHVuZGVmaW5lZC4KLS8vCi0vLyBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRz
IGV4YWN0bHkgb25jZS4KLQotI2RlZmluZSBFWFBFQ1RfU1RSRVEoczEsIHMyKSBcCi0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEsIHMxLCBz
MikKLSNkZWZpbmUgRVhQRUNUX1NUUk5FKHMxLCBzMikgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBzMSwgczIpCi0jZGVmaW5lIEVY
UEVDVF9TVFJDQVNFRVEoczEsIHMyKSBcCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwgczIpCi0jZGVmaW5lIEVYUEVDVF9T
VFJDQVNFTkUoczEsIHMyKVwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKLQotI2RlZmluZSBBU1NFUlRfU1RSRVEo
czEsIHMyKSBcCi0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21w
SGVscGVyU1RSRVEsIHMxLCBzMikKLSNkZWZpbmUgQVNTRVJUX1NUUk5FKHMxLCBzMikgXAotICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUk5FLCBz
MSwgczIpCi0jZGVmaW5lIEFTU0VSVF9TVFJDQVNFRVEoczEsIHMyKSBcCi0gIEFTU0VSVF9QUkVE
X0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRUVRLCBzMSwgczIp
Ci0jZGVmaW5lIEFTU0VSVF9TVFJDQVNFTkUoczEsIHMyKVwKLSAgQVNTRVJUX1BSRURfRk9STUFU
Mig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJDQVNFTkUsIHMxLCBzMikKLQotLy8g
TWFjcm9zIGZvciBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycy4KLS8vCi0vLyAgICAq
IHtBU1NFUlR8RVhQRUNUfV9GTE9BVF9FUSh2YWwxLCB2YWwyKToKLS8vICAgICAgICAgVGVzdHMg
dGhhdCB0d28gZmxvYXQgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwuCi0vLyAgICAqIHtBU1NFUlR8
RVhQRUNUfV9ET1VCTEVfRVEodmFsMSwgdmFsMik6Ci0vLyAgICAgICAgIFRlc3RzIHRoYXQgdHdv
IGRvdWJsZSB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbC4KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9
X05FQVIodjEsIHYyLCBhYnNfZXJyb3IpOgotLy8gICAgICAgICBUZXN0cyB0aGF0IHYxIGFuZCB2
MiBhcmUgd2l0aGluIHRoZSBnaXZlbiBkaXN0YW5jZSB0byBlYWNoIG90aGVyLgotLy8KLS8vIEdv
b2dsZSBUZXN0IHVzZXMgVUxQLWJhc2VkIGNvbXBhcmlzb24gdG8gYXV0b21hdGljYWxseSBwaWNr
IGEgZGVmYXVsdAotLy8gZXJyb3IgYm91bmQgdGhhdCBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIG9w
ZXJhbmRzLiAgU2VlIHRoZQotLy8gRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyBpbiBndGVz
dC1pbnRlcm5hbC5oIGlmIHlvdSBhcmUKLS8vIGludGVyZXN0ZWQgaW4gdGhlIGltcGxlbWVudGF0
aW9uIGRldGFpbHMuCi0KLSNkZWZpbmUgRVhQRUNUX0ZMT0FUX0VRKHZhbDEsIHZhbDIpXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0aW5n
UG9pbnRFUTxmbG9hdD4sIFwKLSAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQotCi0j
ZGVmaW5lIEVYUEVDVF9ET1VCTEVfRVEodmFsMSwgdmFsMilcCi0gIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGRvdWJsZT4s
IFwKLSAgICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyKQotCi0jZGVmaW5lIEFTU0VSVF9G
TE9BVF9FUSh2YWwxLCB2YWwyKVwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6Omlu
dGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgdmFsMSwgdmFsMikKLQotI2RlZmluZSBBU1NFUlRfRE9VQkxFX0VRKHZhbDEsIHZh
bDIpXAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
ckZsb2F0aW5nUG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgdmFsMSwg
dmFsMikKLQotI2RlZmluZSBFWFBFQ1RfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJyb3IpXAotICBF
WFBFQ1RfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5lYXJQcmVkRm9y
bWF0LCBcCi0gICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMiwgYWJzX2Vycm9yKQotCi0j
ZGVmaW5lIEFTU0VSVF9ORUFSKHZhbDEsIHZhbDIsIGFic19lcnJvcilcCi0gIEFTU0VSVF9QUkVE
X0ZPUk1BVDMoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RG91YmxlTmVhclByZWRGb3JtYXQsIFwKLSAg
ICAgICAgICAgICAgICAgICAgICB2YWwxLCB2YWwyLCBhYnNfZXJyb3IpCi0KLS8vIFRoZXNlIHBy
ZWRpY2F0ZSBmb3JtYXQgZnVuY3Rpb25zIHdvcmsgb24gZmxvYXRpbmctcG9pbnQgdmFsdWVzLCBh
bmQKLS8vIGNhbiBiZSB1c2VkIGluIHtBU1NFUlR8RVhQRUNUfV9QUkVEX0ZPUk1BVDIqKCksIGUu
Zy4KLS8vCi0vLyAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6RG91YmxlTEUsIEZvbygp
LCA1LjApOwotCi0vLyBBc3NlcnRzIHRoYXQgdmFsMSBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBl
cXVhbCB0bywgdmFsMi4gIEZhaWxzCi0vLyBvdGhlcndpc2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBm
YWlscyBpZiBlaXRoZXIgdmFsMSBvciB2YWwyIGlzIE5hTi4KLUdURVNUX0FQSV8gQXNzZXJ0aW9u
UmVzdWx0IEZsb2F0TEUoY29uc3QgY2hhciogZXhwcjEsIGNvbnN0IGNoYXIqIGV4cHIyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB2YWwxLCBmbG9hdCB2YWwyKTsK
LUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IERvdWJsZUxFKGNvbnN0IGNoYXIqIGV4cHIxLCBj
b25zdCBjaGFyKiBleHByMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSB2YWwxLCBkb3VibGUgdmFsMik7Ci0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLQotLy8g
TWFjcm9zIHRoYXQgdGVzdCBmb3IgSFJFU1VMVCBmYWlsdXJlIGFuZCBzdWNjZXNzLCB0aGVzZSBh
cmUgb25seSB1c2VmdWwKLS8vIG9uIFdpbmRvd3MsIGFuZCByZWx5IG9uIFdpbmRvd3MgU0RLIG1h
Y3JvcyBhbmQgQVBJcyB0byBjb21waWxlLgotLy8KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0hS
RVNVTFRfe1NVQ0NFRURFRHxGQUlMRUR9KGV4cHIpCi0vLwotLy8gV2hlbiBleHByIHVuZXhwZWN0
ZWRseSBmYWlscyBvciBzdWNjZWVkcywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZQotLy8gZXhwZWN0
ZWQgcmVzdWx0IGFuZCB0aGUgYWN0dWFsIHJlc3VsdCB3aXRoIGJvdGggYSBodW1hbi1yZWFkYWJs
ZQotLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciwgaWYgYXZhaWxhYmxlLCBh
cyB3ZWxsIGFzIHRoZQotLy8gaGV4IHJlc3VsdCBjb2RlLgotIyBkZWZpbmUgRVhQRUNUX0hSRVNV
TFRfU1VDQ0VFREVEKGV4cHIpIFwKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKDo6dGVzdGluZzo6
aW50ZXJuYWw6OklzSFJFU1VMVFN1Y2Nlc3MsIChleHByKSkKLQotIyBkZWZpbmUgQVNTRVJUX0hS
RVNVTFRfU1VDQ0VFREVEKGV4cHIpIFwKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OklzSFJFU1VMVFN1Y2Nlc3MsIChleHByKSkKLQotIyBkZWZpbmUgRVhQRUNU
X0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OklzSFJFU1VMVEZhaWx1cmUsIChleHByKSkKLQotIyBkZWZpbmUgQVNTRVJU
X0hSRVNVTFRfRkFJTEVEKGV4cHIpIFwKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQxKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OklzSFJFU1VMVEZhaWx1cmUsIChleHByKSkKLQotI2VuZGlmICAvLyBHVEVT
VF9PU19XSU5ET1dTCi0KLS8vIE1hY3JvcyB0aGF0IGV4ZWN1dGUgc3RhdGVtZW50IGFuZCBjaGVj
ayB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgbmV3IGZhdGFsCi0vLyBmYWlsdXJlcyBpbiB0aGUg
Y3VycmVudCB0aHJlYWQuCi0vLwotLy8gICAqIHtBU1NFUlR8RVhQRUNUfV9OT19GQVRBTF9GQUlM
VVJFKHN0YXRlbWVudCk7Ci0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBFWFBFQ1RfTk9fRkFU
QUxfRkFJTFVSRShQcm9jZXNzKCkpOwotLy8gICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQcm9j
ZXNzKCkpIDw8ICJQcm9jZXNzKCkgZmFpbGVkIjsKLS8vCi0jZGVmaW5lIEFTU0VSVF9OT19GQVRB
TF9GQUlMVVJFKHN0YXRlbWVudCkgXAotICAgIEdURVNUX1RFU1RfTk9fRkFUQUxfRkFJTFVSRV8o
c3RhdGVtZW50LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgRVhQRUNUX05PX0ZBVEFM
X0ZBSUxVUkUoc3RhdGVtZW50KSBcCi0gICAgR1RFU1RfVEVTVF9OT19GQVRBTF9GQUlMVVJFXyhz
dGF0ZW1lbnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotCi0vLyBDYXVzZXMgYSB0cmFjZSAo
aW5jbHVkaW5nIHRoZSBzb3VyY2UgZmlsZSBwYXRoLCB0aGUgY3VycmVudCBsaW5lCi0vLyBudW1i
ZXIsIGFuZCB0aGUgZ2l2ZW4gbWVzc2FnZSkgdG8gYmUgaW5jbHVkZWQgaW4gZXZlcnkgdGVzdCBm
YWlsdXJlCi0vLyBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb2RlIGluIHRoZSBjdXJyZW50IHNjb3Bl
LiAgVGhlIGVmZmVjdCBpcwotLy8gdW5kb25lIHdoZW4gdGhlIGNvbnRyb2wgbGVhdmVzIHRoZSBj
dXJyZW50IHNjb3BlLgotLy8KLS8vIFRoZSBtZXNzYWdlIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGlu
ZyBzdHJlYW1hYmxlIHRvIHN0ZDo6b3N0cmVhbS4KLS8vCi0vLyBJbiB0aGUgaW1wbGVtZW50YXRp
b24sIHdlIGluY2x1ZGUgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgYXMgcGFydAotLy8gb2YgdGhl
IGR1bW15IHZhcmlhYmxlIG5hbWUsIHRodXMgYWxsb3dpbmcgbXVsdGlwbGUgU0NPUEVEX1RSQUNF
KClzCi0vLyB0byBhcHBlYXIgaW4gdGhlIHNhbWUgYmxvY2sgLSBhcyBsb25nIGFzIHRoZXkgYXJl
IG9uIGRpZmZlcmVudAotLy8gbGluZXMuCi0jZGVmaW5lIFNDT1BFRF9UUkFDRShtZXNzYWdlKSBc
Ci0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNjb3BlZFRyYWNlIEdURVNUX0NPTkNBVF9UT0tFTl8o
Z3Rlc3RfdHJhY2VfLCBfX0xJTkVfXykoXAotICAgIF9fRklMRV9fLCBfX0xJTkVfXywgOjp0ZXN0
aW5nOjpNZXNzYWdlKCkgPDwgKG1lc3NhZ2UpKQotCi0vLyBDb21waWxlLXRpbWUgYXNzZXJ0aW9u
IGZvciB0eXBlIGVxdWFsaXR5LgotLy8gU3RhdGljQXNzZXJ0VHlwZUVxPHR5cGUxLCB0eXBlMj4o
KSBjb21waWxlcyBpZmYgdHlwZTEgYW5kIHR5cGUyIGFyZQotLy8gdGhlIHNhbWUgdHlwZS4gIFRo
ZSB2YWx1ZSBpdCByZXR1cm5zIGlzIG5vdCBpbnRlcmVzdGluZy4KLS8vCi0vLyBJbnN0ZWFkIG9m
IG1ha2luZyBTdGF0aWNBc3NlcnRUeXBlRXEgYSBjbGFzcyB0ZW1wbGF0ZSwgd2UgbWFrZSBpdCBh
Ci0vLyBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0IGludm9rZXMgYSBoZWxwZXIgY2xhc3MgdGVtcGxh
dGUuICBUaGlzCi0vLyBwcmV2ZW50cyBhIHVzZXIgZnJvbSBtaXN1c2luZyBTdGF0aWNBc3NlcnRU
eXBlRXE8VDEsIFQyPiBieQotLy8gZGVmaW5pbmcgb2JqZWN0cyBvZiB0aGF0IHR5cGUuCi0vLwot
Ly8gQ0FWRUFUOgotLy8KLS8vIFdoZW4gdXNlZCBpbnNpZGUgYSBtZXRob2Qgb2YgYSBjbGFzcyB0
ZW1wbGF0ZSwKLS8vIFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KCkgaXMgZWZmZWN0aXZlIE9O
TFkgSUYgdGhlIG1ldGhvZCBpcwotLy8gaW5zdGFudGlhdGVkLiAgRm9yIGV4YW1wbGUsIGdpdmVu
OgotLy8KLS8vICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0vLyAgICBwdWJs
aWM6Ci0vLyAgICAgdm9pZCBCYXIoKSB7IHRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxpbnQs
IFQ+KCk7IH0KLS8vICAgfTsKLS8vCi0vLyB0aGUgY29kZToKLS8vCi0vLyAgIHZvaWQgVGVzdDEo
KSB7IEZvbzxib29sPiBmb287IH0KLS8vCi0vLyB3aWxsIE5PVCBnZW5lcmF0ZSBhIGNvbXBpbGVy
IGVycm9yLCBhcyBGb288Ym9vbD46OkJhcigpIGlzIG5ldmVyCi0vLyBhY3R1YWxseSBpbnN0YW50
aWF0ZWQuICBJbnN0ZWFkLCB5b3UgbmVlZDoKLS8vCi0vLyAgIHZvaWQgVGVzdDIoKSB7IEZvbzxi
b29sPiBmb287IGZvby5CYXIoKTsgfQotLy8KLS8vIHRvIGNhdXNlIGEgY29tcGlsZXIgZXJyb3Iu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotYm9vbCBTdGF0aWNBc3NlcnRU
eXBlRXEoKSB7Ci0gICh2b2lkKWludGVybmFsOjpTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8VDEs
IFQyPigpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gRGVmaW5lcyBhIHRlc3QuCi0vLwotLy8g
VGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlLCBhbmQgdGhl
IHNlY29uZAotLy8gcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IHdpdGhpbiB0aGUg
dGVzdCBjYXNlLgotLy8KLS8vIFRoZSBjb252ZW50aW9uIGlzIHRvIGVuZCB0aGUgdGVzdCBjYXNl
IG5hbWUgd2l0aCAiVGVzdCIuICBGb3IKLS8vIGV4YW1wbGUsIGEgdGVzdCBjYXNlIGZvciB0aGUg
Rm9vIGNsYXNzIGNhbiBiZSBuYW1lZCBGb29UZXN0LgotLy8KLS8vIFRlc3QgY29kZSBzaG91bGQg
YXBwZWFyIGJldHdlZW4gYnJhY2VzIGFmdGVyIGFuIGludm9jYXRpb24gb2YKLS8vIHRoaXMgbWFj
cm8uICBFeGFtcGxlOgotLy8KLS8vICAgVEVTVChGb29UZXN0LCBJbml0aWFsaXplc0NvcnJlY3Rs
eSkgewotLy8gICAgIEZvbyBmb287Ci0vLyAgICAgRVhQRUNUX1RSVUUoZm9vLlN0YXR1c0lzT0so
KSk7Ci0vLyAgIH0KLQotLy8gTm90ZSB0aGF0IHdlIGNhbGwgR2V0VGVzdFR5cGVJZCgpIGluc3Rl
YWQgb2YgR2V0VHlwZUlkPAotLy8gOjp0ZXN0aW5nOjpUZXN0PigpIGhlcmUgdG8gZ2V0IHRoZSB0
eXBlIElEIG9mIHRlc3Rpbmc6OlRlc3QuICBUaGlzCi0vLyBpcyB0byB3b3JrIGFyb3VuZCBhIHN1
c3BlY3RlZCBsaW5rZXIgYnVnIHdoZW4gdXNpbmcgR29vZ2xlIFRlc3QgYXMKLS8vIGEgZnJhbWV3
b3JrIG9uIE1hYyBPUyBYLiAgVGhlIGJ1ZyBjYXVzZXMgR2V0VHlwZUlkPAotLy8gOjp0ZXN0aW5n
OjpUZXN0PigpIHRvIHJldHVybiBkaWZmZXJlbnQgdmFsdWVzIGRlcGVuZGluZyBvbiB3aGV0aGVy
Ci0vLyB0aGUgY2FsbCBpcyBmcm9tIHRoZSBHb29nbGUgVGVzdCBmcmFtZXdvcmsgaXRzZWxmIG9y
IGZyb20gdXNlciB0ZXN0Ci0vLyBjb2RlLiAgR2V0VGVzdFR5cGVJZCgpIGlzIGd1YXJhbnRlZWQg
dG8gYWx3YXlzIHJldHVybiB0aGUgc2FtZQotLy8gdmFsdWUsIGFzIGl0IGFsd2F5cyBjYWxscyBH
ZXRUeXBlSWQ8PigpIGZyb20gdGhlIEdvb2dsZSBUZXN0Ci0vLyBmcmFtZXdvcmsuCi0jZGVmaW5l
IEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSlcCi0gIEdURVNUX1RFU1RfKHRl
c3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUsIFwKLSAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpUZXN0
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRUZXN0VHlwZUlkKCkpCi0KLS8vIERlZmluZSB0aGlz
IG1hY3JvIHRvIDEgdG8gb21pdCB0aGUgZGVmaW5pdGlvbiBvZiBURVNUKCksIHdoaWNoCi0vLyBp
cyBhIGdlbmVyaWMgbmFtZSBhbmQgY2xhc2hlcyB3aXRoIHNvbWUgb3RoZXIgbGlicmFyaWVzLgot
I2lmICFHVEVTVF9ET05UX0RFRklORV9URVNUCi0jIGRlZmluZSBURVNUKHRlc3RfY2FzZV9uYW1l
LCB0ZXN0X25hbWUpIEdURVNUX1RFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkKLSNlbmRp
ZgotCi0vLyBEZWZpbmVzIGEgdGVzdCB0aGF0IHVzZXMgYSB0ZXN0IGZpeHR1cmUuCi0vLwotLy8g
VGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
LCB3aGljaAotLy8gYWxzbyBkb3VibGVzIGFzIHRoZSB0ZXN0IGNhc2UgbmFtZS4gIFRoZSBzZWNv
bmQgcGFyYW1ldGVyIGlzIHRoZQotLy8gbmFtZSBvZiB0aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3Qg
Y2FzZS4KLS8vCi0vLyBBIHRlc3QgZml4dHVyZSBjbGFzcyBtdXN0IGJlIGRlY2xhcmVkIGVhcmxp
ZXIuICBUaGUgdXNlciBzaG91bGQgcHV0Ci0vLyB0aGUgdGVzdCBjb2RlIGJldHdlZW4gYnJhY2Vz
IGFmdGVyIHVzaW5nIHRoaXMgbWFjcm8uICBFeGFtcGxlOgotLy8KLS8vICAgY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLS8vICAgIHByb3RlY3RlZDoKLS8vICAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7IGJfLkFkZEVsZW1lbnQoMyk7IH0KLS8vCi0vLyAgICAgRm9vIGFf
OwotLy8gICAgIEZvbyBiXzsKLS8vICAgfTsKLS8vCi0vLyAgIFRFU1RfRihGb29UZXN0LCBJbml0
aWFsaXplc0NvcnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9UUlVFKGFfLlN0YXR1c0lzT0soKSk7
Ci0vLyAgIH0KLS8vCi0vLyAgIFRFU1RfRihGb29UZXN0LCBSZXR1cm5zRWxlbWVudENvdW50Q29y
cmVjdGx5KSB7Ci0vLyAgICAgRVhQRUNUX0VRKDAsIGFfLnNpemUoKSk7Ci0vLyAgICAgRVhQRUNU
X0VRKDEsIGJfLnNpemUoKSk7Ci0vLyAgIH0KLQotI2RlZmluZSBURVNUX0YodGVzdF9maXh0dXJl
LCB0ZXN0X25hbWUpXAotICBHVEVTVF9URVNUXyh0ZXN0X2ZpeHR1cmUsIHRlc3RfbmFtZSwgdGVz
dF9maXh0dXJlLCBcCi0gICAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJ
ZDx0ZXN0X2ZpeHR1cmU+KCkpCi0KLS8vIFJldHVybnMgYSBwYXRoIHRvIHRlbXBvcmFyeSBkaXJl
Y3RvcnkuCi0vLyBUcmllcyB0byBkZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGZv
ciB0aGUgcGxhdGZvcm0uCi1HVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFRlbXBEaXIoKTsKLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW4gbWFpbigpIHRv
IHJ1biBhbGwgdGVzdHMuICBJdCByZXR1cm5zIDAgaWYgYWxsCi0vLyB0ZXN0cyBhcmUgc3VjY2Vz
c2Z1bCwgb3IgMSBvdGhlcndpc2UuCi0vLwotLy8gUlVOX0FMTF9URVNUUygpIHNob3VsZCBiZSBp
bnZva2VkIGFmdGVyIHRoZSBjb21tYW5kIGxpbmUgaGFzIGJlZW4KLS8vIHBhcnNlZCBieSBJbml0
R29vZ2xlVGVzdCgpLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gd2FzIGZvcm1lcmx5IGEgbWFjcm87
IHRodXMsIGl0IGlzIGluIHRoZSBnbG9iYWwKLS8vIG5hbWVzcGFjZSBhbmQgaGFzIGFuIGFsbC1j
YXBzIG5hbWUuCi1pbnQgUlVOX0FMTF9URVNUUygpIEdURVNUX01VU1RfVVNFX1JFU1VMVF87Ci0K
LWlubGluZSBpbnQgUlVOX0FMTF9URVNUUygpIHsKLSAgcmV0dXJuIDo6dGVzdGluZzo6VW5pdFRl
c3Q6OkdldEluc3RhbmNlKCktPlJ1bigpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVf
R1RFU1RfR1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3RfcHJlZF9pbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1w
bC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGFlNzEyZjUwZWQzZDhlODQ0NmU0
NDk1YWY5YjFhYmVjYWIyZTg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzNTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElDQUxMWSBHRU5FUkFU
RUQgb24gMTAvMzEvMjAxMSBieSBjb21tYW5kCi0vLyAnZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSA1
Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCi0vLwotLy8gSW1wbGVtZW50cyBhIGZhbWlseSBvZiBn
ZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfUFJFRF9JTVBMX0hfCi0KLS8vIE1ha2VzIHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90IGlu
Y2x1ZGVkIGJlZm9yZSBndGVzdC5oLgotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X0hfCi0jIGVycm9yIERvIG5vdCBpbmNsdWRlIGd0ZXN0X3ByZWRfaW1wbC5oIGRpcmVjdGx5LiAg
SW5jbHVkZSBndGVzdC5oIGluc3RlYWQuCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfSF8KLQotLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmlj
IHByZWRpY2F0ZSBhc3NlcnRpb24KLS8vIG1hY3JvczoKLS8vCi0vLyAgIEFTU0VSVF9QUkVEX0ZP
Uk1BVDEocHJlZF9mb3JtYXQsIHYxKQotLy8gICBBU1NFUlRfUFJFRF9GT1JNQVQyKHByZWRfZm9y
bWF0LCB2MSwgdjIpCi0vLyAgIC4uLgotLy8KLS8vIHdoZXJlIHByZWRfZm9ybWF0IGlzIGEgZnVu
Y3Rpb24gb3IgZnVuY3RvciB0aGF0IHRha2VzIG4gKGluIHRoZQotLy8gY2FzZSBvZiBBU1NFUlRf
UFJFRF9GT1JNQVRuKSB2YWx1ZXMgYW5kIHRoZWlyIHNvdXJjZSBleHByZXNzaW9uCi0vLyB0ZXh0
LCBhbmQgcmV0dXJucyBhIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdC4gIFNlZSB0aGUgZGVmaW5p
dGlvbgotLy8gb2YgQVNTRVJUX0VRIGluIGd0ZXN0LmggZm9yIGFuIGV4YW1wbGUuCi0vLwotLy8g
SWYgeW91IGRvbid0IGNhcmUgYWJvdXQgZm9ybWF0dGluZywgeW91IGNhbiB1c2UgdGhlIG1vcmUK
LS8vIHJlc3RyaWN0aXZlIHZlcnNpb246Ci0vLwotLy8gICBBU1NFUlRfUFJFRDEocHJlZCwgdjEp
Ci0vLyAgIEFTU0VSVF9QUkVEMihwcmVkLCB2MSwgdjIpCi0vLyAgIC4uLgotLy8KLS8vIHdoZXJl
IHByZWQgaXMgYW4gbi1hcnkgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IHJldHVybnMgYm9vbCwK
LS8vIGFuZCB0aGUgdmFsdWVzIHYxLCB2MiwgLi4uLCBtdXN0IHN1cHBvcnQgdGhlIDw8IG9wZXJh
dG9yIGZvcgotLy8gc3RyZWFtaW5nIHRvIHN0ZDo6b3N0cmVhbS4KLS8vCi0vLyBXZSBhbHNvIGRl
ZmluZSB0aGUgRVhQRUNUXyogdmFyaWF0aW9ucy4KLS8vCi0vLyBGb3Igbm93IHdlIG9ubHkgc3Vw
cG9ydCBwcmVkaWNhdGVzIHdob3NlIGFyaXR5IGlzIGF0IG1vc3QgNS4KLS8vIFBsZWFzZSBlbWFp
bCBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQKLS8vIHN1
cHBvcnQgZm9yIGhpZ2hlciBhcml0aWVzLgotCi0vLyBHVEVTVF9BU1NFUlRfIGlzIHRoZSBiYXNp
YyBzdGF0ZW1lbnQgdG8gd2hpY2ggYWxsIG9mIHRoZSBhc3NlcnRpb25zCi0vLyBpbiB0aGlzIGZp
bGUgcmVkdWNlLiAgRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotCi0jZGVmaW5lIEdURVNU
X0FTU0VSVF8oZXhwcmVzc2lvbiwgb25fZmFpbHVyZSkgXAotICBHVEVTVF9BTUJJR1VPVVNfRUxT
RV9CTE9DS0VSXyBcCi0gIGlmIChjb25zdCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBndGVz
dF9hciA9IChleHByZXNzaW9uKSkgXAotICAgIDsgXAotICBlbHNlIFwKLSAgICBvbl9mYWlsdXJl
KGd0ZXN0X2FyLmZhaWx1cmVfbWVzc2FnZSgpKQotCi0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3Ig
aW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMS4gIERvbid0IHVzZQotLy8gdGhpcyBp
biB5b3VyIGNvZGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZCwKLSAgICAgICAgICB0eXBlbmFt
ZSBUMT4KLUFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkMUhlbHBlcihjb25zdCBjaGFyKiBwcmVk
X3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZCBwcmVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewotICBpZiAocHJlZCh2MSkp
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
KSA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjE7Ci19Ci0KLS8vIElu
dGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFU
MS4KLS8vIERvbid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRF9G
T1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHBy
ZWRfZm9ybWF0KCN2MSwgdjEpLCBcCi0gICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKLQotLy8g
SW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDEuICBE
b24ndCB1c2UKLS8vIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVEMV8ocHJl
ZCwgdjEsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKDo6dGVzdGluZzo6QXNzZXJ0UHJl
ZDFIZWxwZXIoI3ByZWQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICN2MSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djEpLCBvbl9mYWlsdXJlKQotCi0vLyBVbmFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4K
LSNkZWZpbmUgRVhQRUNUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdCwgdjEpIFwKLSAgR1RFU1Rf
UFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQot
I2RlZmluZSBFWFBFQ1RfUFJFRDEocHJlZCwgdjEpIFwKLSAgR1RFU1RfUFJFRDFfKHByZWQsIHYx
LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNTRVJUX1BSRURfRk9STUFUMShw
cmVkX2Zvcm1hdCwgdjEpIFwKLSAgR1RFU1RfUFJFRF9GT1JNQVQxXyhwcmVkX2Zvcm1hdCwgdjEs
IEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfUFJFRDEocHJlZCwgdjEpIFwK
LSAgR1RFU1RfUFJFRDFfKHByZWQsIHYxLCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLQotCi0KLS8v
IEhlbHBlciBmdW5jdGlvbiBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEMi4g
IERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3VyIGNvZGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJl
ZCwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwKLSAgICAgICAgICB0eXBlbmFtZSBUMj4KLUFzc2Vy
dGlvblJlc3VsdCBBc3NlcnRQcmVkMkhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJlZCBwcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMiYgdjIpIHsKLSAgaWYgKHByZWQodjEsIHYyKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKLQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgZTIgPDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRv
ICIgPDwgdjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIg
ZXZhbHVhdGVzIHRvICIgPDwgdjI7Ci19Ci0KLS8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1l
bnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUMi4KLS8vIERvbid0IHVzZSB0aGlzIGlu
IHlvdXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zvcm1hdCwgdjEs
IHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2Miwg
djEsIHYyKSwgXAotICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCi0KLS8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNlCi0v
LyB0aGlzIGluIHlvdXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRDJfKHByZWQsIHYxLCB2Miwg
b25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3NlcnRQcmVkMkhlbHBl
cigjcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
I3YxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjIs
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MiksIG9uX2ZhaWx1cmUp
Ci0KLS8vIEJpbmFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KLSNkZWZpbmUgRVhQRUNU
X1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdCwgdjEsIHYyKSBcCi0gIEdURVNUX1BSRURfRk9STUFU
Ml8ocHJlZF9mb3JtYXQsIHYxLCB2MiwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5l
IEVYUEVDVF9QUkVEMihwcmVkLCB2MSwgdjIpIFwKLSAgR1RFU1RfUFJFRDJfKHByZWQsIHYxLCB2
MiwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
cHJlZF9mb3JtYXQsIHYxLCB2MikgXAotICBHVEVTVF9QUkVEX0ZPUk1BVDJfKHByZWRfZm9ybWF0
LCB2MSwgdjIsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfUFJFRDIocHJl
ZCwgdjEsIHYyKSBcCi0gIEdURVNUX1BSRUQyXyhwcmVkLCB2MSwgdjIsIEdURVNUX0ZBVEFMX0ZB
SUxVUkVfKQotCi0KLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVD
VHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCi0vLyB0aGlzIGluIHlvdXIgY29kZS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBQcmVkLAotICAgICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICAgIHR5
cGVuYW1lIFQyLAotICAgICAgICAgIHR5cGVuYW1lIFQzPgotQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dFByZWQzSGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVk
IHByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMpIHsKLSAgaWYgKHByZWQodjEs
IHYyLCB2MykpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIEFzc2VydGlv
bkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgZTEgPDwgIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIs
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMyA8PCAiKSBldmFsdWF0ZXMgdG8g
ZmFsc2UsIHdoZXJlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJcbiIgPDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MzsKLX0KLQot
Ly8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9G
T1JNQVQzLgotLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9Q
UkVEX0ZPUk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBvbl9mYWlsdXJlKVwKLSAgR1RF
U1RfQVNTRVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCB2MSwgdjIsIHYzKSwgXAotICAg
ICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCi0KLS8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1l
bnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQzLiAgRG9uJ3QgdXNlCi0vLyB0aGlzIGluIHlvdXIg
Y29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRDNfKHByZWQsIHYxLCB2MiwgdjMsIG9uX2ZhaWx1cmUp
XAotICBHVEVTVF9BU1NFUlRfKDo6dGVzdGluZzo6QXNzZXJ0UHJlZDNIZWxwZXIoI3ByZWQsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2MSwgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3YyLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjMsIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQsIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2MiwgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjMpLCBvbl9mYWlsdXJlKQotCi0vLyBUZXJuYXJ5IHByZWRp
Y2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQzKHByZWRf
Zm9ybWF0LCB2MSwgdjIsIHYzKSBcCi0gIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3JtYXQs
IHYxLCB2MiwgdjMsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBFWFBFQ1RfUFJF
RDMocHJlZCwgdjEsIHYyLCB2MykgXAotICBHVEVTVF9QUkVEM18ocHJlZCwgdjEsIHYyLCB2Mywg
R1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9QUkVEX0ZPUk1BVDMocHJl
ZF9mb3JtYXQsIHYxLCB2MiwgdjMpIFwKLSAgR1RFU1RfUFJFRF9GT1JNQVQzXyhwcmVkX2Zvcm1h
dCwgdjEsIHYyLCB2MywgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9QUkVE
MyhwcmVkLCB2MSwgdjIsIHYzKSBcCi0gIEdURVNUX1BSRUQzXyhwcmVkLCB2MSwgdjIsIHYzLCBH
VEVTVF9GQVRBTF9GQUlMVVJFXykKLQotCi0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENC4gIERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3Vy
IGNvZGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZCwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwK
LSAgICAgICAgICB0eXBlbmFtZSBUMiwKLSAgICAgICAgICB0eXBlbmFtZSBUMywKLSAgICAgICAg
ICB0eXBlbmFtZSBUND4KLUFzc2VydGlvblJlc3VsdCBBc3NlcnRQcmVkNEhlbHBlcihjb25zdCBj
aGFyKiBwcmVkX3RleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZCBwcmVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVDMmIHYzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0
JiB2NCkgewotICBpZiAocHJlZCh2MSwgdjIsIHYzLCB2NCkpIHJldHVybiBBc3NlcnRpb25TdWNj
ZXNzKCk7Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTEgPDwgIiwgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGUyIDw8ICIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBlMyA8PCAiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTQgPDwgIikg
ZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVzIHRvICIg
PDwgdjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8ICIgZXZh
bHVhdGVzIHRvICIgPDwgdjQ7Ci19Ci0KLS8vIEludGVybmFsIG1hY3JvIGZvciBpbXBsZW1lbnRp
bmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KLS8vIERvbid0IHVzZSB0aGlzIGluIHlv
dXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ0XyhwcmVkX2Zvcm1hdCwgdjEsIHYy
LCB2MywgdjQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwg
I3YyLCAjdjMsICN2NCwgdjEsIHYyLCB2MywgdjQpLCBcCi0gICAgICAgICAgICAgICAgb25fZmFp
bHVyZSkKLQotLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VS
VH1fUFJFRDQuICBEb24ndCB1c2UKLS8vIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVT
VF9QUkVENF8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NF
UlRfKDo6dGVzdGluZzo6QXNzZXJ0UHJlZDRIZWxwZXIoI3ByZWQsIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2MSwgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgI3YyLCBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjdjMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICN2NCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHYyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2MywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjQp
LCBvbl9mYWlsdXJlKQotCi0vLyA0LWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KLSNk
ZWZpbmUgRVhQRUNUX1BSRURfRk9STUFUNChwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQpIFwK
LSAgR1RFU1RfUFJFRF9GT1JNQVQ0XyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBFWFBFQ1RfUFJFRDQocHJlZCwgdjEsIHYyLCB2
MywgdjQpIFwKLSAgR1RFU1RfUFJFRDRfKHByZWQsIHYxLCB2MiwgdjMsIHY0LCBHVEVTVF9OT05G
QVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNTRVJUX1BSRURfRk9STUFUNChwcmVkX2Zvcm1hdCwg
djEsIHYyLCB2MywgdjQpIFwKLSAgR1RFU1RfUFJFRF9GT1JNQVQ0XyhwcmVkX2Zvcm1hdCwgdjEs
IHYyLCB2MywgdjQsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfUFJFRDQo
cHJlZCwgdjEsIHYyLCB2MywgdjQpIFwKLSAgR1RFU1RfUFJFRDRfKHByZWQsIHYxLCB2MiwgdjMs
IHY0LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLQotCi0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3Ig
aW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENS4gIERvbid0IHVzZQotLy8gdGhpcyBp
biB5b3VyIGNvZGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZCwKLSAgICAgICAgICB0eXBlbmFt
ZSBUMSwKLSAgICAgICAgICB0eXBlbmFtZSBUMiwKLSAgICAgICAgICB0eXBlbmFtZSBUMywKLSAg
ICAgICAgICB0eXBlbmFtZSBUNCwKLSAgICAgICAgICB0eXBlbmFtZSBUNT4KLUFzc2VydGlvblJl
c3VsdCBBc3NlcnRQcmVkNUhlbHBlcihjb25zdCBjaGFyKiBwcmVkX3RleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogZTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZCBw
cmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUNSYgdjUpIHsKLSAgaWYgKHByZWQodjEsIHYyLCB2MywgdjQsIHY1KSkg
cmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8
PCAiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlNCA8PCAiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTUg
PDwgIikgZXZhbHVhdGVzIHRvIGZhbHNlLCB3aGVyZSIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiXG4iIDw8IGUxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjEKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUyIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGUzIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdjMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iIDw8IGU0IDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
XG4iIDw8IGU1IDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdjU7Ci19Ci0KLS8vIEludGVybmFsIG1h
Y3JvIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNS4KLS8vIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRF9GT1JNQVQ1Xyhw
cmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNT
RVJUXyhwcmVkX2Zvcm1hdCgjdjEsICN2MiwgI3YzLCAjdjQsICN2NSwgdjEsIHYyLCB2MywgdjQs
IHY1KSwgXAotICAgICAgICAgICAgICAgIG9uX2ZhaWx1cmUpCi0KLS8vIEludGVybmFsIG1hY3Jv
IGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAgRG9uJ3QgdXNlCi0vLyB0
aGlzIGluIHlvdXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfUFJFRDVfKHByZWQsIHYxLCB2MiwgdjMs
IHY0LCB2NSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3NlcnRQ
cmVkNUhlbHBlcigjcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgI3YxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjdjIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICN2MywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Y0
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjUsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWQsIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MiwgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjMsIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY0LCBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2NSksIG9uX2ZhaWx1cmUpCi0KLS8vIDUtYXJ5IHByZWRp
Y2F0ZSBhc3NlcnRpb24gbWFjcm9zLgotI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQ1KHByZWRf
Zm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUpIFwKLSAgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVk
X2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNk
ZWZpbmUgRVhQRUNUX1BSRUQ1KHByZWQsIHYxLCB2MiwgdjMsIHY0LCB2NSkgXAotICBHVEVTVF9Q
UkVENV8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykK
LSNkZWZpbmUgQVNTRVJUX1BSRURfRk9STUFUNShwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgdjQs
IHY1KSBcCi0gIEdURVNUX1BSRURfRk9STUFUNV8ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIHY0
LCB2NSwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9QUkVENShwcmVkLCB2
MSwgdjIsIHYzLCB2NCwgdjUpIFwKLSAgR1RFU1RfUFJFRDVfKHByZWQsIHYxLCB2MiwgdjMsIHY0
LCB2NSwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0KLQotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNs
dWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Rf
cHJvZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTgwZGRjNmM3MGVlMmRjNzcz
ZWQ2NzY1YTRmODlkZmE4Y2IzOGU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGRlZmluaXRpb25zIHVzZWZ1
bCBpbiBwcm9kdWN0aW9uIGNvZGUuCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QUk9EX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXwotCi0v
LyBXaGVuIHlvdSBuZWVkIHRvIHRlc3QgdGhlIHByaXZhdGUgb3IgcHJvdGVjdGVkIG1lbWJlcnMg
b2YgYSBjbGFzcywKLS8vIHVzZSB0aGUgRlJJRU5EX1RFU1QgbWFjcm8gdG8gZGVjbGFyZSB5b3Vy
IHRlc3RzIGFzIGZyaWVuZHMgb2YgdGhlCi0vLyBjbGFzcy4gIEZvciBleGFtcGxlOgotLy8KLS8v
IGNsYXNzIE15Q2xhc3MgewotLy8gIHByaXZhdGU6Ci0vLyAgIHZvaWQgTXlNZXRob2QoKTsKLS8v
ICAgRlJJRU5EX1RFU1QoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKTsKLS8vIH07Ci0vLwotLy8gY2xh
c3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0vLyAgIC8vIC4uLgotLy8g
fTsKLS8vCi0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0aG9kKSB7Ci0vLyAgIC8vIENhbiBj
YWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KLS8vIH0KLQotI2RlZmluZSBGUklFTkRfVEVT
VCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKVwKLWZyaWVuZCBjbGFzcyB0ZXN0X2Nhc2VfbmFt
ZSMjXyMjdGVzdF9uYW1lIyNfVGVzdAotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfUFJPRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ODVmNWQ1ODQ3N2JlMjc5MDQyYWI0ZmZiMTU0ZmIwMTJiNTc1ZTdjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXBvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBJ
bmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25zLgotLy8gVGhlIGZv
bGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6Ci0vLwotLy8gICBGbGFnIHJlbGF0ZWQgbWFj
cm9zOgotLy8gICAgIEdURVNUX0ZMQUcoZmxhZ19uYW1lKQotLy8gICAgIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18gIC0gRGVmaW5lIHRvIDAgd2hlbiB0aGUgc3lzdGVtIHByb3ZpZGVzIGl0
cwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3duIGZsYWdmaWxlIGZs
YWcgcGFyc2luZy4KLS8vICAgICBHVEVTVF9ERUNMQVJFX2Jvb2xfKG5hbWUpCi0vLyAgICAgR1RF
U1RfREVDTEFSRV9pbnQzMl8obmFtZSkKLS8vICAgICBHVEVTVF9ERUNMQVJFX3N0cmluZ18obmFt
ZSkKLS8vICAgICBHVEVTVF9ERUZJTkVfYm9vbF8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKLS8v
ICAgICBHVEVTVF9ERUZJTkVfaW50MzJfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpCi0vLyAgICAg
R1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKLS8vCi0vLyAgIFRl
c3QgZmlsdGVyaW5nOgotLy8gICAgIEdURVNUX1RFU1RfRklMVEVSX0VOVl9WQVJfIC0gVGhlIG5h
bWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdAotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lsbCBiZSB1c2VkIGlmIC0tR1RFU1RfRkxBRyh0ZXN0X2ZpbHRlcikK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBwcm92aWRlZC4KLS8v
Ci0vLyAgIExvZ2dpbmc6Ci0vLyAgICAgR1RFU1RfTE9HXyhzZXZlcml0eSkKLS8vICAgICBHVEVT
VF9DSEVDS18oY29uZGl0aW9uKQotLy8gICAgIEZ1bmN0aW9ucyBMb2dUb1N0ZGVycigpIGFuZCBG
bHVzaEluZm9Mb2coKSBoYXZlIHRvIGJlIHByb3ZpZGVkIHRvby4KLS8vCi0vLyAgIFRocmVhZGlu
ZzoKLS8vICAgICBHVEVTVF9IQVNfTk9USUZJQ0FUSU9OXyAtIEVuYWJsZWQgaWYgTm90aWZpY2F0
aW9uIGlzIGFscmVhZHkgcHJvdmlkZWQuCi0vLyAgICAgR1RFU1RfSEFTX01VVEVYX0FORF9USFJF
QURfTE9DQUxfIC0gRW5hYmxlZCBpZiBNdXRleCBhbmQgVGhyZWFkTG9jYWwgYXJlCi0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBwcm92aWRlZC4KLS8v
ICAgICBNdXN0IGFsc28gcHJvdmlkZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgp
IGFuZAotLy8gICAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KQotLy8KLS8vICAg
ICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8obG9ja3MpCi0vLyAgICAgR1RFU1RfTE9D
S19FWENMVURFRF8obG9ja3MpCi0vLwotLy8gICBFeHBvcnRpbmcgQVBJIHN5bWJvbHM6Ci0vLyAg
ICAgR1RFU1RfQVBJXyAtIFNwZWNpZmllciBmb3IgZXhwb3J0ZWQgc3ltYm9scy4KLS8vCi0vLyAq
KiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUgKioKLQotI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCi0jZGVmaW5lIEdURVNU
X0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BPUlRfSF8KLQotI2VuZGlmICAv
LyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9QT1JUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1w
cmludGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rl
c3QtcHJpbnRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBjMWVhMDUwYjYx
ZTkzYmZjZjE0NmU2MTExYmZhNTAzMTVjODJlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC1wcmludGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIFRoaXMgZmls
ZSBwcm92aWRlcyBhbiBpbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSBwcmludGVycyBpbiBhIGxv
Y2FsCi0vLyBpbnN0YWxsYXRpb24gb2YgZ1Rlc3QuCi0vLyBJdCB3aWxsIGJlIGluY2x1ZGVkIGZy
b20gZ3Rlc3QtcHJpbnRlcnMuaCBhbmQgdGhlIG92ZXJyaWRlcyBpbiB0aGlzIGZpbGUKLS8vIHdp
bGwgYmUgdmlzaWJsZSB0byBldmVyeW9uZS4KLS8vIFNlZSBkb2N1bWVudGF0aW9uIGF0IGd0ZXN0
L2d0ZXN0LXByaW50ZXJzLmggZm9yIGRldGFpbHMgb24gaG93IHRvIGRlZmluZSBhCi0vLyBjdXN0
b20gcHJpbnRlci4KLS8vCi0vLyAqKiBDdXN0b20gaW1wbGVtZW50YXRpb24gc3RhcnRzIGhlcmUg
KioKLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9Q
UklOVEVSU19IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9H
VEVTVF9QUklOVEVSU19IXwotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTdhMWMwYjdkOWE5NmU3NmJiM2ZjOGYwZTUxMjhhNDU0NWJmNWI1YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIElu
amVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29uZmlndXJhdGlvbnMuCi0vLyBUaGUgZm9s
bG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKLS8vCi0vLyBHVEVTVF9PU19TVEFDS19UUkFD
RV9HRVRURVJfICAtIFRoZSBuYW1lIG9mIGFuIGltcGxlbWVudGF0aW9uIG9mCi0vLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZS4KLS8v
Ci0vLyBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElPTl8gLSBBbiBvdmVycmlkZSBmb3IgdGVz
dGluZzo6VGVtcERpcigpLgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vl
IHRlc3Rpbmc6OlRlbXBEaXIgZm9yIHNlbWFudGljcyBhbmQKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZ25hdHVyZS4KLS8vIAotLy8gKiogQ3VzdG9tIGltcGxlbWVudGF0
aW9uIHN0YXJ0cyBoZXJlICoqCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9DVVNUT01fR1RFU1RfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9D
VVNUT01fR1RFU1RfSF8KLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmIzYTc4ZjViZjg2MzI4ZmMxYmY1OGYxNjgyYzllZTQ0YTUwNTdj
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAor
KysgL2Rldi9udWxsCkBAIC0xLDMxOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRl
ciBmaWxlIGRlZmluZXMgaW50ZXJuYWwgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5n
Ci0vLyBkZWF0aCB0ZXN0cy4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90
aWNlLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfREVBVEhf
VEVTVF9JTlRFUk5BTF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LWludGVybmFsLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi1uYW1lc3BhY2UgdGVzdGlu
ZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1HVEVTVF9ERUNMQVJFX3N0cmluZ18oaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QpOwotCi0vLyBOYW1lcyBvZiB0aGUgZmxhZ3MgKG5lZWRlZCBmb3Ig
cGFyc2luZyBHb29nbGUgVGVzdCBmbGFncykuCi1jb25zdCBjaGFyIGtEZWF0aFRlc3RTdHlsZUZs
YWdbXSA9ICJkZWF0aF90ZXN0X3N0eWxlIjsKLWNvbnN0IGNoYXIga0RlYXRoVGVzdFVzZUZvcmtb
XSA9ICJkZWF0aF90ZXN0X3VzZV9mb3JrIjsKLWNvbnN0IGNoYXIga0ludGVybmFsUnVuRGVhdGhU
ZXN0RmxhZ1tdID0gImludGVybmFsX3J1bl9kZWF0aF90ZXN0IjsKLQotI2lmIEdURVNUX0hBU19E
RUFUSF9URVNUCi0KLS8vIERlYXRoVGVzdCBpcyBhIGNsYXNzIHRoYXQgaGlkZXMgbXVjaCBvZiB0
aGUgY29tcGxleGl0eSBvZiB0aGUKLS8vIEdURVNUX0RFQVRIX1RFU1RfIG1hY3JvLiAgSXQgaXMg
YWJzdHJhY3Q7IGl0cyBzdGF0aWMgQ3JlYXRlIG1ldGhvZAotLy8gcmV0dXJucyBhIGNvbmNyZXRl
IGNsYXNzIHRoYXQgZGVwZW5kcyBvbiB0aGUgcHJldmFpbGluZyBkZWF0aCB0ZXN0Ci0vLyBzdHls
ZSwgYXMgZGVmaW5lZCBieSB0aGUgLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGFuZC9vcgotLy8g
LS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncy4KLQotLy8gSW4gZGVzY3JpYmlu
ZyB0aGUgcmVzdWx0cyBvZiBkZWF0aCB0ZXN0cywgdGhlc2UgdGVybXMgYXJlIHVzZWQgd2l0aAot
Ly8gdGhlIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnM6Ci0vLwotLy8gZXhpdCBzdGF0dXM6ICBU
aGUgaW50ZWdlciBleGl0IGluZm9ybWF0aW9uIGluIHRoZSBmb3JtYXQgc3BlY2lmaWVkCi0vLyAg
ICAgICAgICAgICAgIGJ5IHdhaXQoMikKLS8vIGV4aXQgY29kZTogICAgVGhlIGludGVnZXIgY29k
ZSBwYXNzZWQgdG8gZXhpdCgzKSwgX2V4aXQoMiksIG9yCi0vLyAgICAgICAgICAgICAgIHJldHVy
bmVkIGZyb20gbWFpbigpCi1jbGFzcyBHVEVTVF9BUElfIERlYXRoVGVzdCB7Ci0gcHVibGljOgot
ICAvLyBDcmVhdGUgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZGV0ZXJtaW5p
bmcgdGhlCi0gIC8vIGFwcHJvcHJpYXRlIGFjdGlvbiB0byB0YWtlIGZvciB0aGUgY3VycmVudCBk
ZWF0aCB0ZXN0OyBmb3IgZXhhbXBsZSwKLSAgLy8gaWYgdGhlIGd0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGUgZmxhZyBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4KLSAgLy8gVGhlIExhc3RNZXNzYWdl
IG1ldGhvZCB3aWxsIHJldHVybiBhIG1vcmUgZGV0YWlsZWQgbWVzc2FnZSBpbiB0aGF0Ci0gIC8v
IGNhc2UuICBPdGhlcndpc2UsIHRoZSBEZWF0aFRlc3QgcG9pbnRlciBwb2ludGVkIHRvIGJ5IHRo
ZSAidGVzdCIKLSAgLy8gYXJndW1lbnQgaXMgc2V0LiAgSWYgdGhlIGRlYXRoIHRlc3Qgc2hvdWxk
IGJlIHNraXBwZWQsIHRoZSBwb2ludGVyCi0gIC8vIGlzIHNldCB0byBOVUxMOyBvdGhlcndpc2Us
IGl0IGlzIHNldCB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldyBjb25jcmV0ZQotICAvLyBEZWF0aFRl
c3Qgb2JqZWN0IHRoYXQgY29udHJvbHMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0ZXN0
LgotICBzdGF0aWMgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSog
cmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwg
RGVhdGhUZXN0KiogdGVzdCk7Ci0gIERlYXRoVGVzdCgpOwotICB2aXJ0dWFsIH5EZWF0aFRlc3Qo
KSB7IH0KLQotICAvLyBBIGhlbHBlciBjbGFzcyB0aGF0IGFib3J0cyBhIGRlYXRoIHRlc3Qgd2hl
biBpdCdzIGRlbGV0ZWQuCi0gIGNsYXNzIFJldHVyblNlbnRpbmVsIHsKLSAgIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBSZXR1cm5TZW50aW5lbChEZWF0aFRlc3QqIHRlc3QpIDogdGVzdF8odGVzdCkg
eyB9Ci0gICAgflJldHVyblNlbnRpbmVsKCkgeyB0ZXN0Xy0+QWJvcnQoVEVTVF9FTkNPVU5URVJF
RF9SRVRVUk5fU1RBVEVNRU5UKTsgfQotICAgcHJpdmF0ZToKLSAgICBEZWF0aFRlc3QqIGNvbnN0
IHRlc3RfOwotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUmV0dXJuU2VudGlu
ZWwpOwotICB9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOwotCi0gIC8vIEFuIGVudW1lcmF0aW9u
IG9mIHBvc3NpYmxlIHJvbGVzIHRoYXQgbWF5IGJlIHRha2VuIHdoZW4gYSBkZWF0aAotICAvLyB0
ZXN0IGlzIGVuY291bnRlcmVkLiAgRVhFQ1VURSBtZWFucyB0aGF0IHRoZSBkZWF0aCB0ZXN0IGxv
Z2ljIHNob3VsZAotICAvLyBiZSBleGVjdXRlZCBpbW1lZGlhdGVseS4gIE9WRVJTRUUgbWVhbnMg
dGhhdCB0aGUgcHJvZ3JhbSBzaG91bGQgcHJlcGFyZQotICAvLyB0aGUgYXBwcm9wcmlhdGUgZW52
aXJvbm1lbnQgZm9yIGEgY2hpbGQgcHJvY2VzcyB0byBleGVjdXRlIHRoZSBkZWF0aAotICAvLyB0
ZXN0LCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgotICBlbnVtIFRlc3RSb2xlIHsgT1ZF
UlNFRV9URVNULCBFWEVDVVRFX1RFU1QgfTsKLQotICAvLyBBbiBlbnVtZXJhdGlvbiBvZiB0aGUg
dGhyZWUgcmVhc29ucyB0aGF0IGEgdGVzdCBtaWdodCBiZSBhYm9ydGVkLgotICBlbnVtIEFib3J0
UmVhc29uIHsKLSAgICBURVNUX0VOQ09VTlRFUkVEX1JFVFVSTl9TVEFURU1FTlQsCi0gICAgVEVT
VF9USFJFV19FWENFUFRJT04sCi0gICAgVEVTVF9ESURfTk9UX0RJRQotICB9OwotCi0gIC8vIEFz
c3VtZXMgb25lIG9mIHRoZSBhYm92ZSByb2xlcy4KLSAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVS
b2xlKCkgPSAwOwotCi0gIC8vIFdhaXRzIGZvciB0aGUgZGVhdGggdGVzdCB0byBmaW5pc2ggYW5k
IHJldHVybnMgaXRzIHN0YXR1cy4KLSAgdmlydHVhbCBpbnQgV2FpdCgpID0gMDsKLQotICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhlIGRlYXRoIHRlc3QgcGFzc2VkOyB0aGF0IGlzLCB0aGUgdGVzdCBw
cm9jZXNzCi0gIC8vIGV4aXRlZCBkdXJpbmcgdGhlIHRlc3QsIGl0cyBleGl0IHN0YXR1cyBtYXRj
aGVzIGEgdXNlci1zdXBwbGllZAotICAvLyBwcmVkaWNhdGUsIGFuZCBpdHMgc3RkZXJyIG91dHB1
dCBtYXRjaGVzIGEgdXNlci1zdXBwbGllZCByZWd1bGFyCi0gIC8vIGV4cHJlc3Npb24uCi0gIC8v
IFRoZSB1c2VyLXN1cHBsaWVkIHByZWRpY2F0ZSBtYXkgYmUgYSBtYWNybyBleHByZXNzaW9uIHJh
dGhlcgotICAvLyB0aGFuIGEgZnVuY3Rpb24gcG9pbnRlciBvciBmdW5jdG9yLCBvciBlbHNlIFdh
aXQgYW5kIFBhc3NlZCBjb3VsZAotICAvLyBiZSBjb21iaW5lZC4KLSAgdmlydHVhbCBib29sIFBh
c3NlZChib29sIGV4aXRfc3RhdHVzX29rKSA9IDA7Ci0KLSAgLy8gU2lnbmFscyB0aGF0IHRoZSBk
ZWF0aCB0ZXN0IGRpZCBub3QgZGllIGFzIGV4cGVjdGVkLgotICB2aXJ0dWFsIHZvaWQgQWJvcnQo
QWJvcnRSZWFzb24gcmVhc29uKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyBhIGh1bWFuLXJlYWRhYmxl
IG91dGNvbWUgbWVzc2FnZSByZWdhcmRpbmcgdGhlIG91dGNvbWUgb2YKLSAgLy8gdGhlIGxhc3Qg
ZGVhdGggdGVzdC4KLSAgc3RhdGljIGNvbnN0IGNoYXIqIExhc3RNZXNzYWdlKCk7Ci0KLSAgc3Rh
dGljIHZvaWQgc2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBt
ZXNzYWdlKTsKLQotIHByaXZhdGU6Ci0gIC8vIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNjcmlw
dGlvbiBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgbGFzdCBkZWF0aCB0ZXN0LgotICBzdGF0aWMgc3Rk
OjpzdHJpbmcgbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oRGVhdGhUZXN0KTsKLX07Ci0KLS8vIEZhY3RvcnkgaW50ZXJmYWNlIGZv
ciBkZWF0aCB0ZXN0cy4gIE1heSBiZSBtb2NrZWQgb3V0IGZvciB0ZXN0aW5nLgotY2xhc3MgRGVh
dGhUZXN0RmFjdG9yeSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5EZWF0aFRlc3RGYWN0b3J5KCkg
eyB9Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBS
RSogcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIERlYXRoVGVzdCoqIHRlc3QpID0gMDsKLX07Ci0KLS8vIEEgY29uY3JldGUgRGVhdGhUZXN0
RmFjdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3Igbm9ybWFsIHVzZS4KLWNsYXNzIERlZmF1bHREZWF0
aFRlc3RGYWN0b3J5IDogcHVibGljIERlYXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgdmly
dHVhbCBib29sIENyZWF0ZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhU
ZXN0KiogdGVzdCk7Ci19OwotCi0vLyBSZXR1cm5zIHRydWUgaWYgZXhpdF9zdGF0dXMgZGVzY3Jp
YmVzIGEgcHJvY2VzcyB0aGF0IHdhcyB0ZXJtaW5hdGVkCi0vLyBieSBhIHNpZ25hbCwgb3IgZXhp
dGVkIG5vcm1hbGx5IHdpdGggYSBub256ZXJvIGV4aXQgY29kZS4KLUdURVNUX0FQSV8gYm9vbCBF
eGl0ZWRVbnN1Y2Nlc3NmdWxseShpbnQgZXhpdF9zdGF0dXMpOwotCi0vLyBUcmFwcyBDKysgZXhj
ZXB0aW9ucyBlc2NhcGluZyBzdGF0ZW1lbnQgYW5kIHJlcG9ydHMgdGhlbSBhcyB0ZXN0Ci0vLyBm
YWlsdXJlcy4gTm90ZSB0aGF0IHRyYXBwaW5nIFNFSCBleGNlcHRpb25zIGlzIG5vdCBpbXBsZW1l
bnRlZCBoZXJlLgotIyBpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotIyAgZGVmaW5lIEdURVNUX0VY
RUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVudCwgZGVhdGhfdGVzdCkgXAotICB0
cnkgeyBcCi0gICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9X
XyhzdGF0ZW1lbnQpOyBcCi0gIH0gY2F0Y2ggKGNvbnN0IDo6c3RkOjpleGNlcHRpb24mIGd0ZXN0
X2V4Y2VwdGlvbikgeyBcCi0gICAgZnByaW50ZihcCi0gICAgICAgIHN0ZGVyciwgXAotICAgICAg
ICAiXG4lczogQ2F1Z2h0IHN0ZDo6ZXhjZXB0aW9uLWRlcml2ZWQgZXhjZXB0aW9uIGVzY2FwaW5n
IHRoZSAiIFwKLSAgICAgICAgImRlYXRoIHRlc3Qgc3RhdGVtZW50LiBFeGNlcHRpb24gbWVzc2Fn
ZTogJXNcbiIsIFwKLSAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0
aW9uKF9fRklMRV9fLCBfX0xJTkVfXykuY19zdHIoKSwgXAotICAgICAgICBndGVzdF9leGNlcHRp
b24ud2hhdCgpKTsgXAotICAgIGZmbHVzaChzdGRlcnIpOyBcCi0gICAgZGVhdGhfdGVzdC0+QWJv
cnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX1RIUkVXX0VYQ0VQVElPTik7
IFwKLSAgfSBjYXRjaCAoLi4uKSB7IFwKLSAgICBkZWF0aF90ZXN0LT5BYm9ydCg6OnRlc3Rpbmc6
OmludGVybmFsOjpEZWF0aFRlc3Q6OlRFU1RfVEhSRVdfRVhDRVBUSU9OKTsgXAotICB9Ci0KLSMg
ZWxzZQotIyAgZGVmaW5lIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRl
bWVudCwgZGVhdGhfdGVzdCkgXAotICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dB
Uk5JTkdfQkVMT1dfKHN0YXRlbWVudCkKLQotIyBlbmRpZgotCi0vLyBUaGlzIG1hY3JvIGlzIGZv
ciBpbXBsZW1lbnRpbmcgQVNTRVJUX0RFQVRIKiwgRVhQRUNUX0RFQVRIKiwKLS8vIEFTU0VSVF9F
WElUKiwgYW5kIEVYUEVDVF9FWElUKi4KLSMgZGVmaW5lIEdURVNUX0RFQVRIX1RFU1RfKHN0YXRl
bWVudCwgcHJlZGljYXRlLCByZWdleCwgZmFpbCkgXAotICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9C
TE9DS0VSXyBcCi0gIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAot
ICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFJiBndGVzdF9yZWdleCA9IChyZWdleCk7
IFwKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3QqIGd0ZXN0X2R0OyBcCi0gICAg
aWYgKCE6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OkNyZWF0ZSgjc3RhdGVtZW50LCAm
Z3Rlc3RfcmVnZXgsIFwKLSAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCAmZ3Rlc3RfZHQpKSB7
IFwKLSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF8sIF9fTElORV9f
KTsgXAotICAgIH0gXAotICAgIGlmIChndGVzdF9kdCAhPSBOVUxMKSB7IFwKLSAgICAgIDo6dGVz
dGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8IDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dD4gXAotICAgICAgICAgIGd0ZXN0X2R0X3B0cihndGVzdF9kdCk7IFwKLSAgICAgIHN3aXRjaCAo
Z3Rlc3RfZHQtPkFzc3VtZVJvbGUoKSkgeyBcCi0gICAgICAgIGNhc2UgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6RGVhdGhUZXN0OjpPVkVSU0VFX1RFU1Q6IFwKLSAgICAgICAgICBpZiAoIWd0ZXN0X2R0
LT5QYXNzZWQocHJlZGljYXRlKGd0ZXN0X2R0LT5XYWl0KCkpKSkgeyBcCi0gICAgICAgICAgICBn
b3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfLCBfX0xJTkVfXyk7IFwKLSAgICAg
ICAgICB9IFwKLSAgICAgICAgICBicmVhazsgXAotICAgICAgICBjYXNlIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkRlYXRoVGVzdDo6RVhFQ1VURV9URVNUOiB7IFwKLSAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpEZWF0aFRlc3Q6OlJldHVyblNlbnRpbmVsIFwKLSAgICAgICAgICAgICAgZ3Rl
c3Rfc2VudGluZWwoZ3Rlc3RfZHQpOyBcCi0gICAgICAgICAgR1RFU1RfRVhFQ1VURV9ERUFUSF9U
RVNUX1NUQVRFTUVOVF8oc3RhdGVtZW50LCBndGVzdF9kdCk7IFwKLSAgICAgICAgICBndGVzdF9k
dC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX0RJRF9OT1RfRElF
KTsgXAotICAgICAgICAgIGJyZWFrOyBcCi0gICAgICAgIH0gXAotICAgICAgICBkZWZhdWx0OiBc
Ci0gICAgICAgICAgYnJlYWs7IFwKLSAgICAgIH0gXAotICAgIH0gXAotICB9IGVsc2UgXAotICAg
IEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZh
aWwoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpKQotLy8gVGhl
IHN5bWJvbCAiZmFpbCIgaGVyZSBleHBhbmRzIHRvIHNvbWV0aGluZyBpbnRvIHdoaWNoIGEgbWVz
c2FnZQotLy8gY2FuIGJlIHN0cmVhbWVkLgotCi0vLyBUaGlzIG1hY3JvIGlzIGZvciBpbXBsZW1l
bnRpbmcgQVNTRVJUL0VYUEVDVF9ERUJVR19ERUFUSCB3aGVuIGNvbXBpbGVkIGluCi0vLyBOREVC
VUcgbW9kZS4gSW4gdGhpcyBjYXNlIHdlIG5lZWQgdGhlIHN0YXRlbWVudHMgdG8gYmUgZXhlY3V0
ZWQsIHRoZSByZWdleCBpcwotLy8gaWdub3JlZCwgYW5kIHRoZSBtYWNybyBtdXN0IGFjY2VwdCBh
IHN0cmVhbWVkIG1lc3NhZ2UgZXZlbiB0aG91Z2ggdGhlIG1lc3NhZ2UKLS8vIGlzIG5ldmVyIHBy
aW50ZWQuCi0jIGRlZmluZSBHVEVTVF9FWEVDVVRFX1NUQVRFTUVOVF8oc3RhdGVtZW50LCByZWdl
eCkgXAotICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAotICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNI
QUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgfSBlbHNlIFwKLSAgICA6
OnRlc3Rpbmc6Ok1lc3NhZ2UoKQotCi0vLyBBIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcGFyc2Vk
IGNvbnRlbnRzIG9mIHRoZQotLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFn
LCBhcyBpdCBleGlzdGVkIHdoZW4KLS8vIFJVTl9BTExfVEVTVFMgd2FzIGNhbGxlZC4KLWNsYXNz
IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyB7Ci0gcHVibGljOgotICBJbnRlcm5hbFJ1bkRlYXRo
VGVzdEZsYWcoY29uc3Qgc3RkOjpzdHJpbmcmIGFfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBhX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5faW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYV93cml0ZV9mZCkKLSAgICAgIDog
ZmlsZV8oYV9maWxlKSwgbGluZV8oYV9saW5lKSwgaW5kZXhfKGFuX2luZGV4KSwKLSAgICAgICAg
d3JpdGVfZmRfKGFfd3JpdGVfZmQpIHt9Ci0KLSAgfkludGVybmFsUnVuRGVhdGhUZXN0RmxhZygp
IHsKLSAgICBpZiAod3JpdGVfZmRfID49IDApCi0gICAgICBwb3NpeDo6Q2xvc2Uod3JpdGVfZmRf
KTsKLSAgfQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmls
ZV87IH0KLSAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQotICBpbnQgaW5kZXgo
KSBjb25zdCB7IHJldHVybiBpbmRleF87IH0KLSAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1
cm4gd3JpdGVfZmRfOyB9Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyBmaWxlXzsKLSAgaW50
IGxpbmVfOwotICBpbnQgaW5kZXhfOwotICBpbnQgd3JpdGVfZmRfOwotCi0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKTsKLX07Ci0KLS8v
IFJldHVybnMgYSBuZXdseSBjcmVhdGVkIEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyBvYmplY3Qg
d2l0aCBmaWVsZHMKLS8vIGluaXRpYWxpemVkIGZyb20gdGhlIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpIGZsYWcgaWYKLS8vIHRoZSBmbGFnIGlzIHNwZWNpZmllZDsgb3RoZXJ3
aXNlIHJldHVybnMgTlVMTC4KLUludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogUGFyc2VJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcoKTsKLQotI2Vsc2UgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0K
LS8vIFRoaXMgbWFjcm8gaXMgdXNlZCBmb3IgaW1wbGVtZW50aW5nIG1hY3JvcyBzdWNoIGFzCi0v
LyBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEIGFuZCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVE
IG9uIHN5c3RlbXMgd2hlcmUKLS8vIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiBUaG9z
ZSBtYWNyb3MgbXVzdCBjb21waWxlIG9uIHN1Y2ggc3lzdGVtcwotLy8gaWZmIEVYUEVDVF9ERUFU
SCBhbmQgQVNTRVJUX0RFQVRIIGNvbXBpbGUgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIG9uCi0v
LyBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBkZWF0aCB0ZXN0cy4gVGhpcyBhbGxvd3Mgb25lIHRvIHdy
aXRlIHN1Y2ggYSBtYWNybwotLy8gb24gYSBzeXN0ZW0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGRl
YXRoIHRlc3RzIGFuZCBiZSBzdXJlIHRoYXQgaXQgd2lsbAotLy8gY29tcGlsZSBvbiBhIGRlYXRo
LXRlc3Qgc3VwcG9ydGluZyBzeXN0ZW0uCi0vLwotLy8gUGFyYW1ldGVyczoKLS8vICAgc3RhdGVt
ZW50IC0gIEEgc3RhdGVtZW50IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFUSCB3b3Vs
ZCB0ZXN0Ci0vLyAgICAgICAgICAgICAgICBmb3IgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gVGhpcyBt
YWNybyBoYXMgdG8gbWFrZSBzdXJlIHRoaXMKLS8vICAgICAgICAgICAgICAgIHN0YXRlbWVudCBp
cyBjb21waWxlZCBidXQgbm90IGV4ZWN1dGVkLCB0byBlbnN1cmUgdGhhdAotLy8gICAgICAgICAg
ICAgICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBjb21waWxlcyB3aXRoIGEgY2VydGFpbgot
Ly8gICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlmZiBFWFBFQ1RfREVBVEggY29tcGlsZXMgd2l0
aCBpdC4KLS8vICAgcmVnZXggICAgIC0gIEEgcmVnZXggdGhhdCBhIG1hY3JvIHN1Y2ggYXMgRVhQ
RUNUX0RFQVRIIHdvdWxkIHVzZSB0byB0ZXN0Ci0vLyAgICAgICAgICAgICAgICB0aGUgb3V0cHV0
IG9mIHN0YXRlbWVudC4gIFRoaXMgcGFyYW1ldGVyIGhhcyB0byBiZQotLy8gICAgICAgICAgICAg
ICAgY29tcGlsZWQgYnV0IG5vdCBldmFsdWF0ZWQgYnkgdGhpcyBtYWNybywgdG8gZW5zdXJlIHRo
YXQKLS8vICAgICAgICAgICAgICAgIHRoaXMgbWFjcm8gb25seSBhY2NlcHRzIGV4cHJlc3Npb25z
IHRoYXQgYSBtYWNybyBzdWNoIGFzCi0vLyAgICAgICAgICAgICAgICBFWFBFQ1RfREVBVEggd291
bGQgYWNjZXB0LgotLy8gICB0ZXJtaW5hdG9yIC0gTXVzdCBiZSBhbiBlbXB0eSBzdGF0ZW1lbnQg
Zm9yIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQKLS8vICAgICAgICAgICAgICAgIGFuZCBhIHJl
dHVybiBzdGF0ZW1lbnQgZm9yIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQuCi0vLyAgICAgICAg
ICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIHdpbGwg
bm90Ci0vLyAgICAgICAgICAgICAgICBjb21waWxlIGluc2lkZSBmdW5jdGlvbnMgd2hlcmUgQVNT
RVJUX0RFQVRIIGRvZXNuJ3QKLS8vICAgICAgICAgICAgICAgIGNvbXBpbGUuCi0vLwotLy8gIFRo
ZSBicmFuY2ggdGhhdCBoYXMgYW4gYWx3YXlzIGZhbHNlIGNvbmRpdGlvbiBpcyB1c2VkIHRvIGVu
c3VyZSB0aGF0Ci0vLyAgc3RhdGVtZW50IGFuZCByZWdleCBhcmUgY29tcGlsZWQgKGFuZCB0aHVz
IHN5bnRhY3RpY2FsbHkgY29ycmVjdCkgYnV0Ci0vLyAgbmV2ZXIgZXhlY3V0ZWQuIFRoZSB1bnJl
YWNoYWJsZSBjb2RlIG1hY3JvIHByb3RlY3RzIHRoZSB0ZXJtaW5hdG9yCi0vLyAgc3RhdGVtZW50
IGZyb20gZ2VuZXJhdGluZyBhbiAndW5yZWFjaGFibGUgY29kZScgd2FybmluZyBpbiBjYXNlCi0v
LyAgc3RhdGVtZW50IHVuY29uZGl0aW9uYWxseSByZXR1cm5zIG9yIHRocm93cy4gVGhlIE1lc3Nh
Z2UgY29uc3RydWN0b3IgYXQKLS8vICB0aGUgZW5kIGFsbG93cyB0aGUgc3ludGF4IG9mIHN0cmVh
bWluZyBhZGRpdGlvbmFsIG1lc3NhZ2VzIGludG8gdGhlCi0vLyAgbWFjcm8sIGZvciBjb21waWxh
dGlvbmFsIGNvbXBhdGliaWxpdHkgd2l0aCBFWFBFQ1RfREVBVEgvQVNTRVJUX0RFQVRILgotIyBk
ZWZpbmUgR1RFU1RfVU5TVVBQT1JURURfREVBVEhfVEVTVF8oc3RhdGVtZW50LCByZWdleCwgdGVy
bWluYXRvcikgXAotICAgIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgICBpZiAo
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKLSAgICAgIEdURVNUX0xPR18o
V0FSTklORykgXAotICAgICAgICAgIDw8ICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBv
biB0aGlzIHBsYXRmb3JtLlxuIiBcCi0gICAgICAgICAgPDwgIlN0YXRlbWVudCAnIiAjc3RhdGVt
ZW50ICInIGNhbm5vdCBiZSB2ZXJpZmllZC4iOyBcCi0gICAgfSBlbHNlIGlmICg6OnRlc3Rpbmc6
OmludGVybmFsOjpBbHdheXNGYWxzZSgpKSB7IFwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OlJFOjpQYXJ0aWFsTWF0Y2goIi4qIiwgKHJlZ2V4KSk7IFwKLSAgICAgIEdURVNUX1NVUFBSRVNT
X1VOUkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAotICAgICAgdGVy
bWluYXRvcjsgXAotICAgIH0gZWxzZSBcCi0gICAgICA6OnRlc3Rpbmc6Ok1lc3NhZ2UoKQotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2ExM2I0YjBkZTYwODNiYmZlNjk2M2Y4YzBlZDE2ZTI3ZGU3
NzAxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5
KQotLy8KLS8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcwotLy8KLS8vIFRoaXMgaGVh
ZGVyIGZpbGUgZGVjbGFyZXMgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBi
eQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5v
dGljZS4KLS8vCi0vLyBUaGlzIGZpbGUgaXMgI2luY2x1ZGVkIGluIDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPi4KLS8vIERvIG5vdCBpbmNsdWRlIHRoaXMgaGVhZGVyIGZpbGUgc2Vw
YXJhdGVseSEKLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0ZJ
TEVQQVRIX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklM
RVBBVEhfSF8KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgotCi1u
YW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBGaWxlUGF0aCAt
IGEgY2xhc3MgZm9yIGZpbGUgYW5kIGRpcmVjdG9yeSBwYXRobmFtZSBtYW5pcHVsYXRpb24gd2hp
Y2gKLS8vIGhhbmRsZXMgcGxhdGZvcm0tc3BlY2lmaWMgY29udmVudGlvbnMgKGxpa2UgdGhlIHBh
dGhuYW1lIHNlcGFyYXRvcikuCi0vLyBVc2VkIGZvciBoZWxwZXIgZnVuY3Rpb25zIGZvciBuYW1p
bmcgZmlsZXMgaW4gYSBkaXJlY3RvcnkgZm9yIHhtbCBvdXRwdXQuCi0vLyBFeGNlcHQgZm9yIFNl
dCBtZXRob2RzLCBhbGwgbWV0aG9kcyBhcmUgY29uc3Qgb3Igc3RhdGljLCB3aGljaCBwcm92aWRl
cyBhbgotLy8gImltbXV0YWJsZSB2YWx1ZSBvYmplY3QiIC0tIHVzZWZ1bCBmb3IgcGVhY2Ugb2Yg
bWluZC4KLS8vIEEgRmlsZVBhdGggd2l0aCBhIHZhbHVlIGVuZGluZyBpbiBhIHBhdGggc2VwYXJh
dG9yICgibGlrZS90aGlzLyIpIHJlcHJlc2VudHMKLS8vIGEgZGlyZWN0b3J5LCBvdGhlcndpc2Ug
aXQgaXMgYXNzdW1lZCB0byByZXByZXNlbnQgYSBmaWxlLiBJbiBlaXRoZXIgY2FzZSwKLS8vIGl0
IG1heSBvciBtYXkgbm90IHJlcHJlc2VudCBhbiBhY3R1YWwgZmlsZSBvciBkaXJlY3RvcnkgaW4g
dGhlIGZpbGUgc3lzdGVtLgotLy8gTmFtZXMgYXJlIE5PVCBjaGVja2VkIGZvciBzeW50YXggY29y
cmVjdG5lc3MgLS0gbm8gY2hlY2tpbmcgZm9yIGlsbGVnYWwKLS8vIGNoYXJhY3RlcnMsIG1hbGZv
cm1lZCBwYXRocywgZXRjLgotCi1jbGFzcyBHVEVTVF9BUElfIEZpbGVQYXRoIHsKLSBwdWJsaWM6
Ci0gIEZpbGVQYXRoKCkgOiBwYXRobmFtZV8oIiIpIHsgfQotICBGaWxlUGF0aChjb25zdCBGaWxl
UGF0aCYgcmhzKSA6IHBhdGhuYW1lXyhyaHMucGF0aG5hbWVfKSB7IH0KLQotICBleHBsaWNpdCBG
aWxlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgcGF0aG5hbWUpIDogcGF0aG5hbWVfKHBhdGhuYW1l
KSB7Ci0gICAgTm9ybWFsaXplKCk7Ci0gIH0KLQotICBGaWxlUGF0aCYgb3BlcmF0b3I9KGNvbnN0
IEZpbGVQYXRoJiByaHMpIHsKLSAgICBTZXQocmhzKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LQotICB2b2lkIFNldChjb25zdCBGaWxlUGF0aCYgcmhzKSB7Ci0gICAgcGF0aG5hbWVfID0gcmhz
LnBhdGhuYW1lXzsKLSAgfQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBwYXRobmFtZV87IH0KLSAgY29uc3QgY2hhciogY19zdHIoKSBjb25zdCB7IHJldHVy
biBwYXRobmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KLSAgc3RhdGljIEZpbGVQYXRoIEdl
dEN1cnJlbnREaXIoKTsKLQotICAvLyBHaXZlbiBkaXJlY3RvcnkgPSAiZGlyIiwgYmFzZV9uYW1l
ID0gInRlc3QiLCBudW1iZXIgPSAwLAotICAvLyBleHRlbnNpb24gPSAieG1sIiwgcmV0dXJucyAi
ZGlyL3Rlc3QueG1sIi4gSWYgbnVtYmVyIGlzIGdyZWF0ZXIKLSAgLy8gdGhhbiB6ZXJvIChlLmcu
LCAxMiksIHJldHVybnMgImRpci90ZXN0XzEyLnhtbCIuCi0gIC8vIE9uIFdpbmRvd3MgcGxhdGZv
cm0sIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yIHJhdGhlciB0aGFuIC8uCi0gIHN0YXRpYyBGaWxl
UGF0aCBNYWtlRmlsZU5hbWUoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgYmFzZV9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBudW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLQotICAvLyBHaXZlbiBkaXJlY3Rvcnkg
PSAiZGlyIiwgcmVsYXRpdmVfcGF0aCA9ICJ0ZXN0LnhtbCIsCi0gIC8vIHJldHVybnMgImRpci90
ZXN0LnhtbCIuCi0gIC8vIE9uIFdpbmRvd3MsIHVzZXMgXCBhcyB0aGUgc2VwYXJhdG9yIHJhdGhl
ciB0aGFuIC8uCi0gIHN0YXRpYyBGaWxlUGF0aCBDb25jYXRQYXRocyhjb25zdCBGaWxlUGF0aCYg
ZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgm
IHJlbGF0aXZlX3BhdGgpOwotCi0gIC8vIFJldHVybnMgYSBwYXRobmFtZSBmb3IgYSBmaWxlIHRo
YXQgZG9lcyBub3QgY3VycmVudGx5IGV4aXN0LiBUaGUgcGF0aG5hbWUKLSAgLy8gd2lsbCBiZSBk
aXJlY3RvcnkvYmFzZV9uYW1lLmV4dGVuc2lvbiBvcgotICAvLyBkaXJlY3RvcnkvYmFzZV9uYW1l
XzxudW1iZXI+LmV4dGVuc2lvbiBpZiBkaXJlY3RvcnkvYmFzZV9uYW1lLmV4dGVuc2lvbgotICAv
LyBhbHJlYWR5IGV4aXN0cy4gVGhlIG51bWJlciB3aWxsIGJlIGluY3JlbWVudGVkIHVudGlsIGEg
cGF0aG5hbWUgaXMgZm91bmQKLSAgLy8gdGhhdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotICAv
LyBFeGFtcGxlczogJ2Rpci9mb29fdGVzdC54bWwnIG9yICdkaXIvZm9vX3Rlc3RfMS54bWwnLgot
ICAvLyBUaGVyZSBjb3VsZCBiZSBhIHJhY2UgY29uZGl0aW9uIGlmIHR3byBvciBtb3JlIHByb2Nl
c3NlcyBhcmUgY2FsbGluZyB0aGlzCi0gIC8vIGZ1bmN0aW9uIGF0IHRoZSBzYW1lIHRpbWUgLS0g
dGhleSBjb3VsZCBib3RoIHBpY2sgdGhlIHNhbWUgZmlsZW5hbWUuCi0gIHN0YXRpYyBGaWxlUGF0
aCBHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3RvcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiBiYXNl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGV4dGVuc2lvbik7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgcGF0aCBpcyAiIi4K
LSAgYm9vbCBJc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gcGF0aG5hbWVfLmVtcHR5KCk7IH0KLQot
ICAvLyBJZiBpbnB1dCBuYW1lIGhhcyBhIHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIsIHJl
bW92ZXMgaXQgYW5kIHJldHVybnMKLSAgLy8gdGhlIG5hbWUsIG90aGVyd2lzZSByZXR1cm4gdGhl
IG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCi0gIC8vIE9uIFdpbmRvd3MgcGxhdGZvcm0sIHVzZXMg
XCBhcyB0aGUgc2VwYXJhdG9yLCBvdGhlciBwbGF0Zm9ybXMgdXNlIC8uCi0gIEZpbGVQYXRoIFJl
bW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgYSBjb3B5
IG9mIHRoZSBGaWxlUGF0aCB3aXRoIHRoZSBkaXJlY3RvcnkgcGFydCByZW1vdmVkLgotICAvLyBF
eGFtcGxlOiBGaWxlUGF0aCgicGF0aC90by9maWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpIHJl
dHVybnMKLSAgLy8gRmlsZVBhdGgoImZpbGUiKS4gSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IHBh
cnQgKCJqdXN0X2FfZmlsZSIpLCBpdCByZXR1cm5zCi0gIC8vIHRoZSBGaWxlUGF0aCB1bm1vZGlm
aWVkLiBJZiB0aGVyZSBpcyBubyBmaWxlIHBhcnQgKCJqdXN0X2FfZGlyLyIpIGl0Ci0gIC8vIHJl
dHVybnMgYW4gZW1wdHkgRmlsZVBhdGggKCIiKS4KLSAgLy8gT24gV2luZG93cyBwbGF0Zm9ybSwg
J1wnIGlzIHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KLSAgRmlsZVBh
dGggUmVtb3ZlRGlyZWN0b3J5TmFtZSgpIGNvbnN0OwotCi0gIC8vIFJlbW92ZUZpbGVOYW1lIHJl
dHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQuCi0gIC8v
IEV4YW1wbGU6IEZpbGVQYXRoKCJwYXRoL3RvL2ZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpIHJldHVy
bnMgInBhdGgvdG8vIi4KLSAgLy8gSWYgdGhlIEZpbGVQYXRoIGlzICJhX2ZpbGUiIG9yICIvYV9m
aWxlIiwgUmVtb3ZlRmlsZU5hbWUgcmV0dXJucwotICAvLyBGaWxlUGF0aCgiLi8iKSBvciwgb24g
V2luZG93cywgRmlsZVBhdGgoIi5cXCIpLiBJZiB0aGUgZmlsZXBhdGggZG9lcwotICAvLyBub3Qg
aGF2ZSBhIGZpbGUsIGxpa2UgImp1c3QvYS9kaXIvIiwgaXQgcmV0dXJucyB0aGUgRmlsZVBhdGgg
dW5tb2RpZmllZC4KLSAgLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlzIHRoZSBwYXRoIHNl
cGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KLSAgRmlsZVBhdGggUmVtb3ZlRmlsZU5hbWUo
KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIGEgY29weSBvZiB0aGUgRmlsZVBhdGggd2l0aCB0aGUg
Y2FzZS1pbnNlbnNpdGl2ZSBleHRlbnNpb24gcmVtb3ZlZC4KLSAgLy8gRXhhbXBsZTogRmlsZVBh
dGgoImRpci9maWxlLmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiRVhFIikgcmV0dXJucwotICAvLyBG
aWxlUGF0aCgiZGlyL2ZpbGUiKS4gSWYgYSBjYXNlLWluc2Vuc2l0aXZlIGV4dGVuc2lvbiBpcyBu
b3QKLSAgLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4K
LSAgRmlsZVBhdGggUmVtb3ZlRXh0ZW5zaW9uKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3Q7
Ci0KLSAgLy8gQ3JlYXRlcyBkaXJlY3RvcmllcyBzbyB0aGF0IHBhdGggZXhpc3RzLiBSZXR1cm5z
IHRydWUgaWYgc3VjY2Vzc2Z1bCBvciBpZgotICAvLyB0aGUgZGlyZWN0b3JpZXMgYWxyZWFkeSBl
eGlzdDsgcmV0dXJucyBmYWxzZSBpZiB1bmFibGUgdG8gY3JlYXRlCi0gIC8vIGRpcmVjdG9yaWVz
IGZvciBhbnkgcmVhc29uLiBXaWxsIGFsc28gcmV0dXJuIGZhbHNlIGlmIHRoZSBGaWxlUGF0aCBk
b2VzCi0gIC8vIG5vdCByZXByZXNlbnQgYSBkaXJlY3RvcnkgKHRoYXQgaXMsIGl0IGRvZXNuJ3Qg
ZW5kIHdpdGggYSBwYXRoIHNlcGFyYXRvcikuCi0gIGJvb2wgQ3JlYXRlRGlyZWN0b3JpZXNSZWN1
cnNpdmVseSgpIGNvbnN0OwotCi0gIC8vIENyZWF0ZSB0aGUgZGlyZWN0b3J5IHNvIHRoYXQgcGF0
aCBleGlzdHMuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsIG9yCi0gIC8vIGlmIHRoZSBkaXJl
Y3RvcnkgYWxyZWFkeSBleGlzdHM7IHJldHVybnMgZmFsc2UgaWYgdW5hYmxlIHRvIGNyZWF0ZSB0
aGUKLSAgLy8gZGlyZWN0b3J5IGZvciBhbnkgcmVhc29uLCBpbmNsdWRpbmcgaWYgdGhlIHBhcmVu
dCBkaXJlY3RvcnkgZG9lcyBub3QKLSAgLy8gZXhpc3QuIE5vdCBuYW1lZCAiQ3JlYXRlRGlyZWN0
b3J5IiBiZWNhdXNlIHRoYXQncyBhIG1hY3JvIG9uIFdpbmRvd3MuCi0gIGJvb2wgQ3JlYXRlRm9s
ZGVyKCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIEZpbGVQYXRoIGRlc2NyaWJlcyBz
b21ldGhpbmcgaW4gdGhlIGZpbGUtc3lzdGVtLAotICAvLyBlaXRoZXIgYSBmaWxlLCBkaXJlY3Rv
cnksIG9yIHdoYXRldmVyLCBhbmQgdGhhdCBzb21ldGhpbmcgZXhpc3RzLgotICBib29sIEZpbGVP
ckRpcmVjdG9yeUV4aXN0cygpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFt
ZSBkZXNjcmliZXMgYSBkaXJlY3RvcnkgaW4gdGhlIGZpbGUtc3lzdGVtCi0gIC8vIHRoYXQgZXhp
c3RzLgotICBib29sIERpcmVjdG9yeUV4aXN0cygpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1
ZSBpZiBGaWxlUGF0aCBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciwgd2hpY2ggaW5kaWNhdGVz
IHRoYXQKLSAgLy8gaXQgaXMgaW50ZW5kZWQgdG8gcmVwcmVzZW50IGEgZGlyZWN0b3J5LiBSZXR1
cm5zIGZhbHNlIG90aGVyd2lzZS4KLSAgLy8gVGhpcyBkb2VzIE5PVCBjaGVjayB0aGF0IGEgZGly
ZWN0b3J5IChvciBmaWxlKSBhY3R1YWxseSBleGlzdHMuCi0gIGJvb2wgSXNEaXJlY3RvcnkoKSBj
b25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWYgcGF0aG5hbWUgZGVzY3JpYmVzIGEgcm9vdCBk
aXJlY3RvcnkuIChXaW5kb3dzIGhhcyBvbmUKLSAgLy8gcm9vdCBkaXJlY3RvcnkgcGVyIGRpc2sg
ZHJpdmUuKQotICBib29sIElzUm9vdERpcmVjdG9yeSgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMg
dHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYW4gYWJzb2x1dGUgcGF0aC4KLSAgYm9vbCBJc0Fi
c29sdXRlUGF0aCgpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgLy8gUmVwbGFjZXMgbXVsdGlwbGUg
Y29uc2VjdXRpdmUgc2VwYXJhdG9ycyB3aXRoIGEgc2luZ2xlIHNlcGFyYXRvci4KLSAgLy8gRm9y
IGV4YW1wbGUsICJiYXIvLy9mb28iIGJlY29tZXMgImJhci9mb28iLiBEb2VzIG5vdCBlbGltaW5h
dGUgb3RoZXIKLSAgLy8gcmVkdW5kYW5jaWVzIHRoYXQgbWlnaHQgYmUgaW4gYSBwYXRobmFtZSBp
bnZvbHZpbmcgIi4iIG9yICIuLiIuCi0gIC8vCi0gIC8vIEEgcGF0aG5hbWUgd2l0aCBtdWx0aXBs
ZSBjb25zZWN1dGl2ZSBzZXBhcmF0b3JzIG1heSBvY2N1ciBlaXRoZXIgdGhyb3VnaAotICAvLyB1
c2VyIGVycm9yIG9yIGFzIGEgcmVzdWx0IG9mIHNvbWUgc2NyaXB0cyBvciBBUElzIHRoYXQgZ2Vu
ZXJhdGUgYSBwYXRobmFtZQotICAvLyB3aXRoIGEgdHJhaWxpbmcgc2VwYXJhdG9yLiBPbiBvdGhl
ciBwbGF0Zm9ybXMgdGhlIHNhbWUgQVBJIG9yIHNjcmlwdAotICAvLyBtYXkgTk9UIGdlbmVyYXRl
IGEgcGF0aG5hbWUgd2l0aCBhIHRyYWlsaW5nICIvIi4gVGhlbiBlbHNld2hlcmUgdGhhdAotICAv
LyBwYXRobmFtZSBtYXkgaGF2ZSBhbm90aGVyICIvIiBhbmQgcGF0aG5hbWUgY29tcG9uZW50cyBh
ZGRlZCB0byBpdCwKLSAgLy8gd2l0aG91dCBjaGVja2luZyBmb3IgdGhlIHNlcGFyYXRvciBhbHJl
YWR5IGJlaW5nIHRoZXJlLgotICAvLyBUaGUgc2NyaXB0IGxhbmd1YWdlIGFuZCBvcGVyYXRpbmcg
c3lzdGVtIG1heSBhbGxvdyBwYXRocyBsaWtlICJmb28vL2JhciIKLSAgLy8gYnV0IHNvbWUgb2Yg
dGhlIGZ1bmN0aW9ucyBpbiBGaWxlUGF0aCB3aWxsIG5vdCBoYW5kbGUgdGhhdCBjb3JyZWN0bHku
IEluCi0gIC8vIHBhcnRpY3VsYXIsIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIG9ubHkg
cmVtb3ZlcyBvbmUgc2VwYXJhdG9yLCBhbmQKLSAgLy8gaXQgaXMgY2FsbGVkIGluIENyZWF0ZURp
cmVjdG9yaWVzUmVjdXJzaXZlbHkoKSBhc3N1bWluZyB0aGF0IGl0IHdpbGwgY2hhbmdlCi0gIC8v
IGEgcGF0aG5hbWUgZnJvbSBkaXJlY3Rvcnkgc3ludGF4ICh0cmFpbGluZyBzZXBhcmF0b3IpIHRv
IGZpbGVuYW1lIHN5bnRheC4KLSAgLy8KLSAgLy8gT24gV2luZG93cyB0aGlzIG1ldGhvZCBhbHNv
IHJlcGxhY2VzIHRoZSBhbHRlcm5hdGUgcGF0aCBzZXBhcmF0b3IgJy8nIHdpdGgKLSAgLy8gdGhl
IHByaW1hcnkgcGF0aCBzZXBhcmF0b3IgJ1xcJywgc28gdGhhdCBmb3IgZXhhbXBsZSAiYmFyXFwv
XFxmb28iIGJlY29tZXMKLSAgLy8gImJhclxcZm9vIi4KLQotICB2b2lkIE5vcm1hbGl6ZSgpOwot
Ci0gIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlk
IHBhdGggc2VwYXJhdG9yIGluCi0gIC8vIHRoZSBGaWxlUGF0aC4gT24gV2luZG93cywgZm9yIGV4
YW1wbGUsIGJvdGggJy8nIGFuZCAnXCcgYXJlIHZhbGlkIHBhdGgKLSAgLy8gc2VwYXJhdG9ycy4g
UmV0dXJucyBOVUxMIGlmIG5vIHBhdGggc2VwYXJhdG9yIHdhcyBmb3VuZC4KLSAgY29uc3QgY2hh
ciogRmluZExhc3RQYXRoU2VwYXJhdG9yKCkgY29uc3Q7Ci0KLSAgc3RkOjpzdHJpbmcgcGF0aG5h
bWVfOwotfTsgIC8vIGNsYXNzIEZpbGVQYXRoCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX0ZJTEVQQVRIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNs
dWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVkYTVhYjQ2ZDNhYWU1OTU3NzE3ZjU2MjdmNzBhNDBiMjQxOTAwZDYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIz
OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFp
bC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVzIGZ1bmN0
aW9ucyBhbmQgbWFjcm9zIHVzZWQgaW50ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5
IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLQotI2lmbmRlZiBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCi0jZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5URVJOQUxfSF8KLQotI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2lmIEdURVNUX09TX0xJTlVYCi0jIGluY2x1ZGUg
PHN0ZGxpYi5oPgotIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSMgaW5jbHVkZSA8c3lzL3dhaXQu
aD4KLSMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSNp
ZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotIyBpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYKLQot
I2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8ZmxvYXQuaD4KLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLSNpbmNsdWRlIDxpb21hbmlwPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxtYXA+
Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0K
LSNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdlLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBh
dGguaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIKLQotLy8g
RHVlIHRvIEMrKyBwcmVwcm9jZXNzb3Igd2VpcmRuZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVj
dGlvbiB0bwotLy8gY29uY2F0ZW5hdGUgdHdvIHRva2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9f
TElORV9fLiAgV3JpdGluZwotLy8KLS8vICAgZm9vICMjIF9fTElORV9fCi0vLwotLy8gd2lsbCBy
ZXN1bHQgaW4gdGhlIHRva2VuIGZvb19fTElORV9fLCBpbnN0ZWFkIG9mIGZvbyBmb2xsb3dlZCBi
eQotLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXIuICBGb3IgbW9yZSBkZXRhaWxzLCBzZWUKLS8v
IGh0dHA6Ly93d3cucGFyYXNoaWZ0LmNvbS9jKystZmFxLWxpdGUvbWlzYy10ZWNobmljYWwtaXNz
dWVzLmh0bWwjZmFxLTM5LjYKLSNkZWZpbmUgR1RFU1RfQ09OQ0FUX1RPS0VOXyhmb28sIGJhcikg
R1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywgYmFyKQotI2RlZmluZSBHVEVTVF9DT05DQVRf
VE9LRU5fSU1QTF8oZm9vLCBiYXIpIGZvbyAjIyBiYXIKLQotY2xhc3MgUHJvdG9jb2xNZXNzYWdl
OwotbmFtZXNwYWNlIHByb3RvMiB7IGNsYXNzIE1lc3NhZ2U7IH0KLQotbmFtZXNwYWNlIHRlc3Rp
bmcgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucy4KLQotY2xhc3MgQXNzZXJ0aW9uUmVzdWx0
OyAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIGFuIGFzc2VydGlvbi4KLWNsYXNzIE1lc3Nh
Z2U7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcHJlc2VudHMgYSBmYWlsdXJlIG1lc3Nh
Z2UuCi1jbGFzcyBUZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnRz
IGEgdGVzdC4KLWNsYXNzIFRlc3RJbmZvOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluZm9y
bWF0aW9uIGFib3V0IGEgdGVzdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0OyAgICAgICAgICAgICAg
ICAgIC8vIFJlc3VsdCBvZiBhIHRlc3QgcGFydC4KLWNsYXNzIFVuaXRUZXN0OyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEEgY29sbGVjdGlvbiBvZiB0ZXN0IGNhc2VzLgotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcgUHJpbnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSk7
Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLXN0cnVjdCBUcmFjZUluZm87ICAgICAgICAgICAg
ICAgICAgICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGEgdHJhY2UgcG9pbnQuCi1jbGFzcyBTY29w
ZWRUcmFjZTsgICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnRzIHNjb3BlZCB0cmFjZS4K
LWNsYXNzIFRlc3RJbmZvSW1wbDsgICAgICAgICAgICAgICAgICAgIC8vIE9wYXF1ZSBpbXBsZW1l
bnRhdGlvbiBvZiBUZXN0SW5mbwotY2xhc3MgVW5pdFRlc3RJbXBsOyAgICAgICAgICAgICAgICAg
ICAgLy8gT3BhcXVlIGltcGxlbWVudGF0aW9uIG9mIFVuaXRUZXN0Ci0KLS8vIFRoZSB0ZXh0IHVz
ZWQgaW4gZmFpbHVyZSBtZXNzYWdlcyB0byBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgdGhlCi0vLyBz
dGFjayB0cmFjZS4KLUdURVNUX0FQSV8gZXh0ZXJuIGNvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJr
ZXJbXTsKLQotLy8gVHdvIG92ZXJsb2FkZWQgaGVscGVycyBmb3IgY2hlY2tpbmcgYXQgY29tcGls
ZSB0aW1lIHdoZXRoZXIgYW4KLS8vIGV4cHJlc3Npb24gaXMgYSBudWxsIHBvaW50ZXIgbGl0ZXJh
bCAoaS5lLiBOVUxMIG9yIGFueSAwLXZhbHVlZAotLy8gY29tcGlsZS10aW1lIGludGVncmFsIGNv
bnN0YW50KS4gIFRoZWlyIHJldHVybiB2YWx1ZXMgaGF2ZQotLy8gZGlmZmVyZW50IHNpemVzLCBz
byB3ZSBjYW4gdXNlIHNpemVvZigpIHRvIHRlc3Qgd2hpY2ggdmVyc2lvbiBpcwotLy8gcGlja2Vk
IGJ5IHRoZSBjb21waWxlci4gIFRoZXNlIGhlbHBlcnMgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMs
IGFzCi0vLyB3ZSBvbmx5IG5lZWQgdGhlaXIgc2lnbmF0dXJlcy4KLS8vCi0vLyBHaXZlbiBJc051
bGxMaXRlcmFsSGVscGVyKHgpLCB0aGUgY29tcGlsZXIgd2lsbCBwaWNrIHRoZSBmaXJzdAotLy8g
dmVyc2lvbiBpZiB4IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBTZWNyZXQqLCBhbmQg
cGljayB0aGUKLS8vIHNlY29uZCB2ZXJzaW9uIG90aGVyd2lzZS4gIFNpbmNlIFNlY3JldCBpcyBh
IHNlY3JldCBhbmQgaW5jb21wbGV0ZQotLy8gdHlwZSwgdGhlIG9ubHkgZXhwcmVzc2lvbiBhIHVz
ZXIgY2FuIHdyaXRlIHRoYXQgaGFzIHR5cGUgU2VjcmV0KiBpcwotLy8gYSBudWxsIHBvaW50ZXIg
bGl0ZXJhbC4gIFRoZXJlZm9yZSwgd2Uga25vdyB0aGF0IHggaXMgYSBudWxsCi0vLyBwb2ludGVy
IGxpdGVyYWwgaWYgYW5kIG9ubHkgaWYgdGhlIGZpcnN0IHZlcnNpb24gaXMgcGlja2VkIGJ5IHRo
ZQotLy8gY29tcGlsZXIuCi1jaGFyIElzTnVsbExpdGVyYWxIZWxwZXIoU2VjcmV0KiBwKTsKLWNo
YXIgKCZJc051bGxMaXRlcmFsSGVscGVyKC4uLikpWzJdOyAgLy8gTk9MSU5UCi0KLS8vIEEgY29t
cGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhhdCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHggaXMg
YQotLy8gbnVsbCBwb2ludGVyIGxpdGVyYWwgKGkuZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQgY29t
cGlsZS10aW1lCi0vLyBpbnRlZ3JhbCBjb25zdGFudCkuCi0jaWZkZWYgR1RFU1RfRUxMSVBTSVNf
TkVFRFNfUE9EXwotLy8gV2UgbG9zZSBzdXBwb3J0IGZvciBOVUxMIGRldGVjdGlvbiB3aGVyZSB0
aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlCi0vLyBwYXNzaW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJv
dWdoIGVsbGlwc2lzICguLi4pLgotIyBkZWZpbmUgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBm
YWxzZQotI2Vsc2UKLSMgZGVmaW5lIEdURVNUX0lTX05VTExfTElURVJBTF8oeCkgXAotICAgIChz
aXplb2YoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNOdWxsTGl0ZXJhbEhlbHBlcih4KSkgPT0gMSkK
LSNlbmRpZiAgLy8gR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXwotCi0vLyBBcHBlbmRzIHRoZSB1
c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdl
LgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBBcHBlbmRVc2VyTWVzc2FnZSgKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLCBjb25zdCBNZXNzYWdlJiB1c2VyX21zZyk7Ci0KLSNpZiBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUaGlzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFu
ZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVzdAotLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1Rf
RkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVlIChpZiBleGNlcHRpb25zCi0vLyBhcmUgZW5h
YmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZv
cgotLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2lu
Y2UKLS8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhlcml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBt
YW55IHRlc3RpbmcKLS8vIGZyYW1ld29ya3Mga25vdyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQg
dGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgotY2xhc3MgR1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVy
ZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVudGltZV9lcnJvciB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYg
ZmFpbHVyZSk7Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIEEg
aGVscGVyIGNsYXNzIGZvciBjcmVhdGluZyBzY29wZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3JhbXMu
Ci1jbGFzcyBHVEVTVF9BUElfIFNjb3BlZFRyYWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjJ3Rv
ciBwdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8K
LSAgLy8gYSB0cmFjZSBzdGFjayBtYWludGFpbmVkIGJ5IEdvb2dsZSBUZXN0LgotICBTY29wZWRU
cmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSk7
Ci0KLSAgLy8gVGhlIGQndG9yIHBvcHMgdGhlIGluZm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLSAg
Ly8KLSAgLy8gTm90ZSB0aGF0IHRoZSBkJ3RvciBpcyBub3QgdmlydHVhbCBpbiBvcmRlciB0byBi
ZSBlZmZpY2llbnQuCi0gIC8vIERvbid0IGluaGVyaXQgZnJvbSBTY29wZWRUcmFjZSEKLSAgflNj
b3BlZFRyYWNlKCk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFNjb3BlZFRyYWNlKTsKLX0gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3Bl
ZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBqb2IgaW4gaXRzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYyd0b3IgYW5kIGQndG9yLiAgVGhlcmVmb3JlIGl0IGRvZXNuJ3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGJlIHVzZWQgb3RoZXJ3aXNlLgotCi1uYW1l
c3BhY2UgZWRpdF9kaXN0YW5jZSB7Ci0vLyBSZXR1cm5zIHRoZSBvcHRpbWFsIGVkaXRzIHRvIGdv
IGZyb20gJ2xlZnQnIHRvICdyaWdodCcuCi0vLyBBbGwgZWRpdHMgY29zdCB0aGUgc2FtZSwgd2l0
aCByZXBsYWNlIGhhdmluZyBsb3dlciBwcmlvcml0eSB0aGFuCi0vLyBhZGQvcmVtb3ZlLgotLy8g
U2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBXYWduZXLigJNGaXNjaGVyIGFsZ29yaXRobS4K
LS8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29y
aXRobQotZW51bSBFZGl0VHlwZSB7IGtNYXRjaCwga0FkZCwga1JlbW92ZSwga1JlcGxhY2UgfTsK
LUdURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygK
LSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3Rvcjxz
aXplX3Q+JiByaWdodCk7Ci0KLS8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGUgaW5wdXQgaXMgcmVw
cmVzZW50ZWQgYXMgc3RyaW5ncy4KLUdURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENh
bGN1bGF0ZU9wdGltYWxFZGl0cygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IGxlZnQsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCk7Ci0KLS8v
IENyZWF0ZSBhIGRpZmYgb2YgdGhlIGlucHV0IHN0cmluZ3MgaW4gVW5pZmllZCBkaWZmIGZvcm1h
dC4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgQ3JlYXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29udGV4dCA9IDIpOwot
Ci19ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5jZQotCi0vLyBDYWxjdWxhdGUgdGhlIGRpZmYg
YmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5kIHJldHVybiBpdCBpbiB1bmlmaWVkIGRpZmYK
LS8vIGZvcm1hdC4KLS8vIElmIG5vdCBudWxsLCBzdG9yZXMgaW4gJ3RvdGFsX2xpbmVfY291bnQn
IHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91bmQKLS8vIGluIGxlZnQgKyByaWdodC4KLUdU
RVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmluZ3MoY29uc3Qgc3RkOjpzdHJpbmcmIGxlZnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBy
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiB0b3RhbF9s
aW5lX2NvdW50KTsKLQotLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3Ig
YW4gZXF1YWxpdHkgYXNzZXJ0aW9uCi0vLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwg
ZXRjKSBmYWlsdXJlLgotLy8KLS8vIFRoZSBmaXJzdCBmb3VyIHBhcmFtZXRlcnMgYXJlIHRoZSBl
eHByZXNzaW9ucyB1c2VkIGluIHRoZSBhc3NlcnRpb24KLS8vIGFuZCB0aGVpciB2YWx1ZXMsIGFz
IHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFTU0VSVF9FUShmb28sIGJhcikKLS8vIHdoZXJl
IGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2ZToKLS8vCi0vLyAgIGV4cGVjdGVkX2V4cHJl
c3Npb246ICJmb28iCi0vLyAgIGFjdHVhbF9leHByZXNzaW9uOiAgICJiYXIiCi0vLyAgIGV4cGVj
dGVkX3ZhbHVlOiAgICAgICI1IgotLy8gICBhY3R1YWxfdmFsdWU6ICAgICAgICAiNiIKLS8vCi0v
LyBUaGUgaWdub3JpbmdfY2FzZSBwYXJhbWV0ZXIgaXMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBp
cyBhCi0vLyAqX1NUUkNBU0VFUSouICBXaGVuIGl0J3MgdHJ1ZSwgdGhlIHN0cmluZyAiIChpZ25v
cmluZyBjYXNlKSIgd2lsbAotLy8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgbWVzc2FnZS4KLUdURVNU
X0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVyZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYWN0dWFsX3ZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JpbmdfY2FzZSk7Ci0KLS8v
IENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3NhZ2UgZm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNo
IGFzIEVYUEVDVF9UUlVFLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9u
RmFpbHVyZU1lc3NhZ2UoCi0gICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVz
dWx0LAotICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKLSAgICBjb25zdCBjaGFyKiBh
Y3R1YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0
ZV92YWx1ZSk7Ci0KLS8vIFRoaXMgdGVtcGxhdGUgY2xhc3MgcmVwcmVzZW50cyBhbiBJRUVFIGZs
b2F0aW5nLXBvaW50IG51bWJlcgotLy8gKGVpdGhlciBzaW5nbGUtcHJlY2lzaW9uIG9yIGRvdWJs
ZS1wcmVjaXNpb24sIGRlcGVuZGluZyBvbiB0aGUKLS8vIHRlbXBsYXRlIHBhcmFtZXRlcnMpLgot
Ly8KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xhc3MgaXMgdG8gZG8gbW9yZSBzb3BoaXN0aWNh
dGVkIG51bWJlcgotLy8gY29tcGFyaXNvbi4gIChEdWUgdG8gcm91bmQtb2ZmIGVycm9yLCBldGMs
IGl0J3MgdmVyeSB1bmxpa2VseSB0aGF0Ci0vLyB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgYmUg
ZXF1YWwgZXhhY3RseS4gIEhlbmNlIGEgbmFpdmUKLS8vIGNvbXBhcmlzb24gYnkgdGhlID09IG9w
ZXJhdGlvbiBvZnRlbiBkb2Vzbid0IHdvcmsuKQotLy8KLS8vIEZvcm1hdCBvZiBJRUVFIGZsb2F0
aW5nLXBvaW50OgotLy8KLS8vICAgVGhlIG1vc3Qtc2lnbmlmaWNhbnQgYml0IGJlaW5nIHRoZSBs
ZWZ0bW9zdCwgYW4gSUVFRQotLy8gICBmbG9hdGluZy1wb2ludCBsb29rcyBsaWtlCi0vLwotLy8g
ICAgIHNpZ25fYml0IGV4cG9uZW50X2JpdHMgZnJhY3Rpb25fYml0cwotLy8KLS8vICAgSGVyZSwg
c2lnbl9iaXQgaXMgYSBzaW5nbGUgYml0IHRoYXQgZGVzaWduYXRlcyB0aGUgc2lnbiBvZiB0aGUK
LS8vICAgbnVtYmVyLgotLy8KLS8vICAgRm9yIGZsb2F0LCB0aGVyZSBhcmUgOCBleHBvbmVudCBi
aXRzIGFuZCAyMyBmcmFjdGlvbiBiaXRzLgotLy8KLS8vICAgRm9yIGRvdWJsZSwgdGhlcmUgYXJl
IDExIGV4cG9uZW50IGJpdHMgYW5kIDUyIGZyYWN0aW9uIGJpdHMuCi0vLwotLy8gICBNb3JlIGRl
dGFpbHMgY2FuIGJlIGZvdW5kIGF0Ci0vLyAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
SUVFRV9mbG9hdGluZy1wb2ludF9zdGFuZGFyZC4KLS8vCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXI6
Ci0vLwotLy8gICBSYXdUeXBlOiB0aGUgcmF3IGZsb2F0aW5nLXBvaW50IHR5cGUgKGVpdGhlciBm
bG9hdCBvciBkb3VibGUpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KLWNsYXNzIEZsb2F0
aW5nUG9pbnQgewotIHB1YmxpYzoKLSAgLy8gRGVmaW5lcyB0aGUgdW5zaWduZWQgaW50ZWdlciB0
eXBlIHRoYXQgaGFzIHRoZSBzYW1lIHNpemUgYXMgdGhlCi0gIC8vIGZsb2F0aW5nIHBvaW50IG51
bWJlci4KLSAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlV2l0aFNpemU8c2l6ZW9mKFJhd1R5cGUpPjo6
VUludCBCaXRzOwotCi0gIC8vIENvbnN0YW50cy4KLQotICAvLyAjIG9mIGJpdHMgaW4gYSBudW1i
ZXIuCi0gIHN0YXRpYyBjb25zdCBzaXplX3Qga0JpdENvdW50ID0gOCpzaXplb2YoUmF3VHlwZSk7
Ci0KLSAgLy8gIyBvZiBmcmFjdGlvbiBiaXRzIGluIGEgbnVtYmVyLgotICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtGcmFjdGlvbkJpdENvdW50ID0KLSAgICBzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5
cGU+OjpkaWdpdHMgLSAxOwotCi0gIC8vICMgb2YgZXhwb25lbnQgYml0cyBpbiBhIG51bWJlci4K
LSAgc3RhdGljIGNvbnN0IHNpemVfdCBrRXhwb25lbnRCaXRDb3VudCA9IGtCaXRDb3VudCAtIDEg
LSBrRnJhY3Rpb25CaXRDb3VudDsKLQotICAvLyBUaGUgbWFzayBmb3IgdGhlIHNpZ24gYml0Lgot
ICBzdGF0aWMgY29uc3QgQml0cyBrU2lnbkJpdE1hc2sgPSBzdGF0aWNfY2FzdDxCaXRzPigxKSA8
PCAoa0JpdENvdW50IC0gMSk7Ci0KLSAgLy8gVGhlIG1hc2sgZm9yIHRoZSBmcmFjdGlvbiBiaXRz
LgotICBzdGF0aWMgY29uc3QgQml0cyBrRnJhY3Rpb25CaXRNYXNrID0KLSAgICB+c3RhdGljX2Nh
c3Q8Qml0cz4oMCkgPj4gKGtFeHBvbmVudEJpdENvdW50ICsgMSk7Ci0KLSAgLy8gVGhlIG1hc2sg
Zm9yIHRoZSBleHBvbmVudCBiaXRzLgotICBzdGF0aWMgY29uc3QgQml0cyBrRXhwb25lbnRCaXRN
YXNrID0gfihrU2lnbkJpdE1hc2sgfCBrRnJhY3Rpb25CaXRNYXNrKTsKLQotICAvLyBIb3cgbWFu
eSBVTFAncyAoVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UpIHdlIHdhbnQgdG8gdG9sZXJhdGUgd2hl
bgotICAvLyBjb21wYXJpbmcgdHdvIG51bWJlcnMuICBUaGUgbGFyZ2VyIHRoZSB2YWx1ZSwgdGhl
IG1vcmUgZXJyb3Igd2UKLSAgLy8gYWxsb3cuICBBIDAgdmFsdWUgbWVhbnMgdGhhdCB0d28gbnVt
YmVycyBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUKLSAgLy8gdG8gYmUgY29uc2lkZXJlZCBlcXVh
bC4KLSAgLy8KLSAgLy8gVGhlIG1heGltdW0gZXJyb3Igb2YgYSBzaW5nbGUgZmxvYXRpbmctcG9p
bnQgb3BlcmF0aW9uIGlzIDAuNQotICAvLyB1bml0cyBpbiB0aGUgbGFzdCBwbGFjZS4gIE9uIElu
dGVsIENQVSdzLCBhbGwgZmxvYXRpbmctcG9pbnQKLSAgLy8gY2FsY3VsYXRpb25zIGFyZSBkb25l
IHdpdGggODAtYml0IHByZWNpc2lvbiwgd2hpbGUgZG91YmxlIGhhcyA2NAotICAvLyBiaXRzLiAg
VGhlcmVmb3JlLCA0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG9yZGluYXJ5IHVzZS4KLSAgLy8KLSAg
Ly8gU2VlIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAg
Ly8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVzcy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmct
ZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVkaXRpb24vCi0gIHN0YXRpYyBjb25zdCBzaXpl
X3Qga01heFVscHMgPSA0OwotCi0gIC8vIENvbnN0cnVjdHMgYSBGbG9hdGluZ1BvaW50IGZyb20g
YSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgotICAvLwotICAvLyBPbiBhbiBJbnRlbCBDUFUs
IHBhc3NpbmcgYSBub24tbm9ybWFsaXplZCBOQU4gKE5vdCBhIE51bWJlcikKLSAgLy8gYXJvdW5k
IG1heSBjaGFuZ2UgaXRzIGJpdHMsIGFsdGhvdWdoIHRoZSBuZXcgdmFsdWUgaXMgZ3VhcmFudGVl
ZAotICAvLyB0byBiZSBhbHNvIGEgTkFOLiAgVGhlcmVmb3JlLCBkb24ndCBleHBlY3QgdGhpcyBj
b25zdHJ1Y3RvciB0bwotICAvLyBwcmVzZXJ2ZSB0aGUgYml0cyBpbiB4IHdoZW4geCBpcyBhIE5B
Ti4KLSAgZXhwbGljaXQgRmxvYXRpbmdQb2ludChjb25zdCBSYXdUeXBlJiB4KSB7IHVfLnZhbHVl
XyA9IHg7IH0KLQotICAvLyBTdGF0aWMgbWV0aG9kcwotCi0gIC8vIFJlaW50ZXJwcmV0cyBhIGJp
dCBwYXR0ZXJuIGFzIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgotICAvLwotICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIG5lZWRlZCB0byB0ZXN0IHRoZSBBbG1vc3RFcXVhbHMoKSBtZXRob2QuCi0gIHN0
YXRpYyBSYXdUeXBlIFJlaW50ZXJwcmV0Qml0cyhjb25zdCBCaXRzIGJpdHMpIHsKLSAgICBGbG9h
dGluZ1BvaW50IGZwKDApOwotICAgIGZwLnVfLmJpdHNfID0gYml0czsKLSAgICByZXR1cm4gZnAu
dV8udmFsdWVfOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVy
IHRoYXQgcmVwcmVzZW50IHBvc2l0aXZlIGluZmluaXR5LgotICBzdGF0aWMgUmF3VHlwZSBJbmZp
bml0eSgpIHsKLSAgICByZXR1cm4gUmVpbnRlcnByZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwot
ICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9h
dGluZy1wb2ludCBudW1iZXIuCi0gIHN0YXRpYyBSYXdUeXBlIE1heCgpOwotCi0gIC8vIE5vbi1z
dGF0aWMgbWV0aG9kcwotCi0gIC8vIFJldHVybnMgdGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRo
aXMgbnVtYmVyLgotICBjb25zdCBCaXRzICZiaXRzKCkgY29uc3QgeyByZXR1cm4gdV8uYml0c187
IH0KLQotICAvLyBSZXR1cm5zIHRoZSBleHBvbmVudCBiaXRzIG9mIHRoaXMgbnVtYmVyLgotICBC
aXRzIGV4cG9uZW50X2JpdHMoKSBjb25zdCB7IHJldHVybiBrRXhwb25lbnRCaXRNYXNrICYgdV8u
Yml0c187IH0KLQotICAvLyBSZXR1cm5zIHRoZSBmcmFjdGlvbiBiaXRzIG9mIHRoaXMgbnVtYmVy
LgotICBCaXRzIGZyYWN0aW9uX2JpdHMoKSBjb25zdCB7IHJldHVybiBrRnJhY3Rpb25CaXRNYXNr
ICYgdV8uYml0c187IH0KLQotICAvLyBSZXR1cm5zIHRoZSBzaWduIGJpdCBvZiB0aGlzIG51bWJl
ci4KLSAgQml0cyBzaWduX2JpdCgpIGNvbnN0IHsgcmV0dXJuIGtTaWduQml0TWFzayAmIHVfLmJp
dHNfOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIGlzIE5BTiAobm90IGEgbnVtYmVy
KS4KLSAgYm9vbCBpc19uYW4oKSBjb25zdCB7Ci0gICAgLy8gSXQncyBhIE5BTiBpZiB0aGUgZXhw
b25lbnQgYml0cyBhcmUgYWxsIG9uZXMgYW5kIHRoZSBmcmFjdGlvbgotICAgIC8vIGJpdHMgYXJl
IG5vdCBlbnRpcmVseSB6ZXJvcy4KLSAgICByZXR1cm4gKGV4cG9uZW50X2JpdHMoKSA9PSBrRXhw
b25lbnRCaXRNYXNrKSAmJiAoZnJhY3Rpb25fYml0cygpICE9IDApOwotICB9Ci0KLSAgLy8gUmV0
dXJucyB0cnVlIGlmZiB0aGlzIG51bWJlciBpcyBhdCBtb3N0IGtNYXhVbHBzIFVMUCdzIGF3YXkg
ZnJvbQotICAvLyByaHMuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGZ1bmN0aW9uOgotICAvLwotICAv
LyAgIC0gcmV0dXJucyBmYWxzZSBpZiBlaXRoZXIgbnVtYmVyIGlzIChvciBib3RoIGFyZSkgTkFO
LgotICAvLyAgIC0gdHJlYXRzIHJlYWxseSBsYXJnZSBudW1iZXJzIGFzIGFsbW9zdCBlcXVhbCB0
byBpbmZpbml0eS4KLSAgLy8gICAtIHRoaW5rcyArMC4wIGFuZCAtMC4wIGFyZSAwIERMUCdzIGFw
YXJ0LgotICBib29sIEFsbW9zdEVxdWFscyhjb25zdCBGbG9hdGluZ1BvaW50JiByaHMpIGNvbnN0
IHsKLSAgICAvLyBUaGUgSUVFRSBzdGFuZGFyZCBzYXlzIHRoYXQgYW55IGNvbXBhcmlzb24gb3Bl
cmF0aW9uIGludm9sdmluZwotICAgIC8vIGEgTkFOIG11c3QgcmV0dXJuIGZhbHNlLgotICAgIGlm
IChpc19uYW4oKSB8fCByaHMuaXNfbmFuKCkpIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBE
aXN0YW5jZUJldHdlZW5TaWduQW5kTWFnbml0dWRlTnVtYmVycyh1Xy5iaXRzXywgcmhzLnVfLmJp
dHNfKQotICAgICAgICA8PSBrTWF4VWxwczsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIGRh
dGEgdHlwZSB1c2VkIHRvIHN0b3JlIHRoZSBhY3R1YWwgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgot
ICB1bmlvbiBGbG9hdGluZ1BvaW50VW5pb24gewotICAgIFJhd1R5cGUgdmFsdWVfOyAgLy8gVGhl
IHJhdyBmbG9hdGluZy1wb2ludCBudW1iZXIuCi0gICAgQml0cyBiaXRzXzsgICAgICAvLyBUaGUg
Yml0cyB0aGF0IHJlcHJlc2VudCB0aGUgbnVtYmVyLgotICB9OwotCi0gIC8vIENvbnZlcnRzIGFu
IGludGVnZXIgZnJvbSB0aGUgc2lnbi1hbmQtbWFnbml0dWRlIHJlcHJlc2VudGF0aW9uIHRvCi0g
IC8vIHRoZSBiaWFzZWQgcmVwcmVzZW50YXRpb24uICBNb3JlIHByZWNpc2VseSwgbGV0IE4gYmUg
MiB0byB0aGUKLSAgLy8gcG93ZXIgb2YgKGtCaXRDb3VudCAtIDEpLCBhbiBpbnRlZ2VyIHggaXMg
cmVwcmVzZW50ZWQgYnkgdGhlCi0gIC8vIHVuc2lnbmVkIG51bWJlciB4ICsgTi4KLSAgLy8KLSAg
Ly8gRm9yIGluc3RhbmNlLAotICAvLwotICAvLyAgIC1OICsgMSAodGhlIG1vc3QgbmVnYXRpdmUg
bnVtYmVyIHJlcHJlc2VudGFibGUgdXNpbmcKLSAgLy8gICAgICAgICAgc2lnbi1hbmQtbWFnbml0
dWRlKSBpcyByZXByZXNlbnRlZCBieSAxOwotICAvLyAgIDAgICAgICBpcyByZXByZXNlbnRlZCBi
eSBOOyBhbmQKLSAgLy8gICBOIC0gMSAgKHRoZSBiaWdnZXN0IG51bWJlciByZXByZXNlbnRhYmxl
IHVzaW5nCi0gIC8vICAgICAgICAgIHNpZ24tYW5kLW1hZ25pdHVkZSkgaXMgcmVwcmVzZW50ZWQg
YnkgMk4gLSAxLgotICAvLwotICAvLyBSZWFkIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
U2lnbmVkX251bWJlcl9yZXByZXNlbnRhdGlvbnMKLSAgLy8gZm9yIG1vcmUgZGV0YWlscyBvbiBz
aWduZWQgbnVtYmVyIHJlcHJlc2VudGF0aW9ucy4KLSAgc3RhdGljIEJpdHMgU2lnbkFuZE1hZ25p
dHVkZVRvQmlhc2VkKGNvbnN0IEJpdHMgJnNhbSkgewotICAgIGlmIChrU2lnbkJpdE1hc2sgJiBz
YW0pIHsKLSAgICAgIC8vIHNhbSByZXByZXNlbnRzIGEgbmVnYXRpdmUgbnVtYmVyLgotICAgICAg
cmV0dXJuIH5zYW0gKyAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBzYW0gcmVwcmVzZW50cyBh
IHBvc2l0aXZlIG51bWJlci4KLSAgICAgIHJldHVybiBrU2lnbkJpdE1hc2sgfCBzYW07Ci0gICAg
fQotICB9Ci0KLSAgLy8gR2l2ZW4gdHdvIG51bWJlcnMgaW4gdGhlIHNpZ24tYW5kLW1hZ25pdHVk
ZSByZXByZXNlbnRhdGlvbiwKLSAgLy8gcmV0dXJucyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGVt
IGFzIGFuIHVuc2lnbmVkIG51bWJlci4KLSAgc3RhdGljIEJpdHMgRGlzdGFuY2VCZXR3ZWVuU2ln
bkFuZE1hZ25pdHVkZU51bWJlcnMoY29uc3QgQml0cyAmc2FtMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQml0cyAmc2FtMikgewot
ICAgIGNvbnN0IEJpdHMgYmlhc2VkMSA9IFNpZ25BbmRNYWduaXR1ZGVUb0JpYXNlZChzYW0xKTsK
LSAgICBjb25zdCBCaXRzIGJpYXNlZDIgPSBTaWduQW5kTWFnbml0dWRlVG9CaWFzZWQoc2FtMik7
Ci0gICAgcmV0dXJuIChiaWFzZWQxID49IGJpYXNlZDIpID8gKGJpYXNlZDEgLSBiaWFzZWQyKSA6
IChiaWFzZWQyIC0gYmlhc2VkMSk7Ci0gIH0KLQotICBGbG9hdGluZ1BvaW50VW5pb24gdV87Ci19
OwotCi0vLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0
IGNsYXNoZXMgd2l0aCB0aGUgbWF4KCkKLS8vIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4u
Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGZsb2F0IEZsb2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7
IHJldHVybiBGTFRfTUFYOyB9Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGRvdWJsZSBGbG9hdGluZ1Bv
aW50PGRvdWJsZT46Ok1heCgpIHsgcmV0dXJuIERCTF9NQVg7IH0KLQotLy8gVHlwZWRlZnMgdGhl
IGluc3RhbmNlcyBvZiB0aGUgRmxvYXRpbmdQb2ludCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCi0v
LyBjYXJlIHRvIHVzZS4KLXR5cGVkZWYgRmxvYXRpbmdQb2ludDxmbG9hdD4gRmxvYXQ7Ci10eXBl
ZGVmIEZsb2F0aW5nUG9pbnQ8ZG91YmxlPiBEb3VibGU7Ci0KLS8vIEluIG9yZGVyIHRvIGNhdGNo
IHRoZSBtaXN0YWtlIG9mIHB1dHRpbmcgdGVzdHMgdGhhdCB1c2UgZGlmZmVyZW50Ci0vLyB0ZXN0
IGZpeHR1cmUgY2xhc3NlcyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UsIHdlIG5lZWQgdG8gYXNzaWdu
Ci0vLyB1bmlxdWUgSURzIHRvIGZpeHR1cmUgY2xhc3NlcyBhbmQgY29tcGFyZSB0aGVtLiAgVGhl
IFR5cGVJZCB0eXBlIGlzCi0vLyB1c2VkIHRvIGhvbGQgc3VjaCBJRHMuICBUaGUgdXNlciBzaG91
bGQgdHJlYXQgVHlwZUlkIGFzIGFuIG9wYXF1ZQotLy8gdHlwZTogdGhlIG9ubHkgb3BlcmF0aW9u
IGFsbG93ZWQgb24gVHlwZUlkIHZhbHVlcyBpcyB0byBjb21wYXJlCi0vLyB0aGVtIGZvciBlcXVh
bGl0eSB1c2luZyB0aGUgPT0gb3BlcmF0b3IuCi10eXBlZGVmIGNvbnN0IHZvaWQqIFR5cGVJZDsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlSWRIZWxwZXIgewotIHB1YmxpYzoK
LSAgLy8gZHVtbXlfIG11c3Qgbm90IGhhdmUgYSBjb25zdCB0eXBlLiAgT3RoZXJ3aXNlIGFuIG92
ZXJseSBlYWdlcgotICAvLyBjb21waWxlciAoZS5nLiBNU1ZDIDcuMSAmIDguMCkgbWF5IHRyeSB0
byBtZXJnZQotICAvLyBUeXBlSWRIZWxwZXI8VD46OmR1bW15XyBmb3IgZGlmZmVyZW50IFRzIGFz
IGFuICJvcHRpbWl6YXRpb24iLgotICBzdGF0aWMgYm9vbCBkdW1teV87Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWJvb2wgVHlwZUlkSGVscGVyPFQ+OjpkdW1teV8gPSBmYWxzZTsKLQot
Ly8gR2V0VHlwZUlkPFQ+KCkgcmV0dXJucyB0aGUgSUQgb2YgdHlwZSBULiAgRGlmZmVyZW50IHZh
bHVlcyB3aWxsIGJlCi0vLyByZXR1cm5lZCBmb3IgZGlmZmVyZW50IHR5cGVzLiAgQ2FsbGluZyB0
aGUgZnVuY3Rpb24gdHdpY2Ugd2l0aCB0aGUKLS8vIHNhbWUgdHlwZSBhcmd1bWVudCBpcyBndWFy
YW50ZWVkIHRvIHJldHVybiB0aGUgc2FtZSBJRC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVHlw
ZUlkIEdldFR5cGVJZCgpIHsKLSAgLy8gVGhlIGNvbXBpbGVyIGlzIHJlcXVpcmVkIHRvIGFsbG9j
YXRlIGEgZGlmZmVyZW50Ci0gIC8vIFR5cGVJZEhlbHBlcjxUPjo6ZHVtbXlfIHZhcmlhYmxlIGZv
ciBlYWNoIFQgdXNlZCB0byBpbnN0YW50aWF0ZQotICAvLyB0aGUgdGVtcGxhdGUuICBUaGVyZWZv
cmUsIHRoZSBhZGRyZXNzIG9mIGR1bW15XyBpcyBndWFyYW50ZWVkIHRvCi0gIC8vIGJlIHVuaXF1
ZS4KLSAgcmV0dXJuICYoVHlwZUlkSGVscGVyPFQ+OjpkdW1teV8pOwotfQotCi0vLyBSZXR1cm5z
IHRoZSB0eXBlIElEIG9mIDo6dGVzdGluZzo6VGVzdC4gIEFsd2F5cyBjYWxsIHRoaXMgaW5zdGVh
ZAotLy8gb2YgR2V0VHlwZUlkPCA6OnRlc3Rpbmc6OlRlc3Q+KCkgdG8gZ2V0IHRoZSB0eXBlIElE
IG9mCi0vLyA6OnRlc3Rpbmc6OlRlc3QsIGFzIHRoZSBsYXR0ZXIgbWF5IGdpdmUgdGhlIHdyb25n
IHJlc3VsdCBkdWUgdG8gYQotLy8gc3VzcGVjdGVkIGxpbmtlciBidWcgd2hlbiBjb21waWxpbmcg
R29vZ2xlIFRlc3QgYXMgYSBNYWMgT1MgWAotLy8gZnJhbWV3b3JrLgotR1RFU1RfQVBJXyBUeXBl
SWQgR2V0VGVzdFR5cGVJZCgpOwotCi0vLyBEZWZpbmVzIHRoZSBhYnN0cmFjdCBmYWN0b3J5IGlu
dGVyZmFjZSB0aGF0IGNyZWF0ZXMgaW5zdGFuY2VzCi0vLyBvZiBhIFRlc3Qgb2JqZWN0LgotY2xh
c3MgVGVzdEZhY3RvcnlCYXNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflRlc3RGYWN0b3J5QmFz
ZSgpIHt9Ci0KLSAgLy8gQ3JlYXRlcyBhIHRlc3QgaW5zdGFuY2UgdG8gcnVuLiBUaGUgaW5zdGFu
Y2UgaXMgYm90aCBjcmVhdGVkIGFuZCBkZXN0cm95ZWQKLSAgLy8gd2l0aGluIFRlc3RJbmZvSW1w
bDo6UnVuKCkKLSAgdmlydHVhbCBUZXN0KiBDcmVhdGVUZXN0KCkgPSAwOwotCi0gcHJvdGVjdGVk
OgotICBUZXN0RmFjdG9yeUJhc2UoKSB7fQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhUZXN0RmFjdG9yeUJhc2UpOwotfTsKLQotLy8gVGhpcyBjbGFzcyBw
cm92aWRlcyBpbXBsZW1lbnRhdGlvbiBvZiBUZWFzdEZhY3RvcnlCYXNlIGludGVyZmFjZS4KLS8v
IEl0IGlzIHVzZWQgaW4gVEVTVCBhbmQgVEVTVF9GIG1hY3Jvcy4KLXRlbXBsYXRlIDxjbGFzcyBU
ZXN0Q2xhc3M+Ci1jbGFzcyBUZXN0RmFjdG9yeUltcGwgOiBwdWJsaWMgVGVzdEZhY3RvcnlCYXNl
IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgVGVzdCogQ3JlYXRlVGVzdCgpIHsgcmV0dXJuIG5ldyBU
ZXN0Q2xhc3M7IH0KLX07Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFByZWRpY2F0ZS1m
b3JtYXR0ZXJzIGZvciBpbXBsZW1lbnRpbmcgdGhlIEhSRVNVTFQgY2hlY2tpbmcgbWFjcm9zCi0v
LyB7QVNTRVJUfEVYUEVDVH1fSFJFU1VMVF97U1VDQ0VFREVEfEZBSUxFRH0KLS8vIFdlIHBhc3Mg
YSBsb25nIGluc3RlYWQgb2YgSFJFU1VMVCB0byBhdm9pZCBjYXVzaW5nIGFuCi0vLyBpbmNsdWRl
IGRlcGVuZGVuY3kgZm9yIHRoZSBIUkVTVUxUIHR5cGUuCi1HVEVTVF9BUElfIEFzc2VydGlvblJl
c3VsdCBJc0hSRVNVTFRTdWNjZXNzKGNvbnN0IGNoYXIqIGV4cHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaHIpOyAgLy8gTk9MSU5UCi1HVEVTVF9B
UElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRGYWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaHIpOyAgLy8g
Tk9MSU5UCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUeXBlcyBvZiBTZXRV
cFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKSBmdW5jdGlvbnMuCi10eXBlZGVmIHZv
aWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKLXR5cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENh
c2VGdW5jKSgpOwotCi1zdHJ1Y3QgQ29kZUxvY2F0aW9uIHsKLSAgQ29kZUxvY2F0aW9uKGNvbnN0
IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsIGludCBhX2xpbmUpCi0gICAgICA6IGZpbGUoYV9maWxlKSwg
bGluZShhX2xpbmUpIHt9Ci0KLSAgc3RkOjpzdHJpbmcgZmlsZTsKLSAgaW50IGxpbmU7Ci19Owot
Ci0vLyBDcmVhdGVzIGEgbmV3IFRlc3RJbmZvIG9iamVjdCBhbmQgcmVnaXN0ZXJzIGl0IHdpdGgg
R29vZ2xlIFRlc3Q7Ci0vLyByZXR1cm5zIHRoZSBjcmVhdGVkIG9iamVjdC4KLS8vCi0vLyBBcmd1
bWVudHM6Ci0vLwotLy8gICB0ZXN0X2Nhc2VfbmFtZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UK
LS8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBvZiB0aGUgdGVzdAotLy8gICB0eXBlX3BhcmFt
ICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlm
Ci0vLyAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdC4KLS8vICAgdmFsdWVfcGFyYW0gICAgICAgdGV4dCByZXByZXNlbnRh
dGlvbiBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFtZXRlciwKLS8vICAgICAgICAgICAgICAgICAg
ICAgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotLy8g
ICBjb2RlX2xvY2F0aW9uOiAgICBjb2RlIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRlZmlu
ZWQKLS8vICAgZml4dHVyZV9jbGFzc19pZDogSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwot
Ly8gICBzZXRfdXBfdGM6ICAgICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMg
dXAgdGhlIHRlc3QgY2FzZQotLy8gICB0ZWFyX2Rvd25fdGM6ICAgICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotLy8gICBmYWN0b3J5OiAgICAg
ICAgICBwb2ludGVyIHRvIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBhIHRlc3Qgb2JqZWN0Lgot
Ly8gICAgICAgICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5j
ZSB3aWxsIGFzc3VtZQotLy8gICAgICAgICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZh
Y3Rvcnkgb2JqZWN0LgotR1RFU1RfQVBJXyBUZXN0SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdElu
Zm8oCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgY29uc3QgY2hhciogbmFt
ZSwKLSAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAotICAgIGNvbnN0IGNoYXIqIHZhbHVlX3Bh
cmFtLAotICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uLAotICAgIFR5cGVJZCBmaXh0dXJl
X2NsYXNzX2lkLAotICAgIFNldFVwVGVzdENhc2VGdW5jIHNldF91cF90YywKLSAgICBUZWFyRG93
blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCi0gICAgVGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5
KTsKLQotLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMg
KnBzdHIgdG8gYmUgcmlnaHQKLS8vIHBhc3QgdGhlIHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBv
dGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdlZAotLy8gYW5kIHJldHVybnMgZmFsc2UuICBO
b25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4IGNhbiBiZSBOVUxMLgotR1RFU1RfQVBJXyBi
b29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cik7Ci0K
LSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8v
IFN0YXRlIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZS4KLWNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0Q2FzZVBTdGF0ZSB7Ci0gcHVibGljOgotICBU
eXBlZFRlc3RDYXNlUFN0YXRlKCkgOiByZWdpc3RlcmVkXyhmYWxzZSkge30KLQotICAvLyBBZGRz
IHRoZSBnaXZlbiB0ZXN0IG5hbWUgdG8gZGVmaW5lZF90ZXN0X25hbWVzXyBhbmQgcmV0dXJuIHRy
dWUKLSAgLy8gaWYgdGhlIHRlc3QgY2FzZSBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkOyBvdGhlcndp
c2UgYWJvcnRzIHRoZQotICAvLyBwcm9ncmFtLgotICBib29sIEFkZFRlc3ROYW1lKGNvbnN0IGNo
YXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBjYXNlX25hbWUsCi0gICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lKSB7Ci0gICAgaWYgKHJlZ2lzdGVyZWRfKSB7Ci0g
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFRlc3QgJXMgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSAi
Ci0gICAgICAgICAgICAgICJSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCglcywgLi4uKS5cbiIs
Ci0gICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLCB0
ZXN0X25hbWUsIGNhc2VfbmFtZSk7Ci0gICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICAgIHBvc2l4
OjpBYm9ydCgpOwotICAgIH0KLSAgICByZWdpc3RlcmVkX3Rlc3RzXy5pbnNlcnQoCi0gICAgICAg
IDo6c3RkOjptYWtlX3BhaXIodGVzdF9uYW1lLCBDb2RlTG9jYXRpb24oZmlsZSwgbGluZSkpKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIGJvb2wgVGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0
cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNv
dW50KHRlc3RfbmFtZSkgPiAwOwotICB9Ci0KLSAgY29uc3QgQ29kZUxvY2F0aW9uJiBHZXRDb2Rl
TG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSkgY29uc3QgewotICAgIFJlZ2lz
dGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5maW5k
KHRlc3RfbmFtZSk7Ci0gICAgR1RFU1RfQ0hFQ0tfKGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVu
ZCgpKTsKLSAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgfQotCi0gIC8vIFZlcmlmaWVzIHRoYXQg
cmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVzdCBuYW1lcyBpbgotICAvLyBkZWZpbmVkX3Rl
c3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKLSAg
Ly8gYWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lzZS4KLSAgY29uc3QgY2hhciogVmVyaWZ5UmVn
aXN0ZXJlZFRlc3ROYW1lcygKLSAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25z
dCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKTsKLQotIHByaXZhdGU6Ci0gIHR5cGVkZWYgOjpzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgQ29kZUxvY2F0aW9uPiBSZWdpc3RlcmVkVGVzdHNNYXA7Ci0KLSAg
Ym9vbCByZWdpc3RlcmVkXzsKLSAgUmVnaXN0ZXJlZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNf
OwotfTsKLQotLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBm
aXJzdCBjb21tYSBpbiAnc3RyJzsKLS8vIHJldHVybnMgTlVMTCBpZiBubyBjb21tYSBpcyBmb3Vu
ZCBpbiAnc3RyJy4KLWlubGluZSBjb25zdCBjaGFyKiBTa2lwQ29tbWEoY29uc3QgY2hhciogc3Ry
KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbW1hID0gc3RyY2hyKHN0ciwgJywnKTsKLSAgaWYgKGNvbW1h
ID09IE5VTEwpIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotICB3aGlsZSAoSXNTcGFjZSgqKCsr
Y29tbWEpKSkge30KLSAgcmV0dXJuIGNvbW1hOwotfQotCi0vLyBSZXR1cm5zIHRoZSBwcmVmaXgg
b2YgJ3N0cicgYmVmb3JlIHRoZSBmaXJzdCBjb21tYSBpbiBpdDsgcmV0dXJucwotLy8gdGhlIGVu
dGlyZSBzdHJpbmcgaWYgaXQgY29udGFpbnMgbm8gY29tbWEuCi1pbmxpbmUgc3RkOjpzdHJpbmcg
R2V0UHJlZml4VW50aWxDb21tYShjb25zdCBjaGFyKiBzdHIpIHsKLSAgY29uc3QgY2hhciogY29t
bWEgPSBzdHJjaHIoc3RyLCAnLCcpOwotICByZXR1cm4gY29tbWEgPT0gTlVMTCA/IHN0ciA6IHN0
ZDo6c3RyaW5nKHN0ciwgY29tbWEpOwotfQotCi0vLyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24g
YSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcgYSBnaXZlbgotLy8gdmVjdG9yIHdpdGggdGhl
IGZpZWxkcy4KLXZvaWQgU3BsaXRTdHJpbmcoY29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFy
IGRlbGltaXRlciwKLSAgICAgICAgICAgICAgICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmlu
Zz4qIGRlc3QpOwotCi0vLyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwg
VHlwZXM+OjpSZWdpc3RlcigpCi0vLyByZWdpc3RlcnMgYSBsaXN0IG9mIHR5cGUtcGFyYW1ldGVy
aXplZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiAgVGhlCi0vLyByZXR1cm4gdmFsdWUgaXMgaW5z
aWduaWZpY2FudCAtIHdlIGp1c3QgbmVlZCB0byByZXR1cm4gc29tZXRoaW5nCi0vLyBzdWNoIHRo
YXQgd2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhIG5hbWVzcGFjZSBzY29wZS4KLS8vCi0v
LyBJbXBsZW1lbnRhdGlvbiBub3RlOiBUaGUgR1RFU1RfVEVNUExBVEVfIG1hY3JvIGRlY2xhcmVz
IGEgdGVtcGxhdGUKLS8vIHRlbXBsYXRlIHBhcmFtZXRlci4gIEl0J3MgZGVmaW5lZCBpbiBndGVz
dC10eXBlLXV0aWwuaC4KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gRml4dHVyZSwgY2xhc3Mg
VGVzdFNlbCwgdHlwZW5hbWUgVHlwZXM+Ci1jbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Qgewot
IHB1YmxpYzoKLSAgLy8gJ2luZGV4JyBpcyB0aGUgaW5kZXggb2YgdGhlIHRlc3QgaW4gdGhlIHR5
cGUgbGlzdCAnVHlwZXMnCi0gIC8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUChQcmVmaXgsIFRlc3RDYXNlLAotICAvLyBUeXBlcykuICBWYWxpZCB2YWx1ZXMgZm9y
ICdpbmRleCcgYXJlIFswLCBOIC0gMV0gd2hlcmUgTiBpcyB0aGUKLSAgLy8gbGVuZ3RoIG9mIFR5
cGVzLgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiBwcmVmaXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCkgewotICAgIHR5cGVkZWYgdHlwZW5h
bWUgVHlwZXM6OkhlYWQgVHlwZTsKLSAgICB0eXBlZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNs
YXNzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR1RFU1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVz
dENsYXNzOwotCi0gICAgLy8gRmlyc3QsIHJlZ2lzdGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QgaW4gdGhlIHR5cGUKLSAgICAvLyBsaXN0LgotICAgIE1ha2VBbmRSZWdpc3Rl
clRlc3RJbmZvKAotICAgICAgICAoc3RkOjpzdHJpbmcocHJlZml4KSArIChwcmVmaXhbMF0gPT0g
J1wwJyA/ICIiIDogIi8iKSArIGNhc2VfbmFtZSArICIvIgotICAgICAgICAgKyBTdHJlYW1hYmxl
VG9TdHJpbmcoaW5kZXgpKS5jX3N0cigpLAotICAgICAgICBTdHJpcFRyYWlsaW5nU3BhY2VzKEdl
dFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykpLmNfc3RyKCksCi0gICAgICAgIEdldFR5cGVO
YW1lPFR5cGU+KCkuY19zdHIoKSwKLSAgICAgICAgTlVMTCwgIC8vIE5vIHZhbHVlIHBhcmFtZXRl
ci4KLSAgICAgICAgY29kZV9sb2NhdGlvbiwKLSAgICAgICAgR2V0VHlwZUlkPEZpeHR1cmVDbGFz
cz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRVcFRlc3RDYXNlLAotICAgICAgICBUZXN0Q2xh
c3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAgIG5ldyBUZXN0RmFjdG9yeUltcGw8VGVzdENs
YXNzPik7Ci0KLSAgICAvLyBOZXh0LCByZWN1cnNlcyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRo
ZSB0YWlsIG9mIHRoZSB0eXBlIGxpc3QuCi0gICAgcmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVz
dDxGaXh0dXJlLCBUZXN0U2VsLCB0eXBlbmFtZSBUeXBlczo6VGFpbD4KLSAgICAgICAgOjpSZWdp
c3RlcihwcmVmaXgsIGNvZGVfbG9jYXRpb24sIGNhc2VfbmFtZSwgdGVzdF9uYW1lcywgaW5kZXgg
KyAxKTsKLSAgfQotfTsKLQotLy8gVGhlIGJhc2UgY2FzZSBmb3IgdGhlIGNvbXBpbGUgdGltZSBy
ZWN1cnNpb24uCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIGNsYXNzIFRlc3RT
ZWw+Ci1jbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMw
PiB7Ci0gcHVibGljOgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZp
eCovLCBDb2RlTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8q
Y2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovLAotICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgLyppbmRleCovKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLS8v
IFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4dHVyZSwgVGVzdHMsIFR5cGVzPjo6UmVnaXN0
ZXIoKQotLy8gcmVnaXN0ZXJzICphbGwgY29tYmluYXRpb25zKiBvZiAnVGVzdHMnIGFuZCAnVHlw
ZXMnIHdpdGggR29vZ2xlCi0vLyBUZXN0LiAgVGhlIHJldHVybiB2YWx1ZSBpcyBpbnNpZ25pZmlj
YW50IC0gd2UganVzdCBuZWVkIHRvIHJldHVybgotLy8gc29tZXRoaW5nIHN1Y2ggdGhhdCB3ZSBj
YW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGluIGEgbmFtZXNwYWNlIHNjb3BlLgotdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFtZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+Ci1j
bGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBib29s
IFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNo
YXIqIHRlc3RfbmFtZXMpIHsKLSAgICBzdGQ6OnN0cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWls
aW5nU3BhY2VzKAotICAgICAgICBHZXRQcmVmaXhVbnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKLSAg
ICBpZiAoIXN0YXRlLT5UZXN0RXhpc3RzKHRlc3RfbmFtZSkpIHsKLSAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiRmFpbGVkIHRvIGdldCBjb2RlIGxvY2F0aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIs
Ci0gICAgICAgICAgICAgIGNhc2VfbmFtZSwgdGVzdF9uYW1lLmNfc3RyKCksCi0gICAgICAgICAg
ICAgIEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xvY2F0aW9uLmZpbGUuY19zdHIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7
Ci0gICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICAgIHBvc2l4OjpBYm9ydCgpOwotICAgIH0KLSAg
ICBjb25zdCBDb2RlTG9jYXRpb24mIHRlc3RfbG9jYXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0
aW9uKHRlc3RfbmFtZSk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7
Ci0KLSAgICAvLyBGaXJzdCwgcmVnaXN0ZXIgdGhlIGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBl
YWNoIHR5cGUgaW4gJ1R5cGVzJy4KLSAgICBUeXBlUGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwg
SGVhZCwgVHlwZXM+OjpSZWdpc3RlcigKLSAgICAgICAgcHJlZml4LCB0ZXN0X2xvY2F0aW9uLCBj
YXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOwotCi0gICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNv
bXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBU
eXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBU
eXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVmaXgsIGNvZGVfbG9jYXRpb24sIHN0YXRlLAot
ICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwgU2tpcENvbW1hKHRlc3RfbmFtZXMpKTsKLSAg
fQotfTsKLQotLy8gVGhlIGJhc2UgY2FzZSBmb3IgdGhlIGNvbXBpbGUgdGltZSByZWN1cnNpb24u
Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZpeHR1cmUsIHR5cGVuYW1lIFR5cGVzPgotY2xh
c3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxGaXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4g
ewotIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVnaXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgq
LywgQ29kZUxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlZFRlc3RD
YXNlUFN0YXRlKiAvKnN0YXRlKi8sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVzdF9uYW1lcyovKSB7Ci0gICAgcmV0dXJu
IHRydWU7Ci0gIH0KLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RF
U1RfSEFTX1RZUEVEX1RFU1RfUAotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRy
YWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgotLy8KLS8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFj
ayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3BlY2lmaWVkIGJ5Ci0vLyB0aGUgZ3Rlc3Rfc3Rh
Y2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50IHBhcmFtZXRlcgotLy8gc3BlY2lm
aWVzIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkLCB3aGljaCBkb2Vzbid0
Ci0vLyBjb3VudCBhZ2FpbnN0IHRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIGJlIGluY2x1ZGVkLgot
Ly8KLS8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBj
YWxscwotLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3
aWxsIGJlIGluY2x1ZGVkIGluCi0vLyB0aGUgdHJhY2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1HVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdl
dEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoCi0gICAgVW5pdFRlc3QqIHVuaXRfdGVzdCwg
aW50IHNraXBfY291bnQpOwotCi0vLyBIZWxwZXJzIGZvciBzdXBwcmVzc2luZyB3YXJuaW5ncyBv
biB1bnJlYWNoYWJsZSBjb2RlIG9yIGNvbnN0YW50Ci0vLyBjb25kaXRpb24uCi0KLS8vIEFsd2F5
cyByZXR1cm5zIHRydWUuCi1HVEVTVF9BUElfIGJvb2wgQWx3YXlzVHJ1ZSgpOwotCi0vLyBBbHdh
eXMgcmV0dXJucyBmYWxzZS4KLWlubGluZSBib29sIEFsd2F5c0ZhbHNlKCkgeyByZXR1cm4gIUFs
d2F5c1RydWUoKTsgfQotCi0vLyBIZWxwZXIgZm9yIHN1cHByZXNzaW5nIGZhbHNlIHdhcm5pbmcg
ZnJvbSBDbGFuZyBvbiBhIGNvbnN0IGNoYXIqCi0vLyB2YXJpYWJsZSBkZWNsYXJlZCBpbiBhIGNv
bmRpdGlvbmFsIGV4cHJlc3Npb24gYWx3YXlzIGJlaW5nIE5VTEwgaW4KLS8vIHRoZSBlbHNlIGJy
YW5jaC4KLXN0cnVjdCBHVEVTVF9BUElfIENvbnN0Q2hhclB0ciB7Ci0gIENvbnN0Q2hhclB0cihj
b25zdCBjaGFyKiBzdHIpIDogdmFsdWUoc3RyKSB7fQotICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQotICBjb25zdCBjaGFyKiB2YWx1ZTsKLX07Ci0KLS8vIEEgc2ltcGxl
IExpbmVhciBDb25ncnVlbnRpYWwgR2VuZXJhdG9yIGZvciBnZW5lcmF0aW5nIHJhbmRvbQotLy8g
bnVtYmVycyB3aXRoIGEgdW5pZm9ybSBkaXN0cmlidXRpb24uICBVbmxpa2UgcmFuZCgpIGFuZCBz
cmFuZCgpLCBpdAotLy8gZG9lc24ndCB1c2UgZ2xvYmFsIHN0YXRlIChhbmQgdGhlcmVmb3JlIGNh
bid0IGludGVyZmVyZSB3aXRoIHVzZXIKLS8vIGNvZGUpLiAgVW5saWtlIHJhbmRfcigpLCBpdCdz
IHBvcnRhYmxlLiAgQW4gTENHIGlzbid0IHZlcnkgcmFuZG9tLAotLy8gYnV0IGl0J3MgZ29vZCBl
bm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLWNsYXNzIEdURVNUX0FQSV8gUmFuZG9tIHsKLSBwdWJs
aWM6Ci0gIHN0YXRpYyBjb25zdCBVSW50MzIga01heFJhbmdlID0gMXUgPDwgMzE7Ci0KLSAgZXhw
bGljaXQgUmFuZG9tKFVJbnQzMiBzZWVkKSA6IHN0YXRlXyhzZWVkKSB7fQotCi0gIHZvaWQgUmVz
ZWVkKFVJbnQzMiBzZWVkKSB7IHN0YXRlXyA9IHNlZWQ7IH0KLQotICAvLyBHZW5lcmF0ZXMgYSBy
YW5kb20gbnVtYmVyIGZyb20gWzAsIHJhbmdlKS4gIENyYXNoZXMgaWYgJ3JhbmdlJyBpcwotICAv
LyAwIG9yIGdyZWF0ZXIgdGhhbiBrTWF4UmFuZ2UuCi0gIFVJbnQzMiBHZW5lcmF0ZShVSW50MzIg
cmFuZ2UpOwotCi0gcHJpdmF0ZToKLSAgVUludDMyIHN0YXRlXzsKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhSYW5kb20pOwotfTsKLQotLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBv
ZiB0eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBUMj4gd2lsbCBjYXVzZSBhCi0vLyBj
b21waWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFyZSBkaWZmZXJlbnQgdHlwZXMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDxULCBUPiB7Ci19OwotCi0vLyBSZW1vdmVzIHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUg
aWYgaXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKLS8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFu
Z2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcwotLy8gdHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGlj
aCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0
cnVjdCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVtb3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYg
VCB0eXBlOyB9OyAgLy8gTk9MSU5UCi0KLS8vIEEgaGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3Zl
UmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQKLS8vIFQgZGVwZW5kcyBvbiB0
ZW1wbGF0ZSBwYXJhbWV0ZXJzLgotI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBc
Ci0gICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0
eXBlCi0KLS8vIFJlbW92ZXMgY29uc3QgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBl
LCBvdGhlcndpc2UgbGVhdmVzCi0vLyBpdCB1bmNoYW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFz
IHRyMTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBub3QKLS8vIHdpZGVseSBhdmFpbGFibGUgeWV0
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQg
dHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVtb3Zl
Q29uc3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAotCi0vLyBNU1ZD
IDguMCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysgaGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhl
IGFib3ZlCi0vLyBkZWZpbml0aW9uIHRvIGZhaWwgdG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29u
c3QgaW50WzNdJyBhbmQgJ2NvbnN0Ci0vLyBjaGFyWzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3Bl
Y2lhbGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBidWcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
c2l6ZV90IE4+Ci1zdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVFtOXT4gewotICB0eXBlZGVmIHR5
cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5cGVbTl07Ci19OwotCi0jaWYgZGVmaW5lZChf
TVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCi0vLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxp
emF0aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRvIHJlbW92ZSBjb25zdCBpbgotLy8gJ2NvbnN0
IGludFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScuICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJs
ZSB3aXRoIEdDQwotLy8gYW5kIHRodXMgbmVlZHMgdG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxl
ZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXN0cnVjdCBSZW1vdmVDb25zdDxU
W05dPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsK
LX07Ci0jZW5kaWYKLQotLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0
IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50Ci0vLyBUIGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1l
dGVycy4KLSNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NPTlNUXyhUKSBcCi0gICAgdHlwZW5hbWUgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OnR5cGUKLQotLy8gVHVybnMgY29uc3Qg
VSYsIFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50byBVLgotI2RlZmluZSBHVEVTVF9SRU1PVkVf
UkVGRVJFTkNFX0FORF9DT05TVF8oVCkgXAotICAgIEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1Rf
UkVNT1ZFX1JFRkVSRU5DRV8oVCkpCi0KLS8vIEFkZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBp
dCBpcyBub3QgYSByZWZlcmVuY2UgdHlwZSwKLS8vIG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFu
Z2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcwotLy8gdHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBp
cyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBBZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotc3RydWN0IEFkZFJlZmVyZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7
IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2Ug
dGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBUCi0vLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBh
cmFtZXRlcnMuCi0jZGVmaW5lIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQpIFwKLSAgICB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U8VD46OnR5cGUKLQotLy8gQWRkcyBh
IHJlZmVyZW5jZSB0byBjb25zdCBvbiB0b3Agb2YgVCBhcyBuZWNlc3NhcnkuICBGb3IgZXhhbXBs
ZSwKLS8vIGl0IHRyYW5zZm9ybXMKLS8vCi0vLyAgIGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hh
ciYKLS8vICAgY29uc3QgY2hhciAgID09PiBjb25zdCBjaGFyJgotLy8gICBjaGFyJiAgICAgICAg
PT0+IGNvbnN0IGNoYXImCi0vLyAgIGNvbnN0IGNoYXImICA9PT4gY29uc3QgY2hhciYKLS8vCi0v
LyBUaGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBvbiBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMu
Ci0jZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19DT05TVF8oVCkgXAotICAgIEdURVNUX0FERF9S
RUZFUkVOQ0VfKGNvbnN0IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfKFQpKQotCi0vLyBJbXBsaWNp
dGx5Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCi0v
LyBjb25zdGFudCB0aGF0J3MgdHJ1ZSBpZmYgdHlwZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNv
bnZlcnRlZCB0bwotLy8gdHlwZSBUby4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFt
ZSBUbz4KLWNsYXNzIEltcGxpY2l0bHlDb252ZXJ0aWJsZSB7Ci0gcHJpdmF0ZToKLSAgLy8gV2Ug
bmVlZCB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMu
Ci0gIC8vIFRoZXkgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMuCi0KLSAgLy8gTWFrZUZyb20oKSBp
cyBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMgRnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKLSAg
Ly8gdXNlIEZyb20oKSwgYXMgdGhlIHR5cGUgRnJvbSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVm
YXVsdAotICAvLyBjb25zdHJ1Y3Rvci4KLSAgc3RhdGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxG
cm9tPjo6dHlwZSBNYWtlRnJvbSgpOwotCi0gIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92
ZXJsb2FkZWQuICBHaXZlbiBhbiBleHByZXNzaW9uCi0gIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBp
bGVyIHdpbGwgcGljayB0aGUgZmlyc3QgdmVyc2lvbiBpZiB4IGNhbiBiZQotICAvLyBpbXBsaWNp
dGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvOyBvdGhlcndpc2UgaXQgd2lsbCBwaWNrIHRoZQotICAv
LyBzZWNvbmQgdmVyc2lvbi4KLSAgLy8KLSAgLy8gVGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBh
IHZhbHVlIG9mIHNpemUgMSwgYW5kIHRoZSBzZWNvbmQKLSAgLy8gdmVyc2lvbiByZXR1cm5zIGEg
dmFsdWUgb2Ygc2l6ZSAyLiAgVGhlcmVmb3JlLCBieSBjaGVja2luZyB0aGUKLSAgLy8gc2l6ZSBv
ZiBIZWxwZXIoeCksIHdoaWNoIGNhbiBiZSBkb25lIGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRl
bGwKLSAgLy8gd2hpY2ggdmVyc2lvbiBvZiBIZWxwZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hl
dGhlciB4IGNhbiBiZQotICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvLgotICBz
dGF0aWMgY2hhciBIZWxwZXIoVG8pOwotICBzdGF0aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsg
IC8vIE5PTElOVAotCi0gIC8vIFdlIGhhdmUgdG8gcHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFm
dGVyIHRoZSAncHJpdmF0ZScgc2VjdGlvbiwKLSAgLy8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBp
bGUgdGhlIGNvZGUuCi0gcHVibGljOgotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotICAvLyBD
KytCdWlsZGVyIGNhbm5vdCB1c2UgbWVtYmVyIG92ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRl
bXBsYXRlCi0gIC8vIGluc3RhbnRpYXRpb24uICBUaGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0
byB1c2UgaXRzIEMrKzB4IHR5cGUgdHJhaXRzCi0gIC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAy
MDA5IGFuZCBhYm92ZSBvbmx5KS4KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2Nv
bnZlcnRpYmxlKEZyb20sIFRvKTsKLSNlbHNlCi0gIC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGlj
aXRseSBjb252ZXJ0aW5nIGZyb20gZG91YmxlIHRvIGludCBmb3IKLSAgLy8gcG9zc2libGUgbG9z
cyBvZiBkYXRhLCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IGRpc2FibGUgdGhlCi0gIC8vIHdh
cm5pbmcuCi0gIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQyNDQpCi0gIHN0YXRp
YyBjb25zdCBib29sIHZhbHVlID0KLSAgICAgIHNpemVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZl
cnRpYmxlOjpNYWtlRnJvbSgpKSkgPT0gMTsKLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCi0jZW5kaWYgIC8vIF9fQk9STEFORENfXwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBG
cm9tLCB0eXBlbmFtZSBUbz4KLWNvbnN0IGJvb2wgSW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20s
IFRvPjo6dmFsdWU7Ci0KLS8vIElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21w
aWxlLXRpbWUgYm9vbCBjb25zdGFudCB0aGF0J3MKLS8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90
b2NvbE1lc3NhZ2UsIHByb3RvMjo6TWVzc2FnZSwgb3IgYSBzdWJjbGFzcwotLy8gb2YgdGhvc2Uu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0FQcm90b2NvbE1lc3NhZ2UKLSAgICA6
IHB1YmxpYyBib29sX2NvbnN0YW50PAotICBJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCos
IGNvbnN0IDo6UHJvdG9jb2xNZXNzYWdlKj46OnZhbHVlIHx8Ci0gIEltcGxpY2l0bHlDb252ZXJ0
aWJsZTxjb25zdCBUKiwgY29uc3QgOjpwcm90bzI6Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKLX07Ci0K
LS8vIFdoZW4gdGhlIGNvbXBpbGVyIHNlZXMgZXhwcmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4o
MCksIGlmIEMgaXMgYW4KLS8vIFNUTC1zdHlsZSBjb250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBv
dmVybG9hZCBvZiBJc0NvbnRhaW5lclRlc3QKLS8vIHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3Ro
IEM6Oml0ZXJhdG9yKiBhbmQgQzo6Y29uc3RfaXRlcmF0b3IqIGFyZQotLy8gdmFsaWQgdHlwZXMg
YW5kIE5VTEwgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAot
Ly8gYmUgcGlja2VkIG92ZXIgdGhlIHNlY29uZCBvdmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZl
Y3QgbWF0Y2ggZm9yCi0vLyB0aGUgdHlwZSBvZiBhcmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Ig
b3IgQzo6Y29uc3RfaXRlcmF0b3IgaXMgbm90Ci0vLyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBv
dmVybG9hZCBpcyBub3QgdmlhYmxlLCBhbmQgdGhlIHNlY29uZAotLy8gb3ZlcmxvYWQgd2lsbCBi
ZSBwaWNrZWQuICBUaGVyZWZvcmUsIHdlIGNhbiBkZXRlcm1pbmUgd2hldGhlciBDIGlzCi0vLyBh
IGNvbnRhaW5lciBjbGFzcyBieSBjaGVja2luZyB0aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8
Qz4oMCkuCi0vLyBUaGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4K
LS8vCi0vLyBOb3RlIHRoYXQgd2UgbG9vayBmb3IgYm90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29u
c3RfaXRlcmF0b3IuICBUaGUKLS8vIHJlYXNvbiBpcyB0aGF0IEMrKyBpbmplY3RzIHRoZSBuYW1l
IG9mIGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhlCi0vLyBjbGFzcyBpdHNlbGYgKGUuZy4geW91
IGNhbiByZWZlciB0byBjbGFzcyBpdGVyYXRvciBhcyBlaXRoZXIKLS8vICdpdGVyYXRvcicgb3Ig
J2l0ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2UgbG9vayBmb3IgQzo6aXRlcmF0b3IKLS8vIG9u
bHksIGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0YWtlbmx5IHRoaW5rIHRoYXQgYSBjbGFzcyBu
YW1lZAotLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNvbnRhaW5lci4KLS8vCi0vLyBBbHNvIG5vdGUg
dGhhdCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBvdmVybG9hZGluZwotLy8gSXNDb250YWluZXJU
ZXN0KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9yKikgYW5kCi0vLyBJc0NvbnRhaW5lclRlc3Qo
Li4uKSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwgQWdlIEMrKyBhbmQgU3VuIEMrKy4KLXR5cGVk
ZWYgaW50IElzQ29udGFpbmVyOwotdGVtcGxhdGUgPGNsYXNzIEM+Ci1Jc0NvbnRhaW5lciBJc0Nv
bnRhaW5lclRlc3QoaW50IC8qIGR1bW15ICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVuYW1lIEM6Oml0ZXJhdG9yKiAvKiBpdCAqLyA9IE5VTEwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgQzo6Y29uc3RfaXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0g
TlVMTCkgewotICByZXR1cm4gMDsKLX0KLQotdHlwZWRlZiBjaGFyIElzTm90Q29udGFpbmVyOwot
dGVtcGxhdGUgPGNsYXNzIEM+Ci1Jc05vdENvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QobG9uZyAv
KiBkdW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQotCi0vLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0
eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1ZSwgYW5kCi0vLyB1bmRlZmluZWQgd2hlbiAn
Q29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFFIHRvIG1ha2UgYSBmdW5jdGlvbgotLy8gb3Zl
cmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGljdWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFk
ZAotLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJlc3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBs
YXN0IHBhcmFtZXRlci4KLXRlbXBsYXRlPGJvb2w+IHN0cnVjdCBFbmFibGVJZjsKLXRlbXBsYXRl
PD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJ
TlQKLQotLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUgYXJyYXlzLgotCi0vLyBBcnJheUVxKCkgY29t
cGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5cyB1c2luZyB0aGUKLS8vIGVsZW1l
bnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBiZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBr
IGlzCi0vLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUg
cGFpciBvZiB2YWx1ZXMuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYm9v
bCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90IHNpemUsIGNvbnN0IFUqIHJocyk7Ci0KLS8v
IFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBib29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBj
b25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSByaHM7IH0KLQotLy8gVGhpcyBvdmVybG9hZCBp
cyB1c2VkIHdoZW4gayA+PSAxLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNp
emVfdCBOPgotaW5saW5lIGJvb2wgQXJyYXlFcShjb25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZy
aHMpW05dKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJyYXlFcShsaHMsIE4sIHJocyk7Ci19Ci0K
LS8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBibG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0
cyBsb2dpYyBpbnNpZGUKLS8vIHRoZSBwcmV2aW91cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5
cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAotLy8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVz
IG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
Ci1ib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBzaXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7
Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgewotICAgIGlmICghaW50ZXJu
YWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IHJldHVybiB0cnVlOwotfQotCi0vLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRl
cmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQKLS8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBt
YXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNlbGYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRl
ciwgdHlwZW5hbWUgRWxlbWVudD4KLUl0ZXIgQXJyYXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRl
ciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsKLSAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkgewotICAgIGlmIChpbnRlcm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQot
ICAgICAgcmV0dXJuIGl0OwotICB9Ci0gIHJldHVybiBlbmQ7Ci19Ci0KLS8vIENvcHlBcnJheSgp
IGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZlIGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycK
LS8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUgYW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBp
cyAwLAotLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZh
bHVlLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgQ29weUFycmF5
KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBVKiB0byk7Ci0KLS8vIFRoaXMgZ2VuZXJpYyB2
ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KLWlubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8g
PSBmcm9tOyB9Ci0KLS8vIFRoaXMgb3ZlcmxvYWQgaXMgdXNlZCB3aGVuIGsgPj0gMS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBzaXplX3QgTj4KLWlubGluZSB2b2lkIENvcHlB
cnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8pW05dKSB7Ci0gIGludGVybmFsOjpDb3B5QXJy
YXkoZnJvbSwgTiwgKnRvKTsKLX0KLQotLy8gVGhpcyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0
LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2ljIGluc2lkZQotLy8gdGhlIHByZXZpb3VzIENv
cHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMKLS8vIHdvdWxk
IGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0aGUgdGVtcGxhdGUgY29kZS4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9pZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwg
c2l6ZV90IHNpemUsIFUqIHRvKSB7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkr
KykgewotICAgIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbVtpXSwgdG8gKyBpKTsKLSAgfQotfQot
Ci0vLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBOYXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxv
dykgYW5kIHRoZQotLy8gbmF0aXZlIGFycmF5IGl0IHJlcHJlc2VudHMuCi0vLyBXZSB1c2UgMiBk
aWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24tY29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwg
YXMgbG9uZwotLy8gYXMgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KLXN0
cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlIHt9Owotc3RydWN0IFJlbGF0aW9uVG9Tb3Vy
Y2VDb3B5IHt9OwotCi0vLyBBZGFwdHMgYSBuYXRpdmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RM
LXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKLS8vIG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFp
bmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5IGltcGxlbWVudHMKLS8vIG1lbWJlcnMgdXNl
ZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5lciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCi0v
LyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAgVG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0
aW9uLCB3ZSBvbmx5Ci0vLyBzdXBwb3J0IEVsZW1lbnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBo
YXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCi0vLyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQn
cyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gc2F0aXNmeQotLy8gdGhpcyByZXF1aXJl
bWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5IHR5cGUgaXRzZWxmIChoZW5jZQotLy8gbXVs
dGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBwb3J0ZWQpLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnQ+Ci1jbGFzcyBOYXRpdmVBcnJheSB7Ci0gcHVibGljOgotICAvLyBTVEwtc3R5bGUg
Y29udGFpbmVyIHR5cGVkZWZzLgotICB0eXBlZGVmIEVsZW1lbnQgdmFsdWVfdHlwZTsKLSAgdHlw
ZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKLSAgdHlwZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9p
dGVyYXRvcjsKLQotICAvLyBDb25zdHJ1Y3RzIGZyb20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5j
ZXMgdGhlIHNvdXJjZS4KLSAgTmF0aXZlQXJyYXkoY29uc3QgRWxlbWVudCogYXJyYXksIHNpemVf
dCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSkgewotICAgIEluaXRSZWYoYXJyYXks
IGNvdW50KTsKLSAgfQotCi0gIC8vIENvbnN0cnVjdHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29w
aWVzIHRoZSBzb3VyY2UuCi0gIE5hdGl2ZUFycmF5KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXpl
X3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KSB7Ci0gICAgSW5pdENvcHkoYXJyYXksIGNv
dW50KTsKLSAgfQotCi0gIC8vIENvcHkgY29uc3RydWN0b3IuCi0gIE5hdGl2ZUFycmF5KGNvbnN0
IE5hdGl2ZUFycmF5JiByaHMpIHsKLSAgICAodGhpcy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8s
IHJocy5zaXplXyk7Ci0gIH0KLQotICB+TmF0aXZlQXJyYXkoKSB7Ci0gICAgaWYgKGNsb25lXyAh
PSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCi0gICAgICBkZWxldGVbXSBhcnJheV87Ci0gIH0KLQot
ICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhvZHMuCi0gIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZV87IH0KLSAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBhcnJheV87IH0KLSAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlf
ICsgc2l6ZV87IH0KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNv
bnN0IHsKLSAgICByZXR1cm4gc2l6ZSgpID09IHJocy5zaXplKCkgJiYKLSAgICAgICAgQXJyYXlF
cShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgZW51
bSB7Ci0gICAga0NoZWNrVHlwZUlzTm90Q29uc3RPckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRU
eXBlRXFIZWxwZXI8Ci0gICAgICAgIEVsZW1lbnQsIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5E
X0NPTlNUXyhFbGVtZW50KT46OnZhbHVlLAotICB9OwotCi0gIC8vIEluaXRpYWxpemVzIHRoaXMg
b2JqZWN0IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1dC4KLSAgdm9pZCBJbml0Q29weShjb25zdCBF
bGVtZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkgewotICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkg
PSBuZXcgRWxlbWVudFthX3NpemVdOwotICAgIENvcHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5
KTsKLSAgICBhcnJheV8gPSBjb3B5OwotICAgIHNpemVfID0gYV9zaXplOwotICAgIGNsb25lXyA9
ICZOYXRpdmVBcnJheTo6SW5pdENvcHk7Ci0gIH0KLQotICAvLyBJbml0aWFsaXplcyB0aGlzIG9i
amVjdCB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBpbnB1dC4KLSAgdm9pZCBJbml0UmVmKGNvbnN0
IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXplKSB7Ci0gICAgYXJyYXlfID0gYXJyYXk7Ci0g
ICAgc2l6ZV8gPSBhX3NpemU7Ci0gICAgY2xvbmVfID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOwot
ICB9Ci0KLSAgY29uc3QgRWxlbWVudCogYXJyYXlfOwotICBzaXplX3Qgc2l6ZV87Ci0gIHZvaWQg
KE5hdGl2ZUFycmF5OjoqY2xvbmVfKShjb25zdCBFbGVtZW50Kiwgc2l6ZV90KTsKLQotICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKE5hdGl2ZUFycmF5KTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2RlZmluZSBHVEVTVF9NRVNTQUdF
X0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5cGUsIGZpbGUsIGxpbmUsIG1lc3NhZ2UpIFwK
LSAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCi0KLSNkZWZpbmUgR1RFU1RfTUVTU0FHRV8obWVz
c2FnZSwgcmVzdWx0X3R5cGUpIFwKLSAgR1RFU1RfTUVTU0FHRV9BVF8oX19GSUxFX18sIF9fTElO
RV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKLQotI2RlZmluZSBHVEVTVF9GQVRBTF9GQUlMVVJF
XyhtZXNzYWdlKSBcCi0gIHJldHVybiBHVEVTVF9NRVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6
OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlKQotCi0jZGVmaW5lIEdURVNUX05PTkZBVEFM
X0ZBSUxVUkVfKG1lc3NhZ2UpIFwKLSAgR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgOjp0ZXN0aW5n
OjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSkKLQotI2RlZmluZSBHVEVTVF9TVUND
RVNTXyhtZXNzYWdlKSBcCi0gIEdURVNUX01FU1NBR0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVz
dFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQotCi0vLyBTdXBwcmVzc2VzIE1TVkMgd2FybmluZ3MgNDA3
MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBjb2RlIGZvbGxvd2luZwotLy8gc3RhdGVtZW50
IGlmIGl0IHJldHVybnMgb3IgdGhyb3dzIChvciBkb2Vzbid0IHJldHVybiBvciB0aHJvdyBpbiBz
b21lCi0vLyBzaXR1YXRpb25zKS4KLSNkZWZpbmUgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVf
Q09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpIFwKLSAgaWYgKDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFsd2F5c1RydWUoKSkgeyBzdGF0ZW1lbnQ7IH0KLQotI2RlZmluZSBHVEVTVF9URVNUX1RI
Uk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgZmFpbCkgXAotICBHVEVTVF9BTUJJ
R1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENo
YXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAotICAgIGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVk
ID0gZmFsc2U7IFwKLSAgICB0cnkgeyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICB9IFwKLSAgICBjYXRjaCAo
ZXhwZWN0ZWRfZXhjZXB0aW9uIGNvbnN0JikgeyBcCi0gICAgICBndGVzdF9jYXVnaHRfZXhwZWN0
ZWQgPSB0cnVlOyBcCi0gICAgfSBcCi0gICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9t
c2cudmFsdWUgPSBcCi0gICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3Mg
YW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAi
LlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiI7IFwKLSAgICAgIGdvdG8g
R1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwK
LSAgICB9IFwKLSAgICBpZiAoIWd0ZXN0X2NhdWdodF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVz
dF9tc2cudmFsdWUgPSBcCi0gICAgICAgICAgIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJv
d3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlv
biAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiI7IFwKLSAgICAgIGdvdG8gR1RFU1Rf
Q09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9
IFwKLSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0
aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbChndGVzdF9tc2cudmFsdWUpCi0KLSNkZWZp
bmUgR1RFU1RfVEVTVF9OT19USFJPV18oc3RhdGVtZW50LCBmYWlsKSBcCi0gIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1Ry
dWUoKSkgeyBcCi0gICAgdHJ5IHsgXAotICAgICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVf
Q09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpOyBcCi0gICAgfSBcCi0gICAgY2F0Y2ggKC4u
LikgeyBcCi0gICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5v
dGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05D
QVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub3Rocm93XywgX19MSU5FX18pOiBcCi0gICAgICBm
YWlsKCJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24u
XG4iIFwKLSAgICAgICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3MuIikKLQotI2RlZmluZSBHVEVT
VF9URVNUX0FOWV9USFJPV18oc3RhdGVtZW50LCBmYWlsKSBcCi0gIEdURVNUX0FNQklHVU9VU19F
TFNFX0JMT0NLRVJfIFwKLSAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkg
eyBcCi0gICAgYm9vbCBndGVzdF9jYXVnaHRfYW55ID0gZmFsc2U7IFwKLSAgICB0cnkgeyBcCi0g
ICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRl
bWVudCk7IFwKLSAgICB9IFwKLSAgICBjYXRjaCAoLi4uKSB7IFwKLSAgICAgIGd0ZXN0X2NhdWdo
dF9hbnkgPSB0cnVlOyBcCi0gICAgfSBcCi0gICAgaWYgKCFndGVzdF9jYXVnaHRfYW55KSB7IFwK
LSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0YW55dGhyb3df
LCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05DQVRfVE9L
RU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFpbCgi
RXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93cyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAg
ICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiIpCi0KLQotLy8gSW1wbGVtZW50cyBCb29sZWFu
IHRlc3QgYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLiBleHByZXNzaW9uIGNhbiBiZQot
Ly8gZWl0aGVyIGEgYm9vbGVhbiBleHByZXNzaW9uIG9yIGFuIEFzc2VydGlvblJlc3VsdC4gdGV4
dCBpcyBhIHRleHR1YWwKLS8vIHJlcHJlc2VuYXRpb24gb2YgZXhwcmVzc2lvbiBhcyBpdCB3YXMg
cGFzc2VkIGludG8gdGhlIEVYUEVDVF9UUlVFLgotI2RlZmluZSBHVEVTVF9URVNUX0JPT0xFQU5f
KGV4cHJlc3Npb24sIHRleHQsIGFjdHVhbCwgZXhwZWN0ZWQsIGZhaWwpIFwKLSAgR1RFU1RfQU1C
SUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoY29uc3QgOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgZ3Rlc3RfYXJfID0gXAotICAgICAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQoZXhw
cmVzc2lvbikpIFwKLSAgICA7IFwKLSAgZWxzZSBcCi0gICAgZmFpbCg6OnRlc3Rpbmc6OmludGVy
bmFsOjpHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoXAotICAgICAgICBndGVzdF9hcl8s
IHRleHQsICNhY3R1YWwsICNleHBlY3RlZCkuY19zdHIoKSkKLQotI2RlZmluZSBHVEVTVF9URVNU
X05PX0ZBVEFMX0ZBSUxVUkVfKHN0YXRlbWVudCwgZmFpbCkgXAotICBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBcCi0gIGlmICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkp
IHsgXAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Okhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlciBn
dGVzdF9mYXRhbF9mYWlsdXJlX2NoZWNrZXI7IFwKLSAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNI
QUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICBpZiAoZ3Rlc3RfZmF0
YWxfZmFpbHVyZV9jaGVja2VyLmhhc19uZXdfZmF0YWxfZmFpbHVyZSgpKSB7IFwKLSAgICAgIGdv
dG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9f
KTsgXAotICAgIH0gXAotICB9IGVsc2UgXAotICAgIEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3Rf
bGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6IFwKLSAgICAgIGZhaWwoIkV4cGVjdGVkOiAi
ICNzdGF0ZW1lbnQgIiBkb2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbCAiIFwKLSAgICAgICAgICAg
ImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC5cbiIgXAotICAgICAgICAgICAiICBBY3R1
YWw6IGl0IGRvZXMuIikKLQotLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdGhh
dCBpbXBsZW1lbnRzIHRoZSBnaXZlbiB0ZXN0LgotI2RlZmluZSBHVEVTVF9URVNUX0NMQVNTX05B
TUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIFwKLSAgdGVzdF9jYXNlX25hbWUjI18jI3Rl
c3RfbmFtZSMjX1Rlc3QKLQotLy8gSGVscGVyIG1hY3JvIGZvciBkZWZpbmluZyB0ZXN0cy4KLSNk
ZWZpbmUgR1RFU1RfVEVTVF8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSwgcGFyZW50X2NsYXNz
LCBwYXJlbnRfaWQpXAotY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSA6IHB1YmxpYyBwYXJlbnRfY2xhc3Mge1wKLSBwdWJsaWM6XAotICBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge31cCi0gcHJp
dmF0ZTpcCi0gIHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6
VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb18gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF87XAotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFwKLSAgICAgIEdURVNUX1RFU1RfQ0xBU1Nf
TkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkpO1wKLX07XAotXAotOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVz
dF9uYW1lKVwKLSAgOjp0ZXN0X2luZm9fID1cCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8oXAotICAgICAgICAjdGVzdF9jYXNlX25hbWUsICN0ZXN0X25h
bWUsIE5VTEwsIE5VTEwsIFwKLSAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0
aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKLSAgICAgICAgKHBhcmVudF9pZCksIFwKLSAgICAg
ICAgcGFyZW50X2NsYXNzOjpTZXRVcFRlc3RDYXNlLCBcCi0gICAgICAgIHBhcmVudF9jbGFzczo6
VGVhckRvd25UZXN0Q2FzZSwgXAotICAgICAgICBuZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVz
dEZhY3RvcnlJbXBsPFwKLSAgICAgICAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9j
YXNlX25hbWUsIHRlc3RfbmFtZSk+KTtcCi12b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVz
dF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RCb2R5KCkKLQotI2VuZGlmICAvLyBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lOVEVSTkFMX0hfCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MDI5NDIyMTc0ZjIxNTg0ODY4MWRiMTExMGJjZGIy
MzUzOGExMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDMgR29vZ2xlIElu
Yy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogRGFuIEVnbm9yIChlZ25vckBnb29nbGUu
Y29tKQotLy8KLS8vIEEgInNtYXJ0IiBwb2ludGVyIHR5cGUgd2l0aCByZWZlcmVuY2UgdHJhY2tp
bmcuICBFdmVyeSBwb2ludGVyIHRvIGEKLS8vIHBhcnRpY3VsYXIgb2JqZWN0IGlzIGtlcHQgb24g
YSBjaXJjdWxhciBsaW5rZWQgbGlzdC4gIFdoZW4gdGhlIGxhc3QgcG9pbnRlcgotLy8gdG8gYW4g
b2JqZWN0IGlzIGRlc3Ryb3llZCBvciByZWFzc2lnbmVkLCB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQu
Ci0vLwotLy8gVXNlZCBwcm9wZXJseSwgdGhpcyBkZWxldGVzIHRoZSBvYmplY3Qgd2hlbiB0aGUg
bGFzdCByZWZlcmVuY2UgZ29lcyBhd2F5LgotLy8gVGhlcmUgYXJlIHNldmVyYWwgY2F2ZWF0czoK
LS8vIC0gTGlrZSBhbGwgcmVmZXJlbmNlIGNvdW50aW5nIHNjaGVtZXMsIGN5Y2xlcyBsZWFkIHRv
IGxlYWtzLgotLy8gLSBFYWNoIHNtYXJ0IHBvaW50ZXIgaXMgYWN0dWFsbHkgdHdvIHBvaW50ZXJz
ICg4IGJ5dGVzIGluc3RlYWQgb2YgNCkuCi0vLyAtIEV2ZXJ5IHRpbWUgYSBwb2ludGVyIGlzIGFz
c2lnbmVkLCB0aGUgZW50aXJlIGxpc3Qgb2YgcG9pbnRlcnMgdG8gdGhhdAotLy8gICBvYmplY3Qg
aXMgdHJhdmVyc2VkLiAgVGhpcyBjbGFzcyBpcyB0aGVyZWZvcmUgTk9UIFNVSVRBQkxFIHdoZW4g
dGhlcmUKLS8vICAgd2lsbCBvZnRlbiBiZSBtb3JlIHRoYW4gdHdvIG9yIHRocmVlIHBvaW50ZXJz
IHRvIGEgcGFydGljdWxhciBvYmplY3QuCi0vLyAtIFJlZmVyZW5jZXMgYXJlIG9ubHkgdHJhY2tl
ZCBhcyBsb25nIGFzIGxpbmtlZF9wdHI8PiBvYmplY3RzIGFyZSBjb3BpZWQuCi0vLyAgIElmIGEg
bGlua2VkX3B0cjw+IGlzIGNvbnZlcnRlZCB0byBhIHJhdyBwb2ludGVyIGFuZCBiYWNrLCBCQUQg
VEhJTkdTCi0vLyAgIHdpbGwgaGFwcGVuIChkb3VibGUgZGVsZXRpb24pLgotLy8KLS8vIEEgZ29v
ZCB1c2Ugb2YgdGhpcyBjbGFzcyBpcyBzdG9yaW5nIG9iamVjdCByZWZlcmVuY2VzIGluIFNUTCBj
b250YWluZXJzLgotLy8gWW91IGNhbiBzYWZlbHkgcHV0IGxpbmtlZF9wdHI8PiBpbiBhIHZlY3Rv
cjw+LgotLy8gT3RoZXIgdXNlcyBtYXkgbm90IGJlIGFzIGdvb2QuCi0vLwotLy8gTm90ZTogSWYg
eW91IHVzZSBhbiBpbmNvbXBsZXRlIHR5cGUgd2l0aCBsaW5rZWRfcHRyPD4sIHRoZSBjbGFzcwot
Ly8gKmNvbnRhaW5pbmcqIGxpbmtlZF9wdHI8PiBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvciAoZXZlbgotLy8gaWYgdGhleSBkbyBub3RoaW5nISkuCi0vLwotLy8gQmlsbCBH
aWJib25zIHN1Z2dlc3RlZCB3ZSB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpcy4KLS8vCi0vLyBUaHJl
YWQgU2FmZXR5OgotLy8gICBVbmxpa2Ugb3RoZXIgbGlua2VkX3B0ciBpbXBsZW1lbnRhdGlvbnMs
IGluIHRoaXMgaW1wbGVtZW50YXRpb24KLS8vICAgYSBsaW5rZWRfcHRyIG9iamVjdCBpcyB0aHJl
YWQtc2FmZSBpbiB0aGUgc2Vuc2UgdGhhdDoKLS8vICAgICAtIGl0J3Mgc2FmZSB0byBjb3B5IGxp
bmtlZF9wdHIgb2JqZWN0cyBjb25jdXJyZW50bHksCi0vLyAgICAgLSBpdCdzIHNhZmUgdG8gY29w
eSAqZnJvbSogYSBsaW5rZWRfcHRyIGFuZCByZWFkIGl0cyB1bmRlcmx5aW5nCi0vLyAgICAgICBy
YXcgcG9pbnRlciAoZS5nLiB2aWEgZ2V0KCkpIGNvbmN1cnJlbnRseSwgYW5kCi0vLyAgICAgLSBp
dCdzIHNhZmUgdG8gd3JpdGUgdG8gdHdvIGxpbmtlZF9wdHJzIHRoYXQgcG9pbnQgdG8gdGhlIHNh
bWUKLS8vICAgICAgIHNoYXJlZCBvYmplY3QgY29uY3VycmVudGx5LgotLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IHJlbmFtZSB0aGlzIHRvIHNhZmVfbGlua2VkX3B0ciB0byBhdm9pZAotLy8gY29u
ZnVzaW9uIHdpdGggbm9ybWFsIGxpbmtlZF9wdHIuCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9H
VEVTVF9JTlRFUk5BTF9HVEVTVF9MSU5LRURfUFRSX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwotCi0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8v
IFByb3RlY3RzIGNvcHlpbmcgb2YgYWxsIGxpbmtlZF9wdHIgb2JqZWN0cy4KLUdURVNUX0FQSV8g
R1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKGdfbGlua2VkX3B0cl9tdXRleCk7Ci0KLS8vIFRo
aXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IGFsbCBpbnN0YW5jZXMgb2YgbGlua2VkX3B0cjw+LiAg
SXQgbmVlZHMgdG8gYmUKLS8vIGEgbm9uLXRlbXBsYXRlIGNsYXNzIGJlY2F1c2UgZGlmZmVyZW50
IHR5cGVzIG9mIGxpbmtlZF9wdHI8PiBjYW4gcmVmZXIgdG8KLS8vIHRoZSBzYW1lIG9iamVjdCAo
bGlua2VkX3B0cjxTdXBlcmNsYXNzPihvYmopIHZzIGxpbmtlZF9wdHI8U3ViY2xhc3M+KG9iaikp
LgotLy8gU28sIGl0IG5lZWRzIHRvIGJlIHBvc3NpYmxlIGZvciBkaWZmZXJlbnQgdHlwZXMgb2Yg
bGlua2VkX3B0ciB0byBwYXJ0aWNpcGF0ZQotLy8gaW4gdGhlIHNhbWUgY2lyY3VsYXIgbGlua2Vk
IGxpc3QsIHNvIHdlIG5lZWQgYSBzaW5nbGUgY2xhc3MgdHlwZSBoZXJlLgotLy8KLS8vIERPIE5P
VCBVU0UgVEhJUyBDTEFTUyBESVJFQ1RMWSBZT1VSU0VMRi4gIFVzZSBsaW5rZWRfcHRyPFQ+Lgot
Y2xhc3MgbGlua2VkX3B0cl9pbnRlcm5hbCB7Ci0gcHVibGljOgotICAvLyBDcmVhdGUgYSBuZXcg
Y2lyY2xlIHRoYXQgaW5jbHVkZXMgb25seSB0aGlzIGluc3RhbmNlLgotICB2b2lkIGpvaW5fbmV3
KCkgewotICAgIG5leHRfID0gdGhpczsKLSAgfQotCi0gIC8vIE1hbnkgbGlua2VkX3B0ciBvcGVy
YXRpb25zIG1heSBjaGFuZ2UgcC5saW5rXyBmb3Igc29tZSBsaW5rZWRfcHRyCi0gIC8vIHZhcmlh
YmxlIHAgaW4gdGhlIHNhbWUgY2lyY2xlIGFzIHRoaXMgb2JqZWN0LiAgVGhlcmVmb3JlIHdlIG5l
ZWQKLSAgLy8gdG8gcHJldmVudCB0d28gc3VjaCBvcGVyYXRpb25zIGZyb20gb2NjdXJyaW5nIGNv
bmN1cnJlbnRseS4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IGRpZmZlcmVudCB0eXBlcyBvZiBsaW5r
ZWRfcHRyIG9iamVjdHMgY2FuIGNvZXhpc3QgaW4gYQotICAvLyBjaXJjbGUgKGUuZy4gbGlua2Vk
X3B0cjxCYXNlPiwgbGlua2VkX3B0cjxEZXJpdmVkMT4sIGFuZAotICAvLyBsaW5rZWRfcHRyPERl
cml2ZWQyPikuICBUaGVyZWZvcmUgd2UgbXVzdCB1c2UgYSBzaW5nbGUgbXV0ZXggdG8KLSAgLy8g
cHJvdGVjdCBhbGwgbGlua2VkX3B0ciBvYmplY3RzLiAgVGhpcyBjYW4gY3JlYXRlIHNlcmlvdXMK
LSAgLy8gY29udGVudGlvbiBpbiBwcm9kdWN0aW9uIGNvZGUsIGJ1dCBpcyBhY2NlcHRhYmxlIGlu
IGEgdGVzdGluZwotICAvLyBmcmFtZXdvcmsuCi0KLSAgLy8gSm9pbiBhbiBleGlzdGluZyBjaXJj
bGUuCi0gIHZvaWQgam9pbihsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwdHIpCi0gICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKLSAgICBNdXRleExvY2sg
bG9jaygmZ19saW5rZWRfcHRyX211dGV4KTsKLQotICAgIGxpbmtlZF9wdHJfaW50ZXJuYWwgY29u
c3QqIHAgPSBwdHI7Ci0gICAgd2hpbGUgKHAtPm5leHRfICE9IHB0cikgewotICAgICAgYXNzZXJ0
KHAtPm5leHRfICE9IHRoaXMgJiYKLSAgICAgICAgICAgICAiVHJ5aW5nIHRvIGpvaW4oKSBhIGxp
bmtlZCByaW5nIHdlIGFyZSBhbHJlYWR5IGluLiAiCi0gICAgICAgICAgICAgIklzIEdNb2NrIHRo
cmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKLSAgICAgIHAgPSBwLT5uZXh0XzsKLSAgICB9Ci0gICAg
cC0+bmV4dF8gPSB0aGlzOwotICAgIG5leHRfID0gcHRyOwotICB9Ci0KLSAgLy8gTGVhdmUgd2hh
dGV2ZXIgY2lyY2xlIHdlJ3JlIHBhcnQgb2YuICBSZXR1cm5zIHRydWUgaWYgd2Ugd2VyZSB0aGUK
LSAgLy8gbGFzdCBtZW1iZXIgb2YgdGhlIGNpcmNsZS4gIE9uY2UgdGhpcyBpcyBkb25lLCB5b3Ug
Y2FuIGpvaW4oKSBhbm90aGVyLgotICBib29sIGRlcGFydCgpCi0gICAgICBHVEVTVF9MT0NLX0VY
Q0xVREVEXyhnX2xpbmtlZF9wdHJfbXV0ZXgpIHsKLSAgICBNdXRleExvY2sgbG9jaygmZ19saW5r
ZWRfcHRyX211dGV4KTsKLQotICAgIGlmIChuZXh0XyA9PSB0aGlzKSByZXR1cm4gdHJ1ZTsKLSAg
ICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gbmV4dF87Ci0gICAgd2hpbGUgKHAtPm5l
eHRfICE9IHRoaXMpIHsKLSAgICAgIGFzc2VydChwLT5uZXh0XyAhPSBuZXh0XyAmJgotICAgICAg
ICAgICAgICJUcnlpbmcgdG8gZGVwYXJ0KCkgYSBsaW5rZWQgcmluZyB3ZSBhcmUgbm90IGluLiAi
Ci0gICAgICAgICAgICAgIklzIEdNb2NrIHRocmVhZCBzYWZldHkgZW5hYmxlZD8iKTsKLSAgICAg
IHAgPSBwLT5uZXh0XzsKLSAgICB9Ci0gICAgcC0+bmV4dF8gPSBuZXh0XzsKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIG11dGFibGUgbGlua2VkX3B0cl9pbnRlcm5hbCBj
b25zdCogbmV4dF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIGxpbmtlZF9w
dHIgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAvLyBUYWtlIG92
ZXIgb3duZXJzaGlwIG9mIGEgcmF3IHBvaW50ZXIuICBUaGlzIHNob3VsZCBoYXBwZW4gYXMgc29v
biBhcwotICAvLyBwb3NzaWJsZSBhZnRlciB0aGUgb2JqZWN0IGlzIGNyZWF0ZWQuCi0gIGV4cGxp
Y2l0IGxpbmtlZF9wdHIoVCogcHRyID0gTlVMTCkgeyBjYXB0dXJlKHB0cik7IH0KLSAgfmxpbmtl
ZF9wdHIoKSB7IGRlcGFydCgpOyB9Ci0KLSAgLy8gQ29weSBhbiBleGlzdGluZyBsaW5rZWRfcHRy
PD4sIGFkZGluZyBvdXJzZWx2ZXMgdG8gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcy4KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFU+IGxpbmtlZF9wdHIobGlua2VkX3B0cjxVPiBjb25zdCYgcHRyKSB7IGNv
cHkoJnB0cik7IH0KLSAgbGlua2VkX3B0cihsaW5rZWRfcHRyIGNvbnN0JiBwdHIpIHsgIC8vIE5P
TElOVAotICAgIGFzc2VydCgmcHRyICE9IHRoaXMpOwotICAgIGNvcHkoJnB0cik7Ci0gIH0KLQot
ICAvLyBBc3NpZ25tZW50IHJlbGVhc2VzIHRoZSBvbGQgdmFsdWUgYW5kIGFjcXVpcmVzIHRoZSBu
ZXcuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBsaW5rZWRfcHRyJiBvcGVyYXRvcj0obGlua2Vk
X3B0cjxVPiBjb25zdCYgcHRyKSB7Ci0gICAgZGVwYXJ0KCk7Ci0gICAgY29weSgmcHRyKTsKLSAg
ICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBsaW5rZWRfcHRyJiBvcGVyYXRvcj0obGlua2VkX3B0
ciBjb25zdCYgcHRyKSB7Ci0gICAgaWYgKCZwdHIgIT0gdGhpcykgewotICAgICAgZGVwYXJ0KCk7
Ci0gICAgICBjb3B5KCZwdHIpOwotICAgIH0KLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAv
LyBTbWFydCBwb2ludGVyIG1lbWJlcnMuCi0gIHZvaWQgcmVzZXQoVCogcHRyID0gTlVMTCkgewot
ICAgIGRlcGFydCgpOwotICAgIGNhcHR1cmUocHRyKTsKLSAgfQotICBUKiBnZXQoKSBjb25zdCB7
IHJldHVybiB2YWx1ZV87IH0KLSAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
XzsgfQotICBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqdmFsdWVfOyB9Ci0KLSAgYm9v
bCBvcGVyYXRvcj09KFQqIHApIGNvbnN0IHsgcmV0dXJuIHZhbHVlXyA9PSBwOyB9Ci0gIGJvb2wg
b3BlcmF0b3IhPShUKiBwKSBjb25zdCB7IHJldHVybiB2YWx1ZV8gIT0gcDsgfQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KLSAgYm9vbCBvcGVyYXRvcj09KGxpbmtlZF9wdHI8VT4gY29uc3QmIHB0
cikgY29uc3QgewotICAgIHJldHVybiB2YWx1ZV8gPT0gcHRyLmdldCgpOwotICB9Ci0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgotICBib29sIG9wZXJhdG9yIT0obGlua2VkX3B0cjxVPiBjb25zdCYg
cHRyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXyAhPSBwdHIuZ2V0KCk7Ci0gIH0KLQotIHBy
aXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBmcmllbmQgY2xhc3MgbGlua2VkX3B0
cjsKLQotICBUKiB2YWx1ZV87Ci0gIGxpbmtlZF9wdHJfaW50ZXJuYWwgbGlua187Ci0KLSAgdm9p
ZCBkZXBhcnQoKSB7Ci0gICAgaWYgKGxpbmtfLmRlcGFydCgpKSBkZWxldGUgdmFsdWVfOwotICB9
Ci0KLSAgdm9pZCBjYXB0dXJlKFQqIHB0cikgewotICAgIHZhbHVlXyA9IHB0cjsKLSAgICBsaW5r
Xy5qb2luX25ldygpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHZvaWQgY29weShs
aW5rZWRfcHRyPFU+IGNvbnN0KiBwdHIpIHsKLSAgICB2YWx1ZV8gPSBwdHItPmdldCgpOwotICAg
IGlmICh2YWx1ZV8pCi0gICAgICBsaW5rXy5qb2luKCZwdHItPmxpbmtfKTsKLSAgICBlbHNlCi0g
ICAgICBsaW5rXy5qb2luX25ldygpOwotICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUKLWJvb2wgb3BlcmF0b3I9PShUKiBwdHIsIGNvbnN0IGxpbmtlZF9wdHI8VD4mIHgpIHsK
LSAgcmV0dXJuIHB0ciA9PSB4LmdldCgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUKLWJvb2wgb3BlcmF0b3IhPShUKiBwdHIsIGNvbnN0IGxpbmtlZF9wdHI8VD4mIHgpIHsKLSAg
cmV0dXJuIHB0ciAhPSB4LmdldCgpOwotfQotCi0vLyBBIGZ1bmN0aW9uIHRvIGNvbnZlcnQgVCog
aW50byBsaW5rZWRfcHRyPFQ+Ci0vLyBEb2luZyBlLmcuIG1ha2VfbGlua2VkX3B0cihuZXcgRm9v
QmFyQmF6PHR5cGU+KGFyZykpIGlzIGEgc2hvcnRlciBub3RhdGlvbgotLy8gZm9yIGxpbmtlZF9w
dHI8Rm9vQmFyQmF6PHR5cGU+ID4obmV3IEZvb0JhckJhejx0eXBlPihhcmcpKQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1saW5rZWRfcHRyPFQ+IG1ha2VfbGlua2VkX3B0cihUKiBwdHIpIHsKLSAg
cmV0dXJuIGxpbmtlZF9wdHI8VD4ocHRyKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Ci19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BUUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRl
ZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDFkODFkMjBmZmNhMzJiYThmOTU3
N2ZmNWJkMDZiZmUyZGU3NDYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0t
dXRpbC1nZW5lcmF0ZWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxNDYgKzAsMCBAQAotLy8gVGhp
cyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKLS8vICAgICBwdW1wLnB5IGd0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcAotLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQotCi0v
LyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0
aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCi0vLyBUaGlzIGZp
bGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKLS8vCi0v
LyBDdXJyZW50bHkgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgYXQgbW9zdCA1MCBhcmd1bWVudHMgaW4g
VmFsdWVzLAotLy8gYW5kIGF0IG1vc3QgMTAgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBj
b250YWN0Ci0vLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5l
ZWQgbW9yZS4KLS8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8g
Q29tYmluZSBpcyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMKLS8vIGN1cnJlbnRseSBzZXQgYXQgMTAuCi0KLSNp
Zm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVS
QVRFRF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFN
X1VUSUxfR0VORVJBVEVEX0hfCi0KLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9u
IGd0ZXN0J3Mgb3duIGhlYWRlciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkq
LiAgVGhlcmVmb3JlIHRoZXNlICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAj
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QuCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cGFyYW0tdXRpbC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQot
I2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRm9y
d2FyZCBkZWNsYXJhdGlvbnMgb2YgVmFsdWVzSW4oKSwgd2hpY2ggaXMgaW1wbGVtZW50ZWQgaW4K
LS8vIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLgotdGVtcGxhdGUgPHR5cGVuYW1l
IEZvcndhcmRJdGVyYXRvcj4KLWludGVybmFsOjpQYXJhbUdlbmVyYXRvcjwKLSAgdHlwZW5hbWUg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFs
dWVfdHlwZT4KLVZhbHVlc0luKEZvcndhcmRJdGVyYXRvciBiZWdpbiwgRm9yd2FyZEl0ZXJhdG9y
IGVuZCk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLWludGVybmFsOjpQYXJh
bUdlbmVyYXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKTsKLQotdGVtcGxhdGUg
PGNsYXNzIENvbnRhaW5lcj4KLWludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0eXBlbmFtZSBDb250
YWluZXI6OnZhbHVlX3R5cGU+IFZhbHVlc0luKAotICAgIGNvbnN0IENvbnRhaW5lciYgY29udGFp
bmVyKTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVXNlZCBpbiB0aGUgVmFsdWVzKCkg
ZnVuY3Rpb24gdG8gcHJvdmlkZSBwb2x5bW9ycGhpYyBjYXBhYmlsaXRpZXMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDE+Ci1jbGFzcyBWYWx1ZUFycmF5MSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBW
YWx1ZUFycmF5MShUMSB2MSkgOiB2MV8odjEpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkp
OwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQg
aXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkxJiBvdGhl
cik7Ci0KLSAgY29uc3QgVDEgdjFfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMj4KLWNsYXNzIFZhbHVlQXJyYXkyIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkyKFQx
IHYxLCBUMiB2MikgOiB2MV8odjEpLCB2Ml8odjIpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pfTsKLSAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBs
ZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9
KGNvbnN0IFZhbHVlQXJyYXkyJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBU
MiB2Ml87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KLWNsYXNzIFZhbHVlQXJyYXkzIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkzKFQxIHYx
LCBUMiB2MiwgVDMgdjMpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKX07Ci0gICAgcmV0dXJuIFZhbHVl
c0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFy
cmF5MyYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25z
dCBUMyB2M187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci1jbGFzcyBWYWx1ZUFycmF5NCB7Ci0gcHVibGljOgotICBW
YWx1ZUFycmF5NChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCkgOiB2MV8odjEpLCB2Ml8odjIp
LCB2M18odjMpLAotICAgICAgdjRfKHY0KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKX07Ci0gICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5NCYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBj
b25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci1j
bGFzcyBWYWx1ZUFycmF5NSB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NShUMSB2MSwgVDIgdjIs
IFQzIHYzLCBUNCB2NCwgVDUgdjUpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwKLSAgICAg
IHY0Xyh2NCksIHY1Xyh2NSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTUmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0
IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1
XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDY+Ci1jbGFzcyBWYWx1
ZUFycmF5NiB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NihUMSB2MSwgVDIgdjIsIFQzIHYzLCBU
NCB2NCwgVDUgdjUsIFQ2IHY2KSA6IHYxXyh2MSksIHYyXyh2MiksCi0gICAgICB2M18odjMpLCB2
NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4o
YXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk2
JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQz
IHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Pgot
Y2xhc3MgVmFsdWVBcnJheTcgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTcoVDEgdjEsIFQyIHYy
LCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcpIDogdjFfKHYxKSwKLSAgICAgIHYy
Xyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2Nykge30KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1
bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTcmIG90aGVyKTsK
LQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBj
b25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBU
NyB2N187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDg+Ci1jbGFzcyBWYWx1ZUFycmF5OCB7Ci0gcHVibGljOgotICBWYWx1
ZUFycmF5OChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywK
LSAgICAgIFQ4IHY4KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2
NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk4JiBv
dGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYz
XzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAg
Y29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgot
Y2xhc3MgVmFsdWVBcnJheTkgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTkoVDEgdjEsIFQyIHYy
LCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LAotICAgICAgVDkgdjkp
IDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwg
djdfKHY3KSwKLSAgICAgIHY4Xyh2OCksIHY5Xyh2OSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3Qg
VCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19j
YXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+
KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5Xyl9
OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgVmFsdWVBcnJheTkmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNv
bnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1
IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsK
LSAgY29uc3QgVDkgdjlfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgot
Y2xhc3MgVmFsdWVBcnJheTEwIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkxMChUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAg
ICAgVDEwIHYxMCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUp
LCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApIHt9
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKX07Ci0gICAgcmV0dXJu
IFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRp
b24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBW
YWx1ZUFycmF5MTAmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsK
LSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29u
c3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkg
djlfOwotICBjb25zdCBUMTAgdjEwXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTE+Ci1jbGFzcyBWYWx1ZUFycmF5MTEgewotIHB1YmxpYzoK
LSAgVmFsdWVBcnJheTExKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExKSA6IHYxXyh2MSks
IHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksCi0gICAgICB2N18o
djcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pfTsK
LSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IFZhbHVlQXJyYXkxMSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29u
c3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUg
djVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwot
ICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMj4KLWNsYXNzIFZhbHVlQXJyYXkxMiB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5
MTIoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIpIDogdjFfKHYxKSwgdjJf
KHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwKLSAgICAgIHY2Xyh2NiksIHY3Xyh2Nyks
IHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMikge30KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyl9OwotICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTEyJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0
IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2
XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAg
Y29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzPgotY2xhc3MgVmFsdWVBcnJheTEzIHsKLSBwdWJsaWM6
Ci0gIFZhbHVlQXJyYXkxMyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLAotICAgICAgdjVf
KHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFf
KHYxMSksCi0gICAgICB2MTJfKHYxMiksIHYxM18odjEzKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyl9OwotICAgIHJldHVybiBW
YWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFs
dWVBcnJheTEzJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0g
IGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0
IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5
XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEy
XzsKLSAgY29uc3QgVDEzIHYxM187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0PgotY2xhc3MgVmFsdWVBcnJheTE0IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkxNChU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCkg
OiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLAotICAgICAgdjRfKHY0KSwgdjVfKHY1KSwgdjZf
KHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2
MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNv
bnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0
aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2Fz
dDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8
VD4odjE0Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6
Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE0JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEg
djFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwot
ICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25z
dCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQx
MSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQx
NCB2MTRfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1PgotY2xhc3MgVmFsdWVBcnJheTE1IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkxNShU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSkgOiB2MV8odjEpLCB2Ml8odjIpLAotICAgICAgdjNfKHYzKSwgdjRfKHY0KSwgdjVf
KHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLAotICAg
ICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSkg
e30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE1JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwot
ICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25z
dCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2
OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFf
OwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRf
OwotICBjb25zdCBUMTUgdjE1XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTY+Ci1jbGFzcyBWYWx1ZUFycmF5
MTYgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE2KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEg
djExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2KSA6IHYxXyh2
MSksCi0gICAgICB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2
N18odjcpLCB2OF8odjgpLCB2OV8odjkpLAotICAgICAgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYx
Ml8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwKLSAgICAgIHYxNl8odjE2
KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRv
cjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFf
KSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19j
YXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8
VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE2JiBvdGhl
cik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsK
LSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29u
c3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEw
IHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEz
IHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2
IHYxNl87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTc+Ci1jbGFzcyBWYWx1ZUFycmF5
MTcgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE3KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEg
djExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LAotICAgICAg
VDE3IHYxNykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2
Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFf
KHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSks
IHYxNl8odjE2KSwgdjE3Xyh2MTcpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0
aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nh
c3Q8VD4odjE3Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZh
dGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
LSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE3JiBvdGhlcik7Ci0KLSAgY29uc3Qg
VDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRf
OwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBj
b25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0
IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0
IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0
IFQxNyB2MTdfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTg+
Ci1jbGFzcyBWYWx1ZUFycmF5MTggewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE4KFQxIHYxLCBU
MiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0g
ICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1
LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2
M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4
KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2
MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYx
OCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0
YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0
PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1
bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTE4JiBvdGhlcik7
Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAg
Y29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3Qg
VDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYx
MF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYx
M187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYx
Nl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTk+Ci1jbGFzcyBWYWx1
ZUFycmF5MTkgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE5KFQxIHYxLCBUMiB2MiwgVDMgdjMs
IFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEw
LCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBU
MTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18o
djMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLAotICAgICAgdjdfKHY3KSwgdjhfKHY4KSwg
djlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLAotICAg
ICAgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCks
IHYxOV8odjE5KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTE5JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25z
dCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2
NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0g
IGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBj
b25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBj
b25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBj
b25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjA+Ci1jbGFz
cyBWYWx1ZUFycmF5MjAgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTIwKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCkgOiB2MV8odjEp
LCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLAotICAgICAgdjZfKHY2KSwgdjdf
KHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwK
LSAgICAgIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2
MTcpLCB2MThfKHYxOCksCi0gICAgICB2MTlfKHYxOSksIHYyMF8odjIwKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pfTsKLSAg
ICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBs
ZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9
KGNvbnN0IFZhbHVlQXJyYXkyMCYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3Qg
VDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVf
OwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBj
b25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29u
c3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29u
c3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29u
c3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjE+Ci1jbGFzcyBWYWx1ZUFycmF5MjEgewotIHB1
YmxpYzoKLSAgVmFsdWVBcnJheTIxKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwg
VDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIg
djEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAg
VDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2
M18odjMpLCB2NF8odjQpLAotICAgICAgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4
KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksCi0gICAgICB2MTJfKHYxMiksIHYxM18o
djEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLAotICAgICAg
djE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpIHt9Ci0KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyMSYgb3RoZXIp
OwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0g
IGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0
IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2
MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2
MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2
MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2
MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjI+Ci1jbGFzcyBWYWx1ZUFycmF5MjIg
ewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTIyKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBU
NSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAot
ICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMikgOiB2MV8o
djEpLCB2Ml8odjIpLCB2M18odjMpLAotICAgICAgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwg
djdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2MTEpLCB2
MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKLSAg
ICAgIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEp
LCB2MjJfKHYyMikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+
KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8p
LCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0
YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBz
dGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyMl8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBw
cml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyMiYgb3RoZXIpOwotCi0gIGNv
bnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0
IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsK
LSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBj
b25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBj
b25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBj
b25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBj
b25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjM+Ci1jbGFzcyBWYWx1ZUFycmF5MjMgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTIzKFQxIHYx
LCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjks
Ci0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUg
djE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwg
VDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMykgOiB2MV8odjEpLCB2Ml8odjIpLAotICAgICAgdjNf
KHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5
KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0
Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKLSAgICAgIHYxN18odjE3KSwgdjE4Xyh2MTgp
LCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCi0gICAgICB2MjNf
KHYyMykge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MjMm
IG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMg
djNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwot
ICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25z
dCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25z
dCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25z
dCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25z
dCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25z
dCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0PgotY2xh
c3MgVmFsdWVBcnJheTI0IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkyNChUMSB2MSwgVDIgdjIs
IFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAg
VDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2
IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEs
IFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQpIDogdjFfKHYxKSwKLSAgICAgIHYyXyh2MiksIHYz
Xyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2
OSksCi0gICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYx
NF8odjE0KSwgdjE1Xyh2MTUpLAotICAgICAgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4
KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwKLSAgICAgIHYyMl8odjIyKSwgdjIz
Xyh2MjMpLCB2MjRfKHYyNCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI0JiBvdGhlcik7Ci0KLSAg
Y29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3Qg
VDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdf
OwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0g
IGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0g
IGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0g
IGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0g
IGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0g
IGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNT4KLWNsYXNzIFZhbHVlQXJyYXkyNSB7Ci0gcHVibGljOgotICBWYWx1ZUFy
cmF5MjUoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4
IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LAotICAgICAgVDI1
IHYyNSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8o
djYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYx
MSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYx
Nl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAg
ICAgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSkg
e30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9
Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyNSYgb3RoZXIpOwot
Ci0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNv
bnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3
IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBf
OwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNf
OwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZf
OwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlf
OwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJf
OwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVf
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNj4K
LWNsYXNzIFZhbHVlQXJyYXkyNiB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MjYoVDEgdjEsIFQy
IHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAg
ICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUs
IFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEg
djIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNikg
OiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2
N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYx
Ml8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8odjE2
KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAgICAgdjIx
Xyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8o
djI2KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRp
Y19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nh
c3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19j
YXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pfTsKLSAgICBy
ZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFZhbHVlQXJyYXkyNiYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIg
djJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwot
ICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25z
dCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3Qg
VDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3Qg
VDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3Qg
VDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3Qg
VDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3Qg
VDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
Nz4KLWNsYXNzIFZhbHVlQXJyYXkyNyB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MjcoVDEgdjEs
IFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwK
LSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2
MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBU
MjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYy
NiwgVDI3IHYyNykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUp
LCB2Nl8odjYpLAotICAgICAgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2
MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLAotICAgICAgdjE0Xyh2MTQpLCB2MTVfKHYx
NSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwKLSAgICAgIHYy
MF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVf
KHYyNSksCi0gICAgICB2MjZfKHYyNiksIHYyN18odjI3KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKX07Ci0g
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MjcmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0
IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1
XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAg
Y29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNv
bnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNv
bnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNv
bnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNv
bnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNv
bnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNv
bnN0IFQyNyB2MjdfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjg+Ci1jbGFzcyBWYWx1ZUFycmF5
MjggewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTI4KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEg
djExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3
LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2Mjgp
IDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwKLSAgICAgIHY2
Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2
MTJfKHYxMiksCi0gICAgICB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYx
NiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLAotICAgICAgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYy
MV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSwKLSAgICAgIHYyNV8odjI1
KSwgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI4JiBvdGhlcik7Ci0KLSAg
Y29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3Qg
VDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdf
OwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0g
IGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0g
IGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0g
IGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0g
IGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0g
IGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0g
IGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5PgotY2xhc3MgVmFsdWVBcnJheTI5
IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkyOShUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYx
MSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywK
LSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2
MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBU
MjkgdjI5KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksCi0gICAgICB2NV8o
djUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8o
djExKSwKLSAgICAgIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwg
djE2Xyh2MTYpLCB2MTdfKHYxNyksCi0gICAgICB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2
MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMpLAotICAgICAgdjI0Xyh2MjQpLCB2
MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSB7fQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigp
IGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nh
c3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+
KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEz
XyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwg
c3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYy
MF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyks
IHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8p
fTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyOSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAg
Y29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3Qg
VDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhf
OwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsK
LSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsK
LSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsK
LSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsK
LSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsK
LSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsK
LSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
LSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMD4KLWNs
YXNzIFZhbHVlQXJyYXkzMCB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MzAoVDEgdjEsIFQyIHYy
LCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAg
IFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQx
NiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIx
LCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3
IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18o
djMpLAotICAgICAgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwg
djlfKHY5KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEz
KSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKLSAgICAgIHYxN18odjE3KSwgdjE4
Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCi0gICAg
ICB2MjNfKHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwg
djI4Xyh2MjgpLAotICAgICAgdjI5Xyh2MjkpLCB2MzBfKHYzMCkge30KLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAg
Y29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYy
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0
YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19j
YXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2Fz
dDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+
KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4
XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxU
Pih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYy
NV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMwXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMwJiBvdGhlcik7Ci0KLSAg
Y29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3Qg
VDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdf
OwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0g
IGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0g
IGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0g
IGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0g
IGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0g
IGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0g
IGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0g
IGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzE+Ci1jbGFz
cyBWYWx1ZUFycmF5MzEgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTMxKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwg
VDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2
MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEpIDogdjFfKHYxKSwgdjJfKHYy
KSwKLSAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4
Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwKLSAgICAgIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksCi0gICAgICB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIp
LAotICAgICAgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2Mjdf
KHYyNyksIHYyOF8odjI4KSwKLSAgICAgIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSkg
e30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyks
IHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRp
Y19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+
KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1
XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYy
Ml8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2
MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8p
fTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMSYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAg
Y29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3Qg
VDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhf
OwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsK
LSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsK
LSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsK
LSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsK
LSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsK
LSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsK
LSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsK
LSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBl
bmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwg
dHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAot
ICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQy
NCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFt
ZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlw
ZW5hbWUgVDMyPgotY2xhc3MgVmFsdWVBcnJheTMyIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkz
MihUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgs
IFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYx
NCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQy
MCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAg
ICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBU
MzIgdjMyKSA6IHYxXyh2MSksCi0gICAgICB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8o
djUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLAotICAgICAgdjEwXyh2MTAp
LCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwK
LSAgICAgIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2
MjApLCB2MjFfKHYyMSksCi0gICAgICB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2
MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLAotICAgICAgdjI4Xyh2MjgpLCB2MjlfKHYy
OSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMikge30KLQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzImIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0g
IGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0
IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4
XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87
Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87
Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187
Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87
Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187
Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87
Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87
Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87
Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0g
ICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMz4KLWNsYXNzIFZhbHVl
QXJyYXkzMyB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MzMoVDEgdjEsIFQyIHYyLCBUMyB2Mywg
VDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAs
IFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQx
NyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIy
LCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4
IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwKLSAgICAgIFQzMyB2MzMp
IDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwg
djdfKHY3KSwKLSAgICAgIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2
MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLAotICAgICAgdjE1Xyh2MTUpLCB2MTZfKHYx
NiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwKLSAgICAgIHYy
MV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZf
KHYyNiksCi0gICAgICB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBfKHYzMCks
IHYzMV8odjMxKSwgdjMyXyh2MzIpLAotICAgICAgdjMzXyh2MzMpIHt9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8
VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2
MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18p
LCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4o
djMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pfTsKLSAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJy
YXkzMyYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25z
dCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2
Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0g
IGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0g
IGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0g
IGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0g
IGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0g
IGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0g
IGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0g
IGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0g
IGNvbnN0IFQzMSB2MzFfOwotICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Pgot
Y2xhc3MgVmFsdWVBcnJheTM0IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkzNChUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAg
ICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwg
VDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2
MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBU
MjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMg
djMzLAotICAgICAgVDM0IHYzNCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQp
LCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEw
Xyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAg
ICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwg
djIwXyh2MjApLAotICAgICAgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2
MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwKLSAgICAgIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2
MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksCi0gICAgICB2MzNfKHYz
MyksIHYzNF8odjM0KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGlj
X2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEw
XyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwg
c3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYx
N18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5Xyks
IHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0
YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihh
cnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTM0
JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQz
IHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsK
LSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29u
c3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29u
c3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29u
c3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29u
c3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29u
c3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29u
c3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29u
c3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAgY29u
c3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsKLSAgY29u
c3QgVDM0IHYzNF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQx
OCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFt
ZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlw
ZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBl
bmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywg
dHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzU+Ci1jbGFzcyBWYWx1ZUFycmF5MzUgewotIHB1Ymxp
YzoKLSAgVmFsdWVBcnJheTM1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4
IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYy
NCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQz
MCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1
KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2Niks
Ci0gICAgICB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwg
djEyXyh2MTIpLCB2MTNfKHYxMyksCi0gICAgICB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2
MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLAotICAgICAgdjIwXyh2MjApLCB2
MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwKLSAg
ICAgIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzAp
LCB2MzFfKHYzMSksCi0gICAgICB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVf
KHYzNSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+
KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyks
IHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0
aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19j
YXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0
PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+
KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMz
XyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MzUmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQy
NyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQz
MCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQz
MyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcs
IHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUg
VDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBU
MzUsCi0gICAgdHlwZW5hbWUgVDM2PgotY2xhc3MgVmFsdWVBcnJheTM2IHsKLSBwdWJsaWM6Ci0g
IFZhbHVlQXJyYXkzNihUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgs
IFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQy
NSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMw
LCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNikgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLAotICAg
ICAgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYx
MSksIHYxMl8odjEyKSwKLSAgICAgIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYx
Nl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksCi0gICAgICB2MTlfKHYxOSksIHYyMF8odjIw
KSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLAotICAgICAgdjI1
Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8o
djMwKSwKLSAgICAgIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwg
djM1Xyh2MzUpLCB2MzZfKHYzNikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3Bl
cmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0g
e3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRp
Y19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0
PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+
KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIx
XyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYy
OF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyks
IHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2
MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJ
bihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNz
aWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJh
eTM2JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0
IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2
XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAg
Y29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAg
Y29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAg
Y29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAg
Y29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAg
Y29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAg
Y29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAg
Y29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAg
Y29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsKLSAg
Y29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBjb25zdCBUMzYgdjM2XzsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAg
ICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTks
IHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUg
VDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVu
YW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0
eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5
cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNz4KLWNsYXNzIFZhbHVl
QXJyYXkzNyB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MzcoVDEgdjEsIFQyIHYyLCBUMyB2Mywg
VDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAs
IFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQx
NyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIy
LCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4
IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAg
IFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcpIDogdjFfKHYxKSwgdjJfKHYyKSwg
djNfKHYzKSwgdjRfKHY0KSwKLSAgICAgIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2
OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLAotICAgICAgdjEyXyh2MTIpLCB2MTNf
KHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwKLSAgICAg
IHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2
MjNfKHYyMyksCi0gICAgICB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYy
NyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpLAotICAgICAgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYz
Ml8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksIHYzNV8odjM1KSwKLSAgICAgIHYzNl8odjM2
KSwgdjM3Xyh2MzcpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBh
cmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNf
Y2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxU
Pih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBf
KSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBz
dGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwg
c3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0
aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNf
Y2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKX07Ci0gICAg
cmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVt
ZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShj
b25zdCBWYWx1ZUFycmF5MzcmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQy
IHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsK
LSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29u
c3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0
IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0
IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0
IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0
IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0
IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0
IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0
IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0
IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0
IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQz
MiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFt
ZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4PgotY2xhc3MgVmFsdWVBcnJheTM4IHsK
LSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkzOChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUg
djUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwg
VDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAg
ICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMs
IFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkg
djI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwg
VDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2
M18odjMpLAotICAgICAgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4
KSwgdjlfKHY5KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18o
djEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKLSAgICAgIHYxN18odjE3KSwg
djE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCi0g
ICAgICB2MjNfKHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3
KSwgdjI4Xyh2MjgpLAotICAgICAgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMy
Xyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwKLSAgICAgIHYzNV8odjM1KSwgdjM2Xyh2MzYp
LCB2MzdfKHYzNyksIHYzOF8odjM4KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0
PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBf
KSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+
KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3
XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzOCYgb3RoZXIp
OwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0g
IGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0
IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2
MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2
MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2
MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2
MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2
MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2
MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2
MjhfOwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2
MzFfOwotICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2
MzRfOwotICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2
MzdfOwotICBjb25zdCBUMzggdjM4XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBl
bmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywg
dHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBU
MjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQy
NSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFt
ZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlw
ZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYs
IHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzk+Ci1jbGFzcyBWYWx1ZUFy
cmF5MzkgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTM5KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBU
MTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcg
djE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwg
VDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2
MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgICBU
MzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5KSA6IHYx
Xyh2MSksIHYyXyh2MiksCi0gICAgICB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYp
LCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAgICB2MTFfKHYxMSks
IHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLAot
ICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYy
MSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYy
Nl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCi0gICAgICB2MjlfKHYyOSksIHYzMF8odjMw
KSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLAotICAgICAgdjM1
Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLCB2MzlfKHYzOSkge30KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBz
dGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0
aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19j
YXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTM5JiBvdGhl
cik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsK
LSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29u
c3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEw
IHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEz
IHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2
IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5
IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIy
IHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1
IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4
IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAgY29uc3QgVDMx
IHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsKLSAgY29uc3QgVDM0
IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBjb25zdCBUMzYgdjM2XzsKLSAgY29uc3QgVDM3
IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBjb25zdCBUMzkgdjM5XzsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQz
NSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFt
ZSBUMzksIHR5cGVuYW1lIFQ0MD4KLWNsYXNzIFZhbHVlQXJyYXk0MCB7Ci0gcHVibGljOgotICBW
YWx1ZUFycmF5NDAoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcg
djcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2
MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBU
MTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUg
djI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwg
VDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2
MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDApIDogdjFfKHYxKSwKLSAgICAg
IHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4
Xyh2OCksIHY5Xyh2OSksCi0gICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAotICAgICAgdjE2Xyh2MTYpLCB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwKLSAgICAgIHYy
Ml8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2Mjdf
KHYyNyksCi0gICAgICB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSks
IHYzMl8odjMyKSwgdjMzXyh2MzMpLAotICAgICAgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8o
djM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5KSwKLSAgICAgIHY0MF8odjQwKSB7
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYy
OV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyks
IHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTQwJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25z
dCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2
NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0g
IGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBj
b25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBj
b25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBj
b25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBj
b25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBj
b25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBj
b25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBj
b25zdCBUMzAgdjMwXzsKLSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBj
b25zdCBUMzMgdjMzXzsKLSAgY29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBj
b25zdCBUMzYgdjM2XzsKLSAgY29uc3QgVDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBj
b25zdCBUMzkgdjM5XzsKLSAgY29uc3QgVDQwIHY0MF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0
eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQy
OCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFt
ZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlw
ZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBl
bmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxPgotY2xhc3MgVmFsdWVBcnJheTQxIHsKLSBwdWJs
aWM6Ci0gIFZhbHVlQXJyYXk0MShUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYx
MiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQx
OCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2
MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBU
MzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYz
NSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwKLSAgICAgIFQ0
MSB2NDEpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZf
KHY2KSwgdjdfKHY3KSwKLSAgICAgIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2
MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLAotICAgICAgdjE1Xyh2MTUpLCB2
MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwKLSAg
ICAgIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUp
LCB2MjZfKHYyNiksCi0gICAgICB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBf
KHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLAotICAgICAgdjMzXyh2MzMpLCB2MzRfKHYzNCks
IHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYzNyksIHYzOF8odjM4KSwKLSAgICAgIHYzOV8o
djM5KSwgdjQwXyh2NDApLCB2NDFfKHY0MSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0
aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19j
YXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0
PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2Fz
dDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+
KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5
XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5NDEmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQy
NyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQz
MCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQz
MyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQz
NiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQz
OSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcs
IHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUg
VDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBU
MzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5h
bWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDI+Ci1j
bGFzcyBWYWx1ZUFycmF5NDIgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTQyKFQxIHYxLCBUMiB2
MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAg
ICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYy
MSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQy
NyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2
MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBU
MzkgdjM5LCBUNDAgdjQwLCBUNDEgdjQxLAotICAgICAgVDQyIHY0MikgOiB2MV8odjEpLCB2Ml8o
djIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAg
djhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2
MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2
MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAgICAgdjIxXyh2MjEpLCB2MjJfKHYy
MiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwKLSAgICAgIHYy
N18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJf
KHYzMiksCi0gICAgICB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLCB2MzZfKHYzNiks
IHYzN18odjM3KSwgdjM4Xyh2MzgpLAotICAgICAgdjM5Xyh2MzkpLCB2NDBfKHY0MCksIHY0MV8o
djQxKSwgdjQyXyh2NDIpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBz
dGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwg
c3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0
aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNf
Y2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY0Ml8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRl
OgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0g
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MiYgb3RoZXIpOwotCi0gIGNvbnN0IFQx
IHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsK
LSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29u
c3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBU
MTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBU
MTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBU
MTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBU
MjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBU
MjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBU
MjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBU
MjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwotICBjb25zdCBU
MzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwotICBjb25zdCBU
MzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2MzdfOwotICBjb25zdCBU
MzggdjM4XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2NDBfOwotICBjb25zdCBU
NDEgdjQxXzsKLSAgY29uc3QgVDQyIHY0Ml87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBU
MTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5h
bWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFt
ZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlw
ZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIs
IHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUg
VDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBU
NDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0Mz4KLWNsYXNz
IFZhbHVlQXJyYXk0MyB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NDMoVDEgdjEsIFQyIHYyLCBU
MyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQx
MCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2
MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBU
MjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYy
NywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywK
LSAgICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2
MzksIFQ0MCB2NDAsIFQ0MSB2NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQzKSA6IHYxXyh2MSks
IHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksCi0gICAgICB2N18o
djcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksCi0gICAgICB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLAotICAgICAgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYy
Ml8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwKLSAgICAgIHYyNl8odjI2
KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSks
Ci0gICAgICB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8o
djM2KSwgdjM3Xyh2MzcpLAotICAgICAgdjM4Xyh2MzgpLCB2MzlfKHYzOSksIHY0MF8odjQwKSwg
djQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0
YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRp
Y19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nh
c3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyl9OwotICAgIHJl
dHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgVmFsdWVBcnJheTQzJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2
Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0g
IGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0
IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBU
MTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBU
MTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBU
MTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBU
MjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBU
MjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBU
MjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBU
MzAgdjMwXzsKLSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBU
MzMgdjMzXzsKLSAgY29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBjb25zdCBU
MzYgdjM2XzsKLSAgY29uc3QgVDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBjb25zdCBU
MzkgdjM5XzsKLSAgY29uc3QgVDQwIHY0MF87Ci0gIGNvbnN0IFQ0MSB2NDFfOwotICBjb25zdCBU
NDIgdjQyXzsKLSAgY29uc3QgVDQzIHY0M187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBU
MTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5h
bWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFt
ZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlw
ZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIs
IHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUg
VDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBU
NDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5h
bWUgVDQ0PgotY2xhc3MgVmFsdWVBcnJheTQ0IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0NChU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2
MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBU
MjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIg
djMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywg
VDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICAgIFQ0MiB2NDIsIFQ0MyB2
NDMsIFQ0NCB2NDQpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1
KSwKLSAgICAgIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwg
djExXyh2MTEpLCB2MTJfKHYxMiksCi0gICAgICB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2
MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLAotICAgICAgdjE5Xyh2MTkpLCB2
MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSwKLSAg
ICAgIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2Mjkp
LCB2MzBfKHYzMCksCi0gICAgICB2MzFfKHYzMSksIHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRf
KHYzNCksIHYzNV8odjM1KSwgdjM2Xyh2MzYpLAotICAgICAgdjM3Xyh2MzcpLCB2MzhfKHYzOCks
IHYzOV8odjM5KSwgdjQwXyh2NDApLCB2NDFfKHY0MSksIHY0Ml8odjQyKSwKLSAgICAgIHY0M18o
djQzKSwgdjQ0Xyh2NDQpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBz
dGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwg
c3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0
aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNf
Y2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0Xyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTQ0JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25z
dCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2
NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0g
IGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBj
b25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBj
b25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBj
b25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBj
b25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBj
b25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBj
b25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBj
b25zdCBUMzAgdjMwXzsKLSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBj
b25zdCBUMzMgdjMzXzsKLSAgY29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBj
b25zdCBUMzYgdjM2XzsKLSAgY29uc3QgVDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBj
b25zdCBUMzkgdjM5XzsKLSAgY29uc3QgVDQwIHY0MF87Ci0gIGNvbnN0IFQ0MSB2NDFfOwotICBj
b25zdCBUNDIgdjQyXzsKLSAgY29uc3QgVDQzIHY0M187Ci0gIGNvbnN0IFQ0NCB2NDRfOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUg
VDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1PgotY2xhc3MgVmFs
dWVBcnJheTQ1IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0NShUMSB2MSwgVDIgdjIsIFQzIHYz
LCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYx
MCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwg
VDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2
MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBU
MjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAg
ICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwg
VDQwIHY0MCwgVDQxIHY0MSwKLSAgICAgIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2
NDUpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwKLSAgICAgIHY1Xyh2NSks
IHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEp
LAotICAgICAgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZf
KHYxNiksIHYxN18odjE3KSwKLSAgICAgIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCks
IHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksCi0gICAgICB2MjRfKHYyNCksIHYyNV8o
djI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpLAotICAgICAg
djMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksIHYz
NV8odjM1KSwKLSAgICAgIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5
KSwgdjQwXyh2NDApLCB2NDFfKHY0MSksCi0gICAgICB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0
Xyh2NDQpLCB2NDVfKHY0NSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0
b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0
YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19j
YXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+
KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEy
XyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYx
OV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyks
IHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2
MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8p
LCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0
YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBz
dGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRp
Y19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTQ1JiBv
dGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYz
XzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAg
Y29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3Qg
VDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3Qg
VDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3Qg
VDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3Qg
VDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3Qg
VDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3Qg
VDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3Qg
VDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAgY29uc3Qg
VDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsKLSAgY29uc3Qg
VDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBjb25zdCBUMzYgdjM2XzsKLSAgY29uc3Qg
VDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBjb25zdCBUMzkgdjM5XzsKLSAgY29uc3Qg
VDQwIHY0MF87Ci0gIGNvbnN0IFQ0MSB2NDFfOwotICBjb25zdCBUNDIgdjQyXzsKLSAgY29uc3Qg
VDQzIHY0M187Ci0gIGNvbnN0IFQ0NCB2NDRfOwotICBjb25zdCBUNDUgdjQ1XzsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFt
ZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1l
IFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBl
bmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Miwg
dHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBU
NDY+Ci1jbGFzcyBWYWx1ZUFycmF5NDYgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTQ2KFQxIHYx
LCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjks
Ci0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUg
djE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwg
VDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2
MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIs
IFQzMyB2MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzgg
djM4LCBUMzkgdjM5LCBUNDAgdjQwLCBUNDEgdjQxLAotICAgICAgVDQyIHY0MiwgVDQzIHY0Mywg
VDQ0IHY0NCwgVDQ1IHY0NSwgVDQ2IHY0NikgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLAot
ICAgICAgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5
KSwgdjEwXyh2MTApLAotICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0
Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwKLSAgICAgIHYxN18odjE3KSwgdjE4Xyh2MTgp
LCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCi0gICAgICB2MjNf
KHYyMyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2
MjgpLAotICAgICAgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2
MzNfKHYzMyksIHYzNF8odjM0KSwKLSAgICAgIHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYz
NyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLCB2NDBfKHY0MCksCi0gICAgICB2NDFfKHY0MSksIHY0
Ml8odjQyKSwgdjQzXyh2NDMpLCB2NDRfKHY0NCksIHY0NV8odjQ1KSwgdjQ2Xyh2NDYpIHt9Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwg
c3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0
aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNf
Y2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2Fz
dDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDYmIG90
aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNf
OwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBj
b25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBU
MTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBU
MTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBU
MTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBU
MTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBU
MjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBU
MjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBU
MjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBU
MzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBU
MzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBU
MzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBU
NDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25zdCBU
NDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87Ci0gIGNvbnN0IFQ0NSB2NDVfOwotICBjb25zdCBU
NDYgdjQ2XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVu
YW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0
eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQy
MiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFt
ZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1l
IFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBl
bmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywg
dHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBU
NDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0
NSwKLSAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0Nz4KLWNsYXNzIFZhbHVlQXJyYXk0NyB7
Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NDcoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1
IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEs
IFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0g
ICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIz
LCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5
IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQs
IFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0
MSB2NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2
LCBUNDcgdjQ3KSA6IHYxXyh2MSksIHYyXyh2MiksCi0gICAgICB2M18odjMpLCB2NF8odjQpLCB2
NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0g
ICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1
KSwgdjE2Xyh2MTYpLAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIw
Xyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSwgdjI0Xyh2MjQp
LCB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCi0gICAgICB2Mjlf
KHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2
MzQpLAotICAgICAgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLCB2
MzlfKHYzOSksIHY0MF8odjQwKSwKLSAgICAgIHY0MV8odjQxKSwgdjQyXyh2NDIpLCB2NDNfKHY0
MyksIHY0NF8odjQ0KSwgdjQ1Xyh2NDUpLCB2NDZfKHY0NiksCi0gICAgICB2NDdfKHY0Nykge30K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYx
M18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1Xyks
IHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2
MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8p
LCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0
YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2Mjlf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBz
dGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRp
Y19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0
aWNfY2FzdDxUPih2NDFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19j
YXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKX07Ci0g
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5NDcmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0
IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1
XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAg
Y29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNv
bnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNv
bnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNv
bnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNv
bnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNv
bnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNv
bnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNv
bnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNv
bnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNv
bnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNv
bnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci0gIGNv
bnN0IFQ0MiB2NDJfOwotICBjb25zdCBUNDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87Ci0gIGNv
bnN0IFQ0NSB2NDVfOwotICBjb25zdCBUNDYgdjQ2XzsKLSAgY29uc3QgVDQ3IHY0N187Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBl
bmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwg
dHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBU
NDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5h
bWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OD4KLWNsYXNzIFZhbHVlQXJyYXk0OCB7
Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NDgoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1
IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEs
IFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0g
ICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIz
LCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5
IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQs
IFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0
MSB2NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2
LCBUNDcgdjQ3LCBUNDggdjQ4KSA6IHYxXyh2MSksCi0gICAgICB2Ml8odjIpLCB2M18odjMpLCB2
NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLAotICAg
ICAgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCks
IHYxNV8odjE1KSwKLSAgICAgIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8o
djE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksCi0gICAgICB2MjJfKHYyMiksIHYyM18odjIzKSwg
djI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLAotICAgICAgdjI4Xyh2
MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMz
KSwKLSAgICAgIHYzNF8odjM0KSwgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4
Xyh2MzgpLCB2MzlfKHYzOSksCi0gICAgICB2NDBfKHY0MCksIHY0MV8odjQxKSwgdjQyXyh2NDIp
LCB2NDNfKHY0MyksIHY0NF8odjQ0KSwgdjQ1Xyh2NDUpLAotICAgICAgdjQ2Xyh2NDYpLCB2NDdf
KHY0NyksIHY0OF8odjQ4KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRv
ciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3Rh
dGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4o
djEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJf
KSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+
KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5
XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYy
Nl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4Xyks
IHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0
YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRp
Y19jYXN0PFQ+KHY0N18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDhfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5NDgmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQy
NyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQz
MCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQz
MyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQz
NiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQz
OSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci0gIGNvbnN0IFQ0
MiB2NDJfOwotICBjb25zdCBUNDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87Ci0gIGNvbnN0IFQ0
NSB2NDVfOwotICBjb25zdCBUNDYgdjQ2XzsKLSAgY29uc3QgVDQ3IHY0N187Ci0gIGNvbnN0IFQ0
OCB2NDhfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1l
IFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUg
VDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVu
YW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0
eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0
MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1
LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1l
IFQ0OT4KLWNsYXNzIFZhbHVlQXJyYXk0OSB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NDkoVDEg
djEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2
OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQx
NSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIw
LCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2
IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYz
MiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQz
OCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQz
LCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2LCBUNDcgdjQ3LCBUNDggdjQ4LAotICAgICAgVDQ5
IHY0OSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8o
djYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYx
MSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYx
Nl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAg
ICAgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSks
IHYyNl8odjI2KSwKLSAgICAgIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8o
djMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksCi0gICAgICB2MzNfKHYzMyksIHYzNF8odjM0KSwg
djM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLAotICAgICAgdjM5Xyh2
MzkpLCB2NDBfKHY0MCksIHY0MV8odjQxKSwgdjQyXyh2NDIpLCB2NDNfKHY0MyksIHY0NF8odjQ0
KSwKLSAgICAgIHY0NV8odjQ1KSwgdjQ2Xyh2NDYpLCB2NDdfKHY0NyksIHY0OF8odjQ4KSwgdjQ5
Xyh2NDkpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nh
c3Q8VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
M18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8
VD4odjM4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2
NDBfKSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8p
LCBzdGF0aWNfY2FzdDxUPih2NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0NV8pLCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4o
djQ3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0OF8pLCBzdGF0aWNfY2FzdDxUPih2NDlf
KX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDkmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0g
IGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0
IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4
XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87
Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87
Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187
Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87
Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187
Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87
Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87
Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87
Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87
Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87
Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87
Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25zdCBUNDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87
Ci0gIGNvbnN0IFQ0NSB2NDVfOwotICBjb25zdCBUNDYgdjQ2XzsKLSAgY29uc3QgVDQ3IHY0N187
Ci0gIGNvbnN0IFQ0OCB2NDhfOwotICBjb25zdCBUNDkgdjQ5XzsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAg
ICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzks
IHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUg
VDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBUNDYsIHR5cGVu
YW1lIFQ0NywgdHlwZW5hbWUgVDQ4LCB0eXBlbmFtZSBUNDksIHR5cGVuYW1lIFQ1MD4KLWNsYXNz
IFZhbHVlQXJyYXk1MCB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5NTAoVDEgdjEsIFQyIHYyLCBU
MyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQx
MCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2
MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBU
MjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYy
NywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywK
LSAgICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2
MzksIFQ0MCB2NDAsIFQ0MSB2NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBU
NDUgdjQ1LCBUNDYgdjQ2LCBUNDcgdjQ3LCBUNDggdjQ4LCBUNDkgdjQ5LAotICAgICAgVDUwIHY1
MCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYp
LCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSks
IHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8o
djE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAgICAg
djIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYy
Nl8odjI2KSwKLSAgICAgIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMw
KSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksCi0gICAgICB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1
Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLAotICAgICAgdjM5Xyh2Mzkp
LCB2NDBfKHY0MCksIHY0MV8odjQxKSwgdjQyXyh2NDIpLCB2NDNfKHY0MyksIHY0NF8odjQ0KSwK
LSAgICAgIHY0NV8odjQ1KSwgdjQ2Xyh2NDYpLCB2NDdfKHY0NyksIHY0OF8odjQ4KSwgdjQ5Xyh2
NDkpLCB2NTBfKHY1MCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRp
Y19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0
PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYx
MF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyks
IHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2
MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8p
LCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0
YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBz
dGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0
aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19j
YXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2NDdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ4XyksIHN0YXRpY19jYXN0
PFQ+KHY0OV8pLCBzdGF0aWNfY2FzdDxUPih2NTBfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NTAm
IG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMg
djNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwot
ICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25z
dCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25z
dCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25z
dCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25z
dCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25z
dCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25z
dCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25z
dCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25z
dCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25z
dCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25z
dCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25z
dCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25z
dCBUNDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87Ci0gIGNvbnN0IFQ0NSB2NDVfOwotICBjb25z
dCBUNDYgdjQ2XzsKLSAgY29uc3QgVDQ3IHY0N187Ci0gIGNvbnN0IFQ0OCB2NDhfOwotICBjb25z
dCBUNDkgdjQ5XzsKLSAgY29uc3QgVDUwIHY1MF87Ci19OwotCi0jIGlmIEdURVNUX0hBU19DT01C
SU5FCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RF
LgotLy8KLS8vIEdlbmVyYXRlcyB2YWx1ZXMgZnJvbSB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2Yg
dmFsdWVzIHByb2R1Y2VkCi0vLyBieSB0aGUgYXJndW1lbnQgZ2VuZXJhdG9ycy4KLS8vCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjIKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5n
Ojp0dXBsZTxUMSwgVDI+ID4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxl
PFQxLCBUMj4gUGFyYW1UeXBlOwotCi0gIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyKGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4m
IGcyKQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpIHt9Ci0gIHZpcnR1YWwgfkNhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3IyKCkge30KLQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8
UGFyYW1UeXBlPiogQmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlz
LCBnMV8sIGcxXy5iZWdpbigpLCBnMl8sIGcyXy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVy
biBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpKTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+IHsKLSAgIHB1YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQx
Pjo6aXRlcmF0b3ImIGN1cnJlbnQxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBn
MiwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1
cnJlbnQyKQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2luMV8oZzEuYmVn
aW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAgICAgICAgICBi
ZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50Mikg
ICAgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5J
dGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87
Ci0gICAgfQotICAgIC8vIEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9m
LXJhbmdlIGl0ZXJhdG9ycwotICAgIC8vIHNvIG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBi
ZSBiZXlvbmQgZW5kIG9mIHJhbmdlLCBlaXRoZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2Uo
KSB7Ci0gICAgICBhc3NlcnQoIUF0RW5kKCkpOwotICAgICAgKytjdXJyZW50Ml87Ci0gICAgICBp
ZiAoY3VycmVudDJfID09IGVuZDJfKSB7Ci0gICAgICAgIGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0g
ICAgICAgICsrY3VycmVudDFfOwotICAgICAgfQotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgp
OwotICAgIH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiog
Q2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9
Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAm
Y3VycmVudF92YWx1ZV87IH0KLSAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmlu
ZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAg
ICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0g
ICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3Io
KSkKLSAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0
b3JzICIKLSAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBlZF9vdGhlciA9Ci0gICAgICAgICAgQ2hl
Y2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIpOwotICAgICAg
Ly8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlv
bmQgdGhlaXIKLSAgICAgIC8vIHJlc3BlY3RpdmUgcmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4g
YSB2YXJpZXR5IG9mIGZhc2hpb25zLAotICAgICAgLy8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0
RW5kKCkuCi0gICAgICByZXR1cm4gKEF0RW5kKCkgJiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8
Ci0gICAgICAgICAoCi0gICAgICAgICAgY3VycmVudDFfID09IHR5cGVkX290aGVyLT5jdXJyZW50
MV8gJiYKLSAgICAgICAgICBjdXJyZW50Ml8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQyXyk7Ci0g
ICAgfQotCi0gICBwcml2YXRlOgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikK
LSAgICAgICAgOiBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8ob3RoZXIuYmVn
aW4xXyksCi0gICAgICAgIGVuZDFfKG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3VycmVudDFfKG90
aGVyLmN1cnJlbnQxXyksCi0gICAgICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyksCi0gICAgICAg
IGVuZDJfKG90aGVyLmVuZDJfKSwKLSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1cnJlbnQyXykg
ewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0
ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92
YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXyk7Ci0gICAgfQotICAgIGJv
b2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0
IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9u
ZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJl
dHVybgotICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1cnJlbnQy
XyA9PSBlbmQyXzsKLSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90
aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNv
bnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGgg
cmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhl
IGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQy
Pjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKLSAg
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyOjpJdGVyYXRvcgotCi0gIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjImIG90aGVyKTsKLQotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4g
ZzJfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IyCi0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1jbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMwotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+ID4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDM+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMyhjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMykKLSAg
ICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSB7fQotICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yMygpIHt9Ci0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIEJlZ2luKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhp
cywgZzFfLCBnMV8uYmVnaW4oKSwgZzJfLCBnMl8uYmVnaW4oKSwgZzNfLAotICAgICAgICBnM18u
YmVnaW4oKSk7Ci0gIH0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlw
ZT4qIEVuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFf
LmVuZCgpLCBnMl8sIGcyXy5lbmQoKSwgZzNfLCBnM18uZW5kKCkpOwotICB9Ci0KLSBwcml2YXRl
OgotICBjbGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFt
VHlwZT4gewotICAgcHVibGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPFBhcmFtVHlwZT4qIGJhc2UsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4m
IGcxLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYg
Y3VycmVudDEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAotICAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIsCi0gICAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciYgY3VycmVudDMpCi0gICAgICAgIDogYmFzZV8oYmFz
ZSksCi0gICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5kKCkpLCBjdXJy
ZW50MV8oY3VycmVudDEpLAotICAgICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSksIGVuZDJfKGcy
LmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSwKLSAgICAgICAgICBiZWdpbjNfKGczLmJlZ2lu
KCkpLCBlbmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhjdXJyZW50MykgICAgewotICAgICAgQ29t
cHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0K
LSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJh
c2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8v
IEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9y
cwotICAgIC8vIHNvIG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9m
IHJhbmdlLCBlaXRoZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3Nl
cnQoIUF0RW5kKCkpOwotICAgICAgKytjdXJyZW50M187Ci0gICAgICBpZiAoY3VycmVudDNfID09
IGVuZDNfKSB7Ci0gICAgICAgIGN1cnJlbnQzXyA9IGJlZ2luM187Ci0gICAgICAgICsrY3VycmVu
dDJfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQyXyA9PSBlbmQyXykgewotICAgICAgICBj
dXJyZW50Ml8gPSBiZWdpbjJfOwotICAgICAgICArK2N1cnJlbnQxXzsKLSAgICAgIH0KLSAgICAg
IENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9y
SW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3QgewotICAgICAgcmV0dXJuIG5ldyBJ
dGVyYXRvcigqdGhpcyk7Ci0gICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJy
ZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVfOyB9Ci0gICAgdmlydHVhbCBib29s
IEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBj
b25zdCB7Ci0gICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVl
cyB0aGF0IHRoZSBvdGhlcgotICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBh
bmQgd2UgY2FuIGRvd25jYXN0LgotICAgICAgR1RFU1RfQ0hFQ0tfKEJhc2VHZW5lcmF0b3IoKSA9
PSBvdGhlci5CYXNlR2VuZXJhdG9yKCkpCi0gICAgICAgICAgPDwgIlRoZSBwcm9ncmFtIGF0dGVt
cHRlZCB0byBjb21wYXJlIGl0ZXJhdG9ycyAiCi0gICAgICAgICAgPDwgImZyb20gZGlmZmVyZW50
IGdlbmVyYXRvcnMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICBjb25zdCBJdGVyYXRvciogdHlwZWRf
b3RoZXIgPQotICAgICAgICAgIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVy
YXRvcj4oJm90aGVyKTsKLSAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9ycyBlcXVhbCBp
ZiB0aGV5IGJvdGggcG9pbnQgYmV5b25kIHRoZWlyCi0gICAgICAvLyByZXNwZWN0aXZlIHJhbmdl
cy4gVGhhdCBjYW4gaGFwcGVuIGluIGEgdmFyaWV0eSBvZiBmYXNoaW9ucywKLSAgICAgIC8vIHNv
IHdlIGhhdmUgdG8gY29uc3VsdCBBdEVuZCgpLgotICAgICAgcmV0dXJuIChBdEVuZCgpICYmIHR5
cGVkX290aGVyLT5BdEVuZCgpKSB8fAotICAgICAgICAgKAotICAgICAgICAgIGN1cnJlbnQxXyA9
PSB0eXBlZF9vdGhlci0+Y3VycmVudDFfICYmCi0gICAgICAgICAgY3VycmVudDJfID09IHR5cGVk
X290aGVyLT5jdXJyZW50Ml8gJiYKLSAgICAgICAgICBjdXJyZW50M18gPT0gdHlwZWRfb3RoZXIt
PmN1cnJlbnQzXyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0
ZXJhdG9yJiBvdGhlcikKLSAgICAgICAgOiBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgIGJl
Z2luMV8ob3RoZXIuYmVnaW4xXyksCi0gICAgICAgIGVuZDFfKG90aGVyLmVuZDFfKSwKLSAgICAg
ICAgY3VycmVudDFfKG90aGVyLmN1cnJlbnQxXyksCi0gICAgICAgIGJlZ2luMl8ob3RoZXIuYmVn
aW4yXyksCi0gICAgICAgIGVuZDJfKG90aGVyLmVuZDJfKSwKLSAgICAgICAgY3VycmVudDJfKG90
aGVyLmN1cnJlbnQyXyksCi0gICAgICAgIGJlZ2luM18ob3RoZXIuYmVnaW4zXyksCi0gICAgICAg
IGVuZDNfKG90aGVyLmVuZDNfKSwKLSAgICAgICAgY3VycmVudDNfKG90aGVyLmN1cnJlbnQzXykg
ewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0
ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92
YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXyk7Ci0g
ICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBp
dGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAg
ICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5n
ZS4KLSAgICAgIHJldHVybgotICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAg
ICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAotICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXzsK
LSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwot
ICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJ
dGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2
ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6
aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46
Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0
b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRl
cmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3Ig
Y3VycmVudDJfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0
b3IgYmVnaW4zXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGVuZDNfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3Vy
cmVudDNfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKLSAgfTsgIC8vIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzOjpJdGVyYXRvcgotCi0gIC8vIE5vIGltcGxlbWVudGF0
aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMmIG90aGVyKTsKLQotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMz4gZzNfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3IzCi0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0PgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQKLSAgICA6
IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIs
IFQzLCBUND4gPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQy
LCBUMywgVDQ+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNChjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+
JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQ0PiYgZzQpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0Xyhn
NCkge30KLSAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQoKSB7fQotCi0gIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsK
LSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJf
LmJlZ2luKCksIGczXywKLSAgICAgICAgZzNfLmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCkpOwot
ICB9Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJf
LCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQoKSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgUGFy
YW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKLSAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
MT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYg
ZzIsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yJiBj
dXJyZW50MiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBjdXJyZW50MywKLSAgICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yJiBjdXJyZW50NCkKLSAgICAgICAgOiBiYXNlXyhiYXNl
KSwKLSAgICAgICAgICBiZWdpbjFfKGcxLmJlZ2luKCkpLCBlbmQxXyhnMS5lbmQoKSksIGN1cnJl
bnQxXyhjdXJyZW50MSksCi0gICAgICAgICAgYmVnaW4yXyhnMi5iZWdpbigpKSwgZW5kMl8oZzIu
ZW5kKCkpLCBjdXJyZW50Ml8oY3VycmVudDIpLAotICAgICAgICAgIGJlZ2luM18oZzMuYmVnaW4o
KSksIGVuZDNfKGczLmVuZCgpKSwgY3VycmVudDNfKGN1cnJlbnQzKSwKLSAgICAgICAgICBiZWdp
bjRfKGc0LmJlZ2luKCkpLCBlbmQ0XyhnNC5lbmQoKSksIGN1cnJlbnQ0XyhjdXJyZW50NCkgICAg
ewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JdGVy
YXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBh
cmFtVHlwZT4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0g
ICAgfQotICAgIC8vIEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9mLXJh
bmdlIGl0ZXJhdG9ycwotICAgIC8vIHNvIG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBiZSBi
ZXlvbmQgZW5kIG9mIHJhbmdlLCBlaXRoZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7
Ci0gICAgICBhc3NlcnQoIUF0RW5kKCkpOwotICAgICAgKytjdXJyZW50NF87Ci0gICAgICBpZiAo
Y3VycmVudDRfID09IGVuZDRfKSB7Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAg
ICAgICsrY3VycmVudDNfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykg
ewotICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAg
ICAgIH0KLSAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJf
ID0gYmVnaW4yXzsKLSAgICAgICAgKytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRl
Q3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMo
Y29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3Qgewot
ICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0
aGUgb3RoZXIKLSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNh
biBkb3duY2FzdC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIu
QmFzZUdlbmVyYXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8g
Y29tcGFyZSBpdGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0
b3JzLiIgPDwgc3RkOjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0K
LSAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZv
dGhlcik7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBi
b3RoIHBvaW50IGJleW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQg
Y2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZl
IHRvIGNvbnN1bHQgQXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhl
ci0+QXRFbmQoKSkgfHwKLSAgICAgICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRf
b3RoZXItPmN1cnJlbnQxXyAmJgotICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+
Y3VycmVudDJfICYmCi0gICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50
M18gJiYKLSAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0Xyk7Ci0g
ICAgfQotCi0gICBwcml2YXRlOgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikK
LSAgICAgICAgOiBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8ob3RoZXIuYmVn
aW4xXyksCi0gICAgICAgIGVuZDFfKG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3VycmVudDFfKG90
aGVyLmN1cnJlbnQxXyksCi0gICAgICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyksCi0gICAgICAg
IGVuZDJfKG90aGVyLmVuZDJfKSwKLSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1cnJlbnQyXyks
Ci0gICAgICAgIGJlZ2luM18ob3RoZXIuYmVnaW4zXyksCi0gICAgICAgIGVuZDNfKG90aGVyLmVu
ZDNfKSwKLSAgICAgICAgY3VycmVudDNfKG90aGVyLmN1cnJlbnQzXyksCi0gICAgICAgIGJlZ2lu
NF8ob3RoZXIuYmVnaW40XyksCi0gICAgICAgIGVuZDRfKG90aGVyLmVuZDRfKSwKLSAgICAgICAg
Y3VycmVudDRfKG90aGVyLmN1cnJlbnQ0XykgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgp
OwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICgh
QXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywg
KmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8pOwotICAgIH0K
LSAgICBib29sIEF0RW5kKCkgY29uc3QgewotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0
b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKLSAgICAgIC8v
IGNvbXBvbmVudCBpdGVyYXRvcnMgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiBpdHMgcmFuZ2UuCi0g
ICAgICByZXR1cm4KLSAgICAgICAgICBjdXJyZW50MV8gPT0gZW5kMV8gfHwKLSAgICAgICAgICBj
dXJyZW50Ml8gPT0gZW5kMl8gfHwKLSAgICAgICAgICBjdXJyZW50M18gPT0gZW5kM18gfHwKLSAg
ICAgICAgICBjdXJyZW50NF8gPT0gZW5kNF87Ci0gICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IEl0ZXJhdG9yJiBvdGhlcik7Ci0KLSAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBjb25zdCBiYXNlXzsKLSAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8g
ZGVmaW5lIHRoZSBpLXRoIHJhbmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1
cnJlbnRbaV1fIGlzIHRoZSBhY3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1cnJlbnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGJlZ2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBlbmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUND46Oml0ZXJhdG9yIGN1cnJlbnQ0XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92
YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNDo6SXRlcmF0
b3IKLQotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQu
Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0JiBvdGhl
cik7Ci0KLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+IGcxXzsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDI+IGcyXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+IGczXzsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDQ+IGc0XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNAotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiBQYXJhbVR5cGU7Ci0KLSAgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjUoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMs
Ci0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LCBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUNT4mIGc1KQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBn
NV8oZzUpIHt9Ci0gIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1KCkge30KLQot
ICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmVnaW4oKSBjb25z
dCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5iZWdpbigpLCBnMl8s
IGcyXy5iZWdpbigpLCBnM18sCi0gICAgICAgIGczXy5iZWdpbigpLCBnNF8sIGc0Xy5iZWdpbigp
LCBnNV8sIGc1Xy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZh
Y2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhp
cywgZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSwKLSAgICAg
ICAgZzRfLCBnNF8uZW5kKCksIGc1XywgZzVfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
Y2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
IHsKLSAgIHB1YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwK
LSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJl
bnQxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKLSAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDQ+JiBnNCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRl
cmF0b3ImIGN1cnJlbnQ0LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKLSAg
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJlbnQ1
KQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSks
IGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAgICAgICAgICBiZWdpbjJf
KGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50MiksCi0gICAg
ICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3Vy
cmVudDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwg
Y3VycmVudDRfKGN1cnJlbnQ0KSwKLSAgICAgICAgICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1
XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50NSkgICAgewotICAgICAgQ29tcHV0ZUN1cnJl
bnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0
dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJhc2VHZW5lcmF0
b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8vIEFkdmFuY2Ug
c2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9ycwotICAgIC8v
IHNvIG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9mIHJhbmdlLCBl
aXRoZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3NlcnQoIUF0RW5k
KCkpOwotICAgICAgKytjdXJyZW50NV87Ci0gICAgICBpZiAoY3VycmVudDVfID09IGVuZDVfKSB7
Ci0gICAgICAgIGN1cnJlbnQ1XyA9IGJlZ2luNV87Ci0gICAgICAgICsrY3VycmVudDRfOwotICAg
ICAgfQotICAgICAgaWYgKGN1cnJlbnQ0XyA9PSBlbmQ0XykgewotICAgICAgICBjdXJyZW50NF8g
PSBiZWdpbjRfOwotICAgICAgICArK2N1cnJlbnQzXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJy
ZW50M18gPT0gZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKLSAgICAgICAg
KytjdXJyZW50Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7Ci0g
ICAgICAgIGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAgICsrY3VycmVudDFfOwotICAgICAg
fQotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1
cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5
cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KLSAgICB2aXJ0
dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYg
b3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBn
dWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2Ft
ZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVy
YXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhlIHByb2dy
YW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAiZnJvbSBk
aWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJhdG9y
KiB0eXBlZF9vdGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNv
bnN0IEl0ZXJhdG9yPigmb3RoZXIpOwotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3Jz
IGVxdWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhlaXIKLSAgICAgIC8vIHJlc3BlY3Rp
dmUgcmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAotICAg
ICAgLy8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCkuCi0gICAgICByZXR1cm4gKEF0RW5k
KCkgJiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAgICAgICAoCi0gICAgICAgICAgY3Vy
cmVudDFfID09IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYKLSAgICAgICAgICBjdXJyZW50Ml8g
PT0gdHlwZWRfb3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAgICAgIGN1cnJlbnQzXyA9PSB0eXBl
ZF9vdGhlci0+Y3VycmVudDNfICYmCi0gICAgICAgICAgY3VycmVudDRfID09IHR5cGVkX290aGVy
LT5jdXJyZW50NF8gJiYKLSAgICAgICAgICBjdXJyZW50NV8gPT0gdHlwZWRfb3RoZXItPmN1cnJl
bnQ1Xyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9y
JiBvdGhlcikKLSAgICAgICAgOiBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8o
b3RoZXIuYmVnaW4xXyksCi0gICAgICAgIGVuZDFfKG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3Vy
cmVudDFfKG90aGVyLmN1cnJlbnQxXyksCi0gICAgICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyks
Ci0gICAgICAgIGVuZDJfKG90aGVyLmVuZDJfKSwKLSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1
cnJlbnQyXyksCi0gICAgICAgIGJlZ2luM18ob3RoZXIuYmVnaW4zXyksCi0gICAgICAgIGVuZDNf
KG90aGVyLmVuZDNfKSwKLSAgICAgICAgY3VycmVudDNfKG90aGVyLmN1cnJlbnQzXyksCi0gICAg
ICAgIGJlZ2luNF8ob3RoZXIuYmVnaW40XyksCi0gICAgICAgIGVuZDRfKG90aGVyLmVuZDRfKSwK
LSAgICAgICAgY3VycmVudDRfKG90aGVyLmN1cnJlbnQ0XyksCi0gICAgICAgIGJlZ2luNV8ob3Ro
ZXIuYmVnaW41XyksCi0gICAgICAgIGVuZDVfKG90aGVyLmVuZDVfKSwKLSAgICAgICAgY3VycmVu
dDVfKG90aGVyLmN1cnJlbnQ1XykgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAg
IH0KLQotICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICghQXRFbmQo
KSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJl
bnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8pOwot
ICAgIH0KLSAgICBib29sIEF0RW5kKCkgY29uc3QgewotICAgICAgLy8gV2UgbXVzdCByZXBvcnQg
aXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKLSAg
ICAgIC8vIGNvbXBvbmVudCBpdGVyYXRvcnMgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiBpdHMgcmFu
Z2UuCi0gICAgICByZXR1cm4KLSAgICAgICAgICBjdXJyZW50MV8gPT0gZW5kMV8gfHwKLSAgICAg
ICAgICBjdXJyZW50Ml8gPT0gZW5kMl8gfHwKLSAgICAgICAgICBjdXJyZW50M18gPT0gZW5kM18g
fHwKLSAgICAgICAgICBjdXJyZW50NF8gPT0gZW5kNF8gfHwKLSAgICAgICAgICBjdXJyZW50NV8g
PT0gZW5kNV87Ci0gICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cik7Ci0KLSAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBjb25z
dCBiYXNlXzsKLSAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVmaW5lIHRoZSBpLXRoIHJh
bmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1cnJlbnRbaV1fIGlzIHRoZSBh
Y3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMT46Oml0ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDE+OjppdGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
MT46Oml0ZXJhdG9yIGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUMj46Oml0ZXJhdG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDI+OjppdGVyYXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46
Oml0ZXJhdG9yIGN1cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Mz46Oml0ZXJhdG9yIGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDM+OjppdGVyYXRvciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0
ZXJhdG9yIGN1cnJlbnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46
Oml0ZXJhdG9yIGJlZ2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+
OjppdGVyYXRvciBlbmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJh
dG9yIGN1cnJlbnQ0XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0
ZXJhdG9yIGJlZ2luNV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+Ojpp
dGVyYXRvciBlbmQ1XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9y
IGN1cnJlbnQ1XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFz
cyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNTo6SXRlcmF0b3IKLQotICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1JiBvdGhlcik7Ci0KLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDE+IGcxXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+IGcyXzsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+IGczXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+IGc0
XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+IGc1XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yNQotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUg
VDY+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNgotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwK
LSAgICAgICAgVDY+ID4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDY+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yNihjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDI+JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUs
Ci0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4mIGc2KQotICAgICAgOiBnMV8oZzEpLCBn
Ml8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpIHt9Ci0gIHZpcnR1YWwg
fkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KCkge30KLQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0
b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJ
dGVyYXRvcih0aGlzLCBnMV8sIGcxXy5iZWdpbigpLCBnMl8sIGcyXy5iZWdpbigpLCBnM18sCi0g
ICAgICAgIGczXy5iZWdpbigpLCBnNF8sIGc0Xy5iZWdpbigpLCBnNV8sIGc1Xy5iZWdpbigpLCBn
Nl8sIGc2Xy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8
UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywg
ZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSwKLSAgICAgICAg
ZzRfLCBnNF8uZW5kKCksIGc1XywgZzVfLmVuZCgpLCBnNl8sIGc2Xy5lbmQoKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZh
Y2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0
ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsCi0g
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yJiBjdXJyZW50
MiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBjdXJyZW50MywKLSAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUND46Oml0ZXJhdG9yJiBjdXJyZW50NCwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ1PiYgZzUsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJh
dG9yJiBjdXJyZW50NSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsCi0gICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yJiBjdXJyZW50NikK
LSAgICAgICAgOiBiYXNlXyhiYXNlKSwKLSAgICAgICAgICBiZWdpbjFfKGcxLmJlZ2luKCkpLCBl
bmQxXyhnMS5lbmQoKSksIGN1cnJlbnQxXyhjdXJyZW50MSksCi0gICAgICAgICAgYmVnaW4yXyhn
Mi5iZWdpbigpKSwgZW5kMl8oZzIuZW5kKCkpLCBjdXJyZW50Ml8oY3VycmVudDIpLAotICAgICAg
ICAgIGJlZ2luM18oZzMuYmVnaW4oKSksIGVuZDNfKGczLmVuZCgpKSwgY3VycmVudDNfKGN1cnJl
bnQzKSwKLSAgICAgICAgICBiZWdpbjRfKGc0LmJlZ2luKCkpLCBlbmQ0XyhnNC5lbmQoKSksIGN1
cnJlbnQ0XyhjdXJyZW50NCksCi0gICAgICAgICAgYmVnaW41XyhnNS5iZWdpbigpKSwgZW5kNV8o
ZzUuZW5kKCkpLCBjdXJyZW50NV8oY3VycmVudDUpLAotICAgICAgICAgIGJlZ2luNl8oZzYuYmVn
aW4oKSksIGVuZDZfKGc2LmVuZCgpKSwgY3VycmVudDZfKGN1cnJlbnQ2KSAgICB7Ci0gICAgICBD
b21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30K
LQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiog
QmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBiYXNlXzsKLSAgICB9Ci0gICAg
Ly8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0
b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQg
b2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIGFz
c2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJlbnQ2XzsKLSAgICAgIGlmIChjdXJyZW50Nl8g
PT0gZW5kNl8pIHsKLSAgICAgICAgY3VycmVudDZfID0gYmVnaW42XzsKLSAgICAgICAgKytjdXJy
ZW50NV87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDVfID09IGVuZDVfKSB7Ci0gICAgICAg
IGN1cnJlbnQ1XyA9IGJlZ2luNV87Ci0gICAgICAgICsrY3VycmVudDRfOwotICAgICAgfQotICAg
ICAgaWYgKGN1cnJlbnQ0XyA9PSBlbmQ0XykgewotICAgICAgICBjdXJyZW50NF8gPSBiZWdpbjRf
OwotICAgICAgICArK2N1cnJlbnQzXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50M18gPT0g
ZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKLSAgICAgICAgKytjdXJyZW50
Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7Ci0gICAgICAgIGN1
cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAgICsrY3VycmVudDFfOwotICAgICAgfQotICAgICAg
Q29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IEl0
ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJl
bnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KLSAgICB2aXJ0dWFsIGJvb2wg
RXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNv
bnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVz
IHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFu
ZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigpID09
IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1w
dGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJlbnQg
Z2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBlZF9v
dGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJh
dG9yPigmb3RoZXIpOwotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFsIGlm
IHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhlaXIKLSAgICAgIC8vIHJlc3BlY3RpdmUgcmFuZ2Vz
LiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAotICAgICAgLy8gc28g
d2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCkuCi0gICAgICByZXR1cm4gKEF0RW5kKCkgJiYgdHlw
ZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAgICAgICAoCi0gICAgICAgICAgY3VycmVudDFfID09
IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYKLSAgICAgICAgICBjdXJyZW50Ml8gPT0gdHlwZWRf
b3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAgICAgIGN1cnJlbnQzXyA9PSB0eXBlZF9vdGhlci0+
Y3VycmVudDNfICYmCi0gICAgICAgICAgY3VycmVudDRfID09IHR5cGVkX290aGVyLT5jdXJyZW50
NF8gJiYKLSAgICAgICAgICBjdXJyZW50NV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ1XyAmJgot
ICAgICAgICAgIGN1cnJlbnQ2XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDZfKTsKLSAgICB9Ci0K
LSAgIHByaXZhdGU6Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAg
ICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwK
LSAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3Vy
cmVudDFfKSwKLSAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8o
b3RoZXIuZW5kMl8pLAotICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAg
ICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAot
ICAgICAgICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKLSAgICAgICAgYmVnaW40XyhvdGhl
ci5iZWdpbjRfKSwKLSAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAotICAgICAgICBjdXJyZW50
NF8ob3RoZXIuY3VycmVudDRfKSwKLSAgICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKLSAg
ICAgICAgZW5kNV8ob3RoZXIuZW5kNV8pLAotICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVu
dDVfKSwKLSAgICAgICAgYmVnaW42XyhvdGhlci5iZWdpbjZfKSwKLSAgICAgICAgZW5kNl8ob3Ro
ZXIuZW5kNl8pLAotICAgICAgICBjdXJyZW50Nl8ob3RoZXIuY3VycmVudDZfKSB7Ci0gICAgICBD
b21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVudFZh
bHVlKCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBh
cmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAg
KmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2Xyk7Ci0gICAgfQotICAgIGJvb2wgQXRF
bmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBl
bmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0
ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgot
ICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1cnJlbnQyXyA9PSBl
bmQyXyB8fAotICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAotICAgICAgICAgIGN1cnJl
bnQ0XyA9PSBlbmQ0XyB8fAotICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XyB8fAotICAgICAg
ICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XzsKLSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRhdGlv
biAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
SXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBh
cmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZp
bmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVu
dFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwotICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2
Pjo6aXRlcmF0b3IgY3VycmVudDZfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKLSAg
fTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2OjpJdGVyYXRvcgotCi0gIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYmIG90aGVyKTsKLQotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4g
ZzJfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUND4gZzRfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUNj4gZzZfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I2Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDc+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNwotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsCi0gICAgICAgIFQ3PiA+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gUGFyYW1UeXBlOwotCi0gIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I3KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLAot
ICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDU+JiBnNSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQ3PiYgZzcpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0
XyhnNCksIGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNykge30KLSAgdmlydHVhbCB+Q2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjcoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRo
aXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAgZzNf
LmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJl
Z2luKCksIGc3XywKLSAgICAgICAgZzdfLmJlZ2luKCkpOwotICB9Ci0gIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5l
dyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNf
LmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQoKSwgZzVfLCBnNV8uZW5kKCksIGc2XywgZzZf
LmVuZCgpLCBnN18sIGc3Xy5lbmQoKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJh
dG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJs
aWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiogYmFzZSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yJiBjdXJyZW50MiwKLSAgICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46
Oml0ZXJhdG9yJiBjdXJyZW50MywKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQs
Ci0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yJiBjdXJy
ZW50NCwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUsCi0gICAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yJiBjdXJyZW50NSwKLSAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUNj46Oml0ZXJhdG9yJiBjdXJyZW50NiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQ3PiYgZzcsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0
ZXJhdG9yJiBjdXJyZW50NykKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwKLSAgICAgICAgICBiZWdp
bjFfKGcxLmJlZ2luKCkpLCBlbmQxXyhnMS5lbmQoKSksIGN1cnJlbnQxXyhjdXJyZW50MSksCi0g
ICAgICAgICAgYmVnaW4yXyhnMi5iZWdpbigpKSwgZW5kMl8oZzIuZW5kKCkpLCBjdXJyZW50Ml8o
Y3VycmVudDIpLAotICAgICAgICAgIGJlZ2luM18oZzMuYmVnaW4oKSksIGVuZDNfKGczLmVuZCgp
KSwgY3VycmVudDNfKGN1cnJlbnQzKSwKLSAgICAgICAgICBiZWdpbjRfKGc0LmJlZ2luKCkpLCBl
bmQ0XyhnNC5lbmQoKSksIGN1cnJlbnQ0XyhjdXJyZW50NCksCi0gICAgICAgICAgYmVnaW41Xyhn
NS5iZWdpbigpKSwgZW5kNV8oZzUuZW5kKCkpLCBjdXJyZW50NV8oY3VycmVudDUpLAotICAgICAg
ICAgIGJlZ2luNl8oZzYuYmVnaW4oKSksIGVuZDZfKGc2LmVuZCgpKSwgY3VycmVudDZfKGN1cnJl
bnQ2KSwKLSAgICAgICAgICBiZWdpbjdfKGc3LmJlZ2luKCkpLCBlbmQ3XyhnNy5lbmQoKSksIGN1
cnJlbnQ3XyhjdXJyZW50NykgICAgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAg
IH0KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0g
ICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8vIEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBj
YWxsZWQgb24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9ycwotICAgIC8vIHNvIG5vIGNvbXBvbmVu
dCBpdGVyYXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9mIHJhbmdlLCBlaXRoZXIuCi0gICAgdmly
dHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3NlcnQoIUF0RW5kKCkpOwotICAgICAgKytj
dXJyZW50N187Ci0gICAgICBpZiAoY3VycmVudDdfID09IGVuZDdfKSB7Ci0gICAgICAgIGN1cnJl
bnQ3XyA9IGJlZ2luN187Ci0gICAgICAgICsrY3VycmVudDZfOwotICAgICAgfQotICAgICAgaWYg
KGN1cnJlbnQ2XyA9PSBlbmQ2XykgewotICAgICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOwotICAg
ICAgICArK2N1cnJlbnQ1XzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8p
IHsKLSAgICAgICAgY3VycmVudDVfID0gYmVnaW41XzsKLSAgICAgICAgKytjdXJyZW50NF87Ci0g
ICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRfID09IGVuZDRfKSB7Ci0gICAgICAgIGN1cnJlbnQ0
XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3VycmVudDNfOwotICAgICAgfQotICAgICAgaWYgKGN1
cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAgICBjdXJyZW50M18gPSBiZWdpbjNfOwotICAgICAg
ICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsK
LSAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKLSAgICAgICAgKytjdXJyZW50MV87Ci0gICAg
ICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJl
dHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFt
VHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZp
cnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9y
IGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBz
YW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2Vu
ZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJv
Z3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9t
IGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0
b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8
Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRv
cnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVj
dGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0g
ICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRF
bmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKLSAgICAgICAgICgKLSAgICAgICAgICBj
dXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQxXyAmJgotICAgICAgICAgIGN1cnJlbnQy
XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfICYmCi0gICAgICAgICAgY3VycmVudDNfID09IHR5
cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAgICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3Ro
ZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAgIGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3Vy
cmVudDVfICYmCi0gICAgICAgICAgY3VycmVudDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8g
JiYKLSAgICAgICAgICBjdXJyZW50N18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ3Xyk7Ci0gICAg
fQotCi0gICBwcml2YXRlOgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikKLSAg
ICAgICAgOiBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8ob3RoZXIuYmVnaW4x
XyksCi0gICAgICAgIGVuZDFfKG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3VycmVudDFfKG90aGVy
LmN1cnJlbnQxXyksCi0gICAgICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyksCi0gICAgICAgIGVu
ZDJfKG90aGVyLmVuZDJfKSwKLSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1cnJlbnQyXyksCi0g
ICAgICAgIGJlZ2luM18ob3RoZXIuYmVnaW4zXyksCi0gICAgICAgIGVuZDNfKG90aGVyLmVuZDNf
KSwKLSAgICAgICAgY3VycmVudDNfKG90aGVyLmN1cnJlbnQzXyksCi0gICAgICAgIGJlZ2luNF8o
b3RoZXIuYmVnaW40XyksCi0gICAgICAgIGVuZDRfKG90aGVyLmVuZDRfKSwKLSAgICAgICAgY3Vy
cmVudDRfKG90aGVyLmN1cnJlbnQ0XyksCi0gICAgICAgIGJlZ2luNV8ob3RoZXIuYmVnaW41Xyks
Ci0gICAgICAgIGVuZDVfKG90aGVyLmVuZDVfKSwKLSAgICAgICAgY3VycmVudDVfKG90aGVyLmN1
cnJlbnQ1XyksCi0gICAgICAgIGJlZ2luNl8ob3RoZXIuYmVnaW42XyksCi0gICAgICAgIGVuZDZf
KG90aGVyLmVuZDZfKSwKLSAgICAgICAgY3VycmVudDZfKG90aGVyLmN1cnJlbnQ2XyksCi0gICAg
ICAgIGJlZ2luN18ob3RoZXIuYmVnaW43XyksCi0gICAgICAgIGVuZDdfKG90aGVyLmVuZDdfKSwK
LSAgICAgICAgY3VycmVudDdfKG90aGVyLmN1cnJlbnQ3XykgewotICAgICAgQ29tcHV0ZUN1cnJl
bnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAg
ICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1
cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8s
ICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18pOwotICAgIH0KLSAgICBib29sIEF0
RW5kKCkgY29uc3QgewotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKLSAgICAgIC8vIGNvbXBvbmVudCBp
dGVyYXRvcnMgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiBpdHMgcmFuZ2UuCi0gICAgICByZXR1cm4K
LSAgICAgICAgICBjdXJyZW50MV8gPT0gZW5kMV8gfHwKLSAgICAgICAgICBjdXJyZW50Ml8gPT0g
ZW5kMl8gfHwKLSAgICAgICAgICBjdXJyZW50M18gPT0gZW5kM18gfHwKLSAgICAgICAgICBjdXJy
ZW50NF8gPT0gZW5kNF8gfHwKLSAgICAgICAgICBjdXJyZW50NV8gPT0gZW5kNV8gfHwKLSAgICAg
ICAgICBjdXJyZW50Nl8gPT0gZW5kNl8gfHwKLSAgICAgICAgICBjdXJyZW50N18gPT0gZW5kN187
Ci0gICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcik7Ci0KLSAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBjb25zdCBiYXNlXzsK
LSAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVmaW5lIHRoZSBpLXRoIHJhbmdlIHRoYXQg
SXRlcmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1cnJlbnRbaV1fIGlzIHRoZSBhY3R1YWwgdHJh
dmVyc2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46
Oml0ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+
OjppdGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJh
dG9yIGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+Ojpp
dGVyYXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9y
IGN1cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVy
YXRvciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1
cnJlbnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9y
IGJlZ2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRv
ciBlbmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGN1cnJl
bnQ0XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGJl
Z2luNV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBl
bmQ1XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGN1cnJlbnQ1
XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGJlZ2lu
Nl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBlbmQ2
XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGN1cnJlbnQ2XzsK
LSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGJlZ2luN187
Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBlbmQ3XzsK
LSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGN1cnJlbnQ3XzsKLSAg
ICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNzo6SXRlcmF0b3IKLQotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2ln
bm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I3JiBvdGhlcik7Ci0KLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+IGcx
XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+IGcyXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDM+IGczXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+IGc0XzsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8VDU+IGc1XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+IGc2XzsKLSAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+IGc3XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNwotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4
Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKLSAgICAgICAgVDcsIFQ4PiA+IHsKLSBwdWJsaWM6Ci0g
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+
IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOChjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0
PiYgZzQsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUsCi0gICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUNj4mIGc2LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4mIGc3LAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDg+JiBnOCkKLSAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNf
KGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3KSwKLSAgICAgICAgICBnOF8o
ZzgpIHt9Ci0gIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4KCkge30KLQotICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmVnaW4oKSBjb25zdCB7
Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5iZWdpbigpLCBnMl8sIGcy
Xy5iZWdpbigpLCBnM18sCi0gICAgICAgIGczXy5iZWdpbigpLCBnNF8sIGc0Xy5iZWdpbigpLCBn
NV8sIGc1Xy5iZWdpbigpLCBnNl8sIGc2Xy5iZWdpbigpLCBnN18sCi0gICAgICAgIGc3Xy5iZWdp
bigpLCBnOF8sIGc4Xy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
dGhpcywgZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSwKLSAg
ICAgICAgZzRfLCBnNF8uZW5kKCksIGc1XywgZzVfLmVuZCgpLCBnNl8sIGc2Xy5lbmQoKSwgZzdf
LCBnN18uZW5kKCksIGc4XywKLSAgICAgICAgZzhfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+IHsKLSAgIHB1YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBn
MSwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1
cnJlbnQxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKLSAgICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAotICAgICAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAotICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDQ+JiBnNCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6
aXRlcmF0b3ImIGN1cnJlbnQ0LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwK
LSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJl
bnQ1LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwKLSAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJlbnQ2LAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDc+JiBnNywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ3Pjo6aXRlcmF0b3ImIGN1cnJlbnQ3LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDg+JiBnOCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRl
cmF0b3ImIGN1cnJlbnQ4KQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2lu
MV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAg
ICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhj
dXJyZW50MiksCi0gICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkp
LCBjdXJyZW50M18oY3VycmVudDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVu
ZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSwKLSAgICAgICAgICBiZWdpbjVfKGc1
LmJlZ2luKCkpLCBlbmQ1XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50NSksCi0gICAgICAg
ICAgYmVnaW42XyhnNi5iZWdpbigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVu
dDYpLAotICAgICAgICAgIGJlZ2luN18oZzcuYmVnaW4oKSksIGVuZDdfKGc3LmVuZCgpKSwgY3Vy
cmVudDdfKGN1cnJlbnQ3KSwKLSAgICAgICAgICBiZWdpbjhfKGc4LmJlZ2luKCkpLCBlbmQ4Xyhn
OC5lbmQoKSksIGN1cnJlbnQ4XyhjdXJyZW50OCkgICAgewotICAgICAgQ29tcHV0ZUN1cnJlbnRW
YWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJhc2VHZW5lcmF0b3Io
KSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8vIEFkdmFuY2Ugc2hv
dWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9ycwotICAgIC8vIHNv
IG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9mIHJhbmdlLCBlaXRo
ZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3NlcnQoIUF0RW5kKCkp
OwotICAgICAgKytjdXJyZW50OF87Ci0gICAgICBpZiAoY3VycmVudDhfID09IGVuZDhfKSB7Ci0g
ICAgICAgIGN1cnJlbnQ4XyA9IGJlZ2luOF87Ci0gICAgICAgICsrY3VycmVudDdfOwotICAgICAg
fQotICAgICAgaWYgKGN1cnJlbnQ3XyA9PSBlbmQ3XykgewotICAgICAgICBjdXJyZW50N18gPSBi
ZWdpbjdfOwotICAgICAgICArK2N1cnJlbnQ2XzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50
Nl8gPT0gZW5kNl8pIHsKLSAgICAgICAgY3VycmVudDZfID0gYmVnaW42XzsKLSAgICAgICAgKytj
dXJyZW50NV87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDVfID09IGVuZDVfKSB7Ci0gICAg
ICAgIGN1cnJlbnQ1XyA9IGJlZ2luNV87Ci0gICAgICAgICsrY3VycmVudDRfOwotICAgICAgfQot
ICAgICAgaWYgKGN1cnJlbnQ0XyA9PSBlbmQ0XykgewotICAgICAgICBjdXJyZW50NF8gPSBiZWdp
bjRfOwotICAgICAgICArK2N1cnJlbnQzXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50M18g
PT0gZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKLSAgICAgICAgKytjdXJy
ZW50Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7Ci0gICAgICAg
IGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAgICsrY3VycmVudDFfOwotICAgICAgfQotICAg
ICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0
b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3
IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1
cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KLSAgICB2aXJ0dWFsIGJv
b2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIp
IGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50
ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBl
IGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigp
ID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0
ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJl
bnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBl
ZF9vdGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0
ZXJhdG9yPigmb3RoZXIpOwotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFs
IGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhlaXIKLSAgICAgIC8vIHJlc3BlY3RpdmUgcmFu
Z2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAotICAgICAgLy8g
c28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCkuCi0gICAgICByZXR1cm4gKEF0RW5kKCkgJiYg
dHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAgICAgICAoCi0gICAgICAgICAgY3VycmVudDFf
ID09IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYKLSAgICAgICAgICBjdXJyZW50Ml8gPT0gdHlw
ZWRfb3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAgICAgIGN1cnJlbnQzXyA9PSB0eXBlZF9vdGhl
ci0+Y3VycmVudDNfICYmCi0gICAgICAgICAgY3VycmVudDRfID09IHR5cGVkX290aGVyLT5jdXJy
ZW50NF8gJiYKLSAgICAgICAgICBjdXJyZW50NV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ1XyAm
JgotICAgICAgICAgIGN1cnJlbnQ2XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDZfICYmCi0gICAg
ICAgICAgY3VycmVudDdfID09IHR5cGVkX290aGVyLT5jdXJyZW50N18gJiYKLSAgICAgICAgICBj
dXJyZW50OF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ4Xyk7Ci0gICAgfQotCi0gICBwcml2YXRl
OgotICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikKLSAgICAgICAgOiBiYXNlXyhv
dGhlci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8ob3RoZXIuYmVnaW4xXyksCi0gICAgICAgIGVu
ZDFfKG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3VycmVudDFfKG90aGVyLmN1cnJlbnQxXyksCi0g
ICAgICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyksCi0gICAgICAgIGVuZDJfKG90aGVyLmVuZDJf
KSwKLSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1cnJlbnQyXyksCi0gICAgICAgIGJlZ2luM18o
b3RoZXIuYmVnaW4zXyksCi0gICAgICAgIGVuZDNfKG90aGVyLmVuZDNfKSwKLSAgICAgICAgY3Vy
cmVudDNfKG90aGVyLmN1cnJlbnQzXyksCi0gICAgICAgIGJlZ2luNF8ob3RoZXIuYmVnaW40Xyks
Ci0gICAgICAgIGVuZDRfKG90aGVyLmVuZDRfKSwKLSAgICAgICAgY3VycmVudDRfKG90aGVyLmN1
cnJlbnQ0XyksCi0gICAgICAgIGJlZ2luNV8ob3RoZXIuYmVnaW41XyksCi0gICAgICAgIGVuZDVf
KG90aGVyLmVuZDVfKSwKLSAgICAgICAgY3VycmVudDVfKG90aGVyLmN1cnJlbnQ1XyksCi0gICAg
ICAgIGJlZ2luNl8ob3RoZXIuYmVnaW42XyksCi0gICAgICAgIGVuZDZfKG90aGVyLmVuZDZfKSwK
LSAgICAgICAgY3VycmVudDZfKG90aGVyLmN1cnJlbnQ2XyksCi0gICAgICAgIGJlZ2luN18ob3Ro
ZXIuYmVnaW43XyksCi0gICAgICAgIGVuZDdfKG90aGVyLmVuZDdfKSwKLSAgICAgICAgY3VycmVu
dDdfKG90aGVyLmN1cnJlbnQ3XyksCi0gICAgICAgIGJlZ2luOF8ob3RoZXIuYmVnaW44XyksCi0g
ICAgICAgIGVuZDhfKG90aGVyLmVuZDhfKSwKLSAgICAgICAgY3VycmVudDhfKG90aGVyLmN1cnJl
bnQ4XykgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQg
Q29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3Vy
cmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQz
XywKLSAgICAgICAgICAgICpjdXJyZW50NF8sICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJy
ZW50N18sICpjdXJyZW50OF8pOwotICAgIH0KLSAgICBib29sIEF0RW5kKCkgY29uc3QgewotICAg
ICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSByYW5nZSB3
aGVuIGVpdGhlciBvZiB0aGUKLSAgICAgIC8vIGNvbXBvbmVudCBpdGVyYXRvcnMgaGFzIHJlYWNo
ZWQgdGhlIGVuZCBvZiBpdHMgcmFuZ2UuCi0gICAgICByZXR1cm4KLSAgICAgICAgICBjdXJyZW50
MV8gPT0gZW5kMV8gfHwKLSAgICAgICAgICBjdXJyZW50Ml8gPT0gZW5kMl8gfHwKLSAgICAgICAg
ICBjdXJyZW50M18gPT0gZW5kM18gfHwKLSAgICAgICAgICBjdXJyZW50NF8gPT0gZW5kNF8gfHwK
LSAgICAgICAgICBjdXJyZW50NV8gPT0gZW5kNV8gfHwKLSAgICAgICAgICBjdXJyZW50Nl8gPT0g
ZW5kNl8gfHwKLSAgICAgICAgICBjdXJyZW50N18gPT0gZW5kN18gfHwKLSAgICAgICAgICBjdXJy
ZW50OF8gPT0gZW5kOF87Ci0gICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3Np
Z25tZW50IGlzIHVuc3VwcG9ydGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9y
JiBvdGhlcik7Ci0KLSAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
KiBjb25zdCBiYXNlXzsKLSAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVmaW5lIHRoZSBp
LXRoIHJhbmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1cnJlbnRbaV1fIGlz
IHRoZSBhY3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMT46Oml0ZXJhdG9yIGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMj46Oml0ZXJhdG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDI+OjppdGVyYXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUMj46Oml0ZXJhdG9yIGN1cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMz46Oml0ZXJhdG9yIGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDM+OjppdGVyYXRvciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Mz46Oml0ZXJhdG9yIGN1cnJlbnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUND46Oml0ZXJhdG9yIGJlZ2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDQ+OjppdGVyYXRvciBlbmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46
Oml0ZXJhdG9yIGN1cnJlbnQ0XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
NT46Oml0ZXJhdG9yIGJlZ2luNV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDU+OjppdGVyYXRvciBlbmQ1XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0
ZXJhdG9yIGN1cnJlbnQ1XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46
Oml0ZXJhdG9yIGJlZ2luNl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+
OjppdGVyYXRvciBlbmQ2XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJh
dG9yIGN1cnJlbnQ2XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0
ZXJhdG9yIGJlZ2luN187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+Ojpp
dGVyYXRvciBlbmQ3XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9y
IGN1cnJlbnQ3XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJh
dG9yIGJlZ2luOF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVy
YXRvciBlbmQ4XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1
cnJlbnQ4XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yODo6SXRlcmF0b3IKLQotICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4JiBvdGhlcik7Ci0KLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDE+IGcxXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+IGcyXzsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDM+IGczXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+IGc0XzsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+IGc1XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDY+IGc2XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+IGc3XzsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDg+IGc4XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
OAotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
OQotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCi0gICAgICAgIFQ3LCBUOCwgVDk+ID4gewotIHB1Ymxp
YzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDk+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yOShjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+
JiBnMiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQ0PiYgZzQsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUNj4mIGc2LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4mIGc3LAot
ICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDg+JiBnOCwgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDk+JiBnOSkKLSAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVf
KGc1KSwgZzZfKGc2KSwgZzdfKGc3KSwgZzhfKGc4KSwKLSAgICAgICAgICBnOV8oZzkpIHt9Ci0g
IHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KCkge30KLQotICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0
dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5iZWdpbigpLCBnMl8sIGcyXy5iZWdpbigp
LCBnM18sCi0gICAgICAgIGczXy5iZWdpbigpLCBnNF8sIGc0Xy5iZWdpbigpLCBnNV8sIGc1Xy5i
ZWdpbigpLCBnNl8sIGc2Xy5iZWdpbigpLCBnN18sCi0gICAgICAgIGc3Xy5iZWdpbigpLCBnOF8s
IGc4Xy5iZWdpbigpLCBnOV8sIGc5Xy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVybiBuZXcg
SXRlcmF0b3IodGhpcywgZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18sIGczXy5l
bmQoKSwKLSAgICAgICAgZzRfLCBnNF8uZW5kKCksIGc1XywgZzVfLmVuZCgpLCBnNl8sIGc2Xy5l
bmQoKSwgZzdfLCBnN18uZW5kKCksIGc4XywKLSAgICAgICAgZzhfLmVuZCgpLCBnOV8sIGc5Xy5l
bmQoKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFt
SXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3Io
Y29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKLSAgICAgIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUMT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQyPiYgZzIsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yJiBjdXJyZW50MiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0g
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBjdXJyZW50
MywKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsCi0gICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yJiBjdXJyZW50NCwKLSAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNT46Oml0ZXJhdG9yJiBjdXJyZW50NSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ2PiYgZzYsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJh
dG9yJiBjdXJyZW50NiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCi0gICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yJiBjdXJyZW50NywK
LSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ4PiYgZzgsCi0gICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yJiBjdXJyZW50OCwKLSAgICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQ5PiYgZzksCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUOT46Oml0ZXJhdG9yJiBjdXJyZW50OSkKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwKLSAgICAg
ICAgICBiZWdpbjFfKGcxLmJlZ2luKCkpLCBlbmQxXyhnMS5lbmQoKSksIGN1cnJlbnQxXyhjdXJy
ZW50MSksCi0gICAgICAgICAgYmVnaW4yXyhnMi5iZWdpbigpKSwgZW5kMl8oZzIuZW5kKCkpLCBj
dXJyZW50Ml8oY3VycmVudDIpLAotICAgICAgICAgIGJlZ2luM18oZzMuYmVnaW4oKSksIGVuZDNf
KGczLmVuZCgpKSwgY3VycmVudDNfKGN1cnJlbnQzKSwKLSAgICAgICAgICBiZWdpbjRfKGc0LmJl
Z2luKCkpLCBlbmQ0XyhnNC5lbmQoKSksIGN1cnJlbnQ0XyhjdXJyZW50NCksCi0gICAgICAgICAg
YmVnaW41XyhnNS5iZWdpbigpKSwgZW5kNV8oZzUuZW5kKCkpLCBjdXJyZW50NV8oY3VycmVudDUp
LAotICAgICAgICAgIGJlZ2luNl8oZzYuYmVnaW4oKSksIGVuZDZfKGc2LmVuZCgpKSwgY3VycmVu
dDZfKGN1cnJlbnQ2KSwKLSAgICAgICAgICBiZWdpbjdfKGc3LmJlZ2luKCkpLCBlbmQ3XyhnNy5l
bmQoKSksIGN1cnJlbnQ3XyhjdXJyZW50NyksCi0gICAgICAgICAgYmVnaW44XyhnOC5iZWdpbigp
KSwgZW5kOF8oZzguZW5kKCkpLCBjdXJyZW50OF8oY3VycmVudDgpLAotICAgICAgICAgIGJlZ2lu
OV8oZzkuYmVnaW4oKSksIGVuZDlfKGc5LmVuZCgpKSwgY3VycmVudDlfKGN1cnJlbnQ5KSAgICB7
Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkl0ZXJh
dG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBiYXNlXzsKLSAg
ICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFu
Z2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJl
eW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsK
LSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJlbnQ5XzsKLSAgICAgIGlmIChj
dXJyZW50OV8gPT0gZW5kOV8pIHsKLSAgICAgICAgY3VycmVudDlfID0gYmVnaW45XzsKLSAgICAg
ICAgKytjdXJyZW50OF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDhfID09IGVuZDhfKSB7
Ci0gICAgICAgIGN1cnJlbnQ4XyA9IGJlZ2luOF87Ci0gICAgICAgICsrY3VycmVudDdfOwotICAg
ICAgfQotICAgICAgaWYgKGN1cnJlbnQ3XyA9PSBlbmQ3XykgewotICAgICAgICBjdXJyZW50N18g
PSBiZWdpbjdfOwotICAgICAgICArK2N1cnJlbnQ2XzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJy
ZW50Nl8gPT0gZW5kNl8pIHsKLSAgICAgICAgY3VycmVudDZfID0gYmVnaW42XzsKLSAgICAgICAg
KytjdXJyZW50NV87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDVfID09IGVuZDVfKSB7Ci0g
ICAgICAgIGN1cnJlbnQ1XyA9IGJlZ2luNV87Ci0gICAgICAgICsrY3VycmVudDRfOwotICAgICAg
fQotICAgICAgaWYgKGN1cnJlbnQ0XyA9PSBlbmQ0XykgewotICAgICAgICBjdXJyZW50NF8gPSBi
ZWdpbjRfOwotICAgICAgICArK2N1cnJlbnQzXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50
M18gPT0gZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKLSAgICAgICAgKytj
dXJyZW50Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7Ci0gICAg
ICAgIGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAgICsrY3VycmVudDFfOwotICAgICAgfQot
ICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRl
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJhbVR5cGUq
IEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KLSAgICB2aXJ0dWFs
IGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiYgb3Ro
ZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRvciBndWFy
YW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0
eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFzZUdlbmVyYXRv
cigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhlIHByb2dyYW0g
YXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAiZnJvbSBkaWZm
ZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0
eXBlZF9vdGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0
IEl0ZXJhdG9yPigmb3RoZXIpOwotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3JzIGVx
dWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhlaXIKLSAgICAgIC8vIHJlc3BlY3RpdmUg
cmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAotICAgICAg
Ly8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCkuCi0gICAgICByZXR1cm4gKEF0RW5kKCkg
JiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAgICAgICAoCi0gICAgICAgICAgY3VycmVu
dDFfID09IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYKLSAgICAgICAgICBjdXJyZW50Ml8gPT0g
dHlwZWRfb3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAgICAgIGN1cnJlbnQzXyA9PSB0eXBlZF9v
dGhlci0+Y3VycmVudDNfICYmCi0gICAgICAgICAgY3VycmVudDRfID09IHR5cGVkX290aGVyLT5j
dXJyZW50NF8gJiYKLSAgICAgICAgICBjdXJyZW50NV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ1
XyAmJgotICAgICAgICAgIGN1cnJlbnQ2XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDZfICYmCi0g
ICAgICAgICAgY3VycmVudDdfID09IHR5cGVkX290aGVyLT5jdXJyZW50N18gJiYKLSAgICAgICAg
ICBjdXJyZW50OF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ4XyAmJgotICAgICAgICAgIGN1cnJl
bnQ5XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDlfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0g
ICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVy
LmJhc2VfKSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8o
b3RoZXIuZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAg
ICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAot
ICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhvdGhl
ci5iZWdpbjNfKSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAotICAgICAgICBjdXJyZW50
M18ob3RoZXIuY3VycmVudDNfKSwKLSAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKLSAg
ICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAotICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVu
dDRfKSwKLSAgICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKLSAgICAgICAgZW5kNV8ob3Ro
ZXIuZW5kNV8pLAotICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSwKLSAgICAgICAg
YmVnaW42XyhvdGhlci5iZWdpbjZfKSwKLSAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAotICAg
ICAgICBjdXJyZW50Nl8ob3RoZXIuY3VycmVudDZfKSwKLSAgICAgICAgYmVnaW43XyhvdGhlci5i
ZWdpbjdfKSwKLSAgICAgICAgZW5kN18ob3RoZXIuZW5kN18pLAotICAgICAgICBjdXJyZW50N18o
b3RoZXIuY3VycmVudDdfKSwKLSAgICAgICAgYmVnaW44XyhvdGhlci5iZWdpbjhfKSwKLSAgICAg
ICAgZW5kOF8ob3RoZXIuZW5kOF8pLAotICAgICAgICBjdXJyZW50OF8ob3RoZXIuY3VycmVudDhf
KSwKLSAgICAgICAgYmVnaW45XyhvdGhlci5iZWdpbjlfKSwKLSAgICAgICAgZW5kOV8ob3RoZXIu
ZW5kOV8pLAotICAgICAgICBjdXJyZW50OV8ob3RoZXIuY3VycmVudDlfKSB7Ci0gICAgICBDb21w
dXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVl
KCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFt
VHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1
cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4XywK
LSAgICAgICAgICAgICpjdXJyZW50OV8pOwotICAgIH0KLSAgICBib29sIEF0RW5kKCkgY29uc3Qg
ewotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0b3IgcGFzdCB0aGUgZW5kIG9mIHRoZSBy
YW5nZSB3aGVuIGVpdGhlciBvZiB0aGUKLSAgICAgIC8vIGNvbXBvbmVudCBpdGVyYXRvcnMgaGFz
IHJlYWNoZWQgdGhlIGVuZCBvZiBpdHMgcmFuZ2UuCi0gICAgICByZXR1cm4KLSAgICAgICAgICBj
dXJyZW50MV8gPT0gZW5kMV8gfHwKLSAgICAgICAgICBjdXJyZW50Ml8gPT0gZW5kMl8gfHwKLSAg
ICAgICAgICBjdXJyZW50M18gPT0gZW5kM18gfHwKLSAgICAgICAgICBjdXJyZW50NF8gPT0gZW5k
NF8gfHwKLSAgICAgICAgICBjdXJyZW50NV8gPT0gZW5kNV8gfHwKLSAgICAgICAgICBjdXJyZW50
Nl8gPT0gZW5kNl8gfHwKLSAgICAgICAgICBjdXJyZW50N18gPT0gZW5kN18gfHwKLSAgICAgICAg
ICBjdXJyZW50OF8gPT0gZW5kOF8gfHwKLSAgICAgICAgICBjdXJyZW50OV8gPT0gZW5kOV87Ci0g
ICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcik7Ci0KLSAgICBj
b25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBjb25zdCBiYXNlXzsKLSAg
ICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVmaW5lIHRoZSBpLXRoIHJhbmdlIHRoYXQgSXRl
cmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1cnJlbnRbaV1fIGlzIHRoZSBhY3R1YWwgdHJhdmVy
c2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0
ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+Ojpp
dGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9y
IGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJh
dG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVy
YXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGN1
cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9y
IGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRv
ciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGN1cnJl
bnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGJl
Z2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBl
bmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGN1cnJlbnQ0
XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGJlZ2lu
NV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBlbmQ1
XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGN1cnJlbnQ1XzsK
LSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGJlZ2luNl87
Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBlbmQ2XzsK
LSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGN1cnJlbnQ2XzsKLSAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGJlZ2luN187Ci0g
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBlbmQ3XzsKLSAg
ICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGN1cnJlbnQ3XzsKLSAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJlZ2luOF87Ci0gICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBlbmQ4XzsKLSAgICB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4XzsKLSAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGJlZ2luOV87Ci0gICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBlbmQ5XzsKLSAgICB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGN1cnJlbnQ5XzsKLSAgICBQYXJhbVR5
cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yOTo6SXRlcmF0b3IKLQotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I5JiBvdGhlcik7Ci0KLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+IGcxXzsKLSAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDI+IGcyXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+IGcz
XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+IGc0XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDU+IGc1XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+IGc2XzsKLSAgY29uc3QgUGFy
YW1HZW5lcmF0b3I8VDc+IGc3XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDg+IGc4XzsKLSAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDk+IGc5XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yOQotCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLWNsYXNz
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsCi0gICAg
ICAgIFQ3LCBUOCwgVDksIFQxMD4gPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBQYXJhbVR5cGU7
Ci0KLSAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwKGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQx
PiYgZzEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMz4mIGczLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2
PiYgZzYsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCi0gICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUOD4mIGc4LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4mIGc5LAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDEwPiYgZzEwKQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBn
M18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLCBnOF8oZzgpLAotICAg
ICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQotICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Qcm9kdWN0
R2VuZXJhdG9yMTAoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJh
bVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcx
XywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAgZzNfLmJlZ2lu
KCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJlZ2luKCks
IGc3XywKLSAgICAgICAgZzdfLmJlZ2luKCksIGc4XywgZzhfLmJlZ2luKCksIGc5XywgZzlfLmJl
Z2luKCksIGcxMF8sIGcxMF8uYmVnaW4oKSk7Ci0gIH0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9y
SW50ZXJmYWNlPFBhcmFtVHlwZT4qIEVuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJh
dG9yKHRoaXMsIGcxXywgZzFfLmVuZCgpLCBnMl8sIGcyXy5lbmQoKSwgZzNfLCBnM18uZW5kKCks
Ci0gICAgICAgIGc0XywgZzRfLmVuZCgpLCBnNV8sIGc1Xy5lbmQoKSwgZzZfLCBnNl8uZW5kKCks
IGc3XywgZzdfLmVuZCgpLCBnOF8sCi0gICAgICAgIGc4Xy5lbmQoKSwgZzlfLCBnOV8uZW5kKCks
IGcxMF8sIGcxMF8uZW5kKCkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBJdGVyYXRvciA6
IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4gewotICAgcHVibGljOgot
ICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGJh
c2UsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMz4mIGczLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVy
YXRvciYgY3VycmVudDMsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LAotICAg
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciYgY3VycmVudDQs
Ci0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAotICAgICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciYgY3VycmVudDUsCi0gICAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUNj4mIGc2LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDY+OjppdGVyYXRvciYgY3VycmVudDYsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Nz4mIGc3LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRv
ciYgY3VycmVudDcsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4mIGc4LAotICAgICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciYgY3VycmVudDgsCi0g
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4mIGc5LAotICAgICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciYgY3VycmVudDksCi0gICAgICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMTA+JiBnMTAsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUMTA+OjppdGVyYXRvciYgY3VycmVudDEwKQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAg
ICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1
cnJlbnQxKSwKLSAgICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSks
IGN1cnJlbnQyXyhjdXJyZW50MiksCi0gICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5k
M18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3VycmVudDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQu
YmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSwKLSAgICAgICAg
ICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50
NSksCi0gICAgICAgICAgYmVnaW42XyhnNi5iZWdpbigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJy
ZW50Nl8oY3VycmVudDYpLAotICAgICAgICAgIGJlZ2luN18oZzcuYmVnaW4oKSksIGVuZDdfKGc3
LmVuZCgpKSwgY3VycmVudDdfKGN1cnJlbnQ3KSwKLSAgICAgICAgICBiZWdpbjhfKGc4LmJlZ2lu
KCkpLCBlbmQ4XyhnOC5lbmQoKSksIGN1cnJlbnQ4XyhjdXJyZW50OCksCi0gICAgICAgICAgYmVn
aW45XyhnOS5iZWdpbigpKSwgZW5kOV8oZzkuZW5kKCkpLCBjdXJyZW50OV8oY3VycmVudDkpLAot
ICAgICAgICAgIGJlZ2luMTBfKGcxMC5iZWdpbigpKSwgZW5kMTBfKGcxMC5lbmQoKSksIGN1cnJl
bnQxMF8oY3VycmVudDEwKSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAg
fQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAg
ICAgIHJldHVybiBiYXNlXzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNh
bGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50
IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0
dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1
cnJlbnQxMF87Ci0gICAgICBpZiAoY3VycmVudDEwXyA9PSBlbmQxMF8pIHsKLSAgICAgICAgY3Vy
cmVudDEwXyA9IGJlZ2luMTBfOwotICAgICAgICArK2N1cnJlbnQ5XzsKLSAgICAgIH0KLSAgICAg
IGlmIChjdXJyZW50OV8gPT0gZW5kOV8pIHsKLSAgICAgICAgY3VycmVudDlfID0gYmVnaW45XzsK
LSAgICAgICAgKytjdXJyZW50OF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDhfID09IGVu
ZDhfKSB7Ci0gICAgICAgIGN1cnJlbnQ4XyA9IGJlZ2luOF87Ci0gICAgICAgICsrY3VycmVudDdf
OwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ3XyA9PSBlbmQ3XykgewotICAgICAgICBjdXJy
ZW50N18gPSBiZWdpbjdfOwotICAgICAgICArK2N1cnJlbnQ2XzsKLSAgICAgIH0KLSAgICAgIGlm
IChjdXJyZW50Nl8gPT0gZW5kNl8pIHsKLSAgICAgICAgY3VycmVudDZfID0gYmVnaW42XzsKLSAg
ICAgICAgKytjdXJyZW50NV87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDVfID09IGVuZDVf
KSB7Ci0gICAgICAgIGN1cnJlbnQ1XyA9IGJlZ2luNV87Ci0gICAgICAgICsrY3VycmVudDRfOwot
ICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ0XyA9PSBlbmQ0XykgewotICAgICAgICBjdXJyZW50
NF8gPSBiZWdpbjRfOwotICAgICAgICArK2N1cnJlbnQzXzsKLSAgICAgIH0KLSAgICAgIGlmIChj
dXJyZW50M18gPT0gZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNfID0gYmVnaW4zXzsKLSAgICAg
ICAgKytjdXJyZW50Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDJfID09IGVuZDJfKSB7
Ci0gICAgICAgIGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAgICsrY3VycmVudDFfOwotICAg
ICAgfQotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICBy
ZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBQYXJh
bVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVudF92YWx1ZV87IH0KLSAgICB2
aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVyYXRv
ciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0aGUg
c2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFzZUdl
bmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhlIHBy
b2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAiZnJv
bSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIGNvbnN0IEl0ZXJh
dG9yKiB0eXBlZF9vdGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBl
PGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIpOwotICAgICAgLy8gV2UgbXVzdCByZXBvcnQgaXRlcmF0
b3JzIGVxdWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhlaXIKLSAgICAgIC8vIHJlc3Bl
Y3RpdmUgcmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJpZXR5IG9mIGZhc2hpb25zLAot
ICAgICAgLy8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCkuCi0gICAgICByZXR1cm4gKEF0
RW5kKCkgJiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAgICAgICAoCi0gICAgICAgICAg
Y3VycmVudDFfID09IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYKLSAgICAgICAgICBjdXJyZW50
Ml8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAgICAgIGN1cnJlbnQzXyA9PSB0
eXBlZF9vdGhlci0+Y3VycmVudDNfICYmCi0gICAgICAgICAgY3VycmVudDRfID09IHR5cGVkX290
aGVyLT5jdXJyZW50NF8gJiYKLSAgICAgICAgICBjdXJyZW50NV8gPT0gdHlwZWRfb3RoZXItPmN1
cnJlbnQ1XyAmJgotICAgICAgICAgIGN1cnJlbnQ2XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDZf
ICYmCi0gICAgICAgICAgY3VycmVudDdfID09IHR5cGVkX290aGVyLT5jdXJyZW50N18gJiYKLSAg
ICAgICAgICBjdXJyZW50OF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ4XyAmJgotICAgICAgICAg
IGN1cnJlbnQ5XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDlfICYmCi0gICAgICAgICAgY3VycmVu
dDEwXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDEwXyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgot
ICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikKLSAgICAgICAgOiBiYXNlXyhvdGhl
ci5iYXNlXyksCi0gICAgICAgIGJlZ2luMV8ob3RoZXIuYmVnaW4xXyksCi0gICAgICAgIGVuZDFf
KG90aGVyLmVuZDFfKSwKLSAgICAgICAgY3VycmVudDFfKG90aGVyLmN1cnJlbnQxXyksCi0gICAg
ICAgIGJlZ2luMl8ob3RoZXIuYmVnaW4yXyksCi0gICAgICAgIGVuZDJfKG90aGVyLmVuZDJfKSwK
LSAgICAgICAgY3VycmVudDJfKG90aGVyLmN1cnJlbnQyXyksCi0gICAgICAgIGJlZ2luM18ob3Ro
ZXIuYmVnaW4zXyksCi0gICAgICAgIGVuZDNfKG90aGVyLmVuZDNfKSwKLSAgICAgICAgY3VycmVu
dDNfKG90aGVyLmN1cnJlbnQzXyksCi0gICAgICAgIGJlZ2luNF8ob3RoZXIuYmVnaW40XyksCi0g
ICAgICAgIGVuZDRfKG90aGVyLmVuZDRfKSwKLSAgICAgICAgY3VycmVudDRfKG90aGVyLmN1cnJl
bnQ0XyksCi0gICAgICAgIGJlZ2luNV8ob3RoZXIuYmVnaW41XyksCi0gICAgICAgIGVuZDVfKG90
aGVyLmVuZDVfKSwKLSAgICAgICAgY3VycmVudDVfKG90aGVyLmN1cnJlbnQ1XyksCi0gICAgICAg
IGJlZ2luNl8ob3RoZXIuYmVnaW42XyksCi0gICAgICAgIGVuZDZfKG90aGVyLmVuZDZfKSwKLSAg
ICAgICAgY3VycmVudDZfKG90aGVyLmN1cnJlbnQ2XyksCi0gICAgICAgIGJlZ2luN18ob3RoZXIu
YmVnaW43XyksCi0gICAgICAgIGVuZDdfKG90aGVyLmVuZDdfKSwKLSAgICAgICAgY3VycmVudDdf
KG90aGVyLmN1cnJlbnQ3XyksCi0gICAgICAgIGJlZ2luOF8ob3RoZXIuYmVnaW44XyksCi0gICAg
ICAgIGVuZDhfKG90aGVyLmVuZDhfKSwKLSAgICAgICAgY3VycmVudDhfKG90aGVyLmN1cnJlbnQ4
XyksCi0gICAgICAgIGJlZ2luOV8ob3RoZXIuYmVnaW45XyksCi0gICAgICAgIGVuZDlfKG90aGVy
LmVuZDlfKSwKLSAgICAgICAgY3VycmVudDlfKG90aGVyLmN1cnJlbnQ5XyksCi0gICAgICAgIGJl
Z2luMTBfKG90aGVyLmJlZ2luMTBfKSwKLSAgICAgICAgZW5kMTBfKG90aGVyLmVuZDEwXyksCi0g
ICAgICAgIGN1cnJlbnQxMF8ob3RoZXIuY3VycmVudDEwXykgewotICAgICAgQ29tcHV0ZUN1cnJl
bnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAg
ICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoKmN1
cnJlbnQxXywgKmN1cnJlbnQyXywgKmN1cnJlbnQzXywKLSAgICAgICAgICAgICpjdXJyZW50NF8s
ICpjdXJyZW50NV8sICpjdXJyZW50Nl8sICpjdXJyZW50N18sICpjdXJyZW50OF8sCi0gICAgICAg
ICAgICAqY3VycmVudDlfLCAqY3VycmVudDEwXyk7Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBj
b25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2Yg
dGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9y
cyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgotICAgICAg
ICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8
fAotICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAotICAgICAgICAgIGN1cnJlbnQ0XyA9
PSBlbmQ0XyB8fAotICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XyB8fAotICAgICAgICAgIGN1
cnJlbnQ2XyA9PSBlbmQ2XyB8fAotICAgICAgICAgIGN1cnJlbnQ3XyA9PSBlbmQ3XyB8fAotICAg
ICAgICAgIGN1cnJlbnQ4XyA9PSBlbmQ4XyB8fAotICAgICAgICAgIGN1cnJlbnQ5XyA9PSBlbmQ5
XyB8fAotICAgICAgICAgIGN1cnJlbnQxMF8gPT0gZW5kMTBfOwotICAgIH0KLQotICAgIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpOwotCi0gICAgY29uc3QgUGFyYW1HZW5lcmF0
b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87Ci0gICAgLy8gYmVnaW5baV1fIGFu
ZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0ZXJhdG9yIHRyYXZlcnNlcy4K
LSAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZlcnNpbmcgaXRlcmF0b3IuCi0g
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBiZWdpbjFfOwot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgZW5kMV87Ci0g
ICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBjdXJyZW50MV87Ci0gICAg
Y29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBiZWdpbjJfOwotICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87Ci0gICAg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJyZW50Ml87Ci0gICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBiZWdpbjNfOwotICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgZW5kM187Ci0gICAgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBjdXJyZW50M187Ci0gICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdpbjRfOwotICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5kNF87Ci0gICAgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87Ci0gICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVfOwotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87Ci0gICAgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0gICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBiZWdpbjZfOwotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgZW5kNl87Ci0gICAgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBjdXJyZW50Nl87Ci0gICAgY29uc3QgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciBiZWdpbjdfOwotICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgZW5kN187Ci0gICAgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDc+OjppdGVyYXRvciBjdXJyZW50N187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBiZWdpbjhfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgZW5kOF87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDg+OjppdGVyYXRvciBjdXJyZW50OF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDk+OjppdGVyYXRvciBiZWdpbjlfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3IgZW5kOV87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDk+OjppdGVyYXRvciBjdXJyZW50OV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDEwPjo6aXRlcmF0b3IgYmVnaW4xMF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDEwPjo6aXRlcmF0b3IgZW5kMTBfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQxMD46Oml0ZXJhdG9yIGN1cnJlbnQxMF87Ci0gICAgUGFyYW1UeXBlIGN1cnJlbnRfdmFs
dWVfOwotICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwOjpJdGVyYXRv
cgotCi0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4K
LSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwJiBvdGhl
cik7Ci0KLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+IGcxXzsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDI+IGcyXzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+IGczXzsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDQ+IGc0XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+IGc1XzsK
LSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+IGc2XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDc+IGc3XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDg+IGc4XzsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDk+IGc5XzsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDEwPiBnMTBfOwotfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMAotCi0KLS8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gSGVscGVyIGNs
YXNzZXMgcHJvdmlkaW5nIENvbWJpbmUoKSB3aXRoIHBvbHltb3JwaGljIGZlYXR1cmVzLiBUaGV5
IGFsbG93Ci0vLyBjYXN0aW5nIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3JOPFQ+IHRvIFBhcmFt
R2VuZXJhdG9yPFU+IGlmIFQgaXMKLS8vIGNvbnZlcnRpYmxlIHRvIFUuCi0vLwotdGVtcGxhdGUg
PGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjI+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyMiB7Ci0gcHVibGljOgotQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIoY29uc3QgR2Vu
ZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyKQotICAgICAgOiBnMV8oZzEpLCBnMl8o
ZzIpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAg
ICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KAotICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjI8VDEsIFQyPigKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBp
bXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0
b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXIyJiBvdGhlcik7Ci0KLSAgY29uc3QgR2Vu
ZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIgZzJfOwotfTsgIC8vIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RIb2xkZXIyCi0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFzcyBH
ZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzPgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjMgewotIHB1YmxpYzoKLUNhcnRlc2lhblByb2R1Y3RIb2xkZXIzKGNvbnN0IEdlbmVyYXRvcjEm
IGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKLSAgICBjb25zdCBHZW5lcmF0b3IzJiBnMykKLSAg
ICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMz4gPigKLSAgICAgICAgbmV3
IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzPFQxLCBUMiwgVDM+KAotICAgICAgICBzdGF0aWNf
Y2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMj4gPihnMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUMz4gPihnM18pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlcjMmIG90aGVyKTsKLQotICBjb25zdCBHZW5lcmF0b3IxIGcxXzsK
LSAgY29uc3QgR2VuZXJhdG9yMiBnMl87Ci0gIGNvbnN0IEdlbmVyYXRvcjMgZzNfOwotfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIzCi0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0
b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVy
YXRvcjQ+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNCB7Ci0gcHVibGljOgotQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjQoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAotICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCkKLSAg
ICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSB7fQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+
KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxU
MSwgVDIsIFQzLCBUND4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0
PFQxLCBUMiwgVDMsIFQ0PigKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+
ID4oZzFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSkpOwotICB9Ci0KLSBwcml2YXRl
OgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0g
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI0JiBvdGhlcik7Ci0K
LSAgY29uc3QgR2VuZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIgZzJfOwotICBjb25z
dCBHZW5lcmF0b3IzIGczXzsKLSAgY29uc3QgR2VuZXJhdG9yNCBnNF87Ci19OyAgLy8gY2xhc3Mg
Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjQKLQotdGVtcGxhdGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNs
YXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjMsCi0gICAgY2xhc3MgR2VuZXJhdG9yNCwg
Y2xhc3MgR2VuZXJhdG9yNT4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI1IHsKLSBwdWJs
aWM6Ci1DYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNShjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3Qg
R2VuZXJhdG9yMiYgZzIsCi0gICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRv
cjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSkKLSAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwg
ZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICBvcGVy
YXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+
ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxl
PFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I1PFQxLCBUMiwgVDMsIFQ0LCBUNT4oCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQxPiA+KGcxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQy
PiA+KGcyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ0PiA+KGc0XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ1PiA+KGc1XykpKTsKLSAgfQotCi0gcHJpdmF0
ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgot
ICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNSYgb3RoZXIpOwot
Ci0gIGNvbnN0IEdlbmVyYXRvcjEgZzFfOwotICBjb25zdCBHZW5lcmF0b3IyIGcyXzsKLSAgY29u
c3QgR2VuZXJhdG9yMyBnM187Ci0gIGNvbnN0IEdlbmVyYXRvcjQgZzRfOwotICBjb25zdCBHZW5l
cmF0b3I1IGc1XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNQotCi10ZW1w
bGF0ZSA8Y2xhc3MgR2VuZXJhdG9yMSwgY2xhc3MgR2VuZXJhdG9yMiwgY2xhc3MgR2VuZXJhdG9y
MywKLSAgICBjbGFzcyBHZW5lcmF0b3I0LCBjbGFzcyBHZW5lcmF0b3I1LCBjbGFzcyBHZW5lcmF0
b3I2PgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYgewotIHB1YmxpYzoKLUNhcnRlc2lh
blByb2R1Y3RIb2xkZXI2KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBn
MiwKLSAgICBjb25zdCBHZW5lcmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0
IEdlbmVyYXRvcjUmIGc1LAotICAgIGNvbnN0IEdlbmVyYXRvcjYmIGc2KQotICAgICAgOiBnMV8o
ZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpIHt9Ci0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgICB0eXBlbmFtZSBUNj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gPigpIGNvbnN0
IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNj4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMT4gPihnMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4g
PihnMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMz4gPihnM18pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUND4gPihnNF8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNT4gPihnNV8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUNj4gPihnNl8pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYmIG90aGVyKTsKLQotICBjb25zdCBH
ZW5lcmF0b3IxIGcxXzsKLSAgY29uc3QgR2VuZXJhdG9yMiBnMl87Ci0gIGNvbnN0IEdlbmVyYXRv
cjMgZzNfOwotICBjb25zdCBHZW5lcmF0b3I0IGc0XzsKLSAgY29uc3QgR2VuZXJhdG9yNSBnNV87
Ci0gIGNvbnN0IEdlbmVyYXRvcjYgZzZfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RI
b2xkZXI2Ci0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBj
bGFzcyBHZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNsYXNzIEdlbmVyYXRvcjUs
IGNsYXNzIEdlbmVyYXRvcjYsIGNsYXNzIEdlbmVyYXRvcjc+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyNyB7Ci0gcHVibGljOgotQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcoY29uc3QgR2Vu
ZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAotICAgIGNvbnN0IEdlbmVyYXRvcjMm
IGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUsCi0gICAgY29u
c3QgR2VuZXJhdG9yNiYgZzYsIGNvbnN0IEdlbmVyYXRvcjcmIGc3KQotICAgICAgOiBnMV8oZzEp
LCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpIHt9
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsCi0gICAgICBUNz4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0
b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+ID4oCi0gICAg
ICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNz4oCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFBhcmFtR2VuZXJhdG9yPFQ0PiA+KGc0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQ1PiA+KGc1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ2
PiA+KGc2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ3PiA+KGc3Xykp
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyNyYgb3RoZXIpOwotCi0gIGNvbnN0IEdlbmVyYXRvcjEgZzFfOwotICBjb25zdCBHZW5l
cmF0b3IyIGcyXzsKLSAgY29uc3QgR2VuZXJhdG9yMyBnM187Ci0gIGNvbnN0IEdlbmVyYXRvcjQg
ZzRfOwotICBjb25zdCBHZW5lcmF0b3I1IGc1XzsKLSAgY29uc3QgR2VuZXJhdG9yNiBnNl87Ci0g
IGNvbnN0IEdlbmVyYXRvcjcgZzdfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xk
ZXI3Ci0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBjbGFz
cyBHZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNsYXNzIEdlbmVyYXRvcjUsIGNs
YXNzIEdlbmVyYXRvcjYsIGNsYXNzIEdlbmVyYXRvcjcsCi0gICAgY2xhc3MgR2VuZXJhdG9yOD4K
LWNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI4IHsKLSBwdWJsaWM6Ci1DYXJ0ZXNpYW5Qcm9k
dWN0SG9sZGVyOChjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCi0g
ICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5l
cmF0b3I1JiBnNSwKLSAgICBjb25zdCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYg
ZzcsIGNvbnN0IEdlbmVyYXRvcjgmIGc4KQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLAotICAgICAgICAgIGc4Xyhn
OCkge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDg+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1
cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LAotICAgICAgVDg+ID4oKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOD4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0
b3I4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4oCi0gICAgICAgIHN0YXRpY19jYXN0
PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQyPiA+KGcyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQz
PiA+KGczXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ0PiA+KGc0Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ1PiA+KGc1XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ2PiA+KGc2XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFBhcmFtR2VuZXJhdG9yPFQ3PiA+KGc3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFt
R2VuZXJhdG9yPFQ4PiA+KGc4XykpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVt
ZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShj
b25zdCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOCYgb3RoZXIpOwotCi0gIGNvbnN0IEdlbmVyYXRv
cjEgZzFfOwotICBjb25zdCBHZW5lcmF0b3IyIGcyXzsKLSAgY29uc3QgR2VuZXJhdG9yMyBnM187
Ci0gIGNvbnN0IEdlbmVyYXRvcjQgZzRfOwotICBjb25zdCBHZW5lcmF0b3I1IGc1XzsKLSAgY29u
c3QgR2VuZXJhdG9yNiBnNl87Ci0gIGNvbnN0IEdlbmVyYXRvcjcgZzdfOwotICBjb25zdCBHZW5l
cmF0b3I4IGc4XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOAotCi10ZW1w
bGF0ZSA8Y2xhc3MgR2VuZXJhdG9yMSwgY2xhc3MgR2VuZXJhdG9yMiwgY2xhc3MgR2VuZXJhdG9y
MywKLSAgICBjbGFzcyBHZW5lcmF0b3I0LCBjbGFzcyBHZW5lcmF0b3I1LCBjbGFzcyBHZW5lcmF0
b3I2LCBjbGFzcyBHZW5lcmF0b3I3LAotICAgIGNsYXNzIEdlbmVyYXRvcjgsIGNsYXNzIEdlbmVy
YXRvcjk+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOSB7Ci0gcHVibGljOgotQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjkoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAotICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29u
c3QgR2VuZXJhdG9yNSYgZzUsCi0gICAgY29uc3QgR2VuZXJhdG9yNiYgZzYsIGNvbnN0IEdlbmVy
YXRvcjcmIGc3LCBjb25zdCBHZW5lcmF0b3I4JiBnOCwKLSAgICBjb25zdCBHZW5lcmF0b3I5JiBn
OSkKLSAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSwg
ZzZfKGc2KSwgZzdfKGc3KSwgZzhfKGc4KSwKLSAgICAgICAgICBnOV8oZzkpIHt9Ci0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
LCB0eXBlbmFtZSBUOT4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAgVDk+ID4oKSBjb25zdCB7
Ci0gICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwKLSAgICAgICAgVDk+ID4oCi0gICAgICAgIG5ldyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PigK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDQ+ID4oZzRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDU+ID4oZzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDY+ID4oZzZf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDc+ID4oZzdfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDg+ID4oZzhfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDk+ID4oZzlfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI5JiBvdGhlcik7Ci0KLSAgY29u
c3QgR2VuZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIgZzJfOwotICBjb25zdCBHZW5l
cmF0b3IzIGczXzsKLSAgY29uc3QgR2VuZXJhdG9yNCBnNF87Ci0gIGNvbnN0IEdlbmVyYXRvcjUg
ZzVfOwotICBjb25zdCBHZW5lcmF0b3I2IGc2XzsKLSAgY29uc3QgR2VuZXJhdG9yNyBnN187Ci0g
IGNvbnN0IEdlbmVyYXRvcjggZzhfOwotICBjb25zdCBHZW5lcmF0b3I5IGc5XzsKLX07ICAvLyBj
bGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOQotCi10ZW1wbGF0ZSA8Y2xhc3MgR2VuZXJhdG9y
MSwgY2xhc3MgR2VuZXJhdG9yMiwgY2xhc3MgR2VuZXJhdG9yMywKLSAgICBjbGFzcyBHZW5lcmF0
b3I0LCBjbGFzcyBHZW5lcmF0b3I1LCBjbGFzcyBHZW5lcmF0b3I2LCBjbGFzcyBHZW5lcmF0b3I3
LAotICAgIGNsYXNzIEdlbmVyYXRvcjgsIGNsYXNzIEdlbmVyYXRvcjksIGNsYXNzIEdlbmVyYXRv
cjEwPgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwIHsKLSBwdWJsaWM6Ci1DYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyMTAoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjIm
IGcyLAotICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczLCBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29u
c3QgR2VuZXJhdG9yNSYgZzUsCi0gICAgY29uc3QgR2VuZXJhdG9yNiYgZzYsIGNvbnN0IEdlbmVy
YXRvcjcmIGc3LCBjb25zdCBHZW5lcmF0b3I4JiBnOCwKLSAgICBjb25zdCBHZW5lcmF0b3I5JiBn
OSwgY29uc3QgR2VuZXJhdG9yMTAmIGcxMCkKLSAgICAgIDogZzFfKGcxKSwgZzJfKGcyKSwgZzNf
KGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSwgZzdfKGc3KSwgZzhfKGc4KSwKLSAgICAg
ICAgICBnOV8oZzkpLCBnMTBfKGcxMCkge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTA+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCi0gICAgICBUMTA+ID4oKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksCi0gICAgICAgIFQxMD4gPigKLSAgICAgICAgbmV3IENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3IxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LAotICAgICAgICAgICAgVDEwPigKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDE+ID4oZzFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDU+ID4oZzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFy
YW1HZW5lcmF0b3I8VDY+ID4oZzZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0
b3I8VDc+ID4oZzdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDg+ID4o
ZzhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDk+ID4oZzlfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDEwPiA+KGcxMF8pKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjEwJiBv
dGhlcik7Ci0KLSAgY29uc3QgR2VuZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIgZzJf
OwotICBjb25zdCBHZW5lcmF0b3IzIGczXzsKLSAgY29uc3QgR2VuZXJhdG9yNCBnNF87Ci0gIGNv
bnN0IEdlbmVyYXRvcjUgZzVfOwotICBjb25zdCBHZW5lcmF0b3I2IGc2XzsKLSAgY29uc3QgR2Vu
ZXJhdG9yNyBnN187Ci0gIGNvbnN0IEdlbmVyYXRvcjggZzhfOwotICBjb25zdCBHZW5lcmF0b3I5
IGc5XzsKLSAgY29uc3QgR2VuZXJhdG9yMTAgZzEwXzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Q
cm9kdWN0SG9sZGVyMTAKLQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8v
ICBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11
dGlsLWdlbmVyYXRlZC5oLnB1bXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjN2M0
N2FmMGJiMWU4ODk4NDkyZTA1NDI1ZTQwMzk3YTRkMTJmNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAKKysrIC9kZXYvbnVsbApAQCAt
MSwyODYgKzAsMCBAQAotJCQgLSotIG1vZGU6IGMrKzsgLSotCi0kdmFyIG4gPSA1MCAgJCQgTWF4
aW11bSBsZW5ndGggb2YgVmFsdWVzIGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCi0kdmFy
IG1heHR1cGxlID0gMTAgICQkIE1heGltdW0gbnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdl
IHdhbnQgdG8gc3VwcG9ydC4KLS8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwg
UmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8g
VHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXpl
ZCB0ZXN0cy4KLS8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1Qg
RURJVCBCWSBIQU5EIQotLy8KLS8vIEN1cnJlbnRseSBHb29nbGUgVGVzdCBzdXBwb3J0cyBhdCBt
b3N0ICRuIGFyZ3VtZW50cyBpbiBWYWx1ZXMsCi0vLyBhbmQgYXQgbW9zdCAkbWF4dHVwbGUgYXJn
dW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBjb250YWN0Ci0vLyBnb29nbGV0ZXN0ZnJhbWV3b3Jr
QGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5lZWQgbW9yZS4KLS8vIFBsZWFzZSBub3RlIHRoYXQg
dGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gQ29tYmluZSBpcyBsaW1pdGVkCi0vLyBieSB0aGUg
bWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMKLS8v
IGN1cnJlbnRseSBzZXQgYXQgJG1heHR1cGxlLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KLSNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwotCi0v
LyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVwZW5kcyBvbiBndGVzdCdzIG93biBoZWFkZXIgYmVp
bmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRpb25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5j
bHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBpbnNpZGUgI2lmIEdURVNUX0hBU19QQVJBTV9URVNU
LgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKLSNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VAotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb25zIG9mIFZh
bHVlc0luKCksIHdoaWNoIGlzIGltcGxlbWVudGVkIGluCi0vLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0
LXBhcmFtLXRlc3QuaC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0
ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+Ci1WYWx1ZXNJbihGb3J3
YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpOwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgc2l6ZV90IE4+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVzSW4o
Y29uc3QgVCAoJmFycmF5KVtOXSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1pbnRl
cm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1
ZXNJbigKLSAgICBjb25zdCBDb250YWluZXImIGNvbnRhaW5lcik7Ci0KLW5hbWVzcGFjZSBpbnRl
cm5hbCB7Ci0KLS8vIFVzZWQgaW4gdGhlIFZhbHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9s
eW1vcnBoaWMgY2FwYWJpbGl0aWVzLgotJHJhbmdlIGkgMS4ubgotJGZvciBpIFtbCi0kcmFuZ2Ug
aiAxLi5pCi0KLXRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+Ci1jbGFzcyBWYWx1
ZUFycmF5JGkgewotIHB1YmxpYzoKLSAgJGlmIGk9PTEgW1tleHBsaWNpdCBdXVZhbHVlQXJyYXkk
aSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRmb3IgaiwgW1t2JChqKV8odiRqKV1dIHt9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29u
c3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHskZm9yIGosIFtbc3RhdGljX2Nhc3Q8VD4odiQo
ailfKV1dfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgot
ICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZv
aWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkkaSYgb3RoZXIpOwotCi0kZm9yIGogW1sKLQot
ICBjb25zdCBUJGogdiQoailfOwotXV0KLQotfTsKLQotXV0KLQotIyBpZiBHVEVTVF9IQVNfQ09N
QklORQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KLS8vCi0vLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9m
IHZhbHVlcyBwcm9kdWNlZAotLy8gYnkgdGhlIGFyZ3VtZW50IGdlbmVyYXRvcnMuCi0vLwotJHJh
bmdlIGkgMi4ubWF4dHVwbGUKLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHJhbmdlIGsgMi4u
aQotCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgotY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvciRpCi0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8
IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+IHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbVCRqXV0+IFBhcmFtVHlwZTsKLQotICBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkoJGZvciBqLCBbW2NvbnN0IFBhcmFtR2VuZXJhdG9yPFQk
aj4mIGckal1dKQotICAgICAgOiAkZm9yIGosIFtbZyQoailfKGckaildXSB7fQotICB2aXJ0dWFs
IH5DYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVy
YXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3
IEl0ZXJhdG9yKHRoaXMsICRmb3IgaiwgW1tnJChqKV8sIGckKGopXy5iZWdpbigpXV0pOwotICB9
Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25z
dCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCAkZm9yIGosIFtbZyQoailfLCBnJChq
KV8uZW5kKCldXSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGlj
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRl
cmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwgJGZv
ciBqLCBbWwotCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUJGo+JiBnJGosCi0gICAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUJGo+OjppdGVyYXRvciYgY3VycmVudCQoaild
XSkKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwKLSRmb3IgaiwgW1sKLQotICAgICAgICAgIGJlZ2lu
JChqKV8oZyRqLmJlZ2luKCkpLCBlbmQkKGopXyhnJGouZW5kKCkpLCBjdXJyZW50JChqKV8oY3Vy
cmVudCRqKQotXV0gICAgewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAg
ICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICBy
ZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8vIEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQg
b24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9ycwotICAgIC8vIHNvIG5vIGNvbXBvbmVudCBpdGVy
YXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9mIHJhbmdlLCBlaXRoZXIuCi0gICAgdmlydHVhbCB2
b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3NlcnQoIUF0RW5kKCkpOwotICAgICAgKytjdXJyZW50
JChpKV87Ci0KLSRmb3IgayBbWwotICAgICAgaWYgKGN1cnJlbnQkKGkrMi1rKV8gPT0gZW5kJChp
KzItaylfKSB7Ci0gICAgICAgIGN1cnJlbnQkKGkrMi1rKV8gPSBiZWdpbiQoaSsyLWspXzsKLSAg
ICAgICAgKytjdXJyZW50JChpKzItay0xKV87Ci0gICAgICB9Ci0KLV1dCi0gICAgICBDb21wdXRl
Q3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3Io
KnRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNv
bnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMo
Y29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3Qgewot
ICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0
aGUgb3RoZXIKLSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNh
biBkb3duY2FzdC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIu
QmFzZUdlbmVyYXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8g
Y29tcGFyZSBpdGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0
b3JzLiIgPDwgc3RkOjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0K
LSAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZv
dGhlcik7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBi
b3RoIHBvaW50IGJleW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQg
Y2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZl
IHRvIGNvbnN1bHQgQXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhl
ci0+QXRFbmQoKSkgfHwKLSAgICAgICAgICgkZm9yIGogICYmIFtbCi0KLSAgICAgICAgICBjdXJy
ZW50JChqKV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQkKGopXwotXV0pOwotICAgIH0KLQotICAg
cHJpdmF0ZToKLSAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIpCi0gICAgICAgIDog
YmFzZV8ob3RoZXIuYmFzZV8pLCAkZm9yIGosIFtbCi0KLSAgICAgICAgYmVnaW4kKGopXyhvdGhl
ci5iZWdpbiQoailfKSwKLSAgICAgICAgZW5kJChqKV8ob3RoZXIuZW5kJChqKV8pLAotICAgICAg
ICBjdXJyZW50JChqKV8ob3RoZXIuY3VycmVudCQoailfKQotXV0gewotICAgICAgQ29tcHV0ZUN1
cnJlbnRWYWx1ZSgpOwotICAgIH0KLQotICAgIHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsK
LSAgICAgIGlmICghQXRFbmQoKSkKLSAgICAgICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUo
JGZvciBqLCBbWypjdXJyZW50JChqKV9dXSk7Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25z
dCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhl
IHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBo
YXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgotJGZvciBqICB8
fCBbWwotCi0gICAgICAgICAgY3VycmVudCQoailfID09IGVuZCQoailfCi1dXTsKLSAgICB9Ci0K
LSAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0g
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJl
Z2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0
cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0
ZXJhdG9yLgotJGZvciBqIFtbCi0KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
JGo+OjppdGVyYXRvciBiZWdpbiQoailfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQkaj46Oml0ZXJhdG9yIGVuZCQoailfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGopXzsKLV1dCi0KLSAgICBQYXJhbVR5cGUgY3VycmVu
dF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGk6Okl0
ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkm
IG90aGVyKTsKLQotCi0kZm9yIGogW1sKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VCRqPiBnJChq
KV87Ci0KLV1dCi19OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpCi0KLQot
XV0KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09E
RS4KLS8vCi0vLyBIZWxwZXIgY2xhc3NlcyBwcm92aWRpbmcgQ29tYmluZSgpIHdpdGggcG9seW1v
cnBoaWMgZmVhdHVyZXMuIFRoZXkgYWxsb3cKLS8vIGNhc3RpbmcgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvck48VD4gdG8gUGFyYW1HZW5lcmF0b3I8VT4gaWYgVCBpcwotLy8gY29udmVydGlibGUg
dG8gVS4KLS8vCi0kcmFuZ2UgaSAyLi5tYXh0dXBsZQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5p
Ci0KLXRlbXBsYXRlIDwkZm9yIGosIFtbY2xhc3MgR2VuZXJhdG9yJGpdXT4KLWNsYXNzIENhcnRl
c2lhblByb2R1Y3RIb2xkZXIkaSB7Ci0gcHVibGljOgotQ2FydGVzaWFuUHJvZHVjdEhvbGRlciRp
KCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3IkaiYgZyRqXV0pCi0gICAgICA6ICRmb3IgaiwgW1tn
JChqKV8oZyRqKV1dIHt9Ci0gIHRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpd
XT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVw
bGU8JGZvciBqLCBbW1Qkal1dPiA+KAotICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVy
YXRvciRpPCRmb3IgaiwgW1tUJGpdXT4oCi0kZm9yIGosW1sKLQotICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUJGo+ID4oZyQoailfKQotXV0pKTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2
b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyJGkmIG90aGVyKTsKLQot
Ci0kZm9yIGogW1sKLSAgY29uc3QgR2VuZXJhdG9yJGogZyQoailfOwotCi1dXQotfTsgIC8vIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIkaQotCi1dXQotCi0jIGVuZGlmICAvLyBHVEVTVF9I
QVNfQ09NQklORQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCi0KLSNlbmRpZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNlbmRpZiAgLy8g
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
YXJhbS11dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBh
cmFtLXV0aWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE0MmY3NDJhMDkxMGY3
Nzk2MWFjYmY2NTUxNThkMTQyYTE1M2ZhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXBhcmFtLXV0aWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDczMCArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdv
b2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIFR5cGUgYW5kIGZ1bmN0aW9uIHV0aWxpdGllcyBm
b3IgaW1wbGVtZW50aW5nIHBhcmFtZXRlcml6ZWQgdGVzdHMuCi0KLSNpZm5kZWYgR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCi0jZGVmaW5lIEdURVNUX0lO
Q0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9IXwotCi0jaW5jbHVkZSA8Y3R5
cGUuaD4KLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDx1
dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotLy8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRl
cGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0
aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8g
aW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1pbnRlcm5hbC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtl
ZF9wdHIuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gSW5wdXQgdG8gYSBwYXJhbWV0ZXJpemVkIHRlc3Qg
bmFtZSBnZW5lcmF0b3IsIGRlc2NyaWJpbmcgYSB0ZXN0IHBhcmFtZXRlci4KLS8vIENvbnNpc3Rz
IG9mIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYW5kIHRoZSBpbnRlZ2VyIHBhcmFtZXRlciBpbmRleC4K
LXRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Ci1zdHJ1Y3QgVGVzdFBhcmFtSW5mbyB7Ci0gIFRl
c3RQYXJhbUluZm8oY29uc3QgUGFyYW1UeXBlJiBhX3BhcmFtLCBzaXplX3QgYW5faW5kZXgpIDoK
LSAgICBwYXJhbShhX3BhcmFtKSwKLSAgICBpbmRleChhbl9pbmRleCkge30KLSAgUGFyYW1UeXBl
IHBhcmFtOwotICBzaXplX3QgaW5kZXg7Ci19OwotCi0vLyBBIGJ1aWx0aW4gcGFyYW1ldGVyaXpl
ZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yIHdoaWNoIHJldHVybnMgdGhlIHJlc3VsdCBvZgotLy8gdGVz
dGluZzo6UHJpbnRUb1N0cmluZy4KLXN0cnVjdCBQcmludFRvU3RyaW5nUGFyYW1OYW1lIHsKLSAg
dGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KLSAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25z
dCBUZXN0UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIGNvbnN0IHsKLSAgICByZXR1cm4gUHJp
bnRUb1N0cmluZyhpbmZvLnBhcmFtKTsKLSAgfQotfTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsK
LQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4K
LS8vCi0vLyBPdXRwdXRzIGEgbWVzc2FnZSBleHBsYWluaW5nIGludmFsaWQgcmVnaXN0cmF0aW9u
IG9mIGRpZmZlcmVudAotLy8gZml4dHVyZSBjbGFzcyBmb3IgdGhlIHNhbWUgdGVzdCBjYXNlLiBU
aGlzIG1heSBoYXBwZW4gd2hlbgotLy8gVEVTVF9QIG1hY3JvIGlzIHVzZWQgdG8gZGVmaW5lIHR3
byB0ZXN0cyB3aXRoIHRoZSBzYW1lIG5hbWUKLS8vIGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNl
cy4KLUdURVNUX0FQSV8gdm9pZCBSZXBvcnRJbnZhbGlkVGVzdENhc2VUeXBlKGNvbnN0IGNoYXIq
IHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWU+IGNs
YXNzIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlOwotdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQ
YXJhbUdlbmVyYXRvcjsKLQotLy8gSW50ZXJmYWNlIGZvciBpdGVyYXRpbmcgb3ZlciBlbGVtZW50
cyBwcm92aWRlZCBieSBhbiBpbXBsZW1lbnRhdGlvbgotLy8gb2YgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8VD4uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+UGFyYW1JdGVyYXRvckludGVyZmFjZSgpIHt9
Ci0gIC8vIEEgcG9pbnRlciB0byB0aGUgYmFzZSBnZW5lcmF0b3IgaW5zdGFuY2UuCi0gIC8vIFVz
ZWQgb25seSBmb3IgdGhlIHB1cnBvc2VzIG9mIGl0ZXJhdG9yIGNvbXBhcmlzb24KLSAgLy8gdG8g
bWFrZSBzdXJlIHRoYXQgdHdvIGl0ZXJhdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgZ2VuZXJhdG9y
LgotICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2VuZXJh
dG9yKCkgY29uc3QgPSAwOwotICAvLyBBZHZhbmNlcyBpdGVyYXRvciB0byBwb2ludCB0byB0aGUg
bmV4dCBlbGVtZW50Ci0gIC8vIHByb3ZpZGVkIGJ5IHRoZSBnZW5lcmF0b3IuIFRoZSBjYWxsZXIg
aXMgcmVzcG9uc2libGUKLSAgLy8gZm9yIG5vdCBjYWxsaW5nIEFkdmFuY2UoKSBvbiBhbiBpdGVy
YXRvciBlcXVhbCB0bwotICAvLyBCYXNlR2VuZXJhdG9yKCktPkVuZCgpLgotICB2aXJ0dWFsIHZv
aWQgQWR2YW5jZSgpID0gMDsKLSAgLy8gQ2xvbmVzIHRoZSBpdGVyYXRvciBvYmplY3QuIFVzZWQg
Zm9yIGltcGxlbWVudGluZyBjb3B5IHNlbWFudGljcwotICAvLyBvZiBQYXJhbUl0ZXJhdG9yPFQ+
LgotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2UqIENsb25lKCkgY29uc3QgPSAwOwot
ICAvLyBEZXJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgaXRlcmF0b3IgYW5kIHByb3ZpZGVzIChyZWFk
LW9ubHkpIGFjY2VzcwotICAvLyB0byB0aGUgcG9pbnRlZCB2YWx1ZS4gSXQgaXMgdGhlIGNhbGxl
cidzIHJlc3BvbnNpYmlsaXR5IG5vdCB0byBjYWxsCi0gIC8vIEN1cnJlbnQoKSBvbiBhbiBpdGVy
YXRvciBlcXVhbCB0byBCYXNlR2VuZXJhdG9yKCktPkVuZCgpLgotICAvLyBVc2VkIGZvciBpbXBs
ZW1lbnRpbmcgUGFyYW1HZW5lcmF0b3I8VD46Om9wZXJhdG9yKigpLgotICB2aXJ0dWFsIGNvbnN0
IFQqIEN1cnJlbnQoKSBjb25zdCA9IDA7Ci0gIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2
ZW4gaXRlcmF0b3IgYW5kIG90aGVyIHBvaW50IHRvIHRoZSBzYW1lCi0gIC8vIGVsZW1lbnQgaW4g
dGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yLgotICAvLyBVc2VkIGZvciBp
bXBsZW1lbnRpbmcgUGFyYW1HZW5lcmF0b3I8VD46Om9wZXJhdG9yPT0oKS4KLSAgdmlydHVhbCBi
b29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlJiBvdGhlcikgY29uc3QgPSAw
OwotfTsKLQotLy8gQ2xhc3MgaXRlcmF0aW5nIG92ZXIgZWxlbWVudHMgcHJvdmlkZWQgYnkgYW4g
aW1wbGVtZW50YXRpb24gb2YKLS8vIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+LiBJdCB3cmFw
cyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+Ci0vLyBhbmQgaW1wbGVtZW50cyB0aGUgY29uc3Qg
Zm9yd2FyZCBpdGVyYXRvciBjb25jZXB0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBQ
YXJhbUl0ZXJhdG9yIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBl
ZGVmIGNvbnN0IFQmIHJlZmVyZW5jZTsKLSAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90
eXBlOwotCi0gIC8vIFBhcmFtSXRlcmF0b3IgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIGltcGxf
IHBvaW50ZXIuCi0gIFBhcmFtSXRlcmF0b3IoY29uc3QgUGFyYW1JdGVyYXRvciYgb3RoZXIpIDog
aW1wbF8ob3RoZXIuaW1wbF8tPkNsb25lKCkpIHt9Ci0gIFBhcmFtSXRlcmF0b3ImIG9wZXJhdG9y
PShjb25zdCBQYXJhbUl0ZXJhdG9yJiBvdGhlcikgewotICAgIGlmICh0aGlzICE9ICZvdGhlcikK
LSAgICAgIGltcGxfLnJlc2V0KG90aGVyLmltcGxfLT5DbG9uZSgpKTsKLSAgICByZXR1cm4gKnRo
aXM7Ci0gIH0KLQotICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqaW1wbF8t
PkN1cnJlbnQoKTsgfQotICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gaW1w
bF8tPkN1cnJlbnQoKTsgfQotICAvLyBQcmVmaXggdmVyc2lvbiBvZiBvcGVyYXRvcisrLgotICBQ
YXJhbUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgewotICAgIGltcGxfLT5BZHZhbmNlKCk7Ci0gICAg
cmV0dXJuICp0aGlzOwotICB9Ci0gIC8vIFBvc3RmaXggdmVyc2lvbiBvZiBvcGVyYXRvcisrLgot
ICBQYXJhbUl0ZXJhdG9yIG9wZXJhdG9yKysoaW50IC8qdW51c2VkKi8pIHsKLSAgICBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBjbG9uZSA9IGltcGxfLT5DbG9uZSgpOwotICAgIGltcGxfLT5B
ZHZhbmNlKCk7Ci0gICAgcmV0dXJuIFBhcmFtSXRlcmF0b3IoY2xvbmUpOwotICB9Ci0gIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQYXJhbUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgewotICAgIHJldHVy
biBpbXBsXy5nZXQoKSA9PSBvdGhlci5pbXBsXy5nZXQoKSB8fCBpbXBsXy0+RXF1YWxzKCpvdGhl
ci5pbXBsXyk7Ci0gIH0KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhcmFtSXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICB9Ci0KLSBwcml2
YXRlOgotICBmcmllbmQgY2xhc3MgUGFyYW1HZW5lcmF0b3I8VD47Ci0gIGV4cGxpY2l0IFBhcmFt
SXRlcmF0b3IoUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogaW1wbCkgOiBpbXBsXyhpbXBsKSB7
fQotICBzY29wZWRfcHRyPFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4gPiBpbXBsXzsKLX07Ci0K
LS8vIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IGlzIHRoZSBiaW5hcnkgaW50ZXJmYWNlIHRv
IGFjY2VzcyBnZW5lcmF0b3JzCi0vLyBkZWZpbmVkIGluIG90aGVyIHRyYW5zbGF0aW9uIHVuaXRz
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBQYXJhbUdlbmVyYXRvckludGVyZmFjZSB7
Ci0gcHVibGljOgotICB0eXBlZGVmIFQgUGFyYW1UeXBlOwotCi0gIHZpcnR1YWwgflBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlKCkge30KLQotICAvLyBHZW5lcmF0b3IgaW50ZXJmYWNlIGRlZmluaXRp
b24KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBCZWdpbigpIGNvbnN0ID0g
MDsKLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBFbmQoKSBjb25zdCA9IDA7
Ci19OwotCi0vLyBXcmFwcyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiBhbmQgcHJvdmlkZXMg
Z2VuZXJhbCBnZW5lcmF0b3Igc3ludGF4Ci0vLyBjb21wYXRpYmxlIHdpdGggdGhlIFNUTCBDb250
YWluZXIgY29uY2VwdC4KLS8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBjb3B5IGluaXRpYWxpemF0
aW9uIHNlbWFudGljcyBhbmQgdGhlIGNvbnRhaW5lZAotLy8gUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8VD4gaW5zdGFuY2UgaXMgc2hhcmVkIGFtb25nIGFsbCBjb3BpZXMKLS8vIG9mIHRoZSBvcmln
aW5hbCBvYmplY3QuIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSB0aGF0IGluc3RhbmNlIGlzIGlt
bXV0YWJsZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBQYXJhbUdlbmVyYXRvciB7Ci0g
cHVibGljOgotICB0eXBlZGVmIFBhcmFtSXRlcmF0b3I8VD4gaXRlcmF0b3I7Ci0KLSAgZXhwbGlj
aXQgUGFyYW1HZW5lcmF0b3IoUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIGltcGwpIDogaW1w
bF8oaW1wbCkge30KLSAgUGFyYW1HZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3ImIG90aGVy
KSA6IGltcGxfKG90aGVyLmltcGxfKSB7fQotCi0gIFBhcmFtR2VuZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgUGFyYW1HZW5lcmF0b3ImIG90aGVyKSB7Ci0gICAgaW1wbF8gPSBvdGhlci5pbXBsXzsK
LSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIGl0ZXJhdG9yKGltcGxfLT5CZWdpbigpKTsgfQotICBpdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBpdGVyYXRvcihpbXBsXy0+RW5kKCkpOyB9Ci0KLSBwcml2YXRlOgotICBsaW5rZWRf
cHRyPGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87Ci19OwotCi0vLyBH
ZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSByYW5nZSBvZiB0d28gY29tcGFyYWJsZSB2YWx1ZXMuIENh
biBiZSB1c2VkIHRvCi0vLyBnZW5lcmF0ZSBzZXF1ZW5jZXMgb2YgdXNlci1kZWZpbmVkIHR5cGVz
IHRoYXQgaW1wbGVtZW50IG9wZXJhdG9yKygpIGFuZAotLy8gb3BlcmF0b3I8KCkuCi0vLyBUaGlz
IGNsYXNzIGlzIHVzZWQgaW4gdGhlIFJhbmdlKCkgZnVuY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgSW5jcmVtZW50VD4KLWNsYXNzIFJhbmdlR2VuZXJhdG9yIDogcHVibGlj
IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IHsKLSBwdWJsaWM6Ci0gIFJhbmdlR2VuZXJhdG9y
KFQgYmVnaW4sIFQgZW5kLCBJbmNyZW1lbnRUIHN0ZXApCi0gICAgICA6IGJlZ2luXyhiZWdpbiks
IGVuZF8oZW5kKSwKLSAgICAgICAgc3RlcF8oc3RlcCksIGVuZF9pbmRleF8oQ2FsY3VsYXRlRW5k
SW5kZXgoYmVnaW4sIGVuZCwgc3RlcCkpIHt9Ci0gIHZpcnR1YWwgflJhbmdlR2VuZXJhdG9yKCkg
e30KLQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIEJlZ2luKCkgY29uc3Qg
ewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgYmVnaW5fLCAwLCBzdGVwXyk7Ci0gIH0K
LSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KiBFbmQoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBlbmRfLCBlbmRfaW5kZXhfLCBzdGVwXyk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8VD4gewotICAgcHVibGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9y
SW50ZXJmYWNlPFQ+KiBiYXNlLCBUIHZhbHVlLCBpbnQgaW5kZXgsCi0gICAgICAgICAgICAgSW5j
cmVtZW50VCBzdGVwKQotICAgICAgICA6IGJhc2VfKGJhc2UpLCB2YWx1ZV8odmFsdWUpLCBpbmRl
eF8oaW5kZXgpLCBzdGVwXyhzdGVwKSB7fQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQot
ICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0
b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIHZpcnR1YWwgdm9p
ZCBBZHZhbmNlKCkgewotICAgICAgdmFsdWVfID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVfICsgc3Rl
cF8pOwotICAgICAgaW5kZXhfKys7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxUPiogQ2xvbmUoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0
aGlzKTsKLSAgICB9Ci0gICAgdmlydHVhbCBjb25zdCBUKiBDdXJyZW50KCkgY29uc3QgeyByZXR1
cm4gJnZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxUPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBi
YXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRv
ciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9D
SEVDS18oQmFzZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAg
ICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAg
ICAgICA8PCAiZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
IGNvbnN0IGludCBvdGhlcl9pbmRleCA9Ci0gICAgICAgICAgQ2hlY2tlZERvd25jYXN0VG9BY3R1
YWxUeXBlPGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIpLT5pbmRleF87Ci0gICAgICByZXR1cm4gaW5k
ZXhfID09IG90aGVyX2luZGV4OwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJdGVyYXRvcihj
b25zdCBJdGVyYXRvciYgb3RoZXIpCi0gICAgICAgIDogUGFyYW1JdGVyYXRvckludGVyZmFjZTxU
PigpLAotICAgICAgICAgIGJhc2VfKG90aGVyLmJhc2VfKSwgdmFsdWVfKG90aGVyLnZhbHVlXyks
IGluZGV4XyhvdGhlci5pbmRleF8pLAotICAgICAgICAgIHN0ZXBfKG90aGVyLnN0ZXBfKSB7fQot
Ci0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgot
ICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcik7Ci0KLSAgICBjb25zdCBQ
YXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogY29uc3QgYmFzZV87Ci0gICAgVCB2YWx1ZV87Ci0g
ICAgaW50IGluZGV4XzsKLSAgICBjb25zdCBJbmNyZW1lbnRUIHN0ZXBfOwotICB9OyAgLy8gY2xh
c3MgUmFuZ2VHZW5lcmF0b3I6Okl0ZXJhdG9yCi0KLSAgc3RhdGljIGludCBDYWxjdWxhdGVFbmRJ
bmRleChjb25zdCBUJiBiZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUJiBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5jcmVtZW50
VCYgc3RlcCkgewotICAgIGludCBlbmRfaW5kZXggPSAwOwotICAgIGZvciAoVCBpID0gYmVnaW47
IGkgPCBlbmQ7IGkgPSBzdGF0aWNfY2FzdDxUPihpICsgc3RlcCkpCi0gICAgICBlbmRfaW5kZXgr
KzsKLSAgICByZXR1cm4gZW5kX2luZGV4OwotICB9Ci0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBSYW5n
ZUdlbmVyYXRvciYgb3RoZXIpOwotCi0gIGNvbnN0IFQgYmVnaW5fOwotICBjb25zdCBUIGVuZF87
Ci0gIGNvbnN0IEluY3JlbWVudFQgc3RlcF87Ci0gIC8vIFRoZSBpbmRleCBmb3IgdGhlIGVuZCgp
IGl0ZXJhdG9yLiBBbGwgdGhlIGVsZW1lbnRzIGluIHRoZSBnZW5lcmF0ZWQKLSAgLy8gc2VxdWVu
Y2UgYXJlIGluZGV4ZWQgKDAtYmFzZWQpIHRvIGFpZCBpdGVyYXRvciBjb21wYXJpc29uLgotICBj
b25zdCBpbnQgZW5kX2luZGV4XzsKLX07ICAvLyBjbGFzcyBSYW5nZUdlbmVyYXRvcgotCi0KLS8v
IEdlbmVyYXRlcyB2YWx1ZXMgZnJvbSBhIHBhaXIgb2YgU1RMLXN0eWxlIGl0ZXJhdG9ycy4gVXNl
ZCBpbiB0aGUKLS8vIFZhbHVlc0luKCkgZnVuY3Rpb24uIFRoZSBlbGVtZW50cyBhcmUgY29waWVk
IGZyb20gdGhlIHNvdXJjZSByYW5nZQotLy8gc2luY2UgdGhlIHNvdXJjZSBjYW4gYmUgbG9jYXRl
ZCBvbiB0aGUgc3RhY2ssIGFuZCB0aGUgZ2VuZXJhdG9yCi0vLyBpcyBsaWtlbHkgdG8gcGVyc2lz
dCBiZXlvbmQgdGhhdCBzdGFjayBmcmFtZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
VmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50
ZXJmYWNlPFQ+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0
b3I+Ci0gIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcihGb3J3YXJkSXRlcmF0b3IgYmVn
aW4sIEZvcndhcmRJdGVyYXRvciBlbmQpCi0gICAgICA6IGNvbnRhaW5lcl8oYmVnaW4sIGVuZCkg
e30KLSAgdmlydHVhbCB+VmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yKCkge30KLQotICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIEJlZ2luKCkgY29uc3QgewotICAgIHJl
dHVybiBuZXcgSXRlcmF0b3IodGhpcywgY29udGFpbmVyXy5iZWdpbigpKTsKLSAgfQotICB2aXJ0
dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIEVuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4g
bmV3IEl0ZXJhdG9yKHRoaXMsIGNvbnRhaW5lcl8uZW5kKCkpOwotICB9Ci0KLSBwcml2YXRlOgot
ICB0eXBlZGVmIHR5cGVuYW1lIDo6c3RkOjp2ZWN0b3I8VD4gQ29udGFpbmVyVHlwZTsKLQotICBj
bGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKLSAgIHB1
YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFz
ZSwKLSAgICAgICAgICAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9pdGVyYXRvciBp
dGVyYXRvcikKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwgaXRlcmF0b3JfKGl0ZXJhdG9yKSB7fQot
ICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8VD4qIEJhc2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4g
YmFzZV87Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgewotICAgICAgKytpdGVy
YXRvcl87Ci0gICAgICB2YWx1ZV8ucmVzZXQoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBQYXJhbUl0
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRl
cmF0b3IoKnRoaXMpOwotICAgIH0KLSAgICAvLyBXZSBuZWVkIHRvIHVzZSBjYWNoZWQgdmFsdWUg
cmVmZXJlbmNlZCBieSBpdGVyYXRvcl8gYmVjYXVzZSAqaXRlcmF0b3JfCi0gICAgLy8gY2FuIHJl
dHVybiBhIHRlbXBvcmFyeSBvYmplY3QgKGFuZCBvZiB0eXBlIG90aGVyIHRoZW4gVCksIHNvIGp1
c3QKLSAgICAvLyBoYXZpbmcgInJldHVybiAmKml0ZXJhdG9yXzsiIGRvZXNuJ3Qgd29yay4KLSAg
ICAvLyB2YWx1ZV8gaXMgdXBkYXRlZCBoZXJlIGFuZCBub3QgaW4gQWR2YW5jZSgpIGJlY2F1c2Ug
QWR2YW5jZSgpCi0gICAgLy8gY2FuIGFkdmFuY2UgaXRlcmF0b3JfIGJleW9uZCB0aGUgZW5kIG9m
IHRoZSByYW5nZSwgYW5kIHdlIGNhbm5vdAotICAgIC8vIGRldGVjdCB0aGF0IGZhY3QuIFRoZSBj
bGllbnQgY29kZSwgb24gdGhlIG90aGVyIGhhbmQsIGlzCi0gICAgLy8gcmVzcG9uc2libGUgZm9y
IG5vdCBjYWxsaW5nIEN1cnJlbnQoKSBvbiBhbiBvdXQtb2YtcmFuZ2UgaXRlcmF0b3IuCi0gICAg
dmlydHVhbCBjb25zdCBUKiBDdXJyZW50KCkgY29uc3QgewotICAgICAgaWYgKHZhbHVlXy5nZXQo
KSA9PSBOVUxMKQotICAgICAgICB2YWx1ZV8ucmVzZXQobmV3IFQoKml0ZXJhdG9yXykpOwotICAg
ICAgcmV0dXJuIHZhbHVlXy5nZXQoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29sIEVxdWFscyhj
b25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8g
SGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIK
LSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2Fz
dC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVy
YXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBp
dGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwg
c3RkOjplbmRsOwotICAgICAgcmV0dXJuIGl0ZXJhdG9yXyA9PQotICAgICAgICAgIENoZWNrZWRE
b3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVyYXRvcj4oJm90aGVyKS0+aXRlcmF0b3JfOwot
ICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYgb3RoZXIp
Ci0gICAgICAgICAgLy8gVGhlIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGNhbGwgc3VwcHJlc3NlcyBh
IGZhbHNlIHdhcm5pbmcKLSAgICAgICAgICAvLyBlbWl0dGVkIGJ5IGdjYyB3aGVuIHN1cHBsaWVk
IHdpdGggdGhlIC1XZXh0cmEgb3B0aW9uLgotICAgICAgICA6IFBhcmFtSXRlcmF0b3JJbnRlcmZh
Y2U8VD4oKSwKLSAgICAgICAgICBiYXNlXyhvdGhlci5iYXNlXyksCi0gICAgICAgICAgaXRlcmF0
b3JfKG90aGVyLml0ZXJhdG9yXykge30KLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJm
YWNlPFQ+KiBjb25zdCBiYXNlXzsKLSAgICB0eXBlbmFtZSBDb250YWluZXJUeXBlOjpjb25zdF9p
dGVyYXRvciBpdGVyYXRvcl87Ci0gICAgLy8gQSBjYWNoZWQgdmFsdWUgb2YgKml0ZXJhdG9yXy4g
V2Uga2VlcCBpdCBoZXJlIHRvIGFsbG93IGFjY2VzcyBieQotICAgIC8vIHBvaW50ZXIgaW4gdGhl
IHdyYXBwaW5nIGl0ZXJhdG9yJ3Mgb3BlcmF0b3ItPigpLgotICAgIC8vIHZhbHVlXyBuZWVkcyB0
byBiZSBtdXRhYmxlIHRvIGJlIGFjY2Vzc2VkIGluIEN1cnJlbnQoKS4KLSAgICAvLyBVc2Ugb2Yg
c2NvcGVkX3B0ciBoZWxwcyBtYW5hZ2UgY2FjaGVkIHZhbHVlJ3MgbGlmZXRpbWUsCi0gICAgLy8g
d2hpY2ggaXMgYm91bmQgYnkgdGhlIGxpZmVzcGFuIG9mIHRoZSBpdGVyYXRvciBpdHNlbGYuCi0g
ICAgbXV0YWJsZSBzY29wZWRfcHRyPGNvbnN0IFQ+IHZhbHVlXzsKLSAgfTsgIC8vIGNsYXNzIFZh
bHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjo6SXRlcmF0b3IKLQotICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvciYgb3RoZXIpOwotCi0gIGNvbnN0IENv
bnRhaW5lclR5cGUgY29udGFpbmVyXzsKLX07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFu
Z2VHZW5lcmF0b3IKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KLS8vCi0vLyBEZWZhdWx0IHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVy
YXRvciwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZQotLy8gaW50ZWdlciB0ZXN0IHBh
cmFtZXRlciBpbmRleC4KLXRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+Ci1zdGQ6OnN0cmluZyBE
ZWZhdWx0UGFyYW1OYW1lKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBlPiYgaW5mbykgewot
ICBNZXNzYWdlIG5hbWVfc3RyZWFtOwotICBuYW1lX3N0cmVhbSA8PCBpbmZvLmluZGV4OwotICBy
ZXR1cm4gbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCk7Ci19Ci0KLS8vIElOVEVSTkFMIElNUExFTUVO
VEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gUGFyYW1ldGVyaXplZCB0
ZXN0IG5hbWUgb3ZlcmxvYWQgaGVscGVycywgd2hpY2ggaGVscCB0aGUKLS8vIElOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QIG1hY3JvIGNob29zZSBiZXR3ZWVuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcml6
ZWQKLS8vIHRlc3QgbmFtZSBnZW5lcmF0b3IgYW5kIHVzZXIgcGFyYW0gbmFtZSBnZW5lcmF0b3Iu
Ci10ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlLCBjbGFzcyBQYXJhbU5hbWVHZW5GdW5jdG9yPgot
UGFyYW1OYW1lR2VuRnVuY3RvciBHZXRQYXJhbU5hbWVHZW4oUGFyYW1OYW1lR2VuRnVuY3RvciBm
dW5jKSB7Ci0gIHJldHVybiBmdW5jOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgot
c3RydWN0IFBhcmFtTmFtZUdlbkZ1bmMgewotICB0eXBlZGVmIHN0ZDo6c3RyaW5nIFR5cGUoY29u
c3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+Jik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFy
YW1UeXBlPgotdHlwZW5hbWUgUGFyYW1OYW1lR2VuRnVuYzxQYXJhbVR5cGU+OjpUeXBlICpHZXRQ
YXJhbU5hbWVHZW4oKSB7Ci0gIHJldHVybiBEZWZhdWx0UGFyYW1OYW1lOwotfQotCi0vLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgotLy8KLS8vIFN0
b3JlcyBhIHBhcmFtZXRlciB2YWx1ZSBhbmQgbGF0ZXIgY3JlYXRlcyB0ZXN0cyBwYXJhbWV0ZXJp
emVkIHdpdGggdGhhdAotLy8gdmFsdWUuCi10ZW1wbGF0ZSA8Y2xhc3MgVGVzdENsYXNzPgotY2xh
c3MgUGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5IDogcHVibGljIFRlc3RGYWN0b3J5QmFzZSB7Ci0g
cHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1lIFRlc3RDbGFzczo6UGFyYW1UeXBlIFBhcmFtVHlw
ZTsKLSAgZXhwbGljaXQgUGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5KFBhcmFtVHlwZSBwYXJhbWV0
ZXIpIDoKLSAgICAgIHBhcmFtZXRlcl8ocGFyYW1ldGVyKSB7fQotICB2aXJ0dWFsIFRlc3QqIENy
ZWF0ZVRlc3QoKSB7Ci0gICAgVGVzdENsYXNzOjpTZXRQYXJhbSgmcGFyYW1ldGVyXyk7Ci0gICAg
cmV0dXJuIG5ldyBUZXN0Q2xhc3MoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgUGFyYW1U
eXBlIHBhcmFtZXRlcl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhQYXJh
bWV0ZXJpemVkVGVzdEZhY3RvcnkpOwotfTsKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBUZXN0TWV0YUZhY3RvcnlCYXNlIGlz
IGEgYmFzZSBjbGFzcyBmb3IgbWV0YS1mYWN0b3JpZXMgdGhhdCBjcmVhdGUKLS8vIHRlc3QgZmFj
dG9yaWVzIGZvciBwYXNzaW5nIGludG8gTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8gZnVuY3Rpb24u
Ci10ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBlPgotY2xhc3MgVGVzdE1ldGFGYWN0b3J5QmFzZSB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIH5UZXN0TWV0YUZhY3RvcnlCYXNlKCkge30KLQotICB2aXJ0
dWFsIFRlc3RGYWN0b3J5QmFzZSogQ3JlYXRlVGVzdEZhY3RvcnkoUGFyYW1UeXBlIHBhcmFtZXRl
cikgPSAwOwotfTsKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KLS8vCi0vLyBUZXN0TWV0YUZhY3RvcnkgY3JlYXRlcyB0ZXN0IGZhY3Rvcmll
cyBmb3IgcGFzc2luZyBpbnRvCi0vLyBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbyBmdW5jdGlvbi4g
U2luY2UgTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8gcmVjZWl2ZXMKLS8vIG93bmVyc2hpcCBvZiB0
ZXN0IGZhY3RvcnkgcG9pbnRlciwgc2FtZSBmYWN0b3J5IG9iamVjdCBjYW5ub3QgYmUgcGFzc2Vk
Ci0vLyBpbnRvIHRoYXQgbWV0aG9kIHR3aWNlLiBCdXQgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5m
byBpcyBnb2luZyB0byBjYWxsCi0vLyBpdCBmb3IgZWFjaCBUZXN0L1BhcmFtZXRlciB2YWx1ZSBj
b21iaW5hdGlvbi4gVGh1cyBpdCBuZWVkcyBtZXRhIGZhY3RvcnkKLS8vIGNyZWF0b3IgY2xhc3Mu
Ci10ZW1wbGF0ZSA8Y2xhc3MgVGVzdENhc2U+Ci1jbGFzcyBUZXN0TWV0YUZhY3RvcnkKLSAgICA6
IHB1YmxpYyBUZXN0TWV0YUZhY3RvcnlCYXNlPHR5cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGU+
IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlwZSBQYXJh
bVR5cGU7Ci0KLSAgVGVzdE1ldGFGYWN0b3J5KCkge30KLQotICB2aXJ0dWFsIFRlc3RGYWN0b3J5
QmFzZSogQ3JlYXRlVGVzdEZhY3RvcnkoUGFyYW1UeXBlIHBhcmFtZXRlcikgewotICAgIHJldHVy
biBuZXcgUGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5PFRlc3RDYXNlPihwYXJhbWV0ZXIpOwotICB9
Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RNZXRh
RmFjdG9yeSk7Ci19OwotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0Ug
SU4gVVNFUiBDT0RFLgotLy8KLS8vIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIGlzIGEg
Z2VuZXJpYyBpbnRlcmZhY2UKLS8vIHRvIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gY2xhc3Nl
cy4gUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UKLS8vIGFjY3VtdWxhdGVzIHRlc3QgaW5m
b3JtYXRpb24gcHJvdmlkZWQgYnkgVEVTVF9QIG1hY3JvIGludm9jYXRpb25zCi0vLyBhbmQgZ2Vu
ZXJhdG9ycyBwcm92aWRlZCBieSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpbnZvY2F0
aW9ucwotLy8gYW5kIHVzZXMgdGhhdCBpbmZvcm1hdGlvbiB0byByZWdpc3RlciBhbGwgcmVzdWx0
aW5nIHRlc3QgaW5zdGFuY2VzCi0vLyBpbiBSZWdpc3RlclRlc3RzIG1ldGhvZC4gVGhlIFBhcmFt
ZXRlcml6ZVRlc3RDYXNlUmVnaXN0cnkgY2xhc3MgaG9sZHMKLS8vIGEgY29sbGVjdGlvbiBvZiBw
b2ludGVycyB0byB0aGUgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbyBvYmplY3RzCi0vLyBhbmQg
Y2FsbHMgUmVnaXN0ZXJUZXN0cygpIG9uIGVhY2ggb2YgdGhlbSB3aGVuIGFza2VkLgotY2xhc3Mg
UGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+UGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UoKSB7fQotCi0gIC8vIEJhc2UgcGFydCBvZiB0ZXN0
IGNhc2UgbmFtZSBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KLSAgdmlydHVhbCBjb25zdCBzdGQ6OnN0
cmluZyYgR2V0VGVzdENhc2VOYW1lKCkgY29uc3QgPSAwOwotICAvLyBUZXN0IGNhc2UgaWQgdG8g
dmVyaWZ5IGlkZW50aXR5LgotICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0Q2FzZVR5cGVJZCgpIGNv
bnN0ID0gMDsKLSAgLy8gVW5pdFRlc3QgY2xhc3MgaW52b2tlcyB0aGlzIG1ldGhvZCB0byByZWdp
c3RlciB0ZXN0cyBpbiB0aGlzCi0gIC8vIHRlc3QgY2FzZSByaWdodCBiZWZvcmUgcnVubmluZyB0
aGVtIGluIFJVTl9BTExfVEVTVFMgbWFjcm8uCi0gIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBub3Qg
YmUgY2FsbGVkIG1vcmUgdGhlbiBvbmNlIG9uIGFueSBzaW5nbGUKLSAgLy8gaW5zdGFuY2Ugb2Yg
YSBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSBkZXJpdmVkIGNsYXNzLgotICB2aXJ0dWFs
IHZvaWQgUmVnaXN0ZXJUZXN0cygpID0gMDsKLQotIHByb3RlY3RlZDoKLSAgUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlSW5mb0Jhc2UoKSB7fQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSk7Ci19OwotCi0vLyBJ
TlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgotLy8KLS8v
IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gYWNjdW11bGF0ZXMgdGVzdHMgb2J0YWluZWQgZnJv
bSBURVNUX1AKLS8vIG1hY3JvIGludm9jYXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdGVzdCBjYXNl
IGFuZCBnZW5lcmF0b3JzCi0vLyBvYnRhaW5lZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
IG1hY3JvIGludm9jYXRpb25zIGZvciB0aGF0Ci0vLyB0ZXN0IGNhc2UuIEl0IHJlZ2lzdGVycyB0
ZXN0cyB3aXRoIGFsbCB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IGFsbAotLy8gZ2VuZXJhdG9ycyB3aGVu
IGFza2VkLgotdGVtcGxhdGUgPGNsYXNzIFRlc3RDYXNlPgotY2xhc3MgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mbyA6IHB1YmxpYyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSB7Ci0gcHVi
bGljOgotICAvLyBQYXJhbVR5cGUgYW5kIEdlbmVyYXRvckNyZWF0aW9uRnVuYyBhcmUgcHJpdmF0
ZSB0eXBlcyBidXQgYXJlIHJlcXVpcmVkCi0gIC8vIGZvciBkZWNsYXJhdGlvbnMgb2YgcHVibGlj
IG1ldGhvZHMgQWRkVGVzdFBhdHRlcm4oKSBhbmQKLSAgLy8gQWRkVGVzdENhc2VJbnN0YW50aWF0
aW9uKCkuCi0gIHR5cGVkZWYgdHlwZW5hbWUgVGVzdENhc2U6OlBhcmFtVHlwZSBQYXJhbVR5cGU7
Ci0gIC8vIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFwcHJvcHJpYXRl
IGdlbmVyYXRvciB0eXBlLgotICB0eXBlZGVmIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oR2Vu
ZXJhdG9yQ3JlYXRpb25GdW5jKSgpOwotICB0eXBlZGVmIHR5cGVuYW1lIFBhcmFtTmFtZUdlbkZ1
bmM8UGFyYW1UeXBlPjo6VHlwZSBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jOwotCi0gIGV4cGxpY2l0
IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8oCi0gICAgICBjb25zdCBjaGFyKiBuYW1lLCBDb2Rl
TG9jYXRpb24gY29kZV9sb2NhdGlvbikKLSAgICAgIDogdGVzdF9jYXNlX25hbWVfKG5hbWUpLCBj
b2RlX2xvY2F0aW9uXyhjb2RlX2xvY2F0aW9uKSB7fQotCi0gIC8vIFRlc3QgY2FzZSBiYXNlIG5h
bWUgZm9yIGRpc3BsYXkgcHVycG9zZXMuCi0gIHZpcnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIEdl
dFRlc3RDYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRlc3RfY2FzZV9uYW1lXzsgfQotICAvLyBU
ZXN0IGNhc2UgaWQgdG8gdmVyaWZ5IGlkZW50aXR5LgotICB2aXJ0dWFsIFR5cGVJZCBHZXRUZXN0
Q2FzZVR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuIEdldFR5cGVJZDxUZXN0Q2FzZT4oKTsgfQotICAv
LyBURVNUX1AgbWFjcm8gdXNlcyBBZGRUZXN0UGF0dGVybigpIHRvIHJlY29yZCBpbmZvcm1hdGlv
bgotICAvLyBhYm91dCBhIHNpbmdsZSB0ZXN0IGluIGEgTG9jYWxUZXN0SW5mbyBzdHJ1Y3R1cmUu
Ci0gIC8vIHRlc3RfY2FzZV9uYW1lIGlzIHRoZSBiYXNlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSAo
d2l0aG91dCBpbnZvY2F0aW9uCi0gIC8vIHByZWZpeCkuIHRlc3RfYmFzZV9uYW1lIGlzIHRoZSBu
YW1lIG9mIGFuIGluZGl2aWR1YWwgdGVzdCB3aXRob3V0Ci0gIC8vIHBhcmFtZXRlciBpbmRleC4g
Rm9yIHRoZSB0ZXN0IFNlcXVlbmNlQS9Gb29UZXN0LkRvQmFyLzEgRm9vVGVzdCBpcwotICAvLyB0
ZXN0IGNhc2UgYmFzZSBuYW1lIGFuZCBEb0JhciBpcyB0ZXN0IGJhc2UgbmFtZS4KLSAgdm9pZCBB
ZGRUZXN0UGF0dGVybihjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0ZXN0X2Jhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBUZXN0TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4qIG1ldGFfZmFjdG9yeSkgewotICAgIHRl
c3RzXy5wdXNoX2JhY2sobGlua2VkX3B0cjxUZXN0SW5mbz4obmV3IFRlc3RJbmZvKHRlc3RfY2Fz
ZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfYmFzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGFfZmFjdG9yeSkpKTsKLSAgfQotICAvLyBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUCBtYWNybyB1c2VzIEFkZEdlbmVyYXRvcigpIHRvIHJlY29yZCBpbmZv
cm1hdGlvbgotICAvLyBhYm91dCBhIGdlbmVyYXRvci4KLSAgaW50IEFkZFRlc3RDYXNlSW5zdGFu
dGlhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlhdGlvbl9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZnVuYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5jKiBuYW1lX2Z1
bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUpIHsKLSAgICBpbnN0YW50aWF0aW9uc18ucHVzaF9iYWNrKAotICAgICAgICBJbnN0YW50
aWF0aW9uSW5mbyhpbnN0YW50aWF0aW9uX25hbWUsIGZ1bmMsIG5hbWVfZnVuYywgZmlsZSwgbGlu
ZSkpOwotICAgIHJldHVybiAwOyAgLy8gUmV0dXJuIHZhbHVlIHVzZWQgb25seSB0byBydW4gdGhp
cyBtZXRob2QgaW4gbmFtZXNwYWNlIHNjb3BlLgotICB9Ci0gIC8vIFVuaXRUZXN0IGNsYXNzIGlu
dm9rZXMgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UKLSAg
Ly8gdGVzdCBjYXNlcyByaWdodCBiZWZvcmUgcnVubmluZyB0ZXN0cyBpbiBSVU5fQUxMX1RFU1RT
IG1hY3JvLgotICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoZW4g
b25jZSBvbiBhbnkgc2luZ2xlCi0gIC8vIGluc3RhbmNlIG9mIGEgUGFyYW1ldGVyaXplZFRlc3RD
YXNlSW5mb0Jhc2UgZGVyaXZlZCBjbGFzcy4KLSAgLy8gVW5pdFRlc3QgaGFzIGEgZ3VhcmQgdG8g
cHJldmVudCBmcm9tIGNhbGxpbmcgdGhpcyBtZXRob2QgbW9yZSB0aGVuIG9uY2UuCi0gIHZpcnR1
YWwgdm9pZCBSZWdpc3RlclRlc3RzKCkgewotICAgIGZvciAodHlwZW5hbWUgVGVzdEluZm9Db250
YWluZXI6Oml0ZXJhdG9yIHRlc3RfaXQgPSB0ZXN0c18uYmVnaW4oKTsKLSAgICAgICAgIHRlc3Rf
aXQgIT0gdGVzdHNfLmVuZCgpOyArK3Rlc3RfaXQpIHsKLSAgICAgIGxpbmtlZF9wdHI8VGVzdElu
Zm8+IHRlc3RfaW5mbyA9ICp0ZXN0X2l0OwotICAgICAgZm9yICh0eXBlbmFtZSBJbnN0YW50aWF0
aW9uQ29udGFpbmVyOjppdGVyYXRvciBnZW5faXQgPQotICAgICAgICAgICAgICAgaW5zdGFudGlh
dGlvbnNfLmJlZ2luKCk7IGdlbl9pdCAhPSBpbnN0YW50aWF0aW9uc18uZW5kKCk7Ci0gICAgICAg
ICAgICAgICArK2dlbl9pdCkgewotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaW5zdGFudGlh
dGlvbl9uYW1lID0gZ2VuX2l0LT5uYW1lOwotICAgICAgICBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5
cGU+IGdlbmVyYXRvcigoKmdlbl9pdC0+Z2VuZXJhdG9yKSgpKTsKLSAgICAgICAgUGFyYW1OYW1l
R2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jID0gZ2VuX2l0LT5uYW1lX2Z1bmM7Ci0gICAgICAgIGNv
bnN0IGNoYXIqIGZpbGUgPSBnZW5faXQtPmZpbGU7Ci0gICAgICAgIGludCBsaW5lID0gZ2VuX2l0
LT5saW5lOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lOwotICAgICAgICBp
ZiAoICFpbnN0YW50aWF0aW9uX25hbWUuZW1wdHkoKSApCi0gICAgICAgICAgdGVzdF9jYXNlX25h
bWUgPSBpbnN0YW50aWF0aW9uX25hbWUgKyAiLyI7Ci0gICAgICAgIHRlc3RfY2FzZV9uYW1lICs9
IHRlc3RfaW5mby0+dGVzdF9jYXNlX2Jhc2VfbmFtZTsKLQotICAgICAgICBzaXplX3QgaSA9IDA7
Ci0gICAgICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB0ZXN0X3BhcmFtX25hbWVzOwotICAgICAg
ICBmb3IgKHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT46Oml0ZXJhdG9yIHBhcmFt
X2l0ID0KLSAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmJlZ2luKCk7Ci0gICAgICAgICAgICAg
cGFyYW1faXQgIT0gZ2VuZXJhdG9yLmVuZCgpOyArK3BhcmFtX2l0LCArK2kpIHsKLSAgICAgICAg
ICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0KLSAgICAgICAgICBzdGQ6OnN0cmluZyBwYXJh
bV9uYW1lID0gbmFtZV9mdW5jKAotICAgICAgICAgICAgICBUZXN0UGFyYW1JbmZvPFBhcmFtVHlw
ZT4oKnBhcmFtX2l0LCBpKSk7Ci0KLSAgICAgICAgICBHVEVTVF9DSEVDS18oSXNWYWxpZFBhcmFt
TmFtZShwYXJhbV9uYW1lKSkKLSAgICAgICAgICAgICAgPDwgIlBhcmFtZXRlcml6ZWQgdGVzdCBu
YW1lICciIDw8IHBhcmFtX25hbWUKLSAgICAgICAgICAgICAgPDwgIicgaXMgaW52YWxpZCwgaW4g
IiA8PCBmaWxlCi0gICAgICAgICAgICAgIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwgc3RkOjplbmRs
OwotCi0gICAgICAgICAgR1RFU1RfQ0hFQ0tfKHRlc3RfcGFyYW1fbmFtZXMuY291bnQocGFyYW1f
bmFtZSkgPT0gMCkKLSAgICAgICAgICAgICAgPDwgIkR1cGxpY2F0ZSBwYXJhbWV0ZXJpemVkIHRl
c3QgbmFtZSAnIiA8PCBwYXJhbV9uYW1lCi0gICAgICAgICAgICAgIDw8ICInLCBpbiAiIDw8IGZp
bGUgPDwgIiBsaW5lICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7Ci0KLSAgICAgICAgICB0ZXN0X3Bh
cmFtX25hbWVzLmluc2VydChwYXJhbV9uYW1lKTsKLQotICAgICAgICAgIHRlc3RfbmFtZV9zdHJl
YW0gPDwgdGVzdF9pbmZvLT50ZXN0X2Jhc2VfbmFtZSA8PCAiLyIgPDwgcGFyYW1fbmFtZTsKLSAg
ICAgICAgICBNYWtlQW5kUmVnaXN0ZXJUZXN0SW5mbygKLSAgICAgICAgICAgICAgdGVzdF9jYXNl
X25hbWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgdGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmco
KS5jX3N0cigpLAotICAgICAgICAgICAgICBOVUxMLCAgLy8gTm8gdHlwZSBwYXJhbWV0ZXIuCi0g
ICAgICAgICAgICAgIFByaW50VG9TdHJpbmcoKnBhcmFtX2l0KS5jX3N0cigpLAotICAgICAgICAg
ICAgICBjb2RlX2xvY2F0aW9uXywKLSAgICAgICAgICAgICAgR2V0VGVzdENhc2VUeXBlSWQoKSwK
LSAgICAgICAgICAgICAgVGVzdENhc2U6OlNldFVwVGVzdENhc2UsCi0gICAgICAgICAgICAgIFRl
c3RDYXNlOjpUZWFyRG93blRlc3RDYXNlLAotICAgICAgICAgICAgICB0ZXN0X2luZm8tPnRlc3Rf
bWV0YV9mYWN0b3J5LT5DcmVhdGVUZXN0RmFjdG9yeSgqcGFyYW1faXQpKTsKLSAgICAgICAgfSAg
Ly8gZm9yIHBhcmFtX2l0Ci0gICAgICB9ICAvLyBmb3IgZ2VuX2l0Ci0gICAgfSAgLy8gZm9yIHRl
c3RfaXQKLSAgfSAgLy8gUmVnaXN0ZXJUZXN0cwotCi0gcHJpdmF0ZToKLSAgLy8gTG9jYWxUZXN0
SW5mbyBzdHJ1Y3R1cmUga2VlcHMgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgdGVzdCByZWdp
c3RlcmVkCi0gIC8vIHdpdGggVEVTVF9QIG1hY3JvLgotICBzdHJ1Y3QgVGVzdEluZm8gewotICAg
IFRlc3RJbmZvKGNvbnN0IGNoYXIqIGFfdGVzdF9jYXNlX2Jhc2VfbmFtZSwKLSAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBhX3Rlc3RfYmFzZV9uYW1lLAotICAgICAgICAgICAgIFRlc3RNZXRhRmFj
dG9yeUJhc2U8UGFyYW1UeXBlPiogYV90ZXN0X21ldGFfZmFjdG9yeSkgOgotICAgICAgICB0ZXN0
X2Nhc2VfYmFzZV9uYW1lKGFfdGVzdF9jYXNlX2Jhc2VfbmFtZSksCi0gICAgICAgIHRlc3RfYmFz
ZV9uYW1lKGFfdGVzdF9iYXNlX25hbWUpLAotICAgICAgICB0ZXN0X21ldGFfZmFjdG9yeShhX3Rl
c3RfbWV0YV9mYWN0b3J5KSB7fQotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX2Jh
c2VfbmFtZTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0X2Jhc2VfbmFtZTsKLSAgICBjb25z
dCBzY29wZWRfcHRyPFRlc3RNZXRhRmFjdG9yeUJhc2U8UGFyYW1UeXBlPiA+IHRlc3RfbWV0YV9m
YWN0b3J5OwotICB9OwotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUZXN0SW5m
bz4gPiBUZXN0SW5mb0NvbnRhaW5lcjsKLSAgLy8gUmVjb3JkcyBkYXRhIHJlY2VpdmVkIGZyb20g
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgbWFjcm9zOgotICAvLyAgPEluc3RhbnRpYXRpb24gbmFt
ZSwgU2VxdWVuY2UgZ2VuZXJhdG9yIGNyZWF0aW9uIGZ1bmN0aW9uLAotICAvLyAgICAgTmFtZSBn
ZW5lcmF0b3IgZnVuY3Rpb24sIFNvdXJjZSBmaWxlLCBTb3VyY2UgbGluZT4KLSAgc3RydWN0IElu
c3RhbnRpYXRpb25JbmZvIHsKLSAgICAgIEluc3RhbnRpYXRpb25JbmZvKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yQ3JlYXRpb25G
dW5jKiBnZW5lcmF0b3JfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU5hbWVHZW5l
cmF0b3JGdW5jKiBuYW1lX2Z1bmNfaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlX2luLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfaW4pCi0gICAg
ICAgICAgOiBuYW1lKG5hbWVfaW4pLAotICAgICAgICAgICAgZ2VuZXJhdG9yKGdlbmVyYXRvcl9p
biksCi0gICAgICAgICAgICBuYW1lX2Z1bmMobmFtZV9mdW5jX2luKSwKLSAgICAgICAgICAgIGZp
bGUoZmlsZV9pbiksCi0gICAgICAgICAgICBsaW5lKGxpbmVfaW4pIHt9Ci0KLSAgICAgIHN0ZDo6
c3RyaW5nIG5hbWU7Ci0gICAgICBHZW5lcmF0b3JDcmVhdGlvbkZ1bmMqIGdlbmVyYXRvcjsKLSAg
ICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYzsKLSAgICAgIGNvbnN0IGNoYXIq
IGZpbGU7Ci0gICAgICBpbnQgbGluZTsKLSAgfTsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPElu
c3RhbnRpYXRpb25JbmZvPiBJbnN0YW50aWF0aW9uQ29udGFpbmVyOwotCi0gIHN0YXRpYyBib29s
IElzVmFsaWRQYXJhbU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpIHsKLSAgICAvLyBDaGVj
ayBmb3IgZW1wdHkgc3RyaW5nCi0gICAgaWYgKG5hbWUuZW1wdHkoKSkKLSAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGNoYXJhY3RlcnMKLSAgICBmb3IgKHN0
ZDo6c3RyaW5nOjpzaXplX3R5cGUgaW5kZXggPSAwOyBpbmRleCA8IG5hbWUuc2l6ZSgpOyArK2lu
ZGV4KSB7Ci0gICAgICBpZiAoIWlzYWxudW0obmFtZVtpbmRleF0pICYmIG5hbWVbaW5kZXhdICE9
ICdfJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
ICB9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdF9jYXNlX25hbWVfOwotICBDb2RlTG9jYXRp
b24gY29kZV9sb2NhdGlvbl87Ci0gIFRlc3RJbmZvQ29udGFpbmVyIHRlc3RzXzsKLSAgSW5zdGFu
dGlhdGlvbkNvbnRhaW5lciBpbnN0YW50aWF0aW9uc187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvKTsKLX07ICAvLyBjbGFzcyBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVn
aXN0cnkgY29udGFpbnMgYSBtYXAgb2YgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UKLS8v
IGNsYXNzZXMgYWNjZXNzZWQgYnkgdGVzdCBjYXNlIG5hbWVzLiBURVNUX1AgYW5kIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QCi0vLyBtYWNyb3MgdXNlIGl0IHRvIGxvY2F0ZSB0aGVpciBjb3JyZXNw
b25kaW5nIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8KLS8vIGRlc2NyaXB0b3JzLgotY2xhc3Mg
UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgewotIHB1YmxpYzoKLSAgUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlUmVnaXN0cnkoKSB7fQotICB+UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnko
KSB7Ci0gICAgZm9yIChUZXN0Q2FzZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9j
YXNlX2luZm9zXy5iZWdpbigpOwotICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQo
KTsgKytpdCkgewotICAgICAgZGVsZXRlICppdDsKLSAgICB9Ci0gIH0KLQotICAvLyBMb29rcyB1
cCBvciBjcmVhdGVzIGFuZCByZXR1cm5zIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgaW5mb3JtYXRp
b24gYWJvdXQKLSAgLy8gdGVzdHMgYW5kIGluc3RhbnRpYXRpb25zIG9mIGEgcGFydGljdWxhciB0
ZXN0IGNhc2UuCi0gIHRlbXBsYXRlIDxjbGFzcyBUZXN0Q2FzZT4KLSAgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mbzxUZXN0Q2FzZT4qIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcigKLSAgICAgIGNv
bnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRp
b24pIHsKLSAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiogdHlwZWRfdGVz
dF9pbmZvID0gTlVMTDsKLSAgICBmb3IgKFRlc3RDYXNlSW5mb0NvbnRhaW5lcjo6aXRlcmF0b3Ig
aXQgPSB0ZXN0X2Nhc2VfaW5mb3NfLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSB0ZXN0X2Nhc2Vf
aW5mb3NfLmVuZCgpOyArK2l0KSB7Ci0gICAgICBpZiAoKCppdCktPkdldFRlc3RDYXNlTmFtZSgp
ID09IHRlc3RfY2FzZV9uYW1lKSB7Ci0gICAgICAgIGlmICgoKml0KS0+R2V0VGVzdENhc2VUeXBl
SWQoKSAhPSBHZXRUeXBlSWQ8VGVzdENhc2U+KCkpIHsKLSAgICAgICAgICAvLyBDb21wbGFpbiBh
Ym91dCBpbmNvcnJlY3QgdXNhZ2Ugb2YgR29vZ2xlIFRlc3QgZmFjaWxpdGllcwotICAgICAgICAg
IC8vIGFuZCB0ZXJtaW5hdGUgdGhlIHByb2dyYW0gc2luY2Ugd2UgY2Fubm90IGd1YXJhbnR5IGNv
cnJlY3QKLSAgICAgICAgICAvLyB0ZXN0IGNhc2Ugc2V0dXAgYW5kIHRlYXItZG93biBpbiB0aGlz
IGNhc2UuCi0gICAgICAgICAgUmVwb3J0SW52YWxpZFRlc3RDYXNlVHlwZSh0ZXN0X2Nhc2VfbmFt
ZSwgY29kZV9sb2NhdGlvbik7Ci0gICAgICAgICAgcG9zaXg6OkFib3J0KCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgc3VyZSB0aGF0IHRoZSBv
YmplY3Qgd2UgZm91bmQgaXMgb2YgdGhlIHNhbWUKLSAgICAgICAgICAvLyB0eXBlIHdlIGFyZSBs
b29raW5nIGZvciwgc28gd2UgZG93bmNhc3QgaXQgdG8gdGhhdCB0eXBlCi0gICAgICAgICAgLy8g
d2l0aG91dCBmdXJ0aGVyIGNoZWNrcy4KLSAgICAgICAgICB0eXBlZF90ZXN0X2luZm8gPSBDaGVj
a2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Ci0gICAgICAgICAgICAgIFBhcmFtZXRlcml6ZWRUZXN0
Q2FzZUluZm88VGVzdENhc2U+ID4oKml0KTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgaWYgKHR5cGVkX3Rlc3RfaW5mbyA9PSBOVUxMKSB7Ci0gICAgICB0
eXBlZF90ZXN0X2luZm8gPSBuZXcgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbzxUZXN0Q2FzZT4o
Ci0gICAgICAgICAgdGVzdF9jYXNlX25hbWUsIGNvZGVfbG9jYXRpb24pOwotICAgICAgdGVzdF9j
YXNlX2luZm9zXy5wdXNoX2JhY2sodHlwZWRfdGVzdF9pbmZvKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHR5cGVkX3Rlc3RfaW5mbzsKLSAgfQotICB2b2lkIFJlZ2lzdGVyVGVzdHMoKSB7Ci0gICAgZm9y
IChUZXN0Q2FzZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9jYXNlX2luZm9zXy5i
ZWdpbigpOwotICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQoKTsgKytpdCkgewot
ICAgICAgKCppdCktPlJlZ2lzdGVyVGVzdHMoKTsKLSAgICB9Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSo+IFRl
c3RDYXNlSW5mb0NvbnRhaW5lcjsKLQotICBUZXN0Q2FzZUluZm9Db250YWluZXIgdGVzdF9jYXNl
X2luZm9zXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFBhcmFtZXRlcml6
ZWRUZXN0Q2FzZVJlZ2lzdHJ5KTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyAgR1RFU1RfSEFTX1BBUkFNX1RFU1QK
LQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BBUkFNX1VU
SUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC1hcmNoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQtYXJjaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGFiOTQ5MDU3Yzcz
NGZhNDkxODhlOGQ2YmM0ZTc0YmU5MTBkYzBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC1hcmNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAxNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gVGhlIEdvb2dsZSBDKysg
VGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgaGVhZGVyIGZpbGUg
ZGVmaW5lcyB0aGUgR1RFU1RfT1NfKiBtYWNyby4KLS8vIEl0IGlzIHNlcGFyYXRlIGZyb20gZ3Rl
c3QtcG9ydC5oIHNvIHRoYXQgY3VzdG9tL2d0ZXN0LXBvcnQuaCBjYW4gaW5jbHVkZSBpdC4KLQot
I2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwot
I2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfQVJDSF9IXwot
Ci0vLyBEZXRlcm1pbmVzIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBHb29nbGUgVGVzdCBpcyBjb21w
aWxlZC4KLSNpZmRlZiBfX0NZR1dJTl9fCi0jIGRlZmluZSBHVEVTVF9PU19DWUdXSU4gMQotI2Vs
aWYgZGVmaW5lZCBfX1NZTUJJQU4zMl9fCi0jIGRlZmluZSBHVEVTVF9PU19TWU1CSUFOIDEKLSNl
bGlmIGRlZmluZWQgX1dJTjMyCi0jIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTIDEKLSMgaWZkZWYg
X1dJTjMyX1dDRQotIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIDEKLSMgZWxpZiBk
ZWZpbmVkKF9fTUlOR1dfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykKLSMgIGRlZmluZSBHVEVT
VF9PU19XSU5ET1dTX01JTkdXIDEKLSMgZWxpZiBkZWZpbmVkKFdJTkFQSV9GQU1JTFkpCi0jICBp
bmNsdWRlIDx3aW5hcGlmYW1pbHkuaD4KLSMgIGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJ
TkFQSV9QQVJUSVRJT05fREVTS1RPUCkKLSMgICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNL
VE9QIDEKLSMgIGVsaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9Q
SE9ORV9BUFApCi0jICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfUEhPTkUgMQotIyAgZWxpZiBX
SU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0FQUCkKLSMgICBkZWZpbmUg
R1RFU1RfT1NfV0lORE9XU19SVCAxCi0jICBlbHNlCi0gICAgLy8gV0lOQVBJX0ZBTUlMWSBkZWZp
bmVkIGJ1dCBubyBrbm93biBwYXJ0aXRpb24gbWF0Y2hlZC4KLSAgICAvLyBEZWZhdWx0IHRvIGRl
c2t0b3AuCi0jICAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfREVTS1RPUCAxCi0jICBlbmRpZgot
IyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QIDEKLSMgZW5kaWYgIC8v
IF9XSU4zMl9XQ0UKLSNlbGlmIGRlZmluZWQgX19BUFBMRV9fCi0jIGRlZmluZSBHVEVTVF9PU19N
QUMgMQotIyBpZiBUQVJHRVRfT1NfSVBIT05FCi0jICBkZWZpbmUgR1RFU1RfT1NfSU9TIDEKLSMg
ZW5kaWYKLSNlbGlmIGRlZmluZWQgX19GcmVlQlNEX18KLSMgZGVmaW5lIEdURVNUX09TX0ZSRUVC
U0QgMQotI2VsaWYgZGVmaW5lZCBfX2xpbnV4X18KLSMgZGVmaW5lIEdURVNUX09TX0xJTlVYIDEK
LSMgaWYgZGVmaW5lZCBfX0FORFJPSURfXwotIyAgZGVmaW5lIEdURVNUX09TX0xJTlVYX0FORFJP
SUQgMQotIyBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX01WU19fCi0jIGRlZmluZSBHVEVTVF9PU19a
T1MgMQotI2VsaWYgZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX1NWUjQpCi0jIGRlZmluZSBH
VEVTVF9PU19TT0xBUklTIDEKLSNlbGlmIGRlZmluZWQoX0FJWCkKLSMgZGVmaW5lIEdURVNUX09T
X0FJWCAxCi0jZWxpZiBkZWZpbmVkKF9faHB1eCkKLSMgZGVmaW5lIEdURVNUX09TX0hQVVggMQot
I2VsaWYgZGVmaW5lZCBfX25hdGl2ZV9jbGllbnRfXwotIyBkZWZpbmUgR1RFU1RfT1NfTkFDTCAx
Ci0jZWxpZiBkZWZpbmVkIF9fT3BlbkJTRF9fCi0jIGRlZmluZSBHVEVTVF9PU19PUEVOQlNEIDEK
LSNlbGlmIGRlZmluZWQgX19RTlhfXwotIyBkZWZpbmUgR1RFU1RfT1NfUU5YIDEKLSNlbmRpZiAg
Ly8gX19DWUdXSU5fXwotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfUE9SVF9BUkNIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTRmOGJhODJh
ZTM3MGQ1NGVkZDEzNzhkMGQ2ZDBlZGMyNGIwYzg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU5MCArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxp
dGllcyBmb3IgcG9ydGluZyBHb29nbGUgVGVzdCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBB
bGwgbWFjcm9zIGVuZGluZyB3aXRoIF8gYW5kIHN5bWJvbHMgZGVmaW5lZCBpbiBhbgotLy8gaW50
ZXJuYWwgbmFtZXNwYWNlIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIENv
ZGUKLS8vIG91dHNpZGUgR29vZ2xlIFRlc3QgTVVTVCBOT1QgVVNFIFRIRU0gRElSRUNUTFkuICBN
YWNyb3MgdGhhdCBkb24ndAotLy8gZW5kIHdpdGggXyBhcmUgcGFydCBvZiBHb29nbGUgVGVzdCdz
IHB1YmxpYyBBUEkgYW5kIGNhbiBiZSB1c2VkIGJ5Ci0vLyBjb2RlIG91dHNpZGUgR29vZ2xlIFRl
c3QuCi0vLwotLy8gVGhpcyBmaWxlIGlzIGZ1bmRhbWVudGFsIHRvIEdvb2dsZSBUZXN0LiAgQWxs
IG90aGVyIEdvb2dsZSBUZXN0IHNvdXJjZQotLy8gZmlsZXMgYXJlIGV4cGVjdGVkIHRvICNpbmNs
dWRlIHRoaXMuICBUaGVyZWZvcmUsIGl0IGNhbm5vdCAjaW5jbHVkZQotLy8gYW55IG90aGVyIEdv
b2dsZSBUZXN0IGhlYWRlci4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1BPUlRfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9QT1JUX0hfCi0KLS8vIEVudmlyb25tZW50LWRlc2NyaWJpbmcgbWFjcm9zCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGlu
IG1hbnkgZGlmZmVyZW50IGVudmlyb25tZW50cy4gIE1hY3JvcyBpbgotLy8gdGhpcyBzZWN0aW9u
IHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBraW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJlaW5nCi0v
LyB1c2VkIGluLCBzdWNoIHRoYXQgR29vZ2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJvbm1lbnQt
c3BlY2lmaWMKLS8vIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMuCi0vLwotLy8gR29vZ2xl
IFRlc3QgdHJpZXMgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMgb2YgaXRz
Ci0vLyBlbnZpcm9ubWVudCwgc28gdXNlcnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi
b3V0IHRoZXNlCi0vLyBtYWNyb3MuICBIb3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBp
cyBub3QgcGVyZmVjdC4KLS8vIFNvbWV0aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1c2VyIHRv
IGRlZmluZSBzb21lIG9mIHRoZSBmb2xsb3dpbmcKLS8vIG1hY3JvcyBpbiB0aGUgYnVpbGQgc2Ny
aXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBUZXN0J3MgZGVjaXNpb25zLgotLy8KLS8vIElmIHRoZSB1
c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0IHdpbGwK
LS8vIHByb3ZpZGUgYSBkZWZhdWx0IGRlZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRlciBpcyAj
aW5jbHVkZWQsIGFsbAotLy8gbWFjcm9zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmluZWQgdG8g
ZWl0aGVyIDEgb3IgMC4KLS8vCi0vLyBOb3RlcyB0byBtYWludGFpbmVyczoKLS8vICAgLSBFYWNo
IG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0aGUgbGlz
dAotLy8gICAgIGxpZ2h0bHkuCi0vLyAgIC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNlIG1hY3Jv
cy4gIERvbid0IHVzZSAjaWZkZWYgb3IgIiNpZgotLy8gICAgIGRlZmluZWQoLi4uKSIsIHdoaWNo
IHdpbGwgbm90IHdvcmsgYXMgdGhlc2UgbWFjcm9zIGFyZSBBTFdBWVMKLS8vICAgICBkZWZpbmVk
LgotLy8KLS8vICAgR1RFU1RfSEFTX0NMT05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0
byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzL2lzbid0IGF2YWlsYWJsZS4KLS8vICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAgIC0gRGVm
aW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGV4Y2VwdGlvbnMKLS8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJlIGVuYWJsZWQuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVt
cyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcsIHdoaWNo
IGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfV1NU
UklORyAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVt
cyBkZWZpbmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjp3c3RyaW5nLCB3aGlj
aCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3c3RyaW5nKS4KLS8vICAgR1RFU1RfSEFTX1BPU0lYX1JF
ICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IFBPU0lYIHJlZ3VsYXIK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMgYXJlL2FyZW4ndCBh
dmFpbGFibGUuCi0vLyAgIEdURVNUX0hBU19QVEhSRUFEICAgICAgICAtIERlZmluZSBpdCB0byAx
LzAgdG8gaW5kaWNhdGUgdGhhdCA8cHRocmVhZC5oPgotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUuCi0vLyAgIEdURVNUX0hBU19SVFRJICAgICAgICAg
ICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCBSVFRJIGlzL2lzbid0Ci0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuCi0vLyAgIEdURVNUX0hBU19TVERf
V1NUUklORyAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdAotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OndzdHJpbmcgZG9lcy9kb2Vzbid0IHdvcmsgKEdv
b2dsZSBUZXN0IGNhbgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB1c2VkIHdo
ZXJlIHN0ZDo6d3N0cmluZyBpcyB1bmF2YWlsYWJsZSkuCi0vLyAgIEdURVNUX0hBU19UUjFfVFVQ
TEUgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdHIxOjp0dXBsZQotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFibGUuCi0vLyAgIEdURVNU
X0hBU19TRUggICAgICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhl
ciB0aGUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMg
TWljcm9zb2Z0J3MgIlN0cnVjdHVyZWQKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXhjZXB0aW9uIEhhbmRsaW5nIi4KLS8vICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGlj
YXRlIHdoZXRoZXIgdGhlCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3Jt
IHN1cHBvcnRzIEkvTyBzdHJlYW0gcmVkaXJlY3Rpb24gdXNpbmcKLS8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHVwKCkgYW5kIGR1cDIoKS4KLS8vICAgR1RFU1RfVVNFX09XTl9UUjFf
VFVQTEUgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1l
bnRhdGlvbiBzaG91bGQgYmUKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4g
IFVudXNlZCB3aGVuIHRoZSB1c2VyIHNldHMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfSEFTX1RSMV9UVVBMRSB0byAwLgotLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAg
ICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9k
ZS4KLS8vICAgR1RFU1RfTElOS0VEX0FTX1NIQVJFRF9MSUJSQVJZCi0vLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNl
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVk
IGxpYnJhcnkgKGtub3duIGFzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMTCBv
biBXaW5kb3dzKS4KLS8vICAgR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0vLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtIERlZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBU
ZXN0IGl0c2VsZgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBs
aWJyYXJ5LgotCi0vLyBQbGF0Zm9ybS1pbmRpY2F0aW5nIG1hY3JvcwotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBNYWNyb3MgaW5kaWNhdGluZyB0aGUgcGxhdGZvcm0gb24g
d2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVpbmcgdXNlZAotLy8gKGEgbWFjcm8gaXMgZGVmaW5lZCB0
byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBnaXZlbiBwbGF0Zm9ybTsKLS8vIG90aGVyd2lzZSBVTkRF
RklORUQgLS0gaXQncyBuZXZlciBkZWZpbmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0Ci0vLyBkZWZp
bmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0
IE1VU1QKLS8vIE5PVCBkZWZpbmUgdGhlbS4KLS8vCi0vLyAgIEdURVNUX09TX0FJWCAgICAgIC0g
SUJNIEFJWAotLy8gICBHVEVTVF9PU19DWUdXSU4gICAtIEN5Z3dpbgotLy8gICBHVEVTVF9PU19G
UkVFQlNEICAtIEZyZWVCU0QKLS8vICAgR1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAotLy8gICBH
VEVTVF9PU19MSU5VWCAgICAtIExpbnV4Ci0vLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAt
IEdvb2dsZSBBbmRyb2lkCi0vLyAgIEdURVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKLS8vICAg
ICBHVEVTVF9PU19JT1MgICAgLSBpT1MKLS8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUg
TmF0aXZlIENsaWVudCAoTmFDbCkKLS8vICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECi0v
LyAgIEdURVNUX09TX1FOWCAgICAgIC0gUU5YCi0vLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3Vu
IFNvbGFyaXMKLS8vICAgR1RFU1RfT1NfU1lNQklBTiAgLSBTeW1iaWFuCi0vLyAgIEdURVNUX09T
X1dJTkRPV1MgIC0gV2luZG93cyAoRGVza3RvcCwgTWluR1csIG9yIE1vYmlsZSkKLS8vICAgICBH
VEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgIC0gV2luZG93cyBEZXNrdG9wCi0vLyAgICAgR1RFU1Rf
T1NfV0lORE9XU19NSU5HVyAgICAtIE1pbkdXCi0vLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUgICAtIFdpbmRvd3MgTW9iaWxlCi0vLyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAt
IFdpbmRvd3MgUGhvbmUKLS8vICAgICBHVEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93
cyBTdG9yZSBBcHAvV2luUlQKLS8vICAgR1RFU1RfT1NfWk9TICAgICAgLSB6L09TCi0vLwotLy8g
QW1vbmcgdGhlIHBsYXRmb3JtcywgQ3lnd2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dz
IGhhdmUgdGhlCi0vLyBtb3N0IHN0YWJsZSBzdXBwb3J0LiAgU2luY2UgY29yZSBtZW1iZXJzIG9m
IHRoZSBHb29nbGUgVGVzdCBwcm9qZWN0Ci0vLyBkb24ndCBoYXZlIGFjY2VzcyB0byBvdGhlciBw
bGF0Zm9ybXMsIHN1cHBvcnQgZm9yIHRoZW0gbWF5IGJlIGxlc3MKLS8vIHN0YWJsZS4gIElmIHlv
dSBub3RpY2UgYW55IHByb2JsZW1zIG9uIHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLS8v
IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSAocGF0Y2hlcyBmb3IgZml4aW5n
IHRoZW0gYXJlCi0vLyBldmVuIG1vcmUgd2VsY29tZSEpLgotLy8KLS8vIEl0IGlzIHBvc3NpYmxl
IHRoYXQgbm9uZSBvZiB0aGUgR1RFU1RfT1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCi0KLS8vIEZl
YXR1cmUtaW5kaWNhdGluZyBtYWNyb3MKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
Ci0vLyBNYWNyb3MgaW5kaWNhdGluZyB3aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZh
aWxhYmxlIChhIG1hY3JvCi0vLyBpcyBkZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcg
ZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7Ci0vLyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2
ZXIgZGVmaW5lZCB0byAwLikuICBHb29nbGUgVGVzdAotLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3Mg
YXV0b21hdGljYWxseS4gIENvZGUgb3V0c2lkZSBHb29nbGUgVGVzdCBNVVNUCi0vLyBOT1QgZGVm
aW5lIHRoZW0uCi0vLwotLy8gVGhlc2UgbWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJs
ZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4KLS8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5k
IGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdpdGggYW4gI2lmCi0vLyB3aGljaCBjb250cm9scyB0aGF0
IGNvZGUuICBGb3IgZXhhbXBsZToKLS8vCi0vLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLS8v
ICAgRVhQRUNUX0RFQVRIKERvU29tZXRoaW5nRGVhZGx5KCkpOwotLy8gI2VuZGlmCi0vLwotLy8g
ICBHVEVTVF9IQVNfQ09NQklORSAgICAgIC0gdGhlIENvbWJpbmUoKSBmdW5jdGlvbiAoZm9yIHZh
bHVlLXBhcmFtZXRlcml6ZWQKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQot
Ly8gICBHVEVTVF9IQVNfREVBVEhfVEVTVCAgIC0gZGVhdGggdGVzdHMKLS8vICAgR1RFU1RfSEFT
X1BBUkFNX1RFU1QgICAtIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vICAgR1RFU1RfSEFT
X1RZUEVEX1RFU1QgICAtIHR5cGVkIHRlc3RzCi0vLyAgIEdURVNUX0hBU19UWVBFRF9URVNUX1Ag
LSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FGRSAgICAt
IEdvb2dsZSBUZXN0IGlzIHRocmVhZC1zYWZlLgotLy8gICBHVEVTVF9VU0VTX1BPU0lYX1JFICAg
IC0gZW5oYW5jZWQgUE9TSVggcmVnZXggaXMgdXNlZC4gRG8gbm90IGNvbmZ1c2Ugd2l0aAotLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1BPU0lYX1JFIChzZWUgYWJvdmUp
IHdoaWNoIHVzZXJzIGNhbgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIHRo
ZW1zZWx2ZXMuCi0vLyAgIEdURVNUX1VTRVNfU0lNUExFX1JFICAgLSBvdXIgb3duIHNpbXBsZSBy
ZWdleCBpcyB1c2VkOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFib3ZlIHR3
byBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgotLy8gICBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMIC0g
YWNjZXB0cyB1bnR5cGVkIE5VTEwgaW4gRVhQRUNUX0VRKCkuCi0KLS8vIE1pc2MgcHVibGljIG1h
Y3JvcwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICBHVEVTVF9GTEFHKGZsYWdfbmFt
ZSkgIC0gcmVmZXJlbmNlcyB0aGUgdmFyaWFibGUgY29ycmVzcG9uZGluZyB0bwotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlIGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCi0KLS8vIElu
dGVybmFsIHV0aWxpdGllcwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gVGhlIGZvbGxv
d2luZyBtYWNyb3MgYW5kIHV0aWxpdGllcyBhcmUgZm9yIEdvb2dsZSBUZXN0J3MgSU5URVJOQUwK
LS8vIHVzZSBvbmx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVN
IERJUkVDVExZLgotLy8KLS8vIE1hY3JvcyBmb3IgYmFzaWMgQysrIGNvZGluZzoKLS8vICAgR1RF
U1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gLSBmb3IgZGlzYWJsaW5nIGEgZ2NjIHdhcm5pbmcu
Ci0vLyAgIEdURVNUX0FUVFJJQlVURV9VTlVTRURfICAtIGRlY2xhcmVzIHRoYXQgYSBjbGFzcycg
aW5zdGFuY2VzIG9yIGEKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUg
ZG9uJ3QgaGF2ZSB0byBiZSB1c2VkLgotLy8gICBHVEVTVF9ESVNBTExPV19BU1NJR05fICAgLSBk
aXNhYmxlcyBvcGVyYXRvcj0uCi0vLyAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8g
LSBkaXNhYmxlcyBjb3B5IGN0b3IgYW5kIG9wZXJhdG9yPS4KLS8vICAgR1RFU1RfTVVTVF9VU0Vf
UkVTVUxUXyAgIC0gZGVjbGFyZXMgdGhhdCBhIGZ1bmN0aW9uJ3MgcmVzdWx0IG11c3QgYmUgdXNl
ZC4KLS8vICAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXyAtIHN0YXJ0IGNvZGUg
c2VjdGlvbiB3aGVyZSBNU1ZDIEM0MTI3IGlzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdXBwcmVzc2VkIChjb25zdGFudCBjb25kaXRpb25hbCkuCi0vLyAgIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXyAgLSBmaW5pc2ggY29kZSBzZWN0aW9uIHdo
ZXJlIE1TVkMgQzQxMjcKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzIHN1cHByZXNzZWQuCi0vLwotLy8gQysrMTEgZmVhdHVyZSB3cmFwcGVyczoKLS8vCi0vLyAg
IHRlc3Rpbmc6OmludGVybmFsOjptb3ZlICAtIHBvcnRhYmlsaXR5IHdyYXBwZXIgZm9yIHN0ZDo6
bW92ZS4KLS8vCi0vLyBTeW5jaHJvbml6YXRpb246Ci0vLyAgIE11dGV4LCBNdXRleExvY2ssIFRo
cmVhZExvY2FsLCBHZXRUaHJlYWRDb3VudCgpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgotLy8KLS8vIFRlbXBsYXRlIG1ldGEgcHJv
Z3JhbW1pbmc6Ci0vLyAgIGlzX3BvaW50ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24gU3lt
YmlhbiBhbmQgSUJNIFhMIEMvQysrIG9ubHkuCi0vLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFydGlh
bCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKLS8vICAgICAg
ICAgICAgICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxlZCB3
aXRoIFN1biBDKysuCi0vLwotLy8gU21hcnQgcG9pbnRlcnM6Ci0vLyAgIHNjb3BlZF9wdHIgICAg
IC0gYXMgaW4gVFIyLgotLy8KLS8vIFJlZ3VsYXIgZXhwcmVzc2lvbnM6Ci0vLyAgIFJFICAgICAg
ICAgICAgIC0gYSBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQT1NJ
WAotLy8gICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50
YXggb24gVU5JWC1saWtlCi0vLyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBvciBhIHJl
ZHVjZWQgcmVndWxhciBleGNlcHRpb24gc3ludGF4IG9uCi0vLyAgICAgICAgICAgICAgICAgICAg
b3RoZXIgcGxhdGZvcm1zLCBpbmNsdWRpbmcgV2luZG93cy4KLS8vCi0vLyBMb2dnaW5nOgotLy8g
ICBHVEVTVF9MT0dfKCkgICAtIGxvZ3MgbWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0
eSBsZXZlbC4KLS8vICAgTG9nVG9TdGRlcnIoKSAgLSBkaXJlY3RzIGFsbCBsb2cgbWVzc2FnZXMg
dG8gc3RkZXJyLgotLy8gICBGbHVzaEluZm9Mb2coKSAtIGZsdXNoZXMgaW5mb3JtYXRpb25hbCBs
b2cgbWVzc2FnZXMuCi0vLwotLy8gU3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVyaW5nOgotLy8gICBD
YXB0dXJlU3Rkb3V0KCkgICAgIC0gc3RhcnRzIGNhcHR1cmluZyBzdGRvdXQuCi0vLyAgIEdldENh
cHR1cmVkU3Rkb3V0KCkgLSBzdG9wcyBjYXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRoZSBj
YXB0dXJlZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLgotLy8gICBDYXB0dXJl
U3RkZXJyKCkgICAgIC0gc3RhcnRzIGNhcHR1cmluZyBzdGRlcnIuCi0vLyAgIEdldENhcHR1cmVk
U3RkZXJyKCkgLSBzdG9wcyBjYXB0dXJpbmcgc3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJl
ZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLgotLy8KLS8vIEludGVnZXIgdHlw
ZXM6Ci0vLyAgIFR5cGVXaXRoU2l6ZSAgIC0gbWFwcyBhbiBpbnRlZ2VyIHRvIGEgaW50IHR5cGUu
Ci0vLyAgIEludDMyLCBVSW50MzIsIEludDY0LCBVSW50NjQsIFRpbWVJbk1pbGxpcwotLy8gICAg
ICAgICAgICAgICAgICAtIGludGVnZXJzIG9mIGtub3duIHNpemVzLgotLy8gICBCaWdnZXN0SW50
ICAgICAtIHRoZSBiaWdnZXN0IHNpZ25lZCBpbnRlZ2VyIHR5cGUuCi0vLwotLy8gQ29tbWFuZC1s
aW5lIHV0aWxpdGllczoKLS8vICAgR1RFU1RfREVDTEFSRV8qKCkgIC0gZGVjbGFyZXMgYSBmbGFn
LgotLy8gICBHVEVTVF9ERUZJTkVfKigpICAgLSBkZWZpbmVzIGEgZmxhZy4KLS8vICAgR2V0SW5q
ZWN0YWJsZUFyZ3ZzKCkgLSByZXR1cm5zIHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Yg
c3RyaW5ncy4KLS8vCi0vLyBFbnZpcm9ubWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6Ci0vLyAgIEdl
dEVudigpICAgICAgICAgICAgIC0gZ2V0cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFy
aWFibGUuCi0vLyAgIEJvb2xGcm9tR1Rlc3RFbnYoKSAgIC0gcGFyc2VzIGEgYm9vbCBlbnZpcm9u
bWVudCB2YXJpYWJsZS4KLS8vICAgSW50MzJGcm9tR1Rlc3RFbnYoKSAgLSBwYXJzZXMgYW4gSW50
MzIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0vLyAgIFN0cmluZ0Zyb21HVGVzdEVudigpIC0gcGFy
c2VzIGEgc3RyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi0jaW5jbHVkZSA8Y3R5cGUuaD4g
ICAvLyBmb3IgaXNzcGFjZSwgZXRjCi0jaW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBmb3IgcHRyZGlm
Zl90Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxz
dHJpbmcuaD4KLSNpZm5kZWYgX1dJTjMyX1dDRQotIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSMg
aW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZiAgLy8gIV9XSU4zMl9XQ0UKLQotI2lmIGRlZmlu
ZWQgX19BUFBMRV9fCi0jIGluY2x1ZGUgPEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgotIyBpbmNsdWRl
IDxUYXJnZXRDb25kaXRpb25hbHMuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8aW9zdHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3Ry
ZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3RyaW5nPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8
dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0b3I+ICAvLyBOT0xJTlQKLQotI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1
c3RvbS9ndGVzdC1wb3J0LmgiCi0KLSNpZiAhZGVmaW5lZChHVEVTVF9ERVZfRU1BSUxfKQotIyBk
ZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAiZ29vZ2xldGVzdGZyYW1ld29ya0BAZ29vZ2xlZ3JvdXBz
LmNvbSIKLSMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYXyAiZ3Rlc3RfIgotIyBkZWZpbmUgR1RF
U1RfRkxBR19QUkVGSVhfREFTSF8gImd0ZXN0LSIKLSMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklY
X1VQUEVSXyAiR1RFU1RfIgotIyBkZWZpbmUgR1RFU1RfTkFNRV8gIkdvb2dsZSBUZXN0IgotIyBk
ZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxfICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2ds
ZXRlc3QvIgotI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9ERVZfRU1BSUxfKQotCi0jaWYgIWRl
ZmluZWQoR1RFU1RfSU5JVF9HT09HTEVfVEVTVF9OQU1FXykKLSMgZGVmaW5lIEdURVNUX0lOSVRf
R09PR0xFX1RFU1RfTkFNRV8gInRlc3Rpbmc6OkluaXRHb29nbGVUZXN0IgotI2VuZGlmICAvLyAh
ZGVmaW5lZChHVEVTVF9JTklUX0dPT0dMRV9URVNUX05BTUVfKQotCi0vLyBEZXRlcm1pbmVzIHRo
ZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlzIHVzZWQgdG8gY29tcGlsZSB0aGlzLgotI2lmZGVmIF9f
R05VQ19fCi0vLyA0MDMwMiBtZWFucyB2ZXJzaW9uIDQuMy4yLgotIyBkZWZpbmUgR1RFU1RfR0ND
X1ZFUl8gXAotICAgIChfX0dOVUNfXyoxMDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05V
Q19QQVRDSExFVkVMX18pCi0jZW5kaWYgIC8vIF9fR05VQ19fCi0KLS8vIE1hY3JvcyBmb3IgZGlz
YWJsaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrIHdhcm5pbmdzLgotLy8KLS8vICAgR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDgwMCA0Mzg1KQotLy8gICAvKiBjb2RlIHRoYXQgdHJp
Z2dlcnMgd2FybmluZ3MgQzQ4MDAgYW5kIEM0Mzg1ICovCi0vLyAgIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BPUF8oKQotI2lmIF9NU0NfVkVSID49IDE1MDAKLSMgZGVmaW5lIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKHdhcm5pbmdzKSBcCi0gICAgX19wcmFnbWEod2Fybmlu
ZyhwdXNoKSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgX19wcmFnbWEod2FybmluZyhk
aXNhYmxlOiB3YXJuaW5ncykpCi0jIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
T1BfKCkgICAgICAgICAgXAotICAgIF9fcHJhZ21hKHdhcm5pbmcocG9wKSkKLSNlbHNlCi0vLyBP
bGRlciB2ZXJzaW9ucyBvZiBNU1ZDIGRvbid0IGhhdmUgX19wcmFnbWEuCi0jIGRlZmluZSBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyh3YXJuaW5ncykKLSMgZGVmaW5lIEdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQotI2VuZGlmCi0KLSNpZm5kZWYgR1RFU1RfTEFOR19D
WFgxMQotLy8gZ2NjIGFuZCBjbGFuZyBkZWZpbmUgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18g
d2hlbgotLy8gLXN0ZD17YyxnbnV9Kyt7MHgsMTF9IGlzIHBhc3NlZC4gIFRoZSBDKysxMSBzdGFu
ZGFyZCBzcGVjaWZpZXMgYQotLy8gdmFsdWUgZm9yIF9fY3BsdXNwbHVzLCBhbmQgcmVjZW50IHZl
cnNpb25zIG9mIGNsYW5nLCBnY2MsIGFuZAotLy8gcHJvYmFibHkgb3RoZXIgY29tcGlsZXJzIHNl
dCB0aGF0IHRvbyBpbiBDKysxMSBtb2RlLgotIyBpZiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhf
XyB8fCBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCi0vLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysr
MTEgbW9kZS4KLSMgIGRlZmluZSBHVEVTVF9MQU5HX0NYWDExIDEKLSMgZWxzZQotIyAgZGVmaW5l
IEdURVNUX0xBTkdfQ1hYMTEgMAotIyBlbmRpZgotI2VuZGlmCi0KLS8vIERpc3RpbmN0IGZyb20g
QysrMTEgbGFuZ3VhZ2Ugc3VwcG9ydCwgc29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQot
Ly8gcHJvcGVyIEMrKzExIGxpYnJhcnkgc3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0
byBidWlsZCBpbgotLy8gQysrMTEgbW9kZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3
aGljaCBoYXMgYW4gb2xkIGxpYnN0ZGMrKwotLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgotLy8K
LS8vIGxpYnN0ZGMrKyBoYXMgc3VmZmljaWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYu
MCwgX19HTElCQ1hYX18KLS8vIDIwMTEwMzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4g
dGhlIDQuNCBhbmQgNC41IHNlcmllcyBmb2xsb3dlZAotLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBm
b3IgdGhvc2UgdmVyc2lvbnMgYnkgdGhlaXIgZGF0ZSBzdGFtcHMuCi0vLyBodHRwczovL2djYy5n
bnUub3JnL29ubGluZWRvY3MvbGlic3RkYysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmlu
ZwotI2lmIEdURVNUX0xBTkdfQ1hYMTEgJiYgXAotICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykg
fHwgKCBcCi0gICAgICAgIF9fR0xJQkNYWF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0
LjYuMCAqLyBcCi0gICAgICAgIC8qIEJsYWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRl
ciBicmFuY2hlczogKi8gXAotICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAv
KiBHQ0MgNC40LjYgKi8gXAotICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAv
KiBHQ0MgNC40LjcgKi8gXAotICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAv
KiBHQ0MgNC41LjMgKi8gXAotICAgICAgICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAv
KiBHQ0MgNC41LjQgKi8KLSMgZGVmaW5lIEdURVNUX1NURExJQl9DWFgxMSAxCi0jZW5kaWYKLQot
Ly8gT25seSB1c2UgQysrMTEgbGlicmFyeSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRl
cyB0aGVtLgotI2lmIEdURVNUX1NURExJQl9DWFgxMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9C
RUdJTl9BTkRfRU5EXyAxCi0jIGRlZmluZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQot
IyBkZWZpbmUgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NU
RF9JTklUSUFMSVpFUl9MSVNUXyAxCi0jIGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKLSMg
ZGVmaW5lIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NU
RF9UWVBFX1RSQUlUU18gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXyAxCi0j
ZW5kaWYKLQotLy8gQysrMTEgc3BlY2lmaWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1
cGxlLgotLy8gU29tZSBwbGF0Zm9ybXMgc3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhvd2V2ZXIu
Ci0jaWYgR1RFU1RfTEFOR19DWFgxMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBMRV8gMQot
IyBpZiBkZWZpbmVkKF9fY2xhbmdfXykKLS8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9jbGFuZy5sbHZt
Lm9yZy9kb2NzL0xhbmd1YWdlRXh0ZW5zaW9ucy5odG1sI19faGFzX2luY2x1ZGUKLSMgIGlmIGRl
ZmluZWQoX19oYXNfaW5jbHVkZSkgJiYgIV9faGFzX2luY2x1ZGUoPHR1cGxlPikKLSMgICB1bmRl
ZiBHVEVTVF9IQVNfU1REX1RVUExFXwotIyAgZW5kaWYKLSMgZWxpZiBkZWZpbmVkKF9NU0NfVkVS
KQotLy8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAotIyAg
aWYgZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgX0NQUExJQl9WRVIgPCA1MjAKLSMgICB1bmRlZiBH
VEVTVF9IQVNfU1REX1RVUExFXwotIyAgZW5kaWYKLSMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9f
KQotLy8gSW5zcGlyZWQgYnkgYm9vc3QvY29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKLS8v
IGh0dHA6Ly9nY2MuZ251Lm9yZy9nY2MtNC4yL2NoYW5nZXMuaHRtbCBhbmQKLS8vIGh0dHA6Ly9n
Y2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xpYnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAxLmh0bWwj
bWFudWFsLmludHJvLnN0YXR1cy5zdGFuZGFyZC4yMDB4Ci0jICBpZiBfX0dOVUNfXyA8IDQgfHwg
KF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCAyKQotIyAgIHVuZGVmIEdURVNUX0hB
U19TVERfVFVQTEVfCi0jICBlbmRpZgotIyBlbmRpZgotI2VuZGlmCi0KLS8vIEJyaW5ncyBpbiBk
ZWZpbml0aW9ucyBmb3IgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVybmFsOjpw
b3NpeAotLy8gbmFtZXNwYWNlIChyZWFkLCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0dHksIHN0
YXQpLiBXZSBkbyBub3QgY3VycmVudGx5Ci0vLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1vYmlsZS4K
LSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotIyAg
aW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jICBpbmNsdWRlIDxpby5oPgotIyBlbmRpZgotLy8gSW4gb3Jk
ZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGluY2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3YXJkIGRl
Y2xhcmF0aW9uCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAmJiAhZGVmaW5lZChfX01JTkdX
NjRfVkVSU0lPTl9NQUpPUikKLS8vIE1pbkdXIGRlZmluZWQgX0NSSVRJQ0FMX1NFQ1RJT04gYW5k
IF9SVExfQ1JJVElDQUxfU0VDVElPTiBhcyB0d28KLS8vIHNlcGFyYXRlIChlcXVpdmFsZW50KSBz
dHJ1Y3RzLCBpbnN0ZWFkIG9mIHVzaW5nIHR5cGVkZWYKLXR5cGVkZWYgc3RydWN0IF9DUklUSUNB
TF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT047Ci0jZWxzZQotLy8gQXNzdW1lIENSSVRJ
Q0FMX1NFQ1RJT04gaXMgYSB0eXBlZGVmIG9mIF9SVExfQ1JJVElDQUxfU0VDVElPTi4KLS8vIFRo
aXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBieQotLy8gV2luZG93c1R5cGVzVGVzdC5DUklUSUNB
TF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04uCi10eXBlZGVmIHN0cnVjdCBfUlRMX0NS
SVRJQ0FMX1NFQ1RJT04gR1RFU1RfQ1JJVElDQUxfU0VDVElPTjsKLSNlbmRpZgotI2Vsc2UKLS8v
IFRoaXMgYXNzdW1lcyB0aGF0IG5vbi1XaW5kb3dzIE9TZXMgcHJvdmlkZSB1bmlzdGQuaC4gRm9y
IE9TZXMgd2hlcmUgdGhpcwotLy8gaXMgbm90IHRoZSBjYXNlLCB3ZSBuZWVkIHRvIGluY2x1ZGUg
aGVhZGVycyB0aGF0IHByb3ZpZGUgdGhlIGZ1bmN0aW9ucwotLy8gbWVudGlvbmVkIGFib3ZlLgot
IyBpbmNsdWRlIDx1bmlzdGQuaD4KLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECi0vLyBVc2VkIHRv
IGRlZmluZSBfX0FORFJPSURfQVBJX18gbWF0Y2hpbmcgdGhlIHRhcmdldCBOREsgQVBJIGxldmVs
LgotIyAgaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4gIC8vIE5PTElOVAotI2VuZGlmCi0K
LS8vIERlZmluZXMgdGhpcyB0byB0cnVlIGlmZiBHb29nbGUgVGVzdCBjYW4gdXNlIFBPU0lYIHJl
Z3VsYXIgZXhwcmVzc2lvbnMuCi0jaWZuZGVmIEdURVNUX0hBU19QT1NJWF9SRQotIyBpZiBHVEVT
VF9PU19MSU5VWF9BTkRST0lECi0vLyBPbiBBbmRyb2lkLCA8cmVnZXguaD4gaXMgb25seSBhdmFp
bGFibGUgc3RhcnRpbmcgd2l0aCBHaW5nZXJicmVhZC4KLSMgIGRlZmluZSBHVEVTVF9IQVNfUE9T
SVhfUkUgKF9fQU5EUk9JRF9BUElfXyA+PSA5KQotIyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfSEFT
X1BPU0lYX1JFICghR1RFU1RfT1NfV0lORE9XUykKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgR1RF
U1RfVVNFU19QQ1JFCi0vLyBUaGUgYXBwcm9wcmlhdGUgaGVhZGVycyBoYXZlIGFscmVhZHkgYmVl
biBpbmNsdWRlZC4KLQotI2VsaWYgR1RFU1RfSEFTX1BPU0lYX1JFCi0KLS8vIE9uIHNvbWUgcGxh
dGZvcm1zLCA8cmVnZXguaD4gbmVlZHMgc29tZW9uZSB0byBkZWZpbmUgc2l6ZV90LCBhbmQKLS8v
IHdvbid0IGNvbXBpbGUgb3RoZXJ3aXNlLiAgV2UgY2FuICNpbmNsdWRlIGl0IGhlcmUgYXMgd2Ug
YWxyZWFkeQotLy8gaW5jbHVkZWQgPHN0ZGxpYi5oPiwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBk
ZWZpbmUgc2l6ZV90IHRocm91Z2gKLS8vIDxzdGRkZWYuaD4uCi0jIGluY2x1ZGUgPHJlZ2V4Lmg+
ICAvLyBOT0xJTlQKLQotIyBkZWZpbmUgR1RFU1RfVVNFU19QT1NJWF9SRSAxCi0KLSNlbGlmIEdU
RVNUX09TX1dJTkRPV1MKLQotLy8gPHJlZ2V4Lmg+IGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93
cy4gIFVzZSBvdXIgb3duIHNpbXBsZSByZWdleAotLy8gaW1wbGVtZW50YXRpb24gaW5zdGVhZC4K
LSMgZGVmaW5lIEdURVNUX1VTRVNfU0lNUExFX1JFIDEKLQotI2Vsc2UKLQotLy8gPHJlZ2V4Lmg+
IG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0uICBVc2Ugb3VyIG93bgotLy8g
c2ltcGxlIHJlZ2V4IGltcGxlbWVudGF0aW9uIGluc3RlYWQuCi0jIGRlZmluZSBHVEVTVF9VU0VT
X1NJTVBMRV9SRSAxCi0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QQ1JFCi0KLSNpZm5kZWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhj
ZXB0aW9ucyBhcmUgZW5hYmxlZCwgc28gd2UgbmVlZAotLy8gdG8gZmlndXJlIGl0IG91dC4KLSMg
aWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vLyBNU1ZDJ3Mg
YW5kIEMrK0J1aWxkZXIncyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFNUTCB1c2UgdGhlIF9IQVNf
RVhDRVBUSU9OUwotLy8gbWFjcm8gdG8gZW5hYmxlIGV4Y2VwdGlvbnMsIHNvIHdlJ2xsIGRvIHRo
ZSBzYW1lLgotLy8gQXNzdW1lcyB0aGF0IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVs
dC4KLSMgIGlmbmRlZiBfSEFTX0VYQ0VQVElPTlMKLSMgICBkZWZpbmUgX0hBU19FWENFUFRJT05T
IDEKLSMgIGVuZGlmICAvLyBfSEFTX0VYQ0VQVElPTlMKLSMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMKLSMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKLS8vIGNs
YW5nIGRlZmluZXMgX19FWENFUFRJT05TIGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJlZm9y
ZSBjbGFuZyAyMjA3MTQsCi0vLyBidXQgaWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFmdGVyIHRo
YXQuIEluIE9iai1DKysgZmlsZXMsIHRoZXJlIGNhbiBiZQotLy8gY2xlYW51cHMgZm9yIE9iakMg
ZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5lZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4Y2VwdGlv
bnMKLS8vIGFyZSBkaXNhYmxlZC4gY2xhbmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlv
bnMpIHdoaWNoIGNoZWNrcyBmb3IgQysrCi0vLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0IGNsYW5n
IHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVja2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bwotLy8gdGhh
dC4gVG8gcmVsaWFibHkgY2hlY2sgZm9yIEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5IHdpdGgg
Y2xhbmcsIGNoZWNrIGZvcgotLy8gX19FWENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4
Y2VwdGlvbnMpLgotIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQVElPTlMg
JiYgX19oYXNfZmVhdHVyZShjeHhfZXhjZXB0aW9ucykpCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNf
XykgJiYgX19FWENFUFRJT05TCi0vLyBnY2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYg
ZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4KLSMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAx
Ci0jIGVsaWYgZGVmaW5lZChfX1NVTlBST19DQykKLS8vIFN1biBQcm8gQ0Mgc3VwcG9ydHMgZXhj
ZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGNvbXBpbGUtdGltZSB3YXkgb2YKLS8vIGRl
dGVjdGluZyB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQgb3Igbm90LiAgVGhlcmVmb3JlLCB3ZSBh
c3N1bWUgdGhhdAotLy8gdGhleSBhcmUgZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIgdGVsbHMgdXMg
b3RoZXJ3aXNlLgotIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDEKLSMgZWxpZiBkZWZp
bmVkKF9fSUJNQ1BQX18pICYmIF9fRVhDRVBUSU9OUwotLy8geGxDIGRlZmluZXMgX19FWENFUFRJ
T05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCi0jICBkZWZpbmUgR1RFU1RfSEFT
X0VYQ0VQVElPTlMgMQotIyBlbGlmIGRlZmluZWQoX19IUF9hQ0MpCi0vLyBFeGNlcHRpb24gaGFu
ZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRlZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVyLiBJdCBoYXMg
dG8KLS8vIGJlIHR1cm5lZCBvZiBieSArbm9laCBjb21waWxlciBvcHRpb24gaWYgZGVzaXJlZC4K
LSMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jIGVsc2UKLS8vIEZvciBvdGhlciBj
b21waWxlcnMsIHdlIGFzc3VtZSBleGNlcHRpb25zIGFyZSBkaXNhYmxlZCB0byBiZQotLy8gY29u
c2VydmF0aXZlLgotIyAgZGVmaW5lIEdURVNUX0hBU19FWENFUFRJT05TIDAKLSMgZW5kaWYgIC8v
IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0jaWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcp
Ci0vLyBFdmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBr
ZWVwIGl0IGluIGNhc2UKLS8vIHNvbWUgY2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jIGRl
ZmluZSBHVEVTVF9IQVNfU1REX1NUUklORyAxCi0jZWxpZiAhR1RFU1RfSEFTX1NURF9TVFJJTkcK
LS8vIFRoZSB1c2VyIHRvbGQgdXMgdGhhdCA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4K
LSMgZXJyb3IgIkdvb2dsZSBUZXN0IGNhbm5vdCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcg
aXNuJ3QgYXZhaWxhYmxlLiIKLSNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJ
TkcpCi0KLSNpZm5kZWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLS8vIFRoZSB1c2VyIGRpZG4n
dCB0ZWxsIHVzIHdoZXRoZXIgOjpzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCi0vLyB0
byBmaWd1cmUgaXQgb3V0LgotCi0jIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotI2lmbmRlZiBHVEVTVF9IQVNf
U1REX1dTVFJJTkcKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6Ondz
dHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCi0vLyB0byBmaWd1cmUgaXQgb3V0LgotLy8g
VE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVzZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpz
dGQ6OndzdHJpbmcKLS8vICAgaXMgYXZhaWxhYmxlLgotCi0vLyBDeWd3aW4gMS43IGFuZCBiZWxv
dyBkb2Vzbid0IHN1cHBvcnQgOjpzdGQ6OndzdHJpbmcuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9l
c24ndCBzdXBwb3J0IGl0IGVpdGhlci4gIEFuZHJvaWQgaGFzCi0vLyBubyBzdXBwb3J0IGZvciBp
dCBhdCBsZWFzdCBhcyByZWNlbnQgYXMgRnJveW8gKDIuMikuCi0jIGRlZmluZSBHVEVTVF9IQVNf
U1REX1dTVFJJTkcgXAotICAgICghKEdURVNUX09TX0xJTlVYX0FORFJPSUQgfHwgR1RFU1RfT1Nf
Q1lHV0lOIHx8IEdURVNUX09TX1NPTEFSSVMpKQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERf
V1NUUklORwotCi0jaWZuZGVmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotLy8gVGhlIHVzZXIg
ZGlkbid0IHRlbGwgdXMgd2hldGhlciA6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVk
Ci0vLyB0byBmaWd1cmUgaXQgb3V0LgotIyBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5H
IFwKLSAgICAoR1RFU1RfSEFTX1NURF9XU1RSSU5HICYmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
KQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLQotLy8gRGV0ZXJtaW5lcyB3
aGV0aGVyIFJUVEkgaXMgYXZhaWxhYmxlLgotI2lmbmRlZiBHVEVTVF9IQVNfUlRUSQotLy8gVGhl
IHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQg
dG8KLS8vIGZpZ3VyZSBpdCBvdXQuCi0KLSMgaWZkZWYgX01TQ19WRVIKLQotIyAgaWZkZWYgX0NQ
UFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCi0j
ICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDEKLSMgIGVsc2UKLSMgICBkZWZpbmUgR1RFU1RfSEFT
X1JUVEkgMAotIyAgZW5kaWYKLQotLy8gU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDQuMy4yLCBnY2Mg
ZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBSVFRJIGlzIGVuYWJsZWQuCi0jIGVsaWYgZGVmaW5lZChf
X0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMzAyKQotCi0jICBpZmRlZiBfX0dYWF9S
VFRJCi0vLyBXaGVuIGJ1aWxkaW5nIGFnYWluc3QgU1RMcG9ydCB3aXRoIHRoZSBBbmRyb2lkIE5E
SyBhbmQgd2l0aAotLy8gLWZydHRpIC1mbm8tZXhjZXB0aW9ucywgdGhlIGJ1aWxkIGZhaWxzIGF0
IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5lZAotLy8gcmVmZXJlbmNlcyB0byBfX2N4YV9iYWRfdHlw
ZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9yIHRvb2xjaGFpbiBidWcsCi0vLyBzbyBkaXNhYmxlIFJU
VEkgd2hlbiBkZXRlY3RlZC4KLSMgICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmlu
ZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwKLSAgICAgICAhZGVmaW5lZChfX0VYQ0VQVElPTlMpCi0j
ICAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCi0jICAgZWxzZQotIyAgICBkZWZpbmUgR1RFU1Rf
SEFTX1JUVEkgMQotIyAgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIF9fU1RM
UE9SVF9NQUpPUiAmJiAhX19FWENFUFRJT05TCi0jICBlbHNlCi0jICAgZGVmaW5lIEdURVNUX0hB
U19SVFRJIDAKLSMgIGVuZGlmICAvLyBfX0dYWF9SVFRJCi0KLS8vIENsYW5nIGRlZmluZXMgX19H
WFhfUlRUSSBzdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLCBidXQgaXRzIG1hbnVhbCByZWNvbW1l
bmRzCi0vLyB1c2luZyBoYXNfZmVhdHVyZSBpbnN0ZWFkLiBoYXNfZmVhdHVyZShjeHhfcnR0aSkg
aXMgc3VwcG9ydGVkIHNpbmNlIDIuNywgdGhlCi0vLyBmaXJzdCB2ZXJzaW9uIHdpdGggQysrIHN1
cHBvcnQuCi0jIGVsaWYgZGVmaW5lZChfX2NsYW5nX18pCi0KLSMgIGRlZmluZSBHVEVTVF9IQVNf
UlRUSSBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQotCi0vLyBTdGFydGluZyB3aXRoIHZlcnNpb24g
OS4wIElCTSBWaXN1YWwgQWdlIGRlZmluZXMgX19SVFRJX0FMTF9fIHRvIDEgaWYKLS8vIGJvdGgg
dGhlIHR5cGVpZCBhbmQgZHluYW1pY19jYXN0IGZlYXR1cmVzIGFyZSBwcmVzZW50LgotIyBlbGlm
IGRlZmluZWQoX19JQk1DUFBfXykgJiYgKF9fSUJNQ1BQX18gPj0gOTAwKQotCi0jICBpZmRlZiBf
X1JUVElfQUxMX18KLSMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotIyAgZWxzZQotIyAgIGRl
ZmluZSBHVEVTVF9IQVNfUlRUSSAwCi0jICBlbmRpZgotCi0jIGVsc2UKLQotLy8gRm9yIGFsbCBv
dGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBSVFRJIGlzIGVuYWJsZWQuCi0jICBkZWZpbmUgR1RF
U1RfSEFTX1JUVEkgMQotCi0jIGVuZGlmICAvLyBfTVNDX1ZFUgotCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19SVFRJCi0KLS8vIEl0J3MgdGhpcyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5j
bHVkZSA8dHlwZWluZm8+IHdoZW4gUlRUSQotLy8gaXMgZW5hYmxlZC4KLSNpZiBHVEVTVF9IQVNf
UlRUSQotIyBpbmNsdWRlIDx0eXBlaW5mbz4KLSNlbmRpZgotCi0vLyBEZXRlcm1pbmVzIHdoZXRo
ZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0aGUgcHRocmVhZHMgbGlicmFyeS4KLSNpZm5kZWYgR1RF
U1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNv
IHdlIG1ha2UgcmVhc29uYWJsZSBhc3N1bXB0aW9ucyBhYm91dAotLy8gd2hpY2ggcGxhdGZvcm1z
IGhhdmUgcHRocmVhZHMgc3VwcG9ydC4KLS8vCi0vLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBw
b3J0IGluIEdvb2dsZSBUZXN0LCBhZGQgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0vLyB0byB5b3Vy
IGNvbXBpbGVyIGZsYWdzLgotIyBkZWZpbmUgR1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJ
TlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19IUFVYIFwKLSAgICB8fCBHVEVTVF9PU19R
TlggfHwgR1RFU1RfT1NfRlJFRUJTRCB8fCBHVEVTVF9PU19OQUNMKQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUFRIUkVBRAotCi0jaWYgR1RFU1RfSEFTX1BUSFJFQUQKLS8vIGd0ZXN0LXBvcnQuaCBn
dWFyYW50ZWVzIHRvICNpbmNsdWRlIDxwdGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BUSFJFQUQg
aXMKLS8vIHRydWUuCi0jIGluY2x1ZGUgPHB0aHJlYWQuaD4gIC8vIE5PTElOVAotCi0vLyBGb3Ig
dGltZXNwZWMgYW5kIG5hbm9zbGVlcCwgdXNlZCBiZWxvdy4KLSMgaW5jbHVkZSA8dGltZS5oPiAg
Ly8gTk9MSU5UCi0jZW5kaWYKLQotLy8gRGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNoX3NldCBh
cmUgYXZhaWxhYmxlLgotLy8gT25seSB1c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhvc2UgY29u
dGFpbmVycy4KLSNpZiAhZGVmaW5lZChHVEVTVF9IQVNfSEFTSF9NQVBfKQotIyBpZiBkZWZpbmVk
KF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxOTAwKQotIyAgZGVmaW5lIEdURVNUX0hBU19IQVNI
X01BUF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgotIyAgZGVm
aW5lIEdURVNUX0hBU19IQVNIX1NFVF8gMSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9zZXQgaXMg
YXZhaWxhYmxlLgotIyBlbmRpZiAgLy8gX01TQ19WRVIKLSNlbmRpZiAgLy8gIWRlZmluZWQoR1RF
U1RfSEFTX0hBU0hfTUFQXykKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNh
biB1c2UgdHIxL3R1cGxlLiAgWW91IGNhbiBkZWZpbmUKLS8vIHRoaXMgbWFjcm8gdG8gMCB0byBw
cmV2ZW50IEdvb2dsZSBUZXN0IGZyb20gdXNpbmcgdHVwbGUgKGFueQotLy8gZmVhdHVyZSBkZXBl
bmRpbmcgb24gdHVwbGUgd2l0aCBiZSBkaXNhYmxlZCBpbiB0aGlzIG1vZGUpLgotI2lmbmRlZiBH
VEVTVF9IQVNfVFIxX1RVUExFCi0jIGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgZGVmaW5l
ZChfU1RMUE9SVF9NQUpPUikKLS8vIFNUTHBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFuZHJvaWQg
TkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1cGxlPiBvciA8dHVwbGU+LgotIyAgZGVmaW5lIEdURVNU
X0hBU19UUjFfVFVQTEUgMAotIyBlbHNlCi0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBub3Qg
dG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBpdCdzIE9LLgotIyAgZGVmaW5lIEdURVNUX0hBU19UUjFf
VFVQTEUgMQotIyBlbmRpZgotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCi0KLS8vIERl
dGVybWluZXMgd2hldGhlciBHb29nbGUgVGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRp
b24KLS8vIHNob3VsZCBiZSB1c2VkLgotI2lmbmRlZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQot
Ly8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91dC4K
LQotLy8gV2UgdXNlIG91ciBvd24gVFIxIHR1cGxlIGlmIHdlIGFyZW4ndCBzdXJlIHRoZSB1c2Vy
IGhhcyBhbgotLy8gaW1wbGVtZW50YXRpb24gb2YgaXQgYWxyZWFkeS4gIEF0IHRoaXMgdGltZSwg
bGlic3RkYysrIDQuMC4wKyBhbmQKLS8vIE1TVkMgMjAxMCBhcmUgdGhlIG9ubHkgbWFpbnN0cmVh
bSBzdGFuZGFyZCBsaWJyYXJpZXMgdGhhdCBjb21lCi0vLyB3aXRoIGEgVFIxIHR1cGxlIGltcGxl
bWVudGF0aW9uLiAgTlZJRElBJ3MgQ1VEQSBOVkNDIGNvbXBpbGVyCi0vLyBwcmV0ZW5kcyB0byBi
ZSBHQ0MgYnkgZGVmaW5pbmcgX19HTlVDX18gYW5kIGZyaWVuZHMsIGJ1dCBjYW5ub3QKLS8vIGNv
bXBpbGUgR0NDJ3MgdHVwbGUgaW1wbGVtZW50YXRpb24uICBNU1ZDIDIwMDggKDkuMCkgcHJvdmlk
ZXMgVFIxCi0vLyB0dXBsZSBpbiBhIDMyMyBNQiBGZWF0dXJlIFBhY2sgZG93bmxvYWQsIHdoaWNo
IHdlIGNhbm5vdCBhc3N1bWUgdGhlCi0vLyB1c2VyIGhhcy4gIFFOWCdzIFFDQyBjb21waWxlciBp
cyBhIG1vZGlmaWVkIEdDQyBidXQgaXQgZG9lc24ndAotLy8gc3VwcG9ydCBUUjEgdHVwbGUuICBs
aWJjKysgb25seSBwcm92aWRlcyBzdGQ6OnR1cGxlLCBpbiBDKysxMSBtb2RlLAotLy8gYW5kIGl0
IGNhbiBiZSB1c2VkIHdpdGggc29tZSBjb21waWxlcnMgdGhhdCBkZWZpbmUgX19HTlVDX18uCi0j
IGlmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0NVREFDQ19fKSAmJiAoR1RFU1Rf
R0NDX1ZFUl8gPj0gNDAwMDApIFwKLSAgICAgICYmICFHVEVTVF9PU19RTlggJiYgIWRlZmluZWQo
X0xJQkNQUF9WRVJTSU9OKSkgfHwgX01TQ19WRVIgPj0gMTYwMAotIyAgZGVmaW5lIEdURVNUX0VO
Vl9IQVNfVFIxX1RVUExFXyAxCi0jIGVuZGlmCi0KLS8vIEMrKzExIHNwZWNpZmllcyB0aGF0IDx0
dXBsZT4gcHJvdmlkZXMgc3RkOjp0dXBsZS4gVXNlIHRoYXQgaWYgZ3Rlc3QgaXMgdXNlZAotLy8g
aW4gQysrMTEgbW9kZSBhbmQgbGlic3RkYysrIGlzbid0IHZlcnkgb2xkIChiaW5hcmllcyB0YXJn
ZXRpbmcgT1MgWCAxMC42Ci0vLyBjYW4gYnVpbGQgd2l0aCBjbGFuZyBidXQgbmVlZCB0byB1c2Ug
Z2NjNC4yJ3MgbGlic3RkYysrKS4KLSMgaWYgR1RFU1RfTEFOR19DWFgxMSAmJiAoIWRlZmluZWQo
X19HTElCQ1hYX18pIHx8IF9fR0xJQkNYWF9fID4gMjAxMTAzMjUpCi0jICBkZWZpbmUgR1RFU1Rf
RU5WX0hBU19TVERfVFVQTEVfIDEKLSMgZW5kaWYKLQotIyBpZiBHVEVTVF9FTlZfSEFTX1RSMV9U
VVBMRV8gfHwgR1RFU1RfRU5WX0hBU19TVERfVFVQTEVfCi0jICBkZWZpbmUgR1RFU1RfVVNFX09X
Tl9UUjFfVFVQTEUgMAotIyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUg
MQotIyBlbmRpZgotCi0jZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCi0KLS8vIFRv
IGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGV2ZXJ5d2hlcmUsIHdlIG1ha2UgaXQKLS8v
IGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNpYmlsaXR5IHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1w
bGVtZW50aW5nCi0vLyB0dXBsZS4KLSNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwotIyBpbmNsdWRl
IDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKLSMgZGVmaW5lIEdURVNUX1RVUExFX05B
TUVTUEFDRV8gOjpzdGQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotLy8gV2Ug
aW5jbHVkZSB0cjE6OnR1cGxlIGV2ZW4gaWYgc3RkOjp0dXBsZSBpcyBhdmFpbGFibGUgdG8gZGVm
aW5lIHByaW50ZXJzIGZvcgotLy8gdGhlbS4KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCi0jIGlm
bmRlZiBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCi0jICBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQ
QUNFXyA6OnN0ZDo6dHIxCi0jIGVuZGlmICAvLyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCi0KLSMg
aWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUKLSMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKLSMgZWxpZiBH
VEVTVF9FTlZfSEFTX1NURF9UVVBMRV8KLSMgIGluY2x1ZGUgPHR1cGxlPgotLy8gQysrMTEgcHV0
cyBpdHMgdHVwbGUgaW50byB0aGUgOjpzdGQgbmFtZXNwYWNlIHJhdGhlciB0aGFuCi0vLyA6OnN0
ZDo6dHIxLiAgZ3Rlc3QgZXhwZWN0cyB0dXBsZSB0byBsaXZlIGluIDo6c3RkOjp0cjEsIHNvIHB1
dCBpdCB0aGVyZS4KLS8vIFRoaXMgY2F1c2VzIHVuZGVmaW5lZCBiZWhhdmlvciwgYnV0IHN1cHBv
cnRlZCBjb21waWxlcnMgcmVhY3QgaW4KLS8vIHRoZSB3YXkgd2UgaW50ZW5kLgotbmFtZXNwYWNl
IHN0ZCB7Ci1uYW1lc3BhY2UgdHIxIHsKLXVzaW5nIDo6c3RkOjpnZXQ7Ci11c2luZyA6OnN0ZDo6
bWFrZV90dXBsZTsKLXVzaW5nIDo6c3RkOjp0dXBsZTsKLXVzaW5nIDo6c3RkOjp0dXBsZV9lbGVt
ZW50OwotdXNpbmcgOjpzdGQ6OnR1cGxlX3NpemU7Ci19Ci19Ci0KLSMgZWxpZiBHVEVTVF9PU19T
WU1CSUFOCi0KLS8vIE9uIFN5bWJpYW4sIEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0
J3MgVFIxIHR1cGxlIGxpYnJhcnkgdG8KLS8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50
YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgZG9lc24ndAotLy8gd29yayBhcyB0aGUgY29weSBv
ZiBTVExwb3J0IGRpc3RyaWJ1dGVkIHdpdGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgotLy8gQnkg
bWFraW5nIHN1cmUgQk9PU1RfSEFTX1RSMV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJv
b3N0IHRvCi0vLyB1c2UgaXRzIG93biB0dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSMgIGlmZGVmIEJP
T1NUX0hBU19UUjFfVFVQTEUKLSMgICB1bmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0jICBlbmRp
ZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBMRQotCi0vLyBUaGlzIHByZXZlbnRzIDxib29zdC90cjEv
ZGV0YWlsL2NvbmZpZy5ocHA+LCB3aGljaCBkZWZpbmVzCi0vLyBCT09TVF9IQVNfVFIxX1RVUExF
LCBmcm9tIGJlaW5nICNpbmNsdWRlZCBieSBCb29zdCdzIDx0dXBsZT4uCi0jICBkZWZpbmUgQk9P
U1RfVFIxX0RFVEFJTF9DT05GSUdfSFBQX0lOQ0xVREVECi0jICBpbmNsdWRlIDx0dXBsZT4gIC8v
IElXWVUgcHJhZ21hOiBleHBvcnQgIC8vIE5PTElOVAotCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNf
XykgJiYgKEdURVNUX0dDQ19WRVJfID49IDQwMDAwKQotLy8gR0NDIDQuMCsgaW1wbGVtZW50cyB0
cjEvdHVwbGUgaW4gdGhlIDx0cjEvdHVwbGU+IGhlYWRlci4gIFRoaXMgZG9lcwotLy8gbm90IGNv
bmZvcm0gdG8gdGhlIFRSMSBzcGVjLCB3aGljaCByZXF1aXJlcyB0aGUgaGVhZGVyIHRvIGJlIDx0
dXBsZT4uCi0KLSMgIGlmICFHVEVTVF9IQVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAy
Ci0vLyBVbnRpbCB2ZXJzaW9uIDQuMy4yLCBnY2MgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIDx0cjEv
ZnVuY3Rpb25hbD4sCi0vLyB3aGljaCBpcyAjaW5jbHVkZWQgYnkgPHRyMS90dXBsZT4sIHRvIG5v
dCBjb21waWxlIHdoZW4gUlRUSSBpcwotLy8gZGlzYWJsZWQuICBfVFIxX0ZVTkNUSU9OQUwgaXMg
dGhlIGhlYWRlciBndWFyZCBmb3IKLS8vIDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUgZm9s
bG93aW5nICNkZWZpbmUgaXMgYSBoYWNrIHRvIHByZXZlbnQKLS8vIDx0cjEvZnVuY3Rpb25hbD4g
ZnJvbSBiZWluZyBpbmNsdWRlZC4KLSMgICBkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKLSMgICBp
bmNsdWRlIDx0cjEvdHVwbGU+Ci0jICAgdW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3Mg
dGhlIHVzZXIgdG8gI2luY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVu
Y3Rpb25hbD4gaWYgaGUgY2hvb3NlcyB0by4KLSMgIGVsc2UKLSMgICBpbmNsdWRlIDx0cjEvdHVw
bGU+ICAvLyBOT0xJTlQKLSMgIGVuZGlmICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0ND
X1ZFUl8gPCA0MDMwMgotCi0jIGVsc2UKLS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0NDIDQu
MCssIHdlIGFzc3VtZSB0aGUgdXNlciBpcyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcgVFIx
IGltcGxlbWVudGF0aW9uLgotIyAgaW5jbHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhw
b3J0ICAvLyBOT0xJTlQKLSMgZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgY2xv
bmUoMikgaXMgc3VwcG9ydGVkLgotLy8gVXN1YWxseSBpdCB3aWxsIG9ubHkgYmUgYXZhaWxhYmxl
IG9uIExpbnV4LCBleGNsdWRpbmcKLS8vIExpbnV4IG9uIHRoZSBJdGFuaXVtIGFyY2hpdGVjdHVy
ZS4KLS8vIEFsc28gc2VlIGh0dHA6Ly9saW51eC5kaWUubmV0L21hbi8yL2Nsb25lLgotI2lmbmRl
ZiBHVEVTVF9IQVNfQ0xPTkUKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVk
IHRvIGZpZ3VyZSBpdCBvdXQuCi0KLSMgaWYgR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19p
YTY0X18pCi0jICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECi0vLyBPbiBBbmRyb2lkLCBjbG9u
ZSgpIGJlY2FtZSBhdmFpbGFibGUgYXQgZGlmZmVyZW50IEFQSSBsZXZlbHMgZm9yIGVhY2ggMzIt
Yml0Ci0vLyBhcmNoaXRlY3R1cmUuCi0jICAgIGlmIGRlZmluZWQoX19MUDY0X18pIHx8IFwKLSAg
ICAgICAgKGRlZmluZWQoX19hcm1fXykgJiYgX19BTkRST0lEX0FQSV9fID49IDkpIHx8IFwKLSAg
ICAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9fQU5EUk9JRF9BUElfXyA+PSAxMikgfHwgXAot
ICAgICAgICAoZGVmaW5lZChfX2kzODZfXykgJiYgX19BTkRST0lEX0FQSV9fID49IDE3KQotIyAg
ICAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAxCi0jICAgIGVsc2UKLSMgICAgIGRlZmluZSBHVEVT
VF9IQVNfQ0xPTkUgMAotIyAgICBlbmRpZgotIyAgZWxzZQotIyAgIGRlZmluZSBHVEVTVF9IQVNf
Q0xPTkUgMQotIyAgZW5kaWYKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCi0j
IGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWCAmJiAhZGVmaW5lZChfX2lhNjRfXykKLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfQ0xPTkUKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQg
c3RyZWFtIHJlZGlyZWN0aW9uLiBUaGlzIGlzIHVzZWQgdG8gdGVzdAotLy8gb3V0cHV0IGNvcnJl
Y3RuZXNzIGFuZCB0byBpbXBsZW1lbnQgZGVhdGggdGVzdHMuCi0jaWZuZGVmIEdURVNUX0hBU19T
VFJFQU1fUkVESVJFQ1RJT04KLS8vIEJ5IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGF0IHN0cmVhbSBy
ZWRpcmVjdGlvbiBpcyBzdXBwb3J0ZWQgb24gYWxsCi0vLyBwbGF0Zm9ybXMgZXhjZXB0IGtub3du
IG1vYmlsZSBvbmVzLgotIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19T
WU1CSUFOIHx8IFwKLSAgICBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRP
V1NfUlQKLSMgIGRlZmluZSBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OIDAKLSMgZWxzZQot
IyAgZGVmaW5lIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04gMQotIyBlbmRpZiAgLy8gIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFICYmICFHVEVTVF9PU19TWU1CSUFOCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1
cHBvcnQgZGVhdGggdGVzdHMuCi0vLyBHb29nbGUgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IGRlYXRo
IHRlc3RzIGZvciBWQyA3LjEgYW5kIGVhcmxpZXIgYXMKLS8vIGFib3J0KCkgaW4gYSBWQyA3LjEg
YXBwbGljYXRpb24gY29tcGlsZWQgYXMgR1VJIGluIGRlYnVnIGNvbmZpZwotLy8gcG9wcyB1cCBh
IGRpYWxvZyB3aW5kb3cgdGhhdCBjYW5ub3QgYmUgc3VwcHJlc3NlZCBwcm9ncmFtbWF0aWNhbGx5
LgotI2lmIChHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09M
QVJJUyB8fCBcCi0gICAgIChHVEVTVF9PU19NQUMgJiYgIUdURVNUX09TX0lPUykgfHwgXAotICAg
ICAoR1RFU1RfT1NfV0lORE9XU19ERVNLVE9QICYmIF9NU0NfVkVSID49IDE0MDApIHx8IFwKLSAg
ICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyB8fCBHVEVTVF9PU19BSVggfHwgR1RFU1RfT1NfSFBV
WCB8fCBcCi0gICAgIEdURVNUX09TX09QRU5CU0QgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09T
X0ZSRUVCU0QpCi0jIGRlZmluZSBHVEVTVF9IQVNfREVBVEhfVEVTVCAxCi0jZW5kaWYKLQotLy8g
V2UgZG9uJ3Qgc3VwcG9ydCBNU1ZDIDcuMSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQgbm93LiAg
VGhlcmVmb3JlCi0vLyBhbGwgdGhlIGNvbXBpbGVycyB3ZSBjYXJlIGFib3V0IGFyZSBhZGVxdWF0
ZSBmb3Igc3VwcG9ydGluZwotLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNkZWZpbmUg
R1RFU1RfSEFTX1BBUkFNX1RFU1QgMQotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9y
dCB0eXBlLWRyaXZlbiB0ZXN0cy4KLQotLy8gVHlwZWQgdGVzdHMgbmVlZCA8dHlwZWluZm8+IGFu
ZCB2YXJpYWRpYyBtYWNyb3MsIHdoaWNoIEdDQywgVkMrKyA4LjAsCi0vLyBTdW4gUHJvIENDLCBJ
Qk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFDQyBzdXBwb3J0LgotI2lmIGRlZmluZWQoX19HTlVDX18p
IHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAg
ZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKQotIyBkZWZpbmUgR1RFU1Rf
SEFTX1RZUEVEX1RFU1QgMQotIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCi0jZW5k
aWYKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgQ29tYmluZSgpLiBUaGlzIG9u
bHkgbWFrZXMgc2Vuc2Ugd2hlbgotLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5h
YmxlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0Ci0vLyB3b3JrIG9uIFN1biBTdHVkaW8g
c2luY2UgaXQgZG9lc24ndCB1bmRlcnN0YW5kIHRlbXBsYXRlZCBjb252ZXJzaW9uCi0vLyBvcGVy
YXRvcnMuCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QgJiYgR1RFU1RfSEFTX1RSMV9UVVBMRSAm
JiAhZGVmaW5lZChfX1NVTlBST19DQykKLSMgZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKLSNl
bmRpZgotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHN5c3RlbSBjb21waWxlciB1c2VzIFVU
Ri0xNiBmb3IgZW5jb2Rpbmcgd2lkZSBzdHJpbmdzLgotI2RlZmluZSBHVEVTVF9XSURFX1NUUklO
R19VU0VTX1VURjE2XyBcCi0gICAgKEdURVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfQ1lHV0lO
IHx8IEdURVNUX09TX1NZTUJJQU4gfHwgR1RFU1RfT1NfQUlYKQotCi0vLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGVzdCByZXN1bHRzIGNhbiBiZSBzdHJlYW1lZCB0byBhIHNvY2tldC4KLSNpZiBHVEVT
VF9PU19MSU5VWAotIyBkZWZpbmUgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXyAxCi0jZW5kaWYK
LQotLy8gRGVmaW5lcyBzb21lIHV0aWxpdHkgbWFjcm9zLgotCi0vLyBUaGUgR05VIGNvbXBpbGVy
IGVtaXRzIGEgd2FybmluZyBpZiBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIGFyZSBmb2xsb3dlZCBi
eQotLy8gYW4gImVsc2UiIHN0YXRlbWVudCBhbmQgYnJhY2VzIGFyZSBub3QgdXNlZCB0byBleHBs
aWNpdGx5IGRpc2FtYmlndWF0ZSB0aGUKLS8vICJlbHNlIiBiaW5kaW5nLiAgVGhpcyBsZWFkcyB0
byBwcm9ibGVtcyB3aXRoIGNvZGUgbGlrZToKLS8vCi0vLyAgIGlmIChnYXRlKQotLy8gICAgIEFT
U0VSVF8qKGNvbmRpdGlvbikgPDwgIlNvbWUgbWVzc2FnZSI7Ci0vLwotLy8gVGhlICJzd2l0Y2gg
KDApIGNhc2UgMDoiIGlkaW9tIGlzIHVzZWQgdG8gc3VwcHJlc3MgdGhpcy4KLSNpZmRlZiBfX0lO
VEVMX0NPTVBJTEVSCi0jIGRlZmluZSBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXwotI2Vs
c2UKLSMgZGVmaW5lIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkgY2Fz
ZSAwOiBkZWZhdWx0OiAgLy8gTk9MSU5UCi0jZW5kaWYKLQotLy8gVXNlIHRoaXMgYW5ub3RhdGlv
biBhdCB0aGUgZW5kIG9mIGEgc3RydWN0L2NsYXNzIGRlZmluaXRpb24gdG8KLS8vIHByZXZlbnQg
dGhlIGNvbXBpbGVyIGZyb20gb3B0aW1pemluZyBhd2F5IGluc3RhbmNlcyB0aGF0IGFyZSBuZXZl
cgotLy8gdXNlZC4gIFRoaXMgaXMgdXNlZnVsIHdoZW4gYWxsIGludGVyZXN0aW5nIGxvZ2ljIGhh
cHBlbnMgaW5zaWRlIHRoZQotLy8gYyd0b3IgYW5kIC8gb3IgZCd0b3IuICBFeGFtcGxlOgotLy8K
LS8vICAgc3RydWN0IEZvbyB7Ci0vLyAgICAgRm9vKCkgeyAuLi4gfQotLy8gICB9IEdURVNUX0FU
VFJJQlVURV9VTlVTRURfOwotLy8KLS8vIEFsc28gdXNlIGl0IGFmdGVyIGEgdmFyaWFibGUgb3Ig
cGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRvIHRlbGwgdGhlCi0vLyBjb21waWxlciB0aGUgdmFyaWFi
bGUvcGFyYW1ldGVyIGRvZXMgbm90IGhhdmUgdG8gYmUgdXNlZC4KLSNpZiBkZWZpbmVkKF9fR05V
Q19fKSAmJiAhZGVmaW5lZChDT01QSUxFUl9JQ0MpCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19f
KQotIyBpZiBfX2hhc19hdHRyaWJ1dGUodW51c2VkKQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVU
RV9VTlVTRURfIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIyBlbmRpZgotI2VuZGlmCi0jaWZu
ZGVmIEdURVNUX0FUVFJJQlVURV9VTlVTRURfCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXwotI2VuZGlmCi0KLS8vIFVzZSB0aGlzIGFubm90YXRpb24gYmVmb3JlIGEgZnVuY3Rpb24g
dGhhdCB0YWtlcyBhIHByaW50ZiBmb3JtYXQgc3RyaW5nLgotI2lmIGRlZmluZWQoX19HTlVDX18p
ICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSMgaWYgZGVmaW5lZChfX01JTkdXX1BSSU5URl9G
T1JNQVQpCi0vLyBNaW5HVyBoYXMgdHdvIGRpZmZlcmVudCBwcmludGYgaW1wbGVtZW50YXRpb25z
LiBFbnN1cmUgdGhlIGZvcm1hdCBtYWNybwotLy8gbWF0Y2hlcyB0aGUgc2VsZWN0ZWQgaW1wbGVt
ZW50YXRpb24uIFNlZQotLy8gaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9taW5ndy13NjQvd2lr
aTIvZ251JTIwcHJpbnRmLy4KLSMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJp
bmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKSBcCi0gICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3Jt
YXRfXyhfX01JTkdXX1BSSU5URl9GT1JNQVQsIHN0cmluZ19pbmRleCwgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdG9fY2hlY2spKSkKLSMgZWxzZQotIyAgZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9QUklOVEZfKHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spIFwK
LSAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIHN0cmluZ19pbmRl
eCwgZmlyc3RfdG9fY2hlY2spKSkKLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9BVFRS
SUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNrKQotI2VuZGlmCi0KLS8v
IEEgbWFjcm8gdG8gZGlzYWxsb3cgb3BlcmF0b3I9Ci0vLyBUaGlzIHNob3VsZCBiZSB1c2VkIGlu
IHRoZSBwcml2YXRlOiBkZWNsYXJhdGlvbnMgZm9yIGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8odHlwZSlcCi0gIHZvaWQgb3BlcmF0b3I9KHR5cGUgY29uc3QgJikKLQot
Ly8gQSBtYWNybyB0byBkaXNhbGxvdyBjb3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvcj0KLS8v
IFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIHByaXZhdGU6IGRlY2xhcmF0aW9ucyBmb3IgYSBj
bGFzcy4KLSNkZWZpbmUgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyh0eXBlKVwKLSAg
dHlwZSh0eXBlIGNvbnN0ICYpO1wKLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQotCi0v
LyBUZWxsIHRoZSBjb21waWxlciB0byB3YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZv
ciBmdW5jdGlvbnMgZGVjbGFyZWQKLS8vIHdpdGggdGhpcyBtYWNyby4gIFRoZSBtYWNybyBzaG91
bGQgYmUgdXNlZCBvbiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKLS8vIGZvbGxvd2luZyB0aGUgYXJn
dW1lbnQgbGlzdDoKLS8vCi0vLyAgIFNwcm9ja2V0KiBBbGxvY2F0ZVNwcm9ja2V0KCkgR1RFU1Rf
TVVTVF9VU0VfUkVTVUxUXzsKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZF
Ul8gPj0gMzA0MDApICYmICFkZWZpbmVkKENPTVBJTEVSX0lDQykKLSMgZGVmaW5lIEdURVNUX01V
U1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0jZWxz
ZQotIyBkZWZpbmUgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXwotI2VuZGlmICAvLyBfX0dOVUNfXyAm
JiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0MDApICYmICFDT01QSUxFUl9JQ0MKLQotLy8gTVMgQysr
IGNvbXBpbGVyIGVtaXRzIHdhcm5pbmcgd2hlbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMg
Y29tcGlsZSB0aW1lCi0vLyBjb25zdGFudC4gSW4gc29tZSBjb250ZXh0cyB0aGlzIHdhcm5pbmcg
aXMgZmFsc2UgcG9zaXRpdmUgYW5kIG5lZWRzIHRvIGJlCi0vLyBzdXBwcmVzc2VkLiBVc2UgdGhl
IGZvbGxvd2luZyB0d28gbWFjcm9zIGluIHN1Y2ggY2FzZXM6Ci0vLwotLy8gR1RFU1RfSU5URU5U
SU9OQUxfQ09OU1RfQ09ORF9QVVNIXygpCi0vLyB3aGlsZSAodHJ1ZSkgewotLy8gR1RFU1RfSU5U
RU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKLS8vIH0KLSMgZGVmaW5lIEdURVNUX0lOVEVOVElP
TkFMX0NPTlNUX0NPTkRfUFVTSF8oKSBcCi0gICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UFVTSF8oNDEyNykKLSMgZGVmaW5lIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygp
IFwKLSAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLQotLy8gRGV0ZXJtaW5l
IHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIE1pY3Jvc29mdCdzIFN0cnVjdHVyZWQgRXhj
ZXB0aW9uCi0vLyBIYW5kbGluZy4gIFRoaXMgaXMgc3VwcG9ydGVkIGJ5IHNldmVyYWwgV2luZG93
cyBjb21waWxlcnMgYnV0IGdlbmVyYWxseQotLy8gZG9lcyBub3QgZXhpc3Qgb24gYW55IG90aGVy
IHN5c3RlbS4KLSNpZm5kZWYgR1RFU1RfSEFTX1NFSAotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwg
dXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91dC4KLQotIyBpZiBkZWZpbmVkKF9NU0NfVkVS
KSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLS8vIFRoZXNlIHR3byBjb21waWxlcnMgYXJlIGtu
b3duIHRvIHN1cHBvcnQgU0VILgotIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMQotIyBlbHNlCi0v
LyBBc3N1bWUgbm8gU0VILgotIyAgZGVmaW5lIEdURVNUX0hBU19TRUggMAotIyBlbmRpZgotCi0j
ZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNBRkUgXAotICAgIChHVEVTVF9IQVNfTVVURVhfQU5EX1RI
UkVBRF9MT0NBTF8gXAotICAgICB8fCAoR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVCkgXAotICAgICB8fCBHVEVTVF9IQVNf
UFRIUkVBRCkKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICi0KLS8vIEdURVNUX0FQSV8gcXVh
bGlmaWVzIGFsbCBzeW1ib2xzIHRoYXQgbXVzdCBiZSBleHBvcnRlZC4gVGhlIGRlZmluaXRpb25z
IGJlbG93Ci0vLyBhcmUgZ3VhcmRlZCBieSAjaWZuZGVmIHRvIGdpdmUgZW1iZWRkZXJzIGEgY2hh
bmNlIHRvIGRlZmluZSBHVEVTVF9BUElfIGluCi0vLyBndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rl
c3QtcG9ydC5oCi0jaWZuZGVmIEdURVNUX0FQSV8KLQotI2lmZGVmIF9NU0NfVkVSCi0jIGlmIEdU
RVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFSWQotIyAgZGVmaW5lIEdURVNUX0FQSV8gX19kZWNs
c3BlYyhkbGxpbXBvcnQpCi0jIGVsaWYgR1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0jICBk
ZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgZW5kaWYKLSNlbGlmIF9f
R05VQ19fID49IDQgfHwgZGVmaW5lZChfX2NsYW5nX18pCi0jIGRlZmluZSBHVEVTVF9BUElfIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotI2VuZGlmIC8vIF9NU0NfVkVS
Ci0KLSNlbmRpZiAvLyBHVEVTVF9BUElfCi0KLSNpZm5kZWYgR1RFU1RfQVBJXwotIyBkZWZpbmUg
R1RFU1RfQVBJXwotI2VuZGlmIC8vIEdURVNUX0FQSV8KLQotI2lmZGVmIF9fR05VQ19fCi0vLyBB
c2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVyIGlubGluZSBhIGdpdmVuIGZ1bmN0aW9uLgotIyBkZWZp
bmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0jZWxzZQotIyBk
ZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwotI2VuZGlmCi0KLS8vIF9MSUJDUFBfVkVSU0lPTiBpcyBk
ZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGlicmFyeSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCi0jaWYg
ZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0jIGRlZmlu
ZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDEKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJ
X0hfIDAKLSNlbmRpZgotCi0vLyBBIGZ1bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxl
IGNoZWNraW5nIGZvciB1c2Ugb2YgdW5pbml0aWFsaXplZAotLy8gbWVtb3J5IHdoZW4gYnVpbHQg
d2l0aCBNZW1vcnlTYW5pdGl6ZXIuCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jIGlmIF9faGFz
X2ZlYXR1cmUobWVtb3J5X3Nhbml0aXplcikKLSMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9f
U0FOSVRJWkVfTUVNT1JZXyBcCi0gICAgICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVt
b3J5KSkKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1P
UllfCi0jIGVuZGlmICAvLyBfX2hhc19mZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCi0jZWxzZQot
IyBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX01FTU9SWV8KLSNlbmRpZiAgLy8g
X19jbGFuZ19fCi0KLS8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRk
cmVzc1Nhbml0aXplciBpbnN0cnVtZW50YXRpb24uCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0j
IGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpCi0jICBkZWZpbmUgR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfIFwKLSAgICAgICBfX2F0dHJpYnV0ZV9fKChub19z
YW5pdGl6ZV9hZGRyZXNzKSkKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19T
QU5JVElaRV9BRERSRVNTXwotIyBlbmRpZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0
aXplcikKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVT
U18KLSNlbmRpZiAgLy8gX19jbGFuZ19fCi0KLS8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRl
IHRvIGRpc2FibGUgVGhyZWFkU2FuaXRpemVyIGluc3RydW1lbnRhdGlvbi4KLSNpZiBkZWZpbmVk
KF9fY2xhbmdfXykKLSMgaWYgX19oYXNfZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQotIyAgZGVm
aW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfIFwKLSAgICAgICBfX2F0dHJp
YnV0ZV9fKChub19zYW5pdGl6ZV90aHJlYWQpKQotIyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX1RIUkVBRF8KLSMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhy
ZWFkX3Nhbml0aXplcikKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJ
WkVfVEhSRUFEXwotI2VuZGlmICAvLyBfX2NsYW5nX18KLQotbmFtZXNwYWNlIHRlc3Rpbmcgewot
Ci1jbGFzcyBNZXNzYWdlOwotCi0jaWYgZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQot
Ly8gSW1wb3J0IHR1cGxlIGFuZCBmcmllbmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2Uu
Ci0vLyBJdCBpcyBwYXJ0IG9mIG91ciBpbnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGlu
ZyBhbGxvd3MgdXMgdG8gY2hhbmdlCi0vLyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCi11c2luZyBH
VEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpnZXQ7Ci11c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
OjptYWtlX3R1cGxlOwotdXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Ci11c2lu
ZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjp0dXBsZV9zaXplOwotdXNpbmcgR1RFU1RfVFVQTEVf
TkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVudDsKLSNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBM
RV9OQU1FU1BBQ0VfKQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBBIHNlY3JldCB0eXBl
IHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMgZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwotLy8g
ZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVh
dGUgYQotLy8gU2VjcmV0IG9iamVjdCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3MgU2Vj
cmV0OwotCi0vLyBUaGUgR1RFU1RfQ09NUElMRV9BU1NFUlRfIG1hY3JvIGNhbiBiZSB1c2VkIHRv
IHZlcmlmeSB0aGF0IGEgY29tcGlsZSB0aW1lCi0vLyBleHByZXNzaW9uIGlzIHRydWUuIEZvciBl
eGFtcGxlLCB5b3UgY291bGQgdXNlIGl0IHRvIHZlcmlmeSB0aGUKLS8vIHNpemUgb2YgYSBzdGF0
aWMgYXJyYXk6Ci0vLwotLy8gICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oR1RFU1RfQVJSQVlfU0la
RV8obmFtZXMpID09IE5VTV9OQU1FUywKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVz
X2luY29ycmVjdF9zaXplKTsKLS8vCi0vLyBvciB0byBtYWtlIHN1cmUgYSBzdHJ1Y3QgaXMgc21h
bGxlciB0aGFuIGEgY2VydGFpbiBzaXplOgotLy8KLS8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRf
KHNpemVvZihmb28pIDwgMTI4LCBmb29fdG9vX2xhcmdlKTsKLS8vCi0vLyBUaGUgc2Vjb25kIGFy
Z3VtZW50IHRvIHRoZSBtYWNybyBpcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuIElmCi0vLyB0
aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSwgbW9zdCBjb21waWxlcnMgd2lsbCBpc3N1ZSBhIHdhcm5p
bmcvZXJyb3IKLS8vIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLgotCi0jaWYg
R1RFU1RfTEFOR19DWFgxMQotIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1z
Zykgc3RhdGljX2Fzc2VydChleHByLCAjbXNnKQotI2Vsc2UgIC8vICFHVEVTVF9MQU5HX0NYWDEx
Ci10ZW1wbGF0ZSA8Ym9vbD4KLSAgc3RydWN0IENvbXBpbGVBc3NlcnQgewotfTsKLQotIyBkZWZp
bmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgXAotICB0eXBlZGVmIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkNvbXBpbGVBc3NlcnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAot
ICAgICAgbXNnW3N0YXRpY19jYXN0PGJvb2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXwotI2VuZGlmICAvLyAhR1RFU1RfTEFOR19DWFgxMQotCi0vLyBJbXBsZW1lbnRh
dGlvbiBkZXRhaWxzIG9mIEdURVNUX0NPTVBJTEVfQVNTRVJUXzoKLS8vCi0vLyAoSW4gQysrMTEs
IHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fzc2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCi0v
LwotLy8gLSBHVEVTVF9DT01QSUxFX0FTU0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkg
dHlwZSB0aGF0IGhhcyAtMQotLy8gICBlbGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hl
biB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZS4KLS8vCi0vLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRp
b24KLS8vCi0vLyAgICAjZGVmaW5lIEdURVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5
cGVkZWYgY2hhciBtc2dbKGV4cHIpID8gMSA6IC0xXQotLy8KLS8vICAgZG9lcyBub3Qgd29yaywg
YXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxlLWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKLS8vICAg
YXJlIGRldGVybWluZWQgYXQgcnVuLXRpbWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBu
b3QgcGFydAotLy8gICBvZiB0aGUgQysrIHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFp
bHMgdG8gcmVqZWN0IHRoZQotLy8gICBmb2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVm
aW5pdGlvbjoKLS8vCi0vLyAgICAgaW50IGZvbzsKLS8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VS
VF8oZm9vLCBtc2cpOyAvLyBub3Qgc3VwcG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUg
Y29uc3RhbnQuCi0vLwotLy8gLSBCeSB1c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29s
KGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhhdAotLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNv
bnN0YW50LiAgKFRlbXBsYXRlIGFyZ3VtZW50cyBtdXN0IGJlCi0vLyAgIGRldGVybWluZWQgYXQg
Y29tcGlsZS10aW1lLikKLS8vCi0vLyAtIFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGls
ZUFzc2VydDwoYm9vbChleHByKSk+IGFyZSBuZWNlc3NhcnkKLS8vICAgdG8gd29yayBhcm91bmQg
YSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCi0vLwotLy8g
ICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChleHByKT4KLS8vCi0vLyAgIGluc3RlYWQsIHRoZXNlIGNv
bXBpbGVycyB3aWxsIHJlZnVzZSB0byBjb21waWxlCi0vLwotLy8gICAgIEdURVNUX0NPTVBJTEVf
QVNTRVJUXyg1ID4gMCwgc29tZV9tZXNzYWdlKTsKLS8vCi0vLyAgIChUaGV5IHNlZW0gdG8gdGhp
bmsgdGhlICI+IiBpbiAiNSA+IDAiIG1hcmtzIHRoZSBlbmQgb2YgdGhlCi0vLyAgIHRlbXBsYXRl
IGFyZ3VtZW50IGxpc3QuKQotLy8KLS8vIC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikg
PyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNpbXBseQotLy8KLS8vICAgICAoKGV4cHIpID8gMSA6IC0x
KS4KLS8vCi0vLyAgIFRoaXMgaXMgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZD
IDcuMSwgd2hpY2gKLS8vICAgY2F1c2VzICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkg
ZXZhbHVhdGUgdG8gMS4KLQotLy8gU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyIGlzIHVzZWQgYnkg
U3RhdGljQXNzZXJ0VHlwZUVxIGRlZmluZWQgaW4gZ3Rlc3QuaC4KLS8vCi0vLyBUaGlzIHRlbXBs
YXRlIGlzIGRlY2xhcmVkLCBidXQgaW50ZW50aW9uYWxseSB1bmRlZmluZWQuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBl
cjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVs
cGVyPFQsIFQ+IHsKLSAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwotfTsKLQotLy8gRXZhbHVhdGVz
IHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gJ2FycmF5Jy4KLSNkZWZpbmUgR1RFU1RfQVJS
QVlfU0laRV8oYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKLQotI2lm
IEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi10eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKLSNlbHNl
Ci10eXBlZGVmIDo6c3RkOjpzdHJpbmcgc3RyaW5nOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi10eXBlZGVmIDo6d3N0
cmluZyB3c3RyaW5nOwotI2VsaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi10eXBlZGVmIDo6c3Rk
Ojp3c3RyaW5nIHdzdHJpbmc7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwot
Ci0vLyBBIGhlbHBlciBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0
aW9uLiAgSXQganVzdAotLy8gcmV0dXJucyAnY29uZGl0aW9uJy4KLUdURVNUX0FQSV8gYm9vbCBJ
c1RydWUoYm9vbCBjb25kaXRpb24pOwotCi0vLyBEZWZpbmVzIHNjb3BlZF9wdHIuCi0KLS8vIFRo
aXMgaW1wbGVtZW50YXRpb24gb2Ygc2NvcGVkX3B0ciBpcyBQQVJUSUFMIC0gaXQgb25seSBjb250
YWlucwotLy8gZW5vdWdoIHN0dWZmIHRvIHNhdGlzZnkgR29vZ2xlIFRlc3QncyBuZWVkLgotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBzY29wZWRfcHRyIHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgZXhwbGljaXQgc2NvcGVkX3B0cihUKiBwID0gTlVMTCkg
OiBwdHJfKHApIHt9Ci0gIH5zY29wZWRfcHRyKCkgeyByZXNldCgpOyB9Ci0KLSAgVCYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gKnB0cl87IH0KLSAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsg
cmV0dXJuIHB0cl87IH0KLSAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotCi0gIFQq
IHJlbGVhc2UoKSB7Ci0gICAgVCogY29uc3QgcHRyID0gcHRyXzsKLSAgICBwdHJfID0gTlVMTDsK
LSAgICByZXR1cm4gcHRyOwotICB9Ci0KLSAgdm9pZCByZXNldChUKiBwID0gTlVMTCkgewotICAg
IGlmIChwICE9IHB0cl8pIHsKLSAgICAgIGlmIChJc1RydWUoc2l6ZW9mKFQpID4gMCkpIHsgIC8v
IE1ha2VzIHN1cmUgVCBpcyBhIGNvbXBsZXRlIHR5cGUuCi0gICAgICAgIGRlbGV0ZSBwdHJfOwot
ICAgICAgfQotICAgICAgcHRyXyA9IHA7Ci0gICAgfQotICB9Ci0KLSAgZnJpZW5kIHZvaWQgc3dh
cChzY29wZWRfcHRyJiBhLCBzY29wZWRfcHRyJiBiKSB7Ci0gICAgdXNpbmcgc3RkOjpzd2FwOwot
ICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8pOwotICB9Ci0KLSBwcml2YXRlOgotICBUKiBwdHJfOwot
Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oc2NvcGVkX3B0cik7Ci19OwotCi0v
LyBEZWZpbmVzIFJFLgotCi0vLyBBIHNpbXBsZSBDKysgd3JhcHBlciBmb3IgPHJlZ2V4Lmg+LiAg
SXQgdXNlcyB0aGUgUE9TSVggRXh0ZW5kZWQKLS8vIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXgu
Ci1jbGFzcyBHVEVTVF9BUElfIFJFIHsKLSBwdWJsaWM6Ci0gIC8vIEEgY29weSBjb25zdHJ1Y3Rv
ciBpcyByZXF1aXJlZCBieSB0aGUgU3RhbmRhcmQgdG8gaW5pdGlhbGl6ZSBvYmplY3QKLSAgLy8g
cmVmZXJlbmNlcyBmcm9tIHItdmFsdWVzLgotICBSRShjb25zdCBSRSYgb3RoZXIpIHsgSW5pdChv
dGhlci5wYXR0ZXJuKCkpOyB9Ci0KLSAgLy8gQ29uc3RydWN0cyBhbiBSRSBmcm9tIGEgc3RyaW5n
LgotICBSRShjb25zdCA6OnN0ZDo6c3RyaW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkp
OyB9ICAvLyBOT0xJTlQKLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgUkUoY29u
c3QgOjpzdHJpbmcmIHJlZ2V4KSB7IEluaXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAot
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgUkUoY29uc3QgY2hhciog
cmVnZXgpIHsgSW5pdChyZWdleCk7IH0gIC8vIE5PTElOVAotICB+UkUoKTsKLQotICAvLyBSZXR1
cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlZ2V4LgotICBjb25zdCBjaGFy
KiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gcGF0dGVybl87IH0KLQotICAvLyBGdWxsTWF0Y2go
c3RyLCByZSkgcmV0dXJucyB0cnVlIGlmZiByZWd1bGFyIGV4cHJlc3Npb24gcmUgbWF0Y2hlcwot
ICAvLyB0aGUgZW50aXJlIHN0ci4KLSAgLy8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJldHVybnMg
dHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlCi0gIC8vIG1hdGNoZXMgYSBzdWJzdHJpbmcg
b2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0c2VsZikuCi0gIC8vCi0gIC8vIFRPRE8od2FuQGdvb2ds
ZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgpIGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCi0gIC8vIHdo
ZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzLgotICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2go
Y29uc3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKLSAgICByZXR1cm4gRnVs
bE1hdGNoKHN0ci5jX3N0cigpLCByZSk7Ci0gIH0KLSAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNo
KGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY29uc3QgUkUmIHJlKSB7Ci0gICAgcmV0dXJuIFBh
cnRpYWxNYXRjaChzdHIuY19zdHIoKSwgcmUpOwotICB9Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFM
X1NUUklORwotCi0gIHN0YXRpYyBib29sIEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBj
b25zdCBSRSYgcmUpIHsKLSAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7Ci0g
IH0KLSAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0
IFJFJiByZSkgewotICAgIHJldHVybiBQYXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKLSAg
fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgc3RhdGljIGJvb2wg
RnVsbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKTsKLSAgc3RhdGljIGJvb2wg
UGFydGlhbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKTsKLQotIHByaXZhdGU6
Ci0gIHZvaWQgSW5pdChjb25zdCBjaGFyKiByZWdleCk7Ci0KLSAgLy8gV2UgdXNlIGEgY29uc3Qg
Y2hhciogaW5zdGVhZCBvZiBhbiBzdGQ6OnN0cmluZywgYXMgR29vZ2xlIFRlc3QgdXNlZCB0byBi
ZQotICAvLyB1c2VkIHdoZXJlIHN0ZDo6c3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBUT0RPKHdh
bkBnb29nbGUuY29tKTogY2hhbmdlIHRvCi0gIC8vIHN0ZDo6c3RyaW5nLgotICBjb25zdCBjaGFy
KiBwYXR0ZXJuXzsKLSAgYm9vbCBpc192YWxpZF87Ci0KLSNpZiBHVEVTVF9VU0VTX1BPU0lYX1JF
Ci0KLSAgcmVnZXhfdCBmdWxsX3JlZ2V4XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KLSAgcmVn
ZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8vIEZvciBQYXJ0aWFsTWF0Y2goKS4KLQotI2Vsc2UgIC8v
IEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLSAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8v
IEZvciBGdWxsTWF0Y2goKTsKLQotI2VuZGlmCi0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhS
RSk7Ci19OwotCi0vLyBGb3JtYXRzIGEgc291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJl
ciBhcyB0aGV5IHdvdWxkIGFwcGVhcgotLy8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBj
b21waWxlciB1c2VkIHRvIGNvbXBpbGUgdGhpcyBjb2RlLgotR1RFU1RfQVBJXyA6OnN0ZDo6c3Ry
aW5nIEZvcm1hdEZpbGVMb2NhdGlvbihjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Ci0KLS8v
IEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0
cHV0LgotLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50
LCB3ZSBwdXQgaXQgbmV4dCB0bwotLy8gRm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNv
bnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgotR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1h
dENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsaW5lKTsKLQotLy8gRGVmaW5lcyBsb2dnaW5nIHV0aWxpdGllczoKLS8vICAgR1RFU1Rf
TE9HXyhzZXZlcml0eSkgLSBsb2dzIG1lc3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkg
bGV2ZWwuIFRoZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlz
IHN0cmVhbWVkIGludG8gdGhlIG1hY3JvLgotLy8gICBMb2dUb1N0ZGVycigpICAtIGRpcmVjdHMg
YWxsIGxvZyBtZXNzYWdlcyB0byBzdGRlcnIuCi0vLyAgIEZsdXNoSW5mb0xvZygpIC0gZmx1c2hl
cyBpbmZvcm1hdGlvbmFsIGxvZyBtZXNzYWdlcy4KLQotZW51bSBHVGVzdExvZ1NldmVyaXR5IHsK
LSAgR1RFU1RfSU5GTywKLSAgR1RFU1RfV0FSTklORywKLSAgR1RFU1RfRVJST1IsCi0gIEdURVNU
X0ZBVEFMCi19OwotCi0vLyBGb3JtYXRzIGxvZyBlbnRyeSBzZXZlcml0eSwgcHJvdmlkZXMgYSBz
dHJlYW0gb2JqZWN0IGZvciBzdHJlYW1pbmcgdGhlCi0vLyBsb2cgbWVzc2FnZSwgYW5kIHRlcm1p
bmF0ZXMgdGhlIG1lc3NhZ2Ugd2l0aCBhIG5ld2xpbmUgd2hlbiBnb2luZyBvdXQgb2YKLS8vIHNj
b3BlLgotY2xhc3MgR1RFU1RfQVBJXyBHVGVzdExvZyB7Ci0gcHVibGljOgotICBHVGVzdExvZyhH
VGVzdExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Ci0K
LSAgLy8gRmx1c2hlcyB0aGUgYnVmZmVycyBhbmQsIGlmIHNldmVyaXR5IGlzIEdURVNUX0ZBVEFM
LCBhYm9ydHMgdGhlIHByb2dyYW0uCi0gIH5HVGVzdExvZygpOwotCi0gIDo6c3RkOjpvc3RyZWFt
JiBHZXRTdHJlYW0oKSB7IHJldHVybiA6OnN0ZDo6Y2VycjsgfQotCi0gcHJpdmF0ZToKLSAgY29u
c3QgR1Rlc3RMb2dTZXZlcml0eSBzZXZlcml0eV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhHVGVzdExvZyk7Ci19OwotCi0jaWYgIWRlZmluZWQoR1RFU1RfTE9HXykKLQot
IyBkZWZpbmUgR1RFU1RfTE9HXyhzZXZlcml0eSkgXAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkdUZXN0TG9nKDo6dGVzdGluZzo6aW50ZXJuYWw6OkdURVNUXyMjc2V2ZXJpdHksIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pLkdldFN0cmVh
bSgpCi0KLWlubGluZSB2b2lkIExvZ1RvU3RkZXJyKCkge30KLWlubGluZSB2b2lkIEZsdXNoSW5m
b0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9Ci0KLSNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfTE9H
XykKLQotI2lmICFkZWZpbmVkKEdURVNUX0NIRUNLXykKLS8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRS4KLS8vCi0vLyBHVEVTVF9DSEVDS18gaXMgYW4gYWxsLW1vZGUgYXNz
ZXJ0LiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaWYgdGhlIGNvbmRpdGlvbgotLy8gaXMgbm90IHNh
dGlzZmllZC4KLS8vICBTeW5vcHN5czoKLS8vICAgIEdURVNUX0NIRUNLXyhib29sZWFuX2NvbmRp
dGlvbik7Ci0vLyAgICAgb3IKLS8vICAgIEdURVNUX0NIRUNLXyhib29sZWFuX2NvbmRpdGlvbikg
PDwgIkFkZGl0aW9uYWwgbWVzc2FnZSI7Ci0vLwotLy8gICAgVGhpcyBjaGVja3MgdGhlIGNvbmRp
dGlvbiBhbmQgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3Qgc2F0aXNmaWVkCi0vLyAgICBpdCBwcmlu
dHMgbWVzc2FnZSBhYm91dCB0aGUgY29uZGl0aW9uIHZpb2xhdGlvbiwgaW5jbHVkaW5nIHRoZQot
Ly8gICAgY29uZGl0aW9uIGl0c2VsZiwgcGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQg
aW50byBpdCwgaWYgYW55LAotLy8gICAgYW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJ
dCBhYm9ydHMgdGhlIHByb2dyYW0gaXJyZXNwZWN0aXZlIG9mCi0vLyAgICB3aGV0aGVyIGl0IGlz
IGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2RlIG9yIG5vdC4KLSMgZGVmaW5lIEdURVNUX0NIRUNLXyhj
b25kaXRpb24pIFwKLSAgICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYg
KDo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShjb25kaXRpb24pKSBcCi0gICAgICA7IFwKLSAg
ICBlbHNlIFwKLSAgICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJDb25kaXRpb24gIiAjY29uZGl0
aW9uICIgZmFpbGVkLiAiCi0jZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0NIRUNLXykKLQotLy8g
QW4gYWxsLW1vZGUgYXNzZXJ0IHRvIHZlcmlmeSB0aGF0IHRoZSBnaXZlbiBQT1NJWC1zdHlsZSBm
dW5jdGlvbgotLy8gY2FsbCByZXR1cm5zIDAgKGluZGljYXRpbmcgc3VjY2VzcykuICBLbm93biBs
aW1pdGF0aW9uOiB0aGlzCi0vLyBkb2Vzbid0IGV4cGFuZCB0byBhIGJhbGFuY2VkICdpZicgc3Rh
dGVtZW50LCBzbyBlbmNsb3NlIHRoZSBtYWNybwotLy8gaW4ge30gaWYgeW91IG5lZWQgdG8gdXNl
IGl0IGFzIHRoZSBvbmx5IHN0YXRlbWVudCBpbiBhbiAnaWYnCi0vLyBicmFuY2guCi0jZGVmaW5l
IEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHBvc2l4X2NhbGwpIFwKLSAgaWYgKGNvbnN0IGlu
dCBndGVzdF9lcnJvciA9IChwb3NpeF9jYWxsKSkgXAotICAgIEdURVNUX0xPR18oRkFUQUwpIDw8
ICNwb3NpeF9jYWxsIDw8ICJmYWlsZWQgd2l0aCBlcnJvciAiIFwKLSAgICAgICAgICAgICAgICAg
ICAgICA8PCBndGVzdF9lcnJvcgotCi0jaWYgR1RFU1RfSEFTX1NURF9NT1ZFXwotdXNpbmcgc3Rk
Ojptb3ZlOwotI2Vsc2UgIC8vIEdURVNUX0hBU19TVERfTU9WRV8KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY29uc3QgVCYgbW92ZShjb25zdCBUJiB0KSB7Ci0gIHJldHVybiB0OwotfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX01PVkVfCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gVXNlIEltcGxpY2l0Q2FzdF8gYXMgYSBz
YWZlIHZlcnNpb24gb2Ygc3RhdGljX2Nhc3QgZm9yIHVwY2FzdGluZyBpbgotLy8gdGhlIHR5cGUg
aGllcmFyY2h5IChlLmcuIGNhc3RpbmcgYSBGb28qIHRvIGEgU3VwZXJjbGFzc09mRm9vKiBvciBh
Ci0vLyBjb25zdCBGb28qKS4gIFdoZW4geW91IHVzZSBJbXBsaWNpdENhc3RfLCB0aGUgY29tcGls
ZXIgY2hlY2tzIHRoYXQKLS8vIHRoZSBjYXN0IGlzIHNhZmUuICBTdWNoIGV4cGxpY2l0IEltcGxp
Y2l0Q2FzdF9zIGFyZSBuZWNlc3NhcnkgaW4KLS8vIHN1cnByaXNpbmdseSBtYW55IHNpdHVhdGlv
bnMgd2hlcmUgQysrIGRlbWFuZHMgYW4gZXhhY3QgdHlwZSBtYXRjaAotLy8gaW5zdGVhZCBvZiBh
biBhcmd1bWVudCB0eXBlIGNvbnZlcnRhYmxlIHRvIGEgdGFyZ2V0IHR5cGUuCi0vLwotLy8gVGhl
IHN5bnRheCBmb3IgdXNpbmcgSW1wbGljaXRDYXN0XyBpcyB0aGUgc2FtZSBhcyBmb3Igc3RhdGlj
X2Nhc3Q6Ci0vLwotLy8gICBJbXBsaWNpdENhc3RfPFRvVHlwZT4oZXhwcikKLS8vCi0vLyBJbXBs
aWNpdENhc3RfIHdvdWxkIGhhdmUgYmVlbiBwYXJ0IG9mIHRoZSBDKysgc3RhbmRhcmQgbGlicmFy
eSwKLS8vIGJ1dCB0aGUgcHJvcG9zYWwgd2FzIHN1Ym1pdHRlZCB0b28gbGF0ZS4gIEl0IHdpbGwg
cHJvYmFibHkgbWFrZQotLy8gaXRzIHdheSBpbnRvIHRoZSBsYW5ndWFnZSBpbiB0aGUgZnV0dXJl
LgotLy8KLS8vIFRoaXMgcmVsYXRpdmVseSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHBy
ZXZlbnRzIGNsYXNoZXMgd2l0aAotLy8gc2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUg
KGUuZy4sIGltcGxpY2l0X2Nhc3QpLiBUaGUgaW50ZXJuYWwKLS8vIG5hbWVzcGFjZSBhbG9uZSBp
cyBub3QgZW5vdWdoIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KLWlubGluZSBUbyBJbXBsaWNpdENhc3RfKFRvIHgpIHsgcmV0
dXJuIHg7IH0KLQotLy8gV2hlbiB5b3UgdXBjYXN0ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBm
cm9tIHR5cGUgRm9vIHRvIHR5cGUKLS8vIFN1cGVyY2xhc3NPZkZvbyksIGl0J3MgZmluZSB0byB1
c2UgSW1wbGljaXRDYXN0Xzw+LCBzaW5jZSB1cGNhc3RzCi0vLyBhbHdheXMgc3VjY2VlZC4gIFdo
ZW4geW91IGRvd25jYXN0ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBmcm9tCi0vLyB0eXBlIEZv
byB0byB0eXBlIFN1YmNsYXNzT2ZGb28pLCBzdGF0aWNfY2FzdDw+IGlzbid0IHNhZmUsIGJlY2F1
c2UKLS8vIGhvdyBkbyB5b3Uga25vdyB0aGUgcG9pbnRlciBpcyByZWFsbHkgb2YgdHlwZSBTdWJj
bGFzc09mRm9vPyAgSXQKLS8vIGNvdWxkIGJlIGEgYmFyZSBGb28sIG9yIG9mIHR5cGUgRGlmZmVy
ZW50U3ViY2xhc3NPZkZvby4gIFRodXMsCi0vLyB3aGVuIHlvdSBkb3duY2FzdCwgeW91IHNob3Vs
ZCB1c2UgdGhpcyBtYWNyby4gIEluIGRlYnVnIG1vZGUsIHdlCi0vLyB1c2UgZHluYW1pY19jYXN0
PD4gdG8gZG91YmxlLWNoZWNrIHRoZSBkb3duY2FzdCBpcyBsZWdhbCAod2UgZGllCi0vLyBpZiBp
dCdzIG5vdCkuICBJbiBub3JtYWwgbW9kZSwgd2UgZG8gdGhlIGVmZmljaWVudCBzdGF0aWNfY2Fz
dDw+Ci0vLyBpbnN0ZWFkLiAgVGh1cywgaXQncyBpbXBvcnRhbnQgdG8gdGVzdCBpbiBkZWJ1ZyBt
b2RlIHRvIG1ha2Ugc3VyZQotLy8gdGhlIGNhc3QgaXMgbGVnYWwhCi0vLyAgICBUaGlzIGlzIHRo
ZSBvbmx5IHBsYWNlIGluIHRoZSBjb2RlIHdlIHNob3VsZCB1c2UgZHluYW1pY19jYXN0PD4uCi0v
LyBJbiBwYXJ0aWN1bGFyLCB5b3UgU0hPVUxETidUIGJlIHVzaW5nIGR5bmFtaWNfY2FzdDw+IGlu
IG9yZGVyIHRvCi0vLyBkbyBSVFRJIChlZyBjb2RlIGxpa2UgdGhpczoKLS8vICAgIGlmIChkeW5h
bWljX2Nhc3Q8U3ViY2xhc3MxPihmb28pKSBIYW5kbGVBU3ViY2xhc3MxT2JqZWN0KGZvbyk7Ci0v
LyAgICBpZiAoZHluYW1pY19jYXN0PFN1YmNsYXNzMj4oZm9vKSkgSGFuZGxlQVN1YmNsYXNzMk9i
amVjdChmb28pOwotLy8gWW91IHNob3VsZCBkZXNpZ24gdGhlIGNvZGUgc29tZSBvdGhlciB3YXkg
bm90IHRvIG5lZWQgdGhpcy4KLS8vCi0vLyBUaGlzIHJlbGF0aXZlbHkgdWdseSBuYW1lIGlzIGlu
dGVudGlvbmFsLiBJdCBwcmV2ZW50cyBjbGFzaGVzIHdpdGgKLS8vIHNpbWlsYXIgZnVuY3Rpb25z
IHVzZXJzIG1heSBoYXZlIChlLmcuLCBkb3duX2Nhc3QpLiBUaGUgaW50ZXJuYWwKLS8vIG5hbWVz
cGFjZSBhbG9uZSBpcyBub3QgZW5vdWdoIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3Vu
ZCBieSBBREwuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4gIC8vIHVzZSBs
aWtlIHRoaXM6IERvd25DYXN0XzxUKj4oZm9vKTsKLWlubGluZSBUbyBEb3duQ2FzdF8oRnJvbSog
ZikgeyAgLy8gc28gd2Ugb25seSBhY2NlcHQgcG9pbnRlcnMKLSAgLy8gRW5zdXJlcyB0aGF0IFRv
IGlzIGEgc3ViLXR5cGUgb2YgRnJvbSAqLiAgVGhpcyB0ZXN0IGlzIGhlcmUgb25seQotICAvLyBm
b3IgY29tcGlsZS10aW1lIHR5cGUgY2hlY2tpbmcsIGFuZCBoYXMgbm8gb3ZlcmhlYWQgaW4gYW4K
LSAgLy8gb3B0aW1pemVkIGJ1aWxkIGF0IHJ1bi10aW1lLCBhcyBpdCB3aWxsIGJlIG9wdGltaXpl
ZCBhd2F5Ci0gIC8vIGNvbXBsZXRlbHkuCi0gIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRf
UFVTSF8oKQotICBpZiAoZmFsc2UpIHsKLSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9Q
T1BfKCkKLSAgICBjb25zdCBUbyB0byA9IE5VTEw7Ci0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxGcm9tKj4odG8pOwotICB9Ci0KLSNpZiBHVEVTVF9IQVNfUlRUSQotICAv
LyBSVFRJOiBkZWJ1ZyBtb2RlIG9ubHkhCi0gIEdURVNUX0NIRUNLXyhmID09IE5VTEwgfHwgZHlu
YW1pY19jYXN0PFRvPihmKSAhPSBOVUxMKTsKLSNlbmRpZgotICByZXR1cm4gc3RhdGljX2Nhc3Q8
VG8+KGYpOwotfQotCi0vLyBEb3duY2FzdHMgdGhlIHBvaW50ZXIgb2YgdHlwZSBCYXNlIHRvIERl
cml2ZWQuCi0vLyBEZXJpdmVkIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBCYXNlLiBUaGUgcGFyYW1l
dGVyIE1VU1QKLS8vIHBvaW50IHRvIGEgY2xhc3Mgb2YgdHlwZSBEZXJpdmVkLCBub3QgYW55IHN1
YmNsYXNzIG9mIGl0LgotLy8gV2hlbiBSVFRJIGlzIGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHBl
cmZvcm1zIGEgcnVudGltZQotLy8gY2hlY2sgdG8gZW5mb3JjZSB0aGlzLgotdGVtcGxhdGUgPGNs
YXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+Ci1EZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVh
bFR5cGUoQmFzZSogYmFzZSkgewotI2lmIEdURVNUX0hBU19SVFRJCi0gIEdURVNUX0NIRUNLXyh0
eXBlaWQoKmJhc2UpID09IHR5cGVpZChEZXJpdmVkKSk7Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hB
U19ET1dOQ0FTVF8KLSAgcmV0dXJuIDo6ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKLSNlbGlm
IEdURVNUX0hBU19SVFRJCi0gIHJldHVybiBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAg
Ly8gTk9MSU5UCi0jZWxzZQotICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAg
Ly8gUG9vciBtYW4ncyBkb3duY2FzdC4KLSNlbmRpZgotfQotCi0jaWYgR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgotCi0vLyBEZWZpbmVzIHRoZSBzdGRlcnIgY2FwdHVyZXI6Ci0vLyAgIENh
cHR1cmVTdGRvdXQgICAgIC0gc3RhcnRzIGNhcHR1cmluZyBzdGRvdXQuCi0vLyAgIEdldENhcHR1
cmVkU3Rkb3V0IC0gc3RvcHMgY2FwdHVyaW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVy
ZWQgc3RyaW5nLgotLy8gICBDYXB0dXJlU3RkZXJyICAgICAtIHN0YXJ0cyBjYXB0dXJpbmcgc3Rk
ZXJyLgotLy8gICBHZXRDYXB0dXJlZFN0ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5k
IHJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZy4KLS8vCi1HVEVTVF9BUElfIHZvaWQgQ2FwdHVy
ZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpOwot
R1RFU1RfQVBJXyB2b2lkIENhcHR1cmVTdGRlcnIoKTsKLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcg
R2V0Q2FwdHVyZWRTdGRlcnIoKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElS
RUNUSU9OCi0KLS8vIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCi1HVEVT
VF9BUElfIHNpemVfdCBHZXRGaWxlU2l6ZShGSUxFKiBmaWxlKTsKLQotLy8gUmVhZHMgdGhlIGVu
dGlyZSBjb250ZW50IG9mIGEgZmlsZSBhcyBhIHN0cmluZy4KLUdURVNUX0FQSV8gc3RkOjpzdHJp
bmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSk7Ci0KLS8vIEFsbCBjb21tYW5kIGxpbmUgYXJn
dW1lbnRzLgotR1RFU1RfQVBJXyBjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFs
OjpzdHJpbmc+JiBHZXRBcmd2cygpOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotY29u
c3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0YWJs
ZUFyZ3ZzKCk7Ci12b2lkIFNldEluamVjdGFibGVBcmd2cyhjb25zdCA6OnN0ZDo6dmVjdG9yPHRl
c3Rpbmc6OmludGVybmFsOjpzdHJpbmc+KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdfYXJndnMpOwotCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gRGVm
aW5lcyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KLSNpZiBHVEVTVF9JU19USFJFQURTQUZF
Ci0jIGlmIEdURVNUX0hBU19QVEhSRUFECi0vLyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1pbGxp
c2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSBmb3IgdGVzdGluZwotLy8gR29vZ2xlIFRl
c3QncyBvd24gY29uc3RydWN0cy4gIERvbid0IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIK
LS8vIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCi1pbmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25k
cyhpbnQgbikgewotICBjb25zdCB0aW1lc3BlYyB0aW1lID0gewotICAgIDAsICAgICAgICAgICAg
ICAgICAgLy8gMCBzZWNvbmRzLgotICAgIG4gKiAxMDAwTCAqIDEwMDBMLCAgLy8gQW5kIG4gbXMu
Ci0gIH07Ci0gIG5hbm9zbGVlcCgmdGltZSwgTlVMTCk7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9I
QVNfUFRIUkVBRAotCi0jIGlmIEdURVNUX0hBU19OT1RJRklDQVRJT05fCi0vLyBOb3RpZmljYXRp
b24gaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCi0vLyBOb3Ro
aW5nIHRvIGRvIGhlcmUuCi0KLSMgZWxpZiBHVEVTVF9IQVNfUFRIUkVBRAotLy8gQWxsb3dzIGEg
Y29udHJvbGxlciB0aHJlYWQgdG8gcGF1c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKLS8v
IHRocmVhZHMgdW50aWwgbm90aWZpZWQuICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJl
IGNyZWF0ZWQKLS8vIGFuZCBkZXN0cm95ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgotLy8K
LS8vIFRoaXMgY2xhc3MgaXMgb25seSBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCdzIG93biBjb25z
dHJ1Y3RzLiBEbyBub3QKLS8vIHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkg
b3IgaW5kaXJlY3RseS4KLWNsYXNzIE5vdGlmaWNhdGlvbiB7Ci0gcHVibGljOgotICBOb3RpZmlj
YXRpb24oKSA6IG5vdGlmaWVkXyhmYWxzZSkgewotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7Ci0gIH0KLSAgfk5vdGlmaWNh
dGlvbigpIHsKLSAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4Xyk7Ci0gIH0KLQotICAv
LyBOb3RpZmllcyBhbGwgdGhyZWFkcyBjcmVhdGVkIHdpdGggdGhpcyBub3RpZmljYXRpb24gdG8g
c3RhcnQuIE11c3QKLSAgLy8gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgot
ICB2b2lkIE5vdGlmeSgpIHsKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Xyk7Ci0gICAg
bm90aWZpZWRfID0gdHJ1ZTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKLSAg
fQotCi0gIC8vIEJsb2NrcyB1bnRpbCB0aGUgY29udHJvbGxlciB0aHJlYWQgbm90aWZpZXMuIE11
c3QgYmUgY2FsbGVkIGZyb20gYSB0ZXN0Ci0gIC8vIHRocmVhZC4KLSAgdm9pZCBXYWl0Rm9yTm90
aWZpY2F0aW9uKCkgewotICAgIGZvciAoOzspIHsKLSAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm
bXV0ZXhfKTsKLSAgICAgIGNvbnN0IGJvb2wgbm90aWZpZWQgPSBub3RpZmllZF87Ci0gICAgICBw
dGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKLSAgICAgIGlmIChub3RpZmllZCkKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBTbGVlcE1pbGxpc2Vjb25kcygxMCk7Ci0gICAgfQotICB9Ci0KLSBw
cml2YXRlOgotICBwdGhyZWFkX211dGV4X3QgbXV0ZXhfOwotICBib29sIG5vdGlmaWVkXzsKLQot
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdGlmaWNhdGlvbik7Ci19OwotCi0j
IGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVAotCi1HVEVTVF9BUElfIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50
IG4pOwotCi0vLyBQcm92aWRlcyBsZWFrLXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVy
c2hpcC4KLS8vIFVzZWQgaW4gZGVhdGggdGVzdHMgYW5kIGluIHRocmVhZGluZyBzdXBwb3J0Lgot
Y2xhc3MgR1RFU1RfQVBJXyBBdXRvSGFuZGxlIHsKLSBwdWJsaWM6Ci0gIC8vIEFzc3VtZSB0aGF0
IFdpbjMyIEhBTkRMRSB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gdm9pZCouIERvaW5nIHNvIGFsbG93
cyB1cyB0bwotICAvLyBhdm9pZCBpbmNsdWRpbmcgPHdpbmRvd3MuaD4gaW4gdGhpcyBoZWFkZXIg
ZmlsZS4gSW5jbHVkaW5nIDx3aW5kb3dzLmg+IGlzCi0gIC8vIHVuZGVzaXJhYmxlIGJlY2F1c2Ug
aXQgZGVmaW5lcyBhIGxvdCBvZiBzeW1ib2xzIGFuZCBtYWNyb3MgdGhhdCB0ZW5kIHRvCi0gIC8v
IGNvbmZsaWN0IHdpdGggY2xpZW50IGNvZGUuIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBi
eQotICAvLyBXaW5kb3dzVHlwZXNUZXN0LkhBTkRMRUlzVm9pZFN0YXIuCi0gIHR5cGVkZWYgdm9p
ZCogSGFuZGxlOwotICBBdXRvSGFuZGxlKCk7Ci0gIGV4cGxpY2l0IEF1dG9IYW5kbGUoSGFuZGxl
IGhhbmRsZSk7Ci0KLSAgfkF1dG9IYW5kbGUoKTsKLQotICBIYW5kbGUgR2V0KCkgY29uc3Q7Ci0g
IHZvaWQgUmVzZXQoKTsKLSAgdm9pZCBSZXNldChIYW5kbGUgaGFuZGxlKTsKLQotIHByaXZhdGU6
Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGhhbmRsZSBpcyBhIHZhbGlkIGhhbmRsZSBvYmpl
Y3QgdGhhdCBjYW4gYmUgY2xvc2VkLgotICBib29sIElzQ2xvc2VhYmxlKCkgY29uc3Q7Ci0KLSAg
SGFuZGxlIGhhbmRsZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRv
SGFuZGxlKTsKLX07Ci0KLS8vIEFsbG93cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4
ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVkCi0vLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVzdCBiZSBjcmVhdGVkCi0vLyBhbmQgZGVzdHJveWVkIGlu
IHRoZSBjb250cm9sbGVyIHRocmVhZC4KLS8vCi0vLyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRl
c3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gRG8gbm90Ci0vLyB1c2UgaXQgaW4g
dXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCi1jbGFzcyBHVEVTVF9B
UElfIE5vdGlmaWNhdGlvbiB7Ci0gcHVibGljOgotICBOb3RpZmljYXRpb24oKTsKLSAgdm9pZCBO
b3RpZnkoKTsKLSAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSBwcml2YXRlOgotICBB
dXRvSGFuZGxlIGV2ZW50XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5v
dGlmaWNhdGlvbik7Ci19OwotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX05PVElGSUNBVElPTl8KLQot
Ly8gT24gTWluR1csIHdlIGNhbiBoYXZlIGJvdGggR1RFU1RfT1NfV0lORE9XUyBhbmQgR1RFU1Rf
SEFTX1BUSFJFQUQKLS8vIGRlZmluZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHVzZSBNaW5HVydz
IHB0aHJlYWRzIGltcGxlbWVudGF0aW9uLCB3aGljaAotLy8gaGFzIGNvbmZvcm1hbmNlIHByb2Js
ZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBvZiB0aGUgUE9TSVggc3RhbmRhcmQuCi0jIGlmIEdURVNU
X0hBU19QVEhSRUFEICYmICFHVEVTVF9PU19XSU5ET1dTX01JTkdXCi0KLS8vIEFzIGEgQy1mdW5j
dGlvbiwgVGhyZWFkRnVuY1dpdGhDTGlua2FnZSBjYW5ub3QgYmUgdGVtcGxhdGVkIGl0c2VsZi4K
LS8vIENvbnNlcXVlbnRseSwgaXQgY2Fubm90IHNlbGVjdCBhIGNvcnJlY3QgaW5zdGFudGlhdGlv
biBvZiBUaHJlYWRXaXRoUGFyYW0KLS8vIGluIG9yZGVyIHRvIGNhbGwgaXRzIFJ1bigpLiBJbnRy
b2R1Y2luZyBUaHJlYWRXaXRoUGFyYW1CYXNlIGFzIGEKLS8vIG5vbi10ZW1wbGF0ZWQgYmFzZSBj
bGFzcyBmb3IgVGhyZWFkV2l0aFBhcmFtIGFsbG93cyB1cyB0byBieXBhc3MgdGhpcwotLy8gcHJv
YmxlbS4KLWNsYXNzIFRocmVhZFdpdGhQYXJhbUJhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+
VGhyZWFkV2l0aFBhcmFtQmFzZSgpIHt9Ci0gIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7Ci19Owot
Ci0vLyBwdGhyZWFkX2NyZWF0ZSgpIGFjY2VwdHMgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdHlw
ZSB3aXRoIHRoZSBDIGxpbmthZ2UuCi0vLyBBY2NvcmRpbmcgdG8gdGhlIFN0YW5kYXJkICg3LjUv
MSksIGZ1bmN0aW9uIHR5cGVzIHdpdGggZGlmZmVyZW50IGxpbmthZ2VzCi0vLyBhcmUgZGlmZmVy
ZW50IGV2ZW4gaWYgdGhleSBhcmUgb3RoZXJ3aXNlIGlkZW50aWNhbC4gIFNvbWUgY29tcGlsZXJz
IChmb3IKLS8vIGV4YW1wbGUsIFN1blN0dWRpbykgdHJlYXQgdGhlbSBhcyBkaWZmZXJlbnQgdHlw
ZXMuICBTaW5jZSBjbGFzcyBtZXRob2RzCi0vLyBjYW5ub3QgYmUgZGVmaW5lZCB3aXRoIEMtbGlu
a2FnZSB3ZSBuZWVkIHRvIGRlZmluZSBhIGZyZWUgQy1mdW5jdGlvbiB0bwotLy8gcGFzcyBpbnRv
IHB0aHJlYWRfY3JlYXRlKCkuCi1leHRlcm4gIkMiIGlubGluZSB2b2lkKiBUaHJlYWRGdW5jV2l0
aENMaW5rYWdlKHZvaWQqIHRocmVhZCkgewotICBzdGF0aWNfY2FzdDxUaHJlYWRXaXRoUGFyYW1C
YXNlKj4odGhyZWFkKS0+UnVuKCk7Ci0gIHJldHVybiBOVUxMOwotfQotCi0vLyBIZWxwZXIgY2xh
c3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBtdWx0aS10aHJlYWRpbmcgY29uc3RydWN0cy4K
LS8vIFRvIHVzZSBpdCwgd3JpdGU6Ci0vLwotLy8gICB2b2lkIFRocmVhZEZ1bmMoaW50IHBhcmFt
KSB7IC8qIERvIHRoaW5ncyB3aXRoIHBhcmFtICovIH0KLS8vICAgTm90aWZpY2F0aW9uIHRocmVh
ZF9jYW5fc3RhcnQ7Ci0vLyAgIC4uLgotLy8gICAvLyBUaGUgdGhyZWFkX2Nhbl9zdGFydCBwYXJh
bWV0ZXIgaXMgb3B0aW9uYWw7IHlvdSBjYW4gc3VwcGx5IE5VTEwuCi0vLyAgIFRocmVhZFdpdGhQ
YXJhbTxpbnQ+IHRocmVhZCgmVGhyZWFkRnVuYywgNSwgJnRocmVhZF9jYW5fc3RhcnQpOwotLy8g
ICB0aHJlYWRfY2FuX3N0YXJ0Lk5vdGlmeSgpOwotLy8KLS8vIFRoZXNlIGNsYXNzZXMgYXJlIG9u
bHkgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gRG8KLS8vIG5vdCB1
c2UgdGhlbSBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVh
ZFdpdGhQYXJhbUJhc2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiB2b2lkIFVzZXJUaHJlYWRGdW5j
KFQpOwotCi0gIFRocmVhZFdpdGhQYXJhbShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwg
Tm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQotICAgICAgOiBmdW5jXyhmdW5jKSwKLSAg
ICAgICAgcGFyYW1fKHBhcmFtKSwKLSAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nh
bl9zdGFydCksCi0gICAgICAgIGZpbmlzaGVkXyhmYWxzZSkgewotICAgIFRocmVhZFdpdGhQYXJh
bUJhc2UqIGNvbnN0IGJhc2UgPSB0aGlzOwotICAgIC8vIFRoZSB0aHJlYWQgY2FuIGJlIGNyZWF0
ZWQgb25seSBhZnRlciBhbGwgZmllbGRzIGV4Y2VwdCB0aHJlYWRfCi0gICAgLy8gaGF2ZSBiZWVu
IGluaXRpYWxpemVkLgotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKAotICAgICAgICBw
dGhyZWFkX2NyZWF0ZSgmdGhyZWFkXywgMCwgJlRocmVhZEZ1bmNXaXRoQ0xpbmthZ2UsIGJhc2Up
KTsKLSAgfQotICB+VGhyZWFkV2l0aFBhcmFtKCkgeyBKb2luKCk7IH0KLQotICB2b2lkIEpvaW4o
KSB7Ci0gICAgaWYgKCFmaW5pc2hlZF8pIHsKLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKHB0aHJlYWRfam9pbih0aHJlYWRfLCAwKSk7Ci0gICAgICBmaW5pc2hlZF8gPSB0cnVlOwot
ICAgIH0KLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBSdW4oKSB7Ci0gICAgaWYgKHRocmVhZF9jYW5f
c3RhcnRfICE9IE5VTEwpCi0gICAgICB0aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlmaWNh
dGlvbigpOwotICAgIGZ1bmNfKHBhcmFtXyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFVzZXJUaHJl
YWRGdW5jKiBjb25zdCBmdW5jXzsgIC8vIFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgot
ICBjb25zdCBUIHBhcmFtXzsgIC8vIFVzZXItc3VwcGxpZWQgcGFyYW1ldGVyIHRvIHRoZSB0aHJl
YWQgZnVuY3Rpb24uCi0gIC8vIFdoZW4gbm9uLU5VTEwsIHVzZWQgdG8gYmxvY2sgZXhlY3V0aW9u
IHVudGlsIHRoZSBjb250cm9sbGVyIHRocmVhZAotICAvLyBub3RpZmllcy4KLSAgTm90aWZpY2F0
aW9uKiBjb25zdCB0aHJlYWRfY2FuX3N0YXJ0XzsKLSAgYm9vbCBmaW5pc2hlZF87ICAvLyB0cnVl
IGlmZiB3ZSBrbm93IHRoYXQgdGhlIHRocmVhZCBmdW5jdGlvbiBoYXMgZmluaXNoZWQuCi0gIHB0
aHJlYWRfdCB0aHJlYWRfOyAgLy8gVGhlIG5hdGl2ZSB0aHJlYWQgb2JqZWN0LgotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKLX07Ci0jIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUyAmJiBHVEVTVF9IQVNfUFRIUkVBRCB8fAotICAgICAgICAg
Ly8gR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCi0KLSMgaWYgR1RFU1RfSEFTX01V
VEVYX0FORF9USFJFQURfTE9DQUxfCi0vLyBNdXRleCBhbmQgVGhyZWFkTG9jYWwgaGF2ZSBhbHJl
YWR5IGJlZW4gaW1wb3J0ZWQgaW50byB0aGUgbmFtZXNwYWNlLgotLy8gTm90aGluZyB0byBkbyBo
ZXJlLgotCi0jIGVsaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9O
RSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAotCi0vLyBNdXRleCBpbXBsZW1lbnRzIG11dGV4IG9u
IFdpbmRvd3MgcGxhdGZvcm1zLiAgSXQgaXMgdXNlZCBpbiBjb25qdW5jdGlvbgotLy8gd2l0aCBj
bGFzcyBNdXRleExvY2s6Ci0vLwotLy8gICBNdXRleCBtdXRleDsKLS8vICAgLi4uCi0vLyAgIE11
dGV4TG9jayBsb2NrKCZtdXRleCk7ICAvLyBBY3F1aXJlcyB0aGUgbXV0ZXggYW5kIHJlbGVhc2Vz
IGl0IGF0IHRoZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBj
dXJyZW50IHNjb3BlLgotLy8KLS8vIEEgc3RhdGljIE11dGV4ICptdXN0KiBiZSBkZWZpbmVkIG9y
IGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCi0vLyBtYWNyb3M6Ci0vLyAgIEdU
RVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfc29tZV9tdXRleCk7Ci0vLyAgIEdURVNUX0RFQ0xB
UkVfU1RBVElDX01VVEVYXyhnX3NvbWVfbXV0ZXgpOwotLy8KLS8vIChBIG5vbi1zdGF0aWMgTXV0
ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBpbiB0aGUgdXN1YWwgd2F5KS4KLWNsYXNzIEdURVNUX0FQ
SV8gTXV0ZXggewotIHB1YmxpYzoKLSAgZW51bSBNdXRleFR5cGUgeyBrU3RhdGljID0gMCwga0R5
bmFtaWMgPSAxIH07Ci0gIC8vIFdlIHJlbHkgb24ga1N0YXRpY011dGV4IGJlaW5nIDAgYXMgaXQg
aXMgdG8gd2hhdCB0aGUgbGlua2VyIGluaXRpYWxpemVzCi0gIC8vIHR5cGVfIGluIHN0YXRpYyBt
dXRleGVzLiAgY3JpdGljYWxfc2VjdGlvbl8gd2lsbCBiZSBpbml0aWFsaXplZCBsYXppbHkKLSAg
Ly8gaW4gVGhyZWFkU2FmZUxhenlJbml0KCkuCi0gIGVudW0gU3RhdGljQ29uc3RydWN0b3JTZWxl
Y3RvciB7IGtTdGF0aWNNdXRleCA9IDAgfTsKLQotICAvLyBUaGlzIGNvbnN0cnVjdG9yIGludGVu
dGlvbmFsbHkgZG9lcyBub3RoaW5nLiAgSXQgcmVsaWVzIG9uIHR5cGVfIGJlaW5nCi0gIC8vIHN0
YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8gMCAoZWZmZWN0aXZlbHkgc2V0dGluZyBpdCB0byBrU3Rh
dGljKSBhbmQgb24KLSAgLy8gVGhyZWFkU2FmZUxhenlJbml0KCkgdG8gbGF6aWx5IGluaXRpYWxp
emUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJlcnMuCi0gIGV4cGxpY2l0IE11dGV4KFN0YXRpY0NvbnN0
cnVjdG9yU2VsZWN0b3IgLypkdW1teSovKSB7fQotCi0gIE11dGV4KCk7Ci0gIH5NdXRleCgpOwot
Ci0gIHZvaWQgTG9jaygpOwotCi0gIHZvaWQgVW5sb2NrKCk7Ci0KLSAgLy8gRG9lcyBub3RoaW5n
IGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hl
cwotICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCi0gIHZvaWQgQXNzZXJ0SGVsZCgpOwotCi0g
cHJpdmF0ZToKLSAgLy8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxf
c2VjdGlvbl8gaW4gc3RhdGljIG11dGV4ZXMuCi0gIHZvaWQgVGhyZWFkU2FmZUxhenlJbml0KCk7
Ci0KLSAgLy8gUGVyIGh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9iL29sZG5ld3RoaW5nL2FyY2hpdmUv
MjAwNC8wMi8yMy83ODM5NS5hc3B4LAotICAvLyB3ZSBhc3N1bWUgdGhhdCAwIGlzIGFuIGludmFs
aWQgdmFsdWUgZm9yIHRocmVhZCBJRHMuCi0gIHVuc2lnbmVkIGludCBvd25lcl90aHJlYWRfaWRf
OwotCi0gIC8vIEZvciBzdGF0aWMgbXV0ZXhlcywgd2UgcmVseSBvbiB0aGVzZSBtZW1iZXJzIGJl
aW5nIGluaXRpYWxpemVkIHRvIHplcm9zCi0gIC8vIGJ5IHRoZSBsaW5rZXIuCi0gIE11dGV4VHlw
ZSB0eXBlXzsKLSAgbG9uZyBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfOyAgLy8gTk9MSU5U
Ci0gIEdURVNUX0NSSVRJQ0FMX1NFQ1RJT04qIGNyaXRpY2FsX3NlY3Rpb25fOwotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTXV0ZXgpOwotfTsKLQotIyBkZWZpbmUgR1RFU1Rf
REVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50
ZXJuYWw6Ok11dGV4IG11dGV4Ci0KLSMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhf
KG11dGV4KSBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgoOjp0ZXN0aW5n
OjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0aWNNdXRleCkKLQotLy8gV2UgY2Fubm90IG5hbWUgdGhp
cyBjbGFzcyBNdXRleExvY2sgYmVjYXVzZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAotLy8g
Y29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5hbWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBv
biBzb21lCi0vLyBwbGF0Zm9ybXMuIFRoYXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBt
ZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5zdAotLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRl
eExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZtdSkiIHJhdGhlciB0aGFuCi0vLyAiTXV0ZXhMb2NrIGwo
Jm11KSIuICBIZW5jZSB0aGUgdHlwZWRlZiB0cmljayBiZWxvdy4KLWNsYXNzIEdUZXN0TXV0ZXhM
b2NrIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4KiBtdXRleCkK
LSAgICAgIDogbXV0ZXhfKG11dGV4KSB7IG11dGV4Xy0+TG9jaygpOyB9Ci0KLSAgfkdUZXN0TXV0
ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9jaygpOyB9Ci0KLSBwcml2YXRlOgotICBNdXRleCogY29u
c3QgbXV0ZXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RNdXRl
eExvY2spOwotfTsKLQotdHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7Ci0KLS8vIEJh
c2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVyPFQ+LiAgQWxsb3dzIGEgY2FsbGVyIHRvIGhvbGQgYW5k
IGRlbGV0ZSBhIHZhbHVlCi0vLyB3aXRob3V0IGtub3dpbmcgaXRzIHR5cGUuCi1jbGFzcyBUaHJl
YWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5UaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZSgpIHt9Ci19OwotCi0vLyBQcm92aWRlcyBhIHdheSBmb3IgYSB0aHJl
YWQgdG8gc2VuZCBub3RpZmljYXRpb25zIHRvIGEgVGhyZWFkTG9jYWwKLS8vIHJlZ2FyZGxlc3Mg
b2YgaXRzIHBhcmFtZXRlciB0eXBlLgotY2xhc3MgVGhyZWFkTG9jYWxCYXNlIHsKLSBwdWJsaWM6
Ci0gIC8vIENyZWF0ZXMgYSBuZXcgVmFsdWVIb2xkZXI8VD4gb2JqZWN0IGhvbGRpbmcgYSBkZWZh
dWx0IHZhbHVlIHBhc3NlZCB0bwotICAvLyB0aGlzIFRocmVhZExvY2FsPFQ+J3MgY29uc3RydWN0
b3IgYW5kIHJldHVybnMgaXQuICBJdCBpcyB0aGUgY2FsbGVyJ3MKLSAgLy8gcmVzcG9uc2liaWxp
dHkgbm90IHRvIGNhbGwgdGhpcyB3aGVuIHRoZSBUaHJlYWRMb2NhbDxUPiBpbnN0YW5jZSBhbHJl
YWR5Ci0gIC8vIGhhcyBhIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KLSAgdmlydHVhbCBU
aHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogTmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkgY29u
c3QgPSAwOwotCi0gcHJvdGVjdGVkOgotICBUaHJlYWRMb2NhbEJhc2UoKSB7fQotICB2aXJ0dWFs
IH5UaHJlYWRMb2NhbEJhc2UoKSB7fQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09Q
WV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbEJhc2UpOwotfTsKLQotLy8gTWFwcyBhIHRocmVhZCB0
byBhIHNldCBvZiBUaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcyBpbnN0YW50aWF0ZWQgb24g
dGhhdAotLy8gdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4g
IEEgVGhyZWFkTG9jYWwgaW5zdGFuY2UgaXMKLS8vIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwg
YWxsIHRocmVhZHMgaXQgaGFzIHZhbHVlcyBvbiBoYXZlIHRlcm1pbmF0ZWQuCi1jbGFzcyBHVEVT
VF9BUElfIFRocmVhZExvY2FsUmVnaXN0cnkgewotIHB1YmxpYzoKLSAgLy8gUmVnaXN0ZXJzIHRo
cmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFk
LgotICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUg
dGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KLSAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xk
ZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKLSAgICAgIGNvbnN0IFRocmVhZExvY2Fs
QmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKLQotICAvLyBJbnZva2VkIHdoZW4gYSBUaHJl
YWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuCi0gIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9j
YWxEZXN0cm95ZWQoCi0gICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9p
bnN0YW5jZSk7Ci19OwotCi1jbGFzcyBHVEVTVF9BUElfIFRocmVhZFdpdGhQYXJhbUJhc2Ugewot
IHB1YmxpYzoKLSAgdm9pZCBKb2luKCk7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIGNsYXNzIFJ1bm5hYmxl
IHsKLSAgIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SdW5uYWJsZSgpIHt9Ci0gICAgdmlydHVhbCB2
b2lkIFJ1bigpID0gMDsKLSAgfTsKLQotICBUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpy
dW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KTsKLSAgdmlydHVhbCB+VGhy
ZWFkV2l0aFBhcmFtQmFzZSgpOwotCi0gcHJpdmF0ZToKLSAgQXV0b0hhbmRsZSB0aHJlYWRfOwot
fTsKLQotLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3MgbXVsdGktdGhy
ZWFkaW5nIGNvbnN0cnVjdHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRocmVhZFdp
dGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1CYXNlIHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhUKTsKLQotICBUaHJlYWRXaXRoUGFyYW0oVXNlclRocmVh
ZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKLSAg
ICAgIDogVGhyZWFkV2l0aFBhcmFtQmFzZShuZXcgUnVubmFibGVJbXBsKGZ1bmMsIHBhcmFtKSwg
dGhyZWFkX2Nhbl9zdGFydCkgewotICB9Ci0gIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbSgpIHt9
Ci0KLSBwcml2YXRlOgotICBjbGFzcyBSdW5uYWJsZUltcGwgOiBwdWJsaWMgUnVubmFibGUgewot
ICAgcHVibGljOgotICAgIFJ1bm5hYmxlSW1wbChVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJh
bSkKLSAgICAgICAgOiBmdW5jXyhmdW5jKSwKLSAgICAgICAgICBwYXJhbV8ocGFyYW0pIHsKLSAg
ICB9Ci0gICAgdmlydHVhbCB+UnVubmFibGVJbXBsKCkge30KLSAgICB2aXJ0dWFsIHZvaWQgUnVu
KCkgewotICAgICAgZnVuY18ocGFyYW1fKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgVXNl
clRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNfOwotICAgIGNvbnN0IFQgcGFyYW1fOwotCi0gICAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSdW5uYWJsZUltcGwpOwotICB9OwotCi0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKLX07Ci0KLS8v
IEltcGxlbWVudHMgdGhyZWFkLWxvY2FsIHN0b3JhZ2Ugb24gV2luZG93cyBzeXN0ZW1zLgotLy8K
LS8vICAgLy8gVGhyZWFkIDEKLS8vICAgVGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAw
IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHRocmVhZC4KLS8vCi0vLyAgIC8vIFRocmVh
ZCAyCi0vLyAgIHRsLnNldCgxNTApOyAgLy8gQ2hhbmdlcyB0aGUgdmFsdWUgZm9yIHRocmVhZCAy
IG9ubHkuCi0vLyAgIEVYUEVDVF9FUSgxNTAsIHRsLmdldCgpKTsKLS8vCi0vLyAgIC8vIFRocmVh
ZCAxCi0vLyAgIEVYUEVDVF9FUSgxMDAsIHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0bCBo
YXMgdGhlIG9yaWdpbmFsIHZhbHVlLgotLy8gICB0bC5zZXQoMjAwKTsKLS8vICAgRVhQRUNUX0VR
KDIwMCwgdGwuZ2V0KCkpOwotLy8KLS8vIFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQgbXVz
dCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IuCi0vLyBJbiBhZGRpdGlvbiwgdGhlIGRl
ZmF1bHQgVGhyZWFkTG9jYWwgY29uc3RydWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCi0vLyBhIHB1
YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotLy8KLS8vIFRoZSB1c2VycyBvZiBhIFRoZWFkTG9j
YWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgYnV0IG9uZQotLy8gdGhyZWFk
cyAoaW5jbHVkaW5nIHRoZSBtYWluIG9uZSkgdXNpbmcgdGhhdCBpbnN0YW5jZSBoYXZlIGV4aXRl
ZCBiZWZvcmUKLS8vIGRlc3Ryb3lpbmcgaXQuIE90aGVyd2lzZSwgdGhlIHBlci10aHJlYWQgb2Jq
ZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5IHRoZQotLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgYXJl
IG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlc3Ryb3llZCBvbiBhbGwgcGxhdGZvcm1zLgotLy8KLS8v
IEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBnbG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRoYXQg
bWVhbnMgdGhleQotLy8gd2lsbCBkaWUgYWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRoZXJl
Zm9yZSwgbm8gcGVyLXRocmVhZAotLy8gb2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qgd2ls
bCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBhbGwgdGhyZWFkcwotLy8gdXNpbmcgR29vZ2xlIFRlc3Qg
aGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkgcmV0dXJucy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJsaWMgVGhyZWFkTG9jYWxCYXNlIHsKLSBwdWJsaWM6Ci0g
IFRocmVhZExvY2FsKCkgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJG
YWN0b3J5KCkpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQotICAg
ICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSh2YWx1
ZSkpIHt9Ci0KLSAgflRocmVhZExvY2FsKCkgeyBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVh
ZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9Ci0KLSAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdldE9y
Q3JlYXRlVmFsdWUoKTsgfQotICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gR2V0
T3JDcmVhdGVWYWx1ZSgpOyB9Ci0gIGNvbnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpwb2lu
dGVyKCk7IH0KLSAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZhbHVl
OyB9Ci0KLSBwcml2YXRlOgotICAvLyBIb2xkcyBhIHZhbHVlIG9mIFQuICBDYW4gYmUgZGVsZXRl
ZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0aG91dCB0aGUgY2FsbGVyCi0gIC8vIGtub3dpbmcgdGhl
IHR5cGUgb2YgVC4KLSAgY2xhc3MgVmFsdWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1
ZUhvbGRlckJhc2UgewotICAgcHVibGljOgotICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7
fQotICAgIGV4cGxpY2l0IFZhbHVlSG9sZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1
ZSkge30KLQotICAgIFQqIHBvaW50ZXIoKSB7IHJldHVybiAmdmFsdWVfOyB9Ci0KLSAgIHByaXZh
dGU6Ci0gICAgVCB2YWx1ZV87Ci0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhW
YWx1ZUhvbGRlcik7Ci0gIH07Ci0KLQotICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3Qgewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxWYWx1ZUhvbGRlcio+KAotICAgICAgICBUaHJlYWRMb2Nh
bFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCh0aGlzKSktPnBvaW50ZXIoKTsKLSAg
fQotCi0gIHZpcnR1YWwgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3Vy
cmVudFRocmVhZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5l
d0hvbGRlcigpOwotICB9Ci0KLSAgY2xhc3MgVmFsdWVIb2xkZXJGYWN0b3J5IHsKLSAgIHB1Ymxp
YzoKLSAgICBWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQotICAgIHZpcnR1YWwgflZhbHVlSG9sZGVy
RmFjdG9yeSgpIHt9Ci0gICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNv
bnN0ID0gMDsKLQotICAgcHJpdmF0ZToKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7Ci0gIH07Ci0KLSAgY2xhc3MgRGVmYXVsdFZhbHVlSG9s
ZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1ZUhvbGRlckZhY3RvcnkgewotICAgcHVibGljOgotICAg
IERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQotICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIq
IE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7IHJldHVybiBuZXcgVmFsdWVIb2xkZXIoKTsgfQotCi0g
ICBwcml2YXRlOgotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdFZh
bHVlSG9sZGVyRmFjdG9yeSk7Ci0gIH07Ci0KLSAgY2xhc3MgSW5zdGFuY2VWYWx1ZUhvbGRlckZh
Y3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKLSAgIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeShjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8o
dmFsdWUpIHt9Ci0gICAgdmlydHVhbCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0
IHsKLSAgICAgIHJldHVybiBuZXcgVmFsdWVIb2xkZXIodmFsdWVfKTsKLSAgICB9Ci0KLSAgIHBy
aXZhdGU6Ci0gICAgY29uc3QgVCB2YWx1ZV87ICAvLyBUaGUgdmFsdWUgZm9yIGVhY2ggdGhyZWFk
LgotCi0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhJbnN0YW5jZVZhbHVlSG9s
ZGVyRmFjdG9yeSk7Ci0gIH07Ci0KLSAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRl
ZmF1bHRfZmFjdG9yeV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJl
YWRMb2NhbCk7Ci19OwotCi0jIGVsaWYgR1RFU1RfSEFTX1BUSFJFQUQKLQotLy8gTXV0ZXhCYXNl
IGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLgot
Y2xhc3MgTXV0ZXhCYXNlIHsKLSBwdWJsaWM6Ci0gIC8vIEFjcXVpcmVzIHRoaXMgbXV0ZXguCi0g
IHZvaWQgTG9jaygpIHsKLSAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211
dGV4X2xvY2soJm11dGV4XykpOwotICAgIG93bmVyXyA9IHB0aHJlYWRfc2VsZigpOwotICAgIGhh
c19vd25lcl8gPSB0cnVlOwotICB9Ci0KLSAgLy8gUmVsZWFzZXMgdGhpcyBtdXRleC4KLSAgdm9p
ZCBVbmxvY2soKSB7Ci0gICAgLy8gU2luY2UgdGhlIGxvY2sgaXMgYmVpbmcgcmVsZWFzZWQgdGhl
IG93bmVyXyBmaWVsZCBzaG91bGQgbm8gbG9uZ2VyIGJlCi0gICAgLy8gY29uc2lkZXJlZCB2YWxp
ZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0aW5nIHRvIGhhc19vd25lcl8gaGVyZSwgYXMgaXQncwot
ICAgIC8vIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3Vy
cmVudCB0aHJlYWQgaG9sZHMgdGhlCi0gICAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4K
LSAgICBoYXNfb3duZXJfID0gZmFsc2U7Ci0gICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18o
cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4XykpOwotICB9Ci0KLSAgLy8gRG9lcyBub3RoaW5n
IGlmIHRoZSBjdXJyZW50IHRocmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hl
cwotICAvLyB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuCi0gIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0
IHsKLSAgICBHVEVTVF9DSEVDS18oaGFzX293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywg
cHRocmVhZF9zZWxmKCkpKQotICAgICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBo
b2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0aGlzOwotICB9Ci0KLSAgLy8gQSBzdGF0aWMgbXV0ZXgg
bWF5IGJlIHVzZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLiAgSXQgbWF5IGV2ZW4KLSAgLy8g
YmUgdXNlZCBiZWZvcmUgdGhlIGR5bmFtaWMgaW5pdGlhbGl6YXRpb24gc3RhZ2UuICBUaGVyZWZv
cmUgd2UKLSAgLy8gbXVzdCBiZSBhYmxlIHRvIGluaXRpYWxpemUgYSBzdGF0aWMgbXV0ZXggb2Jq
ZWN0IGF0IGxpbmsgdGltZS4KLSAgLy8gVGhpcyBtZWFucyBNdXRleEJhc2UgaGFzIHRvIGJlIGEg
UE9EIGFuZCBpdHMgbWVtYmVyIHZhcmlhYmxlcwotICAvLyBoYXZlIHRvIGJlIHB1YmxpYy4KLSBw
dWJsaWM6Ci0gIHB0aHJlYWRfbXV0ZXhfdCBtdXRleF87ICAvLyBUaGUgdW5kZXJseWluZyBwdGhy
ZWFkIG11dGV4LgotICAvLyBoYXNfb3duZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8g
ZmllbGQgYmVsb3cgY29udGFpbnMgYSB2YWxpZCB0aHJlYWQKLSAgLy8gSUQgYW5kIGlzIHRoZXJl
Zm9yZSBzYWZlIHRvIGluc3BlY3QgKGUuZy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBB
bGwKLSAgLy8gYWNjZXNzZXMgdG8gdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVk
IGJ5IGEgY2hlY2sgb2YgdGhpcyBmaWVsZC4KLSAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUg
dG8gbWVtc2V0KCkgb3duZXJfIHRvIGFsbCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KLSAgLy8gZ3Vh
cmFudGVlIHRoYXQgYSB6ZXJvJ2QgcHRocmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3Ig
ZXZlbiBkaWZmZXJlbnQKLSAgLy8gZnJvbSBwdGhyZWFkX3NlbGYoKS4KLSAgYm9vbCBoYXNfb3du
ZXJfOwotICBwdGhyZWFkX3Qgb3duZXJfOyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRl
eC4KLX07Ci0KLS8vIEZvcndhcmQtZGVjbGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jICBkZWZpbmUg
R1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgIGV4dGVybiA6OnRlc3Rp
bmc6OmludGVybmFsOjpNdXRleEJhc2UgbXV0ZXgKLQotLy8gRGVmaW5lcyBhbmQgc3RhdGljYWxs
eSAoaS5lLiBhdCBsaW5rIHRpbWUpIGluaXRpYWxpemVzIGEgc3RhdGljIG11dGV4LgotIyAgZGVm
aW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRleCA9IHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiwg
ZmFsc2UsIHB0aHJlYWRfdCgpIH0KLQotLy8gVGhlIE11dGV4IGNsYXNzIGNhbiBvbmx5IGJlIHVz
ZWQgZm9yIG11dGV4ZXMgY3JlYXRlZCBhdCBydW50aW1lLiBJdAotLy8gc2hhcmVzIGl0cyBBUEkg
d2l0aCBNdXRleEJhc2Ugb3RoZXJ3aXNlLgotY2xhc3MgTXV0ZXggOiBwdWJsaWMgTXV0ZXhCYXNl
IHsKLSBwdWJsaWM6Ci0gIE11dGV4KCkgewotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1Nf
KHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCBOVUxMKSk7Ci0gICAgaGFzX293bmVyXyA9IGZh
bHNlOwotICB9Ci0gIH5NdXRleCgpIHsKLSAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dGV4XykpOwotICB9Ci0KLSBwcml2YXRlOgotICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE11dGV4KTsKLX07Ci0KLS8vIFdlIGNhbm5vdCBu
YW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2NrIGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291
bGQKLS8vIGNvbmZsaWN0IHdpdGggYSBtYWNybyBuYW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRl
ZmluZWQgb24gc29tZQotLy8gcGxhdGZvcm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZl
bnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGFnYWluc3QKLS8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMg
b2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4TG9jaygmbXUpIiByYXRoZXIgdGhhbgotLy8gIk11dGV4
TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhlIHR5cGVkZWYgdHJpY2sgYmVsb3cuCi1jbGFzcyBHVGVz
dE11dGV4TG9jayB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJh
c2UqIG11dGV4KQotICAgICAgOiBtdXRleF8obXV0ZXgpIHsgbXV0ZXhfLT5Mb2NrKCk7IH0KLQot
ICB+R1Rlc3RNdXRleExvY2soKSB7IG11dGV4Xy0+VW5sb2NrKCk7IH0KLQotIHByaXZhdGU6Ci0g
IE11dGV4QmFzZSogY29uc3QgbXV0ZXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oR1Rlc3RNdXRleExvY2spOwotfTsKLQotdHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRl
eExvY2s7Ci0KLS8vIEhlbHBlcnMgZm9yIFRocmVhZExvY2FsLgotCi0vLyBwdGhyZWFkX2tleV9j
cmVhdGUoKSByZXF1aXJlcyBEZWxldGVUaHJlYWRMb2NhbFZhbHVlKCkgdG8gaGF2ZQotLy8gQy1s
aW5rYWdlLiAgVGhlcmVmb3JlIGl0IGNhbm5vdCBiZSB0ZW1wbGF0aXplZCB0byBhY2Nlc3MKLS8v
IFRocmVhZExvY2FsPFQ+LiAgSGVuY2UgdGhlIG5lZWQgZm9yIGNsYXNzCi0vLyBUaHJlYWRMb2Nh
bFZhbHVlSG9sZGVyQmFzZS4KLWNsYXNzIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgflRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKCkge30KLX07Ci0K
LS8vIENhbGxlZCBieSBwdGhyZWFkIHRvIGRlbGV0ZSB0aHJlYWQtbG9jYWwgZGF0YSBzdG9yZWQg
YnkKLS8vIHB0aHJlYWRfc2V0c3BlY2lmaWMoKS4KLWV4dGVybiAiQyIgaW5saW5lIHZvaWQgRGVs
ZXRlVGhyZWFkTG9jYWxWYWx1ZSh2b2lkKiB2YWx1ZV9ob2xkZXIpIHsKLSAgZGVsZXRlIHN0YXRp
Y19jYXN0PFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKj4odmFsdWVfaG9sZGVyKTsKLX0KLQot
Ly8gSW1wbGVtZW50cyB0aHJlYWQtbG9jYWwgc3RvcmFnZSBvbiBwdGhyZWFkcy1iYXNlZCBzeXN0
ZW1zLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7Ci0gcHVibGlj
OgotICBUaHJlYWRMb2NhbCgpCi0gICAgICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2Zh
Y3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9Ci0gIGV4cGxpY2l0IFRo
cmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQotICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAg
ICAgICAgZGVmYXVsdF9mYWN0b3J5XyhuZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFs
dWUpKSB7fQotCi0gIH5UaHJlYWRMb2NhbCgpIHsKLSAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdl
ZCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHRocmVhZCwgaWYgYW55LgotICAgIERlbGV0ZVRocmVh
ZExvY2FsVmFsdWUocHRocmVhZF9nZXRzcGVjaWZpYyhrZXlfKSk7Ci0KLSAgICAvLyBSZWxlYXNl
cyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXkuICBUaGlzIHdpbGwgKm5vdCoKLSAg
ICAvLyBkZWxldGUgbWFuYWdlZCBvYmplY3RzIGZvciBvdGhlciB0aHJlYWRzLgotICAgIEdURVNU
X0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfa2V5X2RlbGV0ZShrZXlfKSk7Ci0gIH0KLQot
ICBUKiBwb2ludGVyKCkgeyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9Ci0gIGNvbnN0IFQq
IHBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KLSAgY29uc3Qg
VCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKnBvaW50ZXIoKTsgfQotICB2b2lkIHNldChjb25zdCBU
JiB2YWx1ZSkgeyAqcG9pbnRlcigpID0gdmFsdWU7IH0KLQotIHByaXZhdGU6Ci0gIC8vIEhvbGRz
IGEgdmFsdWUgb2YgdHlwZSBULgotICBjbGFzcyBWYWx1ZUhvbGRlciA6IHB1YmxpYyBUaHJlYWRM
b2NhbFZhbHVlSG9sZGVyQmFzZSB7Ci0gICBwdWJsaWM6Ci0gICAgVmFsdWVIb2xkZXIoKSA6IHZh
bHVlXygpIHt9Ci0gICAgZXhwbGljaXQgVmFsdWVIb2xkZXIoY29uc3QgVCYgdmFsdWUpIDogdmFs
dWVfKHZhbHVlKSB7fQotCi0gICAgVCogcG9pbnRlcigpIHsgcmV0dXJuICZ2YWx1ZV87IH0KLQot
ICAgcHJpdmF0ZToKLSAgICBUIHZhbHVlXzsKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFZhbHVlSG9sZGVyKTsKLSAgfTsKLQotICBzdGF0aWMgcHRocmVhZF9rZXlfdCBDcmVh
dGVLZXkoKSB7Ci0gICAgcHRocmVhZF9rZXlfdCBrZXk7Ci0gICAgLy8gV2hlbiBhIHRocmVhZCBl
eGl0cywgRGVsZXRlVGhyZWFkTG9jYWxWYWx1ZSgpIHdpbGwgYmUgY2FsbGVkIG9uCi0gICAgLy8g
dGhlIG9iamVjdCBtYW5hZ2VkIGZvciB0aGF0IHRocmVhZC4KLSAgICBHVEVTVF9DSEVDS19QT1NJ
WF9TVUNDRVNTXygKLSAgICAgICAgcHRocmVhZF9rZXlfY3JlYXRlKCZrZXksICZEZWxldGVUaHJl
YWRMb2NhbFZhbHVlKSk7Ci0gICAgcmV0dXJuIGtleTsKLSAgfQotCi0gIFQqIEdldE9yQ3JlYXRl
VmFsdWUoKSBjb25zdCB7Ci0gICAgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhv
bGRlciA9Ci0gICAgICAgIHN0YXRpY19jYXN0PFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKj4o
cHRocmVhZF9nZXRzcGVjaWZpYyhrZXlfKSk7Ci0gICAgaWYgKGhvbGRlciAhPSBOVUxMKSB7Ci0g
ICAgICByZXR1cm4gQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPihob2xk
ZXIpLT5wb2ludGVyKCk7Ci0gICAgfQotCi0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xk
ZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5NYWtlTmV3SG9sZGVyKCk7Ci0gICAgVGhyZWFkTG9jYWxW
YWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlcl9iYXNlID0gbmV3X2hvbGRlcjsKLSAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX3NldHNwZWNpZmljKGtleV8sIGhvbGRlcl9i
YXNlKSk7Ci0gICAgcmV0dXJuIG5ld19ob2xkZXItPnBvaW50ZXIoKTsKLSAgfQotCi0gIGNsYXNz
IFZhbHVlSG9sZGVyRmFjdG9yeSB7Ci0gICBwdWJsaWM6Ci0gICAgVmFsdWVIb2xkZXJGYWN0b3J5
KCkge30KLSAgICB2aXJ0dWFsIH5WYWx1ZUhvbGRlckZhY3RvcnkoKSB7fQotICAgIHZpcnR1YWwg
VmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCA9IDA7Ci0KLSAgIHByaXZhdGU6Ci0g
ICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOwot
ICB9OwotCi0gIGNsYXNzIERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVI
b2xkZXJGYWN0b3J5IHsKLSAgIHB1YmxpYzoKLSAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5
KCkge30KLSAgICB2aXJ0dWFsIFZhbHVlSG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7IH0KLQotICAgcHJpdmF0ZToKLSAgICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKERlZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOwotICB9Owot
Ci0gIGNsYXNzIEluc3RhbmNlVmFsdWVIb2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVy
RmFjdG9yeSB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZh
Y3RvcnkoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQotICAgIHZpcnR1YWwgVmFs
dWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IFZhbHVl
SG9sZGVyKHZhbHVlXyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIGNvbnN0IFQgdmFsdWVf
OyAgLy8gVGhlIHZhbHVlIGZvciBlYWNoIHRocmVhZC4KLQotICAgIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkpOwotICB9OwotCi0gIC8v
IEEga2V5IHB0aHJlYWRzIHVzZXMgZm9yIGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2YWx1ZXMuCi0g
IGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5XzsKLSAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rv
cnk+IGRlZmF1bHRfZmFjdG9yeV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhUaHJlYWRMb2NhbCk7Ci19OwotCi0jIGVuZGlmICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RI
UkVBRF9MT0NBTF8KLQotI2Vsc2UgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gQSBkdW1t
eSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyAobXV0ZXgsIGxv
Y2ssCi0vLyBhbmQgdGhyZWFkLWxvY2FsIHZhcmlhYmxlKS4gIE5lY2Vzc2FyeSBmb3IgY29tcGls
aW5nIEdvb2dsZSBUZXN0IHdoZXJlCi0vLyBtdXRleCBpcyBub3Qgc3VwcG9ydGVkIC0gdXNpbmcg
R29vZ2xlIFRlc3QgaW4gbXVsdGlwbGUgdGhyZWFkcyBpcyBub3QKLS8vIHN1cHBvcnRlZCBvbiBz
dWNoIHBsYXRmb3Jtcy4KLQotY2xhc3MgTXV0ZXggewotIHB1YmxpYzoKLSAgTXV0ZXgoKSB7fQot
ICB2b2lkIExvY2soKSB7fQotICB2b2lkIFVubG9jaygpIHt9Ci0gIHZvaWQgQXNzZXJ0SGVsZCgp
IGNvbnN0IHt9Ci19OwotCi0jIGRlZmluZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0
ZXgpIFwKLSAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4Ci0KLSMgZGVm
aW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFs
OjpNdXRleCBtdXRleAotCi0vLyBXZSBjYW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBi
ZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0aW9uIHdvdWxkCi0vLyBjb25mbGljdCB3aXRoIGEgbWFj
cm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGljaCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jt
cy4gVGhhdCBtYWNybyBpcyB1c2VkIGFzIGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBh
Z2FpbnN0Ci0vLyBpbmFkdmVydGVudCBtaXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExv
Y2soJm11KSIgcmF0aGVyIHRoYW4KLS8vICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0
eXBlZGVmIHRyaWNrIGJlbG93LgotY2xhc3MgR1Rlc3RNdXRleExvY2sgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgR1Rlc3RNdXRleExvY2soTXV0ZXgqKSB7fSAgLy8gTk9MSU5UCi19OwotCi10eXBl
ZGVmIEdUZXN0TXV0ZXhMb2NrIE11dGV4TG9jazsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBUaHJlYWRMb2NhbCB7Ci0gcHVibGljOgotICBUaHJlYWRMb2NhbCgpIDogdmFsdWVfKCkg
e30KLSAgZXhwbGljaXQgVGhyZWFkTG9jYWwoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVl
KSB7fQotICBUKiBwb2ludGVyKCkgeyByZXR1cm4gJnZhbHVlXzsgfQotICBjb25zdCBUKiBwb2lu
dGVyKCkgY29uc3QgeyByZXR1cm4gJnZhbHVlXzsgfQotICBjb25zdCBUJiBnZXQoKSBjb25zdCB7
IHJldHVybiB2YWx1ZV87IH0KLSAgdm9pZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgdmFsdWVfID0g
dmFsdWU7IH0KLSBwcml2YXRlOgotICBUIHZhbHVlXzsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SVNfVEhSRUFEU0FGRQotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5n
IGluIHRoZSBwcm9jZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRl
Y3QgaXQuCi1HVEVTVF9BUElfIHNpemVfdCBHZXRUaHJlYWRDb3VudCgpOwotCi0vLyBQYXNzaW5n
IG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pIGNyYXNoZXMgdGhlIEFSTQot
Ly8gY29tcGlsZXIgYW5kIGdlbmVyYXRlcyBhIHdhcm5pbmcgaW4gU3VuIFN0dWRpby4gIFRoZSBO
b2tpYSBTeW1iaWFuCi0vLyBhbmQgdGhlIElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5z
dGFudGlhdGUgYSBjb3B5IGNvbnN0cnVjdG9yCi0vLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3Vn
aCBlbGxpcHNpcyAoLi4uKSwgZmFpbGluZyBmb3IgdW5jb3B5YWJsZQotLy8gb2JqZWN0cy4gIFdl
IGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCi0v
LyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykg
fHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotLy8gV2UgbG9z
ZSBzdXBwb3J0IGZvciBOVUxMIGRldGVjdGlvbiB3aGVyZSB0aGUgY29tcGlsZXIgZG9lc24ndCBs
aWtlCi0vLyBwYXNzaW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pLgot
IyBkZWZpbmUgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXyAxCi0jZWxzZQotIyBkZWZpbmUgR1RF
U1RfQ0FOX0NPTVBBUkVfTlVMTCAxCi0jZW5kaWYKLQotLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5k
IElCTSBYTCBDL0MrKyBjb21waWxlcnMgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCi0vLyBjb25zdCBU
JiBhbmQgY29uc3QgVCogaW4gYSBmdW5jdGlvbiB0ZW1wbGF0ZS4gIFRoZXNlIGNvbXBpbGVycwot
Ly8gX2Nhbl8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZv
ciBUIGFuZCBUKiwKLS8vIHNvIGEgdHIxOjp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29y
a3MuCi0jaWYgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0j
IGRlZmluZSBHVEVTVF9ORUVEU19JU19QT0lOVEVSXyAxCi0jZW5kaWYKLQotdGVtcGxhdGUgPGJv
b2wgYm9vbF92YWx1ZT4KLXN0cnVjdCBib29sX2NvbnN0YW50IHsKLSAgdHlwZWRlZiBib29sX2Nv
bnN0YW50PGJvb2xfdmFsdWU+IHR5cGU7Ci0gIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gYm9v
bF92YWx1ZTsKLX07Ci10ZW1wbGF0ZSA8Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xf
Y29uc3RhbnQ8Ym9vbF92YWx1ZT46OnZhbHVlOwotCi10eXBlZGVmIGJvb2xfY29uc3RhbnQ8ZmFs
c2U+IGZhbHNlX3R5cGU7Ci10eXBlZGVmIGJvb2xfY29uc3RhbnQ8dHJ1ZT4gdHJ1ZV90eXBlOwot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19wb2ludGVyIDogcHVibGljIGZhbHNl
X3R5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3BvaW50ZXI8VCo+
IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgot
c3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFs
dWVfdHlwZSB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
SXRlcmF0b3JUcmFpdHM8VCo+IHsKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBJdGVyYXRvclRyYWl0czxjb25zdCBUKj4gewotICB0
eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGRlZmlu
ZSBHVEVTVF9QQVRIX1NFUF8gIlxcIgotIyBkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8g
MQotLy8gVGhlIGJpZ2dlc3Qgc2lnbmVkIGludGVnZXIgdHlwZSB0aGUgY29tcGlsZXIgc3VwcG9y
dHMuCi10eXBlZGVmIF9faW50NjQgQmlnZ2VzdEludDsKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9Q
QVRIX1NFUF8gIi8iCi0jIGRlZmluZSBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXyAwCi10eXBlZGVm
IGxvbmcgbG9uZyBCaWdnZXN0SW50OyAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLQotLy8gVXRpbGl0aWVzIGZvciBjaGFyLgotCi0vLyBpc3NwYWNlKGludCBjaCkgYW5k
IGZyaWVuZHMgYWNjZXB0IGFuIHVuc2lnbmVkIGNoYXIgb3IgRU9GLiAgY2hhcgotLy8gbWF5IGJl
IHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciAob3IgY29tcGlsZXIgZmxhZ3MpLgot
Ly8gVGhlcmVmb3JlIHdlIG5lZWQgdG8gY2FzdCBhIGNoYXIgdG8gdW5zaWduZWQgY2hhciBiZWZv
cmUgY2FsbGluZwotLy8gaXNzcGFjZSgpLCBldGMuCi0KLWlubGluZSBib29sIElzQWxwaGEoY2hh
ciBjaCkgewotICByZXR1cm4gaXNhbHBoYShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkp
ICE9IDA7Ci19Ci1pbmxpbmUgYm9vbCBJc0FsTnVtKGNoYXIgY2gpIHsKLSAgcmV0dXJuIGlzYWxu
dW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOwotfQotaW5saW5lIGJvb2wg
SXNEaWdpdChjaGFyIGNoKSB7Ci0gIHJldHVybiBpc2RpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkgIT0gMDsKLX0KLWlubGluZSBib29sIElzTG93ZXIoY2hhciBjaCkgewotICBy
ZXR1cm4gaXNsb3dlcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Ci19Ci1p
bmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIgY2gpIHsKLSAgcmV0dXJuIGlzc3BhY2Uoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAhPSAwOwotfQotaW5saW5lIGJvb2wgSXNVcHBlcihjaGFy
IGNoKSB7Ci0gIHJldHVybiBpc3VwcGVyKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkg
IT0gMDsKLX0KLWlubGluZSBib29sIElzWERpZ2l0KGNoYXIgY2gpIHsKLSAgcmV0dXJuIGlzeGRp
Z2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKLX0KLWlubGluZSBib29s
IElzWERpZ2l0KHdjaGFyX3QgY2gpIHsKLSAgY29uc3QgdW5zaWduZWQgY2hhciBsb3dfYnl0ZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKTsKLSAgcmV0dXJuIGNoID09IGxvd19ieXRl
ICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAhPSAwOwotfQotCi1pbmxpbmUgY2hhciBUb0xvd2VyKGNo
YXIgY2gpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvbG93ZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oY2gpKSk7Ci19Ci1pbmxpbmUgY2hhciBUb1VwcGVyKGNoYXIgY2gpIHsK
LSAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KHRvdXBwZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSk7Ci19Ci0KLWlubGluZSBzdGQ6OnN0cmluZyBTdHJpcFRyYWlsaW5nU3BhY2Vz
KHN0ZDo6c3RyaW5nIHN0cikgewotICBzdGQ6OnN0cmluZzo6aXRlcmF0b3IgaXQgPSBzdHIuZW5k
KCk7Ci0gIHdoaWxlIChpdCAhPSBzdHIuYmVnaW4oKSAmJiBJc1NwYWNlKCotLWl0KSkKLSAgICBp
dCA9IHN0ci5lcmFzZShpdCk7Ci0gIHJldHVybiBzdHI7Ci19Ci0KLS8vIFRoZSB0ZXN0aW5nOjpp
bnRlcm5hbDo6cG9zaXggbmFtZXNwYWNlIGhvbGRzIHdyYXBwZXJzIGZvciBjb21tb24KLS8vIFBP
U0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdyYXBwZXJzIGhpZGUgdGhlIGRpZmZlcmVuY2VzIGJldHdl
ZW4KLS8vIFdpbmRvd3MvTVNWQyBhbmQgUE9TSVggc3lzdGVtcy4gIFNpbmNlIHNvbWUgY29tcGls
ZXJzIGRlZmluZSB0aGVzZQotLy8gc3RhbmRhcmQgZnVuY3Rpb25zIGFzIG1hY3JvcywgdGhlIHdy
YXBwZXIgY2Fubm90IGhhdmUgdGhlIHNhbWUgbmFtZQotLy8gYXMgdGhlIHdyYXBwZWQgZnVuY3Rp
b24uCi0KLW5hbWVzcGFjZSBwb3NpeCB7Ci0KLS8vIEZ1bmN0aW9ucyB3aXRoIGEgZGlmZmVyZW50
IG5hbWUgb24gV2luZG93cy4KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLQotdHlwZWRlZiBzdHJ1
Y3QgX3N0YXQgU3RhdFN0cnVjdDsKLQotIyBpZmRlZiBfX0JPUkxBTkRDX18KLWlubGluZSBpbnQg
SXNBVFRZKGludCBmZCkgeyByZXR1cm4gaXNhdHR5KGZkKTsgfQotaW5saW5lIGludCBTdHJDYXNl
Q21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gc3RyaWNtcChz
MSwgczIpOwotfQotaW5saW5lIGNoYXIqIFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJu
IHN0cmR1cChzcmMpOyB9Ci0jIGVsc2UgIC8vICFfX0JPUkxBTkRDX18KLSMgIGlmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi1pbmxpbmUgaW50IElzQVRUWShpbnQgLyogZmQgKi8pIHsgcmV0dXJu
IDA7IH0KLSMgIGVsc2UKLWlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4gX2lzYXR0
eShmZCk7IH0KLSMgIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotaW5saW5lIGlu
dCBTdHJDYXNlQ21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4g
X3N0cmljbXAoczEsIHMyKTsKLX0KLWlubGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3Jj
KSB7IHJldHVybiBfc3RyZHVwKHNyYyk7IH0KLSMgZW5kaWYgIC8vIF9fQk9STEFORENfXwotCi0j
IGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi1pbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxl
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGludD4oX2ZpbGVubyhmaWxlKSk7IH0KLS8vIFN0
YXQoKSwgUm1EaXIoKSwgYW5kIElzRGlyKCkgYXJlIG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBh
dCB0aGlzCi0vLyB0aW1lIGFuZCB0aHVzIG5vdCBkZWZpbmVkIHRoZXJlLgotIyBlbHNlCi1pbmxp
bmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9Ci1pbmxp
bmUgaW50IFN0YXQoY29uc3QgY2hhciogcGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBf
c3RhdChwYXRoLCBidWYpOyB9Ci1pbmxpbmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyBy
ZXR1cm4gX3JtZGlyKGRpcik7IH0KLWlubGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3Qm
IHN0KSB7Ci0gIHJldHVybiAoX1NfSUZESVIgJiBzdC5zdF9tb2RlKSAhPSAwOwotfQotIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotI2Vsc2UKLQotdHlwZWRlZiBzdHJ1Y3Qg
c3RhdCBTdGF0U3RydWN0OwotCi1pbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVy
biBmaWxlbm8oZmlsZSk7IH0KLWlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4gaXNh
dHR5KGZkKTsgfQotaW5saW5lIGludCBTdGF0KGNvbnN0IGNoYXIqIHBhdGgsIFN0YXRTdHJ1Y3Qq
IGJ1ZikgeyByZXR1cm4gc3RhdChwYXRoLCBidWYpOyB9Ci1pbmxpbmUgaW50IFN0ckNhc2VDbXAo
Y29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7Ci0gIHJldHVybiBzdHJjYXNlY21wKHMx
LCBzMik7Ci19Ci1pbmxpbmUgY2hhciogU3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyByZXR1cm4g
c3RyZHVwKHNyYyk7IH0KLWlubGluZSBpbnQgUm1EaXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVy
biBybWRpcihkaXIpOyB9Ci1pbmxpbmUgYm9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkg
eyByZXR1cm4gU19JU0RJUihzdC5zdF9tb2RlKTsgfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1MKLQotLy8gRnVuY3Rpb25zIGRlcHJlY2F0ZWQgYnkgTVNWQyA4LjAuCi0KLUdURVNUX0RJ
U0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZGVwcmVjYXRlZCBmdW5jdGlvbiAqLykK
LQotaW5saW5lIGNvbnN0IGNoYXIqIFN0ck5DcHkoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3Jj
LCBzaXplX3QgbikgewotICByZXR1cm4gc3RybmNweShkZXN0LCBzcmMsIG4pOwotfQotCi0vLyBD
aERpcigpLCBGUmVvcGVuKCksIEZET3BlbigpLCBSZWFkKCksIFdyaXRlKCksIENsb3NlKCksIGFu
ZAotLy8gU3RyRXJyb3IoKSBhcmVuJ3QgbmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcyB0aW1l
IGFuZCB0aHVzIG5vdAotLy8gZGVmaW5lZCB0aGVyZS4KLQotI2lmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19S
VAotaW5saW5lIGludCBDaERpcihjb25zdCBjaGFyKiBkaXIpIHsgcmV0dXJuIGNoZGlyKGRpcik7
IH0KLSNlbmRpZgotaW5saW5lIEZJTEUqIEZPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNo
YXIqIG1vZGUpIHsKLSAgcmV0dXJuIGZvcGVuKHBhdGgsIG1vZGUpOwotfQotI2lmICFHVEVTVF9P
U19XSU5ET1dTX01PQklMRQotaW5saW5lIEZJTEUgKkZSZW9wZW4oY29uc3QgY2hhciogcGF0aCwg
Y29uc3QgY2hhciogbW9kZSwgRklMRSogc3RyZWFtKSB7Ci0gIHJldHVybiBmcmVvcGVuKHBhdGgs
IG1vZGUsIHN0cmVhbSk7Ci19Ci1pbmxpbmUgRklMRSogRkRPcGVuKGludCBmZCwgY29uc3QgY2hh
ciogbW9kZSkgeyByZXR1cm4gZmRvcGVuKGZkLCBtb2RlKTsgfQotI2VuZGlmCi1pbmxpbmUgaW50
IEZDbG9zZShGSUxFKiBmcCkgeyByZXR1cm4gZmNsb3NlKGZwKTsgfQotI2lmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotaW5saW5lIGludCBSZWFkKGludCBmZCwgdm9pZCogYnVmLCB1bnNpZ25l
ZCBpbnQgY291bnQpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVhZChmZCwgYnVmLCBj
b3VudCkpOwotfQotaW5saW5lIGludCBXcml0ZShpbnQgZmQsIGNvbnN0IHZvaWQqIGJ1ZiwgdW5z
aWduZWQgaW50IGNvdW50KSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHdyaXRlKGZkLCBi
dWYsIGNvdW50KSk7Ci19Ci1pbmxpbmUgaW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2Uo
ZmQpOyB9Ci1pbmxpbmUgY29uc3QgY2hhciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4g
c3RyZXJyb3IoZXJybnVtKTsgfQotI2VuZGlmCi1pbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNv
bnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9P
U19XSU5ET1dTX1BIT05FIHwgR1RFU1RfT1NfV0lORE9XU19SVAotICAvLyBXZSBhcmUgb24gV2lu
ZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSAgc3RhdGljX2Nh
c3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBwcmV2ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcu
Ci0gIHJldHVybiBOVUxMOwotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQo
X19TdW5PU181XzgpIHx8IGRlZmluZWQoX19TdW5PU181XzkpCi0gIC8vIEVudmlyb25tZW50IHZh
cmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFtbWF0aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRo
ZQotICAvLyBlbXB0eSBzdHJpbmcgcmF0aGVyIHRoYW4gdW5zZXQgKE5VTEwpLiAgSGFuZGxlIHRo
YXQgY2FzZS4KLSAgY29uc3QgY2hhciogY29uc3QgZW52ID0gZ2V0ZW52KG5hbWUpOwotICByZXR1
cm4gKGVudiAhPSBOVUxMICYmIGVudlswXSAhPSAnXDAnKSA/IGVudiA6IE5VTEw7Ci0jZWxzZQot
ICByZXR1cm4gZ2V0ZW52KG5hbWUpOwotI2VuZGlmCi19Ci0KLUdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKQotCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3Mg
Q0UgaGFzIG5vIEMgbGlicmFyeS4gVGhlIGFib3J0KCkgZnVuY3Rpb24gaXMgdXNlZCBpbgotLy8g
c2V2ZXJhbCBwbGFjZXMgaW4gR29vZ2xlIFRlc3QuIFRoaXMgaW1wbGVtZW50YXRpb24gcHJvdmlk
ZXMgYSByZWFzb25hYmxlCi0vLyBpbWl0YXRpb24gb2Ygc3RhbmRhcmQgYmVoYXZpb3VyLgotdm9p
ZCBBYm9ydCgpOwotI2Vsc2UKLWlubGluZSB2b2lkIEFib3J0KCkgeyBhYm9ydCgpOyB9Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLX0gIC8vIG5hbWVzcGFjZSBwb3NpeAot
Ci0vLyBNU1ZDICJkZXByZWNhdGVzIiBzbnByaW50ZiBhbmQgaXNzdWVzIHdhcm5pbmdzIHdoZXJl
dmVyIGl0IGlzIHVzZWQuICBJbgotLy8gb3JkZXIgdG8gYXZvaWQgdGhlc2Ugd2FybmluZ3MsIHdl
IG5lZWQgdG8gdXNlIF9zbnByaW50ZiBvciBfc25wcmludGZfcyBvbgotLy8gTVNWQy1iYXNlZCBw
bGF0Zm9ybXMuICBXZSBtYXAgdGhlIEdURVNUX1NOUFJJTlRGXyBtYWNybyB0byB0aGUgYXBwcm9w
cmlhdGUKLS8vIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGFjaGlldmUgdGhhdC4gIFdlIHVzZSBtYWNy
byBkZWZpbml0aW9uIGhlcmUgYmVjYXVzZQotLy8gc25wcmludGYgaXMgYSB2YXJpYWRpYyBmdW5j
dGlvbi4KLSNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ly8gTVNWQyAyMDA1IGFuZCBhYm92ZSBzdXBwb3J0IHZhcmlhZGljIG1hY3Jvcy4KLSMgZGVmaW5l
IEdURVNUX1NOUFJJTlRGXyhidWZmZXIsIHNpemUsIGZvcm1hdCwgLi4uKSBcCi0gICAgIF9zbnBy
aW50Zl9zKGJ1ZmZlciwgc2l6ZSwgc2l6ZSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKLSNlbGlmIGRl
ZmluZWQoX01TQ19WRVIpCi0vLyBXaW5kb3dzIENFIGRvZXMgbm90IGRlZmluZSBfc25wcmludGZf
cyBhbmQgTVNWQyBwcmlvciB0byAyMDA1IGRvZXNuJ3QKLS8vIGNvbXBsYWluIGFib3V0IF9zbnBy
aW50Zi4KLSMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyBfc25wcmludGYKLSNlbHNlCi0jIGRlZmlu
ZSBHVEVTVF9TTlBSSU5URl8gc25wcmludGYKLSNlbmRpZgotCi0vLyBUaGUgbWF4aW11bSBudW1i
ZXIgYSBCaWdnZXN0SW50IGNhbiByZXByZXNlbnQuICBUaGlzIGRlZmluaXRpb24KLS8vIHdvcmtz
IG5vIG1hdHRlciBCaWdnZXN0SW50IGlzIHJlcHJlc2VudGVkIGluIG9uZSdzIGNvbXBsZW1lbnQg
b3IKLS8vIHR3bydzIGNvbXBsZW1lbnQuCi0vLwotLy8gV2UgY2Fubm90IHJlbHkgb24gbnVtZXJp
Y19saW1pdHMgaW4gU1RMLCBhcyBfX2ludDY0IGFuZCBsb25nIGxvbmcKLS8vIGFyZSBub3QgcGFy
dCBvZiBzdGFuZGFyZCBDKysgYW5kIG51bWVyaWNfbGltaXRzIGRvZXNuJ3QgbmVlZCB0byBiZQot
Ly8gZGVmaW5lZCBmb3IgdGhlbS4KLWNvbnN0IEJpZ2dlc3RJbnQga01heEJpZ2dlc3RJbnQgPQot
ICAgIH4oc3RhdGljX2Nhc3Q8QmlnZ2VzdEludD4oMSkgPDwgKDgqc2l6ZW9mKEJpZ2dlc3RJbnQp
IC0gMSkpOwotCi0vLyBUaGlzIHRlbXBsYXRlIGNsYXNzIHNlcnZlcyBhcyBhIGNvbXBpbGUtdGlt
ZSBmdW5jdGlvbiBmcm9tIHNpemUgdG8KLS8vIHR5cGUuICBJdCBtYXBzIGEgc2l6ZSBpbiBieXRl
cyB0byBhIHByaW1pdGl2ZSB0eXBlIHdpdGggdGhhdAotLy8gc2l6ZS4gZS5nLgotLy8KLS8vICAg
VHlwZVdpdGhTaXplPDQ+OjpVSW50Ci0vLwotLy8gaXMgdHlwZWRlZi1lZCB0byBiZSB1bnNpZ25l
ZCBpbnQgKHVuc2lnbmVkIGludGVnZXIgbWFkZSB1cCBvZiA0Ci0vLyBieXRlcykuCi0vLwotLy8g
U3VjaCBmdW5jdGlvbmFsaXR5IHNob3VsZCBiZWxvbmcgdG8gU1RMLCBidXQgSSBjYW5ub3QgZmlu
ZCBpdAotLy8gdGhlcmUuCi0vLwotLy8gR29vZ2xlIFRlc3QgdXNlcyB0aGlzIGNsYXNzIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdGluZy1wb2ludAotLy8gY29tcGFyaXNvbi4KLS8vCi0v
LyBGb3Igbm93IGl0IG9ubHkgaGFuZGxlcyBVSW50ICh1bnNpZ25lZCBpbnQpIGFzIHRoYXQncyBh
bGwgR29vZ2xlIFRlc3QKLS8vIG5lZWRzLiAgT3RoZXIgdHlwZXMgY2FuIGJlIGVhc2lseSBhZGRl
ZCBpbiB0aGUgZnV0dXJlIGlmIG5lZWQKLS8vIGFyaXNlcy4KLXRlbXBsYXRlIDxzaXplX3Qgc2l6
ZT4KLWNsYXNzIFR5cGVXaXRoU2l6ZSB7Ci0gcHVibGljOgotICAvLyBUaGlzIHByZXZlbnRzIHRo
ZSB1c2VyIGZyb20gdXNpbmcgVHlwZVdpdGhTaXplPE4+IHdpdGggaW5jb3JyZWN0Ci0gIC8vIHZh
bHVlcyBvZiBOLgotICB0eXBlZGVmIHZvaWQgVUludDsKLX07Ci0KLS8vIFRoZSBzcGVjaWFsaXph
dGlvbiBmb3Igc2l6ZSA0LgotdGVtcGxhdGUgPD4KLWNsYXNzIFR5cGVXaXRoU2l6ZTw0PiB7Ci0g
cHVibGljOgotICAvLyB1bnNpZ25lZCBpbnQgaGFzIHNpemUgNCBpbiBib3RoIGdjYyBhbmQgTVNW
Qy4KLSAgLy8KLSAgLy8gQXMgYmFzZS9iYXNpY3R5cGVzLmggZG9lc24ndCBjb21waWxlIG9uIFdp
bmRvd3MsIHdlIGNhbm5vdCB1c2UKLSAgLy8gdWludDMyLCB1aW50NjQsIGFuZCBldGMgaGVyZS4K
LSAgdHlwZWRlZiBpbnQgSW50OwotICB0eXBlZGVmIHVuc2lnbmVkIGludCBVSW50OwotfTsKLQot
Ly8gVGhlIHNwZWNpYWxpemF0aW9uIGZvciBzaXplIDguCi10ZW1wbGF0ZSA8PgotY2xhc3MgVHlw
ZVdpdGhTaXplPDg+IHsKLSBwdWJsaWM6Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICB0eXBlZGVm
IF9faW50NjQgSW50OwotICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVUludDsKLSNlbHNlCi0g
IHR5cGVkZWYgbG9uZyBsb25nIEludDsgIC8vIE5PTElOVAotICB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBVSW50OyAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX07
Ci0KLS8vIEludGVnZXIgdHlwZXMgb2Yga25vd24gc2l6ZXMuCi10eXBlZGVmIFR5cGVXaXRoU2l6
ZTw0Pjo6SW50IEludDMyOwotdHlwZWRlZiBUeXBlV2l0aFNpemU8ND46OlVJbnQgVUludDMyOwot
dHlwZWRlZiBUeXBlV2l0aFNpemU8OD46OkludCBJbnQ2NDsKLXR5cGVkZWYgVHlwZVdpdGhTaXpl
PDg+OjpVSW50IFVJbnQ2NDsKLXR5cGVkZWYgVHlwZVdpdGhTaXplPDg+OjpJbnQgVGltZUluTWls
bGlzOyAgLy8gUmVwcmVzZW50cyB0aW1lIGluIG1pbGxpc2Vjb25kcy4KLQotLy8gVXRpbGl0aWVz
IGZvciBjb21tYW5kIGxpbmUgZmxhZ3MgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLy8g
TWFjcm8gZm9yIHJlZmVyZW5jaW5nIGZsYWdzLgotI2lmICFkZWZpbmVkKEdURVNUX0ZMQUcpCi0j
IGRlZmluZSBHVEVTVF9GTEFHKG5hbWUpIEZMQUdTX2d0ZXN0XyMjbmFtZQotI2VuZGlmICAvLyAh
ZGVmaW5lZChHVEVTVF9GTEFHKQotCi0jaWYgIWRlZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklM
RV9GTEFHXykKLSMgZGVmaW5lIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18gMQotI2VuZGlm
ICAvLyAhZGVmaW5lZChHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfKQotCi0jaWYgIWRlZmlu
ZWQoR1RFU1RfREVDTEFSRV9ib29sXykKLSMgZGVmaW5lIEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkdUZXN0RmxhZ1NhdmVyCi0KLS8vIE1hY3JvcyBmb3IgZGVjbGFyaW5n
IGZsYWdzLgotIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9ib29sXyhuYW1lKSBHVEVTVF9BUElfIGV4
dGVybiBib29sIEdURVNUX0ZMQUcobmFtZSkKLSMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50MzJf
KG5hbWUpIFwKLSAgICBHVEVTVF9BUElfIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpJbnQz
MiBHVEVTVF9GTEFHKG5hbWUpCi0jZGVmaW5lIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKSBc
Ci0gICAgR1RFU1RfQVBJXyBleHRlcm4gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCi0K
LS8vIE1hY3JvcyBmb3IgZGVmaW5pbmcgZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0RFRklORV9ib29s
XyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyBib29sIEdURVNUX0ZM
QUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0jZGVmaW5lIEdURVNUX0RFRklORV9pbnQzMl8obmFt
ZSwgZGVmYXVsdF92YWwsIGRvYykgXAotICAgIEdURVNUX0FQSV8gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6SW50MzIgR1RFU1RfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR1RFU1Rf
REVGSU5FX3N0cmluZ18obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAotICAgIEdURVNUX0FQSV8g
OjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotCi0jZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0RFQ0xBUkVfYm9vbF8pCi0KLS8vIFRocmVhZCBhbm5vdGF0aW9u
cwotI2lmICFkZWZpbmVkKEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXykKLSMgZGVmaW5l
IEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhsb2NrcykKLSMgZGVmaW5lIEdURVNUX0xP
Q0tfRVhDTFVERURfKGxvY2tzKQotI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9FWENMVVNJVkVf
TE9DS19SRVFVSVJFRF8pCi0KLS8vIFBhcnNlcyAnc3RyJyBmb3IgYSAzMi1iaXQgc2lnbmVkIGlu
dGVnZXIuICBJZiBzdWNjZXNzZnVsLCB3cml0ZXMgdGhlIHJlc3VsdAotLy8gdG8gKnZhbHVlIGFu
ZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2ZXMgKnZhbHVlIHVuY2hhbmdlZCBhbmQgcmV0
dXJucwotLy8gZmFsc2UuCi0vLyBUT0RPKGNoYW5kbGVyYyk6IEZpbmQgYSBiZXR0ZXIgd2F5IHRv
IHJlZmFjdG9yIGZsYWcgYW5kIGVudmlyb25tZW50IHBhcnNpbmcKLS8vIG91dCBvZiBib3RoIGd0
ZXN0LXBvcnQuY2MgYW5kIGd0ZXN0LmNjIHRvIGF2b2lkIGV4cG9ydGluZyB0aGlzIHV0aWxpdHkK
LS8vIGZ1bmN0aW9uLgotYm9vbCBQYXJzZUludDMyKGNvbnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBj
b25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSk7Ci0KLS8vIFBhcnNlcyBhIGJvb2wvSW50MzIv
c3RyaW5nIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0vLyBjb3JyZXNwb25kaW5nIHRv
IHRoZSBnaXZlbiBHb29nbGUgVGVzdCBmbGFnLgotYm9vbCBCb29sRnJvbUdUZXN0RW52KGNvbnN0
IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWwpOwotR1RFU1RfQVBJXyBJbnQzMiBJbnQzMkZy
b21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0X3ZhbCk7Ci1zdGQ6OnN0
cmluZyBTdHJpbmdGcm9tR1Rlc3RFbnYoY29uc3QgY2hhciogZmxhZywgY29uc3QgY2hhciogZGVm
YXVsdF92YWwpOwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gUmV0dXJucyBhIHBh
dGggdG8gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KLS8vIFRyaWVzIHRvIGRldGVybWluZSBhbiBhcHBy
b3ByaWF0ZSBkaXJlY3RvcnkgZm9yIHRoZSBwbGF0Zm9ybS4KLUdURVNUX0FQSV8gc3RkOjpzdHJp
bmcgVGVtcERpcigpOwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdU
RVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk3ZjFhN2ZkZDJjMGNjNDRjM2ExNDhmMGYxZWNkY2JkZmU5YmFjNmMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaAorKysgL2Rldi9udWxsCkBA
IC0xLDE2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiksIGVlZmFj
bUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIGRlY2xhcmVz
IHRoZSBTdHJpbmcgY2xhc3MgYW5kIGZ1bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKLS8vIEdv
b2dsZSBUZXN0LiAgVGhleSBhcmUgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuIFRo
ZXkgc2hvdWxkIG5vdCB1c2VkCi0vLyBieSBjb2RlIGV4dGVybmFsIHRvIEdvb2dsZSBUZXN0Lgot
Ly8KLS8vIFRoaXMgaGVhZGVyIGZpbGUgaXMgI2luY2x1ZGVkIGJ5IDxndGVzdC9pbnRlcm5hbC9n
dGVzdC1pbnRlcm5hbC5oPi4KLS8vIEl0IHNob3VsZCBub3QgYmUgI2luY2x1ZGVkIGJ5IG90aGVy
IGZpbGVzLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfU1RS
SU5HX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfU1RSSU5H
X0hfCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIHN0cmluZy5oIGlzIG5vdCBndWFyYW50ZWVk
IHRvIHByb3ZpZGUgc3RyY3B5IG9uIEMrKyBCdWlsZGVyLgotIyBpbmNsdWRlIDxtZW0uaD4KLSNl
bmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVk
ZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1u
YW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBTdHJpbmcgLSBhbiBhYnN0cmFjdCBjbGFzcyBob2xk
aW5nIHN0YXRpYyBzdHJpbmcgdXRpbGl0aWVzLgotY2xhc3MgR1RFU1RfQVBJXyBTdHJpbmcgewot
IHB1YmxpYzoKLSAgLy8gU3RhdGljIHV0aWxpdHkgbWV0aG9kcwotCi0gIC8vIENsb25lcyBhIDAt
dGVybWluYXRlZCBDIHN0cmluZywgYWxsb2NhdGluZyBtZW1vcnkgdXNpbmcgbmV3LiAgVGhlCi0g
IC8vIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHJldHVybiB2YWx1ZSB1
c2luZwotICAvLyBkZWxldGVbXS4gIFJldHVybnMgdGhlIGNsb25lZCBzdHJpbmcsIG9yIE5VTEwg
aWYgdGhlIGlucHV0IGlzCi0gIC8vIE5VTEwuCi0gIC8vCi0gIC8vIFRoaXMgaXMgZGlmZmVyZW50
IGZyb20gc3RyZHVwKCkgaW4gc3RyaW5nLmgsIHdoaWNoIGFsbG9jYXRlcwotICAvLyBtZW1vcnkg
dXNpbmcgbWFsbG9jKCkuCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBDbG9uZUNTdHJpbmcoY29uc3Qg
Y2hhciogY19zdHIpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgLy8gV2luZG93
cyBDRSBkb2VzIG5vdCBoYXZlIHRoZSAnQU5TSScgdmVyc2lvbnMgb2YgV2luMzIgQVBJcy4gVG8g
YmUKLSAgLy8gYWJsZSB0byBwYXNzIHN0cmluZ3MgdG8gV2luMzIgQVBJcyBvbiBDRSB3ZSBuZWVk
IHRvIGNvbnZlcnQgdGhlbQotICAvLyB0byAnVW5pY29kZScsIFVURi0xNi4KLQotICAvLyBDcmVh
dGVzIGEgVVRGLTE2IHdpZGUgc3RyaW5nIGZyb20gdGhlIGdpdmVuIEFOU0kgc3RyaW5nLCBhbGxv
Y2F0aW5nCi0gIC8vIG1lbW9yeSB1c2luZyBuZXcuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUg
Zm9yIGRlbGV0aW5nIHRoZSByZXR1cm4KLSAgLy8gdmFsdWUgdXNpbmcgZGVsZXRlW10uIFJldHVy
bnMgdGhlIHdpZGUgc3RyaW5nLCBvciBOVUxMIGlmIHRoZQotICAvLyBpbnB1dCBpcyBOVUxMLgot
ICAvLwotICAvLyBUaGUgd2lkZSBzdHJpbmcgaXMgY3JlYXRlZCB1c2luZyB0aGUgQU5TSSBjb2Rl
cGFnZSAoQ1BfQUNQKSB0bwotICAvLyBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBBTlNJIHZl
cnNpb25zIG9mIFdpbjMyIGNhbGxzIGFuZCB0aGUKLSAgLy8gQyBydW50aW1lLgotICBzdGF0aWMg
TFBDV1NUUiBBbnNpVG9VdGYxNihjb25zdCBjaGFyKiBjX3N0cik7Ci0KLSAgLy8gQ3JlYXRlcyBh
biBBTlNJIHN0cmluZyBmcm9tIHRoZSBnaXZlbiB3aWRlIHN0cmluZywgYWxsb2NhdGluZwotICAv
LyBtZW1vcnkgdXNpbmcgbmV3LiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGlu
ZyB0aGUgcmV0dXJuCi0gIC8vIHZhbHVlIHVzaW5nIGRlbGV0ZVtdLiBSZXR1cm5zIHRoZSBBTlNJ
IHN0cmluZywgb3IgTlVMTCBpZiB0aGUKLSAgLy8gaW5wdXQgaXMgTlVMTC4KLSAgLy8KLSAgLy8g
VGhlIHJldHVybmVkIHN0cmluZyBpcyBjcmVhdGVkIHVzaW5nIHRoZSBBTlNJIGNvZGVwYWdlIChD
UF9BQ1ApIHRvCi0gIC8vIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIEFOU0kgdmVyc2lvbnMg
b2YgV2luMzIgY2FsbHMgYW5kIHRoZQotICAvLyBDIHJ1bnRpbWUuCi0gIHN0YXRpYyBjb25zdCBj
aGFyKiBVdGYxNlRvQW5zaShMUENXU1RSIHV0ZjE2X3N0cik7Ci0jZW5kaWYKLQotICAvLyBDb21w
YXJlcyB0d28gQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUg
Y29udGVudC4KLSAgLy8KLSAgLy8gVW5saWtlIHN0cmNtcCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBo
YW5kbGUgTlVMTCBhcmd1bWVudChzKS4gIEEKLSAgLy8gTlVMTCBDIHN0cmluZyBpcyBjb25zaWRl
cmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwgQyBzdHJpbmcsCi0gIC8vIGluY2x1ZGluZyB0
aGUgZW1wdHkgc3RyaW5nLgotICBzdGF0aWMgYm9vbCBDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIq
IGxocywgY29uc3QgY2hhciogcmhzKTsKLQotICAvLyBDb252ZXJ0cyBhIHdpZGUgQyBzdHJpbmcg
dG8gYSBTdHJpbmcgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgotICAvLyBOVUxMIHdpbGwgYmUg
Y29udmVydGVkIHRvICIobnVsbCkiLiAgSWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nCi0gIC8v
IHRoZSBjb252ZXJzaW9uLCAiKGZhaWxlZCB0byBjb252ZXJ0IGZyb20gd2lkZSBzdHJpbmcpIiBp
cwotICAvLyByZXR1cm5lZC4KLSAgc3RhdGljIHN0ZDo6c3RyaW5nIFNob3dXaWRlQ1N0cmluZyhj
b25zdCB3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotICAvLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0
cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZQotICAvLyBjb250ZW50
LgotICAvLwotICAvLyBVbmxpa2Ugd2NzY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBO
VUxMIGFyZ3VtZW50KHMpLiAgQQotICAvLyBOVUxMIEMgc3RyaW5nIGlzIGNvbnNpZGVyZWQgZGlm
ZmVyZW50IHRvIGFueSBub24tTlVMTCBDIHN0cmluZywKLSAgLy8gaW5jbHVkaW5nIHRoZSBlbXB0
eSBzdHJpbmcuCi0gIHN0YXRpYyBib29sIFdpZGVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3Qq
IGxocywgY29uc3Qgd2NoYXJfdCogcmhzKTsKLQotICAvLyBDb21wYXJlcyB0d28gQyBzdHJpbmdz
LCBpZ25vcmluZyBjYXNlLiAgUmV0dXJucyB0cnVlIGlmZiB0aGV5Ci0gIC8vIGhhdmUgdGhlIHNh
bWUgY29udGVudC4KLSAgLy8KLSAgLy8gVW5saWtlIHN0cmNhc2VjbXAoKSwgdGhpcyBmdW5jdGlv
biBjYW4gaGFuZGxlIE5VTEwgYXJndW1lbnQocykuCi0gIC8vIEEgTlVMTCBDIHN0cmluZyBpcyBj
b25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwgQyBzdHJpbmcsCi0gIC8vIGluY2x1
ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgotICBzdGF0aWMgYm9vbCBDYXNlSW5zZW5zaXRpdmVDU3Ry
aW5nRXF1YWxzKGNvbnN0IGNoYXIqIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHMpOwotCi0gIC8vIENvbXBhcmVzIHR3byB3aWRl
IEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleQotICAvLyBo
YXZlIHRoZSBzYW1lIGNvbnRlbnQuCi0gIC8vCi0gIC8vIFVubGlrZSB3Y3NjYXNlY21wKCksIHRo
aXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50KHMpLgotICAvLyBBIE5VTEwgQyBz
dHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5vbi1OVUxMIHdpZGUgQyBzdHJp
bmcsCi0gIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgotICAvLyBOQjogVGhlIGltcGxl
bWVudGF0aW9ucyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zIHNsaWdodGx5IGRpZmZlci4KLSAgLy8g
T24gd2luZG93cywgdGhpcyBtZXRob2QgdXNlcyBfd2NzaWNtcCB3aGljaCBjb21wYXJlcyBhY2Nv
cmRpbmcgdG8gTENfQ1RZUEUKLSAgLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuIE9uIEdOVSBwbGF0
Zm9ybSB0aGlzIG1ldGhvZCB1c2VzIHdjc2Nhc2VjbXAKLSAgLy8gd2hpY2ggY29tcGFyZXMgYWNj
b3JkaW5nIHRvIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRoZSBjdXJyZW50IGxvY2FsZS4KLSAgLy8g
T24gTWFjT1MgWCwgaXQgdXNlcyB0b3dsb3dlciwgd2hpY2ggYWxzbyB1c2VzIExDX0NUWVBFIGNh
dGVnb3J5IG9mIHRoZQotICAvLyBjdXJyZW50IGxvY2FsZS4KLSAgc3RhdGljIGJvb2wgQ2FzZUlu
c2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoY29uc3Qgd2NoYXJfdCogbGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiByaHMp
OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBlbmRzIHdpdGggdGhl
IGdpdmVuIHN1ZmZpeCwgaWdub3JpbmcKLSAgLy8gY2FzZS4gQW55IHN0cmluZyBpcyBjb25zaWRl
cmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZpeC4KLSAgc3RhdGljIGJvb2wgRW5kc1dpdGhD
YXNlSW5zZW5zaXRpdmUoCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBzdGQ6
OnN0cmluZyYgc3VmZml4KTsKLQotICAvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJTAyZCIu
Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRJbnRXaWR0aDIoaW50IHZhbHVlKTsgIC8vICIl
MDJkIiBmb3Igd2lkdGggPT0gMgotCi0gIC8vIEZvcm1hdHMgYW4gaW50IHZhbHVlIGFzICIlWCIu
Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRIZXhJbnQoaW50IHZhbHVlKTsKLQotICAvLyBG
b3JtYXRzIGEgYnl0ZSBhcyAiJTAyWCIuCi0gIHN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRCeXRl
KHVuc2lnbmVkIGNoYXIgdmFsdWUpOwotCi0gcHJpdmF0ZToKLSAgU3RyaW5nKCk7ICAvLyBOb3Qg
bWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkLgotfTsgIC8vIGNsYXNzIFN0cmluZwotCi0vLyBHZXRz
IHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmdzdHJlYW0ncyBidWZmZXIgYXMgYW4gc3RkOjpzdHJp
bmcuICBFYWNoICdcMCcKLS8vIGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyIGlzIHJlcGxhY2VkIHdp
dGggIlxcMCIuCi1HVEVTVF9BUElfIHN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6
c3RkOjpzdHJpbmdzdHJlYW0qIHN0cmVhbSk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVz
dC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
OWI0MDUzNDBhODU1ZjYwMjU4YjEzNDAyNmJlN2IxMzYxMmViZTFlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMjAgKzAsMCBAQAot
Ly8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKLS8vICAgICBwdW1wLnB5IGd0
ZXN0LXR1cGxlLmgucHVtcAotLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQotCi0vLyBDb3B5cmln
aHQgMjAwOSBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEltcGxlbWVudHMgYSBzdWJzZXQgb2YgVFIxIHR1
cGxlIG5lZWRlZCBieSBHb29nbGUgVGVzdCBhbmQgR29vZ2xlIE1vY2suCi0KLSNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwotI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCi0KLSNpbmNsdWRlIDx1dGlsaXR5
PiAgLy8gRm9yIDo6c3RkOjpwYWlyLgotCi0vLyBUaGUgY29tcGlsZXIgdXNlZCBpbiBTeW1iaWFu
IGhhcyBhIGJ1ZyB0aGF0IHByZXZlbnRzIHVzIGZyb20gZGVjbGFyaW5nIHRoZQotLy8gdHVwbGUg
dGVtcGxhdGUgYXMgYSBmcmllbmQgKGl0IGNvbXBsYWlucyB0aGF0IHR1cGxlIGlzIHJlZGVmaW5l
ZCkuICBUaGlzCi0vLyBoYWNrIGJ5cGFzc2VzIHRoZSBidWcgYnkgZGVjbGFyaW5nIHRoZSBtZW1i
ZXJzIHRoYXQgc2hvdWxkIG90aGVyd2lzZSBiZQotLy8gcHJpdmF0ZSBhcyBwdWJsaWMuCi0vLyBT
dW4gU3R1ZGlvIHZlcnNpb25zIDwgMTIgYWxzbyBoYXZlIHRoZSBhYm92ZSBidWcuCi0jaWYgZGVm
aW5lZChfX1NZTUJJQU4zMl9fKSB8fCAoZGVmaW5lZChfX1NVTlBST19DQykgJiYgX19TVU5QUk9f
Q0MgPCAweDU5MCkKLSMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXyBwdWJs
aWM6Ci0jZWxzZQotIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIFwKLSAg
ICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4gZnJpZW5kIGNsYXNzIHR1cGxlOyBc
Ci0gICBwcml2YXRlOgotI2VuZGlmCi0KLS8vIFZpc3VhbCBTdHVkaW8gMjAxMCwgMjAxMiwgYW5k
IDIwMTMgZGVmaW5lIHN5bWJvbHMgaW4gc3RkOjp0cjEgdGhhdCBjb25mbGljdAotLy8gd2l0aCBv
dXIgb3duIGRlZmluaXRpb25zLiBUaGVyZWZvcmUgdXNpbmcgb3VyIG93biB0dXBsZSBkb2VzIG5v
dCB3b3JrIG9uCi0vLyB0aG9zZSBjb21waWxlcnMuCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPj0gMTYwMCAgLyogMTYwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMTAgKi8KLSMgZXJy
b3IgImd0ZXN0J3MgdHVwbGUgZG9lc24ndCBjb21waWxlIG9uIFZpc3VhbCBTdHVkaW8gMjAxMCBv
ciBsYXRlci4gXAotR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgbXVzdCBiZSBzZXQgdG8gMCBvbiB0
aG9zZSBjb21waWxlcnMuIgotI2VuZGlmCi0KLS8vIEdURVNUX25fVFVQTEVfKFQpIGlzIHRoZSB0
eXBlIG9mIGFuIG4tdHVwbGUuCi0jZGVmaW5lIEdURVNUXzBfVFVQTEVfKFQpIHR1cGxlPD4KLSNk
ZWZpbmUgR1RFU1RfMV9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9p
ZCwgdm9pZCwgdm9pZCwgXAotICAgIHZvaWQsIHZvaWQsIHZvaWQ+Ci0jZGVmaW5lIEdURVNUXzJf
VFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQsIHZvaWQs
IFwKLSAgICB2b2lkLCB2b2lkLCB2b2lkPgotI2RlZmluZSBHVEVTVF8zX1RVUExFXyhUKSB0dXBs
ZTxUIyMwLCBUIyMxLCBUIyMyLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCi0gICAgdm9pZCwg
dm9pZCwgdm9pZD4KLSNkZWZpbmUgR1RFU1RfNF9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgVCMjMSwg
VCMjMiwgVCMjMywgdm9pZCwgdm9pZCwgdm9pZCwgXAotICAgIHZvaWQsIHZvaWQsIHZvaWQ+Ci0j
ZGVmaW5lIEdURVNUXzVfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIFQjIzMsIFQj
IzQsIHZvaWQsIHZvaWQsIFwKLSAgICB2b2lkLCB2b2lkLCB2b2lkPgotI2RlZmluZSBHVEVTVF82
X1RVUExFXyhUKSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBUIyMzLCBUIyM0LCBUIyM1LCB2b2lk
LCBcCi0gICAgdm9pZCwgdm9pZCwgdm9pZD4KLSNkZWZpbmUgR1RFU1RfN19UVVBMRV8oVCkgdHVw
bGU8VCMjMCwgVCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgVCMjNSwgVCMjNiwgXAotICAgIHZvaWQs
IHZvaWQsIHZvaWQ+Ci0jZGVmaW5lIEdURVNUXzhfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEs
IFQjIzIsIFQjIzMsIFQjIzQsIFQjIzUsIFQjIzYsIFwKLSAgICBUIyM3LCB2b2lkLCB2b2lkPgot
I2RlZmluZSBHVEVTVF85X1RVUExFXyhUKSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBUIyMzLCBU
IyM0LCBUIyM1LCBUIyM2LCBcCi0gICAgVCMjNywgVCMjOCwgdm9pZD4KLSNkZWZpbmUgR1RFU1Rf
MTBfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIFQjIzMsIFQjIzQsIFQjIzUsIFQj
IzYsIFwKLSAgICBUIyM3LCBUIyM4LCBUIyM5PgotCi0vLyBHVEVTVF9uX1RZUEVOQU1FU18oVCkg
ZGVjbGFyZXMgYSBsaXN0IG9mIG4gdHlwZW5hbWVzLgotI2RlZmluZSBHVEVTVF8wX1RZUEVOQU1F
U18oVCkKLSNkZWZpbmUgR1RFU1RfMV9UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQjIzAKLSNkZWZp
bmUgR1RFU1RfMl9UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQjIzAsIHR5cGVuYW1lIFQjIzEKLSNk
ZWZpbmUgR1RFU1RfM19UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQjIzAsIHR5cGVuYW1lIFQjIzEs
IHR5cGVuYW1lIFQjIzIKLSNkZWZpbmUgR1RFU1RfNF9UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQj
IzAsIHR5cGVuYW1lIFQjIzEsIHR5cGVuYW1lIFQjIzIsIFwKLSAgICB0eXBlbmFtZSBUIyMzCi0j
ZGVmaW5lIEdURVNUXzVfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBUIyMx
LCB0eXBlbmFtZSBUIyMyLCBcCi0gICAgdHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNAotI2Rl
ZmluZSBHVEVTVF82X1RZUEVOQU1FU18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwg
dHlwZW5hbWUgVCMjMiwgXAotICAgIHR5cGVuYW1lIFQjIzMsIHR5cGVuYW1lIFQjIzQsIHR5cGVu
YW1lIFQjIzUKLSNkZWZpbmUgR1RFU1RfN19UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQjIzAsIHR5
cGVuYW1lIFQjIzEsIHR5cGVuYW1lIFQjIzIsIFwKLSAgICB0eXBlbmFtZSBUIyMzLCB0eXBlbmFt
ZSBUIyM0LCB0eXBlbmFtZSBUIyM1LCB0eXBlbmFtZSBUIyM2Ci0jZGVmaW5lIEdURVNUXzhfVFlQ
RU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBUIyMxLCB0eXBlbmFtZSBUIyMyLCBc
Ci0gICAgdHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNCwgdHlwZW5hbWUgVCMjNSwgdHlwZW5h
bWUgVCMjNiwgdHlwZW5hbWUgVCMjNwotI2RlZmluZSBHVEVTVF85X1RZUEVOQU1FU18oVCkgdHlw
ZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMiwgXAotICAgIHR5cGVuYW1l
IFQjIzMsIHR5cGVuYW1lIFQjIzQsIHR5cGVuYW1lIFQjIzUsIHR5cGVuYW1lIFQjIzYsIFwKLSAg
ICB0eXBlbmFtZSBUIyM3LCB0eXBlbmFtZSBUIyM4Ci0jZGVmaW5lIEdURVNUXzEwX1RZUEVOQU1F
U18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMiwgXAotICAg
IHR5cGVuYW1lIFQjIzMsIHR5cGVuYW1lIFQjIzQsIHR5cGVuYW1lIFQjIzUsIHR5cGVuYW1lIFQj
IzYsIFwKLSAgICB0eXBlbmFtZSBUIyM3LCB0eXBlbmFtZSBUIyM4LCB0eXBlbmFtZSBUIyM5Ci0K
LS8vIEluIHRoZW9yeSwgZGVmaW5pbmcgc3R1ZmYgaW4gdGhlIDo6c3RkIG5hbWVzcGFjZSBpcyB1
bmRlZmluZWQKLS8vIGJlaGF2aW9yLiAgV2UgY2FuIGRvIHRoaXMgYXMgd2UgYXJlIHBsYXlpbmcg
dGhlIHJvbGUgb2YgYSBzdGFuZGFyZAotLy8gbGlicmFyeSB2ZW5kb3IuCi1uYW1lc3BhY2Ugc3Rk
IHsKLW5hbWVzcGFjZSB0cjEgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDAgPSB2b2lkLCB0eXBl
bmFtZSBUMSA9IHZvaWQsIHR5cGVuYW1lIFQyID0gdm9pZCwKLSAgICB0eXBlbmFtZSBUMyA9IHZv
aWQsIHR5cGVuYW1lIFQ0ID0gdm9pZCwgdHlwZW5hbWUgVDUgPSB2b2lkLAotICAgIHR5cGVuYW1l
IFQ2ID0gdm9pZCwgdHlwZW5hbWUgVDcgPSB2b2lkLCB0eXBlbmFtZSBUOCA9IHZvaWQsCi0gICAg
dHlwZW5hbWUgVDkgPSB2b2lkPgotY2xhc3MgdHVwbGU7Ci0KLS8vIEFueXRoaW5nIGluIG5hbWVz
cGFjZSBndGVzdF9pbnRlcm5hbCBpcyBHb29nbGUgVGVzdCdzIElOVEVSTkFMCi0vLyBJTVBMRU1F
TlRBVElPTiBERVRBSUwgYW5kIE1VU1QgTk9UIEJFIFVTRUQgRElSRUNUTFkgaW4gdXNlciBjb2Rl
LgotbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKLQotLy8gQnlSZWY8VD46OnR5cGUgaXMgVCBp
ZiBUIGlzIGEgcmVmZXJlbmNlOyBvdGhlcndpc2UgaXQncyBjb25zdCBUJi4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotc3RydWN0IEJ5UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OyAgLy8g
Tk9MSU5UCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBCeVJlZjxUJj4geyB0eXBlZGVm
IFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3cmFwcGVyIGZvciBCeVJlZi4K
LSNkZWZpbmUgR1RFU1RfQllfUkVGXyhUKSB0eXBlbmFtZSA6OnN0ZDo6dHIxOjpndGVzdF9pbnRl
cm5hbDo6QnlSZWY8VD46OnR5cGUKLQotLy8gQWRkUmVmPFQ+Ojp0eXBlIGlzIFQgaWYgVCBpcyBh
IHJlZmVyZW5jZTsgb3RoZXJ3aXNlIGl0J3MgVCYuICBUaGlzCi0vLyBpcyB0aGUgc2FtZSBhcyB0
cjE6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBBZGRSZWYgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IEFkZFJlZjxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJ
TlQKLQotLy8gQSBoYW5keSB3cmFwcGVyIGZvciBBZGRSZWYuCi0jZGVmaW5lIEdURVNUX0FERF9S
RUZfKFQpIHR5cGVuYW1lIDo6c3RkOjp0cjE6Omd0ZXN0X2ludGVybmFsOjpBZGRSZWY8VD46OnR5
cGUKLQotLy8gQSBoZWxwZXIgZm9yIGltcGxlbWVudGluZyBnZXQ8az4oKS4KLXRlbXBsYXRlIDxp
bnQgaz4gY2xhc3MgR2V0OwotCi0vLyBBIGhlbHBlciBmb3IgaW1wbGVtZW50aW5nIHR1cGxlX2Vs
ZW1lbnQ8aywgVD4uICBrSW5kZXhWYWxpZCBpcyB0cnVlCi0vLyBpZmYgayA8IHRoZSBudW1iZXIg
b2YgZmllbGRzIGluIHR1cGxlIHR5cGUgVC4KLXRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBp
bnQga0luZGV4LCBjbGFzcyBUdXBsZT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ7Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAwLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDAgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAxLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAyLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCAzLCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA0LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA1LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA2LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA3LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA4LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDggdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVlLCA5LCBH
VEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVDkgdHlwZTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSBndGVzdF9pbnRlcm5hbAotCi10ZW1wbGF0ZSA8PgotY2xhc3MgdHVwbGU8PiB7Ci0g
cHVibGljOgotICB0dXBsZSgpIHt9Ci0gIHR1cGxlKGNvbnN0IHR1cGxlJiAvKiB0ICovKSAge30K
LSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgLyogdCAqLykgeyByZXR1cm4gKnRoaXM7
IH0KLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1jbGFzcyBHVEVTVF8x
X1RVUExFXyhUKSB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8aW50IGs+IGZyaWVuZCBjbGFzcyBn
dGVzdF9pbnRlcm5hbDo6R2V0OwotCi0gIHR1cGxlKCkgOiBmMF8oKSB7fQotCi0gIGV4cGxpY2l0
IHR1cGxlKEdURVNUX0JZX1JFRl8oVDApIGYwKSA6IGYwXyhmMCkge30KLQotICB0dXBsZShjb25z
dCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pIHt9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5B
TUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfMV9UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBf
KSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlG
cm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUm
IG9wZXJhdG9yPShjb25zdCBHVEVTVF8xX1RVUExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5
RnJvbSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotCi0gIHRl
bXBsYXRlIDxHVEVTVF8xX1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5RnJvbShjb25zdCBH
VEVTVF8xX1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIHJldHVybiAqdGhp
czsKLSAgfQotCi0gIFQwIGYwXzsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18o
VCk+Ci1jbGFzcyBHVEVTVF8yX1RVUExFXyhUKSB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8aW50
IGs+IGZyaWVuZCBjbGFzcyBndGVzdF9pbnRlcm5hbDo6R2V0OwotCi0gIHR1cGxlKCkgOiBmMF8o
KSwgZjFfKCkge30KLQotICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RF
U1RfQllfUkVGXyhUMSkgZjEpIDogZjBfKGYwKSwKLSAgICAgIGYxXyhmMSkge30KLQotICB0dXBs
ZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pIHt9Ci0KLSAgdGVtcGxh
dGUgPEdURVNUXzJfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfMl9UVVBMRV8o
VSkmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VTAsIHR5cGVuYW1lIFUxPgotICB0dXBsZShjb25zdCA6OnN0ZDo6cGFpcjxVMCwgVTE+JiBwKSA6
IGYwXyhwLmZpcnN0KSwgZjFfKHAuc2Vjb25kKSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29u
c3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNU
XzJfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBHVEVTVF8yX1RVUExF
XyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5RnJvbSh0KTsKLSAgfQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IDo6c3RkOjpw
YWlyPFUwLCBVMT4mIHApIHsKLSAgICBmMF8gPSBwLmZpcnN0OwotICAgIGYxXyA9IHAuc2Vjb25k
OwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJ
RU5EXwotCi0gIHRlbXBsYXRlIDxHVEVTVF8yX1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5
RnJvbShjb25zdCBHVEVTVF8yX1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAg
IGYxXyA9IHQuZjFfOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIFQwIGYwXzsKLSAgVDEg
ZjFfOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIEdURVNU
XzNfVFVQTEVfKFQpIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNz
IGd0ZXN0X2ludGVybmFsOjpHZXQ7Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSwgZjJfKCkg
e30KLQotICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1RfQllfUkVG
XyhUMSkgZjEsCi0gICAgICBHVEVTVF9CWV9SRUZfKFQyKSBmMikgOiBmMF8oZjApLCBmMV8oZjEp
LCBmMl8oZjIpIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogZjBfKHQuZjBfKSwgZjFf
KHQuZjFfKSwgZjJfKHQuZjJfKSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18o
VSk+Ci0gIHR1cGxlKGNvbnN0IEdURVNUXzNfVFVQTEVfKFUpJiB0KSA6IGYwXyh0LmYwXyksIGYx
Xyh0LmYxXyksIGYyXyh0LmYyXykge30KLQotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxl
JiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQotCi0gIHRlbXBsYXRlIDxHVEVTVF8zX1RZUEVO
QU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfM19UVVBMRV8oVSkmIHQp
IHsKLSAgICByZXR1cm4gQ29weUZyb20odCk7Ci0gIH0KLQotICBHVEVTVF9ERUNMQVJFX1RVUExF
X0FTX0ZSSUVORF8KLQotICB0ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFUpPgotICB0dXBs
ZSYgQ29weUZyb20oY29uc3QgR1RFU1RfM19UVVBMRV8oVSkmIHQpIHsKLSAgICBmMF8gPSB0LmYw
XzsKLSAgICBmMV8gPSB0LmYxXzsKLSAgICBmMl8gPSB0LmYyXzsKLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KLQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIgZjJfOwotfTsKLQotdGVtcGxhdGUg
PEdURVNUXzRfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIEdURVNUXzRfVFVQTEVfKFQpIHsKLSBwdWJs
aWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7
Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSwgZjJfKCksIGYzXygpIHt9Ci0KLSAgZXhwbGlj
aXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JFRl8oVDEpIGYxLAotICAg
ICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMpIGYzKSA6IGYwXyhmMCks
IGYxXyhmMSksIGYyXyhmMiksCi0gICAgICBmM18oZjMpIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVw
bGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNfKSB7
fQotCi0gIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlKGNvbnN0IEdU
RVNUXzRfVFVQTEVfKFUpJiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyks
Ci0gICAgICBmM18odC5mM18pIHt9Ci0KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYg
dCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KLQotICB0ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFN
RVNfKFUpPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNUXzRfVFVQTEVfKFUpJiB0KSB7
Ci0gICAgcmV0dXJuIENvcHlGcm9tKHQpOwotICB9Ci0KLSAgR1RFU1RfREVDTEFSRV9UVVBMRV9B
U19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdURVNUXzRfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUm
IENvcHlGcm9tKGNvbnN0IEdURVNUXzRfVFVQTEVfKFUpJiB0KSB7Ci0gICAgZjBfID0gdC5mMF87
Ci0gICAgZjFfID0gdC5mMV87Ci0gICAgZjJfID0gdC5mMl87Ci0gICAgZjNfID0gdC5mM187Ci0g
ICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgVDAgZjBfOwotICBUMSBmMV87Ci0gIFQyIGYyXzsK
LSAgVDMgZjNfOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhUKT4KLWNsYXNz
IEdURVNUXzVfVFVQTEVfKFQpIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5k
IGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSwg
ZjJfKCksIGYzXygpLCBmNF8oKSB7fQotCi0gIGV4cGxpY2l0IHR1cGxlKEdURVNUX0JZX1JFRl8o
VDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKLSAgICAgIEdURVNUX0JZX1JFRl8oVDIpIGYy
LCBHVEVTVF9CWV9SRUZfKFQzKSBmMywKLSAgICAgIEdURVNUX0JZX1JFRl8oVDQpIGY0KSA6IGYw
XyhmMCksIGYxXyhmMSksIGYyXyhmMiksIGYzXyhmMyksIGY0XyhmNCkge30KLQotICB0dXBsZShj
b25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pLCBmM18o
dC5mM18pLAotICAgICAgZjRfKHQuZjRfKSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF81X1RZUEVO
QU1FU18oVSk+Ci0gIHR1cGxlKGNvbnN0IEdURVNUXzVfVFVQTEVfKFUpJiB0KSA6IGYwXyh0LmYw
XyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksCi0gICAgICBmM18odC5mM18pLCBmNF8odC5mNF8p
IHt9Ci0KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZy
b20odCk7IH0KLQotICB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFUpPgotICB0dXBsZSYg
b3BlcmF0b3I9KGNvbnN0IEdURVNUXzVfVFVQTEVfKFUpJiB0KSB7Ci0gICAgcmV0dXJuIENvcHlG
cm9tKHQpOwotICB9Ci0KLSAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVt
cGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdU
RVNUXzVfVFVQTEVfKFUpJiB0KSB7Ci0gICAgZjBfID0gdC5mMF87Ci0gICAgZjFfID0gdC5mMV87
Ci0gICAgZjJfID0gdC5mMl87Ci0gICAgZjNfID0gdC5mM187Ci0gICAgZjRfID0gdC5mNF87Ci0g
ICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgVDAgZjBfOwotICBUMSBmMV87Ci0gIFQyIGYyXzsK
LSAgVDMgZjNfOwotICBUNCBmNF87Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNf
KFQpPgotY2xhc3MgR1RFU1RfNl9UVVBMRV8oVCkgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGlu
dCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKLQotICB0dXBsZSgpIDogZjBf
KCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBmNV8oKSB7fQotCi0gIGV4cGxpY2l0IHR1
cGxlKEdURVNUX0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKLSAgICAgIEdU
RVNUX0JZX1JFRl8oVDIpIGYyLCBHVEVTVF9CWV9SRUZfKFQzKSBmMywgR1RFU1RfQllfUkVGXyhU
NCkgZjQsCi0gICAgICBHVEVTVF9CWV9SRUZfKFQ1KSBmNSkgOiBmMF8oZjApLCBmMV8oZjEpLCBm
Ml8oZjIpLCBmM18oZjMpLCBmNF8oZjQpLAotICAgICAgZjVfKGY1KSB7fQotCi0gIHR1cGxlKGNv
bnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksIGYzXyh0
LmYzXyksCi0gICAgICBmNF8odC5mNF8pLCBmNV8odC5mNV8pIHt9Ci0KLSAgdGVtcGxhdGUgPEdU
RVNUXzZfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfNl9UVVBMRV8oVSkmIHQp
IDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwKLSAgICAgIGYzXyh0LmYzXyks
IGY0Xyh0LmY0XyksIGY1Xyh0LmY1Xykge30KLQotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1
cGxlJiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQotCi0gIHRlbXBsYXRlIDxHVEVTVF82X1RZ
UEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfNl9UVVBMRV8oVSkm
IHQpIHsKLSAgICByZXR1cm4gQ29weUZyb20odCk7Ci0gIH0KLQotICBHVEVTVF9ERUNMQVJFX1RV
UExFX0FTX0ZSSUVORF8KLQotICB0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNfKFUpPgotICB0
dXBsZSYgQ29weUZyb20oY29uc3QgR1RFU1RfNl9UVVBMRV8oVSkmIHQpIHsKLSAgICBmMF8gPSB0
LmYwXzsKLSAgICBmMV8gPSB0LmYxXzsKLSAgICBmMl8gPSB0LmYyXzsKLSAgICBmM18gPSB0LmYz
XzsKLSAgICBmNF8gPSB0LmY0XzsKLSAgICBmNV8gPSB0LmY1XzsKLSAgICByZXR1cm4gKnRoaXM7
Ci0gIH0KLQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIgZjJfOwotICBUMyBmM187Ci0gIFQ0
IGY0XzsKLSAgVDUgZjVfOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4K
LWNsYXNzIEdURVNUXzdfVFVQTEVfKFQpIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4g
ZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBm
MV8oKSwgZjJfKCksIGYzXygpLCBmNF8oKSwgZjVfKCksIGY2XygpIHt9Ci0KLSAgZXhwbGljaXQg
dHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JFRl8oVDEpIGYxLAotICAgICAg
R1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMpIGYzLCBHVEVTVF9CWV9SRUZf
KFQ0KSBmNCwKLSAgICAgIEdURVNUX0JZX1JFRl8oVDUpIGY1LCBHVEVTVF9CWV9SRUZfKFQ2KSBm
NikgOiBmMF8oZjApLCBmMV8oZjEpLCBmMl8oZjIpLAotICAgICAgZjNfKGYzKSwgZjRfKGY0KSwg
ZjVfKGY1KSwgZjZfKGY2KSB7fQotCi0gIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYw
XyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksIGYzXyh0LmYzXyksCi0gICAgICBmNF8odC5mNF8p
LCBmNV8odC5mNV8pLCBmNl8odC5mNl8pIHt9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5B
TUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfN19UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBf
KSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwKLSAgICAgIGYzXyh0LmYzXyksIGY0Xyh0LmY0Xyks
IGY1Xyh0LmY1XyksIGY2Xyh0LmY2Xykge30KLQotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1
cGxlJiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQotCi0gIHRlbXBsYXRlIDxHVEVTVF83X1RZ
UEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfN19UVVBMRV8oVSkm
IHQpIHsKLSAgICByZXR1cm4gQ29weUZyb20odCk7Ci0gIH0KLQotICBHVEVTVF9ERUNMQVJFX1RV
UExFX0FTX0ZSSUVORF8KLQotICB0ZW1wbGF0ZSA8R1RFU1RfN19UWVBFTkFNRVNfKFUpPgotICB0
dXBsZSYgQ29weUZyb20oY29uc3QgR1RFU1RfN19UVVBMRV8oVSkmIHQpIHsKLSAgICBmMF8gPSB0
LmYwXzsKLSAgICBmMV8gPSB0LmYxXzsKLSAgICBmMl8gPSB0LmYyXzsKLSAgICBmM18gPSB0LmYz
XzsKLSAgICBmNF8gPSB0LmY0XzsKLSAgICBmNV8gPSB0LmY1XzsKLSAgICBmNl8gPSB0LmY2XzsK
LSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIgZjJf
OwotICBUMyBmM187Ci0gIFQ0IGY0XzsKLSAgVDUgZjVfOwotICBUNiBmNl87Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotY2xhc3MgR1RFU1RfOF9UVVBMRV8oVCkgewot
IHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6
OkdldDsKLQotICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBm
NV8oKSwgZjZfKCksIGY3XygpIHt9Ci0KLSAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhU
MCkgZjAsIEdURVNUX0JZX1JFRl8oVDEpIGYxLAotICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIs
IEdURVNUX0JZX1JFRl8oVDMpIGYzLCBHVEVTVF9CWV9SRUZfKFQ0KSBmNCwKLSAgICAgIEdURVNU
X0JZX1JFRl8oVDUpIGY1LCBHVEVTVF9CWV9SRUZfKFQ2KSBmNiwKLSAgICAgIEdURVNUX0JZX1JF
Rl8oVDcpIGY3KSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMiksIGYzXyhmMyksIGY0XyhmNCks
Ci0gICAgICBmNV8oZjUpLCBmNl8oZjYpLCBmN18oZjcpIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVw
bGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNfKSwK
LSAgICAgIGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2XyksIGY3Xyh0LmY3Xykge30K
LQotICB0ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFUpPgotICB0dXBsZShjb25zdCBHVEVT
VF84X1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pLAot
ICAgICAgZjNfKHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZfKSwgZjdf
KHQuZjdfKSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJu
IENvcHlGcm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzhfVFlQRU5BTUVTXyhVKT4KLSAg
dHVwbGUmIG9wZXJhdG9yPShjb25zdCBHVEVTVF84X1RVUExFXyhVKSYgdCkgewotICAgIHJldHVy
biBDb3B5RnJvbSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwot
Ci0gIHRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5RnJvbShj
b25zdCBHVEVTVF84X1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIGYxXyA9
IHQuZjFfOwotICAgIGYyXyA9IHQuZjJfOwotICAgIGYzXyA9IHQuZjNfOwotICAgIGY0XyA9IHQu
ZjRfOwotICAgIGY1XyA9IHQuZjVfOwotICAgIGY2XyA9IHQuZjZfOwotICAgIGY3XyA9IHQuZjdf
OwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIFQwIGYwXzsKLSAgVDEgZjFfOwotICBUMiBm
Ml87Ci0gIFQzIGYzXzsKLSAgVDQgZjRfOwotICBUNSBmNV87Ci0gIFQ2IGY2XzsKLSAgVDcgZjdf
OwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzlfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIEdURVNUXzlf
VFVQTEVfKFQpIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0
ZXN0X2ludGVybmFsOjpHZXQ7Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSwgZjJfKCksIGYz
XygpLCBmNF8oKSwgZjVfKCksIGY2XygpLCBmN18oKSwgZjhfKCkge30KLQotICBleHBsaWNpdCB0
dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1RfQllfUkVGXyhUMSkgZjEsCi0gICAgICBH
VEVTVF9CWV9SRUZfKFQyKSBmMiwgR1RFU1RfQllfUkVGXyhUMykgZjMsIEdURVNUX0JZX1JFRl8o
VDQpIGY0LAotICAgICAgR1RFU1RfQllfUkVGXyhUNSkgZjUsIEdURVNUX0JZX1JFRl8oVDYpIGY2
LCBHVEVTVF9CWV9SRUZfKFQ3KSBmNywKLSAgICAgIEdURVNUX0JZX1JFRl8oVDgpIGY4KSA6IGYw
XyhmMCksIGYxXyhmMSksIGYyXyhmMiksIGYzXyhmMyksIGY0XyhmNCksCi0gICAgICBmNV8oZjUp
LCBmNl8oZjYpLCBmN18oZjcpLCBmOF8oZjgpIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVwbGUmIHQp
IDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNfKSwKLSAgICAg
IGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2XyksIGY3Xyh0LmY3XyksIGY4Xyh0LmY4
Xykge30KLQotICB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFUpPgotICB0dXBsZShjb25z
dCBHVEVTVF85X1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5m
Ml8pLAotICAgICAgZjNfKHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZf
KSwgZjdfKHQuZjdfKSwgZjhfKHQuZjhfKSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3Qg
dHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzlf
VFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBHVEVTVF85X1RVUExFXyhV
KSYgdCkgewotICAgIHJldHVybiBDb3B5RnJvbSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVf
VFVQTEVfQVNfRlJJRU5EXwotCi0gIHRlbXBsYXRlIDxHVEVTVF85X1RZUEVOQU1FU18oVSk+Ci0g
IHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF85X1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9
IHQuZjBfOwotICAgIGYxXyA9IHQuZjFfOwotICAgIGYyXyA9IHQuZjJfOwotICAgIGYzXyA9IHQu
ZjNfOwotICAgIGY0XyA9IHQuZjRfOwotICAgIGY1XyA9IHQuZjVfOwotICAgIGY2XyA9IHQuZjZf
OwotICAgIGY3XyA9IHQuZjdfOwotICAgIGY4XyA9IHQuZjhfOwotICAgIHJldHVybiAqdGhpczsK
LSAgfQotCi0gIFQwIGYwXzsKLSAgVDEgZjFfOwotICBUMiBmMl87Ci0gIFQzIGYzXzsKLSAgVDQg
ZjRfOwotICBUNSBmNV87Ci0gIFQ2IGY2XzsKLSAgVDcgZjdfOwotICBUOCBmOF87Ci19OwotCi10
ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIHR1cGxlIHsKLSBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7Ci0K
LSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSwgZjJfKCksIGYzXygpLCBmNF8oKSwgZjVfKCksIGY2
XygpLCBmN18oKSwgZjhfKCksCi0gICAgICBmOV8oKSB7fQotCi0gIGV4cGxpY2l0IHR1cGxlKEdU
RVNUX0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKLSAgICAgIEdURVNUX0JZ
X1JFRl8oVDIpIGYyLCBHVEVTVF9CWV9SRUZfKFQzKSBmMywgR1RFU1RfQllfUkVGXyhUNCkgZjQs
Ci0gICAgICBHVEVTVF9CWV9SRUZfKFQ1KSBmNSwgR1RFU1RfQllfUkVGXyhUNikgZjYsIEdURVNU
X0JZX1JFRl8oVDcpIGY3LAotICAgICAgR1RFU1RfQllfUkVGXyhUOCkgZjgsIEdURVNUX0JZX1JF
Rl8oVDkpIGY5KSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMiksCi0gICAgICBmM18oZjMpLCBm
NF8oZjQpLCBmNV8oZjUpLCBmNl8oZjYpLCBmN18oZjcpLCBmOF8oZjgpLCBmOV8oZjkpIHt9Ci0K
LSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQu
ZjJfKSwgZjNfKHQuZjNfKSwKLSAgICAgIGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2
XyksIGY3Xyh0LmY3XyksIGY4Xyh0LmY4XyksIGY5Xyh0LmY5Xykge30KLQotICB0ZW1wbGF0ZSA8
R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfMTBfVFVQTEVfKFUp
JiB0KSA6IGYwXyh0LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksCi0gICAgICBmM18odC5m
M18pLCBmNF8odC5mNF8pLCBmNV8odC5mNV8pLCBmNl8odC5mNl8pLCBmN18odC5mN18pLCBmOF8o
dC5mOF8pLAotICAgICAgZjlfKHQuZjlfKSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3Qg
dHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzEw
X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1RfMTBfVFVQTEVf
KFUpJiB0KSB7Ci0gICAgcmV0dXJuIENvcHlGcm9tKHQpOwotICB9Ci0KLSAgR1RFU1RfREVDTEFS
RV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVSk+
Ci0gIHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHQpIHsKLSAgICBm
MF8gPSB0LmYwXzsKLSAgICBmMV8gPSB0LmYxXzsKLSAgICBmMl8gPSB0LmYyXzsKLSAgICBmM18g
PSB0LmYzXzsKLSAgICBmNF8gPSB0LmY0XzsKLSAgICBmNV8gPSB0LmY1XzsKLSAgICBmNl8gPSB0
LmY2XzsKLSAgICBmN18gPSB0LmY3XzsKLSAgICBmOF8gPSB0LmY4XzsKLSAgICBmOV8gPSB0LmY5
XzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIg
ZjJfOwotICBUMyBmM187Ci0gIFQ0IGY0XzsKLSAgVDUgZjVfOwotICBUNiBmNl87Ci0gIFQ3IGY3
XzsKLSAgVDggZjhfOwotICBUOSBmOV87Ci19OwotCi0vLyA2LjEuMy4yIFR1cGxlIGNyZWF0aW9u
IGZ1bmN0aW9ucy4KLQotLy8gS25vd24gbGltaXRhdGlvbnM6IHdlIGRvbid0IHN1cHBvcnQgcGFz
c2luZyBhbgotLy8gc3RkOjp0cjE6OnJlZmVyZW5jZV93cmFwcGVyPFQ+IHRvIG1ha2VfdHVwbGUo
KS4gIEFuZCB3ZSBkb24ndAotLy8gaW1wbGVtZW50IHRpZSgpLgotCi1pbmxpbmUgdHVwbGU8PiBt
YWtlX3R1cGxlKCkgeyByZXR1cm4gdHVwbGU8PigpOyB9Ci0KLXRlbXBsYXRlIDxHVEVTVF8xX1RZ
UEVOQU1FU18oVCk+Ci1pbmxpbmUgR1RFU1RfMV9UVVBMRV8oVCkgbWFrZV90dXBsZShjb25zdCBU
MCYgZjApIHsKLSAgcmV0dXJuIEdURVNUXzFfVFVQTEVfKFQpKGYwKTsKLX0KLQotdGVtcGxhdGUg
PEdURVNUXzJfVFlQRU5BTUVTXyhUKT4KLWlubGluZSBHVEVTVF8yX1RVUExFXyhUKSBtYWtlX3R1
cGxlKGNvbnN0IFQwJiBmMCwgY29uc3QgVDEmIGYxKSB7Ci0gIHJldHVybiBHVEVTVF8yX1RVUExF
XyhUKShmMCwgZjEpOwotfQotCi10ZW1wbGF0ZSA8R1RFU1RfM19UWVBFTkFNRVNfKFQpPgotaW5s
aW5lIEdURVNUXzNfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYg
ZjEsIGNvbnN0IFQyJiBmMikgewotICByZXR1cm4gR1RFU1RfM19UVVBMRV8oVCkoZjAsIGYxLCBm
Mik7Ci19Ci0KLXRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVCk+Ci1pbmxpbmUgR1RFU1Rf
NF9UVVBMRV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3Qg
VDImIGYyLAotICAgIGNvbnN0IFQzJiBmMykgewotICByZXR1cm4gR1RFU1RfNF9UVVBMRV8oVCko
ZjAsIGYxLCBmMiwgZjMpOwotfQotCi10ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFQpPgot
aW5saW5lIEdURVNUXzVfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBU
MSYgZjEsIGNvbnN0IFQyJiBmMiwKLSAgICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0JiBmNCkgewot
ICByZXR1cm4gR1RFU1RfNV9UVVBMRV8oVCkoZjAsIGYxLCBmMiwgZjMsIGY0KTsKLX0KLQotdGVt
cGxhdGUgPEdURVNUXzZfVFlQRU5BTUVTXyhUKT4KLWlubGluZSBHVEVTVF82X1RVUExFXyhUKSBt
YWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwgY29uc3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCi0gICAg
Y29uc3QgVDMmIGYzLCBjb25zdCBUNCYgZjQsIGNvbnN0IFQ1JiBmNSkgewotICByZXR1cm4gR1RF
U1RfNl9UVVBMRV8oVCkoZjAsIGYxLCBmMiwgZjMsIGY0LCBmNSk7Ci19Ci0KLXRlbXBsYXRlIDxH
VEVTVF83X1RZUEVOQU1FU18oVCk+Ci1pbmxpbmUgR1RFU1RfN19UVVBMRV8oVCkgbWFrZV90dXBs
ZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAotICAgIGNvbnN0IFQz
JiBmMywgY29uc3QgVDQmIGY0LCBjb25zdCBUNSYgZjUsIGNvbnN0IFQ2JiBmNikgewotICByZXR1
cm4gR1RFU1RfN19UVVBMRV8oVCkoZjAsIGYxLCBmMiwgZjMsIGY0LCBmNSwgZjYpOwotfQotCi10
ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotaW5saW5lIEdURVNUXzhfVFVQTEVfKFQp
IG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKLSAg
ICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0JiBmNCwgY29uc3QgVDUmIGY1LCBjb25zdCBUNiYgZjYs
IGNvbnN0IFQ3JiBmNykgewotICByZXR1cm4gR1RFU1RfOF9UVVBMRV8oVCkoZjAsIGYxLCBmMiwg
ZjMsIGY0LCBmNSwgZjYsIGY3KTsKLX0KLQotdGVtcGxhdGUgPEdURVNUXzlfVFlQRU5BTUVTXyhU
KT4KLWlubGluZSBHVEVTVF85X1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwgY29u
c3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCi0gICAgY29uc3QgVDMmIGYzLCBjb25zdCBUNCYgZjQs
IGNvbnN0IFQ1JiBmNSwgY29uc3QgVDYmIGY2LCBjb25zdCBUNyYgZjcsCi0gICAgY29uc3QgVDgm
IGY4KSB7Ci0gIHJldHVybiBHVEVTVF85X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMywgZjQsIGY1
LCBmNiwgZjcsIGY4KTsKLX0KLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1p
bmxpbmUgR1RFU1RfMTBfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBU
MSYgZjEsIGNvbnN0IFQyJiBmMiwKLSAgICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0JiBmNCwgY29u
c3QgVDUmIGY1LCBjb25zdCBUNiYgZjYsIGNvbnN0IFQ3JiBmNywKLSAgICBjb25zdCBUOCYgZjgs
IGNvbnN0IFQ5JiBmOSkgewotICByZXR1cm4gR1RFU1RfMTBfVFVQTEVfKFQpKGYwLCBmMSwgZjIs
IGYzLCBmNCwgZjUsIGY2LCBmNywgZjgsIGY5KTsKLX0KLQotLy8gNi4xLjMuMyBUdXBsZSBoZWxw
ZXIgY2xhc3Nlcy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPiBzdHJ1Y3QgdHVwbGVfc2l6
ZTsKLQotdGVtcGxhdGUgPEdURVNUXzBfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXpl
PEdURVNUXzBfVFVQTEVfKFQpID4gewotICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMDsKLX07
Ci0KLXRlbXBsYXRlIDxHVEVTVF8xX1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxH
VEVTVF8xX1RVUExFXyhUKSA+IHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDE7Ci19Owot
Ci10ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RF
U1RfMl9UVVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAyOwotfTsKLQot
dGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNU
XzNfVFVQTEVfKFQpID4gewotICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMzsKLX07Ci0KLXRl
bXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF80
X1RVUExFXyhUKSA+IHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDQ7Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNV9U
VVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA1OwotfTsKLQotdGVtcGxh
dGUgPEdURVNUXzZfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzZfVFVQ
TEVfKFQpID4gewotICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNjsKLX07Ci0KLXRlbXBsYXRl
IDxHVEVTVF83X1RZUEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF83X1RVUExF
XyhUKSA+IHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDc7Ci19OwotCi10ZW1wbGF0ZSA8
R1RFU1RfOF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOF9UVVBMRV8o
VCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSA4OwotfTsKLQotdGVtcGxhdGUgPEdU
RVNUXzlfVFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzlfVFVQTEVfKFQp
ID4gewotICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gOTsKLX07Ci0KLXRlbXBsYXRlIDxHVEVT
VF8xMF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQp
ID4gewotICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTA7Ci19OwotCi10ZW1wbGF0ZSA8aW50
IGssIGNsYXNzIFR1cGxlPgotc3RydWN0IHR1cGxlX2VsZW1lbnQgewotICB0eXBlZGVmIHR5cGVu
YW1lIGd0ZXN0X2ludGVybmFsOjpUdXBsZUVsZW1lbnQ8Ci0gICAgICBrIDwgKHR1cGxlX3NpemU8
VHVwbGU+Ojp2YWx1ZSksIGssIFR1cGxlPjo6dHlwZSB0eXBlOwotfTsKLQotI2RlZmluZSBHVEVT
VF9UVVBMRV9FTEVNRU5UXyhrLCBUdXBsZSkgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxrLCBUdXBs
ZSA+Ojp0eXBlCi0KLS8vIDYuMS4zLjQgRWxlbWVudCBhY2Nlc3MuCi0KLW5hbWVzcGFjZSBndGVz
dF9pbnRlcm5hbCB7Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBHZXQ8MD4gewotIHB1YmxpYzoKLSAg
dGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQ
TEVfRUxFTUVOVF8oMCwgVHVwbGUpKQotICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mMF87
IH0gIC8vIE5PTElOVAotCi0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNU
X0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMCwgVHVwbGUpKQotICBDb25zdEZpZWxkKGNv
bnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmYwXzsgfQotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNz
IEdldDwxPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBH
VEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygxLCBUdXBsZSkpCi0gIEZpZWxkKFR1
cGxlJiB0KSB7IHJldHVybiB0LmYxXzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNz
IFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygxLCBU
dXBsZSkpCi0gIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjFfOyB9Ci19
OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR2V0PDI+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxj
bGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRf
KDIsIFR1cGxlKSkKLSAgRmllbGQoVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjJfOyB9ICAvLyBOT0xJ
TlQKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9CWV9SRUZfKEdU
RVNUX1RVUExFX0VMRU1FTlRfKDIsIFR1cGxlKSkKLSAgQ29uc3RGaWVsZChjb25zdCBUdXBsZSYg
dCkgeyByZXR1cm4gdC5mMl87IH0KLX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBHZXQ8Mz4gewot
IHB1YmxpYzoKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQUREX1JF
Rl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMywgVHVwbGUpKQotICBGaWVsZChUdXBsZSYgdCkgeyBy
ZXR1cm4gdC5mM187IH0gIC8vIE5PTElOVAotCi0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAg
c3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMywgVHVwbGUpKQotICBD
b25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmYzXzsgfQotfTsKLQotdGVtcGxh
dGUgPD4KLWNsYXNzIEdldDw0PiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+
Ci0gIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg0LCBUdXBsZSkp
Ci0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmY0XzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVt
cGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9F
TEVNRU5UXyg0LCBUdXBsZSkpCi0gIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJu
IHQuZjRfOyB9Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR2V0PDU+IHsKLSBwdWJsaWM6Ci0g
IHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RV
UExFX0VMRU1FTlRfKDUsIFR1cGxlKSkKLSAgRmllbGQoVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjVf
OyB9ICAvLyBOT0xJTlQKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVT
VF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDUsIFR1cGxlKSkKLSAgQ29uc3RGaWVsZChj
b25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mNV87IH0KLX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFz
cyBHZXQ8Nj4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMg
R1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oNiwgVHVwbGUpKQotICBGaWVsZChU
dXBsZSYgdCkgeyByZXR1cm4gdC5mNl87IH0gIC8vIE5PTElOVAotCi0gIHRlbXBsYXRlIDxjbGFz
cyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oNiwg
VHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmY2XzsgfQot
fTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIEdldDw3PiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5U
Xyg3LCBUdXBsZSkpCi0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmY3XzsgfSAgLy8gTk9M
SU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhH
VEVTVF9UVVBMRV9FTEVNRU5UXyg3LCBUdXBsZSkpCi0gIENvbnN0RmllbGQoY29uc3QgVHVwbGUm
IHQpIHsgcmV0dXJuIHQuZjdfOyB9Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR2V0PDg+IHsK
LSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9S
RUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDgsIFR1cGxlKSkKLSAgRmllbGQoVHVwbGUmIHQpIHsg
cmV0dXJuIHQuZjhfOyB9ICAvLyBOT0xJTlQKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0g
IHN0YXRpYyBHVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDgsIFR1cGxlKSkKLSAg
Q29uc3RGaWVsZChjb25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mOF87IH0KLX07Ci0KLXRlbXBs
YXRlIDw+Ci1jbGFzcyBHZXQ8OT4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxl
PgotICBzdGF0aWMgR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oOSwgVHVwbGUp
KQotICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mOV87IH0gIC8vIE5PTElOVAotCi0gIHRl
bXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVf
RUxFTUVOVF8oOSwgVHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVy
biB0LmY5XzsgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsCi0KLXRlbXBs
YXRlIDxpbnQgaywgR1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLUdURVNUX0FERF9SRUZfKEdURVNU
X1RVUExFX0VMRU1FTlRfKGssIEdURVNUXzEwX1RVUExFXyhUKSkpCi1nZXQoR1RFU1RfMTBfVFVQ
TEVfKFQpJiB0KSB7Ci0gIHJldHVybiBndGVzdF9pbnRlcm5hbDo6R2V0PGs+OjpGaWVsZCh0KTsK
LX0KLQotdGVtcGxhdGUgPGludCBrLCBHVEVTVF8xMF9UWVBFTkFNRVNfKFQpPgotR1RFU1RfQllf
UkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyhrLCAgR1RFU1RfMTBfVFVQTEVfKFQpKSkKLWdldChj
b25zdCBHVEVTVF8xMF9UVVBMRV8oVCkmIHQpIHsKLSAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpH
ZXQ8az46OkNvbnN0RmllbGQodCk7Ci19Ci0KLS8vIDYuMS4zLjUgUmVsYXRpb25hbCBvcGVyYXRv
cnMKLQotLy8gV2Ugb25seSBpbXBsZW1lbnQgPT0gYW5kICE9LCBhcyB3ZSBkb24ndCBoYXZlIGEg
bmVlZCBmb3IgdGhlIHJlc3QgeWV0LgotCi1uYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwgewotCi0v
LyBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPjo6RXEodDEsIHQyKSByZXR1cm5z
IHRydWUgaWYgdGhlCi0vLyBmaXJzdCBrIGZpZWxkcyBvZiB0MSBlcXVhbHMgdGhlIGZpcnN0IGsg
ZmllbGRzIG9mIHQyLgotLy8gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3IoazEsIGsyKSB3
b3VsZCBiZSBhIGNvbXBpbGVyIGVycm9yIGlmCi0vLyBrMSAhPSBrMi4KLXRlbXBsYXRlIDxpbnQg
a1NpemUxLCBpbnQga1NpemUyPgotc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9y
OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPDAs
IDA+IHsKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgotICBzdGF0aWMg
Ym9vbCBFcShjb25zdCBUdXBsZTEmIC8qIHQxICovLCBjb25zdCBUdXBsZTImIC8qIHQyICovKSB7
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxpbnQgaz4KLXN0cnVjdCBT
YW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPiB7Ci0gIHRlbXBsYXRlIDxjbGFzcyBU
dXBsZTEsIGNsYXNzIFR1cGxlMj4KLSAgc3RhdGljIGJvb2wgRXEoY29uc3QgVHVwbGUxJiB0MSwg
Y29uc3QgVHVwbGUyJiB0MikgewotICAgIHJldHVybiBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFy
YXRvcjxrIC0gMSwgayAtIDE+OjpFcSh0MSwgdDIpICYmCi0gICAgICAgIDo6c3RkOjp0cjE6Omdl
dDxrIC0gMT4odDEpID09IDo6c3RkOjp0cjE6OmdldDxrIC0gMT4odDIpOwotICB9Ci19OwotCi19
ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVO
QU1FU18oVCksIEdURVNUXzEwX1RZUEVOQU1FU18oVSk+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEdURVNUXzEwX1RVUExFXyhUKSYgdCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR1RFU1RfMTBfVFVQTEVfKFUpJiB1KSB7Ci0gIHJldHVybiBndGVzdF9pbnRlcm5hbDo6U2Ft
ZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8Ci0gICAgICB0dXBsZV9zaXplPEdURVNUXzEwX1RV
UExFXyhUKSA+Ojp2YWx1ZSwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFUpID46
OnZhbHVlPjo6RXEodCwgdSk7Ci19Ci0KLXRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFQp
LCBHVEVTVF8xMF9UWVBFTkFNRVNfKFUpPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
VEVTVF8xMF9UVVBMRV8oVCkmIHQsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdURVNU
XzEwX1RVUExFXyhVKSYgdSkgeyByZXR1cm4gISh0ID09IHUpOyB9Ci0KLS8vIDYuMS40IFBhaXJz
LgotLy8gVW5pbXBsZW1lbnRlZC4KLQotfSAgLy8gbmFtZXNwYWNlIHRyMQotfSAgLy8gbmFtZXNw
YWNlIHN0ZAotCi0jdW5kZWYgR1RFU1RfMF9UVVBMRV8KLSN1bmRlZiBHVEVTVF8xX1RVUExFXwot
I3VuZGVmIEdURVNUXzJfVFVQTEVfCi0jdW5kZWYgR1RFU1RfM19UVVBMRV8KLSN1bmRlZiBHVEVT
VF80X1RVUExFXwotI3VuZGVmIEdURVNUXzVfVFVQTEVfCi0jdW5kZWYgR1RFU1RfNl9UVVBMRV8K
LSN1bmRlZiBHVEVTVF83X1RVUExFXwotI3VuZGVmIEdURVNUXzhfVFVQTEVfCi0jdW5kZWYgR1RF
U1RfOV9UVVBMRV8KLSN1bmRlZiBHVEVTVF8xMF9UVVBMRV8KLQotI3VuZGVmIEdURVNUXzBfVFlQ
RU5BTUVTXwotI3VuZGVmIEdURVNUXzFfVFlQRU5BTUVTXwotI3VuZGVmIEdURVNUXzJfVFlQRU5B
TUVTXwotI3VuZGVmIEdURVNUXzNfVFlQRU5BTUVTXwotI3VuZGVmIEdURVNUXzRfVFlQRU5BTUVT
XwotI3VuZGVmIEdURVNUXzVfVFlQRU5BTUVTXwotI3VuZGVmIEdURVNUXzZfVFlQRU5BTUVTXwot
I3VuZGVmIEdURVNUXzdfVFlQRU5BTUVTXwotI3VuZGVmIEdURVNUXzhfVFlQRU5BTUVTXwotI3Vu
ZGVmIEdURVNUXzlfVFlQRU5BTUVTXwotI3VuZGVmIEdURVNUXzEwX1RZUEVOQU1FU18KLQotI3Vu
ZGVmIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotI3VuZGVmIEdURVNUX0JZX1JFRl8K
LSN1bmRlZiBHVEVTVF9BRERfUkVGXwotI3VuZGVmIEdURVNUX1RVUExFX0VMRU1FTlRfCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
LnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgu
cHVtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI5ZGRmZWVjYWE3NGU3MWE5ZDg5
ZWM1NjhlOTg1ODFiNzY2MmIwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxl
LmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi0kJCAtKi0gbW9kZTogYysr
OyAtKi0KLSR2YXIgbiA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiB0dXBsZSBmaWVsZHMgd2Ug
d2FudCB0byBzdXBwb3J0LgotJCQgVGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRh
dGlvbiBpbiBFbWFjcy4gfX0KLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCi0vLyBBbGwg
UmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8g
SW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFu
ZCBHb29nbGUgTW9jay4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dU
RVNUX1RVUExFX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
VFVQTEVfSF8KLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3IgOjpzdGQ6OnBhaXIuCi0KLS8v
IFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVudHMgdXMg
ZnJvbSBkZWNsYXJpbmcgdGhlCi0vLyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29t
cGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMg
dGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJl
Ci0vLyBwcml2YXRlIGFzIHB1YmxpYy4KLS8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAxMiBhbHNv
IGhhdmUgdGhlIGFib3ZlIGJ1Zy4KLSNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IChkZWZp
bmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotIyBkZWZpbmUgR1RFU1Rf
REVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9E
RUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAotICAgIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVO
QU1FU18oVSk+IGZyaWVuZCBjbGFzcyB0dXBsZTsgXAotICAgcHJpdmF0ZToKLSNlbmRpZgotCi0v
LyBWaXN1YWwgU3R1ZGlvIDIwMTAsIDIwMTIsIGFuZCAyMDEzIGRlZmluZSBzeW1ib2xzIGluIHN0
ZDo6dHIxIHRoYXQgY29uZmxpY3QKLS8vIHdpdGggb3VyIG93biBkZWZpbml0aW9ucy4gVGhlcmVm
b3JlIHVzaW5nIG91ciBvd24gdHVwbGUgZG9lcyBub3Qgd29yayBvbgotLy8gdGhvc2UgY29tcGls
ZXJzLgotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE2MDAgIC8qIDE2MDAg
aXMgVmlzdWFsIFN0dWRpbyAyMDEwICovCi0jIGVycm9yICJndGVzdCdzIHR1cGxlIGRvZXNuJ3Qg
Y29tcGlsZSBvbiBWaXN1YWwgU3R1ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKLUdURVNUX1VTRV9PV05f
VFIxX1RVUExFIG11c3QgYmUgc2V0IHRvIDAgb24gdGhvc2UgY29tcGlsZXJzLiIKLSNlbmRpZgot
Ci0KLSRyYW5nZSBpIDAuLm4tMQotJHJhbmdlIGogMC4ubgotJHJhbmdlIGsgMS4ubgotLy8gR1RF
U1Rfbl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4KLSNkZWZpbmUgR1RFU1Rf
MF9UVVBMRV8oVCkgdHVwbGU8PgotCi0kZm9yIGsgW1sKLSRyYW5nZSBtIDAuLmstMQotJHJhbmdl
IG0yIGsuLm4tMQotI2RlZmluZSBHVEVTVF8kKGspX1RVUExFXyhUKSB0dXBsZTwkZm9yIG0sIFtb
VCMjJG1dXSRmb3IgbTIgW1ssIHZvaWRdXT4KLQotXV0KLQotLy8gR1RFU1Rfbl9UWVBFTkFNRVNf
KFQpIGRlY2xhcmVzIGEgbGlzdCBvZiBuIHR5cGVuYW1lcy4KLQotJGZvciBqIFtbCi0kcmFuZ2Ug
bSAwLi5qLTEKLSNkZWZpbmUgR1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpICRmb3IgbSwgW1t0eXBl
bmFtZSBUIyMkbV1dCi0KLQotXV0KLQotLy8gSW4gdGhlb3J5LCBkZWZpbmluZyBzdHVmZiBpbiB0
aGUgOjpzdGQgbmFtZXNwYWNlIGlzIHVuZGVmaW5lZAotLy8gYmVoYXZpb3IuICBXZSBjYW4gZG8g
dGhpcyBhcyB3ZSBhcmUgcGxheWluZyB0aGUgcm9sZSBvZiBhIHN0YW5kYXJkCi0vLyBsaWJyYXJ5
IHZlbmRvci4KLW5hbWVzcGFjZSBzdGQgewotbmFtZXNwYWNlIHRyMSB7Ci0KLXRlbXBsYXRlIDwk
Zm9yIGksIFtbdHlwZW5hbWUgVCRpID0gdm9pZF1dPgotY2xhc3MgdHVwbGU7Ci0KLS8vIEFueXRo
aW5nIGluIG5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbCBpcyBHb29nbGUgVGVzdCdzIElOVEVSTkFM
Ci0vLyBJTVBMRU1FTlRBVElPTiBERVRBSUwgYW5kIE1VU1QgTk9UIEJFIFVTRUQgRElSRUNUTFkg
aW4gdXNlciBjb2RlLgotbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKLQotLy8gQnlSZWY8VD46
OnR5cGUgaXMgVCBpZiBUIGlzIGEgcmVmZXJlbmNlOyBvdGhlcndpc2UgaXQncyBjb25zdCBUJi4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEJ5UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0
eXBlOyB9OyAgLy8gTk9MSU5UCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBCeVJlZjxU
Jj4geyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3cmFwcGVy
IGZvciBCeVJlZi4KLSNkZWZpbmUgR1RFU1RfQllfUkVGXyhUKSB0eXBlbmFtZSA6OnN0ZDo6dHIx
OjpndGVzdF9pbnRlcm5hbDo6QnlSZWY8VD46OnR5cGUKLQotLy8gQWRkUmVmPFQ+Ojp0eXBlIGlz
IFQgaWYgVCBpcyBhIHJlZmVyZW5jZTsgb3RoZXJ3aXNlIGl0J3MgVCYuICBUaGlzCi0vLyBpcyB0
aGUgc2FtZSBhcyB0cjE6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXN0cnVjdCBBZGRSZWYgeyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFkZFJlZjxUJj4geyB0eXBlZGVmIFQmIHR5cGU7
IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3cmFwcGVyIGZvciBBZGRSZWYuCi0jZGVmaW5l
IEdURVNUX0FERF9SRUZfKFQpIHR5cGVuYW1lIDo6c3RkOjp0cjE6Omd0ZXN0X2ludGVybmFsOjpB
ZGRSZWY8VD46OnR5cGUKLQotLy8gQSBoZWxwZXIgZm9yIGltcGxlbWVudGluZyBnZXQ8az4oKS4K
LXRlbXBsYXRlIDxpbnQgaz4gY2xhc3MgR2V0OwotCi0vLyBBIGhlbHBlciBmb3IgaW1wbGVtZW50
aW5nIHR1cGxlX2VsZW1lbnQ8aywgVD4uICBrSW5kZXhWYWxpZCBpcyB0cnVlCi0vLyBpZmYgayA8
IHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHR1cGxlIHR5cGUgVC4KLXRlbXBsYXRlIDxib29sIGtJ
bmRleFZhbGlkLCBpbnQga0luZGV4LCBjbGFzcyBUdXBsZT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ7
Ci0KLQotJGZvciBpIFtbCi10ZW1wbGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpPgotc3Ry
dWN0IFR1cGxlRWxlbWVudDx0cnVlLCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCkgPiB7Ci0gIHR5
cGVkZWYgVCRpIHR5cGU7Ci19OwotCi0KLV1dCi19ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJu
YWwKLQotdGVtcGxhdGUgPD4KLWNsYXNzIHR1cGxlPD4gewotIHB1YmxpYzoKLSAgdHVwbGUoKSB7
fQotICB0dXBsZShjb25zdCB0dXBsZSYgLyogdCAqLykgIHt9Ci0gIHR1cGxlJiBvcGVyYXRvcj0o
Y29uc3QgdHVwbGUmIC8qIHQgKi8pIHsgcmV0dXJuICp0aGlzOyB9Ci19OwotCi0KLSRmb3IgayBb
WwotJHJhbmdlIG0gMC4uay0xCi10ZW1wbGF0ZSA8R1RFU1RfJChrKV9UWVBFTkFNRVNfKFQpPgot
Y2xhc3MgJGlmIGsgPCBuIFtbR1RFU1RfJChrKV9UVVBMRV8oVCldXSAkZWxzZSBbW3R1cGxlXV0g
ewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJu
YWw6OkdldDsKLQotICB0dXBsZSgpIDogJGZvciBtLCBbW2YkKG0pXygpXV0ge30KLQotICBleHBs
aWNpdCB0dXBsZSgkZm9yIG0sIFtbR1RFU1RfQllfUkVGXyhUJG0pIGYkbV1dKSA6IFtbXV0KLSRm
b3IgbSwgW1tmJChtKV8oZiRtKV1dIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogJGZv
ciBtLCBbW2YkKG0pXyh0LmYkKG0pXyldXSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF8kKGspX1RZ
UEVOQU1FU18oVSk+Ci0gIHR1cGxlKGNvbnN0IEdURVNUXyQoaylfVFVQTEVfKFUpJiB0KSA6ICRm
b3IgbSwgW1tmJChtKV8odC5mJChtKV8pXV0ge30KLQotJGlmIGsgPT0gMiBbWwotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVTAsIHR5cGVuYW1lIFUxPgotICB0dXBsZShjb25zdCA6OnN0ZDo6cGFpcjxV
MCwgVTE+JiBwKSA6IGYwXyhwLmZpcnN0KSwgZjFfKHAuc2Vjb25kKSB7fQotCi1dXQotCi0gIHR1
cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9Ci0K
LSAgdGVtcGxhdGUgPEdURVNUXyQoaylfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIG9wZXJhdG9y
PShjb25zdCBHVEVTVF8kKGspX1RVUExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5RnJvbSh0
KTsKLSAgfQotCi0kaWYgayA9PSAyIFtbCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5h
bWUgVTE+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgOjpzdGQ6OnBhaXI8VTAsIFUxPiYgcCkg
ewotICAgIGYwXyA9IHAuZmlyc3Q7Ci0gICAgZjFfID0gcC5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0
aGlzOwotICB9Ci0KLV1dCi0KLSAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAg
dGVtcGxhdGUgPEdURVNUXyQoaylfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNv
bnN0IEdURVNUXyQoaylfVFVQTEVfKFUpJiB0KSB7Ci0KLSRmb3IgbSBbWwotICAgIGYkKG0pXyA9
IHQuZiQobSlfOwotCi1dXQotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0KLSRmb3IgbSBbWwot
ICBUJG0gZiQobSlfOwotCi1dXQotfTsKLQotCi1dXQotLy8gNi4xLjMuMiBUdXBsZSBjcmVhdGlv
biBmdW5jdGlvbnMuCi0KLS8vIEtub3duIGxpbWl0YXRpb25zOiB3ZSBkb24ndCBzdXBwb3J0IHBh
c3NpbmcgYW4KLS8vIHN0ZDo6dHIxOjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiB0byBtYWtlX3R1cGxl
KCkuICBBbmQgd2UgZG9uJ3QKLS8vIGltcGxlbWVudCB0aWUoKS4KLQotaW5saW5lIHR1cGxlPD4g
bWFrZV90dXBsZSgpIHsgcmV0dXJuIHR1cGxlPD4oKTsgfQotCi0kZm9yIGsgW1sKLSRyYW5nZSBt
IDAuLmstMQotCi10ZW1wbGF0ZSA8R1RFU1RfJChrKV9UWVBFTkFNRVNfKFQpPgotaW5saW5lIEdU
RVNUXyQoaylfVFVQTEVfKFQpIG1ha2VfdHVwbGUoJGZvciBtLCBbW2NvbnN0IFQkbSYgZiRtXV0p
IHsKLSAgcmV0dXJuIEdURVNUXyQoaylfVFVQTEVfKFQpKCRmb3IgbSwgW1tmJG1dXSk7Ci19Ci0K
LV1dCi0KLS8vIDYuMS4zLjMgVHVwbGUgaGVscGVyIGNsYXNzZXMuCi0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUdXBsZT4gc3RydWN0IHR1cGxlX3NpemU7Ci0KLQotJGZvciBqIFtbCi10ZW1wbGF0ZSA8
R1RFU1RfJChqKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9U
VVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAkajsKLX07Ci0KLQotXV0K
LXRlbXBsYXRlIDxpbnQgaywgY2xhc3MgVHVwbGU+Ci1zdHJ1Y3QgdHVwbGVfZWxlbWVudCB7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgZ3Rlc3RfaW50ZXJuYWw6OlR1cGxlRWxlbWVudDwKLSAgICAgIGsg
PCAodHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlKSwgaywgVHVwbGU+Ojp0eXBlIHR5cGU7Ci19Owot
Ci0jZGVmaW5lIEdURVNUX1RVUExFX0VMRU1FTlRfKGssIFR1cGxlKSB0eXBlbmFtZSB0dXBsZV9l
bGVtZW50PGssIFR1cGxlID46OnR5cGUKLQotLy8gNi4xLjMuNCBFbGVtZW50IGFjY2Vzcy4KLQot
bmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKLQotCi0kZm9yIGkgW1sKLXRlbXBsYXRlIDw+Ci1j
bGFzcyBHZXQ8JGk+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3Rh
dGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKCRpLCBUdXBsZSkpCi0gIEZp
ZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmYkKGkpXzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVtcGxh
dGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVN
RU5UXygkaSwgVHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0
LmYkKGkpXzsgfQotfTsKLQotCi1dXQotfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsCi0K
LXRlbXBsYXRlIDxpbnQgaywgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpPgotR1RFU1RfQUREX1JF
Rl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oaywgR1RFU1RfJChuKV9UVVBMRV8oVCkpKQotZ2V0KEdU
RVNUXyQobilfVFVQTEVfKFQpJiB0KSB7Ci0gIHJldHVybiBndGVzdF9pbnRlcm5hbDo6R2V0PGs+
OjpGaWVsZCh0KTsKLX0KLQotdGVtcGxhdGUgPGludCBrLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18o
VCk+Ci1HVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKGssICBHVEVTVF8kKG4pX1RV
UExFXyhUKSkpCi1nZXQoY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVCkmIHQpIHsKLSAgcmV0dXJu
IGd0ZXN0X2ludGVybmFsOjpHZXQ8az46OkNvbnN0RmllbGQodCk7Ci19Ci0KLS8vIDYuMS4zLjUg
UmVsYXRpb25hbCBvcGVyYXRvcnMKLQotLy8gV2Ugb25seSBpbXBsZW1lbnQgPT0gYW5kICE9LCBh
cyB3ZSBkb24ndCBoYXZlIGEgbmVlZCBmb3IgdGhlIHJlc3QgeWV0LgotCi1uYW1lc3BhY2UgZ3Rl
c3RfaW50ZXJuYWwgewotCi0vLyBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPjo6
RXEodDEsIHQyKSByZXR1cm5zIHRydWUgaWYgdGhlCi0vLyBmaXJzdCBrIGZpZWxkcyBvZiB0MSBl
cXVhbHMgdGhlIGZpcnN0IGsgZmllbGRzIG9mIHQyLgotLy8gU2FtZVNpemVUdXBsZVByZWZpeENv
bXBhcmF0b3IoazEsIGsyKSB3b3VsZCBiZSBhIGNvbXBpbGVyIGVycm9yIGlmCi0vLyBrMSAhPSBr
Mi4KLXRlbXBsYXRlIDxpbnQga1NpemUxLCBpbnQga1NpemUyPgotc3RydWN0IFNhbWVTaXplVHVw
bGVQcmVmaXhDb21wYXJhdG9yOwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFNhbWVTaXplVHVwbGVQ
cmVmaXhDb21wYXJhdG9yPDAsIDA+IHsKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3Mg
VHVwbGUyPgotICBzdGF0aWMgYm9vbCBFcShjb25zdCBUdXBsZTEmIC8qIHQxICovLCBjb25zdCBU
dXBsZTImIC8qIHQyICovKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLXRlbXBsYXRl
IDxpbnQgaz4KLXN0cnVjdCBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPiB7Ci0g
IHRlbXBsYXRlIDxjbGFzcyBUdXBsZTEsIGNsYXNzIFR1cGxlMj4KLSAgc3RhdGljIGJvb2wgRXEo
Y29uc3QgVHVwbGUxJiB0MSwgY29uc3QgVHVwbGUyJiB0MikgewotICAgIHJldHVybiBTYW1lU2l6
ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrIC0gMSwgayAtIDE+OjpFcSh0MSwgdDIpICYmCi0gICAg
ICAgIDo6c3RkOjp0cjE6OmdldDxrIC0gMT4odDEpID09IDo6c3RkOjp0cjE6OmdldDxrIC0gMT4o
dDIpOwotICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKLQotdGVtcGxh
dGUgPEdURVNUXyQobilfVFlQRU5BTUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKLSAg
cmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAg
ICAgIHR1cGxlX3NpemU8R1RFU1RfJChuKV9UVVBMRV8oVCkgPjo6dmFsdWUsCi0gICAgICB0dXBs
ZV9zaXplPEdURVNUXyQobilfVFVQTEVfKFUpID46OnZhbHVlPjo6RXEodCwgdSk7Ci19Ci0KLXRl
bXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCksIEdURVNUXyQobilfVFlQRU5BTUVTXyhV
KT4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVCkmIHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFUpJiB1KSB7
IHJldHVybiAhKHQgPT0gdSk7IH0KLQotLy8gNi4xLjQgUGFpcnMuCi0vLyBVbmltcGxlbWVudGVk
LgotCi19ICAvLyBuYW1lc3BhY2UgdHIxCi19ICAvLyBuYW1lc3BhY2Ugc3RkCi0KLQotJGZvciBq
IFtbCi0jdW5kZWYgR1RFU1RfJChqKV9UVVBMRV8KLQotXV0KLQotCi0kZm9yIGogW1sKLSN1bmRl
ZiBHVEVTVF8kKGopX1RZUEVOQU1FU18KLQotXV0KLQotI3VuZGVmIEdURVNUX0RFQ0xBUkVfVFVQ
TEVfQVNfRlJJRU5EXwotI3VuZGVmIEdURVNUX0JZX1JFRl8KLSN1bmRlZiBHVEVTVF9BRERfUkVG
XwotI3VuZGVmIEdURVNUX1RVUExFX0VMRU1FTlRfCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UVVBMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU0NmY3Y2ZjYjQ4M2E5NTUxYzIwYWRhMjNiNzdmOTg4MDQwNWY0ZmUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaAorKysgL2Rldi9udWxsCkBA
IC0xLDMzMzEgKzAsMCBAQAotLy8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoK
LS8vICAgICBwdW1wLnB5IGd0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKLS8vIERPIE5PVCBFRElUIEJZ
IEhBTkQhISEKLQotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUeXBlIHV0
aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0ZXJp
emVkCi0vLyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBO
T1QgRURJVCBCWSBIQU5EIQotLy8KLS8vIEN1cnJlbnRseSB3ZSBzdXBwb3J0IGF0IG1vc3QgNTAg
dHlwZXMgaW4gYSBsaXN0LCBhbmQgYXQgbW9zdCA1MAotLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3RzIGluIG9uZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgotLy8gUGxlYXNlIGNvbnRh
Y3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBt
b3JlLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9V
VElMX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQRV9V
VElMX0hfCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0KLS8vICNp
ZmRlZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8gdXNl
IGdjYyB3aXRob3V0IHVzaW5nCi0vLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFiaS5o
IGNvbWVzIGZyb20pLgotIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCi0jICBpbmNsdWRlIDxjeHhh
YmkuaD4KLSMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQotIyAgaW5jbHVkZSA8YWN4eF9kZW1hbmds
ZS5oPgotIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KLQotbmFtZXNwYWNlIHRlc3Rp
bmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1cm5z
IGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCi0vLyBOQjogVGhpcyBmdW5jdGlvbiBp
cyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9mCi0v
LyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXN0ZDo6c3RyaW5nIEdldFR5cGVOYW1lKCkgewotIyBpZiBHVEVTVF9IQVNfUlRUSQotCi0g
IGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotIyAgaWYgR1RFU1Rf
SEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQotICBpbnQgc3RhdHVzID0gMDsKLSAg
Ly8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRoZSB0
eXBlIG5hbWUsCi0gIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCi0jICAgaWYgR1RFU1Rf
SEFTX0NYWEFCSV9IXwotICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOwotIyAgIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ1hYQUJJX0hfCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBfX2N4
YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgbmFt
ZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7Ci0gIGZyZWUocmVhZGFi
bGVfbmFtZSk7Ci0gIHJldHVybiBuYW1lX3N0cjsKLSMgIGVsc2UKLSAgcmV0dXJuIG5hbWU7Ci0j
ICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwotCi0jIGVsc2UKLQot
ICByZXR1cm4gIjx0eXBlPiI7Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCi19Ci0KLSNp
ZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8vIEFz
c2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJlIHRo
ZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBhc3Nl
cnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCi0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxOwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4gewotICB0eXBlZGVm
IGJvb2wgdHlwZTsKLX07Ci0KLS8vIEEgdW5pcXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2
YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBjbGFzcwotLy8gdGVtcGxhdGUgVHlwZXMuICBUaGlz
IGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJpYWRpYyB0ZW1wbGF0ZXMKLS8vIChlLmcuIFR5cGVz
PGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QKLS8v
IHN1cHBvcnQgZGlyZWN0bHkuCi1zdHJ1Y3QgTm9uZSB7fTsKLQotLy8gVGhlIGZvbGxvd2luZyBm
YW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1Y3QgdGVtcGxhdGVzIGFyZSB1c2VkIHRvCi0vLyByZXBy
ZXNlbnQgdHlwZSBsaXN0cy4gIEluIHBhcnRpY3VsYXIsIFR5cGVzTjxUMSwgVDIsIC4uLiwgVE4+
Ci0vLyByZXByZXNlbnRzIGEgdHlwZSBsaXN0IHdpdGggTiB0eXBlcyAoVDEsIFQyLCAuLi4sIGFu
ZCBUTikgaW4gaXQuCi0vLyBFeGNlcHQgZm9yIFR5cGVzMCwgZXZlcnkgc3RydWN0IGluIHRoZSBm
YW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6Ci0vLyBIZWFkIGZvciB0aGUgZmlyc3QgdHlwZSBp
biB0aGUgbGlzdCwgYW5kIFRhaWwgZm9yIHRoZSByZXN0IG9mIHRoZQotLy8gbGlzdC4KLQotLy8g
VGhlIGVtcHR5IHR5cGUgbGlzdC4KLXN0cnVjdCBUeXBlczAge307Ci0KLS8vIFR5cGUgbGlzdHMg
b2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBvbi4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgot
c3RydWN0IFR5cGVzMSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczAgVGFp
bDsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFR5cGVz
MiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczE8VDI+IFRhaWw7Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXN0cnVj
dCBUeXBlczMgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyPFQyLCBUMz4g
VGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUND4KLXN0cnVjdCBUeXBlczQgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0g
IHR5cGVkZWYgVHlwZXMzPFQyLCBUMywgVDQ+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
Pgotc3RydWN0IFR5cGVzNSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczQ8
VDIsIFQzLCBUNCwgVDU+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2Pgotc3RydWN0IFR5cGVzNiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBU
eXBlczU8VDIsIFQzLCBUNCwgVDUsIFQ2PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci1zdHJ1Y3QgVHlwZXM3IHsKLSAgdHlwZWRl
ZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzNjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4Pgotc3RydWN0IFR5cGVzOCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlw
ZWRlZiBUeXBlczc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5Pgotc3RydWN0IFR5cGVzOSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlw
ZWRlZiBUeXBlczg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBUYWlsOwotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotc3RydWN0IFR5cGVzMTAgewotICB0eXBl
ZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAot
ICAgIHR5cGVuYW1lIFQxMT4KLXN0cnVjdCBUeXBlczExIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwot
ICB0eXBlZGVmIFR5cGVzMTA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMj4KLXN0cnVjdCBUeXBlczEyIHsKLSAgdHlwZWRlZiBUMSBI
ZWFkOwotICB0eXBlZGVmIFR5cGVzMTE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+Ci1zdHJ1Y3Qg
VHlwZXMxMyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczEyPFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzPiBUYWlsOwotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxND4KLXN0cnVjdCBUeXBlczE0IHsKLSAg
dHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMTM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxND4gVGFpbDsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNT4KLXN0cnVjdCBUeXBlczE1
IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMTQ8VDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNT4gVGFp
bDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKLSAgICB0eXBlbmFtZSBUMTY+Ci1zdHJ1Y3QgVHlwZXMxNiB7Ci0gIHR5cGVkZWYgVDEgSGVh
ZDsKLSAgdHlwZWRlZiBUeXBlczE1PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNj4gVGFpbDsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNz4KLXN0cnVjdCBUeXBlczE3IHsKLSAgdHlwZWRlZiBUMSBIZWFk
OwotICB0eXBlZGVmIFR5cGVzMTY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTc+IFRhaWw7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFt
ZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlw
ZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KLXN0cnVjdCBUeXBlczE4IHsK
LSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMTc8VDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBU
MTcsIFQxOD4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTk+Ci1zdHJ1Y3QgVHlwZXMxOSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsK
LSAgdHlwZWRlZiBUeXBlczE4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOT4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
LSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMD4KLXN0cnVjdCBUeXBlczIwIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwot
ICB0eXBlZGVmIFR5cGVzMTk8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjA+IFRh
aWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxPgotc3RydWN0IFR5cGVzMjEg
ewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyMDxUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5
cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyPgotc3RydWN0IFR5cGVzMjIgewotICB0eXBlZGVmIFQx
IEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyMTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjI+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5
cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIx
LCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMz4KLXN0cnVjdCBUeXBlczIzIHsKLSAgdHlwZWRl
ZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjI8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Pgotc3Ry
dWN0IFR5cGVzMjQgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyMzxUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUs
Ci0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0PiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1Pgotc3RydWN0IFR5cGVzMjUgewot
ICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyNDxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+IFRhaWw7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFt
ZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlw
ZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBl
bmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywg
dHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2Pgotc3RydWN0IFR5
cGVzMjYgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyNTxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAg
ICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNj4g
VGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNz4KLXN0cnVjdCBUeXBlczI3IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwot
ICB0eXBlZGVmIFR5cGVzMjY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4Pgotc3RydWN0IFR5cGVzMjggewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYg
VHlwZXMyNzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjg+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0
eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQy
OCwgdHlwZW5hbWUgVDI5Pgotc3RydWN0IFR5cGVzMjkgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0g
IHR5cGVkZWYgVHlwZXMyODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjk+IFRhaWw7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzA+Ci1zdHJ1
Y3QgVHlwZXMzMCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczI5PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
LSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBl
bmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwg
dHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAot
ICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQy
NCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFt
ZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMT4KLXN0
cnVjdCBUeXBlczMxIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMzA8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1
LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMT4gVGFpbDsKLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwg
dHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwg
dHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQx
MiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFt
ZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1l
IFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBl
bmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywg
dHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBU
MzEsIHR5cGVuYW1lIFQzMj4KLXN0cnVjdCBUeXBlczMyIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwot
ICB0eXBlZGVmIFR5cGVzMzE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQz
MSwgVDMyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzM+
Ci1zdHJ1Y3QgVHlwZXMzMyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczMy
PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
IFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzPiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwg
dHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAot
ICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQz
ND4KLXN0cnVjdCBUeXBlczM0IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVz
MzM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
ND4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVu
YW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0
eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQy
MiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFt
ZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1l
IFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBl
bmFtZSBUMzQsIHR5cGVuYW1lIFQzNT4KLXN0cnVjdCBUeXBlczM1IHsKLSAgdHlwZWRlZiBUMSBI
ZWFkOwotICB0eXBlZGVmIFR5cGVzMzQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBU
MzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5h
bWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5
cGVuYW1lIFQzNj4KLXN0cnVjdCBUeXBlczM2IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBl
ZGVmIFR5cGVzMzU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzY+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBU
MTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5h
bWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFt
ZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlw
ZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIs
IHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUg
VDM2LCB0eXBlbmFtZSBUMzc+Ci1zdHJ1Y3QgVHlwZXMzNyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsK
LSAgdHlwZWRlZiBUeXBlczM2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzc+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
Ci0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUg
VDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVu
YW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0
eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0g
ICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOD4KLXN0cnVjdCBUeXBl
czM4IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMzc8VDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMs
IHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUg
VDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOT4KLXN0cnVjdCBUeXBlczM5IHsKLSAgdHlw
ZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMzg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjks
Ci0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+
IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5
cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDA+Ci1zdHJ1Y3QgVHlwZXM0MCB7
Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczM5PFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQy
OCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LCBUNDA+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
Ci0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0
eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0g
ICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5
LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1l
IFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBl
bmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAg
dHlwZW5hbWUgVDQxPgotc3RydWN0IFR5cGVzNDEgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5
cGVkZWYgVHlwZXM0MDxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDE+IFRhaWw7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0
eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQz
OCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFt
ZSBUNDI+Ci1zdHJ1Y3QgVHlwZXM0MiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBU
eXBlczQxPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyPiBUYWlsOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUg
VDQyLCB0eXBlbmFtZSBUNDM+Ci1zdHJ1Y3QgVHlwZXM0MyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsK
LSAgdHlwZWRlZiBUeXBlczQyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQy
LAotICAgICAgVDQzPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQy
OSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFt
ZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlw
ZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAg
IHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0ND4K
LXN0cnVjdCBUeXBlczQ0IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzNDM8
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwg
VDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICAgIFQ0ND4g
VGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQz
MCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFt
ZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlw
ZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEs
IHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NT4K
LXN0cnVjdCBUeXBlczQ1IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzNDQ8
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwg
VDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICAgIFQ0NCwg
VDQ1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVu
YW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5h
bWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5
cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3
LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1l
IFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUg
VDQ1LAotICAgIHR5cGVuYW1lIFQ0Nj4KLXN0cnVjdCBUeXBlczQ2IHsKLSAgdHlwZWRlZiBUMSBI
ZWFkOwotICB0eXBlZGVmIFR5cGVzNDU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBU
MzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQx
LCBUNDIsIFQ0MywKLSAgICAgIFQ0NCwgVDQ1LCBUNDY+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
Ci0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUg
VDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVu
YW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0
eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0g
ICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5
LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1l
IFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBl
bmFtZSBUNDc+Ci1zdHJ1Y3QgVHlwZXM0NyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRl
ZiBUeXBlczQ2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0g
ICAgICBUNDQsIFQ0NSwgVDQ2LCBUNDc+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBl
bmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwg
dHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBU
MzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5h
bWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFt
ZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlw
ZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcs
IHR5cGVuYW1lIFQ0OD4KLXN0cnVjdCBUeXBlczQ4IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0
eXBlZGVmIFR5cGVzNDc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0
MywKLSAgICAgIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1l
IFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBl
bmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwg
dHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAot
ICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQz
OSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFt
ZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlw
ZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OT4KLXN0cnVjdCBUeXBlczQ5IHsK
LSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzNDg8VDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4
LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICAgIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4
LCBUNDk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQx
OCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFt
ZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlw
ZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBl
bmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywg
dHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBU
MzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5h
bWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFt
ZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlw
ZW5hbWUgVDQ5LCB0eXBlbmFtZSBUNTA+Ci1zdHJ1Y3QgVHlwZXM1MCB7Ci0gIHR5cGVkZWYgVDEg
SGVhZDsKLSAgdHlwZWRlZiBUeXBlczQ5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0
MSwgVDQyLCBUNDMsCi0gICAgICBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+IFRh
aWw7Ci19OwotCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBXZSBkb24ndCB3YW50
IHRvIHJlcXVpcmUgdGhlIHVzZXJzIHRvIHdyaXRlIFR5cGVzTjwuLi4+IGRpcmVjdGx5LAotLy8g
YXMgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8gY291bnQgdGhlIGxlbmd0aC4gIFR5cGVzPC4u
Lj4gaXMgbXVjaAotLy8gZWFzaWVyIHRvIHdyaXRlLCBidXQgZ2VuZXJhdGVzIGhvcnJpYmxlIG1l
c3NhZ2VzIHdoZW4gdGhlcmUgaXMgYQotLy8gY29tcGlsZXIgZXJyb3IsIGFzIGdjYyBpbnNpc3Rz
IG9uIHByaW50aW5nIG91dCBlYWNoIHRlbXBsYXRlCi0vLyBhcmd1bWVudCwgZXZlbiBpZiBpdCBo
YXMgdGhlIGRlZmF1bHQgdmFsdWUgKHRoaXMgbWVhbnMgVHlwZXM8aW50PgotLy8gd2lsbCBhcHBl
YXIgYXMgVHlwZXM8aW50LCBOb25lLCBOb25lLCAuLi4sIE5vbmU+IGluIHRoZSBjb21waWxlcgot
Ly8gZXJyb3JzKS4KLS8vCi0vLyBPdXIgc29sdXRpb24gaXMgdG8gY29tYmluZSB0aGUgYmVzdCBw
YXJ0IG9mIHRoZSB0d28gYXBwcm9hY2hlczogYQotLy8gdXNlciB3b3VsZCB3cml0ZSBUeXBlczxU
MSwgLi4uLCBUTj4sIGFuZCBHb29nbGUgVGVzdCB3aWxsIHRyYW5zbGF0ZQotLy8gdGhhdCB0byBU
eXBlc048VDEsIC4uLiwgVE4+IGludGVybmFsbHkgdG8gbWFrZSBlcnJvciBtZXNzYWdlcwotLy8g
cmVhZGFibGUuICBUaGUgdHJhbnNsYXRpb24gaXMgZG9uZSBieSB0aGUgJ3R5cGUnIG1lbWJlciBv
ZiB0aGUKLS8vIFR5cGVzIHRlbXBsYXRlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxID0gaW50ZXJu
YWw6Ok5vbmUsIHR5cGVuYW1lIFQyID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDMg
PSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDQgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBl
bmFtZSBUNSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNiA9IGludGVybmFsOjpOb25lLAot
ICAgIHR5cGVuYW1lIFQ3ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ4ID0gaW50ZXJuYWw6
Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDkgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDEwID0g
aW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDExID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVu
YW1lIFQxMiA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQxMyA9IGludGVybmFsOjpO
b25lLCB0eXBlbmFtZSBUMTQgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMTUgPSBp
bnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDE2ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5h
bWUgVDE3ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQxOCA9IGludGVybmFsOjpOb25lLAot
ICAgIHR5cGVuYW1lIFQxOSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMjAgPSBpbnRlcm5h
bDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMjEgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDIy
ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDIzID0gaW50ZXJuYWw6Ok5vbmUsIHR5
cGVuYW1lIFQyNCA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQyNSA9IGludGVybmFs
OjpOb25lLCB0eXBlbmFtZSBUMjYgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMjcg
PSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDI4ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlw
ZW5hbWUgVDI5ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQzMCA9IGludGVybmFsOjpOb25l
LAotICAgIHR5cGVuYW1lIFQzMSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMzIgPSBpbnRl
cm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMzMgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUg
VDM0ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDM1ID0gaW50ZXJuYWw6Ok5vbmUs
IHR5cGVuYW1lIFQzNiA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQzNyA9IGludGVy
bmFsOjpOb25lLCB0eXBlbmFtZSBUMzggPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBU
MzkgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDQwID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAg
dHlwZW5hbWUgVDQxID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ0MiA9IGludGVybmFsOjpO
b25lLAotICAgIHR5cGVuYW1lIFQ0MyA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNDQgPSBp
bnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUNDUgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5h
bWUgVDQ2ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDQ3ID0gaW50ZXJuYWw6Ok5v
bmUsIHR5cGVuYW1lIFQ0OCA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQ0OSA9IGlu
dGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNTAgPSBpbnRlcm5hbDo6Tm9uZT4KLXN0cnVjdCBUeXBl
cyB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3
LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDAsCi0gICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwg
VDQ5LCBUNTA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFR5cGVzPGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewot
ICB0eXBlZGVmIGludGVybmFsOjpUeXBlczAgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDE+Ci1zdHJ1Y3QgVHlwZXM8VDEsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTxUMT4gdHlwZTsKLX07Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IFR5cGVzPFQxLCBUMiwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBl
czI8VDEsIFQyPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlw
ZWRlZiBpbnRlcm5hbDo6VHlwZXMzPFQxLCBUMiwgVDM+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgotc3RydWN0
IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM0PFQxLCBUMiwgVDMs
IFQ0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVm
IGludGVybmFsOjpUeXBlczU8VDEsIFQyLCBUMywgVDQsIFQ1PiB0eXBlOwotfTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDY+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczY8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNzxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+
IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5
cGVkZWYgaW50ZXJuYWw6OlR5cGVzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLXN0cnVjdCBUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlw
ZWRlZiBpbnRlcm5hbDo6VHlwZXMxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTA+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTE8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTE+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyPgotc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTI8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTI+
IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMz4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYg
aW50ZXJuYWw6OlR5cGVzMTQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
Ci0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6
VHlwZXMxNTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LAotICAgICAgVDEzLCBUMTQsIFQxNT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2Pgotc3RydWN0IFR5
cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LCBUMTUsCi0gICAgVDE2LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5h
bDo6VHlwZXMxNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNz4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBl
ZGVmIGludGVybmFsOjpUeXBlczE3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNz4gdHlwZTsKLX07
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KLXN0cnVjdCBUeXBlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMxODxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
Ci0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBU
MTcsIFQxOCwgVDE5LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5
cGVzMTk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwK
LSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOT4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjA+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMjA8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBl
bmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywg
dHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBU
MjE+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBl
ZGVmIGludGVybmFsOjpUeXBlczIxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMj4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczIyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjI+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjM+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYg
aW50ZXJuYWw6OlR5cGVzMjM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+Ci1zdHJ1Y3QgVHlwZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewot
ICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMyNTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1PiB0eXBlOwot
fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5
cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAg
ICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTks
IHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUg
VDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjY+Ci1zdHJ1
Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFs
OjpUeXBlczI2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjY+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Pgotc3RydWN0IFR5
cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LCBUMjYsIFQyNywgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMjc8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LAotICAgICAgVDI3PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBl
bmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywg
dHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBU
MjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQy
NSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Pgotc3RydWN0
IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI4PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwK
LSAgICAgIFQyNywgVDI4PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
LSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBU
Mjk+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI5PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwK
LSAgICAgIFQyNywgVDI4LCBUMjk+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVu
YW1lIFQyOSwgdHlwZW5hbWUgVDMwPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4
LCBUMjksIFQzMCwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczMwPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0
eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQy
OCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxPgotc3RydWN0
IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlw
ZXMzMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAot
ICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMT4gdHlwZTsK
LX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAg
dHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzI+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsIFQyOSwgVDMwLAotICAgIFQzMSwgVDMyLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsK
LSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQy
OCwgVDI5LCBUMzAsIFQzMSwgVDMyPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1l
IFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBl
bmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwg
dHlwZW5hbWUgVDMzPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQz
MCwKLSAgICBUMzEsIFQzMiwgVDMzLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBl
czMzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0g
ICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
Mz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAg
ICBUMzEsIFQzMiwgVDMzLCBUMzQsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzNDxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
Ci0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzND4gdHlwZTsKLX07
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBl
bmFtZSBUMzU+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAot
ICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7
Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3LCBU
MjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNT4gdHlwZTsKLX07Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
Ci0gICAgdHlwZW5hbWUgVDM2Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBU
MjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsK
LSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQy
OCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+IHR5cGU7Ci19OwotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUg
VDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVu
YW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5h
bWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5
cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3
LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1l
IFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUg
VDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Pgotc3RydWN0IFR5cGVzPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBU
MTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzc8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAg
VDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzc+IHR5
cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwg
dHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAot
ICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQz
NCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFt
ZSBUMzg+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAotICAg
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzg8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5
cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIx
LCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUs
Ci0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUg
VDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVu
YW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0
eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Pgotc3RydWN0IFR5cGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBp
bnRlcm5hbDo6VHlwZXMzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5
cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlw
ZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMs
IHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUg
VDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVu
YW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5h
bWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5
cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LCBUNDAsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDA8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LAotICAgICAgVDQwPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVu
YW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0
eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5
cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDE+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAg
ICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsIFQyOSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4LCBUMzksIFQ0MCwgVDQxLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQxPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAg
IFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOSwgVDQwLAotICAgICAgVDQxPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQz
MiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFt
ZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1l
IFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Mj4KLXN0cnVjdCBUeXBlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwg
VDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQy
NywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgs
IFQzOSwgVDQwLAotICAgICAgVDQxLCBUNDI+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5
cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlw
ZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgs
IHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUg
VDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVu
YW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5h
bWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDM+Ci1z
dHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLAotICAgIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAg
ICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcs
IFQzOCwgVDM5LCBUNDAsCi0gICAgICBUNDEsIFQ0MiwgVDQzPiB0eXBlOwotfTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEs
IHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwK
LSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBU
MzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5h
bWUgVDQzLCB0eXBlbmFtZSBUNDQ+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
IFQyOSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQ0PFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMs
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0PiB0
eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFt
ZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlw
ZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYs
IHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwK
LSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBU
MzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5h
bWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5
cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NT4KLXN0
cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBU
NDQsIFQ0NSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAg
VDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDU+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVu
YW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5h
bWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5
cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMy
LCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1l
IFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUg
VDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVu
YW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0Nj4KLXN0cnVjdCBUeXBlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwKLSAg
ICBUNDYsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDY8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOCwgVDM5LCBUNDAsCi0gICAgICBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQz
MCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFt
ZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlw
ZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEs
IHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwK
LSAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0Nz4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAot
ICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwKLSAgICBUNDYsIFQ0
NywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0
eXBlZGVmIGludGVybmFsOjpUeXBlczQ3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQw
LAotICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3PiB0eXBlOwotfTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFt
ZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1l
IFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBl
bmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Miwg
dHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBU
NDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0g
ICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBU
MzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LAotICAgIFQ0NiwgVDQ3
LCBUNDgsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVy
bmFsOjpUeXBlczQ4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMx
LCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQx
LCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+IHR5cGU7Ci19OwotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1l
IFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBl
bmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwg
dHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAot
ICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQz
OSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFt
ZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlw
ZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OT4KLXN0cnVjdCBUeXBlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwg
VDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUs
IFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwKLSAgICBU
NDYsIFQ0NywgVDQ4LCBUNDksIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6
OlR5cGVzNDk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsCi0gICAgICBUNDEsIFQ0
MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5PiB0eXBlOwotfTsKLQotbmFtZXNw
YWNlIGludGVybmFsIHsKLQotIyBkZWZpbmUgR1RFU1RfVEVNUExBVEVfIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcwotCi0vLyBUaGUgdGVtcGxhdGUgInNlbGVjdG9yIiBzdHJ1Y3QgVGVtcGxh
dGVTZWw8VG1wbD4gaXMgdXNlZCB0bwotLy8gcmVwcmVzZW50IFRtcGwsIHdoaWNoIG11c3QgYmUg
YSBjbGFzcyB0ZW1wbGF0ZSB3aXRoIG9uZSB0eXBlCi0vLyBwYXJhbWV0ZXIsIGFzIGEgdHlwZS4g
IFRlbXBsYXRlU2VsPFRtcGw+OjpCaW5kPFQ+Ojp0eXBlIGlzIGRlZmluZWQKLS8vIGFzIHRoZSB0
eXBlIFRtcGw8VD4uICBUaGlzIGFsbG93cyB1cyB0byBhY3R1YWxseSBpbnN0YW50aWF0ZSB0aGUK
LS8vIHRlbXBsYXRlICJzZWxlY3RlZCIgYnkgVGVtcGxhdGVTZWw8VG1wbD4uCi0vLwotLy8gVGhp
cyB0cmljayBpcyBuZWNlc3NhcnkgZm9yIHNpbXVsYXRpbmcgdHlwZWRlZiBmb3IgY2xhc3MgdGVt
cGxhdGVzLAotLy8gd2hpY2ggQysrIGRvZXNuJ3Qgc3VwcG9ydCBkaXJlY3RseS4KLXRlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVG1wbD4KLXN0cnVjdCBUZW1wbGF0ZVNlbCB7Ci0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBzdHJ1Y3QgQmluZCB7Ci0gICAgdHlwZWRlZiBUbXBsPFQ+IHR5cGU7
Ci0gIH07Ci19OwotCi0jIGRlZmluZSBHVEVTVF9CSU5EXyhUbXBsU2VsLCBUKSBcCi0gIFRtcGxT
ZWw6OnRlbXBsYXRlIEJpbmQ8VD46OnR5cGUKLQotLy8gQSB1bmlxdWUgc3RydWN0IHRlbXBsYXRl
IHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQotLy8gYXJndW1lbnRzIG9mIGNsYXNz
IHRlbXBsYXRlIFRlbXBsYXRlcy4gIFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlCi0vLyB2YXJp
YWRpYyB0ZW1wbGF0ZXMgKGUuZy4gVGVtcGxhdGVzPGludD4sIFRlbXBsYXRlczxpbnQsIGRvdWJs
ZT4sCi0vLyBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3Qgc3VwcG9ydCBkaXJlY3RseS4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IE5vbmVUIHt9OwotCi0vLyBUaGUgZm9sbG93aW5n
IGZhbWlseSBvZiBzdHJ1Y3QgYW5kIHN0cnVjdCB0ZW1wbGF0ZXMgYXJlIHVzZWQgdG8KLS8vIHJl
cHJlc2VudCB0ZW1wbGF0ZSBsaXN0cy4gIEluIHBhcnRpY3VsYXIsIFRlbXBsYXRlc048VDEsIFQy
LCAuLi4sCi0vLyBUTj4gcmVwcmVzZW50cyBhIGxpc3Qgb2YgTiB0ZW1wbGF0ZXMgKFQxLCBUMiwg
Li4uLCBhbmQgVE4pLiAgRXhjZXB0Ci0vLyBmb3IgVGVtcGxhdGVzMCwgZXZlcnkgc3RydWN0IGlu
IHRoZSBmYW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6Ci0vLyBIZWFkIGZvciB0aGUgc2VsZWN0
b3Igb2YgdGhlIGZpcnN0IHRlbXBsYXRlIGluIHRoZSBsaXN0LCBhbmQgVGFpbAotLy8gZm9yIHRo
ZSByZXN0IG9mIHRoZSBsaXN0LgotCi0vLyBUaGUgZW1wdHkgdGVtcGxhdGUgbGlzdC4KLXN0cnVj
dCBUZW1wbGF0ZXMwIHt9OwotCi0vLyBUZW1wbGF0ZSBsaXN0cyBvZiBsZW5ndGggMSwgMiwgMywg
YW5kIHNvIG9uLgotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxPgotc3RydWN0IFRlbXBs
YXRlczEgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBs
YXRlczAgVGFpbDsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1Q
TEFURV8gVDI+Ci1zdHJ1Y3QgVGVtcGxhdGVzMiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTxUMj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxH
VEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQz
Pgotc3RydWN0IFRlbXBsYXRlczMgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwot
ICB0eXBlZGVmIFRlbXBsYXRlczI8VDIsIFQzPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNU
X1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ0Pgotc3RydWN0IFRlbXBsYXRlczQgewotICB0eXBlZGVmIFRl
bXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczM8VDIsIFQzLCBUND4gVGFp
bDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBU
MiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVN
UExBVEVfIFQ1Pgotc3RydWN0IFRlbXBsYXRlczUgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQx
PiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczQ8VDIsIFQzLCBUNCwgVDU+IFRhaWw7Ci19Owot
Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNU
X1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBU
NSwgR1RFU1RfVEVNUExBVEVfIFQ2Pgotc3RydWN0IFRlbXBsYXRlczYgewotICB0eXBlZGVmIFRl
bXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczU8VDIsIFQzLCBUNCwgVDUs
IFQ2PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDc+Ci1zdHJ1Y3QgVGVtcGxhdGVzNyB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiBUYWlsOwot
fTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBH
VEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFU
RV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNU
X1RFTVBMQVRFXyBUOD4KLXN0cnVjdCBUZW1wbGF0ZXM4IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNl
bDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5Pgotc3RydWN0IFRl
bXBsYXRlczkgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRl
bXBsYXRlczg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiBUYWlsOwotfTsKLQotdGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1Q
TEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdU
RVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRF
XyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTA+Ci1zdHJ1
Y3QgVGVtcGxhdGVzMTAgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBl
ZGVmIFRlbXBsYXRlczk8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IFRhaWw7
Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMT4KLXN0cnVjdCBUZW1wbGF0ZXMxMSB7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTA8VDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxH
VEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQz
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1Q
TEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdU
RVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFU
RV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyPgotc3RydWN0IFRlbXBsYXRlczEyIHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxMTxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTI+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEzPgotc3RydWN0IFRlbXBsYXRlczEzIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVh
ZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxMjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFU
RV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRF
XyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVT
VF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRF
XyBUMTQ+Ci1zdHJ1Y3QgVGVtcGxhdGVzMTQgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBI
ZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczEzPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0PiBUYWlsOwotfTsKLQotdGVtcGxhdGUg
PEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8g
VDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RF
TVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwg
R1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBM
QVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywg
R1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNT4KLXN0cnVjdCBUZW1wbGF0
ZXMxNSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxh
dGVzMTQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwKLSAgICAgIFQxNT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8g
VDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBU
OSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9U
RU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBU
MTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNj4KLXN0cnVj
dCBUZW1wbGF0ZXMxNiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzMTU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBM
QVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RF
U1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRF
XyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RF
U1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3Pgotc3RydWN0IFRlbXBsYXRlczE3IHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxNjxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAg
VDE1LCBUMTYsIFQxNz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEs
IEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1Q
TEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQs
IEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVN
UExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOD4KLXN0cnVjdCBUZW1wbGF0ZXMxOCB7Ci0g
IHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTc8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAg
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOD4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE5Pgotc3RydWN0IFRlbXBsYXRlczE5IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxU
MT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMD4KLXN0cnVjdCBUZW1wbGF0ZXMyMCB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVT
ZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTk8VDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjA+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQx
LCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVN
UExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0
LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RF
TVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
OSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMT4KLXN0cnVjdCBUZW1w
bGF0ZXMyMSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVt
cGxhdGVzMjA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMT4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjI+Ci1zdHJ1Y3Qg
VGVtcGxhdGVzMjIgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVm
IFRlbXBsYXRlczIxPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
Mj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBM
QVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RF
U1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBM
QVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywg
R1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1Q
TEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIs
IEdURVNUX1RFTVBMQVRFXyBUMjM+Ci1zdHJ1Y3QgVGVtcGxhdGVzMjMgewotICB0eXBlZGVmIFRl
bXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczIyPFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzPiBUYWlsOwotfTsKLQotdGVtcGxh
dGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFU
RV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNU
X1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBU
OCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RF
TVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
MywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBM
QVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywg
R1RFU1RfVEVNUExBVEVfIFQyND4KLXN0cnVjdCBUZW1wbGF0ZXMyNCB7Ci0gIHR5cGVkZWYgVGVt
cGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjM8VDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyND4gVGFpbDsKLX07Ci0KLXRl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVT
VF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQx
OCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9U
RU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBU
MjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNT4KLXN0cnVj
dCBUZW1wbGF0ZXMyNSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzMjQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2Pgotc3RydWN0
IFRlbXBsYXRlczI2IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZXMyNTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRF
XyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RF
U1RfVEVNUExBVEVfIFQyNz4KLXN0cnVjdCBUZW1wbGF0ZXMyNyB7Ci0gIHR5cGVkZWYgVGVtcGxh
dGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjY8VDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNz4gVGFp
bDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBU
MiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVN
UExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBH
VEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBU
MTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1Rf
VEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8g
VDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNU
X1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI4Pgotc3RydWN0IFRlbXBsYXRlczI4IHsKLSAgdHlwZWRlZiBUZW1wbGF0
ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyNzxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAg
ICAgVDI4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBU
MTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1Rf
VEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8g
VDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNU
X1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjk+Ci1zdHJ1Y3Qg
VGVtcGxhdGVzMjkgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVm
IFRlbXBsYXRlczI4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOT4gVGFpbDsKLX07Ci0K
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVf
IFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVT
VF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRF
XyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RF
U1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwPgotc3RydWN0
IFRlbXBsYXRlczMwIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZXMyOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMD4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RF
TVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
NSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzE+Ci1zdHJ1Y3QgVGVtcGxhdGVzMzEgewotICB0eXBlZGVm
IFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczMwPFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzE+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVT
VF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQy
MSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9U
RU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBU
MjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1Rf
VEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDMxLCBHVEVTVF9URU1QTEFURV8gVDMyPgotc3RydWN0IFRlbXBsYXRlczMyIHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzMTxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzI+IFRhaWw7Ci19OwotCi10ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEz
LCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExB
VEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBH
VEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBM
QVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwg
R1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzPgotc3Ry
dWN0IFRlbXBsYXRlczMzIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZXMzMjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMx
LCBUMzIsIFQzMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFU
RV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdU
RVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExB
VEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBH
VEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVf
IFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVT
VF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRF
XyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzND4KLXN0
cnVjdCBUZW1wbGF0ZXMzNCB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzMzM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzND4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8g
VDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBU
OSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9U
RU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBU
MTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1Rf
VEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVN
UExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5
LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RF
TVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQz
NCwgR1RFU1RfVEVNUExBVEVfIFQzNT4KLXN0cnVjdCBUZW1wbGF0ZXMzNSB7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzQ8VDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1PiBUYWlsOwot
fTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBH
VEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFU
RV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNU
X1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1Q
TEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAs
IEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVN
UExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1
LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExB
VEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBH
VEVTVF9URU1QTEFURV8gVDM2Pgotc3RydWN0IFRlbXBsYXRlczM2IHsKLSAgdHlwZWRlZiBUZW1w
bGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzNTxUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBU
MjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNj4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RF
TVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
NSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBM
QVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwg
R1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3Pgotc3RydWN0IFRl
bXBsYXRlczM3IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXMzNjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RF
TVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBU
NiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVN
UExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEs
IEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVN
UExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2
LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExB
VEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBH
VEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBM
QVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwg
R1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzg+Ci1zdHJ1Y3QgVGVtcGxh
dGVzMzggewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBs
YXRlczM3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOD4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8g
VDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RF
TVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDEx
LCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RF
TVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
NiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBM
QVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwg
R1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1Q
TEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEs
IEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFU
RV8gVDM5Pgotc3RydWN0IFRlbXBsYXRlczM5IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4g
SGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOT4gVGFp
bDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBU
MiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVN
UExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBH
VEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBU
MTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1Rf
VEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8g
VDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNU
X1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMw
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RF
TVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQz
NSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9U
RU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
NDA+Ci1zdHJ1Y3QgVGVtcGxhdGVzNDAgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFk
OwotICB0eXBlZGVmIFRlbXBsYXRlczM5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDA+IFRh
aWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8g
VDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RF
TVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywg
R1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8g
VDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNU
X1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVf
IFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVT
VF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQz
MCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9U
RU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBU
MzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1Rf
VEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQwLCBHVEVTVF9URU1QTEFURV8gVDQxPgotc3RydWN0IFRlbXBsYXRlczQxIHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0MDxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDE+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwg
R1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1Q
TEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYs
IEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFU
RV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdU
RVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExB
VEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBH
VEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVf
IFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVT
VF9URU1QTEFURV8gVDQyPgotc3RydWN0IFRlbXBsYXRlczQyIHsKLSAgdHlwZWRlZiBUZW1wbGF0
ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0MTxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
Ci0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgs
IFQzOSwgVDQwLCBUNDEsCi0gICAgICBUNDI+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVf
IFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9U
RU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQx
MSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9U
RU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1Q
TEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYs
IEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVN
UExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMx
LCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExB
VEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBH
VEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDM+Ci1zdHJ1Y3QgVGVt
cGxhdGVzNDMgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRl
bXBsYXRlczQyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLAotICAgICAg
VDQzPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVN
UExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3
LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RF
TVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
MiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBM
QVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwg
R1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1Q
TEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcs
IEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0Pgotc3RydWN0IFRlbXBs
YXRlczQ0IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1w
bGF0ZXM0MzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0
MywgVDQ0PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBU
MTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1Rf
VEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8g
VDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNU
X1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RF
TVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQz
MiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9U
RU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0LCBHVEVTVF9URU1Q
TEFURV8gVDQ1Pgotc3RydWN0IFRlbXBsYXRlczQ1IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxU
MT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0NDxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAg
ICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwg
VDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0MywgVDQ0LCBUNDU+IFRhaWw7Ci19OwotCi10ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEz
LCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExB
VEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBH
VEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBM
QVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwg
R1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRF
XyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RF
U1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFU
RV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdU
RVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ0Nj4KLXN0cnVjdCBUZW1wbGF0ZXM0NiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAg
VDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0
MCwgVDQxLCBUNDIsCi0gICAgICBUNDMsIFQ0NCwgVDQ1LCBUNDY+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVN
UExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIz
LCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RF
TVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
OCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBM
QVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwg
R1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1Q
TEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMs
IEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0Nz4KLXN0cnVjdCBUZW1wbGF0ZXM0NyB7Ci0g
IHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDY8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAg
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1
LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCi0gICAgICBUNDMsIFQ0NCwgVDQ1
LCBUNDYsIFQ0Nz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFU
RV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdU
RVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExB
VEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBH
VEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVf
IFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVT
VF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRF
XyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RF
U1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBU
NDIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MywgR1RFU1RfVEVNUExBVEVfIFQ0NCwgR1RFU1Rf
VEVNUExBVEVfIFQ0NSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQ2LCBHVEVTVF9URU1QTEFURV8g
VDQ3LCBHVEVTVF9URU1QTEFURV8gVDQ4Pgotc3RydWN0IFRlbXBsYXRlczQ4IHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0NzxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0MywgVDQ0LCBUNDUsIFQ0Niwg
VDQ3LCBUNDg+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1Rf
VEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8g
VDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNU
X1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQy
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RF
TVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0
NywgR1RFU1RfVEVNUExBVEVfIFQ0OCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQ5Pgotc3RydWN0
IFRlbXBsYXRlczQ5IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZXM0ODxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAg
ICAgIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4gVGFpbDsKLX07Ci0KLXRlbXBs
YXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExB
VEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVT
VF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8g
VDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9U
RU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1Q
TEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMs
IEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVN
UExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4
LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExB
VEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBH
VEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RFTVBM
QVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0Mywg
R1RFU1RfVEVNUExBVEVfIFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDQ2LCBHVEVTVF9URU1QTEFURV8gVDQ3LCBHVEVTVF9URU1QTEFURV8gVDQ4LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNDksIEdURVNUX1RFTVBMQVRFXyBUNTA+Ci1zdHJ1Y3QgVGVtcGxh
dGVzNTAgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBs
YXRlczQ5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLAotICAgICAgVDQz
LCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+IFRhaWw7Ci19OwotCi0KLS8vIFdl
IGRvbid0IHdhbnQgdG8gcmVxdWlyZSB0aGUgdXNlcnMgdG8gd3JpdGUgVGVtcGxhdGVzTjwuLi4+
IGRpcmVjdGx5LAotLy8gYXMgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8gY291bnQgdGhlIGxl
bmd0aC4gIFRlbXBsYXRlczwuLi4+IGlzIG11Y2gKLS8vIGVhc2llciB0byB3cml0ZSwgYnV0IGdl
bmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJlIGlzIGEKLS8vIGNvbXBpbGVyIGVy
cm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQgZWFjaCB0ZW1wbGF0ZQotLy8gYXJn
dW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZhbHVlICh0aGlzIG1lYW5zIFRlbXBs
YXRlczxsaXN0PgotLy8gd2lsbCBhcHBlYXIgYXMgVGVtcGxhdGVzPGxpc3QsIE5vbmVULCBOb25l
VCwgLi4uLCBOb25lVD4gaW4gdGhlIGNvbXBpbGVyCi0vLyBlcnJvcnMpLgotLy8KLS8vIE91ciBz
b2x1dGlvbiBpcyB0byBjb21iaW5lIHRoZSBiZXN0IHBhcnQgb2YgdGhlIHR3byBhcHByb2FjaGVz
OiBhCi0vLyB1c2VyIHdvdWxkIHdyaXRlIFRlbXBsYXRlczxUMSwgLi4uLCBUTj4sIGFuZCBHb29n
bGUgVGVzdCB3aWxsIHRyYW5zbGF0ZQotLy8gdGhhdCB0byBUZW1wbGF0ZXNOPFQxLCAuLi4sIFRO
PiBpbnRlcm5hbGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMKLS8vIHJlYWRhYmxlLiAgVGhlIHRy
YW5zbGF0aW9uIGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhlCi0vLyBUZW1wbGF0
ZXMgdGVtcGxhdGUuCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxID0gTm9uZVQsIEdURVNU
X1RFTVBMQVRFXyBUMiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMyA9IE5vbmVULCBH
VEVTVF9URU1QTEFURV8gVDQgPSBOb25lVCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDUgPSBOb25l
VCwgR1RFU1RfVEVNUExBVEVfIFQ2ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3ID0g
Tm9uZVQsIEdURVNUX1RFTVBMQVRFXyBUOCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBU
OSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDEwID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDEyID0gTm9uZVQsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDE0ID0gTm9uZVQsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDE2ID0gTm9uZVQs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDE4ID0g
Tm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8g
VDIwID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMSA9IE5vbmVULCBHVEVTVF9URU1Q
TEFURV8gVDIyID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMyA9IE5vbmVULCBHVEVT
VF9URU1QTEFURV8gVDI0ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSA9IE5vbmVU
LCBHVEVTVF9URU1QTEFURV8gVDI2ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNyA9
IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDI4ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyOSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDMwID0gTm9uZVQsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQzMSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDMyID0gTm9uZVQsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDM0ID0gTm9uZVQsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQzNSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDM2ID0gTm9u
ZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDM4
ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzOSA9IE5vbmVULCBHVEVTVF9URU1QTEFU
RV8gVDQwID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MSA9IE5vbmVULCBHVEVTVF9U
RU1QTEFURV8gVDQyID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MyA9IE5vbmVULCBH
VEVTVF9URU1QTEFURV8gVDQ0ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0NSA9IE5v
bmVULCBHVEVTVF9URU1QTEFURV8gVDQ2ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
NyA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDQ4ID0gTm9uZVQsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ0OSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDUwID0gTm9uZVQ+Ci1zdHJ1Y3QgVGVt
cGxhdGVzIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM1MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAg
IFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwgVDQxLAotICAgICAgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBU
NDksIFQ1MD4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgVGVtcGxhdGVzPE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMwIHR5cGU7
Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAg
ICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwKLSAgICBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczE8VDE+IHR5
cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQy
Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVUPiB7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzMjxUMSwgVDI+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDM+Ci1zdHJ1Y3QgVGVt
cGxhdGVzPFQxLCBUMiwgVDMsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzxUMSwgVDIs
IFQzPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBM
QVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUND4KLXN0
cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0PFQx
LCBUMiwgVDMsIFQ0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBU
NCwgVDUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4g
ewotICB0eXBlZGVmIFRlbXBsYXRlczU8VDEsIFQyLCBUMywgVDQsIFQ1PiB0eXBlOwotfTsKLXRl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDY+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiB0eXBlOwotfTsKLXRlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3Pgotc3RydWN0IFRlbXBsYXRlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+
IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXM4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDk+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiB0eXBlOwotfTsK
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwPgot
c3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxMDxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBM
QVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExB
VEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTE+Ci1z
dHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxMTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwg
R1RFU1RfVEVNUExBVEVfIFQxMj4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMx
MjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyPiB0eXBl
OwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTM+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczEzPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTM+
IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxND4KLXN0cnVjdCBUZW1wbGF0
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0
eXBlZGVmIFRlbXBsYXRlczE0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxND4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1Rf
VEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVf
IFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9U
RU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQx
MSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9U
RU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1Pgotc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
LSAgICBUMTUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRl
bXBsYXRlczE1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywKLSAgICAgIFQxNCwgVDE1PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNj4K
LXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNj4gdHlwZTsK
LX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1Rf
VEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
MCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTc+Ci1zdHJ1Y3QgVGVt
cGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIs
IFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZXMxNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTc+IHR5cGU7Ci19OwotdGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1Q
TEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdU
RVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRF
XyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNU
X1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4
Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VD4gewotICB0eXBlZGVmIFRlbXBsYXRlczE4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5Pgotc3RydWN0IFRlbXBs
YXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXMxOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5PiB0eXBlOwotfTsK
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVf
IFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwPgotc3Ry
dWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzMjA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxPgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczIxPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxPiB0eXBlOwotfTsKLXRlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgs
IEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1Q
TEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMs
IEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFU
RV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjI+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAot
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczIyPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAg
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjI+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMz4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVD4gewot
ICB0eXBlZGVmIFRlbXBsYXRlczIzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0
Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBl
ZGVmIFRlbXBsYXRlczI0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8g
VDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBU
OSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9U
RU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBU
MTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1Rf
VEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyNT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAg
Tm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjU8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNT4gdHlwZTsKLX07
Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNU
X1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBU
NSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVN
UExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwg
R1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRF
XyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RF
U1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFU
RV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdU
RVNUX1RFTVBMQVRFXyBUMjY+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIE5vbmVULCBO
b25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9u
ZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyNjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjY+IHR5cGU7Ci19OwotdGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1Q
TEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdU
RVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRF
XyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNU
X1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RF
TVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQy
MywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9U
RU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3Pgotc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
LSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczI3PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwK
LSAgICAgIFQyNz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9u
ZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjg8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0g
ICAgICBUMjg+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBU
MTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1Rf
VEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8g
VDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNU
X1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjk+Ci1zdHJ1Y3Qg
VGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyOTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAg
ICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQy
NiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9U
RU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwPgotc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwK
LSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAg
IFQyOCwgVDI5LCBUMzA+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwg
R1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBM
QVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwg
R1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1Q
TEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTks
IEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFU
RV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdU
RVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMT4KLXN0cnVjdCBUZW1w
bGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAg
ICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczMxPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMxPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8g
VDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RF
TVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDEx
LCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RF
TVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
NiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBM
QVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwg
R1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1Q
TEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEs
IEdURVNUX1RFTVBMQVRFXyBUMzI+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIFQzMiwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzMzI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBU
MzEsIFQzMj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
LCBHVEVTVF9URU1QTEFURV8gVDMzPgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcs
IFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZXMzMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzM+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RF
U1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRF
XyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RF
U1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFU
RV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdU
RVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8g
VDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNU
X1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVf
IFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0Pgotc3Ry
dWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEs
IFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzQ8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVT
VF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQz
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1Pgotc3RydWN0
IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczM1PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAot
ICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzU+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVT
VF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQz
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9U
RU1QTEFURV8gVDM2Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5
LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzNjxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0g
ICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
NCwgVDM1LCBUMzY+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RF
U1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRF
XyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RF
U1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFU
RV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdU
RVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8g
VDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNU
X1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVf
IFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVT
VF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMzc+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzNzxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
LCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RF
TVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQz
NywgR1RFU1RfVEVNUExBVEVfIFQzOD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0
ZXMzODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9U
RU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8g
VDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RF
TVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDEx
LCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RF
TVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
NiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBM
QVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwg
R1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1Q
TEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEs
IEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFU
RV8gVDM5Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAg
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgTm9uZVQs
IE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzOTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYs
IFQzNywgVDM4LCBUMzk+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwg
R1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBM
QVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwg
R1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1Q
TEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTks
IEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFU
RV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdU
RVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExB
VEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBH
VEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0MD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBU
MjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczQwPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAg
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQy
NiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9U
RU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1Q
TEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDE+
Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgTm9u
ZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAg
ICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDAsCi0gICAgICBUNDE+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
MjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1Rf
VEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVN
UExBVEVfIFQ0Mj4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwK
LSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0
MCwgVDQxLCBUNDIsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDI8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBU
MzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAgIFQ0Mj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8
R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBU
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVN
UExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBH
VEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExB
VEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBH
VEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVf
IFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVT
VF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRF
XyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RF
U1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBU
MzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1Rf
VEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8g
VDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDM+Ci1zdHJ1
Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsK
LSAgdHlwZWRlZiBUZW1wbGF0ZXM0MzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxLAotICAgICAgVDQyLCBUNDM+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
MjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1Rf
VEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVN
UExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0
Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0
MiwgVDQzLCBUNDQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VD4gewotICB0eXBlZGVmIFRlbXBsYXRlczQ0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4
LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwg
VDQwLCBUNDEsCi0gICAgICBUNDIsIFQ0MywgVDQ0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQy
NiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9U
RU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1Q
TEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDEs
IEdURVNUX1RFTVBMQVRFXyBUNDIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MywgR1RFU1RfVEVN
UExBVEVfIFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0g
ICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAotICAgIFQ0NSwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAot
ICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAgIFQ0MiwgVDQzLCBU
NDQsIFQ0NT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
LCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RF
TVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQz
NywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBM
QVRFXyBUNDUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0Nj4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
Ci0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1
LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAotICAgIFQ0NSwg
VDQ2LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczQ2
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywK
LSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsCi0gICAgICBUNDIsIFQ0Mywg
VDQ0LCBUNDUsIFQ0Nj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBH
VEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExB
VEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBH
VEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBM
QVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwg
R1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRF
XyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RF
U1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFU
RV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdU
RVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8g
VDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNU
X1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVf
IFQ0Nz4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBU
MzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQx
LCBUNDIsIFQ0MywgVDQ0LAotICAgIFQ0NSwgVDQ2LCBUNDcsIE5vbmVULCBOb25lVCwgTm9uZVQ+
IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwg
VDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0
MCwgVDQxLAotICAgICAgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4gdHlwZTsKLX07Ci10
ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RF
TVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwg
R1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExB
VEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RF
U1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBU
MTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1Rf
VEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8g
VDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNU
X1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMz
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RF
TVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQz
OCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9U
RU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
NDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0NywgR1RFU1RfVEVNUExBVEVfIFQ0OD4K
LXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIs
IFQ0MywgVDQ0LAotICAgIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzNDg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMw
LCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwK
LSAgICAgIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OD4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVN
UExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIz
LCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RF
TVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
OCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBM
QVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwg
R1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1Q
TEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMs
IEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0NywgR1RFU1RfVEVNUExBVEVfIFQ0OCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDQ5Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcs
IFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsCi0gICAgVDQ1LCBUNDYsIFQ0NywgVDQ4
LCBUNDksIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDk8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcs
Ci0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcs
IFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAgIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcs
IFQ0OCwgVDQ5PiB0eXBlOwotfTsKLQotLy8gVGhlIFR5cGVMaXN0IHRlbXBsYXRlIG1ha2VzIGl0
IHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIgYSBzaW5nbGUgdHlwZQotLy8gb3IgYSBUeXBlczwuLi4+
IGxpc3QgaW4gVFlQRURfVEVTVF9DQVNFKCkgYW5kCi0vLyBJTlNUQU5USUFURV9UWVBFRF9URVNU
X0NBU0VfUCgpLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBUeXBlTGlzdCB7Ci0g
IHR5cGVkZWYgVHlwZXMxPFQ+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5
cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2
LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAs
Ci0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUg
VDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVu
YW1lIFQ0OCwgdHlwZW5hbWUgVDQ5LCB0eXBlbmFtZSBUNTA+Ci1zdHJ1Y3QgVHlwZUxpc3Q8VHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
NCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAgICBUNDQs
IFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+ID4gewotICB0eXBlZGVmIHR5cGVuYW1lIFR5
cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0g
ICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQxLCBUNDIsIFQ0
MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPjo6dHlwZSB0eXBlOwotfTsKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQot
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10
eXBlLXV0aWwuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC10eXBlLXV0aWwuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTFmZGYw
MjViMmM1MzExZmFmOTVlODZlMzMwZmU5MjFjNjBkYWRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NyArMCwwIEBA
Ci0kJCAtKi0gbW9kZTogYysrOyAtKi0KLSR2YXIgbiA9IDUwICAkJCBNYXhpbXVtIGxlbmd0aCBv
ZiB0eXBlIGxpc3RzIHdlIHdhbnQgdG8gc3VwcG9ydC4KLS8vIENvcHlyaWdodCAyMDA4IEdvb2ds
ZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVHlwZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdHlw
ZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAotLy8gdGVzdHMuICBUaGlzIGZpbGUgaXMgZ2VuZXJh
dGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKLS8vCi0vLyBDdXJyZW50bHkg
d2Ugc3VwcG9ydCBhdCBtb3N0ICRuIHR5cGVzIGluIGEgbGlzdCwgYW5kIGF0IG1vc3QgJG4KLS8v
IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBvbmUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3Qg
Y2FzZS4KLS8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbSBpZiB5b3UgbmVlZAotLy8gbW9yZS4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNU
X0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwotCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtcG9ydC5oIgotCi0vLyAjaWZkZWYgX19HTlVDX18gaXMgdG9vIGdlbmVyYWwgaGVyZS4g
IEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0aG91dCB1c2luZwotLy8gbGlic3RkYysrICh3
aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBmcm9tKS4KLSMgaWYgR1RFU1RfSEFTX0NYWEFC
SV9IXwotIyAgaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jIGVsaWYgZGVmaW5lZChfX0hQX2FDQykKLSMg
IGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KLSMgZW5kaWYgIC8vIEdURVNUX0hBU0hfQ1hYQUJJ
X0hfCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEdl
dFR5cGVOYW1lPFQ+KCkgcmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdHlwZSBULgot
Ly8gTkI6IFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGluIEdvb2dsZSBNb2NrLCBzbyBkb24n
dCBtb3ZlIGl0IGluc2lkZSBvZgotLy8gdGhlIHR5cGVkLXRlc3Qtb25seSBzZWN0aW9uIGJlbG93
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBHZXRUeXBlTmFtZSgpIHsKLSMg
aWYgR1RFU1RfSEFTX1JUVEkKLQotICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0gdHlwZWlkKFQp
Lm5hbWUoKTsKLSMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVmaW5lZChfX0hQX2FDQykK
LSAgaW50IHN0YXR1cyA9IDA7Ci0gIC8vIGdjYydzIGltcGxlbWVudGF0aW9uIG9mIHR5cGVpZChU
KS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAotICAvLyBzbyB3ZSBoYXZlIHRvIGRlbWFu
Z2xlIGl0LgotIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KLSAgdXNpbmcgYWJpOjpfX2N4YV9k
ZW1hbmdsZTsKLSMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXwotICBjaGFyKiBjb25z
dCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwgMCwgJnN0YXR1cyk7Ci0g
IGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8gcmVhZGFibGVfbmFtZSA6
IG5hbWUpOwotICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4gbmFtZV9zdHI7Ci0jICBl
bHNlCi0gIHJldHVybiBuYW1lOwotIyAgZW5kaWYgIC8vIEdURVNUX0hBU19DWFhBQklfSF8gfHwg
X19IUF9hQ0MKLQotIyBlbHNlCi0KLSAgcmV0dXJuICI8dHlwZT4iOwotCi0jIGVuZGlmICAvLyBH
VEVTVF9IQVNfUlRUSQotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFT
X1RZUEVEX1RFU1RfUAotCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46OnR5cGUgaXMgZGVmaW5l
ZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRoaXMgY2FuIGJlIHVzZWQg
YXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0Ci0vLyB0d28gdHlwZXMg
YXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0
IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQXNzZXJ0VHlw
ZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OwotCi0vLyBBIHVuaXF1ZSB0eXBl
IHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVudHMgb2YgY2xhc3MKLS8v
IHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxhdGUgdmFyaWFkaWMgdGVt
cGxhdGVzCi0vLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91YmxlPiwgYW5kIGV0Yyks
IHdoaWNoIEMrKyBkb2Vzbid0Ci0vLyBzdXBwb3J0IGRpcmVjdGx5Lgotc3RydWN0IE5vbmUge307
Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZmFtaWx5IG9mIHN0cnVjdCBhbmQgc3RydWN0IHRlbXBsYXRl
cyBhcmUgdXNlZCB0bwotLy8gcmVwcmVzZW50IHR5cGUgbGlzdHMuICBJbiBwYXJ0aWN1bGFyLCBU
eXBlc048VDEsIFQyLCAuLi4sIFROPgotLy8gcmVwcmVzZW50cyBhIHR5cGUgbGlzdCB3aXRoIE4g
dHlwZXMgKFQxLCBUMiwgLi4uLCBhbmQgVE4pIGluIGl0LgotLy8gRXhjZXB0IGZvciBUeXBlczAs
IGV2ZXJ5IHN0cnVjdCBpbiB0aGUgZmFtaWx5IGhhcyB0d28gbWVtYmVyIHR5cGVzOgotLy8gSGVh
ZCBmb3IgdGhlIGZpcnN0IHR5cGUgaW4gdGhlIGxpc3QsIGFuZCBUYWlsIGZvciB0aGUgcmVzdCBv
ZiB0aGUKLS8vIGxpc3QuCi0KLS8vIFRoZSBlbXB0eSB0eXBlIGxpc3QuCi1zdHJ1Y3QgVHlwZXMw
IHt9OwotCi0vLyBUeXBlIGxpc3RzIG9mIGxlbmd0aCAxLCAyLCAzLCBhbmQgc28gb24uCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMT4KLXN0cnVjdCBUeXBlczEgewotICB0eXBlZGVmIFQxIEhlYWQ7
Ci0gIHR5cGVkZWYgVHlwZXMwIFRhaWw7Ci19OwotCi0kcmFuZ2UgaSAyLi5uCi0KLSRmb3IgaSBb
WwotJHJhbmdlIGogMS4uaQotJHJhbmdlIGsgMi4uaQotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBl
bmFtZSBUJGpdXT4KLXN0cnVjdCBUeXBlcyRpIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBl
ZGVmIFR5cGVzJChpLTEpPCRmb3IgaywgW1tUJGtdXT4gVGFpbDsKLX07Ci0KLQotXV0KLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFdlIGRvbid0IHdhbnQgdG8gcmVxdWlyZSB0aGUg
dXNlcnMgdG8gd3JpdGUgVHlwZXNOPC4uLj4gZGlyZWN0bHksCi0vLyBhcyB0aGF0IHdvdWxkIHJl
cXVpcmUgdGhlbSB0byBjb3VudCB0aGUgbGVuZ3RoLiAgVHlwZXM8Li4uPiBpcyBtdWNoCi0vLyBl
YXNpZXIgdG8gd3JpdGUsIGJ1dCBnZW5lcmF0ZXMgaG9ycmlibGUgbWVzc2FnZXMgd2hlbiB0aGVy
ZSBpcyBhCi0vLyBjb21waWxlciBlcnJvciwgYXMgZ2NjIGluc2lzdHMgb24gcHJpbnRpbmcgb3V0
IGVhY2ggdGVtcGxhdGUKLS8vIGFyZ3VtZW50LCBldmVuIGlmIGl0IGhhcyB0aGUgZGVmYXVsdCB2
YWx1ZSAodGhpcyBtZWFucyBUeXBlczxpbnQ+Ci0vLyB3aWxsIGFwcGVhciBhcyBUeXBlczxpbnQs
IE5vbmUsIE5vbmUsIC4uLiwgTm9uZT4gaW4gdGhlIGNvbXBpbGVyCi0vLyBlcnJvcnMpLgotLy8K
LS8vIE91ciBzb2x1dGlvbiBpcyB0byBjb21iaW5lIHRoZSBiZXN0IHBhcnQgb2YgdGhlIHR3byBh
cHByb2FjaGVzOiBhCi0vLyB1c2VyIHdvdWxkIHdyaXRlIFR5cGVzPFQxLCAuLi4sIFROPiwgYW5k
IEdvb2dsZSBUZXN0IHdpbGwgdHJhbnNsYXRlCi0vLyB0aGF0IHRvIFR5cGVzTjxUMSwgLi4uLCBU
Tj4gaW50ZXJuYWxseSB0byBtYWtlIGVycm9yIG1lc3NhZ2VzCi0vLyByZWFkYWJsZS4gIFRoZSB0
cmFuc2xhdGlvbiBpcyBkb25lIGJ5IHRoZSAndHlwZScgbWVtYmVyIG9mIHRoZQotLy8gVHlwZXMg
dGVtcGxhdGUuCi0KLSRyYW5nZSBpIDEuLm4KLXRlbXBsYXRlIDwkZm9yIGksIFtbdHlwZW5hbWUg
VCRpID0gaW50ZXJuYWw6Ok5vbmVdXT4KLXN0cnVjdCBUeXBlcyB7Ci0gIHR5cGVkZWYgaW50ZXJu
YWw6OlR5cGVzJG48JGZvciBpLCBbW1QkaV1dPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0
cnVjdCBUeXBlczwkZm9yIGksIFtbaW50ZXJuYWw6Ok5vbmVdXT4gewotICB0eXBlZGVmIGludGVy
bmFsOjpUeXBlczAgdHlwZTsKLX07Ci0KLSRyYW5nZSBpIDEuLm4tMQotJGZvciBpIFtbCi0kcmFu
Z2UgaiAxLi5pCi0kcmFuZ2UgayBpKzEuLm4KLXRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUg
VCRqXV0+Ci1zdHJ1Y3QgVHlwZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIGludGVybmFsOjpO
b25lXV0+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMkaTwkZm9yIGosIFtbVCRqXV0+IHR5
cGU7Ci19OwotCi1dXQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0jIGRlZmluZSBHVEVTVF9U
RU1QTEFURV8gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzCi0KLS8vIFRoZSB0ZW1wbGF0ZSAi
c2VsZWN0b3IiIHN0cnVjdCBUZW1wbGF0ZVNlbDxUbXBsPiBpcyB1c2VkIHRvCi0vLyByZXByZXNl
bnQgVG1wbCwgd2hpY2ggbXVzdCBiZSBhIGNsYXNzIHRlbXBsYXRlIHdpdGggb25lIHR5cGUKLS8v
IHBhcmFtZXRlciwgYXMgYSB0eXBlLiAgVGVtcGxhdGVTZWw8VG1wbD46OkJpbmQ8VD46OnR5cGUg
aXMgZGVmaW5lZAotLy8gYXMgdGhlIHR5cGUgVG1wbDxUPi4gIFRoaXMgYWxsb3dzIHVzIHRvIGFj
dHVhbGx5IGluc3RhbnRpYXRlIHRoZQotLy8gdGVtcGxhdGUgInNlbGVjdGVkIiBieSBUZW1wbGF0
ZVNlbDxUbXBsPi4KLS8vCi0vLyBUaGlzIHRyaWNrIGlzIG5lY2Vzc2FyeSBmb3Igc2ltdWxhdGlu
ZyB0eXBlZGVmIGZvciBjbGFzcyB0ZW1wbGF0ZXMsCi0vLyB3aGljaCBDKysgZG9lc24ndCBzdXBw
b3J0IGRpcmVjdGx5LgotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUbXBsPgotc3RydWN0IFRl
bXBsYXRlU2VsIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0cnVjdCBCaW5kIHsKLSAg
ICB0eXBlZGVmIFRtcGw8VD4gdHlwZTsKLSAgfTsKLX07Ci0KLSMgZGVmaW5lIEdURVNUX0JJTkRf
KFRtcGxTZWwsIFQpIFwKLSAgVG1wbFNlbDo6dGVtcGxhdGUgQmluZDxUPjo6dHlwZQotCi0vLyBB
IHVuaXF1ZSBzdHJ1Y3QgdGVtcGxhdGUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhl
Ci0vLyBhcmd1bWVudHMgb2YgY2xhc3MgdGVtcGxhdGUgVGVtcGxhdGVzLiAgVGhpcyBhbGxvd3Mg
dXMgdG8gc2ltdWxhdGUKLS8vIHZhcmlhZGljIHRlbXBsYXRlcyAoZS5nLiBUZW1wbGF0ZXM8aW50
PiwgVGVtcGxhdGVzPGludCwgZG91YmxlPiwKLS8vIGFuZCBldGMpLCB3aGljaCBDKysgZG9lc24n
dCBzdXBwb3J0IGRpcmVjdGx5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgTm9uZVQg
e307Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZmFtaWx5IG9mIHN0cnVjdCBhbmQgc3RydWN0IHRlbXBs
YXRlcyBhcmUgdXNlZCB0bwotLy8gcmVwcmVzZW50IHRlbXBsYXRlIGxpc3RzLiAgSW4gcGFydGlj
dWxhciwgVGVtcGxhdGVzTjxUMSwgVDIsIC4uLiwKLS8vIFROPiByZXByZXNlbnRzIGEgbGlzdCBv
ZiBOIHRlbXBsYXRlcyAoVDEsIFQyLCAuLi4sIGFuZCBUTikuICBFeGNlcHQKLS8vIGZvciBUZW1w
bGF0ZXMwLCBldmVyeSBzdHJ1Y3QgaW4gdGhlIGZhbWlseSBoYXMgdHdvIG1lbWJlciB0eXBlczoK
LS8vIEhlYWQgZm9yIHRoZSBzZWxlY3RvciBvZiB0aGUgZmlyc3QgdGVtcGxhdGUgaW4gdGhlIGxp
c3QsIGFuZCBUYWlsCi0vLyBmb3IgdGhlIHJlc3Qgb2YgdGhlIGxpc3QuCi0KLS8vIFRoZSBlbXB0
eSB0ZW1wbGF0ZSBsaXN0Lgotc3RydWN0IFRlbXBsYXRlczAge307Ci0KLS8vIFRlbXBsYXRlIGxp
c3RzIG9mIGxlbmd0aCAxLCAyLCAzLCBhbmQgc28gb24uCi0KLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDE+Ci1zdHJ1Y3QgVGVtcGxhdGVzMSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMCBUYWlsOwotfTsKLQotJHJhbmdlIGkgMi4ubgot
Ci0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSRyYW5nZSBrIDIuLmkKLXRlbXBsYXRlIDwkZm9y
IGosIFtbR1RFU1RfVEVNUExBVEVfIFQkal1dPgotc3RydWN0IFRlbXBsYXRlcyRpIHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMkKGktMSk8JGZv
ciBrLCBbW1Qka11dPiBUYWlsOwotfTsKLQotCi1dXQotCi0vLyBXZSBkb24ndCB3YW50IHRvIHJl
cXVpcmUgdGhlIHVzZXJzIHRvIHdyaXRlIFRlbXBsYXRlc048Li4uPiBkaXJlY3RseSwKLS8vIGFz
IHRoYXQgd291bGQgcmVxdWlyZSB0aGVtIHRvIGNvdW50IHRoZSBsZW5ndGguICBUZW1wbGF0ZXM8
Li4uPiBpcyBtdWNoCi0vLyBlYXNpZXIgdG8gd3JpdGUsIGJ1dCBnZW5lcmF0ZXMgaG9ycmlibGUg
bWVzc2FnZXMgd2hlbiB0aGVyZSBpcyBhCi0vLyBjb21waWxlciBlcnJvciwgYXMgZ2NjIGluc2lz
dHMgb24gcHJpbnRpbmcgb3V0IGVhY2ggdGVtcGxhdGUKLS8vIGFyZ3VtZW50LCBldmVuIGlmIGl0
IGhhcyB0aGUgZGVmYXVsdCB2YWx1ZSAodGhpcyBtZWFucyBUZW1wbGF0ZXM8bGlzdD4KLS8vIHdp
bGwgYXBwZWFyIGFzIFRlbXBsYXRlczxsaXN0LCBOb25lVCwgTm9uZVQsIC4uLiwgTm9uZVQ+IGlu
IHRoZSBjb21waWxlcgotLy8gZXJyb3JzKS4KLS8vCi0vLyBPdXIgc29sdXRpb24gaXMgdG8gY29t
YmluZSB0aGUgYmVzdCBwYXJ0IG9mIHRoZSB0d28gYXBwcm9hY2hlczogYQotLy8gdXNlciB3b3Vs
ZCB3cml0ZSBUZW1wbGF0ZXM8VDEsIC4uLiwgVE4+LCBhbmQgR29vZ2xlIFRlc3Qgd2lsbCB0cmFu
c2xhdGUKLS8vIHRoYXQgdG8gVGVtcGxhdGVzTjxUMSwgLi4uLCBUTj4gaW50ZXJuYWxseSB0byBt
YWtlIGVycm9yIG1lc3NhZ2VzCi0vLyByZWFkYWJsZS4gIFRoZSB0cmFuc2xhdGlvbiBpcyBkb25l
IGJ5IHRoZSAndHlwZScgbWVtYmVyIG9mIHRoZQotLy8gVGVtcGxhdGVzIHRlbXBsYXRlLgotCi0k
cmFuZ2UgaSAxLi5uCi10ZW1wbGF0ZSA8JGZvciBpLCBbW0dURVNUX1RFTVBMQVRFXyBUJGkgPSBO
b25lVF1dPgotc3RydWN0IFRlbXBsYXRlcyB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzJG48JGZvciBp
LCBbW1QkaV1dPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBUZW1wbGF0ZXM8JGZv
ciBpLCBbW05vbmVUXV0+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMwIHR5cGU7Ci19OwotCi0kcmFu
Z2UgaSAxLi5uLTEKLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHJhbmdlIGsgaSsxLi5uCi10
ZW1wbGF0ZSA8JGZvciBqLCBbW0dURVNUX1RFTVBMQVRFXyBUJGpdXT4KLXN0cnVjdCBUZW1wbGF0
ZXM8JGZvciBqLCBbW1Qkal1dJGZvciBrW1ssIE5vbmVUXV0+IHsKLSAgdHlwZWRlZiBUZW1wbGF0
ZXMkaTwkZm9yIGosIFtbVCRqXV0+IHR5cGU7Ci19OwotCi1dXQotCi0vLyBUaGUgVHlwZUxpc3Qg
dGVtcGxhdGUgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGVpdGhlciBhIHNpbmdsZSB0eXBlCi0v
LyBvciBhIFR5cGVzPC4uLj4gbGlzdCBpbiBUWVBFRF9URVNUX0NBU0UoKSBhbmQKLS8vIElOU1RB
TlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3Ry
dWN0IFR5cGVMaXN0IHsKLSAgdHlwZWRlZiBUeXBlczE8VD4gdHlwZTsKLX07Ci0KLQotJHJhbmdl
IGkgMS4ubgotdGVtcGxhdGUgPCRmb3IgaSwgW1t0eXBlbmFtZSBUJGldXT4KLXN0cnVjdCBUeXBl
TGlzdDxUeXBlczwkZm9yIGksIFtbVCRpXV0+ID4gewotICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVz
PCRmb3IgaSwgW1tUJGldXT46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L200L2FjeF9wdGhyZWFkLm00IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJlYWQubTQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZjIwZGUxNDRhMTFiZTJhYTYwM2IwNGVh
NTExMjQ0MTkxMDM3YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJlYWQubTQKKysrIC9kZXYvbnVsbApAQCAtMSwz
NjMgKzAsMCBAQAotIyBUaGlzIHdhcyByZXRyaWV2ZWQgZnJvbQotIyAgICBodHRwOi8vc3ZuLjBw
b2ludGVyLmRlL3ZpZXd2Yy90cnVuay9jb21tb24vYWN4X3B0aHJlYWQubTQ/cmV2aXNpb249MTI3
NyZyb290PWF2YWhpCi0jIFNlZSBhbHNvIChwZXJoYXBzIGZvciBuZXcgdmVyc2lvbnM/KQotIyAg
ICBodHRwOi8vc3ZuLjBwb2ludGVyLmRlL3ZpZXd2Yy90cnVuay9jb21tb24vYWN4X3B0aHJlYWQu
bTQ/cm9vdD1hdmFoaQotIwotIyBXZSd2ZSByZXdyaXR0ZW4gdGhlIGluY29uc2lzdGVuY3kgY2hl
Y2sgY29kZSAoZnJvbSBhdmFoaSksIHRvIHdvcmsKLSMgbW9yZSBicm9hZGx5LiAgSW4gcGFydGlj
dWxhciwgaXQgbm8gbG9uZ2VyIGFzc3VtZXMgbGQgYWNjZXB0cyAtemRlZnMuCi0jIFRoaXMgY2F1
c2VkIGEgcmVzdHJ1Y3Rpbmcgb2YgdGhlIGNvZGUsIGJ1dCB0aGUgZnVuY3Rpb25hbGl0eSBoYXMg
b25seQotIyBjaGFuZ2VkIGEgbGl0dGxlLgotCi1kbmwgQHN5bm9wc2lzIEFDWF9QVEhSRUFEKFtB
Q1RJT04tSUYtRk9VTkRbLCBBQ1RJT04tSUYtTk9ULUZPVU5EXV0pCi1kbmwKLWRubCBAc3VtbWFy
eSBmaWd1cmUgb3V0IGhvdyB0byBidWlsZCBDIHByb2dyYW1zIHVzaW5nIFBPU0lYIHRocmVhZHMK
LWRubAotZG5sIFRoaXMgbWFjcm8gZmlndXJlcyBvdXQgaG93IHRvIGJ1aWxkIEMgcHJvZ3JhbXMg
dXNpbmcgUE9TSVggdGhyZWFkcy4KLWRubCBJdCBzZXRzIHRoZSBQVEhSRUFEX0xJQlMgb3V0cHV0
IHZhcmlhYmxlIHRvIHRoZSB0aHJlYWRzIGxpYnJhcnkgYW5kCi1kbmwgbGlua2VyIGZsYWdzLCBh
bmQgdGhlIFBUSFJFQURfQ0ZMQUdTIG91dHB1dCB2YXJpYWJsZSB0byBhbnkgc3BlY2lhbAotZG5s
IEMgY29tcGlsZXIgZmxhZ3MgdGhhdCBhcmUgbmVlZGVkLiAoVGhlIHVzZXIgY2FuIGFsc28gZm9y
Y2UgY2VydGFpbgotZG5sIGNvbXBpbGVyIGZsYWdzL2xpYnMgdG8gYmUgdGVzdGVkIGJ5IHNldHRp
bmcgdGhlc2UgZW52aXJvbm1lbnQKLWRubCB2YXJpYWJsZXMuKQotZG5sCi1kbmwgQWxzbyBzZXRz
IFBUSFJFQURfQ0MgdG8gYW55IHNwZWNpYWwgQyBjb21waWxlciB0aGF0IGlzIG5lZWRlZCBmb3IK
LWRubCBtdWx0aS10aHJlYWRlZCBwcm9ncmFtcyAoZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIEND
IG90aGVyd2lzZSkuCi1kbmwgKFRoaXMgaXMgbmVjZXNzYXJ5IG9uIEFJWCB0byB1c2UgdGhlIHNw
ZWNpYWwgY2NfciBjb21waWxlciBhbGlhcy4pCi1kbmwKLWRubCBOT1RFOiBZb3UgYXJlIGFzc3Vt
ZWQgdG8gbm90IG9ubHkgY29tcGlsZSB5b3VyIHByb2dyYW0gd2l0aCB0aGVzZQotZG5sIGZsYWdz
LCBidXQgYWxzbyBsaW5rIGl0IHdpdGggdGhlbSBhcyB3ZWxsLiBlLmcuIHlvdSBzaG91bGQgbGlu
awotZG5sIHdpdGggJFBUSFJFQURfQ0MgJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MgJExERkxBR1Mg
Li4uICRQVEhSRUFEX0xJQlMKLWRubCAkTElCUwotZG5sCi1kbmwgSWYgeW91IGFyZSBvbmx5IGJ1
aWxkaW5nIHRocmVhZHMgcHJvZ3JhbXMsIHlvdSBtYXkgd2lzaCB0byB1c2UKLWRubCB0aGVzZSB2
YXJpYWJsZXMgaW4geW91ciBkZWZhdWx0IExJQlMsIENGTEFHUywgYW5kIENDOgotZG5sCi1kbmwg
ICAgICAgIExJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCi1kbmwgICAgICAgIENGTEFHUz0iJENG
TEFHUyAkUFRIUkVBRF9DRkxBR1MiCi1kbmwgICAgICAgIENDPSIkUFRIUkVBRF9DQyIKLWRubAot
ZG5sIEluIGFkZGl0aW9uLCBpZiB0aGUgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUgdGhyZWFkLWF0
dHJpYnV0ZQotZG5sIGNvbnN0YW50IGhhcyBhIG5vbnN0YW5kYXJkIG5hbWUsIGRlZmluZXMgUFRI
UkVBRF9DUkVBVEVfSk9JTkFCTEUgdG8KLWRubCB0aGF0IG5hbWUgKGUuZy4gUFRIUkVBRF9DUkVB
VEVfVU5ERVRBQ0hFRCBvbiBBSVgpLgotZG5sCi1kbmwgQUNUSU9OLUlGLUZPVU5EIGlzIGEgbGlz
dCBvZiBzaGVsbCBjb21tYW5kcyB0byBydW4gaWYgYSB0aHJlYWRzCi1kbmwgbGlicmFyeSBpcyBm
b3VuZCwgYW5kIEFDVElPTi1JRi1OT1QtRk9VTkQgaXMgYSBsaXN0IG9mIGNvbW1hbmRzIHRvCi1k
bmwgcnVuIGl0IGlmIGl0IGlzIG5vdCBmb3VuZC4gSWYgQUNUSU9OLUlGLUZPVU5EIGlzIG5vdCBz
cGVjaWZpZWQsIHRoZQotZG5sIGRlZmF1bHQgYWN0aW9uIHdpbGwgZGVmaW5lIEhBVkVfUFRIUkVB
RC4KLWRubAotZG5sIFBsZWFzZSBsZXQgdGhlIGF1dGhvcnMga25vdyBpZiB0aGlzIG1hY3JvIGZh
aWxzIG9uIGFueSBwbGF0Zm9ybSwgb3IKLWRubCBpZiB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2Vz
dGlvbnMgb3IgY29tbWVudHMuIFRoaXMgbWFjcm8gd2FzIGJhc2VkCi1kbmwgb24gd29yayBieSBT
R0ogb24gYXV0b2NvbmYgc2NyaXB0cyBmb3IgRkZUVyAod3d3LmZmdHcub3JnKSAod2l0aAotZG5s
IGhlbHAgZnJvbSBNLiBGcmlnbyksIGFzIHdlbGwgYXMgYWNfcHRocmVhZCBhbmQgaGJfcHRocmVh
ZCBtYWNyb3MKLWRubCBwb3N0ZWQgYnkgQWxlamFuZHJvIEZvcmVybyBDdWVydm8gdG8gdGhlIGF1
dG9jb25mIG1hY3JvIHJlcG9zaXRvcnkuCi1kbmwgV2UgYXJlIGFsc28gZ3JhdGVmdWwgZm9yIHRo
ZSBoZWxwZnVsIGZlZWRiYWNrIG9mIG51bWVyb3VzIHVzZXJzLgotZG5sCi1kbmwgQGNhdGVnb3J5
IEluc3RhbGxlZFBhY2thZ2VzCi1kbmwgQGF1dGhvciBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVu
akBhbHVtLm1pdC5lZHU+Ci1kbmwgQHZlcnNpb24gMjAwNi0wNS0yOQotZG5sIEBsaWNlbnNlIEdQ
TFdpdGhBQ0V4Y2VwdGlvbgotZG5sIAotZG5sIENoZWNrcyBmb3IgR0NDIHNoYXJlZC9wdGhyZWFk
IGluY29uc2lzdGVuY3kgYmFzZWQgb24gd29yayBieQotZG5sIE1hcmNpbiBPd3NpYW55IDxtYXJj
aW5Ab3dzaWFueS5wbD4KLQotCi1BQ19ERUZVTihbQUNYX1BUSFJFQURdLCBbCi1BQ19SRVFVSVJF
KFtBQ19DQU5PTklDQUxfSE9TVF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotYWN4X3B0aHJl
YWRfb2s9bm8KLQotIyBXZSB1c2VkIHRvIGNoZWNrIGZvciBwdGhyZWFkLmggZmlyc3QsIGJ1dCB0
aGlzIGZhaWxzIGlmIHB0aHJlYWQuaAotIyByZXF1aXJlcyBzcGVjaWFsIGNvbXBpbGVyIGZsYWdz
IChlLmcuIG9uIFRydWU2NCBvciBTZXF1ZW50KS4KLSMgSXQgZ2V0cyBjaGVja2VkIGZvciBpbiB0
aGUgbGluayB0ZXN0IGFueXdheS4KLQotIyBGaXJzdCBvZiBhbGwsIGNoZWNrIGlmIHRoZSB1c2Vy
IGhhcyBzZXQgYW55IG9mIHRoZSBQVEhSRUFEX0xJQlMsCi0jIGV0Y2V0ZXJhIGVudmlyb25tZW50
IHZhcmlhYmxlcywgYW5kIGlmIHRocmVhZHMgbGlua2luZyB3b3JrcyB1c2luZwotIyB0aGVtOgot
aWYgdGVzdCB4IiRQVEhSRUFEX0xJQlMkUFRIUkVBRF9DRkxBR1MiICE9IHg7IHRoZW4KLSAgICAg
ICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVB
RF9DRkxBR1MiCi0gICAgICAgIHNhdmVfTElCUz0iJExJQlMiCi0gICAgICAgIExJQlM9IiRQVEhS
RUFEX0xJQlMgJExJQlMiCi0gICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB0aHJlYWRfam9p
biBpbiBMSUJTPSRQVEhSRUFEX0xJQlMgd2l0aCBDRkxBR1M9JFBUSFJFQURfQ0ZMQUdTXSkKLSAg
ICAgICAgQUNfVFJZX0xJTktfRlVOQyhwdGhyZWFkX2pvaW4sIGFjeF9wdGhyZWFkX29rPXllcykK
LSAgICAgICAgQUNfTVNHX1JFU1VMVCgkYWN4X3B0aHJlYWRfb2spCi0gICAgICAgIGlmIHRlc3Qg
eCIkYWN4X3B0aHJlYWRfb2siID0geG5vOyB0aGVuCi0gICAgICAgICAgICAgICAgUFRIUkVBRF9M
SUJTPSIiCi0gICAgICAgICAgICAgICAgUFRIUkVBRF9DRkxBR1M9IiIKLSAgICAgICAgZmkKLSAg
ICAgICAgTElCUz0iJHNhdmVfTElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi1m
aQotCi0jIFdlIG11c3QgY2hlY2sgZm9yIHRoZSB0aHJlYWRzIGxpYnJhcnkgdW5kZXIgYSBudW1i
ZXIgb2YgZGlmZmVyZW50Ci0jIG5hbWVzOyB0aGUgb3JkZXJpbmcgaXMgdmVyeSBpbXBvcnRhbnQg
YmVjYXVzZSBzb21lIHN5c3RlbXMKLSMgKGUuZy4gREVDKSBoYXZlIGJvdGggLWxwdGhyZWFkIGFu
ZCAtbHB0aHJlYWRzLCB3aGVyZSBvbmUgb2YgdGhlCi0jIGxpYnJhcmllcyBpcyBicm9rZW4gKG5v
bi1QT1NJWCkuCi0KLSMgQ3JlYXRlIGEgbGlzdCBvZiB0aHJlYWQgZmxhZ3MgdG8gdHJ5LiAgSXRl
bXMgc3RhcnRpbmcgd2l0aCBhICItIiBhcmUKLSMgQyBjb21waWxlciBmbGFncywgYW5kIG90aGVy
IGl0ZW1zIGFyZSBsaWJyYXJ5IG5hbWVzLCBleGNlcHQgZm9yICJub25lIgotIyB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB3ZSB0cnkgd2l0aG91dCBhbnkgZmxhZ3MgYXQgYWxsLCBhbmQgInB0aHJlYWQt
Y29uZmlnIgotIyB3aGljaCBpcyBhIHByb2dyYW0gcmV0dXJuaW5nIHRoZSBmbGFncyBmb3IgdGhl
IFB0aCBlbXVsYXRpb24gbGlicmFyeS4KLQotYWN4X3B0aHJlYWRfZmxhZ3M9InB0aHJlYWRzIG5v
bmUgLUt0aHJlYWQgLWt0aHJlYWQgbHRocmVhZCAtcHRocmVhZCAtcHRocmVhZHMgLW10aHJlYWRz
IHB0aHJlYWQgLS10aHJlYWQtc2FmZSAtbXQgcHRocmVhZC1jb25maWciCi0KLSMgVGhlIG9yZGVy
aW5nICppcyogKHNvbWV0aW1lcykgaW1wb3J0YW50LiAgU29tZSBub3RlcyBvbiB0aGUKLSMgaW5k
aXZpZHVhbCBpdGVtcyBmb2xsb3c6Ci0KLSMgcHRocmVhZHM6IEFJWCAobXVzdCBjaGVjayB0aGlz
IGJlZm9yZSAtbHB0aHJlYWQpCi0jIG5vbmU6IGluIGNhc2UgdGhyZWFkcyBhcmUgaW4gbGliYzsg
c2hvdWxkIGJlIHRyaWVkIGJlZm9yZSAtS3RocmVhZCBhbmQKLSMgICAgICAgb3RoZXIgY29tcGls
ZXIgZmxhZ3MgdG8gcHJldmVudCBjb250aW51YWwgY29tcGlsZXIgd2FybmluZ3MKLSMgLUt0aHJl
YWQ6IFNlcXVlbnQgKHRocmVhZHMgaW4gbGliYywgYnV0IC1LdGhyZWFkIG5lZWRlZCBmb3IgcHRo
cmVhZC5oKQotIyAta3RocmVhZDogRnJlZUJTRCBrZXJuZWwgdGhyZWFkcyAocHJlZmVycmVkIHRv
IC1wdGhyZWFkIHNpbmNlIFNNUC1hYmxlKQotIyBsdGhyZWFkOiBMaW51eFRocmVhZHMgcG9ydCBv
biBGcmVlQlNEIChhbHNvIHByZWZlcnJlZCB0byAtcHRocmVhZCkKLSMgLXB0aHJlYWQ6IExpbnV4
L2djYyAoa2VybmVsIHRocmVhZHMpLCBCU0QvZ2NjICh1c2VybGFuZCB0aHJlYWRzKQotIyAtcHRo
cmVhZHM6IFNvbGFyaXMvZ2NjCi0jIC1tdGhyZWFkczogTWluZ3czMi9nY2MsIEx5bngvZ2NjCi0j
IC1tdDogU3VuIFdvcmtzaG9wIEMgKG1heSBvbmx5IGxpbmsgU3VuT1MgdGhyZWFkcyBbLWx0aHJl
YWRdLCBidXQgaXQKLSMgICAgICBkb2Vzbid0IGh1cnQgdG8gY2hlY2sgc2luY2UgdGhpcyBzb21l
dGltZXMgZGVmaW5lcyBwdGhyZWFkcyB0b287Ci0jICAgICAgYWxzbyBkZWZpbmVzIC1EX1JFRU5U
UkFOVCkKLSMgICAgICAuLi4gLW10IGlzIGFsc28gdGhlIHB0aHJlYWRzIGZsYWcgZm9yIEhQL2FD
QwotIyBwdGhyZWFkOiBMaW51eCwgZXRjZXRlcmEKLSMgLS10aHJlYWQtc2FmZTogS0FJIEMrKwot
IyBwdGhyZWFkLWNvbmZpZzogdXNlIHB0aHJlYWQtY29uZmlnIHByb2dyYW0gKGZvciBHTlUgUHRo
IGxpYnJhcnkpCi0KLWNhc2UgIiR7aG9zdF9jcHV9LSR7aG9zdF9vc30iIGluCi0gICAgICAgICpz
b2xhcmlzKikKLQotICAgICAgICAjIE9uIFNvbGFyaXMgKGF0IGxlYXN0LCBmb3Igc29tZSB2ZXJz
aW9ucyksIGxpYmMgY29udGFpbnMgc3R1YmJlZAotICAgICAgICAjIChub24tZnVuY3Rpb25hbCkg
dmVyc2lvbnMgb2YgdGhlIHB0aHJlYWRzIHJvdXRpbmVzLCBzbyBsaW5rLWJhc2VkCi0gICAgICAg
ICMgdGVzdHMgd2lsbCBlcnJvbmVvdXNseSBzdWNjZWVkLiAgKFdlIG5lZWQgdG8gbGluayB3aXRo
IC1wdGhyZWFkcy8tbXQvCi0gICAgICAgICMgLWxwdGhyZWFkLikgIChUaGUgc3R1YnMgYXJlIG1p
c3NpbmcgcHRocmVhZF9jbGVhbnVwX3B1c2gsIG9yIHJhdGhlcgotICAgICAgICAjIGEgZnVuY3Rp
b24gY2FsbGVkIGJ5IHRoaXMgbWFjcm8sIHNvIHdlIGNvdWxkIGNoZWNrIGZvciB0aGF0LCBidXQK
LSAgICAgICAgIyB3aG8ga25vd3Mgd2hldGhlciB0aGV5J2xsIHN0dWIgdGhhdCB0b28gaW4gYSBm
dXR1cmUgbGliYy4pICBTbywKLSAgICAgICAgIyB3ZSdsbCBqdXN0IGxvb2sgZm9yIC1wdGhyZWFk
cyBhbmQgLWxwdGhyZWFkIGZpcnN0OgotCi0gICAgICAgIGFjeF9wdGhyZWFkX2ZsYWdzPSItcHRo
cmVhZHMgcHRocmVhZCAtbXQgLXB0aHJlYWQgJGFjeF9wdGhyZWFkX2ZsYWdzIgotICAgICAgICA7
OwotZXNhYwotCi1pZiB0ZXN0IHgiJGFjeF9wdGhyZWFkX29rIiA9IHhubzsgdGhlbgotZm9yIGZs
YWcgaW4gJGFjeF9wdGhyZWFkX2ZsYWdzOyBkbwotCi0gICAgICAgIGNhc2UgJGZsYWcgaW4KLSAg
ICAgICAgICAgICAgICBub25lKQotICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hl
dGhlciBwdGhyZWFkcyB3b3JrIHdpdGhvdXQgYW55IGZsYWdzXSkKLSAgICAgICAgICAgICAgICA7
OwotCi0gICAgICAgICAgICAgICAgLSopCi0gICAgICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5H
KFt3aGV0aGVyIHB0aHJlYWRzIHdvcmsgd2l0aCAkZmxhZ10pCi0gICAgICAgICAgICAgICAgUFRI
UkVBRF9DRkxBR1M9IiRmbGFnIgotICAgICAgICAgICAgICAgIDs7Ci0KLQkJcHRocmVhZC1jb25m
aWcpCi0JCUFDX0NIRUNLX1BST0coYWN4X3B0aHJlYWRfY29uZmlnLCBwdGhyZWFkLWNvbmZpZywg
eWVzLCBubykKLQkJaWYgdGVzdCB4IiRhY3hfcHRocmVhZF9jb25maWciID0geG5vOyB0aGVuIGNv
bnRpbnVlOyBmaQotCQlQVEhSRUFEX0NGTEFHUz0iYHB0aHJlYWQtY29uZmlnIC0tY2ZsYWdzYCIK
LQkJUFRIUkVBRF9MSUJTPSJgcHRocmVhZC1jb25maWcgLS1sZGZsYWdzYCBgcHRocmVhZC1jb25m
aWcgLS1saWJzYCIKLQkJOzsKLQotICAgICAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAg
QUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIHB0aHJlYWRzIGxpYnJhcnkgLWwkZmxhZ10pCi0gICAg
ICAgICAgICAgICAgUFRIUkVBRF9MSUJTPSItbCRmbGFnIgotICAgICAgICAgICAgICAgIDs7Ci0g
ICAgICAgIGVzYWMKLQotICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBzYXZlX0NG
TEFHUz0iJENGTEFHUyIKLSAgICAgICAgTElCUz0iJFBUSFJFQURfTElCUyAkTElCUyIKLSAgICAg
ICAgQ0ZMQUdTPSIkQ0ZMQUdTICRQVEhSRUFEX0NGTEFHUyIKLQotICAgICAgICAjIENoZWNrIGZv
ciB2YXJpb3VzIGZ1bmN0aW9ucy4gIFdlIG11c3QgaW5jbHVkZSBwdGhyZWFkLmgsCi0gICAgICAg
ICMgc2luY2Ugc29tZSBmdW5jdGlvbnMgbWF5IGJlIG1hY3Jvcy4gIChPbiB0aGUgU2VxdWVudCwg
d2UKLSAgICAgICAgIyBuZWVkIGEgc3BlY2lhbCBmbGFnIC1LdGhyZWFkIHRvIG1ha2UgdGhpcyBo
ZWFkZXIgY29tcGlsZS4pCi0gICAgICAgICMgV2UgY2hlY2sgZm9yIHB0aHJlYWRfam9pbiBiZWNh
dXNlIGl0IGlzIGluIC1scHRocmVhZCBvbiBJUklYCi0gICAgICAgICMgd2hpbGUgcHRocmVhZF9j
cmVhdGUgaXMgaW4gbGliYy4gIFdlIGNoZWNrIGZvciBwdGhyZWFkX2F0dHJfaW5pdAotICAgICAg
ICAjIGR1ZSB0byBERUMgY3JhemluZXNzIHdpdGggLWxwdGhyZWFkcy4gIFdlIGNoZWNrIGZvcgot
ICAgICAgICAjIHB0aHJlYWRfY2xlYW51cF9wdXNoIGJlY2F1c2UgaXQgaXMgb25lIG9mIHRoZSBm
ZXcgcHRocmVhZAotICAgICAgICAjIGZ1bmN0aW9ucyBvbiBTb2xhcmlzIHRoYXQgZG9lc24ndCBo
YXZlIGEgbm9uLWZ1bmN0aW9uYWwgbGliYyBzdHViLgotICAgICAgICAjIFdlIHRyeSBwdGhyZWFk
X2NyZWF0ZSBvbiBnZW5lcmFsIHByaW5jaXBsZXMuCi0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5j
bHVkZSA8cHRocmVhZC5oPl0sCi0gICAgICAgICAgICAgICAgICAgIFtwdGhyZWFkX3QgdGg7IHB0
aHJlYWRfam9pbih0aCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfaW5p
dCgwKTsgcHRocmVhZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICBw
dGhyZWFkX2NyZWF0ZSgwLDAsMCwwKTsgcHRocmVhZF9jbGVhbnVwX3BvcCgwKTsgXSwKLSAgICAg
ICAgICAgICAgICAgICAgW2FjeF9wdGhyZWFkX29rPXllc10pCi0KLSAgICAgICAgTElCUz0iJHNh
dmVfTElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi0KLSAgICAgICAgQUNfTVNH
X1JFU1VMVCgkYWN4X3B0aHJlYWRfb2spCi0gICAgICAgIGlmIHRlc3QgIngkYWN4X3B0aHJlYWRf
b2siID0geHllczsgdGhlbgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBmaQotCi0g
ICAgICAgIFBUSFJFQURfTElCUz0iIgotICAgICAgICBQVEhSRUFEX0NGTEFHUz0iIgotZG9uZQot
ZmkKLQotIyBWYXJpb3VzIG90aGVyIGNoZWNrczoKLWlmIHRlc3QgIngkYWN4X3B0aHJlYWRfb2si
ID0geHllczsgdGhlbgotICAgICAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBMSUJTPSIk
UFRIUkVBRF9MSUJTICRMSUJTIgotICAgICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAg
ICAgQ0ZMQUdTPSIkQ0ZMQUdTICRQVEhSRUFEX0NGTEFHUyIKLQotICAgICAgICAjIERldGVjdCBB
SVggbG9zc2FnZTogSk9JTkFCTEUgYXR0cmlidXRlIGlzIGNhbGxlZCBVTkRFVEFDSEVELgotCUFD
X01TR19DSEVDS0lORyhbZm9yIGpvaW5hYmxlIHB0aHJlYWQgYXR0cmlidXRlXSkKLQlhdHRyX25h
bWU9dW5rbm93bgotCWZvciBhdHRyIGluIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIFBUSFJFQURf
Q1JFQVRFX1VOREVUQUNIRUQ7IGRvCi0JICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVh
ZC5oPl0sIFtpbnQgYXR0cj0kYXR0cjsgcmV0dXJuIGF0dHI7XSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFthdHRyX25hbWU9JGF0dHI7IGJyZWFrXSkKLQlkb25lCi0gICAgICAgIEFDX01TR19S
RVNVTFQoJGF0dHJfbmFtZSkKLSAgICAgICAgaWYgdGVzdCAiJGF0dHJfbmFtZSIgIT0gUFRIUkVB
RF9DUkVBVEVfSk9JTkFCTEU7IHRoZW4KLSAgICAgICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChQ
VEhSRUFEX0NSRUFURV9KT0lOQUJMRSwgJGF0dHJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbRGVmaW5lIHRvIG5lY2Vzc2FyeSBzeW1ib2wgaWYgdGhpcyBjb25zdGFudAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzIGEgbm9uLXN0YW5kYXJkIG5hbWUg
b24geW91ciBzeXN0ZW0uXSkKLSAgICAgICAgZmkKLQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkco
W2lmIG1vcmUgc3BlY2lhbCBmbGFncyBhcmUgcmVxdWlyZWQgZm9yIHB0aHJlYWRzXSkKLSAgICAg
ICAgZmxhZz1ubwotICAgICAgICBjYXNlICIke2hvc3RfY3B1fS0ke2hvc3Rfb3N9IiBpbgotICAg
ICAgICAgICAgKi1haXgqIHwgKi1mcmVlYnNkKiB8ICotZGFyd2luKikgZmxhZz0iLURfVEhSRUFE
X1NBRkUiOzsKLSAgICAgICAgICAgICpzb2xhcmlzKiB8ICotb3NmKiB8ICotaHB1eCopIGZsYWc9
Ii1EX1JFRU5UUkFOVCI7OwotICAgICAgICBlc2FjCi0gICAgICAgIEFDX01TR19SRVNVTFQoJHtm
bGFnfSkKLSAgICAgICAgaWYgdGVzdCAieCRmbGFnIiAhPSB4bm87IHRoZW4KLSAgICAgICAgICAg
IFBUSFJFQURfQ0ZMQUdTPSIkZmxhZyAkUFRIUkVBRF9DRkxBR1MiCi0gICAgICAgIGZpCi0KLSAg
ICAgICAgTElCUz0iJHNhdmVfTElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi0g
ICAgICAgICMgTW9yZSBBSVggbG9zc2FnZTogbXVzdCBjb21waWxlIHdpdGggeGxjX3Igb3IgY2Nf
cgotCWlmIHRlc3QgeCIkR0NDIiAhPSB4eWVzOyB0aGVuCi0gICAgICAgICAgQUNfQ0hFQ0tfUFJP
R1MoUFRIUkVBRF9DQywgeGxjX3IgY2NfciwgJHtDQ30pCi0gICAgICAgIGVsc2UKLSAgICAgICAg
ICBQVEhSRUFEX0NDPSRDQwotCWZpCi0KLQkjIFRoZSBuZXh0IHBhcnQgdHJpZXMgdG8gZGV0ZWN0
IEdDQyBpbmNvbnNpc3RlbmN5IHdpdGggLXNoYXJlZCBvbiBzb21lCi0JIyBhcmNoaXRlY3R1cmVz
IGFuZCBzeXN0ZW1zLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGluIGNlcnRhaW4KLQkjIGNvbmZpZ3Vy
YXRpb25zLCB3aGVuIC1zaGFyZWQgaXMgc3BlY2lmaWVkLCBHQ0MgImZvcmdldHMiIHRvCi0JIyBp
bnRlcm5hbGx5IHVzZSB2YXJpb3VzIGZsYWdzIHdoaWNoIGFyZSBzdGlsbCBuZWNlc3NhcnkuCi0J
Ci0JIwotCSMgUHJlcGFyZSB0aGUgZmxhZ3MKLQkjCi0Jc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0J
c2F2ZV9MSUJTPSIkTElCUyIKLQlzYXZlX0NDPSIkQ0MiCi0JCi0JIyBUcnkgd2l0aCB0aGUgZmxh
Z3MgZGV0ZXJtaW5lZCBieSB0aGUgZWFybGllciBjaGVja3MuCi0JIwotCSMgLVdsLC16LGRlZnMg
Zm9yY2VzIGxpbmstdGltZSBzeW1ib2wgcmVzb2x1dGlvbiwgc28gdGhhdCB0aGUKLQkjIGxpbmtp
bmcgY2hlY2tzIHdpdGggLXNoYXJlZCBhY3R1YWxseSBoYXZlIGFueSB2YWx1ZQotCSMKLQkjIEZJ
WE1FOiAtZlBJQyBpcyByZXF1aXJlZCBmb3IgLXNoYXJlZCBvbiBtYW55IGFyY2hpdGVjdHVyZXMs
Ci0JIyBzbyB3ZSBzcGVjaWZ5IGl0IGhlcmUsIGJ1dCB0aGUgcmlnaHQgd2F5IHdvdWxkIHByb2Jh
Ymx5IGJlIHRvCi0JIyBwcm9wZXJseSBkZXRlY3Qgd2hldGhlciBpdCBpcyBhY3R1YWxseSByZXF1
aXJlZC4KLQlDRkxBR1M9Ii1zaGFyZWQgLWZQSUMgLVdsLC16LGRlZnMgJENGTEFHUyAkUFRIUkVB
RF9DRkxBR1MiCi0JTElCUz0iJFBUSFJFQURfTElCUyAkTElCUyIKLQlDQz0iJFBUSFJFQURfQ0Mi
Ci0JCi0JIyBJbiBvcmRlciBub3QgdG8gY3JlYXRlIHNldmVyYWwgbGV2ZWxzIG9mIGluZGVudGF0
aW9uLCB3ZSB0ZXN0Ci0JIyB0aGUgdmFsdWUgb2YgIiRkb25lIiB1bnRpbCB3ZSBmaW5kIHRoZSBj
dXJlIG9yIHJ1biBvdXQgb2YgaWRlYXMuCi0JZG9uZT0ibm8iCi0JCi0JIyBGaXJzdCwgbWFrZSBz
dXJlIHRoZSBDRkxBR1Mgd2UgYWRkZWQgYXJlIGFjdHVhbGx5IGFjY2VwdGVkIGJ5IG91cgotCSMg
Y29tcGlsZXIuICBJZiBub3QgKGFuZCBPUyBYJ3MgbGQsIGZvciBpbnN0YW5jZSwgZG9lcyBub3Qg
YWNjZXB0IC16KSwKLQkjIHRoZW4gd2UgY2FuJ3QgZG8gdGhpcyB0ZXN0LgotCWlmIHRlc3QgeCIk
ZG9uZSIgPSB4bm87IHRoZW4KLQkgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gY2hlY2sg
Zm9yIEdDQyBwdGhyZWFkL3NoYXJlZCBpbmNvbnNpc3RlbmNpZXNdKQotCSAgIEFDX1RSWV9MSU5L
KCwsICwgW2RvbmU9eWVzXSkKLQkKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllcyA7IHRoZW4K
LQkgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0JICAgZWxzZQotCSAgICAgIEFDX01TR19SRVNV
TFQoW3llc10pCi0JICAgZmkKLQlmaQotCQotCWlmIHRlc3QgeCIkZG9uZSIgPSB4bm87IHRoZW4K
LQkgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLXB0aHJlYWQgaXMgc3VmZmljaWVudCB3aXRo
IC1zaGFyZWRdKQotCSAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0JICAg
ICAgW3B0aHJlYWRfdCB0aDsgcHRocmVhZF9qb2luKHRoLCAwKTsKLQkgICAgICBwdGhyZWFkX2F0
dHJfaW5pdCgwKTsgcHRocmVhZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAgcHRocmVhZF9j
cmVhdGUoMCwwLDAsMCk7IHB0aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCi0JICAgICAgW2RvbmU9
eWVzXSkKLQkgICAKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgotCSAgICAgIEFD
X01TR19SRVNVTFQoW3llc10pCi0JICAgZWxzZQotCSAgICAgIEFDX01TR19SRVNVTFQoW25vXSkK
LQkgICBmaQotCWZpCi0JCi0JIwotCSMgTGludXggZ2NjIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcyBz
dWNoIGFzIG1pcHMvbWlwc2VsIGZvcmdldHMKLQkjIGFib3V0IC1scHRocmVhZAotCSMKLQlpZiB0
ZXN0IHgiJGRvbmUiID0geG5vOyB0aGVuCi0JICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1s
cHRocmVhZCBmaXhlcyB0aGF0XSkKLQkgICBMSUJTPSItbHB0aHJlYWQgJFBUSFJFQURfTElCUyAk
c2F2ZV9MSUJTIgotCSAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0JICAg
ICAgW3B0aHJlYWRfdCB0aDsgcHRocmVhZF9qb2luKHRoLCAwKTsKLQkgICAgICBwdGhyZWFkX2F0
dHJfaW5pdCgwKTsgcHRocmVhZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAgcHRocmVhZF9j
cmVhdGUoMCwwLDAsMCk7IHB0aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCi0JICAgICAgW2RvbmU9
eWVzXSkKLQkKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgotCSAgICAgIEFDX01T
R19SRVNVTFQoW3llc10pCi0JICAgICAgUFRIUkVBRF9MSUJTPSItbHB0aHJlYWQgJFBUSFJFQURf
TElCUyIKLQkgICBlbHNlCi0JICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotCSAgIGZpCi0JZmkK
LQkjCi0JIyBGcmVlQlNEIDQuMTAgZ2NjIGZvcmdldHMgdG8gdXNlIC1sY19yIGluc3RlYWQgb2Yg
LWxjCi0JIwotCWlmIHRlc3QgeCIkZG9uZSIgPSB4bm87IHRoZW4KLQkgICBBQ19NU0dfQ0hFQ0tJ
TkcoW3doZXRoZXIgLWxjX3IgZml4ZXMgdGhhdF0pCi0JICAgTElCUz0iLWxjX3IgJFBUSFJFQURf
TElCUyAkc2F2ZV9MSUJTIgotCSAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0s
Ci0JICAgICAgIFtwdGhyZWFkX3QgdGg7IHB0aHJlYWRfam9pbih0aCwgMCk7Ci0JICAgICAgICBw
dGhyZWFkX2F0dHJfaW5pdCgwKTsgcHRocmVhZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAg
ICBwdGhyZWFkX2NyZWF0ZSgwLDAsMCwwKTsgcHRocmVhZF9jbGVhbnVwX3BvcCgwKTsgXSwKLQkg
ICAgICAgW2RvbmU9eWVzXSkKLQkKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgot
CSAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0JICAgICAgUFRIUkVBRF9MSUJTPSItbGNfciAk
UFRIUkVBRF9MSUJTIgotCSAgIGVsc2UKLQkgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0JICAg
ZmkKLQlmaQotCWlmIHRlc3QgeCIkZG9uZSIgPSB4bm87IHRoZW4KLQkgICAjIE9LLCB3ZSBoYXZl
IHJ1biBvdXQgb2YgaWRlYXMKLQkgICBBQ19NU0dfV0FSTihbSW1wb3NzaWJsZSB0byBkZXRlcm1p
bmUgaG93IHRvIHVzZSBwdGhyZWFkcyB3aXRoIHNoYXJlZCBsaWJyYXJpZXNdKQotCQotCSAgICMg
c28gaXQncyBub3Qgc2FmZSB0byBhc3N1bWUgdGhhdCB3ZSBtYXkgdXNlIHB0aHJlYWRzCi0JICAg
YWN4X3B0aHJlYWRfb2s9bm8KLQlmaQotCQotCUNGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotCUxJQlM9
IiRzYXZlX0xJQlMiCi0JQ0M9IiRzYXZlX0NDIgotZWxzZQotICAgICAgICBQVEhSRUFEX0NDPSIk
Q0MiCi1maQotCi1BQ19TVUJTVChQVEhSRUFEX0xJQlMpCi1BQ19TVUJTVChQVEhSRUFEX0NGTEFH
UykKLUFDX1NVQlNUKFBUSFJFQURfQ0MpCi0KLSMgRmluYWxseSwgZXhlY3V0ZSBBQ1RJT04tSUYt
Rk9VTkQvQUNUSU9OLUlGLU5PVC1GT1VORDoKLWlmIHRlc3QgeCIkYWN4X3B0aHJlYWRfb2siID0g
eHllczsgdGhlbgotICAgICAgICBpZmVsc2UoWyQxXSwsQUNfREVGSU5FKEhBVkVfUFRIUkVBRCwx
LFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggdGhyZWFkcyBsaWJyYXJpZXMgYW5kIGhlYWRlciBm
aWxlcy5dKSxbJDFdKQotICAgICAgICA6Ci1lbHNlCi0gICAgICAgIGFjeF9wdGhyZWFkX29rPW5v
Ci0gICAgICAgICQyCi1maQotQUNfTEFOR19SRVNUT1JFCi1dKWRubCBBQ1hfUFRIUkVBRApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvbTQvZ3Rlc3QubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tNC9ndGVzdC5t
NApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU5OGJhNzVhNGQ3ZjJjNDg2NjMyYzZk
ZGRjMGRlNTE3OGQyOTBlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9tNC9ndGVzdC5tNAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICsw
LDAgQEAKLWRubCBHVEVTVF9MSUJfQ0hFQ0soW21pbmltdW0gdmVyc2lvbiBbLAotZG5sICAgICAg
ICAgICAgICAgICAgYWN0aW9uIGlmIGZvdW5kIFssYWN0aW9uIGlmIG5vdCBmb3VuZF1dXSkKLWRu
bAotZG5sIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIEdvb2dsZSBUZXN0IGxpYnJhcnks
IG9wdGlvbmFsbHkgYXQgYSBtaW5pbXVtCi1kbmwgdmVyc2lvbiwgYW5kIGluZGljYXRlIGEgdmlh
YmxlIHZlcnNpb24gd2l0aCB0aGUgSEFWRV9HVEVTVCBmbGFnLiBJdCBkZWZpbmVzCi1kbmwgc3Rh
bmRhcmQgdmFyaWFibGVzIGZvciBzdWJzdGl0dXRpb24gaW5jbHVkaW5nIEdURVNUX0NQUEZMQUdT
LAotZG5sIEdURVNUX0NYWEZMQUdTLCBHVEVTVF9MREZMQUdTLCBhbmQgR1RFU1RfTElCUy4gSXQg
YWxzbyBkZWZpbmVzCi1kbmwgR1RFU1RfVkVSU0lPTiBhcyB0aGUgdmVyc2lvbiBvZiBHb29nbGUg
VGVzdCBmb3VuZC4gRmluYWxseSwgaXQgcHJvdmlkZXMKLWRubCBvcHRpb25hbCBjdXN0b20gYWN0
aW9uIHNsb3RzIGluIHRoZSBldmVudCBHVEVTVCBpcyBmb3VuZCBvciBub3QuCi1BQ19ERUZVTihb
R1RFU1RfTElCX0NIRUNLXSwKLVsKLWRubCBQcm92aWRlIGEgZmxhZyB0byBlbmFibGUgb3IgZGlz
YWJsZSBHb29nbGUgVGVzdCB1c2FnZS4KLUFDX0FSR19FTkFCTEUoW2d0ZXN0XSwKLSAgW0FTX0hF
TFBfU1RSSU5HKFstLWVuYWJsZS1ndGVzdF0sCi0gICAgICAgICAgICAgICAgICBbRW5hYmxlIHRl
c3RzIHVzaW5nIHRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgotICAgICAgICAgICAg
ICAgICAgKERlZmF1bHQgaXMgZW5hYmxlZC4pXSldLAotICBbXSwKLSAgW2VuYWJsZV9ndGVzdD1d
KQotQUNfQVJHX1ZBUihbR1RFU1RfQ09ORklHXSwKLSAgICAgICAgICAgW1RoZSBleGFjdCBwYXRo
IG9mIEdvb2dsZSBUZXN0J3MgJ2d0ZXN0LWNvbmZpZycgc2NyaXB0Ll0pCi1BQ19BUkdfVkFSKFtH
VEVTVF9DUFBGTEFHU10sCi0gICAgICAgICAgIFtDLWxpa2UgcHJlcHJvY2Vzc29yIGZsYWdzIGZv
ciBHb29nbGUgVGVzdC5dKQotQUNfQVJHX1ZBUihbR1RFU1RfQ1hYRkxBR1NdLAotICAgICAgICAg
ICBbQysrIGNvbXBpbGUgZmxhZ3MgZm9yIEdvb2dsZSBUZXN0Ll0pCi1BQ19BUkdfVkFSKFtHVEVT
VF9MREZMQUdTXSwKLSAgICAgICAgICAgW0xpbmtlciBwYXRoIGFuZCBvcHRpb24gZmxhZ3MgZm9y
IEdvb2dsZSBUZXN0Ll0pCi1BQ19BUkdfVkFSKFtHVEVTVF9MSUJTXSwKLSAgICAgICAgICAgW0xp
YnJhcnkgbGlua2luZyBmbGFncyBmb3IgR29vZ2xlIFRlc3QuXSkKLUFDX0FSR19WQVIoW0dURVNU
X1ZFUlNJT05dLAotICAgICAgICAgICBbVGhlIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QgYXZhaWxh
YmxlLl0pCi1IQVZFX0dURVNUPSJubyIKLUFTX0lGKFt0ZXN0ICJ4JHtlbmFibGVfZ3Rlc3R9IiAh
PSAieG5vIl0sCi0gIFtBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAnZ3Rlc3QtY29uZmlnJ10pCi0gICBB
U19JRihbdGVzdCAieCR7ZW5hYmxlX2d0ZXN0fSIgIT0gInh5ZXMiXSwKLSAgICAgW0FTX0lGKFt0
ZXN0IC14ICIke2VuYWJsZV9ndGVzdH0vc2NyaXB0cy9ndGVzdC1jb25maWciXSwKLSAgICAgICAg
W0dURVNUX0NPTkZJRz0iJHtlbmFibGVfZ3Rlc3R9L3NjcmlwdHMvZ3Rlc3QtY29uZmlnIl0sCi0g
ICAgICAgIFtHVEVTVF9DT05GSUc9IiR7ZW5hYmxlX2d0ZXN0fS9iaW4vZ3Rlc3QtY29uZmlnIl0p
Ci0gICAgICBBU19JRihbdGVzdCAteCAiJHtHVEVTVF9DT05GSUd9Il0sIFtdLAotICAgICAgICBb
QUNfTVNHX1JFU1VMVChbbm9dKQotICAgICAgICAgQUNfTVNHX0VSUk9SKFtkbmwKLVVuYWJsZSB0
byBsb2NhdGUgZWl0aGVyIGEgYnVpbHQgb3IgaW5zdGFsbGVkIEdvb2dsZSBUZXN0LgotVGhlIHNw
ZWNpZmljIGxvY2F0aW9uICcke2VuYWJsZV9ndGVzdH0nIHdhcyBwcm92aWRlZCBmb3IgYSBidWls
dCBvciBpbnN0YWxsZWQKLUdvb2dsZSBUZXN0LCBidXQgbm8gJ2d0ZXN0LWNvbmZpZycgc2NyaXB0
IGNvdWxkIGJlIGZvdW5kIGF0IHRoaXMgbG9jYXRpb24uXSkKLSAgICAgICAgIF0pXSwKLSAgICAg
W0FDX1BBVEhfUFJPRyhbR1RFU1RfQ09ORklHXSwgW2d0ZXN0LWNvbmZpZ10pXSkKLSAgIEFTX0lG
KFt0ZXN0IC14ICIke0dURVNUX0NPTkZJR30iXSwKLSAgICAgW0FDX01TR19SRVNVTFQoWyR7R1RF
U1RfQ09ORklHfV0pCi0gICAgICBtNF9pZnZhbChbJDFdLAotICAgICAgICBbX2d0ZXN0X21pbl92
ZXJzaW9uPSItLW1pbi12ZXJzaW9uPSQxIgotICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Ig
R29vZ2xlIFRlc3QgYXQgbGVhc3QgdmVyc2lvbiA+PSAkMV0pXSwKLSAgICAgICAgW19ndGVzdF9t
aW5fdmVyc2lvbj0iLS1taW4tdmVyc2lvbj0wIgotICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtm
b3IgR29vZ2xlIFRlc3RdKV0pCi0gICAgICBBU19JRihbJHtHVEVTVF9DT05GSUd9ICR7X2d0ZXN0
X21pbl92ZXJzaW9ufV0sCi0gICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICAgICAg
SEFWRV9HVEVTVD0neWVzJ10sCi0gICAgICAgIFtBQ19NU0dfUkVTVUxUKFtub10pXSldLAotICAg
ICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pCi0gICBBU19JRihbdGVzdCAieCR7SEFWRV9HVEVTVH0i
ID0gInh5ZXMiXSwKLSAgICAgW0dURVNUX0NQUEZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1jcHBm
bGFnc2AKLSAgICAgIEdURVNUX0NYWEZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1jeHhmbGFnc2AK
LSAgICAgIEdURVNUX0xERkxBR1M9YCR7R1RFU1RfQ09ORklHfSAtLWxkZmxhZ3NgCi0gICAgICBH
VEVTVF9MSUJTPWAke0dURVNUX0NPTkZJR30gLS1saWJzYAotICAgICAgR1RFU1RfVkVSU0lPTj1g
JHtHVEVTVF9DT05GSUd9IC0tdmVyc2lvbmAKLSAgICAgIEFDX0RFRklORShbSEFWRV9HVEVTVF0s
WzFdLFtEZWZpbmVkIHdoZW4gR29vZ2xlIFRlc3QgaXMgYXZhaWxhYmxlLl0pXSwKLSAgICAgW0FT
X0lGKFt0ZXN0ICJ4JHtlbmFibGVfZ3Rlc3R9IiA9ICJ4eWVzIl0sCi0gICAgICAgIFtBQ19NU0df
RVJST1IoW2RubAotR29vZ2xlIFRlc3Qgd2FzIGVuYWJsZWQsIGJ1dCBubyB2aWFibGUgdmVyc2lv
biBjb3VsZCBiZSBmb3VuZC5dKQotICAgICAgICAgXSldKV0pCi1BQ19TVUJTVChbSEFWRV9HVEVT
VF0pCi1BTV9DT05ESVRJT05BTChbSEFWRV9HVEVTVF0sW3Rlc3QgIngkSEFWRV9HVEVTVCIgPSAi
eHllcyJdKQotQVNfSUYoW3Rlc3QgIngkSEFWRV9HVEVTVCIgPSAieHllcyJdLAotICBbbTRfaWZ2
YWwoWyQyXSwgWyQyXSldLAotICBbbTRfaWZ2YWwoWyQzXSwgWyQzXSldKQotXSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L21ha2UvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tYWtlL01ha2VmaWxl
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWM3NDQ5M2JhNTUyNDY1OTdlOTBiODk4
ZmFlODQ3YWUzNThlYWI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L21ha2UvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi0jIEEgc2FtcGxlIE1ha2VmaWxlIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQg
dXNpbmcgaXQgaW4gdXNlcgotIyB0ZXN0cy4gIFBsZWFzZSB0d2VhayBpdCB0byBzdWl0IHlvdXIg
ZW52aXJvbm1lbnQgYW5kIHByb2plY3QuICBZb3UKLSMgbWF5IHdhbnQgdG8gbW92ZSBpdCB0byB5
b3VyIHByb2plY3QncyByb290IGRpcmVjdG9yeS4KLSMKLSMgU1lOT1BTSVM6Ci0jCi0jICAgbWFr
ZSBbYWxsXSAgLSBtYWtlcyBldmVyeXRoaW5nLgotIyAgIG1ha2UgVEFSR0VUIC0gbWFrZXMgdGhl
IGdpdmVuIHRhcmdldC4KLSMgICBtYWtlIGNsZWFuICAtIHJlbW92ZXMgYWxsIGZpbGVzIGdlbmVy
YXRlZCBieSBtYWtlLgotCi0jIFBsZWFzZSB0d2VhayB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGRl
ZmluaXRpb25zIGFzIG5lZWRlZCBieSB5b3VyCi0jIHByb2plY3QsIGV4Y2VwdCBHVEVTVF9IRUFE
RVJTLCB3aGljaCB5b3UgY2FuIHVzZSBpbiB5b3VyIG93biB0YXJnZXRzCi0jIGJ1dCBzaG91bGRu
J3QgbW9kaWZ5LgotCi0jIFBvaW50cyB0byB0aGUgcm9vdCBvZiBHb29nbGUgVGVzdCwgcmVsYXRp
dmUgdG8gd2hlcmUgdGhpcyBmaWxlIGlzLgotIyBSZW1lbWJlciB0byB0d2VhayB0aGlzIGlmIHlv
dSBtb3ZlIHRoaXMgZmlsZS4KLUdURVNUX0RJUiA9IC4uCi0KLSMgV2hlcmUgdG8gZmluZCB1c2Vy
IGNvZGUuCi1VU0VSX0RJUiA9IC4uL3NhbXBsZXMKLQotIyBGbGFncyBwYXNzZWQgdG8gdGhlIHBy
ZXByb2Nlc3Nvci4KLSMgU2V0IEdvb2dsZSBUZXN0J3MgaGVhZGVyIGRpcmVjdG9yeSBhcyBhIHN5
c3RlbSBkaXJlY3RvcnksIHN1Y2ggdGhhdAotIyB0aGUgY29tcGlsZXIgZG9lc24ndCBnZW5lcmF0
ZSB3YXJuaW5ncyBpbiBHb29nbGUgVGVzdCBoZWFkZXJzLgotQ1BQRkxBR1MgKz0gLWlzeXN0ZW0g
JChHVEVTVF9ESVIpL2luY2x1ZGUKLQotIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxl
ci4KLUNYWEZMQUdTICs9IC1nIC1XYWxsIC1XZXh0cmEgLXB0aHJlYWQKLQotIyBBbGwgdGVzdHMg
cHJvZHVjZWQgYnkgdGhpcyBNYWtlZmlsZS4gIFJlbWVtYmVyIHRvIGFkZCBuZXcgdGVzdHMgeW91
Ci0jIGNyZWF0ZWQgdG8gdGhlIGxpc3QuCi1URVNUUyA9IHNhbXBsZTFfdW5pdHRlc3QKLQotIyBB
bGwgR29vZ2xlIFRlc3QgaGVhZGVycy4gIFVzdWFsbHkgeW91IHNob3VsZG4ndCBjaGFuZ2UgdGhp
cwotIyBkZWZpbml0aW9uLgotR1RFU1RfSEVBREVSUyA9ICQoR1RFU1RfRElSKS9pbmNsdWRlL2d0
ZXN0LyouaCBcCi0gICAgICAgICAgICAgICAgJChHVEVTVF9ESVIpL2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvKi5oCi0KLSMgSG91c2Uta2VlcGluZyBidWlsZCB0YXJnZXRzLgotCi1hbGwgOiAkKFRF
U1RTKQotCi1jbGVhbiA6Ci0Jcm0gLWYgJChURVNUUykgZ3Rlc3QuYSBndGVzdF9tYWluLmEgKi5v
Ci0KLSMgQnVpbGRzIGd0ZXN0LmEgYW5kIGd0ZXN0X21haW4uYS4KLQotIyBVc3VhbGx5IHlvdSBz
aG91bGRuJ3QgdHdlYWsgc3VjaCBpbnRlcm5hbCB2YXJpYWJsZXMsIGluZGljYXRlZCBieSBhCi0j
IHRyYWlsaW5nIF8uCi1HVEVTVF9TUkNTXyA9ICQoR1RFU1RfRElSKS9zcmMvKi5jYyAkKEdURVNU
X0RJUikvc3JjLyouaCAkKEdURVNUX0hFQURFUlMpCi0KLSMgRm9yIHNpbXBsaWNpdHkgYW5kIHRv
IGF2b2lkIGRlcGVuZGluZyBvbiBHb29nbGUgVGVzdCdzCi0jIGltcGxlbWVudGF0aW9uIGRldGFp
bHMsIHRoZSBkZXBlbmRlbmNpZXMgc3BlY2lmaWVkIGJlbG93IGFyZQotIyBjb25zZXJ2YXRpdmUg
YW5kIG5vdCBvcHRpbWl6ZWQuICBUaGlzIGlzIGZpbmUgYXMgR29vZ2xlIFRlc3QKLSMgY29tcGls
ZXMgZmFzdCBhbmQgZm9yIG9yZGluYXJ5IHVzZXJzIGl0cyBzb3VyY2UgcmFyZWx5IGNoYW5nZXMu
Ci1ndGVzdC1hbGwubyA6ICQoR1RFU1RfU1JDU18pCi0JJChDWFgpICQoQ1BQRkxBR1MpIC1JJChH
VEVTVF9ESVIpICQoQ1hYRkxBR1MpIC1jIFwKLSAgICAgICAgICAgICQoR1RFU1RfRElSKS9zcmMv
Z3Rlc3QtYWxsLmNjCi0KLWd0ZXN0X21haW4ubyA6ICQoR1RFU1RfU1JDU18pCi0JJChDWFgpICQo
Q1BQRkxBR1MpIC1JJChHVEVTVF9ESVIpICQoQ1hYRkxBR1MpIC1jIFwKLSAgICAgICAgICAgICQo
R1RFU1RfRElSKS9zcmMvZ3Rlc3RfbWFpbi5jYwotCi1ndGVzdC5hIDogZ3Rlc3QtYWxsLm8KLQkk
KEFSKSAkKEFSRkxBR1MpICRAICReCi0KLWd0ZXN0X21haW4uYSA6IGd0ZXN0LWFsbC5vIGd0ZXN0
X21haW4ubwotCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KLQotIyBCdWlsZHMgYSBzYW1wbGUgdGVz
dC4gIEEgdGVzdCBzaG91bGQgbGluayB3aXRoIGVpdGhlciBndGVzdC5hIG9yCi0jIGd0ZXN0X21h
aW4uYSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgZGVmaW5lcyBpdHMgb3duIG1haW4oKQotIyBm
dW5jdGlvbi4KLQotc2FtcGxlMS5vIDogJChVU0VSX0RJUikvc2FtcGxlMS5jYyAkKFVTRVJfRElS
KS9zYW1wbGUxLmggJChHVEVTVF9IRUFERVJTKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZM
QUdTKSAtYyAkKFVTRVJfRElSKS9zYW1wbGUxLmNjCi0KLXNhbXBsZTFfdW5pdHRlc3QubyA6ICQo
VVNFUl9ESVIpL3NhbXBsZTFfdW5pdHRlc3QuY2MgXAotICAgICAgICAgICAgICAgICAgICAgJChV
U0VSX0RJUikvc2FtcGxlMS5oICQoR1RFU1RfSEVBREVSUykKLQkkKENYWCkgJChDUFBGTEFHUykg
JChDWFhGTEFHUykgLWMgJChVU0VSX0RJUikvc2FtcGxlMV91bml0dGVzdC5jYwotCi1zYW1wbGUx
X3VuaXR0ZXN0IDogc2FtcGxlMS5vIHNhbXBsZTFfdW5pdHRlc3QubyBndGVzdF9tYWluLmEKLQkk
KENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykgLWxwdGhyZWFkICReIC1vICRACmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rl
c3QtbWQuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjliNDAxOWFlM2FlNTFm
ZDAwNjAzZTkzNDc5M2M0ZGI4Mzg1MGNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmls
ZSwgRm9ybWF0IFZlcnNpb24gOC4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDEx
LTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdC1tZCIsICJndGVzdC1tZC52Y3Byb2oiLCAie0M4RjZD
MTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVj
dERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9q
ZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0g
Imd0ZXN0X21haW4tbWQiLCAiZ3Rlc3RfbWFpbi1tZC52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYt
NDMzMi05MTQ3LUY2OEVEOTg2MjAzM30iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVu
Y2llcykgPSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3By
b2RfdGVzdC1tZCIsICJndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIiwgInsyNDg0ODU1MS1FRjRG
LTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0J9IgotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRl
bmNpZXMpID0gcG9zdFByb2plY3QKLQlFbmRQcm9qZWN0U2VjdGlvbgotRW5kUHJvamVjdAotUHJv
amVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91
bml0dGVzdC1tZCIsICJndGVzdF91bml0dGVzdC1tZC52Y3Byb2oiLCAiezREOUZERkI1LTk4NkEt
NDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVu
Y2llcykgPSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1HbG9i
YWwKLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgot
CQlEZWJ1ZyA9IERlYnVnCi0JCVJlbGVhc2UgPSBSZWxlYXNlCi0JRW5kR2xvYmFsU2VjdGlvbgot
CUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCi0JCXtD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnLkFjdGl2ZUNmZyA9IERl
YnVnfFdpbjMyCi0JCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVn
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIz
QjMxQkU4fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJe0M4RjZDMTcyLTU2
RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFOH0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4z
MgotCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Zy5BY3RpdmVD
ZmcgPSBEZWJ1Z3xXaW4zMgotCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMz
fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKLQkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzM30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXszQUY1
NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVh
c2V8V2luMzIKLQkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWcu
QWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0
OUJDM0VDQn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXsyNDg0ODU1MS1FRjRGLTQ3
RTgtOUE5RC1FQTRENDlCQzNFQ0J9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgot
CQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlLkJ1aWxkLjAg
PSBSZWxlYXNlfFdpbjMyCi0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9
LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXs0RDlGREZCNS05ODZBLTQxMzktODIz
Qy1GNEVFMEVENDgxQTJ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7NEQ5RkRGQjUt
OTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8
V2luMzIKLQkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZS5C
dWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9u
KEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9IHBvc3RTb2x1dGlvbgotCUVuZEdsb2JhbFNlY3Rpb24K
LQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCi0JRW5k
R2xvYmFsU2VjdGlvbgotRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0
ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQudmNwcm9qCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzE0OTZjY2JmMGM5NjZlNzk1ODNjMGZjNzRhODk5YzE3
NTA5ZmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICsw
LDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgotPFZp
c3VhbFN0dWRpb1Byb2plY3QKLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI3
LjEwIgotCU5hbWU9Imd0ZXN0LW1kIgotCVByb2plY3RHVUlEPSJ7QzhGNkMxNzItNTZGMi00RTc2
LUI1RkEtQzNCNDIzQjMxQkU4fSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9ybXM+
Ci0JCTxQbGF0Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29uZmln
dXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCU91
dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJ
SW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25m
aWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0iMiIKLQkJCVJlZmVyZW5jZXNQYXRo
PSIiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCU9wdGltaXph
dGlvbj0iMCIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIi
Ci0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgot
CQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJ
CVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZB
TFNFIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaWJyYXJpYW5U
b29sIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdGQubGliIi8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRF
dmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dl
YlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYTUxE
YXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRX
cmFwcGVyR2VuZXJhdG9yVG9vbCIvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0JCTxDb25maWd1cmF0
aW9uCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0
aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9
IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgotCQkJ
Q2hhcmFjdGVyU2V0PSIyIgotCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4uXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7Li4mcXVvdDsiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKLQkJCQlS
dW50aW1lTGlicmFyeT0iMiIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJu
aW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIK
LQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
Q3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIK
LQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3QubGliIi8+Ci0JCQk8VG9vbAotCQkJCU5h
bWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRv
b2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRv
b2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZp
Y2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2Vu
ZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJh
dG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVy
R2VuZXJhdG9yVG9vbCIvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0JPC9Db25maWd1cmF0aW9ucz4K
LQk8UmVmZXJlbmNlcz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlO
YW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1B
MDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xn
dGVzdC1hbGwuY2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5j
bHVkZSZxdW90OyIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1
cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9
IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KLQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgotCQkJPC9GaWxlPgotCQk8L0ZpbHRlcj4KLQkJPEZpbHRlcgotCQkJTmFtZT0i
SGVhZGVyIEZpbGVzIgotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiCi0JCQlV
bmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfSI+
Ci0JCTwvRmlsdGVyPgotCTwvRmlsZXM+Ci0JPEdsb2JhbHM+Ci0JPC9HbG9iYWxzPgotPC9WaXN1
YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC5zbG4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzFiMjkyOTY0OWZmNjlhMTA5ZWVhNWI0YjdmNmRjYzcxYzUxY2Q0YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0
LnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKLVByb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3QiLCAiZ3Rlc3QudmNwcm9q
IiwgIntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgotCVByb2plY3RTZWN0
aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKLQlFbmRQcm9qZWN0U2VjdGlv
bgotRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJndGVzdF9tYWluIiwgImd0ZXN0X21haW4udmNwcm9qIiwgInszQUY1NEM4QS0x
MEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzJ9IgotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBl
bmRlbmNpZXMpID0gcG9zdFByb2plY3QKLQlFbmRQcm9qZWN0U2VjdGlvbgotRW5kUHJvamVjdAot
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVz
dF91bml0dGVzdCIsICJndGVzdF91bml0dGVzdC52Y3Byb2oiLCAiezREOUZERkI1LTk4NkEtNDEz
OS04MjNDLUY0RUUwRUQ0ODFBMX0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2ll
cykgPSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0
KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3Byb2Rf
dGVzdCIsICJndGVzdF9wcm9kX3Rlc3QudmNwcm9qIiwgInsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5
RC1FQTRENDlCQzNFQ0F9IgotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0g
cG9zdFByb2plY3QKLQlFbmRQcm9qZWN0U2VjdGlvbgotRW5kUHJvamVjdAotR2xvYmFsCi0JR2xv
YmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24KLQkJRGVidWcg
PSBEZWJ1ZwotCQlSZWxlYXNlID0gUmVsZWFzZQotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxT
ZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbgotCQl7QzhGNkMxNzIt
NTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgotCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5EZWJ1Zy5CdWlsZC4w
ID0gRGVidWd8V2luMzIKLQkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30u
UmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXtDOEY2QzE3Mi01NkYyLTRFNzYt
QjVGQS1DM0I0MjNCMzFCRTd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJezNB
RjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzIKLQkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uRGVidWcu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4
NjIwMzJ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7M0FGNTRDOEEtMTBC
Ri00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
Ci0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9LkRlYnVnLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCi0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9
LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUExfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgotCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfS5EZWJ1Zy5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKLQkJezI0ODQ4NTUxLUVGNEYtNDdF
OC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0J
CXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LlJlbGVhc2UuQnVpbGQuMCA9
IFJlbGVhc2V8V2luMzIKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNp
YmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24KLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFs
U2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbgotCUVuZEdsb2JhbFNl
Y3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC52Y3By
b2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDQ5ZTdlMDllYTdlOGE5MTA0ZDliNDUyMjE5NGIyNGIzZmI4ZTg5My4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3Zj
L2d0ZXN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi08P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0
Ci0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0iNy4xMCIKLQlOYW1lPSJndGVz
dCIKLQlQcm9qZWN0R1VJRD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30i
Ci0JS2V5d29yZD0iV2luMzJQcm9qIj4KLQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJCU5h
bWU9IldpbjMyIi8+Ci0JPC9QbGF0Zm9ybXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29uZmln
dXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29s
dXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9y
eT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0J
CQlDaGFyYWN0ZXJTZXQ9IjIiCi0JCQlSZWZlcmVuY2VzUGF0aD0iIj4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgotCQkJCU1pbmltYWxSZWJ1aWxk
PSJUUlVFIgotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGlicmFyeT0i
NSIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0J
CQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9y
bWF0aW9uRm9ybWF0PSI0Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJCQlPdXRwdXRGaWxl
PSIkKE91dERpcikvZ3Rlc3RkLmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21w
aWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0
b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wi
Lz4KLQkJPC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJh
dGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0
TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0iMiIKLQkJ
CVJlZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCi0JCQkJUnVudGltZUxpYnJhcnk9IjQiCi0J
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURl
dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iMyIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkJT3V0cHV0RmlsZT0iJChP
dXREaXIpL2d0ZXN0LmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVM
aW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRv
b2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJ
PC9Db25maWd1cmF0aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JPC9S
ZWZlcmVuY2VzPgotCTxGaWxlcz4KLQkJPEZpbHRlcgotCQkJTmFtZT0iU291cmNlIEZpbGVzIgot
CQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKLQkJCVVu
aXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KLQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAot
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KLQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJS
ZWxlYXNlfFdpbjMyIj4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
Ci0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVv
dDsuLlxpbmNsdWRlJnF1b3Q7Ii8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmls
ZT4KLQkJPC9GaWx0ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKLQkJCUZp
bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkz
OTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4KLQk8L0Zp
bGVzPgotCTxHbG9iYWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9tc3ZjL2d0ZXN0X21haW4tbWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkMDA5NTZjZDNkMjZiMDgyYTIzMDUyNzljYzlhNzhjZTdmNzZiMTJmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rl
c3RfbWFpbi1tZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08VmlzdWFsU3R1ZGlvUHJv
amVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249IjcuMTAiCi0JTmFtZT0i
Z3Rlc3RfbWFpbi1tZCIKLQlQcm9qZWN0R1VJRD0iezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2
OEVEOTg2MjAzM30iCi0JS2V5d29yZD0iV2luMzJQcm9qIj4KLQk8UGxhdGZvcm1zPgotCQk8UGxh
dGZvcm0KLQkJCU5hbWU9IldpbjMyIi8+Ci0JPC9QbGF0Zm9ybXM+Ci0JPENvbmZpZ3VyYXRpb25z
PgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJl
Y3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVk
aWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlv
blR5cGU9IjQiCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiCi0JCQlSZWZlcmVuY2VzUGF0aD0iIj4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249IjAi
Ci0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgotCQkJCU1p
bmltYWxSZWJ1aWxkPSJUUlVFIgotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50
aW1lTGlicmFyeT0iMyIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5n
TGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3Vz
dG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJ
CQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSlkLmxpYiIvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxk
RXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNX
ZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1M
RGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBl
ckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2Vk
V3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJh
dGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1
dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5
PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJ
CUNoYXJhY3RlclNldD0iMiIKLQkJCVJlZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1
b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCi0JCQkJ
UnVudGltZUxpYnJhcnk9IjIiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJV2Fy
bmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0Ui
Ci0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wi
Ci0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpLmxpYiIvPgotCQkJPFRv
b2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1
aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wi
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
WE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3Jh
cHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5h
Z2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCTwvQ29uZmln
dXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JCTxQcm9qZWN0UmVmZXJlbmNlCi0JCQlSZWZlcmVu
Y2VkUHJvamVjdElkZW50aWZpZXI9IntDOEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFC
RTh9IgotCQkJTmFtZT0iZ3Rlc3QtbWQiLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8
RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHNyY1xndGVzdF9tYWluLmNjIj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7
OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KLQkJCQkJPFRv
b2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+Ci0J
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJPC9GaWx0ZXI+Ci0JCTxGaWx0
ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtp
bmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYy
NUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxHbG9iYWxzPgotCTwvR2xv
YmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21z
dmMvZ3Rlc3RfbWFpbi52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X21haW4udmNwcm9q
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2U5ZjQxNzY4NWZmMzc1ODQyMDAwMWRh
OTQzMmQ0MDM3MWZiY2FmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2oKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0x
MjUyIj8+Ci08VmlzdWFsU3R1ZGlvUHJvamVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgot
CVZlcnNpb249IjcuMTAiCi0JTmFtZT0iZ3Rlc3RfbWFpbiIKLQlQcm9qZWN0R1VJRD0iezNBRjU0
QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0iCi0JS2V5d29yZD0iV2luMzJQcm9qIj4K
LQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJCU5hbWU9IldpbjMyIi8+Ci0JPC9QbGF0Zm9y
bXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iRGVidWd8
V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRp
b25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5h
bWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiCi0JCQlS
ZWZlcmVuY2VzUGF0aD0iIj4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
LQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMy
O19ERUJVRztfTElCIgotCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgotCQkJCUJhc2ljUnVudGlt
ZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGlicmFyeT0iNSIKLQkJCQlVc2VQcmVjb21waWxlZEhl
YWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0
eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDTGlicmFyaWFuVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFt
ZSlkLmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
UHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1
cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCU91
dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJ
SW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25m
aWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0iMiIKLQkJCVJlZmVyZW5jZXNQYXRo
PSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO
MzI7TkRFQlVHO19MSUIiCi0JCQkJUnVudGltZUxpYnJhcnk9IjQiCi0JCQkJVXNlUHJlY29tcGls
ZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFi
aWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpLyQoUHJvamVj
dE5hbWUpLmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZl
bnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25m
aWd1cmF0aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JCTxQcm9qZWN0
UmVmZXJlbmNlCi0JCQlSZWZlcmVuY2VkUHJvamVjdElkZW50aWZpZXI9IntDOEY2QzE3Mi01NkYy
LTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9IgotCQkJTmFtZT0iZ3Rlc3QiLz4KLQk8L1JlZmVyZW5j
ZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0
ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRl
bnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHNyY1xndGVzdF9tYWluLmNjIj4KLQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KLQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIj4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxp
bmNsdWRlJnF1b3Q7Ii8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJ
PC9GaWx0ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKLQkJCUZpbHRlcj0i
aDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1Mzgw
LTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgot
CTxHbG9iYWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LW1kLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDA3MWQyOGZlZDAxY2NmYTkzMzA5MWM3MTE3ZjJhNTg0MDFiZmUwMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3Zj
L2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBA
QAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08VmlzdWFs
U3R1ZGlvUHJvamVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249IjcuMTAi
Ci0JTmFtZT0iZ3Rlc3RfcHJvZF90ZXN0LW1kIgotCVByb2plY3RHVUlEPSJ7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0
Zm9ybXM+Ci0JCTxQbGF0Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8
Q29uZmlndXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIK
LQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUp
IgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0J
CQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCi0JCQkJTWluaW1h
bFJlYnVpbGQ9IlRSVUUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVM
aWJyYXJ5PSIzIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZl
bD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21C
dWlsZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1
dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QuZXhlIgotCQkJCUxpbmtJbmNyZW1lbnRh
bD0iMiIKLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCi0JCQkJUHJvZ3JhbURh
dGFiYXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5wZGIiCi0JCQkJU3ViU3lzdGVt
PSIxIgotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURM
VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5h
bWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291cmNl
Q29tcGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2Vu
ZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9D
b25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
LQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUp
IgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0J
CQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
IldJTjMyO05ERUJVRztfQ09OU09MRSIKLQkJCQlSdW50aW1lTGlicmFyeT0iMiIKLQkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRC
aXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PSIzIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rl
c3RfcHJvZF90ZXN0LmV4ZSIKLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVE
ZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJl
ZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNo
aW5lPSIxIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQ
cmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRv
b2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdl
ZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5
TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0Nv
bmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVm
ZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5
ODYyMDMzfSIKLQkJCU5hbWU9Imd0ZXN0X21haW4tbWQiLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZp
bGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0i
ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KLQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9
IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVjb21w
aWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KLQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9v
bAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8
VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0J
CQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmls
ZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+Ci0JCQk8L0ZpbGU+Ci0J
CTwvRmlsdGVyPgotCTwvRmlsZXM+Ci0JPEdsb2JhbHM+Ci0JPC9HbG9iYWxzPgotPC9WaXN1YWxT
dHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rl
c3QudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OThjNzU4MDhhMTYyNGU2NzQ0YTJiMjE3OTYwYzA2
ZTIxMWZhZmY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvagorKysgL2Rldi9udWxsCkBA
IC0xLDE2NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEy
NTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0Ci0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0J
VmVyc2lvbj0iNy4xMCIKLQlOYW1lPSJndGVzdF9wcm9kX3Rlc3QiCi0JUHJvamVjdEdVSUQ9Insy
NDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9IgotCUtleXdvcmQ9IldpbjMyUHJv
aiI+Ci0JPFBsYXRmb3Jtcz4KLQkJPFBsYXRmb3JtCi0JCQlOYW1lPSJXaW4zMiIvPgotCTwvUGxh
dGZvcm1zPgotCTxDb25maWd1cmF0aW9ucz4KLQkJPENvbmZpZ3VyYXRpb24KLQkJCU5hbWU9IkRl
YnVnfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1
cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2pl
Y3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgotCQkJQ2hhcmFjdGVyU2V0PSIyIj4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249
IjAiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIK
LQkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCi0J
CQkJUnVudGltZUxpYnJhcnk9IjUiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCi0JCQkJ
V2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFM
U0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wi
Ci0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5leGUiCi0JCQkJTGlu
a0luY3JlbWVudGFsPSIyIgotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKLQkJ
CQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90ZXN0LnBkYiIKLQkJ
CQlTdWJTeXN0ZW09IjEiCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2
aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdl
bmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9v
bCIvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJSZWxl
YXNlfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1
cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2pl
Y3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgotCQkJQ2hhcmFjdGVyU2V0PSIyIj4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSI0
IgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJ
CQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ9IjMiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wi
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1dEZpbGU9IiQo
T3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QuZXhlIgotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKLQkJ
CQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCi0JCQkJU3ViU3lzdGVtPSIxIgotCQkJ
CU9wdGltaXplUmVmZXJlbmNlcz0iMiIKLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIgotCQkJ
CVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJl
TGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0
aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JCTxQcm9qZWN0UmVmZXJl
bmNlCi0JCQlSZWZlcmVuY2VkUHJvamVjdElkZW50aWZpZXI9InszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzJ9IgotCQkJTmFtZT0iZ3Rlc3RfbWFpbiIvPgotCTwvUmVmZXJlbmNl
cz4KLQk8RmlsZXM+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKLQkJCUZpbHRl
cj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCi0JCQlVbmlxdWVJZGVu
dGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxndGVzdF9wcm9kX3Rlc3QuY2MiPgotCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+Ci0JCQkJCTxUb29sCi0J
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJCVVz
ZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+Ci0JCQkJCTxUb29s
Ci0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJ
CVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJ
CTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24u
Y2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+Ci0J
CQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90
OyIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+Ci0JCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+
Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZx
dW90OyIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIi8+Ci0JCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJPC9GaWx0ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9Ikhl
YWRlciBGaWxlcyIKLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5p
cXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgot
CQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RccHJvZHVjdGlvbi5oIj4KLQkJCTwv
RmlsZT4KLQkJPC9GaWx0ZXI+Ci0JPC9GaWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08
L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0
X3VuaXR0ZXN0LW1kLnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQu
dmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTI1OTM5NzUwZDc0N2M3YjQ4
YWM0NDgzODY5Y2Y2NzY1YTZlYWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qCisr
KyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IldpbmRvd3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb2plY3QKLQlQcm9qZWN0VHlwZT0i
VmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI3LjEwIgotCU5hbWU9Imd0ZXN0X3VuaXR0ZXN0LW1kIgot
CVByb2plY3RHVUlEPSJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4MUEyfSIKLQlL
ZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9ybXM+Ci0JCTxQbGF0Zm9ybQotCQkJTmFtZT0i
V2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29uZmlndXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0
aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlv
bk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIk
KE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNo
YXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0J
CQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtf
REVCVUc7X0NPTlNPTEUiCi0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCi0JCQkJQmFzaWNSdW50
aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgotCQkJCVVzZVByZWNvbXBpbGVk
SGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmls
aXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF91bml0dGVz
dC5leGUiCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIgotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj0iVFJVRSIKLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikvZ3Rlc3RfdW5p
dHRlc3QucGRiIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQ
b3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50
VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRl
cGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5l
cmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBw
ZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQkJPENvbmZpZ3VyYXRpb24K
LQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25O
YW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChP
dXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCi0JCQlDaGFy
YWN0ZXJTZXQ9IjIiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCi0JCQkJUnVu
dGltZUxpYnJhcnk9IjIiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCi0JCQkJV2Fybmlu
Z0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0J
CQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1
c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCi0JCQkJ
T3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LmV4ZSIKLQkJCQlMaW5rSW5jcmVt
ZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgotCQkJCVN1YlN5
c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxlQ09NREFURm9s
ZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
TUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNv
dXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94
eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9y
VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0J
CTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2VzPgotCQk8
UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7M0FGNTRD
OEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfSIKLQkJCU5hbWU9Imd0ZXN0X21haW4tbWQi
Lz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2Ug
RmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214
IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUy
QTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RcZ3Rlc3RfdW5pdHRl
c3QuY2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+
Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJT3B0aW1p
emF0aW9uPSIxIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li4m
cXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJCUJhc2ljUnVudGltZUNoZWNrcz0i
MCIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCQkJRGVidWdJbmZvcm1hdGlv
bkZvcm1hdD0iMyIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1
cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9
IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVjb21w
aWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0J
CTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiCi0JCQlGaWx0ZXI9
Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4
MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJPC9GaWx0ZXI+Ci0JPC9GaWxlcz4K
LQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L21zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyYjJkNzQzNDU3MTA0OGZhMDUzN2E4ODRlYmE3OGI2ODg3NzU4MTYxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3Rf
dW5pdHRlc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLTw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb2pl
Y3QKLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI3LjEwIgotCU5hbWU9Imd0
ZXN0X3VuaXR0ZXN0IgotCVByb2plY3RHVUlEPSJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRF
RTBFRDQ4MUExfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9ybXM+Ci0JCTxQbGF0
Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29uZmlndXJhdGlvbnM+
Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCU91dHB1dERpcmVj
dG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRp
YXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9u
VHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCi0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUi
Ci0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSI1IgotCQkJ
CVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRl
Y3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVnSW5mb3JtYXRpb25G
b3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGly
KS9ndGVzdF91bml0dGVzdC5leGUiCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIgotCQkJCUdlbmVy
YXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91
dERpcikvZ3Rlc3RfdW5pdHRlc3QucGRiIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlUYXJnZXRN
YWNoaW5lPSIxIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQcmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVu
dFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxp
YXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQkJ
PENvbmZpZ3VyYXRpb24KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rv
cnk9IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0
ZURpcmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5
cGU9IjEiCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NP
TlNPTEUiCi0JCQkJUnVudGltZUxpYnJhcnk9IjQiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9i
bGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xp
bmtlclRvb2wiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LmV4ZSIK
LQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJU
UlVFIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCi0JCQkJ
RW5hYmxlQ09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVp
bGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNY
TUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1l
bnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5l
cmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgotCTxS
ZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJZGVu
dGlmaWVyPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfSIKLQkJCU5hbWU9
Imd0ZXN0X21haW4iLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlO
YW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7
YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1B
MDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3Rc
Z3Rlc3RfdW5pdHRlc3QuY2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJE
ZWJ1Z3xXaW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgot
CQkJCQkJT3B0aW1pemF0aW9uPSIxIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJCUJhc2ljUnVu
dGltZUNoZWNrcz0iMCIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCQkJRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJ
PEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9v
bAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMi
Ci0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZp
ZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJPC9GaWx0ZXI+
Ci0JPC9GaWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRpb1Byb2pl
Y3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOTJjZTE2YTAxNDRkNTAyZmQwZTQ1YjczZjM3ZDMyYmJlZGYxYzNmMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVz
L3ByaW1lX3RhYmxlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKLQotLy8gVGhpcyBwcm92aWRlcyBpbnRlcmZhY2UgUHJpbWVUYWJsZSB0aGF0IGRl
dGVybWluZXMgd2hldGhlciBhIG51bWJlciBpcyBhCi0vLyBwcmltZSBhbmQgZGV0ZXJtaW5lcyBh
IG5leHQgcHJpbWUgbnVtYmVyLiBUaGlzIGludGVyZmFjZSBpcyB1c2VkCi0vLyBpbiBHb29nbGUg
VGVzdCBzYW1wbGVzIGRlbW9uc3RyYXRpbmcgdXNlIG9mIHBhcmFtZXRlcml6ZWQgdGVzdHMuCi0K
LSNpZm5kZWYgR1RFU1RfU0FNUExFU19QUklNRV9UQUJMRVNfSF8KLSNkZWZpbmUgR1RFU1RfU0FN
UExFU19QUklNRV9UQUJMRVNfSF8KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotLy8gVGhlIHBy
aW1lIHRhYmxlIGludGVyZmFjZS4KLWNsYXNzIFByaW1lVGFibGUgewotIHB1YmxpYzoKLSAgdmly
dHVhbCB+UHJpbWVUYWJsZSgpIHt9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiBuIGlzIGEgcHJp
bWUgbnVtYmVyLgotICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQgbikgY29uc3QgPSAwOwotCi0g
IC8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIG51bWJlciBncmVhdGVyIHRoYW4gcDsgb3Ig
cmV0dXJucyAtMQotICAvLyBpZiB0aGUgbmV4dCBwcmltZSBpcyBiZXlvbmQgdGhlIGNhcGFjaXR5
IG9mIHRoZSB0YWJsZS4KLSAgdmlydHVhbCBpbnQgR2V0TmV4dFByaW1lKGludCBwKSBjb25zdCA9
IDA7Ci19OwotCi0vLyBJbXBsZW1lbnRhdGlvbiAjMSBjYWxjdWxhdGVzIHRoZSBwcmltZXMgb24t
dGhlLWZseS4KLWNsYXNzIE9uVGhlRmx5UHJpbWVUYWJsZSA6IHB1YmxpYyBQcmltZVRhYmxlIHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBJc1ByaW1lKGludCBuKSBjb25zdCB7Ci0gICAgaWYg
KG4gPD0gMSkgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChpbnQgaSA9IDI7IGkqaSA8PSBuOyBp
KyspIHsKLSAgICAgIC8vIG4gaXMgZGl2aXNpYmxlIGJ5IGFuIGludGVnZXIgb3RoZXIgdGhhbiAx
IGFuZCBpdHNlbGYuCi0gICAgICBpZiAoKG4gJSBpKSA9PSAwKSByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICB2aXJ0dWFsIGludCBHZXROZXh0UHJpbWUo
aW50IHApIGNvbnN0IHsKLSAgICBmb3IgKGludCBuID0gcCArIDE7IG4gPiAwOyBuKyspIHsKLSAg
ICAgIGlmIChJc1ByaW1lKG4pKSByZXR1cm4gbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gLTE7Ci0g
IH0KLX07Ci0KLS8vIEltcGxlbWVudGF0aW9uICMyIHByZS1jYWxjdWxhdGVzIHRoZSBwcmltZXMg
YW5kIHN0b3JlcyB0aGUgcmVzdWx0Ci0vLyBpbiBhbiBhcnJheS4KLWNsYXNzIFByZUNhbGN1bGF0
ZWRQcmltZVRhYmxlIDogcHVibGljIFByaW1lVGFibGUgewotIHB1YmxpYzoKLSAgLy8gJ21heCcg
c3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciB0aGUgcHJpbWUgdGFibGUgaG9sZHMuCi0gIGV4
cGxpY2l0IFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKGludCBtYXgpCi0gICAgICA6IGlzX3ByaW1l
X3NpemVfKG1heCArIDEpLCBpc19wcmltZV8obmV3IGJvb2xbbWF4ICsgMV0pIHsKLSAgICBDYWxj
dWxhdGVQcmltZXNVcFRvKG1heCk7Ci0gIH0KLSAgdmlydHVhbCB+UHJlQ2FsY3VsYXRlZFByaW1l
VGFibGUoKSB7IGRlbGV0ZVtdIGlzX3ByaW1lXzsgfQotCi0gIHZpcnR1YWwgYm9vbCBJc1ByaW1l
KGludCBuKSBjb25zdCB7Ci0gICAgcmV0dXJuIDAgPD0gbiAmJiBuIDwgaXNfcHJpbWVfc2l6ZV8g
JiYgaXNfcHJpbWVfW25dOwotICB9Ci0KLSAgdmlydHVhbCBpbnQgR2V0TmV4dFByaW1lKGludCBw
KSBjb25zdCB7Ci0gICAgZm9yIChpbnQgbiA9IHAgKyAxOyBuIDwgaXNfcHJpbWVfc2l6ZV87IG4r
KykgewotICAgICAgaWYgKGlzX3ByaW1lX1tuXSkgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgcmV0
dXJuIC0xOwotICB9Ci0KLSBwcml2YXRlOgotICB2b2lkIENhbGN1bGF0ZVByaW1lc1VwVG8oaW50
IG1heCkgewotICAgIDo6c3RkOjpmaWxsKGlzX3ByaW1lXywgaXNfcHJpbWVfICsgaXNfcHJpbWVf
c2l6ZV8sIHRydWUpOwotICAgIGlzX3ByaW1lX1swXSA9IGlzX3ByaW1lX1sxXSA9IGZhbHNlOwot
Ci0gICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbWF4OyBpKyspIHsKLSAgICAgIGlmICghaXNfcHJp
bWVfW2ldKSBjb250aW51ZTsKLQotICAgICAgLy8gTWFya3MgYWxsIG11bHRpcGxlcyBvZiBpIChl
eGNlcHQgaSBpdHNlbGYpIGFzIG5vbi1wcmltZS4KLSAgICAgIGZvciAoaW50IGogPSAyKmk7IGog
PD0gbWF4OyBqICs9IGkpIHsKLSAgICAgICAgaXNfcHJpbWVfW2pdID0gZmFsc2U7Ci0gICAgICB9
Ci0gICAgfQotICB9Ci0KLSAgY29uc3QgaW50IGlzX3ByaW1lX3NpemVfOwotICBib29sKiBjb25z
dCBpc19wcmltZV87Ci0KLSAgLy8gRGlzYWJsZXMgY29tcGlsZXIgd2FybmluZyAiYXNzaWdubWVu
dCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLiIKLSAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUmIHJocyk7Ci19OwotCi0jZW5kaWYgIC8vIEdURVNU
X1NBTVBMRVNfUFJJTUVfVEFCTEVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVz
L3NhbXBsZTEuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGYxNzFlMjYwOWQyNTEzMjI4NDYyMWZiNjJjZjNiYTg2ZTFlNjk5
MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBs
ZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29y
ay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNs
dWRlICJzYW1wbGUxLmgiCi0KLS8vIFJldHVybnMgbiEgKHRoZSBmYWN0b3JpYWwgb2YgbikuICBG
b3IgbmVnYXRpdmUgbiwgbiEgaXMgZGVmaW5lZCB0byBiZSAxLgotaW50IEZhY3RvcmlhbChpbnQg
bikgewotICBpbnQgcmVzdWx0ID0gMTsKLSAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7
Ci0gICAgcmVzdWx0ICo9IGk7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vLyBSZXR1
cm5zIHRydWUgaWZmIG4gaXMgYSBwcmltZSBudW1iZXIuCi1ib29sIElzUHJpbWUoaW50IG4pIHsK
LSAgLy8gVHJpdmlhbCBjYXNlIDE6IHNtYWxsIG51bWJlcnMKLSAgaWYgKG4gPD0gMSkgcmV0dXJu
IGZhbHNlOwotCi0gIC8vIFRyaXZpYWwgY2FzZSAyOiBldmVuIG51bWJlcnMKLSAgaWYgKG4gJSAy
ID09IDApIHJldHVybiBuID09IDI7Ci0KLSAgLy8gTm93LCB3ZSBoYXZlIHRoYXQgbiBpcyBvZGQg
YW5kIG4gPj0gMy4KLQotICAvLyBUcnkgdG8gZGl2aWRlIG4gYnkgZXZlcnkgb2RkIG51bWJlciBp
LCBzdGFydGluZyBmcm9tIDMKLSAgZm9yIChpbnQgaSA9IDM7IDsgaSArPSAyKSB7Ci0gICAgLy8g
V2Ugb25seSBoYXZlIHRvIHRyeSBpIHVwIHRvIHRoZSBzcXVyZSByb290IG9mIG4KLSAgICBpZiAo
aSA+IG4vaSkgYnJlYWs7Ci0KLSAgICAvLyBOb3csIHdlIGhhdmUgaSA8PSBuL2kgPCBuLgotICAg
IC8vIElmIG4gaXMgZGl2aXNpYmxlIGJ5IGksIG4gaXMgbm90IHByaW1lLgotICAgIGlmIChuICUg
aSA9PSAwKSByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvLyBuIGhhcyBubyBpbnRlZ2VyIGZhY3Rv
ciBpbiB0aGUgcmFuZ2UgKDEsIG4pLCBhbmQgdGh1cyBpcyBwcmltZS4KLSAgcmV0dXJuIHRydWU7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NhbXBsZXMvc2FtcGxlMS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGZl
Yjk4YzQ1MDMwMTQ1ZjllYTE4ZDc5NTMxYzkxYzgxZWU4NDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcg
dXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEUx
X0hfCi0jZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFMV9IXwotCi0vLyBSZXR1cm5zIG4hICh0
aGUgZmFjdG9yaWFsIG9mIG4pLiAgRm9yIG5lZ2F0aXZlIG4sIG4hIGlzIGRlZmluZWQgdG8gYmUg
MS4KLWludCBGYWN0b3JpYWwoaW50IG4pOwotCi0vLyBSZXR1cm5zIHRydWUgaWZmIG4gaXMgYSBw
cmltZSBudW1iZXIuCi1ib29sIElzUHJpbWUoaW50IG4pOwotCi0jZW5kaWYgIC8vIEdURVNUX1NB
TVBMRVNfU0FNUExFMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUx
MF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTFjZDVkY2Q3MTUyZTY4N2FhN2VhMTM5
MTFiNWRiYjlmYTY4YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDE0NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8g
VGhpcyBzYW1wbGUgc2hvd3MgaG93IHRvIHVzZSBHb29nbGUgVGVzdCBsaXN0ZW5lciBBUEkgdG8g
aW1wbGVtZW50Ci0vLyBhIHByaW1pdGl2ZSBsZWFrIGNoZWNrZXIuCi0KLSNpbmNsdWRlIDxzdGRp
by5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQot
dXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyczsKLXVzaW5n
IDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0Owot
dXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLQotbmFtZXNwYWNlIHsKLQotLy8gV2Ugd2lsbCB0
cmFjayBtZW1vcnkgdXNlZCBieSB0aGlzIGNsYXNzLgotY2xhc3MgV2F0ZXIgewotIHB1YmxpYzoK
LSAgLy8gTm9ybWFsIFdhdGVyIGRlY2xhcmF0aW9ucyBnbyBoZXJlLgotCi0gIC8vIG9wZXJhdG9y
IG5ldyBhbmQgb3BlcmF0b3IgZGVsZXRlIGhlbHAgdXMgY29udHJvbCB3YXRlciBhbGxvY2F0aW9u
LgotICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IGFsbG9jYXRpb25fc2l6ZSkgewotICAgIGFs
bG9jYXRlZF8rKzsKLSAgICByZXR1cm4gbWFsbG9jKGFsbG9jYXRpb25fc2l6ZSk7Ci0gIH0KLQot
ICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBibG9jaywgc2l6ZV90IC8qIGFsbG9jYXRpb25f
c2l6ZSAqLykgewotICAgIGFsbG9jYXRlZF8tLTsKLSAgICBmcmVlKGJsb2NrKTsKLSAgfQotCi0g
IHN0YXRpYyBpbnQgYWxsb2NhdGVkKCkgeyByZXR1cm4gYWxsb2NhdGVkXzsgfQotCi0gcHJpdmF0
ZToKLSAgc3RhdGljIGludCBhbGxvY2F0ZWRfOwotfTsKLQotaW50IFdhdGVyOjphbGxvY2F0ZWRf
ID0gMDsKLQotLy8gVGhpcyBldmVudCBsaXN0ZW5lciBtb25pdG9ycyBob3cgbWFueSBXYXRlciBv
YmplY3RzIGFyZSBjcmVhdGVkIGFuZAotLy8gZGVzdHJveWVkIGJ5IGVhY2ggdGVzdCwgYW5kIHJl
cG9ydHMgYSBmYWlsdXJlIGlmIGEgdGVzdCBsZWFrcyBzb21lIFdhdGVyCi0vLyBvYmplY3RzLiBJ
dCBkb2VzIHRoaXMgYnkgY29tcGFyaW5nIHRoZSBudW1iZXIgb2YgbGl2ZSBXYXRlciBvYmplY3Rz
IGF0Ci0vLyB0aGUgYmVnaW5uaW5nIG9mIGEgdGVzdCBhbmQgYXQgdGhlIGVuZCBvZiBhIHRlc3Qu
Ci1jbGFzcyBMZWFrQ2hlY2tlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKLSBw
cml2YXRlOgotICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCi0gIHZpcnR1YWwgdm9p
ZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgLyogdGVzdF9pbmZvICovKSB7Ci0gICAgaW5p
dGlhbGx5X2FsbG9jYXRlZF8gPSBXYXRlcjo6YWxsb2NhdGVkKCk7Ci0gIH0KLQotICAvLyBDYWxs
ZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVz
dEluZm8mIC8qIHRlc3RfaW5mbyAqLykgewotICAgIGludCBkaWZmZXJlbmNlID0gV2F0ZXI6OmFs
bG9jYXRlZCgpIC0gaW5pdGlhbGx5X2FsbG9jYXRlZF87Ci0KLSAgICAvLyBZb3UgY2FuIGdlbmVy
YXRlIGEgZmFpbHVyZSBpbiBhbnkgZXZlbnQgaGFuZGxlciBleGNlcHQKLSAgICAvLyBPblRlc3RQ
YXJ0UmVzdWx0LiBKdXN0IHVzZSBhbiBhcHByb3ByaWF0ZSBHb29nbGUgVGVzdCBhc3NlcnRpb24g
dG8gZG8KLSAgICAvLyBpdC4KLSAgICBFWFBFQ1RfTEUoZGlmZmVyZW5jZSwgMCkgPDwgIkxlYWtl
ZCAiIDw8IGRpZmZlcmVuY2UgPDwgIiB1bml0KHMpIG9mIFdhdGVyISI7Ci0gIH0KLQotICBpbnQg
aW5pdGlhbGx5X2FsbG9jYXRlZF87Ci19OwotCi1URVNUKExpc3RlbmVyc1Rlc3QsIERvZXNOb3RM
ZWFrKSB7Ci0gIFdhdGVyKiB3YXRlciA9IG5ldyBXYXRlcjsKLSAgZGVsZXRlIHdhdGVyOwotfQot
Ci0vLyBUaGlzIHNob3VsZCBmYWlsIHdoZW4gdGhlIC0tY2hlY2tfZm9yX2xlYWtzIGNvbW1hbmQg
bGluZSBmbGFnIGlzCi0vLyBzcGVjaWZpZWQuCi1URVNUKExpc3RlbmVyc1Rlc3QsIExlYWtzV2F0
ZXIpIHsKLSAgV2F0ZXIqIHdhdGVyID0gbmV3IFdhdGVyOwotICBFWFBFQ1RfVFJVRSh3YXRlciAh
PSBOVUxMKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFy
ICoqYXJndikgewotICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgYm9vbCBjaGVj
a19mb3JfbGVha3MgPSBmYWxzZTsKLSAgaWYgKGFyZ2MgPiAxICYmIHN0cmNtcChhcmd2WzFdLCAi
LS1jaGVja19mb3JfbGVha3MiKSA9PSAwICkKLSAgICBjaGVja19mb3JfbGVha3MgPSB0cnVlOwot
ICBlbHNlCi0gICAgcHJpbnRmKCIlc1xuIiwgIlJ1biB0aGlzIHByb2dyYW0gd2l0aCAtLWNoZWNr
X2Zvcl9sZWFrcyB0byBlbmFibGUgIgotICAgICAgICAgICAiY3VzdG9tIGxlYWsgY2hlY2tpbmcg
aW4gdGhlIHRlc3RzLiIpOwotCi0gIC8vIElmIHdlIGFyZSBnaXZlbiB0aGUgLS1jaGVja19mb3Jf
bGVha3MgY29tbWFuZCBsaW5lIGZsYWcsIGluc3RhbGxzIHRoZQotICAvLyBsZWFrIGNoZWNrZXIu
Ci0gIGlmIChjaGVja19mb3JfbGVha3MpIHsKLSAgICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3Rl
bmVycyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKLQotICAgIC8vIEFk
ZHMgdGhlIGxlYWsgY2hlY2tlciB0byB0aGUgZW5kIG9mIHRoZSB0ZXN0IGV2ZW50IGxpc3RlbmVy
IGxpc3QsCi0gICAgLy8gYWZ0ZXIgdGhlIGRlZmF1bHQgdGV4dCBvdXRwdXQgcHJpbnRlciBhbmQg
dGhlIGRlZmF1bHQgWE1MIHJlcG9ydAotICAgIC8vIGdlbmVyYXRvci4KLSAgICAvLwotICAgIC8v
IFRoZSBvcmRlciBpcyBpbXBvcnRhbnQgLSBpdCBlbnN1cmVzIHRoYXQgZmFpbHVyZXMgZ2VuZXJh
dGVkIGluIHRoZQotICAgIC8vIGxlYWsgY2hlY2tlcidzIE9uVGVzdEVuZCgpIG1ldGhvZCBhcmUg
cHJvY2Vzc2VkIGJ5IHRoZSB0ZXh0IGFuZCBYTUwKLSAgICAvLyBwcmludGVycyAqYmVmb3JlKiB0
aGVpciBPblRlc3RFbmQoKSBtZXRob2RzIGFyZSBjYWxsZWQsIHN1Y2ggdGhhdAotICAgIC8vIHRo
ZXkgYXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QuIFJlbWVtYmVyIHRoYXQgYSBsaXN0
ZW5lcgotICAgIC8vIHJlY2VpdmVzIGFuIE9uWHl6U3RhcnQgZXZlbnQgKmFmdGVyKiBsaXN0ZW5l
cnMgcHJlY2VkaW5nIGl0IGluIHRoZQotICAgIC8vIGxpc3QgcmVjZWl2ZWQgdGhhdCBldmVudCwg
YW5kIHJlY2VpdmVzIGFuIE9uWHl6RW5kIGV2ZW50ICpiZWZvcmUqCi0gICAgLy8gbGlzdGVuZXJz
IHByZWNlZGluZyBpdC4KLSAgICAvLwotICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv
dXQgZGVsZXRpbmcgdGhlIG5ldyBsaXN0ZW5lciBsYXRlciwgYXMKLSAgICAvLyBHb29nbGUgVGVz
dCB3aWxsIGRvIGl0LgotICAgIGxpc3RlbmVycy5BcHBlbmQobmV3IExlYWtDaGVja2VyKTsKLSAg
fQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUx
X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWZjNGYxZDg2NmU4
MDkzMzJhNDVmOWEwZTIxOTNjNmY0NWJhZGI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5j
YworKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotCi0vLyBUaGlzIHNhbXBsZSBzaG93cyBob3cg
dG8gd3JpdGUgYSBzaW1wbGUgdW5pdCB0ZXN0IGZvciBhIGZ1bmN0aW9uLAotLy8gdXNpbmcgR29v
Z2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBXcml0aW5nIGEgdW5pdCB0ZXN0IHVz
aW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMgZWFzeSBhcyAxLTItMzoKLQotCi0v
LyBTdGVwIDEuIEluY2x1ZGUgbmVjZXNzYXJ5IGhlYWRlciBmaWxlcyBzdWNoIHRoYXQgdGhlIHN0
dWZmIHlvdXIKLS8vIHRlc3QgbG9naWMgbmVlZHMgaXMgZGVjbGFyZWQuCi0vLwotLy8gRG9uJ3Qg
Zm9yZ2V0IGd0ZXN0LmgsIHdoaWNoIGRlY2xhcmVzIHRoZSB0ZXN0aW5nIGZyYW1ld29yay4KLQot
I2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgInNhbXBsZTEuaCIKLSNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgotCi0KLS8vIFN0ZXAgMi4gVXNlIHRoZSBURVNUIG1hY3JvIHRvIGRlZmluZSB5
b3VyIHRlc3RzLgotLy8KLS8vIFRFU1QgaGFzIHR3byBwYXJhbWV0ZXJzOiB0aGUgdGVzdCBjYXNl
IG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi0vLyBBZnRlciB1c2luZyB0aGUgbWFjcm8sIHlvdSBz
aG91bGQgZGVmaW5lIHlvdXIgdGVzdCBsb2dpYyBiZXR3ZWVuIGEKLS8vIHBhaXIgb2YgYnJhY2Vz
LiAgWW91IGNhbiB1c2UgYSBidW5jaCBvZiBtYWNyb3MgdG8gaW5kaWNhdGUgdGhlCi0vLyBzdWNj
ZXNzIG9yIGZhaWx1cmUgb2YgYSB0ZXN0LiAgRVhQRUNUX1RSVUUgYW5kIEVYUEVDVF9FUSBhcmUK
LS8vIGV4YW1wbGVzIG9mIHN1Y2ggbWFjcm9zLiAgRm9yIGEgY29tcGxldGUgbGlzdCwgc2VlIGd0
ZXN0LmguCi0vLwotLy8gPFRlY2huaWNhbERldGFpbHM+Ci0vLwotLy8gSW4gR29vZ2xlIFRlc3Qs
IHRlc3RzIGFyZSBncm91cGVkIGludG8gdGVzdCBjYXNlcy4gIFRoaXMgaXMgaG93IHdlCi0vLyBr
ZWVwIHRlc3QgY29kZSBvcmdhbml6ZWQuICBZb3Ugc2hvdWxkIHB1dCBsb2dpY2FsbHkgcmVsYXRl
ZCB0ZXN0cwotLy8gaW50byB0aGUgc2FtZSB0ZXN0IGNhc2UuCi0vLwotLy8gVGhlIHRlc3QgY2Fz
ZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lIHNob3VsZCBib3RoIGJlIHZhbGlkIEMrKwotLy8gaWRl
bnRpZmllcnMuICBBbmQgeW91IHNob3VsZCBub3QgdXNlIHVuZGVyc2NvcmUgKF8pIGluIHRoZSBu
YW1lcy4KLS8vCi0vLyBHb29nbGUgVGVzdCBndWFyYW50ZWVzIHRoYXQgZWFjaCB0ZXN0IHlvdSBk
ZWZpbmUgaXMgcnVuIGV4YWN0bHkKLS8vIG9uY2UsIGJ1dCBpdCBtYWtlcyBubyBndWFyYW50ZWUg
b24gdGhlIG9yZGVyIHRoZSB0ZXN0cyBhcmUKLS8vIGV4ZWN1dGVkLiAgVGhlcmVmb3JlLCB5b3Ug
c2hvdWxkIHdyaXRlIHlvdXIgdGVzdHMgaW4gc3VjaCBhIHdheQotLy8gdGhhdCB0aGVpciByZXN1
bHRzIGRvbid0IGRlcGVuZCBvbiB0aGVpciBvcmRlci4KLS8vCi0vLyA8L1RlY2huaWNhbERldGFp
bHM+Ci0KLQotLy8gVGVzdHMgRmFjdG9yaWFsKCkuCi0KLS8vIFRlc3RzIGZhY3RvcmlhbCBvZiBu
ZWdhdGl2ZSBudW1iZXJzLgotVEVTVChGYWN0b3JpYWxUZXN0LCBOZWdhdGl2ZSkgewotICAvLyBU
aGlzIHRlc3QgaXMgbmFtZWQgIk5lZ2F0aXZlIiwgYW5kIGJlbG9uZ3MgdG8gdGhlICJGYWN0b3Jp
YWxUZXN0IgotICAvLyB0ZXN0IGNhc2UuCi0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTUpKTsK
LSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkpOwotICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0x
MCksIDApOwotCi0gIC8vIDxUZWNobmljYWxEZXRhaWxzPgotICAvLwotICAvLyBFWFBFQ1RfRVEo
ZXhwZWN0ZWQsIGFjdHVhbCkgaXMgdGhlIHNhbWUgYXMKLSAgLy8KLSAgLy8gICBFWFBFQ1RfVFJV
RSgoZXhwZWN0ZWQpID09IChhY3R1YWwpKQotICAvLwotICAvLyBleGNlcHQgdGhhdCBpdCB3aWxs
IHByaW50IGJvdGggdGhlIGV4cGVjdGVkIHZhbHVlIGFuZCB0aGUgYWN0dWFsCi0gIC8vIHZhbHVl
IHdoZW4gdGhlIGFzc2VydGlvbiBmYWlscy4gIFRoaXMgaXMgdmVyeSBoZWxwZnVsIGZvcgotICAv
LyBkZWJ1Z2dpbmcuICBUaGVyZWZvcmUgaW4gdGhpcyBjYXNlIEVYUEVDVF9FUSBpcyBwcmVmZXJy
ZWQuCi0gIC8vCi0gIC8vIE9uIHRoZSBvdGhlciBoYW5kLCBFWFBFQ1RfVFJVRSBhY2NlcHRzIGFu
eSBCb29sZWFuIGV4cHJlc3Npb24sCi0gIC8vIGFuZCBpcyB0aHVzIG1vcmUgZ2VuZXJhbC4KLSAg
Ly8KLSAgLy8gPC9UZWNobmljYWxEZXRhaWxzPgotfQotCi0vLyBUZXN0cyBmYWN0b3JpYWwgb2Yg
MC4KLVRFU1QoRmFjdG9yaWFsVGVzdCwgWmVybykgewotICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFs
KDApKTsKLX0KLQotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51bWJlcnMuCi1URVNU
KEZhY3RvcmlhbFRlc3QsIFBvc2l0aXZlKSB7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkp
OwotICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsKLSAgRVhQRUNUX0VRKDYsIEZhY3Rvcmlh
bCgzKSk7Ci0gIEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9yaWFsKDgpKTsKLX0KLQotCi0vLyBUZXN0
cyBJc1ByaW1lKCkKLQotLy8gVGVzdHMgbmVnYXRpdmUgaW5wdXQuCi1URVNUKElzUHJpbWVUZXN0
LCBOZWdhdGl2ZSkgewotICAvLyBUaGlzIHRlc3QgYmVsb25ncyB0byB0aGUgSXNQcmltZVRlc3Qg
dGVzdCBjYXNlLgotCi0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc1ByaW1lKC0yKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4pKTsKLX0KLQot
Ly8gVGVzdHMgc29tZSB0cml2aWFsIGNhc2VzLgotVEVTVChJc1ByaW1lVGVzdCwgVHJpdmlhbCkg
ewotICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEp
KTsKLSAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7Ci0gIEVYUEVDVF9UUlVFKElzUHJpbWUoMykp
OwotfQotCi0vLyBUZXN0cyBwb3NpdGl2ZSBpbnB1dC4KLVRFU1QoSXNQcmltZVRlc3QsIFBvc2l0
aXZlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKLSAgRVhQRUNUX1RSVUUoSXNQcmlt
ZSg1KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDYpKTsKLSAgRVhQRUNUX1RSVUUoSXNQcmlt
ZSgyMykpOwotfQotCi0vLyBTdGVwIDMuIENhbGwgUlVOX0FMTF9URVNUUygpIGluIG1haW4oKS4K
LS8vCi0vLyBXZSBkbyB0aGlzIGJ5IGxpbmtpbmcgaW4gc3JjL2d0ZXN0X21haW4uY2MgZmlsZSwg
d2hpY2ggY29uc2lzdHMgb2YKLS8vIGEgbWFpbigpIGZ1bmN0aW9uIHdoaWNoIGNhbGxzIFJVTl9B
TExfVEVTVFMoKSBmb3IgdXMuCi0vLwotLy8gVGhpcyBydW5zIGFsbCB0aGUgdGVzdHMgeW91J3Zl
IGRlZmluZWQsIHByaW50cyB0aGUgcmVzdWx0LCBhbmQKLS8vIHJldHVybnMgMCBpZiBzdWNjZXNz
ZnVsLCBvciAxIG90aGVyd2lzZS4KLS8vCi0vLyBEaWQgeW91IG5vdGljZSB0aGF0IHdlIGRpZG4n
dCByZWdpc3RlciB0aGUgdGVzdHM/ICBUaGUKLS8vIFJVTl9BTExfVEVTVFMoKSBtYWNybyBtYWdp
Y2FsbHkga25vd3MgYWJvdXQgYWxsIHRoZSB0ZXN0cyB3ZQotLy8gZGVmaW5lZC4gIElzbid0IHRo
aXMgY29udmVuaWVudD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMi5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWY3NjNiOWJkZjhkN2FiYzEzYzYxYzU2ODMzMWQyMWI5ZmE0OTc1ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1w
bGVzL3NhbXBsZTIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0g
ZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgInNhbXBs
ZTIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0vLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQg
QyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4KLWNvbnN0IGNoYXIqIE15U3Ry
aW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cmluZykgewotICBpZiAoYV9jX3N0
cmluZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLQotICBjb25zdCBzaXplX3QgbGVuID0gc3RybGVu
KGFfY19zdHJpbmcpOwotICBjaGFyKiBjb25zdCBjbG9uZSA9IG5ldyBjaGFyWyBsZW4gKyAxIF07
Ci0gIG1lbWNweShjbG9uZSwgYV9jX3N0cmluZywgbGVuICsgMSk7Ci0KLSAgcmV0dXJuIGNsb25l
OwotfQotCi0vLyBTZXRzIHRoZSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcgdGhpcyBNeVN0cmluZyBv
YmplY3QKLS8vIHJlcHJlc2VudHMuCi12b2lkIE15U3RyaW5nOjpTZXQoY29uc3QgY2hhciogYV9j
X3N0cmluZykgewotICAvLyBNYWtlcyBzdXJlIHRoaXMgd29ya3Mgd2hlbiBjX3N0cmluZyA9PSBj
X3N0cmluZ18KLSAgY29uc3QgY2hhciogY29uc3QgdGVtcCA9IE15U3RyaW5nOjpDbG9uZUNTdHJp
bmcoYV9jX3N0cmluZyk7Ci0gIGRlbGV0ZVtdIGNfc3RyaW5nXzsKLSAgY19zdHJpbmdfID0gdGVt
cDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMi5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi
NDg1YzcwZmIzM2FkN2Q4NDA1ZjY2YThhMjc0NDEyZGUwNDg1MjkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGlu
ZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2lmbmRlZiBHVEVTVF9TQU1QTEVTX1NBTVBM
RTJfSF8KLSNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUyX0hfCi0KLSNpbmNsdWRlIDxzdHJp
bmcuaD4KLQotCi0vLyBBIHNpbXBsZSBzdHJpbmcgY2xhc3MuCi1jbGFzcyBNeVN0cmluZyB7Ci0g
cHJpdmF0ZToKLSAgY29uc3QgY2hhciogY19zdHJpbmdfOwotICBjb25zdCBNeVN0cmluZyYgb3Bl
cmF0b3I9KGNvbnN0IE15U3RyaW5nJiByaHMpOwotCi0gcHVibGljOgotICAvLyBDbG9uZXMgYSAw
LXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4KLSAgc3Rh
dGljIGNvbnN0IGNoYXIqIENsb25lQ1N0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyaW5nKTsKLQot
ICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLSAgLy8KLSAgLy8gQyd0b3JzCi0KLSAgLy8gVGhlIGRlZmF1bHQgYyd0b3IgY29uc3Ry
dWN0cyBhIE5VTEwgc3RyaW5nLgotICBNeVN0cmluZygpIDogY19zdHJpbmdfKE5VTEwpIHt9Ci0K
LSAgLy8gQ29uc3RydWN0cyBhIE15U3RyaW5nIGJ5IGNsb25pbmcgYSAwLXRlcm1pbmF0ZWQgQyBz
dHJpbmcuCi0gIGV4cGxpY2l0IE15U3RyaW5nKGNvbnN0IGNoYXIqIGFfY19zdHJpbmcpIDogY19z
dHJpbmdfKE5VTEwpIHsKLSAgICBTZXQoYV9jX3N0cmluZyk7Ci0gIH0KLQotICAvLyBDb3B5IGMn
dG9yCi0gIE15U3RyaW5nKGNvbnN0IE15U3RyaW5nJiBzdHJpbmcpIDogY19zdHJpbmdfKE5VTEwp
IHsKLSAgICBTZXQoc3RyaW5nLmNfc3RyaW5nXyk7Ci0gIH0KLQotICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgLy8KLSAgLy8g
RCd0b3IuICBNeVN0cmluZyBpcyBpbnRlbmRlZCB0byBiZSBhIGZpbmFsIGNsYXNzLCBzbyB0aGUg
ZCd0b3IKLSAgLy8gZG9lc24ndCBuZWVkIHRvIGJlIHZpcnR1YWwuCi0gIH5NeVN0cmluZygpIHsg
ZGVsZXRlW10gY19zdHJpbmdfOyB9Ci0KLSAgLy8gR2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3Ry
aW5nIHRoaXMgTXlTdHJpbmcgb2JqZWN0IHJlcHJlc2VudHMuCi0gIGNvbnN0IGNoYXIqIGNfc3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gY19zdHJpbmdfOyB9Ci0KLSAgc2l6ZV90IExlbmd0aCgpIGNv
bnN0IHsKLSAgICByZXR1cm4gY19zdHJpbmdfID09IE5VTEwgPyAwIDogc3RybGVuKGNfc3RyaW5n
Xyk7Ci0gIH0KLQotICAvLyBTZXRzIHRoZSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcgdGhpcyBNeVN0
cmluZyBvYmplY3QgcmVwcmVzZW50cy4KLSAgdm9pZCBTZXQoY29uc3QgY2hhciogY19zdHJpbmcp
OwotfTsKLQotCi0jZW5kaWYgIC8vIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0ZmExOWI3MWM3OTJhNGM2YzlkNjkwMzExNjEwMDI4M2IwMTIwYTIxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2Ft
cGxlMl91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dy
YW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8K
LS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotCi0vLyBUaGlzIHNh
bXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNs
YXNzCi0vLyB0aGF0IGhhcyBtdWx0aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgotLy8KLS8vIFVzdWFs
bHksIGl0J3MgYSBnb29kIGlkZWEgdG8gaGF2ZSBvbmUgdGVzdCBmb3IgZWFjaCBtZXRob2QgaW4g
eW91cgotLy8gY2xhc3MuICBZb3UgZG9uJ3QgaGF2ZSB0byBkbyB0aGF0IGV4YWN0bHksIGJ1dCBp
dCBoZWxwcyB0byBrZWVwCi0vLyB5b3VyIHRlc3RzIG9yZ2FuaXplZC4gIFlvdSBtYXkgYWxzbyB0
aHJvdyBpbiBhZGRpdGlvbmFsIHRlc3RzIGFzCi0vLyBuZWVkZWQuCi0KLSNpbmNsdWRlICJzYW1w
bGUyLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gSW4gdGhpcyBleGFtcGxlLCB3
ZSB0ZXN0IHRoZSBNeVN0cmluZyBjbGFzcyAoYSBzaW1wbGUgc3RyaW5nKS4KLQotLy8gVGVzdHMg
dGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUKE15U3RyaW5nLCBEZWZhdWx0Q29uc3RydWN0b3IpIHsK
LSAgY29uc3QgTXlTdHJpbmcgczsKLQotICAvLyBBc3NlcnRzIHRoYXQgcy5jX3N0cmluZygpIHJl
dHVybnMgTlVMTC4KLSAgLy8KLSAgLy8gPFRlY2huaWNhbERldGFpbHM+Ci0gIC8vCi0gIC8vIElm
IHdlIHdyaXRlIE5VTEwgaW5zdGVhZCBvZgotICAvLwotICAvLyAgIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIgKj4oTlVMTCkKLSAgLy8KLSAgLy8gaW4gdGhpcyBhc3NlcnRpb24sIGl0IHdpbGwgZ2Vu
ZXJhdGUgYSB3YXJuaW5nIG9uIGdjYyAzLjQuICBUaGUKLSAgLy8gcmVhc29uIGlzIHRoYXQgRVhQ
RUNUX0VRIG5lZWRzIHRvIGtub3cgdGhlIHR5cGVzIG9mIGl0cwotICAvLyBhcmd1bWVudHMgaW4g
b3JkZXIgdG8gcHJpbnQgdGhlbSB3aGVuIGl0IGZhaWxzLiAgU2luY2UgTlVMTCBpcwotICAvLyAj
ZGVmaW5lZCBhcyAwLCB0aGUgY29tcGlsZXIgd2lsbCB1c2UgdGhlIGZvcm1hdHRlciBmdW5jdGlv
biBmb3IKLSAgLy8gaW50IHRvIHByaW50IGl0LiAgSG93ZXZlciwgZ2NjIHRoaW5rcyB0aGF0IE5V
TEwgc2hvdWxkIGJlIHVzZWQgYXMKLSAgLy8gYSBwb2ludGVyLCBub3QgYW4gaW50LCBhbmQgdGhl
cmVmb3JlIGNvbXBsYWlucy4KLSAgLy8KLSAgLy8gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0gaXMg
QysrJ3MgbGFjayBvZiBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZQotICAvLyBpbnRlZ2VyIG51bWJl
ciAwIGFuZCB0aGUgbnVsbCBwb2ludGVyIGNvbnN0YW50LiAgVW5mb3J0dW5hdGVseSwKLSAgLy8g
d2UgaGF2ZSB0byBsaXZlIHdpdGggdGhpcyBmYWN0LgotICAvLwotICAvLyA8L1RlY2huaWNhbERl
dGFpbHM+Ci0gIEVYUEVDVF9TVFJFUShOVUxMLCBzLmNfc3RyaW5nKCkpOwotCi0gIEVYUEVDVF9F
USgwdSwgcy5MZW5ndGgoKSk7Ci19Ci0KLWNvbnN0IGNoYXIga0hlbGxvU3RyaW5nW10gPSAiSGVs
bG8sIHdvcmxkISI7Ci0KLS8vIFRlc3RzIHRoZSBjJ3RvciB0aGF0IGFjY2VwdHMgYSBDIHN0cmlu
Zy4KLVRFU1QoTXlTdHJpbmcsIENvbnN0cnVjdG9yRnJvbUNTdHJpbmcpIHsKLSAgY29uc3QgTXlT
dHJpbmcgcyhrSGVsbG9TdHJpbmcpOwotICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMuY19zdHJpbmco
KSwga0hlbGxvU3RyaW5nKSk7Ci0gIEVYUEVDVF9FUShzaXplb2Yoa0hlbGxvU3RyaW5nKS9zaXpl
b2Yoa0hlbGxvU3RyaW5nWzBdKSAtIDEsCi0gICAgICAgICAgICBzLkxlbmd0aCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIGNvcHkgYyd0b3IuCi1URVNUKE15U3RyaW5nLCBDb3B5Q29uc3RydWN0b3Ip
IHsKLSAgY29uc3QgTXlTdHJpbmcgczEoa0hlbGxvU3RyaW5nKTsKLSAgY29uc3QgTXlTdHJpbmcg
czIgPSBzMTsKLSAgRVhQRUNUX0VRKDAsIHN0cmNtcChzMi5jX3N0cmluZygpLCBrSGVsbG9TdHJp
bmcpKTsKLX0KLQotLy8gVGVzdHMgdGhlIFNldCBtZXRob2QuCi1URVNUKE15U3RyaW5nLCBTZXQp
IHsKLSAgTXlTdHJpbmcgczsKLQotICBzLlNldChrSGVsbG9TdHJpbmcpOwotICBFWFBFQ1RfRVEo
MCwgc3RyY21wKHMuY19zdHJpbmcoKSwga0hlbGxvU3RyaW5nKSk7Ci0KLSAgLy8gU2V0IHNob3Vs
ZCB3b3JrIHdoZW4gdGhlIGlucHV0IHBvaW50ZXIgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQotICAv
LyBhbHJlYWR5IGluIHRoZSBNeVN0cmluZyBvYmplY3QuCi0gIHMuU2V0KHMuY19zdHJpbmcoKSk7
Ci0gIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKLQot
ICAvLyBDYW4gd2Ugc2V0IHRoZSBNeVN0cmluZyB0byBOVUxMPwotICBzLlNldChOVUxMKTsKLSAg
RVhQRUNUX1NUUkVRKE5VTEwsIHMuY19zdHJpbmcoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zYW1wbGVzL3NhbXBsZTMtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTMt
aW5sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMzA4NGQ2Mzg1ZGY4OTdmZTU5
MjQ4ZjQ5NmJiYzkxYTE3Njg5NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTcyICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2ds
ZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotCi0jaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8KLSNk
ZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwotCi0jaW5jbHVkZSA8c3RkZGVmLmg+
Ci0KLQotLy8gUXVldWUgaXMgYSBzaW1wbGUgcXVldWUgaW1wbGVtZW50ZWQgYXMgYSBzaW5nbGVk
LWxpbmtlZCBsaXN0LgotLy8KLS8vIFRoZSBlbGVtZW50IHR5cGUgbXVzdCBzdXBwb3J0IGNvcHkg
Y29uc3RydWN0b3IuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUgaXMgdGhlIGVsZW1lbnQg
dHlwZQotY2xhc3MgUXVldWU7Ci0KLS8vIFF1ZXVlTm9kZSBpcyBhIG5vZGUgaW4gYSBRdWV1ZSwg
d2hpY2ggY29uc2lzdHMgb2YgYW4gZWxlbWVudCBvZgotLy8gdHlwZSBFIGFuZCBhIHBvaW50ZXIg
dG8gdGhlIG5leHQgbm9kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUgZWxl
bWVudCB0eXBlCi1jbGFzcyBRdWV1ZU5vZGUgewotICBmcmllbmQgY2xhc3MgUXVldWU8RT47Ci0K
LSBwdWJsaWM6Ci0gIC8vIEdldHMgdGhlIGVsZW1lbnQgaW4gdGhpcyBub2RlLgotICBjb25zdCBF
JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZWxlbWVudF87IH0KLQotICAvLyBHZXRzIHRoZSBu
ZXh0IG5vZGUgaW4gdGhlIHF1ZXVlLgotICBRdWV1ZU5vZGUqIG5leHQoKSB7IHJldHVybiBuZXh0
XzsgfQotICBjb25zdCBRdWV1ZU5vZGUqIG5leHQoKSBjb25zdCB7IHJldHVybiBuZXh0XzsgfQot
Ci0gcHJpdmF0ZToKLSAgLy8gQ3JlYXRlcyBhIG5vZGUgd2l0aCBhIGdpdmVuIGVsZW1lbnQgdmFs
dWUuICBUaGUgbmV4dCBwb2ludGVyIGlzCi0gIC8vIHNldCB0byBOVUxMLgotICBleHBsaWNpdCBR
dWV1ZU5vZGUoY29uc3QgRSYgYW5fZWxlbWVudCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50KSwgbmV4
dF8oTlVMTCkge30KLQotICAvLyBXZSBkaXNhYmxlIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgb3Bl
cmF0b3IgYW5kIGNvcHkgYyd0b3IuCi0gIGNvbnN0IFF1ZXVlTm9kZSYgb3BlcmF0b3IgPSAoY29u
c3QgUXVldWVOb2RlJik7Ci0gIFF1ZXVlTm9kZShjb25zdCBRdWV1ZU5vZGUmKTsKLQotICBFIGVs
ZW1lbnRfOwotICBRdWV1ZU5vZGUqIG5leHRfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEU+
ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCi1jbGFzcyBRdWV1ZSB7Ci0gcHVibGljOgotICAv
LyBDcmVhdGVzIGFuIGVtcHR5IHF1ZXVlLgotICBRdWV1ZSgpIDogaGVhZF8oTlVMTCksIGxhc3Rf
KE5VTEwpLCBzaXplXygwKSB7fQotCi0gIC8vIEQndG9yLiAgQ2xlYXJzIHRoZSBxdWV1ZS4KLSAg
flF1ZXVlKCkgeyBDbGVhcigpOyB9Ci0KLSAgLy8gQ2xlYXJzIHRoZSBxdWV1ZS4KLSAgdm9pZCBD
bGVhcigpIHsKLSAgICBpZiAoc2l6ZV8gPiAwKSB7Ci0gICAgICAvLyAxLiBEZWxldGVzIGV2ZXJ5
IG5vZGUuCi0gICAgICBRdWV1ZU5vZGU8RT4qIG5vZGUgPSBoZWFkXzsKLSAgICAgIFF1ZXVlTm9k
ZTxFPiogbmV4dCA9IG5vZGUtPm5leHQoKTsKLSAgICAgIGZvciAoOyA7KSB7Ci0gICAgICAgIGRl
bGV0ZSBub2RlOwotICAgICAgICBub2RlID0gbmV4dDsKLSAgICAgICAgaWYgKG5vZGUgPT0gTlVM
TCkgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBub2RlLT5uZXh0KCk7Ci0gICAgICB9Ci0KLSAgICAg
IC8vIDIuIFJlc2V0cyB0aGUgbWVtYmVyIHZhcmlhYmxlcy4KLSAgICAgIGhlYWRfID0gbGFzdF8g
PSBOVUxMOwotICAgICAgc2l6ZV8gPSAwOwotICAgIH0KLSAgfQotCi0gIC8vIEdldHMgdGhlIG51
bWJlciBvZiBlbGVtZW50cy4KLSAgc2l6ZV90IFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplXzsg
fQotCi0gIC8vIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBvciBOVUxMIGlm
IHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgUXVldWVOb2RlPEU+KiBIZWFkKCkgeyByZXR1cm4gaGVh
ZF87IH0KLSAgY29uc3QgUXVldWVOb2RlPEU+KiBIZWFkKCkgY29uc3QgeyByZXR1cm4gaGVhZF87
IH0KLQotICAvLyBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBvciBOVUxMIGlm
IHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgUXVldWVOb2RlPEU+KiBMYXN0KCkgeyByZXR1cm4gbGFz
dF87IH0KLSAgY29uc3QgUXVldWVOb2RlPEU+KiBMYXN0KCkgY29uc3QgeyByZXR1cm4gbGFzdF87
IH0KLQotICAvLyBBZGRzIGFuIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICBBIGNv
cHkgb2YgdGhlIGVsZW1lbnQgaXMKLSAgLy8gY3JlYXRlZCB1c2luZyB0aGUgY29weSBjb25zdHJ1
Y3RvciwgYW5kIHRoZW4gc3RvcmVkIGluIHRoZSBxdWV1ZS4KLSAgLy8gQ2hhbmdlcyBtYWRlIHRv
IHRoZSBlbGVtZW50IGluIHRoZSBxdWV1ZSBkb2Vzbid0IGFmZmVjdCB0aGUgc291cmNlCi0gIC8v
IG9iamVjdCwgYW5kIHZpY2UgdmVyc2EuCi0gIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50
KSB7Ci0gICAgUXVldWVOb2RlPEU+KiBuZXdfbm9kZSA9IG5ldyBRdWV1ZU5vZGU8RT4oZWxlbWVu
dCk7Ci0KLSAgICBpZiAoc2l6ZV8gPT0gMCkgewotICAgICAgaGVhZF8gPSBsYXN0XyA9IG5ld19u
b2RlOwotICAgICAgc2l6ZV8gPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBsYXN0Xy0+bmV4dF8g
PSBuZXdfbm9kZTsKLSAgICAgIGxhc3RfID0gbmV3X25vZGU7Ci0gICAgICBzaXplXysrOwotICAg
IH0KLSAgfQotCi0gIC8vIFJlbW92ZXMgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIGFuZCByZXR1cm5z
IGl0LiAgUmV0dXJucyBOVUxMIGlmCi0gIC8vIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgRSogRGVx
dWV1ZSgpIHsKLSAgICBpZiAoc2l6ZV8gPT0gMCkgewotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg
fQotCi0gICAgY29uc3QgUXVldWVOb2RlPEU+KiBjb25zdCBvbGRfaGVhZCA9IGhlYWRfOwotICAg
IGhlYWRfID0gaGVhZF8tPm5leHRfOwotICAgIHNpemVfLS07Ci0gICAgaWYgKHNpemVfID09IDAp
IHsKLSAgICAgIGxhc3RfID0gTlVMTDsKLSAgICB9Ci0KLSAgICBFKiBlbGVtZW50ID0gbmV3IEUo
b2xkX2hlYWQtPmVsZW1lbnQoKSk7Ci0gICAgZGVsZXRlIG9sZF9oZWFkOwotCi0gICAgcmV0dXJu
IGVsZW1lbnQ7Ci0gIH0KLQotICAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciBvbiBlYWNo
IGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBhbmQKLSAgLy8gcmV0dXJucyB0aGUgcmVzdWx0IGluIGEg
bmV3IHF1ZXVlLiAgVGhlIG9yaWdpbmFsIHF1ZXVlIGlzIG5vdAotICAvLyBhZmZlY3RlZC4KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIFF1ZXVlKiBNYXAoRiBmdW5jdGlvbikgY29uc3Qgewot
ICAgIFF1ZXVlKiBuZXdfcXVldWUgPSBuZXcgUXVldWUoKTsKLSAgICBmb3IgKGNvbnN0IFF1ZXVl
Tm9kZTxFPiogbm9kZSA9IGhlYWRfOyBub2RlICE9IE5VTEw7IG5vZGUgPSBub2RlLT5uZXh0Xykg
ewotICAgICAgbmV3X3F1ZXVlLT5FbnF1ZXVlKGZ1bmN0aW9uKG5vZGUtPmVsZW1lbnQoKSkpOwot
ICAgIH0KLQotICAgIHJldHVybiBuZXdfcXVldWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFF1ZXVl
Tm9kZTxFPiogaGVhZF87ICAvLyBUaGUgZmlyc3Qgbm9kZSBvZiB0aGUgcXVldWUuCi0gIFF1ZXVl
Tm9kZTxFPiogbGFzdF87ICAvLyBUaGUgbGFzdCBub2RlIG9mIHRoZSBxdWV1ZS4KLSAgc2l6ZV90
IHNpemVfOyAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuCi0KLSAgLy8g
V2UgZGlzYWxsb3cgY29weWluZyBhIHF1ZXVlLgotICBRdWV1ZShjb25zdCBRdWV1ZSYpOwotICBj
b25zdCBRdWV1ZSYgb3BlcmF0b3IgPSAoY29uc3QgUXVldWUmKTsKLX07Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzX3Vu
aXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjM4NzdkMDEzMjM0NWIx
ODllZDVlYmE3M2QyMDFiZWM1NmY4ZGE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlM191bml0dGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25zdHJhdGluZyB1
c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotCi0vLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHVzZSBh
IG1vcmUgYWR2YW5jZWQgZmVhdHVyZSBvZiBHb29nbGUgVGVzdCBjYWxsZWQKLS8vIHRlc3QgZml4
dHVyZS4KLS8vCi0vLyBBIHRlc3QgZml4dHVyZSBpcyBhIHBsYWNlIHRvIGhvbGQgb2JqZWN0cyBh
bmQgZnVuY3Rpb25zIHNoYXJlZCBieQotLy8gYWxsIHRlc3RzIGluIGEgdGVzdCBjYXNlLiAgVXNp
bmcgYSB0ZXN0IGZpeHR1cmUgYXZvaWRzIGR1cGxpY2F0aW5nCi0vLyB0aGUgdGVzdCBjb2RlIG5l
Y2Vzc2FyeSB0byBpbml0aWFsaXplIGFuZCBjbGVhbnVwIHRob3NlIGNvbW1vbgotLy8gb2JqZWN0
cyBmb3IgZWFjaCB0ZXN0LiAgSXQgaXMgYWxzbyB1c2VmdWwgZm9yIGRlZmluaW5nIHN1Yi1yb3V0
aW5lcwotLy8gdGhhdCB5b3VyIHRlc3RzIG5lZWQgdG8gaW52b2tlIGEgbG90LgotLy8KLS8vIDxU
ZWNobmljYWxEZXRhaWxzPgotLy8KLS8vIFRoZSB0ZXN0cyBzaGFyZSB0aGUgdGVzdCBmaXh0dXJl
IGluIHRoZSBzZW5zZSBvZiBjb2RlIHNoYXJpbmcsIG5vdAotLy8gZGF0YSBzaGFyaW5nLiAgRWFj
aCB0ZXN0IGlzIGdpdmVuIGl0cyBvd24gZnJlc2ggY29weSBvZiB0aGUKLS8vIGZpeHR1cmUuICBZ
b3UgY2Fubm90IGV4cGVjdCB0aGUgZGF0YSBtb2RpZmllZCBieSBvbmUgdGVzdCB0byBiZQotLy8g
cGFzc2VkIG9uIHRvIGFub3RoZXIgdGVzdCwgd2hpY2ggaXMgYSBiYWQgaWRlYS4KLS8vCi0vLyBU
aGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0IHRlc3RzIHNob3VsZCBiZSBpbmRlcGVu
ZGVudCBhbmQKLS8vIHJlcGVhdGFibGUuICBJbiBwYXJ0aWN1bGFyLCBhIHRlc3Qgc2hvdWxkIG5v
dCBmYWlsIGFzIHRoZSByZXN1bHQgb2YKLS8vIGFub3RoZXIgdGVzdCdzIGZhaWx1cmUuICBJZiBv
bmUgdGVzdCBkZXBlbmRzIG9uIGluZm8gcHJvZHVjZWQgYnkKLS8vIGFub3RoZXIgdGVzdCwgdGhl
biB0aGUgdHdvIHRlc3RzIHNob3VsZCByZWFsbHkgYmUgb25lIGJpZyB0ZXN0LgotLy8KLS8vIFRo
ZSBtYWNyb3MgZm9yIGluZGljYXRpbmcgdGhlIHN1Y2Nlc3MvZmFpbHVyZSBvZiBhIHRlc3QKLS8v
IChFWFBFQ1RfVFJVRSwgRkFJTCwgZXRjKSBuZWVkIHRvIGtub3cgd2hhdCB0aGUgY3VycmVudCB0
ZXN0IGlzCi0vLyAod2hlbiBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRlc3QgcmVzdWx0LCBpdCB0
ZWxscyB5b3Ugd2hpY2ggdGVzdAotLy8gZWFjaCBmYWlsdXJlIGJlbG9uZ3MgdG8pLiAgVGVjaG5p
Y2FsbHksIHRoZXNlIG1hY3JvcyBpbnZva2UgYQotLy8gbWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBU
ZXN0IGNsYXNzLiAgVGhlcmVmb3JlLCB5b3UgY2Fubm90IHVzZSB0aGVtCi0vLyBpbiBhIGdsb2Jh
bCBmdW5jdGlvbi4gIFRoYXQncyB3aHkgeW91IHNob3VsZCBwdXQgdGVzdCBzdWItcm91dGluZXMK
LS8vIGluIGEgdGVzdCBmaXh0dXJlLgotLy8KLS8vIDwvVGVjaG5pY2FsRGV0YWlscz4KLQotI2lu
Y2x1ZGUgInNhbXBsZTMtaW5sLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gVG8g
dXNlIGEgdGVzdCBmaXh0dXJlLCBkZXJpdmUgYSBjbGFzcyBmcm9tIHRlc3Rpbmc6OlRlc3QuCi1j
bGFzcyBRdWV1ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOiAgLy8g
WW91IHNob3VsZCBtYWtlIHRoZSBtZW1iZXJzIHByb3RlY3RlZCBzLnQuIHRoZXkgY2FuIGJlCi0g
ICAgICAgICAgICAgLy8gYWNjZXNzZWQgZnJvbSBzdWItY2xhc3Nlcy4KLQotICAvLyB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0IGlzIHJ1bi4gIFlv
dQotICAvLyBzaG91bGQgZGVmaW5lIGl0IGlmIHlvdSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHZh
cmFpYmxlcy4KLSAgLy8gT3RoZXJ3aXNlLCB0aGlzIGNhbiBiZSBza2lwcGVkLgotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgcTFfLkVucXVldWUoMSk7Ci0gICAgcTJfLkVucXVldWUoMik7
Ci0gICAgcTJfLkVucXVldWUoMyk7Ci0gIH0KLQotICAvLyB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB3aWxsIGJlIGNhbGxlZCBhZnRlciBlYWNoIHRlc3QgaXMgcnVuLgotICAvLyBZb3Ugc2hvdWxk
IGRlZmluZSBpdCBpZiB0aGVyZSBpcyBjbGVhbnVwIHdvcmsgdG8gZG8uICBPdGhlcndpc2UsCi0g
IC8vIHlvdSBkb24ndCBoYXZlIHRvIHByb3ZpZGUgaXQuCi0gIC8vCi0gIC8vIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgLy8gfQotCi0gIC8vIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgc29t
ZSB0ZXN0IHVzZXMuCi0gIHN0YXRpYyBpbnQgRG91YmxlKGludCBuKSB7Ci0gICAgcmV0dXJuIDIq
bjsKLSAgfQotCi0gIC8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIFF1ZXVlOjpNYXAo
KS4KLSAgdm9pZCBNYXBUZXN0ZXIoY29uc3QgUXVldWU8aW50PiAqIHEpIHsKLSAgICAvLyBDcmVh
dGVzIGEgbmV3IHF1ZXVlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgdHdpY2UgYXMgYmlnIGFzIHRo
ZQotICAgIC8vIGNvcnJlc3BvbmRpbmcgb25lIGluIHEuCi0gICAgY29uc3QgUXVldWU8aW50PiAq
IGNvbnN0IG5ld19xID0gcS0+TWFwKERvdWJsZSk7Ci0KLSAgICAvLyBWZXJpZmllcyB0aGF0IHRo
ZSBuZXcgcXVldWUgaGFzIHRoZSBzYW1lIHNpemUgYXMgcS4KLSAgICBBU1NFUlRfRVEocS0+U2l6
ZSgpLCBuZXdfcS0+U2l6ZSgpKTsKLQotICAgIC8vIFZlcmlmaWVzIHRoZSByZWxhdGlvbnNoaXAg
YmV0d2VlbiB0aGUgZWxlbWVudHMgb2YgdGhlIHR3byBxdWV1ZXMuCi0gICAgZm9yICggY29uc3Qg
UXVldWVOb2RlPGludD4gKiBuMSA9IHEtPkhlYWQoKSwgKiBuMiA9IG5ld19xLT5IZWFkKCk7Ci0g
ICAgICAgICAgbjEgIT0gTlVMTDsgbjEgPSBuMS0+bmV4dCgpLCBuMiA9IG4yLT5uZXh0KCkgKSB7
Ci0gICAgICBFWFBFQ1RfRVEoMiAqIG4xLT5lbGVtZW50KCksIG4yLT5lbGVtZW50KCkpOwotICAg
IH0KLQotICAgIGRlbGV0ZSBuZXdfcTsKLSAgfQotCi0gIC8vIERlY2xhcmVzIHRoZSB2YXJpYWJs
ZXMgeW91ciB0ZXN0cyB3YW50IHRvIHVzZS4KLSAgUXVldWU8aW50PiBxMF87Ci0gIFF1ZXVlPGlu
dD4gcTFfOwotICBRdWV1ZTxpbnQ+IHEyXzsKLX07Ci0KLS8vIFdoZW4geW91IGhhdmUgYSB0ZXN0
IGZpeHR1cmUsIHlvdSBkZWZpbmUgYSB0ZXN0IHVzaW5nIFRFU1RfRgotLy8gaW5zdGVhZCBvZiBU
RVNULgotCi0vLyBUZXN0cyB0aGUgZGVmYXVsdCBjJ3Rvci4KLVRFU1RfRihRdWV1ZVRlc3QsIERl
ZmF1bHRDb25zdHJ1Y3RvcikgewotICAvLyBZb3UgY2FuIGFjY2VzcyBkYXRhIGluIHRoZSB0ZXN0
IGZpeHR1cmUgaGVyZS4KLSAgRVhQRUNUX0VRKDB1LCBxMF8uU2l6ZSgpKTsKLX0KLQotLy8gVGVz
dHMgRGVxdWV1ZSgpLgotVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZSkgewotICBpbnQgKiBuID0g
cTBfLkRlcXVldWUoKTsKLSAgRVhQRUNUX1RSVUUobiA9PSBOVUxMKTsKLQotICBuID0gcTFfLkRl
cXVldWUoKTsKLSAgQVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDEsICpuKTsK
LSAgRVhQRUNUX0VRKDB1LCBxMV8uU2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci0KLSAgbiA9IHEyXy5E
ZXF1ZXVlKCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgyLCAqbik7
Ci0gIEVYUEVDVF9FUSgxdSwgcTJfLlNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotfQotCi0vLyBUZXN0
cyB0aGUgUXVldWU6Ok1hcCgpIGZ1bmN0aW9uLgotVEVTVF9GKFF1ZXVlVGVzdCwgTWFwKSB7Ci0g
IE1hcFRlc3RlcigmcTBfKTsKLSAgTWFwVGVzdGVyKCZxMV8pOwotICBNYXBUZXN0ZXIoJnEyXyk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zYW1wbGVzL3NhbXBsZTQuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFl
NDRiZGE2ZjFiYWQ1M2ZmM2M2ZjE0ZTAzMDJiZDNiYjMwOWNiYTcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRp
bmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5j
bHVkZSAic2FtcGxlNC5oIgotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUs
IGFuZCBpbmNyZW1lbnRzIGl0LgotaW50IENvdW50ZXI6OkluY3JlbWVudCgpIHsKLSAgcmV0dXJu
IGNvdW50ZXJfKys7Ci19Ci0KLS8vIFByaW50cyB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlIHRv
IFNURE9VVC4KLXZvaWQgQ291bnRlcjo6UHJpbnQoKSBjb25zdCB7Ci0gIHByaW50ZigiJWQiLCBj
b3VudGVyXyk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjZDYwZjBkZDJkMTg2MDczN2I3ZjBlYTQ1YzU2NzVhM2E4ZWE3MjFmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMv
c2FtcGxlNC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9u
c3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpZm5kZWYgR1RFU1RfU0FNUExF
U19TQU1QTEU0X0hfCi0jZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFNF9IXwotCi0vLyBBIHNp
bXBsZSBtb25vdG9uaWMgY291bnRlci4KLWNsYXNzIENvdW50ZXIgewotIHByaXZhdGU6Ci0gIGlu
dCBjb3VudGVyXzsKLQotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlcyBhIGNvdW50ZXIgdGhhdCBzdGFy
dHMgYXQgMC4KLSAgQ291bnRlcigpIDogY291bnRlcl8oMCkge30KLQotICAvLyBSZXR1cm5zIHRo
ZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBpbmNyZW1lbnRzIGl0LgotICBpbnQgSW5jcmVt
ZW50KCk7Ci0KLSAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8gU1RET1VU
LgotICB2b2lkIFByaW50KCkgY29uc3Q7Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX1NBTVBMRVNf
U0FNUExFNF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTVhZmM3ZDVhMTY4NmIwOTg4OWJmMDdiY2FjZjU4MTY3
NzEwMzJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0x
LDQ1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgInNhbXBsZTQuaCIKLQotLy8gVGVzdHMgdGhlIElu
Y3JlbWVudCgpIG1ldGhvZC4KLVRFU1QoQ291bnRlciwgSW5jcmVtZW50KSB7Ci0gIENvdW50ZXIg
YzsKLQotICAvLyBFWFBFQ1RfRVEoKSBldmFsdWF0ZXMgaXRzIGFyZ3VtZW50cyBleGFjdGx5IG9u
Y2UsIHNvIHRoZXkKLSAgLy8gY2FuIGhhdmUgc2lkZSBlZmZlY3RzLgotCi0gIEVYUEVDVF9FUSgw
LCBjLkluY3JlbWVudCgpKTsKLSAgRVhQRUNUX0VRKDEsIGMuSW5jcmVtZW50KCkpOwotICBFWFBF
Q1RfRVEoMiwgYy5JbmNyZW1lbnQoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1w
bGVzL3NhbXBsZTVfdW5pdHRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZDhlNTc3NzU4M2VjNGJl
MDEwODljOTk3OTViOTBiNzNlZjRmNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KLS8vIFRoaXMgc2FtcGxlIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0
dXJlIGluIG11bHRpcGxlIHRlc3QKLS8vIGNhc2VzIGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBm
cm9tIGl0LgotLy8KLS8vIFdoZW4geW91IGRlZmluZSBhIHRlc3QgZml4dHVyZSwgeW91IHNwZWNp
ZnkgdGhlIG5hbWUgb2YgdGhlIHRlc3QKLS8vIGNhc2UgdGhhdCB3aWxsIHVzZSB0aGlzIGZpeHR1
cmUuICBUaGVyZWZvcmUsIGEgdGVzdCBmaXh0dXJlIGNhbgotLy8gYmUgdXNlZCBieSBvbmx5IG9u
ZSB0ZXN0IGNhc2UuCi0vLwotLy8gU29tZXRpbWVzLCBtb3JlIHRoYW4gb25lIHRlc3QgY2FzZXMg
bWF5IHdhbnQgdG8gdXNlIHRoZSBzYW1lIG9yCi0vLyBzbGlnaHRseSBkaWZmZXJlbnQgdGVzdCBm
aXh0dXJlcy4gIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8KLS8vIG1ha2Ugc3VyZSB0aGF0
IGFsbCB0ZXN0cyBmb3IgYSBHVUkgbGlicmFyeSBkb24ndCBsZWFrIGltcG9ydGFudAotLy8gc3lz
dGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFuZCBicnVzaGVzLiAgSW4gR29vZ2xlIFRlc3QsIHlv
dSBkbwotLy8gdGhpcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQgbG9naWMgaW4gYSBzdXBlciAoYXMg
aW4gInN1cGVyIGNsYXNzIikKLS8vIHRlc3QgZml4dHVyZSwgYW5kIHRoZW4gaGF2ZSBlYWNoIHRl
c3QgY2FzZSB1c2UgYSBmaXh0dXJlIGRlcml2ZWQKLS8vIGZyb20gdGhpcyBzdXBlciBmaXh0dXJl
LgotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgInNh
bXBsZTMtaW5sLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJzYW1wbGUx
LmgiCi0KLS8vIEluIHRoaXMgc2FtcGxlLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGF0IGV2ZXJ5IHRl
c3QgZmluaXNoZXMgd2l0aGluCi0vLyB+NSBzZWNvbmRzLiAgSWYgYSB0ZXN0IHRha2VzIGxvbmdl
ciB0byBydW4sIHdlIGNvbnNpZGVyIGl0IGEKLS8vIGZhaWx1cmUuCi0vLwotLy8gV2UgcHV0IHRo
ZSBjb2RlIGZvciB0aW1pbmcgYSB0ZXN0IGluIGEgdGVzdCBmaXh0dXJlIGNhbGxlZAotLy8gIlF1
aWNrVGVzdCIuICBRdWlja1Rlc3QgaXMgaW50ZW5kZWQgdG8gYmUgdGhlIHN1cGVyIGZpeHR1cmUg
dGhhdAotLy8gb3RoZXIgZml4dHVyZXMgZGVyaXZlIGZyb20sIHRoZXJlZm9yZSB0aGVyZSBpcyBu
byB0ZXN0IGNhc2Ugd2l0aAotLy8gdGhlIG5hbWUgIlF1aWNrVGVzdCIuICBUaGlzIGlzIE9LLgot
Ly8KLS8vIExhdGVyLCB3ZSB3aWxsIGRlcml2ZSBtdWx0aXBsZSB0ZXN0IGZpeHR1cmVzIGZyb20g
UXVpY2tUZXN0LgotY2xhc3MgUXVpY2tUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHBy
b3RlY3RlZDoKLSAgLy8gUmVtZW1iZXIgdGhhdCBTZXRVcCgpIGlzIHJ1biBpbW1lZGlhdGVseSBi
ZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KLSAgLy8gVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gcmVjb3Jk
IHRoZSBzdGFydCB0aW1lLgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgc3RhcnRfdGlt
ZV8gPSB0aW1lKE5VTEwpOwotICB9Ci0KLSAgLy8gVGVhckRvd24oKSBpcyBpbnZva2VkIGltbWVk
aWF0ZWx5IGFmdGVyIGEgdGVzdCBmaW5pc2hlcy4gIEhlcmUgd2UKLSAgLy8gY2hlY2sgaWYgdGhl
IHRlc3Qgd2FzIHRvbyBzbG93LgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgLy8g
R2V0cyB0aGUgdGltZSB3aGVuIHRoZSB0ZXN0IGZpbmlzaGVzCi0gICAgY29uc3QgdGltZV90IGVu
ZF90aW1lID0gdGltZShOVUxMKTsKLQotICAgIC8vIEFzc2VydHMgdGhhdCB0aGUgdGVzdCB0b29r
IG5vIG1vcmUgdGhhbiB+NSBzZWNvbmRzLiAgRGlkIHlvdQotICAgIC8vIGtub3cgdGhhdCB5b3Ug
Y2FuIHVzZSBhc3NlcnRpb25zIGluIFNldFVwKCkgYW5kIFRlYXJEb3duKCkgYXMKLSAgICAvLyB3
ZWxsPwotICAgIEVYUEVDVF9UUlVFKGVuZF90aW1lIC0gc3RhcnRfdGltZV8gPD0gNSkgPDwgIlRo
ZSB0ZXN0IHRvb2sgdG9vIGxvbmcuIjsKLSAgfQotCi0gIC8vIFRoZSBVVEMgdGltZSAoaW4gc2Vj
b25kcykgd2hlbiB0aGUgdGVzdCBzdGFydHMKLSAgdGltZV90IHN0YXJ0X3RpbWVfOwotfTsKLQot
Ci0vLyBXZSBkZXJpdmUgYSBmaXh0dXJlIG5hbWVkIEludGVnZXJGdW5jdGlvblRlc3QgZnJvbSB0
aGUgUXVpY2tUZXN0Ci0vLyBmaXh0dXJlLiAgQWxsIHRlc3RzIHVzaW5nIHRoaXMgZml4dHVyZSB3
aWxsIGJlIGF1dG9tYXRpY2FsbHkKLS8vIHJlcXVpcmVkIHRvIGJlIHF1aWNrLgotY2xhc3MgSW50
ZWdlckZ1bmN0aW9uVGVzdCA6IHB1YmxpYyBRdWlja1Rlc3QgewotICAvLyBXZSBkb24ndCBuZWVk
IGFueSBtb3JlIGxvZ2ljIHRoYW4gYWxyZWFkeSBpbiB0aGUgUXVpY2tUZXN0IGZpeHR1cmUuCi0g
IC8vIFRoZXJlZm9yZSB0aGUgYm9keSBpcyBlbXB0eS4KLX07Ci0KLQotLy8gTm93IHdlIGNhbiB3
cml0ZSB0ZXN0cyBpbiB0aGUgSW50ZWdlckZ1bmN0aW9uVGVzdCB0ZXN0IGNhc2UuCi0KLS8vIFRl
c3RzIEZhY3RvcmlhbCgpCi1URVNUX0YoSW50ZWdlckZ1bmN0aW9uVGVzdCwgRmFjdG9yaWFsKSB7
Ci0gIC8vIFRlc3RzIGZhY3RvcmlhbCBvZiBuZWdhdGl2ZSBudW1iZXJzLgotICBFWFBFQ1RfRVEo
MSwgRmFjdG9yaWFsKC01KSk7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoLTEpKTsKLSAgRVhQ
RUNUX0dUKEZhY3RvcmlhbCgtMTApLCAwKTsKLQotICAvLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4K
LSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgwKSk7Ci0KLSAgLy8gVGVzdHMgZmFjdG9yaWFsIG9m
IHBvc2l0aXZlIG51bWJlcnMuCi0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkpOwotICBFWFBF
Q1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsKLSAgRVhQRUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7Ci0g
IEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9yaWFsKDgpKTsKLX0KLQotCi0vLyBUZXN0cyBJc1ByaW1l
KCkKLVRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBJc1ByaW1lKSB7Ci0gIC8vIFRlc3RzIG5l
Z2F0aXZlIGlucHV0LgotICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgtMSkpOwotICBFWFBFQ1RfRkFM
U0UoSXNQcmltZSgtMikpOwotICBFWFBFQ1RfRkFMU0UoSXNQcmltZShJTlRfTUlOKSk7Ci0KLSAg
Ly8gVGVzdHMgc29tZSB0cml2aWFsIGNhc2VzLgotICBFWFBFQ1RfRkFMU0UoSXNQcmltZSgwKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDEpKTsKLSAgRVhQRUNUX1RSVUUoSXNQcmltZSgyKSk7
Ci0gIEVYUEVDVF9UUlVFKElzUHJpbWUoMykpOwotCi0gIC8vIFRlc3RzIHBvc2l0aXZlIGlucHV0
LgotICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg0KSk7Ci0gIEVYUEVDVF9UUlVFKElzUHJpbWUoNSkp
OwotICBFWFBFQ1RfRkFMU0UoSXNQcmltZSg2KSk7Ci0gIEVYUEVDVF9UUlVFKElzUHJpbWUoMjMp
KTsKLX0KLQotCi0vLyBUaGUgbmV4dCB0ZXN0IGNhc2UgKG5hbWVkICJRdWV1ZVRlc3QiKSBhbHNv
IG5lZWRzIHRvIGJlIHF1aWNrLCBzbwotLy8gd2UgZGVyaXZlIGFub3RoZXIgZml4dHVyZSBmcm9t
IFF1aWNrVGVzdC4KLS8vCi0vLyBUaGUgUXVldWVUZXN0IHRlc3QgZml4dHVyZSBoYXMgc29tZSBs
b2dpYyBhbmQgc2hhcmVkIG9iamVjdHMgaW4KLS8vIGFkZGl0aW9uIHRvIHdoYXQncyBpbiBRdWlj
a1Rlc3QgYWxyZWFkeS4gIFdlIGRlZmluZSB0aGUgYWRkaXRpb25hbAotLy8gc3R1ZmYgaW5zaWRl
IHRoZSBib2R5IG9mIHRoZSB0ZXN0IGZpeHR1cmUsIGFzIHVzdWFsLgotY2xhc3MgUXVldWVUZXN0
IDogcHVibGljIFF1aWNrVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgLy8gRmlyc3QsIHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBzdXBlciBmaXh0dXJlIChR
dWlja1Rlc3QpLgotICAgIFF1aWNrVGVzdDo6U2V0VXAoKTsKLQotICAgIC8vIFNlY29uZCwgc29t
ZSBhZGRpdGlvbmFsIHNldHVwIGZvciB0aGlzIGZpeHR1cmUuCi0gICAgcTFfLkVucXVldWUoMSk7
Ci0gICAgcTJfLkVucXVldWUoMik7Ci0gICAgcTJfLkVucXVldWUoMyk7Ci0gIH0KLQotICAvLyBC
eSBkZWZhdWx0LCBUZWFyRG93bigpIGluaGVyaXRzIHRoZSBiZWhhdmlvciBvZgotICAvLyBRdWlj
a1Rlc3Q6OlRlYXJEb3duKCkuICBBcyB3ZSBoYXZlIG5vIGFkZGl0aW9uYWwgY2xlYW5pbmcgd29y
awotICAvLyBmb3IgUXVldWVUZXN0LCB3ZSBvbWl0IGl0IGhlcmUuCi0gIC8vCi0gIC8vIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgLy8gICBRdWlja1Rlc3Q6OlRlYXJEb3duKCk7Ci0gIC8v
IH0KLQotICBRdWV1ZTxpbnQ+IHEwXzsKLSAgUXVldWU8aW50PiBxMV87Ci0gIFF1ZXVlPGludD4g
cTJfOwotfTsKLQotCi0vLyBOb3csIGxldCdzIHdyaXRlIHRlc3RzIHVzaW5nIHRoZSBRdWV1ZVRl
c3QgZml4dHVyZS4KLQotLy8gVGVzdHMgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCi1URVNUX0Yo
UXVldWVUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgRVhQRUNUX0VRKDB1LCBxMF8uU2l6
ZSgpKTsKLX0KLQotLy8gVGVzdHMgRGVxdWV1ZSgpLgotVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1
ZSkgewotICBpbnQqIG4gPSBxMF8uRGVxdWV1ZSgpOwotICBFWFBFQ1RfVFJVRShuID09IE5VTEwp
OwotCi0gIG4gPSBxMV8uRGVxdWV1ZSgpOwotICBFWFBFQ1RfVFJVRShuICE9IE5VTEwpOwotICBF
WFBFQ1RfRVEoMSwgKm4pOwotICBFWFBFQ1RfRVEoMHUsIHExXy5TaXplKCkpOwotICBkZWxldGUg
bjsKLQotICBuID0gcTJfLkRlcXVldWUoKTsKLSAgRVhQRUNUX1RSVUUobiAhPSBOVUxMKTsKLSAg
RVhQRUNUX0VRKDIsICpuKTsKLSAgRVhQRUNUX0VRKDF1LCBxMl8uU2l6ZSgpKTsKLSAgZGVsZXRl
IG47Ci19Ci0KLS8vIElmIG5lY2Vzc2FyeSwgeW91IGNhbiBkZXJpdmUgZnVydGhlciB0ZXN0IGZp
eHR1cmVzIGZyb20gYSBkZXJpdmVkCi0vLyBmaXh0dXJlIGl0c2VsZi4gIEZvciBleGFtcGxlLCB5
b3UgY2FuIGRlcml2ZSBhbm90aGVyIGZpeHR1cmUgZnJvbQotLy8gUXVldWVUZXN0LiAgR29vZ2xl
IFRlc3QgaW1wb3NlcyBubyBsaW1pdCBvbiBob3cgZGVlcCB0aGUgaGllcmFyY2h5Ci0vLyBjYW4g
YmUuICBJbiBwcmFjdGljZSwgaG93ZXZlciwgeW91IHByb2JhYmx5IGRvbid0IHdhbnQgaXQgdG8g
YmUgdG9vCi0vLyBkZWVwIGFzIHRvIGJlIGNvbmZ1c2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2Ft
cGxlNl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYyMDM2YTUx
NjA4MGJhNzM5MDRhZTM2ZGJmMmFlNjA1NTNhNmYyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTZfdW5pdHRl
c3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgg
R29vZ2xlIEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24g
cHJvcGVydGllcyBvZiBtdWx0aXBsZQotLy8gaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGlu
dGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cykuCi0KLS8vIFRoZSBpbnRlcmZhY2UgYW5kIGl0
cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgotI2luY2x1ZGUgInByaW1lX3Rh
Ymxlcy5oIgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gRmlyc3QsIHdlIGRlZmlu
ZSBzb21lIGZhY3RvcnkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBpbnN0YW5jZXMgb2YKLS8vIHRo
ZSBpbXBsZW1lbnRhdGlvbnMuICBZb3UgbWF5IGJlIGFibGUgdG8gc2tpcCB0aGlzIHN0ZXAgaWYg
YWxsIHlvdXIKLS8vIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY29uc3RydWN0ZWQgdGhlIHNhbWUg
d2F5LgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVByaW1lVGFibGUqIENyZWF0ZVByaW1lVGFibGUo
KTsKLQotdGVtcGxhdGUgPD4KLVByaW1lVGFibGUqIENyZWF0ZVByaW1lVGFibGU8T25UaGVGbHlQ
cmltZVRhYmxlPigpIHsKLSAgcmV0dXJuIG5ldyBPblRoZUZseVByaW1lVGFibGU7Ci19Ci0KLXRl
bXBsYXRlIDw+Ci1QcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxlPFByZUNhbGN1bGF0ZWRQcmlt
ZVRhYmxlPigpIHsKLSAgcmV0dXJuIG5ldyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSgxMDAwMCk7
Ci19Ci0KLS8vIFRoZW4gd2UgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLgot
dGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFRoZSBjdG9yIGNhbGxzIHRoZSBmYWN0b3J5IGZ1
bmN0aW9uIHRvIGNyZWF0ZSBhIHByaW1lIHRhYmxlCi0gIC8vIGltcGxlbWVudGVkIGJ5IFQuCi0g
IFByaW1lVGFibGVUZXN0KCkgOiB0YWJsZV8oQ3JlYXRlUHJpbWVUYWJsZTxUPigpKSB7fQotCi0g
IHZpcnR1YWwgflByaW1lVGFibGVUZXN0KCkgeyBkZWxldGUgdGFibGVfOyB9Ci0KLSAgLy8gTm90
ZSB0aGF0IHdlIHRlc3QgYW4gaW1wbGVtZW50YXRpb24gdmlhIHRoZSBiYXNlIGludGVyZmFjZQot
ICAvLyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gY2xhc3MuICBUaGlzIGlz
IGltcG9ydGFudAotICAvLyBmb3Iga2VlcGluZyB0aGUgdGVzdHMgY2xvc2UgdG8gdGhlIHJlYWwg
d29ybGQgc2NlbmFyaW8sIHdoZXJlIHRoZQotICAvLyBpbXBsZW1lbnRhdGlvbiBpcyBpbnZva2Vk
IHZpYSB0aGUgYmFzZSBpbnRlcmZhY2UuICBJdCBhdm9pZHMKLSAgLy8gZ290LXlhcyB3aGVyZSB0
aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgaGFzIGEgbWV0aG9kIHRoYXQgc2hhZG93cwotICAvLyBh
IG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgYXJndW1l
bnQKLSAgLy8gdHlwZXMpIGluIHRoZSBiYXNlIGludGVyZmFjZSwgZm9yIGV4YW1wbGUuCi0gIFBy
aW1lVGFibGUqIGNvbnN0IHRhYmxlXzsKLX07Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAot
Ci11c2luZyB0ZXN0aW5nOjpUeXBlczsKLQotLy8gR29vZ2xlIFRlc3Qgb2ZmZXJzIHR3byB3YXlz
IGZvciByZXVzaW5nIHRlc3RzIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0vLyBUaGUgZmlyc3QgaXMg
Y2FsbGVkICJ0eXBlZCB0ZXN0cyIuICBZb3Ugc2hvdWxkIHVzZSBpdCBpZiB5b3UKLS8vIGFscmVh
ZHkga25vdyAqYWxsKiB0aGUgdHlwZXMgeW91IGFyZSBnb25uYSBleGVyY2lzZSB3aGVuIHlvdSB3
cml0ZQotLy8gdGhlIHRlc3RzLgotCi0vLyBUbyB3cml0ZSBhIHR5cGVkIHRlc3QgY2FzZSwgZmly
c3QgdXNlCi0vLwotLy8gICBUWVBFRF9URVNUX0NBU0UoVGVzdENhc2VOYW1lLCBUeXBlTGlzdCk7
Ci0vLwotLy8gdG8gZGVjbGFyZSBpdCBhbmQgc3BlY2lmeSB0aGUgdHlwZSBwYXJhbWV0ZXJzLiAg
QXMgd2l0aCBURVNUX0YsCi0vLyBUZXN0Q2FzZU5hbWUgbXVzdCBtYXRjaCB0aGUgdGVzdCBmaXh0
dXJlIG5hbWUuCi0KLS8vIFRoZSBsaXN0IG9mIHR5cGVzIHdlIHdhbnQgdG8gdGVzdC4KLXR5cGVk
ZWYgVHlwZXM8T25UaGVGbHlQcmltZVRhYmxlLCBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZT4gSW1w
bGVtZW50YXRpb25zOwotCi1UWVBFRF9URVNUX0NBU0UoUHJpbWVUYWJsZVRlc3QsIEltcGxlbWVu
dGF0aW9ucyk7Ci0KLS8vIFRoZW4gdXNlIFRZUEVEX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFt
ZSkgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdCwKLS8vIHNpbWlsYXIgdG8gVEVTVF9GLgotVFlQRURf
VEVTVChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7Ci0gIC8vIElu
c2lkZSB0aGUgdGVzdCBib2R5LCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB0eXBlIHBhcmFtZXRlciBi
eQotICAvLyBUeXBlUGFyYW0sIGFuZCByZWZlciB0byB0aGUgZml4dHVyZSBjbGFzcyBieSBUZXN0
Rml4dHVyZS4gIFdlCi0gIC8vIGRvbid0IG5lZWQgdGhlbSBpbiB0aGlzIGV4YW1wbGUuCi0KLSAg
Ly8gU2luY2Ugd2UgYXJlIGluIHRoZSB0ZW1wbGF0ZSB3b3JsZCwgQysrIHJlcXVpcmVzIGV4cGxp
Y2l0bHkKLSAgLy8gd3JpdGluZyAndGhpcy0+JyB3aGVuIHJlZmVycmluZyB0byBtZW1iZXJzIG9m
IHRoZSBmaXh0dXJlIGNsYXNzLgotICAvLyBUaGlzIGlzIHNvbWV0aGluZyB5b3UgaGF2ZSB0byBs
ZWFybiB0byBsaXZlIHdpdGguCi0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUo
LTUpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgwKSk7Ci0gIEVYUEVD
VF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMSkpOwotICBFWFBFQ1RfRkFMU0UodGhpcy0+
dGFibGVfLT5Jc1ByaW1lKDQpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQcmlt
ZSg2KSk7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTAwKSk7Ci19Ci0K
LVRZUEVEX1RFU1QoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNUcnVlRm9yUHJpbWVzKSB7Ci0gIEVY
UEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgyKSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMt
PnRhYmxlXy0+SXNQcmltZSgzKSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmlt
ZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSg3KSk7Ci0gIEVYUEVD
VF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgxMSkpOwotICBFWFBFQ1RfVFJVRSh0aGlzLT50
YWJsZV8tPklzUHJpbWUoMTMxKSk7Ci19Ci0KLVRZUEVEX1RFU1QoUHJpbWVUYWJsZVRlc3QsIENh
bkdldE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJp
bWUoMCkpOwotICBFWFBFQ1RfRVEoMywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMikpOwot
ICBFWFBFQ1RfRVEoNSwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwotICBFWFBFQ1Rf
RVEoNywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoNSkpOwotICBFWFBFQ1RfRVEoMTEsIHRo
aXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKLSAgRVhQRUNUX0VRKDEzMSwgdGhpcy0+dGFi
bGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8vIFRoYXQncyBpdCEgIEdvb2dsZSBUZXN0
IHdpbGwgcmVwZWF0IGVhY2ggVFlQRURfVEVTVCBmb3IgZWFjaCB0eXBlCi0vLyBpbiB0aGUgdHlw
ZSBsaXN0IHNwZWNpZmllZCBpbiBUWVBFRF9URVNUX0NBU0UuICBTaXQgYmFjayBhbmQgYmUKLS8v
IGhhcHB5IHRoYXQgeW91IGRvbid0IGhhdmUgdG8gZGVmaW5lIHRoZW0gbXVsdGlwbGUgdGltZXMu
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2lmIEdURVNUX0hBU19UWVBF
RF9URVNUX1AKLQotdXNpbmcgdGVzdGluZzo6VHlwZXM7Ci0KLS8vIFNvbWV0aW1lcywgaG93ZXZl
ciwgeW91IGRvbid0IHlldCBrbm93IGFsbCB0aGUgdHlwZXMgdGhhdCB5b3Ugd2FudAotLy8gdG8g
dGVzdCB3aGVuIHlvdSB3cml0ZSB0aGUgdGVzdHMuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB0
aGUKLS8vIGF1dGhvciBvZiBhbiBpbnRlcmZhY2UgYW5kIGV4cGVjdCBvdGhlciBwZW9wbGUgdG8g
aW1wbGVtZW50IGl0LCB5b3UKLS8vIG1pZ2h0IHdhbnQgdG8gd3JpdGUgYSBzZXQgb2YgdGVzdHMg
dG8gbWFrZSBzdXJlIGVhY2ggaW1wbGVtZW50YXRpb24KLS8vIGNvbmZvcm1zIHRvIHNvbWUgYmFz
aWMgcmVxdWlyZW1lbnRzLCBidXQgeW91IGRvbid0IGtub3cgd2hhdAotLy8gaW1wbGVtZW50YXRp
b25zIHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgZnV0dXJlLgotLy8KLS8vIEhvdyBjYW4geW91IHdy
aXRlIHRoZSB0ZXN0cyB3aXRob3V0IGNvbW1pdHRpbmcgdG8gdGhlIHR5cGUKLS8vIHBhcmFtZXRl
cnM/ICBUaGF0J3Mgd2hhdCAidHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIiBjYW4gZG8gZm9yIHlv
dS4KLS8vIEl0IGlzIGEgYml0IG1vcmUgaW52b2x2ZWQgdGhhbiB0eXBlZCB0ZXN0cywgYnV0IGlu
IHJldHVybiB5b3UgZ2V0IGEKLS8vIHRlc3QgcGF0dGVybiB0aGF0IGNhbiBiZSByZXVzZWQgaW4g
bWFueSBjb250ZXh0cywgd2hpY2ggaXMgYSBiaWcKLS8vIHdpbi4gIEhlcmUncyBob3cgeW91IGRv
IGl0OgotCi0vLyBGaXJzdCwgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLiAg
SGVyZSB3ZSBqdXN0IHJldXNlCi0vLyB0aGUgUHJpbWVUYWJsZVRlc3QgZml4dHVyZSBkZWZpbmVk
IGVhcmxpZXI6Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgUHJpbWVUYWJsZVRlc3QyIDog
cHVibGljIFByaW1lVGFibGVUZXN0PFQ+IHsKLX07Ci0KLS8vIFRoZW4sIGRlY2xhcmUgdGhlIHRl
c3QgY2FzZS4gIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdGVzdAotLy8gZml4dHVy
ZSwgYW5kIGFsc28gdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSAoYXMgdXN1YWwpLiAgVGhlIF9Q
Ci0vLyBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIuCi1UWVBFRF9U
RVNUX0NBU0VfUChQcmltZVRhYmxlVGVzdDIpOwotCi0vLyBOZXh0LCB1c2UgVFlQRURfVEVTVF9Q
KFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIHRvIGRlZmluZSBhIHRlc3QsCi0vLyBzaW1pbGFyIHRv
IHdoYXQgeW91IGRvIHdpdGggVEVTVF9GLgotVFlQRURfVEVTVF9QKFByaW1lVGFibGVUZXN0Miwg
UmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8t
PklzUHJpbWUoLTUpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgwKSk7
Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMSkpOwotICBFWFBFQ1RfRkFM
U0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDQpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxl
Xy0+SXNQcmltZSg2KSk7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTAw
KSk7Ci19Ci0KLVRZUEVEX1RFU1RfUChQcmltZVRhYmxlVGVzdDIsIFJldHVybnNUcnVlRm9yUHJp
bWVzKSB7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgyKSk7Ci0gIEVYUEVD
VF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgzKSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRh
YmxlXy0+SXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSg3
KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgxMSkpOwotICBFWFBFQ1Rf
VFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTMxKSk7Ci19Ci0KLVRZUEVEX1RFU1RfUChQcmlt
ZVRhYmxlVGVzdDIsIENhbkdldE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwgdGhpcy0+dGFi
bGVfLT5HZXROZXh0UHJpbWUoMCkpOwotICBFWFBFQ1RfRVEoMywgdGhpcy0+dGFibGVfLT5HZXRO
ZXh0UHJpbWUoMikpOwotICBFWFBFQ1RfRVEoNSwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUo
MykpOwotICBFWFBFQ1RfRVEoNywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoNSkpOwotICBF
WFBFQ1RfRVEoMTEsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKLSAgRVhQRUNUX0VR
KDEzMSwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8vIFR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cyBpbnZvbHZlIG9uZSBleHRyYSBzdGVwOiB5b3UgaGF2ZSB0bwotLy8g
ZW51bWVyYXRlIHRoZSB0ZXN0cyB5b3UgZGVmaW5lZDoKLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKAotICAgIFByaW1lVGFibGVUZXN0MiwgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUg
dGVzdCBjYXNlIG5hbWUuCi0gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cyBhcmUgdGhl
IHRlc3QgbmFtZXMuCi0gICAgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzLCBSZXR1cm5zVHJ1ZUZv
clByaW1lcywgQ2FuR2V0TmV4dFByaW1lKTsKLQotLy8gQXQgdGhpcyBwb2ludCB0aGUgdGVzdCBw
YXR0ZXJuIGlzIGRvbmUuICBIb3dldmVyLCB5b3UgZG9uJ3QgaGF2ZQotLy8gYW55IHJlYWwgdGVz
dCB5ZXQgYXMgeW91IGhhdmVuJ3Qgc2FpZCB3aGljaCB0eXBlcyB5b3Ugd2FudCB0byBydW4KLS8v
IHRoZSB0ZXN0cyB3aXRoLgotCi0vLyBUbyB0dXJuIHRoZSBhYnN0cmFjdCB0ZXN0IHBhdHRlcm4g
aW50byByZWFsIHRlc3RzLCB5b3UgaW5zdGFudGlhdGUKLS8vIGl0IHdpdGggYSBsaXN0IG9mIHR5
cGVzLiAgVXN1YWxseSB0aGUgdGVzdCBwYXR0ZXJuIHdpbGwgYmUgZGVmaW5lZAotLy8gaW4gYSAu
aCBmaWxlLCBhbmQgYW55b25lIGNhbiAjaW5jbHVkZSBhbmQgaW5zdGFudGlhdGUgaXQuICBZb3Ug
Y2FuCi0vLyBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIHBy
b2dyYW0uICBUbyB0ZWxsCi0vLyBkaWZmZXJlbnQgaW5zdGFuY2VzIGFwYXJ0LCB5b3UgZ2l2ZSBl
YWNoIG9mIHRoZW0gYSBuYW1lLCB3aGljaCB3aWxsCi0vLyBiZWNvbWUgcGFydCBvZiB0aGUgdGVz
dCBjYXNlIG5hbWUgYW5kIGNhbiBiZSB1c2VkIGluIHRlc3QgZmlsdGVycy4KLQotLy8gVGhlIGxp
c3Qgb2YgdHlwZXMgd2Ugd2FudCB0byB0ZXN0LiAgTm90ZSB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0
byBiZQotLy8gZGVmaW5lZCBhdCB0aGUgdGltZSB3ZSB3cml0ZSB0aGUgVFlQRURfVEVTVF9QKClz
LgotdHlwZWRlZiBUeXBlczxPblRoZUZseVByaW1lVGFibGUsIFByZUNhbGN1bGF0ZWRQcmltZVRh
YmxlPgotICAgIFByaW1lVGFibGVJbXBsZW1lbnRhdGlvbnM7Ci1JTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIEluc3RhbmNlIG5hbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVUZXN0MiwgICAgICAgICAg
ICAgLy8gVGVzdCBjYXNlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1l
VGFibGVJbXBsZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1RZUEVEX1RFU1RfUApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU3
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjY1MWEyMWQ2NDkyZjAyZWM2YzMwMGNmNmE3
ZWFkZDVkNDdmYzVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDEzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8v
IFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byB0ZXN0IGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG11bHRp
cGxlCi0vLyBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gaW50ZXJmYWNlIChha2EgaW50ZXJmYWNlIHRl
c3RzKSB1c2luZwotLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4gRWFjaCB0ZXN0IGluIHRo
ZSB0ZXN0IGNhc2UgaGFzCi0vLyBhIHBhcmFtZXRlciB0aGF0IGlzIGFuIGludGVyZmFjZSBwb2lu
dGVyIHRvIGFuIGltcGxlbWVudGF0aW9uCi0vLyB0ZXN0ZWQuCi0KLS8vIFRoZSBpbnRlcmZhY2Ug
YW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgotI2luY2x1ZGUgInBy
aW1lX3RhYmxlcy5oIgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCi0KLXVzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsKLXVzaW5nIDo6
dGVzdGluZzo6VmFsdWVzOwotCi0vLyBBcyBhIGdlbmVyYWwgcnVsZSwgdG8gcHJldmVudCBhIHRl
c3QgZnJvbSBhZmZlY3RpbmcgdGhlIHRlc3RzIHRoYXQgY29tZQotLy8gYWZ0ZXIgaXQsIHlvdSBz
aG91bGQgY3JlYXRlIGFuZCBkZXN0cm95IHRoZSB0ZXN0ZWQgb2JqZWN0cyBmb3IgZWFjaCB0ZXN0
Ci0vLyBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlbS4gIEluIHRoaXMgc2FtcGxlIHdlIHdpbGwgZGVm
aW5lIGEgc2ltcGxlIGZhY3RvcnkKLS8vIGZ1bmN0aW9uIGZvciBQcmltZVRhYmxlIG9iamVjdHMu
ICBXZSB3aWxsIGluc3RhbnRpYXRlIG9iamVjdHMgaW4gdGVzdCdzCi0vLyBTZXRVcCgpIG1ldGhv
ZCBhbmQgZGVsZXRlIHRoZW0gaW4gVGVhckRvd24oKSBtZXRob2QuCi10eXBlZGVmIFByaW1lVGFi
bGUqIENyZWF0ZVByaW1lVGFibGVGdW5jKCk7Ci0KLVByaW1lVGFibGUqIENyZWF0ZU9uVGhlRmx5
UHJpbWVUYWJsZSgpIHsKLSAgcmV0dXJuIG5ldyBPblRoZUZseVByaW1lVGFibGUoKTsKLX0KLQot
dGVtcGxhdGUgPHNpemVfdCBtYXhfcHJlY2FsY3VsYXRlZD4KLVByaW1lVGFibGUqIENyZWF0ZVBy
ZUNhbGN1bGF0ZWRQcmltZVRhYmxlKCkgewotICByZXR1cm4gbmV3IFByZUNhbGN1bGF0ZWRQcmlt
ZVRhYmxlKG1heF9wcmVjYWxjdWxhdGVkKTsKLX0KLQotLy8gSW5zaWRlIHRoZSB0ZXN0IGJvZHks
IGZpeHR1cmUgY29uc3RydWN0b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIHlvdQotLy8gY2Fu
IHJlZmVyIHRvIHRoZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLiAgSW4gdGhpcyBjYXNl
LCB0aGUgdGVzdAotLy8gcGFyYW1ldGVyIGlzIGEgZmFjdG9yeSBmdW5jdGlvbiB3aGljaCB3ZSBj
YWxsIGluIGZpeHR1cmUncyBTZXRVcCgpIHRvCi0vLyBjcmVhdGUgYW5kIHN0b3JlIGFuIGluc3Rh
bmNlIG9mIFByaW1lVGFibGUuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0
aFBhcmFtPENyZWF0ZVByaW1lVGFibGVGdW5jKj4gewotIHB1YmxpYzoKLSAgdmlydHVhbCB+UHJp
bWVUYWJsZVRlc3QoKSB7IGRlbGV0ZSB0YWJsZV87IH0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eyB0YWJsZV8gPSAoKkdldFBhcmFtKCkpKCk7IH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIGRlbGV0ZSB0YWJsZV87Ci0gICAgdGFibGVfID0gTlVMTDsKLSAgfQotCi0gcHJvdGVj
dGVkOgotICBQcmltZVRhYmxlKiB0YWJsZV87Ci19OwotCi1URVNUX1AoUHJpbWVUYWJsZVRlc3Qs
IFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1By
aW1lKC01KSk7Ci0gIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMCkpOwotICBFWFBFQ1Rf
RkFMU0UodGFibGVfLT5Jc1ByaW1lKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmlt
ZSg0KSk7Ci0gIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoNikpOwotICBFWFBFQ1RfRkFM
U0UodGFibGVfLT5Jc1ByaW1lKDEwMCkpOwotfQotCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJl
dHVybnNUcnVlRm9yUHJpbWVzKSB7Ci0gIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgyKSk7
Ci0gIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgzKSk7Ci0gIEVYUEVDVF9UUlVFKHRhYmxl
Xy0+SXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSg3KSk7Ci0gIEVY
UEVDVF9UUlVFKHRhYmxlXy0+SXNQcmltZSgxMSkpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklz
UHJpbWUoMTMxKSk7Ci19Ci0KLVRFU1RfUChQcmltZVRhYmxlVGVzdCwgQ2FuR2V0TmV4dFByaW1l
KSB7Ci0gIEVYUEVDVF9FUSgyLCB0YWJsZV8tPkdldE5leHRQcmltZSgwKSk7Ci0gIEVYUEVDVF9F
USgzLCB0YWJsZV8tPkdldE5leHRQcmltZSgyKSk7Ci0gIEVYUEVDVF9FUSg1LCB0YWJsZV8tPkdl
dE5leHRQcmltZSgzKSk7Ci0gIEVYUEVDVF9FUSg3LCB0YWJsZV8tPkdldE5leHRQcmltZSg1KSk7
Ci0gIEVYUEVDVF9FUSgxMSwgdGFibGVfLT5HZXROZXh0UHJpbWUoNykpOwotICBFWFBFQ1RfRVEo
MTMxLCB0YWJsZV8tPkdldE5leHRQcmltZSgxMjgpKTsKLX0KLQotLy8gSW4gb3JkZXIgdG8gcnVu
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHlvdSBuZWVkIHRvIGluc3RhbnRpYXRlIHRoZW0s
Ci0vLyBvciBiaW5kIHRoZW0gdG8gYSBsaXN0IG9mIHZhbHVlcyB3aGljaCB3aWxsIGJlIHVzZWQg
YXMgdGVzdCBwYXJhbWV0ZXJzLgotLy8gWW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGluIGEgZGlm
ZmVyZW50IHRyYW5zbGF0aW9uIG1vZHVsZSwgb3IgZXZlbgotLy8gaW5zdGFudGlhdGUgdGhlbSBz
ZXZlcmFsIHRpbWVzLgotLy8KLS8vIEhlcmUsIHdlIGluc3RhbnRpYXRlIG91ciB0ZXN0cyB3aXRo
IGEgbGlzdCBvZiB0d28gUHJpbWVUYWJsZSBvYmplY3QKLS8vIGZhY3RvcnkgZnVuY3Rpb25zOgot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoCi0gICAgT25UaGVGbHlBbmRQcmVDYWxjdWxhdGVkLAot
ICAgIFByaW1lVGFibGVUZXN0LAotICAgIFZhbHVlcygmQ3JlYXRlT25UaGVGbHlQcmltZVRhYmxl
LCAmQ3JlYXRlUHJlQ2FsY3VsYXRlZFByaW1lVGFibGU8MTAwMD4pKTsKLQotI2Vsc2UKLQotLy8g
R29vZ2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgd2l0
aCBzb21lCi0vLyBjb21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0
byBjb21waWxlIG91dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9tYWluIGxp
YnJhcnksIE1TVkMgbGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBhdCBhbGwg
YW5kIGNvbnNlcXVlbnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBwb2ludCBk
ZWZpbmVkIGluIHRoYXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkgcG9pbnQK
LS8vIG11c3QgYmUgZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9tYWluIGxp
bmtlZCBpbi4KLVRFU1QoRHVtbXlUZXN0LCBWYWx1ZVBhcmFtZXRlcml6ZWRUZXN0c0FyZU5vdFN1
cHBvcnRlZE9uVGhpc1BsYXRmb3JtKSB7fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDcyNzQzMzQwNjc0ODg4NTEyZmMzODYwOGMxMzhhNDBmOWFhMzJkODIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTczICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8gVGhpcyBzYW1wbGUg
c2hvd3MgaG93IHRvIHRlc3QgY29kZSByZWx5aW5nIG9uIHNvbWUgZ2xvYmFsIGZsYWcgdmFyaWFi
bGVzLgotLy8gQ29tYmluZSgpIGhlbHBzIHdpdGggZ2VuZXJhdGluZyBhbGwgcG9zc2libGUgY29t
YmluYXRpb25zIG9mIHN1Y2ggZmxhZ3MsCi0vLyBhbmQgZWFjaCB0ZXN0IGlzIGdpdmVuIG9uZSBj
b21iaW5hdGlvbiBhcyBhIHBhcmFtZXRlci4KLQotLy8gVXNlIGNsYXNzIGRlZmluaXRpb25zIHRv
IHRlc3QgZnJvbSB0aGlzIGhlYWRlci4KLSNpbmNsdWRlICJwcmltZV90YWJsZXMuaCIKLQotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpZiBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBTdXBw
b3NlIHdlIHdhbnQgdG8gaW50cm9kdWNlIGEgbmV3LCBpbXByb3ZlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBQcmltZVRhYmxlCi0vLyB3aGljaCBjb21iaW5lcyBzcGVlZCBvZiBQcmVjYWxjUHJpbWVUYWJs
ZSBhbmQgdmVyc2F0aWxpdHkgb2YKLS8vIE9uVGhlRmx5UHJpbWVUYWJsZSAoc2VlIHByaW1lX3Rh
Ymxlcy5oKS4gSW5zaWRlIGl0IGluc3RhbnRpYXRlcyBib3RoCi0vLyBQcmVjYWxjUHJpbWVUYWJs
ZSBhbmQgT25UaGVGbHlQcmltZVRhYmxlIGFuZCB1c2VzIHRoZSBvbmUgdGhhdCBpcyBtb3JlCi0v
LyBhcHByb3ByaWF0ZSB1bmRlciB0aGUgY2lyY3Vtc3RhbmNlcy4gQnV0IGluIGxvdyBtZW1vcnkg
Y29uZGl0aW9ucywgaXQgY2FuIGJlCi0vLyB0b2xkIHRvIGluc3RhbnRpYXRlIHdpdGhvdXQgUHJl
Y2FsY1ByaW1lVGFibGUgaW5zdGFuY2UgYXQgYWxsIGFuZCB1c2Ugb25seQotLy8gT25UaGVGbHlQ
cmltZVRhYmxlLgotY2xhc3MgSHlicmlkUHJpbWVUYWJsZSA6IHB1YmxpYyBQcmltZVRhYmxlIHsK
LSBwdWJsaWM6Ci0gIEh5YnJpZFByaW1lVGFibGUoYm9vbCBmb3JjZV9vbl90aGVfZmx5LCBpbnQg
bWF4X3ByZWNhbGN1bGF0ZWQpCi0gICAgICA6IG9uX3RoZV9mbHlfaW1wbF8obmV3IE9uVGhlRmx5
UHJpbWVUYWJsZSksCi0gICAgICAgIHByZWNhbGNfaW1wbF8oZm9yY2Vfb25fdGhlX2ZseSA/IE5V
TEwgOgotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUHJlQ2FsY3VsYXRlZFByaW1lVGFi
bGUobWF4X3ByZWNhbGN1bGF0ZWQpKSwKLSAgICAgICAgbWF4X3ByZWNhbGN1bGF0ZWRfKG1heF9w
cmVjYWxjdWxhdGVkKSB7fQotICB2aXJ0dWFsIH5IeWJyaWRQcmltZVRhYmxlKCkgewotICAgIGRl
bGV0ZSBvbl90aGVfZmx5X2ltcGxfOwotICAgIGRlbGV0ZSBwcmVjYWxjX2ltcGxfOwotICB9Ci0K
LSAgdmlydHVhbCBib29sIElzUHJpbWUoaW50IG4pIGNvbnN0IHsKLSAgICBpZiAocHJlY2FsY19p
bXBsXyAhPSBOVUxMICYmIG4gPCBtYXhfcHJlY2FsY3VsYXRlZF8pCi0gICAgICByZXR1cm4gcHJl
Y2FsY19pbXBsXy0+SXNQcmltZShuKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gb25fdGhlX2Zs
eV9pbXBsXy0+SXNQcmltZShuKTsKLSAgfQotCi0gIHZpcnR1YWwgaW50IEdldE5leHRQcmltZShp
bnQgcCkgY29uc3QgewotICAgIGludCBuZXh0X3ByaW1lID0gLTE7Ci0gICAgaWYgKHByZWNhbGNf
aW1wbF8gIT0gTlVMTCAmJiBwIDwgbWF4X3ByZWNhbGN1bGF0ZWRfKQotICAgICAgbmV4dF9wcmlt
ZSA9IHByZWNhbGNfaW1wbF8tPkdldE5leHRQcmltZShwKTsKLQotICAgIHJldHVybiBuZXh0X3By
aW1lICE9IC0xID8gbmV4dF9wcmltZSA6IG9uX3RoZV9mbHlfaW1wbF8tPkdldE5leHRQcmltZShw
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgT25UaGVGbHlQcmltZVRhYmxlKiBvbl90aGVfZmx5X2lt
cGxfOwotICBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSogcHJlY2FsY19pbXBsXzsKLSAgaW50IG1h
eF9wcmVjYWxjdWxhdGVkXzsKLX07Ci0KLXVzaW5nIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTsK
LXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzOwotdXNpbmcg
Ojp0ZXN0aW5nOjpDb21iaW5lOwotCi0vLyBUbyB0ZXN0IGFsbCBjb2RlIHBhdGhzIGZvciBIeWJy
aWRQcmltZVRhYmxlIHdlIG11c3QgdGVzdCBpdCB3aXRoIG51bWJlcnMKLS8vIGJvdGggd2l0aGlu
IGFuZCBvdXRzaWRlIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlJ3MgY2FwYWNpdHkgYW5kIGFsc28g
d2l0aAotLy8gUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUgZGlzYWJsZWQuIFdlIGRvIHRoaXMgYnkg
ZGVmaW5pbmcgZml4dHVyZSB3aGljaCB3aWxsCi0vLyBhY2NlcHQgZGlmZmVyZW50IGNvbWJpbmF0
aW9ucyBvZiBwYXJhbWV0ZXJzIGZvciBpbnN0YW50aWF0aW5nIGEKLS8vIEh5YnJpZFByaW1lVGFi
bGUgaW5zdGFuY2UuCi1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFt
PCA6OnRlc3Rpbmc6OnR1cGxlPGJvb2wsIGludD4gPiB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gVGhpcyBjYW4gYmUgd3JpdHRlbiBhcwotICAgIC8vCi0g
ICAgLy8gYm9vbCBmb3JjZV9vbl90aGVfZmx5OwotICAgIC8vIGludCBtYXhfcHJlY2FsY3VsYXRl
ZDsKLSAgICAvLyB0aWUoZm9yY2Vfb25fdGhlX2ZseSwgbWF4X3ByZWNhbGN1bGF0ZWQpID0gR2V0
UGFyYW0oKTsKLSAgICAvLwotICAgIC8vIG9uY2UgdGhlIEdvb2dsZSBDKysgU3R5bGUgR3VpZGUg
YWxsb3dzIHVzZSBvZiA6OnN0ZDo6dHIxOjp0aWUuCi0gICAgLy8KLSAgICBib29sIGZvcmNlX29u
X3RoZV9mbHkgPSA6OnRlc3Rpbmc6OmdldDwwPihHZXRQYXJhbSgpKTsKLSAgICBpbnQgbWF4X3By
ZWNhbGN1bGF0ZWQgPSA6OnRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgpKTsKLSAgICB0YWJsZV8g
PSBuZXcgSHlicmlkUHJpbWVUYWJsZShmb3JjZV9vbl90aGVfZmx5LCBtYXhfcHJlY2FsY3VsYXRl
ZCk7Ci0gIH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGRlbGV0ZSB0YWJsZV87
Ci0gICAgdGFibGVfID0gTlVMTDsKLSAgfQotICBIeWJyaWRQcmltZVRhYmxlKiB0YWJsZV87Ci19
OwotCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNGYWxzZUZvck5vblByaW1lcykgewot
ICAvLyBJbnNpZGUgdGhlIHRlc3QgYm9keSwgeW91IGNhbiByZWZlciB0byB0aGUgdGVzdCBwYXJh
bWV0ZXIgYnkgR2V0UGFyYW0oKS4KLSAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBwYXJhbWV0
ZXIgaXMgYSBQcmltZVRhYmxlIGludGVyZmFjZSBwb2ludGVyIHdoaWNoCi0gIC8vIHdlIGNhbiB1
c2UgZGlyZWN0bHkuCi0gIC8vIFBsZWFzZSBub3RlIHRoYXQgeW91IGNhbiBhbHNvIHNhdmUgaXQg
aW4gdGhlIGZpeHR1cmUncyBTZXRVcCgpIG1ldGhvZAotICAvLyBvciBjb25zdHJ1Y3RvciBhbmQg
dXNlIHNhdmVkIGNvcHkgaW4gdGhlIHRlc3RzLgotCi0gIEVYUEVDVF9GQUxTRSh0YWJsZV8tPklz
UHJpbWUoLTUpKTsKLSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgwKSk7Ci0gIEVYUEVD
VF9GQUxTRSh0YWJsZV8tPklzUHJpbWUoMSkpOwotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1By
aW1lKDQpKTsKLSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSg2KSk7Ci0gIEVYUEVDVF9G
QUxTRSh0YWJsZV8tPklzUHJpbWUoMTAwKSk7Ci19Ci0KLVRFU1RfUChQcmltZVRhYmxlVGVzdCwg
UmV0dXJuc1RydWVGb3JQcmltZXMpIHsKLSAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDIp
KTsKLSAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDMpKTsKLSAgRVhQRUNUX1RSVUUodGFi
bGVfLT5Jc1ByaW1lKDUpKTsKLSAgRVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDcpKTsKLSAg
RVhQRUNUX1RSVUUodGFibGVfLT5Jc1ByaW1lKDExKSk7Ci0gIEVYUEVDVF9UUlVFKHRhYmxlXy0+
SXNQcmltZSgxMzEpKTsKLX0KLQotVEVTVF9QKFByaW1lVGFibGVUZXN0LCBDYW5HZXROZXh0UHJp
bWUpIHsKLSAgRVhQRUNUX0VRKDIsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDApKTsKLSAgRVhQRUNU
X0VRKDMsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDIpKTsKLSAgRVhQRUNUX0VRKDUsIHRhYmxlXy0+
R2V0TmV4dFByaW1lKDMpKTsKLSAgRVhQRUNUX0VRKDcsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDUp
KTsKLSAgRVhQRUNUX0VRKDExLCB0YWJsZV8tPkdldE5leHRQcmltZSg3KSk7Ci0gIEVYUEVDVF9F
USgxMzEsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDEyOCkpOwotfQotCi0vLyBJbiBvcmRlciB0byBy
dW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cywgeW91IG5lZWQgdG8gaW5zdGFudGlhdGUgdGhl
bSwKLS8vIG9yIGJpbmQgdGhlbSB0byBhIGxpc3Qgb2YgdmFsdWVzIHdoaWNoIHdpbGwgYmUgdXNl
ZCBhcyB0ZXN0IHBhcmFtZXRlcnMuCi0vLyBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gaW4gYSBk
aWZmZXJlbnQgdHJhbnNsYXRpb24gbW9kdWxlLCBvciBldmVuCi0vLyBpbnN0YW50aWF0ZSB0aGVt
IHNldmVyYWwgdGltZXMuCi0vLwotLy8gSGVyZSwgd2UgaW5zdGFudGlhdGUgb3VyIHRlc3RzIHdp
dGggYSBsaXN0IG9mIHBhcmFtZXRlcnMuIFdlIG11c3QgY29tYmluZQotLy8gYWxsIHZhcmlhdGlv
bnMgb2YgdGhlIGJvb2xlYW4gZmxhZyBzdXBwcmVzc2luZyBQcmVjYWxjUHJpbWVUYWJsZSBhbmQg
c29tZQotLy8gbWVhbmluZ2Z1bCB2YWx1ZXMgZm9yIHRlc3RzLiBXZSBjaG9vc2UgYSBzbWFsbCB2
YWx1ZSAoMSksIGFuZCBhIHZhbHVlIHRoYXQKLS8vIHdpbGwgcHV0IHNvbWUgb2YgdGhlIHRlc3Rl
ZCBudW1iZXJzIGJleW9uZCB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKLS8vIFByZWNhbGNQcmltZVRh
YmxlIGluc3RhbmNlIGFuZCBzb21lIGluc2lkZSBpdCAoMTApLiBDb21iaW5lIHdpbGwgcHJvZHVj
ZSBhbGwKLS8vIHBvc3NpYmxlIGNvbWJpbmF0aW9ucy4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KE1lYW5pbmdmdWxUZXN0UGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgIFByaW1l
VGFibGVUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShCb29sKCksIFZhbHVl
cygxLCAxMCkpKTsKLQotI2Vsc2UKLQotLy8gR29vZ2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IENv
bWJpbmUoKSB3aXRoIHNvbWUgY29tcGlsZXJzLiBJZiB3ZQotLy8gdXNlIGNvbmRpdGlvbmFsIGNv
bXBpbGF0aW9uIHRvIGNvbXBpbGUgb3V0IGFsbCBjb2RlIHJlZmVycmluZyB0bwotLy8gdGhlIGd0
ZXN0X21haW4gbGlicmFyeSwgTVNWQyBsaW5rZXIgd2lsbCBub3QgbGluayB0aGF0IGxpYnJhcnkg
YXQKLS8vIGFsbCBhbmQgY29uc2VxdWVudGx5IGNvbXBsYWluIGFib3V0IG1pc3NpbmcgZW50cnkg
cG9pbnQgZGVmaW5lZCBpbgotLy8gdGhhdCBsaWJyYXJ5IChmYXRhbCBlcnJvciBMTksxNTYxOiBl
bnRyeSBwb2ludCBtdXN0IGJlCi0vLyBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0
ZXN0X21haW4gbGlua2VkIGluLgotVEVTVChEdW1teVRlc3QsIENvbWJpbmVJc05vdFN1cHBvcnRl
ZE9uVGhpc1BsYXRmb3JtKSB7fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIyZTIwNzliZjNiM2RlMmIwNDViOWE4MGQ3ZTdjN2JkYWI5Yzg5ZjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxl
cy9zYW1wbGU5X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFk
bEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotCi0vLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8g
dXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKLS8vIGFuIGFsdGVybmF0
aXZlIGNvbnNvbGUgb3V0cHV0IGFuZCBob3cgdG8gdXNlIHRoZSBVbml0VGVzdCByZWZsZWN0aW9u
IEFQSQotLy8gdG8gZW51bWVyYXRlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIGFuZCB0byBpbnNwZWN0
IHRoZWlyIHJlc3VsdHMuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKLQotdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExpc3RlbmVyOwotdXNp
bmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVz
aW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3Rl
bmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0OwotdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLQotbmFtZXNwYWNlIHsKLQot
Ly8gUHJvdmlkZXMgYWx0ZXJuYXRpdmUgb3V0cHV0IG1vZGUgd2hpY2ggcHJvZHVjZXMgbWluaW1h
bCBhbW91bnQgb2YKLS8vIGluZm9ybWF0aW9uIGFib3V0IHRlc3RzLgotY2xhc3MgVGVyc2VQcmlu
dGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotIHByaXZhdGU6Ci0gIC8vIENh
bGxlZCBiZWZvcmUgYW55IHRlc3QgYWN0aXZpdHkgc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQgT25U
ZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8pIHt9Ci0KLSAg
Ly8gQ2FsbGVkIGFmdGVyIGFsbCB0ZXN0IGFjdGl2aXRpZXMgaGF2ZSBlbmRlZC4KLSAgdmlydHVh
bCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewotICAg
IGZwcmludGYoc3Rkb3V0LCAiVEVTVCAlc1xuIiwgdW5pdF90ZXN0LlBhc3NlZCgpID8gIlBBU1NF
RCIgOiAiRkFJTEVEIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLQotICAvLyBDYWxsZWQg
YmVmb3JlIGEgdGVzdCBzdGFydHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBU
ZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgZnByaW50ZihzdGRvdXQsCi0gICAgICAgICAgICAi
KioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAotICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3Rf
Y2FzZV9uYW1lKCksCi0gICAgICAgICAgICB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgICBmZmx1c2go
c3Rkb3V0KTsKLSAgfQotCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBhc3NlcnRpb24gb3Ig
YSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQo
Y29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgICBmcHJpbnRmKHN0
ZG91dCwKLSAgICAgICAgICAgICIlcyBpbiAlczolZFxuJXNcbiIsCi0gICAgICAgICAgICB0ZXN0
X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKLSAgICAg
ICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCi0gICAgICAgICAgICB0ZXN0X3Bh
cnRfcmVzdWx0LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LnN1
bW1hcnkoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLQotICAvLyBDYWxsZWQgYWZ0ZXIg
YSB0ZXN0IGVuZHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRl
c3RfaW5mbykgewotICAgIGZwcmludGYoc3Rkb3V0LAotICAgICAgICAgICAgIioqKiBUZXN0ICVz
LiVzIGVuZGluZy5cbiIsCi0gICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwK
LSAgICAgICAgICAgIHRlc3RfaW5mby5uYW1lKCkpOwotICAgIGZmbHVzaChzdGRvdXQpOwotICB9
Ci19OyAgLy8gY2xhc3MgVGVyc2VQcmludGVyCi0KLVRFU1QoQ3VzdG9tT3V0cHV0VGVzdCwgUHJp
bnRzTWVzc2FnZSkgewotICBwcmludGYoIlByaW50aW5nIHNvbWV0aGluZyBmcm9tIHRoZSB0ZXN0
IGJvZHkuLi5cbiIpOwotfQotCi1URVNUKEN1c3RvbU91dHB1dFRlc3QsIFN1Y2NlZWRzKSB7Ci0g
IFNVQ0NFRUQoKSA8PCAiU1VDQ0VFRCgpIGhhcyBiZWVuIGludm9rZWQgZnJvbSBoZXJlIjsKLX0K
LQotVEVTVChDdXN0b21PdXRwdXRUZXN0LCBGYWlscykgewotICBFWFBFQ1RfRVEoMSwgMikKLSAg
ICAgIDw8ICJUaGlzIHRlc3QgZmFpbHMgaW4gb3JkZXIgdG8gZGVtb25zdHJhdGUgYWx0ZXJuYXRp
dmUgZmFpbHVyZSBtZXNzYWdlcyI7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwot
Ci0gIGJvb2wgdGVyc2Vfb3V0cHV0ID0gZmFsc2U7Ci0gIGlmIChhcmdjID4gMSAmJiBzdHJjbXAo
YXJndlsxXSwgIi0tdGVyc2Vfb3V0cHV0IikgPT0gMCApCi0gICAgdGVyc2Vfb3V0cHV0ID0gdHJ1
ZTsKLSAgZWxzZQotICAgIHByaW50ZigiJXNcbiIsICJSdW4gdGhpcyBwcm9ncmFtIHdpdGggLS10
ZXJzZV9vdXRwdXQgdG8gY2hhbmdlIHRoZSB3YXkgIgotICAgICAgICAgICAiaXQgcHJpbnRzIGl0
cyBvdXRwdXQuIik7Ci0KLSAgVW5pdFRlc3QmIHVuaXRfdGVzdCA9ICpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKTsKLQotICAvLyBJZiB3ZSBhcmUgZ2l2ZW4gdGhlIC0tdGVyc2Vfb3V0cHV0IGNvbW1h
bmQgbGluZSBmbGFnLCBzdXBwcmVzc2VzIHRoZQotICAvLyBzdGFuZGFyZCBvdXRwdXQgYW5kIGF0
dGFjaGVzIG93biByZXN1bHQgcHJpbnRlci4KLSAgaWYgKHRlcnNlX291dHB1dCkgewotICAgIFRl
c3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gdW5pdF90ZXN0Lmxpc3RlbmVycygpOwotCi0g
ICAgLy8gUmVtb3ZlcyB0aGUgZGVmYXVsdCBjb25zb2xlIG91dHB1dCBsaXN0ZW5lciBmcm9tIHRo
ZSBsaXN0IHNvIGl0IHdpbGwKLSAgICAvLyBub3QgcmVjZWl2ZSBldmVudHMgZnJvbSBHb29nbGUg
VGVzdCBhbmQgd29uJ3QgcHJpbnQgYW55IG91dHB1dC4gU2luY2UKLSAgICAvLyB0aGlzIG9wZXJh
dGlvbiB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBsaXN0ZW5lciB0byB0aGUgY2FsbGVyIHdl
Ci0gICAgLy8gaGF2ZSB0byBkZWxldGUgaXQgYXMgd2VsbC4KLSAgICBkZWxldGUgbGlzdGVuZXJz
LlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7Ci0KLSAgICAvLyBB
ZGRzIHRoZSBjdXN0b20gb3V0cHV0IGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBJdCB3aWxsIG5vdyBy
ZWNlaXZlCi0gICAgLy8gZXZlbnRzIGZyb20gR29vZ2xlIFRlc3QgYW5kIHByaW50IHRoZSBhbHRl
cm5hdGl2ZSBvdXRwdXQuIFdlIGRvbid0Ci0gICAgLy8gaGF2ZSB0byB3b3JyeSBhYm91dCBkZWxl
dGluZyBpdCBzaW5jZSBHb29nbGUgVGVzdCBhc3N1bWVzIG93bmVyc2hpcAotICAgIC8vIG92ZXIg
aXQgYWZ0ZXIgYWRkaW5nIGl0IHRvIHRoZSBsaXN0LgotICAgIGxpc3RlbmVycy5BcHBlbmQobmV3
IFRlcnNlUHJpbnRlcik7Ci0gIH0KLSAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7Ci0K
LSAgLy8gVGhpcyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBVbml0VGVzdCByZWZsZWN0aW9u
IEFQSSB0byBpbnNwZWN0IHRlc3QKLSAgLy8gcmVzdWx0cy4gSGVyZSB3ZSBkaXNjb3VudCBmYWls
dXJlcyBmcm9tIHRoZSB0ZXN0cyB3ZSBleHBlY3RlZCB0byBmYWlsLgotICBpbnQgdW5leHBlY3Rl
ZGx5X2ZhaWxlZF90ZXN0cyA9IDA7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRv
dGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpIHsKLSAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9j
YXNlID0gKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKTsKLSAgICBmb3IgKGludCBqID0gMDsgaiA8
IHRlc3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraikgewotICAgICAgY29uc3QgVGVzdElu
Zm8mIHRlc3RfaW5mbyA9ICp0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaik7Ci0gICAgICAvLyBDb3Vu
dHMgZmFpbGVkIHRlc3RzIHRoYXQgd2VyZSBub3QgbWVhbnQgdG8gZmFpbCAodGhvc2Ugd2l0aG91
dAotICAgICAgLy8gJ0ZhaWxzJyBpbiB0aGUgbmFtZSkuCi0gICAgICBpZiAodGVzdF9pbmZvLnJl
c3VsdCgpLT5GYWlsZWQoKSAmJgotICAgICAgICAgIHN0cmNtcCh0ZXN0X2luZm8ubmFtZSgpLCAi
RmFpbHMiKSAhPSAwKSB7Ci0gICAgICAgIHVuZXhwZWN0ZWRseV9mYWlsZWRfdGVzdHMrKzsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBUZXN0IHRoYXQgd2VyZSBtZWFudCB0byBmYWlsIHNo
b3VsZCBub3QgYWZmZWN0IHRoZSB0ZXN0IHByb2dyYW0gb3V0Y29tZS4KLSAgaWYgKHVuZXhwZWN0
ZWRseV9mYWlsZWRfdGVzdHMgPT0gMCkKLSAgICByZXRfdmFsID0gMDsKLQotICByZXR1cm4gcmV0
X3ZhbDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvY29tbW9uLnB5IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3Qvc2NyaXB0cy9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNjMDM0N2E3NWJkZmYzMTg4MDk3NzQ1MDE1YTU4MDM3NjRhZDc0MWMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9jb21t
b24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJT
aGFyZWQgdXRpbGl0aWVzIGZvciB3cml0aW5nIHNjcmlwdHMgZm9yIEdvb2dsZSBUZXN0L01vY2su
IiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLQot
aW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotCi0jIE1hdGNoZXMgdGhlIGxpbmUgZnJvbSAnc3ZuIGlu
Zm8gLicgb3V0cHV0IHRoYXQgZGVzY3JpYmVzIHdoYXQgU1ZOCi0jIHBhdGggdGhlIGN1cnJlbnQg
bG9jYWwgZGlyZWN0b3J5IGNvcnJlc3BvbmRzIHRvLiAgRm9yIGV4YW1wbGUsIGluCi0jIGEgZ29v
Z2xldGVzdCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsvdGVzdCBkaXJlY3RvcnksIHRoZSBvdXRwdXQg
d2lsbCBiZToKLSMKLSMgVVJMOiBodHRwczovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3Zu
L3RydW5rL3Rlc3QKLV9TVk5fSU5GT19VUkxfUkUgPSByZS5jb21waWxlKHInXlVSTDogaHR0cHM6
Ly8oXHcrKVwuZ29vZ2xlY29kZVwuY29tL3N2biguKiknKQotCi0KLWRlZiBHZXRDb21tYW5kT3V0
cHV0KGNvbW1hbmQpOgotICAiIiJSdW5zIHRoZSBzaGVsbCBjb21tYW5kIGFuZCByZXR1cm5zIGl0
cyBzdGRvdXQgYXMgYSBsaXN0IG9mIGxpbmVzLiIiIgotCi0gIGYgPSBvcy5wb3Blbihjb21tYW5k
LCAncicpCi0gIGxpbmVzID0gW2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygp
XQotICBmLmNsb3NlKCkKLSAgcmV0dXJuIGxpbmVzCi0KLQotZGVmIEdldFN2bkluZm8oKToKLSAg
IiIiUmV0dXJucyB0aGUgcHJvamVjdCBuYW1lIGFuZCB0aGUgY3VycmVudCBTVk4gd29ya3NwYWNl
J3Mgcm9vdCBwYXRoLiIiIgotCi0gIGZvciBsaW5lIGluIEdldENvbW1hbmRPdXRwdXQoJ3N2biBp
bmZvIC4nKToKLSAgICBtID0gX1NWTl9JTkZPX1VSTF9SRS5tYXRjaChsaW5lKQotICAgIGlmIG06
Ci0gICAgICBwcm9qZWN0ID0gbS5ncm91cCgxKSAgIyBnb29nbGV0ZXN0IG9yIGdvb2dsZW1vY2sK
LSAgICAgIHJlbF9wYXRoID0gbS5ncm91cCgyKQotICAgICAgcm9vdCA9IG9zLnBhdGgucmVhbHBh
dGgocmVsX3BhdGguY291bnQoJy8nKSAqICcuLi8nKQotICAgICAgcmV0dXJuIHByb2plY3QsIHJv
b3QKLQotICByZXR1cm4gTm9uZSwgTm9uZQotCi0KLWRlZiBHZXRTdm5UcnVuaygpOgotICAiIiJS
ZXR1cm5zIHRoZSBjdXJyZW50IFNWTiB3b3Jrc3BhY2UncyB0cnVuayByb290IHBhdGguIiIiCi0K
LSAgXywgcm9vdCA9IEdldFN2bkluZm8oKQotICByZXR1cm4gcm9vdCArICcvdHJ1bmsnIGlmIHJv
b3QgZWxzZSBOb25lCi0KLQotZGVmIElzSW5HVGVzdFN2bigpOgotICBwcm9qZWN0LCBfID0gR2V0
U3ZuSW5mbygpCi0gIHJldHVybiBwcm9qZWN0ID09ICdnb29nbGV0ZXN0JwotCi0KLWRlZiBJc0lu
R01vY2tTdm4oKToKLSAgcHJvamVjdCwgXyA9IEdldFN2bkluZm8oKQotICByZXR1cm4gcHJvamVj
dCA9PSAnZ29vZ2xlbW9jaycKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9n
dGVzdF9maWxlcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2YzZTlmMzZkNjFiM2I3Y2E3MmZlNjkzZTU1
MDgxMDZiN2NiZjc2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwyNTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiZnVzZV9ndGVzdF9maWxlcy5weSB2MC4yLjAKLUZ1c2VzIEdvb2dsZSBUZXN0
IHNvdXJjZSBjb2RlIGludG8gYSAuaCBmaWxlIGFuZCBhIC5jYyBmaWxlLgotCi1TWU5PUFNJUwot
ICAgICAgIGZ1c2VfZ3Rlc3RfZmlsZXMucHkgW0dURVNUX1JPT1RfRElSXSBPVVRQVVRfRElSCi0K
LSAgICAgICBTY2FucyBHVEVTVF9ST09UX0RJUiBmb3IgR29vZ2xlIFRlc3Qgc291cmNlIGNvZGUs
IGFuZCBnZW5lcmF0ZXMKLSAgICAgICB0d28gZmlsZXM6IE9VVFBVVF9ESVIvZ3Rlc3QvZ3Rlc3Qu
aCBhbmQgT1VUUFVUX0RJUi9ndGVzdC9ndGVzdC1hbGwuY2MuCi0gICAgICAgVGhlbiB5b3UgY2Fu
IGJ1aWxkIHlvdXIgdGVzdHMgYnkgYWRkaW5nIE9VVFBVVF9ESVIgdG8gdGhlIGluY2x1ZGUKLSAg
ICAgICBzZWFyY2ggcGF0aCBhbmQgbGlua2luZyB3aXRoIE9VVFBVVF9ESVIvZ3Rlc3QvZ3Rlc3Qt
YWxsLmNjLiAgVGhlc2UKLSAgICAgICB0d28gZmlsZXMgY29udGFpbiBldmVyeXRoaW5nIHlvdSBu
ZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEhlbmNlCi0gICAgICAgeW91IGNhbiAiaW5zdGFsbCIg
R29vZ2xlIFRlc3QgYnkgY29weWluZyB0aGVtIHRvIHdoZXJldmVyIHlvdSB3YW50LgotCi0gICAg
ICAgR1RFU1RfUk9PVF9ESVIgY2FuIGJlIG9taXR0ZWQgYW5kIGRlZmF1bHRzIHRvIHRoZSBwYXJl
bnQKLSAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoaXMgc2NyaXB0
LgotCi1FWEFNUExFUwotICAgICAgIC4vZnVzZV9ndGVzdF9maWxlcy5weSBmdXNlZF9ndGVzdAot
ICAgICAgIC4vZnVzZV9ndGVzdF9maWxlcy5weSBwYXRoL3RvL3VucGFja2VkL2d0ZXN0IGZ1c2Vk
X2d0ZXN0Ci0KLVRoaXMgdG9vbCBpcyBleHBlcmltZW50YWwuICBJbiBwYXJ0aWN1bGFyLCBpdCBh
c3N1bWVzIHRoYXQgdGhlcmUgaXMgbm8KLWNvbmRpdGlvbmFsIGluY2x1c2lvbiBvZiBHb29nbGUg
VGVzdCBoZWFkZXJzLiAgUGxlYXNlIHJlcG9ydCBhbnkKLXByb2JsZW1zIHRvIGdvb2dsZXRlc3Rm
cmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4gIFlvdSBjYW4gcmVhZAotaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlkZSBmb3IKLW1v
cmUgaW5mb3JtYXRpb24uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLXRyeToKLSAgZnJvbSBzZXRzIGlt
cG9ydCBTZXQgYXMgc2V0ICAjIEZvciBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkKLWV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgcGFzcwotaW1wb3J0IHN5cwotCi0jIFdlIGFzc3VtZSB0aGF0IHRoaXMg
ZmlsZSBpcyBpbiB0aGUgc2NyaXB0cy8gZGlyZWN0b3J5IGluIHRoZSBHb29nbGUKLSMgVGVzdCBy
b290IGRpcmVjdG9yeS4KLURFRkFVTFRfR1RFU1RfUk9PVF9ESVIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJykKLQotIyBSZWdleCBmb3IgbWF0Y2hpbmcgJyNp
bmNsdWRlICJndGVzdC8uLi4iJy4KLUlOQ0xVREVfR1RFU1RfRklMRV9SRUdFWCA9IHJlLmNvbXBp
bGUocideXHMqI1xzKmluY2x1ZGVccyoiKGd0ZXN0Ly4rKSInKQotCi0jIFJlZ2V4IGZvciBtYXRj
aGluZyAnI2luY2x1ZGUgInNyYy8uLi4iJy4KLUlOQ0xVREVfU1JDX0ZJTEVfUkVHRVggPSByZS5j
b21waWxlKHInXlxzKiNccyppbmNsdWRlXHMqIihzcmMvLispIicpCi0KLSMgV2hlcmUgdG8gZmlu
ZCB0aGUgc291cmNlIHNlZWQgZmlsZXMuCi1HVEVTVF9IX1NFRUQgPSAnaW5jbHVkZS9ndGVzdC9n
dGVzdC5oJwotR1RFU1RfU1BJX0hfU0VFRCA9ICdpbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oJwot
R1RFU1RfQUxMX0NDX1NFRUQgPSAnc3JjL2d0ZXN0LWFsbC5jYycKLQotIyBXaGVyZSB0byBwdXQg
dGhlIGdlbmVyYXRlZCBmaWxlcy4KLUdURVNUX0hfT1VUUFVUID0gJ2d0ZXN0L2d0ZXN0LmgnCi1H
VEVTVF9BTExfQ0NfT1VUUFVUID0gJ2d0ZXN0L2d0ZXN0LWFsbC5jYycKLQotCi1kZWYgVmVyaWZ5
RmlsZUV4aXN0cyhkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpOgotICAiIiJWZXJpZmllcyB0aGF0
IHRoZSBnaXZlbiBmaWxlIGV4aXN0czsgYWJvcnRzIG9uIGZhaWx1cmUuCi0KLSAgcmVsYXRpdmVf
cGF0aCBpcyB0aGUgZmlsZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBkaXJlY3RvcnkuCi0g
ICIiIgotCi0gIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBy
ZWxhdGl2ZV9wYXRoKSk6Ci0gICAgcHJpbnQoJ0VSUk9SOiBDYW5ub3QgZmluZCAlcyBpbiBkaXJl
Y3RvcnkgJXMuJyAlIChyZWxhdGl2ZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5KSkKLSAgICBwcmludCgnUGxlYXNl
IGVpdGhlciBzcGVjaWZ5IGEgdmFsaWQgcHJvamVjdCByb290IGRpcmVjdG9yeSAnCi0gICAgICAg
ICAgJ29yIG9taXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZS4nKQotICAgIHN5cy5leGl0KDEpCi0K
LQotZGVmIFZhbGlkYXRlR1Rlc3RSb290RGlyKGd0ZXN0X3Jvb3QpOgotICAiIiJNYWtlcyBzdXJl
IGd0ZXN0X3Jvb3QgcG9pbnRzIHRvIGEgdmFsaWQgZ3Rlc3Qgcm9vdCBkaXJlY3RvcnkuCi0KLSAg
VGhlIGZ1bmN0aW9uIGFib3J0cyB0aGUgcHJvZ3JhbSBvbiBmYWlsdXJlLgotICAiIiIKLQotICBW
ZXJpZnlGaWxlRXhpc3RzKGd0ZXN0X3Jvb3QsIEdURVNUX0hfU0VFRCkKLSAgVmVyaWZ5RmlsZUV4
aXN0cyhndGVzdF9yb290LCBHVEVTVF9BTExfQ0NfU0VFRCkKLQotCi1kZWYgVmVyaWZ5T3V0cHV0
RmlsZShvdXRwdXRfZGlyLCByZWxhdGl2ZV9wYXRoKToKLSAgIiIiVmVyaWZpZXMgdGhhdCB0aGUg
Z2l2ZW4gb3V0cHV0IGZpbGUgcGF0aCBpcyB2YWxpZC4KLQotICByZWxhdGl2ZV9wYXRoIGlzIHJl
bGF0aXZlIHRvIHRoZSBvdXRwdXRfZGlyIGRpcmVjdG9yeS4KLSAgIiIiCi0KLSAgIyBNYWtlcyBz
dXJlIHRoZSBvdXRwdXQgZmlsZSBlaXRoZXIgZG9lc24ndCBleGlzdCBvciBjYW4gYmUgb3Zlcndy
aXR0ZW4uCi0gIG91dHB1dF9maWxlID0gb3MucGF0aC5qb2luKG91dHB1dF9kaXIsIHJlbGF0aXZl
X3BhdGgpCi0gIGlmIG9zLnBhdGguZXhpc3RzKG91dHB1dF9maWxlKToKLSAgICAjIFRPRE8od2Fu
QGdvb2dsZS5jb20pOiBUaGUgZm9sbG93aW5nIHVzZXItaW50ZXJhY3Rpb24gZG9lc24ndAotICAg
ICMgd29yayB3aXRoIGF1dG9tYXRlZCBwcm9jZXNzZXMuICBXZSBzaG91bGQgcHJvdmlkZSBhIHdh
eSBmb3IgdGhlCi0gICAgIyBNYWtlZmlsZSB0byBmb3JjZSBvdmVyd3JpdGluZyB0aGUgZmlsZXMu
Ci0gICAgcHJpbnQoJyVzIGFscmVhZHkgZXhpc3RzIGluIGRpcmVjdG9yeSAlcyAtIG92ZXJ3cml0
ZSBpdD8gKHkvTikgJyAlCi0gICAgICAgICAgKHJlbGF0aXZlX3BhdGgsIG91dHB1dF9kaXIpKQot
ICAgIGFuc3dlciA9IHN5cy5zdGRpbi5yZWFkbGluZSgpLnN0cmlwKCkKLSAgICBpZiBhbnN3ZXIg
bm90IGluIFsneScsICdZJ106Ci0gICAgICBwcmludCgnQUJPUlRFRC4nKQotICAgICAgc3lzLmV4
aXQoMSkKLQotICAjIE1ha2VzIHN1cmUgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSBvdXRwdXQg
ZmlsZSBleGlzdHM7IGNyZWF0ZXMKLSAgIyBpdCBhbmQgYWxsIGl0cyBhbmNlc3RvcnMgaWYgbmVj
ZXNzYXJ5LgotICBwYXJlbnRfZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKG91dHB1dF9maWxl
KQotICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXJlbnRfZGlyZWN0b3J5KToKLSAgICBvcy5tYWtl
ZGlycyhwYXJlbnRfZGlyZWN0b3J5KQotCi0KLWRlZiBWYWxpZGF0ZU91dHB1dERpcihvdXRwdXRf
ZGlyKToKLSAgIiIiTWFrZXMgc3VyZSBvdXRwdXRfZGlyIHBvaW50cyB0byBhIHZhbGlkIG91dHB1
dCBkaXJlY3RvcnkuCi0KLSAgVGhlIGZ1bmN0aW9uIGFib3J0cyB0aGUgcHJvZ3JhbSBvbiBmYWls
dXJlLgotICAiIiIKLQotICBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIEdURVNUX0hfT1VU
UFVUKQotICBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIEdURVNUX0FMTF9DQ19PVVRQVVQp
Ci0KLQotZGVmIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2Rpcik6Ci0gICIiIlNjYW5z
IGZvbGRlciBndGVzdF9yb290IHRvIGdlbmVyYXRlIGd0ZXN0L2d0ZXN0LmggaW4gb3V0cHV0X2Rp
ci4iIiIKLQotICBvdXRwdXRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdU
RVNUX0hfT1VUUFVUKSwgJ3cnKQotICBwcm9jZXNzZWRfZmlsZXMgPSBzZXQoKSAgIyBIb2xkcyBh
bGwgZ3Rlc3QgaGVhZGVycyB3ZSd2ZSBwcm9jZXNzZWQuCi0KLSAgZGVmIFByb2Nlc3NGaWxlKGd0
ZXN0X2hlYWRlcl9wYXRoKToKLSAgICAiIiJQcm9jZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IGhlYWRl
ciBmaWxlLiIiIgotCi0gICAgIyBXZSBkb24ndCBwcm9jZXNzIHRoZSBzYW1lIGhlYWRlciB0d2lj
ZS4KLSAgICBpZiBndGVzdF9oZWFkZXJfcGF0aCBpbiBwcm9jZXNzZWRfZmlsZXM6Ci0gICAgICBy
ZXR1cm4KLQotICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3RfaGVhZGVyX3BhdGgpCi0KLSAg
ICAjIFJlYWRzIGVhY2ggbGluZSBpbiB0aGUgZ2l2ZW4gZ3Rlc3QgaGVhZGVyLgotICAgIGZvciBs
aW5lIGluIG9wZW4ob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X2hlYWRlcl9wYXRoKSwg
J3InKToKLSAgICAgIG0gPSBJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKLSAg
ICAgIGlmIG06Ci0gICAgICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInIC0gbGV0J3Mg
cHJvY2VzcyBpdCByZWN1cnNpdmVseS4KLSAgICAgICAgUHJvY2Vzc0ZpbGUoJ2luY2x1ZGUvJyAr
IG0uZ3JvdXAoMSkpCi0gICAgICBlbHNlOgotICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5IHRo
ZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCi0gICAgICAgIG91dHB1dF9maWxl
LndyaXRlKGxpbmUpCi0KLSAgUHJvY2Vzc0ZpbGUoR1RFU1RfSF9TRUVEKQotICBvdXRwdXRfZmls
ZS5jbG9zZSgpCi0KLQotZGVmIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91dHB1
dF9maWxlKToKLSAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3Qv
Z3Rlc3QtYWxsLmNjIGluIG91dHB1dF9maWxlLiIiIgotCi0gIHByb2Nlc3NlZF9maWxlcyA9IHNl
dCgpCi0KLSAgZGVmIFByb2Nlc3NGaWxlKGd0ZXN0X3NvdXJjZV9maWxlKToKLSAgICAiIiJQcm9j
ZXNzZXMgdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLiIiIgotCi0gICAgIyBXZSBkb24ndCBw
cm9jZXNzIHRoZSBzYW1lICNpbmNsdWRlZCBmaWxlIHR3aWNlLgotICAgIGlmIGd0ZXN0X3NvdXJj
ZV9maWxlIGluIHByb2Nlc3NlZF9maWxlczoKLSAgICAgIHJldHVybgotCi0gICAgcHJvY2Vzc2Vk
X2ZpbGVzLmFkZChndGVzdF9zb3VyY2VfZmlsZSkKLQotICAgICMgUmVhZHMgZWFjaCBsaW5lIGlu
IHRoZSBnaXZlbiBndGVzdCBzb3VyY2UgZmlsZS4KLSAgICBmb3IgbGluZSBpbiBvcGVuKG9zLnBh
dGguam9pbihndGVzdF9yb290LCBndGVzdF9zb3VyY2VfZmlsZSksICdyJyk6Ci0gICAgICBtID0g
SU5DTFVERV9HVEVTVF9GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBpZiBtOgotICAgICAg
ICBpZiAnaW5jbHVkZS8nICsgbS5ncm91cCgxKSA9PSBHVEVTVF9TUElfSF9TRUVEOgotICAgICAg
ICAgICMgSXQncyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIicuICBUaGlzIGZpbGUgaXMg
bm90Ci0gICAgICAgICAgIyAjaW5jbHVkZWQgYnkgImd0ZXN0L2d0ZXN0LmgiLCBzbyB3ZSBuZWVk
IHRvIHByb2Nlc3MgaXQuCi0gICAgICAgICAgUHJvY2Vzc0ZpbGUoR1RFU1RfU1BJX0hfU0VFRCkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC9mb28uaCIn
IHdoZXJlIGZvbyBpcyBub3QgZ3Rlc3Qtc3BpLgotICAgICAgICAgICMgV2UgdHJlYXQgaXQgYXMg
JyNpbmNsdWRlICJndGVzdC9ndGVzdC5oIicsIGFzIGFsbCBvdGhlcgotICAgICAgICAgICMgZ3Rl
c3QgaGVhZGVycyBhcmUgYmVpbmcgZnVzZWQgaW50byBndGVzdC5oIGFuZCBjYW5ub3QgYmUKLSAg
ICAgICAgICAjICNpbmNsdWRlZCBkaXJlY3RseS4KLQotICAgICAgICAgICMgVGhlcmUgaXMgbm8g
bmVlZCB0byAjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIgbW9yZSB0aGFuIG9uY2UuCi0gICAgICAg
ICAgaWYgbm90IEdURVNUX0hfU0VFRCBpbiBwcm9jZXNzZWRfZmlsZXM6Ci0gICAgICAgICAgICBw
cm9jZXNzZWRfZmlsZXMuYWRkKEdURVNUX0hfU0VFRCkKLSAgICAgICAgICAgIG91dHB1dF9maWxl
LndyaXRlKCcjaW5jbHVkZSAiJXMiXG4nICUgKEdURVNUX0hfT1VUUFVULCkpCi0gICAgICBlbHNl
OgotICAgICAgICBtID0gSU5DTFVERV9TUkNfRklMRV9SRUdFWC5tYXRjaChsaW5lKQotICAgICAg
ICBpZiBtOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUgInNyYy9mb28iJyAtIGxldCdzIHBy
b2Nlc3MgaXQgcmVjdXJzaXZlbHkuCi0gICAgICAgICAgUHJvY2Vzc0ZpbGUobS5ncm91cCgxKSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZShsaW5lKQotCi0gIFBy
b2Nlc3NGaWxlKEdURVNUX0FMTF9DQ19TRUVEKQotCi0KLWRlZiBGdXNlR1Rlc3RBbGxDYyhndGVz
dF9yb290LCBvdXRwdXRfZGlyKToKLSAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2Vu
ZXJhdGUgZ3Rlc3QvZ3Rlc3QtYWxsLmNjIGluIG91dHB1dF9kaXIuIiIiCi0KLSAgb3V0cHV0X2Zp
bGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBHVEVTVF9BTExfQ0NfT1VUUFVUKSwg
J3cnKQotICBGdXNlR1Rlc3RBbGxDY1RvRmlsZShndGVzdF9yb290LCBvdXRwdXRfZmlsZSkKLSAg
b3V0cHV0X2ZpbGUuY2xvc2UoKQotCi0KLWRlZiBGdXNlR1Rlc3QoZ3Rlc3Rfcm9vdCwgb3V0cHV0
X2Rpcik6Ci0gICIiIkZ1c2VzIGd0ZXN0LmggYW5kIGd0ZXN0LWFsbC5jYy4iIiIKLQotICBWYWxp
ZGF0ZUdUZXN0Um9vdERpcihndGVzdF9yb290KQotICBWYWxpZGF0ZU91dHB1dERpcihvdXRwdXRf
ZGlyKQotCi0gIEZ1c2VHVGVzdEgoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2RpcikKLSAgRnVzZUdUZXN0
QWxsQ2MoZ3Rlc3Rfcm9vdCwgb3V0cHV0X2RpcikKLQotCi1kZWYgbWFpbigpOgotICBhcmdjID0g
bGVuKHN5cy5hcmd2KQotICBpZiBhcmdjID09IDI6Ci0gICAgIyBmdXNlX2d0ZXN0X2ZpbGVzLnB5
IE9VVFBVVF9ESVIKLSAgICBGdXNlR1Rlc3QoREVGQVVMVF9HVEVTVF9ST09UX0RJUiwgc3lzLmFy
Z3ZbMV0pCi0gIGVsaWYgYXJnYyA9PSAzOgotICAgICMgZnVzZV9ndGVzdF9maWxlcy5weSBHVEVT
VF9ST09UX0RJUiBPVVRQVVRfRElSCi0gICAgRnVzZUdUZXN0KHN5cy5hcmd2WzFdLCBzeXMuYXJn
dlsyXSkKLSAgZWxzZToKLSAgICBwcmludChfX2RvY19fKQotICAgIHN5cy5leGl0KDEpCi0KLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRz
L2dlbl9ndGVzdF9wcmVkX2ltcGwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNl
N2FiMDQyZWFjYmExMzhhMmIyYTE3ODFhNzBiNzU0YTdhYzI1YzkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9nZW5fZ3Rl
c3RfcHJlZF9pbXBsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMwICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImdlbl9ndGVzdF9wcmVkX2lt
cGwucHkgdjAuMQotCi1HZW5lcmF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdvb2dsZSBUZXN0
IHByZWRpY2F0ZSBhc3NlcnRpb25zIGFuZAotYWNjb21wYW55aW5nIHRlc3RzLgotCi1Vc2FnZToK
LQotICBnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IE1BWF9BUklUWQotCi13aGVyZSBNQVhfQVJJVFkg
aXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLgotCi1UaGUgY29tbWFuZCBnZW5lcmF0ZXMgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHVwLXRvIE1BWF9BUklUWS1hcnkKLXByZWRpY2F0ZSBhc3NlcnRpb25zLCBh
bmQgd3JpdGVzIGl0IHRvIGZpbGUgZ3Rlc3RfcHJlZF9pbXBsLmggaW4gdGhlCi1kaXJlY3Rvcnkg
d2hlcmUgdGhlIHNjcmlwdCBpcy4gIEl0IGFsc28gZ2VuZXJhdGVzIHRoZSBhY2NvbXBhbnlpbmcK
LXVuaXQgdGVzdCBpbiBmaWxlIGd0ZXN0X3ByZWRfaW1wbF91bml0dGVzdC5jYy4KLSIiIgotCi1f
X2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MK
LWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLSMgV2hlcmUgdGhpcyBzY3JpcHQgaXMuCi1TQ1JJ
UFRfRElSID0gb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKQotCi0jIFdoZXJlIHRvIHN0b3Jl
IHRoZSBnZW5lcmF0ZWQgaGVhZGVyLgotSEVBREVSID0gb3MucGF0aC5qb2luKFNDUklQVF9ESVIs
ICcuLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oJykKLQotIyBXaGVyZSB0byBzdG9y
ZSB0aGUgZ2VuZXJhdGVkIHVuaXQgdGVzdC4KLVVOSVRfVEVTVCA9IG9zLnBhdGguam9pbihTQ1JJ
UFRfRElSLCAnLi4vdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MnKQotCi0KLWRlZiBI
ZWFkZXJQcmVhbWJsZShuKToKLSAgIiIiUmV0dXJucyB0aGUgcHJlYW1ibGUgZm9yIHRoZSBoZWFk
ZXIgZmlsZS4KLQotICBBcmdzOgotICAgIG46ICB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgcHJl
ZGljYXRlIG1hY3JvcyB0byBiZSBnZW5lcmF0ZWQuCi0gICIiIgotCi0gICMgQSBtYXAgdGhhdCBk
ZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0aGUgcHJlYW1ibGUgdGVtcGxhdGUuCi0gIERFRlMg
PSB7Ci0gICAgJ3RvZGF5JyA6IHRpbWUuc3RyZnRpbWUoJyVtLyVkLyVZJyksCi0gICAgJ3llYXIn
IDogdGltZS5zdHJmdGltZSgnJVknKSwKLSAgICAnY29tbWFuZCcgOiAnJXMgJXMnICUgKG9zLnBh
dGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pLCBuKSwKLSAgICAnbicgOiBuCi0gICAgfQotCi0gIHJl
dHVybiAoCi0iIiIvLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LS8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAlKHRvZGF5KXMgYnkg
Y29tbWFuZAotLy8gJyUoY29tbWFuZClzJy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCi0vLwotLy8g
SW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9z
LgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCi0jZGVm
aW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hfCi0KLS8vIE1ha2VzIHN1
cmUgdGhpcyBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVzdC5oLgotI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jIGVycm9yIERvIG5vdCBpbmNsdWRlIGd0ZXN0
X3ByZWRfaW1wbC5oIGRpcmVjdGx5LiAgSW5jbHVkZSBndGVzdC5oIGluc3RlYWQuCi0jZW5kaWYg
IC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLQotLy8gVGhpcyBoZWFkZXIgaW1wbGVt
ZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRpb24KLS8vIG1hY3JvczoK
LS8vCi0vLyAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQsIHYxKQotLy8gICBBU1NF
UlRfUFJFRF9GT1JNQVQyKHByZWRfZm9ybWF0LCB2MSwgdjIpCi0vLyAgIC4uLgotLy8KLS8vIHdo
ZXJlIHByZWRfZm9ybWF0IGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IHRha2VzIG4gKGlu
IHRoZQotLy8gY2FzZSBvZiBBU1NFUlRfUFJFRF9GT1JNQVRuKSB2YWx1ZXMgYW5kIHRoZWlyIHNv
dXJjZSBleHByZXNzaW9uCi0vLyB0ZXh0LCBhbmQgcmV0dXJucyBhIHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdC4gIFNlZSB0aGUgZGVmaW5pdGlvbgotLy8gb2YgQVNTRVJUX0VRIGluIGd0ZXN0Lmgg
Zm9yIGFuIGV4YW1wbGUuCi0vLwotLy8gSWYgeW91IGRvbid0IGNhcmUgYWJvdXQgZm9ybWF0dGlu
ZywgeW91IGNhbiB1c2UgdGhlIG1vcmUKLS8vIHJlc3RyaWN0aXZlIHZlcnNpb246Ci0vLwotLy8g
ICBBU1NFUlRfUFJFRDEocHJlZCwgdjEpCi0vLyAgIEFTU0VSVF9QUkVEMihwcmVkLCB2MSwgdjIp
Ci0vLyAgIC4uLgotLy8KLS8vIHdoZXJlIHByZWQgaXMgYW4gbi1hcnkgZnVuY3Rpb24gb3IgZnVu
Y3RvciB0aGF0IHJldHVybnMgYm9vbCwKLS8vIGFuZCB0aGUgdmFsdWVzIHYxLCB2MiwgLi4uLCBt
dXN0IHN1cHBvcnQgdGhlIDw8IG9wZXJhdG9yIGZvcgotLy8gc3RyZWFtaW5nIHRvIHN0ZDo6b3N0
cmVhbS4KLS8vCi0vLyBXZSBhbHNvIGRlZmluZSB0aGUgRVhQRUNUXyogdmFyaWF0aW9ucy4KLS8v
Ci0vLyBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBwcmVkaWNhdGVzIHdob3NlIGFyaXR5IGlzIGF0
IG1vc3QgJShuKXMuCi0vLyBQbGVhc2UgZW1haWwgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0IGZvciBoaWdoZXIgYXJpdGllcy4KLQot
Ly8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3RhdGVtZW50IHRvIHdoaWNoIGFsbCBvZiB0
aGUgYXNzZXJ0aW9ucwotLy8gaW4gdGhpcyBmaWxlIHJlZHVjZS4gIERvbid0IHVzZSB0aGlzIGlu
IHlvdXIgY29kZS4KLQotI2RlZmluZSBHVEVTVF9BU1NFUlRfKGV4cHJlc3Npb24sIG9uX2ZhaWx1
cmUpIFxcCi0gIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFxcCi0gIGlmIChjb25zdCA6
OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBndGVzdF9hciA9IChleHByZXNzaW9uKSkgXFwKLSAg
ICA7IFxcCi0gIGVsc2UgXFwKLSAgICBvbl9mYWlsdXJlKGd0ZXN0X2FyLmZhaWx1cmVfbWVzc2Fn
ZSgpKQotIiIiICUgREVGUykKLQotCi1kZWYgQXJpdHkobik6Ci0gICIiIlJldHVybnMgdGhlIEVu
Z2xpc2ggbmFtZSBvZiB0aGUgZ2l2ZW4gYXJpdHkuIiIiCi0KLSAgaWYgbiA8IDA6Ci0gICAgcmV0
dXJuIE5vbmUKLSAgZWxpZiBuIDw9IDM6Ci0gICAgcmV0dXJuIFsnbnVsbGFyeScsICd1bmFyeScs
ICdiaW5hcnknLCAndGVybmFyeSddW25dCi0gIGVsc2U6Ci0gICAgcmV0dXJuICclcy1hcnknICUg
bgotCi0KLWRlZiBUaXRsZSh3b3JkKToKLSAgIiIiUmV0dXJucyB0aGUgZ2l2ZW4gd29yZCBpbiB0
aXRsZSBjYXNlLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgotICB0aGlzIGFuZCBzdHJpbmcncyB0
aXRsZSgpIG1ldGhvZCBpcyB0aGF0IFRpdGxlKCc0LWFyeScpIGlzICc0LWFyeScKLSAgd2hpbGUg
JzQtYXJ5Jy50aXRsZSgpIGlzICc0LUFyeScuIiIiCi0KLSAgcmV0dXJuIHdvcmRbMF0udXBwZXIo
KSArIHdvcmRbMTpdCi0KLQotZGVmIE9uZVRvKG4pOgotICAiIiJSZXR1cm5zIHRoZSBsaXN0IFsx
LCAyLCAzLCAuLi4sIG5dLiIiIgotCi0gIHJldHVybiByYW5nZSgxLCBuICsgMSkKLQotCi1kZWYg
SXRlcihuLCBmb3JtYXQsIHNlcD0nJyk6Ci0gICIiIkdpdmVuIGEgcG9zaXRpdmUgaW50ZWdlciBu
LCBhIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyAwIG9yCi0gIG1vcmUgJyVzJyBmb3JtYXQg
c3BlY3MsIGFuZCBvcHRpb25hbGx5IGEgc2VwYXJhdG9yIHN0cmluZywgcmV0dXJucwotICB0aGUg
am9pbiBvZiBuIHN0cmluZ3MsIGVhY2ggZm9ybWF0dGVkIHdpdGggdGhlIGZvcm1hdCBzdHJpbmcg
b24gYW4KLSAgaXRlcmF0b3IgcmFuZ2VkIGZyb20gMSB0byBuLgotCi0gIEV4YW1wbGU6Ci0KLSAg
SXRlcigzLCAndiVzJywgc2VwPScsICcpIHJldHVybnMgJ3YxLCB2MiwgdjMnLgotICAiIiIKLQot
ICAjIEhvdyBtYW55ICclcycgc3BlY3MgYXJlIGluIGZvcm1hdD8KLSAgc3BlY19jb3VudCA9IGxl
bihmb3JtYXQuc3BsaXQoJyVzJykpIC0gMQotICByZXR1cm4gc2VwLmpvaW4oW2Zvcm1hdCAlIChz
cGVjX2NvdW50ICogKGksKSkgZm9yIGkgaW4gT25lVG8obildKQotCi0KLWRlZiBJbXBsZW1lbnRh
dGlvbkZvckFyaXR5KG4pOgotICAiIiJSZXR1cm5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBuLWFy
eSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQotICAjIEEgbWFwIHRoZSBkZWZpbmVzIHRoZSB2
YWx1ZXMgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gdGVtcGxhdGUuCi0gIERFRlMgPSB7Ci0g
ICAgJ24nIDogc3RyKG4pLAotICAgICd2cycgOiBJdGVyKG4sICd2JXMnLCBzZXA9JywgJyksCi0g
ICAgJ3Z0cycgOiBJdGVyKG4sICcjdiVzJywgc2VwPScsICcpLAotICAgICdhcml0eScgOiBBcml0
eShuKSwKLSAgICAnQXJpdHknIDogVGl0bGUoQXJpdHkobikpCi0gICAgfQotCi0gIGltcGwgPSAi
IiIKLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9
X1BSRUQlKG4pcy4gIERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3VyIGNvZGUuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgUHJlZCIiIiAlIERFRlMKLQotICBpbXBsICs9IEl0ZXIobiwgIiIiLAotICAgICAg
ICAgIHR5cGVuYW1lIFQlcyIiIikKLQotICBpbXBsICs9ICIiIj4KLUFzc2VydGlvblJlc3VsdCBB
c3NlcnRQcmVkJShuKXNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0IiIiICUgREVGUwotCi0g
IGltcGwgKz0gSXRlcihuLCAiIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZSVzIiIiKQotCi0gIGltcGwgKz0gIiIiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByZWQgcHJlZCIiIgotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCVzJiB2JXMiIiIpCi0KLSAg
aW1wbCArPSAiIiIpIHsKLSAgaWYgKHByZWQoJSh2cylzKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKLQotIiIiICUgREVGUwotCi0gIGltcGwgKz0gJyAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiJwotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8ICIsICInKQotCi0gIGlt
cGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIicKLQotICBpbXBsICs9IEl0
ZXIobiwgIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxcbiIgPDwgZSVzIDw8
ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQotCi0gIGltcGwgKz0gIiIiOwotfQotCi0vLyBJ
bnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1B
VCUobilzLgotLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9Q
UkVEX0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9mYWlsdXJlKVxcCi0gIEdU
RVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSwgXFwKLSAgICAgICAgICAg
ICAgICBvbl9mYWlsdXJlKQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtF
WFBFQ1R8QVNTRVJUfV9QUkVEJShuKXMuICBEb24ndCB1c2UKLS8vIHRoaXMgaW4geW91ciBjb2Rl
LgotI2RlZmluZSBHVEVTVF9QUkVEJShuKXNfKHByZWQsICUodnMpcywgb25fZmFpbHVyZSlcXAot
ICBHVEVTVF9BU1NFUlRfKDo6dGVzdGluZzo6QXNzZXJ0UHJlZCUobilzSGVscGVyKCNwcmVkIiIi
ICUgREVGUwotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIsIFxcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjdiVzIiIiKQotCi0gIGltcGwgKz0gIiIiLCBcXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZCIiIgotCi0g
IGltcGwgKz0gSXRlcihuLCAiIiIsIFxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2JXMiIiIpCi0KLSAgaW1wbCArPSAiIiIpLCBvbl9mYWlsdXJlKQotCi0v
LyAlKEFyaXR5KXMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jZGVmaW5lIEVYUEVDVF9Q
UkVEX0ZPUk1BVCUobilzKHByZWRfZm9ybWF0LCAlKHZzKXMpIFxcCi0gIEdURVNUX1BSRURfRk9S
TUFUJShuKXNfKHByZWRfZm9ybWF0LCAlKHZzKXMsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQot
I2RlZmluZSBFWFBFQ1RfUFJFRCUobilzKHByZWQsICUodnMpcykgXFwKLSAgR1RFU1RfUFJFRCUo
bilzXyhwcmVkLCAlKHZzKXMsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NF
UlRfUFJFRF9GT1JNQVQlKG4pcyhwcmVkX2Zvcm1hdCwgJSh2cylzKSBcXAotICBHVEVTVF9QUkVE
X0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBHVEVTVF9GQVRBTF9GQUlMVVJFXykK
LSNkZWZpbmUgQVNTRVJUX1BSRUQlKG4pcyhwcmVkLCAlKHZzKXMpIFxcCi0gIEdURVNUX1BSRUQl
KG4pc18ocHJlZCwgJSh2cylzLCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLQotIiIiICUgREVGUwot
Ci0gIHJldHVybiBpbXBsCi0KLQotZGVmIEhlYWRlclBvc3RhbWJsZSgpOgotICAiIiJSZXR1cm5z
IHRoZSBwb3N0YW1ibGUgZm9yIHRoZSBoZWFkZXIgZmlsZS4iIiIKLQotICByZXR1cm4gIiIiCi0K
LSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KLSIiIgot
Ci0KLWRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6Ci0gICIiIkdpdmVuIGEgZmlsZSBw
YXRoIGFuZCBhIGNvbnRlbnQgc3RyaW5nLCBvdmVyd3JpdGVzIGl0IHdpdGggdGhlCi0gIGdpdmVu
IGNvbnRlbnQuIiIiCi0KLSAgcHJpbnQgJ1VwZGF0aW5nIGZpbGUgJXMgLiAuIC4nICUgcGF0aAot
Ci0gIGYgPSBmaWxlKHBhdGgsICd3KycpCi0gIHByaW50ID4+ZiwgY29udGVudCwKLSAgZi5jbG9z
ZSgpCi0KLSAgcHJpbnQgJ0ZpbGUgJXMgaGFzIGJlZW4gdXBkYXRlZC4nICUgcGF0aAotCi0KLWRl
ZiBHZW5lcmF0ZUhlYWRlcihuKToKLSAgIiIiR2l2ZW4gdGhlIG1heGltdW0gYXJpdHkgbiwgdXBk
YXRlcyB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRoZSBwcmVkaWNhdGUgYXNz
ZXJ0aW9ucy4iIiIKLQotICBHZW5lcmF0ZUZpbGUoSEVBREVSLAotICAgICAgICAgICAgICAgSGVh
ZGVyUHJlYW1ibGUobikKLSAgICAgICAgICAgICAgICsgJycuam9pbihbSW1wbGVtZW50YXRpb25G
b3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCi0gICAgICAgICAgICAgICArIEhlYWRlclBv
c3RhbWJsZSgpKQotCi0KLWRlZiBVbml0VGVzdFByZWFtYmxlKCk6Ci0gICIiIlJldHVybnMgdGhl
IHByZWFtYmxlIGZvciB0aGUgdW5pdCB0ZXN0IGZpbGUuIiIiCi0KLSAgIyBBIG1hcCB0aGF0IGRl
ZmluZXMgdGhlIHZhbHVlcyB1c2VkIGluIHRoZSBwcmVhbWJsZSB0ZW1wbGF0ZS4KLSAgREVGUyA9
IHsKLSAgICAndG9kYXknIDogdGltZS5zdHJmdGltZSgnJW0vJWQvJVknKSwKLSAgICAneWVhcicg
OiB0aW1lLnN0cmZ0aW1lKCclWScpLAotICAgICdjb21tYW5kJyA6ICclcyAlcycgJSAob3MucGF0
aC5iYXNlbmFtZShzeXMuYXJndlswXSksIHN5cy5hcmd2WzFdKSwKLSAgICB9Ci0KLSAgcmV0dXJu
ICgKLSIiIi8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8g
VGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uICUodG9kYXkpcyBieSBjb21t
YW5kCi0vLyAnJShjb21tYW5kKXMnLiAgRE8gTk9UIEVESVQgQlkgSEFORCEKLQotLy8gUmVncmVz
c2lvbiB0ZXN0IGZvciBndGVzdF9wcmVkX2ltcGwuaAotLy8KLS8vIFRoaXMgZmlsZSBpcyBnZW5l
cmF0ZWQgYnkgYSBzY3JpcHQgYW5kIHF1aXRlIGxvbmcuICBJZiB5b3UgaW50ZW5kIHRvCi0vLyBs
ZWFybiBob3cgR29vZ2xlIFRlc3Qgd29ya3MgYnkgcmVhZGluZyBpdHMgdW5pdCB0ZXN0cywgcmVh
ZAotLy8gZ3Rlc3RfdW5pdHRlc3QuY2MgaW5zdGVhZC4KLS8vCi0vLyBUaGlzIGlzIGludGVuZGVk
IGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgR29vZ2xlIFRlc3QgcHJlZGljYXRlCi0vLyBh
c3NlcnRpb25zLiAgV2UgY29tcGlsZSBpdCBhcyBwYXJ0IG9mIHRoZSBndGVzdF91bml0dGVzdCB0
YXJnZXQKLS8vIG9ubHkgdG8ga2VlcCB0aGUgaW1wbGVtZW50YXRpb24gdGlkeSBhbmQgY29tcGFj
dCwgYXMgaXQgaXMgcXVpdGUKLS8vIGludm9sdmVkIHRvIHNldCB1cCB0aGUgc3RhZ2UgZm9yIHRl
c3RpbmcgR29vZ2xlIFRlc3QgdXNpbmcgR29vZ2xlCi0vLyBUZXN0IGl0c2VsZi4KLS8vCi0vLyBD
dXJyZW50bHksIGd0ZXN0X3VuaXR0ZXN0IHRha2VzIH4xMSBzZWNvbmRzIHRvIHJ1biBpbiB0aGUg
dGVzdGluZwotLy8gZGFlbW9uLiAgSW4gdGhlIGZ1dHVyZSwgaWYgaXQgZ3Jvd3MgdG9vIGxhcmdl
IGFuZCBuZWVkcyBtdWNoIG1vcmUKLS8vIHRpbWUgdG8gZmluaXNoLCB3ZSBzaG91bGQgY29uc2lk
ZXIgc2VwYXJhdGluZyB0aGlzIGZpbGUgaW50byBhCi0vLyBzdGFuZC1hbG9uZSByZWdyZXNzaW9u
IHRlc3QuCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLS8vIEEgdXNlci1kZWZpbmVkIGRhdGEg
dHlwZS4KLXN0cnVjdCBCb29sIHsKLSAgZXhwbGljaXQgQm9vbChpbnQgdmFsKSA6IHZhbHVlKHZh
bCAhPSAwKSB7fQotCi0gIGJvb2wgb3BlcmF0b3I+KGludCBuKSBjb25zdCB7IHJldHVybiB2YWx1
ZSA+IEJvb2wobikudmFsdWU7IH0KLQotICBCb29sIG9wZXJhdG9yKyhjb25zdCBCb29sJiByaHMp
IGNvbnN0IHsgcmV0dXJuIEJvb2wodmFsdWUgKyByaHMudmFsdWUpOyB9Ci0KLSAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJvb2wmIHJocykgY29uc3QgeyByZXR1cm4gdmFsdWUgPT0gcmhzLnZhbHVl
OyB9Ci0KLSAgYm9vbCB2YWx1ZTsKLX07Ci0KLS8vIEVuYWJsZXMgQm9vbCB0byBiZSB1c2VkIGlu
IGFzc2VydGlvbnMuCi1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
Y29uc3QgQm9vbCYgeCkgewotICByZXR1cm4gb3MgPDwgKHgudmFsdWUgPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLX0KLQotIiIiICUgREVGUykKLQotCi1kZWYgVGVzdHNGb3JBcml0eShuKToKLSAgIiIi
UmV0dXJucyB0aGUgdGVzdHMgZm9yIG4tYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zLiIiIgotCi0g
ICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0aGUgdGVtcGxhdGUgZm9y
IHRoZSB0ZXN0cy4KLSAgREVGUyA9IHsKLSAgICAnbicgOiBuLAotICAgICdlcycgOiBJdGVyKG4s
ICdlJXMnLCBzZXA9JywgJyksCi0gICAgJ3ZzJyA6IEl0ZXIobiwgJ3YlcycsIHNlcD0nLCAnKSwK
LSAgICAndnRzJyA6IEl0ZXIobiwgJyN2JXMnLCBzZXA9JywgJyksCi0gICAgJ3R2cycgOiBJdGVy
KG4sICdUJXMgdiVzJywgc2VwPScsICcpLAotICAgICdpbnRfdnMnIDogSXRlcihuLCAnaW50IHYl
cycsIHNlcD0nLCAnKSwKLSAgICAnQm9vbF92cycgOiBJdGVyKG4sICdCb29sIHYlcycsIHNlcD0n
LCAnKSwKLSAgICAndHlwZXMnIDogSXRlcihuLCAndHlwZW5hbWUgVCVzJywgc2VwPScsICcpLAot
ICAgICd2X3N1bScgOiBJdGVyKG4sICd2JXMnLCBzZXA9JyArICcpLAotICAgICdhcml0eScgOiBB
cml0eShuKSwKLSAgICAnQXJpdHknIDogVGl0bGUoQXJpdHkobikpLAotICAgIH0KLQotICB0ZXN0
cyA9ICgKLSIiIi8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9yIHRlc3RpbmcgJShhcml0
eSlzIHByZWRpY2F0ZSBhc3NlcnRpb25zLgotCi0vLyBBICUoYXJpdHkpcyBwcmVkaWNhdGUgZnVu
Y3Rpb24uCi10ZW1wbGF0ZSA8JSh0eXBlcylzPgotYm9vbCBQcmVkRnVuY3Rpb24lKG4pcyglKHR2
cylzKSB7Ci0gIHJldHVybiAlKHZfc3VtKXMgPiAwOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHR3
byBmdW5jdGlvbnMgYXJlIG5lZWRlZCB0byBjaXJjdW12ZW50IGEgYnVnIGluCi0vLyBnY2MgMi45
NS4zLCB3aGljaCBzb21ldGltZXMgaGFzIHByb2JsZW0gd2l0aCB0aGUgYWJvdmUgdGVtcGxhdGUK
LS8vIGZ1bmN0aW9uLgotYm9vbCBQcmVkRnVuY3Rpb24lKG4pc0ludCglKGludF92cylzKSB7Ci0g
IHJldHVybiAlKHZfc3VtKXMgPiAwOwotfQotYm9vbCBQcmVkRnVuY3Rpb24lKG4pc0Jvb2woJShC
b29sX3ZzKXMpIHsKLSAgcmV0dXJuICUodl9zdW0pcyA+IDA7Ci19Ci0iIiIgJSBERUZTKQotCi0g
IHRlc3RzICs9ICIiIgotLy8gQSAlKGFyaXR5KXMgcHJlZGljYXRlIGZ1bmN0b3IuCi1zdHJ1Y3Qg
UHJlZEZ1bmN0b3IlKG4pcyB7Ci0gIHRlbXBsYXRlIDwlKHR5cGVzKXM+Ci0gIGJvb2wgb3BlcmF0
b3IoKSgiIiIgJSBERUZTCi0KLSAgdGVzdHMgKz0gSXRlcihuLCAnY29uc3QgVCVzJiB2JXMnLCBz
ZXA9IiIiLAotICAgICAgICAgICAgICAgICAgIiIiKQotCi0gIHRlc3RzICs9ICIiIikgewotICAg
IHJldHVybiAlKHZfc3VtKXMgPiAwOwotICB9Ci19OwotIiIiICUgREVGUwotCi0gIHRlc3RzICs9
ICIiIgotLy8gQSAlKGFyaXR5KXMgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdGlvbi4KLXRlbXBs
YXRlIDwlKHR5cGVzKXM+Ci10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0
aW9uJShuKXMoIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0ZXIobiwgJ2NvbnN0IGNoYXIqIGUl
cycsIHNlcD0iIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIiIpCi0KLSAgdGVzdHMgKz0gSXRlcihuLCAiIiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJXMmIHYlcyIiIikKLQotICB0ZXN0cyArPSAi
IiIpIHsKLSAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCi0gICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZSgpCi0gICAgICA8PCAiIiIgJSBERUZTCi0KLSAgdGVzdHMgKz0gSXRlcihuLCAnZSVzJywg
c2VwPScgPDwgIiArICIgPDwgJykKLQotICB0ZXN0cyArPSAiIiIKLSAgICAgIDw8ICIgaXMgZXhw
ZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgotICAgICAgPDwgJSh2X3N1
bSlzIDw8ICIuIjsKLX0KLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAiIiIKLS8vIEEgJShhcml0
eSlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KLXN0cnVjdCBQcmVkRm9ybWF0RnVuY3Rv
ciUobilzIHsKLSAgdGVtcGxhdGUgPCUodHlwZXMpcz4KLSAgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0IG9wZXJhdG9yKCkoIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0ZXIobiwgJ2NvbnN0IGNo
YXIqIGUlcycsIHNlcD0iIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIiIikKLQotICB0ZXN0cyArPSBJdGVyKG4sICIiIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVCVzJiB2JXMiIiIpCi0KLSAgdGVzdHMgKz0gIiIiKSBjb25z
dCB7Ci0gICAgcmV0dXJuIFByZWRGb3JtYXRGdW5jdGlvbiUobilzKCUoZXMpcywgJSh2cylzKTsK
LSAgfQotfTsKLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAiIiIKLS8vIFRlc3RzIGZvciB7RVhQ
RUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQlKG4pcy4KLQotY2xhc3MgUHJlZGljYXRlJShuKXNUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSB0cnVlOwotICAgIGZpbmlzaGVkXyA9
IGZhbHNlOyIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAiIiIKLSAgICAiIiIgKyBJdGVyKG4sICdu
JXNfID0gJykgKyAiIiIwOwotICB9Ci0iIiIKLQotICB0ZXN0cyArPSAiIiIKLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGlj
YXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFjdGx5IG9uY2UuIiIiCi0K
LSAgdGVzdHMgKz0gJycuam9pbihbIiIiCi0gICAgRVhQRUNUX0VRKDEsIG4lc18pIDw8Ci0gICAg
ICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgJXMg
IgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7IiIiICUgKGksIGkgKyAxKSBmb3IgaSBpbiBPbmVU
byhuKV0pCi0KLSAgdGVzdHMgKz0gIiIiCi0KLSAgICAvLyBWZXJpZmllcyB0aGF0IHRoZSBjb250
cm9sIGZsb3cgaW4gdGhlIHRlc3QgZnVuY3Rpb24gaXMgZXhwZWN0ZWQuCi0gICAgaWYgKGV4cGVj
dGVkX3RvX2ZpbmlzaF8gJiYgIWZpbmlzaGVkXykgewotICAgICAgRkFJTCgpIDw8ICJUaGUgcHJl
ZGljYXRlIGFzc2VydGlvbiB1bmV4cGFjdGVkbHkgYWJvcnRlZCB0aGUgdGVzdC4iOwotICAgIH0g
ZWxzZSBpZiAoIWV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgZmluaXNoZWRfKSB7Ci0gICAgICBGQUlM
KCkgPDwgIlRoZSBmYWlsZWQgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgYWJvcnQgdGhlIHRl
c3QgIgotICAgICAgICAgICAgICAgICJhcyBleHBlY3RlZC4iOwotICAgIH0KLSAgfQotCi0gIC8v
IHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJ1biB0byBmaW5pc2gu
Ci0gIHN0YXRpYyBib29sIGV4cGVjdGVkX3RvX2ZpbmlzaF87Ci0KLSAgLy8gdHJ1ZSBpZmYgdGhl
IHRlc3QgZnVuY3Rpb24gZGlkIHJ1biB0byBmaW5pc2guCi0gIHN0YXRpYyBib29sIGZpbmlzaGVk
XzsKLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSBJdGVyKG4sICIiIgotICBzdGF0aWMgaW50IG4l
c187IiIiKQotCi0gIHRlc3RzICs9ICIiIgotfTsKLQotYm9vbCBQcmVkaWNhdGUlKG4pc1Rlc3Q6
OmV4cGVjdGVkX3RvX2ZpbmlzaF87Ci1ib29sIFByZWRpY2F0ZSUobilzVGVzdDo6ZmluaXNoZWRf
OwotIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0ZXIobiwgIiIiaW50IFByZWRpY2F0ZSUlKG4p
c1Rlc3Q6Om4lc187Ci0iIiIpICUgREVGUwotCi0gIHRlc3RzICs9ICIiIgotdHlwZWRlZiBQcmVk
aWNhdGUlKG4pc1Rlc3QgRVhQRUNUX1BSRURfRk9STUFUJShuKXNUZXN0OwotdHlwZWRlZiBQcmVk
aWNhdGUlKG4pc1Rlc3QgQVNTRVJUX1BSRURfRk9STUFUJShuKXNUZXN0OwotdHlwZWRlZiBQcmVk
aWNhdGUlKG4pc1Rlc3QgRVhQRUNUX1BSRUQlKG4pc1Rlc3Q7Ci10eXBlZGVmIFByZWRpY2F0ZSUo
bilzVGVzdCBBU1NFUlRfUFJFRCUobilzVGVzdDsKLSIiIiAlIERFRlMKLQotICBkZWYgR2VuVGVz
dCh1c2VfZm9ybWF0LCB1c2VfYXNzZXJ0LCBleHBlY3RfZmFpbHVyZSwKLSAgICAgICAgICAgICAg
dXNlX2Z1bmN0b3IsIHVzZV91c2VyX3R5cGUpOgotICAgICIiIlJldHVybnMgdGhlIHRlc3QgZm9y
IGEgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyby4KLQotICAgIEFyZ3M6Ci0gICAgICB1c2VfZm9y
bWF0OiAgICAgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBhICpfUFJFRF9GT1JNQVQqLgotICAg
ICAgdXNlX2Fzc2VydDogICAgIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gaXMgYSBBU1NFUlRfKi4K
LSAgICAgIGV4cGVjdF9mYWlsdXJlOiB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIGlzIGV4cGVjdGVk
IHRvIGZhaWwuCi0gICAgICB1c2VfZnVuY3RvcjogICAgdHJ1ZSBpZmYgdGhlIGZpcnN0IGFyZ3Vt
ZW50IG9mIHRoZSBhc3NlcnRpb24gaXMKLSAgICAgICAgICAgICAgICAgICAgICBhIGZ1bmN0b3Ig
KGFzIG9wcG9zZWQgdG8gYSBmdW5jdGlvbikKLSAgICAgIHVzZV91c2VyX3R5cGU6ICB0cnVlIGlm
ZiB0aGUgcHJlZGljYXRlIGZ1bmN0b3IvZnVuY3Rpb24gdGFrZXMKLSAgICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudChzKSBvZiBhIHVzZXItZGVmaW5lZCB0eXBlLgotCi0gICAgRXhhbXBsZToK
LQotICAgICAgR2VuVGVzdCgxLCAwLCAwLCAxLCAwKSByZXR1cm5zIGEgdGVzdCB0aGF0IHRlc3Rz
IHRoZSBiZWhhdmlvcgotICAgICAgb2YgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVG4o
KSB0aGF0IHRha2VzIGEgZnVuY3RvcgotICAgICAgd2hvc2UgYXJndW1lbnRzIGhhdmUgYnVpbHQt
aW4gdHlwZXMuIiIiCi0KLSAgICBpZiB1c2VfYXNzZXJ0OgotICAgICAgYXNzcnQgPSAnQVNTRVJU
JyAgIyAnYXNzZXJ0JyBpcyByZXNlcnZlZCwgc28gd2UgY2Fubm90IHVzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgIyB0aGF0IGlkZW50aWZpZXIgaGVyZS4KLSAgICBlbHNlOgotICAgICAgYXNz
cnQgPSAnRVhQRUNUJwotCi0gICAgYXNzZXJ0aW9uID0gYXNzcnQgKyAnX1BSRUQnCi0KLSAgICBp
ZiB1c2VfZm9ybWF0OgotICAgICAgcHJlZF9mb3JtYXQgPSAnUHJlZEZvcm1hdCcKLSAgICAgIGFz
c2VydGlvbiArPSAnX0ZPUk1BVCcKLSAgICBlbHNlOgotICAgICAgcHJlZF9mb3JtYXQgPSAnUHJl
ZCcKLQotICAgIGFzc2VydGlvbiArPSAnJShuKXMnICUgREVGUwotCi0gICAgaWYgdXNlX2Z1bmN0
b3I6Ci0gICAgICBwcmVkX2Zvcm1hdF90eXBlID0gJ2Z1bmN0b3InCi0gICAgICBwcmVkX2Zvcm1h
dCArPSAnRnVuY3RvciUobilzKCknCi0gICAgZWxzZToKLSAgICAgIHByZWRfZm9ybWF0X3R5cGUg
PSAnZnVuY3Rpb24nCi0gICAgICBwcmVkX2Zvcm1hdCArPSAnRnVuY3Rpb24lKG4pcycKLSAgICAg
IGlmIG5vdCB1c2VfZm9ybWF0OgotICAgICAgICBpZiB1c2VfdXNlcl90eXBlOgotICAgICAgICAg
IHByZWRfZm9ybWF0ICs9ICdCb29sJwotICAgICAgICBlbHNlOgotICAgICAgICAgIHByZWRfZm9y
bWF0ICs9ICdJbnQnCi0KLSAgICB0ZXN0X25hbWUgPSBwcmVkX2Zvcm1hdF90eXBlLnRpdGxlKCkK
LQotICAgIGlmIHVzZV91c2VyX3R5cGU6Ci0gICAgICBhcmdfdHlwZSA9ICd1c2VyLWRlZmluZWQg
dHlwZSAoQm9vbCknCi0gICAgICB0ZXN0X25hbWUgKz0gJ09uVXNlclR5cGUnCi0gICAgICBpZiBl
eHBlY3RfZmFpbHVyZToKLSAgICAgICAgYXJnID0gJ0Jvb2wobiVzXysrKScKLSAgICAgIGVsc2U6
Ci0gICAgICAgIGFyZyA9ICdCb29sKCsrbiVzXyknCi0gICAgZWxzZToKLSAgICAgIGFyZ190eXBl
ID0gJ2J1aWx0LWluIHR5cGUgKGludCknCi0gICAgICB0ZXN0X25hbWUgKz0gJ09uQnVpbHRJblR5
cGUnCi0gICAgICBpZiBleHBlY3RfZmFpbHVyZToKLSAgICAgICAgYXJnID0gJ24lc18rKycKLSAg
ICAgIGVsc2U6Ci0gICAgICAgIGFyZyA9ICcrK24lc18nCi0KLSAgICBpZiBleHBlY3RfZmFpbHVy
ZToKLSAgICAgIHN1Y2Nlc3NmdWxfb3JfZmFpbGVkID0gJ2ZhaWxlZCcKLSAgICAgIGV4cGVjdGVk
X29yX25vdCA9ICdleHBlY3RlZC4nCi0gICAgICB0ZXN0X25hbWUgKz0gICdGYWlsdXJlJwotICAg
IGVsc2U6Ci0gICAgICBzdWNjZXNzZnVsX29yX2ZhaWxlZCA9ICdzdWNjZXNzZnVsJwotICAgICAg
ZXhwZWN0ZWRfb3Jfbm90ID0gJ1VORVhQRUNURUQhJwotICAgICAgdGVzdF9uYW1lICs9ICAnU3Vj
Y2VzcycKLQotICAgICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0aGUg
dGVzdCB0ZW1wbGF0ZS4KLSAgICBkZWZzID0gREVGUy5jb3B5KCkKLSAgICBkZWZzLnVwZGF0ZSh7
Ci0gICAgICAnYXNzZXJ0JyA6IGFzc3J0LAotICAgICAgJ2Fzc2VydGlvbicgOiBhc3NlcnRpb24s
Ci0gICAgICAndGVzdF9uYW1lJyA6IHRlc3RfbmFtZSwKLSAgICAgICdwZl90eXBlJyA6IHByZWRf
Zm9ybWF0X3R5cGUsCi0gICAgICAncGYnIDogcHJlZF9mb3JtYXQsCi0gICAgICAnYXJnX3R5cGUn
IDogYXJnX3R5cGUsCi0gICAgICAnYXJnJyA6IGFyZywKLSAgICAgICdzdWNjZXNzZnVsJyA6IHN1
Y2Nlc3NmdWxfb3JfZmFpbGVkLAotICAgICAgJ2V4cGVjdGVkJyA6IGV4cGVjdGVkX29yX25vdCwK
LSAgICAgIH0pCi0KLSAgICB0ZXN0ID0gIiIiCi0vLyBUZXN0cyBhICUoc3VjY2Vzc2Z1bClzICUo
YXNzZXJ0aW9uKXMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgJShwZl90
eXBlKXMgb24gYSAlKGFyZ190eXBlKXMuCi1URVNUX0YoJShhc3NlcnRpb24pc1Rlc3QsICUodGVz
dF9uYW1lKXMpIHsiIiIgJSBkZWZzCi0KLSAgICBpbmRlbnQgPSAobGVuKGFzc2VydGlvbikgKyAz
KSonICcKLSAgICBleHRyYV9pbmRlbnQgPSAnJwotCi0gICAgaWYgZXhwZWN0X2ZhaWx1cmU6Ci0g
ICAgICBleHRyYV9pbmRlbnQgPSAnICAnCi0gICAgICBpZiB1c2VfYXNzZXJ0OgotICAgICAgICB0
ZXN0ICs9ICIiIgotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVCIiIgotICAgICAgZWxzZToKLSAgICAgICAgdGVzdCArPSAi
IiIKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UIiIiCi0KLSAgICB0ZXN0
ICs9ICdcbicgKyBleHRyYV9pbmRlbnQgKyAiIiIgICUoYXNzZXJ0aW9uKXMoJShwZilzIiIiICUg
ZGVmcwotCi0gICAgdGVzdCA9IHRlc3QgJSBkZWZzCi0gICAgdGVzdCArPSBJdGVyKG4sICcsXG4n
ICsgaW5kZW50ICsgZXh0cmFfaW5kZW50ICsgJyUoYXJnKXMnICUgZGVmcykKLSAgICB0ZXN0ICs9
ICcpO1xuJyArIGV4dHJhX2luZGVudCArICcgIGZpbmlzaGVkXyA9IHRydWU7XG4nCi0KLSAgICBp
ZiBleHBlY3RfZmFpbHVyZToKLSAgICAgIHRlc3QgKz0gJyAgfSwgIiIpO1xuJwotCi0gICAgdGVz
dCArPSAnfVxuJwotICAgIHJldHVybiB0ZXN0Ci0KLSAgIyBHZW5lcmF0ZXMgdGVzdHMgZm9yIGFs
bCAyKio2ID0gNjQgY29tYmluYXRpb25zLgotICB0ZXN0cyArPSAnJy5qb2luKFtHZW5UZXN0KHVz
ZV9mb3JtYXQsIHVzZV9hc3NlcnQsIGV4cGVjdF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZV9mdW5jdG9yLCB1c2VfdXNlcl90eXBlKQotICAgICAgICAgICAgICAgICAg
ICBmb3IgdXNlX2Zvcm1hdCBpbiBbMCwgMV0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHVzZV9h
c3NlcnQgaW4gWzAsIDFdCi0gICAgICAgICAgICAgICAgICAgIGZvciBleHBlY3RfZmFpbHVyZSBp
biBbMCwgMV0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHVzZV9mdW5jdG9yIGluIFswLCAxXQot
ICAgICAgICAgICAgICAgICAgICBmb3IgdXNlX3VzZXJfdHlwZSBpbiBbMCwgMV0KLSAgICAgICAg
ICAgICAgICAgICAgXSkKLQotICByZXR1cm4gdGVzdHMKLQotCi1kZWYgVW5pdFRlc3RQb3N0YW1i
bGUoKToKLSAgIiIiUmV0dXJucyB0aGUgcG9zdGFtYmxlIGZvciB0aGUgdGVzdHMuIiIiCi0KLSAg
cmV0dXJuICcnCi0KLQotZGVmIEdlbmVyYXRlVW5pdFRlc3Qobik6Ci0gICIiIlJldHVybnMgdGhl
IHRlc3RzIGZvciB1cC10byBuLWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQotICBHZW5l
cmF0ZUZpbGUoVU5JVF9URVNULAotICAgICAgICAgICAgICAgVW5pdFRlc3RQcmVhbWJsZSgpCi0g
ICAgICAgICAgICAgICArICcnLmpvaW4oW1Rlc3RzRm9yQXJpdHkoaSkgZm9yIGkgaW4gT25lVG8o
bildKQotICAgICAgICAgICAgICAgKyBVbml0VGVzdFBvc3RhbWJsZSgpKQotCi0KLWRlZiBfTWFp
bigpOgotICAiIiJUaGUgZW50cnkgcG9pbnQgb2YgdGhlIHNjcmlwdC4gIEdlbmVyYXRlcyB0aGUg
aGVhZGVyIGZpbGUgYW5kIGl0cwotICB1bml0IHRlc3QuIiIiCi0KLSAgaWYgbGVuKHN5cy5hcmd2
KSAhPSAyOgotICAgIHByaW50IF9fZG9jX18KLSAgICBwcmludCAnQXV0aG9yOiAnICsgX19hdXRo
b3JfXwotICAgIHN5cy5leGl0KDEpCi0KLSAgbiA9IGludChzeXMuYXJndlsxXSkKLSAgR2VuZXJh
dGVIZWFkZXIobikKLSAgR2VuZXJhdGVVbml0VGVzdChuKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gIF9NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZ3Rl
c3QtY29uZmlnLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc4MGY4NDMyZWZjYzFhZWVhYWFkMDcwNjA4NmQzZmY2
NDEyODViNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwy
NzQgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgVGhlc2UgdmFyaWFibGVzIGFyZSBhdXRvbWF0aWNh
bGx5IGZpbGxlZCBpbiBieSB0aGUgY29uZmlndXJlIHNjcmlwdC4KLW5hbWU9IkBQQUNLQUdFX1RB
Uk5BTUVAIgotdmVyc2lvbj0iQFBBQ0tBR0VfVkVSU0lPTkAiCi0KLXNob3dfdXNhZ2UoKQotewot
ICBlY2hvICJVc2FnZTogZ3Rlc3QtY29uZmlnIFtPUFRJT05TLi4uXSIKLX0KLQotc2hvd19oZWxw
KCkKLXsKLSAgc2hvd191c2FnZQotICBjYXQgPDxcRU9GCi0KLVRoZSBgZ3Rlc3QtY29uZmlnJyBz
Y3JpcHQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBuZWNlc3NhcnkgY29tcGlsZSBhbmQgbGlua2lu
ZwotZmxhZ3MgdG8gY29ubmVjdCB3aXRoIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmssIGJv
dGggaW4gYSBidWlsZCBwcmlvciB0bwotaW5zdGFsbGF0aW9uLCBhbmQgb24gdGhlIHN5c3RlbSBw
cm9wZXIgYWZ0ZXIgaW5zdGFsbGF0aW9uLiBUaGUgaW5zdGFsbGF0aW9uCi1vdmVycmlkZXMgbWF5
IGJlIGlzc3VlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGFueSBvdGhlciBxdWVyaWVzLCBidXQgd2ls
bCBvbmx5Ci1hZmZlY3QgaW5zdGFsbGF0aW9uIHF1ZXJpZXMgaWYgY2FsbGVkIG9uIGEgYnVpbHQg
YnV0IG5vdCBpbnN0YWxsZWQgZ3Rlc3QuIFRoZQotaW5zdGFsbGF0aW9uIHF1ZXJpZXMgbWF5IG5v
dCBiZSBpc3N1ZWQgd2l0aCBhbnkgb3RoZXIgdHlwZXMgb2YgcXVlcmllcywgYW5kCi1vbmx5IG9u
ZSBpbnN0YWxsYXRpb24gcXVlcnkgbWF5IGJlIG1hZGUgYXQgYSB0aW1lLiBUaGUgdmVyc2lvbiBx
dWVyaWVzIGFuZAotY29tcGlsZXIgZmxhZyBxdWVyaWVzIG1heSBiZSBjb21iaW5lZCBhcyBkZXNp
cmVkIGJ1dCBub3QgbWl4ZWQuIERpZmZlcmVudAotdmVyc2lvbiBxdWVyaWVzIGFyZSBhbHdheXMg
Y29tYmluZWQgd2l0aCBsb2dpY2FsICJhbmQiIHNlbWFudGljcywgYW5kIG9ubHkgdGhlCi1sYXN0
IG9mIGFueSBwYXJ0aWN1bGFyIHF1ZXJ5IGlzIHVzZWQgd2hpbGUgYWxsIHByZXZpb3VzIG9uZXMg
aWdub3JlZC4gQWxsCi12ZXJzaW9ucyBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIHNlcXVlbmNlIG9m
IG51bWJlcnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMuCi1Db21waWxlciBmbGFnIHF1ZXJpZXMgb3V0
cHV0IHRoZSB1bmlvbiBvZiB0aGUgc2V0cyBvZiBmbGFncyB3aGVuIGNvbWJpbmVkLgotCi0gRXhh
bXBsZXM6Ci0gIGd0ZXN0LWNvbmZpZyAtLW1pbi12ZXJzaW9uPTEuMCB8fCBlY2hvICJJbnN1ZmZp
Y2llbnQgR29vZ2xlIFRlc3QgdmVyc2lvbi4iCi0KLSAgZysrICQoZ3Rlc3QtY29uZmlnIC0tY3Bw
ZmxhZ3MgLS1jeHhmbGFncykgLW8gZm9vLm8gLWMgZm9vLmNwcAotICBnKysgJChndGVzdC1jb25m
aWcgLS1sZGZsYWdzIC0tbGlicykgLW8gZm9vIGZvby5vCi0KLSAgIyBXaGVuIHVzaW5nIGEgYnVp
bHQgYnV0IG5vdCBpbnN0YWxsZWQgR29vZ2xlIFRlc3Q6Ci0gIGcrKyAkKC4uLy4uL215X2d0ZXN0
X2J1aWxkL3NjcmlwdHMvZ3Rlc3QtY29uZmlnIC4uLikgLi4uCi0KLSAgIyBXaGVuIHVzaW5nIGFu
IGluc3RhbGxlZCBHb29nbGUgVGVzdCwgYnV0IHdpdGggaW5zdGFsbGF0aW9uIG92ZXJyaWRlczoK
LSAgZXhwb3J0IEdURVNUX1BSRUZJWD0iL29wdCIKLSAgZysrICQoZ3Rlc3QtY29uZmlnIC0tbGli
ZGlyPSIvb3B0L2xpYjY0IiAuLi4pIC4uLgotCi0gSGVscDoKLSAgLS11c2FnZSAgICAgICAgICAg
ICAgICAgICAgYnJpZWYgdXNhZ2UgaW5mb3JtYXRpb24KLSAgLS1oZWxwICAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZQotCi0gSW5zdGFsbGF0aW9uIE92ZXJyaWRl
czoKLSAgLS1wcmVmaXg9PGRpcj4gICAgICAgICAgICAgb3ZlcnJpZGVzIHRoZSBpbnN0YWxsYXRp
b24gcHJlZml4Ci0gIC0tZXhlYy1wcmVmaXg9PGRpcj4gICAgICAgIG92ZXJyaWRlcyB0aGUgZXhl
Y3V0YWJsZSBpbnN0YWxsYXRpb24gcHJlZml4Ci0gIC0tbGliZGlyPTxkaXI+ICAgICAgICAgICAg
IG92ZXJyaWRlcyB0aGUgbGlicmFyeSBpbnN0YWxsYXRpb24gcHJlZml4Ci0gIC0taW5jbHVkZWRp
cj08ZGlyPiAgICAgICAgIG92ZXJyaWRlcyB0aGUgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIHBy
ZWZpeAotCi0gSW5zdGFsbGF0aW9uIFF1ZXJpZXM6Ci0gIC0tcHJlZml4ICAgICAgICAgICAgICAg
ICAgIGluc3RhbGxhdGlvbiBwcmVmaXgKLSAgLS1leGVjLXByZWZpeCAgICAgICAgICAgICAgZXhl
Y3V0YWJsZSBpbnN0YWxsYXRpb24gcHJlZml4Ci0gIC0tbGliZGlyICAgICAgICAgICAgICAgICAg
IGxpYnJhcnkgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQotICAtLWluY2x1ZGVkaXIgICAgICAgICAg
ICAgICBoZWFkZXIgZmlsZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5Ci0gIC0tdmVyc2lvbiAgICAg
ICAgICAgICAgICAgIHRoZSB2ZXJzaW9uIG9mIHRoZSBHb29nbGUgVGVzdCBpbnN0YWxsYXRpb24K
LQotIFZlcnNpb24gUXVlcmllczoKLSAgLS1taW4tdmVyc2lvbj1WRVJTSU9OICAgICAgcmV0dXJu
IDAgaWYgdGhlIHZlcnNpb24gaXMgYXQgbGVhc3QgVkVSU0lPTgotICAtLWV4YWN0LXZlcnNpb249
VkVSU0lPTiAgICByZXR1cm4gMCBpZiB0aGUgdmVyc2lvbiBpcyBleGFjdGx5IFZFUlNJT04KLSAg
LS1tYXgtdmVyc2lvbj1WRVJTSU9OICAgICAgcmV0dXJuIDAgaWYgdGhlIHZlcnNpb24gaXMgYXQg
bW9zdCBWRVJTSU9OCi0KLSBDb21waWxhdGlvbiBGbGFnIFF1ZXJpZXM6Ci0gIC0tY3BwZmxhZ3Mg
ICAgICAgICAgICAgICAgIGNvbXBpbGUgZmxhZ3Mgc3BlY2lmaWMgdG8gdGhlIEMtbGlrZSBwcmVw
cm9jZXNzb3JzCi0gIC0tY3h4ZmxhZ3MgICAgICAgICAgICAgICAgIGNvbXBpbGUgZmxhZ3MgYXBw
cm9wcmlhdGUgZm9yIEMrKyBwcm9ncmFtcwotICAtLWxkZmxhZ3MgICAgICAgICAgICAgICAgICBs
aW5rZXIgZmxhZ3MKLSAgLS1saWJzICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIGZvciBs
aW5raW5nCi0KLUVPRgotfQotCi0jIFRoaXMgZnVuY3Rpb24gYm91bmRzIG91ciB2ZXJzaW9uIHdp
dGggYSBtaW4gYW5kIGEgbWF4LiBJdCB1c2VzIHNvbWUgY2xldmVyCi0jIFBPU0lYLWNvbXBsaWFu
dCB2YXJpYWJsZSBleHBhbnNpb24gdG8gcG9ydGFibHkgZG8gYWxsIHRoZSB3b3JrIGluIHRoZSBz
aGVsbAotIyBhbmQgYXZvaWQgYW55IGRlcGVuZGVuY3kgb24gYSBwYXJ0aWN1bGFyICJzZWQiIG9y
ICJhd2siIGltcGxlbWVudGF0aW9uLgotIyBOb3RhYmxlIGlzIHRoYXQgaXQgd2lsbCBvbmx5IGV2
ZXIgY29tcGFyZSB0aGUgZmlyc3QgMyBjb21wb25lbnRzIG9mIHZlcnNpb25zLgotIyBGdXJ0aGVy
IGNvbXBvbmVudHMgd2lsbCBiZSBjbGVhbmx5IHN0cmlwcGVkIG9mZi4gQWxsIHZlcnNpb25zIG11
c3QgYmUKLSMgdW5hZG9ybmVkLCBzbyAidjEuMCIgd2lsbCAqbm90KiB3b3JrLiBUaGUgbWluaW11
bSB2ZXJzaW9uIG11c3QgYmUgaW4gJDEsIGFuZAotIyB0aGUgbWF4IGluICQyLiBUT0RPKGNoYW5k
bGVyY0Bnb29nbGUuY29tKTogSWYgdGhpcyBldmVyIGJyZWFrcywgd2Ugc2hvdWxkCi0jIGludmVz
dGlnYXRlIGV4cGFuZGluZyB0aGlzIHZpYSBhdXRvbTR0ZSBmcm9tIEFTX1ZFUlNJT05fQ09NUEFS
RSByYXRoZXIgdGhhbgotIyBjb250aW51aW5nIHRvIG1haW50YWluIG91ciBvd24gc2hlbGwgdmVy
c2lvbi4KLWNoZWNrX3ZlcnNpb25zKCkKLXsKLSAgbWFqb3JfdmVyc2lvbj0ke3ZlcnNpb24lJS4q
fQotICBtaW5vcl92ZXJzaW9uPSIwIgotICBwb2ludF92ZXJzaW9uPSIwIgotICBpZiB0ZXN0ICIk
e3ZlcnNpb24jKi59IiAhPSAiJHt2ZXJzaW9ufSI7IHRoZW4KLSAgICBtaW5vcl92ZXJzaW9uPSR7
dmVyc2lvbiMqLn0KLSAgICBtaW5vcl92ZXJzaW9uPSR7bWlub3JfdmVyc2lvbiUlLip9Ci0gIGZp
Ci0gIGlmIHRlc3QgIiR7dmVyc2lvbiMqLioufSIgIT0gIiR7dmVyc2lvbn0iOyB0aGVuCi0gICAg
cG9pbnRfdmVyc2lvbj0ke3ZlcnNpb24jKi4qLn0KLSAgICBwb2ludF92ZXJzaW9uPSR7cG9pbnRf
dmVyc2lvbiUlLip9Ci0gIGZpCi0KLSAgbWluX3ZlcnNpb249IiQxIgotICBtaW5fbWFqb3JfdmVy
c2lvbj0ke21pbl92ZXJzaW9uJSUuKn0KLSAgbWluX21pbm9yX3ZlcnNpb249IjAiCi0gIG1pbl9w
b2ludF92ZXJzaW9uPSIwIgotICBpZiB0ZXN0ICIke21pbl92ZXJzaW9uIyoufSIgIT0gIiR7bWlu
X3ZlcnNpb259IjsgdGhlbgotICAgIG1pbl9taW5vcl92ZXJzaW9uPSR7bWluX3ZlcnNpb24jKi59
Ci0gICAgbWluX21pbm9yX3ZlcnNpb249JHttaW5fbWlub3JfdmVyc2lvbiUlLip9Ci0gIGZpCi0g
IGlmIHRlc3QgIiR7bWluX3ZlcnNpb24jKi4qLn0iICE9ICIke21pbl92ZXJzaW9ufSI7IHRoZW4K
LSAgICBtaW5fcG9pbnRfdmVyc2lvbj0ke21pbl92ZXJzaW9uIyouKi59Ci0gICAgbWluX3BvaW50
X3ZlcnNpb249JHttaW5fcG9pbnRfdmVyc2lvbiUlLip9Ci0gIGZpCi0KLSAgbWF4X3ZlcnNpb249
IiQyIgotICBtYXhfbWFqb3JfdmVyc2lvbj0ke21heF92ZXJzaW9uJSUuKn0KLSAgbWF4X21pbm9y
X3ZlcnNpb249IjAiCi0gIG1heF9wb2ludF92ZXJzaW9uPSIwIgotICBpZiB0ZXN0ICIke21heF92
ZXJzaW9uIyoufSIgIT0gIiR7bWF4X3ZlcnNpb259IjsgdGhlbgotICAgIG1heF9taW5vcl92ZXJz
aW9uPSR7bWF4X3ZlcnNpb24jKi59Ci0gICAgbWF4X21pbm9yX3ZlcnNpb249JHttYXhfbWlub3Jf
dmVyc2lvbiUlLip9Ci0gIGZpCi0gIGlmIHRlc3QgIiR7bWF4X3ZlcnNpb24jKi4qLn0iICE9ICIk
e21heF92ZXJzaW9ufSI7IHRoZW4KLSAgICBtYXhfcG9pbnRfdmVyc2lvbj0ke21heF92ZXJzaW9u
IyouKi59Ci0gICAgbWF4X3BvaW50X3ZlcnNpb249JHttYXhfcG9pbnRfdmVyc2lvbiUlLip9Ci0g
IGZpCi0KLSAgdGVzdCAkKCgkbWFqb3JfdmVyc2lvbikpIC1sdCAkKCgkbWluX21ham9yX3ZlcnNp
b24pKSAmJiBleGl0IDEKLSAgaWYgdGVzdCAkKCgkbWFqb3JfdmVyc2lvbikpIC1lcSAkKCgkbWlu
X21ham9yX3ZlcnNpb24pKTsgdGhlbgotICAgIHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24pKSAtbHQg
JCgoJG1pbl9taW5vcl92ZXJzaW9uKSkgJiYgZXhpdCAxCi0gICAgaWYgdGVzdCAkKCgkbWlub3Jf
dmVyc2lvbikpIC1lcSAkKCgkbWluX21pbm9yX3ZlcnNpb24pKTsgdGhlbgotICAgICAgdGVzdCAk
KCgkcG9pbnRfdmVyc2lvbikpIC1sdCAkKCgkbWluX3BvaW50X3ZlcnNpb24pKSAmJiBleGl0IDEK
LSAgICBmaQotICBmaQotCi0gIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtZ3QgJCgoJG1heF9t
YWpvcl92ZXJzaW9uKSkgJiYgZXhpdCAxCi0gIGlmIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAt
ZXEgJCgoJG1heF9tYWpvcl92ZXJzaW9uKSk7IHRoZW4KLSAgICB0ZXN0ICQoKCRtaW5vcl92ZXJz
aW9uKSkgLWd0ICQoKCRtYXhfbWlub3JfdmVyc2lvbikpICYmIGV4aXQgMQotICAgIGlmIHRlc3Qg
JCgoJG1pbm9yX3ZlcnNpb24pKSAtZXEgJCgoJG1heF9taW5vcl92ZXJzaW9uKSk7IHRoZW4KLSAg
ICAgIHRlc3QgJCgoJHBvaW50X3ZlcnNpb24pKSAtZ3QgJCgoJG1heF9wb2ludF92ZXJzaW9uKSkg
JiYgZXhpdCAxCi0gICAgZmkKLSAgZmkKLQotICBleGl0IDAKLX0KLQotIyBTaG93IHRoZSB1c2Fn
ZSBsaW5lIHdoZW4gbm8gYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuCi1pZiB0ZXN0ICQjIC1lcSAw
OyB0aGVuCi0gIHNob3dfdXNhZ2UKLSAgZXhpdCAxCi1maQotCi13aGlsZSB0ZXN0ICQjIC1ndCAw
OyBkbwotICBjYXNlICQxIGluCi0gICAgLS11c2FnZSkgICAgICAgICAgc2hvd191c2FnZTsgICAg
ICAgICBleGl0IDA7OwotICAgIC0taGVscCkgICAgICAgICAgIHNob3dfaGVscDsgICAgICAgICAg
ZXhpdCAwOzsKLQotICAgICMgSW5zdGFsbGF0aW9uIG92ZXJyaWRlcwotICAgIC0tcHJlZml4PSop
ICAgICAgIEdURVNUX1BSRUZJWD0kezEjLS1wcmVmaXg9fTs7Ci0gICAgLS1leGVjLXByZWZpeD0q
KSAgR1RFU1RfRVhFQ19QUkVGSVg9JHsxIy0tZXhlYy1wcmVmaXg9fTs7Ci0gICAgLS1saWJkaXI9
KikgICAgICAgR1RFU1RfTElCRElSPSR7MSMtLWxpYmRpcj19OzsKLSAgICAtLWluY2x1ZGVkaXI9
KikgICBHVEVTVF9JTkNMVURFRElSPSR7MSMtLWluY2x1ZGVkaXI9fTs7Ci0KLSAgICAjIEluc3Rh
bGxhdGlvbiBxdWVyaWVzCi0gICAgLS1wcmVmaXh8LS1leGVjLXByZWZpeHwtLWxpYmRpcnwtLWlu
Y2x1ZGVkaXJ8LS12ZXJzaW9uKQotICAgICAgaWYgdGVzdCAtbiAiJHtkb19xdWVyeX0iOyB0aGVu
Ci0gICAgICAgIHNob3dfdXNhZ2UKLSAgICAgICAgZXhpdCAxCi0gICAgICBmaQotICAgICAgZG9f
cXVlcnk9JHsxIy0tfQotICAgICAgOzsKLQotICAgICMgVmVyc2lvbiBjaGVja2luZwotICAgIC0t
bWluLXZlcnNpb249KikKLSAgICAgIGRvX2NoZWNrX3ZlcnNpb25zPXllcwotICAgICAgbWluX3Zl
cnNpb249JHsxIy0tbWluLXZlcnNpb249fQotICAgICAgOzsKLSAgICAtLW1heC12ZXJzaW9uPSop
Ci0gICAgICBkb19jaGVja192ZXJzaW9ucz15ZXMKLSAgICAgIG1heF92ZXJzaW9uPSR7MSMtLW1h
eC12ZXJzaW9uPX0KLSAgICAgIDs7Ci0gICAgLS1leGFjdC12ZXJzaW9uPSopCi0gICAgICBkb19j
aGVja192ZXJzaW9ucz15ZXMKLSAgICAgIGV4YWN0X3ZlcnNpb249JHsxIy0tZXhhY3QtdmVyc2lv
bj19Ci0gICAgICA7OwotCi0gICAgIyBDb21waWxlciBmbGFnIG91dHB1dAotICAgIC0tY3BwZmxh
Z3MpICAgICAgIGVjaG9fY3BwZmxhZ3M9eWVzOzsKLSAgICAtLWN4eGZsYWdzKSAgICAgICBlY2hv
X2N4eGZsYWdzPXllczs7Ci0gICAgLS1sZGZsYWdzKSAgICAgICAgZWNob19sZGZsYWdzPXllczs7
Ci0gICAgLS1saWJzKSAgICAgICAgICAgZWNob19saWJzPXllczs7Ci0KLSAgICAjIEV2ZXJ5dGhp
bmcgZWxzZSBpcyBhbiBlcnJvcgotICAgICopICAgICAgICAgICAgICAgIHNob3dfdXNhZ2U7ICAg
ICAgICAgZXhpdCAxOzsKLSAgZXNhYwotICBzaGlmdAotZG9uZQotCi0jIFRoZXNlIGhhdmUgZGVm
YXVsdHMgZmlsbGVkIGluIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IGJ1dCBjYW4gYWxzbyBiZQot
IyBvdmVycmlkZGVuIGJ5IGVudmlyb25tZW50IHZhcmlhYmxlcyBvciBjb21tYW5kIGxpbmUgcGFy
YW1ldGVycy4KLXByZWZpeD0iJHtHVEVTVF9QUkVGSVg6LUBwcmVmaXhAfSIKLWV4ZWNfcHJlZml4
PSIke0dURVNUX0VYRUNfUFJFRklYOi1AZXhlY19wcmVmaXhAfSIKLWxpYmRpcj0iJHtHVEVTVF9M
SUJESVI6LUBsaWJkaXJAfSIKLWluY2x1ZGVkaXI9IiR7R1RFU1RfSU5DTFVERURJUjotQGluY2x1
ZGVkaXJAfSIKLQotIyBXZSB0cnkgYW5kIGRldGVjdCBpZiBvdXIgYmluYXJ5IGlzIG5vdCBsb2Nh
dGVkIGF0IGl0cyBpbnN0YWxsZWQgbG9jYXRpb24uIElmCi0jIGl0J3Mgbm90LCB3ZSBwcm92aWRl
IHZhcmlhYmxlcyBwb2ludGluZyB0byB0aGUgc291cmNlIGFuZCBidWlsZCB0cmVlIHJhdGhlcgot
IyB0aGFuIHRvIHRoZSBpbnN0YWxsIHRyZWUuIFRoaXMgYWxsb3dzIGJ1aWxkaW5nIGFnYWluc3Qg
YSBqdXN0LWJ1aWx0IGd0ZXN0Ci0jIHJhdGhlciB0aGFuIGFuIGluc3RhbGxlZCBndGVzdC4KLWJp
bmRpcj0iQGJpbmRpckAiCi10aGlzX3JlbGF0aXZlX2JpbmRpcj1gZGlybmFtZSAkMGAKLXRoaXNf
YmluZGlyPWBjZCAke3RoaXNfcmVsYXRpdmVfYmluZGlyfTsgcHdkIC1QYAotaWYgdGVzdCAiJHt0
aGlzX2JpbmRpcn0iID0gIiR7dGhpc19iaW5kaXIlJHtiaW5kaXJ9fSI7IHRoZW4KLSAgIyBUaGUg
cGF0aCB0byB0aGUgc2NyaXB0IGRvZXNuJ3QgZW5kIGluIHRoZSBiaW5kaXIgc2VxdWVuY2UgZnJv
bSBBdXRvY29uZiwKLSAgIyBhc3N1bWUgdGhhdCB3ZSBhcmUgaW4gYSBidWlsZCB0cmVlLgotICBi
dWlsZF9kaXI9YGRpcm5hbWUgJHt0aGlzX2JpbmRpcn1gCi0gIHNyY19kaXI9YGNkICR7dGhpc19i
aW5kaXJ9OyBjZCBAdG9wX3NyY2RpckA7IHB3ZCAtUGAKLQotICAjIFRPRE8oY2hhbmRsZXJjQGdv
b2dsZS5jb20pOiBUaGlzIGlzIGEgZGFuZ2Vyb3VzIGRlcGVuZGVuY3kgb24gbGlidG9vbCwgd2UK
LSAgIyBzaG91bGQgd29yayB0byByZW1vdmUgaXQsIGFuZC9vciByZW1vdmUgbGlidG9vbCBhbHRv
Z2V0aGVyLCByZXBsYWNpbmcgaXQKLSAgIyB3aXRoIGRpcmVjdCByZWZlcmVuY2VzIHRvIHRoZSBs
aWJyYXJ5IGFuZCBhIGxpbmsgcGF0aC4KLSAgZ3Rlc3RfbGlicz0iJHtidWlsZF9kaXJ9L2xpYi9s
aWJndGVzdC5sYSBAUFRIUkVBRF9DRkxBR1NAIEBQVEhSRUFEX0xJQlNAIgotICBndGVzdF9sZGZs
YWdzPSIiCi0KLSAgIyBXZSBwcm92aWRlIGhvb2tzIHRvIGluY2x1ZGUgZnJvbSBlaXRoZXIgdGhl
IHNvdXJjZSBvciBidWlsZCBkaXIsIHdoZXJlIHRoZQotICAjIGJ1aWxkIGRpciBpcyBhbHdheXMg
cHJlZmVycmVkLiBUaGlzIHdpbGwgcG90ZW50aWFsbHkgYWxsb3cgdXMgdG8gd3JpdGUKLSAgIyBi
dWlsZCBydWxlcyBmb3IgZ2VuZXJhdGVkIGhlYWRlcnMgYW5kIGhhdmUgdGhlbSBhdXRvbWF0aWNh
bGx5IGJlIHByZWZlcnJlZAotICAjIG92ZXIgcHJvdmlkZWQgdmVyc2lvbnMuCi0gIGd0ZXN0X2Nw
cGZsYWdzPSItSSR7YnVpbGRfZGlyfS9pbmNsdWRlIC1JJHtzcmNfZGlyfS9pbmNsdWRlIgotICBn
dGVzdF9jeHhmbGFncz0iQFBUSFJFQURfQ0ZMQUdTQCIKLWVsc2UKLSAgIyBXZSdyZSB1c2luZyBh
biBpbnN0YWxsZWQgZ3Rlc3QsIGFsdGhvdWdoIGl0IG1heSBiZSBzdGFnZWQgdW5kZXIgc29tZQot
ICAjIHByZWZpeC4gQXNzdW1lIChhcyBvdXIgb3duIGxpYnJhcmllcyBkbykgdGhhdCB3ZSBjYW4g
cmVzb2x2ZSB0aGUgcHJlZml4LAotICAjIGFuZCBhcmUgcHJlc2VudCBpbiB0aGUgZHluYW1pYyBs
aW5rIHBhdGhzLgotICBndGVzdF9sZGZsYWdzPSItTCR7bGliZGlyfSIKLSAgZ3Rlc3RfbGlicz0i
LWwke25hbWV9IEBQVEhSRUFEX0NGTEFHU0AgQFBUSFJFQURfTElCU0AiCi0gIGd0ZXN0X2NwcGZs
YWdzPSItSSR7aW5jbHVkZWRpcn0iCi0gIGd0ZXN0X2N4eGZsYWdzPSJAUFRIUkVBRF9DRkxBR1NA
IgotZmkKLQotIyBEbyBhbiBpbnN0YWxsYXRpb24gcXVlcnkgaWYgcmVxdWVzdGVkLgotaWYgdGVz
dCAtbiAiJGRvX3F1ZXJ5IjsgdGhlbgotICBjYXNlICRkb19xdWVyeSBpbgotICAgIHByZWZpeCkg
ICAgICAgICAgIGVjaG8gJHByZWZpeDsgICAgICAgZXhpdCAwOzsKLSAgICBleGVjLXByZWZpeCkg
ICAgICBlY2hvICRleGVjX3ByZWZpeDsgIGV4aXQgMDs7Ci0gICAgbGliZGlyKSAgICAgICAgICAg
ZWNobyAkbGliZGlyOyAgICAgICBleGl0IDA7OwotICAgIGluY2x1ZGVkaXIpICAgICAgIGVjaG8g
JGluY2x1ZGVkaXI7ICAgZXhpdCAwOzsKLSAgICB2ZXJzaW9uKSAgICAgICAgICBlY2hvICR2ZXJz
aW9uOyAgICAgIGV4aXQgMDs7Ci0gICAgKikgICAgICAgICAgICAgICAgc2hvd191c2FnZTsgICAg
ICAgICBleGl0IDE7OwotICBlc2FjCi1maQotCi0jIERvIGEgdmVyc2lvbiBjaGVjayBpZiByZXF1
ZXN0ZWQuCi1pZiB0ZXN0ICIkZG9fY2hlY2tfdmVyc2lvbnMiID0gInllcyI7IHRoZW4KLSAgIyBN
YWtlIHN1cmUgd2UgZGlkbid0IHJlY2VpdmUgYSBiYWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVy
cy4KLSAgdGVzdCAiJGVjaG9fY3BwZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fY3h4ZmxhZ3MiID0gInllcyIgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fbGRmbGFncyIgPSAieWVzIiAgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLSAgdGVzdCAiJGVjaG9fbGlicyIgPSAieWVzIiAgICAgJiYgc2hvd191c2FnZSAmJiBleGl0
IDEKLQotICBpZiB0ZXN0ICIkZXhhY3RfdmVyc2lvbiIgIT0gIiI7IHRoZW4KLSAgICBjaGVja192
ZXJzaW9ucyAkZXhhY3RfdmVyc2lvbiAkZXhhY3RfdmVyc2lvbgotICAgICMgdW5yZWFjaGFibGUK
LSAgZWxzZQotICAgIGNoZWNrX3ZlcnNpb25zICR7bWluX3ZlcnNpb246LTAuMC4wfSAke21heF92
ZXJzaW9uOi05OTk5Ljk5OTkuOTk5OX0KLSAgICAjIHVucmVhY2hhYmxlCi0gIGZpCi1maQotCi0j
IERvIHRoZSBvdXRwdXQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgc28gdGhhdCB0aGVzZSBjYW4gYmUg
dXNlZCBpbi1saW5lIG9mCi0jIGEgY29tcGlsZXIgaW52b2NhdGlvbi4KLW91dHB1dD0iIgotdGVz
dCAiJGVjaG9fY3BwZmxhZ3MiID0gInllcyIgJiYgb3V0cHV0PSIkb3V0cHV0ICRndGVzdF9jcHBm
bGFncyIKLXRlc3QgIiRlY2hvX2N4eGZsYWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91dHB1dCAk
Z3Rlc3RfY3h4ZmxhZ3MiCi10ZXN0ICIkZWNob19sZGZsYWdzIiA9ICJ5ZXMiICAmJiBvdXRwdXQ9
IiRvdXRwdXQgJGd0ZXN0X2xkZmxhZ3MiCi10ZXN0ICIkZWNob19saWJzIiA9ICJ5ZXMiICAgICAm
JiBvdXRwdXQ9IiRvdXRwdXQgJGd0ZXN0X2xpYnMiCi1lY2hvICRvdXRwdXQKLQotZXhpdCAwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3B1bXAucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3Jp
cHRzL3B1bXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVlZmI2NTNjMjA3ZDFm
MWMyYWVjYzRkNjkwYmY3MzJlM2MxZDcxYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9wdW1wLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsODU1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSIiInB1bXAgdjAuMi4wIC0gUHJldHR5IFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFt
bWluZy4KLQotQSB0b29sIGZvciBwcmVwcm9jZXNzb3IgbWV0YSBwcm9ncmFtbWluZy4gIFVzZWZ1
bCBmb3IgZ2VuZXJhdGluZwotcmVwZXRpdGl2ZSBib2lsZXJwbGF0ZSBjb2RlLiAgRXNwZWNpYWxs
eSB1c2VmdWwgZm9yIHdyaXRpbmcgQysrCi1jbGFzc2VzLCBmdW5jdGlvbnMsIG1hY3JvcywgYW5k
IHRlbXBsYXRlcyB0aGF0IG5lZWQgdG8gd29yayB3aXRoCi12YXJpb3VzIG51bWJlciBvZiBhcmd1
bWVudHMuCi0KLVVTQUdFOgotICAgICAgIHB1bXAucHkgU09VUkNFX0ZJTEUKLQotRVhBTVBMRVM6
Ci0gICAgICAgcHVtcC5weSBmb28uY2MucHVtcAotICAgICAgICAgQ29udmVydHMgZm9vLmNjLnB1
bXAgdG8gZm9vLmNjLgotCi1HUkFNTUFSOgotICAgICAgIENPREUgOjo9IEFUT01JQ19DT0RFKgot
ICAgICAgIEFUT01JQ19DT0RFIDo6PSAkdmFyIElEID0gRVhQUkVTU0lPTgotICAgICAgICAgICB8
ICR2YXIgSUQgPSBbWyBDT0RFIF1dCi0gICAgICAgICAgIHwgJHJhbmdlIElEIEVYUFJFU1NJT04u
LkVYUFJFU1NJT04KLSAgICAgICAgICAgfCAkZm9yIElEIFNFUEFSQVRPUiBbWyBDT0RFIF1dCi0g
ICAgICAgICAgIHwgJCgkKQotICAgICAgICAgICB8ICRJRAotICAgICAgICAgICB8ICQoRVhQUkVT
U0lPTikKLSAgICAgICAgICAgfCAkaWYgRVhQUkVTU0lPTiBbWyBDT0RFIF1dIEVMU0VfQlJBTkNI
Ci0gICAgICAgICAgIHwgW1sgQ09ERSBdXQotICAgICAgICAgICB8IFJBV19DT0RFCi0gICAgICAg
U0VQQVJBVE9SIDo6PSBSQVdfQ09ERSB8IEVNUFRZCi0gICAgICAgRUxTRV9CUkFOQ0ggOjo9ICRl
bHNlIFtbIENPREUgXV0KLSAgICAgICAgICAgfCAkZWxpZiBFWFBSRVNTSU9OIFtbIENPREUgXV0g
RUxTRV9CUkFOQ0gKLSAgICAgICAgICAgfCBFTVBUWQotICAgICAgIEVYUFJFU1NJT04gaGFzIFB5
dGhvbiBzeW50YXguCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLQotCi1UT0tFTl9U
QUJMRSA9IFsKLSAgICAocmUuY29tcGlsZShyJ1wkdmFyXHMrJyksICckdmFyJyksCi0gICAgKHJl
LmNvbXBpbGUocidcJGVsaWZccysnKSwgJyRlbGlmJyksCi0gICAgKHJlLmNvbXBpbGUocidcJGVs
c2VccysnKSwgJyRlbHNlJyksCi0gICAgKHJlLmNvbXBpbGUocidcJGZvclxzKycpLCAnJGZvcicp
LAotICAgIChyZS5jb21waWxlKHInXCRpZlxzKycpLCAnJGlmJyksCi0gICAgKHJlLmNvbXBpbGUo
cidcJHJhbmdlXHMrJyksICckcmFuZ2UnKSwKLSAgICAocmUuY29tcGlsZShyJ1wkW19BLVphLXpd
XHcqJyksICckaWQnKSwKLSAgICAocmUuY29tcGlsZShyJ1wkXChcJFwpJyksICckKCQpJyksCi0g
ICAgKHJlLmNvbXBpbGUocidcJCcpLCAnJCcpLAotICAgIChyZS5jb21waWxlKHInXFtcW1xuPycp
LCAnW1snKSwKLSAgICAocmUuY29tcGlsZShyJ1xdXF1cbj8nKSwgJ11dJyksCi0gICAgXQotCi0K
LWNsYXNzIEN1cnNvcjoKLSAgIiIiUmVwcmVzZW50cyBhIHBvc2l0aW9uIChsaW5lIGFuZCBjb2x1
bW4pIGluIGEgdGV4dCBmaWxlLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lPS0xLCBj
b2x1bW49LTEpOgotICAgIHNlbGYubGluZSA9IGxpbmUKLSAgICBzZWxmLmNvbHVtbiA9IGNvbHVt
bgotCi0gIGRlZiBfX2VxX18oc2VsZiwgcmhzKToKLSAgICByZXR1cm4gc2VsZi5saW5lID09IHJo
cy5saW5lIGFuZCBzZWxmLmNvbHVtbiA9PSByaHMuY29sdW1uCi0KLSAgZGVmIF9fbmVfXyhzZWxm
LCByaHMpOgotICAgIHJldHVybiBub3Qgc2VsZiA9PSByaHMKLQotICBkZWYgX19sdF9fKHNlbGYs
IHJocyk6Ci0gICAgcmV0dXJuIHNlbGYubGluZSA8IHJocy5saW5lIG9yICgKLSAgICAgICAgc2Vs
Zi5saW5lID09IHJocy5saW5lIGFuZCBzZWxmLmNvbHVtbiA8IHJocy5jb2x1bW4pCi0KLSAgZGVm
IF9fbGVfXyhzZWxmLCByaHMpOgotICAgIHJldHVybiBzZWxmIDwgcmhzIG9yIHNlbGYgPT0gcmhz
Ci0KLSAgZGVmIF9fZ3RfXyhzZWxmLCByaHMpOgotICAgIHJldHVybiByaHMgPCBzZWxmCi0KLSAg
ZGVmIF9fZ2VfXyhzZWxmLCByaHMpOgotICAgIHJldHVybiByaHMgPD0gc2VsZgotCi0gIGRlZiBf
X3N0cl9fKHNlbGYpOgotICAgIGlmIHNlbGYgPT0gRW9mKCk6Ci0gICAgICByZXR1cm4gJ0VPRicK
LSAgICBlbHNlOgotICAgICAgcmV0dXJuICclcyglcyknICUgKHNlbGYubGluZSArIDEsIHNlbGYu
Y29sdW1uKQotCi0gIGRlZiBfX2FkZF9fKHNlbGYsIG9mZnNldCk6Ci0gICAgcmV0dXJuIEN1cnNv
cihzZWxmLmxpbmUsIHNlbGYuY29sdW1uICsgb2Zmc2V0KQotCi0gIGRlZiBfX3N1Yl9fKHNlbGYs
IG9mZnNldCk6Ci0gICAgcmV0dXJuIEN1cnNvcihzZWxmLmxpbmUsIHNlbGYuY29sdW1uIC0gb2Zm
c2V0KQotCi0gIGRlZiBDbG9uZShzZWxmKToKLSAgICAiIiJSZXR1cm5zIGEgY29weSBvZiBzZWxm
LiIiIgotCi0gICAgcmV0dXJuIEN1cnNvcihzZWxmLmxpbmUsIHNlbGYuY29sdW1uKQotCi0KLSMg
U3BlY2lhbCBjdXJzb3IgdG8gaW5kaWNhdGUgdGhlIGVuZC1vZi1maWxlLgotZGVmIEVvZigpOgot
ICAiIiJSZXR1cm5zIHRoZSBzcGVjaWFsIGN1cnNvciB0byBkZW5vdGUgdGhlIGVuZC1vZi1maWxl
LiIiIgotICByZXR1cm4gQ3Vyc29yKC0xLCAtMSkKLQotCi1jbGFzcyBUb2tlbjoKLSAgIiIiUmVw
cmVzZW50cyBhIHRva2VuIGluIGEgUHVtcCBzb3VyY2UgZmlsZS4iIiIKLQotICBkZWYgX19pbml0
X18oc2VsZiwgc3RhcnQ9Tm9uZSwgZW5kPU5vbmUsIHZhbHVlPU5vbmUsIHRva2VuX3R5cGU9Tm9u
ZSk6Ci0gICAgaWYgc3RhcnQgaXMgTm9uZToKLSAgICAgIHNlbGYuc3RhcnQgPSBFb2YoKQotICAg
IGVsc2U6Ci0gICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKLSAgICBpZiBlbmQgaXMgTm9uZToKLSAg
ICAgIHNlbGYuZW5kID0gRW9mKCkKLSAgICBlbHNlOgotICAgICAgc2VsZi5lbmQgPSBlbmQKLSAg
ICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCi0K
LSAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgcmV0dXJuICdUb2tlbiBAJXM6IFwnJXNcJyB0eXBl
PSVzJyAlICgKLSAgICAgICAgc2VsZi5zdGFydCwgc2VsZi52YWx1ZSwgc2VsZi50b2tlbl90eXBl
KQotCi0gIGRlZiBDbG9uZShzZWxmKToKLSAgICAiIiJSZXR1cm5zIGEgY29weSBvZiBzZWxmLiIi
IgotCi0gICAgcmV0dXJuIFRva2VuKHNlbGYuc3RhcnQuQ2xvbmUoKSwgc2VsZi5lbmQuQ2xvbmUo
KSwgc2VsZi52YWx1ZSwKLSAgICAgICAgICAgICAgICAgc2VsZi50b2tlbl90eXBlKQotCi0KLWRl
ZiBTdGFydHNXaXRoKGxpbmVzLCBwb3MsIHN0cmluZyk6Ci0gICIiIlJldHVybnMgVHJ1ZSBpZmYg
dGhlIGdpdmVuIHBvc2l0aW9uIGluIGxpbmVzIHN0YXJ0cyB3aXRoICdzdHJpbmcnLiIiIgotCi0g
IHJldHVybiBsaW5lc1twb3MubGluZV1bcG9zLmNvbHVtbjpdLnN0YXJ0c3dpdGgoc3RyaW5nKQot
Ci0KLWRlZiBGaW5kRmlyc3RJbkxpbmUobGluZSwgdG9rZW5fdGFibGUpOgotICBiZXN0X21hdGNo
X3N0YXJ0ID0gLTEKLSAgZm9yIChyZWdleCwgdG9rZW5fdHlwZSkgaW4gdG9rZW5fdGFibGU6Ci0g
ICAgbSA9IHJlZ2V4LnNlYXJjaChsaW5lKQotICAgIGlmIG06Ci0gICAgICAjIFdlIGZvdW5kIHJl
Z2V4IGluIGxpbmVzCi0gICAgICBpZiBiZXN0X21hdGNoX3N0YXJ0IDwgMCBvciBtLnN0YXJ0KCkg
PCBiZXN0X21hdGNoX3N0YXJ0OgotICAgICAgICBiZXN0X21hdGNoX3N0YXJ0ID0gbS5zdGFydCgp
Ci0gICAgICAgIGJlc3RfbWF0Y2hfbGVuZ3RoID0gbS5lbmQoKSAtIG0uc3RhcnQoKQotICAgICAg
ICBiZXN0X21hdGNoX3Rva2VuX3R5cGUgPSB0b2tlbl90eXBlCi0KLSAgaWYgYmVzdF9tYXRjaF9z
dGFydCA8IDA6Ci0gICAgcmV0dXJuIE5vbmUKLQotICByZXR1cm4gKGJlc3RfbWF0Y2hfc3RhcnQs
IGJlc3RfbWF0Y2hfbGVuZ3RoLCBiZXN0X21hdGNoX3Rva2VuX3R5cGUpCi0KLQotZGVmIEZpbmRG
aXJzdChsaW5lcywgdG9rZW5fdGFibGUsIGN1cnNvcik6Ci0gICIiIkZpbmRzIHRoZSBmaXJzdCBv
Y2N1cnJlbmNlIG9mIGFueSBzdHJpbmcgaW4gc3RyaW5ncyBpbiBsaW5lcy4iIiIKLQotICBzdGFy
dCA9IGN1cnNvci5DbG9uZSgpCi0gIGN1cl9saW5lX251bWJlciA9IGN1cnNvci5saW5lCi0gIGZv
ciBsaW5lIGluIGxpbmVzW3N0YXJ0LmxpbmU6XToKLSAgICBpZiBjdXJfbGluZV9udW1iZXIgPT0g
c3RhcnQubGluZToKLSAgICAgIGxpbmUgPSBsaW5lW3N0YXJ0LmNvbHVtbjpdCi0gICAgbSA9IEZp
bmRGaXJzdEluTGluZShsaW5lLCB0b2tlbl90YWJsZSkKLSAgICBpZiBtOgotICAgICAgIyBXZSBm
b3VuZCBhIHJlZ2V4IGluIGxpbmUuCi0gICAgICAoc3RhcnRfY29sdW1uLCBsZW5ndGgsIHRva2Vu
X3R5cGUpID0gbQotICAgICAgaWYgY3VyX2xpbmVfbnVtYmVyID09IHN0YXJ0LmxpbmU6Ci0gICAg
ICAgIHN0YXJ0X2NvbHVtbiArPSBzdGFydC5jb2x1bW4KLSAgICAgIGZvdW5kX3N0YXJ0ID0gQ3Vy
c29yKGN1cl9saW5lX251bWJlciwgc3RhcnRfY29sdW1uKQotICAgICAgZm91bmRfZW5kID0gZm91
bmRfc3RhcnQgKyBsZW5ndGgKLSAgICAgIHJldHVybiBNYWtlVG9rZW4obGluZXMsIGZvdW5kX3N0
YXJ0LCBmb3VuZF9lbmQsIHRva2VuX3R5cGUpCi0gICAgY3VyX2xpbmVfbnVtYmVyICs9IDEKLSAg
IyBXZSBmYWlsZWQgdG8gZmluZCBzdHIgaW4gbGluZXMKLSAgcmV0dXJuIE5vbmUKLQotCi1kZWYg
U3ViU3RyaW5nKGxpbmVzLCBzdGFydCwgZW5kKToKLSAgIiIiUmV0dXJucyBhIHN1YnN0cmluZyBp
biBsaW5lcy4iIiIKLQotICBpZiBlbmQgPT0gRW9mKCk6Ci0gICAgZW5kID0gQ3Vyc29yKGxlbihs
aW5lcykgLSAxLCBsZW4obGluZXNbLTFdKSkKLQotICBpZiBzdGFydCA+PSBlbmQ6Ci0gICAgcmV0
dXJuICcnCi0KLSAgaWYgc3RhcnQubGluZSA9PSBlbmQubGluZToKLSAgICByZXR1cm4gbGluZXNb
c3RhcnQubGluZV1bc3RhcnQuY29sdW1uOmVuZC5jb2x1bW5dCi0KLSAgcmVzdWx0X2xpbmVzID0g
KFtsaW5lc1tzdGFydC5saW5lXVtzdGFydC5jb2x1bW46XV0gKwotICAgICAgICAgICAgICAgICAg
bGluZXNbc3RhcnQubGluZSArIDE6ZW5kLmxpbmVdICsKLSAgICAgICAgICAgICAgICAgIFtsaW5l
c1tlbmQubGluZV1bOmVuZC5jb2x1bW5dXSkKLSAgcmV0dXJuICcnLmpvaW4ocmVzdWx0X2xpbmVz
KQotCi0KLWRlZiBTdHJpcE1ldGFDb21tZW50cyhzdHIpOgotICAiIiJTdHJpcCBtZXRhIGNvbW1l
bnRzIGZyb20gZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCi0KLSAgIyBGaXJzdCwg
Y29tcGxldGVseSByZW1vdmUgbGluZXMgY29udGFpbmluZyBub3RoaW5nIGJ1dCBhIG1ldGEKLSAg
IyBjb21tZW50LCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIFxuLgotICBzdHIgPSByZS5zdWIocide
XHMqXCRcJC4qXG4nLCAnJywgc3RyKQotCi0gICMgVGhlbiwgcmVtb3ZlIG1ldGEgY29tbWVudHMg
ZnJvbSBjb250ZW50ZnVsIGxpbmVzLgotICByZXR1cm4gcmUuc3ViKHInXHMqXCRcJC4qJywgJycs
IHN0cikKLQotCi1kZWYgTWFrZVRva2VuKGxpbmVzLCBzdGFydCwgZW5kLCB0b2tlbl90eXBlKToK
LSAgIiIiQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBUb2tlbi4iIiIKLQotICByZXR1cm4gVG9r
ZW4oc3RhcnQsIGVuZCwgU3ViU3RyaW5nKGxpbmVzLCBzdGFydCwgZW5kKSwgdG9rZW5fdHlwZSkK
LQotCi1kZWYgUGFyc2VUb2tlbihsaW5lcywgcG9zLCByZWdleCwgdG9rZW5fdHlwZSk6Ci0gIGxp
bmUgPSBsaW5lc1twb3MubGluZV1bcG9zLmNvbHVtbjpdCi0gIG0gPSByZWdleC5zZWFyY2gobGlu
ZSkKLSAgaWYgbSBhbmQgbm90IG0uc3RhcnQoKToKLSAgICByZXR1cm4gTWFrZVRva2VuKGxpbmVz
LCBwb3MsIHBvcyArIG0uZW5kKCksIHRva2VuX3R5cGUpCi0gIGVsc2U6Ci0gICAgcHJpbnQgJ0VS
Uk9SOiAlcyBleHBlY3RlZCBhdCAlcy4nICUgKHRva2VuX3R5cGUsIHBvcykKLSAgICBzeXMuZXhp
dCgxKQotCi0KLUlEX1JFR0VYID0gcmUuY29tcGlsZShyJ1tfQS1aYS16XVx3KicpCi1FUV9SRUdF
WCA9IHJlLmNvbXBpbGUocic9JykKLVJFU1RfT0ZfTElORV9SRUdFWCA9IHJlLmNvbXBpbGUocicu
Kj8oPz0kfFwkXCQpJykKLU9QVElPTkFMX1dISVRFX1NQQUNFU19SRUdFWCA9IHJlLmNvbXBpbGUo
cidccyonKQotV0hJVEVfU1BBQ0VfUkVHRVggPSByZS5jb21waWxlKHInXHMnKQotRE9UX0RPVF9S
RUdFWCA9IHJlLmNvbXBpbGUocidcLlwuJykKLQotCi1kZWYgU2tpcChsaW5lcywgcG9zLCByZWdl
eCk6Ci0gIGxpbmUgPSBsaW5lc1twb3MubGluZV1bcG9zLmNvbHVtbjpdCi0gIG0gPSByZS5zZWFy
Y2gocmVnZXgsIGxpbmUpCi0gIGlmIG0gYW5kIG5vdCBtLnN0YXJ0KCk6Ci0gICAgcmV0dXJuIHBv
cyArIG0uZW5kKCkKLSAgZWxzZToKLSAgICByZXR1cm4gcG9zCi0KLQotZGVmIFNraXBVbnRpbChs
aW5lcywgcG9zLCByZWdleCwgdG9rZW5fdHlwZSk6Ci0gIGxpbmUgPSBsaW5lc1twb3MubGluZV1b
cG9zLmNvbHVtbjpdCi0gIG0gPSByZS5zZWFyY2gocmVnZXgsIGxpbmUpCi0gIGlmIG06Ci0gICAg
cmV0dXJuIHBvcyArIG0uc3RhcnQoKQotICBlbHNlOgotICAgIHByaW50ICgnRVJST1I6ICVzIGV4
cGVjdGVkIG9uIGxpbmUgJXMgYWZ0ZXIgY29sdW1uICVzLicgJQotICAgICAgICAgICAodG9rZW5f
dHlwZSwgcG9zLmxpbmUgKyAxLCBwb3MuY29sdW1uKSkKLSAgICBzeXMuZXhpdCgxKQotCi0KLWRl
ZiBQYXJzZUV4cFRva2VuSW5QYXJlbnMobGluZXMsIHBvcyk6Ci0gIGRlZiBQYXJzZUluUGFyZW5z
KHBvcyk6Ci0gICAgcG9zID0gU2tpcChsaW5lcywgcG9zLCBPUFRJT05BTF9XSElURV9TUEFDRVNf
UkVHRVgpCi0gICAgcG9zID0gU2tpcChsaW5lcywgcG9zLCByJ1woJykKLSAgICBwb3MgPSBQYXJz
ZShwb3MpCi0gICAgcG9zID0gU2tpcChsaW5lcywgcG9zLCByJ1wpJykKLSAgICByZXR1cm4gcG9z
Ci0KLSAgZGVmIFBhcnNlKHBvcyk6Ci0gICAgcG9zID0gU2tpcFVudGlsKGxpbmVzLCBwb3MsIHIn
XCh8XCknLCAnKScpCi0gICAgaWYgU3ViU3RyaW5nKGxpbmVzLCBwb3MsIHBvcyArIDEpID09ICco
JzoKLSAgICAgIHBvcyA9IFBhcnNlKHBvcyArIDEpCi0gICAgICBwb3MgPSBTa2lwKGxpbmVzLCBw
b3MsIHInXCknKQotICAgICAgcmV0dXJuIFBhcnNlKHBvcykKLSAgICBlbHNlOgotICAgICAgcmV0
dXJuIHBvcwotCi0gIHN0YXJ0ID0gcG9zLkNsb25lKCkKLSAgcG9zID0gUGFyc2VJblBhcmVucyhw
b3MpCi0gIHJldHVybiBNYWtlVG9rZW4obGluZXMsIHN0YXJ0LCBwb3MsICdleHAnKQotCi0KLWRl
ZiBSU3RyaXBOZXdMaW5lRnJvbVRva2VuKHRva2VuKToKLSAgaWYgdG9rZW4udmFsdWUuZW5kc3dp
dGgoJ1xuJyk6Ci0gICAgcmV0dXJuIFRva2VuKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQsIHRva2Vu
LnZhbHVlWzotMV0sIHRva2VuLnRva2VuX3R5cGUpCi0gIGVsc2U6Ci0gICAgcmV0dXJuIHRva2Vu
Ci0KLQotZGVmIFRva2VuaXplTGluZXMobGluZXMsIHBvcyk6Ci0gIHdoaWxlIFRydWU6Ci0gICAg
Zm91bmQgPSBGaW5kRmlyc3QobGluZXMsIFRPS0VOX1RBQkxFLCBwb3MpCi0gICAgaWYgbm90IGZv
dW5kOgotICAgICAgeWllbGQgTWFrZVRva2VuKGxpbmVzLCBwb3MsIEVvZigpLCAnY29kZScpCi0g
ICAgICByZXR1cm4KLQotICAgIGlmIGZvdW5kLnN0YXJ0ID09IHBvczoKLSAgICAgIHByZXZfdG9r
ZW4gPSBOb25lCi0gICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IE5vbmUKLSAgICBlbHNlOgot
ICAgICAgcHJldl90b2tlbiA9IE1ha2VUb2tlbihsaW5lcywgcG9zLCBmb3VuZC5zdGFydCwgJ2Nv
ZGUnKQotICAgICAgcHJldl90b2tlbl9yc3RyaXBwZWQgPSBSU3RyaXBOZXdMaW5lRnJvbVRva2Vu
KHByZXZfdG9rZW4pCi0KLSAgICBpZiBmb3VuZC50b2tlbl90eXBlID09ICckdmFyJzoKLSAgICAg
IGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgotICAgICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJp
cHBlZAotICAgICAgeWllbGQgZm91bmQKLSAgICAgIGlkX3Rva2VuID0gUGFyc2VUb2tlbihsaW5l
cywgZm91bmQuZW5kLCBJRF9SRUdFWCwgJ2lkJykKLSAgICAgIHlpZWxkIGlkX3Rva2VuCi0gICAg
ICBwb3MgPSBTa2lwKGxpbmVzLCBpZF90b2tlbi5lbmQsIE9QVElPTkFMX1dISVRFX1NQQUNFU19S
RUdFWCkKLQotICAgICAgZXFfdG9rZW4gPSBQYXJzZVRva2VuKGxpbmVzLCBwb3MsIEVRX1JFR0VY
LCAnPScpCi0gICAgICB5aWVsZCBlcV90b2tlbgotICAgICAgcG9zID0gU2tpcChsaW5lcywgZXFf
dG9rZW4uZW5kLCByJ1xzKicpCi0KLSAgICAgIGlmIFN1YlN0cmluZyhsaW5lcywgcG9zLCBwb3Mg
KyAyKSAhPSAnW1snOgotICAgICAgICBleHBfdG9rZW4gPSBQYXJzZVRva2VuKGxpbmVzLCBwb3Ms
IFJFU1RfT0ZfTElORV9SRUdFWCwgJ2V4cCcpCi0gICAgICAgIHlpZWxkIGV4cF90b2tlbgotICAg
ICAgICBwb3MgPSBDdXJzb3IoZXhwX3Rva2VuLmVuZC5saW5lICsgMSwgMCkKLSAgICBlbGlmIGZv
dW5kLnRva2VuX3R5cGUgPT0gJyRmb3InOgotICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6
Ci0gICAgICAgIHlpZWxkIHByZXZfdG9rZW5fcnN0cmlwcGVkCi0gICAgICB5aWVsZCBmb3VuZAot
ICAgICAgaWRfdG9rZW4gPSBQYXJzZVRva2VuKGxpbmVzLCBmb3VuZC5lbmQsIElEX1JFR0VYLCAn
aWQnKQotICAgICAgeWllbGQgaWRfdG9rZW4KLSAgICAgIHBvcyA9IFNraXAobGluZXMsIGlkX3Rv
a2VuLmVuZCwgV0hJVEVfU1BBQ0VfUkVHRVgpCi0gICAgZWxpZiBmb3VuZC50b2tlbl90eXBlID09
ICckcmFuZ2UnOgotICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6Ci0gICAgICAgIHlpZWxk
IHByZXZfdG9rZW5fcnN0cmlwcGVkCi0gICAgICB5aWVsZCBmb3VuZAotICAgICAgaWRfdG9rZW4g
PSBQYXJzZVRva2VuKGxpbmVzLCBmb3VuZC5lbmQsIElEX1JFR0VYLCAnaWQnKQotICAgICAgeWll
bGQgaWRfdG9rZW4KLSAgICAgIHBvcyA9IFNraXAobGluZXMsIGlkX3Rva2VuLmVuZCwgT1BUSU9O
QUxfV0hJVEVfU1BBQ0VTX1JFR0VYKQotCi0gICAgICBkb3RzX3BvcyA9IFNraXBVbnRpbChsaW5l
cywgcG9zLCBET1RfRE9UX1JFR0VYLCAnLi4nKQotICAgICAgeWllbGQgTWFrZVRva2VuKGxpbmVz
LCBwb3MsIGRvdHNfcG9zLCAnZXhwJykKLSAgICAgIHlpZWxkIE1ha2VUb2tlbihsaW5lcywgZG90
c19wb3MsIGRvdHNfcG9zICsgMiwgJy4uJykKLSAgICAgIHBvcyA9IGRvdHNfcG9zICsgMgotICAg
ICAgbmV3X3BvcyA9IEN1cnNvcihwb3MubGluZSArIDEsIDApCi0gICAgICB5aWVsZCBNYWtlVG9r
ZW4obGluZXMsIHBvcywgbmV3X3BvcywgJ2V4cCcpCi0gICAgICBwb3MgPSBuZXdfcG9zCi0gICAg
ZWxpZiBmb3VuZC50b2tlbl90eXBlID09ICckJzoKLSAgICAgIGlmIHByZXZfdG9rZW46Ci0gICAg
ICAgIHlpZWxkIHByZXZfdG9rZW4KLSAgICAgIHlpZWxkIGZvdW5kCi0gICAgICBleHBfdG9rZW4g
PSBQYXJzZUV4cFRva2VuSW5QYXJlbnMobGluZXMsIGZvdW5kLmVuZCkKLSAgICAgIHlpZWxkIGV4
cF90b2tlbgotICAgICAgcG9zID0gZXhwX3Rva2VuLmVuZAotICAgIGVsaWYgKGZvdW5kLnRva2Vu
X3R5cGUgPT0gJ11dJyBvciBmb3VuZC50b2tlbl90eXBlID09ICckaWYnIG9yCi0gICAgICAgICAg
Zm91bmQudG9rZW5fdHlwZSA9PSAnJGVsaWYnIG9yIGZvdW5kLnRva2VuX3R5cGUgPT0gJyRlbHNl
Jyk6Ci0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQgcHJldl90
b2tlbl9yc3RyaXBwZWQKLSAgICAgIHlpZWxkIGZvdW5kCi0gICAgICBwb3MgPSBmb3VuZC5lbmQK
LSAgICBlbHNlOgotICAgICAgaWYgcHJldl90b2tlbjoKLSAgICAgICAgeWllbGQgcHJldl90b2tl
bgotICAgICAgeWllbGQgZm91bmQKLSAgICAgIHBvcyA9IGZvdW5kLmVuZAotCi0KLWRlZiBUb2tl
bml6ZShzKToKLSAgIiIiQSBnZW5lcmF0b3IgdGhhdCB5aWVsZHMgdGhlIHRva2VucyBpbiB0aGUg
Z2l2ZW4gc3RyaW5nLiIiIgotICBpZiBzICE9ICcnOgotICAgIGxpbmVzID0gcy5zcGxpdGxpbmVz
KFRydWUpCi0gICAgZm9yIHRva2VuIGluIFRva2VuaXplTGluZXMobGluZXMsIEN1cnNvcigwLCAw
KSk6Ci0gICAgICB5aWVsZCB0b2tlbgotCi0KLWNsYXNzIENvZGVOb2RlOgotICBkZWYgX19pbml0
X18oc2VsZiwgYXRvbWljX2NvZGVfbGlzdD1Ob25lKToKLSAgICBzZWxmLmF0b21pY19jb2RlID0g
YXRvbWljX2NvZGVfbGlzdAotCi0KLWNsYXNzIFZhck5vZGU6Ci0gIGRlZiBfX2luaXRfXyhzZWxm
LCBpZGVudGlmaWVyPU5vbmUsIGF0b21pY19jb2RlPU5vbmUpOgotICAgIHNlbGYuaWRlbnRpZmll
ciA9IGlkZW50aWZpZXIKLSAgICBzZWxmLmF0b21pY19jb2RlID0gYXRvbWljX2NvZGUKLQotCi1j
bGFzcyBSYW5nZU5vZGU6Ci0gIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyPU5vbmUsIGV4
cDE9Tm9uZSwgZXhwMj1Ob25lKToKLSAgICBzZWxmLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyCi0g
ICAgc2VsZi5leHAxID0gZXhwMQotICAgIHNlbGYuZXhwMiA9IGV4cDIKLQotCi1jbGFzcyBGb3JO
b2RlOgotICBkZWYgX19pbml0X18oc2VsZiwgaWRlbnRpZmllcj1Ob25lLCBzZXA9Tm9uZSwgY29k
ZT1Ob25lKToKLSAgICBzZWxmLmlkZW50aWZpZXIgPSBpZGVudGlmaWVyCi0gICAgc2VsZi5zZXAg
PSBzZXAKLSAgICBzZWxmLmNvZGUgPSBjb2RlCi0KLQotY2xhc3MgRWxzZU5vZGU6Ci0gIGRlZiBf
X2luaXRfXyhzZWxmLCBlbHNlX2JyYW5jaD1Ob25lKToKLSAgICBzZWxmLmVsc2VfYnJhbmNoID0g
ZWxzZV9icmFuY2gKLQotCi1jbGFzcyBJZk5vZGU6Ci0gIGRlZiBfX2luaXRfXyhzZWxmLCBleHA9
Tm9uZSwgdGhlbl9icmFuY2g9Tm9uZSwgZWxzZV9icmFuY2g9Tm9uZSk6Ci0gICAgc2VsZi5leHAg
PSBleHAKLSAgICBzZWxmLnRoZW5fYnJhbmNoID0gdGhlbl9icmFuY2gKLSAgICBzZWxmLmVsc2Vf
YnJhbmNoID0gZWxzZV9icmFuY2gKLQotCi1jbGFzcyBSYXdDb2RlTm9kZToKLSAgZGVmIF9faW5p
dF9fKHNlbGYsIHRva2VuPU5vbmUpOgotICAgIHNlbGYucmF3X2NvZGUgPSB0b2tlbgotCi0KLWNs
YXNzIExpdGVyYWxEb2xsYXJOb2RlOgotICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4pOgotICAg
IHNlbGYudG9rZW4gPSB0b2tlbgotCi0KLWNsYXNzIEV4cE5vZGU6Ci0gIGRlZiBfX2luaXRfXyhz
ZWxmLCB0b2tlbiwgcHl0aG9uX2V4cCk6Ci0gICAgc2VsZi50b2tlbiA9IHRva2VuCi0gICAgc2Vs
Zi5weXRob25fZXhwID0gcHl0aG9uX2V4cAotCi0KLWRlZiBQb3BGcm9udChhX2xpc3QpOgotICBo
ZWFkID0gYV9saXN0WzBdCi0gIGFfbGlzdFs6MV0gPSBbXQotICByZXR1cm4gaGVhZAotCi0KLWRl
ZiBQdXNoRnJvbnQoYV9saXN0LCBlbGVtKToKLSAgYV9saXN0WzowXSA9IFtlbGVtXQotCi0KLWRl
ZiBQb3BUb2tlbihhX2xpc3QsIHRva2VuX3R5cGU9Tm9uZSk6Ci0gIHRva2VuID0gUG9wRnJvbnQo
YV9saXN0KQotICBpZiB0b2tlbl90eXBlIGlzIG5vdCBOb25lIGFuZCB0b2tlbi50b2tlbl90eXBl
ICE9IHRva2VuX3R5cGU6Ci0gICAgcHJpbnQgJ0VSUk9SOiAlcyBleHBlY3RlZCBhdCAlcycgJSAo
dG9rZW5fdHlwZSwgdG9rZW4uc3RhcnQpCi0gICAgcHJpbnQgJ0VSUk9SOiAlcyBmb3VuZCBpbnN0
ZWFkJyAlICh0b2tlbiwpCi0gICAgc3lzLmV4aXQoMSkKLQotICByZXR1cm4gdG9rZW4KLQotCi1k
ZWYgUGVla1Rva2VuKGFfbGlzdCk6Ci0gIGlmIG5vdCBhX2xpc3Q6Ci0gICAgcmV0dXJuIE5vbmUK
LQotICByZXR1cm4gYV9saXN0WzBdCi0KLQotZGVmIFBhcnNlRXhwTm9kZSh0b2tlbik6Ci0gIHB5
dGhvbl9leHAgPSByZS5zdWIocicoW19BLVphLXpdXHcqKScsIHInc2VsZi5HZXRWYWx1ZSgiXDEi
KScsIHRva2VuLnZhbHVlKQotICByZXR1cm4gRXhwTm9kZSh0b2tlbiwgcHl0aG9uX2V4cCkKLQot
Ci1kZWYgUGFyc2VFbHNlTm9kZSh0b2tlbnMpOgotICBkZWYgUG9wKHRva2VuX3R5cGU9Tm9uZSk6
Ci0gICAgcmV0dXJuIFBvcFRva2VuKHRva2VucywgdG9rZW5fdHlwZSkKLQotICBuZXh0ID0gUGVl
a1Rva2VuKHRva2VucykKLSAgaWYgbm90IG5leHQ6Ci0gICAgcmV0dXJuIE5vbmUKLSAgaWYgbmV4
dC50b2tlbl90eXBlID09ICckZWxzZSc6Ci0gICAgUG9wKCckZWxzZScpCi0gICAgUG9wKCdbWycp
Ci0gICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCi0gICAgUG9wKCddXScpCi0g
ICAgcmV0dXJuIGNvZGVfbm9kZQotICBlbGlmIG5leHQudG9rZW5fdHlwZSA9PSAnJGVsaWYnOgot
ICAgIFBvcCgnJGVsaWYnKQotICAgIGV4cCA9IFBvcCgnY29kZScpCi0gICAgUG9wKCdbWycpCi0g
ICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCi0gICAgUG9wKCddXScpCi0gICAg
aW5uZXJfZWxzZV9ub2RlID0gUGFyc2VFbHNlTm9kZSh0b2tlbnMpCi0gICAgcmV0dXJuIENvZGVO
b2RlKFtJZk5vZGUoUGFyc2VFeHBOb2RlKGV4cCksIGNvZGVfbm9kZSwgaW5uZXJfZWxzZV9ub2Rl
KV0pCi0gIGVsaWYgbm90IG5leHQudmFsdWUuc3RyaXAoKToKLSAgICBQb3AoJ2NvZGUnKQotICAg
IHJldHVybiBQYXJzZUVsc2VOb2RlKHRva2VucykKLSAgZWxzZToKLSAgICByZXR1cm4gTm9uZQot
Ci0KLWRlZiBQYXJzZUF0b21pY0NvZGVOb2RlKHRva2Vucyk6Ci0gIGRlZiBQb3AodG9rZW5fdHlw
ZT1Ob25lKToKLSAgICByZXR1cm4gUG9wVG9rZW4odG9rZW5zLCB0b2tlbl90eXBlKQotCi0gIGhl
YWQgPSBQb3BGcm9udCh0b2tlbnMpCi0gIHQgPSBoZWFkLnRva2VuX3R5cGUKLSAgaWYgdCA9PSAn
Y29kZSc6Ci0gICAgcmV0dXJuIFJhd0NvZGVOb2RlKGhlYWQpCi0gIGVsaWYgdCA9PSAnJHZhcic6
Ci0gICAgaWRfdG9rZW4gPSBQb3AoJ2lkJykKLSAgICBQb3AoJz0nKQotICAgIG5leHQgPSBQZWVr
VG9rZW4odG9rZW5zKQotICAgIGlmIG5leHQudG9rZW5fdHlwZSA9PSAnZXhwJzoKLSAgICAgIGV4
cF90b2tlbiA9IFBvcCgpCi0gICAgICByZXR1cm4gVmFyTm9kZShpZF90b2tlbiwgUGFyc2VFeHBO
b2RlKGV4cF90b2tlbikpCi0gICAgUG9wKCdbWycpCi0gICAgY29kZV9ub2RlID0gUGFyc2VDb2Rl
Tm9kZSh0b2tlbnMpCi0gICAgUG9wKCddXScpCi0gICAgcmV0dXJuIFZhck5vZGUoaWRfdG9rZW4s
IGNvZGVfbm9kZSkKLSAgZWxpZiB0ID09ICckZm9yJzoKLSAgICBpZF90b2tlbiA9IFBvcCgnaWQn
KQotICAgIG5leHRfdG9rZW4gPSBQZWVrVG9rZW4odG9rZW5zKQotICAgIGlmIG5leHRfdG9rZW4u
dG9rZW5fdHlwZSA9PSAnY29kZSc6Ci0gICAgICBzZXBfdG9rZW4gPSBuZXh0X3Rva2VuCi0gICAg
ICBQb3AoJ2NvZGUnKQotICAgIGVsc2U6Ci0gICAgICBzZXBfdG9rZW4gPSBOb25lCi0gICAgUG9w
KCdbWycpCi0gICAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9kZSh0b2tlbnMpCi0gICAgUG9wKCdd
XScpCi0gICAgcmV0dXJuIEZvck5vZGUoaWRfdG9rZW4sIHNlcF90b2tlbiwgY29kZV9ub2RlKQot
ICBlbGlmIHQgPT0gJyRpZic6Ci0gICAgZXhwX3Rva2VuID0gUG9wKCdjb2RlJykKLSAgICBQb3Ao
J1tbJykKLSAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykKLSAgICBQb3AoJ11d
JykKLSAgICBlbHNlX25vZGUgPSBQYXJzZUVsc2VOb2RlKHRva2VucykKLSAgICByZXR1cm4gSWZO
b2RlKFBhcnNlRXhwTm9kZShleHBfdG9rZW4pLCBjb2RlX25vZGUsIGVsc2Vfbm9kZSkKLSAgZWxp
ZiB0ID09ICckcmFuZ2UnOgotICAgIGlkX3Rva2VuID0gUG9wKCdpZCcpCi0gICAgZXhwMV90b2tl
biA9IFBvcCgnZXhwJykKLSAgICBQb3AoJy4uJykKLSAgICBleHAyX3Rva2VuID0gUG9wKCdleHAn
KQotICAgIHJldHVybiBSYW5nZU5vZGUoaWRfdG9rZW4sIFBhcnNlRXhwTm9kZShleHAxX3Rva2Vu
KSwKLSAgICAgICAgICAgICAgICAgICAgIFBhcnNlRXhwTm9kZShleHAyX3Rva2VuKSkKLSAgZWxp
ZiB0ID09ICckaWQnOgotICAgIHJldHVybiBQYXJzZUV4cE5vZGUoVG9rZW4oaGVhZC5zdGFydCAr
IDEsIGhlYWQuZW5kLCBoZWFkLnZhbHVlWzE6XSwgJ2lkJykpCi0gIGVsaWYgdCA9PSAnJCgkKSc6
Ci0gICAgcmV0dXJuIExpdGVyYWxEb2xsYXJOb2RlKGhlYWQpCi0gIGVsaWYgdCA9PSAnJCc6Ci0g
ICAgZXhwX3Rva2VuID0gUG9wKCdleHAnKQotICAgIHJldHVybiBQYXJzZUV4cE5vZGUoZXhwX3Rv
a2VuKQotICBlbGlmIHQgPT0gJ1tbJzoKLSAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRv
a2VucykKLSAgICBQb3AoJ11dJykKLSAgICByZXR1cm4gY29kZV9ub2RlCi0gIGVsc2U6Ci0gICAg
UHVzaEZyb250KHRva2VucywgaGVhZCkKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBQYXJzZUNv
ZGVOb2RlKHRva2Vucyk6Ci0gIGF0b21pY19jb2RlX2xpc3QgPSBbXQotICB3aGlsZSBUcnVlOgot
ICAgIGlmIG5vdCB0b2tlbnM6Ci0gICAgICBicmVhawotICAgIGF0b21pY19jb2RlX25vZGUgPSBQ
YXJzZUF0b21pY0NvZGVOb2RlKHRva2VucykKLSAgICBpZiBhdG9taWNfY29kZV9ub2RlOgotICAg
ICAgYXRvbWljX2NvZGVfbGlzdC5hcHBlbmQoYXRvbWljX2NvZGVfbm9kZSkKLSAgICBlbHNlOgot
ICAgICAgYnJlYWsKLSAgcmV0dXJuIENvZGVOb2RlKGF0b21pY19jb2RlX2xpc3QpCi0KLQotZGVm
IFBhcnNlVG9BU1QocHVtcF9zcmNfdGV4dCk6Ci0gICIiIkNvbnZlcnQgdGhlIGdpdmVuIFB1bXAg
c291cmNlIHRleHQgaW50byBhbiBBU1QuIiIiCi0gIHRva2VucyA9IGxpc3QoVG9rZW5pemUocHVt
cF9zcmNfdGV4dCkpCi0gIGNvZGVfbm9kZSA9IFBhcnNlQ29kZU5vZGUodG9rZW5zKQotICByZXR1
cm4gY29kZV9ub2RlCi0KLQotY2xhc3MgRW52OgotICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
c2VsZi52YXJpYWJsZXMgPSBbXQotICAgIHNlbGYucmFuZ2VzID0gW10KLQotICBkZWYgQ2xvbmUo
c2VsZik6Ci0gICAgY2xvbmUgPSBFbnYoKQotICAgIGNsb25lLnZhcmlhYmxlcyA9IHNlbGYudmFy
aWFibGVzWzpdCi0gICAgY2xvbmUucmFuZ2VzID0gc2VsZi5yYW5nZXNbOl0KLSAgICByZXR1cm4g
Y2xvbmUKLQotICBkZWYgUHVzaFZhcmlhYmxlKHNlbGYsIHZhciwgdmFsdWUpOgotICAgICMgSWYg
dmFsdWUgbG9va3MgbGlrZSBhbiBpbnQsIHN0b3JlIGl0IGFzIGFuIGludC4KLSAgICB0cnk6Ci0g
ICAgICBpbnRfdmFsdWUgPSBpbnQodmFsdWUpCi0gICAgICBpZiAoJyVzJyAlIGludF92YWx1ZSkg
PT0gdmFsdWU6Ci0gICAgICAgIHZhbHVlID0gaW50X3ZhbHVlCi0gICAgZXhjZXB0IEV4Y2VwdGlv
bjoKLSAgICAgIHBhc3MKLSAgICBzZWxmLnZhcmlhYmxlc1s6MF0gPSBbKHZhciwgdmFsdWUpXQot
Ci0gIGRlZiBQb3BWYXJpYWJsZShzZWxmKToKLSAgICBzZWxmLnZhcmlhYmxlc1s6MV0gPSBbXQot
Ci0gIGRlZiBQdXNoUmFuZ2Uoc2VsZiwgdmFyLCBsb3dlciwgdXBwZXIpOgotICAgIHNlbGYucmFu
Z2VzWzowXSA9IFsodmFyLCBsb3dlciwgdXBwZXIpXQotCi0gIGRlZiBQb3BSYW5nZShzZWxmKToK
LSAgICBzZWxmLnJhbmdlc1s6MV0gPSBbXQotCi0gIGRlZiBHZXRWYWx1ZShzZWxmLCBpZGVudGlm
aWVyKToKLSAgICBmb3IgKHZhciwgdmFsdWUpIGluIHNlbGYudmFyaWFibGVzOgotICAgICAgaWYg
aWRlbnRpZmllciA9PSB2YXI6Ci0gICAgICAgIHJldHVybiB2YWx1ZQotCi0gICAgcHJpbnQgJ0VS
Uk9SOiBtZXRhIHZhcmlhYmxlICVzIGlzIHVuZGVmaW5lZC4nICUgKGlkZW50aWZpZXIsKQotICAg
IHN5cy5leGl0KDEpCi0KLSAgZGVmIEV2YWxFeHAoc2VsZiwgZXhwKToKLSAgICB0cnk6Ci0gICAg
ICByZXN1bHQgPSBldmFsKGV4cC5weXRob25fZXhwKQotICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
Ci0gICAgICBwcmludCAnRVJST1I6IGNhdWdodCBleGNlcHRpb24gJXM6ICVzJyAlIChlLl9fY2xh
c3NfXy5fX25hbWVfXywgZSkKLSAgICAgIHByaW50ICgnRVJST1I6IGZhaWxlZCB0byBldmFsdWF0
ZSBtZXRhIGV4cHJlc3Npb24gJXMgYXQgJXMnICUKLSAgICAgICAgICAgICAoZXhwLnB5dGhvbl9l
eHAsIGV4cC50b2tlbi5zdGFydCkpCi0gICAgICBzeXMuZXhpdCgxKQotICAgIHJldHVybiByZXN1
bHQKLQotICBkZWYgR2V0UmFuZ2Uoc2VsZiwgaWRlbnRpZmllcik6Ci0gICAgZm9yICh2YXIsIGxv
d2VyLCB1cHBlcikgaW4gc2VsZi5yYW5nZXM6Ci0gICAgICBpZiBpZGVudGlmaWVyID09IHZhcjoK
LSAgICAgICAgcmV0dXJuIChsb3dlciwgdXBwZXIpCi0KLSAgICBwcmludCAnRVJST1I6IHJhbmdl
ICVzIGlzIHVuZGVmaW5lZC4nICUgKGlkZW50aWZpZXIsKQotICAgIHN5cy5leGl0KDEpCi0KLQot
Y2xhc3MgT3V0cHV0OgotICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgc2VsZi5zdHJpbmcgPSAn
JwotCi0gIGRlZiBHZXRMYXN0TGluZShzZWxmKToKLSAgICBpbmRleCA9IHNlbGYuc3RyaW5nLnJm
aW5kKCdcbicpCi0gICAgaWYgaW5kZXggPCAwOgotICAgICAgcmV0dXJuICcnCi0KLSAgICByZXR1
cm4gc2VsZi5zdHJpbmdbaW5kZXggKyAxOl0KLQotICBkZWYgQXBwZW5kKHNlbGYsIHMpOgotICAg
IHNlbGYuc3RyaW5nICs9IHMKLQotCi1kZWYgUnVuQXRvbWljQ29kZShlbnYsIG5vZGUsIG91dHB1
dCk6Ci0gIGlmIGlzaW5zdGFuY2Uobm9kZSwgVmFyTm9kZSk6Ci0gICAgaWRlbnRpZmllciA9IG5v
ZGUuaWRlbnRpZmllci52YWx1ZS5zdHJpcCgpCi0gICAgcmVzdWx0ID0gT3V0cHV0KCkKLSAgICBS
dW5BdG9taWNDb2RlKGVudi5DbG9uZSgpLCBub2RlLmF0b21pY19jb2RlLCByZXN1bHQpCi0gICAg
dmFsdWUgPSByZXN1bHQuc3RyaW5nCi0gICAgZW52LlB1c2hWYXJpYWJsZShpZGVudGlmaWVyLCB2
YWx1ZSkKLSAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFJhbmdlTm9kZSk6Ci0gICAgaWRlbnRpZmll
ciA9IG5vZGUuaWRlbnRpZmllci52YWx1ZS5zdHJpcCgpCi0gICAgbG93ZXIgPSBpbnQoZW52LkV2
YWxFeHAobm9kZS5leHAxKSkKLSAgICB1cHBlciA9IGludChlbnYuRXZhbEV4cChub2RlLmV4cDIp
KQotICAgIGVudi5QdXNoUmFuZ2UoaWRlbnRpZmllciwgbG93ZXIsIHVwcGVyKQotICBlbGlmIGlz
aW5zdGFuY2Uobm9kZSwgRm9yTm9kZSk6Ci0gICAgaWRlbnRpZmllciA9IG5vZGUuaWRlbnRpZmll
ci52YWx1ZS5zdHJpcCgpCi0gICAgaWYgbm9kZS5zZXAgaXMgTm9uZToKLSAgICAgIHNlcCA9ICcn
Ci0gICAgZWxzZToKLSAgICAgIHNlcCA9IG5vZGUuc2VwLnZhbHVlCi0gICAgKGxvd2VyLCB1cHBl
cikgPSBlbnYuR2V0UmFuZ2UoaWRlbnRpZmllcikKLSAgICBmb3IgaSBpbiByYW5nZShsb3dlciwg
dXBwZXIgKyAxKToKLSAgICAgIG5ld19lbnYgPSBlbnYuQ2xvbmUoKQotICAgICAgbmV3X2Vudi5Q
dXNoVmFyaWFibGUoaWRlbnRpZmllciwgaSkKLSAgICAgIFJ1bkNvZGUobmV3X2Vudiwgbm9kZS5j
b2RlLCBvdXRwdXQpCi0gICAgICBpZiBpICE9IHVwcGVyOgotICAgICAgICBvdXRwdXQuQXBwZW5k
KHNlcCkKLSAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFJhd0NvZGVOb2RlKToKLSAgICBvdXRwdXQu
QXBwZW5kKG5vZGUucmF3X2NvZGUudmFsdWUpCi0gIGVsaWYgaXNpbnN0YW5jZShub2RlLCBJZk5v
ZGUpOgotICAgIGNvbmQgPSBlbnYuRXZhbEV4cChub2RlLmV4cCkKLSAgICBpZiBjb25kOgotICAg
ICAgUnVuQ29kZShlbnYuQ2xvbmUoKSwgbm9kZS50aGVuX2JyYW5jaCwgb3V0cHV0KQotICAgIGVs
aWYgbm9kZS5lbHNlX2JyYW5jaCBpcyBub3QgTm9uZToKLSAgICAgIFJ1bkNvZGUoZW52LkNsb25l
KCksIG5vZGUuZWxzZV9icmFuY2gsIG91dHB1dCkKLSAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEV4
cE5vZGUpOgotICAgIHZhbHVlID0gZW52LkV2YWxFeHAobm9kZSkKLSAgICBvdXRwdXQuQXBwZW5k
KCclcycgJSAodmFsdWUsKSkKLSAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIExpdGVyYWxEb2xsYXJO
b2RlKToKLSAgICBvdXRwdXQuQXBwZW5kKCckJykKLSAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIENv
ZGVOb2RlKToKLSAgICBSdW5Db2RlKGVudi5DbG9uZSgpLCBub2RlLCBvdXRwdXQpCi0gIGVsc2U6
Ci0gICAgcHJpbnQgJ0JBRCcKLSAgICBwcmludCBub2RlCi0gICAgc3lzLmV4aXQoMSkKLQotCi1k
ZWYgUnVuQ29kZShlbnYsIGNvZGVfbm9kZSwgb3V0cHV0KToKLSAgZm9yIGF0b21pY19jb2RlIGlu
IGNvZGVfbm9kZS5hdG9taWNfY29kZToKLSAgICBSdW5BdG9taWNDb2RlKGVudiwgYXRvbWljX2Nv
ZGUsIG91dHB1dCkKLQotCi1kZWYgSXNTaW5nbGVMaW5lQ29tbWVudChjdXJfbGluZSk6Ci0gIHJl
dHVybiAnLy8nIGluIGN1cl9saW5lCi0KLQotZGVmIElzSW5QcmVwcm9jZXNzb3JEaXJlY3RpdmUo
cHJldl9saW5lcywgY3VyX2xpbmUpOgotICBpZiBjdXJfbGluZS5sc3RyaXAoKS5zdGFydHN3aXRo
KCcjJyk6Ci0gICAgcmV0dXJuIFRydWUKLSAgcmV0dXJuIHByZXZfbGluZXMgYW5kIHByZXZfbGlu
ZXNbLTFdLmVuZHN3aXRoKCdcXCcpCi0KLQotZGVmIFdyYXBDb21tZW50KGxpbmUsIG91dHB1dCk6
Ci0gIGxvYyA9IGxpbmUuZmluZCgnLy8nKQotICBiZWZvcmVfY29tbWVudCA9IGxpbmVbOmxvY10u
cnN0cmlwKCkKLSAgaWYgYmVmb3JlX2NvbW1lbnQgPT0gJyc6Ci0gICAgaW5kZW50ID0gbG9jCi0g
IGVsc2U6Ci0gICAgb3V0cHV0LmFwcGVuZChiZWZvcmVfY29tbWVudCkKLSAgICBpbmRlbnQgPSBs
ZW4oYmVmb3JlX2NvbW1lbnQpIC0gbGVuKGJlZm9yZV9jb21tZW50LmxzdHJpcCgpKQotICBwcmVm
aXggPSBpbmRlbnQqJyAnICsgJy8vICcKLSAgbWF4X2xlbiA9IDgwIC0gbGVuKHByZWZpeCkKLSAg
Y29tbWVudCA9IGxpbmVbbG9jICsgMjpdLnN0cmlwKCkKLSAgc2VncyA9IFtzZWcgZm9yIHNlZyBp
biByZS5zcGxpdChyJyhcdytcVyopJywgY29tbWVudCkgaWYgc2VnICE9ICcnXQotICBjdXJfbGlu
ZSA9ICcnCi0gIGZvciBzZWcgaW4gc2VnczoKLSAgICBpZiBsZW4oKGN1cl9saW5lICsgc2VnKS5y
c3RyaXAoKSkgPCBtYXhfbGVuOgotICAgICAgY3VyX2xpbmUgKz0gc2VnCi0gICAgZWxzZToKLSAg
ICAgIGlmIGN1cl9saW5lLnN0cmlwKCkgIT0gJyc6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQocHJl
Zml4ICsgY3VyX2xpbmUucnN0cmlwKCkpCi0gICAgICBjdXJfbGluZSA9IHNlZy5sc3RyaXAoKQot
ICBpZiBjdXJfbGluZS5zdHJpcCgpICE9ICcnOgotICAgIG91dHB1dC5hcHBlbmQocHJlZml4ICsg
Y3VyX2xpbmUuc3RyaXAoKSkKLQotCi1kZWYgV3JhcENvZGUobGluZSwgbGluZV9jb25jYXQsIG91
dHB1dCk6Ci0gIGluZGVudCA9IGxlbihsaW5lKSAtIGxlbihsaW5lLmxzdHJpcCgpKQotICBwcmVm
aXggPSBpbmRlbnQqJyAnICAjIFByZWZpeCBvZiB0aGUgY3VycmVudCBsaW5lCi0gIG1heF9sZW4g
PSA4MCAtIGluZGVudCAtIGxlbihsaW5lX2NvbmNhdCkgICMgTWF4aW11bSBsZW5ndGggb2YgdGhl
IGN1cnJlbnQgbGluZQotICBuZXdfcHJlZml4ID0gcHJlZml4ICsgNConICcgICMgUHJlZml4IG9m
IGEgY29udGludWF0aW9uIGxpbmUKLSAgbmV3X21heF9sZW4gPSBtYXhfbGVuIC0gNCAgIyBNYXhp
bXVtIGxlbmd0aCBvZiBhIGNvbnRpbnVhdGlvbiBsaW5lCi0gICMgUHJlZmVycyB0byB3cmFwIGEg
bGluZSBhZnRlciBhICcsJyBvciAnOycuCi0gIHNlZ3MgPSBbc2VnIGZvciBzZWcgaW4gcmUuc3Bs
aXQocicoW14sO10rWyw7XT8pJywgbGluZS5zdHJpcCgpKSBpZiBzZWcgIT0gJyddCi0gIGN1cl9s
aW5lID0gJycgICMgVGhlIGN1cnJlbnQgbGluZSB3aXRob3V0IGxlYWRpbmcgc3BhY2VzLgotICBm
b3Igc2VnIGluIHNlZ3M6Ci0gICAgIyBJZiB0aGUgbGluZSBpcyBzdGlsbCB0b28gbG9uZywgd3Jh
cCBhdCBhIHNwYWNlLgotICAgIHdoaWxlIGN1cl9saW5lID09ICcnIGFuZCBsZW4oc2VnLnN0cmlw
KCkpID4gbWF4X2xlbjoKLSAgICAgIHNlZyA9IHNlZy5sc3RyaXAoKQotICAgICAgc3BsaXRfYXQg
PSBzZWcucmZpbmQoJyAnLCAwLCBtYXhfbGVuKQotICAgICAgb3V0cHV0LmFwcGVuZChwcmVmaXgg
KyBzZWdbOnNwbGl0X2F0XS5zdHJpcCgpICsgbGluZV9jb25jYXQpCi0gICAgICBzZWcgPSBzZWdb
c3BsaXRfYXQgKyAxOl0KLSAgICAgIHByZWZpeCA9IG5ld19wcmVmaXgKLSAgICAgIG1heF9sZW4g
PSBuZXdfbWF4X2xlbgotCi0gICAgaWYgbGVuKChjdXJfbGluZSArIHNlZykucnN0cmlwKCkpIDwg
bWF4X2xlbjoKLSAgICAgIGN1cl9saW5lID0gKGN1cl9saW5lICsgc2VnKS5sc3RyaXAoKQotICAg
IGVsc2U6Ci0gICAgICBvdXRwdXQuYXBwZW5kKHByZWZpeCArIGN1cl9saW5lLnJzdHJpcCgpICsg
bGluZV9jb25jYXQpCi0gICAgICBwcmVmaXggPSBuZXdfcHJlZml4Ci0gICAgICBtYXhfbGVuID0g
bmV3X21heF9sZW4KLSAgICAgIGN1cl9saW5lID0gc2VnLmxzdHJpcCgpCi0gIGlmIGN1cl9saW5l
LnN0cmlwKCkgIT0gJyc6Ci0gICAgb3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJp
cCgpKQotCi0KLWRlZiBXcmFwUHJlcHJvY2Vzc29yRGlyZWN0aXZlKGxpbmUsIG91dHB1dCk6Ci0g
IFdyYXBDb2RlKGxpbmUsICcgXFwnLCBvdXRwdXQpCi0KLQotZGVmIFdyYXBQbGFpbkNvZGUobGlu
ZSwgb3V0cHV0KToKLSAgV3JhcENvZGUobGluZSwgJycsIG91dHB1dCkKLQotCi1kZWYgSXNNdWx0
aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgotICByZXR1cm4gcmUuc2VhcmNoKHInL1wqIElXWVUgcHJh
Z21hOiAnLCBsaW5lKQotCi0KLWRlZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGluZUlXWVVQ
cmFnbWEobGluZSk6Ci0gIHJldHVybiAocmUubWF0Y2gocideIyhpZm5kZWZ8ZGVmaW5lfGVuZGlm
XHMqLy8pXHMqW1x3X10rXHMqJCcsIGxpbmUpIG9yCi0gICAgICAgICAgcmUubWF0Y2gocideI2lu
Y2x1ZGVccycsIGxpbmUpIG9yCi0gICAgICAgICAgIyBEb24ndCBicmVhayBJV1lVIHByYWdtYXMs
IGVpdGhlcjsgdGhhdCBjYXVzZXMgaXd5dS5weSBwcm9ibGVtcy4KLSAgICAgICAgICByZS5zZWFy
Y2gocicvLyBJV1lVIHByYWdtYTogJywgbGluZSkpCi0KLQotZGVmIFdyYXBMb25nTGluZShsaW5l
LCBvdXRwdXQpOgotICBsaW5lID0gbGluZS5yc3RyaXAoKQotICBpZiBsZW4obGluZSkgPD0gODA6
Ci0gICAgb3V0cHV0LmFwcGVuZChsaW5lKQotICBlbGlmIElzU2luZ2xlTGluZUNvbW1lbnQobGlu
ZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxpbmUp
OgotICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cgbG9u
ZyBoZWFkZXIgZ3VhcmQgbGluZXMsCi0gICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdtYXMu
Ci0gICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gICAgZWxzZToKLSAgICAgIFdyYXBDb21tZW50
KGxpbmUsIG91dHB1dCkKLSAgZWxpZiBJc0luUHJlcHJvY2Vzc29yRGlyZWN0aXZlKG91dHB1dCwg
bGluZSk6Ci0gICAgaWYgSXNIZWFkZXJHdWFyZEluY2x1ZGVPck9uZUxpbmVJV1lVUHJhZ21hKGxp
bmUpOgotICAgICAgIyBUaGUgc3R5bGUgZ3VpZGUgbWFkZSBhbiBleGNlcHRpb24gdG8gYWxsb3cg
bG9uZyBoZWFkZXIgZ3VhcmQgbGluZXMsCi0gICAgICAjIGluY2x1ZGVzIGFuZCBJV1lVIHByYWdt
YXMuCi0gICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gICAgZWxzZToKLSAgICAgIFdyYXBQcmVw
cm9jZXNzb3JEaXJlY3RpdmUobGluZSwgb3V0cHV0KQotICBlbGlmIElzTXVsdGlMaW5lSVdZVVBy
YWdtYShsaW5lKToKLSAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsc2U6Ci0gICAgV3JhcFBs
YWluQ29kZShsaW5lLCBvdXRwdXQpCi0KLQotZGVmIEJlYXV0aWZ5Q29kZShzdHJpbmcpOgotICBs
aW5lcyA9IHN0cmluZy5zcGxpdGxpbmVzKCkKLSAgb3V0cHV0ID0gW10KLSAgZm9yIGxpbmUgaW4g
bGluZXM6Ci0gICAgV3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCkKLSAgb3V0cHV0MiA9IFtsaW5l
LnJzdHJpcCgpIGZvciBsaW5lIGluIG91dHB1dF0KLSAgcmV0dXJuICdcbicuam9pbihvdXRwdXQy
KSArICdcbicKLQotCi1kZWYgQ29udmVydEZyb21QdW1wU291cmNlKHNyY190ZXh0KToKLSAgIiIi
UmV0dXJuIHRoZSB0ZXh0IGdlbmVyYXRlZCBmcm9tIHRoZSBnaXZlbiBQdW1wIHNvdXJjZSB0ZXh0
LiIiIgotICBhc3QgPSBQYXJzZVRvQVNUKFN0cmlwTWV0YUNvbW1lbnRzKHNyY190ZXh0KSkKLSAg
b3V0cHV0ID0gT3V0cHV0KCkKLSAgUnVuQ29kZShFbnYoKSwgYXN0LCBvdXRwdXQpCi0gIHJldHVy
biBCZWF1dGlmeUNvZGUob3V0cHV0LnN0cmluZykKLQotCi1kZWYgbWFpbihhcmd2KToKLSAgaWYg
bGVuKGFyZ3YpID09IDE6Ci0gICAgcHJpbnQgX19kb2NfXwotICAgIHN5cy5leGl0KDEpCi0KLSAg
ZmlsZV9wYXRoID0gYXJndlstMV0KLSAgb3V0cHV0X3N0ciA9IENvbnZlcnRGcm9tUHVtcFNvdXJj
ZShmaWxlKGZpbGVfcGF0aCwgJ3InKS5yZWFkKCkpCi0gIGlmIGZpbGVfcGF0aC5lbmRzd2l0aCgn
LnB1bXAnKToKLSAgICBvdXRwdXRfZmlsZV9wYXRoID0gZmlsZV9wYXRoWzotNV0KLSAgZWxzZToK
LSAgICBvdXRwdXRfZmlsZV9wYXRoID0gJy0nCi0gIGlmIG91dHB1dF9maWxlX3BhdGggPT0gJy0n
OgotICAgIHByaW50IG91dHB1dF9zdHIsCi0gIGVsc2U6Ci0gICAgb3V0cHV0X2ZpbGUgPSBmaWxl
KG91dHB1dF9maWxlX3BhdGgsICd3JykKLSAgICBvdXRwdXRfZmlsZS53cml0ZSgnLy8gVGhpcyBm
aWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDpcbicpCi0gICAgb3V0cHV0X2ZpbGUud3JpdGUo
Jy8vICAgICAlcyAlc1xuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKG9zLnBhdGguYmFzZW5h
bWUoX19maWxlX18pLCBvcy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0aCkpKQotICAgIG91dHB1dF9m
aWxlLndyaXRlKCcvLyBETyBOT1QgRURJVCBCWSBIQU5EISEhXG5cbicpCi0gICAgb3V0cHV0X2Zp
bGUud3JpdGUob3V0cHV0X3N0cikKLSAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgbWFpbihzeXMuYXJndikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NjcmlwdHMvcmVsZWFzZV9kb2NzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9yZWxl
YXNlX2RvY3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDEyOTEzNDdmNjc0YWZk
N2FmODQ5NjE1YTc1YjEzOGQ1MjkzZjljZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBHb29nbGUgVGVzdC9Nb2NrIHdp
a2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNpb24uCi0KLVNZTk9QU0lTCi0gICAgICAgcmVsZWFzZV9k
b2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJT04KLQotICAgICAgIEdvb2dsZSBUZXN0IGFuZCBHb29n
bGUgTW9jaydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBpcyBpbgotICAgICAgIGludGVy
bGlua2VkIHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZgotICAg
ICAgIEdvb2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVkIHRvIGJyYW5jaCB0aGUgd2lr
aSBmaWxlcwotICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNwZWNpZmljIHZlcnNpb24gb2Yg
R29vZ2xlIFRlc3QvTW9jayBjYW4KLSAgICAgICBsb29rIHVwIGRvY3VtZW5hdGlvbiByZWxldmFu
dCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKLSAgICAgICBhdXRvbWF0ZXMgdGhhdCBw
cm9jZXNzIGJ5OgotCi0gICAgICAgICAtIGJyYW5jaGluZyB0aGUgY3VycmVudCB3aWtpIHBhZ2Vz
ICh3aGljaCBkb2N1bWVudCB0aGUKLSAgICAgICAgICAgYmVoYXZpb3Igb2YgdGhlIFNWTiB0cnVu
ayBoZWFkKSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAotICAgICAgICAgICB2ZXJzaW9uIChl
LmcuIGJyYW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtpIHdoZW4KLSAgICAgICAgICAg
TkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAyLjYpOwotICAgICAgICAgLSB1cGRhdGluZyB0aGUgbGlu
a3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRoZSBicmFuY2hlZAotICAgICAg
ICAgICB2ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53aWtpIHRoYXQgcG9pbnRlZCB0
bwotICAgICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBub3cgcG9pbnQgdG8gVjJfNl9Q
cmltZXIud2lraSNBbmNob3IpLgotCi0gICAgICAgTk9URTogTkVXX1JFTEVBU0VfVkVSU0lPTiBt
dXN0IGJlIGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgotICAgICAgIHdoaWNoIHRoZSB3aWtpIHBh
Z2VzIGRvbid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBnZXQgU1ZOCi0gICAgICAgZXJy
b3JzIGxpa2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndpa2knIGlzIG5vdCBhCi0gICAg
ICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4KLQotRVhBTVBMRQotICAgICAg
ICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5rCi0gICAgICAgJCBzY3JpcHRz
L3JlbGVhc2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFnZXMgZm9yIHYyLjYKLSAgICAg
ICAkIHN2biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJpZnkgdGhlIGZpbGUgbGlzdAot
ICAgICAgICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAjIHZlcmlmeSB0aGUgZmlsZSBj
b250ZW50cwotICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFzZSB3aWtpIHBhZ2VzIGZvciB2
Mi42IgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
Ci0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWltcG9ydCBjb21tb24KLQot
Ci0jIFdpa2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNoZWQgZm9yIGV2ZXJ5IGd0ZXN0
L2dtb2NrIHJlbGVhc2UuCi1HVEVTVF9VTlZFUlNJT05FRF9XSUtJUyA9IFsnRGV2R3VpZGUud2lr
aSddCi1HTU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKLSAgICAnRGVzaWduRG9jLndpa2knLAot
ICAgICdEZXZHdWlkZS53aWtpJywKLSAgICAnS25vd25Jc3N1ZXMud2lraScKLSAgICBdCi0KLQot
ZGVmIERyb3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgotICAiIiJSZW1vdmVzIHRoZSAud2lr
aSBzdWZmaXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5hbWUuIiIiCi0KLSAgcmV0dXJu
ICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtpX2ZpbGVuYW1lLmVuZHN3aXRo
KCcud2lraScpCi0gICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1lKQotCi0KLWNsYXNzIFdpa2lC
cmFuY2hlcihvYmplY3QpOgotICAiIiJCcmFuY2hlcyAuLi4iIiIKLQotICBkZWYgX19pbml0X18o
c2VsZiwgZG90X3ZlcnNpb24pOgotICAgIHNlbGYucHJvamVjdCwgc3ZuX3Jvb3RfcGF0aCA9IGNv
bW1vbi5HZXRTdm5JbmZvKCkKLSAgICBpZiBzZWxmLnByb2plY3Qgbm90IGluICgnZ29vZ2xldGVz
dCcsICdnb29nbGVtb2NrJyk6Ci0gICAgICBzeXMuZXhpdCgnVGhpcyBzY3JpcHQgbXVzdCBiZSBy
dW4gaW4gYSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicpCi0gICAgc2VsZi53aWtpX2Rp
ciA9IHN2bl9yb290X3BhdGggKyAnL3dpa2knCi0gICAgIyBUdXJuICcyLjYnIHRvICdWMl82Xycu
Ci0gICAgc2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92ZXJzaW9uLnJlcGxhY2UoJy4n
LCAnXycpICsgJ18nCi0gICAgc2VsZi5maWxlc190b19icmFuY2ggPSBzZWxmLkdldEZpbGVzVG9C
cmFuY2goKQotICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZmaXgoZikgZm9yIGYgaW4gc2Vs
Zi5maWxlc190b19icmFuY2hdCi0gICAgIyBBIGxpbmsgdG8gRm9vLndpa2kgaXMgaW4gb25lIG9m
IHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0gICAgIyAgIFtGb28gd29yZHNdCi0gICAgIyAgIFtGb28j
QW5jaG9yIHdvcmRzXQotICAgICMgICBbaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS8uLi4vd2lraS9G
b28gd29yZHNdCi0gICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUuY29tLy4uLi93aWtpL0ZvbyNB
bmNob3Igd29yZHNdCi0gICAgIyBXZSB3YW50IHRvIHJlcGxhY2UgJ0Zvbycgd2l0aCAnVjJfNl9G
b28nIGluIHRoZSBhYm92ZSBjYXNlcy4KLSAgICBzZWxmLnNlYXJjaF9mb3JfcmUgPSByZS5jb21w
aWxlKAotICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRoZXIKLSAgICAgICAgIyAgIFtG
b28KLSAgICAgICAgIyBvcgotICAgICAgICAjICAgL3dpa2kvRm9vCi0gICAgICAgICMgZm9sbG93
ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUgbmFtZSBvZiBhbgotICAgICAg
ICAjIHVudmVyc2lvbmVkIHdpa2kgcGFnZS4KLSAgICAgICAgcicoXFt8L3dpa2kvKSglcykoWyAj
XSknICUgJ3wnLmpvaW4ocGFnZV9uYW1lcykpCi0gICAgc2VsZi5yZXBsYWNlX3dpdGggPSByJ1wx
JXNcMlwzJyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKLQotICBkZWYgR2V0RmlsZXNUb0JyYW5j
aChzZWxmKToKLSAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lraSBmaWxlIG5hbWVzIHRoYXQg
bmVlZCB0byBiZSBicmFuY2hlZC4iIiIKLQotICAgIHVudmVyc2lvbmVkX3dpa2lzID0gKEdURVNU
X1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAnZ29vZ2xldGVzdCcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lPTkVEX1dJS0lTKQotICAgIHJl
dHVybiBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9kaXIpCi0gICAgICAgICAgICBp
ZiAoZi5lbmRzd2l0aCgnLndpa2knKSBhbmQKLSAgICAgICAgICAgICAgICBub3QgcmUubWF0Y2go
cideVlxkJywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAud2lraSBmaWxlcy4KLSAgICAg
ICAgICAgICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyldCi0KLSAgZGVmIEJyYW5jaEZp
bGVzKHNlbGYpOgotICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBmaWxlcyBuZWVkZWQgdG8gYmUg
YnJhbmNoZWQuIiIiCi0KLSAgICBwcmludCAnQnJhbmNoaW5nICVkIC53aWtpIGZpbGVzOicgJSAo
bGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNoKSwpCi0gICAgb3MuY2hkaXIoc2VsZi53aWtpX2RpcikK
LSAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKLSAgICAgIGNvbW1hbmQgPSAnc3Zu
IGNwICVzICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgsIGYpCi0gICAgICBwcmludCBj
b21tYW5kCi0gICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKLQotICBkZWYgVXBkYXRlTGlua3NJbkJy
YW5jaGVkRmlsZXMoc2VsZik6Ci0KLSAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoK
LSAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYud2lraV9kaXIsIGYpCi0gICAg
ICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndpa2lfZGlyLCBzZWxmLnZlcnNp
b25fcHJlZml4ICsgZikKLSAgICAgIHByaW50ICdVcGRhdGluZyBsaW5rcyBpbiAlcy4nICUgKHZl
cnNpb25lZF9maWxlLCkKLSAgICAgIHRleHQgPSBmaWxlKHNvdXJjZV9maWxlLCAncicpLnJlYWQo
KQotICAgICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUuc3ViKHNlbGYucmVwbGFjZV93
aXRoLCB0ZXh0KQotICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwgJ3cnKS53cml0ZShuZXdfdGV4
dCkKLQotCi1kZWYgbWFpbigpOgotICBpZiBsZW4oc3lzLmFyZ3YpICE9IDI6Ci0gICAgc3lzLmV4
aXQoX19kb2NfXykKLQotICBicmFuY2hlciA9IFdpa2lCcmFuY2hlcihzeXMuYXJndlsxXSkKLSAg
YnJhbmNoZXIuQnJhbmNoRmlsZXMoKQotICBicmFuY2hlci5VcGRhdGVMaW5rc0luQnJhbmNoZWRG
aWxlcygpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgbWFpbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3Jp
cHRzL3Rlc3QvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZmY1ODQ2
MzdiN2E2ZTlkZjFmYTQzY2U4ZjU4OGM0MzgxNWU1NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy90ZXN0L01ha2VmaWxl
CisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotIyBBIE1ha2VmaWxlIGZvciBmdXNpbmcg
R29vZ2xlIFRlc3QgYW5kIGJ1aWxkaW5nIGEgc2FtcGxlIHRlc3QgYWdhaW5zdCBpdC4KLSMKLSMg
U1lOT1BTSVM6Ci0jCi0jICAgbWFrZSBbYWxsXSAgLSBtYWtlcyBldmVyeXRoaW5nLgotIyAgIG1h
a2UgVEFSR0VUIC0gbWFrZXMgdGhlIGdpdmVuIHRhcmdldC4KLSMgICBtYWtlIGNoZWNrICAtIG1h
a2VzIGV2ZXJ5dGhpbmcgYW5kIHJ1bnMgdGhlIGJ1aWx0IHNhbXBsZSB0ZXN0LgotIyAgIG1ha2Ug
Y2xlYW4gIC0gcmVtb3ZlcyBhbGwgZmlsZXMgZ2VuZXJhdGVkIGJ5IG1ha2UuCi0KLSMgUG9pbnRz
IHRvIHRoZSByb290IG9mIGZ1c2VkIEdvb2dsZSBUZXN0LCByZWxhdGl2ZSB0byB3aGVyZSB0aGlz
IGZpbGUgaXMuCi1GVVNFRF9HVEVTVF9ESVIgPSBvdXRwdXQKLQotIyBQYXRocyB0byB0aGUgZnVz
ZWQgZ3Rlc3QgZmlsZXMuCi1GVVNFRF9HVEVTVF9IID0gJChGVVNFRF9HVEVTVF9ESVIpL2d0ZXN0
L2d0ZXN0LmgKLUZVU0VEX0dURVNUX0FMTF9DQyA9ICQoRlVTRURfR1RFU1RfRElSKS9ndGVzdC9n
dGVzdC1hbGwuY2MKLQotIyBXaGVyZSB0byBmaW5kIHRoZSBzYW1wbGUgdGVzdC4KLVNBTVBMRV9E
SVIgPSAuLi8uLi9zYW1wbGVzCi0KLSMgV2hlcmUgdG8gZmluZCBndGVzdF9tYWluLmNjLgotR1RF
U1RfTUFJTl9DQyA9IC4uLy4uL3NyYy9ndGVzdF9tYWluLmNjCi0KLSMgRmxhZ3MgcGFzc2VkIHRv
IHRoZSBwcmVwcm9jZXNzb3IuCi0jIFdlIGhhdmUgbm8gaWRlYSBoZXJlIHdoZXRoZXIgcHRocmVh
ZHMgaXMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0sIHNvCi0jIGRpc2FibGUgaXRzIHVzZS4KLUNQ
UEZMQUdTICs9IC1JJChGVVNFRF9HVEVTVF9ESVIpIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MAotCi0j
IEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBpbGVyLgotQ1hYRkxBR1MgKz0gLWcKLQotYWxs
IDogc2FtcGxlMV91bml0dGVzdAotCi1jaGVjayA6IGFsbAotCS4vc2FtcGxlMV91bml0dGVzdAot
Ci1jbGVhbiA6Ci0Jcm0gLXJmICQoRlVTRURfR1RFU1RfRElSKSBzYW1wbGUxX3VuaXR0ZXN0ICou
bwotCi0kKEZVU0VEX0dURVNUX0gpIDoKLQkuLi9mdXNlX2d0ZXN0X2ZpbGVzLnB5ICQoRlVTRURf
R1RFU1RfRElSKQotCi0kKEZVU0VEX0dURVNUX0FMTF9DQykgOgotCS4uL2Z1c2VfZ3Rlc3RfZmls
ZXMucHkgJChGVVNFRF9HVEVTVF9ESVIpCi0KLWd0ZXN0LWFsbC5vIDogJChGVVNFRF9HVEVTVF9I
KSAkKEZVU0VEX0dURVNUX0FMTF9DQykKLQkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFHUykg
LWMgJChGVVNFRF9HVEVTVF9ESVIpL2d0ZXN0L2d0ZXN0LWFsbC5jYwotCi1ndGVzdF9tYWluLm8g
OiAkKEZVU0VEX0dURVNUX0gpICQoR1RFU1RfTUFJTl9DQykKLQkkKENYWCkgJChDUFBGTEFHUykg
JChDWFhGTEFHUykgLWMgJChHVEVTVF9NQUlOX0NDKQotCi1zYW1wbGUxLm8gOiAkKFNBTVBMRV9E
SVIpL3NhbXBsZTEuY2MgJChTQU1QTEVfRElSKS9zYW1wbGUxLmgKLQkkKENYWCkgJChDUFBGTEFH
UykgJChDWFhGTEFHUykgLWMgJChTQU1QTEVfRElSKS9zYW1wbGUxLmNjCi0KLXNhbXBsZTFfdW5p
dHRlc3QubyA6ICQoU0FNUExFX0RJUikvc2FtcGxlMV91bml0dGVzdC5jYyBcCi0gICAgICAgICAg
ICAgICAgICAgICAkKFNBTVBMRV9ESVIpL3NhbXBsZTEuaCAkKEZVU0VEX0dURVNUX0gpCi0JJChD
WFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoU0FNUExFX0RJUikvc2FtcGxlMV91bml0
dGVzdC5jYwotCi1zYW1wbGUxX3VuaXR0ZXN0IDogc2FtcGxlMS5vIHNhbXBsZTFfdW5pdHRlc3Qu
byBndGVzdC1hbGwubyBndGVzdF9tYWluLm8KLQkkKENYWCkgJChDUFBGTEFHUykgJChDWFhGTEFH
UykgJF4gLW8gJEAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc2NyaXB0cy91cGxvYWQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDZlNmY5YTE0NzE5ZWY4YzlmZGI2MDNhZDUwYmRkMzVkYzc5OTZlMmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy91
cGxvYWQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzg3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgotIwotIyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotIwotIyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0jIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0iIiJUb29sIGZvciB1cGxvYWRpbmcgZGlm
ZnMgZnJvbSBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gdG8gdGhlIGNvZGVyZXZpZXcgYXBwLgot
Ci1Vc2FnZSBzdW1tYXJ5OiB1cGxvYWQucHkgW29wdGlvbnNdIFstLSBkaWZmX29wdGlvbnNdCi0K
LURpZmYgb3B0aW9ucyBhcmUgcGFzc2VkIHRvIHRoZSBkaWZmIGNvbW1hbmQgb2YgdGhlIHVuZGVy
bHlpbmcgc3lzdGVtLgotCi1TdXBwb3J0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbXM6Ci0gIEdp
dAotICBNZXJjdXJpYWwKLSAgU3VidmVyc2lvbgotCi1JdCBpcyBpbXBvcnRhbnQgZm9yIEdpdC9N
ZXJjdXJpYWwgdXNlcnMgdG8gc3BlY2lmeSBhIHRyZWUvbm9kZS9icmFuY2ggdG8gZGlmZgotYWdh
aW5zdCBieSB1c2luZyB0aGUgJy0tcmV2JyBvcHRpb24uCi0iIiIKLSMgVGhpcyBjb2RlIGlzIGRl
cml2ZWQgZnJvbSBhcHBjZmcucHkgaW4gdGhlIEFwcCBFbmdpbmUgU0RLIChvcGVuIHNvdXJjZSks
Ci0jIGFuZCBmcm9tIEFTUE4gcmVjaXBlICMxNDYzMDYuCi0KLWltcG9ydCBjb29raWVsaWIKLWlt
cG9ydCBnZXRwYXNzCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG1kNQotaW1wb3J0IG1pbWV0eXBl
cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAot
aW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB1cmxs
aWIyCi1pbXBvcnQgdXJscGFyc2UKLQotdHJ5OgotICBpbXBvcnQgcmVhZGxpbmUKLWV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgcGFzcwotCi0jIFRoZSBsb2dnaW5nIHZlcmJvc2l0eToKLSMgIDA6IEVy
cm9ycyBvbmx5LgotIyAgMTogU3RhdHVzIG1lc3NhZ2VzLgotIyAgMjogSW5mbyBsb2dzLgotIyAg
MzogRGVidWcgbG9ncy4KLXZlcmJvc2l0eSA9IDEKLQotIyBNYXggc2l6ZSBvZiBwYXRjaCBvciBi
YXNlIGZpbGUuCi1NQVhfVVBMT0FEX1NJWkUgPSA5MDAgKiAxMDI0Ci0KLQotZGVmIEdldEVtYWls
KHByb21wdCk6Ci0gICIiIlByb21wdHMgdGhlIHVzZXIgZm9yIHRoZWlyIGVtYWlsIGFkZHJlc3Mg
YW5kIHJldHVybnMgaXQuCi0KLSAgVGhlIGxhc3QgdXNlZCBlbWFpbCBhZGRyZXNzIGlzIHNhdmVk
IHRvIGEgZmlsZSBhbmQgb2ZmZXJlZCB1cCBhcyBhIHN1Z2dlc3Rpb24KLSAgdG8gdGhlIHVzZXIu
IElmIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIgd2l0aG91dCB0eXBpbmcgaW4gYW55dGhpbmcgdGhl
IGxhc3QKLSAgdXNlZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQuIElmIHRoZSB1c2VyIGVudGVycyBh
IG5ldyBhZGRyZXNzLCBpdCBpcyBzYXZlZAotICBmb3IgbmV4dCB0aW1lIHdlIHByb21wdC4KLQot
ICAiIiIKLSAgbGFzdF9lbWFpbF9maWxlX25hbWUgPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vLmxh
c3RfY29kZXJldmlld19lbWFpbF9hZGRyZXNzIikKLSAgbGFzdF9lbWFpbCA9ICIiCi0gIGlmIG9z
LnBhdGguZXhpc3RzKGxhc3RfZW1haWxfZmlsZV9uYW1lKToKLSAgICB0cnk6Ci0gICAgICBsYXN0
X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAiciIpCi0gICAgICBsYXN0
X2VtYWlsID0gbGFzdF9lbWFpbF9maWxlLnJlYWRsaW5lKCkuc3RyaXAoIlxuIikKLSAgICAgIGxh
c3RfZW1haWxfZmlsZS5jbG9zZSgpCi0gICAgICBwcm9tcHQgKz0gIiBbJXNdIiAlIGxhc3RfZW1h
aWwKLSAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgIHBhc3MKLSAgZW1haWwgPSByYXdfaW5w
dXQocHJvbXB0ICsgIjogIikuc3RyaXAoKQotICBpZiBlbWFpbDoKLSAgICB0cnk6Ci0gICAgICBs
YXN0X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAidyIpCi0gICAgICBs
YXN0X2VtYWlsX2ZpbGUud3JpdGUoZW1haWwpCi0gICAgICBsYXN0X2VtYWlsX2ZpbGUuY2xvc2Uo
KQotICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgcGFzcwotICBlbHNlOgotICAgIGVtYWls
ID0gbGFzdF9lbWFpbAotICByZXR1cm4gZW1haWwKLQotCi1kZWYgU3RhdHVzVXBkYXRlKG1zZyk6
Ci0gICIiIlByaW50IGEgc3RhdHVzIG1lc3NhZ2UgdG8gc3Rkb3V0LgotCi0gIElmICd2ZXJib3Np
dHknIGlzIGdyZWF0ZXIgdGhhbiAwLCBwcmludCB0aGUgbWVzc2FnZS4KLQotICBBcmdzOgotICAg
IG1zZzogVGhlIHN0cmluZyB0byBwcmludC4KLSAgIiIiCi0gIGlmIHZlcmJvc2l0eSA+IDA6Ci0g
ICAgcHJpbnQgbXNnCi0KLQotZGVmIEVycm9yRXhpdChtc2cpOgotICAiIiJQcmludCBhbiBlcnJv
ciBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgZXhpdC4iIiIKLSAgcHJpbnQgPj5zeXMuc3RkZXJyLCBt
c2cKLSAgc3lzLmV4aXQoMSkKLQotCi1jbGFzcyBDbGllbnRMb2dpbkVycm9yKHVybGxpYjIuSFRU
UEVycm9yKToKLSAgIiIiUmFpc2VkIHRvIGluZGljYXRlIHRoZXJlIHdhcyBhbiBlcnJvciBhdXRo
ZW50aWNhdGluZyB3aXRoIENsaWVudExvZ2luLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCB1
cmwsIGNvZGUsIG1zZywgaGVhZGVycywgYXJncyk6Ci0gICAgdXJsbGliMi5IVFRQRXJyb3IuX19p
bml0X18oc2VsZiwgdXJsLCBjb2RlLCBtc2csIGhlYWRlcnMsIE5vbmUpCi0gICAgc2VsZi5hcmdz
ID0gYXJncwotICAgIHNlbGYucmVhc29uID0gYXJnc1siRXJyb3IiXQotCi0KLWNsYXNzIEFic3Ry
YWN0UnBjU2VydmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVzIGEgY29tbW9uIGludGVyZmFjZSBm
b3IgYSBzaW1wbGUgUlBDIHNlcnZlci4iIiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwg
YXV0aF9mdW5jdGlvbiwgaG9zdF9vdmVycmlkZT1Ob25lLCBleHRyYV9oZWFkZXJzPXt9LAotICAg
ICAgICAgICAgICAgc2F2ZV9jb29raWVzPUZhbHNlKToKLSAgICAiIiJDcmVhdGVzIGEgbmV3IEh0
dHBScGNTZXJ2ZXIuCi0KLSAgICBBcmdzOgotICAgICAgaG9zdDogVGhlIGhvc3QgdG8gc2VuZCBy
ZXF1ZXN0cyB0by4KLSAgICAgIGF1dGhfZnVuY3Rpb246IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBu
byBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4KLSAgICAgICAgKGVtYWlsLCBwYXNzd29yZCkgdHVw
bGUgd2hlbiBjYWxsZWQuIFdpbGwgYmUgY2FsbGVkIGlmIGF1dGhlbnRpY2F0aW9uCi0gICAgICAg
IGlzIHJlcXVpcmVkLgotICAgICAgaG9zdF9vdmVycmlkZTogVGhlIGhvc3QgaGVhZGVyIHRvIHNl
bmQgdG8gdGhlIHNlcnZlciAoZGVmYXVsdHMgdG8gaG9zdCkuCi0gICAgICBleHRyYV9oZWFkZXJz
OiBBIGRpY3Qgb2YgZXh0cmEgaGVhZGVycyB0byBhcHBlbmQgdG8gZXZlcnkgcmVxdWVzdC4KLSAg
ICAgIHNhdmVfY29va2llczogSWYgVHJ1ZSwgc2F2ZSB0aGUgYXV0aGVudGljYXRpb24gY29va2ll
cyB0byBsb2NhbCBkaXNrLgotICAgICAgICBJZiBGYWxzZSwgdXNlIGFuIGluLW1lbW9yeSBjb29r
aWVqYXIgaW5zdGVhZC4gIFN1YmNsYXNzZXMgbXVzdAotICAgICAgICBpbXBsZW1lbnQgdGhpcyBm
dW5jdGlvbmFsaXR5LiAgRGVmYXVsdHMgdG8gRmFsc2UuCi0gICAgIiIiCi0gICAgc2VsZi5ob3N0
ID0gaG9zdAotICAgIHNlbGYuaG9zdF9vdmVycmlkZSA9IGhvc3Rfb3ZlcnJpZGUKLSAgICBzZWxm
LmF1dGhfZnVuY3Rpb24gPSBhdXRoX2Z1bmN0aW9uCi0gICAgc2VsZi5hdXRoZW50aWNhdGVkID0g
RmFsc2UKLSAgICBzZWxmLmV4dHJhX2hlYWRlcnMgPSBleHRyYV9oZWFkZXJzCi0gICAgc2VsZi5z
YXZlX2Nvb2tpZXMgPSBzYXZlX2Nvb2tpZXMKLSAgICBzZWxmLm9wZW5lciA9IHNlbGYuX0dldE9w
ZW5lcigpCi0gICAgaWYgc2VsZi5ob3N0X292ZXJyaWRlOgotICAgICAgbG9nZ2luZy5pbmZvKCJT
ZXJ2ZXI6ICVzOyBIb3N0OiAlcyIsIHNlbGYuaG9zdCwgc2VsZi5ob3N0X292ZXJyaWRlKQotICAg
IGVsc2U6Ci0gICAgICBsb2dnaW5nLmluZm8oIlNlcnZlcjogJXMiLCBzZWxmLmhvc3QpCi0KLSAg
ZGVmIF9HZXRPcGVuZXIoc2VsZik6Ci0gICAgIiIiUmV0dXJucyBhbiBPcGVuZXJEaXJlY3RvciBm
b3IgbWFraW5nIEhUVFAgcmVxdWVzdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB1cmxsaWIy
Lk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCkKLQotICBkZWYgX0NyZWF0ZVJlcXVlc3Qoc2VsZiwgdXJsLCBkYXRhPU5vbmUpOgot
ICAgICIiIkNyZWF0ZXMgYSBuZXcgdXJsbGliIHJlcXVlc3QuIiIiCi0gICAgbG9nZ2luZy5kZWJ1
ZygiQ3JlYXRpbmcgcmVxdWVzdCBmb3I6ICclcycgd2l0aCBwYXlsb2FkOlxuJXMiLCB1cmwsIGRh
dGEpCi0gICAgcmVxID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgZGF0YT1kYXRhKQotICAgIGlmIHNl
bGYuaG9zdF9vdmVycmlkZToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKCJIb3N0Iiwgc2VsZi5ob3N0
X292ZXJyaWRlKQotICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZXh0cmFfaGVhZGVycy5pdGVy
aXRlbXMoKToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKGtleSwgdmFsdWUpCi0gICAgcmV0dXJuIHJl
cQotCi0gIGRlZiBfR2V0QXV0aFRva2VuKHNlbGYsIGVtYWlsLCBwYXNzd29yZCk6Ci0gICAgIiIi
VXNlcyBDbGllbnRMb2dpbiB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIsIHJldHVybmluZyBhbiBh
dXRoIHRva2VuLgotCi0gICAgQXJnczoKLSAgICAgIGVtYWlsOiAgICBUaGUgdXNlcidzIGVtYWls
IGFkZHJlc3MKLSAgICAgIHBhc3N3b3JkOiBUaGUgdXNlcidzIHBhc3N3b3JkCi0KLSAgICBSYWlz
ZXM6Ci0gICAgICBDbGllbnRMb2dpbkVycm9yOiBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgYXV0aGVu
dGljYXRpbmcgd2l0aCBDbGllbnRMb2dpbi4KLSAgICAgIEhUVFBFcnJvcjogSWYgdGhlcmUgd2Fz
IHNvbWUgb3RoZXIgZm9ybSBvZiBIVFRQIGVycm9yLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRo
ZSBhdXRoZW50aWNhdGlvbiB0b2tlbiByZXR1cm5lZCBieSBDbGllbnRMb2dpbi4KLSAgICAiIiIK
LSAgICBhY2NvdW50X3R5cGUgPSAiR09PR0xFIgotICAgIGlmIHNlbGYuaG9zdC5lbmRzd2l0aCgi
Lmdvb2dsZS5jb20iKToKLSAgICAgICMgTmVlZGVkIGZvciB1c2UgaW5zaWRlIEdvb2dsZS4KLSAg
ICAgIGFjY291bnRfdHlwZSA9ICJIT1NURUQiCi0gICAgcmVxID0gc2VsZi5fQ3JlYXRlUmVxdWVz
dCgKLSAgICAgICAgdXJsPSJodHRwczovL3d3dy5nb29nbGUuY29tL2FjY291bnRzL0NsaWVudExv
Z2luIiwKLSAgICAgICAgZGF0YT11cmxsaWIudXJsZW5jb2RlKHsKLSAgICAgICAgICAgICJFbWFp
bCI6IGVtYWlsLAotICAgICAgICAgICAgIlBhc3N3ZCI6IHBhc3N3b3JkLAotICAgICAgICAgICAg
InNlcnZpY2UiOiAiYWgiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJyaWV0dmVsZC1jb2RlcmV2
aWV3LXVwbG9hZCIsCi0gICAgICAgICAgICAiYWNjb3VudFR5cGUiOiBhY2NvdW50X3R5cGUsCi0g
ICAgICAgIH0pLAotICAgICkKLSAgICB0cnk6Ci0gICAgICByZXNwb25zZSA9IHNlbGYub3BlbmVy
Lm9wZW4ocmVxKQotICAgICAgcmVzcG9uc2VfYm9keSA9IHJlc3BvbnNlLnJlYWQoKQotICAgICAg
cmVzcG9uc2VfZGljdCA9IGRpY3QoeC5zcGxpdCgiPSIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgeCBpbiByZXNwb25zZV9ib2R5LnNwbGl0KCJcbiIpIGlmIHgpCi0gICAgICByZXR1
cm4gcmVzcG9uc2VfZGljdFsiQXV0aCJdCi0gICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBl
OgotICAgICAgaWYgZS5jb2RlID09IDQwMzoKLSAgICAgICAgYm9keSA9IGUucmVhZCgpCi0gICAg
ICAgIHJlc3BvbnNlX2RpY3QgPSBkaWN0KHguc3BsaXQoIj0iLCAxKSBmb3IgeCBpbiBib2R5LnNw
bGl0KCJcbiIpIGlmIHgpCi0gICAgICAgIHJhaXNlIENsaWVudExvZ2luRXJyb3IocmVxLmdldF9m
dWxsX3VybCgpLCBlLmNvZGUsIGUubXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUuaGVhZGVycywgcmVzcG9uc2VfZGljdCkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlCi0K
LSAgZGVmIF9HZXRBdXRoQ29va2llKHNlbGYsIGF1dGhfdG9rZW4pOgotICAgICIiIkZldGNoZXMg
YXV0aGVudGljYXRpb24gY29va2llcyBmb3IgYW4gYXV0aGVudGljYXRpb24gdG9rZW4uCi0KLSAg
ICBBcmdzOgotICAgICAgYXV0aF90b2tlbjogVGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHJldHVy
bmVkIGJ5IENsaWVudExvZ2luLgotCi0gICAgUmFpc2VzOgotICAgICAgSFRUUEVycm9yOiBJZiB0
aGVyZSB3YXMgYW4gZXJyb3IgZmV0Y2hpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMuCi0g
ICAgIiIiCi0gICAgIyBUaGlzIGlzIGEgZHVtbXkgdmFsdWUgdG8gYWxsb3cgdXMgdG8gaWRlbnRp
Znkgd2hlbiB3ZSdyZSBzdWNjZXNzZnVsLgotICAgIGNvbnRpbnVlX2xvY2F0aW9uID0gImh0dHA6
Ly9sb2NhbGhvc3QvIgotICAgIGFyZ3MgPSB7ImNvbnRpbnVlIjogY29udGludWVfbG9jYXRpb24s
ICJhdXRoIjogYXV0aF90b2tlbn0KLSAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1ZXN0KCJodHRw
Oi8vJXMvX2FoL2xvZ2luPyVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
Zi5ob3N0LCB1cmxsaWIudXJsZW5jb2RlKGFyZ3MpKSkKLSAgICB0cnk6Ci0gICAgICByZXNwb25z
ZSA9IHNlbGYub3BlbmVyLm9wZW4ocmVxKQotICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwg
ZToKLSAgICAgIHJlc3BvbnNlID0gZQotICAgIGlmIChyZXNwb25zZS5jb2RlICE9IDMwMiBvcgot
ICAgICAgICByZXNwb25zZS5pbmZvKClbImxvY2F0aW9uIl0gIT0gY29udGludWVfbG9jYXRpb24p
OgotICAgICAgcmFpc2UgdXJsbGliMi5IVFRQRXJyb3IocmVxLmdldF9mdWxsX3VybCgpLCByZXNw
b25zZS5jb2RlLCByZXNwb25zZS5tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5mcCkKLSAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBU
cnVlCi0KLSAgZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiQXV0aGVudGljYXRlcyB0
aGUgdXNlci4KLQotICAgIFRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIHdvcmtzIGFzIGZvbGxv
d3M6Ci0gICAgIDEpIFdlIGdldCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmcm9tIHRoZSB1c2Vy
Ci0gICAgIDIpIFdlIHVzZSBDbGllbnRMb2dpbiB0byBvYnRhaW4gYW4gQVVUSCB0b2tlbiBmb3Ig
dGhlIHVzZXIKLSAgICAgICAgKHNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvYWNjb3Vu
dHMvQXV0aEZvckluc3RhbGxlZEFwcHMuaHRtbCkuCi0gICAgIDMpIFdlIHBhc3MgdGhlIGF1dGgg
dG9rZW4gdG8gL19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgotICAgICAgICBh
dXRoZW50aWNhdGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0
byByZWRpcmVjdAotICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgotCi0gICAgSWYg
d2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHVwbG9hZCBBUEkgd2l0aG91dCBmaXJzdCBvYnRhaW5p
bmcgYW4KLSAgICBhdXRoZW50aWNhdGlvbiBjb29raWUsIGl0IHJldHVybnMgYSA0MDEgcmVzcG9u
c2UgYW5kIGRpcmVjdHMgdXMgdG8KLSAgICBhdXRoZW50aWNhdGUgb3Vyc2VsdmVzIHdpdGggQ2xp
ZW50TG9naW4uCi0gICAgIiIiCi0gICAgZm9yIGkgaW4gcmFuZ2UoMyk6Ci0gICAgICBjcmVkZW50
aWFscyA9IHNlbGYuYXV0aF9mdW5jdGlvbigpCi0gICAgICB0cnk6Ci0gICAgICAgIGF1dGhfdG9r
ZW4gPSBzZWxmLl9HZXRBdXRoVG9rZW4oY3JlZGVudGlhbHNbMF0sIGNyZWRlbnRpYWxzWzFdKQot
ICAgICAgZXhjZXB0IENsaWVudExvZ2luRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUucmVhc29uID09
ICJCYWRBdXRoZW50aWNhdGlvbiI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAiSW52
YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZC4iCi0gICAgICAgICAgY29udGludWUKLSAgICAgICAg
aWYgZS5yZWFzb24gPT0gIkNhcHRjaGFSZXF1aXJlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMu
c3RkZXJyLCAoCi0gICAgICAgICAgICAgICJQbGVhc2UgZ28gdG9cbiIKLSAgICAgICAgICAgICAg
Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYWNjb3VudHMvRGlzcGxheVVubG9ja0NhcHRjaGFcbiIK
LSAgICAgICAgICAgICAgImFuZCB2ZXJpZnkgeW91IGFyZSBhIGh1bWFuLiAgVGhlbiB0cnkgYWdh
aW4uIikKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiTm90VmVyaWZp
ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkFjY291bnQgbm90IHZlcmlmaWVk
LiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiVGVybXNOb3RBZ3Jl
ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlVzZXIgaGFzIG5vdCBhZ3JlZWQg
dG8gVE9TLiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQWNjb3Vu
dERlbGV0ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSB1c2VyIGFjY291
bnQgaGFzIGJlZW4gZGVsZXRlZC4iCi0gICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZS5yZWFz
b24gPT0gIkFjY291bnREaXNhYmxlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAi
VGhlIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBkaXNhYmxlZC4iCi0gICAgICAgICAgYnJlYWsKLSAg
ICAgICAgaWYgZS5yZWFzb24gPT0gIlNlcnZpY2VEaXNhYmxlZCI6Ci0gICAgICAgICAgcHJpbnQg
Pj5zeXMuc3RkZXJyLCAoIlRoZSB1c2VyJ3MgYWNjZXNzIHRvIHRoZSBzZXJ2aWNlIGhhcyBiZWVu
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZWQuIikKLSAgICAgICAg
ICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiU2VydmljZVVuYXZhaWxhYmxlIjoKLSAg
ICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICJUaGUgc2VydmljZSBpcyBub3QgYXZhaWxhYmxl
OyB0cnkgYWdhaW4gbGF0ZXIuIgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJhaXNlCi0gICAg
ICBzZWxmLl9HZXRBdXRoQ29va2llKGF1dGhfdG9rZW4pCi0gICAgICByZXR1cm4KLQotICBkZWYg
U2VuZChzZWxmLCByZXF1ZXN0X3BhdGgsIHBheWxvYWQ9Tm9uZSwKLSAgICAgICAgICAgY29udGVu
dF90eXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAotICAgICAgICAgICB0aW1lb3V0PU5v
bmUsCi0gICAgICAgICAgICoqa3dhcmdzKToKLSAgICAiIiJTZW5kcyBhbiBSUEMgYW5kIHJldHVy
bnMgdGhlIHJlc3BvbnNlLgotCi0gICAgQXJnczoKLSAgICAgIHJlcXVlc3RfcGF0aDogVGhlIHBh
dGggdG8gc2VuZCB0aGUgcmVxdWVzdCB0bywgZWcgL2FwaS9hcHB2ZXJzaW9uL2NyZWF0ZS4KLSAg
ICAgIHBheWxvYWQ6IFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LCBvciBOb25lIHRvIHNlbmQgYW4g
ZW1wdHkgcmVxdWVzdC4KLSAgICAgIGNvbnRlbnRfdHlwZTogVGhlIENvbnRlbnQtVHlwZSBoZWFk
ZXIgdG8gdXNlLgotICAgICAgdGltZW91dDogdGltZW91dCBpbiBzZWNvbmRzOyBkZWZhdWx0IE5v
bmUgaS5lLiBubyB0aW1lb3V0LgotICAgICAgICAoTm90ZTogZm9yIGxhcmdlIHJlcXVlc3RzIG9u
IE9TIFgsIHRoZSB0aW1lb3V0IGRvZXNuJ3Qgd29yayByaWdodC4pCi0gICAgICBrd2FyZ3M6IEFu
eSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIGludG8gcXVlcnkgc3RyaW5nIHBhcmFt
ZXRlcnMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIHJlc3BvbnNlIGJvZHksIGFzIGEgc3Ry
aW5nLgotICAgICIiIgotICAgICMgVE9ETzogRG9uJ3QgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4g
IExldCB0aGUgc2VydmVyIHNheQotICAgICMgd2hldGhlciBpdCBpcyBuZWNlc3NhcnkuCi0gICAg
aWYgbm90IHNlbGYuYXV0aGVudGljYXRlZDoKLSAgICAgIHNlbGYuX0F1dGhlbnRpY2F0ZSgpCi0K
LSAgICBvbGRfdGltZW91dCA9IHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpCi0gICAgc29ja2V0
LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCi0gICAgdHJ5OgotICAgICAgdHJpZXMgPSAwCi0g
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cmllcyArPSAxCi0gICAgICAgIGFyZ3MgPSBkaWN0
KGt3YXJncykKLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcyVzIiAlIChzZWxmLmhvc3QsIHJlcXVl
c3RfcGF0aCkKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICB1cmwgKz0gIj8iICsgdXJsbGli
LnVybGVuY29kZShhcmdzKQotICAgICAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1ZXN0KHVybD11
cmwsIGRhdGE9cGF5bG9hZCkKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIkNvbnRlbnQtVHlwZSIs
IGNvbnRlbnRfdHlwZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgIGYgPSBzZWxmLm9wZW5lci5v
cGVuKHJlcSkKLSAgICAgICAgICByZXNwb25zZSA9IGYucmVhZCgpCi0gICAgICAgICAgZi5jbG9z
ZSgpCi0gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0gICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhU
VFBFcnJvciwgZToKLSAgICAgICAgICBpZiB0cmllcyA+IDM6Ci0gICAgICAgICAgICByYWlzZQot
ICAgICAgICAgIGVsaWYgZS5jb2RlID09IDQwMToKLSAgICAgICAgICAgIHNlbGYuX0F1dGhlbnRp
Y2F0ZSgpCi0jIyAgICAgICAgICAgZWxpZiBlLmNvZGUgPj0gNTAwIGFuZCBlLmNvZGUgPCA2MDA6
Ci0jIyAgICAgICAgICAgICAjIFNlcnZlciBFcnJvciAtIHRyeSBhZ2Fpbi4KLSMjICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlCi0gICAgZmlu
YWxseToKLSAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChvbGRfdGltZW91dCkKLQotCi1j
bGFzcyBIdHRwUnBjU2VydmVyKEFic3RyYWN0UnBjU2VydmVyKToKLSAgIiIiUHJvdmlkZXMgYSBz
aW1wbGlmaWVkIFJQQy1zdHlsZSBpbnRlcmZhY2UgZm9yIEhUVFAgcmVxdWVzdHMuIiIiCi0KLSAg
ZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiU2F2ZSB0aGUgY29va2llIGphciBhZnRl
ciBhdXRoZW50aWNhdGlvbi4iIiIKLSAgICBzdXBlcihIdHRwUnBjU2VydmVyLCBzZWxmKS5fQXV0
aGVudGljYXRlKCkKLSAgICBpZiBzZWxmLnNhdmVfY29va2llczoKLSAgICAgIFN0YXR1c1VwZGF0
ZSgiU2F2aW5nIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMgdG8gJXMiICUgc2VsZi5jb29raWVfZmls
ZSkKLSAgICAgIHNlbGYuY29va2llX2phci5zYXZlKCkKLQotICBkZWYgX0dldE9wZW5lcihzZWxm
KToKLSAgICAiIiJSZXR1cm5zIGFuIE9wZW5lckRpcmVjdG9yIHRoYXQgc3VwcG9ydHMgY29va2ll
cyBhbmQgaWdub3JlcyByZWRpcmVjdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB1cmxsaWIy
Lk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICBvcGVuZXIgPSB1cmxsaWIyLk9w
ZW5lckRpcmVjdG9yKCkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Qcm94eUhhbmRs
ZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Vbmtub3duSGFuZGxlcigpKQot
ICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBIYW5kbGVyKCkpCi0gICAgb3BlbmVy
LmFkZF9oYW5kbGVyKHVybGxpYjIuSFRUUERlZmF1bHRFcnJvckhhbmRsZXIoKSkKLSAgICBvcGVu
ZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQU0hhbmRsZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hh
bmRsZXIodXJsbGliMi5IVFRQRXJyb3JQcm9jZXNzb3IoKSkKLSAgICBpZiBzZWxmLnNhdmVfY29v
a2llczoKLSAgICAgIHNlbGYuY29va2llX2ZpbGUgPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vLmNv
ZGVyZXZpZXdfdXBsb2FkX2Nvb2tpZXMiKQotICAgICAgc2VsZi5jb29raWVfamFyID0gY29va2ll
bGliLk1vemlsbGFDb29raWVKYXIoc2VsZi5jb29raWVfZmlsZSkKLSAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYuY29va2llX2ZpbGUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgc2VsZi5j
b29raWVfamFyLmxvYWQoKQotICAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IFRydWUKLSAg
ICAgICAgICBTdGF0dXNVcGRhdGUoIkxvYWRlZCBhdXRoZW50aWNhdGlvbiBjb29raWVzIGZyb20g
JXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29raWVfZmlsZSkKLSAgICAgICAg
ZXhjZXB0IChjb29raWVsaWIuTG9hZEVycm9yLCBJT0Vycm9yKToKLSAgICAgICAgICAjIEZhaWxl
ZCB0byBsb2FkIGNvb2tpZXMgLSBqdXN0IGlnbm9yZSB0aGVtLgotICAgICAgICAgIHBhc3MKLSAg
ICAgIGVsc2U6Ci0gICAgICAgICMgQ3JlYXRlIGFuIGVtcHR5IGNvb2tpZSBmaWxlIHdpdGggbW9k
ZSA2MDAKLSAgICAgICAgZmQgPSBvcy5vcGVuKHNlbGYuY29va2llX2ZpbGUsIG9zLk9fQ1JFQVQs
IDA2MDApCi0gICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgIyBBbHdheXMgY2htb2QgdGhlIGNv
b2tpZSBmaWxlCi0gICAgICBvcy5jaG1vZChzZWxmLmNvb2tpZV9maWxlLCAwNjAwKQotICAgIGVs
c2U6Ci0gICAgICAjIERvbid0IHNhdmUgY29va2llcyBhY3Jvc3MgcnVucyBvZiB1cGRhdGUucHku
Ci0gICAgICBzZWxmLmNvb2tpZV9qYXIgPSBjb29raWVsaWIuQ29va2llSmFyKCkKLSAgICBvcGVu
ZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQQ29va2llUHJvY2Vzc29yKHNlbGYuY29va2llX2ph
cikpCi0gICAgcmV0dXJuIG9wZW5lcgotCi0KLXBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cih1c2FnZT0iJXByb2cgW29wdGlvbnNdIFstLSBkaWZmX29wdGlvbnNdIikKLXBhcnNlci5hZGRf
b3B0aW9uKCIteSIsICItLWFzc3VtZV95ZXMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
ICAgICAgICAgICAgZGVzdD0iYXNzdW1lX3llcyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICBoZWxwPSJBc3N1bWUgdGhhdCB0aGUgYW5zd2VyIHRvIHllcy9ubyBxdWVzdGlvbnMg
aXMgJ3llcycuIikKLSMgTG9nZ2luZwotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCgi
TG9nZ2luZyBvcHRpb25zIikKLWdyb3VwLmFkZF9vcHRpb24oIi1xIiwgIi0tcXVpZXQiLCBhY3Rp
b249InN0b3JlX2NvbnN0IiwgY29uc3Q9MCwKLSAgICAgICAgICAgICAgICAgZGVzdD0idmVyYm9z
ZSIsIGhlbHA9IlByaW50IGVycm9ycyBvbmx5LiIpCi1ncm91cC5hZGRfb3B0aW9uKCItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9MiwKLSAgICAgICAgICAgICAg
ICAgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9MSwKLSAgICAgICAgICAgICAgICAgaGVscD0iUHJp
bnQgaW5mbyBsZXZlbCBsb2dzIChkZWZhdWx0KS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLS1ub2lz
eSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0zLAotICAgICAgICAgICAgICAgICBkZXN0
PSJ2ZXJib3NlIiwgaGVscD0iUHJpbnQgYWxsIGxvZ3MuIikKLSMgUmV2aWV3IHNlcnZlcgotZ3Jv
dXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCgiUmV2aWV3IHNlcnZlciBvcHRpb25zIikKLWdy
b3VwLmFkZF9vcHRpb24oIi1zIiwgIi0tc2VydmVyIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InNl
cnZlciIsCi0gICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImNvZGVyZXZpZXcuYXBwc3BvdC5jb20i
LAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJTRVJWRVIiLAotICAgICAgICAgICAgICAgICBo
ZWxwPSgiVGhlIHNlcnZlciB0byB1cGxvYWQgdG8uIFRoZSBmb3JtYXQgaXMgaG9zdFs6cG9ydF0u
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHRzIHRvICdjb2RlcmV2aWV3LmFwcHNw
b3QuY29tJy4iKSkKLWdyb3VwLmFkZF9vcHRpb24oIi1lIiwgIi0tZW1haWwiLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iZW1haWwiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJFTUFJTCIsIGRl
ZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iVGhlIHVzZXJuYW1lIHRvIHVzZS4g
V2lsbCBwcm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLUgiLCAiLS1ob3N0
IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Imhvc3QiLAotICAgICAgICAgICAgICAgICBtZXRhdmFy
PSJIT1NUIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJPdmVycmlkZXMg
dGhlIEhvc3QgaGVhZGVyIHNlbnQgd2l0aCBhbGwgUlBDcy4iKQotZ3JvdXAuYWRkX29wdGlvbigi
LS1ub19jb29raWVzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCi0gICAgICAgICAgICAgICAgIGRl
c3Q9InNhdmVfY29va2llcyIsIGRlZmF1bHQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgaGVscD0i
RG8gbm90IHNhdmUgYXV0aGVudGljYXRpb24gY29va2llcyB0byBsb2NhbCBkaXNrLiIpCi0jIElz
c3VlCi1ncm91cCA9IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJJc3N1ZSBvcHRpb25zIikKLWdy
b3VwLmFkZF9vcHRpb24oIi1kIiwgIi0tZGVzY3JpcHRpb24iLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0iZGVzY3JpcHRpb24iLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJERVNDUklQVElPTiIs
IGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iT3B0aW9uYWwgZGVzY3JpcHRp
b24gd2hlbiBjcmVhdGluZyBhbiBpc3N1ZS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLWYiLCAiLS1k
ZXNjcmlwdGlvbl9maWxlIiwgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgIGRlc3Q9
ImRlc2NyaXB0aW9uX2ZpbGUiLCBtZXRhdmFyPSJERVNDUklQVElPTl9GSUxFIiwKLSAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJPcHRpb25hbCBw
YXRoIG9mIGEgZmlsZSB0aGF0IGNvbnRhaW5zICIKLSAgICAgICAgICAgICAgICAgICAgICAidGhl
IGRlc2NyaXB0aW9uIHdoZW4gY3JlYXRpbmcgYW4gaXNzdWUuIikKLWdyb3VwLmFkZF9vcHRpb24o
Ii1yIiwgIi0tcmV2aWV3ZXJzIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJldmlld2VycyIsCi0g
ICAgICAgICAgICAgICAgIG1ldGF2YXI9IlJFVklFV0VSUyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgaGVscD0iQWRkIHJldmlld2VycyAoY29tbWEgc2VwYXJhdGVkIGVtYWlsIGFk
ZHJlc3NlcykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tY2MiLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0iY2MiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDQyIsIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgaGVscD0iQWRkIENDIChjb21tYSBzZXBhcmF0ZWQgZW1haWwgYWRkcmVz
c2VzKS4iKQotIyBVcGxvYWQgb3B0aW9ucwotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91
cCgiUGF0Y2ggb3B0aW9ucyIpCi1ncm91cC5hZGRfb3B0aW9uKCItbSIsICItLW1lc3NhZ2UiLCBh
Y3Rpb249InN0b3JlIiwgZGVzdD0ibWVzc2FnZSIsCi0gICAgICAgICAgICAgICAgIG1ldGF2YXI9
Ik1FU1NBR0UiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgIGhlbHA9IkEgbWVzc2Fn
ZSB0byBpZGVudGlmeSB0aGUgcGF0Y2guICIKLSAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBw
cm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLWkiLCAiLS1pc3N1ZSIsIHR5
cGU9ImludCIsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJJU1NV
RSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iSXNzdWUgbnVtYmVyIHRv
IHdoaWNoIHRvIGFkZC4gRGVmYXVsdHMgdG8gbmV3IGlzc3VlLiIpCi1ncm91cC5hZGRfb3B0aW9u
KCItLWRvd25sb2FkX2Jhc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAg
ICBkZXN0PSJkb3dubG9hZF9iYXNlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
aGVscD0iQmFzZSBmaWxlcyB3aWxsIGJlIGRvd25sb2FkZWQgYnkgdGhlIHNlcnZlciAiCi0gICAg
ICAgICAgICAgICAgICIoc2lkZS1ieS1zaWRlIGRpZmZzIG1heSBub3Qgd29yayBvbiBmaWxlcyB3
aXRoIENScykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tcmV2IiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9InJldmlzaW9uIiwKLSAgICAgICAgICAgICAgICAgbWV0YXZhcj0iUkVWIiwgZGVmYXVsdD1O
b25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJCcmFuY2gvdHJlZS9yZXZpc2lvbiB0byBkaWZm
IGFnYWluc3QgKHVzZWQgYnkgRFZDUykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tc2VuZF9tYWls
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgZGVzdD0ic2VuZF9tYWls
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iU2VuZCBub3RpZmljYXRp
b24gZW1haWwgdG8gcmV2aWV3ZXJzLiIpCi0KLQotZGVmIEdldFJwY1NlcnZlcihvcHRpb25zKToK
LSAgIiIiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhbiBBYnN0cmFjdFJwY1NlcnZlci4KLQotICBS
ZXR1cm5zOgotICAgIEEgbmV3IEFic3RyYWN0UnBjU2VydmVyLCBvbiB3aGljaCBSUEMgY2FsbHMg
Y2FuIGJlIG1hZGUuCi0gICIiIgotCi0gIHJwY19zZXJ2ZXJfY2xhc3MgPSBIdHRwUnBjU2VydmVy
Ci0KLSAgZGVmIEdldFVzZXJDcmVkZW50aWFscygpOgotICAgICIiIlByb21wdHMgdGhlIHVzZXIg
Zm9yIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLiIiIgotICAgIGVtYWlsID0gb3B0aW9ucy5lbWFp
bAotICAgIGlmIGVtYWlsIGlzIE5vbmU6Ci0gICAgICBlbWFpbCA9IEdldEVtYWlsKCJFbWFpbCAo
bG9naW4gZm9yIHVwbG9hZGluZyB0byAlcykiICUgb3B0aW9ucy5zZXJ2ZXIpCi0gICAgcGFzc3dv
cmQgPSBnZXRwYXNzLmdldHBhc3MoIlBhc3N3b3JkIGZvciAlczogIiAlIGVtYWlsKQotICAgIHJl
dHVybiAoZW1haWwsIHBhc3N3b3JkKQotCi0gICMgSWYgdGhpcyBpcyB0aGUgZGV2X2FwcHNlcnZl
ciwgdXNlIGZha2UgYXV0aGVudGljYXRpb24uCi0gIGhvc3QgPSAob3B0aW9ucy5ob3N0IG9yIG9w
dGlvbnMuc2VydmVyKS5sb3dlcigpCi0gIGlmIGhvc3QgPT0gImxvY2FsaG9zdCIgb3IgaG9zdC5z
dGFydHN3aXRoKCJsb2NhbGhvc3Q6Iik6Ci0gICAgZW1haWwgPSBvcHRpb25zLmVtYWlsCi0gICAg
aWYgZW1haWwgaXMgTm9uZToKLSAgICAgIGVtYWlsID0gInRlc3RAZXhhbXBsZS5jb20iCi0gICAg
ICBsb2dnaW5nLmluZm8oIlVzaW5nIGRlYnVnIHVzZXIgJXMuICBPdmVycmlkZSB3aXRoIC0tZW1h
aWwiICUgZW1haWwpCi0gICAgc2VydmVyID0gcnBjX3NlcnZlcl9jbGFzcygKLSAgICAgICAgb3B0
aW9ucy5zZXJ2ZXIsCi0gICAgICAgIGxhbWJkYTogKGVtYWlsLCAicGFzc3dvcmQiKSwKLSAgICAg
ICAgaG9zdF9vdmVycmlkZT1vcHRpb25zLmhvc3QsCi0gICAgICAgIGV4dHJhX2hlYWRlcnM9eyJD
b29raWUiOgotICAgICAgICAgICAgICAgICAgICAgICAnZGV2X2FwcHNlcnZlcl9sb2dpbj0iJXM6
RmFsc2UiJyAlIGVtYWlsfSwKLSAgICAgICAgc2F2ZV9jb29raWVzPW9wdGlvbnMuc2F2ZV9jb29r
aWVzKQotICAgICMgRG9uJ3QgdHJ5IHRvIHRhbGsgdG8gQ2xpZW50TG9naW4uCi0gICAgc2VydmVy
LmF1dGhlbnRpY2F0ZWQgPSBUcnVlCi0gICAgcmV0dXJuIHNlcnZlcgotCi0gIHJldHVybiBycGNf
c2VydmVyX2NsYXNzKG9wdGlvbnMuc2VydmVyLCBHZXRVc2VyQ3JlZGVudGlhbHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGhvc3Rfb3ZlcnJpZGU9b3B0aW9ucy5ob3N0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYXZlX2Nvb2tpZXM9b3B0aW9ucy5zYXZlX2Nvb2tpZXMpCi0KLQot
ZGVmIEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZpZWxkcywgZmlsZXMpOgotICAiIiJFbmNvZGUg
Zm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydC9mb3JtLWRhdGEuCi0KLSAgQXJnczoKLSAgICBmaWVs
ZHM6IEEgc2VxdWVuY2Ugb2YgKG5hbWUsIHZhbHVlKSBlbGVtZW50cyBmb3IgcmVndWxhciBmb3Jt
IGZpZWxkcy4KLSAgICBmaWxlczogQSBzZXF1ZW5jZSBvZiAobmFtZSwgZmlsZW5hbWUsIHZhbHVl
KSBlbGVtZW50cyBmb3IgZGF0YSB0byBiZQotICAgICAgICAgICB1cGxvYWRlZCBhcyBmaWxlcy4K
LSAgUmV0dXJuczoKLSAgICAoY29udGVudF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5I
VFRQIGluc3RhbmNlLgotCi0gIFNvdXJjZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5j
b20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzE0NjMwNgotICAiIiIKLSAgQk9VTkRBUlkg
PSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCi0gIENSTEYgPSAnXHJcbicKLSAgbGlu
ZXMgPSBbXQotICBmb3IgKGtleSwgdmFsdWUpIGluIGZpZWxkczoKLSAgICBsaW5lcy5hcHBlbmQo
Jy0tJyArIEJPVU5EQVJZKQotICAgIGxpbmVzLmFwcGVuZCgnQ29udGVudC1EaXNwb3NpdGlvbjog
Zm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5KQotICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICBs
aW5lcy5hcHBlbmQodmFsdWUpCi0gIGZvciAoa2V5LCBmaWxlbmFtZSwgdmFsdWUpIGluIGZpbGVz
OgotICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCi0gICAgbGluZXMuYXBwZW5kKCdD
b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIjsgZmlsZW5hbWU9IiVzIicg
JQotICAgICAgICAgICAgIChrZXksIGZpbGVuYW1lKSkKLSAgICBsaW5lcy5hcHBlbmQoJ0NvbnRl
bnQtVHlwZTogJXMnICUgR2V0Q29udGVudFR5cGUoZmlsZW5hbWUpKQotICAgIGxpbmVzLmFwcGVu
ZCgnJykKLSAgICBsaW5lcy5hcHBlbmQodmFsdWUpCi0gIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9V
TkRBUlkgKyAnLS0nKQotICBsaW5lcy5hcHBlbmQoJycpCi0gIGJvZHkgPSBDUkxGLmpvaW4obGlu
ZXMpCi0gIGNvbnRlbnRfdHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0lcycg
JSBCT1VOREFSWQotICByZXR1cm4gY29udGVudF90eXBlLCBib2R5Ci0KLQotZGVmIEdldENvbnRl
bnRUeXBlKGZpbGVuYW1lKToKLSAgIiIiSGVscGVyIHRvIGd1ZXNzIHRoZSBjb250ZW50LXR5cGUg
ZnJvbSB0aGUgZmlsZW5hbWUuIiIiCi0gIHJldHVybiBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmaWxl
bmFtZSlbMF0gb3IgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKLQotCi0jIFVzZSBhIHNoZWxs
IGZvciBzdWJjb21tYW5kcyBvbiBXaW5kb3dzIHRvIGdldCBhIFBBVEggc2VhcmNoLgotdXNlX3No
ZWxsID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpCi0KLWRlZiBSdW5TaGVsbFdpdGhS
ZXR1cm5Db2RlKGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKToKLSAgIiIiRXhlY3V0ZXMgYSBjb21t
YW5kIGFuZCByZXR1cm5zIHRoZSBvdXRwdXQgZnJvbSBzdGRvdXQgYW5kIHRoZSByZXR1cm4gY29k
ZS4KLQotICBBcmdzOgotICAgIGNvbW1hbmQ6IENvbW1hbmQgdG8gZXhlY3V0ZS4KLSAgICBwcmlu
dF9vdXRwdXQ6IElmIFRydWUsIHRoZSBvdXRwdXQgaXMgcHJpbnRlZCB0byBzdGRvdXQuCi0gICAg
ICAgICAgICAgICAgICBJZiBGYWxzZSwgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgaWdub3Jl
ZC4KLSAgICB1bml2ZXJzYWxfbmV3bGluZXM6IFVzZSB1bml2ZXJzYWxfbmV3bGluZXMgZmxhZyAo
ZGVmYXVsdDogVHJ1ZSkuCi0KLSAgUmV0dXJuczoKLSAgICBUdXBsZSAob3V0cHV0LCByZXR1cm4g
Y29kZSkKLSAgIiIiCi0gIGxvZ2dpbmcuaW5mbygiUnVubmluZyAlcyIsIGNvbW1hbmQpCi0gIHAg
PSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
cj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPXVzZV9zaGVs
bCwgdW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYgcHJpbnRfb3V0
cHV0OgotICAgIG91dHB1dF9hcnJheSA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgIGxpbmUg
PSBwLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICBpZiBub3QgbGluZToKLSAgICAgICAgYnJlYWsK
LSAgICAgIHByaW50IGxpbmUuc3RyaXAoIlxuIikKLSAgICAgIG91dHB1dF9hcnJheS5hcHBlbmQo
bGluZSkKLSAgICBvdXRwdXQgPSAiIi5qb2luKG91dHB1dF9hcnJheSkKLSAgZWxzZToKLSAgICBv
dXRwdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAgcC53YWl0KCkKLSAgZXJyb3V0ID0gcC5zdGRlcnIu
cmVhZCgpCi0gIGlmIHByaW50X291dHB1dCBhbmQgZXJyb3V0OgotICAgIHByaW50ID4+c3lzLnN0
ZGVyciwgZXJyb3V0Ci0gIHAuc3Rkb3V0LmNsb3NlKCkKLSAgcC5zdGRlcnIuY2xvc2UoKQotICBy
ZXR1cm4gb3V0cHV0LCBwLnJldHVybmNvZGUKLQotCi1kZWYgUnVuU2hlbGwoY29tbWFuZCwgc2ls
ZW50X29rPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICBwcmlu
dF9vdXRwdXQ9RmFsc2UpOgotICBkYXRhLCByZXRjb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29k
ZShjb21tYW5kLCBwcmludF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYgcmV0Y29kZToKLSAgICBFcnJvckV4
aXQoIkdvdCBlcnJvciBzdGF0dXMgZnJvbSAlczpcbiVzIiAlIChjb21tYW5kLCBkYXRhKSkKLSAg
aWYgbm90IHNpbGVudF9vayBhbmQgbm90IGRhdGE6Ci0gICAgRXJyb3JFeGl0KCJObyBvdXRwdXQg
ZnJvbSAlcyIgJSBjb21tYW5kKQotICByZXR1cm4gZGF0YQotCi0KLWNsYXNzIFZlcnNpb25Db250
cm9sU3lzdGVtKG9iamVjdCk6Ci0gICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcHJvdmlkaW5nIGFu
IGludGVyZmFjZSB0byB0aGUgVkNTLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
KToKLSAgICAiIiJDb25zdHJ1Y3Rvci4KLQotICAgIEFyZ3M6Ci0gICAgICBvcHRpb25zOiBDb21t
YW5kIGxpbmUgb3B0aW9ucy4KLSAgICAiIiIKLSAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCi0K
LSAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBhcmdzKToKLSAgICAiIiJSZXR1cm4gdGhlIGN1cnJl
bnQgZGlmZiBhcyBhIHN0cmluZy4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBFeHRyYSBhcmd1
bWVudHMgdG8gcGFzcyB0byB0aGUgZGlmZiBjb21tYW5kLgotICAgICIiIgotICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3Mg
JXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9fY2xhc3NfXykKLQotICBkZWYgR2V0VW5rbm93bkZp
bGVzKHNlbGYpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZXMgdW5rbm93biB0byB0aGUg
VkNTLiIiIgotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICJhYnN0cmFj
dCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9fY2xhc3NfXykK
LQotICBkZWYgQ2hlY2tGb3JVbmtub3duRmlsZXMoc2VsZik6Ci0gICAgIiIiU2hvdyBhbiAiYXJl
IHlvdSBzdXJlPyIgcHJvbXB0IGlmIHRoZXJlIGFyZSB1bmtub3duIGZpbGVzLiIiIgotICAgIHVu
a25vd25fZmlsZXMgPSBzZWxmLkdldFVua25vd25GaWxlcygpCi0gICAgaWYgdW5rbm93bl9maWxl
czoKLSAgICAgIHByaW50ICJUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBub3QgYWRkZWQgdG8gdmVy
c2lvbiBjb250cm9sOiIKLSAgICAgIGZvciBsaW5lIGluIHVua25vd25fZmlsZXM6Ci0gICAgICAg
IHByaW50IGxpbmUKLSAgICAgIHByb21wdCA9ICJBcmUgeW91IHN1cmUgdG8gY29udGludWU/KHkv
TikgIgotICAgICAgYW5zd2VyID0gcmF3X2lucHV0KHByb21wdCkuc3RyaXAoKQotICAgICAgaWYg
YW5zd2VyICE9ICJ5IjoKLSAgICAgICAgRXJyb3JFeGl0KCJVc2VyIGFib3J0ZWQiKQotCi0gIGRl
ZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgIiIiR2V0IHRoZSBjb250ZW50IG9m
IHRoZSB1cHN0cmVhbSB2ZXJzaW9uIG9mIGEgZmlsZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBB
IHR1cGxlIChiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cykKLSAg
ICAgICAgYmFzZV9jb250ZW50OiBUaGUgY29udGVudHMgb2YgdGhlIGJhc2UgZmlsZS4KLSAgICAg
ICAgbmV3X2NvbnRlbnQ6IEZvciB0ZXh0IGZpbGVzLCB0aGlzIGlzIGVtcHR5LiAgRm9yIGJpbmFy
eSBmaWxlcywgdGhpcyBpcwotICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgbmV3IGZpbGUs
IHNpbmNlIHRoZSBkaWZmIG91dHB1dCB3b24ndCBjb250YWluCi0gICAgICAgICAgaW5mb3JtYXRp
b24gdG8gcmVjb25zdHJ1Y3QgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgICAgaXNfYmluYXJ5OiBU
cnVlIGlmZiB0aGUgZmlsZSBpcyBiaW5hcnkuCi0gICAgICAgIHN0YXR1czogVGhlIHN0YXR1cyBv
ZiB0aGUgZmlsZS4KLSAgICAiIiIKLQotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0g
ICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBz
ZWxmLl9fY2xhc3NfXykKLQotCi0gIGRlZiBHZXRCYXNlRmlsZXMoc2VsZiwgZGlmZik6Ci0gICAg
IiIiSGVscGVyIHRoYXQgY2FsbHMgR2V0QmFzZSBmaWxlIGZvciBlYWNoIGZpbGUgaW4gdGhlIHBh
dGNoLgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgZnJvbSBm
aWxlbmFtZSB0byBHZXRCYXNlRmlsZSdzIHR1cGxlLiAgRmlsZW5hbWVzCi0gICAgICBhcmUgcmV0
cmlldmVkIGJhc2VkIG9uIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAiSW5kZXg6IiBvcgotICAgICAg
IlByb3BlcnR5IGNoYW5nZXMgb246Ii4KLSAgICAiIiIKLSAgICBmaWxlcyA9IHt9Ci0gICAgZm9y
IGxpbmUgaW4gZGlmZi5zcGxpdGxpbmVzKFRydWUpOgotICAgICAgaWYgbGluZS5zdGFydHN3aXRo
KCdJbmRleDonKSBvciBsaW5lLnN0YXJ0c3dpdGgoJ1Byb3BlcnR5IGNoYW5nZXMgb246Jyk6Ci0g
ICAgICAgIHVudXNlZCwgZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgICAgIyBP
biBXaW5kb3dzIGlmIGEgZmlsZSBoYXMgcHJvcGVydHkgY2hhbmdlcyBpdHMgZmlsZW5hbWUgdXNl
cyAnXCcKLSAgICAgICAgIyBpbnN0ZWFkIG9mICcvJy4KLSAgICAgICAgZmlsZW5hbWUgPSBmaWxl
bmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICBmaWxlc1tmaWxlbmFtZV0g
PSBzZWxmLkdldEJhc2VGaWxlKGZpbGVuYW1lKQotICAgIHJldHVybiBmaWxlcwotCi0KLSAgZGVm
IFVwbG9hZEJhc2VGaWxlcyhzZWxmLCBpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hfbGlzdCwgcGF0
Y2hzZXQsIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgZmlsZXMpOgotICAgICIiIlVw
bG9hZHMgdGhlIGJhc2UgZmlsZXMgKGFuZCBpZiBuZWNlc3NhcnksIHRoZSBjdXJyZW50IG9uZXMg
YXMgd2VsbCkuIiIiCi0KLSAgICBkZWYgVXBsb2FkRmlsZShmaWxlbmFtZSwgZmlsZV9pZCwgY29u
dGVudCwgaXNfYmluYXJ5LCBzdGF0dXMsIGlzX2Jhc2UpOgotICAgICAgIiIiVXBsb2FkcyBhIGZp
bGUgdG8gdGhlIHNlcnZlci4iIiIKLSAgICAgIGZpbGVfdG9vX2xhcmdlID0gRmFsc2UKLSAgICAg
IGlmIGlzX2Jhc2U6Ci0gICAgICAgIHR5cGUgPSAiYmFzZSIKLSAgICAgIGVsc2U6Ci0gICAgICAg
IHR5cGUgPSAiY3VycmVudCIKLSAgICAgIGlmIGxlbihjb250ZW50KSA+IE1BWF9VUExPQURfU0la
RToKLSAgICAgICAgcHJpbnQgKCJOb3QgdXBsb2FkaW5nIHRoZSAlcyBmaWxlIGZvciAlcyBiZWNh
dXNlIGl0J3MgdG9vIGxhcmdlLiIgJQotICAgICAgICAgICAgICAgKHR5cGUsIGZpbGVuYW1lKSkK
LSAgICAgICAgZmlsZV90b29fbGFyZ2UgPSBUcnVlCi0gICAgICAgIGNvbnRlbnQgPSAiIgotICAg
ICAgY2hlY2tzdW0gPSBtZDUubmV3KGNvbnRlbnQpLmhleGRpZ2VzdCgpCi0gICAgICBpZiBvcHRp
b25zLnZlcmJvc2UgPiAwIGFuZCBub3QgZmlsZV90b29fbGFyZ2U6Ci0gICAgICAgIHByaW50ICJV
cGxvYWRpbmcgJXMgZmlsZSBmb3IgJXMiICUgKHR5cGUsIGZpbGVuYW1lKQotICAgICAgdXJsID0g
Ii8lZC91cGxvYWRfY29udGVudC8lZC8lZCIgJSAoaW50KGlzc3VlKSwgaW50KHBhdGNoc2V0KSwg
ZmlsZV9pZCkKLSAgICAgIGZvcm1fZmllbGRzID0gWygiZmlsZW5hbWUiLCBmaWxlbmFtZSksCi0g
ICAgICAgICAgICAgICAgICAgICAoInN0YXR1cyIsIHN0YXR1cyksCi0gICAgICAgICAgICAgICAg
ICAgICAoImNoZWNrc3VtIiwgY2hlY2tzdW0pLAotICAgICAgICAgICAgICAgICAgICAgKCJpc19i
aW5hcnkiLCBzdHIoaXNfYmluYXJ5KSksCi0gICAgICAgICAgICAgICAgICAgICAoImlzX2N1cnJl
bnQiLCBzdHIobm90IGlzX2Jhc2UpKSwKLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgaWYg
ZmlsZV90b29fbGFyZ2U6Ci0gICAgICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoImZpbGVfdG9vX2xh
cmdlIiwgIjEiKSkKLSAgICAgIGlmIG9wdGlvbnMuZW1haWw6Ci0gICAgICAgIGZvcm1fZmllbGRz
LmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgICAgIGN0eXBlLCBib2R5ID0gRW5j
b2RlTXVsdGlwYXJ0Rm9ybURhdGEoZm9ybV9maWVsZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsoImRhdGEiLCBmaWxlbmFtZSwgY29udGVudCldKQotICAg
ICAgcmVzcG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT1jdHlwZSkKLSAgICAgIGlm
IG5vdCByZXNwb25zZV9ib2R5LnN0YXJ0c3dpdGgoIk9LIik6Ci0gICAgICAgIFN0YXR1c1VwZGF0
ZSgiICAtLT4gJXMiICUgcmVzcG9uc2VfYm9keSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
IHBhdGNoZXMgPSBkaWN0KCkKLSAgICBbcGF0Y2hlcy5zZXRkZWZhdWx0KHYsIGspIGZvciBrLCB2
IGluIHBhdGNoX2xpc3RdCi0gICAgZm9yIGZpbGVuYW1lIGluIHBhdGNoZXMua2V5cygpOgotICAg
ICAgYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMgPSBmaWxlc1tm
aWxlbmFtZV0KLSAgICAgIGZpbGVfaWRfc3RyID0gcGF0Y2hlcy5nZXQoZmlsZW5hbWUpCi0gICAg
ICBpZiBmaWxlX2lkX3N0ci5maW5kKCJub2Jhc2UiKSAhPSAtMToKLSAgICAgICAgYmFzZV9jb250
ZW50ID0gTm9uZQotICAgICAgICBmaWxlX2lkX3N0ciA9IGZpbGVfaWRfc3RyW2ZpbGVfaWRfc3Ry
LnJmaW5kKCJfIikgKyAxOl0KLSAgICAgIGZpbGVfaWQgPSBpbnQoZmlsZV9pZF9zdHIpCi0gICAg
ICBpZiBiYXNlX2NvbnRlbnQgIT0gTm9uZToKLSAgICAgICAgVXBsb2FkRmlsZShmaWxlbmFtZSwg
ZmlsZV9pZCwgYmFzZV9jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgVHJ1ZSkKLSAgICAgIGlm
IG5ld19jb250ZW50ICE9IE5vbmU6Ci0gICAgICAgIFVwbG9hZEZpbGUoZmlsZW5hbWUsIGZpbGVf
aWQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgRmFsc2UpCi0KLSAgZGVmIElzSW1h
Z2Uoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZW5hbWUg
aGFzIGFuIGltYWdlIGV4dGVuc2lvbi4iIiIKLSAgICBtaW1ldHlwZSA9ICBtaW1ldHlwZXMuZ3Vl
c3NfdHlwZShmaWxlbmFtZSlbMF0KLSAgICBpZiBub3QgbWltZXR5cGU6Ci0gICAgICByZXR1cm4g
RmFsc2UKLSAgICByZXR1cm4gbWltZXR5cGUuc3RhcnRzd2l0aCgiaW1hZ2UvIikKLQotCi1jbGFz
cyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKLSAgIiIiSW1wbGVtZW50YXRp
b24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFjZSBmb3IgU3VidmVyc2lvbi4i
IiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIoU3VidmVyc2lv
blZDUywgc2VsZikuX19pbml0X18ob3B0aW9ucykKLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNp
b246Ci0gICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiKFxkKykoOihcZCspKT8iLCBzZWxmLm9wdGlv
bnMucmV2aXNpb24pCi0gICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgIEVycm9yRXhpdCgiSW52
YWxpZCBTdWJ2ZXJzaW9uIHJldmlzaW9uICVzLiIgJSBzZWxmLm9wdGlvbnMucmV2aXNpb24pCi0g
ICAgICBzZWxmLnJldl9zdGFydCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICBzZWxmLnJldl9lbmQg
PSBtYXRjaC5ncm91cCgzKQotICAgIGVsc2U6Ci0gICAgICBzZWxmLnJldl9zdGFydCA9IHNlbGYu
cmV2X2VuZCA9IE5vbmUKLSAgICAjIENhY2hlIG91dHB1dCBmcm9tICJzdm4gbGlzdCAtciBSRVZO
TyBkaXJuYW1lIi4KLSAgICAjIEtleXM6IGRpcm5hbWUsIFZhbHVlczogMi10dXBsZSAob3VwdXQg
Zm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCi0gICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9Ci0g
ICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBpbiBh
biBvbGRlciByZXZpc2lvbi4KLSAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNzIGl0
IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KLSAgICByZXF1aXJlZCA9IHNl
bGYub3B0aW9ucy5kb3dubG9hZF9iYXNlIG9yIHNlbGYub3B0aW9ucy5yZXZpc2lvbiBpcyBub3Qg
Tm9uZQotICAgIHNlbGYuc3ZuX2Jhc2UgPSBzZWxmLl9HdWVzc0Jhc2UocmVxdWlyZWQpCi0KLSAg
ZGVmIEd1ZXNzQmFzZShzZWxmLCByZXF1aXJlZCk6Ci0gICAgIiIiV3JhcHBlciBmb3IgX0d1ZXNz
QmFzZS4iIiIKLSAgICByZXR1cm4gc2VsZi5zdm5fYmFzZQotCi0gIGRlZiBfR3Vlc3NCYXNlKHNl
bGYsIHJlcXVpcmVkKToKLSAgICAiIiJSZXR1cm5zIHRoZSBTVk4gYmFzZSBVUkwuCi0KLSAgICBB
cmdzOgotICAgICAgcmVxdWlyZWQ6IElmIHRydWUsIGV4aXRzIGlmIHRoZSB1cmwgY2FuJ3QgYmUg
Z3Vlc3NlZCwgb3RoZXJ3aXNlIE5vbmUgaXMKLSAgICAgICAgcmV0dXJuZWQuCi0gICAgIiIiCi0g
ICAgaW5mbyA9IFJ1blNoZWxsKFsic3ZuIiwgImluZm8iXSkKLSAgICBmb3IgbGluZSBpbiBpbmZv
LnNwbGl0bGluZXMoKToKLSAgICAgIHdvcmRzID0gbGluZS5zcGxpdCgpCi0gICAgICBpZiBsZW4o
d29yZHMpID09IDIgYW5kIHdvcmRzWzBdID09ICJVUkw6IjoKLSAgICAgICAgdXJsID0gd29yZHNb
MV0KLSAgICAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50
ID0gdXJscGFyc2UudXJscGFyc2UodXJsKQotICAgICAgICB1c2VybmFtZSwgbmV0bG9jID0gdXJs
bGliLnNwbGl0dXNlcihuZXRsb2MpCi0gICAgICAgIGlmIHVzZXJuYW1lOgotICAgICAgICAgIGxv
Z2dpbmcuaW5mbygiUmVtb3ZlZCB1c2VybmFtZSBmcm9tIGJhc2UgVVJMIikKLSAgICAgICAgaWYg
bmV0bG9jLmVuZHN3aXRoKCJzdm4ucHl0aG9uLm9yZyIpOgotICAgICAgICAgIGlmIG5ldGxvYyA9
PSAic3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCIvcHJv
amVjdHMvIik6Ci0gICAgICAgICAgICAgIHBhdGggPSBwYXRoWzk6XQotICAgICAgICAgIGVsaWYg
bmV0bG9jICE9ICJweXRob25kZXZAc3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAgICAgRXJyb3JF
eGl0KCJVbnJlY29nbml6ZWQgUHl0aG9uIFVSTDogJXMiICUgdXJsKQotICAgICAgICAgIGJhc2Ug
PSAiaHR0cDovL3N2bi5weXRob24ub3JnL3ZpZXcvKmNoZWNrb3V0KiVzLyIgJSBwYXRoCi0gICAg
ICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIFB5dGhvbiBiYXNlID0gJXMiLCBiYXNlKQotICAg
ICAgICBlbGlmIG5ldGxvYy5lbmRzd2l0aCgic3ZuLmNvbGxhYi5uZXQiKToKLSAgICAgICAgICBp
ZiBwYXRoLnN0YXJ0c3dpdGgoIi9yZXBvcy8iKToKLSAgICAgICAgICAgIHBhdGggPSBwYXRoWzY6
XQotICAgICAgICAgIGJhc2UgPSAiaHR0cDovL3N2bi5jb2xsYWIubmV0L3ZpZXd2Yy8qY2hlY2tv
dXQqJXMvIiAlIHBhdGgKLSAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgQ29sbGFiTmV0
IGJhc2UgPSAlcyIsIGJhc2UpCi0gICAgICAgIGVsaWYgbmV0bG9jLmVuZHN3aXRoKCIuZ29vZ2xl
Y29kZS5jb20iKToKLSAgICAgICAgICBwYXRoID0gcGF0aCArICIvIgotICAgICAgICAgIGJhc2Ug
PSB1cmxwYXJzZS51cmx1bnBhcnNlKCgiaHR0cCIsIG5ldGxvYywgcGF0aCwgcGFyYW1zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSwgZnJhZ21lbnQpKQotICAg
ICAgICAgIGxvZ2dpbmcuaW5mbygiR3Vlc3NlZCBHb29nbGUgQ29kZSBiYXNlID0gJXMiLCBiYXNl
KQotICAgICAgICBlbHNlOgotICAgICAgICAgIHBhdGggPSBwYXRoICsgIi8iCi0gICAgICAgICAg
YmFzZSA9IHVybHBhcnNlLnVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LCBmcmFnbWVudCkp
Ci0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIGJhc2UgPSAlcyIsIGJhc2UpCi0gICAg
ICAgIHJldHVybiBiYXNlCi0gICAgaWYgcmVxdWlyZWQ6Ci0gICAgICBFcnJvckV4aXQoIkNhbid0
IGZpbmQgVVJMIGluIG91dHB1dCBmcm9tIHN2biBpbmZvIikKLSAgICByZXR1cm4gTm9uZQotCi0g
IGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgYXJncyk6Ci0gICAgY21kID0gWyJzdm4iLCAiZGlmZiJd
Ci0gICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgotICAgICAgY21kICs9IFsiLXIiLCBzZWxm
Lm9wdGlvbnMucmV2aXNpb25dCi0gICAgY21kLmV4dGVuZChhcmdzKQotICAgIGRhdGEgPSBSdW5T
aGVsbChjbWQpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVz
KCk6Ci0gICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkluZGV4OiIpIG9yIGxpbmUuc3RhcnRzd2l0
aCgiUHJvcGVydHkgY2hhbmdlcyBvbjoiKToKLSAgICAgICAgY291bnQgKz0gMQotICAgICAgICBs
b2dnaW5nLmluZm8obGluZSkKLSAgICBpZiBub3QgY291bnQ6Ci0gICAgICBFcnJvckV4aXQoIk5v
IHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0IGZyb20gc3ZuIGRpZmYiKQotICAgIHJldHVy
biBkYXRhCi0KLSAgZGVmIF9Db2xsYXBzZUtleXdvcmRzKHNlbGYsIGNvbnRlbnQsIGtleXdvcmRf
c3RyKToKLSAgICAiIiJDb2xsYXBzZXMgU1ZOIGtleXdvcmRzLiIiIgotICAgICMgc3ZuIGNhdCB0
cmFuc2xhdGVzIGtleXdvcmRzIGJ1dCBzdm4gZGlmZiBkb2Vzbid0LiBBcyBhIHJlc3VsdCBvZiB0
aGlzCi0gICAgIyBiZWhhdmlvciBwYXRjaGluZy5QYXRjaENodW5rcygpIGZhaWxzIHdpdGggYSBj
aHVuayBtaXNtYXRjaCBlcnJvci4KLSAgICAjIFRoaXMgcGFydCB3YXMgb3JpZ2luYWxseSB3cml0
dGVuIGJ5IHRoZSBSZXZpZXcgQm9hcmQgZGV2ZWxvcG1lbnQgdGVhbQotICAgICMgd2hvIGhhZCB0
aGUgc2FtZSBwcm9ibGVtIChodHRwOi8vcmV2aWV3cy5yZXZpZXctYm9hcmQub3JnL3IvMjc2Lyku
Ci0gICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtub3duIGFsaWFzZXMKLSAgICBzdm5fa2V5
d29yZHMgPSB7Ci0gICAgICAjIFN0YW5kYXJkIGtleXdvcmRzCi0gICAgICAnRGF0ZSc6ICAgICAg
ICAgICAgICAgIFsnRGF0ZScsICdMYXN0Q2hhbmdlZERhdGUnXSwKLSAgICAgICdSZXZpc2lvbic6
ICAgICAgICAgICAgWydSZXZpc2lvbicsICdMYXN0Q2hhbmdlZFJldmlzaW9uJywgJ1JldiddLAot
ICAgICAgJ0F1dGhvcic6ICAgICAgICAgICAgICBbJ0F1dGhvcicsICdMYXN0Q2hhbmdlZEJ5J10s
Ci0gICAgICAnSGVhZFVSTCc6ICAgICAgICAgICAgIFsnSGVhZFVSTCcsICdVUkwnXSwKLSAgICAg
ICdJZCc6ICAgICAgICAgICAgICAgICAgWydJZCddLAotCi0gICAgICAjIEFsaWFzZXMKLSAgICAg
ICdMYXN0Q2hhbmdlZERhdGUnOiAgICAgWydMYXN0Q2hhbmdlZERhdGUnLCAnRGF0ZSddLAotICAg
ICAgJ0xhc3RDaGFuZ2VkUmV2aXNpb24nOiBbJ0xhc3RDaGFuZ2VkUmV2aXNpb24nLCAnUmV2Jywg
J1JldmlzaW9uJ10sCi0gICAgICAnTGFzdENoYW5nZWRCeSc6ICAgICAgIFsnTGFzdENoYW5nZWRC
eScsICdBdXRob3InXSwKLSAgICAgICdVUkwnOiAgICAgICAgICAgICAgICAgWydVUkwnLCAnSGVh
ZFVSTCddLAotICAgIH0KLQotICAgIGRlZiByZXBsKG0pOgotICAgICAgIGlmIG0uZ3JvdXAoMik6
Ci0gICAgICAgICByZXR1cm4gIiQlczo6JXMkIiAlIChtLmdyb3VwKDEpLCAiICIgKiBsZW4obS5n
cm91cCgzKSkpCi0gICAgICAgcmV0dXJuICIkJXMkIiAlIG0uZ3JvdXAoMSkKLSAgICBrZXl3b3Jk
cyA9IFtrZXl3b3JkCi0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4ga2V5d29yZF9zdHIuc3Bs
aXQoIiAiKQotICAgICAgICAgICAgICAgIGZvciBrZXl3b3JkIGluIHN2bl9rZXl3b3Jkcy5nZXQo
bmFtZSwgW10pXQotICAgIHJldHVybiByZS5zdWIociJcJCglcyk6KDo/KShbXlwkXSspXCQiICUg
J3wnLmpvaW4oa2V5d29yZHMpLCByZXBsLCBjb250ZW50KQotCi0gIGRlZiBHZXRVbmtub3duRmls
ZXMoc2VsZik6Ci0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJzdm4iLCAic3RhdHVzIiwgIi0taWdu
b3JlLWV4dGVybmFscyJdLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICB1bmtub3duX2ZpbGVzID0gW10K
LSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXQoIlxuIik6Ci0gICAgICBpZiBsaW5lIGFuZCBs
aW5lWzBdID09ICI/IjoKLSAgICAgICAgdW5rbm93bl9maWxlcy5hcHBlbmQobGluZSkKLSAgICBy
ZXR1cm4gdW5rbm93bl9maWxlcwotCi0gIGRlZiBSZWFkRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0g
ICAgIiIiUmV0dXJucyB0aGUgY29udGVudHMgb2YgYSBmaWxlLiIiIgotICAgIGZpbGUgPSBvcGVu
KGZpbGVuYW1lLCAncmInKQotICAgIHJlc3VsdCA9ICIiCi0gICAgdHJ5OgotICAgICAgcmVzdWx0
ID0gZmlsZS5yZWFkKCkKLSAgICBmaW5hbGx5OgotICAgICAgZmlsZS5jbG9zZSgpCi0gICAgcmV0
dXJuIHJlc3VsdAotCi0gIGRlZiBHZXRTdGF0dXMoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIlJl
dHVybnMgdGhlIHN0YXR1cyBvZiBhIGZpbGUuIiIiCi0gICAgaWYgbm90IHNlbGYub3B0aW9ucy5y
ZXZpc2lvbjoKLSAgICAgIHN0YXR1cyA9IFJ1blNoZWxsKFsic3ZuIiwgInN0YXR1cyIsICItLWln
bm9yZS1leHRlcm5hbHMiLCBmaWxlbmFtZV0pCi0gICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg
ICBFcnJvckV4aXQoInN2biBzdGF0dXMgcmV0dXJuZWQgbm8gb3V0cHV0IGZvciAlcyIgJSBmaWxl
bmFtZSkKLSAgICAgIHN0YXR1c19saW5lcyA9IHN0YXR1cy5zcGxpdGxpbmVzKCkKLSAgICAgICMg
SWYgZmlsZSBpcyBpbiBhIGNsLCB0aGUgb3V0cHV0IHdpbGwgYmVnaW4gd2l0aAotICAgICAgIyAi
XG4tLS0gQ2hhbmdlbGlzdCAnY2xfbmFtZSc6XG4iLiAgU2VlCi0gICAgICAjIGh0dHA6Ly9zdm4u
Y29sbGFiLm5ldC9yZXBvcy9zdm4vdHJ1bmsvbm90ZXMvY2hhbmdlbGlzdC1kZXNpZ24udHh0Ci0g
ICAgICBpZiAobGVuKHN0YXR1c19saW5lcykgPT0gMyBhbmQKLSAgICAgICAgICBub3Qgc3RhdHVz
X2xpbmVzWzBdIGFuZAotICAgICAgICAgIHN0YXR1c19saW5lc1sxXS5zdGFydHN3aXRoKCItLS0g
Q2hhbmdlbGlzdCIpKToKLSAgICAgICAgc3RhdHVzID0gc3RhdHVzX2xpbmVzWzJdCi0gICAgICBl
bHNlOgotICAgICAgICBzdGF0dXMgPSBzdGF0dXNfbGluZXNbMF0KLSAgICAjIElmIHdlIGhhdmUg
YSByZXZpc2lvbiB0byBkaWZmIGFnYWluc3Qgd2UgbmVlZCB0byBydW4gInN2biBsaXN0IgotICAg
ICMgZm9yIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmV2aXNpb24gYW5kIGNvbXBhcmUgdGhlIHJlc3Vs
dHMgdG8gZ2V0Ci0gICAgIyB0aGUgY29ycmVjdCBzdGF0dXMgZm9yIGEgZmlsZS4KLSAgICBlbHNl
OgotICAgICAgZGlybmFtZSwgcmVsZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQot
ICAgICAgaWYgZGlybmFtZSBub3QgaW4gc2VsZi5zdm5sc19jYWNoZToKLSAgICAgICAgY21kID0g
WyJzdm4iLCAibGlzdCIsICItciIsIHNlbGYucmV2X3N0YXJ0LCBkaXJuYW1lIG9yICIuIl0KLSAg
ICAgICAgb3V0LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAg
ICAgIGlmIHJldHVybmNvZGU6Ci0gICAgICAgICAgRXJyb3JFeGl0KCJGYWlsZWQgdG8gZ2V0IHN0
YXR1cyBmb3IgJXMuIiAlIGZpbGVuYW1lKQotICAgICAgICBvbGRfZmlsZXMgPSBvdXQuc3BsaXRs
aW5lcygpCi0gICAgICAgIGFyZ3MgPSBbInN2biIsICJsaXN0Il0KLSAgICAgICAgaWYgc2VsZi5y
ZXZfZW5kOgotICAgICAgICAgIGFyZ3MgKz0gWyItciIsIHNlbGYucmV2X2VuZF0KLSAgICAgICAg
Y21kID0gYXJncyArIFtkaXJuYW1lIG9yICIuIl0KLSAgICAgICAgb3V0LCByZXR1cm5jb2RlID0g
UnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAgICAgIGlmIHJldHVybmNvZGU6Ci0gICAg
ICAgICAgRXJyb3JFeGl0KCJGYWlsZWQgdG8gcnVuIGNvbW1hbmQgJXMiICUgY21kKQotICAgICAg
ICBzZWxmLnN2bmxzX2NhY2hlW2Rpcm5hbWVdID0gKG9sZF9maWxlcywgb3V0LnNwbGl0bGluZXMo
KSkKLSAgICAgIG9sZF9maWxlcywgbmV3X2ZpbGVzID0gc2VsZi5zdm5sc19jYWNoZVtkaXJuYW1l
XQotICAgICAgaWYgcmVsZmlsZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxlbmFtZSBub3Qg
aW4gbmV3X2ZpbGVzOgotICAgICAgICBzdGF0dXMgPSAiRCAgICIKLSAgICAgIGVsaWYgcmVsZmls
ZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxlbmFtZSBpbiBuZXdfZmlsZXM6Ci0gICAgICAg
IHN0YXR1cyA9ICJNICAgIgotICAgICAgZWxzZToKLSAgICAgICAgc3RhdHVzID0gIkEgICAiCi0g
ICAgcmV0dXJuIHN0YXR1cwotCi0gIGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0g
ICAgc3RhdHVzID0gc2VsZi5HZXRTdGF0dXMoZmlsZW5hbWUpCi0gICAgYmFzZV9jb250ZW50ID0g
Tm9uZQotICAgIG5ld19jb250ZW50ID0gTm9uZQotCi0gICAgIyBJZiBhIGZpbGUgaXMgY29waWVk
IGl0cyBzdGF0dXMgd2lsbCBiZSAiQSAgKyIsIHdoaWNoIHNpZ25pZmllcwotICAgICMgImFkZGl0
aW9uLXdpdGgtaGlzdG9yeSIuICBTZWUgInN2biBzdCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBX
ZSBuZWVkIHRvCi0gICAgIyB1cGxvYWQgdGhlIG9yaWdpbmFsIGZpbGUgb3IgZWxzZSBkaWZmIHBh
cnNpbmcgd2lsbCBmYWlsIGlmIHRoZSBmaWxlIHdhcwotICAgICMgZWRpdGVkLgotICAgIGlmIHN0
YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSAhPSAiKyI6Ci0gICAgICAjIFdlJ2xsIG5lZWQg
dG8gdXBsb2FkIHRoZSBuZXcgY29udGVudCBpZiB3ZSdyZSBhZGRpbmcgYSBiaW5hcnkgZmlsZQot
ICAgICAgIyBzaW5jZSBkaWZmJ3Mgb3V0cHV0IHdvbid0IGNvbnRhaW4gaXQuCi0gICAgICBtaW1l
dHlwZSA9IFJ1blNoZWxsKFsic3ZuIiwgInByb3BnZXQiLCAic3ZuOm1pbWUtdHlwZSIsIGZpbGVu
YW1lXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCi0gICAgICBi
YXNlX2NvbnRlbnQgPSAiIgotICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5kIG5vdCBtaW1l
dHlwZS5zdGFydHN3aXRoKCJ0ZXh0LyIpCi0gICAgICBpZiBpc19iaW5hcnkgYW5kIHNlbGYuSXNJ
bWFnZShmaWxlbmFtZSk6Ci0gICAgICAgIG5ld19jb250ZW50ID0gc2VsZi5SZWFkRmlsZShmaWxl
bmFtZSkKLSAgICBlbGlmIChzdGF0dXNbMF0gaW4gKCJNIiwgIkQiLCAiUiIpIG9yCi0gICAgICAg
ICAgKHN0YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSA9PSAiKyIpIG9yICAjIENvcGllZCBm
aWxlLgotICAgICAgICAgIChzdGF0dXNbMF0gPT0gIiAiIGFuZCBzdGF0dXNbMV0gPT0gIk0iKSk6
ICAjIFByb3BlcnR5IGNoYW5nZS4KLSAgICAgIGFyZ3MgPSBbXQotICAgICAgaWYgc2VsZi5vcHRp
b25zLnJldmlzaW9uOgotICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2Us
IGZpbGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgRG9uJ3Qg
Y2hhbmdlIGZpbGVuYW1lLCBpdCdzIG5lZWRlZCBsYXRlci4KLSAgICAgICAgdXJsID0gZmlsZW5h
bWUKLSAgICAgICAgYXJncyArPSBbIi1yIiwgIkJBU0UiXQotICAgICAgY21kID0gWyJzdm4iXSAr
IGFyZ3MgKyBbInByb3BnZXQiLCAic3ZuOm1pbWUtdHlwZSIsIHVybF0KLSAgICAgIG1pbWV0eXBl
LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAgICBpZiByZXR1
cm5jb2RlOgotICAgICAgICAjIEZpbGUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlcXVlc3RlZCBy
ZXZpc2lvbi4KLSAgICAgICAgIyBSZXNldCBtaW1ldHlwZSwgaXQgY29udGFpbnMgYW4gZXJyb3Ig
bWVzc2FnZS4KLSAgICAgICAgbWltZXR5cGUgPSAiIgotICAgICAgZ2V0X2Jhc2UgPSBGYWxzZQot
ICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5kIG5vdCBtaW1ldHlwZS5zdGFydHN3aXRoKCJ0
ZXh0LyIpCi0gICAgICBpZiBzdGF0dXNbMF0gPT0gIiAiOgotICAgICAgICAjIEVtcHR5IGJhc2Ug
Y29udGVudCBqdXN0IHRvIGZvcmNlIGFuIHVwbG9hZC4KLSAgICAgICAgYmFzZV9jb250ZW50ID0g
IiIKLSAgICAgIGVsaWYgaXNfYmluYXJ5OgotICAgICAgICBpZiBzZWxmLklzSW1hZ2UoZmlsZW5h
bWUpOgotICAgICAgICAgIGdldF9iYXNlID0gVHJ1ZQotICAgICAgICAgIGlmIHN0YXR1c1swXSA9
PSAiTSI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXZfZW5kOgotICAgICAgICAgICAgICBu
ZXdfY29udGVudCA9IHNlbGYuUmVhZEZpbGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1l
LCBzZWxmLnJldl9lbmQpCi0gICAgICAgICAgICAgIG5ld19jb250ZW50ID0gUnVuU2hlbGwoWyJz
dm4iLCAiY2F0IiwgdXJsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgc2lsZW50X29rPVRydWUpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgYmFzZV9jb250ZW50ID0gIiIKLSAgICAgIGVsc2U6Ci0gICAgICAgIGdldF9iYXNl
ID0gVHJ1ZQotCi0gICAgICBpZiBnZXRfYmFzZToKLSAgICAgICAgaWYgaXNfYmluYXJ5OgotICAg
ICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcyA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgdW5pdmVyc2FsX25ld2xpbmVzID0gVHJ1ZQotICAgICAgICBpZiBzZWxmLnJldl9zdGFydDoK
LSAgICAgICAgICAjICJzdm4gY2F0IC1yIFJFViBkZWxldGVfZmlsZS50eHQiIGRvZXNuJ3Qgd29y
ay4gY2F0IHJlcXVpcmVzCi0gICAgICAgICAgIyB0aGUgZnVsbCBVUkwgd2l0aCAiQFJFViIgYXBw
ZW5kZWQgaW5zdGVhZCBvZiB1c2luZyAiLXIiIG9wdGlvbi4KLSAgICAgICAgICB1cmwgPSAiJXMv
JXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAg
ICAgICBiYXNlX2NvbnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCB1cmxdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz11bml2ZXJzYWxf
bmV3bGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRy
dWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgYmFzZV9jb250ZW50ID0gUnVuU2hlbGwoWyJz
dm4iLCAiY2F0IiwgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaXZlcnNhbF9uZXdsaW5lcz11bml2ZXJzYWxfbmV3bGluZXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCi0gICAgICAgIGlmIG5vdCBpc19iaW5h
cnk6Ci0gICAgICAgICAgYXJncyA9IFtdCi0gICAgICAgICAgaWYgc2VsZi5yZXZfc3RhcnQ6Ci0g
ICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1lLCBz
ZWxmLnJldl9zdGFydCkKLSAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gZmlsZW5h
bWUKLSAgICAgICAgICAgIGFyZ3MgKz0gWyItciIsICJCQVNFIl0KLSAgICAgICAgICBjbWQgPSBb
InN2biJdICsgYXJncyArIFsicHJvcGdldCIsICJzdm46a2V5d29yZHMiLCB1cmxdCi0gICAgICAg
ICAga2V5d29yZHMsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNtZCkKLSAg
ICAgICAgICBpZiBrZXl3b3JkcyBhbmQgbm90IHJldHVybmNvZGU6Ci0gICAgICAgICAgICBiYXNl
X2NvbnRlbnQgPSBzZWxmLl9Db2xsYXBzZUtleXdvcmRzKGJhc2VfY29udGVudCwga2V5d29yZHMp
Ci0gICAgZWxzZToKLSAgICAgIFN0YXR1c1VwZGF0ZSgic3ZuIHN0YXR1cyByZXR1cm5lZCB1bmV4
cGVjdGVkIG91dHB1dDogJXMiICUgc3RhdHVzKQotICAgICAgc3lzLmV4aXQoMSkKLSAgICByZXR1
cm4gYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXNbMDo1XQotCi0K
LWNsYXNzIEdpdFZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6Ci0gICIiIkltcGxlbWVudGF0aW9u
IG9mIHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbnRlcmZhY2UgZm9yIEdpdC4iIiIKLQotICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIoR2l0VkNTLCBzZWxmKS5fX2lu
aXRfXyhvcHRpb25zKQotICAgICMgTWFwIG9mIGZpbGVuYW1lIC0+IGhhc2ggb2YgYmFzZSBmaWxl
LgotICAgIHNlbGYuYmFzZV9oYXNoZXMgPSB7fQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwg
ZXh0cmFfYXJncyk6Ci0gICAgIyBUaGlzIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBzdm4ncyBH
ZW5lcmF0ZURpZmYgYmVjYXVzZSB3ZSBtdXN0IGNvbnZlcnQKLSAgICAjIHRoZSBkaWZmIG91dHB1
dCB0byBpbmNsdWRlIGFuIHN2bi1zdHlsZSAiSW5kZXg6IiBsaW5lIGFzIHdlbGwgYXMgcmVjb3Jk
Ci0gICAgIyB0aGUgaGFzaGVzIG9mIHRoZSBiYXNlIGZpbGVzLCBzbyB3ZSBjYW4gdXBsb2FkIHRo
ZW0gYWxvbmcgd2l0aCBvdXIgZGlmZi4KLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246Ci0g
ICAgICBleHRyYV9hcmdzID0gW3NlbGYub3B0aW9ucy5yZXZpc2lvbl0gKyBleHRyYV9hcmdzCi0g
ICAgZ2l0ZGlmZiA9IFJ1blNoZWxsKFsiZ2l0IiwgImRpZmYiLCAiLS1mdWxsLWluZGV4Il0gKyBl
eHRyYV9hcmdzKQotICAgIHN2bmRpZmYgPSBbXQotICAgIGZpbGVjb3VudCA9IDAKLSAgICBmaWxl
bmFtZSA9IE5vbmUKLSAgICBmb3IgbGluZSBpbiBnaXRkaWZmLnNwbGl0bGluZXMoKToKLSAgICAg
IG1hdGNoID0gcmUubWF0Y2gociJkaWZmIC0tZ2l0IGEvKC4qKSBiLy4qJCIsIGxpbmUpCi0gICAg
ICBpZiBtYXRjaDoKLSAgICAgICAgZmlsZWNvdW50ICs9IDEKLSAgICAgICAgZmlsZW5hbWUgPSBt
YXRjaC5ncm91cCgxKQotICAgICAgICBzdm5kaWZmLmFwcGVuZCgiSW5kZXg6ICVzXG4iICUgZmls
ZW5hbWUpCi0gICAgICBlbHNlOgotICAgICAgICAjIFRoZSAiaW5kZXgiIGxpbmUgaW4gYSBnaXQg
ZGlmZiBsb29rcyBsaWtlIHRoaXMgKGxvbmcgaGFzaGVzIGVsaWRlZCk6Ci0gICAgICAgICMgICBp
bmRleCA4MmMwZDQ0Li5iMmNlZTNmIDEwMDc1NQotICAgICAgICAjIFdlIHdhbnQgdG8gc2F2ZSB0
aGUgbGVmdCBoYXNoLCBhcyB0aGF0IGlkZW50aWZpZXMgdGhlIGJhc2UgZmlsZS4KLSAgICAgICAg
bWF0Y2ggPSByZS5tYXRjaChyImluZGV4IChcdyspXC5cLiIsIGxpbmUpCi0gICAgICAgIGlmIG1h
dGNoOgotICAgICAgICAgIHNlbGYuYmFzZV9oYXNoZXNbZmlsZW5hbWVdID0gbWF0Y2guZ3JvdXAo
MSkKLSAgICAgIHN2bmRpZmYuYXBwZW5kKGxpbmUgKyAiXG4iKQotICAgIGlmIG5vdCBmaWxlY291
bnQ6Ci0gICAgICBFcnJvckV4aXQoIk5vIHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0IGZy
b20gZ2l0IGRpZmYiKQotICAgIHJldHVybiAiIi5qb2luKHN2bmRpZmYpCi0KLSAgZGVmIEdldFVu
a25vd25GaWxlcyhzZWxmKToKLSAgICBzdGF0dXMgPSBSdW5TaGVsbChbImdpdCIsICJscy1maWxl
cyIsICItLWV4Y2x1ZGUtc3RhbmRhcmQiLCAiLS1vdGhlcnMiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICByZXR1cm4gc3RhdHVzLnNwbGl0bGluZXMoKQotCi0g
IGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgaGFzaCA9IHNlbGYuYmFzZV9o
YXNoZXNbZmlsZW5hbWVdCi0gICAgYmFzZV9jb250ZW50ID0gTm9uZQotICAgIG5ld19jb250ZW50
ID0gTm9uZQotICAgIGlzX2JpbmFyeSA9IEZhbHNlCi0gICAgaWYgaGFzaCA9PSAiMCIgKiA0MDog
ICMgQWxsLXplcm8gaGFzaCBpbmRpY2F0ZXMgbm8gYmFzZSBmaWxlLgotICAgICAgc3RhdHVzID0g
IkEiCi0gICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgIGVsc2U6Ci0gICAgICBzdGF0dXMgPSAi
TSIKLSAgICAgIGJhc2VfY29udGVudCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVybkNv
ZGUoWyJnaXQiLCAic2hvdyIsIGhhc2hdKQotICAgICAgaWYgcmV0dXJuY29kZToKLSAgICAgICAg
RXJyb3JFeGl0KCJHb3QgZXJyb3Igc3RhdHVzIGZyb20gJ2dpdCBzaG93ICVzJyIgJSBoYXNoKQot
ICAgIHJldHVybiAoYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMp
Ci0KLQotY2xhc3MgTWVyY3VyaWFsVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKLSAgIiIiSW1w
bGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFjZSBmb3IgTWVy
Y3VyaWFsLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCByZXBvX2Rpcik6Ci0g
ICAgc3VwZXIoTWVyY3VyaWFsVkNTLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zKQotICAgICMgQWJz
b2x1dGUgcGF0aCB0byByZXBvc2l0b3J5ICh3ZSBjYW4gYmUgaW4gYSBzdWJkaXIpCi0gICAgc2Vs
Zi5yZXBvX2RpciA9IG9zLnBhdGgubm9ybXBhdGgocmVwb19kaXIpCi0gICAgIyBDb21wdXRlIHRo
ZSBzdWJkaXIKLSAgICBjd2QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLmdldGN3ZCgpKQotICAgIGFz
c2VydCBjd2Quc3RhcnRzd2l0aChzZWxmLnJlcG9fZGlyKQotICAgIHNlbGYuc3ViZGlyID0gY3dk
W2xlbihzZWxmLnJlcG9fZGlyKTpdLmxzdHJpcChyIlwvIikKLSAgICBpZiBzZWxmLm9wdGlvbnMu
cmV2aXNpb246Ci0gICAgICBzZWxmLmJhc2VfcmV2ID0gc2VsZi5vcHRpb25zLnJldmlzaW9uCi0g
ICAgZWxzZToKLSAgICAgIHNlbGYuYmFzZV9yZXYgPSBSdW5TaGVsbChbImhnIiwgInBhcmVudCIs
ICItcSJdKS5zcGxpdCgnOicpWzFdLnN0cmlwKCkKLQotICBkZWYgX0dldFJlbFBhdGgoc2VsZiwg
ZmlsZW5hbWUpOgotICAgICIiIkdldCByZWxhdGl2ZSBwYXRoIG9mIGEgZmlsZSBhY2NvcmRpbmcg
dG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LAotICAgIGdpdmVuIGl0cyBsb2dpY2FsIHBhdGggaW4g
dGhlIHJlcG8uIiIiCi0gICAgYXNzZXJ0IGZpbGVuYW1lLnN0YXJ0c3dpdGgoc2VsZi5zdWJkaXIp
LCBmaWxlbmFtZQotICAgIHJldHVybiBmaWxlbmFtZVtsZW4oc2VsZi5zdWJkaXIpOl0ubHN0cmlw
KHIiXC8iKQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgZXh0cmFfYXJncyk6Ci0gICAgIyBJ
ZiBubyBmaWxlIHNwZWNpZmllZCwgcmVzdHJpY3QgdG8gdGhlIGN1cnJlbnQgc3ViZGlyCi0gICAg
ZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgWyIuIl0KLSAgICBjbWQgPSBbImhnIiwgImRpZmYi
LCAiLS1naXQiLCAiLXIiLCBzZWxmLmJhc2VfcmV2XSArIGV4dHJhX2FyZ3MKLSAgICBkYXRhID0g
UnVuU2hlbGwoY21kLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICBzdm5kaWZmID0gW10KLSAgICBmaWxl
Y291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCk6Ci0gICAgICBtID0g
cmUubWF0Y2goImRpZmYgLS1naXQgYS8oXFMrKSBiLyhcUyspIiwgbGluZSkKLSAgICAgIGlmIG06
Ci0gICAgICAgICMgTW9kaWZ5IGxpbmUgdG8gbWFrZSBpdCBsb29rIGxpa2UgYXMgaXQgY29tZXMg
ZnJvbSBzdm4gZGlmZi4KLSAgICAgICAgIyBXaXRoIHRoaXMgbW9kaWZpY2F0aW9uIG5vIGNoYW5n
ZXMgb24gdGhlIHNlcnZlciBzaWRlIGFyZSByZXF1aXJlZAotICAgICAgICAjIHRvIG1ha2UgdXBs
b2FkLnB5IHdvcmsgd2l0aCBNZXJjdXJpYWwgcmVwb3MuCi0gICAgICAgICMgTk9URTogZm9yIHBy
b3BlciBoYW5kbGluZyBvZiBtb3ZlZC9jb3BpZWQgZmlsZXMsIHdlIGhhdmUgdG8gdXNlCi0gICAg
ICAgICMgdGhlIHNlY29uZCBmaWxlbmFtZS4KLSAgICAgICAgZmlsZW5hbWUgPSBtLmdyb3VwKDIp
Ci0gICAgICAgIHN2bmRpZmYuYXBwZW5kKCJJbmRleDogJXMiICUgZmlsZW5hbWUpCi0gICAgICAg
IHN2bmRpZmYuYXBwZW5kKCI9IiAqIDY3KQotICAgICAgICBmaWxlY291bnQgKz0gMQotICAgICAg
ICBsb2dnaW5nLmluZm8obGluZSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHN2bmRpZmYuYXBwZW5k
KGxpbmUpCi0gICAgaWYgbm90IGZpbGVjb3VudDoKLSAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQg
cGF0Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBoZyBkaWZmIikKLSAgICByZXR1cm4gIlxuIi5q
b2luKHN2bmRpZmYpICsgIlxuIgotCi0gIGRlZiBHZXRVbmtub3duRmlsZXMoc2VsZik6Ci0gICAg
IiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlcyB1bmtub3duIHRvIHRoZSBWQ1MuIiIiCi0gICAgYXJn
cyA9IFtdCi0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJoZyIsICJzdGF0dXMiLCAiLS1yZXYiLCBz
ZWxmLmJhc2VfcmV2LCAiLXUiLCAiLiJdLAotICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICB1
bmtub3duX2ZpbGVzID0gW10KLSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXRsaW5lcygpOgot
ICAgICAgc3QsIGZuID0gbGluZS5zcGxpdCgiICIsIDEpCi0gICAgICBpZiBzdCA9PSAiPyI6Ci0g
ICAgICAgIHVua25vd25fZmlsZXMuYXBwZW5kKGZuKQotICAgIHJldHVybiB1bmtub3duX2ZpbGVz
Ci0KLSAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAjICJoZyBzdGF0dXMi
IGFuZCAiaGcgY2F0IiBib3RoIHRha2UgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHN1
YmRpcgotICAgICMgcmF0aGVyIHRoYW4gdG8gdGhlIHJlcG8gcm9vdCwgYnV0ICJoZyBkaWZmIiBo
YXMgZ2l2ZW4gdXMgdGhlIGZ1bGwgcGF0aAotICAgICMgdG8gdGhlIHJlcG8gcm9vdC4KLSAgICBi
YXNlX2NvbnRlbnQgPSAiIgotICAgIG5ld19jb250ZW50ID0gTm9uZQotICAgIGlzX2JpbmFyeSA9
IEZhbHNlCi0gICAgb2xkcmVscGF0aCA9IHJlbHBhdGggPSBzZWxmLl9HZXRSZWxQYXRoKGZpbGVu
YW1lKQotICAgICMgImhnIHN0YXR1cyAtQyIgcmV0dXJucyB0d28gbGluZXMgZm9yIG1vdmVkL2Nv
cGllZCBmaWxlcywgb25lIG90aGVyd2lzZQotICAgIG91dCA9IFJ1blNoZWxsKFsiaGciLCAic3Rh
dHVzIiwgIi1DIiwgIi0tcmV2Iiwgc2VsZi5iYXNlX3JldiwgcmVscGF0aF0pCi0gICAgb3V0ID0g
b3V0LnNwbGl0bGluZXMoKQotICAgICMgSEFDSzogc3RyaXAgZXJyb3IgbWVzc2FnZSBhYm91dCBt
aXNzaW5nIGZpbGUvZGlyZWN0b3J5IGlmIGl0IGlzbid0IGluCi0gICAgIyB0aGUgd29ya2luZyBj
b3B5Ci0gICAgaWYgb3V0WzBdLnN0YXJ0c3dpdGgoJyVzOiAnICUgcmVscGF0aCk6Ci0gICAgICBv
dXQgPSBvdXRbMTpdCi0gICAgaWYgbGVuKG91dCkgPiAxOgotICAgICAgIyBNb3ZlZC9jb3BpZWQg
PT4gY29uc2lkZXJlZCBhcyBtb2RpZmllZCwgdXNlIG9sZCBmaWxlbmFtZSB0bwotICAgICAgIyBy
ZXRyaWV2ZSBiYXNlIGNvbnRlbnRzCi0gICAgICBvbGRyZWxwYXRoID0gb3V0WzFdLnN0cmlwKCkK
LSAgICAgIHN0YXR1cyA9ICJNIgotICAgIGVsc2U6Ci0gICAgICBzdGF0dXMsIF8gPSBvdXRbMF0u
c3BsaXQoJyAnLCAxKQotICAgIGlmIHN0YXR1cyAhPSAiQSI6Ci0gICAgICBiYXNlX2NvbnRlbnQg
PSBSdW5TaGVsbChbImhnIiwgImNhdCIsICItciIsIHNlbGYuYmFzZV9yZXYsIG9sZHJlbHBhdGhd
LAotICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICAgIGlzX2JpbmFyeSA9ICJcMCIgaW4gYmFz
ZV9jb250ZW50ICAjIE1lcmN1cmlhbCdzIGhldXJpc3RpYwotICAgIGlmIHN0YXR1cyAhPSAiUiI6
Ci0gICAgICBuZXdfY29udGVudCA9IG9wZW4ocmVscGF0aCwgInJiIikucmVhZCgpCi0gICAgICBp
c19iaW5hcnkgPSBpc19iaW5hcnkgb3IgIlwwIiBpbiBuZXdfY29udGVudAotICAgIGlmIGlzX2Jp
bmFyeSBhbmQgYmFzZV9jb250ZW50OgotICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRob3V0IGNvbnZl
cnRpbmcgbmV3bGluZXMKLSAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsiaGciLCAiY2F0
IiwgIi1yIiwgc2VsZi5iYXNlX3Jldiwgb2xkcmVscGF0aF0sCi0gICAgICAgIHNpbGVudF9vaz1U
cnVlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UpCi0gICAgaWYgbm90IGlzX2JpbmFyeSBvciBu
b3Qgc2VsZi5Jc0ltYWdlKHJlbHBhdGgpOgotICAgICAgbmV3X2NvbnRlbnQgPSBOb25lCi0gICAg
cmV0dXJuIGJhc2VfY29udGVudCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzCi0KLQot
IyBOT1RFOiBUaGUgU3BsaXRQYXRjaCBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGluIGVuZ2luZS5w
eSwga2VlcCB0aGVtIGluIHN5bmMuCi1kZWYgU3BsaXRQYXRjaChkYXRhKToKLSAgIiIiU3BsaXRz
IGEgcGF0Y2ggaW50byBzZXBhcmF0ZSBwaWVjZXMgZm9yIGVhY2ggZmlsZS4KLQotICBBcmdzOgot
ICAgIGRhdGE6IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZiBzdm4gZGlmZi4KLQot
ICBSZXR1cm5zOgotICAgIEEgbGlzdCBvZiAyLXR1cGxlIChmaWxlbmFtZSwgdGV4dCkgd2hlcmUg
dGV4dCBpcyB0aGUgc3ZuIGRpZmYgb3V0cHV0Ci0gICAgICBwZXJ0YWluaW5nIHRvIGZpbGVuYW1l
LgotICAiIiIKLSAgcGF0Y2hlcyA9IFtdCi0gIGZpbGVuYW1lID0gTm9uZQotICBkaWZmID0gW10K
LSAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKFRydWUpOgotICAgIG5ld19maWxlbmFtZSA9
IE5vbmUKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0luZGV4OicpOgotICAgICAgdW51c2VkLCBu
ZXdfZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgIG5ld19maWxlbmFtZSA9IG5l
d19maWxlbmFtZS5zdHJpcCgpCi0gICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1Byb3BlcnR5IGNo
YW5nZXMgb246Jyk6Ci0gICAgICB1bnVzZWQsIHRlbXBfZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6
JywgMSkKLSAgICAgICMgV2hlbiBhIGZpbGUgaXMgbW9kaWZpZWQsIHBhdGhzIHVzZSAnLycgYmV0
d2VlbiBkaXJlY3RvcmllcywgaG93ZXZlcgotICAgICAgIyB3aGVuIGEgcHJvcGVydHkgaXMgbW9k
aWZpZWQgJ1wnIGlzIHVzZWQgb24gV2luZG93cy4gIE1ha2UgdGhlbSB0aGUgc2FtZQotICAgICAg
IyBvdGhlcndpc2UgdGhlIGZpbGUgc2hvd3MgdXAgdHdpY2UuCi0gICAgICB0ZW1wX2ZpbGVuYW1l
ID0gdGVtcF9maWxlbmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgaWYgdGVt
cF9maWxlbmFtZSAhPSBmaWxlbmFtZToKLSAgICAgICAgIyBGaWxlIGhhcyBwcm9wZXJ0eSBjaGFu
Z2VzIGJ1dCBubyBtb2RpZmljYXRpb25zLCBjcmVhdGUgYSBuZXcgZGlmZi4KLSAgICAgICAgbmV3
X2ZpbGVuYW1lID0gdGVtcF9maWxlbmFtZQotICAgIGlmIG5ld19maWxlbmFtZToKLSAgICAgIGlm
IGZpbGVuYW1lIGFuZCBkaWZmOgotICAgICAgICBwYXRjaGVzLmFwcGVuZCgoZmlsZW5hbWUsICcn
LmpvaW4oZGlmZikpKQotICAgICAgZmlsZW5hbWUgPSBuZXdfZmlsZW5hbWUKLSAgICAgIGRpZmYg
PSBbbGluZV0KLSAgICAgIGNvbnRpbnVlCi0gICAgaWYgZGlmZiBpcyBub3QgTm9uZToKLSAgICAg
IGRpZmYuYXBwZW5kKGxpbmUpCi0gIGlmIGZpbGVuYW1lIGFuZCBkaWZmOgotICAgIHBhdGNoZXMu
YXBwZW5kKChmaWxlbmFtZSwgJycuam9pbihkaWZmKSkpCi0gIHJldHVybiBwYXRjaGVzCi0KLQot
ZGVmIFVwbG9hZFNlcGFyYXRlUGF0Y2hlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hzZXQsIGRh
dGEsIG9wdGlvbnMpOgotICAiIiJVcGxvYWRzIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIGVhY2ggZmls
ZSBpbiB0aGUgZGlmZiBvdXRwdXQuCi0KLSAgUmV0dXJucyBhIGxpc3Qgb2YgW3BhdGNoX2tleSwg
ZmlsZW5hbWVdIGZvciBlYWNoIGZpbGUuCi0gICIiIgotICBwYXRjaGVzID0gU3BsaXRQYXRjaChk
YXRhKQotICBydiA9IFtdCi0gIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgIGlmIGxlbihwYXRj
aFsxXSkgPiBNQVhfVVBMT0FEX1NJWkU6Ci0gICAgICBwcmludCAoIk5vdCB1cGxvYWRpbmcgdGhl
IHBhdGNoIGZvciAiICsgcGF0Y2hbMF0gKwotICAgICAgICAgICAgICIgYmVjYXVzZSB0aGUgZmls
ZSBpcyB0b28gbGFyZ2UuIikKLSAgICAgIGNvbnRpbnVlCi0gICAgZm9ybV9maWVsZHMgPSBbKCJm
aWxlbmFtZSIsIHBhdGNoWzBdKV0KLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgot
ICAgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiY29udGVudF91cGxvYWQiLCAiMSIpKQotICAgIGZp
bGVzID0gWygiZGF0YSIsICJkYXRhLmRpZmYiLCBwYXRjaFsxXSldCi0gICAgY3R5cGUsIGJvZHkg
PSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3JtX2ZpZWxkcywgZmlsZXMpCi0gICAgdXJsID0g
Ii8lZC91cGxvYWRfcGF0Y2gvJWQiICUgKGludChpc3N1ZSksIGludChwYXRjaHNldCkpCi0gICAg
cHJpbnQgIlVwbG9hZGluZyBwYXRjaCBmb3IgIiArIHBhdGNoWzBdCi0gICAgcmVzcG9uc2VfYm9k
eSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksIGNvbnRlbnRfdHlwZT1jdHlwZSkKLSAgICBs
aW5lcyA9IHJlc3BvbnNlX2JvZHkuc3BsaXRsaW5lcygpCi0gICAgaWYgbm90IGxpbmVzIG9yIGxp
bmVzWzBdICE9ICJPSyI6Ci0gICAgICBTdGF0dXNVcGRhdGUoIiAgLS0+ICVzIiAlIHJlc3BvbnNl
X2JvZHkpCi0gICAgICBzeXMuZXhpdCgxKQotICAgIHJ2LmFwcGVuZChbbGluZXNbMV0sIHBhdGNo
WzBdXSkKLSAgcmV0dXJuIHJ2Ci0KLQotZGVmIEd1ZXNzVkNTKG9wdGlvbnMpOgotICAiIiJIZWxw
ZXIgdG8gZ3Vlc3MgdGhlIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uCi0KLSAgVGhpcyBleGFtaW5l
cyB0aGUgY3VycmVudCBkaXJlY3RvcnksIGd1ZXNzZXMgd2hpY2ggVmVyc2lvbkNvbnRyb2xTeXN0
ZW0KLSAgd2UncmUgdXNpbmcsIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3By
aWF0ZSBjbGFzcy4gIEV4aXQgd2l0aCBhbgotICBlcnJvciBpZiB3ZSBjYW4ndCBmaWd1cmUgaXQg
b3V0LgotCi0gIFJldHVybnM6Ci0gICAgQSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbnN0YW5jZS4g
RXhpdHMgaWYgdGhlIFZDUyBjYW4ndCBiZSBndWVzc2VkLgotICAiIiIKLSAgIyBNZXJjdXJpYWwg
aGFzIGEgY29tbWFuZCB0byBnZXQgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIGEgcmVwb3NpdG9yeQot
ICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhhdmUgaGcgaW5z
dGFsbGVkLgotICAjIE5PVEU6IHdlIHRyeSBNZXJjdXJpYWwgZmlyc3QgYXMgaXQgY2FuIHNpdCBv
biB0b3Agb2YgYW4gU1ZOIHdvcmtpbmcgY29weS4KLSAgdHJ5OgotICAgIG91dCwgcmV0dXJuY29k
ZSA9IFJ1blNoZWxsV2l0aFJldHVybkNvZGUoWyJoZyIsICJyb290Il0pCi0gICAgaWYgcmV0dXJu
Y29kZSA9PSAwOgotICAgICAgcmV0dXJuIE1lcmN1cmlhbFZDUyhvcHRpb25zLCBvdXQuc3RyaXAo
KSkKLSAgZXhjZXB0IE9TRXJyb3IsIChlcnJubywgbWVzc2FnZSk6Ci0gICAgaWYgZXJybm8gIT0g
MjogICMgRU5PRU5UIC0tIHRoZXkgZG9uJ3QgaGF2ZSBoZyBpbnN0YWxsZWQuCi0gICAgICByYWlz
ZQotCi0gICMgU3VidmVyc2lvbiBoYXMgYSAuc3ZuIGluIGFsbCB3b3JraW5nIGRpcmVjdG9yaWVz
LgotICBpZiBvcy5wYXRoLmlzZGlyKCcuc3ZuJyk6Ci0gICAgbG9nZ2luZy5pbmZvKCJHdWVzc2Vk
IFZDUyA9IFN1YnZlcnNpb24iKQotICAgIHJldHVybiBTdWJ2ZXJzaW9uVkNTKG9wdGlvbnMpCi0K
LSAgIyBHaXQgaGFzIGEgY29tbWFuZCB0byB0ZXN0IGlmIHlvdSdyZSBpbiBhIGdpdCB0cmVlLgot
ICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhhdmUgZ2l0IGlu
c3RhbGxlZC4KLSAgdHJ5OgotICAgIG91dCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVy
bkNvZGUoWyJnaXQiLCAicmV2LXBhcnNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLS1pcy1pbnNpZGUtd29yay10cmVlIl0pCi0gICAgaWYgcmV0dXJu
Y29kZSA9PSAwOgotICAgICAgcmV0dXJuIEdpdFZDUyhvcHRpb25zKQotICBleGNlcHQgT1NFcnJv
ciwgKGVycm5vLCBtZXNzYWdlKToKLSAgICBpZiBlcnJubyAhPSAyOiAgIyBFTk9FTlQgLS0gdGhl
eSBkb24ndCBoYXZlIGdpdCBpbnN0YWxsZWQuCi0gICAgICByYWlzZQotCi0gIEVycm9yRXhpdCgo
IkNvdWxkIG5vdCBndWVzcyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLiAiCi0gICAgICAgICAgICAg
IkFyZSB5b3UgaW4gYSB3b3JraW5nIGNvcHkgZGlyZWN0b3J5PyIpKQotCi0KLWRlZiBSZWFsTWFp
bihhcmd2LCBkYXRhPU5vbmUpOgotICAiIiJUaGUgcmVhbCBtYWluIGZ1bmN0aW9uLgotCi0gIEFy
Z3M6Ci0gICAgYXJndjogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICBkYXRhOiBEaWZmIGNv
bnRlbnRzLiBJZiBOb25lIChkZWZhdWx0KSB0aGUgZGlmZiBpcyBnZW5lcmF0ZWQgYnkKLSAgICAg
IHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBieSBHdWVz
c1ZDUygpLgotCi0gIFJldHVybnM6Ci0gICAgQSAyLXR1cGxlIChpc3N1ZSBpZCwgcGF0Y2hzZXQg
aWQpLgotICAgIFRoZSBwYXRjaHNldCBpZCBpcyBOb25lIGlmIHRoZSBiYXNlIGZpbGVzIGFyZSBu
b3QgdXBsb2FkZWQgYnkgdGhpcwotICAgIHNjcmlwdCAoYXBwbGllcyBvbmx5IHRvIFNWTiBjaGVj
a291dHMpLgotICAiIiIKLSAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9KCIlKGFzY3RpbWUp
LjE5cyAlKGxldmVsbmFtZSlzICUoZmlsZW5hbWUpczoiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJShsaW5lbm8pcyAlKG1lc3NhZ2UpcyAiKSkKLSAgb3MuZW52aXJvblsnTENfQUxM
J10gPSAnQycKLSAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQot
ICBnbG9iYWwgdmVyYm9zaXR5Ci0gIHZlcmJvc2l0eSA9IG9wdGlvbnMudmVyYm9zZQotICBpZiB2
ZXJib3NpdHkgPj0gMzoKLSAgICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcu
REVCVUcpCi0gIGVsaWYgdmVyYm9zaXR5ID49IDI6Ci0gICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5z
ZXRMZXZlbChsb2dnaW5nLklORk8pCi0gIHZjcyA9IEd1ZXNzVkNTKG9wdGlvbnMpCi0gIGlmIGlz
aW5zdGFuY2UodmNzLCBTdWJ2ZXJzaW9uVkNTKToKLSAgICAjIGJhc2UgZmllbGQgaXMgb25seSBh
bGxvd2VkIGZvciBTdWJ2ZXJzaW9uLgotICAgICMgTm90ZTogRmV0Y2hpbmcgYmFzZSBmaWxlcyBt
YXkgYmVjb21lIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgotICAgIGJhc2UgPSB2Y3Mu
R3Vlc3NCYXNlKG9wdGlvbnMuZG93bmxvYWRfYmFzZSkKLSAgZWxzZToKLSAgICBiYXNlID0gTm9u
ZQotICBpZiBub3QgYmFzZSBhbmQgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgIG9wdGlvbnMu
ZG93bmxvYWRfYmFzZSA9IFRydWUKLSAgICBsb2dnaW5nLmluZm8oIkVuYWJsZWQgdXBsb2FkIG9m
IGJhc2UgZmlsZSIpCi0gIGlmIG5vdCBvcHRpb25zLmFzc3VtZV95ZXM6Ci0gICAgdmNzLkNoZWNr
Rm9yVW5rbm93bkZpbGVzKCkKLSAgaWYgZGF0YSBpcyBOb25lOgotICAgIGRhdGEgPSB2Y3MuR2Vu
ZXJhdGVEaWZmKGFyZ3MpCi0gIGZpbGVzID0gdmNzLkdldEJhc2VGaWxlcyhkYXRhKQotICBpZiB2
ZXJib3NpdHkgPj0gMToKLSAgICBwcmludCAiVXBsb2FkIHNlcnZlcjoiLCBvcHRpb25zLnNlcnZl
ciwgIihjaGFuZ2Ugd2l0aCAtcy8tLXNlcnZlcikiCi0gIGlmIG9wdGlvbnMuaXNzdWU6Ci0gICAg
cHJvbXB0ID0gIk1lc3NhZ2UgZGVzY3JpYmluZyB0aGlzIHBhdGNoIHNldDogIgotICBlbHNlOgot
ICAgIHByb21wdCA9ICJOZXcgaXNzdWUgc3ViamVjdDogIgotICBtZXNzYWdlID0gb3B0aW9ucy5t
ZXNzYWdlIG9yIHJhd19pbnB1dChwcm9tcHQpLnN0cmlwKCkKLSAgaWYgbm90IG1lc3NhZ2U6Ci0g
ICAgRXJyb3JFeGl0KCJBIG5vbi1lbXB0eSBtZXNzYWdlIGlzIHJlcXVpcmVkIikKLSAgcnBjX3Nl
cnZlciA9IEdldFJwY1NlcnZlcihvcHRpb25zKQotICBmb3JtX2ZpZWxkcyA9IFsoInN1YmplY3Qi
LCBtZXNzYWdlKV0KLSAgaWYgYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJiYXNlIiwg
YmFzZSkpCi0gIGlmIG9wdGlvbnMuaXNzdWU6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiaXNz
dWUiLCBzdHIob3B0aW9ucy5pc3N1ZSkpKQotICBpZiBvcHRpb25zLmVtYWlsOgotICAgIGZvcm1f
ZmllbGRzLmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgaWYgb3B0aW9ucy5yZXZp
ZXdlcnM6Ci0gICAgZm9yIHJldmlld2VyIGluIG9wdGlvbnMucmV2aWV3ZXJzLnNwbGl0KCcsJyk6
Ci0gICAgICBpZiAiQCIgaW4gcmV2aWV3ZXIgYW5kIG5vdCByZXZpZXdlci5zcGxpdCgiQCIpWzFd
LmNvdW50KCIuIikgPT0gMToKLSAgICAgICAgRXJyb3JFeGl0KCJJbnZhbGlkIGVtYWlsIGFkZHJl
c3M6ICVzIiAlIHJldmlld2VyKQotICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoInJldmlld2VycyIs
IG9wdGlvbnMucmV2aWV3ZXJzKSkKLSAgaWYgb3B0aW9ucy5jYzoKLSAgICBmb3IgY2MgaW4gb3B0
aW9ucy5jYy5zcGxpdCgnLCcpOgotICAgICAgaWYgIkAiIGluIGNjIGFuZCBub3QgY2Muc3BsaXQo
IkAiKVsxXS5jb3VudCgiLiIpID09IDE6Ci0gICAgICAgIEVycm9yRXhpdCgiSW52YWxpZCBlbWFp
bCBhZGRyZXNzOiAlcyIgJSBjYykKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjYyIsIG9wdGlv
bnMuY2MpKQotICBkZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb24KLSAgaWYgb3B0aW9u
cy5kZXNjcmlwdGlvbl9maWxlOgotICAgIGlmIG9wdGlvbnMuZGVzY3JpcHRpb246Ci0gICAgICBF
cnJvckV4aXQoIkNhbid0IHNwZWNpZnkgZGVzY3JpcHRpb24gYW5kIGRlc2NyaXB0aW9uX2ZpbGUi
KQotICAgIGZpbGUgPSBvcGVuKG9wdGlvbnMuZGVzY3JpcHRpb25fZmlsZSwgJ3InKQotICAgIGRl
c2NyaXB0aW9uID0gZmlsZS5yZWFkKCkKLSAgICBmaWxlLmNsb3NlKCkKLSAgaWYgZGVzY3JpcHRp
b246Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiZGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbikp
Ci0gICMgU2VuZCBhIGhhc2ggb2YgYWxsIHRoZSBiYXNlIGZpbGUgc28gdGhlIHNlcnZlciBjYW4g
ZGV0ZXJtaW5lIGlmIGEgY29weQotICAjIGFscmVhZHkgZXhpc3RzIGluIGFuIGVhcmxpZXIgcGF0
Y2hzZXQuCi0gIGJhc2VfaGFzaGVzID0gIiIKLSAgZm9yIGZpbGUsIGluZm8gaW4gZmlsZXMuaXRl
cml0ZW1zKCk6Ci0gICAgaWYgbm90IGluZm9bMF0gaXMgTm9uZToKLSAgICAgIGNoZWNrc3VtID0g
bWQ1Lm5ldyhpbmZvWzBdKS5oZXhkaWdlc3QoKQotICAgICAgaWYgYmFzZV9oYXNoZXM6Ci0gICAg
ICAgIGJhc2VfaGFzaGVzICs9ICJ8IgotICAgICAgYmFzZV9oYXNoZXMgKz0gY2hlY2tzdW0gKyAi
OiIgKyBmaWxlCi0gIGZvcm1fZmllbGRzLmFwcGVuZCgoImJhc2VfaGFzaGVzIiwgYmFzZV9oYXNo
ZXMpKQotICAjIElmIHdlJ3JlIHVwbG9hZGluZyBiYXNlIGZpbGVzLCBkb24ndCBzZW5kIHRoZSBl
bWFpbCBiZWZvcmUgdGhlIHVwbG9hZHMsIHNvCi0gICMgdGhhdCBpdCBjb250YWlucyB0aGUgZmls
ZSBzdGF0dXMuCi0gIGlmIG9wdGlvbnMuc2VuZF9tYWlsIGFuZCBvcHRpb25zLmRvd25sb2FkX2Jh
c2U6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgic2VuZF9tYWlsIiwgIjEiKSkKLSAgaWYgbm90
IG9wdGlvbnMuZG93bmxvYWRfYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjb250ZW50
X3VwbG9hZCIsICIxIikpCi0gIGlmIGxlbihkYXRhKSA+IE1BWF9VUExPQURfU0laRToKLSAgICBw
cmludCAiUGF0Y2ggaXMgbGFyZ2UsIHNvIHVwbG9hZGluZyBmaWxlIHBhdGNoZXMgc2VwYXJhdGVs
eS4iCi0gICAgdXBsb2FkZWRfZGlmZl9maWxlID0gW10KLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQo
KCJzZXBhcmF0ZV9wYXRjaGVzIiwgIjEiKSkKLSAgZWxzZToKLSAgICB1cGxvYWRlZF9kaWZmX2Zp
bGUgPSBbKCJkYXRhIiwgImRhdGEuZGlmZiIsIGRhdGEpXQotICBjdHlwZSwgYm9keSA9IEVuY29k
ZU11bHRpcGFydEZvcm1EYXRhKGZvcm1fZmllbGRzLCB1cGxvYWRlZF9kaWZmX2ZpbGUpCi0gIHJl
c3BvbnNlX2JvZHkgPSBycGNfc2VydmVyLlNlbmQoIi91cGxvYWQiLCBib2R5LCBjb250ZW50X3R5
cGU9Y3R5cGUpCi0gIHBhdGNoc2V0ID0gTm9uZQotICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9i
YXNlIG9yIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgbGluZXMgPSByZXNwb25zZV9ib2R5
LnNwbGl0bGluZXMoKQotICAgIGlmIGxlbihsaW5lcykgPj0gMjoKLSAgICAgIG1zZyA9IGxpbmVz
WzBdCi0gICAgICBwYXRjaHNldCA9IGxpbmVzWzFdLnN0cmlwKCkKLSAgICAgIHBhdGNoZXMgPSBb
eC5zcGxpdCgiICIsIDEpIGZvciB4IGluIGxpbmVzWzI6XV0KLSAgICBlbHNlOgotICAgICAgbXNn
ID0gcmVzcG9uc2VfYm9keQotICBlbHNlOgotICAgIG1zZyA9IHJlc3BvbnNlX2JvZHkKLSAgU3Rh
dHVzVXBkYXRlKG1zZykKLSAgaWYgbm90IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0aCgiSXNzdWUg
Y3JlYXRlZC4iKSBhbmQgXAotICBub3QgcmVzcG9uc2VfYm9keS5zdGFydHN3aXRoKCJJc3N1ZSB1
cGRhdGVkLiIpOgotICAgIHN5cy5leGl0KDApCi0gIGlzc3VlID0gbXNnW21zZy5yZmluZCgiLyIp
KzE6XQotCi0gIGlmIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgcmVzdWx0ID0gVXBsb2Fk
U2VwYXJhdGVQYXRjaGVzKGlzc3VlLCBycGNfc2VydmVyLCBwYXRjaHNldCwgZGF0YSwgb3B0aW9u
cykKLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgICAgcGF0Y2hlcyA9IHJl
c3VsdAotCi0gIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2U6Ci0gICAgdmNzLlVwbG9hZEJh
c2VGaWxlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hlcywgcGF0Y2hzZXQsIG9wdGlvbnMsIGZp
bGVzKQotICAgIGlmIG9wdGlvbnMuc2VuZF9tYWlsOgotICAgICAgcnBjX3NlcnZlci5TZW5kKCIv
IiArIGlzc3VlICsgIi9tYWlsIiwgcGF5bG9hZD0iIikKLSAgcmV0dXJuIGlzc3VlLCBwYXRjaHNl
dAotCi0KLWRlZiBtYWluKCk6Ci0gIHRyeToKLSAgICBSZWFsTWFpbihzeXMuYXJndikKLSAgZXhj
ZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgIHByaW50Ci0gICAgU3RhdHVzVXBkYXRlKCJJbnRl
cnJ1cHRlZC4iKQotICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKLSAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3VwbG9hZF9ndGVz
dC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCBiZTE5YWU4MDkxMWMzYWQ2N2UxMjczNzUxYzc0N2NkOTE1NTI4Zjkx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIidXBsb2Fk
X2d0ZXN0LnB5IHYwLjEuMCAtLSB1cGxvYWRzIGEgR29vZ2xlIFRlc3QgcGF0Y2ggZm9yIHJldmll
dy4KLQotVGhpcyBzaW1wbGUgd3JhcHBlciBwYXNzZXMgYWxsIGNvbW1hbmQgbGluZSBmbGFncyBh
bmQKLS0tY2M9Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIHRvIHVwbG9hZC5w
eS4KLQotVVNBR0U6IHVwbG9hZF9ndGVzdC5weSBbb3B0aW9ucyBmb3IgdXBsb2FkLnB5XQotIiIi
Ci0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9y
dCBvcwotaW1wb3J0IHN5cwotCi1DQ19GTEFHID0gJy0tY2M9JwotR1RFU1RfR1JPVVAgPSAnZ29v
Z2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tJwotCi0KLWRlZiBtYWluKCk6Ci0gICMg
RmluZHMgdGhlIHBhdGggdG8gdXBsb2FkLnB5LCBhc3N1bWluZyBpdCBpcyBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkKLSAgIyBhcyB0aGlzIGZpbGUuCi0gIG15X2RpciA9IG9zLnBhdGguZGlybmFtZShv
cy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICB1cGxvYWRfcHlfcGF0aCA9IG9zLnBhdGguam9p
bihteV9kaXIsICd1cGxvYWQucHknKQotCi0gICMgQWRkcyBHb29nbGUgVGVzdCBkaXNjdXNzaW9u
IGdyb3VwIHRvIHRoZSBjYyBsaW5lIGlmIGl0J3Mgbm90IHRoZXJlCi0gICMgYWxyZWFkeS4KLSAg
dXBsb2FkX3B5X2FyZ3YgPSBbdXBsb2FkX3B5X3BhdGhdCi0gIGZvdW5kX2NjX2ZsYWcgPSBGYWxz
ZQotICBmb3IgYXJnIGluIHN5cy5hcmd2WzE6XToKLSAgICBpZiBhcmcuc3RhcnRzd2l0aChDQ19G
TEFHKToKLSAgICAgIGZvdW5kX2NjX2ZsYWcgPSBUcnVlCi0gICAgICBjY19saW5lID0gYXJnW2xl
bihDQ19GTEFHKTpdCi0gICAgICBjY19saXN0ID0gW2FkZHIgZm9yIGFkZHIgaW4gY2NfbGluZS5z
cGxpdCgnLCcpIGlmIGFkZHJdCi0gICAgICBpZiBHVEVTVF9HUk9VUCBub3QgaW4gY2NfbGlzdDoK
LSAgICAgICAgY2NfbGlzdC5hcHBlbmQoR1RFU1RfR1JPVVApCi0gICAgICB1cGxvYWRfcHlfYXJn
di5hcHBlbmQoQ0NfRkxBRyArICcsJy5qb2luKGNjX2xpc3QpKQotICAgIGVsc2U6Ci0gICAgICB1
cGxvYWRfcHlfYXJndi5hcHBlbmQoYXJnKQotCi0gIGlmIG5vdCBmb3VuZF9jY19mbGFnOgotICAg
IHVwbG9hZF9weV9hcmd2LmFwcGVuZChDQ19GTEFHICsgR1RFU1RfR1JPVVApCi0KLSAgIyBJbnZv
a2VzIHVwbG9hZC5weSB3aXRoIHRoZSBtb2RpZmllZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0gIG9z
LmV4ZWN2KHVwbG9hZF9weV9wYXRoLCB1cGxvYWRfcHlfYXJndikKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVz
dC1hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwYTljZWU1MjIzMzMyOGIxYmFmZGM0YmM0MDI2OTlmYTE0MDM4ZjczLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NyYy9ndGVzdC1hbGwuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1
bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFNvbWV0aW1lcyBpdCdzIGRlc2lyYWJsZSB0
byBidWlsZCBHb29nbGUgVGVzdCBieSBjb21waWxpbmcgYSBzaW5nbGUgZmlsZS4KLS8vIFRoaXMg
ZmlsZSBzZXJ2ZXMgdGhpcyBwdXJwb3NlLgotCi0vLyBUaGlzIGxpbmUgZW5zdXJlcyB0aGF0IGd0
ZXN0LmggY2FuIGJlIGNvbXBpbGVkIG9uIGl0cyBvd24sIGV2ZW4KLS8vIHdoZW4gaXQncyBmdXNl
ZC4KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0vLyBUaGUgZm9sbG93aW5nIGxpbmVzIHB1
bGwgaW4gdGhlIHJlYWwgZ3Rlc3QgKi5jYyBmaWxlcy4KLSNpbmNsdWRlICJzcmMvZ3Rlc3QuY2Mi
Ci0jaW5jbHVkZSAic3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MiCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWZpbGVwYXRoLmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdC1wb3J0LmNjIgotI2luY2x1ZGUgInNy
Yy9ndGVzdC1wcmludGVycy5jYyIKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjIgot
I2luY2x1ZGUgInNyYy9ndGVzdC10eXBlZC10ZXN0LmNjIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZGVhdGgt
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQxY2MzZmNiZmVlZTVkOWVm
NWU0Mzc3ZjQ2ZmI0Y2ZiMmVhZTc1YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDEzNDEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
biksIHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhpcyBmaWxlIGltcGxl
bWVudHMgZGVhdGggdGVzdHMuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC1kZWF0aC10ZXN0Lmgi
Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotI2luY2x1ZGUgImd0ZXN0
L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oIgotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQot
IyBpZiBHVEVTVF9PU19NQUMKLSMgIGluY2x1ZGUgPGNydF9leHRlcm5zLmg+Ci0jIGVuZGlmICAv
LyBHVEVTVF9PU19NQUMKLQotIyBpbmNsdWRlIDxlcnJuby5oPgotIyBpbmNsdWRlIDxmY250bC5o
PgotIyBpbmNsdWRlIDxsaW1pdHMuaD4KLQotIyBpZiBHVEVTVF9PU19MSU5VWAotIyAgaW5jbHVk
ZSA8c2lnbmFsLmg+Ci0jIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAotCi0jIGluY2x1ZGUgPHN0
ZGFyZy5oPgotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4K
LSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL21tYW4uaD4KLSMgIGluY2x1ZGUgPHN5cy93YWl0Lmg+
Ci0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSMgaWYgR1RFU1RfT1NfUU5YCi0jICBp
bmNsdWRlIDxzcGF3bi5oPgotIyBlbmRpZiAgLy8gR1RFU1RfT1NfUU5YCi0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIK
LSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKLQotLy8gSW5kaWNhdGVz
IHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8g
aW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5o
IGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhp
cyB0cmljayBleGlzdHMgdG8KLS8vIHByZXZlbnQgdGhlIGFjY2lkZW50YWwgaW5jbHVzaW9uIG9m
IGd0ZXN0LWludGVybmFsLWlubC5oIGluIHRoZQotLy8gdXNlcidzIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5o
IgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0K
LS8vIENvbnN0YW50cy4KLQotLy8gVGhlIGRlZmF1bHQgZGVhdGggdGVzdCBzdHlsZS4KLXN0YXRp
YyBjb25zdCBjaGFyIGtEZWZhdWx0RGVhdGhUZXN0U3R5bGVbXSA9ICJmYXN0IjsKLQotR1RFU1Rf
REVGSU5FX3N0cmluZ18oCi0gICAgZGVhdGhfdGVzdF9zdHlsZSwKLSAgICBpbnRlcm5hbDo6U3Ry
aW5nRnJvbUdUZXN0RW52KCJkZWF0aF90ZXN0X3N0eWxlIiwga0RlZmF1bHREZWF0aFRlc3RTdHls
ZSksCi0gICAgIkluZGljYXRlcyBob3cgdG8gcnVuIGEgZGVhdGggdGVzdCBpbiBhIGZvcmtlZCBj
aGlsZCBwcm9jZXNzOiAiCi0gICAgIlwidGhyZWFkc2FmZVwiIChjaGlsZCBwcm9jZXNzIHJlLWV4
ZWN1dGVzIHRoZSB0ZXN0IGJpbmFyeSAiCi0gICAgImZyb20gdGhlIGJlZ2lubmluZywgcnVubmlu
ZyBvbmx5IHRoZSBzcGVjaWZpYyBkZWF0aCB0ZXN0KSBvciAiCi0gICAgIlwiZmFzdFwiIChjaGls
ZCBwcm9jZXNzIHJ1bnMgdGhlIGRlYXRoIHRlc3QgaW1tZWRpYXRlbHkgIgotICAgICJhZnRlciBm
b3JraW5nKS4iKTsKLQotR1RFU1RfREVGSU5FX2Jvb2xfKAotICAgIGRlYXRoX3Rlc3RfdXNlX2Zv
cmssCi0gICAgaW50ZXJuYWw6OkJvb2xGcm9tR1Rlc3RFbnYoImRlYXRoX3Rlc3RfdXNlX2Zvcmsi
LCBmYWxzZSksCi0gICAgIkluc3RydWN0cyB0byB1c2UgZm9yaygpL19leGl0KCkgaW5zdGVhZCBv
ZiBjbG9uZSgpIGluIGRlYXRoIHRlc3RzLiAiCi0gICAgIklnbm9yZWQgYW5kIGFsd2F5cyB1c2Vz
IGZvcmsoKSBvbiBQT1NJWCBzeXN0ZW1zIHdoZXJlIGNsb25lKCkgaXMgbm90ICIKLSAgICAiaW1w
bGVtZW50ZWQuIFVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQgb3Igc2ltaWxhciB0
b29scyBpZiAiCi0gICAgInRob3NlIGRvIG5vdCBzdXBwb3J0IGNsb25lKCkuIFZhbGdyaW5kIDMu
My4xIHdpbGwganVzdCBmYWlsIGlmICIKLSAgICAiaXQgc2VlcyBhbiB1bnN1cHBvcnRlZCBjb21i
aW5hdGlvbiBvZiBjbG9uZSgpIGZsYWdzLiAiCi0gICAgIkl0IGlzIG5vdCByZWNvbW1lbmRlZCB0
byB1c2UgdGhpcyBmbGFnIHcvbyB2YWxncmluZCB0aG91Z2ggaXQgd2lsbCAiCi0gICAgIndvcmsg
aW4gOTklIG9mIHRoZSBjYXNlcy4gT25jZSB2YWxncmluZCBpcyBmaXhlZCwgdGhpcyBmbGFnIHdp
bGwgIgotICAgICJtb3N0IGxpa2VseSBiZSByZW1vdmVkLiIpOwotCi1uYW1lc3BhY2UgaW50ZXJu
YWwgewotR1RFU1RfREVGSU5FX3N0cmluZ18oCi0gICAgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qs
ICIiLAotICAgICJJbmRpY2F0ZXMgdGhlIGZpbGUsIGxpbmUgbnVtYmVyLCB0ZW1wb3JhbCBpbmRl
eCBvZiAiCi0gICAgInRoZSBzaW5nbGUgZGVhdGggdGVzdCB0byBydW4sIGFuZCBhIGZpbGUgZGVz
Y3JpcHRvciB0byAiCi0gICAgIndoaWNoIGEgc3VjY2VzcyBjb2RlIG1heSBiZSBzZW50LCBhbGwg
c2VwYXJhdGVkIGJ5ICIKLSAgICAidGhlICd8JyBjaGFyYWN0ZXJzLiAgVGhpcyBmbGFnIGlzIHNw
ZWNpZmllZCBpZiBhbmQgb25seSBpZiB0aGUgY3VycmVudCAiCi0gICAgInByb2Nlc3MgaXMgYSBz
dWItcHJvY2VzcyBsYXVuY2hlZCBmb3IgcnVubmluZyBhIHRocmVhZC1zYWZlICIKLSAgICAiZGVh
dGggdGVzdC4gIEZPUiBJTlRFUk5BTCBVU0UgT05MWS4iKTsKLX0gIC8vIG5hbWVzcGFjZSBpbnRl
cm5hbAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotbmFtZXNwYWNlIGludGVybmFsIHsK
LQotLy8gVmFsaWQgb25seSBmb3IgZmFzdCBkZWF0aCB0ZXN0cy4gSW5kaWNhdGVzIHRoZSBjb2Rl
IGlzIHJ1bm5pbmcgaW4gdGhlCi0vLyBjaGlsZCBwcm9jZXNzIG9mIGEgZmFzdCBzdHlsZSBkZWF0
aCB0ZXN0LgotIyBpZiAhR1RFU1RfT1NfV0lORE9XUwotc3RhdGljIGJvb2wgZ19pbl9mYXN0X2Rl
YXRoX3Rlc3RfY2hpbGQgPSBmYWxzZTsKLSMgZW5kaWYKLQotLy8gUmV0dXJucyBhIEJvb2xlYW4g
dmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjYWxsZXIgaXMgY3VycmVudGx5Ci0vLyBleGVj
dXRpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4gIFRv
b2xzIHN1Y2ggYXMKLS8vIFZhbGdyaW5kIGhlYXAgY2hlY2tlcnMgbWF5IG5lZWQgdGhpcyB0byBt
b2RpZnkgdGhlaXIgYmVoYXZpb3IgaW4gZGVhdGgKLS8vIHRlc3RzLiAgSU1QT1JUQU5UOiBUaGlz
IGlzIGFuIGludGVybmFsIHV0aWxpdHkuICBVc2luZyBpdCBtYXkgYnJlYWsgdGhlCi0vLyBpbXBs
ZW1lbnRhdGlvbiBvZiBkZWF0aCB0ZXN0cy4gIFVzZXIgY29kZSBNVVNUIE5PVCB1c2UgaXQuCi1i
b29sIEluRGVhdGhUZXN0Q2hpbGQoKSB7Ci0jIGlmIEdURVNUX09TX1dJTkRPV1MKLQotICAvLyBP
biBXaW5kb3dzLCBkZWF0aCB0ZXN0cyBhcmUgdGhyZWFkLXNhZmUgcmVnYXJkbGVzcyBvZiB0aGUg
dmFsdWUgb2YgdGhlCi0gIC8vIGRlYXRoX3Rlc3Rfc3R5bGUgZmxhZy4KLSAgcmV0dXJuICFHVEVT
VF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5lbXB0eSgpOwotCi0jIGVsc2UKLQotICBp
ZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpCi0gICAgcmV0
dXJuICFHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5lbXB0eSgpOwotICBlbHNl
Ci0gICAgcmV0dXJuIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkOwotI2VuZGlmCi19Ci0KLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBFeGl0ZWRXaXRoQ29kZSBjb25zdHJ1Y3Rvci4K
LUV4aXRlZFdpdGhDb2RlOjpFeGl0ZWRXaXRoQ29kZShpbnQgZXhpdF9jb2RlKSA6IGV4aXRfY29k
ZV8oZXhpdF9jb2RlKSB7Ci19Ci0KLS8vIEV4aXRlZFdpdGhDb2RlIGZ1bmN0aW9uLWNhbGwgb3Bl
cmF0b3IuCi1ib29sIEV4aXRlZFdpdGhDb2RlOjpvcGVyYXRvcigpKGludCBleGl0X3N0YXR1cykg
Y29uc3QgewotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0KLSAgcmV0dXJuIGV4aXRfc3RhdHVzID09
IGV4aXRfY29kZV87Ci0KLSMgZWxzZQotCi0gIHJldHVybiBXSUZFWElURUQoZXhpdF9zdGF0dXMp
ICYmIFdFWElUU1RBVFVTKGV4aXRfc3RhdHVzKSA9PSBleGl0X2NvZGVfOwotCi0jIGVuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLSMgaWYgIUdURVNUX09TX1dJTkRPV1MKLS8vIEtpbGxl
ZEJ5U2lnbmFsIGNvbnN0cnVjdG9yLgotS2lsbGVkQnlTaWduYWw6OktpbGxlZEJ5U2lnbmFsKGlu
dCBzaWdudW0pIDogc2lnbnVtXyhzaWdudW0pIHsKLX0KLQotLy8gS2lsbGVkQnlTaWduYWwgZnVu
Y3Rpb24tY2FsbCBvcGVyYXRvci4KLWJvb2wgS2lsbGVkQnlTaWduYWw6Om9wZXJhdG9yKCkoaW50
IGV4aXRfc3RhdHVzKSBjb25zdCB7Ci0jICBpZiBkZWZpbmVkKEdURVNUX0tJTExFRF9CWV9TSUdO
QUxfT1ZFUlJJREVfKQotICB7Ci0gICAgYm9vbCByZXN1bHQ7Ci0gICAgaWYgKEdURVNUX0tJTExF
RF9CWV9TSUdOQUxfT1ZFUlJJREVfKHNpZ251bV8sIGV4aXRfc3RhdHVzLCAmcmVzdWx0KSkgewot
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLSMgIGVuZGlmICAvLyBkZWZpbmVkKEdU
RVNUX0tJTExFRF9CWV9TSUdOQUxfT1ZFUlJJREVfKQotICByZXR1cm4gV0lGU0lHTkFMRUQoZXhp
dF9zdGF0dXMpICYmIFdURVJNU0lHKGV4aXRfc3RhdHVzKSA9PSBzaWdudW1fOwotfQotIyBlbmRp
ZiAgLy8gIUdURVNUX09TX1dJTkRPV1MKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVXRp
bGl0aWVzIG5lZWRlZCBmb3IgZGVhdGggdGVzdHMuCi0KLS8vIEdlbmVyYXRlcyBhIHRleHR1YWwg
ZGVzY3JpcHRpb24gb2YgYSBnaXZlbiBleGl0IGNvZGUsIGluIHRoZSBmb3JtYXQKLS8vIHNwZWNp
ZmllZCBieSB3YWl0KDIpLgotc3RhdGljIHN0ZDo6c3RyaW5nIEV4aXRTdW1tYXJ5KGludCBleGl0
X2NvZGUpIHsKLSAgTWVzc2FnZSBtOwotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLQotICBtIDw8
ICJFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IGV4aXRfY29kZTsKLQotIyBlbHNlCi0KLSAg
aWYgKFdJRkVYSVRFRChleGl0X2NvZGUpKSB7Ci0gICAgbSA8PCAiRXhpdGVkIHdpdGggZXhpdCBz
dGF0dXMgIiA8PCBXRVhJVFNUQVRVUyhleGl0X2NvZGUpOwotICB9IGVsc2UgaWYgKFdJRlNJR05B
TEVEKGV4aXRfY29kZSkpIHsKLSAgICBtIDw8ICJUZXJtaW5hdGVkIGJ5IHNpZ25hbCAiIDw8IFdU
RVJNU0lHKGV4aXRfY29kZSk7Ci0gIH0KLSMgIGlmZGVmIFdDT1JFRFVNUAotICBpZiAoV0NPUkVE
VU1QKGV4aXRfY29kZSkpIHsKLSAgICBtIDw8ICIgKGNvcmUgZHVtcGVkKSI7Ci0gIH0KLSMgIGVu
ZGlmCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgcmV0dXJuIG0uR2V0U3RyaW5n
KCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBleGl0X3N0YXR1cyBkZXNjcmliZXMgYSBwcm9j
ZXNzIHRoYXQgd2FzIHRlcm1pbmF0ZWQKLS8vIGJ5IGEgc2lnbmFsLCBvciBleGl0ZWQgbm9ybWFs
bHkgd2l0aCBhIG5vbnplcm8gZXhpdCBjb2RlLgotYm9vbCBFeGl0ZWRVbnN1Y2Nlc3NmdWxseShp
bnQgZXhpdF9zdGF0dXMpIHsKLSAgcmV0dXJuICFFeGl0ZWRXaXRoQ29kZSgwKShleGl0X3N0YXR1
cyk7Ci19Ci0KLSMgaWYgIUdURVNUX09TX1dJTkRPV1MKLS8vIEdlbmVyYXRlcyBhIHRleHR1YWwg
ZmFpbHVyZSBtZXNzYWdlIHdoZW4gYSBkZWF0aCB0ZXN0IGZpbmRzIG1vcmUgdGhhbgotLy8gb25l
IHRocmVhZCBydW5uaW5nLCBvciBjYW5ub3QgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdGhyZWFk
cywgcHJpb3IKLS8vIHRvIGV4ZWN1dGluZyB0aGUgZ2l2ZW4gc3RhdGVtZW50LiAgSXQgaXMgdGhl
IHJlc3BvbnNpYmlsaXR5IG9mIHRoZQotLy8gY2FsbGVyIG5vdCB0byBwYXNzIGEgdGhyZWFkX2Nv
dW50IG9mIDEuCi1zdGF0aWMgc3RkOjpzdHJpbmcgRGVhdGhUZXN0VGhyZWFkV2FybmluZyhzaXpl
X3QgdGhyZWFkX2NvdW50KSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIkRlYXRoIHRlc3Rz
IHVzZSBmb3JrKCksIHdoaWNoIGlzIHVuc2FmZSBwYXJ0aWN1bGFybHkiCi0gICAgICA8PCAiIGlu
IGEgdGhyZWFkZWQgY29udGV4dC4gRm9yIHRoaXMgdGVzdCwgIiA8PCBHVEVTVF9OQU1FXyA8PCAi
ICI7Ci0gIGlmICh0aHJlYWRfY291bnQgPT0gMCkKLSAgICBtc2cgPDwgImNvdWxkbid0IGRldGVj
dCB0aGUgbnVtYmVyIG9mIHRocmVhZHMuIjsKLSAgZWxzZQotICAgIG1zZyA8PCAiZGV0ZWN0ZWQg
IiA8PCB0aHJlYWRfY291bnQgPDwgIiB0aHJlYWRzLiI7Ci0gIHJldHVybiBtc2cuR2V0U3RyaW5n
KCk7Ci19Ci0jIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwotCi0vLyBGbGFnIGNoYXJhY3Rl
cnMgZm9yIHJlcG9ydGluZyBhIGRlYXRoIHRlc3QgdGhhdCBkaWQgbm90IGRpZS4KLXN0YXRpYyBj
b25zdCBjaGFyIGtEZWF0aFRlc3RMaXZlZCA9ICdMJzsKLXN0YXRpYyBjb25zdCBjaGFyIGtEZWF0
aFRlc3RSZXR1cm5lZCA9ICdSJzsKLXN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RUaHJldyA9
ICdUJzsKLXN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RJbnRlcm5hbEVycm9yID0gJ0knOwot
Ci0vLyBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIGFsbCBvZiB0aGUgcG9zc2libGUgd2F5cyB0
aGF0IGEgZGVhdGggdGVzdCBjYW4KLS8vIGNvbmNsdWRlLiAgRElFRCBtZWFucyB0aGF0IHRoZSBw
cm9jZXNzIGRpZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSB0ZXN0Ci0vLyBjb2RlOyBMSVZFRCBtZWFu
cyB0aGF0IHByb2Nlc3MgbGl2ZWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRlc3QgY29kZTsKLS8v
IFJFVFVSTkVEIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50IGF0dGVtcHRlZCB0byBleGVj
dXRlIGEgcmV0dXJuCi0vLyBzdGF0ZW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkOyBUSFJFVyBt
ZWFucyB0aGF0IHRoZSB0ZXN0IHN0YXRlbWVudAotLy8gcmV0dXJuZWQgY29udHJvbCBieSB0aHJv
d2luZyBhbiBleGNlcHRpb24uICBJTl9QUk9HUkVTUyBtZWFucyB0aGUgdGVzdAotLy8gaGFzIG5v
dCB5ZXQgY29uY2x1ZGVkLgotLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogVW5pZnkgbmFtZXMg
YW5kIHBvc3NpYmx5IHZhbHVlcyBmb3IKLS8vIEFib3J0UmVhc29uLCBEZWF0aFRlc3RPdXRjb21l
LCBhbmQgZmxhZyBjaGFyYWN0ZXJzIGFib3ZlLgotZW51bSBEZWF0aFRlc3RPdXRjb21lIHsgSU5f
UFJPR1JFU1MsIERJRUQsIExJVkVELCBSRVRVUk5FRCwgVEhSRVcgfTsKLQotLy8gUm91dGluZSBm
b3IgYWJvcnRpbmcgdGhlIHByb2dyYW0gd2hpY2ggaXMgc2FmZSB0byBjYWxsIGZyb20gYW4KLS8v
IGV4ZWMtc3R5bGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBl
cnJvcgotLy8gbWVzc2FnZSBpcyBwcm9wYWdhdGVkIGJhY2sgdG8gdGhlIHBhcmVudCBwcm9jZXNz
LiAgT3RoZXJ3aXNlLCB0aGUKLS8vIG1lc3NhZ2UgaXMgc2ltcGx5IHByaW50ZWQgdG8gc3RkZXJy
LiAgSW4gZWl0aGVyIGNhc2UsIHRoZSBwcm9ncmFtCi0vLyB0aGVuIGV4aXRzIHdpdGggc3RhdHVz
IDEuCi12b2lkIERlYXRoVGVzdEFib3J0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7Ci0g
IC8vIE9uIGEgUE9TSVggc3lzdGVtLCB0aGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBh
IHRocmVhZHNhZmUtc3R5bGUKLSAgLy8gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzLCB3aGljaCBv
cGVyYXRlcyBvbiBhIHZlcnkgc21hbGwgc3RhY2suICBVc2UKLSAgLy8gdGhlIGhlYXAgZm9yIGFu
eSBhZGRpdGlvbmFsIG5vbi1taW51c2N1bGUgbWVtb3J5IHJlcXVpcmVtZW50cy4KLSAgY29uc3Qg
SW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBjb25zdCBmbGFnID0KLSAgICAgIEdldFVuaXRUZXN0
SW1wbCgpLT5pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnKCk7Ci0gIGlmIChmbGFnICE9IE5V
TEwpIHsKLSAgICBGSUxFKiBwYXJlbnQgPSBwb3NpeDo6RkRPcGVuKGZsYWctPndyaXRlX2ZkKCks
ICJ3Iik7Ci0gICAgZnB1dGMoa0RlYXRoVGVzdEludGVybmFsRXJyb3IsIHBhcmVudCk7Ci0gICAg
ZnByaW50ZihwYXJlbnQsICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHBhcmVu
dCk7Ci0gICAgX2V4aXQoMSk7Ci0gIH0gZWxzZSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlcyIs
IG1lc3NhZ2UuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgcG9zaXg6OkFib3J0
KCk7Ci0gIH0KLX0KLQotLy8gQSByZXBsYWNlbWVudCBmb3IgQ0hFQ0sgdGhhdCBjYWxscyBEZWF0
aFRlc3RBYm9ydCBpZiB0aGUgYXNzZXJ0aW9uCi0vLyBmYWlscy4KLSMgZGVmaW5lIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGV4cHJlc3Npb24pIFwKLSAgZG8geyBcCi0gICAgaWYgKCE6OnRlc3Rp
bmc6OmludGVybmFsOjpJc1RydWUoZXhwcmVzc2lvbikpIHsgXAotICAgICAgRGVhdGhUZXN0QWJv
cnQoIFwKLSAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikgKyBf
X0ZJTEVfXyArICAiLCBsaW5lICIgXAotICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5hbDo6
U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAotICAgICAgICAgICsgI2V4cHJl
c3Npb24pOyBcCi0gICAgfSBcCi0gIH0gd2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5
c0ZhbHNlKCkpCi0KLS8vIFRoaXMgbWFjcm8gaXMgc2ltaWxhciB0byBHVEVTVF9ERUFUSF9URVNU
X0NIRUNLXywgYnV0IGl0IGlzIG1lYW50IGZvcgotLy8gZXZhbHVhdGluZyBhbnkgc3lzdGVtIGNh
bGwgdGhhdCBmdWxmaWxscyB0d28gY29uZGl0aW9uczogaXQgbXVzdCByZXR1cm4KLS8vIC0xIG9u
IGZhaWx1cmUsIGFuZCBzZXQgZXJybm8gdG8gRUlOVFIgd2hlbiBpdCBpcyBpbnRlcnJ1cHRlZCBh
bmQKLS8vIHNob3VsZCBiZSB0cmllZCBhZ2Fpbi4gIFRoZSBtYWNybyBleHBhbmRzIHRvIGEgbG9v
cCB0aGF0IHJlcGVhdGVkbHkKLS8vIGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBhcyBsb25nIGFz
IGl0IGV2YWx1YXRlcyB0byAtMSBhbmQgc2V0cwotLy8gZXJybm8gdG8gRUlOVFIuICBJZiB0aGUg
ZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gLTEgYnV0IGVycm5vIGlzCi0vLyBzb21ldGhpbmcgb3Ro
ZXIgdGhhbiBFSU5UUiwgRGVhdGhUZXN0QWJvcnQgaXMgY2FsbGVkLgotIyBkZWZpbmUgR1RFU1Rf
REVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhleHByZXNzaW9uKSBcCi0gIGRvIHsgXAotICAgIGlu
dCBndGVzdF9yZXR2YWw7IFwKLSAgICBkbyB7IFwKLSAgICAgIGd0ZXN0X3JldHZhbCA9IChleHBy
ZXNzaW9uKTsgXAotICAgIH0gd2hpbGUgKGd0ZXN0X3JldHZhbCA9PSAtMSAmJiBlcnJubyA9PSBF
SU5UUik7IFwKLSAgICBpZiAoZ3Rlc3RfcmV0dmFsID09IC0xKSB7IFwKLSAgICAgIERlYXRoVGVz
dEFib3J0KCBcCi0gICAgICAgICAgOjpzdGQ6OnN0cmluZygiQ0hFQ0sgZmFpbGVkOiBGaWxlICIp
ICsgX19GSUxFX18gKyAiLCBsaW5lICIgXAotICAgICAgICAgICsgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6U3RyZWFtYWJsZVRvU3RyaW5nKF9fTElORV9fKSArICI6ICIgXAotICAgICAgICAgICsgI2V4
cHJlc3Npb24gKyAiICE9IC0xIik7IFwKLSAgICB9IFwKLSAgfSB3aGlsZSAoOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKLQotLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmli
aW5nIHRoZSBsYXN0IHN5c3RlbSBlcnJvciBpbiBlcnJuby4KLXN0ZDo6c3RyaW5nIEdldExhc3RF
cnJub0Rlc2NyaXB0aW9uKCkgewotICAgIHJldHVybiBlcnJubyA9PSAwID8gIiIgOiBwb3NpeDo6
U3RyRXJyb3IoZXJybm8pOwotfQotCi0vLyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgZGVhdGggdGVz
dCBwYXJlbnQgcHJvY2VzcyB0byByZWFkIGEgZmFpbHVyZQotLy8gbWVzc2FnZSBmcm9tIHRoZSBk
ZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MgYW5kIGxvZyBpdCB3aXRoIHRoZSBGQVRBTAotLy8gc2V2
ZXJpdHkuIE9uIFdpbmRvd3MsIHRoZSBtZXNzYWdlIGlzIHJlYWQgZnJvbSBhIHBpcGUgaGFuZGxl
LiBPbiBvdGhlcgotLy8gcGxhdGZvcm1zLCBpdCBpcyByZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0
b3IuCi1zdGF0aWMgdm9pZCBGYWlsRnJvbUludGVybmFsRXJyb3IoaW50IGZkKSB7Ci0gIE1lc3Nh
Z2UgZXJyb3I7Ci0gIGNoYXIgYnVmZmVyWzI1Nl07Ci0gIGludCBudW1fcmVhZDsKLQotICBkbyB7
Ci0gICAgd2hpbGUgKChudW1fcmVhZCA9IHBvc2l4OjpSZWFkKGZkLCBidWZmZXIsIDI1NSkpID4g
MCkgewotICAgICAgYnVmZmVyW251bV9yZWFkXSA9ICdcMCc7Ci0gICAgICBlcnJvciA8PCBidWZm
ZXI7Ci0gICAgfQotICB9IHdoaWxlIChudW1fcmVhZCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7
Ci0KLSAgaWYgKG51bV9yZWFkID09IDApIHsKLSAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCBlcnJv
ci5HZXRTdHJpbmcoKTsKLSAgfSBlbHNlIHsKLSAgICBjb25zdCBpbnQgbGFzdF9lcnJvciA9IGVy
cm5vOwotICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJFcnJvciB3aGlsZSByZWFkaW5nIGRlYXRo
IHRlc3QgaW50ZXJuYWw6ICIKLSAgICAgICAgICAgICAgICAgICAgICA8PCBHZXRMYXN0RXJybm9E
ZXNjcmlwdGlvbigpIDw8ICIgWyIgPDwgbGFzdF9lcnJvciA8PCAiXSI7Ci0gIH0KLX0KLQotLy8g
RGVhdGggdGVzdCBjb25zdHJ1Y3Rvci4gIEluY3JlbWVudHMgdGhlIHJ1bm5pbmcgZGVhdGggdGVz
dCBjb3VudAotLy8gZm9yIHRoZSBjdXJyZW50IHRlc3QuCi1EZWF0aFRlc3Q6OkRlYXRoVGVzdCgp
IHsKLSAgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90
ZXN0X2luZm8oKTsKLSAgaWYgKGluZm8gPT0gTlVMTCkgewotICAgIERlYXRoVGVzdEFib3J0KCJD
YW5ub3QgcnVuIGEgZGVhdGggdGVzdCBvdXRzaWRlIG9mIGEgVEVTVCBvciAiCi0gICAgICAgICAg
ICAgICAgICAgIlRFU1RfRiBjb25zdHJ1Y3QiKTsKLSAgfQotfQotCi0vLyBDcmVhdGVzIGFuZCBy
ZXR1cm5zIGEgZGVhdGggdGVzdCBieSBkaXNwYXRjaGluZyB0byB0aGUgY3VycmVudAotLy8gZGVh
dGggdGVzdCBmYWN0b3J5LgotYm9vbCBEZWF0aFRlc3Q6OkNyZWF0ZShjb25zdCBjaGFyKiBzdGF0
ZW1lbnQsIGNvbnN0IFJFKiByZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpIHsKLSAgcmV0dXJuIEdldFVuaXRU
ZXN0SW1wbCgpLT5kZWF0aF90ZXN0X2ZhY3RvcnkoKS0+Q3JlYXRlKAotICAgICAgc3RhdGVtZW50
LCByZWdleCwgZmlsZSwgbGluZSwgdGVzdCk7Ci19Ci0KLWNvbnN0IGNoYXIqIERlYXRoVGVzdDo6
TGFzdE1lc3NhZ2UoKSB7Ci0gIHJldHVybiBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8uY19zdHIo
KTsKLX0KLQotdm9pZCBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewotICBsYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZV8gPSBt
ZXNzYWdlOwotfQotCi1zdGQ6OnN0cmluZyBEZWF0aFRlc3Q6Omxhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlXzsKLQotLy8gUHJvdmlkZXMgY3Jvc3MgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gZm9yIHNv
bWUgZGVhdGggZnVuY3Rpb25hbGl0eS4KLWNsYXNzIERlYXRoVGVzdEltcGwgOiBwdWJsaWMgRGVh
dGhUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIERlYXRoVGVzdEltcGwoY29uc3QgY2hhciogYV9zdGF0
ZW1lbnQsIGNvbnN0IFJFKiBhX3JlZ2V4KQotICAgICAgOiBzdGF0ZW1lbnRfKGFfc3RhdGVtZW50
KSwKLSAgICAgICAgcmVnZXhfKGFfcmVnZXgpLAotICAgICAgICBzcGF3bmVkXyhmYWxzZSksCi0g
ICAgICAgIHN0YXR1c18oLTEpLAotICAgICAgICBvdXRjb21lXyhJTl9QUk9HUkVTUyksCi0gICAg
ICAgIHJlYWRfZmRfKC0xKSwKLSAgICAgICAgd3JpdGVfZmRfKC0xKSB7fQotCi0gIC8vIHJlYWRf
ZmRfIGlzIGV4cGVjdGVkIHRvIGJlIGNsb3NlZCBhbmQgY2xlYXJlZCBieSBhIGRlcml2ZWQgY2xh
c3MuCi0gIH5EZWF0aFRlc3RJbXBsKCkgeyBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhyZWFkX2Zk
XyA9PSAtMSk7IH0KLQotICB2b2lkIEFib3J0KEFib3J0UmVhc29uIHJlYXNvbik7Ci0gIHZpcnR1
YWwgYm9vbCBQYXNzZWQoYm9vbCBzdGF0dXNfb2spOwotCi0gIGNvbnN0IGNoYXIqIHN0YXRlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlbWVudF87IH0KLSAgY29uc3QgUkUqIHJlZ2V4KCkgY29u
c3QgeyByZXR1cm4gcmVnZXhfOyB9Ci0gIGJvb2wgc3Bhd25lZCgpIGNvbnN0IHsgcmV0dXJuIHNw
YXduZWRfOyB9Ci0gIHZvaWQgc2V0X3NwYXduZWQoYm9vbCBpc19zcGF3bmVkKSB7IHNwYXduZWRf
ID0gaXNfc3Bhd25lZDsgfQotICBpbnQgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gc3RhdHVzXzsg
fQotICB2b2lkIHNldF9zdGF0dXMoaW50IGFfc3RhdHVzKSB7IHN0YXR1c18gPSBhX3N0YXR1czsg
fQotICBEZWF0aFRlc3RPdXRjb21lIG91dGNvbWUoKSBjb25zdCB7IHJldHVybiBvdXRjb21lXzsg
fQotICB2b2lkIHNldF9vdXRjb21lKERlYXRoVGVzdE91dGNvbWUgYW5fb3V0Y29tZSkgeyBvdXRj
b21lXyA9IGFuX291dGNvbWU7IH0KLSAgaW50IHJlYWRfZmQoKSBjb25zdCB7IHJldHVybiByZWFk
X2ZkXzsgfQotICB2b2lkIHNldF9yZWFkX2ZkKGludCBmZCkgeyByZWFkX2ZkXyA9IGZkOyB9Ci0g
IGludCB3cml0ZV9mZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQotICB2b2lkIHNldF93
cml0ZV9mZChpbnQgZmQpIHsgd3JpdGVfZmRfID0gZmQ7IH0KLQotICAvLyBDYWxsZWQgaW4gdGhl
IHBhcmVudCBwcm9jZXNzIG9ubHkuIFJlYWRzIHRoZSByZXN1bHQgY29kZSBvZiB0aGUgZGVhdGgK
LSAgLy8gdGVzdCBjaGlsZCBwcm9jZXNzIHZpYSBhIHBpcGUsIGludGVycHJldHMgaXQgdG8gc2V0
IHRoZSBvdXRjb21lXwotICAvLyBtZW1iZXIsIGFuZCBjbG9zZXMgcmVhZF9mZF8uICBPdXRwdXRz
IGRpYWdub3N0aWNzIGFuZCB0ZXJtaW5hdGVzIGluCi0gIC8vIGNhc2Ugb2YgdW5leHBlY3RlZCBj
b2Rlcy4KLSAgdm9pZCBSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpOwotCi0gcHJpdmF0ZToK
LSAgLy8gVGhlIHRleHR1YWwgY29udGVudCBvZiB0aGUgY29kZSB0aGlzIG9iamVjdCBpcyB0ZXN0
aW5nLiAgVGhpcyBjbGFzcwotICAvLyBkb2Vzbid0IG93biB0aGlzIHN0cmluZyBhbmQgc2hvdWxk
IG5vdCBhdHRlbXB0IHRvIGRlbGV0ZSBpdC4KLSAgY29uc3QgY2hhciogY29uc3Qgc3RhdGVtZW50
XzsKLSAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCB0ZXN0IG91dHB1dCBtdXN0IG1h
dGNoLiAgRGVhdGhUZXN0SW1wbAotICAvLyBkb2Vzbid0IG93biB0aGlzIG9iamVjdCBhbmQgc2hv
dWxkIG5vdCBhdHRlbXB0IHRvIGRlbGV0ZSBpdC4KLSAgY29uc3QgUkUqIGNvbnN0IHJlZ2V4XzsK
LSAgLy8gVHJ1ZSBpZiB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzIGhhcyBiZWVuIHN1Y2Nl
c3NmdWxseSBzcGF3bmVkLgotICBib29sIHNwYXduZWRfOwotICAvLyBUaGUgZXhpdCBzdGF0dXMg
b2YgdGhlIGNoaWxkIHByb2Nlc3MuCi0gIGludCBzdGF0dXNfOwotICAvLyBIb3cgdGhlIGRlYXRo
IHRlc3QgY29uY2x1ZGVkLgotICBEZWF0aFRlc3RPdXRjb21lIG91dGNvbWVfOwotICAvLyBEZXNj
cmlwdG9yIHRvIHRoZSByZWFkIGVuZCBvZiB0aGUgcGlwZSB0byB0aGUgY2hpbGQgcHJvY2Vzcy4g
IEl0IGlzCi0gIC8vIGFsd2F5cyAtMSBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4gIFRoZSBjaGlsZCBr
ZWVwcyBpdHMgd3JpdGUgZW5kIG9mIHRoZQotICAvLyBwaXBlIGluIHdyaXRlX2ZkXy4KLSAgaW50
IHJlYWRfZmRfOwotICAvLyBEZXNjcmlwdG9yIHRvIHRoZSBjaGlsZCdzIHdyaXRlIGVuZCBvZiB0
aGUgcGlwZSB0byB0aGUgcGFyZW50IHByb2Nlc3MuCi0gIC8vIEl0IGlzIGFsd2F5cyAtMSBpbiB0
aGUgcGFyZW50IHByb2Nlc3MuICBUaGUgcGFyZW50IGtlZXBzIGl0cyBlbmQgb2YgdGhlCi0gIC8v
IHBpcGUgaW4gcmVhZF9mZF8uCi0gIGludCB3cml0ZV9mZF87Ci19OwotCi0vLyBDYWxsZWQgaW4g
dGhlIHBhcmVudCBwcm9jZXNzIG9ubHkuIFJlYWRzIHRoZSByZXN1bHQgY29kZSBvZiB0aGUgZGVh
dGgKLS8vIHRlc3QgY2hpbGQgcHJvY2VzcyB2aWEgYSBwaXBlLCBpbnRlcnByZXRzIGl0IHRvIHNl
dCB0aGUgb3V0Y29tZV8KLS8vIG1lbWJlciwgYW5kIGNsb3NlcyByZWFkX2ZkXy4gIE91dHB1dHMg
ZGlhZ25vc3RpY3MgYW5kIHRlcm1pbmF0ZXMgaW4KLS8vIGNhc2Ugb2YgdW5leHBlY3RlZCBjb2Rl
cy4KLXZvaWQgRGVhdGhUZXN0SW1wbDo6UmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUoKSB7Ci0g
IGNoYXIgZmxhZzsKLSAgaW50IGJ5dGVzX3JlYWQ7Ci0KLSAgLy8gVGhlIHJlYWQoKSBoZXJlIGJs
b2NrcyB1bnRpbCBkYXRhIGlzIGF2YWlsYWJsZSAoc2lnbmlmeWluZyB0aGUKLSAgLy8gZmFpbHVy
ZSBvZiB0aGUgZGVhdGggdGVzdCkgb3IgdW50aWwgdGhlIHBpcGUgaXMgY2xvc2VkIChzaWduaWZ5
aW5nCi0gIC8vIGl0cyBzdWNjZXNzKSwgc28gaXQncyBva2F5IHRvIGNhbGwgdGhpcyBpbiB0aGUg
cGFyZW50IGJlZm9yZQotICAvLyB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgZXhpdGVkLgotICBkbyB7
Ci0gICAgYnl0ZXNfcmVhZCA9IHBvc2l4OjpSZWFkKHJlYWRfZmQoKSwgJmZsYWcsIDEpOwotICB9
IHdoaWxlIChieXRlc19yZWFkID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKLQotICBpZiAoYnl0
ZXNfcmVhZCA9PSAwKSB7Ci0gICAgc2V0X291dGNvbWUoRElFRCk7Ci0gIH0gZWxzZSBpZiAoYnl0
ZXNfcmVhZCA9PSAxKSB7Ci0gICAgc3dpdGNoIChmbGFnKSB7Ci0gICAgICBjYXNlIGtEZWF0aFRl
c3RSZXR1cm5lZDoKLSAgICAgICAgc2V0X291dGNvbWUoUkVUVVJORUQpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2Uga0RlYXRoVGVzdFRocmV3OgotICAgICAgICBzZXRfb3V0Y29tZShUSFJF
Vyk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBrRGVhdGhUZXN0TGl2ZWQ6Ci0gICAgICAg
IHNldF9vdXRjb21lKExJVkVEKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtEZWF0aFRl
c3RJbnRlcm5hbEVycm9yOgotICAgICAgICBGYWlsRnJvbUludGVybmFsRXJyb3IocmVhZF9mZCgp
KTsgIC8vIERvZXMgbm90IHJldHVybi4KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBHVEVTVF9MT0dfKEZBVEFMKSA8PCAiRGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzIHJl
cG9ydGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInVuZXhwZWN0ZWQgc3RhdHVz
IGJ5dGUgKCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihmbGFnKSA8PCAiKSI7Ci0gICAgfQotICB9IGVsc2UgewotICAgIEdURVNUX0xPR18o
RkFUQUwpIDw8ICJSZWFkIGZyb20gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzIGZhaWxlZDogIgot
ICAgICAgICAgICAgICAgICAgICAgIDw8IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7Ci0gIH0K
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhwb3NpeDo6Q2xvc2UocmVhZF9mZCgp
KSk7Ci0gIHNldF9yZWFkX2ZkKC0xKTsKLX0KLQotLy8gU2lnbmFscyB0aGF0IHRoZSBkZWF0aCB0
ZXN0IGNvZGUgd2hpY2ggc2hvdWxkIGhhdmUgZXhpdGVkLCBkaWRuJ3QuCi0vLyBTaG91bGQgYmUg
Y2FsbGVkIG9ubHkgaW4gYSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCi0vLyBXcml0ZXMgYSBz
dGF0dXMgYnl0ZSB0byB0aGUgY2hpbGQncyBzdGF0dXMgZmlsZSBkZXNjcmlwdG9yLCB0aGVuCi0v
LyBjYWxscyBfZXhpdCgxKS4KLXZvaWQgRGVhdGhUZXN0SW1wbDo6QWJvcnQoQWJvcnRSZWFzb24g
cmVhc29uKSB7Ci0gIC8vIFRoZSBwYXJlbnQgcHJvY2VzcyBjb25zaWRlcnMgdGhlIGRlYXRoIHRl
c3QgdG8gYmUgYSBmYWlsdXJlIGlmCi0gIC8vIGl0IGZpbmRzIGFueSBkYXRhIGluIG91ciBwaXBl
LiAgU28sIGhlcmUgd2Ugd3JpdGUgYSBzaW5nbGUgZmxhZyBieXRlCi0gIC8vIHRvIHRoZSBwaXBl
LCB0aGVuIGV4aXQuCi0gIGNvbnN0IGNoYXIgc3RhdHVzX2NoID0KLSAgICAgIHJlYXNvbiA9PSBU
RVNUX0RJRF9OT1RfRElFID8ga0RlYXRoVGVzdExpdmVkIDoKLSAgICAgIHJlYXNvbiA9PSBURVNU
X1RIUkVXX0VYQ0VQVElPTiA/IGtEZWF0aFRlc3RUaHJldyA6IGtEZWF0aFRlc3RSZXR1cm5lZDsK
LQotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHBvc2l4OjpXcml0ZSh3cml0ZV9m
ZCgpLCAmc3RhdHVzX2NoLCAxKSk7Ci0gIC8vIFdlIGFyZSBsZWFraW5nIHRoZSBkZXNjcmlwdG9y
IGhlcmUgYmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyAoaS5lLiwKLSAgLy8gd2hlbiBidWlsdCBh
cyBXaW5kb3dzIERMTCksIGRlc3RydWN0b3JzIG9mIGdsb2JhbCBvYmplY3RzIHdpbGwgc3RpbGwK
LSAgLy8gcnVuIGFmdGVyIGNhbGxpbmcgX2V4aXQoKS4gT24gc3VjaCBzeXN0ZW1zLCB3cml0ZV9m
ZF8gd2lsbCBiZQotICAvLyBpbmRpcmVjdGx5IGNsb3NlZCBmcm9tIHRoZSBkZXN0cnVjdG9yIG9m
IFVuaXRUZXN0SW1wbCwgY2F1c2luZyBkb3VibGUKLSAgLy8gY2xvc2UgaWYgaXQgaXMgYWxzbyBj
bG9zZWQgaGVyZS4gT24gZGVidWcgY29uZmlndXJhdGlvbnMsIGRvdWJsZSBjbG9zZQotICAvLyBt
YXkgYXNzZXJ0LiBBcyB0aGVyZSBhcmUgbm8gaW4tcHJvY2VzcyBidWZmZXJzIHRvIGZsdXNoIGhl
cmUsIHdlIGFyZQotICAvLyByZWx5aW5nIG9uIHRoZSBPUyB0byBjbG9zZSB0aGUgZGVzY3JpcHRv
ciBhZnRlciB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzCi0gIC8vIHdoZW4gdGhlIGRlc3RydWN0b3Jz
IGFyZSBub3QgcnVuLgotICBfZXhpdCgxKTsgIC8vIEV4aXRzIHcvbyBhbnkgbm9ybWFsIGV4aXQg
aG9va3MgKHdlIHdlcmUgc3VwcG9zZWQgdG8gY3Jhc2gpCi19Ci0KLS8vIFJldHVybnMgYW4gaW5k
ZW50ZWQgY29weSBvZiBzdGRlcnIgb3V0cHV0IGZvciBhIGRlYXRoIHRlc3QuCi0vLyBUaGlzIG1h
a2VzIGRpc3Rpbmd1aXNoaW5nIGRlYXRoIHRlc3Qgb3V0cHV0IGxpbmVzIGZyb20gcmVndWxhciBs
b2cgbGluZXMKLS8vIG11Y2ggZWFzaWVyLgotc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0RGVh
dGhUZXN0T3V0cHV0KGNvbnN0IDo6c3RkOjpzdHJpbmcmIG91dHB1dCkgewotICA6OnN0ZDo6c3Ry
aW5nIHJldDsKLSAgZm9yIChzaXplX3QgYXQgPSAwOyA7ICkgewotICAgIGNvbnN0IHNpemVfdCBs
aW5lX2VuZCA9IG91dHB1dC5maW5kKCdcbicsIGF0KTsKLSAgICByZXQgKz0gIlsgIERFQVRIICAg
XSAiOwotICAgIGlmIChsaW5lX2VuZCA9PSA6OnN0ZDo6c3RyaW5nOjpucG9zKSB7Ci0gICAgICBy
ZXQgKz0gb3V0cHV0LnN1YnN0cihhdCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0ICs9
IG91dHB1dC5zdWJzdHIoYXQsIGxpbmVfZW5kICsgMSAtIGF0KTsKLSAgICBhdCA9IGxpbmVfZW5k
ICsgMTsKLSAgfQotICByZXR1cm4gcmV0OwotfQotCi0vLyBBc3Nlc3NlcyB0aGUgc3VjY2VzcyBv
ciBmYWlsdXJlIG9mIGEgZGVhdGggdGVzdCwgdXNpbmcgYm90aCBwcml2YXRlCi0vLyBtZW1iZXJz
IHdoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIHNldCwgYW5kIG9uZSBhcmd1bWVudDoKLS8vCi0v
LyBQcml2YXRlIGRhdGEgbWVtYmVyczoKLS8vICAgb3V0Y29tZTogIEFuIGVudW1lcmF0aW9uIGRl
c2NyaWJpbmcgaG93IHRoZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBjb25jbHVkZWQ6IERJ
RUQsIExJVkVELCBUSFJFVywgb3IgUkVUVVJORUQuICBUaGUgZGVhdGggdGVzdAotLy8gICAgICAg
ICAgICAgZmFpbHMgaW4gdGhlIGxhdHRlciB0aHJlZSBjYXNlcy4KLS8vICAgc3RhdHVzOiAgIFRo
ZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4gT24gKm5peCwgaXQgaXMgaW4gdGhl
Ci0vLyAgICAgICAgICAgICBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSB3YWl0KDIpLiBPbiBX
aW5kb3dzLCB0aGlzIGlzIHRoZQotLy8gICAgICAgICAgICAgdmFsdWUgc3VwcGxpZWQgdG8gdGhl
IEV4aXRQcm9jZXNzKCkgQVBJIG9yIGEgbnVtZXJpYyBjb2RlCi0vLyAgICAgICAgICAgICBvZiB0
aGUgZXhjZXB0aW9uIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvZ3JhbS4KLS8vICAgcmVnZXg6ICAg
IEEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCB0byBiZSBhcHBsaWVkIHRvCi0vLyAgICAgICAg
ICAgICB0aGUgdGVzdCdzIGNhcHR1cmVkIHN0YW5kYXJkIGVycm9yIG91dHB1dDsgdGhlIGRlYXRo
IHRlc3QKLS8vICAgICAgICAgICAgIGZhaWxzIGlmIGl0IGRvZXMgbm90IG1hdGNoLgotLy8KLS8v
IEFyZ3VtZW50OgotLy8gICBzdGF0dXNfb2s6IHRydWUgaWYgZXhpdF9zdGF0dXMgaXMgYWNjZXB0
YWJsZSBpbiB0aGUgY29udGV4dCBvZgotLy8gICAgICAgICAgICAgIHRoaXMgcGFydGljdWxhciBk
ZWF0aCB0ZXN0LCB3aGljaCBmYWlscyBpZiBpdCBpcyBmYWxzZQotLy8KLS8vIFJldHVybnMgdHJ1
ZSBpZmYgYWxsIG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIGFyZSBtZXQuICBPdGhlcndpc2UsIHRo
ZQotLy8gZmlyc3QgZmFpbGluZyBjb25kaXRpb24sIGluIHRoZSBvcmRlciBnaXZlbiBhYm92ZSwg
aXMgdGhlIG9uZSB0aGF0IGlzCi0vLyByZXBvcnRlZC4gQWxzbyBzZXRzIHRoZSBsYXN0IGRlYXRo
IHRlc3QgbWVzc2FnZSBzdHJpbmcuCi1ib29sIERlYXRoVGVzdEltcGw6OlBhc3NlZChib29sIHN0
YXR1c19vaykgewotICBpZiAoIXNwYXduZWQoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgY29u
c3Qgc3RkOjpzdHJpbmcgZXJyb3JfbWVzc2FnZSA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0KLSAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gIE1lc3NhZ2UgYnVmZmVyOwotCi0gIGJ1ZmZlciA8PCAi
RGVhdGggdGVzdDogIiA8PCBzdGF0ZW1lbnQoKSA8PCAiXG4iOwotICBzd2l0Y2ggKG91dGNvbWUo
KSkgewotICAgIGNhc2UgTElWRUQ6Ci0gICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGZhaWxl
ZCB0byBkaWUuXG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8IEZvcm1hdERl
YXRoVGVzdE91dHB1dChlcnJvcl9tZXNzYWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVEhS
RVc6Ci0gICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IHRocmV3IGFuIGV4Y2VwdGlvbi5cbiIK
LSAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0
KGVycm9yX21lc3NhZ2UpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSRVRVUk5FRDoKLSAgICAg
IGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogaWxsZWdhbCByZXR1cm4gaW4gdGVzdCBzdGF0ZW1lbnQu
XG4iCi0gICAgICAgICAgICAgPDwgIiBFcnJvciBtc2c6XG4iIDw8IEZvcm1hdERlYXRoVGVzdE91
dHB1dChlcnJvcl9tZXNzYWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgRElFRDoKLSAgICAg
IGlmIChzdGF0dXNfb2spIHsKLSAgICAgICAgY29uc3QgYm9vbCBtYXRjaGVkID0gUkU6OlBhcnRp
YWxNYXRjaChlcnJvcl9tZXNzYWdlLmNfc3RyKCksICpyZWdleCgpKTsKLSAgICAgICAgaWYgKG1h
dGNoZWQpIHsKLSAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVk
IGVycm9yLlxuIgotICAgICAgICAgICAgICAgICA8PCAiICBFeHBlY3RlZDogIiA8PCByZWdleCgp
LT5wYXR0ZXJuKCkgPDwgIlxuIgotICAgICAgICAgICAgICAgICA8PCAiQWN0dWFsIG1zZzpcbiIg
PDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwotICAgICAgICB9Ci0gICAg
ICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPDwgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3
aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKLSAgICAgICAgICAgICAgIDw8ICIgICAgICAgICAg
ICAiIDw8IEV4aXRTdW1tYXJ5KHN0YXR1cygpKSA8PCAiXG4iCi0gICAgICAgICAgICAgICA8PCAi
QWN0dWFsIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwot
ICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTl9QUk9HUkVTUzoKLSAgICBkZWZhdWx0
OgotICAgICAgR1RFU1RfTE9HXyhGQVRBTCkKLSAgICAgICAgICA8PCAiRGVhdGhUZXN0OjpQYXNz
ZWQgc29tZWhvdyBjYWxsZWQgYmVmb3JlIGNvbmNsdXNpb24gb2YgdGVzdCI7Ci0gIH0KLQotICBE
ZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZShidWZmZXIuR2V0U3RyaW5nKCkp
OwotICByZXR1cm4gc3VjY2VzczsKLX0KLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0vLyBXaW5k
b3dzRGVhdGhUZXN0IGltcGxlbWVudHMgZGVhdGggdGVzdHMgb24gV2luZG93cy4gRHVlIHRvIHRo
ZQotLy8gc3BlY2lmaWNzIG9mIHN0YXJ0aW5nIG5ldyBwcm9jZXNzZXMgb24gV2luZG93cywgZGVh
dGggdGVzdHMgdGhlcmUgYXJlCi0vLyBhbHdheXMgdGhyZWFkc2FmZSwgYW5kIEdvb2dsZSBUZXN0
IGNvbnNpZGVycyB0aGUKLS8vIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZT1mYXN0IHNldHRpbmcg
dG8gYmUgZXF1aXZhbGVudCB0bwotLy8gLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNh
ZmUgdGhlcmUuCi0vLwotLy8gQSBmZXcgaW1wbGVtZW50YXRpb24gbm90ZXM6ICBMaWtlIHRoZSBM
aW51eCB2ZXJzaW9uLCB0aGUgV2luZG93cwotLy8gaW1wbGVtZW50YXRpb24gdXNlcyBwaXBlcyBm
b3IgY2hpbGQtdG8tcGFyZW50IGNvbW11bmljYXRpb24uIEJ1dCBkdWUgdG8KLS8vIHRoZSBzcGVj
aWZpY3Mgb2YgcGlwZXMgb24gV2luZG93cywgc29tZSBleHRyYSBzdGVwcyBhcmUgcmVxdWlyZWQ6
Ci0vLwotLy8gMS4gVGhlIHBhcmVudCBjcmVhdGVzIGEgY29tbXVuaWNhdGlvbiBwaXBlIGFuZCBz
dG9yZXMgaGFuZGxlcyB0byBib3RoCi0vLyAgICBlbmRzIG9mIGl0LgotLy8gMi4gVGhlIHBhcmVu
dCBzdGFydHMgdGhlIGNoaWxkIGFuZCBwcm92aWRlcyBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbgot
Ly8gICAgbmVjZXNzYXJ5IHRvIGFjcXVpcmUgdGhlIGhhbmRsZSB0byB0aGUgd3JpdGUgZW5kIG9m
IHRoZSBwaXBlLgotLy8gMy4gVGhlIGNoaWxkIGFjcXVpcmVzIHRoZSB3cml0ZSBlbmQgb2YgdGhl
IHBpcGUgYW5kIHNpZ25hbHMgdGhlIHBhcmVudAotLy8gICAgdXNpbmcgYSBXaW5kb3dzIGV2ZW50
LgotLy8gNC4gTm93IHRoZSBwYXJlbnQgY2FuIHJlbGVhc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUg
cGlwZSBvbiBpdHMgc2lkZS4gSWYKLS8vICAgIHRoaXMgaXMgZG9uZSBiZWZvcmUgc3RlcCAzLCB0
aGUgb2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50IGdvZXMgZG93biB0bwotLy8gICAgMCBhbmQgaXQg
aXMgZGVzdHJveWVkLCBwcmV2ZW50aW5nIHRoZSBjaGlsZCBmcm9tIGFjcXVpcmluZyBpdC4gVGhl
Ci0vLyAgICBwYXJlbnQgbm93IGhhcyB0byByZWxlYXNlIGl0LCBvciByZWFkIG9wZXJhdGlvbnMg
b24gdGhlIHJlYWQgZW5kIG9mCi0vLyAgICB0aGUgcGlwZSB3aWxsIG5vdCByZXR1cm4gd2hlbiB0
aGUgY2hpbGQgdGVybWluYXRlcy4KLS8vIDUuIFRoZSBwYXJlbnQgcmVhZHMgY2hpbGQncyBvdXRw
dXQgdGhyb3VnaCB0aGUgcGlwZSAob3V0Y29tZSBjb2RlIGFuZAotLy8gICAgYW55IHBvc3NpYmxl
IGVycm9yIG1lc3NhZ2VzKSBmcm9tIHRoZSBwaXBlLCBhbmQgaXRzIHN0ZGVyciBhbmQgdGhlbgot
Ly8gICAgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGZhaWwgdGhlIHRlc3QuCi0vLwotLy8gTm90ZTog
dG8gZGlzdGluZ3Vpc2ggV2luMzIgQVBJIGNhbGxzIGZyb20gdGhlIGxvY2FsIG1ldGhvZCBhbmQg
ZnVuY3Rpb24KLS8vIGNhbGxzLCB0aGUgZm9ybWVyIGFyZSBleHBsaWNpdGx5IHJlc29sdmVkIGlu
IHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotLy8KLWNsYXNzIFdpbmRvd3NEZWF0aFRlc3QgOiBwdWJs
aWMgRGVhdGhUZXN0SW1wbCB7Ci0gcHVibGljOgotICBXaW5kb3dzRGVhdGhUZXN0KGNvbnN0IGNo
YXIqIGFfc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFKiBhX3JlZ2V4LAot
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICAgICAgICAgICAgICAg
aW50IGxpbmUpCi0gICAgICA6IERlYXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBm
aWxlXyhmaWxlKSwgbGluZV8obGluZSkge30KLQotICAvLyBBbGwgb2YgdGhlc2UgdmlydHVhbCBm
dW5jdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9tIERlYXRoVGVzdC4KLSAgdmlydHVhbCBpbnQgV2Fp
dCgpOwotICB2aXJ0dWFsIFRlc3RSb2xlIEFzc3VtZVJvbGUoKTsKLQotIHByaXZhdGU6Ci0gIC8v
IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQu
Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVfOwotICAvLyBUaGUgbGluZSBudW1iZXIgb24gd2hp
Y2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KLSAgY29uc3QgaW50IGxpbmVfOwotICAvLyBI
YW5kbGUgdG8gdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSB0byB0aGUgY2hpbGQgcHJvY2Vzcy4K
LSAgQXV0b0hhbmRsZSB3cml0ZV9oYW5kbGVfOwotICAvLyBDaGlsZCBwcm9jZXNzIGhhbmRsZS4K
LSAgQXV0b0hhbmRsZSBjaGlsZF9oYW5kbGVfOwotICAvLyBFdmVudCB0aGUgY2hpbGQgcHJvY2Vz
cyB1c2VzIHRvIHNpZ25hbCB0aGUgcGFyZW50IHRoYXQgaXQgaGFzCi0gIC8vIGFjcXVpcmVkIHRo
ZSBoYW5kbGUgdG8gdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gQWZ0ZXIgc2VlaW5nIHRoaXMK
LSAgLy8gZXZlbnQgdGhlIHBhcmVudCBjYW4gcmVsZWFzZSBpdHMgb3duIGhhbmRsZXMgdG8gbWFr
ZSBzdXJlIGl0cwotICAvLyBSZWFkRmlsZSgpIGNhbGxzIHJldHVybiB3aGVuIHRoZSBjaGlsZCB0
ZXJtaW5hdGVzLgotICBBdXRvSGFuZGxlIGV2ZW50X2hhbmRsZV87Ci19OwotCi0vLyBXYWl0cyBm
b3IgdGhlIGNoaWxkIGluIGEgZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQK
LS8vIHN0YXR1cywgb3IgMCBpZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBl
ZmZlY3QsIHNldHMgdGhlCi0vLyBvdXRjb21lIGRhdGEgbWVtYmVyLgotaW50IFdpbmRvd3NEZWF0
aFRlc3Q6OldhaXQoKSB7Ci0gIGlmICghc3Bhd25lZCgpKQotICAgIHJldHVybiAwOwotCi0gIC8v
IFdhaXQgdW50aWwgdGhlIGNoaWxkIGVpdGhlciBzaWduYWxzIHRoYXQgaXQgaGFzIGFjcXVpcmVk
IHRoZSB3cml0ZSBlbmQKLSAgLy8gb2YgdGhlIHBpcGUgb3IgaXQgZGllcy4KLSAgY29uc3QgSEFO
RExFIHdhaXRfaGFuZGxlc1syXSA9IHsgY2hpbGRfaGFuZGxlXy5HZXQoKSwgZXZlbnRfaGFuZGxl
Xy5HZXQoKSB9OwotICBzd2l0Y2ggKDo6V2FpdEZvck11bHRpcGxlT2JqZWN0cygyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2hhbmRsZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gV2FpdHMgZm9yIGFueSBvZiB0aGUgaGFu
ZGxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5GSU5JVEUpKSB7Ci0g
ICAgY2FzZSBXQUlUX09CSkVDVF8wOgotICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCArIDE6Ci0gICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZmFs
c2UpOyAgLy8gU2hvdWxkIG5vdCBnZXQgaGVyZS4KLSAgfQotCi0gIC8vIFRoZSBjaGlsZCBoYXMg
YWNxdWlyZWQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBvciBleGl0ZWQuCi0gIC8vIFdlIHJl
bGVhc2UgdGhlIGhhbmRsZSBvbiBvdXIgc2lkZSBhbmQgY29udGludWUuCi0gIHdyaXRlX2hhbmRs
ZV8uUmVzZXQoKTsKLSAgZXZlbnRfaGFuZGxlXy5SZXNldCgpOwotCi0gIFJlYWRBbmRJbnRlcnBy
ZXRTdGF0dXNCeXRlKCk7Ci0KLSAgLy8gV2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGV4
aXQgaWYgaXQgaGF2ZW4ndCBhbHJlYWR5LiBUaGlzCi0gIC8vIHJldHVybnMgaW1tZWRpYXRlbHkg
aWYgdGhlIGNoaWxkIGhhcyBhbHJlYWR5IGV4aXRlZCwgcmVnYXJkbGVzcyBvZgotICAvLyB3aGV0
aGVyIHByZXZpb3VzIGNhbGxzIHRvIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgc3luY2hyb25pemVk
IG9uIHRoaXMKLSAgLy8gaGFuZGxlIG9yIG5vdC4KLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18o
Ci0gICAgICBXQUlUX09CSkVDVF8wID09IDo6V2FpdEZvclNpbmdsZU9iamVjdChjaGlsZF9oYW5k
bGVfLkdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SU5GSU5JVEUpKTsKLSAgRFdPUkQgc3RhdHVzX2NvZGU7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKAotICAgICAgOjpHZXRFeGl0Q29kZVByb2Nlc3MoY2hpbGRfaGFuZGxlXy5HZXQoKSwgJnN0
YXR1c19jb2RlKSAhPSBGQUxTRSk7Ci0gIGNoaWxkX2hhbmRsZV8uUmVzZXQoKTsKLSAgc2V0X3N0
YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXR1c19jb2RlKSk7Ci0gIHJldHVybiBzdGF0dXMoKTsK
LX0KLQotLy8gVGhlIEFzc3VtZVJvbGUgcHJvY2VzcyBmb3IgYSBXaW5kb3dzIGRlYXRoIHRlc3Qu
ICBJdCBjcmVhdGVzIGEgY2hpbGQKLS8vIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxl
IGFzIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gcnVuIHRoZQotLy8gZGVhdGggdGVzdC4gIFRoZSBj
aGlsZCBwcm9jZXNzIGlzIGdpdmVuIHRoZSAtLWd0ZXN0X2ZpbHRlciBhbmQKLS8vIC0tZ3Rlc3Rf
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZ3Mgc3VjaCB0aGF0IGl0IGtub3dzIHRvIHJ1biB0
aGUKLS8vIGN1cnJlbnQgZGVhdGggdGVzdCBvbmx5LgotRGVhdGhUZXN0OjpUZXN0Um9sZSBXaW5k
b3dzRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewotICBjb25zdCBVbml0VGVzdEltcGwqIGNvbnN0
IGltcGwgPSBHZXRVbml0VGVzdEltcGwoKTsKLSAgY29uc3QgSW50ZXJuYWxSdW5EZWF0aFRlc3RG
bGFnKiBjb25zdCBmbGFnID0KLSAgICAgIGltcGwtPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2Zs
YWcoKTsKLSAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBpbXBsLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOwotICBjb25zdCBpbnQgZGVhdGhfdGVzdF9pbmRleCA9IGluZm8tPnJlc3VsdCgpLT5k
ZWF0aF90ZXN0X2NvdW50KCk7Ci0KLSAgaWYgKGZsYWcgIT0gTlVMTCkgewotICAgIC8vIFBhcnNl
SW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCkgaGFzIHBlcmZvcm1lZCBhbGwgdGhlIG5lY2Vzc2Fy
eQotICAgIC8vIHByb2Nlc3NpbmcuCi0gICAgc2V0X3dyaXRlX2ZkKGZsYWctPndyaXRlX2ZkKCkp
OwotICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7Ci0gIH0KLQotICAvLyBXaW5kb3dzRGVhdGhUZXN0
IHVzZXMgYW4gYW5vbnltb3VzIHBpcGUgdG8gY29tbXVuaWNhdGUgcmVzdWx0cyBvZgotICAvLyBh
IGRlYXRoIHRlc3QuCi0gIFNFQ1VSSVRZX0FUVFJJQlVURVMgaGFuZGxlc19hcmVfaW5oZXJpdGFi
bGUgPSB7Ci0gICAgc2l6ZW9mKFNFQ1VSSVRZX0FUVFJJQlVURVMpLCBOVUxMLCBUUlVFIH07Ci0g
IEhBTkRMRSByZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlOwotICBHVEVTVF9ERUFUSF9URVNUX0NI
RUNLXygKLSAgICAgIDo6Q3JlYXRlUGlwZSgmcmVhZF9oYW5kbGUsICZ3cml0ZV9oYW5kbGUsICZo
YW5kbGVzX2FyZV9pbmhlcml0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAwKSAgLy8gRGVmYXVs
dCBidWZmZXIgc2l6ZS4KLSAgICAgICE9IEZBTFNFKTsKLSAgc2V0X3JlYWRfZmQoOjpfb3Blbl9v
c2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocmVhZF9oYW5kbGUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPX1JET05MWSkpOwotICB3cml0ZV9oYW5kbGVfLlJl
c2V0KHdyaXRlX2hhbmRsZSk7Ci0gIGV2ZW50X2hhbmRsZV8uUmVzZXQoOjpDcmVhdGVFdmVudCgK
LSAgICAgICZoYW5kbGVzX2FyZV9pbmhlcml0YWJsZSwKLSAgICAgIFRSVUUsICAgIC8vIFRoZSBl
dmVudCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzZXQgdG8gbm9uLXNpZ25hbGVkIHN0YXRlLgotICAg
ICAgRkFMU0UsICAgLy8gVGhlIGluaXRpYWwgc3RhdGUgaXMgbm9uLXNpZ25hbGxlZC4KLSAgICAg
IE5VTEwpKTsgIC8vIFRoZSBldmVuIGlzIHVubmFtZWQuCi0gIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKGV2ZW50X2hhbmRsZV8uR2V0KCkgIT0gTlVMTCk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZp
bHRlcl9mbGFnID0KLSAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhf
ICsga0ZpbHRlckZsYWcgKyAiPSIgKwotICAgICAgaW5mby0+dGVzdF9jYXNlX25hbWUoKSArICIu
IiArIGluZm8tPm5hbWUoKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgaW50ZXJuYWxfZmxhZyA9Ci0g
ICAgICBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtJbnRlcm5hbFJ1
bkRlYXRoVGVzdEZsYWcgKwotICAgICAgIj0iICsgZmlsZV8gKyAifCIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcobGluZV8pICsgInwiICsKLSAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhkZWF0aF90ZXN0
X2luZGV4KSArICJ8IiArCi0gICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pig6OkdldEN1cnJlbnRQcm9jZXNzSWQoKSkpICsKLSAgICAgIC8vIHNpemVfdCBo
YXMgdGhlIHNhbWUgd2lkdGggYXMgcG9pbnRlcnMgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdAot
ICAgICAgLy8gV2luZG93cyBwbGF0Zm9ybXMuCi0gICAgICAvLyBTZWUgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3RjeGYxZHc2LmFzcHguCi0gICAgICAifCIgKyBTdHJl
YW1hYmxlVG9TdHJpbmcocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHdyaXRlX2hhbmRsZSkpICsK
LSAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNpemVfdD4o
ZXZlbnRfaGFuZGxlXy5HZXQoKSkpOwotCi0gIGNoYXIgZXhlY3V0YWJsZV9wYXRoW19NQVhfUEFU
SCArIDFdOyAgLy8gTk9MSU5UCi0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAotICAgICAgX01B
WF9QQVRIICsgMSAhPSA6OkdldE1vZHVsZUZpbGVOYW1lQShOVUxMLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX3BhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NQVhfUEFUSCkpOwotCi0gIHN0ZDo6
c3RyaW5nIGNvbW1hbmRfbGluZSA9Ci0gICAgICBzdGQ6OnN0cmluZyg6OkdldENvbW1hbmRMaW5l
QSgpKSArICIgIiArIGZpbHRlcl9mbGFnICsgIiBcIiIgKwotICAgICAgaW50ZXJuYWxfZmxhZyAr
ICJcIiI7Ci0KLSAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoIiIpOwot
Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgLy8gRmx1c2ggdGhlIGxvZyBidWZmZXJzIHNpbmNlIHRo
ZSBsb2cgc3RyZWFtcyBhcmUgc2hhcmVkIHdpdGggdGhlIGNoaWxkLgotICBGbHVzaEluZm9Mb2co
KTsKLQotICAvLyBUaGUgY2hpbGQgcHJvY2VzcyB3aWxsIHNoYXJlIHRoZSBzdGFuZGFyZCBoYW5k
bGVzIHdpdGggdGhlIHBhcmVudC4KLSAgU1RBUlRVUElORk9BIHN0YXJ0dXBfaW5mbzsKLSAgbWVt
c2V0KCZzdGFydHVwX2luZm8sIDAsIHNpemVvZihTVEFSVFVQSU5GTykpOwotICBzdGFydHVwX2lu
Zm8uZHdGbGFncyA9IFNUQVJURl9VU0VTVERIQU5ETEVTOwotICBzdGFydHVwX2luZm8uaFN0ZElu
cHV0ID0gOjpHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSk7Ci0gIHN0YXJ0dXBfaW5mby5o
U3RkT3V0cHV0ID0gOjpHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwotICBzdGFydHVw
X2luZm8uaFN0ZEVycm9yID0gOjpHZXRTdGRIYW5kbGUoU1REX0VSUk9SX0hBTkRMRSk7Ci0KLSAg
UFJPQ0VTU19JTkZPUk1BVElPTiBwcm9jZXNzX2luZm87Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfKDo6Q3JlYXRlUHJvY2Vzc0EoCi0gICAgICBleGVjdXRhYmxlX3BhdGgsCi0gICAgICBjb25z
dF9jYXN0PGNoYXIqPihjb21tYW5kX2xpbmUuY19zdHIoKSksCi0gICAgICBOVUxMLCAgIC8vIFJl
dHVuZWQgcHJvY2VzcyBoYW5kbGUgaXMgbm90IGluaGVyaXRhYmxlLgotICAgICAgTlVMTCwgICAv
LyBSZXR1bmVkIHRocmVhZCBoYW5kbGUgaXMgbm90IGluaGVyaXRhYmxlLgotICAgICAgVFJVRSwg
ICAvLyBDaGlsZCBpbmhlcml0cyBhbGwgaW5oZXJpdGFibGUgaGFuZGxlcyAoZm9yIHdyaXRlX2hh
bmRsZV8pLgotICAgICAgMHgwLCAgICAvLyBEZWZhdWx0IGNyZWF0aW9uIGZsYWdzLgotICAgICAg
TlVMTCwgICAvLyBJbmhlcml0IHRoZSBwYXJlbnQncyBlbnZpcm9ubWVudC4KLSAgICAgIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpLAotICAgICAgJnN0YXJ0
dXBfaW5mbywKLSAgICAgICZwcm9jZXNzX2luZm8pICE9IEZBTFNFKTsKLSAgY2hpbGRfaGFuZGxl
Xy5SZXNldChwcm9jZXNzX2luZm8uaFByb2Nlc3MpOwotICA6OkNsb3NlSGFuZGxlKHByb2Nlc3Nf
aW5mby5oVGhyZWFkKTsKLSAgc2V0X3NwYXduZWQodHJ1ZSk7Ci0gIHJldHVybiBPVkVSU0VFX1RF
U1Q7Ci19Ci0jIGVsc2UgIC8vIFdlIGFyZSBub3Qgb24gV2luZG93cy4KLQotLy8gRm9ya2luZ0Rl
YXRoVGVzdCBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbnMgZm9yIG1vc3Qgb2YgdGhlIGFic3RyYWN0
Ci0vLyBtZXRob2RzIG9mIHRoZSBEZWF0aFRlc3QgaW50ZXJmYWNlLiAgT25seSB0aGUgQXNzdW1l
Um9sZSBtZXRob2QgaXMKLS8vIGxlZnQgdW5kZWZpbmVkLgotY2xhc3MgRm9ya2luZ0RlYXRoVGVz
dCA6IHB1YmxpYyBEZWF0aFRlc3RJbXBsIHsKLSBwdWJsaWM6Ci0gIEZvcmtpbmdEZWF0aFRlc3Qo
Y29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSogcmVnZXgpOwotCi0gIC8vIEFsbCBvZiB0
aGVzZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gRGVhdGhUZXN0LgotICB2
aXJ0dWFsIGludCBXYWl0KCk7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIHZvaWQgc2V0X2NoaWxkX3BpZChw
aWRfdCBjaGlsZF9waWQpIHsgY2hpbGRfcGlkXyA9IGNoaWxkX3BpZDsgfQotCi0gcHJpdmF0ZToK
LSAgLy8gUElEIG9mIGNoaWxkIHByb2Nlc3MgZHVyaW5nIGRlYXRoIHRlc3Q7IDAgaW4gdGhlIGNo
aWxkIHByb2Nlc3MgaXRzZWxmLgotICBwaWRfdCBjaGlsZF9waWRfOwotfTsKLQotLy8gQ29uc3Ry
dWN0cyBhIEZvcmtpbmdEZWF0aFRlc3QuCi1Gb3JraW5nRGVhdGhUZXN0OjpGb3JraW5nRGVhdGhU
ZXN0KGNvbnN0IGNoYXIqIGFfc3RhdGVtZW50LCBjb25zdCBSRSogYV9yZWdleCkKLSAgICA6IERl
YXRoVGVzdEltcGwoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLAotICAgICAgY2hpbGRfcGlkXygtMSkg
e30KLQotLy8gV2FpdHMgZm9yIHRoZSBjaGlsZCBpbiBhIGRlYXRoIHRlc3QgdG8gZXhpdCwgcmV0
dXJuaW5nIGl0cyBleGl0Ci0vLyBzdGF0dXMsIG9yIDAgaWYgbm8gY2hpbGQgcHJvY2VzcyBleGlz
dHMuICBBcyBhIHNpZGUgZWZmZWN0LCBzZXRzIHRoZQotLy8gb3V0Y29tZSBkYXRhIG1lbWJlci4K
LWludCBGb3JraW5nRGVhdGhUZXN0OjpXYWl0KCkgewotICBpZiAoIXNwYXduZWQoKSkKLSAgICBy
ZXR1cm4gMDsKLQotICBSZWFkQW5kSW50ZXJwcmV0U3RhdHVzQnl0ZSgpOwotCi0gIGludCBzdGF0
dXNfdmFsdWU7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8od2FpdHBpZChjaGls
ZF9waWRfLCAmc3RhdHVzX3ZhbHVlLCAwKSk7Ci0gIHNldF9zdGF0dXMoc3RhdHVzX3ZhbHVlKTsK
LSAgcmV0dXJuIHN0YXR1c192YWx1ZTsKLX0KLQotLy8gQSBjb25jcmV0ZSBkZWF0aCB0ZXN0IGNs
YXNzIHRoYXQgZm9ya3MsIHRoZW4gaW1tZWRpYXRlbHkgcnVucyB0aGUgdGVzdAotLy8gaW4gdGhl
IGNoaWxkIHByb2Nlc3MuCi1jbGFzcyBOb0V4ZWNEZWF0aFRlc3QgOiBwdWJsaWMgRm9ya2luZ0Rl
YXRoVGVzdCB7Ci0gcHVibGljOgotICBOb0V4ZWNEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0
ZW1lbnQsIGNvbnN0IFJFKiBhX3JlZ2V4KSA6Ci0gICAgICBGb3JraW5nRGVhdGhUZXN0KGFfc3Rh
dGVtZW50LCBhX3JlZ2V4KSB7IH0KLSAgdmlydHVhbCBUZXN0Um9sZSBBc3N1bWVSb2xlKCk7Ci19
OwotCi0vLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZvciBhIGZvcmstYW5kLXJ1biBkZWF0aCB0
ZXN0LiAgSXQgaW1wbGVtZW50cyBhCi0vLyBzdHJhaWdodGZvcndhcmQgZm9yaywgd2l0aCBhIHNp
bXBsZSBwaXBlIHRvIHRyYW5zbWl0IHRoZSBzdGF0dXMgYnl0ZS4KLURlYXRoVGVzdDo6VGVzdFJv
bGUgTm9FeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewotICBjb25zdCBzaXplX3QgdGhyZWFk
X2NvdW50ID0gR2V0VGhyZWFkQ291bnQoKTsKLSAgaWYgKHRocmVhZF9jb3VudCAhPSAxKSB7Ci0g
ICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCBEZWF0aFRlc3RUaHJlYWRXYXJuaW5nKHRocmVhZF9j
b3VudCk7Ci0gIH0KLQotICBpbnQgcGlwZV9mZFsyXTsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S18ocGlwZShwaXBlX2ZkKSAhPSAtMSk7Ci0KLSAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2UoIiIpOwotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIC8vIFdoZW4gd2UgZm9yayB0
aGUgcHJvY2VzcyBiZWxvdywgdGhlIGxvZyBmaWxlIGJ1ZmZlcnMgYXJlIGNvcGllZCwgYnV0IHRo
ZQotICAvLyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBzaGFyZWQuICBXZSBmbHVzaCBhbGwgbG9nIGZp
bGVzIGhlcmUgc28gdGhhdCBjbG9zaW5nCi0gIC8vIHRoZSBmaWxlIGRlc2NyaXB0b3JzIGluIHRo
ZSBjaGlsZCBwcm9jZXNzIGRvZXNuJ3QgdGhyb3cgb2ZmIHRoZQotICAvLyBzeW5jaHJvbml6YXRp
b24gYmV0d2VlbiBkZXNjcmlwdG9ycyBhbmQgYnVmZmVycyBpbiB0aGUgcGFyZW50IHByb2Nlc3Mu
Ci0gIC8vIFRoaXMgaXMgYXMgY2xvc2UgdG8gdGhlIGZvcmsgYXMgcG9zc2libGUgdG8gYXZvaWQg
YSByYWNlIGNvbmRpdGlvbiBpbiBjYXNlCi0gIC8vIHRoZXJlIGFyZSBtdWx0aXBsZSB0aHJlYWRz
IHJ1bm5pbmcgYmVmb3JlIHRoZSBkZWF0aCB0ZXN0LCBhbmQgYW5vdGhlcgotICAvLyB0aHJlYWQg
d3JpdGVzIHRvIHRoZSBsb2cgZmlsZS4KLSAgRmx1c2hJbmZvTG9nKCk7Ci0KLSAgY29uc3QgcGlk
X3QgY2hpbGRfcGlkID0gZm9yaygpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjaGlsZF9w
aWQgIT0gLTEpOwotICBzZXRfY2hpbGRfcGlkKGNoaWxkX3BpZCk7Ci0gIGlmIChjaGlsZF9waWQg
PT0gMCkgewotICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9m
ZFswXSkpOwotICAgIHNldF93cml0ZV9mZChwaXBlX2ZkWzFdKTsKLSAgICAvLyBSZWRpcmVjdHMg
YWxsIGxvZ2dpbmcgdG8gc3RkZXJyIGluIHRoZSBjaGlsZCBwcm9jZXNzIHRvIHByZXZlbnQKLSAg
ICAvLyBjb25jdXJyZW50IHdyaXRlcyB0byB0aGUgbG9nIGZpbGVzLiAgV2UgY2FwdHVyZSBzdGRl
cnIgaW4gdGhlIHBhcmVudAotICAgIC8vIHByb2Nlc3MgYW5kIGFwcGVuZCB0aGUgY2hpbGQgcHJv
Y2Vzcycgb3V0cHV0IHRvIGEgbG9nLgotICAgIExvZ1RvU3RkZXJyKCk7Ci0gICAgLy8gRXZlbnQg
Zm9yd2FyZGluZyB0byB0aGUgbGlzdGVuZXJzIG9mIGV2ZW50IGxpc3RlbmVyIEFQSSBtdXNoIGJl
IHNodXQKLSAgICAvLyBkb3duIGluIGRlYXRoIHRlc3Qgc3VicHJvY2Vzc2VzLgotICAgIEdldFVu
aXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKS0+U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKTsKLSAg
ICBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IHRydWU7Ci0gICAgcmV0dXJuIEVYRUNVVEVf
VEVTVDsKLSAgfSBlbHNlIHsKLSAgICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNs
b3NlKHBpcGVfZmRbMV0pKTsKLSAgICBzZXRfcmVhZF9mZChwaXBlX2ZkWzBdKTsKLSAgICBzZXRf
c3Bhd25lZCh0cnVlKTsKLSAgICByZXR1cm4gT1ZFUlNFRV9URVNUOwotICB9Ci19Ci0KLS8vIEEg
Y29uY3JldGUgZGVhdGggdGVzdCBjbGFzcyB0aGF0IGZvcmtzIGFuZCByZS1leGVjdXRlcyB0aGUg
bWFpbgotLy8gcHJvZ3JhbSBmcm9tIHRoZSBiZWdpbm5pbmcsIHdpdGggY29tbWFuZC1saW5lIGZs
YWdzIHNldCB0aGF0IGNhdXNlCi0vLyBvbmx5IHRoaXMgc3BlY2lmaWMgZGVhdGggdGVzdCB0byBi
ZSBydW4uCi1jbGFzcyBFeGVjRGVhdGhUZXN0IDogcHVibGljIEZvcmtpbmdEZWF0aFRlc3Qgewot
IHB1YmxpYzoKLSAgRXhlY0RlYXRoVGVzdChjb25zdCBjaGFyKiBhX3N0YXRlbWVudCwgY29uc3Qg
UkUqIGFfcmVnZXgsCi0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUp
IDoKLSAgICAgIEZvcmtpbmdEZWF0aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpLCBmaWxlXyhm
aWxlKSwgbGluZV8obGluZSkgeyB9Ci0gIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpOwot
IHByaXZhdGU6Ci0gIHN0YXRpYyA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBcmd2c0Zv
ckRlYXRoVGVzdENoaWxkUHJvY2VzcygpIHsKLSAgICA6OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBhcmdzID0gR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7Ci0jICBpZiBkZWZpbmVkKEdURVNUX0VYVFJB
X0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKQotICAgIDo6c3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGV4dHJhX2FyZ3MgPQotICAgICAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NPTU1B
TkRfTElORV9BUkdTXygpOwotICAgIGFyZ3MuaW5zZXJ0KGFyZ3MuZW5kKCksIGV4dHJhX2FyZ3Mu
YmVnaW4oKSwgZXh0cmFfYXJncy5lbmQoKSk7Ci0jICBlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9F
WFRSQV9ERUFUSF9URVNUX0NPTU1BTkRfTElORV9BUkdTXykKLSAgICByZXR1cm4gYXJnczsKLSAg
fQotICAvLyBUaGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBs
b2NhdGVkLgotICBjb25zdCBjaGFyKiBjb25zdCBmaWxlXzsKLSAgLy8gVGhlIGxpbmUgbnVtYmVy
IG9uIHdoaWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCi0gIGNvbnN0IGludCBsaW5lXzsK
LX07Ci0KLS8vIFV0aWxpdHkgY2xhc3MgZm9yIGFjY3VtdWxhdGluZyBjb21tYW5kLWxpbmUgYXJn
dW1lbnRzLgotY2xhc3MgQXJndW1lbnRzIHsKLSBwdWJsaWM6Ci0gIEFyZ3VtZW50cygpIHsKLSAg
ICBhcmdzXy5wdXNoX2JhY2soTlVMTCk7Ci0gIH0KLQotICB+QXJndW1lbnRzKCkgewotICAgIGZv
ciAoc3RkOjp2ZWN0b3I8Y2hhcio+OjppdGVyYXRvciBpID0gYXJnc18uYmVnaW4oKTsgaSAhPSBh
cmdzXy5lbmQoKTsKLSAgICAgICAgICsraSkgewotICAgICAgZnJlZSgqaSk7Ci0gICAgfQotICB9
Ci0gIHZvaWQgQWRkQXJndW1lbnQoY29uc3QgY2hhciogYXJndW1lbnQpIHsKLSAgICBhcmdzXy5p
bnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3RyRHVwKGFyZ3VtZW50KSk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyPgotICB2b2lkIEFkZEFyZ3VtZW50cyhjb25zdCA6OnN0
ZDo6dmVjdG9yPFN0cj4mIGFyZ3VtZW50cykgewotICAgIGZvciAodHlwZW5hbWUgOjpzdGQ6OnZl
Y3RvcjxTdHI+Ojpjb25zdF9pdGVyYXRvciBpID0gYXJndW1lbnRzLmJlZ2luKCk7Ci0gICAgICAg
ICBpICE9IGFyZ3VtZW50cy5lbmQoKTsKLSAgICAgICAgICsraSkgewotICAgICAgYXJnc18uaW5z
ZXJ0KGFyZ3NfLmVuZCgpIC0gMSwgcG9zaXg6OlN0ckR1cChpLT5jX3N0cigpKSk7Ci0gICAgfQot
ICB9Ci0gIGNoYXIqIGNvbnN0KiBBcmd2KCkgewotICAgIHJldHVybiAmYXJnc19bMF07Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIHN0ZDo6dmVjdG9yPGNoYXIqPiBhcmdzXzsKLX07Ci0KLS8vIEEgc3Ry
dWN0IHRoYXQgZW5jb21wYXNzZXMgdGhlIGFyZ3VtZW50cyB0byB0aGUgY2hpbGQgcHJvY2VzcyBv
ZiBhCi0vLyB0aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QgcHJvY2Vzcy4KLXN0cnVjdCBFeGVj
RGVhdGhUZXN0QXJncyB7Ci0gIGNoYXIqIGNvbnN0KiBhcmd2OyAgLy8gQ29tbWFuZC1saW5lIGFy
Z3VtZW50cyBmb3IgdGhlIGNoaWxkJ3MgY2FsbCB0byBleGVjCi0gIGludCBjbG9zZV9mZDsgICAg
ICAgLy8gRmlsZSBkZXNjcmlwdG9yIHRvIGNsb3NlOyB0aGUgcmVhZCBlbmQgb2YgYSBwaXBlCi19
OwotCi0jICBpZiBHVEVTVF9PU19NQUMKLWlubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsKLSAg
Ly8gV2hlbiBHb29nbGUgVGVzdCBpcyBidWlsdCBhcyBhIGZyYW1ld29yayBvbiBNYWNPUyBYLCB0
aGUgZW52aXJvbiB2YXJpYWJsZQotICAvLyBpcyB1bmF2YWlsYWJsZS4gQXBwbGUncyBkb2N1bWVu
dGF0aW9uIChtYW4gZW52aXJvbikgcmVjb21tZW5kcyB1c2luZwotICAvLyBfTlNHZXRFbnZpcm9u
KCkgaW5zdGVhZC4KLSAgcmV0dXJuICpfTlNHZXRFbnZpcm9uKCk7Ci19Ci0jICBlbHNlCi0vLyBT
b21lIFBPU0lYIHBsYXRmb3JtcyBleHBlY3QgeW91IHRvIGRlY2xhcmUgZW52aXJvbi4gZXh0ZXJu
ICJDIiBtYWtlcwotLy8gaXQgcmVzaWRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotZXh0ZXJu
ICJDIiBjaGFyKiogZW52aXJvbjsKLWlubGluZSBjaGFyKiogR2V0RW52aXJvbigpIHsgcmV0dXJu
IGVudmlyb247IH0KLSMgIGVuZGlmICAvLyBHVEVTVF9PU19NQUMKLQotIyAgaWYgIUdURVNUX09T
X1FOWAotLy8gVGhlIG1haW4gZnVuY3Rpb24gZm9yIGEgdGhyZWFkc2FmZS1zdHlsZSBkZWF0aCB0
ZXN0IGNoaWxkIHByb2Nlc3MuCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBhIGNsb25l
KCktZWQgcHJvY2VzcyBhbmQgdGh1cyBtdXN0IGF2b2lkCi0vLyBhbnkgcG90ZW50aWFsbHkgdW5z
YWZlIG9wZXJhdGlvbnMgbGlrZSBtYWxsb2Mgb3IgbGliYyBmdW5jdGlvbnMuCi1zdGF0aWMgaW50
IEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4odm9pZCogY2hpbGRfYXJnKSB7Ci0gIEV4ZWNEZWF0aFRl
c3RBcmdzKiBjb25zdCBhcmdzID0gc3RhdGljX2Nhc3Q8RXhlY0RlYXRoVGVzdEFyZ3MqPihjaGls
ZF9hcmcpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3NlKGFyZ3MtPmNs
b3NlX2ZkKSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBleGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gaW4g
dGhlIHNhbWUgZW52aXJvbm1lbnQgd2hlcmUKLSAgLy8gaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tl
ZC4gIFRoZXJlZm9yZSB3ZSBjaGFuZ2UgdG8gdGhlIG9yaWdpbmFsCi0gIC8vIHdvcmtpbmcgZGly
ZWN0b3J5IGZpcnN0LgotICBjb25zdCBjaGFyKiBjb25zdCBvcmlnaW5hbF9kaXIgPQotICAgICAg
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCk7Ci0gIC8vIFdl
IGNhbiBzYWZlbHkgY2FsbCBjaGRpcigpIGFzIGl0J3MgYSBkaXJlY3Qgc3lzdGVtIGNhbGwuCi0g
IGlmIChjaGRpcihvcmlnaW5hbF9kaXIpICE9IDApIHsKLSAgICBEZWF0aFRlc3RBYm9ydChzdGQ6
OnN0cmluZygiY2hkaXIoXCIiKSArIG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVkOiAiICsKLSAg
ICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKLSAgICByZXR1cm4g
RVhJVF9GQUlMVVJFOwotICB9Ci0KLSAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGV4ZWN2ZSgpIGFz
IGl0J3MgYSBkaXJlY3Qgc3lzdGVtIGNhbGwuICBXZQotICAvLyBjYW5ub3QgdXNlIGV4ZWN2cCgp
IGFzIGl0J3MgYSBsaWJjIGZ1bmN0aW9uIGFuZCB0aHVzIHBvdGVudGlhbGx5Ci0gIC8vIHVuc2Fm
ZS4gIFNpbmNlIGV4ZWN2ZSgpIGRvZXNuJ3Qgc2VhcmNoIHRoZSBQQVRILCB0aGUgdXNlciBtdXN0
Ci0gIC8vIGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHZpYSBhIHZhbGlkIHBhdGggdGhhdCBjb250
YWlucyBhdCBsZWFzdAotICAvLyBvbmUgcGF0aCBzZXBhcmF0b3IuCi0gIGV4ZWN2ZShhcmdzLT5h
cmd2WzBdLCBhcmdzLT5hcmd2LCBHZXRFbnZpcm9uKCkpOwotICBEZWF0aFRlc3RBYm9ydChzdGQ6
OnN0cmluZygiZXhlY3ZlKCIpICsgYXJncy0+YXJndlswXSArICIsIC4uLikgaW4gIiArCi0gICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX2RpciArICIgZmFpbGVkOiAiICsKLSAgICAgICAgICAgICAg
ICAgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSk7Ci0gIHJldHVybiBFWElUX0ZBSUxVUkU7Ci19
Ci0jICBlbmRpZiAgLy8gIUdURVNUX09TX1FOWAotCi0vLyBUd28gdXRpbGl0eSByb3V0aW5lcyB0
aGF0IHRvZ2V0aGVyIGRldGVybWluZSB0aGUgZGlyZWN0aW9uIHRoZSBzdGFjawotLy8gZ3Jvd3Mu
Ci0vLyBUaGlzIGNvdWxkIGJlIGFjY29tcGxpc2hlZCBtb3JlIGVsZWdhbnRseSBieSBhIHNpbmds
ZSByZWN1cnNpdmUKLS8vIGZ1bmN0aW9uLCBidXQgd2Ugd2FudCB0byBndWFyZCBhZ2FpbnN0IHRo
ZSB1bmxpa2VseSBwb3NzaWJpbGl0eSBvZgotLy8gYSBzbWFydCBjb21waWxlciBvcHRpbWl6aW5n
IHRoZSByZWN1cnNpb24gYXdheS4KLS8vCi0vLyBHVEVTVF9OT19JTkxJTkVfIGlzIHJlcXVpcmVk
IHRvIHByZXZlbnQgR0NDIDQuNiBmcm9tIGlubGluaW5nCi0vLyBTdGFja0xvd2VyVGhhbkFkZHJl
c3MgaW50byBTdGFja0dyb3dzRG93biwgd2hpY2ggdGhlbiBkb2Vzbid0IGdpdmUKLS8vIGNvcnJl
Y3QgYW5zd2VyLgotdm9pZCBTdGFja0xvd2VyVGhhbkFkZHJlc3MoY29uc3Qgdm9pZCogcHRyLCBi
b29sKiByZXN1bHQpIEdURVNUX05PX0lOTElORV87Ci12b2lkIFN0YWNrTG93ZXJUaGFuQWRkcmVz
cyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgewotICBpbnQgZHVtbXk7Ci0gICpyZXN1
bHQgPSAoJmR1bW15IDwgcHRyKTsKLX0KLQotLy8gTWFrZSBzdXJlIEFkZHJlc3NTYW5pdGl6ZXIg
ZG9lcyBub3QgdGFtcGVyIHdpdGggdGhlIHN0YWNrIGhlcmUuCi1HVEVTVF9BVFRSSUJVVEVfTk9f
U0FOSVRJWkVfQUREUkVTU18KLWJvb2wgU3RhY2tHcm93c0Rvd24oKSB7Ci0gIGludCBkdW1teTsK
LSAgYm9vbCByZXN1bHQ7Ci0gIFN0YWNrTG93ZXJUaGFuQWRkcmVzcygmZHVtbXksICZyZXN1bHQp
OwotICByZXR1cm4gcmVzdWx0OwotfQotCi0vLyBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHdpdGgg
dGhlIHNhbWUgZXhlY3V0YWJsZSBhcyB0aGUgY3VycmVudCBwcm9jZXNzIGluCi0vLyBhIHRocmVh
ZC1zYWZlIG1hbm5lciBhbmQgaW5zdHJ1Y3RzIGl0IHRvIHJ1biB0aGUgZGVhdGggdGVzdC4gIFRo
ZQotLy8gaW1wbGVtZW50YXRpb24gdXNlcyBmb3JrKDIpICsgZXhlYy4gIE9uIHN5c3RlbXMgd2hl
cmUgY2xvbmUoMikgaXMKLS8vIGF2YWlsYWJsZSwgaXQgaXMgdXNlZCBpbnN0ZWFkLCBiZWluZyBz
bGlnaHRseSBtb3JlIHRocmVhZC1zYWZlLiAgT24gUU5YLAotLy8gZm9yayBzdXBwb3J0cyBvbmx5
IHNpbmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudHMsIHNvIHRoaXMgZnVuY3Rpb24gdXNlcwotLy8g
c3Bhd24oMikgdGhlcmUgaW5zdGVhZC4gIFRoZSBmdW5jdGlvbiBkaWVzIHdpdGggYW4gZXJyb3Ig
bWVzc2FnZSBpZgotLy8gYW55dGhpbmcgZ29lcyB3cm9uZy4KLXN0YXRpYyBwaWRfdCBFeGVjRGVh
dGhUZXN0U3Bhd25DaGlsZChjaGFyKiBjb25zdCogYXJndiwgaW50IGNsb3NlX2ZkKSB7Ci0gIEV4
ZWNEZWF0aFRlc3RBcmdzIGFyZ3MgPSB7IGFyZ3YsIGNsb3NlX2ZkIH07Ci0gIHBpZF90IGNoaWxk
X3BpZCA9IC0xOwotCi0jICBpZiBHVEVTVF9PU19RTlgKLSAgLy8gT2J0YWlucyB0aGUgY3VycmVu
dCBkaXJlY3RvcnkgYW5kIHNldHMgaXQgdG8gYmUgY2xvc2VkIGluIHRoZSBjaGlsZAotICAvLyBw
cm9jZXNzLgotICBjb25zdCBpbnQgY3dkX2ZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKLSAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18oY3dkX2ZkICE9IC0xKTsKLSAgR1RFU1RfREVBVEhfVEVTVF9D
SEVDS19TWVNDQUxMXyhmY250bChjd2RfZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpKTsKLSAgLy8g
V2UgbmVlZCB0byBleGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gaW4gdGhlIHNhbWUgZW52aXJvbm1l
bnQgd2hlcmUKLSAgLy8gaXQgd2FzIG9yaWdpbmFsbHkgaW52b2tlZC4gIFRoZXJlZm9yZSB3ZSBj
aGFuZ2UgdG8gdGhlIG9yaWdpbmFsCi0gIC8vIHdvcmtpbmcgZGlyZWN0b3J5IGZpcnN0LgotICBj
b25zdCBjaGFyKiBjb25zdCBvcmlnaW5hbF9kaXIgPQotICAgICAgVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCk7Ci0gIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCBj
aGRpcigpIGFzIGl0J3MgYSBkaXJlY3Qgc3lzdGVtIGNhbGwuCi0gIGlmIChjaGRpcihvcmlnaW5h
bF9kaXIpICE9IDApIHsKLSAgICBEZWF0aFRlc3RBYm9ydChzdGQ6OnN0cmluZygiY2hkaXIoXCIi
KSArIG9yaWdpbmFsX2RpciArICJcIikgZmFpbGVkOiAiICsKLSAgICAgICAgICAgICAgICAgICBH
ZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKLSAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICB9
Ci0KLSAgaW50IGZkX2ZsYWdzOwotICAvLyBTZXQgY2xvc2VfZmQgdG8gYmUgY2xvc2VkIGFmdGVy
IHNwYXduLgotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZkX2ZsYWdzID0gZmNu
dGwoY2xvc2VfZmQsIEZfR0VURkQpKTsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxM
XyhmY250bChjbG9zZV9mZCwgRl9TRVRGRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmZF9mbGFncyB8IEZEX0NMT0VYRUMpKTsKLSAgc3RydWN0IGluaGVyaXRhbmNl
IGluaGVyaXQgPSB7MH07Ci0gIC8vIHNwYXduIGlzIGEgc3lzdGVtIGNhbGwuCi0gIGNoaWxkX3Bp
ZCA9IHNwYXduKGFyZ3MuYXJndlswXSwgMCwgTlVMTCwgJmluaGVyaXQsIGFyZ3MuYXJndiwgR2V0
RW52aXJvbigpKTsKLSAgLy8gUmVzdG9yZXMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnku
Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGZjaGRpcihjd2RfZmQpICE9IC0xKTsKLSAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShjd2RfZmQpKTsKLQotIyAgZWxzZSAg
IC8vIEdURVNUX09TX1FOWAotIyAgIGlmIEdURVNUX09TX0xJTlVYCi0gIC8vIFdoZW4gYSBTSUdQ
Uk9GIHNpZ25hbCBpcyByZWNlaXZlZCB3aGlsZSBmb3JrKCkgb3IgY2xvbmUoKSBhcmUgZXhlY3V0
aW5nLAotICAvLyB0aGUgcHJvY2VzcyBtYXkgaGFuZy4gVG8gYXZvaWQgdGhpcywgd2UgaWdub3Jl
IFNJR1BST0YgaGVyZSBhbmQgcmUtZW5hYmxlCi0gIC8vIGl0IGFmdGVyIHRoZSBjYWxsIHRvIGZv
cmsoKS9jbG9uZSgpIGlzIGNvbXBsZXRlLgotICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhdmVkX3NpZ3By
b2ZfYWN0aW9uOwotICBzdHJ1Y3Qgc2lnYWN0aW9uIGlnbm9yZV9zaWdwcm9mX2FjdGlvbjsKLSAg
bWVtc2V0KCZpZ25vcmVfc2lncHJvZl9hY3Rpb24sIDAsIHNpemVvZihpZ25vcmVfc2lncHJvZl9h
Y3Rpb24pKTsKLSAgc2lnZW1wdHlzZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbi5zYV9tYXNrKTsK
LSAgaWdub3JlX3NpZ3Byb2ZfYWN0aW9uLnNhX2hhbmRsZXIgPSBTSUdfSUdOOwotICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKHNpZ2FjdGlvbigKLSAgICAgIFNJR1BST0YsICZpZ25v
cmVfc2lncHJvZl9hY3Rpb24sICZzYXZlZF9zaWdwcm9mX2FjdGlvbikpOwotIyAgIGVuZGlmICAv
LyBHVEVTVF9PU19MSU5VWAotCi0jICAgaWYgR1RFU1RfSEFTX0NMT05FCi0gIGNvbnN0IGJvb2wg
dXNlX2ZvcmsgPSBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwotCi0gIGlmICghdXNl
X2ZvcmspIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdGFja19ncm93c19kb3duID0gU3RhY2tH
cm93c0Rvd24oKTsKLSAgICBjb25zdCBzaXplX3Qgc3RhY2tfc2l6ZSA9IGdldHBhZ2VzaXplKCk7
Ci0gICAgLy8gTU1BUF9BTk9OWU1PVVMgaXMgbm90IGRlZmluZWQgb24gTWFjLCBzbyB3ZSB1c2Ug
TUFQX0FOT04gaW5zdGVhZC4KLSAgICB2b2lkKiBjb25zdCBzdGFjayA9IG1tYXAoTlVMTCwgc3Rh
Y2tfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwgLTEsIDApOwotICAgIEdURVNUX0RFQVRIX1RF
U1RfQ0hFQ0tfKHN0YWNrICE9IE1BUF9GQUlMRUQpOwotCi0gICAgLy8gTWF4aW11bSBzdGFjayBh
bGlnbm1lbnQgaW4gYnl0ZXM6ICBGb3IgYSBkb3dud2FyZC1ncm93aW5nIHN0YWNrLCB0aGlzCi0g
ICAgLy8gYW1vdW50IGlzIHN1YnRyYWN0ZWQgZnJvbSBzaXplIG9mIHRoZSBzdGFjayBzcGFjZSB0
byBnZXQgYW4gYWRkcmVzcwotICAgIC8vIHRoYXQgaXMgd2l0aGluIHRoZSBzdGFjayBzcGFjZSBh
bmQgaXMgYWxpZ25lZCBvbiBhbGwgc3lzdGVtcyB3ZSBjYXJlCi0gICAgLy8gYWJvdXQuICBBcyBm
YXIgYXMgSSBrbm93IHRoZXJlIGlzIG5vIEFCSSB3aXRoIHN0YWNrIGFsaWdubWVudCBncmVhdGVy
Ci0gICAgLy8gdGhhbiA2NC4gIFdlIGFzc3VtZSBzdGFjayBhbmQgc3RhY2tfc2l6ZSBhbHJlYWR5
IGhhdmUgYWxpZ25tZW50IG9mCi0gICAgLy8ga01heFN0YWNrQWxpZ25tZW50LgotICAgIGNvbnN0
IHNpemVfdCBrTWF4U3RhY2tBbGlnbm1lbnQgPSA2NDsKLSAgICB2b2lkKiBjb25zdCBzdGFja190
b3AgPQotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2spICsKLSAgICAgICAgICAgIChz
dGFja19ncm93c19kb3duID8gc3RhY2tfc2l6ZSAtIGtNYXhTdGFja0FsaWdubWVudCA6IDApOwot
ICAgIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHN0YWNrX3NpemUgPiBrTWF4U3RhY2tBbGlnbm1l
bnQgJiYKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oc3RhY2tfdG9wKSAlIGtN
YXhTdGFja0FsaWdubWVudCA9PSAwKTsKLQotICAgIGNoaWxkX3BpZCA9IGNsb25lKCZFeGVjRGVh
dGhUZXN0Q2hpbGRNYWluLCBzdGFja190b3AsIFNJR0NITEQsICZhcmdzKTsKLQotICAgIEdURVNU
X0RFQVRIX1RFU1RfQ0hFQ0tfKG11bm1hcChzdGFjaywgc3RhY2tfc2l6ZSkgIT0gLTEpOwotICB9
Ci0jICAgZWxzZQotICBjb25zdCBib29sIHVzZV9mb3JrID0gdHJ1ZTsKLSMgICBlbmRpZiAgLy8g
R1RFU1RfSEFTX0NMT05FCi0KLSAgaWYgKHVzZV9mb3JrICYmIChjaGlsZF9waWQgPSBmb3JrKCkp
ID09IDApIHsKLSAgICAgIEV4ZWNEZWF0aFRlc3RDaGlsZE1haW4oJmFyZ3MpOwotICAgICAgX2V4
aXQoMCk7Ci0gIH0KLSMgIGVuZGlmICAvLyBHVEVTVF9PU19RTlgKLSMgIGlmIEdURVNUX09TX0xJ
TlVYCi0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oCi0gICAgICBzaWdhY3Rpb24o
U0lHUFJPRiwgJnNhdmVkX3NpZ3Byb2ZfYWN0aW9uLCBOVUxMKSk7Ci0jICBlbmRpZiAgLy8gR1RF
U1RfT1NfTElOVVgKLQotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjaGlsZF9waWQgIT0gLTEp
OwotICByZXR1cm4gY2hpbGRfcGlkOwotfQotCi0vLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZv
ciBhIGZvcmstYW5kLWV4ZWMgZGVhdGggdGVzdC4gIEl0IHJlLWV4ZWN1dGVzIHRoZQotLy8gbWFp
biBwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZywgc2V0dGluZyB0aGUgLS1ndGVzdF9maWx0ZXIK
LS8vIGFuZCAtLWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWdzIHRvIGNhdXNlIG9u
bHkgdGhlIGN1cnJlbnQKLS8vIGRlYXRoIHRlc3QgdG8gYmUgcmUtcnVuLgotRGVhdGhUZXN0OjpU
ZXN0Um9sZSBFeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlKCkgewotICBjb25zdCBVbml0VGVzdElt
cGwqIGNvbnN0IGltcGwgPSBHZXRVbml0VGVzdEltcGwoKTsKLSAgY29uc3QgSW50ZXJuYWxSdW5E
ZWF0aFRlc3RGbGFnKiBjb25zdCBmbGFnID0KLSAgICAgIGltcGwtPmludGVybmFsX3J1bl9kZWF0
aF90ZXN0X2ZsYWcoKTsKLSAgY29uc3QgVGVzdEluZm8qIGNvbnN0IGluZm8gPSBpbXBsLT5jdXJy
ZW50X3Rlc3RfaW5mbygpOwotICBjb25zdCBpbnQgZGVhdGhfdGVzdF9pbmRleCA9IGluZm8tPnJl
c3VsdCgpLT5kZWF0aF90ZXN0X2NvdW50KCk7Ci0KLSAgaWYgKGZsYWcgIT0gTlVMTCkgewotICAg
IHNldF93cml0ZV9mZChmbGFnLT53cml0ZV9mZCgpKTsKLSAgICByZXR1cm4gRVhFQ1VURV9URVNU
OwotICB9Ci0KLSAgaW50IHBpcGVfZmRbMl07Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKHBp
cGUocGlwZV9mZCkgIT0gLTEpOwotICAvLyBDbGVhciB0aGUgY2xvc2Utb24tZXhlYyBmbGFnIG9u
IHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUsIGxlc3QKLSAgLy8gaXQgYmUgY2xvc2VkIHdoZW4g
dGhlIGNoaWxkIHByb2Nlc3MgZG9lcyBhbiBleGVjOgotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNL
XyhmY250bChwaXBlX2ZkWzFdLCBGX1NFVEZELCAwKSAhPSAtMSk7Ci0KLSAgY29uc3Qgc3RkOjpz
dHJpbmcgZmlsdGVyX2ZsYWcgPQotICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBHVEVTVF9GTEFH
X1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IgotICAgICAgKyBpbmZvLT50ZXN0X2Nhc2VfbmFt
ZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOwotICBjb25zdCBzdGQ6OnN0cmluZyBpbnRlcm5hbF9m
bGFnID0KLSAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxBR19QUkVGSVhfICsga0lu
dGVybmFsUnVuRGVhdGhUZXN0RmxhZyArICI9IgotICAgICAgKyBmaWxlXyArICJ8IiArIFN0cmVh
bWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIKLSAgICAgICsgU3RyZWFtYWJsZVRvU3RyaW5nKGRl
YXRoX3Rlc3RfaW5kZXgpICsgInwiCi0gICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhwaXBlX2Zk
WzFdKTsKLSAgQXJndW1lbnRzIGFyZ3M7Ci0gIGFyZ3MuQWRkQXJndW1lbnRzKEdldEFyZ3ZzRm9y
RGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkpOwotICBhcmdzLkFkZEFyZ3VtZW50KGZpbHRlcl9mbGFn
LmNfc3RyKCkpOwotICBhcmdzLkFkZEFyZ3VtZW50KGludGVybmFsX2ZsYWcuY19zdHIoKSk7Ci0K
LSAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoIiIpOwotCi0gIENhcHR1
cmVTdGRlcnIoKTsKLSAgLy8gU2VlIHRoZSBjb21tZW50IGluIE5vRXhlY0RlYXRoVGVzdDo6QXNz
dW1lUm9sZSBmb3Igd2h5IHRoZSBuZXh0IGxpbmUKLSAgLy8gaXMgbmVjZXNzYXJ5LgotICBGbHVz
aEluZm9Mb2coKTsKLQotICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBFeGVjRGVhdGhUZXN0U3Bh
d25DaGlsZChhcmdzLkFyZ3YoKSwgcGlwZV9mZFswXSk7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hF
Q0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwotICBzZXRfY2hpbGRfcGlkKGNoaWxkX3Bp
ZCk7Ci0gIHNldF9yZWFkX2ZkKHBpcGVfZmRbMF0pOwotICBzZXRfc3Bhd25lZCh0cnVlKTsKLSAg
cmV0dXJuIE9WRVJTRUVfVEVTVDsKLX0KLQotIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1MK
LQotLy8gQ3JlYXRlcyBhIGNvbmNyZXRlIERlYXRoVGVzdC1kZXJpdmVkIGNsYXNzIHRoYXQgZGVw
ZW5kcyBvbiB0aGUKLS8vIC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSBmbGFnLCBhbmQgc2V0cyB0
aGUgcG9pbnRlciBwb2ludGVkIHRvCi0vLyBieSB0aGUgInRlc3QiIGFyZ3VtZW50IHRvIGl0cyBh
ZGRyZXNzLiAgSWYgdGhlIHRlc3Qgc2hvdWxkIGJlCi0vLyBza2lwcGVkLCBzZXRzIHRoYXQgcG9p
bnRlciB0byBOVUxMLiAgUmV0dXJucyB0cnVlLCB1bmxlc3MgdGhlCi0vLyBmbGFnIGlzIHNldCB0
byBhbiBpbnZhbGlkIHZhbHVlLgotYm9vbCBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeTo6Q3JlYXRl
KGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYXRoVGVzdCoqIHRlc3QpIHsKLSAgVW5p
dFRlc3RJbXBsKiBjb25zdCBpbXBsID0gR2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGNvbnN0IEludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZyogY29uc3QgZmxhZyA9Ci0gICAgICBpbXBsLT5pbnRlcm5hbF9y
dW5fZGVhdGhfdGVzdF9mbGFnKCk7Ci0gIGNvbnN0IGludCBkZWF0aF90ZXN0X2luZGV4ID0gaW1w
bC0+Y3VycmVudF90ZXN0X2luZm8oKQotICAgICAgLT5pbmNyZW1lbnRfZGVhdGhfdGVzdF9jb3Vu
dCgpOwotCi0gIGlmIChmbGFnICE9IE5VTEwpIHsKLSAgICBpZiAoZGVhdGhfdGVzdF9pbmRleCA+
IGZsYWctPmluZGV4KCkpIHsKLSAgICAgIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9t
ZXNzYWdlKAotICAgICAgICAgICJEZWF0aCB0ZXN0IGNvdW50ICgiICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKGRlYXRoX3Rlc3RfaW5kZXgpCi0gICAgICAgICAgKyAiKSBzb21laG93IGV4Y2VlZGVkIGV4
cGVjdGVkIG1heGltdW0gKCIKLSAgICAgICAgICArIFN0cmVhbWFibGVUb1N0cmluZyhmbGFnLT5p
bmRleCgpKSArICIpIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCEo
ZmxhZy0+ZmlsZSgpID09IGZpbGUgJiYgZmxhZy0+bGluZSgpID09IGxpbmUgJiYKLSAgICAgICAg
ICBmbGFnLT5pbmRleCgpID09IGRlYXRoX3Rlc3RfaW5kZXgpKSB7Ci0gICAgICAqdGVzdCA9IE5V
TEw7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLQotIyBpZiBHVEVTVF9PU19XSU5E
T1dTCi0KLSAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gInRocmVhZHNhZmUi
IHx8Ci0gICAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09ICJmYXN0IikgewotICAg
ICp0ZXN0ID0gbmV3IFdpbmRvd3NEZWF0aFRlc3Qoc3RhdGVtZW50LCByZWdleCwgZmlsZSwgbGlu
ZSk7Ci0gIH0KLQotIyBlbHNlCi0KLSAgaWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PT0gInRocmVhZHNhZmUiKSB7Ci0gICAgKnRlc3QgPSBuZXcgRXhlY0RlYXRoVGVzdChzdGF0ZW1l
bnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKLSAgfSBlbHNlIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID09ICJmYXN0IikgewotICAgICp0ZXN0ID0gbmV3IE5vRXhlY0RlYXRoVGVzdChz
dGF0ZW1lbnQsIHJlZ2V4KTsKLSAgfQotCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0K
LSAgZWxzZSB7ICAvLyBOT0xJTlQgLSB0aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB1bmJhbGFu
Y2VkIGJyYWNrZXRzIGluc2lkZSAjaWYuCi0gICAgRGVhdGhUZXN0OjpzZXRfbGFzdF9kZWF0aF90
ZXN0X21lc3NhZ2UoCi0gICAgICAgICJVbmtub3duIGRlYXRoIHRlc3Qgc3R5bGUgXCIiICsgR1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKQotICAgICAgICArICJcIiBlbmNvdW50ZXJlZCIpOwot
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi0jIGlmIEdURVNU
X09TX1dJTkRPV1MKLS8vIFJlY3JlYXRlcyB0aGUgcGlwZSBhbmQgZXZlbnQgaGFuZGxlcyBmcm9t
IHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLAotLy8gc2lnbmFscyB0aGUgZXZlbnQsIGFuZCByZXR1
cm5zIGEgZmlsZSBkZXNjcmlwdG9yIHdyYXBwZWQgYXJvdW5kIHRoZSBwaXBlCi0vLyBoYW5kbGUu
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHRoZSBjaGlsZCBwcm9jZXNzIG9ubHkuCi1pbnQg
R2V0U3RhdHVzRmlsZURlc2NyaXB0b3IodW5zaWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3cml0ZV9oYW5kbGVfYXNfc2l6ZV90
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBldmVudF9oYW5kbGVfYXNfc2l6
ZV90KSB7Ci0gIEF1dG9IYW5kbGUgcGFyZW50X3Byb2Nlc3NfaGFuZGxlKDo6T3BlblByb2Nlc3Mo
UFJPQ0VTU19EVVBfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRkFMU0UsICAvLyBOb24taW5oZXJpdGFibGUuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfcHJvY2Vzc19pZCkp
OwotICBpZiAocGFyZW50X3Byb2Nlc3NfaGFuZGxlLkdldCgpID09IElOVkFMSURfSEFORExFX1ZB
TFVFKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBvcGVuIHBhcmVudCBwcm9jZXNz
ICIgKwotICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vz
c19pZCkpOwotICB9Ci0KLSAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogUmVwbGFjZSB0aGUg
Zm9sbG93aW5nIGNoZWNrIHdpdGggYQotICAvLyBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHdoZW4g
YXZhaWxhYmxlLgotICBHVEVTVF9DSEVDS18oc2l6ZW9mKEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVf
dCkpOwotCi0gIGNvbnN0IEhBTkRMRSB3cml0ZV9oYW5kbGUgPQotICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxIQU5ETEU+KHdyaXRlX2hhbmRsZV9hc19zaXplX3QpOwotICBIQU5ETEUgZHVwX3dyaXRl
X2hhbmRsZTsKLQotICAvLyBUaGUgbmV3bHkgaW5pdGlhbGl6ZWQgaGFuZGxlIGlzIGFjY2Vzc2li
bGUgb25seSBpbiBpbiB0aGUgcGFyZW50Ci0gIC8vIHByb2Nlc3MuIFRvIG9idGFpbiBvbmUgYWNj
ZXNzaWJsZSB3aXRoaW4gdGhlIGNoaWxkLCB3ZSBuZWVkIHRvIHVzZQotICAvLyBEdXBsaWNhdGVI
YW5kbGUuCi0gIGlmICghOjpEdXBsaWNhdGVIYW5kbGUocGFyZW50X3Byb2Nlc3NfaGFuZGxlLkdl
dCgpLCB3cml0ZV9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRDdXJyZW50
UHJvY2VzcygpLCAmZHVwX3dyaXRlX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAw
eDAsICAgIC8vIFJlcXVlc3RlZCBwcml2aWxlZ2VzIGlnbm9yZWQgc2luY2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIERVUExJQ0FURV9TQU1FX0FDQ0VTUyBpcyB1c2VkLgot
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLCAgLy8gUmVxdWVzdCBub24taW5oZXJpdGFi
bGUgaGFuZGxlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9BQ0NF
U1MpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIHBpcGUg
aGFuZGxlICIgKwotICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9o
YW5kbGVfYXNfc2l6ZV90KSArCi0gICAgICAgICAgICAgICAgICAgIiBmcm9tIHRoZSBwYXJlbnQg
cHJvY2VzcyAiICsKLSAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcocGFyZW50
X3Byb2Nlc3NfaWQpKTsKLSAgfQotCi0gIGNvbnN0IEhBTkRMRSBldmVudF9oYW5kbGUgPSByZWlu
dGVycHJldF9jYXN0PEhBTkRMRT4oZXZlbnRfaGFuZGxlX2FzX3NpemVfdCk7Ci0gIEhBTkRMRSBk
dXBfZXZlbnRfaGFuZGxlOwotCi0gIGlmICghOjpEdXBsaWNhdGVIYW5kbGUocGFyZW50X3Byb2Nl
c3NfaGFuZGxlLkdldCgpLCBldmVudF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
OjpHZXRDdXJyZW50UHJvY2VzcygpLCAmZHVwX2V2ZW50X2hhbmRsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgewotICAgIERlYXRoVGVz
dEFib3J0KCJVbmFibGUgdG8gZHVwbGljYXRlIHRoZSBldmVudCBoYW5kbGUgIiArCi0gICAgICAg
ICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKGV2ZW50X2hhbmRsZV9hc19zaXplX3QpICsK
LSAgICAgICAgICAgICAgICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKwotICAgICAg
ICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwotICB9
Ci0KLSAgY29uc3QgaW50IHdyaXRlX2ZkID0KLSAgICAgIDo6X29wZW5fb3NmaGFuZGxlKHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGR1cF93cml0ZV9oYW5kbGUpLCBPX0FQUEVORCk7Ci0gIGlm
ICh3cml0ZV9mZCA9PSAtMSkgewotICAgIERlYXRoVGVzdEFib3J0KCJVbmFibGUgdG8gY29udmVy
dCBwaXBlIGhhbmRsZSAiICsKLSAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmco
d3JpdGVfaGFuZGxlX2FzX3NpemVfdCkgKwotICAgICAgICAgICAgICAgICAgICIgdG8gYSBmaWxl
IGRlc2NyaXB0b3IiKTsKLSAgfQotCi0gIC8vIFNpZ25hbHMgdGhlIHBhcmVudCB0aGF0IHRoZSB3
cml0ZSBlbmQgb2YgdGhlIHBpcGUgaGFzIGJlZW4gYWNxdWlyZWQKLSAgLy8gc28gdGhlIHBhcmVu
dCBjYW4gcmVsZWFzZSBpdHMgb3duIHdyaXRlIGVuZC4KLSAgOjpTZXRFdmVudChkdXBfZXZlbnRf
aGFuZGxlKTsKLQotICByZXR1cm4gd3JpdGVfZmQ7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9PU19X
SU5ET1dTCi0KLS8vIFJldHVybnMgYSBuZXdseSBjcmVhdGVkIEludGVybmFsUnVuRGVhdGhUZXN0
RmxhZyBvYmplY3Qgd2l0aCBmaWVsZHMKLS8vIGluaXRpYWxpemVkIGZyb20gdGhlIEdURVNUX0ZM
QUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpIGZsYWcgaWYKLS8vIHRoZSBmbGFnIGlzIHNwZWNp
ZmllZDsgb3RoZXJ3aXNlIHJldHVybnMgTlVMTC4KLUludGVybmFsUnVuRGVhdGhUZXN0RmxhZyog
UGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSB7Ci0gIGlmIChHVEVTVF9GTEFHKGludGVy
bmFsX3J1bl9kZWF0aF90ZXN0KSA9PSAiIikgcmV0dXJuIE5VTEw7Ci0KLSAgLy8gR1RFU1RfSEFT
X0RFQVRIX1RFU1QgaW1wbGllcyB0aGF0IHdlIGhhdmUgOjpzdGQ6OnN0cmluZywgc28gd2UKLSAg
Ly8gY2FuIHVzZSBpdCBoZXJlLgotICBpbnQgbGluZSA9IC0xOwotICBpbnQgaW5kZXggPSAtMTsK
LSAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gZmllbGRzOwotICBTcGxpdFN0cmluZyhH
VEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5jX3N0cigpLCAnfCcsICZmaWVsZHMp
OwotICBpbnQgd3JpdGVfZmQgPSAtMTsKLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0KLSAgdW5z
aWduZWQgaW50IHBhcmVudF9wcm9jZXNzX2lkID0gMDsKLSAgc2l6ZV90IHdyaXRlX2hhbmRsZV9h
c19zaXplX3QgPSAwOwotICBzaXplX3QgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCA9IDA7Ci0KLSAg
aWYgKGZpZWxkcy5zaXplKCkgIT0gNgotICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVs
ZHNbMV0sICZsaW5lKQotICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNbMl0sICZp
bmRleCkKLSAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzNdLCAmcGFyZW50X3By
b2Nlc3NfaWQpCi0gICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s0XSwgJndyaXRl
X2hhbmRsZV9hc19zaXplX3QpCi0gICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1s1
XSwgJmV2ZW50X2hhbmRsZV9hc19zaXplX3QpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoIkJhZCAt
LWd0ZXN0X2ludGVybmFsX3J1bl9kZWF0aF90ZXN0IGZsYWc6ICIgKwotICAgICAgICAgICAgICAg
ICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKTsKLSAgfQotICB3cml0ZV9m
ZCA9IEdldFN0YXR1c0ZpbGVEZXNjcmlwdG9yKHBhcmVudF9wcm9jZXNzX2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX2hhbmRsZV9hc19zaXplX3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfaGFuZGxlX2FzX3NpemVfdCk7
Ci0jIGVsc2UKLQotICBpZiAoZmllbGRzLnNpemUoKSAhPSA0Ci0gICAgICB8fCAhUGFyc2VOYXR1
cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCi0gICAgICB8fCAhUGFyc2VOYXR1cmFsTnVtYmVy
KGZpZWxkc1syXSwgJmluZGV4KQotICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJlcihmaWVsZHNb
M10sICZ3cml0ZV9mZCkpIHsKLSAgICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJu
YWxfcnVuX2RlYXRoX3Rlc3QgZmxhZzogIgotICAgICAgICArIEdURVNUX0ZMQUcoaW50ZXJuYWxf
cnVuX2RlYXRoX3Rlc3QpKTsKLSAgfQotCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0K
LSAgcmV0dXJuIG5ldyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoZmllbGRzWzBdLCBsaW5lLCBp
bmRleCwgd3JpdGVfZmQpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c3JjL2d0ZXN0LWZpbGVwYXRoLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjky
ZGMxMTk1N2VhYTIxOGIzNThmMWY3NjFjYTRhNWNiMmZhZWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1maWxlcGF0
aC5jYworKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWls
LmNvbSAoS2VpdGggUmF5KQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVwYXRoLmgiCi0jaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTX01PQklMRQotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZWxpZiBHVEVTVF9P
U19XSU5ET1dTCi0jIGluY2x1ZGUgPGRpcmVjdC5oPgotIyBpbmNsdWRlIDxpby5oPgotI2VsaWYg
R1RFU1RfT1NfU1lNQklBTgotLy8gU3ltYmlhbiBPcGVuQyBoYXMgUEFUSF9NQVggaW4gc3lzL3N5
c2xpbWl0cy5oCi0jIGluY2x1ZGUgPHN5cy9zeXNsaW1pdHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUg
PGxpbWl0cy5oPgotIyBpbmNsdWRlIDxjbGltaXRzPiAgLy8gU29tZSBMaW51eCBkaXN0cmlidXRp
b25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotIyBkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9N
QVhfUEFUSAotI2VsaWYgZGVmaW5lZChQQVRIX01BWCkKLSMgZGVmaW5lIEdURVNUX1BBVEhfTUFY
XyBQQVRIX01BWAotI2VsaWYgZGVmaW5lZChfWE9QRU5fUEFUSF9NQVgpCi0jIGRlZmluZSBHVEVT
VF9QQVRIX01BWF8gX1hPUEVOX1BBVEhfTUFYCi0jZWxzZQotIyBkZWZpbmUgR1RFU1RfUEFUSF9N
QVhfIF9QT1NJWF9QQVRIX01BWAotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcuaCIKLQotbmFtZXNwYWNlIHRlc3Rpbmcg
ewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIE9uIFdp
bmRvd3MsICdcXCcgaXMgdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yLCBidXQgbWFueSB0b29s
cyBhbmQgdGhlCi0vLyBXaW5kb3dzIEFQSSBhbHNvIGFjY2VwdCAnLycgYXMgYW4gYWx0ZXJuYXRl
IHBhdGggc2VwYXJhdG9yLiBVbmxlc3Mgb3RoZXJ3aXNlCi0vLyBub3RlZCwgYSBmaWxlIHBhdGgg
Y2FuIGNvbnRhaW4gZWl0aGVyIGtpbmQgb2YgcGF0aCBzZXBhcmF0b3JzLCBvciBhIG1peHR1cmUK
LS8vIG9mIHRoZW0uCi1jb25zdCBjaGFyIGtQYXRoU2VwYXJhdG9yID0gJ1xcJzsKLWNvbnN0IGNo
YXIga0FsdGVybmF0ZVBhdGhTZXBhcmF0b3IgPSAnLyc7Ci1jb25zdCBjaGFyIGtBbHRlcm5hdGVQ
YXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
Ci0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LiBZb3Ugc2hv
dWxkIG5vdCB1c2UKLS8vIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpbiB0ZXN0cyBvbiBXaW5kb3dz
IENFLCBidXQgdGhpcyBhdCBsZWFzdAotLy8gcHJvdmlkZXMgYSByZWFzb25hYmxlIGZhbGxiYWNr
LgotY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0cmluZ1tdID0gIlxcIjsKLS8vIFdpbmRv
d3MgQ0UgZG9lc24ndCBkZWZpbmUgSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMKLWNvbnN0IERXT1JE
IGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXMgPSAweGZmZmZmZmZmOwotIyBlbHNlCi1jb25zdCBjaGFy
IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxcIjsKLSMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0jZWxzZQotY29uc3QgY2hhciBrUGF0aFNlcGFyYXRvciA9ICcvJzsK
LWNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJpbmdbXSA9ICIuLyI7Ci0jZW5kaWYgIC8v
IEdURVNUX09TX1dJTkRPV1MKLQotLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBjaGFyYWN0
ZXIgaXMgYSB2YWxpZCBwYXRoIHNlcGFyYXRvci4KLXN0YXRpYyBib29sIElzUGF0aFNlcGFyYXRv
cihjaGFyIGMpIHsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICByZXR1cm4gKGMgPT0g
a1BhdGhTZXBhcmF0b3IpIHx8IChjID09IGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yKTsKLSNlbHNl
Ci0gIHJldHVybiBjID09IGtQYXRoU2VwYXJhdG9yOwotI2VuZGlmCi19Ci0KLS8vIFJldHVybnMg
dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9yICIiIGlmIHVuc3VjY2Vzc2Z1bC4KLUZp
bGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkgewotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAot
ICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LCBzbyB3ZSBq
dXN0IHJldHVybgotICAvLyBzb21ldGhpbmcgcmVhc29uYWJsZS4KLSAgcmV0dXJuIEZpbGVQYXRo
KGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nKTsKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSAgY2hh
ciBjd2RbR1RFU1RfUEFUSF9NQVhfICsgMV0gPSB7ICdcMCcgfTsKLSAgcmV0dXJuIEZpbGVQYXRo
KF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVMTCA/ICIiIDogY3dkKTsKLSNlbHNlCi0g
IGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0geyAnXDAnIH07Ci0gIGNoYXIqIHJlc3Vs
dCA9IGdldGN3ZChjd2QsIHNpemVvZihjd2QpKTsKLSMgaWYgR1RFU1RfT1NfTkFDTAotICAvLyBn
ZXRjd2Qgd2lsbCBsaWtlbHkgZmFpbCBpbiBOYUNsIGR1ZSB0byB0aGUgc2FuZGJveCwgc28gcmV0
dXJuIHNvbWV0aGluZwotICAvLyByZWFzb25hYmxlLiBUaGUgdXNlciBtYXkgaGF2ZSBwcm92aWRl
ZCBhIHNoaW0gaW1wbGVtZW50YXRpb24gZm9yIGdldGN3ZCwKLSAgLy8gaG93ZXZlciwgc28gZmFs
bGJhY2sgb25seSB3aGVuIGZhaWx1cmUgaXMgZGV0ZWN0ZWQuCi0gIHJldHVybiBGaWxlUGF0aChy
ZXN1bHQgPT0gTlVMTCA/IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nIDogY3dkKTsKLSMgZW5kaWYg
IC8vIEdURVNUX09TX05BQ0wKLSAgcmV0dXJuIEZpbGVQYXRoKHJlc3VsdCA9PSBOVUxMID8gIiIg
OiBjd2QpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotfQotCi0vLyBSZXR1
cm5zIGEgY29weSBvZiB0aGUgRmlsZVBhdGggd2l0aCB0aGUgY2FzZS1pbnNlbnNpdGl2ZSBleHRl
bnNpb24gcmVtb3ZlZC4KLS8vIEV4YW1wbGU6IEZpbGVQYXRoKCJkaXIvZmlsZS5leGUiKS5SZW1v
dmVFeHRlbnNpb24oIkVYRSIpIHJldHVybnMKLS8vIEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBh
IGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlzIG5vdAotLy8gZm91bmQsIHJldHVybnMgYSBj
b3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4KLUZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVF
eHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdCB7Ci0gIGNvbnN0IHN0ZDo6c3Ry
aW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygiLiIpICsgZXh0ZW5zaW9uOwotICBpZiAo
U3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShwYXRobmFtZV8sIGRvdF9leHRlbnNpb24p
KSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1lXy5zdWJzdHIoCi0gICAgICAgIDAsIHBh
dGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24ubGVuZ3RoKCkpKTsKLSAgfQotICByZXR1
cm4gKnRoaXM7Ci19Ci0KLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VyZW5j
ZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCi0vLyB0aGUgRmlsZVBhdGguIE9uIFdpbmRv
d3MsIGZvciBleGFtcGxlLCBib3RoICcvJyBhbmQgJ1wnIGFyZSB2YWxpZCBwYXRoCi0vLyBzZXBh
cmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBhcmF0b3Igd2FzIGZvdW5kLgotY29u
c3QgY2hhciogRmlsZVBhdGg6OkZpbmRMYXN0UGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKLSAgY29u
c3QgY2hhciogY29uc3QgbGFzdF9zZXAgPSBzdHJyY2hyKGNfc3RyKCksIGtQYXRoU2VwYXJhdG9y
KTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICBjb25zdCBjaGFyKiBjb25zdCBsYXN0
X2FsdF9zZXAgPSBzdHJyY2hyKGNfc3RyKCksIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yKTsKLSAg
Ly8gQ29tcGFyaW5nIHR3byBwb2ludGVycyBvZiB3aGljaCBvbmx5IG9uZSBpcyBOVUxMIGlzIHVu
ZGVmaW5lZC4KLSAgaWYgKGxhc3RfYWx0X3NlcCAhPSBOVUxMICYmCi0gICAgICAobGFzdF9zZXAg
PT0gTlVMTCB8fCBsYXN0X2FsdF9zZXAgPiBsYXN0X3NlcCkpIHsKLSAgICByZXR1cm4gbGFzdF9h
bHRfc2VwOwotICB9Ci0jZW5kaWYKLSAgcmV0dXJuIGxhc3Rfc2VwOwotfQotCi0vLyBSZXR1cm5z
IGEgY29weSBvZiB0aGUgRmlsZVBhdGggd2l0aCB0aGUgZGlyZWN0b3J5IHBhcnQgcmVtb3ZlZC4K
LS8vIEV4YW1wbGU6IEZpbGVQYXRoKCJwYXRoL3RvL2ZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkgcmV0dXJucwotLy8gRmlsZVBhdGgoImZpbGUiKS4gSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5
IHBhcnQgKCJqdXN0X2FfZmlsZSIpLCBpdCByZXR1cm5zCi0vLyB0aGUgRmlsZVBhdGggdW5tb2Rp
ZmllZC4gSWYgdGhlcmUgaXMgbm8gZmlsZSBwYXJ0ICgianVzdF9hX2Rpci8iKSBpdAotLy8gcmV0
dXJucyBhbiBlbXB0eSBGaWxlUGF0aCAoIiIpLgotLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgJ1wn
IGlzIHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNlIGl0IGlzICcvJy4KLUZpbGVQYXRoIEZp
bGVQYXRoOjpSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29uc3QgewotICBjb25zdCBjaGFyKiBjb25z
dCBsYXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICByZXR1cm4gbGFzdF9zZXAg
PyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1l
IHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lIHJlbW92ZWQuCi0v
LyBFeGFtcGxlOiBGaWxlUGF0aCgicGF0aC90by9maWxlIikuUmVtb3ZlRmlsZU5hbWUoKSByZXR1
cm5zICJwYXRoL3RvLyIuCi0vLyBJZiB0aGUgRmlsZVBhdGggaXMgImFfZmlsZSIgb3IgIi9hX2Zp
bGUiLCBSZW1vdmVGaWxlTmFtZSByZXR1cm5zCi0vLyBGaWxlUGF0aCgiLi8iKSBvciwgb24gV2lu
ZG93cywgRmlsZVBhdGgoIi5cXCIpLiBJZiB0aGUgZmlsZXBhdGggZG9lcwotLy8gbm90IGhhdmUg
YSBmaWxlLCBsaWtlICJqdXN0L2EvZGlyLyIsIGl0IHJldHVybnMgdGhlIEZpbGVQYXRoIHVubW9k
aWZpZWQuCi0vLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9y
LCBvdGhlcndpc2UgaXQgaXMgJy8nLgotRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1l
KCkgY29uc3QgewotICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNl
cGFyYXRvcigpOwotICBzdGQ6OnN0cmluZyBkaXI7Ci0gIGlmIChsYXN0X3NlcCkgewotICAgIGRp
ciA9IHN0ZDo6c3RyaW5nKGNfc3RyKCksIGxhc3Rfc2VwICsgMSAtIGNfc3RyKCkpOwotICB9IGVs
c2UgewotICAgIGRpciA9IGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nOwotICB9Ci0gIHJldHVybiBG
aWxlUGF0aChkaXIpOwotfQotCi0vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBuYW1pbmcgZmlsZXMg
aW4gYSBkaXJlY3RvcnkgZm9yIHhtbCBvdXRwdXQuCi0KLS8vIEdpdmVuIGRpcmVjdG9yeSA9ICJk
aXIiLCBiYXNlX25hbWUgPSAidGVzdCIsIG51bWJlciA9IDAsCi0vLyBleHRlbnNpb24gPSAieG1s
IiwgcmV0dXJucyAiZGlyL3Rlc3QueG1sIi4gSWYgbnVtYmVyIGlzIGdyZWF0ZXIKLS8vIHRoYW4g
emVybyAoZS5nLiwgMTIpLCByZXR1cm5zICJkaXIvdGVzdF8xMi54bWwiLgotLy8gT24gV2luZG93
cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gLy4KLUZpbGVQ
YXRoIEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoY29uc3QgRmlsZVBhdGgmIGRpcmVjdG9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uKSB7Ci0gIHN0ZDo6c3Ry
aW5nIGZpbGU7Ci0gIGlmIChudW1iZXIgPT0gMCkgewotICAgIGZpbGUgPSBiYXNlX25hbWUuc3Ry
aW5nKCkgKyAiLiIgKyBleHRlbnNpb247Ci0gIH0gZWxzZSB7Ci0gICAgZmlsZSA9IGJhc2VfbmFt
ZS5zdHJpbmcoKSArICJfIiArIFN0cmVhbWFibGVUb1N0cmluZyhudW1iZXIpCi0gICAgICAgICsg
Ii4iICsgZXh0ZW5zaW9uOwotICB9Ci0gIHJldHVybiBDb25jYXRQYXRocyhkaXJlY3RvcnksIEZp
bGVQYXRoKGZpbGUpKTsKLX0KLQotLy8gR2l2ZW4gZGlyZWN0b3J5ID0gImRpciIsIHJlbGF0aXZl
X3BhdGggPSAidGVzdC54bWwiLCByZXR1cm5zICJkaXIvdGVzdC54bWwiLgotLy8gT24gV2luZG93
cywgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gLy4KLUZpbGVQYXRoIEZpbGVQ
YXRoOjpDb25jYXRQYXRocyhjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRoJiByZWxhdGl2ZV9wYXRoKSB7Ci0gIGlm
IChkaXJlY3RvcnkuSXNFbXB0eSgpKQotICAgIHJldHVybiByZWxhdGl2ZV9wYXRoOwotICBjb25z
dCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsK
LSAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmcoKSArIGtQYXRoU2VwYXJhdG9yICsgcmVsYXRp
dmVfcGF0aC5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNj
cmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRoZSBmaWxlLXN5c3RlbSwKLS8vIGVpdGhlciBh
IGZpbGUsIGRpcmVjdG9yeSwgb3Igd2hhdGV2ZXIuCi1ib29sIEZpbGVQYXRoOjpGaWxlT3JEaXJl
Y3RvcnlFeGlzdHMoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgTFBD
V1NUUiB1bmljb2RlID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRobmFtZV8uY19zdHIoKSk7Ci0g
IGNvbnN0IERXT1JEIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlcyh1bmljb2RlKTsKLSAg
ZGVsZXRlIFtdIHVuaWNvZGU7Ci0gIHJldHVybiBhdHRyaWJ1dGVzICE9IGtJbnZhbGlkRmlsZUF0
dHJpYnV0ZXM7Ci0jZWxzZQotICBwb3NpeDo6U3RhdFN0cnVjdCBmaWxlX3N0YXQ7Ci0gIHJldHVy
biBwb3NpeDo6U3RhdChwYXRobmFtZV8uY19zdHIoKSwgJmZpbGVfc3RhdCkgPT0gMDsKLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHBh
dGhuYW1lIGRlc2NyaWJlcyBhIGRpcmVjdG9yeSBpbiB0aGUgZmlsZS1zeXN0ZW0KLS8vIHRoYXQg
ZXhpc3RzLgotYm9vbCBGaWxlUGF0aDo6RGlyZWN0b3J5RXhpc3RzKCkgY29uc3QgewotICBib29s
IHJlc3VsdCA9IGZhbHNlOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gRG9uJ3Qgc3RyaXAg
b2ZmIHRyYWlsaW5nIHNlcGFyYXRvciBpZiBwYXRoIGlzIGEgcm9vdCBkaXJlY3Rvcnkgb24KLSAg
Ly8gV2luZG93cyAobGlrZSAiQzpcXCIpLgotICBjb25zdCBGaWxlUGF0aCYgcGF0aChJc1Jvb3RE
aXJlY3RvcnkoKSA/ICp0aGlzIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0jZWxzZQotICBjb25zdCBG
aWxlUGF0aCYgcGF0aCgqdGhpcyk7Ci0jZW5kaWYKLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi0gIExQQ1dTVFIgdW5pY29kZSA9IFN0cmluZzo6QW5zaVRvVXRmMTYocGF0aC5jX3N0cigp
KTsKLSAgY29uc3QgRFdPUkQgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzKHVuaWNvZGUp
OwotICBkZWxldGUgW10gdW5pY29kZTsKLSAgaWYgKChhdHRyaWJ1dGVzICE9IGtJbnZhbGlkRmls
ZUF0dHJpYnV0ZXMpICYmCi0gICAgICAoYXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVD
VE9SWSkpIHsKLSAgICByZXN1bHQgPSB0cnVlOwotICB9Ci0jZWxzZQotICBwb3NpeDo6U3RhdFN0
cnVjdCBmaWxlX3N0YXQ7Ci0gIHJlc3VsdCA9IHBvc2l4OjpTdGF0KHBhdGguY19zdHIoKSwgJmZp
bGVfc3RhdCkgPT0gMCAmJgotICAgICAgcG9zaXg6OklzRGlyKGZpbGVfc3RhdCk7Ci0jZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8g
UmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBhIHJvb3QgZGlyZWN0b3J5LiAoV2lu
ZG93cyBoYXMgb25lCi0vLyByb290IGRpcmVjdG9yeSBwZXIgZGlzayBkcml2ZS4pCi1ib29sIEZp
bGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwot
ICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2luZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlr
ZQotICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSByb290IGRpcmVjdG9yeSwgYWx0aG91Z2gg
aXQgY2Fubm90IGJlIHRoZQotICAvLyBjdXJyZW50IGRpcmVjdG9yeS4gIEhhbmRsZSB0aGlzIHBy
b3Blcmx5LgotICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID09IDMgJiYgSXNBYnNvbHV0ZVBh
dGgoKTsKLSNlbHNlCi0gIHJldHVybiBwYXRobmFtZV8ubGVuZ3RoKCkgPT0gMSAmJiBJc1BhdGhT
ZXBhcmF0b3IocGF0aG5hbWVfLmNfc3RyKClbMF0pOwotI2VuZGlmCi19Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYW4gYWJzb2x1dGUgcGF0aC4KLWJvb2wgRmlsZVBh
dGg6OklzQWJzb2x1dGVQYXRoKCkgY29uc3QgewotICBjb25zdCBjaGFyKiBjb25zdCBuYW1lID0g
cGF0aG5hbWVfLmNfc3RyKCk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICByZXR1cm4gcGF0aG5h
bWVfLmxlbmd0aCgpID49IDMgJiYKLSAgICAgKChuYW1lWzBdID49ICdhJyAmJiBuYW1lWzBdIDw9
ICd6JykgfHwKLSAgICAgIChuYW1lWzBdID49ICdBJyAmJiBuYW1lWzBdIDw9ICdaJykpICYmCi0g
ICAgIG5hbWVbMV0gPT0gJzonICYmCi0gICAgIElzUGF0aFNlcGFyYXRvcihuYW1lWzJdKTsKLSNl
bHNlCi0gIHJldHVybiBJc1BhdGhTZXBhcmF0b3IobmFtZVswXSk7Ci0jZW5kaWYKLX0KLQotLy8g
UmV0dXJucyBhIHBhdGhuYW1lIGZvciBhIGZpbGUgdGhhdCBkb2VzIG5vdCBjdXJyZW50bHkgZXhp
c3QuIFRoZSBwYXRobmFtZQotLy8gd2lsbCBiZSBkaXJlY3RvcnkvYmFzZV9uYW1lLmV4dGVuc2lv
biBvcgotLy8gZGlyZWN0b3J5L2Jhc2VfbmFtZV88bnVtYmVyPi5leHRlbnNpb24gaWYgZGlyZWN0
b3J5L2Jhc2VfbmFtZS5leHRlbnNpb24KLS8vIGFscmVhZHkgZXhpc3RzLiBUaGUgbnVtYmVyIHdp
bGwgYmUgaW5jcmVtZW50ZWQgdW50aWwgYSBwYXRobmFtZSBpcyBmb3VuZAotLy8gdGhhdCBkb2Vz
IG5vdCBhbHJlYWR5IGV4aXN0LgotLy8gRXhhbXBsZXM6ICdkaXIvZm9vX3Rlc3QueG1sJyBvciAn
ZGlyL2Zvb190ZXN0XzEueG1sJy4KLS8vIFRoZXJlIGNvdWxkIGJlIGEgcmFjZSBjb25kaXRpb24g
aWYgdHdvIG9yIG1vcmUgcHJvY2Vzc2VzIGFyZSBjYWxsaW5nIHRoaXMKLS8vIGZ1bmN0aW9uIGF0
IHRoZSBzYW1lIHRpbWUgLS0gdGhleSBjb3VsZCBib3RoIHBpY2sgdGhlIHNhbWUgZmlsZW5hbWUu
Ci1GaWxlUGF0aCBGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZShjb25zdCBGaWxlUGF0
aCYgZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgewotICBGaWxlUGF0aCBmdWxsX3Bh
dGhuYW1lOwotICBpbnQgbnVtYmVyID0gMDsKLSAgZG8gewotICAgIGZ1bGxfcGF0aG5hbWUuU2V0
KE1ha2VGaWxlTmFtZShkaXJlY3RvcnksIGJhc2VfbmFtZSwgbnVtYmVyKyssIGV4dGVuc2lvbikp
OwotICB9IHdoaWxlIChmdWxsX3BhdGhuYW1lLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLSAg
cmV0dXJuIGZ1bGxfcGF0aG5hbWU7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBGaWxlUGF0aCBl
bmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciwgd2hpY2ggaW5kaWNhdGVzIHRoYXQKLS8vIGl0IGlz
IGludGVuZGVkIHRvIHJlcHJlc2VudCBhIGRpcmVjdG9yeS4gUmV0dXJucyBmYWxzZSBvdGhlcndp
c2UuCi0vLyBUaGlzIGRvZXMgTk9UIGNoZWNrIHRoYXQgYSBkaXJlY3RvcnkgKG9yIGZpbGUpIGFj
dHVhbGx5IGV4aXN0cy4KLWJvb2wgRmlsZVBhdGg6OklzRGlyZWN0b3J5KCkgY29uc3QgewotICBy
ZXR1cm4gIXBhdGhuYW1lXy5lbXB0eSgpICYmCi0gICAgICAgICBJc1BhdGhTZXBhcmF0b3IocGF0
aG5hbWVfLmNfc3RyKClbcGF0aG5hbWVfLmxlbmd0aCgpIC0gMV0pOwotfQotCi0vLyBDcmVhdGUg
ZGlyZWN0b3JpZXMgc28gdGhhdCBwYXRoIGV4aXN0cy4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3Nm
dWwgb3IgaWYKLS8vIHRoZSBkaXJlY3RvcmllcyBhbHJlYWR5IGV4aXN0OyByZXR1cm5zIGZhbHNl
IGlmIHVuYWJsZSB0byBjcmVhdGUgZGlyZWN0b3JpZXMKLS8vIGZvciBhbnkgcmVhc29uLgotYm9v
bCBGaWxlUGF0aDo6Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpIGNvbnN0IHsKLSAgaWYg
KCF0aGlzLT5Jc0RpcmVjdG9yeSgpKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgaWYg
KHBhdGhuYW1lXy5sZW5ndGgoKSA9PSAwIHx8IHRoaXMtPkRpcmVjdG9yeUV4aXN0cygpKSB7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBjb25zdCBGaWxlUGF0aCBwYXJlbnQodGhpcy0+UmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuUmVtb3ZlRmlsZU5hbWUoKSk7Ci0gIHJldHVybiBw
YXJlbnQuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpICYmIHRoaXMtPkNyZWF0ZUZvbGRl
cigpOwotfQotCi0vLyBDcmVhdGUgdGhlIGRpcmVjdG9yeSBzbyB0aGF0IHBhdGggZXhpc3RzLiBS
ZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCBvcgotLy8gaWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5
IGV4aXN0czsgcmV0dXJucyBmYWxzZSBpZiB1bmFibGUgdG8gY3JlYXRlIHRoZQotLy8gZGlyZWN0
b3J5IGZvciBhbnkgcmVhc29uLCBpbmNsdWRpbmcgaWYgdGhlIHBhcmVudCBkaXJlY3RvcnkgZG9l
cyBub3QKLS8vIGV4aXN0LiBOb3QgbmFtZWQgIkNyZWF0ZURpcmVjdG9yeSIgYmVjYXVzZSB0aGF0
J3MgYSBtYWNybyBvbiBXaW5kb3dzLgotYm9vbCBGaWxlUGF0aDo6Q3JlYXRlRm9sZGVyKCkgY29u
c3QgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIEZpbGVQYXRoIHJlbW92ZWRfc2Vw
KHRoaXMtPlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgTFBDV1NUUiB1bmljb2Rl
ID0gU3RyaW5nOjpBbnNpVG9VdGYxNihyZW1vdmVkX3NlcC5jX3N0cigpKTsKLSAgaW50IHJlc3Vs
dCA9IENyZWF0ZURpcmVjdG9yeSh1bmljb2RlLCBOVUxMKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtd
IHVuaWNvZGU7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0gIGludCByZXN1bHQgPSBfbWtkaXIo
cGF0aG5hbWVfLmNfc3RyKCkpOwotI2Vsc2UKLSAgaW50IHJlc3VsdCA9IG1rZGlyKHBhdGhuYW1l
Xy5jX3N0cigpLCAwNzc3KTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQot
ICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgcmV0dXJuIHRoaXMtPkRpcmVjdG9yeUV4aXN0cygp
OyAgLy8gQW4gZXJyb3IgaXMgT0sgaWYgdGhlIGRpcmVjdG9yeSBleGlzdHMuCi0gIH0KLSAgcmV0
dXJuIHRydWU7ICAvLyBObyBlcnJvci4KLX0KLQotLy8gSWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFp
bGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmUgaXQgYW5kIHJldHVybiB0aGUKLS8vIG5h
bWUsIG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3RyaW5nIHVubW9kaWZpZWQuCi0vLyBPbiBX
aW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNlcGFyYXRvciwgb3RoZXIgcGxhdGZvcm1z
IHVzZSAvLgotRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigp
IGNvbnN0IHsKLSAgcmV0dXJuIElzRGlyZWN0b3J5KCkKLSAgICAgID8gRmlsZVBhdGgocGF0aG5h
bWVfLnN1YnN0cigwLCBwYXRobmFtZV8ubGVuZ3RoKCkgLSAxKSkKLSAgICAgIDogKnRoaXM7Ci19
Ci0KLS8vIFJlbW92ZXMgYW55IHJlZHVuZGFudCBzZXBhcmF0b3JzIHRoYXQgbWlnaHQgYmUgaW4g
dGhlIHBhdGhuYW1lLgotLy8gRm9yIGV4YW1wbGUsICJiYXIvLy9mb28iIGJlY29tZXMgImJhci9m
b28iLiBEb2VzIG5vdCBlbGltaW5hdGUgb3RoZXIKLS8vIHJlZHVuZGFuY2llcyB0aGF0IG1pZ2h0
IGJlIGluIGEgcGF0aG5hbWUgaW52b2x2aW5nICIuIiBvciAiLi4iLgotLy8gVE9ETyh3YW5AZ29v
Z2xlLmNvbSk6IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsgc2hhcmVzIChlLmcuIFxcc2VydmVyXHNo
YXJlKS4KLXZvaWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgpIHsKLSAgaWYgKHBhdGhuYW1lXy5jX3N0
cigpID09IE5VTEwpIHsKLSAgICBwYXRobmFtZV8gPSAiIjsKLSAgICByZXR1cm47Ci0gIH0KLSAg
Y29uc3QgY2hhciogc3JjID0gcGF0aG5hbWVfLmNfc3RyKCk7Ci0gIGNoYXIqIGNvbnN0IGRlc3Qg
PSBuZXcgY2hhcltwYXRobmFtZV8ubGVuZ3RoKCkgKyAxXTsKLSAgY2hhciogZGVzdF9wdHIgPSBk
ZXN0OwotICBtZW1zZXQoZGVzdF9wdHIsIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSArIDEpOwotCi0g
IHdoaWxlICgqc3JjICE9ICdcMCcpIHsKLSAgICAqZGVzdF9wdHIgPSAqc3JjOwotICAgIGlmICgh
SXNQYXRoU2VwYXJhdG9yKCpzcmMpKSB7Ci0gICAgICBzcmMrKzsKLSAgICB9IGVsc2UgewotI2lm
IEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gICAgICBpZiAoKmRlc3RfcHRyID09IGtBbHRlcm5h
dGVQYXRoU2VwYXJhdG9yKSB7Ci0gICAgICAgICpkZXN0X3B0ciA9IGtQYXRoU2VwYXJhdG9yOwot
ICAgICAgfQotI2VuZGlmCi0gICAgICB3aGlsZSAoSXNQYXRoU2VwYXJhdG9yKCpzcmMpKQotICAg
ICAgICBzcmMrKzsKLSAgICB9Ci0gICAgZGVzdF9wdHIrKzsKLSAgfQotICAqZGVzdF9wdHIgPSAn
XDAnOwotICBwYXRobmFtZV8gPSBkZXN0OwotICBkZWxldGVbXSBkZXN0OwotfQotCi19ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rl
c3QtaW50ZXJuYWwtaW5sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWZlYjE2
Zjk0YmRlNTYwNjQyY2RmYjU2ZjA0NGRhYmRlMWQzY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE4MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIFV0aWxpdHkgZnVuY3Rpb25zIGFuZCBjbGFz
c2VzIHVzZWQgYnkgdGhlIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgZmlsZSBjb250
YWlucyBwdXJlbHkgR29vZ2xlIFRlc3QncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4gIFBsZWFz
ZQotLy8gRE8gTk9UICNJTkNMVURFIElUIElOIEEgVVNFUiBQUk9HUkFNLgotCi0jaWZuZGVmIEdU
RVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KLSNkZWZpbmUgR1RFU1RfU1JDX0dURVNUX0lO
VEVSTkFMX0lOTF9IXwotCi0vLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8gaXMgZGVmaW5lZCB0byAx
IGlmZiB0aGUgY3VycmVudCB0cmFuc2xhdGlvbiB1bml0IGlzCi0vLyBwYXJ0IG9mIEdvb2dsZSBU
ZXN0J3MgaW1wbGVtZW50YXRpb247IG90aGVyd2lzZSBpdCdzIHVuZGVmaW5lZC4KLSNpZiAhR1RF
U1RfSU1QTEVNRU5UQVRJT05fCi0vLyBJZiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgZnJvbSB0aGUg
dXNlcidzIGNvZGUsIGp1c3Qgc2F5IG5vLgotIyBlcnJvciAiZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aXMgcGFydCBvZiBHb29nbGUgVGVzdCdzIGludGVybmFsIGltcGxlbWVudGF0aW9uLiIKLSMgZXJy
b3IgIkl0IG11c3Qgbm90IGJlIGluY2x1ZGVkIGV4Y2VwdCBieSBHb29nbGUgVGVzdCBpdHNlbGYu
IgotI2VuZGlmICAvLyBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2lmbmRlZiBfV0lOMzJfV0NF
Ci0jIGluY2x1ZGUgPGVycm5vLmg+Ci0jZW5kaWYgIC8vICFfV0lOMzJfV0NFCi0jaW5jbHVkZSA8
c3RkZGVmLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3Igc3RydG9sbC9fc3RydG91bDY0
L21hbGxvYy9mcmVlLgotI2luY2x1ZGUgPHN0cmluZy5oPiAgLy8gRm9yIG1lbW1vdmUuCi0KLSNp
bmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2lmIEdURVNUX0NB
Tl9TVFJFQU1fUkVTVUxUU18KLSMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKLSMg
aW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAotI2VuZGlmCi0KLSNpZiBHVEVTVF9PU19XSU5E
T1dTCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiAgLy8gTk9MSU5UCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRGVjbGFy
ZXMgdGhlIGZsYWdzLgotLy8KLS8vIFdlIGRvbid0IHdhbnQgdGhlIHVzZXJzIHRvIG1vZGlmeSB0
aGlzIGZsYWcgaW4gdGhlIGNvZGUsIGJ1dCB3YW50Ci0vLyBHb29nbGUgVGVzdCdzIG93biB1bml0
IHRlc3RzIHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0LiBUaGVyZWZvcmUgd2UKLS8vIGRlY2xhcmUg
aXQgaGVyZSBhcyBvcHBvc2VkIHRvIGluIGd0ZXN0LmguCi1HVEVTVF9ERUNMQVJFX2Jvb2xfKGRl
YXRoX3Rlc3RfdXNlX2ZvcmspOwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBUaGUgdmFs
dWUgb2YgR2V0VGVzdFR5cGVJZCgpIGFzIHNlZW4gZnJvbSB3aXRoaW4gdGhlIEdvb2dsZSBUZXN0
Ci0vLyBsaWJyYXJ5LiAgVGhpcyBpcyBzb2xlbHkgZm9yIHRlc3RpbmcgR2V0VGVzdFR5cGVJZCgp
LgotR1RFU1RfQVBJXyBleHRlcm4gY29uc3QgVHlwZUlkIGtUZXN0VHlwZUlkSW5Hb29nbGVUZXN0
OwotCi0vLyBOYW1lcyBvZiB0aGUgZmxhZ3MgKG5lZWRlZCBmb3IgcGFyc2luZyBHb29nbGUgVGVz
dCBmbGFncykuCi1jb25zdCBjaGFyIGtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdbXSA9ICJhbHNv
X3J1bl9kaXNhYmxlZF90ZXN0cyI7Ci1jb25zdCBjaGFyIGtCcmVha09uRmFpbHVyZUZsYWdbXSA9
ICJicmVha19vbl9mYWlsdXJlIjsKLWNvbnN0IGNoYXIga0NhdGNoRXhjZXB0aW9uc0ZsYWdbXSA9
ICJjYXRjaF9leGNlcHRpb25zIjsKLWNvbnN0IGNoYXIga0NvbG9yRmxhZ1tdID0gImNvbG9yIjsK
LWNvbnN0IGNoYXIga0ZpbHRlckZsYWdbXSA9ICJmaWx0ZXIiOwotY29uc3QgY2hhciBrTGlzdFRl
c3RzRmxhZ1tdID0gImxpc3RfdGVzdHMiOwotY29uc3QgY2hhciBrT3V0cHV0RmxhZ1tdID0gIm91
dHB1dCI7Ci1jb25zdCBjaGFyIGtQcmludFRpbWVGbGFnW10gPSAicHJpbnRfdGltZSI7Ci1jb25z
dCBjaGFyIGtSYW5kb21TZWVkRmxhZ1tdID0gInJhbmRvbV9zZWVkIjsKLWNvbnN0IGNoYXIga1Jl
cGVhdEZsYWdbXSA9ICJyZXBlYXQiOwotY29uc3QgY2hhciBrU2h1ZmZsZUZsYWdbXSA9ICJzaHVm
ZmxlIjsKLWNvbnN0IGNoYXIga1N0YWNrVHJhY2VEZXB0aEZsYWdbXSA9ICJzdGFja190cmFjZV9k
ZXB0aCI7Ci1jb25zdCBjaGFyIGtTdHJlYW1SZXN1bHRUb0ZsYWdbXSA9ICJzdHJlYW1fcmVzdWx0
X3RvIjsKLWNvbnN0IGNoYXIga1Rocm93T25GYWlsdXJlRmxhZ1tdID0gInRocm93X29uX2ZhaWx1
cmUiOwotY29uc3QgY2hhciBrRmxhZ2ZpbGVGbGFnW10gPSAiZmxhZ2ZpbGUiOwotCi0vLyBBIHZh
bGlkIHJhbmRvbSBzZWVkIG11c3QgYmUgaW4gWzEsIGtNYXhSYW5kb21TZWVkXS4KLWNvbnN0IGlu
dCBrTWF4UmFuZG9tU2VlZCA9IDk5OTk5OwotCi0vLyBnX2hlbHBfZmxhZyBpcyB0cnVlIGlmZiB0
aGUgLS1oZWxwIGZsYWcgb3IgYW4gZXF1aXZhbGVudCBmb3JtIGlzCi0vLyBzcGVjaWZpZWQgb24g
dGhlIGNvbW1hbmQgbGluZS4KLUdURVNUX0FQSV8gZXh0ZXJuIGJvb2wgZ19oZWxwX2ZsYWc7Ci0K
LS8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMuCi1HVEVTVF9BUElf
IFRpbWVJbk1pbGxpcyBHZXRUaW1lSW5NaWxsaXMoKTsKLQotLy8gUmV0dXJucyB0cnVlIGlmZiBH
b29nbGUgVGVzdCBzaG91bGQgdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgotR1RFU1RfQVBJXyBi
b29sIFNob3VsZFVzZUNvbG9yKGJvb2wgc3Rkb3V0X2lzX3R0eSk7Ci0KLS8vIEZvcm1hdHMgdGhl
IGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCi1HVEVTVF9BUElfIHN0ZDo6
c3RyaW5nIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyhUaW1lSW5NaWxsaXMgbXMpOwotCi0v
LyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYSBkYXRlIHN0cmlu
ZyBpbiB0aGUgSVNPIDg2MDEKLS8vIGZvcm1hdCwgd2l0aG91dCB0aGUgdGltZXpvbmUgaW5mb3Jt
YXRpb24uICBOLkIuOiBkdWUgdG8gdGhlIHVzZSB0aGUKLS8vIG5vbi1yZWVudHJhbnQgbG9jYWx0
aW1lKCkgZnVuY3Rpb24sIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZCBzYWZlLiAgRG8KLS8v
IG5vdCB1c2UgaXQgaW4gYW55IGNvZGUgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gbXVsdGlwbGUg
dGhyZWFkcy4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNB
c0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKTsKLQotLy8gUGFyc2VzIGEgc3RyaW5nIGZvciBhbiBJ
bnQzMiBmbGFnLCBpbiB0aGUgZm9ybSBvZiAiLS1mbGFnPXZhbHVlIi4KLS8vCi0vLyBPbiBzdWNj
ZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMK
LS8vIHRydWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZh
bHVlLgotR1RFU1RfQVBJXyBib29sIFBhcnNlSW50MzJGbGFnKAotICAgIGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKTsKLQotLy8gUmV0dXJucyBhIHJhbmRv
bSBzZWVkIGluIHJhbmdlIFsxLCBrTWF4UmFuZG9tU2VlZF0gYmFzZWQgb24gdGhlCi0vLyBnaXZl
biAtLWd0ZXN0X3JhbmRvbV9zZWVkIGZsYWcgdmFsdWUuCi1pbmxpbmUgaW50IEdldFJhbmRvbVNl
ZWRGcm9tRmxhZyhJbnQzMiByYW5kb21fc2VlZF9mbGFnKSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGlu
dCByYXdfc2VlZCA9IChyYW5kb21fc2VlZF9mbGFnID09IDApID8KLSAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4oR2V0VGltZUluTWlsbGlzKCkpIDoKLSAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4ocmFuZG9tX3NlZWRfZmxhZyk7Ci0KLSAgLy8gTm9ybWFsaXplcyB0aGUgYWN0
dWFsIHNlZWQgdG8gcmFuZ2UgWzEsIGtNYXhSYW5kb21TZWVkXSBzdWNoIHRoYXQKLSAgLy8gaXQn
cyBlYXN5IHRvIHR5cGUuCi0gIGNvbnN0IGludCBub3JtYWxpemVkX3NlZWQgPQotICAgICAgc3Rh
dGljX2Nhc3Q8aW50PigocmF3X3NlZWQgLSAxVSkgJQotICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtNYXhSYW5kb21TZWVkKSkgKyAxOwotICByZXR1cm4g
bm9ybWFsaXplZF9zZWVkOwotfQotCi0vLyBSZXR1cm5zIHRoZSBmaXJzdCB2YWxpZCByYW5kb20g
c2VlZCBhZnRlciAnc2VlZCcuICBUaGUgYmVoYXZpb3IgaXMKLS8vIHVuZGVmaW5lZCBpZiAnc2Vl
ZCcgaXMgaW52YWxpZC4gIFRoZSBzZWVkIGFmdGVyIGtNYXhSYW5kb21TZWVkIGlzCi0vLyBjb25z
aWRlcmVkIHRvIGJlIDEuCi1pbmxpbmUgaW50IEdldE5leHRSYW5kb21TZWVkKGludCBzZWVkKSB7
Ci0gIEdURVNUX0NIRUNLXygxIDw9IHNlZWQgJiYgc2VlZCA8PSBrTWF4UmFuZG9tU2VlZCkKLSAg
ICAgIDw8ICJJbnZhbGlkIHJhbmRvbSBzZWVkICIgPDwgc2VlZCA8PCAiIC0gbXVzdCBiZSBpbiBb
MSwgIgotICAgICAgPDwga01heFJhbmRvbVNlZWQgPDwgIl0uIjsKLSAgY29uc3QgaW50IG5leHRf
c2VlZCA9IHNlZWQgKyAxOwotICByZXR1cm4gKG5leHRfc2VlZCA+IGtNYXhSYW5kb21TZWVkKSA/
IDEgOiBuZXh0X3NlZWQ7Ci19Ci0KLS8vIFRoaXMgY2xhc3Mgc2F2ZXMgdGhlIHZhbHVlcyBvZiBh
bGwgR29vZ2xlIFRlc3QgZmxhZ3MgaW4gaXRzIGMndG9yLCBhbmQKLS8vIHJlc3RvcmVzIHRoZW0g
aW4gaXRzIGQndG9yLgotY2xhc3MgR1Rlc3RGbGFnU2F2ZXIgewotIHB1YmxpYzoKLSAgLy8gVGhl
IGMndG9yLgotICBHVGVzdEZsYWdTYXZlcigpIHsKLSAgICBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0
c18gPSBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKLSAgICBicmVha19vbl9m
YWlsdXJlXyA9IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci0gICAgY2F0Y2hfZXhjZXB0
aW9uc18gPSBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpOwotICAgIGNvbG9yXyA9IEdURVNU
X0ZMQUcoY29sb3IpOwotICAgIGRlYXRoX3Rlc3Rfc3R5bGVfID0gR1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKTsKLSAgICBkZWF0aF90ZXN0X3VzZV9mb3JrXyA9IEdURVNUX0ZMQUcoZGVhdGhf
dGVzdF91c2VfZm9yayk7Ci0gICAgZmlsdGVyXyA9IEdURVNUX0ZMQUcoZmlsdGVyKTsKLSAgICBp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdF8gPSBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90
ZXN0KTsKLSAgICBsaXN0X3Rlc3RzXyA9IEdURVNUX0ZMQUcobGlzdF90ZXN0cyk7Ci0gICAgb3V0
cHV0XyA9IEdURVNUX0ZMQUcob3V0cHV0KTsKLSAgICBwcmludF90aW1lXyA9IEdURVNUX0ZMQUco
cHJpbnRfdGltZSk7Ci0gICAgcmFuZG9tX3NlZWRfID0gR1RFU1RfRkxBRyhyYW5kb21fc2VlZCk7
Ci0gICAgcmVwZWF0XyA9IEdURVNUX0ZMQUcocmVwZWF0KTsKLSAgICBzaHVmZmxlXyA9IEdURVNU
X0ZMQUcoc2h1ZmZsZSk7Ci0gICAgc3RhY2tfdHJhY2VfZGVwdGhfID0gR1RFU1RfRkxBRyhzdGFj
a190cmFjZV9kZXB0aCk7Ci0gICAgc3RyZWFtX3Jlc3VsdF90b18gPSBHVEVTVF9GTEFHKHN0cmVh
bV9yZXN1bHRfdG8pOwotICAgIHRocm93X29uX2ZhaWx1cmVfID0gR1RFU1RfRkxBRyh0aHJvd19v
bl9mYWlsdXJlKTsKLSAgfQotCi0gIC8vIFRoZSBkJ3RvciBpcyBub3QgdmlydHVhbC4gIERPIE5P
VCBJTkhFUklUIEZST00gVEhJUyBDTEFTUy4KLSAgfkdUZXN0RmxhZ1NhdmVyKCkgewotICAgIEdU
RVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gYWxzb19ydW5fZGlzYWJsZWRfdGVz
dHNfOwotICAgIEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkgPSBicmVha19vbl9mYWlsdXJl
XzsKLSAgICBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gY2F0Y2hfZXhjZXB0aW9uc187
Ci0gICAgR1RFU1RfRkxBRyhjb2xvcikgPSBjb2xvcl87Ci0gICAgR1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9IGRlYXRoX3Rlc3Rfc3R5bGVfOwotICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVz
dF91c2VfZm9yaykgPSBkZWF0aF90ZXN0X3VzZV9mb3JrXzsKLSAgICBHVEVTVF9GTEFHKGZpbHRl
cikgPSBmaWx0ZXJfOwotICAgIEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpID0g
aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfOwotICAgIEdURVNUX0ZMQUcobGlzdF90ZXN0cykgPSBs
aXN0X3Rlc3RzXzsKLSAgICBHVEVTVF9GTEFHKG91dHB1dCkgPSBvdXRwdXRfOwotICAgIEdURVNU
X0ZMQUcocHJpbnRfdGltZSkgPSBwcmludF90aW1lXzsKLSAgICBHVEVTVF9GTEFHKHJhbmRvbV9z
ZWVkKSA9IHJhbmRvbV9zZWVkXzsKLSAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXRfOwot
ICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBzaHVmZmxlXzsKLSAgICBHVEVTVF9GTEFHKHN0YWNr
X3RyYWNlX2RlcHRoKSA9IHN0YWNrX3RyYWNlX2RlcHRoXzsKLSAgICBHVEVTVF9GTEFHKHN0cmVh
bV9yZXN1bHRfdG8pID0gc3RyZWFtX3Jlc3VsdF90b187Ci0gICAgR1RFU1RfRkxBRyh0aHJvd19v
bl9mYWlsdXJlKSA9IHRocm93X29uX2ZhaWx1cmVfOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBG
aWVsZHMgZm9yIHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWVzIG9mIGZsYWdzLgotICBib29sIGFs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzXzsKLSAgYm9vbCBicmVha19vbl9mYWlsdXJlXzsKLSAgYm9v
bCBjYXRjaF9leGNlcHRpb25zXzsKLSAgc3RkOjpzdHJpbmcgY29sb3JfOwotICBzdGQ6OnN0cmlu
ZyBkZWF0aF90ZXN0X3N0eWxlXzsKLSAgYm9vbCBkZWF0aF90ZXN0X3VzZV9mb3JrXzsKLSAgc3Rk
OjpzdHJpbmcgZmlsdGVyXzsKLSAgc3RkOjpzdHJpbmcgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Rf
OwotICBib29sIGxpc3RfdGVzdHNfOwotICBzdGQ6OnN0cmluZyBvdXRwdXRfOwotICBib29sIHBy
aW50X3RpbWVfOwotICBpbnRlcm5hbDo6SW50MzIgcmFuZG9tX3NlZWRfOwotICBpbnRlcm5hbDo6
SW50MzIgcmVwZWF0XzsKLSAgYm9vbCBzaHVmZmxlXzsKLSAgaW50ZXJuYWw6OkludDMyIHN0YWNr
X3RyYWNlX2RlcHRoXzsKLSAgc3RkOjpzdHJpbmcgc3RyZWFtX3Jlc3VsdF90b187Ci0gIGJvb2wg
dGhyb3dfb25fZmFpbHVyZV87Ci19IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOwotCi0vLyBDb252
ZXJ0cyBhIFVuaWNvZGUgY29kZSBwb2ludCB0byBhIG5hcnJvdyBzdHJpbmcgaW4gVVRGLTggZW5j
b2RpbmcuCi0vLyBjb2RlX3BvaW50IHBhcmFtZXRlciBpcyBvZiB0eXBlIFVJbnQzMiBiZWNhdXNl
IHdjaGFyX3QgbWF5IG5vdCBiZQotLy8gd2lkZSBlbm91Z2ggdG8gY29udGFpbiBhIGNvZGUgcG9p
bnQuCi0vLyBJZiB0aGUgY29kZV9wb2ludCBpcyBub3QgYSB2YWxpZCBVbmljb2RlIGNvZGUgcG9p
bnQKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29kZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIGl0
IHdpbGwgYmUgY29udmVydGVkCi0vLyB0byAiKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKSIu
Ci1HVEVTVF9BUElfIHN0ZDo6c3RyaW5nIENvZGVQb2ludFRvVXRmOChVSW50MzIgY29kZV9wb2lu
dCk7Ci0KLS8vIENvbnZlcnRzIGEgd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVU
Ri04IGVuY29kaW5nLgotLy8gVGhlIHdpZGUgc3RyaW5nIGlzIGFzc3VtZWQgdG8gaGF2ZSB0aGUg
Zm9sbG93aW5nIGVuY29kaW5nOgotLy8gICBVVEYtMTYgaWYgc2l6ZW9mKHdjaGFyX3QpID09IDIg
KG9uIFdpbmRvd3MsIEN5Z3dpbiwgU3ltYmlhbiBPUykKLS8vICAgVVRGLTMyIGlmIHNpemVvZih3
Y2hhcl90KSA9PSA0IChvbiBMaW51eCkKLS8vIFBhcmFtZXRlciBzdHIgcG9pbnRzIHRvIGEgbnVs
bC10ZXJtaW5hdGVkIHdpZGUgc3RyaW5nLgotLy8gUGFyYW1ldGVyIG51bV9jaGFycyBtYXkgYWRk
aXRpb25hbGx5IGxpbWl0IHRoZSBudW1iZXIKLS8vIG9mIHdjaGFyX3QgY2hhcmFjdGVycyBwcm9j
ZXNzZWQuIC0xIGlzIHVzZWQgd2hlbiB0aGUgZW50aXJlIHN0cmluZwotLy8gc2hvdWxkIGJlIHBy
b2Nlc3NlZC4KLS8vIElmIHRoZSBzdHJpbmcgY29udGFpbnMgY29kZSBwb2ludHMgdGhhdCBhcmUg
bm90IHZhbGlkIFVuaWNvZGUgY29kZSBwb2ludHMKLS8vIChpLmUuIG91dHNpZGUgb2YgVW5pY29k
ZSByYW5nZSBVKzAgdG8gVSsxMEZGRkYpIHRoZXkgd2lsbCBiZSBvdXRwdXQKLS8vIGFzICcoSW52
YWxpZCBVbmljb2RlIDB4WFhYWFhYWFgpJy4gSWYgdGhlIHN0cmluZyBpcyBpbiBVVEYxNiBlbmNv
ZGluZwotLy8gYW5kIGNvbnRhaW5zIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycywgdmFs
dWVzIGluIHRob3NlIHBhaXJzCi0vLyB3aWxsIGJlIGVuY29kZWQgYXMgaW5kaXZpZHVhbCBVbmlj
b2RlIGNoYXJhY3RlcnMgZnJvbSBCYXNpYyBOb3JtYWwgUGxhbmUuCi1HVEVTVF9BUElfIHN0ZDo6
c3RyaW5nIFdpZGVTdHJpbmdUb1V0ZjgoY29uc3Qgd2NoYXJfdCogc3RyLCBpbnQgbnVtX2NoYXJz
KTsKLQotLy8gUmVhZHMgdGhlIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIGVudmlyb25tZW50IHZh
cmlhYmxlLCBhbmQgY3JlYXRlcyB0aGUgZmlsZQotLy8gaWYgdGhlIHZhcmlhYmxlIGlzIHByZXNl
bnQuIElmIGEgZmlsZSBhbHJlYWR5IGV4aXN0cyBhdCB0aGlzIGxvY2F0aW9uLCB0aGlzCi0vLyBm
dW5jdGlvbiB3aWxsIHdyaXRlIG92ZXIgaXQuIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50LCBi
dXQgdGhlIGZpbGUgY2Fubm90Ci0vLyBiZSBjcmVhdGVkLCBwcmludHMgYW4gZXJyb3IgYW5kIGV4
aXRzLgotdm9pZCBXcml0ZVRvU2hhcmRTdGF0dXNGaWxlSWZOZWVkZWQoKTsKLQotLy8gQ2hlY2tz
IHdoZXRoZXIgc2hhcmRpbmcgaXMgZW5hYmxlZCBieSBleGFtaW5pbmcgdGhlIHJlbGV2YW50Ci0v
LyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMuIElmIHRoZSB2YXJpYWJsZXMgYXJlIHByZXNl
bnQsCi0vLyBidXQgaW5jb25zaXN0ZW50IChlLmcuLCBzaGFyZF9pbmRleCA+PSB0b3RhbF9zaGFy
ZHMpLCBwcmludHMKLS8vIGFuIGVycm9yIGFuZCBleGl0cy4gSWYgaW5fc3VicHJvY2Vzc19mb3Jf
ZGVhdGhfdGVzdCwgc2hhcmRpbmcgaXMKLS8vIGRpc2FibGVkIGJlY2F1c2UgaXQgbXVzdCBvbmx5
IGJlIGFwcGxpZWQgdG8gdGhlIG9yaWdpbmFsIHRlc3QKLS8vIHByb2Nlc3MuIE90aGVyd2lzZSwg
d2UgY291bGQgZmlsdGVyIG91dCBkZWF0aCB0ZXN0cyB3ZSBpbnRlbmRlZCB0byBleGVjdXRlLgot
R1RFU1RfQVBJXyBib29sIFNob3VsZFNoYXJkKGNvbnN0IGNoYXIqIHRvdGFsX3NoYXJkc19zdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc2hhcmRfaW5kZXhfc3Ry
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5fc3VicHJvY2Vzc19mb3JfZGVh
dGhfdGVzdCk7Ci0KLS8vIFBhcnNlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFyIGFzIGFu
IEludDMyLiBJZiBpdCBpcyB1bnNldCwKLS8vIHJldHVybnMgZGVmYXVsdF92YWwuIElmIGl0IGlz
IG5vdCBhbiBJbnQzMiwgcHJpbnRzIGFuIGVycm9yIGFuZAotLy8gYW5kIGFib3J0cy4KLUdURVNU
X0FQSV8gSW50MzIgSW50MzJGcm9tRW52T3JEaWUoY29uc3QgY2hhciogZW52X3ZhciwgSW50MzIg
ZGVmYXVsdF92YWwpOwotCi0vLyBHaXZlbiB0aGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcywgdGhl
IHNoYXJkIGluZGV4LCBhbmQgdGhlIHRlc3QgaWQsCi0vLyByZXR1cm5zIHRydWUgaWZmIHRoZSB0
ZXN0IHNob3VsZCBiZSBydW4gb24gdGhpcyBzaGFyZC4gVGhlIHRlc3QgaWQgaXMKLS8vIHNvbWUg
YXJiaXRyYXJ5IGJ1dCB1bmlxdWUgbm9uLW5lZ2F0aXZlIGludGVnZXIgYXNzaWduZWQgdG8gZWFj
aCB0ZXN0Ci0vLyBtZXRob2QuIEFzc3VtZXMgdGhhdCAwIDw9IHNoYXJkX2luZGV4IDwgdG90YWxf
c2hhcmRzLgotR1RFU1RfQVBJXyBib29sIFNob3VsZFJ1blRlc3RPblNoYXJkKAotICAgIGludCB0
b3RhbF9zaGFyZHMsIGludCBzaGFyZF9pbmRleCwgaW50IHRlc3RfaWQpOwotCi0vLyBTVEwgY29u
dGFpbmVyIHV0aWxpdGllcy4KLQotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu
IHRoZSBnaXZlbiBjb250YWluZXIgdGhhdCBzYXRpc2Z5Ci0vLyB0aGUgZ2l2ZW4gcHJlZGljYXRl
LgotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5l
IGludCBDb3VudElmKGNvbnN0IENvbnRhaW5lciYgYywgUHJlZGljYXRlIHByZWRpY2F0ZSkgewot
ICAvLyBJbXBsZW1lbnRlZCBhcyBhbiBleHBsaWNpdCBsb29wIHNpbmNlIHN0ZDo6Y291bnRfaWYo
KSBpbiBsaWJDc3RkIG9uCi0gIC8vIFNvbGFyaXMgaGFzIGEgbm9uLXN0YW5kYXJkIHNpZ25hdHVy
ZS4KLSAgaW50IGNvdW50ID0gMDsKLSAgZm9yICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gYy5iZWdpbigpOyBpdCAhPSBjLmVuZCgpOyArK2l0KSB7Ci0gICAgaWYgKHBy
ZWRpY2F0ZSgqaXQpKQotICAgICAgKytjb3VudDsKLSAgfQotICByZXR1cm4gY291bnQ7Ci19Ci0K
LS8vIEFwcGxpZXMgYSBmdW5jdGlvbi9mdW5jdG9yIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUgY29u
dGFpbmVyLgotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lciwgdHlwZW5hbWUgRnVuY3Rvcj4KLXZv
aWQgRm9yRWFjaChjb25zdCBDb250YWluZXImIGMsIEZ1bmN0b3IgZnVuY3RvcikgewotICBzdGQ6
OmZvcl9lYWNoKGMuYmVnaW4oKSwgYy5lbmQoKSwgZnVuY3Rvcik7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIGktdGggZWxlbWVudCBvZiB0aGUgdmVjdG9yLCBvciBkZWZhdWx0X3ZhbHVlIGlmIGkgaXMg
bm90Ci0vLyBpbiByYW5nZSBbMCwgdi5zaXplKCkpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEU+Ci1p
bmxpbmUgRSBHZXRFbGVtZW50T3IoY29uc3Qgc3RkOjp2ZWN0b3I8RT4mIHYsIGludCBpLCBFIGRl
ZmF1bHRfdmFsdWUpIHsKLSAgcmV0dXJuIChpIDwgMCB8fCBpID49IHN0YXRpY19jYXN0PGludD4o
di5zaXplKCkpKSA/IGRlZmF1bHRfdmFsdWUgOiB2W2ldOwotfQotCi0vLyBQZXJmb3JtcyBhbiBp
bi1wbGFjZSBzaHVmZmxlIG9mIGEgcmFuZ2Ugb2YgdGhlIHZlY3RvcidzIGVsZW1lbnRzLgotLy8g
J2JlZ2luJyBhbmQgJ2VuZCcgYXJlIGVsZW1lbnQgaW5kaWNlcyBhcyBhbiBTVEwtc3R5bGUgcmFu
Z2U7Ci0vLyBpLmUuIFtiZWdpbiwgZW5kKSBhcmUgc2h1ZmZsZWQsIHdoZXJlICdlbmQnID09IHNp
emUoKSBtZWFucyB0bwotLy8gc2h1ZmZsZSB0byB0aGUgZW5kIG9mIHRoZSB2ZWN0b3IuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRT4KLXZvaWQgU2h1ZmZsZVJhbmdlKGludGVybmFsOjpSYW5kb20qIHJh
bmRvbSwgaW50IGJlZ2luLCBpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
RT4qIHYpIHsKLSAgY29uc3QgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHYtPnNpemUoKSk7
Ci0gIEdURVNUX0NIRUNLXygwIDw9IGJlZ2luICYmIGJlZ2luIDw9IHNpemUpCi0gICAgICA8PCAi
SW52YWxpZCBzaHVmZmxlIHJhbmdlIHN0YXJ0ICIgPDwgYmVnaW4gPDwgIjogbXVzdCBiZSBpbiBy
YW5nZSBbMCwgIgotICAgICAgPDwgc2l6ZSA8PCAiXS4iOwotICBHVEVTVF9DSEVDS18oYmVnaW4g
PD0gZW5kICYmIGVuZCA8PSBzaXplKQotICAgICAgPDwgIkludmFsaWQgc2h1ZmZsZSByYW5nZSBm
aW5pc2ggIiA8PCBlbmQgPDwgIjogbXVzdCBiZSBpbiByYW5nZSBbIgotICAgICAgPDwgYmVnaW4g
PDwgIiwgIiA8PCBzaXplIDw8ICJdLiI7Ci0KLSAgLy8gRmlzaGVyLVlhdGVzIHNodWZmbGUsIGZy
b20KLSAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1ZmZs
ZQotICBmb3IgKGludCByYW5nZV93aWR0aCA9IGVuZCAtIGJlZ2luOyByYW5nZV93aWR0aCA+PSAy
OyByYW5nZV93aWR0aC0tKSB7Ci0gICAgY29uc3QgaW50IGxhc3RfaW5fcmFuZ2UgPSBiZWdpbiAr
IHJhbmdlX3dpZHRoIC0gMTsKLSAgICBjb25zdCBpbnQgc2VsZWN0ZWQgPSBiZWdpbiArIHJhbmRv
bS0+R2VuZXJhdGUocmFuZ2Vfd2lkdGgpOwotICAgIHN0ZDo6c3dhcCgoKnYpW3NlbGVjdGVkXSwg
KCp2KVtsYXN0X2luX3JhbmdlXSk7Ci0gIH0KLX0KLQotLy8gUGVyZm9ybXMgYW4gaW4tcGxhY2Ug
c2h1ZmZsZSBvZiB0aGUgdmVjdG9yJ3MgZWxlbWVudHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4K
LWlubGluZSB2b2lkIFNodWZmbGUoaW50ZXJuYWw6OlJhbmRvbSogcmFuZG9tLCBzdGQ6OnZlY3Rv
cjxFPiogdikgewotICBTaHVmZmxlUmFuZ2UocmFuZG9tLCAwLCBzdGF0aWNfY2FzdDxpbnQ+KHYt
PnNpemUoKSksIHYpOwotfQotCi0vLyBBIGZ1bmN0aW9uIGZvciBkZWxldGluZyBhbiBvYmplY3Qu
ICBIYW5keSBmb3IgYmVpbmcgdXNlZCBhcyBhCi0vLyBmdW5jdG9yLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1zdGF0aWMgdm9pZCBEZWxldGUoVCogeCkgewotICBkZWxldGUgeDsKLX0KLQotLy8g
QSBwcmVkaWNhdGUgdGhhdCBjaGVja3MgdGhlIGtleSBvZiBhIFRlc3RQcm9wZXJ0eSBhZ2FpbnN0
IGEga25vd24ga2V5LgotLy8KLS8vIFRlc3RQcm9wZXJ0eUtleUlzIGlzIGNvcHlhYmxlLgotY2xh
c3MgVGVzdFByb3BlcnR5S2V5SXMgewotIHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0b3IuCi0gIC8v
Ci0gIC8vIFRlc3RQcm9wZXJ0eUtleUlzIGhhcyBOTyBkZWZhdWx0IGNvbnN0cnVjdG9yLgotICBl
eHBsaWNpdCBUZXN0UHJvcGVydHlLZXlJcyhjb25zdCBzdGQ6OnN0cmluZyYga2V5KSA6IGtleV8o
a2V5KSB7fQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0IHBy
b3BlcnR5IG1hdGNoZXMgb24ga2V5Xy4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RQcm9w
ZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgY29uc3QgewotICAgIHJldHVybiB0ZXN0X3Byb3BlcnR5Lmtl
eSgpID09IGtleV87Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIGtleV87Ci19Owot
Ci0vLyBDbGFzcyBVbml0VGVzdE9wdGlvbnMuCi0vLwotLy8gVGhpcyBjbGFzcyBjb250YWlucyBm
dW5jdGlvbnMgZm9yIHByb2Nlc3Npbmcgb3B0aW9ucyB0aGUgdXNlcgotLy8gc3BlY2lmaWVzIHdo
ZW4gcnVubmluZyB0aGUgdGVzdHMuICBJdCBoYXMgb25seSBzdGF0aWMgbWVtYmVycy4KLS8vCi0v
LyBJbiBtb3N0IGNhc2VzLCB0aGUgdXNlciBjYW4gc3BlY2lmeSBhbiBvcHRpb24gdXNpbmcgZWl0
aGVyIGFuCi0vLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBhIGNvbW1hbmQgbGluZSBmbGFnLiAg
RS5nLiB5b3UgY2FuIHNldCB0aGUKLS8vIHRlc3QgZmlsdGVyIHVzaW5nIGVpdGhlciBHVEVTVF9G
SUxURVIgb3IgLS1ndGVzdF9maWx0ZXIuICBJZiBib3RoCi0vLyB0aGUgdmFyaWFibGUgYW5kIHRo
ZSBmbGFnIGFyZSBwcmVzZW50LCB0aGUgbGF0dGVyIG92ZXJyaWRlcyB0aGUKLS8vIGZvcm1lci4K
LWNsYXNzIEdURVNUX0FQSV8gVW5pdFRlc3RPcHRpb25zIHsKLSBwdWJsaWM6Ci0gIC8vIEZ1bmN0
aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3Rfb3V0cHV0IGZsYWcuCi0KLSAgLy8gUmV0dXJu
cyB0aGUgb3V0cHV0IGZvcm1hdCwgb3IgIiIgZm9yIG5vcm1hbCBwcmludGVkIG91dHB1dC4KLSAg
c3RhdGljIHN0ZDo6c3RyaW5nIEdldE91dHB1dEZvcm1hdCgpOwotCi0gIC8vIFJldHVybnMgdGhl
IGFic29sdXRlIHBhdGggb2YgdGhlIHJlcXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlCi0gIC8v
IGRlZmF1bHQgKHRlc3RfZGV0YWlsLnhtbCBpbiB0aGUgb3JpZ2luYWwgd29ya2luZyBkaXJlY3Rv
cnkpIGlmCi0gIC8vIG5vbmUgd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgotICBzdGF0aWMgc3Rk
OjpzdHJpbmcgR2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0KLSAgLy8gRnVuY3Rpb25z
IGZvciBwcm9jZXNzaW5nIHRoZSBndGVzdF9maWx0ZXIgZmxhZy4KLQotICAvLyBSZXR1cm5zIHRy
dWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQotICAv
LyBmaXJzdCAnOicgb3IgJ1wwJyBjaGFyYWN0ZXIgaW4gcGF0dGVybiBtYXJrcyB0aGUgZW5kIG9m
IGl0LgotICAvLwotICAvLyBUaGlzIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaXNuJ3QgdmVyeSBlZmZp
Y2llbnQsIGJ1dCBpcyBjbGVhciBhbmQKLSAgLy8gd29ya3Mgd2VsbCBlbm91Z2ggZm9yIG1hdGNo
aW5nIHRlc3QgbmFtZXMsIHdoaWNoIGFyZSBzaG9ydC4KLSAgc3RhdGljIGJvb2wgUGF0dGVybk1h
dGNoZXNTdHJpbmcoY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyKTsKLQotICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgbWF0Y2hlcyB0aGUg
dGVzdCBjYXNlCi0gIC8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi0gIHN0YXRpYyBib29sIEZp
bHRlck1hdGNoZXNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X2Nhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSk7
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIEZ1bmN0aW9uIGZvciBzdXBwb3J0aW5nIHRo
ZSBndGVzdF9jYXRjaF9leGNlcHRpb24gZmxhZy4KLQotICAvLyBSZXR1cm5zIEVYQ0VQVElPTl9F
WEVDVVRFX0hBTkRMRVIgaWYgR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSB0aGUKLSAgLy8gZ2l2
ZW4gU0VIIGV4Y2VwdGlvbiwgb3IgRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSCBvdGhlcndpc2Uu
Ci0gIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIGFzIGFuIF9fZXhjZXB0IGNvbmRpdGlvbi4K
LSAgc3RhdGljIGludCBHVGVzdFNob3VsZFByb2Nlc3NTRUgoRFdPUkQgZXhjZXB0aW9uX2NvZGUp
OwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgLy8gUmV0dXJucyB0cnVlIGlmICJu
YW1lIiBtYXRjaGVzIHRoZSAnOicgc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYi1zdHlsZQotICAvLyBm
aWx0ZXJzIGluICJmaWx0ZXIiLgotICBzdGF0aWMgYm9vbCBNYXRjaGVzRmlsdGVyKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBjaGFyKiBmaWx0ZXIpOwotfTsKLQotLy8gUmV0dXJucyB0
aGUgY3VycmVudCBhcHBsaWNhdGlvbidzIG5hbWUsIHJlbW92aW5nIGRpcmVjdG9yeSBwYXRoIGlm
IHRoYXQKLS8vIGlzIHByZXNlbnQuICBVc2VkIGJ5IFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0
RmlsZS4KLUdURVNUX0FQSV8gRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCk7Ci0K
LS8vIFRoZSByb2xlIGludGVyZmFjZSBmb3IgZ2V0dGluZyB0aGUgT1Mgc3RhY2sgdHJhY2UgYXMg
YSBzdHJpbmcuCi1jbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UgewotIHB1YmxpYzoK
LSAgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlKCkge30KLSAgdmlydHVhbCB+T3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlKCkge30KLQotICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IE9TIHN0
YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLiAgUGFyYW1ldGVyczoKLSAgLy8KLSAgLy8gICBt
YXhfZGVwdGggIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNs
dWRlZAotICAvLyAgICAgICAgICAgICAgICBpbiB0aGUgdHJhY2UuCi0gIC8vICAgc2tpcF9jb3Vu
dCAtIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkOyBkb2Vzbid0IGNvdW50
Ci0gIC8vICAgICAgICAgICAgICAgIGFnYWluc3QgbWF4X2RlcHRoLgotICB2aXJ0dWFsIHN0ZDo6
c3RyaW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KSA9
IDA7Ci0KLSAgLy8gVXBvbkxlYXZpbmdHVGVzdCgpIHNob3VsZCBiZSBjYWxsZWQgaW1tZWRpYXRl
bHkgYmVmb3JlIEdvb2dsZSBUZXN0IGNhbGxzCi0gIC8vIHVzZXIgY29kZS4gSXQgc2F2ZXMgc29t
ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBzdGFjayB0aGF0Ci0gIC8vIEN1cnJlbnRT
dGFja1RyYWNlKCkgd2lsbCB1c2UgdG8gZmluZCBhbmQgaGlkZSBHb29nbGUgVGVzdCBzdGFjayBm
cmFtZXMuCi0gIHZpcnR1YWwgdm9pZCBVcG9uTGVhdmluZ0dUZXN0KCkgPSAwOwotCi0gIC8vIFRo
aXMgc3RyaW5nIGlzIGluc2VydGVkIGluIHBsYWNlIG9mIHN0YWNrIGZyYW1lcyB0aGF0IGFyZSBw
YXJ0IG9mCi0gIC8vIEdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRpb24uCi0gIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBrRWxpZGVkRnJhbWVzTWFya2VyOwotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UpOwot
fTsKLQotLy8gQSB3b3JraW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBPc1N0YWNrVHJhY2VHZXR0
ZXJJbnRlcmZhY2UgaW50ZXJmYWNlLgotY2xhc3MgT3NTdGFja1RyYWNlR2V0dGVyIDogcHVibGlj
IE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICBPc1N0YWNrVHJhY2VH
ZXR0ZXIoKSB7fQotCi0gIHZpcnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50
IG1heF9kZXB0aCwgaW50IHNraXBfY291bnQpOwotICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdH
VGVzdCgpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhP
c1N0YWNrVHJhY2VHZXR0ZXIpOwotfTsKLQotLy8gSW5mb3JtYXRpb24gYWJvdXQgYSBHb29nbGUg
VGVzdCB0cmFjZSBwb2ludC4KLXN0cnVjdCBUcmFjZUluZm8gewotICBjb25zdCBjaGFyKiBmaWxl
OwotICBpbnQgbGluZTsKLSAgc3RkOjpzdHJpbmcgbWVzc2FnZTsKLX07Ci0KLS8vIFRoaXMgaXMg
dGhlIGRlZmF1bHQgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbiBVbml0
VGVzdEltcGwuCi0vLyBUaGlzIGNsYXNzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgVW5pdFRlc3RJ
bXBsLgotY2xhc3MgRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKLSAgOiBwdWJs
aWMgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcihVbml0VGVzdEltcGwqIHVuaXRf
dGVzdCk7Ci0gIC8vIEltcGxlbWVudHMgdGhlIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZh
Y2UuIFJlcG9ydHMgdGhlIHRlc3QgcGFydAotICAvLyByZXN1bHQgaW4gdGhlIGN1cnJlbnQgdGVz
dC4KLSAgdmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVz
dWx0JiByZXN1bHQpOwotCi0gcHJpdmF0ZToKLSAgVW5pdFRlc3RJbXBsKiBjb25zdCB1bml0X3Rl
c3RfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdEdsb2JhbFRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXIpOwotfTsKLQotLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBwZXIg
dGhyZWFkIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBpbgotLy8gVW5pdFRlc3RJbXBs
LiBUaGlzIGNsYXNzIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgVW5pdFRlc3RJbXBsLgotY2xhc3Mg
RGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKLSAgICA6IHB1YmxpYyBUZXN0
UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IERlZmF1
bHRQZXJUaHJlYWRUZXN0UGFydFJlc3VsdFJlcG9ydGVyKFVuaXRUZXN0SW1wbCogdW5pdF90ZXN0
KTsKLSAgLy8gSW1wbGVtZW50cyB0aGUgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZS4g
VGhlIGltcGxlbWVudGF0aW9uIGp1c3QKLSAgLy8gZGVsZWdhdGVzIHRvIHRoZSBjdXJyZW50IGds
b2JhbCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIG9mICp1bml0X3Rlc3RfLgotICB2aXJ0dWFs
IHZvaWQgUmVwb3J0VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7
Ci0KLSBwcml2YXRlOgotICBVbml0VGVzdEltcGwqIGNvbnN0IHVuaXRfdGVzdF87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhEZWZhdWx0UGVyVGhyZWFkVGVzdFBhcnRSZXN1
bHRSZXBvcnRlcik7Ci19OwotCi0vLyBUaGUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
VW5pdFRlc3QgY2xhc3MuICBXZSBkb24ndCBwcm90ZWN0Ci0vLyB0aGUgbWV0aG9kcyB1bmRlciBh
IG11dGV4LCBhcyB0aGlzIGNsYXNzIGlzIG5vdCBhY2Nlc3NpYmxlIGJ5IGEKLS8vIHVzZXIgYW5k
IHRoZSBVbml0VGVzdCBjbGFzcyB0aGF0IGRlbGVnYXRlcyB3b3JrIHRvIHRoaXMgY2xhc3MgZG9l
cwotLy8gcHJvcGVyIGxvY2tpbmcuCi1jbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0SW1wbCB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCk7Ci0gIHZp
cnR1YWwgflVuaXRUZXN0SW1wbCgpOwotCi0gIC8vIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHdh
eXMgdG8gcmVnaXN0ZXIgeW91ciBvd24gVGVzdFBhcnRSZXN1bHRSZXBvcnRlci4KLSAgLy8gWW91
IGNhbiByZWdpc3RlciB5b3VyIG93biByZXBvdGVyIHRvIGxpc3RlbiBlaXRoZXIgb25seSBmb3Ig
dGVzdCByZXN1bHRzCi0gIC8vIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkIG9yIGZvciByZXN1bHRz
IGZyb20gYWxsIHRocmVhZHMuCi0gIC8vIEJ5IGRlZmF1bHQsIGVhY2ggcGVyLXRocmVhZCB0ZXN0
IHJlc3VsdCByZXBvdGVyIGp1c3QgcGFzc2VzIGEgbmV3Ci0gIC8vIFRlc3RQYXJ0UmVzdWx0IHRv
IHRoZSBnbG9iYWwgdGVzdCByZXN1bHQgcmVwb3J0ZXIsIHdoaWNoIHJlZ2lzdGVycyB0aGUKLSAg
Ly8gdGVzdCBwYXJ0IHJlc3VsdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCi0KLSAg
Ly8gUmV0dXJucyB0aGUgZ2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCi0gIFRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIEdldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXIoKTsKLQotICAvLyBTZXRzIHRoZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlci4K
LSAgdm9pZCBTZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKAotICAgICAgVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlckludGVyZmFjZSogcmVwb3J0ZXIpOwotCi0gIC8vIFJldHVybnMgdGhlIHRl
c3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KLSAgVGVzdFBh
cnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSogR2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1
cnJlbnRUaHJlYWQoKTsKLQotICAvLyBTZXRzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVy
IGZvciB0aGUgY3VycmVudCB0aHJlYWQuCi0gIHZvaWQgU2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRl
ckZvckN1cnJlbnRUaHJlYWQoCi0gICAgICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNl
KiByZXBvcnRlcik7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdCBj
YXNlcy4KLSAgaW50IHN1Y2Nlc3NmdWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0IGNhc2VzLgotICBpbnQgZmFpbGVkX3Rlc3Rf
Y2FzZV9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBj
YXNlcy4KLSAgaW50IHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdCBjYXNlcyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRl
c3QKLSAgLy8gdGhhdCBzaG91bGQgcnVuLgotICBpbnQgdGVzdF9jYXNlX3RvX3J1bl9jb3VudCgp
IGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzLgotICBp
bnQgc3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIGZhaWxlZCB0ZXN0cy4KLSAgaW50IGZhaWxlZF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHRoYXQgd2lsbCBiZSByZXBvcnRl
ZCBpbiB0aGUgWE1MIHJlcG9ydC4KLSAgaW50IHJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cy4KLSAg
aW50IGRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIg
b2YgdGVzdHMgdG8gYmUgcHJpbnRlZCBpbiB0aGUgWE1MIHJlcG9ydC4KLSAgaW50IHJlcG9ydGFi
bGVfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVz
dHMuCi0gIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVt
YmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KLSAgaW50IHRlc3RfdG9fcnVuX2NvdW50KCkg
Y29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgdGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBp
biBtcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKLSAgLy8gVU5JWCBlcG9jaC4KLSAgVGltZUluTWls
bGlzIHN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0X3RpbWVzdGFtcF87IH0K
LQotICAvLyBHZXRzIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25kcy4KLSAgVGltZUlu
TWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRfdGltZV87IH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgcGFzc2VkIChpLmUuIGFsbCB0ZXN0
IGNhc2VzIHBhc3NlZCkuCi0gIGJvb2wgUGFzc2VkKCkgY29uc3QgeyByZXR1cm4gIUZhaWxlZCgp
OyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdW5pdCB0ZXN0IGZhaWxlZCAoaS5lLiBz
b21lIHRlc3QgY2FzZSBmYWlsZWQKLSAgLy8gb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgYWxsIHRl
c3RzIGZhaWxlZCkuCi0gIGJvb2wgRmFpbGVkKCkgY29uc3QgewotICAgIHJldHVybiBmYWlsZWRf
dGVzdF9jYXNlX2NvdW50KCkgPiAwIHx8IGFkX2hvY190ZXN0X3Jlc3VsdCgpLT5GYWlsZWQoKTsK
LSAgfQotCi0gIC8vIEdldHMgdGhlIGktdGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBj
YXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCi0gIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgp
IC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgotICBjb25zdCBU
ZXN0Q2FzZSogR2V0VGVzdENhc2UoaW50IGkpIGNvbnN0IHsKLSAgICBjb25zdCBpbnQgaW5kZXgg
PSBHZXRFbGVtZW50T3IodGVzdF9jYXNlX2luZGljZXNfLCBpLCAtMSk7Ci0gICAgcmV0dXJuIGlu
ZGV4IDwgMCA/IE5VTEwgOiB0ZXN0X2Nhc2VzX1tpXTsKLSAgfQotCi0gIC8vIEdldHMgdGhlIGkt
dGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAw
IHRvCi0gIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhh
dCByYW5nZSwgcmV0dXJucyBOVUxMLgotICBUZXN0Q2FzZSogR2V0TXV0YWJsZVRlc3RDYXNlKGlu
dCBpKSB7Ci0gICAgY29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVudE9yKHRlc3RfY2FzZV9pbmRp
Y2VzXywgaSwgLTEpOwotICAgIHJldHVybiBpbmRleCA8IDAgPyBOVUxMIDogdGVzdF9jYXNlc19b
aW5kZXhdOwotICB9Ci0KLSAgLy8gUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBldmVudCBsaXN0ZW5l
ciBsaXN0LgotICBUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycygpIHsgcmV0dXJuICZsaXN0
ZW5lcnNfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIHRlc3QgdGhh
dCdzIGN1cnJlbnRseSBydW5uaW5nLCBvcgotICAvLyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIGFk
IGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLSAgVGVzdFJlc3VsdCogY3VycmVudF90
ZXN0X3Jlc3VsdCgpOwotCi0gIC8vIFJldHVybnMgdGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBo
b2MgdGVzdC4KLSAgY29uc3QgVGVzdFJlc3VsdCogYWRfaG9jX3Rlc3RfcmVzdWx0KCkgY29uc3Qg
eyByZXR1cm4gJmFkX2hvY190ZXN0X3Jlc3VsdF87IH0KLQotICAvLyBTZXRzIHRoZSBPUyBzdGFj
ayB0cmFjZSBnZXR0ZXIuCi0gIC8vCi0gIC8vIERvZXMgbm90aGluZyBpZiB0aGUgaW5wdXQgYW5k
IHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGdldHRlcgotICAvLyBhcmUgdGhlIHNhbWU7IG90
aGVyd2lzZSwgZGVsZXRlcyB0aGUgb2xkIGdldHRlciBhbmQgbWFrZXMgdGhlCi0gIC8vIGlucHV0
IHRoZSBjdXJyZW50IGdldHRlci4KLSAgdm9pZCBzZXRfb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKE9z
U3RhY2tUcmFjZUdldHRlckludGVyZmFjZSogZ2V0dGVyKTsKLQotICAvLyBSZXR1cm5zIHRoZSBj
dXJyZW50IE9TIHN0YWNrIHRyYWNlIGdldHRlciBpZiBpdCBpcyBub3QgTlVMTDsKLSAgLy8gb3Ro
ZXJ3aXNlLCBjcmVhdGVzIGFuIE9zU3RhY2tUcmFjZUdldHRlciwgbWFrZXMgaXQgdGhlIGN1cnJl
bnQKLSAgLy8gZ2V0dGVyLCBhbmQgcmV0dXJucyBpdC4KLSAgT3NTdGFja1RyYWNlR2V0dGVySW50
ZXJmYWNlKiBvc19zdGFja190cmFjZV9nZXR0ZXIoKTsKLQotICAvLyBSZXR1cm5zIHRoZSBjdXJy
ZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgotICAvLwotICAvLyBUaGUgbWF4
aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIGJlIGluY2x1ZGVkIGlzIHNwZWNpZmllZCBi
eQotICAvLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lwX2NvdW50
IHBhcmFtZXRlcgotICAvLyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRvIGJl
IHNraXBwZWQsIHdoaWNoIGRvZXNuJ3QKLSAgLy8gY291bnQgYWdhaW5zdCB0aGUgbnVtYmVyIG9m
IGZyYW1lcyB0byBiZSBpbmNsdWRlZC4KLSAgLy8KLSAgLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygp
IGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCi0gIC8vIEN1cnJlbnRPc1N0YWNrVHJh
Y2VFeGNlcHRUb3AoMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlCi0gIC8vIHRyYWNl
IGJ1dCBCYXIoKSBhbmQgQ3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgpIHdvbid0LgotICBz
dGQ6OnN0cmluZyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKGludCBza2lwX2NvdW50KSBH
VEVTVF9OT19JTkxJTkVfOwotCi0gIC8vIEZpbmRzIGFuZCByZXR1cm5zIGEgVGVzdENhc2Ugd2l0
aCB0aGUgZ2l2ZW4gbmFtZS4gIElmIG9uZSBkb2Vzbid0Ci0gIC8vIGV4aXN0LCBjcmVhdGVzIG9u
ZSBhbmQgcmV0dXJucyBpdC4KLSAgLy8KLSAgLy8gQXJndW1lbnRzOgotICAvLwotICAvLyAgIHRl
c3RfY2FzZV9uYW1lOiBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKLSAgLy8gICB0eXBlX3BhcmFtOiAg
ICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QncyB0eXBlIHBhcmFtZXRlciwgb3IgTlVMTCBpZgotICAv
LyAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QuCi0gIC8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0
aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCi0gIC8vICAgdGVhcl9kb3duX3RjOiAgIHBv
aW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi0gIFRl
c3RDYXNlKiBHZXRUZXN0Q2FzZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBUZXN0OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBUZXN0OjpUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMpOwotCi0g
IC8vIEFkZHMgYSBUZXN0SW5mbyB0byB0aGUgdW5pdCB0ZXN0LgotICAvLwotICAvLyBBcmd1bWVu
dHM6Ci0gIC8vCi0gIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0
aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQotICAvLyAgIHRlYXJfZG93bl90YzogcG9pbnRlciB0
byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKLSAgLy8gICB0ZXN0
X2luZm86ICAgIHRoZSBUZXN0SW5mbyBvYmplY3QKLSAgdm9pZCBBZGRUZXN0SW5mbyhUZXN0OjpT
ZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCi0gICAgICAgICAgICAgICAgICAgVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAotICAgICAgICAgICAgICAgICAgIFRlc3RJ
bmZvKiB0ZXN0X2luZm8pIHsKLSAgICAvLyBJbiBvcmRlciB0byBzdXBwb3J0IHRocmVhZC1zYWZl
IGRlYXRoIHRlc3RzLCB3ZSBuZWVkIHRvCi0gICAgLy8gcmVtZW1iZXIgdGhlIG9yaWdpbmFsIHdv
cmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIHRlc3QgcHJvZ3JhbQotICAgIC8vIHdhcyBmaXJzdCBp
bnZva2VkLiAgV2UgY2Fubm90IGRvIHRoaXMgaW4gUlVOX0FMTF9URVNUUygpLCBhcwotICAgIC8v
IHRoZSB1c2VyIG1heSBoYXZlIGNoYW5nZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGJlZm9yZSBj
YWxsaW5nCi0gICAgLy8gUlVOX0FMTF9URVNUUygpLiAgVGhlcmVmb3JlIHdlIGNhcHR1cmUgdGhl
IGN1cnJlbnQgZGlyZWN0b3J5IGluCi0gICAgLy8gQWRkVGVzdEluZm8oKSwgd2hpY2ggaXMgY2Fs
bGVkIHRvIHJlZ2lzdGVyIGEgVEVTVCBvciBURVNUX0YKLSAgICAvLyBiZWZvcmUgbWFpbigpIGlz
IHJlYWNoZWQuCi0gICAgaWYgKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5Jc0VtcHR5KCkpIHsKLSAg
ICAgIG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5TZXQoRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSk7
Ci0gICAgICBHVEVTVF9DSEVDS18oIW9yaWdpbmFsX3dvcmtpbmdfZGlyXy5Jc0VtcHR5KCkpCi0g
ICAgICAgICAgPDwgIkZhaWxlZCB0byBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnku
IjsKLSAgICB9Ci0KLSAgICBHZXRUZXN0Q2FzZSh0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCks
Ci0gICAgICAgICAgICAgICAgdGVzdF9pbmZvLT50eXBlX3BhcmFtKCksCi0gICAgICAgICAgICAg
ICAgc2V0X3VwX3RjLAotICAgICAgICAgICAgICAgIHRlYXJfZG93bl90YyktPkFkZFRlc3RJbmZv
KHRlc3RfaW5mbyk7Ci0gIH0KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFJldHVy
bnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFj
ayBvZgotICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFuZCBpbnN0YW50aWF0ZSBhbmQg
cmVnaXN0ZXIgdGhlbS4KLSAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5
JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKSB7Ci0gICAgcmV0dXJuIHBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeV87Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QK
LQotICAvLyBTZXRzIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJy
ZW50bHkgcnVubmluZy4KLSAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2Nhc2UoVGVzdENhc2UqIGFf
Y3VycmVudF90ZXN0X2Nhc2UpIHsKLSAgICBjdXJyZW50X3Rlc3RfY2FzZV8gPSBhX2N1cnJlbnRf
dGVzdF9jYXNlOwotICB9Ci0KLSAgLy8gU2V0cyB0aGUgVGVzdEluZm8gb2JqZWN0IGZvciB0aGUg
dGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcuICBJZgotICAvLyBjdXJyZW50X3Rlc3RfaW5m
byBpcyBOVUxMLCB0aGUgYXNzZXJ0aW9uIHJlc3VsdHMgd2lsbCBiZSBzdG9yZWQgaW4KLSAgLy8g
YWRfaG9jX3Rlc3RfcmVzdWx0Xy4KLSAgdm9pZCBzZXRfY3VycmVudF90ZXN0X2luZm8oVGVzdElu
Zm8qIGFfY3VycmVudF90ZXN0X2luZm8pIHsKLSAgICBjdXJyZW50X3Rlc3RfaW5mb18gPSBhX2N1
cnJlbnRfdGVzdF9pbmZvOwotICB9Ci0KLSAgLy8gUmVnaXN0ZXJzIGFsbCBwYXJhbWV0ZXJpemVk
IHRlc3RzIGRlZmluZWQgdXNpbmcgVEVTVF9QIGFuZAotICAvLyBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCwgY3JlYXRpbmcgcmVndWxhciB0ZXN0cyBmb3IgZWFjaCB0ZXN0L3BhcmFtZXRlcgotICAv
LyBjb21iaW5hdGlvbi4gVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZTsg
aXQgaGFzIGd1YXJkcwotICAvLyBwcm90ZWN0aW5nIGZyb20gcmVnaXN0ZXJpbmcgdGhlIHRlc3Rz
IG1vcmUgdGhlbiBvbmNlLiAgSWYKLSAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUg
ZGlzYWJsZWQsIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzIGlzCi0gIC8vIHByZXNlbnQgYnV0
IGRvZXMgbm90aGluZy4KLSAgdm9pZCBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpOwotCi0g
IC8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJl
c3VsdCwgYW5kCi0gIC8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgdGVzdHMgYXJlIHN1Y2Nlc3NmdWwu
ICBJZiBhbnkgZXhjZXB0aW9uIGlzCi0gIC8vIHRocm93biBkdXJpbmcgYSB0ZXN0LCB0aGlzIHRl
c3QgaXMgY29uc2lkZXJlZCB0byBiZSBmYWlsZWQsIGJ1dAotICAvLyB0aGUgcmVzdCBvZiB0aGUg
dGVzdHMgd2lsbCBzdGlsbCBiZSBydW4uCi0gIGJvb2wgUnVuQWxsVGVzdHMoKTsKLQotICAvLyBD
bGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzLCBleGNlcHQgdGhlIGFkIGhvYyB0ZXN0cy4K
LSAgdm9pZCBDbGVhck5vbkFkSG9jVGVzdFJlc3VsdCgpIHsKLSAgICBGb3JFYWNoKHRlc3RfY2Fz
ZXNfLCBUZXN0Q2FzZTo6Q2xlYXJUZXN0Q2FzZVJlc3VsdCk7Ci0gIH0KLQotICAvLyBDbGVhcnMg
dGhlIHJlc3VsdHMgb2YgYWQtaG9jIHRlc3QgYXNzZXJ0aW9ucy4KLSAgdm9pZCBDbGVhckFkSG9j
VGVzdFJlc3VsdCgpIHsKLSAgICBhZF9ob2NfdGVzdF9yZXN1bHRfLkNsZWFyKCk7Ci0gIH0KLQot
ICAvLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
IHdoZW4gaW52b2tlZCBpbiBhCi0gIC8vIGNvbnRleHQgb2YgYSB0ZXN0IG9yIGEgdGVzdCBjYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldC4gSWYgdGhlCi0gIC8vIHJlc3VsdCBhbHJl
YWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxs
IGJlCi0gIC8vIHVwZGF0ZWQuCi0gIHZvaWQgUmVjb3JkUHJvcGVydHkoY29uc3QgVGVzdFByb3Bl
cnR5JiB0ZXN0X3Byb3BlcnR5KTsKLQotICBlbnVtIFJlYWN0aW9uVG9TaGFyZGluZyB7Ci0gICAg
SE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsCi0gICAgSUdOT1JFX1NIQVJESU5HX1BST1RPQ09MCi0g
IH07Ci0KLSAgLy8gTWF0Y2hlcyB0aGUgZnVsbCBuYW1lIG9mIGVhY2ggdGVzdCBhZ2FpbnN0IHRo
ZSB1c2VyLXNwZWNpZmllZAotICAvLyBmaWx0ZXIgdG8gZGVjaWRlIHdoZXRoZXIgdGhlIHRlc3Qg
c2hvdWxkIHJ1biwgdGhlbiByZWNvcmRzIHRoZQotICAvLyByZXN1bHQgaW4gZWFjaCBUZXN0Q2Fz
ZSBhbmQgVGVzdEluZm8gb2JqZWN0LgotICAvLyBJZiBzaGFyZF90ZXN0cyA9PSBIT05PUl9TSEFS
RElOR19QUk9UT0NPTCwgZnVydGhlciBmaWx0ZXJzIHRlc3RzCi0gIC8vIGJhc2VkIG9uIHNoYXJk
aW5nIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQuCi0gIC8vIFJldHVybnMgdGhlIG51bWJl
ciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCi0gIGludCBGaWx0ZXJUZXN0cyhSZWFjdGlvblRv
U2hhcmRpbmcgc2hhcmRfdGVzdHMpOwotCi0gIC8vIFByaW50cyB0aGUgbmFtZXMgb2YgdGhlIHRl
c3RzIG1hdGNoaW5nIHRoZSB1c2VyLXNwZWNpZmllZCBmaWx0ZXIgZmxhZy4KLSAgdm9pZCBMaXN0
VGVzdHNNYXRjaGluZ0ZpbHRlcigpOwotCi0gIGNvbnN0IFRlc3RDYXNlKiBjdXJyZW50X3Rlc3Rf
Y2FzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdGVzdF9jYXNlXzsgfQotICBUZXN0SW5mbyog
Y3VycmVudF90ZXN0X2luZm8oKSB7IHJldHVybiBjdXJyZW50X3Rlc3RfaW5mb187IH0KLSAgY29u
c3QgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgY29uc3QgeyByZXR1cm4gY3VycmVudF90
ZXN0X2luZm9fOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdmVjdG9yIG9mIGVudmlyb25tZW50cyB0
aGF0IG5lZWQgdG8gYmUgc2V0LXVwL3Rvcm4tZG93bgotICAvLyBiZWZvcmUvYWZ0ZXIgdGhlIHRl
c3RzIGFyZSBydW4uCi0gIHN0ZDo6dmVjdG9yPEVudmlyb25tZW50Kj4mIGVudmlyb25tZW50cygp
IHsgcmV0dXJuIGVudmlyb25tZW50c187IH0KLQotICAvLyBHZXR0ZXJzIGZvciB0aGUgcGVyLXRo
cmVhZCBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLSAgc3RkOjp2ZWN0b3I8VHJhY2VJbmZvPiYg
Z3Rlc3RfdHJhY2Vfc3RhY2soKSB7Ci0gICAgcmV0dXJuICooZ3Rlc3RfdHJhY2Vfc3RhY2tfLnBv
aW50ZXIoKSk7Ci0gIH0KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VHJhY2VJbmZvPiYgZ3Rlc3RfdHJh
Y2Vfc3RhY2soKSBjb25zdCB7Ci0gICAgcmV0dXJuIGd0ZXN0X3RyYWNlX3N0YWNrXy5nZXQoKTsK
LSAgfQotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgdm9pZCBJbml0RGVhdGhUZXN0U3Vi
cHJvY2Vzc0NvbnRyb2xJbmZvKCkgewotICAgIGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdf
LnJlc2V0KFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCkpOwotICB9Ci0gIC8vIFJldHVy
bnMgYSBwb2ludGVyIHRvIHRoZSBwYXJzZWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVz
dAotICAvLyBmbGFnLCBvciBOVUxMIGlmIHRoYXQgZmxhZyB3YXMgbm90IHNwZWNpZmllZC4KLSAg
Ly8gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgb25seSBpbiBhIGRlYXRoIHRlc3QgY2hpbGQg
cHJvY2Vzcy4KLSAgLy8gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBhIGNhbGwgdG8gSW5pdEdv
b2dsZVRlc3QuCi0gIGNvbnN0IEludGVybmFsUnVuRGVhdGhUZXN0RmxhZyogaW50ZXJuYWxfcnVu
X2RlYXRoX3Rlc3RfZmxhZygpIGNvbnN0IHsKLSAgICByZXR1cm4gaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3RfZmxhZ18uZ2V0KCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg
Y3VycmVudCBkZWF0aCB0ZXN0IGZhY3RvcnkuCi0gIGludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5
KiBkZWF0aF90ZXN0X2ZhY3RvcnkoKSB7Ci0gICAgcmV0dXJuIGRlYXRoX3Rlc3RfZmFjdG9yeV8u
Z2V0KCk7Ci0gIH0KLQotICB2b2lkIFN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCk7
Ci0KLSAgZnJpZW5kIGNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5OwotI2VuZGlmICAvLyBH
VEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIC8vIEluaXRpYWxpemVzIHRoZSBldmVudCBsaXN0ZW5l
ciBwZXJmb3JtaW5nIFhNTCBvdXRwdXQgYXMgc3BlY2lmaWVkIGJ5Ci0gIC8vIFVuaXRUZXN0T3B0
aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KLSAgdm9pZCBD
b25maWd1cmVYbWxPdXRwdXQoKTsKLQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLSAg
Ly8gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1
bHRzIHRvIGEgc29ja2V0LgotICAvLyBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29n
bGVUZXN0LgotICB2b2lkIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOwotI2VuZGlmCi0KLSAg
Ly8gUGVyZm9ybXMgaW5pdGlhbGl6YXRpb24gZGVwZW5kZW50IHVwb24gZmxhZyB2YWx1ZXMgb2J0
YWluZWQgaW4KLSAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSXMgY2FsbGVkIGZyb20g
SW5pdEdvb2dsZVRlc3QgYWZ0ZXIgdGhlIGNhbGwgdG8KLSAgLy8gUGFyc2VHb29nbGVUZXN0Rmxh
Z3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdAot
ICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIGZyb20gUnVuQWxsVGVzdHMuICBTaW5j
ZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZQotICAvLyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGl0IGhh
cyB0byBiZSBpZGVtcG90ZW50LgotICB2b2lkIFBvc3RGbGFnUGFyc2luZ0luaXQoKTsKLQotICAv
LyBHZXRzIHRoZSByYW5kb20gc2VlZCB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCB0
ZXN0IGl0ZXJhdGlvbi4KLSAgaW50IHJhbmRvbV9zZWVkKCkgY29uc3QgeyByZXR1cm4gcmFuZG9t
X3NlZWRfOyB9Ci0KLSAgLy8gR2V0cyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCi0gIGlu
dGVybmFsOjpSYW5kb20qIHJhbmRvbSgpIHsgcmV0dXJuICZyYW5kb21fOyB9Ci0KLSAgLy8gU2h1
ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2ggdGVzdCBjYXNl
LAotICAvLyBtYWtpbmcgc3VyZSB0aGF0IGRlYXRoIHRlc3RzIGFyZSBzdGlsbCBydW4gZmlyc3Qu
Ci0gIHZvaWQgU2h1ZmZsZVRlc3RzKCk7Ci0KLSAgLy8gUmVzdG9yZXMgdGhlIHRlc3QgY2FzZXMg
YW5kIHRlc3RzIHRvIHRoZWlyIG9yZGVyIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KLSAgdm9p
ZCBVbnNodWZmbGVUZXN0cygpOwotCi0gIC8vIFJldHVybnMgdGhlIHZhbHVlIG9mIEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudAotICAvLyBVbml0VGVzdDo6UnVuKCkg
c3RhcnRzLgotICBib29sIGNhdGNoX2V4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBjYXRjaF9l
eGNlcHRpb25zXzsgfQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIDo6dGVzdGluZzo6VW5p
dFRlc3Q7Ci0KLSAgLy8gVXNlZCBieSBVbml0VGVzdDo6UnVuKCkgdG8gY2FwdHVyZSB0aGUgc3Rh
dGUgb2YKLSAgLy8gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSBhdCB0aGUgbW9tZW50IGl0
IHN0YXJ0cy4KLSAgdm9pZCBzZXRfY2F0Y2hfZXhjZXB0aW9ucyhib29sIHZhbHVlKSB7IGNhdGNo
X2V4Y2VwdGlvbnNfID0gdmFsdWU7IH0KLQotICAvLyBUaGUgVW5pdFRlc3Qgb2JqZWN0IHRoYXQg
b3ducyB0aGlzIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAgVW5pdFRlc3QqIGNvbnN0IHBhcmVu
dF87Ci0KLSAgLy8gVGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0IFRFU1QoKSBv
ciBURVNUX0YoKSB3YXMKLSAgLy8gZXhlY3V0ZWQuCi0gIGludGVybmFsOjpGaWxlUGF0aCBvcmln
aW5hbF93b3JraW5nX2Rpcl87Ci0KLSAgLy8gVGhlIGRlZmF1bHQgdGVzdCBwYXJ0IHJlc3VsdCBy
ZXBvcnRlcnMuCi0gIERlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyIGRlZmF1bHRf
Z2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfOwotICBEZWZhdWx0UGVyVGhyZWFkVGVz
dFBhcnRSZXN1bHRSZXBvcnRlcgotICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfOwotCi0gIC8vIFBvaW50cyB0byAoYnV0IGRvZXNuJ3Qgb3duKSB0aGUg
Z2xvYmFsIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCi0gIFRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXJJbnRlcmZhY2UqIGdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfOwotCi0gIC8vIFBy
b3RlY3RzIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9y
ZXBvcnRlcl8uCi0gIGludGVybmFsOjpNdXRleCBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBv
cnRlcl9tdXRleF87Ci0KLSAgLy8gUG9pbnRzIHRvIChidXQgZG9lc24ndCBvd24pIHRoZSBwZXIt
dGhyZWFkIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCi0gIGludGVybmFsOjpUaHJlYWRMb2Nh
bDxUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKj4KLSAgICAgIHBlcl90aHJlYWRfdGVz
dF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl87Ci0KLSAgLy8gVGhlIHZlY3RvciBvZiBlbnZpcm9ubWVu
dHMgdGhhdCBuZWVkIHRvIGJlIHNldC11cC90b3JuLWRvd24KLSAgLy8gYmVmb3JlL2FmdGVyIHRo
ZSB0ZXN0cyBhcmUgcnVuLgotICBzdGQ6OnZlY3RvcjxFbnZpcm9ubWVudCo+IGVudmlyb25tZW50
c187Ci0KLSAgLy8gVGhlIHZlY3RvciBvZiBUZXN0Q2FzZXMgaW4gdGhlaXIgb3JpZ2luYWwgb3Jk
ZXIuICBJdCBvd25zIHRoZQotICAvLyBlbGVtZW50cyBpbiB0aGUgdmVjdG9yLgotICBzdGQ6OnZl
Y3RvcjxUZXN0Q2FzZSo+IHRlc3RfY2FzZXNfOwotCi0gIC8vIFByb3ZpZGVzIGEgbGV2ZWwgb2Yg
aW5kaXJlY3Rpb24gZm9yIHRoZSB0ZXN0IGNhc2UgbGlzdCB0byBhbGxvdwotICAvLyBlYXN5IHNo
dWZmbGluZyBhbmQgcmVzdG9yaW5nIHRoZSB0ZXN0IGNhc2Ugb3JkZXIuICBUaGUgaS10aAotICAv
LyBlbGVtZW50IG9mIHRoaXMgdmVjdG9yIGlzIHRoZSBpbmRleCBvZiB0aGUgaS10aCB0ZXN0IGNh
c2UgaW4gdGhlCi0gIC8vIHNodWZmbGVkIG9yZGVyLgotICBzdGQ6OnZlY3RvcjxpbnQ+IHRlc3Rf
Y2FzZV9pbmRpY2VzXzsKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFBhcmFtZXRl
cml6ZWRUZXN0UmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8gcmVnaXN0ZXIgdmFsdWUtcGFyYW1ldGVy
aXplZAotICAvLyB0ZXN0cy4KLSAgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lz
dHJ5IHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV87Ci0KLSAgLy8gSW5kaWNhdGVzIHdoZXRo
ZXIgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKSBoYXMgYmVlbiBjYWxsZWQgYWxyZWFkeS4K
LSAgYm9vbCBwYXJhbWV0ZXJpemVkX3Rlc3RzX3JlZ2lzdGVyZWRfOwotI2VuZGlmICAvLyBHVEVT
VF9IQVNfUEFSQU1fVEVTVAotCi0gIC8vIEluZGV4IG9mIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2Fz
ZSByZWdpc3RlcmVkLiAgSW5pdGlhbGx5IC0xLgotICBpbnQgbGFzdF9kZWF0aF90ZXN0X2Nhc2Vf
OwotCi0gIC8vIFRoaXMgcG9pbnRzIHRvIHRoZSBUZXN0Q2FzZSBmb3IgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QuICBJdAotICAvLyBjaGFuZ2VzIGFzIEdvb2dsZSBUZXN0IGdvZXMgdGhyb3Vn
aCBvbmUgdGVzdCBjYXNlIGFmdGVyIGFub3RoZXIuCi0gIC8vIFdoZW4gbm8gdGVzdCBpcyBydW5u
aW5nLCB0aGlzIGlzIHNldCB0byBOVUxMIGFuZCBHb29nbGUgVGVzdAotICAvLyBzdG9yZXMgYXNz
ZXJ0aW9uIHJlc3VsdHMgaW4gYWRfaG9jX3Rlc3RfcmVzdWx0Xy4gIEluaXRpYWxseSBOVUxMLgot
ICBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2VfOwotCi0gIC8vIFRoaXMgcG9pbnRzIHRvIHRo
ZSBUZXN0SW5mbyBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuICBJdAotICAvLyBjaGFu
Z2VzIGFzIEdvb2dsZSBUZXN0IGdvZXMgdGhyb3VnaCBvbmUgdGVzdCBhZnRlciBhbm90aGVyLiAg
V2hlbgotICAvLyBubyB0ZXN0IGlzIHJ1bm5pbmcsIHRoaXMgaXMgc2V0IHRvIE5VTEwgYW5kIEdv
b2dsZSBUZXN0IHN0b3JlcwotICAvLyBhc3NlcnRpb24gcmVzdWx0cyBpbiBhZF9ob2NfdGVzdF9y
ZXN1bHRfLiAgSW5pdGlhbGx5IE5VTEwuCi0gIFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5mb187
Ci0KLSAgLy8gTm9ybWFsbHksIGEgdXNlciBvbmx5IHdyaXRlcyBhc3NlcnRpb25zIGluc2lkZSBh
IFRFU1Qgb3IgVEVTVF9GLAotICAvLyBvciBpbnNpZGUgYSBmdW5jdGlvbiBjYWxsZWQgYnkgYSBU
RVNUIG9yIFRFU1RfRi4gIFNpbmNlIEdvb2dsZQotICAvLyBUZXN0IGtlZXBzIHRyYWNrIG9mIHdo
aWNoIHRlc3QgaXMgY3VycmVudCBydW5uaW5nLCBpdCBjYW4KLSAgLy8gYXNzb2NpYXRlIHN1Y2gg
YW4gYXNzZXJ0aW9uIHdpdGggdGhlIHRlc3QgaXQgYmVsb25ncyB0by4KLSAgLy8KLSAgLy8gSWYg
YW4gYXNzZXJ0aW9uIGlzIGVuY291bnRlcmVkIHdoZW4gbm8gVEVTVCBvciBURVNUX0YgaXMgcnVu
bmluZywKLSAgLy8gR29vZ2xlIFRlc3QgYXR0cmlidXRlcyB0aGUgYXNzZXJ0aW9uIHJlc3VsdCB0
byBhbiBpbWFnaW5hcnkgImFkIGhvYyIKLSAgLy8gdGVzdCwgYW5kIHJlY29yZHMgdGhlIHJlc3Vs
dCBpbiBhZF9ob2NfdGVzdF9yZXN1bHRfLgotICBUZXN0UmVzdWx0IGFkX2hvY190ZXN0X3Jlc3Vs
dF87Ci0KLSAgLy8gVGhlIGxpc3Qgb2YgZXZlbnQgbGlzdGVuZXJzIHRoYXQgY2FuIGJlIHVzZWQg
dG8gdHJhY2sgZXZlbnRzIGluc2lkZQotICAvLyBHb29nbGUgVGVzdC4KLSAgVGVzdEV2ZW50TGlz
dGVuZXJzIGxpc3RlbmVyc187Ci0KLSAgLy8gVGhlIE9TIHN0YWNrIHRyYWNlIGdldHRlci4gIFdp
bGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBVbml0VGVzdAotICAvLyBvYmplY3QgaXMgZGVzdHJ1Y3Rl
ZC4gIEJ5IGRlZmF1bHQsIGFuIE9zU3RhY2tUcmFjZUdldHRlciBpcyB1c2VkLAotICAvLyBidXQg
dGhlIHVzZXIgY2FuIHNldCB0aGlzIGZpZWxkIHRvIHVzZSBhIGN1c3RvbSBnZXR0ZXIgaWYgdGhh
dCBpcwotICAvLyBkZXNpcmVkLgotICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIG9zX3N0
YWNrX3RyYWNlX2dldHRlcl87Ci0KLSAgLy8gVHJ1ZSBpZmYgUG9zdEZsYWdQYXJzaW5nSW5pdCgp
IGhhcyBiZWVuIGNhbGxlZC4KLSAgYm9vbCBwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRf
OwotCi0gIC8vIFRoZSByYW5kb20gbnVtYmVyIHNlZWQgdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZSB0ZXN0IHJ1bi4KLSAgaW50IHJhbmRvbV9zZWVkXzsKLQotICAvLyBPdXIgcmFuZG9tIG51
bWJlciBnZW5lcmF0b3IuCi0gIGludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKLQotICAvLyBUaGUg
dGltZSBvZiB0aGUgdGVzdCBwcm9ncmFtIHN0YXJ0LCBpbiBtcyBmcm9tIHRoZSBzdGFydCBvZiB0
aGUKLSAgLy8gVU5JWCBlcG9jaC4KLSAgVGltZUluTWlsbGlzIHN0YXJ0X3RpbWVzdGFtcF87Ci0K
LSAgLy8gSG93IGxvbmcgdGhlIHRlc3QgdG9vayB0byBydW4sIGluIG1pbGxpc2Vjb25kcy4KLSAg
VGltZUluTWlsbGlzIGVsYXBzZWRfdGltZV87Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
ICAvLyBUaGUgZGVjb21wb3NlZCBjb21wb25lbnRzIG9mIHRoZSBndGVzdF9pbnRlcm5hbF9ydW5f
ZGVhdGhfdGVzdCBmbGFnLAotICAvLyBwYXJzZWQgd2hlbiBSVU5fQUxMX1RFU1RTIGlzIGNhbGxl
ZC4KLSAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8SW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnPiBpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXzsKLSAgaW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50ZXJu
YWw6OkRlYXRoVGVzdEZhY3Rvcnk+IGRlYXRoX3Rlc3RfZmFjdG9yeV87Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19ERUFUSF9URVNUCi0KLSAgLy8gQSBwZXItdGhyZWFkIHN0YWNrIG9mIHRyYWNlcyBj
cmVhdGVkIGJ5IHRoZSBTQ09QRURfVFJBQ0UoKSBtYWNyby4KLSAgaW50ZXJuYWw6OlRocmVhZExv
Y2FsPHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4gPiBndGVzdF90cmFjZV9zdGFja187Ci0KLSAgLy8g
VGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgYXQgdGhlIG1vbWVudCBS
dW5BbGxUZXN0cygpCi0gIC8vIHN0YXJ0cy4KLSAgYm9vbCBjYXRjaF9leGNlcHRpb25zXzsKLQot
ICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFVuaXRUZXN0SW1wbCk7Ci19OyAgLy8g
Y2xhc3MgVW5pdFRlc3RJbXBsCi0KLS8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBhY2Nlc3Np
bmcgdGhlIGdsb2JhbCBVbml0VGVzdAotLy8gaW1wbGVtZW50YXRpb24gb2JqZWN0LgotaW5saW5l
IFVuaXRUZXN0SW1wbCogR2V0VW5pdFRlc3RJbXBsKCkgewotICByZXR1cm4gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmltcGwoKTsKLX0KLQotI2lmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLS8v
IEludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyB0aGUgc2ltcGxlIHJl
Z3VsYXIKLS8vIGV4cHJlc3Npb24gbWF0Y2hlci4KLUdURVNUX0FQSV8gYm9vbCBJc0luU2V0KGNo
YXIgY2gsIGNvbnN0IGNoYXIqIHN0cik7Ci1HVEVTVF9BUElfIGJvb2wgSXNBc2NpaURpZ2l0KGNo
YXIgY2gpOwotR1RFU1RfQVBJXyBib29sIElzQXNjaWlQdW5jdChjaGFyIGNoKTsKLUdURVNUX0FQ
SV8gYm9vbCBJc1JlcGVhdChjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc0FzY2lpV2hpdGVT
cGFjZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc0FzY2lpV29yZENoYXIoY2hhciBjaCk7
Ci1HVEVTVF9BUElfIGJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9v
bCBBdG9tTWF0Y2hlc0NoYXIoYm9vbCBlc2NhcGVkLCBjaGFyIHBhdHRlcm4sIGNoYXIgY2gpOwot
R1RFU1RfQVBJXyBib29sIFZhbGlkYXRlUmVnZXgoY29uc3QgY2hhciogcmVnZXgpOwotR1RFU1Rf
QVBJXyBib29sIE1hdGNoUmVnZXhBdEhlYWQoY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNoYXIq
IHN0cik7Ci1HVEVTVF9BUElfIGJvb2wgTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoCi0g
ICAgYm9vbCBlc2NhcGVkLCBjaGFyIGNoLCBjaGFyIHJlcGVhdCwgY29uc3QgY2hhciogcmVnZXgs
IGNvbnN0IGNoYXIqIHN0cik7Ci1HVEVTVF9BUElfIGJvb2wgTWF0Y2hSZWdleEFueXdoZXJlKGNv
bnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwotCi0jZW5kaWYgIC8vIEdURVNUX1VT
RVNfU0lNUExFX1JFCi0KLS8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5lIGZvciBHb29nbGUgVGVz
dCBmbGFncywgd2l0aG91dCBpbml0aWFsaXppbmcKLS8vIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBU
ZXN0LgotR1RFU1RfQVBJXyB2b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2Ms
IGNoYXIqKiBhcmd2KTsKLUdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHko
aW50KiBhcmdjLCB3Y2hhcl90KiogYXJndik7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci0vLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9y
LCByZWdhcmRsZXNzIG9mIHRoZQotLy8gcGxhdGZvcm0uCi1HVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCk7Ci0KLS8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgc3Ry
aW5nIGludG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIHBvaW50ZWQgdG8gYnkgdGhlCi0vLyBudW1iZXIg
cGFyYW1ldGVyLiAgUmV0dXJucyB0cnVlIGlmIHRoYXQgaXMgcG9zc2libGUuCi0vLyBHVEVTVF9I
QVNfREVBVEhfVEVTVCBpbXBsaWVzIHRoYXQgd2UgaGF2ZSA6OnN0ZDo6c3RyaW5nLCBzbyB3ZSBj
YW4gdXNlCi0vLyBpdCBoZXJlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEludGVnZXI+Ci1ib29sIFBh
cnNlTmF0dXJhbE51bWJlcihjb25zdCA6OnN0ZDo6c3RyaW5nJiBzdHIsIEludGVnZXIqIG51bWJl
cikgewotICAvLyBGYWlsIGZhc3QgaWYgdGhlIGdpdmVuIHN0cmluZyBkb2VzIG5vdCBiZWdpbiB3
aXRoIGEgZGlnaXQ7Ci0gIC8vIHRoaXMgYnlwYXNzZXMgc3RydG9YWFgncyAib3B0aW9uYWwgbGVh
ZGluZyB3aGl0ZXNwYWNlIGFuZCBwbHVzCi0gIC8vIG9yIG1pbnVzIHNpZ24iIHNlbWFudGljcywg
d2hpY2ggYXJlIHVuZGVzaXJhYmxlIGhlcmUuCi0gIGlmIChzdHIuZW1wdHkoKSB8fCAhSXNEaWdp
dChzdHJbMF0pKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGVycm5vID0gMDsKLQotICBj
aGFyKiBlbmQ7Ci0gIC8vIEJpZ2dlc3RDb252ZXJ0aWJsZSBpcyB0aGUgbGFyZ2VzdCBpbnRlZ2Vy
IHR5cGUgdGhhdCBzeXN0ZW0tcHJvdmlkZWQKLSAgLy8gc3RyaW5nLXRvLW51bWJlciBjb252ZXJz
aW9uIHJvdXRpbmVzIGNhbiByZXR1cm4uCi0KLSMgaWYgR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVm
aW5lZChfX0dOVUNfXykKLQotICAvLyBNU1ZDIGFuZCBDKysgQnVpbGRlciBkZWZpbmUgX19pbnQ2
NCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBsb25nIGxvbmcuCi0gIHR5cGVkZWYgdW5zaWduZWQg
X19pbnQ2NCBCaWdnZXN0Q29udmVydGlibGU7Ci0gIGNvbnN0IEJpZ2dlc3RDb252ZXJ0aWJsZSBw
YXJzZWQgPSBfc3RydG91aTY0KHN0ci5jX3N0cigpLCAmZW5kLCAxMCk7Ci0KLSMgZWxzZQotCi0g
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEJpZ2dlc3RDb252ZXJ0aWJsZTsgIC8vIE5PTElO
VAotICBjb25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gc3RydG91bGwoc3RyLmNfc3Ry
KCksICZlbmQsIDEwKTsKLQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUyAmJiAhZGVmaW5l
ZChfX0dOVUNfXykKLQotICBjb25zdCBib29sIHBhcnNlX3N1Y2Nlc3MgPSAqZW5kID09ICdcMCcg
JiYgZXJybm8gPT0gMDsKLQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBDb252ZXJ0IHRo
aXMgdG8gY29tcGlsZSB0aW1lIGFzc2VydGlvbiB3aGVuIGl0IGlzCi0gIC8vIGF2YWlsYWJsZS4K
LSAgR1RFU1RfQ0hFQ0tfKHNpemVvZihJbnRlZ2VyKSA8PSBzaXplb2YocGFyc2VkKSk7Ci0KLSAg
Y29uc3QgSW50ZWdlciByZXN1bHQgPSBzdGF0aWNfY2FzdDxJbnRlZ2VyPihwYXJzZWQpOwotICBp
ZiAocGFyc2Vfc3VjY2VzcyAmJiBzdGF0aWNfY2FzdDxCaWdnZXN0Q29udmVydGlibGU+KHJlc3Vs
dCkgPT0gcGFyc2VkKSB7Ci0gICAgKm51bWJlciA9IHJlc3VsdDsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
Ci0KLS8vIFRlc3RSZXN1bHQgY29udGFpbnMgc29tZSBwcml2YXRlIG1ldGhvZHMgdGhhdCBzaG91
bGQgYmUgaGlkZGVuIGZyb20KLS8vIEdvb2dsZSBUZXN0IHVzZXIgYnV0IGFyZSByZXF1aXJlZCBm
b3IgdGVzdGluZy4gVGhpcyBjbGFzcyBhbGxvdyBvdXIgdGVzdHMKLS8vIHRvIGFjY2VzcyB0aGVt
LgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgc3VwcGxpZWQgb25seSBmb3IgdGhlIHB1cnBvc2Ugb2Yg
dGVzdGluZyBHb29nbGUgVGVzdCdzIG93bgotLy8gY29uc3RydWN0cy4gRG8gbm90IHVzZSBpdCBp
biB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KLWNsYXNzIFRlc3RS
ZXN1bHRBY2Nlc3NvciB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBSZWNvcmRQcm9wZXJ0eShU
ZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXN0UHJvcGVydHkmIHByb3BlcnR5KSB7Ci0gICAgdGVzdF9yZXN1bHQtPlJlY29y
ZFByb3BlcnR5KHhtbF9lbGVtZW50LCBwcm9wZXJ0eSk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBD
bGVhclRlc3RQYXJ0UmVzdWx0cyhUZXN0UmVzdWx0KiB0ZXN0X3Jlc3VsdCkgewotICAgIHRlc3Rf
cmVzdWx0LT5DbGVhclRlc3RQYXJ0UmVzdWx0cygpOwotICB9Ci0KLSAgc3RhdGljIGNvbnN0IHN0
ZDo6dmVjdG9yPHRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0PiYgdGVzdF9wYXJ0X3Jlc3VsdHMoCi0g
ICAgICBjb25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3VsdCkgewotICAgIHJldHVybiB0ZXN0X3Jl
c3VsdC50ZXN0X3BhcnRfcmVzdWx0cygpOwotICB9Ci19OwotCi0jaWYgR1RFU1RfQ0FOX1NUUkVB
TV9SRVNVTFRTXwotCi0vLyBTdHJlYW1zIHRlc3QgcmVzdWx0cyB0byB0aGUgZ2l2ZW4gcG9ydCBv
biB0aGUgZ2l2ZW4gaG9zdCBtYWNoaW5lLgotY2xhc3MgR1RFU1RfQVBJXyBTdHJlYW1pbmdMaXN0
ZW5lciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIC8vIEFi
c3RyYWN0IGJhc2UgY2xhc3MgZm9yIHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KLSAgY2xh
c3MgQWJzdHJhY3RTb2NrZXRXcml0ZXIgewotICAgcHVibGljOgotICAgIHZpcnR1YWwgfkFic3Ry
YWN0U29ja2V0V3JpdGVyKCkge30KLQotICAgIC8vIFNlbmRzIGEgc3RyaW5nIHRvIHRoZSBzb2Nr
ZXQuCi0gICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpID0g
MDsKLQotICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgotICAgIHZpcnR1YWwgdm9pZCBDbG9zZUNv
bm5lY3Rpb24oKSB7fQotCi0gICAgLy8gU2VuZHMgYSBzdHJpbmcgYW5kIGEgbmV3bGluZSB0byB0
aGUgc29ja2V0LgotICAgIHZvaWQgU2VuZExuKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7
IFNlbmQobWVzc2FnZSArICJcbiIpOyB9Ci0gIH07Ci0KLSAgLy8gQ29uY3JldGUgY2xhc3MgZm9y
IGFjdHVhbGx5IHdyaXRpbmcgc3RyaW5ncyB0byBhIHNvY2tldC4KLSAgY2xhc3MgU29ja2V0V3Jp
dGVyIDogcHVibGljIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKLSAgIHB1YmxpYzoKLSAgICBTb2Nr
ZXRXcml0ZXIoY29uc3Qgc3RkOjpzdHJpbmcmIGhvc3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0
KQotICAgICAgICA6IHNvY2tmZF8oLTEpLCBob3N0X25hbWVfKGhvc3QpLCBwb3J0X251bV8ocG9y
dCkgewotICAgICAgTWFrZUNvbm5lY3Rpb24oKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5Tb2Nr
ZXRXcml0ZXIoKSB7Ci0gICAgICBpZiAoc29ja2ZkXyAhPSAtMSkKLSAgICAgICAgQ2xvc2VDb25u
ZWN0aW9uKCk7Ci0gICAgfQotCi0gICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4K
LSAgICB2aXJ0dWFsIHZvaWQgU2VuZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewotICAg
ICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCi0gICAgICAgICAgPDwgIlNlbmQoKSBjYW4g
YmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKLQotICAgICAgY29u
c3QgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obWVzc2FnZS5sZW5ndGgoKSk7Ci0gICAgICBp
ZiAod3JpdGUoc29ja2ZkXywgbWVzc2FnZS5jX3N0cigpLCBsZW4pICE9IGxlbikgewotICAgICAg
ICBHVEVTVF9MT0dfKFdBUk5JTkcpCi0gICAgICAgICAgICA8PCAic3RyZWFtX3Jlc3VsdF90bzog
ZmFpbGVkIHRvIHN0cmVhbSB0byAiCi0gICAgICAgICAgICA8PCBob3N0X25hbWVfIDw8ICI6IiA8
PCBwb3J0X251bV87Ci0gICAgICB9Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIC8vIENyZWF0
ZXMgYSBjbGllbnQgc29ja2V0IGFuZCBjb25uZWN0cyB0byB0aGUgc2VydmVyLgotICAgIHZvaWQg
TWFrZUNvbm5lY3Rpb24oKTsKLQotICAgIC8vIENsb3NlcyB0aGUgc29ja2V0LgotICAgIHZvaWQg
Q2xvc2VDb25uZWN0aW9uKCkgewotICAgICAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gIT0gLTEpCi0g
ICAgICAgICAgPDwgIkNsb3NlQ29ubmVjdGlvbigpIGNhbiBiZSBjYWxsZWQgb25seSB3aGVuIHRo
ZXJlIGlzIGEgY29ubmVjdGlvbi4iOwotCi0gICAgICBjbG9zZShzb2NrZmRfKTsKLSAgICAgIHNv
Y2tmZF8gPSAtMTsKLSAgICB9Ci0KLSAgICBpbnQgc29ja2ZkXzsgIC8vIHNvY2tldCBmaWxlIGRl
c2NyaXB0b3IKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBob3N0X25hbWVfOwotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHBvcnRfbnVtXzsKLQotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oU29ja2V0V3JpdGVyKTsKLSAgfTsgIC8vIGNsYXNzIFNvY2tldFdyaXRlcgotCi0gIC8vIEVz
Y2FwZXMgJz0nLCAnJicsICclJywgYW5kICdcbicgY2hhcmFjdGVycyBpbiBzdHIgYXMgIiV4eCIu
Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBVcmxFbmNvZGUoY29uc3QgY2hhciogc3RyKTsKLQotICBT
dHJlYW1pbmdMaXN0ZW5lcihjb25zdCBzdGQ6OnN0cmluZyYgaG9zdCwgY29uc3Qgc3RkOjpzdHJp
bmcmIHBvcnQpCi0gICAgICA6IHNvY2tldF93cml0ZXJfKG5ldyBTb2NrZXRXcml0ZXIoaG9zdCwg
cG9ydCkpIHsKLSAgICBTdGFydCgpOwotICB9Ci0KLSAgZXhwbGljaXQgU3RyZWFtaW5nTGlzdGVu
ZXIoQWJzdHJhY3RTb2NrZXRXcml0ZXIqIHNvY2tldF93cml0ZXIpCi0gICAgICA6IHNvY2tldF93
cml0ZXJfKHNvY2tldF93cml0ZXIpIHsgU3RhcnQoKTsgfQotCi0gIHZvaWQgT25UZXN0UHJvZ3Jh
bVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8pIHsKLSAgICBTZW5kTG4oImV2
ZW50PVRlc3RQcm9ncmFtU3RhcnQiKTsKLSAgfQotCi0gIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Ci0gICAgLy8gTm90ZSB0aGF0IEdvb2dsZSBUZXN0
IGN1cnJlbnQgb25seSByZXBvcnQgZWxhcHNlZCB0aW1lIGZvciBlYWNoCi0gICAgLy8gdGVzdCBp
dGVyYXRpb24sIG5vdCBmb3IgdGhlIGVudGlyZSB0ZXN0IHByb2dyYW0uCi0gICAgU2VuZExuKCJl
dmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9IiArIEZvcm1hdEJvb2wodW5pdF90ZXN0LlBhc3Nl
ZCgpKSk7Ci0KLSAgICAvLyBOb3RpZnkgdGhlIHN0cmVhbWluZyBzZXJ2ZXIgdG8gc3RvcC4KLSAg
ICBzb2NrZXRfd3JpdGVyXy0+Q2xvc2VDb25uZWN0aW9uKCk7Ci0gIH0KLQotICB2b2lkIE9uVGVz
dEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3QgKi8sIGludCBpdGVy
YXRpb24pIHsKLSAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25TdGFydCZpdGVyYXRpb249
IiArCi0gICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyhpdGVyYXRpb24pKTsKLSAgfQotCi0g
IHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCAv
KiBpdGVyYXRpb24gKi8pIHsKLSAgICBTZW5kTG4oImV2ZW50PVRlc3RJdGVyYXRpb25FbmQmcGFz
c2VkPSIgKwotICAgICAgICAgICBGb3JtYXRCb29sKHVuaXRfdGVzdC5QYXNzZWQoKSkgKyAiJmVs
YXBzZWRfdGltZT0iICsKLSAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5l
bGFwc2VkX3RpbWUoKSkgKyAibXMiKTsKLSAgfQotCi0gIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgICBTZW5kTG4oc3RkOjpzdHJpbmcoImV2ZW50
PVRlc3RDYXNlU3RhcnQmbmFtZT0iKSArIHRlc3RfY2FzZS5uYW1lKCkpOwotICB9Ci0KLSAgdm9p
ZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpIHsKLSAgICBTZW5kTG4o
ImV2ZW50PVRlc3RDYXNlRW5kJnBhc3NlZD0iICsgRm9ybWF0Qm9vbCh0ZXN0X2Nhc2UuUGFzc2Vk
KCkpCi0gICAgICAgICAgICsgIiZlbGFwc2VkX3RpbWU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0
ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpCi0gICAgICAgICAgICsgIm1zIik7Ci0gIH0KLQotICB2
b2lkIE9uVGVzdFN0YXJ0KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICBTZW5kTG4o
c3RkOjpzdHJpbmcoImV2ZW50PVRlc3RTdGFydCZuYW1lPSIpICsgdGVzdF9pbmZvLm5hbWUoKSk7
Ci0gIH0KLQotICB2b2lkIE9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0g
ICAgU2VuZExuKCJldmVudD1UZXN0RW5kJnBhc3NlZD0iICsKLSAgICAgICAgICAgRm9ybWF0Qm9v
bCgodGVzdF9pbmZvLnJlc3VsdCgpKS0+UGFzc2VkKCkpICsKLSAgICAgICAgICAgIiZlbGFwc2Vk
X3RpbWU9IiArCi0gICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZygodGVzdF9pbmZvLnJlc3Vs
dCgpKS0+ZWxhcHNlZF90aW1lKCkpICsgIm1zIik7Ci0gIH0KLQotICB2b2lkIE9uVGVzdFBhcnRS
ZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgICBjb25z
dCBjaGFyKiBmaWxlX25hbWUgPSB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpOwotICAgIGlm
IChmaWxlX25hbWUgPT0gTlVMTCkKLSAgICAgIGZpbGVfbmFtZSA9ICIiOwotICAgIFNlbmRMbigi
ZXZlbnQ9VGVzdFBhcnRSZXN1bHQmZmlsZT0iICsgVXJsRW5jb2RlKGZpbGVfbmFtZSkgKwotICAg
ICAgICAgICAiJmxpbmU9IiArIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X3BhcnRfcmVzdWx0Lmxp
bmVfbnVtYmVyKCkpICsKLSAgICAgICAgICAgIiZtZXNzYWdlPSIgKyBVcmxFbmNvZGUodGVzdF9w
YXJ0X3Jlc3VsdC5tZXNzYWdlKCkpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gU2VuZHMgdGhl
IGdpdmVuIG1lc3NhZ2UgYW5kIGEgbmV3bGluZSB0byB0aGUgc29ja2V0LgotICB2b2lkIFNlbmRM
bihjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBzb2NrZXRfd3JpdGVyXy0+U2VuZExuKG1l
c3NhZ2UpOyB9Ci0KLSAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBzdHJlYW1pbmcgdG8gbm90
aWZ5IHRoZSByZWNlaXZlciB3aGF0Ci0gIC8vIHByb3RvY29sIHdlIGFyZSB1c2luZy4KLSAgdm9p
ZCBTdGFydCgpIHsgU2VuZExuKCJndGVzdF9zdHJlYW1pbmdfcHJvdG9jb2xfdmVyc2lvbj0xLjAi
KTsgfQotCi0gIHN0ZDo6c3RyaW5nIEZvcm1hdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPyAiMSIgOiAiMCI7IH0KLQotICBjb25zdCBzY29wZWRfcHRyPEFic3RyYWN0U29ja2V0V3Jp
dGVyPiBzb2NrZXRfd3JpdGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFN0cmVhbWluZ0xpc3RlbmVyKTsKLX07ICAvLyBjbGFzcyBTdHJlYW1pbmdMaXN0ZW5lcgotCi0j
ZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLQotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdURVNUX1NSQ19H
VEVTVF9JTlRFUk5BTF9JTkxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1w
b3J0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ4MGJkODBjNDgzMjI5YmY4YjUwNzA4ZGYxYWViZjE1MGUzZGMxZDYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c3JjL2d0ZXN0LXBvcnQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQxICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmgiCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4K
LSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGZzdHJl
YW0+Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSMgaW5j
bHVkZSA8aW8uaD4KLSMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSMgaW5jbHVkZSA8bWFwPiAgLy8g
VXNlZCBpbiBUaHJlYWRMb2NhbC4KLSNlbHNlCi0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9PU19NQUMKLSMgaW5jbHVkZSA8bWFj
aC9tYWNoX2luaXQuaD4KLSMgaW5jbHVkZSA8bWFjaC90YXNrLmg+Ci0jIGluY2x1ZGUgPG1hY2gv
dm1fbWFwLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX01BQwotCi0jaWYgR1RFU1RfT1NfUU5YCi0j
IGluY2x1ZGUgPGRldmN0bC5oPgotIyBpbmNsdWRlIDxmY250bC5oPgotIyBpbmNsdWRlIDxzeXMv
cHJvY2ZzLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1FOWAotCi0jaWYgR1RFU1RfT1NfQUlYCi0j
IGluY2x1ZGUgPHByb2NpbmZvLmg+Ci0jIGluY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmICAv
LyBHVEVTVF9PU19BSVgKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1p
bnRlcm5hbC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgotCi0v
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bwotLy8gcHJldmVudCB0aGUgYWNjaWRlbnRhbCBp
bmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCi0vLyB1c2VyJ3MgY29kZS4K
LSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykKLS8vIE1TVkMgYW5kIEMrK0J1aWxkZXIgZG8gbm90IHBy
b3ZpZGUgYSBkZWZpbml0aW9uIG9mIFNUREVSUl9GSUxFTk8uCi1jb25zdCBpbnQga1N0ZE91dEZp
bGVubyA9IDE7Ci1jb25zdCBpbnQga1N0ZEVyckZpbGVubyA9IDI7Ci0jZWxzZQotY29uc3QgaW50
IGtTdGRPdXRGaWxlbm8gPSBTVERPVVRfRklMRU5POwotY29uc3QgaW50IGtTdGRFcnJGaWxlbm8g
PSBTVERFUlJfRklMRU5POwotI2VuZGlmICAvLyBfTVNDX1ZFUgotCi0jaWYgR1RFU1RfT1NfTElO
VVgKLQotbmFtZXNwYWNlIHsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVCBSZWFkUHJvY0ZpbGVG
aWVsZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGludCBmaWVsZCkgewotICBzdGQ6OnN0
cmluZyBkdW1teTsKLSAgc3RkOjppZnN0cmVhbSBmaWxlKGZpbGVuYW1lLmNfc3RyKCkpOwotICB3
aGlsZSAoZmllbGQtLSA+IDApIHsKLSAgICBmaWxlID4+IGR1bW15OwotICB9Ci0gIFQgb3V0cHV0
ID0gMDsKLSAgZmlsZSA+PiBvdXRwdXQ7Ci0gIHJldHVybiBvdXRwdXQ7Ci19Ci19ICAvLyBuYW1l
c3BhY2UKLQotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzLCBvciAwIHdo
ZW4gdGhlcmUgaXMgYW4gZXJyb3IuCi1zaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIGZpbGVuYW1lID0KLSAgICAgIChNZXNzYWdlKCkgPDwgIi9wcm9jLyIgPDwg
Z2V0cGlkKCkgPDwgIi9zdGF0IikuR2V0U3RyaW5nKCk7Ci0gIHJldHVybiBSZWFkUHJvY0ZpbGVG
aWVsZDxpbnQ+KGZpbGVuYW1lLCAxOSk7Ci19Ci0KLSNlbGlmIEdURVNUX09TX01BQwotCi1zaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7Ci0gIGNvbnN0IHRhc2tfdCB0YXNrID0gbWFjaF90YXNrX3Nl
bGYoKTsKLSAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRfY291bnQ7Ci0gIHRocmVhZF9h
Y3RfYXJyYXlfdCB0aHJlYWRfbGlzdDsKLSAgY29uc3Qga2Vybl9yZXR1cm5fdCBzdGF0dXMgPSB0
YXNrX3RocmVhZHModGFzaywgJnRocmVhZF9saXN0LCAmdGhyZWFkX2NvdW50KTsKLSAgaWYgKHN0
YXR1cyA9PSBLRVJOX1NVQ0NFU1MpIHsKLSAgICAvLyB0YXNrX3RocmVhZHMgYWxsb2NhdGVzIHJl
c291cmNlcyBpbiB0aHJlYWRfbGlzdCBhbmQgd2UgbmVlZCB0byBmcmVlIHRoZW0KLSAgICAvLyB0
byBhdm9pZCBsZWFrcy4KLSAgICB2bV9kZWFsbG9jYXRlKHRhc2ssCi0gICAgICAgICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4odGhyZWFkX2xpc3QpLAotICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKHRocmVhZF90KSAqIHRocmVhZF9jb3VudCk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4odGhyZWFkX2NvdW50KTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4g
MDsKLSAgfQotfQotCi0jZWxpZiBHVEVTVF9PU19RTlgKLQotLy8gUmV0dXJucyB0aGUgbnVtYmVy
IG9mIHRocmVhZHMgcnVubmluZyBpbiB0aGUgcHJvY2Vzcywgb3IgMCB0byBpbmRpY2F0ZSB0aGF0
Ci0vLyB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgotc2l6ZV90IEdldFRocmVhZENvdW50KCkgewotICBj
b25zdCBpbnQgZmQgPSBvcGVuKCIvcHJvYy9zZWxmL2FzIiwgT19SRE9OTFkpOwotICBpZiAoZmQg
PCAwKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLSAgcHJvY2ZzX2luZm8gcHJvY2Vzc19pbmZvOwot
ICBjb25zdCBpbnQgc3RhdHVzID0KLSAgICAgIGRldmN0bChmZCwgRENNRF9QUk9DX0lORk8sICZw
cm9jZXNzX2luZm8sIHNpemVvZihwcm9jZXNzX2luZm8pLCBOVUxMKTsKLSAgY2xvc2UoZmQpOwot
ICBpZiAoc3RhdHVzID09IEVPSykgewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBy
b2Nlc3NfaW5mby5udW1fdGhyZWFkcyk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0K
LX0KLQotI2VsaWYgR1RFU1RfT1NfQUlYCi0KLXNpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKLSAg
c3RydWN0IHByb2NlbnRyeTY0IGVudHJ5OwotICBwaWRfdCBwaWQgPSBnZXRwaWQoKTsKLSAgaW50
IHN0YXR1cyA9IGdldHByb2NzNjQoJmVudHJ5LCBzaXplb2YoZW50cnkpLCBOVUxMLCAwLCAmcGlk
LCAxKTsKLSAgaWYgKHN0YXR1cyA9PSAxKSB7Ci0gICAgcmV0dXJuIGVudHJ5LnBpX3RoY291bnQ7
Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotI2Vsc2UKLQotc2l6ZV90IEdl
dFRocmVhZENvdW50KCkgewotICAvLyBUaGVyZSdzIG5vIHBvcnRhYmxlIHdheSB0byBkZXRlY3Qg
dGhlIG51bWJlciBvZiB0aHJlYWRzLCBzbyB3ZSBqdXN0Ci0gIC8vIHJldHVybiAwIHRvIGluZGlj
YXRlIHRoYXQgd2UgY2Fubm90IGRldGVjdCBpdC4KLSAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfTElOVVgKLQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1Nf
V0lORE9XUwotCi12b2lkIFNsZWVwTWlsbGlzZWNvbmRzKGludCBuKSB7Ci0gIDo6U2xlZXAobik7
Ci19Ci0KLUF1dG9IYW5kbGU6OkF1dG9IYW5kbGUoKQotICAgIDogaGFuZGxlXyhJTlZBTElEX0hB
TkRMRV9WQUxVRSkge30KLQotQXV0b0hhbmRsZTo6QXV0b0hhbmRsZShIYW5kbGUgaGFuZGxlKQot
ICAgIDogaGFuZGxlXyhoYW5kbGUpIHt9Ci0KLUF1dG9IYW5kbGU6On5BdXRvSGFuZGxlKCkgewot
ICBSZXNldCgpOwotfQotCi1BdXRvSGFuZGxlOjpIYW5kbGUgQXV0b0hhbmRsZTo6R2V0KCkgY29u
c3QgewotICByZXR1cm4gaGFuZGxlXzsKLX0KLQotdm9pZCBBdXRvSGFuZGxlOjpSZXNldCgpIHsK
LSAgUmVzZXQoSU5WQUxJRF9IQU5ETEVfVkFMVUUpOwotfQotCi12b2lkIEF1dG9IYW5kbGU6OlJl
c2V0KEhBTkRMRSBoYW5kbGUpIHsKLSAgLy8gUmVzZXR0aW5nIHdpdGggdGhlIHNhbWUgaGFuZGxl
IHdlIGFscmVhZHkgb3duIGlzIGludmFsaWQuCi0gIGlmIChoYW5kbGVfICE9IGhhbmRsZSkgewot
ICAgIGlmIChJc0Nsb3NlYWJsZSgpKSB7Ci0gICAgICA6OkNsb3NlSGFuZGxlKGhhbmRsZV8pOwot
ICAgIH0KLSAgICBoYW5kbGVfID0gaGFuZGxlOwotICB9IGVsc2UgewotICAgIEdURVNUX0NIRUNL
XyghSXNDbG9zZWFibGUoKSkKLSAgICAgICAgPDwgIlJlc2V0dGluZyBhIHZhbGlkIGhhbmRsZSB0
byBpdHNlbGYgaXMgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvciAiCi0gICAgICAgICAgICAiYW5k
IHRodXMgbm90IGFsbG93ZWQuIjsKLSAgfQotfQotCi1ib29sIEF1dG9IYW5kbGU6OklzQ2xvc2Vh
YmxlKCkgY29uc3QgewotICAvLyBEaWZmZXJlbnQgV2luZG93cyBBUElzIG1heSB1c2UgZWl0aGVy
IG9mIHRoZXNlIHZhbHVlcyB0byByZXByZXNlbnQgYW4KLSAgLy8gaW52YWxpZCBoYW5kbGUuCi0g
IHJldHVybiBoYW5kbGVfICE9IE5VTEwgJiYgaGFuZGxlXyAhPSBJTlZBTElEX0hBTkRMRV9WQUxV
RTsKLX0KLQotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oKQotICAgIDogZXZlbnRfKDo6Q3Jl
YXRlRXZlbnQoTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5IGF0dHJpYnV0ZXMuCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLCAgIC8vIERvIG5vdCByZXNldCBhdXRvbWF0aWNhbGx5
LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBJbml0aWFsbHkgdW5zZXQu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgeyAgLy8gQW5vbnltb3VzIGV2ZW50
LgotICBHVEVTVF9DSEVDS18oZXZlbnRfLkdldCgpICE9IE5VTEwpOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvbjo6Tm90aWZ5KCkgewotICBHVEVTVF9DSEVDS18oOjpTZXRFdmVudChldmVudF8uR2V0
KCkpICE9IEZBTFNFKTsKLX0KLQotdm9pZCBOb3RpZmljYXRpb246OldhaXRGb3JOb3RpZmljYXRp
b24oKSB7Ci0gIEdURVNUX0NIRUNLXygKLSAgICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdChldmVu
dF8uR2V0KCksIElORklOSVRFKSA9PSBXQUlUX09CSkVDVF8wKTsKLX0KLQotTXV0ZXg6Ok11dGV4
KCkKLSAgICA6IG93bmVyX3RocmVhZF9pZF8oMCksCi0gICAgICB0eXBlXyhrRHluYW1pYyksCi0g
ICAgICBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfKDApLAotICAgICAgY3JpdGljYWxfc2Vj
dGlvbl8obmV3IENSSVRJQ0FMX1NFQ1RJT04pIHsKLSAgOjpJbml0aWFsaXplQ3JpdGljYWxTZWN0
aW9uKGNyaXRpY2FsX3NlY3Rpb25fKTsKLX0KLQotTXV0ZXg6On5NdXRleCgpIHsKLSAgLy8gU3Rh
dGljIG11dGV4ZXMgYXJlIGxlYWtlZCBpbnRlbnRpb25hbGx5LiBJdCBpcyBub3QgdGhyZWFkLXNh
ZmUgdG8gdHJ5Ci0gIC8vIHRvIGNsZWFuIHRoZW0gdXAuCi0gIC8vIFRPRE8oeXVrYXdhKTogU3dp
dGNoIHRvIFNsaW0gUmVhZGVyL1dyaXRlciAoU1JXKSBMb2Nrcywgd2hpY2ggcmVxdWlyZXMKLSAg
Ly8gbm90aGluZyB0byBjbGVhbiBpdCB1cCBidXQgaXMgYXZhaWxhYmxlIG9ubHkgb24gVmlzdGEg
YW5kIGxhdGVyLgotICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
d2luZG93cy9kZXNrdG9wL2FhOTA0OTM3LmFzcHgKLSAgaWYgKHR5cGVfID09IGtEeW5hbWljKSB7
Ci0gICAgOjpEZWxldGVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOwotICAgIGRl
bGV0ZSBjcml0aWNhbF9zZWN0aW9uXzsKLSAgICBjcml0aWNhbF9zZWN0aW9uXyA9IE5VTEw7Ci0g
IH0KLX0KLQotdm9pZCBNdXRleDo6TG9jaygpIHsKLSAgVGhyZWFkU2FmZUxhenlJbml0KCk7Ci0g
IDo6RW50ZXJDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOwotICBvd25lcl90aHJl
YWRfaWRfID0gOjpHZXRDdXJyZW50VGhyZWFkSWQoKTsKLX0KLQotdm9pZCBNdXRleDo6VW5sb2Nr
KCkgewotICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKLSAgLy8gV2UgZG9uJ3QgcHJvdGVjdCB3cml0
aW5nIHRvIG93bmVyX3RocmVhZF9pZF8gaGVyZSwgYXMgaXQncyB0aGUKLSAgLy8gY2FsbGVyJ3Mg
cmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRo
ZQotICAvLyBtdXRleCB3aGVuIHRoaXMgaXMgY2FsbGVkLgotICBvd25lcl90aHJlYWRfaWRfID0g
MDsKLSAgOjpMZWF2ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7Ci19Ci0KLS8v
IERvZXMgbm90aGluZyBpZiB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlIG11dGV4LiBPdGhl
cndpc2UsIGNyYXNoZXMKLS8vIHdpdGggaGlnaCBwcm9iYWJpbGl0eS4KLXZvaWQgTXV0ZXg6OkFz
c2VydEhlbGQoKSB7Ci0gIFRocmVhZFNhZmVMYXp5SW5pdCgpOwotICBHVEVTVF9DSEVDS18ob3du
ZXJfdGhyZWFkX2lkXyA9PSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpKQotICAgICAgPDwgIlRoZSBj
dXJyZW50IHRocmVhZCBpcyBub3QgaG9sZGluZyB0aGUgbXV0ZXggQCIgPDwgdGhpczsKLX0KLQot
Ly8gSW5pdGlhbGl6ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlvbl8gaW4g
c3RhdGljIG11dGV4ZXMuCi12b2lkIE11dGV4OjpUaHJlYWRTYWZlTGF6eUluaXQoKSB7Ci0gIC8v
IER5bmFtaWMgbXV0ZXhlcyBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgotICBp
ZiAodHlwZV8gPT0ga1N0YXRpYykgewotICAgIHN3aXRjaCAoCi0gICAgICAgIDo6SW50ZXJsb2Nr
ZWRDb21wYXJlRXhjaGFuZ2UoJmNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8sIDFMLCAwTCkp
IHsKLSAgICAgIGNhc2UgMDoKLSAgICAgICAgLy8gSWYgY3JpdGljYWxfc2VjdGlvbl9pbml0X3Bo
YXNlXyB3YXMgMCBiZWZvcmUgdGhlIGV4Y2hhbmdlLCB3ZQotICAgICAgICAvLyBhcmUgdGhlIGZp
cnN0IHRvIHRlc3QgaXQgYW5kIG5lZWQgdG8gcGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24uCi0g
ICAgICAgIG93bmVyX3RocmVhZF9pZF8gPSAwOwotICAgICAgICBjcml0aWNhbF9zZWN0aW9uXyA9
IG5ldyBDUklUSUNBTF9TRUNUSU9OOwotICAgICAgICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rp
b24oY3JpdGljYWxfc2VjdGlvbl8pOwotICAgICAgICAvLyBVcGRhdGVzIHRoZSBjcml0aWNhbF9z
ZWN0aW9uX2luaXRfcGhhc2VfIHRvIDIgdG8gc2lnbmFsCi0gICAgICAgIC8vIGluaXRpYWxpemF0
aW9uIGNvbXBsZXRlLgotICAgICAgICBHVEVTVF9DSEVDS18oOjpJbnRlcmxvY2tlZENvbXBhcmVF
eGNoYW5nZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyaXRpY2FsX3NlY3Rpb25faW5p
dF9waGFzZV8sIDJMLCAxTCkgPT0KLSAgICAgICAgICAgICAgICAgICAgICAxTCk7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSAxOgotICAgICAgICAvLyBTb21lYm9keSBlbHNlIGlzIGFscmVh
ZHkgaW5pdGlhbGl6aW5nIHRoZSBtdXRleDsgc3BpbiB1bnRpbCB0aGV5Ci0gICAgICAgIC8vIGFy
ZSBkb25lLgotICAgICAgICB3aGlsZSAoOjpJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgmY3Jp
dGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMkwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDJMKSAhPSAyTCkgewotICAgICAgICAgIC8vIFBvc3NpYmx5IHlpZWxkcyB0aGUgcmVz
dCBvZiB0aGUgdGhyZWFkJ3MgdGltZSBzbGljZSB0byBvdGhlcgotICAgICAgICAgIC8vIHRocmVh
ZHMuCi0gICAgICAgICAgOjpTbGVlcCgwKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQot
ICAgICAgY2FzZSAyOgotICAgICAgICBicmVhazsgIC8vIFRoZSBtdXRleCBpcyBhbHJlYWR5IGlu
aXRpYWxpemVkIGFuZCByZWFkeSBmb3IgdXNlLgotCi0gICAgICBkZWZhdWx0OgotICAgICAgICBH
VEVTVF9DSEVDS18oZmFsc2UpCi0gICAgICAgICAgICA8PCAiVW5leHBlY3RlZCB2YWx1ZSBvZiBj
cml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfICIKLSAgICAgICAgICAgIDw8ICJ3aGlsZSBpbml0
aWFsaXppbmcgYSBzdGF0aWMgbXV0ZXguIjsKLSAgICB9Ci0gIH0KLX0KLQotbmFtZXNwYWNlIHsK
LQotY2xhc3MgVGhyZWFkV2l0aFBhcmFtU3VwcG9ydCA6IHB1YmxpYyBUaHJlYWRXaXRoUGFyYW1C
YXNlIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBIQU5ETEUgQ3JlYXRlVGhyZWFkKFJ1bm5hYmxlKiBy
dW5uYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uKiB0aHJl
YWRfY2FuX3N0YXJ0KSB7Ci0gICAgVGhyZWFkTWFpblBhcmFtKiBwYXJhbSA9IG5ldyBUaHJlYWRN
YWluUGFyYW0ocnVubmFibGUsIHRocmVhZF9jYW5fc3RhcnQpOwotICAgIERXT1JEIHRocmVhZF9p
ZDsKLSAgICAvLyBUT0RPKHl1a2F3YSk6IENvbnNpZGVyIHRvIHVzZSBfYmVnaW50aHJlYWRleCBp
bnN0ZWFkLgotICAgIEhBTkRMRSB0aHJlYWRfaGFuZGxlID0gOjpDcmVhdGVUaHJlYWQoCi0gICAg
ICAgIE5VTEwsICAgIC8vIERlZmF1bHQgc2VjdXJpdHkuCi0gICAgICAgIDAsICAgICAgIC8vIERl
ZmF1bHQgc3RhY2sgc2l6ZS4KLSAgICAgICAgJlRocmVhZFdpdGhQYXJhbVN1cHBvcnQ6OlRocmVh
ZE1haW4sCi0gICAgICAgIHBhcmFtLCAgIC8vIFBhcmFtZXRlciB0byBUaHJlYWRNYWluU3RhdGlj
Ci0gICAgICAgIDB4MCwgICAgIC8vIERlZmF1bHQgY3JlYXRpb24gZmxhZ3MuCi0gICAgICAgICZ0
aHJlYWRfaWQpOyAgLy8gTmVlZCBhIHZhbGlkIHBvaW50ZXIgZm9yIHRoZSBjYWxsIHRvIHdvcmsg
dW5kZXIgV2luOTguCi0gICAgR1RFU1RfQ0hFQ0tfKHRocmVhZF9oYW5kbGUgIT0gTlVMTCkgPDwg
IkNyZWF0ZVRocmVhZCBmYWlsZWQgd2l0aCBlcnJvciAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgOjpHZXRMYXN0RXJyb3IoKSA8PCAiLiI7Ci0gICAgaWYgKHRo
cmVhZF9oYW5kbGUgPT0gTlVMTCkgewotICAgICAgZGVsZXRlIHBhcmFtOwotICAgIH0KLSAgICBy
ZXR1cm4gdGhyZWFkX2hhbmRsZTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RydWN0IFRocmVhZE1h
aW5QYXJhbSB7Ci0gICAgVGhyZWFkTWFpblBhcmFtKFJ1bm5hYmxlKiBydW5uYWJsZSwgTm90aWZp
Y2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQotICAgICAgICA6IHJ1bm5hYmxlXyhydW5uYWJsZSks
Ci0gICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCkgewotICAgIH0K
LSAgICBzY29wZWRfcHRyPFJ1bm5hYmxlPiBydW5uYWJsZV87Ci0gICAgLy8gRG9lcyBub3Qgb3du
LgotICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydF87Ci0gIH07Ci0KLSAgc3RhdGlj
IERXT1JEIFdJTkFQSSBUaHJlYWRNYWluKHZvaWQqIHB0cikgewotICAgIC8vIFRyYW5zZmVycyBv
d25lcnNoaXAuCi0gICAgc2NvcGVkX3B0cjxUaHJlYWRNYWluUGFyYW0+IHBhcmFtKHN0YXRpY19j
YXN0PFRocmVhZE1haW5QYXJhbSo+KHB0cikpOwotICAgIGlmIChwYXJhbS0+dGhyZWFkX2Nhbl9z
dGFydF8gIT0gTlVMTCkKLSAgICAgIHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5v
dGlmaWNhdGlvbigpOwotICAgIHBhcmFtLT5ydW5uYWJsZV8tPlJ1bigpOwotICAgIHJldHVybiAw
OwotICB9Ci0KLSAgLy8gUHJvaGliaXQgaW5zdGFudGlhdGlvbi4KLSAgVGhyZWFkV2l0aFBhcmFt
U3VwcG9ydCgpOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGhyZWFkV2l0
aFBhcmFtU3VwcG9ydCk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotVGhyZWFkV2l0aFBhcmFt
QmFzZTo6VGhyZWFkV2l0aFBhcmFtQmFzZShSdW5uYWJsZSAqcnVubmFibGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9z
dGFydCkKLSAgICAgIDogdGhyZWFkXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0OjpDcmVhdGVUaHJl
YWQocnVubmFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRocmVhZF9jYW5fc3RhcnQpKSB7Ci19Ci0KLVRocmVhZFdpdGhQYXJhbUJhc2U6
On5UaHJlYWRXaXRoUGFyYW1CYXNlKCkgewotICBKb2luKCk7Ci19Ci0KLXZvaWQgVGhyZWFkV2l0
aFBhcmFtQmFzZTo6Sm9pbigpIHsKLSAgR1RFU1RfQ0hFQ0tfKDo6V2FpdEZvclNpbmdsZU9iamVj
dCh0aHJlYWRfLkdldCgpLCBJTkZJTklURSkgPT0gV0FJVF9PQkpFQ1RfMCkKLSAgICAgIDw8ICJG
YWlsZWQgdG8gam9pbiB0aGUgdGhyZWFkIHdpdGggZXJyb3IgIiA8PCA6OkdldExhc3RFcnJvcigp
IDw8ICIuIjsKLX0KLQotLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzIHRoYXQgaGF2ZSB2YWx1ZXMKLS8vIGluc3RhbnRpYXRlZCBvbiB0aGF0IHRocmVh
ZCBhbmQgbm90aWZpZXMgdGhlbSB3aGVuIHRoZSB0aHJlYWQgZXhpdHMuICBBCi0vLyBUaHJlYWRM
b2NhbCBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBwZXJzaXN0IHVudGlsIGFsbCB0aHJlYWRzIGl0
IGhhcwotLy8gdmFsdWVzIG9uIGhhdmUgdGVybWluYXRlZC4KLWNsYXNzIFRocmVhZExvY2FsUmVn
aXN0cnlJbXBsIHsKLSBwdWJsaWM6Ci0gIC8vIFJlZ2lzdGVycyB0aHJlYWRfbG9jYWxfaW5zdGFu
Y2UgYXMgaGF2aW5nIHZhbHVlIG9uIHRoZSBjdXJyZW50IHRocmVhZC4KLSAgLy8gUmV0dXJucyBh
IHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRocmVhZCBmcm9tIG90aGVy
IHRocmVhZHMuCi0gIHN0YXRpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogR2V0VmFsdWVP
bkN1cnJlbnRUaHJlYWQoCi0gICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2Nh
bF9pbnN0YW5jZSkgewotICAgIERXT1JEIGN1cnJlbnRfdGhyZWFkID0gOjpHZXRDdXJyZW50VGhy
ZWFkSWQoKTsKLSAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgICBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9Ci0gICAgICAgIEdldFRo
cmVhZExvY2Fsc01hcExvY2tlZCgpOwotICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHM6Oml0ZXJh
dG9yIHRocmVhZF9sb2NhbF9wb3MgPQotICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+
ZmluZChjdXJyZW50X3RocmVhZCk7Ci0gICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgPT0gdGhyZWFk
X3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7Ci0gICAgICB0aHJlYWRfbG9jYWxfcG9zID0gdGhy
ZWFkX3RvX3RocmVhZF9sb2NhbHMtPmluc2VydCgKLSAgICAgICAgICBzdGQ6Om1ha2VfcGFpcihj
dXJyZW50X3RocmVhZCwgVGhyZWFkTG9jYWxWYWx1ZXMoKSkpLmZpcnN0OwotICAgICAgU3RhcnRX
YXRjaGVyVGhyZWFkRm9yKGN1cnJlbnRfdGhyZWFkKTsKLSAgICB9Ci0gICAgVGhyZWFkTG9jYWxW
YWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSB0aHJlYWRfbG9jYWxfcG9zLT5zZWNvbmQ7Ci0g
ICAgVGhyZWFkTG9jYWxWYWx1ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9Ci0gICAgICAgIHRocmVh
ZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOwotICAgIGlmICh2YWx1
ZV9wb3MgPT0gdGhyZWFkX2xvY2FsX3ZhbHVlcy5lbmQoKSkgewotICAgICAgdmFsdWVfcG9zID0K
LSAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVzCi0gICAgICAgICAgICAgIC5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoCi0gICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UsCi0g
ICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPigK
LSAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRfbG9jYWxfaW5zdGFuY2UtPk5ld1ZhbHVlRm9y
Q3VycmVudFRocmVhZCgpKSkpCi0gICAgICAgICAgICAgIC5maXJzdDsKLSAgICB9Ci0gICAgcmV0
dXJuIHZhbHVlX3Bvcy0+c2Vjb25kLmdldCgpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgT25UaHJl
YWRMb2NhbERlc3Ryb3llZCgKLSAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xv
Y2FsX2luc3RhbmNlKSB7Ci0gICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0cjxUaHJlYWRMb2NhbFZh
bHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOwotICAgIC8vIENsZWFuIHVwIHRoZSBUaHJl
YWRMb2NhbFZhbHVlcyBkYXRhIHN0cnVjdHVyZSB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCBidXQK
LSAgICAvLyBkZWZlciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFRocmVhZExvY2FsVmFsdWVIb2xk
ZXJCYXNlcy4KLSAgICB7Ci0gICAgICBNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgICAgIFRo
cmVhZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJlYWRfbG9jYWxzID0KLSAg
ICAgICAgICBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKTsKLSAgICAgIGZvciAoVGhyZWFkSWRU
b1RocmVhZExvY2Fsczo6aXRlcmF0b3IgaXQgPQotICAgICAgICAgIHRocmVhZF90b190aHJlYWRf
bG9jYWxzLT5iZWdpbigpOwotICAgICAgICAgIGl0ICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxz
LT5lbmQoKTsKLSAgICAgICAgICArK2l0KSB7Ci0gICAgICAgIFRocmVhZExvY2FsVmFsdWVzJiB0
aHJlYWRfbG9jYWxfdmFsdWVzID0gaXQtPnNlY29uZDsKLSAgICAgICAgVGhyZWFkTG9jYWxWYWx1
ZXM6Oml0ZXJhdG9yIHZhbHVlX3BvcyA9Ci0gICAgICAgICAgICB0aHJlYWRfbG9jYWxfdmFsdWVz
LmZpbmQodGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKLSAgICAgICAgaWYgKHZhbHVlX3BvcyAhPSB0
aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgpKSB7Ci0gICAgICAgICAgdmFsdWVfaG9sZGVycy5wdXNo
X2JhY2sodmFsdWVfcG9zLT5zZWNvbmQpOwotICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMu
ZXJhc2UodmFsdWVfcG9zKTsKLSAgICAgICAgICAvLyBUaGlzICdpZicgY2FuIG9ubHkgYmUgc3Vj
Y2Vzc2Z1bCBhdCBtb3N0IG9uY2UsIHNvIHRoZW9yZXRpY2FsbHkgd2UKLSAgICAgICAgICAvLyBj
b3VsZCBicmVhayBvdXQgb2YgdGhlIGxvb3AgaGVyZSwgYnV0IHdlIGRvbid0IGJvdGhlciBkb2lu
ZyBzby4KLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICAvLyBPdXRzaWRlIHRoZSBsb2Nr
LCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9ob2xkZXJzJyBkZWFsbG9jYXRlIHRoZQot
ICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlcy4KLSAgfQotCi0gIHN0YXRpYyB2b2lk
IE9uVGhyZWFkRXhpdChEV09SRCB0aHJlYWRfaWQpIHsKLSAgICBHVEVTVF9DSEVDS18odGhyZWFk
X2lkICE9IDApIDw8IDo6R2V0TGFzdEVycm9yKCk7Ci0gICAgc3RkOjp2ZWN0b3I8bGlua2VkX3B0
cjxUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZT4gPiB2YWx1ZV9ob2xkZXJzOwotICAgIC8vIENs
ZWFuIHVwIHRoZSBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGRhdGEgc3RydWN0dXJlIHdoaWxlIGhv
bGRpbmcgdGhlCi0gICAgLy8gbG9jaywgYnV0IGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUg
VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgotICAgIHsKLSAgICAgIE11dGV4TG9jayBsb2Nr
KCZtdXRleF8pOwotICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMgPQotICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tlZCgpOwot
ICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9
Ci0gICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmZpbmQodGhyZWFkX2lkKTsKLSAg
ICAgIGlmICh0aHJlYWRfbG9jYWxfcG9zICE9IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5lbmQo
KSkgewotICAgICAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRo
cmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKLSAgICAgICAgZm9yIChUaHJlYWRMb2NhbFZhbHVlczo6
aXRlcmF0b3IgdmFsdWVfcG9zID0KLSAgICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuYmVn
aW4oKTsKLSAgICAgICAgICAgIHZhbHVlX3BvcyAhPSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVuZCgp
OwotICAgICAgICAgICAgKyt2YWx1ZV9wb3MpIHsKLSAgICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1
c2hfYmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhyZWFkX3Rv
X3RocmVhZF9sb2NhbHMtPmVyYXNlKHRocmVhZF9sb2NhbF9wb3MpOwotICAgICAgfQotICAgIH0K
LSAgICAvLyBPdXRzaWRlIHRoZSBsb2NrLCBsZXQgdGhlIGRlc3RydWN0b3IgZm9yICd2YWx1ZV9o
b2xkZXJzJyBkZWFsbG9jYXRlIHRoZQotICAgIC8vIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNl
cy4KLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gSW4gYSBwYXJ0aWN1bGFyIHRocmVhZCwgbWFwcyBh
IFRocmVhZExvY2FsIG9iamVjdCB0byBpdHMgdmFsdWUuCi0gIHR5cGVkZWYgc3RkOjptYXA8Y29u
c3QgVGhyZWFkTG9jYWxCYXNlKiwKLSAgICAgICAgICAgICAgICAgICBsaW5rZWRfcHRyPFRocmVh
ZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+IFRocmVhZExvY2FsVmFsdWVzOwotICAvLyBTdG9yZXMg
YWxsIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgaGF2aW5nIHZhbHVlcyBpbiBhIHRocmVhZCwgaW5k
ZXhlZCBieQotICAvLyB0aHJlYWQncyBJRC4KLSAgdHlwZWRlZiBzdGQ6Om1hcDxEV09SRCwgVGhy
ZWFkTG9jYWxWYWx1ZXM+IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7Ci0KLSAgLy8gSG9sZHMgdGhl
IHRocmVhZCBpZCBhbmQgdGhyZWFkIGhhbmRsZSB0aGF0IHdlIHBhc3MgZnJvbQotICAvLyBTdGFy
dFdhdGNoZXJUaHJlYWRGb3IgdG8gV2F0Y2hlclRocmVhZEZ1bmMuCi0gIHR5cGVkZWYgc3RkOjpw
YWlyPERXT1JELCBIQU5ETEU+IFRocmVhZElkQW5kSGFuZGxlOwotCi0gIHN0YXRpYyB2b2lkIFN0
YXJ0V2F0Y2hlclRocmVhZEZvcihEV09SRCB0aHJlYWRfaWQpIHsKLSAgICAvLyBUaGUgcmV0dXJu
ZWQgaGFuZGxlIHdpbGwgYmUga2VwdCBpbiB0aHJlYWRfbWFwIGFuZCBjbG9zZWQgYnkKLSAgICAv
LyB3YXRjaGVyX3RocmVhZCBpbiBXYXRjaGVyVGhyZWFkRnVuYy4KLSAgICBIQU5ETEUgdGhyZWFk
ID0gOjpPcGVuVGhyZWFkKFNZTkNIUk9OSVpFIHwgVEhSRUFEX1FVRVJZX0lORk9STUFUSU9OLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJlYWRfaWQpOwotICAgIEdURVNUX0NIRUNLXyh0aHJlYWQgIT0g
TlVMTCk7Ci0gICAgLy8gV2UgbmVlZCB0byB0byBwYXNzIGEgdmFsaWQgdGhyZWFkIElEIHBvaW50
ZXIgaW50byBDcmVhdGVUaHJlYWQgZm9yIGl0Ci0gICAgLy8gdG8gd29yayBjb3JyZWN0bHkgdW5k
ZXIgV2luOTguCi0gICAgRFdPUkQgd2F0Y2hlcl90aHJlYWRfaWQ7Ci0gICAgSEFORExFIHdhdGNo
ZXJfdGhyZWFkID0gOjpDcmVhdGVUaHJlYWQoCi0gICAgICAgIE5VTEwsICAgLy8gRGVmYXVsdCBz
ZWN1cml0eS4KLSAgICAgICAgMCwgICAgICAvLyBEZWZhdWx0IHN0YWNrIHNpemUKLSAgICAgICAg
JlRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjpXYXRjaGVyVGhyZWFkRnVuYywKLSAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxMUFZPSUQ+KG5ldyBUaHJlYWRJZEFuZEhhbmRsZSh0aHJlYWRfaWQsIHRo
cmVhZCkpLAotICAgICAgICBDUkVBVEVfU1VTUEVOREVELAotICAgICAgICAmd2F0Y2hlcl90aHJl
YWRfaWQpOwotICAgIEdURVNUX0NIRUNLXyh3YXRjaGVyX3RocmVhZCAhPSBOVUxMKTsKLSAgICAv
LyBHaXZlIHRoZSB3YXRjaGVyIHRocmVhZCB0aGUgc2FtZSBwcmlvcml0eSBhcyBvdXJzIHRvIGF2
b2lkIGJlaW5nCi0gICAgLy8gYmxvY2tlZCBieSBpdC4KLSAgICA6OlNldFRocmVhZFByaW9yaXR5
KHdhdGNoZXJfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgOjpHZXRUaHJlYWRQcmlv
cml0eSg6OkdldEN1cnJlbnRUaHJlYWQoKSkpOwotICAgIDo6UmVzdW1lVGhyZWFkKHdhdGNoZXJf
dGhyZWFkKTsKLSAgICA6OkNsb3NlSGFuZGxlKHdhdGNoZXJfdGhyZWFkKTsKLSAgfQotCi0gIC8v
IE1vbml0b3JzIGV4aXQgZnJvbSBhIGdpdmVuIHRocmVhZCBhbmQgbm90aWZpZXMgdGhvc2UKLSAg
Ly8gVGhyZWFkSWRUb1RocmVhZExvY2FscyBhYm91dCB0aHJlYWQgdGVybWluYXRpb24uCi0gIHN0
YXRpYyBEV09SRCBXSU5BUEkgV2F0Y2hlclRocmVhZEZ1bmMoTFBWT0lEIHBhcmFtKSB7Ci0gICAg
Y29uc3QgVGhyZWFkSWRBbmRIYW5kbGUqIHRhaCA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVGhyZWFkSWRBbmRIYW5kbGUqPihwYXJhbSk7Ci0gICAgR1RFU1RfQ0hFQ0tfKAotICAg
ICAgICA6OldhaXRGb3JTaW5nbGVPYmplY3QodGFoLT5zZWNvbmQsIElORklOSVRFKSA9PSBXQUlU
X09CSkVDVF8wKTsKLSAgICBPblRocmVhZEV4aXQodGFoLT5maXJzdCk7Ci0gICAgOjpDbG9zZUhh
bmRsZSh0YWgtPnNlY29uZCk7Ci0gICAgZGVsZXRlIHRhaDsKLSAgICByZXR1cm4gMDsKLSAgfQot
Ci0gIC8vIFJldHVybnMgbWFwIG9mIHRocmVhZCBsb2NhbCBpbnN0YW5jZXMuCi0gIHN0YXRpYyBU
aHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSB7Ci0gICAg
bXV0ZXhfLkFzc2VydEhlbGQoKTsKLSAgICBzdGF0aWMgVGhyZWFkSWRUb1RocmVhZExvY2Fscyog
bWFwID0gbmV3IFRocmVhZElkVG9UaHJlYWRMb2NhbHM7Ci0gICAgcmV0dXJuIG1hcDsKLSAgfQot
Ci0gIC8vIFByb3RlY3RzIGFjY2VzcyB0byBHZXRUaHJlYWRMb2NhbHNNYXBMb2NrZWQoKSBhbmQg
aXRzIHJldHVybiB2YWx1ZS4KLSAgc3RhdGljIE11dGV4IG11dGV4XzsKLSAgLy8gUHJvdGVjdHMg
YWNjZXNzIHRvIEdldFRocmVhZE1hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgotICBz
dGF0aWMgTXV0ZXggdGhyZWFkX21hcF9tdXRleF87Ci19OwotCi1NdXRleCBUaHJlYWRMb2NhbFJl
Z2lzdHJ5SW1wbDo6bXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOwotTXV0ZXggVGhyZWFkTG9j
YWxSZWdpc3RyeUltcGw6OnRocmVhZF9tYXBfbXV0ZXhfKE11dGV4OjprU3RhdGljTXV0ZXgpOwot
Ci1UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSogVGhyZWFkTG9jYWxSZWdpc3RyeTo6R2V0VmFs
dWVPbkN1cnJlbnRUaHJlYWQoCi0gICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9s
b2NhbF9pbnN0YW5jZSkgewotICByZXR1cm4gVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OkdldFZh
bHVlT25DdXJyZW50VGhyZWFkKAotICAgICAgdGhyZWFkX2xvY2FsX2luc3RhbmNlKTsKLX0KLQot
dm9pZCBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKAotICAgICAg
Y29uc3QgVGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKLSAgVGhyZWFk
TG9jYWxSZWdpc3RyeUltcGw6Ok9uVGhyZWFkTG9jYWxEZXN0cm95ZWQodGhyZWFkX2xvY2FsX2lu
c3RhbmNlKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFICYmIEdURVNUX09T
X1dJTkRPV1MKLQotI2lmIEdURVNUX1VTRVNfUE9TSVhfUkUKLQotLy8gSW1wbGVtZW50cyBSRS4g
IEN1cnJlbnRseSBvbmx5IG5lZWRlZCBmb3IgZGVhdGggdGVzdHMuCi0KLVJFOjp+UkUoKSB7Ci0g
IGlmIChpc192YWxpZF8pIHsKLSAgICAvLyByZWdmcmVlJ2luZyBhbiBpbnZhbGlkIHJlZ2V4IG1p
Z2h0IGNyYXNoIGJlY2F1c2UgdGhlIGNvbnRlbnQKLSAgICAvLyBvZiB0aGUgcmVnZXggaXMgdW5k
ZWZpbmVkLiBTaW5jZSB0aGUgcmVnZXgncyBhcmUgZXNzZW50aWFsbHkKLSAgICAvLyB0aGUgc2Ft
ZSwgb25lIGNhbm5vdCBiZSB2YWxpZCAob3IgaW52YWxpZCkgd2l0aG91dCB0aGUgb3RoZXIKLSAg
ICAvLyBiZWluZyBzbyB0b28uCi0gICAgcmVnZnJlZSgmcGFydGlhbF9yZWdleF8pOwotICAgIHJl
Z2ZyZWUoJmZ1bGxfcmVnZXhfKTsKLSAgfQotICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHBhdHRl
cm5fKSk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlIG1h
dGNoZXMgdGhlIGVudGlyZSBzdHIuCi1ib29sIFJFOjpGdWxsTWF0Y2goY29uc3QgY2hhciogc3Ry
LCBjb25zdCBSRSYgcmUpIHsKLSAgaWYgKCFyZS5pc192YWxpZF8pIHJldHVybiBmYWxzZTsKLQot
ICByZWdtYXRjaF90IG1hdGNoOwotICByZXR1cm4gcmVnZXhlYygmcmUuZnVsbF9yZWdleF8sIHN0
ciwgMSwgJm1hdGNoLCAwKSA9PSAwOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHJlZ3VsYXIg
ZXhwcmVzc2lvbiByZSBtYXRjaGVzIGEgc3Vic3RyaW5nIG9mIHN0cgotLy8gKGluY2x1ZGluZyBz
dHIgaXRzZWxmKS4KLWJvb2wgUkU6OlBhcnRpYWxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0
IFJFJiByZSkgewotICBpZiAoIXJlLmlzX3ZhbGlkXykgcmV0dXJuIGZhbHNlOwotCi0gIHJlZ21h
dGNoX3QgbWF0Y2g7Ci0gIHJldHVybiByZWdleGVjKCZyZS5wYXJ0aWFsX3JlZ2V4Xywgc3RyLCAx
LCAmbWF0Y2gsIDApID09IDA7Ci19Ci0KLS8vIEluaXRpYWxpemVzIGFuIFJFIGZyb20gaXRzIHN0
cmluZyByZXByZXNlbnRhdGlvbi4KLXZvaWQgUkU6OkluaXQoY29uc3QgY2hhciogcmVnZXgpIHsK
LSAgcGF0dGVybl8gPSBwb3NpeDo6U3RyRHVwKHJlZ2V4KTsKLQotICAvLyBSZXNlcnZlcyBlbm91
Z2ggYnl0ZXMgdG8gaG9sZCB0aGUgcmVndWxhciBleHByZXNzaW9uIHVzZWQgZm9yIGEKLSAgLy8g
ZnVsbCBtYXRjaC4KLSAgY29uc3Qgc2l6ZV90IGZ1bGxfcmVnZXhfbGVuID0gc3RybGVuKHJlZ2V4
KSArIDEwOwotICBjaGFyKiBjb25zdCBmdWxsX3BhdHRlcm4gPSBuZXcgY2hhcltmdWxsX3JlZ2V4
X2xlbl07Ci0KLSAgc25wcmludGYoZnVsbF9wYXR0ZXJuLCBmdWxsX3JlZ2V4X2xlbiwgIl4oJXMp
JCIsIHJlZ2V4KTsKLSAgaXNfdmFsaWRfID0gcmVnY29tcCgmZnVsbF9yZWdleF8sIGZ1bGxfcGF0
dGVybiwgUkVHX0VYVEVOREVEKSA9PSAwOwotICAvLyBXZSB3YW50IHRvIGNhbGwgcmVnY29tcCgm
cGFydGlhbF9yZWdleF8sIC4uLikgZXZlbiBpZiB0aGUKLSAgLy8gcHJldmlvdXMgZXhwcmVzc2lv
biByZXR1cm5zIGZhbHNlLiAgT3RoZXJ3aXNlIHBhcnRpYWxfcmVnZXhfIG1heQotICAvLyBub3Qg
YmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQgY2FuIG1heSBjYXVzZSB0cm91YmxlIHdoZW4gaXQncwot
ICAvLyBmcmVlZC4KLSAgLy8KLSAgLy8gU29tZSBpbXBsZW1lbnRhdGlvbiBvZiBQT1NJWCByZWdl
eCAoZS5nLiBvbiBhdCBsZWFzdCBzb21lCi0gIC8vIHZlcnNpb25zIG9mIEN5Z3dpbikgZG9lc24n
dCBhY2NlcHQgdGhlIGVtcHR5IHN0cmluZyBhcyBhIHZhbGlkCi0gIC8vIHJlZ2V4LiAgV2UgY2hh
bmdlIGl0IHRvIGFuIGVxdWl2YWxlbnQgZm9ybSAiKCkiIHRvIGJlIHNhZmUuCi0gIGlmIChpc192
YWxpZF8pIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBwYXJ0aWFsX3JlZ2V4ID0gKCpyZWdleCA9
PSAnXDAnKSA/ICIoKSIgOiByZWdleDsKLSAgICBpc192YWxpZF8gPSByZWdjb21wKCZwYXJ0aWFs
X3JlZ2V4XywgcGFydGlhbF9yZWdleCwgUkVHX0VYVEVOREVEKSA9PSAwOwotICB9Ci0gIEVYUEVD
VF9UUlVFKGlzX3ZhbGlkXykKLSAgICAgIDw8ICJSZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8IHJl
Z2V4Ci0gICAgICA8PCAiXCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBl
eHByZXNzaW9uLiI7Ci0KLSAgZGVsZXRlW10gZnVsbF9wYXR0ZXJuOwotfQotCi0jZWxpZiBHVEVT
VF9VU0VTX1NJTVBMRV9SRQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIGNoIGFwcGVhcnMgYW55d2hl
cmUgaW4gc3RyIChleGNsdWRpbmcgdGhlCi0vLyB0ZXJtaW5hdGluZyAnXDAnIGNoYXJhY3Rlciku
Ci1ib29sIElzSW5TZXQoY2hhciBjaCwgY29uc3QgY2hhciogc3RyKSB7Ci0gIHJldHVybiBjaCAh
PSAnXDAnICYmIHN0cmNocihzdHIsIGNoKSAhPSBOVUxMOwotfQotCi0vLyBSZXR1cm5zIHRydWUg
aWZmIGNoIGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGNsYXNzaWZpY2F0aW9uLiAgVW5saWtlCi0vLyBz
aW1pbGFyIGZ1bmN0aW9ucyBpbiA8Y3R5cGUuaD4sIHRoZXNlIGFyZW4ndCBhZmZlY3RlZCBieSB0
aGUKLS8vIGN1cnJlbnQgbG9jYWxlLgotYm9vbCBJc0FzY2lpRGlnaXQoY2hhciBjaCkgeyByZXR1
cm4gJzAnIDw9IGNoICYmIGNoIDw9ICc5JzsgfQotYm9vbCBJc0FzY2lpUHVuY3QoY2hhciBjaCkg
ewotICByZXR1cm4gSXNJblNldChjaCwgIl4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8
fX4iKTsKLX0KLWJvb2wgSXNSZXBlYXQoY2hhciBjaCkgeyByZXR1cm4gSXNJblNldChjaCwgIj8q
KyIpOyB9Ci1ib29sIElzQXNjaWlXaGl0ZVNwYWNlKGNoYXIgY2gpIHsgcmV0dXJuIElzSW5TZXQo
Y2gsICIgXGZcblxyXHRcdiIpOyB9Ci1ib29sIElzQXNjaWlXb3JkQ2hhcihjaGFyIGNoKSB7Ci0g
IHJldHVybiAoJ2EnIDw9IGNoICYmIGNoIDw9ICd6JykgfHwgKCdBJyA8PSBjaCAmJiBjaCA8PSAn
WicpIHx8Ci0gICAgICAoJzAnIDw9IGNoICYmIGNoIDw9ICc5JykgfHwgY2ggPT0gJ18nOwotfQot
Ci0vLyBSZXR1cm5zIHRydWUgaWZmICJcXGMiIGlzIGEgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5j
ZS4KLWJvb2wgSXNWYWxpZEVzY2FwZShjaGFyIGMpIHsKLSAgcmV0dXJuIChJc0FzY2lpUHVuY3Qo
YykgfHwgSXNJblNldChjLCAiZERmbnJzU3R2d1ciKSk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIGdpdmVuIGF0b20gKHNwZWNpZmllZCBieSBlc2NhcGVkIGFuZCBwYXR0ZXJuKQotLy8g
bWF0Y2hlcyBjaC4gIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSBhdG9tIGlzIGludmFs
aWQuCi1ib29sIEF0b21NYXRjaGVzQ2hhcihib29sIGVzY2FwZWQsIGNoYXIgcGF0dGVybl9jaGFy
LCBjaGFyIGNoKSB7Ci0gIGlmIChlc2NhcGVkKSB7ICAvLyAiXFxwIiB3aGVyZSBwIGlzIHBhdHRl
cm5fY2hhci4KLSAgICBzd2l0Y2ggKHBhdHRlcm5fY2hhcikgewotICAgICAgY2FzZSAnZCc6IHJl
dHVybiBJc0FzY2lpRGlnaXQoY2gpOwotICAgICAgY2FzZSAnRCc6IHJldHVybiAhSXNBc2NpaURp
Z2l0KGNoKTsKLSAgICAgIGNhc2UgJ2YnOiByZXR1cm4gY2ggPT0gJ1xmJzsKLSAgICAgIGNhc2Ug
J24nOiByZXR1cm4gY2ggPT0gJ1xuJzsKLSAgICAgIGNhc2UgJ3InOiByZXR1cm4gY2ggPT0gJ1xy
JzsKLSAgICAgIGNhc2UgJ3MnOiByZXR1cm4gSXNBc2NpaVdoaXRlU3BhY2UoY2gpOwotICAgICAg
Y2FzZSAnUyc6IHJldHVybiAhSXNBc2NpaVdoaXRlU3BhY2UoY2gpOwotICAgICAgY2FzZSAndCc6
IHJldHVybiBjaCA9PSAnXHQnOwotICAgICAgY2FzZSAndic6IHJldHVybiBjaCA9PSAnXHYnOwot
ICAgICAgY2FzZSAndyc6IHJldHVybiBJc0FzY2lpV29yZENoYXIoY2gpOwotICAgICAgY2FzZSAn
Vyc6IHJldHVybiAhSXNBc2NpaVdvcmRDaGFyKGNoKTsKLSAgICB9Ci0gICAgcmV0dXJuIElzQXNj
aWlQdW5jdChwYXR0ZXJuX2NoYXIpICYmIHBhdHRlcm5fY2hhciA9PSBjaDsKLSAgfQotCi0gIHJl
dHVybiAocGF0dGVybl9jaGFyID09ICcuJyAmJiBjaCAhPSAnXG4nKSB8fCBwYXR0ZXJuX2NoYXIg
PT0gY2g7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IFZhbGlkYXRlUmVnZXgoKSB0
byBmb3JtYXQgZXJyb3IgbWVzc2FnZXMuCi1zdGQ6OnN0cmluZyBGb3JtYXRSZWdleFN5bnRheEVy
cm9yKGNvbnN0IGNoYXIqIHJlZ2V4LCBpbnQgaW5kZXgpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkg
PDwgIlN5bnRheCBlcnJvciBhdCBpbmRleCAiIDw8IGluZGV4Ci0gICAgICAgICAgPDwgIiBpbiBz
aW1wbGUgcmVndWxhciBleHByZXNzaW9uIFwiIiA8PCByZWdleCA8PCAiXCI6ICIpLkdldFN0cmlu
ZygpOwotfQotCi0vLyBHZW5lcmF0ZXMgbm9uLWZhdGFsIGZhaWx1cmVzIGFuZCByZXR1cm5zIGZh
bHNlIGlmIHJlZ2V4IGlzIGludmFsaWQ7Ci0vLyBvdGhlcndpc2UgcmV0dXJucyB0cnVlLgotYm9v
bCBWYWxpZGF0ZVJlZ2V4KGNvbnN0IGNoYXIqIHJlZ2V4KSB7Ci0gIGlmIChyZWdleCA9PSBOVUxM
KSB7Ci0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGZpeCB0aGUgc291cmNlIGZpbGUgbG9j
YXRpb24gaW4gdGhlCi0gICAgLy8gYXNzZXJ0aW9uIGZhaWx1cmVzIHRvIG1hdGNoIHdoZXJlIHRo
ZSByZWdleCBpcyB1c2VkIGluIHVzZXIKLSAgICAvLyBjb2RlLgotICAgIEFERF9GQUlMVVJFKCkg
PDwgIk5VTEwgaXMgbm90IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iOwotICAg
IHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGJvb2wgaXNfdmFsaWQgPSB0cnVlOwotCi0gIC8vIFRy
dWUgaWZmID8sICosIG9yICsgY2FuIGZvbGxvdyB0aGUgcHJldmlvdXMgYXRvbS4KLSAgYm9vbCBw
cmV2X3JlcGVhdGFibGUgPSBmYWxzZTsKLSAgZm9yIChpbnQgaSA9IDA7IHJlZ2V4W2ldOyBpKysp
IHsKLSAgICBpZiAocmVnZXhbaV0gPT0gJ1xcJykgeyAgLy8gQW4gZXNjYXBlIHNlcXVlbmNlCi0g
ICAgICBpKys7Ci0gICAgICBpZiAocmVnZXhbaV0gPT0gJ1wwJykgewotICAgICAgICBBRERfRkFJ
TFVSRSgpIDw8IEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IocmVnZXgsIGkgLSAxKQotICAgICAgICAg
ICAgICAgICAgICAgIDw8ICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZC4iOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghSXNWYWxpZEVzY2FwZShyZWdl
eFtpXSkpIHsKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRheEVycm9y
KHJlZ2V4LCBpIC0gMSkKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiaW52YWxpZCBlc2NhcGUg
c2VxdWVuY2UgXCJcXCIgPDwgcmVnZXhbaV0gPDwgIlwiLiI7Ci0gICAgICAgIGlzX3ZhbGlkID0g
ZmFsc2U7Ci0gICAgICB9Ci0gICAgICBwcmV2X3JlcGVhdGFibGUgPSB0cnVlOwotICAgIH0gZWxz
ZSB7ICAvLyBOb3QgYW4gZXNjYXBlIHNlcXVlbmNlLgotICAgICAgY29uc3QgY2hhciBjaCA9IHJl
Z2V4W2ldOwotCi0gICAgICBpZiAoY2ggPT0gJ14nICYmIGkgPiAwKSB7Ci0gICAgICAgIEFERF9G
QUlMVVJFKCkgPDwgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihyZWdleCwgaSkKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nLiI7Ci0g
ICAgICAgIGlzX3ZhbGlkID0gZmFsc2U7Ci0gICAgICB9IGVsc2UgaWYgKGNoID09ICckJyAmJiBy
ZWdleFtpICsgMV0gIT0gJ1wwJykgewotICAgICAgICBBRERfRkFJTFVSRSgpIDw8IEZvcm1hdFJl
Z2V4U3ludGF4RXJyb3IocmVnZXgsIGkpCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIickJyBj
YW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZC4iOwotICAgICAgICBpc192YWxpZCA9IGZhbHNlOwot
ICAgICAgfSBlbHNlIGlmIChJc0luU2V0KGNoLCAiKClbXXt9fCIpKSB7Ci0gICAgICAgIEFERF9G
QUlMVVJFKCkgPDwgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihyZWdleCwgaSkKLSAgICAgICAgICAg
ICAgICAgICAgICA8PCAiJyIgPDwgY2ggPDwgIicgaXMgdW5zdXBwb3J0ZWQuIjsKLSAgICAgICAg
aXNfdmFsaWQgPSBmYWxzZTsKLSAgICAgIH0gZWxzZSBpZiAoSXNSZXBlYXQoY2gpICYmICFwcmV2
X3JlcGVhdGFibGUpIHsKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRh
eEVycm9yKHJlZ2V4LCBpKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICInIiA8PCBjaCA8PCAi
JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuLiI7Ci0gICAgICAgIGlzX3ZhbGlk
ID0gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIHByZXZfcmVwZWF0YWJsZSA9ICFJc0luU2V0KGNo
LCAiXiQ/KisiKTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gaXNfdmFsaWQ7Ci19Ci0KLS8vIE1h
dGNoZXMgYSByZXBlYXRlZCByZWdleCBhdG9tIGZvbGxvd2VkIGJ5IGEgdmFsaWQgc2ltcGxlIHJl
Z3VsYXIKLS8vIGV4cHJlc3Npb24uICBUaGUgcmVnZXggYXRvbSBpcyBkZWZpbmVkIGFzIGMgaWYg
ZXNjYXBlZCBpcyBmYWxzZSwKLS8vIG9yIFxjIG90aGVyd2lzZS4gIHJlcGVhdCBpcyB0aGUgcmVw
ZXRpdGlvbiBtZXRhIGNoYXJhY3RlciAoPywgKiwKLS8vIG9yICspLiAgVGhlIGJlaGF2aW9yIGlz
IHVuZGVmaW5lZCBpZiBzdHIgY29udGFpbnMgdG9vIG1hbnkKLS8vIGNoYXJhY3RlcnMgdG8gYmUg
aW5kZXhhYmxlIGJ5IHNpemVfdCwgaW4gd2hpY2ggY2FzZSB0aGUgdGVzdCB3aWxsCi0vLyBwcm9i
YWJseSB0aW1lIG91dCBhbnl3YXkuICBXZSBhcmUgZmluZSB3aXRoIHRoaXMgbGltaXRhdGlvbiBh
cwotLy8gc3RkOjpzdHJpbmcgaGFzIGl0IHRvby4KLWJvb2wgTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWQoCi0gICAgYm9vbCBlc2NhcGVkLCBjaGFyIGMsIGNoYXIgcmVwZWF0LCBjb25zdCBj
aGFyKiByZWdleCwKLSAgICBjb25zdCBjaGFyKiBzdHIpIHsKLSAgY29uc3Qgc2l6ZV90IG1pbl9j
b3VudCA9IChyZXBlYXQgPT0gJysnKSA/IDEgOiAwOwotICBjb25zdCBzaXplX3QgbWF4X2NvdW50
ID0gKHJlcGVhdCA9PSAnPycpID8gMSA6Ci0gICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSAt
IDE7Ci0gIC8vIFdlIGNhbm5vdCBjYWxsIG51bWVyaWNfbGltaXRzOjptYXgoKSBhcyBpdCBjb25m
bGljdHMgd2l0aCB0aGUKLSAgLy8gbWF4KCkgbWFjcm8gb24gV2luZG93cy4KLQotICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8PSBtYXhfY291bnQ7ICsraSkgewotICAgIC8vIFdlIGtub3cgdGhhdCB0
aGUgYXRvbSBtYXRjaGVzIGVhY2ggb2YgdGhlIGZpcnN0IGkgY2hhcmFjdGVycyBpbiBzdHIuCi0g
ICAgaWYgKGkgPj0gbWluX2NvdW50ICYmIE1hdGNoUmVnZXhBdEhlYWQocmVnZXgsIHN0ciArIGkp
KSB7Ci0gICAgICAvLyBXZSBoYXZlIGVub3VnaCBtYXRjaGVzIGF0IHRoZSBoZWFkLCBhbmQgdGhl
IHRhaWwgbWF0Y2hlcyB0b28uCi0gICAgICAvLyBTaW5jZSB3ZSBvbmx5IGNhcmUgYWJvdXQgKndo
ZXRoZXIqIHRoZSBwYXR0ZXJuIG1hdGNoZXMgc3RyCi0gICAgICAvLyAoYXMgb3Bwb3NlZCB0byAq
aG93KiBpdCBtYXRjaGVzKSwgdGhlcmUgaXMgbm8gbmVlZCB0byBmaW5kIGEKLSAgICAgIC8vIGdy
ZWVkeSBtYXRjaC4KLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoc3RyW2ldID09
ICdcMCcgfHwgIUF0b21NYXRjaGVzQ2hhcihlc2NhcGVkLCBjLCBzdHJbaV0pKQotICAgICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlm
ZiByZWdleCBtYXRjaGVzIGEgcHJlZml4IG9mIHN0ci4gIHJlZ2V4IG11c3QgYmUgYQotLy8gdmFs
aWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiBhbmQgbm90IHN0YXJ0IHdpdGggIl4iLCBvciB0
aGUKLS8vIHJlc3VsdCBpcyB1bmRlZmluZWQuCi1ib29sIE1hdGNoUmVnZXhBdEhlYWQoY29uc3Qg
Y2hhciogcmVnZXgsIGNvbnN0IGNoYXIqIHN0cikgewotICBpZiAoKnJlZ2V4ID09ICdcMCcpICAv
LyBBbiBlbXB0eSByZWdleCBtYXRjaGVzIGEgcHJlZml4IG9mIGFueXRoaW5nLgotICAgIHJldHVy
biB0cnVlOwotCi0gIC8vICIkIiBvbmx5IG1hdGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZy4gIE5v
dGUgdGhhdCByZWdleCBiZWluZwotICAvLyB2YWxpZCBndWFyYW50ZWVzIHRoYXQgdGhlcmUncyBu
b3RoaW5nIGFmdGVyICIkIiBpbiBpdC4KLSAgaWYgKCpyZWdleCA9PSAnJCcpCi0gICAgcmV0dXJu
ICpzdHIgPT0gJ1wwJzsKLQotICAvLyBJcyB0aGUgZmlyc3QgdGhpbmcgaW4gcmVnZXggYW4gZXNj
YXBlIHNlcXVlbmNlPwotICBjb25zdCBib29sIGVzY2FwZWQgPSAqcmVnZXggPT0gJ1xcJzsKLSAg
aWYgKGVzY2FwZWQpCi0gICAgKytyZWdleDsKLSAgaWYgKElzUmVwZWF0KHJlZ2V4WzFdKSkgewot
ICAgIC8vIE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKCkgY2FsbHMgTWF0Y2hSZWdleEF0
SGVhZCgpLCBzbwotICAgIC8vIGhlcmUncyBhbiBpbmRpcmVjdCByZWN1cnNpb24uICBJdCB0ZXJt
aW5hdGVzIGFzIHRoZSByZWdleCBnZXRzCi0gICAgLy8gc2hvcnRlciBpbiBlYWNoIHJlY3Vyc2lv
bi4KLSAgICByZXR1cm4gTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoCi0gICAgICAgIGVz
Y2FwZWQsIHJlZ2V4WzBdLCByZWdleFsxXSwgcmVnZXggKyAyLCBzdHIpOwotICB9IGVsc2Ugewot
ICAgIC8vIHJlZ2V4IGlzbid0IGVtcHR5LCBpc24ndCAiJCIsIGFuZCBkb2Vzbid0IHN0YXJ0IHdp
dGggYQotICAgIC8vIHJlcGV0aXRpb24uICBXZSBtYXRjaCB0aGUgZmlyc3QgYXRvbSBvZiByZWdl
eCB3aXRoIHRoZSBmaXJzdAotICAgIC8vIGNoYXJhY3RlciBvZiBzdHIgYW5kIHJlY3Vyc2UuCi0g
ICAgcmV0dXJuICgqc3RyICE9ICdcMCcpICYmIEF0b21NYXRjaGVzQ2hhcihlc2NhcGVkLCAqcmVn
ZXgsICpzdHIpICYmCi0gICAgICAgIE1hdGNoUmVnZXhBdEhlYWQocmVnZXggKyAxLCBzdHIgKyAx
KTsKLSAgfQotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHJlZ2V4IG1hdGNoZXMgYW55IHN1YnN0
cmluZyBvZiBzdHIuICByZWdleCBtdXN0IGJlCi0vLyBhIHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4
cHJlc3Npb24sIG9yIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotLy8KLS8vIFRoZSBhbGdvcml0
aG0gaXMgcmVjdXJzaXZlLCBidXQgdGhlIHJlY3Vyc2lvbiBkZXB0aCBkb2Vzbid0IGV4Y2VlZAot
Ly8gdGhlIHJlZ2V4IGxlbmd0aCwgc28gd2Ugd29uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBydW5u
aW5nIG91dCBvZgotLy8gc3RhY2sgc3BhY2Ugbm9ybWFsbHkuICBJbiByYXJlIGNhc2VzIHRoZSB0
aW1lIGNvbXBsZXhpdHkgY2FuIGJlCi0vLyBleHBvbmVudGlhbCB3aXRoIHJlc3BlY3QgdG8gdGhl
IHJlZ2V4IGxlbmd0aCArIHRoZSBzdHJpbmcgbGVuZ3RoLAotLy8gYnV0IHVzdWFsbHkgaXQncyBt
dXN0IGZhc3RlciAob2Z0ZW4gY2xvc2UgdG8gbGluZWFyKS4KLWJvb2wgTWF0Y2hSZWdleEFueXdo
ZXJlKGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpIHsKLSAgaWYgKHJlZ2V4ID09
IE5VTEwgfHwgc3RyID09IE5VTEwpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmICgqcmVnZXgg
PT0gJ14nKQotICAgIHJldHVybiBNYXRjaFJlZ2V4QXRIZWFkKHJlZ2V4ICsgMSwgc3RyKTsKLQot
ICAvLyBBIHN1Y2Nlc3NmdWwgbWF0Y2ggY2FuIGJlIGFueXdoZXJlIGluIHN0ci4KLSAgZG8gewot
ICAgIGlmIChNYXRjaFJlZ2V4QXRIZWFkKHJlZ2V4LCBzdHIpKQotICAgICAgcmV0dXJuIHRydWU7
Ci0gIH0gd2hpbGUgKCpzdHIrKyAhPSAnXDAnKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBJ
bXBsZW1lbnRzIHRoZSBSRSBjbGFzcy4KLQotUkU6On5SRSgpIHsKLSAgZnJlZShjb25zdF9jYXN0
PGNoYXIqPihwYXR0ZXJuXykpOwotICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KGZ1bGxfcGF0dGVy
bl8pKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiByZWd1bGFyIGV4cHJlc3Npb24gcmUgbWF0
Y2hlcyB0aGUgZW50aXJlIHN0ci4KLWJvb2wgUkU6OkZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIs
IGNvbnN0IFJFJiByZSkgewotICByZXR1cm4gcmUuaXNfdmFsaWRfICYmIE1hdGNoUmVnZXhBbnl3
aGVyZShyZS5mdWxsX3BhdHRlcm5fLCBzdHIpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHJl
Z3VsYXIgZXhwcmVzc2lvbiByZSBtYXRjaGVzIGEgc3Vic3RyaW5nIG9mIHN0cgotLy8gKGluY2x1
ZGluZyBzdHIgaXRzZWxmKS4KLWJvb2wgUkU6OlBhcnRpYWxNYXRjaChjb25zdCBjaGFyKiBzdHIs
IGNvbnN0IFJFJiByZSkgewotICByZXR1cm4gcmUuaXNfdmFsaWRfICYmIE1hdGNoUmVnZXhBbnl3
aGVyZShyZS5wYXR0ZXJuXywgc3RyKTsKLX0KLQotLy8gSW5pdGlhbGl6ZXMgYW4gUkUgZnJvbSBp
dHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgotdm9pZCBSRTo6SW5pdChjb25zdCBjaGFyKiByZWdl
eCkgewotICBwYXR0ZXJuXyA9IGZ1bGxfcGF0dGVybl8gPSBOVUxMOwotICBpZiAocmVnZXggIT0g
TlVMTCkgewotICAgIHBhdHRlcm5fID0gcG9zaXg6OlN0ckR1cChyZWdleCk7Ci0gIH0KLQotICBp
c192YWxpZF8gPSBWYWxpZGF0ZVJlZ2V4KHJlZ2V4KTsKLSAgaWYgKCFpc192YWxpZF8pIHsKLSAg
ICAvLyBObyBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgZnVsbCBwYXR0ZXJuIHdoZW4gdGhlIHJlZ2V4
IGlzIGludmFsaWQuCi0gICAgcmV0dXJuOwotICB9Ci0KLSAgY29uc3Qgc2l6ZV90IGxlbiA9IHN0
cmxlbihyZWdleCk7Ci0gIC8vIFJlc2VydmVzIGVub3VnaCBieXRlcyB0byBob2xkIHRoZSByZWd1
bGFyIGV4cHJlc3Npb24gdXNlZCBmb3IgYQotICAvLyBmdWxsIG1hdGNoOiB3ZSBuZWVkIHNwYWNl
IHRvIHByZXBlbmQgYSAnXicsIGFwcGVuZCBhICckJywgYW5kCi0gIC8vIHRlcm1pbmF0ZSB0aGUg
c3RyaW5nIHdpdGggJ1wwJy4KLSAgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1h
bGxvYyhsZW4gKyAzKSk7Ci0gIGZ1bGxfcGF0dGVybl8gPSBidWZmZXI7Ci0KLSAgaWYgKCpyZWdl
eCAhPSAnXicpCi0gICAgKmJ1ZmZlcisrID0gJ14nOyAgLy8gTWFrZXMgc3VyZSBmdWxsX3BhdHRl
cm5fIHN0YXJ0cyB3aXRoICdeJy4KLQotICAvLyBXZSBkb24ndCB1c2Ugc25wcmludGYgb3Igc3Ry
bmNweSwgYXMgdGhleSB0cmlnZ2VyIGEgd2FybmluZyB3aGVuCi0gIC8vIGNvbXBpbGVkIHdpdGgg
VkMrKyA4LjAuCi0gIG1lbWNweShidWZmZXIsIHJlZ2V4LCBsZW4pOwotICBidWZmZXIgKz0gbGVu
OwotCi0gIGlmIChsZW4gPT0gMCB8fCByZWdleFtsZW4gLSAxXSAhPSAnJCcpCi0gICAgKmJ1ZmZl
cisrID0gJyQnOyAgLy8gTWFrZXMgc3VyZSBmdWxsX3BhdHRlcm5fIGVuZHMgd2l0aCAnJCcuCi0K
LSAgKmJ1ZmZlciA9ICdcMCc7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQot
Ci1jb25zdCBjaGFyIGtVbmtub3duRmlsZVtdID0gInVua25vd24gZmlsZSI7Ci0KLS8vIEZvcm1h
dHMgYSBzb3VyY2UgZmlsZSBwYXRoIGFuZCBhIGxpbmUgbnVtYmVyIGFzIHRoZXkgd291bGQgYXBw
ZWFyCi0vLyBpbiBhbiBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGNvbXBpbGVyIHVzZWQgdG8gY29t
cGlsZSB0aGlzIGNvZGUuCi1HVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0RmlsZUxvY2F0
aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZp
bGVfbmFtZShmaWxlID09IE5VTEwgPyBrVW5rbm93bkZpbGUgOiBmaWxlKTsKLQotICBpZiAobGlu
ZSA8IDApIHsKLSAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiOwotICB9Ci0jaWZkZWYgX01TQ19W
RVIKLSAgcmV0dXJuIGZpbGVfbmFtZSArICIoIiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKSAr
ICIpOiI7Ci0jZWxzZQotICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3Ry
aW5nKGxpbmUpICsgIjoiOwotI2VuZGlmICAvLyBfTVNDX1ZFUgotfQotCi0vLyBGb3JtYXRzIGEg
ZmlsZSBsb2NhdGlvbiBmb3IgY29tcGlsZXItaW5kZXBlbmRlbnQgWE1MIG91dHB1dC4KLS8vIEFs
dGhvdWdoIHRoaXMgZnVuY3Rpb24gaXMgbm90IHBsYXRmb3JtIGRlcGVuZGVudCwgd2UgcHV0IGl0
IG5leHQgdG8KLS8vIEZvcm1hdEZpbGVMb2NhdGlvbiBpbiBvcmRlciB0byBjb250cmFzdCB0aGUg
dHdvIGZ1bmN0aW9ucy4KLS8vIE5vdGUgdGhhdCBGb3JtYXRDb21waWxlckluZGVwZW5kZW50Rmls
ZUxvY2F0aW9uKCkgZG9lcyBOT1QgYXBwZW5kIGNvbG9uCi0vLyB0byB0aGUgZmlsZSBsb2NhdGlv
biBpdCBwcm9kdWNlcywgdW5saWtlIEZvcm1hdEZpbGVMb2NhdGlvbigpLgotR1RFU1RfQVBJXyA6
OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oCi0gICAg
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9u
YW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3duRmlsZSA6IGZpbGUpOwotCi0gIGlmIChsaW5lIDwg
MCkKLSAgICByZXR1cm4gZmlsZV9uYW1lOwotICBlbHNlCi0gICAgcmV0dXJuIGZpbGVfbmFtZSAr
ICI6IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lKTsKLX0KLQotR1Rlc3RMb2c6OkdUZXN0TG9n
KEdUZXN0TG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKQot
ICAgIDogc2V2ZXJpdHlfKHNldmVyaXR5KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IG1hcmtlciA9
Ci0gICAgICBzZXZlcml0eSA9PSBHVEVTVF9JTkZPID8gICAgIlsgIElORk8gXSIgOgotICAgICAg
c2V2ZXJpdHkgPT0gR1RFU1RfV0FSTklORyA/ICJbV0FSTklOR10iIDoKLSAgICAgIHNldmVyaXR5
ID09IEdURVNUX0VSUk9SID8gICAiWyBFUlJPUiBdIiA6ICJbIEZBVEFMIF0iOwotICBHZXRTdHJl
YW0oKSA8PCA6OnN0ZDo6ZW5kbCA8PCBtYXJrZXIgPDwgIiAiCi0gICAgICAgICAgICAgIDw8IEZv
cm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpIDw8ICI6ICI7Ci19Ci0KLS8vIEZs
dXNoZXMgdGhlIGJ1ZmZlcnMgYW5kLCBpZiBzZXZlcml0eSBpcyBHVEVTVF9GQVRBTCwgYWJvcnRz
IHRoZSBwcm9ncmFtLgotR1Rlc3RMb2c6On5HVGVzdExvZygpIHsKLSAgR2V0U3RyZWFtKCkgPDwg
OjpzdGQ6OmVuZGw7Ci0gIGlmIChzZXZlcml0eV8gPT0gR1RFU1RfRkFUQUwpIHsKLSAgICBmZmx1
c2goc3RkZXJyKTsKLSAgICBwb3NpeDo6QWJvcnQoKTsKLSAgfQotfQotLy8gRGlzYWJsZSBNaWNy
b3NvZnQgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIFBPU0lYIGZ1bmN0aW9ucyBjYWxsZWQgZnJv
bQotLy8gdGhpcyBjbGFzcyAoY3JlYXQsIGR1cCwgZHVwMiwgYW5kIGNsb3NlKQotR1RFU1RfRElT
QUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT04KLQotLy8gT2JqZWN0IHRoYXQgY2FwdHVyZXMgYW4gb3V0cHV0IHN0cmVhbSAoc3Rk
b3V0L3N0ZGVycikuCi1jbGFzcyBDYXB0dXJlZFN0cmVhbSB7Ci0gcHVibGljOgotICAvLyBUaGUg
Y3RvciByZWRpcmVjdHMgdGhlIHN0cmVhbSB0byBhIHRlbXBvcmFyeSBmaWxlLgotICBleHBsaWNp
dCBDYXB0dXJlZFN0cmVhbShpbnQgZmQpIDogZmRfKGZkKSwgdW5jYXB0dXJlZF9mZF8oZHVwKGZk
KSkgewotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAgY2hhciB0ZW1wX2Rpcl9wYXRoW01BWF9Q
QVRIICsgMV0gPSB7ICdcMCcgfTsgIC8vIE5PTElOVAotICAgIGNoYXIgdGVtcF9maWxlX3BhdGhb
TUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5UCi0KLSAgICA6OkdldFRlbXBQYXRo
QShzaXplb2YodGVtcF9kaXJfcGF0aCksIHRlbXBfZGlyX3BhdGgpOwotICAgIGNvbnN0IFVJTlQg
c3VjY2VzcyA9IDo6R2V0VGVtcEZpbGVOYW1lQSh0ZW1wX2Rpcl9wYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3Rlc3RfcmVkaXIiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gR2VuZXJhdGUgdW5pcXVl
IGZpbGUgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVtcF9maWxlX3BhdGgpOwotICAgIEdURVNUX0NIRUNLXyhzdWNjZXNzICE9IDApCi0gICAgICAg
IDw8ICJVbmFibGUgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgaW4gIiA8PCB0ZW1wX2Rpcl9w
YXRoOwotICAgIGNvbnN0IGludCBjYXB0dXJlZF9mZCA9IGNyZWF0KHRlbXBfZmlsZV9wYXRoLCBf
U19JUkVBRCB8IF9TX0lXUklURSk7Ci0gICAgR1RFU1RfQ0hFQ0tfKGNhcHR1cmVkX2ZkICE9IC0x
KSA8PCAiVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgdGVtcF9maWxlX3BhdGg7Ci0gICAgZmlsZW5hbWVfID0gdGVt
cF9maWxlX3BhdGg7Ci0jIGVsc2UKLSAgICAvLyBUaGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IGEg
dGVzdCBoYXMgd3JpdGUgYWNjZXNzIHRvIHRoZSBjdXJyZW50Ci0gICAgLy8gZGlyZWN0b3J5LCBz
byB3ZSBjcmVhdGUgdGhlIHRlbXBvcmFyeSBmaWxlIGluIHRoZSAvdG1wIGRpcmVjdG9yeQotICAg
IC8vIGluc3RlYWQuIFdlIHVzZSAvdG1wIG9uIG1vc3Qgc3lzdGVtcywgYW5kIC9zZGNhcmQgb24g
QW5kcm9pZC4KLSAgICAvLyBUaGF0J3MgYmVjYXVzZSBBbmRyb2lkIGRvZXNuJ3QgaGF2ZSAvdG1w
LgotIyAgaWYgR1RFU1RfT1NfTElOVVhfQU5EUk9JRAotICAgIC8vIE5vdGU6IEFuZHJvaWQgYXBw
bGljYXRpb25zIGFyZSBleHBlY3RlZCB0byBjYWxsIHRoZSBmcmFtZXdvcmsncwotICAgIC8vIENv
bnRleHQuZ2V0RXh0ZXJuYWxTdG9yYWdlRGlyZWN0b3J5KCkgbWV0aG9kIHRocm91Z2ggSk5JIHRv
IGdldAotICAgIC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgd29ybGQtd3JpdGFibGUgU0QgQ2FyZCBk
aXJlY3RvcnkuIEhvd2V2ZXIsCi0gICAgLy8gdGhpcyByZXF1aXJlcyBhIENvbnRleHQgaGFuZGxl
LCB3aGljaCBjYW5ub3QgYmUgcmV0cmlldmVkCi0gICAgLy8gZ2xvYmFsbHkgZnJvbSBuYXRpdmUg
Y29kZS4gRG9pbmcgc28gYWxzbyBwcmVjbHVkZXMgcnVubmluZyB0aGUKLSAgICAvLyBjb2RlIGFz
IHBhcnQgb2YgYSByZWd1bGFyIHN0YW5kYWxvbmUgZXhlY3V0YWJsZSwgd2hpY2ggZG9lc24ndAot
ICAgIC8vIHJ1biBpbiBhIERhbHZpayBwcm9jZXNzIChlLmcuIHdoZW4gcnVubmluZyBpdCB0aHJv
dWdoICdhZGIgc2hlbGwnKS4KLSAgICAvLwotICAgIC8vIFRoZSBsb2NhdGlvbiAvc2RjYXJkIGlz
IGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBuYXRpdmUgY29kZQotICAgIC8vIGFuZCBpcyB0aGUg
b25seSBsb2NhdGlvbiAodW5vZmZpY2lhbGx5KSBzdXBwb3J0ZWQgYnkgdGhlIEFuZHJvaWQKLSAg
ICAvLyB0ZWFtLiBJdCdzIGdlbmVyYWxseSBhIHN5bWxpbmsgdG8gdGhlIHJlYWwgU0QgQ2FyZCBt
b3VudCBwb2ludAotICAgIC8vIHdoaWNoIGNhbiBiZSAvbW50L3NkY2FyZCwgL21udC9zZGNhcmQw
LCAvc3lzdGVtL21lZGlhL3NkY2FyZCwgb3IKLSAgICAvLyBvdGhlciBPRU0tY3VzdG9taXplZCBs
b2NhdGlvbnMuIE5ldmVyIHJlbHkgb24gdGhlc2UsIGFuZCBhbHdheXMKLSAgICAvLyB1c2UgL3Nk
Y2FyZC4KLSAgICBjaGFyIG5hbWVfdGVtcGxhdGVbXSA9ICIvc2RjYXJkL2d0ZXN0X2NhcHR1cmVk
X3N0cmVhbS5YWFhYWFgiOwotIyAgZWxzZQotICAgIGNoYXIgbmFtZV90ZW1wbGF0ZVtdID0gIi90
bXAvY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7Ci0jICBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVhf
QU5EUk9JRAotICAgIGNvbnN0IGludCBjYXB0dXJlZF9mZCA9IG1rc3RlbXAobmFtZV90ZW1wbGF0
ZSk7Ci0gICAgZmlsZW5hbWVfID0gbmFtZV90ZW1wbGF0ZTsKLSMgZW5kaWYgIC8vIEdURVNUX09T
X1dJTkRPV1MKLSAgICBmZmx1c2goTlVMTCk7Ci0gICAgZHVwMihjYXB0dXJlZF9mZCwgZmRfKTsK
LSAgICBjbG9zZShjYXB0dXJlZF9mZCk7Ci0gIH0KLQotICB+Q2FwdHVyZWRTdHJlYW0oKSB7Ci0g
ICAgcmVtb3ZlKGZpbGVuYW1lXy5jX3N0cigpKTsKLSAgfQotCi0gIHN0ZDo6c3RyaW5nIEdldENh
cHR1cmVkU3RyaW5nKCkgewotICAgIGlmICh1bmNhcHR1cmVkX2ZkXyAhPSAtMSkgewotICAgICAg
Ly8gUmVzdG9yZXMgdGhlIG9yaWdpbmFsIHN0cmVhbS4KLSAgICAgIGZmbHVzaChOVUxMKTsKLSAg
ICAgIGR1cDIodW5jYXB0dXJlZF9mZF8sIGZkXyk7Ci0gICAgICBjbG9zZSh1bmNhcHR1cmVkX2Zk
Xyk7Ci0gICAgICB1bmNhcHR1cmVkX2ZkXyA9IC0xOwotICAgIH0KLQotICAgIEZJTEUqIGNvbnN0
IGZpbGUgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWVfLmNfc3RyKCksICJyIik7Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgY29udGVudCA9IFJlYWRFbnRpcmVGaWxlKGZpbGUpOwotICAgIHBvc2l4OjpG
Q2xvc2UoZmlsZSk7Ci0gICAgcmV0dXJuIGNvbnRlbnQ7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IGludCBmZF87ICAvLyBBIHN0cmVhbSB0byBjYXB0dXJlLgotICBpbnQgdW5jYXB0dXJlZF9m
ZF87Ci0gIC8vIE5hbWUgb2YgdGhlIHRlbXBvcmFyeSBmaWxlIGhvbGRpbmcgdGhlIHN0ZGVyciBv
dXRwdXQuCi0gIDo6c3RkOjpzdHJpbmcgZmlsZW5hbWVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oQ2FwdHVyZWRTdHJlYW0pOwotfTsKLQotR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUE9QXygpCi0KLXN0YXRpYyBDYXB0dXJlZFN0cmVhbSogZ19jYXB0dXJlZF9zdGRl
cnIgPSBOVUxMOwotc3RhdGljIENhcHR1cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZG91dCA9IE5V
TEw7Ci0KLS8vIFN0YXJ0cyBjYXB0dXJpbmcgYW4gb3V0cHV0IHN0cmVhbSAoc3Rkb3V0L3N0ZGVy
cikuCi12b2lkIENhcHR1cmVTdHJlYW0oaW50IGZkLCBjb25zdCBjaGFyKiBzdHJlYW1fbmFtZSwg
Q2FwdHVyZWRTdHJlYW0qKiBzdHJlYW0pIHsKLSAgaWYgKCpzdHJlYW0gIT0gTlVMTCkgewotICAg
IEdURVNUX0xPR18oRkFUQUwpIDw8ICJPbmx5IG9uZSAiIDw8IHN0cmVhbV9uYW1lCi0gICAgICAg
ICAgICAgICAgICAgICAgPDwgIiBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lLiI7Ci0gIH0K
LSAgKnN0cmVhbSA9IG5ldyBDYXB0dXJlZFN0cmVhbShmZCk7Ci19Ci0KLS8vIFN0b3BzIGNhcHR1
cmluZyB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgot
c3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJlYW0oQ2FwdHVyZWRTdHJlYW0qKiBjYXB0dXJlZF9z
dHJlYW0pIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudCA9ICgqY2FwdHVyZWRfc3RyZWFt
KS0+R2V0Q2FwdHVyZWRTdHJpbmcoKTsKLQotICBkZWxldGUgKmNhcHR1cmVkX3N0cmVhbTsKLSAg
KmNhcHR1cmVkX3N0cmVhbSA9IE5VTEw7Ci0KLSAgcmV0dXJuIGNvbnRlbnQ7Ci19Ci0KLS8vIFN0
YXJ0cyBjYXB0dXJpbmcgc3Rkb3V0Lgotdm9pZCBDYXB0dXJlU3Rkb3V0KCkgewotICBDYXB0dXJl
U3RyZWFtKGtTdGRPdXRGaWxlbm8sICJzdGRvdXQiLCAmZ19jYXB0dXJlZF9zdGRvdXQpOwotfQot
Ci0vLyBTdGFydHMgY2FwdHVyaW5nIHN0ZGVyci4KLXZvaWQgQ2FwdHVyZVN0ZGVycigpIHsKLSAg
Q2FwdHVyZVN0cmVhbShrU3RkRXJyRmlsZW5vLCAic3RkZXJyIiwgJmdfY2FwdHVyZWRfc3RkZXJy
KTsKLX0KLQotLy8gU3RvcHMgY2FwdHVyaW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVy
ZWQgc3RyaW5nLgotc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRvdXQoKSB7Ci0gIHJldHVybiBH
ZXRDYXB0dXJlZFN0cmVhbSgmZ19jYXB0dXJlZF9zdGRvdXQpOwotfQotCi0vLyBTdG9wcyBjYXB0
dXJpbmcgc3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1zdGQ6OnN0cmlu
ZyBHZXRDYXB0dXJlZFN0ZGVycigpIHsKLSAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2Nh
cHR1cmVkX3N0ZGVycik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVD
VElPTgotCi1zaXplX3QgR2V0RmlsZVNpemUoRklMRSogZmlsZSkgewotICBmc2VlayhmaWxlLCAw
LCBTRUVLX0VORCk7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGZ0ZWxsKGZpbGUpKTsK
LX0KLQotc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSogZmlsZSkgewotICBjb25zdCBz
aXplX3QgZmlsZV9zaXplID0gR2V0RmlsZVNpemUoZmlsZSk7Ci0gIGNoYXIqIGNvbnN0IGJ1ZmZl
ciA9IG5ldyBjaGFyW2ZpbGVfc2l6ZV07Ci0KLSAgc2l6ZV90IGJ5dGVzX2xhc3RfcmVhZCA9IDA7
ICAvLyAjIG9mIGJ5dGVzIHJlYWQgaW4gdGhlIGxhc3QgZnJlYWQoKQotICBzaXplX3QgYnl0ZXNf
cmVhZCA9IDA7ICAgICAgIC8vICMgb2YgYnl0ZXMgcmVhZCBzbyBmYXIKLQotICBmc2VlayhmaWxl
LCAwLCBTRUVLX1NFVCk7Ci0KLSAgLy8gS2VlcHMgcmVhZGluZyB0aGUgZmlsZSB1bnRpbCB3ZSBj
YW5ub3QgcmVhZCBmdXJ0aGVyIG9yIHRoZQotICAvLyBwcmUtZGV0ZXJtaW5lZCBmaWxlIHNpemUg
aXMgcmVhY2hlZC4KLSAgZG8gewotICAgIGJ5dGVzX2xhc3RfcmVhZCA9IGZyZWFkKGJ1ZmZlciti
eXRlc19yZWFkLCAxLCBmaWxlX3NpemUtYnl0ZXNfcmVhZCwgZmlsZSk7Ci0gICAgYnl0ZXNfcmVh
ZCArPSBieXRlc19sYXN0X3JlYWQ7Ci0gIH0gd2hpbGUgKGJ5dGVzX2xhc3RfcmVhZCA+IDAgJiYg
Ynl0ZXNfcmVhZCA8IGZpbGVfc2l6ZSk7Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcgY29udGVudChi
dWZmZXIsIGJ5dGVzX3JlYWQpOwotICBkZWxldGVbXSBidWZmZXI7Ci0KLSAgcmV0dXJuIGNvbnRl
bnQ7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi1zdGF0aWMgY29uc3QgOjpzdGQ6
OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiogZ19pbmplY3RlZF90ZXN0X2FyZ3Zz
ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMOyAgLy8gT3du
ZWQuCi0KLXZvaWQgU2V0SW5qZWN0YWJsZUFyZ3ZzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZz4qIGFyZ3ZzKSB7Ci0gIGlmIChnX2luamVjdGVkX3Rlc3RfYXJn
dnMgIT0gYXJndnMpCi0gICAgZGVsZXRlIGdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKLSAgZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzID0gYXJndnM7Ci19Ci0KLWNvbnN0IDo6c3RkOjp2ZWN0b3I8dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZz4mIEdldEluamVjdGFibGVBcmd2cygpIHsKLSAgaWYgKGdfaW5q
ZWN0ZWRfdGVzdF9hcmd2cyAhPSBOVUxMKSB7Ci0gICAgcmV0dXJuICpnX2luamVjdGVkX3Rlc3Rf
YXJndnM7Ci0gIH0KLSAgcmV0dXJuIEdldEFyZ3ZzKCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19ERUFUSF9URVNUCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotbmFtZXNwYWNlIHBv
c2l4IHsKLXZvaWQgQWJvcnQoKSB7Ci0gIERlYnVnQnJlYWsoKTsKLSAgVGVybWluYXRlUHJvY2Vz
cyhHZXRDdXJyZW50UHJvY2VzcygpLCAxKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSBwb3NpeAotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBSZXR1cm5zIHRoZSBuYW1lIG9m
IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIHRoZQotLy8gZ2l2ZW4g
ZmxhZy4gIEZvciBleGFtcGxlLCBGbGFnVG9FbnZWYXIoImZvbyIpIHdpbGwgcmV0dXJuCi0vLyAi
R1RFU1RfRk9PIiBpbiB0aGUgb3Blbi1zb3VyY2UgdmVyc2lvbi4KLXN0YXRpYyBzdGQ6OnN0cmlu
ZyBGbGFnVG9FbnZWYXIoY29uc3QgY2hhciogZmxhZykgewotICBjb25zdCBzdGQ6OnN0cmluZyBm
dWxsX2ZsYWcgPQotICAgICAgKE1lc3NhZ2UoKSA8PCBHVEVTVF9GTEFHX1BSRUZJWF8gPDwgZmxh
ZykuR2V0U3RyaW5nKCk7Ci0KLSAgTWVzc2FnZSBlbnZfdmFyOwotICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBmdWxsX2ZsYWcubGVuZ3RoKCk7IGkrKykgewotICAgIGVudl92YXIgPDwgVG9VcHBl
cihmdWxsX2ZsYWcuY19zdHIoKVtpXSk7Ci0gIH0KLQotICByZXR1cm4gZW52X3Zhci5HZXRTdHJp
bmcoKTsKLX0KLQotLy8gUGFyc2VzICdzdHInIGZvciBhIDMyLWJpdCBzaWduZWQgaW50ZWdlci4g
IElmIHN1Y2Nlc3NmdWwsIHdyaXRlcwotLy8gdGhlIHJlc3VsdCB0byAqdmFsdWUgYW5kIHJldHVy
bnMgdHJ1ZTsgb3RoZXJ3aXNlIGxlYXZlcyAqdmFsdWUKLS8vIHVuY2hhbmdlZCBhbmQgcmV0dXJu
cyBmYWxzZS4KLWJvb2wgUGFyc2VJbnQzMihjb25zdCBNZXNzYWdlJiBzcmNfdGV4dCwgY29uc3Qg
Y2hhciogc3RyLCBJbnQzMiogdmFsdWUpIHsKLSAgLy8gUGFyc2VzIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBhcyBhIGRlY2ltYWwgaW50ZWdlci4KLSAgY2hhciogZW5kID0gTlVMTDsKLSAgY29u
c3QgbG9uZyBsb25nX3ZhbHVlID0gc3RydG9sKHN0ciwgJmVuZCwgMTApOyAgLy8gTk9MSU5UCi0K
LSAgLy8gSGFzIHN0cnRvbCgpIGNvbnN1bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmc/
Ci0gIGlmICgqZW5kICE9ICdcMCcpIHsKLSAgICAvLyBObyAtIGFuIGludmFsaWQgY2hhcmFjdGVy
IHdhcyBlbmNvdW50ZXJlZC4KLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIldBUk5JTkc6
ICIgPDwgc3JjX3RleHQKLSAgICAgICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBhIDMyLWJpdCBp
bnRlZ2VyLCBidXQgYWN0dWFsbHkiCi0gICAgICAgIDw8ICIgaGFzIHZhbHVlIFwiIiA8PCBzdHIg
PDwgIlwiLlxuIjsKLSAgICBwcmludGYoIiVzIiwgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpOwot
ICAgIGZmbHVzaChzdGRvdXQpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIElzIHRo
ZSBwYXJzZWQgdmFsdWUgaW4gdGhlIHJhbmdlIG9mIGFuIEludDMyPwotICBjb25zdCBJbnQzMiBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxJbnQzMj4obG9uZ192YWx1ZSk7Ci0gIGlmIChsb25nX3ZhbHVl
ID09IExPTkdfTUFYIHx8IGxvbmdfdmFsdWUgPT0gTE9OR19NSU4gfHwKLSAgICAgIC8vIFRoZSBw
YXJzZWQgdmFsdWUgb3ZlcmZsb3dzIGFzIGEgbG9uZy4gIChzdHJ0b2woKSByZXR1cm5zCi0gICAg
ICAvLyBMT05HX01BWCBvciBMT05HX01JTiB3aGVuIHRoZSBpbnB1dCBvdmVyZmxvd3MuKQotICAg
ICAgcmVzdWx0ICE9IGxvbmdfdmFsdWUKLSAgICAgIC8vIFRoZSBwYXJzZWQgdmFsdWUgb3ZlcmZs
b3dzIGFzIGFuIEludDMyLgotICAgICAgKSB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8
ICJXQVJOSU5HOiAiIDw8IHNyY190ZXh0Ci0gICAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUg
YSAzMi1iaXQgaW50ZWdlciwgYnV0IGFjdHVhbGx5IgotICAgICAgICA8PCAiIGhhcyB2YWx1ZSAi
IDw8IHN0ciA8PCAiLCB3aGljaCBvdmVyZmxvd3MuXG4iOwotICAgIHByaW50ZigiJXMiLCBtc2cu
R2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgKnZhbHVlID0gcmVzdWx0OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8g
UmVhZHMgYW5kIHJldHVybnMgdGhlIEJvb2xlYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgY29ycmVz
cG9uZGluZyB0bwotLy8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0dXJucyBk
ZWZhdWx0X3ZhbHVlLgotLy8KLS8vIFRoZSB2YWx1ZSBpcyBjb25zaWRlcmVkIHRydWUgaWZmIGl0
J3Mgbm90ICIwIi4KLWJvb2wgQm9vbEZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBib29s
IGRlZmF1bHRfdmFsdWUpIHsKLSNpZiBkZWZpbmVkKEdURVNUX0dFVF9CT09MX0ZST01fRU5WXykK
LSAgcmV0dXJuIEdURVNUX0dFVF9CT09MX0ZST01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsK
LSNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfQk9PTF9GUk9NX0VOVl8pCi0gIGNvbnN0IHN0
ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxhZyk7Ci0gIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKLSAgcmV0
dXJuIHN0cmluZ192YWx1ZSA9PSBOVUxMID8KLSAgICAgIGRlZmF1bHRfdmFsdWUgOiBzdHJjbXAo
c3RyaW5nX3ZhbHVlLCAiMCIpICE9IDA7Ci19Ci0KLS8vIFJlYWRzIGFuZCByZXR1cm5zIGEgMzIt
Yml0IGludGVnZXIgc3RvcmVkIGluIHRoZSBlbnZpcm9ubWVudAotLy8gdmFyaWFibGUgY29ycmVz
cG9uZGluZyB0byB0aGUgZ2l2ZW4gZmxhZzsgaWYgaXQgaXNuJ3Qgc2V0IG9yCi0vLyBkb2Vzbid0
IHJlcHJlc2VudCBhIHZhbGlkIDMyLWJpdCBpbnRlZ2VyLCByZXR1cm5zIGRlZmF1bHRfdmFsdWUu
Ci1JbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBJbnQzMiBkZWZhdWx0
X3ZhbHVlKSB7Ci0jaWYgZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQotICByZXR1
cm4gR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXyhmbGFnLCBkZWZhdWx0X3ZhbHVlKTsKLSNlbmRp
ZiAgLy8gZGVmaW5lZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQotICBjb25zdCBzdGQ6OnN0
cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwotICBjb25zdCBjaGFyKiBjb25zdCBz
dHJpbmdfdmFsdWUgPSBwb3NpeDo6R2V0RW52KGVudl92YXIuY19zdHIoKSk7Ci0gIGlmIChzdHJp
bmdfdmFsdWUgPT0gTlVMTCkgewotICAgIC8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBu
b3Qgc2V0LgotICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwotICB9Ci0KLSAgSW50MzIgcmVzdWx0
ID0gZGVmYXVsdF92YWx1ZTsKLSAgaWYgKCFQYXJzZUludDMyKE1lc3NhZ2UoKSA8PCAiRW52aXJv
bm1lbnQgdmFyaWFibGUgIiA8PCBlbnZfdmFyLAotICAgICAgICAgICAgICAgICAgc3RyaW5nX3Zh
bHVlLCAmcmVzdWx0KSkgewotICAgIHByaW50ZigiVGhlIGRlZmF1bHQgdmFsdWUgJXMgaXMgdXNl
ZC5cbiIsCi0gICAgICAgICAgIChNZXNzYWdlKCkgPDwgZGVmYXVsdF92YWx1ZSkuR2V0U3RyaW5n
KCkuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmV0dXJuIGRlZmF1bHRfdmFs
dWU7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vLyBSZWFkcyBhbmQgcmV0dXJucyB0
aGUgc3RyaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8KLS8vIHRoZSBn
aXZlbiBmbGFnOyBpZiBpdCdzIG5vdCBzZXQsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4KLXN0ZDo6
c3RyaW5nIFN0cmluZ0Zyb21HVGVzdEVudihjb25zdCBjaGFyKiBmbGFnLCBjb25zdCBjaGFyKiBk
ZWZhdWx0X3ZhbHVlKSB7Ci0jaWYgZGVmaW5lZChHVEVTVF9HRVRfU1RSSU5HX0ZST01fRU5WXykK
LSAgcmV0dXJuIEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUp
OwotI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQotICBjb25z
dCBzdGQ6OnN0cmluZyBlbnZfdmFyID0gRmxhZ1RvRW52VmFyKGZsYWcpOwotICBjb25zdCBjaGFy
KiB2YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52X3Zhci5jX3N0cigpKTsKLSAgaWYgKHZhbHVlICE9
IE5VTEwpIHsKLSAgICByZXR1cm4gdmFsdWU7Ci0gIH0KLQotICAvLyBBcyBhIHNwZWNpYWwgY2Fz
ZSBmb3IgdGhlICdvdXRwdXQnIGZsYWcsIGlmIEdURVNUX09VVFBVVCBpcyBub3QKLSAgLy8gc2V0
LCB3ZSBsb29rIGZvciBYTUxfT1VUUFVUX0ZJTEUsIHdoaWNoIGlzIHNldCBieSB0aGUgQmF6ZWwg
YnVpbGQKLSAgLy8gc3lzdGVtLiAgVGhlIHZhbHVlIG9mIFhNTF9PVVRQVVRfRklMRSBpcyBhIGZp
bGVuYW1lIHdpdGhvdXQgdGhlCi0gIC8vICJ4bWw6IiBwcmVmaXggb2YgR1RFU1RfT1VUUFVULgot
ICAvLwotICAvLyBUaGUgbmV0IHByaW9yaXR5IG9yZGVyIGFmdGVyIGZsYWcgcHJvY2Vzc2luZyBp
cyB0aHVzOgotICAvLyAgIC0tZ3Rlc3Rfb3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnCi0gIC8vICAg
R1RFU1RfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlCi0gIC8vICAgWE1MX09VVFBVVF9GSUxF
IGVudmlyb25tZW50IHZhcmlhYmxlCi0gIC8vICAgJ2RlZmF1bHRfdmFsdWUnCi0gIGlmIChzdHJj
bXAoZmxhZywgIm91dHB1dCIpID09IDApIHsKLSAgICB2YWx1ZSA9IHBvc2l4OjpHZXRFbnYoIlhN
TF9PVVRQVVRfRklMRSIpOwotICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICByZXR1cm4g
c3RkOjpzdHJpbmcoInhtbDoiKSArIHZhbHVlOwotICAgIH0KLSAgfQotICByZXR1cm4gZGVmYXVs
dF92YWx1ZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXByaW50ZXJzLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMmRmNDEyZjhhMjA0NTkwNDNjZGI3MGU1YjA5NWE3MmI3YTEzOTRhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9n
dGVzdC1wcmludGVycy5jYworKysgL2Rldi9udWxsCkBAIC0xLDM3MyArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSB1bml2
ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBwcmludCBhCi0vLyB2YWx1ZSBvZiBhbnkgdHlw
ZSBUOgotLy8KLS8vICAgdm9pZCA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVy
PFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIpOwotLy8KLS8vIEl0IHVzZXMgdGhlIDw8IG9w
ZXJhdG9yIHdoZW4gcG9zc2libGUsIGFuZCBwcmludHMgdGhlIGJ5dGVzIGluIHRoZQotLy8gb2Jq
ZWN0IG90aGVyd2lzZS4gIEEgdXNlciBjYW4gb3ZlcnJpZGUgaXRzIGJlaGF2aW9yIGZvciBhIGNs
YXNzCi0vLyB0eXBlIEZvbyBieSBkZWZpbmluZyBlaXRoZXIgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0
cmVhbSYsIGNvbnN0IEZvbyYpCi0vLyBvciB2b2lkIFByaW50VG8oY29uc3QgRm9vJiwgOjpzdGQ6
Om9zdHJlYW0qKSBpbiB0aGUgbmFtZXNwYWNlIHRoYXQKLS8vIGRlZmluZXMgRm9vLgotCi0jaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8Y3djaGFyPgotI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBO
T0xJTlQKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6
c3RkOjpvc3RyZWFtOwotCi0vLyBQcmludHMgYSBzZWdtZW50IG9mIGJ5dGVzIGluIHRoZSBnaXZl
biBvYmplY3QuCi1HVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXwotR1RFU1RfQVRU
UklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCi1HVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVf
VEhSRUFEXwotdm9pZCBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGNvdW50LCBvc3RyZWFtKiBvcykgewotICBjaGFyIHRleHRbNV0gPSAiIjsK
LSAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY291bnQ7IGkrKykgewotICAgIGNvbnN0IHNpemVf
dCBqID0gc3RhcnQgKyBpOwotICAgIGlmIChpICE9IDApIHsKLSAgICAgIC8vIE9yZ2FuaXplcyB0
aGUgYnl0ZXMgaW50byBncm91cHMgb2YgMiBmb3IgZWFzeSBwYXJzaW5nIGJ5Ci0gICAgICAvLyBo
dW1hbi4KLSAgICAgIGlmICgoaiAlIDIpID09IDApCi0gICAgICAgICpvcyA8PCAnICc7Ci0gICAg
ICBlbHNlCi0gICAgICAgICpvcyA8PCAnLSc7Ci0gICAgfQotICAgIEdURVNUX1NOUFJJTlRGXyh0
ZXh0LCBzaXplb2YodGV4dCksICIlMDJYIiwgb2JqX2J5dGVzW2pdKTsKLSAgICAqb3MgPDwgdGV4
dDsKLSAgfQotfQotCi0vLyBQcmludHMgdGhlIGJ5dGVzIGluIHRoZSBnaXZlbiB2YWx1ZSB0byB0
aGUgZ2l2ZW4gb3N0cmVhbS4KLXZvaWQgUHJpbnRCeXRlc0luT2JqZWN0VG9JbXBsKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsKLSAgLy8gVGVsbHMgdGhlIHVzZXIgaG93IGJpZyB0
aGUgb2JqZWN0IGlzLgotICAqb3MgPDwgY291bnQgPDwgIi1ieXRlIG9iamVjdCA8IjsKLQotICBj
b25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDEzMjsKLSAgY29uc3Qgc2l6ZV90IGtDaHVua1NpemUg
PSA2NDsKLSAgLy8gSWYgdGhlIG9iamVjdCBzaXplIGlzIGJpZ2dlciB0aGFuIGtUaHJlc2hvbGQs
IHdlJ2xsIGhhdmUgdG8gb21pdAotICAvLyBzb21lIGRldGFpbHMgYnkgcHJpbnRpbmcgb25seSB0
aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGtDaHVua1NpemUKLSAgLy8gYnl0ZXMuCi0gIC8vIFRPRE8o
d2FuKTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhlIHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCi0g
IGlmIChjb3VudCA8IGtUaHJlc2hvbGQpIHsKLSAgICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RU
byhvYmpfYnl0ZXMsIDAsIGNvdW50LCBvcyk7Ci0gIH0gZWxzZSB7Ci0gICAgUHJpbnRCeXRlU2Vn
bWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBrQ2h1bmtTaXplLCBvcyk7Ci0gICAgKm9zIDw8
ICIgLi4uICI7Ci0gICAgLy8gUm91bmRzIHVwIHRvIDItYnl0ZSBib3VuZGFyeS4KLSAgICBjb25z
dCBzaXplX3QgcmVzdW1lX3BvcyA9IChjb3VudCAtIGtDaHVua1NpemUgKyAxKS8yKjI7Ci0gICAg
UHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAt
IHJlc3VtZV9wb3MsIG9zKTsKLSAgfQotICAqb3MgPDwgIj4iOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotbmFtZXNwYWNlIGludGVybmFsMiB7Ci0KLS8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVz
SW5PYmplY3RUb0ltcGwoKSB0byBwcmludCB0aGUgYnl0ZXMgaW4gdGhlCi0vLyBnaXZlbiBvYmpl
Y3QuICBUaGUgZGVsZWdhdGlvbiBzaW1wbGlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gK
LS8vIHVzZXMgdGhlIDw8IG9wZXJhdG9yIGFuZCB0aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUg
b2YgdGhlCi0vLyA6OnRlc3Rpbmc6OmludGVybmFsIG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMg
YSA8PCBvcGVyYXRvciB0aGF0Ci0vLyBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBp
biBTVEwuCi12b2lkIFByaW50Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9i
al9ieXRlcywgc2l6ZV90IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBvc3RyZWFt
KiBvcykgewotICBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3Mp
OwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwyCi0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0KLS8vIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2Ug
cHJpbnQgaXQgaW4gb25lCi0vLyBvZiB0aHJlZSBmb3JtYXRzOgotLy8gICAtIGFzIGlzIGlmIGl0
J3MgYSBwcmludGFibGUgQVNDSUkgKGUuZy4gJ2EnLCAnMicsICcgJyksCi0vLyAgIC0gYXMgYSBo
ZXhpZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UgKGUuZy4gJ1x4N0YnKSwgb3IKLS8vICAgLSBhcyBh
IHNwZWNpYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcuICdccicsICdcbicpLgotZW51bSBDaGFyRm9y
bWF0IHsKLSAga0FzSXMsCi0gIGtIZXhFc2NhcGUsCi0gIGtTcGVjaWFsRXNjYXBlCi19OwotCi0v
LyBSZXR1cm5zIHRydWUgaWYgYyBpcyBhIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0
ZXN0IHRoZQotLy8gdmFsdWUgb2YgYyBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmlu
dCgpLCB3aGljaCBpcyBidWdneSBvbgotLy8gV2luZG93cyBNb2JpbGUuCi1pbmxpbmUgYm9vbCBJ
c1ByaW50YWJsZUFzY2lpKHdjaGFyX3QgYykgewotICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0g
MHg3RTsKLX0KLQotLy8gUHJpbnRzIGEgd2lkZSBvciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFj
dGVyIGxpdGVyYWwgd2l0aG91dCB0aGUKLS8vIHF1b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNl
c3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KLS8vIFRoZSB0ZW1wbGF0ZSBhcmd1
bWVudCBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2lnbmVkIHZlcnNpb24gb2YgQ2hhciwKLS8vIHdo
aWNoIGlzIHRoZSB0eXBlIG9mIGMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0
eXBlbmFtZSBDaGFyPgotc3RhdGljIENoYXJGb3JtYXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hh
ciBjLCBvc3RyZWFtKiBvcykgewotICBzd2l0Y2ggKHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7
Ci0gICAgY2FzZSBMJ1wwJzoKLSAgICAgICpvcyA8PCAiXFwwIjsKLSAgICAgIGJyZWFrOwotICAg
IGNhc2UgTCdcJyc6Ci0gICAgICAqb3MgPDwgIlxcJyI7Ci0gICAgICBicmVhazsKLSAgICBjYXNl
IEwnXFwnOgotICAgICAgKm9zIDw8ICJcXFxcIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdc
YSc6Ci0gICAgICAqb3MgPDwgIlxcYSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEwnXGInOgot
ICAgICAgKm9zIDw8ICJcXGIiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMJ1xmJzoKLSAgICAg
ICpvcyA8PCAiXFxmIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdcbic6Ci0gICAgICAqb3Mg
PDwgIlxcbiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEwnXHInOgotICAgICAgKm9zIDw8ICJc
XHIiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMJ1x0JzoKLSAgICAgICpvcyA8PCAiXFx0IjsK
LSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdcdic6Ci0gICAgICAqb3MgPDwgIlxcdiI7Ci0gICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgaWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsK
LSAgICAgICAgKm9zIDw8IHN0YXRpY19jYXN0PGNoYXI+KGMpOwotICAgICAgICByZXR1cm4ga0Fz
SXM7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAqb3MgPDwgIlxceCIgKyBTdHJpbmc6OkZvcm1h
dEhleEludChzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXI+KGMpKTsKLSAgICAgICAgcmV0dXJuIGtI
ZXhFc2NhcGU7Ci0gICAgICB9Ci0gIH0KLSAgcmV0dXJuIGtTcGVjaWFsRXNjYXBlOwotfQotCi0v
LyBQcmludHMgYSB3Y2hhcl90IGMgYXMgaWYgaXQncyBwYXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWws
IGVzY2FwaW5nIGl0IHdoZW4KLS8vIG5lY2Vzc2FyeTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0
dGVkLgotc3RhdGljIENoYXJGb3JtYXQgUHJpbnRBc1N0cmluZ0xpdGVyYWxUbyh3Y2hhcl90IGMs
IG9zdHJlYW0qIG9zKSB7Ci0gIHN3aXRjaCAoYykgewotICAgIGNhc2UgTCdcJyc6Ci0gICAgICAq
b3MgPDwgIiciOwotICAgICAgcmV0dXJuIGtBc0lzOwotICAgIGNhc2UgTCciJzoKLSAgICAgICpv
cyA8PCAiXFxcIiI7Ci0gICAgICByZXR1cm4ga1NwZWNpYWxFc2NhcGU7Ci0gICAgZGVmYXVsdDoK
LSAgICAgIHJldHVybiBQcmludEFzQ2hhckxpdGVyYWxUbzx3Y2hhcl90PihjLCBvcyk7Ci0gIH0K
LX0KLQotLy8gUHJpbnRzIGEgY2hhciBjIGFzIGlmIGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRl
cmFsLCBlc2NhcGluZyBpdCB3aGVuCi0vLyBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZv
cm1hdHRlZC4KLXN0YXRpYyBDaGFyRm9ybWF0IFByaW50QXNTdHJpbmdMaXRlcmFsVG8oY2hhciBj
LCBvc3RyZWFtKiBvcykgewotICByZXR1cm4gUHJpbnRBc1N0cmluZ0xpdGVyYWxUbygKLSAgICAg
IHN0YXRpY19jYXN0PHdjaGFyX3Q+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpKSwgb3Mp
OwotfQotCi0vLyBQcmludHMgYSB3aWRlIG9yIG5hcnJvdyBjaGFyYWN0ZXIgYyBhbmQgaXRzIGNv
ZGUuICAnXDAnIGlzIHByaW50ZWQKLS8vIGFzICInXFwwJyIsIG90aGVyIHVucHJpbnRhYmxlIGNo
YXJhY3RlcnMgYXJlIGFsc28gcHJvcGVybHkgZXNjYXBlZAotLy8gdXNpbmcgdGhlIHN0YW5kYXJk
IEMrKyBlc2NhcGUgc2VxdWVuY2UuICBUaGUgdGVtcGxhdGUgYXJndW1lbnQKLS8vIFVuc2lnbmVk
Q2hhciBpcyB0aGUgdW5zaWduZWQgdmVyc2lvbiBvZiBDaGFyLCB3aGljaCBpcyB0aGUgdHlwZSBv
ZiBjLgotdGVtcGxhdGUgPHR5cGVuYW1lIFVuc2lnbmVkQ2hhciwgdHlwZW5hbWUgQ2hhcj4KLXZv
aWQgUHJpbnRDaGFyQW5kQ29kZVRvKENoYXIgYywgb3N0cmVhbSogb3MpIHsKLSAgLy8gRmlyc3Qs
IHByaW50IGMgYXMgYSBsaXRlcmFsIGluIHRoZSBtb3N0IHJlYWRhYmxlIGZvcm0gd2UgY2FuIGZp
bmQuCi0gICpvcyA8PCAoKHNpemVvZihjKSA+IDEpID8gIkwnIiA6ICInIik7Ci0gIGNvbnN0IENo
YXJGb3JtYXQgZm9ybWF0ID0gUHJpbnRBc0NoYXJMaXRlcmFsVG88VW5zaWduZWRDaGFyPihjLCBv
cyk7Ci0gICpvcyA8PCAiJyI7Ci0KLSAgLy8gVG8gYWlkIHVzZXIgZGVidWdnaW5nLCB3ZSBhbHNv
IHByaW50IGMncyBjb2RlIGluIGRlY2ltYWwsIHVubGVzcwotICAvLyBpdCdzIDAgKGluIHdoaWNo
IGNhc2UgYyB3YXMgcHJpbnRlZCBhcyAnXFwwJywgbWFraW5nIHRoZSBjb2RlCi0gIC8vIG9idmlv
dXMpLgotICBpZiAoYyA9PSAwKQotICAgIHJldHVybjsKLSAgKm9zIDw8ICIgKCIgPDwgc3RhdGlj
X2Nhc3Q8aW50PihjKTsKLQotICAvLyBGb3IgbW9yZSBjb252ZW5pZW5jZSwgd2UgcHJpbnQgYydz
IGNvZGUgYWdhaW4gaW4gaGV4aWRlY2ltYWwsCi0gIC8vIHVubGVzcyBjIHdhcyBhbHJlYWR5IHBy
aW50ZWQgaW4gdGhlIGZvcm0gJ1x4IyMnIG9yIHRoZSBjb2RlIGlzIGluCi0gIC8vIFsxLCA5XS4K
LSAgaWYgKGZvcm1hdCA9PSBrSGV4RXNjYXBlIHx8ICgxIDw9IGMgJiYgYyA8PSA5KSkgewotICAg
IC8vIERvIG5vdGhpbmcuCi0gIH0gZWxzZSB7Ci0gICAgKm9zIDw8ICIsIDB4IiA8PCBTdHJpbmc6
OkZvcm1hdEhleEludChzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXI+KGMpKTsKLSAgfQotICAqb3Mg
PDwgIikiOwotfQotCi12b2lkIFByaW50VG8odW5zaWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKLSAgUHJpbnRDaGFyQW5kQ29kZVRvPHVuc2lnbmVkIGNoYXI+KGMsIG9zKTsKLX0K
LXZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJp
bnRDaGFyQW5kQ29kZVRvPHVuc2lnbmVkIGNoYXI+KGMsIG9zKTsKLX0KLQotLy8gUHJpbnRzIGEg
d2NoYXJfdCBhcyBhIHN5bWJvbCBpZiBpdCBpcyBwcmludGFibGUgb3IgYXMgaXRzIGludGVybmFs
Ci0vLyBjb2RlIG90aGVyd2lzZSBhbmQgYWxzbyBhcyBpdHMgY29kZS4gIEwnXDAnIGlzIHByaW50
ZWQgYXMgIkwnXFwwJyIuCi12b2lkIFByaW50VG8od2NoYXJfdCB3Yywgb3N0cmVhbSogb3MpIHsK
LSAgUHJpbnRDaGFyQW5kQ29kZVRvPHdjaGFyX3Q+KHdjLCBvcyk7Ci19Ci0KLS8vIFByaW50cyB0
aGUgZ2l2ZW4gYXJyYXkgb2YgY2hhcmFjdGVycyB0byB0aGUgb3N0cmVhbS4gIENoYXJUeXBlIG11
c3QgYmUgZWl0aGVyCi0vLyBjaGFyIG9yIHdjaGFyX3QuCi0vLyBUaGUgYXJyYXkgc3RhcnRzIGF0
IGJlZ2luLCB0aGUgbGVuZ3RoIGlzIGxlbiwgaXQgbWF5IGluY2x1ZGUgJ1wwJyBjaGFyYWN0ZXJz
Ci0vLyBhbmQgbWF5IG5vdCBiZSBOVUwtdGVybWluYXRlZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZT4KLUdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCi1HVEVTVF9BVFRS
SUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KLUdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9U
SFJFQURfCi1zdGF0aWMgdm9pZCBQcmludENoYXJzQXNTdHJpbmdUbygKLSAgICBjb25zdCBDaGFy
VHlwZSogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7Ci0gIGNvbnN0IGNoYXIqIGNv
bnN0IGtRdW90ZUJlZ2luID0gc2l6ZW9mKENoYXJUeXBlKSA9PSAxID8gIlwiIiA6ICJMXCIiOwot
ICAqb3MgPDwga1F1b3RlQmVnaW47Ci0gIGJvb2wgaXNfcHJldmlvdXNfaGV4ID0gZmFsc2U7Ci0g
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBsZW47ICsraW5kZXgpIHsKLSAgICBjb25z
dCBDaGFyVHlwZSBjdXIgPSBiZWdpbltpbmRleF07Ci0gICAgaWYgKGlzX3ByZXZpb3VzX2hleCAm
JiBJc1hEaWdpdChjdXIpKSB7Ci0gICAgICAvLyBQcmV2aW91cyBjaGFyYWN0ZXIgaXMgb2YgJ1x4
Li4nIGZvcm0gYW5kIHRoaXMgY2hhcmFjdGVyIGNhbiBiZQotICAgICAgLy8gaW50ZXJwcmV0ZWQg
YXMgYW5vdGhlciBoZXhhZGVjaW1hbCBkaWdpdCBpbiBpdHMgbnVtYmVyLiBCcmVhayBzdHJpbmcg
dG8KLSAgICAgIC8vIGRpc2FtYmlndWF0ZS4KLSAgICAgICpvcyA8PCAiXCIgIiA8PCBrUXVvdGVC
ZWdpbjsKLSAgICB9Ci0gICAgaXNfcHJldmlvdXNfaGV4ID0gUHJpbnRBc1N0cmluZ0xpdGVyYWxU
byhjdXIsIG9zKSA9PSBrSGV4RXNjYXBlOwotICB9Ci0gICpvcyA8PCAiXCIiOwotfQotCi0vLyBQ
cmludHMgYSAoY29uc3QpIGNoYXIvd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3Rh
cnRpbmcgYXQgYWRkcmVzcwotLy8gJ2JlZ2luJy4gIENoYXJUeXBlIG11c3QgYmUgZWl0aGVyIGNo
YXIgb3Igd2NoYXJfdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUdURVNUX0FUVFJJ
QlVURV9OT19TQU5JVElaRV9NRU1PUllfCi1HVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQURE
UkVTU18KLUdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCi1zdGF0aWMgdm9pZCBV
bml2ZXJzYWxQcmludENoYXJBcnJheSgKLSAgICBjb25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVf
dCBsZW4sIG9zdHJlYW0qIG9zKSB7Ci0gIC8vIFRoZSBjb2RlCi0gIC8vICAgY29uc3QgY2hhciBr
Rm9vW10gPSAiZm9vIjsKLSAgLy8gZ2VuZXJhdGVzIGFuIGFycmF5IG9mIDQsIG5vdCAzLCBlbGVt
ZW50cywgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgJ1wwJy4KLSAgLy8KLSAgLy8gVGhlcmVmb3Jl
IHdoZW4gcHJpbnRpbmcgYSBjaGFyIGFycmF5LCB3ZSBkb24ndCBwcmludCB0aGUgbGFzdCBlbGVt
ZW50IGlmCi0gIC8vIGl0J3MgJ1wwJywgc3VjaCB0aGF0IHRoZSBvdXRwdXQgbWF0Y2hlcyB0aGUg
c3RyaW5nIGxpdGVyYWwgYXMgaXQncwotICAvLyB3cml0dGVuIGluIHRoZSBzb3VyY2UgY29kZS4K
LSAgaWYgKGxlbiA+IDAgJiYgYmVnaW5bbGVuIC0gMV0gPT0gJ1wwJykgewotICAgIFByaW50Q2hh
cnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4gLSAxLCBvcyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAg
Ly8gSWYsIGhvd2V2ZXIsIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5IGlzIG5vdCAnXDAn
LCBlLmcuCi0gIC8vICAgIGNvbnN0IGNoYXIga0Zvb1tdID0geyAnZicsICdvJywgJ28nIH07Ci0g
IC8vIHdlIG11c3QgcHJpbnQgdGhlIGVudGlyZSBhcnJheS4gIFdlIGFsc28gcHJpbnQgYSBtZXNz
YWdlIHRvIGluZGljYXRlCi0gIC8vIHRoYXQgdGhlIGFycmF5IGlzIG5vdCBOVUwtdGVybWluYXRl
ZC4KLSAgUHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVnaW4sIGxlbiwgb3MpOwotICAqb3MgPDwgIiAo
bm8gdGVybWluYXRpbmcgTlVMKSI7Ci19Ci0KLS8vIFByaW50cyBhIChjb25zdCkgY2hhciBhcnJh
eSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcyAnYmVnaW4nLgotdm9pZCBV
bml2ZXJzYWxQcmludEFycmF5KGNvbnN0IGNoYXIqIGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFt
KiBvcykgewotICBVbml2ZXJzYWxQcmludENoYXJBcnJheShiZWdpbiwgbGVuLCBvcyk7Ci19Ci0K
LS8vIFByaW50cyBhIChjb25zdCkgd2NoYXJfdCBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3Rh
cnRpbmcgYXQgYWRkcmVzcwotLy8gJ2JlZ2luJy4KLXZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShj
b25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxlbiwgb3N0cmVhbSogb3MpIHsKLSAgVW5pdmVy
c2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwgb3MpOwotfQotCi0vLyBQcmludHMgdGhlIGdp
dmVuIEMgc3RyaW5nIHRvIHRoZSBvc3RyZWFtLgotdm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMs
IG9zdHJlYW0qIG9zKSB7Ci0gIGlmIChzID09IE5VTEwpIHsKLSAgICAqb3MgPDwgIk5VTEwiOwot
ICB9IGVsc2UgewotICAgICpvcyA8PCBJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAi
IHBvaW50aW5nIHRvICI7Ci0gICAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocywgc3RybGVuKHMpLCBv
cyk7Ci0gIH0KLX0KLQotLy8gTVNWQyBjb21waWxlciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZp
bmUgd2hhcl90IGFzIGEgdHlwZWRlZgotLy8gb2YgdW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFu
IG92ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBpbiB0aGF0IGNhc2UKLS8vIHdvdWxkIGNhdXNl
IHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBiZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywK
LS8vIHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1lbW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVz
aW5nIGludmFsaWQKLS8vIG1lbW9yeSBhY2Nlc3Nlcy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NI
QVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuCi0vLyB3Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEg
bmF0aXZlIHR5cGUuCi0jaWYgIWRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9X
Q0hBUl9UX0RFRklORUQpCi0vLyBQcmludHMgdGhlIGdpdmVuIHdpZGUgQyBzdHJpbmcgdG8gdGhl
IG9zdHJlYW0uCi12b2lkIFByaW50VG8oY29uc3Qgd2NoYXJfdCogcywgb3N0cmVhbSogb3MpIHsK
LSAgaWYgKHMgPT0gTlVMTCkgewotICAgICpvcyA8PCAiTlVMTCI7Ci0gIH0gZWxzZSB7Ci0gICAg
Km9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9pZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsK
LSAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBzdGQ6Ondjc2xlbihzKSwgb3MpOwotICB9Ci19
Ci0jZW5kaWYgIC8vIHdjaGFyX3QgaXMgbmF0aXZlCi0KLS8vIFByaW50cyBhIDo6c3RyaW5nIG9i
amVjdC4KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotdm9pZCBQcmludFN0cmluZ1RvKGNv
bnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykgewotICBQcmludENoYXJzQXNTdHJpbmdUbyhz
LmRhdGEoKSwgcy5zaXplKCksIG9zKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotdm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIG9zdHJl
YW0qIG9zKSB7Ci0gIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3Mp
OwotfQotCi0vLyBQcmludHMgYSA6OndzdHJpbmcgb2JqZWN0LgotI2lmIEdURVNUX0hBU19HTE9C
QUxfV1NUUklORwotdm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6OndzdHJpbmcmIHMsIG9z
dHJlYW0qIG9zKSB7Ci0gIFByaW50Q2hhcnNBc1N0cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwg
b3MpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLQotI2lmIEdURVNU
X0hBU19TVERfV1NUUklORwotdm9pZCBQcmludFdpZGVTdHJpbmdUbyhjb25zdCA6OnN0ZDo6d3N0
cmluZyYgcywgb3N0cmVhbSogb3MpIHsKLSAgUHJpbnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCks
IHMuc2l6ZSgpLCBvcyk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC10ZXN0LXBhcnQuY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
cmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjBl
MzU0MjVlMWU2ZjcxNzlkMDJiOTM5NDViZGVlNDMxYjI1ZTRlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC10ZXN0LXBh
cnQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5j
b20gKE1hcmt1cyBIZXVsZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCIKLQot
Ly8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xl
IFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWlu
dGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVy
IGVycm9yLiAgVGhpcyB0cmljayBleGlzdHMgdG8KLS8vIHByZXZlbnQgdGhlIGFjY2lkZW50YWwg
aW5jbHVzaW9uIG9mIGd0ZXN0LWludGVybmFsLWlubC5oIGluIHRoZQotLy8gdXNlcidzIGNvZGUu
Ci0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWlu
dGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3BhY2Ug
dGVzdGluZyB7Ci0KLXVzaW5nIGludGVybmFsOjpHZXRVbml0VGVzdEltcGw7Ci0KLS8vIEdldHMg
dGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sg
dHJhY2UKLS8vIGluIGl0Lgotc3RkOjpzdHJpbmcgVGVzdFBhcnRSZXN1bHQ6OkV4dHJhY3RTdW1t
YXJ5KGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RhY2tfdHJh
Y2UgPSBzdHJzdHIobWVzc2FnZSwgaW50ZXJuYWw6OmtTdGFja1RyYWNlTWFya2VyKTsKLSAgcmV0
dXJuIHN0YWNrX3RyYWNlID09IE5VTEwgPyBtZXNzYWdlIDoKLSAgICAgIHN0ZDo6c3RyaW5nKG1l
c3NhZ2UsIHN0YWNrX3RyYWNlKTsKLX0KLQotLy8gUHJpbnRzIGEgVGVzdFBhcnRSZXN1bHQgb2Jq
ZWN0Lgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiByZXN1bHQpIHsKLSAgcmV0dXJuIG9zCi0gICAgICA8PCByZXN1bHQuZmls
ZV9uYW1lKCkgPDwgIjoiIDw8IHJlc3VsdC5saW5lX251bWJlcigpIDw8ICI6ICIKLSAgICAgIDw8
IChyZXN1bHQudHlwZSgpID09IFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcyA/ICJTdWNjZXNzIiA6
Ci0gICAgICAgICAgcmVzdWx0LnR5cGUoKSA9PSBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVy
ZSA/ICJGYXRhbCBmYWlsdXJlIiA6Ci0gICAgICAgICAgIk5vbi1mYXRhbCBmYWlsdXJlIikgPDwg
IjpcbiIKLSAgICAgIDw8IHJlc3VsdC5tZXNzYWdlKCkgPDwgc3RkOjplbmRsOwotfQotCi0vLyBB
cHBlbmRzIGEgVGVzdFBhcnRSZXN1bHQgdG8gdGhlIGFycmF5Lgotdm9pZCBUZXN0UGFydFJlc3Vs
dEFycmF5OjpBcHBlbmQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgewotICBhcnJheV8u
cHVzaF9iYWNrKHJlc3VsdCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIFRlc3RQYXJ0UmVzdWx0IGF0
IHRoZSBnaXZlbiBpbmRleCAoMC1iYXNlZCkuCi1jb25zdCBUZXN0UGFydFJlc3VsdCYgVGVzdFBh
cnRSZXN1bHRBcnJheTo6R2V0VGVzdFBhcnRSZXN1bHQoaW50IGluZGV4KSBjb25zdCB7Ci0gIGlm
IChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2l6ZSgpKSB7Ci0gICAgcHJpbnRmKCJcbkludmFsaWQg
aW5kZXggKCVkKSBpbnRvIFRlc3RQYXJ0UmVzdWx0QXJyYXkuXG4iLCBpbmRleCk7Ci0gICAgaW50
ZXJuYWw6OnBvc2l4OjpBYm9ydCgpOwotICB9Ci0KLSAgcmV0dXJuIGFycmF5X1tpbmRleF07Ci19
Ci0KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBUZXN0UGFydFJlc3VsdCBvYmplY3RzIGluIHRo
ZSBhcnJheS4KLWludCBUZXN0UGFydFJlc3VsdEFycmF5OjpzaXplKCkgY29uc3QgewotICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihhcnJheV8uc2l6ZSgpKTsKLX0KLQotbmFtZXNwYWNlIGludGVy
bmFsIHsKLQotSGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyOjpIYXNOZXdGYXRhbEZhaWx1cmVIZWxw
ZXIoKQotICAgIDogaGFzX25ld19mYXRhbF9mYWlsdXJlXyhmYWxzZSksCi0gICAgICBvcmlnaW5h
bF9yZXBvcnRlcl8oR2V0VW5pdFRlc3RJbXBsKCktPgotICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCkpIHsKLSAgR2V0VW5p
dFRlc3RJbXBsKCktPlNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKHRo
aXMpOwotfQotCi1IYXNOZXdGYXRhbEZhaWx1cmVIZWxwZXI6On5IYXNOZXdGYXRhbEZhaWx1cmVI
ZWxwZXIoKSB7Ci0gIEdldFVuaXRUZXN0SW1wbCgpLT5TZXRUZXN0UGFydFJlc3VsdFJlcG9ydGVy
Rm9yQ3VycmVudFRocmVhZCgKLSAgICAgIG9yaWdpbmFsX3JlcG9ydGVyXyk7Ci19Ci0KLXZvaWQg
SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyOjpSZXBvcnRUZXN0UGFydFJlc3VsdCgKLSAgICBjb25z
dCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIGlmIChyZXN1bHQuZmF0YWxseV9mYWlsZWQo
KSkKLSAgICBoYXNfbmV3X2ZhdGFsX2ZhaWx1cmVfID0gdHJ1ZTsKLSAgb3JpZ2luYWxfcmVwb3J0
ZXJfLT5SZXBvcnRUZXN0UGFydFJlc3VsdChyZXN1bHQpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXR5cGVk
LXRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMWVlZjQ3NTRlZmViNmJj
MDY2MjM5YjFjY2MzYmZlZWI4OTYzMTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4K
LS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0K
LSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8vIFNraXBzIHRvIHRoZSBmaXJzdCBub24t
c3BhY2UgY2hhciBpbiBzdHIuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHN0cgotLy8gY29u
dGFpbnMgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCi1zdGF0aWMgY29uc3QgY2hhciogU2tp
cFNwYWNlcyhjb25zdCBjaGFyKiBzdHIpIHsKLSAgd2hpbGUgKElzU3BhY2UoKnN0cikpCi0gICAg
c3RyKys7Ci0gIHJldHVybiBzdHI7Ci19Ci0KLXN0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gU3BsaXRJbnRvVGVzdE5hbWVzKGNvbnN0IGNoYXIqIHNyYykgewotICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gbmFtZV92ZWM7Ci0gIHNyYyA9IFNraXBTcGFjZXMoc3JjKTsKLSAgZm9yICg7
IHNyYyAhPSBOVUxMOyBzcmMgPSBTa2lwQ29tbWEoc3JjKSkgewotICAgIG5hbWVfdmVjLnB1c2hf
YmFjayhTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEoc3JjKSkpOwotICB9
Ci0gIHJldHVybiBuYW1lX3ZlYzsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCByZWdpc3RlcmVkX3Rl
c3RzIG1hdGNoIHRoZSB0ZXN0IG5hbWVzIGluCi0vLyByZWdpc3RlcmVkX3Rlc3RzXzsgcmV0dXJu
cyByZWdpc3RlcmVkX3Rlc3RzIGlmIHN1Y2Nlc3NmdWwsIG9yCi0vLyBhYm9ydHMgdGhlIHByb2dy
YW0gb3RoZXJ3aXNlLgotY29uc3QgY2hhciogVHlwZWRUZXN0Q2FzZVBTdGF0ZTo6VmVyaWZ5UmVn
aXN0ZXJlZFRlc3ROYW1lcygKLSAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogcmVnaXN0ZXJlZF90ZXN0cykgewotICB0eXBlZGVmIFJlZ2lzdGVyZWRUZXN0c01hcDo6
Y29uc3RfaXRlcmF0b3IgUmVnaXN0ZXJlZFRlc3RJdGVyOwotICByZWdpc3RlcmVkXyA9IHRydWU7
Ci0KLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG5hbWVfdmVjID0gU3BsaXRJbnRvVGVzdE5h
bWVzKHJlZ2lzdGVyZWRfdGVzdHMpOwotCi0gIE1lc3NhZ2UgZXJyb3JzOwotCi0gIHN0ZDo6c2V0
PHN0ZDo6c3RyaW5nPiB0ZXN0czsKLSAgZm9yIChzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIG5hbWVfaXQgPSBuYW1lX3ZlYy5iZWdpbigpOwotICAgICAgIG5hbWVfaXQg
IT0gbmFtZV92ZWMuZW5kKCk7ICsrbmFtZV9pdCkgewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lID0gKm5hbWVfaXQ7Ci0gICAgaWYgKHRlc3RzLmNvdW50KG5hbWUpICE9IDApIHsKLSAgICAg
IGVycm9ycyA8PCAiVGVzdCAiIDw8IG5hbWUgPDwgIiBpcyBsaXN0ZWQgbW9yZSB0aGFuIG9uY2Uu
XG4iOwotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwot
ICAgIGZvciAoUmVnaXN0ZXJlZFRlc3RJdGVyIGl0ID0gcmVnaXN0ZXJlZF90ZXN0c18uYmVnaW4o
KTsKLSAgICAgICAgIGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpOwotICAgICAgICAgKytp
dCkgewotICAgICAgaWYgKG5hbWUgPT0gaXQtPmZpcnN0KSB7Ci0gICAgICAgIGZvdW5kID0gdHJ1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGZvdW5kKSB7Ci0g
ICAgICB0ZXN0cy5pbnNlcnQobmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGVycm9ycyA8PCAi
Tm8gdGVzdCBuYW1lZCAiIDw8IG5hbWUKLSAgICAgICAgICAgICA8PCAiIGNhbiBiZSBmb3VuZCBp
biB0aGlzIHRlc3QgY2FzZS5cbiI7Ci0gICAgfQotICB9Ci0KLSAgZm9yIChSZWdpc3RlcmVkVGVz
dEl0ZXIgaXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOwotICAgICAgIGl0ICE9IHJlZ2lz
dGVyZWRfdGVzdHNfLmVuZCgpOwotICAgICAgICsraXQpIHsKLSAgICBpZiAodGVzdHMuY291bnQo
aXQtPmZpcnN0KSA9PSAwKSB7Ci0gICAgICBlcnJvcnMgPDwgIllvdSBmb3Jnb3QgdG8gbGlzdCB0
ZXN0ICIgPDwgaXQtPmZpcnN0IDw8ICIuXG4iOwotICAgIH0KLSAgfQotCi0gIGNvbnN0IHN0ZDo6
c3RyaW5nJiBlcnJvcnNfc3RyID0gZXJyb3JzLkdldFN0cmluZygpOwotICBpZiAoZXJyb3JzX3N0
ciAhPSAiIikgewotICAgIGZwcmludGYoc3RkZXJyLCAiJXMgJXMiLCBGb3JtYXRGaWxlTG9jYXRp
b24oZmlsZSwgbGluZSkuY19zdHIoKSwKLSAgICAgICAgICAgIGVycm9yc19zdHIuY19zdHIoKSk7
Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgcG9zaXg6OkFib3J0KCk7Ci0gIH0KLQotICByZXR1
cm4gcmVnaXN0ZXJlZF90ZXN0czsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVT
VF9QCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9n
dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ExOGYyNWQxYmZkNDdhMjBm
N2M4YWIwM2YyOWZiM2RjODFhZGU2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSw1NDA4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8g
VGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3Qu
aCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0j
aW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHdjaGFy
Lmg+Ci0jaW5jbHVkZSA8d2N0eXBlLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVk
ZSA8aW9tYW5pcD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRl
IDxtYXA+Ci0jaW5jbHVkZSA8b3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHNzdHJlYW0+
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaWYgR1RFU1RfT1NfTElOVVgKLQotLy8gVE9ETyhrZW50
b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCi0v
LyBnZXR0aW1lb2ZkYXkoKS4KLSMgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLQot
IyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8g
Tk9MSU5UCi0jIGluY2x1ZGUgPHNjaGVkLmg+ICAvLyBOT0xJTlQKLS8vIERlY2xhcmVzIHZzbnBy
aW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotIyBpbmNs
dWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL21tYW4uaD4gIC8vIE5P
TElOVAotIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPHVuaXN0
ZC5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPHN0cmluZz4KLQotI2VsaWYgR1RFU1RfT1NfU1lN
QklBTgotIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotIyBpbmNsdWRlIDxzeXMv
dGltZS5oPiAgLy8gTk9MSU5UCi0KLSNlbGlmIEdURVNUX09TX1pPUwotIyBkZWZpbmUgR1RFU1Rf
SEFTX0dFVFRJTUVPRkRBWV8gMQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0K
LS8vIE9uIHovT1Mgd2UgYWRkaXRpb25hbGx5IG5lZWQgc3RyaW5ncy5oIGZvciBzdHJjYXNlY21w
LgotIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQKLQotI2VsaWYgR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUgIC8vIFdlIGFyZSBvbiBXaW5kb3dzIENFLgotCi0jIGluY2x1ZGUgPHdpbmRv
d3MuaD4gIC8vIE5PTElOVAotIyB1bmRlZiBtaW4KLQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUyAg
Ly8gV2UgYXJlIG9uIFdpbmRvd3MgcHJvcGVyLgotCi0jIGluY2x1ZGUgPGlvLmg+ICAvLyBOT0xJ
TlQKLSMgaW5jbHVkZSA8c3lzL3RpbWViLmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL3R5
cGVzLmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAotCi0j
IGlmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKLS8vIE1pbkdXIGhhcyBnZXR0aW1lb2ZkYXkoKSBi
dXQgbm90IF9mdGltZTY0KCkuCi0vLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9j
b25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YKLS8vICAgZ2V0dGltZW9mZGF5KCkuCi0vLyBU
T0RPKGtlbnRvbkBnb29nbGUuY29tKTogVGhlcmUgYXJlIG90aGVyIHdheXMgdG8gZ2V0IHRoZSB0
aW1lIG9uCi0vLyAgIFdpbmRvd3MsIGxpa2UgR2V0VGlja0NvdW50KCkgb3IgR2V0U3lzdGVtVGlt
ZUFzRmlsZVRpbWUoKS4gIE1pbkdXCi0vLyAgIHN1cHBvcnRzIHRoZXNlLiAgY29uc2lkZXIgdXNp
bmcgdGhlbSBpbnN0ZWFkLgotIyAgZGVmaW5lIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSMg
IGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBOT0xJTlQKLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTUlOR1cKLQotLy8gY3BwbGludCB0aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVh
ZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8KLS8vIHNpbGVuY2UgaXQuCi0jIGluY2x1ZGUgPHdp
bmRvd3MuaD4gIC8vIE5PTElOVAotIyB1bmRlZiBtaW4KLQotI2Vsc2UKLQotLy8gQXNzdW1lIG90
aGVyIHBsYXRmb3JtcyBoYXZlIGdldHRpbWVvZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xl
LmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCi0vLyAgIGdldHRp
bWVvZmRheSgpLgotIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotCi0vLyBjcHBs
aW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIgaXMgYWxyZWFkeSBpbmNsdWRlZCwgc28gd2Ugd2Fu
dCB0bwotLy8gc2lsZW5jZSBpdC4KLSMgaW5jbHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAot
IyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5PTElOVAotCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJ
TlVYCi0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotIyBpbmNsdWRlIDxzdGRleGNlcHQ+Ci0j
ZW5kaWYKLQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLSMgaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAotIyBpbmNs
dWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAv
LyBOT0xJTlQKLSNlbmRpZgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVu
aXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3Qg
Y29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVy
ZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50
IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmgg
aW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSMgZGVmaW5lIHZzbnByaW50ZiBfdnNucHJpbnRm
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi11
c2luZyBpbnRlcm5hbDo6Q291bnRJZjsKLXVzaW5nIGludGVybmFsOjpGb3JFYWNoOwotdXNpbmcg
aW50ZXJuYWw6OkdldEVsZW1lbnRPcjsKLXVzaW5nIGludGVybmFsOjpTaHVmZmxlOwotCi0vLyBD
b25zdGFudHMuCi0KLS8vIEEgdGVzdCB3aG9zZSB0ZXN0IGNhc2UgbmFtZSBvciB0ZXN0IG5hbWUg
bWF0Y2hlcyB0aGlzIGZpbHRlciBpcwotLy8gZGlzYWJsZWQgYW5kIG5vdCBydW4uCi1zdGF0aWMg
Y29uc3QgY2hhciBrRGlzYWJsZVRlc3RGaWx0ZXJbXSA9ICJESVNBQkxFRF8qOiovRElTQUJMRURf
KiI7Ci0KLS8vIEEgdGVzdCBjYXNlIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGlzIGZpbHRlciBpcyBj
b25zaWRlcmVkIGEgZGVhdGgKLS8vIHRlc3QgY2FzZSBhbmQgd2lsbCBiZSBydW4gYmVmb3JlIHRl
c3QgY2FzZXMgd2hvc2UgbmFtZSBkb2Vzbid0Ci0vLyBtYXRjaCB0aGlzIGZpbHRlci4KLXN0YXRp
YyBjb25zdCBjaGFyIGtEZWF0aFRlc3RDYXNlRmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhU
ZXN0LyoiOwotCi0vLyBBIHRlc3QgZmlsdGVyIHRoYXQgbWF0Y2hlcyBldmVyeXRoaW5nLgotc3Rh
dGljIGNvbnN0IGNoYXIga1VuaXZlcnNhbEZpbHRlcltdID0gIioiOwotCi0vLyBUaGUgZGVmYXVs
dCBvdXRwdXQgZmlsZSBmb3IgWE1MIG91dHB1dC4KLXN0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0
T3V0cHV0RmlsZVtdID0gInRlc3RfZGV0YWlsLnhtbCI7Ci0KLS8vIFRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBuYW1lIGZvciB0aGUgdGVzdCBzaGFyZCBpbmRleC4KLXN0YXRpYyBjb25zdCBjaGFy
IGtUZXN0U2hhcmRJbmRleFtdID0gIkdURVNUX1NIQVJEX0lOREVYIjsKLS8vIFRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZSBuYW1lIGZvciB0aGUgdG90YWwgbnVtYmVyIG9mIHRlc3Qgc2hhcmRzLgot
c3RhdGljIGNvbnN0IGNoYXIga1Rlc3RUb3RhbFNoYXJkc1tdID0gIkdURVNUX1RPVEFMX1NIQVJE
UyI7Ci0vLyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hhcmQg
c3RhdHVzIGZpbGUuCi1zdGF0aWMgY29uc3QgY2hhciBrVGVzdFNoYXJkU3RhdHVzRmlsZVtdID0g
IkdURVNUX1NIQVJEX1NUQVRVU19GSUxFIjsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8g
VGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1lc3NhZ2VzIHRvIGluZGljYXRlIHRoZSBzdGFydCBv
ZiB0aGUKLS8vIHN0YWNrIHRyYWNlLgotY29uc3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdID0g
IlxuU3RhY2sgdHJhY2U6XG4iOwotCi0vLyBnX2hlbHBfZmxhZyBpcyB0cnVlIGlmZiB0aGUgLS1o
ZWxwIGZsYWcgb3IgYW4gZXF1aXZhbGVudCBmb3JtIGlzCi0vLyBzcGVjaWZpZWQgb24gdGhlIGNv
bW1hbmQgbGluZS4KLWJvb2wgZ19oZWxwX2ZsYWcgPSBmYWxzZTsKLQotfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCi0KLXN0YXRpYyBjb25zdCBjaGFyKiBHZXREZWZhdWx0RmlsdGVyKCkgewotI2lm
ZGVmIEdURVNUX1RFU1RfRklMVEVSX0VOVl9WQVJfCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHRlc3Ri
cmlkZ2VfdGVzdF9vbmx5ID0gZ2V0ZW52KEdURVNUX1RFU1RfRklMVEVSX0VOVl9WQVJfKTsKLSAg
aWYgKHRlc3RicmlkZ2VfdGVzdF9vbmx5ICE9IE5VTEwpIHsKLSAgICByZXR1cm4gdGVzdGJyaWRn
ZV90ZXN0X29ubHk7Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8K
LSAgcmV0dXJuIGtVbml2ZXJzYWxGaWx0ZXI7Ci19Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAg
ICBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cywKLSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVu
digiYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiLCBmYWxzZSksCi0gICAgIlJ1biBkaXNhYmxlZCB0
ZXN0cyB0b28sIGluIGFkZGl0aW9uIHRvIHRoZSB0ZXN0cyBub3JtYWxseSBiZWluZyBydW4uIik7
Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICBicmVha19vbl9mYWlsdXJlLAotICAgIGludGVy
bmFsOjpCb29sRnJvbUdUZXN0RW52KCJicmVha19vbl9mYWlsdXJlIiwgZmFsc2UpLAotICAgICJU
cnVlIGlmZiBhIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkIGJlIGEgZGVidWdnZXIgYnJlYWstcG9p
bnQuIik7Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICBjYXRjaF9leGNlcHRpb25zLAotICAg
IGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJjYXRjaF9leGNlcHRpb25zIiwgdHJ1ZSksCi0g
ICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8KLSAgICAiIHNob3VsZCBjYXRjaCBleGNlcHRpb25z
IGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFpbHVyZXMuIik7Ci0KLUdURVNUX0RFRklORV9zdHJp
bmdfKAotICAgIGNvbG9yLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImNvbG9y
IiwgImF1dG8iKSwKLSAgICAiV2hldGhlciB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuICBW
YWxpZCB2YWx1ZXM6IHllcywgbm8sICIKLSAgICAiYW5kIGF1dG8uICAnYXV0bycgbWVhbnMgdG8g
dXNlIGNvbG9ycyBpZiB0aGUgb3V0cHV0IGlzICIKLSAgICAiYmVpbmcgc2VudCB0byBhIHRlcm1p
bmFsIGFuZCB0aGUgVEVSTSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiCi0gICAgImlzIHNldCB0byBh
IHRlcm1pbmFsIHR5cGUgdGhhdCBzdXBwb3J0cyBjb2xvcnMuIik7Ci0KLUdURVNUX0RFRklORV9z
dHJpbmdfKAotICAgIGZpbHRlciwKLSAgICBpbnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJm
aWx0ZXIiLCBHZXREZWZhdWx0RmlsdGVyKCkpLAotICAgICJBIGNvbG9uLXNlcGFyYXRlZCBsaXN0
IG9mIGdsb2IgKG5vdCByZWdleCkgcGF0dGVybnMgIgotICAgICJmb3IgZmlsdGVyaW5nIHRoZSB0
ZXN0cyB0byBydW4sIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAiCi0gICAgIictJyBhbmQgYSA6
IHNlcGFyYXRlZCBsaXN0IG9mIG5lZ2F0aXZlIHBhdHRlcm5zICh0ZXN0cyB0byAiCi0gICAgImV4
Y2x1ZGUpLiAgQSB0ZXN0IGlzIHJ1biBpZiBpdCBtYXRjaGVzIG9uZSBvZiB0aGUgcG9zaXRpdmUg
IgotICAgICJwYXR0ZXJucyBhbmQgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBw
YXR0ZXJucy4iKTsKLQotR1RFU1RfREVGSU5FX2Jvb2xfKGxpc3RfdGVzdHMsIGZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICJMaXN0IGFsbCB0ZXN0cyB3aXRob3V0IHJ1bm5pbmcgdGhlbS4iKTsK
LQotR1RFU1RfREVGSU5FX3N0cmluZ18oCi0gICAgb3V0cHV0LAotICAgIGludGVybmFsOjpTdHJp
bmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsICIiKSwKLSAgICAiQSBmb3JtYXQgKGN1cnJlbnRseSBt
dXN0IGJlIFwieG1sXCIpLCBvcHRpb25hbGx5IGZvbGxvd2VkICIKLSAgICAiYnkgYSBjb2xvbiBh
bmQgYW4gb3V0cHV0IGZpbGUgbmFtZSBvciBkaXJlY3RvcnkuIEEgZGlyZWN0b3J5ICIKLSAgICAi
aXMgaW5kaWNhdGVkIGJ5IGEgdHJhaWxpbmcgcGF0aG5hbWUgc2VwYXJhdG9yLiAiCi0gICAgIkV4
YW1wbGVzOiBcInhtbDpmaWxlbmFtZS54bWxcIiwgXCJ4bWw6OmRpcmVjdG9yeW5hbWUvXCIuICIK
LSAgICAiSWYgYSBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkLCBvdXRwdXQgZmlsZXMgd2lsbCBiZSBj
cmVhdGVkICIKLSAgICAid2l0aGluIHRoYXQgZGlyZWN0b3J5LCB3aXRoIGZpbGUtbmFtZXMgYmFz
ZWQgb24gdGhlIHRlc3QgIgotICAgICJleGVjdXRhYmxlJ3MgbmFtZSBhbmQsIGlmIG5lY2Vzc2Fy
eSwgbWFkZSB1bmlxdWUgYnkgYWRkaW5nICIKLSAgICAiZGlnaXRzLiIpOwotCi1HVEVTVF9ERUZJ
TkVfYm9vbF8oCi0gICAgcHJpbnRfdGltZSwKLSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVu
digicHJpbnRfdGltZSIsIHRydWUpLAotICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVfCi0gICAg
IiBzaG91bGQgZGlzcGxheSBlbGFwc2VkIHRpbWUgaW4gdGV4dCBvdXRwdXQuIik7Ci0KLUdURVNU
X0RFRklORV9pbnQzMl8oCi0gICAgcmFuZG9tX3NlZWQsCi0gICAgaW50ZXJuYWw6OkludDMyRnJv
bUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDApLAotICAgICJSYW5kb20gbnVtYmVyIHNlZWQgdG8g
dXNlIHdoZW4gc2h1ZmZsaW5nIHRlc3Qgb3JkZXJzLiAgTXVzdCBiZSBpbiByYW5nZSAiCi0gICAg
IlsxLCA5OTk5OV0sIG9yIDAgdG8gdXNlIGEgc2VlZCBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1l
LiIpOwotCi1HVEVTVF9ERUZJTkVfaW50MzJfKAotICAgIHJlcGVhdCwKLSAgICBpbnRlcm5hbDo6
SW50MzJGcm9tR1Rlc3RFbnYoInJlcGVhdCIsIDEpLAotICAgICJIb3cgbWFueSB0aW1lcyB0byBy
ZXBlYXQgZWFjaCB0ZXN0LiAgU3BlY2lmeSBhIG5lZ2F0aXZlIG51bWJlciAiCi0gICAgImZvciBy
ZXBlYXRpbmcgZm9yZXZlci4gIFVzZWZ1bCBmb3Igc2hha2luZyBvdXQgZmxha3kgdGVzdHMuIik7
Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICBzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcywg
ZmFsc2UsCi0gICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8gIiBzaG91bGQgaW5jbHVkZSBpbnRl
cm5hbCBzdGFjayBmcmFtZXMgd2hlbiAiCi0gICAgInByaW50aW5nIHRlc3QgZmFpbHVyZSBzdGFj
ayB0cmFjZXMuIik7Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICBzaHVmZmxlLAotICAgIGlu
dGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJzaHVmZmxlIiwgZmFsc2UpLAotICAgICJUcnVlIGlm
ZiAiIEdURVNUX05BTUVfCi0gICAgIiBzaG91bGQgcmFuZG9taXplIHRlc3RzJyBvcmRlciBvbiBl
dmVyeSBydW4uIik7Ci0KLUdURVNUX0RFRklORV9pbnQzMl8oCi0gICAgc3RhY2tfdHJhY2VfZGVw
dGgsCi0gICAgaW50ZXJuYWw6OkludDMyRnJvbUdUZXN0RW52KCJzdGFja190cmFjZV9kZXB0aCIs
IGtNYXhTdGFja1RyYWNlRGVwdGgpLAotICAgICJUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sg
ZnJhbWVzIHRvIHByaW50IHdoZW4gYW4gIgotICAgICJhc3NlcnRpb24gZmFpbHMuICBUaGUgdmFs
aWQgcmFuZ2UgaXMgMCB0aHJvdWdoIDEwMCwgaW5jbHVzaXZlLiIpOwotCi1HVEVTVF9ERUZJTkVf
c3RyaW5nXygKLSAgICBzdHJlYW1fcmVzdWx0X3RvLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9t
R1Rlc3RFbnYoInN0cmVhbV9yZXN1bHRfdG8iLCAiIiksCi0gICAgIlRoaXMgZmxhZyBzcGVjaWZp
ZXMgdGhlIGhvc3QgbmFtZSBhbmQgdGhlIHBvcnQgbnVtYmVyIG9uIHdoaWNoIHRvIHN0cmVhbSAi
Ci0gICAgInRlc3QgcmVzdWx0cy4gRXhhbXBsZTogXCJsb2NhbGhvc3Q6NTU1XCIuIFRoZSBmbGFn
IGlzIGVmZmVjdGl2ZSBvbmx5IG9uICIKLSAgICAiTGludXguIik7Ci0KLUdURVNUX0RFRklORV9i
b29sXygKLSAgICB0aHJvd19vbl9mYWlsdXJlLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0
RW52KCJ0aHJvd19vbl9mYWlsdXJlIiwgZmFsc2UpLAotICAgICJXaGVuIHRoaXMgZmxhZyBpcyBz
cGVjaWZpZWQsIGEgZmFpbGVkIGFzc2VydGlvbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiAiCi0g
ICAgImlmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEg
bm9uLXplcm8gY29kZSAiCi0gICAgIm90aGVyd2lzZS4iKTsKLQotI2lmIEdURVNUX1VTRV9PV05f
RkxBR0ZJTEVfRkxBR18KLUdURVNUX0RFRklORV9zdHJpbmdfKAotICAgIGZsYWdmaWxlLAotICAg
IGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImZsYWdmaWxlIiwgIiIpLAotICAgICJUaGlz
IGZsYWcgc3BlY2lmaWVzIHRoZSBmbGFnZmlsZSB0byByZWFkIGNvbW1hbmQtbGluZSBmbGFncyBm
cm9tLiIpOwotI2VuZGlmICAvLyBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCi0KLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgZnJvbSBbMCwg
cmFuZ2UpLCB1c2luZyBhIExpbmVhcgotLy8gQ29uZ3J1ZW50aWFsIEdlbmVyYXRvciAoTENHKS4g
IENyYXNoZXMgaWYgJ3JhbmdlJyBpcyAwIG9yIGdyZWF0ZXIKLS8vIHRoYW4ga01heFJhbmdlLgot
VUludDMyIFJhbmRvbTo6R2VuZXJhdGUoVUludDMyIHJhbmdlKSB7Ci0gIC8vIFRoZXNlIGNvbnN0
YW50cyBhcmUgdGhlIHNhbWUgYXMgYXJlIHVzZWQgaW4gZ2xpYmMncyByYW5kKDMpLgotICBzdGF0
ZV8gPSAoMTEwMzUxNTI0NVUqc3RhdGVfICsgMTIzNDVVKSAlIGtNYXhSYW5nZTsKLQotICBHVEVT
VF9DSEVDS18ocmFuZ2UgPiAwKQotICAgICAgPDwgIkNhbm5vdCBnZW5lcmF0ZSBhIG51bWJlciBp
biB0aGUgcmFuZ2UgWzAsIDApLiI7Ci0gIEdURVNUX0NIRUNLXyhyYW5nZSA8PSBrTWF4UmFuZ2Up
Ci0gICAgICA8PCAiR2VuZXJhdGlvbiBvZiBhIG51bWJlciBpbiBbMCwgIiA8PCByYW5nZSA8PCAi
KSB3YXMgcmVxdWVzdGVkLCAiCi0gICAgICA8PCAiYnV0IHRoaXMgY2FuIG9ubHkgZ2VuZXJhdGUg
bnVtYmVycyBpbiBbMCwgIiA8PCBrTWF4UmFuZ2UgPDwgIikuIjsKLQotICAvLyBDb252ZXJ0aW5n
IHZpYSBtb2R1bHVzIGludHJvZHVjZXMgYSBiaXQgb2YgZG93bndhcmQgYmlhcywgYnV0Ci0gIC8v
IGl0J3Mgc2ltcGxlLCBhbmQgYSBsaW5lYXIgY29uZ3J1ZW50aWFsIGdlbmVyYXRvciBpc24ndCB0
b28gZ29vZAotICAvLyB0byBiZWdpbiB3aXRoLgotICByZXR1cm4gc3RhdGVfICUgcmFuZ2U7Ci19
Ci0KLS8vIEdUZXN0SXNJbml0aWFsaXplZCgpIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIgaGFz
IGluaXRpYWxpemVkCi0vLyBHb29nbGUgVGVzdC4gIFVzZWZ1bCBmb3IgY2F0Y2hpbmcgdGhlIHVz
ZXIgbWlzdGFrZSBvZiBub3QgaW5pdGlhbGl6aW5nCi0vLyBHb29nbGUgVGVzdCBiZWZvcmUgY2Fs
bGluZyBSVU5fQUxMX1RFU1RTKCkuCi1zdGF0aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7
IHJldHVybiBHZXRBcmd2cygpLnNpemUoKSA+IDA7IH0KLQotLy8gSXRlcmF0ZXMgb3ZlciBhIHZl
Y3RvciBvZiBUZXN0Q2FzZXMsIGtlZXBpbmcgYSBydW5uaW5nIHN1bSBvZiB0aGUKLS8vIHJlc3Vs
dHMgb2YgY2FsbGluZyBhIGdpdmVuIGludC1yZXR1cm5pbmcgbWV0aG9kIG9uIGVhY2guCi0vLyBS
ZXR1cm5zIHRoZSBzdW0uCi1zdGF0aWMgaW50IFN1bU92ZXJUZXN0Q2FzZUxpc3QoY29uc3Qgc3Rk
Ojp2ZWN0b3I8VGVzdENhc2UqPiYgY2FzZV9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAoVGVzdENhc2U6OiptZXRob2QpKCkgY29uc3QpIHsKLSAgaW50IHN1bSA9IDA7
Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FzZV9saXN0LnNpemUoKTsgaSsrKSB7Ci0gICAg
c3VtICs9IChjYXNlX2xpc3RbaV0tPiptZXRob2QpKCk7Ci0gIH0KLSAgcmV0dXJuIHN1bTsKLX0K
LQotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBjYXNlIHBhc3NlZC4KLXN0YXRpYyBib29s
IFRlc3RDYXNlUGFzc2VkKGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UpIHsKLSAgcmV0dXJuIHRl
c3RfY2FzZS0+c2hvdWxkX3J1bigpICYmIHRlc3RfY2FzZS0+UGFzc2VkKCk7Ci19Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgY2FzZSBmYWlsZWQuCi1zdGF0aWMgYm9vbCBUZXN0Q2Fz
ZUZhaWxlZChjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSB7Ci0gIHJldHVybiB0ZXN0X2Nhc2Ut
PnNob3VsZF9ydW4oKSAmJiB0ZXN0X2Nhc2UtPkZhaWxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRy
dWUgaWZmIHRlc3RfY2FzZSBjb250YWlucyBhdCBsZWFzdCBvbmUgdGVzdCB0aGF0IHNob3VsZAot
Ly8gcnVuLgotc3RhdGljIGJvb2wgU2hvdWxkUnVuVGVzdENhc2UoY29uc3QgVGVzdENhc2UqIHRl
c3RfY2FzZSkgewotICByZXR1cm4gdGVzdF9jYXNlLT5zaG91bGRfcnVuKCk7Ci19Ci0KLS8vIEFz
c2VydEhlbHBlciBjb25zdHJ1Y3Rvci4KLUFzc2VydEhlbHBlcjo6QXNzZXJ0SGVscGVyKFRlc3RQ
YXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlKQotICAgIDogZGF0YV8obmV3
IEFzc2VydEhlbHBlckRhdGEodHlwZSwgZmlsZSwgbGluZSwgbWVzc2FnZSkpIHsKLX0KLQotQXNz
ZXJ0SGVscGVyOjp+QXNzZXJ0SGVscGVyKCkgewotICBkZWxldGUgZGF0YV87Ci19Ci0KLS8vIE1l
c3NhZ2UgYXNzaWdubWVudCwgZm9yIGFzc2VydGlvbiBzdHJlYW1pbmcgc3VwcG9ydC4KLXZvaWQg
QXNzZXJ0SGVscGVyOjpvcGVyYXRvcj0oY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkgY29uc3Qgewot
ICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Ci0gICAgQWRkVGVzdFBhcnRSZXN1bHQoZGF0YV8t
PnR5cGUsIGRhdGFfLT5maWxlLCBkYXRhXy0+bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICBB
cHBlbmRVc2VyTWVzc2FnZShkYXRhXy0+bWVzc2FnZSwgbWVzc2FnZSksCi0gICAgICAgICAgICAg
ICAgICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmltcGwoKQotICAgICAgICAgICAgICAg
ICAgICAgIC0+Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCgxKQotICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNraXBzIHRoZSBzdGFjayBmcmFtZSBmb3IgdGhpcyBmdW5jdGlvbiBpdHNlbGYu
Ci0gICAgICAgICAgICAgICAgICAgICAgKTsgIC8vIE5PTElOVAotfQotCi0vLyBNdXRleCBmb3Ig
bGlua2VkIHBvaW50ZXJzLgotR1RFU1RfQVBJXyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhn
X2xpbmtlZF9wdHJfbXV0ZXgpOwotCi0vLyBBIGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1
bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KLTo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6
aW50ZXJuYWw6OnN0cmluZz4gZ19hcmd2czsKLQotY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5n
OjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0QXJndnMoKSB7Ci0jaWYgZGVmaW5lZChHVEVTVF9DVVNU
T01fR0VUX0FSR1ZTXykKLSAgcmV0dXJuIEdURVNUX0NVU1RPTV9HRVRfQVJHVlNfKCk7Ci0jZWxz
ZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKLSAgcmV0dXJuIGdfYXJndnM7
Ci0jZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0dFVF9BUkdWU18pCi19Ci0KLS8vIFJl
dHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3Rvcnkg
cGF0aCBpZiB0aGF0Ci0vLyBpcyBwcmVzZW50LgotRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFi
bGVOYW1lKCkgewotICBGaWxlUGF0aCByZXN1bHQ7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJndnMoKVswXSkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUi
KSk7Ci0jZWxzZQotICByZXN1bHQuU2V0KEZpbGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsKLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0gIHJldHVybiByZXN1bHQuUmVtb3ZlRGlyZWN0b3J5
TmFtZSgpOwotfQotCi0vLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1
dCBmbGFnLgotCi0vLyBSZXR1cm5zIHRoZSBvdXRwdXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFs
IHByaW50ZWQgb3V0cHV0Lgotc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRG
b3JtYXQoKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9mbGFnID0gR1RFU1Rf
RkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSBy
ZXR1cm4gc3RkOjpzdHJpbmcoIiIpOwotCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3Ry
Y2hyKGd0ZXN0X291dHB1dF9mbGFnLCAnOicpOwotICByZXR1cm4gKGNvbG9uID09IE5VTEwpID8K
LSAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291dHB1dF9mbGFnKSA6Ci0gICAgICBzdGQ6OnN0cmlu
ZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24gLSBndGVzdF9vdXRwdXRfZmxhZyk7Ci19Ci0KLS8v
IFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJlcXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlIGRl
ZmF1bHQgaWYgbm9uZQotLy8gd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgotc3RkOjpzdHJpbmcg
VW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSB7Ci0gIGNvbnN0
IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9mbGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3Ry
KCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKQotICAgIHJldHVybiAiIjsKLQot
ICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzon
KTsKLSAgaWYgKGNvbG9uID09IE5VTEwpCi0gICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6
Q29uY2F0UGF0aHMoCi0gICAgICAgIGludGVybmFsOjpGaWxlUGF0aCgKLSAgICAgICAgICAgIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKLSAgICAgICAg
aW50ZXJuYWw6OkZpbGVQYXRoKGtEZWZhdWx0T3V0cHV0RmlsZSkpLnN0cmluZygpOwotCi0gIGlu
dGVybmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFtZShjb2xvbiArIDEpOwotICBpZiAoIW91dHB1dF9u
YW1lLklzQWJzb2x1dGVQYXRoKCkpCi0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdp
bmRvd3MgXHNvbWVccGF0aCBpcyBub3QgYW4gYWJzb2x1dGUKLSAgICAvLyBwYXRoIChhcyBpdHMg
bWVhbmluZyBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IGRyaXZlKSwgeWV0IHRoZQotICAgIC8vIGZv
bGxvd2luZyBsb2dpYyBmb3IgdHVybmluZyBpdCBpbnRvIGFuIGFic29sdXRlIHBhdGggaXMgd3Jv
bmcuCi0gICAgLy8gRml4IGl0LgotICAgIG91dHB1dF9uYW1lID0gaW50ZXJuYWw6OkZpbGVQYXRo
OjpDb25jYXRQYXRocygKLSAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpKSwKLSAgICAgICAgaW50ZXJuYWw6OkZp
bGVQYXRoKGNvbG9uICsgMSkpOwotCi0gIGlmICghb3V0cHV0X25hbWUuSXNEaXJlY3RvcnkoKSkK
LSAgICByZXR1cm4gb3V0cHV0X25hbWUuc3RyaW5nKCk7Ci0KLSAgaW50ZXJuYWw6OkZpbGVQYXRo
IHJlc3VsdChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCi0gICAg
ICBvdXRwdXRfbmFtZSwgaW50ZXJuYWw6OkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLAotICAg
ICAgR2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIoKSkpOwotICByZXR1cm4gcmVzdWx0LnN0cmluZygp
OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMg
dGhlIHN0cmluZy4gIFRoZQotLy8gZmlyc3QgJzonIG9yICdcMCcgY2hhcmFjdGVyIGluIHBhdHRl
cm4gbWFya3MgdGhlIGVuZCBvZiBpdC4KLS8vCi0vLyBUaGlzIHJlY3Vyc2l2ZSBhbGdvcml0aG0g
aXNuJ3QgdmVyeSBlZmZpY2llbnQsIGJ1dCBpcyBjbGVhciBhbmQKLS8vIHdvcmtzIHdlbGwgZW5v
dWdoIGZvciBtYXRjaGluZyB0ZXN0IG5hbWVzLCB3aGljaCBhcmUgc2hvcnQuCi1ib29sIFVuaXRU
ZXN0T3B0aW9uczo6UGF0dGVybk1hdGNoZXNTdHJpbmcoY29uc3QgY2hhciAqcGF0dGVybiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIp
IHsKLSAgc3dpdGNoICgqcGF0dGVybikgewotICAgIGNhc2UgJ1wwJzoKLSAgICBjYXNlICc6Jzog
IC8vIEVpdGhlciAnOicgb3IgJ1wwJyBtYXJrcyB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuLgotICAg
ICAgcmV0dXJuICpzdHIgPT0gJ1wwJzsKLSAgICBjYXNlICc/JzogIC8vIE1hdGNoZXMgYW55IHNp
bmdsZSBjaGFyYWN0ZXIuCi0gICAgICByZXR1cm4gKnN0ciAhPSAnXDAnICYmIFBhdHRlcm5NYXRj
aGVzU3RyaW5nKHBhdHRlcm4gKyAxLCBzdHIgKyAxKTsKLSAgICBjYXNlICcqJzogIC8vIE1hdGNo
ZXMgYW55IHN0cmluZyAocG9zc2libHkgZW1wdHkpIG9mIGNoYXJhY3RlcnMuCi0gICAgICByZXR1
cm4gKCpzdHIgIT0gJ1wwJyAmJiBQYXR0ZXJuTWF0Y2hlc1N0cmluZyhwYXR0ZXJuLCBzdHIgKyAx
KSkgfHwKLSAgICAgICAgICBQYXR0ZXJuTWF0Y2hlc1N0cmluZyhwYXR0ZXJuICsgMSwgc3RyKTsK
LSAgICBkZWZhdWx0OiAgLy8gTm9uLXNwZWNpYWwgY2hhcmFjdGVyLiAgTWF0Y2hlcyBpdHNlbGYu
Ci0gICAgICByZXR1cm4gKnBhdHRlcm4gPT0gKnN0ciAmJgotICAgICAgICAgIFBhdHRlcm5NYXRj
aGVzU3RyaW5nKHBhdHRlcm4gKyAxLCBzdHIgKyAxKTsKLSAgfQotfQotCi1ib29sIFVuaXRUZXN0
T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29u
c3QgY2hhciogZmlsdGVyKSB7Ci0gIGNvbnN0IGNoYXIgKmN1cl9wYXR0ZXJuID0gZmlsdGVyOwot
ICBmb3IgKDs7KSB7Ci0gICAgaWYgKFBhdHRlcm5NYXRjaGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBu
YW1lLmNfc3RyKCkpKSB7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBGaW5k
cyB0aGUgbmV4dCBwYXR0ZXJuIGluIHRoZSBmaWx0ZXIuCi0gICAgY3VyX3BhdHRlcm4gPSBzdHJj
aHIoY3VyX3BhdHRlcm4sICc6Jyk7Ci0KLSAgICAvLyBSZXR1cm5zIGlmIG5vIG1vcmUgcGF0dGVy
biBjYW4gYmUgZm91bmQuCi0gICAgaWYgKGN1cl9wYXR0ZXJuID09IE5VTEwpIHsKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTa2lwcyB0aGUgcGF0dGVybiBzZXBhcmF0ZXIg
KHRoZSAnOicgY2hhcmFjdGVyKS4KLSAgICBjdXJfcGF0dGVybisrOwotICB9Ci19Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0
IGNhc2UKLS8vIG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6
RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZXN0X25hbWUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcmIGZ1bGxfbmFtZSA9IHRlc3RfY2FzZV9u
YW1lICsgIi4iICsgdGVzdF9uYW1lLmNfc3RyKCk7Ci0KLSAgLy8gU3BsaXQgLS1ndGVzdF9maWx0
ZXIgYXQgJy0nLCBpZiB0aGVyZSBpcyBvbmUsIHRvIHNlcGFyYXRlIGludG8KLSAgLy8gcG9zaXRp
dmUgZmlsdGVyIGFuZCBuZWdhdGl2ZSBmaWx0ZXIgcG9ydGlvbnMKLSAgY29uc3QgY2hhciogY29u
c3QgcCA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOwotICBjb25zdCBjaGFyKiBjb25zdCBk
YXNoID0gc3RyY2hyKHAsICctJyk7Ci0gIHN0ZDo6c3RyaW5nIHBvc2l0aXZlOwotICBzdGQ6OnN0
cmluZyBuZWdhdGl2ZTsKLSAgaWYgKGRhc2ggPT0gTlVMTCkgewotICAgIHBvc2l0aXZlID0gR1RF
U1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCk7ICAvLyBXaG9sZSBzdHJpbmcgaXMgYSBwb3NpdGl2ZSBm
aWx0ZXIKLSAgICBuZWdhdGl2ZSA9ICIiOwotICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gc3Rk
OjpzdHJpbmcocCwgZGFzaCk7ICAgLy8gRXZlcnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5l
Z2F0aXZlID0gc3RkOjpzdHJpbmcoZGFzaCArIDEpOyAgLy8gRXZlcnl0aGluZyBhZnRlciB0aGUg
ZGFzaAotICAgIGlmIChwb3NpdGl2ZS5lbXB0eSgpKSB7Ci0gICAgICAvLyBUcmVhdCAnLXRlc3Qx
JyBhcyB0aGUgc2FtZSBhcyAnKi10ZXN0MScKLSAgICAgIHBvc2l0aXZlID0ga1VuaXZlcnNhbEZp
bHRlcjsKLSAgICB9Ci0gIH0KLQotICAvLyBBIGZpbHRlciBpcyBhIGNvbG9uLXNlcGFyYXRlZCBs
aXN0IG9mIHBhdHRlcm5zLiAgSXQgbWF0Y2hlcyBhCi0gIC8vIHRlc3QgaWYgYW55IHBhdHRlcm4g
aW4gaXQgbWF0Y2hlcyB0aGUgdGVzdC4KLSAgcmV0dXJuIChNYXRjaGVzRmlsdGVyKGZ1bGxfbmFt
ZSwgcG9zaXRpdmUuY19zdHIoKSkgJiYKLSAgICAgICAgICAhTWF0Y2hlc0ZpbHRlcihmdWxsX25h
bWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TRUgKLS8vIFJldHVy
bnMgRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUiBpZiBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxl
IHRoZQotLy8gZ2l2ZW4gU0VIIGV4Y2VwdGlvbiwgb3IgRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJD
SCBvdGhlcndpc2UuCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCBhcyBhbiBfX2V4Y2VwdCBj
b25kaXRpb24uCi1pbnQgVW5pdFRlc3RPcHRpb25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoRFdP
UkQgZXhjZXB0aW9uX2NvZGUpIHsKLSAgLy8gR29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNF
SCBleGNlcHRpb24gaWY6Ci0gIC8vICAgMS4gdGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAv
LyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtwb2ludCBleGNlcHRpb24sIEFORAotICAvLyAgIDMu
IHRoaXMgaXMgbm90IGEgQysrIGV4Y2VwdGlvbiAoVkMrKyBpbXBsZW1lbnRzIHRoZW0gdmlhIFNF
SCwKLSAgLy8gICAgICBhcHBhcmVudGx5KS4KLSAgLy8KLSAgLy8gU0VIIGV4Y2VwdGlvbiBjb2Rl
IGZvciBDKysgZXhjZXB0aW9ucy4KLSAgLy8gKHNlZSBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQu
Y29tL2tiLzE4NTI5NCBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCi0gIGNvbnN0IERXT1JEIGtDeHhF
eGNlcHRpb25Db2RlID0gMHhlMDZkNzM2MzsKLQotICBib29sIHNob3VsZF9oYW5kbGUgPSB0cnVl
OwotCi0gIGlmICghR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSkKLSAgICBzaG91bGRfaGFu
ZGxlID0gZmFsc2U7Ci0gIGVsc2UgaWYgKGV4Y2VwdGlvbl9jb2RlID09IEVYQ0VQVElPTl9CUkVB
S1BPSU5UKQotICAgIHNob3VsZF9oYW5kbGUgPSBmYWxzZTsKLSAgZWxzZSBpZiAoZXhjZXB0aW9u
X2NvZGUgPT0ga0N4eEV4Y2VwdGlvbkNvZGUpCi0gICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOwot
Ci0gIHJldHVybiBzaG91bGRfaGFuZGxlID8gRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUiA6IEVY
Q0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKLQot
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFRoZSBjJ3RvciBzZXRzIHRoaXMgb2JqZWN0
IGFzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIHVzZWQgYnkKLS8vIEdvb2dsZSBUZXN0
LiAgVGhlICdyZXN1bHQnIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hlcmUgdG8gcmVwb3J0IHRoZQot
Ly8gcmVzdWx0cy4gSW50ZXJjZXB0cyBvbmx5IGZhaWx1cmVzIGZyb20gdGhlIGN1cnJlbnQgdGhy
ZWFkLgotU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyKAotICAgIFRlc3RQYXJ0UmVzdWx0QXJyYXkqIHJlc3VsdCkKLSAgICA6
IGludGVyY2VwdF9tb2RlXyhJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRCksCi0gICAgICBy
ZXN1bHRfKHJlc3VsdCkgewotICBJbml0KCk7Ci19Ci0KLS8vIFRoZSBjJ3RvciBzZXRzIHRoaXMg
b2JqZWN0IGFzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIHVzZWQgYnkKLS8vIEdvb2ds
ZSBUZXN0LiAgVGhlICdyZXN1bHQnIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hlcmUgdG8gcmVwb3J0
IHRoZQotLy8gcmVzdWx0cy4KLVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigKLSAgICBJbnRlcmNlcHRNb2RlIGludGVyY2Vw
dF9tb2RlLCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHQpCi0gICAgOiBpbnRlcmNlcHRfbW9k
ZV8oaW50ZXJjZXB0X21vZGUpLAotICAgICAgcmVzdWx0XyhyZXN1bHQpIHsKLSAgSW5pdCgpOwot
fQotCi12b2lkIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJbml0KCkgewotICBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0
SW1wbCgpOwotICBpZiAoaW50ZXJjZXB0X21vZGVfID09IElOVEVSQ0VQVF9BTExfVEhSRUFEUykg
ewotICAgIG9sZF9yZXBvcnRlcl8gPSBpbXBsLT5HZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9y
dGVyKCk7Ci0gICAgaW1wbC0+U2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcih0aGlzKTsK
LSAgfSBlbHNlIHsKLSAgICBvbGRfcmVwb3J0ZXJfID0gaW1wbC0+R2V0VGVzdFBhcnRSZXN1bHRS
ZXBvcnRlckZvckN1cnJlbnRUaHJlYWQoKTsKLSAgICBpbXBsLT5TZXRUZXN0UGFydFJlc3VsdFJl
cG9ydGVyRm9yQ3VycmVudFRocmVhZCh0aGlzKTsKLSAgfQotfQotCi0vLyBUaGUgZCd0b3IgcmVz
dG9yZXMgdGhlIHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXIgdXNlZCBieSBHb29nbGUgVGVzdAot
Ly8gYmVmb3JlLgotU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6On5TY29wZWRGYWtl
VGVzdFBhcnRSZXN1bHRSZXBvcnRlcigpIHsKLSAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29u
c3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKTsKLSAgaWYgKGludGVyY2VwdF9t
b2RlXyA9PSBJTlRFUkNFUFRfQUxMX1RIUkVBRFMpIHsKLSAgICBpbXBsLT5TZXRHbG9iYWxUZXN0
UGFydFJlc3VsdFJlcG9ydGVyKG9sZF9yZXBvcnRlcl8pOwotICB9IGVsc2UgewotICAgIGltcGwt
PlNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKG9sZF9yZXBvcnRlcl8p
OwotICB9Ci19Ci0KLS8vIEluY3JlbWVudHMgdGhlIHRlc3QgcGFydCByZXN1bHQgY291bnQgYW5k
IHJlbWVtYmVycyB0aGUgcmVzdWx0LgotLy8gVGhpcyBtZXRob2QgaXMgZnJvbSB0aGUgVGVzdFBh
cnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSBpbnRlcmZhY2UuCi12b2lkIFNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyOjpSZXBvcnRUZXN0UGFydFJlc3VsdCgKLSAgICBjb25zdCBUZXN0
UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIHJlc3VsdF8tPkFwcGVuZChyZXN1bHQpOwotfQotCi1u
YW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBSZXR1cm5zIHRoZSB0eXBlIElEIG9mIDo6dGVzdGlu
Zzo6VGVzdC4gIFdlIHNob3VsZCBhbHdheXMgY2FsbCB0aGlzCi0vLyBpbnN0ZWFkIG9mIEdldFR5
cGVJZDwgOjp0ZXN0aW5nOjpUZXN0PigpIHRvIGdldCB0aGUgdHlwZSBJRCBvZgotLy8gdGVzdGlu
Zzo6VGVzdC4gIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBzdXNwZWN0ZWQgbGlua2VyIGJ1ZyB3
aGVuCi0vLyB1c2luZyBHb29nbGUgVGVzdCBhcyBhIGZyYW1ld29yayBvbiBNYWMgT1MgWC4gIFRo
ZSBidWcgY2F1c2VzCi0vLyBHZXRUeXBlSWQ8IDo6dGVzdGluZzo6VGVzdD4oKSB0byByZXR1cm4g
ZGlmZmVyZW50IHZhbHVlcyBkZXBlbmRpbmcKLS8vIG9uIHdoZXRoZXIgdGhlIGNhbGwgaXMgZnJv
bSB0aGUgR29vZ2xlIFRlc3QgZnJhbWV3b3JrIGl0c2VsZiBvcgotLy8gZnJvbSB1c2VyIHRlc3Qg
Y29kZS4gIEdldFRlc3RUeXBlSWQoKSBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cwotLy8gcmV0dXJu
IHRoZSBzYW1lIHZhbHVlLCBhcyBpdCBhbHdheXMgY2FsbHMgR2V0VHlwZUlkPD4oKSBmcm9tIHRo
ZQotLy8gZ3Rlc3QuY2MsIHdoaWNoIGlzIHdpdGhpbiB0aGUgR29vZ2xlIFRlc3QgZnJhbWV3b3Jr
LgotVHlwZUlkIEdldFRlc3RUeXBlSWQoKSB7Ci0gIHJldHVybiBHZXRUeXBlSWQ8VGVzdD4oKTsK
LX0KLQotLy8gVGhlIHZhbHVlIG9mIEdldFRlc3RUeXBlSWQoKSBhcyBzZWVuIGZyb20gd2l0aGlu
IHRoZSBHb29nbGUgVGVzdAotLy8gbGlicmFyeS4gIFRoaXMgaXMgc29sZWx5IGZvciB0ZXN0aW5n
IEdldFRlc3RUeXBlSWQoKS4KLWV4dGVybiBjb25zdCBUeXBlSWQga1Rlc3RUeXBlSWRJbkdvb2ds
ZVRlc3QgPSBHZXRUZXN0VHlwZUlkKCk7Ci0KLS8vIFRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciBj
aGVja3MgdGhhdCAncmVzdWx0cycgY29udGFpbnMgYSB0ZXN0IHBhcnQKLS8vIGZhaWx1cmUgb2Yg
dGhlIGdpdmVuIHR5cGUgYW5kIHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUK
LS8vIGdpdmVuIHN1YnN0cmluZy4KLUFzc2VydGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNvbnN0
IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9leHByICovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSYgcmVzdWx0cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3Vic3RyKSB7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIGV4cGVjdGVkKHR5cGUgPT0gVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1
cmUgPwotICAgICAgICAgICAgICAgICAgICAgICAgIjEgZmF0YWwgZmFpbHVyZSIgOgotICAgICAg
ICAgICAgICAgICAgICAgICAgIjEgbm9uLWZhdGFsIGZhaWx1cmUiKTsKLSAgTWVzc2FnZSBtc2c7
Ci0gIGlmIChyZXN1bHRzLnNpemUoKSAhPSAxKSB7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogIiA8
PCBleHBlY3RlZCA8PCAiXG4iCi0gICAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCByZXN1bHRzLnNp
emUoKSA8PCAiIGZhaWx1cmVzIjsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6
ZSgpOyBpKyspIHsKLSAgICAgIG1zZyA8PCAiXG4iIDw8IHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1
bHQoaSk7Ci0gICAgfQotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwotICB9
Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHIgPSByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0
KDApOwotICBpZiAoci50eXBlKCkgIT0gdHlwZSkgewotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IHI7Ci0gIH0KLQotICBpZiAoc3Ryc3RyKHIubWVzc2FnZSgpLCBzdWJzdHIuY19z
dHIoKSkgPT0gTlVMTCkgewotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVj
dGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29udGFpbmluZyBcIiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAiXCJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IHI7Ci0gIH0KLQotICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotfQotCi0vLyBUaGUgY29u
c3RydWN0b3Igb2YgU2luZ2xlRmFpbHVyZUNoZWNrZXIgcmVtZW1iZXJzIHdoZXJlIHRvIGxvb2sg
dXAKLS8vIHRlc3QgcGFydCByZXN1bHRzLCB3aGF0IHR5cGUgb2YgZmFpbHVyZSB3ZSBleHBlY3Qs
IGFuZCB3aGF0Ci0vLyBzdWJzdHJpbmcgdGhlIGZhaWx1cmUgbWVzc2FnZSBzaG91bGQgY29udGFp
bi4KLVNpbmdsZUZhaWx1cmVDaGVja2VyOjpTaW5nbGVGYWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0
UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikKLSAg
ICA6IHJlc3VsdHNfKHJlc3VsdHMpLCB0eXBlXyh0eXBlKSwgc3Vic3RyXyhzdWJzdHIpIHt9Ci0K
LS8vIFRoZSBkZXN0cnVjdG9yIG9mIFNpbmdsZUZhaWx1cmVDaGVja2VyIHZlcmlmaWVzIHRoYXQg
dGhlIGdpdmVuCi0vLyBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIGV4YWN0bHkgb25lIGZh
aWx1cmUgdGhhdCBoYXMgdGhlIGdpdmVuCi0vLyB0eXBlIGFuZCBjb250YWlucyB0aGUgZ2l2ZW4g
c3Vic3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgYQotLy8gbm9uLWZhdGFsIGZhaWx1
cmUgd2lsbCBiZSBnZW5lcmF0ZWQuCi1TaW5nbGVGYWlsdXJlQ2hlY2tlcjo6flNpbmdsZUZhaWx1
cmVDaGVja2VyKCkgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1
bHRzXywgdHlwZV8sIHN1YnN0cl8pOwotfQotCi1EZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcjo6RGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCi0gICAgVW5pdFRl
c3RJbXBsKiB1bml0X3Rlc3QpIDogdW5pdF90ZXN0Xyh1bml0X3Rlc3QpIHt9Ci0KLXZvaWQgRGVm
YXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OlJlcG9ydFRlc3RQYXJ0UmVzdWx0KAot
ICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIHsKLSAgdW5pdF90ZXN0Xy0+Y3VycmVu
dF90ZXN0X3Jlc3VsdCgpLT5BZGRUZXN0UGFydFJlc3VsdChyZXN1bHQpOwotICB1bml0X3Rlc3Rf
LT5saXN0ZW5lcnMoKS0+cmVwZWF0ZXIoKS0+T25UZXN0UGFydFJlc3VsdChyZXN1bHQpOwotfQot
Ci1EZWZhdWx0UGVyVGhyZWFkVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVmYXVsdFBlclRocmVh
ZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCi0gICAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3QpIDog
dW5pdF90ZXN0Xyh1bml0X3Rlc3QpIHt9Ci0KLXZvaWQgRGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXI6OlJlcG9ydFRlc3RQYXJ0UmVzdWx0KAotICAgIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0JiByZXN1bHQpIHsKLSAgdW5pdF90ZXN0Xy0+R2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcigpLT5SZXBvcnRUZXN0UGFydFJlc3VsdChyZXN1bHQpOwotfQotCi0vLyBSZXR1cm5z
IHRoZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlci4KLVRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXJJbnRlcmZhY2UqCi1Vbml0VGVzdEltcGw6OkdldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXIoKSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmZ2xvYmFsX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfbXV0ZXhfKTsKLSAgcmV0dXJuIGdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0
X3JlcG90ZXJfOwotfQotCi0vLyBTZXRzIHRoZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBv
cnRlci4KLXZvaWQgVW5pdFRlc3RJbXBsOjpTZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVy
KAotICAgIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIHJlcG9ydGVyKSB7Ci0gIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJf
bXV0ZXhfKTsKLSAgZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3Rlcl8gPSByZXBvcnRlcjsK
LX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlciBmb3IgdGhlIGN1
cnJlbnQgdGhyZWFkLgotVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSoKLVVuaXRUZXN0
SW1wbDo6R2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJlbnRUaHJlYWQoKSB7Ci0gIHJl
dHVybiBwZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfLmdldCgpOwotfQotCi0v
LyBTZXRzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIGZvciB0aGUgY3VycmVudCB0aHJl
YWQuCi12b2lkIFVuaXRUZXN0SW1wbDo6U2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJl
bnRUaHJlYWQoCi0gICAgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSogcmVwb3J0ZXIp
IHsKLSAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXy5zZXQocmVwb3J0ZXIp
OwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0IGNhc2VzLgotaW50
IFVuaXRUZXN0SW1wbDo6c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7Ci0gIHJl
dHVybiBDb3VudElmKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZVBhc3NlZCk7Ci19Ci0KLS8vIEdldHMg
dGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdCBjYXNlcy4KLWludCBVbml0VGVzdEltcGw6OmZhaWxl
ZF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElmKHRlc3RfY2FzZXNf
LCBUZXN0Q2FzZUZhaWxlZCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBj
YXNlcy4KLWludCBVbml0VGVzdEltcGw6OnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0IHsK
LSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGVzdF9jYXNlc18uc2l6ZSgpKTsKLX0KLQotLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0IGNhc2VzIHRoYXQgY29udGFpbiBhdCBsZWFzdCBv
bmUgdGVzdAotLy8gdGhhdCBzaG91bGQgcnVuLgotaW50IFVuaXRUZXN0SW1wbDo6dGVzdF9jYXNl
X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIENvdW50SWYodGVzdF9jYXNlc18sIFNo
b3VsZFJ1blRlc3RDYXNlKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwg
dGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpzdWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7
Ci0gIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnN1
Y2Nlc3NmdWxfdGVzdF9jb3VudCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQg
dGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKLSAg
cmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3QodGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVk
X3Rlc3RfY291bnQpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMg
dGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgotaW50IFVuaXRUZXN0SW1w
bDo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gU3Vt
T3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJlRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQpOwotfQotCi0vLyBH
ZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpkaXNh
YmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0
ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KTsKLX0KLQotLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi1p
bnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVy
biBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVf
dGVzdF9jb3VudCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCi1pbnQg
VW5pdFRlc3RJbXBsOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3Zl
clRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsK
LX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KLWludCBV
bml0VGVzdEltcGw6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3Zl
clRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCk7
Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpz
dHJpbmcuCi0vLwotLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBp
bmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKLS8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBm
bGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCi0vLyBzcGVjaWZpZXMgdGhlIG51bWJlciBv
ZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQsIHdoaWNoIGRvZXNuJ3QKLS8vIGNvdW50IGFnYWlu
c3QgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgaW5jbHVkZWQuCi0vLwotLy8gRm9yIGV4YW1w
bGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCi0vLyBDdXJyZW50
T3NTdGFja1RyYWNlRXhjZXB0VG9wKDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQot
Ly8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29u
J3QuCi1zdGQ6OnN0cmluZyBVbml0VGVzdEltcGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRU
b3AoaW50IHNraXBfY291bnQpIHsKLSAgcmV0dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5D
dXJyZW50U3RhY2tUcmFjZSgKLSAgICAgIHN0YXRpY19jYXN0PGludD4oR1RFU1RfRkxBRyhzdGFj
a190cmFjZV9kZXB0aCkpLAotICAgICAgc2tpcF9jb3VudCArIDEKLSAgICAgIC8vIFNraXBzIHRo
ZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlvbgotICAg
ICAgLy8gaXRzZWxmLgotICAgICAgKTsgIC8vIE5PTElOVAotfQotCi0vLyBSZXR1cm5zIHRoZSBj
dXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgotVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxp
cygpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBkZWZpbmVkKF9fQk9STEFORENf
XykKLSAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVuIDE5NzAtMDEtMDEgYW5kIDE2MDEtMDEtMDEgaW4g
bWlsbGlzZWNvbmRzLgotICAvLyBodHRwOi8vYW5hbG9nb3VzLmJsb2dzcG90LmNvbS8yMDA1LzA0
L2Vwb2NoLmh0bWwKLSAgY29uc3QgVGltZUluTWlsbGlzIGtKYXZhRXBvY2hUb1dpbkZpbGVUaW1l
RGVsdGEgPQotICAgIHN0YXRpY19jYXN0PFRpbWVJbk1pbGxpcz4oMTE2NDQ0NzM2VUwpICogMTAw
MDAwVUw7Ci0gIGNvbnN0IERXT1JEIGtUZW50aE1pY3Jvc0luTWlsbGlTZWNvbmQgPSAxMDAwMDsK
LQotICBTWVNURU1USU1FIG5vd19zeXN0aW1lOwotICBGSUxFVElNRSBub3dfZmlsZXRpbWU7Ci0g
IFVMQVJHRV9JTlRFR0VSIG5vd19pbnQ2NDsKLSAgLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6
IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCi0gIC8vICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUo
KT8KLSAgR2V0U3lzdGVtVGltZSgmbm93X3N5c3RpbWUpOwotICBpZiAoU3lzdGVtVGltZVRvRmls
ZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2ZpbGV0aW1lKSkgewotICAgIG5vd19pbnQ2NC5Mb3dQ
YXJ0ID0gbm93X2ZpbGV0aW1lLmR3TG93RGF0ZVRpbWU7Ci0gICAgbm93X2ludDY0LkhpZ2hQYXJ0
ID0gbm93X2ZpbGV0aW1lLmR3SGlnaERhdGVUaW1lOwotICAgIG5vd19pbnQ2NC5RdWFkUGFydCA9
IChub3dfaW50NjQuUXVhZFBhcnQgLyBrVGVudGhNaWNyb3NJbk1pbGxpU2Vjb25kKSAtCi0gICAg
ICBrSmF2YUVwb2NoVG9XaW5GaWxlVGltZURlbHRhOwotICAgIHJldHVybiBub3dfaW50NjQuUXVh
ZFBhcnQ7Ci0gIH0KLSAgcmV0dXJuIDA7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVT
VF9IQVNfR0VUVElNRU9GREFZXwotICBfX3RpbWViNjQgbm93OwotCi0gIC8vIE1TVkMgOCBkZXBy
ZWNhdGVzIF9mdGltZTY0KCksIHNvIHdlIHdhbnQgdG8gc3VwcHJlc3Mgd2FybmluZyA0OTk2Ci0g
IC8vIChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0aGVyZS4KLSAgLy8gVE9ETyhrZW50b25AZ29vZ2xl
LmNvbSk6IFVzZSBHZXRUaWNrQ291bnQoKT8gIE9yIHVzZQotICAvLyAgIFN5c3RlbVRpbWVUb0Zp
bGVUaW1lKCkKLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NikKLSAgX2Z0
aW1lNjQoJm5vdyk7Ci0gIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQotCi0gIHJl
dHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxsaXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWls
bGl0bTsKLSNlbGlmIEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfCi0gIHN0cnVjdCB0aW1ldmFsIG5v
dzsKLSAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8VGlt
ZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEwMDAgKyBub3cudHZfdXNlYyAvIDEwMDA7Ci0jZWxz
ZQotIyBlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91
ciBzeXN0ZW0uIgotI2VuZGlmCi19Ci0KLS8vIFV0aWxpdGllcwotCi0vLyBjbGFzcyBTdHJpbmcu
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRl
IHN0cmluZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwotLy8gbWVtb3J5
IHVzaW5nIG5ldy4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHJl
dHVybgotLy8gdmFsdWUgdXNpbmcgZGVsZXRlW10uIFJldHVybnMgdGhlIHdpZGUgc3RyaW5nLCBv
ciBOVUxMIGlmIHRoZQotLy8gaW5wdXQgaXMgTlVMTC4KLUxQQ1dTVFIgU3RyaW5nOjpBbnNpVG9V
dGYxNihjb25zdCBjaGFyKiBhbnNpKSB7Ci0gIGlmICghYW5zaSkgcmV0dXJuIE5VTEw7Ci0gIGNv
bnN0IGludCBsZW5ndGggPSBzdHJsZW4oYW5zaSk7Ci0gIGNvbnN0IGludCB1bmljb2RlX2xlbmd0
aCA9Ci0gICAgICBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgMCwgYW5zaSwgbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKLSAgV0NIQVIqIHVuaWNvZGUgPSBu
ZXcgV0NIQVJbdW5pY29kZV9sZW5ndGggKyAxXTsKLSAgTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9B
Q1AsIDAsIGFuc2ksIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCB1bmlj
b2RlX2xlbmd0aCk7Ci0gIHVuaWNvZGVbdW5pY29kZV9sZW5ndGhdID0gMDsKLSAgcmV0dXJuIHVu
aWNvZGU7Ci19Ci0KLS8vIENyZWF0ZXMgYW4gQU5TSSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gd2lk
ZSBzdHJpbmcsIGFsbG9jYXRpbmcKLS8vIG1lbW9yeSB1c2luZyBuZXcuIFRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4KLS8vIHZhbHVlIHVzaW5nIGRlbGV0
ZVtdLiBSZXR1cm5zIHRoZSBBTlNJIHN0cmluZywgb3IgTlVMTCBpZiB0aGUKLS8vIGlucHV0IGlz
IE5VTEwuCi1jb25zdCBjaGFyKiBTdHJpbmc6OlV0ZjE2VG9BbnNpKExQQ1dTVFIgdXRmMTZfc3Ry
KSAgewotICBpZiAoIXV0ZjE2X3N0cikgcmV0dXJuIE5VTEw7Ci0gIGNvbnN0IGludCBhbnNpX2xl
bmd0aCA9Ci0gICAgICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgdXRmMTZfc3RyLCAt
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7Ci0gIGNo
YXIqIGFuc2kgPSBuZXcgY2hhclthbnNpX2xlbmd0aCArIDFdOwotICBXaWRlQ2hhclRvTXVsdGlC
eXRlKENQX0FDUCwgMCwgdXRmMTZfc3RyLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICBhbnNp
LCBhbnNpX2xlbmd0aCwgTlVMTCwgTlVMTCk7Ci0gIGFuc2lbYW5zaV9sZW5ndGhdID0gMDsKLSAg
cmV0dXJuIGFuc2k7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQot
Ly8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncy4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnQuCi0vLwotLy8gVW5saWtlIHN0cmNtcCgpLCB0aGlzIGZ1bmN0aW9uIGNh
biBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4gIEEgTlVMTAotLy8gQyBzdHJpbmcgaXMgY29uc2lk
ZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5vbi1OVUxMIEMgc3RyaW5nLAotLy8gaW5jbHVkaW5nIHRo
ZSBlbXB0eSBzdHJpbmcuCi1ib29sIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICog
bGhzLCBjb25zdCBjaGFyICogcmhzKSB7Ci0gIGlmICggbGhzID09IE5VTEwgKSByZXR1cm4gcmhz
ID09IE5VTEw7Ci0KLSAgaWYgKCByaHMgPT0gTlVMTCApIHJldHVybiBmYWxzZTsKLQotICByZXR1
cm4gc3RyY21wKGxocywgcmhzKSA9PSAwOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
IHx8IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBDb252ZXJ0cyBhbiBhcnJheSBvZiB3
aWRlIGNoYXJzIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKLS8vIGVuY29kaW5n
LCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoZSBnaXZlbiBNZXNzYWdlIG9iamVjdC4KLXN0
YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZShjb25zdCB3Y2hhcl90KiB3c3RyLCBz
aXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3Nh
Z2UqIG1zZykgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7ICkgeyAgLy8gTk9M
SU5UCi0gICAgaWYgKHdzdHJbaV0gIT0gTCdcMCcpIHsKLSAgICAgICptc2cgPDwgV2lkZVN0cmlu
Z1RvVXRmOCh3c3RyICsgaSwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGggLSBpKSk7Ci0gICAgICB3
aGlsZSAoaSAhPSBsZW5ndGggJiYgd3N0cltpXSAhPSBMJ1wwJykKLSAgICAgICAgaSsrOwotICAg
IH0gZWxzZSB7Ci0gICAgICAqbXNnIDw8ICdcMCc7Ci0gICAgICBpKys7Ci0gICAgfQotICB9Ci19
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8IEdURVNUX0hBU19HTE9CQUxf
V1NUUklORwotCi12b2lkIFNwbGl0U3RyaW5nKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hh
ciBkZWxpbWl0ZXIsCi0gICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJp
bmc+KiBkZXN0KSB7Ci0gIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsKLSAg
OjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBvcyA9IDA7Ci0gIHdoaWxlICg6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBbHdheXNUcnVlKCkpIHsKLSAgICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0ZXIsIHBvcyk7Ci0gICAgaWYgKGNvbG9uID09IDo6
c3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgIHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihw
b3MpKTsKLSAgICAgIGJyZWFrOwotICAgIH0gZWxzZSB7Ci0gICAgICBwYXJzZWQucHVzaF9iYWNr
KHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBvcykpOwotICAgICAgcG9zID0gY29sb24gKyAxOwot
ICAgIH0KLSAgfQotICBkZXN0LT5zd2FwKHBhcnNlZCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotCi0vLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCi0vLyBXZSBhbGxvY2F0
ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRlbHkgYmVjYXVzZSBvdGhlcndpc2UgZWFjaCB1c2Ug
b2YKLS8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBwcm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBieXRlcyB0
byB0aGUgcHJvY2VkdXJlJ3MKLS8vIHN0YWNrIGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBzdGFjayBm
cmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRvZXMgbm90IHJldXNlCi0vLyB0aGUgc3RhY2sgc3Bh
Y2UuCi1NZXNzYWdlOjpNZXNzYWdlKCkgOiBzc18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsK
LSAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lzaW9uIHdo
ZW4gcHJpbnRpbmcKLSAgLy8gYSBkb3VibGUgdG8gYSBNZXNzYWdlLgotICAqc3NfIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAgKyAyKTsK
LX0KLQotLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMgc3Ry
aW5nIHRvIGEgTWVzc2FnZQotLy8gdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLgotTWVzc2FnZSYg
TWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0cikgewotICByZXR1
cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIp
OwotfQotTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cikg
ewotICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdp
ZGVfY19zdHIpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0vLyBDb252ZXJ0cyB0
aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAot
Ly8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgdG8gdGhpcyBNZXNzYWdlIG9iamVj
dC4KLU1lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJhdG9yIDw8KGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3
c3RyKSB7Ci0gIGludGVybmFsOjpTdHJlYW1XaWRlQ2hhcnNUb01lc3NhZ2Uod3N0ci5jX3N0cigp
LCB3c3RyLmxlbmd0aCgpLCB0aGlzKTsKLSAgcmV0dXJuICp0aGlzOwotfQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1REX1dTVFJJTkcKLQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotLy8g
Q29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0
aGUgVVRGLTgKLS8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVz
c2FnZSBvYmplY3QuCi1NZXNzYWdlJiBNZXNzYWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJp
bmcmIHdzdHIpIHsKLSAgaW50ZXJuYWw6OlN0cmVhbVdpZGVDaGFyc1RvTWVzc2FnZSh3c3RyLmNf
c3RyKCksIHdzdHIubGVuZ3RoKCksIHRoaXMpOwotICByZXR1cm4gKnRoaXM7Ci19Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVk
IHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBhbiBzdGQ6OnN0cmluZy4KLS8vIEVhY2ggJ1wwJyBj
aGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotc3RkOjpzdHJp
bmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29uc3QgewotICByZXR1cm4gaW50ZXJuYWw6OlN0cmlu
Z1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7Ci19Ci0KLS8vIEFzc2VydGlvblJlc3VsdCBjb25z
dHJ1Y3RvcnMuCi0vLyBVc2VkIGluIEVYUEVDVF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQp
LgotQXNzZXJ0aW9uUmVzdWx0OjpBc3NlcnRpb25SZXN1bHQoY29uc3QgQXNzZXJ0aW9uUmVzdWx0
JiBvdGhlcikKLSAgICA6IHN1Y2Nlc3NfKG90aGVyLnN1Y2Nlc3NfKSwKLSAgICAgIG1lc3NhZ2Vf
KG90aGVyLm1lc3NhZ2VfLmdldCgpICE9IE5VTEwgPwotICAgICAgICAgICAgICAgbmV3IDo6c3Rk
OjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6Ci0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwg
OjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Ci19Ci0KLS8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1
bHRzLgotdm9pZCBBc3NlcnRpb25SZXN1bHQ6OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikg
ewotICB1c2luZyBzdGQ6OnN3YXA7Ci0gIHN3YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsK
LSAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVzc2FnZV8pOwotfQotCi0vLyBSZXR1cm5zIHRoZSBh
c3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCi1Bc3Nl
cnRpb25SZXN1bHQgQXNzZXJ0aW9uUmVzdWx0OjpvcGVyYXRvciEoKSBjb25zdCB7Ci0gIEFzc2Vy
dGlvblJlc3VsdCBuZWdhdGlvbighc3VjY2Vzc18pOwotICBpZiAobWVzc2FnZV8uZ2V0KCkgIT0g
TlVMTCkKLSAgICBuZWdhdGlvbiA8PCAqbWVzc2FnZV87Ci0gIHJldHVybiBuZWdhdGlvbjsKLX0K
LQotLy8gTWFrZXMgYSBzdWNjZXNzZnVsIGFzc2VydGlvbiByZXN1bHQuCi1Bc3NlcnRpb25SZXN1
bHQgQXNzZXJ0aW9uU3VjY2VzcygpIHsKLSAgcmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsK
LX0KLQotLy8gTWFrZXMgYSBmYWlsZWQgYXNzZXJ0aW9uIHJlc3VsdC4KLUFzc2VydGlvblJlc3Vs
dCBBc3NlcnRpb25GYWlsdXJlKCkgewotICByZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KGZhbHNlKTsK
LX0KLQotLy8gTWFrZXMgYSBmYWlsZWQgYXNzZXJ0aW9uIHJlc3VsdCB3aXRoIHRoZSBnaXZlbiBm
YWlsdXJlIG1lc3NhZ2UuCi0vLyBEZXByZWNhdGVkOyB1c2UgQXNzZXJ0aW9uRmFpbHVyZSgpIDw8
IG1lc3NhZ2UuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdl
JiBtZXNzYWdlKSB7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbWVzc2FnZTsKLX0K
LQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotbmFtZXNwYWNlIGVkaXRfZGlzdGFuY2Ugewotc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cyhjb25zdCBzdGQ6OnZlY3Rv
cjxzaXplX3Q+JiBsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCkgewotICBzdGQ6OnZlY3Rvcjxz
dGQ6OnZlY3Rvcjxkb3VibGU+ID4gY29zdHMoCi0gICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6
dmVjdG9yPGRvdWJsZT4ocmlnaHQuc2l6ZSgpICsgMSkpOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnZl
Y3RvcjxFZGl0VHlwZT4gPiBiZXN0X21vdmUoCi0gICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6
dmVjdG9yPEVkaXRUeXBlPihyaWdodC5zaXplKCkgKyAxKSk7Ci0KLSAgLy8gUG9wdWxhdGUgZm9y
IGVtcHR5IHJpZ2h0LgotICBmb3IgKHNpemVfdCBsX2kgPSAwOyBsX2kgPCBjb3N0cy5zaXplKCk7
ICsrbF9pKSB7Ci0gICAgY29zdHNbbF9pXVswXSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obF9pKTsK
LSAgICBiZXN0X21vdmVbbF9pXVswXSA9IGtSZW1vdmU7Ci0gIH0KLSAgLy8gUG9wdWxhdGUgZm9y
IGVtcHR5IGxlZnQuCi0gIGZvciAoc2l6ZV90IHJfaSA9IDE7IHJfaSA8IGNvc3RzWzBdLnNpemUo
KTsgKytyX2kpIHsKLSAgICBjb3N0c1swXVtyX2ldID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyX2kp
OwotICAgIGJlc3RfbW92ZVswXVtyX2ldID0ga0FkZDsKLSAgfQotCi0gIGZvciAoc2l6ZV90IGxf
aSA9IDA7IGxfaSA8IGxlZnQuc2l6ZSgpOyArK2xfaSkgewotICAgIGZvciAoc2l6ZV90IHJfaSA9
IDA7IHJfaSA8IHJpZ2h0LnNpemUoKTsgKytyX2kpIHsKLSAgICAgIGlmIChsZWZ0W2xfaV0gPT0g
cmlnaHRbcl9pXSkgewotICAgICAgICAvLyBGb3VuZCBhIG1hdGNoLiBDb25zdW1lIGl0LgotICAg
ICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAxXSA9IGNvc3RzW2xfaV1bcl9pXTsKLSAgICAgICAg
YmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga01hdGNoOwotICAgICAgICBjb250aW51ZTsK
LSAgICAgIH0KLQotICAgICAgY29uc3QgZG91YmxlIGFkZCA9IGNvc3RzW2xfaSArIDFdW3JfaV07
Ci0gICAgICBjb25zdCBkb3VibGUgcmVtb3ZlID0gY29zdHNbbF9pXVtyX2kgKyAxXTsKLSAgICAg
IGNvbnN0IGRvdWJsZSByZXBsYWNlID0gY29zdHNbbF9pXVtyX2ldOwotICAgICAgaWYgKGFkZCA8
IHJlbW92ZSAmJiBhZGQgPCByZXBsYWNlKSB7Ci0gICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSAr
IDFdID0gYWRkICsgMTsKLSAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga0Fk
ZDsKLSAgICAgIH0gZWxzZSBpZiAocmVtb3ZlIDwgYWRkICYmIHJlbW92ZSA8IHJlcGxhY2UpIHsK
LSAgICAgICAgY29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSByZW1vdmUgKyAxOwotICAgICAgICBi
ZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0gPSBrUmVtb3ZlOwotICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgLy8gV2UgbWFrZSByZXBsYWNlIGEgbGl0dGxlIG1vcmUgZXhwZW5zaXZlIHRoYW4gYWRk
L3JlbW92ZSB0byBsb3dlcgotICAgICAgICAvLyB0aGVpciBwcmlvcml0eS4KLSAgICAgICAgY29z
dHNbbF9pICsgMV1bcl9pICsgMV0gPSByZXBsYWNlICsgMS4wMDAwMTsKLSAgICAgICAgYmVzdF9t
b3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga1JlcGxhY2U7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0K
LSAgLy8gUmVjb25zdHJ1Y3QgdGhlIGJlc3QgcGF0aC4gV2UgZG8gaXQgaW4gcmV2ZXJzZSBvcmRl
ci4KLSAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGJlc3RfcGF0aDsKLSAgZm9yIChzaXplX3QgbF9p
ID0gbGVmdC5zaXplKCksIHJfaSA9IHJpZ2h0LnNpemUoKTsgbF9pID4gMCB8fCByX2kgPiAwOykg
ewotICAgIEVkaXRUeXBlIG1vdmUgPSBiZXN0X21vdmVbbF9pXVtyX2ldOwotICAgIGJlc3RfcGF0
aC5wdXNoX2JhY2sobW92ZSk7Ci0gICAgbF9pIC09IG1vdmUgIT0ga0FkZDsKLSAgICByX2kgLT0g
bW92ZSAhPSBrUmVtb3ZlOwotICB9Ci0gIHN0ZDo6cmV2ZXJzZShiZXN0X3BhdGguYmVnaW4oKSwg
YmVzdF9wYXRoLmVuZCgpKTsKLSAgcmV0dXJuIGJlc3RfcGF0aDsKLX0KLQotbmFtZXNwYWNlIHsK
LQotLy8gSGVscGVyIGNsYXNzIHRvIGNvbnZlcnQgc3RyaW5nIGludG8gaWRzIHdpdGggZGVkdXBs
aWNhdGlvbi4KLWNsYXNzIEludGVybmFsU3RyaW5ncyB7Ci0gcHVibGljOgotICBzaXplX3QgR2V0
SWQoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICAgIElkTWFwOjppdGVyYXRvciBpdCA9IGlk
c18uZmluZChzdHIpOwotICAgIGlmIChpdCAhPSBpZHNfLmVuZCgpKSByZXR1cm4gaXQtPnNlY29u
ZDsKLSAgICBzaXplX3QgaWQgPSBpZHNfLnNpemUoKTsKLSAgICByZXR1cm4gaWRzX1tzdHJdID0g
aWQ7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHNp
emVfdD4gSWRNYXA7Ci0gIElkTWFwIGlkc187Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotc3Rk
Ojp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKLSAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+JiByaWdodCkgewotICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGxlZnRfaWRzLCByaWdodF9p
ZHM7Ci0gIHsKLSAgICBJbnRlcm5hbFN0cmluZ3MgaW50ZXJuX3RhYmxlOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVmdC5zaXplKCk7ICsraSkgewotICAgICAgbGVmdF9pZHMucHVzaF9i
YWNrKGludGVybl90YWJsZS5HZXRJZChsZWZ0W2ldKSk7Ci0gICAgfQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmlnaHQuc2l6ZSgpOyArK2kpIHsKLSAgICAgIHJpZ2h0X2lkcy5wdXNoX2Jh
Y2soaW50ZXJuX3RhYmxlLkdldElkKHJpZ2h0W2ldKSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBD
YWxjdWxhdGVPcHRpbWFsRWRpdHMobGVmdF9pZHMsIHJpZ2h0X2lkcyk7Ci19Ci0KLW5hbWVzcGFj
ZSB7Ci0KLS8vIEhlbHBlciBjbGFzcyB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBmb3Igb25lIGh1bmsg
YW5kIHByaW50cyBpdCBvdXQgdG8gdGhlCi0vLyBzdHJlYW0uCi0vLyBJdCByZW9yZGVycyBhZGRz
L3JlbW92ZXMgd2hlbiBwb3NzaWJsZSB0byBncm91cCBhbGwgcmVtb3ZlcyBiZWZvcmUgYWxsCi0v
LyBhZGRzLiBJdCBhbHNvIGFkZHMgdGhlIGh1bmsgaGVhZGVyIGJlZm9yZSBwcmludGludCBpbnRv
IHRoZSBzdHJlYW0uCi1jbGFzcyBIdW5rIHsKLSBwdWJsaWM6Ci0gIEh1bmsoc2l6ZV90IGxlZnRf
c3RhcnQsIHNpemVfdCByaWdodF9zdGFydCkKLSAgICAgIDogbGVmdF9zdGFydF8obGVmdF9zdGFy
dCksCi0gICAgICAgIHJpZ2h0X3N0YXJ0XyhyaWdodF9zdGFydCksCi0gICAgICAgIGFkZHNfKCks
Ci0gICAgICAgIHJlbW92ZXNfKCksCi0gICAgICAgIGNvbW1vbl8oKSB7fQotCi0gIHZvaWQgUHVz
aExpbmUoY2hhciBlZGl0LCBjb25zdCBjaGFyKiBsaW5lKSB7Ci0gICAgc3dpdGNoIChlZGl0KSB7
Ci0gICAgICBjYXNlICcgJzoKLSAgICAgICAgKytjb21tb25fOwotICAgICAgICBGbHVzaEVkaXRz
KCk7Ci0gICAgICAgIGh1bmtfLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcignICcsIGxpbmUpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICctJzoKLSAgICAgICAgKytyZW1vdmVzXzsKLSAg
ICAgICAgaHVua19yZW1vdmVzXy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoJy0nLCBsaW5lKSk7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICsrYWRkc187Ci0gICAg
ICAgIGh1bmtfYWRkc18ucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKCcrJywgbGluZSkpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQotICB2b2lkIFByaW50VG8oc3RkOjpvc3RyZWFtKiBv
cykgewotICAgIFByaW50SGVhZGVyKG9zKTsKLSAgICBGbHVzaEVkaXRzKCk7Ci0gICAgZm9yIChz
dGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNvbnN0IGNoYXIqPiA+Ojpjb25zdF9pdGVyYXRvciBp
dCA9Ci0gICAgICAgICAgICAgaHVua18uYmVnaW4oKTsKLSAgICAgICAgIGl0ICE9IGh1bmtfLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAqb3MgPDwgaXQtPmZpcnN0IDw8IGl0LT5zZWNvbmQgPDwgIlxu
IjsKLSAgICB9Ci0gIH0KLQotICBib29sIGhhc19lZGl0cygpIGNvbnN0IHsgcmV0dXJuIGFkZHNf
IHx8IHJlbW92ZXNfOyB9Ci0KLSBwcml2YXRlOgotICB2b2lkIEZsdXNoRWRpdHMoKSB7Ci0gICAg
aHVua18uc3BsaWNlKGh1bmtfLmVuZCgpLCBodW5rX3JlbW92ZXNfKTsKLSAgICBodW5rXy5zcGxp
Y2UoaHVua18uZW5kKCksIGh1bmtfYWRkc18pOwotICB9Ci0KLSAgLy8gUHJpbnQgYSB1bmlmaWVk
IGRpZmYgaGVhZGVyIGZvciBvbmUgaHVuay4KLSAgLy8gVGhlIGZvcm1hdCBpcwotICAvLyAgICJA
QCAtPGxlZnRfc3RhcnQ+LDxsZWZ0X2xlbmd0aD4gKzxyaWdodF9zdGFydD4sPHJpZ2h0X2xlbmd0
aD4gQEAiCi0gIC8vIHdoZXJlIHRoZSBsZWZ0L3JpZ2h0IHBhcnRzIGFyZSBvbW1pdHRlZCBpZiB1
bm5lY2Vzc2FyeS4KLSAgdm9pZCBQcmludEhlYWRlcihzdGQ6Om9zdHJlYW0qIHNzKSBjb25zdCB7
Ci0gICAgKnNzIDw8ICJAQCAiOwotICAgIGlmIChyZW1vdmVzXykgewotICAgICAgKnNzIDw8ICIt
IiA8PCBsZWZ0X3N0YXJ0XyA8PCAiLCIgPDwgKHJlbW92ZXNfICsgY29tbW9uXyk7Ci0gICAgfQot
ICAgIGlmIChyZW1vdmVzXyAmJiBhZGRzXykgewotICAgICAgKnNzIDw8ICIgIjsKLSAgICB9Ci0g
ICAgaWYgKGFkZHNfKSB7Ci0gICAgICAqc3MgPDwgIisiIDw8IHJpZ2h0X3N0YXJ0XyA8PCAiLCIg
PDwgKGFkZHNfICsgY29tbW9uXyk7Ci0gICAgfQotICAgICpzcyA8PCAiIEBAXG4iOwotICB9Ci0K
LSAgc2l6ZV90IGxlZnRfc3RhcnRfLCByaWdodF9zdGFydF87Ci0gIHNpemVfdCBhZGRzXywgcmVt
b3Zlc18sIGNvbW1vbl87Ci0gIHN0ZDo6bGlzdDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+
ID4gaHVua18sIGh1bmtfYWRkc18sIGh1bmtfcmVtb3Zlc187Ci19OwotCi19ICAvLyBuYW1lc3Bh
Y2UKLQotLy8gQ3JlYXRlIGEgbGlzdCBvZiBkaWZmIGh1bmtzIGluIFVuaWZpZWQgZGlmZiBmb3Jt
YXQuCi0vLyBFYWNoIGh1bmsgaGFzIGEgaGVhZGVyIGdlbmVyYXRlZCBieSBQcmludEhlYWRlciBh
Ym92ZSBwbHVzIGEgYm9keSB3aXRoCi0vLyBsaW5lcyBwcmVmaXhlZCB3aXRoICcgJyBmb3Igbm8g
Y2hhbmdlLCAnLScgZm9yIGRlbGV0aW9uIGFuZCAnKycgZm9yCi0vLyBhZGRpdGlvbi4KLS8vICdj
b250ZXh0JyByZXByZXNlbnRzIHRoZSBkZXNpcmVkIHVuY2hhbmdlZCBwcmVmaXgvc3VmZml4IGFy
b3VuZCB0aGUgZGlmZi4KLS8vIElmIHR3byBodW5rcyBhcmUgY2xvc2UgZW5vdWdoIHRoYXQgdGhl
aXIgY29udGV4dHMgb3ZlcmxhcCwgdGhlbiB0aGV5IGFyZQotLy8gam9pbmVkIGludG8gb25lIGh1
bmsuCi1zdGQ6OnN0cmluZyBDcmVhdGVVbmlmaWVkRGlmZihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIGxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvbnRleHQpIHsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGVkaXRz
ID0gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGxlZnQsIHJpZ2h0KTsKLQotICBzaXplX3QgbF9pID0g
MCwgcl9pID0gMCwgZWRpdF9pID0gMDsKLSAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHdoaWxl
IChlZGl0X2kgPCBlZGl0cy5zaXplKCkpIHsKLSAgICAvLyBGaW5kIGZpcnN0IGVkaXQuCi0gICAg
d2hpbGUgKGVkaXRfaSA8IGVkaXRzLnNpemUoKSAmJiBlZGl0c1tlZGl0X2ldID09IGtNYXRjaCkg
ewotICAgICAgKytsX2k7Ci0gICAgICArK3JfaTsKLSAgICAgICsrZWRpdF9pOwotICAgIH0KLQot
ICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxpbmUgdG8gaW5jbHVkZSBpbiB0aGUgaHVuay4KLSAgICBj
b25zdCBzaXplX3QgcHJlZml4X2NvbnRleHQgPSBzdGQ6Om1pbihsX2ksIGNvbnRleHQpOwotICAg
IEh1bmsgaHVuayhsX2kgLSBwcmVmaXhfY29udGV4dCArIDEsIHJfaSAtIHByZWZpeF9jb250ZXh0
ICsgMSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IHByZWZpeF9jb250ZXh0OyBpID4gMDsgLS1pKSB7
Ci0gICAgICBodW5rLlB1c2hMaW5lKCcgJywgbGVmdFtsX2kgLSBpXS5jX3N0cigpKTsKLSAgICB9
Ci0KLSAgICAvLyBJdGVyYXRlIHRoZSBlZGl0cyB1bnRpbCB3ZSBmb3VuZCBlbm91Z2ggc3VmZml4
IGZvciB0aGUgaHVuayBvciB0aGUgaW5wdXQKLSAgICAvLyBpcyBvdmVyLgotICAgIHNpemVfdCBu
X3N1ZmZpeCA9IDA7Ci0gICAgZm9yICg7IGVkaXRfaSA8IGVkaXRzLnNpemUoKTsgKytlZGl0X2kp
IHsKLSAgICAgIGlmIChuX3N1ZmZpeCA+PSBjb250ZXh0KSB7Ci0gICAgICAgIC8vIENvbnRpbnVl
IG9ubHkgaWYgdGhlIG5leHQgaHVuayBpcyB2ZXJ5IGNsb3NlLgotICAgICAgICBzdGQ6OnZlY3Rv
cjxFZGl0VHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWRpdHMuYmVnaW4oKSArIGVkaXRfaTsK
LSAgICAgICAgd2hpbGUgKGl0ICE9IGVkaXRzLmVuZCgpICYmICppdCA9PSBrTWF0Y2gpICsraXQ7
Ci0gICAgICAgIGlmIChpdCA9PSBlZGl0cy5lbmQoKSB8fCAoaXQgLSBlZGl0cy5iZWdpbigpKSAt
IGVkaXRfaSA+PSBjb250ZXh0KSB7Ci0gICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBlZGl0
IG9yIGl0IGlzIHRvbyBmYXIgYXdheS4KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgfQotCi0gICAgICBFZGl0VHlwZSBlZGl0ID0gZWRpdHNbZWRpdF9pXTsKLSAgICAgIC8vIFJl
c2V0IGNvdW50IHdoZW4gYSBub24gbWF0Y2ggaXMgZm91bmQuCi0gICAgICBuX3N1ZmZpeCA9IGVk
aXQgPT0ga01hdGNoID8gbl9zdWZmaXggKyAxIDogMDsKLQotICAgICAgaWYgKGVkaXQgPT0ga01h
dGNoIHx8IGVkaXQgPT0ga1JlbW92ZSB8fCBlZGl0ID09IGtSZXBsYWNlKSB7Ci0gICAgICAgIGh1
bmsuUHVzaExpbmUoZWRpdCA9PSBrTWF0Y2ggPyAnICcgOiAnLScsIGxlZnRbbF9pXS5jX3N0cigp
KTsKLSAgICAgIH0KLSAgICAgIGlmIChlZGl0ID09IGtBZGQgfHwgZWRpdCA9PSBrUmVwbGFjZSkg
ewotICAgICAgICBodW5rLlB1c2hMaW5lKCcrJywgcmlnaHRbcl9pXS5jX3N0cigpKTsKLSAgICAg
IH0KLQotICAgICAgLy8gQWR2YW5jZSBpbmRpY2VzLCBkZXBlbmRpbmcgb24gZWRpdCB0eXBlLgot
ICAgICAgbF9pICs9IGVkaXQgIT0ga0FkZDsKLSAgICAgIHJfaSArPSBlZGl0ICE9IGtSZW1vdmU7
Ci0gICAgfQotCi0gICAgaWYgKCFodW5rLmhhc19lZGl0cygpKSB7Ci0gICAgICAvLyBXZSBhcmUg
ZG9uZS4gV2UgZG9uJ3Qgd2FudCB0aGlzIGh1bmsuCi0gICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBodW5rLlByaW50VG8oJnNzKTsKLSAgfQotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCi0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRoZSBzdHJpbmcg
cmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVlcyByZWNlaXZlZCBpbiBFcUZhaWx1cmUoKSBhcmUg
YWxyZWFkeQotLy8gZXNjYXBlZC4gU3BsaXQgdGhlbSBvbiBlc2NhcGVkICdcbicgYm91bmRhcmll
cy4gTGVhdmUgYWxsIG90aGVyIGVzY2FwZWQKLS8vIGNoYXJhY3RlcnMgdGhlIHNhbWUuCi1zdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRFc2NhcGVkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdHIpIHsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVzOwotICBzaXplX3Qgc3Rh
cnQgPSAwLCBlbmQgPSBzdHIuc2l6ZSgpOwotICBpZiAoZW5kID4gMiAmJiBzdHJbMF0gPT0gJyIn
ICYmIHN0cltlbmQgLSAxXSA9PSAnIicpIHsKLSAgICArK3N0YXJ0OwotICAgIC0tZW5kOwotICB9
Ci0gIGJvb2wgZXNjYXBlZCA9IGZhbHNlOwotICBmb3IgKHNpemVfdCBpID0gc3RhcnQ7IGkgKyAx
IDwgZW5kOyArK2kpIHsKLSAgICBpZiAoZXNjYXBlZCkgewotICAgICAgZXNjYXBlZCA9IGZhbHNl
OwotICAgICAgaWYgKHN0cltpXSA9PSAnbicpIHsKLSAgICAgICAgbGluZXMucHVzaF9iYWNrKHN0
ci5zdWJzdHIoc3RhcnQsIGkgLSBzdGFydCAtIDEpKTsKLSAgICAgICAgc3RhcnQgPSBpICsgMTsK
LSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgZXNjYXBlZCA9IHN0cltpXSA9PSAnXFwnOwot
ICAgIH0KLSAgfQotICBsaW5lcy5wdXNoX2JhY2soc3RyLnN1YnN0cihzdGFydCwgZW5kIC0gc3Rh
cnQpKTsKLSAgcmV0dXJuIGxpbmVzOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gQ29uc3Ry
dWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCi0v
LyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgotLy8KLS8vIFRo
ZSBmaXJzdCBmb3VyIHBhcmFtZXRlcnMgYXJlIHRoZSBleHByZXNzaW9ucyB1c2VkIGluIHRoZSBh
c3NlcnRpb24KLS8vIGFuZCB0aGVpciB2YWx1ZXMsIGFzIHN0cmluZ3MuICBGb3IgZXhhbXBsZSwg
Zm9yIEFTU0VSVF9FUShmb28sIGJhcikKLS8vIHdoZXJlIGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwg
d2UgaGF2ZToKLS8vCi0vLyAgIGxoc19leHByZXNzaW9uOiAiZm9vIgotLy8gICByaHNfZXhwcmVz
c2lvbjogImJhciIKLS8vICAgbGhzX3ZhbHVlOiAgICAgICI1IgotLy8gICByaHNfdmFsdWU6ICAg
ICAgIjYiCi0vLwotLy8gVGhlIGlnbm9yaW5nX2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRo
ZSBhc3NlcnRpb24gaXMgYQotLy8gKl9TVFJDQVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBz
dHJpbmcgIklnbm9yaW5nIGNhc2UiIHdpbGwKLS8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3Nh
Z2UuCi1Bc3NlcnRpb25SZXN1bHQgRXFGYWlsdXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxoc192YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJoc192YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmluZ19jYXNlKSB7Ci0gIE1lc3Nh
Z2UgbXNnOwotICBtc2cgPDwgIiAgICAgIEV4cGVjdGVkOiAiIDw8IGxoc19leHByZXNzaW9uOwot
ICBpZiAobGhzX3ZhbHVlICE9IGxoc19leHByZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbiAgICAg
IFdoaWNoIGlzOiAiIDw8IGxoc192YWx1ZTsKLSAgfQotICBtc2cgPDwgIlxuVG8gYmUgZXF1YWwg
dG86ICIgPDwgcmhzX2V4cHJlc3Npb247Ci0gIGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJlc3Np
b24pIHsKLSAgICBtc2cgPDwgIlxuICAgICAgV2hpY2ggaXM6ICIgPDwgcmhzX3ZhbHVlOwotICB9
Ci0KLSAgaWYgKGlnbm9yaW5nX2Nhc2UpIHsKLSAgICBtc2cgPDwgIlxuSWdub3JpbmcgY2FzZSI7
Ci0gIH0KLQotICBpZiAoIWxoc192YWx1ZS5lbXB0eSgpICYmICFyaHNfdmFsdWUuZW1wdHkoKSkg
ewotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBsaHNfbGluZXMgPQotICAgICAg
ICBTcGxpdEVzY2FwZWRTdHJpbmcobGhzX3ZhbHVlKTsKLSAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gcmhzX2xpbmVzID0KLSAgICAgICAgU3BsaXRFc2NhcGVkU3RyaW5nKHJoc192
YWx1ZSk7Ci0gICAgaWYgKGxoc19saW5lcy5zaXplKCkgPiAxIHx8IHJoc19saW5lcy5zaXplKCkg
PiAxKSB7Ci0gICAgICBtc2cgPDwgIlxuV2l0aCBkaWZmOlxuIgotICAgICAgICAgIDw8IGVkaXRf
ZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWREaWZmKGxoc19saW5lcywgcmhzX2xpbmVzKTsKLSAgICB9
Ci0gIH0KLQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1zZzsKLX0KLQotLy8gQ29u
c3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBmb3IgQm9vbGVhbiBhc3NlcnRpb25zIHN1Y2ggYXMg
RVhQRUNUX1RSVUUuCi1zdGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2Uo
Ci0gICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAotICAgIGNvbnN0
IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKLSAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRl
X3ZhbHVlLAotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewotICBj
b25zdCBjaGFyKiBhY3R1YWxfbWVzc2FnZSA9IGFzc2VydGlvbl9yZXN1bHQubWVzc2FnZSgpOwot
ICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJWYWx1ZSBvZjogIiA8PCBleHByZXNzaW9uX3RleHQK
LSAgICAgIDw8ICJcbiAgQWN0dWFsOiAiIDw8IGFjdHVhbF9wcmVkaWNhdGVfdmFsdWU7Ci0gIGlm
IChhY3R1YWxfbWVzc2FnZVswXSAhPSAnXDAnKQotICAgIG1zZyA8PCAiICgiIDw8IGFjdHVhbF9t
ZXNzYWdlIDw8ICIpIjsKLSAgbXNnIDw8ICJcbkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkX3ByZWRp
Y2F0ZV92YWx1ZTsKLSAgcmV0dXJuIG1zZy5HZXRTdHJpbmcoKTsKLX0KLQotLy8gSGVscGVyIGZ1
bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUX05FQVIuCi1Bc3NlcnRpb25SZXN1bHQgRG91
YmxlTmVhclByZWRGb3JtYXQoY29uc3QgY2hhciogZXhwcjEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWJzX2Vycm9yX2V4cHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbDEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlIGFic19lcnJvcikgewotICBjb25zdCBkb3VibGUgZGlmZiA9
IGZhYnModmFsMSAtIHZhbDIpOwotICBpZiAoZGlmZiA8PSBhYnNfZXJyb3IpIHJldHVybiBBc3Nl
cnRpb25TdWNjZXNzKCk7Ci0KLSAgLy8gVE9ETyh3YW4pOiBkbyBub3QgcHJpbnQgdGhlIHZhbHVl
IG9mIGFuIGV4cHJlc3Npb24gaWYgaXQncwotICAvLyBhbHJlYWR5IGEgbGl0ZXJhbC4KLSAgcmV0
dXJuIEFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4g
IiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4cHIyCi0gICAgICA8PCAiIGlzICIgPDwgZGlmZiA8
PCAiLCB3aGljaCBleGNlZWRzICIgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiwgd2hlcmVcbiIKLSAg
ICAgIDw8IGV4cHIxIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdmFsMSA8PCAiLFxuIgotICAgICAg
PDwgZXhwcjIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2YWwyIDw8ICIsIGFuZFxuIgotICAgICAg
PDwgYWJzX2Vycm9yX2V4cHIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCBhYnNfZXJyb3IgPDwgIi4i
OwotfQotCi0KLS8vIEhlbHBlciB0ZW1wbGF0ZSBmb3IgaW1wbGVtZW50aW5nIEZsb2F0TEUoKSBh
bmQgRG91YmxlTEUoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotQXNzZXJ0aW9uUmVz
dWx0IEZsb2F0aW5nUG9pbnRMRShjb25zdCBjaGFyKiBleHByMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhd1R5cGUgdmFsMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmF3VHlwZSB2YWwyKSB7Ci0gIC8vIFJldHVybnMgc3VjY2VzcyBpZiB2YWwxIGlzIGxlc3MgdGhh
biB2YWwyLAotICBpZiAodmFsMSA8IHZhbDIpIHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpOwotICB9Ci0KLSAgLy8gb3IgaWYgdmFsMSBpcyBhbG1vc3QgZXF1YWwgdG8gdmFsMi4KLSAg
Y29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBlPiBsaHModmFsMSksIHJocyh2YWwyKTsKLSAgaWYg
KGxocy5BbG1vc3RFcXVhbHMocmhzKSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7
Ci0gIH0KLQotICAvLyBOb3RlIHRoYXQgdGhlIGFib3ZlIHR3byBjaGVja3Mgd2lsbCBib3RoIGZh
aWwgaWYgZWl0aGVyIHZhbDEgb3IKLSAgLy8gdmFsMiBpcyBOYU4sIGFzIHRoZSBJRUVFIGZsb2F0
aW5nLXBvaW50IHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQKLSAgLy8gYW55IHByZWRpY2F0ZSBpbnZv
bHZpbmcgYSBOYU4gbXVzdCByZXR1cm4gZmFsc2UuCi0KLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2
YWwxX3NzOwotICB2YWwxX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1p
dHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgICA8PCB2YWwxOwotCi0gIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gdmFsMl9zczsKLSAgdmFsMl9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihz
dGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMxMCArIDIpCi0gICAgICAgICAgPDwg
dmFsMjsKLQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCAiRXhwZWN0ZWQ6
ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8IGV4cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBB
Y3R1YWw6ICIgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZhbDFfc3MpIDw8ICIgdnMgIgotICAg
ICAgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnZhbDJfc3MpOwotfQotCi19ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKLQotLy8gQXNzZXJ0cyB0aGF0IHZhbDEgaXMgbGVzcyB0aGFuLCBvciBhbG1v
c3QgZXF1YWwgdG8sIHZhbDIuICBGYWlscwotLy8gb3RoZXJ3aXNlLiAgSW4gcGFydGljdWxhciwg
aXQgZmFpbHMgaWYgZWl0aGVyIHZhbDEgb3IgdmFsMiBpcyBOYU4uCi1Bc3NlcnRpb25SZXN1bHQg
RmxvYXRMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCB2YWwxLCBmbG9hdCB2YWwyKSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6RmxvYXRpbmdQb2ludExFPGZsb2F0PihleHByMSwgZXhwcjIsIHZhbDEsIHZhbDIpOwotfQot
Ci0vLyBBc3NlcnRzIHRoYXQgdmFsMSBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywg
dmFsMi4gIEZhaWxzCi0vLyBvdGhlcndpc2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBmYWlscyBpZiBl
aXRoZXIgdmFsMSBvciB2YWwyIGlzIE5hTi4KLUFzc2VydGlvblJlc3VsdCBEb3VibGVMRShjb25z
dCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHZhbDEsIGRvdWJsZSB2YWwyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6RmxvYXRp
bmdQb2ludExFPGRvdWJsZT4oZXhwcjEsIGV4cHIyLCB2YWwxLCB2YWwyKTsKLX0KLQotbmFtZXNw
YWNlIGludGVybmFsIHsKLQotLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBF
Q1R9X0VRIHdpdGggaW50IG9yIGVudW0KLS8vIGFyZ3VtZW50cy4KLUFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCaWdnZXN0SW50IGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
aWdnZXN0SW50IHJocykgewotICBpZiAobGhzID09IHJocykgewotICAgIHJldHVybiBBc3NlcnRp
b25TdWNjZXNzKCk7Ci0gIH0KLQotICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShsaHMsIHJocyksCi0gICAgICAgICAgICAg
ICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHJocywgbGhzKSwKLSAgICAg
ICAgICAgICAgICAgICBmYWxzZSk7Ci19Ci0KLS8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyB0
aGUgaGVscGVyIGZ1bmN0aW9ucyBuZWVkZWQgdG8gaW1wbGVtZW50Ci0vLyBBU1NFUlRfPz8gYW5k
IEVYUEVDVF8/PyB3aXRoIGludGVnZXIgb3IgZW51bSBhcmd1bWVudHMuICBJdCBpcyBoZXJlCi0v
LyBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBhc3RlIG9mIHNpbWlsYXIgY29kZS4KLSNkZWZpbmUg
R1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhvcF9uYW1lLCBvcClcCi1Bc3NlcnRpb25SZXN1bHQgQ21w
SGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHZhbDEsIEJpZ2dl
c3RJbnQgdmFsMikge1wKLSAgaWYgKHZhbDEgb3AgdmFsMikge1wKLSAgICByZXR1cm4gQXNzZXJ0
aW9uU3VjY2VzcygpO1wKLSAgfSBlbHNlIHtcCi0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
KSBcCi0gICAgICAgIDw8ICJFeHBlY3RlZDogKCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8
PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFjdHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilcCi0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMiwgdmFsMSk7XAotICB9XAotfQotCi0vLyBJ
bXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9ORSB3aXRo
IGludCBvcgotLy8gZW51bSBhcmd1bWVudHMuCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAh
PSkKLS8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9
X0xFIHdpdGggaW50IG9yCi0vLyBlbnVtIGFyZ3VtZW50cy4KLUdURVNUX0lNUExfQ01QX0hFTFBF
Ul8oTEUsIDw9KQotLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJU
fEVYUEVDVH1fTFQgd2l0aCBpbnQgb3IKLS8vIGVudW0gYXJndW1lbnRzLgotR1RFU1RfSU1QTF9D
TVBfSEVMUEVSXyhMVCwgPCApCi0vLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHtBU1NFUlR8RVhQRUNUfV9HRSB3aXRoIGludCBvcgotLy8gZW51bSBhcmd1bWVudHMuCi1HVEVT
VF9JTVBMX0NNUF9IRUxQRVJfKEdFLCA+PSkKLS8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUIHdpdGggaW50IG9yCi0vLyBlbnVtIGFyZ3VtZW50
cy4KLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oR1QsID4gKQotCi0jdW5kZWYgR1RFU1RfSU1QTF9D
TVBfSEVMUEVSXwotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
U1RSRVEuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhz
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
bGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJocykgewot
ICBpZiAoU3RyaW5nOjpDU3RyaW5nRXF1YWxzKGxocywgcmhzKSkgewotICAgIHJldHVybiBBc3Nl
cnRpb25TdWNjZXNzKCk7Ci0gIH0KLQotICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
IFByaW50VG9TdHJpbmcobGhzKSwKLSAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJo
cyksCi0gICAgICAgICAgICAgICAgICAgZmFsc2UpOwotfQotCi0vLyBUaGUgaGVscGVyIGZ1bmN0
aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRUVRLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhl
bHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzKSB7Ci0gIGlmIChTdHJpbmc6
OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpKSB7Ci0gICAgcmV0dXJuIEFz
c2VydGlvblN1Y2Nlc3MoKTsKLSAgfQotCi0gIHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Np
b24sCi0gICAgICAgICAgICAgICAgICAgcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgUHJpbnRUb1N0cmluZyhsaHMpLAotICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmco
cmhzKSwKLSAgICAgICAgICAgICAgICAgICB0cnVlKTsKLX0KLQotLy8gVGhlIGhlbHBlciBmdW5j
dGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUk5FLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBl
clNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzMikgewotICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIp
KSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJFeHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8
PCAiKSAhPSAoIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lv
biA8PCAiKSwgYWN0dWFsOiBcIiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMx
IDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgfQotfQotCi0vLyBUaGUgaGVscGVyIGZ1
bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRU5FLgotQXNzZXJ0aW9uUmVzdWx0IENt
cEhlbHBlclNUUkNBU0VORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpIHsKLSAgaWYgKCFTdHJpbmc6
OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoczEsIHMyKSkgewotICAgIHJldHVybiBBc3Nl
cnRpb25TdWNjZXNzKCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUo
KQotICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIK
LSAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSAoaWdub3JpbmcgY2FzZSksIGFjdHVhbDog
XCIiCi0gICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgfQotfQot
Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotbmFtZXNwYWNlIHsKLQotLy8gSGVscGVyIGZ1
bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIElzU3ViU3RyaW5nKCkgYW5kIElzTm90U3Vic3RyaW5n
KCkuCi0KLS8vIFRoaXMgZ3JvdXAgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMgcmV0dXJuIHRydWUg
aWZmIG5lZWRsZSBpcyBhCi0vLyBzdWJzdHJpbmcgb2YgaGF5c3RhY2suICBOVUxMIGlzIGNvbnNp
ZGVyZWQgYSBzdWJzdHJpbmcgb2YgaXRzZWxmCi0vLyBvbmx5LgotCi1ib29sIElzU3Vic3RyaW5n
UHJlZChjb25zdCBjaGFyKiBuZWVkbGUsIGNvbnN0IGNoYXIqIGhheXN0YWNrKSB7Ci0gIGlmIChu
ZWVkbGUgPT0gTlVMTCB8fCBoYXlzdGFjayA9PSBOVUxMKQotICAgIHJldHVybiBuZWVkbGUgPT0g
aGF5c3RhY2s7Ci0KLSAgcmV0dXJuIHN0cnN0cihoYXlzdGFjaywgbmVlZGxlKSAhPSBOVUxMOwot
fQotCi1ib29sIElzU3Vic3RyaW5nUHJlZChjb25zdCB3Y2hhcl90KiBuZWVkbGUsIGNvbnN0IHdj
aGFyX3QqIGhheXN0YWNrKSB7Ci0gIGlmIChuZWVkbGUgPT0gTlVMTCB8fCBoYXlzdGFjayA9PSBO
VUxMKQotICAgIHJldHVybiBuZWVkbGUgPT0gaGF5c3RhY2s7Ci0KLSAgcmV0dXJuIHdjc3N0ciho
YXlzdGFjaywgbmVlZGxlKSAhPSBOVUxMOwotfQotCi0vLyBTdHJpbmdUeXBlIGhlcmUgY2FuIGJl
IGVpdGhlciA6OnN0ZDo6c3RyaW5nIG9yIDo6c3RkOjp3c3RyaW5nLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFN0cmluZ1R5cGU+Ci1ib29sIElzU3Vic3RyaW5nUHJlZChjb25zdCBTdHJpbmdUeXBlJiBu
ZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdUeXBlJiBoYXlzdGFjaykg
ewotICByZXR1cm4gaGF5c3RhY2suZmluZChuZWVkbGUpICE9IFN0cmluZ1R5cGU6Om5wb3M7Ci19
Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBlaXRoZXIgSXNTdWJzdHJpbmcoKSBvciBJ
c05vdFN1YnN0cmluZygpLAotLy8gZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZXhwZWN0
ZWRfdG9fYmVfc3Vic3RyaW5nIHBhcmFtZXRlci4KLS8vIFN0cmluZ1R5cGUgaGVyZSBjYW4gYmUg
Y29uc3QgY2hhciosIGNvbnN0IHdjaGFyX3QqLCA6OnN0ZDo6c3RyaW5nLAotLy8gb3IgOjpzdGQ6
OndzdHJpbmcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KLUFzc2VydGlvblJlc3Vs
dCBJc1N1YnN0cmluZ0ltcGwoCi0gICAgYm9vbCBleHBlY3RlZF90b19iZV9zdWJzdHJpbmcsCi0g
ICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0g
ICAgY29uc3QgU3RyaW5nVHlwZSYgbmVlZGxlLCBjb25zdCBTdHJpbmdUeXBlJiBoYXlzdGFjaykg
ewotICBpZiAoSXNTdWJzdHJpbmdQcmVkKG5lZWRsZSwgaGF5c3RhY2spID09IGV4cGVjdGVkX3Rv
X2JlX3N1YnN0cmluZykKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIGNvbnN0
IGJvb2wgaXNfd2lkZV9zdHJpbmcgPSBzaXplb2YobmVlZGxlWzBdKSA+IDE7Ci0gIGNvbnN0IGNo
YXIqIGNvbnN0IGJlZ2luX3N0cmluZ19xdW90ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAi
XCIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCAiVmFsdWUgb2Y6ICIg
PDwgbmVlZGxlX2V4cHIgPDwgIlxuIgotICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGJlZ2luX3N0
cmluZ19xdW90ZSA8PCBuZWVkbGUgPDwgIlwiXG4iCi0gICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwg
KGV4cGVjdGVkX3RvX2JlX3N1YnN0cmluZyA/ICIiIDogIm5vdCAiKQotICAgICAgPDwgImEgc3Vi
c3RyaW5nIG9mICIgPDwgaGF5c3RhY2tfZXhwciA8PCAiXG4iCi0gICAgICA8PCAiV2hpY2ggaXM6
ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8IGhheXN0YWNrIDw8ICJcIiI7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQotCi0vLyBJc1N1YnN0cmluZygpIGFuZCBJc05vdFN1YnN0cmluZygpIGNoZWNr
IHdoZXRoZXIgbmVlZGxlIGlzIGEKLS8vIHN1YnN0cmluZyBvZiBoYXlzdGFjayAoTlVMTCBpcyBj
b25zaWRlcmVkIGEgc3Vic3RyaW5nIG9mIGl0c2VsZgotLy8gb25seSksIGFuZCByZXR1cm4gYW4g
YXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZXkgZmFpbC4KLQotQXNzZXJ0aW9uUmVz
dWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFy
KiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZSwgY29uc3QgY2hhciogaGF5
c3RhY2spIHsKLSAgcmV0dXJuIElzU3Vic3RyaW5nSW1wbCh0cnVlLCBuZWVkbGVfZXhwciwgaGF5
c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19Ci0KLUFzc2VydGlvblJlc3VsdCBJc1N1
YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3Rh
Y2tfZXhwciwKLSAgICBjb25zdCB3Y2hhcl90KiBuZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0
YWNrKSB7Ci0gIHJldHVybiBJc1N1YnN0cmluZ0ltcGwodHJ1ZSwgbmVlZGxlX2V4cHIsIGhheXN0
YWNrX2V4cHIsIG5lZWRsZSwgaGF5c3RhY2spOwotfQotCi1Bc3NlcnRpb25SZXN1bHQgSXNOb3RT
dWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0
YWNrX2V4cHIsCi0gICAgY29uc3QgY2hhciogbmVlZGxlLCBjb25zdCBjaGFyKiBoYXlzdGFjaykg
ewotICByZXR1cm4gSXNTdWJzdHJpbmdJbXBsKGZhbHNlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tf
ZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19Ci0KLUFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0
cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tf
ZXhwciwKLSAgICBjb25zdCB3Y2hhcl90KiBuZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0YWNr
KSB7Ci0gIHJldHVybiBJc1N1YnN0cmluZ0ltcGwoZmFsc2UsIG5lZWRsZV9leHByLCBoYXlzdGFj
a19leHByLCBuZWVkbGUsIGhheXN0YWNrKTsKLX0KLQotQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3Ry
aW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19l
eHByLAotICAgIGNvbnN0IDo6c3RkOjpzdHJpbmcmIG5lZWRsZSwgY29uc3QgOjpzdGQ6OnN0cmlu
ZyYgaGF5c3RhY2spIHsKLSAgcmV0dXJuIElzU3Vic3RyaW5nSW1wbCh0cnVlLCBuZWVkbGVfZXhw
ciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19Ci0KLUFzc2VydGlvblJlc3Vs
dCBJc05vdFN1YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hh
ciogaGF5c3RhY2tfZXhwciwKLSAgICBjb25zdCA6OnN0ZDo6c3RyaW5nJiBuZWVkbGUsIGNvbnN0
IDo6c3RkOjpzdHJpbmcmIGhheXN0YWNrKSB7Ci0gIHJldHVybiBJc1N1YnN0cmluZ0ltcGwoZmFs
c2UsIG5lZWRsZV9leHByLCBoYXlzdGFja19leHByLCBuZWVkbGUsIGhheXN0YWNrKTsKLX0KLQot
I2lmIEdURVNUX0hBU19TVERfV1NUUklORwotQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAot
ICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAot
ICAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBo
YXlzdGFjaykgewotICByZXR1cm4gSXNTdWJzdHJpbmdJbXBsKHRydWUsIG5lZWRsZV9leHByLCBo
YXlzdGFja19leHByLCBuZWVkbGUsIGhheXN0YWNrKTsKLX0KLQotQXNzZXJ0aW9uUmVzdWx0IElz
Tm90U3Vic3RyaW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBo
YXlzdGFja19leHByLAotICAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6
c3RkOjp3c3RyaW5nJiBoYXlzdGFjaykgewotICByZXR1cm4gSXNTdWJzdHJpbmdJbXBsKGZhbHNl
LCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0j
aWYgR1RFU1RfT1NfV0lORE9XUwotCi1uYW1lc3BhY2UgewotCi0vLyBIZWxwZXIgZnVuY3Rpb24g
Zm9yIElzSFJFU1VMVHtTdWNjZXNzRmFpbHVyZX0gcHJlZGljYXRlcwotQXNzZXJ0aW9uUmVzdWx0
IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0IGNoYXIqIGV4cHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBocikgeyAgLy8gTk9MSU5UCi0jIGlmIEdURVNU
X09TX1dJTkRPV1NfTU9CSUxFCi0KLSAgLy8gV2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9y
bWF0TWVzc2FnZS4KLSAgY29uc3QgY2hhciBlcnJvcl90ZXh0W10gPSAiIjsKLQotIyBlbHNlCi0K
LSAgLy8gTG9va3MgdXAgdGhlIGh1bWFuLXJlYWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUg
SFJFU1VMVCBjb2RlCi0gIC8vIGFuZCBzaW5jZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1z
IHRvIEZvcm1hdE1lc3NhZ2UsIHdlIGRvbid0Ci0gIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4K
LSAgY29uc3QgRFdPUkQga0ZsYWdzID0gRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAotICAg
ICAgICAgICAgICAgICAgICAgICBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29u
c3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2OwotICAvLyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiBy
ZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3IgdGhpcyBIUkVTVUxULgotICBjaGFyIGVycm9yX3Rl
eHRba0J1ZlNpemVdID0geyAnXDAnIH07Ci0gIERXT1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3Jt
YXRNZXNzYWdlQShrRmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAgLy8gbm8gc291cmNlLCB3ZSdyZSBhc2tpbmcgc3lzdGVtCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBociwgIC8vIHRoZSBlcnJvcgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8vIG5vIGxpbmUgd2lkdGggcmVz
dHJpY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0J1ZlNpemUsICAvLyBidWYgc2l6ZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7ICAvLyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMK
LSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBzcGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0
cmFpbGluZyBDUi1MRikKLSAgZm9yICg7IG1lc3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJyb3Jf
dGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsKLSAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3RoKSB7
Ci0gICAgZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdID0gJ1wwJzsKLSAgfQotCi0jIGVu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGVy
cm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoaHIpKTsKLSAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8
PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIKLSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJv
cl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQgPDwgIlxuIjsKLX0KLQotfSAgLy8gbmFtZXNwYWNl
Ci0KLUFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRTdWNjZXNzKGNvbnN0IGNoYXIqIGV4cHIsIGxv
bmcgaHIpIHsgIC8vIE5PTElOVAotICBpZiAoU1VDQ0VFREVEKGhyKSkgewotICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLSAgcmV0dXJuIEhSRVNVTFRGYWlsdXJlSGVscGVyKGV4
cHIsICJzdWNjZWVkcyIsIGhyKTsKLX0KLQotQXNzZXJ0aW9uUmVzdWx0IElzSFJFU1VMVEZhaWx1
cmUoY29uc3QgY2hhciogZXhwciwgbG9uZyBocikgeyAgLy8gTk9MSU5UCi0gIGlmIChGQUlMRUQo
aHIpKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgfQotICByZXR1cm4gSFJF
U1VMVEZhaWx1cmVIZWxwZXIoZXhwciwgImZhaWxzIiwgaHIpOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MKLQotLy8gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVuY29kaW5nIFVuaWNv
ZGUgdGV4dCAod2lkZSBzdHJpbmdzKSBpbgotLy8gVVRGLTguCi0KLS8vIEEgVW5pY29kZSBjb2Rl
LXBvaW50IGNhbiBoYXZlIHVwdG8gMjEgYml0cywgYW5kIGlzIGVuY29kZWQgaW4gVVRGLTgKLS8v
IGxpa2UgdGhpczoKLS8vCi0vLyBDb2RlLXBvaW50IGxlbmd0aCAgIEVuY29kaW5nCi0vLyAgIDAg
LSAgNyBiaXRzICAgICAgIDB4eHh4eHh4Ci0vLyAgIDggLSAxMSBiaXRzICAgICAgIDExMHh4eHh4
IDEweHh4eHh4Ci0vLyAgMTIgLSAxNiBiaXRzICAgICAgIDExMTB4eHh4IDEweHh4eHh4IDEweHh4
eHh4Ci0vLyAgMTcgLSAyMSBiaXRzICAgICAgIDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEw
eHh4eHh4Ci0KLS8vIFRoZSBtYXhpbXVtIGNvZGUtcG9pbnQgYSBvbmUtYnl0ZSBVVEYtOCBzZXF1
ZW5jZSBjYW4gcmVwcmVzZW50LgotY29uc3QgVUludDMyIGtNYXhDb2RlUG9pbnQxID0gKHN0YXRp
Y19jYXN0PFVJbnQzMj4oMSkgPDwgIDcpIC0gMTsKLQotLy8gVGhlIG1heGltdW0gY29kZS1wb2lu
dCBhIHR3by1ieXRlIFVURi04IHNlcXVlbmNlIGNhbiByZXByZXNlbnQuCi1jb25zdCBVSW50MzIg
a01heENvZGVQb2ludDIgPSAoc3RhdGljX2Nhc3Q8VUludDMyPigxKSA8PCAoNSArIDYpKSAtIDE7
Ci0KLS8vIFRoZSBtYXhpbXVtIGNvZGUtcG9pbnQgYSB0aHJlZS1ieXRlIFVURi04IHNlcXVlbmNl
IGNhbiByZXByZXNlbnQuCi1jb25zdCBVSW50MzIga01heENvZGVQb2ludDMgPSAoc3RhdGljX2Nh
c3Q8VUludDMyPigxKSA8PCAoNCArIDIqNikpIC0gMTsKLQotLy8gVGhlIG1heGltdW0gY29kZS1w
b2ludCBhIGZvdXItYnl0ZSBVVEYtOCBzZXF1ZW5jZSBjYW4gcmVwcmVzZW50LgotY29uc3QgVUlu
dDMyIGtNYXhDb2RlUG9pbnQ0ID0gKHN0YXRpY19jYXN0PFVJbnQzMj4oMSkgPDwgKDMgKyAzKjYp
KSAtIDE7Ci0KLS8vIENob3BzIG9mZiB0aGUgbiBsb3dlc3QgYml0cyBmcm9tIGEgYml0IHBhdHRl
cm4uICBSZXR1cm5zIHRoZSBuCi0vLyBsb3dlc3QgYml0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHRo
ZSBvcmlnaW5hbCBiaXQgcGF0dGVybiB3aWxsIGJlCi0vLyBzaGlmdGVkIHRvIHRoZSByaWdodCBi
eSBuIGJpdHMuCi1pbmxpbmUgVUludDMyIENob3BMb3dCaXRzKFVJbnQzMiogYml0cywgaW50IG4p
IHsKLSAgY29uc3QgVUludDMyIGxvd19iaXRzID0gKmJpdHMgJiAoKHN0YXRpY19jYXN0PFVJbnQz
Mj4oMSkgPDwgbikgLSAxKTsKLSAgKmJpdHMgPj49IG47Ci0gIHJldHVybiBsb3dfYml0czsKLX0K
LQotLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGlu
IFVURi04IGVuY29kaW5nLgotLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50
MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKLS8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4g
YSBjb2RlIHBvaW50LgotLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29k
ZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUr
MTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAotLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhY
WFhYWFhYWCkiLgotc3RkOjpzdHJpbmcgQ29kZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50
KSB7Ci0gIGlmIChjb2RlX3BvaW50ID4ga01heENvZGVQb2ludDQpIHsKLSAgICByZXR1cm4gIihJ
bnZhbGlkIFVuaWNvZGUgMHgiICsgU3RyaW5nOjpGb3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAi
KSI7Ci0gIH0KLQotICBjaGFyIHN0cls1XTsgIC8vIEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0
IHZhbGlkIGNvZGUgcG9pbnQuCi0gIGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7
Ci0gICAgc3RyWzFdID0gJ1wwJzsKLSAgICBzdHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2Rl
X3BvaW50KTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDB4eHh4eHh4Ci0gIH0gZWxzZSBp
ZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBvaW50MikgewotICAgIHN0clsyXSA9ICdcMCc7Ci0g
ICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3Bv
aW50LCA2KSk7ICAvLyAxMHh4eHh4eAotICAgIHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4
QzAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTEweHh4eHgKLSAgfSBlbHNl
IGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQzKSB7Ci0gICAgc3RyWzNdID0gJ1wwJzsK
LSAgICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVf
cG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4Ci0gICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
MHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAotICAgIHN0
clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RTAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAg
ICAgICAgLy8gMTExMHh4eHgKLSAgfSBlbHNlIHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQ
b2ludDQKLSAgICBzdHJbNF0gPSAnXDAnOwotICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+
KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9wb2ludCwgNikpOyAgLy8gMTB4eHh4eHgKLSAgICBz
dHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQs
IDYpKTsgIC8vIDEweHh4eHh4Ci0gICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8
IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAotICAgIHN0clswXSA9
IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAg
Ly8gMTExMTB4eHgKLSAgfQotICByZXR1cm4gc3RyOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHR3
byBmdW5jdGlvbnMgb25seSBtYWtlIHNlbnNlIGlmIHRoZSB0aGUgc3lzdGVtCi0vLyB1c2VzIFVU
Ri0xNiBmb3Igd2lkZSBzdHJpbmcgZW5jb2RpbmcuIEFsbCBzdXBwb3J0ZWQgc3lzdGVtcwotLy8g
d2l0aCAxNiBiaXQgd2NoYXJfdCAoV2luZG93cywgQ3lnd2luLCBTeW1iaWFuIE9TKSBkbyB1c2Ug
VVRGLTE2LgotCi0vLyBEZXRlcm1pbmVzIGlmIHRoZSBhcmd1bWVudHMgY29uc3RpdHV0ZSBVVEYt
MTYgc3Vycm9nYXRlIHBhaXIKLS8vIGFuZCB0aHVzIHNob3VsZCBiZSBjb21iaW5lZCBpbnRvIGEg
c2luZ2xlIFVuaWNvZGUgY29kZSBwb2ludAotLy8gdXNpbmcgQ3JlYXRlQ29kZVBvaW50RnJvbVV0
ZjE2U3Vycm9nYXRlUGFpci4KLWlubGluZSBib29sIElzVXRmMTZTdXJyb2dhdGVQYWlyKHdjaGFy
X3QgZmlyc3QsIHdjaGFyX3Qgc2Vjb25kKSB7Ci0gIHJldHVybiBzaXplb2Yod2NoYXJfdCkgPT0g
MiAmJgotICAgICAgKGZpcnN0ICYgMHhGQzAwKSA9PSAweEQ4MDAgJiYgKHNlY29uZCAmIDB4RkMw
MCkgPT0gMHhEQzAwOwotfQotCi0vLyBDcmVhdGVzIGEgVW5pY29kZSBjb2RlIHBvaW50IGZyb20g
VVRGMTYgc3Vycm9nYXRlIHBhaXIuCi1pbmxpbmUgVUludDMyIENyZWF0ZUNvZGVQb2ludEZyb21V
dGYxNlN1cnJvZ2F0ZVBhaXIod2NoYXJfdCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IHNlY29uZCkgewotICBjb25zdCBV
SW50MzIgbWFzayA9ICgxIDw8IDEwKSAtIDE7Ci0gIHJldHVybiAoc2l6ZW9mKHdjaGFyX3QpID09
IDIpID8KLSAgICAgICgoKGZpcnN0ICYgbWFzaykgPDwgMTApIHwgKHNlY29uZCAmIG1hc2spKSAr
IDB4MTAwMDAgOgotICAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIGNhbGxlZCB3
aGVuIHRoZSBjb25kaXRpb24gaXMKLSAgICAgIC8vIGZhbHNlLCBidXQgd2UgcHJvdmlkZSBhIHNl
bnNpYmxlIGRlZmF1bHQgaW4gY2FzZSBpdCBpcy4KLSAgICAgIHN0YXRpY19jYXN0PFVJbnQzMj4o
Zmlyc3QpOwotfQotCi0vLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmlu
ZyBpbiBVVEYtOCBlbmNvZGluZy4KLS8vIFRoZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVkIHRvIGhh
dmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKLS8vICAgVVRGLTE2IGlmIHNpemVvZih3Y2hhcl90
KSA9PSAyIChvbiBXaW5kb3dzLCBDeWd3aW4sIFN5bWJpYW4gT1MpCi0vLyAgIFVURi0zMiBpZiBz
aXplb2Yod2NoYXJfdCkgPT0gNCAob24gTGludXgpCi0vLyBQYXJhbWV0ZXIgc3RyIHBvaW50cyB0
byBhIG51bGwtdGVybWluYXRlZCB3aWRlIHN0cmluZy4KLS8vIFBhcmFtZXRlciBudW1fY2hhcnMg
bWF5IGFkZGl0aW9uYWxseSBsaW1pdCB0aGUgbnVtYmVyCi0vLyBvZiB3Y2hhcl90IGNoYXJhY3Rl
cnMgcHJvY2Vzc2VkLiAtMSBpcyB1c2VkIHdoZW4gdGhlIGVudGlyZSBzdHJpbmcKLS8vIHNob3Vs
ZCBiZSBwcm9jZXNzZWQuCi0vLyBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGNvZGUgcG9pbnRzIHRo
YXQgYXJlIG5vdCB2YWxpZCBVbmljb2RlIGNvZGUgcG9pbnRzCi0vLyAoaS5lLiBvdXRzaWRlIG9m
IFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSB0aGV5IHdpbGwgYmUgb3V0cHV0Ci0vLyBh
cyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuIElmIHRoZSBzdHJpbmcgaXMgaW4gVVRG
MTYgZW5jb2RpbmcKLS8vIGFuZCBjb250YWlucyBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFp
cnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwotLy8gd2lsbCBiZSBlbmNvZGVkIGFzIGluZGl2aWR1
YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20gQmFzaWMgTm9ybWFsIFBsYW5lLgotc3RkOjpzdHJp
bmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsK
LSAgaWYgKG51bV9jaGFycyA9PSAtMSkKLSAgICBudW1fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+
KHdjc2xlbihzdHIpKTsKLQotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1fY2hhcnM7ICsraSkgewotICAgIFVJbnQzMiB1bmljb2RlX2NvZGVf
cG9pbnQ7Ci0KLSAgICBpZiAoc3RyW2ldID09IEwnXDAnKSB7Ci0gICAgICBicmVhazsKLSAgICB9
IGVsc2UgaWYgKGkgKyAxIDwgbnVtX2NoYXJzICYmIElzVXRmMTZTdXJyb2dhdGVQYWlyKHN0cltp
XSwgc3RyW2kgKyAxXSkpIHsKLSAgICAgIHVuaWNvZGVfY29kZV9wb2ludCA9IENyZWF0ZUNvZGVQ
b2ludEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIoc3RyW2ldLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJbaSArIDFdKTsK
LSAgICAgIGkrKzsKLSAgICB9IGVsc2UgewotICAgICAgdW5pY29kZV9jb2RlX3BvaW50ID0gc3Rh
dGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwotICAgIH0KLQotICAgIHN0cmVhbSA8PCBDb2RlUG9p
bnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50KTsKLSAgfQotICByZXR1cm4gU3RyaW5nU3RyZWFt
VG9TdHJpbmcoJnN0cmVhbSk7Ci19Ci0KLS8vIENvbnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBh
biBzdGQ6OnN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuCi0vLyBOVUxMIHdpbGwgYmUg
Y29udmVydGVkIHRvICIobnVsbCkiLgotc3RkOjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoY29uc3Qgd2NoYXJfdCAqIHdpZGVfY19zdHIpIHsKLSAgaWYgKHdpZGVfY19zdHIgPT0gTlVM
TCkgIHJldHVybiAiKG51bGwpIjsKLQotICByZXR1cm4gaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0
Zjgod2lkZV9jX3N0ciwgLTEpOwotfQotCi0vLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3Mu
ICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZQotLy8gY29udGVudC4KLS8vCi0v
LyBVbmxpa2Ugd2NzY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50
KHMpLiAgQSBOVUxMCi0vLyBDIHN0cmluZyBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkg
bm9uLU5VTEwgQyBzdHJpbmcsCi0vLyBpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZy4KLWJvb2wg
U3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hh
cl90ICogcmhzKSB7Ci0gIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwotCi0g
IGlmIChyaHMgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0gIHJldHVybiB3Y3NjbXAobGhzLCBy
aHMpID09IDA7Ci19Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0
cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhz
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJf
dCogbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJo
cykgewotICBpZiAoU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhsaHMsIHJocykpIHsKLSAgICBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci0KLSAgcmV0dXJuIEVxRmFpbHVyZShsaHNf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICBQcmludFRvU3RyaW5nKGxocyksCi0gICAgICAgICAgICAgICAgICAgUHJpbnRU
b1N0cmluZyhyaHMpLAotICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLX0KLQotLy8gSGVscGVy
IGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogczEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogczIpIHsKLSAgaWYgKCFTdHJpbmc6OldpZGVDU3Ry
aW5nRXF1YWxzKHMxLCBzMikpIHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9
Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4
cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9l
eHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBQcmludFRvU3RyaW5nKHMxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMg
IiA8PCBQcmludFRvU3RyaW5nKHMyKTsKLX0KLQotLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywg
aWdub3JpbmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlCi0vLyB0aGUgc2FtZSBj
b250ZW50LgotLy8KLS8vIFVubGlrZSBzdHJjYXNlY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhh
bmRsZSBOVUxMIGFyZ3VtZW50KHMpLiAgQQotLy8gTlVMTCBDIHN0cmluZyBpcyBjb25zaWRlcmVk
IGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwgQyBzdHJpbmcsCi0vLyBpbmNsdWRpbmcgdGhlIGVt
cHR5IHN0cmluZy4KLWJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNv
bnN0IGNoYXIgKiBsaHMsIGNvbnN0IGNoYXIgKiByaHMpIHsKLSAgaWYgKGxocyA9PSBOVUxMKQot
ICAgIHJldHVybiByaHMgPT0gTlVMTDsKLSAgaWYgKHJocyA9PSBOVUxMKQotICAgIHJldHVybiBm
YWxzZTsKLSAgcmV0dXJuIHBvc2l4OjpTdHJDYXNlQ21wKGxocywgcmhzKSA9PSAwOwotfQotCi0g
IC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVybnMg
dHJ1ZSBpZmYgdGhleQotICAvLyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCi0gIC8vCi0gIC8vIFVu
bGlrZSB3Y3NjYXNlY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50
KHMpLgotICAvLyBBIE5VTEwgQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55
IG5vbi1OVUxMIHdpZGUgQyBzdHJpbmcsCi0gIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5n
LgotICAvLyBOQjogVGhlIGltcGxlbWVudGF0aW9ucyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zIHNs
aWdodGx5IGRpZmZlci4KLSAgLy8gT24gd2luZG93cywgdGhpcyBtZXRob2QgdXNlcyBfd2NzaWNt
cCB3aGljaCBjb21wYXJlcyBhY2NvcmRpbmcgdG8gTENfQ1RZUEUKLSAgLy8gZW52aXJvbm1lbnQg
dmFyaWFibGUuIE9uIEdOVSBwbGF0Zm9ybSB0aGlzIG1ldGhvZCB1c2VzIHdjc2Nhc2VjbXAKLSAg
Ly8gd2hpY2ggY29tcGFyZXMgYWNjb3JkaW5nIHRvIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRoZSBj
dXJyZW50IGxvY2FsZS4KLSAgLy8gT24gTWFjT1MgWCwgaXQgdXNlcyB0b3dsb3dlciwgd2hpY2gg
YWxzbyB1c2VzIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRoZQotICAvLyBjdXJyZW50IGxvY2FsZS4K
LWJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hh
cl90KiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlmIChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBO
VUxMOwotCi0gIGlmIChyaHMgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0jaWYgR1RFU1RfT1Nf
V0lORE9XUwotICByZXR1cm4gX3djc2ljbXAobGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9P
U19MSU5VWCAmJiAhR1RFU1RfT1NfTElOVVhfQU5EUk9JRAotICByZXR1cm4gd2NzY2FzZWNtcChs
aHMsIHJocykgPT0gMDsKLSNlbHNlCi0gIC8vIEFuZHJvaWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4g
ZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCi0gIC8vIE90aGVyIHVua25vd24gT1NlcyBtYXkgbm90
IGRlZmluZSBpdCBlaXRoZXIuCi0gIHdpbnRfdCBsZWZ0LCByaWdodDsKLSAgZG8gewotICAgIGxl
ZnQgPSB0b3dsb3dlcigqbGhzKyspOwotICAgIHJpZ2h0ID0gdG93bG93ZXIoKnJocysrKTsKLSAg
fSB3aGlsZSAobGVmdCAmJiBsZWZ0ID09IHJpZ2h0KTsKLSAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7
Ci0jZW5kaWYgIC8vIE9TIHNlbGVjdG9yCi19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgc3RyIGVu
ZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBpZ25vcmluZyBjYXNlLgotLy8gQW55IHN0cmluZyBp
cyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFuIGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpF
bmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25z
dCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7Ci0gIGNvbnN0IHNpemVfdCBzdHJfbGVuID0gc3RyLmxl
bmd0aCgpOwotICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHN1ZmZpeC5sZW5ndGgoKTsKLSAg
cmV0dXJuIChzdHJfbGVuID49IHN1ZmZpeF9sZW4pICYmCi0gICAgICAgICBDYXNlSW5zZW5zaXRp
dmVDU3RyaW5nRXF1YWxzKHN0ci5jX3N0cigpICsgc3RyX2xlbiAtIHN1ZmZpeF9sZW4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5jX3N0cigpKTsKLX0KLQot
Ly8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgotc3RkOjpzdHJpbmcgU3RyaW5nOjpG
b3JtYXRJbnRXaWR0aDIoaW50IHZhbHVlKSB7Ci0gIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBz
cyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBzdGQ6OnNldHcoMikgPDwgdmFsdWU7Ci0gIHJldHVy
biBzcy5zdHIoKTsKLX0KLQotLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiVYIi4KLXN0ZDo6
c3RyaW5nIFN0cmluZzo6Rm9ybWF0SGV4SW50KGludCB2YWx1ZSkgewotICBzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKLSAgc3MgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgdmFsdWU7Ci0g
IHJldHVybiBzcy5zdHIoKTsKLX0KLQotLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgotc3Rk
OjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRCeXRlKHVuc2lnbmVkIGNoYXIgdmFsdWUpIHsKLSAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHNzIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0
dygyKSA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVwcGVyY2FzZQotICAgICA8PCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KHZhbHVlKTsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCi0vLyBDb252ZXJ0
cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3RyZWFtIHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0
aW5nIE5VTAotLy8gYnl0ZXMgdG8gIlxcMCIgYWxvbmcgdGhlIHdheS4KLXN0ZDo6c3RyaW5nIFN0
cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpzdHJpbmdzdHJlYW0qIHNzKSB7Ci0gIGNvbnN0IDo6
c3RkOjpzdHJpbmcmIHN0ciA9IHNzLT5zdHIoKTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQg
PSBzdHIuY19zdHIoKTsKLSAgY29uc3QgY2hhciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVu
Z3RoKCk7Ci0KLSAgc3RkOjpzdHJpbmcgcmVzdWx0OwotICByZXN1bHQucmVzZXJ2ZSgyICogKGVu
ZCAtIHN0YXJ0KSk7Ci0gIGZvciAoY29uc3QgY2hhciogY2ggPSBzdGFydDsgY2ggIT0gZW5kOyAr
K2NoKSB7Ci0gICAgaWYgKCpjaCA9PSAnXDAnKSB7Ci0gICAgICByZXN1bHQgKz0gIlxcMCI7ICAv
LyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsKLSAgICB9IGVsc2UgewotICAgICAgcmVzdWx0ICs9
ICpjaDsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vLyBBcHBlbmRzIHRo
ZSB1c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8gdGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNz
YWdlLgotc3RkOjpzdHJpbmcgQXBwZW5kVXNlck1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIGd0
ZXN0X21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVz
ZXJfbXNnKSB7Ci0gIC8vIEFwcGVuZHMgdGhlIHVzZXIgbWVzc2FnZSBpZiBpdCdzIG5vbi1lbXB0
eS4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgdXNlcl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0U3Ry
aW5nKCk7Ci0gIGlmICh1c2VyX21zZ19zdHJpbmcuZW1wdHkoKSkgewotICAgIHJldHVybiBndGVz
dF9tc2c7Ci0gIH0KLQotICByZXR1cm4gZ3Rlc3RfbXNnICsgIlxuIiArIHVzZXJfbXNnX3N0cmlu
ZzsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIGNsYXNzIFRlc3RSZXN1bHQK
LQotLy8gQ3JlYXRlcyBhbiBlbXB0eSBUZXN0UmVzdWx0LgotVGVzdFJlc3VsdDo6VGVzdFJlc3Vs
dCgpCi0gICAgOiBkZWF0aF90ZXN0X2NvdW50XygwKSwKLSAgICAgIGVsYXBzZWRfdGltZV8oMCkg
ewotfQotCi0vLyBEJ3Rvci4KLVRlc3RSZXN1bHQ6On5UZXN0UmVzdWx0KCkgewotfQotCi0vLyBS
ZXR1cm5zIHRoZSBpLXRoIHRlc3QgcGFydCByZXN1bHQgYW1vbmcgYWxsIHRoZSByZXN1bHRzLiBp
IGNhbgotLy8gcmFuZ2UgZnJvbSAwIHRvIHRvdGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMg
bm90IGluIHRoYXQgcmFuZ2UsCi0vLyBhYm9ydHMgdGhlIHByb2dyYW0uCi1jb25zdCBUZXN0UGFy
dFJlc3VsdCYgVGVzdFJlc3VsdDo6R2V0VGVzdFBhcnRSZXN1bHQoaW50IGkpIGNvbnN0IHsKLSAg
aWYgKGkgPCAwIHx8IGkgPj0gdG90YWxfcGFydF9jb3VudCgpKQotICAgIGludGVybmFsOjpwb3Np
eDo6QWJvcnQoKTsKLSAgcmV0dXJuIHRlc3RfcGFydF9yZXN1bHRzXy5hdChpKTsKLX0KLQotLy8g
UmV0dXJucyB0aGUgaS10aCB0ZXN0IHByb3BlcnR5LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLS8v
IHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFi
b3J0cyB0aGUKLS8vIHByb2dyYW0uCi1jb25zdCBUZXN0UHJvcGVydHkmIFRlc3RSZXN1bHQ6Okdl
dFRlc3RQcm9wZXJ0eShpbnQgaSkgY29uc3QgewotICBpZiAoaSA8IDAgfHwgaSA+PSB0ZXN0X3By
b3BlcnR5X2NvdW50KCkpCi0gICAgaW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpOwotICByZXR1cm4g
dGVzdF9wcm9wZXJ0aWVzXy5hdChpKTsKLX0KLQotLy8gQ2xlYXJzIHRoZSB0ZXN0IHBhcnQgcmVz
dWx0cy4KLXZvaWQgVGVzdFJlc3VsdDo6Q2xlYXJUZXN0UGFydFJlc3VsdHMoKSB7Ci0gIHRlc3Rf
cGFydF9yZXN1bHRzXy5jbGVhcigpOwotfQotCi0vLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0
byB0aGUgbGlzdC4KLXZvaWQgVGVzdFJlc3VsdDo6QWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgdGVzdF9wYXJ0X3Jlc3VsdHNfLnB1
c2hfYmFjayh0ZXN0X3BhcnRfcmVzdWx0KTsKLX0KLQotLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkg
dG8gdGhlIGxpc3QuIElmIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCi0vLyBz
dXBwbGllZCBwcm9wZXJ0eSBpcyBhbHJlYWR5IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhp
cyB0ZXN0X3Byb3BlcnR5Ci0vLyByZXBsYWNlcyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4K
LXZvaWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9l
bGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVy
dHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYgKCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxl
bWVudCwgdGVzdF9wcm9wZXJ0eSkpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgaW50ZXJuYWw6Ok11
dGV4TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0ZXNfbXV0ZXhfKTsKLSAgY29uc3Qgc3RkOjp2ZWN0
b3I8VGVzdFByb3BlcnR5Pjo6aXRlcmF0b3IgcHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXkgPQot
ICAgICAgc3RkOjpmaW5kX2lmKHRlc3RfcHJvcGVydGllc18uYmVnaW4oKSwgdGVzdF9wcm9wZXJ0
aWVzXy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5
SXModGVzdF9wcm9wZXJ0eS5rZXkoKSkpOwotICBpZiAocHJvcGVydHlfd2l0aF9tYXRjaGluZ19r
ZXkgPT0gdGVzdF9wcm9wZXJ0aWVzXy5lbmQoKSkgewotICAgIHRlc3RfcHJvcGVydGllc18ucHVz
aF9iYWNrKHRlc3RfcHJvcGVydHkpOwotICAgIHJldHVybjsKLSAgfQotICBwcm9wZXJ0eV93aXRo
X21hdGNoaW5nX2tleS0+U2V0VmFsdWUodGVzdF9wcm9wZXJ0eS52YWx1ZSgpKTsKLX0KLQotLy8g
VGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmlidXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlcz4g
ZWxlbWVudCBvZiBYTUwKLS8vIG91dHB1dC4KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrUmVz
ZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1tdID0gewotICAiZGlzYWJsZWQiLAotICAiZXJyb3Jz
IiwKLSAgImZhaWx1cmVzIiwKLSAgIm5hbWUiLAotICAicmFuZG9tX3NlZWQiLAotICAidGVzdHMi
LAotICAidGltZSIsCi0gICJ0aW1lc3RhbXAiCi19OwotCi0vLyBUaGUgbGlzdCBvZiByZXNlcnZl
ZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0ZXN0c3VpdGU+IGVsZW1lbnQgb2YgWE1MCi0vLyBv
dXRwdXQuCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlQXR0cmli
dXRlc1tdID0gewotICAiZGlzYWJsZWQiLAotICAiZXJyb3JzIiwKLSAgImZhaWx1cmVzIiwKLSAg
Im5hbWUiLAotICAidGVzdHMiLAotICAidGltZSIKLX07Ci0KLS8vIFRoZSBsaXN0IG9mIHJlc2Vy
dmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUgPHRlc3RjYXNlPiBlbGVtZW50IG9mIFhNTCBvdXRw
dXQuCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3Qga1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVz
W10gPSB7Ci0gICJjbGFzc25hbWUiLAotICAibmFtZSIsCi0gICJzdGF0dXMiLAotICAidGltZSIs
Ci0gICJ0eXBlX3BhcmFtIiwKLSAgInZhbHVlX3BhcmFtIgotfTsKLQotdGVtcGxhdGUgPGludCBr
U2l6ZT4KLXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBBcnJheUFzVmVjdG9yKGNvbnN0IGNoYXIq
IGNvbnN0ICgmYXJyYXkpW2tTaXplXSkgewotICByZXR1cm4gc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+KGFycmF5LCBhcnJheSArIGtTaXplKTsKLX0KLQotc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KAotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB4bWxfZWxlbWVudCkgewotICBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZXMi
KSB7Ci0gICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlc0F0dHJpYnV0
ZXMpOwotICB9IGVsc2UgaWYgKHhtbF9lbGVtZW50ID09ICJ0ZXN0c3VpdGUiKSB7Ci0gICAgcmV0
dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVkVGVzdFN1aXRlQXR0cmlidXRlcyk7Ci0gIH0gZWxz
ZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RjYXNlIikgewotICAgIHJldHVybiBBcnJheUFzVmVj
dG9yKGtSZXNlcnZlZFRlc3RDYXNlQXR0cmlidXRlcyk7Ci0gIH0gZWxzZSB7Ci0gICAgR1RFU1Rf
Q0hFQ0tfKGZhbHNlKSA8PCAiVW5yZWNvZ25pemVkIHhtbF9lbGVtZW50IHByb3ZpZGVkOiAiIDw8
IHhtbF9lbGVtZW50OwotICB9Ci0gIC8vIFRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBidXQgc29t
ZSBjb21waWxlcnMgbWF5IG5vdCByZWFsaXplcyB0aGF0LgotICByZXR1cm4gc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+KCk7Ci19Ci0KLXN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRXb3JkTGlzdChj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHdvcmRzKSB7Ci0gIE1lc3NhZ2Ugd29yZF9s
aXN0OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzLnNpemUoKTsgKytpKSB7Ci0gICAg
aWYgKGkgPiAwICYmIHdvcmRzLnNpemUoKSA+IDIpIHsKLSAgICAgIHdvcmRfbGlzdCA8PCAiLCAi
OwotICAgIH0KLSAgICBpZiAoaSA9PSB3b3Jkcy5zaXplKCkgLSAxKSB7Ci0gICAgICB3b3JkX2xp
c3QgPDwgImFuZCAiOwotICAgIH0KLSAgICB3b3JkX2xpc3QgPDwgIiciIDw8IHdvcmRzW2ldIDw8
ICInIjsKLSAgfQotICByZXR1cm4gd29yZF9saXN0LkdldFN0cmluZygpOwotfQotCi1ib29sIFZh
bGlkYXRlVGVzdFByb3BlcnR5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgcHJvcGVydHlfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKLSAgaWYgKHN0ZDo6ZmluZChyZXNlcnZlZF9uYW1lcy5i
ZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQoKSwgcHJvcGVydHlfbmFtZSkgIT0KLSAgICAgICAg
ICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlJlc2VydmVk
IGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5KCk6ICIgPDwgcHJvcGVydHlfbmFtZQotICAgICAg
ICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3JtYXRXb3JkTGlzdChyZXNlcnZlZF9uYW1lcykKLSAg
ICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJlc2VydmVkIGJ5ICIgPDwgR1RFU1RfTkFNRV8gPDwg
IikiOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQWRk
cyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBvZiB0aGUgZWxl
bWVudCBuYW1lZAotLy8geG1sX2VsZW1lbnQuICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5
IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBz
dGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICByZXR1cm4gVmFs
aWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3RfcHJvcGVydHkua2V5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2V0UmVzZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCh4bWxf
ZWxlbWVudCkpOwotfQotCi0vLyBDbGVhcnMgdGhlIG9iamVjdC4KLXZvaWQgVGVzdFJlc3VsdDo6
Q2xlYXIoKSB7Ci0gIHRlc3RfcGFydF9yZXN1bHRzXy5jbGVhcigpOwotICB0ZXN0X3Byb3BlcnRp
ZXNfLmNsZWFyKCk7Ci0gIGRlYXRoX3Rlc3RfY291bnRfID0gMDsKLSAgZWxhcHNlZF90aW1lXyA9
IDA7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgZmFpbGVkLgotYm9vbCBUZXN0
UmVzdWx0OjpGYWlsZWQoKSBjb25zdCB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxfcGFy
dF9jb3VudCgpOyArK2kpIHsKLSAgICBpZiAoR2V0VGVzdFBhcnRSZXN1bHQoaSkuZmFpbGVkKCkp
Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBmYXRhbGx5IGZhaWxlZC4KLXN0YXRpYyBib29sIFRl
c3RQYXJ0RmF0YWxseUZhaWxlZChjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIHJl
dHVybiByZXN1bHQuZmF0YWxseV9mYWlsZWQoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGUgdGVzdCBmYXRhbGx5IGZhaWxlZC4KLWJvb2wgVGVzdFJlc3VsdDo6SGFzRmF0YWxGYWlsdXJl
KCkgY29uc3QgewotICByZXR1cm4gQ291bnRJZih0ZXN0X3BhcnRfcmVzdWx0c18sIFRlc3RQYXJ0
RmF0YWxseUZhaWxlZCkgPiAwOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBh
cnQgbm9uLWZhdGFsbHkgZmFpbGVkLgotc3RhdGljIGJvb2wgVGVzdFBhcnROb25mYXRhbGx5RmFp
bGVkKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIHsKLSAgcmV0dXJuIHJlc3VsdC5ub25m
YXRhbGx5X2ZhaWxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGhhcyBh
IG5vbi1mYXRhbCBmYWlsdXJlLgotYm9vbCBUZXN0UmVzdWx0OjpIYXNOb25mYXRhbEZhaWx1cmUo
KSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElmKHRlc3RfcGFydF9yZXN1bHRzXywgVGVzdFBhcnRO
b25mYXRhbGx5RmFpbGVkKSA+IDA7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVz
dCBwYXJ0cy4gIFRoaXMgaXMgdGhlIHN1bSBvZiB0aGUgbnVtYmVyCi0vLyBvZiBzdWNjZXNzZnVs
IHRlc3QgcGFydHMgYW5kIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3QgcGFydHMuCi1pbnQgVGVz
dFJlc3VsdDo6dG90YWxfcGFydF9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4odGVzdF9wYXJ0X3Jlc3VsdHNfLnNpemUoKSk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIG51
bWJlciBvZiB0aGUgdGVzdCBwcm9wZXJ0aWVzLgotaW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVy
dHlfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHRlc3RfcHJvcGVy
dGllc18uc2l6ZSgpKTsKLX0KLQotLy8gY2xhc3MgVGVzdAotCi0vLyBDcmVhdGVzIGEgVGVzdCBv
YmplY3QuCi0KLS8vIFRoZSBjJ3RvciBzYXZlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4KLVRl
c3Q6OlRlc3QoKQotICAgIDogZ3Rlc3RfZmxhZ19zYXZlcl8obmV3IEdURVNUX0ZMQUdfU0FWRVJf
KSB7Ci19Ci0KLS8vIFRoZSBkJ3RvciByZXN0b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4g
IFRoZSBhY3R1YWwgd29yayBpcwotLy8gZG9uZSBieSB0aGUgZCd0b3Igb2YgdGhlIGd0ZXN0X2Zs
YWdfc2F2ZXJfIGZpZWxkLCBhbmQgdGh1cyBub3QKLS8vIHZpc2libGUgaGVyZS4KLVRlc3Q6On5U
ZXN0KCkgewotfQotCi0vLyBTZXRzIHVwIHRoZSB0ZXN0IGZpeHR1cmUuCi0vLwotLy8gQSBzdWIt
Y2xhc3MgbWF5IG92ZXJyaWRlIHRoaXMuCi12b2lkIFRlc3Q6OlNldFVwKCkgewotfQotCi0vLyBU
ZWFycyBkb3duIHRoZSB0ZXN0IGZpeHR1cmUuCi0vLwotLy8gQSBzdWItY2xhc3MgbWF5IG92ZXJy
aWRlIHRoaXMuCi12b2lkIFRlc3Q6OlRlYXJEb3duKCkgewotfQotCi0vLyBBbGxvd3MgdXNlciBz
dXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8gYmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4K
LXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQ
cm9wZXJ0eShrZXksIHZhbHVlKTsKLX0KLQotLy8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZh
bHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZvciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJl
Y29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGludCB2YWx1ZSkgewotICBNZXNz
YWdlIHZhbHVlX21lc3NhZ2U7Ci0gIHZhbHVlX21lc3NhZ2UgPDwgdmFsdWU7Ci0gIFJlY29yZFBy
b3BlcnR5KGtleSwgdmFsdWVfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQotbmFt
ZXNwYWNlIGludGVybmFsIHsKLQotdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24o
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewotICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRUZXN0IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8K
LSAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCi0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRU
ZXN0UGFydFJlc3VsdCgKLSAgICAgIHJlc3VsdF90eXBlLAotICAgICAgTlVMTCwgIC8vIE5vIGlu
Zm8gYWJvdXQgdGhlIHNvdXJjZSBmaWxlIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuCi0g
ICAgICAtMSwgICAgLy8gV2UgaGF2ZSBubyBpbmZvIG9uIHdoaWNoIGxpbmUgY2F1c2VkIHRoZSBl
eGNlcHRpb24uCi0gICAgICBtZXNzYWdlLAotICAgICAgIiIpOyAgIC8vIE5vIHN0YWNrIHRyYWNl
LCBlaXRoZXIuCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBHb29nbGUgVGVz
dCByZXF1aXJlcyBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIHRvIHVzZSB0aGUgc2Ft
ZSB0ZXN0Ci0vLyBmaXh0dXJlIGNsYXNzLiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGN1
cnJlbnQgdGVzdCBoYXMgdGhlCi0vLyBzYW1lIGZpeHR1cmUgY2xhc3MgYXMgdGhlIGZpcnN0IHRl
c3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLiAgSWYKLS8vIHllcywgaXQgcmV0dXJucyB0cnVl
OyBvdGhlcndpc2UgaXQgZ2VuZXJhdGVzIGEgR29vZ2xlIFRlc3QgZmFpbHVyZSBhbmQKLS8vIHJl
dHVybnMgZmFsc2UuCi1ib29sIFRlc3Q6Okhhc1NhbWVGaXh0dXJlQ2xhc3MoKSB7Ci0gIGludGVy
bmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBs
KCk7Ci0gIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBpbXBsLT5jdXJyZW50X3Rl
c3RfY2FzZSgpOwotCi0gIC8vIEluZm8gYWJvdXQgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJl
bnQgdGVzdCBjYXNlLgotICBjb25zdCBUZXN0SW5mbyogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0g
dGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpWzBdOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlk
IGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwot
ICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90ZXN0X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5h
bWUoKTsKLQotICAvLyBJbmZvIGFib3V0IHRoZSBjdXJyZW50IHRlc3QuCi0gIGNvbnN0IFRlc3RJ
bmZvKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0g
IGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhpc19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8t
PmZpeHR1cmVfY2xhc3NfaWRfOwotICBjb25zdCBjaGFyKiBjb25zdCB0aGlzX3Rlc3RfbmFtZSA9
IHRoaXNfdGVzdF9pbmZvLT5uYW1lKCk7Ci0KLSAgaWYgKHRoaXNfZml4dHVyZV9pZCAhPSBmaXJz
dF9maXh0dXJlX2lkKSB7Ci0gICAgLy8gSXMgdGhlIGZpcnN0IHRlc3QgZGVmaW5lZCB1c2luZyBU
RVNUPwotICAgIGNvbnN0IGJvb2wgZmlyc3RfaXNfVEVTVCA9IGZpcnN0X2ZpeHR1cmVfaWQgPT0g
aW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsKLSAgICAvLyBJcyB0aGlzIHRlc3QgZGVmaW5lZCB1
c2luZyBURVNUPwotICAgIGNvbnN0IGJvb2wgdGhpc19pc19URVNUID0gdGhpc19maXh0dXJlX2lk
ID09IGludGVybmFsOjpHZXRUZXN0VHlwZUlkKCk7Ci0KLSAgICBpZiAoZmlyc3RfaXNfVEVTVCB8
fCB0aGlzX2lzX1RFU1QpIHsKLSAgICAgIC8vIEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVhciBp
biBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMgaW5jb3JyZWN0LgotICAgICAgLy8gVGVsbCB0aGUg
dXNlciBob3cgdG8gZml4IHRoaXMuCi0KLSAgICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRF
U1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNUX0YuICBOb3RlCi0gICAgICAvLyB0aGF0IGZpcnN0
X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBjYW5ub3QgYm90aCBiZSB0cnVlLCBhcwotICAgICAg
Ly8gdGhlIGZpeHR1cmUgSURzIGFyZSBkaWZmZXJlbnQgZm9yIHRoZSB0d28gdGVzdHMuCi0gICAg
ICBjb25zdCBjaGFyKiBjb25zdCBURVNUX25hbWUgPQotICAgICAgICAgIGZpcnN0X2lzX1RFU1Qg
PyBmaXJzdF90ZXN0X25hbWUgOiB0aGlzX3Rlc3RfbmFtZTsKLSAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IFRFU1RfRl9uYW1lID0KLSAgICAgICAgICBmaXJzdF9pc19URVNUID8gdGhpc190ZXN0X25h
bWUgOiBmaXJzdF90ZXN0X25hbWU7Ci0KLSAgICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgICA8
PCAiQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0
IGZpeHR1cmVcbiIKLSAgICAgICAgICA8PCAiY2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRF
U1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzXG4iCi0gICAgICAgICAgPDwgImlsbGVnYWwuICBJ
biB0ZXN0IGNhc2UgIiA8PCB0aGlzX3Rlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKQotICAgICAg
ICAgIDw8ICIsXG4iCi0gICAgICAgICAgPDwgInRlc3QgIiA8PCBURVNUX0ZfbmFtZSA8PCAiIGlz
IGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dFxuIgotICAgICAgICAgIDw8ICJ0ZXN0ICIgPDwgVEVT
VF9uYW1lIDw8ICIgaXMgZGVmaW5lZCB1c2luZyBURVNULiAgWW91IHByb2JhYmx5XG4iCi0gICAg
ICAgICAgPDwgIndhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRv
IGFub3RoZXIgdGVzdFxuIgotICAgICAgICAgIDw8ICJjYXNlLiI7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIC8vIFR3byBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFwcGVhciBpbiB0
d28gZGlmZmVyZW50Ci0gICAgICAvLyBuYW1lc3BhY2VzLCB3aGljaCBpcyBub3QgYWxsb3dlZC4g
VGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCi0gICAgICBBRERfRkFJTFVSRSgpCi0gICAg
ICAgICAgPDwgIkFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNh
bWUgdGVzdCBmaXh0dXJlXG4iCi0gICAgICAgICAgPDwgImNsYXNzLiAgSG93ZXZlciwgaW4gdGVz
dCBjYXNlICIKLSAgICAgICAgICA8PCB0aGlzX3Rlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSA8
PCAiLFxuIgotICAgICAgICAgIDw8ICJ5b3UgZGVmaW5lZCB0ZXN0ICIgPDwgZmlyc3RfdGVzdF9u
YW1lCi0gICAgICAgICAgPDwgIiBhbmQgdGVzdCAiIDw8IHRoaXNfdGVzdF9uYW1lIDw8ICJcbiIK
LSAgICAgICAgICA8PCAidXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4g
IFRoaXMgY2FuIGhhcHBlbiBpZlxuIgotICAgICAgICAgIDw8ICJ0aGUgdHdvIGNsYXNzZXMgYXJl
IGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRpb25cbiIKLSAgICAgICAgICA8
PCAidW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVu
YW1lIG9uZVxuIgotICAgICAgICAgIDw8ICJvZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3Rz
IGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuIjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
ICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU0VICi0KLS8vIEFkZHMg
YW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFsIGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4g
IFRoaXMKLS8vIGZ1bmN0aW9uIHJldHVybnMgaXRzIHJlc3VsdCB2aWEgYW4gb3V0cHV0IHBhcmFt
ZXRlciBwb2ludGVyIGJlY2F1c2UgVkMrKwotLy8gcHJvaGliaXRzIGNyZWF0aW9uIG9mIG9iamVj
dHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMKLS8vIHVzaW5nIF9fdHJ5
IChzZWUgZXJyb3IgQzI3MTIpLgotc3RhdGljIHN0ZDo6c3RyaW5nKiBGb3JtYXRTZWhFeGNlcHRp
b25NZXNzYWdlKERXT1JEIGV4Y2VwdGlvbl9jb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2Ug
bWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAiU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgiIDw8IHN0
ZDo6c2V0YmFzZSgxNikgPDwKLSAgICBleGNlcHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTAp
IDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRpb24gPDwgIi4iOwotCi0gIHJldHVybiBuZXcgc3Rk
OjpzdHJpbmcobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1NFSAotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMK
LQotLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRocm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3Vy
cmVudCB0ZXN0Lgotc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2Uo
Y29uc3QgY2hhciogZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbikgewotICBNZXNzYWdlIG1lc3NhZ2U7
Ci0gIGlmIChkZXNjcmlwdGlvbiAhPSBOVUxMKSB7Ci0gICAgbWVzc2FnZSA8PCAiQysrIGV4Y2Vw
dGlvbiB3aXRoIGRlc2NyaXB0aW9uIFwiIiA8PCBkZXNjcmlwdGlvbiA8PCAiXCIiOwotICB9IGVs
c2UgewotICAgIG1lc3NhZ2UgPDwgIlVua25vd24gQysrIGV4Y2VwdGlvbiI7Ci0gIH0KLSAgbWVz
c2FnZSA8PCAiIHRocm93biBpbiAiIDw8IGxvY2F0aW9uIDw8ICIuIjsKLQotICByZXR1cm4gbWVz
c2FnZS5HZXRTdHJpbmcoKTsKLX0KLQotc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRS
ZXN1bHRUb1N0cmluZygKLSAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3Vs
dCk7Ci0KLUdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2Vw
dGlvbigKLSAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSkKLSAgICA6IDo6c3RkOjpy
dW50aW1lX2Vycm9yKFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigp
KSB7fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFdlIHB1dCB0aGVz
ZSBoZWxwZXIgZnVuY3Rpb25zIGluIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxD
Ci0vLyBjb21waWxlciByZWplY3RzIHRoZSBjb2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0
aWMuCi0KLS8vIFJ1bnMgdGhlIGdpdmVuIG1ldGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9u
cyBpdCB0aHJvd3MsIHdoZW4KLS8vIFNFSCBpcyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFs
dWUgZm9yIHR5cGUgUmVzdWx0IGluIGNhc2Ugb2YgYW4KLS8vIFNFSCBleGNlcHRpb24uICAoTWlj
cm9zb2Z0IGNvbXBpbGVycyBjYW5ub3QgaGFuZGxlIFNFSCBhbmQgQysrCi0vLyBleGNlcHRpb25z
IGluIHRoZSBzYW1lIGZ1bmN0aW9uLiAgVGhlcmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUK
LS8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGhhbmRsaW5nIFNFSCBleGNlcHRpb25zLikKLXRlbXBs
YXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+Ci1SZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9u
c0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2Qp
KCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0jaWYgR1RFU1RfSEFTX1NFSAotICBfX3RyeSB7
Ci0gICAgcmV0dXJuIChvYmplY3QtPiptZXRob2QpKCk7Ci0gIH0gX19leGNlcHQgKGludGVybmFs
OjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hvdWxkUHJvY2Vzc1NFSCggIC8vIE5PTElOVAotICAg
ICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewotICAgIC8vIFdlIGNyZWF0ZSB0aGUgZXhjZXB0aW9u
IG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVzZSBWQysrIHByb2hpYml0cwotICAgIC8vIGNyZWF0
aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMgdXNp
bmcgX190cnkKLSAgICAvLyAoc2VlIGVycm9yIEMyNzEyKS4KLSAgICBzdGQ6OnN0cmluZyogZXhj
ZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKAotICAgICAgICBHZXRF
eGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsKLSAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUlu
VW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbl9tZXNzYWdlKTsK
LSAgICBkZWxldGUgZXhjZXB0aW9uX21lc3NhZ2U7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJl
c3VsdD4oMCk7Ci0gIH0KLSNlbHNlCi0gICh2b2lkKWxvY2F0aW9uOwotICByZXR1cm4gKG9iamVj
dC0+Km1ldGhvZCkoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAotfQotCi0vLyBSdW5zIHRo
ZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMgYW5kIHJlcG9ydHMgQysrIGFuZC9vciBTRUgtc3R5
bGUKLS8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkgYXJlIHN1cHBvcnRlZDsgcmV0dXJucyB0aGUgMC12
YWx1ZSBmb3IgdHlwZQotLy8gUmVzdWx0IGluIGNhc2Ugb2YgYW4gU0VIIGV4Y2VwdGlvbi4KLXRl
bXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1bHQ+Ci1SZXN1bHQgSGFuZGxlRXhjZXB0aW9u
c0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAgVCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2Qp
KCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIC8vIE5PVEU6IFRoZSB1c2VyIGNvZGUgY2Fu
IGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdvb2dsZSBUZXN0IGhhbmRsZXMKLSAgLy8gZXhjZXB0
aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyksIGJ1dCBvbmx5IGJl
Zm9yZQotICAvLyBSVU5fQUxMX1RFU1RTKCkgc3RhcnRzLiBJdCBpcyB0ZWNobmljYWxseSBwb3Nz
aWJsZSB0byBjaGVjayB0aGUgZmxhZwotICAvLyBhZnRlciB0aGUgZXhjZXB0aW9uIGlzIGNhdWdo
dCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10aHJvdyB0aGUKLSAgLy8gZXhjZXB0aW9uIGJhc2Vk
IG9uIHRoZSBmbGFnJ3MgdmFsdWU6Ci0gIC8vCi0gIC8vIHRyeSB7Ci0gIC8vICAgLy8gUGVyZm9y
bSB0aGUgdGVzdCBtZXRob2QuCi0gIC8vIH0gY2F0Y2ggKC4uLikgewotICAvLyAgIGlmIChHVEVT
VF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQotICAvLyAgICAgLy8gUmVwb3J0IHRoZSBleGNlcHRp
b24gYXMgZmFpbHVyZS4KLSAgLy8gICBlbHNlCi0gIC8vICAgICB0aHJvdzsgIC8vIFJlLXRocm93
cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgotICAvLyB9Ci0gIC8vCi0gIC8vIEhvd2V2ZXIsIHRo
ZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0byBhbGxvdyB0aGUgcHJvZ3JhbSB0byBkcm9wIGlu
dG8KLSAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uIE9uIG1v
c3QgcGxhdGZvcm1zLCBvbmNlIHRoZQotICAvLyBjb250cm9sIGVudGVycyB0aGUgY2F0Y2ggYmxv
Y2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGluZm9ybWF0aW9uIGlzCi0gIC8vIGxvc3QgYW5kIHRo
ZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHByb2dyYW0gYXQgdGhlIHBvaW50IG9mIHRoZQotICAv
LyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9uIC0tIGluc3RlYWQgb2YgYXQgdGhlIHBvaW50IG9m
IHRoZSBvcmlnaW5hbAotICAvLyB0aHJvdyBzdGF0ZW1lbnQgaW4gdGhlIGNvZGUgdW5kZXIgdGVz
dC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVyZm9ybQotICAvLyB0aGUgY2hlY2sgZWFybHksIHNh
Y3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFmZmVjdCBHb29nbGUgVGVzdCdzCi0gIC8vIGV4Y2Vw
dGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9kIHdoZXJlIHRoZSBleGNlcHRpb24gaXMgdGhyb3du
LgotICBpZiAoaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5jYXRjaF9leGNlcHRpb25zKCkp
IHsKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotICAgIHRyeSB7Ci0gICAgICByZXR1cm4gSGFu
ZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0
aW9uKTsKLSAgICB9IGNhdGNoIChjb25zdCBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNl
cHRpb24mKSB7ICAvLyBOT0xJTlQKLSAgICAgIC8vIFRoaXMgZXhjZXB0aW9uIHR5cGUgY2FuIG9u
bHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdvb2dsZQotICAgICAgLy8gVGVzdCBhc3NlcnRpb24g
d2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRpbmcgYW5vdGhlciB0ZXN0aW5nCi0gICAgICAvLyBm
cmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZvcmUgd2UganVzdCByZS10aHJvdyBpdC4KLSAgICAg
IHRocm93OwotICAgIH0gY2F0Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7ICAvLyBOT0xJ
TlQKLSAgICAgIGludGVybmFsOjpSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCi0gICAg
ICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgRm9ybWF0Q3h4
RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwgbG9jYXRpb24pKTsKLSAgICB9IGNhdGNoICguLi4p
IHsgIC8vIE5PTElOVAotICAgICAgaW50ZXJuYWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2Nh
dGlvbigKLSAgICAgICAgICBUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAg
ICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdlKE5VTEwsIGxvY2F0aW9uKSk7Ci0gICAgfQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+KDApOwotI2Vsc2UKLSAgICByZXR1cm4gSGFuZGxl
U2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0aW9u
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSAgfSBlbHNlIHsKLSAgICByZXR1
cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKLQotLy8gUnVucyB0aGUgdGVzdCBhbmQgdXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCi12b2lk
IFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNTYW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsKLQot
ICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpOwotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQo
dGhpcywgJlRlc3Q6OlNldFVwLCAiU2V0VXAoKSIpOwotICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVz
dCBvbmx5IGlmIFNldFVwKCkgd2FzIHN1Y2Nlc3NmdWwuCi0gIGlmICghSGFzRmF0YWxGYWlsdXJl
KCkpIHsKLSAgICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVz
dCgpOwotICAgIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgK
LSAgICAgICAgdGhpcywgJlRlc3Q6OlRlc3RCb2R5LCAidGhlIHRlc3QgYm9keSIpOwotICB9Ci0K
LSAgLy8gSG93ZXZlciwgd2Ugd2FudCB0byBjbGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAg
SGVuY2Ugd2Ugd2lsbAotICAvLyBhbHdheXMgY2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVw
KCkgb3IgdGhlIHRlc3QgYm9keSBoYXMKLSAgLy8gZmFpbGVkLgotICBpbXBsLT5vc19zdGFja190
cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBpbnRlcm5hbDo6SGFuZGxlRXhj
ZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAgICB0aGlzLCAmVGVzdDo6VGVhckRvd24s
ICJUZWFyRG93bigpIik7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVz
dCBoYXMgYSBmYXRhbCBmYWlsdXJlLgotYm9vbCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSB7Ci0g
IHJldHVybiBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQo
KS0+SGFzRmF0YWxGYWlsdXJlKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJl
bnQgdGVzdCBoYXMgYSBub24tZmF0YWwgZmFpbHVyZS4KLWJvb2wgVGVzdDo6SGFzTm9uZmF0YWxG
YWlsdXJlKCkgewotICByZXR1cm4gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50
X3Rlc3RfcmVzdWx0KCktPgotICAgICAgSGFzTm9uZmF0YWxGYWlsdXJlKCk7Ci19Ci0KLS8vIGNs
YXNzIFRlc3RJbmZvCi0KLS8vIENvbnN0cnVjdHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFzc3Vt
ZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0IGZhY3RvcnkKLS8vIG9iamVjdC4KLVRlc3RJbmZvOjpU
ZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYgYV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
X3ZhbHVlX3BhcmFtLAotICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24g
YV9jb2RlX2xvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4
dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlC
YXNlKiBmYWN0b3J5KQotICAgIDogdGVzdF9jYXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAot
ICAgICAgbmFtZV8oYV9uYW1lKSwKLSAgICAgIHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5l
dyBzdGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0pIDogTlVMTCksCi0gICAgICB2YWx1ZV9wYXJhbV8o
YV92YWx1ZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAot
ICAgICAgbG9jYXRpb25fKGFfY29kZV9sb2NhdGlvbiksCi0gICAgICBmaXh0dXJlX2NsYXNzX2lk
XyhmaXh0dXJlX2NsYXNzX2lkKSwKLSAgICAgIHNob3VsZF9ydW5fKGZhbHNlKSwKLSAgICAgIGlz
X2Rpc2FibGVkXyhmYWxzZSksCi0gICAgICBtYXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgICAg
ZmFjdG9yeV8oZmFjdG9yeSksCi0gICAgICByZXN1bHRfKCkge30KLQotLy8gRGVzdHJ1Y3RzIGEg
VGVzdEluZm8gb2JqZWN0LgotVGVzdEluZm86On5UZXN0SW5mbygpIHsgZGVsZXRlIGZhY3Rvcnlf
OyB9Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIENyZWF0ZXMgYSBuZXcgVGVzdEluZm8g
b2JqZWN0IGFuZCByZWdpc3RlcnMgaXQgd2l0aCBHb29nbGUgVGVzdDsKLS8vIHJldHVybnMgdGhl
IGNyZWF0ZWQgb2JqZWN0LgotLy8KLS8vIEFyZ3VtZW50czoKLS8vCi0vLyAgIHRlc3RfY2FzZV9u
YW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotLy8gICBuYW1lOiAgICAgICAgICAgICBuYW1l
IG9mIHRoZSB0ZXN0Ci0vLyAgIHR5cGVfcGFyYW06ICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0
J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKLS8vICAgICAgICAgICAgICAgICAgICAgdGhp
cyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotLy8gICB2YWx1
ZV9wYXJhbTogICAgICB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXN0J3MgdmFsdWUgcGFy
YW1ldGVyLAotLy8gICAgICAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEg
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0LgotLy8gICBjb2RlX2xvY2F0aW9uOiAgICBjb2RlIGxv
Y2F0aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRlZmluZWQKLS8vICAgZml4dHVyZV9jbGFzc19pZDog
SUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwotLy8gICBzZXRfdXBfdGM6ICAgICAgICBwb2lu
dGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQotLy8gICB0ZWFy
X2Rvd25fdGM6ICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhl
IHRlc3QgY2FzZQotLy8gICBmYWN0b3J5OiAgICAgICAgICBwb2ludGVyIHRvIHRoZSBmYWN0b3J5
IHRoYXQgY3JlYXRlcyBhIHRlc3Qgb2JqZWN0LgotLy8gICAgICAgICAgICAgICAgICAgICBUaGUg
bmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFzc3VtZQotLy8gICAgICAgICAg
ICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgotVGVzdEluZm8qIE1h
a2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAot
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKLSAgICBj
b25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwKLSAgICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwK
LSAgICBUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICBTZXRVcFRlc3RDYXNlRnVuYyBzZXRf
dXBfdGMsCi0gICAgVGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAotICAgIFRlc3RG
YWN0b3J5QmFzZSogZmFjdG9yeSkgewotICBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAg
ICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwgbmFtZSwgdHlwZV9wYXJhbSwgdmFsdWVf
cGFyYW0sCi0gICAgICAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbiwgZml4dHVyZV9jbGFzc19p
ZCwgZmFjdG9yeSk7Ci0gIEdldFVuaXRUZXN0SW1wbCgpLT5BZGRUZXN0SW5mbyhzZXRfdXBfdGMs
IHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsKLSAgcmV0dXJuIHRlc3RfaW5mbzsKLX0KLQotI2lm
IEdURVNUX0hBU19QQVJBTV9URVNUCi12b2lkIFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29u
c3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pIHsKLSAgTWVzc2FnZSBlcnJvcnM7Ci0gIGVycm9y
cwotICAgICAgPDwgIkF0dGVtcHRlZCByZWRlZmluaXRpb24gb2YgdGVzdCBjYXNlICIgPDwgdGVz
dF9jYXNlX25hbWUgPDwgIi5cbiIKLSAgICAgIDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVz
dCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZVxuIgotICAgICAgPDwgImNsYXNz
LiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlICIgPDwgdGVzdF9jYXNlX25hbWUgPDwgIiwgeW91IHRy
aWVkXG4iCi0gICAgICA8PCAidG8gZGVmaW5lIGEgdGVzdCB1c2luZyBhIGZpeHR1cmUgY2xhc3Mg
ZGlmZmVyZW50IGZyb20gdGhlIG9uZVxuIgotICAgICAgPDwgInVzZWQgZWFybGllci4gVGhpcyBj
YW4gaGFwcGVuIGlmIHRoZSB0d28gZml4dHVyZSBjbGFzc2VzIGFyZVxuIgotICAgICAgPDwgImZy
b20gZGlmZmVyZW50IG5hbWVzcGFjZXMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4gWW91IHNob3Vs
ZFxuIgotICAgICAgPDwgInByb2JhYmx5IHJlbmFtZSBvbmUgb2YgdGhlIGNsYXNzZXMgdG8gcHV0
IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudFxuIgotICAgICAgPDwgInRlc3QgY2FzZXMuIjsKLQot
ICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwKLSAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24o
Y29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5n
KCkuY19zdHIoKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLX0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAotCi1uYW1lc3BhY2UgewotCi0vLyBBIHByZWRpY2F0ZSB0aGF0
IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEgVGVzdEluZm8gYWdhaW5zdCBhIGtub3duCi0vLyB2
YWx1ZS4KLS8vCi0vLyBUaGlzIGlzIHVzZWQgZm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUZXN0
Q2FzZSBjbGFzcyBvbmx5LiAgV2UgcHV0Ci0vLyBpdCBpbiB0aGUgYW5vbnltb3VzIG5hbWVzcGFj
ZSB0byBwcmV2ZW50IHBvbGx1dGluZyB0aGUgb3V0ZXIKLS8vIG5hbWVzcGFjZS4KLS8vCi0vLyBU
ZXN0TmFtZUlzIGlzIGNvcHlhYmxlLgotY2xhc3MgVGVzdE5hbWVJcyB7Ci0gcHVibGljOgotICAv
LyBDb25zdHJ1Y3Rvci4KLSAgLy8KLSAgLy8gVGVzdE5hbWVJcyBoYXMgTk8gZGVmYXVsdCBjb25z
dHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdE5hbWVJcyhjb25zdCBjaGFyKiBuYW1lKQotICAgICAg
OiBuYW1lXyhuYW1lKSB7fQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBv
ZiB0ZXN0X2luZm8gbWF0Y2hlcyBuYW1lXy4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJ
bmZvICogdGVzdF9pbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mbyAmJiB0ZXN0X2lu
Zm8tPm5hbWUoKSA9PSBuYW1lXzsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgbmFt
ZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8g
VGhpcyBtZXRob2QgZXhwYW5kcyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyByZWdpc3RlcmVkIHdp
dGggbWFjcm9zIFRFU1RfUAotLy8gYW5kIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGludG8gcmVn
dWxhciB0ZXN0cyBhbmQgcmVnaXN0ZXJzIHRob3NlLgotLy8gVGhpcyB3aWxsIGJlIGRvbmUganVz
dCBvbmNlIGR1cmluZyB0aGUgcHJvZ3JhbSBydW50aW1lLgotdm9pZCBVbml0VGVzdEltcGw6OlJl
Z2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkgewotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0g
IGlmICghcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXykgewotICAgIHBhcmFtZXRlcml6
ZWRfdGVzdF9yZWdpc3RyeV8uUmVnaXN0ZXJUZXN0cygpOwotICAgIHBhcmFtZXRlcml6ZWRfdGVz
dHNfcmVnaXN0ZXJlZF8gPSB0cnVlOwotICB9Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCi0KLS8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LCBydW5zIGl0LCByZWNvcmRz
IGl0cyByZXN1bHQsIGFuZCB0aGVuCi0vLyBkZWxldGVzIGl0Lgotdm9pZCBUZXN0SW5mbzo6UnVu
KCkgewotICBpZiAoIXNob3VsZF9ydW5fKSByZXR1cm47Ci0KLSAgLy8gVGVsbHMgVW5pdFRlc3Qg
d2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQuCi0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNv
bnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJy
ZW50X3Rlc3RfaW5mbyh0aGlzKTsKLQotICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBV
bml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKLQotICAvLyBO
b3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2ZW50IGxpc3RlbmVycyB0aGF0IGEgdGVzdCBpcyBhYm91
dCB0byBzdGFydC4KLSAgcmVwZWF0ZXItPk9uVGVzdFN0YXJ0KCp0aGlzKTsKLQotICBjb25zdCBU
aW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCk7Ci0KLSAgaW1w
bC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLQotICAvLyBD
cmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAgVGVzdCogY29uc3QgdGVzdCA9IGludGVybmFsOjpI
YW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKLSAgICAgIGZhY3RvcnlfLCAmaW50
ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZTo6Q3JlYXRlVGVzdCwKLSAgICAgICJ0aGUgdGVzdCBmaXh0
dXJlJ3MgY29uc3RydWN0b3IiKTsKLQotICAvLyBSdW5zIHRoZSB0ZXN0IG9ubHkgaWYgdGhlIHRl
c3Qgb2JqZWN0IHdhcyBjcmVhdGVkIGFuZCBpdHMKLSAgLy8gY29uc3RydWN0b3IgZGlkbid0IGdl
bmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4KLSAgaWYgKCh0ZXN0ICE9IE5VTEwpICYmICFUZXN0OjpI
YXNGYXRhbEZhaWx1cmUoKSkgewotICAgIC8vIFRoaXMgZG9lc24ndCB0aHJvdyBhcyBhbGwgdXNl
ciBjb2RlIHRoYXQgY2FuIHRocm93IGFyZSB3cmFwcGVkIGludG8KLSAgICAvLyBleGNlcHRpb24g
aGFuZGxpbmcgY29kZS4KLSAgICB0ZXN0LT5SdW4oKTsKLSAgfQotCi0gIC8vIERlbGV0ZXMgdGhl
IHRlc3Qgb2JqZWN0LgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZp
bmdHVGVzdCgpOwotICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0
ZWQoCi0gICAgICB0ZXN0LCAmVGVzdDo6RGVsZXRlU2VsZl8sICJ0aGUgdGVzdCBmaXh0dXJlJ3Mg
ZGVzdHJ1Y3RvciIpOwotCi0gIHJlc3VsdF8uc2V0X2VsYXBzZWRfdGltZShpbnRlcm5hbDo6R2V0
VGltZUluTWlsbGlzKCkgLSBzdGFydCk7Ci0KLSAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBl
dmVudCBsaXN0ZW5lciB0aGF0IGEgdGVzdCBoYXMganVzdCBmaW5pc2hlZC4KLSAgcmVwZWF0ZXIt
Pk9uVGVzdEVuZCgqdGhpcyk7Ci0KLSAgLy8gVGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lh
dGluZyBhc3NlcnRpb24gcmVzdWx0cyB0byB0aGlzCi0gIC8vIHRlc3QuCi0gIGltcGwtPnNldF9j
dXJyZW50X3Rlc3RfaW5mbyhOVUxMKTsKLX0KLQotLy8gY2xhc3MgVGVzdENhc2UKLQotLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi1pbnQg
VGVzdENhc2U6OnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIENvdW50
SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UGFzc2VkKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVy
IG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLWludCBUZXN0Q2FzZTo6ZmFpbGVk
X3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0Xywg
VGVzdEZhaWxlZCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0
aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi1pbnQgVGVzdENhc2U6OnJl
cG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIENvdW50SWYo
dGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0YWJsZURpc2FibGVkKTsKLX0KLQotLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgotaW50IFRlc3RD
YXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gQ291bnRJZih0ZXN0
X2luZm9fbGlzdF8sIFRlc3REaXNhYmxlZCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiB0
ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgotaW50IFRlc3RDYXNlOjpyZXBv
cnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19s
aXN0XywgVGVzdFJlcG9ydGFibGUpOwotfQotCi0vLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBp
biB0aGlzIHRlc3QgY2FzZSB0aGF0IHNob3VsZCBydW4uCi1pbnQgVGVzdENhc2U6OnRlc3RfdG9f
cnVuX2NvdW50KCkgY29uc3QgewotICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFNo
b3VsZFJ1blRlc3QpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgotaW50
IFRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50Pih0ZXN0X2luZm9fbGlzdF8uc2l6ZSgpKTsKLX0KLQotLy8gQ3JlYXRlcyBhIFRlc3RD
YXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuCi0vLwotLy8gQXJndW1lbnRzOgotLy8KLS8vICAgbmFt
ZTogICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKLS8vICAgYV90eXBlX3BhcmFtOiB0aGUg
bmFtZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKLS8vICAg
ICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZS4KLS8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0
aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQotLy8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8g
dGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVz
dENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBjb25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCi0gICAg
ICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAotICAgICAg
ICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykKLSAg
ICA6IG5hbWVfKGFfbmFtZSksCi0gICAgICB0eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcg
c3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6IE5VTEwpLAotICAgICAgc2V0X3VwX3RjXyhzZXRf
dXBfdGMpLAotICAgICAgdGVhcl9kb3duX3RjXyh0ZWFyX2Rvd25fdGMpLAotICAgICAgc2hvdWxk
X3J1bl8oZmFsc2UpLAotICAgICAgZWxhcHNlZF90aW1lXygwKSB7Ci19Ci0KLS8vIERlc3RydWN0
b3Igb2YgVGVzdENhc2UuCi1UZXN0Q2FzZTo6flRlc3RDYXNlKCkgewotICAvLyBEZWxldGVzIGV2
ZXJ5IFRlc3QgaW4gdGhlIGNvbGxlY3Rpb24uCi0gIEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBp
bnRlcm5hbDo6RGVsZXRlPFRlc3RJbmZvPik7Ci19Ci0KLS8vIFJldHVybnMgdGhlIGktdGggdGVz
dCBhbW9uZyBhbGwgdGhlIHRlc3RzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLS8vIHRvdGFsX3Rl
c3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4K
LWNvbnN0IFRlc3RJbmZvKiBUZXN0Q2FzZTo6R2V0VGVzdEluZm8oaW50IGkpIGNvbnN0IHsKLSAg
Y29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVudE9yKHRlc3RfaW5kaWNlc18sIGksIC0xKTsKLSAg
cmV0dXJuIGluZGV4IDwgMCA/IE5VTEwgOiB0ZXN0X2luZm9fbGlzdF9baW5kZXhdOwotfQotCi0v
LyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgYW1vbmcgYWxsIHRoZSB0ZXN0cy4gaSBjYW4gcmFuZ2Ug
ZnJvbSAwIHRvCi0vLyB0b3RhbF90ZXN0X2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0
IHJhbmdlLCByZXR1cm5zIE5VTEwuCi1UZXN0SW5mbyogVGVzdENhc2U6OkdldE11dGFibGVUZXN0
SW5mbyhpbnQgaSkgewotICBjb25zdCBpbnQgaW5kZXggPSBHZXRFbGVtZW50T3IodGVzdF9pbmRp
Y2VzXywgaSwgLTEpOwotICByZXR1cm4gaW5kZXggPCAwID8gTlVMTCA6IHRlc3RfaW5mb19saXN0
X1tpbmRleF07Ci19Ci0KLS8vIEFkZHMgYSB0ZXN0IHRvIHRoaXMgdGVzdCBjYXNlLiAgV2lsbCBk
ZWxldGUgdGhlIHRlc3QgdXBvbgotLy8gZGVzdHJ1Y3Rpb24gb2YgdGhlIFRlc3RDYXNlIG9iamVj
dC4KLXZvaWQgVGVzdENhc2U6OkFkZFRlc3RJbmZvKFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0g
IHRlc3RfaW5mb19saXN0Xy5wdXNoX2JhY2sodGVzdF9pbmZvKTsKLSAgdGVzdF9pbmRpY2VzXy5w
dXNoX2JhY2soc3RhdGljX2Nhc3Q8aW50Pih0ZXN0X2luZGljZXNfLnNpemUoKSkpOwotfQotCi0v
LyBSdW5zIGV2ZXJ5IHRlc3QgaW4gdGhpcyBUZXN0Q2FzZS4KLXZvaWQgVGVzdENhc2U6OlJ1bigp
IHsKLSAgaWYgKCFzaG91bGRfcnVuXykgcmV0dXJuOwotCi0gIGludGVybmFsOjpVbml0VGVzdElt
cGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNl
dF9jdXJyZW50X3Rlc3RfY2FzZSh0aGlzKTsKLQotICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0
ZXIgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKLQot
ICByZXBlYXRlci0+T25UZXN0Q2FzZVN0YXJ0KCp0aGlzKTsKLSAgaW1wbC0+b3Nfc3RhY2tfdHJh
Y2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rlc3QoKTsKLSAgaW50ZXJuYWw6OkhhbmRsZUV4Y2Vw
dGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAotICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5TZXRV
cFRlc3RDYXNlLCAiU2V0VXBUZXN0Q2FzZSgpIik7Ci0KLSAgY29uc3QgaW50ZXJuYWw6OlRpbWVJ
bk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKTsKLSAgZm9yIChpbnQg
aSA9IDA7IGkgPCB0b3RhbF90ZXN0X2NvdW50KCk7IGkrKykgewotICAgIEdldE11dGFibGVUZXN0
SW5mbyhpKS0+UnVuKCk7Ci0gIH0KLSAgZWxhcHNlZF90aW1lXyA9IGludGVybmFsOjpHZXRUaW1l
SW5NaWxsaXMoKSAtIHN0YXJ0OwotCi0gIGltcGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5V
cG9uTGVhdmluZ0dUZXN0KCk7Ci0gIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJ
ZlN1cHBvcnRlZCgKLSAgICAgIHRoaXMsICZUZXN0Q2FzZTo6UnVuVGVhckRvd25UZXN0Q2FzZSwg
IlRlYXJEb3duVGVzdENhc2UoKSIpOwotCi0gIHJlcGVhdGVyLT5PblRlc3RDYXNlRW5kKCp0aGlz
KTsKLSAgaW1wbC0+c2V0X2N1cnJlbnRfdGVzdF9jYXNlKE5VTEwpOwotfQotCi0vLyBDbGVhcnMg
dGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlLgotdm9pZCBUZXN0Q2Fz
ZTo6Q2xlYXJSZXN1bHQoKSB7Ci0gIGFkX2hvY190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKLSAgRm9y
RWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJbmZvOjpDbGVhclRlc3RSZXN1bHQpOwotfQotCi0v
LyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi12b2lkIFRlc3RDYXNlOjpT
aHVmZmxlVGVzdHMoaW50ZXJuYWw6OlJhbmRvbSogcmFuZG9tKSB7Ci0gIFNodWZmbGUocmFuZG9t
LCAmdGVzdF9pbmRpY2VzXyk7Ci19Ci0KLS8vIFJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIHRvIGJl
Zm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KLXZvaWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkg
ewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfaW5kaWNlc18uc2l6ZSgpOyBpKyspIHsK
LSAgICB0ZXN0X2luZGljZXNfW2ldID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKLSAgfQotfQotCi0v
LyBGb3JtYXRzIGEgY291bnRhYmxlIG5vdW4uICBEZXBlbmRpbmcgb24gaXRzIHF1YW50aXR5LCBl
aXRoZXIgdGhlCi0vLyBzaW5ndWxhciBmb3JtIG9yIHRoZSBwbHVyYWwgZm9ybSBpcyB1c2VkLiBl
LmcuCi0vLwotLy8gRm9ybWF0Q291bnRhYmxlTm91bigxLCAiZm9ybXVsYSIsICJmb3JtdWxpIikg
cmV0dXJucyAiMSBmb3JtdWxhIi4KLS8vIEZvcm1hdENvdW50YWJsZU5vdW4oNSwgImJvb2siLCAi
Ym9va3MiKSByZXR1cm5zICI1IGJvb2tzIi4KLXN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRDb3Vu
dGFibGVOb3VuKGludCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9mb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBsdXJhbF9mb3JtKSB7Ci0gIHJldHVybiBpbnRl
cm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGNvdW50KSArICIgIiArCi0gICAgICAoY291bnQgPT0g
MSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxfZm9ybSk7Ci19Ci0KLS8vIEZvcm1hdHMgdGhlIGNv
dW50IG9mIHRlc3RzLgotc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDb3VudChpbnQgdGVz
dF9jb3VudCkgewotICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2NvdW50LCAidGVz
dCIsICJ0ZXN0cyIpOwotfQotCi0vLyBGb3JtYXRzIHRoZSBjb3VudCBvZiB0ZXN0IGNhc2VzLgot
c3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRlc3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3Vu
dCkgewotICByZXR1cm4gRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0
IGNhc2UiLCAidGVzdCBjYXNlcyIpOwotfQotCi0vLyBDb252ZXJ0cyBhIFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIGVudW0gdG8gaHVtYW4tZnJpZW5kbHkgc3RyaW5nCi0vLyByZXByZXNlbnRhdGlvbi4g
IEJvdGgga05vbkZhdGFsRmFpbHVyZSBhbmQga0ZhdGFsRmFpbHVyZSBhcmUgdHJhbnNsYXRlZAot
Ly8gdG8gIkZhaWx1cmUiLCBhcyB0aGUgdXNlciB1c3VhbGx5IGRvZXNuJ3QgY2FyZSBhYm91dCB0
aGUgZGlmZmVyZW5jZQotLy8gYmV0d2VlbiB0aGUgdHdvIHdoZW4gdmlld2luZyB0aGUgdGVzdCBy
ZXN1bHQuCi1zdGF0aWMgY29uc3QgY2hhciAqIFRlc3RQYXJ0UmVzdWx0VHlwZVRvU3RyaW5nKFRl
c3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUpIHsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBU
ZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3M6Ci0gICAgICByZXR1cm4gIlN1Y2Nlc3MiOwotCi0gICAg
Y2FzZSBUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZToKLSAgICBjYXNlIFRlc3RQYXJ0
UmVzdWx0OjprRmF0YWxGYWlsdXJlOgotI2lmZGVmIF9NU0NfVkVSCi0gICAgICByZXR1cm4gImVy
cm9yOiAiOwotI2Vsc2UKLSAgICAgIHJldHVybiAiRmFpbHVyZVxuIjsKLSNlbmRpZgotICAgIGRl
ZmF1bHQ6Ci0gICAgICByZXR1cm4gIlVua25vd24gcmVzdWx0IHR5cGUiOwotICB9Ci19Ci0KLW5h
bWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGFuIHN0
ZDo6c3RyaW5nLgotc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmlu
ZygKLSAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICByZXR1
cm4gKE1lc3NhZ2UoKQotICAgICAgICAgIDw8IGludGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24o
dGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSkKLSAgICAgICAg
ICA8PCAiICIgPDwgVGVzdFBhcnRSZXN1bHRUeXBlVG9TdHJpbmcodGVzdF9wYXJ0X3Jlc3VsdC50
eXBlKCkpCi0gICAgICAgICAgPDwgdGVzdF9wYXJ0X3Jlc3VsdC5tZXNzYWdlKCkpLkdldFN0cmlu
ZygpOwotfQotCi0vLyBQcmludHMgYSBUZXN0UGFydFJlc3VsdC4KLXN0YXRpYyB2b2lkIFByaW50
VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcmIHJlc3VsdCA9Ci0gICAgICBQcmludFRlc3RQYXJ0UmVzdWx0
VG9TdHJpbmcodGVzdF9wYXJ0X3Jlc3VsdCk7Ci0gIHByaW50ZigiJXNcbiIsIHJlc3VsdC5jX3N0
cigpKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci0gIC8vIElmIHRoZSB0ZXN0IHByb2dyYW0gcnVucyBp
biBWaXN1YWwgU3R1ZGlvIG9yIGEgZGVidWdnZXIsIHRoZQotICAvLyBmb2xsb3dpbmcgc3RhdGVt
ZW50cyBhZGQgdGhlIHRlc3QgcGFydCByZXN1bHQgbWVzc2FnZSB0byB0aGUgT3V0cHV0Ci0gIC8v
IHdpbmRvdyBzdWNoIHRoYXQgdGhlIHVzZXIgY2FuIGRvdWJsZS1jbGljayBvbiBpdCB0byBqdW1w
IHRvIHRoZQotICAvLyBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlIGxvY2F0aW9uOyBvdGhlcndp
c2UgdGhleSBkbyBub3RoaW5nLgotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0gIC8vIFdlIGRvbid0IGNhbGwgT3V0cHV0RGVidWdTdHJpbmcqKCkgb24g
V2luZG93cyBNb2JpbGUsIGFzIHByaW50aW5nCi0gIC8vIHRvIHN0ZG91dCBpcyBkb25lIGJ5IE91
dHB1dERlYnVnU3RyaW5nKCkgdGhlcmUgYWxyZWFkeSAtIHdlIGRvbid0Ci0gIC8vIHdhbnQgdGhl
IHNhbWUgbWVzc2FnZSBwcmludGVkIHR3aWNlLgotICA6Ok91dHB1dERlYnVnU3RyaW5nQShyZXN1
bHQuY19zdHIoKSk7Ci0gIDo6T3V0cHV0RGVidWdTdHJpbmdBKCJcbiIpOwotI2VuZGlmCi19Ci0K
LS8vIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcgotCi1lbnVtIEdUZXN0Q29sb3Ig
ewotICBDT0xPUl9ERUZBVUxULAotICBDT0xPUl9SRUQsCi0gIENPTE9SX0dSRUVOLAotICBDT0xP
Ul9ZRUxMT1cKLX07Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRSAmJiBcCi0gICAgIUdURVNUX09TX1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJ
TkRPV1NfUlQKLQotLy8gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhlIGdp
dmVuIGNvbG9yLgotV09SRCBHZXRDb2xvckF0dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7Ci0g
IHN3aXRjaCAoY29sb3IpIHsKLSAgICBjYXNlIENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9V
TkRfUkVEOwotICAgIGNhc2UgQ09MT1JfR1JFRU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsK
LSAgICBjYXNlIENPTE9SX1lFTExPVzogcmV0dXJuIEZPUkVHUk9VTkRfUkVEIHwgRk9SRUdST1VO
RF9HUkVFTjsKLSAgICBkZWZhdWx0OiAgICAgICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotI2Vs
c2UKLQotLy8gUmV0dXJucyB0aGUgQU5TSSBjb2xvciBjb2RlIGZvciB0aGUgZ2l2ZW4gY29sb3Iu
ICBDT0xPUl9ERUZBVUxUIGlzCi0vLyBhbiBpbnZhbGlkIGlucHV0LgotY29uc3QgY2hhciogR2V0
QW5zaUNvbG9yQ29kZShHVGVzdENvbG9yIGNvbG9yKSB7Ci0gIHN3aXRjaCAoY29sb3IpIHsKLSAg
ICBjYXNlIENPTE9SX1JFRDogICAgIHJldHVybiAiMSI7Ci0gICAgY2FzZSBDT0xPUl9HUkVFTjog
ICByZXR1cm4gIjIiOwotICAgIGNhc2UgQ09MT1JfWUVMTE9XOiAgcmV0dXJuICIzIjsKLSAgICBk
ZWZhdWx0OiAgICAgICAgICAgIHJldHVybiBOVUxMOwotICB9OwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLS8vIFJldHVybnMg
dHJ1ZSBpZmYgR29vZ2xlIFRlc3Qgc2hvdWxkIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4KLWJv
b2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRvdXRfaXNfdHR5KSB7Ci0gIGNvbnN0IGNoYXIqIGNv
bnN0IGd0ZXN0X2NvbG9yID0gR1RFU1RfRkxBRyhjb2xvcikuY19zdHIoKTsKLQotICBpZiAoU3Ry
aW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0ZXN0X2NvbG9yLCAiYXV0byIpKSB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIC8vIE9uIFdpbmRvd3MgdGhlIFRFUk0gdmFyaWFi
bGUgaXMgdXN1YWxseSBub3Qgc2V0LCBidXQgdGhlCi0gICAgLy8gY29uc29sZSB0aGVyZSBkb2Vz
IHN1cHBvcnQgY29sb3JzLgotICAgIHJldHVybiBzdGRvdXRfaXNfdHR5OwotI2Vsc2UKLSAgICAv
LyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIHdlIHJlbHkgb24gdGhlIFRFUk0gdmFyaWFibGUu
Ci0gICAgY29uc3QgY2hhciogY29uc3QgdGVybSA9IHBvc2l4OjpHZXRFbnYoIlRFUk0iKTsKLSAg
ICBjb25zdCBib29sIHRlcm1fc3VwcG9ydHNfY29sb3IgPQotICAgICAgICBTdHJpbmc6OkNTdHJp
bmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwKLSAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KHRlcm0sICJ4dGVybS1jb2xvciIpIHx8Ci0gICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0
ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAotICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHMo
dGVybSwgInNjcmVlbiIpIHx8Ci0gICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
c2NyZWVuLTI1NmNvbG9yIikgfHwKLSAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0s
ICJ0bXV4IikgfHwKLSAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ0bXV4LTI1
NmNvbG9yIikgfHwKLSAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVu
aWNvZGUiKSB8fAotICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInJ4dnQtdW5p
Y29kZS0yNTZjb2xvciIpIHx8Ci0gICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAi
bGludXgiKSB8fAotICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgImN5Z3dpbiIp
OwotICAgIHJldHVybiBzdGRvdXRfaXNfdHR5ICYmIHRlcm1fc3VwcG9ydHNfY29sb3I7Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgfQotCi0gIHJldHVybiBTdHJpbmc6OkNhc2VJbnNl
bnNpdGl2ZUNTdHJpbmdFcXVhbHMoZ3Rlc3RfY29sb3IsICJ5ZXMiKSB8fAotICAgICAgU3RyaW5n
OjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGd0ZXN0X2NvbG9yLCAidHJ1ZSIpIHx8Ci0g
ICAgICBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoZ3Rlc3RfY29sb3IsICJ0
IikgfHwKLSAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyhndGVzdF9jb2xvciwgIjEiKTsKLSAg
Ly8gV2UgdGFrZSAieWVzIiwgInRydWUiLCAidCIsIGFuZCAiMSIgYXMgbWVhbmluZyAieWVzIi4g
IElmIHRoZQotICAvLyB2YWx1ZSBpcyBuZWl0aGVyIG9uZSBvZiB0aGVzZSBub3IgImF1dG8iLCB3
ZSB0cmVhdCBpdCBhcyAibm8iIHRvCi0gIC8vIGJlIGNvbnNlcnZhdGl2ZS4KLX0KLQotLy8gSGVs
cGVycyBmb3IgcHJpbnRpbmcgY29sb3JlZCBzdHJpbmdzIHRvIHN0ZG91dC4gTm90ZSB0aGF0IG9u
IFdpbmRvd3MsIHdlCi0vLyBjYW5ub3Qgc2ltcGx5IGVtaXQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFu
ZCBoYXZlIHRoZSB0ZXJtaW5hbCBjaGFuZ2UgY29sb3JzLgotLy8gVGhpcyByb3V0aW5lIG11c3Qg
YWN0dWFsbHkgZW1pdCB0aGUgY2hhcmFjdGVycyByYXRoZXIgdGhhbiByZXR1cm4gYSBzdHJpbmcK
LS8vIHRoYXQgd291bGQgYmUgY29sb3JlZCB3aGVuIHByaW50ZWQsIGFzIGNhbiBiZSBkb25lIG9u
IExpbnV4LgotR1RFU1RfQVRUUklCVVRFX1BSSU5URl8oMiwgMykKLXZvaWQgQ29sb3JlZFByaW50
ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBjaGFyKiBmbXQsIC4uLikgewotICB2YV9saXN0IGFy
Z3M7Ci0gIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklM
RSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdURVNUX09TX1pPUyB8fCBcCi0gICAgR1RFU1RfT1Nf
SU9TIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAotICBj
b25zdCBib29sIHVzZV9jb2xvciA9IEFsd2F5c0ZhbHNlKCk7Ci0jZWxzZQotICBzdGF0aWMgY29u
c3QgYm9vbCBpbl9jb2xvcl9tb2RlID0KLSAgICAgIFNob3VsZFVzZUNvbG9yKHBvc2l4OjpJc0FU
VFkocG9zaXg6OkZpbGVObyhzdGRvdXQpKSAhPSAwKTsKLSAgY29uc3QgYm9vbCB1c2VfY29sb3Ig
PSBpbl9jb2xvcl9tb2RlICYmIChjb2xvciAhPSBDT0xPUl9ERUZBVUxUKTsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwgR1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19a
T1MKLSAgLy8gVGhlICchPSAwJyBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSB0byBzYXRpc2Z5IE1T
VkMgNy4xLgotCi0gIGlmICghdXNlX2NvbG9yKSB7Ci0gICAgdnByaW50ZihmbXQsIGFyZ3MpOwot
ICAgIHZhX2VuZChhcmdzKTsKLSAgICByZXR1cm47Ci0gIH0KLQotI2lmIEdURVNUX09TX1dJTkRP
V1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYmIFwKLSAgICAhR1RFU1RfT1NfV0lORE9X
U19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAotICBjb25zdCBIQU5ETEUgc3Rkb3V0X2hh
bmRsZSA9IEdldFN0ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7Ci0KLSAgLy8gR2V0cyB0aGUg
Y3VycmVudCB0ZXh0IGNvbG9yLgotICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBidWZmZXJf
aW5mbzsKLSAgR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8oc3Rkb3V0X2hhbmRsZSwgJmJ1ZmZl
cl9pbmZvKTsKLSAgY29uc3QgV09SRCBvbGRfY29sb3JfYXR0cnMgPSBidWZmZXJfaW5mby53QXR0
cmlidXRlczsKLQotICAvLyBXZSBuZWVkIHRvIGZsdXNoIHRoZSBzdHJlYW0gYnVmZmVycyBpbnRv
IHRoZSBjb25zb2xlIGJlZm9yZSBlYWNoCi0gIC8vIFNldENvbnNvbGVUZXh0QXR0cmlidXRlIGNh
bGwgbGVzdCBpdCBhZmZlY3QgdGhlIHRleHQgdGhhdCBpcyBhbHJlYWR5Ci0gIC8vIHByaW50ZWQg
YnV0IGhhcyBub3QgeWV0IHJlYWNoZWQgdGhlIGNvbnNvbGUuCi0gIGZmbHVzaChzdGRvdXQpOwot
ICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShzdGRvdXRfaGFuZGxlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZXRDb2xvckF0dHJpYnV0ZShjb2xvcikgfCBGT1JFR1JPVU5EX0lOVEVOU0lU
WSk7Ci0gIHZwcmludGYoZm10LCBhcmdzKTsKLQotICBmZmx1c2goc3Rkb3V0KTsKLSAgLy8gUmVz
dG9yZXMgdGhlIHRleHQgY29sb3IuCi0gIFNldENvbnNvbGVUZXh0QXR0cmlidXRlKHN0ZG91dF9o
YW5kbGUsIG9sZF9jb2xvcl9hdHRycyk7Ci0jZWxzZQotICBwcmludGYoIlwwMzNbMDszJXNtIiwg
R2V0QW5zaUNvbG9yQ29kZShjb2xvcikpOwotICB2cHJpbnRmKGZtdCwgYXJncyk7Ci0gIHByaW50
ZigiXDAzM1ttIik7ICAvLyBSZXNldHMgdGhlIHRlcm1pbmFsIHRvIGRlZmF1bHQuCi0jZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIHZhX2Vu
ZChhcmdzKTsKLX0KLQotLy8gVGV4dCBwcmludGVkIGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRw
dXQgYW5kIC0tZ3VuaXRfbGlzdF90ZXN0cwotLy8gb3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBh
cmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVyIGZvciBhIHRlc3QuCi1zdGF0aWMgY29uc3QgY2hh
ciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBlUGFyYW0iOwotc3RhdGljIGNvbnN0IGNoYXIga1Zh
bHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFtKCkiOwotCi12b2lkIFByaW50RnVsbFRlc3RDb21t
ZW50SWZQcmVzZW50KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgY2hhciog
Y29uc3QgdHlwZV9wYXJhbSA9IHRlc3RfaW5mby50eXBlX3BhcmFtKCk7Ci0gIGNvbnN0IGNoYXIq
IGNvbnN0IHZhbHVlX3BhcmFtID0gdGVzdF9pbmZvLnZhbHVlX3BhcmFtKCk7Ci0KLSAgaWYgKHR5
cGVfcGFyYW0gIT0gTlVMTCB8fCB2YWx1ZV9wYXJhbSAhPSBOVUxMKSB7Ci0gICAgcHJpbnRmKCIs
IHdoZXJlICIpOwotICAgIGlmICh0eXBlX3BhcmFtICE9IE5VTEwpIHsKLSAgICAgIHByaW50Zigi
JXMgPSAlcyIsIGtUeXBlUGFyYW1MYWJlbCwgdHlwZV9wYXJhbSk7Ci0gICAgICBpZiAodmFsdWVf
cGFyYW0gIT0gTlVMTCkKLSAgICAgICAgcHJpbnRmKCIgYW5kICIpOwotICAgIH0KLSAgICBpZiAo
dmFsdWVfcGFyYW0gIT0gTlVMTCkgewotICAgICAgcHJpbnRmKCIlcyA9ICVzIiwga1ZhbHVlUGFy
YW1MYWJlbCwgdmFsdWVfcGFyYW0pOwotICAgIH0KLSAgfQotfQotCi0vLyBUaGlzIGNsYXNzIGlt
cGxlbWVudHMgdGhlIFRlc3RFdmVudExpc3RlbmVyIGludGVyZmFjZS4KLS8vCi0vLyBDbGFzcyBQ
cmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgaXMgY29weWFibGUuCi1jbGFzcyBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoK
LSAgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyKCkge30KLSAgc3RhdGljIHZvaWQgUHJpbnRU
ZXN0TmFtZShjb25zdCBjaGFyICogdGVzdF9jYXNlLCBjb25zdCBjaGFyICogdGVzdCkgewotICAg
IHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2UsIHRlc3QpOwotICB9Ci0KLSAgLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIG92ZXJyaWRlIHdoYXQncyBpbiB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgY2xh
c3MuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8q
dW5pdF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9u
RW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLSAgdmly
dHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBFbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90
ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2Um
IHRlc3RfY2FzZSk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKTsKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBh
cnRSZXN1bHQmIHJlc3VsdCk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdElu
Zm8mIHRlc3RfaW5mbyk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RD
YXNlJiB0ZXN0X2Nhc2UpOwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0
YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9u
bWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykge30KLSAgdmly
dHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBp
bnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5p
dFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgdm9pZCBQcmlu
dEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotfTsKLQotICAvLyBGaXJl
ZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24gb2YgdGVzdHMgc3RhcnRzLgotdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0ZXJhdGlvblN0YXJ0KAotICAgIGNvbnN0IFVuaXRU
ZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRpb24pIHsKLSAgaWYgKEdURVNUX0ZMQUcocmVwZWF0
KSAhPSAxKQotICAgIHByaW50ZigiXG5SZXBlYXRpbmcgYWxsIHRlc3RzIChpdGVyYXRpb24gJWQp
IC4gLiAuXG5cbiIsIGl0ZXJhdGlvbiArIDEpOwotCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbHRl
ciA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpOwotCi0gIC8vIFByaW50cyB0aGUgZmlsdGVy
IGlmIGl0J3Mgbm90ICouICBUaGlzIHJlbWluZHMgdGhlIHVzZXIgdGhhdCBzb21lCi0gIC8vIHRl
c3RzIG1heSBiZSBza2lwcGVkLgotICBpZiAoIVN0cmluZzo6Q1N0cmluZ0VxdWFscyhmaWx0ZXIs
IGtVbml2ZXJzYWxGaWx0ZXIpKSB7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0g
ICAgICAgICAgICAgICAgICAiTm90ZTogJXMgZmlsdGVyID0gJXNcbiIsIEdURVNUX05BTUVfLCBm
aWx0ZXIpOwotICB9Ci0KLSAgaWYgKGludGVybmFsOjpTaG91bGRTaGFyZChrVGVzdFRvdGFsU2hh
cmRzLCBrVGVzdFNoYXJkSW5kZXgsIGZhbHNlKSkgewotICAgIGNvbnN0IEludDMyIHNoYXJkX2lu
ZGV4ID0gSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RTaGFyZEluZGV4LCAtMSk7Ci0gICAgQ29sb3Jl
ZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0
ZXN0IHNoYXJkICVkIG9mICVzLlxuIiwKLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dD4oc2hhcmRfaW5kZXgpICsgMSwKLSAgICAgICAgICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6
R2V0RW52KGtUZXN0VG90YWxTaGFyZHMpKTsKLSAgfQotCi0gIGlmIChHVEVTVF9GTEFHKHNodWZm
bGUpKSB7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAgICAg
ICAiTm90ZTogUmFuZG9taXppbmcgdGVzdHMnIG9yZGVycyB3aXRoIGEgc2VlZCBvZiAlZCAuXG4i
LAotICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkpOwotICB9Ci0KLSAg
Q29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0gIik7Ci0gIHByaW50Zigi
UnVubmluZyAlcyBmcm9tICVzLlxuIiwKLSAgICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rl
c3QudGVzdF90b19ydW5fY291bnQoKSkuY19zdHIoKSwKLSAgICAgICAgIEZvcm1hdFRlc3RDYXNl
Q291bnQodW5pdF90ZXN0LnRlc3RfY2FzZV90b19ydW5fY291bnQoKSkuY19zdHIoKSk7Ci0gIGZm
bHVzaChzdGRvdXQpOwotfQotCi12b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25F
bnZpcm9ubWVudHNTZXRVcFN0YXJ0KAotICAgIGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCov
KSB7Ci0gIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWy0tLS0tLS0tLS1dICIpOwotICBw
cmludGYoIkdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC5cbiIpOwotICBmZmx1c2goc3Rk
b3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VT
dGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGNv
dW50cyA9Ci0gICAgICBGb3JtYXRDb3VudGFibGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9j
b3VudCgpLCAidGVzdCIsICJ0ZXN0cyIpOwotICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAi
Wy0tLS0tLS0tLS1dICIpOwotICBwcmludGYoIiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwg
dGVzdF9jYXNlLm5hbWUoKSk7Ci0gIGlmICh0ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5VTEwp
IHsKLSAgICBwcmludGYoIlxuIik7Ci0gIH0gZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVz
ID0gJXNcbiIsIGtUeXBlUGFyYW1MYWJlbCwgdGVzdF9jYXNlLnR5cGVfcGFyYW0oKSk7Ci0gIH0K
LSAgZmZsdXNoKHN0ZG91dCk7Ci19Ci0KLXZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVy
OjpPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gIENvbG9yZWRQcmlu
dGYoQ09MT1JfR1JFRU4sICAiWyBSVU4gICAgICBdICIpOwotICBQcmludFRlc3ROYW1lKHRlc3Rf
aW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgcHJpbnRmKCJcbiIp
OwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotLy8gQ2FsbGVkIGFmdGVyIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdFBhcnRSZXN1
bHQoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgewotICAvLyBJZiB0aGUgdGVz
dCBwYXJ0IHN1Y2NlZWRlZCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4KLSAgaWYgKHJl
c3VsdC50eXBlKCkgPT0gVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQotICAgIHJldHVybjsKLQot
ICAvLyBQcmludCBmYWlsdXJlIG1lc3NhZ2UgZnJvbSB0aGUgYXNzZXJ0aW9uIChlLmcuIGV4cGVj
dGVkIHRoaXMgYW5kIGdvdCB0aGF0KS4KLSAgUHJpbnRUZXN0UGFydFJlc3VsdChyZXN1bHQpOwot
ICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6
Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gIGlmICh0ZXN0X2luZm8u
cmVzdWx0KCktPlBhc3NlZCgpKSB7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlsg
ICAgICAgT0sgXSAiKTsKLSAgfSBlbHNlIHsKLSAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwg
IlsgIEZBSUxFRCAgXSAiKTsKLSAgfQotICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgaWYgKHRlc3RfaW5mby5yZXN1bHQoKS0+
RmFpbGVkKCkpCi0gICAgUHJpbnRGdWxsVGVzdENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsK
LQotICBpZiAoR1RFU1RfRkxBRyhwcmludF90aW1lKSkgewotICAgIHByaW50ZigiICglcyBtcylc
biIsIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoCi0gICAgICAgICAgIHRlc3RfaW5mby5y
ZXN1bHQoKS0+ZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOwotICB9IGVsc2UgewotICAgIHByaW50
ZigiXG4iKTsKLSAgfQotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkg
ewotICBpZiAoIUdURVNUX0ZMQUcocHJpbnRfdGltZSkpIHJldHVybjsKLQotICBjb25zdCBzdGQ6
OnN0cmluZyBjb3VudHMgPQotICAgICAgRm9ybWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVz
dF90b19ydW5fY291bnQoKSwgInRlc3QiLCAidGVzdHMiKTsKLSAgQ29sb3JlZFByaW50ZihDT0xP
Ul9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCIlcyBmcm9tICVzICglcyBtcyB0
b3RhbClcblxuIiwKLSAgICAgICAgIGNvdW50cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpLAot
ICAgICAgICAgaW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90
aW1lKCkpLmNfc3RyKCkpOwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCgKLSAgICBjb25z
dCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVO
LCAgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJpbnRmKCJHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0
ZWFyLWRvd25cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotLy8gSW50ZXJuYWwgaGVscGVy
IGZvciBwcmludGluZyB0aGUgbGlzdCBvZiBmYWlsZWQgdGVzdHMuCi12b2lkIFByZXR0eVVuaXRU
ZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWlsZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90
ZXN0KSB7Ci0gIGNvbnN0IGludCBmYWlsZWRfdGVzdF9jb3VudCA9IHVuaXRfdGVzdC5mYWlsZWRf
dGVzdF9jb3VudCgpOwotICBpZiAoZmFpbGVkX3Rlc3RfY291bnQgPT0gMCkgewotICAgIHJldHVy
bjsKLSAgfQotCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2Fz
ZV9jb3VudCgpOyArK2kpIHsKLSAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlID0gKnVuaXRf
dGVzdC5HZXRUZXN0Q2FzZShpKTsKLSAgICBpZiAoIXRlc3RfY2FzZS5zaG91bGRfcnVuKCkgfHwg
KHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3VudCgpID09IDApKSB7Ci0gICAgICBjb250aW51ZTsK
LSAgICB9Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3Vu
dCgpOyArK2opIHsKLSAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8gPSAqdGVzdF9jYXNl
LkdldFRlc3RJbmZvKGopOwotICAgICAgaWYgKCF0ZXN0X2luZm8uc2hvdWxkX3J1bigpIHx8IHRl
c3RfaW5mby5yZXN1bHQoKS0+UGFzc2VkKCkpIHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9
Ci0gICAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKLSAgICAg
IHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2UubmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAg
ICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KHRlc3RfaW5mbyk7Ci0gICAgICBwcmlu
dGYoIlxuIik7Ci0gICAgfQotICB9Ci19Ci0KLXZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRl
cmF0aW9uKi8pIHsKLSAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0g
Iik7Ci0gIHByaW50ZigiJXMgZnJvbSAlcyByYW4uIiwKLSAgICAgICAgIEZvcm1hdFRlc3RDb3Vu
dCh1bml0X3Rlc3QudGVzdF90b19ydW5fY291bnQoKSkuY19zdHIoKSwKLSAgICAgICAgIEZvcm1h
dFRlc3RDYXNlQ291bnQodW5pdF90ZXN0LnRlc3RfY2FzZV90b19ydW5fY291bnQoKSkuY19zdHIo
KSk7Ci0gIGlmIChHVEVTVF9GTEFHKHByaW50X3RpbWUpKSB7Ci0gICAgcHJpbnRmKCIgKCVzIG1z
IHRvdGFsKSIsCi0gICAgICAgICAgIGludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90
ZXN0LmVsYXBzZWRfdGltZSgpKS5jX3N0cigpKTsKLSAgfQotICBwcmludGYoIlxuIik7Ci0gIENv
bG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWyAgUEFTU0VEICBdICIpOwotICBwcmludGYoIiVz
LlxuIiwgRm9ybWF0VGVzdENvdW50KHVuaXRfdGVzdC5zdWNjZXNzZnVsX3Rlc3RfY291bnQoKSku
Y19zdHIoKSk7Ci0KLSAgaW50IG51bV9mYWlsdXJlcyA9IHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9j
b3VudCgpOwotICBpZiAoIXVuaXRfdGVzdC5QYXNzZWQoKSkgewotICAgIGNvbnN0IGludCBmYWls
ZWRfdGVzdF9jb3VudCA9IHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpOwotICAgIENvbG9y
ZWRQcmludGYoQ09MT1JfUkVELCAgIlsgIEZBSUxFRCAgXSAiKTsKLSAgICBwcmludGYoIiVzLCBs
aXN0ZWQgYmVsb3c6XG4iLCBGb3JtYXRUZXN0Q291bnQoZmFpbGVkX3Rlc3RfY291bnQpLmNfc3Ry
KCkpOwotICAgIFByaW50RmFpbGVkVGVzdHModW5pdF90ZXN0KTsKLSAgICBwcmludGYoIlxuJTJk
IEZBSUxFRCAlc1xuIiwgbnVtX2ZhaWx1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgbnVt
X2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAiVEVTVFMiKTsKLSAgfQotCi0gIGludCBudW1fZGlz
YWJsZWQgPSB1bml0X3Rlc3QucmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Ci0gIGlm
IChudW1fZGlzYWJsZWQgJiYgIUdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB7
Ci0gICAgaWYgKCFudW1fZmFpbHVyZXMpIHsKLSAgICAgIHByaW50ZigiXG4iKTsgIC8vIEFkZCBh
IHNwYWNlciBpZiBubyBGQUlMVVJFIGJhbm5lciBpcyBkaXNwbGF5ZWQuCi0gICAgfQotICAgIENv
bG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAotICAgICAgICAgICAgICAgICAgIiAgWU9VIEhBVkUg
JWQgRElTQUJMRUQgJXNcblxuIiwKLSAgICAgICAgICAgICAgICAgIG51bV9kaXNhYmxlZCwKLSAg
ICAgICAgICAgICAgICAgIG51bV9kaXNhYmxlZCA9PSAxID8gIlRFU1QiIDogIlRFU1RTIik7Ci0g
IH0KLSAgLy8gRW5zdXJlIHRoYXQgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIHByaW50ZWQgYmVmb3Jl
LCBlLmcuLCBoZWFwY2hlY2tlciBvdXRwdXQuCi0gIGZmbHVzaChzdGRvdXQpOwotfQotCi0vLyBF
bmQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyCi0KLS8vIGNsYXNzIFRlc3RFdmVudFJlcGVh
dGVyCi0vLwotLy8gVGhpcyBjbGFzcyBmb3J3YXJkcyBldmVudHMgdG8gb3RoZXIgZXZlbnQgbGlz
dGVuZXJzLgotY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVu
ZXIgewotIHB1YmxpYzoKLSAgVGVzdEV2ZW50UmVwZWF0ZXIoKSA6IGZvcndhcmRpbmdfZW5hYmxl
ZF8odHJ1ZSkge30KLSAgdmlydHVhbCB+VGVzdEV2ZW50UmVwZWF0ZXIoKTsKLSAgdm9pZCBBcHBl
bmQoVGVzdEV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyKTsKLSAgVGVzdEV2ZW50TGlzdGVuZXIqIFJl
bGVhc2UoVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKTsKLQotICAvLyBDb250cm9scyB3aGV0
aGVyIGV2ZW50cyB3aWxsIGJlIGZvcndhcmRlZCB0byBsaXN0ZW5lcnNfLiBTZXQgdG8gZmFsc2UK
LSAgLy8gaW4gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzZXMuCi0gIGJvb2wgZm9yd2FyZGluZ19l
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gZm9yd2FyZGluZ19lbmFibGVkXzsgfQotICB2b2lkIHNl
dF9mb3J3YXJkaW5nX2VuYWJsZWQoYm9vbCBlbmFibGUpIHsgZm9yd2FyZGluZ19lbmFibGVkXyA9
IGVuYWJsZTsgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5p
dFRlc3QmIHVuaXRfdGVzdCk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lk
IE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLSAg
dmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBFbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRl
c3RfY2FzZSk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVz
dF9pbmZvKTsKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRS
ZXN1bHQmIHJlc3VsdCk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8m
IHRlc3RfaW5mbyk7Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNl
JiB0ZXN0X2Nhc2UpOwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0
KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QpOwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVu
dHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLSAgdmlydHVhbCB2b2lk
IE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0
aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCk7Ci0KLSBwcml2YXRlOgotICAvLyBDb250cm9scyB3aGV0aGVyIGV2ZW50cyB3aWxs
IGJlIGZvcndhcmRlZCB0byBsaXN0ZW5lcnNfLiBTZXQgdG8gZmFsc2UKLSAgLy8gaW4gZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzZXMuCi0gIGJvb2wgZm9yd2FyZGluZ19lbmFibGVkXzsKLSAgLy8g
VGhlIGxpc3Qgb2YgbGlzdGVuZXJzIHRoYXQgcmVjZWl2ZSBldmVudHMuCi0gIHN0ZDo6dmVjdG9y
PFRlc3RFdmVudExpc3RlbmVyKj4gbGlzdGVuZXJzXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFRlc3RFdmVudFJlcGVhdGVyKTsKLX07Ci0KLVRlc3RFdmVudFJlcGVhdGVy
Ojp+VGVzdEV2ZW50UmVwZWF0ZXIoKSB7Ci0gIEZvckVhY2gobGlzdGVuZXJzXywgRGVsZXRlPFRl
c3RFdmVudExpc3RlbmVyPik7Ci19Ci0KLXZvaWQgVGVzdEV2ZW50UmVwZWF0ZXI6OkFwcGVuZChU
ZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIpIHsKLSAgbGlzdGVuZXJzXy5wdXNoX2JhY2sobGlz
dGVuZXIpOwotfQotCi0vLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBGYWN0b3IgdGhlIHNlYXJj
aCBmdW5jdGlvbmFsaXR5IGludG8gVmVjdG9yOjpGaW5kLgotVGVzdEV2ZW50TGlzdGVuZXIqIFRl
c3RFdmVudFJlcGVhdGVyOjpSZWxlYXNlKFRlc3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewot
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc18uc2l6ZSgpOyArK2kpIHsKLSAgICBp
ZiAobGlzdGVuZXJzX1tpXSA9PSBsaXN0ZW5lcikgewotICAgICAgbGlzdGVuZXJzXy5lcmFzZShs
aXN0ZW5lcnNfLmJlZ2luKCkgKyBpKTsKLSAgICAgIHJldHVybiBsaXN0ZW5lcjsKLSAgICB9Ci0g
IH0KLQotICByZXR1cm4gTlVMTDsKLX0KLQotLy8gU2luY2UgbW9zdCBtZXRob2RzIGFyZSB2ZXJ5
IHNpbWlsYXIsIHVzZSBtYWNyb3MgdG8gcmVkdWNlIGJvaWxlcnBsYXRlLgotLy8gVGhpcyBkZWZp
bmVzIGEgbWVtYmVyIHRoYXQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYWxsIGxpc3RlbmVycy4KLSNk
ZWZpbmUgR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhOYW1lLCBUeXBlKSBcCi12b2lkIFRlc3RFdmVu
dFJlcGVhdGVyOjpOYW1lKGNvbnN0IFR5cGUmIHBhcmFtZXRlcikgeyBcCi0gIGlmIChmb3J3YXJk
aW5nX2VuYWJsZWRfKSB7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc18u
c2l6ZSgpOyBpKyspIHsgXAotICAgICAgbGlzdGVuZXJzX1tpXS0+TmFtZShwYXJhbWV0ZXIpOyBc
Ci0gICAgfSBcCi0gIH0gXAotfQotLy8gVGhpcyBkZWZpbmVzIGEgbWVtYmVyIHRoYXQgZm9yd2Fy
ZHMgdGhlIGNhbGwgdG8gYWxsIGxpc3RlbmVycyBpbiByZXZlcnNlCi0vLyBvcmRlci4KLSNkZWZp
bmUgR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9NRVRIT0RfKE5hbWUsIFR5cGUpIFwKLXZvaWQgVGVz
dEV2ZW50UmVwZWF0ZXI6Ok5hbWUoY29uc3QgVHlwZSYgcGFyYW1ldGVyKSB7IFwKLSAgaWYgKGZv
cndhcmRpbmdfZW5hYmxlZF8pIHsgXAotICAgIGZvciAoaW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+
KGxpc3RlbmVyc18uc2l6ZSgpKSAtIDE7IGkgPj0gMDsgaS0tKSB7IFwKLSAgICAgIGxpc3RlbmVy
c19baV0tPk5hbWUocGFyYW1ldGVyKTsgXAotICAgIH0gXAotICB9IFwKLX0KLQotR1RFU1RfUkVQ
RUFURVJfTUVUSE9EXyhPblRlc3RQcm9ncmFtU3RhcnQsIFVuaXRUZXN0KQotR1RFU1RfUkVQRUFU
RVJfTUVUSE9EXyhPbkVudmlyb25tZW50c1NldFVwU3RhcnQsIFVuaXRUZXN0KQotR1RFU1RfUkVQ
RUFURVJfTUVUSE9EXyhPblRlc3RDYXNlU3RhcnQsIFRlc3RDYXNlKQotR1RFU1RfUkVQRUFURVJf
TUVUSE9EXyhPblRlc3RTdGFydCwgVGVzdEluZm8pCi1HVEVTVF9SRVBFQVRFUl9NRVRIT0RfKE9u
VGVzdFBhcnRSZXN1bHQsIFRlc3RQYXJ0UmVzdWx0KQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhP
bkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQsIFVuaXRUZXN0KQotR1RFU1RfUkVWRVJTRV9SRVBF
QVRFUl9NRVRIT0RfKE9uRW52aXJvbm1lbnRzU2V0VXBFbmQsIFVuaXRUZXN0KQotR1RFU1RfUkVW
RVJTRV9SRVBFQVRFUl9NRVRIT0RfKE9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQsIFVuaXRUZXN0
KQotR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9NRVRIT0RfKE9uVGVzdEVuZCwgVGVzdEluZm8pCi1H
VEVTVF9SRVZFUlNFX1JFUEVBVEVSX01FVEhPRF8oT25UZXN0Q2FzZUVuZCwgVGVzdENhc2UpCi1H
VEVTVF9SRVZFUlNFX1JFUEVBVEVSX01FVEhPRF8oT25UZXN0UHJvZ3JhbUVuZCwgVW5pdFRlc3Qp
Ci0KLSN1bmRlZiBHVEVTVF9SRVBFQVRFUl9NRVRIT0RfCi0jdW5kZWYgR1RFU1RfUkVWRVJTRV9S
RVBFQVRFUl9NRVRIT0RfCi0KLXZvaWQgVGVzdEV2ZW50UmVwZWF0ZXI6Ok9uVGVzdEl0ZXJhdGlv
blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSB7Ci0gIGlmIChmb3J3YXJkaW5n
X2VuYWJsZWRfKSB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUo
KTsgaSsrKSB7Ci0gICAgICBsaXN0ZW5lcnNfW2ldLT5PblRlc3RJdGVyYXRpb25TdGFydCh1bml0
X3Rlc3QsIGl0ZXJhdGlvbik7Ci0gICAgfQotICB9Ci19Ci0KLXZvaWQgVGVzdEV2ZW50UmVwZWF0
ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAg
aWYgKGZvcndhcmRpbmdfZW5hYmxlZF8pIHsKLSAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8
aW50PihsaXN0ZW5lcnNfLnNpemUoKSkgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgbGlzdGVu
ZXJzX1tpXS0+T25UZXN0SXRlcmF0aW9uRW5kKHVuaXRfdGVzdCwgaXRlcmF0aW9uKTsKLSAgICB9
Ci0gIH0KLX0KLQotLy8gRW5kIFRlc3RFdmVudFJlcGVhdGVyCi0KLS8vIFRoaXMgY2xhc3MgZ2Vu
ZXJhdGVzIGFuIFhNTCBvdXRwdXQgZmlsZS4KLWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRl
ciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihjb25zdCBjaGFyKiBvdXRwdXRfZmlsZSk7Ci0KLSAg
dmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
LCBpbnQgaXRlcmF0aW9uKTsKLQotIHByaXZhdGU6Ci0gIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNo
YXJhY3RlciB0aGF0IGlzIG5vcm1hbGl6ZWQgdG8gYSBzcGFjZSBjaGFyYWN0ZXIKLSAgLy8gd2hl
biBpdCBhcHBlYXJzIGluIGFuIFhNTCBhdHRyaWJ1dGUgdmFsdWU/Ci0gIHN0YXRpYyBib29sIElz
Tm9ybWFsaXphYmxlV2hpdGVzcGFjZShjaGFyIGMpIHsKLSAgICByZXR1cm4gYyA9PSAweDkgfHwg
YyA9PSAweEEgfHwgYyA9PSAweEQ7Ci0gIH0KLQotICAvLyBNYXkgYyBhcHBlYXIgaW4gYSB3ZWxs
LWZvcm1lZCBYTUwgZG9jdW1lbnQ/Ci0gIHN0YXRpYyBib29sIElzVmFsaWRYbWxDaGFyYWN0ZXIo
Y2hhciBjKSB7Ci0gICAgcmV0dXJuIElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZShjKSB8fCBjID49
IDB4MjA7Ci0gIH0KLQotICAvLyBSZXR1cm5zIGFuIFhNTC1lc2NhcGVkIGNvcHkgb2YgdGhlIGlu
cHV0IHN0cmluZyBzdHIuICBJZgotICAvLyBpc19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQg
aXMgbWVhbnQgdG8gYXBwZWFyIGFzIGFuIGF0dHJpYnV0ZQotICAvLyB2YWx1ZSwgYW5kIG5vcm1h
bGl6YWJsZSB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQKLSAgLy8gd2l0
aCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLSAgc3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbChj
b25zdCBzdGQ6OnN0cmluZyYgc3RyLCBib29sIGlzX2F0dHJpYnV0ZSk7Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxsIGNoYXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVt
b3ZlZC4KLSAgc3RhdGljIHN0ZDo6c3RyaW5nIFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwotCi0gIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5k
IEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBhdHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBzdGQ6
OnN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICAg
IHJldHVybiBFc2NhcGVYbWwoc3RyLCB0cnVlKTsKLSAgfQotCi0gIC8vIENvbnZlbmllbmNlIHdy
YXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBub3QgYW4gYXR0cmlidXRlIHZhbHVl
LgotICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNjYXBlWG1sVGV4dChjb25zdCBjaGFyKiBzdHIpIHsK
LSAgICByZXR1cm4gRXNjYXBlWG1sKHN0ciwgZmFsc2UpOwotICB9Ci0KLSAgLy8gVmVyaWZpZXMg
dGhhdCB0aGUgZ2l2ZW4gYXR0cmlidXRlIGJlbG9uZ3MgdG8gdGhlIGdpdmVuIGVsZW1lbnQgYW5k
Ci0gIC8vIHN0cmVhbXMgdGhlIGF0dHJpYnV0ZSBhcyBYTUwuCi0gIHN0YXRpYyB2b2lkIE91dHB1
dFhtbEF0dHJpYnV0ZShzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7Ci0KLSAg
Ly8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBz
ZXF1ZW5jZXMgYXMgbmVlZGVkLgotICBzdGF0aWMgdm9pZCBPdXRwdXRYbWxDRGF0YVNlY3Rpb24o
OjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZGF0YSk7Ci0KLSAgLy8gU3RyZWFt
cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRpYyB2
b2lkIE91dHB1dFhtbFRlc3RJbmZvKDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKLQot
ICAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0g
IHN0YXRpYyB2b2lkIFByaW50WG1sVGVzdENhc2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsK
LQotICAvLyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJl
YW0gb3V0LgotICBzdGF0aWMgdm9pZCBQcmludFhtbFVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBz
dHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVu
aXRfdGVzdCk7Ci0KLSAgLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0
IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKLSAgLy8gZGVsaW1pdGVkIFhNTCBhdHRy
aWJ1dGVzIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eSBrZXk9InZhbHVlIiBwYWlycy4KLSAgLy8gV2hl
biB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVtcHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRo
ZSBiZWdpbm5pbmcsCi0gIC8vIHRvIGRlbGltaXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBh
dHRyaWJ1dGVzLgotICBzdGF0aWMgc3RkOjpzdHJpbmcgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJp
YnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0KTsKLQotICAvLyBUaGUgb3V0cHV0IGZpbGUu
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dF9maWxlXzsKLQotICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcik7Ci19OwotCi0vLyBDcmVh
dGVzIGEgbmV3IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlci4KLVhtbFVuaXRUZXN0UmVzdWx0UHJp
bnRlcjo6WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKQot
ICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9maWxlKSB7Ci0gIGlmIChvdXRwdXRfZmlsZV8uY19z
dHIoKSA9PSBOVUxMIHx8IG91dHB1dF9maWxlXy5lbXB0eSgpKSB7Ci0gICAgZnByaW50ZihzdGRl
cnIsICJYTUwgb3V0cHV0IGZpbGUgbWF5IG5vdCBiZSBudWxsXG4iKTsKLSAgICBmZmx1c2goc3Rk
ZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0KLX0KLQotLy8gQ2FsbGVkIGFmdGVy
IHRoZSB1bml0IHRlc3QgZW5kcy4KLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRl
c3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsK
LSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAgRmlsZVBhdGggb3V0cHV0X2ZpbGUob3V0cHV0X2Zp
bGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2RpcihvdXRwdXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgp
KTsKLQotICBpZiAob3V0cHV0X2Rpci5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsK
LSAgICB4bWxvdXQgPSBwb3NpeDo6Rk9wZW4ob3V0cHV0X2ZpbGVfLmNfc3RyKCksICJ3Iik7Ci0g
IH0KLSAgaWYgKHhtbG91dCA9PSBOVUxMKSB7Ci0gICAgLy8gVE9ETyh3YW4pOiByZXBvcnQgdGhl
IHJlYXNvbiBvZiB0aGUgZmFpbHVyZS4KLSAgICAvLwotICAgIC8vIFdlIGRvbid0IGRvIGl0IGZv
ciBub3cgYXM6Ci0gICAgLy8KLSAgICAvLyAgIDEuIFRoZXJlIGlzIG5vIHVyZ2VudCBuZWVkIGZv
ciBpdC4KLSAgICAvLyAgIDIuIEl0J3MgYSBiaXQgaW52b2x2ZWQgdG8gbWFrZSB0aGUgZXJybm8g
dmFyaWFibGUgdGhyZWFkLXNhZmUgb24KLSAgICAvLyAgICAgIGFsbCB0aHJlZSBvcGVyYXRpbmcg
c3lzdGVtcyAoTGludXgsIFdpbmRvd3MsIGFuZCBNYWMgT1MpLgotICAgIC8vICAgMy4gVG8gaW50
ZXJwcmV0IHRoZSBtZWFuaW5nIG9mIGVycm5vIGluIGEgdGhyZWFkLXNhZmUgd2F5LAotICAgIC8v
ICAgICAgd2UgbmVlZCB0aGUgc3RyZXJyb3JfcigpIGZ1bmN0aW9uLCB3aGljaCBpcyBub3QgYXZh
aWxhYmxlIG9uCi0gICAgLy8gICAgICBXaW5kb3dzLgotICAgIGZwcmludGYoc3RkZXJyLAotICAg
ICAgICAgICAgIlVuYWJsZSB0byBvcGVuIGZpbGUgXCIlc1wiXG4iLAotICAgICAgICAgICAgb3V0
cHV0X2ZpbGVfLmNfc3RyKCkpOwotICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGV4aXQoRVhJVF9G
QUlMVVJFKTsKLSAgfQotICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIFByaW50WG1sVW5p
dFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0KTsKLSAgZnByaW50Zih4bWxvdXQsICIlcyIsIFN0cmlu
Z1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNfc3RyKCkpOwotICBmY2xvc2UoeG1sb3V0KTsKLX0K
LQotLy8gUmV0dXJucyBhbiBYTUwtZXNjYXBlZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3Ry
LiAgSWYgaXNfYXR0cmlidXRlCi0vLyBpcyB0cnVlLCB0aGUgdGV4dCBpcyBtZWFudCB0byBhcHBl
YXIgYXMgYW4gYXR0cmlidXRlIHZhbHVlLCBhbmQKLS8vIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNl
IGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcgaXQgd2l0aCBjaGFyYWN0ZXIKLS8vIHJlZmVyZW5j
ZXMuCi0vLwotLy8gSW52YWxpZCBYTUwgY2hhcmFjdGVycyBpbiBzdHIsIGlmIGFueSwgYXJlIHN0
cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KLS8vIEl0IGlzIGV4cGVjdGVkIHRoYXQgbW9zdCwgaWYg
bm90IGFsbCwgb2YgdGhlIHRleHQgcHJvY2Vzc2VkIGJ5IHRoaXMKLS8vIG1vZHVsZSB3aWxsIGNv
bnNpc3Qgb2Ygb3JkaW5hcnkgRW5nbGlzaCB0ZXh0LgotLy8gSWYgdGhpcyBtb2R1bGUgaXMgZXZl
ciBtb2RpZmllZCB0byBwcm9kdWNlIHZlcnNpb24gMS4xIFhNTCBvdXRwdXQsCi0vLyBtb3N0IGlu
dmFsaWQgY2hhcmFjdGVycyBjYW4gYmUgcmV0YWluZWQgdXNpbmcgY2hhcmFjdGVyIHJlZmVyZW5j
ZXMuCi0vLyBUT0RPKHdhbik6IEl0IG1pZ2h0IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBp
bnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKLS8vIGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBj
aGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9wcGluZyB0aGVtLgotc3RkOjpzdHJpbmcgWG1sVW5p
dFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVYbWwoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0
ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKLSAgTWVzc2FnZSBtOwotCi0gIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7Ci0gICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsK
LSAgICBzd2l0Y2ggKGNoKSB7Ci0gICAgICBjYXNlICc8JzoKLSAgICAgICAgbSA8PCAiJmx0OyI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnPic6Ci0gICAgICAgIG0gPDwgIiZndDsiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJyYnOgotICAgICAgICBtIDw8ICImYW1wOyI7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnXCcnOgotICAgICAgICBpZiAoaXNfYXR0cmlidXRl
KQotICAgICAgICAgIG0gPDwgIiZhcG9zOyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBtIDw8
ICdcJyc7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnIic6Ci0gICAgICAgIGlmIChpc19h
dHRyaWJ1dGUpCi0gICAgICAgICAgbSA8PCAiJnF1b3Q7IjsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgIG0gPDwgJyInOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlm
IChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkgewotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUg
JiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNlKGNoKSkKLSAgICAgICAgICAgIG0gPDwgIiYjeCIg
PDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKLSAg
ICAgICAgICAgICAgPDwgIjsiOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgY2g7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIG0uR2V0
U3RyaW5nKCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFy
YWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92ZWQuCi0vLyBDdXJyZW50bHkgaW52YWxpZCBjaGFy
YWN0ZXJzIGFyZSBkcm9wcGVkIGZyb20gdGhlIHN0cmluZy4gQW4KLS8vIGFsdGVybmF0aXZlIGlz
IHRvIHJlcGxhY2UgdGhlbSB3aXRoIGNlcnRhaW4gY2hhcmFjdGVycyBzdWNoIGFzIC4gb3IgPy4K
LXN0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENo
YXJhY3RlcnMoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICBzdGQ6OnN0cmluZyBv
dXRwdXQ7Ci0gIG91dHB1dC5yZXNlcnZlKHN0ci5zaXplKCkpOwotICBmb3IgKHN0ZDo6c3RyaW5n
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHN0ci5iZWdpbigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQp
Ci0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0ZXIoKml0KSkKLSAgICAgIG91dHB1dC5wdXNoX2Jh
Y2soKml0KTsKLQotICByZXR1cm4gb3V0cHV0OwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHJvdXRp
bmVzIGdlbmVyYXRlIGFuIFhNTCByZXByZXNlbnRhdGlvbiBvZiBhIFVuaXRUZXN0Ci0vLyBvYmpl
Y3QuCi0vLwotLy8gVGhpcyBpcyBob3cgR29vZ2xlIFRlc3QgY29uY2VwdHMgbWFwIHRvIHRoZSBE
VEQ6Ci0vLwotLy8gPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiPiAgICAgICAgPC0tIGNvcnJl
c3BvbmRzIHRvIGEgVW5pdFRlc3Qgb2JqZWN0Ci0vLyAgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdGNh
c2UtbmFtZSI+ICA8LS0gY29ycmVzcG9uZHMgdG8gYSBUZXN0Q2FzZSBvYmplY3QKLS8vICAgICA8
dGVzdGNhc2UgbmFtZT0idGVzdC1uYW1lIj4gICAgIDwtLSBjb3JyZXNwb25kcyB0byBhIFRlc3RJ
bmZvIG9iamVjdAotLy8gICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIj4uLi48L2ZhaWx1cmU+
Ci0vLyAgICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iPi4uLjwvZmFpbHVyZT4KLS8vICAgICAg
IDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiI+Li4uPC9mYWlsdXJlPgotLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC0tIGluZGl2aWR1YWwgYXNzZXJ0aW9uIGZhaWx1cmVzCi0v
LyAgICAgPC90ZXN0Y2FzZT4KLS8vICAgPC90ZXN0c3VpdGU+Ci0vLyA8L3Rlc3RzdWl0ZXM+Ci0K
LS8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCi1z
dGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoVGltZUluTWlsbGlzIG1zKSB7
Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+
KG1zKSAqIDFlLTMpOwotICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLXN0YXRpYyBib29sIFBvcnRh
YmxlTG9jYWx0aW1lKHRpbWVfdCBzZWNvbmRzLCBzdHJ1Y3QgdG0qIG91dCkgewotI2lmIGRlZmlu
ZWQoX01TQ19WRVIpCi0gIHJldHVybiBsb2NhbHRpbWVfcyhvdXQsICZzZWNvbmRzKSA9PSAwOwot
I2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChfX01JTkdXNjRfXykKLSAgLy8g
TUlOR1cgPHRpbWUuaD4gcHJvdmlkZXMgbmVpdGhlciBsb2NhbHRpbWVfciBub3IgbG9jYWx0aW1l
X3MsIGJ1dCB1c2VzCi0gIC8vIFdpbmRvd3MnIGxvY2FsdGltZSgpLCB3aGljaCBoYXMgYSB0aHJl
YWQtbG9jYWwgdG0gYnVmZmVyLgotICBzdHJ1Y3QgdG0qIHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vj
b25kcyk7ICAvLyBOT0xJTlQKLSAgaWYgKHRtX3B0ciA9PSBOVUxMKQotICAgIHJldHVybiBmYWxz
ZTsKLSAgKm91dCA9ICp0bV9wdHI7Ci0gIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgcmV0dXJuIGxv
Y2FsdGltZV9yKCZzZWNvbmRzLCBvdXQpICE9IE5VTEw7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVy
dHMgdGhlIGdpdmVuIGVwb2NoIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcg
aW4gdGhlIElTTwotLy8gODYwMSBmb3JtYXQsIHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0
aW9uLgotc3RkOjpzdHJpbmcgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUlu
TWlsbGlzIG1zKSB7Ci0gIHN0cnVjdCB0bSB0aW1lX3N0cnVjdDsKLSAgaWYgKCFQb3J0YWJsZUxv
Y2FsdGltZShzdGF0aWNfY2FzdDx0aW1lX3Q+KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCi0g
ICAgcmV0dXJuICIiOwotICAvLyBZWVlZLU1NLUREVGhoOm1tOnNzCi0gIHJldHVybiBTdHJlYW1h
YmxlVG9TdHJpbmcodGltZV9zdHJ1Y3QudG1feWVhciArIDE5MDApICsgIi0iICsKLSAgICAgIFN0
cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKLSAg
ICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsK
LSAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoi
ICsKLSAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAi
OiIgKwotICAgICAgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsK
LX0KLQotLy8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBD
REFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgotdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6
Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBk
YXRhKSB7Ci0gIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSBkYXRhOwotICAqc3RyZWFtIDw8ICI8IVtD
REFUQVsiOwotICBmb3IgKDs7KSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmV4dF9zZWdtZW50
ID0gc3Ryc3RyKHNlZ21lbnQsICJdXT4iKTsKLSAgICBpZiAobmV4dF9zZWdtZW50ICE9IE5VTEwp
IHsKLSAgICAgIHN0cmVhbS0+d3JpdGUoCi0gICAgICAgICAgc2VnbWVudCwgc3RhdGljX2Nhc3Q8
c3RkOjpzdHJlYW1zaXplPihuZXh0X3NlZ21lbnQgLSBzZWdtZW50KSk7Ci0gICAgICAqc3RyZWFt
IDw8ICJdXT5dXSZndDs8IVtDREFUQVsiOwotICAgICAgc2VnbWVudCA9IG5leHRfc2VnbWVudCAr
IHN0cmxlbigiXV0+Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpzdHJlYW0gPDwgc2VnbWVudDsK
LSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICAqc3RyZWFtIDw8ICJdXT4iOwotfQotCi12b2lk
IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T3V0cHV0WG1sQXR0cmlidXRlKAotICAgIHN0ZDo6
b3N0cmVhbSogc3RyZWFtLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCi0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
KSB7Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9Ci0g
ICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7Ci0KLSAg
R1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxvd2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFt
ZXMuZW5kKCksIG5hbWUpICE9Ci0gICAgICAgICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQo
KSkKLSAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQgZm9y
IGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1lCi0gICAgICA8PCAiPi4iOwotCi0gICpzdHJlYW0g
PDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8PCAi
XCIiOwotfQotCi0vLyBQcmludHMgYW4gWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8g
b2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVyZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHBy
b3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJpbnRlci4KLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQ
cmludGVyOjpPdXRwdXRYbWxUZXN0SW5mbyg6OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRl
c3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgVGVzdFJlc3VsdCYg
cmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQoKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3Rj
YXNlID0gInRlc3RjYXNlIjsKLQotICAqc3RyZWFtIDw8ICIgICAgPHRlc3RjYXNlIjsKLSAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAibmFtZSIsIHRlc3RfaW5mby5uYW1l
KCkpOwotCi0gIGlmICh0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSAhPSBOVUxMKSB7Ci0gICAgT3V0
cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RjYXNlLCAidmFsdWVfcGFyYW0iLAotICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X2luZm8udmFsdWVfcGFyYW0oKSk7Ci0gIH0KLSAgaWYgKHRl
c3RfaW5mby50eXBlX3BhcmFtKCkgIT0gTlVMTCkgewotICAgIE91dHB1dFhtbEF0dHJpYnV0ZShz
dHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFyYW0iLCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpKTsK
LSAgfQotCi0gIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIs
Ci0gICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAi
bm90cnVuIik7Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUi
LAotICAgICAgICAgICAgICAgICAgICAgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3Vs
dC5lbGFwc2VkX3RpbWUoKSkpOwotICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNh
c2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2VfbmFtZSk7Ci0gICpzdHJlYW0gPDwgVGVzdFByb3Bl
cnRpZXNBc1htbEF0dHJpYnV0ZXMocmVzdWx0KTsKLQotICBpbnQgZmFpbHVyZXMgPSAwOwotICBm
b3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewotICAg
IGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBwYXJ0ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0KGkp
OwotICAgIGlmIChwYXJ0LmZhaWxlZCgpKSB7Ci0gICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7
Ci0gICAgICAgICpzdHJlYW0gPDwgIj5cbiI7Ci0gICAgICB9Ci0gICAgICBjb25zdCBzdGQ6OnN0
cmluZyBsb2NhdGlvbiA9Ci0gICAgICAgICAgaW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBl
bmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxlX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkp
OwotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgc3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBh
cnQuc3VtbWFyeSgpOwotICAgICAgKnN0cmVhbSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1c
IiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHN1bW1hcnkuY19zdHIoKSkK
LSAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9XCJcIj4iOwotICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZGV0YWlsID0gbG9jYXRpb24gKyAiXG4iICsgcGFydC5tZXNzYWdlKCk7Ci0gICAgICBPdXRw
dXRYbWxDRGF0YVNlY3Rpb24oc3RyZWFtLCBSZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhkZXRh
aWwpLmNfc3RyKCkpOwotICAgICAgKnN0cmVhbSA8PCAiPC9mYWlsdXJlPlxuIjsKLSAgICB9Ci0g
IH0KLQotICBpZiAoZmFpbHVyZXMgPT0gMCkKLSAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVs
c2UKLSAgICAqc3RyZWFtIDw8ICIgICAgPC90ZXN0Y2FzZT5cbiI7Ci19Ci0KLS8vIFByaW50cyBh
biBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBUZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRl
c3RSZXN1bHRQcmludGVyOjpQcmludFhtbFRlc3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVz
dENhc2UmIHRlc3RfY2FzZSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRl
c3RzdWl0ZSI7Ci0gICpzdHJlYW0gPDwgIiAgPCIgPDwga1Rlc3RzdWl0ZTsKLSAgT3V0cHV0WG1s
QXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpKTsK
LSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgInRlc3RzIiwKLSAgICAg
ICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UucmVwb3J0YWJsZV90
ZXN0X2NvdW50KCkpKTsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwg
ImZhaWx1cmVzIiwKLSAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0
X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSkpOwotICBPdXRwdXRYbWxBdHRyaWJ1dGUoCi0gICAg
ICBzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNhYmxlZCIsCi0gICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcodGVzdF9jYXNlLnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1
dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGUsICJlcnJvcnMiLCAiMCIpOwotICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlLCAidGltZSIsCi0gICAgICAgICAgICAg
ICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGlt
ZSgpKSk7Ci0gICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9j
YXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKQotICAgICAgICAgIDw8ICI+XG4iOwotCi0gIGZvciAo
aW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRvdGFsX3Rlc3RfY291bnQoKTsgKytpKSB7Ci0gICAg
aWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhpKS0+aXNfcmVwb3J0YWJsZSgpKQotICAgICAgT3V0
cHV0WG1sVGVzdEluZm8oc3RyZWFtLCB0ZXN0X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRl
c3RJbmZvKGkpKTsKLSAgfQotICAqc3RyZWFtIDw8ICIgIDwvIiA8PCBrVGVzdHN1aXRlIDw8ICI+
XG4iOwotfQotCi0vLyBQcmludHMgYW4gWE1MIHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1
dCBzdHJlYW0gb3V0Lgotdm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVW5p
dFRlc3Qoc3RkOjpvc3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0gInRlc3RzdWl0ZXMiOwotCi0gICpzdHJlYW0gPDwg
Ijw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCI/PlxuIjsKLSAgKnN0cmVh
bSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7Ci0KLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwg
a1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfdGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1dFhtbEF0
dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZmFpbHVyZXMiLAotICAgICAgICAgICAgICAg
ICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7
Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZSgKLSAgICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNh
YmxlZCIsCi0gICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlz
YWJsZWRfdGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0
c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKAotICAgICAgc3Ry
ZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFtcCIsCi0gICAgICBGb3JtYXRFcG9jaFRpbWVJbk1p
bGxpc0FzSXNvODYwMSh1bml0X3Rlc3Quc3RhcnRfdGltZXN0YW1wKCkpKTsKLSAgT3V0cHV0WG1s
QXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0aW1lIiwKLSAgICAgICAgICAgICAgICAg
ICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkp
KTsKLQotICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAicmFuZG9tX3NlZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJhbmRvbV9zZWVkKCkpKTsKLSAgfQot
Ci0gICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModW5pdF90ZXN0LmFk
X2hvY190ZXN0X3Jlc3VsdCgpKTsKLQotICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMiKTsKLSAgKnN0cmVhbSA8PCAiPlxuIjsKLQotICBm
b3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytp
KSB7Ci0gICAgaWYgKHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2Nv
dW50KCkgPiAwKQotICAgICAgUHJpbnRYbWxUZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0
VGVzdENhc2UoaSkpOwotICB9Ci0gICpzdHJlYW0gPDwgIjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAi
PlxuIjsKLX0KLQotLy8gUHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHBy
b3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3BhY2UKLS8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRl
cyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5PSJ2YWx1ZSIgcGFpcnMuCi1zdGQ6OnN0cmluZyBY
bWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRlc3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAot
ICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3VsdCkgewotICBNZXNzYWdlIGF0dHJpYnV0ZXM7Ci0g
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7
Ci0gICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSA9IHJlc3VsdC5HZXRUZXN0UHJvcGVy
dHkoaSk7Ci0gICAgYXR0cmlidXRlcyA8PCAiICIgPDwgcHJvcGVydHkua2V5KCkgPDwgIj0iCi0g
ICAgICAgIDw8ICJcIiIgPDwgRXNjYXBlWG1sQXR0cmlidXRlKHByb3BlcnR5LnZhbHVlKCkpIDw8
ICJcIiI7Ci0gIH0KLSAgcmV0dXJuIGF0dHJpYnV0ZXMuR2V0U3RyaW5nKCk7Ci19Ci0KLS8vIEVu
ZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIKLQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxU
U18KLQotLy8gQ2hlY2tzIGlmIHN0ciBjb250YWlucyAnPScsICcmJywgJyUnIG9yICdcbicgY2hh
cmFjdGVycy4gSWYgeWVzLAotLy8gcmVwbGFjZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4eCBpcyB0
aGVpciBoZXhhZGVjaW1hbCB2YWx1ZS4gRm9yCi0vLyBleGFtcGxlLCByZXBsYWNlcyAiPSIgd2l0
aCAiJTNEIi4gIFRoaXMgYWxnb3JpdGhtIGlzIE8oc3RybGVuKHN0cikpCi0vLyBpbiBib3RoIHRp
bWUgYW5kIHNwYWNlIC0tIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgc3RyIG1heSBjb250YWluIGFu
Ci0vLyBhcmJpdHJhcmlseSBsb25nIHRlc3QgZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFjayB0cmFj
ZS4KLXN0ZDo6c3RyaW5nIFN0cmVhbWluZ0xpc3RlbmVyOjpVcmxFbmNvZGUoY29uc3QgY2hhciog
c3RyKSB7Ci0gIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgcmVzdWx0LnJlc2VydmUoc3RybGVuKHN0
cikgKyAxKTsKLSAgZm9yIChjaGFyIGNoID0gKnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytzdHIp
IHsKLSAgICBzd2l0Y2ggKGNoKSB7Ci0gICAgICBjYXNlICclJzoKLSAgICAgIGNhc2UgJz0nOgot
ICAgICAgY2FzZSAnJic6Ci0gICAgICBjYXNlICdcbic6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
IiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkp
OwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlc3VsdC5wdXNoX2Jh
Y2soY2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVjdGlvbigp
IHsKLSAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8gPT0gLTEpCi0gICAgICA8PCAiTWFrZUNvbm5lY3Rp
b24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVjdGlvbi4i
OwotCi0gIGFkZHJpbmZvIGhpbnRzOwotICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMp
KTsKLSAgaGludHMuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOyAgICAvLyBUbyBhbGxvdyBib3RoIElQ
djQgYW5kIElQdjYgYWRkcmVzc2VzLgotICBoaW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFN
OwotICBhZGRyaW5mbyogc2VydmluZm8gPSBOVUxMOwotCi0gIC8vIFVzZSB0aGUgZ2V0YWRkcmlu
Zm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBvZiBJUCBhZGRyZXNzZXMgZm9yCi0gIC8vIHRoZSBn
aXZlbiBob3N0IG5hbWUuCi0gIGNvbnN0IGludCBlcnJvcl9udW0gPSBnZXRhZGRyaW5mbygKLSAg
ICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9ydF9udW1fLmNfc3RyKCksICZoaW50cywgJnNlcnZp
bmZvKTsKLSAgaWYgKGVycm9yX251bSAhPSAwKSB7Ci0gICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8
PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRkcmluZm8oKSBmYWlsZWQ6ICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJvcihlcnJvcl9udW0pOwotICB9Ci0KLSAgLy8gTG9v
cCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBhbmQgY29ubmVjdCB0byB0aGUgZmlyc3Qgd2UgY2Fu
LgotICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRkciA9IHNlcnZpbmZvOyBzb2NrZmRfID09IC0xICYm
IGN1cl9hZGRyICE9IE5VTEw7Ci0gICAgICAgY3VyX2FkZHIgPSBjdXJfYWRkci0+YWlfbmV4dCkg
ewotICAgIHNvY2tmZF8gPSBzb2NrZXQoCi0gICAgICAgIGN1cl9hZGRyLT5haV9mYW1pbHksIGN1
cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2FkZHItPmFpX3Byb3RvY29sKTsKLSAgICBpZiAoc29j
a2ZkXyAhPSAtMSkgewotICAgICAgLy8gQ29ubmVjdCB0aGUgY2xpZW50IHNvY2tldCB0byB0aGUg
c2VydmVyIHNvY2tldC4KLSAgICAgIGlmIChjb25uZWN0KHNvY2tmZF8sIGN1cl9hZGRyLT5haV9h
ZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikgPT0gLTEpIHsKLSAgICAgICAgY2xvc2Uoc29ja2Zk
Xyk7Ci0gICAgICAgIHNvY2tmZF8gPSAtMTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmcmVl
YWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxsIGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVyZQotCi0g
IGlmIChzb2NrZmRfID09IC0xKSB7Ci0gICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFt
X3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5lY3QgdG8gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOwotICB9Ci19Ci0KLS8vIEVuZCBv
ZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIKLSNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9S
RVNVTFRTX18KLQotLy8gQ2xhc3MgU2NvcGVkVHJhY2UKLQotLy8gUHVzaGVzIHRoZSBnaXZlbiBz
b3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVzc2FnZSBvbnRvIGEgcGVyLXRocmVhZAotLy8gdHJh
Y2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29nbGUgVGVzdC4KLVNjb3BlZFRyYWNlOjpTY29wZWRU
cmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkK
LSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygmVW5pdFRlc3Q6Om11dGV4XykgewotICBUcmFjZUlu
Zm8gdHJhY2U7Ci0gIHRyYWNlLmZpbGUgPSBmaWxlOwotICB0cmFjZS5saW5lID0gbGluZTsKLSAg
dHJhY2UubWVzc2FnZSA9IG1lc3NhZ2UuR2V0U3RyaW5nKCk7Ci0KLSAgVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPlB1c2hHVGVzdFRyYWNlKHRyYWNlKTsKLX0KLQotLy8gUG9wcyB0aGUgaW5mbyBw
dXNoZWQgYnkgdGhlIGMndG9yLgotU2NvcGVkVHJhY2U6On5TY29wZWRUcmFjZSgpCi0gICAgR1RF
U1RfTE9DS19FWENMVURFRF8oJlVuaXRUZXN0OjptdXRleF8pIHsKLSAgVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPlBvcEdUZXN0VHJhY2UoKTsKLX0KLQotCi0vLyBjbGFzcyBPc1N0YWNrVHJhY2VH
ZXR0ZXIKLQotY29uc3QgY2hhciogY29uc3QgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlOjpr
RWxpZGVkRnJhbWVzTWFya2VyID0KLSAgICAiLi4uICIgR1RFU1RfTkFNRV8gIiBpbnRlcm5hbCBm
cmFtZXMgLi4uIjsKLQotc3RkOjpzdHJpbmcgT3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50U3Rh
Y2tUcmFjZShpbnQgLyptYXhfZGVwdGgqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IC8qc2tpcF9jb3VudCovKSB7Ci0gIHJldHVybiAiIjsK
LX0KLQotdm9pZCBPc1N0YWNrVHJhY2VHZXR0ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7fQotCi0v
LyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaW4g
aXRzCi0vLyBjb25zdHJ1Y3RvciBhbmQgZGVsZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1Y3Rv
ci4KLWNsYXNzIFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0
IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVw
YXRoKQotICAgICAgOiBwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRfZmls
ZXBhdGgpIHsKLSAgICAvLyBJZiBhIHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMg
c3BlY2lmaWVkLi4uCi0gICAgaWYgKHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9IE5VTEwgJiYg
KnByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9ICdcMCcpIHsKLSAgICAgIC8vIGNyZWF0ZSB0aGUg
ZmlsZSB3aXRoIGEgc2luZ2xlICIwIiBjaGFyYWN0ZXIgaW4gaXQuICBJL08KLSAgICAgIC8vIGVy
cm9ycyBhcmUgaWdub3JlZCBhcyB0aGVyZSdzIG5vdGhpbmcgYmV0dGVyIHdlIGNhbiBkbyBhbmQg
d2UKLSAgICAgIC8vIGRvbid0IHdhbnQgdG8gZmFpbCB0aGUgdGVzdCBiZWNhdXNlIG9mIHRoaXMu
Ci0gICAgICBGSUxFKiBwZmlsZSA9IHBvc2l4OjpGT3BlbihwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aCwgInciKTsKLSAgICAgIGZ3cml0ZSgiMCIsIDEsIDEsIHBmaWxlKTsKLSAgICAgIGZjbG9zZShw
ZmlsZSk7Ci0gICAgfQotICB9Ci0KLSAgflNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKCkgewotICAg
IGlmIChwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8gIT0gTlVMTCAmJiAqcHJlbWF0dXJlX2V4aXRf
ZmlsZXBhdGhfICE9ICdcMCcpIHsKLSAgICAgIHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aF8pOwotICAgIH0KLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgY2hhciogY29uc3QgcHJlbWF0
dXJlX2V4aXRfZmlsZXBhdGhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8o
U2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Ci0KLS8vIGNsYXNzIFRlc3RFdmVudExpc3RlbmVycwotCi1UZXN0RXZlbnRMaXN0ZW5lcnM6OlRl
c3RFdmVudExpc3RlbmVycygpCi0gICAgOiByZXBlYXRlcl8obmV3IGludGVybmFsOjpUZXN0RXZl
bnRSZXBlYXRlcigpKSwKLSAgICAgIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfKE5VTEwpLAotICAg
ICAgZGVmYXVsdF94bWxfZ2VuZXJhdG9yXyhOVUxMKSB7Ci19Ci0KLVRlc3RFdmVudExpc3RlbmVy
czo6flRlc3RFdmVudExpc3RlbmVycygpIHsgZGVsZXRlIHJlcGVhdGVyXzsgfQotCi0vLyBSZXR1
cm5zIHRoZSBzdGFuZGFyZCBsaXN0ZW5lciByZXNwb25zaWJsZSBmb3IgdGhlIGRlZmF1bHQgY29u
c29sZQotLy8gb3V0cHV0LiAgQ2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdGVuZXJzIGxpc3Qg
dG8gc2h1dCBkb3duIGRlZmF1bHQKLS8vIGNvbnNvbGUgb3V0cHV0LiAgTm90ZSB0aGF0IHJlbW92
aW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGxpc3RlbmVyIGxpc3QKLS8vIHdpdGggUmVsZWFzZSB0
cmFuc2ZlcnMgaXRzIG93bmVyc2hpcCB0byB0aGUgdXNlci4KLXZvaWQgVGVzdEV2ZW50TGlzdGVu
ZXJzOjpBcHBlbmQoVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKSB7Ci0gIHJlcGVhdGVyXy0+
QXBwZW5kKGxpc3RlbmVyKTsKLX0KLQotLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gZXZlbnQgbGlzdGVu
ZXIgZnJvbSB0aGUgbGlzdCBhbmQgcmV0dXJucyBpdC4gIEl0IHRoZW4KLS8vIGJlY29tZXMgdGhl
IGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGRlbGV0ZSB0aGUgbGlzdGVuZXIuIFJldHVybnMK
LS8vIE5VTEwgaWYgdGhlIGxpc3RlbmVyIGlzIG5vdCBmb3VuZCBpbiB0aGUgbGlzdC4KLVRlc3RF
dmVudExpc3RlbmVyKiBUZXN0RXZlbnRMaXN0ZW5lcnM6OlJlbGVhc2UoVGVzdEV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyKSB7Ci0gIGlmIChsaXN0ZW5lciA9PSBkZWZhdWx0X3Jlc3VsdF9wcmludGVy
XykKLSAgICBkZWZhdWx0X3Jlc3VsdF9wcmludGVyXyA9IE5VTEw7Ci0gIGVsc2UgaWYgKGxpc3Rl
bmVyID09IGRlZmF1bHRfeG1sX2dlbmVyYXRvcl8pCi0gICAgZGVmYXVsdF94bWxfZ2VuZXJhdG9y
XyA9IE5VTEw7Ci0gIHJldHVybiByZXBlYXRlcl8tPlJlbGVhc2UobGlzdGVuZXIpOwotfQotCi0v
LyBSZXR1cm5zIHJlcGVhdGVyIHRoYXQgYnJvYWRjYXN0cyB0aGUgVGVzdEV2ZW50TGlzdGVuZXIg
ZXZlbnRzIHRvIGFsbAotLy8gc3Vic2NyaWJlcnMuCi1UZXN0RXZlbnRMaXN0ZW5lciogVGVzdEV2
ZW50TGlzdGVuZXJzOjpyZXBlYXRlcigpIHsgcmV0dXJuIHJlcGVhdGVyXzsgfQotCi0vLyBTZXRz
IHRoZSBkZWZhdWx0X3Jlc3VsdF9wcmludGVyIGF0dHJpYnV0ZSB0byB0aGUgcHJvdmlkZWQgbGlz
dGVuZXIuCi0vLyBUaGUgbGlzdGVuZXIgaXMgYWxzbyBhZGRlZCB0byB0aGUgbGlzdGVuZXIgbGlz
dCBhbmQgcHJldmlvdXMKLS8vIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIgaXMgcmVtb3ZlZCBmcm9t
IGl0IGFuZCBkZWxldGVkLiBUaGUgbGlzdGVuZXIgY2FuCi0vLyBhbHNvIGJlIE5VTEwgaW4gd2hp
Y2ggY2FzZSBpdCB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgbGlzdC4gRG9lcwotLy8gbm90aGlu
ZyBpZiB0aGUgcHJldmlvdXMgYW5kIHRoZSBjdXJyZW50IGxpc3RlbmVyIG9iamVjdHMgYXJlIHRo
ZSBzYW1lLgotdm9pZCBUZXN0RXZlbnRMaXN0ZW5lcnM6OlNldERlZmF1bHRSZXN1bHRQcmludGVy
KFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikgewotICBpZiAoZGVmYXVsdF9yZXN1bHRfcHJp
bnRlcl8gIT0gbGlzdGVuZXIpIHsKLSAgICAvLyBJdCBpcyBhbiBlcnJvciB0byBwYXNzIHRoaXMg
bWV0aG9kIGEgbGlzdGVuZXIgdGhhdCBpcyBhbHJlYWR5IGluIHRoZQotICAgIC8vIGxpc3QuCi0g
ICAgZGVsZXRlIFJlbGVhc2UoZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl8pOwotICAgIGRlZmF1bHRf
cmVzdWx0X3ByaW50ZXJfID0gbGlzdGVuZXI7Ci0gICAgaWYgKGxpc3RlbmVyICE9IE5VTEwpCi0g
ICAgICBBcHBlbmQobGlzdGVuZXIpOwotICB9Ci19Ci0KLS8vIFNldHMgdGhlIGRlZmF1bHRfeG1s
X2dlbmVyYXRvciBhdHRyaWJ1dGUgdG8gdGhlIHByb3ZpZGVkIGxpc3RlbmVyLiAgVGhlCi0vLyBs
aXN0ZW5lciBpcyBhbHNvIGFkZGVkIHRvIHRoZSBsaXN0ZW5lciBsaXN0IGFuZCBwcmV2aW91cwot
Ly8gZGVmYXVsdF94bWxfZ2VuZXJhdG9yIGlzIHJlbW92ZWQgZnJvbSBpdCBhbmQgZGVsZXRlZC4g
VGhlIGxpc3RlbmVyIGNhbgotLy8gYWxzbyBiZSBOVUxMIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBu
b3QgYmUgYWRkZWQgdG8gdGhlIGxpc3QuIERvZXMKLS8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3Vz
IGFuZCB0aGUgY3VycmVudCBsaXN0ZW5lciBvYmplY3RzIGFyZSB0aGUgc2FtZS4KLXZvaWQgVGVz
dEV2ZW50TGlzdGVuZXJzOjpTZXREZWZhdWx0WG1sR2VuZXJhdG9yKFRlc3RFdmVudExpc3RlbmVy
KiBsaXN0ZW5lcikgewotICBpZiAoZGVmYXVsdF94bWxfZ2VuZXJhdG9yXyAhPSBsaXN0ZW5lcikg
ewotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHBhc3MgdGhpcyBtZXRob2QgYSBsaXN0ZW5lciB0
aGF0IGlzIGFscmVhZHkgaW4gdGhlCi0gICAgLy8gbGlzdC4KLSAgICBkZWxldGUgUmVsZWFzZShk
ZWZhdWx0X3htbF9nZW5lcmF0b3JfKTsKLSAgICBkZWZhdWx0X3htbF9nZW5lcmF0b3JfID0gbGlz
dGVuZXI7Ci0gICAgaWYgKGxpc3RlbmVyICE9IE5VTEwpCi0gICAgICBBcHBlbmQobGlzdGVuZXIp
OwotICB9Ci19Ci0KLS8vIENvbnRyb2xzIHdoZXRoZXIgZXZlbnRzIHdpbGwgYmUgZm9yd2FyZGVk
IGJ5IHRoZSByZXBlYXRlciB0byB0aGUKLS8vIGxpc3RlbmVycyBpbiB0aGUgbGlzdC4KLWJvb2wg
VGVzdEV2ZW50TGlzdGVuZXJzOjpFdmVudEZvcndhcmRpbmdFbmFibGVkKCkgY29uc3QgewotICBy
ZXR1cm4gcmVwZWF0ZXJfLT5mb3J3YXJkaW5nX2VuYWJsZWQoKTsKLX0KLQotdm9pZCBUZXN0RXZl
bnRMaXN0ZW5lcnM6OlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCkgewotICByZXBlYXRlcl8tPnNl
dF9mb3J3YXJkaW5nX2VuYWJsZWQoZmFsc2UpOwotfQotCi0vLyBjbGFzcyBVbml0VGVzdAotCi0v
LyBHZXRzIHRoZSBzaW5nbGV0b24gVW5pdFRlc3Qgb2JqZWN0LiAgVGhlIGZpcnN0IHRpbWUgdGhp
cyBtZXRob2QgaXMKLS8vIGNhbGxlZCwgYSBVbml0VGVzdCBvYmplY3QgaXMgY29uc3RydWN0ZWQg
YW5kIHJldHVybmVkLiAgQ29uc2VjdXRpdmUKLS8vIGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBzYW1l
IG9iamVjdC4KLS8vCi0vLyBXZSBkb24ndCBwcm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfIGFzIGEg
dXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KLS8vIGNhbGwgdGhpcyBiZWZvcmUgbWFpbigpIHN0YXJ0
cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUgcmV0dXJuCi0vLyB2YWx1ZSB3aWxsIG5ldmVyIGNo
YW5nZS4KLVVuaXRUZXN0KiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSB7Ci0gIC8vIFdoZW4gY29t
cGlsZWQgd2l0aCBNU1ZDIDcuMSBpbiBvcHRpbWl6ZWQgbW9kZSwgZGVzdHJveWluZyB0aGUKLSAg
Ly8gVW5pdFRlc3Qgb2JqZWN0IHVwb24gZXhpdGluZyB0aGUgcHJvZ3JhbSBtZXNzZXMgdXAgdGhl
IGV4aXQgY29kZSwKLSAgLy8gY2F1c2luZyBzdWNjZXNzZnVsIHRlc3RzIHRvIGFwcGVhciBmYWls
ZWQuICBXZSBoYXZlIHRvIHVzZSBhCi0gIC8vIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBpbiB0
aGlzIGNhc2UgdG8gYnlwYXNzIHRoZSBjb21waWxlciBidWcuCi0gIC8vIFRoaXMgaW1wbGVtZW50
YXRpb24gbWFrZXMgdGhlIGNvbXBpbGVyIGhhcHB5LCBhdCB0aGUgY29zdCBvZgotICAvLyBsZWFr
aW5nIHRoZSBVbml0VGVzdCBvYmplY3QuCi0KLSAgLy8gQ29kZUdlYXIgQysrQnVpbGRlciBpbnNp
c3RzIG9uIGEgcHVibGljIGRlc3RydWN0b3IgZm9yIHRoZQotICAvLyBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uLiAgVXNlIHRoaXMgaW1wbGVtZW50YXRpb24gdG8ga2VlcCBnb29kIE9PCi0gIC8vIGRl
c2lnbiB3aXRoIHByaXZhdGUgZGVzdHJ1Y3Rvci4KLQotI2lmIChfTVNDX1ZFUiA9PSAxMzEwICYm
ICFkZWZpbmVkKF9ERUJVRykpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotICBzdGF0aWMgVW5p
dFRlc3QqIGNvbnN0IGluc3RhbmNlID0gbmV3IFVuaXRUZXN0OwotICByZXR1cm4gaW5zdGFuY2U7
Ci0jZWxzZQotICBzdGF0aWMgVW5pdFRlc3QgaW5zdGFuY2U7Ci0gIHJldHVybiAmaW5zdGFuY2U7
Ci0jZW5kaWYgIC8vIChfTVNDX1ZFUiA9PSAxMzEwICYmICFkZWZpbmVkKF9ERUJVRykpIHx8IGRl
ZmluZWQoX19CT1JMQU5EQ19fKQotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1
bCB0ZXN0IGNhc2VzLgotaW50IFVuaXRUZXN0OjpzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgp
IGNvbnN0IHsKLSAgcmV0dXJuIGltcGwoKS0+c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKTsK
LX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0IGNhc2VzLgotaW50IFVuaXRU
ZXN0OjpmYWlsZWRfdGVzdF9jYXNlX2NvdW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbCgpLT5m
YWlsZWRfdGVzdF9jYXNlX2NvdW50KCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwg
dGVzdCBjYXNlcy4KLWludCBVbml0VGVzdDo6dG90YWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3Qg
ewotICByZXR1cm4gaW1wbCgpLT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsKLX0KLQotLy8gR2V0
cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0IGNhc2VzIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUg
dGVzdAotLy8gdGhhdCBzaG91bGQgcnVuLgotaW50IFVuaXRUZXN0Ojp0ZXN0X2Nhc2VfdG9fcnVu
X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbCgpLT50ZXN0X2Nhc2VfdG9fcnVuX2NvdW50
KCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIHRlc3RzLgotaW50IFVu
aXRUZXN0OjpzdWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsKCkt
PnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFp
bGVkIHRlc3RzLgotaW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0
dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291bnQoKTsgfQotCi0vLyBHZXRzIHRoZSBudW1iZXIg
b2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0
LgotaW50IFVuaXRUZXN0OjpyZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
Ci0gIHJldHVybiBpbXBsKCktPnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOwotfQot
Ci0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMuCi1pbnQgVW5pdFRlc3Q6OmRp
c2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rl
c3RfY291bnQoKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50
ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi1pbnQgVW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGwoKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Ci19
Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCi1pbnQgVW5pdFRlc3Q6OnRvdGFs
X3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsg
fQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgotaW50IFVu
aXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90
b19ydW5fY291bnQoKTsgfQotCi0vLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0g
c3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQotLy8gVU5JWCBlcG9jaC4KLWludGVy
bmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKLSAg
ICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1lc3RhbXAoKTsKLX0KLQotLy8gR2V0cyB0aGUgZWxh
cHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCi1pbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRU
ZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGlt
ZSgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgcGFzc2VkIChpLmUu
IGFsbCB0ZXN0IGNhc2VzIHBhc3NlZCkuCi1ib29sIFVuaXRUZXN0OjpQYXNzZWQoKSBjb25zdCB7
IHJldHVybiBpbXBsKCktPlBhc3NlZCgpOyB9Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVu
aXQgdGVzdCBmYWlsZWQgKGkuZS4gc29tZSB0ZXN0IGNhc2UgZmFpbGVkCi0vLyBvciBzb21ldGhp
bmcgb3V0c2lkZSBvZiBhbGwgdGVzdHMgZmFpbGVkKS4KLWJvb2wgVW5pdFRlc3Q6OkZhaWxlZCgp
IGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+RmFpbGVkKCk7IH0KLQotLy8gR2V0cyB0aGUgaS10aCB0
ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8K
LS8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5n
ZSwgcmV0dXJucyBOVUxMLgotY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2FzZShp
bnQgaSkgY29uc3QgewotICByZXR1cm4gaW1wbCgpLT5HZXRUZXN0Q2FzZShpKTsKLX0KLQotLy8g
UmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFp
bHVyZXMgYW5kCi0vLyBwcm9wZXJ0aWVzIGxvZ2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwgdGVz
dCBjYXNlcy4KLWNvbnN0IFRlc3RSZXN1bHQmIFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1bHQo
KSBjb25zdCB7Ci0gIHJldHVybiAqaW1wbCgpLT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKLX0KLQot
Ly8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNh
biByYW5nZSBmcm9tIDAgdG8KLS8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBp
cyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgotVGVzdENhc2UqIFVuaXRUZXN0OjpH
ZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpIHsKLSAgcmV0dXJuIGltcGwoKS0+R2V0TXV0YWJsZVRl
c3RDYXNlKGkpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0
aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwotLy8gaW5zaWRlIEdvb2dsZSBUZXN0Lgot
VGVzdEV2ZW50TGlzdGVuZXJzJiBVbml0VGVzdDo6bGlzdGVuZXJzKCkgewotICByZXR1cm4gKmlt
cGwoKS0+bGlzdGVuZXJzKCk7Ci19Ci0KLS8vIFJlZ2lzdGVycyBhbmQgcmV0dXJucyBhIGdsb2Jh
bCB0ZXN0IGVudmlyb25tZW50LiAgV2hlbiBhIHRlc3QKLS8vIHByb2dyYW0gaXMgcnVuLCBhbGwg
Z2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzIHdpbGwgYmUgc2V0LXVwIGluIHRoZQotLy8gb3JkZXIg
dGhleSB3ZXJlIHJlZ2lzdGVyZWQuICBBZnRlciBhbGwgdGVzdHMgaW4gdGhlIHByb2dyYW0gaGF2
ZQotLy8gZmluaXNoZWQsIGFsbCBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMgd2lsbCBiZSB0b3Ju
LWRvd24gaW4gdGhlCi0vLyAqcmV2ZXJzZSogb3JkZXIgdGhleSB3ZXJlIHJlZ2lzdGVyZWQuCi0v
LwotLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGdpdmVuIGVu
dmlyb25tZW50LgotLy8KLS8vIFdlIGRvbid0IHByb3RlY3QgdGhpcyB1bmRlciBtdXRleF8sIGFz
IHdlIG9ubHkgc3VwcG9ydCBjYWxsaW5nIGl0Ci0vLyBmcm9tIHRoZSBtYWluIHRocmVhZC4KLUVu
dmlyb25tZW50KiBVbml0VGVzdDo6QWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgewot
ICBpZiAoZW52ID09IE5VTEwpIHsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIGltcGxfLT5l
bnZpcm9ubWVudHMoKS5wdXNoX2JhY2soZW52KTsKLSAgcmV0dXJuIGVudjsKLX0KLQotLy8gQWRk
cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiAgQWxs
IEdvb2dsZSBUZXN0Ci0vLyBhc3NlcnRpb24gbWFjcm9zIChlLmcuIEFTU0VSVF9UUlVFLCBFWFBF
Q1RfRVEsIGV0YykgZXZlbnR1YWxseSBjYWxsCi0vLyB0aGlzIHRvIHJlcG9ydCB0aGVpciByZXN1
bHRzLiAgVGhlIHVzZXIgY29kZSBzaG91bGQgdXNlIHRoZQotLy8gYXNzZXJ0aW9uIG1hY3JvcyBp
bnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLXZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQ
YXJ0UmVzdWx0KAotICAgIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgIGNv
bnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICBpbnQgbGluZV9udW1iZXIsCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNl
KSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8
PCBtZXNzYWdlOwotCi0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgaWYg
KGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygpLnNpemUoKSA+IDApIHsKLSAgICBtc2cgPDwgIlxu
IiA8PCBHVEVTVF9OQU1FXyA8PCAiIHRyYWNlOiI7Ci0KLSAgICBmb3IgKGludCBpID0gc3RhdGlj
X2Nhc3Q8aW50PihpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKS5zaXplKCkpOwotICAgICAgICAg
aSA+IDA7IC0taSkgewotICAgICAgY29uc3QgaW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UgPSBp
bXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKVtpIC0gMV07Ci0gICAgICBtc2cgPDwgIlxuIiA8PCBp
bnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9uKHRyYWNlLmZpbGUsIHRyYWNlLmxpbmUpCi0gICAg
ICAgICAgPDwgIiAiIDw8IHRyYWNlLm1lc3NhZ2U7Ci0gICAgfQotICB9Ci0KLSAgaWYgKG9zX3N0
YWNrX3RyYWNlLmNfc3RyKCkgIT0gTlVMTCAmJiAhb3Nfc3RhY2tfdHJhY2UuZW1wdHkoKSkgewot
ICAgIG1zZyA8PCBpbnRlcm5hbDo6a1N0YWNrVHJhY2VNYXJrZXIgPDwgb3Nfc3RhY2tfdHJhY2U7
Ci0gIH0KLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQgPQotICAgIFRlc3RQYXJ0UmVz
dWx0KHJlc3VsdF90eXBlLCBmaWxlX25hbWUsIGxpbmVfbnVtYmVyLAotICAgICAgICAgICAgICAg
ICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgaW1wbF8tPkdldFRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCktPgotICAgICAgUmVwb3J0VGVzdFBhcnRSZXN1bHQo
cmVzdWx0KTsKLQotICBpZiAocmVzdWx0X3R5cGUgIT0gVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNz
KSB7Ci0gICAgLy8gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIK
LSAgICAvLyBndGVzdF90aHJvd19vbl9mYWlsdXJlLiAgVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNl
dCB0aGUgbGF0dGVyCi0gICAgLy8gaW4gdGhlIGNvZGUgKHBlcmhhcHMgaW4gb3JkZXIgdG8gdXNl
IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMKLSAgICAvLyB3aXRoIGFub3RoZXIgdGVzdGluZyBmcmFt
ZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3JtZXIgb24gdGhlCi0gICAgLy8gY29tbWFuZCBsaW5l
IGZvciBkZWJ1Z2dpbmcuCi0gICAgaWYgKEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHsK
LSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVT
VF9PU19XSU5ET1dTX1JUCi0gICAgICAvLyBVc2luZyBEZWJ1Z0JyZWFrIG9uIFdpbmRvd3MgYWxs
b3dzIGd0ZXN0IHRvIHN0aWxsIGJyZWFrIGludG8gYSBkZWJ1Z2dlcgotICAgICAgLy8gd2hlbiBh
IGZhaWx1cmUgaGFwcGVucyBhbmQgYm90aCB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGFu
ZAotICAgICAgLy8gdGhlIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBmbGFncyBhcmUgc3BlY2lm
aWVkLgotICAgICAgRGVidWdCcmVhaygpOwotI2Vsc2UKLSAgICAgIC8vIERlcmVmZXJlbmNlIE5V
TEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50ZXIgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKLSAg
ICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVzZSB0aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3Ig
X19idWlsdGluX3RyYXAoKSBmb3IKLSAgICAgIC8vIHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNu
J3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwgYW5kIHNvbWUgZGVidWdnZXJzCi0gICAgICAvLyBk
b24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgpLgotICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxl
IGludCo+KE5VTEwpID0gMTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotICAgIH0gZWxz
ZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSkgewotI2lmIEdURVNUX0hBU19FWENF
UFRJT05TCi0gICAgICB0aHJvdyBpbnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24o
cmVzdWx0KTsKLSNlbHNlCi0gICAgICAvLyBXZSBjYW5ub3QgY2FsbCBhYm9ydCgpIGFzIGl0IGdl
bmVyYXRlcyBhIHBvcC11cCBpbiBkZWJ1ZyBtb2RlCi0gICAgICAvLyB0aGF0IGNhbm5vdCBiZSBz
dXBwcmVzc2VkIGluIFZDIDcuMSBvciBiZWxvdy4KLSAgICAgIGV4aXQoMSk7Ci0jZW5kaWYKLSAg
ICB9Ci0gIH0KLX0KLQotLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0
UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQotLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3Vy
cmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0X3Jlc3VsdF8gd2hlbiBpbnZva2VkCi0vLyBmcm9t
IFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9w
ZXJ0eSBzZXQKLS8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVh
ZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCi0vLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3
aWxsIGJlIHVwZGF0ZWQuCi12b2lkIFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6
OnN0cmluZyYga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlKSB7Ci0gIGltcGxfLT5SZWNvcmRQcm9wZXJ0eShUZXN0UHJvcGVydHkoa2V5
LCB2YWx1ZSkpOwotfQotCi0vLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVj
dCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCi0vLyBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgb3Ig
MSBvdGhlcndpc2UuCi0vLwotLy8gV2UgZG9uJ3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4Xywg
YXMgd2Ugb25seSBzdXBwb3J0IGNhbGxpbmcgaXQKLS8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgot
aW50IFVuaXRUZXN0OjpSdW4oKSB7Ci0gIGNvbnN0IGJvb2wgaW5fZGVhdGhfdGVzdF9jaGlsZF9w
cm9jZXNzID0KLSAgICAgIGludGVybmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90
ZXN0KS5sZW5ndGgoKSA+IDA7Ci0KLSAgLy8gR29vZ2xlIFRlc3QgaW1wbGVtZW50cyB0aGlzIHBy
b3RvY29sIGZvciBjYXRjaGluZyB0aGF0IGEgdGVzdAotICAvLyBwcm9ncmFtIGV4aXRzIGJlZm9y
ZSByZXR1cm5pbmcgY29udHJvbCB0byBHb29nbGUgVGVzdDoKLSAgLy8KLSAgLy8gICAxLiBVcG9u
IHN0YXJ0LCBHb29nbGUgVGVzdCBjcmVhdGVzIGEgZmlsZSB3aG9zZSBhYnNvbHV0ZSBwYXRoCi0g
IC8vICAgICAgaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAvLyAg
ICAgIFRFU1RfUFJFTUFUVVJFX0VYSVRfRklMRS4KLSAgLy8gICAyLiBXaGVuIEdvb2dsZSBUZXN0
IGhhcyBmaW5pc2hlZCBpdHMgd29yaywgaXQgZGVsZXRlcyB0aGUgZmlsZS4KLSAgLy8KLSAgLy8g
VGhpcyBhbGxvd3MgYSB0ZXN0IHJ1bm5lciB0byBzZXQgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxF
IGJlZm9yZQotICAvLyBydW5uaW5nIGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFu
ZCBjaGVjayB0aGUgZXhpc3RlbmNlCi0gIC8vIG9mIHRoZSBmaWxlIGF0IHRoZSBlbmQgb2YgdGhl
IHRlc3QgZXhlY3V0aW9uIHRvIHNlZSBpZiBpdCBoYXMKLSAgLy8gZXhpdGVkIHByZW1hdHVyZWx5
LgotCi0gIC8vIElmIHdlIGFyZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyBvZiBhIGRlYXRoIHRlc3Qs
IGRvbid0Ci0gIC8vIGNyZWF0ZS9kZWxldGUgdGhlIHByZW1hdHVyZSBleGl0IGZpbGUsIGFzIGRv
aW5nIHNvIGlzIHVubmVjZXNzYXJ5Ci0gIC8vIGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcmVudCBw
cm9jZXNzLiAgT3RoZXJ3aXNlLCBjcmVhdGUvZGVsZXRlCi0gIC8vIHRoZSBmaWxlIHVwb24gZW50
ZXJpbmcvbGVhdmluZyB0aGlzIGZ1bmN0aW9uLiAgSWYgdGhlIHByb2dyYW0KLSAgLy8gc29tZWhv
dyBleGl0cyBiZWZvcmUgdGhpcyBmdW5jdGlvbiBoYXMgYSBjaGFuY2UgdG8gcmV0dXJuLCB0aGUK
LSAgLy8gcHJlbWF0dXJlLWV4aXQgZmlsZSB3aWxsIGJlIGxlZnQgdW5kZWxldGVkLCBjYXVzaW5n
IGEgdGVzdCBydW5uZXIKLSAgLy8gdGhhdCB1bmRlcnN0YW5kcyB0aGUgcHJlbWF0dXJlLWV4aXQt
ZmlsZSBwcm90b2NvbCB0byByZXBvcnQgdGhlCi0gIC8vIHRlc3QgYXMgaGF2aW5nIGZhaWxlZC4K
LSAgY29uc3QgaW50ZXJuYWw6OlNjb3BlZFByZW1hdHVyZUV4aXRGaWxlIHByZW1hdHVyZV9leGl0
X2ZpbGUoCi0gICAgICBpbl9kZWF0aF90ZXN0X2NoaWxkX3Byb2Nlc3MgPwotICAgICAgTlVMTCA6
IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKSk7Ci0K
LSAgLy8gQ2FwdHVyZXMgdGhlIHZhbHVlIG9mIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucyku
ICBUaGlzIHZhbHVlIHdpbGwgYmUKLSAgLy8gdXNlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBw
cm9ncmFtLgotICBpbXBsKCktPnNldF9jYXRjaF9leGNlcHRpb25zKEdURVNUX0ZMQUcoY2F0Y2hf
ZXhjZXB0aW9ucykpOwotCi0jaWYgR1RFU1RfSEFTX1NFSAotICAvLyBFaXRoZXIgdGhlIHVzZXIg
d2FudHMgR29vZ2xlIFRlc3QgdG8gY2F0Y2ggZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlCi0gIC8v
IHRlc3RzIG9yIHRoaXMgaXMgZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIGRlYXRoIHRlc3Qg
Y2hpbGQKLSAgLy8gcHJvY2Vzcy4gSW4gZWl0aGVyIGNhc2UgdGhlIHVzZXIgZG9lcyBub3Qgd2Fu
dCB0byBzZWUgcG9wLXVwIGRpYWxvZ3MKLSAgLy8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4
cGVjdGVkLgotICBpZiAoaW1wbCgpLT5jYXRjaF9leGNlcHRpb25zKCkgfHwgaW5fZGVhdGhfdGVz
dF9jaGlsZF9wcm9jZXNzKSB7Ci0jIGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RF
U1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAotICAgIC8vIFNldEVy
cm9yTW9kZSBkb2Vzbid0IGV4aXN0IG9uIENFLgotICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENS
SVRJQ0FMRVJST1JTIHwgU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFQgfAotICAgICAgICAgICAg
ICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKLSMg
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0jIGlmIChkZWZpbmVkKF9NU0Nf
VkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXKSAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLSAgICAvLyBEZWF0aCB0ZXN0IGNoaWxkcmVuIGNhbiBiZSB0ZXJtaW5hdGVkIHdpdGggX2Fi
b3J0KCkuICBPbiBXaW5kb3dzLAotICAgIC8vIF9hYm9ydCgpIGNhbiBzaG93IGEgZGlhbG9nIHdp
dGggYSB3YXJuaW5nIG1lc3NhZ2UuICBUaGlzIGZvcmNlcyB0aGUKLSAgICAvLyBhYm9ydCBtZXNz
YWdlIHRvIGdvIHRvIHN0ZGVyciBpbnN0ZWFkLgotICAgIF9zZXRfZXJyb3JfbW9kZShfT1VUX1RP
X1NUREVSUik7Ci0jIGVuZGlmCi0KLSMgaWYgX01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKLSAgICAvLyBJbiB0aGUgZGVidWcgdmVyc2lvbiwgVmlzdWFsIFN0dWRp
byBwb3BzIHVwIGEgc2VwYXJhdGUgZGlhbG9nCi0gICAgLy8gb2ZmZXJpbmcgYSBjaG9pY2UgdG8g
ZGVidWcgdGhlIGFib3J0ZWQgcHJvZ3JhbS4gV2UgbmVlZCB0byBzdXBwcmVzcwotICAgIC8vIHRo
aXMgZGlhbG9nIG9yIGl0IHdpbGwgcG9wIHVwIGZvciBldmVyeSBFWFBFQ1QvQVNTRVJUX0RFQVRI
IHN0YXRlbWVudAotICAgIC8vIGV4ZWN1dGVkLiBHb29nbGUgVGVzdCB3aWxsIG5vdGlmeSB0aGUg
dXNlciBvZiBhbnkgdW5leHBlY3RlZAotICAgIC8vIGZhaWx1cmUgdmlhIHN0ZGVyci4KLSAgICAv
LwotICAgIC8vIFZDKysgZG9lc24ndCBkZWZpbmUgX3NldF9hYm9ydF9iZWhhdmlvcigpIHByaW9y
IHRvIHRoZSB2ZXJzaW9uIDguMC4KLSAgICAvLyBVc2VycyBvZiBwcmlvciBWQyB2ZXJzaW9ucyBz
aGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBwYWluIG9mCi0gICAgLy8gY2xpY2tpbmcgdGhyb3Vn
aCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxvZ3MuCi0gICAgLy8gVE9ETyh2bGFkbEBnb29nbGUu
Y29tKTogZmluZCBhIHdheSB0byBzdXBwcmVzcyB0aGUgYWJvcnQgZGlhbG9nKCkgaW4gdGhlCi0g
ICAgLy8gZGVidWcgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggVkMgNy4xIG9yIGxvd2VyLgotICAg
IGlmICghR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSkKLSAgICAgIF9zZXRfYWJvcnRfYmVo
YXZpb3IoCi0gICAgICAgICAgMHgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxhZ3M6Ci0gICAgICAgICAgX1dSSVRFX0FCT1JUX01T
RyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8vIHBvcC11cCB3aW5kb3csIGNvcmUgZHVtcC4KLSMg
ZW5kaWYKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU0VICi0KLSAgcmV0dXJuIGludGVybmFs
OjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKLSAgICAgIGltcGwoKSwKLSAg
ICAgICZpbnRlcm5hbDo6VW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cywKLSAgICAgICJhdXhpbGlh
cnkgdGVzdCBjb2RlIChlbnZpcm9ubWVudHMgb3IgZXZlbnQgbGlzdGVuZXJzKSIpID8gMCA6IDE7
Ci19Ci0KLS8vIFJldHVybnMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0IFRF
U1QoKSBvciBURVNUX0YoKSB3YXMKLS8vIGV4ZWN1dGVkLgotY29uc3QgY2hhciogVW5pdFRlc3Q6
Om9yaWdpbmFsX3dvcmtpbmdfZGlyKCkgY29uc3QgewotICByZXR1cm4gaW1wbF8tPm9yaWdpbmFs
X3dvcmtpbmdfZGlyXy5jX3N0cigpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBUZXN0Q2FzZSBvYmpl
Y3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKLS8vIG9yIE5VTEwgaWYg
bm8gdGVzdCBpcyBydW5uaW5nLgotY29uc3QgVGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rl
c3RfY2FzZSgpIGNvbnN0Ci0gICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7Ci0gIGlu
dGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgcmV0dXJuIGltcGxfLT5jdXJyZW50
X3Rlc3RfY2FzZSgpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRo
ZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKLS8vIG9yIE5VTEwgaWYgbm8gdGVzdCBp
cyBydW5uaW5nLgotY29uc3QgVGVzdEluZm8qIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygp
IGNvbnN0Ci0gICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7Ci0gIGludGVybmFsOjpN
dXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfaW5m
bygpOwotfQotCi0vLyBSZXR1cm5zIHRoZSByYW5kb20gc2VlZCB1c2VkIGF0IHRoZSBzdGFydCBv
ZiB0aGUgY3VycmVudCB0ZXN0IHJ1bi4KLWludCBVbml0VGVzdDo6cmFuZG9tX3NlZWQoKSBjb25z
dCB7IHJldHVybiBpbXBsXy0+cmFuZG9tX3NlZWQoKTsgfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKLS8vIFJldHVybnMgUGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVz
ZWQgdG8ga2VlcCB0cmFjayBvZgotLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5z
dGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi1pbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RD
YXNlUmVnaXN0cnkmCi0gICAgVW5pdFRlc3Q6OnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgp
Ci0gICAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewotICByZXR1cm4gaW1wbF8t
PnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotCi0vLyBDcmVhdGVzIGFuIGVtcHR5IFVuaXRUZXN0LgotVW5pdFRlc3Q6OlVu
aXRUZXN0KCkgewotICBpbXBsXyA9IG5ldyBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKHRoaXMpOwot
fQotCi0vLyBEZXN0cnVjdG9yIG9mIFVuaXRUZXN0LgotVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsK
LSAgZGVsZXRlIGltcGxfOwotfQotCi0vLyBQdXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BF
RF9UUkFDRSgpIG9uIHRvIHRoZSBwZXItdGhyZWFkCi0vLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFj
ay4KLXZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVzdFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUlu
Zm8mIHRyYWNlKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11dGV4XykgewotICBpbnRlcm5h
bDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7Ci0gIGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygp
LnB1c2hfYmFjayh0cmFjZSk7Ci19Ci0KLS8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhy
ZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNrLgotdm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFj
ZSgpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKSB7Ci0gIGludGVybmFsOjpNdXRl
eExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgaW1wbF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2Jh
Y2soKTsKLX0KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotVW5pdFRlc3RJbXBsOjpVbml0VGVz
dEltcGwoVW5pdFRlc3QqIHBhcmVudCkKLSAgICA6IHBhcmVudF8ocGFyZW50KSwKLSAgICAgIEdU
RVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0
aWFsaXplciAqLykKLSAgICAgIGRlZmF1bHRfZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0
ZXJfKHRoaXMpLAotICAgICAgZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVw
b3J0ZXJfKHRoaXMpLAotICAgICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi0g
ICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvdGVyXygKLSAgICAgICAgICAmZGVmYXVs
dF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9yZXBvcnRlcl8pLAotICAgICAgcGVyX3RocmVhZF90
ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygKLSAgICAgICAgICAmZGVmYXVsdF9wZXJfdGhyZWFk
X3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKSwKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
ICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5XygpLAotICAgICAgcGFyYW1ldGVyaXpl
ZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSksCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCi0gICAgICBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8oLTEpLAotICAgICAgY3VycmVudF90ZXN0
X2Nhc2VfKE5VTEwpLAotICAgICAgY3VycmVudF90ZXN0X2luZm9fKE5VTEwpLAotICAgICAgYWRf
aG9jX3Rlc3RfcmVzdWx0XygpLAotICAgICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyhOVUxMKSwK
LSAgICAgIHBvc3RfZmxhZ19wYXJzZV9pbml0X3BlcmZvcm1lZF8oZmFsc2UpLAotICAgICAgcmFu
ZG9tX3NlZWRfKDApLCAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBm
aXJzdCB1c2UuCi0gICAgICByYW5kb21fKDApLCAgLy8gV2lsbCBiZSByZXNlZWRlZCBiZWZvcmUg
Zmlyc3QgdXNlLgotICAgICAgc3RhcnRfdGltZXN0YW1wXygwKSwKLSAgICAgIGVsYXBzZWRfdGlt
ZV8oMCksCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9y
eV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0b3J5KSwKLSNlbmRpZgotICAgICAgLy8gV2lsbCBi
ZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2UuCi0gICAgICBjYXRjaF9l
eGNlcHRpb25zXyhmYWxzZSkgewotICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFJlc3VsdFByaW50
ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcik7Ci19Ci0KLVVuaXRUZXN0SW1wbDo6
flVuaXRUZXN0SW1wbCgpIHsKLSAgLy8gRGVsZXRlcyBldmVyeSBUZXN0Q2FzZS4KLSAgRm9yRWFj
aCh0ZXN0X2Nhc2VzXywgaW50ZXJuYWw6OkRlbGV0ZTxUZXN0Q2FzZT4pOwotCi0gIC8vIERlbGV0
ZXMgZXZlcnkgRW52aXJvbm1lbnQuCi0gIEZvckVhY2goZW52aXJvbm1lbnRzXywgaW50ZXJuYWw6
OkRlbGV0ZTxFbnZpcm9ubWVudD4pOwotCi0gIGRlbGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJf
OwotfQotCi0vLyBBZGRzIGEgVGVzdFByb3BlcnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQg
b2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCi0vLyBjb250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVu
dCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9yZXN1bHQgd2hlbiBpbnZva2UKLS8vIGZyb20gU2V0
VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNlLCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNl
dAotLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJlc3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVy
dHkgd2l0aCB0aGUgc2FtZSBrZXksCi0vLyB0aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotdm9p
ZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9w
cm9wZXJ0eSkgewotICBzdGQ6OnN0cmluZyB4bWxfZWxlbWVudDsKLSAgVGVzdFJlc3VsdCogdGVz
dF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFwcHJvcHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRp
bmcuCi0KLSAgaWYgKGN1cnJlbnRfdGVzdF9pbmZvXyAhPSBOVUxMKSB7Ci0gICAgeG1sX2VsZW1l
bnQgPSAidGVzdGNhc2UiOwotICAgIHRlc3RfcmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18t
PnJlc3VsdF8pOwotICB9IGVsc2UgaWYgKGN1cnJlbnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7Ci0g
ICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRlIjsKLSAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVu
dF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9yZXN1bHRfKTsKLSAgfSBlbHNlIHsKLSAgICB4bWxf
ZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKLSAgICB0ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9y
ZXN1bHRfOwotICB9Ci0gIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwg
dGVzdF9wcm9wZXJ0eSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotLy8gRGlzYWJs
ZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUgY29udHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0
aCB0ZXN0Ci0vLyBzdWJwcm9jZXNzLiBNdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29n
bGVUZXN0Lgotdm9pZCBVbml0VGVzdEltcGw6OlN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9j
ZXNzKCkgewotICBpZiAoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ18uZ2V0KCkgIT0gTlVM
TCkKLSAgICBsaXN0ZW5lcnMoKS0+U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoKTsKLX0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVu
ZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBhcyBzcGVjaWZpZWQgYnkKLS8vIFVuaXRUZXN0T3B0
aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KLXZvaWQgVW5p
dFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRwdXQoKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBv
dXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKLSAgaWYg
KG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsKLSAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFht
bEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyKAotICAgICAgICBVbml0VGVz
dE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKLSAgfSBl
bHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIiKSB7Ci0gICAgcHJpbnRmKCJXQVJOSU5HOiB1bnJl
Y29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgaWdub3JlZC5cbiIsCi0gICAgICAgICAgIG91
dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLX0KLQotI2lm
IEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLS8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVy
cyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyBpbiBzdHJpbmcgZm9ybS4KLS8vIE11c3Qgbm90
IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2dsZVRlc3QuCi12b2lkIFVuaXRUZXN0SW1wbDo6Q29u
ZmlndXJlU3RyZWFtaW5nT3V0cHV0KCkgewotICBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0g
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKLSAgaWYgKCF0YXJnZXQuZW1wdHkoKSkgewot
ICAgIGNvbnN0IHNpemVfdCBwb3MgPSB0YXJnZXQuZmluZCgnOicpOwotICAgIGlmIChwb3MgIT0g
c3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAgIGxpc3RlbmVycygpLT5BcHBlbmQobmV3IFN0cmVh
bWluZ0xpc3RlbmVyKHRhcmdldC5zdWJzdHIoMCwgcG9zKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zdWJzdHIocG9zKzEpKSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIHByaW50ZigiV0FSTklORzogdW5yZWNvZ25pemVkIHN0cmVhbWluZyB0
YXJnZXQgXCIlc1wiIGlnbm9yZWQuXG4iLAotICAgICAgICAgICAgIHRhcmdldC5jX3N0cigpKTsK
LSAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgIH0KLSAgfQotfQotI2VuZGlmICAvLyBHVEVTVF9D
QU5fU1RSRUFNX1JFU1VMVFNfCi0KLS8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVuZGVu
dCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCi0vLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09u
bHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29vZ2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwotLy8g
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAgSW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2Fs
bCBJbml0R29vZ2xlVGVzdAotLy8gdGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBmcm9tIFJ1
bkFsbFRlc3RzLiAgU2luY2UgdGhpcyBmdW5jdGlvbiBjYW4gYmUKLS8vIGNhbGxlZCBtb3JlIHRo
YW4gb25jZSwgaXQgaGFzIHRvIGJlIGlkZW1wb3RlbnQuCi12b2lkIFVuaXRUZXN0SW1wbDo6UG9z
dEZsYWdQYXJzaW5nSW5pdCgpIHsKLSAgLy8gRW5zdXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24gZG9l
cyBub3QgZXhlY3V0ZSBtb3JlIHRoYW4gb25jZS4KLSAgaWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5p
dF9wZXJmb3JtZWRfKSB7Ci0gICAgcG9zdF9mbGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyA9IHRy
dWU7Ci0KLSNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXykKLSAg
ICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlmaWNhdGlvbnMgYWJvdXQga2V5IHByb2Nlc3Mgc3Rh
dGUgY2hhbmdlcy4KLSAgICBsaXN0ZW5lcnMoKS0+QXBwZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVT
VF9FVkVOVF9MSVNURU5FUl8oKSk7Ci0jZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RF
U1RfRVZFTlRfTElTVEVORVJfKQotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgICBJbml0
RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJbmZvKCk7Ci0gICAgU3VwcHJlc3NUZXN0RXZlbnRz
SWZJblN1YnByb2Nlc3MoKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotICAg
IC8vIFJlZ2lzdGVycyBwYXJhbWV0ZXJpemVkIHRlc3RzLiBUaGlzIG1ha2VzIHBhcmFtZXRlcml6
ZWQgdGVzdHMKLSAgICAvLyBhdmFpbGFibGUgdG8gdGhlIFVuaXRUZXN0IHJlZmxlY3Rpb24gQVBJ
IHdpdGhvdXQgcnVubmluZwotICAgIC8vIFJVTl9BTExfVEVTVFMuCi0gICAgUmVnaXN0ZXJQYXJh
bWV0ZXJpemVkVGVzdHMoKTsKLQotICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBYTUwg
b3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB1c2VycwotICAgIC8vIHRvIHNodXQg
ZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0IGJlZm9yZSBpbnZva2luZyBSVU5fQUxMX1RFU1RT
LgotICAgIENvbmZpZ3VyZVhtbE91dHB1dCgpOwotCi0jaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNV
TFRTXwotICAgIC8vIENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1
bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVyLgotICAgIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1
dCgpOwotI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0gIH0KLX0KLQotLy8g
QSBwcmVkaWNhdGUgdGhhdCBjaGVja3MgdGhlIG5hbWUgb2YgYSBUZXN0Q2FzZSBhZ2FpbnN0IGEg
a25vd24KLS8vIHZhbHVlLgotLy8KLS8vIFRoaXMgaXMgdXNlZCBmb3IgaW1wbGVtZW50YXRpb24g
b2YgdGhlIFVuaXRUZXN0IGNsYXNzIG9ubHkuICBXZSBwdXQKLS8vIGl0IGluIHRoZSBhbm9ueW1v
dXMgbmFtZXNwYWNlIHRvIHByZXZlbnQgcG9sbHV0aW5nIHRoZSBvdXRlcgotLy8gbmFtZXNwYWNl
LgotLy8KLS8vIFRlc3RDYXNlTmFtZUlzIGlzIGNvcHlhYmxlLgotY2xhc3MgVGVzdENhc2VOYW1l
SXMgewotIHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0b3IuCi0gIGV4cGxpY2l0IFRlc3RDYXNlTmFt
ZUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQotICAgICAgOiBuYW1lXyhuYW1lKSB7fQotCi0g
IC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG5hbWUgb2YgdGVzdF9jYXNlIG1hdGNoZXMgbmFtZV8u
Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHRlc3RfY2FzZSAhPSBOVUxMICYmIHN0cmNtcCh0ZXN0X2Nhc2UtPm5hbWUoKSwg
bmFtZV8uY19zdHIoKSkgPT0gMDsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgbmFt
ZV87Ci19OwotCi0vLyBGaW5kcyBhbmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVu
IG5hbWUuICBJZiBvbmUgZG9lc24ndAotLy8gZXhpc3QsIGNyZWF0ZXMgb25lIGFuZCByZXR1cm5z
IGl0LiAgSXQncyB0aGUgQ0FMTEVSJ1MKLS8vIFJFU1BPTlNJQklMSVRZIHRvIGVuc3VyZSB0aGF0
IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgV0hFTiBUSEUKLS8vIFRFU1RTIEFSRSBOT1Qg
U0hVRkZMRUQuCi0vLwotLy8gQXJndW1lbnRzOgotLy8KLS8vICAgdGVzdF9jYXNlX25hbWU6IG5h
bWUgb2YgdGhlIHRlc3QgY2FzZQotLy8gICB0eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCi0vLyAgICAgICAgICAgICAg
ICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2Fz
ZS4KLS8vICAgc2V0X3VwX3RjOiAgICAgIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0
cyB1cCB0aGUgdGVzdCBjYXNlCi0vLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBm
dW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotVGVzdENhc2UqIFVuaXRUZXN0
SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0
X3VwX3RjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRv
d25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjKSB7Ci0gIC8vIENhbiB3ZSBmaW5kIGEgVGVzdENh
c2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZT8KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6
Y29uc3RfaXRlcmF0b3IgdGVzdF9jYXNlID0KLSAgICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2Vz
Xy5iZWdpbigpLCB0ZXN0X2Nhc2VzXy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICBUZXN0Q2Fz
ZU5hbWVJcyh0ZXN0X2Nhc2VfbmFtZSkpOwotCi0gIGlmICh0ZXN0X2Nhc2UgIT0gdGVzdF9jYXNl
c18uZW5kKCkpCi0gICAgcmV0dXJuICp0ZXN0X2Nhc2U7Ci0KLSAgLy8gTm8uICBMZXQncyBjcmVh
dGUgb25lLgotICBUZXN0Q2FzZSogY29uc3QgbmV3X3Rlc3RfY2FzZSA9Ci0gICAgICBuZXcgVGVz
dENhc2UodGVzdF9jYXNlX25hbWUsIHR5cGVfcGFyYW0sIHNldF91cF90YywgdGVhcl9kb3duX3Rj
KTsKLQotICAvLyBJcyB0aGlzIGEgZGVhdGggdGVzdCBjYXNlPwotICBpZiAoaW50ZXJuYWw6OlVu
aXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlYXRoVGVzdENhc2VGaWx0ZXIp
KSB7Ci0gICAgLy8gWWVzLiAgSW5zZXJ0cyB0aGUgdGVzdCBjYXNlIGFmdGVyIHRoZSBsYXN0IGRl
YXRoIHRlc3QgY2FzZQotICAgIC8vIGRlZmluZWQgc28gZmFyLiAgVGhpcyBvbmx5IHdvcmtzIHdo
ZW4gdGhlIHRlc3QgY2FzZXMgaGF2ZW4ndAotICAgIC8vIGJlZW4gc2h1ZmZsZWQuICBPdGhlcndp
c2Ugd2UgbWF5IGVuZCB1cCBydW5uaW5nIGEgZGVhdGggdGVzdAotICAgIC8vIGFmdGVyIGEgbm9u
LWRlYXRoIHRlc3QuCi0gICAgKytsYXN0X2RlYXRoX3Rlc3RfY2FzZV87Ci0gICAgdGVzdF9jYXNl
c18uaW5zZXJ0KHRlc3RfY2FzZXNfLmJlZ2luKCkgKyBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8sCi0g
ICAgICAgICAgICAgICAgICAgICAgIG5ld190ZXN0X2Nhc2UpOwotICB9IGVsc2UgewotICAgIC8v
IE5vLiAgQXBwZW5kcyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgotICAgIHRlc3RfY2FzZXNfLnB1
c2hfYmFjayhuZXdfdGVzdF9jYXNlKTsKLSAgfQotCi0gIHRlc3RfY2FzZV9pbmRpY2VzXy5wdXNo
X2JhY2soc3RhdGljX2Nhc3Q8aW50Pih0ZXN0X2Nhc2VfaW5kaWNlc18uc2l6ZSgpKSk7Ci0gIHJl
dHVybiBuZXdfdGVzdF9jYXNlOwotfQotCi0vLyBIZWxwZXJzIGZvciBzZXR0aW5nIHVwIC8gdGVh
cmluZyBkb3duIHRoZSBnaXZlbiBlbnZpcm9ubWVudC4gIFRoZXkKLS8vIGFyZSBmb3IgdXNlIGlu
IHRoZSBGb3JFYWNoKCkgZnVuY3Rpb24uCi1zdGF0aWMgdm9pZCBTZXRVcEVudmlyb25tZW50KEVu
dmlyb25tZW50KiBlbnYpIHsgZW52LT5TZXRVcCgpOyB9Ci1zdGF0aWMgdm9pZCBUZWFyRG93bkVu
dmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsgZW52LT5UZWFyRG93bigpOyB9Ci0KLS8vIFJ1
bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRlc3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwg
YW5kCi0vLyByZXR1cm5zIHRydWUgaWYgYWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55
IGV4Y2VwdGlvbiBpcwotLy8gdGhyb3duIGR1cmluZyBhIHRlc3QsIHRoZSB0ZXN0IGlzIGNvbnNp
ZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQgdGhlCi0vLyByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0
aWxsIGJlIHJ1bi4KLS8vCi0vLyBXaGVuIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQs
IGl0IGV4cGFuZHMgYW5kIHJlZ2lzdGVycwotLy8gcGFyYW1ldGVyaXplZCB0ZXN0cyBmaXJzdCBp
biBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0cygpLgotLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyBj
YWxsZWQgZnJvbSBSdW5BbGxUZXN0cygpIG1heSBzYWZlbHkgYXNzdW1lIHRoYXQKLS8vIHBhcmFt
ZXRlcml6ZWQgdGVzdHMgYXJlIHJlYWR5IHRvIGJlIGNvdW50ZWQgYW5kIHJ1bi4KLWJvb2wgVW5p
dFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsKLSAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xlVGVz
dCgpIHdhcyBjYWxsZWQuCi0gIGlmICghR1Rlc3RJc0luaXRpYWxpemVkKCkpIHsKLSAgICBwcmlu
dGYoIiVzIiwKLSAgICAgICAgICAgIlxuVGhpcyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxsIDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QgIgotICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcgUlVO
X0FMTF9URVNUUygpLiAgUGxlYXNlIGZpeCBpdC5cbiIpOwotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotCi0gIC8vIERvIG5vdCBydW4gYW55IHRlc3QgaWYgdGhlIC0taGVscCBmbGFnIHdhcyBzcGVj
aWZpZWQuCi0gIGlmIChnX2hlbHBfZmxhZykKLSAgICByZXR1cm4gdHJ1ZTsKLQotICAvLyBSZXBl
YXRzIHRoZSBjYWxsIHRvIHRoZSBwb3N0LWZsYWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBj
YXNlIHRoZQotICAvLyB1c2VyIGRpZG4ndCBjYWxsIEluaXRHb29nbGVUZXN0LgotICBQb3N0Rmxh
Z1BhcnNpbmdJbml0KCk7Ci0KLSAgLy8gRXZlbiBpZiBzaGFyZGluZyBpcyBub3Qgb24sIHRlc3Qg
cnVubmVycyBtYXkgd2FudCB0byB1c2UgdGhlCi0gIC8vIEdURVNUX1NIQVJEX1NUQVRVU19GSUxF
IHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIHRlc3Qgc3VwcG9ydHMgdGhlIHNoYXJkaW5nCi0gIC8vIHBy
b3RvY29sLgotICBpbnRlcm5hbDo6V3JpdGVUb1NoYXJkU3RhdHVzRmlsZUlmTmVlZGVkKCk7Ci0K
LSAgLy8gVHJ1ZSBpZmYgd2UgYXJlIGluIGEgc3VicHJvY2VzcyBmb3IgcnVubmluZyBhIHRocmVh
ZC1zYWZlLXN0eWxlCi0gIC8vIGRlYXRoIHRlc3QuCi0gIGJvb2wgaW5fc3VicHJvY2Vzc19mb3Jf
ZGVhdGhfdGVzdCA9IGZhbHNlOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgaW5fc3Vi
cHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXy5n
ZXQoKSAhPSBOVUxMKTsKLSMgaWYgZGVmaW5lZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxE
X1NFVFVQXykKLSAgaWYgKGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpIHsKLSAgICBHVEVT
VF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXygpOwotICB9Ci0jIGVuZGlmICAvLyBkZWZp
bmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ0hJTERfU0VUVVBfKQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfREVBVEhfVEVTVAotCi0gIGNvbnN0IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hvdWxkU2hh
cmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RTaGFyZEluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpOwotCi0g
IC8vIENvbXBhcmVzIHRoZSBmdWxsIHRlc3QgbmFtZXMgd2l0aCB0aGUgZmlsdGVyIHRvIGRlY2lk
ZSB3aGljaAotICAvLyB0ZXN0cyB0byBydW4uCi0gIGNvbnN0IGJvb2wgaGFzX3Rlc3RzX3RvX3J1
biA9IEZpbHRlclRlc3RzKHNob3VsZF9zaGFyZAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IElHTk9SRV9TSEFSRElOR19QUk9U
T0NPTCkgPiAwOwotCi0gIC8vIExpc3RzIHRoZSB0ZXN0cyBhbmQgZXhpdHMgaWYgdGhlIC0tZ3Rl
c3RfbGlzdF90ZXN0cyBmbGFnIHdhcyBzcGVjaWZpZWQuCi0gIGlmIChHVEVTVF9GTEFHKGxpc3Rf
dGVzdHMpKSB7Ci0gICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYWZ0ZXIqIEZpbHRlclRlc3Rz
KCkgaGFzIGJlZW4gY2FsbGVkLgotICAgIExpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCk7Ci0gICAg
cmV0dXJuIHRydWU7Ci0gIH0KLQotICByYW5kb21fc2VlZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUp
ID8KLSAgICAgIEdldFJhbmRvbVNlZWRGcm9tRmxhZyhHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkg
OiAwOwotCi0gIC8vIFRydWUgaWZmIGF0IGxlYXN0IG9uZSB0ZXN0IGhhcyBmYWlsZWQuCi0gIGJv
b2wgZmFpbGVkID0gZmFsc2U7Ci0KLSAgVGVzdEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gbGlz
dGVuZXJzKCktPnJlcGVhdGVyKCk7Ci0KLSAgc3RhcnRfdGltZXN0YW1wXyA9IEdldFRpbWVJbk1p
bGxpcygpOwotICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbVN0YXJ0KCpwYXJlbnRfKTsKLQotICAv
LyBIb3cgbWFueSB0aW1lcyB0byByZXBlYXQgdGhlIHRlc3RzPyAgV2UgZG9uJ3Qgd2FudCB0byBy
ZXBlYXQgdGhlbQotICAvLyB3aGVuIHdlIGFyZSBpbnNpZGUgdGhlIHN1YnByb2Nlc3Mgb2YgYSBk
ZWF0aCB0ZXN0LgotICBjb25zdCBpbnQgcmVwZWF0ID0gaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhf
dGVzdCA/IDEgOiBHVEVTVF9GTEFHKHJlcGVhdCk7Ci0gIC8vIFJlcGVhdHMgZm9yZXZlciBpZiB0
aGUgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZlLgotICBjb25zdCBib29sIGZvcmV2ZXIgPSByZXBl
YXQgPCAwOwotICBmb3IgKGludCBpID0gMDsgZm9yZXZlciB8fCBpICE9IHJlcGVhdDsgaSsrKSB7
Ci0gICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgYWQtaG9j
IHRlc3QKLSAgICAvLyBhc3NlcnRpb25zIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCku
Ci0gICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQoKTsKLQotICAgIGNvbnN0IFRpbWVJbk1pbGxp
cyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygpOwotCi0gICAgLy8gU2h1ZmZsZXMgdGVzdCBjYXNl
cyBhbmQgdGVzdHMgaWYgcmVxdWVzdGVkLgotICAgIGlmIChoYXNfdGVzdHNfdG9fcnVuICYmIEdU
RVNUX0ZMQUcoc2h1ZmZsZSkpIHsKLSAgICAgIHJhbmRvbSgpLT5SZXNlZWQocmFuZG9tX3NlZWRf
KTsKLSAgICAgIC8vIFRoaXMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgT25UZXN0SXRl
cmF0aW9uU3RhcnQoKSwKLSAgICAgIC8vIHN1Y2ggdGhhdCBhIHRlc3QgZXZlbnQgbGlzdGVuZXIg
Y2FuIHNlZSB0aGUgYWN0dWFsIHRlc3Qgb3JkZXIKLSAgICAgIC8vIGluIHRoZSBldmVudC4KLSAg
ICAgIFNodWZmbGVUZXN0cygpOwotICAgIH0KLQotICAgIC8vIFRlbGxzIHRoZSB1bml0IHRlc3Qg
ZXZlbnQgbGlzdGVuZXJzIHRoYXQgdGhlIHRlc3RzIGFyZSBhYm91dCB0byBzdGFydC4KLSAgICBy
ZXBlYXRlci0+T25UZXN0SXRlcmF0aW9uU3RhcnQoKnBhcmVudF8sIGkpOwotCi0gICAgLy8gUnVu
cyBlYWNoIHRlc3QgY2FzZSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdGVzdCB0byBydW4uCi0g
ICAgaWYgKGhhc190ZXN0c190b19ydW4pIHsKLSAgICAgIC8vIFNldHMgdXAgYWxsIGVudmlyb25t
ZW50cyBiZWZvcmVoYW5kLgotICAgICAgcmVwZWF0ZXItPk9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dCgqcGFyZW50Xyk7Ci0gICAgICBGb3JFYWNoKGVudmlyb25tZW50c18sIFNldFVwRW52aXJvbm1l
bnQpOwotICAgICAgcmVwZWF0ZXItPk9uRW52aXJvbm1lbnRzU2V0VXBFbmQoKnBhcmVudF8pOwot
Ci0gICAgICAvLyBSdW5zIHRoZSB0ZXN0cyBvbmx5IGlmIHRoZXJlIHdhcyBubyBmYXRhbCBmYWls
dXJlIGR1cmluZyBnbG9iYWwKLSAgICAgIC8vIHNldC11cC4KLSAgICAgIGlmICghVGVzdDo6SGFz
RmF0YWxGYWlsdXJlKCkpIHsKLSAgICAgICAgZm9yIChpbnQgdGVzdF9pbmRleCA9IDA7IHRlc3Rf
aW5kZXggPCB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsKLSAgICAgICAgICAgICB0ZXN0X2luZGV4
KyspIHsKLSAgICAgICAgICBHZXRNdXRhYmxlVGVzdENhc2UodGVzdF9pbmRleCktPlJ1bigpOwot
ICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC8vIFRlYXJzIGRvd24gYWxsIGVudmlyb25tZW50
cyBpbiByZXZlcnNlIG9yZGVyIGFmdGVyd2FyZHMuCi0gICAgICByZXBlYXRlci0+T25FbnZpcm9u
bWVudHNUZWFyRG93blN0YXJ0KCpwYXJlbnRfKTsKLSAgICAgIHN0ZDo6Zm9yX2VhY2goZW52aXJv
bm1lbnRzXy5yYmVnaW4oKSwgZW52aXJvbm1lbnRzXy5yZW5kKCksCi0gICAgICAgICAgICAgICAg
ICAgIFRlYXJEb3duRW52aXJvbm1lbnQpOwotICAgICAgcmVwZWF0ZXItPk9uRW52aXJvbm1lbnRz
VGVhckRvd25FbmQoKnBhcmVudF8pOwotICAgIH0KLQotICAgIGVsYXBzZWRfdGltZV8gPSBHZXRU
aW1lSW5NaWxsaXMoKSAtIHN0YXJ0OwotCi0gICAgLy8gVGVsbHMgdGhlIHVuaXQgdGVzdCBldmVu
dCBsaXN0ZW5lciB0aGF0IHRoZSB0ZXN0cyBoYXZlIGp1c3QgZmluaXNoZWQuCi0gICAgcmVwZWF0
ZXItPk9uVGVzdEl0ZXJhdGlvbkVuZCgqcGFyZW50XywgaSk7Ci0KLSAgICAvLyBHZXRzIHRoZSBy
ZXN1bHQgYW5kIGNsZWFycyBpdC4KLSAgICBpZiAoIVBhc3NlZCgpKSB7Ci0gICAgICBmYWlsZWQg
PSB0cnVlOwotICAgIH0KLQotICAgIC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCB0ZXN0IG9yZGVy
IGFmdGVyIHRoZSBpdGVyYXRpb24uICBUaGlzCi0gICAgLy8gYWxsb3dzIHRoZSB1c2VyIHRvIHF1
aWNrbHkgcmVwcm8gYSBmYWlsdXJlIHRoYXQgaGFwcGVucyBpbiB0aGUKLSAgICAvLyBOLXRoIGl0
ZXJhdGlvbiB3aXRob3V0IHJlcGVhdGluZyB0aGUgZmlyc3QgKE4gLSAxKSBpdGVyYXRpb25zLgot
ICAgIC8vIFRoaXMgaXMgbm90IGVuY2xvc2VkIGluICJpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkg
eyAuLi4gfSIsIGluCi0gICAgLy8gY2FzZSB0aGUgdXNlciBzb21laG93IGNoYW5nZXMgdGhlIHZh
bHVlIG9mIHRoZSBmbGFnIHNvbWV3aGVyZQotICAgIC8vIChpdCdzIGFsd2F5cyBzYWZlIHRvIHVu
c2h1ZmZsZSB0aGUgdGVzdHMpLgotICAgIFVuc2h1ZmZsZVRlc3RzKCk7Ci0KLSAgICBpZiAoR1RF
U1RfRkxBRyhzaHVmZmxlKSkgewotICAgICAgLy8gUGlja3MgYSBuZXcgcmFuZG9tIHNlZWQgZm9y
IGVhY2ggaXRlcmF0aW9uLgotICAgICAgcmFuZG9tX3NlZWRfID0gR2V0TmV4dFJhbmRvbVNlZWQo
cmFuZG9tX3NlZWRfKTsKLSAgICB9Ci0gIH0KLQotICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbUVu
ZCgqcGFyZW50Xyk7Ci0KLSAgcmV0dXJuICFmYWlsZWQ7Ci19Ci0KLS8vIFJlYWRzIHRoZSBHVEVT
VF9TSEFSRF9TVEFUVVNfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhl
IGZpbGUKLS8vIGlmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50LiBJZiBhIGZpbGUgYWxyZWFkeSBl
eGlzdHMgYXQgdGhpcyBsb2NhdGlvbiwgdGhpcwotLy8gZnVuY3Rpb24gd2lsbCB3cml0ZSBvdmVy
IGl0LiBJZiB0aGUgdmFyaWFibGUgaXMgcHJlc2VudCwgYnV0IHRoZSBmaWxlIGNhbm5vdAotLy8g
YmUgY3JlYXRlZCwgcHJpbnRzIGFuIGVycm9yIGFuZCBleGl0cy4KLXZvaWQgV3JpdGVUb1NoYXJk
U3RhdHVzRmlsZUlmTmVlZGVkKCkgewotICBjb25zdCBjaGFyKiBjb25zdCB0ZXN0X3NoYXJkX2Zp
bGUgPSBwb3NpeDo6R2V0RW52KGtUZXN0U2hhcmRTdGF0dXNGaWxlKTsKLSAgaWYgKHRlc3Rfc2hh
cmRfZmlsZSAhPSBOVUxMKSB7Ci0gICAgRklMRSogY29uc3QgZmlsZSA9IHBvc2l4OjpGT3Blbih0
ZXN0X3NoYXJkX2ZpbGUsICJ3Iik7Ci0gICAgaWYgKGZpbGUgPT0gTlVMTCkgewotICAgICAgQ29s
b3JlZFByaW50ZihDT0xPUl9SRUQsCi0gICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgd3Jp
dGUgdG8gdGhlIHRlc3Qgc2hhcmQgc3RhdHVzIGZpbGUgXCIlc1wiICIKLSAgICAgICAgICAgICAg
ICAgICAgInNwZWNpZmllZCBieSB0aGUgJXMgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4iLAotICAg
ICAgICAgICAgICAgICAgICB0ZXN0X3NoYXJkX2ZpbGUsIGtUZXN0U2hhcmRTdGF0dXNGaWxlKTsK
LSAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgIH0K
LSAgICBmY2xvc2UoZmlsZSk7Ci0gIH0KLX0KLQotLy8gQ2hlY2tzIHdoZXRoZXIgc2hhcmRpbmcg
aXMgZW5hYmxlZCBieSBleGFtaW5pbmcgdGhlIHJlbGV2YW50Ci0vLyBlbnZpcm9ubWVudCB2YXJp
YWJsZSB2YWx1ZXMuIElmIHRoZSB2YXJpYWJsZXMgYXJlIHByZXNlbnQsCi0vLyBidXQgaW5jb25z
aXN0ZW50IChpLmUuLCBzaGFyZF9pbmRleCA+PSB0b3RhbF9zaGFyZHMpLCBwcmludHMKLS8vIGFu
IGVycm9yIGFuZCBleGl0cy4gSWYgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCwgc2hhcmRp
bmcgaXMKLS8vIGRpc2FibGVkIGJlY2F1c2UgaXQgbXVzdCBvbmx5IGJlIGFwcGxpZWQgdG8gdGhl
IG9yaWdpbmFsIHRlc3QKLS8vIHByb2Nlc3MuIE90aGVyd2lzZSwgd2UgY291bGQgZmlsdGVyIG91
dCBkZWF0aCB0ZXN0cyB3ZSBpbnRlbmRlZCB0byBleGVjdXRlLgotYm9vbCBTaG91bGRTaGFyZChj
b25zdCBjaGFyKiB0b3RhbF9zaGFyZHNfZW52LAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzaGFyZF9pbmRleF9lbnYsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW5fc3VicHJvY2Vzc19m
b3JfZGVhdGhfdGVzdCkgewotICBpZiAoaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCkgewot
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIGNvbnN0IEludDMyIHRvdGFsX3NoYXJkcyA9IElu
dDMyRnJvbUVudk9yRGllKHRvdGFsX3NoYXJkc19lbnYsIC0xKTsKLSAgY29uc3QgSW50MzIgc2hh
cmRfaW5kZXggPSBJbnQzMkZyb21FbnZPckRpZShzaGFyZF9pbmRleF9lbnYsIC0xKTsKLQotICBp
ZiAodG90YWxfc2hhcmRzID09IC0xICYmIHNoYXJkX2luZGV4ID09IC0xKSB7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9IGVsc2UgaWYgKHRvdGFsX3NoYXJkcyA9PSAtMSAmJiBzaGFyZF9pbmRleCAh
PSAtMSkgewotICAgIGNvbnN0IE1lc3NhZ2UgbXNnID0gTWVzc2FnZSgpCi0gICAgICA8PCAiSW52
YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IHlvdSBoYXZlICIKLSAgICAgIDw8IGtUZXN0U2hh
cmRJbmRleCA8PCAiID0gIiA8PCBzaGFyZF9pbmRleAotICAgICAgPDwgIiwgYnV0IGhhdmUgbGVm
dCAiIDw8IGtUZXN0VG90YWxTaGFyZHMgPDwgIiB1bnNldC5cbiI7Ci0gICAgQ29sb3JlZFByaW50
ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2go
c3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0gZWxzZSBpZiAodG90YWxfc2hh
cmRzICE9IC0xICYmIHNoYXJkX2luZGV4ID09IC0xKSB7Ci0gICAgY29uc3QgTWVzc2FnZSBtc2cg
PSBNZXNzYWdlKCkKLSAgICAgIDw8ICJJbnZhbGlkIGVudmlyb25tZW50IHZhcmlhYmxlczogeW91
IGhhdmUgIgotICAgICAgPDwga1Rlc3RUb3RhbFNoYXJkcyA8PCAiID0gIiA8PCB0b3RhbF9zaGFy
ZHMKLSAgICAgIDw8ICIsIGJ1dCBoYXZlIGxlZnQgIiA8PCBrVGVzdFNoYXJkSW5kZXggPDwgIiB1
bnNldC5cbiI7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRTdHJp
bmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJTFVS
RSk7Ci0gIH0gZWxzZSBpZiAoc2hhcmRfaW5kZXggPCAwIHx8IHNoYXJkX2luZGV4ID49IHRvdGFs
X3NoYXJkcykgewotICAgIGNvbnN0IE1lc3NhZ2UgbXNnID0gTWVzc2FnZSgpCi0gICAgICA8PCAi
SW52YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IHdlIHJlcXVpcmUgMCA8PSAiCi0gICAgICA8
PCBrVGVzdFNoYXJkSW5kZXggPDwgIiA8ICIgPDwga1Rlc3RUb3RhbFNoYXJkcwotICAgICAgPDwg
IiwgYnV0IHlvdSBoYXZlICIgPDwga1Rlc3RTaGFyZEluZGV4IDw8ICI9IiA8PCBzaGFyZF9pbmRl
eAotICAgICAgPDwgIiwgIiA8PCBrVGVzdFRvdGFsU2hhcmRzIDw8ICI9IiA8PCB0b3RhbF9zaGFy
ZHMgPDwgIi5cbiI7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRT
dHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJ
TFVSRSk7Ci0gIH0KLQotICByZXR1cm4gdG90YWxfc2hhcmRzID4gMTsKLX0KLQotLy8gUGFyc2Vz
IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YXIgYXMgYW4gSW50MzIuIElmIGl0IGlzIHVuc2V0
LAotLy8gcmV0dXJucyBkZWZhdWx0X3ZhbC4gSWYgaXQgaXMgbm90IGFuIEludDMyLCBwcmludHMg
YW4gZXJyb3IKLS8vIGFuZCBhYm9ydHMuCi1JbnQzMiBJbnQzMkZyb21FbnZPckRpZShjb25zdCBj
aGFyKiB2YXIsIEludDMyIGRlZmF1bHRfdmFsKSB7Ci0gIGNvbnN0IGNoYXIqIHN0cl92YWwgPSBw
b3NpeDo6R2V0RW52KHZhcik7Ci0gIGlmIChzdHJfdmFsID09IE5VTEwpIHsKLSAgICByZXR1cm4g
ZGVmYXVsdF92YWw7Ci0gIH0KLQotICBJbnQzMiByZXN1bHQ7Ci0gIGlmICghUGFyc2VJbnQzMihN
ZXNzYWdlKCkgPDwgIlRoZSB2YWx1ZSBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSAiIDw8IHZhciwK
LSAgICAgICAgICAgICAgICAgIHN0cl92YWwsICZyZXN1bHQpKSB7Ci0gICAgZXhpdChFWElUX0ZB
SUxVUkUpOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIEdpdmVuIHRoZSB0b3RhbCBu
dW1iZXIgb2Ygc2hhcmRzLCB0aGUgc2hhcmQgaW5kZXgsIGFuZCB0aGUgdGVzdCBpZCwKLS8vIHJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3Qgc2hvdWxkIGJlIHJ1biBvbiB0aGlzIHNoYXJkLiBUaGUg
dGVzdCBpZCBpcwotLy8gc29tZSBhcmJpdHJhcnkgYnV0IHVuaXF1ZSBub24tbmVnYXRpdmUgaW50
ZWdlciBhc3NpZ25lZCB0byBlYWNoIHRlc3QKLS8vIG1ldGhvZC4gQXNzdW1lcyB0aGF0IDAgPD0g
c2hhcmRfaW5kZXggPCB0b3RhbF9zaGFyZHMuCi1ib29sIFNob3VsZFJ1blRlc3RPblNoYXJkKGlu
dCB0b3RhbF9zaGFyZHMsIGludCBzaGFyZF9pbmRleCwgaW50IHRlc3RfaWQpIHsKLSAgcmV0dXJu
ICh0ZXN0X2lkICUgdG90YWxfc2hhcmRzKSA9PSBzaGFyZF9pbmRleDsKLX0KLQotLy8gQ29tcGFy
ZXMgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciB0
bwotLy8gZGVjaWRlIHdoZXRoZXIgdGhlIHRlc3Qgc2hvdWxkIGJlIHJ1biwgdGhlbiByZWNvcmRz
IHRoZSByZXN1bHQgaW4KLS8vIGVhY2ggVGVzdENhc2UgYW5kIFRlc3RJbmZvIG9iamVjdC4KLS8v
IElmIHNoYXJkX3Rlc3RzID09IHRydWUsIGZ1cnRoZXIgZmlsdGVycyB0ZXN0cyBiYXNlZCBvbiBz
aGFyZGluZwotLy8gdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCAtIHNlZQotLy8gaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlk
ZS4KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCi1pbnQg
VW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhSZWFjdGlvblRvU2hhcmRpbmcgc2hhcmRfdGVzdHMp
IHsKLSAgY29uc3QgSW50MzIgdG90YWxfc2hhcmRzID0gc2hhcmRfdGVzdHMgPT0gSE9OT1JfU0hB
UkRJTkdfUFJPVE9DT0wgPwotICAgICAgSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RUb3RhbFNoYXJk
cywgLTEpIDogLTE7Ci0gIGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gc2hhcmRfdGVzdHMgPT0g
SE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wgPwotICAgICAgSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RT
aGFyZEluZGV4LCAtMSkgOiAtMTsKLQotICAvLyBudW1fcnVubmFibGVfdGVzdHMgYXJlIHRoZSBu
dW1iZXIgb2YgdGVzdHMgdGhhdCB3aWxsCi0gIC8vIHJ1biBhY3Jvc3MgYWxsIHNoYXJkcyAoaS5l
LiwgbWF0Y2ggZmlsdGVyIGFuZCBhcmUgbm90IGRpc2FibGVkKS4KLSAgLy8gbnVtX3NlbGVjdGVk
X3Rlc3RzIGFyZSB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHJ1biBvbgotICAvLyB0aGlzIHNo
YXJkLgotICBpbnQgbnVtX3J1bm5hYmxlX3Rlc3RzID0gMDsKLSAgaW50IG51bV9zZWxlY3RlZF90
ZXN0cyA9IDA7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBp
KyspIHsKLSAgICBUZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lID0gdGVzdF9jYXNlLT5uYW1lKCk7
Ci0gICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxkX3J1bihmYWxzZSk7Ci0KLSAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKS5zaXplKCk7IGorKykgewot
ICAgICAgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xp
c3QoKVtqXTsKLSAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5h
bWUoKSk7Ci0gICAgICAvLyBBIHRlc3QgaXMgZGlzYWJsZWQgaWYgdGVzdCBjYXNlIG5hbWUgb3Ig
dGVzdCBuYW1lIG1hdGNoZXMKLSAgICAgIC8vIGtEaXNhYmxlVGVzdEZpbHRlci4KLSAgICAgIGNv
bnN0IGJvb2wgaXNfZGlzYWJsZWQgPQotICAgICAgICAgIGludGVybmFsOjpVbml0VGVzdE9wdGlv
bnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpIHx8Ci0gICAg
ICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlz
YWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVzdF9pbmZvLT5pc19kaXNhYmxlZF8gPSBpc19kaXNh
YmxlZDsKLQotICAgICAgY29uc3QgYm9vbCBtYXRjaGVzX2ZpbHRlciA9Ci0gICAgICAgICAgaW50
ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QodGVzdF9jYXNlX25hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9uYW1lKTsKLSAgICAgIHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlc19m
aWx0ZXI7Ci0KLSAgICAgIGNvbnN0IGJvb2wgaXNfcnVubmFibGUgPQotICAgICAgICAgIChHVEVT
VF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSB8fCAhaXNfZGlzYWJsZWQpICYmCi0gICAg
ICAgICAgbWF0Y2hlc19maWx0ZXI7Ci0KLSAgICAgIGNvbnN0IGJvb2wgaXNfc2VsZWN0ZWQgPSBp
c19ydW5uYWJsZSAmJgotICAgICAgICAgIChzaGFyZF90ZXN0cyA9PSBJR05PUkVfU0hBUkRJTkdf
UFJPVE9DT0wgfHwKLSAgICAgICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRz
LCBzaGFyZF9pbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3J1bm5h
YmxlX3Rlc3RzKSk7Ci0KLSAgICAgIG51bV9ydW5uYWJsZV90ZXN0cyArPSBpc19ydW5uYWJsZTsK
LSAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyArPSBpc19zZWxlY3RlZDsKLQotICAgICAgdGVzdF9p
bmZvLT5zaG91bGRfcnVuXyA9IGlzX3NlbGVjdGVkOwotICAgICAgdGVzdF9jYXNlLT5zZXRfc2hv
dWxkX3J1bih0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSB8fCBpc19zZWxlY3RlZCk7Ci0gICAgfQot
ICB9Ci0gIHJldHVybiBudW1fc2VsZWN0ZWRfdGVzdHM7Ci19Ci0KLS8vIFByaW50cyB0aGUgZ2l2
ZW4gQy1zdHJpbmcgb24gYSBzaW5nbGUgbGluZSBieSByZXBsYWNpbmcgYWxsICdcbicKLS8vIGNo
YXJhY3RlcnMgd2l0aCBzdHJpbmcgIlxcbiIuICBJZiB0aGUgb3V0cHV0IHRha2VzIG1vcmUgdGhh
bgotLy8gbWF4X2xlbmd0aCBjaGFyYWN0ZXJzLCBvbmx5IHByaW50cyB0aGUgZmlyc3QgbWF4X2xl
bmd0aCBjaGFyYWN0ZXJzCi0vLyBhbmQgIi4uLiIuCi1zdGF0aWMgdm9pZCBQcmludE9uT25lTGlu
ZShjb25zdCBjaGFyKiBzdHIsIGludCBtYXhfbGVuZ3RoKSB7Ci0gIGlmIChzdHIgIT0gTlVMTCkg
ewotICAgIGZvciAoaW50IGkgPSAwOyAqc3RyICE9ICdcMCc7ICsrc3RyKSB7Ci0gICAgICBpZiAo
aSA+PSBtYXhfbGVuZ3RoKSB7Ci0gICAgICAgIHByaW50ZigiLi4uIik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgfQotICAgICAgaWYgKCpzdHIgPT0gJ1xuJykgewotICAgICAgICBwcmludGYoIlxc
biIpOwotICAgICAgICBpICs9IDI7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwcmludGYoIiVj
IiwgKnN0cik7Ci0gICAgICAgICsraTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KLQotLy8gUHJp
bnRzIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMgbWF0Y2hpbmcgdGhlIHVzZXItc3BlY2lmaWVkIGZp
bHRlciBmbGFnLgotdm9pZCBVbml0VGVzdEltcGw6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCkg
ewotICAvLyBQcmludCBhdCBtb3N0IHRoaXMgbWFueSBjaGFyYWN0ZXJzIGZvciBlYWNoIHR5cGUv
dmFsdWUgcGFyYW1ldGVyLgotICBjb25zdCBpbnQga01heFBhcmFtTGVuZ3RoID0gMjUwOwotCi0g
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKLSAgICBj
b25zdCBUZXN0Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgYm9v
bCBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0gZmFsc2U7Ci0KLSAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKS5zaXplKCk7IGorKykgewotICAgICAg
Y29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgICAgICAgdGVzdF9jYXNlLT50
ZXN0X2luZm9fbGlzdCgpW2pdOwotICAgICAgaWYgKHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJf
KSB7Ci0gICAgICAgIGlmICghcHJpbnRlZF90ZXN0X2Nhc2VfbmFtZSkgewotICAgICAgICAgIHBy
aW50ZWRfdGVzdF9jYXNlX25hbWUgPSB0cnVlOwotICAgICAgICAgIHByaW50ZigiJXMuIiwgdGVz
dF9jYXNlLT5uYW1lKCkpOwotICAgICAgICAgIGlmICh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSAh
PSBOVUxMKSB7Ci0gICAgICAgICAgICBwcmludGYoIiAgIyAlcyA9ICIsIGtUeXBlUGFyYW1MYWJl
bCk7Ci0gICAgICAgICAgICAvLyBXZSBwcmludCB0aGUgdHlwZSBwYXJhbWV0ZXIgb24gYSBzaW5n
bGUgbGluZSB0byBtYWtlCi0gICAgICAgICAgICAvLyB0aGUgb3V0cHV0IGVhc3kgdG8gcGFyc2Ug
YnkgYSBwcm9ncmFtLgotICAgICAgICAgICAgUHJpbnRPbk9uZUxpbmUodGVzdF9jYXNlLT50eXBl
X3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHByaW50
ZigiXG4iKTsKLSAgICAgICAgfQotICAgICAgICBwcmludGYoIiAgJXMiLCB0ZXN0X2luZm8tPm5h
bWUoKSk7Ci0gICAgICAgIGlmICh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgewot
ICAgICAgICAgIHByaW50ZigiICAjICVzID0gIiwga1ZhbHVlUGFyYW1MYWJlbCk7Ci0gICAgICAg
ICAgLy8gV2UgcHJpbnQgdGhlIHZhbHVlIHBhcmFtZXRlciBvbiBhIHNpbmdsZSBsaW5lIHRvIG1h
a2UgdGhlCi0gICAgICAgICAgLy8gb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgot
ICAgICAgICAgIFByaW50T25PbmVMaW5lKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSwga01heFBh
cmFtTGVuZ3RoKTsKLSAgICAgICAgfQotICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICB9Ci0g
ICAgfQotICB9Ci0gIGZmbHVzaChzdGRvdXQpOwotfQotCi0vLyBTZXRzIHRoZSBPUyBzdGFjayB0
cmFjZSBnZXR0ZXIuCi0vLwotLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBpbnB1dCBhbmQgdGhlIGN1
cnJlbnQgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyIGFyZQotLy8gdGhlIHNhbWU7IG90aGVyd2lzZSwg
ZGVsZXRlcyB0aGUgb2xkIGdldHRlciBhbmQgbWFrZXMgdGhlIGlucHV0IHRoZQotLy8gY3VycmVu
dCBnZXR0ZXIuCi12b2lkIFVuaXRUZXN0SW1wbDo6c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigK
LSAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIGdldHRlcikgewotICBpZiAob3Nfc3Rh
Y2tfdHJhY2VfZ2V0dGVyXyAhPSBnZXR0ZXIpIHsKLSAgICBkZWxldGUgb3Nfc3RhY2tfdHJhY2Vf
Z2V0dGVyXzsKLSAgICBvc19zdGFja190cmFjZV9nZXR0ZXJfID0gZ2V0dGVyOwotICB9Ci19Ci0K
LS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyIGlmIGl0IGlzIG5v
dCBOVUxMOwotLy8gb3RoZXJ3aXNlLCBjcmVhdGVzIGFuIE9zU3RhY2tUcmFjZUdldHRlciwgbWFr
ZXMgaXQgdGhlIGN1cnJlbnQKLS8vIGdldHRlciwgYW5kIHJldHVybnMgaXQuCi1Pc1N0YWNrVHJh
Y2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0SW1wbDo6b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkg
ewotICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9PSBOVUxMKSB7Ci0jaWZkZWYgR1RFU1Rf
T1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXwotICAgIG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcg
R1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXzsKLSNlbHNlCi0gICAgb3Nfc3RhY2tfdHJhY2Vf
Z2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VHZXR0ZXI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1NU
QUNLX1RSQUNFX0dFVFRFUl8KLSAgfQotCi0gIHJldHVybiBvc19zdGFja190cmFjZV9nZXR0ZXJf
OwotfQotCi0vLyBSZXR1cm5zIHRoZSBUZXN0UmVzdWx0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3Vy
cmVudGx5IHJ1bm5pbmcsIG9yCi0vLyB0aGUgVGVzdFJlc3VsdCBmb3IgdGhlIGFkIGhvYyB0ZXN0
IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLVRlc3RSZXN1bHQqIFVuaXRUZXN0SW1wbDo6Y3VycmVu
dF90ZXN0X3Jlc3VsdCgpIHsKLSAgcmV0dXJuIGN1cnJlbnRfdGVzdF9pbmZvXyA/Ci0gICAgICAm
KGN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0XykgOiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKLX0K
LQotLy8gU2h1ZmZsZXMgYWxsIHRlc3QgY2FzZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2gg
dGVzdCBjYXNlLAotLy8gbWFraW5nIHN1cmUgdGhhdCBkZWF0aCB0ZXN0cyBhcmUgc3RpbGwgcnVu
IGZpcnN0Lgotdm9pZCBVbml0VGVzdEltcGw6OlNodWZmbGVUZXN0cygpIHsKLSAgLy8gU2h1ZmZs
ZXMgdGhlIGRlYXRoIHRlc3QgY2FzZXMuCi0gIFNodWZmbGVSYW5nZShyYW5kb20oKSwgMCwgbGFz
dF9kZWF0aF90ZXN0X2Nhc2VfICsgMSwgJnRlc3RfY2FzZV9pbmRpY2VzXyk7Ci0KLSAgLy8gU2h1
ZmZsZXMgdGhlIG5vbi1kZWF0aCB0ZXN0IGNhc2VzLgotICBTaHVmZmxlUmFuZ2UocmFuZG9tKCks
IGxhc3RfZGVhdGhfdGVzdF9jYXNlXyArIDEsCi0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KHRlc3RfY2FzZXNfLnNpemUoKSksICZ0ZXN0X2Nhc2VfaW5kaWNlc18pOwotCi0gIC8vIFNo
dWZmbGVzIHRoZSB0ZXN0cyBpbnNpZGUgZWFjaCB0ZXN0IGNhc2UuCi0gIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKLSAgICB0ZXN0X2Nhc2VzX1tpXS0+
U2h1ZmZsZVRlc3RzKHJhbmRvbSgpKTsKLSAgfQotfQotCi0vLyBSZXN0b3JlcyB0aGUgdGVzdCBj
YXNlcyBhbmQgdGVzdHMgdG8gdGhlaXIgb3JkZXIgYmVmb3JlIHRoZSBmaXJzdCBzaHVmZmxlLgot
dm9pZCBVbml0VGVzdEltcGw6OlVuc2h1ZmZsZVRlc3RzKCkgewotICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsgaSsrKSB7Ci0gICAgLy8gVW5zaHVmZmxlcyB0aGUg
dGVzdHMgaW4gZWFjaCB0ZXN0IGNhc2UuCi0gICAgdGVzdF9jYXNlc19baV0tPlVuc2h1ZmZsZVRl
c3RzKCk7Ci0gICAgLy8gUmVzZXRzIHRoZSBpbmRleCBvZiBlYWNoIHRlc3QgY2FzZS4KLSAgICB0
ZXN0X2Nhc2VfaW5kaWNlc19baV0gPSBzdGF0aWNfY2FzdDxpbnQ+KGkpOwotICB9Ci19Ci0KLS8v
IFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCi0v
LwotLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBp
cyBzcGVjaWZpZWQgYnkKLS8vIHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhl
IHNraXBfY291bnQgcGFyYW1ldGVyCi0vLyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b3AgZnJh
bWVzIHRvIGJlIHNraXBwZWQsIHdoaWNoIGRvZXNuJ3QKLS8vIGNvdW50IGFnYWluc3QgdGhlIG51
bWJlciBvZiBmcmFtZXMgdG8gYmUgaW5jbHVkZWQuCi0vLwotLy8gRm9yIGV4YW1wbGUsIGlmIEZv
bygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0dXJuIGNhbGxzCi0vLyBHZXRDdXJyZW50T3NTdGFj
a1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZvbygpIHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vIHRo
ZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3
b24ndC4KLXN0ZDo6c3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRl
c3QqIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBza2lwX2NvdW50KSB7Ci0gIC8vIFdlIHBhc3Mgc2tpcF9jb3VudCArIDEgdG8g
c2tpcCB0aGlzIHdyYXBwZXIgZnVuY3Rpb24gaW4gYWRkaXRpb24KLSAgLy8gdG8gd2hhdCB0aGUg
dXNlciByZWFsbHkgd2FudHMgdG8gc2tpcC4KLSAgcmV0dXJuIEdldFVuaXRUZXN0SW1wbCgpLT5D
dXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKHNraXBfY291bnQgKyAxKTsKLX0KLQotLy8gVXNl
ZCBieSB0aGUgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyBt
YWNybyB0bwotLy8gc3VwcHJlc3MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5ncy4KLW5hbWVzcGFj
ZSB7Ci1jbGFzcyBDbGFzc1VuaXF1ZVRvQWx3YXlzVHJ1ZSB7fTsKLX0KLQotYm9vbCBJc1RydWUo
Ym9vbCBjb25kaXRpb24pIHsgcmV0dXJuIGNvbmRpdGlvbjsgfQotCi1ib29sIEFsd2F5c1RydWUo
KSB7Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSAgLy8gVGhpcyBjb25kaXRpb24gaXMgYWx3
YXlzIGZhbHNlIHNvIEFsd2F5c1RydWUoKSBuZXZlciBhY3R1YWxseSB0aHJvd3MsCi0gIC8vIGJ1
dCBpdCBtYWtlcyB0aGUgY29tcGlsZXIgdGhpbmsgdGhhdCBpdCBtYXkgdGhyb3cuCi0gIGlmIChJ
c1RydWUoZmFsc2UpKQotICAgIHRocm93IENsYXNzVW5pcXVlVG9BbHdheXNUcnVlKCk7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0gIHJldHVybiB0cnVlOwotfQotCi0vLyBJZiAq
cHN0ciBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LCBtb2RpZmllcyAqcHN0ciB0byBiZSBy
aWdodAotLy8gcGFzdCB0aGUgcHJlZml4IGFuZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2
ZXMgKnBzdHIgdW5jaGFuZ2VkCi0vLyBhbmQgcmV0dXJucyBmYWxzZS4gIE5vbmUgb2YgcHN0ciwg
KnBzdHIsIGFuZCBwcmVmaXggY2FuIGJlIE5VTEwuCi1ib29sIFNraXBQcmVmaXgoY29uc3QgY2hh
ciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0cikgewotICBjb25zdCBzaXplX3QgcHJlZml4X2xl
biA9IHN0cmxlbihwcmVmaXgpOwotICBpZiAoc3RybmNtcCgqcHN0ciwgcHJlZml4LCBwcmVmaXhf
bGVuKSA9PSAwKSB7Ci0gICAgKnBzdHIgKz0gcHJlZml4X2xlbjsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFBhcnNlcyBhIHN0cmluZyBhcyBhIGNvbW1h
bmQgbGluZSBmbGFnLiAgVGhlIHN0cmluZyBzaG91bGQgaGF2ZQotLy8gdGhlIGZvcm1hdCAiLS1m
bGFnPXZhbHVlIi4gIFdoZW4gZGVmX29wdGlvbmFsIGlzIHRydWUsIHRoZSAiPXZhbHVlIgotLy8g
cGFydCBjYW4gYmUgb21pdHRlZC4KLS8vCi0vLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
Zywgb3IgTlVMTCBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi1jb25zdCBjaGFyKiBQYXJzZUZsYWdW
YWx1ZShjb25zdCBjaGFyKiBzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwp
IHsKLSAgLy8gc3RyIGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwuCi0gIGlmIChzdHIgPT0gTlVM
TCB8fCBmbGFnID09IE5VTEwpIHJldHVybiBOVUxMOwotCi0gIC8vIFRoZSBmbGFnIG11c3Qgc3Rh
cnQgd2l0aCAiLS0iIGZvbGxvd2VkIGJ5IEdURVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3Qgc3Rk
OjpzdHJpbmcgZmxhZ19zdHIgPSBzdGQ6OnN0cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklY
XyArIGZsYWc7Ci0gIGNvbnN0IHNpemVfdCBmbGFnX2xlbiA9IGZsYWdfc3RyLmxlbmd0aCgpOwot
ICBpZiAoc3RybmNtcChzdHIsIGZsYWdfc3RyLmNfc3RyKCksIGZsYWdfbGVuKSAhPSAwKSByZXR1
cm4gTlVMTDsKLQotICAvLyBTa2lwcyB0aGUgZmxhZyBuYW1lLgotICBjb25zdCBjaGFyKiBmbGFn
X2VuZCA9IHN0ciArIGZsYWdfbGVuOwotCi0gIC8vIFdoZW4gZGVmX29wdGlvbmFsIGlzIHRydWUs
IGl0J3MgT0sgdG8gbm90IGhhdmUgYSAiPXZhbHVlIiBwYXJ0LgotICBpZiAoZGVmX29wdGlvbmFs
ICYmIChmbGFnX2VuZFswXSA9PSAnXDAnKSkgewotICAgIHJldHVybiBmbGFnX2VuZDsKLSAgfQot
Ci0gIC8vIElmIGRlZl9vcHRpb25hbCBpcyB0cnVlIGFuZCB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0
ZXJzIGFmdGVyIHRoZQotICAvLyBmbGFnIG5hbWUsIG9yIGlmIGRlZl9vcHRpb25hbCBpcyBmYWxz
ZSwgdGhlcmUgbXVzdCBiZSBhICc9JyBhZnRlcgotICAvLyB0aGUgZmxhZyBuYW1lLgotICBpZiAo
ZmxhZ19lbmRbMF0gIT0gJz0nKSByZXR1cm4gTlVMTDsKLQotICAvLyBSZXR1cm5zIHRoZSBzdHJp
bmcgYWZ0ZXIgIj0iLgotICByZXR1cm4gZmxhZ19lbmQgKyAxOwotfQotCi0vLyBQYXJzZXMgYSBz
dHJpbmcgZm9yIGEgYm9vbCBmbGFnLCBpbiB0aGUgZm9ybSBvZiBlaXRoZXIKLS8vICItLWZsYWc9
dmFsdWUiIG9yICItLWZsYWciLgotLy8KLS8vIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIHZhbHVl
IGlzIHRha2VuIGFzIHRydWUgYXMgbG9uZyBhcyBpdCBkb2VzCi0vLyBub3Qgc3RhcnQgd2l0aCAn
MCcsICdmJywgb3IgJ0YnLgotLy8KLS8vIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHZhbHVlIGlz
IHRha2VuIGFzIHRydWUuCi0vLwotLy8gT24gc3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0
aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCi0vLyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0
dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4KLWJvb2wgUGFyc2VCb29sRmxhZyhj
b25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wqIHZhbHVlKSB7Ci0gIC8vIEdl
dHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgotICBjb25zdCBjaGFyKiBjb25z
dCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIHRydWUpOwotCi0gIC8vIEFi
b3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi0gIGlmICh2YWx1ZV9zdHIgPT0gTlVMTCkgcmV0
dXJuIGZhbHNlOwotCi0gIC8vIENvbnZlcnRzIHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBib29sLgot
ICAqdmFsdWUgPSAhKCp2YWx1ZV9zdHIgPT0gJzAnIHx8ICp2YWx1ZV9zdHIgPT0gJ2YnIHx8ICp2
YWx1ZV9zdHIgPT0gJ0YnKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFBhcnNlcyBhIHN0cmlu
ZyBmb3IgYW4gSW50MzIgZmxhZywgaW4gdGhlIGZvcm0gb2YKLS8vICItLWZsYWc9dmFsdWUiLgot
Ly8KLS8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVl
LCBhbmQgcmV0dXJucwotLy8gdHJ1ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91
dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBhcnNlSW50MzJGbGFnKGNvbnN0IGNoYXIqIHN0ciwg
Y29uc3QgY2hhciogZmxhZywgSW50MzIqIHZhbHVlKSB7Ci0gIC8vIEdldHMgdGhlIHZhbHVlIG9m
IHRoZSBmbGFnIGFzIGEgc3RyaW5nLgotICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQ
YXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKLQotICAvLyBBYm9ydHMgaWYgdGhlIHBh
cnNpbmcgZmFpbGVkLgotICBpZiAodmFsdWVfc3RyID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQot
ICAvLyBTZXRzICp2YWx1ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGZsYWcuCi0gIHJldHVybiBQYXJz
ZUludDMyKE1lc3NhZ2UoKSA8PCAiVGhlIHZhbHVlIG9mIGZsYWcgLS0iIDw8IGZsYWcsCi0gICAg
ICAgICAgICAgICAgICAgIHZhbHVlX3N0ciwgdmFsdWUpOwotfQotCi0vLyBQYXJzZXMgYSBzdHJp
bmcgZm9yIGEgc3RyaW5nIGZsYWcsIGluIHRoZSBmb3JtIG9mCi0vLyAiLS1mbGFnPXZhbHVlIi4K
LS8vCi0vLyBPbiBzdWNjZXNzLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1
ZSwgYW5kIHJldHVybnMKLS8vIHRydWUuICBPbiBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhv
dXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQYXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3Ry
LCBjb25zdCBjaGFyKiBmbGFnLCBzdGQ6OnN0cmluZyogdmFsdWUpIHsKLSAgLy8gR2V0cyB0aGUg
dmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVl
X3N0ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwgZmxhZywgZmFsc2UpOwotCi0gIC8vIEFib3J0cyBp
ZiB0aGUgcGFyc2luZyBmYWlsZWQuCi0gIGlmICh2YWx1ZV9zdHIgPT0gTlVMTCkgcmV0dXJuIGZh
bHNlOwotCi0gIC8vIFNldHMgKnZhbHVlIHRvIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZy4KLSAgKnZh
bHVlID0gdmFsdWVfc3RyOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIGEgc3RyaW5nIGhhcyBhIHByZWZpeCB0aGF0IEdvb2dsZSBUZXN0IHVzZXMgZm9yIGl0cwot
Ly8gZmxhZ3MsIGkuZS4sIHN0YXJ0cyB3aXRoIEdURVNUX0ZMQUdfUFJFRklYXyBvciBHVEVTVF9G
TEFHX1BSRUZJWF9EQVNIXy4KLS8vIElmIEdvb2dsZSBUZXN0IGRldGVjdHMgdGhhdCBhIGNvbW1h
bmQgbGluZSBmbGFnIGhhcyBpdHMgcHJlZml4IGJ1dCBpcyBub3QKLS8vIHJlY29nbml6ZWQsIGl0
IHdpbGwgcHJpbnQgaXRzIGhlbHAgbWVzc2FnZS4gRmxhZ3Mgc3RhcnRpbmcgd2l0aAotLy8gR1RF
U1RfSU5URVJOQUxfUFJFRklYXyBmb2xsb3dlZCBieSAiaW50ZXJuYWxfIiBhcmUgY29uc2lkZXJl
ZCBHb29nbGUgVGVzdAotLy8gaW50ZXJuYWwgZmxhZ3MgYW5kIGRvIG5vdCB0cmlnZ2VyIHRoZSBo
ZWxwIG1lc3NhZ2UuCi1zdGF0aWMgYm9vbCBIYXNHb29nbGVUZXN0RmxhZ1ByZWZpeChjb25zdCBj
aGFyKiBzdHIpIHsKLSAgcmV0dXJuIChTa2lwUHJlZml4KCItLSIsICZzdHIpIHx8Ci0gICAgICAg
ICAgU2tpcFByZWZpeCgiLSIsICZzdHIpIHx8Ci0gICAgICAgICAgU2tpcFByZWZpeCgiLyIsICZz
dHIpKSAmJgotICAgICAgICAgIVNraXBQcmVmaXgoR1RFU1RfRkxBR19QUkVGSVhfICJpbnRlcm5h
bF8iLCAmc3RyKSAmJgotICAgICAgICAgKFNraXBQcmVmaXgoR1RFU1RfRkxBR19QUkVGSVhfLCAm
c3RyKSB8fAotICAgICAgICAgIFNraXBQcmVmaXgoR1RFU1RfRkxBR19QUkVGSVhfREFTSF8sICZz
dHIpKTsKLX0KLQotLy8gUHJpbnRzIGEgc3RyaW5nIGNvbnRhaW5pbmcgY29kZS1lbmNvZGVkIHRl
eHQuICBUaGUgZm9sbG93aW5nIGVzY2FwZQotLy8gc2VxdWVuY2VzIGNhbiBiZSB1c2VkIGluIHRo
ZSBzdHJpbmcgdG8gY29udHJvbCB0aGUgdGV4dCBjb2xvcjoKLS8vCi0vLyAgIEBAICAgIHByaW50
cyBhIHNpbmdsZSAnQCcgY2hhcmFjdGVyLgotLy8gICBAUiAgICBjaGFuZ2VzIHRoZSBjb2xvciB0
byByZWQuCi0vLyAgIEBHICAgIGNoYW5nZXMgdGhlIGNvbG9yIHRvIGdyZWVuLgotLy8gICBAWSAg
ICBjaGFuZ2VzIHRoZSBjb2xvciB0byB5ZWxsb3cuCi0vLyAgIEBEICAgIGNoYW5nZXMgdG8gdGhl
IGRlZmF1bHQgdGVybWluYWwgdGV4dCBjb2xvci4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29t
KTogV3JpdGUgdGVzdHMgZm9yIHRoaXMgb25jZSB3ZSBhZGQgc3Rkb3V0Ci0vLyBjYXB0dXJpbmcg
dG8gR29vZ2xlIFRlc3QuCi1zdGF0aWMgdm9pZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFy
KiBzdHIpIHsKLSAgR1Rlc3RDb2xvciBjb2xvciA9IENPTE9SX0RFRkFVTFQ7ICAvLyBUaGUgY3Vy
cmVudCBjb2xvci4KLQotICAvLyBDb25jZXB0dWFsbHksIHdlIHNwbGl0IHRoZSBzdHJpbmcgaW50
byBzZWdtZW50cyBkaXZpZGVkIGJ5IGVzY2FwZQotICAvLyBzZXF1ZW5jZXMuICBUaGVuIHdlIHBy
aW50IG9uZSBzZWdtZW50IGF0IGEgdGltZS4gIEF0IHRoZSBlbmQgb2YKLSAgLy8gZWFjaCBpdGVy
YXRpb24sIHRoZSBzdHIgcG9pbnRlciBhZHZhbmNlcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQot
ICAvLyBuZXh0IHNlZ21lbnQuCi0gIGZvciAoOzspIHsKLSAgICBjb25zdCBjaGFyKiBwID0gc3Ry
Y2hyKHN0ciwgJ0AnKTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICBDb2xvcmVkUHJpbnRm
KGNvbG9yLCAiJXMiLCBzdHIpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENvbG9yZWRQ
cmludGYoY29sb3IsICIlcyIsIHN0ZDo6c3RyaW5nKHN0ciwgcCkuY19zdHIoKSk7Ci0KLSAgICBj
b25zdCBjaGFyIGNoID0gcFsxXTsKLSAgICBzdHIgPSBwICsgMjsKLSAgICBpZiAoY2ggPT0gJ0An
KSB7Ci0gICAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiQCIpOwotICAgIH0gZWxzZSBpZiAoY2gg
PT0gJ0QnKSB7Ci0gICAgICBjb2xvciA9IENPTE9SX0RFRkFVTFQ7Ci0gICAgfSBlbHNlIGlmIChj
aCA9PSAnUicpIHsKLSAgICAgIGNvbG9yID0gQ09MT1JfUkVEOwotICAgIH0gZWxzZSBpZiAoY2gg
PT0gJ0cnKSB7Ci0gICAgICBjb2xvciA9IENPTE9SX0dSRUVOOwotICAgIH0gZWxzZSBpZiAoY2gg
PT0gJ1knKSB7Ci0gICAgICBjb2xvciA9IENPTE9SX1lFTExPVzsKLSAgICB9IGVsc2UgewotICAg
ICAgLS1zdHI7Ci0gICAgfQotICB9Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29k
ZWRIZWxwTWVzc2FnZVtdID0KLSJUaGlzIHByb2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1
c2luZyAiIEdURVNUX05BTUVfICIuIFlvdSBjYW4gdXNlIHRoZVxuIgotImZvbGxvd2luZyBjb21t
YW5kIGxpbmUgZmxhZ3MgdG8gY29udHJvbCBpdHMgYmVoYXZpb3I6XG4iCi0iXG4iCi0iVGVzdCBT
ZWxlY3Rpb246XG4iCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImxpc3RfdGVzdHNARFxu
IgotIiAgICAgIExpc3QgdGhlIG5hbWVzIG9mIGFsbCB0ZXN0cyBpbnN0ZWFkIG9mIHJ1bm5pbmcg
dGhlbS4gVGhlIG5hbWUgb2ZcbiIKLSIgICAgICBURVNUKEZvbywgQmFyKSBpcyBcIkZvby5CYXJc
Ii5cbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmlsdGVyPUBZUE9TVElWRV9QQVRU
RVJOUyIKLSAgICAiW0BHLUBZTkVHQVRJVkVfUEFUVEVSTlNdQERcbiIKLSIgICAgICBSdW4gb25s
eSB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIG9uZSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVy
bnMgYnV0XG4iCi0iICAgICAgbm9uZSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuICc/JyBtYXRj
aGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyOyAnKidcbiIKLSIgICAgICBtYXRjaGVzIGFueSBzdWJz
dHJpbmc7ICc6JyBzZXBhcmF0ZXMgdHdvIHBhdHRlcm5zLlxuIgotIiAgQEctLSIgR1RFU1RfRkxB
R19QUkVGSVhfICJhbHNvX3J1bl9kaXNhYmxlZF90ZXN0c0BEXG4iCi0iICAgICAgUnVuIGFsbCBk
aXNhYmxlZCB0ZXN0cyB0b28uXG4iCi0iXG4iCi0iVGVzdCBFeGVjdXRpb246XG4iCi0iICBARy0t
IiBHVEVTVF9GTEFHX1BSRUZJWF8gInJlcGVhdD1AWVtDT1VOVF1ARFxuIgotIiAgICAgIFJ1biB0
aGUgdGVzdHMgcmVwZWF0ZWRseTsgdXNlIGEgbmVnYXRpdmUgY291bnQgdG8gcmVwZWF0IGZvcmV2
ZXIuXG4iCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInNodWZmbGVARFxuIgotIiAgICAg
IFJhbmRvbWl6ZSB0ZXN0cycgb3JkZXJzIG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cbiIKLSIgIEBHLS0i
IEdURVNUX0ZMQUdfUFJFRklYXyAicmFuZG9tX3NlZWQ9QFlbTlVNQkVSXUBEXG4iCi0iICAgICAg
UmFuZG9tIG51bWJlciBzZWVkIHRvIHVzZSBmb3Igc2h1ZmZsaW5nIHRlc3Qgb3JkZXJzIChiZXR3
ZWVuIDEgYW5kXG4iCi0iICAgICAgOTk5OTksIG9yIDAgdG8gdXNlIGEgc2VlZCBiYXNlZCBvbiB0
aGUgY3VycmVudCB0aW1lKS5cbiIKLSJcbiIKLSJUZXN0IE91dHB1dDpcbiIKLSIgIEBHLS0iIEdU
RVNUX0ZMQUdfUFJFRklYXyAiY29sb3I9QFkoQEd5ZXNAWXxAR25vQFl8QEdhdXRvQFkpQERcbiIK
LSIgICAgICBFbmFibGUvZGlzYWJsZSBjb2xvcmVkIG91dHB1dC4gVGhlIGRlZmF1bHQgaXMgQEdh
dXRvQEQuXG4iCi0iICAtQEctIiBHVEVTVF9GTEFHX1BSRUZJWF8gInByaW50X3RpbWU9MEBEXG4i
Ci0iICAgICAgRG9uJ3QgcHJpbnQgdGhlIGVsYXBzZWQgdGltZSBvZiBlYWNoIHRlc3QuXG4iCi0i
ICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gIm91dHB1dD14bWxAWVtARzpAWURJUkVDVE9SWV9Q
QVRIQEciCi0gICAgR1RFU1RfUEFUSF9TRVBfICJAWXxARzpAWUZJTEVfUEFUSF1ARFxuIgotIiAg
ICAgIEdlbmVyYXRlIGFuIFhNTCByZXBvcnQgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBvciB3aXRo
IHRoZSBnaXZlbiBmaWxlXG4iCi0iICAgICAgbmFtZS4gQFlGSUxFX1BBVEhARCBkZWZhdWx0cyB0
byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIKLSNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNf
Ci0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInN0cmVhbV9yZXN1bHRfdG89QFlIT1NUQEc6
QFlQT1JUQERcbiIKLSIgICAgICBTdHJlYW0gdGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBzZXJ2
ZXIuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLSJcbiIKLSJBc3Nl
cnRpb24gQmVoYXZpb3I6XG4iCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09T
X1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZGVhdGhfdGVzdF9zdHlsZT1A
WShAR2Zhc3RAWXxAR3RocmVhZHNhZmVAWSlARFxuIgotIiAgICAgIFNldCB0aGUgZGVmYXVsdCBk
ZWF0aCB0ZXN0IHN0eWxlLlxuIgotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAh
R1RFU1RfT1NfV0lORE9XUwotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJicmVha19vbl9m
YWlsdXJlQERcbiIKLSIgICAgICBUdXJuIGFzc2VydGlvbiBmYWlsdXJlcyBpbnRvIGRlYnVnZ2Vy
IGJyZWFrLXBvaW50cy5cbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAidGhyb3dfb25f
ZmFpbHVyZUBEXG4iCi0iICAgICAgVHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50byBDKysgZXhj
ZXB0aW9ucy5cbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9u
cz0wQERcbiIKLSIgICAgICBEbyBub3QgcmVwb3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJl
cy4gSW5zdGVhZCwgYWxsb3cgdGhlbVxuIgotIiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9y
IHRocm93IGEgcG9wLXVwIChvbiBXaW5kb3dzKS5cbiIKLSJcbiIKLSJFeGNlcHQgZm9yIEBHLS0i
IEdURVNUX0ZMQUdfUFJFRklYXyAibGlzdF90ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkg
c2V0ICIKLSAgICAidGhlIGNvcnJlc3BvbmRpbmdcbiIKLSJlbnZpcm9ubWVudCB2YXJpYWJsZSBv
ZiBhIGZsYWcgKGFsbCBsZXR0ZXJzIGluIHVwcGVyLWNhc2UpLiBGb3IgZXhhbXBsZSwgdG9cbiIK
LSJkaXNhYmxlIGNvbG9yZWQgdGV4dCBvdXRwdXQsIHlvdSBjYW4gZWl0aGVyIHNwZWNpZnkgQEct
LSIgR1RFU1RfRkxBR19QUkVGSVhfCi0gICAgImNvbG9yPW5vQEQgb3Igc2V0XG4iCi0idGhlIEBH
IiBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIkNPTE9SQEQgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gQEdub0BELlxuIgotIlxuIgotIkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVhZCB0
aGUgIiBHVEVTVF9OQU1FXyAiIGRvY3VtZW50YXRpb24gYXRcbiIKLSJARyIgR1RFU1RfUFJPSkVD
VF9VUkxfICJARC4gSWYgeW91IGZpbmQgYSBidWcgaW4gIiBHVEVTVF9OQU1FXyAiXG4iCi0iKG5v
dCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0ZXN0cyksIHBsZWFzZSByZXBvcnQgaXQgdG9cbiIK
LSJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5ARC5cbiI7Ci0KLWJvb2wgUGFyc2VHb29nbGVUZXN0
RmxhZyhjb25zdCBjaGFyKiBjb25zdCBhcmcpIHsKLSAgcmV0dXJuIFBhcnNlQm9vbEZsYWcoYXJn
LCBrQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAmR1RF
U1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpIHx8Ci0gICAgICBQYXJzZUJvb2xGbGFn
KGFyZywga0JyZWFrT25GYWlsdXJlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZM
QUcoYnJlYWtfb25fZmFpbHVyZSkpIHx8Ci0gICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0NhdGNo
RXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAgICAgICAgICAgICZHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpKSB8fAotICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0NvbG9yRmxhZywgJkdU
RVNUX0ZMQUcoY29sb3IpKSB8fAotICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga0RlYXRoVGVz
dFN0eWxlRmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSkgfHwKLSAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrRGVhdGhUZXN0VXNlRm9yaywK
LSAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHx8
Ci0gICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJnLCBrRmlsdGVyRmxhZywgJkdURVNUX0ZMQUcoZmls
dGVyKSkgfHwKLSAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtJbnRlcm5hbFJ1bkRlYXRoVGVz
dEZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2Rl
YXRoX3Rlc3QpKSB8fAotICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtMaXN0VGVzdHNGbGFnLCAm
R1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwKLSAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtP
dXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRwdXQpKSB8fAotICAgICAgUGFyc2VCb29sRmxhZyhh
cmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1RfRkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgIFBh
cnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNlZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2Vl
ZCkpIHx8Ci0gICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxB
RyhyZXBlYXQpKSB8fAotICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdU
RVNUX0ZMQUcoc2h1ZmZsZSkpIHx8Ci0gICAgICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1Ry
YWNlRGVwdGhGbGFnLAotICAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJh
Y2VfZGVwdGgpKSB8fAotICAgICAgUGFyc2VTdHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRv
RmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KSkgfHwKLSAgICAgIFBhcnNlQm9vbEZsYWcoYXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAotICAg
ICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Ci19Ci0KLSNp
ZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCi12b2lkIExvYWRGbGFnc0Zyb21GaWxlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0gIEZJTEUqIGZsYWdmaWxlID0gcG9zaXg6OkZPcGVu
KHBhdGguY19zdHIoKSwgInIiKTsKLSAgaWYgKCFmbGFnZmlsZSkgewotICAgIGZwcmludGYoc3Rk
ZXJyLAotICAgICAgICAgICAgIlVuYWJsZSB0byBvcGVuIGZpbGUgXCIlc1wiXG4iLAotICAgICAg
ICAgICAgR1RFU1RfRkxBRyhmbGFnZmlsZSkuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7
Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICB9Ci0gIHN0ZDo6c3RyaW5nIGNvbnRlbnRzKFJl
YWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7Ci0gIHBvc2l4OjpGQ2xvc2UoZmxhZ2ZpbGUpOwotICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGluZXM7Ci0gIFNwbGl0U3RyaW5nKGNvbnRlbnRzLCAn
XG4nLCAmbGluZXMpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytp
KSB7Ci0gICAgaWYgKGxpbmVzW2ldLmVtcHR5KCkpCi0gICAgICBjb250aW51ZTsKLSAgICBpZiAo
IVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNbaV0uY19zdHIoKSkpCi0gICAgICBnX2hlbHBfZmxh
ZyA9IHRydWU7Ci0gIH0KLX0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFH
XwotCi0vLyBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdp
dGhvdXQgaW5pdGlhbGl6aW5nCi0vLyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4gIFRoZSB0
eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUKLS8vIGluc3RhbnRpYXRlZCB0byBlaXRoZXIg
Y2hhciBvciB3Y2hhcl90LgotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotdm9pZCBQYXJz
ZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGludCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0g
IGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7IGkrKykgewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7Ci0gICAgY29uc3QgY2hh
ciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwotCi0gICAgdXNpbmcgaW50ZXJuYWw6
OlBhcnNlQm9vbEZsYWc7Ci0gICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlSW50MzJGbGFnOwotICAg
IHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmluZ0ZsYWc7Ci0KLSAgICBib29sIHJlbW92ZV9mbGFn
ID0gZmFsc2U7Ci0gICAgaWYgKFBhcnNlR29vZ2xlVGVzdEZsYWcoYXJnKSkgewotICAgICAgcmVt
b3ZlX2ZsYWcgPSB0cnVlOwotI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KLSAgICB9
IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtGbGFnZmlsZUZsYWcsICZHVEVTVF9GTEFH
KGZsYWdmaWxlKSkpIHsKLSAgICAgIExvYWRGbGFnc0Zyb21GaWxlKEdURVNUX0ZMQUcoZmxhZ2Zp
bGUpKTsKLSAgICAgIHJlbW92ZV9mbGFnID0gdHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09X
Tl9GTEFHRklMRV9GTEFHXwotICAgIH0gZWxzZSBpZiAoYXJnX3N0cmluZyA9PSAiLS1oZWxwIiB8
fCBhcmdfc3RyaW5nID09ICItaCIgfHwKLSAgICAgICAgICAgICAgIGFyZ19zdHJpbmcgPT0gIi0/
IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwKLSAgICAgICAgICAgICAgIEhhc0dvb2dsZVRlc3RG
bGFnUHJlZml4KGFyZykpIHsKLSAgICAgIC8vIEJvdGggaGVscCBmbGFnIGFuZCB1bnJlY29nbml6
ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1ZGluZwotICAgICAgLy8gaW50ZXJuYWwgb25lcykg
dHJpZ2dlciBoZWxwIGRpc3BsYXkuCi0gICAgICBnX2hlbHBfZmxhZyA9IHRydWU7Ci0gICAgfQot
Ci0gICAgaWYgKHJlbW92ZV9mbGFnKSB7Ci0gICAgICAvLyBTaGlmdCB0aGUgcmVtYWluZGVyIG9m
IHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUuICBOb3RlCi0gICAgICAvLyB0aGF0IGFyZ3YgaGFz
ICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJlaW5nCi0gICAgICAv
LyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGluZyBOVUxMIGVsZW1l
bnQgYXMKLSAgICAgIC8vIHdlbGwuCi0gICAgICBmb3IgKGludCBqID0gaTsgaiAhPSAqYXJnYzsg
aisrKSB7Ci0gICAgICAgIGFyZ3Zbal0gPSBhcmd2W2ogKyAxXTsKLSAgICAgIH0KLQotICAgICAg
Ly8gRGVjcmVtZW50cyB0aGUgYXJndW1lbnQgY291bnQuCi0gICAgICAoKmFyZ2MpLS07Ci0KLSAg
ICAgIC8vIFdlIGFsc28gbmVlZCB0byBkZWNyZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdlIGp1c3Qg
cmVtb3ZlZAotICAgICAgLy8gYW4gZWxlbWVudC4KLSAgICAgIGktLTsKLSAgICB9Ci0gIH0KLQot
ICBpZiAoZ19oZWxwX2ZsYWcpIHsKLSAgICAvLyBXZSBwcmludCB0aGUgaGVscCBoZXJlIGluc3Rl
YWQgb2YgaW4gUlVOX0FMTF9URVNUUygpLCBhcyB0aGUKLSAgICAvLyBsYXR0ZXIgbWF5IG5vdCBi
ZSBjYWxsZWQgYXQgYWxsIGlmIHRoZSB1c2VyIGlzIHVzaW5nIEdvb2dsZQotICAgIC8vIFRlc3Qg
d2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3b3JrLgotICAgIFByaW50Q29sb3JFbmNvZGVkKGtD
b2xvckVuY29kZWRIZWxwTWVzc2FnZSk7Ci0gIH0KLX0KLQotLy8gUGFyc2VzIHRoZSBjb21tYW5k
IGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdzLCB3aXRob3V0IGluaXRpYWxpemluZwotLy8gb3Ro
ZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCi12b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShp
bnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwo
YXJnYywgYXJndik7Ci19Ci12b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2Ms
IHdjaGFyX3QqKiBhcmd2KSB7Ci0gIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywg
YXJndik7Ci19Ci0KLS8vIFRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBJbml0R29vZ2xl
VGVzdCgpLgotLy8KLS8vIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUgaW5zdGFu
dGlhdGVkIHRvIGVpdGhlciBjaGFyIG9yCi0vLyB3Y2hhcl90LgotdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJUeXBlPgotdm9pZCBJbml0R29vZ2xlVGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoq
IGFyZ3YpIHsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIGluaXRpYWxpemF0aW9uIGNv
ZGUgdHdpY2UuCi0gIGlmIChHVGVzdElzSW5pdGlhbGl6ZWQoKSkgcmV0dXJuOwotCi0gIGlmICgq
YXJnYyA8PSAwKSByZXR1cm47Ci0KLSAgZ19hcmd2cy5jbGVhcigpOwotICBmb3IgKGludCBpID0g
MDsgaSAhPSAqYXJnYzsgaSsrKSB7Ci0gICAgZ19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRv
U3RyaW5nKGFyZ3ZbaV0pKTsKLSAgfQotCi0gIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdj
LCBhcmd2KTsKLSAgR2V0VW5pdFRlc3RJbXBsKCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIEluaXRpYWxpemVzIEdvb2dsZSBUZXN0
LiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZwotLy8gUlVOX0FMTF9URVNUUygp
LiAgSW4gcGFydGljdWxhciwgaXQgcGFyc2VzIGEgY29tbWFuZCBsaW5lIGZvciB0aGUKLS8vIGZs
YWdzIHRoYXQgR29vZ2xlIFRlc3QgcmVjb2duaXplcy4gIFdoZW5ldmVyIGEgR29vZ2xlIFRlc3Qg
ZmxhZyBpcwotLy8gc2VlbiwgaXQgaXMgcmVtb3ZlZCBmcm9tIGFyZ3YsIGFuZCAqYXJnYyBpcyBk
ZWNyZW1lbnRlZC4KLS8vCi0vLyBObyB2YWx1ZSBpcyByZXR1cm5lZC4gIEluc3RlYWQsIHRoZSBH
b29nbGUgVGVzdCBmbGFnIHZhcmlhYmxlcyBhcmUKLS8vIHVwZGF0ZWQuCi0vLwotLy8gQ2FsbGlu
ZyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBzZWNvbmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVm
ZmVjdC4KLXZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBhcmdjLCBjaGFyKiogYXJndikgewotI2lm
IGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQotICBHVEVT
VF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8oYXJnYywgYXJndik7Ci0jZWxzZSAg
Ly8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCi0gIGlu
dGVybmFsOjpJbml0R29vZ2xlVGVzdEltcGwoYXJnYywgYXJndik7Ci0jZW5kaWYgIC8vIGRlZmlu
ZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQotfQotCi0vLyBUaGlz
IG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBp
bGVkIGluCi0vLyBVTklDT0RFIG1vZGUuCi12b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywg
d2NoYXJfdCoqIGFyZ3YpIHsKLSNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9U
RVNUX0ZVTkNUSU9OXykKLSAgR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05f
KGFyZ2MsIGFyZ3YpOwotI2Vsc2UgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xF
X1RFU1RfRlVOQ1RJT05fKQotICBpbnRlcm5hbDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFy
Z3YpOwotI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZV
TkNUSU9OXykKLX0KLQotc3RkOjpzdHJpbmcgVGVtcERpcigpIHsKLSNpZiBkZWZpbmVkKEdURVNU
X0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXykKLSAgICByZXR1cm4gR1RFU1RfQ1VTVE9NX1RFTVBE
SVJfRlVOQ1RJT05fKCk7Ci0jZW5kaWYKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICBy
ZXR1cm4gIlxcdGVtcFxcIjsKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSAgY29uc3QgY2hhciog
dGVtcF9kaXIgPSBpbnRlcm5hbDo6cG9zaXg6OkdldEVudigiVEVNUCIpOwotICBpZiAodGVtcF9k
aXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9PSAnXDAnKQotICAgIHJldHVybiAiXFx0ZW1wXFwi
OwotICBlbHNlIGlmICh0ZW1wX2RpcltzdHJsZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKLSAg
ICByZXR1cm4gdGVtcF9kaXI7Ci0gIGVsc2UKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9k
aXIpICsgIlxcIjsKLSNlbGlmIEdURVNUX09TX0xJTlVYX0FORFJPSUQKLSAgcmV0dXJuICIvc2Rj
YXJkLyI7Ci0jZWxzZQotICByZXR1cm4gIi90bXAvIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lO
RE9XU19NT0JJTEUKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3NyYy9ndGVzdF9tYWluLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0X21haW4u
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMDI4MjI1NTIzMzA2ZWI5NjQ4Zjk0
YmNiZTllM2E3ODAxNmJiN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0X21haW4uY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwzOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotR1RF
U1RfQVBJXyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgcHJpbnRmKCJSdW5u
aW5nIG1haW4oKSBmcm9tIGd0ZXN0X21haW4uY2NcbiIpOwotICB0ZXN0aW5nOjpJbml0R29vZ2xl
VGVzdCgmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiNTBhMTNkNWUyZTE0ZjQ2YzU1MmFiMmIxMDc2NDA5MWY4NWUyNzViLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsOTMg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTAsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8K
LS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUZXN0cyB0
aGF0IHZlcmlmeSBpbnRlcmFjdGlvbiBvZiBleGNlcHRpb25zIGFuZCBkZWF0aCB0ZXN0cy4KLQot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotIyBpZiBHVEVTVF9IQVNfU0VICi0j
ICBpbmNsdWRlIDx3aW5kb3dzLmg+ICAgICAgICAgIC8vIEZvciBSYWlzZUV4Y2VwdGlvbigpLgot
IyBlbmRpZgotCi0jIGluY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotCi0jIGlmIEdURVNUX0hB
U19FWENFUFRJT05TCi0KLSMgIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzdGQ6OmV4Y2Vw
dGlvbi4KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBvcnQgdGhyb3duIGV4Y2VwdGlv
bnMgYXMgZmFpbHVyZXMgYW5kIHRoYXQgdGhlCi0vLyBleGNlcHRpb25zIGRvIG5vdCBlc2NhcGUg
ZGVhdGggdGVzdCBtYWNyb3MuCi1URVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgRXhjZXB0aW9u
SXNGYWlsdXJlKSB7Ci0gIHRyeSB7Ci0gICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0RFQVRIKHRocm93IDEsICIiKSwgInRocmV3IGFuIGV4Y2VwdGlvbiIpOwotICB9IGNhdGNoICgu
Li4pIHsgIC8vIE5PTElOVAotICAgIEZBSUwoKSA8PCAiQW4gZXhjZXB0aW9uIGVzY2FwZWQgYSBk
ZWF0aCB0ZXN0IG1hY3JvIGludm9jYXRpb24gIgotICAgICAgICAgICA8PCAid2l0aCBjYXRjaF9l
eGNlcHRpb25zICIKLSAgICAgICAgICAgPDwgKHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKLSAgfQotfQotCi1jbGFzcyBUZXN0
RXhjZXB0aW9uIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwg
Y29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gImV4Y2VwdGlvbmFsIG1l
c3NhZ2UiOyB9Ci19OwotCi1URVNUKEN4eEV4Y2VwdGlvbkRlYXRoVGVzdCwgUHJpbnRzTWVzc2Fn
ZUZvclN0ZEV4Y2VwdGlvbnMpIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZXhjZXB0aW9uIG1l
c3NhZ2UgaXMgcXVvdGVkIGluIHRoZSBmYWlsdXJlIHRleHQuCi0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCksICIiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbmFsIG1lc3NhZ2UiKTsKLSAgLy8gVmVyaWZpZXMg
dGhhdCB0aGUgbG9jYXRpb24gaXMgbWVudGlvbmVkIGluIHRoZSBmYWlsdXJlIHRleHQuCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSCh0aHJvdyBUZXN0RXhjZXB0aW9uKCks
ICIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImd0ZXN0LWRlYXRoLXRlc3RfZXhfdGVz
dC5jYyIpOwotfQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotIyBpZiBHVEVT
VF9IQVNfU0VICi0vLyBUZXN0cyB0aGF0IGVuYWJsaW5nIGludGVyY2VwdGlvbiBvZiBTRUggZXhj
ZXB0aW9ucyB3aXRoIHRoZQotLy8gY2F0Y2hfZXhjZXB0aW9ucyBmbGFnIGRvZXMgbm90IGludGVy
ZmVyZSB3aXRoIFNFSCBleGNlcHRpb25zIGJlaW5nCi0vLyB0cmVhdGVkIGFzIGRlYXRoIGJ5IGRl
YXRoIHRlc3RzLgotVEVTVChTZWhFeGNlcHRpb25EZWFzVGVzdCwgQ2F0Y2hFeGNlcHRpb25zRG9l
c05vdEludGVyZmVyZSkgewotICBFWFBFQ1RfREVBVEgoUmFpc2VFeGNlcHRpb24oNDIsIDB4MCwg
MCwgTlVMTCksICIiKQotICAgICAgPDwgIndpdGggY2F0Y2hfZXhjZXB0aW9ucyAiCi0gICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOwotfQotIyBlbmRpZgotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNU
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0
aW9ucykgPSBHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU18gIT0gMDsKLSAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3Qu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1N2ZlMzgyNDQyZWJiZjA5MGVhOGVm
OGFkYmU0ZGE2YWY5YWIyNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDI3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBX
YW4pCi0vLwotLy8gVGVzdHMgZm9yIGRlYXRoIHRlc3RzLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QtZGVhdGgtdGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkFsd2F5c0ZhbHNlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7Ci0KLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLSMgIGluY2x1
ZGUgPGRpcmVjdC5oPiAgICAgICAgICAvLyBGb3IgY2hkaXIoKS4KLSMgZWxzZQotIyAgaW5jbHVk
ZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRw
aWQuCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSMgaW5jbHVkZSA8bGltaXRzLmg+
Ci0jIGluY2x1ZGUgPHNpZ25hbC5oPgotIyBpbmNsdWRlIDxzdGRpby5oPgotCi0jIGlmIEdURVNU
X09TX0xJTlVYCi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
TElOVVgKLQotIyBpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotLy8gSW5kaWNhdGVzIHRo
YXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1w
bGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlz
Ci0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0
cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5n
IGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSMgZGVmaW5lIEdURVNUX0lN
UExFTUVOVEFUSU9OXyAxCi0jIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSMg
dW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OnBvc2l4OwotCi11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0
aFRlc3RGYWN0b3J5OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwotdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkdldExhc3RFcnJub0Rlc2NyaXB0aW9uOwotdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJ
bkRlYXRoVGVzdENoaWxkOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51
bWJlcjsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8g
QSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2JqZWN0cyByZXBsYWNlIHRoZSBkZWF0aCB0ZXN0IGZhY3Rv
cnkgZm9yIGEKLS8vIHNpbmdsZSBVbml0VGVzdCBvYmplY3QgZHVyaW5nIHRoZWlyIGxpZmV0aW1l
cy4KLWNsYXNzIFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0
IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5KERlYXRoVGVzdEZhY3RvcnkqIG5ld19mYWN0b3J5KQot
ICAgICAgOiB1bml0X3Rlc3RfaW1wbF8oR2V0VW5pdFRlc3RJbXBsKCkpIHsKLSAgICBvbGRfZmFj
dG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOwot
ICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVhdGhfdGVzdF9mYWN0b3J5Xy5yZXNldChuZXdfZmFjdG9y
eSk7Ci0gIH0KLQotICB+UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoKSB7Ci0gICAgdW5pdF90ZXN0
X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3RvcnlfLnJlbGVhc2UoKTsKLSAgICB1bml0X3Rlc3RfaW1w
bF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVzZXQob2xkX2ZhY3RvcnlfKTsKLSAgfQotIHByaXZh
dGU6Ci0gIC8vIFByZXZlbnRzIGNvcHlpbmcgUmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkgb2JqZWN0
cy4KLSAgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoY29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3Rv
cnkmKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsK
LQotICBVbml0VGVzdEltcGwqIHVuaXRfdGVzdF9pbXBsXzsKLSAgRGVhdGhUZXN0RmFjdG9yeSog
b2xkX2ZhY3RvcnlfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwotCi12b2lkIERpZVdpdGhNZXNzYWdlKGNvbnN0IDo6c3RkOjpzdHJpbmcm
IG1lc3NhZ2UpIHsKLSAgZnByaW50ZihzdGRlcnIsICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7Ci0g
IGZmbHVzaChzdGRlcnIpOyAgLy8gTWFrZSBzdXJlIHRoZSB0ZXh0IGlzIHByaW50ZWQgYmVmb3Jl
IHRoZSBwcm9jZXNzIGV4aXRzLgotCi0gIC8vIFdlIGNhbGwgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4
aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBhIGRpcmVjdAotICAvLyBzeXN0ZW0gY2FsbCBhbmQgdGh1
cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcy4gIGV4aXQoKQotICAvLyB3aWxsIGlu
dm9rZSB1c2VyLWRlZmluZWQgZXhpdC1ob29rcywgd2hpY2ggbWF5IGRvIGRhbmdlcm91cwotICAv
LyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIGRlYXRoIHRlc3RzLgotICAvLwotICAvLyBTb21l
IGNvbXBpbGVycyBjYW4gcmVjb2duaXplIHRoYXQgX2V4aXQoKSBuZXZlciByZXR1cm5zIGFuZCBp
c3N1ZSB0aGUKLSAgLy8gJ3VucmVhY2hhYmxlIGNvZGUnIHdhcm5pbmcgZm9yIGNvZGUgZm9sbG93
aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVzcwotICAvLyBmb29sZWQgYnkgYSBmYWtlIGNvbmRpdGlv
bi4KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBfZXhpdCgxKTsKLX0KLQotdm9pZCBEaWVJbnNp
ZGUoY29uc3QgOjpzdGQ6OnN0cmluZyYgZnVuY3Rpb24pIHsKLSAgRGllV2l0aE1lc3NhZ2UoImRl
YXRoIGluc2lkZSAiICsgZnVuY3Rpb24gKyAiKCkuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGVh
dGggdGVzdHMgd29yay4KLQotY2xhc3MgVGVzdEZvckRlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFRlc3RGb3JEZWF0aFRlc3QoKSA6IG9yaWdpbmFsX2Rp
cl8oRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSkge30KLQotICB2aXJ0dWFsIH5UZXN0Rm9yRGVh
dGhUZXN0KCkgewotICAgIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXJfLmNfc3RyKCkpOwotICB9
Ci0KLSAgLy8gQSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUu
Ci0gIHN0YXRpYyB2b2lkIFN0YXRpY01lbWJlckZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIlN0YXRp
Y01lbWJlckZ1bmN0aW9uIik7IH0KLQotICAvLyBBIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJl
IHRoYXQgbWF5IGRpZS4KLSAgdm9pZCBNZW1iZXJGdW5jdGlvbigpIHsKLSAgICBpZiAoc2hvdWxk
X2RpZV8pCi0gICAgICBEaWVJbnNpZGUoIk1lbWJlckZ1bmN0aW9uIik7Ci0gIH0KLQotICAvLyBU
cnVlIGlmZiBNZW1iZXJGdW5jdGlvbigpIHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2RpZV87
Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2Rpcl87Ci19OwotCi0vLyBBIGNsYXNzIHdpdGgg
YSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotY2xhc3MgTWF5RGllIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IE1heURpZShib29sIHNob3VsZF9kaWUpIDogc2hvdWxkX2RpZV8oc2hvdWxk
X2RpZSkge30KLQotICAvLyBBIG1lbWJlciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi0gIHZvaWQg
TWVtYmVyRnVuY3Rpb24oKSBjb25zdCB7Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAgRGll
SW5zaWRlKCJNYXlEaWU6Ok1lbWJlckZ1bmN0aW9uIik7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8v
IFRydWUgaWZmIE1lbWJlckZ1bmN0aW9uKCkgc2hvdWxkIGRpZS4KLSAgYm9vbCBzaG91bGRfZGll
XzsKLX07Ci0KLS8vIEEgZ2xvYmFsIGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCi12
b2lkIEdsb2JhbEZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIkdsb2JhbEZ1bmN0aW9uIik7IH0KLQot
Ly8gQSBub24tdm9pZCBmdW5jdGlvbiB0aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotaW50IE5vblZv
aWRGdW5jdGlvbigpIHsKLSAgRGllSW5zaWRlKCJOb25Wb2lkRnVuY3Rpb24iKTsKLSAgcmV0dXJu
IDE7Ci19Ci0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotdm9pZCBEaWVJZihi
b29sIHNob3VsZF9kaWUpIHsKLSAgaWYgKHNob3VsZF9kaWUpCi0gICAgRGllSW5zaWRlKCJEaWVJ
ZiIpOwotfQotCi0vLyBBIGJpbmFyeSBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi1ib29sIERpZUlm
TGVzc1RoYW4oaW50IHgsIGludCB5KSB7Ci0gIGlmICh4IDwgeSkgewotICAgIERpZUluc2lkZSgi
RGllSWZMZXNzVGhhbiIpOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBUZXN0cyB0aGF0
IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNlZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0
IGZpeHR1cmUuCi12b2lkIERlYXRoVGVzdFN1YnJvdXRpbmUoKSB7Ci0gIEVYUEVDVF9ERUFUSChH
bG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0aW9uIik7Ci0gIEFTU0VSVF9ERUFU
SChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGguKkdsb2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8vIERl
YXRoIGluIGRiZywgbm90IG9wdC4KLWludCBEaWVJbkRlYnVnRWxzZTEyKGludCogc2lkZWVmZmVj
dCkgewotICBpZiAoc2lkZWVmZmVjdCkgKnNpZGVlZmZlY3QgPSAxMjsKLQotIyBpZm5kZWYgTkRF
QlVHCi0KLSAgRGllSW5zaWRlKCJEaWVJbkRlYnVnRWxzZTEyIik7Ci0KLSMgZW5kaWYgIC8vIE5E
RUJVRwotCi0gIHJldHVybiAxMjsKLX0KLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRl
c3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNh
dGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewotICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2Vzcydz
IGV4aXQgY29kZSBpcyB0aGUgc2FtZSBhcyBpdHMgZXhpdCBzdGF0dXMsCi0gIC8vIHNvIHRoZSBw
cmVkaWNhdGUganVzdCBjb21wYXJlcyB0aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4K
LSAgRVhQRUNUX1RSVUUodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMCkpOwotICBFWFBFQ1Rf
VFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgxKSgxKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDQyKSg0MikpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMCkoMSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENv
ZGUoMSkoMCkpOwotfQotCi0jIGVsc2UKLQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2Yg
YSBwcm9jZXNzIHRoYXQgY2FsbHMgX2V4aXQoMikgd2l0aCBhCi0vLyBnaXZlbiBleGl0IGNvZGUu
ICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUKLS8vIEV4aXRTdGF0dXNQcmVkaWNh
dGVUZXN0IHRlc3Qgc3VpdGUuCi1zdGF0aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50IGV4aXRf
Y29kZSkgewotICBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0g
MCkgewotICAgIF9leGl0KGV4aXRfY29kZSk7Ci0gIH0KLSAgaW50IHN0YXR1czsKLSAgd2FpdHBp
ZChjaGlsZF9waWQsICZzdGF0dXMsIDApOwotICByZXR1cm4gc3RhdHVzOwotfQotCi0vLyBSZXR1
cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZlbiBzaWdu
YWwuCi0vLyBJZiB0aGUgc2lnbmFsIGRvZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwg
dGhlbiBpdCByZXR1cm5zCi0vLyBpbnN0ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3Mg
dGhhdCBleGl0cyBub3JtYWxseSB3aXRoIGV4aXQKLS8vIGNvZGUgMS4gIFRoaXMgaXMgYSBoZWxw
ZXIgZnVuY3Rpb24gZm9yIHRoZSBFeGl0U3RhdHVzUHJlZGljYXRlVGVzdAotLy8gdGVzdCBzdWl0
ZS4KLXN0YXRpYyBpbnQgS2lsbGVkRXhpdFN0YXR1cyhpbnQgc2lnbnVtKSB7Ci0gIHBpZF90IGNo
aWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgcmFpc2Uoc2ln
bnVtKTsKLSAgICBfZXhpdCgxKTsKLSAgfQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlkKGNoaWxk
X3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJldHVybiBzdGF0dXM7Ci19Ci0KLS8vIFRlc3RzIHRoZSBF
eGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBF
eGl0ZWRXaXRoQ29kZSkgewotICBjb25zdCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0U3RhdHVz
KDApOwotICBjb25zdCBpbnQgc3RhdHVzMSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOwotICBjb25z
dCBpbnQgc3RhdHVzNDIgPSBOb3JtYWxFeGl0U3RhdHVzKDQyKTsKLSAgY29uc3QgdGVzdGluZzo6
RXhpdGVkV2l0aENvZGUgcHJlZDAoMCk7Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2Rl
IHByZWQxKDEpOwotICBjb25zdCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIoNDIpOwot
ICBFWFBFQ1RfUFJFRDEocHJlZDAsICBzdGF0dXMwKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQxLCAg
c3RhdHVzMSk7Ci0gIEVYUEVDVF9QUkVEMShwcmVkNDIsIHN0YXR1czQyKTsKLSAgRVhQRUNUX0ZB
TFNFKHByZWQwKHN0YXR1czEpKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMwKSk7Ci0g
IEVYUEVDVF9GQUxTRShwcmVkMShzdGF0dXM0MikpOwotfQotCi0vLyBUZXN0cyB0aGUgS2lsbGVk
QnlTaWduYWwgcHJlZGljYXRlLgotVEVTVChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVk
QnlTaWduYWwpIHsKLSAgY29uc3QgaW50IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0YXR1cyhT
SUdTRUdWKTsKLSAgY29uc3QgaW50IHN0YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdL
SUxMKTsKLSAgY29uc3QgdGVzdGluZzo6S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJR1NFR1Yp
OwotICBjb25zdCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lMTCk7Ci0g
IEVYUEVDVF9QUkVEMShwcmVkX3NlZ3YsIHN0YXR1c19zZWd2KTsKLSAgRVhQRUNUX1BSRUQxKHBy
ZWRfa2lsbCwgc3RhdHVzX2tpbGwpOwotICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0YXR1c19r
aWxsKSk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKLX0KLQotIyBl
bmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0
IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93
ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRl
eHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQot
ICAgIC8vIFRoaXMgd291bGQgZmFpbCBpZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9u
IHRlc3Qgb25seQotICAgIEFTU0VSVF9ERUFUSChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlz
VHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICBlbHNlCi0gICAgLy8g
VGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNoIGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9E
RUFUSAotICAgIC8vIGRvZXNuJ3QgZXhwYW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91
dCBhbiAiZWxzZSIKLSAgICA7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RF
QVRIKHJldHVybiwgIiIpIDw8ICJkaWQgbm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkp
Ci0gICAgOwotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAy
IDw8IDM7Ci19Ci0KLXZvaWQgRGllV2l0aEVtYmVkZGVkTnVsKCkgewotICBmcHJpbnRmKHN0ZGVy
ciwgIkhlbGxvJWNteSBudWxsIHdvcmxkLlxuIiwgJ1wwJyk7Ci0gIGZmbHVzaChzdGRlcnIpOwot
ICBfZXhpdCgxKTsKLX0KLQotIyBpZiBHVEVTVF9VU0VTX1BDUkUKLS8vIFRlc3RzIHRoYXQgRVhQ
RUNUX0RFQVRIIGFuZCBBU1NFUlRfREVBVEggd29yayB3aGVuIHRoZSBlcnJvcgotLy8gbWVzc2Fn
ZSBoYXMgYSBOVUwgY2hhcmFjdGVyIGluIGl0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVt
YmVkZGVkTnVsSW5NZXNzYWdlKSB7Ci0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiA8cmVnZXgu
aD4gZG9lc24ndCBzdXBwb3J0IG1hdGNoaW5nIHN0cmluZ3MKLSAgLy8gd2l0aCBlbWJlZGRlZCBO
VUwgY2hhcmFjdGVycyAtIGZpbmQgYSB3YXkgdG8gd29ya2Fyb3VuZCBpdC4KLSAgRVhQRUNUX0RF
QVRIKERpZVdpdGhFbWJlZGRlZE51bCgpLCAibXkgbnVsbCB3b3JsZCIpOwotICBBU1NFUlRfREVB
VEgoRGllV2l0aEVtYmVkZGVkTnVsKCksICJteSBudWxsIHdvcmxkIik7Ci19Ci0jIGVuZGlmICAv
LyBHVEVTVF9VU0VTX1BDUkUKLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBh
bmQgdG8gY29kZSB3aGljaCBpbnRlcmFjdHMgd2VsbCB3aXRoIHN3aXRjaAotLy8gc3RhdGVtZW50
cy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLSAgLy8gTWlj
cm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRz
IHdpdGhvdXQKLSAgLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3Ig
dGhpcyB0ZXN0LgotICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQotCi0g
IHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAi
IikgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNoICgwKQot
ICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGlu
IHN3aXRjaCBjYXNlIjsKLQotICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLX0K
LQotLy8gVGVzdHMgdGhhdCBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4g
YSAiZmFzdCIgc3R5bGUKLS8vIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwg
U3RhdGljTWVtYmVyRnVuY3Rpb25GYXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1
bmN0aW9uKCksICJkZWF0aC4qU3RhdGljTWVtYmVyIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBt
ZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IgotLy8gc3R5
bGUgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlvbkZh
c3RTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZh
c3QiOwotICBzaG91bGRfZGllXyA9IHRydWU7Ci0gIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5jdGlv
bigpLCAiaW5zaWRlLipNZW1iZXJGdW5jdGlvbiIpOwotfQotCi12b2lkIENoYW5nZVRvUm9vdERp
cigpIHsgcG9zaXg6OkNoRGlyKEdURVNUX1BBVEhfU0VQXyk7IH0KLQotLy8gVGVzdHMgdGhhdCBk
ZWF0aCB0ZXN0cyB3b3JrIGV2ZW4gaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGhhcyBiZWVuCi0v
LyBjaGFuZ2VkLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEZhc3REZWF0aFRlc3RJbkNoYW5n
ZWREaXIpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0
IjsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rp
bmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAiIik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEFT
U0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotfQotCi0jIGlmIEdURVNUX09TX0xJTlVYCi12b2lk
IFNpZ3Byb2ZBY3Rpb24oaW50LCBzaWdpbmZvX3QqLCB2b2lkKikgeyAvKiBubyBvcCAqLyB9Ci0K
LS8vIFNldHMgU0lHUFJPRiBhY3Rpb24gYW5kIElUSU1FUl9QUk9GIHRpbWVyIChpbnRlcnZhbDog
MW1zKS4KLXZvaWQgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCkgewotICBzdHJ1Y3QgaXRpbWVy
dmFsIHRpbWVyOwotICB0aW1lci5pdF9pbnRlcnZhbC50dl9zZWMgPSAwOwotICB0aW1lci5pdF9p
bnRlcnZhbC50dl91c2VjID0gMTsKLSAgdGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZh
bDsKLSAgQVNTRVJUX0VRKDAsIHNldGl0aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7
Ci0gIHN0cnVjdCBzaWdhY3Rpb24gc2lnbmFsX2FjdGlvbjsKLSAgbWVtc2V0KCZzaWduYWxfYWN0
aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2FjdGlvbikpOwotICBzaWdlbXB0eXNldCgmc2lnbmFsX2Fj
dGlvbi5zYV9tYXNrKTsKLSAgc2lnbmFsX2FjdGlvbi5zYV9zaWdhY3Rpb24gPSBTaWdwcm9mQWN0
aW9uOwotICBzaWduYWxfYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87
Ci0gIEFTU0VSVF9FUSgwLCBzaWdhY3Rpb24oU0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIE5VTEwp
KTsKLX0KLQotLy8gRGlzYWJsZXMgSVRJTUVSX1BST0YgdGltZXIgYW5kIGlnbm9yZXMgU0lHUFJP
RiBzaWduYWwuCi12b2lkIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoc3RydWN0IHNpZ2Fj
dGlvbiogb2xkX3NpZ25hbF9hY3Rpb24pIHsKLSAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKLSAg
dGltZXIuaXRfaW50ZXJ2YWwudHZfc2VjID0gMDsKLSAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNl
YyA9IDA7Ci0gIHRpbWVyLml0X3ZhbHVlID0gdGltZXIuaXRfaW50ZXJ2YWw7Ci0gIEFTU0VSVF9F
USgwLCBzZXRpdGltZXIoSVRJTUVSX1BST0YsICZ0aW1lciwgTlVMTCkpOwotICBzdHJ1Y3Qgc2ln
YWN0aW9uIHNpZ25hbF9hY3Rpb247Ci0gIG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9m
KHNpZ25hbF9hY3Rpb24pKTsKLSAgc2lnZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7
Ci0gIHNpZ25hbF9hY3Rpb24uc2FfaGFuZGxlciA9IFNJR19JR047Ci0gIEFTU0VSVF9FUSgwLCBz
aWdhY3Rpb24oU0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIG9sZF9zaWduYWxfYWN0aW9uKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yayB3aGVuIFNJR1BST0YgaGFuZGxlciBh
bmQgdGltZXIgYXJlIHNldC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0U2lncHJvZkFj
dGlvblNldCkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZh
c3QiOwotICBTZXRTaWdwcm9mQWN0aW9uQW5kVGltZXIoKTsKLSAgRVhQRUNUX0RFQVRIKF9leGl0
KDEpLCAiIik7Ci0gIHN0cnVjdCBzaWdhY3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247Ci0gIERpc2Fi
bGVTaWdwcm9mQWN0aW9uQW5kVGltZXIoJm9sZF9zaWduYWxfYWN0aW9uKTsKLSAgRVhQRUNUX1RS
VUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ffc2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOwotfQot
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkU2FmZVNpZ3Byb2ZBY3Rpb25TZXQpIHsK
LSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsK
LSAgU2V0U2lncHJvZkFjdGlvbkFuZFRpbWVyKCk7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwg
IiIpOwotICBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9zaWduYWxfYWN0aW9uOwotICBEaXNhYmxlU2ln
cHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRfc2lnbmFsX2FjdGlvbik7Ci0gIEVYUEVDVF9UUlVFKG9s
ZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2FjdGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKLX0KLSMgZW5k
aWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLS8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1w
bGUgb2YgZGVhdGggdGVzdHMgaW4gdGhlICJ0aHJlYWRzYWZlIiBzdHlsZToKLQotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIFN0YXRpY01lbWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0g
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0g
IEFTU0VSVF9ERUFUSChTdGF0aWNNZW1iZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJl
ciIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRz
YWZlU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0
aHJlYWRzYWZlIjsKLSAgc2hvdWxkX2RpZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVy
RnVuY3Rpb24oKSwgImluc2lkZS4qTWVtYmVyRnVuY3Rpb24iKTsKLX0KLQotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIFRocmVhZHNhZmVEZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLQotICBmb3IgKGludCBp
ID0gMDsgaSA8IDM7ICsraSkKLSAgICBFWFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoaSksICIiKSA8PCAiOiBpID0gIiA8PCBpOwotfQotCi1URVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgVGhyZWFkc2FmZURlYXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIENoYW5n
ZVRvUm9vdERpcigpOwotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0
aENvZGUoMSksICIiKTsKLQotICBDaGFuZ2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9l
eGl0KDEpLCAiIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykg
ewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUi
OwotICBFWFBFQ1RfREVBVEgoX2V4aXQoMSksICIiKTsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7
Ci19Ci0KLSMgaWYgR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLW5hbWVz
cGFjZSB7Ci0KLWJvb2wgcHRocmVhZF9mbGFnOwotCi12b2lkIFNldFB0aHJlYWRGbGFnKCkgewot
ICBwdGhyZWFkX2ZsYWcgPSB0cnVlOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIERvZXNOb3RFeGVjdXRlQXRmb3JrSG9va3MpIHsKLSAgaWYgKCF0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKSB7Ci0gICAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgICBwdGhyZWFkX2Zs
YWcgPSBmYWxzZTsKLSAgICBBU1NFUlRfRVEoMCwgcHRocmVhZF9hdGZvcmsoJlNldFB0aHJlYWRG
bGFnLCBOVUxMLCBOVUxMKSk7Ci0gICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gICAg
QVNTRVJUX0ZBTFNFKHB0aHJlYWRfZmxhZyk7Ci0gIH0KLX0KLQotIyBlbmRpZiAgLy8gR1RFU1Rf
SEFTX0NMT05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLS8vIFRlc3RzIHRoYXQgYSBtZXRob2Qg
b2YgYW5vdGhlciBjbGFzcyBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgTWV0aG9kT2ZBbm90aGVyQ2xhc3MpIHsKLSAgY29uc3QgTWF5RGllIHgo
dHJ1ZSk7Ci0gIEFTU0VSVF9ERUFUSCh4Lk1lbWJlckZ1bmN0aW9uKCksICJNYXlEaWVcXDpcXDpN
ZW1iZXJGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgZ2xvYmFsIGZ1bmN0aW9uIGNh
biBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBHbG9i
YWxGdW5jdGlvbikgewotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgIkdsb2JhbEZ1
bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW55IHZhbHVlIGNvbnZlcnRpYmxlIHRvIGFu
IFJFIHdvcmtzIGFzIGEgc2Vjb25kCi0vLyBhcmd1bWVudCB0byBFWFBFQ1RfREVBVEguCi1URVNU
X0YoVGVzdEZvckRlYXRoVGVzdCwgQWNjZXB0c0FueXRoaW5nQ29udmVydGlibGVUb1JFKSB7Ci0g
IHN0YXRpYyBjb25zdCBjaGFyIHJlZ2V4X2Nfc3RyW10gPSAiR2xvYmFsRnVuY3Rpb24iOwotICBF
WFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfY19zdHIpOwotCi0gIGNvbnN0IHRl
c3Rpbmc6OmludGVybmFsOjpSRSByZWdleChyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChH
bG9iYWxGdW5jdGlvbigpLCByZWdleCk7Ci0KLSMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcK
LQotICBjb25zdCA6OnN0cmluZyByZWdleF9zdHIocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVB
VEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVnZXhfc3RyKTsKLQotIyBlbmRpZiAgLy8gR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKLQotIyBpZiAhR1RFU1RfVVNFU19QQ1JFCi0KLSAgY29uc3QgOjpzdGQ6
OnN0cmluZyByZWdleF9zdGRfc3RyKHJlZ2V4X2Nfc3RyKTsKLSAgRVhQRUNUX0RFQVRIKEdsb2Jh
bEZ1bmN0aW9uKCksIHJlZ2V4X3N0ZF9zdHIpOwotCi0jIGVuZGlmICAvLyAhR1RFU1RfVVNFU19Q
Q1JFCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBp
biBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTm9uVm9pZEZ1bmN0aW9u
KSB7Ci0gIEFTU0VSVF9ERUFUSChOb25Wb2lkRnVuY3Rpb24oKSwgIk5vblZvaWRGdW5jdGlvbiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB0aGF0IHRha2UgcGFyYW1ldGVyKHMpIGNh
biBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGdW5j
dGlvbldpdGhQYXJhbWV0ZXIpIHsKLSAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZc
XChcXCkiKTsKLSAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oMiwgMyksICJEaWVJZkxlc3NU
aGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNp
ZGUgYSBURVNULCBURVNUX0YsIG9yIHRlc3QgZml4dHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBPdXRzaWRlRml4dHVyZSkgewotICBEZWF0aFRlc3RTdWJyb3V0aW5lKCk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgY2FuIGJlIGRvbmUgaW5zaWRlIGEgbG9vcC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBJbnNpZGVMb29wKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
NTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIKERpZUlmTGVzc1RoYW4oLTEsIGkpLCAiRGllSWZM
ZXNzVGhhbiIpIDw8ICJ3aGVyZSBpID09ICIgPDwgaTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0
IGEgY29tcG91bmQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBDb21wb3VuZFN0YXRlbWVudCkgewotICBFWFBFQ1RfREVBVEgo
eyAgLy8gTk9MSU5UCi0gICAgY29uc3QgaW50IHggPSAyOwotICAgIGNvbnN0IGludCB5ID0geCAr
IDE7Ci0gICAgRGllSWZMZXNzVGhhbih4LCB5KTsKLSAgfSwKLSAgIkRpZUlmTGVzc1RoYW4iKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBjb2RlIHRoYXQgZG9lc24ndCBkaWUgY2F1c2VzIGEgZGVhdGgg
dGVzdCB0byBmYWlsLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3REaWUpIHsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlm
IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgYSBkZWF0aCB0ZXN0IGZhaWxzIHdoZW4gdGhlIGVycm9yIG1lc3NhZ2UgaXNu
J3QgZXhwZWN0ZWQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRXJyb3JNZXNzYWdlTWlzbWF0
Y2gpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJFbmQgb2YgZGVhdGggdGVz
dCBtZXNzYWdlLiI7Ci0gIH0sICJkaWVkIGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvciIpOwot
fQotCi0vLyBPbiBleGl0LCAqYWJvcnRlZCB3aWxsIGJlIHRydWUgaWZmIHRoZSBFWFBFQ1RfREVB
VEgoKSBzdGF0ZW1lbnQKLS8vIGFib3J0ZWQgdGhlIGZ1bmN0aW9uLgotdm9pZCBFeHBlY3REZWF0
aFRlc3RIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVD
VF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxk
IGZhaWwuCi0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RF
QVRIIGRvZXNuJ3QgYWJvcnQgdGhlIHRlc3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBFWFBFQ1RfREVBVEgpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVhdGhUZXN0SGVscGVyKCZhYm9ydGVkKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX0ZBTFNFKGFi
b3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBkb2VzIGFib3J0IHRoZSB0
ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQVNTRVJUX0RFQVRIKSB7
Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIGFib3J0ZWQgPSB0cnVlOwotICAgIEFTU0VSVF9ERUFUSChEaWVJZihmYWxzZSks
ICJEaWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCi0gICAgYWJvcnRlZCA9
IGZhbHNlOwotICB9LCAiZmFpbGVkIHRvIGRpZSIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEggZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMg
ZXhhY3RseSBvbmNlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24p
IHsKLSAgaW50IHggPSAzOwotICBFWFBFQ1RfREVBVEgoRGllSWYoKCsreCkgPT0gNCksICJEaWVJ
ZiIpOwotCi0gIGNvbnN0IGNoYXIqIHJlZ2V4ID0gIkRpZUlmIjsKLSAgY29uc3QgY2hhciogcmVn
ZXhfc2F2ZSA9IHJlZ2V4OwotICBFWFBFQ1RfREVBVEgoRGllSWZMZXNzVGhhbigzLCA0KSwgcmVn
ZXgrKyk7Ci0gIEVYUEVDVF9FUShyZWdleF9zYXZlICsgMSwgcmVnZXgpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRlc3RzIGFyZSByZXBvcnRlZCBhcyBmYWlsdXJlcy4KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBSdW5hd2F5SXNGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFUSChzdGF0aWNfY2FzdDx2b2lkPigwKSwgIkZvbyIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGRpZS4iKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBvcnQgZXhlY3V0aW5nICdyZXR1cm4nIGluIHRoZSBzdGF0
ZW1lbnQgYXMKLS8vIGZhaWx1cmUuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUmV0dXJuSXNG
YWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJC
YXIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3Rh
dGVtZW50LiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBh
cyBleHBlY3RlZCwgdGhhdCBpcywgeW91IGNhbiBzdHJlYW0gYQotLy8gbWVzc2FnZSB0byBpdCwg
YW5kIGluIGRlYnVnIG1vZGUgaXQ6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYXRoLgotLy8gMi4gSGFz
IG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6Ci0vLyAxLiAgSGFz
IHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0ID0gMDsKLQotICBF
WFBFQ1RfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4q
RGllSW5EZWJ1Z0Vsc2UxMiIpCi0gICAgICA8PCAiTXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNz
YWdlIjsKLQotIyBpZmRlZiBOREVCVUcKLQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVu
dCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVl
ZmZlY3QpOwotCi0jIGVsc2UKLQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2Vz
IG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgwLCBz
aWRlZWZmZWN0KTsKLQotIyBlbmRpZgotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUJVR19E
RUFUSCB3b3JrcyBhcyBleHBlY3RlZCwgdGhhdCBpcywgeW91IGNhbiBzdHJlYW0gYQotLy8gbWVz
c2FnZSB0byBpdCwgYW5kIGluIGRlYnVnIG1vZGUgaXQ6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYXRo
LgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6
Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBub3QgYXNzZXJ0LgotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIFRlc3RBc3NlcnREZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0
ID0gMDsKLQotICBBU1NFUlRfREVCVUdfREVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVj
dCksICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpCi0gICAgICA8PCAiTXVzdCBhY2NlcHQgYSBz
dHJlYW1lZCBtZXNzYWdlIjsKLQotIyBpZmRlZiBOREVCVUcKLQotICAvLyBDaGVja3MgdGhhdCB0
aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1Rf
RVEoMTIsIHNpZGVlZmZlY3QpOwotCi0jIGVsc2UKLQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNz
aWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCi0gIEVY
UEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLQotIyBlbmRpZgotfQotCi0jIGlmbmRlZiBOREVCVUcK
LQotdm9pZCBFeHBlY3REZWJ1Z0RlYXRoSGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0
ZWQgPSB0cnVlOwotICBFWFBFQ1RfREVCVUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMg
ZXhwZWN0ZWQgdG8gZmFpbC4iOwotICAqYWJvcnRlZCA9IGZhbHNlOwotfQotCi0jICBpZiBHVEVT
VF9PU19XSU5ET1dTCi1URVNUKFBvcFVwRGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25BYm9y
dCkgewotICBwcmludGYoIlRoaXMgdGVzdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlm
IGl0IHNob3dzICIKLSAgICAgICAgICJhbnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKLSAgZmZsdXNo
KHN0ZG91dCk7Ci0KLSAgRVhQRUNUX0RFQVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpID0gZmFsc2U7Ci0gICAgYWJvcnQoKTsKLSAgfSwgIiIpOwotfQotIyAg
ZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdf
REVBVEggaW4gZGVidWcgbW9kZSBkb2VzIG5vdCBhYm9ydAotLy8gdGhlIGZ1bmN0aW9uLgotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKLSAg
Ym9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVi
dWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwot
fQotCi12b2lkIEFzc2VydERlYnVnRGVhdGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJv
cnRlZCA9IHRydWU7Ci0gIEdURVNUX0xPR18oSU5GTykgPDwgIkJlZm9yZSBBU1NFUlRfREVCVUdf
REVBVEgiOwotICBBU1NFUlRfREVCVUdfREVBVEgoR1RFU1RfTE9HXyhJTkZPKSA8PCAiSW4gQVNT
RVJUX0RFQlVHX0RFQVRIIjsgcmV0dXJuLCAiIikKLSAgICAgIDw8ICJUaGlzIGlzIGV4cGVjdGVk
IHRvIGZhaWwuIjsKLSAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiQWZ0ZXIgQVNTRVJUX0RFQlVHX0RF
QVRIIjsKLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVC
VUdfREVBVEggaW4gZGVidWcgbW9kZSBhYm9ydHMgdGhlIGZ1bmN0aW9uIG9uCi0vLyBmYWlsdXJl
LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMpIHsKLSAg
c3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1Rf
VFJVRShhYm9ydGVkKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVn
RGVhdGhBYm9ydHMyKSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxz
ZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzMykgewotICBzdGF0aWMgYm9vbCBhYm9ydGVk
OwotICBhYm9ydGVkID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQot
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czQpIHsKLSAg
c3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1Rf
VFJVRShhYm9ydGVkKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVn
RGVhdGhBYm9ydHM1KSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxz
ZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzNikgewotICBzdGF0aWMgYm9vbCBhYm9ydGVk
OwotICBhYm9ydGVkID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQot
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czcpIHsKLSAg
c3RhdGljIGJvb2wgYWJvcnRlZDsKLSAgYWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRoSGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1Rf
VFJVRShhYm9ydGVkKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVn
RGVhdGhBYm9ydHM4KSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxz
ZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRl
ZCksICIiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVh
dGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRoQWJvcnRzOSkgewotICBzdGF0aWMgYm9vbCBhYm9ydGVk
OwotICBhYm9ydGVkID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVn
RGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAiIik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQot
Ci1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czEwKSB7Ci0g
IHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNU
X1RSVUUoYWJvcnRlZCk7Ci19Ci0KLSMgZW5kaWYgIC8vIF9OREVCVUcKLQotLy8gVGVzdHMgdGhl
ICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9zLCB1c2luZyBhIHZhcmlldHkgb2YgcHJlZGljYXRlcy4K
LXN0YXRpYyB2b2lkIFRlc3RFeGl0TWFjcm9zKCkgewotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwg
IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAgIiIpOwotICBBU1NFUlRfRVhJVChfZXhpdCg0
MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSwgIiIpOwotCi0jIGlmIEdURVNUX09TX1dJ
TkRPV1MKLQotICAvLyBPZiBhbGwgc2lnbmFscyBlZmZlY3RzIG9uIHRoZSBwcm9jZXNzIGV4aXQg
Y29kZSwgb25seSB0aG9zZSBvZiBTSUdBQlJUCi0gIC8vIGFyZSBkb2N1bWVudGVkIG9uIFdpbmRv
d3MuCi0gIC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZHd3
emt0NGMoVlMuNzEpLmFzcHguCi0gIEVYUEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgzKSwgIiIpIDw8ICJiX2FyIjsKLQotIyBlbHNlCi0KLSAgRVhQRUNU
X0VYSVQocmFpc2UoU0lHS0lMTCksIHRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAi
IikgPDwgImZvbyI7Ci0gIEFTU0VSVF9FWElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxs
ZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIpIDw8ICJiYXIiOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpLaWxs
ZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIpCi0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCB0b28uIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwotCi0j
IGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4
aXRlZFdpdGhDb2RlKDApLCAiIikKLSAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQu
IjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEV4aXRNYWNyb3MpIHsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3NVc2luZ0ZvcmspIHsKLSAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9IHRydWU7Ci0gIFRlc3RFeGl0TWFjcm9z
KCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKLSAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJyb2NvY28iOwotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCks
ICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUg
aXMgZXhwZWN0ZWQuIik7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RG
YWlsZWRPdXRwdXQpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9
ICJmYXN0IjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfREVBVEgo
RGllV2l0aE1lc3NhZ2UoImRlYXRoXG4iKSwKLSAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQg
bWVzc2FnZSIpLAotICAgICAgIkFjdHVhbCBtc2c6XG4iCi0gICAgICAiWyAgREVBVEggICBdIGRl
YXRoXG4iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhwZWN0
ZWRSZXR1cm5PdXRwdXQpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJmYXN0IjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfREVB
VEgoewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKLSAgICAgICAg
ICBmZmx1c2goc3RkZXJyKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0sICIiKSwKLSAg
ICAgICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAg
ICAgICIgRXJyb3IgbXNnOlxuIgotICAgICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIpOwot
fQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRwdXQp
IHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVzc2Fn
ZSgiZXhpdGluZyB3aXRoIHJjIDFcbiIpLAotICAgICAgICAgICAgICAgICAgdGVzdGluZzo6RXhp
dGVkV2l0aENvZGUoMyksCi0gICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAot
ICAgICAgIiAgICBSZXN1bHQ6IGRpZWQgYnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpc
biIKLSAgICAgICIgICAgICAgICAgICBFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCi0gICAg
ICAiQWN0dWFsIG1zZzpcbiIKLSAgICAgICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJjIDFc
biIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0
Y2hGYWlsKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFz
dCI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgRVhQRUNUX0RFQVRIKERpZVdp
dGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUgMlxubGluZSAzXG4iKSwKLSAgICAgICAgICAgICAgICAg
ICAibGluZSAxXG54eXpcbmxpbmUgM1xuIiksCi0gICAgICAiQWN0dWFsIG1zZzpcbiIKLSAgICAg
ICJbICBERUFUSCAgIF0gbGluZSAxXG4iCi0gICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxuIgot
ICAgICAgIlsgIERFQVRIICAgXSBsaW5lIDNcbiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hQYXNzKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZM
QUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVz
c2FnZSgibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIiksCi0gICAgICAgICAgICAgICAibGluZSAx
XG5saW5lIDJcbmxpbmUgM1xuIik7Ci19Ci0KLS8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJl
dHVybnMgTW9ja0RlYXRoVGVzdHMuCi1jbGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1Ymxp
YyBEZWF0aFRlc3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7
Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LAotICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFKiByZWdleCwKLSAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0Kiog
dGVzdCk7Ci0KLSAgLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0
byBDcmVhdGUuCi0gIHZvaWQgU2V0UGFyYW1ldGVycyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpU
ZXN0Um9sZSByb2xlLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNz
ZWQpOwotCi0gIC8vIEFjY2Vzc29ycy4KLSAgaW50IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsg
cmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxzXzsgfQotICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyBy
ZXR1cm4gd2FpdF9jYWxsc187IH0KLSAgc2l6ZV90IFBhc3NlZENhbGxzKCkgY29uc3QgeyByZXR1
cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsgfQotICBib29sIFBhc3NlZEFyZ3VtZW50KGludCBuKSBj
b25zdCB7IHJldHVybiBwYXNzZWRfYXJnc19bbl07IH0KLSAgc2l6ZV90IEFib3J0Q2FsbHMoKSBj
b25zdCB7IHJldHVybiBhYm9ydF9hcmdzXy5zaXplKCk7IH0KLSAgRGVhdGhUZXN0OjpBYm9ydFJl
YXNvbiBBYm9ydEFyZ3VtZW50KGludCBuKSBjb25zdCB7Ci0gICAgcmV0dXJuIGFib3J0X2FyZ3Nf
W25dOwotICB9Ci0gIGJvb2wgVGVzdERlbGV0ZWQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2RlbGV0
ZWRfOyB9Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3MgTW9ja0RlYXRoVGVzdDsKLSAgLy8g
SWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0dXJuIGEgTW9ja0RlYXRoVGVzdDsgb3RoZXJ3aXNlIGl0
IHJldHVybnMKLSAgLy8gTlVMTC4KLSAgYm9vbCBjcmVhdGVfOwotICAvLyBUaGUgdmFsdWUgYSBN
b2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIEFzc3VtZVJvbGUgbWV0aG9kLgotICBE
ZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVfOwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0
IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdhaXQgbWV0aG9kLgotICBpbnQgc3RhdHVzXzsKLSAgLy8g
VGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVzdCB3aWxsIHJldHVybiBmcm9tIGl0cyBQYXNzZWQgbWV0
aG9kLgotICBib29sIHBhc3NlZF87Ci0KLSAgLy8gTnVtYmVyIG9mIHRpbWVzIEFzc3VtZVJvbGUg
d2FzIGNhbGxlZC4KLSAgaW50IGFzc3VtZV9yb2xlX2NhbGxzXzsKLSAgLy8gTnVtYmVyIG9mIHRp
bWVzIFdhaXQgd2FzIGNhbGxlZC4KLSAgaW50IHdhaXRfY2FsbHNfOwotICAvLyBUaGUgYXJndW1l
bnRzIHRvIHRoZSBjYWxscyB0byBQYXNzZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBT
ZXRQYXJhbWV0ZXJzLgotICBzdGQ6OnZlY3Rvcjxib29sPiBwYXNzZWRfYXJnc187Ci0gIC8vIFRo
ZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxzIHRvIEFib3J0IHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8K
LSAgLy8gU2V0UGFyYW1ldGVycy4KLSAgc3RkOjp2ZWN0b3I8RGVhdGhUZXN0OjpBYm9ydFJlYXNv
bj4gYWJvcnRfYXJnc187Ci0gIC8vIFRydWUgaWYgdGhlIGxhc3QgTW9ja0RlYXRoVGVzdCByZXR1
cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4KLSAgLy8gZGVsZXRlZC4KLSAgYm9vbCB0ZXN0X2RlbGV0
ZWRfOwotfTsKLQotCi0vLyBBIERlYXRoVGVzdCBpbXBsZW1lbnRhdGlvbiB1c2VmdWwgaW4gdGVz
dGluZy4gIEl0IHJldHVybnMgdmFsdWVzIHNldAotLy8gYXQgaXRzIGNyZWF0aW9uIGZyb20gaXRz
IHZhcmlvdXMgaW5oZXJpdGVkIERlYXRoVGVzdCBtZXRob2RzLCBhbmQKLS8vIHJlcG9ydHMgY2Fs
bHMgdG8gdGhvc2UgbWV0aG9kcyB0byBpdHMgcGFyZW50IE1vY2tEZWF0aFRlc3RGYWN0b3J5Ci0v
LyBvYmplY3QuCi1jbGFzcyBNb2NrRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7Ci0gcHVi
bGljOgotICBNb2NrRGVhdGhUZXN0KE1vY2tEZWF0aFRlc3RGYWN0b3J5ICpwYXJlbnQsCi0gICAg
ICAgICAgICAgICAgVGVzdFJvbGUgcm9sZSwgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIDoKLSAg
ICAgIHBhcmVudF8ocGFyZW50KSwgcm9sZV8ocm9sZSksIHN0YXR1c18oc3RhdHVzKSwgcGFzc2Vk
XyhwYXNzZWQpIHsKLSAgfQotICB2aXJ0dWFsIH5Nb2NrRGVhdGhUZXN0KCkgewotICAgIHBhcmVu
dF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVlOwotICB9Ci0gIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1l
Um9sZSgpIHsKLSAgICArK3BhcmVudF8tPmFzc3VtZV9yb2xlX2NhbGxzXzsKLSAgICByZXR1cm4g
cm9sZV87Ci0gIH0KLSAgdmlydHVhbCBpbnQgV2FpdCgpIHsKLSAgICArK3BhcmVudF8tPndhaXRf
Y2FsbHNfOwotICAgIHJldHVybiBzdGF0dXNfOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBQYXNzZWQo
Ym9vbCBleGl0X3N0YXR1c19vaykgewotICAgIHBhcmVudF8tPnBhc3NlZF9hcmdzXy5wdXNoX2Jh
Y2soZXhpdF9zdGF0dXNfb2spOwotICAgIHJldHVybiBwYXNzZWRfOwotICB9Ci0gIHZpcnR1YWwg
dm9pZCBBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKLSAgICBwYXJlbnRfLT5hYm9ydF9hcmdz
Xy5wdXNoX2JhY2socmVhc29uKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgTW9ja0RlYXRoVGVzdEZh
Y3RvcnkqIGNvbnN0IHBhcmVudF87Ci0gIGNvbnN0IFRlc3RSb2xlIHJvbGVfOwotICBjb25zdCBp
bnQgc3RhdHVzXzsKLSAgY29uc3QgYm9vbCBwYXNzZWRfOwotfTsKLQotCi0vLyBNb2NrRGVhdGhU
ZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4KLU1vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhU
ZXN0RmFjdG9yeSgpCi0gICAgOiBjcmVhdGVfKHRydWUpLAotICAgICAgcm9sZV8oRGVhdGhUZXN0
OjpPVkVSU0VFX1RFU1QpLAotICAgICAgc3RhdHVzXygwKSwKLSAgICAgIHBhc3NlZF8odHJ1ZSks
Ci0gICAgICBhc3N1bWVfcm9sZV9jYWxsc18oMCksCi0gICAgICB3YWl0X2NhbGxzXygwKSwKLSAg
ICAgIHBhc3NlZF9hcmdzXygpLAotICAgICAgYWJvcnRfYXJnc18oKSB7Ci19Ci0KLQotLy8gU2V0
cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi12b2lkIE1v
Y2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQYXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJv
b2wgcGFzc2VkKSB7Ci0gIGNyZWF0ZV8gPSBjcmVhdGU7Ci0gIHJvbGVfID0gcm9sZTsKLSAgc3Rh
dHVzXyA9IHN0YXR1czsKLSAgcGFzc2VkXyA9IHBhc3NlZDsKLQotICBhc3N1bWVfcm9sZV9jYWxs
c18gPSAwOwotICB3YWl0X2NhbGxzXyA9IDA7Ci0gIHBhc3NlZF9hcmdzXy5jbGVhcigpOwotICBh
Ym9ydF9hcmdzXy5jbGVhcigpOwotfQotCi0KLS8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBjcmVh
dGVfIGlzIGZhbHNlKSBvciB0byB0aGUgYWRkcmVzcyBvZiBhIG5ldwotLy8gTW9ja0RlYXRoVGVz
dCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAotLy8gdG8g
U2V0UGFyYW1ldGVycyAoaWYgY3JlYXRlXyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRydWUu
Ci1ib29sIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0ZW1l
bnQqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpSRSogLypyZWdleCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIC8qZmlsZSovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAvKmxpbmUqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0
aFRlc3QqKiB0ZXN0KSB7Ci0gIHRlc3RfZGVsZXRlZF8gPSBmYWxzZTsKLSAgaWYgKGNyZWF0ZV8p
IHsKLSAgICAqdGVzdCA9IG5ldyBNb2NrRGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBw
YXNzZWRfKTsKLSAgfSBlbHNlIHsKLSAgICAqdGVzdCA9IE5VTEw7Ci0gIH0KLSAgcmV0dXJuIHRy
dWU7Ci19Ci0KLS8vIEEgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUg
R1RFU1RfREVBVEhfVEVTVF8gbWFjcm8uCi0vLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRlc3RG
YWN0b3J5IHRoYXQgaXMgdXNlZCBmb3IgdGhlIGR1cmF0aW9uCi0vLyBvZiB0aGUgdGVzdCBjYXNl
LgotY2xhc3MgTWFjcm9Mb2dpY0RlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBw
cm90ZWN0ZWQ6Ci0gIHN0YXRpYyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZh
Y3RvcnkqIHJlcGxhY2VyXzsKLSAgc3RhdGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5
XzsKLQotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIGZhY3RvcnlfID0gbmV3
IE1vY2tEZWF0aFRlc3RGYWN0b3J5OwotICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRl
cm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkoZmFjdG9yeV8pOwotICB9Ci0KLSAgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgcmVwbGFjZXJfOwotICAgIHJl
cGxhY2VyXyA9IE5VTEw7Ci0gICAgZGVsZXRlIGZhY3RvcnlfOwotICAgIGZhY3RvcnlfID0gTlVM
TDsKLSAgfQotCi0gIC8vIFJ1bnMgYSBkZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBi
eSByZXR1cm5pbmcuICBTdWNoIGEgZGVhdGgKLSAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVj
dGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUgdGhhdCB1c2VzIGEKLSAgLy8gTW9ja0RlYXRoVGVzdCwg
b3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAg
c3RhdGljIHZvaWQgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKLSAgICBBU1NF
UlRfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgICAqZmxhZyA9IHRydWU7Ci0gICAgICByZXR1cm47
Ci0gICAgfSwgIiIpOwotICB9Ci19OwotCi10ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRo
VGVzdEZhY3RvcnkqIE1hY3JvTG9naWNEZWF0aFRlc3Q6OnJlcGxhY2VyXwotICAgID0gTlVMTDsK
LU1vY2tEZWF0aFRlc3RGYWN0b3J5KiBNYWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5V
TEw7Ci0KLQotLy8gVGVzdCB0aGF0IG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5IGRv
ZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0OgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIE5v
dGhpbmdIYXBwZW5zKSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFy
YW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBF
Q1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBF
Q1RfRVEoMCwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZh
Y3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENh
bGxzKCkpOwotICBFWFBFQ1RfRVEoMFUsIGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBF
Q1RfRkFMU0UoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhl
IHBhcmVudCBwcm9jZXNzIGRvZXNuJ3QgcnVuIHRoZSBkZWF0aCB0ZXN0IGNvZGUsCi0vLyBhbmQg
dGhhdCB0aGUgUGFzc2VkIG1ldGhvZCByZXR1cm5zIGZhbHNlIHdoZW4gdGhlIChzaW11bGF0ZWQp
Ci0vLyBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDA6Ci1URVNUX0YoTWFjcm9Mb2dp
Y0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1Y2Nlc3NmdWxseSkgewotICBib29sIGZsYWcgPSBmYWxz
ZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RF
U1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNU
X0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygp
KTsKLSAgRVhQRUNUX0VRKDEsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VSVF9FUSgx
VSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBh
c3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygp
KTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9kIHdhcyBnaXZlbiB0aGUgYXJndW1lbnQgInRydWUiIHdo
ZW4KLS8vIHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDE6
Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5KSB7
Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBE
ZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwgMSwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0g
dHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFMU0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5
Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxs
cygpKTsKLSAgQVNTRVJUX0VRKDFVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVD
VF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUSgwVSwgZmFj
dG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRl
ZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBl
eGVjdXRlcyB0aGUgZGVhdGggdGVzdAotLy8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUg
Y29ycmVjdCBBYm9ydFJlYXNvbiBpZiBpdAotLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50
LgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKLSAg
Ym9vbCBmbGFnID0gZmFsc2U7Ci0gIGZhY3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRo
VGVzdDo6RVhFQ1VURV9URVNULCAwLCB0cnVlKTsKLSAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZm
bGFnKTsKLSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNz
dW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsK
LSAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgx
VSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1Rf
RU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9y
dEFyZ3VtZW50KDApKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHRoZSAoc2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGlzIGFib3J0
ZWQgd2l0aCB0aGUKLS8vIGNvcnJlY3QgQWJvcnRSZWFzb24gaWYgaXQgZG9lcyBub3QgZGllLgot
VEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIENoaWxkRG9lc05vdERpZSkgewotICBib29sIGZs
YWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpF
WEVDVVRFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsK
LSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9s
ZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQ
RUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMgdGltZSB0aGVy
ZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Ci0gIC8v
IGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ry
b3llZC4gIFRoZQotICAvLyBzZW50aW5lbCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0
ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQotICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBj
YXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3QsIGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1vY2tEZWF0aFRl
c3QuCi0gIEFTU0VSVF9FUSgyVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9F
UShEZWF0aFRlc3Q6OlRFU1RfRElEX05PVF9ESUUsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJv
cnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURf
UkVUVVJOX1NUQVRFTUVOVCwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDEp
KTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVyIGEgc3VjY2Vz
c2Z1bAotLy8gdGVzdCBwYXJ0LgotVEVTVChTdWNjZXNzUmVnaXN0cmF0aW9uRGVhdGhUZXN0LCBO
b1N1Y2Nlc3NQYXJ0KSB7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICBFWFBFQ1Rf
RVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxfcGFy
dF9jb3VudCgpKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zRGVhdGhUZXN0LCBEZWF0
aFRlc3QpIHsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFp
bHVyZSI7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1
cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1Rf
REVBVEgoX2V4aXQoMCksICIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIH0sICJleHBlY3Rl
ZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFT
U0VSVF9ERUFUSChfZXhpdCgwKSwgIiIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4
cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZXRMYXN0RXJybm9EZXNjcmlw
dGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZQotLy8gbGFzdCBlcnJvciBpcyAw
IGFuZCBub24tZW1wdHkgc3RyaW5nIHdoZW4gaXQgaXMgbm9uLXplcm8uCi1URVNUKEdldExhc3RF
cnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7Ci0gIGVycm5v
ID0gRU5PRU5UOwotICBFWFBFQ1RfU1RSTkUoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCku
Y19zdHIoKSk7Ci0gIGVycm5vID0gMDsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRMYXN0RXJybm9E
ZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotfQotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLVRFU1Qo
QXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5kbGVXb3JrcykgewotICBIQU5ETEUgaGFuZGxlID0gOjpD
cmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUoSU5WQUxJ
RF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCB0aGUgQXV0b0hhbmRs
ZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgd2l0aCBhIGhhbmRsZS4KLSAgdGVzdGluZzo6aW50
ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUoaGFuZGxlKTsKLSAgRVhQRUNUX0VRKGhhbmRs
ZSwgYXV0b19oYW5kbGUuR2V0KCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWducyBJ
TlZBTElEX0hBTkRMRV9WQUxVRS4KLSAgLy8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3
aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5kbGUgaXMgY2xvc2VkLgotICBhdXRvX2hhbmRsZS5SZXNl
dCgpOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlLkdldCgp
KTsKLQotICAvLyBUZXN0cyB0aGF0IFJlc2V0IGFzc2lnbnMgdGhlIG5ldyBoYW5kbGUuCi0gIC8v
IE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxl
IGlzIGNsb3NlZC4KLSAgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0Us
IE5VTEwpOwotICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Ci0gIGF1
dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxl
LkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IEF1dG9IYW5kbGUgY29udGFpbnMgSU5WQUxJRF9I
QU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4KLSAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUg
YXV0b19oYW5kbGUyOwotICBFWFBFQ1RfRVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFu
ZGxlMi5HZXQoKSk7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSMgaWYgR1RF
U1RfT1NfV0lORE9XUwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJzYWJsZTsK
LXR5cGVkZWYgc2lnbmVkIF9faW50NjQgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotIyBlbHNlCi10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25l
ZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotIyBlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwotCi0vLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgp
IGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUKLS8vIG1heCgpIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRv
d3MuaD4uCi1jb25zdCBCaWdnZXN0UGFyc2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9IFVMTE9O
R19NQVg7Ci1jb25zdCBCaWdnZXN0U2lnbmVkUGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJzYWJs
ZU1heCA9IExMT05HX01BWDsKLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3Rz
SW52YWxpZEZvcm1hdCkgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICAvLyBS
ZWplY3RzIG5vbi1udW1iZXJzLgotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCJu
b24tbnVtYmVyIHN0cmluZyIsICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG51bWJlcnMgd2l0
aCB3aGl0ZXNwYWNlIHByZWZpeC4KLSAgRVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigi
IDEyMyIsICZyZXN1bHQpKTsKLQotICAvLyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMuCi0gIEVY
UEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIi0xMjMiLCAmcmVzdWx0KSk7Ci0KLSAgLy8g
UmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5nIHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVDVF9GQUxT
RShQYXJzZU5hdHVyYWxOdW1iZXIoIisxMjMiLCAmcmVzdWx0KSk7Ci0gIGVycm5vID0gMDsKLX0K
LQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVycykg
ewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICBFWFBFQ1RfRkFMU0UoUGFyc2VO
YXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSIsICZyZXN1bHQpKTsKLQotICBz
aWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxO
dW1iZXIoIjIwMCIsICZjaGFyX3Jlc3VsdCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFy
c2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNjZXB0c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFy
c2FibGUgcmVzdWx0ID0gMDsKLQotICByZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5h
dHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyM1UsIHJlc3VsdCk7
Ci0KLSAgLy8gQ2hlY2sgMCBhcyBhbiBlZGdlIGNhc2UuCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VS
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMCIsICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDBV
LCByZXN1bHQpOwotCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51
bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLX0KLQot
VEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBBY2NlcHRzVHlwZUxpbWl0cykgewotICBNZXNz
YWdlIG1zZzsKLSAgbXNnIDw8IGtCaWdnZXN0UGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNh
YmxlIHJlc3VsdCA9IDA7Ci0gIEVYUEVDVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cuR2V0
U3RyaW5nKCksICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0UGFyc2FibGVNYXgsIHJl
c3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2cyOwotICBtc2cyIDw8IGtCaWdnZXN0U2lnbmVkUGFyc2Fi
bGVNYXg7Ci0KLSAgQmlnZ2VzdFNpZ25lZFBhcnNhYmxlIHNpZ25lZF9yZXN1bHQgPSAwOwotICBF
WFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIobXNnMi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9y
ZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXgsIHNpZ25lZF9y
ZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNnMzsKLSAgbXNnMyA8PCBJTlRfTUFYOwotCi0gIGludCBp
bnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0
U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0
KTsKLQotICBNZXNzYWdlIG1zZzQ7Ci0gIG1zZzQgPDwgVUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQg
aW50IHVpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1z
ZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jlc3VsdCkpOwotICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVp
bnRfcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNo
b3J0ZXJJbnRlZ2VycykgewotICBzaG9ydCBzaG9ydF9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJV
RShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZzaG9ydF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VR
KDEyMywgc2hvcnRfcmVzdWx0KTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0g
IEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7Ci0g
IEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVzdWx0KTsKLX0KLQotIyBpZiBHVEVTVF9PU19XSU5ET1dT
Ci1URVNUKEVudmlyb25tZW50VGVzdCwgSGFuZGxlRml0c0ludG9TaXplVCkgewotICAvLyBUT0RP
KHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9u
IGlzIHZlcmlmaWVkCi0gIC8vIGluIGEgc3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10
ZXN0LmNjIGluIHRoZSBmdW5jdGlvbgotICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KLSAg
QVNTRVJUX1RSVUUoc2l6ZW9mKEhBTkRMRSkgPD0gc2l6ZW9mKHNpemVfdCkpOwotfQotIyBlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQvQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCB0cmlnZ2VyCi0vLyBmYWlsdXJlcyB3
aGVuIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0
aW9uYWxEZWF0aE1hY3Jvc0RlYXRoVGVzdCwgRXhwZWN0c0RlYXRoV2hlbkRlYXRoVGVzdHNBdmFp
bGFibGUpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0
aFRlc3RFeHBlY3RNYWNybyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBp
bnNpZGUgQ29uZERlYXRoVGVzdEV4cGVjdE1hY3JvIik7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQoRGllSW5zaWRlKCJDb25kRGVhdGhUZXN0QXNzZXJ0TWFjcm8iKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVhdGggaW5zaWRlIENvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIp
OwotCi0gIC8vIEVtcHR5IHN0YXRlbWVudCB3aWxsIG5vdCBjcmFzaCwgd2hpY2ggbXVzdCB0cmln
Z2VyIGEgZmFpbHVyZS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIX0lG
X1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RF
QVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsKLX0KLQotVEVTVChJbkRlYXRoVGVzdENoaWxk
RGVhdGhUZXN0LCBSZXBvcnRzRGVhdGhUZXN0Q29ycmVjdGx5SW5GYXN0U3R5bGUpIHsKLSAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0ZB
TFNFKEluRGVhdGhUZXN0Q2hpbGQoKSk7Ci0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgZnByaW50Zihz
dGRlcnIsIEluRGVhdGhUZXN0Q2hpbGQoKSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKLSAgICBm
Zmx1c2goc3RkZXJyKTsKLSAgICBfZXhpdCgxKTsKLSAgfSwgIkluc2lkZSIpOwotfQotCi1URVNU
KEluRGVhdGhUZXN0Q2hpbGREZWF0aFRlc3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJblRo
cmVhZFNhZmVTdHlsZSkgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUp
ID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKLSAg
RVhQRUNUX0RFQVRIKHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8g
Ikluc2lkZSIgOiAiT3V0c2lkZSIpOwotICAgIGZmbHVzaChzdGRlcnIpOwotICAgIF9leGl0KDEp
OwotICB9LCAiSW5zaWRlIik7Ci19Ci0KLSNlbHNlICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1Qg
Zm9sbG93cwotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZGVycjsKLQotLy8gVGVzdHMgdGhhdCBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEL0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgYXJlIHN0
aWxsCi0vLyBkZWZpbmVkIGJ1dCBkbyBub3QgdHJpZ2dlciBmYWlsdXJlcyB3aGVuIGRlYXRoIHRl
c3RzIGFyZSBub3QgYXZhaWxhYmxlIG9uCi0vLyB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25h
bERlYXRoTWFjcm9zVGVzdCwgV2FybnNXaGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgewotICAv
LyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBub3QgY3Jhc2gsIGJ1dCB0aGF0IHNob3VsZCBub3QgdHJp
Z2dlciBhIGZhaWx1cmUKLSAgLy8gd2hlbiBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4K
LSAgQ2FwdHVyZVN0ZGVycigpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsK
LSAgc3RkOjpzdHJpbmcgb3V0cHV0ID0gR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RS
VUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJEZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikp
OwotICBBU1NFUlRfVFJVRShOVUxMICE9IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7Ci0K
LSAgLy8gVGhlIHN0cmVhbWVkIG1lc3NhZ2Ugc2hvdWxkIG5vdCBiZSBwcmludGVkIGFzIHRoZXJl
IGlzIG5vIHRlc3QgZmFpbHVyZS4KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBFWFBFQ1RfREVBVEhf
SUZfU1VQUE9SVEVEKDssICIiKSA8PCAic3RyZWFtZWQgbWVzc2FnZSI7Ci0gIG91dHB1dCA9IEdl
dENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEFT
U0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoOywgIiIpOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdl
dENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5j
X3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5v
dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBz
dHJzdHIob3V0cHV0LmNfc3RyKCksICI7IikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNT
RVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOyAgLy8g
Tk9MSU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5V
TEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLX0KLQot
dm9pZCBGdW5jV2l0aEFzc2VydChpbnQqIG4pIHsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRF
RChyZXR1cm47LCAiIik7Ci0gICgqbikrKzsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVB
VEhfSUZfU1VQUE9SVEVEIGRvZXMgbm90IHJldHVybiBmcm9tIHRoZSBjdXJyZW50Ci0vLyBmdW5j
dGlvbiAoYXMgQVNTRVJUX0RFQVRIIGRvZXMpIGlmIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9y
dGVkLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgQXNzZXJ0RGVhdERvZXNOb3RS
ZXR1cm5oSWZVbnN1cHBvcnRlZCkgewotICBpbnQgbiA9IDA7Ci0gIEZ1bmNXaXRoQXNzZXJ0KCZu
KTsKLSAgRVhQRUNUX0VRKDEsIG4pOwotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9IQVNfREVBVEhf
VEVTVAotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29k
ZSB3aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5k
IHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5
IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi0vLwotLy8gVGhlIHN5bnRheCBzaG91bGQgd29yayB3
aGV0aGVyIGRlYXRoIHRlc3RzIGFyZSBhdmFpbGFibGUgb3Igbm90LgotVEVTVChDb25kaXRpb25h
bERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFs
d2F5c0ZhbHNlKCkpCi0gICAgLy8gVGhpcyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlz
IGEgY29tcGlsYXRpb24gdGVzdCBvbmx5Ci0gICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChy
ZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoX2V4aXQoMSksICIiKTsKLSAgZWxzZQotICAgIC8vIFRoaXMgZW1wdHkgImVsc2Ui
IGJyYW5jaCBpcyBtZWFudCB0byBlbnN1cmUgdGhhdCBFWFBFQ1RfREVBVEgKLSAgICAvLyBkb2Vz
bid0IGV4cGFuZCBpbnRvIGFuICJpZiIgc3RhdGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCi0gICAg
OyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRChyZXR1cm4sICIiKSA8PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChBbHdheXNG
YWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8IDEgPDwgMiA8PCAzOwotfQotCi0vLyBUZXN0cyB0aGF0
IGNvbmRpdGlvbmFsIGRlYXRoIHRlc3QgbWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVy
YWN0cwotLy8gd2VsbCB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzLgotVEVTVChDb25kaXRpb25hbERl
YXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLSAgLy8gTWljcm9z
b2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdp
dGhvdXQKLSAgLy8gY2FzZSBsYWJlbHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhp
cyB0ZXN0LgotICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQotCi0gIHN3
aXRjaCAoMCkKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChf
ZXhpdCgxKSwgIiIpCi0gICAgICAgICAgPDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxl
ciI7Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSF9JRl9T
VVBQT1JURUQoX2V4aXQoMSksICIiKSA8PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7Ci0KLSAgR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0
IGNhc2Ugd2hvc2UgbmFtZSBlbmRzIHdpdGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24g
V2luZG93cy4KLVRFU1QoTm90QURlYXRoVGVzdCwgVGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRhNzI5ODY5MjZiNjg2NmEzMjQ3NjY1MzIwYmIxYjViMDAyNmQ1NjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjYyICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3JzOiBrZWl0aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3Qg
ZmlsZXBhdGggdXRpbGl0aWVzCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIGNsYXNzZXMgYW5kIGZ1
bmN0aW9ucyB1c2VkIGludGVybmFsbHkgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhleSBhcmUgc3Vi
amVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0vLwotLy8gVGhpcyBmaWxlIGlzICNpbmNs
dWRlZCBmcm9tIGd0ZXN0X3VuaXR0ZXN0LmNjLCB0byBhdm9pZCBjaGFuZ2luZwotLy8gYnVpbGQg
b3IgbWFrZS1maWxlcyBmb3Igc29tZSBleGlzdGluZyBHb29nbGUgVGVzdCBjbGllbnRzLiBEbyBu
b3QKLS8vICNpbmNsdWRlIHRoaXMgZmlsZSBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgot
Ci0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29n
bGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGls
ZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lk
ZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgot
I2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRl
cm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAotI2VsaWYg
R1RFU1RfT1NfV0lORE9XUwotIyBpbmNsdWRlIDxkaXJlY3QuaD4gIC8vIE5PTElOVAotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1l
c3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsKLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogTW92ZSB0aGVzZSB0byB0aGUgUE9TSVggYWRh
cHRlciBzZWN0aW9uIGluCi0vLyBndGVzdC1wb3J0LmguCi0KLS8vIFdpbmRvd3MgQ0UgZG9lc24n
dCBoYXZlIHRoZSByZW1vdmUgQyBmdW5jdGlvbi4KLWludCByZW1vdmUoY29uc3QgY2hhciogcGF0
aCkgewotICBMUENXU1RSIHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNihwYXRoKTsKLSAgaW50
IHJldCA9IERlbGV0ZUZpbGUod3BhdGgpID8gMCA6IC0xOwotICBkZWxldGUgW10gd3BhdGg7Ci0g
IHJldHVybiByZXQ7Ci19Ci0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgX3JtZGlyIEMg
ZnVuY3Rpb24uCi1pbnQgX3JtZGlyKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgRmlsZVBhdGggZmls
ZXBhdGgocGF0aCk7Ci0gIExQQ1dTVFIgd3BhdGggPSBTdHJpbmc6OkFuc2lUb1V0ZjE2KAotICAg
ICAgZmlsZXBhdGguUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuY19zdHIoKSk7Ci0gIGlu
dCByZXQgPSBSZW1vdmVEaXJlY3Rvcnkod3BhdGgpID8gMCA6IC0xOwotICBkZWxldGUgW10gd3Bh
dGg7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLSNlbHNlCi0KLVRFU1QoR2V0Q3VycmVudERpclRlc3Qs
IFJldHVybnNDdXJyZW50RGlyKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdpbmFsX2RpciA9IEZp
bGVQYXRoOjpHZXRDdXJyZW50RGlyKCk7Ci0gIEVYUEVDVF9GQUxTRShvcmlnaW5hbF9kaXIuSXNF
bXB0eSgpKTsKLQotICBwb3NpeDo6Q2hEaXIoR1RFU1RfUEFUSF9TRVBfKTsKLSAgY29uc3QgRmls
ZVBhdGggY3dkID0gRmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKTsKLSAgcG9zaXg6OkNoRGlyKG9y
aWdpbmFsX2Rpci5jX3N0cigpKTsKLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0KLSAgLy8gU2tp
cHMgdGhlICI6Ii4KLSAgY29uc3QgY2hhciogY29uc3QgY3dkX3dpdGhvdXRfZHJpdmUgPSBzdHJj
aHIoY3dkLmNfc3RyKCksICc6Jyk7Ci0gIEFTU0VSVF9UUlVFKGN3ZF93aXRob3V0X2RyaXZlICE9
IE5VTEwpOwotICBFWFBFQ1RfU1RSRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Rfd2l0aG91dF9kcml2
ZSArIDEpOwotCi0jIGVsc2UKLQotICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBjd2Quc3Ry
aW5nKCkpOwotCi0jIGVuZGlmCi19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLQotVEVTVChJc0VtcHR5VGVzdCwgUmV0dXJuc1RydWVGb3JFbXB0eVBhdGgpIHsKLSAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoIiIpLklzRW1wdHkoKSk7Ci19Ci0KLVRFU1QoSXNFbXB0eVRlc3Qs
IFJldHVybnNGYWxzZUZvck5vbkVtcHR5UGF0aCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImEiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi4iKS5Jc0VtcHR5KCkp
OwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImEvYiIpLklzRW1wdHkoKSk7Ci0gIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYVxcYlxcIikuSXNFbXB0eSgpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0
b3J5TmFtZSAiIiAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgV2hlbkVtcHR5
TmFtZSkgewotICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZmlsZSIgLT4gImFm
aWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgQnV0Tm9EaXJlY3RvcnkpIHsKLSAg
RVhQRUNUX0VRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWZpbGUiKS5SZW1vdmVEaXJlY3Rv
cnlOYW1lKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICIvYWZpbGUi
IC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxk
R2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9FUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Ci19
Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvIiAtPiAiIgotVEVTVChSZW1vdmVEaXJl
Y3RvcnlOYW1lVGVzdCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZSkgewotICBFWFBFQ1RfRVEoIiIs
Ci0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfKS5SZW1vdmVEaXJlY3RvcnlO
YW1lKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lICJhZGlyL2FmaWxl
IiAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmls
ZU5hbWUpIHsKLSAgRVhQRUNUX0VRKCJhZmlsZSIsCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfICJhZmlsZSIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmcoKSk7Ci19
Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWZpbGUi
Ci1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lKSB7
Ci0gIEVYUEVDVF9FUSgiYWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhf
U0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxlIikKLSAgICAgIC5SZW1vdmVEaXJl
Y3RvcnlOYW1lKCkuc3RyaW5nKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8K
LQotLy8gVGVzdHMgdGhhdCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgd29ya3Mgd2l0aCB0aGUgYWx0
ZXJuYXRlIHNlcGFyYXRvcgotLy8gb24gV2luZG93cy4KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFt
ZSgiL2FmaWxlIikgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVzdCwgUm9v
dEZpbGVTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNU
X0VRKCJhZmlsZSIsIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3Ry
aW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyLyIpIC0+ICIiCi1URVNU
KFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBXaGVyZVRoZXJlSXNOb0ZpbGVOYW1lRm9yQWx0ZXJu
YXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgoImFkaXIvIikuUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSgi
YWRpci9hZmlsZSIpIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNo
b3VsZEdpdmVGaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoImFm
aWxlIiwgRmlsZVBhdGgoImFkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5n
KCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlOYW1lKCJhZGlyL3N1YmRpci9hZmlsZSIpIC0+
ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFNob3VsZEFsc29HaXZlRmls
ZU5hbWVGb3JBbHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX0VRKCJhZmlsZSIsCi0gICAg
ICAgICAgICBGaWxlUGF0aCgiYWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1l
KCkuc3RyaW5nKCkpOwotfQotCi0jZW5kaWYKLQotLy8gUmVtb3ZlRmlsZU5hbWUgIiIgLT4gIi4v
IgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEVtcHR5TmFtZSkgewotI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0gIC8vIE9uIFdpbmRvd3MgQ0UsIHdlIHVzZSB0aGUgcm9vdCBhcyB0aGUg
Y3VycmVudCBkaXJlY3RvcnkuCi0gIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRo
KCIiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKLSNlbHNlCi0gIEVYUEVDVF9FUSgiLiIg
R1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
Ci0jZW5kaWYKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvIiAtPiAiYWRpci8iCi1URVNU
KFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlKSB7Ci0gIEVYUEVDVF9FUSgiYWRpciIgR1RF
U1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXykuUmVt
b3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lICJhZGlyL2Fm
aWxlIiAtPiAiYWRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNEaXJOYW1lKSB7
Ci0gIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmlu
ZygpKTsKLX0KLQotLy8gUmVtb3ZlRmlsZU5hbWUgImFkaXIvc3ViZGlyL2FmaWxlIiAtPiAiYWRp
ci9zdWJkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGlyTmFt
ZSkgewotICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9Q
QVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aCgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIi
IEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKQotICAgICAgLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5n
KCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiL2FmaWxlIiAtPiAiLyIKLVRFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc1Jvb3REaXIpIHsKLSAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQ
XywKLSAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5SZW1vdmVGaWxlTmFt
ZSgpLnN0cmluZygpKTsKLX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRl
c3RzIHRoYXQgUmVtb3ZlRmlsZU5hbWUoKSB3b3JrcyB3aXRoIHRoZSBhbHRlcm5hdGUgc2VwYXJh
dG9yIG9uCi0vLyBXaW5kb3dzLgotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci8iKSAtPiAiYWRp
ci8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgQnV0Tm9GaWxlRm9yQWx0ZXJuYXRlU2VwYXJh
dG9yKSB7Ci0gIEVYUEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgICAgICAg
RmlsZVBhdGgoImFkaXIvIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJl
bW92ZUZpbGVOYW1lKCJhZGlyL2FmaWxlIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFt
ZVRlc3QsIEdpdmVzRGlyTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEo
ImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL2FmaWxl
IikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lKCJh
ZGlyL3N1YmRpci9hZmlsZSIpIC0+ICJhZGlyL3N1YmRpci8iCi1URVNUKFJlbW92ZUZpbGVOYW1l
VGVzdCwgR2l2ZXNEaXJBbmRTdWJEaXJOYW1lRm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVY
UEVDVF9FUSgiYWRpciIgR1RFU1RfUEFUSF9TRVBfICJzdWJkaXIiIEdURVNUX1BBVEhfU0VQXywK
LSAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyL3N1YmRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1l
KCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiL2FmaWxlIikgLT4gIlwiCi1U
RVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290RGlyRm9yQWx0ZXJuYXRlU2VwYXJhdG9y
KSB7Ci0gIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sIEZpbGVQYXRoKCIvYWZpbGUiKS5SZW1v
dmVGaWxlTmFtZSgpLnN0cmluZygpKTsKLX0KLQotI2VuZGlmCi0KLVRFU1QoTWFrZUZpbGVOYW1l
VGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZp
bGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCi0g
ICAgICAwLCAieG1sIik7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54
bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVy
YXRlRmlsZU5hbWVOdW1iZXJHdFplcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6
Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDEy
LCAieG1sIik7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhcl8xMi54bWwi
LCBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRl
RmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJJc1plcm8pIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmls
ZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAg
ICAgRmlsZVBhdGgoImJhciIpLCAwLCAieG1sIik7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1URVNUKE1ha2VGaWxl
TmFtZVRlc3QsIEdlbmVyYXRlRmlsZU5hbWVXaXRoU2xhc2hOdW1iZXJHdFplcm8pIHsKLSAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiZm9vIiBHVEVT
VF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgoImJhciIpLCAxMiwgInhtbCIpOwotICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygp
KTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZVdoZW5OdW1iZXJJc1plcm9B
bmREaXJJc0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5h
bWUoRmlsZVBhdGgoIiIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAwLCAieG1sIik7Ci0gIEVY
UEVDVF9FUSgiYmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNOb3RaZXJvQW5kRGlySXNFbXB0eSkgewotICBG
aWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmls
ZVBhdGgoImJhciIpLAotICAgICAgMTQsICJ4bWwiKTsKLSAgRVhQRUNUX0VRKCJiYXJfMTQueG1s
IiwgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtzV2hl
bkRpckRvZXNOb3RFbmRXaXRoUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0
aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0gIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1URVNU
KENvbmNhdFBhdGhzVGVzdCwgV29ya3NXaGVuUGF0aDFFbmRzV2l0aFBhdGhTZXApIHsKLSAgRmls
ZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJmb28iIEdURVNU
X1BBVEhfU0VQXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
aWxlUGF0aCgiYmFyLnhtbCIpKTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAi
YmFyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQ
YXRoMUJlaW5nRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBh
dGhzKEZpbGVQYXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZpbGVQYXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1YWwu
c3RyaW5nKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJCZWluZ0VtcHR5KSB7
Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9v
IiksIEZpbGVQYXRoKCIiKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sIGFj
dHVhbC5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBCb3RoUGF0aEJlaW5n
RW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQ
YXRoKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCIiKSk7Ci0gIEVYUEVDVF9FUSgiIiwgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgxQ29udGFpbnNQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVh
bCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBh
dGgoImZvb2Jhci54bWwiKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJh
ciIgR1RFU1RfUEFUSF9TRVBfICJmb29iYXIueG1sIiwKLSAgICAgICAgICAgIGFjdHVhbC5zdHJp
bmcoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMkNvbnRhaW5zUGF0aFNlcCkg
ewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCi0gICAgICBGaWxl
UGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgRmlsZVBhdGgoImJhciIgR1RFU1Rf
UEFUSF9TRVBfICJiYXIueG1sIikpOwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBf
ICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIsCi0gICAgICAgICAgICBhY3R1YWwuc3Ry
aW5nKCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDJFbmRzV2l0aFBhdGhTZXAp
IHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRoKCJm
b28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRo
KCJiYXIiIEdURVNUX1BBVEhfU0VQXykpOwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9T
RVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXywgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICIiIC0+ICIiCi1URVNUKFJlbW92ZVRyYWlsaW5nUGF0
aFNlcGFyYXRvclRlc3QsIEVtcHR5U3RyaW5nKSB7Ci0gIEVYUEVDVF9FUSgiIiwgRmlsZVBhdGgo
IiIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKLX0KLQotLy8gUmVt
b3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28iIC0+ICJmb28iCi1URVNUKFJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvclRlc3QsIEZpbGVOb1NsYXNoU3RyaW5nKSB7Ci0gIEVYUEVDVF9FUSgi
Zm9vIiwgRmlsZVBhdGgoImZvbyIpLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmlu
ZygpKTsKLX0KLQotLy8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vIiAtPiAiZm9v
IgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBTaG91bGRSZW1vdmVUcmFp
bGluZ1NlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoImZvbyIsCi0gICAgICBGaWxlUGF0aCgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygp
KTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQ
YXRoKCJmb28vIikuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuc3RyaW5nKCkpOwotI2Vu
ZGlmCi19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vL2Jhci8iIC0+ICJm
b28vYmFyLyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVt
b3ZlTGFzdFNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJi
YXIiLAotICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdU
RVNUX1BBVEhfU0VQXykKLSAgICAgICAgICAgICAgICAuUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IgImZv
by9iYXIiIC0+ICJmb28vYmFyIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0
LCBTaG91bGRSZXR1cm5Vbm1vZGlmaWVkKSB7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRI
X1NFUF8gImJhciIsCi0gICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpCi0gICAgICAgICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0
cmluZygpKTsKLX0KLQotVEVTVChEaXJlY3RvcnlUZXN0LCBSb290RGlyZWN0b3J5RXhpc3RzKSB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0gIGNoYXIgY3Vy
cmVudF9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCi0gIGN1cnJlbnRfZHJpdmVbMF0gPSBz
dGF0aWNfY2FzdDxjaGFyPihfZ2V0ZHJpdmUoKSArICdBJyAtIDEpOwotICBjdXJyZW50X2RyaXZl
WzFdID0gJzonOwotICBjdXJyZW50X2RyaXZlWzJdID0gJ1xcJzsKLSAgY3VycmVudF9kcml2ZVsz
XSA9ICdcMCc7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKGN1cnJlbnRfZHJpdmUpLkRpcmVjdG9y
eUV4aXN0cygpKTsKLSNlbHNlCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuRGlyZWN0b3J5
RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi1URVNUKERpcmVjdG9yeVRlc3QsIFJvb3RPZldyb25nRHJpdmVEb2VzTm90RXhp
c3RzKSB7Ci0gIGNvbnN0IGludCBzYXZlZF9kcml2ZV8gPSBfZ2V0ZHJpdmUoKTsKLSAgLy8gRmlu
ZCBhIGRyaXZlIHRoYXQgZG9lc24ndCBleGlzdC4gU3RhcnQgd2l0aCAnWicgdG8gYXZvaWQgY29t
bW9uIG9uZXMuCi0gIGZvciAoY2hhciBkcml2ZSA9ICdaJzsgZHJpdmUgPj0gJ0EnOyBkcml2ZS0t
KQotICAgIGlmIChfY2hkcml2ZShkcml2ZSAtICdBJyArIDEpID09IC0xKSB7Ci0gICAgICBjaGFy
IG5vbl9kcml2ZVtfTUFYX1BBVEhdOyAgLy8gTk9MSU5UCi0gICAgICBub25fZHJpdmVbMF0gPSBk
cml2ZTsKLSAgICAgIG5vbl9kcml2ZVsxXSA9ICc6JzsKLSAgICAgIG5vbl9kcml2ZVsyXSA9ICdc
XCc7Ci0gICAgICBub25fZHJpdmVbM10gPSAnXDAnOwotICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVQ
YXRoKG5vbl9kcml2ZSkuRGlyZWN0b3J5RXhpc3RzKCkpOwotICAgICAgYnJlYWs7Ci0gICAgfQot
ICBfY2hkcml2ZShzYXZlZF9kcml2ZV8pOwotfQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dT
Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3MgQ0UgX2RvZXNfIGNv
bnNpZGVyIGFuIGVtcHR5IGRpcmVjdG9yeSB0byBleGlzdC4KLVRFU1QoRGlyZWN0b3J5VGVzdCwg
RW1wdHlQYXRoRGlyZWN0b3J5RG9lc05vdEV4aXN0KSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLQotVEVTVChEaXJlY3RvcnlUZXN0LCBDdXJyZW50RGlyZWN0b3J5RXhpc3RzKSB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MuCi0jIGlmbmRlZiBf
V0lOMzJfQ0UgIC8vIFdpbmRvd3MgQ0UgZG9lc24ndCBoYXZlIGEgY3VycmVudCBkaXJlY3Rvcnku
Ci0KLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0gIEVY
UEVDVF9UUlVFKEZpbGVQYXRoKCIuXFwiKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0KLSMgZW5kaWYg
IC8vIF9XSU4zMl9DRQotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi4iKS5EaXJlY3Rv
cnlFeGlzdHMoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuLyIpLkRpcmVjdG9yeUV4aXN0
cygpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQotCi0vLyAiZm9vL2JhciIgPT0g
Zm9vLy9iYXIiID09ICJmb28vLy9iYXIiCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29u
c2VjdXRpdmVTZXBhcGFyYXRvcnNJbk1pZHN0cmluZykgewotICBFWFBFQ1RfRVEoImZvbyIgR1RF
U1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFU
SF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gImJhciIsCi0gICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RF
U1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8gImJhciIsCi0gICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gR1RFU1RfUEFUSF9TRVBfCi0gICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8g
ImJhciIpLnN0cmluZygpKTsKLX0KLQotLy8gIi9iYXIiID09IC8vYmFyIiA9PSAiLy8vYmFyIgot
VEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJp
bmdTdGFydCkgewotICBFWFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQ
YXRoKEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwotICBFWFBFQ1RfRVEoR1RFU1Rf
UEFUSF9TRVBfICJiYXIiLAotICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRI
X1NFUF8gImJhciIpLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFy
IiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BB
VEhfU0VQXyAiYmFyIikuc3RyaW5nKCkpOwotfQotCi0vLyAiZm9vLyIgPT0gZm9vLy8iID09ICJm
b28vLy8iCi1URVNUKE5vcm1hbGl6ZVRlc3QsIE11bHRpcGxlQ29uc2VjdXRpdmVTZXBhcGFyYXRv
cnNBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAg
IEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOwotICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQ
XyBHVEVTVF9QQVRIX1NFUF8pLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BB
VEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9T
RVBfIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KLQotLy8gVGVzdHMgdGhhdCBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0
cmluZyBhcmUgbm9ybWFsaXplZAotLy8gcmVnYXJkbGVzcyBvZiB0aGVpciBjb21iaW5hdGlvbiAo
ZS5nLiAiZm9vXCIgPT0iZm9vL1wiID09Ci0vLyAiZm9vXFwvIikuCi1URVNUKE5vcm1hbGl6ZVRl
c3QsIE1peEFsdGVybmF0ZVNlcGFyYXRvckF0U3RyaW5nRW5kKSB7Ci0gIEVYUEVDVF9FUSgiZm9v
IiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICBGaWxlUGF0aCgiZm9vLyIpLnN0cmluZygp
KTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiLyIpLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJm
b28iIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgIEZpbGVQYXRoKCJmb28vLyIgR1RFU1Rf
UEFUSF9TRVBfKS5zdHJpbmcoKSk7Ci19Ci0KLSNlbmRpZgotCi1URVNUKEFzc2lnbm1lbnRPcGVy
YXRvclRlc3QsIERlZmF1bHRBc3NpZ25lZFRvTm9uRGVmYXVsdCkgewotICBGaWxlUGF0aCBkZWZh
dWx0X3BhdGg7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0X3BhdGgoInBhdGgiKTsKLSAgbm9uX2Rl
ZmF1bHRfcGF0aCA9IGRlZmF1bHRfcGF0aDsKLSAgRVhQRUNUX0VRKCIiLCBub25fZGVmYXVsdF9w
YXRoLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCIiLCBkZWZhdWx0X3BhdGguc3RyaW5nKCkpOyAg
Ly8gUkhTIHZhciBpcyB1bmNoYW5nZWQuCi19Ci0KLVRFU1QoQXNzaWdubWVudE9wZXJhdG9yVGVz
dCwgTm9uRGVmYXVsdEFzc2lnbmVkVG9EZWZhdWx0KSB7Ci0gIEZpbGVQYXRoIG5vbl9kZWZhdWx0
X3BhdGgoInBhdGgiKTsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwotICBkZWZhdWx0X3BhdGgg
PSBub25fZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfRVEoInBhdGgiLCBkZWZhdWx0X3BhdGguc3Ry
aW5nKCkpOwotICBFWFBFQ1RfRVEoInBhdGgiLCBub25fZGVmYXVsdF9wYXRoLnN0cmluZygpKTsg
IC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2VkLgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRl
c3QsIENvbnN0QXNzaWduZWRUb05vbkNvbnN0KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGNvbnN0X2Rl
ZmF1bHRfcGF0aCgiY29uc3RfcGF0aCIpOwotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJw
YXRoIik7Ci0gIG5vbl9kZWZhdWx0X3BhdGggPSBjb25zdF9kZWZhdWx0X3BhdGg7Ci0gIEVYUEVD
VF9FUSgiY29uc3RfcGF0aCIsIG5vbl9kZWZhdWx0X3BhdGguc3RyaW5nKCkpOwotfQotCi1jbGFz
cyBEaXJlY3RvcnlDcmVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgdGVzdGRhdGFfcGF0aF8uU2V0KEZpbGVQYXRoKAot
ICAgICAgICBUZW1wRGlyKCkgKyBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSAr
Ci0gICAgICAgICJfZGlyZWN0b3J5X2NyZWF0aW9uIiBHVEVTVF9QQVRIX1NFUF8gInRlc3QiIEdU
RVNUX1BBVEhfU0VQXykpOwotICAgIHRlc3RkYXRhX2ZpbGVfLlNldCh0ZXN0ZGF0YV9wYXRoXy5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKSk7Ci0KLSAgICB1bmlxdWVfZmlsZTBfLlNldChG
aWxlUGF0aDo6TWFrZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLCBGaWxlUGF0aCgidW5pcXVlIiks
Ci0gICAgICAgIDAsICJ0eHQiKSk7Ci0gICAgdW5pcXVlX2ZpbGUxXy5TZXQoRmlsZVBhdGg6Ok1h
a2VGaWxlTmFtZSh0ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAx
LCAidHh0IikpOwotCi0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJl
bW92ZSh1bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNf
c3RyKCkpOwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICByZW1vdmUodGVzdGRhdGFfZmlsZV8u
Y19zdHIoKSk7Ci0gICAgcmVtb3ZlKHVuaXF1ZV9maWxlMF8uY19zdHIoKSk7Ci0gICAgcmVtb3Zl
KHVuaXF1ZV9maWxlMV8uY19zdHIoKSk7Ci0gICAgcG9zaXg6OlJtRGlyKHRlc3RkYXRhX3BhdGhf
LmNfc3RyKCkpOwotICB9Ci0KLSAgdm9pZCBDcmVhdGVUZXh0RmlsZShjb25zdCBjaGFyKiBmaWxl
bmFtZSkgewotICAgIEZJTEUqIGYgPSBwb3NpeDo6Rk9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAg
ZnByaW50ZihmLCAidGV4dFxuIik7Ci0gICAgZmNsb3NlKGYpOwotICB9Ci0KLSAgLy8gU3RyaW5n
cyByZXByZXNlbnRpbmcgYSBkaXJlY3RvcnkgYW5kIGEgZmlsZSwgd2l0aCBpZGVudGljYWwgcGF0
aHMKLSAgLy8gZXhjZXB0IGZvciB0aGUgdHJhaWxpbmcgc2VwYXJhdG9yIGNoYXJhY3RlciB0aGF0
IGRpc3RpbnF1aXNoZXMKLSAgLy8gYSBkaXJlY3RvcnkgbmFtZWQgJ3Rlc3QnIGZyb20gYSBmaWxl
IG5hbWVkICd0ZXN0Jy4gRXhhbXBsZSBuYW1lczoKLSAgRmlsZVBhdGggdGVzdGRhdGFfcGF0aF87
ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC8iCi0gIEZpbGVQYXRoIHRlc3RkYXRh
X2ZpbGVfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QiCi0gIEZpbGVQYXRoIHVu
aXF1ZV9maWxlMF87ICAvLyAiL3RtcC9kaXJlY3RvcnlfY3JlYXRpb24vdGVzdC91bmlxdWUudHh0
IgotICBGaWxlUGF0aCB1bmlxdWVfZmlsZTFfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2NyZWF0aW9u
L3Rlc3QvdW5pcXVlXzEudHh0IgotfTsKLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwg
Q3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFf
cGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOwotICBF
WFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkp
OwotICBFWFBFQ1RfVFJVRSh0ZXN0ZGF0YV9wYXRoXy5EaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0K
LVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRm9yQWxyZWFk
eUV4aXN0aW5nUGF0aCkgewotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfcGF0aF8uRGlyZWN0b3J5
RXhpc3RzKCkpIDw8IHRlc3RkYXRhX3BhdGhfLnN0cmluZygpOwotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotICAvLyBDYWxsICdj
cmVhdGUnIGFnYWluLi4uIHNob3VsZCBzdGlsbCBzdWNjZWVkLgotICBFWFBFQ1RfVFJVRSh0ZXN0
ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpOwotfQotCi1URVNUX0Yo
RGlyZWN0b3J5Q3JlYXRpb25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0FuZFVuaXF1ZUZpbGVuYW1l
KSB7Ci0gIEZpbGVQYXRoIGZpbGVfcGF0aChGaWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFt
ZSh0ZXN0ZGF0YV9wYXRoXywKLSAgICAgIEZpbGVQYXRoKCJ1bmlxdWUiKSwgInR4dCIpKTsKLSAg
RVhQRUNUX0VRKHVuaXF1ZV9maWxlMF8uc3RyaW5nKCksIGZpbGVfcGF0aC5zdHJpbmcoKSk7Ci0g
IEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8gZmls
ZSBub3QgdGhlcmUKLQotICB0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2
ZWx5KCk7Ci0gIEVYUEVDVF9GQUxTRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OyAgLy8gZmlsZSBzdGlsbCBub3QgdGhlcmUKLSAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoLmNf
c3RyKCkpOwotICBFWFBFQ1RfVFJVRShmaWxlX3BhdGguRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkp
OwotCi0gIEZpbGVQYXRoIGZpbGVfcGF0aDIoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUodGVzdGRhdGFfcGF0aF8sCi0gICAgICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0g
IEVYUEVDVF9FUSh1bmlxdWVfZmlsZTFfLnN0cmluZygpLCBmaWxlX3BhdGgyLnN0cmluZygpKTsK
LSAgRVhQRUNUX0ZBTFNFKGZpbGVfcGF0aDIuRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOyAgLy8g
ZmlsZSBub3QgdGhlcmUKLSAgQ3JlYXRlVGV4dEZpbGUoZmlsZV9wYXRoMi5jX3N0cigpKTsKLSAg
RVhQRUNUX1RSVUUoZmlsZV9wYXRoMi5GaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSk7Ci19Ci0KLVRF
U1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzRmFpbCkgewotICAv
LyBmb3JjZSBhIGZhaWx1cmUgYnkgcHV0dGluZyBhIGZpbGUgd2hlcmUgd2Ugd2lsbCB0cnkgdG8g
Y3JlYXRlIGEgZGlyZWN0b3J5LgotICBDcmVhdGVUZXh0RmlsZSh0ZXN0ZGF0YV9maWxlXy5jX3N0
cigpKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfZmlsZV8uRmlsZU9yRGlyZWN0b3J5RXhpc3Rz
KCkpOwotICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uRGlyZWN0b3J5RXhpc3RzKCkpOwot
ICBFWFBFQ1RfRkFMU0UodGVzdGRhdGFfZmlsZV8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpKTsKLX0KLQotVEVTVChOb0RpcmVjdG9yeUNyZWF0aW9uVGVzdCwgQ3JlYXRlTm9EaXJlY3Rv
cmllc0ZvckRlZmF1bHRYbWxGaWxlKSB7Ci0gIGNvbnN0IEZpbGVQYXRoIHRlc3RfZGV0YWlsX3ht
bCgidGVzdF9kZXRhaWwueG1sIik7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0X2RldGFpbF94bWwuQ3Jl
YXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIERl
ZmF1bHRDb25zdHJ1Y3RvcikgewotICBGaWxlUGF0aCBmcDsKLSAgRVhQRUNUX0VRKCIiLCBmcC5z
dHJpbmcoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBDaGFyQW5kQ29weUNvbnN0cnVjdG9y
cykgewotICBjb25zdCBGaWxlUGF0aCBmcCgic3BpY3kiKTsKLSAgRVhQRUNUX0VRKCJzcGljeSIs
IGZwLnN0cmluZygpKTsKLQotICBjb25zdCBGaWxlUGF0aCBmcF9jb3B5KGZwKTsKLSAgRVhQRUNU
X0VRKCJzcGljeSIsIGZwX2NvcHkuc3RyaW5nKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwg
U3RyaW5nQ29uc3RydWN0b3IpIHsKLSAgY29uc3QgRmlsZVBhdGggZnAoc3RkOjpzdHJpbmcoImNp
ZGVyIikpOwotICBFWFBFQ1RfRVEoImNpZGVyIiwgZnAuc3RyaW5nKCkpOwotfQotCi1URVNUKEZp
bGVQYXRoVGVzdCwgU2V0KSB7Ci0gIGNvbnN0IEZpbGVQYXRoIGFwcGxlKCJhcHBsZSIpOwotICBG
aWxlUGF0aCBtYWMoIm1hYyIpOwotICBtYWMuU2V0KGFwcGxlKTsgIC8vIEltcGxlbWVudCBTZXQo
KSBzaW5jZSBvdmVybG9hZGluZyBvcGVyYXRvcj0gaXMgZm9yYmlkZGVuLgotICBFWFBFQ1RfRVEo
ImFwcGxlIiwgbWFjLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJhcHBsZSIsIGFwcGxlLnN0cmlu
ZygpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFRvU3RyaW5nKSB7Ci0gIGNvbnN0IEZpbGVQ
YXRoIGZpbGUoImRyaW5rIik7Ci0gIEVYUEVDVF9FUSgiZHJpbmsiLCBmaWxlLnN0cmluZygpKTsK
LX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFJlbW92ZUV4dGVuc2lvbikgewotICBFWFBFQ1RfRVEo
ImFwcCIsIEZpbGVQYXRoKCJhcHAuY2MiKS5SZW1vdmVFeHRlbnNpb24oImNjIikuc3RyaW5nKCkp
OwotICBFWFBFQ1RfRVEoImFwcCIsIEZpbGVQYXRoKCJhcHAuZXhlIikuUmVtb3ZlRXh0ZW5zaW9u
KCJleGUiKS5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9FUSgiQVBQIiwgRmlsZVBhdGgoIkFQUC5FWEUi
KS5SZW1vdmVFeHRlbnNpb24oImV4ZSIpLnN0cmluZygpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRl
c3QsIFJlbW92ZUV4dGVuc2lvbldoZW5UaGVyZUlzTm9FeHRlbnNpb24pIHsKLSAgRVhQRUNUX0VR
KCJhcHAiLCBGaWxlUGF0aCgiYXBwIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKS5zdHJpbmcoKSk7
Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBJc0RpcmVjdG9yeSkgewotICBFWFBFQ1RfRkFMU0Uo
RmlsZVBhdGgoImNvbGEiKS5Jc0RpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImtvYWxhIiBHVEVTVF9QQVRIX1NFUF8pLklzRGlyZWN0b3J5KCkpOwotI2lmIEdURVNUX0hBU19B
TFRfUEFUSF9TRVBfCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYS8iKS5Jc0RpcmVjdG9y
eSgpKTsKLSNlbmRpZgotfQotCi1URVNUKEZpbGVQYXRoVGVzdCwgSXNBYnNvbHV0ZVBhdGgpIHsK
LSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJpcyIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIp
LklzQWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzQWJzb2x1
dGVQYXRoKCkpOwotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgo
ImM6XFwiIEdURVNUX1BBVEhfU0VQXyAiaXNfbm90IgotICAgICAgICAgICAgICAgICAgICAgICBH
VEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIikuSXNBYnNvbHV0ZVBhdGgoKSk7Ci0gIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiYzpmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuSXNBYnNvbHV0ZVBh
dGgoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOi8iIEdURVNUX1BBVEhfU0VQXyAiaXNf
bm90IgotICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9QQVRIX1NFUF8gInJlbGF0aXZlIiku
SXNBYnNvbHV0ZVBhdGgoKSk7Ci0jZWxzZQotICBFWFBFQ1RfVFJVRShGaWxlUGF0aChHVEVTVF9Q
QVRIX1NFUF8gImlzX25vdCIgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpCi0gICAgICAgICAg
ICAgIC5Jc0Fic29sdXRlUGF0aCgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotfQot
Ci1URVNUKEZpbGVQYXRoVGVzdCwgSXNSb290RGlyZWN0b3J5KSB7Ci0jaWYgR1RFU1RfT1NfV0lO
RE9XUwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiYTpcXCIpLklzUm9vdERpcmVjdG9yeSgpKTsK
LSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIlo6LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQ
RUNUX1RSVUUoRmlsZVBhdGgoImU6Ly8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9G
QUxTRShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmls
ZVBhdGgoImI6IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgo
ImI6YSIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCI4Oi8i
KS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiY3wvIikuSXNS
b290RGlyZWN0b3J5KCkpOwotI2Vsc2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoIi8iKS5Jc1Jv
b3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvLyIpLklzUm9vdERpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7
Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiXFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVY
UEVDVF9GQUxTRShGaWxlUGF0aCgiL3giKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0K
LQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9w
dHJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmNmNTEyNGE4YzMxYWY4NDhmZDEwNzdhNDUx
YTdjNDE4NDRjNDMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDAzLCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiBEYW4gRWdub3IgKGVnbm9yQGdvb2dsZS5jb20pCi0v
LyBQb3J0ZWQgdG8gV2luZG93czogVmFkaW0gQmVybWFuICh2YWRpbWJAZ29vZ2xlLmNvbSkKLQot
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWxpbmtlZF9wdHIuaCIKLQotI2luY2x1ZGUg
PHN0ZGxpYi5oPgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB7Ci0KLXVz
aW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0
cjsKLQotaW50IG51bTsKLU1lc3NhZ2UqIGhpc3RvcnkgPSBOVUxMOwotCi0vLyBDbGFzcyB3aGlj
aCB0cmFja3MgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24KLWNsYXNzIEEgewotIHB1YmxpYzoKLSAg
QSgpOiBteW51bShudW0rKykgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiBjdG9yXG4i
OyB9Ci0gIHZpcnR1YWwgfkEoKSB7ICpoaXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGR0b3Jc
biI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8
ICIgdXNlXG4iOyB9Ci0gcHJvdGVjdGVkOgotICBpbnQgbXludW07Ci19OwotCi0vLyBTdWJjbGFz
cwotY2xhc3MgQiA6IHB1YmxpYyBBIHsKLSBwdWJsaWM6Ci0gIEIoKSB7ICpoaXN0b3J5IDw8ICJC
IiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgfkIoKSB7ICpoaXN0b3J5IDw8ICJCIiA8PCBt
eW51bSA8PCAiIGR0b3JcbiI7IH0KLSAgdmlydHVhbCB2b2lkIFVzZSgpIHsgKmhpc3RvcnkgPDwg
IkIiIDw8IG15bnVtIDw8ICIgdXNlXG4iOyB9Ci19OwotCi1jbGFzcyBMaW5rZWRQdHJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgTGlua2VkUHRyVGVzdCgpIHsKLSAg
ICBudW0gPSAwOwotICAgIGhpc3RvcnkgPSBuZXcgTWVzc2FnZTsKLSAgfQotCi0gIHZpcnR1YWwg
fkxpbmtlZFB0clRlc3QoKSB7Ci0gICAgZGVsZXRlIGhpc3Rvcnk7Ci0gICAgaGlzdG9yeSA9IE5V
TEw7Ci0gIH0KLX07Ci0KLVRFU1RfRihMaW5rZWRQdHJUZXN0LCBHZW5lcmFsVGVzdCkgewotICB7
Ci0gICAgbGlua2VkX3B0cjxBPiBhMCwgYTEsIGEyOwotICAgIC8vIFVzZSBleHBsaWNpdCBmdW5j
dGlvbiBjYWxsIG5vdGF0aW9uIGhlcmUgdG8gc3VwcHJlc3Mgc2VsZi1hc3NpZ24gd2FybmluZy4K
LSAgICBhMC5vcGVyYXRvcj0oYTApOwotICAgIGExID0gYTI7Ci0gICAgQVNTRVJUX0VRKGEwLmdl
dCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwotICAgIEFTU0VSVF9FUShhMS5nZXQoKSwgc3Rh
dGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NFUlRfRVEoYTIuZ2V0KCksIHN0YXRpY19jYXN0
PEEqPihOVUxMKSk7Ci0gICAgQVNTRVJUX1RSVUUoYTAgPT0gTlVMTCk7Ci0gICAgQVNTRVJUX1RS
VUUoYTEgPT0gTlVMTCk7Ci0gICAgQVNTRVJUX1RSVUUoYTIgPT0gTlVMTCk7Ci0KLSAgICB7Ci0g
ICAgICBsaW5rZWRfcHRyPEE+IGEzKG5ldyBBKTsKLSAgICAgIGEwID0gYTM7Ci0gICAgICBBU1NF
UlRfVFJVRShhMCA9PSBhMyk7Ci0gICAgICBBU1NFUlRfVFJVRShhMCAhPSBOVUxMKTsKLSAgICAg
IEFTU0VSVF9UUlVFKGEwLmdldCgpID09IGEzKTsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEz
LmdldCgpKTsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTQoYTApOwotICAgICAgYTEgPSBhNDsKLSAg
ICAgIGxpbmtlZF9wdHI8QT4gYTUobmV3IEEpOwotICAgICAgQVNTRVJUX1RSVUUoYTUuZ2V0KCkg
IT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTUgIT0gYTMuZ2V0KCkpOwotICAgICAgYTIgPSBh
NTsKLSAgICAgIGxpbmtlZF9wdHI8Qj4gYjAobmV3IEIpOwotICAgICAgbGlua2VkX3B0cjxBPiBh
NihiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCA9PSBhNik7Ci0gICAgICBBU1NFUlRfVFJVRShh
NiA9PSBiMCk7Ci0gICAgICBBU1NFUlRfVFJVRShiMCAhPSBOVUxMKTsKLSAgICAgIGE1ID0gYjA7
Ci0gICAgICBhNSA9IGIwOwotICAgICAgYTMtPlVzZSgpOwotICAgICAgYTQtPlVzZSgpOwotICAg
ICAgYTUtPlVzZSgpOwotICAgICAgYTYtPlVzZSgpOwotICAgICAgYjAtPlVzZSgpOwotICAgICAg
KCpiMCkuVXNlKCk7Ci0gICAgICBiMC5nZXQoKS0+VXNlKCk7Ci0gICAgfQotCi0gICAgYTAtPlVz
ZSgpOwotICAgIGExLT5Vc2UoKTsKLSAgICBhMi0+VXNlKCk7Ci0KLSAgICBhMSA9IGEyOwotICAg
IGEyLnJlc2V0KG5ldyBBKTsKLSAgICBhMC5yZXNldCgpOwotCi0gICAgbGlua2VkX3B0cjxBPiBh
NzsKLSAgfQotCi0gIEFTU0VSVF9TVFJFUSgKLSAgICAiQTAgY3RvclxuIgotICAgICJBMSBjdG9y
XG4iCi0gICAgIkEyIGN0b3JcbiIKLSAgICAiQjIgY3RvclxuIgotICAgICJBMCB1c2VcbiIKLSAg
ICAiQTAgdXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNl
XG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgZHRvclxuIgotICAg
ICJBMiBkdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQTEgdXNl
XG4iCi0gICAgIkEzIGN0b3JcbiIKLSAgICAiQTAgZHRvclxuIgotICAgICJBMyBkdG9yXG4iCi0g
ICAgIkExIGR0b3JcbiIsCi0gICAgaGlzdG9yeS0+R2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0K
LX0gIC8vIFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNzQ3Njg1ZjA3MmIyMjEwOGZj
ZDFjMzFkNWNjYzVkNDYyMjk2MzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMzExICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQot
Ly8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8v
Ci0vLyBUaGlzIGZpbGUgdmVyaWZpZXMgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXJzIHJlY2Vp
dmUgZXZlbnRzIGF0IHRoZQotLy8gcmlnaHQgdGltZXMuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0
RW52aXJvbm1lbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OkVudmlyb25tZW50OwotdXNpbmcgOjp0ZXN0
aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVz
dGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyOwotdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7
Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotCi0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lz
dGVyIHRoZWlyIGV2ZW50cy4KLXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZ19ldmVudHMgPSBO
VUxMOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1jbGFz
cyBFdmVudFJlY29yZGluZ0xpc3RlbmVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IEV2ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hhciogbmFt
ZSkgOiBuYW1lXyhuYW1lKSB7fQotCi0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0
UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVu
dHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbVN0YXJ0IikpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0
JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1
bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25TdGFydCIpCi0gICAgICAgICAgICA8PCAiKCIg
PDwgaXRlcmF0aW9uIDw8ICIpIjsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0
U3RyaW5nKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFy
dChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2Jh
Y2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIpKTsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAv
KnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFt
ZSgiT25FbnZpcm9ubWVudHNTZXRVcEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRl
c3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50
cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlU3RhcnQiKSk7Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZv
Ki8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RT
dGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRl
c3RQYXJ0UmVzdWx0JiAvKnRlc3RfcGFydF9yZXN1bHQqLykgewotICAgIGdfZXZlbnRzLT5wdXNo
X2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFBhcnRSZXN1bHQiKSk7Ci0gIH0KLQotICB2
aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0g
ICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0RW5kIikpOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVz
dF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJP
blRlc3RDYXNlRW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVh
ckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFy
dCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhH
ZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIpKTsKLSAgfQotCi0g
IHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90
ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikg
ewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1l
KCJPblRlc3RJdGVyYXRpb25FbmQiKQotICAgICAgICAgICAgPDwgIigiICA8PCBpdGVyYXRpb24g
PDwgIikiOwotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uVGVzdFByb2dyYW1FbmQiKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIEdl
dEZ1bGxNZXRob2ROYW1lKGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICByZXR1cm4gbmFtZV8gKyAi
LiIgKyBuYW1lOwotICB9Ci0KLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci19OwotCi1jbGFzcyBFbnZp
cm9ubWVudEludm9jYXRpb25DYXRjaGVyIDogcHVibGljIEVudmlyb25tZW50IHsKLSBwcm90ZWN0
ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJF
bnZpcm9ubWVudDo6U2V0VXAiKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
LSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6VGVhckRvd24iKTsKLSAgfQot
fTsKLQotY2xhc3MgTGlzdGVuZXJUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAg
c3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJM
aXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpU
ZWFyRG93blRlc3RDYXNlIik7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpTZXRVcCIpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVy
VGVzdDo6VGVhckRvd24iKTsKLSAgfQotfTsKLQotVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0Zv
bykgewotICAvLyBUZXN0IGV4ZWN1dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2UgaXMgbm90
IGd1YXJhbnRlZWQgc28gd2UgYXJlIG5vdAotICAvLyByZWNvcmRpbmcgdGhlIHRlc3QgbmFtZS4K
LSAgZ19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOwotICBT
VUNDRUVEKCk7ICAvLyBUcmlnZ2VycyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNUX0YoTGlz
dGVuZXJUZXN0LCBEb2VzQmFyKSB7Ci0gIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVz
dDo6KiBUZXN0IEJvZHkiKTsKLSAgU1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJl
c3VsdC4KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCi0KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlv
bkNhdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3Rl
bmVyOwotCi12b2lkIFZlcmlmeVJlc3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
JiBkYXRhLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9k
YXRhLAotICAgICAgICAgICAgICAgICAgIHNpemVfdCBleHBlY3RlZF9kYXRhX3NpemUpIHsKLSAg
Y29uc3Qgc2l6ZV90IGFjdHVhbF9zaXplID0gZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBmb2xs
b3dpbmcgYXNzZXJ0aW9uIGZhaWxzLCBhIG5ldyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCi0g
IC8vIGRhdGEuICBIZW5jZSB3ZSBzYXZlIGRhdGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRfZGF0YV9zaXplLCBhY3R1YWxfc2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhlIGNv
bW1vbiBwcmVmaXguCi0gIGNvbnN0IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRh
X3NpemUgPD0gYWN0dWFsX3NpemUgPwotICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFs
X3NpemU7Ci0gIHNpemVfdCBpID0gMDsKLSAgZm9yICg7IGkgPCBzaG9ydGVyX3NpemU7ICsraSkg
ewotICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZF9kYXRhW2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0g
ICAgICAgIDw8ICJhdCBwb3NpdGlvbiAiIDw8IGk7Ci0gIH0KLQotICAvLyBQcmludHMgZXh0cmEg
ZWxlbWVudHMgaW4gdGhlIGFjdHVhbCBkYXRhLgotICBmb3IgKDsgaSA8IGFjdHVhbF9zaXplOyAr
K2kpIHsKLSAgICBwcmludGYoIiAgQWN0dWFsIGV2ZW50ICMlbHU6ICVzXG4iLAotICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpKSwgZGF0YVtpXS5jX3N0cigpKTsKLSAgfQotfQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+IGV2ZW50czsKLSAgZ19ldmVudHMgPSAmZXZlbnRzOwotICBJbml0R29vZ2xlVGVzdCgm
YXJnYywgYXJndik7Ci0KLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFw
cGVuZCgKLSAgICAgIG5ldyBFdmVudFJlY29yZGluZ0xpc3RlbmVyKCIxc3QiKSk7Ci0gIFVuaXRU
ZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKS5BcHBlbmQoCi0gICAgICBuZXcgRXZlbnRS
ZWNvcmRpbmdMaXN0ZW5lcigiMm5kIikpOwotCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgRW52aXJvbm1lbnRJbnZvY2F0aW9uQ2F0Y2hlcik7Ci0KLSAgR1RFU1RfQ0hFQ0tfKGV2ZW50
cy5zaXplKCkgPT0gMCkKLSAgICAgIDw8ICJBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQgc2hvdWxk
IG5vdCBnZW5lcmF0ZSBhbnkgZXZlbnRzIGl0c2VsZi4iOwotCi0gIDo6dGVzdGluZzo6R1RFU1Rf
RkxBRyhyZXBlYXQpID0gMjsKLSAgaW50IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7Ci0KLSAg
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRfZXZlbnRzW10gPSB7Ci0gICAgIjFzdC5PblRlc3RQ
cm9ncmFtU3RhcnQiLAotICAgICIybmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKLSAgICAiMXN0Lk9u
VGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDAp
IiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIjJuZC5PbkVudmly
b25tZW50c1NldFVwU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAotICAgICIybmQu
T25FbnZpcm9ubWVudHNTZXRVcEVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5k
IiwKLSAgICAiMXN0Lk9uVGVzdENhc2VTdGFydCIsCi0gICAgIjJuZC5PblRlc3RDYXNlU3RhcnQi
LAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwVGVzdENhc2UiLAotICAgICIxc3QuT25UZXN0U3Rh
cnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwK
LSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVz
dWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRl
YXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAg
ICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5l
clRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFz
dC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJM
aXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5P
blRlc3RFbmQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAotICAgICIy
bmQuT25UZXN0Q2FzZUVuZCIsCi0gICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9u
RW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJE
b3duU3RhcnQiLAotICAgICJFbnZpcm9ubWVudDo6VGVhckRvd24iLAotICAgICIybmQuT25FbnZp
cm9ubWVudHNUZWFyRG93bkVuZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5k
IiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCgwKSIsCi0gICAgIjFzdC5PblRlc3RJdGVy
YXRpb25FbmQoMCkiLAotICAgICIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIy
bmQuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRV
cFN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIkVudmly
b25tZW50OjpTZXRVcCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAi
MXN0Lk9uRW52aXJvbm1lbnRzU2V0VXBFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwK
LSAgICAiMm5kLk9uVGVzdENhc2VTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0
Q2FzZSIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0g
ICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5
IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3Vs
dCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwK
LSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5P
blRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRl
c3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQu
T25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIy
bmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6
VGVhckRvd25UZXN0Q2FzZSIsCi0gICAgIjJuZC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9u
VGVzdENhc2VFbmQiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAg
ICAiMm5kLk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpU
ZWFyRG93biIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMXN0
Lk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5k
KDEpIiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvbkVuZCgxKSIsCi0gICAgIjJuZC5PblRlc3RQ
cm9ncmFtRW5kIiwKLSAgICAiMXN0Lk9uVGVzdFByb2dyYW1FbmQiCi0gIH07Ci0gIFZlcmlmeVJl
c3VsdHMoZXZlbnRzLAotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50cywKLSAgICAgICAg
ICAgICAgICBzaXplb2YoZXhwZWN0ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0ZWRfZXZlbnRzWzBd
KSk7Ci0KLSAgLy8gV2UgbmVlZCB0byBjaGVjayBtYW51YWxseSBmb3IgYWQgaG9jIHRlc3QgZmFp
bHVyZXMgdGhhdCBoYXBwZW4gYWZ0ZXIKLSAgLy8gUlVOX0FMTF9URVNUUyBmaW5pc2hlcy4KLSAg
aWYgKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5GYWlsZWQoKSkKLSAgICByZXRfdmFsID0gMTsK
LQotICByZXR1cm4gcmV0X3ZhbDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3QtbWVzc2FnZV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3Qu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NTIzOGVmNGU2NGFkYjRlMWY3ODhm
MTNhNGVkMDRkNjA2NTdlMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCi0vLyBUZXN0cyBmb3IgdGhlIE1lc3NhZ2UgY2xhc3MuCi0KLSNpbmNsdWRlICJndGVzdC9n
dGVzdC1tZXNzYWdlLmgiCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2Ug
ewotCi11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci0KLS8vIFRlc3RzIHRoZSB0ZXN0aW5nOjpN
ZXNzYWdlIGNsYXNzCi0KLS8vIFRlc3RzIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLgotVEVTVChN
ZXNzYWdlVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnOwot
ICBFWFBFQ1RfRVEoIiIsIG1zZy5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBjb3B5
IGNvbnN0cnVjdG9yLgotVEVTVChNZXNzYWdlVGVzdCwgQ29weUNvbnN0cnVjdG9yKSB7Ci0gIGNv
bnN0IE1lc3NhZ2UgbXNnMSgiSGVsbG8iKTsKLSAgY29uc3QgTWVzc2FnZSBtc2cyKG1zZzEpOwot
ICBFWFBFQ1RfRVEoIkhlbGxvIiwgbXNnMi5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIGNv
bnN0cnVjdGluZyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgotVEVTVChNZXNzYWdlVGVzdCwg
Q29uc3RydWN0c0Zyb21DU3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICBFWFBF
Q1RfRVEoIkhlbGxvIiwgbXNnLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5n
IGEgZmxvYXQuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRmxvYXQpIHsKLSAgY29uc3Qgc3Rk
OjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMS4yMzQ1NkYgPDwgIiAiIDw8IDIuMzQ1NjdGKS5H
ZXRTdHJpbmcoKTsKLSAgLy8gQm90aCBudW1iZXJzIHNob3VsZCBiZSBwcmludGVkIHdpdGggZW5v
dWdoIHByZWNpc2lvbi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmlu
ZywgIjEuMjM0NTYwIiwgcy5jX3N0cigpKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5n
OjpJc1N1YnN0cmluZywgIiAyLjM0NTY2OSIsIHMuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0
cmVhbWluZyBhIGRvdWJsZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNEb3VibGUpIHsKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgcyA9IChNZXNzYWdlKCkgPDwgMTI2MDU3MDg4MC40NTU1NDk3IDw8
ICIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEyNjA1NzIyNjUuMTk1
NDUzNCkuR2V0U3RyaW5nKCk7Ci0gIC8vIEJvdGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3
aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNT
dWJzdHJpbmcsICIxMjYwNTcwODgwLjQ1Iiwgcy5jX3N0cigpKTsKLSAgRVhQRUNUX1BSRURfRk9S
TUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIiAxMjYwNTcyMjY1LjE5Iiwgcy5jX3N0cigpKTsK
LX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNQb2ludGVyKSB7Ci0gIGludCBuID0gMDsKLSAgaW50KiBwID0gJm47Ci0g
IEVYUEVDVF9ORSgiKG51bGwpIiwgKE1lc3NhZ2UoKSA8PCBwKS5HZXRTdHJpbmcoKSk7Ci19Ci0K
LS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoTWVzc2Fn
ZVRlc3QsIFN0cmVhbXNOdWxsUG9pbnRlcikgewotICBpbnQqIHAgPSBOVUxMOwotICBFWFBFQ1Rf
RVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgYSBDIHN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNDU3RyaW5n
KSB7Ci0gIEVYUEVDVF9FUSgiRm9vIiwgKE1lc3NhZ2UoKSA8PCAiRm9vIikuR2V0U3RyaW5nKCkp
OwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBOVUxMIEMgc3RyaW5nLgotVEVTVChNZXNzYWdl
VGVzdCwgU3RyZWFtc051bGxDU3RyaW5nKSB7Ci0gIGNoYXIqIHAgPSBOVUxMOwotICBFWFBFQ1Rf
RVEoIihudWxsKSIsIChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgc3RkOjpzdHJpbmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zU3RyaW5n
KSB7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcgc3RyKCJIZWxsbyIpOwotICBFWFBFQ1RfRVEoIkhl
bGxvIiwgKE1lc3NhZ2UoKSA8PCBzdHIpLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJlZGRlZCBOVUxzLgotVEVTVChN
ZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZ1dpdGhFbWJlZGRlZE5VTCkgewotICBjb25zdCBjaGFy
IGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9Ci0gICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUg
bW9yZSBzdHJpbmciOwotICBjb25zdCA6OnN0ZDo6c3RyaW5nIHN0cmluZ193aXRoX251bChjaGFy
X2FycmF5X3dpdGhfbnVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoY2hhcl9hcnJheV93aXRoX251bCkgLSAxKTsKLSAgRVhQRUNUX0VRKCJIZXJlJ3MgYSBO
VUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciLAotICAgICAgICAgICAgKE1lc3NhZ2UoKSA8PCBz
dHJpbmdfd2l0aF9udWwpLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEg
TlVMIGNoYXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTlVMQ2hhcikgewotICBFWFBFQ1Rf
RVEoIlxcMCIsIChNZXNzYWdlKCkgPDwgJ1wwJykuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0
cyBzdHJlYW1pbmcgaW50LgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc0ludCkgewotICBFWFBF
Q1RfRVEoIjEyMyIsIChNZXNzYWdlKCkgPDwgMTIzKS5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQgZmx1c2gpIGNh
biBiZQotLy8gc3RyZWFtZWQgdG8gTWVzc2FnZS4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNC
YXNpY0lvTWFuaXApIHsKLSAgRVhQRUNUX0VRKCJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBs
aW5lIDIuIiwKLSAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6
ZW5kbAotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjpl
bmRzIDw8IHN0ZDo6Zmx1c2gKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGluIGxpbmUg
Mi4iKS5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIE1lc3NhZ2U6OkdldFN0cmluZygpCi1U
RVNUKE1lc3NhZ2VUZXN0LCBHZXRTdHJpbmcpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCAx
IDw8ICIgbGFtYiI7Ci0gIEVYUEVDVF9FUSgiMSBsYW1iIiwgbXNnLkdldFN0cmluZygpKTsKLX0K
LQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgTWVzc2FnZSBvYmplY3QgdG8gYW4gb3N0cmVhbS4KLVRF
U1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNUb09TdHJlYW0pIHsKLSAgTWVzc2FnZSBtc2coIkhlbGxv
Iik7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHNzIDw8IG1zZzsKLSAgRVhQRUNUX0VR
KCJIZWxsbyIsIHRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdTdHJlYW1Ub1N0cmluZygmc3MpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIE1lc3NhZ2Ugb2JqZWN0IGRvZXNuJ3QgdGFrZSB1cCB0b28g
bXVjaCBzdGFjayBzcGFjZS4KLVRFU1QoTWVzc2FnZVRlc3QsIERvZXNOb3RUYWtlVXBNdWNoU3Rh
Y2tTcGFjZSkgewotICBFWFBFQ1RfTEUoc2l6ZW9mKE1lc3NhZ2UpLCAxNlUpOwotfQotCi19ICAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ODZkYzNiMWIyNWM5YjhlZGFmZjUwMWQ5Njk3YWJlYWJi
MjVmMTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcnM6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBH
b29nbGUgVGVzdCBVbml0VGVzdE9wdGlvbnMgdGVzdHMKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMg
Y2xhc3NlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW50ZXJuYWxseSBieQotLy8gR29vZ2xlIFRlc3Qu
ICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLS8vCi0vLyBUaGlz
IGZpbGUgaXMgI2luY2x1ZGVkIGZyb20gZ3Rlc3QuY2MsIHRvIGF2b2lkIGNoYW5naW5nIGJ1aWxk
IG9yCi0vLyBtYWtlLWZpbGVzIG9uIFdpbmRvd3MgYW5kIG90aGVyIHBsYXRmb3Jtcy4gRG8gbm90
ICNpbmNsdWRlIHRoaXMgZmlsZQotLy8gYW55d2hlcmUgZWxzZSEKLQotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotIyBpbmNsdWRlIDx3aW5k
b3dzLmg+Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGluY2x1ZGUgPGRpcmVjdC5oPgotI2Vu
ZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlz
IHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRh
dGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGlu
Y2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGlz
IHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRB
VElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVT
VF9JTVBMRU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVy
bmFsIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIFR1cm5zIHRoZSBnaXZlbiByZWxhdGl2ZSBwYXRoIGlu
dG8gYW4gYWJzb2x1dGUgcGF0aC4KLUZpbGVQYXRoIEdldEFic29sdXRlUGF0aE9mKGNvbnN0IEZp
bGVQYXRoJiByZWxhdGl2ZV9wYXRoKSB7Ci0gIHJldHVybiBGaWxlUGF0aDo6Q29uY2F0UGF0aHMo
RmlsZVBhdGg6OkdldEN1cnJlbnREaXIoKSwgcmVsYXRpdmVfcGF0aCk7Ci19Ci0KLS8vIFRlc3Rp
bmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQvR2V0T3V0cHV0RmlsZS4KLQotVEVT
VChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXREZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUco
b3V0cHV0KSA9ICIiOwotICBFWFBFQ1RfU1RSRVEoIiIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0
cHV0Rm9ybWF0KCkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
Rm9ybWF0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6ZmlsZW5hbWUiOwotICBFWFBF
Q1RfU1RSRVEoInhtbCIsIFVuaXRUZXN0T3B0aW9uczo6R2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIo
KSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZURlZmF1bHQpIHsKLSAg
R1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9FUShHZXRBYnNvbHV0ZVBhdGhPZihG
aWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAotICAgICAgICAgICAgVW5pdFRl
c3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Ci19Ci0KLVRFU1QoWG1s
T3V0cHV0VGVzdCwgR2V0T3V0cHV0RmlsZVNpbmdsZUZpbGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRw
dXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOwotICBFWFBFQ1RfRVEoR2V0QWJzb2x1dGVQYXRoT2Yo
RmlsZVBhdGgoImZpbGVuYW1lLmFiYyIpKS5zdHJpbmcoKSwKLSAgICAgICAgICAgIFVuaXRUZXN0
T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwotfQotCi1URVNUKFhtbE91
dHB1dFRlc3QsIEdldE91dHB1dEZpbGVGcm9tRGlyZWN0b3J5UGF0aCkgewotICBHVEVTVF9GTEFH
KG91dHB1dCkgPSAieG1sOnBhdGgiIEdURVNUX1BBVEhfU0VQXzsKLSAgY29uc3Qgc3RkOjpzdHJp
bmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgR2V0QWJzb2x1dGVQYXRoT2YoCi0gICAg
ICAgICAgRmlsZVBhdGgoc3RkOjpzdHJpbmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0g
ICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAi
LnhtbCIpKS5zdHJpbmcoKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KLSAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0jaWYg
R1RFU1RfT1NfV0lORE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxl
LmNfc3RyKCksIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVj
dGVkX291dHB1dF9maWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNU
KE91dHB1dEZpbGVIZWxwZXJzVGVzdCwgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKSB7Ci0gIGNv
bnN0IHN0ZDo6c3RyaW5nIGV4ZV9zdHIgPSBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJp
bmcoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIGNvbnN0IGJvb2wgc3VjY2VzcyA9Ci0gICAg
ICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9uc190ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwIHx8
Ci0gICAgICBfc3RyY21waSgiZ3Rlc3Qtb3B0aW9ucy1leF90ZXN0IiwgZXhlX3N0ci5jX3N0cigp
KSA9PSAwIHx8Ci0gICAgICBfc3RyY21waSgiZ3Rlc3RfYWxsX3Rlc3QiLCBleGVfc3RyLmNfc3Ry
KCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJndGVzdF9kbGxfdGVzdCIsIGV4ZV9zdHIuY19z
dHIoKSkgPT0gMDsKLSNlbHNlCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW1vdmUgdGhl
IGhhcmQtY29kZWQgImx0LSIgcHJlZml4IHdoZW4KLSAgLy8gICBDaGFuZGxlciBDYXJydXRoJ3Mg
bGlidG9vbCByZXBsYWNlbWVudCBpcyByZWFkeS4KLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAg
ICAgIGV4ZV9zdHIgPT0gImd0ZXN0LW9wdGlvbnNfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIgPT0g
Imd0ZXN0X2FsbF90ZXN0IiB8fAotICAgICAgZXhlX3N0ciA9PSAibHQtZ3Rlc3RfYWxsX3Rlc3Qi
IHx8Ci0gICAgICBleGVfc3RyID09ICJndGVzdF9kbGxfdGVzdCI7Ci0jZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKLSAgaWYgKCFzdWNjZXNzKQotICAgIEZBSUwoKSA8PCAiR2V0Q3VycmVudEV4
ZWN1dGFibGVOYW1lKCkgcmV0dXJucyAiIDw8IGV4ZV9zdHI7Ci19Ci0KLWNsYXNzIFhtbE91dHB1
dENoYW5nZURpclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7Ci0gICAgb3JpZ2luYWxfd29ya2luZ19kaXJfID0gRmlsZVBhdGg6OkdldEN1
cnJlbnREaXIoKTsKLSAgICBwb3NpeDo6Q2hEaXIoIi4uIik7Ci0gICAgLy8gVGhpcyB3aWxsIG1h
a2UgdGhlIHRlc3QgZmFpbCBpZiBydW4gZnJvbSB0aGUgcm9vdCBkaXJlY3RvcnkuCi0gICAgRVhQ
RUNUX05FKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgRmls
ZVBhdGg6OkdldEN1cnJlbnREaXIoKS5zdHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgcG9zaXg6OkNoRGlyKG9yaWdpbmFsX3dvcmtpbmdfZGlyXy5zdHJp
bmcoKS5jX3N0cigpKTsKLSAgfQotCi0gIEZpbGVQYXRoIG9yaWdpbmFsX3dvcmtpbmdfZGlyXzsK
LX07Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29y
a2luZ0RpcldpdGhEZWZhdWx0KSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICBFWFBF
Q1RfRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgidGVzdF9kZXRhaWwueG1sIikp
LnN0cmluZygpLAotICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhU
b091dHB1dEZpbGUoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVz
ZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhEZWZhdWx0WE1MKSB7Ci0gIEdURVNUX0ZMQUcob3V0
cHV0KSA9ICJ4bWwiOwotICBFWFBFQ1RfRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFs
X3dvcmtpbmdfZGlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0
aCgidGVzdF9kZXRhaWwueG1sIikpLnN0cmluZygpLAotICAgICAgICAgICAgVW5pdFRlc3RPcHRp
b25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRw
dXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZUZp
bGUpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZS5hYmMiOwotICBFWFBF
Q1RfRVEoRmlsZVBhdGg6OkNvbmNhdFBhdGhzKG9yaWdpbmFsX3dvcmtpbmdfZGlyXywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiZmlsZW5hbWUuYWJjIikpLnN0
cmluZygpLAotICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091
dHB1dEZpbGUoKSk7Ci19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2
ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhSZWxhdGl2ZVBhdGgpIHsKLSAgR1RFU1RfRkxBRyhvdXRw
dXQpID0gInhtbDpwYXRoIiBHVEVTVF9QQVRIX1NFUF87Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4
cGVjdGVkX291dHB1dF9maWxlID0KLSAgICAgIEZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAg
ICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8sCi0gICAgICAgICAgRmlsZVBhdGgoc3RkOjpzdHJp
bmcoInBhdGgiKSArIEdURVNUX1BBVEhfU0VQXyArCi0gICAgICAgICAgICAgICAgICAgR2V0Q3Vy
cmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnhtbCIpKS5zdHJpbmcoKTsKLSAgY29u
c3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9maWxlID0KLSAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0
QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCk7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICBFWFBF
Q1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91dHB1dF9maWxlLmNf
c3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9maWxlLCBvdXRwdXRf
ZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi1URVNUX0YoWG1sT3V0cHV0Q2hhbmdlRGlyVGVz
dCwgUHJlc2VydmVPcmlnaW5hbFdvcmtpbmdEaXJXaXRoQWJzb2x1dGVGaWxlKSB7Ci0jaWYgR1RF
U1RfT1NfV0lORE9XUwotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmM6XFx0bXBcXGZpbGVu
YW1lLmFiYyI7Ci0gIEVYUEVDVF9FUShGaWxlUGF0aCgiYzpcXHRtcFxcZmlsZW5hbWUuYWJjIiku
c3RyaW5nKCksCi0gICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpKTsKLSNlbHNlCi0gIEdURVNUX0ZMQUcob3V0cHV0KSA9InhtbDovdG1wL2Zp
bGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9FUShGaWxlUGF0aCgiL3RtcC9maWxlbmFtZS5hYmMiKS5z
dHJpbmcoKSwKLSAgICAgICAgICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9P
dXRwdXRGaWxlKCkpOwotI2VuZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0
LCBQcmVzZXJ2ZU9yaWdpbmFsV29ya2luZ0RpcldpdGhBYnNvbHV0ZVBhdGgpIHsKLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiYzpcXHRtcFxcIjsKLSNl
bHNlCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHBhdGggPSAiL3RtcC8iOwotI2VuZGlmCi0KLSAgR1RF
U1RfRkxBRyhvdXRwdXQpID0gInhtbDoiICsgcGF0aDsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhw
ZWN0ZWRfb3V0cHV0X2ZpbGUgPQotICAgICAgcGF0aCArIEdldEN1cnJlbnRFeGVjdXRhYmxlTmFt
ZSgpLnN0cmluZygpICsgIi54bWwiOwotICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUg
PQotICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsK
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1NUUkNBU0VFUShleHBlY3RlZF9vdXRw
dXRfZmlsZS5jX3N0cigpLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbHNlCi0gIEVYUEVDVF9F
UShleHBlY3RlZF9vdXRwdXRfZmlsZSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZW5kaWYKLX0K
LQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVz
cGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRl
c3QyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNzgyZmU3MDgzN2FjYTg0YjQ3NWEzNDU1
YTFlNTRhYjgyODM4NWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikK
LS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0
IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCi0vLyBHb29nbGUgVGVzdCB3b3JrLgotCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi11c2luZyA6OnRlc3Rpbmc6OlZhbHVl
czsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwotCi0vLyBUZXN0
cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0
Ci0vLyBhcmUgZnVuY3Rpb25hbC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZpbmVk
Ci0vLyBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MuCi1QYXJhbUdlbmVyYXRvcjxpbnQ+IGV4
dGVybl9nZW4gPSBWYWx1ZXMoMzMpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFuZCBp
bnN0YW50aWF0ZWQgaW4gYW5vdGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuY2MKLS8vIGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUg
Y2xhc3MgaXMgZGVmaW5lZCBpbgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChNdWx0aXBsZXNPZjMzLAotICAgICAgICAgICAgICAgICAgICAgICAg
RXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygzMywgNjYpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNh
biBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90
aGVyIGluc3RhbnRpYXRpb24gaXMgZGVmaW5lZAotLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0
LmNjIGFuZCBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLS8vIGZp
eHR1cmUgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoU2VxdWVuY2UyLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlh
dGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVzKDQyKjMsIDQyKjQsIDQyKjUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFS
QU1fVEVTVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIyNzhiYjk0Yjg1NmY3MWJhOGE5MmU3NzhiYWI0ZDJm
MzAyMmI1ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDEwNTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0v
LyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiBUaGlzIGZpbGUgdmVyaWZpZXMgdGhhdCB0
aGUgcGFyYW1ldGVyCi0vLyBnZW5lcmF0b3JzIG9iamVjdHMgcHJvZHVjZSBjb3JyZWN0IHBhcmFt
ZXRlciBzZXF1ZW5jZXMgYW5kIHRoYXQKLS8vIEdvb2dsZSBUZXN0IHJ1bnRpbWUgaW5zdGFudGlh
dGVzIGNvcnJlY3QgdGVzdHMgZnJvbSB0aG9zZSBzZXF1ZW5jZXMuCi0KLSNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotIyBpbmNsdWRlIDxhbGdv
cml0aG0+Ci0jIGluY2x1ZGUgPGlvc3RyZWFtPgotIyBpbmNsdWRlIDxsaXN0PgotIyBpbmNsdWRl
IDxzc3RyZWFtPgotIyBpbmNsdWRlIDxzdHJpbmc+Ci0jIGluY2x1ZGUgPHZlY3Rvcj4KLQotLy8g
VG8gaW5jbHVkZSBndGVzdC1pbnRlcm5hbC1pbmwuaC4KLSMgZGVmaW5lIEdURVNUX0lNUExFTUVO
VEFUSU9OXyAxCi0jIGluY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIgIC8vIGZvciBV
bml0VGVzdE9wdGlvbnMKLSMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSMgaW5jbHVk
ZSAidGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCIKLQotdXNpbmcgOjpzdGQ6OnZlY3RvcjsK
LXVzaW5nIDo6c3RkOjpzb3J0OwotCi11c2luZyA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZp
cm9ubWVudDsKLXVzaW5nIDo6dGVzdGluZzo6Qm9vbDsKLXVzaW5nIDo6dGVzdGluZzo6TWVzc2Fn
ZTsKLXVzaW5nIDo6dGVzdGluZzo6UmFuZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFy
YW07Ci11c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGluZzo6VmFsdWVzSW47
Ci0KLSMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKLXVzaW5nIDo6dGVzdGluZzo6Q29tYmluZTsKLXVz
aW5nIDo6dGVzdGluZzo6Z2V0OwotdXNpbmcgOjp0ZXN0aW5nOjptYWtlX3R1cGxlOwotdXNpbmcg
Ojp0ZXN0aW5nOjp0dXBsZTsKLSMgZW5kaWYgIC8vIEdURVNUX0hBU19DT01CSU5FCi0KLXVzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwotdXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VW5pdFRlc3RPcHRpb25zOwotCi0vLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmlu
Zy4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVtb3ZlIFByaW50VmFsdWUoKSB3aGVu
IHdlIG1vdmUgbWF0Y2hlcnMgYW5kCi0vLyBFWFBFQ1RfVEhBVCgpIGZyb20gR29vZ2xlIE1vY2sg
dG8gR29vZ2xlIFRlc3QuICBBdCB0aGF0IHRpbWUsIHdlCi0vLyBjYW4gd3JpdGUgRVhQRUNUX1RI
QVQoeCwgRXEoeSkpIHRvIGNvbXBhcmUgdHdvIHR1cGxlcyB4IGFuZCB5LCBhcwotLy8gRVhQRUNU
X1RIQVQoKSBhbmQgdGhlIG1hdGNoZXJzIGtub3cgaG93IHRvIHByaW50IHR1cGxlcy4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVl
KSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwgdmFsdWU7Ci0g
IHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLSMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8g
VGhlc2Ugb3ZlcmxvYWRzIGFsbG93IHByaW50aW5nIHR1cGxlcyBpbiBvdXIgdGVzdHMuICBXZSBj
YW5ub3QKLS8vIGRlZmluZSBhbiBvcGVyYXRvcjw8IGZvciB0dXBsZXMsIGFzIHRoYXQgZGVmaW5p
dGlvbiBuZWVkcyB0byBiZSBpbgotLy8gdGhlIHN0ZCBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYmUg
cGlja2VkIHVwIGJ5IEdvb2dsZSBUZXN0IHZpYQotLy8gQXJndW1lbnQtRGVwZW5kZW50IExvb2t1
cCwgeWV0IGRlZmluaW5nIGFueXRoaW5nIGluIHRoZSBzdGQKLS8vIG5hbWVzcGFjZSBpbiBub24t
U1RMIGNvZGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyPgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBU
Mj4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBzdHJlYW0gPDwg
IigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpIDw8ICIpIjsKLSAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDM+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFsdWUoY29uc3QgdHVwbGU8
VDEsIFQyLCBUMz4mIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICBz
dHJlYW0gPDwgIigiIDw8IGdldDwwPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8MT4odmFsdWUpCi0g
ICAgICAgICA8PCAiLCAiPDwgZ2V0PDI+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0u
c3RyKCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLTo6c3Rk
OjpzdHJpbmcgUHJpbnRWYWx1ZSgKLSAgICBjb25zdCB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTA+JiB2YWx1ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0
cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+
KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDwyPih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8
Mz4odmFsdWUpCi0gICAgICAgICA8PCAiLCAiPDwgZ2V0PDQ+KHZhbHVlKSA8PCAiLCAiIDw8IGdl
dDw1Pih2YWx1ZSkKLSAgICAgICAgIDw8ICIsICI8PCBnZXQ8Nj4odmFsdWUpIDw8ICIsICIgPDwg
Z2V0PDc+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8IGdldDw4Pih2YWx1ZSkgPDwgIiwgIiA8
PCBnZXQ8OT4odmFsdWUpIDw8ICIpIjsKLSAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQotIyBl
bmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVmVyaWZpZXMgdGhhdCBhIHNlcXVlbmNl
IGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdG9yIGFuZCBhY2Nlc3NlZAotLy8gdmlhIHRoZSBpdGVy
YXRvciBvYmplY3QgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgb25lIHVzaW5nIEdvb2dsZSBUZXN0Ci0v
LyBhc3NlcnRpb25zLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotdm9pZCBWZXJp
ZnlHZW5lcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3I8VD4mIGdlbmVyYXRvciwKLSAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQgKCZleHBlY3RlZF92YWx1ZXMpW05dKSB7Ci0gIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IE47ICsraSkgewotICAgIEFTU0VSVF9GQUxTRShpdCA9PSBn
ZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4g
YWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRvciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhl
IGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIC8vIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkg
aGVyZSBhcyB0aGUgdmFsdWVzIG1heSBiZSB0dXBsZXMsCi0gICAgLy8gd2hpY2ggZG9uJ3Qgc3Vw
cG9ydCA8PC4KLSAgICBFWFBFQ1RfVFJVRShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQotICAg
ICAgICA8PCAid2hlcmUgaSBpcyAiIDw8IGkKLSAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVz
W2ldIGlzICIgPDwgUHJpbnRWYWx1ZShleHBlY3RlZF92YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIs
ICppdCBpcyAiIDw8IFByaW50VmFsdWUoKml0KQotICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBh
biBpdGVyYXRvciBjcmVhdGVkIHdpdGggdGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIGl0
Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8
PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBvZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4g
aXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9y
LlxuIjsKLQotICAvLyBUZXN0IHRoZSBpdGVyYXRvciBhc3NpZ25tZW50LiBUaGUgZm9sbG93aW5n
IGxpbmVzIHZlcmlmeSB0aGF0Ci0gIC8vIHRoZSBzZXF1ZW5jZSBhY2Nlc3NlZCB2aWEgYW4gaXRl
cmF0b3IgaW5pdGlhbGl6ZWQgdmlhIHRoZQotICAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIChhcyBv
cHBvc2VkIHRvIGEgY29weSBjb25zdHJ1Y3RvcikgbWF0Y2hlcwotICAvLyBqdXN0IHRoZSBzYW1l
LgotICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE47
ICsraSkgewotICAgIEFTU0VSVF9GQUxTRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAg
IDw8ICJBdCBlbGVtZW50ICIgPDwgaSA8PCAiIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4i
OwotICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkX3ZhbHVlc1tpXSA9PSAqaXQpCi0gICAgICAgIDw8
ICJ3aGVyZSBpIGlzICIgPDwgaQotICAgICAgICA8PCAiLCBleHBlY3RlZF92YWx1ZXNbaV0gaXMg
IiA8PCBQcmludFZhbHVlKGV4cGVjdGVkX3ZhbHVlc1tpXSkKLSAgICAgICAgPDwgIiwgKml0IGlz
ICIgPDwgUHJpbnRWYWx1ZSgqaXQpCi0gICAgICAgIDw8ICIsIGFuZCAnaXQnIGlzIGFuIGl0ZXJh
dG9yIGNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0gICAgaXQrKzsKLSAg
fQotICBFWFBFQ1RfVFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpCi0gICAgICAgIDw8ICJBdCB0
aGUgcHJlc3VtZWQgZW5kIG9mIHNlcXVlbmNlIHdoZW4gYWNjZXNzaW5nIHZpYSBhbiBpdGVyYXRv
ciAiCi0gICAgICAgIDw8ICJjcmVhdGVkIHdpdGggdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuXG4i
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0
eShjb25zdCBQYXJhbUdlbmVyYXRvcjxUPiYgZ2VuZXJhdG9yKSB7Ci0gIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ+OjppdGVyYXRvciBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBFWFBFQ1Rf
VFJVRShpdCA9PSBnZW5lcmF0b3IuZW5kKCkpOwotCi0gIGl0ID0gZ2VuZXJhdG9yLmJlZ2luKCk7
Ci0gIEVYUEVDVF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSk7Ci19Ci0KLS8vIEdlbmVyYXRv
ciB0ZXN0cy4gVGhleSB0ZXN0IHRoYXQgZWFjaCBvZiB0aGUgcHJvdmlkZWQgZ2VuZXJhdG9yIGZ1
bmN0aW9ucwotLy8gZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIHNlcXVlbmNlIG9mIHZhbHVlcy4gVGhl
IGdlbmVyYWwgdGVzdCBwYXR0ZXJuCi0vLyBpbnN0YW50aWF0ZXMgYSBnZW5lcmF0b3IgdXNpbmcg
b25lIG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb25zLAotLy8gY2hlY2tzIHRoZSBzZXF1ZW5jZSBw
cm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yIHVzaW5nIGl0cyBpdGVyYXRvciBBUEksCi0vLyBhbmQg
dGhlbiByZXNldHMgdGhlIGl0ZXJhdG9yIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vx
dWVuY2UKLS8vIGFuZCBjaGVja3MgdGhlIHNlcXVlbmNlIGFnYWluLgotCi0vLyBUZXN0cyB0aGF0
IGl0ZXJhdG9ycyBwcm9kdWNlZCBieSBnZW5lcmF0b3IgZnVuY3Rpb25zIGNvbmZvcm0gdG8gdGhl
Ci0vLyBGb3J3YXJkSXRlcmF0b3IgY29uY2VwdC4KLVRFU1QoSXRlcmF0b3JUZXN0LCBQYXJhbUl0
ZXJhdG9yQ29uZm9ybXNUb0ZvcndhcmRJdGVyYXRvckNvbmNlcHQpIHsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAxMCk7Ci0gIFBhcmFtR2VuZXJhdG9yPGludD46
Oml0ZXJhdG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBpdGVyYXRv
ciBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KLSAgUGFyYW1HZW5lcmF0b3I8aW50
Pjo6aXRlcmF0b3IgaXQyID0gaXQ7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiSW5p
dGlhbGl6ZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQgdG8gdGhlICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMgaXRzIHNvdXJjZSBwb2ludHMgdG8iOwotCi0g
IC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgYXNzaWdubWVudCB3b3JrcyBhcyBleHBlY3RlZC4K
LSAgaXQrKzsKLSAgRVhQRUNUX0ZBTFNFKCppdCA9PSAqaXQyKTsKLSAgaXQyID0gaXQ7Ci0gIEVY
UEVDVF9UUlVFKCppdCA9PSAqaXQyKSA8PCAiQXNzaWduZWQgaXRlcmF0b3JzIG11c3QgcG9pbnQg
dG8gdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJlbGVtZW50IHNhbWUgYXMg
aXRzIHNvdXJjZSBwb2ludHMgdG8iOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IG9wZXJh
dG9yKysoKSByZXR1cm5zICp0aGlzLgotICBFWFBFQ1RfRVEoJml0LCAmKCsraXQpKSA8PCAiUmVz
dWx0IG9mIHRoZSBwcmVmaXggb3BlcmF0b3IrKyBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgInJlZmVyIHRvIHRoZSBvcmlnaW5hbCBvYmplY3QiOwotCi0gIC8vIFZlcmlm
aWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgcG9zdGZpeCBvcGVyYXRvcisrIHBvaW50cyB0byB0
aGUgdmFsdWUKLSAgLy8gcG9pbnRlZCB0byBieSB0aGUgb3JpZ2luYWwgaXRlcmF0b3IuCi0gIGlu
dCBvcmlnaW5hbF92YWx1ZSA9ICppdDsgIC8vIEhhdmUgdG8gY29tcHV0ZSBpdCBvdXRzaWRlIG9m
IG1hY3JvIGNhbGwgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5hZmZl
Y3RlZCBieSB0aGUgcGFyYW1ldGVyIGV2YWx1YXRpb24gb3JkZXIuCi0gIEVYUEVDVF9FUShvcmln
aW5hbF92YWx1ZSwgKihpdCsrKSk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBwcmVmaXggYW5kIHBv
c3RmaXggb3BlcmF0b3IrKygpIGFkdmFuY2UgYW4gaXRlcmF0b3IKLSAgLy8gYWxsIHRoZSBzYW1l
LgotICBpdDIgPSBpdDsKLSAgaXQrKzsKLSAgKytpdDI7Ci0gIEVYUEVDVF9UUlVFKCppdCA9PSAq
aXQyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoRGVmYXVsdFN0ZXApIHsKLSAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAzKTsKLSAgY29uc3QgaW50
IGV4cGVjdGVkX3ZhbHVlc1tdID0gezAsIDEsIDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBl
eHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSBn
ZW5lcmF0ZXMgdGhlIHNpbmdsZSBlbGVtZW50IHNlcXVlbmNlCi0vLyBhcyBleHBlY3RlZCB3aGVu
IHByb3ZpZGVkIHdpdGggcmFuZ2UgbGltaXRzIHRoYXQgYXJlIGVxdWFsLgotVEVTVChSYW5nZVRl
c3QsIEludFJhbmdlU2luZ2xlVmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBn
ZW4gPSBSYW5nZSgwLCAxKTsKLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezB9Owot
ICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNh
c2UuIFRlc3RzIHRoYXQgUmFuZ2UoKSB3aXRoIGdlbmVyYXRlcyBlbXB0eSBzZXF1ZW5jZSB3aGVu
Ci0vLyBzdXBwbGllZCB3aXRoIGFuIGVtcHR5IHJhbmdlLgotVEVTVChSYW5nZVRlc3QsIEludFJh
bmdlRW1wdHkpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCAw
KTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0vLyBUZXN0cyB0aGF0IFJh
bmdlKCkgd2l0aCBjdXN0b20gc3RlcCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9t
U3RlcCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDksIDMp
OwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MCwgMywgNn07Ci0gIFZlcmlmeUdl
bmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmFuZ2Uo
KSB3aXRoIGN1c3RvbSBzdGVwIChncmVhdGVyIHRoZW4gb25lKSBnZW5lcmF0ZXMKLS8vIHRoZSBl
eHBlY3RlZCBzZXF1ZW5jZSB3aGVuIHRoZSBsYXN0IGVsZW1lbnQgZG9lcyBub3QgZmFsbCBvbiB0
aGUKLS8vIHVwcGVyIHJhbmdlIGxpbWl0LiBTZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IFJhbmdlKCkg
bXVzdCBub3QgaGF2ZQotLy8gZWxlbWVudHMgYmV5b25kIHRoZSByYW5nZSBsaW1pdHMuCi1URVNU
KFJhbmdlVGVzdCwgSW50UmFuZ2VXaXRoQ3VzdG9tU3RlcE92ZXJVcHBlckJvdW5kKSB7Ci0gIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgNCwgMyk7Ci0gIGNvbnN0IGlu
dCBleHBlY3RlZF92YWx1ZXNbXSA9IHswLCAzfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCBSYW5nZSB3b3JrcyB3aXRoIHVz
ZXItZGVmaW5lZCB0eXBlcyB0aGF0IGRlZmluZQotLy8gY29weSBjb25zdHJ1Y3Rvciwgb3BlcmF0
b3I9KCksIG9wZXJhdG9yKygpLCBhbmQgb3BlcmF0b3I8KCkuCi1jbGFzcyBEb2dBZGRlciB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBEb2dBZGRlcihjb25zdCBjaGFyKiBhX3ZhbHVlKSA6IHZhbHVl
XyhhX3ZhbHVlKSB7fQotICBEb2dBZGRlcihjb25zdCBEb2dBZGRlciYgb3RoZXIpIDogdmFsdWVf
KG90aGVyLnZhbHVlXy5jX3N0cigpKSB7fQotCi0gIERvZ0FkZGVyIG9wZXJhdG9yPShjb25zdCBE
b2dBZGRlciYgb3RoZXIpIHsKLSAgICBpZiAodGhpcyAhPSAmb3RoZXIpCi0gICAgICB2YWx1ZV8g
PSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIERvZ0FkZGVyIG9wZXJh
dG9yKyhjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKLSAgICBNZXNzYWdlIG1zZzsKLSAg
ICBtc2cgPDwgdmFsdWVfLmNfc3RyKCkgPDwgb3RoZXIudmFsdWVfLmNfc3RyKCk7Ci0gICAgcmV0
dXJuIERvZ0FkZGVyKG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgfQotICBib29sIG9wZXJh
dG9yPChjb25zdCBEb2dBZGRlciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwg
b3RoZXIudmFsdWVfOwotICB9Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgdmFsdWVfOwotfTsK
LQotVEVTVChSYW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlKSB7Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPERvZ0FkZGVyPiBnZW4gPQotICAgICAgUmFuZ2UoRG9nQWRkZXIoImNhdCIpLCBE
b2dBZGRlcigiY2F0ZG9nZG9nIiksIERvZ0FkZGVyKCJkb2ciKSk7Ci0gIFBhcmFtR2VuZXJhdG9y
PERvZ0FkZGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4uYmVnaW4oKTsKLQotICBBU1NFUlRfRkFMU0Uo
aXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXQiLCBpdC0+dmFsdWUoKS5jX3N0
cigpKTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwotICBFWFBFQ1RfU1RS
RVEoImNhdGRvZyIsIGl0LT52YWx1ZSgpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQg
PT0gZ2VuLmVuZCgpKTsKLX0KLQotY2xhc3MgSW50V3JhcHBlciB7Ci0gcHVibGljOgotICBleHBs
aWNpdCBJbnRXcmFwcGVyKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQotICBJbnRX
cmFwcGVyKGNvbnN0IEludFdyYXBwZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8pIHt9
Ci0KLSAgSW50V3JhcHBlciBvcGVyYXRvcj0oY29uc3QgSW50V3JhcHBlciYgb3RoZXIpIHsKLSAg
ICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0gIC8vIG9w
ZXJhdG9yKygpIGFkZHMgYSBkaWZmZXJlbnQgdHlwZS4KLSAgSW50V3JhcHBlciBvcGVyYXRvciso
aW50IG90aGVyKSBjb25zdCB7IHJldHVybiBJbnRXcmFwcGVyKHZhbHVlXyArIG90aGVyKTsgfQot
ICBib29sIG9wZXJhdG9yPChjb25zdCBJbnRXcmFwcGVyJiBvdGhlcikgY29uc3QgewotICAgIHJl
dHVybiB2YWx1ZV8gPCBvdGhlci52YWx1ZV87Ci0gIH0KLSAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotVEVTVChS
YW5nZVRlc3QsIFdvcmtzV2l0aEFDdXN0b21UeXBlV2l0aERpZmZlcmVudEluY3JlbWVudFR5cGUp
IHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8SW50V3JhcHBlcj4gZ2VuID0gUmFuZ2UoSW50V3Jh
cHBlcigwKSwgSW50V3JhcHBlcigyKSk7Ci0gIFBhcmFtR2VuZXJhdG9yPEludFdyYXBwZXI+Ojpp
dGVyYXRvciBpdCA9IGdlbi5iZWdpbigpOwotCi0gIEFTU0VSVF9GQUxTRShpdCA9PSBnZW4uZW5k
KCkpOwotICBFWFBFQ1RfRVEoMCwgaXQtPnZhbHVlKCkpOwotCi0gIEFTU0VSVF9GQUxTRSgrK2l0
ID09IGdlbi5lbmQoKSk7Ci0gIEVYUEVDVF9FUSgxLCBpdC0+dmFsdWUoKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoKytpdCA9PSBnZW4uZW5kKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkg
d2l0aCBhbiBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVu
Y2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5BcnJheSkgewotICBpbnQgYXJyYXlbXSA9
IHszLCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbihh
cnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBWYWx1ZXNJbigpIHdpdGggYSBjb25zdCBhcnJheSBwYXJhbWV0ZXIgZ2VuZXJhdGVzCi0vLyB0
aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5Db25zdEFy
cmF5KSB7Ci0gIGNvbnN0IGludCBhcnJheVtdID0gezMsIDUsIDh9OwotICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdl
biwgYXJyYXkpOwotfQotCi0vLyBFZGdlIGNhc2UuIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRo
IGFuIGFycmF5IHBhcmFtZXRlciBjb250YWluaW5nIGEKLS8vIHNpbmdsZSBlbGVtZW50IGdlbmVy
YXRlcyB0aGUgc2luZ2xlIGVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFs
dWVzSW5TaW5nbGVFbGVtZW50QXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7NDJ9OwotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKGFycmF5KTsKLSAgVmVyaWZ5R2Vu
ZXJhdG9yKGdlbiwgYXJyYXkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2VuZXJh
dGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBmb3IgYW4gU1RMCi0vLyBjb250YWluZXIgKHZlY3Rv
cikuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5WZWN0b3IpIHsKLSAgdHlwZWRlZiA6OnN0
ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0g
IHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNSk7Ci0gIHZhbHVlcy5w
dXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4o
dmFsdWVzKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNSwgOH07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgVmFsdWVzSW4oKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1
ZXNJblRlc3QsIFZhbHVlc0luSXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0
b3I8aW50PiBDb250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgdmFsdWVz
LnB1c2hfYmFjaygzKTsKLSAgdmFsdWVzLnB1c2hfYmFjayg1KTsKLSAgdmFsdWVzLnB1c2hfYmFj
ayg4KTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMu
YmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10g
PSB7MywgNSwgOH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4g
aXRlcmF0b3IgcmFuZ2Ugc3BlY2lmeWluZyBhCi0vLyBzaW5nbGUgdmFsdWUgZ2VuZXJhdGVzIGEg
c2luZ2xlLWVsZW1lbnQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc0luVGVzdCwgVmFsdWVzSW5TaW5n
bGVFbGVtZW50SXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBD
b250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFj
ayg0Mik7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVz
LmJlZ2luKCksIHZhbHVlcy5lbmQoKSk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1td
ID0gezQyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQot
Ly8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgcHJvdmlkZWQgd2l0aCBhbiBlbXB0
eSBpdGVyYXRvciByYW5nZQotLy8gZ2VuZXJhdGVzIGFuIGVtcHR5IHNlcXVlbmNlLgotVEVTVChW
YWx1ZXNJblRlc3QsIFZhbHVlc0luRW1wdHlJdGVyYXRvclJhbmdlKSB7Ci0gIHR5cGVkZWYgOjpz
dGQ6OnZlY3RvcjxpbnQ+IENvbnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigp
LCB2YWx1ZXMuZW5kKCkpOwotCi0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB0aGUgVmFsdWVzKCkgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5j
ZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3MpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8aW50PiBnZW4gPSBWYWx1ZXMoMywgNSwgOCk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3Zh
bHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2VzIGZyb20gZWxlbWVudHMgb2YKLS8vIGRpZmZlcmVudCB0eXBlcyBjb252ZXJ0aWJs
ZSB0byBQYXJhbUdlbmVyYXRvcidzIHBhcmFtZXRlciB0eXBlLgotVEVTVChWYWx1ZXNUZXN0LCBW
YWx1ZXNXb3Jrc0ZvclZhbHVlc09mQ29tcGF0aWJsZVR5cGVzKSB7Ci0gIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPGRvdWJsZT4gZ2VuID0gVmFsdWVzKDMsIDUuMGYsIDguMCk7Ci0KLSAgY29uc3QgZG91
YmxlIGV4cGVjdGVkX3ZhbHVlc1tdID0gezMuMCwgNS4wLCA4LjB9OwotICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dv
cmtzRm9yTWF4TGVuZ3RoTGlzdCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9
IFZhbHVlcygKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4MCwgOTAsIDEwMCwK
LSAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgwLCAxOTAsIDIwMCwK
LSAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgwLCAyOTAsIDMwMCwK
LSAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgwLCAzOTAsIDQwMCwK
LSAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgwLCA0OTAsIDUwMCk7
Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgICAgMTAsIDIwLCAzMCwg
NDAsIDUwLCA2MCwgNzAsIDgwLCA5MCwgMTAwLAotICAgICAgMTEwLCAxMjAsIDEzMCwgMTQwLCAx
NTAsIDE2MCwgMTcwLCAxODAsIDE5MCwgMjAwLAotICAgICAgMjEwLCAyMjAsIDIzMCwgMjQwLCAy
NTAsIDI2MCwgMjcwLCAyODAsIDI5MCwgMzAwLAotICAgICAgMzEwLCAzMjAsIDMzMCwgMzQwLCAz
NTAsIDM2MCwgMzcwLCAzODAsIDM5MCwgNDAwLAotICAgICAgNDEwLCA0MjAsIDQzMCwgNDQwLCA0
NTAsIDQ2MCwgNDcwLCA0ODAsIDQ5MCwgNTAwfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlIHRlc3QuIFRlc3RzIHRoYXQgc2luZ2xl
LXBhcmFtZXRlciBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIHNlcXVlbmNlCi0vLyB3aXRoIHRoZSBz
aW5nbGUgdmFsdWUuCi1URVNUKFZhbHVlc1Rlc3QsIFZhbHVlc1dpdGhTaW5nbGVQYXJhbWV0ZXIp
IHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoNDIpOwotCi0gIGNv
bnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4s
IGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQm9vbCgpIGdlbmVyYXRlcyBz
ZXF1ZW5jZSAoZmFsc2UsIHRydWUpLgotVEVTVChCb29sVGVzdCwgQm9vbFdvcmtzKSB7Ci0gIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGJvb2w+IGdlbiA9IEJvb2woKTsKLQotICBjb25zdCBib29sIGV4
cGVjdGVkX3ZhbHVlc1tdID0ge2ZhbHNlLCB0cnVlfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwg
ZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotIyBpZiBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUZXN0
cyB0aGF0IENvbWJpbmUoKSB3aXRoIHR3byBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhwZWN0
ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFR3b1BhcmFtZXRlcnMp
IHsKLSAgY29uc3QgY2hhciogZm9vID0gImZvbyI7Ci0gIGNvbnN0IGNoYXIqIGJhciA9ICJiYXIi
OwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxjb25zdCBjaGFyKiwgaW50PiA+IGdlbiA9
Ci0gICAgICBDb21iaW5lKFZhbHVlcyhmb28sIGJhciksIFZhbHVlcygzLCA0KSk7Ci0KLSAgdHVw
bGU8Y29uc3QgY2hhciosIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAgbWFrZV90dXBs
ZShmb28sIDMpLCBtYWtlX3R1cGxlKGZvbywgNCksCi0gICAgbWFrZV90dXBsZShiYXIsIDMpLCBt
YWtlX3R1cGxlKGJhciwgNCl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IENvbWJpbmUoKSB3aXRoIHRocmVlIHBhcmFtZXRlcnMg
Z2VuZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJp
bmVXaXRoVGhyZWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGlu
dCwgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMywg
NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZXMoNSwgNikpOwotICB0dXBsZTxpbnQsIGludCwgaW50PiBleHBlY3RlZF92
YWx1ZXNbXSA9IHsKLSAgICBtYWtlX3R1cGxlKDAsIDMsIDUpLCBtYWtlX3R1cGxlKDAsIDMsIDYp
LAotICAgIG1ha2VfdHVwbGUoMCwgNCwgNSksIG1ha2VfdHVwbGUoMCwgNCwgNiksCi0gICAgbWFr
ZV90dXBsZSgxLCAzLCA1KSwgbWFrZV90dXBsZSgxLCAzLCA2KSwKLSAgICBtYWtlX3R1cGxlKDEs
IDQsIDUpLCBtYWtlX3R1cGxlKDEsIDQsIDYpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhw
ZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhl
IGZpcnN0IHBhcmFtZXRlciBnZW5lcmF0aW5nIGEgc2luZ2xlIHZhbHVlCi0vLyBzZXF1ZW5jZSBn
ZW5lcmF0ZXMgYSBzZXF1ZW5jZSB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZXF1YWwgdG8g
dGhlCi0vLyBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHNlcXVlbmNlIGdlbmVyYXRlZCBieSB0
aGUgc2Vjb25kIHBhcmFtZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoRmlyc3RQ
YXJhbWV0ZXJTaW5nbGVWYWx1ZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQs
IGludD4gPiBnZW4gPSBDb21iaW5lKFZhbHVlcyg0MiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDAsIDEpKTsKLQotICB0dXBs
ZTxpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7bWFrZV90dXBsZSg0MiwgMCksIG1ha2Vf
dHVwbGUoNDIsIDEpfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgQ29tYmluZSgpIHdpdGggdGhlIHNlY29uZCBwYXJhbWV0
ZXIgZ2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2Vx
dWVuY2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQotLy8gbnVtYmVy
IG9mIGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIGZpcnN0IHBhcmFt
ZXRlci4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoU2Vjb25kUGFyYW1ldGVyU2luZ2xl
VmFsdWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0g
Q29tYmluZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKSk7Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4
cGVjdGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoMCwgNDIpLCBtYWtlX3R1cGxlKDEsIDQyKX07
Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgd2hlbiB0aGUgZmlyc3QgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNl
LAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28uCi1URVNUKENv
bWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyRW1wdHlSYW5nZSkgewotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludD4gPiBnZW4gPSBDb21iaW5lKFJhbmdlKDAs
IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcygwLCAxKSk7Ci0gIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoZ2VuKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB3aGVuIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHByb2R1Y2VzIGFuIGVtcHR5
IHNlcXVlbmNlLAotLy8gQ29tYmluZSgpIHByb2R1Y2VzIGFuIGVtcHR5IHNlcXVlbmNlLCB0b28u
Ci1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlckVtcHR5UmFuZ2Up
IHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmlu
ZShWYWx1ZXMoMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmFuZ2UoMSwgMSkpOwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdl
bik7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVzdHMgdGhhdCBjb21iaW5lIHdvcmtzIHdpdGggdGhl
IG1heGltdW0gbnVtYmVyCi0vLyBvZiBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSBHb29nbGUgVGVz
dCAoY3VycmVudGx5IDEwKS4KLVRFU1QoQ29tYmluZVRlc3QsIENvbWJpbmVXaXRoTWF4TnVtYmVy
T2ZQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIqIGZvbyA9ICJmb28iOwotICBjb25zdCBjaGFy
KiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShWYWx1ZXMoZm9vLCBiYXIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
cygxKSwgVmFsdWVzKDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygzKSwgVmFsdWVzKDQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg1KSwgVmFsdWVzKDYp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlcyg3KSwgVmFsdWVzKDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg5KSk7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+Ci0gICAgICBleHBl
Y3RlZF92YWx1ZXNbXSA9IHttYWtlX3R1cGxlKGZvbywgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwg
OSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3R1cGxlKGJhciwgMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSl9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1
ZXMpOwotfQotCi0jIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi0vLyBUZXN0cyB0aGF0
IGFuIGdlbmVyYXRvciBwcm9kdWNlcyBjb3JyZWN0IHNlcXVlbmNlIGFmdGVyIGJlaW5nCi0vLyBh
c3NpZ25lZCBmcm9tIGFub3RoZXIgZ2VuZXJhdG9yLgotVEVTVChQYXJhbUdlbmVyYXRvclRlc3Qs
IEFzc2lnbm1lbnRXb3JrcykgewotICBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlcygx
LCAyKTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4yID0gVmFsdWVzKDMsIDQpOwot
ICBnZW4gPSBnZW4yOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA0fTsK
LSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRlc3RzIGFyZSBleHBhbmRlZCBhbmQgcnVuIGFzIHNwZWNp
ZmllZDoKLS8vIG9uZSB0ZXN0IHBlciBlbGVtZW50IGZyb20gdGhlIHNlcXVlbmNlIHByb2R1Y2Vk
IGJ5IHRoZSBnZW5lcmF0b3IKLS8vIHNwZWNpZmllZCBpbiBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UC4gSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRoZSB0ZXN0J3MKLS8vIGZpeHR1cmUgY29uc3RydWN0
b3IsIFNldFVwKCksIGFuZCBUZWFyRG93bigpIGhhdmUgcnVuIGFuZCBoYXZlIGJlZW4KLS8vIHN1
cHBsaWVkIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4KLQotLy8gVGhlIHVzZSBvZiBlbnZp
cm9ubWVudCBvYmplY3QgYWxsb3dzIGRldGVjdGlvbiBvZiB0aGUgY2FzZSB3aGVyZSBubyB0ZXN0
Ci0vLyBjYXNlIGZ1bmN0aW9uYWxpdHkgaXMgcnVuIGF0IGFsbC4gSW4gdGhpcyBjYXNlIFRlc3RD
YXNlVGVhckRvd24gd2lsbCBub3QKLS8vIGJlIGFibGUgdG8gZGV0ZWN0IG1pc3NpbmcgdGVzdHMs
IG5hdHVyYWxseS4KLXRlbXBsYXRlIDxpbnQga0V4cGVjdGVkQ2FsbHM+Ci1jbGFzcyBUZXN0R2Vu
ZXJhdGlvbkVudmlyb25tZW50IDogcHVibGljIDo6dGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1
YmxpYzoKLSAgc3RhdGljIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQqIEluc3RhbmNlKCkgewot
ICAgIHN0YXRpYyBUZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBpbnN0YW5jZSA9IG5ldyBUZXN0
R2VuZXJhdGlvbkVudmlyb25tZW50OwotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotCi0gIHZv
aWQgRml4dHVyZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKSB7IGZpeHR1cmVfY29uc3RydWN0b3JfY291
bnRfKys7IH0KLSAgdm9pZCBTZXRVcEV4ZWN1dGVkKCkgeyBzZXRfdXBfY291bnRfKys7IH0KLSAg
dm9pZCBUZWFyRG93bkV4ZWN1dGVkKCkgeyB0ZWFyX2Rvd25fY291bnRfKys7IH0KLSAgdm9pZCBU
ZXN0Qm9keUV4ZWN1dGVkKCkgeyB0ZXN0X2JvZHlfY291bnRfKys7IH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgLy8gSWYgYWxsIE11bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0
IHRlc3RzIGhhdmUgYmVlbiBkZS1zZWxlY3RlZAotICAgIC8vIGJ5IHRoZSBmaWx0ZXIgZmxhZywg
dGhlIGZvbGxvd2luZyBjaGVja3MgbWFrZSBubyBzZW5zZS4KLSAgICBib29sIHBlcmZvcm1fY2hl
Y2sgPSBmYWxzZTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0V4cGVjdGVkQ2FsbHM7ICsr
aSkgewotICAgICAgTWVzc2FnZSBtc2c7Ci0gICAgICBtc2cgPDwgIlRlc3RzRXhwYW5kZWRBbmRS
dW4vIiA8PCBpOwotICAgICAgaWYgKFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3Qo
Ci0gICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlv
blRlc3QiLAotICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSkpIHsKLSAgICAg
ICAgcGVyZm9ybV9jaGVjayA9IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmIChwZXJmb3Jt
X2NoZWNrKSB7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIGZpeHR1cmVfY29uc3Ry
dWN0b3JfY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIGNvbnN0cnVjdG9yIG9mIFBhcmFt
VGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVl
biBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgc2V0
X3VwX2NvdW50XykKLSAgICAgICAgICA8PCAiRml4dHVyZSBTZXRVcCBtZXRob2Qgb2YgUGFyYW1U
ZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVu
IHJ1biBhcyBleHBlY3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZWFy
X2Rvd25fY291bnRfKQotICAgICAgICAgIDw8ICJGaXh0dXJlIFRlYXJEb3duIG1ldGhvZCBvZiBQ
YXJhbVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90
IGJlZW4gcnVuIGFzIGV4cGVjdGVkLiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMs
IHRlc3RfYm9keV9jb3VudF8pCi0gICAgICAgICAgPDwgIlRlc3QgaW4gUGFyYW1UZXN0R2VuZXJh
dGlvblRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBl
eHBlY3RlZC4iOwotICAgIH0KLSAgfQotCi0gcHJpdmF0ZToKLSAgVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCgpIDogZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3VudF8oMCksIHNldF91cF9jb3VudF8o
MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJfZG93bl9jb3VudF8oMCks
IHRlc3RfYm9keV9jb3VudF8oMCkge30KLQotICBpbnQgZml4dHVyZV9jb25zdHJ1Y3Rvcl9jb3Vu
dF87Ci0gIGludCBzZXRfdXBfY291bnRfOwotICBpbnQgdGVhcl9kb3duX2NvdW50XzsKLSAgaW50
IHRlc3RfYm9keV9jb3VudF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhU
ZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KTsKLX07Ci0KLWNvbnN0IGludCB0ZXN0X2dlbmVyYXRp
b25fcGFyYW1zW10gPSB7MzYsIDQyLCA3Mn07Ci0KLWNsYXNzIFRlc3RHZW5lcmF0aW9uVGVzdCA6
IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4gewotIHB1YmxpYzoKLSAgZW51bSB7Ci0gICAgUEFS
QU1FVEVSX0NPVU5UID0KLSAgICAgICAgc2l6ZW9mKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpL3Np
emVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zWzBdKQotICB9OwotCi0gIHR5cGVkZWYgVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudDxQQVJBTUVURVJfQ09VTlQ+IEVudmlyb25tZW50OwotCi0gIFRl
c3RHZW5lcmF0aW9uVGVzdCgpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+Rml4dHVy
ZUNvbnN0cnVjdG9yRXhlY3V0ZWQoKTsKLSAgICBjdXJyZW50X3BhcmFtZXRlcl8gPSBHZXRQYXJh
bSgpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBFbnZpcm9ubWVudDo6SW5z
dGFuY2UoKS0+U2V0VXBFeGVjdXRlZCgpOwotICAgIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRl
cl8sIEdldFBhcmFtKCkpOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBF
bnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVhckRvd25FeGVjdXRlZCgpOwotICAgIEVYUEVDVF9F
UShjdXJyZW50X3BhcmFtZXRlcl8sIEdldFBhcmFtKCkpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBib29sIGFsbF90ZXN0c19pbl90ZXN0X2Nhc2Vfc2VsZWN0
ZWQgPSB0cnVlOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQQVJBTUVURVJfQ09VTlQ7ICsr
aSkgewotICAgICAgTWVzc2FnZSB0ZXN0X25hbWU7Ci0gICAgICB0ZXN0X25hbWUgPDwgIlRlc3Rz
RXhwYW5kZWRBbmRSdW4vIiA8PCBpOwotICAgICAgaWYgKCAhVW5pdFRlc3RPcHRpb25zOjpGaWx0
ZXJNYXRjaGVzVGVzdCgKLSAgICAgICAgICAgICAgICAiVGVzdEV4cGFuc2lvbk1vZHVsZS9NdWx0
aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCIsCi0gICAgICAgICAgICAgICAgdGVzdF9uYW1lLkdldFN0
cmluZygpKSkgewotICAgICAgICBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gZmFs
c2U7Ci0gICAgICB9Ci0gICAgfQotICAgIEVYUEVDVF9UUlVFKGFsbF90ZXN0c19pbl90ZXN0X2Nh
c2Vfc2VsZWN0ZWQpCi0gICAgICAgIDw8ICJXaGVuIHJ1bm5pbmcgdGhlIFRlc3RHZW5lcmF0aW9u
VGVzdCB0ZXN0IGNhc2UgYWxsIG9mIGl0cyB0ZXN0c1xuIgotICAgICAgICA8PCAibXVzdCBiZSBz
ZWxlY3RlZCBieSB0aGUgZmlsdGVyIGZsYWcgZm9yIHRoZSB0ZXN0IGNhc2UgdG8gcGFzcy5cbiIK
LSAgICAgICAgPDwgIklmIG5vdCBhbGwgb2YgdGhlbSBhcmUgZW5hYmxlZCwgd2UgY2FuJ3QgcmVs
aWFibHkgY29uY2x1ZGVcbiIKLSAgICAgICAgPDwgInRoYXQgdGhlIGNvcnJlY3QgbnVtYmVyIG9m
IHRlc3RzIGhhdmUgYmVlbiBnZW5lcmF0ZWQuIjsKLQotICAgIGNvbGxlY3RlZF9wYXJhbWV0ZXJz
Xy5jbGVhcigpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAg
ICB2ZWN0b3I8aW50PiBleHBlY3RlZF92YWx1ZXModGVzdF9nZW5lcmF0aW9uX3BhcmFtcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9nZW5lcmF0aW9uX3BhcmFtcyArIFBB
UkFNRVRFUl9DT1VOVCk7Ci0gICAgLy8gVGVzdCBleGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJh
bnRlZWQgYnkgR29vZ2xlIFRlc3QsCi0gICAgLy8gc28gdGhlIG9yZGVyIG9mIHZhbHVlcyBpbiBj
b2xsZWN0ZWRfcGFyYW1ldGVyc18gY2FuIGJlCi0gICAgLy8gZGlmZmVyZW50IGFuZCB3ZSBoYXZl
IHRvIHNvcnQgdG8gY29tcGFyZS4KLSAgICBzb3J0KGV4cGVjdGVkX3ZhbHVlcy5iZWdpbigpLCBl
eHBlY3RlZF92YWx1ZXMuZW5kKCkpOwotICAgIHNvcnQoY29sbGVjdGVkX3BhcmFtZXRlcnNfLmJl
Z2luKCksIGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5lbmQoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShj
b2xsZWN0ZWRfcGFyYW1ldGVyc18gPT0gZXhwZWN0ZWRfdmFsdWVzKTsKLSAgfQotCi0gcHJvdGVj
dGVkOgotICBpbnQgY3VycmVudF9wYXJhbWV0ZXJfOwotICBzdGF0aWMgdmVjdG9yPGludD4gY29s
bGVjdGVkX3BhcmFtZXRlcnNfOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhUZXN0R2VuZXJhdGlvblRlc3QpOwotfTsKLXZlY3RvcjxpbnQ+IFRlc3RHZW5l
cmF0aW9uVGVzdDo6Y29sbGVjdGVkX3BhcmFtZXRlcnNfOwotCi1URVNUX1AoVGVzdEdlbmVyYXRp
b25UZXN0LCBUZXN0c0V4cGFuZGVkQW5kUnVuKSB7Ci0gIEVudmlyb25tZW50OjpJbnN0YW5jZSgp
LT5UZXN0Qm9keUV4ZWN1dGVkKCk7Ci0gIEVYUEVDVF9FUShjdXJyZW50X3BhcmFtZXRlcl8sIEdl
dFBhcmFtKCkpOwotICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18ucHVzaF9iYWNrKEdldFBhcmFtKCkp
OwotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVGVzdEV4cGFuc2lvbk1vZHVsZSwgVGVzdEdl
bmVyYXRpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzSW4odGVzdF9nZW5l
cmF0aW9uX3BhcmFtcykpOwotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgZWxlbWVu
dCBzZXF1ZW5jZSAodGhpcmQgcGFyYW1ldGVyIG9mCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCkgaXMgZXZhbHVhdGVkIGluIEluaXRHb29nbGVUZXN0KCkgYW5kIG5laXRoZXIgYXQKLS8vIHRo
ZSBjYWxsIHNpdGUgb2YgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agbm9yIGluIFJVTl9BTExfVEVT
VFMoKS4gIEZvcgotLy8gdGhhdCwgd2UgZGVjbGFyZSBwYXJhbV92YWx1ZV8gdG8gYmUgYSBzdGF0
aWMgbWVtYmVyIG9mCi0vLyBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCBhbmQgaW5pdGlhbGl6ZSBp
dCB0byAwLiAgV2Ugc2V0IGl0IHRvIDEgaW4KLS8vIG1haW4oKSwganVzdCBiZWZvcmUgaW52b2Nh
dGlvbiBvZiBJbml0R29vZ2xlVGVzdCgpLiAgQWZ0ZXIgY2FsbGluZwotLy8gSW5pdEdvb2dsZVRl
c3QoKSwgd2Ugc2V0IHRoZSB2YWx1ZSB0byAyLiAgSWYgdGhlIHNlcXVlbmNlIGlzIGV2YWx1YXRl
ZAotLy8gYmVmb3JlIG9yIGFmdGVyIEluaXRHb29nbGVUZXN0LCBJTlNUQU5USUFURV9URVNUX0NB
U0VfUCB3aWxsIGNyZWF0ZSBhCi0vLyB0ZXN0IHdpdGggcGFyYW1ldGVyIG90aGVyIHRoYW4gMSwg
YW5kIHRoZSB0ZXN0IGJvZHkgd2lsbCBmYWlsIHRoZQotLy8gYXNzZXJ0aW9uLgotY2xhc3MgR2Vu
ZXJhdG9yRXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJs
aWM6Ci0gIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWUoKSB7IHJldHVybiBwYXJhbV92YWx1ZV87IH0K
LSAgc3RhdGljIHZvaWQgc2V0X3BhcmFtX3ZhbHVlKGludCBwYXJhbV92YWx1ZSkgeyBwYXJhbV92
YWx1ZV8gPSBwYXJhbV92YWx1ZTsgfQotCi0gcHJpdmF0ZToKLSAgc3RhdGljIGludCBwYXJhbV92
YWx1ZV87Ci19OwotaW50IEdlbmVyYXRvckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZV8gPSAw
OwotCi1URVNUX1AoR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QsIEdlbmVyYXRvcnNFdmFsdWF0ZWRJ
bk1haW4pIHsKLSAgRVhQRUNUX0VRKDEsIEdldFBhcmFtKCkpOwotfQotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoR2VuRXZhbE1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEdlbmVyYXRv
ckV2YWx1YXRpb25UZXN0OjpwYXJhbV92YWx1ZSgpKSk7Ci0KLS8vIFRlc3RzIHRoYXQgZ2VuZXJh
dG9ycyBkZWZpbmVkIGluIGEgZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXQgYXJlCi0vLyBmdW5j
dGlvbmFsLiBHZW5lcmF0b3IgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRl
c3RfdGVzdDIuY2MuCi1leHRlcm4gUGFyYW1HZW5lcmF0b3I8aW50PiBleHRlcm5fZ2VuOwotY2xh
c3MgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7fTsK
LVRFU1RfUChFeHRlcm5hbEdlbmVyYXRvclRlc3QsIEV4dGVybmFsR2VuZXJhdG9yKSB7Ci0gIC8v
IFNlcXVlbmNlIHByb2R1Y2VkIGJ5IGV4dGVybl9nZW4gY29udGFpbnMgb25seSBhIHNpbmdsZSB2
YWx1ZQotICAvLyB3aGljaCB3ZSB2ZXJpZnkgaGVyZS4KLSAgRVhQRUNUX0VRKEdldFBhcmFtKCks
IDMzKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEV4dGVybmFsR2VuZXJhdG9yTW9kdWxl
LAotICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxHZW5lcmF0b3JUZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0ZXJuX2dlbik7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgdHJhbnNsYXRpb24KLS8vIHVu
aXQgYW5kIGluc3RhbnRpYXRlZCBpbiBhbm90aGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50
aWF0ZWQgaW4KLS8vIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdDIuY2MuIEV4dGVybmFsSW5zdGFudGlh
dGlvblRlc3QgZml4dHVyZSBjbGFzcyBpcwotLy8gZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0
X3Rlc3QuaC4KLVRFU1RfUChFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0LCBJc011bHRpcGxlT2Yz
MykgewotICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDMzKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBtdWx0
aXBsZQotLy8gZ2VuZXJhdG9ycy4KLWNsYXNzIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9QKE11bHRpcGxlSW5zdGFudGlhdGlv
blRlc3QsIEFsbG93c011bHRpcGxlSW5zdGFuY2VzKSB7Ci19Ci1JTlNUQU5USUFURV9URVNUX0NB
U0VfUChTZXF1ZW5jZTEsIE11bHRpcGxlSW5zdGFudGlhdGlvblRlc3QsIFZhbHVlcygxLCAyKSk7
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTZXF1ZW5jZTIsIE11bHRpcGxlSW5zdGFudGlhdGlv
blRlc3QsIFJhbmdlKDMsIDUpKTsKLQotLy8gVGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVz
dCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQKLS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVu
aXRzLiBUaGlzIHRlc3Qgd2lsbCBiZSBpbnN0YW50aWF0ZWQKLS8vIGhlcmUgYW5kIGluIGd0ZXN0
LXBhcmFtLXRlc3RfdGVzdDIuY2MuCi0vLyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGF0
aW9uVW5pdHNUZXN0IGZpeHR1cmUgY2xhc3MKLS8vIGlzIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmguCi1URVNUX1AoSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhaW9uVW5p
dHNUZXN0LCBJc011bHRpcGxlT2Y0MikgewotICBFWFBFQ1RfRVEoMCwgR2V0UGFyYW0oKSAlIDQy
KTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyg0MiwgNDIqMikpOwotCi0vLyBUZXN0cyB0aGF0
IGVhY2ggaXRlcmF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgdGVzdCBydW5zIGluIGEgc2VwYXJhdGUg
dGVzdAotLy8gb2JqZWN0LgotY2xhc3MgU2VwYXJhdGVJbnN0YW5jZVRlc3QgOiBwdWJsaWMgVGVz
dFdpdGhQYXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIFNlcGFyYXRlSW5zdGFuY2VUZXN0KCkgOiBj
b3VudF8oMCkge30KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIEVY
UEVDVF9HRShnbG9iYWxfY291bnRfLCAyKQotICAgICAgICA8PCAiSWYgc29tZSAoYnV0IG5vdCBh
bGwpIFNlcGFyYXRlSW5zdGFuY2VUZXN0IHRlc3RzIGhhdmUgYmVlbiAiCi0gICAgICAgIDw8ICJm
aWx0ZXJlZCBvdXQgdGhpcyB0ZXN0IHdpbGwgZmFpbC4gTWFrZSBzdXJlIHRoYXQgYWxsICIKLSAg
ICAgICAgPDwgIkdlbmVyYXRvckV2YWx1YXRpb25UZXN0IGFyZSBzZWxlY3RlZCBvciBkZS1zZWxl
Y3RlZCB0b2dldGhlciAiCi0gICAgICAgIDw8ICJieSB0aGUgdGVzdCBmaWx0ZXIuIjsKLSAgfQot
Ci0gcHJvdGVjdGVkOgotICBpbnQgY291bnRfOwotICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87
Ci19OwotaW50IFNlcGFyYXRlSW5zdGFuY2VUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKLQotVEVT
VF9QKFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBUZXN0c1J1bkluU2VwYXJhdGVJbnN0YW5jZXMpIHsK
LSAgRVhQRUNUX0VRKDAsIGNvdW50XysrKTsKLSAgZ2xvYmFsX2NvdW50XysrOwotfQotSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoRm91ckVsZW1TZXF1ZW5jZSwgU2VwYXJhdGVJbnN0YW5jZVRlc3Qs
IFJhbmdlKDEsIDQpKTsKLQotLy8gVGVzdHMgdGhhdCBhbGwgaW5zdGFudGlhdGlvbnMgb2YgYSB0
ZXN0IGhhdmUgbmFtZWQgYXBwcm9wcmlhdGVseS4gVGVzdAotLy8gZGVmaW5lZCB3aXRoIFRFU1Rf
UChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKSBhbmQgaW5zdGFudGlhdGVkIHdpdGgKLS8vIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKFNlcXVlbmNlTmFtZSwgVGVzdENhc2VOYW1lLCBnZW5lcmF0b3Ip
IG11c3QgYmUgbmFtZWQKLS8vIFNlcXVlbmNlTmFtZS9UZXN0Q2FzZU5hbWUuVGVzdE5hbWUvaSwg
d2hlcmUgaSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUKLS8vIHNlcXVlbmNlIGVsZW1lbnQg
dXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgdGVzdC4KLWNsYXNzIE5hbWluZ1Rlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotCi1URVNUX1AoTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRD
b3JyZWN0TmFtZXNBbmRQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8q
IGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJaZXJvVG9GaXZlU2Vx
dWVuY2UvTmFtaW5nVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0KLSAgTWVz
c2FnZSBpbmRleF9zdHJlYW07Ci0gIGluZGV4X3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0
TmFtZXNBbmRQYXJhbWV0ZXJzLyIgPDwgR2V0UGFyYW0oKTsKLSAgRVhQRUNUX1NUUkVRKGluZGV4
X3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0X2luZm8tPm5hbWUoKSk7Ci0KLSAgRVhQ
RUNUX0VRKDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52
YWx1ZV9wYXJhbSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoWmVyb1RvRml2ZVNl
cXVlbmNlLCBOYW1pbmdUZXN0LCBSYW5nZSgwLCA1KSk7Ci0KLS8vIFRlc3RzIHRoYXQgdXNlciBz
dXBwbGllZCBjdXN0b20gcGFyYW1ldGVyIG5hbWVzIGFyZSB3b3JraW5nIGNvcnJlY3RseS4KLS8v
IFJ1bnMgdGhlIHRlc3Qgd2l0aCBhIGJ1aWx0aW4gaGVscGVyIG1ldGhvZCB3aGljaCB1c2VzIFBy
aW50VG9TdHJpbmcsCi0vLyBhcyB3ZWxsIGFzIGEgY3VzdG9tIGZ1bmN0aW9uIGFuZCBjdXN0b20g
ZnVuY3RvciB0byBlbnN1cmUgYWxsIHBvc3NpYmxlCi0vLyB1c2VzIHdvcmsgY29ycmVjdGx5Lgot
Y2xhc3MgQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6
OnN0cmluZz4ge307Ci1URVNUX1AoQ3VzdG9tRnVuY3Rvck5hbWluZ1Rlc3QsIEN1c3RvbVRlc3RO
YW1lcykge30KLQotc3RydWN0IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IgewotICBzdGQ6OnN0cmlu
ZyBvcGVyYXRvcigpKGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4m
IGluZm8pIHsKLSAgICByZXR1cm4gaW5mby5wYXJhbTsKLSAgfQotfTsKLQotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoQ3VzdG9tUGFyYW1OYW1lRnVuY3RvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJGdW5jdG9yTmFtZSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IEN1c3RvbVBhcmFtTmFtZUZ1bmN0b3IoKSk7Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFs
bEFsbG93ZWRDaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRnVuY3Rv
ck5hbWluZ1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoImFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIw
MTIzNDU2Nzg5MF8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbVBhcmFtTmFtZUZ1
bmN0b3IoKSk7Ci0KLWlubGluZSBzdGQ6OnN0cmluZyBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbigK
LSAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmZvKSB7
Ci0gIHJldHVybiBpbmZvLnBhcmFtOwotfQotCi1jbGFzcyBDdXN0b21GdW5jdGlvbk5hbWluZ1Rl
c3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307Ci1URVNUX1AoQ3VzdG9t
RnVuY3Rpb25OYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9Ci0KLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEN1c3RvbVBhcmFtTmFtZUZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJGdW5jdGlvbk5hbWUiKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDdXN0b21QYXJhbU5hbWVGdW5jdGlvbik7Ci0KLSNpZiBHVEVTVF9MQU5HX0NYWDExCi0KLS8v
IFRlc3QgY3VzdG9tIG5hbWluZyB3aXRoIGEgbGFtYmRhCi0KLWNsYXNzIEN1c3RvbUxhbWJkYU5h
bWluZ1Rlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxzdGQ6OnN0cmluZz4ge307Ci1URVNUX1Ao
Q3VzdG9tTGFtYmRhTmFtaW5nVGVzdCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQotCi1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChDdXN0b21QYXJhbU5hbWVMYW1iZGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDdXN0b21MYW1iZGFOYW1pbmdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFs
dWVzKHN0ZDo6c3RyaW5nKCJMYW1iZGFOYW1lIikpLAotICAgICAgICAgICAgICAgICAgICAgICAg
W10oY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5mby5wYXJhbTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwotCi0jZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLQotVEVTVChD
dXN0b21OYW1pbmdUZXN0LCBDaGVja05hbWVSZWdpc3RyeSkgewotICA6OnRlc3Rpbmc6OlVuaXRU
ZXN0KiB1bml0X3Rlc3QgPSA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotICBz
dGQ6OnNldDxzdGQ6OnN0cmluZz4gdGVzdF9uYW1lczsKLSAgZm9yIChpbnQgY2FzZV9udW0gPSAw
OwotICAgICAgIGNhc2VfbnVtIDwgdW5pdF90ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsK
LSAgICAgICArK2Nhc2VfbnVtKSB7Ci0gICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0Q2FzZSogdGVz
dF9jYXNlID0gdW5pdF90ZXN0LT5HZXRUZXN0Q2FzZShjYXNlX251bSk7Ci0gICAgZm9yIChpbnQg
dGVzdF9udW0gPSAwOwotICAgICAgICAgdGVzdF9udW0gPCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3Rf
Y291bnQoKTsKLSAgICAgICAgICsrdGVzdF9udW0pIHsKLSAgICAgIGNvbnN0IDo6dGVzdGluZzo6
VGVzdEluZm8qIHRlc3RfaW5mbyA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8odGVzdF9udW0pOwot
ICAgICAgdGVzdF9uYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcodGVzdF9pbmZvLT5uYW1lKCkpKTsK
LSAgICB9Ci0gIH0KLSAgRVhQRUNUX0VRKDF1LCB0ZXN0X25hbWVzLmNvdW50KCJDdXN0b21UZXN0
TmFtZXMvRnVuY3Rvck5hbWUiKSk7Ci0gIEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgi
Q3VzdG9tVGVzdE5hbWVzL0Z1bmN0aW9uTmFtZSIpKTsKLSNpZiBHVEVTVF9MQU5HX0NYWDExCi0g
IEVYUEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0xhbWJkYU5h
bWUiKSk7Ci0jZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLX0KLQotLy8gVGVzdCBhIG51bWVy
aWMgbmFtZSB0byBlbnN1cmUgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB3b3JrcyBjb3JyZWN0bHku
Ci0KLWNsYXNzIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
aW50PiB7fTsKLQotVEVTVF9QKEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENv
cnJlY3ROYW1lcykgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOwotICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0gIHRlc3RfbmFtZV9zdHJl
YW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKLSAgRVhQRUNU
X1NUUkVRKHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5u
YW1lKCkpOwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tSW50ZWdlck5hbWluZ1Rlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBSYW5nZSgwLCA1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVz
dGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKTsKLQotLy8gVGVzdCBhIGN1c3RvbSBzdHJ1
Y3Qgd2l0aCBQcmludFRvU3RyaW5nLgotCi1zdHJ1Y3QgQ3VzdG9tU3RydWN0IHsKLSAgZXhwbGlj
aXQgQ3VzdG9tU3RydWN0KGludCB2YWx1ZSkgOiB4KHZhbHVlKSB7fQotICBpbnQgeDsKLX07Ci0K
LXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgQ3Vz
dG9tU3RydWN0JiB2YWwpIHsKLSAgc3RyZWFtIDw8IHZhbC54OwotICByZXR1cm4gc3RyZWFtOwot
fQotCi1jbGFzcyBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08
Q3VzdG9tU3RydWN0PiB7fTsKLQotVEVTVF9QKEN1c3RvbVN0cnVjdE5hbWluZ1Rlc3QsIFRlc3Rz
UmVwb3J0Q29ycmVjdE5hbWVzKSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1
cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIE1lc3NhZ2UgdGVzdF9uYW1lX3N0cmVhbTsKLSAgdGVzdF9u
YW1lX3N0cmVhbSA8PCAiVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMvIiA8PCBHZXRQYXJhbSgpOwot
ICBFWFBFQ1RfU1RSRVEodGVzdF9uYW1lX3N0cmVhbS5HZXRTdHJpbmcoKS5jX3N0cigpLCB0ZXN0
X2luZm8tPm5hbWUoKSk7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFByaW50VG9TdHJp
bmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEN1c3RvbVN0cnVjdCgwKSwgQ3VzdG9tU3RydWN0
KDEpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZ1Bh
cmFtTmFtZSgpKTsKLQotLy8gVGVzdCB0aGF0IHVzaW5nIGEgc3RhdGVmdWwgcGFyYW1ldGVyIG5h
bWluZyBmdW5jdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KLQotc3RydWN0IFN0YXRlZnVsTmFtaW5n
RnVuY3RvciB7Ci0gIFN0YXRlZnVsTmFtaW5nRnVuY3RvcigpIDogc3VtKDApIHt9Ci0gIHN0ZDo6
c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPGludD4mIGlu
Zm8pIHsKLSAgICBpbnQgdmFsdWUgPSBpbmZvLnBhcmFtICsgc3VtOwotICAgIHN1bSArPSBpbmZv
LnBhcmFtOwotICAgIHJldHVybiA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcodmFsdWUpOwotICB9
Ci0gIGludCBzdW07Ci19OwotCi1jbGFzcyBTdGF0ZWZ1bE5hbWluZ1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewotIHByb3RlY3RlZDoKLSAgU3RhdGVmdWxOYW1p
bmdUZXN0KCkgOiBzdW1fKDApIHt9Ci0gIGludCBzdW1fOwotfTsKLQotVEVTVF9QKFN0YXRlZnVs
TmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKLSAgY29uc3QgOjp0ZXN0aW5n
OjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgc3VtXyArPSBHZXRQYXJhbSgp
OwotICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0gIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRl
c3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgc3VtXzsKLSAgRVhQRUNUX1NUUkVRKHRlc3RfbmFt
ZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwotfQotCi1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBSYW5nZSgwLCA1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlZnVsTmFtaW5nRnVu
Y3RvcigpKTsKLQotLy8gQ2xhc3MgdGhhdCBjYW5ub3QgYmUgc3RyZWFtZWQgaW50byBhbiBvc3Ry
ZWFtLiAgSXQgbmVlZHMgdG8gYmUgY29weWFibGUKLS8vIChhbmQsIGluIGNhc2Ugb2YgTVNWQywg
YWxzbyBhc3NpZ25hYmxlKSBpbiBvcmRlciB0byBiZSBhIHRlc3QgcGFyYW1ldGVyCi0vLyB0eXBl
LiAgSXRzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBk
byBleGFjdGx5Ci0vLyB3aGF0IHdlIG5lZWQuCi1jbGFzcyBVbnN0cmVhbWFibGUgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgVW5zdHJlYW1hYmxlKGludCB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9
Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotY2xhc3MgQ29tbWVudFRlc3QgOiBw
dWJsaWMgVGVzdFdpdGhQYXJhbTxVbnN0cmVhbWFibGU+IHt9OwotCi1URVNUX1AoQ29tbWVudFRl
c3QsIFRlc3RzQ29ycmVjdGx5UmVwb3J0VW5zdHJlYW1hYmxlUGFyYW1zKSB7Ci0gIGNvbnN0IDo6
dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0KLSAgRVhQRUNUX0VR
KDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKSwgdGVzdF9pbmZvLT52YWx1ZV9w
YXJhbSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbldpdGhD
b21tZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKFVuc3RyZWFtYWJsZSgxKSkpOwotCi0vLyBWZXJpZnkgdGhh
dCB3ZSBjYW4gY3JlYXRlIGEgaGllcmFyY2h5IG9mIHRlc3QgZml4dHVyZXMsIHdoZXJlIHRoZSBi
YXNlCi0vLyBjbGFzcyBmaXh0dXJlIGlzIG5vdCBwYXJhbWV0ZXJpemVkIGFuZCB0aGUgZGVyaXZl
ZCBjbGFzcyBpcy4gSW4gdGhpcyBjYXNlCi0vLyBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QgaW5o
ZXJpdHMgZnJvbSBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QuICBXZQotLy8gcGVyZm9ybSBzaW1w
bGUgdGVzdHMgb24gYm90aC4KLWNsYXNzIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0
KCkgOiBuXygxNykgeyB9Ci0gcHJvdGVjdGVkOgotICBpbnQgbl87Ci19OwotCi1jbGFzcyBQYXJh
bWV0ZXJpemVkRGVyaXZlZFRlc3QgOiBwdWJsaWMgTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPGludD4gewotIHByb3RlY3RlZDoKLSAgUGFyYW1ldGVyaXplZERlcml2ZWRU
ZXN0KCkgOiBjb3VudF8oMCkgeyB9Ci0gIGludCBjb3VudF87Ci0gIHN0YXRpYyBpbnQgZ2xvYmFs
X2NvdW50XzsKLX07Ci0KLWludCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3Q6Omdsb2JhbF9jb3Vu
dF8gPSAwOwotCi1URVNUX0YoTm9uUGFyYW1ldGVyaXplZEJhc2VUZXN0LCBGaXh0dXJlSXNJbml0
aWFsaXplZCkgewotICBFWFBFQ1RfRVEoMTcsIG5fKTsKLX0KLQotVEVTVF9QKFBhcmFtZXRlcml6
ZWREZXJpdmVkVGVzdCwgU2Vlc1NlcXVlbmNlKSB7Ci0gIEVYUEVDVF9FUSgxNywgbl8pOwotICBF
WFBFQ1RfRVEoMCwgY291bnRfKyspOwotICBFWFBFQ1RfRVEoR2V0UGFyYW0oKSwgZ2xvYmFsX2Nv
dW50XysrKTsKLX0KLQotY2xhc3MgUGFyYW1ldGVyaXplZERlYXRoVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7IH07Ci0KLVRFU1RfRihQYXJhbWV0ZXJpemVkRGVh
dGhUZXN0LCBHZXRQYXJhbURpZXNGcm9tVGVzdEYpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChHZXRQYXJhbSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuKiB2YWx1ZS1w
YXJhbWV0ZXJpemVkIHRlc3QgLioiKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUmFu
Z2VaZXJvVG9GaXZlLCBQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFJhbmdlKDAsIDUpKTsKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi1URVNUKENvbXBpbGVUZXN0LCBDb21i
aW5lSXNEZWZpbmVkT25seVdoZW5HdGVzdEhhc1BhcmFtVGVzdElzRGVmaW5lZCkgewotI2lmIEdU
RVNUX0hBU19DT01CSU5FICYmICFHVEVTVF9IQVNfUEFSQU1fVEVTVAotICBGQUlMKCkgPDwgIkdU
RVNUX0hBU19DT01CSU5FIGlzIGRlZmluZWQgd2hpbGUgR1RFU1RfSEFTX1BBUkFNX1RFU1QgaXMg
bm90XG4iCi0jZW5kaWYKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgLy8gVXNlZCBpbiBUZXN0R2VuZXJhdGlvblRlc3Qg
dGVzdCBjYXNlLgotICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoVGVzdEdlbmVyYXRpb25UZXN0
OjpFbnZpcm9ubWVudDo6SW5zdGFuY2UoKSk7Ci0gIC8vIFVzZWQgaW4gR2VuZXJhdG9yRXZhbHVh
dGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHRoZSB1cGRhdGVkIHZhbHVlCi0gIC8vIHdp
bGwgYmUgcGlja2VkIHVwIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluIEdlbmVyYXRvckV2YWx1
YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3BhcmFtX3ZhbHVlKDEp
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIDo6dGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgLy8g
VXNlZCBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCB0ZXN0IGNhc2UuIFRlc3RzIHRoYXQgdmFs
dWUgdXBkYXRlZAotICAvLyBoZXJlIHdpbGwgTk9UIGJlIHVzZWQgZm9yIGluc3RhbnRpYXRpbmcg
dGVzdHMgaW4KLSAgLy8gR2VuZXJhdG9yRXZhbHVhdGlvblRlc3QuCi0gIEdlbmVyYXRvckV2YWx1
YXRpb25UZXN0OjpzZXRfcGFyYW1fdmFsdWUoMik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCi0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LXBhcmFtLXRlc3RfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmVh
MTIyYjEwYjlmOWNkNzI0OTZlMTg5ZWNhOTBiMmJjZGZjY2VjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdF90ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29v
Z2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1l
d29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBwcm92aWRlcyBjbGFz
c2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5Ci0vLyBmb3IgdGVzdGluZyBHb29nbGUg
VGVzdCBpdHNlbGYuCi0KLSNpZm5kZWYgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1Rf
SF8KLSNkZWZpbmUgR1RFU1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KLQotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0vLyBUZXN0
IGZpeHR1cmUgZm9yIHRlc3RpbmcgZGVmaW5pdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiBhIHRl
c3QKLS8vIGluIHNlcGFyYXRlIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgRXh0ZXJuYWxJbnN0
YW50aWF0aW9uVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7Ci19
OwotCi0vLyBUZXN0IGZpeHR1cmUgZm9yIHRlc3RpbmcgaW5zdGFudGlhdGlvbiBvZiBhIHRlc3Qg
aW4gbXVsdGlwbGUKLS8vIHRyYW5zbGF0aW9uIHVuaXRzLgotY2xhc3MgSW5zdGFudGlhdGlvbklu
TXVsdGlwbGVUcmFuc2xhaW9uVW5pdHNUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPGludD4gewotfTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAot
Ci0jZW5kaWYgIC8vIEdURVNUX1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9URVNUX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA2
N2E0MGQ0YWEwMGQ1NzFkYzUyODEyMzlhODYzMTViMDA2MGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90
ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTMxMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
OCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xl
LmNvbSAoVmxhZCBMb3NldiksIHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8g
VGhpcyBmaWxlIHRlc3RzIHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxp
dGllcy4KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0KLSNpZiBHVEVTVF9PU19NQUMKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vu
ZGlmICAvLyBHVEVTVF9PU19NQUMKLQotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8dXRpbGl0
eT4gIC8vIEZvciBzdGQ6OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyLgotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3Bp
LmgiCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9m
IEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBj
b21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20g
YWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0
LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyBz
dGQ6Om1ha2VfcGFpcjsKLXVzaW5nIHN0ZDo6cGFpcjsKLQotbmFtZXNwYWNlIHRlc3Rpbmcgewot
bmFtZXNwYWNlIGludGVybmFsIHsKLQotVEVTVChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yTmFycm93
QXNjaWkpIHsKLSAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
WERpZ2l0KCc5JykpOwotICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnQScpKTsKLSAgRVhQRUNUX1RS
VUUoSXNYRGlnaXQoJ0YnKSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdhJykpOwotICBFWFBF
Q1RfVFJVRShJc1hEaWdpdCgnZicpKTsKLQotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJy0nKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc1hEaWdpdCgnZycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0
KCdHJykpOwotfQotCi1URVNUKElzWERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTmFycm93Tm9u
QXNjaWkpIHsKLSAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdceDgwJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNYRGlnaXQoc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnIHwgJ1x4ODAnKSkpOwotfQotCi1URVNU
KElzWERpZ2l0VGVzdCwgV29ya3NGb3JXaWRlQXNjaWkpIHsKLSAgRVhQRUNUX1RSVUUoSXNYRGln
aXQoTCcwJykpOwotICBFWFBFQ1RfVFJVRShJc1hEaWdpdChMJzknKSk7Ci0gIEVYUEVDVF9UUlVF
KElzWERpZ2l0KEwnQScpKTsKLSAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdGJykpOwotICBFWFBF
Q1RfVFJVRShJc1hEaWdpdChMJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnZicpKTsK
LQotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNYRGln
aXQoTCdnJykpOwotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdHJykpOwotfQotCi1URVNUKElz
WERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9yV2lkZU5vbkFzY2lpKSB7Ci0gIEVYUEVDVF9GQUxT
RShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDgwKSkpOwotICBFWFBFQ1RfRkFMU0Uo
SXNYRGlnaXQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4ODApKSk7Ci0gIEVYUEVDVF9G
QUxTRShJc1hEaWdpdChzdGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7Ci19Ci0K
LWNsYXNzIEJhc2UgewotIHB1YmxpYzoKLSAgLy8gQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdu
bWVudCBvcGVyYXRvciBkbyBleGFjdGx5IHdoYXQgd2UgbmVlZCwgc28gd2UKLSAgLy8gdXNlIHRo
ZW0uCi0gIEJhc2UoKSA6IG1lbWJlcl8oMCkge30KLSAgZXhwbGljaXQgQmFzZShpbnQgbikgOiBt
ZW1iZXJfKG4pIHt9Ci0gIHZpcnR1YWwgfkJhc2UoKSB7fQotICBpbnQgbWVtYmVyKCkgeyByZXR1
cm4gbWVtYmVyXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IG1lbWJlcl87Ci19OwotCi1jbGFzcyBE
ZXJpdmVkIDogcHVibGljIEJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRGVyaXZlZChpbnQg
bikgOiBCYXNlKG4pIHt9Ci19OwotCi1URVNUKEltcGxpY2l0Q2FzdFRlc3QsIENvbnZlcnRzUG9p
bnRlcnMpIHsKLSAgRGVyaXZlZCBkZXJpdmVkKDApOwotICBFWFBFQ1RfVFJVRSgmZGVyaXZlZCA9
PSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2UqPigmZGVyaXZlZCkpOwot
fQotCi1URVNUKEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUluaGVyaXRhbmNlKSB7Ci0gIERlcml2
ZWQgZGVyaXZlZCgxKTsKLSAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGlj
aXRDYXN0XzxCYXNlPihkZXJpdmVkKTsKLSAgRVhQRUNUX0VRKGRlcml2ZWQubWVtYmVyKCksIGJh
c2UubWVtYmVyKCkpOwotfQotCi1jbGFzcyBDYXN0YWJsZSB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBDYXN0YWJsZShib29sKiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9Ci0g
IG9wZXJhdG9yIEJhc2UoKSB7Ci0gICAgKmNvbnZlcnRlZF8gPSB0cnVlOwotICAgIHJldHVybiBC
YXNlKCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGJvb2wqIGNvbnZlcnRlZF87Ci19OwotCi1URVNU
KEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZU5vbkNvbnN0Q2FzdE9wZXJhdG9yKSB7Ci0gIGJvb2wg
Y29udmVydGVkID0gZmFsc2U7Ci0gIENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQpOwotICBC
YXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3Rh
YmxlKTsKLSAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKLX0KLQotY2xhc3MgQ29uc3RDYXN0YWJs
ZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBDb25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkg
OiBjb252ZXJ0ZWRfKGNvbnZlcnRlZCkge30KLSAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKLSAg
ICAqY29udmVydGVkXyA9IHRydWU7Ci0gICAgcmV0dXJuIEJhc2UoKTsKLSAgfQotCi0gcHJpdmF0
ZToKLSAgYm9vbCogY29udmVydGVkXzsKLX07Ci0KLVRFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2Fu
VXNlQ29uc3RDYXN0T3BlcmF0b3JPbkNvbnN0VmFsdWVzKSB7Ci0gIGJvb2wgY29udmVydGVkID0g
ZmFsc2U7Ci0gIGNvbnN0IENvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCk7
Ci0gIEJhc2UgYmFzZSA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4o
Y29uc3RfY2FzdGFibGUpOwotICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOwotfQotCi1jbGFzcyBD
b25zdEFuZE5vbkNvbnN0Q2FzdGFibGUgewotIHB1YmxpYzoKLSAgQ29uc3RBbmROb25Db25zdENh
c3RhYmxlKGJvb2wqIGNvbnZlcnRlZCwgYm9vbCogY29uc3RfY29udmVydGVkKQotICAgICAgOiBj
b252ZXJ0ZWRfKGNvbnZlcnRlZCksIGNvbnN0X2NvbnZlcnRlZF8oY29uc3RfY29udmVydGVkKSB7
fQotICBvcGVyYXRvciBCYXNlKCkgewotICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKLSAgICByZXR1
cm4gQmFzZSgpOwotICB9Ci0gIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7Ci0gICAgKmNvbnN0X2Nv
bnZlcnRlZF8gPSB0cnVlOwotICAgIHJldHVybiBCYXNlKCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IGJvb2wqIGNvbnZlcnRlZF87Ci0gIGJvb2wqIGNvbnN0X2NvbnZlcnRlZF87Ci19OwotCi1URVNU
KEltcGxpY2l0Q2FzdFRlc3QsIENhblNlbGVjdEJldHdlZW5Db25zdEFuZE5vbkNvbnN0Q2FzckFw
cHJvcHJpYXRlbHkpIHsKLSAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKLSAgYm9vbCBjb25zdF9j
b252ZXJ0ZWQgPSBmYWxzZTsKLSAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNhc3RhYmxlKCZj
b252ZXJ0ZWQsICZjb25zdF9jb252ZXJ0ZWQpOwotICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKLSAgRVhQRUNUX1RSVUUoY29u
dmVydGVkKTsKLSAgRVhQRUNUX0ZBTFNFKGNvbnN0X2NvbnZlcnRlZCk7Ci0KLSAgY29udmVydGVk
ID0gZmFsc2U7Ci0gIGNvbnN0X2NvbnZlcnRlZCA9IGZhbHNlOwotICBjb25zdCBDb25zdEFuZE5v
bkNvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRl
ZCk7Ci0gIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNv
bnN0X2Nhc3RhYmxlKTsKLSAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCk7Ci0gIEVYUEVDVF9UUlVF
KGNvbnN0X2NvbnZlcnRlZCk7Ci19Ci0KLWNsYXNzIFRvIHsKLSBwdWJsaWM6Ci0gIFRvKGJvb2wq
IGNvbnZlcnRlZCkgeyAqY29udmVydGVkID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCi19OwotCi1URVNU
KEltcGxpY2l0Q2FzdFRlc3QsIENhblVzZUltcGxpY2l0Q29uc3RydWN0b3IpIHsKLSAgYm9vbCBj
b252ZXJ0ZWQgPSBmYWxzZTsKLSAgVG8gdG8gPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfPFRvPigmY29udmVydGVkKTsKLSAgKHZvaWQpdG87Ci0gIEVYUEVDVF9UUlVFKGNvbnZl
cnRlZCk7Ci19Ci0KLVRFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENvbnRhaW5l
ckl0ZXJhdG9ycykgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LAotICAgICAgSXRlcmF0b3JU
cmFpdHM8IDo6c3RkOjp2ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigp
OwotICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwKLSAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0
ZDo6bGlzdDxib29sPjo6aXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOwotfQotCi1URVNUKEl0ZXJh
dG9yVHJhaXRzVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgewotICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Y2hhciwgSXRlcmF0b3JUcmFpdHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigpOwotICBT
dGF0aWNBc3NlcnRUeXBlRXE8Y29uc3Qgdm9pZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQq
Kj46OnZhbHVlX3R5cGU+KCk7Ci19Ci0KLVRFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0Zv
clBvaW50ZXJUb0NvbnN0KSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRy
YWl0czxjb25zdCBjaGFyKj46OnZhbHVlX3R5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxj
b25zdCB2b2lkKiwKLSAgICAgIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0Kj46OnZh
bHVlX3R5cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVm
IGlzIGF2YWlsYWJsZSBpbiBzY29wZWRfcHRyIGFuZCByZWZlcnMKLS8vIHRvIHRoZSBwYXJhbWV0
ZXIgdHlwZS4KLVRFU1QoU2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7Ci0gIFN0
YXRpY0Fzc2VydFR5cGVFcTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50
Pjo6ZWxlbWVudF90eXBlPigpOwotfQotCi0vLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBJbXBs
ZW1lbnQgVEhFIFJFU1Qgb2Ygc2NvcGVkX3B0ciB0ZXN0cy4KLQotVEVTVChHdGVzdENoZWNrU3lu
dGF4VGVzdCwgQmVoYXZlc0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxz
ZSgpKQotICAgIEdURVNUX0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4
ZWN1dGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9u
IHRlc3Qgb25seS4iOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgR1RFU1RfQ0hFQ0tfKHRy
dWUpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0g
ICAgOyAgLy8gTk9MSU5UCi0gIGVsc2UKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Ci19
Ci0KLVRFU1QoR3Rlc3RDaGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgewotICBzd2l0
Y2ggKDApIHsKLSAgICBjYXNlIDE6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
R1RFU1RfQ0hFQ0tfKHRydWUpOwotICB9Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAg
ICAgIEdURVNUX0NIRUNLXyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsK
LX0KLQotLy8gVmVyaWZpZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgotVEVTVChG
b3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7Ci0gIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZv
by5jYyIsIDQyKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZv
cm1hdEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKLX0KLQotVEVTVChGb3JtYXRGaWxlTG9j
YXRpb25UZXN0LCBGb3JtYXRzVW5rbm93bkZpbGUpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMigK
LSAgICAgIElzU3Vic3RyaW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5V
TEwsIDQyKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1h
dEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOwotfQotCi1URVNUKEZvcm1hdEZpbGVMb2NhdGlvblRl
c3QsIEZvcm1hdHNVa25vd25MaW5lKSB7Ci0gIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZp
bGVMb2NhdGlvbigiZm9vLmNjIiwgLTEpKTsKLX0KLQotVEVTVChGb3JtYXRGaWxlTG9jYXRpb25U
ZXN0LCBGb3JtYXRzVWtub3duRmlsZUFuZExpbmUpIHsKLSAgRVhQRUNUX0VRKCJ1bmtub3duIGZp
bGU6IiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIC0xKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIGJl
aGF2aW9yIG9mIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCi1URVNUKEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0
aW9uKSB7Ci0gIEVYUEVDVF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVu
dEZpbGVMb2NhdGlvbigiZm9vLmNjIiwgNDIpKTsKLX0KLQotVEVTVChGb3JtYXRDb21waWxlcklu
ZGVwZW5kZW50RmlsZUxvY2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKLSAgRVhQRUNU
X0VRKCJ1bmtub3duIGZpbGU6NDIiLAotICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVu
ZGVudEZpbGVMb2NhdGlvbihOVUxMLCA0MikpOwotfQotCi1URVNUKEZvcm1hdENvbXBpbGVySW5k
ZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgewotICBFWFBFQ1Rf
RVEoImZvby5jYyIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5j
YyIsIC0xKSk7Ci19Ci0KLVRFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlv
blRlc3QsIEZvcm1hdHNVa25vd25GaWxlQW5kTGluZSkgewotICBFWFBFQ1RfRVEoInVua25vd24g
ZmlsZSIsIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsK
LX0KLQotI2lmIEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgK
LXZvaWQqIFRocmVhZEZ1bmModm9pZCogZGF0YSkgewotICBpbnRlcm5hbDo6TXV0ZXgqIG11dGV4
ID0gc3RhdGljX2Nhc3Q8aW50ZXJuYWw6Ok11dGV4Kj4oZGF0YSk7Ci0gIG11dGV4LT5Mb2NrKCk7
Ci0gIG11dGV4LT5VbmxvY2soKTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRFU1QoR2V0VGhyZWFk
Q291bnRUZXN0LCBSZXR1cm5zQ29ycmVjdFZhbHVlKSB7Ci0gIGNvbnN0IHNpemVfdCBzdGFydGlu
Z19jb3VudCA9IEdldFRocmVhZENvdW50KCk7Ci0gIHB0aHJlYWRfdCAgICAgICB0aHJlYWRfaWQ7
Ci0KLSAgaW50ZXJuYWw6Ok11dGV4IG11dGV4OwotICB7Ci0gICAgaW50ZXJuYWw6Ok11dGV4TG9j
ayBsb2NrKCZtdXRleCk7Ci0gICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7Ci0gICAgQVNTRVJUX0VR
KDAsIHB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRf
YXR0cl9zZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKLQot
ICAgIGNvbnN0IGludCBzdGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwg
JlRocmVhZEZ1bmMsICZtdXRleCk7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0
cm95KCZhdHRyKSk7Ci0gICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7Ci0gICAgRVhQRUNUX0VRKHN0
YXJ0aW5nX2NvdW50ICsgMSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIH0KLQotICB2b2lkKiBkdW1t
eTsKLSAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOwotCi0g
IC8vIFRoZSBPUyBtYXkgbm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQg
Y291bnQgYWZ0ZXIKLSAgLy8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4g
dGhpcyB0ZXN0LiBUbyBjb3VudGVyIHRoYXQsIHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNl
Y29uZHMgZm9yIHRoZSBPUyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50
IGkgPSAwOyBpIDwgNTsgKytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gc3RhcnRp
bmdfY291bnQpCi0gICAgICBicmVhazsKLQotICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwMCk7Ci0g
IH0KLQotICBFWFBFQ1RfRVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50KCkpOwotfQot
I2Vsc2UKLVRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0Nv
dW50VGhyZWFkcykgewotICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOwotfQotI2Vu
ZGlmICAvLyBHVEVTVF9PU19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YCi0K
LVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwgRGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWlsdXJl
KSB7Ci0gIGNvbnN0IGJvb2wgYV9mYWxzZV9jb25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3QgY2hh
ciByZWdleFtdID0KLSNpZmRlZiBfTVNDX1ZFUgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2Nc
XChcXGQrXFwpOiIKLSNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKLSAgICAgImd0ZXN0LXBvcnRf
dGVzdFxcLmNjOlswLTldKyIKLSNlbHNlCi0gICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jYzpcXGQr
IgotI2VuZGlmICAvLyBfTVNDX1ZFUgotICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0cmEg
aW5mby4qIjsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdURVNUX0NIRUNLXyhhX2Zh
bHNlX2NvbmRpdGlvbikgPDwgIkV4dHJhIGluZm8iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2V4KTsKLX0KLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLVRFU1QoR3Rlc3RD
aGVja0RlYXRoVGVzdCwgTGl2ZXNTaWxlbnRseU9uU3VjY2VzcykgewotICBFWFBFQ1RfRVhJVCh7
Ci0gICAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIkV4dHJhIGluZm8iOwotICAgICAgOjpzdGQ6
OmNlcnIgPDwgIlN1Y2Nlc3NcbiI7Ci0gICAgICBleGl0KDApOyB9LAotICAgICAgOjp0ZXN0aW5n
OjpFeGl0ZWRXaXRoQ29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfREVBVEhfVEVTVAotCi0vLyBWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNob29zZSByZWd1
bGFyIGV4cHJlc3Npb24gZW5naW5lIGFwcHJvcHJpYXRlIHRvCi0vLyB0aGUgcGxhdGZvcm0uIFRo
ZSB0ZXN0IHdpbGwgcHJvZHVjZSBjb21waWxlciBlcnJvcnMgaW4gY2FzZSBvZiBmYWlsdXJlLgot
Ly8gRm9yIHNpbXBsaWNpdHksIHdlIG9ubHkgY292ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHBsYXRm
b3JtcyBoZXJlLgotVEVTVChSZWdleEVuZ2luZVNlbGVjdGlvblRlc3QsIFNlbGVjdHNDb3JyZWN0
UmVnZXhFbmdpbmUpIHsKLSNpZiAhR1RFU1RfVVNFU19QQ1JFCi0jIGlmIEdURVNUX0hBU19QT1NJ
WF9SRQotCi0gIEVYUEVDVF9UUlVFKEdURVNUX1VTRVNfUE9TSVhfUkUpOwotCi0jIGVsc2UKLQot
ICBFWFBFQ1RfVFJVRShHVEVTVF9VU0VTX1NJTVBMRV9SRSk7Ci0KLSMgZW5kaWYKLSNlbmRpZiAg
Ly8gIUdURVNUX1VTRVNfUENSRQotfQotCi0jaWYgR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jIGlm
IEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+Ci1jbGFzcyBS
RVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHt9OwotCi0vLyBEZWZpbmVzIFN0cmluZ1R5
cGVzIGFzIHRoZSBsaXN0IG9mIGFsbCBzdHJpbmcgdHlwZXMgdGhhdCBjbGFzcyBSRQotLy8gc3Vw
cG9ydHMuCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPAotICAgIDo6c3RkOjpzdHJpbmcsCi0jICBp
ZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotICAgIDo6c3RyaW5nLAotIyAgZW5kaWYgIC8vIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmluZ1R5cGVzOwotCi1U
WVBFRF9URVNUX0NBU0UoUkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRlc3RzIFJFJ3MgaW1w
bGljaXQgY29uc3RydWN0b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0
b3JXb3JrcykgewotICBjb25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1NU
UkVRKCIiLCBlbXB0eS5wYXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBsZShUeXBlUGFyYW0o
ImhlbGxvIikpOwotICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci0K
LSAgY29uc3QgUkUgbm9ybWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0gIEVYUEVDVF9TVFJF
USgiLiooXFx3KykiLCBub3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdz
IGNvbnN0cnVjdG9ycyByZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVFlQRURf
VEVTVChSRVRlc3QsIFJlamVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoewotICAgIGNvbnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/IikpOwotICB9LCAiXCI/
XCIgaXMgbm90IGEgdmFsaWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLiIpOwot
fQotCi0vLyBUZXN0cyBSRTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJFVGVzdCwgRnVsbE1h
dGNoV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9U
UlVFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNF
KFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUo
VHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJh
bSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF4
eXoiKSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJiYXoi
KSwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwg
cmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRl
c3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikp
OwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7
Ci0gIEVYUEVDVF9UUlVFKFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7
Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6
UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBh
cnRpYWxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBh
cnRpYWxNYXRjaChUeXBlUGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFy
dGlhbE1hdGNoKFR5cGVQYXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6UGFy
dGlhbE1hdGNoKFR5cGVQYXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSMgZW5kaWYgIC8vIEdURVNU
X0hBU19UWVBFRF9URVNUCi0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLVRFU1QoSXNJ
blNldFRlc3QsIE51bENoYXJJc05vdEluQW55U2V0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0
KCdcMCcsICIiKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzSW5TZXQoJ1wwJywgImEiKSk7Ci19Ci0KLVRFU1QoSXNJblNldFRlc3QsIFdv
cmtzRm9yTm9uTnVsQ2hhcnMpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAiQWIiKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdjJywgIiIpKTsKLQotICBFWFBFQ1RfVFJVRShJc0lu
U2V0KCdiJywgImJjZCIpKTsKLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKLX0K
LQotVEVTVChJc0FzY2lpRGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlEaWdpdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQo
JyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJy0nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy4nKSk7
Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNBc2NpaURp
Z2l0VGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcw
JykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpRGlnaXQoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElz
QXNjaWlEaWdpdCgnNScpKTsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc5JykpOwotfQot
Ci1URVNUKElzQXNjaWlQdW5jdFRlc3QsIElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBFQ1Rf
RkFMU0UoSXNBc2NpaVB1bmN0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgn
ICcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnXG4nKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0FzY2lpUHVuY3QoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJzAnKSk7
Ci19Ci0KLVRFU1QoSXNBc2NpaVB1bmN0VGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9yIChj
b25zdCBjaGFyKiBwID0gIl4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsg
cCsrKSB7Ci0gICAgRVhQRUNUX1BSRUQxKElzQXNjaWlQdW5jdCwgKnApOwotICB9Ci19Ci0KLVRF
U1QoSXNSZXBlYXRUZXN0LCBJc0ZhbHNlRm9yTm9uUmVwZWF0Q2hhcikgewotICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJyAnKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1JlcGVhdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcxJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJy0nKSk7Ci19Ci0KLVRFU1QoSXNSZXBlYXRUZXN0
LCBJc1RydWVGb3JSZXBlYXRDaGFyKSB7Ci0gIEVYUEVDVF9UUlVFKElzUmVwZWF0KCc/JykpOwot
ICBFWFBFQ1RfVFJVRShJc1JlcGVhdCgnKicpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJysn
KSk7Ci19Ci0KLVRFU1QoSXNBc2NpaVdoaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVT
cGFjZSkgewotICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ1wwJykpOwotICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lp
V2hpdGVTcGFjZSgnMScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcrJykp
OwotICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ18nKSk7Ci19Ci0KLVRFU1QoSXNB
c2NpaVdoaXRlU3BhY2VUZXN0LCBJc1RydWVGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9UUlVF
KElzQXNjaWlXaGl0ZVNwYWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFj
ZSgnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdccicpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNBc2NpaVdoaXRlU3BhY2UoJ1x0JykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lp
V2hpdGVTcGFjZSgnXHYnKSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcZicp
KTsKLX0KLQotVEVTVChJc0FzY2lpV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9yTm9uV29yZENoYXIp
IHsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0FzY2lpV29yZENoYXIoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIo
Jy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJyAnKSk7Ci0gIEVYUEVDVF9G
QUxTRShJc0FzY2lpV29yZENoYXIoJ1xuJykpOwotfQotCi1URVNUKElzQXNjaWlXb3JkQ2hhclRl
c3QsIElzVHJ1ZUZvckxldHRlcikgewotICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2En
KSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignYicpKTsKLSAgRVhQRUNUX1RSVUUo
SXNBc2NpaVdvcmRDaGFyKCdBJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ1on
KSk7Ci19Ci0KLVRFU1QoSXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAg
RVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lp
V29yZENoYXIoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignNycpKTsKLSAg
RVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCc5JykpOwotfQotCi1URVNUKElzQXNjaWlXb3Jk
Q2hhclRlc3QsIElzVHJ1ZUZvclVuZGVyc2NvcmUpIHsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaVdv
cmRDaGFyKCdfJykpOwotfQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yTm9u
UHJpbnRhYmxlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMCcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJ1wwMDcnKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2Fw
ZVRlc3QsIElzRmFsc2VGb3JEaWdpdCkgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgn
MCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFsaWRFc2NhcGUoJzknKSk7Ci19Ci0KLVRFU1QoSXNW
YWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJ
c1ZhbGlkRXNjYXBlKCcgJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXG4nKSk7
Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JTb21lTGV0dGVyKSB7Ci0g
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxp
ZEVzY2FwZSgnWicpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yUHVu
Y3QpIHsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnLicpKTsKLSAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnLScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXicpKTsK
LSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnJCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgnKCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXScpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgneycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2Fw
ZSgnfCcpKTsKLX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yU29tZUxldHRl
cikgewotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdkJykpOwotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCdEJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdzJykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdTJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlk
RXNjYXBlKCd3JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdXJykpOwotfQotCi1U
RVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRQdW5jdCkgewotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnXFwnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnXycsICcuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICcuJywgJ2EnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdc
XCcsICdcXCcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJ18n
KSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnKycsICcrJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnLicpKTsKLX0KLQotVEVTVChB
dG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX2QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnZCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAnZCcsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdkJywgJy4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywg
JzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICc5JykpOwot
fQotCi1URVNUKEF0b21NYXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfRCkgewotICBFWFBFQ1RfRkFM
U0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdEJywgJzAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ0QnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnRCcsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnLScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3MpIHsKLSAg
RVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcMCcpKTsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdhJykpOwotICBFWFBFQ1RfRkFMU0Uo
QXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0
Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3MnLCAnICcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICdzJywgJ1xuJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAn
XHQnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9TKSB7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnICcpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnUycsICdccicpKTsKLQotICBFWFBFQ1RfVFJVRShB
dG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAnUycsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnOScpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVk
X3cpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcMCcpKTsK
LSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcrJykpOwotICBFWFBF
Q1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJyAnKSk7Ci0gIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnXG4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICd3JywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAndycsICdiJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ3cnLCAnQycpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3Jywg
J18nKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9XKSB7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnQScpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICdiJykpOwotICBFWFBFQ1RfRkFMU0UoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdXJywgJzknKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ1cnLCAnXycpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1cnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
VycsICcqJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXG4n
KSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZFdoaXRlU3BhY2UpIHsK
LSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcMCcpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcbicpKTsKLSAgRVhQRUNUX0ZB
TFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAnbicsICdccicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hh
cih0cnVlLCAncicsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUs
ICd0JywgJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0Jywg
J3QnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXDAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXGYnKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xmJykpOwotICBFWFBFQ1Rf
VFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ24nLCAnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdccicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNo
ZXNDaGFyKHRydWUsICd0JywgJ1x0JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ3YnLCAnXHYnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2Nh
cGVkRG90KSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1xu
JykpOwotCi0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXDAnKSk7
Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnLicpKTsKLSAgRVhQ
RUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnLicsICdhJykpOwotICBFWFBFQ1RfVFJV
RShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJyAnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNo
ZXNDaGFyVGVzdCwgVW5lc2NhcGVkQ2hhcikgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKGZhbHNlLCAnYScsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihm
YWxzZSwgJ2EnLCAnYicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwg
JyQnLCAnYScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywg
JyQnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJzUnLCAnNScpKTsK
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnWicsICdaJykpOwotfQotCi1U
RVNUKFZhbGlkYXRlUmVnZXhUZXN0LCBHZW5lcmF0ZXNGYWlsdXJlQW5kUmV0dXJuc0ZhbHNlRm9y
SW52YWxpZCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRh
dGVSZWdleChOVUxMKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIGlzIG5vdCBh
IHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoCi0gICAgICBBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAotICAgICAg
IlN5bnRheCBlcnJvciBhdCBpbmRleCAxIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJh
XFxcIjogIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCJhXFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBh
cHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFM
U0UoVmFsaWRhdGVSZWdleCgiXFxuXFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIn
XFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXFxzXFxoYiIpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiXFxoXCIiKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl5eIikpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5u
aW5nIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJl
Z2V4KCIuKl5iIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFw
cGVhciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VS
VF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIkJCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IickJyBjYW4gb25seSBhcHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXiRhIikpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhKGIiKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFiKSIpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIicpJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiW2FiIikpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiJ1snIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhezIiKSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIneycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIj8iKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgi
XioiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInKicgY2FuIG9ubHkgZm9sbG93IGEg
cmVwZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFM
U0UoVmFsaWRhdGVSZWdleCgiNSorIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJysn
IGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQotVEVTVChWYWxpZGF0
ZVJlZ2V4VGVzdCwgUmV0dXJuc1RydWVGb3JWYWxpZCkgewotICBFWFBFQ1RfVFJVRShWYWxpZGF0
ZVJlZ2V4KCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImEiKSk7Ci0gIEVYUEVD
VF9UUlVFKFZhbGlkYXRlUmVnZXgoIi4qIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4
KCJeYV8rIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYVxcdFxcJj8iKSk7Ci0g
IEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIjA5KiQiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlk
YXRlUmVnZXgoIl5aJCIpKTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYVxcXlpcXCRc
XChcXClcXHxcXFtcXF1cXHtcXH0iKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWRUZXN0LCBXb3Jrc0Zvclplcm9Pck9uZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hS
ZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYSIsICJiYSIpKTsKLSAg
Ly8gUmVwZWF0aW5nIG1vcmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0
aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJhYWIiKSk7Ci0KLSAgLy8g
UmVwZWF0aW5nIHplcm8gdGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkKGZhbHNlLCAnYScsICc/JywgImIiLCAiYmEiKSk7Ci0gIC8vIFJlcGVhdGluZyBv
bmNlLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwg
J2EnLCAnPycsICJiIiwgImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRS
ZWdleEF0SGVhZChmYWxzZSwgJyMnLCAnPycsICIuIiwgIiMjIikpOwotfQotCi1URVNUKE1hdGNo
UmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JNYW55KSB7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKics
ICJhJCIsICJiYWFiIikpOwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwg
ImJjIikpOwotICAvLyBSZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0
aW9uQW5kUmVnZXhBdEhlYWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJl
cGVhdGluZyBtb3JlIHRoYW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5k
UmVnZXhBdEhlYWQodHJ1ZSwgJ3cnLCAnKicsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yT25lT3JNYW55KSB7Ci0g
IEVYUEVDVF9GQUxTRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAn
KycsICJhJCIsICJiYWFiIikpOwotICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KLSAgRVhQRUNU
X0ZBTFNFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIi
LCAiYmMiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIiLCAiYWJjIikpOwotICAv
LyBSZXBlYXRpbmcgbW9yZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlv
bkFuZFJlZ2V4QXRIZWFkKHRydWUsICd3JywgJysnLCAiLSIsICJhYl8xLWciKSk7Ci19Ci0KLVRF
U1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFJldHVybnNUcnVlRm9yRW1wdHlSZWdleCkgewotICBF
WFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIiLCAiIikpOwotICBFWFBFQ1RfVFJVRShNYXRj
aFJlZ2V4QXRIZWFkKCIiLCAiYWIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3Qs
IFdvcmtzV2hlbkRvbGxhcklzSW5SZWdleCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0
SGVhZCgiJCIsICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAi
IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhJCIsICJhIikpOwotfQotCi1U
RVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhFc2NhcGVT
ZXF1ZW5jZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFx3IiwgIisiKSk7
Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFciLCAiYWIiKSk7Ci0KLSAgRVhQ
RUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxzYSIsICJcbmFiIikpOwotICBFWFBFQ1RfVFJV
RShNYXRjaFJlZ2V4QXRIZWFkKCJcXGQiLCAiMWEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aXRpb24pIHsKLSAgRVhQRUNU
X0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIi4rYSIsICJhYmMiKSk7Ci0gIEVYUEVDVF9GQUxTRShN
YXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYWFiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVn
ZXhBdEhlYWQoIi4qYSIsICJiYzEyLWFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRI
ZWFkKCJhP2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwg
ImFiIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LAotICAgICBXb3Jrc1doZW5S
ZWdleFN0YXJ0c1dpdGhSZXBldGlvbk9mRXNjYXBlU2VxdWVuY2UpIHsKLSAgRVhQRUNUX0ZBTFNF
KE1hdGNoUmVnZXhBdEhlYWQoIlxcLithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNo
UmVnZXhBdEhlYWQoIlxccz9iIiwgIiAgYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4
QXRIZWFkKCJcXCgqYSIsICIoKCgoYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhl
YWQoIlxcXj9iIiwgIl5iIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxc
P2IiLCAiYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgIlxc
YiIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgTWF0Y2hlc1NlcXVlbnRpYWxs
eSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWNhYmMiKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWItZnNjIikpOwot
fQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5TdHJpbmdJ
c051bGwpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiIiwgTlVMTCkpOwot
fQotCi1URVNUKE1hdGNoUmVnZXhBbnl3aGVyZVRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0
aENhcmV0KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImJhIikp
OwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICJhIikpOwotCi0gIEVY
UEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgiXmEiLCAiYWIiKSk7Ci0gIEVYUEVDVF9UUlVF
KE1hdGNoUmVnZXhBbnl3aGVyZSgiXiIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEFueXdoZXJlKCJeJCIsICIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwg
UmV0dXJuc0ZhbHNlV2hlbk5vTWF0Y2gpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3
aGVyZSgiYSIsICJiY2RlMTIzIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJl
KCJhLithIiwgIi0tYWE4ODg4ODg4OCIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVU
ZXN0LCBSZXR1cm5zVHJ1ZVdoZW5NYXRjaGluZ1ByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRj
aFJlZ2V4QW55d2hlcmUoIlxcdysiLCAiYWIxXyAtIDUiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiLio9IiwgIj0iKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3
aGVyZSgieC4qYWI/LipiYyIsICJ4YWFhYmMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdo
ZXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuTWF0Y2hpbmdOb25QcmVmaXgpIHsKLSAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXHcrIiwgIiQkJCBhYjFfIC0gNSIpKTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJcXC4rPSIsICI9ICAuLi49IikpOwotfQotCi0vLyBU
ZXN0cyBSRSdzIGltcGxpY2l0IGNvbnN0cnVjdG9ycy4KLVRFU1QoUkVUZXN0LCBJbXBsaWNpdENv
bnN0cnVjdG9yV29ya3MpIHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwotICBFWFBFQ1RfU1RSRVEo
IiIsIGVtcHR5LnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxlKCJoZWxsbyIpOwotICBF
WFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgUkUncyBjb25zdHJ1Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4K
LVRFU1QoUkVUZXN0LCBSZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKLSAgICBjb25zdCBSRSBub3JtYWwoTlVMTCk7Ci0gIH0sICJOVUxMIGlzIG5vdCBh
IHZhbGlkIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24iKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgbm9ybWFsKCIuKihcXHcrIik7Ci0gIH0sICInKCcgaXMg
dW5zdXBwb3J0ZWQiKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3Qg
UkUgaW52YWxpZCgiXj8iKTsKLSAgfSwgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxl
IHRva2VuIik7Ci19Ci0KLS8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4KLVRFU1QoUkVUZXN0LCBG
dWxsTWF0Y2hXb3JrcykgewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKFJF
OjpGdWxsTWF0Y2goIiIsIGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJh
IiwgZW1wdHkpKTsKLQotICBjb25zdCBSRSByZTEoImEiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1
bGxNYXRjaCgiYSIsIHJlMSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6Iik7Ci0gIEVYUEVDVF9U
UlVFKFJFOjpGdWxsTWF0Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRj
aCgiYXh5eiIsIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJiYXoiLCByZSkp
OwotICBFWFBFQ1RfRkFMU0UoUkU6OkZ1bGxNYXRjaCgiYXp5IiwgcmUpKTsKLX0KLQotLy8gVGVz
dHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7
Ci0gIGNvbnN0IFJFIGVtcHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgi
IiwgZW1wdHkpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYSIsIGVtcHR5KSk7
Ci0KLSAgY29uc3QgUkUgcmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRj
aCgiYXoiLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheHl6IiwgcmUp
KTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYmF6IiwgcmUpKTsKLSAgRVhQRUNU
X1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXp5IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpQ
YXJ0aWFsTWF0Y2goInp6YSIsIHJlKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJ
WF9SRQotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoQ2FwdHVyZVRlc3Qs
IENhcHR1cmVzU3Rkb3V0KSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRvdXQs
ICJhYmMiKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3Ry
KCkpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRvdXQsICJkZWYlY2doaSIs
ICdcMCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiZGVmXDBnaGkiLCA3KSwgOjpzdGQ6
OnN0cmluZyhHZXRDYXB0dXJlZFN0ZG91dCgpKSk7Ci19Ci0KLVRFU1QoQ2FwdHVyZVRlc3QsIENh
cHR1cmVzU3RkZXJyKSB7Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIsICJq
a2wiKTsKLSAgRVhQRUNUX1NUUkVRKCJqa2wiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkp
OwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIsICJqa2wlY21ubyIsICdc
MCcpOwotICBFWFBFQ1RfRVEoOjpzdGQ6OnN0cmluZygiamtsXDBtbm8iLCA3KSwgOjpzdGQ6OnN0
cmluZyhHZXRDYXB0dXJlZFN0ZGVycigpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc3Rkb3V0IGFu
ZCBzdGRlcnIgY2FwdHVyZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLgotVEVTVChD
YXB0dXJlVGVzdCwgQ2FwdHVyZXNTdGRvdXRBbmRTdGRlcnIpIHsKLSAgQ2FwdHVyZVN0ZG91dCgp
OwotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIGZwcmludGYoc3Rkb3V0LCAicHFyIik7Ci0gIGZwcmlu
dGYoc3RkZXJyLCAic3R1Iik7Ci0gIEVYUEVDVF9TVFJFUSgicHFyIiwgR2V0Q2FwdHVyZWRTdGRv
dXQoKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJzdHUiLCBHZXRDYXB0dXJlZFN0ZGVycigp
LmNfc3RyKCkpOwotfQotCi1URVNUKENhcHR1cmVEZWF0aFRlc3QsIENhbm5vdFJlZW50ZXJTdGRv
dXRDYXB0dXJlKSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChDYXB0dXJlU3Rkb3V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkg
b25lIHN0ZG91dCBjYXB0dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7Ci0gIEdldENhcHR1cmVk
U3Rkb3V0KCk7Ci0KLSAgLy8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBk
ZWF0aCB0ZXN0cyBhcyB0aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVzLgotfQotCi0jZW5kaWYg
IC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVm
YXVsdENvbnN0cnVjdG9ySW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKLSAgVGhyZWFkTG9j
YWw8aW50PiB0MTsKLSAgRVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQotICBUaHJlYWRMb2NhbDx2
b2lkKj4gdDI7Ci0gIEVYUEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwpOwotfQotCi1URVNUKFRo
cmVhZExvY2FsVGVzdCwgU2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkg
ewotICBUaHJlYWRMb2NhbDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgp
KTsKLQotICBpbnQgaSA9IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKLSAgRVhQRUNU
X0VRKCZpLCB0Mi5nZXQoKSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KLSAg
Tm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KLX07Ci0K
LVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJl
ZEZvclBhcmFtVmVyc2lvbikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBi
YXIoTm9EZWZhdWx0Q29udHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9pbnRlcigpOwotfQotCi1U
RVNUKFRocmVhZExvY2FsVGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBU
aHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKLQotICBFWFBFQ1Rf
RVEodGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsX3N0cmluZy5n
ZXQoKSkpOwotCi0gIC8vIFZlcmlmaWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0ZXIg
Y2FsbGluZyBzZXQuCi0gIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKLSAgRVhQRUNU
X0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcu
Z2V0KCkpKTsKLX0KLQotVEVTVChUaHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50
ZXJSZXR1cm5TYW1lVmFsdWUpIHsKLSAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9s
b2NhbF9zdHJpbmc7Ci0gIGNvbnN0IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiYgY29uc3RfdGhy
ZWFkX2xvY2FsX3N0cmluZyA9Ci0gICAgICB0aHJlYWRfbG9jYWxfc3RyaW5nOwotCi0gIEVYUEVD
VF9FUSh0aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0
cmluZy5wb2ludGVyKCkpOwotCi0gIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKLSAg
RVhQRUNUX0VRKHRocmVhZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9j
YWxfc3RyaW5nLnBvaW50ZXIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLXZv
aWQgQWRkVHdvKGludCogcGFyYW0pIHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChUaHJlYWRXaXRo
UGFyYW1UZXN0LCBDb25zdHJ1Y3RvckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBpbnQgaSA9IDQw
OwotICBUaHJlYWRXaXRoUGFyYW08aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKLSAg
dGhyZWFkLkpvaW4oKTsKLSAgRVhQRUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChNdXRleERlYXRo
VGVzdCwgQXNzZXJ0SGVsZFNob3VsZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAgLy8gQXNzZXJ0
SGVsZCgpIGlzIGZsYWt5IG9ubHkgaW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMg
YWNjZXNzaW5nCi0gIC8vIHRoZSBsb2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVz
dC4KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsKLSAgICB7IE11
dGV4TG9jayBsb2NrKCZtKTsgfQotICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAotICAidGhyZWFk
IC4qaG9sZCIpOwotfQotCi1URVNUKE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2Vy
dFdoZW5Mb2NrZWQpIHsKLSAgTXV0ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0pOwotICBtLkFz
c2VydEhlbGQoKTsKLX0KLQotY2xhc3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBBdG9taWNDb3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgotICAg
IHZhbHVlXygwKSwgbXV0ZXhfKG11dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2b2lkIEluY3Jl
bWVudCgpIHsKLSAgICBNdXRleExvY2sgbG9jayhtdXRleF8pOwotICAgIGludCB0ZW1wID0gdmFs
dWVfOwotICAgIHsKLSAgICAgIC8vIFdlIG5lZWQgdG8gcHV0IHVwIGEgbWVtb3J5IGJhcnJpZXIg
dG8gcHJldmVudCByZWFkcyBhbmQgd3JpdGVzIHRvCi0gICAgICAvLyB2YWx1ZV8gcmVhcnJhbmdl
ZCB3aXRoIHRoZSBjYWxsIHRvIFNsZWVwTWlsbGlzZWNvbmRzIHdoZW4gb2JzZXJ2ZWQKLSAgICAg
IC8vIGZyb20gb3RoZXIgdGhyZWFkcy4KLSNpZiBHVEVTVF9IQVNfUFRIUkVBRAotICAgICAgLy8g
T24gUE9TSVgsIGxvY2tpbmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuICBXZSBj
YW5ub3QgdXNlCi0gICAgICAvLyBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0
aGVpciBtZW1vcnkgYmFycmllcgotICAgICAgLy8gZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVz
dGluZyB0aGVtIGhlcmUuCi0gICAgICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0
ZXg7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgICBwdGhyZWFk
X211dGV4X2luaXQoJm1lbW9yeV9iYXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAgICBHVEVTVF9D
SEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211
dGV4KSk7Ci0KLSAgICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsK
LQotICAgICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2so
Jm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNT
XyhwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0jZWxpZiBH
VEVTVF9PU19XSU5ET1dTCi0gICAgICAvLyBPbiBXaW5kb3dzLCBwZXJmb3JtaW5nIGFuIGludGVy
bG9ja2VkIGFjY2VzcyBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuCi0gICAgICB2b2xhdGlsZSBM
T05HIGR1bW15ID0gMDsKLSAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKLSAg
ICAgIFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLSAgICAgIDo6SW50
ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKLSNlbHNlCi0jIGVycm9yICJNZW1vcnkgYmFycmll
ciBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19QVEhSRUFECi0gICAgfQotICAgIHZhbHVlXyA9IHRlbXAgKyAxOwotICB9Ci0gIGludCB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50
IHZhbHVlXzsKLSAgTXV0ZXgqIGNvbnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KLSAg
UmFuZG9tICAgICAgIHJhbmRvbV87Ci19OwotCi12b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWly
PEF0b21pY0NvdW50ZXJXaXRoTXV0ZXgqLCBpbnQ+IHBhcmFtKSB7Ci0gIGZvciAoaW50IGkgPSAw
OyBpIDwgcGFyYW0uc2Vjb25kOyArK2kpCi0gICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEg
dGltZSB0byBsb2NrIGl0LgotVEVTVChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRB
VGltZSkgewotICBNdXRleCBtdXRleDsKLSAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRf
Y291bnRlcigmbXV0ZXgpOwotCi0gIHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWlj
Q291bnRlcldpdGhNdXRleCosIGludD4gPiBUaHJlYWRUeXBlOwotICBjb25zdCBpbnQga0N5Y2xl
Q291bnQgPSAyMDsKLSAgY29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8
VGhyZWFkVHlwZT4gY291bnRpbmdfdGhyZWFkc1trVGhyZWFkQ291bnRdOwotICBOb3RpZmljYXRp
b24gdGhyZWFkc19jYW5fc3RhcnQ7Ci0gIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50
IHRocmVhZHMgdGhhdCBpbmNyZW1lbnQgbG9ja2VkX2NvdW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQg
dGltZXMgZWFjaC4KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewot
ICAgIGNvdW50aW5nX3RocmVhZHNbaV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhy
ZWFkRnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VfcGFpcigmbG9ja2VkX2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0N5Y2xlQ291bnQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAg
dGhyZWFkc19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVh
ZENvdW50OyArK2kpCi0gICAgY291bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOwotCi0gIC8vIElm
IHRoZSBtdXRleCBsZXRzIG1vcmUgdGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291
bnRlciBhdCBhCi0gIC8vIHRpbWUsIHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNl
IGNvbmRpdGlvbiBhbmQgaGF2ZSBzb21lCi0gIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJl
c3VsdGluZyBpbiB0aGUgbG93ZXIgdGhlbiBleHBlY3RlZCBjb3VudGVyCi0gIC8vIHZhbHVlLgot
ICBFWFBFQ1RfRVEoa0N5Y2xlQ291bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZh
bHVlKCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2
b2lkIChmdW5jKShUKSwgVCBwYXJhbSkgewotICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1
bmMsIHBhcmFtLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRo
cmVhZExvY2FsVmFsdWUoCi0gICAgcGFpcjxUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4qLCBzdGQ6
OnN0cmluZyo+IHBhcmFtKSB7Ci0gICpwYXJhbS5zZWNvbmQgPSBwYXJhbS5maXJzdC0+Z2V0KCk7
Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBQYXJhbWV0ZXJpemVkQ29uc3RydWN0b3JTZXRz
RGVmYXVsdCkgewotICBUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmlu
ZygiZm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQo
KS5jX3N0cigpKTsKLQotICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiYmFyIik7Ci0gIEVYUEVD
VF9TVFJFUSgiYmFyIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKLQotICBz
dGQ6OnN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxW
YWx1ZSwKLSAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZy
ZXN1bHQpKTsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0KLS8v
IEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgb2YgZGVzdHJ1Y3RvcnMgYmVpbmcgY2FsbGVkIG9uIGlu
c3RhbmNlcyBvZgotLy8gRGVzdHJ1Y3RvclRyYWNrZXIuICBPbiBXaW5kb3dzLCB3YWl0cyBmb3Ig
dGhlIGRlc3RydWN0b3IgY2FsbCByZXBvcnRzLgotY2xhc3MgRGVzdHJ1Y3RvckNhbGwgewotIHB1
YmxpYzoKLSAgRGVzdHJ1Y3RvckNhbGwoKSB7Ci0gICAgaW52b2tlZF8gPSBmYWxzZTsKLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0gICAgd2FpdF9ldmVudF8uUmVzZXQoOjpDcmVhdGVFdmVudChOVUxM
LCBUUlVFLCBGQUxTRSwgTlVMTCkpOwotICAgIEdURVNUX0NIRUNLXyh3YWl0X2V2ZW50Xy5HZXQo
KSAhPSBOVUxMKTsKLSNlbmRpZgotICB9Ci0KLSAgYm9vbCBDaGVja0Rlc3Ryb3llZCgpIGNvbnN0
IHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAgaWYgKDo6V2FpdEZvclNpbmdsZU9iamVjdCh3
YWl0X2V2ZW50Xy5HZXQoKSwgMTAwMCkgIT0gV0FJVF9PQkpFQ1RfMCkKLSAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgotICAgIHJldHVybiBpbnZva2VkXzsKLSAgfQotCi0gIHZvaWQgUmVwb3J0
RGVzdHJveWVkKCkgewotICAgIGludm9rZWRfID0gdHJ1ZTsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gICAgOjpTZXRFdmVudCh3YWl0X2V2ZW50Xy5HZXQoKSk7Ci0jZW5kaWYKLSAgfQotCi0gIHN0
YXRpYyBzdGQ6OnZlY3RvcjxEZXN0cnVjdG9yQ2FsbCo+JiBMaXN0KCkgeyByZXR1cm4gKmxpc3Rf
OyB9Ci0KLSAgc3RhdGljIHZvaWQgUmVzZXRMaXN0KCkgewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdF8tPnNpemUoKTsgKytpKSB7Ci0gICAgICBkZWxldGUgbGlzdF8tPmF0KGkpOwot
ICAgIH0KLSAgICBsaXN0Xy0+Y2xlYXIoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgYm9vbCBpbnZv
a2VkXzsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEF1dG9IYW5kbGUgd2FpdF9ldmVudF87Ci0j
ZW5kaWYKLSAgc3RhdGljIHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IGxpc3Rf
OwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVzdHJ1Y3RvckNhbGwpOwot
fTsKLQotc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPiogY29uc3QgRGVzdHJ1Y3RvckNhbGw6
Omxpc3RfID0KLSAgICBuZXcgc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPjsKLQotLy8gRGVz
dHJ1Y3RvclRyYWNrZXIga2VlcHMgdHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2VzIGhhdmUg
YmVlbgotLy8gZGVzdHJveWVkLgotY2xhc3MgRGVzdHJ1Y3RvclRyYWNrZXIgewotIHB1YmxpYzoK
LSAgRGVzdHJ1Y3RvclRyYWNrZXIoKSA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQotICBEZXN0
cnVjdG9yVHJhY2tlcihjb25zdCBEZXN0cnVjdG9yVHJhY2tlciYgLyogcmhzICovKQotICAgICAg
OiBpbmRleF8oR2V0TmV3SW5kZXgoKSkge30KLSAgfkRlc3RydWN0b3JUcmFja2VyKCkgewotICAg
IC8vIFdlIG5ldmVyIGFjY2VzcyBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpIGNvbmN1cnJlbnRseSwg
c28gd2UgZG9uJ3QgbmVlZAotICAgIC8vIHRvIHByb3RlY3QgdGhpcyBhY2NjZXNzIHdpdGggYSBt
dXRleC4KLSAgICBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERlc3Ryb3ll
ZCgpOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgc2l6ZV90IEdldE5ld0luZGV4KCkgewot
ICAgIERlc3RydWN0b3JDYWxsOjpMaXN0KCkucHVzaF9iYWNrKG5ldyBEZXN0cnVjdG9yQ2FsbCk7
Ci0gICAgcmV0dXJuIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpIC0gMTsKLSAgfQotICBj
b25zdCBzaXplX3QgaW5kZXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRGVzdHJ1Y3Rv
clRyYWNrZXIpOwotfTsKLQotdHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4q
IFRocmVhZFBhcmFtOwotCi12b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJl
YWRfbG9jYWxfcGFyYW0pIHsKLSAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB3aGVuIGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0
IGRlc3Ryb3lzCi0vLyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgotVEVTVChU
aHJlYWRMb2NhbFRlc3QsIERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWlu
ZykgewotICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Ci0KLSAgewotICAgIFRocmVhZExv
Y2FsPERlc3RydWN0b3JUcmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKLSAgICBBU1NFUlRf
RVEoMFUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKLQotICAgIC8vIFRoaXMgY3Jl
YXRlcyBhbm90aGVyIERlc3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFk
LgotICAgIHRocmVhZF9sb2NhbF90cmFja2VyLmdldCgpOwotICAgIEFTU0VSVF9FUSgxVSwgRGVz
dHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShEZXN0cnVjdG9y
Q2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKLSAgfQotCi0gIC8vIE5vdyB0aHJl
YWRfbG9jYWxfdHJhY2tlciBoYXMgZGllZC4KLSAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2Fs
bDo6TGlzdCgpLnNpemUoKSk7Ci0gIEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClb
MF0tPkNoZWNrRGVzdHJveWVkKCkpOwotCi0gIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2Fs
IG9iamVjdCBmb3IgdGhhdAotLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBEZXN0cm95c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKLSAgRGVzdHJ1Y3Rv
ckNhbGw6OlJlc2V0TGlzdCgpOwotCi0gIHsKLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJh
Y2tlcj4gdGhyZWFkX2xvY2FsX3RyYWNrZXI7Ci0gICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9y
Q2FsbDo6TGlzdCgpLnNpemUoKSk7Ci0KLSAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0
cnVjdG9yVHJhY2tlciBvYmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCi0gICAgVGhyZWFkV2l0aFBh
cmFtPFRocmVhZFBhcmFtPiB0aHJlYWQoCi0gICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0
aHJlYWRfbG9jYWxfdHJhY2tlciwgTlVMTCk7Ci0gICAgdGhyZWFkLkpvaW4oKTsKLQotICAgIC8v
IFRoZSB0aHJlYWQgaGFzIGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJh
Y2tlcgotICAgIC8vIGluc3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZl
IGJlZW4gZGVzdHJveWVkIHlldC4KLSAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpM
aXN0KCkuc2l6ZSgpKTsKLSAgfQotCi0gIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCBhbmQgdGhy
ZWFkX2xvY2FsX3RyYWNrZXIgaGFzIGRpZWQuCi0gIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNh
bGw6Okxpc3QoKS5zaXplKCkpOwotICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgp
WzBdLT5DaGVja0Rlc3Ryb3llZCgpKTsKLQotICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7
Ci19Ci0KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9u
bHlDdXJyZW50VGhyZWFkKSB7Ci0gIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9j
YWxfc3RyaW5nOwotICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7Ci0gIEVYUEVDVF9T
VFJFUSgiRm9vIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKLQotICBzdGQ6
OnN0cmluZyByZXN1bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1
ZSwKLSAgICAgICAgICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1
bHQpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0LmVtcHR5KCkpOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoV2luZG93c1R5
cGVzVGVzdCwgSEFORExFSXNWb2lkU3RhcikgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8SEFORExF
LCB2b2lkKj4oKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQo
X19NSU5HVzY0X1ZFUlNJT05fTUFKT1IpCi1URVNUKFdpbmRvd3NUeXBlc1Rlc3QsIF9DUklUSUNB
TF9TRUNUSU9OSXNfQ1JJVElDQUxfU0VDVElPTikgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJ
VElDQUxfU0VDVElPTiwgX0NSSVRJQ0FMX1NFQ1RJT04+KCk7Ci19Ci0jZWxzZQotVEVTVChXaW5k
b3dzVHlwZXNUZXN0LCBDUklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsK
LSAgU3RhdGljQXNzZXJ0VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VD
VElPTj4oKTsKLX0KLSNlbmRpZgotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiMGE4MzQxMGQxZjAzZGU4ODVmNjI3NjIzZTU4OGIwN2U1YmVkZDZlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qt
cHJpbnRlcnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDE2MzcgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIFRlc3QgLSBUaGUgR29vZ2xl
IEMrKyBUZXN0aW5nIEZyYW1ld29yawotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyB0aGUgdW5pdmVy
c2FsIHZhbHVlIHByaW50ZXIuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC1wcmludGVycy5oIgot
Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8ZGVxdWU+Ci0jaW5jbHVkZSA8
bGlzdD4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHNzdHJlYW0+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9y
PgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gaGFzaF9tYXAgYW5kIGhhc2hfc2V0
IGFyZSBhdmFpbGFibGUgdW5kZXIgVmlzdWFsIEMrKywgb3Igb24gTGludXguCi0jaWYgR1RFU1Rf
SEFTX0hBU0hfTUFQXwotIyBpbmNsdWRlIDxoYXNoX21hcD4gICAgICAgICAgICAvLyBOT0xJTlQK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0hBU0hfTUFQXwotI2lmIEdURVNUX0hBU19IQVNIX1NFVF8K
LSMgaW5jbHVkZSA8aGFzaF9zZXQ+ICAgICAgICAgICAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19IQVNIX1NFVF8KLQotI2lmIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXwotIyBp
bmNsdWRlIDxmb3J3YXJkX2xpc3Q+IC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RE
X0ZPUldBUkRfTElTVF8KLQotLy8gU29tZSB1c2VyLWRlZmluZWQgdHlwZXMgZm9yIHRlc3Rpbmcg
dGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyLgotCi0vLyBBbiBhbm9ueW1vdXMgZW51bSB0eXBl
LgotZW51bSBBbm9ueW1vdXNFbnVtIHsKLSAga0FFMSA9IC0xLAotICBrQUUyID0gMQotfTsKLQot
Ly8gQW4gZW51bSB3aXRob3V0IGEgdXNlci1kZWZpbmVkIHByaW50ZXIuCi1lbnVtIEVudW1XaXRo
b3V0UHJpbnRlciB7Ci0gIGtFV1AxID0gLTIsCi0gIGtFV1AyID0gNDIKLX07Ci0KLS8vIEFuIGVu
dW0gd2l0aCBhIDw8IG9wZXJhdG9yLgotZW51bSBFbnVtV2l0aFN0cmVhbWluZyB7Ci0gIGtFV1Mx
ID0gMTAKLX07Ci0KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBF
bnVtV2l0aFN0cmVhbWluZyBlKSB7Ci0gIHJldHVybiBvcyA8PCAoZSA9PSBrRVdTMSA/ICJrRVdT
MSIgOiAiaW52YWxpZCIpOwotfQotCi0vLyBBbiBlbnVtIHdpdGggYSBQcmludFRvKCkgZnVuY3Rp
b24uCi1lbnVtIEVudW1XaXRoUHJpbnRUbyB7Ci0gIGtFV1BUMSA9IDEKLX07Ci0KLXZvaWQgUHJp
bnRUbyhFbnVtV2l0aFByaW50VG8gZSwgc3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgKGUg
PT0ga0VXUFQxID8gImtFV1BUMSIgOiAiaW52YWxpZCIpOwotfQotCi0vLyBBIGNsYXNzIGltcGxp
Y2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludC4KLWNsYXNzIEJpZ2dlc3RJbnRDb252ZXJ0
aWJsZSB7Ci0gcHVibGljOgotICBvcGVyYXRvciA6OnRlc3Rpbmc6OmludGVybmFsOjpCaWdnZXN0
SW50KCkgY29uc3QgeyByZXR1cm4gNDI7IH0KLX07Ci0KLS8vIEEgdXNlci1kZWZpbmVkIHVucHJp
bnRhYmxlIGNsYXNzIHRlbXBsYXRlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBVbnByaW50YWJsZVRlbXBsYXRlSW5HbG9iYWwgewotIHB1Ymxp
YzoKLSAgVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsKCkgOiB2YWx1ZV8oKSB7fQotIHByaXZh
dGU6Ci0gIFQgdmFsdWVfOwotfTsKLQotLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJsZSB0eXBl
IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotY2xhc3MgU3RyZWFtYWJsZUluR2xvYmFsIHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgflN0cmVhbWFibGVJbkdsb2JhbCgpIHt9Ci19OwotCi1pbmxpbmUg
dm9pZCBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xv
YmFsJiAvKiB4ICovKSB7Ci0gIG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwiOwotfQotCi12b2lk
IG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1hYmxlSW5HbG9iYWwq
IC8qIHggKi8pIHsKLSAgb3MgPDwgIlN0cmVhbWFibGVJbkdsb2JhbCoiOwotfQotCi1uYW1lc3Bh
Y2UgZm9vIHsKLQotLy8gQSB1c2VyLWRlZmluZWQgdW5wcmludGFibGUgdHlwZSBpbiBhIHVzZXIg
bmFtZXNwYWNlLgotY2xhc3MgVW5wcmludGFibGVJbkZvbyB7Ci0gcHVibGljOgotICBVbnByaW50
YWJsZUluRm9vKCkgOiB6XygwKSB7IG1lbWNweSh4eV8sICJceEVGXHgxMlx4MFx4MFx4MzRceEFC
XHgwXHgwIiwgOCk7IH0KLSAgZG91YmxlIHooKSBjb25zdCB7IHJldHVybiB6XzsgfQotIHByaXZh
dGU6Ci0gIGNoYXIgeHlfWzhdOwotICBkb3VibGUgel87Ci19OwotCi0vLyBBIHVzZXItZGVmaW5l
ZCBwcmludGFibGUgdHlwZSBpbiBhIHVzZXItY2hvc2VuIG5hbWVzcGFjZS4KLXN0cnVjdCBQcmlu
dGFibGVWaWFQcmludFRvIHsKLSAgUHJpbnRhYmxlVmlhUHJpbnRUbygpIDogdmFsdWUoKSB7fQot
ICBpbnQgdmFsdWU7Ci19OwotCi12b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRU
byYgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRU
bzogIiA8PCB4LnZhbHVlOwotfQotCi0vLyBBIHR5cGUgd2l0aCBhIHVzZXItZGVmaW5lZCA8PCBm
b3IgcHJpbnRpbmcgaXRzIHBvaW50ZXIuCi1zdHJ1Y3QgUG9pbnRlclByaW50YWJsZSB7Ci19Owot
Ci06OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2ludGVyUHJpbnRhYmxlKiAvKiB4ICovKSB7Ci0g
IHJldHVybiBvcyA8PCAiUG9pbnRlclByaW50YWJsZSoiOwotfQotCi0vLyBBIHVzZXItZGVmaW5l
ZCBwcmludGFibGUgY2xhc3MgdGVtcGxhdGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUoY29uc3Qg
VCYgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLQotICBjb25zdCBUJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotIHByaXZhdGU6Ci0gIFQgdmFsdWVfOwotfTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFByaW50VG8oY29uc3QgUHJpbnRhYmxlVmlhUHJpbnRU
b1RlbXBsYXRlPFQ+JiB4LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgKm9zIDw8ICJQcmludGFi
bGVWaWFQcmludFRvVGVtcGxhdGU6ICIgPDwgeC52YWx1ZSgpOwotfQotCi0vLyBBIHVzZXItZGVm
aW5lZCBzdHJlYW1hYmxlIGNsYXNzIHRlbXBsYXRlIGluIGEgdXNlciBuYW1lc3BhY2UuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vIHsKLSBwdWJs
aWM6Ci0gIFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vKCkgOiB2YWx1ZV8oKSB7fQotCi0gIGNvbnN0
IFQmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0gcHJpdmF0ZToKLSAgVCB2YWx1
ZV87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSA6OnN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyZWFtYWJsZVRlbXBsYXRlSW5Gb288VD4mIHgpIHsKLSAgcmV0dXJu
IG9zIDw8ICJTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzogIiA8PCB4LnZhbHVlKCk7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSBmb28KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGd0ZXN0
X3ByaW50ZXJzX3Rlc3QgewotCi11c2luZyA6OnN0ZDo6ZGVxdWU7Ci11c2luZyA6OnN0ZDo6bGlz
dDsKLXVzaW5nIDo6c3RkOjptYWtlX3BhaXI7Ci11c2luZyA6OnN0ZDo6bWFwOwotdXNpbmcgOjpz
dGQ6Om11bHRpbWFwOwotdXNpbmcgOjpzdGQ6Om11bHRpc2V0OwotdXNpbmcgOjpzdGQ6OnBhaXI7
Ci11c2luZyA6OnN0ZDo6c2V0OwotdXNpbmcgOjpzdGQ6OnZlY3RvcjsKLXVzaW5nIDo6dGVzdGlu
Zzo6UHJpbnRUb1N0cmluZzsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZTsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxp
Y2l0Q2FzdF87Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTsKLXVzaW5n
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlJFOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVs
YXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
Z3M7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludDsKLXVzaW5nIDo6
dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI7Ci11c2luZyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50OwotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUgfHwg
R1RFU1RfSEFTX1NURF9UVVBMRV8KLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nczsKLSNlbmRpZgotdXNpbmcgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6c3RyaW5nOwotCi0jaWYgR1RFU1RfSEFTX0hBU0hfTUFQXwotLy8gVGhlIGhh
c2hfKiBjbGFzc2VzIGFyZSBub3QgcGFydCBvZiB0aGUgQysrIHN0YW5kYXJkLiAgU1RMcG9ydAot
Ly8gZGVmaW5lcyB0aGVtIGluIG5hbWVzcGFjZSBzdGQuICBNU1ZDIGRlZmluZXMgdGhlbSBpbiA6
OnN0ZGV4dC4gIEdDQwotLy8gZGVmaW5lcyB0aGVtIGluIDo6LgotI2lmZGVmIF9TVExQX0hBU0hf
TUFQICAvLyBXZSBnb3QgPGhhc2hfbWFwPiBmcm9tIFNUTHBvcnQuCi11c2luZyA6OnN0ZDo6aGFz
aF9tYXA7Ci11c2luZyA6OnN0ZDo6aGFzaF9zZXQ7Ci11c2luZyA6OnN0ZDo6aGFzaF9tdWx0aW1h
cDsKLXVzaW5nIDo6c3RkOjpoYXNoX211bHRpc2V0OwotI2VsaWYgX01TQ19WRVIKLXVzaW5nIDo6
c3RkZXh0OjpoYXNoX21hcDsKLXVzaW5nIDo6c3RkZXh0OjpoYXNoX3NldDsKLXVzaW5nIDo6c3Rk
ZXh0OjpoYXNoX211bHRpbWFwOwotdXNpbmcgOjpzdGRleHQ6Omhhc2hfbXVsdGlzZXQ7Ci0jZW5k
aWYKLSNlbmRpZgotCi0vLyBQcmludHMgYSB2YWx1ZSB0byBhIHN0cmluZyB1c2luZyB0aGUgdW5p
dmVyc2FsIHZhbHVlIHByaW50ZXIuICBUaGlzCi0vLyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZyBV
bml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGZvciB2YXJpb3VzIHR5cGVzLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBQcmludChjb25zdCBUJiB2YWx1ZSkgewotICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwg
JnNzKTsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCi0vLyBQcmludHMgYSB2YWx1ZSBwYXNzZWQg
YnkgcmVmZXJlbmNlIHRvIGEgc3RyaW5nLCB1c2luZyB0aGUgdW5pdmVyc2FsCi0vLyB2YWx1ZSBw
cmludGVyLiAgVGhpcyBpcyBhIGhlbHBlciBmb3IgdGVzdGluZwotLy8gVW5pdmVyc2FsUHJpbnRl
cjxUJj46OlByaW50KCkgZm9yIHZhcmlvdXMgdHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0ZDo6c3RyaW5nIFByaW50QnlSZWYoY29uc3QgVCYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKLSAgVW5pdmVyc2FsUHJpbnRlcjxUJj46OlByaW50KHZhbHVlLCAmc3MpOwot
ICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIHZhcmlvdXMgZW51bSB0
eXBlcy4KLQotVEVTVChQcmludEVudW1UZXN0LCBBbm9ueW1vdXNFbnVtKSB7Ci0gIEVYUEVDVF9F
USgiLTEiLCBQcmludChrQUUxKSk7Ci0gIEVYUEVDVF9FUSgiMSIsIFByaW50KGtBRTIpKTsKLX0K
LQotVEVTVChQcmludEVudW1UZXN0LCBFbnVtV2l0aG91dFByaW50ZXIpIHsKLSAgRVhQRUNUX0VR
KCItMiIsIFByaW50KGtFV1AxKSk7Ci0gIEVYUEVDVF9FUSgiNDIiLCBQcmludChrRVdQMikpOwot
fQotCi1URVNUKFByaW50RW51bVRlc3QsIEVudW1XaXRoU3RyZWFtaW5nKSB7Ci0gIEVYUEVDVF9F
USgia0VXUzEiLCBQcmludChrRVdTMSkpOwotICBFWFBFQ1RfRVEoImludmFsaWQiLCBQcmludChz
dGF0aWNfY2FzdDxFbnVtV2l0aFN0cmVhbWluZz4oMCkpKTsKLX0KLQotVEVTVChQcmludEVudW1U
ZXN0LCBFbnVtV2l0aFByaW50VG8pIHsKLSAgRVhQRUNUX0VRKCJrRVdQVDEiLCBQcmludChrRVdQ
VDEpKTsKLSAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51bVdpdGhQ
cmludFRvPigwKSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyBhIGNsYXNzIGltcGxpY2l0bHkg
Y29udmVydGlibGUgdG8gQmlnZ2VzdEludC4KLQotVEVTVChQcmludENsYXNzVGVzdCwgQmlnZ2Vz
dEludENvbnZlcnRpYmxlKSB7Ci0gIEVYUEVDVF9FUSgiNDIiLCBQcmludChCaWdnZXN0SW50Q29u
dmVydGlibGUoKSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGNoYXIgdHlwZXMu
Ci0KLS8vIGNoYXIuCi1URVNUKFByaW50Q2hhclRlc3QsIFBsYWluQ2hhcikgewotICBFWFBFQ1Rf
RVEoIidcXDAnIiwgUHJpbnQoJ1wwJykpOwotICBFWFBFQ1RfRVEoIidcXCcnICgzOSwgMHgyNyki
LCBQcmludCgnXCcnKSk7Ci0gIEVYUEVDVF9FUSgiJ1wiJyAoMzQsIDB4MjIpIiwgUHJpbnQoJyIn
KSk7Ci0gIEVYUEVDVF9FUSgiJz8nICg2MywgMHgzRikiLCBQcmludCgnPycpKTsKLSAgRVhQRUNU
X0VRKCInXFxcXCcgKDkyLCAweDVDKSIsIFByaW50KCdcXCcpKTsKLSAgRVhQRUNUX0VRKCInXFxh
JyAoNykiLCBQcmludCgnXGEnKSk7Ci0gIEVYUEVDVF9FUSgiJ1xcYicgKDgpIiwgUHJpbnQoJ1xi
JykpOwotICBFWFBFQ1RfRVEoIidcXGYnICgxMiwgMHhDKSIsIFByaW50KCdcZicpKTsKLSAgRVhQ
RUNUX0VRKCInXFxuJyAoMTAsIDB4QSkiLCBQcmludCgnXG4nKSk7Ci0gIEVYUEVDVF9FUSgiJ1xc
cicgKDEzLCAweEQpIiwgUHJpbnQoJ1xyJykpOwotICBFWFBFQ1RfRVEoIidcXHQnICg5KSIsIFBy
aW50KCdcdCcpKTsKLSAgRVhQRUNUX0VRKCInXFx2JyAoMTEsIDB4QikiLCBQcmludCgnXHYnKSk7
Ci0gIEVYUEVDVF9FUSgiJ1xceDdGJyAoMTI3KSIsIFByaW50KCdceDdGJykpOwotICBFWFBFQ1Rf
RVEoIidcXHhGRicgKDI1NSkiLCBQcmludCgnXHhGRicpKTsKLSAgRVhQRUNUX0VRKCInICcgKDMy
LCAweDIwKSIsIFByaW50KCcgJykpOwotICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgUHJp
bnQoJ2EnKSk7Ci19Ci0KLS8vIHNpZ25lZCBjaGFyLgotVEVTVChQcmludENoYXJUZXN0LCBTaWdu
ZWRDaGFyKSB7Ci0gIEVYUEVDVF9FUSgiJ1xcMCciLCBQcmludChzdGF0aWNfY2FzdDxzaWduZWQg
Y2hhcj4oJ1wwJykpKTsKLSAgRVhQRUNUX0VRKCInXFx4Q0UnICgtNTApIiwKLSAgICAgICAgICAg
IFByaW50KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtNTApKSk7Ci19Ci0KLS8vIHVuc2lnbmVk
IGNoYXIuCi1URVNUKFByaW50Q2hhclRlc3QsIFVuc2lnbmVkQ2hhcikgewotICBFWFBFQ1RfRVEo
IidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oJ1wwJykpKTsKLSAgRVhQ
RUNUX0VRKCInYicgKDk4LCAweDYyKSIsCi0gICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPignYicpKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIG90aGVyIHNpbXBs
ZSwgYnVpbHQtaW4gdHlwZXMuCi0KLS8vIGJvb2wuCi1URVNUKFByaW50QnVpbHRJblR5cGVUZXN0
LCBCb29sKSB7Ci0gIEVYUEVDVF9FUSgiZmFsc2UiLCBQcmludChmYWxzZSkpOwotICBFWFBFQ1Rf
RVEoInRydWUiLCBQcmludCh0cnVlKSk7Ci19Ci0KLS8vIHdjaGFyX3QuCi1URVNUKFByaW50QnVp
bHRJblR5cGVUZXN0LCBXY2hhcl90KSB7Ci0gIEVYUEVDVF9FUSgiTCdcXDAnIiwgUHJpbnQoTCdc
MCcpKTsKLSAgRVhQRUNUX0VRKCJMJ1xcJycgKDM5LCAweDI3KSIsIFByaW50KEwnXCcnKSk7Ci0g
IEVYUEVDVF9FUSgiTCdcIicgKDM0LCAweDIyKSIsIFByaW50KEwnIicpKTsKLSAgRVhQRUNUX0VR
KCJMJz8nICg2MywgMHgzRikiLCBQcmludChMJz8nKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXFxcJyAo
OTIsIDB4NUMpIiwgUHJpbnQoTCdcXCcpKTsKLSAgRVhQRUNUX0VRKCJMJ1xcYScgKDcpIiwgUHJp
bnQoTCdcYScpKTsKLSAgRVhQRUNUX0VRKCJMJ1xcYicgKDgpIiwgUHJpbnQoTCdcYicpKTsKLSAg
RVhQRUNUX0VRKCJMJ1xcZicgKDEyLCAweEMpIiwgUHJpbnQoTCdcZicpKTsKLSAgRVhQRUNUX0VR
KCJMJ1xcbicgKDEwLCAweEEpIiwgUHJpbnQoTCdcbicpKTsKLSAgRVhQRUNUX0VRKCJMJ1xccicg
KDEzLCAweEQpIiwgUHJpbnQoTCdccicpKTsKLSAgRVhQRUNUX0VRKCJMJ1xcdCcgKDkpIiwgUHJp
bnQoTCdcdCcpKTsKLSAgRVhQRUNUX0VRKCJMJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoTCdcdicp
KTsKLSAgRVhQRUNUX0VRKCJMJ1xceDdGJyAoMTI3KSIsIFByaW50KEwnXHg3RicpKTsKLSAgRVhQ
RUNUX0VRKCJMJ1xceEZGJyAoMjU1KSIsIFByaW50KEwnXHhGRicpKTsKLSAgRVhQRUNUX0VRKCJM
JyAnICgzMiwgMHgyMCkiLCBQcmludChMJyAnKSk7Ci0gIEVYUEVDVF9FUSgiTCdhJyAoOTcsIDB4
NjEpIiwgUHJpbnQoTCdhJykpOwotICBFWFBFQ1RfRVEoIkwnXFx4NTc2JyAoMTM5OCkiLCBQcmlu
dChzdGF0aWNfY2FzdDx3Y2hhcl90PigweDU3NikpKTsKLSAgRVhQRUNUX0VRKCJMJ1xceEM3NEQn
ICg1MTAyMSkiLCBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90PigweEM3NEQpKSk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCBJbnQ2NCBwcm92aWRlcyBtb3JlIHN0b3JhZ2UgdGhhbiB3Y2hhcl90LgotVEVT
VChQcmludFR5cGVTaXplVGVzdCwgV2NoYXJfdCkgewotICBFWFBFQ1RfTFQoc2l6ZW9mKHdjaGFy
X3QpLCBzaXplb2YodGVzdGluZzo6aW50ZXJuYWw6OkludDY0KSk7Ci19Ci0KLS8vIFZhcmlvdXMg
aW50ZWdlciB0eXBlcy4KLVRFU1QoUHJpbnRCdWlsdEluVHlwZVRlc3QsIEludGVnZXIpIHsKLSAg
RVhQRUNUX0VRKCInXFx4RkYnICgyNTUpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oMjU1KSkpOyAgLy8gdWludDgKLSAgRVhQRUNUX0VRKCInXFx4ODAnICgtMTI4KSIsIFByaW50
KHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPigtMTI4KSkpOyAgLy8gaW50OAotICBFWFBFQ1RfRVEo
IjY1NTM1IiwgUHJpbnQoVVNIUlRfTUFYKSk7ICAvLyB1aW50MTYKLSAgRVhQRUNUX0VRKCItMzI3
NjgiLCBQcmludChTSFJUX01JTikpOyAgLy8gaW50MTYKLSAgRVhQRUNUX0VRKCI0Mjk0OTY3Mjk1
IiwgUHJpbnQoVUlOVF9NQVgpKTsgIC8vIHVpbnQzMgotICBFWFBFQ1RfRVEoIi0yMTQ3NDgzNjQ4
IiwgUHJpbnQoSU5UX01JTikpOyAgLy8gaW50MzIKLSAgRVhQRUNUX0VRKCIxODQ0Njc0NDA3Mzcw
OTU1MTYxNSIsCi0gICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5h
bDo6VUludDY0PigtMSkpKTsgIC8vIHVpbnQ2NAotICBFWFBFQ1RfRVEoIi05MjIzMzcyMDM2ODU0
Nzc1ODA4IiwKLSAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHRlc3Rpbmc6OmludGVybmFs
OjpJbnQ2ND4oMSkgPDwgNjMpKTsgIC8vIGludDY0Ci19Ci0KLS8vIFNpemUgdHlwZXMuCi1URVNU
KFByaW50QnVpbHRJblR5cGVUZXN0LCBTaXplX3QpIHsKLSAgRVhQRUNUX0VRKCIxIiwgUHJpbnQo
c2l6ZW9mKCdhJykpKTsgIC8vIHNpemVfdC4KLSNpZiAhR1RFU1RfT1NfV0lORE9XUwotICAvLyBX
aW5kb3dzIGhhcyBubyBzc2l6ZV90IHR5cGUuCi0gIEVYUEVDVF9FUSgiLTIiLCBQcmludChzdGF0
aWNfY2FzdDxzc2l6ZV90PigtMikpKTsgIC8vIHNzaXplX3QuCi0jZW5kaWYgIC8vICFHVEVTVF9P
U19XSU5ET1dTCi19Ci0KLS8vIEZsb2F0aW5nLXBvaW50cy4KLVRFU1QoUHJpbnRCdWlsdEluVHlw
ZVRlc3QsIEZsb2F0aW5nUG9pbnRzKSB7Ci0gIEVYUEVDVF9FUSgiMS41IiwgUHJpbnQoMS41Zikp
OyAgIC8vIGZsb2F0Ci0gIEVYUEVDVF9FUSgiLTIuNSIsIFByaW50KC0yLjUpKTsgIC8vIGRvdWJs
ZQotfQotCi0vLyBTaW5jZSA6OnN0ZDo6c3RyaW5nc3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IHZv
aWQgKikgZm9ybWF0cyB0aGUgcG9pbnRlcgotLy8gb3V0cHV0IGRpZmZlcmVudGx5IHdpdGggZGlm
ZmVyZW50IGNvbXBpbGVycywgd2UgaGF2ZSB0byBjcmVhdGUgdGhlIGV4cGVjdGVkCi0vLyBvdXRw
dXQgZmlyc3QgYW5kIHVzZSBpdCBhcyBvdXIgZXhwZWN0YXRpb24uCi1zdGF0aWMgc3RkOjpzdHJp
bmcgUHJpbnRQb2ludGVyKGNvbnN0IHZvaWQqIHApIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBl
eHBlY3RlZF9yZXN1bHRfc3RyZWFtOwotICBleHBlY3RlZF9yZXN1bHRfc3RyZWFtIDw8IHA7Ci0g
IHJldHVybiBleHBlY3RlZF9yZXN1bHRfc3RyZWFtLnN0cigpOwotfQotCi0vLyBUZXN0cyBwcmlu
dGluZyBDIHN0cmluZ3MuCi0KLS8vIGNvbnN0IGNoYXIqLgotVEVTVChQcmludENTdHJpbmdUZXN0
LCBDb25zdCkgewotICBjb25zdCBjaGFyKiBwID0gIldvcmxkIjsKLSAgRVhQRUNUX0VRKFByaW50
UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCJXb3JsZFwiIiwgUHJpbnQocCkpOwotfQotCi0v
LyBjaGFyKi4KLVRFU1QoUHJpbnRDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKLSAgY2hhciBwW10g
PSAiSGkiOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBcIkhp
XCIiLAotICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8Y2hhcio+KHApKSk7Ci19Ci0KLS8v
IE5VTEwgQyBzdHJpbmcuCi1URVNUKFByaW50Q1N0cmluZ1Rlc3QsIE51bGwpIHsKLSAgY29uc3Qg
Y2hhciogcCA9IE5VTEw7Ci0gIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBDIHN0cmluZ3MgYXJlIGVzY2FwZWQgcHJvcGVybHkuCi1URVNUKFByaW50Q1N0
cmluZ1Rlc3QsIEVzY2FwZXNQcm9wZXJseSkgewotICBjb25zdCBjaGFyKiBwID0gIidcIj9cXFxh
XGJcZlxuXHJcdFx2XHg3Rlx4RkYgYSI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAi
IHBvaW50aW5nIHRvIFwiJ1xcXCI/XFxcXFxcYVxcYlxcZiIKLSAgICAgICAgICAgICJcXG5cXHJc
XHRcXHZcXHg3RlxceEZGIGFcIiIsCi0gICAgICAgICAgICBQcmludChwKSk7Ci19Ci0KLS8vIE1T
VkMgY29tcGlsZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZGVmaW5lIHdoYXJfdCBhcyBhIHR5cGVk
ZWYKLS8vIG9mIHVuc2lnbmVkIHNob3J0LiBEZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3Qg
d2NoYXJfdCogaW4gdGhhdCBjYXNlCi0vLyB3b3VsZCBjYXVzZSBwb2ludGVycyB0byB1bnNpZ25l
ZCBzaG9ydHMgYmUgcHJpbnRlZCBhcyB3aWRlIHN0cmluZ3MsCi0vLyBwb3NzaWJseSBhY2Nlc3Np
bmcgbW9yZSBtZW1vcnkgdGhhbiBpbnRlbmRlZCBhbmQgY2F1c2luZyBpbnZhbGlkCi0vLyBtZW1v
cnkgYWNjZXNzZXMuIE1TVkMgZGVmaW5lcyBfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCBzeW1ib2wg
d2hlbgotLy8gd2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBhcyBhIG5hdGl2ZSB0eXBlLgotI2lmICFk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQotCi0v
LyBjb25zdCB3Y2hhcl90Ki4KLVRFU1QoUHJpbnRXaWRlQ1N0cmluZ1Rlc3QsIENvbnN0KSB7Ci0g
IGNvbnN0IHdjaGFyX3QqIHAgPSBMIldvcmxkIjsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihw
KSArICIgcG9pbnRpbmcgdG8gTFwiV29ybGRcIiIsIFByaW50KHApKTsKLX0KLQotLy8gd2NoYXJf
dCouCi1URVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBOb25Db25zdCkgewotICB3Y2hhcl90IHBb
XSA9IEwiSGkiOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBM
XCJIaVwiIiwKLSAgICAgICAgICAgIFByaW50KHN0YXRpY19jYXN0PHdjaGFyX3QqPihwKSkpOwot
fQotCi0vLyBOVUxMIHdpZGUgQyBzdHJpbmcuCi1URVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBO
dWxsKSB7Ci0gIGNvbnN0IHdjaGFyX3QqIHAgPSBOVUxMOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQ
cmludChwKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2lkZSBDIHN0cmluZ3MgYXJlIGVzY2FwZWQg
cHJvcGVybHkuCi1URVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBFc2NhcGVzUHJvcGVybHkpIHsK
LSAgY29uc3Qgd2NoYXJfdCBzW10gPSB7J1wnJywgJyInLCAnPycsICdcXCcsICdcYScsICdcYics
ICdcZicsICdcbicsICdccicsCi0gICAgICAgICAgICAgICAgICAgICAgICdcdCcsICdcdicsIDB4
RDMsIDB4NTc2LCAweDhEMywgMHhDNzRELCAnICcsICdhJywgJ1wwJ307Ci0gIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIocykgKyAiIHBvaW50aW5nIHRvIExcIidcXFwiP1xcXFxcXGFcXGJcXGYiCi0g
ICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREIGFcIiIsCi0g
ICAgICAgICAgICBQcmludChzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocykpKTsKLX0KLSNl
bmRpZiAgLy8gbmF0aXZlIHdjaGFyX3QKLQotLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8g
b3RoZXIgY2hhciB0eXBlcy4KLQotLy8gc2lnbmVkIGNoYXIqLgotVEVTVChQcmludENoYXJQb2lu
dGVyVGVzdCwgU2lnbmVkQ2hhcikgewotICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8c2lnbmVkIGNoYXIqPigweDEyMzQpOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQ
cmludChwKSk7Ci0gIHAgPSBOVUxMOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Ci19
Ci0KLS8vIGNvbnN0IHNpZ25lZCBjaGFyKi4KLVRFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENv
bnN0U2lnbmVkQ2hhcikgewotICBzaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2ln
bmVkIGNoYXIqPigweDEyMzQpOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChw
KSk7Ci0gIHAgPSBOVUxMOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8v
IHVuc2lnbmVkIGNoYXIqLgotVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgVW5zaWduZWRDaGFy
KSB7Ci0gIHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PigweDEyMzQpOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Ci0gIHAg
PSBOVUxMOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8vIGNvbnN0IHVu
c2lnbmVkIGNoYXIqLgotVEVTVChQcmludENoYXJQb2ludGVyVGVzdCwgQ29uc3RVbnNpZ25lZENo
YXIpIHsKLSAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KDB4MTIzNCk7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFBy
aW50KHApKTsKLSAgcCA9IE5VTEw7Ci0gIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKLX0K
LQotLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gc2ltcGxlLCBidWlsdC1pbiB0eXBlcy4K
LQotLy8gYm9vbCouCi1URVNUKFByaW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBCb29sKSB7
Ci0gIGJvb2wqIHAgPSByZWludGVycHJldF9jYXN0PGJvb2wqPigweEFCQ0QpOwotICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Ci0gIHAgPSBOVUxMOwotICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8vIHZvaWQqLgotVEVTVChQcmludFBvaW50ZXJUb0J1
aWx0SW5UeXBlVGVzdCwgVm9pZCkgewotICB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oMHhBQkNEKTsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwotICBw
ID0gTlVMTDsKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0vLyBjb25zdCB2
b2lkKi4KLVRFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3QsIENvbnN0Vm9pZCkgewot
ICBjb25zdCB2b2lkKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oMHhBQkNEKTsK
LSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwotICBwID0gTlVMTDsKLSAg
RVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyBwb2lu
dGVycyB0byBwb2ludGVycy4KLVRFU1QoUHJpbnRQb2ludGVyVG9Qb2ludGVyVGVzdCwgSW50UG9p
bnRlclBvaW50ZXIpIHsKLSAgaW50KiogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kio+KDB4QUJD
RCk7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKLSAgcCA9IE5VTEw7
Ci0gIEVYUEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcg
KG5vbi1tZW1iZXIpIGZ1bmN0aW9uIHBvaW50ZXJzLgotCi12b2lkIE15RnVuY3Rpb24oaW50IC8q
IG4gKi8pIHt9Ci0KLVRFU1QoUHJpbnRQb2ludGVyVGVzdCwgTm9uTWVtYmVyRnVuY3Rpb25Qb2lu
dGVyKSB7Ci0gIC8vIFdlIGNhbm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRvIGNvbnN0
IHZvaWQqIGJlY2F1c2UgdGhlCi0gIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5nIGJldHdl
ZW4gcG9pbnRlcnMgdG8gZnVuY3Rpb25zIGFuZAotICAvLyBwb2ludGVycyB0byBvYmplY3RzLCBh
bmQgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDIDMuNCkgZW5mb3JjZQotICAvLyB0aGlzIGxpbWl0
YXRpb24uCi0gIEVYUEVDVF9FUSgKLSAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0
PGNvbnN0IHZvaWQqPigKLSAgICAgICAgICByZWludGVycHJldF9jYXN0PGludGVybmFsOjpCaWdn
ZXN0SW50PigmTXlGdW5jdGlvbikpKSwKLSAgICAgIFByaW50KCZNeUZ1bmN0aW9uKSk7Ci0gIGlu
dCAoKnApKGJvb2wpID0gTlVMTDsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmlu
dChwKSk7Ci19Ci0KLS8vIEFuIGFzc2VydGlvbiBwcmVkaWNhdGUgZGV0ZXJtaW5pbmcgd2hldGhl
ciBhIG9uZSBzdHJpbmcgaXMgYSBwcmVmaXggZm9yCi0vLyBhbm90aGVyLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cmluZ1R5cGU+Ci1Bc3NlcnRpb25SZXN1bHQgSGFzUHJlZml4KGNvbnN0IFN0cmlu
Z1R5cGUmIHN0ciwgY29uc3QgU3RyaW5nVHlwZSYgcHJlZml4KSB7Ci0gIGlmIChzdHIuZmluZChw
cmVmaXgsIDApID09IDApCi0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICBjb25z
dCBib29sIGlzX3dpZGVfc3RyaW5nID0gc2l6ZW9mKHByZWZpeFswXSkgPiAxOwotICBjb25zdCBj
aGFyKiBjb25zdCBiZWdpbl9zdHJpbmdfcXVvdGUgPSBpc193aWRlX3N0cmluZyA/ICJMXCIiIDog
IlwiIjsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgYmVnaW5fc3RyaW5n
X3F1b3RlIDw8IHByZWZpeCA8PCAiXCIgaXMgbm90IGEgcHJlZml4IG9mICIKLSAgICAgIDw8IGJl
Z2luX3N0cmluZ19xdW90ZSA8PCBzdHIgPDwgIlwiXG4iOwotfQotCi0vLyBUZXN0cyBwcmludGlu
ZyBtZW1iZXIgdmFyaWFibGUgcG9pbnRlcnMuICBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQKLS8v
IHBvaW50ZXJzLCB0aGV5IGRvbid0IHBvaW50IHRvIGEgbG9jYXRpb24gaW4gdGhlIGFkZHJlc3Mg
c3BhY2UuCi0vLyBUaGVpciByZXByZXNlbnRhdGlvbiBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVk
LiAgVGh1cyB0aGV5IHdpbGwgYmUKLS8vIHByaW50ZWQgYXMgcmF3IGJ5dGVzLgotCi1zdHJ1Y3Qg
Rm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZvbygpIHt9Ci0gIGludCBNeU1ldGhvZChjaGFy
IHgpIHsgcmV0dXJuIHggKyAxOyB9Ci0gIHZpcnR1YWwgY2hhciBNeVZpcnR1YWxNZXRob2QoaW50
IC8qIG4gKi8pIHsgcmV0dXJuICdhJzsgfQotCi0gIGludCB2YWx1ZTsKLX07Ci0KLVRFU1QoUHJp
bnRQb2ludGVyVGVzdCwgTWVtYmVyVmFyaWFibGVQb2ludGVyKSB7Ci0gIEVYUEVDVF9UUlVFKEhh
c1ByZWZpeChQcmludCgmRm9vOjp2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmlu
dChzaXplb2YoJkZvbzo6dmFsdWUpKSArICItYnl0ZSBvYmplY3QgIikpOwotICBpbnQgKEZvbzo6
KnApID0gTlVMTDsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQocCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVj
dCAiKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIG1lbWJlciBmdW5jdGlvbiBwb2ludGVycy4g
IEFsdGhvdWdoIHRoZXkgYXJlIGNhbGxlZAotLy8gcG9pbnRlcnMsIHRoZXkgZG9uJ3QgcG9pbnQg
dG8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4KLS8vIFRoZWlyIHJlcHJlc2VudGF0
aW9uIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuICBUaHVzIHRoZXkgd2lsbCBiZQotLy8gcHJp
bnRlZCBhcyByYXcgYnl0ZXMuCi1URVNUKFByaW50UG9pbnRlclRlc3QsIE1lbWJlckZ1bmN0aW9u
UG9pbnRlcikgewotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQoJkZvbzo6TXlNZXRob2Qp
LAotICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286Ok15TWV0aG9kKSkg
KyAiLWJ5dGUgb2JqZWN0ICIpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICBIYXNQcmVmaXgoUHJp
bnQoJkZvbzo6TXlWaXJ0dWFsTWV0aG9kKSwKLSAgICAgICAgICAgICAgICBQcmludChzaXplb2Yo
KCZGb286Ok15VmlydHVhbE1ldGhvZCkpKSArICItYnl0ZSBvYmplY3QgIikpOwotICBpbnQgKEZv
bzo6KnApKGNoYXIpID0gTlVMTDsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgo
UHJpbnQocCksCi0gICAgICAgICAgICAgICAgICAgICAgICBQcmludChzaXplb2YocCkpICsgIi1i
eXRlIG9iamVjdCAiKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIEMgYXJyYXlzLgotCi0vLyBU
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIFByaW50KCkgaXMgdGhhdCBpdCBlbnN1cmVz
IHRoYXQgdGhlCi0vLyBhcmd1bWVudCBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXN0ZDo6c3RyaW5nIFByaW50QXJyYXlIZWxwZXIo
VCAoJmEpW05dKSB7Ci0gIHJldHVybiBQcmludChhKTsKLX0KLQotLy8gT25lLWRpbWVuc2lvbmFs
IGFycmF5LgotVEVTVChQcmludEFycmF5VGVzdCwgT25lRGltZW5zaW9uYWxBcnJheSkgewotICBp
bnQgYVs1XSA9IHsgMSwgMiwgMywgNCwgNSB9OwotICBFWFBFQ1RfRVEoInsgMSwgMiwgMywgNCwg
NSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Ci19Ci0KLS8vIFR3by1kaW1lbnNpb25hbCBhcnJh
eS4KLVRFU1QoUHJpbnRBcnJheVRlc3QsIFR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKLSAgaW50IGFb
Ml1bNV0gPSB7Ci0gICAgeyAxLCAyLCAzLCA0LCA1IH0sCi0gICAgeyA2LCA3LCA4LCA5LCAwIH0K
LSAgfTsKLSAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMywgNCwgNSB9LCB7IDYsIDcsIDgsIDksIDAg
fSB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Ci19Ci0KLS8vIEFycmF5IG9mIGNvbnN0IGVsZW1l
bnRzLgotVEVTVChQcmludEFycmF5VGVzdCwgQ29uc3RBcnJheSkgewotICBjb25zdCBib29sIGFb
MV0gPSB7IGZhbHNlIH07Ci0gIEVYUEVDVF9FUSgieyBmYWxzZSB9IiwgUHJpbnRBcnJheUhlbHBl
cihhKSk7Ci19Ci0KLS8vIGNoYXIgYXJyYXkgd2l0aG91dCB0ZXJtaW5hdGluZyBOVUwuCi1URVNU
KFByaW50QXJyYXlUZXN0LCBDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgewotICAvLyBB
cnJheSBhIGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAn
XDAnLgotICBjaGFyIGFbXSA9IHsgJ0gnLCAnXDAnLCAnaScgfTsKLSAgRVhQRUNUX0VRKCJcIkhc
XDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFycmF5SGVscGVyKGEpKTsKLX0KLQot
Ly8gY29uc3QgY2hhciBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5VTC4KLVRFU1QoUHJpbnRBcnJh
eVRlc3QsIENvbnN0Q2hhckFycmF5V2l0aFRlcm1pbmF0aW5nTnVsKSB7Ci0gIGNvbnN0IGNoYXIg
YVtdID0gIlwwSGkiOwotICBFWFBFQ1RfRVEoIlwiXFwwSGlcIiIsIFByaW50QXJyYXlIZWxwZXIo
YSkpOwotfQotCi0vLyBjb25zdCB3Y2hhcl90IGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVM
LgotVEVTVChQcmludEFycmF5VGVzdCwgV0NoYXJBcnJheVdpdGhOb1Rlcm1pbmF0aW5nTnVsKSB7
Ci0gIC8vIEFycmF5IGEgY29udGFpbnMgJ1wwJyBpbiB0aGUgbWlkZGxlIGFuZCBkb2Vzbid0IGVu
ZCB3aXRoICdcMCcuCi0gIGNvbnN0IHdjaGFyX3QgYVtdID0geyBMJ0gnLCBMJ1wwJywgTCdpJyB9
OwotICBFWFBFQ1RfRVEoIkxcIkhcXDBpXCIgKG5vIHRlcm1pbmF0aW5nIE5VTCkiLCBQcmludEFy
cmF5SGVscGVyKGEpKTsKLX0KLQotLy8gd2NoYXJfdCBhcnJheSB3aXRoIHRlcm1pbmF0aW5nIE5V
TC4KLVRFU1QoUHJpbnRBcnJheVRlc3QsIFdDb25zdENoYXJBcnJheVdpdGhUZXJtaW5hdGluZ051
bCkgewotICBjb25zdCB3Y2hhcl90IGFbXSA9IEwiXDBIaSI7Ci0gIEVYUEVDVF9FUSgiTFwiXFww
SGlcIiIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwotfQotCi0vLyBBcnJheSBvZiBvYmplY3RzLgot
VEVTVChQcmludEFycmF5VGVzdCwgT2JqZWN0QXJyYXkpIHsKLSAgc3RkOjpzdHJpbmcgYVszXSA9
IHsiSGkiLCAiSGVsbG8iLCAiTmkgaGFvIn07Ci0gIEVYUEVDVF9FUSgieyBcIkhpXCIsIFwiSGVs
bG9cIiwgXCJOaSBoYW9cIiB9IiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Ci19Ci0KLS8vIEFycmF5
IHdpdGggbWFueSBlbGVtZW50cy4KLVRFU1QoUHJpbnRBcnJheVRlc3QsIEJpZ0FycmF5KSB7Ci0g
IGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKLSAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAs
IDAsIDAsIDAsIC4uLiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCB9IiwKLSAgICAgICAgICAgIFBy
aW50QXJyYXlIZWxwZXIoYSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyA6OnN0cmluZyBhbmQg
OjpzdGQ6OnN0cmluZy4KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0vLyA6OnN0cmlu
Zy4KLVRFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgewotICBj
b25zdCBjaGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7Ci0gIGNv
bnN0IDo6c3RyaW5nIHN0cihzLCBzaXplb2YocykpOwotICBFWFBFQ1RfRVEoIlwiJ1xcXCI/XFxc
XFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdlxceDdGXFx4RkYgYVxcMFwiIiwKLSAgICAgICAgICAg
IFByaW50KHN0cikpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0v
LyA6OnN0ZDo6c3RyaW5nLgotVEVTVChQcmludFN0cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNw
YWNlKSB7Ci0gIGNvbnN0IGNoYXIgc1tdID0gIidcIj9cXFxhXGJcZlxuXDBcclx0XHZceDdGXHhG
RiBhIjsKLSAgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIocywgc2l6ZW9mKHMpKTsKLSAgRVhQRUNU
X0VRKCJcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBc
IiIsCi0gICAgICAgICAgICBQcmludChzdHIpKTsKLX0KLQotVEVTVChQcmludFN0cmluZ1Rlc3Qs
IFN0cmluZ0FtYmlndW91c0hleCkgewotICAvLyAiXHg2QkFOQU5BIiBpcyBhbWJpZ3VvdXMsIGl0
IGNhbiBiZSBpbnRlcnByZXRlZCBhcyBzdGFydGluZyB3aXRoIGVpdGhlciBvZjoKLSAgLy8gJ1x4
NicsICdceDZCJywgb3IgJ1x4NkJBJy4KLQotICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBm
b2xsb3dpbmcgYnkgYSBkZWNpbWFsIGRpZ2l0Ci0gIEVYUEVDVF9FUSgiXCIwXFx4MTJcIiBcIjNc
IiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIjBceDEyIiAiMyIpKSk7Ci0gIC8vIGEgaGV4IGVzY2Fw
aW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGhleCBkaWdpdCAobG93ZXItY2FzZSkKLSAgRVhQ
RUNUX0VRKCJcIm1tXFx4NlwiIFwiYmFuYW5hc1wiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygibW1c
eDYiICJiYW5hbmFzIikpKTsKLSAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5n
IGJ5IGEgaGV4IGRpZ2l0ICh1cHBlci1jYXNlKQotICBFWFBFQ1RfRVEoIlwiTk9NXFx4NlwiIFwi
QkFOQU5BXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCJOT01ceDYiICJCQU5BTkEiKSkpOwotICAv
LyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBmb2xsb3dpbmcgYnkgYSBub24teGRpZ2l0Ci0gIEVY
UEVDVF9FUSgiXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6c3RyaW5nKCIhXHg1LSEiKSkpOwot
fQotCi0vLyBUZXN0cyBwcmludGluZyA6OndzdHJpbmcgYW5kIDo6c3RkOjp3c3RyaW5nLgotCi0j
aWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0vLyA6OndzdHJpbmcuCi1URVNUKFByaW50V2lk
ZVN0cmluZ1Rlc3QsIFN0cmluZ0luR2xvYmFsTmFtZXNwYWNlKSB7Ci0gIGNvbnN0IHdjaGFyX3Qg
c1tdID0gTCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7Ci0g
IGNvbnN0IDo6d3N0cmluZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7Ci0gIEVY
UEVDVF9FUSgiTFwiJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKLSAgICAgICAg
ICAgICJcXHhEM1xceDU3NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKLSAgICAgICAgICAgIFByaW50
KHN0cikpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcKLQotI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwotLy8gOjpzdGQ6OndzdHJpbmcuCi1URVNUKFByaW50V2lkZVN0
cmluZ1Rlc3QsIFN0cmluZ0luU3RkTmFtZXNwYWNlKSB7Ci0gIGNvbnN0IHdjaGFyX3Qgc1tdID0g
TCInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHhEM1x4NTc2XHg4RDNceEM3NEQgYSI7Ci0gIGNvbnN0
IDo6c3RkOjp3c3RyaW5nIHN0cihzLCBzaXplb2Yocykvc2l6ZW9mKHdjaGFyX3QpKTsKLSAgRVhQ
RUNUX0VRKCJMXCInXFxcIj9cXFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2IgotICAgICAgICAg
ICAgIlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXFwwXCIiLAotICAgICAgICAgICAgUHJpbnQo
c3RyKSk7Ci19Ci0KLVRFU1QoUHJpbnRXaWRlU3RyaW5nVGVzdCwgU3RyaW5nQW1iaWd1b3VzSGV4
KSB7Ci0gIC8vIHNhbWUgZm9yIHdpZGUgc3RyaW5ncy4KLSAgRVhQRUNUX0VRKCJMXCIwXFx4MTJc
IiBMXCIzXCIiLCBQcmludCg6OnN0ZDo6d3N0cmluZyhMIjBceDEyIiBMIjMiKSkpOwotICBFWFBF
Q1RfRVEoIkxcIm1tXFx4NlwiIExcImJhbmFuYXNcIiIsCi0gICAgICAgICAgICBQcmludCg6OnN0
ZDo6d3N0cmluZyhMIm1tXHg2IiBMImJhbmFuYXMiKSkpOwotICBFWFBFQ1RfRVEoIkxcIk5PTVxc
eDZcIiBMXCJCQU5BTkFcIiIsCi0gICAgICAgICAgICBQcmludCg6OnN0ZDo6d3N0cmluZyhMIk5P
TVx4NiIgTCJCQU5BTkEiKSkpOwotICBFWFBFQ1RfRVEoIkxcIiFcXHg1LSFcIiIsIFByaW50KDo6
c3RkOjp3c3RyaW5nKEwiIVx4NS0hIikpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9X
U1RSSU5HCi0KLS8vIFRlc3RzIHByaW50aW5nIHR5cGVzIHRoYXQgc3VwcG9ydCBnZW5lcmljIHN0
cmVhbWluZyAoaS5lLiBzdHJlYW1pbmcKLS8vIHRvIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBD
aGFyVHJhaXRzPiBmb3IgYW55IHZhbGlkIENoYXIgYW5kCi0vLyBDaGFyVHJhaXRzIHR5cGVzKS4K
LQotLy8gVGVzdHMgcHJpbnRpbmcgYSBub24tdGVtcGxhdGUgdHlwZSB0aGF0IHN1cHBvcnRzIGdl
bmVyaWMgc3RyZWFtaW5nLgotCi1jbGFzcyBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIHt9OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cz4KLXN0ZDo6YmFzaWNf
b3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKLSAgICBzdGQ6OmJhc2ljX29z
dHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAotICAgIGNvbnN0IEFsbG93c0dlbmVyaWNTdHJl
YW1pbmcmIC8qIGEgKi8pIHsKLSAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3RyZWFtaW5n
IjsKLX0KLQotVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0cmVhbWluZ1Rlc3QsIE5vblRlbXBs
YXRlVHlwZSkgewotICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nIGE7Ci0gIEVYUEVDVF9FUSgiQWxs
b3dzR2VuZXJpY1N0cmVhbWluZyIsIFByaW50KGEpKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcg
YSB0ZW1wbGF0ZSB0eXBlIHRoYXQgc3VwcG9ydHMgZ2VuZXJpYyBzdHJlYW1pbmcuCi0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBsYXRlIHt9
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgdHlwZW5hbWUgQ2hhclRyYWl0cywgdHlwZW5h
bWUgVD4KLXN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgK
LSAgICBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9zLAotICAgIGNvbnN0
IEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZTxUPiYgLyogYSAqLykgewotICByZXR1cm4g
b3MgPDwgIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSI7Ci19Ci0KLVRFU1QoUHJpbnRU
eXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBUZW1wbGF0ZVR5cGUpIHsKLSAgQWxsb3dzR2Vu
ZXJpY1N0cmVhbWluZ1RlbXBsYXRlPGludD4gYTsKLSAgRVhQRUNUX0VRKCJBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nVGVtcGxhdGUiLCBQcmludChhKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIGEg
dHlwZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nIGFuZCBjYW4gYmUKLS8vIGltcGxp
Y2l0bHkgY29udmVydGVkIHRvIGFub3RoZXIgcHJpbnRhYmxlIHR5cGUuCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVy
c2lvblRlbXBsYXRlIHsKLSBwdWJsaWM6Ci0gIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJU
cmFpdHMsIHR5cGVuYW1lIFQ+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4m
IG9wZXJhdG9yPDwoCi0gICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBv
cywKLSAgICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9u
VGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKLSAgcmV0dXJuIG9zIDw8ICJBbGxvd3NHZW5lcmljU3Ry
ZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUiOwotfQotCi1URVNUKFByaW50VHlw
ZVdpdGhHZW5lcmljU3RyZWFtaW5nVGVzdCwgVHlwZUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgewot
ICBBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGU8aW50
PiBhOwotICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZl
cnNpb25UZW1wbGF0ZSIsIFByaW50KGEpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVFJJTkdfUElF
Q0VfCi0KLS8vIFRlc3RzIHByaW50aW5nIFN0cmluZ1BpZWNlLgotCi1URVNUKFByaW50U3RyaW5n
UGllY2VUZXN0LCBTaW1wbGVTdHJpbmdQaWVjZSkgewotICBjb25zdCBTdHJpbmdQaWVjZSBzcCA9
ICJIZWxsbyI7Ci0gIEVYUEVDVF9FUSgiXCJIZWxsb1wiIiwgUHJpbnQoc3ApKTsKLX0KLQotVEVT
VChQcmludFN0cmluZ1BpZWNlVGVzdCwgVW5wcmludGFibGVDaGFyYWN0ZXJzKSB7Ci0gIGNvbnN0
IGNoYXIgc3RyW10gPSAiTlVMIChcMCkgYW5kIFxyXHQiOwotICBjb25zdCBTdHJpbmdQaWVjZSBz
cChzdHIsIHNpemVvZihzdHIpIC0gMSk7Ci0gIEVYUEVDVF9FUSgiXCJOVUwgKFxcMCkgYW5kIFxc
clxcdFwiIiwgUHJpbnQoc3ApKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJ
RUNFXwotCi0vLyBUZXN0cyBwcmludGluZyBTVEwgY29udGFpbmVycy4KLQotVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIEVtcHR5RGVxdWUpIHsKLSAgZGVxdWU8Y2hhcj4gZW1wdHk7Ci0gIEVY
UEVDVF9FUSgie30iLCBQcmludChlbXB0eSkpOwotfQotCi1URVNUKFByaW50U3RsQ29udGFpbmVy
VGVzdCwgTm9uRW1wdHlEZXF1ZSkgewotICBkZXF1ZTxpbnQ+IG5vbl9lbXB0eTsKLSAgbm9uX2Vt
cHR5LnB1c2hfYmFjaygxKTsKLSAgbm9uX2VtcHR5LnB1c2hfYmFjaygzKTsKLSAgRVhQRUNUX0VR
KCJ7IDEsIDMgfSIsIFByaW50KG5vbl9lbXB0eSkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0hBU0hf
TUFQXwotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgT25lRWxlbWVudEhhc2hNYXApIHsK
LSAgaGFzaF9tYXA8aW50LCBjaGFyPiBtYXAxOwotICBtYXAxWzFdID0gJ2EnOwotICBFWFBFQ1Rf
RVEoInsgKDEsICdhJyAoOTcsIDB4NjEpKSB9IiwgUHJpbnQobWFwMSkpOwotfQotCi1URVNUKFBy
aW50U3RsQ29udGFpbmVyVGVzdCwgSGFzaE11bHRpTWFwKSB7Ci0gIGhhc2hfbXVsdGltYXA8aW50
LCBib29sPiBtYXAxOwotICBtYXAxLmluc2VydChtYWtlX3BhaXIoNSwgdHJ1ZSkpOwotICBtYXAx
Lmluc2VydChtYWtlX3BhaXIoNSwgZmFsc2UpKTsKLQotICAvLyBFbGVtZW50cyBvZiBoYXNoX211
bHRpbWFwIGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRlci4KLSAgY29uc3Qgc3RkOjpzdHJpbmcg
cmVzdWx0ID0gUHJpbnQobWFwMSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdCA9PSAieyAoNSwgdHJ1
ZSksICg1LCBmYWxzZSkgfSIgfHwKLSAgICAgICAgICAgICAgcmVzdWx0ID09ICJ7ICg1LCBmYWxz
ZSksICg1LCB0cnVlKSB9IikKLSAgICAgICAgICAgICAgICAgIDw8ICIgd2hlcmUgUHJpbnQobWFw
MSkgcmV0dXJucyBcIiIgPDwgcmVzdWx0IDw8ICJcIi4iOwotfQotCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19IQVNIX01BUF8KLQotI2lmIEdURVNUX0hBU19IQVNIX1NFVF8KLQotVEVTVChQcmludFN0
bENvbnRhaW5lclRlc3QsIEhhc2hTZXQpIHsKLSAgaGFzaF9zZXQ8aW50PiBzZXQxOwotICBzZXQx
Lmluc2VydCgxKTsKLSAgRVhQRUNUX0VRKCJ7IDEgfSIsIFByaW50KHNldDEpKTsKLX0KLQotVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIEhhc2hNdWx0aVNldCkgewotICBjb25zdCBpbnQga1Np
emUgPSA1OwotICBpbnQgYVtrU2l6ZV0gPSB7IDEsIDEsIDIsIDUsIDEgfTsKLSAgaGFzaF9tdWx0
aXNldDxpbnQ+IHNldDEoYSwgYSArIGtTaXplKTsKLQotICAvLyBFbGVtZW50cyBvZiBoYXNoX211
bHRpc2V0IGNhbiBiZSBwcmludGVkIGluIGFueSBvcmRlci4KLSAgY29uc3Qgc3RkOjpzdHJpbmcg
cmVzdWx0ID0gUHJpbnQoc2V0MSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkX3BhdHRl
cm4gPSAieyBkLCBkLCBkLCBkLCBkIH0iOyAgLy8gZCBtZWFucyBhIGRpZ2l0LgotCi0gIC8vIFZl
cmlmaWVzIHRoZSByZXN1bHQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgcGF0dGVybjsgYWxzbyBleHRy
YWN0cwotICAvLyB0aGUgbnVtYmVycyBpbiB0aGUgcmVzdWx0LgotICBBU1NFUlRfRVEoZXhwZWN0
ZWRfcGF0dGVybi5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKLSAgc3RkOjp2ZWN0b3I8aW50
PiBudW1iZXJzOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSByZXN1bHQubGVuZ3RoKCk7IGkr
KykgewotICAgIGlmIChleHBlY3RlZF9wYXR0ZXJuW2ldID09ICdkJykgewotICAgICAgQVNTRVJU
X05FKGlzZGlnaXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVzdWx0W2ldKSksIDApOwot
ICAgICAgbnVtYmVycy5wdXNoX2JhY2socmVzdWx0W2ldIC0gJzAnKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhdHRlcm5baV0sIHJlc3VsdFtpXSkgPDwgIiB3aGVy
ZSByZXN1bHQgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgcmVzdWx0OwotICAgIH0KLSAgfQotCi0gIC8vIE1ha2VzIHN1cmUgdGhlIHJlc3Vs
dCBjb250YWlucyB0aGUgcmlnaHQgbnVtYmVycy4KLSAgc3RkOjpzb3J0KG51bWJlcnMuYmVnaW4o
KSwgbnVtYmVycy5lbmQoKSk7Ci0gIHN0ZDo6c29ydChhLCBhICsga1NpemUpOwotICBFWFBFQ1Rf
VFJVRShzdGQ6OmVxdWFsKGEsIGEgKyBrU2l6ZSwgbnVtYmVycy5iZWdpbigpKSk7Ci19Ci0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0hBU0hfU0VUXwotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVz
dCwgTGlzdCkgewotICBjb25zdCBzdGQ6OnN0cmluZyBhW10gPSB7ImhlbGxvIiwgIndvcmxkIn07
Ci0gIGNvbnN0IGxpc3Q8c3RkOjpzdHJpbmc+IHN0cmluZ3MoYSwgYSArIDIpOwotICBFWFBFQ1Rf
RVEoInsgXCJoZWxsb1wiLCBcIndvcmxkXCIgfSIsIFByaW50KHN0cmluZ3MpKTsKLX0KLQotVEVT
VChQcmludFN0bENvbnRhaW5lclRlc3QsIE1hcCkgewotICBtYXA8aW50LCBib29sPiBtYXAxOwot
ICBtYXAxWzFdID0gdHJ1ZTsKLSAgbWFwMVs1XSA9IGZhbHNlOwotICBtYXAxWzNdID0gdHJ1ZTsK
LSAgRVhQRUNUX0VRKCJ7ICgxLCB0cnVlKSwgKDMsIHRydWUpLCAoNSwgZmFsc2UpIH0iLCBQcmlu
dChtYXAxKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBNdWx0aU1hcCkgewot
ICBtdWx0aW1hcDxib29sLCBpbnQ+IG1hcDE7Ci0gIC8vIFRoZSBtYWtlX3BhaXIgdGVtcGxhdGUg
ZnVuY3Rpb24gd291bGQgZGVkdWNlIHRoZSB0eXBlIGFzCi0gIC8vIHBhaXI8Ym9vbCwgaW50PiBo
ZXJlLCBhbmQgc2luY2UgdGhlIGtleSBwYXJ0IGluIGEgbXVsdGltYXAgaGFzIHRvCi0gIC8vIGJl
IGNvbnN0YW50LCB3aXRob3V0IGEgdGVtcGxhdGVkIGN0b3IgaW4gdGhlIHBhaXIgY2xhc3MgKGFz
IGluCi0gIC8vIGxpYkNzdGQgb24gU29sYXJpcyksIG1ha2VfcGFpciBjYWxsIHdvdWxkIGZhaWwg
dG8gY29tcGlsZSBhcyBubwotICAvLyBpbXBsaWNpdCBjb252ZXJzaW9uIGlzIGZvdW5kLiAgVGh1
cyBleHBsaWNpdCB0eXBlbmFtZSBpcyB1c2VkCi0gIC8vIGhlcmUgaW5zdGVhZC4KLSAgbWFwMS5p
bnNlcnQocGFpcjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDApKTsKLSAgbWFwMS5pbnNlcnQocGFp
cjxjb25zdCBib29sLCBpbnQ+KHRydWUsIDEpKTsKLSAgbWFwMS5pbnNlcnQocGFpcjxjb25zdCBi
b29sLCBpbnQ+KGZhbHNlLCAyKSk7Ci0gIEVYUEVDVF9FUSgieyAoZmFsc2UsIDIpLCAodHJ1ZSwg
MCksICh0cnVlLCAxKSB9IiwgUHJpbnQobWFwMSkpOwotfQotCi1URVNUKFByaW50U3RsQ29udGFp
bmVyVGVzdCwgU2V0KSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBhW10gPSB7IDMsIDAsIDUgfTsK
LSAgc2V0PHVuc2lnbmVkIGludD4gc2V0MShhLCBhICsgMyk7Ci0gIEVYUEVDVF9FUSgieyAwLCAz
LCA1IH0iLCBQcmludChzZXQxKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBN
dWx0aVNldCkgewotICBjb25zdCBpbnQgYVtdID0geyAxLCAxLCAyLCA1LCAxIH07Ci0gIG11bHRp
c2V0PGludD4gc2V0MShhLCBhICsgNSk7Ci0gIEVYUEVDVF9FUSgieyAxLCAxLCAxLCAyLCA1IH0i
LCBQcmludChzZXQxKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KLS8v
IDxzbGlzdD4gaXMgYXZhaWxhYmxlIG9uIExpbnV4IGluIHRoZSBnb29nbGUzIG1vZGUsIGJ1dCBu
b3Qgb24KLS8vIFdpbmRvd3Mgb3IgTWFjIE9TIFguCi0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJU
ZXN0LCBTaW5nbHlMaW5rZWRMaXN0KSB7Ci0gIGludCBhW10gPSB7IDksIDIsIDggfTsKLSAgY29u
c3Qgc3RkOjpmb3J3YXJkX2xpc3Q8aW50PiBpbnRzKGEsIGEgKyAzKTsKLSAgRVhQRUNUX0VRKCJ7
IDksIDIsIDggfSIsIFByaW50KGludHMpKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9G
T1JXQVJEX0xJU1RfCi0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBQYWlyKSB7Ci0gIHBh
aXI8Y29uc3QgYm9vbCwgaW50PiBwKHRydWUsIDUpOwotICBFWFBFQ1RfRVEoIih0cnVlLCA1KSIs
IFByaW50KHApKTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFZlY3Rvcikgewot
ICB2ZWN0b3I8aW50PiB2OwotICB2LnB1c2hfYmFjaygxKTsKLSAgdi5wdXNoX2JhY2soMik7Ci0g
IEVYUEVDVF9FUSgieyAxLCAyIH0iLCBQcmludCh2KSk7Ci19Ci0KLVRFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBMb25nU2VxdWVuY2UpIHsKLSAgY29uc3QgaW50IGFbMTAwXSA9IHsgMSwgMiwg
MyB9OwotICBjb25zdCB2ZWN0b3I8aW50PiB2KGEsIGEgKyAxMDApOwotICBFWFBFQ1RfRVEoInsg
MSwgMiwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgIgotICAg
ICAgICAgICAgIjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC4u
LiB9IiwgUHJpbnQodikpOwotfQotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTmVzdGVk
Q29udGFpbmVyKSB7Ci0gIGNvbnN0IGludCBhMVtdID0geyAxLCAyIH07Ci0gIGNvbnN0IGludCBh
MltdID0geyAzLCA0LCA1IH07Ci0gIGNvbnN0IGxpc3Q8aW50PiBsMShhMSwgYTEgKyAyKTsKLSAg
Y29uc3QgbGlzdDxpbnQ+IGwyKGEyLCBhMiArIDMpOwotCi0gIHZlY3RvcjxsaXN0PGludD4gPiB2
OwotICB2LnB1c2hfYmFjayhsMSk7Ci0gIHYucHVzaF9iYWNrKGwyKTsKLSAgRVhQRUNUX0VRKCJ7
IHsgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwgUHJpbnQodikpOwotfQotCi1URVNUKFByaW50U3Rs
Q29udGFpbmVyVGVzdCwgT25lRGltZW5zaW9uYWxOYXRpdmVBcnJheSkgewotICBjb25zdCBpbnQg
YVszXSA9IHsgMSwgMiwgMyB9OwotICBOYXRpdmVBcnJheTxpbnQ+IGIoYSwgMywgUmVsYXRpb25U
b1NvdXJjZVJlZmVyZW5jZSgpKTsKLSAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMgfSIsIFByaW50KGIp
KTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFR3b0RpbWVuc2lvbmFsTmF0aXZl
QXJyYXkpIHsKLSAgY29uc3QgaW50IGFbMl1bM10gPSB7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYg
fSB9OwotICBOYXRpdmVBcnJheTxpbnRbM10+IGIoYSwgMiwgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSgpKTsKLSAgRVhQRUNUX0VRKCJ7IHsgMSwgMiwgMyB9LCB7IDQsIDUsIDYgfSB9IiwgUHJp
bnQoYikpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgY2xhc3MgbmFtZWQgaXRlcmF0b3IgaXNuJ3Qg
dHJlYXRlZCBhcyBhIGNvbnRhaW5lci4KLQotc3RydWN0IGl0ZXJhdG9yIHsKLSAgY2hhciB4Owot
fTsKLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIEl0ZXJhdG9yKSB7Ci0gIGl0ZXJhdG9y
IGl0ID0ge307Ci0gIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+IiwgUHJpbnQoaXQpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGNvbnN0X2l0ZXJhdG9yIGlzbid0IHRy
ZWF0ZWQgYXMgYSBjb250YWluZXIuCi0KLXN0cnVjdCBjb25zdF9pdGVyYXRvciB7Ci0gIGNoYXIg
eDsKLX07Ci0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBDb25zdEl0ZXJhdG9yKSB7Ci0g
IGNvbnN0X2l0ZXJhdG9yIGl0ID0ge307Ci0gIEVYUEVDVF9FUSgiMS1ieXRlIG9iamVjdCA8MDA+
IiwgUHJpbnQoaXQpKTsKLX0KLQotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKLS8vIFRlc3RzIHBy
aW50aW5nIDo6c3RkOjp0cjE6OnR1cGxlcy4KLQotLy8gVHVwbGVzIG9mIHZhcmlvdXMgYXJpdGll
cy4KLVRFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgewotICA6OnN0ZDo6dHIx
Ojp0dXBsZTw+IHQwOwotICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKLQotICA6OnN0ZDo6
dHIxOjp0dXBsZTxpbnQ+IHQxKDUpOwotICBFWFBFQ1RfRVEoIig1KSIsIFByaW50KHQxKSk7Ci0K
LSAgOjpzdGQ6OnRyMTo6dHVwbGU8Y2hhciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKLSAgRVhQRUNU
X0VRKCIoJ2EnICg5NywgMHg2MSksIHRydWUpIiwgUHJpbnQodDIpKTsKLQotICA6OnN0ZDo6dHIx
Ojp0dXBsZTxib29sLCBpbnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOwotICBFWFBFQ1RfRVEoIihm
YWxzZSwgMiwgMykiLCBQcmludCh0MykpOwotCi0gIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGlu
dCwgaW50LCBpbnQ+IHQ0KGZhbHNlLCAyLCAzLCA0KTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIs
IDMsIDQpIiwgUHJpbnQodDQpKTsKLQotICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGlu
dCwgaW50LCBib29sPiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7Ci0gIEVYUEVDVF9FUSgiKGZh
bHNlLCAyLCAzLCA0LCB0cnVlKSIsIFByaW50KHQ1KSk7Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8
Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwg
Nik7Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7
Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBp
bnQ+IHQ3KAotICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpOwotICBFWFBFQ1RfRVEo
IihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNykiLCBQcmludCh0NykpOwotCi0gIDo6c3RkOjp0
cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0OCgK
LSAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKTsKLSAgRVhQRUNUX0VRKCIo
ZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKLQotICA6OnN0
ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbCwg
aW50PiB0OSgKLSAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KTsKLSAg
RVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUsIDkpIiwgUHJpbnQo
dDkpKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7Ci0gIC8vIFZDKysgMjAxMCdz
IGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVudCwgcmVxdWlyaW5n
Ci0gIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVzZWQuCi0gIDo6c3Rk
Ojp0cjE6OnR1cGxlPGJvb2wsIGNoYXIsIHNob3J0LCB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIs
ICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkludDY0
LCBmbG9hdCwgZG91YmxlLCBjb25zdCBjaGFyKiwgdm9pZCosCi0gICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nPgotICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUs
IHN0ciwgSW1wbGljaXRDYXN0Xzx2b2lkKj4oTlVMTCksCi0gICAgICAgICAgIjEwIik7Ci0gIEVY
UEVDVF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsg
UHJpbnRQb2ludGVyKHN0cikgKwotICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVM
TCwgXCIxMFwiKSIsCi0gICAgICAgICAgICBQcmludCh0MTApKTsKLX0KLQotLy8gTmVzdGVkIHR1
cGxlcy4KLVRFU1QoUHJpbnRUcjFUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7Ci0gIDo6c3RkOjp0
cjE6OnR1cGxlPCA6OnN0ZDo6dHIxOjp0dXBsZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCi0g
ICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOwotICBFWFBFQ1RfRVEo
IigoNSwgdHJ1ZSksICdhJyAoOTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOwotfQotCi0jZW5k
aWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKLQotI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCi0v
LyBUZXN0cyBwcmludGluZyA6OnN0ZDo6dHVwbGVzLgotCi0vLyBUdXBsZXMgb2YgdmFyaW91cyBh
cml0aWVzLgotVEVTVChQcmludFN0ZFR1cGxlVGVzdCwgVmFyaW91c1NpemVzKSB7Ci0gIDo6c3Rk
Ojp0dXBsZTw+IHQwOwotICBFWFBFQ1RfRVEoIigpIiwgUHJpbnQodDApKTsKLQotICA6OnN0ZDo6
dHVwbGU8aW50PiB0MSg1KTsKLSAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwotCi0gIDo6
c3RkOjp0dXBsZTxjaGFyLCBib29sPiB0MignYScsIHRydWUpOwotICBFWFBFQ1RfRVEoIignYScg
KDk3LCAweDYxKSwgdHJ1ZSkiLCBQcmludCh0MikpOwotCi0gIDo6c3RkOjp0dXBsZTxib29sLCBp
bnQsIGludD4gdDMoZmFsc2UsIDIsIDMpOwotICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMykiLCBQ
cmludCh0MykpOwotCi0gIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0NChmYWxz
ZSwgMiwgMywgNCk7Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50KHQ0KSk7
Ci0KLSAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2w+IHQ1KGZhbHNlLCAy
LCAzLCA0LCB0cnVlKTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUpIiwgUHJp
bnQodDUpKTsKLQotICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50
PiB0NihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNik7Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAz
LCA0LCB0cnVlLCA2KSIsIFByaW50KHQ2KSk7Ci0KLSAgOjpzdGQ6OnR1cGxlPGJvb2wsIGludCwg
aW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKLSAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVl
LCA2LCA3KTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcpIiwgUHJp
bnQodDcpKTsKLQotICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50
LCBpbnQsIGJvb2w+IHQ4KAotICAgICAgZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUp
OwotICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSkiLCBQcmlu
dCh0OCkpOwotCi0gIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sLCBpbnQs
IGludCwgYm9vbCwgaW50PiB0OSgKLSAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0
cnVlLCA5KTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUs
IDkpIiwgUHJpbnQodDkpKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAiOCI7Ci0gIC8v
IFZDKysgMjAxMCdzIGltcGxlbWVudGF0aW9uIG9mIHR1cGxlIG9mIEMrKzB4IGlzIGRlZmljaWVu
dCwgcmVxdWlyaW5nCi0gIC8vIGFuIGV4cGxpY2l0IHR5cGUgY2FzdCBvZiBOVUxMIHRvIGJlIHVz
ZWQuCi0gIDo6c3RkOjp0dXBsZTxib29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6
OkludDMyLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50
NjQsIGZsb2F0LCBkb3VibGUsIGNvbnN0IGNoYXIqLCB2b2lkKiwKLSAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nPgotICAgICAgdDEwKGZhbHNlLCAnYScsIDMsIDQsIDUsIDEuNUYsIC0yLjUsIHN0
ciwgSW1wbGljaXRDYXN0Xzx2b2lkKj4oTlVMTCksCi0gICAgICAgICAgIjEwIik7Ci0gIEVYUEVD
VF9FUSgiKGZhbHNlLCAnYScgKDk3LCAweDYxKSwgMywgNCwgNSwgMS41LCAtMi41LCAiICsgUHJp
bnRQb2ludGVyKHN0cikgKwotICAgICAgICAgICAgIiBwb2ludGluZyB0byBcIjhcIiwgTlVMTCwg
XCIxMFwiKSIsCi0gICAgICAgICAgICBQcmludCh0MTApKTsKLX0KLQotLy8gTmVzdGVkIHR1cGxl
cy4KLVRFU1QoUHJpbnRTdGRUdXBsZVRlc3QsIE5lc3RlZFR1cGxlKSB7Ci0gIDo6c3RkOjp0dXBs
ZTwgOjpzdGQ6OnR1cGxlPGludCwgYm9vbD4sIGNoYXI+IG5lc3RlZCgKLSAgICAgIDo6c3RkOjpt
YWtlX3R1cGxlKDUsIHRydWUpLCAnYScpOwotICBFWFBFQ1RfRVEoIigoNSwgdHJ1ZSksICdhJyAo
OTcsIDB4NjEpKSIsIFByaW50KG5lc3RlZCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0xBTkdf
Q1hYMTEKLQotLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGVz
LgotCi0vLyBVbnByaW50YWJsZSB0eXBlcyBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLVRFU1Qo
UHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJbkdsb2JhbE5hbWVzcGFjZSkgewotICBFWFBFQ1Rf
RVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsCi0gICAgICAgICAgICBQcmludChVbnByaW50YWJsZVRl
bXBsYXRlSW5HbG9iYWw8Y2hhcj4oKSkpOwotfQotCi0vLyBVbnByaW50YWJsZSB0eXBlcyBpbiBh
IHVzZXIgbmFtZXNwYWNlLgotVEVTVChQcmludFVucHJpbnRhYmxlVHlwZVRlc3QsIEluVXNlck5h
bWVzcGFjZSkgewotICBFWFBFQ1RfRVEoIjE2LWJ5dGUgb2JqZWN0IDxFRi0xMiAwMC0wMCAzNC1B
QiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAotICAgICAgICAgICAgUHJpbnQoOjpm
b286OlVucHJpbnRhYmxlSW5Gb28oKSkpOwotfQotCi0vLyBVbnByaW50YWJsZSB0eXBlcyBhcmUg
dGhhdCB0b28gYmlnIHRvIGJlIHByaW50ZWQgY29tcGxldGVseS4KLQotc3RydWN0IEJpZyB7Ci0g
IEJpZygpIHsgbWVtc2V0KGFycmF5LCAwLCBzaXplb2YoYXJyYXkpKTsgfQotICBjaGFyIGFycmF5
WzI1N107Ci19OwotCi1URVNUKFByaW50VW5wcml0YWJsZVR5cGVUZXN0LCBCaWdPYmplY3QpIHsK
LSAgRVhQRUNUX0VRKCIyNTctYnl0ZSBvYmplY3QgPDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwICIKLSAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCi0gICAgICAgICAgICAiMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgotICAgICAg
ICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIC4uLiAwMC0wMCAwMC0w
MCAwMC0wMCAiCi0gICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgIgotICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKLSAgICAgICAg
ICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMD4i
LAotICAgICAgICAgICAgUHJpbnQoQmlnKCkpKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgdXNl
ci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZXMuCi0KLS8vIFN0cmVhbWFibGUgdHlwZXMgaW4gdGhl
IGdsb2JhbCBuYW1lc3BhY2UuCi1URVNUKFByaW50U3RyZWFtYWJsZVR5cGVUZXN0LCBJbkdsb2Jh
bE5hbWVzcGFjZSkgewotICBTdHJlYW1hYmxlSW5HbG9iYWwgeDsKLSAgRVhQRUNUX0VRKCJTdHJl
YW1hYmxlSW5HbG9iYWwiLCBQcmludCh4KSk7Ci0gIEVYUEVDVF9FUSgiU3RyZWFtYWJsZUluR2xv
YmFsKiIsIFByaW50KCZ4KSk7Ci19Ci0KLS8vIFByaW50YWJsZSB0ZW1wbGF0ZSB0eXBlcyBpbiBh
IHVzZXIgbmFtZXNwYWNlLgotVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgVGVtcGxhdGVU
eXBlSW5Vc2VyTmFtZXNwYWNlKSB7Ci0gIEVYUEVDVF9FUSgiU3RyZWFtYWJsZVRlbXBsYXRlSW5G
b286IDAiLAotICAgICAgICAgICAgUHJpbnQoOjpmb286OlN0cmVhbWFibGVUZW1wbGF0ZUluRm9v
PGludD4oKSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgdHlwZXMgdGhh
dCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgotVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0
LCBJblVzZXJOYW1lc3BhY2UpIHsKLSAgRVhQRUNUX0VRKCJQcmludGFibGVWaWFQcmludFRvOiAw
IiwKLSAgICAgICAgICAgIFByaW50KDo6Zm9vOjpQcmludGFibGVWaWFQcmludFRvKCkpKTsKLX0K
LQotLy8gVGVzdHMgcHJpbnRpbmcgYSBwb2ludGVyIHRvIGEgdXNlci1kZWZpbmVkIHR5cGUgdGhh
dCBoYXMgYSA8PAotLy8gb3BlcmF0b3IgZm9yIGl0cyBwb2ludGVyLgotVEVTVChQcmludFByaW50
YWJsZVR5cGVUZXN0LCBQb2ludGVySW5Vc2VyTmFtZXNwYWNlKSB7Ci0gIDo6Zm9vOjpQb2ludGVy
UHJpbnRhYmxlIHg7Ci0gIEVYUEVDVF9FUSgiUG9pbnRlclByaW50YWJsZSoiLCBQcmludCgmeCkp
OwotfQotCi0vLyBUZXN0cyBwcmludGluZyB1c2VyLWRlZmluZWQgY2xhc3MgdGVtcGxhdGUgdGhh
dCBoYXZlIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgotVEVTVChQcmludFByaW50YWJsZVR5cGVUZXN0
LCBUZW1wbGF0ZUluVXNlck5hbWVzcGFjZSkgewotICBFWFBFQ1RfRVEoIlByaW50YWJsZVZpYVBy
aW50VG9UZW1wbGF0ZTogNSIsCi0gICAgICAgICAgICBQcmludCg6OmZvbzo6UHJpbnRhYmxlVmlh
UHJpbnRUb1RlbXBsYXRlPGludD4oNSkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVy
c2FsIHByaW50ZXIgcHJpbnRzIGJvdGggdGhlIGFkZHJlc3MgYW5kIHRoZQotLy8gdmFsdWUgb2Yg
YSByZWZlcmVuY2UuCi1URVNUKFByaW50UmVmZXJlbmNlVGVzdCwgUHJpbnRzQWRkcmVzc0FuZFZh
bHVlKSB7Ci0gIGludCBuID0gNTsKLSAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRlcigmbikg
KyAiIDUiLCBQcmludEJ5UmVmKG4pKTsKLQotICBpbnQgYVsyXVszXSA9IHsKLSAgICB7IDAsIDEs
IDIgfSwKLSAgICB7IDMsIDQsIDUgfQotICB9OwotICBFWFBFQ1RfRVEoIkAiICsgUHJpbnRQb2lu
dGVyKGEpICsgIiB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9IiwKLSAgICAgICAgICAgIFBy
aW50QnlSZWYoYSkpOwotCi0gIGNvbnN0IDo6Zm9vOjpVbnByaW50YWJsZUluRm9vIHg7Ci0gIEVY
UEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJngpICsgIiAxNi1ieXRlIG9iamVjdCAiCi0gICAg
ICAgICAgICAiPEVGLTEyIDAwLTAwIDM0LUFCIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
PiIsCi0gICAgICAgICAgICBQcmludEJ5UmVmKHgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUg
dW5pdmVyc2FsIHByaW50ZXIgcHJpbnRzIGEgZnVuY3Rpb24gcG9pbnRlciBwYXNzZWQgYnkKLS8v
IHJlZmVyZW5jZS4KLVRFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzRnVuY3Rpb25Qb2lu
dGVyKSB7Ci0gIHZvaWQgKCpmcCkoaW50IG4pID0gJk15RnVuY3Rpb247Ci0gIGNvbnN0IHN0ZDo6
c3RyaW5nIGZwX3BvaW50ZXJfc3RyaW5nID0KLSAgICAgIFByaW50UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPigmZnApKTsKLSAgLy8gV2UgY2Fubm90IGRpcmVjdGx5IGNhc3Qg
Jk15RnVuY3Rpb24gdG8gY29uc3Qgdm9pZCogYmVjYXVzZSB0aGUKLSAgLy8gc3RhbmRhcmQgZGlz
YWxsb3dzIGNhc3RpbmcgYmV0d2VlbiBwb2ludGVycyB0byBmdW5jdGlvbnMgYW5kCi0gIC8vIHBv
aW50ZXJzIHRvIG9iamVjdHMsIGFuZCBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MgMy40KSBlbmZv
cmNlCi0gIC8vIHRoaXMgbGltaXRhdGlvbi4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgZnBfc3RyaW5n
ID0gUHJpbnRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KAotICAgICAgcmVp
bnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oZnApKSk7Ci0gIEVYUEVDVF9FUSgi
QCIgKyBmcF9wb2ludGVyX3N0cmluZyArICIgIiArIGZwX3N0cmluZywKLSAgICAgICAgICAgIFBy
aW50QnlSZWYoZnApKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHByaW50ZXIg
cHJpbnRzIGEgbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXIKLS8vIHBhc3NlZCBieSByZWZlcmVuY2Uu
Ci1URVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlckZ1bmN0aW9uUG9pbnRlcikg
ewotICBpbnQgKEZvbzo6KnApKGNoYXIgY2gpID0gJkZvbzo6TXlNZXRob2Q7Ci0gIEVYUEVDVF9U
UlVFKEhhc1ByZWZpeCgKLSAgICAgIFByaW50QnlSZWYocCksCi0gICAgICAiQCIgKyBQcmludFBv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oJnApKSArICIgIiArCi0gICAgICAg
ICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOwotCi0gIGNoYXIgKEZvbzo6
KnAyKShpbnQgbikgPSAmRm9vOjpNeVZpcnR1YWxNZXRob2Q7Ci0gIEVYUEVDVF9UUlVFKEhhc1By
ZWZpeCgKLSAgICAgIFByaW50QnlSZWYocDIpLAotICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwMikpICsgIiAiICsKLSAgICAgICAgICBQcmlu
dChzaXplb2YocDIpKSArICItYnl0ZSBvYmplY3QgIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRo
ZSB1bml2ZXJzYWwgcHJpbnRlciBwcmludHMgYSBtZW1iZXIgdmFyaWFibGUgcG9pbnRlcgotLy8g
cGFzc2VkIGJ5IHJlZmVyZW5jZS4KLVRFU1QoUHJpbnRSZWZlcmVuY2VUZXN0LCBIYW5kbGVzTWVt
YmVyVmFyaWFibGVQb2ludGVyKSB7Ci0gIGludCAoRm9vOjoqcCkgPSAmRm9vOjp2YWx1ZTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCi0gICAgICBQcmludEJ5UmVmKHApLAot
ICAgICAgIkAiICsgUHJpbnRQb2ludGVyKCZwKSArICIgIiArIFByaW50KHNpemVvZihwKSkgKyAi
LWJ5dGUgb2JqZWN0ICIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2UoKSwgd2hpY2ggaXMgdXNlZCB0byBwcmludAotLy8gYW4gb3BlcmFuZCBp
biBhIGNvbXBhcmlzb24gYXNzZXJ0aW9uIChlLmcuIEFTU0VSVF9FUSkgd2hlbiB0aGUgYXNzZXJ0
aW9uCi0vLyBmYWlscywgZm9ybWF0cyB0aGUgb3BlcmFuZCBpbiB0aGUgZGVzaXJlZCB3YXkuCi0K
LS8vIHNjYWxhcgotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBX
b3Jrc0ZvclNjYWxhcikgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsCi0gICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoMTIzLCAxMjQpLmNfc3RyKCkpOwotfQot
Ci0vLyBub24tY2hhciBwb2ludGVyCi1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZVRlc3QsIFdvcmtzRm9yTm9uQ2hhclBvaW50ZXIpIHsKLSAgaW50IG4gPSAwOwotICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKCZuKSwKLSAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZSgmbiwgJm4pLmNfc3RyKCkpOwotfQotCi0vLyBub24tY2hhciBhcnJheQot
VEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBGb3JtYXRzTm9uQ2hh
ckFycmF5QXNQb2ludGVyKSB7Ci0gIC8vIEluIGV4cHJlc3Npb24gJ2FycmF5ID09IHgnLCAnYXJy
YXknIGlzIGNvbXBhcmVkIGJ5IHBvaW50ZXIuCi0gIC8vIFRoZXJlZm9yZSB3ZSB3YW50IHRvIHBy
aW50IGFuIGFycmF5IG9wZXJhbmQgYXMgYSBwb2ludGVyLgotICBpbnQgbltdID0geyAxLCAyLCAz
IH07Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIobiksCi0gICAgICAgICAgICBGb3JtYXRGb3JD
b21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobiwgbikuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIGZv
cm1hdHRpbmcgYSBjaGFyIHBvaW50ZXIgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYW5vdGhlciBw
b2ludGVyLgotLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSByYXcgcG9p
bnRlciwgYXMgdGhlIGNvbXBhcmlzaW9uIGlzIGJ5Ci0vLyBwb2ludGVyLgotCi0vLyBjaGFyIHBv
aW50ZXIgdnMgcG9pbnRlcgotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VU
ZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNQb2ludGVyKSB7Ci0gIC8vIEluIGV4cHJlc3Npb24g
J3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qgb3Igbm90KSBjaGFyCi0gIC8v
IHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5IHBvaW50ZXIuICBUaGVyZWZv
cmUgd2UKLSAgLy8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2ludGVyIGluc3RlYWQgb2YgYSBD
IHN0cmluZyAod2UgZG9uJ3QKLSAgLy8gZXZlbiBrbm93IGlmIGl0J3Mgc3VwcG9zZWQgdG8gcG9p
bnQgdG8gYSB2YWxpZCBDIHN0cmluZykuCi0KLSAgLy8gY29uc3QgY2hhcioKLSAgY29uc3QgY2hh
ciogcyA9ICJoZWxsbyI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocyksCi0gICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgcykuY19zdHIoKSk7Ci0KLSAg
Ly8gY2hhcioKLSAgY2hhciBjaCA9ICdhJzsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmY2gp
LAotICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNo
KS5jX3N0cigpKTsKLX0KLQotLy8gd2NoYXJfdCBwb2ludGVyIHZzIHBvaW50ZXIKLVRFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JXQ2hhclBvaW50ZXJW
c1BvaW50ZXIpIHsKLSAgLy8gSW4gZXhwcmVzc2lvbiAncCA9PSB4Jywgd2hlcmUgJ3AnIGFuZCAn
eCcgYXJlIChjb25zdCBvciBub3QpIGNoYXIKLSAgLy8gcG9pbnRlcnMsIHRoZSBvcGVyYW5kcyBh
cmUgY29tcGFyZWQgYnkgcG9pbnRlci4gIFRoZXJlZm9yZSB3ZQotICAvLyB3YW50IHRvIHByaW50
ICdwJyBhcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHdpZGUgQyBzdHJpbmcgKHdlIGRvbid0Ci0g
IC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQgd2lkZSBD
IHN0cmluZykuCi0KLSAgLy8gY29uc3Qgd2NoYXJfdCoKLSAgY29uc3Qgd2NoYXJfdCogcyA9IEwi
aGVsbG8iOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAotICAgICAgICAgICAgRm9ybWF0
Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOwotCi0gIC8vIHdjaGFy
X3QqCi0gIHdjaGFyX3QgY2ggPSBMJ2EnOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKCZjaCks
Ci0gICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UoJmNoLCAmY2gp
LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hhciBwb2ludGVyIHdoZW4g
aXQncyBjb21wYXJlZCB0byBhIHN0cmluZyBvYmplY3QuCi0vLyBJbiB0aGlzIGNhc2Ugd2Ugd2Fu
dCB0byBwcmludCB0aGUgY2hhciBwb2ludGVyIGFzIGEgQyBzdHJpbmcuCi0KLSNpZiBHVEVTVF9I
QVNfR0xPQkFMX1NUUklORwotLy8gY2hhciBwb2ludGVyIHZzIDo6c3RyaW5nCi1URVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJWc1N0
cmluZykgewotICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOwotICBFWFBFQ1RfU1RS
RVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBi
ZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHMsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOwotCi0gIC8vIGNoYXIqCi0gIGNoYXIgc3RyW10g
PSAiaGlcMSI7Ci0gIGNoYXIqIHAgPSBzdHI7Ci0gIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFcIiIs
ICAvLyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAg
ICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdHJpbmcoKSkuY19zdHIo
KSk7Ci19Ci0jZW5kaWYKLQotLy8gY2hhciBwb2ludGVyIHZzIHN0ZDo6c3RyaW5nCi1URVNUKEZv
cm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhclBvaW50ZXJW
c1N0ZFN0cmluZykgewotICBjb25zdCBjaGFyKiBzID0gImhlbGxvIFwid29ybGQiOwotICBFWFBF
Q1RfU1RSRVEoIlwiaGVsbG8gXFxcIndvcmxkXCIiLCAgLy8gVGhlIHN0cmluZyBjb250ZW50IHNo
b3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHMsIDo6c3RkOjpzdHJpbmcoKSkuY19zdHIoKSk7Ci0KLSAgLy8gY2hhcioKLSAg
Y2hhciBzdHJbXSA9ICJoaVwxIjsKLSAgY2hhciogcCA9IHN0cjsKLSAgRVhQRUNUX1NUUkVRKCJc
ImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OnN0ZDo6
c3RyaW5nKCkpLmNfc3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0v
LyB3Y2hhcl90IHBvaW50ZXIgdnMgOjp3c3RyaW5nCi1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNXU3RyaW5nKSB7Ci0gIGNv
bnN0IHdjaGFyX3QqIHMgPSBMImhpIFwid29ybGQiOwotICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxc
XCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OndzdHJp
bmcoKSkuY19zdHIoKSk7Ci0KLSAgLy8gd2NoYXJfdCoKLSAgd2NoYXJfdCBzdHJbXSA9IEwiaGlc
MSI7Ci0gIHdjaGFyX3QqIHAgPSBzdHI7Ci0gIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAg
Ly8gVGhlIHN0cmluZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6d3N0cmluZygpKS5jX3N0cigp
KTsKLX0KLSNlbmRpZgotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0vLyB3Y2hhcl90IHBv
aW50ZXIgdnMgc3RkOjp3c3RyaW5nCi1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNTdGRXU3RyaW5nKSB7Ci0gIGNvbnN0IHdj
aGFyX3QqIHMgPSBMImhpIFwid29ybGQiOwotICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3Js
ZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAgICAgICAg
ICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0ZDo6d3N0cmlu
ZygpKS5jX3N0cigpKTsKLQotICAvLyB3Y2hhcl90KgotICB3Y2hhcl90IHN0cltdID0gTCJoaVwx
IjsKLSAgd2NoYXJfdCogcCA9IHN0cjsKLSAgRVhQRUNUX1NUUkVRKCJMXCJoaVxceDFcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OndzdHJpbmcoKSkuY19z
dHIoKSk7Ci19Ci0jZW5kaWYKLQotLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgYXJyYXkgd2hl
biBpdCdzIGNvbXBhcmVkIHdpdGggYSBwb2ludGVyIG9yIGFycmF5LgotLy8gSW4gdGhpcyBjYXNl
IHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgcm93IHBvaW50ZXIsIGFzIHRoZSBjb21w
YXJpc29uCi0vLyBpcyBieSBwb2ludGVyLgotCi0vLyBjaGFyIGFycmF5IHZzIHBvaW50ZXIKLVRF
U1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJy
YXlWc1BvaW50ZXIpIHsKLSAgY2hhciBzdHJbXSA9ICJoaSBcIndvcmxkXCIiOwotICBjaGFyKiBw
ID0gTlVMTDsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAotICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Ci19Ci0KLS8v
IGNoYXIgYXJyYXkgdnMgY2hhciBhcnJheQotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVZzQ2hhckFycmF5KSB7Ci0gIGNvbnN0IGNo
YXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIp
LAotICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgc3Ry
KS5jX3N0cigpKTsKLX0KLQotLy8gd2NoYXJfdCBhcnJheSB2cyBwb2ludGVyCi1URVNUKEZvcm1h
dEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzUG9p
bnRlcikgewotICB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxkXCIiOwotICB3Y2hhcl90KiBw
ID0gTlVMTDsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihzdHIpLAotICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgcCkuY19zdHIoKSk7Ci19Ci0KLS8v
IHdjaGFyX3QgYXJyYXkgdnMgd2NoYXJfdCBhcnJheQotVEVTVChGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1dDaGFyQXJyYXkpIHsKLSAg
Y29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKLSAgRVhQRUNUX0VRKFByaW50
UG9pbnRlcihzdHIpLAotICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlKHN0ciwgc3RyKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIg
YXJyYXkgd2hlbiBpdCdzIGNvbXBhcmVkIHdpdGggYSBzdHJpbmcgb2JqZWN0LgotLy8gSW4gdGhp
cyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhlIGFycmF5IGFzIGEgQyBzdHJpbmcuCi0KLSNpZiBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwotLy8gY2hhciBhcnJheSB2cyBzdHJpbmcKLVRFU1QoRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0
cmluZykgewotICBjb25zdCBjaGFyIHN0cltdID0gImhpIFwid1wwcmxkXCIiOwotICBFWFBFQ1Rf
U1RSRVEoIlwiaGkgXFxcIndcIiIsICAvLyBUaGUgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0
ZXMgdGhlIHN0cmluZy4KLSAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJl
TWVzc2FnZShzdHIsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOwotfQotI2VuZGlmCi0KLS8vIGNoYXIg
YXJyYXkgdnMgc3RkOjpzdHJpbmcKLVRFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNz
YWdlVGVzdCwgV29ya3NGb3JDaGFyQXJyYXlWc1N0ZFN0cmluZykgewotICBjb25zdCBjaGFyIHN0
cltdID0gImhpIFwid29ybGRcIiI7Ci0gIEVYUEVDVF9TVFJFUSgiXCJoaSBcXFwid29ybGRcXFwi
XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6OnN0ZDo6c3RyaW5nKCkpLmNf
c3RyKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0vLyB3Y2hhcl90IGFy
cmF5IHZzIHdzdHJpbmcKLVRFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVz
dCwgV29ya3NGb3JXQ2hhckFycmF5VnNXU3RyaW5nKSB7Ci0gIGNvbnN0IHdjaGFyX3Qgc3RyW10g
PSBMImhpIFwid29ybGRcIiI7Ci0gIEVYUEVDVF9TVFJFUSgiTFwiaGkgXFxcIndvcmxkXFxcIlwi
IiwgIC8vIFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9y
bWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjp3c3RyaW5nKCkpLmNfc3RyKCkp
OwotfQotI2VuZGlmCi0KLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLS8vIHdjaGFyX3QgYXJy
YXkgdnMgc3RkOjp3c3RyaW5nCi1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2Fn
ZVRlc3QsIFdvcmtzRm9yV0NoYXJBcnJheVZzU3RkV1N0cmluZykgewotICBjb25zdCB3Y2hhcl90
IHN0cltdID0gTCJoaSBcIndcMHJsZFwiIjsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAgIkxcImhp
IFxcXCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBOVUwgdGVybWluYXRlcyB0aGUgc3RyaW5nLgotICAg
ICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OndzdHJpbmco
KSkuY19zdHIoKSk7Ci19Ci0jZW5kaWYKLQotLy8gVXNlZnVsIGZvciB0ZXN0aW5nIFByaW50VG9T
dHJpbmcoKS4gIFdlIGNhbm5vdCB1c2UgRVhQRUNUX0VRKCkKLS8vIHRoZXJlIGFzIGl0cyBpbXBs
ZW1lbnRhdGlvbiB1c2VzIFByaW50VG9TdHJpbmcoKS4gIFRoZSBjYWxsZXIgbXVzdAotLy8gZW5z
dXJlIHRoYXQgJ3ZhbHVlJyBoYXMgbm8gc2lkZSBlZmZlY3QuCi0jZGVmaW5lIEVYUEVDVF9QUklO
VF9UT19TVFJJTkdfKHZhbHVlLCBleHBlY3RlZF9zdHJpbmcpICAgICAgICAgXAotICBFWFBFQ1Rf
VFJVRShQcmludFRvU3RyaW5nKHZhbHVlKSA9PSAoZXhwZWN0ZWRfc3RyaW5nKSkgICAgICAgIFwK
LSAgICAgIDw8ICIgd2hlcmUgIiAjdmFsdWUgIiBwcmludHMgYXMgIiA8PCAoUHJpbnRUb1N0cmlu
Zyh2YWx1ZSkpCi0KLVRFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yU2NhbGFyKSB7Ci0g
IEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKDEyMywgIjEyMyIpOwotfQotCi1URVNUKFByaW50VG9T
dHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0Q2hhcikgewotICBjb25zdCBjaGFyKiBw
ID0gImhlbGxvIjsKLSAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cIiIpOwot
fQotCi1URVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb05vbkNvbnN0Q2hh
cikgewotICBjaGFyIHNbXSA9ICJoZWxsbyI7Ci0gIGNoYXIqIHAgPSBzOwotICBFWFBFQ1RfUFJJ
TlRfVE9fU1RSSU5HXyhwLCAiXCJoZWxsb1wiIik7Ci19Ci0KLVRFU1QoUHJpbnRUb1N0cmluZ1Rl
c3QsIEVzY2FwZXNGb3JQb2ludGVyVG9Db25zdENoYXIpIHsKLSAgY29uc3QgY2hhciogcCA9ICJo
ZWxsb1xuIjsKLSAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXG5cIiIpOwot
fQotCi1URVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9yUG9pbnRlclRvTm9uQ29uc3RD
aGFyKSB7Ci0gIGNoYXIgc1tdID0gImhlbGxvXDEiOwotICBjaGFyKiBwID0gczsKLSAgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18ocCwgIlwiaGVsbG9cXHgxXCIiKTsKLX0KLQotVEVTVChQcmludFRv
U3RyaW5nVGVzdCwgV29ya3NGb3JBcnJheSkgewotICBpbnQgblszXSA9IHsgMSwgMiwgMyB9Owot
ICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhuLCAieyAxLCAyLCAzIH0iKTsKLX0KLQotVEVTVChQ
cmludFRvU3RyaW5nVGVzdCwgV29ya3NGb3JDaGFyQXJyYXkpIHsKLSAgY2hhciBzW10gPSAiaGVs
bG8iOwotICBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyhzLCAiXCJoZWxsb1wiIik7Ci19Ci0KLVRF
U1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdvcmtzRm9yQ2hhckFycmF5V2l0aEVtYmVkZGVkTnVsKSB7
Ci0gIGNvbnN0IGNoYXIgc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7Ci0gIEVYUEVD
VF9QUklOVF9UT19TVFJJTkdfKHN0cl93aXRoX251bCwgIlwiaGVsbG9cXDAgd29ybGRcIiIpOwot
Ci0gIGNoYXIgbXV0YWJsZV9zdHJfd2l0aF9udWxbXSA9ICJoZWxsb1wwIHdvcmxkIjsKLSAgRVhQ
RUNUX1BSSU5UX1RPX1NUUklOR18obXV0YWJsZV9zdHJfd2l0aF9udWwsICJcImhlbGxvXFwwIHdv
cmxkXCIiKTsKLX0KLQotI3VuZGVmIEVYUEVDVF9QUklOVF9UT19TVFJJTkdfCi0KLVRFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yTm9uUmVmZXJlbmNlKSB7Ci0gIDo6c3RkOjpz
dHJpbmdzdHJlYW0gc3M7Ci0gIFVuaXZlcnNhbFRlcnNlUHJpbnQoMTIzLCAmc3MpOwotICBFWFBF
Q1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKLX0KLQotVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVz
dCwgV29ya3NGb3JSZWZlcmVuY2UpIHsKLSAgY29uc3QgaW50JiBuID0gMTIzOwotICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHNzOwotICBVbml2ZXJzYWxUZXJzZVByaW50KG4sICZzcyk7Ci0gIEVYUEVD
VF9FUSgiMTIzIiwgc3Muc3RyKCkpOwotfQotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUZXN0
LCBXb3Jrc0ZvckNTdHJpbmcpIHsKLSAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKLSAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczE7Ci0gIFVuaXZlcnNhbFRlcnNlUHJpbnQoczEsICZzczEpOwotICBF
WFBFQ1RfRVEoIlwiYWJjXCIiLCBzczEuc3RyKCkpOwotCi0gIGNoYXIqIHMyID0gY29uc3RfY2Fz
dDxjaGFyKj4oczEpOwotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMjsKLSAgVW5pdmVyc2FsVGVy
c2VQcmludChzMiwgJnNzMik7Ci0gIEVYUEVDVF9FUSgiXCJhYmNcIiIsIHNzMi5zdHIoKSk7Ci0K
LSAgY29uc3QgY2hhciogczMgPSBOVUxMOwotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMzsKLSAg
VW5pdmVyc2FsVGVyc2VQcmludChzMywgJnNzMyk7Ci0gIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5z
dHIoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5j
ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBVbml2ZXJzYWxQcmludCgxMjMsICZz
cyk7Ci0gIEVYUEVDVF9FUSgiMTIzIiwgc3Muc3RyKCkpOwotfQotCi1URVNUKFVuaXZlcnNhbFBy
aW50VGVzdCwgV29ya3NGb3JSZWZlcmVuY2UpIHsKLSAgY29uc3QgaW50JiBuID0gMTIzOwotICA6
OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBVbml2ZXJzYWxQcmludChuLCAmc3MpOwotICBFWFBF
Q1RfRVEoIjEyMyIsIHNzLnN0cigpKTsKLX0KLQotVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdv
cmtzRm9yQ1N0cmluZykgewotICBjb25zdCBjaGFyKiBzMSA9ICJhYmMiOwotICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzMTsKLSAgVW5pdmVyc2FsUHJpbnQoczEsICZzczEpOwotICBFWFBFQ1RfRVEo
UHJpbnRQb2ludGVyKHMxKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3RyaW5nKHNz
MS5zdHIoKSkpOwotCi0gIGNoYXIqIHMyID0gY29uc3RfY2FzdDxjaGFyKj4oczEpOwotICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzMjsKLSAgVW5pdmVyc2FsUHJpbnQoczIsICZzczIpOwotICBFWFBF
Q1RfRVEoUHJpbnRQb2ludGVyKHMyKSArICIgcG9pbnRpbmcgdG8gXCJhYmNcIiIsIHN0ZDo6c3Ry
aW5nKHNzMi5zdHIoKSkpOwotCi0gIGNvbnN0IGNoYXIqIHMzID0gTlVMTDsKLSAgOjpzdGQ6OnN0
cmluZ3N0cmVhbSBzczM7Ci0gIFVuaXZlcnNhbFByaW50KHMzLCAmc3MzKTsKLSAgRVhQRUNUX0VR
KCJOVUxMIiwgc3MzLnN0cigpKTsKLX0KLQotVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtz
Rm9yQ2hhckFycmF5KSB7Ci0gIGNvbnN0IGNoYXIgc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5l
IDIiOwotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzMTsKLSAgVW5pdmVyc2FsUHJpbnQoc3RyLCAm
c3MxKTsKLSAgRVhQRUNUX0VRKCJcIlxcXCJMaW5lXFwwIDFcXFwiXFxuTGluZSAyXCIiLCBzczEu
c3RyKCkpOwotCi0gIGNvbnN0IGNoYXIgbXV0YWJsZV9zdHJbXSA9ICJcIkxpbmVcMCAxXCJcbkxp
bmUgMiI7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3MyOwotICBVbml2ZXJzYWxQcmludChtdXRh
YmxlX3N0ciwgJnNzMik7Ci0gIEVYUEVDVF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUg
MlwiIiwgc3MyLnN0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUKLQotVEVTVChV
bml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFRyMSwgUHJpbnRz
RW1wdHlUdXBsZSkgewotICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncygKLSAgICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoKSk7Ci0gIEVY
UEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2FsVGVyc2VQcmlu
dFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c09uZVR1cGxlKSB7Ci0gIFN0
cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAot
ICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgxKSk7Ci0gIEFTU0VSVF9FUSgxdSwgcmVzdWx0
LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Ci19Ci0KLVRFU1QoVW5pdmVy
c2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1R3b1R1
cGxlKSB7Ci0gIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzKAotICAgICAgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZSgxLCAnYScpKTsKLSAgQVNT
RVJUX0VRKDJ1LCByZXN1bHQuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsK
LSAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIHJlc3VsdFsxXSk7Ci19Ci0KLVRFU1QoVW5p
dmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c1Rl
cnNlbHkpIHsKLSAgY29uc3QgaW50IG4gPSAxOwotICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKLSAgICAgIDo6c3RkOjp0cjE6OnR1cGxl
PGNvbnN0IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKLSAgQVNTRVJUX0VRKDJ1LCByZXN1
bHQuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKLSAgRVhQRUNUX0VRKCJc
ImFcIiIsIHJlc3VsdFsxXSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQot
Ci0jaWYgR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzRW1wdHlUdXBsZSkgewotICBTdHJp
bmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyg6OnN0
ZDo6bWFrZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VRKDB1LCByZXN1bHQuc2l6ZSgpKTsKLX0KLQot
VEVTVChVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwg
UHJpbnRzT25lVHVwbGUpIHsKLSAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50
VHVwbGVGaWVsZHNUb1N0cmluZ3MoCi0gICAgICA6OnN0ZDo6bWFrZV90dXBsZSgxKSk7Ci0gIEFT
U0VSVF9FUSgxdSwgcmVzdWx0LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7
Ci19Ci0KLVRFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdp
dGhTdGQsIFByaW50c1R3b1R1cGxlKSB7Ci0gIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVy
c2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAotICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSwg
J2EnKSk7Ci0gIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgiMSIs
IHJlc3VsdFswXSk7Ci0gIEVYUEVDVF9FUSgiJ2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOwot
fQotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRo
U3RkLCBQcmludHNUZXJzZWx5KSB7Ci0gIGNvbnN0IGludCBuID0gMTsKLSAgU3RyaW5ncyByZXN1
bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoCi0gICAgICA6OnN0
ZDo6dHVwbGU8Y29uc3QgaW50JiwgY29uc3QgY2hhcio+KG4sICJhIikpOwotICBBU1NFUlRfRVEo
MnUsIHJlc3VsdC5zaXplKCkpOwotICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwotICBFWFBF
Q1RfRVEoIlwiYVwiIiwgcmVzdWx0WzFdKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RE
X1RVUExFXwotCi19ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfcHJpbnRlcnNfdGVzdAotfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1w
YXJ0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYThiYTkzM2FlZjkwMTc3MGFjYTc4ZTFlNDRi
OWJkZTUwZTg2NTBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwyMDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQot
Ly8KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXRlc3QtcGFydC5oIgotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLQotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OlRl
c3Q7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0QXJyYXk7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3RzIHRoZSBUZXN0UGFydFJl
c3VsdCBjbGFzcy4KLQotLy8gVGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBUZXN0UGFydFJl
c3VsdC4KLWNsYXNzIFRlc3RQYXJ0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0
ZWQ6Ci0gIFRlc3RQYXJ0UmVzdWx0VGVzdCgpCi0gICAgICA6IHIxXyhUZXN0UGFydFJlc3VsdDo6
a1N1Y2Nlc3MsICJmb28vYmFyLmNjIiwgMTAsICJTdWNjZXNzISIpLAotICAgICAgICByMl8oVGVz
dFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJl
ISIpLAotICAgICAgICByM18oVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIE5VTEwsIC0x
LCAiRmFpbHVyZSEiKSB7fQotCi0gIFRlc3RQYXJ0UmVzdWx0IHIxXywgcjJfLCByM187Ci19Owot
Ci0KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIENvbnN0cnVjdG9yV29ya3MpIHsKLSAgTWVz
c2FnZSBtZXNzYWdlOwotICBtZXNzYWdlIDw8ICJzb21ldGhpbmcgaXMgdGVycmlibHkgd3Jvbmci
OwotICBtZXNzYWdlIDw8IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih0ZXN0aW5nOjppbnRlcm5h
bDo6a1N0YWNrVHJhY2VNYXJrZXIpOwotICBtZXNzYWdlIDw8ICJzb21lIHVuaW1wb3J0YW50IHN0
YWNrIHRyYWNlIjsKLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByZXN1bHQoVGVzdFBhcnRSZXN1
bHQ6OmtOb25GYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29t
ZV9maWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLQotICBF
WFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHJlc3VsdC50eXBlKCkp
OwotICBFWFBFQ1RfU1RSRVEoInNvbWVfZmlsZS5jYyIsIHJlc3VsdC5maWxlX25hbWUoKSk7Ci0g
IEVYUEVDVF9FUSg0MiwgcmVzdWx0LmxpbmVfbnVtYmVyKCkpOwotICBFWFBFQ1RfU1RSRVEobWVz
c2FnZS5HZXRTdHJpbmcoKS5jX3N0cigpLCByZXN1bHQubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NU
UkVRKCJzb21ldGhpbmcgaXMgdGVycmlibHkgd3JvbmciLCByZXN1bHQuc3VtbWFyeSgpKTsKLX0K
LQotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgUmVzdWx0QWNjZXNzb3JzV29yaykgewotICBj
b25zdCBUZXN0UGFydFJlc3VsdCBzdWNjZXNzKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3Nh
Z2UiKTsKLSAgRVhQRUNUX1RSVUUoc3VjY2Vzcy5wYXNzZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShz
dWNjZXNzLmZhaWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mubm9uZmF0YWxseV9mYWls
ZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShzdWNjZXNzLmZhdGFsbHlfZmFpbGVkKCkpOwotCi0gIGNv
bnN0IFRlc3RQYXJ0UmVzdWx0IG5vbmZhdGFsX2ZhaWx1cmUoVGVzdFBhcnRSZXN1bHQ6OmtOb25G
YXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZp
bGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7Ci0gIEVYUEVD
VF9GQUxTRShub25mYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0
YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKG5vbmZhdGFsX2ZhaWx1cmUubm9u
ZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShub25mYXRhbF9mYWlsdXJlLmZhdGFs
bHlfZmFpbGVkKCkpOwotCi0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IGZhdGFsX2ZhaWx1cmUoVGVz
dFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZpbGUuY2MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXNzYWdlIik7Ci0g
IEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLnBhc3NlZCgpKTsKLSAgRVhQRUNUX1RSVUUoZmF0
YWxfZmFpbHVyZS5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShmYXRhbF9mYWlsdXJlLm5vbmZh
dGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZhdGFsbHlfZmFp
bGVkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6dHlwZSgpLgotVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgdHlwZSkgewotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtT
dWNjZXNzLCByMV8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0
YWxGYWlsdXJlLCByMl8udHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprRmF0
YWxGYWlsdXJlLCByM18udHlwZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZp
bGVfbmFtZSgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgZmlsZV9uYW1lKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vL2Jhci5jYyIsIHIxXy5maWxlX25hbWUoKSk7Ci0gIEVYUEVDVF9TVFJF
UShOVUxMLCByM18uZmlsZV9uYW1lKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6
bGluZV9udW1iZXIoKS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIGxpbmVfbnVtYmVyKSB7
Ci0gIEVYUEVDVF9FUSgxMCwgcjFfLmxpbmVfbnVtYmVyKCkpOwotICBFWFBFQ1RfRVEoLTEsIHIy
Xy5saW5lX251bWJlcigpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om1lc3NhZ2Uo
KS4KLVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIG1lc3NhZ2UpIHsKLSAgRVhQRUNUX1NUUkVR
KCJTdWNjZXNzISIsIHIxXy5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3Vs
dDo6cGFzc2VkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBQYXNzZWQpIHsKLSAgRVhQ
RUNUX1RSVUUocjFfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIyXy5wYXNzZWQoKSk7Ci0g
IEVYUEVDVF9GQUxTRShyM18ucGFzc2VkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3Vs
dDo6ZmFpbGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYWlsZWQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKHIxXy5mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5mYWlsZWQoKSk7Ci0g
IEVYUEVDVF9UUlVFKHIzXy5mYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0
OjpmYXRhbGx5X2ZhaWxlZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgRmF0YWxseUZh
aWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFfLmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1Rf
RkFMU0UocjJfLmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShyM18uZmF0YWxseV9m
YWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojpub25mYXRhbGx5X2ZhaWxl
ZCgpLgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgTm9uZmF0YWxseUZhaWxlZCkgewotICBF
WFBFQ1RfRkFMU0UocjFfLm5vbmZhdGFsbHlfZmFpbGVkKCkpOwotICBFWFBFQ1RfVFJVRShyMl8u
bm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyM18ubm9uZmF0YWxseV9mYWls
ZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBUZXN0UGFydFJlc3VsdEFycmF5IGNsYXNzLgotCi1j
bGFzcyBUZXN0UGFydFJlc3VsdEFycmF5VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXlUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0
OjprTm9uRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAxIiksCi0gICAg
ICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwg
IkZhaWx1cmUgMiIpIHt9Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl87Ci19Owot
Ci0vLyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgaW5pdGlhbGx5IGhhcyBzaXplIDAu
Ci1URVNUX0YoVGVzdFBhcnRSZXN1bHRBcnJheVRlc3QsIEluaXRpYWxTaXplSXNaZXJvKSB7Ci0g
IFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgRVhQRUNUX0VRKDAsIHJlc3VsdHMuc2l6
ZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRo
ZSBnaXZlbiBUZXN0UGFydFJlc3VsdAotLy8gYWZ0ZXIgb25lIEFwcGVuZCgpIG9wZXJhdGlvbi4K
LVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdEFmdGVy
QXBwZW5kKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgcmVzdWx0cy5BcHBl
bmQocjFfKTsKLSAgRVhQRUNUX0VRKDEsIHJlc3VsdHMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVR
KCJGYWlsdXJlIDEiLCByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgVGVzdFBhcnRSZXN1bHRBcnJheSBjb250YWlucyB0aGUgZ2l2ZW4g
VGVzdFBhcnRSZXN1bHRzCi0vLyBhZnRlciB0d28gQXBwZW5kKCkgb3BlcmF0aW9ucy4KLVRFU1Rf
RihUZXN0UGFydFJlc3VsdEFycmF5VGVzdCwgQ29udGFpbnNHaXZlblJlc3VsdHNBZnRlclR3b0Fw
cGVuZHMpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVu
ZChyMV8pOwotICByZXN1bHRzLkFwcGVuZChyMl8pOwotICBFWFBFQ1RfRVEoMiwgcmVzdWx0cy5z
aXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIsIHJlc3VsdHMuR2V0VGVzdFBhcnRS
ZXN1bHQoMCkubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJGYWlsdXJlIDIiLCByZXN1bHRz
LkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Ci19Ci0KLXR5cGVkZWYgVGVzdFBhcnRS
ZXN1bHRBcnJheVRlc3QgVGVzdFBhcnRSZXN1bHRBcnJheURlYXRoVGVzdDsKLQotLy8gVGVzdHMg
dGhhdCB0aGUgcHJvZ3JhbSBkaWVzIHdoZW4gR2V0VGVzdFBhcnRSZXN1bHQoKSBpcyBjYWxsZWQg
d2l0aAotLy8gYW4gaW52YWxpZCBpbmRleC4KLVRFU1RfRihUZXN0UGFydFJlc3VsdEFycmF5RGVh
dGhUZXN0LCBEaWVzV2hlbkluZGV4SXNPdXRPZkJvdW5kKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgcmVzdWx0czsKLSAgcmVzdWx0cy5BcHBlbmQocjFfKTsKLQotICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoLTEpLCAiIik7Ci0gIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgxKSwgIiIpOwotfQot
Ci0vLyBUT0RPKG1oZXVsZUBnb29nbGUuY29tKTogQWRkIGEgdGVzdCBmb3IgdGhlIGNsYXNzIEhh
c05ld0ZhdGFsRmFpbHVyZUhlbHBlci4KLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LXR1cGxlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWEzZTBh
YzRiMjI5MGQ5ZmEyYjY5NDdhZDgwOWYxMGI4ZDI0MzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIgot
I2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNl
IHsKLQotdXNpbmcgOjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBs
ZTsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfZWxl
bWVudDsKLXVzaW5nIDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Ci11c2luZyA6OnRlc3Rpbmc6OlN0
YXRpY0Fzc2VydFR5cGVFcTsKLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1cGxl
PFQwLCBUMSwgLi4uLCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgotVEVTVCh0dXBsZV9lbGVtZW50
X1Rlc3QsIFJldHVybnNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCB0
dXBsZV9lbGVtZW50PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKLSAgU3RhdGljQXNz
ZXJ0VHlwZUVxPGludCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+Ojp0
eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0dXBs
ZTxkb3VibGUsIGludCwgYm9vbD4gPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBs
ZV9zaXplPFQ+Ojp2YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQotLy8g
dHlwZSBULgotVEVTVCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykgewot
ICBFWFBFQ1RfRVEoMCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9F
USgxLCArdHVwbGVfc2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwg
K3R1cGxlX3NpemU8dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgKyh0dXBs
ZV9zaXplPHR1cGxlPHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7Ci0gIEVYUEVDVF9F
USgyLCArKHR1cGxlX3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsKLSAg
RVhQRUNUX0VRKDMsICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9vbCY+
ID46OnZhbHVlKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRzZWxm
LgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgewotICBjb25zdCB0dXBs
ZTxpbnQsIGNoYXIsIGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7Ci0KLSAgRVhQRUNUX1RSVUUoYSA9
PSBhKTsKLSAgRVhQRUNUX0ZBTFNFKGEgIT0gYSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0
d28gdHVwbGVzIHdpdGggdGhlIHNhbWUgdmFsdWUuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21w
YXJlc0VxdWFsVHVwbGVzKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVlKSwg
Yig1LCB0cnVlKTsKLQotICBFWFBFQ1RfVFJVRShhID09IGIpOwotICBFWFBFQ1RfRkFMU0UoYSAh
PSBiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQg
aGF2ZSBubyByZWZlcmVuY2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNV
bmVxdWFsVHVwbGVzV2l0aG91dFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBlZGVmIHR1cGxlPGNv
bnN0IGludCwgY2hhcj4gRm9vVHVwbGU7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcpOwot
ICBjb25zdCBGb29UdXBsZSBiKDEsICdhJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKLSAg
RVhQRUNUX0ZBTFNFKGEgPT0gYik7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwotCi0g
IEVYUEVDVF9UUlVFKGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMpOwotfQotCi0vLyBU
ZXN0cyBjb21wYXJpbmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5jZSBm
aWVsZHMuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRoUmVm
ZXJlbmNlRmllbGRzKSB7Ci0gIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZvb1R1
cGxlOwotCi0gIGludCBpID0gNTsKLSAgY29uc3QgY2hhciBjaCA9ICdhJzsKLSAgY29uc3QgRm9v
VHVwbGUgYShpLCBjaCk7Ci0KLSAgaW50IGogPSA2OwotICBjb25zdCBGb29UdXBsZSBiKGosIGNo
KTsKLQotICBFWFBFQ1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQot
ICBqID0gNTsKLSAgY29uc3QgY2hhciBjaDIgPSAnYic7Ci0gIGNvbnN0IEZvb1R1cGxlIGMoaiwg
Y2gyKTsKLQotICBFWFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlwZSBp
cyBhbiBhbGlhcyBvZiB0aGUKLS8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJlbmNl
LgotVEVTVChSZWZlcmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJsZSkg
ewotICBpbnQgbiA9IDA7Ci0gIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7Ci0KLSAgbiA9
IDE7Ci0gIEVYUEVDVF9FUShuLCBnZXQ8MT4odCkpCi0gICAgICA8PCAiQ2hhbmdpbmcgYSB1bmRl
cmx5aW5nIHZhcmlhYmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwotCi0g
IC8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0aGlu
ZyBmdW5ueSB3aXRoCi0gIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUgb2Yg
Z2V0PD4oKS4KLSAgRVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCi0gICAgICA8PCAiVGhlIGFk
ZHJlc3Mgb2YgYSByZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9mICIK
LSAgICAgIDw8ICJ0aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotCi0gIGdldDwxPih0KSA9IDI7
Ci0gIEVYUEVDVF9FUSgyLCBuKQotICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZpZWxk
IHNob3VsZCB1cGRhdGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLX0KLQotLy8gVGVzdHMg
dGhhdCB0dXBsZSdzIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBlYWNo
IGZpZWxkLgotLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0aW5n
IHdhcm5pbmdzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
RGVmYXVsdEluaXRpYWxpemVzRWFjaEZpZWxkKSB7Ci0gIC8vIFRoZSBUUjEgcmVwb3J0IHJlcXVp
cmVzIHRoYXQgdHVwbGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKLSAgLy8gaW5pdGlh
bGl6ZXMgZWFjaCBmaWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0aGUK
LSAgLy8gaW1wbGVtZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2lsbCBj
YXRjaCBpdCBieQotICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5pdGlh
bGl6ZWQgdmFyaWFibGVzIChhc3N1bWluZwotICAvLyBhIGRlY2VudCBjb21waWxlcikuCi0KLSAg
dHVwbGU8PiBlbXB0eTsKLQotICB0dXBsZTxpbnQ+IGExLCBiMTsKLSAgYjEgPSBhMTsKLSAgRVhQ
RUNUX0VRKDAsIGdldDwwPihiMSkpOwotCi0gIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7Ci0g
IGIyID0gYTI7Ci0gIEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKLSAgRVhQRUNUX0VRKDAuMCwg
Z2V0PDE+KGIyKSk7Ci0KLSAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwotICBi
MyA9IGEzOwotICBFWFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKLSAgRVhQRUNUX0VRKCdcMCcs
IGdldDwxPihiMykpOwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOwotCi0gIHR1
cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gYTEw
LCBiMTA7Ci0gIGIxMCA9IGExMDsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKLSAgRVhQ
RUNUX0VRKDAsIGdldDwxPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsKLSAg
RVhQRUNUX0VRKDAsIGdldDwzPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTApKTsK
LSAgRVhQRUNUX0VRKDAsIGdldDw1PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw2PihiMTAp
KTsKLSAgRVhQRUNUX0VRKDAsIGdldDw3PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw4Pihi
MTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw5PihiMTApKTsKLX0KLQotLy8gVGVzdHMgY29uc3Ry
dWN0aW5nIGEgdHVwbGUgZnJvbSBpdHMgZmllbGRzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVz
dCwgQ29uc3RydWN0c0Zyb21GaWVsZHMpIHsKLSAgaW50IG4gPSAxOwotICAvLyBSZWZlcmVuY2Ug
ZmllbGQuCi0gIHR1cGxlPGludCY+IGEobik7Ci0gIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4oYSkp
KTsKLQotICAvLyBOb24tcmVmZXJlbmNlIGZpZWxkcy4KLSAgdHVwbGU8aW50LCBjaGFyPiBiKDUs
ICdhJyk7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8
MT4oYikpOwotCi0gIC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KLSAgY29uc3QgaW50IG0gPSAy
OwotICB0dXBsZTxib29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOwotICBFWFBFQ1RfVFJVRShn
ZXQ8MD4oYykpOwotICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHR1cGxlJ3MgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENv
cHlDb25zdHJ1Y3RvcikgewotICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsKLSAg
dHVwbGU8ZG91YmxlLCBib29sPiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8
MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1
Y3RpbmcgYSB0dXBsZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxlCi0v
LyBidXQgZGlmZmVyZW50IHR5cGUuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1
Y3RzRnJvbURpZmZlcmVudFR1cGxlVHlwZSkgewotICB0dXBsZTxpbnQsIGludCwgY2hhcj4gYSgw
LCAxLCAnYScpOwotICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKLQotICBFWFBFQ1Rf
RE9VQkxFX0VRKDAuMCwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7Ci0g
IEVYUEVDVF9FUSgnYScsIGdldDwyPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBh
IDItdHVwbGUgZnJvbSBhbiBzdGQ6OnBhaXIuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBD
b25zdHJ1Y3RzRnJvbVBhaXIpIHsKLSAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdhJyk7
Ci0gIHR1cGxlPGludCwgY2hhcj4gYihhKTsKLSAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4gYyhh
KTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRo
IHRoZSBzYW1lIHR5cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1NhbWVU
dXBsZVR5cGUpIHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKLSAgdHVwbGU8
aW50LCBsb25nPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVY
UEVDVF9FUSg3TCwgZ2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUg
dG8gYW5vdGhlciB0dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAotLy8gY29tcGF0aWJsZSB0eXBl
LgotVEVTVChUdXBsZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5cGUp
IHsKLSAgY29uc3QgdHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKLSAgdHVw
bGU8bG9uZywgaW50LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDFMLCBnZXQ8MD4o
YikpOwotICBFWFBFQ1RfRVEoNywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIp
KTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUuCi1U
RVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgewotICBjb25zdCA6OnN0
ZDo6cGFpcjxpbnQsIGJvb2w+IGEoNSwgdHJ1ZSk7Ci0gIHR1cGxlPGludCwgYm9vbD4gYjsKLSAg
YiA9IGE7Ci0gIEVYUEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4o
YikpOwotCi0gIHR1cGxlPGxvbmcsIGJvb2w+IGM7Ci0gIGMgPSBhOwotICBFWFBFQ1RfRVEoNUws
IGdldDwwPihjKSk7Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Ci19Ci0KLS8vIEEgZml4dHVy
ZSBmb3IgdGVzdGluZyBiaWcgdHVwbGVzLgotY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOwotCi0gIEJpZ1R1
cGxlVGVzdCgpIDoKLSAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAotICAg
ICAgYl8oMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KLQotICBCaWdUdXBsZSBhXywg
Yl87Ci19OwotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdU
dXBsZVRlc3QsIENvbnN0cnVjdGlvbikgewotICBCaWdUdXBsZSBhOwotICBCaWdUdXBsZSBiKGJf
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1iYXNl
ZCkgZmllbGQgb2YgdHVwbGUgdC4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgewotICBFWFBF
Q1RfRVEoMSwgZ2V0PDA+KGFfKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKLQotICAv
LyBUZXN0cyB0aGF0IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgotICBjb25zdCBC
aWdUdXBsZSBhKGFfKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7Ci0gIEVYUEVDVF9FUSgy
LCBnZXQ8OT4oYSkpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KLVRFU1Rf
RihCaWdUdXBsZVRlc3QsIENvbXBhcmlzb25zKSB7Ci0gIEVYUEVDVF9UUlVFKGFfID09IGFfKTsK
LSAgRVhQRUNUX0ZBTFNFKGFfICE9IGFfKTsKLQotICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7Ci0g
IEVYUEVDVF9GQUxTRShhXyA9PSBiXyk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NG
b3JTY2FsYXJUeXBlcykgewotICB0dXBsZTxib29sLCBpbnQ+IGE7Ci0gIGEgPSBtYWtlX3R1cGxl
KHRydWUsIDUpOwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOwotICBFWFBFQ1RfRVEoNSwgZ2V0
PDE+KGEpKTsKLQotICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7Ci0gIGIgPSBtYWtlX3R1cGxl
KCdhJywgJ2InLCA1KTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VR
KCdiJywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Ci19Ci0KLVRFU1Qo
TWFrZVR1cGxlVGVzdCwgV29ya3NGb3JQb2ludGVycykgewotICBpbnQgYVtdID0geyAxLCAyLCAz
LCA0IH07Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7Ci0gIGludCogY29uc3QgcCA9
IGE7Ci0KLSAgdHVwbGU8Y29uc3QgY2hhciosIGludCo+IHQ7Ci0gIHQgPSBtYWtlX3R1cGxlKHN0
ciwgcCk7Ci0gIEVYUEVDVF9FUShzdHIsIGdldDwwPih0KSk7Ci0gIEVYUEVDVF9FUShwLCBnZXQ8
MT4odCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4NDcwMGIw
MjBiNTI0OTE3NWJmY2ZhM2E1YmFlODVlNmYzOGFhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3Qy
X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
OCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29t
IChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJ0ZXN0L2d0
ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpZiBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUKLS8vIGluc3RhbnRpYXRlZCBpbiBkaWZmZXJlbnQg
dHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotLy8gKENvbnRhaW5lclRlc3QgaXMg
YWxzbyBpbnN0YW50aWF0ZWQgaW4gZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjLikKLUlOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKFZlY3RvciwgQ29udGFpbmVyVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlR5cGVzPHN0ZDo6dmVjdG9yPGludD4gPik7Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
LXR5cGVkLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM2Mjhi
YTA4MGNjZWVhM2Q2MzU1NjY4MzQ3MzBkMDQ0ZDViNDUwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRl
c3RfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVz
dC5oIgotCi0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0KLXVzaW5nIHRlc3Rpbmc6OlRlc3Q7Ci0KLS8vIFVzZWQgZm9yIHRlc3Rp
bmcgdGhhdCBTZXRVcFRlc3RDYXNlKCkvVGVhckRvd25UZXN0Q2FzZSgpLCBmaXh0dXJlCi0vLyBj
dG9yL2R0b3IsIGFuZCBTZXRVcCgpL1RlYXJEb3duKCkgd29yayBjb3JyZWN0bHkgaW4gdHlwZWQg
dGVzdHMgYW5kCi0vLyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgQ29tbW9uVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSAgLy8gRm9yIHNvbWUgdGVj
aG5pY2FsIHJlYXNvbiwgU2V0VXBUZXN0Q2FzZSgpIGFuZCBUZWFyRG93blRlc3RDYXNlKCkKLSAg
Ly8gbXVzdCBiZSBwdWJsaWMuCi0gcHVibGljOgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNl
KCkgewotICAgIHNoYXJlZF8gPSBuZXcgVCg1KTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7Ci0gICAgZGVsZXRlIHNoYXJlZF87Ci0gICAgc2hhcmVkXyA9IE5VTEw7
Ci0gIH0KLQotICAvLyBUaGlzICdwcm90ZWN0ZWQ6JyBpcyBvcHRpb25hbC4gIFRoZXJlJ3Mgbm8g
aGFybSBpbiBtYWtpbmcgYWxsCi0gIC8vIG1lbWJlcnMgb2YgdGhpcyBmaXh0dXJlIGNsYXNzIHRl
bXBsYXRlIHB1YmxpYy4KLSBwcm90ZWN0ZWQ6Ci0gIC8vIFdlIHVzZWQgdG8gdXNlIHN0ZDo6bGlz
dCBoZXJlLCBidXQgc3dpdGNoZWQgdG8gc3RkOjp2ZWN0b3Igc2luY2UKLSAgLy8gTVNWQydzIDxs
aXN0PiBkb2Vzbid0IGNvbXBpbGUgY2xlYW5seSB3aXRoIC9XNC4KLSAgdHlwZWRlZiBzdGQ6OnZl
Y3RvcjxUPiBWZWN0b3I7Ci0gIHR5cGVkZWYgc3RkOjpzZXQ8aW50PiBJbnRTZXQ7Ci0KLSAgQ29t
bW9uVGVzdCgpIDogdmFsdWVfKDEpIHt9Ci0KLSAgdmlydHVhbCB+Q29tbW9uVGVzdCgpIHsgRVhQ
RUNUX0VRKDMsIHZhbHVlXyk7IH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRVhQ
RUNUX0VRKDEsIHZhbHVlXyk7Ci0gICAgdmFsdWVfKys7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKSB7Ci0gICAgRVhQRUNUX0VRKDIsIHZhbHVlXyk7Ci0gICAgdmFsdWVfKys7Ci0g
IH0KLQotICBUIHZhbHVlXzsKLSAgc3RhdGljIFQqIHNoYXJlZF87Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLVQqIENvbW1vblRlc3Q8VD46OnNoYXJlZF8gPSBOVUxMOwotCi0vLyBUaGlz
ICNpZmRlZiBibG9jayB0ZXN0cyB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi11c2luZyB0ZXN0aW5nOjpUeXBlczsKLQotLy8gVGVzdHMgdGhhdCBTZXRVcFRlc3RDYXNl
KCkvVGVhckRvd25UZXN0Q2FzZSgpLCBmaXh0dXJlIGN0b3IvZHRvciwKLS8vIGFuZCBTZXRVcCgp
L1RlYXJEb3duKCkgd29yayBjb3JyZWN0bHkgaW4gdHlwZWQgdGVzdHMKLQotdHlwZWRlZiBUeXBl
czxjaGFyLCBpbnQ+IFR3b1R5cGVzOwotVFlQRURfVEVTVF9DQVNFKENvbW1vblRlc3QsIFR3b1R5
cGVzKTsKLQotVFlQRURfVEVTVChDb21tb25UZXN0LCBWYWx1ZXNBcmVDb3JyZWN0KSB7Ci0gIC8v
IFN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlIGNhbiBiZSB2aXNp
dGVkIHZpYQotICAvLyB0aGUgVGVzdEZpeHR1cmU6OiBwcmVmaXguCi0gIEVYUEVDVF9FUSg1LCAq
VGVzdEZpeHR1cmU6OnNoYXJlZF8pOwotCi0gIC8vIFR5cGVkZWZzIGluIHRoZSBmaXh0dXJlIGNs
YXNzIHRlbXBsYXRlIGNhbiBiZSB2aXNpdGVkIHZpYSB0aGUKLSAgLy8gInR5cGVuYW1lIFRlc3RG
aXh0dXJlOjoiIHByZWZpeC4KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6OlZlY3RvciBlbXB0eTsK
LSAgRVhQRUNUX0VRKDBVLCBlbXB0eS5zaXplKCkpOwotCi0gIHR5cGVuYW1lIFRlc3RGaXh0dXJl
OjpJbnRTZXQgZW1wdHkyOwotICBFWFBFQ1RfRVEoMFUsIGVtcHR5Mi5zaXplKCkpOwotCi0gIC8v
IE5vbi1zdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzcyBtdXN0IGJlIHZpc2l0ZWQg
dmlhCi0gIC8vICd0aGlzJywgYXMgcmVxdWlyZWQgYnkgQysrIGZvciBjbGFzcyB0ZW1wbGF0ZXMu
Ci0gIEVYUEVDVF9FUSgyLCB0aGlzLT52YWx1ZV8pOwotfQotCi0vLyBUaGUgc2Vjb25kIHRlc3Qg
bWFrZXMgc3VyZSBzaGFyZWRfIGlzIG5vdCBkZWxldGVkIGFmdGVyIHRoZSBmaXJzdAotLy8gdGVz
dC4KLVRZUEVEX1RFU1QoQ29tbW9uVGVzdCwgVmFsdWVzQXJlU3RpbGxDb3JyZWN0KSB7Ci0gIC8v
IFN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlIGNhbiBhbHNvIGJl
IHZpc2l0ZWQKLSAgLy8gdmlhICd0aGlzJy4KLSAgQVNTRVJUX1RSVUUodGhpcy0+c2hhcmVkXyAh
PSBOVUxMKTsKLSAgRVhQRUNUX0VRKDUsICp0aGlzLT5zaGFyZWRfKTsKLQotICAvLyBUeXBlUGFy
YW0gY2FuIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIHR5cGUgcGFyYW1ldGVyLgotICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8VHlwZVBhcmFtPigyKSwgdGhpcy0+dmFsdWVfKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBtdWx0aXBsZSBUWVBFRF9URVNUX0NBU0UncyBjYW4gYmUgZGVmaW5lZCBpbiB0aGUg
c2FtZQotLy8gdHJhbnNsYXRpb24gdW5pdC4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUeXBlZFRlc3QxIDogcHVibGljIFRlc3QgewotfTsKLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUg
c2Vjb25kIGFyZ3VtZW50IG9mIFRZUEVEX1RFU1RfQ0FTRSBjYW4gYmUgYQotLy8gc2luZ2xlIHR5
cGUuCi1UWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0MSwgaW50KTsKLVRZUEVEX1RFU1QoVHlwZWRU
ZXN0MSwgQSkge30KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZFRlc3QyIDog
cHVibGljIFRlc3QgewotfTsKLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50
IG9mIFRZUEVEX1RFU1RfQ0FTRSBjYW4gYmUgYQotLy8gVHlwZXM8Li4uPiB0eXBlIGxpc3QuCi1U
WVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0MiwgVHlwZXM8aW50Pik7Ci0KLS8vIFRoaXMgYWxzbyB2
ZXJpZmllcyB0aGF0IHRlc3RzIGZyb20gZGlmZmVyZW50IHR5cGVkIHRlc3QgY2FzZXMgY2FuCi0v
LyBzaGFyZSB0aGUgc2FtZSBuYW1lLgotVFlQRURfVEVTVChUeXBlZFRlc3QyLCBBKSB7fQotCi0v
LyBUZXN0cyB0aGF0IGEgdHlwZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGluIGEgbmFtZXNw
YWNlLgotCi1uYW1lc3BhY2UgbGlicmFyeTEgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIE51bWVyaWNUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQotdHlwZWRlZiBUeXBlczxpbnQs
IGxvbmc+IE51bWVyaWNUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShOdW1lcmljVGVzdCwgTnVtZXJp
Y1R5cGVzKTsKLQotVFlQRURfVEVTVChOdW1lcmljVGVzdCwgRGVmYXVsdElzWmVybykgewotICBF
WFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgbGlicmFyeTEK
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlzICNpZmRlZiBibG9j
ayB0ZXN0cyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1RfUAotCi11c2luZyB0ZXN0aW5nOjpUeXBlczsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpU
eXBlZFRlc3RDYXNlUFN0YXRlOwotCi0vLyBUZXN0cyBUeXBlZFRlc3RDYXNlUFN0YXRlLgotCi1j
bGFzcyBUeXBlZFRlc3RDYXNlUFN0YXRlVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBzdGF0ZV8uQWRkVGVzdE5hbWUoImZvby5j
YyIsIDAsICJGb29UZXN0IiwgIkEiKTsKLSAgICBzdGF0ZV8uQWRkVGVzdE5hbWUoImZvby5jYyIs
IDAsICJGb29UZXN0IiwgIkIiKTsKLSAgICBzdGF0ZV8uQWRkVGVzdE5hbWUoImZvby5jYyIsIDAs
ICJGb29UZXN0IiwgIkMiKTsKLSAgfQotCi0gIFR5cGVkVGVzdENhc2VQU3RhdGUgc3RhdGVfOwot
fTsKLQotVEVTVF9GKFR5cGVkVGVzdENhc2VQU3RhdGVUZXN0LCBTdWNjZWVkc0Zvck1hdGNoaW5n
TGlzdCkgewotICBjb25zdCBjaGFyKiB0ZXN0cyA9ICJBLCBCLCBDIjsKLSAgRVhQRUNUX0VRKHRl
c3RzLAotICAgICAgICAgICAgc3RhdGVfLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoImZvby5j
YyIsIDEsIHRlc3RzKSk7Ci19Ci0KLS8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgb3JkZXIgb2YgdGhl
IHRlc3RzIGFuZCBzcGFjZXMgYXJvdW5kIHRoZSBuYW1lcwotLy8gZG9uJ3QgbWF0dGVyLgotVEVT
VF9GKFR5cGVkVGVzdENhc2VQU3RhdGVUZXN0LCBJZ25vcmVzT3JkZXJBbmRTcGFjZXMpIHsKLSAg
Y29uc3QgY2hhciogdGVzdHMgPSAiQSxDLCAgIEIiOwotICBFWFBFQ1RfRVEodGVzdHMsCi0gICAg
ICAgICAgICBzdGF0ZV8uVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgdGVz
dHMpKTsKLX0KLQotdHlwZWRlZiBUeXBlZFRlc3RDYXNlUFN0YXRlVGVzdCBUeXBlZFRlc3RDYXNl
UFN0YXRlRGVhdGhUZXN0OwotCi1URVNUX0YoVHlwZWRUZXN0Q2FzZVBTdGF0ZURlYXRoVGVzdCwg
RGV0ZWN0c0R1cGxpY2F0ZXMpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKLSAgICAg
IHN0YXRlXy5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKCJmb28uY2MiLCAxLCAiQSwgQiwgQSwg
QyIpLAotICAgICAgImZvb1xcLmNjLjEuPzogVGVzdCBBIGlzIGxpc3RlZCBtb3JlIHRoYW4gb25j
ZVxcLiIpOwotfQotCi1URVNUX0YoVHlwZWRUZXN0Q2FzZVBTdGF0ZURlYXRoVGVzdCwgRGV0ZWN0
c0V4dHJhVGVzdCkgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAgICAgc3RhdGVf
LlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoImZvby5jYyIsIDEsICJBLCBCLCBDLCBEIiksCi0g
ICAgICAiZm9vXFwuY2MuMS4/OiBObyB0ZXN0IG5hbWVkIEQgY2FuIGJlIGZvdW5kIGluIHRoaXMg
dGVzdCBjYXNlXFwuIik7Ci19Ci0KLVRFU1RfRihUeXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0
LCBEZXRlY3RzTWlzc2VkVGVzdCkgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAg
ICAgc3RhdGVfLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoImZvby5jYyIsIDEsICJBLCBDIiks
Ci0gICAgICAiZm9vXFwuY2MuMS4/OiBZb3UgZm9yZ290IHRvIGxpc3QgdGVzdCBCXFwuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgZGVmaW5pbmcgYSB0ZXN0IGZvciBhIHBhcmFtZXRlcml6ZWQgdGVz
dCBjYXNlIGdlbmVyYXRlcwotLy8gYSBydW4tdGltZSBlcnJvciBpZiB0aGUgdGVzdCBjYXNlIGhh
cyBiZWVuIHJlZ2lzdGVyZWQuCi1URVNUX0YoVHlwZWRUZXN0Q2FzZVBTdGF0ZURlYXRoVGVzdCwg
RGV0ZWN0c1Rlc3RBZnRlclJlZ2lzdHJhdGlvbikgewotICBzdGF0ZV8uVmVyaWZ5UmVnaXN0ZXJl
ZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgIkEsIEIsIEMiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCgKLSAgICAgIHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMiwgIkZvb1Rlc3Qi
LCAiRCIpLAotICAgICAgImZvb1xcLmNjLjIuPzogVGVzdCBEIG11c3QgYmUgZGVmaW5lZCBiZWZv
cmUgUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AiCi0gICAgICAiXFwoRm9vVGVzdCwgXFwuXFwu
XFwuXFwpXFwuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU2V0VXBUZXN0Q2FzZSgpL1RlYXJEb3du
VGVzdENhc2UoKSwgZml4dHVyZSBjdG9yL2R0b3IsCi0vLyBhbmQgU2V0VXAoKS9UZWFyRG93bigp
IHdvcmsgY29ycmVjdGx5IGluIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBDb21tb25UZXN0PFQ+IHsK
LX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKERlcml2ZWRUZXN0KTsKLQotVFlQRURfVEVTVF9QKERl
cml2ZWRUZXN0LCBWYWx1ZXNBcmVDb3JyZWN0KSB7Ci0gIC8vIFN0YXRpYyBtZW1iZXJzIG9mIHRo
ZSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlIGNhbiBiZSB2aXNpdGVkIHZpYQotICAvLyB0aGUgVGVz
dEZpeHR1cmU6OiBwcmVmaXguCi0gIEVYUEVDVF9FUSg1LCAqVGVzdEZpeHR1cmU6OnNoYXJlZF8p
OwotCi0gIC8vIE5vbi1zdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzcyBtdXN0IGJl
IHZpc2l0ZWQgdmlhCi0gIC8vICd0aGlzJywgYXMgcmVxdWlyZWQgYnkgQysrIGZvciBjbGFzcyB0
ZW1wbGF0ZXMuCi0gIEVYUEVDVF9FUSgyLCB0aGlzLT52YWx1ZV8pOwotfQotCi0vLyBUaGUgc2Vj
b25kIHRlc3QgbWFrZXMgc3VyZSBzaGFyZWRfIGlzIG5vdCBkZWxldGVkIGFmdGVyIHRoZSBmaXJz
dAotLy8gdGVzdC4KLVRZUEVEX1RFU1RfUChEZXJpdmVkVGVzdCwgVmFsdWVzQXJlU3RpbGxDb3Jy
ZWN0KSB7Ci0gIC8vIFN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRl
IGNhbiBhbHNvIGJlIHZpc2l0ZWQKLSAgLy8gdmlhICd0aGlzJy4KLSAgQVNTRVJUX1RSVUUodGhp
cy0+c2hhcmVkXyAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDUsICp0aGlzLT5zaGFyZWRfKTsKLSAg
RVhQRUNUX0VRKDIsIHRoaXMtPnZhbHVlXyk7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKERlcml2ZWRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzQXJlQ29y
cmVjdCwgVmFsdWVzQXJlU3RpbGxDb3JyZWN0KTsKLQotdHlwZWRlZiBUeXBlczxzaG9ydCwgbG9u
Zz4gTXlUd29UeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBEZXJpdmVk
VGVzdCwgTXlUd29UeXBlcyk7Ci0KLS8vIFRlc3RzIHRoYXQgbXVsdGlwbGUgVFlQRURfVEVTVF9D
QVNFX1AncyBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgc2FtZQotLy8gdHJhbnNsYXRpb24gdW5pdC4K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlZFRlc3RQMSA6IHB1YmxpYyBUZXN0
IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAxKTsKLQotLy8gRm9yIHRlc3Rp
bmcgdGhhdCB0aGUgY29kZSBiZXR3ZWVuIFRZUEVEX1RFU1RfQ0FTRV9QKCkgYW5kCi0vLyBUWVBF
RF9URVNUX1AoKSBpcyBub3QgZW5jbG9zZWQgaW4gYSBuYW1lc3BhY2UuCi10eXBlZGVmIGludCBJ
bnRBZnRlclR5cGVkVGVzdENhc2VQOwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UDEsIEEpIHt9
Ci1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UDEsIEIpIHt9Ci0KLS8vIEZvciB0ZXN0aW5nIHRoYXQg
dGhlIGNvZGUgYmV0d2VlbiBUWVBFRF9URVNUX1AoKSBhbmQKLS8vIFJFR0lTVEVSX1RZUEVEX1RF
U1RfQ0FTRV9QKCkgaXMgbm90IGVuY2xvc2VkIGluIGEgbmFtZXNwYWNlLgotdHlwZWRlZiBpbnQg
SW50QmVmb3JlUmVnaXN0ZXJUeXBlZFRlc3RDYXNlUDsKLQotUkVHSVNURVJfVFlQRURfVEVTVF9D
QVNFX1AoVHlwZWRUZXN0UDEsIEEsIEIpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFR5cGVkVGVzdFAyIDogcHVibGljIFRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFX1AoVHlw
ZWRUZXN0UDIpOwotCi0vLyBUaGlzIGFsc28gdmVyaWZpZXMgdGhhdCB0ZXN0cyBmcm9tIGRpZmZl
cmVudCB0eXBlLXBhcmFtZXRlcml6ZWQKLS8vIHRlc3QgY2FzZXMgY2FuIHNoYXJlIHRoZSBzYW1l
IG5hbWUuCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UDIsIEEpIHt9Ci0KLVJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAyLCBBKTsKLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29k
ZSBiZXR3ZWVuIFRZUEVEX1RFU1RfQ0FTRV9QKCkgYW5kCi0vLyBSRUdJU1RFUl9UWVBFRF9URVNU
X0NBU0VfUCgpIGlzIG5vdCBlbmNsb3NlZCBpbiBhIG5hbWVzcGFjZS4KLUludEFmdGVyVHlwZWRU
ZXN0Q2FzZVAgYWZ0ZXIgPSAwOwotSW50QmVmb3JlUmVnaXN0ZXJUeXBlZFRlc3RDYXNlUCBiZWZv
cmUgPSAwOwotCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IG9mIElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QKCkKLS8vIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgdHlwZSBv
ciBhIFR5cGVzPC4uLj4gdHlwZSBsaXN0LgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
SW50LCBUeXBlZFRlc3RQMSwgaW50KTsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKElu
dCwgVHlwZWRUZXN0UDIsIFR5cGVzPGludD4pOwotCi0vLyBUZXN0cyB0aGF0IHRoZSBzYW1lIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlCi0vLyBpbnN0YW50aWF0ZWQgbW9yZSB0
aGFuIG9uY2UgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4KLUlOU1RBTlRJQVRFX1RZUEVE
X1RFU1RfQ0FTRV9QKERvdWJsZSwgVHlwZWRUZXN0UDIsIFR5cGVzPGRvdWJsZT4pOwotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBzYW1lIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlCi0v
LyBpbnN0YW50aWF0ZWQgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGxpbmtlZCB0b2dl
dGhlci4KLS8vIChDb250YWluZXJUZXN0IGlzIGFsc28gaW5zdGFudGlhdGVkIGluIGd0ZXN0LXR5
cGVkLXRlc3RfdGVzdC5jYy4pCi10eXBlZGVmIFR5cGVzPHN0ZDo6dmVjdG9yPGRvdWJsZT4sIHN0
ZDo6c2V0PGNoYXI+ID4gTXlDb250YWluZXJzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoTXksIENvbnRhaW5lclRlc3QsIE15Q29udGFpbmVycyk7Ci0KLS8vIFRlc3RzIHRoYXQgYSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBkZWZpbmVkIGFuZAotLy8gaW5zdGFu
dGlhdGVkIGluIGEgbmFtZXNwYWNlLgotCi1uYW1lc3BhY2UgbGlicmFyeTIgewotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE51bWVyaWNUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQot
VFlQRURfVEVTVF9DQVNFX1AoTnVtZXJpY1Rlc3QpOwotCi1UWVBFRF9URVNUX1AoTnVtZXJpY1Rl
c3QsIERlZmF1bHRJc1plcm8pIHsKLSAgRVhQRUNUX0VRKDAsIFR5cGVQYXJhbSgpKTsKLX0KLQot
VFlQRURfVEVTVF9QKE51bWVyaWNUZXN0LCBaZXJvSXNMZXNzVGhhbk9uZSkgewotICBFWFBFQ1Rf
TFQoVHlwZVBhcmFtKDApLCBUeXBlUGFyYW0oMSkpOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNU
X0NBU0VfUChOdW1lcmljVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRJ
c1plcm8sIFplcm9Jc0xlc3NUaGFuT25lKTsKLXR5cGVkZWYgVHlwZXM8aW50LCBkb3VibGU+IE51
bWVyaWNUeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBOdW1lcmljVGVz
dCwgTnVtZXJpY1R5cGVzKTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIEdldFRlc3ROYW1lKCkgewot
ICByZXR1cm4gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9p
bmZvKCktPm5hbWUoKTsKLX0KLS8vIFRlc3QgdGhlIHN0cmlwcGluZyBvZiBzcGFjZSBmcm9tIHRl
c3QgbmFtZXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBUcmltbWVkVGVzdCA6IHB1Ymxp
YyBUZXN0IHsgfTsKLVRZUEVEX1RFU1RfQ0FTRV9QKFRyaW1tZWRUZXN0KTsKLVRZUEVEX1RFU1Rf
UChUcmltbWVkVGVzdCwgVGVzdDEpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MSIsIEdldFRlc3ROYW1l
KCkpOyB9Ci1UWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QyKSB7IEVYUEVDVF9TVFJFUSgi
VGVzdDIiLCBHZXRUZXN0TmFtZSgpKTsgfQotVFlQRURfVEVTVF9QKFRyaW1tZWRUZXN0LCBUZXN0
MykgeyBFWFBFQ1RfU1RSRVEoIlRlc3QzIiwgR2V0VGVzdE5hbWUoKSk7IH0KLVRZUEVEX1RFU1Rf
UChUcmltbWVkVGVzdCwgVGVzdDQpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NCIsIEdldFRlc3ROYW1l
KCkpOyB9Ci1UWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3Q1KSB7IEVYUEVDVF9TVFJFUSgi
VGVzdDUiLCBHZXRUZXN0TmFtZSgpKTsgfQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoCi0g
ICAgVHJpbW1lZFRlc3QsCi0gICAgVGVzdDEsIFRlc3QyLFRlc3QzICwgVGVzdDQgLFRlc3Q1ICk7
ICAvLyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBN
eVBhaXIge307Ci0vLyBCZSBzdXJlIHRvIHRyeSBhIHR5cGUgd2l0aCBhIGNvbW1hIGluIGl0cyBu
YW1lIGp1c3QgaW4gY2FzZSBpdCBtYXR0ZXJzLgotdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZSwg
TXlQYWlyPGludCwgaW50PiA+IFRyaW1UeXBlczsKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FT
RV9QKE15LCBUcmltbWVkVGVzdCwgVHJpbVR5cGVzKTsKLQotfSAgLy8gbmFtZXNwYWNlIGxpYnJh
cnkyCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgIWRlZmluZWQo
R1RFU1RfSEFTX1RZUEVEX1RFU1QpICYmICFkZWZpbmVkKEdURVNUX0hBU19UWVBFRF9URVNUX1Ap
Ci0KLS8vIEdvb2dsZSBUZXN0IG1heSBub3Qgc3VwcG9ydCB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dHMgd2l0aCBzb21lCi0vLyBjb21waWxlcnMuIElmIHdlIHVzZSBjb25kaXRpb25hbCBjb21waWxh
dGlvbiB0byBjb21waWxlIG91dCBhbGwKLS8vIGNvZGUgcmVmZXJyaW5nIHRvIHRoZSBndGVzdF9t
YWluIGxpYnJhcnksIE1TVkMgbGlua2VyIHdpbGwgbm90IGxpbmsKLS8vIHRoYXQgbGlicmFyeSBh
dCBhbGwgYW5kIGNvbnNlcXVlbnRseSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIGVudHJ5Ci0vLyBw
b2ludCBkZWZpbmVkIGluIHRoYXQgbGlicmFyeSAoZmF0YWwgZXJyb3IgTE5LMTU2MTogZW50cnkg
cG9pbnQKLS8vIG11c3QgYmUgZGVmaW5lZCkuIFRoaXMgZHVtbXkgdGVzdCBrZWVwcyBndGVzdF9t
YWluIGxpbmtlZCBpbi4KLVRFU1QoRHVtbXlUZXN0LCBUeXBlZFRlc3RzQXJlTm90U3VwcG9ydGVk
T25UaGlzUGxhdGZvcm0pIHt9Ci0KLSNlbmRpZiAgLy8gI2lmICFkZWZpbmVkKEdURVNUX0hBU19U
WVBFRF9URVNUKSAmJiAhZGVmaW5lZChHVEVTVF9IQVNfVFlQRURfVEVTVF9QKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0X3Rlc3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQxZDc1NzA0Y2Y4NGQ4YmQwNTQ5MGQ5OTM0YjY1MjIxMzE2OWU4ZmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2Fu
QGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1RZ
UEVEX1RFU1RfVEVTVF9IXwotI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVT
VF9IXwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKLQotdXNpbmcgdGVzdGluZzo6VGVzdDsKLQotLy8gRm9yIHRlc3RpbmcgdGhhdCB0aGUg
c2FtZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZQotLy8gaW5zdGFudGlhdGVk
IGluIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9nZXRoZXIuCi0vLyBDb250
YWluZXJUZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluIGJvdGggZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmNjCi0vLyBhbmQgZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYy4KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBDb250YWluZXJUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQotVFlQ
RURfVEVTVF9DQVNFX1AoQ29udGFpbmVyVGVzdCk7Ci0KLVRZUEVEX1RFU1RfUChDb250YWluZXJU
ZXN0LCBDYW5CZURlZmF1bHRDb25zdHJ1Y3RlZCkgewotICBUeXBlUGFyYW0gY29udGFpbmVyOwot
fQotCi1UWVBFRF9URVNUX1AoQ29udGFpbmVyVGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAg
VHlwZVBhcmFtIGNvbnRhaW5lcjsKLSAgRVhQRUNUX0VRKDBVLCBjb250YWluZXIuc2l6ZSgpKTsK
LX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ29udGFpbmVyVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENhbkJlRGVmYXVsdENvbnN0cnVjdGVkLCBJbml0aWFsU2l6ZUlz
WmVybyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jZW5kaWYgIC8v
IEdURVNUX1RFU1RfR1RFU1RfVFlQRURfVEVTVF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdC11bml0dGVzdC1hcGlfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjFmNTE2ODhhZjc1MzNiNDMxNjcxNDljYTI0ZTlkY2Q2YzU1ZDViNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXVu
aXR0ZXN0LWFwaV90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzQxICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxA
Z29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZy
YW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIHZl
cmlmeWluZyBjb3JyZWN0bmVzcyBvZiBkYXRhIHByb3ZpZGVkIHZpYQotLy8gVW5pdFRlc3QncyBw
dWJsaWMgbWV0aG9kcy4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxz
dHJpbmcuaD4gIC8vIEZvciBzdHJjbXAuCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi11c2luZyA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBMZXNzQnlOYW1l
IHsKLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQqIGEsIGNvbnN0IFQqIGIpIHsKLSAgICByZXR1
cm4gc3RyY21wKGEtPm5hbWUoKSwgYi0+bmFtZSgpKSA8IDA7Ci0gIH0KLX07Ci0KLWNsYXNzIFVu
aXRUZXN0SGVscGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBvaW50
ZXJzIHRvIGFsbCB0ZXN0IGNhc2VzIHNvcnRlZCBieSB0aGUgdGVzdCBjYXNlCi0gIC8vIG5hbWUu
ICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgYXJyYXkuCi0gIHN0
YXRpYyBUZXN0Q2FzZSBjb25zdCoqIEdldFNvcnRlZFRlc3RDYXNlcygpIHsKLSAgICBVbml0VGVz
dCYgdW5pdF90ZXN0ID0gKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotICAgIFRlc3RDYXNlIGNv
bnN0KiogY29uc3QgdGVzdF9jYXNlcyA9Ci0gICAgICAgIG5ldyBjb25zdCBUZXN0Q2FzZSpbdW5p
dF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpXTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpCi0gICAgICB0ZXN0X2Nh
c2VzW2ldID0gdW5pdF90ZXN0LkdldFRlc3RDYXNlKGkpOwotCi0gICAgc3RkOjpzb3J0KHRlc3Rf
Y2FzZXMsCi0gICAgICAgICAgICAgIHRlc3RfY2FzZXMgKyB1bml0X3Rlc3QudG90YWxfdGVzdF9j
YXNlX2NvdW50KCksCi0gICAgICAgICAgICAgIExlc3NCeU5hbWU8VGVzdENhc2U+KCkpOwotICAg
IHJldHVybiB0ZXN0X2Nhc2VzOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIGJ5
IGl0cyBuYW1lLiAgVGhlIGNhbGxlciBkb2Vzbid0IG93biB0aGUgcmV0dXJuZWQKLSAgLy8gcG9p
bnRlci4KLSAgc3RhdGljIGNvbnN0IFRlc3RDYXNlKiBGaW5kVGVzdENhc2UoY29uc3QgY2hhciog
bmFtZSkgewotICAgIFVuaXRUZXN0JiB1bml0X3Rlc3QgPSAqVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1bml0X3Rlc3QudG90YWxfdGVzdF9jYXNlX2Nv
dW50KCk7ICsraSkgewotICAgICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IHVuaXRfdGVz
dC5HZXRUZXN0Q2FzZShpKTsKLSAgICAgIGlmICgwID09IHN0cmNtcCh0ZXN0X2Nhc2UtPm5hbWUo
KSwgbmFtZSkpCi0gICAgICAgIHJldHVybiB0ZXN0X2Nhc2U7Ci0gICAgfQotICAgIHJldHVybiBO
VUxMOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gYWxsIHRl
c3RzIGluIGEgcGFydGljdWxhciB0ZXN0IGNhc2UKLSAgLy8gc29ydGVkIGJ5IHRoZSB0ZXN0IG5h
bWUuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUKLSAgLy8gYXJy
YXkuCi0gIHN0YXRpYyBUZXN0SW5mbyBjb25zdCoqIEdldFNvcnRlZFRlc3RzKGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UpIHsKLSAgICBUZXN0SW5mbyBjb25zdCoqIGNvbnN0IHRlc3RzID0KLSAg
ICAgICAgbmV3IGNvbnN0IFRlc3RJbmZvKlt0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKV07
Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgp
OyArK2kpCi0gICAgICB0ZXN0c1tpXSA9IHRlc3RfY2FzZS0+R2V0VGVzdEluZm8oaSk7Ci0KLSAg
ICBzdGQ6OnNvcnQodGVzdHMsIHRlc3RzICsgdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCks
Ci0gICAgICAgICAgICAgIExlc3NCeU5hbWU8VGVzdEluZm8+KCkpOwotICAgIHJldHVybiB0ZXN0
czsKLSAgfQotfTsKLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgVGVzdENhc2VXaXRoQ29tbWVudFRlc3QgOiBwdWJsaWMgVGVzdCB7fTsKLVRZ
UEVEX1RFU1RfQ0FTRShUZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgVHlwZXM8aW50Pik7Ci1UWVBF
RF9URVNUKFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0LCBEdW1teSkge30KLQotY29uc3QgaW50IGtU
eXBlZFRlc3RDYXNlcyA9IDE7Ci1jb25zdCBpbnQga1R5cGVkVGVzdHMgPSAxOwotI2Vsc2UKLWNv
bnN0IGludCBrVHlwZWRUZXN0Q2FzZXMgPSAwOwotY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMDsK
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotLy8gV2UgY2FuIG9ubHkgdGVzdCB0
aGUgYWNjZXNzb3JzIHRoYXQgZG8gbm90IGNoYW5nZSB2YWx1ZSB3aGlsZSB0ZXN0cyBydW4uCi0v
LyBTaW5jZSB0ZXN0cyBjYW4gYmUgcnVuIGluIGFueSBvcmRlciwgdGhlIHZhbHVlcyB0aGUgYWNj
ZXNzb3JzIHRoYXQgdHJhY2sKLS8vIHRlc3QgZXhlY3V0aW9uIChzdWNoIGFzIGZhaWxlZF90ZXN0
X2NvdW50KSBjYW4gbm90IGJlIHByZWRpY3RlZC4KLVRFU1QoQXBpVGVzdCwgVW5pdFRlc3RJbW11
dGFibGVBY2Nlc3NvcnNXb3JrKSB7Ci0gIFVuaXRUZXN0KiB1bml0X3Rlc3QgPSBVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKTsKLQotICBBU1NFUlRfRVEoMiArIGtUeXBlZFRlc3RDYXNlcywgdW5pdF90
ZXN0LT50b3RhbF90ZXN0X2Nhc2VfY291bnQoKSk7Ci0gIEVYUEVDVF9FUSgxICsga1R5cGVkVGVz
dENhc2VzLCB1bml0X3Rlc3QtPnRlc3RfY2FzZV90b19ydW5fY291bnQoKSk7Ci0gIEVYUEVDVF9F
USgyLCB1bml0X3Rlc3QtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7Ci0gIEVYUEVDVF9FUSg1ICsg
a1R5cGVkVGVzdHMsIHVuaXRfdGVzdC0+dG90YWxfdGVzdF9jb3VudCgpKTsKLSAgRVhQRUNUX0VR
KDMgKyBrVHlwZWRUZXN0cywgdW5pdF90ZXN0LT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKLQotICBj
b25zdCBUZXN0Q2FzZSoqIGNvbnN0IHRlc3RfY2FzZXMgPSBVbml0VGVzdEhlbHBlcjo6R2V0U29y
dGVkVGVzdENhc2VzKCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlc1sw
XS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9jYXNlc1sx
XS0+bmFtZSgpKTsKLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotICBFWFBFQ1RfU1RSRVEoIlRl
c3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0gIGRlbGV0ZVtdIHRlc3RfY2FzZXM7Ci0KLSAg
Ly8gVGhlIGZvbGxvd2luZyBsaW5lcyBpbml0aWF0ZSBhY3Rpb25zIHRvIHZlcmlmeSBjZXJ0YWlu
IG1ldGhvZHMgaW4KLSAgLy8gRmluYWxTdWNjZXNzQ2hlY2tlcjo6VGVhckRvd24uCi0KLSAgLy8g
UmVjb3JkcyBhIHRlc3QgcHJvcGVydHkgdG8gdmVyaWZ5IFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9w
ZXJ0eSgpLgotICBSZWNvcmRQcm9wZXJ0eSgia2V5IiwgInZhbHVlIik7Ci19Ci0KLUFzc2VydGlv
blJlc3VsdCBJc051bGwoY29uc3QgY2hhciogc3RyKSB7Ci0gIGlmIChzdHIgIT0gTlVMTCkgewot
ICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgImFyZ3VtZW50IGlzICIg
PDwgc3RyOwotICB9Ci0gIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci19Ci0KLVRFU1QoQXBp
VGVzdCwgVGVzdENhc2VJbW11dGFibGVBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RDYXNl
KiB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRlc3RDYXNlKCJBcGlUZXN0Iik7Ci0g
IEFTU0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKLQotICBFWFBFQ1RfU1RSRVEoIkFwaVRl
c3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2Ut
PnR5cGVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSk7
Ci0gIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7Ci0gIEVY
UEVDVF9FUSgzLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwotICBBU1NFUlRfRVEo
NCwgdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCkpOwotCi0gIGNvbnN0IFRlc3RJbmZvKiog
dGVzdHMgPSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdHModGVzdF9jYXNlKTsKLQotICBF
WFBFQ1RfU1RSRVEoIkRJU0FCTEVEX0R1bW15MSIsIHRlc3RzWzBdLT5uYW1lKCkpOwotICBFWFBF
Q1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVD
VF9UUlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMF0tPnR5cGVfcGFyYW0oKSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdHNbMF0t
PnNob3VsZF9ydW4oKSk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZURpc2FibGVkQWNjZXNz
b3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0
ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1sx
XS0+dmFsdWVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnR5cGVf
cGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1bigpKTsKLQotICBF
WFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzJdLT5u
YW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+dGVzdF9jYXNlX25h
bWUoKSk7Ci0gIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0c1syXS0+dmFsdWVfcGFyYW0oKSkpOwot
ICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5cGVfcGFyYW0oKSkpOwotICBFWFBFQ1Rf
VFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKLQotICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0
SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNdLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RS
RVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0c1szXS0+dmFsdWVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxk
X3J1bigpKTsKLQotICBkZWxldGVbXSB0ZXN0czsKLSAgdGVzdHMgPSBOVUxMOwotCi0jaWYgR1RF
U1RfSEFTX1RZUEVEX1RFU1QKLSAgdGVzdF9jYXNlID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0
Q2FzZSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIpOwotICBBU1NFUlRfVFJVRSh0ZXN0X2Nh
c2UgIT0gTlVMTCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8w
IiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfU1RSRVEoR2V0VHlwZU5hbWU8aW50Pigp
LmNfc3RyKCksIHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKTsKLSAgRVhQRUNUX1RSVUUodGVzdF9j
YXNlLT5zaG91bGRfcnVuKCkpOwotICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT5kaXNhYmxlZF90
ZXN0X2NvdW50KCkpOwotICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3Vu
dCgpKTsKLSAgQVNTRVJUX0VRKDEsIHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpKTsKLQot
ICB0ZXN0cyA9IFVuaXRUZXN0SGVscGVyOjpHZXRTb3J0ZWRUZXN0cyh0ZXN0X2Nhc2UpOwotCi0g
IEVYUEVDVF9TVFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVR
KCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkp
OwotICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKLSAgRVhQ
RUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJh
bSgpKTsKLSAgRVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7Ci0KLSAgZGVsZXRl
W10gdGVzdHM7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi19Ci0KLVRFU1QoQXBp
VGVzdCwgVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmspIHsKLSAgY29uc3QgVGVzdENhc2Uq
IHRlc3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIkRJU0FCTEVEX1Rlc3Qi
KTsKLSAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5VTEwpOwotCi0gIEVYUEVDVF9TVFJFUSgi
RElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1RSVUUoSXNOdWxs
KHRlc3RfY2FzZS0+dHlwZV9wYXJhbSgpKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2UtPnNo
b3VsZF9ydW4oKSk7Ci0gIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2UtPmRpc2FibGVkX3Rlc3RfY291
bnQoKSk7Ci0gIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2UtPnRlc3RfdG9fcnVuX2NvdW50KCkpOwot
ICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCkpOwotCi0gIGNvbnN0
IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKDApOwot
ICBFWFBFQ1RfU1RSRVEoIkR1bW15MiIsIHRlc3RfaW5mby0+bmFtZSgpKTsKLSAgRVhQRUNUX1NU
UkVRKCJESVNBQkxFRF9UZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNOdWxsKHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSkpOwotICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdF9pbmZvLT50eXBlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3Rf
aW5mby0+c2hvdWxkX3J1bigpKTsKLX0KLQotLy8gVGhlc2UgdHdvIHRlc3RzIGFyZSBoZXJlIHRv
IHByb3ZpZGUgc3VwcG9ydCBmb3IgdGVzdGluZwotLy8gdGVzdF9jYXNlX3RvX3J1bl9jb3VudCwg
ZGlzYWJsZWRfdGVzdF9jb3VudCwgYW5kIHRlc3RfdG9fcnVuX2NvdW50LgotVEVTVChBcGlUZXN0
LCBESVNBQkxFRF9EdW1teTEpIHt9Ci1URVNUKERJU0FCTEVEX1Rlc3QsIER1bW15Mikge30KLQot
Y2xhc3MgRmluYWxTdWNjZXNzQ2hlY2tlciA6IHB1YmxpYyBFbnZpcm9ubWVudCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgVW5pdFRlc3QqIHVuaXRfdGVz
dCA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotCi0gICAgRVhQRUNUX0VRKDEgKyBrVHlwZWRU
ZXN0Q2FzZXMsIHVuaXRfdGVzdC0+c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKSk7Ci0gICAg
RVhQRUNUX0VRKDMgKyBrVHlwZWRUZXN0cywgdW5pdF90ZXN0LT5zdWNjZXNzZnVsX3Rlc3RfY291
bnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHVuaXRfdGVzdC0+ZmFpbGVkX3Rlc3RfY2FzZV9jb3Vu
dCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgdW5pdF90ZXN0LT5mYWlsZWRfdGVzdF9jb3VudCgpKTsK
LSAgICBFWFBFQ1RfVFJVRSh1bml0X3Rlc3QtPlBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
dW5pdF90ZXN0LT5GYWlsZWQoKSk7Ci0gICAgQVNTRVJUX0VRKDIgKyBrVHlwZWRUZXN0Q2FzZXMs
IHVuaXRfdGVzdC0+dG90YWxfdGVzdF9jYXNlX2NvdW50KCkpOwotCi0gICAgY29uc3QgVGVzdENh
c2UqKiBjb25zdCB0ZXN0X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RDYXNl
cygpOwotCi0gICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdF9jYXNlc1swXS0+bmFtZSgp
KTsKLSAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlc1swXS0+dHlwZV9wYXJhbSgpKSk7
Ci0gICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1swXS0+c2hvdWxkX3J1bigpKTsKLSAgICBFWFBF
Q1RfRVEoMSwgdGVzdF9jYXNlc1swXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgICBBU1NF
UlRfRVEoNCwgdGVzdF9jYXNlc1swXS0+dG90YWxfdGVzdF9jb3VudCgpKTsKLSAgICBFWFBFQ1Rf
RVEoMywgdGVzdF9jYXNlc1swXS0+c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkpOwotICAgIEVYUEVD
VF9FUSgwLCB0ZXN0X2Nhc2VzWzBdLT5mYWlsZWRfdGVzdF9jb3VudCgpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0X2Nhc2VzWzBdLT5QYXNzZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3RfY2Fz
ZXNbMF0tPkZhaWxlZCgpKTsKLQotICAgIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRl
c3RfY2FzZXNbMV0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNb
MV0tPnR5cGVfcGFyYW0oKSkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzFdLT5zaG91
bGRfcnVuKCkpOwotICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT5kaXNhYmxlZF90ZXN0
X2NvdW50KCkpOwotICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzFdLT50b3RhbF90ZXN0X2Nv
dW50KCkpOwotICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzFdLT5zdWNjZXNzZnVsX3Rlc3Rf
Y291bnQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZXNbMV0tPmZhaWxlZF90ZXN0X2Nv
dW50KCkpOwotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLSAgICBFWFBFQ1RfU1RSRVEoIlRl
c3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0X2Nhc2VzWzJdLT5uYW1lKCkpOwotICAgIEVY
UEVDVF9TVFJFUShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdF9jYXNlc1syXS0+dHlw
ZV9wYXJhbSgpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5zaG91bGRfcnVuKCkp
OwotICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkp
OwotICAgIEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT50b3RhbF90ZXN0X2NvdW50KCkpOwot
ICAgIEVYUEVDVF9FUSgxLCB0ZXN0X2Nhc2VzWzJdLT5zdWNjZXNzZnVsX3Rlc3RfY291bnQoKSk7
Ci0gICAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZXNbMl0tPmZhaWxlZF90ZXN0X2NvdW50KCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRlc3RfY2FzZXNbMl0tPlBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRkFM
U0UodGVzdF9jYXNlc1syXS0+RmFpbGVkKCkpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURf
VEVTVAotCi0gICAgY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpG
aW5kVGVzdENhc2UoIkFwaVRlc3QiKTsKLSAgICBjb25zdCBUZXN0SW5mbyoqIHRlc3RzID0gVW5p
dFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RzKHRlc3RfY2FzZSk7Ci0gICAgRVhQRUNUX1NUUkVR
KCJESVNBQkxFRF9EdW1teTEiLCB0ZXN0c1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEo
IkFwaVRlc3QiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwotCi0gICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZURp
c2FibGVkQWNjZXNzb3JzV29yayIsIHRlc3RzWzFdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJF
USgiQXBpVGVzdCIsIHRlc3RzWzFdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfVFJV
RShJc051bGwodGVzdHNbMV0tPnZhbHVlX3BhcmFtKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShJc051
bGwodGVzdHNbMV0tPnR5cGVfcGFyYW0oKSkpOwotICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5z
aG91bGRfcnVuKCkpOwotICAgIEVYUEVDVF9UUlVFKHRlc3RzWzFdLT5yZXN1bHQoKS0+UGFzc2Vk
KCkpOwotICAgIEVYUEVDVF9FUSgwLCB0ZXN0c1sxXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlf
Y291bnQoKSk7Ci0KLSAgICBFWFBFQ1RfU1RSRVEoIlRlc3RDYXNlSW1tdXRhYmxlQWNjZXNzb3Jz
V29yayIsIHRlc3RzWzJdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRl
c3RzWzJdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNb
Ml0tPnZhbHVlX3BhcmFtKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnR5
cGVfcGFyYW0oKSkpOwotICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5zaG91bGRfcnVuKCkpOwot
ICAgIEVYUEVDVF9UUlVFKHRlc3RzWzJdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwotICAgIEVYUEVD
VF9FUSgwLCB0ZXN0c1syXS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0KLSAg
ICBFWFBFQ1RfU1RSRVEoIlVuaXRUZXN0SW1tdXRhYmxlQWNjZXNzb3JzV29yayIsIHRlc3RzWzNd
LT5uYW1lKCkpOwotICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RzWzNdLT50ZXN0X2Nh
c2VfbmFtZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnZhbHVlX3BhcmFt
KCkpKTsKLSAgICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbM10tPnR5cGVfcGFyYW0oKSkpOwot
ICAgIEVYUEVDVF9UUlVFKHRlc3RzWzNdLT5zaG91bGRfcnVuKCkpOwotICAgIEVYUEVDVF9UUlVF
KHRlc3RzWzNdLT5yZXN1bHQoKS0+UGFzc2VkKCkpOwotICAgIEVYUEVDVF9FUSgxLCB0ZXN0c1sz
XS0+cmVzdWx0KCktPnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0gICAgY29uc3QgVGVzdFByb3Bl
cnR5JiBwcm9wZXJ0eSA9IHRlc3RzWzNdLT5yZXN1bHQoKS0+R2V0VGVzdFByb3BlcnR5KDApOwot
ICAgIEVYUEVDVF9TVFJFUSgia2V5IiwgcHJvcGVydHkua2V5KCkpOwotICAgIEVYUEVDVF9TVFJF
USgidmFsdWUiLCBwcm9wZXJ0eS52YWx1ZSgpKTsKLQotICAgIGRlbGV0ZVtdIHRlc3RzOwotCi0j
aWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLSAgICB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBlcjo6
RmluZFRlc3RDYXNlKCJUZXN0Q2FzZVdpdGhDb21tZW50VGVzdC8wIik7Ci0gICAgdGVzdHMgPSBV
bml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdHModGVzdF9jYXNlKTsKLQotICAgIEVYUEVDVF9T
VFJFUSgiRHVtbXkiLCB0ZXN0c1swXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIlRlc3RD
YXNlV2l0aENvbW1lbnRUZXN0LzAiLCB0ZXN0c1swXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigpLCB0ZXN0c1swXS0+dHlwZV9wYXJhbSgp
KTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0c1swXS0+c2hvdWxkX3J1bigpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0c1swXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgdGVz
dHNbMF0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwotCi0gICAgZGVsZXRlW10g
dGVzdHM7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0gICAgZGVsZXRlW10gdGVz
dF9jYXNlczsKLSAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgdGVzdGluZzo6aW50ZXJuYWw6OkZpbmFsU3VjY2Vzc0NoZWNrZXIoKSk7Ci0KLSAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
YWxsX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTVhYTYyODI4NDgzM2RiNmM0ZGU4OGEyMGFlZDYzZjZm
MThkY2NlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYWxsX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0NyAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZv
ciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBTb21l
dGltZXMgaXQncyBkZXNpcmFibGUgdG8gYnVpbGQgbW9zdCBvZiBHb29nbGUgVGVzdCdzIG93biB0
ZXN0cwotLy8gYnkgY29tcGlsaW5nIGEgc2luZ2xlIGZpbGUuICBUaGlzIGZpbGUgc2VydmVzIHRo
aXMgcHVycG9zZS4KLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MiCi0jaW5j
bHVkZSAidGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVz
dC1tZXNzYWdlX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2Mi
Ci0jaW5jbHVkZSAidGVzdC9ndGVzdC1wb3J0X3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVz
dF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdF9wcm9kX3Rlc3Qu
Y2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYyIKLSNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3QyX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9ndGVzdF91bml0dGVzdC5jYyIKLSNpbmNs
dWRlICJ0ZXN0L3Byb2R1Y3Rpb24uY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDc4ZjNlMGY1M2I3OTFjZTIyOGE3YWRmMDMwODY2YmIyODgzYjlmZWEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEyICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNl
ciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWls
cywgdXNpbmcKLWVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2
YXJpYWJsZSBvciB0aGUKLS0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3Jp
cHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9m
YWlsdXJlX3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdp
dGggZGlmZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0K
LV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBn
dGVzdF90ZXN0X3V0aWxzCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4K
LQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJp
YWJsZSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1C
UkVBS19PTl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBU
aGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24t
ZmFpbHVyZSBtb2RlLgotQlJFQUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2Zh
aWx1cmUnCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxp
bmcgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9
ICdHVEVTVF9USFJPV19PTl9GQUlMVVJFJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBm
b3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBjYXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9F
WENFUFRJT05TX0VOVl9WQVIgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRv
IHRoZSBndGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEgg
PSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdF8nKQotCi0KLWVudmlyb24gPSBndGVzdF90ZXN0X3V0aWxz
LmVudmlyb24KLVNldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCi0KLSMgVGVz
dHMgaW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQg
ZXhwZWN0IGl0Ci0jIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFy
ZSBpbmNvbXBhdGlibGUgd2l0aAotIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBi
eSBkZXNpZ24uICBVbnNldCB0aGUKLSMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVu
dCBHb29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCi0jIHRoZSBmaWxlLgotU2V0RW52VmFyKGd0ZXN0
X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQotCi0KLWRlZiBS
dW4oY29tbWFuZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQgd2FzIGtp
bGxlZCBieSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCi0KLSAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKLSAgaWYgcC50ZXJtaW5hdGVk
X2J5X3NpZ25hbDoKLSAgICByZXR1cm4gMQotICBlbHNlOgotICAgIHJldHVybiAwCi0KLQotIyBU
aGUgdGVzdHMuCi0KLQotY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0ZXN0X3Rl
c3RfdXRpbHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05f
RkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgotICB0aGUgLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlIGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bwotICBzZWdtZW50YXRp
b24gZmF1bHRzLgotICAiIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFs
dWUsIGZsYWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgotICAgICIiIlJ1bnMgZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChv
ciBkb2VzIG5vdCkgaGF2ZSBhIHNlZy1mYXVsdC4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFy
X3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxl
IHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5v
bmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAgZXhwZWN0X3NlZ19m
YXVsdDogMSBpZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBnZW5lcmF0ZSBhIHNlZy1mYXVs
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDAgb3RoZXJ3aXNlLgotICAgICIiIgotCi0gICAg
U2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZSkKLQotICAg
IGlmIGVudl92YXJfdmFsdWUgaXMgTm9uZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBp
cyBub3Qgc2V0JwotICAgIGVsc2U6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVu
dl92YXJfdmFsdWUKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAgICAgIGZsYWcgPSAn
JwotICAgIGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBC
UkVBS19PTl9GQUlMVVJFX0ZMQUcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIEJS
RUFLX09OX0ZBSUxVUkVfRkxBRwotCi0gICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBm
bGFnOgotICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKLQotICAgIGlmIGV4cGVjdF9zZWdfZmF1
bHQ6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKLSAgICBlbHNlOgotICAgICAgc2hv
dWxkX29yX25vdCA9ICdzaG91bGQgbm90JwotCi0gICAgaGFzX3NlZ19mYXVsdCA9IFJ1bihjb21t
YW5kKQotCi0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQot
ICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNh
dXNlIGEgc2VnLWZhdWx0LicgJQotICAgICAgICAgICAoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFS
LCBlbnZfdmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91
bGRfb3Jfbm90KSkKLSAgICBzZWxmLmFzc2VydF8oaGFzX3NlZ19mYXVsdCA9PSBleHBlY3Rfc2Vn
X2ZhdWx0LCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIi
VGVzdHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxh
Z192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkK
LQotICBkZWYgdGVzdEVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1Rf
QlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdf
dmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdf
ZmF1bHQ9MSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhl
IC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0x
KQotCi0gIGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0
aGF0IHRoZSBmbGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAg
ICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2Zh
dWx0PTApCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0X3NlZ19mYXVsdD0xKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEn
LAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RCcmVha09u
RmFpbHVyZU92ZXJyaWRlc1Rocm93T25GYWlsdXJlKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQg
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBvdmVycmlkZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZS4i
IiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsICcxJykKLSAgICB0
cnk6Ci0gICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICBmaW5hbGx5OgotICAgICAgU2V0RW52VmFyKFRIUk9X
X09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICBpZiBJU19XSU5ET1dTOgotICAgIGRlZiB0
ZXN0Q2F0Y2hFeGNlcHRpb25zRG9lc05vdEludGVyZmVyZShzZWxmKToKLSAgICAgICIiIlRlc3Rz
IHRoYXQgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBkb2Vzbid0IGludGVyZmVyZS4iIiIKLQotICAg
ICAgU2V0RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgJzEnKQotICAgICAgdHJ5Ogot
ICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MSkKLSAgICAgIGZpbmFsbHk6Ci0gICAgICAgIFNldEVudlZhcihD
QVRDSF9FWENFUFRJT05TX0VOVl9WQVIsIE5vbmUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkZDA3NDc4YzA3NTdjNzRjZDU0OGE4ZjNlOTI3NDM1YTZlNDI5Nzg5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw4OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBV
bml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgYnJlYWstb24tZmFpbHVyZSBtb2RlLgotLy8KLS8v
IEEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlv
biBmYWlscywgdXNpbmcKLS8vIGVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZp
cm9ubWVudCB2YXJpYWJsZSBvciB0aGUKLS8vIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFn
LiAgVGhpcyBmaWxlIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaAotLy8gZnVuY3Rpb25hbGl0eS4K
LS8vCi0vLyBUaGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0
ZXN0LiAgSXQgaXMKLS8vIGV4cGVjdGVkIHRvIGZhaWwuICBEb24ndCBydW4gaXQgZGlyZWN0bHku
Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotIyBp
bmNsdWRlIDx3aW5kb3dzLmg+Ci0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmCi0KLW5hbWVz
cGFjZSB7Ci0KLS8vIEEgdGVzdCB0aGF0J3MgZXhwZWN0ZWQgdG8gZmFpbC4KLVRFU1QoRm9vLCBC
YXIpIHsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIE9uIFdpbmRvd3MgTW9iaWxlIGdsb2JhbCBleGNlcHRp
b24gaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuCi1MT05HIFdJTkFQSSBFeGl0V2l0aEV4Y2Vw
dGlvbkNvZGUoCi0gICAgc3RydWN0IF9FWENFUFRJT05fUE9JTlRFUlMqIGV4Y2VwdGlvbl9wb2lu
dGVycykgewotICBleGl0KGV4Y2VwdGlvbl9wb2ludGVycy0+RXhjZXB0aW9uUmVjb3JkLT5FeGNl
cHRpb25Db2RlKTsKLX0KLSNlbmRpZgotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBTdXBwcmVz
c2VzIGRpc3BsYXkgb2YgdGhlIFdpbmRvd3MgZXJyb3IgZGlhbG9nIHVwb24gZW5jb3VudGVyaW5n
Ci0gIC8vIGEgZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IChzZWdtZW50IHZpb2xhdGlvbikuCi0g
IFNldEVycm9yTW9kZShTRU1fTk9HUEZBVUxURVJST1JCT1ggfCBTRU1fRkFJTENSSVRJQ0FMRVJS
T1JTKTsKLQotIyBpZiBHVEVTVF9IQVNfU0VIICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
Ci0gIC8vIFRoZSBkZWZhdWx0IHVuaGFuZGxlZCBleGNlcHRpb24gZmlsdGVyIGRvZXMgbm90IGFs
d2F5cyBleGl0Ci0gIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGFzIGV4aXQgY29kZSAtIGZv
ciBleGFtcGxlIGl0IGV4aXRzIHdpdGgKLSAgLy8gMCBmb3IgRVhDRVBUSU9OX0FDQ0VTU19WSU9M
QVRJT04gYW5kIDEgZm9yIEVYQ0VQVElPTl9CUkVBS1BPSU5UCi0gIC8vIGlmIHRoZSBhcHBsaWNh
dGlvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLiBUaHVzIHdlIHVzZSBvdXIgb3duCi0gIC8v
IGZpbHRlciB3aGljaCBhbHdheXMgZXhpdHMgd2l0aCB0aGUgZXhjZXB0aW9uIGNvZGUgZm9yIHVu
aGFuZGxlZAotICAvLyBleGNlcHRpb25zLgotICBTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIo
RXhpdFdpdGhFeGNlcHRpb25Db2RlKTsKLQotIyBlbmRpZgotI2VuZGlmCi0KLSAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNf
dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0LnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlNmZjMjJmZDFmZTVjMGM0ZWJkYzhkZTdi
NDIyMzZhMTY2OWIwZDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0LnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAxMCBHb29nbGUgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgZXhjZXB0aW9uIGNhdGNoaW5n
IGJlaGF2aW9yLgotCi1UaGlzIHNjcmlwdCBpbnZva2VzIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNf
dGVzdF8gYW5kCi1ndGVzdF9jYXRjaF9leGNlcHRpb25zX2V4X3Rlc3RfIChwcm9ncmFtcyB3cml0
dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSBhbmQgdmVyaWZpZXMgdGhlaXIgb3V0cHV0LgotIiIiCi0K
LV9fYXV0aG9yX18gPSAndmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldiknCi0KLWltcG9ydCBv
cwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLUZMQUdfUFJFRklY
ID0gJy0tZ3Rlc3RfJwotTElTVF9URVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90ZXN0
cycKLU5PX0NBVENIX0VYQ0VQVElPTlNfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2NhdGNoX2V4Y2Vw
dGlvbnM9MCcKLUZJTFRFUl9GTEFHID0gRkxBR19QUkVGSVggKyAnZmlsdGVyJwotCi0jIFBhdGgg
dG8gdGhlIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8gYmluYXJ5LCBjb21waWxlZCB3
aXRoCi0jIGV4Y2VwdGlvbnMgZW5hYmxlZC4KLUVYX0VYRV9QQVRIID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgJ2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhf
dGVzdF8nKQotCi0jIFBhdGggdG8gdGhlIGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8gYmlu
YXJ5LCBjb21waWxlZCB3aXRoCi0jIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi1FWEVfUEFUSCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICdndGVzdF9jYXRjaF9l
eGNlcHRpb25zX25vX2V4X3Rlc3RfJykKLQotZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52
aXJvbgotU2V0RW52VmFyID0gZ3Rlc3RfdGVzdF91dGlscy5TZXRFbnZWYXIKLQotIyBUZXN0cyBp
biB0aGlzIGZpbGUgcnVuIGEgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBleHBl
Y3QgaXQKLSMgdG8gdGVybWluYXRlIHByZW1hdHVyZWx5LiAgVGhlcmVmb3JlIHRoZXkgYXJlIGlu
Y29tcGF0aWJsZSB3aXRoCi0jIHRoZSBwcmVtYXR1cmUtZXhpdC1maWxlIHByb3RvY29sIGJ5IGRl
c2lnbi4gIFVuc2V0IHRoZQotIyBwcmVtYXR1cmUtZXhpdCBmaWxlcGF0aCB0byBwcmV2ZW50IEdv
b2dsZSBUZXN0IGZyb20gY3JlYXRpbmcKLSMgdGhlIGZpbGUuCi1TZXRFbnZWYXIoZ3Rlc3RfdGVz
dF91dGlscy5QUkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIsIE5vbmUpCi0KLVRFU1RfTElTVCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbRVhFX1BBVEgsIExJU1RfVEVTVFNf
RkxBR10sIGVudj1lbnZpcm9uKS5vdXRwdXQKLQotU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlMgPSAn
VGhyb3dzU2VoRXhjZXB0aW9uJyBpbiBURVNUX0xJU1QKLQotaWYgU1VQUE9SVFNfU0VIX0VYQ0VQ
VElPTlM6Ci0gIEJJTkFSWV9PVVRQVVQgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VY
RV9QQVRIXSwgZW52PWVudmlyb24pLm91dHB1dAotCi1FWF9CSU5BUllfT1VUUFVUID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtFWF9FWEVfUEFUSF0sIGVudj1lbnZpcm9uKS5v
dXRwdXQKLQotCi0jIFRoZSB0ZXN0cy4KLWlmIFNVUFBPUlRTX1NFSF9FWENFUFRJT05TOgotICAj
IHB5bGludDpkaXNhYmxlLW1zZz1DNjMwMgotICBjbGFzcyBDYXRjaFNlaEV4Y2VwdGlvbnNUZXN0
KGd0ZXN0X3Rlc3RfdXRpbHMuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGV4Y2VwdGlvbi1jYXRj
aGluZyBiZWhhdmlvci4iIiIKLQotCi0gICAgZGVmIFRlc3RTZWhFeGNlcHRpb25zKHNlbGYsIHRl
c3Rfb3V0cHV0KToKLSAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUg
MHgyYSB0aHJvd24gJwotICAgICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdz
IGNvbnN0cnVjdG9yJwotICAgICAgICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQotICAgICAg
c2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biAnCi0gICAg
ICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgZGVzdHJ1Y3RvcicKLSAgICAg
ICAgICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKLSAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4
Y2VwdGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJwotICAgICAg
ICAgICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQotICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhj
ZXB0aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCi0gICAg
ICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCi0gICAgICBzZWxmLmFzc2VydF8oJ1NFSCBl
eGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFNldFVwKCknCi0gICAgICAgICAgICAg
ICAgICAgaW4gdGVzdF9vdXRwdXQpCi0gICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24g
d2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3duKCknCi0gICAgICAgICAgICAgICAgICAg
aW4gdGVzdF9vdXRwdXQpCi0gICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBj
b2RlIDB4MmEgdGhyb3duIGluIHRoZSB0ZXN0IGJvZHknCi0gICAgICAgICAgICAgICAgICAgaW4g
dGVzdF9vdXRwdXQpCi0KLSAgICBkZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4
Y2VwdGlvbnNFbmFibGVkKHNlbGYpOgotICAgICAgc2VsZi5UZXN0U2VoRXhjZXB0aW9ucyhFWF9C
SU5BUllfT1VUUFVUKQotCi0gICAgZGVmIHRlc3RDYXRjaGVzU2VoRXhjZXB0aW9uc1dpdGhDeHhF
eGNlcHRpb25zRGlzYWJsZWQoc2VsZik6Ci0gICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25zKEJJ
TkFSWV9PVVRQVVQpCi0KLQotY2xhc3MgQ2F0Y2hDeHhFeGNlcHRpb25zVGVzdChndGVzdF90ZXN0
X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgQysrIGV4Y2VwdGlvbi1jYXRjaGluZyBiZWhh
dmlvci4KLQotICAgICBUZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB2ZXJpZnkgdGhhdDoKLSAgICAg
KiBDKysgZXhjZXB0aW9ucyBhcmUgY2F1Z2h0IGFuZCBsb2dnZWQgYXMgQysrIChub3QgU0VIKSBl
eGNlcHRpb25zCi0gICAgICogRXhjZXB0aW9uIHRocm93biBhZmZlY3QgdGhlIHJlbWFpbmRlciBv
ZiB0aGUgdGVzdCB3b3JrIGZsb3cgaW4gdGhlCi0gICAgICAgZXhwZWN0ZWQgbWFubmVyLgotICAi
IiIKLQotICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5GaXh0dXJlQ29uc3RydWN0b3Io
c2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24g
JwotICAgICAgICAgICAgICAgICAnIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iIHRocm93biAnCi0g
ICAgICAgICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGNvbnN0cnVjdG9yJwotICAg
ICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0XygndW5l
eHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9PVVRQVVQsCi0gICAgICAgICAgICAgICAgICdUaGlz
IGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRlc3Qgb25seSBpZiAnCi0gICAgICAgICAgICAgICAg
ICciQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QiIChubyBxdW90ZXMpICcKLSAgICAgICAg
ICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGluZSBhcyB3b3JkcyAiY2FsbGVkIHVuZXhw
ZWN0ZWRseSInKQotCi0gIGlmICgnQ3h4RXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdC5UaHJvd3NF
eGNlcHRpb25JbkRlc3RydWN0b3InIGluCi0gICAgICBFWF9CSU5BUllfT1VUUFVUKToKLQotICAg
IGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVEZXN0cnVjdG9yKHNlbGYpOgot
ICAgICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gJwotICAg
ICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3duICcKLSAgICAg
ICAgICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJwotICAgICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgICBzZWxmLmFzc2VydF8oJ0N4
eEV4Y2VwdGlvbkluRGVzdHJ1Y3RvclRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCi0gICAgICAg
ICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKLQotICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRV
cFRlc3RDYXNlKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRoIGRl
c2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKLSAgICAgICAgICAgICAgICAgJyB0
aHJvd24gaW4gU2V0VXBUZXN0Q2FzZSgpJwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllf
T1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6
OlRlYXJEb3duVGVzdENhc2UoKSAnCi0gICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0
ZWQuJwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNz
ZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAnCi0gICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3RDYXNlVGVzdCBkZXN0cnVjdG9yICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBl
Y3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0OjpTZXRVcCgpICcKLSAgICAg
ICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVY
X0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVz
dENhc2VUZXN0OjpUZWFyRG93bigpICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBl
Y3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IHRlc3QgYm9keSAnCi0gICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQotCi0gIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblRlYXJE
b3duVGVzdENhc2Uoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGgg
ZGVzY3JpcHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJwotICAgICAgICAgICAgICAgICAn
IHRocm93biBpbiBUZWFyRG93blRlc3RDYXNlKCknCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCi0KLSAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luU2V0VXAoc2Vs
Zik6Ci0gICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0
YW5kYXJkIEMrKyBleGNlcHRpb24iJwotICAgICAgICAgICAgICAgICAnIHRocm93biBpbiBTZXRV
cCgpJwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNz
ZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAnCi0gICAg
ICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBF
WF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3QgZGVzdHJ1Y3RvciAnCi0gICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwot
ICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0Xygn
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duKCkgJwotICAgICAgICAgICAgICAgICAn
Y2FsbGVkIGFzIGV4cGVjdGVkLicKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBV
VCkKLSAgICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiBFWF9CSU5BUllfT1VUUFVU
LAotICAgICAgICAgICAgICAgICAnVGhpcyBmYWlsdXJlIGJlbG9uZ3MgaW4gdGhpcyB0ZXN0IG9u
bHkgaWYgJwotICAgICAgICAgICAgICAgICAnIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0IiAobm8g
cXVvdGVzKSAnCi0gICAgICAgICAgICAgICAgICdhcHBlYXJzIG9uIHRoZSBzYW1lIGxpbmUgYXMg
d29yZHMgImNhbGxlZCB1bmV4cGVjdGVkbHkiJykKLQotICBkZWYgdGVzdENhdGNoZXNDeHhFeGNl
cHRpb25zSW5UZWFyRG93bihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24g
d2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCi0gICAgICAgICAgICAg
ICAgICcgdGhyb3duIGluIFRlYXJEb3duKCknCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdDo6
VGVhckRvd25UZXN0Q2FzZSgpICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3Rl
ZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3Nl
cnRfKCdDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCBkZXN0cnVjdG9yICcKLSAgICAgICAgICAg
ICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFS
WV9PVVRQVVQpCi0KLSAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVzdEJvZHkoc2Vs
Zik6Ci0gICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3JpcHRpb24gIlN0
YW5kYXJkIEMrKyBleGNlcHRpb24iJwotICAgICAgICAgICAgICAgICAnIHRocm93biBpbiB0aGUg
dGVzdCBib2R5JwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNl
bGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAnCi0gICAgICAgICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAg
ICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3QgZGVzdHJ1Y3RvciAnCi0gICAgICAgICAgICAgICAgICdjYWxsZWQgYXMg
ZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQotICAgIHNl
bGYuYXNzZXJ0XygnQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgJwotICAg
ICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKLSAgICAgICAgICAgICAgICAgaW4g
RVhfQklOQVJZX09VVFBVVCkKLQotICBkZWYgdGVzdENhdGNoZXNOb25TdGRDeHhFeGNlcHRpb25z
KHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XygnVW5rbm93biBDKysgZXhjZXB0aW9uIHRocm93biBp
biB0aGUgdGVzdCBib2R5JwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQot
Ci0gIGRlZiB0ZXN0VW5oYW5kbGVkQ3h4RXhjZXB0aW9uc0Fib3J0VGhlUHJvZ3JhbShzZWxmKToK
LSAgICAjIEZpbHRlcnMgb3V0IFNFSCBleGNlcHRpb24gdGVzdHMgb24gV2luZG93cy4gVW5oYW5k
bGVkIFNFSCBleGNlcHRpb25zCi0gICAgIyBjYXVzZSB0ZXN0cyB0byBzaG93IHBvcC11cCB3aW5k
b3dzIHRoZXJlLgotICAgIEZJVExFUl9PVVRfU0VIX1RFU1RTX0ZMQUcgPSBGSUxURVJfRkxBRyAr
ICc9LSpTZWgqJwotICAgICMgQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgZG9lc24ndCBjYXRjaCB0
aGUgZXhjZXB0aW9ucy4KLSAgICB1bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQg
PSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgICAgIFtFWF9FWEVfUEFUSCwKLSAg
ICAgICAgIE5PX0NBVENIX0VYQ0VQVElPTlNfRkxBRywKLSAgICAgICAgIEZJVExFUl9PVVRfU0VI
X1RFU1RTX0ZMQUddLAotICAgICAgICBlbnY9ZW52aXJvbikub3V0cHV0Ci0KLSAgICBzZWxmLmFz
c2VydF8oJ1VuaGFuZGxlZCBDKysgZXhjZXB0aW9uIHRlcm1pbmF0aW5nIHRoZSBwcm9ncmFtJwot
ICAgICAgICAgICAgICAgICBpbiB1bmNhdWdodF9leGNlcHRpb25zX2V4X2JpbmFyeV9vdXRwdXQp
Ci0gICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVjdGVkJyBub3QgaW4gdW5jYXVnaHRfZXhjZXB0aW9u
c19leF9iaW5hcnlfb3V0cHV0KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0
ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNo
X2V4Y2VwdGlvbnNfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MjYz
N2VjOGJiM2E5M2M2NzE0NjcyZGI1YTdkMjRlNjE0ZDAyOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jYXRjaF9l
eGNlcHRpb25zX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzExICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDEwLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZs
YWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0
IGl0c2VsZi4gVGVzdHMgaW4gdGhpcyBmaWxlIHRocm93IEMrKyBvciBTRUgKLS8vIGV4Y2VwdGlv
bnMsIGFuZCB0aGUgb3V0cHV0IGlzIHZlcmlmaWVkIGJ5IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNf
dGVzdC5weS4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxzdGRpby5o
PiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgotCi0jaWYg
R1RFU1RfSEFTX1NFSAotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotI2lmIEdURVNU
X0hBU19FWENFUFRJT05TCi0jIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzZXRfdGVybWlu
YXRlKCkuCi0jIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNlbmRpZgotCi11c2luZyB0ZXN0aW5nOjpU
ZXN0OwotCi0jaWYgR1RFU1RfSEFTX1NFSAotCi1jbGFzcyBTZWhFeGNlcHRpb25JbkNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIFNlaEV4Y2VwdGlvbkluQ29uc3Ry
dWN0b3JUZXN0KCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRF
U1RfRihTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25z
dHJ1Y3Rvcikge30KLQotY2xhc3MgU2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1Ymxp
YyBUZXN0IHsKLSBwdWJsaWM6Ci0gIH5TZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeyBS
YWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9Ci0KLWNs
YXNzIFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVi
bGljOgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0Miwg
MCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VU
ZXN0LCBUaHJvd3NFeGNlcHRpb25JblNldFVwVGVzdENhc2UpIHt9Ci0KLWNsYXNzIFNlaEV4Y2Vw
dGlvbkluVGVhckRvd25UZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwg
TlVMTCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0
LCBUaHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9Ci0KLWNsYXNzIFNlaEV4Y2Vw
dGlvbkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2
b2lkIFNldFVwKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRF
U1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkge30K
LQotY2xhc3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJv
dGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAw
LCAwLCBOVUxMKTsgfQotfTsKLQotVEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBU
aHJvd3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQotCi1URVNUKFNlaEV4Y2VwdGlvblRlc3QsIFRo
cm93c1NlaEV4Y2VwdGlvbikgewotICBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7Ci19
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMK
LQotY2xhc3MgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0g
cHVibGljOgotICBDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICAvLyBXaXRo
b3V0IHRoaXMgbWFjcm8gVkMrKyBjb21wbGFpbnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBhdCB0
aGUgZW5kIG9mCi0gICAgLy8gdGhlIGNvbnN0cnVjdG9yLgotICAgIEdURVNUX1NVUFBSRVNTX1VO
UkVBQ0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oCi0gICAgICAgIHRocm93IHN0ZDo6cnVudGlt
ZV9lcnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lk
IFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKLSAgICAgICAg
ICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIH5DeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhF
eGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCBkZXN0cnVjdG9yICIKLSAgICAgICAgICAgICAgICAg
IDw8ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6
OlNldFVwKCkgIgotICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8
ICJDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd24oKSAiCi0gICAgICAgICAg
ICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOwotICB9Ci19OwotCi1URVNUX0YoQ3h4
RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3Ip
IHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgdGVz
dCBib2R5ICIKLSAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOwotfQot
Ci0vLyBFeGNlcHRpb25zIGluIGRlc3RydWN0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEMrKzEx
LgotI2lmICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSAmJiAgX19jcGx1c3Bs
dXMgPCAyMDExMDNMICYmIF9NU0NfVkVSIDwgMTkwMAotY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFRlYXJE
b3duVGVzdENhc2UoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhFeGNlcHRp
b25JbkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgotICAgICAgICAgICAiY2Fs
bGVkIGFzIGV4cGVjdGVkLlxuIik7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgfkN4eEV4Y2VwdGlv
bkluRGVzdHJ1Y3RvclRlc3QoKSB7Ci0gICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09E
RV9XQVJOSU5HX0JFTE9XXygKLSAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFu
ZGFyZCBDKysgZXhjZXB0aW9uIikpOwotICB9Ci19OwotCi1URVNUX0YoQ3h4RXhjZXB0aW9uSW5E
ZXN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQotI2VuZGlmICAv
LyBDKysxMSBtb2RlCi0KLWNsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBw
dWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0
KCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3RDYXNlVGVzdCBjb25zdHJ1Y3RvciAiCi0gICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQu
XG4iKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgdGhyb3cg
c3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Ci0gIH0KLQotICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAg
ICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgp
ICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSBwcm90ZWN0
ZWQ6Ci0gIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgewotICAgIHByaW50Zigi
JXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVj
dG9yICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCi0gICAgICAgICAgICJjYWxsZWQg
YXMgZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAg
ICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRl
c3Q6OlRlYXJEb3duKCkgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Ci0g
IH0KLX07Ci0KLVRFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NF
eGNlcHRpb25JblNldFVwVGVzdENhc2UpIHsKLSAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAiQ3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgotICAgICAgICAgImNhbGxl
ZCBhcyBleHBlY3RlZC5cbiIpOwotfQotCi1jbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dENhc2VUZXN0IDogcHVibGljIFRlc3QgewotIHB1YmxpYzoKLSAgc3RhdGljIHZvaWQgVGVhckRv
d25UZXN0Q2FzZSgpIHsKLSAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMr
KyBleGNlcHRpb24iKTsKLSAgfQotfTsKLQotVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KLQotY2xh
c3MgQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBz
dGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAg
ICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCi0gICAg
ICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gcHJvdGVjdGVkOgotICB+
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAg
ICJDeHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIKLSAgICAgICAgICAgImNhbGxl
ZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJv
dyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQotCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4
eEV4Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKLSAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOwotICB9Ci19OwotCi1URVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRl
c3QsIFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKLSAgICAgICAgICAgICAgICA8PCAiY2FsbGVk
IHVuZXhwZWN0ZWRseS4iOwotfQotCi1jbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6
IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3du
VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3Rl
ZC5cbiIpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dCgpIHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRv
d25UZXN0IGRlc3RydWN0b3IgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgdGhyb3cgc3RkOjpydW50
aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Ci0gIH0KLX07Ci0KLVRFU1RfRihD
eHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30K
LQotY2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVi
bGljOgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMi
LAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENh
c2UoKSAiCi0gICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gcHJv
dGVjdGVkOgotICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7Ci0gICAgcHJpbnRmKCIl
cyIsCi0gICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIK
LSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4
cGVjdGVkLlxuIik7Ci0gIH0KLX07Ci0KLVRFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVz
dCwgVGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7Ci0gIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigi
U3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpOwotfQotCi1URVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRo
cm93c05vblN0ZEN4eEV4Y2VwdGlvbikgewotICB0aHJvdyAiQy1zdHJpbmciOwotfQotCi0vLyBU
aGlzIHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0
aGVyIHRoYW4gYWJvcnQoKS4KLS8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5k
b3dzIHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCi0vLyBvbmVzLgotdm9pZCBU
ZXJtaW5hdGVIYW5kbGVyKCkgewotICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVk
IEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7Ci0gIGZmbHVzaChOVUxM
KTsKLSAgZXhpdCgzKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UwotICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOwotI2VuZGlmCi0gIHRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVT
VFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggZDAyYTUzZWQ4NTdjNzRjODAwYmNjZDY3YmM0MThhNTFhMDlkNjkzNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZp
ZXMgdGhhdCBHb29nbGUgVGVzdCBjb3JyZWN0bHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBj
b2xvcnMuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikn
Ci0KLWltcG9ydCBvcwotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi1JU19XSU5ET1dTID0g
b3MubmFtZSA9ICdudCcKLQotQ09MT1JfRU5WX1ZBUiA9ICdHVEVTVF9DT0xPUicKLUNPTE9SX0ZM
QUcgPSAnZ3Rlc3RfY29sb3InCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhl
Y3V0YWJsZVBhdGgoJ2d0ZXN0X2NvbG9yX3Rlc3RfJykKLQotCi1kZWYgU2V0RW52VmFyKGVudl92
YXIsIHZhbHVlKToKLSAgIiIiU2V0cyB0aGUgZW52IHZhcmlhYmxlIHRvICd2YWx1ZSc7IHVuc2V0
cyBpdCB3aGVuICd2YWx1ZScgaXMgTm9uZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
LSAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVu
dmlyb246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgVXNlc0NvbG9yKHRl
cm0sIGNvbG9yX2Vudl92YXIsIGNvbG9yX2ZsYWcpOgotICAiIiJSdW5zIGd0ZXN0X2NvbG9yX3Rl
c3RfIGFuZCByZXR1cm5zIGl0cyBleGl0IGNvZGUuIiIiCi0KLSAgU2V0RW52VmFyKCdURVJNJywg
dGVybSkKLSAgU2V0RW52VmFyKENPTE9SX0VOVl9WQVIsIGNvbG9yX2Vudl92YXIpCi0KLSAgaWYg
Y29sb3JfZmxhZyBpcyBOb25lOgotICAgIGFyZ3MgPSBbXQotICBlbHNlOgotICAgIGFyZ3MgPSBb
Jy0tJXM9JXMnICUgKENPTE9SX0ZMQUcsIGNvbG9yX2ZsYWcpXQotICBwID0gZ3Rlc3RfdGVzdF91
dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIGFyZ3MpCi0gIHJldHVybiBub3QgcC5leGl0ZWQg
b3IgcC5leGl0X2NvZGUKLQotCi1jbGFzcyBHVGVzdENvbG9yVGVzdChndGVzdF90ZXN0X3V0aWxz
LlRlc3RDYXNlKToKLSAgZGVmIHRlc3ROb0VudlZhck5vRmxhZyhzZWxmKToKLSAgICAiIiJUZXN0
cyB0aGUgY2FzZSB3aGVuIHRoZXJlJ3MgbmVpdGhlciBHVEVTVF9DT0xPUiBub3IgLS1ndGVzdF9j
b2xvci4iIiIKLQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCdlbWFjcycsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBV
c2VzQ29sb3IoJ3h0ZXJtLW1vbm8nLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgVXNlc0NvbG9yKCd1bmtub3duJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8o
bm90IFVzZXNDb2xvcihOb25lLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0Nv
bG9yKCdsaW51eCcsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2N5
Z3dpbicsIE5vbmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywg
Tm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3InLCBO
b25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS0yNTZjb2xvcics
IE5vbmUsIE5vbmUpKQotCi0gIGRlZiB0ZXN0RmxhZ09ubHkoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dGhlIGNhc2Ugd2hlbiB0aGVyZSdzIC0tZ3Rlc3RfY29sb3IgYnV0IG5vdCBHVEVTVF9DT0xPUi4i
IiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ25vJykp
Ci0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9uZSwgJ25v
JykpCi0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXND
b2xvcignZW1hY3MnLCBOb25lLCAnYXV0bycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3Io
J3h0ZXJtJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1i
JywgTm9uZSwgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtJywgTm9u
ZSwgJ3llcycpKQotCi0gIGRlZiB0ZXN0RW52VmFyT25seShzZWxmKToKLSAgICAiIiJUZXN0cyB0
aGUgY2FzZSB3aGVuIHRoZXJlJ3MgR1RFU1RfQ09MT1IgYnV0IG5vdCAtLWd0ZXN0X2NvbG9yLiIi
IgotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ2R1bWInLCAnbm8nLCBOb25lKSkK
LSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0tY29sb3InLCAnbm8nLCBOb25l
KSkKLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0Nv
bG9yKCdkdW1iJywgJ2F1dG8nLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4
dGVybS1jb2xvcicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcign
ZHVtYicsICd5ZXMnLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybS1j
b2xvcicsICd5ZXMnLCBOb25lKSkKLQotICBkZWYgdGVzdEVudlZhckFuZEZsYWcoc2VsZik6Ci0g
ICAgIiIiVGVzdHMgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgYm90aCBHVEVTVF9DT0xPUiBhbmQg
LS1ndGVzdF9jb2xvci4iIiIKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVy
bS1jb2xvcicsICdubycsICdubycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWIn
LCAnbm8nLCAneWVzJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29sb3In
LCAnbm8nLCAnYXV0bycpKQotCi0gIGRlZiB0ZXN0QWxpYXNlc09mWWVzQW5kTm8oc2VsZik6Ci0g
ICAgIiIiVGVzdHMgdXNpbmcgYWxpYXNlcyBpbiBzcGVjaWZ5aW5nIC0tZ3Rlc3RfY29sb3IuIiIi
Ci0KLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ3RydWUnKSkKLSAg
ICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1lFUycpKQotICAgIHNlbGYu
YXNzZXJ0XyhVc2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnVCcpKQotICAgIHNlbGYuYXNzZXJ0XyhV
c2VzQ29sb3IoJ2R1bWInLCBOb25lLCAnMScpKQotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2Vz
Q29sb3IoJ3h0ZXJtJywgTm9uZSwgJ2YnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cigneHRlcm0nLCBOb25lLCAnZmFsc2UnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cigneHRlcm0nLCBOb25lLCAnMCcpKQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4
dGVybScsIE5vbmUsICd1bmtub3duJykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfY29sb3JfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3Rf
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjFlYmI4OWI4NGU4ZTAzZTVlZmRk
NDEzMjQwNjExMzc2YWZlNmEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKKysrIC9kZXYv
bnVsbApAQCAtMSw3MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ci0vLyBBIGhlbHBlciBwcm9ncmFtIGZvciB0ZXN0aW5nIGhvdyBHb29nbGUgVGVzdCBkZXRlcm1p
bmVzIHdoZXRoZXIgdG8gdXNlCi0vLyBjb2xvcnMgaW4gdGhlIG91dHB1dC4gIEl0IHByaW50cyAi
WUVTIiBhbmQgcmV0dXJucyAxIGlmIEdvb2dsZSBUZXN0Ci0vLyBkZWNpZGVzIHRvIHVzZSBjb2xv
cnMsIGFuZCBwcmludHMgIk5PIiBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0vLyBJbmRpY2F0ZXMgdGhh
dCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBs
ZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMK
LS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRy
aWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBpbmNsdWRpbmcg
Z3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBM
RU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRl
ZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlNob3Vs
ZFVzZUNvbG9yOwotCi0vLyBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRo
ZSBVbml0VGVzdCBzaW5nbGV0b24gaXMKLS8vIGNyZWF0ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRl
cmVkLCBhbmQgdGh1cyB0aGF0IFNob3VsZFVzZUNvbG9yKCkKLS8vIHdvcmtzIHRoZSBzYW1lIHdh
eSBhcyBpbiBhIHJlYWwgR29vZ2xlLVRlc3QtYmFzZWQgdGVzdC4gIFdlIGRvbid0IGFjdHVhbAot
Ly8gcnVuIHRoZSBURVNUIGl0c2VsZi4KLVRFU1QoR1Rlc3RDb2xvclRlc3QsIER1bW15KSB7Ci19
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgaWYgKFNob3VsZFVzZUNvbG9yKHRydWUpKSB7Ci0g
ICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyB0byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQgKGFz
c3VtaW5nIGl0Ci0gICAgLy8gZ29lcyB0byBhIFRUWSkuCi0gICAgcHJpbnRmKCJZRVNcbiIpOwot
ICAgIHJldHVybiAxOwotICB9IGVsc2UgewotICAgIC8vIEdvb2dsZSBUZXN0IGRlY2lkZXMgbm90
IHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4KLSAgICBwcmludGYoIk5PXG4iKTsKLSAgICBy
ZXR1cm4gMDsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZf
dmFyX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDI0MDc1Y2ZhMzc0NzZjY2Q4YzdkNGZmMDI3MmIy
N2Q4ODc4NzEzZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDExNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBwYXJzZXMgZW52aXJv
bm1lbnQgdmFyaWFibGVzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNf
V0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2Vudl92YXJfdGVzdF8nKQotCi1lbnZpcm9u
ID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6
Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCgnRXhwZWN0ZWQ6ICVzJyAlIChl
eHBlY3RlZCwpKQotICAgIHByaW50KCcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpKQotICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0g
ICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFs
dWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgZW52aXJvbltl
bnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAgIGRlbCBlbnZp
cm9uW2Vudl92YXJdCi0KLQotZGVmIEdldEZsYWcoZmxhZyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfZW52
X3Zhcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGFyZ3MgPSBbQ09NTUFO
RF0KLSAgaWYgZmxhZyBpcyBub3QgTm9uZToKLSAgICBhcmdzICs9IFtmbGFnXQotICByZXR1cm4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRwdXQKLQot
Ci1kZWYgVGVzdEZsYWcoZmxhZywgdGVzdF92YWwsIGRlZmF1bHRfdmFsKToKLSAgIiIiVmVyaWZp
ZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBpcyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9uZGluZyBl
bnYgdmFyLiIiIgotCi0gIGVudl92YXIgPSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQotICBTZXRF
bnZWYXIoZW52X3ZhciwgdGVzdF92YWwpCi0gIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRGbGFnKGZs
YWcpKQotICBTZXRFbnZWYXIoZW52X3ZhciwgTm9uZSkKLSAgQXNzZXJ0RXEoZGVmYXVsdF92YWws
IEdldEZsYWcoZmxhZykpCi0KLQotY2xhc3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgotICBkZWYgdGVzdEVudlZhckFmZmVjdHNGbGFnKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoYXQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2hvdWxkIGFmZmVjdCB0aGUgY29ycmVz
cG9uZGluZyBmbGFnLiIiIgotCi0gICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1cmUnLCAnMScs
ICcwJykKLSAgICBUZXN0RmxhZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQotICAgIFRlc3RGbGFn
KCdmaWx0ZXInLCAnRm9vVGVzdC5CYXInLCAnKicpCi0gICAgU2V0RW52VmFyKCdYTUxfT1VUUFVU
X0ZJTEUnLCBOb25lKSAjIEZvciAnb3V0cHV0JyB0ZXN0Ci0gICAgVGVzdEZsYWcoJ291dHB1dCcs
ICd4bWw6dG1wL2Zvby54bWwnLCAnJykKLSAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywg
JzEnKQotICAgIFRlc3RGbGFnKCdyZXBlYXQnLCAnOTk5JywgJzEnKQotICAgIFRlc3RGbGFnKCd0
aHJvd19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5
bGUnLCAndGhyZWFkc2FmZScsICdmYXN0JykKLSAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9u
cycsICcwJywgJzEnKQotCi0gICAgaWYgSVNfTElOVVg6Ci0gICAgICBUZXN0RmxhZygnZGVhdGhf
dGVzdF91c2VfZm9yaycsICcxJywgJzAnKQotICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2Rl
cHRoJywgJzAnLCAnMTAwJykKLQotICBkZWYgdGVzdFhtbE91dHB1dEZpbGUoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9GSUxFIGFmZmVjdHMgdGhlIG91dHB1dCBmbGFnLiIi
IgotCi0gICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCBOb25lKQotICAgIFNldEVudlZhcign
WE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKLSAgICBBc3NlcnRFcSgneG1sOnRtcC9i
YXIueG1sJywgR2V0RmxhZygnb3V0cHV0JykpCi0KLSAgZGVmIHRlc3RYbWxPdXRwdXRGaWxlT3Zl
cnJpZGUoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9GSUxFIGlzIG92ZXJy
aWRkZW4gYnkgJEdURVNUX09VVFBVVCIiIgotCi0gICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQn
LCAneG1sOnRtcC9mb28ueG1sJykKLSAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0
bXAvYmFyLnhtbCcpCi0gICAgQXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291
dHB1dCcpKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3Rf
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MzlhZmM5NjgzN2UzZTczNmQwODFiYjIwYTQzNjRlNWRlODU2
Zjk3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDEy
NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBBIGhlbHBl
ciBwcm9ncmFtIGZvciB0ZXN0aW5nIHRoYXQgR29vZ2xlIFRlc3QgcGFyc2VzIHRoZSBlbnZpcm9u
bWVudAotLy8gdmFyaWFibGVzIGNvcnJlY3RseS4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
Ci0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQotdXNpbmcgOjpzdGQ6OmNvdXQ7Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsK
LQotLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBtYWtlIHRoZSB0ZXN0IG1vcmUgcmVhbGlz
dGljIGJ5IGVuc3VyaW5nCi0vLyB0aGF0IHRoZSBVbml0VGVzdCBzaW5nbGV0b24gaXMgY3JlYXRl
ZCBiZWZvcmUgbWFpbigpIGlzIGVudGVyZWQuCi0vLyBXZSBkb24ndCBhY3R1YWwgcnVuIHRoZSBU
RVNUIGl0c2VsZi4KLVRFU1QoR1Rlc3RFbnZWYXJUZXN0LCBEdW1teSkgewotfQotCi12b2lkIFBy
aW50RmxhZyhjb25zdCBjaGFyKiBmbGFnKSB7Ci0gIGlmIChzdHJjbXAoZmxhZywgImJyZWFrX29u
X2ZhaWx1cmUiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1
cmUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImNhdGNoX2V4Y2Vw
dGlvbnMiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMp
OwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgImNvbG9yIikgPT0gMCkg
ewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjb2xvcik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAg
aWYgKHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF9zdHlsZSIpID09IDApIHsKLSAgICBjb3V0IDw8
IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYg
KHN0cmNtcChmbGFnLCAiZGVhdGhfdGVzdF91c2VfZm9yayIpID09IDApIHsKLSAgICBjb3V0IDw8
IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAg
aWYgKHN0cmNtcChmbGFnLCAiZmlsdGVyIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxB
RyhmaWx0ZXIpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgIm91dHB1
dCIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcob3V0cHV0KTsKLSAgICByZXR1cm47
Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJwcmludF90aW1lIikgPT0gMCkgewotICAgIGNv
dXQgPDwgR1RFU1RfRkxBRyhwcmludF90aW1lKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAo
c3RyY21wKGZsYWcsICJyZXBlYXQiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHJl
cGVhdCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAic3RhY2tfdHJh
Y2VfZGVwdGgiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2Rl
cHRoKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJ0aHJvd19vbl9m
YWlsdXJlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJl
KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBjb3V0IDw8ICJJbnZhbGlkIGZsYWcgbmFtZSAiIDw8
IGZsYWcKLSAgICAgICA8PCAiLiAgVmFsaWQgbmFtZXMgYXJlIGJyZWFrX29uX2ZhaWx1cmUsIGNv
bG9yLCBmaWx0ZXIsIGV0Yy5cbiI7Ci0gIGV4aXQoMSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgaWYgKGFyZ2MgIT0gMikgewotICAgIGNv
dXQgPDwgIlVzYWdlOiBndGVzdF9lbnZfdmFyX3Rlc3RfIE5BTUVfT0ZfRkxBR1xuIjsKLSAgICBy
ZXR1cm4gMTsKLSAgfQotCi0gIHRlc3Rpbmc6OlByaW50RmxhZyhhcmd2WzFdKTsKLSAgcmV0dXJu
IDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rl
c3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmYxOWU3MGVkY2NhMGQyNjIxNDVlZGU1ODEwYWU5
YTA3NDM3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCisrKyAvZGV2L251bGwK
QEAgLTEsMTkyICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwot
Ly8gVGVzdHMgdXNpbmcgZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgotCi0jaW5jbHVkZSA8c3Rk
bGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0j
ZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxICAvLyBSZXF1aXJlZCBmb3IgdGhlIG5leHQg
I2luY2x1ZGUuCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdU
RVNUX0lNUExFTUVOVEFUSU9OXwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1HVEVTVF9ERUNMQVJF
X3N0cmluZ18oZmlsdGVyKTsKLX0KLQotbmFtZXNwYWNlIHsKLQotZW51bSBGYWlsdXJlVHlwZSB7
Ci0gIE5PX0ZBSUxVUkUsIE5PTl9GQVRBTF9GQUlMVVJFLCBGQVRBTF9GQUlMVVJFCi19OwotCi0v
LyBGb3IgdGVzdGluZyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCi1jbGFzcyBNeUVu
dmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIE15
RW52aXJvbm1lbnQoKSB7IFJlc2V0KCk7IH0KLQotICAvLyBEZXBlbmRpbmcgb24gdGhlIHZhbHVl
IG9mIGZhaWx1cmVfaW5fc2V0X3VwXywgU2V0VXAoKSB3aWxsCi0gIC8vIGdlbmVyYXRlIGEgbm9u
LWZhdGFsIGZhaWx1cmUsIGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZSwgb3IKLSAgLy8gc3VjY2Vl
ZC4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHNldF91cF93YXNfcnVuXyA9IHRydWU7
Ci0KLSAgICBzd2l0Y2ggKGZhaWx1cmVfaW5fc2V0X3VwXykgewotICAgICAgY2FzZSBOT05fRkFU
QUxfRkFJTFVSRToKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUgaW4gZ2xvYmFsIHNldC11cC4iOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RkFUQUxfRkFJTFVSRToKLSAgICAgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
IGluIGdsb2JhbCBzZXQtdXAuIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQotICAvLyBHZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFp
bHVyZS4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHRlYXJfZG93bl93YXNfcnVu
XyA9IHRydWU7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgaW4gZ2xvYmFsIHRlYXItZG93bi4iOwotICB9Ci0KLSAgLy8gUmVzZXRzIHRoZSBzdGF0ZSBv
ZiB0aGUgZW52aXJvbm1lbnQgcy50LiBpdCBjYW4gYmUgcmV1c2VkLgotICB2b2lkIFJlc2V0KCkg
ewotICAgIGZhaWx1cmVfaW5fc2V0X3VwXyA9IE5PX0ZBSUxVUkU7Ci0gICAgc2V0X3VwX3dhc19y
dW5fID0gZmFsc2U7Ci0gICAgdGVhcl9kb3duX3dhc19ydW5fID0gZmFsc2U7Ci0gIH0KLQotICAv
LyBXZSBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gc2V0IHRoZSB0eXBlIG9mIGZhaWx1cmUgU2V0VXAo
KSBzaG91bGQKLSAgLy8gZ2VuZXJhdGUuCi0gIHZvaWQgc2V0X2ZhaWx1cmVfaW5fc2V0X3VwKEZh
aWx1cmVUeXBlIHR5cGUpIHsKLSAgICBmYWlsdXJlX2luX3NldF91cF8gPSB0eXBlOwotICB9Ci0K
LSAgLy8gV2FzIFNldFVwKCkgcnVuPwotICBib29sIHNldF91cF93YXNfcnVuKCkgY29uc3QgeyBy
ZXR1cm4gc2V0X3VwX3dhc19ydW5fOyB9Ci0KLSAgLy8gV2FzIFRlYXJEb3duKCkgcnVuPwotICBi
b29sIHRlYXJfZG93bl93YXNfcnVuKCkgY29uc3QgeyByZXR1cm4gdGVhcl9kb3duX3dhc19ydW5f
OyB9Ci0KLSBwcml2YXRlOgotICBGYWlsdXJlVHlwZSBmYWlsdXJlX2luX3NldF91cF87Ci0gIGJv
b2wgc2V0X3VwX3dhc19ydW5fOwotICBib29sIHRlYXJfZG93bl93YXNfcnVuXzsKLX07Ci0KLS8v
IFdhcyB0aGUgVEVTVCBydW4/Ci1ib29sIHRlc3Rfd2FzX3J1bjsKLQotLy8gVGhlIHNvbGUgcHVy
cG9zZSBvZiB0aGlzIFRFU1QgaXMgdG8gZW5hYmxlIHVzIHRvIGNoZWNrIHdoZXRoZXIgaXQKLS8v
IHdhcyBydW4uCi1URVNUKEZvb1Rlc3QsIEJhcikgewotICB0ZXN0X3dhc19ydW4gPSB0cnVlOwot
fQotCi0vLyBQcmludHMgdGhlIG1lc3NhZ2UgYW5kIGFib3J0cyB0aGUgcHJvZ3JhbSBpZiBjb25k
aXRpb24gaXMgZmFsc2UuCi12b2lkIENoZWNrKGJvb2wgY29uZGl0aW9uLCBjb25zdCBjaGFyKiBt
c2cpIHsKLSAgaWYgKCFjb25kaXRpb24pIHsKLSAgICBwcmludGYoIkZBSUxFRDogJXNcbiIsIG1z
Zyk7Ci0gICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpOwotICB9Ci19Ci0KLS8v
IFJ1bnMgdGhlIHRlc3RzLiAgUmV0dXJuIHRydWUgaWZmIHN1Y2Nlc3NmdWwuCi0vLwotLy8gVGhl
ICdmYWlsdXJlJyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGZhaWx1cmUgdGhhdCBz
aG91bGQKLS8vIGJlIGdlbmVyYXRlZCBieSB0aGUgZ2xvYmFsIHNldC11cC4KLWludCBSdW5BbGxU
ZXN0cyhNeUVudmlyb25tZW50KiBlbnYsIEZhaWx1cmVUeXBlIGZhaWx1cmUpIHsKLSAgZW52LT5S
ZXNldCgpOwotICBlbnYtPnNldF9mYWlsdXJlX2luX3NldF91cChmYWlsdXJlKTsKLSAgdGVzdF93
YXNfcnVuID0gZmFsc2U7Ci0gIHRlc3Rpbmc6OmludGVybmFsOjpHZXRVbml0VGVzdEltcGwoKS0+
Q2xlYXJBZEhvY1Rlc3RSZXN1bHQoKTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLQot
fSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gUmVnaXN0ZXJzIGEg
Z2xvYmFsIHRlc3QgZW52aXJvbm1lbnQsIGFuZCB2ZXJpZmllcyB0aGF0IHRoZQotICAvLyByZWdp
c3RyYXRpb24gZnVuY3Rpb24gcmV0dXJucyBpdHMgYXJndW1lbnQuCi0gIE15RW52aXJvbm1lbnQq
IGNvbnN0IGVudiA9IG5ldyBNeUVudmlyb25tZW50OwotICBDaGVjayh0ZXN0aW5nOjpBZGRHbG9i
YWxUZXN0RW52aXJvbm1lbnQoZW52KSA9PSBlbnYsCi0gICAgICAgICJBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQoKSBzaG91bGQgcmV0dXJuIGl0cyBhcmd1bWVudC4iKTsKLQotICAvLyBWZXJpZmll
cyB0aGF0IFJVTl9BTExfVEVTVFMoKSBydW5zIHRoZSB0ZXN0cyB3aGVuIHRoZSBnbG9iYWwKLSAg
Ly8gc2V0LXVwIGlzIHN1Y2Nlc3NmdWwuCi0gIENoZWNrKFJ1bkFsbFRlc3RzKGVudiwgTk9fRkFJ
TFVSRSkgIT0gMCwKLSAgICAgICAgIlJVTl9BTExfVEVTVFMoKSBzaG91bGQgcmV0dXJuIG5vbi16
ZXJvLCBhcyB0aGUgZ2xvYmFsIHRlYXItZG93biAiCi0gICAgICAgICJzaG91bGQgZ2VuZXJhdGUg
YSBmYWlsdXJlLiIpOwotICBDaGVjayh0ZXN0X3dhc19ydW4sCi0gICAgICAgICJUaGUgdGVzdHMg
c2hvdWxkIHJ1biwgYXMgdGhlIGdsb2JhbCBzZXQtdXAgc2hvdWxkIGdlbmVyYXRlIG5vICIKLSAg
ICAgICAgImZhaWx1cmUiKTsKLSAgQ2hlY2soZW52LT50ZWFyX2Rvd25fd2FzX3J1bigpLAotICAg
ICAgICAiVGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIHJ1biwgYXMgdGhlIGdsb2JhbCBzZXQt
dXAgd2FzIHJ1bi4iKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IFJVTl9BTExfVEVTVFMoKSBydW5z
IHRoZSB0ZXN0cyB3aGVuIHRoZSBnbG9iYWwKLSAgLy8gc2V0LXVwIGdlbmVyYXRlcyBubyBmYXRh
bCBmYWlsdXJlLgotICBDaGVjayhSdW5BbGxUZXN0cyhlbnYsIE5PTl9GQVRBTF9GQUlMVVJFKSAh
PSAwLAotICAgICAgICAiUlVOX0FMTF9URVNUUygpIHNob3VsZCByZXR1cm4gbm9uLXplcm8sIGFz
IGJvdGggdGhlIGdsb2JhbCBzZXQtdXAgIgotICAgICAgICAiYW5kIHRoZSBnbG9iYWwgdGVhci1k
b3duIHNob3VsZCBnZW5lcmF0ZSBhIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICBDaGVjayh0ZXN0
X3dhc19ydW4sCi0gICAgICAgICJUaGUgdGVzdHMgc2hvdWxkIHJ1biwgYXMgdGhlIGdsb2JhbCBz
ZXQtdXAgc2hvdWxkIGdlbmVyYXRlIG5vICIKLSAgICAgICAgImZhdGFsIGZhaWx1cmUuIik7Ci0g
IENoZWNrKGVudi0+dGVhcl9kb3duX3dhc19ydW4oKSwKLSAgICAgICAgIlRoZSBnbG9iYWwgdGVh
ci1kb3duIHNob3VsZCBydW4sIGFzIHRoZSBnbG9iYWwgc2V0LXVwIHdhcyBydW4uIik7Ci0KLSAg
Ly8gVmVyaWZpZXMgdGhhdCBSVU5fQUxMX1RFU1RTKCkgcnVucyBubyB0ZXN0IHdoZW4gdGhlIGds
b2JhbCBzZXQtdXAKLSAgLy8gZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZS4KLSAgQ2hlY2soUnVu
QWxsVGVzdHMoZW52LCBGQVRBTF9GQUlMVVJFKSAhPSAwLAotICAgICAgICAiUlVOX0FMTF9URVNU
UygpIHNob3VsZCByZXR1cm4gbm9uLXplcm8sIGFzIHRoZSBnbG9iYWwgc2V0LXVwICIKLSAgICAg
ICAgInNob3VsZCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUuIik7Ci0gIENoZWNrKCF0ZXN0X3dh
c19ydW4sCi0gICAgICAgICJUaGUgdGVzdHMgc2hvdWxkIG5vdCBydW4sIGFzIHRoZSBnbG9iYWwg
c2V0LXVwIHNob3VsZCBnZW5lcmF0ZSAiCi0gICAgICAgICJhIGZhdGFsIGZhaWx1cmUuIik7Ci0g
IENoZWNrKGVudi0+dGVhcl9kb3duX3dhc19ydW4oKSwKLSAgICAgICAgIlRoZSBnbG9iYWwgdGVh
ci1kb3duIHNob3VsZCBydW4sIGFzIHRoZSBnbG9iYWwgc2V0LXVwIHdhcyBydW4uIik7Ci0KLSAg
Ly8gVmVyaWZpZXMgdGhhdCBSVU5fQUxMX1RFU1RTKCkgZG9lc24ndCBkbyBnbG9iYWwgc2V0LXVw
IG9yCi0gIC8vIHRlYXItZG93biB3aGVuIHRoZXJlIGlzIG5vIHRlc3QgdG8gcnVuLgotICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGZpbHRlcikgPSAiLSoiOwotICBDaGVjayhSdW5BbGxUZXN0cyhlbnYs
IE5PX0ZBSUxVUkUpID09IDAsCi0gICAgICAgICJSVU5fQUxMX1RFU1RTKCkgc2hvdWxkIHJldHVy
biB6ZXJvLCBhcyB0aGVyZSBpcyBubyB0ZXN0IHRvIHJ1bi4iKTsKLSAgQ2hlY2soIWVudi0+c2V0
X3VwX3dhc19ydW4oKSwKLSAgICAgICAgIlRoZSBnbG9iYWwgc2V0LXVwIHNob3VsZCBub3QgcnVu
LCBhcyB0aGVyZSBpcyBubyB0ZXN0IHRvIHJ1bi4iKTsKLSAgQ2hlY2soIWVudi0+dGVhcl9kb3du
X3dhc19ydW4oKSwKLSAgICAgICAgIlRoZSBnbG9iYWwgdGVhci1kb3duIHNob3VsZCBub3QgcnVu
LCAiCi0gICAgICAgICJhcyB0aGUgZ2xvYmFsIHNldC11cCB3YXMgbm90IHJ1bi4iKTsKLQotICBw
cmludGYoIlBBU1NcbiIpOwotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9m
aWx0ZXJfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVjMGIxNTFi
MTFiZGI1Zjc5OTk5NjIyMWIxMzhkZTc0Yjc2OWIxMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5p
dHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IHRl
c3QgZmlsdGVycy4KLQotQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29n
bGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCi10aGUgR1RFU1RfRklMVEVSIGVudmly
b25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVGhpcyBzY3JpcHQg
dGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCi1ndGVzdF9maWx0ZXJfdW5pdHRl
c3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVudAot
ZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0KLU5vdGUgdGhhdCB0ZXN0IHNo
YXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0cyBhcmUgZmlsdGVyZWQuIFRoZXJl
Zm9yZSwKLXdlIHRlc3QgdGhhdCBoZXJlIGFsc28uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLXRyeToK
LSAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0ICAjIEZvciBQeXRob24gMi4zIGNvbXBhdGli
aWxpdHkKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgcGFzcwotaW1wb3J0IHN5cwotCi1pbXBvcnQg
Z3Rlc3RfdGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBwbGF0
Zm9ybSBjYW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMgcHJv
Y2Vzc2VzLiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5kIGlu
dm9rZSBhIHB5dGhvbgotIyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRoZXIg
dGhlIHZhcmlhYmxlIGlzIFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAnZXZh
bCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9uIGlz
IHRocm93biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9yICdG
YWxzZScuCi1vcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQgb3M7
IHByaW50KFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiknXSkKLUNBTl9QQVNTX0VNUFRZX0VO
ViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2sgaWYgdGhpcyBwbGF0Zm9ybSBjYW4g
dW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4KLSMgV2Ugc2V0
IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0LCBhbmQgaW52
b2tlCi0jIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhlciB0
aGUgdmFyaWFibGUKLSMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCi0jIFdlIHVzZSAnZXZh
bCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0aW9uCi0jIGlz
IHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxzZScuCi1vcy5l
bnZpcm9uWydVTlNFVF9WQVInXSA9ICdYJwotZGVsIG9zLmVudmlyb25bJ1VOU0VUX1ZBUiddCi1j
aGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUs
ICctYycsICdpbXBvcnQgb3M7IHByaW50KFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmlyb24p
J10pCi1DQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVja3MgaWYg
d2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9lc24ndAotIyBtYWtl
IHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVudiB2YXJpYWJsZXMg
KFdpbjMyKQotIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0IHZhcmlhYmxlcyAo
c2luY2Ugd2UgY2Fubm90IHRlbGwKLSMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQgTlVM
TCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKLUNBTl9URVNUX0VNUFRZX0ZJTFRFUiA9
IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCi0KLQotIyBUaGUgZW52aXJv
bm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KLUZJTFRFUl9F
TlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZv
ciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxfU0hB
UkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKLVNIQVJEX1NU
QVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCi0KLSMgVGhlIGNv
bW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxURVJf
RkxBRyA9ICdndGVzdF9maWx0ZXInCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBpbmNs
dWRpbmcgZGlzYWJsZWQgdGVzdHMuCi1BTFNPX1JVTl9ESVNBQkVEX1RFU1RTX0ZMQUcgPSAnZ3Rl
c3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0
X2ZpbHRlcl91bml0dGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdl
dFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XycpCi0KLSMgUmVnZXgg
Zm9yIGRldGVybWluaW5nIHdoZXRoZXIgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZCBp
biB0aGUgYmluYXJ5LgotUEFSQU1fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocicvUGFyYW1UZXN0
JykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUgVGVz
dCdzIG91dHB1dC4KLVRFU1RfQ0FTRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtcLStcXSBcZCsg
dGVzdHM/IGZyb20gKFx3KygvXHcrKT8pJykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IG5h
bWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCi1URVNUX1JFR0VYID0gcmUuY29tcGlsZShy
J15cW1xzKlJVTlxzKlxdLipcLihcdysoL1x3Kyk/KScpCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBm
bGFnIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gb3V0cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0Ci0j
IHdpbGwgcnVuLgotTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKLQotIyBJ
bmRpY2F0ZXMgd2hldGhlciBHb29nbGUgVGVzdCBzdXBwb3J0cyBkZWF0aCB0ZXN0cy4KLVNVUFBP
UlRTX0RFQVRIX1RFU1RTID0gJ0hhc0RlYXRoVGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJw
cm9jZXNzKAotICAgIFtDT01NQU5ELCBMSVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKLQotIyBGdWxs
IG5hbWVzIG9mIGFsbCB0ZXN0cyBpbiBndGVzdF9maWx0ZXJfdW5pdHRlc3RzXy4KLVBBUkFNX1RF
U1RTID0gWwotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAnU2VxUC9QYXJhbVRl
c3QuVGVzdFgvMScsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICdTZXFQL1Bh
cmFtVGVzdC5UZXN0WS8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAgJ1Nl
cVEvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAg
ICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCi0gICAgXQotCi1ESVNBQkxFRF9URVNUUyA9IFsK
LSAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCi0gICAgJ0JhclRlc3QuRElTQUJMRURf
VGVzdEZpdmUnLAotICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKLSAgICAnRElTQUJMRURf
Rm9vYmFyVGVzdC5UZXN0MScsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURfVGVz
dDInLAotICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKLSAgICBdCi0KLWlmIFNV
UFBPUlRTX0RFQVRIX1RFU1RTOgotICBERUFUSF9URVNUUyA9IFsKLSAgICAnSGFzRGVhdGhUZXN0
LlRlc3QxJywKLSAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKLSAgICBdCi1lbHNlOgotICBERUFU
SF9URVNUUyA9IFtdCi0KLSMgQWxsIHRoZSBub24tZGlzYWJsZWQgdGVzdHMuCi1BQ1RJVkVfVEVT
VFMgPSBbCi0gICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgJ0Jh
clRlc3QuVGVzdE9uZScsCi0gICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgJ0JhclRlc3QuVGVz
dFRocmVlJywKLQotICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICdCYXpUZXN0LlRlc3RBJywK
LSAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVTVFMK
LQotcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUKLQotIyBVdGlsaXRpZXMuCi0KLWVudmlyb24g
PSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgot
ICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4gJ3Zh
bHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25b
ZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52
aXJvbltlbnZfdmFyXQotCi0KLWRlZiBSdW5BbmRSZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUpOgot
ICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIKLQot
ICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdzIG9y
IFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbiku
b3V0cHV0Ci0KLQotZGVmIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzID0gTm9uZSk6Ci0gICIi
IlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBhIGxp
c3Qgb2YgdGVzdHMgcnVuLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
W0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52aXJvbikKLSAgdGVzdHNfcnVuID0gW10K
LSAgdGVzdF9jYXNlID0gJycKLSAgdGVzdCA9ICcnCi0gIGZvciBsaW5lIGluIHAub3V0cHV0LnNw
bGl0KCdcbicpOgotICAgIG1hdGNoID0gVEVTVF9DQVNFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAg
aWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICB0ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgxKQot
ICAgIGVsc2U6Ci0gICAgICBtYXRjaCA9IFRFU1RfUkVHRVgubWF0Y2gobGluZSkKLSAgICAgIGlm
IG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAg
ICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAnLicgKyB0ZXN0KQotICByZXR1cm4gKHRl
c3RzX3J1biwgcC5leGl0X2NvZGUpCi0KLQotZGVmIEludm9rZVdpdGhNb2RpZmllZEVudihleHRy
YV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgotICAiIiJSdW5zIHRoZSBnaXZlbiBm
dW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9kaWZpZWQgZW52aXJvbm1lbnQuIiIiCi0gIHRy
eToKLSAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNvcHkoKQotICAgIGVudmlyb24udXBkYXRl
KGV4dHJhX2VudikKLSAgICByZXR1cm4gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQotICBmaW5h
bGx5OgotICAgIGVudmlyb24uY2xlYXIoKQotICAgIGVudmlyb24udXBkYXRlKG9yaWdpbmFsX2Vu
dikKLQotCi1kZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgsIGNv
bW1hbmQpOgotICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4aXQg
Y29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKLQotICBleHRyYV9lbnYgPSB7U0hBUkRf
SU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4KSwKLSAgICAgICAgICAgICAgIFRPVEFMX1NI
QVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRzKX0KLSAgcmV0dXJuIEludm9rZVdpdGhNb2Rp
ZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCwgY29tbWFuZCkKLQotIyBU
aGUgdW5pdCB0ZXN0LgotCi0KLWNsYXNzIEdUZXN0RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVzdF91
dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRoZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNvbW1h
bmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIKLQotICAjIFV0aWxpdGllcy4KLQotICBk
ZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMpOgotICAgICIiIkFzc2VydHMgdGhhdCB0
d28gc2V0cyBhcmUgZXF1YWwuIiIiCi0KLSAgICBmb3IgZWxlbSBpbiBsaHM6Ci0gICAgICBzZWxm
LmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAlcycgJSAoZWxlbSwgcmhzKSkKLQotICAgIGZv
ciBlbGVtIGluIHJoczoKLSAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIGxocywgJyVzIGluICVz
JyAlIChlbGVtLCBsaHMpKQotCi0gIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYsIHNl
dF92YXIsIGxpc3Rfb2Zfc2V0cyk6Ci0gICAgIiIiQXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0cyBp
cyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIiIgotCi0gICAgZnVsbF9wYXJ0aXRpb24g
PSBbXQotICAgIGZvciBzbGljZV92YXIgaW4gbGlzdF9vZl9zZXRzOgotICAgICAgZnVsbF9wYXJ0
aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRfdmFy
KSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNldChzZXRfdmFy
KSwgc2V0KGZ1bGxfcGFydGl0aW9uKSkKLQotICBkZWYgQWRqdXN0Rm9yUGFyYW1ldGVyaXplZFRl
c3RzKHNlbGYsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQWRqdXN0IHRlc3RzX3RvX3J1biBpbiBj
YXNlIHZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLiIiIgotCi0gICAgZ2xv
YmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKLSAgICBpZiBub3QgcGFyYW1fdGVzdHNfcHJlc2VudDoK
LSAgICAgIHJldHVybiBsaXN0KHNldCh0ZXN0c190b19ydW4pIC0gc2V0KFBBUkFNX1RFU1RTKSkK
LSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRlZiBSdW5BbmRWZXJp
Znkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIiIkNoZWNrcyB0aGF0
IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0ZXIu
IiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRUZXN0
cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJvbm1l
bnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMgZnJv
bSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBhIG5ldyBwcm9jZXNz
LiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVyCi0g
ICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBIb3dl
dmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFibGUg
aXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAjIE5vbmUpLgotICAg
ICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJTFRF
UiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIs
IGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCgp
WzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgICBzZWxmLkFz
c2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMgcHlsaW50OiBlbmFi
bGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUg
ZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAgYXJncyA9IFtdCi0g
ICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVzdF9m
aWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3MpWzBd
Ci0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLQotICBk
ZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxfc2hh
cmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1O
b25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBydW5z
IGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgotCi0gICAgUnVu
cyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4gZmls
dGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2VyZSBy
dW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJkIHNob3VsZCBiZSBp
ZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMuCi0KLSAgICBBcmdz
OgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMuCi0g
ICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBzcGxpdCB0ZXN0
IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3RlZCB0
byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0byB0
aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0IHRvIGEgdHJ1ZSB2
YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFyYW1l
dGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyByZW1vdmVzIGVtcHR5
IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAjIHRv
IGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBhbiBl
bXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3aGVu
IHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwotICAg
ICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FOX1RF
U1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZhcihG
SUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9uID0gW10KLSAgICAg
IGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0ZXN0c19ydW4sIGV4
aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBhcmdzKQotICAgICAg
ICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0X2Nv
ZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0gICAgICBzZWxmLkFz
c2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24pCi0gICAgICBTZXRF
bnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9QzY0
MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxmLCBndGVzdF9maWx0
ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5zIGNv
cnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0gICAgUnVucyBndGVz
dF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMKLSAg
ICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3RzIHdl
cmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8gYXBw
bHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBl
Y3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZv
clBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENvbnN0cnVjdCB0aGUg
Y29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJFRF9URVNU
U19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgIGFyZ3MuYXBw
ZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkKLQotICAgIHRlc3Rz
X3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNlbGYuQXNzZXJ0U2V0
RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBhbmQKLSAgICBzZXRz
IHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2JhbCBwYXJhbV90ZXN0
c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25lOgotICAgICAgcGFy
YW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAotICAgICAgICAgIFJ1
bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2
aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qgc3BlY2lmeWluZyB0
aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwgQUNUSVZFX1RFU1RT
KQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxmKToKLSAgICAiIiJU
ZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNoYXJkaW5nIGVuYWJs
ZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAxLCBBQ1RJ
VkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMiwgQUNU
SVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihB
Q1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVTVFMpCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgKyAxLCBB
Q1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToKLSAgICAiIiJUZXN0
cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnJywgW10pCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQotICAgIHNlbGYuUnVu
QW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVzdEJhZEZpbHRlcihz
ZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90aGluZy4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRlZiB0ZXN0RnVsbE5h
bWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFtZS4iIiIKLQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6JywgWydGb29UZXN0
Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdGb29UZXN0Llh5eics
IDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZpbHRlcnMoc2VsZik6
Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuIiIiCi0KLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5n
KCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxFRF9U
RVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouKicsIEFDVElW
RV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVyQnlUZXN0Q2FzZShz
ZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFiYycsICdGb29UZXN0
Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUnLCAnQmF6VGVzdC5U
ZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmF6VGVzdC4q
JywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgnQmF6
VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFaX1RFU1RT
ICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRlc3Qo
c2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4iIiIKLQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0
LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMoc2VsZik6Ci0gICAg
IiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIKLQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10pCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNBQkxFRF9Gb29iYXJU
ZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FCTEVEXyonLCBbXSkK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNBQkxFRF8qJywgRElT
QUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNBQkxFRF8qJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJU0FCTEVEXyonLCBb
Ci0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAgICAgJ0JhclRlc3Qu
RElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0QycsCi0g
ICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAgXSkK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAgICAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FC
TEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAotICAg
ICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShzZWxmKToKLSAgICAi
IiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUnLAot
ICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVlJywK
LQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEEnLAot
ICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQot
Ci0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5n
IHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgn
Ki4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQotICBkZWYgdGVzdEZp
bHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBoYXMgbm8g
Jy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6KicsIFsKLSAgICAgICAg
J0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0Jh
elRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgICAgIF0pCi0KLSAg
ZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29u
c2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vKi4q
OipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywK
LQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIEFuIGVtcHR5
IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnOipBKics
IFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0VGhyZWVQYXR0
ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0aHJlZSBw
YXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipBKjoqT25lJywgWwot
ICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAgICAg
ICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICAg
ICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAybmQgcGF0dGVybiBp
cyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScsIFsKLSAgICAgICAg
J0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVz
dC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgXSkKLQot
ICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2VsZi5SdW5BbmRWZXJp
ZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3Qu
WHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVycyhzZWxmKToKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdGb29U
ZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3QuVGVz
dE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5UZXN0
VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgJ0JhelRlc3QuVGVz
dEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKLQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAgICAgICAgJ0Zvb1Rl
c3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRlc3Qu
VGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0gKyBERUFU
SF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhclRlc3Qu
Ki1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAg
ICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBUZXN0cyB3aXRob3V0
IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVzdC5BYmM6Rm9vVGVz
dC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAg
J0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAg
IF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJp
emVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJBTV9URVNUUykKLQot
ICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHNlcXVlbmNl
IG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAgICAgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0g
ICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1UZXN0
LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRlc3Rz
IGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLzAn
LCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVAvUGFy
YW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAg
ICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdEZs
YWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmlsdGVyIGZs
YWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIKLQotICAgIFNldEVu
dlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJ
TFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlz
dChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLQotICAgIHNl
bGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpUZXN0
LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZChzZWxmKToK
LSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgaWYgc3BlY2lmaWVk
IGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3MucGF0
aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAgc2VsZi5hc3NlcnRf
KG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAgICBleHRyYV9lbnYg
PSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9Ci0gICAgdHJ5
OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kUmV0dXJuT3V0
cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMoc2hh
cmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQotCi0g
IGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0cyhzZWxmKToKLSAg
ICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgImxpc3Rf
dGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihn
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFzc2VydF8obm90IG9z
LnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtTSEFS
RF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0gICAg
ICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkKLSAgICBmaW5hbGx5
OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xlIFRlc3QgZW51bWVy
YXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5nIHRoZW0uCi0gICAg
ICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwKLSAgICAgICAgICAg
ICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVyYXRpb24uXG4nCi0g
ICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RFU1RTX0ZMQUcgaXMg
YXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZmxhZyB2YWx1ZSBm
b3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxmLmFzc2VydF8ob3Mu
cGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0
YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgIGRlZiB0ZXN0U2hh
cmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVzdHMgaW50ZWdyYXRp
b24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAgIGd0ZXN0X2ZpbHRl
ciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90ZXN0cyA9IFsKLSAg
ICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRl
c3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgICAn
U2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZ
LzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAgICAgICBdCi0K
LSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNhZmUn
LAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9ZmFzdCddOgot
ICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDMsIGV4
cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0
aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFnXSkK
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzdkZWZmYzM4ZjdkZjFkZGJlNjVhNTFlYjlhYTVmOGI0MGU1MmE0
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
NDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCB0ZXN0IGZpbHRlcnMuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVj
aWZ5IHdoaWNoIHRlc3QocykgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8v
IGVpdGhlciB0aGUgR1RFU1RfRklMVEVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0
ZXN0X2ZpbHRlcgotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0
aW9uYWxpdHkuCi0vLwotLy8gVGhlIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRo
b24gdW5pdCB0ZXN0LiAgRG9uJ3QgcnVuIGl0Ci0vLyBkaXJlY3RseS4KLQotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3QgY2FzZSBGb29UZXN0LgotCi1j
bGFzcyBGb29UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotVEVTVF9GKEZvb1Rl
c3QsIEFiYykgewotfQotCi1URVNUX0YoRm9vVGVzdCwgWHl6KSB7Ci0gIEZBSUwoKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgQmFyVGVzdC4KLQotVEVTVChCYXJU
ZXN0LCBUZXN0T25lKSB7Ci19Ci0KLVRFU1QoQmFyVGVzdCwgVGVzdFR3bykgewotfQotCi1URVNU
KEJhclRlc3QsIFRlc3RUaHJlZSkgewotfQotCi1URVNUKEJhclRlc3QsIERJU0FCTEVEX1Rlc3RG
b3VyKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhclRl
c3QsIERJU0FCTEVEX1Rlc3RGaXZlKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4i
OwotfQotCi0vLyBUZXN0IGNhc2UgQmF6VGVzdC4KLQotVEVTVChCYXpUZXN0LCBUZXN0T25lKSB7
Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNUKEJhelRlc3QsIFRl
c3RBKSB7Ci19Ci0KLVRFU1QoQmF6VGVzdCwgVGVzdEIpIHsKLX0KLQotVEVTVChCYXpUZXN0LCBE
SVNBQkxFRF9UZXN0QykgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQot
Ly8gVGVzdCBjYXNlIEhhc0RlYXRoVGVzdAotCi1URVNUKEhhc0RlYXRoVGVzdCwgVGVzdDEpIHsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAiLioiKTsKLX0KLQotLy8gV2Ug
bmVlZCBhdCBsZWFzdCB0d28gZGVhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGFsbCBk
ZWF0aCB0ZXN0cwotLy8gYXJlbid0IG9uIHRoZSBmaXJzdCBzaGFyZC4KLVRFU1QoSGFzRGVhdGhU
ZXN0LCBUZXN0MikgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGV4aXQoMSksICIuKiIp
OwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyVGVzdAotCi1URVNUKERJU0FCTEVEX0Zvb2JhclRl
c3QsIFRlc3QxKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotfQotCi1URVNU
KERJU0FCTEVEX0Zvb2JhclRlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci0gIEZBSUwoKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0IGNhc2UgRm9vYmFyYmF6VGVzdAotCi1URVNU
KERJU0FCTEVEX0Zvb2JhcmJhelRlc3QsIFRlc3RBKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iOwotfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLWNsYXNzIFBhcmFtVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4gewotfTsKLQotVEVTVF9QKFBh
cmFtVGVzdCwgVGVzdFgpIHsKLX0KLQotVEVTVF9QKFBhcmFtVGVzdCwgVGVzdFkpIHsKLX0KLQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUCwgUGFyYW1UZXN0LCB0ZXN0aW5nOjpWYWx1ZXMo
MSwgMikpOwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxUSwgUGFyYW1UZXN0LCB0ZXN0aW5n
OjpWYWx1ZXMoNSwgNikpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi19ICAv
LyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVz
dGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBSVU5fQUxMX1RF
U1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5w
eSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwOTNjODM4ZDllNDcyZmJkZTJlMTI1ZjIwZDczYzE3ZWFlZTk1MGY1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIHRo
ZSAtLWhlbHAgZmxhZyBvZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLgotCi1TWU5PUFNJ
UwotICAgICAgIGd0ZXN0X2hlbHBfdGVzdC5weSAtLWJ1aWxkX2Rpcj1CVUlMRC9ESVIKLSAgICAg
ICAgICMgd2hlcmUgQlVJTEQvRElSIGNvbnRhaW5zIHRoZSBidWlsdCBndGVzdF9oZWxwX3Rlc3Rf
IGZpbGUuCi0gICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5Ci0iIiIKLQotX19hdXRob3JfXyA9ICd3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWlt
cG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0gJ250
JwotCi1QUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0
aCgnZ3Rlc3RfaGVscF90ZXN0XycpCi1GTEFHX1BSRUZJWCA9ICctLWd0ZXN0XycKLURFQVRIX1RF
U1RfU1RZTEVfRkxBRyA9IEZMQUdfUFJFRklYICsgJ2RlYXRoX3Rlc3Rfc3R5bGUnCi1TVFJFQU1f
UkVTVUxUX1RPX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdzdHJlYW1fcmVzdWx0X3RvJwotVU5LTk9X
Tl9GTEFHID0gRkxBR19QUkVGSVggKyAndW5rbm93bl9mbGFnX2Zvcl90ZXN0aW5nJwotTElTVF9U
RVNUU19GTEFHID0gRkxBR19QUkVGSVggKyAnbGlzdF90ZXN0cycKLUlOQ09SUkVDVF9GTEFHX1ZB
UklBTlRTID0gW3JlLnN1YignXi0tJywgJy0nLCBMSVNUX1RFU1RTX0ZMQUcpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmUuc3ViKCdeLS0nLCAnLycsIExJU1RfVEVTVFNfRkxBRyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICByZS5zdWIoJ18nLCAnLScsIExJU1RfVEVTVFNfRkxB
RyldCi1JTlRFUk5BTF9GTEFHX0ZPUl9URVNUSU5HID0gRkxBR19QUkVGSVggKyAnaW50ZXJuYWxf
ZmxhZ19mb3JfdGVzdGluZycKLQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAiRGVhdGhUZXN0IiBp
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgW1BST0dSQU1fUEFUSCwgTElTVF9U
RVNUU19GTEFHXSkub3V0cHV0Ci0KLSMgVGhlIGhlbHAgbWVzc2FnZSBtdXN0IG1hdGNoIHRoaXMg
cmVnZXguCi1IRUxQX1JFR0VYID0gcmUuY29tcGlsZSgKLSAgICBGTEFHX1BSRUZJWCArIHInbGlz
dF90ZXN0cy4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ2ZpbHRlcj0uKicgKwotICAgIEZMQUdf
UFJFRklYICsgcidhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cy4qJyArCi0gICAgRkxBR19QUkVGSVgg
KyByJ3JlcGVhdD0uKicgKwotICAgIEZMQUdfUFJFRklYICsgcidzaHVmZmxlLionICsKLSAgICBG
TEFHX1BSRUZJWCArIHIncmFuZG9tX3NlZWQ9LionICsKLSAgICBGTEFHX1BSRUZJWCArIHInY29s
b3I9LionICsKLSAgICBGTEFHX1BSRUZJWCArIHIncHJpbnRfdGltZS4qJyArCi0gICAgRkxBR19Q
UkVGSVggKyByJ291dHB1dD0uKicgKwotICAgIEZMQUdfUFJFRklYICsgcidicmVha19vbl9mYWls
dXJlLionICsKLSAgICBGTEFHX1BSRUZJWCArIHIndGhyb3dfb25fZmFpbHVyZS4qJyArCi0gICAg
RkxBR19QUkVGSVggKyByJ2NhdGNoX2V4Y2VwdGlvbnM9MC4qJywKLSAgICByZS5ET1RBTEwpCi0K
LQotZGVmIFJ1bldpdGhGbGFnKGZsYWcpOgotICAiIiJSdW5zIGd0ZXN0X2hlbHBfdGVzdF8gd2l0
aCB0aGUgZ2l2ZW4gZmxhZy4KLQotICBSZXR1cm5zOgotICAgIHRoZSBleGl0IGNvZGUgYW5kIHRo
ZSB0ZXh0IG91dHB1dCBhcyBhIHR1cGxlLgotICBBcmdzOgotICAgIGZsYWc6IHRoZSBjb21tYW5k
LWxpbmUgZmxhZyB0byBwYXNzIHRvIGd0ZXN0X2hlbHBfdGVzdF8sIG9yIE5vbmUuCi0gICIiIgot
Ci0gIGlmIGZsYWcgaXMgTm9uZToKLSAgICBjb21tYW5kID0gW1BST0dSQU1fUEFUSF0KLSAgZWxz
ZToKLSAgICBjb21tYW5kID0gW1BST0dSQU1fUEFUSCwgZmxhZ10KLSAgY2hpbGQgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIGNoaWxkLmV4aXRfY29kZSwg
Y2hpbGQub3V0cHV0Ci0KLQotY2xhc3MgR1Rlc3RIZWxwVGVzdChndGVzdF90ZXN0X3V0aWxzLlRl
c3RDYXNlKToKLSAgIiIiVGVzdHMgdGhlIC0taGVscCBmbGFnIGFuZCBpdHMgZXF1aXZhbGVudCBm
b3Jtcy4iIiIKLQotICBkZWYgVGVzdEhlbHBGbGFnKHNlbGYsIGZsYWcpOgotICAgICIiIlZlcmlm
aWVzIGNvcnJlY3QgYmVoYXZpb3Igd2hlbiBoZWxwIGZsYWcgaXMgc3BlY2lmaWVkLgotCi0gICAg
VGhlIHJpZ2h0IG1lc3NhZ2UgbXVzdCBiZSBwcmludGVkIGFuZCB0aGUgdGVzdHMgbXVzdAotICAg
IHNraXBwZWQgd2hlbiB0aGUgZ2l2ZW4gZmxhZyBpcyBzcGVjaWZpZWQuCi0KLSAgICBBcmdzOgot
ICAgICAgZmxhZzogIEEgZmxhZyB0byBwYXNzIHRvIHRoZSBiaW5hcnkgb3IgTm9uZS4KLSAgICAi
IiIKLQotICAgIGV4aXRfY29kZSwgb3V0cHV0ID0gUnVuV2l0aEZsYWcoZmxhZykKLSAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBleGl0X2NvZGUpCi0gICAgc2VsZi5hc3NlcnRfKEhFTFBfUkVHRVgu
c2VhcmNoKG91dHB1dCksIG91dHB1dCkKLQotICAgIGlmIElTX0xJTlVYOgotICAgICAgc2VsZi5h
c3NlcnRfKFNUUkVBTV9SRVNVTFRfVE9fRkxBRyBpbiBvdXRwdXQsIG91dHB1dCkKLSAgICBlbHNl
OgotICAgICAgc2VsZi5hc3NlcnRfKFNUUkVBTV9SRVNVTFRfVE9fRkxBRyBub3QgaW4gb3V0cHV0
LCBvdXRwdXQpCi0KLSAgICBpZiBTVVBQT1JUU19ERUFUSF9URVNUUyBhbmQgbm90IElTX1dJTkRP
V1M6Ci0gICAgICBzZWxmLmFzc2VydF8oREVBVEhfVEVTVF9TVFlMRV9GTEFHIGluIG91dHB1dCwg
b3V0cHV0KQotICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8oREVBVEhfVEVTVF9TVFlMRV9G
TEFHIG5vdCBpbiBvdXRwdXQsIG91dHB1dCkKLQotICBkZWYgVGVzdE5vbkhlbHBGbGFnKHNlbGYs
IGZsYWcpOgotICAgICIiIlZlcmlmaWVzIGNvcnJlY3QgYmVoYXZpb3Igd2hlbiBubyBoZWxwIGZs
YWcgaXMgc3BlY2lmaWVkLgotCi0gICAgVmVyaWZpZXMgdGhhdCB3aGVuIG5vIGhlbHAgZmxhZyBp
cyBzcGVjaWZpZWQsIHRoZSB0ZXN0cyBhcmUgcnVuCi0gICAgYW5kIHRoZSBoZWxwIG1lc3NhZ2Ug
aXMgbm90IHByaW50ZWQuCi0KLSAgICBBcmdzOgotICAgICAgZmxhZzogIEEgZmxhZyB0byBwYXNz
IHRvIHRoZSBiaW5hcnkgb3IgTm9uZS4KLSAgICAiIiIKLQotICAgIGV4aXRfY29kZSwgb3V0cHV0
ID0gUnVuV2l0aEZsYWcoZmxhZykKLSAgICBzZWxmLmFzc2VydF8oZXhpdF9jb2RlICE9IDApCi0g
ICAgc2VsZi5hc3NlcnRfKG5vdCBIRUxQX1JFR0VYLnNlYXJjaChvdXRwdXQpLCBvdXRwdXQpCi0K
LSAgZGVmIHRlc3RQcmludHNIZWxwV2l0aEZ1bGxGbGFnKHNlbGYpOgotICAgIHNlbGYuVGVzdEhl
bHBGbGFnKCctLWhlbHAnKQotCi0gIGRlZiB0ZXN0UHJpbnRzSGVscFdpdGhTaG9ydEZsYWcoc2Vs
Zik6Ci0gICAgc2VsZi5UZXN0SGVscEZsYWcoJy1oJykKLQotICBkZWYgdGVzdFByaW50c0hlbHBX
aXRoUXVlc3Rpb25GbGFnKHNlbGYpOgotICAgIHNlbGYuVGVzdEhlbHBGbGFnKCctPycpCi0KLSAg
ZGVmIHRlc3RQcmludHNIZWxwV2l0aFdpbmRvd3NTdHlsZVF1ZXN0aW9uRmxhZyhzZWxmKToKLSAg
ICBzZWxmLlRlc3RIZWxwRmxhZygnLz8nKQotCi0gIGRlZiB0ZXN0UHJpbnRzSGVscFdpdGhVbnJl
Y29nbml6ZWRHb29nbGVUZXN0RmxhZyhzZWxmKToKLSAgICBzZWxmLlRlc3RIZWxwRmxhZyhVTktO
T1dOX0ZMQUcpCi0KLSAgZGVmIHRlc3RQcmludHNIZWxwV2l0aEluY29ycmVjdEZsYWdTdHlsZShz
ZWxmKToKLSAgICBmb3IgaW5jb3JyZWN0X2ZsYWcgaW4gSU5DT1JSRUNUX0ZMQUdfVkFSSUFOVFM6
Ci0gICAgICBzZWxmLlRlc3RIZWxwRmxhZyhpbmNvcnJlY3RfZmxhZykKLQotICBkZWYgdGVzdFJ1
bnNUZXN0c1dpdGhvdXRIZWxwRmxhZyhzZWxmKToKLSAgICAiIiJWZXJpZmllcyB0aGF0IHdoZW4g
bm8gaGVscCBmbGFnIGlzIHNwZWNpZmllZCwgdGhlIHRlc3RzIGFyZSBydW4KLSAgICBhbmQgdGhl
IGhlbHAgbWVzc2FnZSBpcyBub3QgcHJpbnRlZC4iIiIKLQotICAgIHNlbGYuVGVzdE5vbkhlbHBG
bGFnKE5vbmUpCi0KLSAgZGVmIHRlc3RSdW5zVGVzdHNXaXRoR3Rlc3RJbnRlcm5hbEZsYWcoc2Vs
Zik6Ci0gICAgIiIiVmVyaWZpZXMgdGhhdCB0aGUgdGVzdHMgYXJlIHJ1biBhbmQgbm8gaGVscCBt
ZXNzYWdlIGlzIHByaW50ZWQgd2hlbgotICAgIGEgZmxhZyBzdGFydGluZyB3aXRoIEdvb2dsZSBU
ZXN0IHByZWZpeCBhbmQgJ2ludGVybmFsXycgaXMgc3VwcGxpZWQuIiIiCi0KLSAgICBzZWxmLlRl
c3ROb25IZWxwRmxhZyhJTlRFUk5BTF9GTEFHX0ZPUl9URVNUSU5HKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X2hlbHBfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZjc4YzI0
NDFiZTY2ODgxZjhlZGY1OWJmN2FjNDlkNDdiMTU5NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3Rf
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLQotLy8gVGhpcyBwcm9ncmFtIGlzIG1lYW50IHRvIGJlIHJ1biBieSBndGVz
dF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCi0vLyBpdCBkaXJlY3RseS4KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0KLS8vIFdoZW4gYSBoZWxwIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGlz
IHByb2dyYW0gc2hvdWxkIHNraXAgdGhlIHRlc3RzCi0vLyBhbmQgZXhpdCB3aXRoIDA7IG90aGVy
d2lzZSB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBiZSBleGVjdXRlZCwKLS8vIGNhdXNpbmcgdGhp
cyBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCi1URVNUKEhlbHBGbGFnVGVz
dCwgU2hvdWxkTm90QmVSdW4pIHsKLSAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8ICJUZXN0cyBzaG91
bGRuJ3QgYmUgcnVuIHdoZW4gLS1oZWxwIGlzIHNwZWNpZmllZC4iOwotfQotCi0jaWYgR1RFU1Rf
SEFTX0RFQVRIX1RFU1QKLVRFU1QoRGVhdGhUZXN0LCBVc2VkQnlQeXRob25TY3JpcHRUb0RldGVj
dFN1cHBvcnRGb3JEZWF0aFRlc3RzSW5UaGlzQmluYXJ5KSB7fQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IGYyZDJmZDFiMWM1ZDVlMDFjMTc0Njc0MGZlOTY4NDcwMzVhYjRkYWIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjA3
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIi
IlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KLQot
QSB1c2VyIGNhbiBhc2sgR29vZ2xlIFRlc3QgdG8gbGlzdCBhbGwgdGVzdHMgYnkgc3BlY2lmeWlu
ZyB0aGUKLS0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLiAgVGhpcyBzY3JpcHQgdGVzdHMgc3VjaCBm
dW5jdGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyAoYSBw
cm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHRoZSBjb21tYW5kIGxpbmUgZmxhZ3Mu
Ci0iIiIKLQotX19hdXRob3JfXyA9ICdwaGFubmFAZ29vZ2xlLmNvbSAoUGF0cmljayBIYW5uYSkn
Ci0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1pbXBvcnQgcmUKLQotCi0jIENvbnN0YW50cy4K
LQotIyBUaGUgY29tbWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaXN0aW5n
IGFsbCB0ZXN0cy4KLUxJU1RfVEVTVFNfRkxBRyA9ICdndGVzdF9saXN0X3Rlc3RzJwotCi0jIFBh
dGggdG8gdGhlIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHByb2dyYW0uCi1FWEVfUEFUSCA9
IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKCdndGVzdF9saXN0X3Rlc3Rz
X3VuaXR0ZXN0XycpCi0KLSMgVGhlIGV4cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3Rf
bGlzdF90ZXN0c191bml0dGVzdF8gd2l0aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMKLUVYUEVDVEVE
X09VVFBVVF9OT19GSUxURVJfUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRlc3RcLgotICBU
ZXN0MQotRm9vXC4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUFiY1wuCi0gIFh5
egotICBEZWYKLUZvb0JhclwuCi0gIEJhegotRm9vVGVzdFwuCi0gIFRlc3QxCi0gIERJU0FCTEVE
X1Rlc3QyCi0gIFRlc3QzCi1UeXBlZFRlc3QvMFwuICAjIFR5cGVQYXJhbSA9IChWZXJ5TG97MjQ1
fXxjbGFzcyBWZXJ5TG97MjM5fSlcLlwuXC4KLSAgVGVzdEEKLSAgVGVzdEIKLVR5cGVkVGVzdC8x
XC4gICMgVHlwZVBhcmFtID0gaW50XHMqXCooIF9fcHRyNjQpPwotICBUZXN0QQotICBUZXN0Qgot
VHlwZWRUZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15QXJyYXk8Ym9vbCxccyo0Mj4KLSAgVGVz
dEEKLSAgVGVzdEIKLU15L1R5cGVQYXJhbVRlc3QvMFwuICAjIFR5cGVQYXJhbSA9IChWZXJ5TG97
MjQ1fXxjbGFzcyBWZXJ5TG97MjM5fSlcLlwuXC4KLSAgVGVzdEEKLSAgVGVzdEIKLU15L1R5cGVQ
YXJhbVRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxzKlwqKCBfX3B0cjY0KT8KLSAgVGVzdEEK
LSAgVGVzdEIKLU15L1R5cGVQYXJhbVRlc3QvMlwuICAjIFR5cGVQYXJhbSA9IC4qTXlBcnJheTxi
b29sLFxzKjQyPgotICBUZXN0QQotICBUZXN0QgotTXlJbnN0YW50aWF0aW9uL1ZhbHVlUGFyYW1U
ZXN0XC4KLSAgVGVzdEEvMCAgIyBHZXRQYXJhbVwoXCkgPSBvbmUgbGluZQotICBUZXN0QS8xICAj
IEdldFBhcmFtXChcKSA9IHR3b1xcbmxpbmVzCi0gIFRlc3RBLzIgICMgR2V0UGFyYW1cKFwpID0g
YSB2ZXJ5XFxubG97MjQxfVwuXC5cLgotICBUZXN0Qi8wICAjIEdldFBhcmFtXChcKSA9IG9uZSBs
aW5lCi0gIFRlc3RCLzEgICMgR2V0UGFyYW1cKFwpID0gdHdvXFxubGluZXMKLSAgVGVzdEIvMiAg
IyBHZXRQYXJhbVwoXCkgPSBhIHZlcnlcXG5sb3syNDF9XC5cLlwuCi0iIiIpCi0KLSMgVGhlIGV4
cGVjdGVkIG91dHB1dCB3aGVuIHJ1bm5pbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gd2l0
aAotIyAtLWd0ZXN0X2xpc3RfdGVzdHMgYW5kIC0tZ3Rlc3RfZmlsdGVyPUZvbyouCi1FWFBFQ1RF
RF9PVVRQVVRfRklMVEVSX0ZPT19SRSA9IHJlLmNvbXBpbGUociIiIkZvb0RlYXRoVGVzdFwuCi0g
IFRlc3QxCi1Gb29cLgotICBCYXIxCi0gIEJhcjIKLSAgRElTQUJMRURfQmFyMwotRm9vQmFyXC4K
LSAgQmF6Ci1Gb29UZXN0XC4KLSAgVGVzdDEKLSAgRElTQUJMRURfVGVzdDIKLSAgVGVzdDMKLSIi
IikKLQotIyBVdGlsaXRpZXMuCi0KLQotZGVmIFJ1bihhcmdzKToKLSAgIiIiUnVucyBndGVzdF9s
aXN0X3Rlc3RzX3VuaXR0ZXN0XyBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiB0ZXN0cyBwcmludGVk
LiIiIgotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0VYRV9QQVRIXSAr
IGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRl
cnI9RmFsc2UpLm91dHB1dAotCi0KLSMgVGhlIHVuaXQgdGVzdC4KLQotY2xhc3MgR1Rlc3RMaXN0
VGVzdHNVbml0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdXNp
bmcgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHRvIGxpc3QgYWxsIHRlc3RzLiIiIgotCi0g
IGRlZiBSdW5BbmRWZXJpZnkoc2VsZiwgZmxhZ192YWx1ZSwgZXhwZWN0ZWRfb3V0cHV0X3JlLCBv
dGhlcl9mbGFnKToKLSAgICAiIiJSdW5zIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIGFuZCB2
ZXJpZmllcyB0aGF0IGl0IHByaW50cwotICAgIHRoZSBjb3JyZWN0IHRlc3RzLgotCi0gICAgQXJn
czoKLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgICAgdmFsdWUgb2YgdGhlIC0tZ3Rlc3RfbGlzdF90
ZXN0cyBmbGFnOwotICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNo
b3VsZCBub3QgYmUgcHJlc2VudC4KLSAgICAgIGV4cGVjdGVkX291dHB1dF9yZTogcmVndWxhciBl
eHByZXNzaW9uIHRoYXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0IGFmdGVyIHJ1bm5pbmcgY29tbWFuZDsKLSAgICAgIG90aGVyX2ZsYWc6ICAg
ICAgICAgYSBkaWZmZXJlbnQgZmxhZyB0byBiZSBwYXNzZWQgdG8gY29tbWFuZAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIGd0ZXN0X2xpc3RfdGVzdHM7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50Lgot
ICAgICIiIgotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0g
ICAgICBmbGFnX2V4cHJlc3Npb24gPSAnbm90IHNldCcKLSAgICBlbGlmIGZsYWdfdmFsdWUgPT0g
JzAnOgotICAgICAgZmxhZyA9ICctLSVzPTAnICUgTElTVF9URVNUU19GTEFHCi0gICAgICBmbGFn
X2V4cHJlc3Npb24gPSAnMCcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIExJU1Rf
VEVTVFNfRkxBRwotICAgICAgZmxhZ19leHByZXNzaW9uID0gJzEnCi0KLSAgICBhcmdzID0gW2Zs
YWddCi0KLSAgICBpZiBvdGhlcl9mbGFnIGlzIG5vdCBOb25lOgotICAgICAgYXJncyArPSBbb3Ro
ZXJfZmxhZ10KLQotICAgIG91dHB1dCA9IFJ1bihhcmdzKQotCi0gICAgaWYgZXhwZWN0ZWRfb3V0
cHV0X3JlOgotICAgICAgc2VsZi5hc3NlcnRfKAotICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9y
ZS5tYXRjaChvdXRwdXQpLAotICAgICAgICAgICgnd2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBv
ZiAiJXMiIGlzICIlcyIsXG4nCi0gICAgICAgICAgICd3aGljaCBkb2VzIG5vdCBtYXRjaCByZWdl
eCAiJXMiJyAlCi0gICAgICAgICAgIChMSVNUX1RFU1RTX0ZMQUcsIGZsYWdfZXhwcmVzc2lvbiwg
JyAnLmpvaW4oYXJncyksIG91dHB1dCwKLSAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZS5w
YXR0ZXJuKSkpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgICBub3Qg
RVhQRUNURURfT1VUUFVUX05PX0ZJTFRFUl9SRS5tYXRjaChvdXRwdXQpLAotICAgICAgICAgICgn
d2hlbiAlcyBpcyAlcywgdGhlIG91dHB1dCBvZiAiJXMiIGlzICIlcyInJQotICAgICAgICAgICAo
TElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJlc3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQp
KSkKLQotICBkZWYgdGVzdERlZmF1bHRCZWhhdmlvcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGUg
YmVoYXZpb3Igb2YgdGhlIGRlZmF1bHQgbW9kZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
KGZsYWdfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRf
cmU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0KLSAgZGVm
IHRlc3RGbGFnKHNlbGYpOgotICAgICIiIlRlc3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVz
dHMgZmxhZy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzAnLAotICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1Ob25lLAotICAgICAgICAgICAg
ICAgICAgICAgIG90aGVyX2ZsYWc9Tm9uZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNU
RURfT1VUUFVUX05PX0ZJTFRFUl9SRSwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFn
PU5vbmUpCi0KLSAgZGVmIHRlc3RPdmVycmlkZU5vbkZpbHRlckZsYWdzKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIG92ZXJyaWRlcyB0aGUgbm9uLWZpbHRlciBm
bGFncy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGZsYWdfdmFsdWU9JzEnLAotICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dF9yZT1FWFBFQ1RFRF9PVVRQVVRfTk9fRklM
VEVSX1JFLAotICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2ZsYWc9Jy0tZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZScpCi0KLSAgZGVmIHRlc3RXaXRoRmlsdGVyRmxhZ3Moc2VsZik6Ci0gICAgIiIi
VGVzdHMgdGhhdCAtLWd0ZXN0X2xpc3RfdGVzdHMgdGFrZXMgaW50byBhY2NvdW50IHRoZQotICAg
IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3Zh
bHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNU
RURfT1VUUFVUX0ZJTFRFUl9GT09fUkUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxh
Zz0nLS1ndGVzdF9maWx0ZXI9Rm9vKicpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xp
c3RfdGVzdHNfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDdj
MTc2YmE5NTU1ZDY4Yzc0ZjRkZmNjYjk2N2ZkYzkxZTk4MmIwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90
ZXN0c191bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogcGhh
bm5hQGdvb2dsZS5jb20gKFBhdHJpY2sgSGFubmEpCi0KLS8vIFVuaXQgdGVzdCBmb3IgR29vZ2xl
IFRlc3QncyAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4KLS8vCi0vLyBBIHVzZXIgY2FuIGFzayBH
b29nbGUgVGVzdCB0byBsaXN0IGFsbCB0ZXN0cyB0aGF0IHdpbGwgcnVuCi0vLyBzbyB0aGF0IHdo
ZW4gdXNpbmcgYSBmaWx0ZXIsIGEgdXNlciB3aWxsIGtub3cgd2hhdAotLy8gdGVzdHMgdG8gbG9v
ayBmb3IuIFRoZSB0ZXN0cyB3aWxsIG5vdCBiZSBydW4gYWZ0ZXIgbGlzdGluZy4KLS8vCi0vLyBU
aGlzIHByb2dyYW0gd2lsbCBiZSBpbnZva2VkIGZyb20gYSBQeXRob24gdW5pdCB0ZXN0LgotLy8g
RG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8g
U2V2ZXJhbCBkaWZmZXJlbnQgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdGhhdCB3aWxsIGJlIGxpc3Rl
ZC4KLVRFU1QoRm9vLCBCYXIxKSB7Ci19Ci0KLVRFU1QoRm9vLCBCYXIyKSB7Ci19Ci0KLVRFU1Qo
Rm9vLCBESVNBQkxFRF9CYXIzKSB7Ci19Ci0KLVRFU1QoQWJjLCBYeXopIHsKLX0KLQotVEVTVChB
YmMsIERlZikgewotfQotCi1URVNUKEZvb0JhciwgQmF6KSB7Ci19Ci0KLWNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEpIHsK
LX0KLQotVEVTVF9GKEZvb1Rlc3QsIERJU0FCTEVEX1Rlc3QyKSB7Ci19Ci0KLVRFU1RfRihGb29U
ZXN0LCBUZXN0MykgewotfQotCi1URVNUKEZvb0RlYXRoVGVzdCwgVGVzdDEpIHsKLX0KLQotLy8g
QSBncm91cCBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotCi1jbGFzcyBNeVR5cGUgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgTXlUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3ZhbHVlKSA6
IHZhbHVlXyhhX3ZhbHVlKSB7fQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgdmFsdWVfOwot
fTsKLQotLy8gVGVhY2hlcyBHb29nbGUgVGVzdCBob3cgdG8gcHJpbnQgYSBNeVR5cGUuCi12b2lk
IFByaW50VG8oY29uc3QgTXlUeXBlJiB4LCBzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCB4
LnZhbHVlKCk7Ci19Ci0KLWNsYXNzIFZhbHVlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3RXaXRoUGFyYW08TXlUeXBlPiB7Ci19OwotCi1URVNUX1AoVmFsdWVQYXJhbVRlc3QsIFRlc3RB
KSB7Ci19Ci0KLVRFU1RfUChWYWx1ZVBhcmFtVGVzdCwgVGVzdEIpIHsKLX0KLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoCi0gICAgTXlJbnN0YW50aWF0aW9uLCBWYWx1ZVBhcmFtVGVzdCwKLSAg
ICB0ZXN0aW5nOjpWYWx1ZXMoTXlUeXBlKCJvbmUgbGluZSIpLAotICAgICAgICAgICAgICAgICAg
ICBNeVR5cGUoInR3b1xubGluZXMiKSwKLSAgICAgICAgICAgICAgICAgICAgTXlUeXBlKCJhIHZl
cnlcbmxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vbmcgbGluZSIpKSk7ICAvLyBOT0xJTlQKLQotLy8g
QSBncm91cCBvZiB0eXBlZCB0ZXN0cy4KLQotLy8gQSBkZWxpYmVyYXRlbHkgbG9uZyB0eXBlIG5h
bWUgZm9yIHRlc3RpbmcgdGhlIGxpbmUtdHJ1bmNhdGluZwotLy8gYmVoYXZpb3Igd2hlbiBwcmlu
dGluZyBhIHR5cGUgcGFyYW1ldGVyLgotY2xhc3MgVmVyeUxvb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
Z05hbWUgeyAgLy8gTk9MSU5UCi19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5
cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBpbnQga1NpemU+Ci1jbGFzcyBNeUFycmF5IHsKLX07Ci0KLXR5cGVkZWYgdGVzdGluZzo6
VHlwZXM8VmVyeUxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vZ05hbWUsICAvLyBOT0xJTlQKLSAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiwgTXlBcnJheTxib29sLCA0Mj4gPiBNeVR5cGVzOwotCi1U
WVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBNeVR5cGVzKTsKLQotVFlQRURfVEVTVChUeXBlZFRl
c3QsIFRlc3RBKSB7Ci19Ci0KLVRZUEVEX1RFU1QoVHlwZWRUZXN0LCBUZXN0QikgewotfQotCi0v
LyBBIGdyb3VwIG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBUeXBlUGFyYW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsK
LQotVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCk7Ci0KLVRZUEVEX1RFU1RfUChUeXBl
UGFyYW1UZXN0LCBUZXN0QSkgewotfQotCi1UWVBFRF9URVNUX1AoVHlwZVBhcmFtVGVzdCwgVGVz
dEIpIHsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoVHlwZVBhcmFtVGVzdCwgVGVz
dEEsIFRlc3RCKTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFR5cGVQYXJh
bVRlc3QsIE15VHlwZXMpOwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAg
Ojp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfbWFpbl91bml0dGVzdC5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNkOWJiODc2ZmY3Y2U5ZThjZWEzZDMwMjI0ZDI4
OGE5YjE5ZTcwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gVGVzdHMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRl
ZmluZSBtYWluKCkgd2hlbiB3ZSBsaW5rIHRvCi0vLyBndGVzdF9tYWluIGluc3RlYWQgb2YgZ3Rl
c3QuCi0KLW5hbWVzcGFjZSB7Ci0KLVRFU1QoR1Rlc3RNYWluVGVzdCwgU2hvdWxkU3VjY2VlZCkg
ewotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gV2UgYXJlIHVzaW5nIHRoZSBtYWluKCkgZnVu
Y3Rpb24gZGVmaW5lZCBpbiBzcmMvZ3Rlc3RfbWFpbi5jYywgc28KLS8vIHdlIGRvbid0IGRlZmlu
ZSBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTI1OTlhZjhkMDhkNjgzZDhhZjg2ZmVlOTdm
YTNjNWE2MTZhNjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDU2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotLy8gVGVzdHMgdGhhdCBhIEdvb2dsZSBUZXN0IHByb2dyYW0gdGhhdCBoYXMg
bm8gdGVzdCBkZWZpbmVkIGNhbiBydW4KLS8vIHN1Y2Nlc3NmdWxseS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIEFuIGFkLWhvYyBhc3NlcnRpb24gb3V0c2lk
ZSBvZiBhbGwgdGVzdHMuCi0gIC8vCi0gIC8vIFRoaXMgc2VydmVzIHRocmVlIHB1cnBvc2VzOgot
ICAvLwotICAvLyAxLiBJdCB2ZXJpZmllcyB0aGF0IGFuIGFkLWhvYyBhc3NlcnRpb24gY2FuIGJl
IGV4ZWN1dGVkIGV2ZW4gaWYKLSAgLy8gICAgbm8gdGVzdCBpcyBkZWZpbmVkLgotICAvLyAyLiBJ
dCB2ZXJpZmllcyB0aGF0IGEgZmFpbGVkIGFkLWhvYyBhc3NlcnRpb24gY2F1c2VzIHRoZSB0ZXN0
Ci0gIC8vICAgIHByb2dyYW0gdG8gZmFpbC4KLSAgLy8gMy4gV2UgaGFkIGEgYnVnIHdoZXJlIHRo
ZSBYTUwgb3V0cHV0IHdvbid0IGJlIGdlbmVyYXRlZCBpZiBhbgotICAvLyAgICBhc3NlcnRpb24g
aXMgZXhlY3V0ZWQgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQsIGV2ZW4KLSAgLy8g
ICAgdGhvdWdoIC0tZ3Rlc3Rfb3V0cHV0PXhtbCBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIHN1
cmUgdGhlCi0gIC8vICAgIGJ1ZyBpcyBmaXhlZCBhbmQgZG9lc24ndCByZWdyZXNzLgotICBFWFBF
Q1RfRVEoMSwgMik7Ci0KLSAgLy8gVGhlIGFib3ZlIEVYUEVDVF9FUSgpIHNob3VsZCBjYXVzZSBS
VU5fQUxMX1RFU1RTKCkgdG8gcmV0dXJuIG5vbi16ZXJvLgotICByZXR1cm4gUlVOX0FMTF9URVNU
UygpID8gMCA6IDE7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1
dF90ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDZkYmVlMDk4MDUwNjg1ZTVjMGM1YjVjNDVhMzQ3YWY3
OTk5NzNlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MzQwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwg
R29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSIiIlRlc3RzIHRoZSB0ZXh0IG91dHB1dCBvZiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3Jr
LgotCi1TWU5PUFNJUwotICAgICAgIGd0ZXN0X291dHB1dF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJV
SUxEL0RJUiAtLWdlbmdvbGRlbgotICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMg
dGhlIGJ1aWx0IGd0ZXN0X291dHB1dF90ZXN0XyBmaWxlLgotICAgICAgIGd0ZXN0X291dHB1dF90
ZXN0LnB5IC0tZ2VuZ29sZGVuCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKLSIiIgotCi1f
X2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgZGlm
ZmxpYgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCBndGVzdF90ZXN0
X3V0aWxzCi0KLQotIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUgZ29sZGVuIGZpbGUKLUdF
TkdPTERFTl9GTEFHID0gJy0tZ2VuZ29sZGVuJwotQ0FUQ0hfRVhDRVBUSU9OU19FTlZfVkFSX05B
TUUgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotSVNfV0lORE9XUyA9IG9zLm5hbWUgPT0g
J250JwotCi0jIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IHJlbW92ZSB0aGUgX2xpbiBzdWZmaXgu
Ci1HT0xERU5fTkFNRSA9ICdndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dCcKLQotUFJP
R1JBTV9QQVRIID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0
X291dHB1dF90ZXN0XycpCi0KLSMgQXQgbGVhc3Qgb25lIGNvbW1hbmQgd2UgZXhlcmNpc2UgbXVz
dCBub3QgaGF2ZSB0aGUKLSMgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190
ZXN0cycgYXJndW1lbnQuCi1DT01NQU5EX0xJU1RfVEVTVFMgPSAoe30sIFtQUk9HUkFNX1BBVEgs
ICctLWd0ZXN0X2xpc3RfdGVzdHMnXSkKLUNPTU1BTkRfV0lUSF9DT0xPUiA9ICh7fSwgW1BST0dS
QU1fUEFUSCwgJy0tZ3Rlc3RfY29sb3I9eWVzJ10pCi1DT01NQU5EX1dJVEhfVElNRSA9ICh7fSwg
W1BST0dSQU1fUEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZ3Rlc3RfcHJpbnRf
dGltZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmlyb25t
ZW50X2FuZF9hZF9ob2NfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1ndGVz
dF9maWx0ZXI9RmF0YWxGYWlsdXJlVGVzdC4qOkxvZ2dpbmdUZXN0LionXSkKLUNPTU1BTkRfV0lU
SF9ESVNBQkxFRCA9ICgKLSAgICB7fSwgW1BST0dSQU1fUEFUSCwKLSAgICAgICAgICctLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJywKLSAgICAgICAgICdpbnRlcm5hbF9za2lwX2Vudmly
b25tZW50X2FuZF9hZF9ob2NfdGVzdHMnLAotICAgICAgICAgJy0tZ3Rlc3RfZmlsdGVyPSpESVNB
QkxFRF8qJ10pCi1DT01NQU5EX1dJVEhfU0hBUkRJTkcgPSAoCi0gICAgeydHVEVTVF9TSEFSRF9J
TkRFWCc6ICcxJywgJ0dURVNUX1RPVEFMX1NIQVJEUyc6ICcyJ30sCi0gICAgW1BST0dSQU1fUEFU
SCwKLSAgICAgJ2ludGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCi0g
ICAgICctLWd0ZXN0X2ZpbHRlcj1QYXNzaW5nVGVzdC4qJ10pCi0KLUdPTERFTl9QQVRIID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGlyKCksIEdPTERFTl9OQU1FKQot
Ci0KLWRlZiBUb1VuaXhMaW5lRW5kaW5nKHMpOgotICAiIiJDaGFuZ2VzIGFsbCBXaW5kb3dzL01h
YyBsaW5lIGVuZGluZ3MgaW4gcyB0byBVTklYIGxpbmUgZW5kaW5ncy4iIiIKLQotICByZXR1cm4g
cy5yZXBsYWNlKCdcclxuJywgJ1xuJykucmVwbGFjZSgnXHInLCAnXG4nKQotCi0KLWRlZiBSZW1v
dmVMb2NhdGlvbnModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCBmaWxlIGxvY2F0aW9u
IGluZm8gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJnczoKLSAg
ICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgot
Ci0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24gaW5mbyAo
aW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFNRTpMSU5FX05VTUJFUjog
J29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVNQkVSKTogJykgcmVwbGFj
ZWQgYnkKLSAgICAgICAnRklMRV9OQU1FOiM6ICcuCi0gICIiIgotCi0gIHJldHVybiByZS5zdWIo
cicuKlsvXFxdKC4rKShcOlxkK3xcKFxkK1wpKVw6ICcsIHInXDE6IzogJywgdGVzdF9vdXRwdXQp
Ci0KLQotZGVmIFJlbW92ZVN0YWNrVHJhY2VEZXRhaWxzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMg
YWxsIHN0YWNrIHRyYWNlcyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4iIiIK
LQotICAjICo/IG1lYW5zICJmaW5kIHRoZSBzaG9ydGVzdCBzdHJpbmcgdGhhdCBtYXRjaGVzIi4K
LSAgcmV0dXJuIHJlLnN1YihyJ1N0YWNrIHRyYWNlOigufFxuKSo/XG5cbicsCi0gICAgICAgICAg
ICAgICAgJ1N0YWNrIHRyYWNlOiAob21pdHRlZClcblxuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1v
dmVTdGFja1RyYWNlcyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0cmFjZXMgb2Ygc3RhY2sg
dHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gICMgKj8g
bWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0IG1hdGNoZXMiLgotICByZXR1cm4g
cmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywgJycsIG91dHB1dCkKLQotCi1kZWYg
UmVtb3ZlVGltZShvdXRwdXQpOgotICAiIiJSZW1vdmVzIGFsbCB0aW1lIGluZm9ybWF0aW9uIGZy
b20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIHJldHVybiByZS5zdWIo
cidcKFxkKyBtcycsICcoPyBtcycsIG91dHB1dCkKLQotCi1kZWYgUmVtb3ZlVHlwZUluZm9EZXRh
aWxzKHRlc3Rfb3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBjb21waWxlci1zcGVjaWZpYyB0eXBlIGlu
Zm8gZnJvbSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIEFyZ3M6Ci0gICAgICAg
dGVzdF9vdXRwdXQ6ICB0aGUgb3V0cHV0IG9mIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbS4KLQotICBS
ZXR1cm5zOgotICAgICAgIG91dHB1dCB3aXRoIHR5cGUgaW5mb3JtYXRpb24gbm9ybWFsaXplZCB0
byBjYW5vbmljYWwgZm9ybS4KLSAgIiIiCi0KLSAgIyBzb21lIGNvbXBpbGVycyBvdXRwdXQgdGhl
IG5hbWUgb2YgdHlwZSAndW5zaWduZWQgaW50JyBhcyAndW5zaWduZWQnCi0gIHJldHVybiByZS5z
dWIocid1bnNpZ25lZCBpbnQnLCAndW5zaWduZWQnLCB0ZXN0X291dHB1dCkKLQotCi1kZWYgTm9y
bWFsaXplVG9DdXJyZW50UGxhdGZvcm0odGVzdF9vdXRwdXQpOgotICAiIiJOb3JtYWxpemVzIHBs
YXRmb3JtIHNwZWNpZmljIG91dHB1dCBkZXRhaWxzIGZvciBlYXNpZXIgY29tcGFyaXNvbi4iIiIK
LQotICBpZiBJU19XSU5ET1dTOgotICAgICMgUmVtb3ZlcyB0aGUgY29sb3IgaW5mb3JtYXRpb24g
dGhhdCBpcyBub3QgcHJlc2VudCBvbiBXaW5kb3dzLgotICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3Vi
KCdceDFiXFxbKDA7M1xkKT9tJywgJycsIHRlc3Rfb3V0cHV0KQotICAgICMgQ2hhbmdlcyBmYWls
dXJlIG1lc3NhZ2UgaGVhZGVycyBpbnRvIHRoZSBXaW5kb3dzIGZvcm1hdC4KLSAgICB0ZXN0X291
dHB1dCA9IHJlLnN1YihyJzogRmFpbHVyZVxuJywgcic6IGVycm9yOiAnLCB0ZXN0X291dHB1dCkK
LSAgICAjIENoYW5nZXMgZmlsZShsaW5lX251bWJlcikgdG8gZmlsZTpsaW5lX251bWJlci4KLSAg
ICB0ZXN0X291dHB1dCA9IHJlLnN1YihyJygoXHd8XC4pKylcKChcZCspXCk6JywgcidcMTpcMzon
LCB0ZXN0X291dHB1dCkKLQotICByZXR1cm4gdGVzdF9vdXRwdXQKLQotCi1kZWYgUmVtb3ZlVGVz
dENvdW50cyhvdXRwdXQpOgotICAiIiJSZW1vdmVzIHRlc3QgY291bnRzIGZyb20gYSBHb29nbGUg
VGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LiIiIgotCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xkKyB0ZXN0
cz8sIGxpc3RlZCBiZWxvdycsCi0gICAgICAgICAgICAgICAgICAnPyB0ZXN0cywgbGlzdGVkIGJl
bG93Jywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcZCsgRkFJTEVEIFRFU1RTJywKLSAg
ICAgICAgICAgICAgICAgICc/IEZBSUxFRCBURVNUUycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUu
c3ViKHInXGQrIHRlc3RzPyBmcm9tIFxkKyB0ZXN0IGNhc2VzPycsCi0gICAgICAgICAgICAgICAg
ICAnPyB0ZXN0cyBmcm9tID8gdGVzdCBjYXNlcycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3Vi
KHInXGQrIHRlc3RzPyBmcm9tIChbYS16QS1aX10pJywKLSAgICAgICAgICAgICAgICAgIHInPyB0
ZXN0cyBmcm9tIFwxJywgb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInXGQrIHRlc3RzP1wuJywg
Jz8gdGVzdHMuJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0
cHV0LCBwYXR0ZXJuKToKLSAgIiIiUmVtb3ZlcyBvdXRwdXQgb2Ygc3BlY2lmaWVkIHRlc3RzIGZy
b20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mgb3V0cHV0LgotCi0gIFRoaXMgZnVuY3Rpb24gc3Ry
aXBzIG5vdCBvbmx5IHRoZSBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgYSB0ZXN0IGJ1dCBhbHNv
Ci0gIGFsbCBvdXRwdXQgaW4gYmV0d2Vlbi4KLQotICBBcmdzOgotICAgIHRlc3Rfb3V0cHV0OiAg
ICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSB0ZXN0IG91dHB1dC4KLSAgICBwYXR0ZXJuOiAg
ICAgICAgICAgQSByZWdleCBzdHJpbmcgdGhhdCBtYXRjaGVzIG5hbWVzIG9mIHRlc3QgY2FzZXMg
b3IKLSAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgdG8gcmVtb3ZlLgotCi0gIFJldHVybnM6
Ci0gICAgQ29udGVudHMgb2YgdGVzdF9vdXRwdXQgd2l0aCB0ZXN0cyB3aG9zZSBuYW1lcyBtYXRj
aCBwYXR0ZXJuIHJlbW92ZWQuCi0gICIiIgotCi0gIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKAotICAg
ICAgcicuKlxbIFJVTiAgICAgIFxdIC4qJXMoLnxcbikqP1xbKCAgRkFJTEVEICB8ICAgICAgIE9L
IClcXSAuKiVzLipcbicgJSAoCi0gICAgICAgICAgcGF0dGVybiwgcGF0dGVybiksCi0gICAgICAn
JywKLSAgICAgIHRlc3Rfb3V0cHV0KQotICByZXR1cm4gcmUuc3ViKHInLiolcy4qXG4nICUgcGF0
dGVybiwgJycsIHRlc3Rfb3V0cHV0KQotCi0KLWRlZiBOb3JtYWxpemVPdXRwdXQob3V0cHV0KToK
LSAgIiIiTm9ybWFsaXplcyBvdXRwdXQgKHRoZSBvdXRwdXQgb2YgZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmV4ZSkuIiIiCi0KLSAgb3V0cHV0ID0gVG9Vbml4TGluZUVuZGluZyhvdXRwdXQpCi0gIG91dHB1
dCA9IFJlbW92ZUxvY2F0aW9ucyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZVN0YWNrVHJhY2VE
ZXRhaWxzKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlVGltZShvdXRwdXQpCi0gIHJldHVybiBv
dXRwdXQKLQotCi1kZWYgR2V0U2hlbGxDb21tYW5kT3V0cHV0KGVudl9jbWQpOgotICAiIiJSdW5z
IGEgY29tbWFuZCBpbiBhIHN1Yi1wcm9jZXNzLCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IGluIGEg
c3RyaW5nLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogVGhlIHNoZWxsIGNvbW1hbmQuIEEgMi10
dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0gICAgICAgICAgICAgZW52
aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCwgYW5kIGVsZW1lbnQgMSBpcyBhIHN0cmluZyB3aXRo
Ci0gICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KLQotICBSZXR1cm5zOgot
ICAgIEEgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQncyBjb21iaW5lZCBzdGFuZGFyZCBhbmQgZGlh
Z25vc3RpYyBvdXRwdXQuCi0gICIiIgotCi0gICMgU3Bhd25zIGNtZCBpbiBhIHN1Yi1wcm9jZXNz
LCBhbmQgZ2V0cyBpdHMgc3RhbmRhcmQgSS9PIGZpbGUgb2JqZWN0cy4KLSAgIyBTZXQgYW5kIHNh
dmUgdGhlIGVudmlyb25tZW50IHByb3Blcmx5LgotICBlbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5
KCkKLSAgZW52aXJvbi51cGRhdGUoZW52X2NtZFswXSkKLSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2VzcyhlbnZfY21kWzFdLCBlbnY9ZW52aXJvbikKLQotICByZXR1cm4gcC5vdXRwdXQK
LQotCi1kZWYgR2V0Q29tbWFuZE91dHB1dChlbnZfY21kKToKLSAgIiIiUnVucyBhIGNvbW1hbmQg
YW5kIHJldHVybnMgaXRzIG91dHB1dCB3aXRoIGFsbCBmaWxlIGxvY2F0aW9uCi0gIGluZm8gc3Ry
aXBwZWQgb2ZmLgotCi0gIEFyZ3M6Ci0gICAgZW52X2NtZDogIFRoZSBzaGVsbCBjb21tYW5kLiBB
IDItdHVwbGUgd2hlcmUgZWxlbWVudCAwIGlzIGEgZGljdCBvZiBleHRyYQotICAgICAgICAgICAg
ICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEgc3RyaW5n
IHdpdGgKLSAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYW5kIGFueSBmbGFncy4KLSAgIiIiCi0K
LSAgIyBEaXNhYmxlcyBleGNlcHRpb24gcG9wLXVwcyBvbiBXaW5kb3dzLgotICBlbnZpcm9uLCBj
bWRsaW5lID0gZW52X2NtZAotICBlbnZpcm9uID0gZGljdChlbnZpcm9uKSAgIyBFbnN1cmVzIHdl
IGFyZSBtb2RpZnlpbmcgYSBjb3B5LgotICBlbnZpcm9uW0NBVENIX0VYQ0VQVElPTlNfRU5WX1ZB
Ul9OQU1FXSA9ICcxJwotICByZXR1cm4gTm9ybWFsaXplT3V0cHV0KEdldFNoZWxsQ29tbWFuZE91
dHB1dCgoZW52aXJvbiwgY21kbGluZSkpKQotCi0KLWRlZiBHZXRPdXRwdXRPZkFsbENvbW1hbmRz
KCk6Ci0gICIiIlJldHVybnMgY29uY2F0ZW5hdGVkIG91dHB1dCBmcm9tIHNldmVyYWwgcmVwcmVz
ZW50YXRpdmUgY29tbWFuZHMuIiIiCi0KLSAgcmV0dXJuIChHZXRDb21tYW5kT3V0cHV0KENPTU1B
TkRfV0lUSF9DT0xPUikgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRI
X1RJTUUpICsKLSAgICAgICAgICBHZXRDb21tYW5kT3V0cHV0KENPTU1BTkRfV0lUSF9ESVNBQkxF
RCkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9XSVRIX1NIQVJESU5HKSkK
LQotCi10ZXN0X2xpc3QgPSBHZXRTaGVsbENvbW1hbmRPdXRwdXQoQ09NTUFORF9MSVNUX1RFU1RT
KQotU1VQUE9SVFNfREVBVEhfVEVTVFMgPSAnRGVhdGhUZXN0JyBpbiB0ZXN0X2xpc3QKLVNVUFBP
UlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVkVGVzdCcgaW4gdGVzdF9saXN0Ci1TVVBQT1JUU19USFJF
QURTID0gJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnIGluIHRlc3RfbGlzdAotU1VQUE9S
VFNfU1RBQ0tfVFJBQ0VTID0gRmFsc2UKLQotQ0FOX0dFTkVSQVRFX0dPTERFTl9GSUxFID0gKFNV
UFBPUlRTX0RFQVRIX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBP
UlRTX1RZUEVEX1RFU1RTIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUFBPUlRT
X1RIUkVBRFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IElTX1dJTkRPV1Mp
Ci0KLWNsYXNzIEdUZXN0T3V0cHV0VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAg
ZGVmIFJlbW92ZVVuc3VwcG9ydGVkVGVzdHMoc2VsZiwgdGVzdF9vdXRwdXQpOgotICAgIGlmIG5v
dCBTVVBQT1JUU19ERUFUSF9URVNUUzoKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hp
bmdUZXN0cyh0ZXN0X291dHB1dCwgJ0RlYXRoVGVzdCcpCi0gICAgaWYgbm90IFNVUFBPUlRTX1RZ
UEVEX1RFU1RTOgotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rf
b3V0cHV0LCAnVHlwZWRUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0gUmVtb3ZlTWF0Y2hpbmdU
ZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVkRGVhdGhUZXN0JykKLSAgICAgIHRlc3Rfb3V0cHV0ID0g
UmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwgJ1R5cGVQYXJhbURlYXRoVGVzdCcpCi0g
ICAgaWYgbm90IFNVUFBPUlRTX1RIUkVBRFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1h
dGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0V4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QnKQotICAgICAgdGVzdF9vdXRw
dXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRl
c3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXb3Jrc0NvbmN1cnJl
bnRseScpCi0gICAgaWYgbm90IFNVUFBPUlRTX1NUQUNLX1RSQUNFUzoKLSAgICAgIHRlc3Rfb3V0
cHV0ID0gUmVtb3ZlU3RhY2tUcmFjZXModGVzdF9vdXRwdXQpCi0KLSAgICByZXR1cm4gdGVzdF9v
dXRwdXQKLQotICBkZWYgdGVzdE91dHB1dChzZWxmKToKLSAgICBvdXRwdXQgPSBHZXRPdXRwdXRP
ZkFsbENvbW1hbmRzKCkKLQotICAgIGdvbGRlbl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3In
KQotICAgICMgQSBtaXMtY29uZmlndXJlZCBzb3VyY2UgY29udHJvbCBzeXN0ZW0gY2FuIGNhdXNl
IFxyIGFwcGVhciBpbiBFT0wKLSAgICAjIHNlcXVlbmNlcyB3aGVuIHdlIHJlYWQgdGhlIGdvbGRl
biBmaWxlIGlycmVzcGVjdGl2ZSBvZiBhbiBvcGVyYXRpbmcKLSAgICAjIHN5c3RlbSB1c2VkLiBU
aGVyZWZvcmUsIHdlIG5lZWQgdG8gc3RyaXAgdGhvc2UgXHIncyBmcm9tIG5ld2xpbmVzCi0gICAg
IyB1bmNvbmRpdGlvbmFsbHkuCi0gICAgZ29sZGVuID0gVG9Vbml4TGluZUVuZGluZyhnb2xkZW5f
ZmlsZS5yZWFkKCkpCi0gICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotCi0gICAgIyBXZSB3YW50IHRo
ZSB0ZXN0IHRvIHBhc3MgcmVnYXJkbGVzcyBvZiBjZXJ0YWluIGZlYXR1cmVzIGJlaW5nCi0gICAg
IyBzdXBwb3J0ZWQgb3Igbm90LgotCi0gICAgIyBXZSBzdGlsbCBoYXZlIHRvIHJlbW92ZSB0eXBl
IG5hbWUgc3BlY2lmaWNzIGluIGFsbCBjYXNlcy4KLSAgICBub3JtYWxpemVkX2FjdHVhbCA9IFJl
bW92ZVR5cGVJbmZvRGV0YWlscyhvdXRwdXQpCi0gICAgbm9ybWFsaXplZF9nb2xkZW4gPSBSZW1v
dmVUeXBlSW5mb0RldGFpbHMoZ29sZGVuKQotCi0gICAgaWYgQ0FOX0dFTkVSQVRFX0dPTERFTl9G
SUxFOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemVkX2dvbGRlbiwgbm9ybWFsaXpl
ZF9hY3R1YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICdcbicuam9pbihkaWZmbGliLnVuaWZp
ZWRfZGlmZigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuLnNw
bGl0KCdcbicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwu
c3BsaXQoJ1xuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZ29sZGVuJywgJ2FjdHVh
bCcpKSkKLSAgICBlbHNlOgotICAgICAgbm9ybWFsaXplZF9hY3R1YWwgPSBOb3JtYWxpemVUb0N1
cnJlbnRQbGF0Zm9ybSgKLSAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKG5vcm1hbGl6ZWRfYWN0
dWFsKSkKLSAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuID0gTm9ybWFsaXplVG9DdXJyZW50UGxhdGZv
cm0oCi0gICAgICAgICAgUmVtb3ZlVGVzdENvdW50cyhzZWxmLlJlbW92ZVVuc3VwcG9ydGVkVGVz
dHMobm9ybWFsaXplZF9nb2xkZW4pKSkKLQotICAgICAgIyBUaGlzIGNvZGUgaXMgdmVyeSBoYW5k
eSB3aGVuIGRlYnVnZ2luZyBnb2xkZW4gZmlsZSBkaWZmZXJlbmNlczoKLSAgICAgIGlmIG9zLmdl
dGVudignREVCVUdfR1RFU1RfT1VUUFVUX1RFU1QnKToKLSAgICAgICAgb3Blbihvcy5wYXRoLmpv
aW4oCi0gICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLAotICAgICAg
ICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3JtYWxpemVkX2FjdHVhbC50eHQnKSwgJ3diJyku
d3JpdGUoCi0gICAgICAgICAgICAgICAgbm9ybWFsaXplZF9hY3R1YWwpCi0gICAgICAgIG9wZW4o
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIo
KSwKLSAgICAgICAgICAgICdfZ3Rlc3Rfb3V0cHV0X3Rlc3Rfbm9ybWFsaXplZF9nb2xkZW4udHh0
JyksICd3YicpLndyaXRlKAotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRfZ29sZGVuKQotCi0g
ICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVuLCBub3JtYWxpemVkX2FjdHVh
bCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBpZiBzeXMuYXJndlsxOl0gPT0g
W0dFTkdPTERFTl9GTEFHXToKLSAgICBpZiBDQU5fR0VORVJBVEVfR09MREVOX0ZJTEU6Ci0gICAg
ICBvdXRwdXQgPSBHZXRPdXRwdXRPZkFsbENvbW1hbmRzKCkKLSAgICAgIGdvbGRlbl9maWxlID0g
b3BlbihHT0xERU5fUEFUSCwgJ3diJykKLSAgICAgIGdvbGRlbl9maWxlLndyaXRlKG91dHB1dCkK
LSAgICAgIGdvbGRlbl9maWxlLmNsb3NlKCkKLSAgICBlbHNlOgotICAgICAgbWVzc2FnZSA9ICgK
LSAgICAgICAgICAiIiJVbmFibGUgdG8gd3JpdGUgYSBnb2xkZW4gZmlsZSB3aGVuIGNvbXBpbGVk
IGluIGFuIGVudmlyb25tZW50Ci10aGF0IGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSByZXF1aXJl
ZCBmZWF0dXJlcyAoZGVhdGggdGVzdHMsIHR5cGVkIHRlc3RzLAotYW5kIG11bHRpcGxlIHRocmVh
ZHMpLiAgUGxlYXNlIGdlbmVyYXRlIHRoZSBnb2xkZW4gZmlsZSB1c2luZyBhIGJpbmFyeSBidWls
dAotd2l0aCB0aG9zZSBmZWF0dXJlcyBlbmFibGVkLiIiIikKLQotICAgICAgc3lzLnN0ZGVyci53
cml0ZShtZXNzYWdlKQotICAgICAgc3lzLmV4aXQoMSkKLSAgZWxzZToKLSAgICBndGVzdF90ZXN0
X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9vdXRwdXRf
dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA3MGE5ZjI2ZmU1MDk4OGY4MGIzYzY3ZDlkMDQ2YTJi
NWJmOTllNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0x
LDEwNjIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBnZW5lcmF0ZSBHb29nbGUg
VGVzdCBvdXRwdXQgdW5kZXIKLS8vIHZhcmlvdXMgY29uZGl0aW9ucy4gIFRoZSBvdXRwdXQgd2ls
bCB0aGVuIGJlIHZlcmlmaWVkIGJ5Ci0vLyBndGVzdF9vdXRwdXRfdGVzdC5weSB0byBlbnN1cmUg
dGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCi0vLyBkZXNpcmVkIG1lc3NhZ2VzLiAgVGhl
cmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQgVE8KLS8vIEZBSUwuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQot
I2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLXVzaW5nIHRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLQot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHBvc2l4ID0gOjp0
ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci0KLS8vIFRlc3RzIGNhdGNoaW5nIGZhdGFsIGZhaWx1
cmVzLgotCi0vLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCi12b2lk
IFRlc3RFcTEoaW50IHgpIHsKLSAgQVNTRVJUX0VRKDEsIHgpOwotfQotCi0vLyBUaGlzIGZ1bmN0
aW9uIGNhbGxzIGEgdGVzdCBzdWJyb3V0aW5lLCBjYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJlIGl0
Ci0vLyBnZW5lcmF0ZXMsIGFuZCB0aGVuIHJldHVybnMgZWFybHkuCi12b2lkIFRyeVRlc3RTdWJy
b3V0aW5lKCkgewotICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWllbGRzIGEgZmF0YWwg
ZmFpbHVyZS4KLSAgVGVzdEVxMSgyKTsKLQotICAvLyBDYXRjaGVzIHRoZSBmYXRhbCBmYWlsdXJl
IGFuZCBhYm9ydHMgdGhlIHRlc3QuCi0gIC8vCi0gIC8vIFRoZSB0ZXN0aW5nOjpUZXN0OjogcHJl
Zml4IGlzIG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcKLSAgLy8gSGFzRmF0YWxGYWlsdXJlKCkgb3V0
c2lkZSBvZiBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotICBpZiAodGVzdGluZzo6
VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJZiB3ZSBnZXQgaGVyZSwg
c29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJl
YWNoZWQuIjsKLX0KLQotVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3QxKSB7Ci19Ci0KLVRF
U1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MikgewotfQotCi0vLyBUZXN0cyB0aGF0IHBhcmFt
ZXRlcnMgb2YgZmFpbGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBwcmludGVkIGluIHRoZQot
Ly8gZmFpbGluZyB0ZXN0IHN1bW1hcnkuCi1jbGFzcyBGYWlsaW5nUGFyYW1UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotVEVTVF9QKEZhaWxpbmdQYXJhbVRl
c3QsIEZhaWxzKSB7Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsKLX0KLQotLy8gVGhpcyBn
ZW5lcmF0ZXMgYSB0ZXN0IHdoaWNoIHdpbGwgZmFpbC4gR29vZ2xlIFRlc3QgaXMgZXhwZWN0ZWQg
dG8gcHJpbnQKLS8vIGl0cyBwYXJhbWV0ZXIgd2hlbiBpdCBvdXRwdXRzIHRoZSBsaXN0IG9mIGFs
bCBmYWlsZWQgdGVzdHMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludGluZ0ZhaWxpbmdQ
YXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBGYWlsaW5nUGFyYW1UZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKDIpKTsKLQotc3RhdGljIGNvbnN0IGNo
YXIga0dvbGRlblN0cmluZ1tdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsKLQotVEVTVChOb25m
YXRhbEZhaWx1cmVUZXN0LCBFc2NhcGVzU3RyaW5nT3BlcmFuZHMpIHsKLSAgc3RkOjpzdHJpbmcg
YWN0dWFsID0gImFjdHVhbCBcInN0cmluZ1wiIjsKLSAgRVhQRUNUX0VRKGtHb2xkZW5TdHJpbmcs
IGFjdHVhbCk7Ci0KLSAgY29uc3QgY2hhciogZ29sZGVuID0ga0dvbGRlblN0cmluZzsKLSAgRVhQ
RUNUX0VRKGdvbGRlbiwgYWN0dWFsKTsKLX0KLQotVEVTVChOb25mYXRhbEZhaWx1cmVUZXN0LCBE
aWZmRm9yTG9uZ1N0cmluZ3MpIHsKLSAgc3RkOjpzdHJpbmcgZ29sZGVuX3N0cihrR29sZGVuU3Ry
aW5nLCBzaXplb2Yoa0dvbGRlblN0cmluZykgLSAxKTsKLSAgRVhQRUNUX0VRKGdvbGRlbl9zdHIs
ICJMaW5lIDIiKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEg
c3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWlsdXJlSW5TdWJyb3V0
aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAx
KVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcg
YSBmYXRhbCBmYWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNUKEZhdGFsRmFpbHVy
ZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0gIC8vIENhbGxzIGEg
c3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBUcnlUZXN0U3Vicm91
dGluZSgpOwotCi0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
dGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVyZSgpIGluc2lkZSBh
IFRFU1QsIFRFU1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVzdGluZzo6VGVzdDo6
IHByZWZpeCBpcyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsK
LQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwg
IlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVzdHMgSGFzRmF0YWxG
YWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChGYXRhbEZhaWx1cmVU
ZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxzZSk7ICAvLyBHZW5l
cmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNGYXRhbEZhaWx1cmUo
KSk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBpbnRlcmxlYXZpbmcg
dXNlciBsb2dnaW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVTVChMb2dnaW5nVGVz
dCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3RhdGljIGNvbnN0IGlu
dCBhWzRdID0gewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykgewotICAgIHByaW50
ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwotICB9Ci19Ci0KLS8v
IFRlc3RzIHRoZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZv
ciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNlKGludCBuKSB7Ci0g
IEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0vLyBBbm90aGVyIGhl
bHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lkIFN1YldpdGhUcmFj
ZShpbnQgbikgewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJuID0gIiA8
PCBuKTsKLQotICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVE
X1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIE9i
ZXlzU2NvcGVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICAvLyBU
aGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgpIGlzIGludm9rZWQu
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJFeHBlY3RlZCB0
cmFjZSIpOwotICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1cmUgaW4gdGhlIGN1
cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2UuCi0gICAgQUREX0ZB
SUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhhdmUgYSB0
cmFjZS4iOwotICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMgdGhlIHNjb3BlIG9m
IHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5vIHRyYWNlIGFnYWlu
LgotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91
bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NPUEVEX1RSQUNFIHdv
cmtzIGluc2lkZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5Mb29wKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3IgKGludCBpID0gMTsg
aSA8PSAyOyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgpIDw8ICJp
ID0gIiA8PCBpKTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQotfQotCi0vLyBUZXN0
cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1URVNUKFNDT1BFRF9U
UkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZh
aWwpXG4iKTsKLQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRFU1QoU0NPUEVEX1RS
QUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQgdG8gZmFpbClcbiIp
OwotCi0gIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQgYSBtZXNzYWdlLgot
Ci0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBTQ09QRURf
VFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChTQ09QRURfVFJBQ0VU
ZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsK
LQotICBTQ09QRURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEuIjsK
LQotICBTQ09QRURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5k
IEIuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKLSAgICAgICAgICAgICAg
ICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0gIH0KLQotICBTQ09Q
RURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLCBhbmQgc2hvdWxkICIKLSAgICAgICAgICAgICAgICA8PCAiY29udGFpbiB0cmFjZSBwb2lu
dCBBLCBCLCBhbmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotLy8gVGVzdHMg
dGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5IGZyb20gbXVsdGlw
bGUKLS8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5LgotCi0vLyBIZXJl
J3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhlIHRlc3Q6Ci0vLwot
Ly8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQgQiAoc3Bhd25lZCkK
LS8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAgICAgICAgfAotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAgICB8IFNDT1BFRF9U
UkFDRSgiVHJhY2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBn
ZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBub3RpZmllcyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFDRSgiVHJhY2UgQSIp
OyAgICAgICB8IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVyZSAjMiAgICAgICAg
ICAgfAotLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAotLy8gICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVyYXRlcyBmYWlsdXJl
ICMzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYWNlIEIgZGllcwot
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAj
NAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3RpZmllcyBuMwotLy8g
ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAgICB8IGZpbmlzaGVz
Ci0vLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAgIGdlbmVyYXRlcyBm
YWlsdXJlICM2ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2FpdHMgZm9yIHRocmVh
ZCBCIHRvIGZpbmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAgTm90aWZpY2F0aW9u
IG4xOwotICBOb3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsKLX07Ci0KLXN0YXRp
YyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hlY2tfcG9pbnRzKSB7
Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERfRkFJTFVSRSgpCi0g
ICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBC
IGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0gICAgY2hlY2tfcG9p
bnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAg
ICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJhY2UgQSAmIEIgYm90
aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFERF9GQUlMVVJFKCkK
LSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBB
IGFsaXZlKS4iOwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQotCi1URVNUKFNDT1BF
RF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyA2
IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRzOwotICBUaHJlYWRX
aXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29wZWRUcmFjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19wb2ludHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgY2hlY2tfcG9pbnRz
Lm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJUcmFj
ZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAj
MiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0gICAgY2hlY2tfcG9p
bnRzLm4yLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9yTm90aWZpY2F0aW9u
KCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM1
IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAvLyBUcmFjZSBBIGRp
ZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzYg
KGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVkVGVzdHNXYXJuaW5n
VGVzdCwKLSAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dh
cm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxseSBlbXB0eS4gIEl0
cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRoZSAtLWd0ZXN0X2Fs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0aGUgIllPVSBIQVZF
IDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAgLy8gdGhlIHRlc3Qg
b3V0cHV0LgotfQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNpZGUgb2YgVEVTVCBh
bmQgVEVTVF9GLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28gZmFpbHVyZXMgaW50
ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRoZSBub24tdGVzdCBw
YXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy5cblxuIik7Ci0g
IEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQotCi0vLyBSdW5zIGFs
bCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1pbnQgUnVuQWxsVGVz
dHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotCi0v
LyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29uc3RydWN0b3IuCi1j
bGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25z
dHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFpbHVyZXMpXG4iKTsK
LSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3Ry
dWN0b3JUZXN0KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzUs
IGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLCBpbiBTZXRV
cCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsKLSAgfQotfTsKLQot
VEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCwgRmFpbHVyZUlu
Q29uc3RydWN0b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywg
aW4gdGhlIHRlc3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUg
Zml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVj
dG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZhdGFsRmFp
bHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYoIihleHBlY3Rpbmcg
MiBmYWlsdXJlcylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRhbEZhaWx1cmVJbkZp
eHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBn
ZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8
PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiBUZWFyRG93
bigpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwg
YXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAgICA8PCAiaGFkIGEg
ZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSBwcml2YXRlOgotICB2b2lkIEluaXQoKSB7Ci0gICAg
RkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGMndG9y
LiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihGYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRl
c3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNU
RUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBib2R5LiAgIgotICAgICAgICAgICAgICAgIDw8ICJXZSBz
aG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3IgIgotICAgICAg
ICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8vIFRlc3RzIG5vbi1m
YXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgpLgotY2xhc3MgTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIH5Ob25G
YXRhbEZhaWx1cmVJblNldFVwVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgNCBmYWlsdXJlcylcbiIp
OwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCku
IjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZv
aWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gdGhl
IHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoTm9uRmF0YWxGYWlsdXJl
SW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uIjsKLX0KLQotLy8gVGVzdHMgZmF0YWwgZmFp
bHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNzIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsKLSAgICBGQUlMKCkg
PDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZB
SUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4i
OwotICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNl
dFVwKSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRoZSB0ZXN0IGZ1bmN0
aW9uLiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgU2V0VXAo
KSBmYWlsZWQuIjsKLX0KLQotVEVTVChBZGRGYWlsdXJlQXRUZXN0LCBNZXNzYWdlQ29udGFpbnNT
cGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcikgewotICBBRERfRkFJTFVSRV9BVCgiZm9vLmNjIiwg
NDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYyI7Ci19Ci0KLSNpZiBHVEVTVF9JU19U
SFJFQURTQUZFCi0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGllLgotdm9pZCBEaWVJ
Zihib29sIHNob3VsZF9kaWUpIHsKLSAgR1RFU1RfQ0hFQ0tfKCFzaG91bGRfZGllKSA8PCAiIC0g
ZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKLX0KLQotLy8gVGVzdHMgcnVubmluZyBkZWF0aCB0ZXN0
cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0KLS8vIFVzZWQgZm9yIGNvb3JkaW5hdGlv
biBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUgc3Bhd24gdGhyZWFkLgotc3RydWN0IFNwYXduVGhy
ZWFkTm90aWZpY2F0aW9ucyB7Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucygpIHt9Ci0KLSAg
Tm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9zdGFydGVkOwotICBOb3RpZmljYXRpb24gc3Bhd25f
dGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKTsKLX07Ci0KLS8vIFRoZSBm
dW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0aGUgdGhyZWFkIHNwYXduIGJ5IHRoZQotLy8gTXVs
dGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4KLXN0YXRpYyB2b2lkIFRocmVhZFJvdXRpbmUoU3Bh
d25UaHJlYWROb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKSB7Ci0gIC8vIFNpZ25hbHMgdGhl
IG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHN0YXJ0ZWQuCi0gIG5vdGlmaWNhdGlv
bnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5vdGlmeSgpOwotCi0gIC8vIFdhaXRzIGZvciBwZXJt
aXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgbm90aWZpY2F0aW9ucy0+
c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci19Ci0K
LS8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRlc3QsIGJ1dCBpdCdzIG5vdCBuYW1lZCB3aXRoIGEg
RGVhdGhUZXN0Ci0vLyBzdWZmaXguICBJdCBzdGFydHMgdGhyZWFkcyB3aGljaCBtaWdodCBpbnRl
cmZlcmUgd2l0aCBsYXRlcgotLy8gZGVhdGggdGVzdHMsIHNvIGl0IG11c3QgcnVuIGFmdGVyIGFs
bCBvdGhlciBkZWF0aCB0ZXN0cy4KLWNsYXNzIERlYXRoVGVzdEFuZE11bHRpVGhyZWFkc1Rlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBTdGFydHMgYSB0aHJl
YWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdpbi4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewot
ICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxTcGF3blRocmVhZE5vdGlmaWNh
dGlvbnMqPigKLSAgICAgICAgJlRocmVhZFJvdXRpbmUsICZub3RpZmljYXRpb25zXywgTlVMTCkp
OwotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9zdGFydGVkLldhaXRGb3JOb3RpZmlj
YXRpb24oKTsKLSAgfQotICAvLyBUZWxscyB0aGUgdGhyZWFkIHRvIGZpbmlzaCwgYW5kIHJlYXBz
IGl0LgotICAvLyBEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5
IGluIHVzZSwKLSAgLy8gYSBtYW5hZ2VyIHRocmVhZCBtaWdodCBzdGlsbCBiZSBsZWZ0IHJ1bm5p
bmcgdGhhdCB3aWxsIGludGVyZmVyZQotICAvLyB3aXRoIGxhdGVyIGRlYXRoIHRlc3RzLiAgVGhp
cyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMgY2xhc3MKLSAgLy8gY2xlYW5zIHVwIGFmdGVyIGl0
c2VsZiBhcyBiZXN0IGl0IGNhbi4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIG5v
dGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuTm90aWZ5KCk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyBub3RpZmljYXRpb25zXzsK
LSAgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPFNwYXduVGhy
ZWFkTm90aWZpY2F0aW9ucyo+ID4KLSAgICAgIHRocmVhZF87Ci19OwotCi0jZW5kaWYgIC8vIEdU
RVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVRlc3QgdGVzdCBjYXNl
IHZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2lsbCBmYWlsIGEKLS8vIHRlc3QgaWYgaXQgdXNl
cyBhIGRpZmZlcmVudCBmaXh0dXJlIGNsYXNzIHRoYW4gd2hhdCBvdGhlciB0ZXN0cyBpbgotLy8g
dGhlIHNhbWUgdGVzdCBjYXNlIHVzZS4gIEl0IGRlbGliZXJhdGVseSBjb250YWlucyB0d28gZml4
dHVyZQotLy8gY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRlZmluZWQgaW4gZGlmZmVy
ZW50IG5hbWVzcGFjZXMuCi0KLS8vIFRoZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1l
VGVzdCB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdAotLy8gd2hlbiB0aGUgdXNlciBkZWZpbmVzIHR3
byB0ZXN0cyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lIEFORAotLy8gc2FtZSB0ZXN0IG5h
bWUgKGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcyksIHRoZSBzZWNvbmQgdGVzdCB3aWxsCi0v
LyBmYWlsLgotCi1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VUZXN0
LCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRl
c3QsIFNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQotCi1jbGFzcyBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRF
U1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAgICAgICBUaGVTZWNv
bmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFtZXNwYWNlIGZvbwot
Ci1uYW1lc3BhY2UgYmFyIHsKLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIHRlc3RzIGFyZSBleHBl
Y3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUKLS8vIGdvbGRlbiBmaWxlIHRvIGNoZWNrIHRo
YXQgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9G
KE1peGVkVXBUZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsKSB7fQotVEVTVF9GKE1peGVkVXBU
ZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsVG9vKSB7fQotCi1jbGFzcyBNaXhlZFVwVGVzdENh
c2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLS8v
IEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0
aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1U
RVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0gICAgICAgVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5hbWVzcGFjZSBiYXIK
LQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdCBjYXNlcyB2ZXJpZnkgdGhhdCBHb29nbGUgVGVz
dCBjYXRjaGVzIHRoZSB1c2VyCi0vLyBlcnJvciBvZiBtaXhpbmcgVEVTVCBhbmQgVEVTVF9GIGlu
IHRoZSBzYW1lIHRlc3QgY2FzZS4gIFRoZSBmaXJzdAotLy8gdGVzdCBjYXNlIGNoZWNrcyB0aGUg
c2NlbmFyaW8gd2hlcmUgVEVTVF9GIGFwcGVhcnMgYmVmb3JlIFRFU1QsIGFuZAotLy8gdGhlIHNl
Y29uZCBvbmUgY2hlY2tzIHdoZXJlIFRFU1QgYXBwZWFycyBiZWZvcmUgVEVTVF9GLgotCi1jbGFz
cyBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci19OwotCi1URVNUX0YoVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNl
LCBEZWZpbmVkVXNpbmdURVNUX0YpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5
IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0
ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUKFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9z
YW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwpIHt9Ci0KLWNsYXNz
IFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLX07Ci0KLVRFU1QoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLCBE
ZWZpbmVkVXNpbmdURVNUKSB7fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0
aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8gZ2VuZXJhdGVzIHRo
ZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9GKFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCkgewotfQotCi0vLyBV
c2VkIGZvciB0ZXN0aW5nIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgYW5kIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkuCi1pbnQgZ2xvYmFsX2ludGVnZXIgPSAwOwotCi0vLyBUZXN0cyB0aGF0IEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwgdmFyaWFibGVzLgot
VEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJs
ZXMpIHsKLSAgZ2xvYmFsX2ludGVnZXIgPSAwOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
Ci0gICAgRVhQRUNUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFs
IGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBsb2Nh
bCB2YXJpYWJsZXMKLS8vIChzdGF0aWMgb3Igbm90KS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMpIHsKLSAgaW50IG0gPSAwOwotICBz
dGF0aWMgaW50IG47Ci0gIG4gPSAxOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAg
RVhQRUNUX0VRKG0sIG4pIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iOwotICB9LCAi
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4YWN0bHkKLS8vIG9u
ZSBub24tZmF0YWwgZmFpbHVyZSBhbmQgbm8gZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZSkg
ewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhw
ZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFp
bHMgd2hlbiB0aGVyZSBpcyBubwotLy8gbm9uLWZhdGFsIGZhaWx1cmUuCi1URVNUKEV4cGVjdE5v
bmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZSkgewot
ICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCi0vLyBub24tZmF0YWwgZmFpbHVyZXMu
Ci1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlQXJlVHdvTm9u
ZmF0YWxGYWlsdXJlcykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3Rl
ZCBub24tZmF0YWwgZmFpbHVyZSAxLiI7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUgMi4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG9uZSBmYXRhbAotLy8g
ZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVJ
c09uZUZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQg
cmV0dXJucy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVt
ZW50UmV0dXJucykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICByZXR1cm47Ci0gIH0sICIiKTsKLX0KLQotI2lm
IEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCB0aHJvd3Mu
Ci1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFRocm93
cykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIHRyeSB7Ci0gICAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgICAgdGhyb3cgMDsKLSAgICB9LCAiIik7Ci0g
IH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKLSAgfQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBjYW4g
cmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qs
IENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcykgewotICBnbG9iYWxfaW50ZWdlciA9IDA7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBU1NFUlRfRVEoMSwgZ2xvYmFsX2ludGVnZXIp
IDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIHJl
ZmVyZW5jZSBsb2NhbCBzdGF0aWMKLS8vIHZhcmlhYmxlcy4KLVRFU1QoRXhwZWN0RmF0YWxGYWls
dXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMpIHsKLSAgc3RhdGljIGlu
dCBuOwotICBuID0gMTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgIEFTU0VSVF9FUSgw
LCBuKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhwZWN0ZWQgZmF0YWwg
ZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIHN1
Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQotLy8gb25lIGZhdGFsIGZhaWx1cmUgYW5kIG5v
IG5vbi1mYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBTdWNjZWVk
c1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsK
LSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVk
IGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vIGZhdGFsCi0vLyBmYWlsdXJlLgotVEVTVChFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1cmUpIHsKLSAg
cHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7Ci0gIH0sICIiKTsKLX0KLQotLy8gQSBoZWxwZXIgZm9yIGdlbmVyYXRpbmcgYSBmYXRhbCBm
YWlsdXJlLgotdm9pZCBGYXRhbEZhaWx1cmUoKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0
YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkg
ZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCi0vLyBmYXRhbCBmYWlsdXJlcy4KLVRFU1QoRXhwZWN0
RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoewotICAgIEZhdGFsRmFpbHVyZSgpOwotICAgIEZhdGFsRmFpbHVyZSgpOwotICB9LCAiIik7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRo
ZXJlIGlzIG9uZSBub24tZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsKLSAgcHJpbnRmKCIo
ZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0gICAg
QUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIiIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0
aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgcmV0dXJucy4KLVRFU1QoRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucykgewotICBwcmludGYoIihleHBl
Y3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICByZXR1
cm47Ci0gIH0sICIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3Rz
IHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVp
bmcKLS8vIHRlc3RlZCB0aHJvd3MuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxz
V2hlblN0YXRlbWVudFRocm93cykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxu
Iik7Ci0gIHRyeSB7Ci0gICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAgICAgdGhyb3cgMDsK
LSAgICB9LCAiIik7Ci0gIH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKLSAgfQotfQotCi0jZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3Rz
IHRoZSBvdXRwdXQgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLQotI2lmIEdURVNUX0hB
U19QQVJBTV9URVNUCi0KLXN0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29uc3QgdGVzdGluZzo6
VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKLSAgcmV0dXJuIGluZm8ucGFyYW07
Ci19Ci0KLWNsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0
ZDo6c3RyaW5nPiB7Ci19OwotCi1URVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNzKSB7Ci0gIEVYUEVD
VF9FUSgiYSIsIEdldFBhcmFtKCkpOwotfQotCi1URVNUX1AoUGFyYW1UZXN0LCBGYWlsdXJlKSB7
Ci0gIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0K
LQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgUGFyYW1UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6
VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1O
YW1lRnVuYyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotLy8gVGhpcyAj
aWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4KLSNpZiBHVEVTVF9I
QVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3Qs
IHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgU3VjY2Vzcykg
ewotICBFWFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNUKFR5cGVkVGVz
dCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlIjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBUaGlz
ICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RF
U1RfQ0FTRV9QKFR5cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1AoVHlwZWRUZXN0UCwgU3VjY2Vz
cykgewotICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQRURfVEVTVF9QKFR5
cGVkVGVzdFAsIEZhaWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFyYW0oKSkgPDwgIkV4
cGVjdGVkIGZhaWx1cmUiOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRl
c3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczx1bnNpZ25l
ZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBlcyk7Ci0KLSNlbmRp
ZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QK
LQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRoYXQgdGVzdHMgd2hv
c2UgdGVzdCBjYXNlCi0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJlIHJ1biBmaXJzdC4K
LQotVEVTVChBRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0jIGlmIEdURVNUX0hB
U19UWVBFRF9URVNUCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0
aGF0IHR5cGVkIHRlc3RzIHdob3NlIHRlc3QKLS8vIGNhc2UgbmFtZSBlbmRzIHdpdGggRGVhdGhU
ZXN0IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQVR5cGVk
RGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdHlwZWRlZiB0ZXN0aW5n
OjpUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwotVFlQRURfVEVTVF9DQVNFKEFUeXBl
ZERlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQotVFlQRURfVEVTVChBVHlwZWREZWF0aFRlc3Qs
IFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLSMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdv
bGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cwotLy8gd2hv
c2UgdGVzdCBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVuIGZpcnN0LgotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1EZWF0aFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChBVHlwZVBhcmFtRGVhdGhU
ZXN0KTsKLQotVFlQRURfVEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0
KSB7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFyYW1EZWF0aFRlc3Qs
IFNob3VsZFJ1bkZpcnN0KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEFU
eXBlUGFyYW1EZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUX1AKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBU
ZXN0cyB2YXJpb3VzIGZhaWx1cmUgY29uZGl0aW9ucyBvZgotLy8gRVhQRUNUX3ssTk9OfUZBVEFM
X0ZBSUxVUkV7LF9PTl9BTExfVEhSRUFEU30uCi1jbGFzcyBFeHBlY3RGYWlsdXJlVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6ICAvLyBNdXN0IGJlIHB1YmxpYyBhbmQgbm90
IHByb3RlY3RlZCBkdWUgdG8gYSBidWcgaW4gZysrIDMuNC4yLgotICBlbnVtIEZhaWx1cmVNb2Rl
IHsKLSAgICBGQVRBTF9GQUlMVVJFLAotICAgIE5PTkZBVEFMX0ZBSUxVUkUKLSAgfTsKLSAgc3Rh
dGljIHZvaWQgQWRkRmFpbHVyZShGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgaWYgKGZhaWx1
cmUgPT0gRkFUQUxfRkFJTFVSRSkgewotICAgICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gICAgfQotICB9Ci19OwotCi1URVNUX0YoRXhwZWN0RmFp
bHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgewotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWls
dXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4iKTsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1mYXRhbCBm
YWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJFeHBlY3RlZCBub24t
ZmF0YWwgIgotICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsKLSAgLy8gV3Jvbmcg
bWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAiU29tZSBvdGhlciBmYXRh
bCBmYWlsdXJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkLiIpOwotfQotCi1U
RVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZSkgewotICAvLyBF
eHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBl
Y3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKFNVQ0NFRUQo
KSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShG
QVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1l
c3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwgIlNvbWUgb3RoZXIg
bm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1cmUuIik7Ci19Ci0K
LSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLWNsYXNzIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3QgOiBwdWJsaWMgRXhwZWN0RmFpbHVyZVRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGlj
IHZvaWQgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRmFpbHVyZU1vZGUgZmFpbHVyZSkgewotICAg
IFRocmVhZFdpdGhQYXJhbTxGYWlsdXJlTW9kZT4gdGhyZWFkKCZBZGRGYWlsdXJlLCBmYWlsdXJl
LCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotICB9Ci19OwotCi1URVNUX0YoRXhwZWN0RmFp
bHVyZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlKSB7Ci0gIC8vIFdlIG9ubHkg
aW50ZXJjZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFp
bHVyZXMpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUluT3RoZXJUaHJl
YWQoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRh
bCBmYWlsdXJlLiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCwg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIFdlIG9ubHkgaW50ZXJjZXB0IHRoZSBjdXJy
ZW50IHRocmVhZC4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJ
TFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZS4iKTsKLX0KLQotdHlwZWRlZiBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0IFNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdDsKLQotLy8gVGVzdHMgdGhhdCB0aGUgU2Nv
cGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgb25seSBjYXRjaGVzIGZhaWx1cmVzIGZyb20K
LS8vIHRoZSBjdXJyZW50IHRocmVhZCBpZiBpdCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBJTlRFUkNF
UFRfT05MWV9DVVJSRU5UX1RIUkVBRC4KLVRFU1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlclRlc3QsIEludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkKSB7Ci0gIHByaW50ZigiKGV4
cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsK
LSAgewotICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9ydGVyKAotICAg
ICAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX09OTFlfQ1VS
UkVOVF9USFJFQUQsCi0gICAgICAgICZyZXN1bHRzKTsKLSAgICBBZGRGYWlsdXJlSW5PdGhlclRo
cmVhZChGQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChOT05GQVRB
TF9GQUlMVVJFKTsKLSAgfQotICAvLyBUaGUgdHdvIGZhaWx1cmVzIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGludGVyY2VwdGVkLgotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpIDw8ICJUaGlz
IHNob3VsZG4ndCBmYWlsLiI7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQot
Ci1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFk
cykgewotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05f
QUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8g
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1mYXRhbCBmYWlsdXJlLgotICBw
cmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
X09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4i
KTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlc
biIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlKEZB
VEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU29t
ZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFp
bHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewotICAvLyBFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmludGYoIihleHBlY3Rp
bmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJF
QURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0gIHByaW50ZigiKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVB
RFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0gIC8vIFdyb25nIG1l
c3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJF
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvbWUgb3RoZXIg
bm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLQotLy8gVHdvIHRlc3QgZW52aXJvbm1lbnRzIGZv
ciB0ZXN0aW5nIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpLgotCi1jbGFzcyBG
b29FbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0gcHVibGljOgot
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJGb29FbnZpcm9ubWVu
dDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC5c
biIpOwotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci19Owot
Ci1jbGFzcyBCYXJFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7Ci0g
cHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJCYXJF
bnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50OjpUZWFyRG93bigp
IGNhbGxlZC5cbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBm
YWlsdXJlLiI7Ci0gIH0KLX07Ci0KLS8vIFRoZSBtYWluIGZ1bmN0aW9uLgotLy8KLS8vIFRoZSBp
ZGVhIGlzIHRvIHVzZSBHb29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyB3ZSBoYXZlIGRl
ZmluZWQgKHNvbWUKLS8vIG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwpLCBhbmQgdGhlbiBj
b21wYXJlIHRoZSB0ZXN0IHJlc3VsdHMKLS8vIHdpdGggdGhlICJnb2xkZW4iIGZpbGUuCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmlu
dF90aW1lKSA9IGZhbHNlOwotCi0gIC8vIFdlIGp1c3QgcnVuIHRoZSB0ZXN0cywga25vd2luZyBz
b21lIG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwuCi0gIC8vIFdlIHdpbGwgdXNlIGEgc2Vw
YXJhdGUgUHl0aG9uIHNjcmlwdCB0byBjb21wYXJlIHRoZSBvdXRwdXQgb2YKLSAgLy8gdGhpcyBw
cm9ncmFtIHdpdGggdGhlIGdvbGRlbiBmaWxlLgotCi0gIC8vIEl0J3MgaGFyZCB0byB0ZXN0IElu
aXRHb29nbGVUZXN0KCkgZGlyZWN0bHksIGFzIGl0IGhhcyBtYW55Ci0gIC8vIGdsb2JhbCBzaWRl
IGVmZmVjdHMuICBUaGUgZm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEgc2FuaXR5IHRlc3QKLSAg
Ly8gZm9yIGl0LgotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIGJv
b2wgaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3RzID0KLSAgICAgIHN0
ZDo6Y291bnQoYXJndiwgYXJndiArIGFyZ2MsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KCJpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMiKSkgPiAwOwotCi0j
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgaWYgKHRlc3Rpbmc6OmludGVybmFsOjpHVEVTVF9G
TEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSAhPSAiIikgewotICAgIC8vIFNraXAgdGhlIHVz
dWFsIG91dHB1dCBjYXB0dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUgY2hpbGQKLSAgICAv
LyBwcm9jZXNzIG9mIGFuIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4KLSMgaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBzdGRvdXQpOwotIyBl
bHNlCi0gICAgcG9zaXg6OkZSZW9wZW4oIi9kZXYvbnVsbCIsICJ3Iiwgc3Rkb3V0KTsKLSMgZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotICB9
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSAgaWYgKGludGVybmFsX3NraXBf
ZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykKLSAgICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OwotCi0gIC8vIFJlZ2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzLgotICAvLyBU
aGUgZ29sZGVuIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQgdXAgaW4gdGhlIG9yZGVy
IHRoZXkKLSAgLy8gYXJlIHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24gaW4gdGhlIHJldmVyc2Ug
b3JkZXIuCi0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJv
bm1lbnQpOwotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEJhckVudmly
b25tZW50KTsKLQotICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMjIzZDU2MGUyZDljMmFlNDcwYjZhMmNjZWM0ZGNiZTE4ZmE1NzZjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw3NDMgKzAsMCBAQAotVGhlIG5vbi10ZXN0IHBhcnQgb2YgdGhlIGNvZGUgaXMgZXhwZWN0ZWQg
dG8gaGF2ZSAyIGZhaWx1cmVzLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
VmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDIKLVRvIGJlIGVxdWFs
IHRvOiAzCi0bWzA7MzJtWz09PT09PT09PT1dIBtbbVJ1bm5pbmcgNjYgdGVzdHMgZnJvbSAyOSB0
ZXN0IGNhc2VzLgotG1swOzMybVstLS0tLS0tLS0tXSAbW21HbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dCBzZXQtdXAuCi1Gb29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuCi1CYXJFbnZpcm9ubWVu
dDo6U2V0VXAoKSBjYWxsZWQuCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFE
ZWF0aFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQURlYXRoVGVzdC5TaG91bGRSdW5GaXJz
dAotG1swOzMybVsgICAgICAgT0sgXSAbW21BRGVhdGhUZXN0LlNob3VsZFJ1bkZpcnN0Ci0bWzA7
MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEFUeXBlZERlYXRoVGVzdC8wLCB3aGVyZSBU
eXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAu
U2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzAu
U2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gQVR5cGVk
RGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAg
XSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVsgICAgICAgT0sg
XSAbW21BVHlwZWREZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0t
XSAbW20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAsIHdoZXJlIFR5cGVQYXJh
bSA9IGludAotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzAu
U2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9t
IE15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMSwgd2hlcmUgVHlwZVBhcmFtID0gZG91YmxlCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbU15L0FUeXBlUGFyYW1EZWF0aFRlc3QvMS5TaG91bGRSdW5GaXJz
dAotG1swOzMybVsgICAgICAgT0sgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEuU2hvdWxk
UnVuRmlyc3QKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFBhc3NpbmdUZXN0
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MQotG1swOzMy
bVsgICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDEKLRtbMDszMm1bIFJVTiAg
ICAgIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3Rz
IGZyb20gTm9uZmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRh
bEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiBrR29sZGVuU3RyaW5nCi0gICAgICBXaGljaCBp
czogIlwiTGluZSIKLVRvIGJlIGVxdWFsIHRvOiBhY3R1YWwKLSAgICAgIFdoaWNoIGlzOiAiYWN0
dWFsIFwic3RyaW5nXCIiCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAg
RXhwZWN0ZWQ6IGdvbGRlbgotICAgICAgV2hpY2ggaXM6ICJcIkxpbmUiCi1UbyBiZSBlcXVhbCB0
bzogYWN0dWFsCi0gICAgICBXaGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2FwZXNTdHJpbmdPcGVyYW5kcwot
G1swOzMybVsgUlVOICAgICAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkRpZmZGb3JMb25nU3Ry
aW5ncwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiBn
b2xkZW5fc3RyCi0gICAgICBXaGljaCBpczogIlwiTGluZVwwIDFcIlxuTGluZSAyIgotVG8gYmUg
ZXF1YWwgdG86ICJMaW5lIDIiCi1XaXRoIGRpZmY6Ci1AQCAtMSwyIEBACi0tXCJMaW5lXDAgMVwi
Ci0gTGluZSAyCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5E
aWZmRm9yTG9uZ1N0cmluZ3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMyB0ZXN0cyBmcm9tIEZh
dGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5G
YXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91
bGQgYmUgMSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3Rl
ZDogMQotVG8gYmUgZXF1YWwgdG86IHgKLSAgICAgIFdoaWNoIGlzOiAyCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRT
dWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVx
dWFsIHRvOiB4Ci0gICAgICBXaGljaCBpczogMgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRh
bEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotG1swOzMybVsgUlVO
ICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQot
KGV4cGVjdGluZyBhIGZhaWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotVmFsdWUgb2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVl
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVyZVRlc3QuTm9uZmF0YWxGYWlsdXJl
SW5TdWJyb3V0aW5lCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIExvZ2dpbmdU
ZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUxvZ2dpbmdUZXN0LkludGVybGVhdmluZ0xvZ2dp
bmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMgb24gKDMpID49IChhW2ldKSkK
LWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1pID09IDIKLWkgPT0gMwotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1
YWw6IDMgdnMgNgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZp
bmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotG1swOzMybVstLS0tLS0tLS0tXSAbW202IHRlc3RzIGZy
b20gU0NPUEVEX1RSQUNFVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0Lk9iZXlzU2NvcGVzCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3Vs
ZG4ndCBoYXZlIGEgdHJhY2UuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFp
bGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGQgaGF2ZSBhIHRyYWNlLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRXhwZWN0ZWQgdHJh
Y2UKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuT2JleXNTY29wZXMKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luTG9vcAotKGV4cGVjdGVkIHRvIGZhaWwpCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDIKLVRvIGJl
IGVxdWFsIHRvOiBuCi0gICAgICBXaGljaCBpczogMQotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogaSA9IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi0gICAgICBFeHBlY3RlZDogMQotVG8gYmUgZXF1YWwgdG86IG4KLSAgICAgIFdoaWNoIGlz
OiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBpID0gMgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLShl
eHBlY3RlZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAg
IEV4cGVjdGVkOiAyCi1UbyBiZSBlcXVhbCB0bzogbgotICAgICAgV2hpY2ggaXM6IDEKLUdvb2ds
ZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAxCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFsIHRv
OiBuCi0gICAgICBXaGljaCBpczogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogbiA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVz
dC5Xb3Jrc0luU3Vicm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VU
ZXN0LkNhbkJlTmVzdGVkCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3RlZDogMQotVG8gYmUgZXF1YWwgdG86IG4KLSAgICAg
IFdoaWNoIGlzOiAyCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBuID0gMgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IAotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVzdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLgotR29vZ2xlIFRlc3QgdHJhY2U6
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRh
aW4gdHJhY2UgcG9pbnQgQSBhbmQgQi4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFu
ZCBzaG91bGQgY29udGFpbiB0cmFjZSBwb2ludCBBLCBCLCBhbmQgQy4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNv
bnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEQuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBECi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEEKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNF
VGVzdC5DYW5CZVJlcGVhdGVkCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NDb25jdXJyZW50bHkKLShleHBlY3RpbmcgNiBmYWlsdXJlcykKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEgKGluIHRo
cmVhZCBCLCBvbmx5IHRyYWNlIEIgYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1
cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBC
IGJvdGggYWxpdmUpLgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6
IzogVHJhY2UgQQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMyAoaW4gdGhyZWFkIEIsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLgot
R29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogVHJhY2UgQgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAj
NCAoaW4gdGhyZWFkIEIsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwg
b25seSB0cmFjZSBBIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rl
c3RfLmNjOiM6IFRyYWNlIEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWls
ZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuCi0b
WzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NDb25jdXJyZW50bHkK
LRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5GaXh0
dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU5vbkZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGlu
ZyA1IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAot
RXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IFNldFVwKCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBl
Y3RlZCBmYWlsdXJlICMzLCBpbiB0aGUgdGVzdCBib2R5LgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICM1LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gRmF0YWxGYWlsdXJlSW5GaXh0
dXJlQ29uc3RydWN0b3JUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFsRmFpbHVyZUlu
Rml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotKGV4cGVjdGluZyAy
IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjMSwgaW4gdGhlIHRlc3QgZml4dHVyZSBjJ3Rvci4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMybVst
LS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBOb25GYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1sw
OzMybVsgUlVOICAgICAgXSAbW21Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5T
ZXRVcAotKGV4cGVjdGluZyA0IGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGlu
IHRoZSB0ZXN0IGZ1bmN0aW9uLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZh
aWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGluIHRoZSB0
ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEZhdGFsRmFpbHVyZUluU2V0VXBUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZh
dGFsRmFpbHVyZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0oZXhwZWN0aW5nIDMgZmFpbHVy
ZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMxLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gVGVhckRvd24oKS4KLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIHRo
ZSB0ZXN0IGZpeHR1cmUgZCd0b3IuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEFkZEZhaWx1cmVBdFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttQWRkRmFpbHVy
ZUF0VGVzdC5NZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgotZm9vLmNj
OjQyOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgaW4gZm9vLmNjCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVk
RmlsZUFuZExpbmVOdW1iZXIKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttNCB0ZXN0cyBmcm9tIE1p
eGVkVXBUZXN0Q2FzZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNl
VGVzdC5GaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1p
eGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgUlVO
ICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9v
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuU2Vjb25kVGVzdEZy
b21OYW1lc3BhY2VGb28KLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVz
dC5UaGlzU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xh
c3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVzdCwKLXlvdSBkZWZp
bmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBUaGlzU2hvdWxkRmFp
bAotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhh
cHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIG9y
IHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgWW91IHNob3VsZCBw
cm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8g
ZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0
Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRl
c3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbFRvbwotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3Qg
Zml4dHVyZQotY2xhc3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlVGVz
dCwKLXlvdSBkZWZpbmVkIHRlc3QgRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbyBhbmQgdGVzdCBU
aGlzU2hvdWxkRmFpbFRvbwotdXNpbmcgdHdvIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nl
cy4gIFRoaXMgY2FuIGhhcHBlbiBpZgotdGhlIHR3byBjbGFzc2VzIGFyZSBmcm9tIGRpZmZlcmVu
dCBuYW1lc3BhY2VzIG9yIHRyYW5zbGF0aW9uCi11bml0cyBhbmQgaGF2ZSB0aGUgc2FtZSBuYW1l
LiAgWW91IHNob3VsZCBwcm9iYWJseSByZW5hbWUgb25lCi1vZiB0aGUgY2xhc3NlcyB0byBwdXQg
dGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMuCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMm1bLS0tLS0t
LS0tLV0gG1ttMiB0ZXN0cyBmcm9tIE1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVU
ZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzJtWyAgICAgICBP
SyBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RX
aXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVkVXBUZXN0
Q2FzZVdpdGhTYW1lVGVzdE5hbWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRG
YWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcy4gIEhvd2V2ZXIs
IGluIHRlc3QgY2FzZSBNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLXlvdSBk
ZWZpbmVkIHRlc3QgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwgYW5kIHRlc3Qg
VGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQg
dGVzdCBmaXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3Nl
cyBhcmUgZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5k
IGhhdmUgdGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2Yg
dGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVz
dC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0t
XSAbW20yIHRlc3RzIGZyb20gVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2Fz
ZS5EZWZpbmVkVXNpbmdURVNUX0YKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVEVTVF9GX2JlZm9y
ZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRgotG1swOzMybVsgUlVO
ICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVEFuZFNob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotQWxsIHRl
c3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUK
LWNsYXNzLCBzbyBtaXhpbmcgVEVTVF9GIGFuZCBURVNUIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBp
cwotaWxsZWdhbC4gIEluIHRlc3QgY2FzZSBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0
X2Nhc2UsCi10ZXN0IERlZmluZWRVc2luZ1RFU1RfRiBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBi
dXQKLXRlc3QgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwgaXMgZGVmaW5lZCB1c2luZyBU
RVNULiAgWW91IHByb2JhYmx5Ci13YW50IHRvIGNoYW5nZSB0aGUgVEVTVCB0byBURVNUX0Ygb3Ig
bW92ZSBpdCB0byBhbm90aGVyIHRlc3QKLWNhc2UuCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRF
U1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUQW5kU2hv
dWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gVEVTVF9iZWZvcmVf
VEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVm
b3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUCi0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVk
VXNpbmdURVNUCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9z
YW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzoj
OiBGYWlsdXJlCi1GYWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1
c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVT
VCBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9i
ZWZvcmVfVEVTVF9GX2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0ZB
bmRTaG91bGRGYWlsIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dAotdGVzdCBEZWZpbmVkVXNp
bmdURVNUIGlzIGRlZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFu
Z2UgdGhlIFRFU1QgdG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nh
c2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAotG1swOzMybVstLS0tLS0tLS0tXSAb
W204IHRlc3RzIGZyb20gRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlh
YmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNh
blJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0bWzA7MzJtWyAg
ICAgICBPSyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuQ2FuUmVmZXJlbmNlTG9jYWxW
YXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVz
dC5TdWNjZWVkc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyAgICAgICBP
SyBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5v
bmZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAyIGZh
aWx1cmVzCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlIDEuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUgMi4KLQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwotG1swOzMybVsgUlVOICAgICAg
XSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNPbmVGYXRhbEZh
aWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0
ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5U
aGVyZUlzT25lRmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwotKGV4cGVjdGluZyBhIGZh
aWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVy
ZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhy
b3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRo
cm93cwotG1swOzMybVstLS0tLS0tLS0tXSAbW204IHRlc3RzIGZyb20gRXhwZWN0RmF0YWxGYWls
dXJlVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNh
blJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcwotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGlj
VmFyaWFibGVzCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
Q2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5TdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJl
Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNX
aGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotKGV4cGVjdGlu
ZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWls
dXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RG
YXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlSXNOb0ZhdGFsRmFpbHVyZQotG1swOzMybVsg
UlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdv
RmF0YWxGYWlsdXJlcwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi0KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFp
bGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhl
cmVJc09uZU5vbmZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWls
dXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4g
ICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJu
cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMxbVsgIEZBSUxFRCAg
XSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0
ZW1lbnRUaHJvd3MKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQot
RXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRU
aHJvd3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFR5cGVkVGVzdC8wLCB3
aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVHlwZWRUZXN0LzAu
U3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21UeXBlZFRlc3QvMC5TdWNjZXNzCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVR5cGVkVGVzdC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3RlZDogMQotVG8gYmUgZXF1YWwgdG86IFR5cGVQ
YXJhbSgpCi0gICAgICBXaGljaCBpczogMAotRXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtb
MDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMCwg
d2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgY2hhcgotG1swOzMybVsgUlVOICAgICAgXSAbW21V
bnNpZ25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNp
Z25lZC9UeXBlZFRlc3RQLzAuU3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25l
ZC9UeXBlZFRlc3RQLzAuRmFpbHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LSAgICAgIEV4cGVjdGVkOiAxVQotICAgICAgV2hpY2ggaXM6IDEKLVRvIGJlIGVxdWFsIHRvOiBU
eXBlUGFyYW0oKQotICAgICAgV2hpY2ggaXM6ICdcMCcKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5
cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBm
cm9tIFVuc2lnbmVkL1R5cGVkVGVzdFAvMSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0b
WzA7MzJtWyAgICAgICBPSyBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5TdWNjZXNzCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDFVCi0gICAgICBXaGlj
aCBpczogMQotVG8gYmUgZXF1YWwgdG86IFR5cGVQYXJhbSgpCi0gICAgICBXaGljaCBpczogMAot
RXhwZWN0ZWQgZmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21VbnNpZ25lZC9UeXBlZFRl
c3RQLzEuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gdW5zaWduZWQgaW50Ci0bWzA7MzJtWy0t
LS0tLS0tLS1dIBtbbTQgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlVGVzdAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFp
bHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1Y2Nl
ZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVj
dGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IE5vbi1mYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4K
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBmYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgZmF0YWwgZmFpbHVyZSBleHBl
Y3RlZC4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJl
OgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAg
ICAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3Rp
bmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFs
IGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1Y2Nlc3M6Ci1T
dWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1F
eHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4K
LQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDog
MSBub24tZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIG5vbi1mYXRhbCBmYWls
dXJlLiIKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBmYWls
dXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWlsdXJlT25B
bGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4
cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IFN1Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5j
YzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0
X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQg
bm9uLWZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6Izog
RmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVy
IGZhdGFsIGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1
cmVPbkFsbFRocmVhZHMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3Qu
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFj
dHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShl
eHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFs
IGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0KLShleHBlY3Rpbmcg
MSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZh
aWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBub24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVh
bDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAot
RXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJt
Wy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0
Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFp
bHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVz
dC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVy
ZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25GYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgMiBmYWls
dXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlLgotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFNjb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21TY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlclRlc3QuSW50ZXJjZXB0T25seUN1cnJlbnRUaHJlYWQKLShleHBlY3Rpbmcg
MiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4
cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
RmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJy
ZW50VGhyZWFkCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIFByaW50aW5nRmFp
bGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50
aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3RlZDogMQotVG8gYmUgZXF1YWwgdG86IEdl
dFBhcmFtKCkKLSAgICAgIFdoaWNoIGlzOiAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50
aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAsIHdoZXJlIEdldFBhcmFt
KCkgPSAyCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBQcmludGluZ1N0cmlu
Z3MvUGFyYW1UZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJh
bVRlc3QuU3VjY2Vzcy9hCi0bWzA7MzJtWyAgICAgICBPSyBdIBtbbVByaW50aW5nU3RyaW5ncy9Q
YXJhbVRlc3QuU3VjY2Vzcy9hCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbVByaW50aW5nU3RyaW5n
cy9QYXJhbVRlc3QuRmFpbHVyZS9hCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
ICAgICAgRXhwZWN0ZWQ6ICJiIgotVG8gYmUgZXF1YWwgdG86IEdldFBhcmFtKCkKLSAgICAgIFdo
aWNoIGlzOiAiYSIKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttUHJp
bnRpbmdTdHJpbmdzL1BhcmFtVGVzdC5GYWlsdXJlL2EsIHdoZXJlIEdldFBhcmFtKCkgPSAiYSIK
LRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3du
Ci1CYXJFbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLUZvb0Vu
dmlyb25tZW50OjpUZWFyRG93bigpIGNhbGxlZC4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuCi0bWzA7MzJtWz09PT09PT09
PT1dIBtbbTY2IHRlc3RzIGZyb20gMjkgdGVzdCBjYXNlcyByYW4uCi0bWzA7MzJtWyAgUEFTU0VE
ICBdIBtbbTIyIHRlc3RzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW200NCB0ZXN0cywgbGlzdGVk
IGJlbG93OgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVUZXN0LkVzY2Fw
ZXNTdHJpbmdPcGVyYW5kcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25mYXRhbEZhaWx1cmVU
ZXN0LkRpZmZGb3JMb25nU3RyaW5ncwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1
cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21G
YXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZQotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGlu
ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Mb2dnaW5nVGVzdC5JbnRlcmxlYXZpbmdMb2dnaW5n
QW5kQXNzZXJ0aW9ucwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9i
ZXlzU2NvcGVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJ
bkxvb3AKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jrc0luU3Vi
cm91dGluZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlTmVz
dGVkCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRl
ZAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVu
dGx5Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0
cnVjdG9yVGVzdC5GYWlsdXJlSW5Db25zdHJ1Y3RvcgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21G
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QuRmFpbHVy
ZUluU2V0VXAKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qu
RmFpbHVyZUluU2V0VXAKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttQWRkRmFpbHVyZUF0VGVzdC5N
ZXNzYWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcgotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QuVGhlU2Vj
b25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVT
VF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91
bGRGYWlsCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1l
X3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0ZBbmRTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9u
ZmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVy
ZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZUZh
dGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVU
ZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9G
YXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVz
dC5GYWlsc1doZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzT25lTm9uZmF0YWxGYWls
dXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50UmV0dXJucwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZh
aWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFRocm93cwotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21UeXBlZFRlc3QvMC5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJh
bSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5zaWduZWQvVHlwZWRU
ZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGludAotG1swOzMxbVsg
IEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJl
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZhdGFsRmFp
bHVyZU9uQWxsVGhyZWFkcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVz
dC5FeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdC5FeHBlY3ROb25G
YXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVByaW50aW5nRmFpbGluZ1BhcmFtcy9GYWlsaW5nUGFyYW1UZXN0LkZhaWxzLzAs
IHdoZXJlIEdldFBhcmFtKCkgPSAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVByaW50aW5nU3Ry
aW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQYXJhbSgpID0gImEiCi0KLTQ0IEZB
SUxFRCBURVNUUwotG1swOzMzbSAgWU9VIEhBVkUgMSBESVNBQkxFRCBURVNUCi0KLRtbbU5vdGU6
IEdvb2dsZSBUZXN0IGZpbHRlciA9IEZhdGFsRmFpbHVyZVRlc3QuKjpMb2dnaW5nVGVzdC4qCi1b
PT09PT09PT09PV0gUnVubmluZyA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzLgotWy0tLS0tLS0t
LS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAzIHRlc3Rz
IGZyb20gRmF0YWxGYWlsdXJlVGVzdAotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0
YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxk
IGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6
IDEKLVRvIGJlIGVxdWFsIHRvOiB4Ci0gICAgICBXaGljaCBpczogMgotWyAgRkFJTEVEICBdIEZh
dGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAg
ICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5OZXN0ZWRTdWJyb3V0aW5lCi0oZXhw
ZWN0aW5nIGEgZmFpbHVyZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFsIHRvOiB4Ci0gICAg
ICBXaGljaCBpczogMgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJl
SW5OZXN0ZWRTdWJyb3V0aW5lICg/IG1zKQotWyBSVU4gICAgICBdIEZhdGFsRmFpbHVyZVRlc3Qu
Tm9uZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxz
ZSkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1WYWx1ZSBvZjogZmFsc2UKLSAg
QWN0dWFsOiBmYWxzZQotRXhwZWN0ZWQ6IHRydWUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVU
ZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBtcykKLVstLS0tLS0tLS0tXSAzIHRl
c3RzIGZyb20gRmF0YWxGYWlsdXJlVGVzdCAoPyBtcyB0b3RhbCkKLQotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIExvZ2dpbmdUZXN0Ci1bIFJVTiAgICAgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2
aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLShleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0g
KGFbaV0pKQotaSA9PSAwCi1pID09IDEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1FeHBlY3RlZDogKDMpID49IChhW2ldKSwgYWN0dWFsOiAzIHZzIDkKLWkgPT0gMgotaSA9PSAz
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtp
XSksIGFjdHVhbDogMyB2cyA2Ci1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJsZWF2aW5n
TG9nZ2luZ0FuZEFzc2VydGlvbnMgKD8gbXMpCi1bLS0tLS0tLS0tLV0gMSB0ZXN0IGZyb20gTG9n
Z2luZ1Rlc3QgKD8gbXMgdG90YWwpCi0KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSA0IHRlc3RzIGZyb20gMiB0ZXN0IGNhc2VzIHJh
bi4gKD8gbXMgdG90YWwpCi1bICBQQVNTRUQgIF0gMCB0ZXN0cy4KLVsgIEZBSUxFRCAgXSA0IHRl
c3RzLCBsaXN0ZWQgYmVsb3c6Ci1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZh
aWx1cmVJblN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluTmVzdGVkU3Vicm91dGluZQotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVyZVRlc3QuTm9u
ZmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gTG9nZ2luZ1Rlc3QuSW50ZXJs
ZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLQotIDQgRkFJTEVEIFRFU1RTCi1Ob3RlOiBHb29n
bGUgVGVzdCBmaWx0ZXIgPSAqRElTQUJMRURfKgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0
IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
c2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIERpc2FibGVkVGVzdHNXYXJuaW5nVGVz
dAotWyBSVU4gICAgICBdIERpc2FibGVkVGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVu
RGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVzc2VzV2FybmluZwotWyAgICAgICBPSyBdIERpc2FibGVk
VGVzdHNXYXJuaW5nVGVzdC5ESVNBQkxFRF9BbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWdTdXBwcmVz
c2VzV2FybmluZwotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHRlYXItZG93
bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAg
XSAxIHRlc3QuCi1Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBQYXNzaW5nVGVzdC4qCi1Ob3Rl
OiBUaGlzIGlzIHRlc3Qgc2hhcmQgMiBvZiAyLgotWz09PT09PT09PT1dIFJ1bm5pbmcgMSB0ZXN0
IGZyb20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQg
c2V0LXVwLgotWy0tLS0tLS0tLS1dIDEgdGVzdCBmcm9tIFBhc3NpbmdUZXN0Ci1bIFJVTiAgICAg
IF0gUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QyCi1bICAgICAgIE9LIF0gUGFzc2luZ1Rlc3QuUGFz
c2luZ1Rlc3QyCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3du
Ci1bPT09PT09PT09PV0gMSB0ZXN0IGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBd
IDEgdGVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NGVmZjg2MGE0ZDdkYzhiODU2M2Y4ZTFl
N2Y0NzllMjkyZWEzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNDI3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVE
IG9uIDEwLzMxLzIwMTEgYnkgY29tbWFuZAotLy8gJ2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgNScu
ICBETyBOT1QgRURJVCBCWSBIQU5EIQotCi0vLyBSZWdyZXNzaW9uIHRlc3QgZm9yIGd0ZXN0X3By
ZWRfaW1wbC5oCi0vLwotLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIHNjcmlwdCBhbmQg
cXVpdGUgbG9uZy4gIElmIHlvdSBpbnRlbmQgdG8KLS8vIGxlYXJuIGhvdyBHb29nbGUgVGVzdCB3
b3JrcyBieSByZWFkaW5nIGl0cyB1bml0IHRlc3RzLCByZWFkCi0vLyBndGVzdF91bml0dGVzdC5j
YyBpbnN0ZWFkLgotLy8KLS8vIFRoaXMgaXMgaW50ZW5kZWQgYXMgYSByZWdyZXNzaW9uIHRlc3Qg
Zm9yIHRoZSBHb29nbGUgVGVzdCBwcmVkaWNhdGUKLS8vIGFzc2VydGlvbnMuICBXZSBjb21waWxl
IGl0IGFzIHBhcnQgb2YgdGhlIGd0ZXN0X3VuaXR0ZXN0IHRhcmdldAotLy8gb25seSB0byBrZWVw
IHRoZSBpbXBsZW1lbnRhdGlvbiB0aWR5IGFuZCBjb21wYWN0LCBhcyBpdCBpcyBxdWl0ZQotLy8g
aW52b2x2ZWQgdG8gc2V0IHVwIHRoZSBzdGFnZSBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCB1c2lu
ZyBHb29nbGUKLS8vIFRlc3QgaXRzZWxmLgotLy8KLS8vIEN1cnJlbnRseSwgZ3Rlc3RfdW5pdHRl
c3QgdGFrZXMgfjExIHNlY29uZHMgdG8gcnVuIGluIHRoZSB0ZXN0aW5nCi0vLyBkYWVtb24uICBJ
biB0aGUgZnV0dXJlLCBpZiBpdCBncm93cyB0b28gbGFyZ2UgYW5kIG5lZWRzIG11Y2ggbW9yZQot
Ly8gdGltZSB0byBmaW5pc2gsIHdlIHNob3VsZCBjb25zaWRlciBzZXBhcmF0aW5nIHRoaXMgZmls
ZSBpbnRvIGEKLS8vIHN0YW5kLWFsb25lIHJlZ3Jlc3Npb24gdGVzdC4KLQotI2luY2x1ZGUgPGlv
c3RyZWFtPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVz
dC1zcGkuaCIKLQotLy8gQSB1c2VyLWRlZmluZWQgZGF0YSB0eXBlLgotc3RydWN0IEJvb2wgewot
ICBleHBsaWNpdCBCb29sKGludCB2YWwpIDogdmFsdWUodmFsICE9IDApIHt9Ci0KLSAgYm9vbCBv
cGVyYXRvcj4oaW50IG4pIGNvbnN0IHsgcmV0dXJuIHZhbHVlID4gQm9vbChuKS52YWx1ZTsgfQot
Ci0gIEJvb2wgb3BlcmF0b3IrKGNvbnN0IEJvb2wmIHJocykgY29uc3QgeyByZXR1cm4gQm9vbCh2
YWx1ZSArIHJocy52YWx1ZSk7IH0KLQotICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9vbCYgcmhz
KSBjb25zdCB7IHJldHVybiB2YWx1ZSA9PSByaHMudmFsdWU7IH0KLQotICBib29sIHZhbHVlOwot
fTsKLQotLy8gRW5hYmxlcyBCb29sIHRvIGJlIHVzZWQgaW4gYXNzZXJ0aW9ucy4KLXN0ZDo6b3N0
cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCb29sJiB4KSB7Ci0gIHJl
dHVybiBvcyA8PCAoeC52YWx1ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotfQotCi0vLyBTYW1wbGUg
ZnVuY3Rpb25zL2Z1bmN0b3JzIGZvciB0ZXN0aW5nIHVuYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25z
LgotCi0vLyBBIHVuYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MT4KLWJvb2wgUHJlZEZ1bmN0aW9uMShUMSB2MSkgewotICByZXR1cm4gdjEgPiAwOwotfQotCi0v
LyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCB0byBjaXJjdW12ZW50IGEg
YnVnIGluCi0vLyBnY2MgMi45NS4zLCB3aGljaCBzb21ldGltZXMgaGFzIHByb2JsZW0gd2l0aCB0
aGUgYWJvdmUgdGVtcGxhdGUKLS8vIGZ1bmN0aW9uLgotYm9vbCBQcmVkRnVuY3Rpb24xSW50KGlu
dCB2MSkgewotICByZXR1cm4gdjEgPiAwOwotfQotYm9vbCBQcmVkRnVuY3Rpb24xQm9vbChCb29s
IHYxKSB7Ci0gIHJldHVybiB2MSA+IDA7Ci19Ci0KLS8vIEEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0
b3IuCi1zdHJ1Y3QgUHJlZEZ1bmN0b3IxIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgVDEmIHYxKSB7Ci0gICAgcmV0dXJuIHYxID4gMDsKLSAgfQot
fTsKLQotLy8gQSB1bmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxPgotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlv
bjEoY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMSYgdjEpIHsKLSAgaWYgKFByZWRGdW5jdGlvbjEodjEpKQotICAgIHJl
dHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIHRlc3Rpbmc6OkFz
c2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgZTEKLSAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8g
YmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgotICAgICAgPDwgdjEgPDwgIi4iOwotfQot
Ci0vLyBBIHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KLXN0cnVjdCBQcmVkRm9y
bWF0RnVuY3RvcjEgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci0gIHRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIGUxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEpIGNvbnN0IHsKLSAgICByZXR1cm4gUHJl
ZEZvcm1hdEZ1bmN0aW9uMShlMSwgdjEpOwotICB9Ci19OwotCi0vLyBUZXN0cyBmb3Ige0VYUEVD
VHxBU1NFUlR9X1BSRURfRk9STUFUMS4KLQotY2xhc3MgUHJlZGljYXRlMVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0g
ICAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IHRydWU7Ci0gICAgZmluaXNoZWRfID0gZmFsc2U7Ci0g
ICAgbjFfID0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAvLyBW
ZXJpZmllcyB0aGF0IGVhY2ggb2YgdGhlIHByZWRpY2F0ZSdzIGFyZ3VtZW50cyB3YXMgZXZhbHVh
dGVkCi0gICAgLy8gZXhhY3RseSBvbmNlLgotICAgIEVYUEVDVF9FUSgxLCBuMV8pIDw8Ci0gICAg
ICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMiAi
Ci0gICAgICAgICJleGFjdGx5IG9uY2UuIjsKLQotICAgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGNv
bnRyb2wgZmxvdyBpbiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZC4KLSAgICBpZiAoZXhw
ZWN0ZWRfdG9fZmluaXNoXyAmJiAhZmluaXNoZWRfKSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBw
cmVkaWNhdGUgYXNzZXJ0aW9uIHVuZXhwYWN0ZWRseSBhYm9ydGVkIHRoZSB0ZXN0LiI7Ci0gICAg
fSBlbHNlIGlmICghZXhwZWN0ZWRfdG9fZmluaXNoXyAmJiBmaW5pc2hlZF8pIHsKLSAgICAgIEZB
SUwoKSA8PCAiVGhlIGZhaWxlZCBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBhYm9ydCB0aGUg
dGVzdCAiCi0gICAgICAgICAgICAgICAgImFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0KLSAg
Ly8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gcnVuIHRvIGZpbmlz
aC4KLSAgc3RhdGljIGJvb2wgZXhwZWN0ZWRfdG9fZmluaXNoXzsKLQotICAvLyB0cnVlIGlmZiB0
aGUgdGVzdCBmdW5jdGlvbiBkaWQgcnVuIHRvIGZpbmlzaC4KLSAgc3RhdGljIGJvb2wgZmluaXNo
ZWRfOwotCi0gIHN0YXRpYyBpbnQgbjFfOwotfTsKLQotYm9vbCBQcmVkaWNhdGUxVGVzdDo6ZXhw
ZWN0ZWRfdG9fZmluaXNoXzsKLWJvb2wgUHJlZGljYXRlMVRlc3Q6OmZpbmlzaGVkXzsKLWludCBQ
cmVkaWNhdGUxVGVzdDo6bjFfOwotCi10eXBlZGVmIFByZWRpY2F0ZTFUZXN0IEVYUEVDVF9QUkVE
X0ZPUk1BVDFUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUxVGVzdCBBU1NFUlRfUFJFRF9GT1JNQVQx
VGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlMVRlc3QgRVhQRUNUX1BSRUQxVGVzdDsKLXR5cGVkZWYg
UHJlZGljYXRlMVRlc3QgQVNTRVJUX1BSRUQxVGVzdDsKLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVs
IEVYUEVDVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQxVGVzdCwg
RnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0
aW9uMUludCwKLSAgICAgICAgICAgICAgICsrbjFfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0K
LQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29s
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7
Ci0gIEVYUEVDVF9QUkVEMShQcmVkRnVuY3Rpb24xQm9vbCwKLSAgICAgICAgICAgICAgIEJvb2wo
KytuMV8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVs
IEVYUEVDVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBG
dW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQxKFByZWRGdW5jdG9y
MSgpLAotICAgICAgICAgICAgICAgKytuMV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0v
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1U
RVNUX0YoRVhQRUNUX1BSRUQxVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVY
UEVDVF9QUkVEMShQcmVkRnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pKTsK
LSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQx
IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdGlvbk9uQnVp
bHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEVYUEVDVF9QUkVEMShQcmVkRnVuY3Rpb24xSW50LAotICAgICAgICAgICAgICAgICBu
MV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBh
IGZhaWxlZCBFWFBFQ1RfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNU
X1BSRUQxVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0aW9uMUJv
b2wsCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMSB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZh
aWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQ
RUNUX1BSRUQxKFByZWRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICBuMV8rKyk7Ci0gICAg
ZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBF
Q1RfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBv
biBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBG
dW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQxKFByZWRGdW5jdG9yMSgpLAotICAgICAgICAgICAg
ICAgICBCb29sKG4xXysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQot
Ci0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGlj
YXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRF
U1RfRihBU1NFUlRfUFJFRDFUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0g
IEFTU0VSVF9QUkVEMShQcmVkRnVuY3Rpb24xSW50LAotICAgICAgICAgICAgICAgKytuMV8pOwot
ICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BS
RUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
dXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0
aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQxKFByZWRGdW5jdGlvbjFCb29s
LAotICAgICAgICAgICAgICAgQm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQot
Ci0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGlj
YXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVT
VF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBB
U1NFUlRfUFJFRDEoUHJlZEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICArK24xXyk7Ci0gIGZp
bmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXIt
ZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRDFUZXN0LCBGdW5jdG9yT25V
c2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQxKFByZWRGdW5jdG9yMSgpLAotICAgICAg
ICAgICAgICAgQm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0
cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9Q
UkVEMVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9f
ZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBBU1NFUlRfUFJFRDEoUHJlZEZ1bmN0aW9uMUludCwKLSAgICAgICAgICAgICAgICAgbjFfKysp
OwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWls
ZWQgQVNTRVJUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVE
MVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNo
XyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NF
UlRfUFJFRDEoUHJlZEZ1bmN0aW9uMUJvb2wsCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKysp
KTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRDFUZXN0
LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9
IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRf
UFJFRDEoUHJlZEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAgIG4xXysrKTsKLSAgICBmaW5p
c2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9Q
UkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEg
dXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0
b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEMShQcmVk
RnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKykpOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9Q
UkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDFU
ZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1B
VDEoUHJlZEZvcm1hdEZ1bmN0aW9uMSwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXyk7Ci0g
IGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJF
RF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1B
VDFUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1B
VDEoUHJlZEZvcm1hdEZ1bmN0aW9uMSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFf
KSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1B
VDFUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9S
TUFUMShQcmVkRm9ybWF0RnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXyk7
Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1Rf
UFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9S
TUFUMVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRF9GT1JN
QVQxKFByZWRGb3JtYXRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytu
MV8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNU
X1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFU
MVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0
RnVuY3Rpb24xLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyspOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURf
Rk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBv
biBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQx
VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5j
dGlvbjEsCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7Ci0gICAgZmluaXNo
ZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJF
RF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Ig
b24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDFUZXN0
LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3Rv
cjEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0
cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1B
VDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQxVGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0b3IxKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7Ci0gICAgZmluaXNoZWRfID0g
dHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURf
Rk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBv
biBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRlc3Qs
IEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURfRk9STUFUMShQ
cmVkRm9ybWF0RnVuY3Rpb24xLAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfKTsKLSAgZmlu
aXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZP
Uk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRl
c3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURfRk9STUFUMShQ
cmVkRm9ybWF0RnVuY3Rpb24xLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pKTsK
LSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9Q
UkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRl
c3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQx
KFByZWRGb3JtYXRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfKTsKLSAg
ZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVE
X0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBv
biBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQx
VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDEo
UHJlZEZvcm1hdEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXykp
OwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJF
RF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQxVGVz
dCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hf
ID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VS
VF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0aW9uMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG4xXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1U
RVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUp
IHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdGlv
bjEsCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7Ci0gICAgZmluaXNoZWRf
ID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9G
T1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDFUZXN0LCBG
dW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJF
RF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
bjFfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMg
YSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3Jt
YXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9G
KEFTU0VSVF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAg
ZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdG9yMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRy
dWU7Ci0gIH0sICIiKTsKLX0KLS8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9yIHRlc3Rp
bmcgYmluYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zLgotCi0vLyBBIGJpbmFyeSBwcmVkaWNhdGUg
ZnVuY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotYm9vbCBQcmVk
RnVuY3Rpb24yKFQxIHYxLCBUMiB2MikgewotICByZXR1cm4gdjEgKyB2MiA+IDA7Ci19Ci0KLS8v
IFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQgYSBi
dWcgaW4KLS8vIGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRoIHRo
ZSBhYm92ZSB0ZW1wbGF0ZQotLy8gZnVuY3Rpb24uCi1ib29sIFByZWRGdW5jdGlvbjJJbnQoaW50
IHYxLCBpbnQgdjIpIHsKLSAgcmV0dXJuIHYxICsgdjIgPiAwOwotfQotYm9vbCBQcmVkRnVuY3Rp
b24yQm9vbChCb29sIHYxLCBCb29sIHYyKSB7Ci0gIHJldHVybiB2MSArIHYyID4gMDsKLX0KLQot
Ly8gQSBiaW5hcnkgcHJlZGljYXRlIGZ1bmN0b3IuCi1zdHJ1Y3QgUHJlZEZ1bmN0b3IyIHsKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgYm9vbCBvcGVyYXRvcigpKGNv
bnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgewotICAgIHJldHVy
biB2MSArIHYyID4gMDsKLSAgfQotfTsKLQotLy8gQSBiaW5hcnkgcHJlZGljYXRlLWZvcm1hdHRl
ciBmdW5jdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci10ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMihjb25zdCBjaGFyKiBlMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEm
IHYxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDImIHYyKSB7Ci0gIGlmIChQcmVkRnVuY3Rpb24yKHYxLCB2MikpCi0gICAgcmV0dXJuIHRlc3Rp
bmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFp
bHVyZSgpCi0gICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMgotICAgICAgPDwgIiBpcyBleHBlY3Rl
ZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCi0gICAgICA8PCB2MSArIHYyIDw8
ICIuIjsKLX0KLQotLy8gQSBiaW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgotc3Ry
dWN0IFByZWRGb3JtYXRGdW5jdG9yMiB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Ci0gIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBvcGVyYXRvcigpKGNvbnN0IGNoYXIq
IGUxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIpIGNvbnN0
IHsKLSAgICByZXR1cm4gUHJlZEZvcm1hdEZ1bmN0aW9uMihlMSwgZTIsIHYxLCB2Mik7Ci0gIH0K
LX07Ci0KLS8vIFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgotCi1jbGFz
cyBQcmVkaWNhdGUyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBleHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsK
LSAgICBmaW5pc2hlZF8gPSBmYWxzZTsKLSAgICBuMV8gPSBuMl8gPSAwOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUg
cHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFjdGx5IG9uY2Uu
Ci0gICAgRVhQRUNUX0VRKDEsIG4xXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0
aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAyICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4i
OwotICAgIEVYUEVDVF9FUSgxLCBuMl8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2Vy
dGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMyAiCi0gICAgICAgICJleGFjdGx5IG9uY2Uu
IjsKLQotICAgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRyb2wgZmxvdyBpbiB0aGUgdGVzdCBm
dW5jdGlvbiBpcyBleHBlY3RlZC4KLSAgICBpZiAoZXhwZWN0ZWRfdG9fZmluaXNoXyAmJiAhZmlu
aXNoZWRfKSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIHVuZXhw
YWN0ZWRseSBhYm9ydGVkIHRoZSB0ZXN0LiI7Ci0gICAgfSBlbHNlIGlmICghZXhwZWN0ZWRfdG9f
ZmluaXNoXyAmJiBmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8PCAiVGhlIGZhaWxlZCBwcmVk
aWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBhYm9ydCB0aGUgdGVzdCAiCi0gICAgICAgICAgICAgICAg
ImFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0KLSAgLy8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVu
Y3Rpb24gaXMgZXhwZWN0ZWQgdG8gcnVuIHRvIGZpbmlzaC4KLSAgc3RhdGljIGJvb2wgZXhwZWN0
ZWRfdG9fZmluaXNoXzsKLQotICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBkaWQgcnVu
IHRvIGZpbmlzaC4KLSAgc3RhdGljIGJvb2wgZmluaXNoZWRfOwotCi0gIHN0YXRpYyBpbnQgbjFf
OwotICBzdGF0aWMgaW50IG4yXzsKLX07Ci0KLWJvb2wgUHJlZGljYXRlMlRlc3Q6OmV4cGVjdGVk
X3RvX2ZpbmlzaF87Ci1ib29sIFByZWRpY2F0ZTJUZXN0OjpmaW5pc2hlZF87Ci1pbnQgUHJlZGlj
YXRlMlRlc3Q6Om4xXzsKLWludCBQcmVkaWNhdGUyVGVzdDo6bjJfOwotCi10eXBlZGVmIFByZWRp
Y2F0ZTJUZXN0IEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUyVGVz
dCBBU1NFUlRfUFJFRF9GT1JNQVQyVGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlMlRlc3QgRVhQRUNU
X1BSRUQyVGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlMlRlc3QgQVNTRVJUX1BSRUQyVGVzdDsKLQot
Ly8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNU
X0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBF
WFBFQ1RfUFJFRDIoUHJlZEZ1bmN0aW9uMkludCwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAg
ICAgICAgICAgICAgKytuMl8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVY
UEVDVF9QUkVEMlRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BS
RUQyKFByZWRGdW5jdGlvbjJCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICBCb29sKCsrbjJfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRl
c3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQ
RUNUX1BSRUQyVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9Q
UkVEMihQcmVkRnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAg
ICAgKytuMl8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgRVhQRUNUX1BSRUQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRUQy
VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEMihQcmVkRnVu
Y3RvcjIoKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9v
bCgrK24yXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBF
WFBFQ1RfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEMlRlc3QsIEZ1
bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQyKFByZWRGdW5jdGlvbjJJbnQsCi0gICAgICAg
ICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0gICAgZmluaXNoZWRf
ID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDIg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rpb25P
blVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKLSAgICBFWFBFQ1RfUFJFRDIoUHJlZEZ1bmN0aW9uMkJvb2wsCi0gICAgICAgICAgICAgICAg
IEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7Ci0gICAgZmluaXNo
ZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJF
RDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1
aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rvck9uQnVp
bHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEVYUEVDVF9QUkVEMihQcmVkRnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICAgbjFf
KyssCi0gICAgICAgICAgICAgICAgIG4yXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUg
KEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEMlRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVy
ZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1Rf
UFJFRDIoUHJlZEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAg
ICAgICAgICAgICAgICBCb29sKG4yXysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwg
IiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQyIHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNj
ZXNzKSB7Ci0gIEFTU0VSVF9QUkVEMihQcmVkRnVuY3Rpb24ySW50LAotICAgICAgICAgICAgICAg
KytuMV8sCi0gICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0K
LS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCku
Ci1URVNUX0YoQVNTRVJUX1BSRUQyVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2Vzcykgewot
ICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0aW9uMkJvb2wsCi0gICAgICAgICAgICAgICBCb29sKCsr
bjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsK
LX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4K
LVRFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsK
LSAgQVNTRVJUX1BSRUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgKytuMV8sCi0g
ICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihB
U1NFUlRfUFJFRDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BS
RUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAg
ICAgICAgICBCb29sKCsrbjJfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IGEgZmFpbGVkIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BS
RUQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19m
aW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEFTU0VSVF9QUkVEMihQcmVkRnVuY3Rpb24ySW50LAotICAgICAgICAgICAgICAgICBuMV8rKywK
LSAgICAgICAgICAgICAgICAgbjJfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIi
KTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQyIHdoZXJlIHRoZQotLy8gcHJl
ZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJv
b2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEMlRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUp
IHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0aW9uMkJvb2wsCi0gICAg
ICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVu
Y3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQyVGVzdCwg
RnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BS
RUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAg
ICAgICAgbjJfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8g
VGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0Yo
QVNTRVJUX1BSRUQyVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVk
X3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgQVNTRVJUX1BSRUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgICBCb29s
KG4xXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKykpOwotICAgIGZpbmlzaGVkXyA9
IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVE
X0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24g
b24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0
LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
UHJlZEZvcm1hdEZ1bmN0aW9uMiwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXywKLSAgICAg
ICAgICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRl
c3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGlj
YXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wp
LgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNj
ZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0aW9uMiwKLSAgICAg
ICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjJfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVE
X0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BS
RURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAr
K24xXywKLSAgICAgICAgICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7
Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQg
dHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPblVz
ZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdG9y
MigpLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAg
ICAgICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMg
YSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3Jt
YXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQ
RUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9S
TUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyss
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsK
LSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5j
dGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0aW9uMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbChuMl8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRF
U1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJl
KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrKTsKLSAgICBmaW5pc2hlZF8g
PSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQyVGVz
dCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3Iy
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEJvb2wobjJfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7
Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0
SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdGlv
bjIsCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAgICAgICAg
KytuMl8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
QVNTRVJUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRf
UFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCi0gICAgICAgICAgICAgICAgICAgICAg
Qm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXykpOwotICBmaW5p
c2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9S
TUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQyVGVzdCwgRnVu
Y3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJlZEZv
cm1hdEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAg
ICAgICAgICAgICAgKytuMl8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVT
VF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsK
LSAgQVNTRVJUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJf
KSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJU
ZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2Zpbmlz
aF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0gICAgZmluaXNo
ZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJF
RF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1B
VDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2Zpbmlz
aF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVE
X0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRf
dG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBBU1NFUlRfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdG9yMigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBB
U1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BS
RURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3IyKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
bjJfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0vLyBTYW1wbGUg
ZnVuY3Rpb25zL2Z1bmN0b3JzIGZvciB0ZXN0aW5nIHRlcm5hcnkgcHJlZGljYXRlIGFzc2VydGlv
bnMuCi0KLS8vIEEgdGVybmFyeSBwcmVkaWNhdGUgZnVuY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLWJvb2wgUHJlZEZ1bmN0aW9uMyhUMSB2
MSwgVDIgdjIsIFQzIHYzKSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMgPiAwOwotfQotCi0vLyBU
aGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCB0byBjaXJjdW12ZW50IGEgYnVn
IGluCi0vLyBnY2MgMi45NS4zLCB3aGljaCBzb21ldGltZXMgaGFzIHByb2JsZW0gd2l0aCB0aGUg
YWJvdmUgdGVtcGxhdGUKLS8vIGZ1bmN0aW9uLgotYm9vbCBQcmVkRnVuY3Rpb24zSW50KGludCB2
MSwgaW50IHYyLCBpbnQgdjMpIHsKLSAgcmV0dXJuIHYxICsgdjIgKyB2MyA+IDA7Ci19Ci1ib29s
IFByZWRGdW5jdGlvbjNCb29sKEJvb2wgdjEsIEJvb2wgdjIsIEJvb2wgdjMpIHsKLSAgcmV0dXJu
IHYxICsgdjIgKyB2MyA+IDA7Ci19Ci0KLS8vIEEgdGVybmFyeSBwcmVkaWNhdGUgZnVuY3Rvci4K
LXN0cnVjdCBQcmVkRnVuY3RvcjMgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQxJiB2MSwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2
MykgewotICAgIHJldHVybiB2MSArIHYyICsgdjMgPiAwOwotICB9Ci19OwotCi0vLyBBIHRlcm5h
cnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRG
b3JtYXRGdW5jdGlvbjMoY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzKSB7Ci0gIGlm
IChQcmVkRnVuY3Rpb24zKHYxLCB2MiwgdjMpKQotICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotICAg
ICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMKLSAgICAgIDw8ICIgaXMgZXhw
ZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgotICAgICAgPDwgdjEgKyB2
MiArIHYzIDw8ICIuIjsKLX0KLQotLy8gQSB0ZXJuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVu
Y3Rvci4KLXN0cnVjdCBQcmVkRm9ybWF0RnVuY3RvcjMgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0
IG9wZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQzJiB2MykgY29uc3QgewotICAgIHJldHVybiBQcmVkRm9ybWF0RnVuY3Rpb24zKGUxLCBl
MiwgZTMsIHYxLCB2MiwgdjMpOwotICB9Ci19OwotCi0vLyBUZXN0cyBmb3Ige0VYUEVDVHxBU1NF
UlR9X1BSRURfRk9STUFUMy4KLQotY2xhc3MgUHJlZGljYXRlM1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgZXhw
ZWN0ZWRfdG9fZmluaXNoXyA9IHRydWU7Ci0gICAgZmluaXNoZWRfID0gZmFsc2U7Ci0gICAgbjFf
ID0gbjJfID0gbjNfID0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAg
ICAvLyBWZXJpZmllcyB0aGF0IGVhY2ggb2YgdGhlIHByZWRpY2F0ZSdzIGFyZ3VtZW50cyB3YXMg
ZXZhbHVhdGVkCi0gICAgLy8gZXhhY3RseSBvbmNlLgotICAgIEVYUEVDVF9FUSgxLCBuMV8pIDw8
Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1l
bnQgMiAiCi0gICAgICAgICJleGFjdGx5IG9uY2UuIjsKLSAgICBFWFBFQ1RfRVEoMSwgbjJfKSA8
PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3Vt
ZW50IDMgIgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7Ci0gICAgRVhQRUNUX0VRKDEsIG4zXykg
PDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1
bWVudCA0ICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4iOwotCi0gICAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgY29udHJvbCBmbG93IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkLgotICAg
IGlmIChleHBlY3RlZF90b19maW5pc2hfICYmICFmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8
PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhlIHRlc3Qu
IjsKLSAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVkXykgewot
ICAgICAgRkFJTCgpIDw8ICJUaGUgZmFpbGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGFi
b3J0IHRoZSB0ZXN0ICIKLSAgICAgICAgICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKLSAgICB9Ci0g
IH0KLQotICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBydW4g
dG8gZmluaXNoLgotICBzdGF0aWMgYm9vbCBleHBlY3RlZF90b19maW5pc2hfOwotCi0gIC8vIHRy
dWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGRpZCBydW4gdG8gZmluaXNoLgotICBzdGF0aWMgYm9v
bCBmaW5pc2hlZF87Ci0KLSAgc3RhdGljIGludCBuMV87Ci0gIHN0YXRpYyBpbnQgbjJfOwotICBz
dGF0aWMgaW50IG4zXzsKLX07Ci0KLWJvb2wgUHJlZGljYXRlM1Rlc3Q6OmV4cGVjdGVkX3RvX2Zp
bmlzaF87Ci1ib29sIFByZWRpY2F0ZTNUZXN0OjpmaW5pc2hlZF87Ci1pbnQgUHJlZGljYXRlM1Rl
c3Q6Om4xXzsKLWludCBQcmVkaWNhdGUzVGVzdDo6bjJfOwotaW50IFByZWRpY2F0ZTNUZXN0Ojpu
M187Ci0KLXR5cGVkZWYgUHJlZGljYXRlM1Rlc3QgRVhQRUNUX1BSRURfRk9STUFUM1Rlc3Q7Ci10
eXBlZGVmIFByZWRpY2F0ZTNUZXN0IEFTU0VSVF9QUkVEX0ZPUk1BVDNUZXN0OwotdHlwZWRlZiBQ
cmVkaWNhdGUzVGVzdCBFWFBFQ1RfUFJFRDNUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUzVGVzdCBB
U1NFUlRfUFJFRDNUZXN0OwotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQzIHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQt
aW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdGlvbk9uQnVpbHRJ
blR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEMyhQcmVkRnVuY3Rpb24zSW50LAotICAgICAg
ICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsr
bjNfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVY
UEVDVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDNUZXN0
LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEMyhQcmVkRnVuY3Rp
b24zQm9vbCwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9v
bCgrK24yXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjNfKSk7Ci0gIGZpbmlzaGVkXyA9IHRy
dWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDMgd2hlcmUgdGhlCi0v
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGlu
dCkuCi1URVNUX0YoRVhQRUNUX1BSRUQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNz
KSB7Ci0gIEVYUEVDVF9QUkVEMyhQcmVkRnVuY3RvcjMoKSwKLSAgICAgICAgICAgICAgICsrbjFf
LAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICArK24zXyk7Ci0gIGZpbmlz
aGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDMgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVm
aW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdG9yT25Vc2Vy
VHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdG9yMygpLAotICAgICAgICAg
ICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAg
ICAgICAgIEJvb2woKytuM18pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMg
YSBmYWlsZWQgRVhQRUNUX1BSRUQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJF
RDNUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMyhQcmVkRnVuY3Rpb24zSW50
LAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAg
ICAgICAgICAgICAgIG4zXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19
Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4K
LVRFU1RfRihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMyhQ
cmVkRnVuY3Rpb24zQm9vbCwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAg
ICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBF
WFBFQ1RfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQzVGVzdCwgRnVu
Y3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMyhQcmVkRnVuY3RvcjMoKSwKLSAgICAgICAgICAg
ICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICBu
M18rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBh
IGZhaWxlZCBFWFBFQ1RfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1Rf
UFJFRDNUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdG9yMygpLAot
ICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8r
KyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDMgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1p
biB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25CdWlsdElu
VHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQzKFByZWRGdW5jdGlvbjNJbnQsCi0gICAgICAg
ICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgKytu
M18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRUQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEM1Rlc3Qs
IEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQzKFByZWRGdW5jdGlv
bjNCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICBCb29s
KCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pKTsKLSAgZmluaXNoZWRfID0gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMyB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihBU1NFUlRfUFJFRDNUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3Mp
IHsKLSAgQVNTRVJUX1BSRUQzKFByZWRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgKytuMV8s
Ci0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsrbjNfKTsKLSAgZmluaXNo
ZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMyB3aGVy
ZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPblVzZXJU
eXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCi0gICAgICAgICAg
ICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAg
ICAgICAgQm9vbCgrK24zXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IGZhaWxlZCBBU1NFUlRfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVE
M1Rlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmlu
aXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBB
U1NFUlRfUFJFRDMoUHJlZEZ1bmN0aW9uM0ludCwKLSAgICAgICAgICAgICAgICAgbjFfKyssCi0g
ICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICBuM18rKyk7Ci0gICAgZmlu
aXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRf
UFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVu
Y3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEMyhQ
cmVkRnVuY3Rpb24zQm9vbCwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAg
ICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBB
U1NFUlRfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVu
Y3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxz
ZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRUQz
KFByZWRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAg
ICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4zXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMyB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPblVzZXJUeXBl
RmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEMyhQcmVkRnVuY3RvcjMoKSwK
LSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjJf
KyspLAotICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1
ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9S
TUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBh
IGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUM1Rlc3QsIEZ1
bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMyhQcmVk
Rm9ybWF0RnVuY3Rpb24zLAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAg
ICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjNfKTsKLSAgZmlu
aXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUM1Rl
c3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMyhQ
cmVkRm9ybWF0RnVuY3Rpb24zLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAot
ICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgICAgICAg
IEJvb2woKytuM18pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNU
X1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBF
Q1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgICAg
ICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjNfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihF
WFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0g
ICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8g
cHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBl
RmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBF
WFBFQ1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbjNfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsK
LX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBl
IChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PblVzZXJU
eXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBFWFBFQ1RfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJf
KyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKykpOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURf
Rk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9u
IGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwg
RnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3Iz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG4yXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyspOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURf
Rk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9u
IGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNU
ZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3Rv
cjMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAg
ICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4z
XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0Yo
QVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsK
LSAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3Rpb24zLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAg
ICAgICAgICAgICAgICsrbjNfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMg
YSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1U
RVNUX0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3Mp
IHsKLSAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3Rpb24zLAotICAgICAgICAg
ICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytu
Ml8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuM18pKTsKLSAgZmluaXNoZWRfID0g
dHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWlu
IHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0b3JPbkJ1
aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5j
dG9yMygpLAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAg
ICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjNfKTsKLSAgZmluaXNoZWRfID0g
dHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVm
aW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rv
ck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1
bmN0b3IzKCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAg
ICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24z
XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRf
UFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQz
VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5p
c2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0aW9uMywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuM18rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8g
cHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUg
KEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdGlvbk9uVXNlclR5
cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9y
bWF0RnVuY3Rpb24zLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IEJvb2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8v
IFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNU
X0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkg
ewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3Iz
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG4yXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyspOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURf
Rk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9u
IGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDNU
ZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9
IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRf
UFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0vLyBTYW1wbGUgZnVuY3Rpb25zL2Z1bmN0b3JzIGZvciB0ZXN0aW5n
IDQtYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zLgotCi0vLyBBIDQtYXJ5IHByZWRpY2F0ZSBmdW5j
dGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUND4KLWJvb2wgUHJlZEZ1bmN0aW9uNChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCkgewotICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgPiAwOwotfQotCi0vLyBUaGUgZm9sbG93
aW5nIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCB0byBjaXJjdW12ZW50IGEgYnVnIGluCi0vLyBn
Y2MgMi45NS4zLCB3aGljaCBzb21ldGltZXMgaGFzIHByb2JsZW0gd2l0aCB0aGUgYWJvdmUgdGVt
cGxhdGUKLS8vIGZ1bmN0aW9uLgotYm9vbCBQcmVkRnVuY3Rpb240SW50KGludCB2MSwgaW50IHYy
LCBpbnQgdjMsIGludCB2NCkgewotICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgPiAwOwotfQot
Ym9vbCBQcmVkRnVuY3Rpb240Qm9vbChCb29sIHYxLCBCb29sIHYyLCBCb29sIHYzLCBCb29sIHY0
KSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCA+IDA7Ci19Ci0KLS8vIEEgNC1hcnkgcHJl
ZGljYXRlIGZ1bmN0b3IuCi1zdHJ1Y3QgUHJlZEZ1bmN0b3I0IHsKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyLAot
ICAgICAgICAgICAgICAgICAgY29uc3QgVDMmIHYzLAotICAgICAgICAgICAgICAgICAgY29uc3Qg
VDQmIHY0KSB7Ci0gICAgcmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ID4gMDsKLSAgfQotfTsKLQot
Ly8gQSA0LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotdGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5jdGlvbjQoY29uc3QgY2hhciogZTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGUzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUNCYgdjQpIHsKLSAgaWYgKFByZWRGdW5jdGlvbjQodjEsIHYyLCB2Mywg
djQpKQotICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJu
IHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIg
PDwgIiArICIgPDwgZTMgPDwgIiArICIgPDwgZTQKLSAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8g
YmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgotICAgICAgPDwgdjEgKyB2MiArIHYzICsg
djQgPDwgIi4iOwotfQotCi0vLyBBIDQtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4K
LXN0cnVjdCBQcmVkRm9ybWF0RnVuY3RvcjQgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gIHRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIGUxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGU0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVDMmIHYzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUNCYgdjQpIGNvbnN0IHsKLSAgICByZXR1cm4gUHJlZEZvcm1hdEZ1bmN0aW9uNChlMSwg
ZTIsIGUzLCBlNCwgdjEsIHYyLCB2MywgdjQpOwotICB9Ci19OwotCi0vLyBUZXN0cyBmb3Ige0VY
UEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNC4KLQotY2xhc3MgUHJlZGljYXRlNFRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
Ci0gICAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IHRydWU7Ci0gICAgZmluaXNoZWRfID0gZmFsc2U7
Ci0gICAgbjFfID0gbjJfID0gbjNfID0gbjRfID0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICAvLyBWZXJpZmllcyB0aGF0IGVhY2ggb2YgdGhlIHByZWRpY2F0ZSdz
IGFyZ3VtZW50cyB3YXMgZXZhbHVhdGVkCi0gICAgLy8gZXhhY3RseSBvbmNlLgotICAgIEVYUEVD
VF9FUSgxLCBuMV8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3Qg
ZXZhbHVhdGUgYXJndW1lbnQgMiAiCi0gICAgICAgICJleGFjdGx5IG9uY2UuIjsKLSAgICBFWFBF
Q1RfRVEoMSwgbjJfKSA8PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0
IGV2YWx1YXRlIGFyZ3VtZW50IDMgIgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7Ci0gICAgRVhQ
RUNUX0VRKDEsIG4zXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4n
dCBldmFsdWF0ZSBhcmd1bWVudCA0ICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4iOwotICAgIEVY
UEVDVF9FUSgxLCBuNF8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRu
J3QgZXZhbHVhdGUgYXJndW1lbnQgNSAiCi0gICAgICAgICJleGFjdGx5IG9uY2UuIjsKLQotICAg
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRyb2wgZmxvdyBpbiB0aGUgdGVzdCBmdW5jdGlvbiBp
cyBleHBlY3RlZC4KLSAgICBpZiAoZXhwZWN0ZWRfdG9fZmluaXNoXyAmJiAhZmluaXNoZWRfKSB7
Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIHVuZXhwYWN0ZWRseSBh
Ym9ydGVkIHRoZSB0ZXN0LiI7Ci0gICAgfSBlbHNlIGlmICghZXhwZWN0ZWRfdG9fZmluaXNoXyAm
JiBmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8PCAiVGhlIGZhaWxlZCBwcmVkaWNhdGUgYXNz
ZXJ0aW9uIGRpZG4ndCBhYm9ydCB0aGUgdGVzdCAiCi0gICAgICAgICAgICAgICAgImFzIGV4cGVj
dGVkLiI7Ci0gICAgfQotICB9Ci0KLSAgLy8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gaXMg
ZXhwZWN0ZWQgdG8gcnVuIHRvIGZpbmlzaC4KLSAgc3RhdGljIGJvb2wgZXhwZWN0ZWRfdG9fZmlu
aXNoXzsKLQotICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBkaWQgcnVuIHRvIGZpbmlz
aC4KLSAgc3RhdGljIGJvb2wgZmluaXNoZWRfOwotCi0gIHN0YXRpYyBpbnQgbjFfOwotICBzdGF0
aWMgaW50IG4yXzsKLSAgc3RhdGljIGludCBuM187Ci0gIHN0YXRpYyBpbnQgbjRfOwotfTsKLQot
Ym9vbCBQcmVkaWNhdGU0VGVzdDo6ZXhwZWN0ZWRfdG9fZmluaXNoXzsKLWJvb2wgUHJlZGljYXRl
NFRlc3Q6OmZpbmlzaGVkXzsKLWludCBQcmVkaWNhdGU0VGVzdDo6bjFfOwotaW50IFByZWRpY2F0
ZTRUZXN0OjpuMl87Ci1pbnQgUHJlZGljYXRlNFRlc3Q6Om4zXzsKLWludCBQcmVkaWNhdGU0VGVz
dDo6bjRfOwotCi10eXBlZGVmIFByZWRpY2F0ZTRUZXN0IEVYUEVDVF9QUkVEX0ZPUk1BVDRUZXN0
OwotdHlwZWRlZiBQcmVkaWNhdGU0VGVzdCBBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdDsKLXR5cGVk
ZWYgUHJlZGljYXRlNFRlc3QgRVhQRUNUX1BSRUQ0VGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlNFRl
c3QgQVNTRVJUX1BSRUQ0VGVzdDsKLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVE
NCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1
aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ0VGVzdCwgRnVuY3Rpb25PbkJ1
aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0aW9uNEludCwKLSAg
ICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAg
ICArK24zXywKLSAgICAgICAgICAgICAgICsrbjRfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0K
LQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVENCB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29s
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7
Ci0gIEVYUEVDVF9QUkVENChQcmVkRnVuY3Rpb240Qm9vbCwKLSAgICAgICAgICAgICAgIEJvb2wo
KytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICBCb29s
KCsrbjNfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuNF8pKTsKLSAgZmluaXNoZWRfID0gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVENCB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3Mp
IHsKLSAgRVhQRUNUX1BSRUQ0KFByZWRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgKytuMV8s
Ci0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAg
ICAgICAgKytuNF8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nl
c3NmdWwgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BS
RUQ0VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVENChQcmVk
RnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAg
Qm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAg
IEJvb2woKytuNF8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBmYWls
ZWQgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0
LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVENChQcmVkRnVuY3Rpb240SW50LAotICAg
ICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAg
ICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAgICBuNF8rKyk7Ci0gICAgZmluaXNoZWRfID0g
dHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDQgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRl
ZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ0VGVzdCwgRnVuY3Rpb25PblVz
ZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0aW9uNEJvb2wsCi0gICAgICAgICAgICAgICAgIEJv
b2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAg
ICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKLSAgICBmaW5p
c2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9Q
UkVENCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdG9yT25C
dWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgRVhQRUNUX1BSRUQ0KFByZWRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgICBu
MV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4zXysrLAot
ICAgICAgICAgICAgICAgICBuNF8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIp
OwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29s
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQ0
KFByZWRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAg
ICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAotICAg
ICAgICAgICAgICAgICBCb29sKG40XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwg
IiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRDRUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNj
ZXNzKSB7Ci0gIEFTU0VSVF9QUkVENChQcmVkRnVuY3Rpb240SW50LAotICAgICAgICAgICAgICAg
KytuMV8sCi0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsrbjNfLAotICAg
ICAgICAgICAgICAgKytuNF8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFT
U0VSVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BS
RUQ0KFByZWRGdW5jdGlvbjRCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAg
ICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBU
ZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFT
U0VSVF9QUkVENFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRf
UFJFRDQoUHJlZEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICArK24xXywKLSAgICAgICAgICAg
ICAgICsrbjJfLAotICAgICAgICAgICAgICAgKytuM18sCi0gICAgICAgICAgICAgICArK240Xyk7
Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRf
UFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRDRUZXN0LCBGdW5j
dG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQ0KFByZWRGdW5jdG9yNCgpLAot
ICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjJfKSwK
LSAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgQm9vbCgrK240Xykp
OwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJF
RDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBi
dWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25C
dWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDQoUHJlZEZ1
bmN0aW9uNEludCwKLSAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgIG4y
XysrLAotICAgICAgICAgICAgICAgICBuM18rKywKLSAgICAgICAgICAgICAgICAgbjRfKyspOwot
ICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQg
QVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVENFRl
c3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9
IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRf
UFJFRDQoUHJlZEZ1bmN0aW9uNEJvb2wsCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAot
ICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuM18r
KyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENCB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRDRUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZh
aWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCi0g
ICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAg
ICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgIG40XysrKTsKLSAgICBmaW5pc2hlZF8g
PSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENCB3
aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0b3JPblVz
ZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVENChQcmVkRnVuY3Rv
cjQoKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJv
b2wobjJfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAg
ICAgQm9vbChuNF8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBw
cmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQp
LgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0aW9uNCwKLSAg
ICAgICAgICAgICAgICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICAgICAgICArK24yXywK
LSAgICAgICAgICAgICAgICAgICAgICArK24zXywKLSAgICAgICAgICAgICAgICAgICAgICArK240
Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVE
X0ZPUk1BVDRUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0aW9uNCwKLSAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRf
KSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1B
VDRUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9S
TUFUNChQcmVkRm9ybWF0RnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXywK
LSAgICAgICAgICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICAgICAgICArK24z
XywKLSAgICAgICAgICAgICAgICAgICAgICArK240Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19
Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlw
ZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPblVzZXJU
eXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9yNCgp
LAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAg
ICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAg
ICAgICAgICAgICAgICAgICAgIEJvb2woKytuNF8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0K
LQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCku
Ci1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZh
aWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQ
RUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rpb240LAotICAgICAgICAgICAgICAgICAg
ICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyspOwotICAg
IGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQ
RUNUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJF
RF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRG
b3JtYXRGdW5jdGlvbjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG40XysrKSk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBF
WFBFQ1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZP
Uk1BVDRUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUNChQcmVkRm9y
bWF0RnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG40XysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9
LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5l
ZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rvck9u
VXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG40XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAg
fSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNCB3
aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0
LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9u
T25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0
RnVuY3Rpb240LAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjRfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNU
X0YoQVNTRVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsK
LSAgQVNTRVJUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rpb240LAotICAgICAgICAgICAg
ICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8p
LAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgICAg
ICAgIEJvb2woKytuNF8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNT
RVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBB
U1NFUlRfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjRfKTsKLSAgZmluaXNo
ZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1B
VDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZv
cm1hdEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9v
bCgrK24zXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBmaW5pc2hl
ZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ0IHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQt
aW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25P
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDQoUHJlZEZvcm1hdEZ1bmN0aW9uNCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBu
M18rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG40XysrKTsKLSAgICBmaW5pc2hlZF8gPSB0
cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1B
VDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1
c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNFRlc3Qs
IEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJF
RF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBC
b29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAg
ICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBC
b29sKG40XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBU
ZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9G
KEFTU0VSVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsK
LSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9yNCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuMl8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbjRfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wp
LgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1
cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5j
dG9yNCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
bjNfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuNF8rKykpOwotICAgIGZpbmlz
aGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLS8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMg
Zm9yIHRlc3RpbmcgNS1hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMuCi0KLS8vIEEgNS1hcnkgcHJl
ZGljYXRlIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLWJvb2wgUHJlZEZ1bmN0aW9uNShU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUpIHsKLSAgcmV0dXJuIHYxICsgdjIgKyB2
MyArIHY0ICsgdjUgPiAwOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJl
IG5lZWRlZCB0byBjaXJjdW12ZW50IGEgYnVnIGluCi0vLyBnY2MgMi45NS4zLCB3aGljaCBzb21l
dGltZXMgaGFzIHByb2JsZW0gd2l0aCB0aGUgYWJvdmUgdGVtcGxhdGUKLS8vIGZ1bmN0aW9uLgot
Ym9vbCBQcmVkRnVuY3Rpb241SW50KGludCB2MSwgaW50IHYyLCBpbnQgdjMsIGludCB2NCwgaW50
IHY1KSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCArIHY1ID4gMDsKLX0KLWJvb2wgUHJl
ZEZ1bmN0aW9uNUJvb2woQm9vbCB2MSwgQm9vbCB2MiwgQm9vbCB2MywgQm9vbCB2NCwgQm9vbCB2
NSkgewotICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgKyB2NSA+IDA7Ci19Ci0KLS8vIEEgNS1h
cnkgcHJlZGljYXRlIGZ1bmN0b3IuCi1zdHJ1Y3QgUHJlZEZ1bmN0b3I1IHsKLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNT4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAg
ICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MywKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2
NSkgewotICAgIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCArIHY1ID4gMDsKLSAgfQotfTsKLQot
Ly8gQSA1LWFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NT4KLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb241KGNvbnN0IGNo
YXIqIGUxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGU0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdjQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUNSYgdjUpIHsKLSAgaWYgKFByZWRG
dW5jdGlvbjUodjEsIHYyLCB2MywgdjQsIHY1KSkKLSAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOwotCi0gIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkKLSAg
ICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0IDw8
ICIgKyAiIDw8IGU1Ci0gICAgICA8PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQg
ZXZhbHVhdGVzIHRvICIKLSAgICAgIDw8IHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPDwgIi4iOwot
fQotCi0vLyBBIDUtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KLXN0cnVjdCBQcmVk
Rm9ybWF0RnVuY3RvcjUgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICB0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogZTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVDImIHYyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFQ0JiB2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDUmIHY1KSBjb25zdCB7Ci0gICAgcmV0dXJuIFByZWRGb3JtYXRGdW5jdGlvbjUoZTEsIGUyLCBl
MywgZTQsIGU1LCB2MSwgdjIsIHYzLCB2NCwgdjUpOwotICB9Ci19OwotCi0vLyBUZXN0cyBmb3Ig
e0VYUEVDVHxBU1NFUlR9X1BSRURfRk9STUFUNS4KLQotY2xhc3MgUHJlZGljYXRlNVRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KSB7Ci0gICAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IHRydWU7Ci0gICAgZmluaXNoZWRfID0gZmFs
c2U7Ci0gICAgbjFfID0gbjJfID0gbjNfID0gbjRfID0gbjVfID0gMDsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICAvLyBWZXJpZmllcyB0aGF0IGVhY2ggb2YgdGhlIHBy
ZWRpY2F0ZSdzIGFyZ3VtZW50cyB3YXMgZXZhbHVhdGVkCi0gICAgLy8gZXhhY3RseSBvbmNlLgot
ICAgIEVYUEVDVF9FUSgxLCBuMV8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlv
biBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMiAiCi0gICAgICAgICJleGFjdGx5IG9uY2UuIjsK
LSAgICBFWFBFQ1RfRVEoMSwgbjJfKSA8PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRp
b24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDMgIgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7
Ci0gICAgRVhQRUNUX0VRKDEsIG4zXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0
aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCA0ICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4i
OwotICAgIEVYUEVDVF9FUSgxLCBuNF8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2Vy
dGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgNSAiCi0gICAgICAgICJleGFjdGx5IG9uY2Uu
IjsKLSAgICBFWFBFQ1RfRVEoMSwgbjVfKSA8PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3Nl
cnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDYgIgotICAgICAgICAiZXhhY3RseSBvbmNl
LiI7Ci0KLSAgICAvLyBWZXJpZmllcyB0aGF0IHRoZSBjb250cm9sIGZsb3cgaW4gdGhlIHRlc3Qg
ZnVuY3Rpb24gaXMgZXhwZWN0ZWQuCi0gICAgaWYgKGV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgIWZp
bmlzaGVkXykgewotICAgICAgRkFJTCgpIDw8ICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiB1bmV4
cGFjdGVkbHkgYWJvcnRlZCB0aGUgdGVzdC4iOwotICAgIH0gZWxzZSBpZiAoIWV4cGVjdGVkX3Rv
X2ZpbmlzaF8gJiYgZmluaXNoZWRfKSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBmYWlsZWQgcHJl
ZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgYWJvcnQgdGhlIHRlc3QgIgotICAgICAgICAgICAgICAg
ICJhcyBleHBlY3RlZC4iOwotICAgIH0KLSAgfQotCi0gIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1
bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJ1biB0byBmaW5pc2guCi0gIHN0YXRpYyBib29sIGV4cGVj
dGVkX3RvX2ZpbmlzaF87Ci0KLSAgLy8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gZGlkIHJ1
biB0byBmaW5pc2guCi0gIHN0YXRpYyBib29sIGZpbmlzaGVkXzsKLQotICBzdGF0aWMgaW50IG4x
XzsKLSAgc3RhdGljIGludCBuMl87Ci0gIHN0YXRpYyBpbnQgbjNfOwotICBzdGF0aWMgaW50IG40
XzsKLSAgc3RhdGljIGludCBuNV87Ci19OwotCi1ib29sIFByZWRpY2F0ZTVUZXN0OjpleHBlY3Rl
ZF90b19maW5pc2hfOwotYm9vbCBQcmVkaWNhdGU1VGVzdDo6ZmluaXNoZWRfOwotaW50IFByZWRp
Y2F0ZTVUZXN0OjpuMV87Ci1pbnQgUHJlZGljYXRlNVRlc3Q6Om4yXzsKLWludCBQcmVkaWNhdGU1
VGVzdDo6bjNfOwotaW50IFByZWRpY2F0ZTVUZXN0OjpuNF87Ci1pbnQgUHJlZGljYXRlNVRlc3Q6
Om41XzsKLQotdHlwZWRlZiBQcmVkaWNhdGU1VGVzdCBFWFBFQ1RfUFJFRF9GT1JNQVQ1VGVzdDsK
LXR5cGVkZWYgUHJlZGljYXRlNVRlc3QgQVNTRVJUX1BSRURfRk9STUFUNVRlc3Q7Ci10eXBlZGVm
IFByZWRpY2F0ZTVUZXN0IEVYUEVDVF9QUkVENVRlc3Q7Ci10eXBlZGVmIFByZWRpY2F0ZTVUZXN0
IEFTU0VSVF9QUkVENVRlc3Q7Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDUg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWls
dC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25CdWls
dEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQ1KFByZWRGdW5jdGlvbjVJbnQsCi0gICAg
ICAgICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAg
KytuM18sCi0gICAgICAgICAgICAgICArK240XywKLSAgICAgICAgICAgICAgICsrbjVfKTsKLSAg
ZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVE
NSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDVUZXN0LCBGdW5jdGlv
bk9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVENShQcmVkRnVuY3Rpb241Qm9vbCwK
LSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24yXyks
Ci0gICAgICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuNF8p
LAotICAgICAgICAgICAgICAgQm9vbCgrK241XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQot
Ci0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGlj
YXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVT
VF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBF
WFBFQ1RfUFJFRDUoUHJlZEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICArK24xXywKLSAgICAg
ICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgKytuM18sCi0gICAgICAgICAgICAgICAr
K240XywKLSAgICAgICAgICAgICAgICsrbjVfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQot
Ly8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgot
VEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBF
WFBFQ1RfUFJFRDUoUHJlZEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSwK
LSAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24zXyks
Ci0gICAgICAgICAgICAgICBCb29sKCsrbjRfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuNV8p
KTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BS
RUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEg
YnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDVUZXN0LCBGdW5jdGlvbk9u
QnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9QUkVENShQcmVkRnVuY3Rpb241SW50LAotICAgICAgICAgICAgICAg
ICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4zXysr
LAotICAgICAgICAgICAgICAgICBuNF8rKywKLSAgICAgICAgICAgICAgICAgbjVfKyspOwotICAg
IGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQ
RUNUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9u
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVENVRlc3Qs
IEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQ1KFByZWRGdW5jdGlvbjVCb29sLAotICAgICAg
ICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0g
ICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG40Xysr
KSwKLSAgICAgICAgICAgICAgICAgQm9vbChuNV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7
Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQ1IHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBl
IChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFp
bHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBF
Q1RfUFJFRDUoUHJlZEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAg
ICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAg
ICAgIG40XysrLAotICAgICAgICAgICAgICAgICBuNV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1
ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDUgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5l
ZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDVUZXN0LCBGdW5jdG9yT25Vc2VyVHlw
ZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAg
RVhQRUNUX1BSRUQ1KFByZWRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysr
KSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wo
bjNfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAg
Qm9vbChuNV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8g
VGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0Yo
QVNTRVJUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NF
UlRfUFJFRDUoUHJlZEZ1bmN0aW9uNUludCwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAgICAg
ICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICArK24zXywKLSAgICAgICAgICAgICAgICsr
bjRfLAotICAgICAgICAgICAgICAgKytuNV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0v
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgot
VEVTVF9GKEFTU0VSVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAg
QVNTRVJUX1BSRUQ1KFByZWRGdW5jdGlvbjVCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24x
XyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytu
M18pLAotICAgICAgICAgICAgICAgQm9vbCgrK240XyksCi0gICAgICAgICAgICAgICBCb29sKCsr
bjVfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBB
U1NFUlRfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rv
ciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwgRnVu
Y3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVENShQcmVkRnVuY3RvcjUo
KSwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAg
ICAgICAgICArK24zXywKLSAgICAgICAgICAgICAgICsrbjRfLAotICAgICAgICAgICAgICAgKytu
NV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Ig
b24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVENShQcmVkRnVuY3RvcjUo
KSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24y
XyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytu
NF8pLAotICAgICAgICAgICAgICAgQm9vbCgrK241XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVT
VF9GKEFTU0VSVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAg
ZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDUoUHJlZEZ1bmN0aW9uNUludCwKLSAgICAgICAgICAg
ICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICBu
M18rKywKLSAgICAgICAgICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgIG41XysrKTsK
LSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVk
IEFTU0VSVF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRDVU
ZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8g
PSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJU
X1BSRUQ1KFByZWRGdW5jdGlvbjVCb29sLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwK
LSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNf
KyspLAotICAgICAgICAgICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAgQm9v
bChuNV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVz
dHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9Q
UkVENVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19m
aW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEFTU0VSVF9QUkVENShQcmVkRnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAgICAgbjFfKyssCi0g
ICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICBuM18rKywKLSAgICAgICAg
ICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgIG41XysrKTsKLSAgICBmaW5pc2hlZF8g
PSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENSB3
aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVENVRlc3QsIEZ1bmN0b3JPblVz
ZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVENShQcmVkRnVuY3Rv
cjUoKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJv
b2wobjJfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAg
ICAgQm9vbChuNF8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjVfKyspKTsKLSAgICBmaW5p
c2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JN
QVQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRF9G
T1JNQVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8s
Ci0gICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAgKytu
M18sCi0gICAgICAgICAgICAgICAgICAgICAgKytuNF8sCi0gICAgICAgICAgICAgICAgICAgICAg
KytuNV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
RVhQRUNUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1Rf
UFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCi0gICAgICAgICAgICAgICAgICAgICAg
Qm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAg
ICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgr
K240XyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK241XykpOwotICBmaW5pc2hlZF8g
PSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUNSB3
aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQt
aW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9u
QnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1
bmN0b3I1KCksCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAg
ICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuM18sCi0gICAgICAgICAgICAg
ICAgICAgICAgKytuNF8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuNV8pOwotICBmaW5pc2hl
ZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFU
NSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNl
ci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBG
dW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUNShQcmVkRm9y
bWF0RnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAg
ICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjNfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRfKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjVfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9G
KEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVE
X0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4x
XysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAg
ICAgICBuM18rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG40XysrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbjVfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0K
LQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChC
b29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBl
RmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBF
WFBFQ1RfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKysp
LAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjVfKysp
KTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BS
RURfRk9STUFUNVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQ1KFBy
ZWRGb3JtYXRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4zXysr
LAotICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuNV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0
cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNU
X0YoRVhQRUNUX1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9G
T1JNQVQ1KFByZWRGb3JtYXRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9v
bChuMV8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9v
bChuNF8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG41XysrKSk7Ci0gICAgZmlu
aXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9S
TUFUNVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURf
Rk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAotICAgICAgICAgICAgICAgICAgICAgICsrbjFf
LAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsr
bjNfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjRfLAotICAgICAgICAgICAgICAgICAgICAg
ICsrbjVfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVs
IEFTU0VSVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJU
X1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJU
X1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAotICAgICAgICAgICAgICAgICAgICAg
IEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAg
ICAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
KytuNF8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuNV8pKTsKLSAgZmluaXNoZWRf
ID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1BVDUg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0
LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0b3JP
bkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRG
dW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjRfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjVfKTsKLSAgZmluaXNo
ZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZPUk1B
VDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDUoUHJlZEZv
cm1hdEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9v
bCgrK24zXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK240XyksCi0gICAgICAgICAg
ICAgICAgICAgICAgQm9vbCgrK241XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBU
ZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1Rf
RihBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkg
ewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9u
NSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG40XysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjVfKyspOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJU
X1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9G
T1JNQVQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19m
aW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEFTU0VSVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8r
KyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEJvb2wobjRfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuNV8r
KykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBm
YWlsZWQgQVNTRVJUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVj
dGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3RvcjUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyss
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKywKLSAgICAgICAgICAgICAgICAgICAgICAg
IG40XysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjVfKyspOwotICAgIGZpbmlzaGVkXyA9
IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9S
TUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEg
dXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0
LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZh
bHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJF
RF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
Qm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAg
Qm9vbChuNF8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG41XysrKSk7Ci0gICAg
ZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YjRkYzdkNDNmZDZmNDhiOWFmYTMyZmNlYWU2M2RhODUzYzY0NDE4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJl
bWF0dXJlX2V4aXRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIFRl
c3QgbWFuaXB1bGF0ZXMgdGhlIHByZW1hdHVyZS1leGl0LWRldGVjdGlvbgotLy8gZmlsZSBjb3Jy
ZWN0bHkuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
LQotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVz
dDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpHZXRFbnY7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDo6U3RhdDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6
OnBvc2l4OjpTdGF0U3RydWN0OwotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBQcmVtYXR1cmVFeGl0
VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IGdpdmVuIGZpbGUgZXhpc3RzLgotICBzdGF0aWMgYm9vbCBGaWxlRXhpc3RzKGNvbnN0IGNoYXIq
IGZpbGVwYXRoKSB7Ci0gICAgU3RhdFN0cnVjdCBzdGF0OwotICAgIHJldHVybiBTdGF0KGZpbGVw
YXRoLCAmc3RhdCkgPT0gMDsKLSAgfQotCi0gcHJvdGVjdGVkOgotICBQcmVtYXR1cmVFeGl0VGVz
dCgpIHsKLSAgICBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID0gR2V0RW52KCJURVNUX1BSRU1B
VFVSRV9FWElUX0ZJTEUiKTsKLQotICAgIC8vIE5vcm1hbGl6ZSBOVUxMIHRvICIiIGZvciBlYXNl
IG9mIGhhbmRsaW5nLgotICAgIGlmIChwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID09IE5VTEwp
IHsKLSAgICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSAiIjsKLSAgICB9Ci0gIH0KLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwcmVtYXR1cmUtZXhpdCBmaWxlIGV4aXN0cy4KLSAg
Ym9vbCBQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpIGNvbnN0IHsKLSAgICByZXR1cm4gRmlsZUV4
aXN0cyhwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfKTsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIHBy
ZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF87Ci19OwotCi10eXBlZGVmIFByZW1hdHVyZUV4aXRUZXN0
IFByZW1hdHVyZUV4aXREZWF0aFRlc3Q7Ci0KLS8vIFRlc3RzIHRoYXQ6Ci0vLyAgIC0gdGhlIHBy
ZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEKLS8vICAg
ICBkZWF0aCB0ZXN0IChFWFBFQ1RfREVBVEgqKSwgYW5kCi0vLyAgIC0gYSBkZWF0aCB0ZXN0IGRv
ZXNuJ3QgaW50ZXJmZXJlIHdpdGggdGhlIG1haW4gdGVzdCBwcm9jZXNzJ3MKLS8vICAgICBoYW5k
bGluZyBvZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KLVRFU1RfRihQcmVtYXR1cmVFeGl0RGVh
dGhUZXN0LCBGaWxlRXhpc3RzRHVyaW5nRXhlY3V0aW9uT2ZEZWF0aFRlc3QpIHsKLSAgaWYgKCpw
cmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID09ICdcMCcpIHsKLSAgICByZXR1cm47Ci0gIH0KLQot
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICAgIC8vIElmIHRoZSBmaWxlIGV4aXN0
cywgY3Jhc2ggdGhlIHByb2Nlc3Mgc3VjaCB0aGF0IHRoZSBtYWluIHRlc3QKLSAgICAgIC8vIHBy
b2Nlc3Mgd2lsbCBjYXRjaCB0aGUgKGV4cGVjdGVkKSBjcmFzaCBhbmQgcmVwb3J0IGEgc3VjY2Vz
czsKLSAgICAgIC8vIG90aGVyd2lzZSBkb24ndCBjcmFzaCwgd2hpY2ggd2lsbCBjYXVzZSB0aGUg
bWFpbiB0ZXN0IHByb2Nlc3MKLSAgICAgIC8vIHRvIHJlcG9ydCB0aGF0IHRoZSBkZWF0aCB0ZXN0
IGhhcyBmYWlsZWQuCi0gICAgICBpZiAoUHJlbWF0dXJlRXhpdEZpbGVFeGlzdHMoKSkgewotICAg
ICAgICBleGl0KDEpOwotICAgICAgfQotICAgIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYQot
Ly8gbm9ybWFsIChub24tZGVhdGgpIHRlc3QuCi1URVNUX0YoUHJlbWF0dXJlRXhpdFRlc3QsIFBy
ZW1hdHVyZUV4aXRGaWxlRXhpc3RzRHVyaW5nVGVzdEV4ZWN1dGlvbikgewotICBpZiAoKnByZW1h
dHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgewotICAgIHJldHVybjsKLSAgfQotCi0gIEVY
UEVDVF9UUlVFKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpCi0gICAgICA8PCAiIGZpbGUgIiA8
PCBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfCi0gICAgICA8PCAiIHNob3VsZCBleGlzdCBkdXJp
bmcgdGVzdCBleGVjdXRpb24sIGJ1dCBkb2Vzbid0LiI7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotICBjb25zdCBpbnQgZXhpdF9jb2RlID0gUlVOX0FMTF9URVNUUygpOwotCi0g
IC8vIFRlc3QgdGhhdCB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBpcyBkZWxldGVkIHVwb24gcmV0
dXJuIGZyb20KLSAgLy8gUlVOX0FMTF9URVNUUygpLgotICBjb25zdCBjaGFyKiBjb25zdCBmaWxl
cGF0aCA9IEdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIik7Ci0gIGlmIChmaWxlcGF0
aCAhPSBOVUxMICYmICpmaWxlcGF0aCAhPSAnXDAnKSB7Ci0gICAgaWYgKFByZW1hdHVyZUV4aXRU
ZXN0OjpGaWxlRXhpc3RzKGZpbGVwYXRoKSkgewotICAgICAgcHJpbnRmKAotICAgICAgICAgICJG
aWxlICVzIHNob3VsZG4ndCBleGlzdCBhZnRlciB0aGUgdGVzdCBwcm9ncmFtIGZpbmlzaGVzLCBi
dXQgZG9lcy4iLAotICAgICAgICAgIGZpbGVwYXRoKTsKLSAgICAgIHJldHVybiAxOwotICAgIH0K
LSAgfQotCi0gIHJldHVybiBleGl0X2NvZGU7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjBhYmNlMTg3MjQ0Y2ZjNDhiM2Nk
NWE2Y2I4MWIzZjllYjlhZDg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjCisrKyAvZGV2L251
bGwKQEAgLTEsNTcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
Ci0vLyBVbml0IHRlc3QgZm9yIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oLgotCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0L3Byb2R1Y3Rpb24uaCIKLQotLy8gVGVz
dHMgdGhhdCBwcml2YXRlIG1lbWJlcnMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gYSBURVNUIGRlY2xh
cmVkIGFzCi0vLyBhIGZyaWVuZCBvZiB0aGUgY2xhc3MuCi1URVNUKFByaXZhdGVDb2RlVGVzdCwg
Q2FuQWNjZXNzUHJpdmF0ZU1lbWJlcnMpIHsKLSAgUHJpdmF0ZUNvZGUgYTsKLSAgRVhQRUNUX0VR
KDAsIGEueF8pOwotCi0gIGEuc2V0X3goMSk7Ci0gIEVYUEVDVF9FUSgxLCBhLnhfKTsKLX0KLQot
dHlwZWRlZiB0ZXN0aW5nOjpUZXN0IFByaXZhdGVDb2RlRml4dHVyZVRlc3Q7Ci0KLS8vIFRlc3Rz
IHRoYXQgcHJpdmF0ZSBtZW1iZXJzIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgVEVTVF9GIGRlY2xh
cmVkCi0vLyBhcyBhIGZyaWVuZCBvZiB0aGUgY2xhc3MuCi1URVNUX0YoUHJpdmF0ZUNvZGVGaXh0
dXJlVGVzdCwgQ2FuQWNjZXNzUHJpdmF0ZU1lbWJlcnMpIHsKLSAgUHJpdmF0ZUNvZGUgYTsKLSAg
RVhQRUNUX0VRKDAsIGEueF8pOwotCi0gIGEuc2V0X3goMik7Ci0gIEVYUEVDVF9FUSgyLCBhLnhf
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0ODEwMTJhZGMyNDA1NGY0YTgxZjNlNzQ5ZThkMjU3NGMzNjRkMDc1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfcmVwZWF0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNTMgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0v
LyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
Ly8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1
dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVGVzdHMgdGhlIC0tZ3Rl
c3RfcmVwZWF0PW51bWJlciBmbGFnLgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8
aW9zdHJlYW0+Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gSW5kaWNhdGVzIHRoYXQg
dGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVt
ZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0v
LyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmlj
ayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0
ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVN
RU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotR1RFU1RfREVD
TEFSRV9zdHJpbmdfKGRlYXRoX3Rlc3Rfc3R5bGUpOwotR1RFU1RfREVDTEFSRV9zdHJpbmdfKGZp
bHRlcik7Ci1HVEVTVF9ERUNMQVJFX2ludDMyXyhyZXBlYXQpOwotCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwotCi11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOwot
dXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhmaWx0ZXIpOwotdXNpbmcgdGVzdGluZzo6R1RFU1Rf
RkxBRyhyZXBlYXQpOwotCi1uYW1lc3BhY2UgewotCi0vLyBXZSBuZWVkIHRoaXMgd2hlbiB3ZSBh
cmUgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNlbGYgYW5kIHRoZXJlZm9yZQotLy8gY2Fubm90IHVz
ZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotI2RlZmluZSBHVEVTVF9DSEVDS19JTlRfRVFfKGV4
cGVjdGVkLCBhY3R1YWwpIFwKLSAgZG8ge1wKLSAgICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsID0g
KGV4cGVjdGVkKTtcCi0gICAgY29uc3QgaW50IGFjdHVhbF92YWwgPSAoYWN0dWFsKTtcCi0gICAg
aWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHBlY3RlZF92YWwgIT0gYWN0dWFsX3Zh
bCkpIHtcCi0gICAgICA6OnN0ZDo6Y291dCA8PCAiVmFsdWUgb2Y6ICIgI2FjdHVhbCAiXG4iXAot
ICAgICAgICAgICAgICAgICAgPDwgIiAgQWN0dWFsOiAiIDw8IGFjdHVhbF92YWwgPDwgIlxuIlwK
LSAgICAgICAgICAgICAgICAgIDw8ICJFeHBlY3RlZDogIiAjZXhwZWN0ZWQgIlxuIlwKLSAgICAg
ICAgICAgICAgICAgIDw8ICJXaGljaCBpczogIiA8PCBleHBlY3RlZF92YWwgPDwgIlxuIjtcCi0g
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKTtcCi0gICAgfVwKLSAgfSB3
aGlsZSAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKLQotCi0vLyBVc2VkIGZv
ciB2ZXJpZnlpbmcgdGhhdCBnbG9iYWwgZW52aXJvbm1lbnQgc2V0LXVwIGFuZCB0ZWFyLWRvd24g
YXJlCi0vLyBpbnNpZGUgdGhlIGd0ZXN0X3JlcGVhdCBsb29wLgotCi1pbnQgZ19lbnZpcm9ubWVu
dF9zZXRfdXBfY291bnQgPSAwOwotaW50IGdfZW52aXJvbm1lbnRfdGVhcl9kb3duX2NvdW50ID0g
MDsKLQotY2xhc3MgTXlFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7
Ci0gcHVibGljOgotICBNeUVudmlyb25tZW50KCkge30KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
eyBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCsrOyB9Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHsgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQrKzsgfQotfTsKLQotLy8gQSB0ZXN0
IHRoYXQgc2hvdWxkIGZhaWwuCi0KLWludCBnX3Nob3VsZF9mYWlsX2NvdW50ID0gMDsKLQotVEVT
VChGb29UZXN0LCBTaG91bGRGYWlsKSB7Ci0gIGdfc2hvdWxkX2ZhaWxfY291bnQrKzsKLSAgRVhQ
RUNUX0VRKDAsIDEpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19Ci0KLS8vIEEgdGVzdCB0aGF0
IHNob3VsZCBwYXNzLgotCi1pbnQgZ19zaG91bGRfcGFzc19jb3VudCA9IDA7Ci0KLVRFU1QoRm9v
VGVzdCwgU2hvdWxkUGFzcykgewotICBnX3Nob3VsZF9wYXNzX2NvdW50Kys7Ci19Ci0KLS8vIEEg
dGVzdCB0aGF0IGNvbnRhaW5zIGEgdGhyZWFkLXNhZmUgZGVhdGggdGVzdCBhbmQgYSBmYXN0IGRl
YXRoCi0vLyB0ZXN0LiAgSXQgc2hvdWxkIHBhc3MuCi0KLWludCBnX2RlYXRoX3Rlc3RfY291bnQg
PSAwOwotCi1URVNUKEJhckRlYXRoVGVzdCwgVGhyZWFkU2FmZUFuZEZhc3QpIHsKLSAgZ19kZWF0
aF90ZXN0X2NvdW50Kys7Ci0KLSAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJl
YWRzYWZlIjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg6OnRlc3Rpbmc6OmludGVybmFs
Ojpwb3NpeDo6QWJvcnQoKSwgIiIpOwotCi0gIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkg
PSAiZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoOjp0ZXN0aW5nOjppbnRlcm5h
bDo6cG9zaXg6OkFib3J0KCksICIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi1p
bnQgZ19wYXJhbV90ZXN0X2NvdW50ID0gMDsKLQotY29uc3QgaW50IGtOdW1iZXJPZlBhcmFtVGVz
dHMgPSAxMDsKLQotY2xhc3MgTXlQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxpbnQ+IHt9OwotCi1URVNUX1AoTXlQYXJhbVRlc3QsIFNob3VsZFBhc3MpIHsKLSAgLy8g
VE9ETyh2bGFkbEBnb29nbGUuY29tKTogTWFrZSBwYXJhbWV0ZXIgdmFsdWUgY2hlY2tpbmcgcm9i
dXN0Ci0gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIFdSVCBvcmRlciBvZiB0ZXN0cy4KLSAg
R1RFU1RfQ0hFQ0tfSU5UX0VRXyhnX3BhcmFtX3Rlc3RfY291bnQgJSBrTnVtYmVyT2ZQYXJhbVRl
c3RzLCBHZXRQYXJhbSgpKTsKLSAgZ19wYXJhbV90ZXN0X2NvdW50Kys7Ci19Ci1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChNeVBhcmFtU2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBN
eVBhcmFtVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKDAsIGtO
dW1iZXJPZlBhcmFtVGVzdHMpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQot
Ly8gUmVzZXRzIHRoZSBjb3VudCBmb3IgZWFjaCB0ZXN0Lgotdm9pZCBSZXNldENvdW50cygpIHsK
LSAgZ19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQgPSAwOwotICBnX2Vudmlyb25tZW50X3RlYXJf
ZG93bl9jb3VudCA9IDA7Ci0gIGdfc2hvdWxkX2ZhaWxfY291bnQgPSAwOwotICBnX3Nob3VsZF9w
YXNzX2NvdW50ID0gMDsKLSAgZ19kZWF0aF90ZXN0X2NvdW50ID0gMDsKLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotICBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAotfQotCi0vLyBDaGVja3MgdGhhdCB0aGUgY291bnQgZm9yIGVhY2ggdGVz
dCBpcyBleHBlY3RlZC4KLXZvaWQgQ2hlY2tDb3VudHMoaW50IGV4cGVjdGVkKSB7Ci0gIEdURVNU
X0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfZW52aXJvbm1lbnRfc2V0X3VwX2NvdW50KTsKLSAg
R1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291
bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX3Nob3VsZF9mYWlsX2NvdW50
KTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19zaG91bGRfcGFzc19jb3VudCk7
Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdfZGVhdGhfdGVzdF9jb3VudCk7Ci0j
aWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCAq
IGtOdW1iZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19QQVJBTV9URVNUCi19Ci0KLS8vIFRlc3RzIHRoZSBiZWhhdmlvciBvZiBHb29nbGUg
VGVzdCB3aGVuIC0tZ3Rlc3RfcmVwZWF0IGlzIG5vdCBzcGVjaWZpZWQuCi12b2lkIFRlc3RSZXBl
YXRVbnNwZWNpZmllZCgpIHsKLSAgUmVzZXRDb3VudHMoKTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VR
XygxLCBSVU5fQUxMX1RFU1RTKCkpOwotICBDaGVja0NvdW50cygxKTsKLX0KLQotLy8gVGVzdHMg
dGhlIGJlaGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4gLS1ndGVzdF9yZXBlYXQgaGFzIHRoZSBn
aXZlbiB2YWx1ZS4KLXZvaWQgVGVzdFJlcGVhdChpbnQgcmVwZWF0KSB7Ci0gIEdURVNUX0ZMQUco
cmVwZWF0KSA9IHJlcGVhdDsKLQotICBSZXNldENvdW50cygpOwotICBHVEVTVF9DSEVDS19JTlRf
RVFfKHJlcGVhdCA+IDAgPyAxIDogMCwgUlVOX0FMTF9URVNUUygpKTsKLSAgQ2hlY2tDb3VudHMo
cmVwZWF0KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgLS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0
X2ZpbHRlciBzcGVjaWZpZXMgYW4gZW1wdHkKLS8vIHNldCBvZiB0ZXN0cy4KLXZvaWQgVGVzdFJl
cGVhdFdpdGhFbXB0eUZpbHRlcihpbnQgcmVwZWF0KSB7Ci0gIEdURVNUX0ZMQUcocmVwZWF0KSA9
IHJlcGVhdDsKLSAgR1RFU1RfRkxBRyhmaWx0ZXIpID0gIk5vbmUiOwotCi0gIFJlc2V0Q291bnRz
KCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgUlVOX0FMTF9URVNUUygpKTsKLSAgQ2hlY2tD
b3VudHMoMCk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIC0tZ3Rlc3RfcmVwZWF0IHdoZW4gLS1ndGVz
dF9maWx0ZXIgc3BlY2lmaWVzIGEgc2V0IG9mCi0vLyBzdWNjZXNzZnVsIHRlc3RzLgotdm9pZCBU
ZXN0UmVwZWF0V2l0aEZpbHRlckZvclN1Y2Nlc3NmdWxUZXN0cyhpbnQgcmVwZWF0KSB7Ci0gIEdU
RVNUX0ZMQUcocmVwZWF0KSA9IHJlcGVhdDsKLSAgR1RFU1RfRkxBRyhmaWx0ZXIpID0gIiotKlNo
b3VsZEZhaWwiOwotCi0gIFJlc2V0Q291bnRzKCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwg
UlVOX0FMTF9URVNUUygpKTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfZW52aXJv
bm1lbnRfc2V0X3VwX2NvdW50KTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfZW52
aXJvbm1lbnRfdGVhcl9kb3duX2NvdW50KTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBnX3No
b3VsZF9mYWlsX2NvdW50KTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhyZXBlYXQsIGdfc2hvdWxk
X3Bhc3NfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwgZ19kZWF0aF90ZXN0
X2NvdW50KTsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICBHVEVTVF9DSEVDS19JTlRfRVFf
KHJlcGVhdCAqIGtOdW1iZXJPZlBhcmFtVGVzdHMsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi19Ci0KLS8vIFRlc3RzIHVzaW5nIC0tZ3Rlc3Rf
cmVwZWF0IHdoZW4gLS1ndGVzdF9maWx0ZXIgc3BlY2lmaWVzIGEgc2V0IG9mCi0vLyBmYWlsZWQg
dGVzdHMuCi12b2lkIFRlc3RSZXBlYXRXaXRoRmlsdGVyRm9yRmFpbGVkVGVzdHMoaW50IHJlcGVh
dCkgewotICBHVEVTVF9GTEFHKHJlcGVhdCkgPSByZXBlYXQ7Ci0gIEdURVNUX0ZMQUcoZmlsdGVy
KSA9ICIqU2hvdWxkRmFpbCI7Ci0KLSAgUmVzZXRDb3VudHMoKTsKLSAgR1RFU1RfQ0hFQ0tfSU5U
X0VRXygxLCBSVU5fQUxMX1RFU1RTKCkpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVhdCwg
Z19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKHJlcGVh
dCwgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFf
KHJlcGVhdCwgZ19zaG91bGRfZmFpbF9jb3VudCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwg
Z19zaG91bGRfcGFzc19jb3VudCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19kZWF0aF90
ZXN0X2NvdW50KTsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICBHVEVTVF9DSEVDS19JTlRf
RVFfKDAsIGdfcGFyYW1fdGVzdF9jb3VudCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9U
RVNUCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy
Z3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICB0ZXN0aW5n
OjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IE15RW52aXJvbm1lbnQpOwotCi0gIFRlc3RS
ZXBlYXRVbnNwZWNpZmllZCgpOwotICBUZXN0UmVwZWF0KDApOwotICBUZXN0UmVwZWF0KDEpOwot
ICBUZXN0UmVwZWF0KDUpOwotCi0gIFRlc3RSZXBlYXRXaXRoRW1wdHlGaWx0ZXIoMik7Ci0gIFRl
c3RSZXBlYXRXaXRoRW1wdHlGaWx0ZXIoMyk7Ci0KLSAgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JT
dWNjZXNzZnVsVGVzdHMoMyk7Ci0KLSAgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWlsZWRUZXN0
cyg0KTsKLQotICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIHZlcmlmeSB0aGF0IHRoZSB0ZXN0cyBp
bmRlZWQgbG9vcCBmb3JldmVyCi0gIC8vIHdoZW4gR1RFU1RfRkxBRyhyZXBlYXQpIGlzIG5lZ2F0
aXZlLCBidXQgdGhpcyB0ZXN0IHdpbGwgYmUgcXVpdGUKLSAgLy8gY29tcGxpY2F0ZWQgdG8gd3Jp
dGUuICBTaW5jZSB0aGlzIGZsYWcgaXMgZm9yIGludGVyYWN0aXZlCi0gIC8vIGRlYnVnZ2luZyBv
bmx5IGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbm9ybWFsIHRlc3QgcmVzdWx0LCBzdWNoIGEKLSAg
Ly8gdGVzdCB3b3VsZCBiZSBhbiBvdmVya2lsbC4KLQotICBwcmludGYoIlBBU1NcbiIpOwotICBy
ZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90
ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDMwZDAzMDNkMTkzNTU0YTVmZDBiOWIxZjZhNTFlZjdkMDlm
MzA2MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwz
MjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5IEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJW
ZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0X3NodWZmbGVfdGVzdF8gcHJv
Z3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgn
Z3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3Ig
dGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0gJ0dURVNUX1RPVEFMX1NIQVJE
UycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfSU5ERVgnCi0KLVRFU1RfRklM
VEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RFU1RTID0gW10KLUFDVElWRV9URVNUUyA9IFtd
Ci1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVEX1RFU1RTID0gW10KLQotU0hVRkZMRURfQUxM
X1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9URVNUUyA9IFtdCi1TSFVGRkxFRF9GSUxURVJF
RF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVEX1RFU1RTID0gW10KLQotCi1kZWYgQWxzb1J1
bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0ZXN0X2ZpbHRlcik6Ci0gIHJldHVybiAnLS1n
dGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVyLCkKLQotCi1kZWYgUmVwZWF0RmxhZyhuKToK
LSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycgJSAobiwpCi0KLQotZGVmIFNodWZmbGVGbGFn
KCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxlJwotCi0KLWRlZiBSYW5kb21TZWVkRmxhZyhu
KToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9zZWVkPSVzJyAlIChuLCkKLQotCi1kZWYgUnVu
QW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncyk6Ci0gICIiIlJ1bnMgdGhlIHRlc3QgcHJv
Z3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGVudmlyb25fY29weSA9IG9zLmVu
dmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51cGRhdGUoZXh0cmFfZW52KQotCi0gIHJldHVy
biBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRdICsgYXJncywgZW52PWVudmly
b25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyhleHRyYV9l
bnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgYSBsaXN0
IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAgICBleHRyYV9lbnY6IGEgbWFwIGZyb20gZW52
aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcwotICAgIGFyZ3M6IGNvbW1hbmQgbGlu
ZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZmbGVfdGVzdF8KLQotICBSZXR1cm5zOgotICAg
IEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBsaXN0IG9mIHRlc3RzIHJ1biBp
biB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9uLgotICAiIiIKLQotICB0ZXN0X2l0ZXJhdGlv
bnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRwdXQoZXh0cmFfZW52LCBhcmdz
KS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLS0nKToKLSAgICAgIHRl
c3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQodGVzdHMpCi0gICAgZWxpZiBs
aW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKSAgIyAnVGVzdENh
c2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0ZXN0X2l0ZXJhdGlvbnMKLQotCi1kZWYgR2V0
VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBjYXNlcyBpbiB0
aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0gIEFyZ3M6Ci0gICAgdGVzdHM6IGEgbGlzdCBv
ZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5zOgotICAgIEEgbGlzdCBvZiB0ZXN0IGNhc2Vz
IGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCi0gICAgQ29uc2VjdXRpdmUg
ZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9jYXNlcyA9IFtdCi0gIGZv
ciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2FzZSA9IHRlc3Quc3BsaXQoJy4nKVswXQotICAg
IGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKLSAgICAgIHRlc3RfY2FzZXMuYXBwZW5k
KHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9jYXNlcwotCi0KLWRlZiBDYWxjdWxhdGVUZXN0
TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0ZXN0cyBydW4gdW5kZXIgZGlm
ZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBBTExfVEVTVFM6Ci0gICAgQUxMX1RFU1RTLmV4
dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbQWxzb1J1bkRpc2Fi
bGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBub3QgQUNUSVZFX1RFU1RTOgotICAgIEFDVElW
RV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbXSlbMF0pCi0KLSAg
aWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJTFRFUkVEX1RFU1RTLmV4dGVuZCgKLSAgICAg
ICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVyRmxhZyhURVNUX0ZJTFRFUild
KVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNUUzoKLSAgICBTSEFSREVEX1RFU1RTLmV4dGVu
ZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZB
UjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJEX0lOREVYX0VO
Vl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSlbMF0pCi0K
LSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKLSAgICBTSFVGRkxFRF9BTExfVEVTVFMuZXh0
ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtBbHNvUnVuRGlzYWJs
ZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKVswXSkKLQot
ICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgIFNIVUZGTEVEX0FDVElWRV9URVNU
Uy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVG
bGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0ZJTFRF
UkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmV4dGVuZChHZXRUZXN0c0Zv
ckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZs
YWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVE
X1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURfU0hBUkRFRF9URVNUUy5leHRlbmQoCi0gICAg
ICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAn
MSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NodWZmbGVGbGFnKCksIFJh
bmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xhc3MgR1Rlc3RTaHVmZmxlVW5pdFRlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRlc3Qgc2h1ZmZsaW5nLiIiIgot
Ci0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxjdWxhdGVUZXN0TGlzdHMoKQotCi0gIGRlZiB0
ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FDVElWRV9URVNUUykp
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVTVFMpLCBsZW4oU0hVRkZMRURf
RklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFNIQVJERURfVEVTVFMp
LCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlQ2hhbmdl
c1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfQUxMX1RFU1RTICE9
IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQotICAgIHNlbGYuYXNzZXJ0XyhTSFVGRkxF
RF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMpCi0g
ICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTICE9IEZJTFRFUkVEX1RFU1RT
LAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9URVNUUykKLSAgICBzZWxmLmFz
c2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVEX1RFU1RTLAotICAgICAgICAg
ICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZUNoYW5n
ZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XyhHZXRUZXN0Q2FzZXMoU0hV
RkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RFU1RTKSwKLSAgICAgICAgICAg
ICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRf
KAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZFX1RFU1RTKSAhPSBHZXRUZXN0
Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FDVElW
RV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZM
RURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxURVJFRF9URVNUUyksCi0gICAg
ICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNUUykpCi0gICAgc2VsZi5hc3Nl
cnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykgIT0gR2V0
VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURf
U0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdFJlcGVhdFRlc3Qoc2Vs
Zik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9y
IHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNI
VUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAotICAgICAgICAgICAgICAgICAgICAg
ICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGlu
IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIFNIVUZG
TEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICcl
cyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxl
RG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxM
X1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxMX1RFU1RTLCAnJXMgaXMgYW4g
aW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZF
X1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNUSVZFX1RFU1RTLCAnJXMgaXMg
YW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklM
VEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBGSUxURVJFRF9URVNUUywg
JyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIFNIVUZG
TEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSEFSREVEX1RF
U1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVm
ZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAgICBmb3IgdGVzdCBpbiBBTExfVEVTVFM6Ci0g
ICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExfVEVTVFMsICclcyBpcyBtaXNz
aW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gQUNUSVZFX1RFU1RTOgotICAgICAgc2Vs
Zi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTLCAnJXMgaXMgbWlzc2luZycg
JSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RFU1RTOgotICAgICAgc2VsZi5h
c3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAl
ICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNUUzoKLSAgICAgIHNlbGYuYXNz
ZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0
ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhUZXN0c0F0RnJvbnQoc2VsZik6
Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQotICAgIGZvciB0ZXN0IGluIFNIVUZG
TEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdEZWF0aFRlc3QuJyBpbiB0ZXN0OgotICAgICAg
ICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5kLAotICAgICAgICAgICAgICAg
ICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVzdCcgJSAodGVzdCwpKQotICAg
ICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBUcnVlCi0KLSAgZGVmIF9W
ZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVzdHMpOgotICAgIHRlc3RfY2Fz
ZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgW3Rlc3RfY2FzZSwgX10gPSB0
ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3RfY2FzZXMgYW5kIHRlc3RfY2FzZXNbLTFdICE9
IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQodGVzdF9jYXNlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQodGVzdF9jYXNlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5vdCBncm91cGVkIHRvZ2V0aGVy
IGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2FzZSwgdGVzdHMpKQot
Ci0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVzdENhc2VzKHNlbGYpOgotICAg
IHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShTSFVGRkxFRF9BTExfVEVTVFMp
Ci0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX0FDVElW
RV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoU0hVRkZM
RURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxl
YXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlUmVzdG9yZXNP
cmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICAjIEdldCB0aGUgdGVzdCBsaXN0cyBp
biBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAxLCAyLAotICAgICMgYW5kIDMg
cmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZmZXJlbnQgc2VlZCBpbiBlYWNo
Ci0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBzdWNjZXNzaXZlIG51bWJlcnMuICBUaGlzIGRl
cGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAgICAjIG1ha2VzIHRoZSB0ZXN0IG11Y2ggZWFz
aWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c19pbl9pdGVyYXRp
b24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVy
YXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygx
KSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMg
d2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJh
dGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9IEdldFRlc3RzRm9yQWxsSXRl
cmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygxKV0p
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRpb24xLCB0ZXN0c193aXRoX3Nl
ZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2Vl
ZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAyIGFib3ZlLiAg
U3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBjb3JyZWN0bHkgcmVzdG9yZXMg
dGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0aGUKLSAgICAjIGJlZ2lubmlu
ZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNfd2l0aF9zZWVkMl0gPSBHZXRUZXN0c0ZvckFs
bEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWco
MildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRlcmF0aW9uMiwgdGVzdHNfd2l0
aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhlIHRlc3RzIHdpdGggcmFuZG9t
IHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBpbiBpdGVyYXRpb24gMyBhYm92
ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAotICAgICMgY29ycmVjdGx5IHJlc3Rv
cmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcgYXQgdGhlCi0gICAgIyBiZWdp
bm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rlc3RzX3dpdGhfc2VlZDNdID0gR2V0VGVzdHNG
b3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRG
bGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2luX2l0ZXJhdGlvbjMsIHRlc3Rz
X3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlR2VuZXJhdGVzTmV3T3JkZXJJbkVhY2hJ
dGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2luX2l0ZXJhdGlvbjEsIHRlc3RzX2luX2l0ZXJh
dGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAgICBHZXRUZXN0c0ZvckFsbEl0
ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFn
KDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBzZWxmLmFzc2VydF8odGVzdHNfaW5faXRlcmF0
aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAotICAgICAgICAgICAgICAgICB0ZXN0c19pbl9p
dGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9pdGVyYXRpb24xICE9IHRlc3Rz
X2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAgICAgIHRlc3RzX2luX2l0ZXJhdGlvbjEpCi0g
ICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0gdGVzdHNfaW5faXRlcmF0aW9u
MywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9uMikKLQotICBkZWYgdGVzdFNo
dWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2VsZik6Ci0gICAgIyBJZiB3ZSBy
dW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0cyBzaG91bGQgYmUgcnVuIGlu
Ci0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9tIHNlZWRzIHVzZWQgYnkgdGhl
IHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxf
U0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2VlZEZsYWcoMSldKQotICAg
IFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZB
UjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9J
TkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCldKQotICAgIFt0ZXN0czNdID0g
R2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFS
OiAnMid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxl
RmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQotICAgIHNvcnRlZF9zaGFyZGVkX3Rlc3RzID0g
dGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAgc29ydGVkX3NoYXJkZWRfdGVzdHMuc29ydCgp
Ci0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cy5l
eHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRlZF9hY3RpdmVfdGVzdHMuc29ydCgpCi0gICAg
c2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBzb3J0ZWRfc2hhcmRlZF90ZXN0
cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmZiNDQxYmQ0ZDQ2NjIxZjY5ODdjYWQ0Yjc2YWU1OTQ5OWQ3ZmZkMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVmVyaWZpZXMgdGhh
dCB0ZXN0IHNodWZmbGluZyB3b3Jrcy4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5h
bWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKLXVz
aW5nIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7
Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3Rl
bmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRU
ZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLQotLy8gVGhlIHRl
c3QgbWV0aG9kcyBhcmUgZW1wdHksIGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFt
IGlzCi0vLyB0byBwcmludCB0aGUgdGVzdCBuYW1lcyBiZWZvcmUvYWZ0ZXIgc2h1ZmZsaW5nLgot
Ci1jbGFzcyBBIDogcHVibGljIFRlc3Qge307Ci1URVNUX0YoQSwgQSkge30KLVRFU1RfRihBLCBC
KSB7fQotCi1URVNUKEFEZWF0aFRlc3QsIEEpIHt9Ci1URVNUKEFEZWF0aFRlc3QsIEIpIHt9Ci1U
RVNUKEFEZWF0aFRlc3QsIEMpIHt9Ci0KLVRFU1QoQiwgQSkge30KLVRFU1QoQiwgQikge30KLVRF
U1QoQiwgQykge30KLVRFU1QoQiwgRElTQUJMRURfRCkge30KLVRFU1QoQiwgRElTQUJMRURfRSkg
e30KLQotVEVTVChCRGVhdGhUZXN0LCBBKSB7fQotVEVTVChCRGVhdGhUZXN0LCBCKSB7fQotCi1U
RVNUKEMsIEEpIHt9Ci1URVNUKEMsIEIpIHt9Ci1URVNUKEMsIEMpIHt9Ci1URVNUKEMsIERJU0FC
TEVEX0QpIHt9Ci0KLVRFU1QoQ0RlYXRoVGVzdCwgQSkge30KLQotVEVTVChESVNBQkxFRF9ELCBB
KSB7fQotVEVTVChESVNBQkxFRF9ELCBESVNBQkxFRF9CKSB7fQotCi0vLyBUaGlzIHByaW50ZXIg
cHJpbnRzIHRoZSBmdWxsIHRlc3QgbmFtZXMgb25seSwgc3RhcnRpbmcgZWFjaCB0ZXN0Ci0vLyBp
dGVyYXRpb24gd2l0aCBhICItLS0tIiBtYXJrZXIuCi1jbGFzcyBUZXN0TmFtZVByaW50ZXIgOiBw
dWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQg
T25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qIHVuaXRfdGVzdCAqLywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKiBpdGVyYXRpb24gKi8pIHsK
LSAgICBwcmludGYoIi0tLS1cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0
KGNvbnN0IFRlc3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICBwcmludGYoIiVzLiVzXG4iLCB0ZXN0
X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gIH0KLX07Ci0KLX0g
IC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIC8vIFJlcGxhY2VzIHRoZSBkZWZhdWx0IHBy
aW50ZXIgd2l0aCBUZXN0TmFtZVByaW50ZXIsIHdoaWNoIHByaW50cwotICAvLyB0aGUgdGVzdCBu
YW1lIG9ubHkuCi0gIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmxpc3RlbmVycygpOwotICBkZWxldGUgbGlzdGVuZXJzLlJlbGVhc2UobGlz
dGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3
IFRlc3ROYW1lUHJpbnRlcik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2NkMDkxYTI4MWQzYzMwMmVjNmU3MzYwMjJmZDYxODgxNmMxMTlkNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8KLS8vIFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGl0J3MgcG9zc2libGUgdG8gdXNlIEdvb2dsZSBUZXN0IGJ5IGluY2x1
ZGluZwotLy8gdGhlIGd0ZXN0LmggaGVhZGVyIGZpbGUgYWxvbmUuCi0KLSNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi12b2lkIFN1YnJvdXRpbmUoKSB7Ci0gIEVYUEVD
VF9FUSg0MiwgNDIpOwotfQotCi1URVNUKE5vRmF0YWxGYWlsdXJlVGVzdCwgRXhwZWN0Tm9GYXRh
bEZhaWx1cmUpIHsKLSAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoOyk7Ci0gIEVYUEVDVF9OT19G
QVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSk7Ci0gIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKFN1YnJv
dXRpbmUoKSk7Ci0gIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHsgU1VDQ0VFRCgpOyB9KTsKLX0K
LQotVEVTVChOb0ZhdGFsRmFpbHVyZVRlc3QsIEFzc2VydE5vRmF0YWxGYWlsdXJlKSB7Ci0gIEFT
U0VSVF9OT19GQVRBTF9GQUlMVVJFKDspOwotICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShTVUND
RUVEKCkpOwotICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShTdWJyb3V0aW5lKCkpOwotICBBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRSh7IFNVQ0NFRUQoKTsgfSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU3ZGFhNDMwZGZiZTUwZjEwNGEzYTQzYjdmMGI0YTZiZTIxNzMyNDIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9zdHJlc3NfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDI1NiArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9U
UkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgY2FuIGJlCi0vLyB1c2Vk
IGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3VycmVudGx5LgotCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotLy8gV2UgbXVzdCBkZWZpbmUgdGhpcyBtYWNybyBpbiBvcmRlciB0byAjaW5jbHVkZQotLy8g
Z3Rlc3QtaW50ZXJuYWwtaW5sLmguICBUaGlzIGlzIGhvdyBHb29nbGUgVGVzdCBwcmV2ZW50cyBh
IHVzZXIgZnJvbQotLy8gYWNjaWRlbnRhbGx5IGRlcGVuZGluZyBvbiBpdHMgaW50ZXJuYWwgaW1w
bGVtZW50YXRpb24uCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3Bh
Y2UgewotCi11c2luZyBpbnRlcm5hbDo6Tm90aWZpY2F0aW9uOwotdXNpbmcgaW50ZXJuYWw6OlRl
c3RQcm9wZXJ0eUtleUlzOwotdXNpbmcgaW50ZXJuYWw6OlRocmVhZFdpdGhQYXJhbTsKLXVzaW5n
IGludGVybmFsOjpzY29wZWRfcHRyOwotCi0vLyBJbiBvcmRlciB0byBydW4gdGVzdHMgaW4gdGhp
cyBmaWxlLCBmb3IgcGxhdGZvcm1zIHdoZXJlIEdvb2dsZSBUZXN0IGlzCi0vLyB0aHJlYWQgc2Fm
ZSwgaW1wbGVtZW50IFRocmVhZFdpdGhQYXJhbS4gU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpdHMg
QVBJCi0vLyBpbiBndGVzdC1wb3J0LmgsIHdoZXJlIGl0IGlzIGRlZmluZWQgZm9yIGFscmVhZHkg
c3VwcG9ydGVkIHBsYXRmb3Jtcy4KLQotLy8gSG93IG1hbnkgdGhyZWFkcyB0byBjcmVhdGU/Ci1j
b25zdCBpbnQga1RocmVhZENvdW50ID0gNTA7Ci0KLXN0ZDo6c3RyaW5nIElkVG9LZXkoaW50IGlk
LCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKLSAgTWVzc2FnZSBrZXk7Ci0gIGtleSA8PCAia2V5XyIg
PDwgaWQgPDwgIl8iIDw8IHN1ZmZpeDsKLSAgcmV0dXJuIGtleS5HZXRTdHJpbmcoKTsKLX0KLQot
c3RkOjpzdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKLSAgTWVzc2FnZSBpZF9tZXNzYWdlOwot
ICBpZF9tZXNzYWdlIDw8IGlkOwotICByZXR1cm4gaWRfbWVzc2FnZS5HZXRTdHJpbmcoKTsKLX0K
LQotdm9pZCBFeHBlY3RLZXlBbmRWYWx1ZVdlcmVSZWNvcmRlZEZvcklkKAotICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFRlc3RQcm9wZXJ0eT4mIHByb3BlcnRpZXMsCi0gICAgaW50IGlkLCBjb25zdCBj
aGFyKiBzdWZmaXgpIHsKLSAgVGVzdFByb3BlcnR5S2V5SXMgbWF0Y2hlc19rZXkoSWRUb0tleShp
ZCwgc3VmZml4KS5jX3N0cigpKTsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFByb3BlcnR5Pjo6
Y29uc3RfaXRlcmF0b3IgcHJvcGVydHkgPQotICAgICAgc3RkOjpmaW5kX2lmKHByb3BlcnRpZXMu
YmVnaW4oKSwgcHJvcGVydGllcy5lbmQoKSwgbWF0Y2hlc19rZXkpOwotICBBU1NFUlRfVFJVRShw
cm9wZXJ0eSAhPSBwcm9wZXJ0aWVzLmVuZCgpKQotICAgICAgPDwgImV4cGVjdGluZyAiIDw8IHN1
ZmZpeCA8PCAiIHZhbHVlIGZvciBpZCAiIDw8IGlkOwotICBFWFBFQ1RfU1RSRVEoSWRUb1N0cmlu
ZyhpZCkuY19zdHIoKSwgcHJvcGVydHktPnZhbHVlKCkpOwotfQotCi0vLyBDYWxscyBhIGxhcmdl
IG51bWJlciBvZiBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCB3aGVyZSBleGFjdGx5IG9uZSBvZiB0
aGVtCi0vLyB3aWxsIGZhaWwuCi12b2lkIE1hbnlBc3NlcnRzKGludCBpZCkgewotICBHVEVTVF9M
T0dfKElORk8pIDw8ICJUaHJlYWQgIyIgPDwgaWQgPDwgIiBydW5uaW5nLi4uIjsKLQotICBTQ09Q
RURfVFJBQ0UoTWVzc2FnZSgpIDw8ICJUaHJlYWQgIyIgPDwgaWQpOwotCi0gIGZvciAoaW50IGkg
PSAwOyBpIDwga1RocmVhZENvdW50OyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UoTWVzc2FnZSgp
IDw8ICJJdGVyYXRpb24gIyIgPDwgaSk7Ci0KLSAgICAvLyBBIGJ1bmNoIG9mIGFzc2VydGlvbnMg
dGhhdCBzaG91bGQgc3VjY2VlZC4KLSAgICBFWFBFQ1RfVFJVRSh0cnVlKTsKLSAgICBBU1NFUlRf
RkFMU0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci0gICAgRVhQRUNUX1NUUkVR
KCJhIiwgImEiKTsKLSAgICBBU1NFUlRfTEUoNSwgNik7Ci0gICAgRVhQRUNUX0VRKGksIGkpIDw8
ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci0KLSAgICAvLyBSZWNvcmRQcm9wZXJ0eSgpIHNob3Vs
ZCBpbnRlcmFjdCBzYWZlbHkgd2l0aCBvdGhlciB0aHJlYWRzIGFzIHdlbGwuCi0gICAgLy8gVGhl
IHNoYXJlZF9rZXkgZm9yY2VzIHByb3BlcnR5IHVwZGF0ZXMuCi0gICAgVGVzdDo6UmVjb3JkUHJv
cGVydHkoSWRUb0tleShpZCwgInN0cmluZyIpLmNfc3RyKCksIElkVG9TdHJpbmcoaWQpLmNfc3Ry
KCkpOwotICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KElkVG9LZXkoaWQsICJpbnQiKS5jX3N0cigp
LCBpZCk7Ci0gICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoInNoYXJlZF9rZXkiLCBJZFRvU3RyaW5n
KGlkKS5jX3N0cigpKTsKLQotICAgIC8vIFRoaXMgYXNzZXJ0aW9uIHNob3VsZCBmYWlsIGtUaHJl
YWRDb3VudCB0aW1lcyBwZXIgdGhyZWFkLiAgSXQKLSAgICAvLyBpcyBmb3IgdGVzdGluZyB3aGV0
aGVyIEdvb2dsZSBUZXN0IGNhbiBoYW5kbGUgZmFpbGVkIGFzc2VydGlvbnMgaW4gYQotICAgIC8v
IG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0gICAgRVhQRUNUX0xUKGksIDApIDw8ICJUaGlzIHNo
b3VsZCBhbHdheXMgZmFpbC4iOwotICB9Ci19Ci0KLXZvaWQgQ2hlY2tUZXN0RmFpbHVyZUNvdW50
KGludCBleHBlY3RlZF9mYWlsdXJlcykgewotICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICBjb25zdCBU
ZXN0UmVzdWx0KiBjb25zdCByZXN1bHQgPSBpbmZvLT5yZXN1bHQoKTsKLSAgR1RFU1RfQ0hFQ0tf
KGV4cGVjdGVkX2ZhaWx1cmVzID09IHJlc3VsdC0+dG90YWxfcGFydF9jb3VudCgpKQotICAgICAg
PDwgIkxvZ2dlZCAiIDw8IHJlc3VsdC0+dG90YWxfcGFydF9jb3VudCgpIDw8ICIgZmFpbHVyZXMg
IgotICAgICAgPDwgIiB2cy4gIiA8PCBleHBlY3RlZF9mYWlsdXJlcyA8PCAiIGV4cGVjdGVkIjsK
LX0KLQotLy8gVGVzdHMgdXNpbmcgU0NPUEVEX1RSQUNFKCkgYW5kIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMgaW4gbWFueSB0aHJlYWRzCi0vLyBjb25jdXJyZW50bHkuCi1URVNUKFN0cmVzc1Rlc3Qs
IENhblVzZVNjb3BlZFRyYWNlQW5kQXNzZXJ0aW9uc0luTWFueVRocmVhZHMpIHsKLSAgewotICAg
IHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPGludD4gPiB0aHJlYWRzW2tUaHJlYWRDb3VudF07
Ci0gICAgTm90aWZpY2F0aW9uIHRocmVhZHNfY2FuX3N0YXJ0OwotICAgIGZvciAoaW50IGkgPSAw
OyBpICE9IGtUaHJlYWRDb3VudDsgaSsrKQotICAgICAgdGhyZWFkc1tpXS5yZXNldChuZXcgVGhy
ZWFkV2l0aFBhcmFtPGludD4oJk1hbnlBc3NlcnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFydCkpOwotCi0gICAgdGhyZWFkc19j
YW5fc3RhcnQuTm90aWZ5KCk7Ci0KLSAgICAvLyBCbG9ja3MgdW50aWwgYWxsIHRoZSB0aHJlYWRz
IGFyZSBkb25lLgotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGtUaHJlYWRDb3VudDsgaSsrKQot
ICAgICAgdGhyZWFkc1tpXS0+Sm9pbigpOwotICB9Ci0KLSAgLy8gRW5zdXJlcyB0aGF0IGtUaHJl
YWRDb3VudCprVGhyZWFkQ291bnQgZmFpbHVyZXMgaGF2ZSBiZWVuIHJlcG9ydGVkLgotICBjb25z
dCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOwotICBjb25zdCBUZXN0UmVzdWx0KiBjb25zdCByZXN1bHQgPSBpbmZvLT5y
ZXN1bHQoKTsKLQotICBzdGQ6OnZlY3RvcjxUZXN0UHJvcGVydHk+IHByb3BlcnRpZXM7Ci0gIC8v
IFdlIGhhdmUgbm8gYWNjZXNzIHRvIHRoZSBUZXN0UmVzdWx0J3MgbGlzdCBvZiBwcm9wZXJ0aWVz
IGJ1dCB3ZSBjYW4KLSAgLy8gY29weSB0aGVtIG9uZSBieSBvbmUuCi0gIGZvciAoaW50IGkgPSAw
OyBpIDwgcmVzdWx0LT50ZXN0X3Byb3BlcnR5X2NvdW50KCk7ICsraSkKLSAgICBwcm9wZXJ0aWVz
LnB1c2hfYmFjayhyZXN1bHQtPkdldFRlc3RQcm9wZXJ0eShpKSk7Ci0KLSAgRVhQRUNUX0VRKGtU
aHJlYWRDb3VudCAqIDIgKyAxLCByZXN1bHQtPnRlc3RfcHJvcGVydHlfY291bnQoKSkKLSAgICAg
IDw8ICJTdHJpbmcgYW5kIGludCB2YWx1ZXMgcmVjb3JkZWQgb24gZWFjaCB0aHJlYWQsICIKLSAg
ICAgIDw8ICJhcyB3ZWxsIGFzIG9uZSBzaGFyZWRfa2V5IjsKLSAgZm9yIChpbnQgaSA9IDA7IGkg
PCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIEV4cGVjdEtleUFuZFZhbHVlV2VyZVJlY29yZGVk
Rm9ySWQocHJvcGVydGllcywgaSwgInN0cmluZyIpOwotICAgIEV4cGVjdEtleUFuZFZhbHVlV2Vy
ZVJlY29yZGVkRm9ySWQocHJvcGVydGllcywgaSwgImludCIpOwotICB9Ci0gIENoZWNrVGVzdEZh
aWx1cmVDb3VudChrVGhyZWFkQ291bnQqa1RocmVhZENvdW50KTsKLX0KLQotdm9pZCBGYWlsaW5n
VGhyZWFkKGJvb2wgaXNfZmF0YWwpIHsKLSAgaWYgKGlzX2ZhdGFsKQotICAgIEZBSUwoKSA8PCAi
RmF0YWwgZmFpbHVyZSBpbiBzb21lIG90aGVyIHRocmVhZC4gIgotICAgICAgICAgICA8PCAiKFRo
aXMgZmFpbHVyZSBpcyBleHBlY3RlZC4pIjsKLSAgZWxzZQotICAgIEFERF9GQUlMVVJFKCkgPDwg
Ik5vbi1mYXRhbCBmYWlsdXJlIGluIHNvbWUgb3RoZXIgdGhyZWFkLiAiCi0gICAgICAgICAgICAg
ICAgICA8PCAiKFRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4pIjsKLX0KLQotdm9pZCBHZW5lcmF0
ZUZhdGFsRmFpbHVyZUluQW5vdGhlclRocmVhZChib29sIGlzX2ZhdGFsKSB7Ci0gIFRocmVhZFdp
dGhQYXJhbTxib29sPiB0aHJlYWQoJkZhaWxpbmdUaHJlYWQsIGlzX2ZhdGFsLCBOVUxMKTsKLSAg
dGhyZWFkLkpvaW4oKTsKLX0KLQotVEVTVChOb0ZhdGFsRmFpbHVyZVRlc3QsIEV4cGVjdE5vRmF0
YWxGYWlsdXJlSWdub3Jlc0ZhaWx1cmVzSW5PdGhlclRocmVhZHMpIHsKLSAgRVhQRUNUX05PX0ZB
VEFMX0ZBSUxVUkUoR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQodHJ1ZSkpOwot
ICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBmYWlsdXJlICh0aGUgb25lIGZyb20KLSAgLy8g
R2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQoKSksIHNpbmNlIHRoZSBFWFBFQ1Rf
Tk9fRkFUQUxfRkFJTFVSRQotICAvLyBzaG91bGQgc3VjY2VlZC4KLSAgQ2hlY2tUZXN0RmFpbHVy
ZUNvdW50KDEpOwotfQotCi12b2lkIEFzc2VydE5vRmF0YWxGYWlsdXJlSWdub3Jlc0ZhaWx1cmVz
SW5PdGhlclRocmVhZHMoKSB7Ci0gIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEdlbmVyYXRlRmF0
YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKHRydWUpKTsKLX0KLVRFU1QoTm9GYXRhbEZhaWx1cmVU
ZXN0LCBBc3NlcnROb0ZhdGFsRmFpbHVyZUlnbm9yZXNGYWlsdXJlc0luT3RoZXJUaHJlYWRzKSB7
Ci0gIC8vIFVzaW5nIGEgc3Vicm91dGluZSwgdG8gbWFrZSBzdXJlLCB0aGF0IHRoZSB0ZXN0IGNv
bnRpbnVlcy4KLSAgQXNzZXJ0Tm9GYXRhbEZhaWx1cmVJZ25vcmVzRmFpbHVyZXNJbk90aGVyVGhy
ZWFkcygpOwotICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBmYWlsdXJlICh0aGUgb25lIGZy
b20KLSAgLy8gR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQoKSksIHNpbmNlIHRo
ZSBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRQotICAvLyBzaG91bGQgc3VjY2VlZC4KLSAgQ2hlY2tU
ZXN0RmFpbHVyZUNvdW50KDEpOwotfQotCi1URVNUKEZhdGFsRmFpbHVyZVRlc3QsIEV4cGVjdEZh
dGFsRmFpbHVyZUlnbm9yZXNGYWlsdXJlc0luT3RoZXJUaHJlYWRzKSB7Ci0gIC8vIFRoaXMgc3Rh
dGVtZW50IHNob3VsZCBmYWlsLCBzaW5jZSB0aGUgY3VycmVudCB0aHJlYWQgZG9lc24ndCBnZW5l
cmF0ZSBhCi0gIC8vIGZhdGFsIGZhaWx1cmUsIG9ubHkgYW5vdGhlciBvbmUgZG9lcy4KLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQodHJ1
ZSksICJleHBlY3RlZCIpOwotICBDaGVja1Rlc3RGYWlsdXJlQ291bnQoMik7Ci19Ci0KLVRFU1Qo
RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJl
YWRzKSB7Ci0gIC8vIFRoaXMgc3RhdGVtZW50IHNob3VsZCBzdWNjZWVkLCBiZWNhdXNlIGZhaWx1
cmVzIGluIGFsbCB0aHJlYWRzIGFyZQotICAvLyBjb25zaWRlcmVkLgotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUygKLSAgICAgIEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90
aGVyVGhyZWFkKHRydWUpLCAiZXhwZWN0ZWQiKTsKLSAgQ2hlY2tUZXN0RmFpbHVyZUNvdW50KDAp
OwotICAvLyBXZSBuZWVkIHRvIGFkZCBhIGZhaWx1cmUsIGJlY2F1c2UgbWFpbigpIGNoZWNrcyB0
aGF0IHRoZXJlIGFyZSBmYWlsdXJlcy4KLSAgLy8gQnV0IHdoZW4gb25seSB0aGlzIHRlc3QgaXMg
cnVuLCB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZmFpbHVyZXMuCi0gIEFERF9GQUlMVVJFKCkgPDwg
IlRoaXMgaXMgYW4gZXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLX0KLQotVEVTVChOb25G
YXRhbEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVJZ25vcmVzRmFpbHVyZXNJbk90
aGVyVGhyZWFkcykgewotICAvLyBUaGlzIHN0YXRlbWVudCBzaG91bGQgZmFpbCwgc2luY2UgdGhl
IGN1cnJlbnQgdGhyZWFkIGRvZXNuJ3QgZ2VuZXJhdGUgYQotICAvLyBmYXRhbCBmYWlsdXJlLCBv
bmx5IGFub3RoZXIgb25lIGRvZXMuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEdlbmVyYXRl
RmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIik7Ci0gIENoZWNrVGVzdEZhaWx1cmVDb3VudCgyKTsKLX0KLQotVEVT
VChOb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVP
bkFsbFRocmVhZHMpIHsKLSAgLy8gVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIHN1Y2NlZWQsIGJlY2F1
c2UgZmFpbHVyZXMgaW4gYWxsIHRocmVhZHMgYXJlCi0gIC8vIGNvbnNpZGVyZWQuCi0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKAotICAgICAgR2VuZXJhdGVGYXRhbEZh
aWx1cmVJbkFub3RoZXJUaHJlYWQoZmFsc2UpLCAiZXhwZWN0ZWQiKTsKLSAgQ2hlY2tUZXN0RmFp
bHVyZUNvdW50KDApOwotICAvLyBXZSBuZWVkIHRvIGFkZCBhIGZhaWx1cmUsIGJlY2F1c2UgbWFp
bigpIGNoZWNrcyB0aGF0IHRoZXJlIGFyZSBmYWlsdXJlcywKLSAgLy8gQnV0IHdoZW4gb25seSB0
aGlzIHRlc3QgaXMgcnVuLCB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZmFpbHVyZXMuCi0gIEFERF9G
QUlMVVJFKCkgPDwgIlRoaXMgaXMgYW4gZXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOwotCi0gIGNvbnN0IGludCByZXN1bHQgPSBSVU5fQUxMX1RFU1RTKCk7ICAvLyBFeHBl
Y3RlZCB0byBmYWlsLgotICBHVEVTVF9DSEVDS18ocmVzdWx0ID09IDEpIDw8ICJSVU5fQUxMX1RF
U1RTKCkgZGlkIG5vdCBmYWlsIGFzIGV4cGVjdGVkIjsKLQotICBwcmludGYoIlxuUEFTU1xuIik7
Ci0gIHJldHVybiAwOwotfQotCi0jZWxzZQotVEVTVChTdHJlc3NUZXN0LAotICAgICBESVNBQkxF
RF9UaHJlYWRTYWZldHlUZXN0c0FyZVNraXBwZWRXaGVuR29vZ2xlVGVzdElzTm90VGhyZWFkU2Fm
ZSkgewotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwot
fQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rlc3Rf
dXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRhY2QzNmM5NzVjMGExYzI4
ZTVlNTBjZDc5M2ExMzE5MDc3NDUwYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCB1dGlsaXRpZXMgZm9yIEdvb2dsZSBDKysgVGVz
dGluZyBGcmFtZXdvcmsuIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbiknCi0KLWltcG9ydCBhdGV4aXQKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1w
b3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdW5pdHRlc3QKLV90ZXN0X21vZHVsZSA9
IHVuaXR0ZXN0Ci0KLSMgU3VwcHJlc3NlcyB0aGUgJ0ltcG9ydCBub3QgYXQgdGhlIHRvcCBvZiB0
aGUgZmlsZScgbGludCBjb21wbGFpbnQuCi0jIHB5bGludDogZGlzYWJsZS1tc2c9QzYyMDQKLXRy
eToKLSAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgX1NVQlBST0NFU1NfTU9EVUxFX0FWQUlMQUJMRSA9
IFRydWUKLWV4Y2VwdDoKLSAgaW1wb3J0IHBvcGVuMgotICBfU1VCUFJPQ0VTU19NT0RVTEVfQVZB
SUxBQkxFID0gRmFsc2UKLSMgcHlsaW50OiBlbmFibGUtbXNnPUM2MjA0Ci0KLUdURVNUX09VVFBV
VF9WQVJfTkFNRSA9ICdHVEVTVF9PVVRQVVQnCi0KLUlTX1dJTkRPV1MgPSBvcy5uYW1lID09ICdu
dCcKLUlTX0NZR1dJTiA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgJ0NZR1dJTicgaW4gb3MudW5h
bWUoKVswXQotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUg
cGF0aCB0byB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KLVBSRU1BVFVSRV9FWElUX0ZJTEVfRU5W
X1ZBUiA9ICdURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUnCi0KLWVudmlyb24gPSBvcy5lbnZpcm9u
LmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUpOgotICAiIiJTZXRzL3Vu
c2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlLiIiIgotCi0gIGlm
IHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmlyb25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlm
IGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwgZW52aXJvbltlbnZfdmFyXQotCi0KLSMgSGVy
ZSB3ZSBleHBvc2UgYSBjbGFzcyBmcm9tIGEgcGFydGljdWxhciBtb2R1bGUsIGRlcGVuZGluZyBv
biB0aGUKLSMgZW52aXJvbm1lbnQuIFRoZSBjb21tZW50IHN1cHByZXNzZXMgdGhlICdJbnZhbGlk
IHZhcmlhYmxlIG5hbWUnIGxpbnQKLSMgY29tcGxhaW50LgotVGVzdENhc2UgPSBfdGVzdF9tb2R1
bGUuVGVzdENhc2UgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQotCi0jIEluaXRpYWxseSBt
YXBzIGEgZmxhZyB0byBpdHMgZGVmYXVsdCB2YWx1ZS4gQWZ0ZXIKLSMgX1BhcnNlQW5kU3RyaXBH
VGVzdEZsYWdzKCkgaXMgY2FsbGVkLCBtYXBzIGEgZmxhZyB0byBpdHMgYWN0dWFsIHZhbHVlLgot
X2ZsYWdfbWFwID0geydzb3VyY2VfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSwK
LSAgICAgICAgICAgICAnYnVpbGRfZGlyJzogb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKX0K
LV9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gRmFsc2UKLQotCi1kZWYgX1BhcnNlQW5kU3RyaXBH
VGVzdEZsYWdzKGFyZ3YpOgotICAiIiJQYXJzZXMgYW5kIHN0cmlwcyBHb29nbGUgVGVzdCBmbGFn
cyBmcm9tIGFyZ3YuICBUaGlzIGlzIGlkZW1wb3RlbnQuIiIiCi0KLSAgIyBTdXBwcmVzc2VzIHRo
ZSBsaW50IGNvbXBsYWludCBhYm91dCBhIGdsb2JhbCB2YXJpYWJsZSBzaW5jZSB3ZSBuZWVkIGl0
Ci0gICMgaGVyZSB0byBtYWludGFpbiBtb2R1bGUtd2lkZSBzdGF0ZS4KLSAgZ2xvYmFsIF9ndGVz
dF9mbGFnc19hcmVfcGFyc2VkICAjIHB5bGludDogZGlzYWJsZS1tc2c9VzA2MDMKLSAgaWYgX2d0
ZXN0X2ZsYWdzX2FyZV9wYXJzZWQ6Ci0gICAgcmV0dXJuCi0KLSAgX2d0ZXN0X2ZsYWdzX2FyZV9w
YXJzZWQgPSBUcnVlCi0gIGZvciBmbGFnIGluIF9mbGFnX21hcDoKLSAgICAjIFRoZSBlbnZpcm9u
bWVudCB2YXJpYWJsZSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgdmFsdWUuCi0gICAgaWYgZmxhZy51
cHBlcigpIGluIG9zLmVudmlyb246Ci0gICAgICBfZmxhZ19tYXBbZmxhZ10gPSBvcy5lbnZpcm9u
W2ZsYWcudXBwZXIoKV0KLQotICAgICMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIG92ZXJyaWRlcyB0
aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgaSA9IDEgICMgU2tpcHMgdGhlIHByb2dyYW0g
bmFtZS4KLSAgICB3aGlsZSBpIDwgbGVuKGFyZ3YpOgotICAgICAgcHJlZml4ID0gJy0tJyArIGZs
YWcgKyAnPScKLSAgICAgIGlmIGFyZ3ZbaV0uc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICBf
ZmxhZ19tYXBbZmxhZ10gPSBhcmd2W2ldW2xlbihwcmVmaXgpOl0KLSAgICAgICAgZGVsIGFyZ3Zb
aV0KLSAgICAgICAgYnJlYWsKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgV2UgZG9uJ3QgaW5jcmVt
ZW50IGkgaW4gY2FzZSB3ZSBqdXN0IGZvdW5kIGEgLS1ndGVzdF8qIGZsYWcKLSAgICAgICAgIyBh
bmQgcmVtb3ZlZCBpdCBmcm9tIGFyZ3YuCi0gICAgICAgIGkgKz0gMQotCi0KLWRlZiBHZXRGbGFn
KGZsYWcpOgotICAiIiJSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gZmxhZy4iIiIKLQot
ICAjIEluIGNhc2UgR2V0RmxhZygpIGlzIGNhbGxlZCBiZWZvcmUgTWFpbigpLCB3ZSBhbHdheXMg
Y2FsbAotICAjIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGhlcmUgdG8gbWFrZSBzdXJlIHRo
ZSAtLWd0ZXN0XyogZmxhZ3MKLSAgIyBhcmUgcGFyc2VkLgotICBfUGFyc2VBbmRTdHJpcEdUZXN0
RmxhZ3Moc3lzLmFyZ3YpCi0KLSAgcmV0dXJuIF9mbGFnX21hcFtmbGFnXQotCi0KLWRlZiBHZXRT
b3VyY2VEaXIoKToKLSAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGlyZWN0
b3J5IHdoZXJlIHRoZSAucHkgZmlsZXMgYXJlLiIiIgotCi0gIHJldHVybiBvcy5wYXRoLmFic3Bh
dGgoR2V0RmxhZygnc291cmNlX2RpcicpKQotCi0KLWRlZiBHZXRCdWlsZERpcigpOgotICAiIiJS
ZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRlc3Qg
YmluYXJpZXMgYXJlLiIiIgotCi0gIHJldHVybiBvcy5wYXRoLmFic3BhdGgoR2V0RmxhZygnYnVp
bGRfZGlyJykpCi0KLQotX3RlbXBfZGlyID0gTm9uZQotCi1kZWYgX1JlbW92ZVRlbXBEaXIoKToK
LSAgaWYgX3RlbXBfZGlyOgotICAgIHNodXRpbC5ybXRyZWUoX3RlbXBfZGlyLCBpZ25vcmVfZXJy
b3JzPVRydWUpCi0KLWF0ZXhpdC5yZWdpc3RlcihfUmVtb3ZlVGVtcERpcikKLQotCi1kZWYgR2V0
VGVtcERpcigpOgotICAiIiJSZXR1cm5zIGEgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgZmlsZXMu
IiIiCi0KLSAgZ2xvYmFsIF90ZW1wX2RpcgotICBpZiBub3QgX3RlbXBfZGlyOgotICAgIF90ZW1w
X2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICByZXR1cm4gX3RlbXBfZGlyCi0KLQotZGVmIEdl
dFRlc3RFeGVjdXRhYmxlUGF0aChleGVjdXRhYmxlX25hbWUsIGJ1aWxkX2Rpcj1Ob25lKToKLSAg
IiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgdGVzdCBiaW5hcnkgZ2l2ZW4gaXRz
IG5hbWUuCi0KLSAgVGhlIGZ1bmN0aW9uIHdpbGwgcHJpbnQgYSBtZXNzYWdlIGFuZCBhYm9ydCB0
aGUgcHJvZ3JhbSBpZiB0aGUgcmVzdWx0aW5nIGZpbGUKLSAgZG9lc24ndCBleGlzdC4KLQotICBB
cmdzOgotICAgIGV4ZWN1dGFibGVfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBiaW5hcnkgdGhhdCB0
aGUgdGVzdCBzY3JpcHQgcnVucy4KLSAgICBidWlsZF9kaXI6ICAgICAgIGRpcmVjdG9yeSB3aGVy
ZSB0byBsb29rIGZvciBleGVjdXRhYmxlcywgYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgICAg
ICAgdGhlIHJlc3VsdCBvZiBHZXRCdWlsZERpcigpLgotCi0gIFJldHVybnM6Ci0gICAgVGhlIGFi
c29sdXRlIHBhdGggb2YgdGhlIHRlc3QgYmluYXJ5LgotICAiIiIKLQotICBwYXRoID0gb3MucGF0
aC5hYnNwYXRoKG9zLnBhdGguam9pbihidWlsZF9kaXIgb3IgR2V0QnVpbGREaXIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9uYW1lKSkKLSAgaWYg
KElTX1dJTkRPV1Mgb3IgSVNfQ1lHV0lOKSBhbmQgbm90IHBhdGguZW5kc3dpdGgoJy5leGUnKToK
LSAgICBwYXRoICs9ICcuZXhlJwotCi0gIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAg
ICBtZXNzYWdlID0gKAotICAgICAgICAnVW5hYmxlIHRvIGZpbmQgdGhlIHRlc3QgYmluYXJ5ICIl
cyIuIFBsZWFzZSBtYWtlIHN1cmUgdG8gcHJvdmlkZVxuJwotICAgICAgICAnYSBwYXRoIHRvIHRo
ZSBiaW5hcnkgdmlhIHRoZSAtLWJ1aWxkX2RpciBmbGFnIG9yIHRoZSBCVUlMRF9ESVJcbicKLSAg
ICAgICAgJ2Vudmlyb25tZW50IHZhcmlhYmxlLicgJSBwYXRoKQotICAgIHN5cy5zdGRvdXQud3Jp
dGUobWVzc2FnZSkKLSAgICBzeXMuZXhpdCgxKQotCi0gIHJldHVybiBwYXRoCi0KLQotZGVmIEdl
dEV4aXRTdGF0dXMoZXhpdF9jb2RlKToKLSAgIiIiUmV0dXJucyB0aGUgYXJndW1lbnQgdG8gZXhp
dCgpLCBvciAtMSBpZiBleGl0KCkgd2Fzbid0IGNhbGxlZC4KLQotICBBcmdzOgotICAgIGV4aXRf
Y29kZTogdGhlIHJlc3VsdCB2YWx1ZSBvZiBvcy5zeXN0ZW0oY29tbWFuZCkuCi0gICIiIgotCi0g
IGlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICAjIE9uIFdpbmRvd3MsIG9zLldFWElUU1RBVFVTKCkg
ZG9lc24ndCB3b3JrIGFuZCBvcy5zeXN0ZW0oKSByZXR1cm5zCi0gICAgIyB0aGUgYXJndW1lbnQg
dG8gZXhpdCgpIGRpcmVjdGx5LgotICAgIHJldHVybiBleGl0X2NvZGUKLSAgZWxzZToKLSAgICAj
IE9uIFVuaXgsIG9zLldFWElUU1RBVFVTKCkgbXVzdCBiZSB1c2VkIHRvIGV4dHJhY3QgdGhlIGV4
aXQgc3RhdHVzCi0gICAgIyBmcm9tIHRoZSByZXN1bHQgb2Ygb3Muc3lzdGVtKCkuCi0gICAgaWYg
b3MuV0lGRVhJVEVEKGV4aXRfY29kZSk6Ci0gICAgICByZXR1cm4gb3MuV0VYSVRTVEFUVVMoZXhp
dF9jb2RlKQotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gLTEKLQotCi1jbGFzcyBTdWJwcm9jZXNz
OgotICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwgd29ya2luZ19kaXI9Tm9uZSwgY2FwdHVy
ZV9zdGRlcnI9VHJ1ZSwgZW52PU5vbmUpOgotICAgICIiIkNoYW5nZXMgaW50byBhIHNwZWNpZmll
ZCBkaXJlY3RvcnksIGlmIHByb3ZpZGVkLCBhbmQgZXhlY3V0ZXMgYSBjb21tYW5kLgotCi0gICAg
UmVzdG9yZXMgdGhlIG9sZCBkaXJlY3RvcnkgYWZ0ZXJ3YXJkcy4KLQotICAgIEFyZ3M6Ci0gICAg
ICBjb21tYW5kOiAgICAgICAgVGhlIGNvbW1hbmQgdG8gcnVuLCBpbiB0aGUgZm9ybSBvZiBzeXMu
YXJndi4KLSAgICAgIHdvcmtpbmdfZGlyOiAgICBUaGUgZGlyZWN0b3J5IHRvIGNoYW5nZSBpbnRv
LgotICAgICAgY2FwdHVyZV9zdGRlcnI6IERldGVybWluZXMgd2hldGhlciB0byBjYXB0dXJlIHN0
ZGVyciBpbiB0aGUgb3V0cHV0IG1lbWJlcgotICAgICAgICAgICAgICAgICAgICAgIG9yIHRvIGRp
c2NhcmQgaXQuCi0gICAgICBlbnY6ICAgICAgICAgICAgRGljdGlvbmFyeSB3aXRoIGVudmlyb25t
ZW50IHRvIHBhc3MgdG8gdGhlIHN1YnByb2Nlc3MuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQW4g
b2JqZWN0IHRoYXQgcmVwcmVzZW50cyBvdXRjb21lIG9mIHRoZSBleGVjdXRlZCBwcm9jZXNzLiBJ
dCBoYXMgdGhlCi0gICAgICBmb2xsb3dpbmcgYXR0cmlidXRlczoKLSAgICAgICAgdGVybWluYXRl
ZF9ieV9zaWduYWwgICBUcnVlIGlmZiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYmVlbiB0ZXJtaW5h
dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBzaWduYWwuCi0gICAgICAg
IHNpZ25hbCAgICAgICAgICAgICAgICAgU3lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgY2hpbGQg
cHJvY2Vzcy4KLSAgICAgICAgZXhpdGVkICAgICAgICAgICAgICAgICBUcnVlIGlmZiB0aGUgY2hp
bGQgcHJvY2VzcyBleGl0ZWQgbm9ybWFsbHkuCi0gICAgICAgIGV4aXRfY29kZSAgICAgICAgICAg
ICAgVGhlIGNvZGUgd2l0aCB3aGljaCB0aGUgY2hpbGQgcHJvY2VzcyBleGl0ZWQuCi0gICAgICAg
IG91dHB1dCAgICAgICAgICAgICAgICAgQ2hpbGQgcHJvY2VzcydzIHN0ZG91dCBhbmQgc3RkZXJy
IG91dHB1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkIGluIGEgc3Ry
aW5nLgotICAgICIiIgotCi0gICAgIyBUaGUgc3VicHJvY2VzcyBtb2R1bGUgaXMgdGhlIHByZWZl
cnJhYmxlIHdheSBvZiBydW5uaW5nIHByb2dyYW1zCi0gICAgIyBzaW5jZSBpdCBpcyBhdmFpbGFi
bGUgYW5kIGJlaGF2ZXMgY29uc2lzdGVudGx5IG9uIGFsbCBwbGF0Zm9ybXMsCi0gICAgIyBpbmNs
dWRpbmcgV2luZG93cy4gQnV0IGl0IGlzIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIGluIHB5dGhv
biAyLjQuCi0gICAgIyBJbiBlYXJsaWVyIHB5dGhvbiB2ZXJzaW9ucywgd2UgcmV2ZXJ0IHRvIHRo
ZSBwb3BlbjIgbW9kdWxlLCB3aGljaCBpcwotICAgICMgYXZhaWxhYmxlIGluIHB5dGhvbiAyLjAg
YW5kIGxhdGVyIGJ1dCBkb2Vzbid0IHByb3ZpZGUgcmVxdWlyZWQKLSAgICAjIGZ1bmN0aW9uYWxp
dHkgKFBvcGVuNCkgdW5kZXIgV2luZG93cy4gVGhpcyBhbGxvd3MgdXMgdG8gc3VwcG9ydCBNYWMK
LSAgICAjIE9TIFggMTAuNCBUaWdlciwgd2hpY2ggaGFzIHB5dGhvbiAyLjMgaW5zdGFsbGVkLgot
ICAgIGlmIF9TVUJQUk9DRVNTX01PRFVMRV9BVkFJTEFCTEU6Ci0gICAgICBpZiBjYXB0dXJlX3N0
ZGVycjoKLSAgICAgICAgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQKLSAgICAgIGVsc2U6Ci0g
ICAgICAgIHN0ZGVyciA9IHN1YnByb2Nlc3MuUElQRQotCi0gICAgICBwID0gc3VicHJvY2Vzcy5Q
b3Blbihjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nl
c3MuUElQRSwgc3RkZXJyPXN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD13
b3JraW5nX2RpciwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsIGVudj1lbnYpCi0gICAgICAjIGNv
bW11bmljYXRlIHJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBmaWxlIG9iZWN0IGZvciB0aGUgY2hp
bGQncwotICAgICAgIyBvdXRwdXQuCi0gICAgICBzZWxmLm91dHB1dCA9IHAuY29tbXVuaWNhdGUo
KVswXQotICAgICAgc2VsZi5fcmV0dXJuX2NvZGUgPSBwLnJldHVybmNvZGUKLSAgICBlbHNlOgot
ICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCi0KLSAgICAgIGRlZiBfUmVwbGFjZUVudkRpY3Qo
ZGVzdCwgc3JjKToKLSAgICAgICAgIyBDaGFuZ2VzIG1hZGUgYnkgb3MuZW52aXJvbi5jbGVhciBh
cmUgbm90IGluaGVyaXRhYmxlIGJ5IGNoaWxkCi0gICAgICAgICMgcHJvY2Vzc2VzIHVudGlsIFB5
dGhvbiAyLjYuIFRvIHByb2R1Y2UgaW5oZXJpdGFibGUgY2hhbmdlcyB3ZSBoYXZlCi0gICAgICAg
ICMgdG8gZGVsZXRlIGVudmlyb25tZW50IGl0ZW1zIHdpdGggdGhlIGRlbCBzdGF0ZW1lbnQuCi0g
ICAgICAgIGZvciBrZXkgaW4gZGVzdC5rZXlzKCk6Ci0gICAgICAgICAgZGVsIGRlc3Rba2V5XQot
ICAgICAgICBkZXN0LnVwZGF0ZShzcmMpCi0KLSAgICAgICMgV2hlbiAnZW52JyBpcyBub3QgTm9u
ZSwgYmFja3VwIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHJlcGxhY2UKLSAgICAgICMg
dGhlbSB3aXRoIHRoZSBwYXNzZWQgJ2VudicuIFdoZW4gJ2VudicgaXMgTm9uZSwgd2Ugc2ltcGx5
IHVzZSB0aGUKLSAgICAgICMgY3VycmVudCAnb3MuZW52aXJvbicgZm9yIGNvbXBhdGliaWxpdHkg
d2l0aCB0aGUgc3VicHJvY2Vzcy5Qb3BlbgotICAgICAgIyBzZW1hbnRpY3MgdXNlZCBhYm92ZS4K
LSAgICAgIGlmIGVudiBpcyBub3QgTm9uZToKLSAgICAgICAgb2xkX2Vudmlyb24gPSBvcy5lbnZp
cm9uLmNvcHkoKQotICAgICAgICBfUmVwbGFjZUVudkRpY3Qob3MuZW52aXJvbiwgZW52KQotCi0g
ICAgICB0cnk6Ci0gICAgICAgIGlmIHdvcmtpbmdfZGlyIGlzIG5vdCBOb25lOgotICAgICAgICAg
IG9zLmNoZGlyKHdvcmtpbmdfZGlyKQotICAgICAgICBpZiBjYXB0dXJlX3N0ZGVycjoKLSAgICAg
ICAgICBwID0gcG9wZW4yLlBvcGVuNChjb21tYW5kKQotICAgICAgICBlbHNlOgotICAgICAgICAg
IHAgPSBwb3BlbjIuUG9wZW4zKGNvbW1hbmQpCi0gICAgICAgIHAudG9jaGlsZC5jbG9zZSgpCi0g
ICAgICAgIHNlbGYub3V0cHV0ID0gcC5mcm9tY2hpbGQucmVhZCgpCi0gICAgICAgIHJldF9jb2Rl
ID0gcC53YWl0KCkKLSAgICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLmNoZGlyKG9sZF9kaXIpCi0K
LSAgICAgICAgIyBSZXN0b3JlIHRoZSBvbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gICAgICAg
ICMgaWYgdGhleSB3ZXJlIHJlcGxhY2VkLgotICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgX1JlcGxhY2VFbnZEaWN0KG9zLmVudmlyb24sIG9sZF9lbnZpcm9uKQotCi0gICAg
ICAjIENvbnZlcnRzIHJldF9jb2RlIHRvIG1hdGNoIHRoZSBzZW1hbnRpY3Mgb2YKLSAgICAgICMg
c3VicHJvY2Vzcy5Qb3Blbi5yZXR1cm5jb2RlLgotICAgICAgaWYgb3MuV0lGU0lHTkFMRUQocmV0
X2NvZGUpOgotICAgICAgICBzZWxmLl9yZXR1cm5fY29kZSA9IC1vcy5XVEVSTVNJRyhyZXRfY29k
ZSkKLSAgICAgIGVsc2U6ICAjIG9zLldJRkVYSVRFRChyZXRfY29kZSkgc2hvdWxkIHJldHVybiBU
cnVlIGhlcmUuCi0gICAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gb3MuV0VYSVRTVEFUVVMocmV0
X2NvZGUpCi0KLSAgICBpZiBzZWxmLl9yZXR1cm5fY29kZSA8IDA6Ci0gICAgICBzZWxmLnRlcm1p
bmF0ZWRfYnlfc2lnbmFsID0gVHJ1ZQotICAgICAgc2VsZi5leGl0ZWQgPSBGYWxzZQotICAgICAg
c2VsZi5zaWduYWwgPSAtc2VsZi5fcmV0dXJuX2NvZGUKLSAgICBlbHNlOgotICAgICAgc2VsZi50
ZXJtaW5hdGVkX2J5X3NpZ25hbCA9IEZhbHNlCi0gICAgICBzZWxmLmV4aXRlZCA9IFRydWUKLSAg
ICAgIHNlbGYuZXhpdF9jb2RlID0gc2VsZi5fcmV0dXJuX2NvZGUKLQotCi1kZWYgTWFpbigpOgot
ICAiIiJSdW5zIHRoZSB1bml0IHRlc3QuIiIiCi0KLSAgIyBXZSBtdXN0IGNhbGwgX1BhcnNlQW5k
U3RyaXBHVGVzdEZsYWdzKCkgYmVmb3JlIGNhbGxpbmcKLSAgIyB1bml0dGVzdC5tYWluKCkuICBP
dGhlcndpc2UgdGhlIGxhdHRlciB3aWxsIGJlIGNvbmZ1c2VkIGJ5IHRoZQotICAjIC0tZ3Rlc3Rf
KiBmbGFncy4KLSAgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKHN5cy5hcmd2KQotICAjIFRoZSB0
ZXN0ZWQgYmluYXJpZXMgc2hvdWxkIG5vdCBiZSB3cml0aW5nIFhNTCBvdXRwdXQgZmlsZXMgdW5s
ZXNzIHRoZQotICAjIHNjcmlwdCBleHBsaWNpdGx5IGluc3RydWN0cyB0aGVtIHRvLgotICAjIFRP
RE8odmxhZGxAZ29vZ2xlLmNvbSk6IE1vdmUgdGhpcyBpbnRvIFN1YnByb2Nlc3Mgd2hlbiB3ZSBp
bXBsZW1lbnQKLSAgIyBwYXNzaW5nIGVudmlyb25tZW50IGludG8gaXQgYXMgYSBwYXJhbWV0ZXIu
Ci0gIGlmIEdURVNUX09VVFBVVF9WQVJfTkFNRSBpbiBvcy5lbnZpcm9uOgotICAgIGRlbCBvcy5l
bnZpcm9uW0dURVNUX09VVFBVVF9WQVJfTkFNRV0KLQotICBfdGVzdF9tb2R1bGUubWFpbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVz
dC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDQ2Yzc2ZjE2MTIxZmQxZjQ3Yzk3NDEw
ZjNlMDhlZjRhMTE2ZWRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWlsdXJlIG1vZGUg
d2l0aCBleGNlcHRpb25zIGVuYWJsZWQuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0j
aW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0KLS8vIFByaW50cyB0aGUgZ2l2ZW4gZmFpbHVyZSBt
ZXNzYWdlIGFuZCBleGl0cyB0aGUgcHJvZ3JhbSB3aXRoCi0vLyBub24temVyby4gIFdlIHVzZSB0
aGlzIGluc3RlYWQgb2YgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gdG8KLS8vIGluZGljYXRlIGEg
ZmFpbHVyZSwgYXMgdGhlIGxhdHRlciBpcyBiZWVuIHRlc3RlZCBhbmQgY2Fubm90IGJlCi0vLyBy
ZWxpZWQgb24uCi12b2lkIEZhaWwoY29uc3QgY2hhciogbXNnKSB7Ci0gIHByaW50ZigiRkFJTFVS
RTogJXNcbiIsIG1zZyk7Ci0gIGZmbHVzaChzdGRvdXQpOwotICBleGl0KDEpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGFuIGFzc2VydGlvbiBmYWlsdXJlIHRocm93cyBhIHN1YmNsYXNzIG9mCi0vLyBz
dGQ6OnJ1bnRpbWVfZXJyb3IuCi12b2lkIFRlc3RGYWlsdXJlVGhyb3dzUnVudGltZUVycm9yKCkg
ewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLQotICAv
LyBBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHNob3VsZG4ndCB0aHJvdy4KLSAgdHJ5IHsKLSAgICBF
WFBFQ1RfRVEoMywgMyk7Ci0gIH0gY2F0Y2goLi4uKSB7Ci0gICAgRmFpbCgiQSBzdWNjZXNzZnVs
IGFzc2VydGlvbiB3cm9uZ2Z1bGx5IHRocmV3LiIpOwotICB9Ci0KLSAgLy8gQSBmYWlsZWQgYXNz
ZXJ0aW9uIHNob3VsZCB0aHJvdyBhIHN1YmNsYXNzIG9mIHN0ZDo6cnVudGltZV9lcnJvci4KLSAg
dHJ5IHsKLSAgICBFWFBFQ1RfRVEoMiwgMykgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotICB9IGNh
dGNoKGNvbnN0IHN0ZDo6cnVudGltZV9lcnJvciYgZSkgewotICAgIGlmIChzdHJzdHIoZS53aGF0
KCksICJFeHBlY3RlZCBmYWlsdXJlIikgIT0gTlVMTCkKLSAgICAgIHJldHVybjsKLQotICAgIHBy
aW50ZigiJXMiLAotICAgICAgICAgICAiQSBmYWlsZWQgYXNzZXJ0aW9uIGRpZCB0aHJvdyBhbiBl
eGNlcHRpb24gb2YgdGhlIHJpZ2h0IHR5cGUsICIKLSAgICAgICAgICAgImJ1dCB0aGUgbWVzc2Fn
ZSBpcyBpbmNvcnJlY3QuICBJbnN0ZWFkIG9mIGNvbnRhaW5pbmcgXCJFeHBlY3RlZCAiCi0gICAg
ICAgICAgICJmYWlsdXJlXCIsIGl0IGlzOlxuIik7Ci0gICAgRmFpbChlLndoYXQoKSk7Ci0gIH0g
Y2F0Y2goLi4uKSB7Ci0gICAgRmFpbCgiQSBmYWlsZWQgYXNzZXJ0aW9uIHRocmV3IHRoZSB3cm9u
ZyB0eXBlIG9mIGV4Y2VwdGlvbi4iKTsKLSAgfQotICBGYWlsKCJBIGZhaWxlZCBhc3NlcnRpb24g
c2hvdWxkJ3ZlIHRocm93biBidXQgZGlkbid0LiIpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwot
Ci0gIC8vIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgcGVvcGxlIGNhbiB1c2UgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBpbgotICAvLyBvdGhlciB0ZXN0aW5nIGZyYW1ld29ya3MsIGFzIGxvbmcgYXMg
dGhleSBpbml0aWFsaXplIEdvb2dsZSBUZXN0Ci0gIC8vIHByb3Blcmx5IGFuZCBzZXQgdGhlIHRo
cm93bi1vbi1mYWlsdXJlIG1vZGUuICBUaGVyZWZvcmUsIHdlIGRvbid0Ci0gIC8vIHVzZSBHb29n
bGUgVGVzdCdzIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIGFuZCBydW5uaW5nIHRlc3RzCi0gIC8v
IChlLmcuIFRFU1QgYW5kIFJVTl9BTExfVEVTVFMpIGhlcmUuCi0KLSAgVGVzdEZhaWx1cmVUaHJv
d3NSdW50aW1lRXJyb3IoKTsKLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAzZTc3NDBjYWJiOGFjZmQyMTJjMzdlYjgxNjkzNzIyMjYxNzQzYTcxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlRlc3Rz
IEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNh
YmxlZC4KLQotVGhpcyBzY3JpcHQgaW52b2tlcyBndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3Rf
IChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUgVGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52
aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0iIiIKLQotX19hdXRob3JfXyA9ICd3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3Rf
dGVzdF91dGlscwotCi0KLSMgQ29uc3RhbnRzLgotCi0jIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBm
b3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuCi1USFJPV19P
Tl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1cmUnCi0KLSMgUGF0aCB0byB0aGUgZ3Rl
c3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyBwcm9ncmFtLCBjb21waWxlZCB3aXRoCi0jIGV4Y2Vw
dGlvbnMgZGlzYWJsZWQuCi1FWEVfUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKAotICAgICdndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfJykKLQotCi0jIFV0
aWxpdGllcy4KLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBh
biBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVuIHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0
aGUKLSAgZ2l2ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIiCi0KLSAgZW52X3ZhciA9IGVudl92YXIu
dXBwZXIoKQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBvcy5lbnZpcm9uW2Vudl92YXJd
ID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVudmlyb246Ci0gICAgZGVsIG9zLmVudmly
b25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQpOgotICAiIiJSdW5zIGEgY29tbWFuZDsg
cmV0dXJucyBUcnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNvZGUgaXMvaXNuJ3QgMC4iIiIKLQotICBw
cmludCgnUnVubmluZyAiJXMiLiAuIC4nICUgJyAnLmpvaW4oY29tbWFuZCkpCi0gIHAgPSBndGVz
dF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgcmV0dXJuIHAuZXhpdGVkIGFuZCBw
LmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMuICBUT0RPKHdhbkBnb29nbGUuY29tKTog
cmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1vbgotIyBsb2dpYyB3aXRoIGNvZGUgaW4g
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weS4KLWNsYXNzIFRocm93T25GYWlsdXJl
VGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToKLSAgIiIiVGVzdHMgdGhlIHRocm93LW9u
LWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFs
dWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAgICAiIiJSdW5zIGd0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChvciBkb2VzIG5v
dCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFy
X3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxl
IHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5v
bmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAgc2hvdWxkX2ZhaWw6
ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhwZWN0ZWQgdG8gZmFpbC4KLSAgICAiIiIK
LQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFLCBlbnZfdmFyX3ZhbHVlKQotCi0gICAg
aWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAgZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlz
IG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJz0nICsgZW52
X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBpcyBOb25lOgotICAgICAgZmxhZyA9ICcn
Ci0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIFRI
Uk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIFRIUk9XX09O
X0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BBVEhdCi0gICAgaWYgZmxhZzoKLSAgICAg
IGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBzaG91bGRfZmFpbDoKLSAgICAgIHNob3Vs
ZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0gICAgICBzaG91bGRfb3Jfbm90ID0gJ3No
b3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVuKGNvbW1hbmQpCi0KLSAgICBTZXRFbnZW
YXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAgIG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBh
c3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEgbm9uLXplcm8gJwotICAgICAgICAg
ICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhST1dfT05fRkFJTFVSRSwgZW52X3Zhcl92
YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAgICAgICAgICAgc2hvdWxkX29yX25vdCkp
Ci0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91bGRfZmFpbCwgbXNnKQotCi0gIGRlZiB0
ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0
aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9mYWlsPUZhbHNlKQotCi0gIGRlZiB0ZXN0
VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIEdURVNU
X1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1
bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFn
X3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0g
ICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAg
ICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWls
PVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVyZUZsYWcoc2VsZik6Ci0gICAgIiIiVGVz
dHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAg
IGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9mYWlsPUZhbHNl
KQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRf
ZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVGbGFnT3ZlcnJpZGVzRW52VmFy
KHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIG92ZXJy
aWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5SdW5B
bmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2ZhaWw9VHJ1ZSkKLSAgICBz
ZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAg
ICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1GYWxz
ZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBzaG91bGRf
ZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3Rf
dXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rocm93X29u
X2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiODhmZTNkOWIzYjhi
NWYwZTM2NGRiMGRkNjlmZjdkYjE4YWE2M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJl
X3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQotLy8gVGVzdHMgR29vZ2xlIFRlc3QncyB0aHJvdy1vbi1mYWls
dXJlIG1vZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotLy8KLS8vIFRoaXMgcHJvZ3JhbSBt
dXN0IGJlIGNvbXBpbGVkIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4gIEl0IHdpbGwgYmUKLS8v
IGludm9rZWQgYnkgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5LCBhbmQgaXMgZXhwZWN0
ZWQgdG8gZXhpdAotLy8gd2l0aCBub24temVybyBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2Rl
IG9yIDAgb3RoZXJ3aXNlLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUg
PHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBmZmx1c2gsIGZwcmludGYsIE5V
TEwsIGV0Yy4KLSNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAgICAgICAgICAgICAvLyBmb3Ig
ZXhpdAotI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBzZXRf
dGVybWluYXRlCi0KLS8vIFRoaXMgdGVybWluYXRlIGhhbmRsZXIgYWJvcnRzIHRoZSBwcm9ncmFt
IHVzaW5nIGV4aXQoKSByYXRoZXIgdGhhbiBhYm9ydCgpLgotLy8gVGhpcyBhdm9pZHMgc2hvd2lu
ZyBwb3AtdXBzIG9uIFdpbmRvd3Mgc3lzdGVtcyBhbmQgY29yZSBkdW1wcyBvbiBVbml4LWxpa2UK
LS8vIG9uZXMuCi12b2lkIFRlcm1pbmF0ZUhhbmRsZXIoKSB7Ci0gIGZwcmludGYoc3RkZXJyLCAi
JXNcbiIsICJVbmhhbmRsZWQgQysrIGV4Y2VwdGlvbiB0ZXJtaW5hdGluZyB0aGUgcHJvZ3JhbS4i
KTsKLSAgZmZsdXNoKE5VTEwpOwotICBleGl0KDEpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotICBzdGQ6OnNldF90ZXJt
aW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOwotI2VuZGlmCi0gIHRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHBlb3BsZSBj
YW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4KLSAgLy8gb3RoZXIgdGVzdGluZyBmcmFt
ZXdvcmtzLCBhcyBsb25nIGFzIHRoZXkgaW5pdGlhbGl6ZSBHb29nbGUgVGVzdAotICAvLyBwcm9w
ZXJseSBhbmQgc2V0IHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUuICBUaGVyZWZvcmUsIHdlIGRv
bid0Ci0gIC8vIHVzZSBHb29nbGUgVGVzdCdzIGNvbnN0cnVjdHMgZm9yIGRlZmluaW5nIGFuZCBy
dW5uaW5nIHRlc3RzCi0gIC8vIChlLmcuIFRFU1QgYW5kIFJVTl9BTExfVEVTVFMpIGhlcmUuCi0K
LSAgLy8gSW4gdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJs
ZWQsIHRoaXMKLSAgLy8gYXNzZXJ0aW9uIHdpbGwgY2F1c2UgdGhlIHByb2dyYW0gdG8gZXhpdCB3
aXRoIGEgbm9uLXplcm8gY29kZS4KLSAgRVhQRUNUX0VRKDIsIDMpOwotCi0gIC8vIFdoZW4gbm90
IGluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1vZGUsIHRoZSBjb250cm9sIHdpbGwgcmVhY2gKLSAg
Ly8gaGVyZS4KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0
aWFsaXplZF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MzU4MzcwMDk3
ZmI4NGM1M2FhY2ZmMzEzNzBhNDVhMjRmODdmMjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXpl
ZF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVmVyaWZpZXMgdGhhdCBHb29nbGUgVGVz
dCB3YXJucyB0aGUgdXNlciB3aGVuIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4iIiIKLQotX19h
dXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IGd0ZXN0
X3Rlc3RfdXRpbHMKLQotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0
YWJsZVBhdGgoJ2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8nKQotCi0KLWRlZiBBc3NlcnQoY29u
ZGl0aW9uKToKLSAgaWYgbm90IGNvbmRpdGlvbjoKLSAgICByYWlzZSBBc3NlcnRpb25FcnJvcgot
Ci0KLWRlZiBBc3NlcnRFcShleHBlY3RlZCwgYWN0dWFsKToKLSAgaWYgZXhwZWN0ZWQgIT0gYWN0
dWFsOgotICAgIHByaW50KCdFeHBlY3RlZDogJXMnICUgKGV4cGVjdGVkLCkpCi0gICAgcHJpbnQo
JyAgQWN0dWFsOiAlcycgJSAoYWN0dWFsLCkpCi0gICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKLQot
Ci1kZWYgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KGNvbW1hbmQpOgotICAiIiJSdW5zIHRoZSBnaXZl
biBjb21tYW5kIGFuZCB2ZXJpZmllcyBpdHMgZXhpdCBjb2RlIGFuZCBvdXRwdXQuIiIiCi0KLSAg
IyBWZXJpZmllcyB0aGF0ICdjb21tYW5kJyBleGl0cyB3aXRoIGNvZGUgMS4KLSAgcCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICBBc3NlcnQocC5leGl0ZWQpCi0gIEFz
c2VydEVxKDEsIHAuZXhpdF9jb2RlKQotICBBc3NlcnQoJ0luaXRHb29nbGVUZXN0JyBpbiBwLm91
dHB1dCkKLQotCi1jbGFzcyBHVGVzdFVuaW5pdGlhbGl6ZWRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMu
VGVzdENhc2UpOgotICBkZWYgdGVzdEV4aXRDb2RlQW5kT3V0cHV0KHNlbGYpOgotICAgIFRlc3RF
eGl0Q29kZUFuZE91dHB1dChDT01NQU5EKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Vu
aW5pdGlhbGl6ZWRfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzE2
OTg3ZmJiNWQ2ZGMwODkwOTI1NWEzNzI4Y2UzNWEyZWM3YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bmluaXRp
YWxpemVkX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLVRF
U1QoRHVtbXlUZXN0LCBEdW1teSkgewotICAvLyBUaGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55
dGhpbmcuICBXZSBqdXN0IG5lZWQgaXQgdG8gY3JlYXRlIGEKLSAgLy8gcmVhbGlzdGljIHN0YWdl
IGZvciB0ZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBHb29nbGUgVGVzdCB3aGVuCi0gIC8vIFJVTl9B
TExfVEVTVFMoKSBpcyBjYWxsZWQgd2l0aG91dCB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJl
aW5nCi0gIC8vIGNhbGxlZCBmaXJzdC4KLX0KLQotaW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5f
QUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3VuaXR0
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzYyN2I4ODBhNWI5ZTdmZjQzNTRkZjkxMzQ5NDhiZDBmMWNjYjBl
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzcwNSArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3RzIGZvciBH
b29nbGUgVGVzdCBpdHNlbGYuICBUaGlzIHZlcmlmaWVzIHRoYXQgdGhlIGJhc2ljIGNvbnN0cnVj
dHMgb2YKLS8vIEdvb2dsZSBUZXN0IHdvcmsuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgot
Ci0vLyBWZXJpZmllcyB0aGF0IHRoZSBjb21tYW5kIGxpbmUgZmxhZyB2YXJpYWJsZXMgY2FuIGJl
IGFjY2Vzc2VkCi0vLyBpbiBjb2RlIG9uY2UgPGd0ZXN0L2d0ZXN0Lmg+IGhhcyBiZWVuICNpbmNs
dWRlZC4KLS8vIERvIG5vdCBtb3ZlIGl0IGFmdGVyIG90aGVyICNpbmNsdWRlcy4KLVRFU1QoQ29t
bWFuZExpbmVGbGFnc1Rlc3QsIENhbkJlQWNjZXNzZWRJbkNvZGVPbmNlR1Rlc3RISXNJbmNsdWRl
ZCkgewotICBib29sIGR1bW15ID0gdGVzdGluZzo6R1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cykKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkK
LSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykKLSAgICAgIHx8
IHRlc3Rpbmc6OkdURVNUX0ZMQUcoY29sb3IpICE9ICJ1bmtub3duIgotICAgICAgfHwgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhmaWx0ZXIpICE9ICJ1bmtub3duIgotICAgICAgfHwgdGVzdGluZzo6R1RF
U1RfRkxBRyhsaXN0X3Rlc3RzKQotICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhvdXRwdXQp
ICE9ICJ1bmtub3duIgotICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKQot
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhyYW5kb21fc2VlZCkKLSAgICAgIHx8IHRlc3Rp
bmc6OkdURVNUX0ZMQUcocmVwZWF0KSA+IDAKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUco
c2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMpCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFH
KHNodWZmbGUpCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRo
KSA+IDAKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgIT0g
InVua25vd24iCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUp
OwotICBFWFBFQ1RfVFJVRShkdW1teSB8fCAhZHVtbXkpOyAgLy8gU3VwcHJlc3NlcyB3YXJuaW5n
IHRoYXQgZHVtbXkgaXMgdW51c2VkLgotfQotCi0jaW5jbHVkZSA8bGltaXRzLmg+ICAvLyBGb3Ig
SU5UX01BWC4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNs
dWRlIDx0aW1lLmg+Ci0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1
ZGUgPG9zdHJlYW0+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotLy8gSW5kaWNh
dGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3Qncwot
Ly8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlu
bC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAg
VGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5j
bHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RF
U1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgi
Ci0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5h
bWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0KLWNs
YXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIGNs
YXNzIEZha2VTb2NrZXRXcml0ZXIgOiBwdWJsaWMgU3RyZWFtaW5nTGlzdGVuZXI6OkFic3RyYWN0
U29ja2V0V3JpdGVyIHsKLSAgIHB1YmxpYzoKLSAgICAvLyBTZW5kcyBhIHN0cmluZyB0byB0aGUg
c29ja2V0LgotICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdl
KSB7IG91dHB1dF8gKz0gbWVzc2FnZTsgfQotCi0gICAgc3RkOjpzdHJpbmcgb3V0cHV0XzsKLSAg
fTsKLQotICBTdHJlYW1pbmdMaXN0ZW5lclRlc3QoKQotICAgICAgOiBmYWtlX3NvY2tfd3JpdGVy
XyhuZXcgRmFrZVNvY2tldFdyaXRlciksCi0gICAgICAgIHN0cmVhbWVyXyhmYWtlX3NvY2tfd3Jp
dGVyXyksCi0gICAgICAgIHRlc3RfaW5mb19vYmpfKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5F
X18pLCAwLCBOVUxMKSB7fQotCi0gcHJvdGVjdGVkOgotICBzdGQ6OnN0cmluZyogb3V0cHV0KCkg
eyByZXR1cm4gJihmYWtlX3NvY2tfd3JpdGVyXy0+b3V0cHV0Xyk7IH0KLQotICBGYWtlU29ja2V0
V3JpdGVyKiBjb25zdCBmYWtlX3NvY2tfd3JpdGVyXzsKLSAgU3RyZWFtaW5nTGlzdGVuZXIgc3Ry
ZWFtZXJfOwotICBVbml0VGVzdCB1bml0X3Rlc3RfOwotICBUZXN0SW5mbyB0ZXN0X2luZm9fb2Jq
XzsgIC8vIFRoZSBuYW1lIHRlc3RfaW5mb18gd2FzIHRha2VuIGJ5IHRlc3Rpbmc6OlRlc3QuCi19
OwotCi1URVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQcm9ncmFtRW5kKSB7Ci0g
ICpvdXRwdXQoKSA9ICIiOwotICBzdHJlYW1lcl8uT25UZXN0UHJvZ3JhbUVuZCh1bml0X3Rlc3Rf
KTsKLSAgRVhQRUNUX0VRKCJldmVudD1UZXN0UHJvZ3JhbUVuZCZwYXNzZWQ9MVxuIiwgKm91dHB1
dCgpKTsKLX0KLQotVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVyVGVzdCwgT25UZXN0SXRlcmF0aW9u
RW5kKSB7Ci0gICpvdXRwdXQoKSA9ICIiOwotICBzdHJlYW1lcl8uT25UZXN0SXRlcmF0aW9uRW5k
KHVuaXRfdGVzdF8sIDQyKTsKLSAgRVhQRUNUX0VRKCJldmVudD1UZXN0SXRlcmF0aW9uRW5kJnBh
c3NlZD0xJmVsYXBzZWRfdGltZT0wbXNcbiIsICpvdXRwdXQoKSk7Ci19Ci0KLVRFU1RfRihTdHJl
YW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdENhc2VTdGFydCkgewotICAqb3V0cHV0KCkgPSAiIjsK
LSAgc3RyZWFtZXJfLk9uVGVzdENhc2VTdGFydChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIiLCBO
VUxMLCBOVUxMKSk7Ci0gIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VTdGFydCZuYW1lPUZvb1Rl
c3RcbiIsICpvdXRwdXQoKSk7Ci19Ci0KLVRFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9u
VGVzdENhc2VFbmQpIHsKLSAgKm91dHB1dCgpID0gIiI7Ci0gIHN0cmVhbWVyXy5PblRlc3RDYXNl
RW5kKFRlc3RDYXNlKCJGb29UZXN0IiwgIkJhciIsIE5VTEwsIE5VTEwpKTsKLSAgRVhQRUNUX0VR
KCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0cHV0
KCkpOwotfQotCi1URVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RTdGFydCkgewot
ICAqb3V0cHV0KCkgPSAiIjsKLSAgc3RyZWFtZXJfLk9uVGVzdFN0YXJ0KHRlc3RfaW5mb19vYmpf
KTsKLSAgRVhQRUNUX0VRKCJldmVudD1UZXN0U3RhcnQmbmFtZT1CYXJcbiIsICpvdXRwdXQoKSk7
Ci19Ci0KLVRFU1RfRihTdHJlYW1pbmdMaXN0ZW5lclRlc3QsIE9uVGVzdEVuZCkgewotICAqb3V0
cHV0KCkgPSAiIjsKLSAgc3RyZWFtZXJfLk9uVGVzdEVuZCh0ZXN0X2luZm9fb2JqXyk7Ci0gIEVY
UEVDVF9FUSgiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAqb3V0
cHV0KCkpOwotfQotCi1URVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RQYXJ0UmVz
dWx0KSB7Ci0gICpvdXRwdXQoKSA9ICIiOwotICBzdHJlYW1lcl8uT25UZXN0UGFydFJlc3VsdChU
ZXN0UGFydFJlc3VsdCgKLSAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9v
LmNjIiwgNDIsICJmYWlsZWQ9XG4mJSIpKTsKLQotICAvLyBNZXRhIGNoYXJhY3RlcnMgaW4gdGhl
IGZhaWx1cmUgbWVzc2FnZSBzaG91bGQgYmUgcHJvcGVybHkgZXNjYXBlZC4KLSAgRVhQRUNUX0VR
KAotICAgICAgImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9Zm9vLmNjJmxpbmU9NDImbWVzc2Fn
ZT1mYWlsZWQlM0QlMEElMjYlMjVcbiIsCi0gICAgICAqb3V0cHV0KCkpOwotfQotCi0jZW5kaWYg
IC8vIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLQotLy8gUHJvdmlkZXMgYWNjZXNzIHRvIG90
aGVyd2lzZSBwcml2YXRlIHBhcnRzIG9mIHRoZSBUZXN0RXZlbnRMaXN0ZW5lcnMgY2xhc3MKLS8v
IHRoYXQgYXJlIG5lZWRlZCB0byB0ZXN0IGl0LgotY2xhc3MgVGVzdEV2ZW50TGlzdGVuZXJzQWNj
ZXNzb3IgewotIHB1YmxpYzoKLSAgc3RhdGljIFRlc3RFdmVudExpc3RlbmVyKiBHZXRSZXBlYXRl
cihUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycykgewotICAgIHJldHVybiBsaXN0ZW5lcnMt
PnJlcGVhdGVyKCk7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBTZXREZWZhdWx0UmVzdWx0UHJpbnRl
cihUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKSB7Ci0gICAgbGlzdGVu
ZXJzLT5TZXREZWZhdWx0UmVzdWx0UHJpbnRlcihsaXN0ZW5lcik7Ci0gIH0KLSAgc3RhdGljIHZv
aWQgU2V0RGVmYXVsdFhtbEdlbmVyYXRvcihUZXN0RXZlbnRMaXN0ZW5lcnMqIGxpc3RlbmVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0RXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIpIHsKLSAgICBsaXN0ZW5lcnMtPlNldERlZmF1bHRYbWxHZW5lcmF0b3IobGlzdGVu
ZXIpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgRXZlbnRGb3J3YXJkaW5nRW5hYmxlZChjb25zdCBU
ZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3RlbmVycykgewotICAgIHJldHVybiBsaXN0ZW5lcnMuRXZl
bnRGb3J3YXJkaW5nRW5hYmxlZCgpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgU3VwcHJlc3NFdmVu
dEZvcndhcmRpbmcoVGVzdEV2ZW50TGlzdGVuZXJzKiBsaXN0ZW5lcnMpIHsKLSAgICBsaXN0ZW5l
cnMtPlN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7Ci0gIH0KLX07Ci0KLWNsYXNzIFVuaXRUZXN0
UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAg
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXIoKSB7fQotCi0gIC8vIEZvcndhcmRzIHRv
IFVuaXRUZXN0OjpSZWNvcmRQcm9wZXJ0eSgpIHRvIGJ5cGFzcyBhY2Nlc3MgY29udHJvbHMuCi0g
IHZvaWQgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eShjb25zdCBjaGFyKiBrZXksIGNvbnN0IHN0ZDo6
c3RyaW5nJiB2YWx1ZSkgewotICAgIHVuaXRfdGVzdF8uUmVjb3JkUHJvcGVydHkoa2V5LCB2YWx1
ZSk7Ci0gIH0KLQotICBVbml0VGVzdCB1bml0X3Rlc3RfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNl
IGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi11c2luZyB0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlOwotdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0OwotdXNpbmcgdGVz
dGluZzo6QXNzZXJ0aW9uU3VjY2VzczsKLXVzaW5nIHRlc3Rpbmc6OkRvdWJsZUxFOwotdXNpbmcg
dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIHRlc3Rpbmc6OkVudmlyb25t
ZW50OwotdXNpbmcgdGVzdGluZzo6RmxvYXRMRTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUco
YWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhicmVh
a19vbl9mYWlsdXJlKTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9u
cyk7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNvbG9yKTsKLXVzaW5nIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yayk7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGZpbHRlcik7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGxpc3RfdGVzdHMpOwotdXNpbmcg
dGVzdGluZzo6R1RFU1RfRkxBRyhvdXRwdXQpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhw
cmludF90aW1lKTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcocmFuZG9tX3NlZWQpOwotdXNp
bmcgdGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxB
RyhzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcyk7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFH
KHNodWZmbGUpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCk7
Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pOwotdXNpbmcgdGVz
dGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKLXVzaW5nIHRlc3Rpbmc6OklzTm90
U3Vic3RyaW5nOwotdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJpbmc7Ci11c2luZyB0ZXN0aW5nOjpN
ZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI7
Ci11c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7Ci11c2luZyB0ZXN0aW5nOjpUZXN0
OwotdXNpbmcgdGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyB0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0
ZW5lcnM7Ci11c2luZyB0ZXN0aW5nOjpUZXN0SW5mbzsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQYXJ0
UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJheTsKLXVzaW5nIHRlc3Rp
bmc6OlRlc3RQcm9wZXJ0eTsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RSZXN1bHQ7Ci11c2luZyB0ZXN0
aW5nOjpUaW1lSW5NaWxsaXM7Ci11c2luZyB0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpBZGRSZWZlcmVuY2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3
YXlzRmFsc2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZTsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpBcHBlbmRVc2VyTWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpBcnJheUF3YXJlRmluZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpBcnJheUVxOwot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNvZGVQb2ludFRvVXRmODsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpDb3B5QXJyYXk7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q291bnRJZjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpFcUZhaWx1cmU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6
RmxvYXRpbmdQb2ludDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JFYWNoOwotdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxOwotdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kczsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpHVGVzdEZsYWdTYXZlcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkdldEVsZW1lbnRPcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXROZXh0UmFu
ZG9tU2VlZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRSYW5kb21TZWVkRnJvbUZsYWc7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGVzdFR5cGVJZDsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpHZXRUaW1lSW5NaWxsaXM7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0
VHlwZUlkOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbDsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU7Ci11c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6SW50MzI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzJGcm9tRW52
T3JEaWU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlOwotdXNp
bmcgdGVzdGluZzo6aW50ZXJuYWw6OklzQ29udGFpbmVyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OklzQ29udGFpbmVyVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc05vdENvbnRh
aW5lcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpQYXJzZUludDMyRmxhZzsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpS
ZWxhdGlvblRvU291cmNlQ29weTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZWxhdGlvblRv
U291cmNlUmVmZXJlbmNlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZUNvbnN0Owot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlJlbW92ZVJlZmVyZW5jZTsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpTaG91bGRSdW5UZXN0T25TaGFyZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpTaG91bGRTaGFyZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaG91bGRVc2VDb2xvcjsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlNodWZmbGVSYW5nZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTa2lwUHJlZml4Owot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmVhbWFibGVUb1N0cmluZzsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpTdHJpbmc7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEV2ZW50
TGlzdGVuZXJzQWNjZXNzb3I7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdFJlc3VsdEFj
Y2Vzc29yOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQzMjsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpXaWRlU3RyaW5nVG9VdGY4OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmVk
aXRfZGlzdGFuY2U6OkNhbGN1bGF0ZU9wdGltYWxFZGl0czsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjplZGl0X2Rpc3RhbmNlOjpDcmVhdGVVbmlmaWVkRGlmZjsKLXVzaW5nIHRlc3Rpbmc6Omlu
dGVybmFsOjplZGl0X2Rpc3RhbmNlOjpFZGl0VHlwZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjprTWF4UmFuZG9tU2VlZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjprVGVzdFR5cGVJZElu
R29vZ2xlVGVzdDsKLXVzaW5nIHRlc3Rpbmc6OmtNYXhTdGFja1RyYWNlRGVwdGg7Ci0KLSNpZiBH
VEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q2Fw
dHVyZVN0ZG91dDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRDYXB0dXJlZFN0ZG91dDsK
LSNlbmRpZgotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OlRocmVhZFdpdGhQYXJhbTsKLSNlbmRpZgotCi1jbGFzcyBUZXN0aW5nVmVjdG9yIDogcHVi
bGljIHN0ZDo6dmVjdG9yPGludD4gewotfTsKLQotOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwo
OjpzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVz
dGluZ1ZlY3RvciYgdmVjdG9yKSB7Ci0gIG9zIDw8ICJ7ICI7Ci0gIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0gICAgb3MgPDwgdmVjdG9yW2ldIDw8ICIgIjsK
LSAgfQotICBvcyA8PCAifSI7Ci0gIHJldHVybiBvczsKLX0KLQotLy8gVGhpcyBsaW5lIHRlc3Rz
IHRoYXQgd2UgY2FuIGRlZmluZSB0ZXN0cyBpbiBhbiB1bm5hbWVkIG5hbWVzcGFjZS4KLW5hbWVz
cGFjZSB7Ci0KLVRFU1QoR2V0UmFuZG9tU2VlZEZyb21GbGFnVGVzdCwgSGFuZGxlc1plcm8pIHsK
LSAgY29uc3QgaW50IHNlZWQgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoMCk7Ci0gIEVYUEVDVF9M
RSgxLCBzZWVkKTsKLSAgRVhQRUNUX0xFKHNlZWQsIHN0YXRpY19jYXN0PGludD4oa01heFJhbmRv
bVNlZWQpKTsKLX0KLQotVEVTVChHZXRSYW5kb21TZWVkRnJvbUZsYWdUZXN0LCBQcmVzZXJ2ZXNW
YWxpZFNlZWQpIHsKLSAgRVhQRUNUX0VRKDEsIEdldFJhbmRvbVNlZWRGcm9tRmxhZygxKSk7Ci0g
IEVYUEVDVF9FUSgyLCBHZXRSYW5kb21TZWVkRnJvbUZsYWcoMikpOwotICBFWFBFQ1RfRVEoa01h
eFJhbmRvbVNlZWQgLSAxLCBHZXRSYW5kb21TZWVkRnJvbUZsYWcoa01heFJhbmRvbVNlZWQgLSAx
KSk7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSwKLSAgICAg
ICAgICAgIEdldFJhbmRvbVNlZWRGcm9tRmxhZyhrTWF4UmFuZG9tU2VlZCkpOwotfQotCi1URVNU
KEdldFJhbmRvbVNlZWRGcm9tRmxhZ1Rlc3QsIE5vcm1hbGl6ZXNJbnZhbGlkU2VlZCkgewotICBj
b25zdCBpbnQgc2VlZDEgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoLTEpOwotICBFWFBFQ1RfTEUo
MSwgc2VlZDEpOwotICBFWFBFQ1RfTEUoc2VlZDEsIHN0YXRpY19jYXN0PGludD4oa01heFJhbmRv
bVNlZWQpKTsKLQotICBjb25zdCBpbnQgc2VlZDIgPSBHZXRSYW5kb21TZWVkRnJvbUZsYWcoa01h
eFJhbmRvbVNlZWQgKyAxKTsKLSAgRVhQRUNUX0xFKDEsIHNlZWQyKTsKLSAgRVhQRUNUX0xFKHNl
ZWQyLCBzdGF0aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSk7Ci19Ci0KLVRFU1QoR2V0TmV4
dFJhbmRvbVNlZWRUZXN0LCBXb3Jrc0ZvclZhbGlkSW5wdXQpIHsKLSAgRVhQRUNUX0VRKDIsIEdl
dE5leHRSYW5kb21TZWVkKDEpKTsKLSAgRVhQRUNUX0VRKDMsIEdldE5leHRSYW5kb21TZWVkKDIp
KTsKLSAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa01heFJhbmRvbVNlZWQpLAotICAgICAg
ICAgICAgR2V0TmV4dFJhbmRvbVNlZWQoa01heFJhbmRvbVNlZWQgLSAxKSk7Ci0gIEVYUEVDVF9F
USgxLCBHZXROZXh0UmFuZG9tU2VlZChrTWF4UmFuZG9tU2VlZCkpOwotCi0gIC8vIFdlIGRlbGli
ZXJhdGVseSBkb24ndCB0ZXN0IEdldE5leHRSYW5kb21TZWVkKCkgd2l0aCBpbnZhbGlkCi0gIC8v
IGlucHV0cywgYXMgdGhhdCByZXF1aXJlcyBkZWF0aCB0ZXN0cywgd2hpY2ggYXJlIGV4cGVuc2l2
ZS4gIFRoaXMKLSAgLy8gaXMgZmluZSBhcyBHZXROZXh0UmFuZG9tU2VlZCgpIGlzIGludGVybmFs
IGFuZCBoYXMgYQotICAvLyBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbi4KLX0KLQotc3RhdGlj
IHZvaWQgQ2xlYXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCkgewotICBUZXN0UmVzdWx0QWNjZXNz
b3I6OkNsZWFyVGVzdFBhcnRSZXN1bHRzKAotICAgICAgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJl
bnRfdGVzdF9yZXN1bHQoKSk7Ci19Ci0KLS8vIFRlc3RzIEdldFR5cGVJZC4KLQotVEVTVChHZXRU
eXBlSWRUZXN0LCBSZXR1cm5zU2FtZVZhbHVlRm9yU2FtZVR5cGUpIHsKLSAgRVhQRUNUX0VRKEdl
dFR5cGVJZDxpbnQ+KCksIEdldFR5cGVJZDxpbnQ+KCkpOwotICBFWFBFQ1RfRVEoR2V0VHlwZUlk
PFRlc3Q+KCksIEdldFR5cGVJZDxUZXN0PigpKTsKLX0KLQotY2xhc3MgU3ViQ2xhc3NPZlRlc3Qg
OiBwdWJsaWMgVGVzdCB7fTsKLWNsYXNzIEFub3RoZXJTdWJDbGFzc09mVGVzdCA6IHB1YmxpYyBU
ZXN0IHt9OwotCi1URVNUKEdldFR5cGVJZFRlc3QsIFJldHVybnNEaWZmZXJlbnRWYWx1ZXNGb3JE
aWZmZXJlbnRUeXBlcykgewotICBFWFBFQ1RfTkUoR2V0VHlwZUlkPGludD4oKSwgR2V0VHlwZUlk
PGNvbnN0IGludD4oKSk7Ci0gIEVYUEVDVF9ORShHZXRUeXBlSWQ8aW50PigpLCBHZXRUeXBlSWQ8
Y2hhcj4oKSk7Ci0gIEVYUEVDVF9ORShHZXRUeXBlSWQ8aW50PigpLCBHZXRUZXN0VHlwZUlkKCkp
OwotICBFWFBFQ1RfTkUoR2V0VHlwZUlkPFN1YkNsYXNzT2ZUZXN0PigpLCBHZXRUZXN0VHlwZUlk
KCkpOwotICBFWFBFQ1RfTkUoR2V0VHlwZUlkPEFub3RoZXJTdWJDbGFzc09mVGVzdD4oKSwgR2V0
VGVzdFR5cGVJZCgpKTsKLSAgRVhQRUNUX05FKEdldFR5cGVJZDxBbm90aGVyU3ViQ2xhc3NPZlRl
c3Q+KCksIEdldFR5cGVJZDxTdWJDbGFzc09mVGVzdD4oKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRo
YXQgR2V0VGVzdFR5cGVJZCgpIHJldHVybnMgdGhlIHNhbWUgdmFsdWUsIG5vIG1hdHRlciBpdAot
Ly8gaXMgY2FsbGVkIGZyb20gaW5zaWRlIEdvb2dsZSBUZXN0IG9yIG91dHNpZGUgb2YgaXQuCi1U
RVNUKEdldFRlc3RUeXBlSWRUZXN0LCBSZXR1cm5zVGhlU2FtZVZhbHVlSW5zaWRlT3JPdXRzaWRl
T2ZHb29nbGVUZXN0KSB7Ci0gIEVYUEVDVF9FUShrVGVzdFR5cGVJZEluR29vZ2xlVGVzdCwgR2V0
VGVzdFR5cGVJZCgpKTsKLX0KLQotLy8gVGVzdHMgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRz
KCkuCi0KLVRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzVGVzdCwgRm9ybWF0c1plcm8p
IHsKLSAgRVhQRUNUX0VRKCIwIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKDApKTsKLX0K
LQotVEVTVChGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHNUZXN0LCBGb3JtYXRzUG9zaXRpdmVO
dW1iZXIpIHsKLSAgRVhQRUNUX0VRKCIwLjAwMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25k
cygzKSk7Ci0gIEVYUEVDVF9FUSgiMC4wMSIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygx
MCkpOwotICBFWFBFQ1RfRVEoIjAuMiIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygyMDAp
KTsKLSAgRVhQRUNUX0VRKCIxLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMTIwMCkp
OwotICBFWFBFQ1RfRVEoIjMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMzAwMCkpOwot
fQotCi1URVNUKEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNOZWdhdGl2
ZU51bWJlcikgewotICBFWFBFQ1RfRVEoIi0wLjAwMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vj
b25kcygtMykpOwotICBFWFBFQ1RfRVEoIi0wLjAxIiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNv
bmRzKC0xMCkpOwotICBFWFBFQ1RfRVEoIi0wLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29u
ZHMoLTIwMCkpOwotICBFWFBFQ1RfRVEoIi0xLjIiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29u
ZHMoLTEyMDApKTsKLSAgRVhQRUNUX0VRKCItMyIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25k
cygtMzAwMCkpOwotfQotCi0vLyBUZXN0cyBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MSgpLiAgVGhlIGNvcnJlY3RuZXNzIG9mIGNvbnZlcnNpb24KLS8vIGZvciBwYXJ0aWN1bGFyIGRh
dGVzIGJlbG93IHdhcyB2ZXJpZmllZCBpbiBQeXRob24gdXNpbmcKLS8vIGRhdGV0aW1lLmRhdGV0
aW1lLmZyb211dGN0aW1lc3RhbXAoPHRpbWV0YW1wPi8xMDAwKS4KLQotLy8gRm9ybWF0RXBvY2hU
aW1lSW5NaWxsaXNBc0lzbzg2MDEgZGVwZW5kcyBvbiB0aGUgY3VycmVudCB0aW1lem9uZSwgc28g
d2UKLS8vIGhhdmUgdG8gc2V0IHVwIGEgcGFydGljdWxhciB0aW1lem9uZSB0byBvYnRhaW4gcHJl
ZGljdGFibGUgcmVzdWx0cy4KLWNsYXNzIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAx
VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIC8vIE9uIEN5Z3dpbiwgR0NDIGRvZXNu
J3QgYWxsb3cgdW5xdWFsaWZpZWQgaW50ZWdlciBsaXRlcmFscyB0byBleGNlZWQKLSAgLy8gMzIg
Yml0cywgZXZlbiB3aGVuIDY0LWJpdCBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUuICBXZSBo
YXZlIHRvCi0gIC8vIGZvcmNlIHRoZSBjb25zdGFudHMgdG8gaGF2ZSBhIDY0LWJpdCB0eXBlIGhl
cmUuCi0gIHN0YXRpYyBjb25zdCBUaW1lSW5NaWxsaXMga01pbGxpc1BlclNlYyA9IDEwMDA7Ci0K
LSBwcml2YXRlOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgc2F2ZWRfdHpfID0gTlVM
TDsKLQotICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQ5OTYgLyogZ2V0ZW52
LCBzdHJkdXA6IGRlcHJlY2F0ZWQgKi8pCi0gICAgaWYgKGdldGVudigiVFoiKSkKLSAgICAgIHNh
dmVkX3R6XyA9IHN0cmR1cChnZXRlbnYoIlRaIikpOwotICAgIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BPUF8oKQotCi0gICAgLy8gU2V0IHVwIHRoZSB0aW1lIHpvbmUgZm9yIEZvcm1hdEVw
b2NoVGltZUluTWlsbGlzQXNJc284NjAxIHRvIHVzZS4gIFdlCi0gICAgLy8gY2Fubm90IHVzZSB0
aGUgbG9jYWwgdGltZSB6b25lIGJlY2F1c2UgdGhlIGZ1bmN0aW9uJ3Mgb3V0cHV0IGRlcGVuZHMK
LSAgICAvLyBvbiB0aGUgdGltZSB6b25lLgotICAgIFNldFRpbWVab25lKCJVVEMrMDAiKTsKLSAg
fQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBTZXRUaW1lWm9uZShzYXZlZF90
el8pOwotICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oc2F2ZWRfdHpfKSk7Ci0gICAgc2F2ZWRf
dHpfID0gTlVMTDsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFRpbWVab25lKGNvbnN0IGNoYXIq
IHRpbWVfem9uZSkgewotICAgIC8vIHR6c2V0KCkgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHRoZSBU
WiB2YXJpYWJsZSBiZWluZyBwcmVzZW50IGFuZCBlbXB0eQotICAgIC8vIGFuZCBub3QgYmVpbmcg
cHJlc2VudCwgc28gd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgY2FzZSBvZiB0aW1lX3pvbmUKLSAg
ICAvLyBiZWluZyBOVUxMLgotI2lmIF9NU0NfVkVSIHx8IEdURVNUX09TX1dJTkRPV1NfTUlOR1cK
LSAgICAvLyAuLi5Vbmxlc3MgaXQncyBNU1ZDLCB3aG9zZSBzdGFuZGFyZCBsaWJyYXJ5J3MgX3B1
dGVudiBkb2Vzbid0Ci0gICAgLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBhbmQgYSBt
aXNzaW5nIHZhcmlhYmxlLgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPQotICAgICAg
ICBzdGQ6OnN0cmluZygiVFo9IikgKyAodGltZV96b25lID8gdGltZV96b25lIDogIiIpOwotICAg
IF9wdXRlbnYoZW52X3Zhci5jX3N0cigpKTsKLSAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5H
U19QVVNIXyg0OTk2IC8qIGRlcHJlY2F0ZWQgZnVuY3Rpb24gKi8pCi0gICAgdHpzZXQoKTsKLSAg
ICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLSNlbHNlCi0gICAgaWYgKHRpbWVf
em9uZSkgewotICAgICAgc2V0ZW52KCgiVFoiKSwgdGltZV96b25lLCAxKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgdW5zZXRlbnYoIlRaIik7Ci0gICAgfQotICAgIHR6c2V0KCk7Ci0jZW5kaWYKLSAg
fQotCi0gIGNvbnN0IGNoYXIqIHNhdmVkX3R6XzsKLX07Ci0KLWNvbnN0IFRpbWVJbk1pbGxpcyBG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3Q6OmtNaWxsaXNQZXJTZWM7Ci0KLVRF
U1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c1R3b0RpZ2l0
U2VnbWVudHMpIHsKLSAgRVhQRUNUX0VRKCIyMDExLTEwLTMxVDE4OjUyOjQyIiwKLSAgICAgICAg
ICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlz
UGVyU2VjKSk7Ci19Ci0KLVRFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRl
c3QsIE1pbGxpc2Vjb25kc0RvTm90QWZmZWN0UmVzdWx0KSB7Ci0gIEVYUEVDVF9FUSgKLSAgICAg
ICIyMDExLTEwLTMxVDE4OjUyOjQyIiwKLSAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJ
c284NjAxKDEzMjAwODcxNjIgKiBrTWlsbGlzUGVyU2VjICsgMjM0KSk7Ci19Ci0KLVRFU1RfRihG
b3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50c0xlYWRpbmdaZXJvZXMp
IHsKLSAgRVhQRUNUX0VRKCIyMDExLTA5LTAzVDA1OjA3OjAyIiwKLSAgICAgICAgICAgIEZvcm1h
dEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMTUwMjY0MjIgKiBrTWlsbGlzUGVyU2VjKSk7
Ci19Ci0KLVRFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QsIFByaW50
czI0SG91clRpbWUpIHsKLSAgRVhQRUNUX0VRKCIyMDExLTA5LTI4VDE3OjA4OjIyIiwKLSAgICAg
ICAgICAgIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKDEzMTcyMjk3MDIgKiBrTWls
bGlzUGVyU2VjKSk7Ci19Ci0KLVRFU1RfRihGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYw
MVRlc3QsIFByaW50c0Vwb2NoU3RhcnQpIHsKLSAgRVhQRUNUX0VRKCIxOTcwLTAxLTAxVDAwOjAw
OjAwIiwgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoMCkpOwotfQotCi0jaWYgR1RF
U1RfQ0FOX0NPTVBBUkVfTlVMTAotCi0jIGlmZGVmIF9fQk9STEFORENfXwotLy8gU2lsZW5jZXMg
d2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIK
LSMgIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MgLXctcmNoCi0jIGVuZGlmCi0KLS8vIFRlc3Rz
IHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyB0cnVlIHdoZW4geCBpcyBhIG51bGwK
LS8vIHBvaW50ZXIgbGl0ZXJhbC4KLVRFU1QoTnVsbExpdGVyYWxUZXN0LCBJc1RydWVGb3JOdWxs
TGl0ZXJhbHMpIHsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyhOVUxMKSk7
Ci0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05VTExfTElURVJBTF8oMCkpOwotICBFWFBFQ1RfVFJV
RShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBVKSk7Ci0gIEVYUEVDVF9UUlVFKEdURVNUX0lTX05V
TExfTElURVJBTF8oMEwpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHVEVTVF9JU19OVUxMX0xJVEVS
QUxfKHgpIGlzIGZhbHNlIHdoZW4geCBpcyBub3QgYSBudWxsCi0vLyBwb2ludGVyIGxpdGVyYWwu
Ci1URVNUKE51bGxMaXRlcmFsVGVzdCwgSXNGYWxzZUZvck5vbk51bGxMaXRlcmFscykgewotICBF
WFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygxKSk7Ci0gIEVYUEVDVF9GQUxTRShH
VEVTVF9JU19OVUxMX0xJVEVSQUxfKDAuMCkpOwotICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVM
TF9MSVRFUkFMXygnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElURVJBTF8o
c3RhdGljX2Nhc3Q8dm9pZCo+KE5VTEwpKSk7Ci19Ci0KLSMgaWZkZWYgX19CT1JMQU5EQ19fCi0v
LyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVzaCIg
c3VwcHJlc3NlZCB0aGVtLgotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSMgZW5kaWYKLQotI2VuZGlm
ICAvLyBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMCi0vLwotLy8gVGVzdHMgQ29kZVBvaW50VG9VdGY4
KCkuCi0KLS8vIFRlc3RzIHRoYXQgdGhlIE5VTCBjaGFyYWN0ZXIgTCdcMCcgaXMgZW5jb2RlZCBj
b3JyZWN0bHkuCi1URVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZU51bCkgewotICBF
WFBFQ1RfRVEoIiIsIENvZGVQb2ludFRvVXRmOChMJ1wwJykpOwotfQotCi0vLyBUZXN0cyB0aGF0
IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIGVuY29kZWQgY29ycmVjdGx5LgotVEVTVChDb2RlUG9pbnRU
b1V0ZjhUZXN0LCBDYW5FbmNvZGVBc2NpaSkgewotICBFWFBFQ1RfRVEoImEiLCBDb2RlUG9pbnRU
b1V0ZjgoTCdhJykpOwotICBFWFBFQ1RfRVEoIloiLCBDb2RlUG9pbnRUb1V0ZjgoTCdaJykpOwot
ICBFWFBFQ1RfRVEoIiYiLCBDb2RlUG9pbnRUb1V0ZjgoTCcmJykpOwotICBFWFBFQ1RfRVEoIlx4
N0YiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDdGJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IFVuaWNv
ZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAotLy8gYXMg
MTEweHh4eHggMTB4eHh4eHguCi1URVNUKENvZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZThU
bzExQml0cykgewotICAvLyAwMDAgMTEwMSAwMDExID0+IDExMC0wMDAxMSAxMC0wMTAwMTEKLSAg
RVhQRUNUX0VRKCJceEMzXHg5MyIsIENvZGVQb2ludFRvVXRmOChMJ1x4RDMnKSk7Ci0KLSAgLy8g
MTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIC8vIFNvbWUgY29tcGlsZXJz
IChlLmcuLCBHQ0Mgb24gTWluR1cpIGNhbm5vdCBoYW5kbGUgbm9uLUFTQ0lJIGNvZGVwb2ludHMK
LSAgLy8gaW4gd2lkZSBzdHJpbmdzIGFuZCB3aWRlIGNoYXJzLiBJbiBvcmRlciB0byBhY2NvbW9k
YXRlIHRoZW0sIHdlIGhhdmUgdG8KLSAgLy8gaW50cm9kdWNlIHN1Y2ggY2hhcmFjdGVyIGNvbnN0
YW50cyBhcyBpbnRlZ2Vycy4KLSAgRVhQRUNUX0VRKCJceEQ1XHhCNiIsCi0gICAgICAgICAgICBD
b2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHg1NzYpKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTIgdG8gMTYgYml0cyBhcmUg
ZW5jb2RlZAotLy8gYXMgMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHguCi1URVNUKENvZGVQb2lu
dFRvVXRmOFRlc3QsIENhbkVuY29kZTEyVG8xNkJpdHMpIHsKLSAgLy8gMDAwMCAxMDAwIDExMDEg
MDAxMSA9PiAxMTEwLTAwMDAgMTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfRVEoIlx4RTBc
eEEzXHg5MyIsCi0gICAgICAgICAgICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJf
dD4oMHg4RDMpKSk7Ci0KLSAgLy8gMTEwMCAwMTExIDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAt
MDExMTAxIDEwLTAwMTEwMQotICBFWFBFQ1RfRVEoIlx4RUNceDlEXHg4RCIsCi0gICAgICAgICAg
ICBDb2RlUG9pbnRUb1V0Zjgoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOwotfQotCi0j
aWYgIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCi0vLyBUZXN0cyBpbiB0aGlzIGdyb3Vw
IHJlcXVpcmUgYSB3Y2hhcl90IHRvIGhvbGQgPiAxNiBiaXRzLCBhbmQgdGh1cwotLy8gYXJlIHNr
aXBwZWQgb24gV2luZG93cywgQ3lnd2luLCBhbmQgU3ltYmlhbiwgd2hlcmUgYSB3Y2hhcl90IGlz
Ci0vLyAxNi1iaXQgd2lkZS4gVGhpcyBjb2RlIG1heSBub3QgY29tcGlsZSBvbiB0aG9zZSBzeXN0
ZW1zLgotCi0vLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDE3IHRv
IDIxIGJpdHMgYXJlIGVuY29kZWQKLS8vIGFzIDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEw
eHh4eHh4LgotVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxN1RvMjFCaXRzKSB7
Ci0gIC8vIDAgMDAwMSAwMDAwIDEwMDAgMTEwMSAwMDExID0+IDExMTEwLTAwMCAxMC0wMTAwMDAg
MTAtMTAwMDExIDEwLTAxMDAxMQotICBFWFBFQ1RfRVEoIlx4RjBceDkwXHhBM1x4OTMiLCBDb2Rl
UG9pbnRUb1V0ZjgoTCdceDEwOEQzJykpOwotCi0gIC8vIDAgMDAwMSAwMDAwIDAxMDAgMDAwMCAw
MDAwID0+IDExMTEwLTAwMCAxMC0wMTAwMDAgMTAtMDEwMDAwIDEwLTAwMDAwMAotICBFWFBFQ1Rf
RVEoIlx4RjBceDkwXHg5MFx4ODAiLCBDb2RlUG9pbnRUb1V0ZjgoTCdceDEwNDAwJykpOwotCi0g
IC8vIDEgMDAwMCAxMDAwIDAxMTAgMDAxMSAwMTAwID0+IDExMTEwLTEwMCAxMC0wMDEwMDAgMTAt
MDExMDAwIDEwLTExMDEwMAotICBFWFBFQ1RfRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBDb2RlUG9p
bnRUb1V0ZjgoTCdceDEwODYzNCcpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBlbmNvZGluZyBhbiBp
bnZhbGlkIGNvZGUtcG9pbnQgZ2VuZXJhdGVzIHRoZSBleHBlY3RlZCByZXN1bHQuCi1URVNUKENv
ZGVQb2ludFRvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKLSAgRVhQRUNU
X0VRKCIoSW52YWxpZCBVbmljb2RlIDB4MTIzNEFCQ0QpIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgx
MjM0QUJDRCcpKTsKLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYx
Nl8KLQotLy8gVGVzdHMgV2lkZVN0cmluZ1RvVXRmOCgpLgotCi0vLyBUZXN0cyB0aGF0IHRoZSBO
VUwgY2hhcmFjdGVyIEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgotVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlTnVsKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgV2lkZVN0cmlu
Z1RvVXRmOChMIiIsIDApLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIFdpZGVTdHJpbmdU
b1V0ZjgoTCIiLCAtMSkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQVNDSUkgc3RyaW5n
cyBhcmUgZW5jb2RlZCBjb3JyZWN0bHkuCi1URVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5F
bmNvZGVBc2NpaSkgewotICBFWFBFQ1RfU1RSRVEoImEiLCBXaWRlU3RyaW5nVG9VdGY4KEwiYSIs
IDEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImFiIiwgV2lkZVN0cmluZ1RvVXRmOChMImFi
IiwgMikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYSIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJh
IiwgLTEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoImFiIiwgV2lkZVN0cmluZ1RvVXRmOChM
ImFiIiwgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2lu
dHMgdGhhdCBoYXZlIDggdG8gMTEgYml0cyBhcmUgZW5jb2RlZAotLy8gYXMgMTEweHh4eHggMTB4
eHh4eHguCi1URVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsK
LSAgLy8gMDAwIDExMDEgMDAxMSA9PiAxMTAtMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJF
USgiXHhDM1x4OTMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiXHhEMyIsIDEpLmNfc3RyKCkpOwotICBF
WFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4RDMiLCAtMSkuY19z
dHIoKSk7Ci0KLSAgLy8gMTAxIDAxMTEgMDExMCA9PiAxMTAtMTAxMDEgMTAtMTEwMTEwCi0gIGNv
bnN0IHdjaGFyX3Qgc1tdID0geyAweDU3NiwgJ1wwJyB9OwotICBFWFBFQ1RfU1RSRVEoIlx4RDVc
eEI2IiwgV2lkZVN0cmluZ1RvVXRmOChzLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJc
eEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMgdGhhdCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVu
Y29kZWQKLS8vIGFzIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4LgotVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ2FuRW5jb2RlMTJUbzE2Qml0cykgewotICAvLyAwMDAwIDEwMDAgMTEwMSAw
MDExID0+IDExMTAtMDAwMCAxMC0xMDAwMTEgMTAtMDEwMDExCi0gIGNvbnN0IHdjaGFyX3QgczFb
XSA9IHsgMHg4RDMsICdcMCcgfTsKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4OTMiLCBXaWRl
U3RyaW5nVG9VdGY4KHMxLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEUwXHhBM1x4
OTMiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAtMSkuY19zdHIoKSk7Ci0KLSAgLy8gMTEwMCAwMTEx
IDAxMDAgMTEwMSA9PiAxMTEwLTExMDAgMTAtMDExMTAxIDEwLTAwMTEwMQotICBjb25zdCB3Y2hh
cl90IHMyW10gPSB7IDB4Qzc0RCwgJ1wwJyB9OwotICBFWFBFQ1RfU1RSRVEoIlx4RUNceDlEXHg4
RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIDEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlx4
RUNceDlEXHg4RCIsIFdpZGVTdHJpbmdUb1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5jdGlvbiBlbmNvdW50
ZXJzIFwwIGNoYXJhY3Rlci4KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIFN0b3BzT25OdWxD
aGFyYWN0ZXIpIHsKLSAgRVhQRUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJD
XDBYWVoiLCAxMDApLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBjb252ZXJzaW9u
IHN0b3BzIHdoZW4gdGhlIGZ1bmN0aW9uIHJlYWNoZXMgdGhlIGxpbWl0Ci0vLyBzcGVjaWZpZWQg
YnkgdGhlICdsZW5ndGgnIHBhcmFtZXRlci4KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIFN0
b3BzV2hlbkxlbmd0aExpbWl0UmVhY2hlZCkgewotICBFWFBFQ1RfU1RSRVEoIkFCQyIsIFdpZGVT
dHJpbmdUb1V0ZjgoTCJBQkNERUYiLCAzKS5jX3N0cigpKTsKLX0KLQotI2lmICFHVEVTVF9XSURF
X1NUUklOR19VU0VTX1VURjE2XwotLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRo
YXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVkCi0vLyBhcyAxMTExMHh4eCAxMHh4eHh4
eCAxMHh4eHh4eCAxMHh4eHh4eC4gVGhpcyBjb2RlIG1heSBub3QgY29tcGlsZQotLy8gb24gdGhl
IHN5c3RlbXMgdXNpbmcgVVRGLTE2IGVuY29kaW5nLgotVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVz
dCwgQ2FuRW5jb2RlMTdUbzIxQml0cykgewotICAvLyAwIDAwMDEgMDAwMCAxMDAwIDExMDEgMDAx
MSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNUX1NU
UkVRKCJceEYwXHg5MFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4RDMiLCAxKS5j
X3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEYwXHg5MFx4QTNceDkzIiwgV2lkZVN0cmluZ1Rv
VXRmOChMIlx4MTA4RDMiLCAtMSkuY19zdHIoKSk7Ci0KLSAgLy8gMSAwMDAwIDEwMDAgMDExMCAw
MDExIDAxMDAgPT4gMTExMTAtMTAwIDEwLTAwMTAwMCAxMC0wMTEwMDAgMTAtMTEwMTAwCi0gIEVY
UEVDVF9TVFJFUSgiXHhGNFx4ODhceDk4XHhCNCIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDEwODYz
NCIsIDEpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIlx4RjRceDg4XHg5OFx4QjQiLCBXaWRl
U3RyaW5nVG9VdGY4KEwiXHgxMDg2MzQiLCAtMSkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgZW5jb2RpbmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
cmVzdWx0LgotVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlSW52YWxpZENvZGVQ
b2ludCkgewotICBFWFBFQ1RfU1RSRVEoIihJbnZhbGlkIFVuaWNvZGUgMHhBQkNERkYpIiwKLSAg
ICAgICAgICAgICAgIFdpZGVTdHJpbmdUb1V0ZjgoTCJceEFCQ0RGRiIsIC0xKS5jX3N0cigpKTsK
LX0KLSNlbHNlICAvLyAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KLS8vIFRlc3RzIHRo
YXQgc3Vycm9nYXRlIHBhaXJzIGFyZSBlbmNvZGVkIGNvcnJlY3RseSBvbiB0aGUgc3lzdGVtcyB1
c2luZwotLy8gVVRGLTE2IGVuY29kaW5nIGluIHRoZSB3aWRlIHN0cmluZ3MuCi1URVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVWYWxpZFV0ZjE2U1Vycm9nYXRlUGFpcnMpIHsKLSAg
Y29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4RDgwMSwgMHhEQzAwLCAnXDAnIH07Ci0gIEVYUEVDVF9T
VFJFUSgiXHhGMFx4OTBceDkwXHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgVVRGLTE2IHN1cnJvZ2F0
ZSBwYWlyCi0vLyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4KLVRFU1QoV2lkZVN0cmlu
Z1RvVXRmOFRlc3QsIENhbkVuY29kZUludmFsaWRVdGYxNlN1cnJvZ2F0ZVBhaXIpIHsKLSAgLy8g
TGVhZGluZyBzdXJyb2dhdGUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgotICBjb25zdCB3
Y2hhcl90IHMxW10gPSB7IDB4RDgwMCwgJ1wwJyB9OwotICBFWFBFQ1RfU1RSRVEoIlx4RURceEEw
XHg4MCIsIFdpZGVTdHJpbmdUb1V0ZjgoczEsIC0xKS5jX3N0cigpKTsKLSAgLy8gTGVhZGluZyBz
dXJyb2dhdGUgaXMgbm90IGZvbGxvd2VkIGJ5IHRoZSB0cmFpbGluZyBzdXJyb2dhdGUuCi0gIGNv
bnN0IHdjaGFyX3QgczJbXSA9IHsgMHhEODAwLCAnTScsICdcMCcgfTsKLSAgRVhQRUNUX1NUUkVR
KCJceEVEXHhBMFx4ODBNIiwgV2lkZVN0cmluZ1RvVXRmOChzMiwgLTEpLmNfc3RyKCkpOwotICAv
LyBUcmFpbGluZyBzdXJyb2dhdGUgYXBwZWFyYXMgd2l0aG91dCBhIGxlYWRpbmcgc3Vycm9nYXRl
LgotICBjb25zdCB3Y2hhcl90IHMzW10gPSB7IDB4REMwMCwgJ1AnLCAnUScsICdSJywgJ1wwJyB9
OwotICBFWFBFQ1RfU1RSRVEoIlx4RURceEIwXHg4MFBRUiIsIFdpZGVTdHJpbmdUb1V0ZjgoczMs
IC0xKS5jX3N0cigpKTsKLX0KLSNlbmRpZiAgLy8gIUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRG
MTZfCi0KLS8vIFRlc3RzIHRoYXQgY29kZXBvaW50IGNvbmNhdGVuYXRpb24gd29ya3MgY29ycmVj
dGx5LgotI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwotVEVTVChXaWRlU3RyaW5n
VG9VdGY4VGVzdCwgQ29uY2F0ZW5hdGVzQ29kZXBvaW50c0NvcnJlY3RseSkgewotICBjb25zdCB3
Y2hhcl90IHNbXSA9IHsgMHgxMDg2MzQsIDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQzLCAweDEw
ODYzNCwgJ1wwJ307Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICJceEY0XHg4OFx4OThceEI0Igot
ICAgICAgICAgICJceEVDXHg5RFx4OEQiCi0gICAgICAgICAgIlxuIgotICAgICAgICAgICJceEQ1
XHhCNiIKLSAgICAgICAgICAiXHhFMFx4QTNceDkzIgotICAgICAgICAgICJceEY0XHg4OFx4OThc
eEI0IiwKLSAgICAgIFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwotfQotI2Vsc2UK
LVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVwb2ludHNDb3JyZWN0
bHkpIHsKLSAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4Qzc0RCwgJ1xuJywgMHg1NzYsIDB4OEQz
LCAnXDAnfTsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAgIlx4RUNceDlEXHg4RCIgIlxuIiAiXHhE
NVx4QjYiICJceEUwXHhBM1x4OTMiLAotICAgICAgV2lkZVN0cmluZ1RvVXRmOChzLCAtMSkuY19z
dHIoKSk7Ci19Ci0jZW5kaWYgIC8vICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwotCi0v
LyBUZXN0cyB0aGUgUmFuZG9tIGNsYXNzLgotCi1URVNUKFJhbmRvbURlYXRoVGVzdCwgR2VuZXJh
dGVzQ3Jhc2hlc09uSW52YWxpZFJhbmdlKSB7Ci0gIHRlc3Rpbmc6OmludGVybmFsOjpSYW5kb20g
cmFuZG9tKDQyKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKLSAgICAgIHJhbmRvbS5H
ZW5lcmF0ZSgwKSwKLSAgICAgICJDYW5ub3QgZ2VuZXJhdGUgYSBudW1iZXIgaW4gdGhlIHJhbmdl
IFxcWzAsIDBcXCkiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKLSAgICAgIHJhbmRv
bS5HZW5lcmF0ZSh0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tOjprTWF4UmFuZ2UgKyAxKSwKLSAg
ICAgICJHZW5lcmF0aW9uIG9mIGEgbnVtYmVyIGluIFxcWzAsIDIxNDc0ODM2NDlcXCkgd2FzIHJl
cXVlc3RlZCwgIgotICAgICAgImJ1dCB0aGlzIGNhbiBvbmx5IGdlbmVyYXRlIG51bWJlcnMgaW4g
XFxbMCwgMjE0NzQ4MzY0OFxcKSIpOwotfQotCi1URVNUKFJhbmRvbVRlc3QsIEdlbmVyYXRlc051
bWJlcnNXaXRoaW5SYW5nZSkgewotICBjb25zdCBVSW50MzIga1JhbmdlID0gMTAwMDA7Ci0gIHRl
c3Rpbmc6OmludGVybmFsOjpSYW5kb20gcmFuZG9tKDEyMzQ1KTsKLSAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgaSsrKSB7Ci0gICAgRVhQRUNUX0xUKHJhbmRvbS5HZW5lcmF0ZShrUmFuZ2UpLCBr
UmFuZ2UpIDw8ICIgZm9yIGl0ZXJhdGlvbiAiIDw8IGk7Ci0gIH0KLQotICB0ZXN0aW5nOjppbnRl
cm5hbDo6UmFuZG9tIHJhbmRvbTIodGVzdGluZzo6aW50ZXJuYWw6OlJhbmRvbTo6a01heFJhbmdl
KTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7Ci0gICAgRVhQRUNUX0xUKHJhbmRv
bTIuR2VuZXJhdGUoa1JhbmdlKSwga1JhbmdlKSA8PCAiIGZvciBpdGVyYXRpb24gIiA8PCBpOwot
ICB9Ci19Ci0KLVRFU1QoUmFuZG9tVGVzdCwgUmVwZWF0c1doZW5SZXNlZWRlZCkgewotICBjb25z
dCBpbnQga1NlZWQgPSAxMjM7Ci0gIGNvbnN0IGludCBrQXJyYXlTaXplID0gMTA7Ci0gIGNvbnN0
IFVJbnQzMiBrUmFuZ2UgPSAxMDAwMDsKLSAgVUludDMyIHZhbHVlc1trQXJyYXlTaXplXTsKLQot
ICB0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tIHJhbmRvbShrU2VlZCk7Ci0gIGZvciAoaW50IGkg
PSAwOyBpIDwga0FycmF5U2l6ZTsgaSsrKSB7Ci0gICAgdmFsdWVzW2ldID0gcmFuZG9tLkdlbmVy
YXRlKGtSYW5nZSk7Ci0gIH0KLQotICByYW5kb20uUmVzZWVkKGtTZWVkKTsKLSAgZm9yIChpbnQg
aSA9IDA7IGkgPCBrQXJyYXlTaXplOyBpKyspIHsKLSAgICBFWFBFQ1RfRVEodmFsdWVzW2ldLCBy
YW5kb20uR2VuZXJhdGUoa1JhbmdlKSkgPDwgIiBmb3IgaXRlcmF0aW9uICIgPDwgaTsKLSAgfQot
fQotCi0vLyBUZXN0cyBTVEwgY29udGFpbmVyIHV0aWxpdGllcy4KLQotLy8gVGVzdHMgQ291bnRJ
ZigpLgotCi1zdGF0aWMgYm9vbCBJc1Bvc2l0aXZlKGludCBuKSB7IHJldHVybiBuID4gMDsgfQot
Ci1URVNUKENvbnRhaW5lclV0aWxpdHlUZXN0LCBDb3VudElmKSB7Ci0gIHN0ZDo6dmVjdG9yPGlu
dD4gdjsKLSAgRVhQRUNUX0VRKDAsIENvdW50SWYodiwgSXNQb3NpdGl2ZSkpOyAgLy8gV29ya3Mg
Zm9yIGFuIGVtcHR5IGNvbnRhaW5lci4KLQotICB2LnB1c2hfYmFjaygtMSk7Ci0gIHYucHVzaF9i
YWNrKDApOwotICBFWFBFQ1RfRVEoMCwgQ291bnRJZih2LCBJc1Bvc2l0aXZlKSk7ICAvLyBXb3Jr
cyB3aGVuIG5vIHZhbHVlIHNhdGlzZmllcy4KLQotICB2LnB1c2hfYmFjaygyKTsKLSAgdi5wdXNo
X2JhY2soLTEwKTsKLSAgdi5wdXNoX2JhY2soMTApOwotICBFWFBFQ1RfRVEoMiwgQ291bnRJZih2
LCBJc1Bvc2l0aXZlKSk7Ci19Ci0KLS8vIFRlc3RzIEZvckVhY2goKS4KLQotc3RhdGljIGludCBn
X3N1bSA9IDA7Ci1zdGF0aWMgdm9pZCBBY2N1bXVsYXRlKGludCBuKSB7IGdfc3VtICs9IG47IH0K
LQotVEVTVChDb250YWluZXJVdGlsaXR5VGVzdCwgRm9yRWFjaCkgewotICBzdGQ6OnZlY3Rvcjxp
bnQ+IHY7Ci0gIGdfc3VtID0gMDsKLSAgRm9yRWFjaCh2LCBBY2N1bXVsYXRlKTsKLSAgRVhQRUNU
X0VRKDAsIGdfc3VtKTsgIC8vIFdvcmtzIGZvciBhbiBlbXB0eSBjb250YWluZXI7Ci0KLSAgZ19z
dW0gPSAwOwotICB2LnB1c2hfYmFjaygxKTsKLSAgRm9yRWFjaCh2LCBBY2N1bXVsYXRlKTsKLSAg
RVhQRUNUX0VRKDEsIGdfc3VtKTsgIC8vIFdvcmtzIGZvciBhIGNvbnRhaW5lciB3aXRoIG9uZSBl
bGVtZW50LgotCi0gIGdfc3VtID0gMDsKLSAgdi5wdXNoX2JhY2soMjApOwotICB2LnB1c2hfYmFj
aygzMDApOwotICBGb3JFYWNoKHYsIEFjY3VtdWxhdGUpOwotICBFWFBFQ1RfRVEoMzIxLCBnX3N1
bSk7Ci19Ci0KLS8vIFRlc3RzIEdldEVsZW1lbnRPcigpLgotVEVTVChDb250YWluZXJVdGlsaXR5
VGVzdCwgR2V0RWxlbWVudE9yKSB7Ci0gIHN0ZDo6dmVjdG9yPGNoYXI+IGE7Ci0gIEVYUEVDVF9F
USgneCcsIEdldEVsZW1lbnRPcihhLCAwLCAneCcpKTsKLQotICBhLnB1c2hfYmFjaygnYScpOwot
ICBhLnB1c2hfYmFjaygnYicpOwotICBFWFBFQ1RfRVEoJ2EnLCBHZXRFbGVtZW50T3IoYSwgMCwg
J3gnKSk7Ci0gIEVYUEVDVF9FUSgnYicsIEdldEVsZW1lbnRPcihhLCAxLCAneCcpKTsKLSAgRVhQ
RUNUX0VRKCd4JywgR2V0RWxlbWVudE9yKGEsIC0yLCAneCcpKTsKLSAgRVhQRUNUX0VRKCd4Jywg
R2V0RWxlbWVudE9yKGEsIDIsICd4JykpOwotfQotCi1URVNUKENvbnRhaW5lclV0aWxpdHlEZWF0
aFRlc3QsIFNodWZmbGVSYW5nZSkgewotICBzdGQ6OnZlY3RvcjxpbnQ+IGE7Ci0gIGEucHVzaF9i
YWNrKDApOwotICBhLnB1c2hfYmFjaygxKTsKLSAgYS5wdXNoX2JhY2soMik7Ci0gIHRlc3Rpbmc6
OmludGVybmFsOjpSYW5kb20gcmFuZG9tKDEpOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoCi0gICAgICBTaHVmZmxlUmFuZ2UoJnJhbmRvbSwgLTEsIDEsICZhKSwKLSAgICAgICJJbnZh
bGlkIHNodWZmbGUgcmFuZ2Ugc3RhcnQgLTE6IG11c3QgYmUgaW4gcmFuZ2UgXFxbMCwgM1xcXSIp
OwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAgICAgU2h1ZmZsZVJhbmdlKCZyYW5k
b20sIDQsIDQsICZhKSwKLSAgICAgICJJbnZhbGlkIHNodWZmbGUgcmFuZ2Ugc3RhcnQgNDogbXVz
dCBiZSBpbiByYW5nZSBcXFswLCAzXFxdIik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQo
Ci0gICAgICBTaHVmZmxlUmFuZ2UoJnJhbmRvbSwgMywgMiwgJmEpLAotICAgICAgIkludmFsaWQg
c2h1ZmZsZSByYW5nZSBmaW5pc2ggMjogbXVzdCBiZSBpbiByYW5nZSBcXFszLCAzXFxdIik7Ci0g
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCi0gICAgICBTaHVmZmxlUmFuZ2UoJnJhbmRvbSwg
MywgNCwgJmEpLAotICAgICAgIkludmFsaWQgc2h1ZmZsZSByYW5nZSBmaW5pc2ggNDogbXVzdCBi
ZSBpbiByYW5nZSBcXFszLCAzXFxdIik7Ci19Ci0KLWNsYXNzIFZlY3RvclNodWZmbGVUZXN0IDog
cHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIGNvbnN0IGludCBrVmVjdG9yU2l6
ZSA9IDIwOwotCi0gIFZlY3RvclNodWZmbGVUZXN0KCkgOiByYW5kb21fKDEpIHsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGtWZWN0b3JTaXplOyBpKyspIHsKLSAgICAgIHZlY3Rvcl8ucHVzaF9i
YWNrKGkpOwotICAgIH0KLSAgfQotCi0gIHN0YXRpYyBib29sIFZlY3RvcklzQ29ycnVwdChjb25z
dCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IpIHsKLSAgICBpZiAoa1ZlY3RvclNpemUgIT0gc3RhdGlj
X2Nhc3Q8aW50Pih2ZWN0b3Iuc2l6ZSgpKSkgewotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgYm9vbCBmb3VuZF9pbl92ZWN0b3Jba1ZlY3RvclNpemVdID0geyBmYWxzZSB9OwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmVjdG9yLnNpemUoKTsgaSsrKSB7Ci0gICAgICBjb25z
dCBpbnQgZSA9IHZlY3RvcltpXTsKLSAgICAgIGlmIChlIDwgMCB8fCBlID49IGtWZWN0b3JTaXpl
IHx8IGZvdW5kX2luX3ZlY3RvcltlXSkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0K
LSAgICAgIGZvdW5kX2luX3ZlY3RvcltlXSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gVmVjdG9y
IHNpemUgaXMgY29ycmVjdCwgZWxlbWVudHMnIHJhbmdlIGlzIGNvcnJlY3QsIG5vCi0gICAgLy8g
ZHVwbGljYXRlIGVsZW1lbnRzLiAgVGhlcmVmb3JlIG5vIGNvcnJ1cHRpb24gaGFzIG9jY3VycmVk
LgotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHN0YXRpYyBib29sIFZlY3RvcklzTm90Q29y
cnVwdChjb25zdCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IpIHsKLSAgICByZXR1cm4gIVZlY3Rvcklz
Q29ycnVwdCh2ZWN0b3IpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgUmFuZ2VJc1NodWZmbGVkKGNv
bnN0IFRlc3RpbmdWZWN0b3ImIHZlY3RvciwgaW50IGJlZ2luLCBpbnQgZW5kKSB7Ci0gICAgZm9y
IChpbnQgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKLSAgICAgIGlmIChpICE9IHZlY3Rvcltp
XSkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgUmFuZ2VJc1Vuc2h1ZmZsZWQoCi0gICAgICBjb25z
dCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IsIGludCBiZWdpbiwgaW50IGVuZCkgewotICAgIHJldHVy
biAhUmFuZ2VJc1NodWZmbGVkKHZlY3RvciwgYmVnaW4sIGVuZCk7Ci0gIH0KLQotICBzdGF0aWMg
Ym9vbCBWZWN0b3JJc1NodWZmbGVkKGNvbnN0IFRlc3RpbmdWZWN0b3ImIHZlY3RvcikgewotICAg
IHJldHVybiBSYW5nZUlzU2h1ZmZsZWQodmVjdG9yLCAwLCBzdGF0aWNfY2FzdDxpbnQ+KHZlY3Rv
ci5zaXplKCkpKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIFZlY3RvcklzVW5zaHVmZmxlZChjb25z
dCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IpIHsKLSAgICByZXR1cm4gIVZlY3RvcklzU2h1ZmZsZWQo
dmVjdG9yKTsKLSAgfQotCi0gIHRlc3Rpbmc6OmludGVybmFsOjpSYW5kb20gcmFuZG9tXzsKLSAg
VGVzdGluZ1ZlY3RvciB2ZWN0b3JfOwotfTsgIC8vIGNsYXNzIFZlY3RvclNodWZmbGVUZXN0Ci0K
LWNvbnN0IGludCBWZWN0b3JTaHVmZmxlVGVzdDo6a1ZlY3RvclNpemU7Ci0KLVRFU1RfRihWZWN0
b3JTaHVmZmxlVGVzdCwgSGFuZGxlc0VtcHR5UmFuZ2UpIHsKLSAgLy8gVGVzdHMgYW4gZW1wdHkg
cmFuZ2UgYXQgdGhlIGJlZ2lubmluZy4uLgotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIDAsIDAs
ICZ2ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9yXyk7
Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc1Vuc2h1ZmZsZWQsIHZlY3Rvcl8pOwotCi0gIC8vIC4u
LmluIHRoZSBtaWRkbGUuLi4KLSAgU2h1ZmZsZVJhbmdlKCZyYW5kb21fLCBrVmVjdG9yU2l6ZS8y
LCBrVmVjdG9yU2l6ZS8yLCAmdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENv
cnJ1cHQsIHZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNodWZmbGVkLCB2ZWN0
b3JfKTsKLQotICAvLyAuLi5hdCB0aGUgZW5kLi4uCi0gIFNodWZmbGVSYW5nZSgmcmFuZG9tXywg
a1ZlY3RvclNpemUgLSAxLCBrVmVjdG9yU2l6ZSAtIDEsICZ2ZWN0b3JfKTsKLSAgQVNTRVJUX1BS
RUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJ
c1Vuc2h1ZmZsZWQsIHZlY3Rvcl8pOwotCi0gIC8vIC4uLmFuZCBwYXN0IHRoZSBlbmQuCi0gIFNo
dWZmbGVSYW5nZSgmcmFuZG9tXywga1ZlY3RvclNpemUsIGtWZWN0b3JTaXplLCAmdmVjdG9yXyk7
Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBBU1NFUlRf
UFJFRDEoVmVjdG9ySXNVbnNodWZmbGVkLCB2ZWN0b3JfKTsKLX0KLQotVEVTVF9GKFZlY3RvclNo
dWZmbGVUZXN0LCBIYW5kbGVzUmFuZ2VPZlNpemVPbmUpIHsKLSAgLy8gVGVzdHMgYSBzaXplIG9u
ZSByYW5nZSBhdCB0aGUgYmVnaW5uaW5nLi4uCi0gIFNodWZmbGVSYW5nZSgmcmFuZG9tXywgMCwg
MSwgJnZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3Jf
KTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVjdG9yXyk7Ci0KLSAgLy8g
Li4uaW4gdGhlIG1pZGRsZS4uLgotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtWZWN0b3JTaXpl
LzIsIGtWZWN0b3JTaXplLzIgKyAxLCAmdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJ
c05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNodWZmbGVk
LCB2ZWN0b3JfKTsKLQotICAvLyAuLi5hbmQgYXQgdGhlIGVuZC4KLSAgU2h1ZmZsZVJhbmdlKCZy
YW5kb21fLCBrVmVjdG9yU2l6ZSAtIDEsIGtWZWN0b3JTaXplLCAmdmVjdG9yXyk7Ci0gIEFTU0VS
VF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVj
dG9ySXNVbnNodWZmbGVkLCB2ZWN0b3JfKTsKLX0KLQotLy8gQmVjYXVzZSB3ZSB1c2Ugb3VyIG93
biByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBhbmQgYSBmaXhlZCBzZWVkLAotLy8gd2UgY2FuIGd1
YXJhbnRlZSB0aGF0IHRoZSBmb2xsb3dpbmcgInJhbmRvbSIgdGVzdHMgd2lsbCBzdWNjZWVkLgot
Ci1URVNUX0YoVmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzRW50aXJlVmVjdG9yKSB7Ci0gIFNo
dWZmbGUoJnJhbmRvbV8sICZ2ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29y
cnVwdCwgdmVjdG9yXyk7Ci0gIEVYUEVDVF9GQUxTRShWZWN0b3JJc1Vuc2h1ZmZsZWQodmVjdG9y
XykpIDw8IHZlY3Rvcl87Ci0KLSAgLy8gVGVzdHMgdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnRz
IGluIHBhcnRpY3VsYXIgdG8gZW5zdXJlIHRoYXQKLSAgLy8gdGhlcmUgYXJlIG5vIG9mZi1ieS1v
bmUgcHJvYmxlbXMgaW4gb3VyIHNodWZmbGUgYWxnb3JpdGhtLgotICBFWFBFQ1RfTkUoMCwgdmVj
dG9yX1swXSk7Ci0gIEVYUEVDVF9ORShrVmVjdG9yU2l6ZSAtIDEsIHZlY3Rvcl9ba1ZlY3RvclNp
emUgLSAxXSk7Ci19Ci0KLVRFU1RfRihWZWN0b3JTaHVmZmxlVGVzdCwgU2h1ZmZsZXNTdGFydE9m
VmVjdG9yKSB7Ci0gIGNvbnN0IGludCBrUmFuZ2VTaXplID0ga1ZlY3RvclNpemUvMjsKLQotICBT
aHVmZmxlUmFuZ2UoJnJhbmRvbV8sIDAsIGtSYW5nZVNpemUsICZ2ZWN0b3JfKTsKLQotICBBU1NF
UlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgRVhQRUNUX1BSRUQzKFJh
bmdlSXNTaHVmZmxlZCwgdmVjdG9yXywgMCwga1JhbmdlU2l6ZSk7Ci0gIEVYUEVDVF9QUkVEMyhS
YW5nZUlzVW5zaHVmZmxlZCwgdmVjdG9yXywga1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOwotfQot
Ci1URVNUX0YoVmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzRW5kT2ZWZWN0b3IpIHsKLSAgY29u
c3QgaW50IGtSYW5nZVNpemUgPSBrVmVjdG9yU2l6ZSAvIDI7Ci0gIFNodWZmbGVSYW5nZSgmcmFu
ZG9tXywga1JhbmdlU2l6ZSwga1ZlY3RvclNpemUsICZ2ZWN0b3JfKTsKLQotICBBU1NFUlRfUFJF
RDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgRVhQRUNUX1BSRUQzKFJhbmdlSXNV
bnNodWZmbGVkLCB2ZWN0b3JfLCAwLCBrUmFuZ2VTaXplKTsKLSAgRVhQRUNUX1BSRUQzKFJhbmdl
SXNTaHVmZmxlZCwgdmVjdG9yXywga1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOwotfQotCi1URVNU
X0YoVmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzTWlkZGxlT2ZWZWN0b3IpIHsKLSAgaW50IGtS
YW5nZVNpemUgPSBrVmVjdG9yU2l6ZS8zOwotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtSYW5n
ZVNpemUsIDIqa1JhbmdlU2l6ZSwgJnZlY3Rvcl8pOwotCi0gIEFTU0VSVF9QUkVEMShWZWN0b3JJ
c05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1Vuc2h1ZmZsZWQs
IHZlY3Rvcl8sIDAsIGtSYW5nZVNpemUpOwotICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1NodWZmbGVk
LCB2ZWN0b3JfLCBrUmFuZ2VTaXplLCAyKmtSYW5nZVNpemUpOwotICBFWFBFQ1RfUFJFRDMoUmFu
Z2VJc1Vuc2h1ZmZsZWQsIHZlY3Rvcl8sIDIqa1JhbmdlU2l6ZSwga1ZlY3RvclNpemUpOwotfQot
Ci1URVNUX0YoVmVjdG9yU2h1ZmZsZVRlc3QsIFNodWZmbGVzUmVwZWF0YWJseSkgewotICBUZXN0
aW5nVmVjdG9yIHZlY3RvcjI7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1ZlY3RvclNpemU7IGkr
KykgewotICAgIHZlY3RvcjIucHVzaF9iYWNrKGkpOwotICB9Ci0KLSAgcmFuZG9tXy5SZXNlZWQo
MTIzNCk7Ci0gIFNodWZmbGUoJnJhbmRvbV8sICZ2ZWN0b3JfKTsKLSAgcmFuZG9tXy5SZXNlZWQo
MTIzNCk7Ci0gIFNodWZmbGUoJnJhbmRvbV8sICZ2ZWN0b3IyKTsKLQotICBBU1NFUlRfUFJFRDEo
VmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90
Q29ycnVwdCwgdmVjdG9yMik7Ci0KLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVmVjdG9yU2l6ZTsg
aSsrKSB7Ci0gICAgRVhQRUNUX0VRKHZlY3Rvcl9baV0sIHZlY3RvcjJbaV0pIDw8ICIgd2hlcmUg
aSBpcyAiIDw8IGk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgdGhlIHNpemUgb2YgdGhlIEFzc2VydEhl
bHBlciBjbGFzcy4KLQotVEVTVChBc3NlcnRIZWxwZXJUZXN0LCBBc3NlcnRIZWxwZXJJc1NtYWxs
KSB7Ci0gIC8vIFRvIGF2b2lkIGJyZWFraW5nIGNsaWVudHMgdGhhdCB1c2UgbG90cyBvZiBhc3Nl
cnRpb25zIGluIG9uZQotICAvLyBmdW5jdGlvbiwgd2UgY2Fubm90IGdyb3cgdGhlIHNpemUgb2Yg
QXNzZXJ0SGVscGVyLgotICBFWFBFQ1RfTEUoc2l6ZW9mKHRlc3Rpbmc6OmludGVybmFsOjpBc3Nl
cnRIZWxwZXIpLCBzaXplb2Yodm9pZCopKTsKLX0KLQotLy8gVGVzdHMgU3RyaW5nOjpFbmRzV2l0
aENhc2VJbnNlbnNpdGl2ZSgpLgotVEVTVChTdHJpbmdUZXN0LCBFbmRzV2l0aENhc2VJbnNlbnNp
dGl2ZSkgewotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJm
b29iYXIiLCAiQkFSIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRoQ2FzZUluc2Vu
c2l0aXZlKCJmb29iYVIiLCAiYmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKCJmb29iYXIiLCAiIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkVu
ZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCIiLCAiIikpOwotCi0gIEVYUEVDVF9GQUxTRShTdHJpbmc6
OkVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKCJGb29iYXIiLCAiZm9vIikpOwotICBFWFBFQ1RfRkFM
U0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkZvbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoIiIsICJmb28iKSk7
Ci19Ci0KLS8vIEMrK0J1aWxkZXIncyBwcmVwcm9jZXNzb3IgaXMgYnVnZ3k7IGl0IGZhaWxzIHRv
IGV4cGFuZCBtYWNyb3MgdGhhdAotLy8gYXBwZWFyIGluIG1hY3JvIHBhcmFtZXRlcnMgYWZ0ZXIg
d2lkZSBjaGFyIGxpdGVyYWxzLiAgUHJvdmlkZSBhbiBhbGlhcwotLy8gZm9yIE5VTEwgYXMgYSB3
b3JrYXJvdW5kLgotc3RhdGljIGNvbnN0IHdjaGFyX3QqIGNvbnN0IGtOdWxsID0gTlVMTDsKLQot
Ly8gVGVzdHMgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscwotVEVTVChT
dHJpbmdUZXN0LCBDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscykgewotICBFWFBFQ1Rf
VFJVRShTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKE5VTEwsIE5VTEwp
KTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVh
bHMoa051bGwsIEwiIikpOwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVX
aWRlQ1N0cmluZ0VxdWFscyhMIiIsIGtOdWxsKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmc6OkNh
c2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGtOdWxsLCBMImZvb2JhciIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJmb29i
YXIiLCBrTnVsbCkpOwotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVD
U3RyaW5nRXF1YWxzKEwiZm9vYmFyIiwgTCJmb29iYXIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmlu
Zzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJmb29iYXIiLCBMIkZPT0JBUiIp
KTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFs
cyhMIkZPT0JBUiIsIEwiZm9vYmFyIikpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi0v
LyBUZXN0cyBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZygpLgotVEVTVChTdHJpbmdUZXN0LCBTaG93
V2lkZUNTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLAotICAgICAgICAgICAgICAg
U3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoTlVMTCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
IiwgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoTCIiKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVR
KCJmb28iLCBTdHJpbmc6OlNob3dXaWRlQ1N0cmluZyhMImZvbyIpLmNfc3RyKCkpOwotfQotCi0j
IGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi1URVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYx
Nk51bGwpIHsKLSAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6QW5zaVRvVXRmMTYoTlVMTCkpOwot
ICBFWFBFQ1RfRVEoTlVMTCwgU3RyaW5nOjpVdGYxNlRvQW5zaShOVUxMKSk7Ci19Ci0KLVRFU1Qo
U3RyaW5nVGVzdCwgQW5zaUFuZFV0ZjE2Q29udmVydEJhc2ljKSB7Ci0gIGNvbnN0IGNoYXIqIGFu
c2kgPSBTdHJpbmc6OlV0ZjE2VG9BbnNpKEwic3RyIik7Ci0gIEVYUEVDVF9TVFJFUSgic3RyIiwg
YW5zaSk7Ci0gIGRlbGV0ZSBbXSBhbnNpOwotICBjb25zdCBXQ0hBUiogdXRmMTYgPSBTdHJpbmc6
OkFuc2lUb1V0ZjE2KCJzdHIiKTsKLSAgRVhQRUNUX0VRKDAsIHdjc25jbXAoTCJzdHIiLCB1dGYx
NiwgMykpOwotICBkZWxldGUgW10gdXRmMTY7Ci19Ci0KLVRFU1QoU3RyaW5nVGVzdCwgQW5zaUFu
ZFV0ZjE2Q29udmVydFBhdGhDaGFycykgewotICBjb25zdCBjaGFyKiBhbnNpID0gU3RyaW5nOjpV
dGYxNlRvQW5zaShMIi46XFwgXCIqPyIpOwotICBFWFBFQ1RfU1RSRVEoIi46XFwgXCIqPyIsIGFu
c2kpOwotICBkZWxldGUgW10gYW5zaTsKLSAgY29uc3QgV0NIQVIqIHV0ZjE2ID0gU3RyaW5nOjpB
bnNpVG9VdGYxNigiLjpcXCBcIio/Iik7Ci0gIEVYUEVDVF9FUSgwLCB3Y3NuY21wKEwiLjpcXCBc
Iio/IiwgdXRmMTYsIDMpKTsKLSAgZGVsZXRlIFtdIHV0ZjE2OwotfQotIyBlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLS8v
IFRlc3RzIFRlc3RQcm9wZXJ0eSBjb25zdHJ1Y3Rpb24uCi1URVNUKFRlc3RQcm9wZXJ0eVRlc3Qs
IFN0cmluZ1ZhbHVlKSB7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5IiwgIjEiKTsKLSAg
RVhQRUNUX1NUUkVRKCJrZXkiLCBwcm9wZXJ0eS5rZXkoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMSIs
IHByb3BlcnR5LnZhbHVlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UHJvcGVydHkgcmVwbGFjaW5n
IGEgdmFsdWUuCi1URVNUKFRlc3RQcm9wZXJ0eVRlc3QsIFJlcGxhY2VTdHJpbmdWYWx1ZSkgewot
ICBUZXN0UHJvcGVydHkgcHJvcGVydHkoImtleSIsICIxIik7Ci0gIEVYUEVDVF9TVFJFUSgiMSIs
IHByb3BlcnR5LnZhbHVlKCkpOwotICBwcm9wZXJ0eS5TZXRWYWx1ZSgiMiIpOwotICBFWFBFQ1Rf
U1RSRVEoIjIiLCBwcm9wZXJ0eS52YWx1ZSgpKTsKLX0KLQotLy8gQWRkRmF0YWxGYWlsdXJlKCkg
YW5kIEFkZE5vbmZhdGFsRmFpbHVyZSgpIG11c3QgYmUgc3RhbmQtYWxvbmUKLS8vIGZ1bmN0aW9u
cyAoaS5lLiB0aGVpciBkZWZpbml0aW9ucyBjYW5ub3QgYmUgaW5saW5lZCBhdCB0aGUgY2FsbAot
Ly8gc2l0ZXMpLCBvciBDKytCdWlsZGVyIHdvbid0IGNvbXBpbGUgdGhlIGNvZGUuCi1zdGF0aWMg
dm9pZCBBZGRGYXRhbEZhaWx1cmUoKSB7Ci0gIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4iOwotfQotCi1zdGF0aWMgdm9pZCBBZGROb25mYXRhbEZhaWx1cmUoKSB7Ci0gIEFERF9G
QUlMVVJFKCkgPDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLWNsYXNzIFNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJs
aWM6ICAvLyBNdXN0IGJlIHB1YmxpYyBhbmQgbm90IHByb3RlY3RlZCBkdWUgdG8gYSBidWcgaW4g
ZysrIDMuNC4yLgotICBlbnVtIEZhaWx1cmVNb2RlIHsKLSAgICBGQVRBTF9GQUlMVVJFLAotICAg
IE5PTkZBVEFMX0ZBSUxVUkUKLSAgfTsKLSAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZShGYWlsdXJl
TW9kZSBmYWlsdXJlKSB7Ci0gICAgaWYgKGZhaWx1cmUgPT0gRkFUQUxfRkFJTFVSRSkgewotICAg
ICAgQWRkRmF0YWxGYWlsdXJlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEFkZE5vbmZhdGFsRmFp
bHVyZSgpOwotICAgIH0KLSAgfQotfTsKLQotLy8gVGVzdHMgdGhhdCBTY29wZWRGYWtlVGVzdFBh
cnRSZXN1bHRSZXBvcnRlciBpbnRlcmNlcHRzIHRlc3QKLS8vIGZhaWx1cmVzLgotVEVTVF9GKFNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCwgSW50ZXJjZXB0c1Rlc3RGYWlsdXJl
cykgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHsKLSAgICBTY29wZWRGYWtl
VGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigKLSAgICAgICAgU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9PTkxZX0NVUlJFTlRfVEhSRUFELAotICAgICAg
ICAmcmVzdWx0cyk7Ci0gICAgQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRG
YWlsdXJlKEZBVEFMX0ZBSUxVUkUpOwotICB9Ci0KLSAgRVhQRUNUX0VRKDIsIHJlc3VsdHMuc2l6
ZSgpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5ub25mYXRh
bGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgx
KS5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQotVEVTVF9GKFNjb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyVGVzdCwgRGVwcmVjYXRlZENvbnN0cnVjdG9yKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0
QXJyYXkgcmVzdWx0czsKLSAgewotICAgIC8vIFRlc3RzLCB0aGF0IHRoZSBkZXByZWNhdGVkIGNv
bnN0cnVjdG9yIHN0aWxsIHdvcmtzLgotICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9y
dGVyIHJlcG9ydGVyKCZyZXN1bHRzKTsKLSAgICBBZGRGYWlsdXJlKE5PTkZBVEFMX0ZBSUxVUkUp
OwotICB9Ci0gIEVYUEVDVF9FUSgxLCByZXN1bHRzLnNpemUoKSk7Ci19Ci0KLSNpZiBHVEVTVF9J
U19USFJFQURTQUZFCi0KLWNsYXNzIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyV2l0
aFRocmVhZHNUZXN0Ci0gIDogcHVibGljIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVy
VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBzdGF0aWMgdm9pZCBBZGRGYWlsdXJlSW5PdGhlclRocmVh
ZChGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0gICAgVGhyZWFkV2l0aFBhcmFtPEZhaWx1cmVNb2Rl
PiB0aHJlYWQoJkFkZEZhaWx1cmUsIGZhaWx1cmUsIE5VTEwpOwotICAgIHRocmVhZC5Kb2luKCk7
Ci0gIH0KLX07Ci0KLVRFU1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcldpdGhU
aHJlYWRzVGVzdCwKLSAgICAgICBJbnRlcmNlcHRzVGVzdEZhaWx1cmVzSW5BbGxUaHJlYWRzKSB7
Ci0gIFRlc3RQYXJ0UmVzdWx0QXJyYXkgcmVzdWx0czsKLSAgewotICAgIFNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9ydGVyKAotICAgICAgICBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCAmcmVzdWx0cyk7Ci0gICAgQWRk
RmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUp
OwotICAgIEFkZEZhaWx1cmVJbk90aGVyVGhyZWFkKE5PTkZBVEFMX0ZBSUxVUkUpOwotICAgIEFk
ZEZhaWx1cmVJbk90aGVyVGhyZWFkKEZBVEFMX0ZBSUxVUkUpOwotICB9Ci0KLSAgRVhQRUNUX0VR
KDQsIHJlc3VsdHMuc2l6ZSgpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRUZXN0UGFydFJl
c3VsdCgwKS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0cy5HZXRU
ZXN0UGFydFJlc3VsdCgxKS5mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocmVzdWx0
cy5HZXRUZXN0UGFydFJlc3VsdCgyKS5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQRUNUX1RS
VUUocmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgzKS5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQot
I2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCi0KLS8vIFRlc3RzIEVYUEVDVF9GQVRBTF9G
QUlMVVJFeyxPTl9BTExfVEhSRUFEU30uICBNYWtlcyBzdXJlIHRoYXQgdGhleQotLy8gd29yayBl
dmVuIGlmIHRoZSBmYWlsdXJlIGlzIGdlbmVyYXRlZCBpbiBhIGNhbGxlZCBmdW5jdGlvbiByYXRo
ZXIgdGhhbgotLy8gdGhlIGN1cnJlbnQgY29udGV4dC4KLQotdHlwZWRlZiBTY29wZWRGYWtlVGVz
dFBhcnRSZXN1bHRSZXBvcnRlclRlc3QgRXhwZWN0RmF0YWxGYWlsdXJlVGVzdDsKLQotVEVTVF9G
KEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhbGl1cmUpIHsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJlKCksICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJl
LiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLVRFU1RfRihFeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFkZEZhdGFsRmFpbHVyZSgpLCA6OnN0cmluZygiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4i
KSk7Ci19Ci0jZW5kaWYKLQotVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNT
dGRTdHJpbmdPYmplY3QpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmF0YWxGYWlsdXJl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIikpOwotfQotCi1URVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hl
c0ZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewotICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBi
ZWxvdyB0byB2ZXJpZnkgdGhhdCB0aGUgbWFjcm8gY2F0Y2hlcyBmYXRhbAotICAvLyBmYWlsdXJl
cyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09O
X0FMTF9USFJFQURTKEFkZEZhdGFsRmFpbHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotI2lmZGVmIF9f
Qk9STEFORENfXwotLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRy
dWUiCi0jIHByYWdtYSBvcHRpb24gcHVzaCAtdy1jY2MKLSNlbmRpZgotCi0vLyBUZXN0cyB0aGF0
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkgY2FuIGJlIHVzZWQgaW4gYSBub24tdm9pZAotLy8gZnVu
Y3Rpb24gZXZlbiB3aGVuIHRoZSBzdGF0ZW1lbnQgaW4gaXQgY29udGFpbnMgQVNTRVJUXyouCi0K
LWludCBOb25Wb2lkRnVuY3Rpb24oKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9U
UlVFKGZhbHNlKSwgIiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhG
QUlMKCksICIiKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBDYW5CZVVzZWRJbk5vblZvaWRGdW5jdGlvbikgewotICBOb25Wb2lkRnVuY3Rpb24oKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQsIC4uLikg
ZG9lc24ndCBhYm9ydCB0aGUKLS8vIGN1cnJlbnQgZnVuY3Rpb24gZXZlbiB0aG91Z2ggJ3N0YXRl
bWVudCcgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZS4KLQotdm9pZCBEb2VzTm90QWJvcnRIZWxw
ZXIoYm9vbCogYWJvcnRlZCkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShm
YWxzZSksICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoRkFJTCgp
LCAiIik7Ci0KLSAgKmFib3J0ZWQgPSBmYWxzZTsKLX0KLQotI2lmZGVmIF9fQk9STEFORENfXwot
Ly8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2gi
IHN1cHByZXNzZWQgdGhlbS4KLSMgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotCi1URVNUX0Yo
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRG9lc05vdEFib3J0KSB7Ci0gIGJvb2wgYWJvcnRlZCA9
IHRydWU7Ci0gIERvZXNOb3RBYm9ydEhlbHBlcigmYWJvcnRlZCk7Ci0gIEVYUEVDVF9GQUxTRShh
Ym9ydGVkKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgRVhQRUNUX0ZBVEFMX0ZBSUxVUkV7LF9P
Tl9BTExfVEhSRUFEU30gYWNjZXB0cyBhCi0vLyBzdGF0ZW1lbnQgdGhhdCBjb250YWlucyBhIG1h
Y3JvIHdoaWNoIGV4cGFuZHMgdG8gY29kZSBjb250YWluaW5nIGFuCi0vLyB1bnByb3RlY3RlZCBj
b21tYS4KLQotc3RhdGljIGludCBnbG9iYWxfdmFyID0gMDsKLSNkZWZpbmUgR1RFU1RfVVNFX1VO
UFJPVEVDVEVEX0NPTU1BXyBnbG9iYWxfdmFyKyssIGdsb2JhbF92YXIrKwotCi1URVNUX0YoRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c01hY3JvVGhhdEV4cGFuZHNUb1VucHJvdGVjdGVk
Q29tbWEpIHsKLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIu
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBHVEVTVF9VU0VfVU5QUk9URUNURURfQ09N
TUFfOwotICAgIEFkZEZhdGFsRmFpbHVyZSgpOwotICB9LCAiIik7Ci0jZW5kaWYKLQotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyh7Ci0gICAgR1RFU1RfVVNFX1VOUFJPVEVD
VEVEX0NPTU1BXzsKLSAgICBBZGRGYXRhbEZhaWx1cmUoKTsKLSAgfSwgIiIpOwotfQotCi0vLyBU
ZXN0cyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRXssT05fQUxMX1RIUkVBRFN9LgotCi10eXBlZGVm
IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdCBFeHBlY3ROb25mYXRhbEZhaWx1
cmVUZXN0OwotCi1URVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZh
dGFsRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1
cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWls
dXJlLiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLVRFU1RfRihFeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RyaW5nT2JqZWN0KSB7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OnN0cmluZygiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOwotfQotI2VuZGlm
Ci0KLVRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2Jq
ZWN0KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZS4iKSk7Ci19Ci0KLVRFU1RfRihFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBD
YXRjaGVzTm9uZmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIFdlIGhhdmUgYW5vdGhl
ciB0ZXN0IGJlbG93IHRvIHZlcmlmeSB0aGF0IHRoZSBtYWNybyBjYXRjaGVzCi0gIC8vIG5vbi1m
YXRhbCBmYWlsdXJlcyBnZW5lcmF0ZWQgb24gYW5vdGhlciB0aHJlYWQuCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZE5vbmZhdGFsRmFpbHVyZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
eyxfT05fQUxMX1RIUkVBRFN9IGFjY2VwdHMgYQotLy8gc3RhdGVtZW50IHRoYXQgY29udGFpbnMg
YSBtYWNybyB3aGljaCBleHBhbmRzIHRvIGNvZGUgY29udGFpbmluZyBhbgotLy8gdW5wcm90ZWN0
ZWQgY29tbWEuCi1URVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c01hY3Jv
VGhhdEV4cGFuZHNUb1VucHJvdGVjdGVkQ29tbWEpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoewotICAgIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV87Ci0gICAgQWRkTm9uZmF0YWxG
YWlsdXJlKCk7Ci0gIH0sICIiKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExf
VEhSRUFEUyh7Ci0gICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXzsKLSAgICBBZGROb25m
YXRhbEZhaWx1cmUoKTsKLSAgfSwgIiIpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQot
Ci10eXBlZGVmIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyV2l0aFRocmVhZHNUZXN0
Ci0gICAgRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdDsKLQotVEVTVF9GKEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykgewotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYWlsdXJlSW5PdGhlclRocmVh
ZChGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0
aFRocmVhZHNUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoCi0gICAgICBBZGRGYWlsdXJlSW5P
dGhlclRocmVhZChOT05GQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LiIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gVGVzdHMgdGhl
IFRlc3RQcm9wZXJ0eSBjbGFzcy4KLQotVEVTVChUZXN0UHJvcGVydHlUZXN0LCBDb25zdHJ1Y3Rv
cldvcmtzKSB7Ci0gIGNvbnN0IFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5IiwgInZhbHVlIik7
Ci0gIEVYUEVDVF9TVFJFUSgia2V5IiwgcHJvcGVydHkua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEo
InZhbHVlIiwgcHJvcGVydHkudmFsdWUoKSk7Ci19Ci0KLVRFU1QoVGVzdFByb3BlcnR5VGVzdCwg
U2V0VmFsdWUpIHsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJrZXkiLCAidmFsdWVfMSIpOwot
ICBFWFBFQ1RfU1RSRVEoImtleSIsIHByb3BlcnR5LmtleSgpKTsKLSAgcHJvcGVydHkuU2V0VmFs
dWUoInZhbHVlXzIiKTsKLSAgRVhQRUNUX1NUUkVRKCJrZXkiLCBwcm9wZXJ0eS5rZXkoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgidmFsdWVfMiIsIHByb3BlcnR5LnZhbHVlKCkpOwotfQotCi0vLyBUZXN0
cyB0aGUgVGVzdFJlc3VsdCBjbGFzcwotCi0vLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5n
IFRlc3RSZXN1bHQuCi1jbGFzcyBUZXN0UmVzdWx0VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90
ZWN0ZWQ6Ci0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+IFRQUlZlY3RvcjsK
LQotICAvLyBXZSBtYWtlIHVzZSBvZiAyIFRlc3RQYXJ0UmVzdWx0IG9iamVjdHMsCi0gIFRlc3RQ
YXJ0UmVzdWx0ICogcHIxLCAqIHByMjsKLQotICAvLyAuLi4gYW5kIDMgVGVzdFJlc3VsdCBvYmpl
Y3RzLgotICBUZXN0UmVzdWx0ICogcjAsICogcjEsICogcjI7Ci0KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIC8vIHByMSBpcyBmb3Igc3VjY2Vzcy4KLSAgICBwcjEgPSBuZXcgVGVzdFBh
cnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZm9vL2Jhci5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VjY2VzcyEiKTsKLQotICAgIC8vIHByMiBp
cyBmb3IgZmF0YWwgZmFpbHVyZS4KLSAgICBwcjIgPSBuZXcgVGVzdFBhcnRSZXN1bHQoVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
b28vYmFyLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsICAvLyBUaGlzIGxp
bmUgbnVtYmVyIG1lYW5zICJ1bmtub3duIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RmFpbHVyZSEiKTsKLQotICAgIC8vIENyZWF0ZXMgdGhlIFRlc3RSZXN1bHQgb2JqZWN0cy4KLSAg
ICByMCA9IG5ldyBUZXN0UmVzdWx0KCk7Ci0gICAgcjEgPSBuZXcgVGVzdFJlc3VsdCgpOwotICAg
IHIyID0gbmV3IFRlc3RSZXN1bHQoKTsKLQotICAgIC8vIEluIG9yZGVyIHRvIHRlc3QgVGVzdFJl
c3VsdCwgd2UgbmVlZCB0byBtb2RpZnkgaXRzIGludGVybmFsCi0gICAgLy8gc3RhdGUsIGluIHBh
cnRpY3VsYXIgdGhlIFRlc3RQYXJ0UmVzdWx0IHZlY3RvciBpdCBob2xkcy4KLSAgICAvLyB0ZXN0
X3BhcnRfcmVzdWx0cygpIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgdG8gdGhpcyB2ZWN0b3Iu
Ci0gICAgLy8gV2UgY2FzdCBpdCB0byBhIG5vbi1jb25zdCBvYmplY3Qgcy50LiBpdCBjYW4gYmUg
bW9kaWZpZWQgKHllcywKLSAgICAvLyB0aGlzIGlzIGEgaGFjaykuCi0gICAgVFBSVmVjdG9yKiBy
ZXN1bHRzMSA9IGNvbnN0X2Nhc3Q8VFBSVmVjdG9yKj4oCi0gICAgICAgICZUZXN0UmVzdWx0QWNj
ZXNzb3I6OnRlc3RfcGFydF9yZXN1bHRzKCpyMSkpOwotICAgIFRQUlZlY3RvciogcmVzdWx0czIg
PSBjb25zdF9jYXN0PFRQUlZlY3Rvcio+KAotICAgICAgICAmVGVzdFJlc3VsdEFjY2Vzc29yOjp0
ZXN0X3BhcnRfcmVzdWx0cygqcjIpKTsKLQotICAgIC8vIHIwIGlzIGFuIGVtcHR5IFRlc3RSZXN1
bHQuCi0KLSAgICAvLyByMSBjb250YWlucyBhIHNpbmdsZSBTVUNDRVNTIFRlc3RQYXJ0UmVzdWx0
LgotICAgIHJlc3VsdHMxLT5wdXNoX2JhY2soKnByMSk7Ci0KLSAgICAvLyByMiBjb250YWlucyBh
IFNVQ0NFU1MsIGFuZCBhIEZBSUxVUkUuCi0gICAgcmVzdWx0czItPnB1c2hfYmFjaygqcHIxKTsK
LSAgICByZXN1bHRzMi0+cHVzaF9iYWNrKCpwcjIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgewotICAgIGRlbGV0ZSBwcjE7Ci0gICAgZGVsZXRlIHByMjsKLQotICAgIGRlbGV0
ZSByMDsKLSAgICBkZWxldGUgcjE7Ci0gICAgZGVsZXRlIHIyOwotICB9Ci0KLSAgLy8gSGVscGVy
IHRoYXQgY29tcGFyZXMgdHdvIHR3byBUZXN0UGFydFJlc3VsdHMuCi0gIHN0YXRpYyB2b2lkIENv
bXBhcmVUZXN0UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgZXhwZWN0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgYWN0
dWFsKSB7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLnR5cGUoKSwgYWN0dWFsLnR5cGUoKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLmZpbGVfbmFtZSgpLCBhY3R1YWwuZmlsZV9uYW1lKCkp
OwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5saW5lX251bWJlcigpLCBhY3R1YWwubGluZV9udW1i
ZXIoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLnN1bW1hcnkoKSwgYWN0dWFsLnN1bW1h
cnkoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLm1lc3NhZ2UoKSwgYWN0dWFsLm1lc3Nh
Z2UoKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLnBhc3NlZCgpLCBhY3R1YWwucGFzc2VkKCkp
OwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5mYWlsZWQoKSwgYWN0dWFsLmZhaWxlZCgpKTsKLSAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWQubm9uZmF0YWxseV9mYWlsZWQoKSwgYWN0dWFsLm5vbmZhdGFs
bHlfZmFpbGVkKCkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5mYXRhbGx5X2ZhaWxlZCgpLCBh
Y3R1YWwuZmF0YWxseV9mYWlsZWQoKSk7Ci0gIH0KLX07Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQ6
OnRvdGFsX3BhcnRfY291bnQoKS4KLVRFU1RfRihUZXN0UmVzdWx0VGVzdCwgdG90YWxfcGFydF9j
b3VudCkgewotICBBU1NFUlRfRVEoMCwgcjAtPnRvdGFsX3BhcnRfY291bnQoKSk7Ci0gIEFTU0VS
VF9FUSgxLCByMS0+dG90YWxfcGFydF9jb3VudCgpKTsKLSAgQVNTRVJUX0VRKDIsIHIyLT50b3Rh
bF9wYXJ0X2NvdW50KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UmVzdWx0OjpQYXNzZWQoKS4KLVRF
U1RfRihUZXN0UmVzdWx0VGVzdCwgUGFzc2VkKSB7Ci0gIEFTU0VSVF9UUlVFKHIwLT5QYXNzZWQo
KSk7Ci0gIEFTU0VSVF9UUlVFKHIxLT5QYXNzZWQoKSk7Ci0gIEFTU0VSVF9GQUxTRShyMi0+UGFz
c2VkKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UmVzdWx0OjpGYWlsZWQoKS4KLVRFU1RfRihUZXN0
UmVzdWx0VGVzdCwgRmFpbGVkKSB7Ci0gIEFTU0VSVF9GQUxTRShyMC0+RmFpbGVkKCkpOwotICBB
U1NFUlRfRkFMU0UocjEtPkZhaWxlZCgpKTsKLSAgQVNTRVJUX1RSVUUocjItPkZhaWxlZCgpKTsK
LX0KLQotLy8gVGVzdHMgVGVzdFJlc3VsdDo6R2V0VGVzdFBhcnRSZXN1bHQoKS4KLQotdHlwZWRl
ZiBUZXN0UmVzdWx0VGVzdCBUZXN0UmVzdWx0RGVhdGhUZXN0OwotCi1URVNUX0YoVGVzdFJlc3Vs
dERlYXRoVGVzdCwgR2V0VGVzdFBhcnRSZXN1bHQpIHsKLSAgQ29tcGFyZVRlc3RQYXJ0UmVzdWx0
KCpwcjEsIHIyLT5HZXRUZXN0UGFydFJlc3VsdCgwKSk7Ci0gIENvbXBhcmVUZXN0UGFydFJlc3Vs
dCgqcHIyLCByMi0+R2V0VGVzdFBhcnRSZXN1bHQoMSkpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQ
UE9SVEVEKHIyLT5HZXRUZXN0UGFydFJlc3VsdCgyKSwgIiIpOwotICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHIyLT5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKLX0KLQotLy8gVGVzdHMg
VGVzdFJlc3VsdCBoYXMgbm8gcHJvcGVydGllcyB3aGVuIG5vbmUgYXJlIGFkZGVkLgotVEVTVChU
ZXN0UmVzdWx0UHJvcGVydHlUZXN0LCBOb1Byb3BlcnRpZXNGb3VuZFdoZW5Ob25lQXJlQWRkZWQp
IHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgQVNTRVJUX0VRKDAsIHRlc3RfcmVzdWx0
LnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQgaGFzIHRo
ZSBleHBlY3RlZCBwcm9wZXJ0eSB3aGVuIGFkZGVkLgotVEVTVChUZXN0UmVzdWx0UHJvcGVydHlU
ZXN0LCBPbmVQcm9wZXJ0eUZvdW5kV2hlbkFkZGVkKSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9yZXN1
bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eSgia2V5XzEiLCAiMSIpOwotICBUZXN0UmVzdWx0
QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVy
dHkpOwotICBBU1NFUlRfRVEoMSwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsK
LSAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHkgPSB0ZXN0X3Jlc3VsdC5HZXRU
ZXN0UHJvcGVydHkoMCk7Ci0gIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHku
a2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjEiLCBhY3R1YWxfcHJvcGVydHkudmFsdWUoKSk7Ci19
Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQgaGFzIG11bHRpcGxlIHByb3BlcnRpZXMgd2hlbiBhZGRl
ZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTXVsdGlwbGVQcm9wZXJ0aWVzRm91bmRX
aGVuQWRkZWQpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgVGVzdFByb3BlcnR5IHBy
b3BlcnR5XzEoImtleV8xIiwgIjEiKTsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzIoImtleV8y
IiwgIjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7Ci0gIEFTU0VS
VF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwotICBjb25zdCBUZXN0
UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5
KDApOwotICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5XzEua2V5KCkpOwot
ICBFWFBFQ1RfU1RSRVEoIjEiLCBhY3R1YWxfcHJvcGVydHlfMS52YWx1ZSgpKTsKLQotICBjb25z
dCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1bHQuR2V0VGVzdFBy
b3BlcnR5KDEpOwotICBFWFBFQ1RfU1RSRVEoImtleV8yIiwgYWN0dWFsX3Byb3BlcnR5XzIua2V5
KCkpOwotICBFWFBFQ1RfU1RSRVEoIjIiLCBhY3R1YWxfcHJvcGVydHlfMi52YWx1ZSgpKTsKLX0K
LQotLy8gVGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVydHkoKSBvdmVycmlkZXMgdmFsdWVz
IGZvciBkdXBsaWNhdGUga2V5cy4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT3ZlcnJp
ZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewotICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0Owot
ICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMV8xKCJrZXlfMSIsICIxIik7Ci0gIFRlc3RQcm9wZXJ0
eSBwcm9wZXJ0eV8yXzEoImtleV8yIiwgIjIiKTsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzFf
Migia2V5XzEiLCAiMTIiKTsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzJfMigia2V5XzIiLCAi
MjIiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQs
ICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMSk7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6UmVjb3Jk
UHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8yXzEpOwotICBUZXN0
UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwg
cHJvcGVydHlfMV8yKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzJfMik7Ci0KLSAgQVNTRVJUX0VRKDIsIHRl
c3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0gIGNvbnN0IFRlc3RQcm9wZXJ0eSYg
YWN0dWFsX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMCk7Ci0gIEVY
UEVDVF9TVFJFUSgia2V5XzEiLCBhY3R1YWxfcHJvcGVydHlfMS5rZXkoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgiMTIiLCBhY3R1YWxfcHJvcGVydHlfMS52YWx1ZSgpKTsKLQotICBjb25zdCBUZXN0UHJv
cGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDEp
OwotICBFWFBFQ1RfU1RSRVEoImtleV8yIiwgYWN0dWFsX3Byb3BlcnR5XzIua2V5KCkpOwotICBF
WFBFQ1RfU1RSRVEoIjIyIiwgYWN0dWFsX3Byb3BlcnR5XzIudmFsdWUoKSk7Ci19Ci0KLS8vIFRl
c3RzIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eSgpLgotVEVTVChUZXN0UmVzdWx0UHJvcGVy
dHlUZXN0LCBHZXRUZXN0UHJvcGVydHkpIHsKLSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAg
VGVzdFByb3BlcnR5IHByb3BlcnR5XzEoImtleV8xIiwgIjEiKTsKLSAgVGVzdFByb3BlcnR5IHBy
b3BlcnR5XzIoImtleV8yIiwgIjIiKTsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzMoImtleV8z
IiwgIjMiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1
bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzEpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29y
ZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMik7Ci0gIFRlc3RS
ZXN1bHRBY2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBw
cm9wZXJ0eV8zKTsKLQotICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJvcGVydHlfMSA9
IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKLSAgY29uc3QgVGVzdFByb3BlcnR5JiBm
ZXRjaGVkX3Byb3BlcnR5XzIgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHkoMSk7Ci0gIGNv
bnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8zID0gdGVzdF9yZXN1bHQuR2V0VGVz
dFByb3BlcnR5KDIpOwotCi0gIEVYUEVDVF9TVFJFUSgia2V5XzEiLCBmZXRjaGVkX3Byb3BlcnR5
XzEua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjEiLCBmZXRjaGVkX3Byb3BlcnR5XzEudmFsdWUo
KSk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJrZXlfMiIsIGZldGNoZWRfcHJvcGVydHlfMi5rZXkoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiMiIsIGZldGNoZWRfcHJvcGVydHlfMi52YWx1ZSgpKTsKLQotICBF
WFBFQ1RfU1RSRVEoImtleV8zIiwgZmV0Y2hlZF9wcm9wZXJ0eV8zLmtleSgpKTsKLSAgRVhQRUNU
X1NUUkVRKCIzIiwgZmV0Y2hlZF9wcm9wZXJ0eV8zLnZhbHVlKCkpOwotCi0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDMpLCAiIik7Ci0gIEVY
UEVDVF9ERUFUSF9JRl9TVVBQT1JURUQodGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KC0xKSwg
IiIpOwotfQotCi0vLyBUZXN0cyB0aGUgVGVzdCBjbGFzcy4KLS8vCi0vLyBJdCdzIGRpZmZpY3Vs
dCB0byB0ZXN0IGV2ZXJ5IHB1YmxpYyBtZXRob2Qgb2YgdGhpcyBjbGFzcyAod2UgYXJlCi0vLyBh
bHJlYWR5IHN0cmV0Y2hpbmcgdGhlIGxpbWl0IG9mIEdvb2dsZSBUZXN0IGJ5IHVzaW5nIGl0IHRv
IHRlc3QgaXRzZWxmISkuCi0vLyBGb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyB0aGF0
LCBhcyB3ZSBhcmUgYWxyZWFkeSB0ZXN0aW5nCi0vLyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRo
ZSBUZXN0IGNsYXNzIGV4dGVuc2l2ZWx5IGJ5IHVzaW5nIEdvb2dsZSBUZXN0Ci0vLyBhbG9uZS4K
LS8vCi0vLyBUaGVyZWZvcmUsIHRoaXMgc2VjdGlvbiBvbmx5IGNvbnRhaW5zIG9uZSB0ZXN0Lgot
Ci0vLyBUZXN0cyB0aGF0IEdUZXN0RmxhZ1NhdmVyIHdvcmtzIG9uIFdpbmRvd3MgYW5kIE1hYy4K
LQotY2xhc3MgR1Rlc3RGbGFnU2F2ZXJUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoK
LSAgLy8gU2F2ZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIHN1Y2ggdGhhdCB3ZSBjYW4gcmVzdG9y
ZSB0aGVtIGxhdGVyLCBhbmQKLSAgLy8gdGhlbiBzZXRzIHRoZW0gdG8gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMuICBUaGlzIHdpbGwgYmUgY2FsbGVkCi0gIC8vIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBp
biB0aGlzIHRlc3QgY2FzZSBpcyBydW4uCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
Ci0gICAgc2F2ZXJfID0gbmV3IEdUZXN0RmxhZ1NhdmVyOwotCi0gICAgR1RFU1RfRkxBRyhhbHNv
X3J1bl9kaXNhYmxlZF90ZXN0cykgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKGJyZWFrX29uX2Zh
aWx1cmUpID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IGZhbHNl
OwotICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykgPSBmYWxzZTsKLSAgICBHVEVT
VF9GTEFHKGNvbG9yKSA9ICJhdXRvIjsKLSAgICBHVEVTVF9GTEFHKGZpbHRlcikgPSAiIjsKLSAg
ICBHVEVTVF9GTEFHKGxpc3RfdGVzdHMpID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhvdXRwdXQp
ID0gIiI7Ci0gICAgR1RFU1RfRkxBRyhwcmludF90aW1lKSA9IHRydWU7Ci0gICAgR1RFU1RfRkxB
RyhyYW5kb21fc2VlZCkgPSAwOwotICAgIEdURVNUX0ZMQUcocmVwZWF0KSA9IDE7Ci0gICAgR1RF
U1RfRkxBRyhzaHVmZmxlKSA9IGZhbHNlOwotICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVw
dGgpID0ga01heFN0YWNrVHJhY2VEZXB0aDsKLSAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRf
dG8pID0gIiI7Ci0gICAgR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IGZhbHNlOwotICB9
Ci0KLSAgLy8gUmVzdG9yZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIHRoYXQgdGhlIHRlc3RzIGhh
dmUgbW9kaWZpZWQuICBUaGlzIHdpbGwKLSAgLy8gYmUgY2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRl
c3QgaW4gdGhpcyB0ZXN0IGNhc2UgaXMgcnVuLgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RD
YXNlKCkgewotICAgIGRlbGV0ZSBzYXZlcl87Ci0gICAgc2F2ZXJfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIGhhdmUgdGhlaXIgZGVmYXVs
dCB2YWx1ZXMsIGFuZCB0aGVuCi0gIC8vIG1vZGlmaWVzIGVhY2ggb2YgdGhlbS4KLSAgdm9pZCBW
ZXJpZnlBbmRNb2RpZnlGbGFncygpIHsKLSAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhhbHNv
X3J1bl9kaXNhYmxlZF90ZXN0cykpOwotICAgIEVYUEVDVF9GQUxTRShHVEVTVF9GTEFHKGJyZWFr
X29uX2ZhaWx1cmUpKTsKLSAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJhdXRvIiwgR1RFU1RfRkxBRyhjb2xvcikuY19zdHIo
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpOwot
ICAgIEVYUEVDVF9TVFJFUSgiIiwgR1RFU1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCkpOwotICAgIEVY
UEVDVF9GQUxTRShHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIs
IEdURVNUX0ZMQUcob3V0cHV0KS5jX3N0cigpKTsKLSAgICBFWFBFQ1RfVFJVRShHVEVTVF9GTEFH
KHByaW50X3RpbWUpKTsKLSAgICBFWFBFQ1RfRVEoMCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkp
OwotICAgIEVYUEVDVF9FUSgxLCBHVEVTVF9GTEFHKHJlcGVhdCkpOwotICAgIEVYUEVDVF9GQUxT
RShHVEVTVF9GTEFHKHNodWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoa01heFN0YWNrVHJhY2VEZXB0
aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOwotICAgIEVYUEVDVF9TVFJFUSgiIiwg
R1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKS5jX3N0cigpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Ci0KLSAgICBHVEVTVF9GTEFHKGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzKSA9IHRydWU7Ci0gICAgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJl
KSA9IHRydWU7Ci0gICAgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IHRydWU7Ci0gICAg
R1RFU1RfRkxBRyhjb2xvcikgPSAibm8iOwotICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2Vf
Zm9yaykgPSB0cnVlOwotICAgIEdURVNUX0ZMQUcoZmlsdGVyKSA9ICJhYmMiOwotICAgIEdURVNU
X0ZMQUcobGlzdF90ZXN0cykgPSB0cnVlOwotICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6
Zm9vLnhtbCI7Ci0gICAgR1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOwotICAgIEdURVNU
X0ZMQUcocmFuZG9tX3NlZWQpID0gMTsKLSAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAxMDA7Ci0g
ICAgR1RFU1RfRkxBRyhzaHVmZmxlKSA9IHRydWU7Ci0gICAgR1RFU1RfRkxBRyhzdGFja190cmFj
ZV9kZXB0aCkgPSAxOwotICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAibG9jYWxo
b3N0OjEyMzQiOwotICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwotICB9
Ci0KLSBwcml2YXRlOgotICAvLyBGb3Igc2F2aW5nIEdvb2dsZSBUZXN0IGZsYWdzIGR1cmluZyB0
aGlzIHRlc3QgY2FzZS4KLSAgc3RhdGljIEdUZXN0RmxhZ1NhdmVyKiBzYXZlcl87Ci19OwotCi1H
VGVzdEZsYWdTYXZlciogR1Rlc3RGbGFnU2F2ZXJUZXN0OjpzYXZlcl8gPSBOVUxMOwotCi0vLyBH
b29nbGUgVGVzdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGUgb3JkZXIgb2YgdGVzdHMuICBUaGUgZm9s
bG93aW5nIHR3bwotLy8gdGVzdHMgYXJlIGRlc2lnbmVkIHRvIHdvcmsgcmVnYXJkbGVzcyBvZiB0
aGVpciBvcmRlci4KLQotLy8gTW9kaWZpZXMgdGhlIEdvb2dsZSBUZXN0IGZsYWdzIGluIHRoZSB0
ZXN0IGJvZHkuCi1URVNUX0YoR1Rlc3RGbGFnU2F2ZXJUZXN0LCBNb2RpZnlHVGVzdEZsYWdzKSB7
Ci0gIFZlcmlmeUFuZE1vZGlmeUZsYWdzKCk7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgdGhlIEdv
b2dsZSBUZXN0IGZsYWdzIGluIHRoZSBib2R5IG9mIHRoZSBwcmV2aW91cyB0ZXN0IHdlcmUKLS8v
IHJlc3RvcmVkIHRvIHRoZWlyIG9yaWdpbmFsIHZhbHVlcy4KLVRFU1RfRihHVGVzdEZsYWdTYXZl
clRlc3QsIFZlcmlmeUdUZXN0RmxhZ3MpIHsKLSAgVmVyaWZ5QW5kTW9kaWZ5RmxhZ3MoKTsKLX0K
LQotLy8gU2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIHRv
IHRoZSBnaXZlbgotLy8gdmFsdWUuICBJZiB0aGUgdmFsdWUgYXJndW1lbnQgaXMgIiIsIHVuc2V0
cyB0aGUgZW52aXJvbm1lbnQKLS8vIHZhcmlhYmxlLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0
aGF0IGJvdGggYXJndW1lbnRzIGFyZSBub3QgTlVMTC4KLXN0YXRpYyB2b2lkIFNldEVudihjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSkgewotI2lmIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0gIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiBX
aW5kb3dzIENFLgotICByZXR1cm47Ci0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVm
aW5lZChfX1N1bk9TXzVfOCkgfHwgZGVmaW5lZChfX1N1bk9TXzVfOSkKLSAgLy8gQysrQnVpbGRl
cidzIHB1dGVudiBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gaXRzIHBhcmFtZXRlcjsgd2UgaGF2
ZSB0bwotICAvLyBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIHJlbWFpbnMgdmFsaWQgYXMgbG9uZyBh
cyBpdCBtaWdodCBiZSBuZWVkZWQuCi0gIC8vIFdlIHVzZSBhbiBzdGQ6Om1hcCB0byBkbyBzby4K
LSAgc3RhdGljIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZyo+IGFkZGVkX2VudjsK
LQotICAvLyBCZWNhdXNlIHB1dGVudiBzdG9yZXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgYnVm
ZmVyLCB3ZSBjYW4ndCBkZWxldGUgdGhlCi0gIC8vIHByZXZpb3VzIHN0cmluZyAoaWYgcHJlc2Vu
dCkgdW50aWwgYWZ0ZXIgaXQncyByZXBsYWNlZC4KLSAgc3RkOjpzdHJpbmcgKnByZXZfZW52ID0g
TlVMTDsKLSAgaWYgKGFkZGVkX2Vudi5maW5kKG5hbWUpICE9IGFkZGVkX2Vudi5lbmQoKSkgewot
ICAgIHByZXZfZW52ID0gYWRkZWRfZW52W25hbWVdOwotICB9Ci0gIGFkZGVkX2VudltuYW1lXSA9
IG5ldyBzdGQ6OnN0cmluZygKLSAgICAgIChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFs
dWUpLkdldFN0cmluZygpKTsKLQotICAvLyBUaGUgc3RhbmRhcmQgc2lnbmF0dXJlIG9mIHB1dGVu
diBhY2NlcHRzIGEgJ2NoYXIqJyBhcmd1bWVudC4gT3RoZXIKLSAgLy8gaW1wbGVtZW50YXRpb25z
LCBsaWtlIEMrK0J1aWxkZXIncywgYWNjZXB0IGEgJ2NvbnN0IGNoYXIqJy4KLSAgLy8gV2UgY2Fz
dCBhd2F5IHRoZSAnY29uc3QnIHNpbmNlIHRoYXQgd291bGQgd29yayBmb3IgYm90aCB2YXJpYW50
cy4KLSAgcHV0ZW52KGNvbnN0X2Nhc3Q8Y2hhcio+KGFkZGVkX2VudltuYW1lXS0+Y19zdHIoKSkp
OwotICBkZWxldGUgcHJldl9lbnY7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTICAvLyBJZiB3ZSBh
cmUgb24gV2luZG93cyBwcm9wZXIuCi0gIF9wdXRlbnYoKE1lc3NhZ2UoKSA8PCBuYW1lIDw8ICI9
IiA8PCB2YWx1ZSkuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0jZWxzZQotICBpZiAoKnZhbHVlID09
ICdcMCcpIHsKLSAgICB1bnNldGVudihuYW1lKTsKLSAgfSBlbHNlIHsKLSAgICBzZXRlbnYobmFt
ZSwgdmFsdWUsIDEpOwotICB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi19
Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIEVudmlyb25tZW50IHZhcmlhYmxl
cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIENFLgotCi11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6SW50MzJGcm9tR1Rlc3RFbnY7Ci0KLS8vIFRlc3RzIEludDMyRnJvbUdUZXN0RW52KCku
Ci0KLS8vIFRlc3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSByZXR1cm5zIHRoZSBkZWZhdWx0
IHZhbHVlIHdoZW4gdGhlCi0vLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgotVEVT
VChJbnQzMkZyb21HVGVzdEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhcmlhYmxlSXNOb3RT
ZXQpIHsKLSAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVEVNUCIsICIiKTsKLSAg
RVhQRUNUX0VRKDEwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDEwKSk7Ci19Ci0KLSMgaWYg
IWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykKLQotLy8gVGVzdHMgdGhhdCBJbnQz
MkZyb21HVGVzdEVudigpIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgd2hlbiB0aGUKLS8vIGVu
dmlyb25tZW50IHZhcmlhYmxlIG92ZXJmbG93cyBhcyBhbiBJbnQzMi4KLVRFU1QoSW50MzJGcm9t
R1Rlc3RFbnZUZXN0LCBSZXR1cm5zRGVmYXVsdFdoZW5WYWx1ZU92ZXJmbG93cykgewotICBwcmlu
dGYoIihleHBlY3RpbmcgMiB3YXJuaW5ncylcbiIpOwotCi0gIFNldEVudihHVEVTVF9GTEFHX1BS
RUZJWF9VUFBFUl8gIlRFTVAiLCAiMTIzNDU2Nzg5ODc2NTQzMjEiKTsKLSAgRVhQRUNUX0VRKDIw
LCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDIwKSk7Ci0KLSAgU2V0RW52KEdURVNUX0ZMQUdf
UFJFRklYX1VQUEVSXyAiVEVNUCIsICItMTIzNDU2Nzg5ODc2NTQzMjEiKTsKLSAgRVhQRUNUX0VR
KDMwLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDMwKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
SW50MzJGcm9tR1Rlc3RFbnYoKSByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gdGhlCi0v
LyBlbnZpcm9ubWVudCB2YXJpYWJsZSBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBkZWNpbWFs
IGludGVnZXIuCi1URVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVu
VmFsdWVJc0ludmFsaWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4iKTsK
LQotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1QIiwgIkExIik7Ci0gIEVY
UEVDVF9FUSg0MCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCA0MCkpOwotCi0gIFNldEVudihH
VEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlRFTVAiLCAiMTJYIik7Ci0gIEVYUEVDVF9FUSg1MCwg
SW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCA1MCkpOwotfQotCi0jIGVuZGlmICAvLyAhZGVmaW5l
ZChHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKQotCi0vLyBUZXN0cyB0aGF0IEludDMyRnJvbUdU
ZXN0RW52KCkgcGFyc2VzIGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKLS8vIGVudmlyb25t
ZW50IHZhcmlhYmxlIHdoZW4gaXQgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50ZWdlciBp
bgotLy8gdGhlIHJhbmdlIG9mIGFuIEludDMyLgotVEVTVChJbnQzMkZyb21HVGVzdEVudlRlc3Qs
IFBhcnNlc0FuZFJldHVybnNWYWxpZFZhbHVlKSB7Ci0gIFNldEVudihHVEVTVF9GTEFHX1BSRUZJ
WF9VUFBFUl8gIlRFTVAiLCAiMTIzIik7Ci0gIEVYUEVDVF9FUSgxMjMsIEludDMyRnJvbUdUZXN0
RW52KCJ0ZW1wIiwgMCkpOwotCi0gIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlRF
TVAiLCAiLTMyMSIpOwotICBFWFBFQ1RfRVEoLTMyMSwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAi
LCAwKSk7Ci19Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBUZXN0
cyBQYXJzZUludDMyRmxhZygpLgotCi0vLyBUZXN0cyB0aGF0IFBhcnNlSW50MzJGbGFnKCkgcmV0
dXJucyBmYWxzZSBhbmQgZG9lc24ndCBjaGFuZ2UgdGhlCi0vLyBvdXRwdXQgdmFsdWUgd2hlbiB0
aGUgZmxhZyBoYXMgd3JvbmcgZm9ybWF0Ci1URVNUKFBhcnNlSW50MzJGbGFnVGVzdCwgUmV0dXJu
c0ZhbHNlRm9ySW52YWxpZEZsYWcpIHsKLSAgSW50MzIgdmFsdWUgPSAxMjM7Ci0gIEVYUEVDVF9G
QUxTRShQYXJzZUludDMyRmxhZygiLS1hPTEwMCIsICJiIiwgJnZhbHVlKSk7Ci0gIEVYUEVDVF9F
USgxMjMsIHZhbHVlKTsKLQotICBFWFBFQ1RfRkFMU0UoUGFyc2VJbnQzMkZsYWcoImE9MTAwIiwg
ImEiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VRKDEyMywgdmFsdWUpOwotfQotCi0vLyBUZXN0cyB0
aGF0IFBhcnNlSW50MzJGbGFnKCkgcmV0dXJucyBmYWxzZSBhbmQgZG9lc24ndCBjaGFuZ2UgdGhl
Ci0vLyBvdXRwdXQgdmFsdWUgd2hlbiB0aGUgZmxhZyBvdmVyZmxvd3MgYXMgYW4gSW50MzIuCi1U
RVNUKFBhcnNlSW50MzJGbGFnVGVzdCwgUmV0dXJuc0RlZmF1bHRXaGVuVmFsdWVPdmVyZmxvd3Mp
IHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4iKTsKLQotICBJbnQzMiB2YWx1
ZSA9IDEyMzsKLSAgRVhQRUNUX0ZBTFNFKFBhcnNlSW50MzJGbGFnKCItLWFiYz0xMjM0NTY3ODk4
NzY1NDMyMSIsICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VRKDEyMywgdmFsdWUpOwotCi0g
IEVYUEVDVF9GQUxTRShQYXJzZUludDMyRmxhZygiLS1hYmM9LTEyMzQ1Njc4OTg3NjU0MzIxIiwg
ImFiYyIsICZ2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMTIzLCB2YWx1ZSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgUGFyc2VJbnQzMkZsYWcoKSByZXR1cm5zIGZhbHNlIGFuZCBkb2Vzbid0IGNoYW5nZSB0
aGUKLS8vIG91dHB1dCB2YWx1ZSB3aGVuIHRoZSBmbGFnIGRvZXMgbm90IHJlcHJlc2VudCBhIHZh
bGlkIGRlY2ltYWwKLS8vIGludGVnZXIuCi1URVNUKFBhcnNlSW50MzJGbGFnVGVzdCwgUmV0dXJu
c0RlZmF1bHRXaGVuVmFsdWVJc0ludmFsaWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2Fy
bmluZ3MpXG4iKTsKLQotICBJbnQzMiB2YWx1ZSA9IDEyMzsKLSAgRVhQRUNUX0ZBTFNFKFBhcnNl
SW50MzJGbGFnKCItLWFiYz1BMSIsICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VRKDEyMywg
dmFsdWUpOwotCi0gIEVYUEVDVF9GQUxTRShQYXJzZUludDMyRmxhZygiLS1hYmM9MTJYIiwgImFi
YyIsICZ2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMTIzLCB2YWx1ZSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgUGFyc2VJbnQzMkZsYWcoKSBwYXJzZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFuZAotLy8g
cmV0dXJucyB0cnVlIHdoZW4gdGhlIGZsYWcgcmVwcmVzZW50cyBhIHZhbGlkIGRlY2ltYWwgaW50
ZWdlciBpbgotLy8gdGhlIHJhbmdlIG9mIGFuIEludDMyLgotVEVTVChQYXJzZUludDMyRmxhZ1Rl
c3QsIFBhcnNlc0FuZFJldHVybnNWYWxpZFZhbHVlKSB7Ci0gIEludDMyIHZhbHVlID0gMTIzOwot
ICBFWFBFQ1RfVFJVRShQYXJzZUludDMyRmxhZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiYWJj
PTQ1NiIsICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VRKDQ1NiwgdmFsdWUpOwotCi0gIEVY
UEVDVF9UUlVFKFBhcnNlSW50MzJGbGFnKCItLSIgR1RFU1RfRkxBR19QUkVGSVhfICJhYmM9LTc4
OSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQ
RUNUX0VRKC03ODksIHZhbHVlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRp
ZSgpIHBhcnNlcyB0aGUgdmFsdWUgb2YgdGhlIHZhciBvcgotLy8gcmV0dXJucyB0aGUgY29ycmVj
dCBkZWZhdWx0LgotLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc3VwcG9ydGVkIG9u
IFdpbmRvd3MgQ0UuCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi1URVNUKEludDMyRnJv
bUVudk9yRGllVGVzdCwgUGFyc2VzQW5kUmV0dXJuc1ZhbGlkVmFsdWUpIHsKLSAgRVhQRUNUX0VR
KDMzMywgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJVbnNldFZh
ciIsIDMzMykpOwotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJVbnNldFZhciIs
ICIxMjMiKTsKLSAgRVhQRUNUX0VRKDEyMywgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19Q
UkVGSVhfVVBQRVJfICJVbnNldFZhciIsIDMzMykpOwotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJVbnNldFZhciIsICItMTIzIik7Ci0gIEVYUEVDVF9FUSgtMTIzLCBJbnQzMkZy
b21FbnZPckRpZShHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlVuc2V0VmFyIiwgMzMzKSk7Ci19
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBUZXN0cyB0aGF0IElu
dDMyRnJvbUVudk9yRGllKCkgYWJvcnRzIHdpdGggYW4gZXJyb3IgbWVzc2FnZQotLy8gaWYgdGhl
IHZhcmlhYmxlIGlzIG5vdCBhbiBJbnQzMi4KLVRFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRl
c3QsIEFib3J0c09uRmFpbHVyZSkgewotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJf
ICJWQVIiLCAieHh4Iik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCi0gICAgICBJbnQz
MkZyb21FbnZPckRpZShHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlZBUiIsIDEyMyksCi0gICAg
ICAiLioiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIGFib3J0cyB3
aXRoIGFuIGVycm9yIG1lc3NhZ2UKLS8vIGlmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgcmVwcmVz
bnRlZCBieSBhbiBJbnQzMi4KLVRFU1QoSW50MzJGcm9tRW52T3JEaWVEZWF0aFRlc3QsIEFib3J0
c09uSW50MzJPdmVyZmxvdykgewotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJW
QVIiLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNCIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9S
VEVEKAotICAgICAgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJW
QVIiLCAxMjMpLAotICAgICAgIi4qIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU2hvdWxkUnVuVGVz
dE9uU2hhcmQoKSBzZWxlY3RzIGFsbCB0ZXN0cwotLy8gd2hlcmUgdGhlcmUgaXMgMSBzaGFyZC4K
LVRFU1QoU2hvdWxkUnVuVGVzdE9uU2hhcmRUZXN0LCBJc1BhcnRpdGlvbldoZW5UaGVyZUlzT25l
U2hhcmQpIHsKLSAgRVhQRUNUX1RSVUUoU2hvdWxkUnVuVGVzdE9uU2hhcmQoMSwgMCwgMCkpOwot
ICBFWFBFQ1RfVFJVRShTaG91bGRSdW5UZXN0T25TaGFyZCgxLCAwLCAxKSk7Ci0gIEVYUEVDVF9U
UlVFKFNob3VsZFJ1blRlc3RPblNoYXJkKDEsIDAsIDIpKTsKLSAgRVhQRUNUX1RSVUUoU2hvdWxk
UnVuVGVzdE9uU2hhcmQoMSwgMCwgMykpOwotICBFWFBFQ1RfVFJVRShTaG91bGRSdW5UZXN0T25T
aGFyZCgxLCAwLCA0KSk7Ci19Ci0KLWNsYXNzIFNob3VsZFNoYXJkVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBp
bmRleF92YXJfID0gR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJJTkRFWCI7Ci0gICAgdG90YWxf
dmFyXyA9IEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVE9UQUwiOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkgewotICAgIFNldEVudihpbmRleF92YXJfLCAiIik7Ci0gICAgU2V0
RW52KHRvdGFsX3Zhcl8sICIiKTsKLSAgfQotCi0gIGNvbnN0IGNoYXIqIGluZGV4X3Zhcl87Ci0g
IGNvbnN0IGNoYXIqIHRvdGFsX3Zhcl87Ci19OwotCi0vLyBUZXN0cyB0aGF0IHNoYXJkaW5nIGlz
IGRpc2FibGVkIGlmIG5laXRoZXIgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwotLy8gYXJl
IHNldC4KLVRFU1RfRihTaG91bGRTaGFyZFRlc3QsIFJldHVybnNGYWxzZVdoZW5OZWl0aGVyRW52
VmFySXNTZXQpIHsKLSAgU2V0RW52KGluZGV4X3Zhcl8sICIiKTsKLSAgU2V0RW52KHRvdGFsX3Zh
cl8sICIiKTsKLQotICBFWFBFQ1RfRkFMU0UoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhf
dmFyXywgZmFsc2UpKTsKLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGlu
ZGV4X3Zhcl8sIHRydWUpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzaGFyZGluZyBpcyBub3QgZW5h
YmxlZCBpZiB0b3RhbF9zaGFyZHMgID09IDEuCi1URVNUX0YoU2hvdWxkU2hhcmRUZXN0LCBSZXR1
cm5zRmFsc2VXaGVuVG90YWxTaGFyZElzT25lKSB7Ci0gIFNldEVudihpbmRleF92YXJfLCAiMCIp
OwotICBTZXRFbnYodG90YWxfdmFyXywgIjEiKTsKLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJk
KHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxTRShTaG91bGRT
aGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCB0cnVlKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
c2hhcmRpbmcgaXMgZW5hYmxlZCBpZiB0b3RhbF9zaGFyZHMgPiAxIGFuZAotLy8gd2UgYXJlIG5v
dCBpbiBhIGRlYXRoIHRlc3Qgc3VicHJvY2Vzcy4KLS8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBh
cmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIENFLgotI2lmICFHVEVTVF9PU19XSU5ET1dTX01P
QklMRQotVEVTVF9GKFNob3VsZFNoYXJkVGVzdCwgV29ya3NXaGVuU2hhcmRFbnZWYXJzQXJlVmFs
aWQpIHsKLSAgU2V0RW52KGluZGV4X3Zhcl8sICI0Iik7Ci0gIFNldEVudih0b3RhbF92YXJfLCAi
MjIiKTsKLSAgRVhQRUNUX1RSVUUoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywg
ZmFsc2UpKTsKLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zh
cl8sIHRydWUpKTsKLQotICBTZXRFbnYoaW5kZXhfdmFyXywgIjgiKTsKLSAgU2V0RW52KHRvdGFs
X3Zhcl8sICI5Iik7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4
X3Zhcl8sIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxTRShTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBp
bmRleF92YXJfLCB0cnVlKSk7Ci0KLSAgU2V0RW52KGluZGV4X3Zhcl8sICIwIik7Ci0gIFNldEVu
dih0b3RhbF92YXJfLCAiOSIpOwotICBFWFBFQ1RfVFJVRShTaG91bGRTaGFyZCh0b3RhbF92YXJf
LCBpbmRleF92YXJfLCBmYWxzZSkpOwotICBFWFBFQ1RfRkFMU0UoU2hvdWxkU2hhcmQodG90YWxf
dmFyXywgaW5kZXhfdmFyXywgdHJ1ZSkpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLQotLy8gVGVzdHMgdGhhdCB3ZSBleGl0IGluIGVycm9yIGlmIHRoZSBzaGFyZGlu
ZyB2YWx1ZXMgYXJlIG5vdCB2YWxpZC4KLQotdHlwZWRlZiBTaG91bGRTaGFyZFRlc3QgU2hvdWxk
U2hhcmREZWF0aFRlc3Q7Ci0KLVRFU1RfRihTaG91bGRTaGFyZERlYXRoVGVzdCwgQWJvcnRzV2hl
blNoYXJkaW5nRW52VmFyc0FyZUludmFsaWQpIHsKLSAgU2V0RW52KGluZGV4X3Zhcl8sICI0Iik7
Ci0gIFNldEVudih0b3RhbF92YXJfLCAiNCIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
KFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSwgIi4qIik7Ci0KLSAg
U2V0RW52KGluZGV4X3Zhcl8sICI0Iik7Ci0gIFNldEVudih0b3RhbF92YXJfLCAiLTIiKTsKLSAg
RVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92
YXJfLCBmYWxzZSksICIuKiIpOwotCi0gIFNldEVudihpbmRleF92YXJfLCAiNSIpOwotICBTZXRF
bnYodG90YWxfdmFyXywgIiIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKFNob3VsZFNo
YXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSwgIi4qIik7Ci0KLSAgU2V0RW52KGlu
ZGV4X3Zhcl8sICIiKTsKLSAgU2V0RW52KHRvdGFsX3Zhcl8sICI1Iik7Ci0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFsc2Up
LCAiLioiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTaG91bGRSdW5UZXN0T25TaGFyZCBpcyBhIHBh
cnRpdGlvbiB3aGVuIDUKLS8vIHNoYXJkcyBhcmUgdXNlZC4KLVRFU1QoU2hvdWxkUnVuVGVzdE9u
U2hhcmRUZXN0LCBJc1BhcnRpdGlvbldoZW5UaGVyZUFyZUZpdmVTaGFyZHMpIHsKLSAgLy8gQ2hv
b3NlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdGVzdHMgYW5kIHNoYXJkcy4KLSAgY29uc3QgaW50
IG51bV90ZXN0cyA9IDE3OwotICBjb25zdCBpbnQgbnVtX3NoYXJkcyA9IDU7Ci0KLSAgLy8gQ2hl
Y2sgcGFydGl0aW9uaW5nOiBlYWNoIHRlc3Qgc2hvdWxkIGJlIG9uIGV4YWN0bHkgMSBzaGFyZC4K
LSAgZm9yIChpbnQgdGVzdF9pZCA9IDA7IHRlc3RfaWQgPCBudW1fdGVzdHM7IHRlc3RfaWQrKykg
ewotICAgIGludCBwcmV2X3NlbGVjdGVkX3NoYXJkX2luZGV4ID0gLTE7Ci0gICAgZm9yIChpbnQg
c2hhcmRfaW5kZXggPSAwOyBzaGFyZF9pbmRleCA8IG51bV9zaGFyZHM7IHNoYXJkX2luZGV4Kysp
IHsKLSAgICAgIGlmIChTaG91bGRSdW5UZXN0T25TaGFyZChudW1fc2hhcmRzLCBzaGFyZF9pbmRl
eCwgdGVzdF9pZCkpIHsKLSAgICAgICAgaWYgKHByZXZfc2VsZWN0ZWRfc2hhcmRfaW5kZXggPCAw
KSB7Ci0gICAgICAgICAgcHJldl9zZWxlY3RlZF9zaGFyZF9pbmRleCA9IHNoYXJkX2luZGV4Owot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEFERF9GQUlMVVJFKCkgPDwgIlNoYXJkICIgPDwg
cHJldl9zZWxlY3RlZF9zaGFyZF9pbmRleCA8PCAiIGFuZCAiCi0gICAgICAgICAgICA8PCBzaGFy
ZF9pbmRleCA8PCAiIGFyZSBib3RoIHNlbGVjdGVkIHRvIHJ1biB0ZXN0ICIgPDwgdGVzdF9pZDsK
LSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8vIENoZWNrIGJhbGFuY2U6IFRo
aXMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBzaGFyZGluZyBwcm90b2NvbCwgYnV0IGlzIGEKLSAg
Ly8gZGVzaXJhYmxlIHByb3BlcnR5IGZvciBwZXJmb3JtYW5jZS4KLSAgZm9yIChpbnQgc2hhcmRf
aW5kZXggPSAwOyBzaGFyZF9pbmRleCA8IG51bV9zaGFyZHM7IHNoYXJkX2luZGV4KyspIHsKLSAg
ICBpbnQgbnVtX3Rlc3RzX29uX3NoYXJkID0gMDsKLSAgICBmb3IgKGludCB0ZXN0X2lkID0gMDsg
dGVzdF9pZCA8IG51bV90ZXN0czsgdGVzdF9pZCsrKSB7Ci0gICAgICBudW1fdGVzdHNfb25fc2hh
cmQgKz0KLSAgICAgICAgU2hvdWxkUnVuVGVzdE9uU2hhcmQobnVtX3NoYXJkcywgc2hhcmRfaW5k
ZXgsIHRlc3RfaWQpOwotICAgIH0KLSAgICBFWFBFQ1RfR0UobnVtX3Rlc3RzX29uX3NoYXJkLCBu
dW1fdGVzdHMgLyBudW1fc2hhcmRzKTsKLSAgfQotfQotCi0vLyBGb3IgdGhlIHNhbWUgcmVhc29u
IHdlIGFyZSBub3QgZXhwbGljaXRseSB0ZXN0aW5nIGV2ZXJ5dGhpbmcgaW4gdGhlCi0vLyBUZXN0
IGNsYXNzLCB0aGVyZSBhcmUgbm8gc2VwYXJhdGUgdGVzdHMgZm9yIHRoZSBmb2xsb3dpbmcgY2xh
c3NlcwotLy8gKGV4Y2VwdCBmb3Igc29tZSB0cml2aWFsIGNhc2VzKToKLS8vCi0vLyAgIFRlc3RD
YXNlLCBVbml0VGVzdCwgVW5pdFRlc3RSZXN1bHRQcmludGVyLgotLy8KLS8vIFNpbWlsYXJseSwg
dGhlcmUgYXJlIG5vIHNlcGFyYXRlIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIG1hY3JvczoKLS8v
Ci0vLyAgIFRFU1QsIFRFU1RfRiwgUlVOX0FMTF9URVNUUwotCi1URVNUKFVuaXRUZXN0VGVzdCwg
Q2FuR2V0T3JpZ2luYWxXb3JraW5nRGlyKSB7Ci0gIEFTU0VSVF9UUlVFKFVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5nX2RpcigpICE9IE5VTEwpOwotICBFWFBFQ1RfU1RS
TkUoVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtpbmdfZGlyKCksICIiKTsK
LX0KLQotVEVTVChVbml0VGVzdFRlc3QsIFJldHVybnNQbGF1c2libGVUaW1lc3RhbXApIHsKLSAg
RVhQRUNUX0xUKDAsIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5zdGFydF90aW1lc3RhbXAoKSk7
Ci0gIEVYUEVDVF9MRShVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCks
IEdldFRpbWVJbk1pbGxpcygpKTsKLX0KLQotLy8gV2hlbiBhIHByb3BlcnR5IHVzaW5nIGEgcmVz
ZXJ2ZWQga2V5IGlzIHN1cHBsaWVkIHRvIHRoaXMgZnVuY3Rpb24sIGl0Ci0vLyB0ZXN0cyB0aGF0
IGEgbm9uLWZhdGFsIGZhaWx1cmUgaXMgYWRkZWQsIGEgZmF0YWwgZmFpbHVyZSBpcyBub3QgYWRk
ZWQsCi0vLyBhbmQgdGhhdCB0aGUgcHJvcGVydHkgaXMgbm90IHJlY29yZGVkLgotdm9pZCBFeHBl
Y3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKLSAgICBj
b25zdCBUZXN0UmVzdWx0JiB0ZXN0X3Jlc3VsdCwgY29uc3QgY2hhcioga2V5KSB7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKFRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwgIjEiKSwgIlJlc2Vy
dmVkIGtleSIpOwotICBBU1NFUlRfRVEoMCwgdGVzdF9yZXN1bHQudGVzdF9wcm9wZXJ0eV9jb3Vu
dCgpKSA8PCAiUHJvcGVydHkgZm9yIGtleSAnIiA8PCBrZXkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIicgcmVjb3JkZWQgdW5leHBlY3RlZGx5
LiI7Ci19Ci0KLXZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKLSAgICBjb25zdCBjaGFyKiBrZXkpIHsKLSAgY29u
c3QgVGVzdEluZm8qIHRlc3RfaW5mbyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50
X3Rlc3RfaW5mbygpOwotICBBU1NFUlRfVFJVRSh0ZXN0X2luZm8gIT0gTlVMTCk7Ci0gIEV4cGVj
dE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KCp0ZXN0X2lu
Zm8tPnJlc3VsdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXkpOwotfQotCi12b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAotICAgIGNvbnN0
IGNoYXIqIGtleSkgewotICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7Ci0gIEFTU0VSVF9UUlVFKHRlc3RfY2Fz
ZSAhPSBOVUxMKTsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRo
UmVzZXJ2ZWRLZXkoCi0gICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkp
OwotfQotCi12b2lkIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJl
c2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCi0gICAgY29uc3QgY2hhcioga2V5KSB7Ci0gIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAotICAg
ICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmFkX2hvY190ZXN0X3Jlc3VsdCgpLCBrZXkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHByb3BlcnR5IHJlY29yZGluZyBmdW5jdGlvbnMgaW4gVW5pdFRl
c3Qgb3V0c2lkZSBvZiB0ZXN0cwotLy8gZnVuY3Rpb25zIGNvcnJlY2x5LiAgQ3JlYXRpbmcgYSBz
ZXBhcmF0ZSBpbnN0YW5jZSBvZiBVbml0VGVzdCBlbnN1cmVzIGl0Ci0vLyBpcyBpbiBhIHN0YXRl
IHNpbWlsYXIgdG8gdGhlIFVuaXRUZXN0J3Mgc2luZ2xldG9uJ3MgYmV0d2VlbiB0ZXN0cy4KLWNs
YXNzIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0IDoKLSAgICBwdWJsaWMgdGVzdGluZzo6aW50
ZXJuYWw6OlVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVscGVyIHsKLSBwdWJsaWM6Ci0gIHN0
YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCi0gICAgICAg
ICJkaXNhYmxlZCIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAotICAgICAgICAiZXJyb3JzIik7Ci0g
ICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlG
b3JDdXJyZW50VGVzdENhc2UoCi0gICAgICAgICJmYWlsdXJlcyIpOwotICAgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RD
YXNlKAotICAgICAgICAibmFtZSIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGlu
Z1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAotICAgICAgICAidGVz
dHMiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNl
cnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKLSAgICAgICAgInRpbWUiKTsKLQotICAgIFRlc3Q6
OlJlY29yZFByb3BlcnR5KCJ0ZXN0X2Nhc2Vfa2V5XzEiLCAiMSIpOwotICAgIGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2Nh
c2UoKTsKLSAgICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7Ci0KLSAgICBBU1NFUlRf
RVEoMSwgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOwotICAgIEVYUEVDVF9TVFJFUSgidGVzdF9jYXNlX2tleV8xIiwKLSAgICAgICAgICAgICAg
ICAgdGVzdF9jYXNlLT5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5
KCkpOwotICAgIEVYUEVDVF9TVFJFUSgiMSIsCi0gICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+
YWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOwotICB9Ci19
OwotCi0vLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBh
ZGRlZC4KLVRFU1RfRihVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3Vu
ZFdoZW5BZGRlZCkgewotICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7Ci0K
LSAgQVNTRVJUX0VRKDEsIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9w
ZXJ0eV9jb3VudCgpKTsKLQotICBFWFBFQ1RfU1RSRVEoImtleV8xIiwKLSAgICAgICAgICAgICAg
IHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgp
KTsKLSAgRVhQRUNUX1NUUkVRKCIxIiwKLSAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOwotfQotCi0vLyBUZXN0
cyBUZXN0UmVzdWx0IGhhcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIHdoZW4gYWRkZWQuCi1URVNUX0Yo
VW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFk
ZGVkKSB7Ci0gIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEiKTsKLSAgVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMiIpOwotCi0gIEFTU0VSVF9FUSgyLCB1bml0X3Rl
c3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0KLSAgRVhQ
RUNUX1NUUkVRKCJrZXlfMSIsCi0gICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0
X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMSIs
IHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVl
KCkpOwotCi0gIEVYUEVDVF9TVFJFUSgia2V5XzIiLAotICAgICAgICAgICAgICAgdW5pdF90ZXN0
Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkpOwotICBFWFBF
Q1RfU1RSRVEoIjIiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9w
ZXJ0eSgxKS52YWx1ZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFJlc3VsdDo6UmVjb3JkUHJvcGVy
dHkoKSBvdmVycmlkZXMgdmFsdWVzIGZvciBkdXBsaWNhdGUga2V5cy4KLVRFU1RfRihVbml0VGVz
dFJlY29yZFByb3BlcnR5VGVzdCwgT3ZlcnJpZGVzVmFsdWVzRm9yRHVwbGljYXRlS2V5cykgewot
ICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7Ci0gIFVuaXRUZXN0UmVjb3Jk
UHJvcGVydHkoImtleV8yIiwgIjIiKTsKLSAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzEi
LCAiMTIiKTsKLSAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMjIiKTsKLQotICBB
U1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0X3Byb3BlcnR5
X2NvdW50KCkpOwotCi0gIEVYUEVDVF9TVFJFUSgia2V5XzEiLAotICAgICAgICAgICAgICAgdW5p
dF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCkua2V5KCkpOwot
ICBFWFBFQ1RfU1RSRVEoIjEyIiwKLSAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rl
c3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLnZhbHVlKCkpOwotCi0gIEVYUEVDVF9TVFJF
USgia2V5XzIiLAotICAgICAgICAgICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQo
KS5HZXRUZXN0UHJvcGVydHkoMSkua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjIyIiwKLSAgICAg
ICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5
KDEpLnZhbHVlKCkpOwotfQotCi1URVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsCi0g
ICAgICAgQWRkRmFpbHVyZUluc2lkZVRlc3RzV2hlblVzaW5nVGVzdENhc2VSZXNlcnZlZEtleXMp
IHsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRL
ZXlGb3JDdXJyZW50VGVzdCgKLSAgICAgICJuYW1lIik7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCi0gICAgICAi
dmFsdWVfcGFyYW0iKTsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlX
aXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKLSAgICAgICJ0eXBlX3BhcmFtIik7Ci0gIEV4
cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3Vy
cmVudFRlc3QoCi0gICAgICAic3RhdHVzIik7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCi0gICAgICAidGltZSIp
OwotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eUZvckN1cnJlbnRUZXN0KAotICAgICAgImNsYXNzbmFtZSIpOwotfQotCi1URVNUX0YoVW5pdFRl
c3RSZWNvcmRQcm9wZXJ0eVRlc3QsCi0gICAgICAgQWRkUmVjb3JkV2l0aFJlc2VydmVkS2V5c0dl
bmVyYXRlc0NvcnJlY3RQcm9wZXJ0eUxpc3QpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0eSgibmFtZSIsICIxIiksCi0gICAgICAiJ2NsYXNz
bmFtZScsICduYW1lJywgJ3N0YXR1cycsICd0aW1lJywgJ3R5cGVfcGFyYW0nLCBhbmQgJ3ZhbHVl
X3BhcmFtJyIKLSAgICAgICIgYXJlIHJlc2VydmVkIik7Ci19Ci0KLWNsYXNzIFVuaXRUZXN0UmVj
b3JkUHJvcGVydHlUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgRW52aXJvbm1lbnQgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCi0gICAg
ICAgICJ0ZXN0cyIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5
V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCi0gICAgICAgICJmYWlsdXJlcyIpOwot
ICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
T3V0c2lkZU9mVGVzdENhc2UoCi0gICAgICAgICJkaXNhYmxlZCIpOwotICAgIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENh
c2UoCi0gICAgICAgICJlcnJvcnMiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRp
bmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAotICAgICAgICAibmFt
ZSIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2Vy
dmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCi0gICAgICAgICJ0aW1lc3RhbXAiKTsKLSAgICBFeHBl
Y3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVP
ZlRlc3RDYXNlKAotICAgICAgICAidGltZSIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5T3V0c2lkZU9mVGVzdENhc2UoCi0gICAgICAg
ICJyYW5kb21fc2VlZCIpOwotICB9Ci19OwotCi0vLyBUaGlzIHdpbGwgdGVzdCBwcm9wZXJ0eSBy
ZWNvcmRpbmcgb3V0c2lkZSBvZiBhbnkgdGVzdCBvciB0ZXN0IGNhc2UuCi1zdGF0aWMgRW52aXJv
bm1lbnQqIHJlY29yZF9wcm9wZXJ0eV9lbnYgPQotICAgIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVu
dChuZXcgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RFbnZpcm9ubWVudCk7Ci0KLS8vIFRoaXMg
Z3JvdXAgb2YgdGVzdHMgaXMgZm9yIHByZWRpY2F0ZSBhc3NlcnRpb25zIChBU1NFUlRfUFJFRCos
IGV0YykKLS8vIG9mIHZhcmlvdXMgYXJpdGllcy4gIFRoZXkgZG8gbm90IGF0dGVtcHQgdG8gYmUg
ZXhoYXVzdGl2ZS4gIFJhdGhlciwKLS8vIHZpZXcgdGhlbSBhcyBzbW9rZSB0ZXN0cyB0aGF0IGNh
biBiZSBlYXNpbHkgcmV2aWV3ZWQgYW5kIHZlcmlmaWVkLgotLy8gQSBtb3JlIGNvbXBsZXRlIHNl
dCBvZiB0ZXN0cyBmb3IgcHJlZGljYXRlIGFzc2VydGlvbnMgY2FuIGJlIGZvdW5kCi0vLyBpbiBn
dGVzdF9wcmVkX2ltcGxfdW5pdHRlc3QuY2MuCi0KLS8vIEZpcnN0LCBzb21lIHByZWRpY2F0ZXMg
YW5kIHByZWRpY2F0ZS1mb3JtYXR0ZXJzIG5lZWRlZCBieSB0aGUgdGVzdHMuCi0KLS8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIGFyZ3VtZW50IGlzIGFuIGV2ZW4gbnVtYmVyLgotYm9vbCBJc0V2ZW4o
aW50IG4pIHsKLSAgcmV0dXJuIChuICUgMikgPT0gMDsKLX0KLQotLy8gQSBmdW5jdG9yIHRoYXQg
cmV0dXJucyB0cnVlIGlmZiB0aGUgYXJndW1lbnQgaXMgYW4gZXZlbiBudW1iZXIuCi1zdHJ1Y3Qg
SXNFdmVuRnVuY3RvciB7Ci0gIGJvb2wgb3BlcmF0b3IoKShpbnQgbikgeyByZXR1cm4gSXNFdmVu
KG4pOyB9Ci19OwotCi0vLyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24gdGhhdCBhc3Nl
cnRzIHRoZSBhcmd1bWVudCBpcyBhbiBldmVuCi0vLyBudW1iZXIuCi1Bc3NlcnRpb25SZXN1bHQg
QXNzZXJ0SXNFdmVuKGNvbnN0IGNoYXIqIGV4cHIsIGludCBuKSB7Ci0gIGlmIChJc0V2ZW4obikp
IHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci0KLSAgTWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCBleHByIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgbiA8PCAiLCB3aGljaCBpcyBu
b3QgZXZlbi4iOwotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cpOwotfQotCi0vLyBBIHBy
ZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgQXNzZXJ0aW9uUmVzdWx0IGZvciB1c2UgaW4K
LS8vIEVYUEVDVC9BU1NFUlRfVFJVRS9GQUxTRS4KLUFzc2VydGlvblJlc3VsdCBSZXN1bHRJc0V2
ZW4oaW50IG4pIHsKLSAgaWYgKElzRXZlbihuKSkKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2Vz
cygpIDw8IG4gPDwgIiBpcyBldmVuIjsKLSAgZWxzZQotICAgIHJldHVybiBBc3NlcnRpb25GYWls
dXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Ci19Ci0KLS8vIEEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucyBBc3NlcnRpb25SZXN1bHQgYnV0IGdpdmVzIG5vCi0vLyBleHBsYW5hdGlvbiB3
aHkgaXQgc3VjY2VlZHMuIE5lZWRlZCBmb3IgdGVzdGluZyB0aGF0Ci0vLyBFWFBFQ1QvQVNTRVJU
X0ZBTFNFIGhhbmRsZXMgc3VjaCBmdW5jdGlvbnMgY29ycmVjdGx5LgotQXNzZXJ0aW9uUmVzdWx0
IFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oaW50IG4pIHsKLSAgaWYgKElzRXZlbihuKSkKLSAg
ICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICBlbHNlCi0gICAgcmV0dXJuIEFzc2VydGlv
bkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKLX0KLQotLy8gQSBwcmVkaWNhdGUtZm9ybWF0
dGVyIGZ1bmN0b3IgdGhhdCBhc3NlcnRzIHRoZSBhcmd1bWVudCBpcyBhbiBldmVuCi0vLyBudW1i
ZXIuCi1zdHJ1Y3QgQXNzZXJ0SXNFdmVuRnVuY3RvciB7Ci0gIEFzc2VydGlvblJlc3VsdCBvcGVy
YXRvcigpKGNvbnN0IGNoYXIqIGV4cHIsIGludCBuKSB7Ci0gICAgcmV0dXJuIEFzc2VydElzRXZl
bihleHByLCBuKTsKLSAgfQotfTsKLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgc3VtIG9mIHRo
ZSBhcmd1bWVudHMgaXMgYW4gZXZlbiBudW1iZXIuCi1ib29sIFN1bUlzRXZlbjIoaW50IG4xLCBp
bnQgbjIpIHsKLSAgcmV0dXJuIElzRXZlbihuMSArIG4yKTsKLX0KLQotLy8gQSBmdW5jdG9yIHRo
YXQgcmV0dXJucyB0cnVlIGlmZiB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMgaXMgYW4gZXZlbgot
Ly8gbnVtYmVyLgotc3RydWN0IFN1bUlzRXZlbjNGdW5jdG9yIHsKLSAgYm9vbCBvcGVyYXRvcigp
KGludCBuMSwgaW50IG4yLCBpbnQgbjMpIHsKLSAgICByZXR1cm4gSXNFdmVuKG4xICsgbjIgKyBu
Myk7Ci0gIH0KLX07Ci0KLS8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdGlvbiB0aGF0IGFz
c2VydHMgdGhlIHN1bSBvZiB0aGUKLS8vIGFyZ3VtZW50cyBpcyBhbiBldmVuIG51bWJlci4KLUFz
c2VydGlvblJlc3VsdCBBc3NlcnRTdW1Jc0V2ZW40KAotICAgIGNvbnN0IGNoYXIqIGUxLCBjb25z
dCBjaGFyKiBlMiwgY29uc3QgY2hhciogZTMsIGNvbnN0IGNoYXIqIGU0LAotICAgIGludCBuMSwg
aW50IG4yLCBpbnQgbjMsIGludCBuNCkgewotICBjb25zdCBpbnQgc3VtID0gbjEgKyBuMiArIG4z
ICsgbjQ7Ci0gIGlmIChJc0V2ZW4oc3VtKSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNz
KCk7Ci0gIH0KLQotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGUxIDw8ICIgKyAiIDw8IGUyIDw8
ICIgKyAiIDw8IGUzIDw8ICIgKyAiIDw8IGU0Ci0gICAgICA8PCAiICgiIDw8IG4xIDw8ICIgKyAi
IDw8IG4yIDw8ICIgKyAiIDw8IG4zIDw8ICIgKyAiIDw8IG40Ci0gICAgICA8PCAiKSBldmFsdWF0
ZXMgdG8gIiA8PCBzdW0gPDwgIiwgd2hpY2ggaXMgbm90IGV2ZW4uIjsKLSAgcmV0dXJuIEFzc2Vy
dGlvbkZhaWx1cmUobXNnKTsKLX0KLQotLy8gQSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0b3Ig
dGhhdCBhc3NlcnRzIHRoZSBzdW0gb2YgdGhlIGFyZ3VtZW50cwotLy8gaXMgYW4gZXZlbiBudW1i
ZXIuCi1zdHJ1Y3QgQXNzZXJ0U3VtSXNFdmVuNUZ1bmN0b3IgewotICBBc3NlcnRpb25SZXN1bHQg
b3BlcmF0b3IoKSgKLSAgICAgIGNvbnN0IGNoYXIqIGUxLCBjb25zdCBjaGFyKiBlMiwgY29uc3Qg
Y2hhciogZTMsIGNvbnN0IGNoYXIqIGU0LAotICAgICAgY29uc3QgY2hhciogZTUsIGludCBuMSwg
aW50IG4yLCBpbnQgbjMsIGludCBuNCwgaW50IG41KSB7Ci0gICAgY29uc3QgaW50IHN1bSA9IG4x
ICsgbjIgKyBuMyArIG40ICsgbjU7Ci0gICAgaWYgKElzRXZlbihzdW0pKSB7Ci0gICAgICByZXR1
cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICAgIH0KLQotICAgIE1lc3NhZ2UgbXNnOwotICAgIG1z
ZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNCA8PCAi
ICsgIiA8PCBlNQotICAgICAgICA8PCAiICgiCi0gICAgICAgIDw8IG4xIDw8ICIgKyAiIDw8IG4y
IDw8ICIgKyAiIDw8IG4zIDw8ICIgKyAiIDw8IG40IDw8ICIgKyAiIDw8IG41Ci0gICAgICAgIDw8
ICIpIGV2YWx1YXRlcyB0byAiIDw8IHN1bSA8PCAiLCB3aGljaCBpcyBub3QgZXZlbi4iOwotICAg
IHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7Ci0gIH0KLX07Ci0KLQotLy8gVGVzdHMgdW5h
cnkgcHJlZGljYXRlIGFzc2VydGlvbnMuCi0KLS8vIFRlc3RzIHVuYXJ5IHByZWRpY2F0ZSBhc3Nl
cnRpb25zIHRoYXQgZG9uJ3QgdXNlIGEgY3VzdG9tIGZvcm1hdHRlci4KLVRFU1QoUHJlZDFUZXN0
LCBXaXRob3V0Rm9ybWF0KSB7Ci0gIC8vIFN1Y2Nlc3MgY2FzZXMuCi0gIEVYUEVDVF9QUkVEMShJ
c0V2ZW5GdW5jdG9yKCksIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOwotICBB
U1NFUlRfUFJFRDEoSXNFdmVuLCA0KTsKLQotICAvLyBGYWlsdXJlIGNhc2VzLgotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDEoSXNFdmVuLCA1
KSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9QUkVEMShJc0V2ZW5G
dW5jdG9yKCksIDUpLAotICAgICAgICAgICAgICAgICAgICAgICAiZXZhbHVhdGVzIHRvIGZhbHNl
Iik7Ci19Ci0KLS8vIFRlc3RzIHVuYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zIHRoYXQgdXNlIGEg
Y3VzdG9tIGZvcm1hdHRlci4KLVRFU1QoUHJlZDFUZXN0LCBXaXRoRm9ybWF0KSB7Ci0gIC8vIFN1
Y2Nlc3MgY2FzZXMuCi0gIEVYUEVDVF9QUkVEX0ZPUk1BVDEoQXNzZXJ0SXNFdmVuLCAyKTsKLSAg
QVNTRVJUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2ZW5GdW5jdG9yKCksIDQpCi0gICAgPDwgIlRo
aXMgZmFpbHVyZSBpcyBVTkVYUEVDVEVEISI7Ci0KLSAgLy8gRmFpbHVyZSBjYXNlcy4KLSAgY29u
c3QgaW50IG4gPSA1OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfUFJFRF9GT1JN
QVQxKEFzc2VydElzRXZlbkZ1bmN0b3IoKSwgbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJuIGV2YWx1YXRlcyB0byA1LCB3aGljaCBpcyBub3QgZXZlbi4iKTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2
ZW4sIDUpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVy
ZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB1bmFyeSBwcmVkaWNhdGUgYXNz
ZXJ0aW9ucyBldmFsdWF0ZXMgdGhlaXIgYXJndW1lbnRzCi0vLyBleGFjdGx5IG9uY2UuCi1URVNU
KFByZWQxVGVzdCwgU2luZ2xlRXZhbHVhdGlvbk9uRmFpbHVyZSkgewotICAvLyBBIHN1Y2Nlc3Mg
Y2FzZS4KLSAgc3RhdGljIGludCBuID0gMDsKLSAgRVhQRUNUX1BSRUQxKElzRXZlbiwgbisrKTsK
LSAgRVhQRUNUX0VRKDEsIG4pIDw8ICJUaGUgYXJndW1lbnQgaXMgbm90IGV2YWx1YXRlZCBleGFj
dGx5IG9uY2UuIjsKLQotICAvLyBBIGZhaWx1cmUgY2FzZS4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2ZW5GdW5j
dG9yKCksIG4rKykKLSAgICAgICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOwotICB9
LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotICBFWFBFQ1RfRVEoMiwgbikgPDwgIlRo
ZSBhcmd1bWVudCBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotfQotCi0KLS8vIFRl
c3RzIHByZWRpY2F0ZSBhc3NlcnRpb25zIHdob3NlIGFyaXR5IGlzID49IDIuCi0KLS8vIFRlc3Rz
IHByZWRpY2F0ZSBhc3NlcnRpb25zIHRoYXQgZG9uJ3QgdXNlIGEgY3VzdG9tIGZvcm1hdHRlci4K
LVRFU1QoUHJlZFRlc3QsIFdpdGhvdXRGb3JtYXQpIHsKLSAgLy8gU3VjY2VzcyBjYXNlcy4KLSAg
QVNTRVJUX1BSRUQyKFN1bUlzRXZlbjIsIDIsIDQpIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBF
Q1RFRCEiOwotICBFWFBFQ1RfUFJFRDMoU3VtSXNFdmVuM0Z1bmN0b3IoKSwgNCwgNiwgOCk7Ci0K
LSAgLy8gRmFpbHVyZSBjYXNlcy4KLSAgY29uc3QgaW50IG4xID0gMTsKLSAgY29uc3QgaW50IG4y
ID0gMjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X1BSRUQyKFN1bUlzRXZlbjIsIG4xLCBuMikgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4i
OwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDMoU3VtSXNFdmVuM0Z1bmN0b3IoKSwg
MSwgMiwgNCk7Ci0gIH0sICJldmFsdWF0ZXMgdG8gZmFsc2UiKTsKLX0KLQotLy8gVGVzdHMgcHJl
ZGljYXRlIGFzc2VydGlvbnMgdGhhdCB1c2UgYSBjdXN0b20gZm9ybWF0dGVyLgotVEVTVChQcmVk
VGVzdCwgV2l0aEZvcm1hdCkgewotICAvLyBTdWNjZXNzIGNhc2VzLgotICBBU1NFUlRfUFJFRF9G
T1JNQVQ0KEFzc2VydFN1bUlzRXZlbjQsIDQsIDYsIDgsIDEwKSA8PAotICAgICJUaGlzIGZhaWx1
cmUgaXMgVU5FWFBFQ1RFRCEiOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQ1KEFzc2VydFN1bUlzRXZl
bjVGdW5jdG9yKCksIDIsIDQsIDYsIDgsIDEwKTsKLQotICAvLyBGYWlsdXJlIGNhc2VzLgotICBj
b25zdCBpbnQgbjEgPSAxOwotICBjb25zdCBpbnQgbjIgPSAyOwotICBjb25zdCBpbnQgbjMgPSA0
OwotICBjb25zdCBpbnQgbjQgPSA2OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KEFzc2VydFN1bUlzRXZlbjQsIG4xLCBuMiwg
bjMsIG40KTsKLSAgfSwgImV2YWx1YXRlcyB0byAxMywgd2hpY2ggaXMgbm90IGV2ZW4uIik7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1B
VDUoQXNzZXJ0U3VtSXNFdmVuNUZ1bmN0b3IoKSwgMSwgMiwgNCwgNiwgOCkKLSAgICAgICAgPDwg
IlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVj
dGVkLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHByZWRpY2F0ZSBhc3NlcnRpb25zIGV2YWx1YXRl
cyB0aGVpciBhcmd1bWVudHMKLS8vIGV4YWN0bHkgb25jZS4KLVRFU1QoUHJlZFRlc3QsIFNpbmds
ZUV2YWx1YXRpb25PbkZhaWx1cmUpIHsKLSAgLy8gQSBzdWNjZXNzIGNhc2UuCi0gIGludCBuMSA9
IDA7Ci0gIGludCBuMiA9IDA7Ci0gIEVYUEVDVF9QUkVEMihTdW1Jc0V2ZW4yLCBuMSsrLCBuMisr
KTsKLSAgRVhQRUNUX0VRKDEsIG4xKSA8PCAiQXJndW1lbnQgMSBpcyBub3QgZXZhbHVhdGVkIGV4
YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjIpIDw8ICJBcmd1bWVudCAyIGlzIG5vdCBl
dmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0KLSAgLy8gQW5vdGhlciBzdWNjZXNzIGNhc2UuCi0g
IG4xID0gbjIgPSAwOwotICBpbnQgbjMgPSAwOwotICBpbnQgbjQgPSAwOwotICBpbnQgbjUgPSAw
OwotICBBU1NFUlRfUFJFRF9GT1JNQVQ1KEFzc2VydFN1bUlzRXZlbjVGdW5jdG9yKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgbjErKywgbjIrKywgbjMrKywgbjQrKywgbjUrKykKLSAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOwotICBFWFBF
Q1RfRVEoMSwgbjEpIDw8ICJBcmd1bWVudCAxIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNl
LiI7Ci0gIEVYUEVDVF9FUSgxLCBuMikgPDwgIkFyZ3VtZW50IDIgaXMgbm90IGV2YWx1YXRlZCBl
eGFjdGx5IG9uY2UuIjsKLSAgRVhQRUNUX0VRKDEsIG4zKSA8PCAiQXJndW1lbnQgMyBpcyBub3Qg
ZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjQpIDw8ICJBcmd1bWVu
dCA0IGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0gIEVYUEVDVF9FUSgxLCBuNSkg
PDwgIkFyZ3VtZW50IDUgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIjsKLQotICAvLyBB
IGZhaWx1cmUgY2FzZS4KLSAgbjEgPSBuMiA9IG4zID0gMDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQzKFN1bUlzRXZlbjNGdW5jdG9yKCks
ICsrbjEsIG4yKyssIG4zKyspCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQu
IjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKLSAgRVhQRUNUX0VRKDEsIG4x
KSA8PCAiQXJndW1lbnQgMSBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBF
Q1RfRVEoMSwgbjIpIDw8ICJBcmd1bWVudCAyIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNl
LiI7Ci0gIEVYUEVDVF9FUSgxLCBuMykgPDwgIkFyZ3VtZW50IDMgaXMgbm90IGV2YWx1YXRlZCBl
eGFjdGx5IG9uY2UuIjsKLQotICAvLyBBbm90aGVyIGZhaWx1cmUgY2FzZS4KLSAgbjEgPSBuMiA9
IG4zID0gbjQgPSAwOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KEFzc2VydFN1bUlzRXZlbjQsICsrbjEsIG4yKyssIG4zKyss
IG40KyspOwotICB9LCAiZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIG5vdCBldmVuLiIpOwotICBF
WFBFQ1RfRVEoMSwgbjEpIDw8ICJBcmd1bWVudCAxIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBv
bmNlLiI7Ci0gIEVYUEVDVF9FUSgxLCBuMikgPDwgIkFyZ3VtZW50IDIgaXMgbm90IGV2YWx1YXRl
ZCBleGFjdGx5IG9uY2UuIjsKLSAgRVhQRUNUX0VRKDEsIG4zKSA8PCAiQXJndW1lbnQgMyBpcyBu
b3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjQpIDw8ICJBcmd1
bWVudCA0IGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci19Ci0KLQotLy8gU29tZSBo
ZWxwZXIgZnVuY3Rpb25zIGZvciB0ZXN0aW5nIHVzaW5nIG92ZXJsb2FkZWQvdGVtcGxhdGUKLS8v
IGZ1bmN0aW9ucyB3aXRoIEFTU0VSVF9QUkVEbiBhbmQgRVhQRUNUX1BSRURuLgotCi1ib29sIElz
UG9zaXRpdmUoZG91YmxlIHgpIHsKLSAgcmV0dXJuIHggPiAwOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWJvb2wgSXNOZWdhdGl2ZShUIHgpIHsKLSAgcmV0dXJuIHggPCAwOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotYm9vbCBHcmVhdGVyVGhhbihUMSB4
MSwgVDIgeDIpIHsKLSAgcmV0dXJuIHgxID4geDI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgb3Zlcmxv
YWRlZCBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgaW4gKl9QUkVEKiBhcyBsb25nIGFzCi0vLyB0aGVp
ciB0eXBlcyBhcmUgZXhwbGljaXRseSBzcGVjaWZpZWQuCi1URVNUKFByZWRpY2F0ZUFzc2VydGlv
blRlc3QsIEFjY2VwdHNPdmVybG9hZGVkRnVuY3Rpb24pIHsKLSAgLy8gQysrQnVpbGRlciByZXF1
aXJlcyBDLXN0eWxlIGNhc3RzIHJhdGhlciB0aGFuIHN0YXRpY19jYXN0LgotICBFWFBFQ1RfUFJF
RDEoKGJvb2wgKCopKGludCkpKElzUG9zaXRpdmUpLCA1KTsgIC8vIE5PTElOVAotICBBU1NFUlRf
UFJFRDEoKGJvb2wgKCopKGRvdWJsZSkpKElzUG9zaXRpdmUpLCA2LjApOyAgLy8gTk9MSU5UCi19
Ci0KLS8vIFRlc3RzIHRoYXQgdGVtcGxhdGUgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJF
RCogYXMgbG9uZyBhcwotLy8gdGhlaXIgdHlwZXMgYXJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgot
VEVTVChQcmVkaWNhdGVBc3NlcnRpb25UZXN0LCBBY2NlcHRzVGVtcGxhdGVGdW5jdGlvbikgewot
ICBFWFBFQ1RfUFJFRDEoSXNOZWdhdGl2ZTxpbnQ+LCAtNSk7Ci0gIC8vIE1ha2VzIHN1cmUgdGhh
dCB3ZSBjYW4gaGFuZGxlIHRlbXBsYXRlcyB3aXRoIG1vcmUgdGhhbiBvbmUKLSAgLy8gcGFyYW1l
dGVyLgotICBBU1NFUlRfUFJFRDIoKEdyZWF0ZXJUaGFuPGludCwgaW50PiksIDUsIDApOwotfQot
Ci0KLS8vIFNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgdGVzdGluZyB1c2luZyBvdmVybG9hZGVk
L3RlbXBsYXRlCi0vLyBmdW5jdGlvbnMgd2l0aCBBU1NFUlRfUFJFRF9GT1JNQVRuIGFuZCBFWFBF
Q1RfUFJFRF9GT1JNQVRuLgotCi1Bc3NlcnRpb25SZXN1bHQgSXNQb3NpdGl2ZUZvcm1hdChjb25z
dCBjaGFyKiAvKiBleHByICovLCBpbnQgbikgewotICByZXR1cm4gbiA+IDAgPyBBc3NlcnRpb25T
dWNjZXNzKCkgOgotICAgICAgQXNzZXJ0aW9uRmFpbHVyZShNZXNzYWdlKCkgPDwgIkZhaWx1cmUi
KTsKLX0KLQotQXNzZXJ0aW9uUmVzdWx0IElzUG9zaXRpdmVGb3JtYXQoY29uc3QgY2hhciogLyog
ZXhwciAqLywgZG91YmxlIHgpIHsKLSAgcmV0dXJuIHggPiAwID8gQXNzZXJ0aW9uU3VjY2Vzcygp
IDoKLSAgICAgIEFzc2VydGlvbkZhaWx1cmUoTWVzc2FnZSgpIDw8ICJGYWlsdXJlIik7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQXNzZXJ0aW9uUmVzdWx0IElzTmVnYXRpdmVGb3JtYXQo
Y29uc3QgY2hhciogLyogZXhwciAqLywgVCB4KSB7Ci0gIHJldHVybiB4IDwgMCA/IEFzc2VydGlv
blN1Y2Nlc3MoKSA6Ci0gICAgICBBc3NlcnRpb25GYWlsdXJlKE1lc3NhZ2UoKSA8PCAiRmFpbHVy
ZSIpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9u
UmVzdWx0IEVxdWFsc0Zvcm1hdChjb25zdCBjaGFyKiAvKiBleHByMSAqLywgY29uc3QgY2hhciog
LyogZXhwcjIgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB4MSwg
Y29uc3QgVDImIHgyKSB7Ci0gIHJldHVybiB4MSA9PSB4MiA/IEFzc2VydGlvblN1Y2Nlc3MoKSA6
Ci0gICAgICBBc3NlcnRpb25GYWlsdXJlKE1lc3NhZ2UoKSA8PCAiRmFpbHVyZSIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IG92ZXJsb2FkZWQgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJFRF9G
T1JNQVQqCi0vLyB3aXRob3V0IGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGVpciB0eXBlcy4KLVRF
U1QoUHJlZGljYXRlRm9ybWF0QXNzZXJ0aW9uVGVzdCwgQWNjZXB0c092ZXJsb2FkZWRGdW5jdGlv
bikgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQxKElzUG9zaXRpdmVGb3JtYXQsIDUpOwotICBBU1NF
UlRfUFJFRF9GT1JNQVQxKElzUG9zaXRpdmVGb3JtYXQsIDYuMCk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgdGVtcGxhdGUgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluICpfUFJFRF9GT1JNQVQqIHdpdGhv
dXQKLS8vIGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGVpciB0eXBlcy4KLVRFU1QoUHJlZGljYXRl
Rm9ybWF0QXNzZXJ0aW9uVGVzdCwgQWNjZXB0c1RlbXBsYXRlRnVuY3Rpb24pIHsKLSAgRVhQRUNU
X1BSRURfRk9STUFUMShJc05lZ2F0aXZlRm9ybWF0LCAtNSk7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1B
VDIoRXF1YWxzRm9ybWF0LCAzLCAzKTsKLX0KLQotCi0vLyBUZXN0cyBzdHJpbmcgYXNzZXJ0aW9u
cy4KLQotLy8gVGVzdHMgQVNTRVJUX1NUUkVRIHdpdGggbm9uLU5VTEwgYXJndW1lbnRzLgotVEVT
VChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSRVEpIHsKLSAgY29uc3QgY2hhciAqIGNv
bnN0IHAxID0gImdvb2QiOwotICBBU1NFUlRfU1RSRVEocDEsIHAxKTsKLQotICAvLyBMZXQgcDIg
aGF2ZSB0aGUgc2FtZSBjb250ZW50IGFzIHAxLCBidXQgYmUgYXQgYSBkaWZmZXJlbnQgYWRkcmVz
cy4KLSAgY29uc3QgY2hhciBwMltdID0gImdvb2QiOwotICBBU1NFUlRfU1RSRVEocDEsIHAyKTsK
LQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoImJhZCIsICJnb29kIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogXCJiYWRcIiIpOwotfQotCi0vLyBUZXN0
cyBBU1NFUlRfU1RSRVEgd2l0aCBOVUxMIGFyZ3VtZW50cy4KLVRFU1QoU3RyaW5nQXNzZXJ0aW9u
VGVzdCwgQVNTRVJUX1NUUkVRX051bGwpIHsKLSAgQVNTRVJUX1NUUkVRKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIgKj4oTlVMTCksIE5VTEwpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
U1RSRVEoTlVMTCwgIm5vbi1udWxsIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJub24tbnVs
bCIpOwotfQotCi0vLyBUZXN0cyBBU1NFUlRfU1RSRVEgd2l0aCBOVUxMIGFyZ3VtZW50cy4KLVRF
U1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUkVRX051bGwyKSB7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJFUSgibm9uLW51bGwiLCBOVUxMKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIm5vbi1udWxsIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9TVFJORS4KLVRF
U1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUk5FKSB7Ci0gIEFTU0VSVF9TVFJORSgi
aGkiLCAiSGkiKTsKLSAgQVNTRVJUX1NUUk5FKCJIaSIsIE5VTEwpOwotICBBU1NFUlRfU1RSTkUo
TlVMTCwgIkhpIik7Ci0gIEFTU0VSVF9TVFJORSgiIiwgTlVMTCk7Ci0gIEFTU0VSVF9TVFJORShO
VUxMLCAiIik7Ci0gIEFTU0VSVF9TVFJORSgiIiwgIkhpIik7Ci0gIEFTU0VSVF9TVFJORSgiSGki
LCAiIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJORSgiSGkiLCAiSGkiKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIlwiSGlcIiB2cyBcIkhpXCIiKTsKLX0KLQotLy8gVGVz
dHMgQVNTRVJUX1NUUkNBU0VFUS4KLVRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NU
UkNBU0VFUSkgewotICBBU1NFUlRfU1RSQ0FTRUVRKCJoaSIsICJIaSIpOwotICBBU1NFUlRfU1RS
Q0FTRUVRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oTlVMTCksIE5VTEwpOwotCi0gIEFTU0VS
VF9TVFJDQVNFRVEoIiIsICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNB
U0VFUSgiSGkiLCAiaGkyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJJZ25vcmluZyBjYXNl
Iik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9TVFJDQVNFTkUuCi1URVNUKFN0cmluZ0Fzc2VydGlv
blRlc3QsIEFTU0VSVF9TVFJDQVNFTkUpIHsKLSAgQVNTRVJUX1NUUkNBU0VORSgiaGkxIiwgIkhp
MiIpOwotICBBU1NFUlRfU1RSQ0FTRU5FKCJIaSIsIE5VTEwpOwotICBBU1NFUlRfU1RSQ0FTRU5F
KE5VTEwsICJIaSIpOwotICBBU1NFUlRfU1RSQ0FTRU5FKCIiLCBOVUxMKTsKLSAgQVNTRVJUX1NU
UkNBU0VORShOVUxMLCAiIik7Ci0gIEFTU0VSVF9TVFJDQVNFTkUoIiIsICJIaSIpOwotICBBU1NF
UlRfU1RSQ0FTRU5FKCJIaSIsICIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NU
UkNBU0VORSgiSGkiLCAiaGkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIihpZ25vcmluZyBj
YXNlKSIpOwotfQotCi0vLyBUZXN0cyAqX1NUUkVRIG9uIHdpZGUgc3RyaW5ncy4KLVRFU1QoU3Ry
aW5nQXNzZXJ0aW9uVGVzdCwgU1RSRVFfV2lkZSkgewotICAvLyBOVUxMIHN0cmluZ3MuCi0gIEFT
U0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjb25zdCB3Y2hhcl90ICo+KE5VTEwpLCBOVUxMKTsKLQot
ICAvLyBFbXB0eSBzdHJpbmdzLgotICBBU1NFUlRfU1RSRVEoTCIiLCBMIiIpOwotCi0gIC8vIE5v
bi1udWxsIHZzIE5VTEwuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShM
Im5vbi1udWxsIiwgTlVMTCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJub24tbnVsbCIp
OwotCi0gIC8vIEVxdWFsIHN0cmluZ3MuCi0gIEVYUEVDVF9TVFJFUShMIkhpIiwgTCJIaSIpOwot
Ci0gIC8vIFVuZXF1YWwgc3RyaW5ncy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X1NUUkVRKEwiYWJjIiwgTCJBYmMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkFiYyIp
OwotCi0gIC8vIFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCi0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTIwIiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMiKTsKLQotICAvLyBUaGUgc3RyZWFtaW5n
IHZhcmlhdGlvbi4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAg
RVhQRUNUX1NUUkVRKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjEiKSA8PCAiRXhwZWN0ZWQgZmFp
bHVyZSI7Ci0gIH0sICJFeHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLS8vIFRlc3RzICpfU1RSTkUg
b24gd2lkZSBzdHJpbmdzLgotVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBTVFJORV9XaWRlKSB7
Ci0gIC8vIE5VTEwgc3RyaW5ncy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgRVhQRUNUX1NUUk5FKHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QgKj4oTlVMTCks
IE5VTEwpOwotICB9LCAiIik7Ci0KLSAgLy8gRW1wdHkgc3RyaW5ncy4KLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKEwiIiwgTCIiKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkxcIlwiIik7Ci0KLSAgLy8gTm9uLW51bGwgdnMgTlVMTC4KLSAgQVNTRVJUX1NUUk5F
KEwibm9uLW51bGwiLCBOVUxMKTsKLQotICAvLyBFcXVhbCBzdHJpbmdzLgotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoTCJIaSIsIEwiSGkiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkxcIkhpXCIiKTsKLQotICAvLyBVbmVxdWFsIHN0cmluZ3MuCi0gIEVYUEVD
VF9TVFJORShMImFiYyIsIEwiQWJjIik7Ci0KLSAgLy8gU3RyaW5ncyBjb250YWluaW5nIHdpZGUg
Y2hhcmFjdGVycy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKEwiYWJj
XHg4MTE5IiwgTCJhYmNceDgxMTkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImFiYyIp
OwotCi0gIC8vIFRoZSBzdHJlYW1pbmcgdmFyaWF0aW9uLgotICBBU1NFUlRfU1RSTkUoTCJhYmNc
eDgxMTkiLCBMImFiY1x4ODEyMCIpIDw8ICJUaGlzIHNob3VsZG4ndCBoYXBwZW4iOwotfQotCi0v
LyBUZXN0cyBmb3IgOjp0ZXN0aW5nOjpJc1N1YnN0cmluZygpLgotCi0vLyBUZXN0cyB0aGF0IElz
U3Vic3RyaW5nKCkgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8v
IGFyZ3VtZW50IHR5cGUgaXMgY29uc3QgY2hhciouCi1URVNUKElzU3Vic3RyaW5nVGVzdCwgUmV0
dXJuc0NvcnJlY3RSZXN1bHRGb3JDU3RyaW5nKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1N1YnN0cmlu
ZygiIiwgIiIsIE5VTEwsICJhIikpOwotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIi
LCAiYiIsIE5VTEwpKTsKLSAgRVhQRUNUX0ZBTFNFKElzU3Vic3RyaW5nKCIiLCAiIiwgIm5lZWRs
ZSIsICJoYXlzdGFjayIpKTsKLQotICBFWFBFQ1RfVFJVRShJc1N1YnN0cmluZygiIiwgIiIsIHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihOVUxMKSwgTlVMTCkpOwotICBFWFBFQ1RfVFJVRShJc1N1
YnN0cmluZygiIiwgIiIsICJuZWVkbGUiLCAidHdvIG5lZWRsZXMiKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgSXNTdWJzdHJpbmcoKSByZXR1cm5zIHRoZSBjb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBp
bnB1dAotLy8gYXJndW1lbnQgdHlwZSBpcyBjb25zdCB3Y2hhcl90Ki4KLVRFU1QoSXNTdWJzdHJp
bmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdEZvcldpZGVDU3RyaW5nKSB7Ci0gIEVYUEVDVF9G
QUxTRShJc1N1YnN0cmluZygiIiwgIiIsIGtOdWxsLCBMImEiKSk7Ci0gIEVYUEVDVF9GQUxTRShJ
c1N1YnN0cmluZygiIiwgIiIsIEwiYiIsIGtOdWxsKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1N1YnN0
cmluZygiIiwgIiIsIEwibmVlZGxlIiwgTCJoYXlzdGFjayIpKTsKLQotICBFWFBFQ1RfVFJVRShJ
c1N1YnN0cmluZygiIiwgIiIsIHN0YXRpY19jYXN0PGNvbnN0IHdjaGFyX3QqPihOVUxMKSwgTlVM
TCkpOwotICBFWFBFQ1RfVFJVRShJc1N1YnN0cmluZygiIiwgIiIsIEwibmVlZGxlIiwgTCJ0d28g
bmVlZGxlcyIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJc1N1YnN0cmluZygpIGdlbmVyYXRlcyB0
aGUgY29ycmVjdCBtZXNzYWdlIHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIGNv
bnN0IGNoYXIqLgotVEVTVChJc1N1YnN0cmluZ1Rlc3QsIEdlbmVyYXRlc0NvcnJlY3RNZXNzYWdl
Rm9yQ1N0cmluZykgewotICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVfZXhwclxuIgot
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBcIm5lZWRsZVwiXG4iCi0gICAgICAgICAgICAgICAi
RXhwZWN0ZWQ6IGEgc3Vic3RyaW5nIG9mIGhheXN0YWNrX2V4cHJcbiIKLSAgICAgICAgICAgICAg
ICJXaGljaCBpczogXCJoYXlzdGFja1wiIiwKLSAgICAgICAgICAgICAgIElzU3Vic3RyaW5nKCJu
ZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuZWVkbGUiLCAiaGF5c3RhY2siKS5mYWlsdXJlX21lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgSXNTdWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5w
dXQKLS8vIGFyZ3VtZW50IHR5cGUgaXMgOjpzdGQ6OnN0cmluZy4KLVRFU1QoSXNTdWJzdHJpbmdU
ZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdHNGb3JTdGRTdHJpbmcpIHsKLSAgRVhQRUNUX1RSVUUo
SXNTdWJzdHJpbmcoIiIsICIiLCBzdGQ6OnN0cmluZygiaGVsbG8iKSwgImFoZWxsb2IiKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc1N1YnN0cmluZygiIiwgIiIsICJoZWxsbyIsIHN0ZDo6c3RyaW5nKCJ3
b3JsZCIpKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLS8vIFRlc3RzIHRoYXQg
SXNTdWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8v
IGFyZ3VtZW50IHR5cGUgaXMgOjpzdGQ6OndzdHJpbmcuCi1URVNUKElzU3Vic3RyaW5nVGVzdCwg
UmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7Ci0gIEVYUEVDVF9UUlVFKElzU3Vi
c3RyaW5nKCIiLCAiIiwgOjpzdGQ6OndzdHJpbmcoTCJuZWVkbGUiKSwgTCJ0d28gbmVlZGxlcyIp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzU3Vic3RyaW5nKCIiLCAiIiwgTCJuZWVkbGUiLCA6OnN0ZDo6
d3N0cmluZyhMImhheXN0YWNrIikpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJc1N1YnN0cmluZygp
IGdlbmVyYXRlcyB0aGUgY29ycmVjdCBtZXNzYWdlIHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVu
dCB0eXBlIGlzIDo6c3RkOjp3c3RyaW5nLgotVEVTVChJc1N1YnN0cmluZ1Rlc3QsIEdlbmVyYXRl
c0NvcnJlY3RNZXNzYWdlRm9yV3N0cmluZykgewotICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBu
ZWVkbGVfZXhwclxuIgotICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBMXCJuZWVkbGVcIlxuIgot
ICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBhIHN1YnN0cmluZyBvZiBoYXlzdGFja19leHByXG4i
Ci0gICAgICAgICAgICAgICAiV2hpY2ggaXM6IExcImhheXN0YWNrXCIiLAotICAgICAgICAgICAg
ICAgSXNTdWJzdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIm5lZWRsZV9leHByIiwgImhheXN0
YWNrX2V4cHIiLAotICAgICAgICAgICAgICAgICAgIDo6c3RkOjp3c3RyaW5nKEwibmVlZGxlIiks
IEwiaGF5c3RhY2siKS5mYWlsdXJlX21lc3NhZ2UoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9XU1RSSU5HCi0KLS8vIFRlc3RzIGZvciA6OnRlc3Rpbmc6OklzTm90U3Vic3RyaW5n
KCkuCi0KLS8vIFRlc3RzIHRoYXQgSXNOb3RTdWJzdHJpbmcoKSByZXR1cm5zIHRoZSBjb3JyZWN0
IHJlc3VsdCB3aGVuIHRoZSBpbnB1dAotLy8gYXJndW1lbnQgdHlwZSBpcyBjb25zdCBjaGFyKi4K
LVRFU1QoSXNOb3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdEZvckNTdHJpbmcp
IHsKLSAgRVhQRUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCAibmVlZGxlIiwgImhheXN0
YWNrIikpOwotICBFWFBFQ1RfRkFMU0UoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCAibmVlZGxlIiwg
InR3byBuZWVkbGVzIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzTm90U3Vic3RyaW5nKCkgcmV0
dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8vIGFyZ3VtZW50IHR5cGUg
aXMgY29uc3Qgd2NoYXJfdCouCi1URVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJl
Y3RSZXN1bHRGb3JXaWRlQ1N0cmluZykgewotICBFWFBFQ1RfVFJVRShJc05vdFN1YnN0cmluZygi
IiwgIiIsIEwibmVlZGxlIiwgTCJoYXlzdGFjayIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzTm90U3Vi
c3RyaW5nKCIiLCAiIiwgTCJuZWVkbGUiLCBMInR3byBuZWVkbGVzIikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IElzTm90U3Vic3RyaW5nKCkgZ2VuZXJhdGVzIHRoZSBjb3JyZWN0IG1lc3NhZ2Ugd2hl
biB0aGUgaW5wdXQKLS8vIGFyZ3VtZW50IHR5cGUgaXMgY29uc3Qgd2NoYXJfdCouCi1URVNUKElz
Tm90U3Vic3RyaW5nVGVzdCwgR2VuZXJhdGVzQ29ycmVjdE1lc3NhZ2VGb3JXaWRlQ1N0cmluZykg
ewotICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVfZXhwclxuIgotICAgICAgICAgICAg
ICAgIiAgQWN0dWFsOiBMXCJuZWVkbGVcIlxuIgotICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBu
b3QgYSBzdWJzdHJpbmcgb2YgaGF5c3RhY2tfZXhwclxuIgotICAgICAgICAgICAgICAgIldoaWNo
IGlzOiBMXCJ0d28gbmVlZGxlc1wiIiwKLSAgICAgICAgICAgICAgIElzTm90U3Vic3RyaW5nKAot
ICAgICAgICAgICAgICAgICAgICJuZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKLSAgICAg
ICAgICAgICAgICAgICBMIm5lZWRsZSIsIEwidHdvIG5lZWRsZXMiKS5mYWlsdXJlX21lc3NhZ2Uo
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSXNOb3RTdWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVj
dCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8vIGFyZ3VtZW50IHR5cGUgaXMgOjpzdGQ6OnN0cmlu
Zy4KLVRFU1QoSXNOb3RTdWJzdHJpbmdUZXN0LCBSZXR1cm5zQ29ycmVjdFJlc3VsdHNGb3JTdGRT
dHJpbmcpIHsKLSAgRVhQRUNUX0ZBTFNFKElzTm90U3Vic3RyaW5nKCIiLCAiIiwgc3RkOjpzdHJp
bmcoImhlbGxvIiksICJhaGVsbG9iIikpOwotICBFWFBFQ1RfVFJVRShJc05vdFN1YnN0cmluZygi
IiwgIiIsICJoZWxsbyIsIHN0ZDo6c3RyaW5nKCJ3b3JsZCIpKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgSXNOb3RTdWJzdHJpbmcoKSBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgbWVzc2FnZSB3aGVuIHRo
ZSBpbnB1dAotLy8gYXJndW1lbnQgdHlwZSBpcyA6OnN0ZDo6c3RyaW5nLgotVEVTVChJc05vdFN1
YnN0cmluZ1Rlc3QsIEdlbmVyYXRlc0NvcnJlY3RNZXNzYWdlRm9yU3RkU3RyaW5nKSB7Ci0gIEVY
UEVDVF9TVFJFUSgiVmFsdWUgb2Y6IG5lZWRsZV9leHByXG4iCi0gICAgICAgICAgICAgICAiICBB
Y3R1YWw6IFwibmVlZGxlXCJcbiIKLSAgICAgICAgICAgICAgICJFeHBlY3RlZDogbm90IGEgc3Vi
c3RyaW5nIG9mIGhheXN0YWNrX2V4cHJcbiIKLSAgICAgICAgICAgICAgICJXaGljaCBpczogXCJ0
d28gbmVlZGxlc1wiIiwKLSAgICAgICAgICAgICAgIElzTm90U3Vic3RyaW5nKAotICAgICAgICAg
ICAgICAgICAgICJuZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKLSAgICAgICAgICAgICAg
ICAgICA6OnN0ZDo6c3RyaW5nKCJuZWVkbGUiKSwgInR3byBuZWVkbGVzIikuZmFpbHVyZV9tZXNz
YWdlKCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIFRlc3RzIHRoYXQg
SXNOb3RTdWJzdHJpbmcgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQK
LS8vIGFyZ3VtZW50IHR5cGUgaXMgOjpzdGQ6OndzdHJpbmcuCi1URVNUKElzTm90U3Vic3RyaW5n
VGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRGb3JTdGRXc3RyaW5nKSB7Ci0gIEVYUEVDVF9GQUxT
RSgKLSAgICAgIElzTm90U3Vic3RyaW5nKCIiLCAiIiwgOjpzdGQ6OndzdHJpbmcoTCJuZWVkbGUi
KSwgTCJ0d28gbmVlZGxlcyIpKTsKLSAgRVhQRUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIi
LCBMIm5lZWRsZSIsIDo6c3RkOjp3c3RyaW5nKEwiaGF5c3RhY2siKSkpOwotfQotCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0vLyBUZXN0cyBmbG9hdGluZy1wb2ludCBhc3Nl
cnRpb25zLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KLWNsYXNzIEZsb2F0aW5nUG9p
bnRUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8gUHJlLWNhbGN1bGF0ZWQg
bnVtYmVycyB0byBiZSB1c2VkIGJ5IHRoZSB0ZXN0cy4KLSAgc3RydWN0IFRlc3RWYWx1ZXMgewot
ICAgIFJhd1R5cGUgY2xvc2VfdG9fcG9zaXRpdmVfemVybzsKLSAgICBSYXdUeXBlIGNsb3NlX3Rv
X25lZ2F0aXZlX3plcm87Ci0gICAgUmF3VHlwZSBmdXJ0aGVyX2Zyb21fbmVnYXRpdmVfemVybzsK
LQotICAgIFJhd1R5cGUgY2xvc2VfdG9fb25lOwotICAgIFJhd1R5cGUgZnVydGhlcl9mcm9tX29u
ZTsKLQotICAgIFJhd1R5cGUgaW5maW5pdHk7Ci0gICAgUmF3VHlwZSBjbG9zZV90b19pbmZpbml0
eTsKLSAgICBSYXdUeXBlIGZ1cnRoZXJfZnJvbV9pbmZpbml0eTsKLQotICAgIFJhd1R5cGUgbmFu
MTsKLSAgICBSYXdUeXBlIG5hbjI7Ci0gIH07Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSB0ZXN0aW5n
OjppbnRlcm5hbDo6RmxvYXRpbmdQb2ludDxSYXdUeXBlPiBGbG9hdGluZzsKLSAgdHlwZWRlZiB0
eXBlbmFtZSBGbG9hdGluZzo6Qml0cyBCaXRzOwotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsK
LSAgICBjb25zdCBzaXplX3QgbWF4X3VscHMgPSBGbG9hdGluZzo6a01heFVscHM7Ci0KLSAgICAv
LyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCAwLjAuCi0gICAgY29uc3QgQml0cyB6ZXJvX2JpdHMg
PSBGbG9hdGluZygwKS5iaXRzKCk7Ci0KLSAgICAvLyBNYWtlcyBzb21lIG51bWJlcnMgY2xvc2Ug
dG8gMC4wLgotICAgIHZhbHVlc18uY2xvc2VfdG9fcG9zaXRpdmVfemVybyA9IEZsb2F0aW5nOjpS
ZWludGVycHJldEJpdHMoCi0gICAgICAgIHplcm9fYml0cyArIG1heF91bHBzLzIpOwotICAgIHZh
bHVlc18uY2xvc2VfdG9fbmVnYXRpdmVfemVybyA9IC1GbG9hdGluZzo6UmVpbnRlcnByZXRCaXRz
KAotICAgICAgICB6ZXJvX2JpdHMgKyBtYXhfdWxwcyAtIG1heF91bHBzLzIpOwotICAgIHZhbHVl
c18uZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm8gPSAtRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0
cygKLSAgICAgICAgemVyb19iaXRzICsgbWF4X3VscHMgKyAxIC0gbWF4X3VscHMvMik7Ci0KLSAg
ICAvLyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCAxLjAuCi0gICAgY29uc3QgQml0cyBvbmVfYml0
cyA9IEZsb2F0aW5nKDEpLmJpdHMoKTsKLQotICAgIC8vIE1ha2VzIHNvbWUgbnVtYmVycyBjbG9z
ZSB0byAxLjAuCi0gICAgdmFsdWVzXy5jbG9zZV90b19vbmUgPSBGbG9hdGluZzo6UmVpbnRlcnBy
ZXRCaXRzKG9uZV9iaXRzICsgbWF4X3VscHMpOwotICAgIHZhbHVlc18uZnVydGhlcl9mcm9tX29u
ZSA9IEZsb2F0aW5nOjpSZWludGVycHJldEJpdHMoCi0gICAgICAgIG9uZV9iaXRzICsgbWF4X3Vs
cHMgKyAxKTsKLQotICAgIC8vICtpbmZpbml0eS4KLSAgICB2YWx1ZXNfLmluZmluaXR5ID0gRmxv
YXRpbmc6OkluZmluaXR5KCk7Ci0KLSAgICAvLyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCAraW5m
aW5pdHkuCi0gICAgY29uc3QgQml0cyBpbmZpbml0eV9iaXRzID0gRmxvYXRpbmcodmFsdWVzXy5p
bmZpbml0eSkuYml0cygpOwotCi0gICAgLy8gTWFrZXMgc29tZSBudW1iZXJzIGNsb3NlIHRvIGlu
ZmluaXR5LgotICAgIHZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkgPSBGbG9hdGluZzo6UmVpbnRl
cnByZXRCaXRzKAotICAgICAgICBpbmZpbml0eV9iaXRzIC0gbWF4X3VscHMpOwotICAgIHZhbHVl
c18uZnVydGhlcl9mcm9tX2luZmluaXR5ID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cygKLSAg
ICAgICAgaW5maW5pdHlfYml0cyAtIG1heF91bHBzIC0gMSk7Ci0KLSAgICAvLyBNYWtlcyBzb21l
IE5BTidzLiAgU2V0cyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZyYWN0aW9uIHNv
IHRoYXQKLSAgICAvLyBvdXIgTmFOJ3MgYXJlIHF1aWV0OyB0cnlpbmcgdG8gcHJvY2VzcyBhIHNp
Z25hbGluZyBOYU4gd291bGQgcmFpc2UgYW4KLSAgICAvLyBleGNlcHRpb24gaWYgb3VyIGVudmly
b25tZW50IGVuYWJsZXMgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucy4KLSAgICB2YWx1ZXNfLm5h
bjEgPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKEZsb2F0aW5nOjprRXhwb25lbnRCaXRNYXNr
Ci0gICAgICAgIHwgKHN0YXRpY19jYXN0PEJpdHM+KDEpIDw8IChGbG9hdGluZzo6a0ZyYWN0aW9u
Qml0Q291bnQgLSAxKSkgfCAxKTsKLSAgICB2YWx1ZXNfLm5hbjIgPSBGbG9hdGluZzo6UmVpbnRl
cnByZXRCaXRzKEZsb2F0aW5nOjprRXhwb25lbnRCaXRNYXNrCi0gICAgICAgIHwgKHN0YXRpY19j
YXN0PEJpdHM+KDEpIDw8IChGbG9hdGluZzo6a0ZyYWN0aW9uQml0Q291bnQgLSAxKSkgfCAyMDAp
OwotICB9Ci0KLSAgdm9pZCBUZXN0U2l6ZSgpIHsKLSAgICBFWFBFQ1RfRVEoc2l6ZW9mKFJhd1R5
cGUpLCBzaXplb2YoQml0cykpOwotICB9Ci0KLSAgc3RhdGljIFRlc3RWYWx1ZXMgdmFsdWVzXzsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotdHlwZW5hbWUgRmxvYXRpbmdQb2lu
dFRlc3Q8UmF3VHlwZT46OlRlc3RWYWx1ZXMKLSAgICBGbG9hdGluZ1BvaW50VGVzdDxSYXdUeXBl
Pjo6dmFsdWVzXzsKLQotLy8gSW5zdGFudGlhdGVzIEZsb2F0aW5nUG9pbnRUZXN0IGZvciB0ZXN0
aW5nICpfRkxPQVRfRVEuCi10eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0PGZsb2F0PiBGbG9hdFRl
c3Q7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHNpemUgb2YgRmxvYXQ6OkJpdHMgbWF0Y2hlcyB0aGUg
c2l6ZSBvZiBmbG9hdC4KLVRFU1RfRihGbG9hdFRlc3QsIFNpemUpIHsKLSAgVGVzdFNpemUoKTsK
LX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHdpdGggKzAgYW5kIC0wLgotVEVTVF9GKEZsb2F0VGVz
dCwgWmVyb3MpIHsKLSAgRVhQRUNUX0ZMT0FUX0VRKDAuMCwgLTAuMCk7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSgtMC4wLCAxLjApLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiMS4wIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GTE9BVF9F
USgwLjAsIDEuNSksCi0gICAgICAgICAgICAgICAgICAgICAgICIxLjUiKTsKLX0KLQotLy8gVGVz
dHMgY29tcGFyaW5nIG51bWJlcnMgY2xvc2UgdG8gMC4KLS8vCi0vLyBUaGlzIGVuc3VyZXMgdGhh
dCAqX0ZMT0FUX0VRIGhhbmRsZXMgdGhlIHNpZ24gY29ycmVjdGx5IGFuZCBubwotLy8gb3ZlcmZs
b3cgb2NjdXJzIHdoZW4gY29tcGFyaW5nIG51bWJlcnMgd2hvc2UgYWJzb2x1dGUgdmFsdWUgaXMg
dmVyeQotLy8gc21hbGwuCi1URVNUX0YoRmxvYXRUZXN0LCBBbG1vc3RaZXJvcykgewotICAvLyBJ
biBDKytCdWlsZGVyLCBuYW1lcyB3aXRoaW4gbG9jYWwgY2xhc3NlcyAoc3VjaCBhcyB1c2VkIGJ5
Ci0gIC8vIEVYUEVDVF9GQVRBTF9GQUlMVVJFKSBjYW5ub3QgYmUgcmVzb2x2ZWQgYWdhaW5zdCBz
dGF0aWMgbWVtYmVycyBvZiB0aGUKLSAgLy8gc2NvcGluZyBjbGFzcy4gIFVzZSBhIHN0YXRpYyBs
b2NhbCBhbGlhcyBhcyBhIHdvcmthcm91bmQuCi0gIC8vIFdlIHVzZSB0aGUgYXNzaWdubWVudCBz
eW50YXggc2luY2Ugc29tZSBjb21waWxlcnMsIGxpa2UgU3VuIFN0dWRpbywKLSAgLy8gZG9uJ3Qg
YWxsb3cgaW5pdGlhbGl6aW5nIHJlZmVyZW5jZXMgdXNpbmcgY29uc3RydWN0aW9uIHN5bnRheAot
ICAvLyAocGFyZW50aGVzZXMpLgotICBzdGF0aWMgY29uc3QgRmxvYXRUZXN0OjpUZXN0VmFsdWVz
JiB2ID0gdGhpcy0+dmFsdWVzXzsKLQotICBFWFBFQ1RfRkxPQVRfRVEoMC4wLCB2LmNsb3NlX3Rv
X3Bvc2l0aXZlX3plcm8pOwotICBFWFBFQ1RfRkxPQVRfRVEoLTAuMCwgdi5jbG9zZV90b19uZWdh
dGl2ZV96ZXJvKTsKLSAgRVhQRUNUX0ZMT0FUX0VRKHYuY2xvc2VfdG9fcG9zaXRpdmVfemVybywg
di5jbG9zZV90b19uZWdhdGl2ZV96ZXJvKTsKLQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBBU1NFUlRfRkxPQVRfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvLAot
ICAgICAgICAgICAgICAgICAgICB2LmZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvKTsKLSAgfSwg
InYuZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm8iKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5n
IG51bWJlcnMgY2xvc2UgdG8gZWFjaCBvdGhlci4KLVRFU1RfRihGbG9hdFRlc3QsIFNtYWxsRGlm
ZikgewotICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCB2YWx1ZXNfLmNsb3NlX3RvX29uZSk7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uZnVydGhl
cl9mcm9tX29uZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXNfLmZ1cnRoZXJf
ZnJvbV9vbmUiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIG51bWJlcnMgZmFyIGFwYXJ0Lgot
VEVTVF9GKEZsb2F0VGVzdCwgTGFyZ2VEaWZmKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9GTE9BVF9FUSgyLjUsIDMuMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIz
LjAiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHdpdGggaW5maW5pdHkuCi0vLwotLy8gVGhp
cyBlbnN1cmVzIHRoYXQgbm8gb3ZlcmZsb3cgb2NjdXJzIHdoZW4gY29tcGFyaW5nIG51bWJlcnMg
d2hvc2UKLS8vIGFic29sdXRlIHZhbHVlIGlzIHZlcnkgbGFyZ2UuCi1URVNUX0YoRmxvYXRUZXN0
LCBJbmZpbml0eSkgewotICBFWFBFQ1RfRkxPQVRfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVz
Xy5jbG9zZV90b19pbmZpbml0eSk7Ci0gIEVYUEVDVF9GTE9BVF9FUSgtdmFsdWVzXy5pbmZpbml0
eSwgLXZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkpOwotI2lmICFHVEVTVF9PU19TWU1CSUFOCi0g
IC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkg
b3IgTmFOLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEodmFsdWVz
Xy5pbmZpbml0eSwgLXZhbHVlc18uaW5maW5pdHkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiLXZhbHVlc18uaW5maW5pdHkiKTsKLQotICAvLyBUaGlzIGlzIGludGVyZXN0aW5nIGFzIHRo
ZSByZXByZXNlbnRhdGlvbnMgb2YgaW5maW5pdHkgYW5kIG5hbjEKLSAgLy8gYXJlIG9ubHkgMSBE
TFAgYXBhcnQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSh2YWx1
ZXNfLmluZmluaXR5LCB2YWx1ZXNfLm5hbjEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
dmFsdWVzXy5uYW4xIik7Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCi19Ci0KLS8vIFRl
c3RzIHRoYXQgY29tcGFyaW5nIHdpdGggTkFOIGFsd2F5cyByZXR1cm5zIGZhbHNlLgotVEVTVF9G
KEZsb2F0VGVzdCwgTmFOKSB7Ci0jaWYgIUdURVNUX09TX1NZTUJJQU4KLS8vIE5va2lhJ3MgU1RM
cG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgotCi0gIC8v
IEluIEMrK0J1aWxkZXIsIG5hbWVzIHdpdGhpbiBsb2NhbCBjbGFzc2VzIChzdWNoIGFzIHVzZWQg
YnkKLSAgLy8gRVhQRUNUX0ZBVEFMX0ZBSUxVUkUpIGNhbm5vdCBiZSByZXNvbHZlZCBhZ2FpbnN0
IHN0YXRpYyBtZW1iZXJzIG9mIHRoZQotICAvLyBzY29waW5nIGNsYXNzLiAgVXNlIGEgc3RhdGlj
IGxvY2FsIGFsaWFzIGFzIGEgd29ya2Fyb3VuZC4KLSAgLy8gV2UgdXNlIHRoZSBhc3NpZ25tZW50
IHN5bnRheCBzaW5jZSBzb21lIGNvbXBpbGVycywgbGlrZSBTdW4gU3R1ZGlvLAotICAvLyBkb24n
dCBhbGxvdyBpbml0aWFsaXppbmcgcmVmZXJlbmNlcyB1c2luZyBjb25zdHJ1Y3Rpb24gc3ludGF4
Ci0gIC8vIChwYXJlbnRoZXNlcykuCi0gIHN0YXRpYyBjb25zdCBGbG9hdFRlc3Q6OlRlc3RWYWx1
ZXMmIHYgPSB0aGlzLT52YWx1ZXNfOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9GTE9BVF9FUSh2Lm5hbjEsIHYubmFuMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ2
Lm5hbjEiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZMT0FUX0VRKHYubmFu
MSwgdi5uYW4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInYubmFuMiIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEoMS4wLCB2Lm5hbjEpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAidi5uYW4xIik7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZMT0FUX0VRKHYubmFuMSwgdi5pbmZpbml0eSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICJ2LmluZmluaXR5Iik7Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCi19Ci0KLS8v
IFRlc3RzIHRoYXQgKl9GTE9BVF9FUSBhcmUgcmVmbGV4aXZlLgotVEVTVF9GKEZsb2F0VGVzdCwg
UmVmbGV4aXZlKSB7Ci0gIEVYUEVDVF9GTE9BVF9FUSgwLjAsIDAuMCk7Ci0gIEVYUEVDVF9GTE9B
VF9FUSgxLjAsIDEuMCk7Ci0gIEFTU0VSVF9GTE9BVF9FUSh2YWx1ZXNfLmluZmluaXR5LCB2YWx1
ZXNfLmluZmluaXR5KTsKLX0KLQotLy8gVGVzdHMgdGhhdCAqX0ZMT0FUX0VRIGFyZSBjb21tdXRh
dGl2ZS4KLVRFU1RfRihGbG9hdFRlc3QsIENvbW11dGF0aXZlKSB7Ci0gIC8vIFdlIGFscmVhZHkg
dGVzdGVkIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uY2xvc2VfdG9fb25lKS4KLSAgRVhQ
RUNUX0ZMT0FUX0VRKHZhbHVlc18uY2xvc2VfdG9fb25lLCAxLjApOwotCi0gIC8vIFdlIGFscmVh
ZHkgdGVzdGVkIEVYUEVDVF9GTE9BVF9FUSgxLjAsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSku
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSh2YWx1ZXNfLmZ1cnRo
ZXJfZnJvbV9vbmUsIDEuMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIxLjAiKTsKLX0K
LQotLy8gVGVzdHMgRVhQRUNUX05FQVIuCi1URVNUX0YoRmxvYXRUZXN0LCBFWFBFQ1RfTkVBUikg
ewotICBFWFBFQ1RfTkVBUigtMS4wZiwgLTEuMWYsIDAuMmYpOwotICBFWFBFQ1RfTkVBUigyLjBm
LCAzLjBmLCAxLjBmKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FQVIoMS4w
ZiwxLjVmLCAwLjI1ZiksICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRo
ZSBkaWZmZXJlbmNlIGJldHdlZW4gMS4wZiBhbmQgMS41ZiBpcyAwLjUsICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIndoaWNoIGV4Y2VlZHMgMC4yNWYiKTsKLSAgLy8gVG8gd29yayBhcm91
bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubwotICAvLyBz
cGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIGxpbmUuCi19Ci0KLS8v
IFRlc3RzIEFTU0VSVF9ORUFSLgotVEVTVF9GKEZsb2F0VGVzdCwgQVNTRVJUX05FQVIpIHsKLSAg
QVNTRVJUX05FQVIoLTEuMGYsIC0xLjFmLCAwLjJmKTsKLSAgQVNTRVJUX05FQVIoMi4wZiwgMy4w
ZiwgMS4wZik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORUFSKDEuMGYsMS41Ziwg
MC4yNWYpLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICJUaGUgZGlmZmVyZW5j
ZSBiZXR3ZWVuIDEuMGYgYW5kIDEuNWYgaXMgMC41LCAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICJ3aGljaCBleGNlZWRzIDAuMjVmIik7Ci0gIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdj
YyAyLjk1LjAsIHRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8KLSAgLy8gc3BhY2UgYWZ0ZXIgdGhl
IGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2aW91cyBsaW5lLgotfQotCi0vLyBUZXN0cyB0aGUgY2Fz
ZXMgd2hlcmUgRmxvYXRMRSgpIHNob3VsZCBzdWNjZWVkLgotVEVTVF9GKEZsb2F0VGVzdCwgRmxv
YXRMRVN1Y2NlZWRzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoRmxvYXRMRSwgMS4wZiwgMi4w
Zik7ICAvLyBXaGVuIHZhbDEgPCB2YWwyLAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKEZsb2F0TEUs
IDEuMGYsIDEuMGYpOyAgLy8gdmFsMSA9PSB2YWwyLAotCi0gIC8vIG9yIHdoZW4gdmFsMSBpcyBn
cmVhdGVyIHRoYW4sIGJ1dCBhbG1vc3QgZXF1YWxzIHRvLCB2YWwyLgotICBFWFBFQ1RfUFJFRF9G
T1JNQVQyKEZsb2F0TEUsIHZhbHVlc18uY2xvc2VfdG9fcG9zaXRpdmVfemVybywgMC4wZik7Ci19
Ci0KLS8vIFRlc3RzIHRoZSBjYXNlcyB3aGVyZSBGbG9hdExFKCkgc2hvdWxkIGZhaWwuCi1URVNU
X0YoRmxvYXRUZXN0LCBGbG9hdExFRmFpbHMpIHsKLSAgLy8gV2hlbiB2YWwxIGlzIGdyZWF0ZXIg
dGhhbiB2YWwyIGJ5IGEgbGFyZ2UgbWFyZ2luLAotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfUFJFRF9GT1JNQVQyKEZsb2F0TEUsIDIuMGYsIDEuMGYpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiKDIuMGYpIDw9ICgxLjBmKSIpOwotCi0gIC8vIG9yIGJ5IGEgc21hbGwgeWV0
IG5vbi1uZWdsaWdpYmxlIG1hcmdpbiwKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8g
Tk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLmZ1cnRoZXJf
ZnJvbV9vbmUsIDEuMGYpOwotICB9LCAiKHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSkgPD0gKDEu
MGYpIik7Ci0KLSNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18p
Ci0gIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5p
dHkgb3IgTmFOLgotICAvLyBDKytCdWlsZGVyIGdpdmVzIGJhZCByZXN1bHRzIGZvciBvcmRlcmVk
IGNvbXBhcmlzb25zIGludm9sdmluZyBOYU5zCi0gIC8vIGR1ZSB0byBjb21waWxlciBidWdzLgot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9G
T1JNQVQyKEZsb2F0TEUsIHZhbHVlc18ubmFuMSwgdmFsdWVzXy5pbmZpbml0eSk7Ci0gIH0sICIo
dmFsdWVzXy5uYW4xKSA8PSAodmFsdWVzXy5pbmZpbml0eSkiKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCAt
dmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5uYW4xKTsKLSAgfSwgIigtdmFsdWVzXy5pbmZpbml0
eSkgPD0gKHZhbHVlc18ubmFuMSkiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLm5hbjEsIHZhbHVl
c18ubmFuMSk7Ci0gIH0sICIodmFsdWVzXy5uYW4xKSA8PSAodmFsdWVzXy5uYW4xKSIpOwotI2Vu
ZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTiAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi19Ci0K
LS8vIEluc3RhbnRpYXRlcyBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyAqX0RPVUJMRV9F
US4KLXR5cGVkZWYgRmxvYXRpbmdQb2ludFRlc3Q8ZG91YmxlPiBEb3VibGVUZXN0OwotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBzaXplIG9mIERvdWJsZTo6Qml0cyBtYXRjaGVzIHRoZSBzaXplIG9mIGRv
dWJsZS4KLVRFU1RfRihEb3VibGVUZXN0LCBTaXplKSB7Ci0gIFRlc3RTaXplKCk7Ci19Ci0KLS8v
IFRlc3RzIGNvbXBhcmluZyB3aXRoICswIGFuZCAtMC4KLVRFU1RfRihEb3VibGVUZXN0LCBaZXJv
cykgewotICBFWFBFQ1RfRE9VQkxFX0VRKDAuMCwgLTAuMCk7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoLTAuMCwgMS4wKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjEuMCIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRE9VQkxFX0VRKDAu
MCwgMS4wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIjEuMCIpOwotfQotCi0vLyBUZXN0cyBj
b21wYXJpbmcgbnVtYmVycyBjbG9zZSB0byAwLgotLy8KLS8vIFRoaXMgZW5zdXJlcyB0aGF0ICpf
RE9VQkxFX0VRIGhhbmRsZXMgdGhlIHNpZ24gY29ycmVjdGx5IGFuZCBubwotLy8gb3ZlcmZsb3cg
b2NjdXJzIHdoZW4gY29tcGFyaW5nIG51bWJlcnMgd2hvc2UgYWJzb2x1dGUgdmFsdWUgaXMgdmVy
eQotLy8gc21hbGwuCi1URVNUX0YoRG91YmxlVGVzdCwgQWxtb3N0WmVyb3MpIHsKLSAgLy8gSW4g
QysrQnVpbGRlciwgbmFtZXMgd2l0aGluIGxvY2FsIGNsYXNzZXMgKHN1Y2ggYXMgdXNlZCBieQot
ICAvLyBFWFBFQ1RfRkFUQUxfRkFJTFVSRSkgY2Fubm90IGJlIHJlc29sdmVkIGFnYWluc3Qgc3Rh
dGljIG1lbWJlcnMgb2YgdGhlCi0gIC8vIHNjb3BpbmcgY2xhc3MuICBVc2UgYSBzdGF0aWMgbG9j
YWwgYWxpYXMgYXMgYSB3b3JrYXJvdW5kLgotICAvLyBXZSB1c2UgdGhlIGFzc2lnbm1lbnQgc3lu
dGF4IHNpbmNlIHNvbWUgY29tcGlsZXJzLCBsaWtlIFN1biBTdHVkaW8sCi0gIC8vIGRvbid0IGFs
bG93IGluaXRpYWxpemluZyByZWZlcmVuY2VzIHVzaW5nIGNvbnN0cnVjdGlvbiBzeW50YXgKLSAg
Ly8gKHBhcmVudGhlc2VzKS4KLSAgc3RhdGljIGNvbnN0IERvdWJsZVRlc3Q6OlRlc3RWYWx1ZXMm
IHYgPSB0aGlzLT52YWx1ZXNfOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCB2LmNsb3NlX3Rv
X3Bvc2l0aXZlX3plcm8pOwotICBFWFBFQ1RfRE9VQkxFX0VRKC0wLjAsIHYuY2xvc2VfdG9fbmVn
YXRpdmVfemVybyk7Ci0gIEVYUEVDVF9ET1VCTEVfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJv
LCB2LmNsb3NlX3RvX25lZ2F0aXZlX3plcm8pOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEFTU0VSVF9ET1VCTEVfRVEodi5jbG9zZV90b19wb3NpdGl2ZV96ZXJv
LAotICAgICAgICAgICAgICAgICAgICAgdi5mdXJ0aGVyX2Zyb21fbmVnYXRpdmVfemVybyk7Ci0g
IH0sICJ2LmZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvIik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBh
cmluZyBudW1iZXJzIGNsb3NlIHRvIGVhY2ggb3RoZXIuCi1URVNUX0YoRG91YmxlVGVzdCwgU21h
bGxEaWZmKSB7Ci0gIEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2YWx1ZXNfLmNsb3NlX3RvX29uZSk7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2YWx1ZXNf
LmZ1cnRoZXJfZnJvbV9vbmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzXy5m
dXJ0aGVyX2Zyb21fb25lIik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBudW1iZXJzIGZhciBh
cGFydC4KLVRFU1RfRihEb3VibGVUZXN0LCBMYXJnZURpZmYpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSgyLjAsIDMuMCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICIzLjAiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIHdpdGggaW5maW5pdHkuCi0v
LwotLy8gVGhpcyBlbnN1cmVzIHRoYXQgbm8gb3ZlcmZsb3cgb2NjdXJzIHdoZW4gY29tcGFyaW5n
IG51bWJlcnMgd2hvc2UKLS8vIGFic29sdXRlIHZhbHVlIGlzIHZlcnkgbGFyZ2UuCi1URVNUX0Yo
RG91YmxlVGVzdCwgSW5maW5pdHkpIHsKLSAgRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZXNfLmluZmlu
aXR5LCB2YWx1ZXNfLmNsb3NlX3RvX2luZmluaXR5KTsKLSAgRVhQRUNUX0RPVUJMRV9FUSgtdmFs
dWVzXy5pbmZpbml0eSwgLXZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkpOwotI2lmICFHVEVTVF9P
U19TWU1CSUFOCi0gIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRw
dXQgaW5maW5pdHkgb3IgTmFOLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9V
QkxFX0VRKHZhbHVlc18uaW5maW5pdHksIC12YWx1ZXNfLmluZmluaXR5KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi12YWx1ZXNfLmluZmluaXR5Iik7Ci0KLSAgLy8gVGhpcyBpcyBpbnRl
cmVzdGluZyBhcyB0aGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5XyBhbmQgbmFuMV8KLSAg
Ly8gYXJlIG9ubHkgMSBETFAgYXBhcnQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9ET1VCTEVfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5uYW4xKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgInZhbHVlc18ubmFuMSIpOwotI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lN
QklBTgotfQotCi0vLyBUZXN0cyB0aGF0IGNvbXBhcmluZyB3aXRoIE5BTiBhbHdheXMgcmV0dXJu
cyBmYWxzZS4KLVRFU1RfRihEb3VibGVUZXN0LCBOYU4pIHsKLSNpZiAhR1RFU1RfT1NfU1lNQklB
TgotICAvLyBJbiBDKytCdWlsZGVyLCBuYW1lcyB3aXRoaW4gbG9jYWwgY2xhc3NlcyAoc3VjaCBh
cyB1c2VkIGJ5Ci0gIC8vIEVYUEVDVF9GQVRBTF9GQUlMVVJFKSBjYW5ub3QgYmUgcmVzb2x2ZWQg
YWdhaW5zdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUKLSAgLy8gc2NvcGluZyBjbGFzcy4gIFVzZSBh
IHN0YXRpYyBsb2NhbCBhbGlhcyBhcyBhIHdvcmthcm91bmQuCi0gIC8vIFdlIHVzZSB0aGUgYXNz
aWdubWVudCBzeW50YXggc2luY2Ugc29tZSBjb21waWxlcnMsIGxpa2UgU3VuIFN0dWRpbywKLSAg
Ly8gZG9uJ3QgYWxsb3cgaW5pdGlhbGl6aW5nIHJlZmVyZW5jZXMgdXNpbmcgY29uc3RydWN0aW9u
IHN5bnRheAotICAvLyAocGFyZW50aGVzZXMpLgotICBzdGF0aWMgY29uc3QgRG91YmxlVGVzdDo6
VGVzdFZhbHVlcyYgdiA9IHRoaXMtPnZhbHVlc187Ci0KLSAgLy8gTm9raWEncyBTVExwb3J0IGNy
YXNoZXMgaWYgd2UgdHJ5IHRvIG91dHB1dCBpbmZpbml0eSBvciBOYU4uCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEodi5uYW4xLCB2Lm5hbjEpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAidi5uYW4xIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9ET1VCTEVfRVEodi5uYW4xLCB2Lm5hbjIpLCAidi5uYW4yIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2Lm5hbjEpLCAidi5uYW4xIik7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ET1VCTEVfRVEodi5uYW4xLCB2LmluZmluaXR5
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgInYuaW5maW5pdHkiKTsKLSNlbmRpZiAgLy8gIUdU
RVNUX09TX1NZTUJJQU4KLX0KLQotLy8gVGVzdHMgdGhhdCAqX0RPVUJMRV9FUSBhcmUgcmVmbGV4
aXZlLgotVEVTVF9GKERvdWJsZVRlc3QsIFJlZmxleGl2ZSkgewotICBFWFBFQ1RfRE9VQkxFX0VR
KDAuMCwgMC4wKTsKLSAgRVhQRUNUX0RPVUJMRV9FUSgxLjAsIDEuMCk7Ci0jaWYgIUdURVNUX09T
X1NZTUJJQU4KLSAgLy8gTm9raWEncyBTVExwb3J0IGNyYXNoZXMgaWYgd2UgdHJ5IHRvIG91dHB1
dCBpbmZpbml0eSBvciBOYU4uCi0gIEFTU0VSVF9ET1VCTEVfRVEodmFsdWVzXy5pbmZpbml0eSwg
dmFsdWVzXy5pbmZpbml0eSk7Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCi19Ci0KLS8v
IFRlc3RzIHRoYXQgKl9ET1VCTEVfRVEgYXJlIGNvbW11dGF0aXZlLgotVEVTVF9GKERvdWJsZVRl
c3QsIENvbW11dGF0aXZlKSB7Ci0gIC8vIFdlIGFscmVhZHkgdGVzdGVkIEVYUEVDVF9ET1VCTEVf
RVEoMS4wLCB2YWx1ZXNfLmNsb3NlX3RvX29uZSkuCi0gIEVYUEVDVF9ET1VCTEVfRVEodmFsdWVz
Xy5jbG9zZV90b19vbmUsIDEuMCk7Ci0KLSAgLy8gV2UgYWxyZWFkeSB0ZXN0ZWQgRVhQRUNUX0RP
VUJMRV9FUSgxLjAsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSkuCi0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEodmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lLCAxLjAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiMS4wIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVD
VF9ORUFSLgotVEVTVF9GKERvdWJsZVRlc3QsIEVYUEVDVF9ORUFSKSB7Ci0gIEVYUEVDVF9ORUFS
KC0xLjAsIC0xLjEsIDAuMik7Ci0gIEVYUEVDVF9ORUFSKDIuMCwgMy4wLCAxLjApOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkVBUigxLjAsIDEuNSwgMC4yNSksICAvLyBOT0xJ
TlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gMS4w
IGFuZCAxLjUgaXMgMC41LCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCBleGNl
ZWRzIDAuMjUiKTsKLSAgLy8gVG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIuOTUuMCwgdGhl
cmUgaXMgaW50ZW50aW9uYWxseSBubwotICAvLyBzcGFjZSBhZnRlciB0aGUgZmlyc3QgY29tbWEg
aW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KLX0KLQotLy8gVGVzdHMgQVNTRVJUX05FQVIuCi1U
RVNUX0YoRG91YmxlVGVzdCwgQVNTRVJUX05FQVIpIHsKLSAgQVNTRVJUX05FQVIoLTEuMCwgLTEu
MSwgMC4yKTsKLSAgQVNTRVJUX05FQVIoMi4wLCAzLjAsIDEuMCk7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9ORUFSKDEuMCwgMS41LCAwLjI1KSwgIC8vIE5PTElOVAotICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAxLjAgYW5kIDEuNSBpcyAwLjUs
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIndoaWNoIGV4Y2VlZHMgMC4yNSIpOwotICAvLyBU
byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBnY2MgMi45NS4wLCB0aGVyZSBpcyBpbnRlbnRpb25hbGx5
IG5vCi0gIC8vIHNwYWNlIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgcHJldmlvdXMgc3Rh
dGVtZW50LgotfQotCi0vLyBUZXN0cyB0aGUgY2FzZXMgd2hlcmUgRG91YmxlTEUoKSBzaG91bGQg
c3VjY2VlZC4KLVRFU1RfRihEb3VibGVUZXN0LCBEb3VibGVMRVN1Y2NlZWRzKSB7Ci0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIDEuMCwgMi4wKTsgIC8vIFdoZW4gdmFsMSA8IHZhbDIs
Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIDEuMCwgMS4wKTsgIC8vIHZhbDEgPT0g
dmFsMiwKLQotICAvLyBvciB3aGVuIHZhbDEgaXMgZ3JlYXRlciB0aGFuLCBidXQgYWxtb3N0IGVx
dWFscyB0bywgdmFsMi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMihEb3VibGVMRSwgdmFsdWVzXy5j
bG9zZV90b19wb3NpdGl2ZV96ZXJvLCAwLjApOwotfQotCi0vLyBUZXN0cyB0aGUgY2FzZXMgd2hl
cmUgRG91YmxlTEUoKSBzaG91bGQgZmFpbC4KLVRFU1RfRihEb3VibGVUZXN0LCBEb3VibGVMRUZh
aWxzKSB7Ci0gIC8vIFdoZW4gdmFsMSBpcyBncmVhdGVyIHRoYW4gdmFsMiBieSBhIGxhcmdlIG1h
cmdpbiwKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1BSRURfRk9STUFUMihEb3Vi
bGVMRSwgMi4wLCAxLjApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIuMCkgPD0gKDEu
MCkiKTsKLQotICAvLyBvciBieSBhIHNtYWxsIHlldCBub24tbmVnbGlnaWJsZSBtYXJnaW4sCi0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoRG91YmxlTEUsIHZhbHVlc18uZnVydGhlcl9mcm9tX29uZSwgMS4wKTsKLSAgfSwgIih2
YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUpIDw9ICgxLjApIik7Ci0KLSNpZiAhR1RFU1RfT1NfU1lN
QklBTiAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0gIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFz
aGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgotICAvLyBDKytCdWlsZGVy
IGdpdmVzIGJhZCByZXN1bHRzIGZvciBvcmRlcmVkIGNvbXBhcmlzb25zIGludm9sdmluZyBOYU5z
Ci0gIC8vIGR1ZSB0byBjb21waWxlciBidWdzLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKERvdWJsZUxFLCB2YWx1ZXNfLm5h
bjEsIHZhbHVlc18uaW5maW5pdHkpOwotICB9LCAiKHZhbHVlc18ubmFuMSkgPD0gKHZhbHVlc18u
aW5maW5pdHkpIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEVYUEVDVF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIC12YWx1ZXNfLmluZmluaXR5LCB2YWx1ZXNf
Lm5hbjEpOwotICB9LCAiICgtdmFsdWVzXy5pbmZpbml0eSkgPD0gKHZhbHVlc18ubmFuMSkiKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9S
TUFUMihEb3VibGVMRSwgdmFsdWVzXy5uYW4xLCB2YWx1ZXNfLm5hbjEpOwotICB9LCAiKHZhbHVl
c18ubmFuMSkgPD0gKHZhbHVlc18ubmFuMSkiKTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJ
QU4gJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotfQotCi0KLS8vIFZlcmlmaWVzIHRoYXQgYSB0
ZXN0IG9yIHRlc3QgY2FzZSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIERJU0FCTEVEXyBpcwotLy8g
bm90IHJ1bi4KLQotLy8gQSB0ZXN0IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggRElTQUJMRURfLgot
Ly8gU2hvdWxkIG5vdCBydW4uCi1URVNUKERpc2FibGVkVGVzdCwgRElTQUJMRURfVGVzdFNob3Vs
ZE5vdFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJsZWQgdGVz
dCBzaG91bGQgbm90IGJlIHJ1bi4iOwotfQotCi0vLyBBIHRlc3Qgd2hvc2UgbmFtZSBkb2VzIG5v
dCBzdGFydCB3aXRoIERJU0FCTEVEXy4KLS8vIFNob3VsZCBydW4uCi1URVNUKERpc2FibGVkVGVz
dCwgTm90RElTQUJMRURfVGVzdFNob3VsZFJ1bikgewotICBFWFBFQ1RfRVEoMSwgMSk7Ci19Ci0K
LS8vIEEgdGVzdCBjYXNlIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggRElTQUJMRURfLgotLy8gU2hv
dWxkIG5vdCBydW4uCi1URVNUKERJU0FCTEVEX1Rlc3RDYXNlLCBUZXN0U2hvdWxkTm90UnVuKSB7
Ci0gIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBUZXN0IGluIGRpc2FibGVkIHRlc3Qg
Y2FzZSBzaG91bGQgbm90IGJlIHJ1bi4iOwotfQotCi0vLyBBIHRlc3QgY2FzZSBhbmQgdGVzdCB3
aG9zZSBuYW1lcyBzdGFydCB3aXRoIERJU0FCTEVEXy4KLS8vIFNob3VsZCBub3QgcnVuLgotVEVT
VChESVNBQkxFRF9UZXN0Q2FzZSwgRElTQUJMRURfVGVzdFNob3VsZE5vdFJ1bikgewotICBGQUlM
KCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogVGVzdCBpbiBkaXNhYmxlZCB0ZXN0IGNhc2Ugc2hv
dWxkIG5vdCBiZSBydW4uIjsKLX0KLQotLy8gQ2hlY2sgdGhhdCB3aGVuIGFsbCB0ZXN0cyBpbiBh
IHRlc3QgY2FzZSBhcmUgZGlzYWJsZWQsIFNldHVwVGVzdENhc2UoKSBhbmQKLS8vIFRlYXJEb3du
VGVzdENhc2UoKSBhcmUgbm90IGNhbGxlZC4KLWNsYXNzIERpc2FibGVkVGVzdHNUZXN0IDogcHVi
bGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsK
LSAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogQWxsIHRlc3RzIGRpc2FibGVkIGlu
IHRlc3QgY2FzZS4gIgotICAgICAgICAgICAgICAiU2V0dXBUZXN0Q2FzZSgpIHNob3VsZCBub3Qg
YmUgY2FsbGVkLiI7Ci0gIH0KLQotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewot
ICAgIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBBbGwgdGVzdHMgZGlzYWJsZWQgaW4g
dGVzdCBjYXNlLiAiCi0gICAgICAgICAgICAgICJUZWFyRG93blRlc3RDYXNlKCkgc2hvdWxkIG5v
dCBiZSBjYWxsZWQuIjsKLSAgfQotfTsKLQotVEVTVF9GKERpc2FibGVkVGVzdHNUZXN0LCBESVNB
QkxFRF9UZXN0U2hvdWxkTm90UnVuXzEpIHsKLSAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1
cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4uIjsKLX0KLQotVEVTVF9GKERpc2Fi
bGVkVGVzdHNUZXN0LCBESVNBQkxFRF9UZXN0U2hvdWxkTm90UnVuXzIpIHsKLSAgRkFJTCgpIDw8
ICJVbmV4cGVjdGVkIGZhaWx1cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4uIjsK
LX0KLQotLy8gVGVzdHMgdGhhdCBkaXNhYmxlZCB0eXBlZCB0ZXN0cyBhcmVuJ3QgcnVuLgotCi0j
aWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBU
eXBlZFRlc3QgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGlu
dCwgZG91YmxlPiBOdW1lcmljVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoVHlwZWRUZXN0LCBOdW1l
cmljVHlwZXMpOwotCi1UWVBFRF9URVNUKFR5cGVkVGVzdCwgRElTQUJMRURfU2hvdWxkTm90UnVu
KSB7Ci0gIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBEaXNhYmxlZCB0eXBlZCB0ZXN0
IHNob3VsZCBub3QgcnVuLiI7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRElT
QUJMRURfVHlwZWRUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQotVFlQRURfVEVTVF9DQVNFKERJ
U0FCTEVEX1R5cGVkVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQotVFlQRURfVEVTVChESVNBQkxFRF9U
eXBlZFRlc3QsIFNob3VsZE5vdFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVy
ZTogRGlzYWJsZWQgdHlwZWQgdGVzdCBzaG91bGQgbm90IHJ1bi4iOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFRlc3RzIHRoYXQgZGlzYWJsZWQgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIGFyZW4ndCBydW4uCi0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9Q
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyBUZXN0
IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1Ao
VHlwZWRUZXN0UCwgRElTQUJMRURfU2hvdWxkTm90UnVuKSB7Ci0gIEZBSUwoKSA8PCAiVW5leHBl
Y3RlZCBmYWlsdXJlOiAiCi0gICAgICAgICA8PCAiRGlzYWJsZWQgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3Qgc2hvdWxkIG5vdCBydW4uIjsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
VHlwZWRUZXN0UCwgRElTQUJMRURfU2hvdWxkTm90UnVuKTsKLQotSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIFR5cGVkVGVzdFAsIE51bWVyaWNUeXBlcyk7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgRElTQUJMRURfVHlwZWRUZXN0UCA6IHB1YmxpYyBUZXN0IHsKLX07
Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKERJU0FCTEVEX1R5cGVkVGVzdFApOwotCi1UWVBFRF9URVNU
X1AoRElTQUJMRURfVHlwZWRUZXN0UCwgU2hvdWxkTm90UnVuKSB7Ci0gIEZBSUwoKSA8PCAiVW5l
eHBlY3RlZCBmYWlsdXJlOiAiCi0gICAgICAgICA8PCAiRGlzYWJsZWQgdHlwZS1wYXJhbWV0ZXJp
emVkIHRlc3Qgc2hvdWxkIG5vdCBydW4uIjsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoRElTQUJMRURfVHlwZWRUZXN0UCwgU2hvdWxkTm90UnVuKTsKLQotSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoTXksIERJU0FCTEVEX1R5cGVkVGVzdFAsIE51bWVyaWNUeXBlcyk7Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0vLyBUZXN0cyB0aGF0IGFzc2Vy
dGlvbiBtYWNyb3MgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIGV4YWN0bHkgb25jZS4KLQotY2xh
c3MgU2luZ2xlRXZhbHVhdGlvblRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOiAgLy8gTXVz
dCBiZSBwdWJsaWMgYW5kIG5vdCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4K
LSAgLy8gVGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgbmVlZGVkIGJ5IHRoZSBGYWlsZWRBU1NFUlRf
U1RSRVEgdGVzdAotICAvLyBiZWxvdy4gIEl0J3MgcHVibGljIHRvIHdvcmsgYXJvdW5kIEMrK0J1
aWxkZXIncyBidWcgd2l0aCBzY29waW5nIGxvY2FsCi0gIC8vIGNsYXNzZXMuCi0gIHN0YXRpYyB2
b2lkIENvbXBhcmVBbmRJbmNyZW1lbnRDaGFyUHRycygpIHsKLSAgICBBU1NFUlRfU1RSRVEocDFf
KyssIHAyXysrKTsKLSAgfQotCi0gIC8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIG5lZWRlZCBi
eSB0aGUgRmFpbGVkQVNTRVJUX05FIHRlc3QgYmVsb3cuICBJdCdzCi0gIC8vIHB1YmxpYyB0byB3
b3JrIGFyb3VuZCBDKytCdWlsZGVyJ3MgYnVnIHdpdGggc2NvcGluZyBsb2NhbCBjbGFzc2VzLgot
ICBzdGF0aWMgdm9pZCBDb21wYXJlQW5kSW5jcmVtZW50SW50cygpIHsKLSAgICBBU1NFUlRfTkUo
YV8rKywgYl8rKyk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgU2luZ2xlRXZhbHVhdGlvblRlc3Qo
KSB7Ci0gICAgcDFfID0gczFfOwotICAgIHAyXyA9IHMyXzsKLSAgICBhXyA9IDA7Ci0gICAgYl8g
PSAwOwotICB9Ci0KLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHMxXzsKLSAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHMyXzsKLSAgc3RhdGljIGNvbnN0IGNoYXIqIHAxXzsKLSAgc3RhdGlj
IGNvbnN0IGNoYXIqIHAyXzsKLQotICBzdGF0aWMgaW50IGFfOwotICBzdGF0aWMgaW50IGJfOwot
fTsKLQotY29uc3QgY2hhciogY29uc3QgU2luZ2xlRXZhbHVhdGlvblRlc3Q6OnMxXyA9ICIwMTIz
NCI7Ci1jb25zdCBjaGFyKiBjb25zdCBTaW5nbGVFdmFsdWF0aW9uVGVzdDo6czJfID0gImFiY2Rl
IjsKLWNvbnN0IGNoYXIqIFNpbmdsZUV2YWx1YXRpb25UZXN0OjpwMV87Ci1jb25zdCBjaGFyKiBT
aW5nbGVFdmFsdWF0aW9uVGVzdDo6cDJfOwotaW50IFNpbmdsZUV2YWx1YXRpb25UZXN0OjphXzsK
LWludCBTaW5nbGVFdmFsdWF0aW9uVGVzdDo6Yl87Ci0KLS8vIFRlc3RzIHRoYXQgd2hlbiBBU1NF
UlRfU1RSRVEgZmFpbHMsIGl0IGV2YWx1YXRlcyBpdHMgYXJndW1lbnRzCi0vLyBleGFjdGx5IG9u
Y2UuCi1URVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEZhaWxlZEFTU0VSVF9TVFJFUSkgewot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShTaW5nbGVFdmFsdWF0aW9uVGVzdDo6Q29tcGFyZUFuZElu
Y3JlbWVudENoYXJQdHJzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICJwMl8rKyIpOwotICBF
WFBFQ1RfRVEoczFfICsgMSwgcDFfKTsKLSAgRVhQRUNUX0VRKHMyXyArIDEsIHAyXyk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgc3RyaW5nIGFzc2VydGlvbiBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBl
eGFjdGx5IG9uY2UuCi1URVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEFTU0VSVF9TVFIpIHsK
LSAgLy8gc3VjY2Vzc2Z1bCBFWFBFQ1RfU1RSTkUKLSAgRVhQRUNUX1NUUk5FKHAxXysrLCBwMl8r
Kyk7Ci0gIEVYUEVDVF9FUShzMV8gKyAxLCBwMV8pOwotICBFWFBFQ1RfRVEoczJfICsgMSwgcDJf
KTsKLQotICAvLyBmYWlsZWQgRVhQRUNUX1NUUkNBU0VFUQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfU1RSQ0FTRUVRKHAxXysrLCBwMl8rKyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJJZ25vcmluZyBjYXNlIik7Ci0gIEVYUEVDVF9FUShzMV8gKyAyLCBwMV8pOwotICBF
WFBFQ1RfRVEoczJfICsgMiwgcDJfKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVuIEFTU0VSVF9O
RSBmYWlscywgaXQgZXZhbHVhdGVzIGl0cyBhcmd1bWVudHMgZXhhY3RseQotLy8gb25jZS4KLVRF
U1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgRmFpbGVkQVNTRVJUX05FKSB7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKFNpbmdsZUV2YWx1YXRpb25UZXN0OjpDb21wYXJlQW5kSW5jcmVtZW50SW50
cygpLAotICAgICAgICAgICAgICAgICAgICAgICAiKGFfKyspICE9IChiXysrKSIpOwotICBFWFBF
Q1RfRVEoMSwgYV8pOwotICBFWFBFQ1RfRVEoMSwgYl8pOwotfQotCi0vLyBUZXN0cyB0aGF0IGFz
c2VydGlvbiBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi1URVNUX0YoU2lu
Z2xlRXZhbHVhdGlvblRlc3QsIE90aGVyQ2FzZXMpIHsKLSAgLy8gc3VjY2Vzc2Z1bCBFWFBFQ1Rf
VFJVRQotICBFWFBFQ1RfVFJVRSgwID09IGFfKyspOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSgx
LCBhXyk7Ci0KLSAgLy8gZmFpbGVkIEVYUEVDVF9UUlVFCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9UUlVFKC0xID09IGFfKyspLCAiLTEgPT0gYV8rKyIpOwotICBFWFBFQ1RfRVEo
MiwgYV8pOwotCi0gIC8vIHN1Y2Nlc3NmdWwgRVhQRUNUX0dUCi0gIEVYUEVDVF9HVChhXysrLCBi
XysrKTsKLSAgRVhQRUNUX0VRKDMsIGFfKTsKLSAgRVhQRUNUX0VRKDEsIGJfKTsKLQotICAvLyBm
YWlsZWQgRVhQRUNUX0xUCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVChhXysr
LCBiXysrKSwgIihhXysrKSA8IChiXysrKSIpOwotICBFWFBFQ1RfRVEoNCwgYV8pOwotICBFWFBF
Q1RfRVEoMiwgYl8pOwotCi0gIC8vIHN1Y2Nlc3NmdWwgQVNTRVJUX1RSVUUKLSAgQVNTRVJUX1RS
VUUoMCA8IGFfKyspOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSg1LCBhXyk7Ci0KLSAgLy8gc3Vj
Y2Vzc2Z1bCBBU1NFUlRfR1QKLSAgQVNTRVJUX0dUKGFfKyssIGJfKyspOwotICBFWFBFQ1RfRVEo
NiwgYV8pOwotICBFWFBFQ1RfRVEoMywgYl8pOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKLQotdm9pZCBUaHJvd0FuSW50ZWdlcigpIHsKLSAgdGhyb3cgMTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBhc3NlcnRpb24gYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgotVEVT
VF9GKFNpbmdsZUV2YWx1YXRpb25UZXN0LCBFeGNlcHRpb25UZXN0cykgewotICAvLyBzdWNjZXNz
ZnVsIEVYUEVDVF9USFJPVwotICBFWFBFQ1RfVEhST1coeyAgLy8gTk9MSU5UCi0gICAgYV8rKzsK
LSAgICBUaHJvd0FuSW50ZWdlcigpOwotICB9LCBpbnQpOwotICBFWFBFQ1RfRVEoMSwgYV8pOwot
Ci0gIC8vIGZhaWxlZCBFWFBFQ1RfVEhST1csIHRocm93cyBkaWZmZXJlbnQKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIUk9XKHsgIC8vIE5PTElOVAotICAgIGFfKys7Ci0gICAg
VGhyb3dBbkludGVnZXIoKTsKLSAgfSwgYm9vbCksICJ0aHJvd3MgYSBkaWZmZXJlbnQgdHlwZSIp
OwotICBFWFBFQ1RfRVEoMiwgYV8pOwotCi0gIC8vIGZhaWxlZCBFWFBFQ1RfVEhST1csIHRocm93
cyBub3RoaW5nCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyhhXysrLCBi
b29sKSwgInRocm93cyBub3RoaW5nIik7Ci0gIEVYUEVDVF9FUSgzLCBhXyk7Ci0KLSAgLy8gc3Vj
Y2Vzc2Z1bCBFWFBFQ1RfTk9fVEhST1cKLSAgRVhQRUNUX05PX1RIUk9XKGFfKyspOwotICBFWFBF
Q1RfRVEoNCwgYV8pOwotCi0gIC8vIGZhaWxlZCBFWFBFQ1RfTk9fVEhST1cKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05PX1RIUk9XKHsgIC8vIE5PTElOVAotICAgIGFfKys7Ci0g
ICAgVGhyb3dBbkludGVnZXIoKTsKLSAgfSksICJpdCB0aHJvd3MiKTsKLSAgRVhQRUNUX0VRKDUs
IGFfKTsKLQotICAvLyBzdWNjZXNzZnVsIEVYUEVDVF9BTllfVEhST1cKLSAgRVhQRUNUX0FOWV9U
SFJPVyh7ICAvLyBOT0xJTlQKLSAgICBhXysrOwotICAgIFRocm93QW5JbnRlZ2VyKCk7Ci0gIH0p
OwotICBFWFBFQ1RfRVEoNiwgYV8pOwotCi0gIC8vIGZhaWxlZCBFWFBFQ1RfQU5ZX1RIUk9XCi0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9BTllfVEhST1coYV8rKyksICJpdCBkb2Vz
bid0Iik7Ci0gIEVYUEVDVF9FUSg3LCBhXyk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLQotLy8gVGVzdHMge0FTU0VSVHxFWFBFQ1R9X05PX0ZBVEFMX0ZBSUxVUkUuCi1j
bGFzcyBOb0ZhdGFsRmFpbHVyZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
b2lkIFN1Y2NlZWRzKCkge30KLSAgdm9pZCBGYWlsc05vbkZhdGFsKCkgewotICAgIEFERF9GQUlM
VVJFKCkgPDwgInNvbWUgbm9uLWZhdGFsIGZhaWx1cmUiOwotICB9Ci0gIHZvaWQgRmFpbHMoKSB7
Ci0gICAgRkFJTCgpIDw8ICJzb21lIGZhdGFsIGZhaWx1cmUiOwotICB9Ci0KLSAgdm9pZCBEb0Fz
c2VydE5vRmF0YWxGYWlsdXJlT25GYWlscygpIHsKLSAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVS
RShGYWlscygpKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJzaG9sZCBub3QgcmVhY2ggaGVyZS4i
OwotICB9Ci0KLSAgdm9pZCBEb0V4cGVjdE5vRmF0YWxGYWlsdXJlT25GYWlscygpIHsKLSAgICBF
WFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShGYWlscygpKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJv
dGhlciBmYWlsdXJlIjsKLSAgfQotfTsKLQotVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgTm9G
YWlsdXJlKSB7Ci0gIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKFN1Y2NlZWRzKCkpOwotICBBU1NF
UlRfTk9fRkFUQUxfRkFJTFVSRShTdWNjZWVkcygpKTsKLX0KLQotVEVTVF9GKE5vRmF0YWxGYWls
dXJlVGVzdCwgTm9uRmF0YWxJc05vRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKLSAgICAgIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzTm9uRmF0YWwoKSksCi0gICAg
ICAic29tZSBub24tZmF0YWwgZmFpbHVyZSIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgK
LSAgICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEZhaWxzTm9uRmF0YWwoKSksCi0gICAgICAi
c29tZSBub24tZmF0YWwgZmFpbHVyZSIpOwotfQotCi1URVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0
LCBBc3NlcnROb0ZhdGFsRmFpbHVyZU9uRmF0YWxGYWlsdXJlKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0
QXJyYXkgZ3Rlc3RfZmFpbHVyZXM7Ci0gIHsKLSAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlciBndGVzdF9yZXBvcnRlcigmZ3Rlc3RfZmFpbHVyZXMpOwotICAgIERvQXNzZXJ0Tm9G
YXRhbEZhaWx1cmVPbkZhaWxzKCk7Ci0gIH0KLSAgQVNTRVJUX0VRKDIsIGd0ZXN0X2ZhaWx1cmVz
LnNpemUoKSk7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAg
ICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLnR5cGUoKSk7Ci0g
IEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgIGd0
ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLnR5cGUoKSk7Ci0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJzb21lIGZhdGFsIGZhaWx1cmUiLAotICAg
ICAgICAgICAgICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1l
c3NhZ2UoKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJp
dCBkb2VzIiwKLSAgICAgICAgICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFy
dFJlc3VsdCgxKS5tZXNzYWdlKCkpOwotfQotCi1URVNUX0YoTm9GYXRhbEZhaWx1cmVUZXN0LCBF
eHBlY3ROb0ZhdGFsRmFpbHVyZU9uRmF0YWxGYWlsdXJlKSB7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgZ3Rlc3RfZmFpbHVyZXM7Ci0gIHsKLSAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlciBndGVzdF9yZXBvcnRlcigmZ3Rlc3RfZmFpbHVyZXMpOwotICAgIERvRXhwZWN0Tm9GYXRh
bEZhaWx1cmVPbkZhaWxzKCk7Ci0gIH0KLSAgQVNTRVJUX0VRKDMsIGd0ZXN0X2ZhaWx1cmVzLnNp
emUoKSk7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAg
ICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLnR5cGUoKSk7Ci0gIEVY
UEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgIGd0
ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLnR5cGUoKSk7Ci0gIEVYUEVDVF9FUShU
ZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgIGd0ZXN0X2ZhaWx1
cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDIpLnR5cGUoKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIo
dGVzdGluZzo6SXNTdWJzdHJpbmcsICJzb21lIGZhdGFsIGZhaWx1cmUiLAotICAgICAgICAgICAg
ICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7
Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJpdCBkb2VzIiwK
LSAgICAgICAgICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgx
KS5tZXNzYWdlKCkpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5n
LCAib3RoZXIgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMu
R2V0VGVzdFBhcnRSZXN1bHQoMikubWVzc2FnZSgpKTsKLX0KLQotVEVTVF9GKE5vRmF0YWxGYWls
dXJlVGVzdCwgTWVzc2FnZUlzU3RyZWFtYWJsZSkgewotICBUZXN0UGFydFJlc3VsdEFycmF5IGd0
ZXN0X2ZhaWx1cmVzOwotICB7Ci0gICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIg
Z3Rlc3RfcmVwb3J0ZXIoJmd0ZXN0X2ZhaWx1cmVzKTsKLSAgICBFWFBFQ1RfTk9fRkFUQUxfRkFJ
TFVSRShGQUlMKCkgPDwgImZvbyIpIDw8ICJteSBtZXNzYWdlIjsKLSAgfQotICBBU1NFUlRfRVEo
MiwgZ3Rlc3RfZmFpbHVyZXMuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0Ojpr
Tm9uRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRS
ZXN1bHQoMCkudHlwZSgpKTsKLSAgRVhQRUNUX0VRKFRlc3RQYXJ0UmVzdWx0OjprTm9uRmF0YWxG
YWlsdXJlLAotICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMSku
dHlwZSgpKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgImZv
byIsCi0gICAgICAgICAgICAgICAgICAgICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1
bHQoMCkubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0
cmluZywgIm15IG1lc3NhZ2UiLAotICAgICAgICAgICAgICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVz
LkdldFRlc3RQYXJ0UmVzdWx0KDEpLm1lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIG5vbi1zdHJp
bmcgYXNzZXJ0aW9ucy4KLQotc3RkOjpzdHJpbmcgRWRpdHNUb1N0cmluZyhjb25zdCBzdGQ6OnZl
Y3RvcjxFZGl0VHlwZT4mIGVkaXRzKSB7Ci0gIHN0ZDo6c3RyaW5nIG91dDsKLSAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBlZGl0cy5zaXplKCk7ICsraSkgewotICAgIHN0YXRpYyBjb25zdCBjaGFy
IGtFZGl0c1tdID0gIiArLS8iOwotICAgIG91dC5hcHBlbmQoMSwga0VkaXRzW2VkaXRzW2ldXSk7
Ci0gIH0KLSAgcmV0dXJuIG91dDsKLX0KLQotc3RkOjp2ZWN0b3I8c2l6ZV90PiBDaGFyc1RvSW5k
aWNlcyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHN0ZDo6dmVjdG9yPHNpemVfdD4gb3V0
OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5zaXplKCk7ICsraSkgewotICAgIG91dC5w
dXNoX2JhY2soc3RyW2ldKTsKLSAgfQotICByZXR1cm4gb3V0OwotfQotCi1zdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gQ2hhcnNUb0xpbmVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IG91dDsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIu
c2l6ZSgpOyArK2kpIHsKLSAgICBvdXQucHVzaF9iYWNrKHN0ci5zdWJzdHIoaSwgMSkpOwotICB9
Ci0gIHJldHVybiBvdXQ7Ci19Ci0KLVRFU1QoRWRpdERpc3RhbmNlLCBUZXN0Q2FzZXMpIHsKLSAg
c3RydWN0IENhc2UgewotICAgIGludCBsaW5lOwotICAgIGNvbnN0IGNoYXIqIGxlZnQ7Ci0gICAg
Y29uc3QgY2hhciogcmlnaHQ7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRfZWRpdHM7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWRfZGlmZjsKLSAgfTsKLSAgc3RhdGljIGNvbnN0IENhc2Uga0Nh
c2VzW10gPSB7Ci0gICAgICAvLyBObyBjaGFuZ2UuCi0gICAgICB7X19MSU5FX18sICJBIiwgIkEi
LCAiICIsICIifSwKLSAgICAgIHtfX0xJTkVfXywgIkFCQ0RFIiwgIkFCQ0RFIiwgIiAgICAgIiwg
IiJ9LAotICAgICAgLy8gU2ltcGxlIGFkZHMuCi0gICAgICB7X19MSU5FX18sICJYIiwgIlhBIiwg
IiArIiwgIkBAICsxLDIgQEBcbiBYXG4rQVxuIn0sCi0gICAgICB7X19MSU5FX18sICJYIiwgIlhB
QkNEIiwgIiArKysrIiwgIkBAICsxLDUgQEBcbiBYXG4rQVxuK0JcbitDXG4rRFxuIn0sCi0gICAg
ICAvLyBTaW1wbGUgcmVtb3Zlcy4KLSAgICAgIHtfX0xJTkVfXywgIlhBIiwgIlgiLCAiIC0iLCAi
QEAgLTEsMiBAQFxuIFhcbi1BXG4ifSwKLSAgICAgIHtfX0xJTkVfXywgIlhBQkNEIiwgIlgiLCAi
IC0tLS0iLCAiQEAgLTEsNSBAQFxuIFhcbi1BXG4tQlxuLUNcbi1EXG4ifSwKLSAgICAgIC8vIFNp
bXBsZSByZXBsYWNlcy4KLSAgICAgIHtfX0xJTkVfXywgIkEiLCAiYSIsICIvIiwgIkBAIC0xLDEg
KzEsMSBAQFxuLUFcbithXG4ifSwKLSAgICAgIHtfX0xJTkVfXywgIkFCQ0QiLCAiYWJjZCIsICIv
Ly8vIiwKLSAgICAgICAiQEAgLTEsNCArMSw0IEBAXG4tQVxuLUJcbi1DXG4tRFxuK2FcbitiXG4r
Y1xuK2RcbiJ9LAotICAgICAgLy8gUGF0aCBmaW5kaW5nLgotICAgICAge19fTElORV9fLCAiQUJD
REVGR0giLCAiQUJYRUdIMSIsICIgIC0vIC0gICsiLAotICAgICAgICJAQCAtMSw4ICsxLDcgQEBc
biBBXG4gQlxuLUNcbi1EXG4rWFxuIEVcbi1GXG4gR1xuIEhcbisxXG4ifSwKLSAgICAgIHtfX0xJ
TkVfXywgIkFBQUFCQ0NDQyIsICJBQkFCQ0RDREMiLCAiLSAvICAgKyAvICIsCi0gICAgICAgIkBA
IC0xLDkgKzEsOSBAQFxuLUFcbiBBXG4tQVxuK0JcbiBBXG4gQlxuIENcbitEXG4gQ1xuLUNcbitE
XG4gQ1xuIn0sCi0gICAgICB7X19MSU5FX18sICJBQkNERSIsICJCQ0RDRCIsICItICAgKy8iLAot
ICAgICAgICJAQCAtMSw1ICsxLDUgQEBcbi1BXG4gQlxuIENcbiBEXG4tRVxuK0NcbitEXG4ifSwK
LSAgICAgIHtfX0xJTkVfXywgIkFCQ0RFRkdISUpLTCIsICJCQ0RDREVGR0pLTEpLIiwgIi0gKysg
ICAgIC0tICAgKysiLAotICAgICAgICJAQCAtMSw0ICsxLDUgQEBcbi1BXG4gQlxuK0NcbitEXG4g
Q1xuIERcbiIKLSAgICAgICAiQEAgLTYsNyArNyw3IEBAXG4gRlxuIEdcbi1IXG4tSVxuIEpcbiBL
XG4gTFxuK0pcbitLXG4ifSwKLSAgICAgIHt9fTsKLSAgZm9yIChjb25zdCBDYXNlKiBjID0ga0Nh
c2VzOyBjLT5sZWZ0OyArK2MpIHsKLSAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9lZGl0cyA9
PQotICAgICAgICAgICAgICAgIEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKENo
YXJzVG9JbmRpY2VzKGMtPmxlZnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2VzKGMtPnJpZ2h0KSkpKQotICAgICAgICA8
PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMtPnJpZ2h0IDw8ICI+IEVk
aXRzIDwiCi0gICAgICAgIDw8IEVkaXRzVG9TdHJpbmcoQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKAot
ICAgICAgICAgICAgICAgQ2hhcnNUb0luZGljZXMoYy0+bGVmdCksIENoYXJzVG9JbmRpY2VzKGMt
PnJpZ2h0KSkpIDw8ICI+IjsKLSAgICBFWFBFQ1RfVFJVRShjLT5leHBlY3RlZF9kaWZmID09IENy
ZWF0ZVVuaWZpZWREaWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJzVG9MaW5lcyhjLT5yaWdo
dCkpKQotICAgICAgICA8PCAiTGVmdCA8IiA8PCBjLT5sZWZ0IDw8ICI+IFJpZ2h0IDwiIDw8IGMt
PnJpZ2h0IDw8ICI+IERpZmYgPCIKLSAgICAgICAgPDwgQ3JlYXRlVW5pZmllZERpZmYoQ2hhcnNU
b0xpbmVzKGMtPmxlZnQpLCBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKQotICAgICAgICA8PCAiPiI7
Ci0gIH0KLX0KLQotLy8gVGVzdHMgRXFGYWlsdXJlKCksIHVzZWQgZm9yIGltcGxlbWVudGluZyAq
RVEqIGFzc2VydGlvbnMuCi1URVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZSkgewotICBjb25z
dCBzdGQ6OnN0cmluZyBmb29fdmFsKCI1IiksIGJhcl92YWwoIjYiKTsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgbXNnMSgKLSAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsIGZvb192YWwsIGJhcl92
YWwsIGZhbHNlKQotICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKAot
ICAgICAgIiAgICAgIEV4cGVjdGVkOiBmb29cbiIKLSAgICAgICIgICAgICBXaGljaCBpczogNVxu
IgotICAgICAgIlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKLSAgICAgICIgICAgICBXaGljaCBpczog
NiIsCi0gICAgICBtc2cxLmNfc3RyKCkpOwotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzIoCi0g
ICAgICBFcUZhaWx1cmUoImZvbyIsICI2IiwgZm9vX3ZhbCwgYmFyX3ZhbCwgZmFsc2UpCi0gICAg
ICAuZmFpbHVyZV9tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiICAgICAgRXhw
ZWN0ZWQ6IGZvb1xuIgotICAgICAgIiAgICAgIFdoaWNoIGlzOiA1XG4iCi0gICAgICAiVG8gYmUg
ZXF1YWwgdG86IDYiLAotICAgICAgbXNnMi5jX3N0cigpKTsKLQotICBjb25zdCBzdGQ6OnN0cmlu
ZyBtc2czKAotICAgICAgRXFGYWlsdXJlKCI1IiwgImJhciIsIGZvb192YWwsIGJhcl92YWwsIGZh
bHNlKQotICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAg
IiAgICAgIEV4cGVjdGVkOiA1XG4iCi0gICAgICAiVG8gYmUgZXF1YWwgdG86IGJhclxuIgotICAg
ICAgIiAgICAgIFdoaWNoIGlzOiA2IiwKLSAgICAgIG1zZzMuY19zdHIoKSk7Ci0KLSAgY29uc3Qg
c3RkOjpzdHJpbmcgbXNnNCgKLSAgICAgIEVxRmFpbHVyZSgiNSIsICI2IiwgZm9vX3ZhbCwgYmFy
X3ZhbCwgZmFsc2UpLmZhaWx1cmVfbWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKAotICAgICAg
IiAgICAgIEV4cGVjdGVkOiA1XG4iCi0gICAgICAiVG8gYmUgZXF1YWwgdG86IDYiLAotICAgICAg
bXNnNC5jX3N0cigpKTsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBtc2c1KAotICAgICAgRXFGYWls
dXJlKCJmb28iLCAiYmFyIiwKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygiXCJ4XCIiKSwg
c3RkOjpzdHJpbmcoIlwieVwiIiksCi0gICAgICAgICAgICAgICAgdHJ1ZSkuZmFpbHVyZV9tZXNz
YWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiICAgICAgRXhwZWN0ZWQ6IGZvb1xuIgot
ICAgICAgIiAgICAgIFdoaWNoIGlzOiBcInhcIlxuIgotICAgICAgIlRvIGJlIGVxdWFsIHRvOiBi
YXJcbiIKLSAgICAgICIgICAgICBXaGljaCBpczogXCJ5XCJcbiIKLSAgICAgICJJZ25vcmluZyBj
YXNlIiwKLSAgICAgIG1zZzUuY19zdHIoKSk7Ci19Ci0KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgRXFG
YWlsdXJlV2l0aERpZmYpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgbGVmdCgKLSAgICAgICIxXFxu
MlhYWFxcbjNcXG41XFxuNlxcbjdcXG44XFxuOVxcbjEwXFxuMTFcXG4xMlhYWFxcbjEzXFxuMTRc
XG4xNSIpOwotICBjb25zdCBzdGQ6OnN0cmluZyByaWdodCgKLSAgICAgICIxXFxuMlxcbjNcXG40
XFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMVxcbjEyXFxuMTNcXG4xNCIpOwotICBjb25zdCBzdGQ6
OnN0cmluZyBtc2cxKAotICAgICAgRXFGYWlsdXJlKCJsZWZ0IiwgInJpZ2h0IiwgbGVmdCwgcmln
aHQsIGZhbHNlKS5mYWlsdXJlX21lc3NhZ2UoKSk7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICIg
ICAgICBFeHBlY3RlZDogbGVmdFxuIgotICAgICAgIiAgICAgIFdoaWNoIGlzOiAiCi0gICAgICAi
MVxcbjJYWFhcXG4zXFxuNVxcbjZcXG43XFxuOFxcbjlcXG4xMFxcbjExXFxuMTJYWFhcXG4xM1xc
bjE0XFxuMTVcbiIKLSAgICAgICJUbyBiZSBlcXVhbCB0bzogcmlnaHRcbiIKLSAgICAgICIgICAg
ICBXaGljaCBpczogMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4xMlxc
bjEzXFxuMTRcbiIKLSAgICAgICJXaXRoIGRpZmY6XG5AQCAtMSw1ICsxLDYgQEBcbiAxXG4tMlhY
WFxuKzJcbiAzXG4rNFxuIDVcbiA2XG4iCi0gICAgICAiQEAgLTcsOCArOCw2IEBAXG4gOFxuIDlc
bi0xMFxuIDExXG4tMTJYWFhcbisxMlxuIDEzXG4gMTRcbi0xNVxuIiwKLSAgICAgIG1zZzEuY19z
dHIoKSk7Ci19Ci0KLS8vIFRlc3RzIEFwcGVuZFVzZXJNZXNzYWdlKCksIHVzZWQgZm9yIGltcGxl
bWVudGluZyB0aGUgKkVRKiBtYWNyb3MuCi1URVNUKEFzc2VydGlvblRlc3QsIEFwcGVuZFVzZXJN
ZXNzYWdlKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZvbygiZm9vIik7Ci0KLSAgTWVzc2FnZSBt
c2c7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwKLSAgICAgICAgICAgICAgIEFwcGVuZFVzZXJNZXNz
YWdlKGZvbywgbXNnKS5jX3N0cigpKTsKLQotICBtc2cgPDwgImJhciI7Ci0gIEVYUEVDVF9TVFJF
USgiZm9vXG5iYXIiLAotICAgICAgICAgICAgICAgQXBwZW5kVXNlck1lc3NhZ2UoZm9vLCBtc2cp
LmNfc3RyKCkpOwotfQotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBTaWxlbmNlcyB3YXJuaW5n
czogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBjb2RlIgotIyBwcmFn
bWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlmCi0KLS8vIFRlc3RzIEFTU0VSVF9U
UlVFLgotVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVFJVRSkgewotICBBU1NFUlRfVFJVRSgy
ID4gMSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoMiA8
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAiMiA8IDEiKTsKLX0KLQotLy8gVGVzdHMgQVNT
RVJUX1RSVUUocHJlZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVz
dWx0LgotVEVTVChBc3NlcnRpb25UZXN0LCBBc3NlcnRUcnVlV2l0aEFzc2VydGlvblJlc3VsdCkg
ewotICBBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW4oMikpOwotI2lmbmRlZiBfX0JPUkxBTkRDX18K
LSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X1RSVUUoUmVzdWx0SXNFdmVuKDMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9m
OiBSZXN1bHRJc0V2ZW4oMylcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBm
YWxzZSAoMyBpcyBvZGQpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogdHJ1
ZSIpOwotI2VuZGlmCi0gIEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMikp
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShSZXN1bHRJc0V2ZW5Ob0V4cGxh
bmF0aW9uKDMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2
ZW5Ob0V4cGxhbmF0aW9uKDMpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDog
ZmFsc2UgKDMgaXMgb2RkKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IHRy
dWUiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX0ZBTFNFLgotVEVTVChBc3NlcnRpb25UZXN0LCBB
U1NFUlRfRkFMU0UpIHsKLSAgQVNTRVJUX0ZBTFNFKDIgPCAxKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoMiA+IDEpLAotICAgICAgICAgICAgICAgICAg
ICAgICAiVmFsdWUgb2Y6IDIgPiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVh
bDogdHJ1ZVxuIgotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7Ci19
Ci0KLS8vIFRlc3RzIEFTU0VSVF9GQUxTRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVy
bmluZyBBc3NlcnRpb25SZXN1bHQuCi1URVNUKEFzc2VydGlvblRlc3QsIEFzc2VydEZhbHNlV2l0
aEFzc2VydGlvblJlc3VsdCkgewotICBBU1NFUlRfRkFMU0UoUmVzdWx0SXNFdmVuKDMpKTsKLSNp
Zm5kZWYgX19CT1JMQU5EQ19fCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCi0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW4oMikpLAotICAgICAgICAgICAg
ICAgICAgICAgICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbigyKVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAiICBBY3R1YWw6IHRydWUgKDIgaXMgZXZlbilcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkOiBmYWxzZSIpOwotI2VuZGlmCi0gIEFTU0VSVF9GQUxTRShSZXN1bHRJ
c0V2ZW5Ob0V4cGxhbmF0aW9uKDMpKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZB
TFNFKFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMilcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZDogZmFsc2UiKTsKLX0KLQotI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMg
d2FybmluZ3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0
aGVtCi0jIHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLQotLy8gVGVzdHMgdXNpbmcgQVNTRVJU
X0VRIG9uIGRvdWJsZSB2YWx1ZXMuICBUaGUgcHVycG9zZSBpcyB0byBtYWtlCi0vLyBzdXJlIHRo
YXQgdGhlIHNwZWNpYWxpemF0aW9uIHdlIGRpZCBmb3IgaW50ZWdlciBhbmQgYW5vbnltb3VzIGVu
dW1zCi0vLyBpc24ndCB1c2VkIGZvciBkb3VibGUgYXJndW1lbnRzLgotVEVTVChFeHBlY3RUZXN0
LCBBU1NFUlRfRVFfRG91YmxlKSB7Ci0gIC8vIEEgc3VjY2Vzcy4KLSAgQVNTRVJUX0VRKDUuNiwg
NS42KTsKLQotICAvLyBBIGZhaWx1cmUuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
USg1LjEsIDUuMiksCi0gICAgICAgICAgICAgICAgICAgICAgICI1LjEiKTsKLX0KLQotLy8gVGVz
dHMgQVNTRVJUX0VRLgotVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfRVEpIHsKLSAgQVNTRVJU
X0VRKDUsIDIgKyAzKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKDUsIDIqMyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86IDIqM1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAiICAgICAgV2hpY2ggaXM6IDYiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX0VRKE5VTEws
IHBvaW50ZXIpLgotI2lmIEdURVNUX0NBTl9DT01QQVJFX05VTEwKLVRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0VRX05VTEwpIHsKLSAgLy8gQSBzdWNjZXNzLgotICBjb25zdCBjaGFyKiBwID0g
TlVMTDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMg
d2FyaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKLSAgLy8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhp
cyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJlc3NlZCB3aXRoCi0gIC8vIHN0YXRpY19jYXN0
IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBhYmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMg
dGhlCi0gIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0byB0aGUgbWFjcm8uCi0gIEFTU0VSVF9FUShO
VUxMLCBwKTsKLQotICAvLyBBIGZhaWx1cmUuCi0gIHN0YXRpYyBpbnQgbiA9IDA7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShOVUxMLCAmbiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICJUbyBiZSBlcXVhbCB0bzogJm5cbiIpOwotfQotI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09N
UEFSRV9OVUxMCi0KLS8vIFRlc3RzIEFTU0VSVF9FUSgwLCBub25fcG9pbnRlcikuICBTaW5jZSB0
aGUgbGl0ZXJhbCAwIGNhbiBiZQotLy8gdHJlYXRlZCBhcyBhIG51bGwgcG9pbnRlciBieSB0aGUg
Y29tcGlsZXIsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCi0vLyB0aGF0IEFTU0VSVF9FUSgwLCBub25f
cG9pbnRlcikgaXNuJ3QgaW50ZXJwcmV0ZWQgYnkgR29vZ2xlIFRlc3QgYXMKLS8vIEFTU0VSVF9F
UShzdGF0aWNfY2FzdDx2b2lkKj4oTlVMTCksIG5vbl9wb2ludGVyKS4KLVRFU1QoRXhwZWN0VGVz
dCwgQVNTRVJUX0VRXzApIHsKLSAgaW50IG4gPSAwOwotCi0gIC8vIEEgc3VjY2Vzcy4KLSAgQVNT
RVJUX0VRKDAsIG4pOwotCi0gIC8vIEEgZmFpbHVyZS4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0VRKDAsIDUuNiksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogMCIp
OwotfQotCi0vLyBUZXN0cyBBU1NFUlRfTkUuCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9O
RSkgewotICBBU1NFUlRfTkUoNiwgNyk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9O
RSgnYScsICdhJyksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogKCdhJykgIT0g
KCdhJyksICIKLSAgICAgICAgICAgICAgICAgICAgICAgImFjdHVhbDogJ2EnICg5NywgMHg2MSkg
dnMgJ2EnICg5NywgMHg2MSkiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX0xFLgotVEVTVChBc3Nl
cnRpb25UZXN0LCBBU1NFUlRfTEUpIHsKLSAgQVNTRVJUX0xFKDIsIDMpOwotICBBU1NFUlRfTEUo
MiwgMik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRSgyLCAwKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAoMikgPD0gKDApLCBhY3R1YWw6IDIgdnMgMCIpOwot
fQotCi0vLyBUZXN0cyBBU1NFUlRfTFQuCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9MVCkg
ewotICBBU1NFUlRfTFQoMiwgMyk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MVCgy
LCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAoMikgPCAoMiksIGFjdHVh
bDogMiB2cyAyIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9HRS4KLVRFU1QoQXNzZXJ0aW9uVGVz
dCwgQVNTRVJUX0dFKSB7Ci0gIEFTU0VSVF9HRSgyLCAxKTsKLSAgQVNTRVJUX0dFKDIsIDIpOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR0UoMiwgMyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZDogKDIpID49ICgzKSwgYWN0dWFsOiAyIHZzIDMiKTsKLX0KLQotLy8g
VGVzdHMgQVNTRVJUX0dULgotVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfR1QpIHsKLSAgQVNT
RVJUX0dUKDIsIDEpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMiwgMiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogKDIpID4gKDIpLCBhY3R1YWw6IDIgdnMg
MiIpOwotfQotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotdm9pZCBUaHJvd05vdGhpbmco
KSB7fQotCi0vLyBUZXN0cyBBU1NFUlRfVEhST1cuCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VS
VF9USFJPVykgewotICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKLQotIyBp
Zm5kZWYgX19CT1JMQU5EQ19fCi0KLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFuZCAy
MDA5LgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKLSAgICAgIEFTU0VSVF9USFJPVyhUaHJvd0Fu
SW50ZWdlcigpLCBib29sKSwKLSAgICAgICJFeHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSB0aHJv
d3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgYm9vbC5cbiIKLSAgICAgICIgIEFjdHVhbDogaXQgdGhy
b3dzIGEgZGlmZmVyZW50IHR5cGUuIik7Ci0jIGVuZGlmCi0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoCi0gICAgICBBU1NFUlRfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpLAotICAgICAgIkV4
cGVjdGVkOiBUaHJvd05vdGhpbmcoKSB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgYm9vbC5c
biIKLSAgICAgICIgIEFjdHVhbDogaXQgdGhyb3dzIG5vdGhpbmcuIik7Ci19Ci0KLS8vIFRlc3Rz
IEFTU0VSVF9OT19USFJPVy4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX05PX1RIUk9XKSB7
Ci0gIEFTU0VSVF9OT19USFJPVyhUaHJvd05vdGhpbmcoKSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9OT19USFJPVyhUaHJvd0FuSW50ZWdlcigpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkOiBUaHJvd0FuSW50ZWdlcigpIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0
aW9uLiIKLSAgICAgICAgICAgICAgICAgICAgICAgIlxuICBBY3R1YWw6IGl0IHRocm93cy4iKTsK
LX0KLQotLy8gVGVzdHMgQVNTRVJUX0FOWV9USFJPVy4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNT
RVJUX0FOWV9USFJPVykgewotICBBU1NFUlRfQU5ZX1RIUk9XKFRocm93QW5JbnRlZ2VyKCkpOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKLSAgICAgIEFTU0VSVF9BTllfVEhST1coVGhyb3dOb3Ro
aW5nKCkpLAotICAgICAgIkV4cGVjdGVkOiBUaHJvd05vdGhpbmcoKSB0aHJvd3MgYW4gZXhjZXB0
aW9uLlxuIgotICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiIpOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIE1ha2VzIHN1cmUgd2UgZGVhbCB3aXRoIHRoZSBw
cmVjZWRlbmNlIG9mIDw8LiAgVGhpcyB0ZXN0IHNob3VsZAotLy8gY29tcGlsZS4KLVRFU1QoQXNz
ZXJ0aW9uVGVzdCwgQXNzZXJ0UHJlY2VkZW5jZSkgewotICBBU1NFUlRfRVEoMSA8IDIsIHRydWUp
OwotICBib29sIGZhbHNlX3ZhbHVlID0gZmFsc2U7Ci0gIEFTU0VSVF9FUSh0cnVlICYmIGZhbHNl
X3ZhbHVlLCBmYWxzZSk7Ci19Ci0KLS8vIEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dp
bmcgdGVzdC4KLXZvaWQgVGVzdEVxMShpbnQgeCkgewotICBBU1NFUlRfRVEoMSwgeCk7Ci19Ci0K
LS8vIFRlc3RzIGNhbGxpbmcgYSB0ZXN0IHN1YnJvdXRpbmUgdGhhdCdzIG5vdCBwYXJ0IG9mIGEg
Zml4dHVyZS4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgTm9uRml4dHVyZVN1YnJvdXRpbmUpIHsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEVxMSgyKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IlRvIGJlIGVxdWFsIHRvOiB4Iik7Ci19Ci0KLS8vIEFuIHVuY29weWFibGUgY2xhc3MuCi1jbGFz
cyBVbmNvcHlhYmxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFVuY29weWFibGUoaW50IGFfdmFs
dWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9Ci0KLSAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
dmFsdWVfOyB9Ci0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmNvcHlhYmxlJiByaHMpIGNvbnN0
IHsKLSAgICByZXR1cm4gdmFsdWUoKSA9PSByaHMudmFsdWUoKTsKLSAgfQotIHByaXZhdGU6Ci0g
IC8vIFRoaXMgY29uc3RydWN0b3IgZGVsaWJlcmF0ZWx5IGhhcyBubyBpbXBsZW1lbnRhdGlvbiwg
YXMgd2UgZG9uJ3QKLSAgLy8gd2FudCB0aGlzIGNsYXNzIHRvIGJlIGNvcHlhYmxlLgotICBVbmNv
cHlhYmxlKGNvbnN0IFVuY29weWFibGUmKTsgIC8vIE5PTElOVAotCi0gIGludCB2YWx1ZV87Ci19
OwotCi06OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0
IFVuY29weWFibGUmIHZhbHVlKSB7Ci0gIHJldHVybiBvcyA8PCB2YWx1ZS52YWx1ZSgpOwotfQot
Ci0KLWJvb2wgSXNQb3NpdGl2ZVVuY29weWFibGUoY29uc3QgVW5jb3B5YWJsZSYgeCkgewotICBy
ZXR1cm4geC52YWx1ZSgpID4gMDsKLX0KLQotLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZv
bGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0QXNzZXJ0Tm9uUG9zaXRpdmUoKSB7Ci0gIFVuY29weWFi
bGUgeSgtMSk7Ci0gIEFTU0VSVF9QUkVEMShJc1Bvc2l0aXZlVW5jb3B5YWJsZSwgeSk7Ci19Ci0v
LyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCi12b2lkIFRlc3RBc3Nl
cnRFcXVhbHNVbmNvcHlhYmxlKCkgewotICBVbmNvcHlhYmxlIHgoNSk7Ci0gIFVuY29weWFibGUg
eSgtMSk7Ci0gIEFTU0VSVF9FUSh4LCB5KTsKLX0KLQotLy8gVGVzdHMgdGhhdCB1bmNvcHlhYmxl
IG9iamVjdHMgY2FuIGJlIHVzZWQgaW4gYXNzZXJ0aW9ucy4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwg
QXNzZXJ0V29ya3NXaXRoVW5jb3B5YWJsZU9iamVjdCkgewotICBVbmNvcHlhYmxlIHgoNSk7Ci0g
IEFTU0VSVF9QUkVEMShJc1Bvc2l0aXZlVW5jb3B5YWJsZSwgeCk7Ci0gIEFTU0VSVF9FUSh4LCB4
KTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoVGVzdEFzc2VydE5vblBvc2l0aXZlKCksCi0gICAg
IklzUG9zaXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZh
bHVhdGVzIHRvIC0xIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RBc3NlcnRFcXVhbHNV
bmNvcHlhYmxlKCksCi0gICAgIkV4cGVjdGVkOiB4XG4gICAgICBXaGljaCBpczogNVxuVG8gYmUg
ZXF1YWwgdG86IHlcbiAgICAgIFdoaWNoIGlzOiAtMSIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHVu
Y29weWFibGUgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiBleHBlY3RzLgotVEVTVChBc3NlcnRpb25U
ZXN0LCBFeHBlY3RXb3Jrc1dpdGhVbmNvcHlhYmxlT2JqZWN0KSB7Ci0gIFVuY29weWFibGUgeCg1
KTsKLSAgRVhQRUNUX1BSRUQxKElzUG9zaXRpdmVVbmNvcHlhYmxlLCB4KTsKLSAgVW5jb3B5YWJs
ZSB5KC0xKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1BSRUQxKElzUG9zaXRp
dmVVbmNvcHlhYmxlLCB5KSwKLSAgICAiSXNQb3NpdGl2ZVVuY29weWFibGUoeSkgZXZhbHVhdGVz
IHRvIGZhbHNlLCB3aGVyZVxueSBldmFsdWF0ZXMgdG8gLTEiKTsKLSAgRVhQRUNUX0VRKHgsIHgp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoeCwgeSksCi0gICAgIkV4cGVj
dGVkOiB4XG4gICAgICBXaGljaCBpczogNVxuVG8gYmUgZXF1YWwgdG86IHlcbiAgICAgIFdoaWNo
IGlzOiAtMSIpOwotfQotCi1lbnVtIE5hbWVkRW51bSB7Ci0gIGtFMSA9IDAsCi0gIGtFMiA9IDEK
LX07Ci0KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgTmFtZWRFbnVtKSB7Ci0gIEVYUEVDVF9FUShrRTEs
IGtFMSk7Ci0gIEVYUEVDVF9MVChrRTEsIGtFMik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUShrRTEsIGtFMiksICJXaGljaCBpczogMCIpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2ggaXM6IDEiKTsKLX0KLQotLy8gVGhl
IHZlcnNpb24gb2YgZ2NjIHVzZWQgaW4gWENvZGUgMi4yIGhhcyBhIGJ1ZyBhbmQgZG9lc24ndCBh
bGxvdwotLy8gYW5vbnltb3VzIGVudW1zIGluIGFzc2VydGlvbnMuICBUaGVyZWZvcmUgdGhlIGZv
bGxvd2luZyB0ZXN0IGlzIG5vdAotLy8gZG9uZSBvbiBNYWMuCi0vLyBTdW4gU3R1ZGlvIGFuZCBI
UCBhQ0MgYWxzbyByZWplY3QgdGhpcyBjb2RlLgotI2lmICFHVEVTVF9PU19NQUMgJiYgIWRlZmlu
ZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKF9fSFBfYUNDKQotCi0vLyBUZXN0cyB1c2luZyBh
c3NlcnRpb25zIHdpdGggYW5vbnltb3VzIGVudW1zLgotZW51bSB7Ci0gIGtDYXNlQSA9IC0xLAot
Ci0jIGlmIEdURVNUX09TX0xJTlVYCi0KLSAgLy8gV2Ugd2FudCB0byB0ZXN0IHRoZSBjYXNlIHdo
ZXJlIHRoZSBzaXplIG9mIHRoZSBhbm9ueW1vdXMgZW51bSBpcwotICAvLyBsYXJnZXIgdGhhbiBz
aXplb2YoaW50KSwgdG8gbWFrZSBzdXJlIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKLSAgLy8g
YXNzZXJ0aW9ucyBkb2Vzbid0IHRydW5jYXRlIHRoZSBlbnVtcy4gIEhvd2V2ZXIsIE1TVkMKLSAg
Ly8gKGluY29ycmVjdGx5KSBkb2Vzbid0IGFsbG93IGFuIGVudW0gdmFsdWUgdG8gZXhjZWVkIHRo
ZSByYW5nZSBvZgotICAvLyBhbiBpbnQsIHNvIHRoaXMgaGFzIHRvIGJlIGNvbmRpdGlvbmFsbHkg
Y29tcGlsZWQuCi0gIC8vCi0gIC8vIE9uIExpbnV4LCBrQ2FzZUIgYW5kIGtDYXNlQSBoYXZlIHRo
ZSBzYW1lIHZhbHVlIHdoZW4gdHJ1bmNhdGVkIHRvCi0gIC8vIGludCBzaXplLiAgV2Ugd2FudCB0
byB0ZXN0IHdoZXRoZXIgdGhpcyB3aWxsIGNvbmZ1c2UgdGhlCi0gIC8vIGFzc2VydGlvbnMuCi0g
IGtDYXNlQiA9IHRlc3Rpbmc6OmludGVybmFsOjprTWF4QmlnZ2VzdEludCwKLQotIyBlbHNlCi0K
LSAga0Nhc2VCID0gSU5UX01BWCwKLQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKLQotICBr
Q2FzZUMgPSA0MgotfTsKLQotVEVTVChBc3NlcnRpb25UZXN0LCBBbm9ueW1vdXNFbnVtKSB7Ci0j
IGlmIEdURVNUX09TX0xJTlVYCi0KLSAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oa0Nhc2VB
KSwgc3RhdGljX2Nhc3Q8aW50PihrQ2FzZUIpKTsKLQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElO
VVgKLQotICBFWFBFQ1RfRVEoa0Nhc2VBLCBrQ2FzZUEpOwotICBFWFBFQ1RfTkUoa0Nhc2VBLCBr
Q2FzZUIpOwotICBFWFBFQ1RfTFQoa0Nhc2VBLCBrQ2FzZUIpOwotICBFWFBFQ1RfTEUoa0Nhc2VB
LCBrQ2FzZUIpOwotICBFWFBFQ1RfR1Qoa0Nhc2VCLCBrQ2FzZUEpOwotICBFWFBFQ1RfR0Uoa0Nh
c2VBLCBrQ2FzZUEpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0Uoa0Nhc2VB
LCBrQ2FzZUIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKGtDYXNlQSkgPj0gKGtDYXNl
QikiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VD
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIi0xIHZzIDQyIik7Ci0KLSAgQVNTRVJUX0VR
KGtDYXNlQSwga0Nhc2VBKTsKLSAgQVNTRVJUX05FKGtDYXNlQSwga0Nhc2VCKTsKLSAgQVNTRVJU
X0xUKGtDYXNlQSwga0Nhc2VCKTsKLSAgQVNTRVJUX0xFKGtDYXNlQSwga0Nhc2VCKTsKLSAgQVNT
RVJUX0dUKGtDYXNlQiwga0Nhc2VBKTsKLSAgQVNTRVJUX0dFKGtDYXNlQSwga0Nhc2VBKTsKLQot
IyBpZm5kZWYgX19CT1JMQU5EQ19fCi0KLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlci4KLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VCKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBrQ2FzZUIiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0VRKGtDYXNlQSwga0Nhc2VDKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IldoaWNoIGlzOiA0MiIpOwotIyBlbmRpZgotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VS
VF9FUShrQ2FzZUEsIGtDYXNlQyksCi0gICAgICAgICAgICAgICAgICAgICAgICJXaGljaCBpczog
LTEiKTsKLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJP
X0NDKQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi1zdGF0aWMgSFJFU1VMVCBVbmV4cGVjdGVk
SFJFU1VMVEZhaWx1cmUoKSB7Ci0gIHJldHVybiBFX1VORVhQRUNURUQ7Ci19Ci0KLXN0YXRpYyBI
UkVTVUxUIE9rSFJFU1VMVFN1Y2Nlc3MoKSB7Ci0gIHJldHVybiBTX09LOwotfQotCi1zdGF0aWMg
SFJFU1VMVCBGYWxzZUhSRVNVTFRTdWNjZXNzKCkgewotICByZXR1cm4gU19GQUxTRTsKLX0KLQot
Ly8gSFJFU1VMVCBhc3NlcnRpb24gdGVzdHMgdGVzdCBib3RoIHplcm8gYW5kIG5vbi16ZXJvCi0v
LyBzdWNjZXNzIGNvZGVzIGFzIHdlbGwgYXMgZmFpbHVyZSBtZXNzYWdlIGZvciBlYWNoLgotLy8K
LS8vIFdpbmRvd3MgQ0UgZG9lc24ndCBzdXBwb3J0IG1lc3NhZ2UgdGV4dHMuCi1URVNUKEhSRVNV
TFRBc3NlcnRpb25UZXN0LCBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQpIHsKLSAgRVhQRUNUX0hS
RVNVTFRfU1VDQ0VFREVEKFNfT0spOwotICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoU19GQUxT
RSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVE
KFVuZXhwZWN0ZWRIUkVTVUxURmFpbHVyZSgpKSwKLSAgICAiRXhwZWN0ZWQ6IChVbmV4cGVjdGVk
SFJFU1VMVEZhaWx1cmUoKSkgc3VjY2VlZHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDgwMDBGRkZG
Iik7Ci19Ci0KLVRFU1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIEFTU0VSVF9IUkVTVUxUX1NVQ0NF
RURFRCkgewotICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoU19PSyk7Ci0gIEFTU0VSVF9IUkVT
VUxUX1NVQ0NFRURFRChTX0ZBTFNFKTsKLQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
SFJFU1VMVF9TVUNDRUVERUQoVW5leHBlY3RlZEhSRVNVTFRGYWlsdXJlKCkpLAotICAgICJFeHBl
Y3RlZDogKFVuZXhwZWN0ZWRIUkVTVUxURmFpbHVyZSgpKSBzdWNjZWVkcy5cbiIKLSAgICAiICBB
Y3R1YWw6IDB4ODAwMEZGRkYiKTsKLX0KLQotVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgRVhQ
RUNUX0hSRVNVTFRfRkFJTEVEKSB7Ci0gIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChFX1VORVhQRUNU
RUQpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChP
a0hSRVNVTFRTdWNjZXNzKCkpLAotICAgICJFeHBlY3RlZDogKE9rSFJFU1VMVFN1Y2Nlc3MoKSkg
ZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSksCi0gICAgIkV4
cGVjdGVkOiAoRmFsc2VIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5cbiIKLSAgICAiICBBY3R1YWw6
IDB4MSIpOwotfQotCi1URVNUKEhSRVNVTFRBc3NlcnRpb25UZXN0LCBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQpIHsKLSAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCk7Ci0KLSMgaWZu
ZGVmIF9fQk9STEFORENfXwotCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAw
OS4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfRkFJTEVEKE9rSFJFU1VM
VFN1Y2Nlc3MoKSksCi0gICAgIkV4cGVjdGVkOiAoT2tIUkVTVUxUU3VjY2VzcygpKSBmYWlscy5c
biIKLSAgICAiICBBY3R1YWw6IDB4MCIpOwotIyBlbmRpZgotCi0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChGYWxzZUhSRVNVTFRTdWNjZXNzKCkpLAotICAgICJF
eHBlY3RlZDogKEZhbHNlSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFs
OiAweDEiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBzdHJlYW1pbmcgdG8gdGhlIEhSRVNVTFQgbWFj
cm9zIHdvcmtzLgotVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgU3RyZWFtaW5nKSB7Ci0gIEVY
UEVDVF9IUkVTVUxUX1NVQ0NFRURFRChTX09LKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAg
QVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKFNfT0spIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwot
ICBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKSA8PCAidW5leHBlY3RlZCBmYWls
dXJlIjsKLSAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKEVfVU5FWFBFQ1RFRCkgPDwgInVuZXhwZWN0
ZWQgZmFpbHVyZSI7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1Rf
SFJFU1VMVF9TVUNDRUVERUQoRV9VTkVYUEVDVEVEKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0g
ICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotCi0jIGlmbmRlZiBfX0JPUkxBTkRDX18KLQotICAv
LyBJQ0UncyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCi0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKAotICAgICAgQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RFRCkgPDwgImV4
cGVjdGVkIGZhaWx1cmUiLAotICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSMgZW5kaWYKLQot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChT
X09LKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwot
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAotICAgICAgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKFNf
T0spIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0v
LyBTaWxlbmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNo
YWJsZSBjb2RlIgotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlmCi0K
LS8vIFRlc3RzIHRoYXQgdGhlIGFzc2VydGlvbiBtYWNyb3MgYmVoYXZlIGxpa2Ugc2luZ2xlIHN0
YXRlbWVudHMuCi1URVNUKEFzc2VydGlvblN5bnRheFRlc3QsIEJhc2ljQXNzZXJ0aW9uc0JlaGF2
ZXNMaWtlU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEFTU0VS
VF9UUlVFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQ7ICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkl0J3MgYSBjb21waWxhdGlvbiB0ZXN0IG9ubHkuIjsKLQot
ICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9GQUxTRShmYWxzZSk7Ci0gIGVsc2UKLSAg
ICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfTFQoMSwg
Myk7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAgLy8gTk9MSU5UCi0gIGVsc2UKLSAg
ICBFWFBFQ1RfR1QoMywgMikgPDwgIiI7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
Ly8gVGVzdHMgdGhhdCB0aGUgY29tcGlsZXIgd2lsbCBub3QgY29tcGxhaW4gYWJvdXQgdW5yZWFj
aGFibGUgY29kZSBpbiB0aGUKLS8vIEVYUEVDVF9USFJPVy9FWFBFQ1RfQU5ZX1RIUk9XL0VYUEVD
VF9OT19USFJPVyBtYWNyb3MuCi1URVNUKEV4cGVjdFRocm93VGVzdCwgRG9lc05vdEdlbmVyYXRl
VW5yZWFjaGFibGVDb2RlV2FybmluZykgewotICBpbnQgbiA9IDA7Ci0KLSAgRVhQRUNUX1RIUk9X
KHRocm93IDEsIGludCk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyhu
KyssIGludCksICIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIUk9XKHRo
cm93IDEsIGNvbnN0IGNoYXIqKSwgIiIpOwotICBFWFBFQ1RfTk9fVEhST1cobisrKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05PX1RIUk9XKHRocm93IDEpLCAiIik7Ci0gIEVY
UEVDVF9BTllfVEhST1codGhyb3cgMSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9BTllfVEhST1cobisrKSwgIiIpOwotfQotCi1URVNUKEFzc2VydGlvblN5bnRheFRlc3QsIEV4
Y2VwdGlvbkFzc2VydGlvbnNCZWhhdmVzTGlrZVNpbmdsZVN0YXRlbWVudCkgewotICBpZiAoQWx3
YXlzRmFsc2UoKSkKLSAgICBFWFBFQ1RfVEhST1coVGhyb3dOb3RoaW5nKCksIGJvb2wpOwotCi0g
IGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGlu
dCk7Ci0gIGVsc2UKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAg
ICBFWFBFQ1RfTk9fVEhST1coVGhyb3dBbkludGVnZXIoKSk7Ci0KLSAgaWYgKEFsd2F5c1RydWUo
KSkKLSAgICBFWFBFQ1RfTk9fVEhST1coVGhyb3dOb3RoaW5nKCkpOwotICBlbHNlCi0gICAgOyAg
Ly8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgRVhQRUNUX0FOWV9USFJPVyhU
aHJvd05vdGhpbmcoKSk7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBFWFBFQ1RfQU5ZX1RI
Uk9XKFRocm93QW5JbnRlZ2VyKCkpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi19Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLVRFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwg
Tm9GYXRhbEZhaWx1cmVBc3NlcnRpb25zQmVoYXZlc0xpa2VTaW5nbGVTdGF0ZW1lbnQpIHsKLSAg
aWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpKSA8
PCAiVGhpcyBzaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQuICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJJdCdzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5LiI7Ci0gIGVs
c2UKLSAgICA7ICAvLyBOT0xJTlQKLQotICBpZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRf
Tk9fRkFUQUxfRkFJTFVSRShGQUlMKCkpIDw8ICIiOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5U
Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShTVUND
RUVEKCkpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkp
Ci0gICAgOyAgLy8gTk9MSU5UCi0gIGVsc2UKLSAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShT
VUNDRUVEKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24gbWFjcm9zIHdvcmsg
d2VsbCB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzLgotVEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBX
b3Jrc1dpdGhTd2l0Y2gpIHsKLSAgc3dpdGNoICgwKSB7Ci0gICAgY2FzZSAxOgotICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEFTU0VSVF9UUlVFKHRydWUpOwotICB9Ci0KLSAgc3dp
dGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9GQUxTRShmYWxzZSkgPDwgIkVYUEVD
VF9GQUxTRSBmYWlsZWQgaW4gc3dpdGNoIGNhc2UiOwotCi0gIC8vIEJpbmFyeSBhc3NlcnRpb25z
IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIGRpZmZlcmVudCBjb2RlIHBhdGgKLSAgLy8gdGhhbiB0
aGUgQm9vbGVhbiBhc3NlcnRpb25zLiAgSGVuY2Ugd2UgdGVzdCB0aGVtIHNlcGFyYXRlbHkuCi0g
IHN3aXRjaCAoMCkgewotICAgIGNhc2UgMToKLSAgICBkZWZhdWx0OgotICAgICAgQVNTRVJUX0VR
KDEsIDEpIDw8ICJBU1NFUlRfRVEgZmFpbGVkIGluIGRlZmF1bHQgc3dpdGNoIGhhbmRsZXIiOwot
ICB9Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ORSgxLCAyKTsK
LX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLXZvaWQgVGhyb3dBU3RyaW5nKCkgewot
ICAgIHRocm93ICJzdGQ6OnN0cmluZyI7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0aGUgZXhjZXB0aW9u
IGFzc2VydGlvbiBtYWNyb3MgY29tcGlsZSBhbmQgd29yayB3aXRoIGNvbnN0Ci0vLyB0eXBlIHF1
YWxpZmllci4KLVRFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgV29ya3NXaXRoQ29uc3QpIHsKLSAg
ICBBU1NFUlRfVEhST1coVGhyb3dBU3RyaW5nKCksIGNvbnN0IGNoYXIqKTsKLQotICAgIEVYUEVD
VF9USFJPVyhUaHJvd0FTdHJpbmcoKSwgY29uc3QgY2hhciopOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCi0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgdGVzdGlu
ZyB7Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIFRlc3QgdHJhY2tzIFNVQ0NFRUQqLgotVEVTVChT
dWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgU1VDQ0VFRCkgewotICBTVUNDRUVEKCk7Ci0gIFNVQ0NF
RUQoKSA8PCAiT0siOwotICBFWFBFQ1RfRVEoMiwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRf
dGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBH
b29nbGUgVGVzdCBkb2Vzbid0IHRyYWNrIHN1Y2Nlc3NmdWwgRVhQRUNUXyouCi1URVNUKFN1Y2Nl
c3NmdWxBc3NlcnRpb25UZXN0LCBFWFBFQ1QpIHsKLSAgRVhQRUNUX1RSVUUodHJ1ZSk7Ci0gIEVY
UEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3Rh
bF9wYXJ0X2NvdW50KCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGRvZXNuJ3Qg
dHJhY2sgc3VjY2Vzc2Z1bCBFWFBFQ1RfU1RSKi4KLVRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRl
c3QsIEVYUEVDVF9TVFIpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCAiIik7Ci0gIEVYUEVDVF9FUSgw
LCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2Nv
dW50KCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGRvZXNuJ3QgdHJhY2sgc3Vj
Y2Vzc2Z1bCBBU1NFUlRfKi4KLVRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3QsIEFTU0VSVCkg
ewotICBBU1NFUlRfVFJVRSh0cnVlKTsKLSAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgp
LT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cmFjayBzdWNjZXNzZnVsIEFTU0VSVF9TVFIq
LgotVEVTVChTdWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX1NUUikgewotICBBU1NFUlRf
U1RSRVEoIiIsICIiKTsKLSAgRVhQRUNUX0VRKDAsIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50
X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291bnQoKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCi0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRlc3RzIHRoZSBtZXNzYWdlIHN0cmVhbWlu
ZyB2YXJpYXRpb24gb2YgYXNzZXJ0aW9ucy4KLQotVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRl
c3QsIEVYUEVDVCkgewotICBFWFBFQ1RfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FKDEsIDEpIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICMxLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWls
dXJlICMxIik7Ci0gIEVYUEVDVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMSwgMCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzIuIik7Ci0gIEVYUEVDVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoMSwgMikgPDwgIkV4cGVjdGVkIGZhaWx1
cmUgIzMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUgIzMu
Iik7Ci0KLSAgRVhQRUNUX1NUUkVRKCIxIiwgIjEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4i
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSTkUoIjEiLCAiMSIpIDw8ICJF
eHBlY3RlZCBmYWlsdXJlICM0LiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZCBmYWlsdXJlICM0LiIpOwotICBFWFBFQ1RfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBz
aG91bGQgc3VjY2VlZC4iOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FT
RU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNS4iKTsKLQotICBFWFBFQ1RfRkxPQVRfRVEo
MSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0RPVUJMRV9FUSgxLCAxLjIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM2LiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICM2LiIpOwotICBFWFBF
Q1RfTkVBUigxLCAxLjEsIDAuMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLX0KLQotVEVT
VChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVCkgewotICBBU1NFUlRfRVEoMSwgMSkg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgQVNTRVJUX05FKDEsIDIpIDw8ICJUaGlzIHNo
b3VsZCBzdWNjZWVkLiI7Ci0gIEFTU0VSVF9MRSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2Vl
ZC4iOwotICBBU1NFUlRfTFQoMSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgQVNT
RVJUX0dFKDEsIDApIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEFTU0VSVF9HVCgxLCAyKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsKLX0KLQotVEVTVChBc3NlcnRpb25X
aXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9TVFIpIHsKLSAgQVNTRVJUX1NUUkVRKCIxIiwgIjEiKSA8
PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBBU1NFUlRfU1RSTkUoIjEiLCAiMiIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEFTU0VSVF9TVFJDQVNFRVEoImEiLCAiQSIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJD
QVNFTkUoImEiLCAiQSIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlLiIpOwotfQotCi1URVNUKEFzc2VydGlvbldpdGhNZXNz
YWdlVGVzdCwgQVNTRVJUX0ZMT0FUSU5HKSB7Ci0gIEFTU0VSVF9GTE9BVF9FUSgxLCAxKSA8PCAi
VGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBBU1NFUlRfRE9VQkxFX0VRKDEsIDEpIDw8ICJUaGlz
IHNob3VsZCBzdWNjZWVkLiI7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORUFSKDEs
MS4yLCAwLjEpIDw8ICJFeHBlY3QgZmFpbHVyZS4iLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3QgZmFpbHVyZS4iKTsKLSAgLy8gVG8gd29yayBhcm91bmQgYSBidWcg
aW4gZ2NjIDIuOTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubwotICAvLyBzcGFjZSBhZnRl
ciB0aGUgZmlyc3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KLX0KLQotLy8gVGVz
dHMgdXNpbmcgQVNTRVJUX0ZBTFNFIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgotVEVTVChBc3Nl
cnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GQUxTRSkgewotICBBU1NFUlRfRkFMU0UoZmFs
c2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEFTU0VSVF9GQUxTRSh0cnVlKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZTog
IiA8PCAyIDw8ICIgPiAiIDw8IDEKLSAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB0cnVlOwotICB9LCAiRXhwZWN0ZWQgZmFpbHVyZSIpOwotfQotCi0vLyBUZXN0
cyB1c2luZyBGQUlMIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgotVEVTVChBc3NlcnRpb25XaXRo
TWVzc2FnZVRlc3QsIEZBSUwpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8IDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICIwIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFNVQ0NF
RUQgd2l0aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCi1URVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVz
dCwgU1VDQ0VFRCkgewotICBTVUNDRUVEKCkgPDwgIlN1Y2Nlc3MgPT0gIiA8PCAxOwotfQotCi0v
LyBUZXN0cyB1c2luZyBBU1NFUlRfVFJVRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KLVRFU1Qo
QXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfVFJVRSkgewotICBBU1NFUlRfVFJVRSh0
cnVlKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBBU1NFUlRfVFJVRSh0cnVlKSA8PCB0
cnVlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfVFJV
RShmYWxzZSkgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihOVUxMKQotICAgICAgICAgICAg
ICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxjaGFyICo+KE5VTEwpOwotICB9LCAiKG51bGwpKG51
bGwpIik7Ci19Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0vLyBUZXN0cyB1c2luZyB3aWRlIHN0
cmluZ3MgaW4gYXNzZXJ0aW9uIG1lc3NhZ2VzLgotVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRl
c3QsIFdpZGVTdHJpbmdNZXNzYWdlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9UUlVFKGZhbHNlKSA8PCBMIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC5ceDgxMTkiOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRVEoMSwgMikgPDwgIlRo
aXMgZmFpbHVyZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgIDw8IEwiZXhwZWN0ZWQgdG9vLlx4
ODEyMCI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQgdG9vLiIpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIEVYUEVDVF9UUlVFLgotVEVTVChFeHBl
Y3RUZXN0LCBFWFBFQ1RfVFJVRSkgewotICBFWFBFQ1RfVFJVRSh0cnVlKSA8PCAiSW50ZW50aW9u
YWwgc3VjY2VzcyI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNl
KSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMS4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1RSVUUoZmFsc2UpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwotICBFWFBFQ1Rf
VFJVRSgyID4gMSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X1RSVUUoMiA8IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IDIgPCAx
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2VcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPiAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IjIgPiAzIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9UUlVFKHByZWRpY2F0ZSkgZm9yIHByZWRp
Y2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KLVRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0
VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKLSAgRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuKDIp
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuKDMp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMylc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQp
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogdHJ1ZSIpOwotICBFWFBF
Q1RfVFJVRShSZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKDIpKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlv
bigzKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGZhbHNlICgzIGlz
IG9kZClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7Ci19
Ci0KLS8vIFRlc3RzIEVYUEVDVF9GQUxTRSB3aXRoIGEgc3RyZWFtZWQgbWVzc2FnZS4KLVRFU1Qo
RXhwZWN0VGVzdCwgRVhQRUNUX0ZBTFNFKSB7Ci0gIEVYUEVDVF9GQUxTRSgyIDwgMSk7ICAvLyBO
T0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAiSW50ZW50aW9uYWwgc3VjY2VzcyI7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwg
ZmFpbHVyZSAjMS4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRy
dWUpIDw8ICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJJbnRlbnRpb25hbCBmYWlsdXJlICMyLiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfRkFMU0UoMiA+IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IDIgPiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSgyIDwgMyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICIyIDwgMyIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfRkFMU0UocHJlZGljYXRl
KSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgotVEVTVChFeHBlY3RU
ZXN0LCBFeHBlY3RGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKLSAgRVhQRUNUX0ZBTFNFKFJl
c3VsdElzRXZlbigzKSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRShS
ZXN1bHRJc0V2ZW4oMikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgb2Y6IFJl
c3VsdElzRXZlbigyKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRy
dWUgKDIgaXMgZXZlbilcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBm
YWxzZSIpOwotICBFWFBFQ1RfRkFMU0UoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSk7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRShSZXN1bHRJc0V2ZW5Ob0V4cGxh
bmF0aW9uKDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJ
c0V2ZW5Ob0V4cGxhbmF0aW9uKDIpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgIEFj
dHVhbDogdHJ1ZVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNl
Iik7Ci19Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVy
IHByZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotIyBwcmFnbWEg
b3B0aW9uIHBvcAotI2VuZGlmCi0KLS8vIFRlc3RzIEVYUEVDVF9FUS4KLVRFU1QoRXhwZWN0VGVz
dCwgRVhQRUNUX0VRKSB7Ci0gIEVYUEVDVF9FUSg1LCAyICsgMyk7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgICAgRXhwZWN0ZWQ6IDVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVx
dWFsIHRvOiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIFdoaWNoIGlz
OiA2Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LCAyIC0gMyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICIyIC0gMyIpOwotfQotCi0vLyBUZXN0cyB1c2luZyBF
WFBFQ1RfRVEgb24gZG91YmxlIHZhbHVlcy4gIFRoZSBwdXJwb3NlIGlzIHRvIG1ha2UKLS8vIHN1
cmUgdGhhdCB0aGUgc3BlY2lhbGl6YXRpb24gd2UgZGlkIGZvciBpbnRlZ2VyIGFuZCBhbm9ueW1v
dXMgZW51bXMKLS8vIGlzbid0IHVzZWQgZm9yIGRvdWJsZSBhcmd1bWVudHMuCi1URVNUKEV4cGVj
dFRlc3QsIEVYUEVDVF9FUV9Eb3VibGUpIHsKLSAgLy8gQSBzdWNjZXNzLgotICBFWFBFQ1RfRVEo
NS42LCA1LjYpOwotCi0gIC8vIEEgZmFpbHVyZS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKDUuMSwgNS4yKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjUuMSIpOwot
fQotCi0jaWYgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAotLy8gVGVzdHMgRVhQRUNUX0VRKE5VTEws
IHBvaW50ZXIpLgotVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfTlVMTCkgewotICAvLyBBIHN1
Y2Nlc3MuCi0gIGNvbnN0IGNoYXIqIHAgPSBOVUxMOwotICAvLyBTb21lIG9sZGVyIEdDQyB2ZXJz
aW9ucyBtYXkgaXNzdWUgYSBzcHVyaW91cyB3YXJuaW5nIGluIHRoaXMgb3IgdGhlIG5leHQKLSAg
Ly8gYXNzZXJ0aW9uIHN0YXRlbWVudC4gVGhpcyB3YXJuaW5nIHNob3VsZCBub3QgYmUgc3VwcHJl
c3NlZCB3aXRoCi0gIC8vIHN0YXRpY19jYXN0IHNpbmNlIHRoZSB0ZXN0IHZlcmlmaWVzIHRoZSBh
YmlsaXR5IHRvIHVzZSBiYXJlIE5VTEwgYXMgdGhlCi0gIC8vIGV4cGVjdGVkIHBhcmFtZXRlciB0
byB0aGUgbWFjcm8uCi0gIEVYUEVDVF9FUShOVUxMLCBwKTsKLQotICAvLyBBIGZhaWx1cmUuCi0g
IGludCBuID0gMDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKE5VTEwsICZu
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiAmblxuIik7Ci19
Ci0jZW5kaWYgIC8vIEdURVNUX0NBTl9DT01QQVJFX05VTEwKLQotLy8gVGVzdHMgRVhQRUNUX0VR
KDAsIG5vbl9wb2ludGVyKS4gIFNpbmNlIHRoZSBsaXRlcmFsIDAgY2FuIGJlCi0vLyB0cmVhdGVk
IGFzIGEgbnVsbCBwb2ludGVyIGJ5IHRoZSBjb21waWxlciwgd2UgbmVlZCB0byBtYWtlIHN1cmUK
LS8vIHRoYXQgRVhQRUNUX0VRKDAsIG5vbl9wb2ludGVyKSBpc24ndCBpbnRlcnByZXRlZCBieSBH
b29nbGUgVGVzdCBhcwotLy8gRVhQRUNUX0VRKHN0YXRpY19jYXN0PHZvaWQqPihOVUxMKSwgbm9u
X3BvaW50ZXIpLgotVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfMCkgewotICBpbnQgbiA9IDA7
Ci0KLSAgLy8gQSBzdWNjZXNzLgotICBFWFBFQ1RfRVEoMCwgbik7Ci0KLSAgLy8gQSBmYWlsdXJl
LgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoMCwgNS42KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAwIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9O
RS4KLVRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX05FKSB7Ci0gIEVYUEVDVF9ORSg2LCA3KTsKLQot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkUoJ2EnLCAnYScpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6ICgnYScpICE9ICgnYScpLCAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJhY3R1YWw6ICdhJyAoOTcsIDB4NjEpIHZzICdhJyAoOTcsIDB4NjEp
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ORSgyLCAyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjIiKTsKLSAgY2hhciogY29uc3QgcDAgPSBOVUxMOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTkUocDAsIHAwKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgInAwIik7Ci0gIC8vIE9ubHkgd2F5IHRvIGdldCB0aGUgTm9raWEgY29tcGlsZXIg
dG8gY29tcGlsZSB0aGUgY2FzdAotICAvLyBpcyB0byBoYXZlIGEgc2VwYXJhdGUgdm9pZCogdmFy
aWFibGUgZmlyc3QuIFB1dHRpbmcKLSAgLy8gdGhlIHR3byBjYXN0cyBvbiB0aGUgc2FtZSBsaW5l
IGRvZXNuJ3Qgd29yaywgbmVpdGhlciBkb2VzCi0gIC8vIGEgZGlyZWN0IEMtc3R5bGUgdG8gY2hh
ciouCi0gIHZvaWQqIHB2MSA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKLSAgY2hhciogY29u
c3QgcDEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwdjEpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfTkUocDEsIHAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAx
Iik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9MRS4KLVRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX0xF
KSB7Ci0gIEVYUEVDVF9MRSgyLCAzKTsKLSAgRVhQRUNUX0xFKDIsIDIpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfTEUoMiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZDogKDIpIDw9ICgwKSwgYWN0dWFsOiAyIHZzIDAiKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0xFKDEuMSwgMC45KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIigxLjEpIDw9ICgwLjkpIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9MVC4KLVRFU1QoRXhw
ZWN0VGVzdCwgRVhQRUNUX0xUKSB7Ci0gIEVYUEVDVF9MVCgyLCAzKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0xUKDIsIDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwZWN0ZWQ6ICgyKSA8ICgyKSwgYWN0dWFsOiAyIHZzIDIiKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0xUKDIsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIp
IDwgKDEpIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9HRS4KLVRFU1QoRXhwZWN0VGVzdCwgRVhQ
RUNUX0dFKSB7Ci0gIEVYUEVDVF9HRSgyLCAxKTsKLSAgRVhQRUNUX0dFKDIsIDIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR0UoMiwgMyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZDogKDIpID49ICgzKSwgYWN0dWFsOiAyIHZzIDMiKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dFKDAuOSwgMS4xKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIigwLjkpID49ICgxLjEpIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9HVC4KLVRF
U1QoRXhwZWN0VGVzdCwgRVhQRUNUX0dUKSB7Ci0gIEVYUEVDVF9HVCgyLCAxKTsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKDIsIDIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRXhwZWN0ZWQ6ICgyKSA+ICgyKSwgYWN0dWFsOiAyIHZzIDIiKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dUKDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiKDIpID4gKDMpIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0
cyBFWFBFQ1RfVEhST1cuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9USFJPVykgewotICBFWFBF
Q1RfVEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGJvb2wpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkgdGhyb3dzIGFuIGV4Y2VwdGlv
biBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIGJvb2wuXG4gIEFjdHVhbDog
aXQgdGhyb3dzIGEgZGlmZmVyZW50IHR5cGUuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KAotICAgICAgRVhQRUNUX1RIUk9XKFRocm93Tm90aGluZygpLCBib29sKSwKLSAgICAgICJFeHBl
Y3RlZDogVGhyb3dOb3RoaW5nKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4i
Ci0gICAgICAiICBBY3R1YWw6IGl0IHRocm93cyBub3RoaW5nLiIpOwotfQotCi0vLyBUZXN0cyBF
WFBFQ1RfTk9fVEhST1cuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9OT19USFJPVykgewotICBF
WFBFQ1RfTk9fVEhST1coVGhyb3dOb3RoaW5nKCkpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfTk9fVEhST1coVGhyb3dBbkludGVnZXIoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZDogVGhyb3dBbkludGVnZXIoKSBkb2Vzbid0IHRocm93IGFuICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbi5cbiAgQWN0dWFsOiBpdCB0aHJvd3Mu
Iik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9BTllfVEhST1cuCi1URVNUKEV4cGVjdFRlc3QsIEVY
UEVDVF9BTllfVEhST1cpIHsKLSAgRVhQRUNUX0FOWV9USFJPVyhUaHJvd0FuSW50ZWdlcigpKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfQU5ZX1RIUk9XKFRocm93
Tm90aGluZygpKSwKLSAgICAgICJFeHBlY3RlZDogVGhyb3dOb3RoaW5nKCkgdGhyb3dzIGFuIGV4
Y2VwdGlvbi5cbiIKLSAgICAgICIgIEFjdHVhbDogaXQgZG9lc24ndC4iKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBNYWtlIHN1cmUgd2UgZGVhbCB3aXRoIHRo
ZSBwcmVjZWRlbmNlIG9mIDw8LgotVEVTVChFeHBlY3RUZXN0LCBFeHBlY3RQcmVjZWRlbmNlKSB7
Ci0gIEVYUEVDVF9FUSgxIDwgMiwgdHJ1ZSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVY
UEVDVF9FUSh0cnVlLCB0cnVlICYmIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IlRvIGJlIGVxdWFsIHRvOiB0cnVlICYmIGZhbHNlIik7Ci19Ci0KLQotLy8gVGVzdHMgdGhlIFN0
cmVhbWFibGVUb1N0cmluZygpIGZ1bmN0aW9uLgotCi0vLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxl
VG9TdHJpbmcoKSBvbiBhIHNjYWxhci4KLVRFU1QoU3RyZWFtYWJsZVRvU3RyaW5nVGVzdCwgU2Nh
bGFyKSB7Ci0gIEVYUEVDVF9TVFJFUSgiNSIsIFN0cmVhbWFibGVUb1N0cmluZyg1KS5jX3N0cigp
KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKCkgb24gYSBub24tY2hh
ciBwb2ludGVyLgotVEVTVChTdHJlYW1hYmxlVG9TdHJpbmdUZXN0LCBQb2ludGVyKSB7Ci0gIGlu
dCBuID0gMDsKLSAgaW50KiBwID0gJm47Ci0gIEVYUEVDVF9TVFJORSgiKG51bGwpIiwgU3RyZWFt
YWJsZVRvU3RyaW5nKHApLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxl
VG9TdHJpbmcoKSBvbiBhIE5VTEwgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoU3RyZWFtYWJsZVRv
U3RyaW5nVGVzdCwgTnVsbFBvaW50ZXIpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgRVhQRUNUX1NU
UkVRKCIobnVsbCkiLCBTdHJlYW1hYmxlVG9TdHJpbmcocCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRl
c3RzIHVzaW5nIFN0cmVhbWFibGVUb1N0cmluZygpIG9uIGEgQyBzdHJpbmcuCi1URVNUKFN0cmVh
bWFibGVUb1N0cmluZ1Rlc3QsIENTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJGb28iLCBTdHJl
YW1hYmxlVG9TdHJpbmcoIkZvbyIpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBTdHJl
YW1hYmxlVG9TdHJpbmcoKSBvbiBhIE5VTEwgQyBzdHJpbmcuCi1URVNUKFN0cmVhbWFibGVUb1N0
cmluZ1Rlc3QsIE51bGxDU3RyaW5nKSB7Ci0gIGNoYXIqIHAgPSBOVUxMOwotICBFWFBFQ1RfU1RS
RVEoIihudWxsKSIsIFN0cmVhbWFibGVUb1N0cmluZyhwKS5jX3N0cigpKTsKLX0KLQotLy8gVGVz
dHMgdXNpbmcgc3RyZWFtYWJsZSB2YWx1ZXMgYXMgYXNzZXJ0aW9uIG1lc3NhZ2VzLgotCi0vLyBU
ZXN0cyB1c2luZyBzdGQ6OnN0cmluZyBhcyBhbiBhc3NlcnRpb24gbWVzc2FnZS4KLVRFU1QoU3Ry
ZWFtYWJsZVRlc3QsIHN0cmluZykgewotICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgc3RyKAot
ICAgICAgIlRoaXMgZmFpbHVyZSBtZXNzYWdlIGlzIGEgc3RkOjpzdHJpbmcsIGFuZCBpcyBleHBl
Y3RlZC4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8IHN0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgc3RyLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBv
dXRwdXQgc3RyaW5ncyBjb250YWluaW5nIGVtYmVkZGVkIE5VTHMuCi0vLyBMaW1pdGVkIHRvIExp
bnV4IGJlY2F1c2Ugd2UgY2FuIG9ubHkgZG8gdGhpcyB3aXRoIHN0ZDo6c3RyaW5nJ3MuCi1URVNU
KFN0cmVhbWFibGVUZXN0LCBzdHJpbmdXaXRoRW1iZWRkZWROVUwpIHsKLSAgc3RhdGljIGNvbnN0
IGNoYXIgY2hhcl9hcnJheV93aXRoX251bFtdID0KLSAgICAgICJIZXJlJ3MgYSBOVUxcMCBhbmQg
c29tZSBtb3JlIHN0cmluZyI7Ci0gIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBzdHJpbmdfd2l0
aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplb2YoY2hhcl9hcnJheV93aXRoX251bCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDEpOyAgLy8gZHJvcHMgdGhlIHRyYWlsaW5n
IE5VTAotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCkgPDwgc3RyaW5nX3dpdGhfbnVsLAot
ICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUgc3Ry
aW5nIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBhIE5VTCBjaGFyLgotVEVT
VChTdHJlYW1hYmxlVGVzdCwgTlVMQ2hhcikgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBGQUlMKCkgPDwgIkEgTlVMIiA8PCAnXDAnIDw8ICIgYW5kIHNvbWUgbW9y
ZSBzdHJpbmciOwotICB9LCAiQSBOVUxcXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgaW50IGFzIGFuIGFzc2VydGlvbiBtZXNzYWdlLgotVEVTVChTdHJlYW1h
YmxlVGVzdCwgaW50KSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCA5MDA5MTMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICI5MDA5MTMiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcg
TlVMTCBjaGFyIHBvaW50ZXIgYXMgYW4gYXNzZXJ0aW9uIG1lc3NhZ2UuCi0vLwotLy8gSW4gTVNW
Qywgc3RyZWFtaW5nIGEgTlVMTCBjaGFyICogY2F1c2VzIGFjY2VzcyB2aW9sYXRpb24uICBHb29n
bGUgVGVzdAotLy8gaW1wbGVtZW50ZWQgYSB3b3JrYXJvdW5kIChzdWJzdGl0dXRpbmcgIihudWxs
KSIgZm9yIE5VTEwpLiAgVGhpcwotLy8gdGVzdHMgd2hldGhlciB0aGUgd29ya2Fyb3VuZCB3b3Jr
cy4KLVRFU1QoU3RyZWFtYWJsZVRlc3QsIE51bGxDaGFyUHRyKSB7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFKEZBSUwoKSA8PCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oTlVMTCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICIobnVsbCkiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBiYXNpYyBJTyBt
YW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFuZCBmbHVzaCkgY2FuIGJlCi0vLyBzdHJlYW1lZCB0
byB0ZXN0aW5nOjpNZXNzYWdlLgotVEVTVChTdHJlYW1hYmxlVGVzdCwgQmFzaWNJb01hbmlwKSB7
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEZBSUwoKSA8PCAiTGlu
ZSAxLiIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgIDw8ICJBIE5VTCBjaGFyICIgPDwgc3RkOjpl
bmRzIDw8IHN0ZDo6Zmx1c2ggPDwgIiBpbiBsaW5lIDIuIjsKLSAgfSwgIkxpbmUgMS5cbkEgTlVM
IGNoYXIgXFwwIGluIGxpbmUgMi4iKTsKLX0KLQotLy8gVGVzdHMgdGhlIG1hY3JvcyB0aGF0IGhh
dmVuJ3QgYmVlbiBjb3ZlcmVkIHNvIGZhci4KLQotdm9pZCBBZGRGYWlsdXJlSGVscGVyKGJvb2wq
IGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBBRERfRkFJTFVSRSgpIDw8ICJJbnRl
bnRpb25hbCBmYWlsdXJlLiI7Ci0gICphYm9ydGVkID0gZmFsc2U7Ci19Ci0KLS8vIFRlc3RzIEFE
RF9GQUlMVVJFLgotVEVTVChNYWNyb1Rlc3QsIEFERF9GQUlMVVJFKSB7Ci0gIGJvb2wgYWJvcnRl
ZCA9IHRydWU7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmVIZWxwZXIoJmFi
b3J0ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4i
KTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyBBRERfRkFJTFVSRV9B
VC4KLVRFU1QoTWFjcm9UZXN0LCBBRERfRkFJTFVSRV9BVCkgewotICAvLyBWZXJpZmllcyB0aGF0
IEFERF9GQUlMVVJFX0FUIGRvZXMgZ2VuZXJhdGUgYSBub25mYXRhbCBmYWlsdXJlIGFuZAotICAv
LyB0aGUgZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSB1c2VyLXN0cmVhbWVkIHBhcnQuCi0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlMVVJFX0FUKCJmb28uY2MiLCA0MikgPDwg
Ildyb25nISIsICJXcm9uZyEiKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSB1c2VyLXN0cmVh
bWVkIHBhcnQgaXMgb3B0aW9uYWwuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFERF9GQUlM
VVJFX0FUKCJmb28uY2MiLCA0MiksICJGYWlsZWQiKTsKLQotICAvLyBVbmZvcnR1bmF0ZWx5LCB3
ZSBjYW5ub3QgdmVyaWZ5IHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucwotICAvLyB0
aGUgcmlnaHQgZmlsZSBwYXRoIGFuZCBsaW5lIG51bWJlciB0aGUgc2FtZSB3YXksIGFzCi0gIC8v
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZG9lc24ndCBnZXQgdG8gc2VlIHRoZSBmaWxlIHBh
dGggYW5kCi0gIC8vIGxpbmUgbnVtYmVyLiAgSW5zdGVhZCwgd2UgZG8gdGhhdCBpbiBndGVzdF9v
dXRwdXRfdGVzdF8uY2MuCi19Ci0KLS8vIFRlc3RzIEZBSUwuCi1URVNUKE1hY3JvVGVzdCwgRkFJ
TCkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8ICJJbnRlbnRp
b25hbCBmYWlsdXJlLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICJJbnRlbnRpb25hbCBmYWls
dXJlLiIpOwotfQotCi0vLyBUZXN0cyBTVUNDRUVECi1URVNUKE1hY3JvVGVzdCwgU1VDQ0VFRCkg
ewotICBTVUNDRUVEKCk7Ci0gIFNVQ0NFRUQoKSA8PCAiRXhwbGljaXQgc3VjY2Vzcy4iOwotfQot
Ci0vLyBUZXN0cyBmb3IgRVhQRUNUX0VRKCkgYW5kIEFTU0VSVF9FUSgpLgotLy8KLS8vIFRoZXNl
IHRlc3RzIGZhaWwgKmludGVudGlvbmFsbHkqLCBzLnQuIHRoZSBmYWlsdXJlIG1lc3NhZ2VzIGNh
biBiZQotLy8gZ2VuZXJhdGVkIGFuZCB0ZXN0ZWQuCi0vLwotLy8gV2UgaGF2ZSBkaWZmZXJlbnQg
dGVzdHMgZm9yIGRpZmZlcmVudCBhcmd1bWVudCB0eXBlcy4KLQotLy8gVGVzdHMgdXNpbmcgYm9v
bCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIEJv
b2wpIHsKLSAgRVhQRUNUX0VRKHRydWUsICB0cnVlKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
ewotICAgICAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNlOwotICAgICAgQVNTRVJUX0VRKGZhbHNl
X3ZhbHVlLCB0cnVlKTsKLSAgICB9LCAiVG8gYmUgZXF1YWwgdG86IHRydWUiKTsKLX0KLQotLy8g
VGVzdHMgdXNpbmcgaW50IHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCi1URVNUKEVxQXNz
ZXJ0aW9uVGVzdCwgSW50KSB7Ci0gIEFTU0VSVF9FUSgzMiwgMzIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoMzIsIDMzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IjMzIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIHRpbWVfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NF
UlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIFRpbWVfVCkgewotICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8dGltZV90PigwKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHRpbWVfdD4oMCkp
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8dGltZV90Pigw
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHRpbWVfdD4o
MTIzNCkpLAotICAgICAgICAgICAgICAgICAgICAgICAiMTIzNCIpOwotfQotCi0vLyBUZXN0cyB1
c2luZyBjaGFyIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCi1URVNUKEVxQXNzZXJ0aW9u
VGVzdCwgQ2hhcikgewotICBBU1NFUlRfRVEoJ3onLCAneicpOwotICBjb25zdCBjaGFyIGNoID0g
J2InOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoJ1wwJywgY2gpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKCdhJywgY2gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2giKTsKLX0K
LQotLy8gVGVzdHMgdXNpbmcgd2NoYXJfdCB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgot
VEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFyKSB7Ci0gIEVYUEVDVF9FUShMJ2InLCBMJ2In
KTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdcMCcsIEwneCcpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgRXhwZWN0ZWQ6IEwnXDAnXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCdcMCcgKDAsIDB4MClcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBMJ3gnXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogTCd4JyAoMTIwLCAweDc4KSIp
OwotCi0gIHN0YXRpYyB3Y2hhcl90IHdjaGFyOwotICB3Y2hhciA9IEwnYic7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShMJ2EnLCB3Y2hhciksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJ3Y2hhciIpOwotICB3Y2hhciA9IDB4ODExOTsKLSAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0VRKHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4ODEyMCksIHdjaGFyKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiB3Y2hhciIpOwotfQotCi0vLyBU
ZXN0cyB1c2luZyA6OnN0ZDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCi1U
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgU3RkU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGEgY29uc3Qg
Y2hhciogdG8gYW4gc3RkOjpzdHJpbmcgdGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNvbnRlbnQu
Ci0gIEFTU0VSVF9FUSgiVGVzdCIsIDo6c3RkOjpzdHJpbmcoIlRlc3QiKSk7Ci0KLSAgLy8gQ29t
cGFyZXMgdHdvIGlkZW50aWNhbCBzdGQ6OnN0cmluZ3MuCi0gIHN0YXRpYyBjb25zdCA6OnN0ZDo6
c3RyaW5nIHN0cjEoIkEgKiBpbiB0aGUgbWlkZGxlIik7Ci0gIHN0YXRpYyBjb25zdCA6OnN0ZDo6
c3RyaW5nIHN0cjIoc3RyMSk7Ci0gIEVYUEVDVF9FUShzdHIxLCBzdHIyKTsKLQotICAvLyBDb21w
YXJlcyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVudAot
ICAvLyBjb250ZW50Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgiVGVzdCIs
IDo6c3RkOjpzdHJpbmcoInRlc3QiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJcInRl
c3RcIiIpOwotCi0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6c3RyaW5nIHRvIGEgY2hhciogdGhhdCBo
YXMgZGlmZmVyZW50IGNvbnRlbnQuCi0gIGNoYXIqIGNvbnN0IHAxID0gY29uc3RfY2FzdDxjaGFy
Kj4oImZvbyIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoOjpzdGQ6OnN0
cmluZygiYmFyIiksIHAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAxIik7Ci0KLSAg
Ly8gQ29tcGFyZXMgdHdvIHN0ZDo6c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRz
LCBvbmUgb2YKLSAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxl
LiAgVGhpcyBzaG91bGQgZmFpbC4KLSAgc3RhdGljIDo6c3RkOjpzdHJpbmcgc3RyMyhzdHIxKTsK
LSAgc3RyMy5hdCgyKSA9ICdcMCc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShz
dHIxLCBzdHIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBzdHIz
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogXCJBIFxcMCBpbiB0
aGUgbWlkZGxlXCIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotCi0vLyBUZXN0
cyB1c2luZyA6OnN0ZDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVT
VChFcUFzc2VydGlvblRlc3QsIFN0ZFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgdHdvIGlk
ZW50aWNhbCBzdGQ6OndzdHJpbmdzLgotICBjb25zdCA6OnN0ZDo6d3N0cmluZyB3c3RyMShMIkEg
KiBpbiB0aGUgbWlkZGxlIik7Ci0gIGNvbnN0IDo6c3RkOjp3c3RyaW5nIHdzdHIyKHdzdHIxKTsK
LSAgQVNTRVJUX0VRKHdzdHIxLCB3c3RyMik7Ci0KLSAgLy8gQ29tcGFyZXMgYW4gc3RkOjp3c3Ry
aW5nIHRvIGEgY29uc3Qgd2NoYXJfdCogdGhhdCBoYXMgaWRlbnRpY2FsCi0gIC8vIGNvbnRlbnQu
Ci0gIGNvbnN0IHdjaGFyX3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4
ODExOSwgJ1wwJyB9OwotICBFWFBFQ1RfRVEoOjpzdGQ6OndzdHJpbmcoa1Rlc3RYODExOSksIGtU
ZXN0WDgxMTkpOwotCi0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdj
aGFyX3QqIHRoYXQgaGFzIGRpZmZlcmVudAotICAvLyBjb250ZW50LgotICBjb25zdCB3Y2hhcl90
IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKDo6c3Rk
Ojp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTIwKTsKLSAgfSwgImtUZXN0WDgxMjAiKTsK
LQotICAvLyBDb21wYXJlcyB0d28gc3RkOjp3c3RyaW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNv
bnRlbnRzLCBvbmUgb2YKLSAgLy8gd2hpY2ggaGF2aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUg
bWlkZGxlLgotICA6OnN0ZDo6d3N0cmluZyB3c3RyMyh3c3RyMSk7Ci0gIHdzdHIzLmF0KDIpID0g
TCdcMCc7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh3c3RyMSwgd3N0cjMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAid3N0cjMiKTsKLQotICAvLyBDb21wYXJlcyBh
IHdjaGFyX3QqIHRvIGFuIHN0ZDo6d3N0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQKLSAgLy8gY29u
dGVudC4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0VR
KGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KEwiZm9vIiksIDo6c3RkOjp3c3RyaW5nKEwiYmFyIikpOwot
ICB9LCAiIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLSNpZiBH
VEVTVF9IQVNfR0xPQkFMX1NUUklORwotLy8gVGVzdHMgdXNpbmcgOjpzdHJpbmcgdmFsdWVzIGlu
IHtFWFBFQ1R8QVNTRVJUfV9FUS4KLVRFU1QoRXFBc3NlcnRpb25UZXN0LCBHbG9iYWxTdHJpbmcp
IHsKLSAgLy8gQ29tcGFyZXMgYSBjb25zdCBjaGFyKiB0byBhIDo6c3RyaW5nIHRoYXQgaGFzIGlk
ZW50aWNhbCBjb250ZW50LgotICBFWFBFQ1RfRVEoIlRlc3QiLCA6OnN0cmluZygiVGVzdCIpKTsK
LQotICAvLyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6c3RyaW5ncy4KLSAgY29uc3QgOjpzdHJp
bmcgc3RyMSgiQSAqIGluIHRoZSBtaWRkbGUiKTsKLSAgY29uc3QgOjpzdHJpbmcgc3RyMihzdHIx
KTsKLSAgQVNTRVJUX0VRKHN0cjEsIHN0cjIpOwotCi0gIC8vIENvbXBhcmVzIGEgOjpzdHJpbmcg
dG8gYSBjb25zdCBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29udGVudC4KLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDo6c3RyaW5nKCJUZXN0IiksICJ0ZXN0IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0Iik7Ci0KLSAgLy8gQ29tcGFyZXMgdHdvIDo6c3Ry
aW5ncyB0aGF0IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2Ygd2hpY2gKLSAgLy8gaGF2
aW5nIGEgTlVMIGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgotICA6OnN0cmluZyBzdHIzKHN0cjEp
OwotICBzdHIzLmF0KDIpID0gJ1wwJzsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0VRKHN0cjEsIHN0cjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyMyIpOwotCi0g
IC8vIENvbXBhcmVzIGEgOjpzdHJpbmcgdG8gYSBjaGFyKiB0aGF0IGhhcyBkaWZmZXJlbnQgY29u
dGVudC4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0VR
KDo6c3RyaW5nKCJiYXIiKSwgY29uc3RfY2FzdDxjaGFyKj4oImZvbyIpKTsKLSAgfSwgIiIpOwot
fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSNpZiBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKLQotLy8gVGVzdHMgdXNpbmcgOjp3c3RyaW5nIHZhbHVlcyBpbiB7RVhQ
RUNUfEFTU0VSVH1fRVEuCi1URVNUKEVxQXNzZXJ0aW9uVGVzdCwgR2xvYmFsV2lkZVN0cmluZykg
ewotICAvLyBDb21wYXJlcyB0d28gaWRlbnRpY2FsIDo6d3N0cmluZ3MuCi0gIHN0YXRpYyBjb25z
dCA6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwotICBzdGF0aWMgY29uc3Qg
Ojp3c3RyaW5nIHdzdHIyKHdzdHIxKTsKLSAgRVhQRUNUX0VRKHdzdHIxLCB3c3RyMik7Ci0KLSAg
Ly8gQ29tcGFyZXMgYSBjb25zdCB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBpZGVu
dGljYWwgY29udGVudC4KLSAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTE5W10gPSB7ICdUJywgJ2Un
LCAncycsICd0JywgMHg4MTE5LCAnXDAnIH07Ci0gIEFTU0VSVF9FUShrVGVzdFg4MTE5LCA6Ondz
dHJpbmcoa1Rlc3RYODExOSkpOwotCi0gIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCogdG8g
YSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50Ci0gIC8vIGNvbnRlbnQuCi0gIGNvbnN0IHdj
aGFyX3Qga1Rlc3RYODEyMFtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODEyMCwgJ1wwJyB9
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfRVEo
a1Rlc3RYODEyMCwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKLSAgfSwgIlRlc3RcXHg4MTE5Iik7
Ci0KLSAgLy8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBhIDo6d3N0cmluZyB0aGF0IGhhcyBkaWZm
ZXJlbnQgY29udGVudC4KLSAgd2NoYXJfdCogY29uc3QgcDEgPSBjb25zdF9jYXN0PHdjaGFyX3Qq
PihMImZvbyIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIDo6d3N0
cmluZyhMImJhciIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImJhciIpOwotCi0gIC8v
IENvbXBhcmVzIHR3byA6OndzdHJpbmdzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgY29udGVudHMsIG9u
ZSBvZiB3aGljaAotICAvLyBoYXZpbmcgYSBOVUwgY2hhcmFjdGVyIGluIHRoZSBtaWRkbGUuCi0g
IHN0YXRpYyA6OndzdHJpbmcgd3N0cjM7Ci0gIHdzdHIzID0gd3N0cjE7Ci0gIHdzdHIzLmF0KDIp
ID0gTCdcMCc7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSh3c3RyMSwgd3N0cjMp
LAotICAgICAgICAgICAgICAgICAgICAgICAid3N0cjMiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfR0xPQkFMX1dTVFJJTkcKLQotLy8gVGVzdHMgdXNpbmcgY2hhciBwb2ludGVycyBpbiB7
RVhQRUNUfEFTU0VSVH1fRVEuCi1URVNUKEVxQXNzZXJ0aW9uVGVzdCwgQ2hhclBvaW50ZXIpIHsK
LSAgY2hhciogY29uc3QgcDAgPSBOVUxMOwotICAvLyBPbmx5IHdheSB0byBnZXQgdGhlIE5va2lh
IGNvbXBpbGVyIHRvIGNvbXBpbGUgdGhlIGNhc3QKLSAgLy8gaXMgdG8gaGF2ZSBhIHNlcGFyYXRl
IHZvaWQqIHZhcmlhYmxlIGZpcnN0LiBQdXR0aW5nCi0gIC8vIHRoZSB0d28gY2FzdHMgb24gdGhl
IHNhbWUgbGluZSBkb2Vzbid0IHdvcmssIG5laXRoZXIgZG9lcwotICAvLyBhIGRpcmVjdCBDLXN0
eWxlIHRvIGNoYXIqLgotICB2b2lkKiBwdjEgPSAodm9pZCopMHgxMjM0OyAgLy8gTk9MSU5UCi0g
IHZvaWQqIHB2MiA9ICh2b2lkKikweEFCQzA7ICAvLyBOT0xJTlQKLSAgY2hhciogY29uc3QgcDEg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPihwdjEpOwotICBjaGFyKiBjb25zdCBwMiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHB2Mik7Ci0gIEFTU0VSVF9FUShwMSwgcDEpOwotCi0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMCwgcDIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVG8gYmUgZXF1YWwgdG86IHAyIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9FUShwMSwgcDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAicDIiKTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KDB4
MTIzNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PGNoYXIqPigweEFCQzApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIkFCQzAiKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgd2NoYXJfdCBwb2ludGVycyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCi1U
RVNUKEVxQXNzZXJ0aW9uVGVzdCwgV2lkZUNoYXJQb2ludGVyKSB7Ci0gIHdjaGFyX3QqIGNvbnN0
IHAwID0gTlVMTDsKLSAgLy8gT25seSB3YXkgdG8gZ2V0IHRoZSBOb2tpYSBjb21waWxlciB0byBj
b21waWxlIHRoZSBjYXN0Ci0gIC8vIGlzIHRvIGhhdmUgYSBzZXBhcmF0ZSB2b2lkKiB2YXJpYWJs
ZSBmaXJzdC4gUHV0dGluZwotICAvLyB0aGUgdHdvIGNhc3RzIG9uIHRoZSBzYW1lIGxpbmUgZG9l
c24ndCB3b3JrLCBuZWl0aGVyIGRvZXMKLSAgLy8gYSBkaXJlY3QgQy1zdHlsZSB0byBjaGFyKi4K
LSAgdm9pZCogcHYxID0gKHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVAotICB2b2lkKiBwdjIgPSAo
dm9pZCopMHhBQkMwOyAgLy8gTk9MSU5UCi0gIHdjaGFyX3QqIGNvbnN0IHAxID0gcmVpbnRlcnBy
ZXRfY2FzdDx3Y2hhcl90Kj4ocHYxKTsKLSAgd2NoYXJfdCogY29uc3QgcDIgPSByZWludGVycHJl
dF9jYXN0PHdjaGFyX3QqPihwdjIpOwotICBFWFBFQ1RfRVEocDAsIHAwKTsKLQotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDAsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlRvIGJlIGVxdWFsIHRvOiBwMiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInAyIik7Ci0gIHZv
aWQqIHB2MyA9ICh2b2lkKikweDEyMzQ7ICAvLyBOT0xJTlQKLSAgdm9pZCogcHY0ID0gKHZvaWQq
KTB4QUJDMDsgIC8vIE5PTElOVAotICBjb25zdCB3Y2hhcl90KiBwMyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgd2NoYXJfdCo+KHB2Myk7Ci0gIGNvbnN0IHdjaGFyX3QqIHA0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4ocHY0KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKHAzLCBwNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwNCIpOwotfQot
Ci0vLyBUZXN0cyB1c2luZyBvdGhlciB0eXBlcyBvZiBwb2ludGVycyBpbiB7RVhQRUNUfEFTU0VS
VH1fRVEuCi1URVNUKEVxQXNzZXJ0aW9uVGVzdCwgT3RoZXJQb2ludGVyKSB7Ci0gIEFTU0VSVF9F
UShzdGF0aWNfY2FzdDxjb25zdCBpbnQqPihOVUxMKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IGludCo+KE5VTEwpKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKHN0
YXRpY19jYXN0PGNvbnN0IGludCo+KE5VTEwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQqPigweDEyMzQpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIjB4MTIzNCIpOwotfQotCi0vLyBBIGNsYXNzIHRoYXQgc3VwcG9ydHMgYmlu
YXJ5IGNvbXBhcmlzb24gb3BlcmF0b3JzIGJ1dCBub3Qgc3RyZWFtaW5nLgotY2xhc3MgVW5wcmlu
dGFibGVDaGFyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFVucHJpbnRhYmxlQ2hhcihjaGFyIGNo
KSA6IGNoYXJfKGNoKSB7fQotCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbnByaW50YWJsZUNo
YXImIHJocykgY29uc3QgewotICAgIHJldHVybiBjaGFyXyA9PSByaHMuY2hhcl87Ci0gIH0KLSAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7Ci0gICAg
cmV0dXJuIGNoYXJfICE9IHJocy5jaGFyXzsKLSAgfQotICBib29sIG9wZXJhdG9yPChjb25zdCBV
bnByaW50YWJsZUNoYXImIHJocykgY29uc3QgewotICAgIHJldHVybiBjaGFyXyA8IHJocy5jaGFy
XzsKLSAgfQotICBib29sIG9wZXJhdG9yPD0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNv
bnN0IHsKLSAgICByZXR1cm4gY2hhcl8gPD0gcmhzLmNoYXJfOwotICB9Ci0gIGJvb2wgb3BlcmF0
b3I+KGNvbnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNoYXJf
ID4gcmhzLmNoYXJfOwotICB9Ci0gIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVbnByaW50YWJsZUNo
YXImIHJocykgY29uc3QgewotICAgIHJldHVybiBjaGFyXyA+PSByaHMuY2hhcl87Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIGNoYXIgY2hhcl87Ci19OwotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9FUSgp
IGFuZCBmcmllbmRzIGRvbid0IHJlcXVpcmUgdGhlIGFyZ3VtZW50cyB0bwotLy8gYmUgcHJpbnRh
YmxlLgotVEVTVChDb21wYXJpc29uQXNzZXJ0aW9uVGVzdCwgQWNjZXB0c1VucHJpbnRhYmxlQXJn
cykgewotICBjb25zdCBVbnByaW50YWJsZUNoYXIgeCgneCcpLCB5KCd5Jyk7Ci0gIEFTU0VSVF9F
USh4LCB4KTsKLSAgRVhQRUNUX05FKHgsIHkpOwotICBBU1NFUlRfTFQoeCwgeSk7Ci0gIEVYUEVD
VF9MRSh4LCB5KTsKLSAgQVNTRVJUX0dUKHksIHgpOwotICBFWFBFQ1RfR0UoeCwgeCk7Ci0KLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8
Nzg+Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSh4LCB5KSwgIjEtYnl0
ZSBvYmplY3QgPDc5PiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoeSwg
eSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0dUKHgsIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc5PiIpOwotCi0gIC8vIENv
ZGUgdGVzdGVkIGJ5IEVYUEVDVF9GQVRBTF9GQUlMVVJFIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwK
LSAgLy8gdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIHdyaXRlIFVucHJpbnRhYmxlQ2hhcigneCcp
IGluc3RlYWQgb2YgeC4KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gIC8vIElDRSdzIGluIEMrK0J1
aWxkZXIuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9ORShVbnByaW50YWJsZUNoYXIo
J3gnKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAotICAgICAgICAgICAgICAgICAgICAgICAiMS1i
eXRlIG9iamVjdCA8Nzg+Iik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRShVbnBy
aW50YWJsZUNoYXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAotICAgICAgICAgICAgICAg
ICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7Ci0jZW5kaWYKLSAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoQVNTRVJUX0xFKFVucHJpbnRhYmxlQ2hhcigneScpLCBVbnByaW50YWJsZUNoYXIoJ3gn
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcigneCcpLCBVbnByaW50
YWJsZUNoYXIoJ3knKSksCi0gICAgICAgICAgICAgICAgICAgICAgICIxLWJ5dGUgb2JqZWN0IDw3
OD4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0dFKFVucHJpbnRhYmxlQ2hhcign
eCcpLCBVbnByaW50YWJsZUNoYXIoJ3knKSksCi0gICAgICAgICAgICAgICAgICAgICAgICIxLWJ5
dGUgb2JqZWN0IDw3OT4iKTsKLX0KLQotLy8gVGVzdHMgdGhlIEZSSUVORF9URVNUIG1hY3JvLgot
Ci0vLyBUaGlzIGNsYXNzIGhhcyBhIHByaXZhdGUgbWVtYmVyIHdlIHdhbnQgdG8gdGVzdC4gIFdl
IHdpbGwgdGVzdCBpdAotLy8gYm90aCBpbiBhIFRFU1QgYW5kIGluIGEgVEVTVF9GLgotY2xhc3Mg
Rm9vIHsKLSBwdWJsaWM6Ci0gIEZvbygpIHt9Ci0KLSBwcml2YXRlOgotICBpbnQgQmFyKCkgY29u
c3QgeyByZXR1cm4gMTsgfQotCi0gIC8vIERlY2xhcmVzIHRoZSBmcmllbmQgdGVzdHMgdGhhdCBj
YW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcgotICAvLyBCYXIoKS4KLSAgRlJJRU5EX1RFU1Qo
RlJJRU5EX1RFU1RfVGVzdCwgVEVTVCk7Ci0gIEZSSUVORF9URVNUKEZSSUVORF9URVNUX1Rlc3Qy
LCBURVNUX0YpOwotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgRlJJRU5EX1RFU1QgZGVjbGFyYXRp
b24gYWxsb3dzIGEgVEVTVCB0byBhY2Nlc3MgYQotLy8gY2xhc3MncyBwcml2YXRlIG1lbWJlcnMu
ICBUaGlzIHNob3VsZCBjb21waWxlLgotVEVTVChGUklFTkRfVEVTVF9UZXN0LCBURVNUKSB7Ci0g
IEFTU0VSVF9FUSgxLCBGb28oKS5CYXIoKSk7Ci19Ci0KLS8vIFRoZSBmaXh0dXJlIG5lZWRlZCB0
byB0ZXN0IHVzaW5nIEZSSUVORF9URVNUIHdpdGggVEVTVF9GLgotY2xhc3MgRlJJRU5EX1RFU1Rf
VGVzdDIgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICBGb28gZm9vOwotfTsKLQotLy8g
VGVzdHMgdGhhdCB0aGUgRlJJRU5EX1RFU1QgZGVjbGFyYXRpb24gYWxsb3dzIGEgVEVTVF9GIHRv
IGFjY2VzcyBhCi0vLyBjbGFzcydzIHByaXZhdGUgbWVtYmVycy4gIFRoaXMgc2hvdWxkIGNvbXBp
bGUuCi1URVNUX0YoRlJJRU5EX1RFU1RfVGVzdDIsIFRFU1RfRikgewotICBBU1NFUlRfRVEoMSwg
Zm9vLkJhcigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpZmUgY3ljbGUgb2YgVGVzdCBvYmplY3Rz
LgotCi0vLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIHRoZSBsaWZlIGN5Y2xlIG9mIFRl
c3Qgb2JqZWN0cy4KLS8vCi0vLyBUaGlzIGNsYXNzIGNvdW50cyB0aGUgbnVtYmVyIG9mIGxpdmUg
dGVzdCBvYmplY3RzIHRoYXQgdXNlcyB0aGlzCi0vLyBmaXh0dXJlLgotY2xhc3MgVGVzdExpZmVD
eWNsZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBDb25zdHJ1Y3Rvci4g
IEluY3JlbWVudHMgdGhlIG51bWJlciBvZiB0ZXN0IG9iamVjdHMgdGhhdCB1c2VzCi0gIC8vIHRo
aXMgZml4dHVyZS4KLSAgVGVzdExpZmVDeWNsZVRlc3QoKSB7IGNvdW50XysrOyB9Ci0KLSAgLy8g
RGVzdHJ1Y3Rvci4gIERlY3JlbWVudHMgdGhlIG51bWJlciBvZiB0ZXN0IG9iamVjdHMgdGhhdCB1
c2VzIHRoaXMKLSAgLy8gZml4dHVyZS4KLSAgflRlc3RMaWZlQ3ljbGVUZXN0KCkgeyBjb3VudF8t
LTsgfQotCi0gIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBsaXZlIHRlc3Qgb2JqZWN0cyB0aGF0
IHVzZXMgdGhpcyBmaXh0dXJlLgotICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBjb3VudF87
IH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBpbnQgY291bnRfOwotfTsKLQotaW50IFRlc3RMaWZl
Q3ljbGVUZXN0Ojpjb3VudF8gPSAwOwotCi0vLyBUZXN0cyB0aGUgbGlmZSBjeWNsZSBvZiB0ZXN0
IG9iamVjdHMuCi1URVNUX0YoVGVzdExpZmVDeWNsZVRlc3QsIFRlc3QxKSB7Ci0gIC8vIFRoZXJl
IHNob3VsZCBiZSBvbmx5IG9uZSB0ZXN0IG9iamVjdCBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0J3MK
LSAgLy8gY3VycmVudGx5IGFsaXZlLgotICBBU1NFUlRfRVEoMSwgY291bnQoKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoZSBsaWZlIGN5Y2xlIG9mIHRlc3Qgb2JqZWN0cy4KLVRFU1RfRihUZXN0TGlmZUN5
Y2xlVGVzdCwgVGVzdDIpIHsKLSAgLy8gQWZ0ZXIgVGVzdDEgaXMgZG9uZSBhbmQgVGVzdDIgaXMg
c3RhcnRlZCwgdGhlcmUgc2hvdWxkIHN0aWxsIGJlCi0gIC8vIG9ubHkgb25lIGxpdmUgdGVzdCBv
YmplY3QsIGFzIHRoZSBvYmplY3QgZm9yIFRlc3QxIHNob3VsZCd2ZSBiZWVuCi0gIC8vIGRlbGV0
ZWQuCi0gIEFTU0VSVF9FUSgxLCBjb3VudCgpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLS8v
IFRlc3RzIHRoYXQgdGhlIGNvcHkgY29uc3RydWN0b3Igd29ya3Mgd2hlbiBpdCBpcyBOT1Qgb3B0
aW1pemVkIGF3YXkgYnkKLS8vIHRoZSBjb21waWxlci4KLVRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVz
dCwgQ29weUNvbnN0cnVjdG9yV29ya3NXaGVuTm90T3B0aW1pZWQpIHsKLSAgLy8gQ2hlY2tzIHRo
YXQgdGhlIGNvcHkgY29uc3RydWN0b3IgZG9lc24ndCB0cnkgdG8gZGVyZWZlcmVuY2UgTlVMTCBw
b2ludGVycwotICAvLyBpbiB0aGUgc291cmNlIG9iamVjdC4KLSAgQXNzZXJ0aW9uUmVzdWx0IHIx
ID0gQXNzZXJ0aW9uU3VjY2VzcygpOwotICBBc3NlcnRpb25SZXN1bHQgcjIgPSByMTsKLSAgLy8g
VGhlIGZvbGxvd2luZyBsaW5lIGlzIGFkZGVkIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20g
b3B0aW1pemluZwotICAvLyBhd2F5IHRoZSBjb25zdHJ1Y3RvciBjYWxsLgotICByMSA8PCAiYWJj
IjsKLQotICBBc3NlcnRpb25SZXN1bHQgcjMgPSByMTsKLSAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PGJvb2w+KHIzKSwgc3RhdGljX2Nhc3Q8Ym9vbD4ocjEpKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMi
LCByMS5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFzc2VydGlvblN1Y2Nlc3MgYW5k
IEFzc2VydGlvbkZhaWx1cmUgY29uc3RydWN0Ci0vLyBBc3NlcnRpb25SZXN1bHQgb2JqZWN0cyBh
cyBleHBlY3RlZC4KLVRFU1QoQXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aW9uV29ya3Mp
IHsKLSAgQXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2VzcygpOwotICBFWFBFQ1Rf
VFJVRShyMSk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgcjEubWVzc2FnZSgpKTsKLQotICBBc3NlcnRp
b25SZXN1bHQgcjIgPSBBc3NlcnRpb25TdWNjZXNzKCkgPDwgImFiYyI7Ci0gIEVYUEVDVF9UUlVF
KHIyKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMiLCByMi5tZXNzYWdlKCkpOwotCi0gIEFzc2VydGlv
blJlc3VsdCByMyA9IEFzc2VydGlvbkZhaWx1cmUoKTsKLSAgRVhQRUNUX0ZBTFNFKHIzKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCByMy5tZXNzYWdlKCkpOwotCi0gIEFzc2VydGlvblJlc3VsdCByNCA9
IEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiZGVmIjsKLSAgRVhQRUNUX0ZBTFNFKHI0KTsKLSAgRVhQ
RUNUX1NUUkVRKCJkZWYiLCByNC5tZXNzYWdlKCkpOwotCi0gIEFzc2VydGlvblJlc3VsdCByNSA9
IEFzc2VydGlvbkZhaWx1cmUoTWVzc2FnZSgpIDw8ICJnaGkiKTsKLSAgRVhQRUNUX0ZBTFNFKHI1
KTsKLSAgRVhQRUNUX1NUUkVRKCJnaGkiLCByNS5tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyB0
aGF0IHRoZSBuZWdhdGlvbiBmbGlwcyB0aGUgcHJlZGljYXRlIHJlc3VsdCBidXQga2VlcHMgdGhl
IG1lc3NhZ2UuCi1URVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIE5lZ2F0aW9uV29ya3MpIHsKLSAg
QXNzZXJ0aW9uUmVzdWx0IHIxID0gQXNzZXJ0aW9uU3VjY2VzcygpIDw8ICJhYmMiOwotICBFWFBF
Q1RfRkFMU0UoIXIxKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmMiLCAoIXIxKS5tZXNzYWdlKCkpOwot
Ci0gIEFzc2VydGlvblJlc3VsdCByMiA9IEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiZGVmIjsKLSAg
RVhQRUNUX1RSVUUoIXIyKTsKLSAgRVhQRUNUX1NUUkVRKCJkZWYiLCAoIXIyKS5tZXNzYWdlKCkp
OwotfQotCi1URVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIFN0cmVhbWluZ1dvcmtzKSB7Ci0gIEFz
c2VydGlvblJlc3VsdCByID0gQXNzZXJ0aW9uU3VjY2VzcygpOwotICByIDw8ICJhYmMiIDw8ICdk
JyA8PCAwIDw8IHRydWU7Ci0gIEVYUEVDVF9TVFJFUSgiYWJjZDB0cnVlIiwgci5tZXNzYWdlKCkp
OwotfQotCi1URVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENhblN0cmVhbU9zdHJlYW1NYW5pcHVs
YXRvcnMpIHsKLSAgQXNzZXJ0aW9uUmVzdWx0IHIgPSBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIHIg
PDwgIkRhdGEiIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoIDw8IHN0ZDo6ZW5kcyA8PCAiV2ls
bCBiZSB2aXNpYmxlIjsKLSAgRVhQRUNUX1NUUkVRKCJEYXRhXG5cXDBXaWxsIGJlIHZpc2libGUi
LCByLm1lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRoZSBuZXh0IHRlc3QgdXNlcyBleHBsaWNpdCBjb252
ZXJzaW9uIG9wZXJhdG9ycyAtLSBhIEMrKzExIGZlYXR1cmUuCi0jaWYgR1RFU1RfTEFOR19DWFgx
MQotCi1URVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvbnN0cnVjdGlibGVGcm9tQ29udGV4dHVh
bGx5Q29udmVydGlibGVUb0Jvb2wpIHsKLSAgc3RydWN0IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRv
Qm9vbCB7Ci0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
OyB9Ci0gICAgYm9vbCB2YWx1ZTsKLSAgfTsKLSAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29s
IHYxID0ge2ZhbHNlfTsKLSAgRXhwbGljaXRseUNvbnZlcnRpYmxlVG9Cb29sIHYyID0ge3RydWV9
OwotICBFWFBFQ1RfRkFMU0UodjEpOwotICBFWFBFQ1RfVFJVRSh2Mik7Ci19Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfTEFOR19DWFgxMQotCi1zdHJ1Y3QgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3Vs
dCB7Ci0gIG9wZXJhdG9yIEFzc2VydGlvblJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIEFzc2VydGlv
blJlc3VsdCh0cnVlKTsgfQotfTsKLQotVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0LCBDb25zdHJ1
Y3RpYmxlRnJvbUltcGxpY2l0bHlDb252ZXJ0aWJsZSkgewotICBDb252ZXJ0aWJsZVRvQXNzZXJ0
aW9uUmVzdWx0IG9iajsKLSAgRVhQRUNUX1RSVUUob2JqKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFt
aW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJhdG9yIDw8IGFyZQotLy8g
Ym90aCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLWNsYXNzIEJhc2UgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgQmFzZShpbnQgYW5feCkgOiB4Xyhhbl94KSB7fQotICBpbnQgeCgpIGNvbnN0IHsg
cmV0dXJuIHhfOyB9Ci0gcHJpdmF0ZToKLSAgaW50IHhfOwotfTsKLXN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJhc2UmIHZhbCkgewotICByZXR1cm4gb3MgPDwgdmFsLngoKTsKLX0KLXN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEJhc2UqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIG9zIDw8ICIoIiA8PCBwb2ludGVyLT54KCkg
PDwgIikiOwotfQotCi1URVNUKE1lc3NhZ2VUZXN0LCBDYW5TdHJlYW1Vc2VyVHlwZUluR2xvYmFs
TmFtZVNwYWNlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBCYXNlIGEoMSk7Ci0KLSAgbXNnIDw8IGEg
PDwgJmE7ICAvLyBVc2VzIDo6b3BlcmF0b3I8PC4KLSAgRVhQRUNUX1NUUkVRKCIxKDEpIiwgbXNn
LkdldFN0cmluZygpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5
cGUgd2hvc2UgZGVmaW5pdGlvbiBhbmQgb3BlcmF0b3I8PCBhcmUKLS8vIGJvdGggaW4gYW4gdW5u
YW1lZCBuYW1lc3BhY2UuCi1uYW1lc3BhY2UgewotY2xhc3MgTXlUeXBlSW5Vbm5hbWVkTmFtZVNw
YWNlIDogcHVibGljIEJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTXlUeXBlSW5Vbm5hbWVk
TmFtZVNwYWNlKGludCBhbl94KTogQmFzZShhbl94KSB7fQotfTsKLXN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE15VHlwZUluVW5uYW1lZE5hbWVTcGFjZSYgdmFsKSB7Ci0gIHJldHVybiBvcyA8PCB2YWwueCgp
OwotfQotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNlKiBwb2ludGVy
KSB7Ci0gIHJldHVybiBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgpIDw8ICIpIjsKLX0KLX0gIC8v
IG5hbWVzcGFjZQotCi1URVNUKE1lc3NhZ2VUZXN0LCBDYW5TdHJlYW1Vc2VyVHlwZUluVW5uYW1l
ZE5hbWVTcGFjZSkgewotICBNZXNzYWdlIG1zZzsKLSAgTXlUeXBlSW5Vbm5hbWVkTmFtZVNwYWNl
IGEoMSk7Ci0KLSAgbXNnIDw8IGEgPDwgJmE7ICAvLyBVc2VzIDx1bm5hbWVkX25hbWVzcGFjZT46
Om9wZXJhdG9yPDwuCi0gIEVYUEVDVF9TVFJFUSgiMSgxKSIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRp
b24gYW5kIG9wZXJhdG9yPDwgYXJlCi0vLyBib3RoIGluIGEgdXNlciBuYW1lc3BhY2UuCi1uYW1l
c3BhY2UgbmFtZXNwYWNlMSB7Ci1jbGFzcyBNeVR5cGVJbk5hbWVTcGFjZTEgOiBwdWJsaWMgQmFz
ZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNeVR5cGVJbk5hbWVTcGFjZTEoaW50IGFuX3gpOiBC
YXNlKGFuX3gpIHt9Ci19Owotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYg
b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTXlUeXBlSW5OYW1lU3BhY2UxJiB2
YWwpIHsKLSAgcmV0dXJuIG9zIDw8IHZhbC54KCk7Ci19Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNeVR5
cGVJbk5hbWVTcGFjZTEqIHBvaW50ZXIpIHsKLSAgcmV0dXJuIG9zIDw8ICIoIiA8PCBwb2ludGVy
LT54KCkgPDwgIikiOwotfQotfSAgLy8gbmFtZXNwYWNlIG5hbWVzcGFjZTEKLQotVEVTVChNZXNz
YWdlVGVzdCwgQ2FuU3RyZWFtVXNlclR5cGVJblVzZXJOYW1lU3BhY2UpIHsKLSAgTWVzc2FnZSBt
c2c7Ci0gIG5hbWVzcGFjZTE6Ok15VHlwZUluTmFtZVNwYWNlMSBhKDEpOwotCi0gIG1zZyA8PCBh
IDw8ICZhOyAgLy8gVXNlcyBuYW1lc3BhY2UxOjpvcGVyYXRvcjw8LgotICBFWFBFQ1RfU1RSRVEo
IjEoMSkiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWlu
ZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0aW9uIGlzIGluIGEgdXNlciBuYW1lc3BhY2UKLS8v
IGJ1dCB3aG9zZSBvcGVyYXRvcjw8IGlzIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotbmFtZXNw
YWNlIG5hbWVzcGFjZTIgewotY2xhc3MgTXlUeXBlSW5OYW1lU3BhY2UyIDogcHVibGljIDo6QmFz
ZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNeVR5cGVJbk5hbWVTcGFjZTIoaW50IGFuX3gpOiBC
YXNlKGFuX3gpIHt9Ci19OwotfSAgLy8gbmFtZXNwYWNlIG5hbWVzcGFjZTIKLXN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5hbWVzcGFjZTI6Ok15VHlwZUluTmFtZVNwYWNlMiYgdmFsKSB7Ci0gIHJldHVybiBv
cyA8PCB2YWwueCgpOwotfQotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYg
b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlMjo6TXlUeXBlSW5O
YW1lU3BhY2UyKiBwb2ludGVyKSB7Ci0gIHJldHVybiBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgp
IDw8ICIpIjsKLX0KLQotVEVTVChNZXNzYWdlVGVzdCwgQ2FuU3RyZWFtVXNlclR5cGVJblVzZXJO
YW1lU3BhY2VXaXRoU3RyZWFtT3BlcmF0b3JJbkdsb2JhbCkgewotICBNZXNzYWdlIG1zZzsKLSAg
bmFtZXNwYWNlMjo6TXlUeXBlSW5OYW1lU3BhY2UyIGEoMSk7Ci0KLSAgbXNnIDw8IGEgPDwgJmE7
ICAvLyBVc2VzIDo6b3BlcmF0b3I8PC4KLSAgRVhQRUNUX1NUUkVRKCIxKDEpIiwgbXNnLkdldFN0
cmluZygpLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgTlVMTCBwb2ludGVycyB0
byB0ZXN0aW5nOjpNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwgTnVsbFBvaW50ZXJzKSB7Ci0g
IE1lc3NhZ2UgbXNnOwotICBjaGFyKiBjb25zdCBwMSA9IE5VTEw7Ci0gIHVuc2lnbmVkIGNoYXIq
IGNvbnN0IHAyID0gTlVMTDsKLSAgaW50KiBwMyA9IE5VTEw7Ci0gIGRvdWJsZSogcDQgPSBOVUxM
OwotICBib29sKiBwNSA9IE5VTEw7Ci0gIE1lc3NhZ2UqIHA2ID0gTlVMTDsKLQotICBtc2cgPDwg
cDEgPDwgcDIgPDwgcDMgPDwgcDQgPDwgcDUgPDwgcDY7Ci0gIEFTU0VSVF9TVFJFUSgiKG51bGwp
KG51bGwpKG51bGwpKG51bGwpKG51bGwpKG51bGwpIiwKLSAgICAgICAgICAgICAgIG1zZy5HZXRT
dHJpbmcoKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIHdpZGUgc3RyaW5ncyB0
byB0ZXN0aW5nOjpNZXNzYWdlLgotVEVTVChNZXNzYWdlVGVzdCwgV2lkZVN0cmluZ3MpIHsKLSAg
Ly8gU3RyZWFtcyBhIE5VTEwgb2YgdHlwZSBjb25zdCB3Y2hhcl90Ki4KLSAgY29uc3Qgd2NoYXJf
dCogY29uc3Rfd3N0ciA9IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAg
ICAgICAgIChNZXNzYWdlKCkgPDwgY29uc3Rfd3N0cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0K
LSAgLy8gU3RyZWFtcyBhIE5VTEwgb2YgdHlwZSB3Y2hhcl90Ki4KLSAgd2NoYXJfdCogd3N0ciA9
IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIChNZXNzYWdl
KCkgPDwgd3N0cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0KLSAgLy8gU3RyZWFtcyBhIG5vbi1O
VUxMIG9mIHR5cGUgY29uc3Qgd2NoYXJfdCouCi0gIGNvbnN0X3dzdHIgPSBMImFiY1x4ODExOSI7
Ci0gIEVYUEVDVF9TVFJFUSgiYWJjXHhlOFx4ODRceDk5IiwKLSAgICAgICAgICAgICAgIChNZXNz
YWdlKCkgPDwgY29uc3Rfd3N0cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0KLSAgLy8gU3RyZWFt
cyBhIG5vbi1OVUxMIG9mIHR5cGUgd2NoYXJfdCouCi0gIHdzdHIgPSBjb25zdF9jYXN0PHdjaGFy
X3QqPihjb25zdF93c3RyKTsKLSAgRVhQRUNUX1NUUkVRKCJhYmNceGU4XHg4NFx4OTkiLAotICAg
ICAgICAgICAgICAgKE1lc3NhZ2UoKSA8PCB3c3RyKS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0K
LQotCi0vLyBUaGlzIGxpbmUgdGVzdHMgdGhhdCB3ZSBjYW4gZGVmaW5lIHRlc3RzIGluIHRoZSB0
ZXN0aW5nIG5hbWVzcGFjZS4KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gVGVzdHMgdGhlIFRl
c3RJbmZvIGNsYXNzLgotCi1jbGFzcyBUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJv
dGVjdGVkOgotICBzdGF0aWMgY29uc3QgVGVzdEluZm8qIEdldFRlc3RJbmZvKGNvbnN0IGNoYXIq
IHRlc3RfbmFtZSkgewotICAgIGNvbnN0IFRlc3RDYXNlKiBjb25zdCB0ZXN0X2Nhc2UgPSBHZXRV
bml0VGVzdEltcGwoKS0+Ci0gICAgICAgIEdldFRlc3RDYXNlKCJUZXN0SW5mb1Rlc3QiLCAiIiwg
TlVMTCwgTlVMTCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RfY2FzZS0+dG90YWxf
dGVzdF9jb3VudCgpOyArK2kpIHsKLSAgICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2lu
Zm8gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKGkpOwotICAgICAgaWYgKHN0cmNtcCh0ZXN0X25h
bWUsIHRlc3RfaW5mby0+bmFtZSgpKSA9PSAwKQotICAgICAgICByZXR1cm4gdGVzdF9pbmZvOwot
ICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIHN0YXRpYyBjb25zdCBUZXN0UmVzdWx0
KiBHZXRUZXN0UmVzdWx0KAotICAgICAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbykgewotICAg
IHJldHVybiB0ZXN0X2luZm8tPnJlc3VsdCgpOwotICB9Ci19OwotCi0vLyBUZXN0cyBUZXN0SW5m
bzo6dGVzdF9jYXNlX25hbWUoKSBhbmQgVGVzdEluZm86Om5hbWUoKS4KLVRFU1RfRihUZXN0SW5m
b1Rlc3QsIE5hbWVzKSB7Ci0gIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPSBHZXRU
ZXN0SW5mbygiTmFtZXMiKTsKLQotICBBU1NFUlRfU1RSRVEoIlRlc3RJbmZvVGVzdCIsIHRlc3Rf
aW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEFTU0VSVF9TVFJFUSgiTmFtZXMiLCB0ZXN0X2lu
Zm8tPm5hbWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RJbmZvOjpyZXN1bHQoKS4KLVRFU1RfRihU
ZXN0SW5mb1Rlc3QsIHJlc3VsdCkgewotICBjb25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZv
ID0gR2V0VGVzdEluZm8oInJlc3VsdCIpOwotCi0gIC8vIEluaXRpYWxseSwgdGhlcmUgaXMgbm8g
VGVzdFBhcnRSZXN1bHQgZm9yIHRoaXMgdGVzdC4KLSAgQVNTRVJUX0VRKDAsIEdldFRlc3RSZXN1
bHQodGVzdF9pbmZvKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLQotICAvLyBBZnRlciB0aGUgcHJl
dmlvdXMgYXNzZXJ0aW9uLCB0aGVyZSBpcyBzdGlsbCBub25lLgotICBBU1NFUlRfRVEoMCwgR2V0
VGVzdFJlc3VsdCh0ZXN0X2luZm8pLT50b3RhbF9wYXJ0X2NvdW50KCkpOwotfQotCi0jZGVmaW5l
IFZFUklGWV9DT0RFX0xPQ0FUSU9OIFwKLSAgY29uc3QgaW50IGV4cGVjdGVkX2xpbmUgPSBfX0xJ
TkVfXyAtIDE7IFwKLSAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFVuaXRU
ZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOyBcCi0gIEFTU0VSVF9UUlVFKHRlc3RfaW5m
byk7IFwKLSAgRVhQRUNUX1NUUkVRKF9fRklMRV9fLCB0ZXN0X2luZm8tPmZpbGUoKSk7IFwKLSAg
RVhQRUNUX0VRKGV4cGVjdGVkX2xpbmUsIHRlc3RfaW5mby0+bGluZSgpKQotCi1URVNUKENvZGVM
b2NhdGlvbkZvclRFU1QsIFZlcmlmeSkgewotICBWRVJJRllfQ09ERV9MT0NBVElPTjsKLX0KLQot
Y2xhc3MgQ29kZUxvY2F0aW9uRm9yVEVTVEYgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi1URVNUX0Yo
Q29kZUxvY2F0aW9uRm9yVEVTVEYsIFZlcmlmeSkgewotICBWRVJJRllfQ09ERV9MT0NBVElPTjsK
LX0KLQotY2xhc3MgQ29kZUxvY2F0aW9uRm9yVEVTVFAgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxp
bnQ+IHsKLX07Ci0KLVRFU1RfUChDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmVyaWZ5KSB7Ci0gIFZF
UklGWV9DT0RFX0xPQ0FUSU9OOwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIENvZGVM
b2NhdGlvbkZvclRFU1RQLCBWYWx1ZXMoMCkpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCA6IHB1YmxpYyBUZXN0IHsKLX07Ci0KLVRZUEVE
X1RFU1RfQ0FTRShDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1QsIGludCk7Ci0KLVRZUEVEX1RFU1Qo
Q29kZUxvY2F0aW9uRm9yVFlQRURURVNULCBWZXJpZnkpIHsKLSAgVkVSSUZZX0NPREVfTE9DQVRJ
T047Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQ29kZUxvY2F0aW9uRm9yVFlQ
RURURVNUUCA6IHB1YmxpYyBUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKENvZGVMb2Nh
dGlvbkZvclRZUEVEVEVTVFApOwotCi1UWVBFRF9URVNUX1AoQ29kZUxvY2F0aW9uRm9yVFlQRURU
RVNUUCwgVmVyaWZ5KSB7Ci0gIFZFUklGWV9DT0RFX0xPQ0FUSU9OOwotfQotCi1SRUdJU1RFUl9U
WVBFRF9URVNUX0NBU0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQLCBWZXJpZnkpOwotCi1J
TlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQ29kZUxvY2F0aW9uRm9yVFlQRURURVNU
UCwgaW50KTsKLQotI3VuZGVmIFZFUklGWV9DT0RFX0xPQ0FUSU9OCi0KLS8vIFRlc3RzIHNldHRp
bmcgdXAgYW5kIHRlYXJpbmcgZG93biBhIHRlc3QgY2FzZS4KLQotY2xhc3MgU2V0VXBUZXN0Q2Fz
ZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBUaGlzIHdpbGwgYmUgY2Fs
bGVkIG9uY2UgYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlCi0gIC8vIGlz
IHJ1bi4KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBwcmludGYoIlNldHRp
bmcgdXAgdGhlIHRlc3QgY2FzZSAuIC4gLlxuIik7Ci0KLSAgICAvLyBJbml0aWFsaXplcyBzb21l
IHNoYXJlZCByZXNvdXJjZS4gIEluIHRoaXMgc2ltcGxlIGV4YW1wbGUsIHdlCi0gICAgLy8ganVz
dCBjcmVhdGUgYSBDIHN0cmluZy4gIE1vcmUgY29tcGxleCBzdHVmZiBjYW4gYmUgZG9uZSBpZgot
ICAgIC8vIGRlc2lyZWQuCi0gICAgc2hhcmVkX3Jlc291cmNlXyA9ICIxMjMiOwotCi0gICAgLy8g
SW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZXMgdGhhdCBoYXZlIGJlZW4gc2V0IHVw
LgotICAgIGNvdW50ZXJfKys7Ci0KLSAgICAvLyBTZXRVcFRlc3RDYXNlKCkgc2hvdWxkIGJlIGNh
bGxlZCBvbmx5IG9uY2UuCi0gICAgRVhQRUNUX0VRKDEsIGNvdW50ZXJfKTsKLSAgfQotCi0gIC8v
IFRoaXMgd2lsbCBiZSBjYWxsZWQgb25jZSBhZnRlciB0aGUgbGFzdCB0ZXN0IGluIHRoaXMgdGVz
dCBjYXNlIGlzCi0gIC8vIHJ1bi4KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsK
LSAgICBwcmludGYoIlRlYXJpbmcgZG93biB0aGUgdGVzdCBjYXNlIC4gLiAuXG4iKTsKLQotICAg
IC8vIERlY3JlbWVudHMgdGhlIG51bWJlciBvZiB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHNl
dCB1cC4KLSAgICBjb3VudGVyXy0tOwotCi0gICAgLy8gVGVhckRvd25UZXN0Q2FzZSgpIHNob3Vs
ZCBiZSBjYWxsZWQgb25seSBvbmNlLgotICAgIEVYUEVDVF9FUSgwLCBjb3VudGVyXyk7Ci0KLSAg
ICAvLyBDbGVhbnMgdXAgdGhlIHNoYXJlZCByZXNvdXJjZS4KLSAgICBzaGFyZWRfcmVzb3VyY2Vf
ID0gTlVMTDsKLSAgfQotCi0gIC8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVhY2ggdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIC8vIFNl
dFVwVGVzdENhc2UoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZSwgc28gY291bnRlcl8gc2hv
dWxkCi0gICAgLy8gYWx3YXlzIGJlIDEuCi0gICAgRVhQRUNUX0VRKDEsIGNvdW50ZXJfKTsKLSAg
fQotCi0gIC8vIE51bWJlciBvZiB0ZXN0IGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHNldCB1cC4KLSAg
c3RhdGljIGludCBjb3VudGVyXzsKLQotICAvLyBTb21lIHJlc291cmNlIHRvIGJlIHNoYXJlZCBi
eSBhbGwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFy
ZWRfcmVzb3VyY2VfOwotfTsKLQotaW50IFNldFVwVGVzdENhc2VUZXN0Ojpjb3VudGVyXyA9IDA7
Ci1jb25zdCBjaGFyKiBTZXRVcFRlc3RDYXNlVGVzdDo6c2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7
Ci0KLS8vIEEgdGVzdCB0aGF0IHVzZXMgdGhlIHNoYXJlZCByZXNvdXJjZS4KLVRFU1RfRihTZXRV
cFRlc3RDYXNlVGVzdCwgVGVzdDEpIHsKLSAgRVhQRUNUX1NUUk5FKE5VTEwsIHNoYXJlZF9yZXNv
dXJjZV8pOwotfQotCi0vLyBBbm90aGVyIHRlc3QgdGhhdCB1c2VzIHRoZSBzaGFyZWQgcmVzb3Vy
Y2UuCi1URVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3QsIFRlc3QyKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
MTIzIiwgc2hhcmVkX3Jlc291cmNlXyk7Ci19Ci0KLS8vIFRoZSBJbml0R29vZ2xlVGVzdFRlc3Qg
dGVzdCBjYXNlIHRlc3RzIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCkuCi0KLS8vIFRoZSBGbGFn
cyBzdHJ1Y3Qgc3RvcmVzIGEgY29weSBvZiBhbGwgR29vZ2xlIFRlc3QgZmxhZ3MuCi1zdHJ1Y3Qg
RmxhZ3MgewotICAvLyBDb25zdHJ1Y3RzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIGVhY2ggZmxhZyBo
YXMgaXRzIGRlZmF1bHQgdmFsdWUuCi0gIEZsYWdzKCkgOiBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0
cyhmYWxzZSksCi0gICAgICAgICAgICBicmVha19vbl9mYWlsdXJlKGZhbHNlKSwKLSAgICAgICAg
ICAgIGNhdGNoX2V4Y2VwdGlvbnMoZmFsc2UpLAotICAgICAgICAgICAgZGVhdGhfdGVzdF91c2Vf
Zm9yayhmYWxzZSksCi0gICAgICAgICAgICBmaWx0ZXIoIiIpLAotICAgICAgICAgICAgbGlzdF90
ZXN0cyhmYWxzZSksCi0gICAgICAgICAgICBvdXRwdXQoIiIpLAotICAgICAgICAgICAgcHJpbnRf
dGltZSh0cnVlKSwKLSAgICAgICAgICAgIHJhbmRvbV9zZWVkKDApLAotICAgICAgICAgICAgcmVw
ZWF0KDEpLAotICAgICAgICAgICAgc2h1ZmZsZShmYWxzZSksCi0gICAgICAgICAgICBzdGFja190
cmFjZV9kZXB0aChrTWF4U3RhY2tUcmFjZURlcHRoKSwKLSAgICAgICAgICAgIHN0cmVhbV9yZXN1
bHRfdG8oIiIpLAotICAgICAgICAgICAgdGhyb3dfb25fZmFpbHVyZShmYWxzZSkge30KLQotICAv
LyBGYWN0b3J5IG1ldGhvZHMuCi0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0
aGUgZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVu
IHZhbHVlLgotICBzdGF0aWMgRmxhZ3MgQWxzb1J1bkRpc2FibGVkVGVzdHMoYm9vbCBhbHNvX3J1
bl9kaXNhYmxlZF90ZXN0cykgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLmFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzID0gYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM7Ci0gICAgcmV0dXJuIGZs
YWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0YXRp
YyBGbGFncyBCcmVha09uRmFpbHVyZShib29sIGJyZWFrX29uX2ZhaWx1cmUpIHsKLSAgICBGbGFn
cyBmbGFnczsKLSAgICBmbGFncy5icmVha19vbl9mYWlsdXJlID0gYnJlYWtfb25fZmFpbHVyZTsK
LSAgICByZXR1cm4gZmxhZ3M7Ci0gIH0KLQotICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdo
ZXJlIHRoZSBndGVzdF9jYXRjaF9leGNlcHRpb25zIGZsYWcgaGFzCi0gIC8vIHRoZSBnaXZlbiB2
YWx1ZS4KLSAgc3RhdGljIEZsYWdzIENhdGNoRXhjZXB0aW9ucyhib29sIGNhdGNoX2V4Y2VwdGlv
bnMpIHsKLSAgICBGbGFncyBmbGFnczsKLSAgICBmbGFncy5jYXRjaF9leGNlcHRpb25zID0gY2F0
Y2hfZXhjZXB0aW9uczsKLSAgICByZXR1cm4gZmxhZ3M7Ci0gIH0KLQotICAvLyBDcmVhdGVzIGEg
RmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIGZsYWcgaGFz
Ci0gIC8vIHRoZSBnaXZlbiB2YWx1ZS4KLSAgc3RhdGljIEZsYWdzIERlYXRoVGVzdFVzZUZvcmso
Ym9vbCBkZWF0aF90ZXN0X3VzZV9mb3JrKSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3Mu
ZGVhdGhfdGVzdF91c2VfZm9yayA9IGRlYXRoX3Rlc3RfdXNlX2Zvcms7Ci0gICAgcmV0dXJuIGZs
YWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
ZmlsdGVyIGZsYWcgaGFzIHRoZSBnaXZlbgotICAvLyB2YWx1ZS4KLSAgc3RhdGljIEZsYWdzIEZp
bHRlcihjb25zdCBjaGFyKiBmaWx0ZXIpIHsKLSAgICBGbGFncyBmbGFnczsKLSAgICBmbGFncy5m
aWx0ZXIgPSBmaWx0ZXI7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBh
IEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIGhhcyB0aGUKLSAg
Ly8gZ2l2ZW4gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBMaXN0VGVzdHMoYm9vbCBsaXN0X3Rlc3Rz
KSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3MubGlzdF90ZXN0cyA9IGxpc3RfdGVzdHM7
Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3
aGVyZSB0aGUgZ3Rlc3Rfb3V0cHV0IGZsYWcgaGFzIHRoZSBnaXZlbgotICAvLyB2YWx1ZS4KLSAg
c3RhdGljIEZsYWdzIE91dHB1dChjb25zdCBjaGFyKiBvdXRwdXQpIHsKLSAgICBGbGFncyBmbGFn
czsKLSAgICBmbGFncy5vdXRwdXQgPSBvdXRwdXQ7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0K
LSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcHJpbnRfdGltZSBm
bGFnIGhhcyB0aGUgZ2l2ZW4KLSAgLy8gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBQcmludFRpbWUo
Ym9vbCBwcmludF90aW1lKSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3MucHJpbnRfdGlt
ZSA9IHByaW50X3RpbWU7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBh
IEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmFuZG9tX3NlZWQgZmxhZyBoYXMKLSAgLy8g
dGhlIGdpdmVuIHZhbHVlLgotICBzdGF0aWMgRmxhZ3MgUmFuZG9tU2VlZChJbnQzMiByYW5kb21f
c2VlZCkgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLnJhbmRvbV9zZWVkID0gcmFuZG9t
X3NlZWQ7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0
cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfcmVwZWF0IGZsYWcgaGFzIHRoZSBnaXZlbgotICAvLyB2YWx1
ZS4KLSAgc3RhdGljIEZsYWdzIFJlcGVhdChJbnQzMiByZXBlYXQpIHsKLSAgICBGbGFncyBmbGFn
czsKLSAgICBmbGFncy5yZXBlYXQgPSByZXBlYXQ7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0K
LSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rfc2h1ZmZsZSBmbGFn
IGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBTaHVmZmxlKGJvb2wg
c2h1ZmZsZSkgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLnNodWZmbGUgPSBzaHVmZmxl
OwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qg
d2hlcmUgdGhlIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpIGZsYWcgaGFzCi0gIC8vIHRo
ZSBnaXZlbiB2YWx1ZS4KLSAgc3RhdGljIEZsYWdzIFN0YWNrVHJhY2VEZXB0aChJbnQzMiBzdGFj
a190cmFjZV9kZXB0aCkgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLnN0YWNrX3RyYWNl
X2RlcHRoID0gc3RhY2tfdHJhY2VfZGVwdGg7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAg
Ly8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgR1RFU1RfRkxBRyhzdHJlYW1fcmVz
dWx0X3RvKSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBT
dHJlYW1SZXN1bHRUbyhjb25zdCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvKSB7Ci0gICAgRmxhZ3Mg
ZmxhZ3M7Ci0gICAgZmxhZ3Muc3RyZWFtX3Jlc3VsdF90byA9IHN0cmVhbV9yZXN1bHRfdG87Ci0g
ICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVy
ZSB0aGUgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFs
dWUuCi0gIHN0YXRpYyBGbGFncyBUaHJvd09uRmFpbHVyZShib29sIHRocm93X29uX2ZhaWx1cmUp
IHsKLSAgICBGbGFncyBmbGFnczsKLSAgICBmbGFncy50aHJvd19vbl9mYWlsdXJlID0gdGhyb3df
b25fZmFpbHVyZTsKLSAgICByZXR1cm4gZmxhZ3M7Ci0gIH0KLQotICAvLyBUaGVzZSBmaWVsZHMg
c3RvcmUgdGhlIGZsYWcgdmFsdWVzLgotICBib29sIGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzOwot
ICBib29sIGJyZWFrX29uX2ZhaWx1cmU7Ci0gIGJvb2wgY2F0Y2hfZXhjZXB0aW9uczsKLSAgYm9v
bCBkZWF0aF90ZXN0X3VzZV9mb3JrOwotICBjb25zdCBjaGFyKiBmaWx0ZXI7Ci0gIGJvb2wgbGlz
dF90ZXN0czsKLSAgY29uc3QgY2hhciogb3V0cHV0OwotICBib29sIHByaW50X3RpbWU7Ci0gIElu
dDMyIHJhbmRvbV9zZWVkOwotICBJbnQzMiByZXBlYXQ7Ci0gIGJvb2wgc2h1ZmZsZTsKLSAgSW50
MzIgc3RhY2tfdHJhY2VfZGVwdGg7Ci0gIGNvbnN0IGNoYXIqIHN0cmVhbV9yZXN1bHRfdG87Ci0g
IGJvb2wgdGhyb3dfb25fZmFpbHVyZTsKLX07Ci0KLS8vIEZpeHR1cmUgZm9yIHRlc3RpbmcgSW5p
dEdvb2dsZVRlc3QoKS4KLWNsYXNzIEluaXRHb29nbGVUZXN0VGVzdCA6IHB1YmxpYyBUZXN0IHsK
LSBwcm90ZWN0ZWQ6Ci0gIC8vIENsZWFycyB0aGUgZmxhZ3MgYmVmb3JlIGVhY2ggdGVzdC4KLSAg
dmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMpID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSA9IGZhbHNl
OwotICAgIEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICBHVEVTVF9G
TEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhmaWx0ZXIp
ID0gIiI7Ci0gICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9IGZhbHNlOwotICAgIEdURVNUX0ZM
QUcob3V0cHV0KSA9ICIiOwotICAgIEdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSB0cnVlOwotICAg
IEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpID0gMDsKLSAgICBHVEVTVF9GTEFHKHJlcGVhdCkgPSAx
OwotICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKHN0YWNr
X3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7Ci0gICAgR1RFU1RfRkxBRyhzdHJl
YW1fcmVzdWx0X3RvKSA9ICIiOwotICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSBm
YWxzZTsKLSAgfQotCi0gIC8vIEFzc2VydHMgdGhhdCB0d28gbmFycm93IG9yIHdpZGUgc3RyaW5n
IGFycmF5cyBhcmUgZXF1YWwuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgc3Rh
dGljIHZvaWQgQXNzZXJ0U3RyaW5nQXJyYXlFcShzaXplX3Qgc2l6ZTEsIENoYXJUeXBlKiogYXJy
YXkxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplMiwgQ2hh
clR5cGUqKiBhcnJheTIpIHsKLSAgICBBU1NFUlRfRVEoc2l6ZTEsIHNpemUyKSA8PCAiIEFycmF5
IHNpemVzIGRpZmZlcmVudC4iOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gc2l6ZTE7
IGkrKykgewotICAgICAgQVNTRVJUX1NUUkVRKGFycmF5MVtpXSwgYXJyYXkyW2ldKSA8PCAiIHdo
ZXJlIGkgPT0gIiA8PCBpOwotICAgIH0KLSAgfQotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGZs
YWcgdmFsdWVzIG1hdGNoIHRoZSBleHBlY3RlZCB2YWx1ZXMuCi0gIHN0YXRpYyB2b2lkIENoZWNr
RmxhZ3MoY29uc3QgRmxhZ3MmIGV4cGVjdGVkKSB7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLmFs
c29fcnVuX2Rpc2FibGVkX3Rlc3RzLAotICAgICAgICAgICAgICBHVEVTVF9GTEFHKGFsc29fcnVu
X2Rpc2FibGVkX3Rlc3RzKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLmJyZWFrX29uX2ZhaWx1
cmUsIEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpOwotICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC5jYXRjaF9leGNlcHRpb25zLCBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKTsKLSAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWQuZGVhdGhfdGVzdF91c2VfZm9yaywgR1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3VzZV9mb3JrKSk7Ci0gICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLmZpbHRlciwgR1RFU1Rf
RkxBRyhmaWx0ZXIpLmNfc3RyKCkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5saXN0X3Rlc3Rz
LCBHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKTsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQub3V0
cHV0LCBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVk
LnByaW50X3RpbWUsIEdURVNUX0ZMQUcocHJpbnRfdGltZSkpOwotICAgIEVYUEVDVF9FUShleHBl
Y3RlZC5yYW5kb21fc2VlZCwgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpOwotICAgIEVYUEVDVF9F
UShleHBlY3RlZC5yZXBlYXQsIEdURVNUX0ZMQUcocmVwZWF0KSk7Ci0gICAgRVhQRUNUX0VRKGV4
cGVjdGVkLnNodWZmbGUsIEdURVNUX0ZMQUcoc2h1ZmZsZSkpOwotICAgIEVYUEVDVF9FUShleHBl
Y3RlZC5zdGFja190cmFjZV9kZXB0aCwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpOwot
ICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC5zdHJlYW1fcmVzdWx0X3RvLAotICAgICAgICAgICAg
ICAgICBHVEVTVF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pLmNfc3RyKCkpOwotICAgIEVYUEVDVF9F
UShleHBlY3RlZC50aHJvd19vbl9mYWlsdXJlLCBHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUp
KTsKLSAgfQotCi0gIC8vIFBhcnNlcyBhIGNvbW1hbmQgbGluZSAoc3BlY2lmaWVkIGJ5IGFyZ2Mx
IGFuZCBhcmd2MSksIHRoZW4KLSAgLy8gdmVyaWZpZXMgdGhhdCB0aGUgZmxhZyB2YWx1ZXMgYXJl
IGV4cGVjdGVkIGFuZCB0aGF0IHRoZQotICAvLyByZWNvZ25pemVkIGZsYWdzIGFyZSByZW1vdmVk
IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgot
ICBzdGF0aWMgdm9pZCBUZXN0UGFyc2luZ0ZsYWdzKGludCBhcmdjMSwgY29uc3QgQ2hhclR5cGUq
KiBhcmd2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJnYzIsIGNvbnN0
IENoYXJUeXBlKiogYXJndjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxhZ3MmIGV4cGVjdGVkLCBib29sIHNob3VsZF9wcmludF9oZWxwKSB7Ci0gICAgY29uc3QgYm9v
bCBzYXZlZF9oZWxwX2ZsYWcgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZzsKLSAg
ICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IGZhbHNlOwotCi0jaWYgR1RFU1Rf
SEFTX1NUUkVBTV9SRURJUkVDVElPTgotICAgIENhcHR1cmVTdGRvdXQoKTsKLSNlbmRpZgotCi0g
ICAgLy8gUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgaW50ZXJuYWw6OlBhcnNlR29vZ2xl
VGVzdEZsYWdzT25seSgmYXJnYzEsIGNvbnN0X2Nhc3Q8Q2hhclR5cGUqKj4oYXJndjEpKTsKLQot
I2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBj
YXB0dXJlZF9zdGRvdXQgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotI2VuZGlmCi0KLSAgICAvLyBW
ZXJpZmllcyB0aGUgZmxhZyB2YWx1ZXMuCi0gICAgQ2hlY2tGbGFncyhleHBlY3RlZCk7Ci0KLSAg
ICAvLyBWZXJpZmllcyB0aGF0IHRoZSByZWNvZ25pemVkIGZsYWdzIGFyZSByZW1vdmVkIGZyb20g
dGhlIGNvbW1hbmQKLSAgICAvLyBsaW5lLgotICAgIEFzc2VydFN0cmluZ0FycmF5RXEoYXJnYzEg
KyAxLCBhcmd2MSwgYXJnYzIgKyAxLCBhcmd2Mik7Ci0KLSAgICAvLyBQYXJzZUdvb2dsZVRlc3RG
bGFnc09ubHkgc2hvdWxkIG5laXRoZXIgc2V0IGdfaGVscF9mbGFnIG5vciBwcmludCB0aGUKLSAg
ICAvLyBoZWxwIG1lc3NhZ2UgZm9yIHRoZSBmbGFncyBpdCByZWNvZ25pemVzLgotICAgIEVYUEVD
VF9FUShzaG91bGRfcHJpbnRfaGVscCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxwX2ZsYWcp
OwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQgPQotICAgICAgICAiVGhpcyBwcm9ncmFtIGNvbnRh
aW5zIHRlc3RzIHdyaXR0ZW4gdXNpbmciOwotICAgIGlmIChzaG91bGRfcHJpbnRfaGVscCkgewot
ICAgICAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgZXhwZWN0ZWRfaGVscF9mcmFn
bWVudCwgY2FwdHVyZWRfc3Rkb3V0KTsKLSAgICB9IGVsc2UgewotICAgICAgRVhQRUNUX1BSRURf
Rk9STUFUMihJc05vdFN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfaGVscF9mcmFnbWVudCwgY2FwdHVyZWRfc3Rkb3V0KTsKLSAgICB9Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Omdf
aGVscF9mbGFnID0gc2F2ZWRfaGVscF9mbGFnOwotICB9Ci0KLSAgLy8gVGhpcyBtYWNybyB3cmFw
cyBUZXN0UGFyc2luZ0ZsYWdzIHMudC4gdGhlIHVzZXIgZG9lc24ndCBuZWVkCi0gIC8vIHRvIHNw
ZWNpZnkgdGhlIGFycmF5IHNpemVzLgotCi0jZGVmaW5lIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndjEsIGFyZ3YyLCBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApIFwKLSAgVGVzdFBh
cnNpbmdGbGFncyhzaXplb2YoYXJndjEpL3NpemVvZigqYXJndjEpIC0gMSwgYXJndjEsIFwKLSAg
ICAgICAgICAgICAgICAgICBzaXplb2YoYXJndjIpL3NpemVvZigqYXJndjIpIC0gMSwgYXJndjIs
IFwKLSAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwgc2hvdWxkX3ByaW50X2hlbHApCi19Owot
Ci0vLyBUZXN0cyBwYXJzaW5nIGFuIGVtcHR5IGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0R29v
Z2xlVGVzdFRlc3QsIEVtcHR5KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICBOVUxM
Ci0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICBOVUxMCi0gIH07Ci0KLSAg
R1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3MoKSwgZmFsc2UpOwot
fQotCi0vLyBUZXN0cyBwYXJzaW5nIGEgY29tbWFuZCBsaW5lIHRoYXQgaGFzIG5vIGZsYWcuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBOb0ZsYWcpIHsKLSAgY29uc3QgY2hhciogYXJndltd
ID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKLX0KLQotLy8gVGVz
dHMgcGFyc2luZyBhIGJhZCAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVU
ZXN0VGVzdCwgRmlsdGVyQmFkKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9v
LmV4ZSIsCi0gICAgIi0tZ3Rlc3RfZmlsdGVyIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3Qg
Y2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfZmlsdGVyIiwK
LSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2
MiwgRmxhZ3M6OkZpbHRlcigiIiksIHRydWUpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIGFuIGVt
cHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBGaWx0
ZXJFbXB0eSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAg
ICItLWd0ZXN0X2ZpbHRlcj0iLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2
MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiIiksIGZhbHNlKTsKLX0K
LQotLy8gVGVzdHMgcGFyc2luZyBhIG5vbi1lbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyTm9uRW1wdHkpIHsKLSAgY29uc3QgY2hhciog
YXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9maWx0ZXI9YWJjIiwKLSAg
ICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIs
Ci0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJn
djIsIEZsYWdzOjpGaWx0ZXIoImFiYyIpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9icmVha19vbl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJl
YWtPbkZhaWx1cmVXaXRob3V0VmFsdWUpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAg
ICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKLSAgICBOVUxMCi19
OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwK
LSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6
QnJlYWtPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0
ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFr
T25GYWlsdXJlRmFsc2VfMCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5l
eGUiLAotICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MCIsCi0gICAgTlVMTAotICB9Owot
Ci0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAg
fTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6QnJl
YWtPbkZhaWx1cmUoZmFsc2UpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF9icmVha19vbl9mYWlsdXJlPWYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09u
RmFpbHVyZUZhbHNlX2YpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhl
IiwKLSAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPWYiLAotICAgIE5VTEwKLSAgfTsKLQot
ICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07
Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkJyZWFr
T25GYWlsdXJlKGZhbHNlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZh
aWx1cmVGYWxzZV9GKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIs
Ci0gICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1GIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
Y29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9Owot
Ci0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpCcmVha09u
RmFpbHVyZShmYWxzZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVUcnVlKSB7Ci0gIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZT0xIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsK
LSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19G
TEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpCcmVha09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOwot
fQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucy4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIENhdGNoRXhjZXB0aW9ucykgewotICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnMiLAot
ICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhl
IiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBh
cmd2MiwgRmxhZ3M6OkNhdGNoRXhjZXB0aW9ucyh0cnVlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3RfZGVhdGhfdGVzdF91c2VfZm9yay4KLVRFU1RfRihJbml0R29vZ2xl
VGVzdFRlc3QsIERlYXRoVGVzdFVzZUZvcmspIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewot
ICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9kZWF0aF90ZXN0X3VzZV9mb3JrIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIs
IEZsYWdzOjpEZWF0aFRlc3RVc2VGb3JrKHRydWUpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIGhh
dmluZyB0aGUgc2FtZSBmbGFnIHR3aWNlIHdpdGggZGlmZmVyZW50IHZhbHVlcy4gIFRoZQotLy8g
ZXhwZWN0ZWQgYmVoYXZpb3IgaXMgdGhhdCB0aGUgb25lIGNvbWluZyBsYXN0IHRha2VzIHByZWNl
ZGVuY2UuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEdXBsaWNhdGVkRmxhZ3MpIHsKLSAg
Y29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9maWx0
ZXI9YSIsCi0gICAgIi0tZ3Rlc3RfZmlsdGVyPWIiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25z
dCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
R1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiYiIp
LCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIGhhdmluZyBhbiB1bnJlY29nbml6ZWQgZmxhZyBvbiB0
aGUgY29tbWFuZCBsaW5lLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVW5yZWNvZ25pemVk
RmxhZykgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICIt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUiLAotICAgICJiYXIiLCAgLy8gVW5yZWNvZ25pemVkIGJ5
IEdvb2dsZSBUZXN0LgotICAgICItLWd0ZXN0X2ZpbHRlcj1iIiwKLSAgICBOVUxMCi0gIH07Ci0K
LSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgImJhciIsCi0g
ICAgTlVMTAotICB9OwotCi0gIEZsYWdzIGZsYWdzOwotICBmbGFncy5icmVha19vbl9mYWlsdXJl
ID0gdHJ1ZTsKLSAgZmxhZ3MuZmlsdGVyID0gImIiOwotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxB
R1NfKGFyZ3YsIGFyZ3YyLCBmbGFncywgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgYSAt
LWd0ZXN0X2xpc3RfdGVzdHMgZmxhZwotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRl
c3RzRmxhZykgewotICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhlIiwK
LSAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHMiLAotICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBj
b25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgTlVMTAotICAg
IH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6
TGlzdFRlc3RzKHRydWUpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3Rf
bGlzdF90ZXN0cyBmbGFnIHdpdGggYSAidHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVz
dFRlc3QsIExpc3RUZXN0c1RydWUpIHsKLSAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAg
ICAiZm9vLmV4ZSIsCi0gICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTEiLAotICAgICAgTlVMTAot
ICAgIH07Ci0KLSAgICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICAgImZvby5leGUiLAot
ICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3Ys
IGFyZ3YyLCBGbGFnczo6TGlzdFRlc3RzKHRydWUpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIGhh
dmluZyBhIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZSkgewotICAgIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9
MCIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0g
ICAgICAiZm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIEdURVNUX1RFU1RfUEFS
U0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpMaXN0VGVzdHMoZmFsc2UpLCBmYWxzZSk7
Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9saXN0X3Rlc3RzPWYuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNGYWxzZV9mKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3Zb
XSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz1mIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIs
IEZsYWdzOjpMaXN0VGVzdHMoZmFsc2UpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcg
LS1ndGVzdF9saXN0X3Rlc3RzPUYuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVz
dHNGYWxzZV9GKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgIi0tZ3Rlc3RfbGlzdF90ZXN0cz1GIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hh
ciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNU
X1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpMaXN0VGVzdHMoZmFsc2Up
LCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQgKGludmFsaWQp
LgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0RW1wdHkpIHsKLSAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9vdXRwdXQiLAotICAg
IE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwK
LSAgICAiLS1ndGVzdF9vdXRwdXQiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BB
UlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFncygpLCB0cnVlKTsKLX0KLQotLy8gVGVzdHMg
cGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWwKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91
dHB1dFhtbCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAg
ICItLWd0ZXN0X291dHB1dD14bWwiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBh
cmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVT
VF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6Ok91dHB1dCgieG1sIiksIGZhbHNl
KTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X291dHB1dD14bWw6ZmlsZQotVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgT3V0cHV0WG1sRmlsZSkgewotICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X291dHB1dD14bWw6ZmlsZSIsCi0g
ICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUi
LAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBGbGFnczo6T3V0cHV0KCJ4bWw6ZmlsZSIpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBh
cnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sOmRpcmVjdG9yeS9wYXRoLwotVEVTVF9GKEluaXRHb29n
bGVUZXN0VGVzdCwgT3V0cHV0WG1sRGlyZWN0b3J5KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9
IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJlY3RvcnkvcGF0
aC8iLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJm
b28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhh
cmd2LCBhcmd2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnczo6T3V0cHV0KCJ4
bWw6ZGlyZWN0b3J5L3BhdGgvIiksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgaGF2aW5nIGEgLS1n
dGVzdF9wcmludF90aW1lIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGlt
ZUZsYWcpIHsKLSAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0g
ICAgICAiLS1ndGVzdF9wcmludF90aW1lIiwKLSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAgY29u
c3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgIE5VTEwKLSAgICB9
OwotCi0gICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlBy
aW50VGltZSh0cnVlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X3By
aW50X3RpbWUgZmxhZyB3aXRoIGEgInRydWUiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RU
ZXN0LCBQcmludFRpbWVUcnVlKSB7Ci0gICAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICAg
ImZvby5leGUiLAotICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0xIiwKLSAgICAgIE5VTEwKLSAg
ICB9OwotCi0gICAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAg
ICAgIE5VTEwKLSAgICB9OwotCi0gICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBh
cmd2MiwgRmxhZ3M6OlByaW50VGltZSh0cnVlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZp
bmcgYSAtLWd0ZXN0X3ByaW50X3RpbWUgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2UpIHsKLSAgICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICAiLS1ndGVzdF9wcmludF90aW1lPTAi
LAotICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAg
ICAgImZvby5leGUiLAotICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJ
TkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6UHJpbnRUaW1lKGZhbHNlKSwgZmFsc2UpOwot
fQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcHJpbnRfdGltZT1mLgotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lRmFsc2VfZikgewotICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X3ByaW50X3RpbWU9ZiIsCi0gICAgTlVM
TAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAg
IE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBG
bGFnczo6UHJpbnRUaW1lKGZhbHNlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3RfcHJpbnRfdGltZT1GLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1l
RmFsc2VfRikgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAg
ICItLWd0ZXN0X3ByaW50X3RpbWU9RiIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6UHJpbnRUaW1lKGZhbHNlKSwg
ZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9bnVtYmVy
Ci1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBSYW5kb21TZWVkKSB7Ci0gIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfcmFuZG9tX3NlZWQ9MTAw
MCIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZv
by5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFy
Z3YsIGFyZ3YyLCBGbGFnczo6UmFuZG9tU2VlZCgxMDAwKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0
cyBwYXJzaW5nIC0tZ3Rlc3RfcmVwZWF0PW51bWJlcgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVz
dCwgUmVwZWF0KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgIi0tZ3Rlc3RfcmVwZWF0PTEwMDAiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFy
KiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1Rf
VEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlJlcGVhdCgxMDAwKSwgZmFs
c2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzIGZsYWcKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxlZFRlc3Rz
RmxhZykgewotICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAg
ICAgICItLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIiwKLSAgICAgIE5VTEwKLSAgICB9
OwotCi0gICAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAg
IE5VTEwKLSAgICB9OwotCi0gICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWdzOjpBbHNvUnVuRGlzYWJsZWRU
ZXN0cyh0cnVlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcgd2l0aCBhICJ0cnVlIiB2YWx1ZQotVEVTVF9GKEluaXRH
b29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNUcnVlKSB7Ci0gICAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHM9MSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAg
IEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGbGFnczo6QWxzb1J1bkRpc2FibGVkVGVzdHModHJ1ZSksIGZhbHNlKTsK
LX0KLQotLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBm
bGFnIHdpdGggYSAiZmFsc2UiIHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBBbHNv
UnVuRGlzYWJsZWRUZXN0c0ZhbHNlKSB7Ci0gICAgY29uc3QgY2hhciogYXJndltdID0gewotICAg
ICAgImZvby5leGUiLAotICAgICAgIi0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHM9MCIs
Ci0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAg
ICAiZm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIEdURVNUX1RFU1RfUEFSU0lO
R19GTEFHU18oYXJndiwgYXJndjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFn
czo6QWxzb1J1bkRpc2FibGVkVGVzdHMoZmFsc2UpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBh
cnNpbmcgLS1ndGVzdF9zaHVmZmxlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZs
ZVdpdGhvdXRWYWx1ZSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUi
LAotICAgICItLWd0ZXN0X3NodWZmbGUiLAotICAgIE5VTEwKLX07Ci0KLSAgY29uc3QgY2hhciog
YXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTaHVmZmxlKHRydWUpLCBmYWxz
ZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zaHVmZmxlPTAuCi1URVNUX0YoSW5p
dEdvb2dsZVRlc3RUZXN0LCBTaHVmZmxlRmFsc2VfMCkgewotICBjb25zdCBjaGFyKiBhcmd2W10g
PSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X3NodWZmbGU9MCIsCi0gICAgTlVMTAot
ICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5V
TEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFn
czo6U2h1ZmZsZShmYWxzZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rl
c3Rfc2h1ZmZsZSBmbGFnIHRoYXQgaGFzIGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgotVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZVRydWUpIHsKLSAgY29uc3QgY2hhciogYXJndltd
ID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9zaHVmZmxlPTEiLAotICAgIE5VTEwK
LSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxh
Z3M6OlNodWZmbGUodHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X3N0YWNrX3RyYWNlX2RlcHRoPW51bWJlci4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFN0
YWNrVHJhY2VEZXB0aCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUi
LAotICAgICItLWd0ZXN0X3N0YWNrX3RyYWNlX2RlcHRoPTUiLAotICAgIE5VTEwKLSAgfTsKLQot
ICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07
Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0YWNr
VHJhY2VEZXB0aCg1KSwgZmFsc2UpOwotfQotCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBT
dHJlYW1SZXN1bHRUbykgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUi
LAotICAgICItLWd0ZXN0X3N0cmVhbV9yZXN1bHRfdG89bG9jYWxob3N0OjEyMzQiLAotICAgIE5V
TEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAg
ICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXygKLSAgICAgIGFyZ3Ys
IGFyZ3YyLCBGbGFnczo6U3RyZWFtUmVzdWx0VG8oImxvY2FsaG9zdDoxMjM0IiksIGZhbHNlKTsK
LX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmUuCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBUaHJvd09uRmFpbHVyZVdpdGhvdXRWYWx1ZSkgewotICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X3Rocm93X29u
X2ZhaWx1cmUiLAotICAgIE5VTEwKLX07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAg
ICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndiwgYXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOwotfQot
Ci0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0wLgotVEVTVF9GKElu
aXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZhaWx1cmVGYWxzZV8wKSB7Ci0gIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVy
ZT0wIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAi
Zm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18o
YXJndiwgYXJndjIsIEZsYWdzOjpUaHJvd09uRmFpbHVyZShmYWxzZSksIGZhbHNlKTsKLX0KLQot
Ly8gVGVzdHMgcGFyc2luZyBhIC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZSBmbGFnIHRoYXQgaGFz
IGEgInRydWUiCi0vLyBkZWZpbml0aW9uLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhy
b3dPbkZhaWx1cmVUcnVlKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4
ZSIsCi0gICAgIi0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZT0xIiwKLSAgICBOVUxMCi0gIH07Ci0K
LSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9
OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpUaHJv
d09uRmFpbHVyZSh0cnVlKSwgZmFsc2UpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotLy8g
VGVzdHMgcGFyc2luZyB3aWRlIHN0cmluZ3MuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBX
aWRlU3RyaW5ncykgewotICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7Ci0gICAgTCJmb28uZXhl
IiwKLSAgICBMIi0tZ3Rlc3RfZmlsdGVyPUZvbyoiLAotICAgIEwiLS1ndGVzdF9saXN0X3Rlc3Rz
PTEiLAotICAgIEwiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKLSAgICBMIi0tbm9uX2d0ZXN0
X2ZsYWciLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCB3Y2hhcl90KiBhcmd2MltdID0gewot
ICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLW5vbl9ndGVzdF9mbGFnIiwKLSAgICBOVUxMCi0gIH07
Ci0KLSAgRmxhZ3MgZXhwZWN0ZWRfZmxhZ3M7Ci0gIGV4cGVjdGVkX2ZsYWdzLmJyZWFrX29uX2Zh
aWx1cmUgPSB0cnVlOwotICBleHBlY3RlZF9mbGFncy5maWx0ZXIgPSAiRm9vKiI7Ci0gIGV4cGVj
dGVkX2ZsYWdzLmxpc3RfdGVzdHMgPSB0cnVlOwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2ZsYWdzLCBmYWxzZSk7Ci19Ci0jIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi0KLSNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCi1jbGFz
cyBGbGFnZmlsZVRlc3QgOiBwdWJsaWMgSW5pdEdvb2dsZVRlc3RUZXN0IHsKLSBwdWJsaWM6Ci0g
IHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBJbml0R29vZ2xlVGVzdFRlc3Q6OlNldFVwKCk7
Ci0KLSAgICB0ZXN0ZGF0YV9wYXRoXy5TZXQoaW50ZXJuYWw6OkZpbGVQYXRoKAotICAgICAgICB0
ZXN0aW5nOjpUZW1wRGlyKCkgKyBpbnRlcm5hbDo6R2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCku
c3RyaW5nKCkgKwotICAgICAgICAiX2ZsYWdmaWxlX3Rlc3QiKSk7Ci0gICAgdGVzdGluZzo6aW50
ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgICBFWFBFQ1Rf
VFJVRSh0ZXN0ZGF0YV9wYXRoXy5DcmVhdGVGb2xkZXIoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgdGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpSbURpcih0ZXN0
ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgICBJbml0R29vZ2xlVGVzdFRlc3Q6OlRlYXJEb3duKCk7
Ci0gIH0KLQotICBpbnRlcm5hbDo6RmlsZVBhdGggQ3JlYXRlRmxhZ2ZpbGUoY29uc3QgY2hhciog
Y29udGVudHMpIHsKLSAgICBpbnRlcm5hbDo6RmlsZVBhdGggZmlsZV9wYXRoKGludGVybmFsOjpG
aWxlUGF0aDo6R2VuZXJhdGVVbmlxdWVGaWxlTmFtZSgKLSAgICAgICAgdGVzdGRhdGFfcGF0aF8s
IGludGVybmFsOjpGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gICAgRklMRSogZiA9IHRl
c3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Rk9wZW4oZmlsZV9wYXRoLmNfc3RyKCksICJ3Iik7Ci0g
ICAgZnByaW50ZihmLCAiJXMiLCBjb250ZW50cyk7Ci0gICAgZmNsb3NlKGYpOwotICAgIHJldHVy
biBmaWxlX3BhdGg7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGludGVybmFsOjpGaWxlUGF0aCB0ZXN0
ZGF0YV9wYXRoXzsKLX07Ci0KLS8vIFRlc3RzIGFuIGVtcHR5IGZsYWdmaWxlLgotVEVTVF9GKEZs
YWdmaWxlVGVzdCwgRW1wdHkpIHsKLSAgaW50ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3BhdGgo
Q3JlYXRlRmxhZ2ZpbGUoIiIpKTsKLSAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9Ci0gICAg
ICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFn
ZmlsZV9wYXRoLmNfc3RyKCk7Ci0KLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28u
ZXhlIiwKLSAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCi0gICAgTlVMTAotICB9OwotCi0gIGNv
bnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQot
ICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFncygpLCBmYWxzZSk7
Ci19Ci0KLS8vIFRlc3RzIHBhc3NpbmcgYSBub24tZW1wdHkgLS1ndGVzdF9maWx0ZXIgZmxhZyB2
aWEgLS1ndGVzdF9mbGFnZmlsZS4KLVRFU1RfRihGbGFnZmlsZVRlc3QsIEZpbHRlck5vbkVtcHR5
KSB7Ci0gIGludGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAot
ICAgICAgIi0tIiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmlsdGVyPWFiYyIpKTsKLSAgc3RkOjpz
dHJpbmcgZmxhZ2ZpbGVfZmxhZyA9Ci0gICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdf
UFJFRklYXyAiZmxhZ2ZpbGU9IikgKyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7Ci0KLSAgY29uc3Qg
Y2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBmbGFnZmlsZV9mbGFnLmNfc3Ry
KCksCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZv
by5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFy
Z3YsIGFyZ3YyLCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBw
YXNzaW5nIHNldmVyYWwgZmxhZ3MgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUuCi1URVNUX0YoRmxhZ2Zp
bGVUZXN0LCBTZXZlcmFsRmxhZ3MpIHsKLSAgaW50ZXJuYWw6OkZpbGVQYXRoIGZsYWdmaWxlX3Bh
dGgoQ3JlYXRlRmxhZ2ZpbGUoCi0gICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJmaWx0
ZXI9YWJjXG4iCi0gICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJicmVha19vbl9mYWls
dXJlXG4iCi0gICAgICAiLS0iICBHVEVTVF9GTEFHX1BSRUZJWF8gICJsaXN0X3Rlc3RzIikpOwot
ICBzdGQ6OnN0cmluZyBmbGFnZmlsZV9mbGFnID0KLSAgICAgIHN0ZDo6c3RyaW5nKCItLSIgR1RF
U1RfRkxBR19QUkVGSVhfICJmbGFnZmlsZT0iKSArIGZsYWdmaWxlX3BhdGguY19zdHIoKTsKLQot
ICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIGZsYWdmaWxlX2Zs
YWcuY19zdHIoKSwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsK
LSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEZsYWdzIGV4cGVjdGVkX2ZsYWdz
OwotICBleHBlY3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJlID0gdHJ1ZTsKLSAgZXhwZWN0ZWRf
ZmxhZ3MuZmlsdGVyID0gImFiYyI7Ci0gIGV4cGVjdGVkX2ZsYWdzLmxpc3RfdGVzdHMgPSB0cnVl
OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIGV4cGVjdGVkX2Zs
YWdzLCBmYWxzZSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18K
LQotLy8gVGVzdHMgY3VycmVudF90ZXN0X2luZm8oKSBpbiBVbml0VGVzdC4KLWNsYXNzIEN1cnJl
bnRUZXN0SW5mb1Rlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBUZXN0cyB0
aGF0IGN1cnJlbnRfdGVzdF9pbmZvKCkgcmV0dXJucyBOVUxMIGJlZm9yZSB0aGUgZmlyc3QgdGVz
dCBpbgotICAvLyB0aGUgdGVzdCBjYXNlIGlzIHJ1bi4KLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKLSAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVubmluZyBhdCB0aGlz
IHBvaW50LgotICAgIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPQotICAgICAgVW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gICAgRVhQRUNUX1RSVUUodGVz
dF9pbmZvID09IE5VTEwpCi0gICAgICAgIDw8ICJUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVu
bmluZyBhdCB0aGlzIHBvaW50LiI7Ci0gIH0KLQotICAvLyBUZXN0cyB0aGF0IGN1cnJlbnRfdGVz
dF9pbmZvKCkgcmV0dXJucyBOVUxMIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4KLSAgLy8gdGhlIHRl
c3QgY2FzZSBoYXMgcnVuLgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAg
IGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPQotICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdF9pbmZvID09IE5V
TEwpCi0gICAgICAgIDw8ICJUaGVyZSBzaG91bGQgYmUgbm8gdGVzdHMgcnVubmluZyBhdCB0aGlz
IHBvaW50LiI7Ci0gIH0KLX07Ci0KLS8vIFRlc3RzIHRoYXQgY3VycmVudF90ZXN0X2luZm8oKSBy
ZXR1cm5zIFRlc3RJbmZvIGZvciBjdXJyZW50bHkgcnVubmluZwotLy8gdGVzdCBieSBjaGVja2lu
ZyB0aGUgZXhwZWN0ZWQgdGVzdCBuYW1lIGFnYWluc3QgdGhlIGFjdHVhbCBvbmUuCi1URVNUX0Yo
Q3VycmVudFRlc3RJbmZvVGVzdCwgV29ya3NGb3JGaXJzdFRlc3RJbkFUZXN0Q2FzZSkgewotICBj
b25zdCBUZXN0SW5mbyogdGVzdF9pbmZvID0KLSAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSB0ZXN0X2luZm8pCi0g
ICAgICA8PCAiVGhlcmUgaXMgYSB0ZXN0IHJ1bm5pbmcgc28gd2Ugc2hvdWxkIGhhdmUgYSB2YWxp
ZCBUZXN0SW5mby4iOwotICBFWFBFQ1RfU1RSRVEoIkN1cnJlbnRUZXN0SW5mb1Rlc3QiLCB0ZXN0
X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpCi0gICAgICA8PCAiRXhwZWN0ZWQgdGhlIG5hbWUgb2Yg
dGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QgY2FzZS4iOwotICBFWFBFQ1RfU1RSRVEoIldvcmtz
Rm9yRmlyc3RUZXN0SW5BVGVzdENhc2UiLCB0ZXN0X2luZm8tPm5hbWUoKSkKLSAgICAgIDw8ICJF
eHBlY3RlZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4iOwotfQotCi0v
LyBUZXN0cyB0aGF0IGN1cnJlbnRfdGVzdF9pbmZvKCkgcmV0dXJucyBUZXN0SW5mbyBmb3IgY3Vy
cmVudGx5IHJ1bm5pbmcKLS8vIHRlc3QgYnkgY2hlY2tpbmcgdGhlIGV4cGVjdGVkIHRlc3QgbmFt
ZSBhZ2FpbnN0IHRoZSBhY3R1YWwgb25lLiAgV2UKLS8vIHVzZSB0aGlzIHRlc3QgdG8gc2VlIHRo
YXQgdGhlIFRlc3RJbmZvIG9iamVjdCBhY3R1YWxseSBjaGFuZ2VkIGZyb20KLS8vIHRoZSBwcmV2
aW91cyBpbnZvY2F0aW9uLgotVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rlc3QsIFdvcmtzRm9yU2Vj
b25kVGVzdEluQVRlc3RDYXNlKSB7Ci0gIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPQotICAg
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICBBU1NFUlRf
VFJVRShOVUxMICE9IHRlc3RfaW5mbykKLSAgICAgIDw8ICJUaGVyZSBpcyBhIHRlc3QgcnVubmlu
ZyBzbyB3ZSBzaG91bGQgaGF2ZSBhIHZhbGlkIFRlc3RJbmZvLiI7Ci0gIEVYUEVDVF9TVFJFUSgi
Q3VycmVudFRlc3RJbmZvVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSkKLSAgICAg
IDw8ICJFeHBlY3RlZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdCBjYXNl
LiI7Ci0gIEVYUEVDVF9TVFJFUSgiV29ya3NGb3JTZWNvbmRUZXN0SW5BVGVzdENhc2UiLCB0ZXN0
X2luZm8tPm5hbWUoKSkKLSAgICAgIDw8ICJFeHBlY3RlZCB0aGUgbmFtZSBvZiB0aGUgY3VycmVu
dGx5IHJ1bm5pbmcgdGVzdC4iOwotfQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0vLyBU
aGVzZSB0d28gbGluZXMgdGVzdCB0aGF0IHdlIGNhbiBkZWZpbmUgdGVzdHMgaW4gYSBuYW1lc3Bh
Y2UgdGhhdAotLy8gaGFzIHRoZSBuYW1lICJ0ZXN0aW5nIiBhbmQgaXMgbmVzdGVkIGluIGFub3Ro
ZXIgbmFtZXNwYWNlLgotbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7Ci1uYW1lc3BhY2UgdGVzdGlu
ZyB7Ci0KLS8vIE1ha2VzIHN1cmUgdGhhdCBURVNUIGtub3dzIHRvIHVzZSA6OnRlc3Rpbmc6OlRl
c3QgaW5zdGVhZCBvZgotLy8gOjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6OlRlc3QuCi1jbGFzcyBU
ZXN0IHt9OwotCi0vLyBNYWtlcyBzdXJlIHRoYXQgYW4gYXNzZXJ0aW9uIGtub3dzIHRvIHVzZSA6
OnRlc3Rpbmc6Ok1lc3NhZ2UgaW5zdGVhZCBvZgotLy8gOjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6
Ok1lc3NhZ2UuCi1jbGFzcyBNZXNzYWdlIHt9OwotCi0vLyBNYWtlcyBzdXJlIHRoYXQgYW4gYXNz
ZXJ0aW9uIGtub3dzIHRvIHVzZQotLy8gOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgaW5zdGVh
ZCBvZgotLy8gOjpteV9uYW1lc3BhY2U6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdC4KLWNsYXNz
IEFzc2VydGlvblJlc3VsdCB7fTsKLQotLy8gVGVzdHMgdGhhdCBhbiBhc3NlcnRpb24gdGhhdCBz
aG91bGQgc3VjY2VlZCB3b3JrcyBhcyBleHBlY3RlZC4KLVRFU1QoTmVzdGVkVGVzdGluZ05hbWVz
cGFjZVRlc3QsIFN1Y2Nlc3MpIHsKLSAgRVhQRUNUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZG4n
dCBmYWlsLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW4gYXNzZXJ0aW9uIHRoYXQgc2hvdWxkIGZh
aWwgd29ya3MgYXMgZXhwZWN0ZWQuCi1URVNUKE5lc3RlZFRlc3RpbmdOYW1lc3BhY2VUZXN0LCBG
YWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAiVGhpcyBmYWlsdXJl
IGlzIGV4cGVjdGVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGZhaWx1cmUgaXMg
ZXhwZWN0ZWQuIik7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi19ICAvLyBuYW1lc3Bh
Y2UgbXlfbmFtZXNwYWNlCi0KLS8vIFRlc3RzIHRoYXQgb25lIGNhbiBjYWxsIHN1cGVyY2xhc3Mg
U2V0VXAgYW5kIFRlYXJEb3duIG1ldGhvZHMtLQotLy8gdGhhdCBpcywgdGhhdCB0aGV5IGFyZSBu
b3QgcHJpdmF0ZS4KLS8vIE5vIHRlc3RzIGFyZSBiYXNlZCBvbiB0aGlzIGZpeHR1cmU7IHRoZSB0
ZXN0ICJwYXNzZXMiIGlmIGl0IGNvbXBpbGVzCi0vLyBzdWNjZXNzZnVsbHkuCi1jbGFzcyBQcm90
ZWN0ZWRGaXh0dXJlTWV0aG9kc1Rlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgVGVzdDo6U2V0VXAoKTsKLSAgfQotICB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gICAgVGVzdDo6VGVhckRvd24oKTsKLSAgfQotfTsKLQotLy8g
U3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QgdGVzdHMgdGhlIHN0cmVhbWluZyB2ZXJzaW9ucyBvZiBh
IHJlcHJlc2VudGF0aXZlCi0vLyBzYW1wbGUgb2YgYXNzZXJ0aW9ucy4KLVRFU1QoU3RyZWFtaW5n
QXNzZXJ0aW9uc1Rlc3QsIFVuY29uZGl0aW9uYWwpIHsKLSAgU1VDQ0VFRCgpIDw8ICJleHBlY3Rl
ZCBzdWNjZXNzIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQUREX0ZBSUxVUkUoKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBm
YWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAiZXhwZWN0ZWQgZmFp
bHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0K
LSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlz
IGFsd2F5cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jIHByYWdtYSBvcHRpb24gcHVzaCAt
dy1jY2MgLXctcmNoCi0jZW5kaWYKLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1
dGgpIHsKLSAgRVhQRUNUX1RSVUUodHJ1ZSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFT
U0VSVF9UUlVFKHRydWUpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfVFJVRShmYWxzZSkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQotCi1URVNUKFN0cmVh
bWluZ0Fzc2VydGlvbnNUZXN0LCBUcnV0aDIpIHsKLSAgRVhQRUNUX0ZBTFNFKGZhbHNlKSA8PCAi
dW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAidW5leHBlY3Rl
ZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKHRydWUp
IDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNFKHRydWUp
IDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
IGZhaWx1cmUiKTsKLX0KLQotI2lmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2Fybmlu
Z3MgYWZ0ZXIgcHJldmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHJlc3NlZCB0aGVtCi0j
IHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVz
dCwgSW50ZWdlckVxdWFscykgewotICBFWFBFQ1RfRVEoMSwgMSkgPDwgInVuZXhwZWN0ZWQgZmFp
bHVyZSI7Ci0gIEFTU0VSVF9FUSgxLCAxKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDEsIDIpIDw8ICJleHBlY3RlZCBmYWlsdXJl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0VRKDEsIDIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotVEVTVChT
dHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgSW50ZWdlckxlc3NUaGFuKSB7Ci0gIEVYUEVDVF9MVCgx
LCAyKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0xUKDEsIDIpIDw8ICJ1bmV4
cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoMiwg
MSkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTFQoMiwgMSkg
PDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQg
ZmFpbHVyZSIpOwotfQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBTdHJpbmdzRXF1
YWwpIHsKLSAgRVhQRUNUX1NUUkVRKCJmb28iLCAiZm9vIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVy
ZSI7Ci0gIEFTU0VSVF9TVFJFUSgiZm9vIiwgImZvbyIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUi
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEoImZvbyIsICJiYXIiKSA8
PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJFUSgiZm9vIiwg
ImJhciIpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgU3Ry
aW5nc05vdEVxdWFsKSB7Ci0gIEVYUEVDVF9TVFJORSgiZm9vIiwgImJhciIpIDw8ICJ1bmV4cGVj
dGVkIGZhaWx1cmUiOwotICBBU1NFUlRfU1RSTkUoImZvbyIsICJiYXIiKSA8PCAidW5leHBlY3Rl
ZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKCJmb28i
LCAiZm9vIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RS
TkUoImZvbyIsICJmb28iKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9u
c1Rlc3QsIFN0cmluZ3NFcXVhbElnbm9yaW5nQ2FzZSkgewotICBFWFBFQ1RfU1RSQ0FTRUVRKCJm
b28iLCAiRk9PIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9TVFJDQVNFRVEo
ImZvbyIsICJGT08iKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VFUSgiZm9vIiwgImJhciIpIDw8ICJleHBlY3RlZCBmYWls
dXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkNBU0VFUSgiZm9vIiwgImJhciIpIDw8ICJl
eHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1
cmUiKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgU3RyaW5nTm90RXF1YWxJ
Z25vcmluZ0Nhc2UpIHsKLSAgRVhQRUNUX1NUUkNBU0VORSgiZm9vIiwgImJhciIpIDw8ICJ1bmV4
cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfU1RSQ0FTRU5FKCJmb28iLCAiYmFyIikgPDwgInVu
ZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJD
QVNFTkUoImZvbyIsICJGT08iKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFTU0VSVF9TVFJDQVNFTkUoImJhciIsICJCQVIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1QoU3Ry
ZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIEZsb2F0aW5nUG9pbnRFcXVhbHMpIHsKLSAgRVhQRUNUX0ZM
T0FUX0VRKDEuMCwgMS4wKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX0ZMT0FU
X0VRKDEuMCwgMS4wKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0ZMT0FUX0VRKDAuMCwgMS4wKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GTE9BVF9FUSgwLjAsIDEuMCkgPDwgImV4cGVjdGVkIGZh
aWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVz
dCwgVGhyb3cpIHsKLSAgRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGludCkgPDwgInVu
ZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBpbnQp
IDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCkgPDwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCkgPDwKLSAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVy
ZSIpOwotfQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBOb1Rocm93KSB7Ci0gIEVY
UEVDVF9OT19USFJPVyhUaHJvd05vdGhpbmcoKSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0g
IEFTU0VSVF9OT19USFJPVyhUaHJvd05vdGhpbmcoKSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9OT19USFJPVyhUaHJvd0FuSW50ZWdl
cigpKSA8PAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIsICJl
eHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9OT19USFJP
VyhUaHJvd0FuSW50ZWdlcigpKSA8PAotICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQg
ZmFpbHVyZSIsICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNzZXJ0
aW9uc1Rlc3QsIEFueVRocm93KSB7Ci0gIEVYUEVDVF9BTllfVEhST1coVGhyb3dBbkludGVnZXIo
KSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9BTllfVEhST1coVGhyb3dBbklu
dGVnZXIoKSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9BTllfVEhST1coVGhyb3dOb3RoaW5nKCkpIDw8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIiwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0FOWV9USFJPVyhUaHJvd05vdGhpbmcoKSkgPDwKLSAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVy
ZSIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRo
YXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRlY2lkZXMgd2hldGhlciB0byB1c2UgY29sb3JzIGlu
IHRoZSBvdXRwdXQuCi0KLVRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuR1Rl
c3RDb2xvckZsYWdJc1llcykgewotICBHVEVTVF9GTEFHKGNvbG9yKSA9ICJ5ZXMiOwotCi0gIFNl
dEVudigiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVD
VF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLSAgRVhQ
RUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFku
Ci0KLSAgU2V0RW52KCJURVJNIiwgImR1bWIiKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNv
bG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rkb3V0
IGlzIG5vdCBhIFRUWS4KLX0KLQotVEVTVChDb2xvcmVkT3V0cHV0VGVzdCwgVXNlc0NvbG9yc1do
ZW5HVGVzdENvbG9yRmxhZ0lzQWxpYXNPZlllcykgewotICBTZXRFbnYoIlRFUk0iLCAiZHVtYiIp
OyAgLy8gVEVSTSBkb2Vzbid0IHN1cHBvcnQgY29sb3JzLgotCi0gIEdURVNUX0ZMQUcoY29sb3Ip
ID0gIlRydWUiOwotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rk
b3V0IGlzIG5vdCBhIFRUWS4KLQotICBHVEVTVF9GTEFHKGNvbG9yKSA9ICJ0IjsKLSAgRVhQRUNU
X1RSVUUoU2hvdWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCi0K
LSAgR1RFU1RfRkxBRyhjb2xvcikgPSAiMSI7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9y
KGZhbHNlKSk7ICAvLyBTdGRvdXQgaXMgbm90IGEgVFRZLgotfQotCi1URVNUKENvbG9yZWRPdXRw
dXRUZXN0LCBVc2VzTm9Db2xvcldoZW5HVGVzdENvbG9yRmxhZ0lzTm8pIHsKLSAgR1RFU1RfRkxB
Ryhjb2xvcikgPSAibm8iOwotCi0gIFNldEVudigiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBz
dXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAv
LyBTdGRvdXQgaXMgYSBUVFkuCi0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcihmYWxzZSkp
OyAgLy8gU3Rkb3V0IGlzIG5vdCBhIFRUWS4KLQotICBTZXRFbnYoIlRFUk0iLCAiZHVtYiIpOyAg
Ly8gVEVSTSBkb2Vzbid0IHN1cHBvcnQgY29sb3JzLgotICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNl
Q29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotICBFWFBFQ1RfRkFMU0UoU2hvdWxk
VXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCi19Ci0KLVRFU1QoQ29s
b3JlZE91dHB1dFRlc3QsIFVzZXNOb0NvbG9yV2hlbkdUZXN0Q29sb3JGbGFnSXNJbnZhbGlkKSB7
Ci0gIFNldEVudigiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0K
LSAgR1RFU1RfRkxBRyhjb2xvcikgPSAiRiI7Ci0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xv
cih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgR1RFU1RfRkxBRyhjb2xvcikgPSAi
MCI7Ci0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCi0KLSAgR1RFU1RfRkxBRyhjb2xvcikgPSAidW5rbm93biI7Ci0gIEVYUEVDVF9GQUxT
RShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi19Ci0KLVRFU1Qo
Q29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuU3Rkb3V0SXNUdHkpIHsKLSAgR1RFU1Rf
RkxBRyhjb2xvcikgPSAiYXV0byI7Ci0KLSAgU2V0RW52KCJURVJNIiwgInh0ZXJtIik7ICAvLyBU
RVJNIHN1cHBvcnRzIGNvbG9ycy4KLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKGZhbHNl
KSk7ICAvLyBTdGRvdXQgaXMgbm90IGEgVFRZLgotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xv
cih0cnVlKSk7ICAgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLX0KLQotVEVTVChDb2xvcmVkT3V0cHV0
VGVzdCwgVXNlc0NvbG9yc1doZW5UZXJtU3VwcG9ydHNDb2xvcnMpIHsKLSAgR1RFU1RfRkxBRyhj
b2xvcikgPSAiYXV0byI7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIC8vIE9uIFdpbmRvd3Ms
IHdlIGlnbm9yZSB0aGUgVEVSTSB2YXJpYWJsZSBhcyBpdCdzIHVzdWFsbHkgbm90IHNldC4KLQot
ICBTZXRFbnYoIlRFUk0iLCAiZHVtYiIpOwotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0
cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwgIiIpOwotICBF
WFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0K
LSAgU2V0RW52KCJURVJNIiwgInh0ZXJtIik7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9y
KHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLSNlbHNlCi0gIC8vIE9uIG5vbi1XaW5kb3dz
IHBsYXRmb3Jtcywgd2UgcmVseSBvbiBURVJNIHRvIGRldGVybWluZSBpZiB0aGUKLSAgLy8gdGVy
bWluYWwgc3VwcG9ydHMgY29sb3JzLgotCi0gIFNldEVudigiVEVSTSIsICJkdW1iIik7ICAvLyBU
RVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCi0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VDb2xv
cih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwgImVtYWNz
Iik7ICAvLyBURVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCi0gIEVYUEVDVF9GQUxTRShTaG91
bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJN
IiwgInZ0MTAwIik7ICAvLyBURVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCi0gIEVYUEVDVF9G
QUxTRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0
RW52KCJURVJNIiwgInh0ZXJtLW1vbm8iKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNvbG9y
cy4KLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBh
IFRUWS4KLQotICBTZXRFbnYoIlRFUk0iLCAieHRlcm0iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29s
b3JzLgotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMg
YSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwgInh0ZXJtLWNvbG9yIik7ICAvLyBURVJNIHN1cHBv
cnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rk
b3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ4dGVybS0yNTZjb2xvciIpOyAgLy8g
VEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUp
KTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLQotICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuIik7ICAv
LyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1
ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJzY3JlZW4tMjU2
Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJVRShTaG91bGRV
c2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwg
InRtdXgiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJVRShTaG91bGRV
c2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwg
InRtdXgtMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJV
RShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52
KCJURVJNIiwgInJ4dnQtdW5pY29kZSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVY
UEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLQot
ICBTZXRFbnYoIlRFUk0iLCAicnh2dC11bmljb2RlLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBv
cnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rk
b3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJsaW51eCIpOyAgLy8gVEVSTSBzdXBw
b3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0
ZG91dCBpcyBhIFRUWS4KLQotICBTZXRFbnYoIlRFUk0iLCAiY3lnd2luIik7ICAvLyBURVJNIHN1
cHBvcnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8g
U3Rkb3V0IGlzIGEgVFRZLgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Ci0KLS8vIFZl
cmlmaWVzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluIGEgbmFtZXNwYWNlIHNjb3Bl
LgotCi1zdGF0aWMgYm9vbCBkdW1teTEgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBTdGF0aWNB
c3NlcnRUeXBlRXE8Ym9vbCwgYm9vbD4oKTsKLXN0YXRpYyBib29sIGR1bW15MiBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXyA9Ci0gICAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGludCwgY29uc3Qg
aW50PigpOwotCi0vLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVFcSB3b3JrcyBpbiBh
IGNsYXNzLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFN0YXRpY0Fzc2VydFR5cGVF
cVRlc3RIZWxwZXIgewotIHB1YmxpYzoKLSAgU3RhdGljQXNzZXJ0VHlwZUVxVGVzdEhlbHBlcigp
IHsgU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIFQ+KCk7IH0KLX07Ci0KLVRFU1QoU3RhdGljQXNz
ZXJ0VHlwZUVxVGVzdCwgV29ya3NJbkNsYXNzKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcVRlc3RI
ZWxwZXI8Ym9vbD4oKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCBTdGF0aWNBc3NlcnRUeXBlRXEg
d29ya3MgaW5zaWRlIGEgZnVuY3Rpb24uCi0KLXR5cGVkZWYgaW50IEludEFsaWFzOwotCi1URVNU
KFN0YXRpY0Fzc2VydFR5cGVFcVRlc3QsIENvbXBpbGVzRm9yRXF1YWxUeXBlcykgewotICBTdGF0
aWNBc3NlcnRUeXBlRXE8aW50LCBJbnRBbGlhcz4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGlu
dCosIEludEFsaWFzKj4oKTsKLX0KLQotVEVTVChHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0
VG9wVGVzdCwgUmV0dXJuc1RoZVN0YWNrVHJhY2UpIHsKLSAgdGVzdGluZzo6VW5pdFRlc3QqIGNv
bnN0IHVuaXRfdGVzdCA9IHRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotCi0gIC8v
IFdlIGRvbid0IGhhdmUgYSBzdGFjayB3YWxrZXIgaW4gR29vZ2xlIFRlc3QgeWV0LgotICBFWFBF
Q1RfU1RSRVEoIiIsIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AodW5pdF90ZXN0LCAw
KS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhj
ZXB0VG9wKHVuaXRfdGVzdCwgMSkuY19zdHIoKSk7Ci19Ci0KLVRFU1QoSGFzTm9uZmF0YWxGYWls
dXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNOb0ZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZB
TFNFKEhhc05vbmZhdGFsRmFpbHVyZSgpKTsKLX0KLQotc3RhdGljIHZvaWQgRmFpbEZhdGFsbHko
KSB7IEZBSUwoKTsgfQotCi1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNGYWxz
ZVdoZW5UaGVyZUlzT25seUZhdGFsRmFpbHVyZSkgewotICBGYWlsRmF0YWxseSgpOwotICBjb25z
dCBib29sIGhhc19ub25mYXRhbF9mYWlsdXJlID0gSGFzTm9uZmF0YWxGYWlsdXJlKCk7Ci0gIENs
ZWFyQ3VycmVudFRlc3RQYXJ0UmVzdWx0cygpOwotICBFWFBFQ1RfRkFMU0UoaGFzX25vbmZhdGFs
X2ZhaWx1cmUpOwotfQotCi1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNUcnVl
V2hlblRoZXJlSXNOb25mYXRhbEZhaWx1cmUpIHsKLSAgQUREX0ZBSUxVUkUoKTsKLSAgY29uc3Qg
Ym9vbCBoYXNfbm9uZmF0YWxfZmFpbHVyZSA9IEhhc05vbmZhdGFsRmFpbHVyZSgpOwotICBDbGVh
ckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKLSAgRVhQRUNUX1RSVUUoaGFzX25vbmZhdGFsX2Zh
aWx1cmUpOwotfQotCi1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNUcnVlV2hl
blRoZXJlQXJlRmF0YWxBbmROb25mYXRhbEZhaWx1cmVzKSB7Ci0gIEZhaWxGYXRhbGx5KCk7Ci0g
IEFERF9GQUlMVVJFKCk7Ci0gIGNvbnN0IGJvb2wgaGFzX25vbmZhdGFsX2ZhaWx1cmUgPSBIYXNO
b25mYXRhbEZhaWx1cmUoKTsKLSAgQ2xlYXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0gIEVY
UEVDVF9UUlVFKGhhc19ub25mYXRhbF9mYWlsdXJlKTsKLX0KLQotLy8gQSB3cmFwcGVyIGZvciBj
YWxsaW5nIEhhc05vbmZhdGFsRmFpbHVyZSBvdXRzaWRlIG9mIGEgdGVzdCBib2R5Lgotc3RhdGlj
IGJvb2wgSGFzTm9uZmF0YWxGYWlsdXJlSGVscGVyKCkgewotICByZXR1cm4gdGVzdGluZzo6VGVz
dDo6SGFzTm9uZmF0YWxGYWlsdXJlKCk7Ci19Ci0KLVRFU1QoSGFzTm9uZmF0YWxGYWlsdXJlVGVz
dCwgV29ya3NPdXRzaWRlT2ZUZXN0Qm9keSkgewotICBFWFBFQ1RfRkFMU0UoSGFzTm9uZmF0YWxG
YWlsdXJlSGVscGVyKCkpOwotfQotCi1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFdvcmtz
T3V0c2lkZU9mVGVzdEJvZHkyKSB7Ci0gIEFERF9GQUlMVVJFKCk7Ci0gIGNvbnN0IGJvb2wgaGFz
X25vbmZhdGFsX2ZhaWx1cmUgPSBIYXNOb25mYXRhbEZhaWx1cmVIZWxwZXIoKTsKLSAgQ2xlYXJD
dXJyZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0gIEVYUEVDVF9UUlVFKGhhc19ub25mYXRhbF9mYWls
dXJlKTsKLX0KLQotVEVTVChIYXNGYWlsdXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRoZXJlSXNO
b0ZhaWx1cmUpIHsKLSAgRVhQRUNUX0ZBTFNFKEhhc0ZhaWx1cmUoKSk7Ci19Ci0KLVRFU1QoSGFz
RmFpbHVyZVRlc3QsIFJldHVybnNUcnVlV2hlblRoZXJlSXNGYXRhbEZhaWx1cmUpIHsKLSAgRmFp
bEZhdGFsbHkoKTsKLSAgY29uc3QgYm9vbCBoYXNfZmFpbHVyZSA9IEhhc0ZhaWx1cmUoKTsKLSAg
Q2xlYXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0gIEVYUEVDVF9UUlVFKGhhc19mYWlsdXJl
KTsKLX0KLQotVEVTVChIYXNGYWlsdXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuVGhlcmVJc05vbmZh
dGFsRmFpbHVyZSkgewotICBBRERfRkFJTFVSRSgpOwotICBjb25zdCBib29sIGhhc19mYWlsdXJl
ID0gSGFzRmFpbHVyZSgpOwotICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKLSAgRVhQ
RUNUX1RSVUUoaGFzX2ZhaWx1cmUpOwotfQotCi1URVNUKEhhc0ZhaWx1cmVUZXN0LCBSZXR1cm5z
VHJ1ZVdoZW5UaGVyZUFyZUZhdGFsQW5kTm9uZmF0YWxGYWlsdXJlcykgewotICBGYWlsRmF0YWxs
eSgpOwotICBBRERfRkFJTFVSRSgpOwotICBjb25zdCBib29sIGhhc19mYWlsdXJlID0gSGFzRmFp
bHVyZSgpOwotICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKLSAgRVhQRUNUX1RSVUUo
aGFzX2ZhaWx1cmUpOwotfQotCi0vLyBBIHdyYXBwZXIgZm9yIGNhbGxpbmcgSGFzRmFpbHVyZSBv
dXRzaWRlIG9mIGEgdGVzdCBib2R5Lgotc3RhdGljIGJvb2wgSGFzRmFpbHVyZUhlbHBlcigpIHsg
cmV0dXJuIHRlc3Rpbmc6OlRlc3Q6Okhhc0ZhaWx1cmUoKTsgfQotCi1URVNUKEhhc0ZhaWx1cmVU
ZXN0LCBXb3Jrc091dHNpZGVPZlRlc3RCb2R5KSB7Ci0gIEVYUEVDVF9GQUxTRShIYXNGYWlsdXJl
SGVscGVyKCkpOwotfQotCi1URVNUKEhhc0ZhaWx1cmVUZXN0LCBXb3Jrc091dHNpZGVPZlRlc3RC
b2R5MikgewotICBBRERfRkFJTFVSRSgpOwotICBjb25zdCBib29sIGhhc19mYWlsdXJlID0gSGFz
RmFpbHVyZUhlbHBlcigpOwotICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsKLSAgRVhQ
RUNUX1RSVUUoaGFzX2ZhaWx1cmUpOwotfQotCi1jbGFzcyBUZXN0TGlzdGVuZXIgOiBwdWJsaWMg
RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICBUZXN0TGlzdGVuZXIoKSA6IG9u
X3N0YXJ0X2NvdW50ZXJfKE5VTEwpLCBpc19kZXN0cm95ZWRfKE5VTEwpIHt9Ci0gIFRlc3RMaXN0
ZW5lcihpbnQqIG9uX3N0YXJ0X2NvdW50ZXIsIGJvb2wqIGlzX2Rlc3Ryb3llZCkKLSAgICAgIDog
b25fc3RhcnRfY291bnRlcl8ob25fc3RhcnRfY291bnRlciksCi0gICAgICAgIGlzX2Rlc3Ryb3ll
ZF8oaXNfZGVzdHJveWVkKSB7fQotCi0gIHZpcnR1YWwgflRlc3RMaXN0ZW5lcigpIHsKLSAgICBp
ZiAoaXNfZGVzdHJveWVkXykKLSAgICAgICppc19kZXN0cm95ZWRfID0gdHJ1ZTsKLSAgfQotCi0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgaWYgKG9uX3N0YXJ0X2NvdW50ZXJfICE9IE5VTEwp
Ci0gICAgICAoKm9uX3N0YXJ0X2NvdW50ZXJfKSsrOwotICB9Ci0KLSBwcml2YXRlOgotICBpbnQq
IG9uX3N0YXJ0X2NvdW50ZXJfOwotICBib29sKiBpc19kZXN0cm95ZWRfOwotfTsKLQotLy8gVGVz
dHMgdGhlIGNvbnN0cnVjdG9yLgotVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBDb25zdHJ1
Y3Rpb25Xb3JrcykgewotICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwotCi0gIEVYUEVD
VF9UUlVFKFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJz
KSAhPSBOVUxMKTsKLSAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50
ZXIoKSA9PSBOVUxMKTsKLSAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVy
YXRvcigpID09IE5VTEwpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBUZXN0RXZlbnRMaXN0ZW5l
cnMgZGVzdHJ1Y3RvciBkZWxldGVzIGFsbCB0aGUgbGlzdGVuZXJzIGl0Ci0vLyBvd25zLgotVEVT
VChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBEZXN0cnVjdGlvbldvcmtzKSB7Ci0gIGJvb2wgZGVm
YXVsdF9yZXN1bHRfcHJpbnRlcl9pc19kZXN0cm95ZWQgPSBmYWxzZTsKLSAgYm9vbCBkZWZhdWx0
X3htbF9wcmludGVyX2lzX2Rlc3Ryb3llZCA9IGZhbHNlOwotICBib29sIGV4dHJhX2xpc3RlbmVy
X2lzX2Rlc3Ryb3llZCA9IGZhbHNlOwotICBUZXN0TGlzdGVuZXIqIGRlZmF1bHRfcmVzdWx0X3By
aW50ZXIgPSBuZXcgVGVzdExpc3RlbmVyKAotICAgICAgTlVMTCwgJmRlZmF1bHRfcmVzdWx0X3By
aW50ZXJfaXNfZGVzdHJveWVkKTsKLSAgVGVzdExpc3RlbmVyKiBkZWZhdWx0X3htbF9wcmludGVy
ID0gbmV3IFRlc3RMaXN0ZW5lcigKLSAgICAgIE5VTEwsICZkZWZhdWx0X3htbF9wcmludGVyX2lz
X2Rlc3Ryb3llZCk7Ci0gIFRlc3RMaXN0ZW5lciogZXh0cmFfbGlzdGVuZXIgPSBuZXcgVGVzdExp
c3RlbmVyKAotICAgICAgTlVMTCwgJmV4dHJhX2xpc3RlbmVyX2lzX2Rlc3Ryb3llZCk7Ci0KLSAg
ewotICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7Ci0gICAgVGVzdEV2ZW50TGlzdGVu
ZXJzQWNjZXNzb3I6OlNldERlZmF1bHRSZXN1bHRQcmludGVyKCZsaXN0ZW5lcnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRf
cmVzdWx0X3ByaW50ZXIpOwotICAgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZh
dWx0WG1sR2VuZXJhdG9yKCZsaXN0ZW5lcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF94bWxfcHJpbnRlcik7Ci0gICAgbGlz
dGVuZXJzLkFwcGVuZChleHRyYV9saXN0ZW5lcik7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoZGVmYXVs
dF9yZXN1bHRfcHJpbnRlcl9pc19kZXN0cm95ZWQpOwotICBFWFBFQ1RfVFJVRShkZWZhdWx0X3ht
bF9wcmludGVyX2lzX2Rlc3Ryb3llZCk7Ci0gIEVYUEVDVF9UUlVFKGV4dHJhX2xpc3RlbmVyX2lz
X2Rlc3Ryb3llZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBsaXN0ZW5lciBBcHBlbmQnZWQgdG8g
YSBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdCBzdGFydHMKLS8vIHJlY2VpdmluZyBldmVudHMuCi1U
RVNUKFRlc3RFdmVudExpc3RlbmVyc1Rlc3QsIEFwcGVuZCkgewotICBpbnQgb25fc3RhcnRfY291
bnRlciA9IDA7Ci0gIGJvb2wgaXNfZGVzdHJveWVkID0gZmFsc2U7Ci0gIFRlc3RMaXN0ZW5lciog
bGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9jb3VudGVyLCAmaXNfZGVzdHJv
eWVkKTsKLSAgewotICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7Ci0gICAgbGlzdGVu
ZXJzLkFwcGVuZChsaXN0ZW5lcik7Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6Okdl
dFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3RhcnQoCi0gICAgICAgICpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKSk7Ci0gICAgRVhQRUNUX0VRKDEsIG9uX3N0YXJ0X2NvdW50ZXIp
OwotICB9Ci0gIEVYUEVDVF9UUlVFKGlzX2Rlc3Ryb3llZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
bGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRzIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYXBwZW5kZWQg
dG8KLS8vIHRoZSBsaXN0LCBleGNlcHQgZm9yICpFbmQgcmVxdWVzdHMsIHdoaWNoIG11c3QgYmUg
cmVjZWl2ZWQgaW4gdGhlIHJldmVyc2UKLS8vIG9yZGVyLgotY2xhc3MgU2VxdWVuY2VUZXN0aW5n
TGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHVibGljOgotICBT
ZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcihzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4qIHZlY3Rvciwg
Y29uc3QgY2hhciogaWQpCi0gICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaWRfKGlkKSB7fQotCi0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgdmVjdG9yXy0+cHVzaF9iYWNrKEdldEV2ZW50RGVz
Y3JpcHRpb24oIk9uVGVzdFByb2dyYW1TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBP
blRlc3RQcm9ncmFtRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgdmVj
dG9yXy0+cHVzaF9iYWNrKEdldEV2ZW50RGVzY3JpcHRpb24oIk9uVGVzdFByb2dyYW1FbmQiKSk7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uU3RhcnQoY29uc3QgVW5pdFRl
c3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgLyppdGVyYXRpb24qLykgewotICAgIHZlY3Rvcl8tPnB1c2hfYmFjayhHZXRFdmVudERlc2Ny
aXB0aW9uKCJPblRlc3RJdGVyYXRpb25TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBP
blRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgICB2ZWN0
b3JfLT5wdXNoX2JhY2soR2V0RXZlbnREZXNjcmlwdGlvbigiT25UZXN0SXRlcmF0aW9uRW5kIikp
OwotICB9Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyBHZXRFdmVudERlc2NyaXB0aW9uKGNv
bnN0IGNoYXIqIG1ldGhvZCkgewotICAgIE1lc3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8
IGlkXyA8PCAiLiIgPDwgbWV0aG9kOwotICAgIHJldHVybiBtZXNzYWdlLkdldFN0cmluZygpOwot
ICB9Ci0KLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3JfOwotICBjb25zdCBjaGFy
KiBjb25zdCBpZF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTZXF1ZW5j
ZVRlc3RpbmdMaXN0ZW5lcik7Ci19OwotCi1URVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBBcHBlbmRL
ZWVwc09yZGVyKSB7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ZWM7Ci0gIFRlc3RFdmVu
dExpc3RlbmVycyBsaXN0ZW5lcnM7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVlbmNlVGVz
dGluZ0xpc3RlbmVyKCZ2ZWMsICIxc3QiKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3IFNlcXVl
bmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIybmQiKSk7Ci0gIGxpc3RlbmVycy5BcHBlbmQobmV3
IFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyKCZ2ZWMsICIzcmQiKSk7Ci0KLSAgVGVzdEV2ZW50TGlz
dGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3Rh
cnQoCi0gICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwotICBBU1NFUlRfRVEoM1UsIHZl
Yy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLCB2ZWNb
MF0uY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMm5kLk9uVGVzdFByb2dyYW1TdGFydCIsIHZl
Y1sxXS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIzcmQuT25UZXN0UHJvZ3JhbVN0YXJ0Iiwg
dmVjWzJdLmNfc3RyKCkpOwotCi0gIHZlYy5jbGVhcigpOwotICBUZXN0RXZlbnRMaXN0ZW5lcnNB
Y2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1FbmQoCi0gICAg
ICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwotICBBU1NFUlRfRVEoM1UsIHZlYy5zaXplKCkp
OwotICBFWFBFQ1RfU1RSRVEoIjNyZC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzBdLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoIjJuZC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzFdLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoIjFzdC5PblRlc3RQcm9ncmFtRW5kIiwgdmVjWzJdLmNfc3RyKCkp
OwotCi0gIHZlYy5jbGVhcigpOwotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0UmVw
ZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdEl0ZXJhdGlvblN0YXJ0KAotICAgICAgKlVuaXRUZXN0
OjpHZXRJbnN0YW5jZSgpLCAwKTsKLSAgQVNTRVJUX0VRKDNVLCB2ZWMuc2l6ZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKCIxc3QuT25UZXN0SXRlcmF0aW9uU3RhcnQiLCB2ZWNbMF0uY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0IiwgdmVjWzFdLmNfc3RyKCkp
OwotICBFWFBFQ1RfU1RSRVEoIjNyZC5PblRlc3RJdGVyYXRpb25TdGFydCIsIHZlY1syXS5jX3N0
cigpKTsKLQotICB2ZWMuY2xlYXIoKTsKLSAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6Okdl
dFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RJdGVyYXRpb25FbmQoCi0gICAgICAqVW5pdFRl
c3Q6OkdldEluc3RhbmNlKCksIDApOwotICBBU1NFUlRfRVEoM1UsIHZlYy5zaXplKCkpOwotICBF
WFBFQ1RfU1RSRVEoIjNyZC5PblRlc3RJdGVyYXRpb25FbmQiLCB2ZWNbMF0uY19zdHIoKSk7Ci0g
IEVYUEVDVF9TVFJFUSgiMm5kLk9uVGVzdEl0ZXJhdGlvbkVuZCIsIHZlY1sxXS5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCIxc3QuT25UZXN0SXRlcmF0aW9uRW5kIiwgdmVjWzJdLmNfc3RyKCkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbGlzdGVuZXIgcmVtb3ZlZCBmcm9tIGEgVGVzdEV2ZW50
TGlzdGVuZXJzIGxpc3Qgc3RvcHMgcmVjZWl2aW5nCi0vLyBldmVudHMgYW5kIGlzIG5vdCBkZWxl
dGVkIHdoZW4gdGhlIGxpc3QgaXMgZGVzdHJveWVkLgotVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNU
ZXN0LCBSZWxlYXNlKSB7Ci0gIGludCBvbl9zdGFydF9jb3VudGVyID0gMDsKLSAgYm9vbCBpc19k
ZXN0cm95ZWQgPSBmYWxzZTsKLSAgLy8gQWx0aG91Z2ggQXBwZW5kIHBhc3NlcyB0aGUgb3duZXJz
aGlwIG9mIHRoaXMgb2JqZWN0IHRvIHRoZSBsaXN0LAotICAvLyB0aGUgZm9sbG93aW5nIGNhbGxz
IHJlbGVhc2UgaXQsIGFuZCB3ZSBuZWVkIHRvIGRlbGV0ZSBpdCBiZWZvcmUgdGhlCi0gIC8vIHRl
c3QgZW5kcy4KLSAgVGVzdExpc3RlbmVyKiBsaXN0ZW5lciA9IG5ldyBUZXN0TGlzdGVuZXIoJm9u
X3N0YXJ0X2NvdW50ZXIsICZpc19kZXN0cm95ZWQpOwotICB7Ci0gICAgVGVzdEV2ZW50TGlzdGVu
ZXJzIGxpc3RlbmVyczsKLSAgICBsaXN0ZW5lcnMuQXBwZW5kKGxpc3RlbmVyKTsKLSAgICBFWFBF
Q1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVyKSk7Ci0gICAgVGVzdEV2
ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9n
cmFtU3RhcnQoCi0gICAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7Ci0gICAgRVhQRUNU
X1RSVUUobGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXIpID09IE5VTEwpOwotICB9Ci0gIEVYUEVD
VF9FUSgwLCBvbl9zdGFydF9jb3VudGVyKTsKLSAgRVhQRUNUX0ZBTFNFKGlzX2Rlc3Ryb3llZCk7
Ci0gIGRlbGV0ZSBsaXN0ZW5lcjsKLX0KLQotLy8gVGVzdHMgdGhhdCBubyBldmVudHMgYXJlIGZv
cndhcmRlZCB3aGVuIGV2ZW50IGZvcndhcmRpbmcgaXMgZGlzYWJsZWQuCi1URVNUKEV2ZW50TGlz
dGVuZXJUZXN0LCBTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZykgewotICBpbnQgb25fc3RhcnRfY291
bnRlciA9IDA7Ci0gIFRlc3RMaXN0ZW5lciogbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZv
bl9zdGFydF9jb3VudGVyLCBOVUxMKTsKLQotICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJz
OwotICBsaXN0ZW5lcnMuQXBwZW5kKGxpc3RlbmVyKTsKLSAgQVNTRVJUX1RSVUUoVGVzdEV2ZW50
TGlzdGVuZXJzQWNjZXNzb3I6OkV2ZW50Rm9yd2FyZGluZ0VuYWJsZWQobGlzdGVuZXJzKSk7Ci0g
IFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygmbGlz
dGVuZXJzKTsKLSAgQVNTRVJUX0ZBTFNFKFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpFdmVu
dEZvcndhcmRpbmdFbmFibGVkKGxpc3RlbmVycykpOwotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nl
c3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKLSAgICAg
ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7Ci0gIEVYUEVDVF9FUSgwLCBvbl9zdGFydF9jb3Vu
dGVyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBldmVudHMgZ2VuZXJhdGVkIGJ5IEdvb2dsZSBUZXN0
IGFyZSBub3QgZm9yd2FyZGVkIGluCi0vLyBkZWF0aCB0ZXN0IHN1YnByb2Nlc3Nlcy4KLVRFU1Qo
RXZlbnRMaXN0ZW5lckRlYXRoVGVzdCwgRXZlbnRzTm90Rm9yd2FyZGVkSW5EZWF0aFRlc3RTdWJw
cmVjZXNzZXMpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgICBHVEVTVF9D
SEVDS18oVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkV2ZW50Rm9yd2FyZGluZ0VuYWJsZWQo
Ci0gICAgICAgICAgKkdldFVuaXRUZXN0SW1wbCgpLT5saXN0ZW5lcnMoKSkpIDw8ICJleHBlY3Rl
ZCBmYWlsdXJlIjt9LAotICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBhIGxpc3RlbmVyIGluc3RhbGxlZCB2aWEgU2V0RGVmYXVsdFJlc3VsdFByaW50ZXIoKSBz
dGFydHMKLS8vIHJlY2VpdmluZyBldmVudHMgYW5kIGlzIHJldHVybmVkIHZpYSBkZWZhdWx0X3Jl
c3VsdF9wcmludGVyKCkgYW5kIHRoYXQKLS8vIHRoZSBwcmV2aW91cyBkZWZhdWx0X3Jlc3VsdF9w
cmludGVyIGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBhbmQgZGVsZXRlZC4KLVRFU1QoRXZlbnRM
aXN0ZW5lclRlc3QsIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIpIHsKLSAgaW50IG9uX3N0YXJ0X2Nv
dW50ZXIgPSAwOwotICBib29sIGlzX2Rlc3Ryb3llZCA9IGZhbHNlOwotICBUZXN0TGlzdGVuZXIq
IGxpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcigmb25fc3RhcnRfY291bnRlciwgJmlzX2Rlc3Ry
b3llZCk7Ci0KLSAgVGVzdEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKLSAgVGVzdEV2ZW50TGlz
dGVuZXJzQWNjZXNzb3I6OlNldERlZmF1bHRSZXN1bHRQcmludGVyKCZsaXN0ZW5lcnMsIGxpc3Rl
bmVyKTsKLQotICBFWFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9w
cmludGVyKCkpOwotCi0gIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigm
bGlzdGVuZXJzKS0+T25UZXN0UHJvZ3JhbVN0YXJ0KAotICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpKTsKLQotICBFWFBFQ1RfRVEoMSwgb25fc3RhcnRfY291bnRlcik7Ci0KLSAgLy8gUmVw
bGFjaW5nIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIgd2l0aCBzb21ldGhpbmcgZWxzZSBzaG91bGQg
cmVtb3ZlIGl0Ci0gIC8vIGZyb20gdGhlIGxpc3QgYW5kIGRlc3Ryb3kgaXQuCi0gIFRlc3RFdmVu
dExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0UmVzdWx0UHJpbnRlcigmbGlzdGVuZXJzLCBO
VUxMKTsKLQotICBFWFBFQ1RfVFJVRShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigp
ID09IE5VTEwpOwotICBFWFBFQ1RfVFJVRShpc19kZXN0cm95ZWQpOwotCi0gIC8vIEFmdGVyIGJy
b2FkY2FzdGluZyBhbiBldmVudCB0aGUgY291bnRlciBpcyBzdGlsbCB0aGUgc2FtZSwgaW5kaWNh
dGluZwotICAvLyB0aGUgbGlzdGVuZXIgaXMgbm90IGluIHRoZSBsaXN0IGFueW1vcmUuCi0gIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+T25UZXN0
UHJvZ3JhbVN0YXJ0KAotICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsKLSAgRVhQRUNU
X0VRKDEsIG9uX3N0YXJ0X2NvdW50ZXIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWZhdWx0
X3Jlc3VsdF9wcmludGVyIGxpc3RlbmVyIHN0b3BzIHJlY2VpdmluZyBldmVudHMKLS8vIHdoZW4g
cmVtb3ZlZCB2aWEgUmVsZWFzZSBhbmQgdGhhdCBpcyBub3Qgb3duZWQgYnkgdGhlIGxpc3QgYW55
bW9yZS4KLVRFU1QoRXZlbnRMaXN0ZW5lclRlc3QsIFJlbW92aW5nRGVmYXVsdFJlc3VsdFByaW50
ZXJXb3JrcykgewotICBpbnQgb25fc3RhcnRfY291bnRlciA9IDA7Ci0gIGJvb2wgaXNfZGVzdHJv
eWVkID0gZmFsc2U7Ci0gIC8vIEFsdGhvdWdoIEFwcGVuZCBwYXNzZXMgdGhlIG93bmVyc2hpcCBv
ZiB0aGlzIG9iamVjdCB0byB0aGUgbGlzdCwKLSAgLy8gdGhlIGZvbGxvd2luZyBjYWxscyByZWxl
YXNlIGl0LCBhbmQgd2UgbmVlZCB0byBkZWxldGUgaXQgYmVmb3JlIHRoZQotICAvLyB0ZXN0IGVu
ZHMuCi0gIFRlc3RMaXN0ZW5lciogbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFy
dF9jb3VudGVyLCAmaXNfZGVzdHJveWVkKTsKLSAgewotICAgIFRlc3RFdmVudExpc3RlbmVycyBs
aXN0ZW5lcnM7Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OlNldERlZmF1bHRSZXN1
bHRQcmludGVyKCZsaXN0ZW5lcnMsIGxpc3RlbmVyKTsKLQotICAgIEVYUEVDVF9FUShsaXN0ZW5l
ciwgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXIpKTsKLSAgICBFWFBFQ1RfVFJVRShsaXN0ZW5l
cnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpID09IE5VTEwpOwotICAgIEVYUEVDVF9GQUxTRShp
c19kZXN0cm95ZWQpOwotCi0gICAgLy8gQnJvYWRjYXN0aW5nIGV2ZW50cyBub3cgc2hvdWxkIG5v
dCBhZmZlY3QgZGVmYXVsdF9yZXN1bHRfcHJpbnRlci4KLSAgICBUZXN0RXZlbnRMaXN0ZW5lcnNB
Y2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKLSAg
ICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgb25fc3Rh
cnRfY291bnRlcik7Ci0gIH0KLSAgLy8gRGVzdHJveWluZyB0aGUgbGlzdCBzaG91bGQgbm90IGFm
ZmVjdCB0aGUgbGlzdGVuZXIgbm93LCB0b28uCi0gIEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQp
OwotICBkZWxldGUgbGlzdGVuZXI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBsaXN0ZW5lciBpbnN0
YWxsZWQgdmlhIFNldERlZmF1bHRYbWxHZW5lcmF0b3IoKSBzdGFydHMKLS8vIHJlY2VpdmluZyBl
dmVudHMgYW5kIGlzIHJldHVybmVkIHZpYSBkZWZhdWx0X3htbF9nZW5lcmF0b3IoKSBhbmQgdGhh
dAotLy8gdGhlIHByZXZpb3VzIGRlZmF1bHRfeG1sX2dlbmVyYXRvciBpcyByZW1vdmVkIGZyb20g
dGhlIGxpc3QgYW5kIGRlbGV0ZWQuCi1URVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBkZWZhdWx0X3ht
bF9nZW5lcmF0b3IpIHsKLSAgaW50IG9uX3N0YXJ0X2NvdW50ZXIgPSAwOwotICBib29sIGlzX2Rl
c3Ryb3llZCA9IGZhbHNlOwotICBUZXN0TGlzdGVuZXIqIGxpc3RlbmVyID0gbmV3IFRlc3RMaXN0
ZW5lcigmb25fc3RhcnRfY291bnRlciwgJmlzX2Rlc3Ryb3llZCk7Ci0KLSAgVGVzdEV2ZW50TGlz
dGVuZXJzIGxpc3RlbmVyczsKLSAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OlNldERlZmF1
bHRYbWxHZW5lcmF0b3IoJmxpc3RlbmVycywgbGlzdGVuZXIpOwotCi0gIEVYUEVDVF9FUShsaXN0
ZW5lciwgbGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpKTsKLQotICBUZXN0RXZlbnRM
aXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1T
dGFydCgKLSAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7Ci0KLSAgRVhQRUNUX0VRKDEs
IG9uX3N0YXJ0X2NvdW50ZXIpOwotCi0gIC8vIFJlcGxhY2luZyBkZWZhdWx0X3htbF9nZW5lcmF0
b3Igd2l0aCBzb21ldGhpbmcgZWxzZSBzaG91bGQgcmVtb3ZlIGl0Ci0gIC8vIGZyb20gdGhlIGxp
c3QgYW5kIGRlc3Ryb3kgaXQuCi0gIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZh
dWx0WG1sR2VuZXJhdG9yKCZsaXN0ZW5lcnMsIE5VTEwpOwotCi0gIEVYUEVDVF9UUlVFKGxpc3Rl
bmVycy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSA9PSBOVUxMKTsKLSAgRVhQRUNUX1RSVUUoaXNf
ZGVzdHJveWVkKTsKLQotICAvLyBBZnRlciBicm9hZGNhc3RpbmcgYW4gZXZlbnQgdGhlIGNvdW50
ZXIgaXMgc3RpbGwgdGhlIHNhbWUsIGluZGljYXRpbmcKLSAgLy8gdGhlIGxpc3RlbmVyIGlzIG5v
dCBpbiB0aGUgbGlzdCBhbnltb3JlLgotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0
UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKLSAgICAgICpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKSk7Ci0gIEVYUEVDVF9FUSgxLCBvbl9zdGFydF9jb3VudGVyKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCB0aGUgZGVmYXVsdF94bWxfZ2VuZXJhdG9yIGxpc3RlbmVyIHN0b3Bz
IHJlY2VpdmluZyBldmVudHMKLS8vIHdoZW4gcmVtb3ZlZCB2aWEgUmVsZWFzZSBhbmQgdGhhdCBp
cyBub3Qgb3duZWQgYnkgdGhlIGxpc3QgYW55bW9yZS4KLVRFU1QoRXZlbnRMaXN0ZW5lclRlc3Qs
IFJlbW92aW5nRGVmYXVsdFhtbEdlbmVyYXRvcldvcmtzKSB7Ci0gIGludCBvbl9zdGFydF9jb3Vu
dGVyID0gMDsKLSAgYm9vbCBpc19kZXN0cm95ZWQgPSBmYWxzZTsKLSAgLy8gQWx0aG91Z2ggQXBw
ZW5kIHBhc3NlcyB0aGUgb3duZXJzaGlwIG9mIHRoaXMgb2JqZWN0IHRvIHRoZSBsaXN0LAotICAv
LyB0aGUgZm9sbG93aW5nIGNhbGxzIHJlbGVhc2UgaXQsIGFuZCB3ZSBuZWVkIHRvIGRlbGV0ZSBp
dCBiZWZvcmUgdGhlCi0gIC8vIHRlc3QgZW5kcy4KLSAgVGVzdExpc3RlbmVyKiBsaXN0ZW5lciA9
IG5ldyBUZXN0TGlzdGVuZXIoJm9uX3N0YXJ0X2NvdW50ZXIsICZpc19kZXN0cm95ZWQpOwotICB7
Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKLSAgICBUZXN0RXZlbnRMaXN0ZW5l
cnNBY2Nlc3Nvcjo6U2V0RGVmYXVsdFhtbEdlbmVyYXRvcigmbGlzdGVuZXJzLCBsaXN0ZW5lcik7
Ci0KLSAgICBFWFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVyKSk7
Ci0gICAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfeG1sX2dlbmVyYXRvcigpID09IE5V
TEwpOwotICAgIEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQpOwotCi0gICAgLy8gQnJvYWRjYXN0
aW5nIGV2ZW50cyBub3cgc2hvdWxkIG5vdCBhZmZlY3QgZGVmYXVsdF94bWxfZ2VuZXJhdG9yLgot
ICAgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+
T25UZXN0UHJvZ3JhbVN0YXJ0KAotICAgICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwot
ICAgIEVYUEVDVF9FUSgwLCBvbl9zdGFydF9jb3VudGVyKTsKLSAgfQotICAvLyBEZXN0cm95aW5n
IHRoZSBsaXN0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBsaXN0ZW5lciBub3csIHRvby4KLSAgRVhQ
RUNUX0ZBTFNFKGlzX2Rlc3Ryb3llZCk7Ci0gIGRlbGV0ZSBsaXN0ZW5lcjsKLX0KLQotLy8gU2Fu
aXR5IHRlc3RzIHRvIGVuc3VyZSB0aGF0IHRoZSBhbHRlcm5hdGl2ZSwgdmVyYm9zZSBzcGVsbGlu
Z3Mgb2YKLS8vIHNvbWUgb2YgdGhlIG1hY3JvcyB3b3JrLiAgV2UgZG9uJ3QgdGVzdCB0aGVtIHRo
b3JvdWdobHkgYXMgdGhhdAotLy8gd291bGQgYmUgcXVpdGUgaW52b2x2ZWQuICBTaW5jZSB0aGVp
ciBpbXBsZW1lbnRhdGlvbnMgYXJlCi0vLyBzdHJhaWdodGZvcndhcmQsIGFuZCB0aGV5IGFyZSBy
YXJlbHkgdXNlZCwgd2UnbGwganVzdCByZWx5IG9uIHRoZQotLy8gdXNlcnMgdG8gdGVsbCB1cyB3
aGVuIHRoZXkgYXJlIGJyb2tlbi4KLUdURVNUX1RFU1QoQWx0ZXJuYXRpdmVOYW1lVGVzdCwgV29y
a3MpIHsgIC8vIEdURVNUX1RFU1QgaXMgdGhlIHNhbWUgYXMgVEVTVC4KLSAgR1RFU1RfU1VDQ0VF
RCgpIDw8ICJPSyI7ICAvLyBHVEVTVF9TVUNDRUVEIGlzIHRoZSBzYW1lIGFzIFNVQ0NFRUQuCi0K
LSAgLy8gR1RFU1RfRkFJTCBpcyB0aGUgc2FtZSBhcyBGQUlMLgotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShHVEVTVF9GQUlMKCkgPDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAg
ICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIpOwotCi0gIC8vIEdURVNUX0FTU0VSVF9Y
WSBpcyB0aGUgc2FtZSBhcyBBU1NFUlRfWFkuCi0KLSAgR1RFU1RfQVNTRVJUX0VRKDAsIDApOwot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMCwgMSkgPDwgIkFuIGV4cGVj
dGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFpbHVy
ZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfRVEoMSwgMCkgPDwgIkFu
IGV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQg
ZmFpbHVyZSIpOwotCi0gIEdURVNUX0FTU0VSVF9ORSgwLCAxKTsKLSAgR1RFU1RfQVNTRVJUX05F
KDEsIDApOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTkUoMCwgMCkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOwotCi0gIEdURVNUX0FTU0VSVF9MRSgwLCAwKTsKLSAgR1RFU1RfQVNTRVJU
X0xFKDAsIDEpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfTEUoMSwgMCkg
PDwgIkFuIGV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhw
ZWN0ZWQgZmFpbHVyZSIpOwotCi0gIEdURVNUX0FTU0VSVF9MVCgwLCAxKTsKLSAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0xUKDEsIDApIDw8ICJBbiBleHBlY3RlZCBm
YWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsK
LQotICBHVEVTVF9BU1NFUlRfR0UoMCwgMCk7Ci0gIEdURVNUX0FTU0VSVF9HRSgxLCAwKTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfQVNTRVJUX0dFKDAsIDEpIDw8ICJBbiBleHBlY3Rl
ZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUi
KTsKLQotICBHVEVTVF9BU1NFUlRfR1QoMSwgMCk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdU
RVNUX0FTU0VSVF9HVCgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEdURVNUX0FTU0VSVF9HVCgxLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLS8vIFRlc3Rz
IGZvciBpbnRlcm5hbCB1dGlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgdW5pdmVyc2FsCi0vLyBwcmludGluZy4KLS8vIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZp
bmQgYSBiZXR0ZXIgaG9tZSBmb3IgdGhlbS4KLQotY2xhc3MgQ29udmVyc2lvbkhlbHBlckJhc2Ug
e307Ci1jbGFzcyBDb252ZXJzaW9uSGVscGVyRGVyaXZlZCA6IHB1YmxpYyBDb252ZXJzaW9uSGVs
cGVyQmFzZSB7fTsKLQotLy8gVGVzdHMgdGhhdCBJc0FQcm90b2NvbE1lc3NhZ2U8VD46OnZhbHVl
IGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LgotVEVTVChJc0FQcm90b2NvbE1lc3NhZ2VUZXN0
LCBWYWx1ZUlzQ29tcGlsZVRpbWVDb25zdGFudCkgewotICBHVEVTVF9DT01QSUxFX0FTU0VSVF8o
SXNBUHJvdG9jb2xNZXNzYWdlPFByb3RvY29sTWVzc2FnZT46OnZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3RfdHJ1ZSk7Ci0gIEdURVNUX0NPTVBJTEVfQVNTRVJUXyghSXNBUHJv
dG9jb2xNZXNzYWdlPGludD46OnZhbHVlLCBjb25zdF9mYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVCBpcwotLy8gcHJv
dG8yOjpNZXNzYWdlIG9yIGEgc3ViLWNsYXNzIG9mIGl0LgotVEVTVChJc0FQcm90b2NvbE1lc3Nh
Z2VUZXN0LCBWYWx1ZUlzVHJ1ZVdoZW5UeXBlSXNBUHJvdG9jb2xNZXNzYWdlKSB7Ci0gIEVYUEVD
VF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTwgOjpwcm90bzI6Ok1lc3NhZ2U+Ojp2YWx1ZSk7Ci0g
IEVYUEVDVF9UUlVFKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1lc3NhZ2U+Ojp2YWx1ZSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBmYWxz
ZSB3aGVuIFQgaXMgbmVpdGhlcgotLy8gUHJvdG9jb2xNZXNzYWdlIG5vciBhIHN1Yi1jbGFzcyBv
ZiBpdC4KLVRFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlblR5cGVJ
c05vdEFQcm90b2NvbE1lc3NhZ2UpIHsKLSAgRVhQRUNUX0ZBTFNFKElzQVByb3RvY29sTWVzc2Fn
ZTxpbnQ+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8Y29uc3Qg
Q29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQ29tcGls
ZUFzc2VydFR5cGVzRXF1YWwgY29tcGlsZXMgd2hlbiB0aGUgdHlwZSBhcmd1bWVudHMgYXJlCi0v
LyBlcXVhbC4KLVRFU1QoQ29tcGlsZUFzc2VydFR5cGVzRXF1YWwsIENvbXBpbGVzV2hlblR5cGVz
QXJlRXF1YWwpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCwgdm9pZD4oKTsKLSAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50KiwgaW50Kj4oKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBSZW1vdmVSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IG5vbi1yZWZlcmVuY2UgdHlwZXMuCi1U
RVNUKFJlbW92ZVJlZmVyZW5jZVRlc3QsIERvZXNOb3RBZmZlY3ROb25SZWZlcmVuY2VUeXBlKSB7
Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGludD46OnR5
cGU+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVy
ZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSZW1vdmVSZWZl
cmVuY2UgcmVtb3ZlcyByZWZlcmVuY2UgZnJvbSByZWZlcmVuY2UgdHlwZXMuCi1URVNUKFJlbW92
ZVJlZmVyZW5jZVRlc3QsIFJlbW92ZXNSZWZlcmVuY2UpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8aW50LCBSZW1vdmVSZWZlcmVuY2U8aW50Jj46OnR5cGU+KCk7Ci0gIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPGNvbnN0IGNoYXIsIFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5
cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfLgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotdm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVu
Y2UoKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfUkVGRVJF
TkNFXyhUMik+KCk7Ci19Ci0KLVRFU1QoUmVtb3ZlUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9u
KSB7Ci0gIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxpbnQsIGludD4oKTsKLSAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlPGNvbnN0IGNoYXIsIGNvbnN0IGNoYXImPigpOwotfQotCi0KLS8vIFRl
c3RzIHRoYXQgUmVtb3ZlQ29uc3QgZG9lcyBub3QgYWZmZWN0IG5vbi1jb25zdCB0eXBlcy4KLVRF
U1QoUmVtb3ZlQ29uc3RUZXN0LCBEb2VzTm90QWZmZWN0Tm9uQ29uc3RUeXBlKSB7Ci0gIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8aW50Pjo6dHlwZT4oKTsKLSAgQ29t
cGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhciYsIFJlbW92ZUNvbnN0PGNoYXImPjo6dHlwZT4oKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBSZW1vdmVDb25zdCByZW1vdmVzIGNvbnN0IGZyb20gY29uc3Qg
dHlwZXMuCi1URVNUKFJlbW92ZUNvbnN0VGVzdCwgUmVtb3Zlc0NvbnN0KSB7Ci0gIENvbXBpbGVB
c3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlQ29uc3Q8Y29uc3QgaW50Pjo6dHlwZT4oKTsKLSAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y2hhclsyXSwgUmVtb3ZlQ29uc3Q8Y29uc3QgY2hhclsy
XT46OnR5cGU+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJbMl1bM10sIFJlbW92
ZUNvbnN0PGNvbnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOwotfQotCi0vLyBUZXN0cyBHVEVTVF9S
RU1PVkVfQ09OU1RfLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotdm9p
ZCBUZXN0R1Rlc3RSZW1vdmVDb25zdCgpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEs
IEdURVNUX1JFTU9WRV9DT05TVF8oVDIpPigpOwotfQotCi1URVNUKFJlbW92ZUNvbnN0VGVzdCwg
TWFjcm9WZXJzaW9uKSB7Ci0gIFRlc3RHVGVzdFJlbW92ZUNvbnN0PGludCwgaW50PigpOwotICBU
ZXN0R1Rlc3RSZW1vdmVDb25zdDxkb3VibGUmLCBkb3VibGUmPigpOwotICBUZXN0R1Rlc3RSZW1v
dmVDb25zdDxjaGFyLCBjb25zdCBjaGFyPigpOwotfQotCi0vLyBUZXN0cyBHVEVTVF9SRU1PVkVf
UkVGRVJFTkNFX0FORF9DT05TVF8uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Ci12b2lkIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0KCkgewotICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFQy
KT4oKTsKLX0KLQotVEVTVChSZW1vdmVSZWZlcmVuY2VUb0NvbnN0VGVzdCwgV29ya3MpIHsKLSAg
VGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8aW50LCBpbnQ+KCk7Ci0gIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGRvdWJsZSwgZG91YmxlJj4oKTsKLSAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsKLSAgVGVzdEdUZXN0
UmVtb3ZlUmVmZXJlbmNlQW5kQ29uc3Q8Y2hhciwgY29uc3QgY2hhciY+KCk7Ci0gIFRlc3RHVGVz
dFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKj4oKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVuY2UgZG9lcyBub3QgYWZmZWN0IHJlZmVyZW5jZSB0
eXBlcy4KLVRFU1QoQWRkUmVmZXJlbmNlVGVzdCwgRG9lc05vdEFmZmVjdFJlZmVyZW5jZVR5cGUp
IHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludCY+Ojp0
eXBlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyJiwgQWRkUmVmZXJl
bmNlPGNvbnN0IGNoYXImPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBZGRSZWZlcmVu
Y2UgYWRkcyByZWZlcmVuY2UgdG8gbm9uLXJlZmVyZW5jZSB0eXBlcy4KLVRFU1QoQWRkUmVmZXJl
bmNlVGVzdCwgQWRkc1JlZmVyZW5jZSkgewotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQm
LCBBZGRSZWZlcmVuY2U8aW50Pjo6dHlwZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyPjo6dHlwZT4oKTsKLX0KLQotLy8g
VGVzdHMgR1RFU1RfQUREX1JFRkVSRU5DRV8uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Ci12b2lkIFRlc3RHVGVzdEFkZFJlZmVyZW5jZSgpIHsKLSAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8VDEsIEdURVNUX0FERF9SRUZFUkVOQ0VfKFQyKT4oKTsKLX0KLQotVEVTVChB
ZGRSZWZlcmVuY2VUZXN0LCBNYWNyb1ZlcnNpb24pIHsKLSAgVGVzdEdUZXN0QWRkUmVmZXJlbmNl
PGludCYsIGludD4oKTsKLSAgVGVzdEdUZXN0QWRkUmVmZXJlbmNlPGNvbnN0IGNoYXImLCBjb25z
dCBjaGFyJj4oKTsKLX0KLQotLy8gVGVzdHMgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXy4KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXZvaWQgVGVzdEdUZXN0UmVmZXJl
bmNlVG9Db25zdCgpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JFRkVS
RU5DRV9UT19DT05TVF8oVDIpPigpOwotfQotCi1URVNUKEdUZXN0UmVmZXJlbmNlVG9Db25zdFRl
c3QsIFdvcmtzKSB7Ci0gIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgY2hhciYsIGNo
YXI+KCk7Ci0gIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3Q8Y29uc3QgaW50JiwgY29uc3QgaW50
PigpOwotICBUZXN0R1Rlc3RSZWZlcmVuY2VUb0NvbnN0PGNvbnN0IGRvdWJsZSYsIGRvdWJsZT4o
KTsKLSAgVGVzdEdUZXN0UmVmZXJlbmNlVG9Db25zdDxjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0
IHN0ZDo6c3RyaW5nJj4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJbXBsaWNpdGx5Q29udmVydGli
bGU8VDEsIFQyPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCi1URVNUKEltcGxp
Y2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNDb21waWxlVGltZUNvbnN0YW50KSB7Ci0gIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXygoSW1wbGljaXRseUNvbnZlcnRpYmxlPGludCwgaW50Pjo6dmFs
dWUpLCBjb25zdF90cnVlKTsKLSAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCghSW1wbGljaXRseUNv
bnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3RfZmFsc2UpOwotfQotCi0vLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxU
MSwgVDI+Ojp2YWx1ZSBpcyB0cnVlIHdoZW4gVDEgY2FuCi0vLyBiZSBpbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byBUMi4KLVRFU1QoSW1wbGljaXRseUNvbnZlcnRpYmxlVGVzdCwgVmFsdWVJc1RydWVX
aGVuQ29udmVydGlibGUpIHsKLSAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxp
bnQsIGRvdWJsZT46OnZhbHVlKSk7Ci0gIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGli
bGU8ZG91YmxlLCBpbnQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGludCosIHZvaWQqPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlD
b252ZXJ0aWJsZTxpbnQqLCBjb25zdCBpbnQqPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKElt
cGxpY2l0bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyRGVyaXZlZCYsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UmPjo6
dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBDb252
ZXJzaW9uSGVscGVyQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b252ZXJzaW9uSGVscGVyQmFzZT46OnZhbHVlKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSW1wbGlj
aXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGZhbHNlIHdoZW4gVDEKLS8vIGNhbm5v
dCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBUMi4KLVRFU1QoSW1wbGljaXRseUNvbnZlcnRp
YmxlVGVzdCwgVmFsdWVJc0ZhbHNlV2hlbk5vdENvbnZlcnRpYmxlKSB7Ci0gIEVYUEVDVF9GQUxT
RSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Kj46OnZhbHVlKSk7Ci0gIEVYUEVD
VF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPHZvaWQqLCBpbnQqPjo6dmFsdWUpKTsKLSAg
RVhQRUNUX0ZBTFNFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Y29uc3QgaW50KiwgaW50Kj46OnZh
bHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPENvbnZlcnNpb25I
ZWxwZXJCYXNlJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy
c2lvbkhlbHBlckRlcml2ZWQmPjo6dmFsdWUpKTsKLX0KLQotLy8gVGVzdHMgSXNDb250YWluZXJU
ZXN0LgotCi1jbGFzcyBOb25Db250YWluZXIge307Ci0KLVRFU1QoSXNDb250YWluZXJUZXN0VGVz
dCwgV29ya3NGb3JOb25Db250YWluZXIpIHsKLSAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRh
aW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8aW50PigwKSkpOwotICBFWFBFQ1RfRVEoc2l6
ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxjaGFyWzVdPigwKSkp
OwotICBFWFBFQ1RfRVEoc2l6ZW9mKElzTm90Q29udGFpbmVyKSwgc2l6ZW9mKElzQ29udGFpbmVy
VGVzdDxOb25Db250YWluZXI+KDApKSk7Ci19Ci0KLVRFU1QoSXNDb250YWluZXJUZXN0VGVzdCwg
V29ya3NGb3JDb250YWluZXIpIHsKLSAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCi0g
ICAgICAgICAgICBzaXplb2YoSXNDb250YWluZXJUZXN0PHN0ZDo6dmVjdG9yPGJvb2w+ID4oMCkp
KTsKLSAgRVhQRUNUX0VRKHNpemVvZihJc0NvbnRhaW5lciksCi0gICAgICAgICAgICBzaXplb2Yo
SXNDb250YWluZXJUZXN0PHN0ZDo6bWFwPGludCwgZG91YmxlPiA+KDApKSk7Ci19Ci0KLS8vIFRl
c3RzIEFycmF5RXEoKS4KLQotVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JEZWdlbmVyYXRlZEFy
cmF5cykgewotICBFWFBFQ1RfVFJVRShBcnJheUVxKDUsIDVMKSk7Ci0gIEVYUEVDVF9GQUxTRShB
cnJheUVxKCdhJywgMCkpOwotfQotCi1URVNUKEFycmF5RXFUZXN0LCBXb3Jrc0Zvck9uZURpbWVu
c2lvbmFsQXJyYXlzKSB7Ci0gIC8vIE5vdGUgdGhhdCBhIGFuZCBiIGFyZSBkaXN0aW5jdCBidXQg
Y29tcGF0aWJsZSB0eXBlcy4KLSAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSB9OwotICBsb25nIGJb
XSA9IHsgMCwgMSB9OwotICBFWFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKLSAgRVhQRUNUX1RS
VUUoQXJyYXlFcShhLCAyLCBiKSk7Ci0KLSAgYlswXSA9IDI7Ci0gIEVYUEVDVF9GQUxTRShBcnJh
eUVxKGEsIGIpKTsKLSAgRVhQRUNUX0ZBTFNFKEFycmF5RXEoYSwgMSwgYikpOwotfQotCi1URVNU
KEFycmF5RXFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXlzKSB7Ci0gIGNvbnN0IGNo
YXIgYVtdWzNdID0geyAiaGkiLCAibG8iIH07Ci0gIGNvbnN0IGNoYXIgYltdWzNdID0geyAiaGki
LCAibG8iIH07Ci0gIGNvbnN0IGNoYXIgY1tdWzNdID0geyAiaGkiLCAibGkiIH07Ci0KLSAgRVhQ
RUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7Ci0gIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikp
OwotCi0gIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIGMpKTsKLSAgRVhQRUNUX0ZBTFNFKEFycmF5
RXEoYSwgMiwgYykpOwotfQotCi0vLyBUZXN0cyBBcnJheUF3YXJlRmluZCgpLgotCi1URVNUKEFy
cmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5KSB7Ci0gIGNvbnN0
IGNoYXIgYVtdID0gImhlbGxvIjsKLSAgRVhQRUNUX0VRKGEgKyA0LCBBcnJheUF3YXJlRmluZChh
LCBhICsgNSwgJ28nKSk7Ci0gIEVYUEVDVF9FUShhICsgNSwgQXJyYXlBd2FyZUZpbmQoYSwgYSAr
IDUsICd4JykpOwotfQotCi1URVNUKEFycmF5QXdhcmVGaW5kVGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbEFycmF5KSB7Ci0gIGludCBhW11bMl0gPSB7IHsgMCwgMSB9LCB7IDIsIDMgfSwgeyA0
LCA1IH0gfTsKLSAgY29uc3QgaW50IGJbMl0gPSB7IDIsIDMgfTsKLSAgRVhQRUNUX0VRKGEgKyAx
LCBBcnJheUF3YXJlRmluZChhLCBhICsgMywgYikpOwotCi0gIGNvbnN0IGludCBjWzJdID0geyA2
LCA3IH07Ci0gIEVYUEVDVF9FUShhICsgMywgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGMpKTsK
LX0KLQotLy8gVGVzdHMgQ29weUFycmF5KCkuCi0KLVRFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JEZWdlbmVyYXRlZEFycmF5cykgewotICBpbnQgbiA9IDA7Ci0gIENvcHlBcnJheSgnYScsICZu
KTsKLSAgRVhQRUNUX0VRKCdhJywgbik7Ci19Ci0KLVRFU1QoQ29weUFycmF5VGVzdCwgV29ya3NG
b3JPbmVEaW1lbnNpb25hbEFycmF5cykgewotICBjb25zdCBjaGFyIGFbM10gPSAiaGkiOwotICBp
bnQgYlszXTsKLSNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21w
aWxlIHNvbWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgotICBDb3B5QXJyYXkoYSwgJmIpOwotICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIGIpKTsKLSNlbmRpZgotCi0gIGludCBjWzNdOwotICBDb3B5
QXJyYXkoYSwgMywgYyk7Ci0gIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOwotfQotCi1URVNU
KENvcHlBcnJheVRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheXMpIHsKLSAgY29uc3Qg
aW50IGFbMl1bM10gPSB7IHsgMCwgMSwgMiB9LCB7IDMsIDQsIDUgfSB9OwotICBpbnQgYlsyXVsz
XTsKLSNpZm5kZWYgX19CT1JMQU5EQ19fICAvLyBDKytCdWlsZGVyIGNhbm5vdCBjb21waWxlIHNv
bWUgYXJyYXkgc2l6ZSBkZWR1Y3Rpb25zLgotICBDb3B5QXJyYXkoYSwgJmIpOwotICBFWFBFQ1Rf
VFJVRShBcnJheUVxKGEsIGIpKTsKLSNlbmRpZgotCi0gIGludCBjWzJdWzNdOwotICBDb3B5QXJy
YXkoYSwgMiwgYyk7Ci0gIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYykpOwotfQotCi0vLyBUZXN0
cyBOYXRpdmVBcnJheS4KLQotVEVTVChOYXRpdmVBcnJheVRlc3QsIENvbnN0cnVjdG9yRnJvbUFy
cmF5V29ya3MpIHsKLSAgY29uc3QgaW50IGFbM10gPSB7IDAsIDEsIDIgfTsKLSAgTmF0aXZlQXJy
YXk8aW50PiBuYShhLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOwotICBFWFBFQ1Rf
RVEoM1UsIG5hLnNpemUoKSk7Ci0gIEVYUEVDVF9FUShhLCBuYS5iZWdpbigpKTsKLX0KLQotVEVT
VChOYXRpdmVBcnJheVRlc3QsIENyZWF0ZXNBbmREZWxldGVzQ29weU9mQXJyYXlXaGVuQXNrZWRU
bykgewotICB0eXBlZGVmIGludCBBcnJheVsyXTsKLSAgQXJyYXkqIGEgPSBuZXcgQXJyYXlbMV07
Ci0gICgqYSlbMF0gPSAwOwotICAoKmEpWzFdID0gMTsKLSAgTmF0aXZlQXJyYXk8aW50PiBuYSgq
YSwgMiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7Ci0gIEVYUEVDVF9ORSgqYSwgbmEuYmVnaW4o
KSk7Ci0gIGRlbGV0ZVtdIGE7Ci0gIEVYUEVDVF9FUSgwLCBuYS5iZWdpbigpWzBdKTsKLSAgRVhQ
RUNUX0VRKDEsIG5hLmJlZ2luKClbMV0pOwotCi0gIC8vIFdlIHJlbHkgb24gdGhlIGhlYXAgY2hl
Y2tlciB0byB2ZXJpZnkgdGhhdCBuYSBkZWxldGVzIHRoZSBjb3B5IG9mCi0gIC8vIGFycmF5Lgot
fQotCi1URVNUKE5hdGl2ZUFycmF5VGVzdCwgVHlwZU1lbWJlcnNBcmVDb3JyZWN0KSB7Ci0gIFN0
YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBOYXRpdmVBcnJheTxjaGFyPjo6dmFsdWVfdHlwZT4oKTsK
LSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludFsyXSwgTmF0aXZlQXJyYXk8aW50WzJdPjo6dmFsdWVf
dHlwZT4oKTsKLQotICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIE5hdGl2ZUFycmF5
PGNoYXI+Ojpjb25zdF9pdGVyYXRvcj4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGJv
b2woKilbMl0sIE5hdGl2ZUFycmF5PGJvb2xbMl0+Ojpjb25zdF9pdGVyYXRvcj4oKTsKLX0KLQot
VEVTVChOYXRpdmVBcnJheVRlc3QsIE1ldGhvZHNXb3JrKSB7Ci0gIGNvbnN0IGludCBhWzNdID0g
eyAwLCAxLCAyIH07Ci0gIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1NvdXJj
ZUNvcHkoKSk7Ci0gIEFTU0VSVF9FUSgzVSwgbmEuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDMsIG5h
LmVuZCgpIC0gbmEuYmVnaW4oKSk7Ci0KLSAgTmF0aXZlQXJyYXk8aW50Pjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBuYS5iZWdpbigpOwotICBFWFBFQ1RfRVEoMCwgKml0KTsKLSAgKytpdDsKLSAgRVhQ
RUNUX0VRKDEsICppdCk7Ci0gIGl0Kys7Ci0gIEVYUEVDVF9FUSgyLCAqaXQpOwotICArK2l0Owot
ICBFWFBFQ1RfRVEobmEuZW5kKCksIGl0KTsKLQotICBFWFBFQ1RfVFJVRShuYSA9PSBuYSk7Ci0K
LSAgTmF0aXZlQXJyYXk8aW50PiBuYTIoYSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgp
KTsKLSAgRVhQRUNUX1RSVUUobmEgPT0gbmEyKTsKLQotICBjb25zdCBpbnQgYjFbM10gPSB7IDAs
IDEsIDEgfTsKLSAgY29uc3QgaW50IGIyWzRdID0geyAwLCAxLCAyLCAzIH07Ci0gIEVYUEVDVF9G
QUxTRShuYSA9PSBOYXRpdmVBcnJheTxpbnQ+KGIxLCAzLCBSZWxhdGlvblRvU291cmNlUmVmZXJl
bmNlKCkpKTsKLSAgRVhQRUNUX0ZBTFNFKG5hID09IE5hdGl2ZUFycmF5PGludD4oYjIsIDQsIFJl
bGF0aW9uVG9Tb3VyY2VDb3B5KCkpKTsKLX0KLQotVEVTVChOYXRpdmVBcnJheVRlc3QsIFdvcmtz
Rm9yVHdvRGltZW5zaW9uYWxBcnJheSkgewotICBjb25zdCBjaGFyIGFbMl1bM10gPSB7ICJoaSIs
ICJsbyIgfTsKLSAgTmF0aXZlQXJyYXk8Y2hhclszXT4gbmEoYSwgMiwgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSgpKTsKLSAgQVNTRVJUX0VRKDJVLCBuYS5zaXplKCkpOwotICBFWFBFQ1RfRVEo
YSwgbmEuYmVnaW4oKSk7Ci19Ci0KLS8vIFRlc3RzIFNraXBQcmVmaXgoKS4KLQotVEVTVChTa2lw
UHJlZml4VGVzdCwgU2tpcHNXaGVuUHJlZml4TWF0Y2hlcykgewotICBjb25zdCBjaGFyKiBjb25z
dCBzdHIgPSAiaGVsbG8iOwotCi0gIGNvbnN0IGNoYXIqIHAgPSBzdHI7Ci0gIEVYUEVDVF9UUlVF
KFNraXBQcmVmaXgoIiIsICZwKSk7Ci0gIEVYUEVDVF9FUShzdHIsIHApOwotCi0gIHAgPSBzdHI7
Ci0gIEVYUEVDVF9UUlVFKFNraXBQcmVmaXgoImhlbGwiLCAmcCkpOwotICBFWFBFQ1RfRVEoc3Ry
ICsgNCwgcCk7Ci19Ci0KLVRFU1QoU2tpcFByZWZpeFRlc3QsIERvZXNOb3RTa2lwV2hlblByZWZp
eERvZXNOb3RNYXRjaCkgewotICBjb25zdCBjaGFyKiBjb25zdCBzdHIgPSAid29ybGQiOwotCi0g
IGNvbnN0IGNoYXIqIHAgPSBzdHI7Ci0gIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJXIiwgJnAp
KTsKLSAgRVhQRUNUX0VRKHN0ciwgcCk7Ci0KLSAgcCA9IHN0cjsKLSAgRVhQRUNUX0ZBTFNFKFNr
aXBQcmVmaXgoIndvcmxkISIsICZwKSk7Ci0gIEVYUEVDVF9FUShzdHIsIHApOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTMxY2VkNDlkNDEwODc2MjlkZTkyNTQ0ZjA1OWNiZGVhMjcwYjViMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ5
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBndGVz
dF94bWxfb3V0ZmlsZTFfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0UHJvcGVydHkgdXNl
ZCBieQotLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKLQotI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCi0KLWNsYXNzIFByb3BlcnR5T25lIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHBy
b3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIFJlY29yZFByb3BlcnR5KCJT
ZXRVcFByb3AiLCAxKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgUmVj
b3JkUHJvcGVydHkoIlRlYXJEb3duUHJvcCIsIDEpOwotICB9Ci19OwotCi1URVNUX0YoUHJvcGVy
dHlPbmUsIFRlc3RTb21lUHJvcGVydGllcykgewotICBSZWNvcmRQcm9wZXJ0eSgiVGVzdFNvbWVQ
cm9wZXJ0eSIsIDEpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxf
b3V0ZmlsZTJfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90
ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I0MDBiMjc2MDU3Y2Y2MjRi
NGRlZTY0NWRlMzNhM2M0OWYwZWVjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5j
YworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20g
KEtlaXRoIFJheSkKLS8vCi0vLyBndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUg
eG1sIHZpYSBUZXN0UHJvcGVydHkgdXNlZCBieQotLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLWNsYXNzIFByb3BlcnR5VHdvIDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkg
ewotICAgIFJlY29yZFByb3BlcnR5KCJTZXRVcFByb3AiLCAyKTsKLSAgfQotICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7Ci0gICAgUmVjb3JkUHJvcGVydHkoIlRlYXJEb3duUHJvcCIsIDIpOwot
ICB9Ci19OwotCi1URVNUX0YoUHJvcGVydHlUd28sIFRlc3RTb21lUHJvcGVydGllcykgewotICBS
ZWNvcmRQcm9wZXJ0eSgiVGVzdFNvbWVQcm9wZXJ0eSIsIDIpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDUyNGU0MzdlNmMxNzY3OGJkMmI2ZDI4YWQyYTQ3OTk4MTAyNTkyYzIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF94bWxfb3V0ZmlsZXNfdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3Qg
Zm9yIHRoZSBndGVzdF94bWxfb3V0cHV0IG1vZHVsZS4iIiIKLQotX19hdXRob3JfXyA9ICJrZWl0
aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpIgotCi1pbXBvcnQgb3MKLWZyb20geG1sLmRvbSBp
bXBvcnQgbWluaWRvbSwgTm9kZQotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotaW1wb3J0IGd0
ZXN0X3htbF90ZXN0X3V0aWxzCi0KLQotR1RFU1RfT1VUUFVUX1NVQkRJUiA9ICJ4bWxfb3V0Zmls
ZXMiCi1HVEVTVF9PVVRQVVRfMV9URVNUID0gImd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyIKLUdU
RVNUX09VVFBVVF8yX1RFU1QgPSAiZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfIgotCi1FWFBFQ1RF
RF9YTUxfMSA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08dGVz
dHN1aXRlcyB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRp
bWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgotICA8dGVzdHN1aXRlIG5hbWU9
IlByb3BlcnR5T25lIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUZXN0U29tZVByb3BlcnRpZXMiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlByb3BlcnR5T25lIiBTZXRVcFByb3A9IjEi
IFRlc3RTb21lUHJvcGVydHk9IjEiIFRlYXJEb3duUHJvcD0iMSIgLz4KLSAgPC90ZXN0c3VpdGU+
Ci08L3Rlc3RzdWl0ZXM+Ci0iIiIKLQotRVhQRUNURURfWE1MXzIgPSAiIiI8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9
IkFsbFRlc3RzIj4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVR3byIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNh
c2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJQcm9wZXJ0eVR3byIgU2V0VXBQcm9wPSIyIiBUZXN0U29tZVByb3BlcnR5PSIyIiBUZWFy
RG93blByb3A9IjIiIC8+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotIiIiCi0KLQot
Y2xhc3MgR1Rlc3RYTUxPdXRGaWxlc1Rlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxU
ZXN0Q2FzZSk6Ci0gICIiIlVuaXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QncyBYTUwgb3V0cHV0IGZ1
bmN0aW9uYWxpdHkuIiIiCi0KLSAgZGVmIHNldFVwKHNlbGYpOgotICAgICMgV2Ugd2FudCB0aGUg
dHJhaWxpbmcgJy8nIHRoYXQgdGhlIGxhc3QgIiIgcHJvdmlkZXMgaW4gb3MucGF0aC5qb2luLCBm
b3IKLSAgICAjIHRlbGxpbmcgR29vZ2xlIFRlc3QgdG8gY3JlYXRlIGFuIG91dHB1dCBkaXJlY3Rv
cnkgaW5zdGVhZCBvZiBhIHNpbmdsZSBmaWxlCi0gICAgIyBmb3IgeG1sIG91dHB1dC4KLSAgICBz
ZWxmLm91dHB1dF9kaXJfID0gb3MucGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERp
cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfT1VUUFVUX1NV
QkRJUiwgIiIpCi0gICAgc2VsZi5EZWxldGVGaWxlc0FuZERpcigpCi0KLSAgZGVmIHRlYXJEb3du
KHNlbGYpOgotICAgIHNlbGYuRGVsZXRlRmlsZXNBbmREaXIoKQotCi0gIGRlZiBEZWxldGVGaWxl
c0FuZERpcihzZWxmKToKLSAgICB0cnk6Ci0gICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHNl
bGYub3V0cHV0X2Rpcl8sIEdURVNUX09VVFBVVF8xX1RFU1QgKyAiLnhtbCIpKQotICAgIGV4Y2Vw
dCBvcy5lcnJvcjoKLSAgICAgIHBhc3MKLSAgICB0cnk6Ci0gICAgICBvcy5yZW1vdmUob3MucGF0
aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIEdURVNUX09VVFBVVF8yX1RFU1QgKyAiLnhtbCIpKQot
ICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgIHBhc3MKLSAgICB0cnk6Ci0gICAgICBvcy5ybWRp
cihzZWxmLm91dHB1dF9kaXJfKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgIHBhc3MKLQot
ICBkZWYgdGVzdE91dGZpbGUxKHNlbGYpOgotICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdURVNUX09V
VFBVVF8xX1RFU1QsIEVYUEVDVEVEX1hNTF8xKQotCi0gIGRlZiB0ZXN0T3V0ZmlsZTIoc2VsZik6
Ci0gICAgc2VsZi5fVGVzdE91dEZpbGUoR1RFU1RfT1VUUFVUXzJfVEVTVCwgRVhQRUNURURfWE1M
XzIpCi0KLSAgZGVmIF9UZXN0T3V0RmlsZShzZWxmLCB0ZXN0X25hbWUsIGV4cGVjdGVkX3htbCk6
Ci0gICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgodGVzdF9uYW1lKQotICAgIGNvbW1hbmQgPSBbZ3Rlc3RfcHJvZ19wYXRoLCAiLS1ndGVz
dF9vdXRwdXQ9eG1sOiVzIiAlIHNlbGYub3V0cHV0X2Rpcl9dCi0gICAgcCA9IGd0ZXN0X3Rlc3Rf
dXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCkpCi0gICAgc2Vs
Zi5hc3NlcnRfKHAuZXhpdGVkKQotICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhpdF9jb2Rl
KQotCi0gICAgIyBUT0RPKHdhbkBnb29nbGUuY29tKTogbGlidG9vbCBjYXVzZXMgdGhlIGJ1aWx0
IHRlc3QgYmluYXJ5IHRvIGJlCi0gICAgIyAgIG5hbWVkIGx0LWd0ZXN0X3htbF9vdXRmaWxlc190
ZXN0XyBpbnN0ZWFkIG9mCi0gICAgIyAgIGd0ZXN0X3htbF9vdXRmaWxlc190ZXN0Xy4gIFRvIGFj
Y291bnQgZm9yIHRoaXMgcG9zc2liaWxsaXR5LCB3ZQotICAgICMgICBhbGxvdyBib3RoIG5hbWVz
IGluIHRoZSBmb2xsb3dpbmcgY29kZS4gIFdlIHNob3VsZCByZW1vdmUgdGhpcwotICAgICMgICBo
YWNrIHdoZW4gQ2hhbmRsZXIgQ2FycnV0aCdzIGxpYnRvb2wgcmVwbGFjZW1lbnQgdG9vbCBpcyBy
ZWFkeS4KLSAgICBvdXRwdXRfZmlsZV9uYW1lMSA9IHRlc3RfbmFtZSArICIueG1sIgotICAgIG91
dHB1dF9maWxlMSA9IG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBvdXRwdXRfZmlsZV9u
YW1lMSkKLSAgICBvdXRwdXRfZmlsZV9uYW1lMiA9ICdsdC0nICsgb3V0cHV0X2ZpbGVfbmFtZTEK
LSAgICBvdXRwdXRfZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0
X2ZpbGVfbmFtZTIpCi0gICAgc2VsZi5hc3NlcnRfKG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxl
MSkgb3Igb3MucGF0aC5pc2ZpbGUob3V0cHV0X2ZpbGUyKSwKLSAgICAgICAgICAgICAgICAgb3V0
cHV0X2ZpbGUxKQotCi0gICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKGV4cGVjdGVk
X3htbCkKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShvdXRwdXRfZmlsZTEpOgotICAgICAgYWN0dWFs
ID0gbWluaWRvbS5wYXJzZShvdXRwdXRfZmlsZTEpCi0gICAgZWxzZToKLSAgICAgIGFjdHVhbCA9
IG1pbmlkb20ucGFyc2Uob3V0cHV0X2ZpbGUyKQotICAgIHNlbGYuTm9ybWFsaXplWG1sKGFjdHVh
bC5kb2N1bWVudEVsZW1lbnQpCi0gICAgc2VsZi5Bc3NlcnRFcXVpdmFsZW50Tm9kZXMoZXhwZWN0
ZWQuZG9jdW1lbnRFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVh
bC5kb2N1bWVudEVsZW1lbnQpCi0gICAgZXhwZWN0ZWQudW5saW5rKCkKLSAgICBhY3R1YWwudW5s
aW5rKCkKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICBvcy5lbnZpcm9uWyJHVEVT
VF9TVEFDS19UUkFDRV9ERVBUSCJdID0gIjAiCi0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3QucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGJjZDU5NzU5OTFkNzQzNjcyOWNkODZlNmM4MmQyM2M4ZjM1
NWE4ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMzA4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAwNiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIlVuaXQgdGVzdCBmb3IgdGhlIGd0ZXN0X3htbF9vdXRwdXQgbW9kdWxlIiIiCi0K
LV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBNY2FmZWUpJwotCi1pbXBvcnQg
ZGF0ZXRpbWUKLWltcG9ydCBlcnJubwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMK
LWZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91
dGlscwotaW1wb3J0IGd0ZXN0X3htbF90ZXN0X3V0aWxzCi0KLQotR1RFU1RfRklMVEVSX0ZMQUcg
PSAnLS1ndGVzdF9maWx0ZXInCi1HVEVTVF9MSVNUX1RFU1RTX0ZMQUcgPSAnLS1ndGVzdF9saXN0
X3Rlc3RzJwotR1RFU1RfT1VUUFVUX0ZMQUcgICAgICAgICA9ICItLWd0ZXN0X291dHB1dCIKLUdU
RVNUX0RFRkFVTFRfT1VUUFVUX0ZJTEUgPSAidGVzdF9kZXRhaWwueG1sIgotR1RFU1RfUFJPR1JB
TV9OQU1FID0gImd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfIgotCi1TVVBQT1JUU19TVEFDS19U
UkFDRVMgPSBGYWxzZQotCi1pZiBTVVBQT1JUU19TVEFDS19UUkFDRVM6Ci0gIFNUQUNLX1RSQUNF
X1RFTVBMQVRFID0gJ1xuU3RhY2sgdHJhY2U6XG4qJwotZWxzZToKLSAgU1RBQ0tfVFJBQ0VfVEVN
UExBVEUgPSAnJwotCi1FWFBFQ1RFRF9OT05fRU1QVFlfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIyMyIgZmFpbHVyZXM9
IjQiIGRpc2FibGVkPSIyIiBlcnJvcnM9IjAiIHRpbWU9IioiIHRpbWVzdGFtcD0iKiIgbmFtZT0i
QWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgotICA8dGVzdHN1aXRlIG5hbWU9IlN1Y2Nl
c3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAi
IHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJydW4iIHRp
bWU9IioiIGNsYXNzbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiLz4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0
ZXN0c3VpdGUgbmFtZT0iRmFpbGVkVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iRmFpbHMiIHN0
YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkZhaWxlZFRlc3QiPgotICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAgICAgIEV4
cGVjdGVkOiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3Rf
eG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFs
IHRvOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1
aXRlPgotICA8dGVzdHN1aXRlIG5hbWU9Ik1peGVkUmVzdWx0VGVzdCIgdGVzdHM9IjMiIGZhaWx1
cmVzPSIxIiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2Ug
bmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9Ik1peGVkUmVz
dWx0VGVzdCIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOiomI3gwQTsgICAgICBFeHBlY3RlZDogMSYj
eDBBO1RvIGJlIGVxdWFsIHRvOiAyIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRf
dW5pdHRlc3RfLmNjOioKLSAgICAgIEV4cGVjdGVkOiAxCi1UbyBiZSBlcXVhbCB0bzogMiUoc3Rh
Y2spc11dPjwvZmFpbHVyZT4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOiomI3gwQTsgICAgICBFeHBlY3RlZDogMiYjeDBBO1RvIGJlIGVxdWFs
IHRvOiAzIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioK
LSAgICAgIEV4cGVjdGVkOiAyCi1UbyBiZSBlcXVhbCB0bzogMyUoc3RhY2spc11dPjwvZmFpbHVy
ZT4KLSAgICA8L3Rlc3RjYXNlPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJESVNBQkxFRF90ZXN0IiBz
dGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3VsdFRlc3QiLz4KLSAg
PC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iWG1sUXVvdGluZ1Rlc3QiIHRlc3RzPSIx
IiBmYWlsdXJlcz0iMSIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRl
c3RjYXNlIG5hbWU9Ik91dHB1dHNDRGF0YSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFt
ZT0iWG1sUXVvdGluZ1Rlc3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291
dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBO0ZhaWxlZCYjeDBBO1hNTCBvdXRwdXQ6ICZsdDs/eG1s
IGVuY29kaW5nPSZxdW90O3V0Zi04JnF1b3Q7Jmd0OyZsdDt0b3AmZ3Q7Jmx0OyFbQ0RBVEFbY2Rh
dGEgdGV4dF1dJmd0OyZsdDsvdG9wJmd0OyIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0Xy5jYzoqCi1GYWlsZWQKLVhNTCBvdXRwdXQ6IDw/eG1sIGVuY29kaW5nPSJ1
dGYtOCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+XV0mZ3Q7PCFbQ0RBVEFbPC90b3A+JShz
dGFjaylzXV0+PC9mYWlsdXJlPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRlPgotICA8
dGVzdHN1aXRlIG5hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVz
PSIxIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFt
ZT0iSW52YWxpZENoYXJhY3RlcnNJbk1lc3NhZ2UiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IkludmFsaWRDaGFyYWN0ZXJzVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJn
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7RmFpbGVkJiN4MEE7SW52YWxpZCBj
aGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtdIiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRw
dXRfdW5pdHRlc3RfLmNjOioKLUZhaWxlZAotSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRz
IFtdJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRl
PgotICA8dGVzdHN1aXRlIG5hbWU9IkRpc2FibGVkVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMSIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0i
RElTQUJMRURfdGVzdF9ub3RfcnVuIiBzdGF0dXM9Im5vdHJ1biIgdGltZT0iKiIgY2xhc3NuYW1l
PSJEaXNhYmxlZFRlc3QiLz4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iUHJv
cGVydHlSZWNvcmRpbmdUZXN0IiB0ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBl
cnJvcnM9IjAiIHRpbWU9IioiIFNldFVwVGVzdENhc2U9InllcyIgVGVhckRvd25UZXN0Q2FzZT0i
YXllIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iT25lUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1l
PSIqIiBjbGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjEiLz4KLSAgICA8
dGVzdGNhc2UgbmFtZT0iSW50VmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5X2ludD0iMSIvPgotICAgIDx0ZXN0
Y2FzZSBuYW1lPSJUaHJlZVByb3BlcnRpZXMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25h
bWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjEiIGtleV8yPSIyIiBrZXlfMz0iMyIv
PgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlIiBz
dGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIGtl
eV8xPSIyIi8+Ci0gIDwvdGVzdHN1aXRlPgotICA8dGVzdHN1aXRlIG5hbWU9Ik5vRml4dHVyZVRl
c3QiIHRlc3RzPSIzIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0i
KiI+Ci0gICAgIDx0ZXN0Y2FzZSBuYW1lPSJSZWNvcmRQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRp
bWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5PSIxIi8+Ci0gICAgIDx0ZXN0Y2Fz
ZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSIg
c3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIga2V5X2Zvcl91
dGlsaXR5X2ludD0iMSIvPgotICAgICA8dGVzdGNhc2UgbmFtZT0iRXh0ZXJuYWxVdGlsaXR5VGhh
dENhbGxzUmVjb3JkU3RyaW5nVmFsdWVkUHJvcGVydHkiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik5vRml4dHVyZVRlc3QiIGtleV9mb3JfdXRpbGl0eV9zdHJpbmc9IjEiLz4KLSAg
PC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiB0
ZXN0cz0iNCIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgot
ICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFt
PSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZh
bHVlX3BhcmFtPSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1Zh
bHVlUGFyYW1UZXN0IiAvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJBbm90aGVyVGVzdFRoYXRIYXNW
YWx1ZVBhcmFtQXR0cmlidXRlLzAiIHZhbHVlX3BhcmFtPSIzMyIgc3RhdHVzPSJydW4iIHRpbWU9
IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1UZXN0IiAvPgotICAgIDx0ZXN0Y2FzZSBu
YW1lPSJBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlLzEiIHZhbHVlX3BhcmFt
PSI0MiIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1ZhbHVlUGFyYW1U
ZXN0IiAvPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJUeXBlZFRlc3QvMCIg
dGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4K
LSAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIq
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBlZFRlc3QvMCIgLz4KLSAgPC90
ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iVHlwZWRUZXN0LzEiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3RhdHVzPSJydW4i
IHRpbWU9IioiIGNsYXNzbmFtZT0iVHlwZWRUZXN0LzEiIC8+Ci0gIDwvdGVzdHN1aXRlPgotICA8
dGVzdHN1aXRlIG5hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlLzAiIHRlc3Rz
PSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAg
PHRlc3RjYXNlIG5hbWU9Ikhhc1R5cGVQYXJhbUF0dHJpYnV0ZSIgdHlwZV9wYXJhbT0iKiIgc3Rh
dHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iU2luZ2xlL1R5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2UvMCIgLz4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBh
cmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8xIiAvPgotICA8L3Rlc3RzdWl0
ZT4KLTwvdGVzdHN1aXRlcz4iIiIgJSB7J3N0YWNrJzogU1RBQ0tfVFJBQ0VfVEVNUExBVEV9Ci0K
LUVYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJs
ZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKLSAgICAgICAgICAgIHRpbWVzdGFtcD0iKiIgbmFt
ZT0iQWxsVGVzdHMiIGFkX2hvY19wcm9wZXJ0eT0iNDIiPgotICA8dGVzdHN1aXRlIG5hbWU9IlN1
Y2Nlc3NmdWxUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIgotICAgICAg
ICAgICAgIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlN1Y2NlZWRz
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNzZnVsVGVzdCIvPgotICA8
L3Rlc3RzdWl0ZT4KLTwvdGVzdHN1aXRlcz4iIiIKLQotRVhQRUNURURfRU1QVFlfWE1MID0gIiIi
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0ZXN0c3VpdGVzIHRlc3Rz
PSIwIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIKLSAgICAg
ICAgICAgIHRpbWVzdGFtcD0iKiIgbmFtZT0iQWxsVGVzdHMiPgotPC90ZXN0c3VpdGVzPiIiIgot
Ci1HVEVTVF9QUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aChHVEVTVF9QUk9HUkFNX05BTUUpCi0KLVNVUFBPUlRTX1RZUEVEX1RFU1RTID0gJ1R5cGVk
VGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtHVEVTVF9QUk9HUkFN
X1BBVEgsIEdURVNUX0xJU1RfVEVTVFNfRkxBR10sIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRw
dXQKLQotCi1jbGFzcyBHVGVzdFhNTE91dHB1dFVuaXRUZXN0KGd0ZXN0X3htbF90ZXN0X3V0aWxz
LkdUZXN0WE1MVGVzdENhc2UpOgotICAiIiIKLSAgVW5pdCB0ZXN0IGZvciBHb29nbGUgVGVzdCdz
IFhNTCBvdXRwdXQgZnVuY3Rpb25hbGl0eS4KLSAgIiIiCi0KLSAgIyBUaGlzIHRlc3QgY3VycmVu
dGx5IGJyZWFrcyBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0eXBlZCBhbmQKLSAg
IyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIHNvIHdlIGRvbid0IHJ1biBpdCB1bmRlciB0aGVt
LgotICBpZiBTVVBQT1JUU19UWVBFRF9URVNUUzoKLSAgICBkZWYgdGVzdE5vbkVtcHR5WG1sT3V0
cHV0KHNlbGYpOgotICAgICAgIiIiCi0gICAgICBSdW5zIGEgdGVzdCBwcm9ncmFtIHRoYXQgZ2Vu
ZXJhdGVzIGEgbm9uLWVtcHR5IFhNTCBvdXRwdXQsIGFuZAotICAgICAgdGVzdHMgdGhhdCB0aGUg
WE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAgICIiIgotICAgICAgc2VsZi5fVGVzdFhtbE91
dHB1dChHVEVTVF9QUk9HUkFNX05BTUUsIEVYUEVDVEVEX05PTl9FTVBUWV9YTUwsIDEpCi0KLSAg
ZGVmIHRlc3RFbXB0eVhtbE91dHB1dChzZWxmKToKLSAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0
IGZvciBhIEdvb2dsZSBUZXN0IGJpbmFyeSB3aXRob3V0IGFjdHVhbCB0ZXN0cy4KLQotICAgIFJ1
bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4gZW1wdHkgWE1MIG91dHB1dCwgYW5k
Ci0gICAgdGVzdHMgdGhhdCB0aGUgWE1MIG91dHB1dCBpcyBleHBlY3RlZC4KLSAgICAiIiIKLQot
ICAgIHNlbGYuX1Rlc3RYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBFWFBFQ1RF
RF9FTVBUWV9YTUwsIDApCi0KLSAgZGVmIHRlc3RUaW1lc3RhbXBWYWx1ZShzZWxmKToKLSAgICAi
IiJDaGVja3Mgd2hldGhlciB0aGUgdGltZXN0YW1wIGF0dHJpYnV0ZSBpbiB0aGUgWE1MIG91dHB1
dCBpcyB2YWxpZC4KLQotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYW4g
ZW1wdHkgWE1MIG91dHB1dCwgYW5kIGNoZWNrcyBpZgotICAgIHRoZSB0aW1lc3RhbXAgYXR0cmli
dXRlIGluIHRoZSB0ZXN0c3VpdGVzIHRhZyBpcyB2YWxpZC4KLSAgICAiIiIKLSAgICBhY3R1YWwg
PSBzZWxmLl9HZXRYbWxPdXRwdXQoJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnLCBbXSwgMCkKLSAg
ICBkYXRlX3RpbWVfc3RyID0gYWN0dWFsLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGVOb2Rl
KCd0aW1lc3RhbXAnKS52YWx1ZQotICAgICMgZGF0ZXRpbWUuc3RycHRpbWUoKSBpcyBvbmx5IGF2
YWlsYWJsZSBpbiBQeXRob24gMi41KyBzbyB3ZSBoYXZlIHRvCi0gICAgIyBwYXJzZSB0aGUgZXhw
ZWN0ZWQgZGF0ZXRpbWUgbWFudWFsbHkuCi0gICAgbWF0Y2ggPSByZS5tYXRjaChyJyhcZCspLShc
ZFxkKS0oXGRcZClUKFxkXGQpOihcZFxkKTooXGRcZCknLCBkYXRlX3RpbWVfc3RyKQotICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgcmUubWF0Y2gsCi0gICAgICAgICdYTUwgZGF0ZXR0aW1l
IHN0cmluZyAlcyBoYXMgaW5jb3JyZWN0IGZvcm1hdCcgJSBkYXRlX3RpbWVfc3RyKQotICAgIGRh
dGVfdGltZV9mcm9tX3htbCA9IGRhdGV0aW1lLmRhdGV0aW1lKAotICAgICAgICB5ZWFyPWludCht
YXRjaC5ncm91cCgxKSksIG1vbnRoPWludChtYXRjaC5ncm91cCgyKSksCi0gICAgICAgIGRheT1p
bnQobWF0Y2guZ3JvdXAoMykpLCBob3VyPWludChtYXRjaC5ncm91cCg0KSksCi0gICAgICAgIG1p
bnV0ZT1pbnQobWF0Y2guZ3JvdXAoNSkpLCBzZWNvbmQ9aW50KG1hdGNoLmdyb3VwKDYpKSkKLQot
ICAgIHRpbWVfZGVsdGEgPSBhYnMoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkgLSBkYXRlX3RpbWVf
ZnJvbV94bWwpCi0gICAgIyB0aW1lc3RhbXAgdmFsdWUgc2hvdWxkIGJlIG5lYXIgdGhlIGN1cnJl
bnQgbG9jYWwgdGltZQotICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lX2RlbHRhIDwgZGF0ZXRpbWUu
dGltZWRlbHRhKHNlY29uZHM9NjAwKSwKLSAgICAgICAgICAgICAgICAgICAgJ3RpbWVfZGVsdGEg
aXMgJXMnICUgdGltZV9kZWx0YSkKLSAgICBhY3R1YWwudW5saW5rKCkKLQotICBkZWYgdGVzdERl
ZmF1bHRPdXRwdXRGaWxlKHNlbGYpOgotICAgICIiIgotICAgIENvbmZpcm1zIHRoYXQgR29vZ2xl
IFRlc3QgcHJvZHVjZXMgYW4gWE1MIG91dHB1dCBmaWxlIHdpdGggdGhlIGV4cGVjdGVkCi0gICAg
ZGVmYXVsdCBuYW1lIGlmIG5vIG5hbWUgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCi0gICAgIiIi
Ci0gICAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRUZW1w
RGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfREVGQVVMVF9PVVRQ
VVRfRklMRSkKLSAgICBndGVzdF9wcm9nX3BhdGggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RF
eGVjdXRhYmxlUGF0aCgKLSAgICAgICAgJ2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QnKQotICAgIHRy
eToKLSAgICAgIG9zLnJlbW92ZShvdXRwdXRfZmlsZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAg
ICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9F
TlQ6Ci0gICAgICAgIHJhaXNlCi0KLSAgICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNz
KAotICAgICAgICBbZ3Rlc3RfcHJvZ19wYXRoLCAnJXM9eG1sJyAlIEdURVNUX09VVFBVVF9GTEFH
XSwKLSAgICAgICAgd29ya2luZ19kaXI9Z3Rlc3RfdGVzdF91dGlscy5HZXRUZW1wRGlyKCkpCi0g
ICAgc2VsZi5hc3NlcnRfKHAuZXhpdGVkKQotICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHAuZXhp
dF9jb2RlKQotICAgIHNlbGYuYXNzZXJ0Xyhvcy5wYXRoLmlzZmlsZShvdXRwdXRfZmlsZSkpCi0K
LSAgZGVmIHRlc3RTdXBwcmVzc2VkWG1sT3V0cHV0KHNlbGYpOgotICAgICIiIgotICAgIFRlc3Rz
IHRoYXQgbm8gWE1MIGZpbGUgaXMgZ2VuZXJhdGVkIGlmIHRoZSBkZWZhdWx0IFhNTCBsaXN0ZW5l
ciBpcwotICAgIHNodXQgZG93biBiZWZvcmUgUlVOX0FMTF9URVNUUyBpcyBpbnZva2VkLgotICAg
ICIiIgotCi0gICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRU
ZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUFJPR1JBTV9OQU1F
ICsgJ291dC54bWwnKQotICAgIGlmIG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKToKLSAgICAgIG9z
LnJlbW92ZSh4bWxfcGF0aCkKLQotICAgIGNvbW1hbmQgPSBbR1RFU1RfUFJPR1JBTV9QQVRILAot
ICAgICAgICAgICAgICAgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZMQUcsIHhtbF9wYXRo
KSwKLSAgICAgICAgICAgICAgICctLXNodXRfZG93bl94bWwnXQotICAgIHAgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkKLSAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFs
OgotICAgICAgIyBwLnNpZ25hbCBpcyBhdmFsYWJsZSBvbmx5IGlmIHAudGVybWluYXRlZF9ieV9z
aWduYWwgaXMgVHJ1ZS4KLSAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCi0gICAgICAgICAgcC50ZXJt
aW5hdGVkX2J5X3NpZ25hbCwKLSAgICAgICAgICAnJXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQn
ICUgKEdURVNUX1BST0dSQU1fTkFNRSwgcC5zaWduYWwpKQotICAgIGVsc2U6Ci0gICAgICBzZWxm
LmFzc2VydF8ocC5leGl0ZWQpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBwLmV4aXRfY29k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIGV4aXRlZCB3aXRoIGNvZGUgJXMsIHdo
aWNoIGRvZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBleHBlY3Rl
ZCBleGl0IGNvZGUgJXMuJwotICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwgcC5l
eGl0X2NvZGUsIDEpKQotCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBvcy5wYXRoLmlzZmlsZSh4bWxf
cGF0aCkpCi0KLSAgZGVmIHRlc3RGaWx0ZXJlZFRlc3RYbWxPdXRwdXQoc2VsZik6Ci0gICAgIiIi
VmVyaWZpZXMgWE1MIG91dHB1dCB3aGVuIGEgZmlsdGVyIGlzIGFwcGxpZWQuCi0KLSAgICBSdW5z
IGEgdGVzdCBwcm9ncmFtIHRoYXQgZXhlY3V0ZXMgb25seSBzb21lIHRlc3RzIGFuZCB2ZXJpZmll
cyB0aGF0Ci0gICAgbm9uLXNlbGVjdGVkIHRlc3RzIGRvIG5vdCBzaG93IHVwIGluIHRoZSBYTUwg
b3V0cHV0LgotICAgICIiIgotCi0gICAgc2VsZi5fVGVzdFhtbE91dHB1dChHVEVTVF9QUk9HUkFN
X05BTUUsIEVYUEVDVEVEX0ZJTFRFUkVEX1RFU1RfWE1MLCAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0cmFfYXJncz1bJyVzPVN1Y2Nlc3NmdWxUZXN0LionICUgR1RFU1RfRklMVEVSX0ZM
QUddKQotCi0gIGRlZiBfR2V0WG1sT3V0cHV0KHNlbGYsIGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFf
YXJncywgZXhwZWN0ZWRfZXhpdF9jb2RlKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSB4bWwg
b3V0cHV0IGdlbmVyYXRlZCBieSBydW5uaW5nIHRoZSBwcm9ncmFtIGd0ZXN0X3Byb2dfbmFtZS4K
LSAgICBGdXJ0aGVybW9yZSwgdGhlIHByb2dyYW0ncyBleGl0IGNvZGUgbXVzdCBiZSBleHBlY3Rl
ZF9leGl0X2NvZGUuCi0gICAgIiIiCi0gICAgeG1sX3BhdGggPSBvcy5wYXRoLmpvaW4oZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZW1wRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Rl
c3RfcHJvZ19uYW1lICsgJ291dC54bWwnKQotICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKGd0ZXN0X3Byb2dfbmFtZSkKLQotICAgIGNv
bW1hbmQgPSAoW2d0ZXN0X3Byb2dfcGF0aCwgJyVzPXhtbDolcycgJSAoR1RFU1RfT1VUUFVUX0ZM
QUcsIHhtbF9wYXRoKV0gKwotICAgICAgICAgICAgICAgZXh0cmFfYXJncykKLSAgICBwID0gZ3Rl
c3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQpCi0gICAgaWYgcC50ZXJtaW5hdGVkX2J5
X3NpZ25hbDoKLSAgICAgIHNlbGYuYXNzZXJ0XyhGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAn
JXMgd2FzIGtpbGxlZCBieSBzaWduYWwgJWQnICUgKGd0ZXN0X3Byb2dfbmFtZSwgcC5zaWduYWwp
KQotICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQpCi0gICAgICBzZWxmLmFz
c2VydEVxdWFscyhleHBlY3RlZF9leGl0X2NvZGUsIHAuZXhpdF9jb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRj
aCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgZXhwZWN0
ZWRfZXhpdF9jb2RlKSkKLSAgICBhY3R1YWwgPSBtaW5pZG9tLnBhcnNlKHhtbF9wYXRoKQotICAg
IHJldHVybiBhY3R1YWwKLQotICBkZWYgX1Rlc3RYbWxPdXRwdXQoc2VsZiwgZ3Rlc3RfcHJvZ19u
YW1lLCBleHBlY3RlZF94bWwsCi0gICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2Nv
ZGUsIGV4dHJhX2FyZ3M9Tm9uZSk6Ci0gICAgIiIiCi0gICAgQXNzZXJ0cyB0aGF0IHRoZSBYTUwg
ZG9jdW1lbnQgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIHByb2dyYW0KLSAgICBndGVzdF9wcm9n
X25hbWUgbWF0Y2hlcyBleHBlY3RlZF94bWwsIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW5vdGhlcgot
ICAgIFhNTCBkb2N1bWVudC4gIEZ1cnRoZXJtb3JlLCB0aGUgcHJvZ3JhbSdzIGV4aXQgY29kZSBt
dXN0IGJlCi0gICAgZXhwZWN0ZWRfZXhpdF9jb2RlLgotICAgICIiIgotCi0gICAgYWN0dWFsID0g
c2VsZi5fR2V0WG1sT3V0cHV0KGd0ZXN0X3Byb2dfbmFtZSwgZXh0cmFfYXJncyBvciBbXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlKQotICAgIGV4
cGVjdGVkID0gbWluaWRvbS5wYXJzZVN0cmluZyhleHBlY3RlZF94bWwpCi0gICAgc2VsZi5Ob3Jt
YWxpemVYbWwoYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKLSAgICBzZWxmLkFzc2VydEVxdWl2YWxl
bnROb2RlcyhleHBlY3RlZC5kb2N1bWVudEVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0dWFsLmRvY3VtZW50RWxlbWVudCkKLSAgICBleHBlY3RlZC51bmxpbmsoKQot
ICAgIGFjdHVhbC51bmxpbmsoKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIG9z
LmVudmlyb25bJ0dURVNUX1NUQUNLX1RSQUNFX0RFUFRIJ10gPSAnMScKLSAgZ3Rlc3RfdGVzdF91
dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRl
c3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGI4NzcxYjUyNDZjMTQxZjRj
ZGJhMGQ5ZmU4YTJkYzlhNmU3NzlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8u
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBdXRob3I6IGVlZmFjbUBnbWFpbC5jb20gKFNl
YW4gTWNhZmVlKQotCi0vLyBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0IFhNTCBvdXRwdXQuCi0v
LwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5IFhNTCBvdXRwdXQgaW4gYSBHb29nbGUgVGVzdCBwcm9n
cmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhlciB0aGUgR1RFU1RfT1VUUFVUIGVudmlyb25tZW50IHZh
cmlhYmxlIG9yIHRoZSAtLWd0ZXN0X291dHB1dAotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3Ig
dGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxpdHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUg
aW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAotLy8gZGlyZWN0
bHkuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi11c2luZyA6OnRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Ci11c2luZyA6
OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNp
bmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Ci0KLWNsYXNzIFN1
Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQotVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0
LCBTdWNjZWVkcykgewotICBTVUNDRUVEKCkgPDwgIlRoaXMgaXMgYSBzdWNjZXNzLiI7Ci0gIEFT
U0VSVF9FUSgxLCAxKTsKLX0KLQotY2xhc3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKLX07
Ci0KLVRFU1RfRihGYWlsZWRUZXN0LCBGYWlscykgewotICBBU1NFUlRfRVEoMSwgMik7Ci19Ci0K
LWNsYXNzIERpc2FibGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKLX07Ci0KLVRFU1RfRihEaXNhYmxl
ZFRlc3QsIERJU0FCTEVEX3Rlc3Rfbm90X3J1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQg
ZmFpbHVyZTogRGlzYWJsZWQgdGVzdCBzaG91bGQgbm90IGJlIHJ1biI7Ci19Ci0KLVRFU1QoTWl4
ZWRSZXN1bHRUZXN0LCBTdWNjZWVkcykgewotICBFWFBFQ1RfRVEoMSwgMSk7Ci0gIEFTU0VSVF9F
USgxLCAxKTsKLX0KLQotVEVTVChNaXhlZFJlc3VsdFRlc3QsIEZhaWxzKSB7Ci0gIEVYUEVDVF9F
USgxLCAyKTsKLSAgQVNTRVJUX0VRKDIsIDMpOwotfQotCi1URVNUKE1peGVkUmVzdWx0VGVzdCwg
RElTQUJMRURfdGVzdCkgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJs
ZWQgdGVzdCBzaG91bGQgbm90IGJlIHJ1biI7Ci19Ci0KLVRFU1QoWG1sUXVvdGluZ1Rlc3QsIE91
dHB1dHNDRGF0YSkgewotICBGQUlMKCkgPDwgIlhNTCBvdXRwdXQ6ICIKLSAgICAgICAgICAgICI8
P3htbCBlbmNvZGluZz1cInV0Zi04XCI+PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+PC90b3A+
IjsKLX0KLQotLy8gSGVscHMgdG8gdGVzdCB0aGF0IGludmFsaWQgY2hhcmFjdGVycyBwcm9kdWNl
ZCBieSB0ZXN0IGNvZGUgZG8gbm90IG1ha2UKLS8vIGl0IGludG8gdGhlIFhNTCBmaWxlLgotVEVT
VChJbnZhbGlkQ2hhcmFjdGVyc1Rlc3QsIEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7Ci0g
IEZBSUwoKSA8PCAiSW52YWxpZCBjaGFyYWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKLX0K
LQotY2xhc3MgUHJvcGVydHlSZWNvcmRpbmdUZXN0IDogcHVibGljIFRlc3QgewotIHB1YmxpYzoK
LSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVz
dENhc2UiLCAieWVzIik7IH0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVj
b3JkUHJvcGVydHkoIlRlYXJEb3duVGVzdENhc2UiLCAiYXllIik7IH0KLX07Ci0KLVRFU1RfRihQ
cm9wZXJ0eVJlY29yZGluZ1Rlc3QsIE9uZVByb3BlcnR5KSB7Ci0gIFJlY29yZFByb3BlcnR5KCJr
ZXlfMSIsICIxIik7Ci19Ci0KLVRFU1RfRihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIEludFZhbHVl
ZFByb3BlcnR5KSB7Ci0gIFJlY29yZFByb3BlcnR5KCJrZXlfaW50IiwgMSk7Ci19Ci0KLVRFU1Rf
RihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIFRocmVlUHJvcGVydGllcykgewotICBSZWNvcmRQcm9w
ZXJ0eSgia2V5XzEiLCAiMSIpOwotICBSZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMiIpOwotICBS
ZWNvcmRQcm9wZXJ0eSgia2V5XzMiLCAiMyIpOwotfQotCi1URVNUX0YoUHJvcGVydHlSZWNvcmRp
bmdUZXN0LCBUd29WYWx1ZXNGb3JPbmVLZXlVc2VzTGFzdFZhbHVlKSB7Ci0gIFJlY29yZFByb3Bl
cnR5KCJrZXlfMSIsICIxIik7Ci0gIFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIyIik7Ci19Ci0K
LVRFU1QoTm9GaXh0dXJlVGVzdCwgUmVjb3JkUHJvcGVydHkpIHsKLSAgUmVjb3JkUHJvcGVydHko
ImtleSIsICIxIik7Ci19Ci0KLXZvaWQgRXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJv
cGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgaW50IHZhbHVlKSB7Ci0gIHRlc3Rpbmc6OlRl
c3Q6OlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwotfQotCi12b2lkIEV4dGVybmFsVXRpbGl0
eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZSkgewotICB0ZXN0aW5nOjpUZXN0OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKLX0K
LQotVEVTVChOb0ZpeHR1cmVUZXN0LCBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRW
YWx1ZWRQcm9wZXJ0eSkgewotICBFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0
eSgia2V5X2Zvcl91dGlsaXR5X2ludCIsIDEpOwotfQotCi1URVNUKE5vRml4dHVyZVRlc3QsIEV4
dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7Ci0gIEV4
dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxpdHlfc3Ry
aW5nIiwgIjEiKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFs
dWUgaXMgb3V0cHV0IGluIHRoZSAndmFsdWVfcGFyYW0nCi0vLyBYTUwgYXR0cmlidXRlIGZvciB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMg
VGVzdFdpdGhQYXJhbTxpbnQ+IHt9OwotVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNWYWx1ZVBh
cmFtQXR0cmlidXRlKSB7fQotVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVzdFRoYXRI
YXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2luZ2xl
LCBWYWx1ZVBhcmFtVGVzdCwgVmFsdWVzKDMzLCA0MikpOwotCi0jaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1QKLS8vIFZlcmlmaWVzIHRoYXQgdGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0
IGluIHRoZSAndHlwZV9wYXJhbScKLS8vIFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRlc3RzLgot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0IHt9Owot
dHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOwotVFlQRURf
VEVTVF9DQVNFKFR5cGVkVGVzdCwgVHlwZWRUZXN0VHlwZXMpOwotVFlQRURfVEVTVChUeXBlZFRl
c3QsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KLSNlbmRpZgotCi0jaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1RfUAotLy8gVmVyaWZpZXMgdGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBv
dXRwdXQgaW4gdGhlICd0eXBlX3BhcmFtJwotLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3RzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQYXJhbWV0
ZXJpemVkVGVzdENhc2UgOiBwdWJsaWMgVGVzdCB7fTsKLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQ
YXJhbWV0ZXJpemVkVGVzdENhc2UpOwotVFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSk7Ci10
eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGludCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2Fz
ZVR5cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoU2luZ2xlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlcyk7Ci0j
ZW5kaWYKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIEluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKLQotICBpZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICIt
LXNodXRfZG93bl94bWwiKSA9PSAwKSB7Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5l
cnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Ci0gICAgZGVsZXRlIGxp
c3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7Ci0gIH0K
LSAgdGVzdGluZzo6VGVzdDo6UmVjb3JkUHJvcGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIp
OwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF94bWxfdGVzdF91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1s
X3Rlc3RfdXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM0MTk1NmI1NGRk
ZmZmZGM3Y2ZlOGNiY2EzZjBkOWIxNDljMmRiMjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGls
cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgdXRpbGl0aWVzIGZvciBndGVz
dF94bWxfb3V0cHV0IiIiCi0KLV9fYXV0aG9yX18gPSAnZWVmYWNtQGdtYWlsLmNvbSAoU2VhbiBN
Y2FmZWUpJwotCi1pbXBvcnQgcmUKLWZyb20geG1sLmRvbSBpbXBvcnQgbWluaWRvbSwgTm9kZQot
Ci1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUdURVNUX09VVFBVVF9GTEFHICAgICAgICAg
PSAnLS1ndGVzdF9vdXRwdXQnCi1HVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFID0gJ3Rlc3RfZGV0
YWlsLnhtbCcKLQotY2xhc3MgR1Rlc3RYTUxUZXN0Q2FzZShndGVzdF90ZXN0X3V0aWxzLlRlc3RD
YXNlKToKLSAgIiIiCi0gIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9mIEdvb2dsZSBUZXN0J3MgWE1M
IG91dHB1dCBmdW5jdGlvbmFsaXR5LgotICAiIiIKLQotCi0gIGRlZiBBc3NlcnRFcXVpdmFsZW50
Tm9kZXMoc2VsZiwgZXhwZWN0ZWRfbm9kZSwgYWN0dWFsX25vZGUpOgotICAgICIiIgotICAgIEFz
c2VydHMgdGhhdCBhY3R1YWxfbm9kZSAoYSBET00gbm9kZSBvYmplY3QpIGlzIGVxdWl2YWxlbnQg
dG8KLSAgICBleHBlY3RlZF9ub2RlIChhbm90aGVyIERPTSBub2RlIG9iamVjdCksIGluIHRoYXQg
ZWl0aGVyIGJvdGggb2YKLSAgICB0aGVtIGFyZSBDREFUQSBub2RlcyBhbmQgaGF2ZSB0aGUgc2Ft
ZSB2YWx1ZSwgb3IgYm90aCBhcmUgRE9NCi0gICAgZWxlbWVudHMgYW5kIGFjdHVhbF9ub2RlIG1l
ZXRzIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgICAqICBJdCBoYXMgdGhl
IHNhbWUgdGFnIG5hbWUgYXMgZXhwZWN0ZWRfbm9kZS4KLSAgICAqICBJdCBoYXMgdGhlIHNhbWUg
c2V0IG9mIGF0dHJpYnV0ZXMgYXMgZXhwZWN0ZWRfbm9kZSwgZWFjaCB3aXRoCi0gICAgICAgdGhl
IHNhbWUgdmFsdWUgYXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9mIGV4cGVjdGVkX25v
ZGUuCi0gICAgICAgRXhjZXB0aW9ucyBhcmUgYW55IGF0dHJpYnV0ZSBuYW1lZCAidGltZSIsIHdo
aWNoIG5lZWRzIG9ubHkgYmUKLSAgICAgICBjb252ZXJ0aWJsZSB0byBhIGZsb2F0aW5nLXBvaW50
IG51bWJlciBhbmQgYW55IGF0dHJpYnV0ZSBuYW1lZAotICAgICAgICJ0eXBlX3BhcmFtIiB3aGlj
aCBvbmx5IGhhcyB0byBiZSBub24tZW1wdHkuCi0gICAgKiAgSXQgaGFzIGFuIGVxdWl2YWxlbnQg
c2V0IG9mIGNoaWxkIG5vZGVzIChpbmNsdWRpbmcgZWxlbWVudHMgYW5kCi0gICAgICAgQ0RBVEEg
c2VjdGlvbnMpIGFzIGV4cGVjdGVkX25vZGUuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZQotICAg
ICAgIG9yZGVyIG9mIHRoZSBjaGlsZHJlbiBhcyB0aGV5IGFyZSBub3QgZ3VhcmFudGVlZCB0byBi
ZSBpbiBhbnkKLSAgICAgICBwYXJ0aWN1bGFyIG9yZGVyLgotICAgICIiIgotCi0gICAgaWYgZXhw
ZWN0ZWRfbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFLCBhY3R1YWxfbm9kZS5ub2Rl
VHlwZSkKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX25vZGUubm9kZVZhbHVlLCBh
Y3R1YWxfbm9kZS5ub2RlVmFsdWUpCi0gICAgICByZXR1cm4KLQotICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKE5vZGUuRUxFTUVOVF9OT0RFLCBhY3R1YWxfbm9kZS5ub2RlVHlwZSkKLSAgICBzZWxmLmFz
c2VydEVxdWFscyhOb2RlLkVMRU1FTlRfTk9ERSwgZXhwZWN0ZWRfbm9kZS5ub2RlVHlwZSkKLSAg
ICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9ub2RlLnRhZ05hbWUsIGFjdHVhbF9ub2RlLnRh
Z05hbWUpCi0KLSAgICBleHBlY3RlZF9hdHRyaWJ1dGVzID0gZXhwZWN0ZWRfbm9kZS5hdHRyaWJ1
dGVzCi0gICAgYWN0dWFsX2F0dHJpYnV0ZXMgICA9IGFjdHVhbF9ub2RlICAuYXR0cmlidXRlcwot
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICBleHBlY3RlZF9hdHRyaWJ1dGVzLmxlbmd0
aCwgYWN0dWFsX2F0dHJpYnV0ZXMubGVuZ3RoLAotICAgICAgICAnYXR0cmlidXRlIG51bWJlcnMg
ZGlmZmVyIGluIGVsZW1lbnQgJXM6XG5FeHBlY3RlZDogJXJcbkFjdHVhbDogJXInICUgKAotICAg
ICAgICAgICAgYWN0dWFsX25vZGUudGFnTmFtZSwgZXhwZWN0ZWRfYXR0cmlidXRlcy5rZXlzKCks
Ci0gICAgICAgICAgICBhY3R1YWxfYXR0cmlidXRlcy5rZXlzKCkpKQotICAgIGZvciBpIGluIHJh
bmdlKGV4cGVjdGVkX2F0dHJpYnV0ZXMubGVuZ3RoKToKLSAgICAgIGV4cGVjdGVkX2F0dHIgPSBl
eHBlY3RlZF9hdHRyaWJ1dGVzLml0ZW0oaSkKLSAgICAgIGFjdHVhbF9hdHRyICAgPSBhY3R1YWxf
YXR0cmlidXRlcy5nZXQoZXhwZWN0ZWRfYXR0ci5uYW1lKQotICAgICAgc2VsZi5hc3NlcnRfKAot
ICAgICAgICAgIGFjdHVhbF9hdHRyIGlzIG5vdCBOb25lLAotICAgICAgICAgICdleHBlY3RlZCBh
dHRyaWJ1dGUgJXMgbm90IGZvdW5kIGluIGVsZW1lbnQgJXMnICUKLSAgICAgICAgICAoZXhwZWN0
ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKLSAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKAotICAgICAgICAgIGV4cGVjdGVkX2F0dHIudmFsdWUsIGFjdHVhbF9hdHRyLnZhbHVlLAot
ICAgICAgICAgICcgdmFsdWVzIG9mIGF0dHJpYnV0ZSAlcyBpbiBlbGVtZW50ICVzIGRpZmZlcjog
JXMgdnMgJXMnICUKLSAgICAgICAgICAoZXhwZWN0ZWRfYXR0ci5uYW1lLCBhY3R1YWxfbm9kZS50
YWdOYW1lLAotICAgICAgICAgICBleHBlY3RlZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1
ZSkpCi0KLSAgICBleHBlY3RlZF9jaGlsZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGV4cGVjdGVk
X25vZGUpCi0gICAgYWN0dWFsX2NoaWxkcmVuID0gc2VsZi5fR2V0Q2hpbGRyZW4oYWN0dWFsX25v
ZGUpCi0gICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgIGxlbihleHBlY3RlZF9jaGlsZHJl
biksIGxlbihhY3R1YWxfY2hpbGRyZW4pLAotICAgICAgICAnbnVtYmVyIG9mIGNoaWxkIGVsZW1l
bnRzIGRpZmZlciBpbiBlbGVtZW50ICcgKyBhY3R1YWxfbm9kZS50YWdOYW1lKQotICAgIGZvciBj
aGlsZF9pZCwgY2hpbGQgaW4gZXhwZWN0ZWRfY2hpbGRyZW4uaXRlbXMoKToKLSAgICAgIHNlbGYu
YXNzZXJ0XyhjaGlsZF9pZCBpbiBhY3R1YWxfY2hpbGRyZW4sCi0gICAgICAgICAgICAgICAgICAg
Jzwlcz4gaXMgbm90IGluIDwlcz4gKGluIGVsZW1lbnQgJXMpJyAlCi0gICAgICAgICAgICAgICAg
ICAgKGNoaWxkX2lkLCBhY3R1YWxfY2hpbGRyZW4sIGFjdHVhbF9ub2RlLnRhZ05hbWUpKQotICAg
ICAgc2VsZi5Bc3NlcnRFcXVpdmFsZW50Tm9kZXMoY2hpbGQsIGFjdHVhbF9jaGlsZHJlbltjaGls
ZF9pZF0pCi0KLSAgaWRlbnRpZnlpbmdfYXR0cmlidXRlID0gewotICAgICd0ZXN0c3VpdGVzJzog
J25hbWUnLAotICAgICd0ZXN0c3VpdGUnOiAnbmFtZScsCi0gICAgJ3Rlc3RjYXNlJzogICduYW1l
JywKLSAgICAnZmFpbHVyZSc6ICAgJ21lc3NhZ2UnLAotICAgIH0KLQotICBkZWYgX0dldENoaWxk
cmVuKHNlbGYsIGVsZW1lbnQpOgotICAgICIiIgotICAgIEZldGNoZXMgYWxsIG9mIHRoZSBjaGls
ZCBub2RlcyBvZiBlbGVtZW50LCBhIERPTSBFbGVtZW50IG9iamVjdC4KLSAgICBSZXR1cm5zIHRo
ZW0gYXMgdGhlIHZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIElEcyBvZiB0aGUK
LSAgICBjaGlsZHJlbi4gIEZvciA8dGVzdHN1aXRlcz4sIDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNh
c2U+IGVsZW1lbnRzLCB0aGUgSUQKLSAgICBpcyB0aGUgdmFsdWUgb2YgdGhlaXIgIm5hbWUiIGF0
dHJpYnV0ZTsgZm9yIDxmYWlsdXJlPiBlbGVtZW50cywgaXQgaXMKLSAgICB0aGUgdmFsdWUgb2Yg
dGhlICJtZXNzYWdlIiBhdHRyaWJ1dGU7IENEQVRBIHNlY3Rpb25zIGFuZCBub24td2hpdGVzcGFj
ZQotICAgIHRleHQgbm9kZXMgYXJlIGNvbmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xlIENEQVRBIHNl
Y3Rpb24gd2l0aCBJRAotICAgICJkZXRhaWwiLiAgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBh
bnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSBhYm92ZQotICAgIGZvdXIgaXMgZW5jb3VudGVyZWQs
IGlmIHR3byBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGlkZW50aWZ5aW5nCi0gICAgYXR0
cmlidXRlcyBhcmUgZW5jb3VudGVyZWQsIG9yIGlmIGFueSBvdGhlciB0eXBlIG9mIG5vZGUgaXMg
ZW5jb3VudGVyZWQuCi0gICAgIiIiCi0KLSAgICBjaGlsZHJlbiA9IHt9Ci0gICAgZm9yIGNoaWxk
IGluIGVsZW1lbnQuY2hpbGROb2RlczoKLSAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5vZGUu
RUxFTUVOVF9OT0RFOgotICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGQudGFnTmFtZSBpbiBzZWxm
LmlkZW50aWZ5aW5nX2F0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICdFbmNvdW50ZXJl
ZCB1bmtub3duIGVsZW1lbnQgPCVzPicgJSBjaGlsZC50YWdOYW1lKQotICAgICAgICBjaGlsZElE
ID0gY2hpbGQuZ2V0QXR0cmlidXRlKHNlbGYuaWRlbnRpZnlpbmdfYXR0cmlidXRlW2NoaWxkLnRh
Z05hbWVdKQotICAgICAgICBzZWxmLmFzc2VydF8oY2hpbGRJRCBub3QgaW4gY2hpbGRyZW4pCi0g
ICAgICAgIGNoaWxkcmVuW2NoaWxkSURdID0gY2hpbGQKLSAgICAgIGVsaWYgY2hpbGQubm9kZVR5
cGUgaW4gW05vZGUuVEVYVF9OT0RFLCBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERV06Ci0gICAgICAg
IGlmICdkZXRhaWwnIG5vdCBpbiBjaGlsZHJlbjoKLSAgICAgICAgICBpZiAoY2hpbGQubm9kZVR5
cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUgb3IKLSAgICAgICAgICAgICAgbm90IGNoaWxk
Lm5vZGVWYWx1ZS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgY2hpbGRyZW5bJ2RldGFpbCddID0g
Y2hpbGQub3duZXJEb2N1bWVudC5jcmVhdGVDREFUQVNlY3Rpb24oCi0gICAgICAgICAgICAgICAg
Y2hpbGQubm9kZVZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgIGNoaWxkcmVuWydkZXRh
aWwnXS5ub2RlVmFsdWUgKz0gY2hpbGQubm9kZVZhbHVlCi0gICAgICBlbHNlOgotICAgICAgICBz
ZWxmLmZhaWwoJ0VuY291bnRlcmVkIHVuZXhwZWN0ZWQgbm9kZSB0eXBlICVkJyAlIGNoaWxkLm5v
ZGVUeXBlKQotICAgIHJldHVybiBjaGlsZHJlbgotCi0gIGRlZiBOb3JtYWxpemVYbWwoc2VsZiwg
ZWxlbWVudCk6Ci0gICAgIiIiCi0gICAgTm9ybWFsaXplcyBHb29nbGUgVGVzdCdzIFhNTCBvdXRw
dXQgdG8gZWxpbWluYXRlIHJlZmVyZW5jZXMgdG8gdHJhbnNpZW50Ci0gICAgaW5mb3JtYXRpb24g
dGhhdCBtYXkgY2hhbmdlIGZyb20gcnVuIHRvIHJ1bi4KLQotICAgICogIFRoZSAidGltZSIgYXR0
cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiwgPHRlc3RzdWl0ZT4gYW5kIDx0ZXN0Y2FzZT4KLSAgICAg
ICBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGFzdGVyaXNrLCBpZiBpdCBjb250
YWlucwotICAgICAgIG9ubHkgZGlnaXQgY2hhcmFjdGVycy4KLSAgICAqICBUaGUgInRpbWVzdGFt
cCIgYXR0cmlidXRlIG9mIDx0ZXN0c3VpdGVzPiBlbGVtZW50cyBpcyByZXBsYWNlZCB3aXRoIGEK
LSAgICAgICBzaW5nbGUgYXN0ZXJpc2ssIGlmIGl0IGNvbnRhaW5zIGEgdmFsaWQgSVNPODYwMSBk
YXRldGltZSB2YWx1ZS4KLSAgICAqICBUaGUgInR5cGVfcGFyYW0iIGF0dHJpYnV0ZSBvZiA8dGVz
dGNhc2U+IGVsZW1lbnRzIGlzIHJlcGxhY2VkIHdpdGggYQotICAgICAgIHNpbmdsZSBhc3Rlcmlz
ayAoaWYgaXQgc24gbm9uLWVtcHR5KSBhcyBpdCBpcyB0aGUgdHlwZSBuYW1lIHJldHVybmVkCi0g
ICAgICAgYnkgdGhlIGNvbXBpbGVyIGFuZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuCi0gICAgKiAg
VGhlIGxpbmUgaW5mbyByZXBvcnRlZCBpbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgIm1lc3NhZ2Ui
Ci0gICAgICAgYXR0cmlidXRlIGFuZCBDREFUQSBzZWN0aW9uIG9mIDxmYWlsdXJlPiBlbGVtZW50
cyBpcyByZXBsYWNlZCB3aXRoIHRoZQotICAgICAgIGZpbGUncyBiYXNlbmFtZSBhbmQgYSBzaW5n
bGUgYXN0ZXJpc2sgZm9yIHRoZSBsaW5lIG51bWJlci4KLSAgICAqICBUaGUgZGlyZWN0b3J5IG5h
bWVzIGluIGZpbGUgcGF0aHMgYXJlIHJlbW92ZWQuCi0gICAgKiAgVGhlIHN0YWNrIHRyYWNlcyBh
cmUgcmVtb3ZlZC4KLSAgICAiIiIKLQotICAgIGlmIGVsZW1lbnQudGFnTmFtZSA9PSAndGVzdHN1
aXRlcyc6Ci0gICAgICB0aW1lc3RhbXAgPSBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVz
dGFtcCcpCi0gICAgICB0aW1lc3RhbXAudmFsdWUgPSByZS5zdWIocideXGR7NH0tXGRcZC1cZFxk
VFxkXGQ6XGRcZDpcZFxkJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyonLCB0
aW1lc3RhbXAudmFsdWUpCi0gICAgaWYgZWxlbWVudC50YWdOYW1lIGluICgndGVzdHN1aXRlcycs
ICd0ZXN0c3VpdGUnLCAndGVzdGNhc2UnKToKLSAgICAgIHRpbWUgPSBlbGVtZW50LmdldEF0dHJp
YnV0ZU5vZGUoJ3RpbWUnKQotICAgICAgdGltZS52YWx1ZSA9IHJlLnN1YihyJ15cZCsoXC5cZCsp
PyQnLCAnKicsIHRpbWUudmFsdWUpCi0gICAgICB0eXBlX3BhcmFtID0gZWxlbWVudC5nZXRBdHRy
aWJ1dGVOb2RlKCd0eXBlX3BhcmFtJykKLSAgICAgIGlmIHR5cGVfcGFyYW0gYW5kIHR5cGVfcGFy
YW0udmFsdWU6Ci0gICAgICAgIHR5cGVfcGFyYW0udmFsdWUgPSAnKicKLSAgICBlbGlmIGVsZW1l
bnQudGFnTmFtZSA9PSAnZmFpbHVyZSc6Ci0gICAgICBzb3VyY2VfbGluZV9wYXQgPSByJ14uKlsv
XFxdKC4qOilcZCtcbicKLSAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5lIGluZm9ybWF0
aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCi0gICAgICBtZXNzYWdlID0gZWxlbWVudC5nZXRB
dHRyaWJ1dGVOb2RlKCdtZXNzYWdlJykKLSAgICAgIG1lc3NhZ2UudmFsdWUgPSByZS5zdWIoc291
cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgbWVzc2FnZS52YWx1ZSkKLSAgICAgIGZvciBjaGlsZCBp
biBlbGVtZW50LmNoaWxkTm9kZXM6Ci0gICAgICAgIGlmIGNoaWxkLm5vZGVUeXBlID09IE5vZGUu
Q0RBVEFfU0VDVElPTl9OT0RFOgotICAgICAgICAgICMgUmVwbGFjZXMgdGhlIHNvdXJjZSBsaW5l
IGluZm9ybWF0aW9uIHdpdGggYSBub3JtYWxpemVkIGZvcm0uCi0gICAgICAgICAgY2RhdGEgPSBy
ZS5zdWIoc291cmNlX2xpbmVfcGF0LCAnXFwxKlxuJywgY2hpbGQubm9kZVZhbHVlKQotICAgICAg
ICAgICMgUmVtb3ZlcyB0aGUgYWN0dWFsIHN0YWNrIHRyYWNlLgotICAgICAgICAgIGNoaWxkLm5v
ZGVWYWx1ZSA9IHJlLnN1YihyJ1xuU3RhY2sgdHJhY2U6XG4oLnxcbikqJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycsIGNkYXRhKQotICAgIGZvciBjaGlsZCBpbiBlbGVt
ZW50LmNoaWxkTm9kZXM6Ci0gICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRf
Tk9ERToKLSAgICAgICAgc2VsZi5Ob3JtYWxpemVYbWwoY2hpbGQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24u
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOGE0MGI0NGU5YjQxZjRjMjlkNzU1
MjY5MDg1NjhhZjIzNzkxMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBU
aGlzIGlzIHBhcnQgb2YgdGhlIHVuaXQgdGVzdCBmb3IgaW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9k
LmguCi0KLSNpbmNsdWRlICJwcm9kdWN0aW9uLmgiCi0KLVByaXZhdGVDb2RlOjpQcml2YXRlQ29k
ZSgpIDogeF8oMCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk4ZmQ1ZTQ3NmM4ODRmYTE2YjQ3ODZhZDhhODg1MGNmNmU0YWE5YzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9w
cm9kdWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0
IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KLQotI2lmbmRlZiBHVEVTVF9URVNUX1BS
T0RVQ1RJT05fSF8KLSNkZWZpbmUgR1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCi0KLSNpbmNsdWRl
ICJndGVzdC9ndGVzdF9wcm9kLmgiCi0KLWNsYXNzIFByaXZhdGVDb2RlIHsKLSBwdWJsaWM6Ci0g
IC8vIERlY2xhcmVzIGEgZnJpZW5kIHRlc3QgdGhhdCBkb2VzIG5vdCB1c2UgYSBmaXh0dXJlLgot
ICBGUklFTkRfVEVTVChQcml2YXRlQ29kZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJzKTsK
LQotICAvLyBEZWNsYXJlcyBhIGZyaWVuZCB0ZXN0IHRoYXQgdXNlcyBhIGZpeHR1cmUuCi0gIEZS
SUVORF9URVNUKFByaXZhdGVDb2RlRml4dHVyZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJz
KTsKLQotICBQcml2YXRlQ29kZSgpOwotCi0gIGludCB4KCkgY29uc3QgeyByZXR1cm4geF87IH0K
LSBwcml2YXRlOgotICB2b2lkIHNldF94KGludCBhbl94KSB7IHhfID0gYW5feDsgfQotICBpbnQg
eF87Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNkNjgxNTdkNWQ1MTJhODgwZjE4Njg1NmMzYmExMGI0YTJiMTgwMDAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QveGNvZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZworKysgL2Rldi9udWxsCkBAIC0x
LDMwICswLDAgQEAKLS8vCi0vLyAgRGVidWdQcm9qZWN0LnhjY29uZmlnCi0vLwotLy8gIFRoZXNl
IGFyZSBEZWJ1ZyBDb25maWd1cmF0aW9uIHByb2plY3Qgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBm
cmFtZXdvcmsgYW5kCi0vLyAgZXhhbXBsZXMuIEl0IGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIg
ZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCi0vLyAgZGlhbG9nLgotLy8gIFRoaXMgZmls
ZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vIAotCi0jaW5j
bHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKLQotLy8gTm8gb3B0aW1pemF0aW9uCi1HQ0NfT1BUSU1J
WkFUSU9OX0xFVkVMID0gMAotCi0vLyBEZXBsb3ltZW50IHBvc3Rwcm9jZXNzaW5nIGlzIHdoYXQg
dHJpZ2dlcnMgWGNvZGUgdG8gc3RyaXAsIHR1cm4gaXQgb2ZmCi1ERVBMT1lNRU5UX1BPU1RQUk9D
RVNTSU5HID0gTk8KLQotLy8gRGVhZCBjb2RlIHN0cmlwcGluZyBvZmYKLURFQURfQ09ERV9TVFJJ
UFBJTkcgPSBOTwotCi0vLyBEZWJ1ZyBzeW1ib2xzIHNob3VsZCBiZSBvbiBvYnZpb3VzbHkKLUdD
Q19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUwotCi0vLyBEZWZpbmUgdGhlIERFQlVH
IG1hY3JvIGluIGFsbCBkZWJ1ZyBidWlsZHMKLU9USEVSX0NGTEFHUyA9ICQoT1RIRVJfQ0ZMQUdT
KSAtRERFQlVHPTEKLQotLy8gVGhlc2UgYXJlIHR1cm5lZCBvZmYgdG8gYXZvaWQgU1RMIGluY29t
cGF0aWJpbGl0aWVzIHdpdGggY2xpZW50IGNvZGUKLS8vIC8vIFR1cm5zIG9uIHNwZWNpYWwgQysr
IFNUTCBjaGVja3MgdG8gImVuY291cmFnZSIgZ29vZCBTVEwgdXNlCi0vLyBHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TID0gJChHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKSBfR0xJQkNY
WF9ERUJVR19QRURBTlRJQyBfR0xJQkNYWF9ERUJVRyBfR0xJQkNQUF9DT05DRVBUX0NIRUNLUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2Nv
bmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1N2IxYzhmYmZhMjMxZGEzZWNmMmRjMzdj
Y2UxNzI4MzA0MjkxMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0ZyYW1ld29ya1RhcmdldC54Y2NvbmZpZwor
KysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS8vCi0vLyAgRnJhbWV3b3JrVGFyZ2V0Lnhj
Y29uZmlnCi0vLwotLy8gIFRoZXNlIGFyZSBGcmFtZXdvcmsgdGFyZ2V0IHNldHRpbmdzIGZvciB0
aGUgZ3Rlc3QgZnJhbWV3b3JrIGFuZCBleGFtcGxlcy4gSXQKLS8vICBpcyBzZXQgaW4gdGhlICJC
YXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KLS8vICBUaGlz
IGZpbGUgaXMgYmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAg
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0vLyAKLQot
Ly8gRHluYW1pYyBsaWJzIG5lZWQgdG8gYmUgcG9zaXRpb24gaW5kZXBlbmRlbnQKLUdDQ19EWU5B
TUlDX05PX1BJQyA9IE5PCi0KLS8vIER5bmFtaWMgbGlicyBzaG91bGQgbm90IGhhdmUgdGhlaXIg
ZXh0ZXJuYWwgc3ltYm9scyBzdHJpcHBlZC4KLVNUUklQX1NUWUxFID0gbm9uLWdsb2JhbAotCi0v
LyBMZXQgdGhlIHVzZXIgaW5zdGFsbCBieSBzcGVjaWZ5aW5nIHRoZSAkRFNUUk9PVCB3aXRoIHhj
b2RlYnVpbGQKLVNLSVBfSU5TVEFMTCA9IE5PCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29k
ZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9HZW5l
cmFsLnhjY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjNlMzIyMjcyNzU2
MzQzYzA0ZjUwYzJmNzk5NzQ0MDA4YjQ1YjBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29u
ZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLy8KLS8vICBHZW5lcmFsLnhjY29u
ZmlnCi0vLwotLy8gIFRoZXNlIGFyZSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9y
IHRoZSBndGVzdCBmcmFtZXdvcmsgYW5kCi0vLyAgZXhhbXBsZXMuCi0vLyAgVGhpcyBmaWxlIGlz
IGJhc2VkIG9uIHRoZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLS8vIEJ1aWxk
IGZvciBQUEMgYW5kIEludGVsLCAzMi0gYW5kIDY0LWJpdAotQVJDSFMgPSBpMzg2IHg4Nl82NCBw
cGMgcHBjNjQKLQotLy8gWmVyb2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0
IG9mZgotWkVST19MSU5LID0gTk8KLQotLy8gUHJlYmluZGluZyBjb25zaWRlcmVkIHVuaGVscGZ1
bCBpbiAxMC4zIGFuZCBsYXRlcgotUFJFQklORElORyA9IE5PCi0KLS8vIFN0cmljdGVzdCB3YXJu
aW5nIHBvbGljeQotV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtV2Vycm9yIC1XZW5kaWYtbGFiZWxz
IC1XbmV3bGluZS1lb2YgLVduby1zaWduLWNvbXBhcmUgLVdzaGFkb3cKLQotLy8gV29yayBhcm91
bmQgWGNvZGUgYnVncyBieSB1c2luZyBleHRlcm5hbCBzdHJpcC4gU2VlOgotLy8gaHR0cDovL2xp
c3RzLmFwcGxlLmNvbS9hcmNoaXZlcy9YY29kZS11c2Vycy8yMDA2L0ZlYi9tc2cwMDA1MC5odG1s
Ci1TRVBBUkFURV9TVFJJUCA9IFlFUwotCi0vLyBGb3JjZSBDOTkgZGlhbGVjdAotR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBjOTkKLQotLy8gbm90IHN1cmUgd2h5IGFwcGxlIGRlZmF1bHRzIHRo
aXMgb24sIGJ1dCBpdCdzIHByZXR0eSByaXNreQotQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk8KLQotLy8gVHVybiBvbiBwb3NpdGlvbiBkZXBlbmRlbnQgY29kZSBmb3IgbW9zdCBjYXNlcyAo
b3ZlcnJpZGRlbiB3aGVyZSBhcHByb3ByaWF0ZSkKLUdDQ19EWU5BTUlDX05PX1BJQyA9IFlFUwot
Ci0vLyBEZWZhdWx0IFNESyBhbmQgbWluaW11bSBPUyB2ZXJzaW9uIGlzIDEwLjQKLVNES1JPT1Qg
PSAkKERFVkVMT1BFUl9TREtfRElSKS9NYWNPU1gxMC40dS5zZGsKLU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjQKLUdDQ19WRVJTSU9OID0gNC4wCi0KLS8vIFZFUlNJT05JTkcgQlVJTEQg
U0VUVElOR1MgKHVzZWQgaW4gSW5mby5wbGlzdCkKLUdURVNUX1ZFUlNJT05JTkZPX0FCT1VUID0g
IMKpIDIwMDggR29vZ2xlIEluYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZp
Zy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9SZWxl
YXNlUHJvamVjdC54Y2NvbmZpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0OWYw
YTA0YWZjNzgzNzc4NzgyOGQzZjQyNGE4ODk4NzRlYzkzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvUmVsZWFz
ZVByb2plY3QueGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLwotLy8g
IFJlbGVhc2VQcm9qZWN0LnhjY29uZmlnCi0vLwotLy8gIFRoZXNlIGFyZSBSZWxlYXNlIENvbmZp
Z3VyYXRpb24gcHJvamVjdCBzZXR0aW5ncyBmb3IgdGhlIGd0ZXN0IGZyYW1ld29yawotLy8gIGFu
ZCBleGFtcGxlcy4gSXQgaXMgc2V0IGluIHRoZSAiQmFzZWQgT246IiBkcm9wZG93biBpbiB0aGUg
IlByb2plY3QiIGluZm8KLS8vICBkaWFsb2cuCi0vLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRo
ZSBYY29kZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLSNpbmNsdWRlICJHZW5lcmFsLnhj
Y29uZmlnIgotCi0vLyBzdWJjb25maWcvUmVsZWFzZS54Y2NvbmZpZwotCi0vLyBPcHRpbWl6ZSBm
b3Igc3BhY2UgYW5kIHNpemUgKEFwcGxlIHJlY29tbWVuZGF0aW9uKQotR0NDX09QVElNSVpBVElP
Tl9MRVZFTCA9IHMKLQotLy8gRGVwbG9tZW50IHBvc3Rwcm9jZXNzaW5nIGlzIHdoYXQgdHJpZ2dl
cnMgWGNvZGUgdG8gc3RyaXAKLURFUExPWU1FTlRfUE9TVFBST0NFU1NJTkcgPSBZRVMKLQotLy8g
Tm8gc3ltYm9scwotR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk8KLQotLy8gRGVh
ZCBjb2RlIHN0cmlwIGRvZXMgbm90IGFmZmVjdCBPYmpDIGNvZGUgYnV0IGNhbiBoZWxwIGZvciBD
Ci1ERUFEX0NPREVfU1RSSVBQSU5HID0gWUVTCi0KLS8vIE5ERUJVRyBpcyB1c2VkIGJ5IHRoaW5n
cyBsaWtlIGFzc2VydC5oLCBzbyBkZWZpbmUgaXQgZm9yIGdlbmVyYWwgY29tcGF0LgotLy8gQVNT
RVJUIGdvaW5nIGF3YXkgaW4gcmVsZWFzZSB0ZW5kcyB0byBjcmVhdGUgdW51c2VkIHZhcnMuCi1P
VEhFUl9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLUROREVCVUc9MSAtV25vLXVudXNlZC12YXJp
YWJsZQotCi0vLyBXaGVuIHdlIHN0cmlwIHdlIHdhbnQgdG8gc3RyaXAgYWxsIHN5bWJvbHMgaW4g
cmVsZWFzZSwgYnV0IHNhdmUgZXh0ZXJuYWxzLgotU1RSSVBfU1RZTEUgPSBhbGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmln
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MjJmYTUxZDUyZDVmZjBmMzA0NmZmNTFj
MGFkNmE5NmZiNDhiZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1N0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25m
aWcKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLwotLy8gIFN0YXRpY0xpYnJhcnlU
YXJnZXQueGNjb25maWcKLS8vCi0vLyAgVGhlc2UgYXJlIHN0YXRpYyBsaWJyYXJ5IHRhcmdldCBz
ZXR0aW5ncyBmb3IgbGliZ3Rlc3QuYS4gSXQKLS8vICBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoi
IGRyb3Bkb3duIGluIHRoZSAiVGFyZ2V0IiBpbmZvIGRpYWxvZy4KLS8vICBUaGlzIGZpbGUgaXMg
YmFzZWQgb24gdGhlIFhjb2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0vLyAKLQotLy8gU3RhdGlj
IGxpYnMgY2FuIGJlIGluY2x1ZGVkIGluIGJ1bmRsZXMgc28gbWFrZSB0aGVtIHBvc2l0aW9uIGlu
ZGVwZW5kZW50Ci1HQ0NfRFlOQU1JQ19OT19QSUMgPSBOTwotCi0vLyBTdGF0aWMgbGlicyBzaG91
bGQgbm90IGhhdmUgdGhlaXIgaW50ZXJuYWwgZ2xvYmFscyBvciBleHRlcm5hbCBzeW1ib2xzCi0v
LyBzdHJpcHBlZC4KLVNUUklQX1NUWUxFID0gZGVidWdnaW5nCi0KLS8vIExldCB0aGUgdXNlciBp
bnN0YWxsIGJ5IHNwZWNpZnlpbmcgdGhlICREU1RST09UIHdpdGggeGNvZGVidWlsZAotU0tJUF9J
TlNUQUxMID0gTk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9UZXN0VGFy
Z2V0LnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25m
aWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NjUyYmE4NTk5MDZkZjA3NDg3NmYz
NTBmOGQ2MTE3ZGI4OTdkODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcKKysr
IC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLS8vCi0vLyAgVGVzdFRhcmdldC54Y2NvbmZpZwot
Ly8KLS8vICBUaGVzZSBhcmUgVGVzdCB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFt
ZXdvcmsgYW5kIGV4YW1wbGVzLiBJdAotLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJv
cGRvd24gaW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgotCi1QUk9EVUNUX05BTUUgPSAkKFRB
UkdFVF9OQU1FKQotSEVBREVSX1NFQVJDSF9QQVRIUyA9IC4uL2luY2x1ZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL1Jlc291cmNlcy9JbmZvLnBsaXN0IGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNv
ZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlk
ZDI4ZWExNDg1YWI1MjdlNjI3NWJmMzk4NTBjYjBlODRjZGRiMzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvUmVzb3VyY2Vz
L0luZm8ucGxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBw
bGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0
eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+Q0ZC
dW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgotCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFN
RX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KLQk8c3RyaW5nPjwvc3Ry
aW5nPgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5jb20uZ29vZ2xl
LiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZl
cnNpb248L2tleT4KLQk8c3RyaW5nPjYuMDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVQYWNrYWdl
VHlwZTwva2V5PgotCTxzdHJpbmc+Rk1XSzwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVTaWduYXR1
cmU8L2tleT4KLQk8c3RyaW5nPj8/Pz88L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwv
a2V5PgotCTxzdHJpbmc+R1RFU1RfVkVSU0lPTklORk9fTE9ORzwvc3RyaW5nPgotCTxrZXk+Q0ZC
dW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPkdURVNUX1ZFUlNJT05JTkZP
X1NIT1JUPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tleT4KLQk8c3Ry
aW5nPiR7UFJPRFVDVF9OQU1FfSBHVEVTVF9WRVJTSU9OSU5GT19MT05HLCAke0dURVNUX1ZFUlNJ
T05JTkZPX0FCT1VUfTwvc3RyaW5nPgotCTxrZXk+TlNIdW1hblJlYWRhYmxlQ29weXJpZ2h0PC9r
ZXk+Ci0JPHN0cmluZz4ke0dURVNUX1ZFUlNJT05JTkZPX0FCT1VUfTwvc3RyaW5nPgotCTxrZXk+
Q1NSZXNvdXJjZXNGaWxlTWFwcGVkPC9rZXk+Ci0JPHRydWUvPgotPC9kaWN0PgotPC9wbGlzdD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL0lu
Zm8ucGxpc3QgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZv
LnBsaXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzg1MmVkZWEyNzdjNDkwMzIz
M2IwZjQyZDY3NjViMWY5MDJiOGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL0lu
Zm8ucGxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUv
L0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxp
c3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+Q0ZCdW5k
bGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgotCTxzdHJpbmc+RW5nbGlzaDwvc3RyaW5nPgotCTxr
ZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFNRX08
L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KLQk8c3RyaW5nPjwvc3RyaW5n
PgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5jb20uZ29vZ2xlLmd0
ZXN0LiR7UFJPRFVDVF9OQU1FOmlkZW50aWZpZXJ9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUlu
Zm9EaWN0aW9uYXJ5VmVyc2lvbjwva2V5PgotCTxzdHJpbmc+Ni4wPC9zdHJpbmc+Ci0JPGtleT5D
RkJ1bmRsZU5hbWU8L2tleT4KLQk8c3RyaW5nPiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgotCTxr
ZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgotCTxzdHJpbmc+Rk1XSzwvc3RyaW5nPgotCTxr
ZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5n
PgotCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KLQk8c3RyaW5nPj8/Pz88L3N0cmluZz4K
LQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgotCTxzdHJpbmc+MS4wPC9zdHJpbmc+Ci0JPGtl
eT5DU1Jlc291cmNlc0ZpbGVNYXBwZWQ8L2tleT4KLQk8dHJ1ZS8+Ci08L2RpY3Q+Ci08L3BsaXN0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUv
V2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94
Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFkYTYwMjQ0NDcw
MTE0YzI5MDlhZGMzOTkzMzM0ODY2ZmQ2OTM2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS9XaWRnZXRGcmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1NyArMCwwIEBACi0vLyAhJCpVVEY4KiQhCi17Ci0JYXJjaGl2ZVZlcnNpb24g
PSAxOwotCWNsYXNzZXMgPSB7Ci0JfTsKLQlvYmplY3RWZXJzaW9uID0gNDI7Ci0Jb2JqZWN0cyA9
IHsKLQotLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KLQkJNDAyNEQxNjIx
MTNEN0QyNDAwQzcwNTlFIC8qIFRlc3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJn
ZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDAyNEQxNjkxMTNEN0Q0NjAwQzcwNTlF
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJUZXN0
IiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTQwMjREMTYxMTEzRDdEMjQwMEM3MDU5RSAv
KiBTaGVsbFNjcmlwdCAqLywKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDAyNEQx
NjYxMTNEN0QzMTAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IFRlc3Q7Ci0JCQlwcm9kdWN0TmFtZSA9IFRlc3RBbmRCdWlsZDsKLQkJfTsKLQkJNDAy
NEQxRTkxMTNEODNGRjAwQzcwNTlFIC8qIFRlc3RBbmRCdWlsZCAqLyA9IHsKLQkJCWlzYSA9IFBC
WEFnZ3JlZ2F0ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MDI0RDFGMDEx
M0Q4NDJCMDBDNzA1OUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIlRlc3RBbmRCdWlsZCIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCSk7Ci0J
CQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDAyNEQxRUQxMTNEODQwOTAwQzcwNTlFIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCi0JCQkJNDAyNEQxRUYxMTNEODQwRDAwQzcwNTlFIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFRlc3RBbmRCdWlsZDsKLQkJCXBy
b2R1Y3ROYW1lID0gVGVzdEFuZEJ1aWxkOwotCQl9OwotLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdl
dCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTNCN0VC
MTI1MEU1QUVFMzUwMEM3RjIzOSAvKiB3aWRnZXQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjdFQjEyMzBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0
LmNjICovOyB9OwotCQkzQjdFQjEyNjBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjdFQjEyNDBFNUFFRTM1
MDBDN0YyMzkgLyogd2lkZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwotCQkzQjdFQjEyODBFNUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2Mg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjdFQjEyNzBF
NUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi87IH07Ci0JCTNCN0VCMTQ4MEU1QUYz
QjQwMEM3RjIzOSAvKiBXaWRnZXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEQwN0YyQzgwNDg2Q0M3QTAwN0NEMUQwIC8qIFdpZGdl
dC5mcmFtZXdvcmsgKi87IH07Ci0JCTQwMjREMTg4MTEzRDdENzgwMEM3MDU5RSAvKiBsaWJndGVz
dC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDAy
NEQxODUxMTNEN0Q1NTAwQzcwNTlFIC8qIGxpYmd0ZXN0LmEgKi87IH07Ci0JCTQwMjREMTg5MTEz
RDdEN0EwMEM3MDU5RSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDI0RDE4MzExM0Q3RDU1MDBDNzA1OUUgLyogbGli
Z3Rlc3RfbWFpbi5hICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0KLS8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCi0JCTNCMDdCREYwMEUzRjNG
QUUwMDY0Nzg2OSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVt
b3RlR2xvYmFsSURTdHJpbmcgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDA7Ci0JCQlyZW1vdGVJ
bmZvID0gZ1Rlc3RFeGFtcGxlOwotCQl9OwotCQk0MDI0RDE2NTExM0Q3RDMxMDBDNzA1OUUgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gM0IwN0JERTkwRTNGM0Y5RTAwNjQ3ODY5OwotCQkJcmVtb3RlSW5mbyA9IFdpZGdldEZy
YW1ld29ya1Rlc3Q7Ci0JCX07Ci0JCTQwMjREMUVDMTEzRDg0MDkwMEM3MDU5RSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0J
CQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4
RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDA7Ci0JCQlyZW1vdGVJbmZvID0gV2lkZ2V0RnJhbWV3b3Jr
OwotCQl9OwotCQk0MDI0RDFFRTExM0Q4NDBEMDBDNzA1OUUgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwot
CQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDAyNEQxNjIxMTNE
N0QyNDAwQzcwNTlFOwotCQkJcmVtb3RlSW5mbyA9IFRlc3Q7Ci0JCX07Ci0vKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCi0JCTNCMDdCREVBMEUzRjNGOUUwMDY0Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtU
ZXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXaWRn
ZXRGcmFtZXdvcmtUZXN0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkz
QjdFQjEyMzBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmNjICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gd2lkZ2V0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzQjdFQjEyNDBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
QjdFQjEyNzBFNUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB3aWRnZXRfdGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDAyNEQxODMxMTNEN0Q1NTAwQzcwNTlFIC8qIGxpYmd0ZXN0X21haW4uYSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IG5hbWUgPSBsaWJndGVzdF9tYWluLmE7IHBhdGggPSAvdXNyL2xvY2FsL2xpYi9saWJndGVz
dF9tYWluLmE7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTQwMjREMTg1MTEzRDdE
NTUwMEM3MDU5RSAvKiBsaWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgbmFtZSA9IGxpYmd0ZXN0LmE7IHBhdGggPSAv
dXNyL2xvY2FsL2xpYi9saWJndGVzdC5hOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9Owot
CQk0MDI0RDFFMjExM0Q4MzgyMDBDNzA1OUUgLyogcnVudGVzdHMuc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5zaDsgcGF0aCA9IHJ1bnRlc3RzLnNoOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4RDA3RjJDNzA0ODZDQzdBMDA3Q0QxRDAgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3Q7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4RDA3RjJDODA0ODZDQzdBMDA3Q0QxRDAgLyogV2lkZ2V0LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdpZGdldC5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0vKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCi0KLS8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJM0Iw
N0JERTgwRTNGM0Y5RTAwNjQ3ODY5IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0J
CQlmaWxlcyA9ICgKLQkJCQk0MDI0RDE4ODExM0Q3RDc4MDBDNzA1OUUgLyogbGliZ3Rlc3QuYSBp
biBGcmFtZXdvcmtzICovLAotCQkJCTQwMjREMTg5MTEzRDdEN0EwMEM3MDU5RSAvKiBsaWJndGVz
dF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQkzQjdFQjE0ODBFNUFGM0I0MDBDN0YyMzkg
LyogV2lkZ2V0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk4RDA3RjJDMzA0ODZDQzdB
MDA3Q0QxRDAgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAot
CQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9Owot
LyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJY
R3JvdXAgc2VjdGlvbiAqLwotCQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJvZHVjdHMg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTNCMDdCREVB
MEUzRjNGOUUwMDY0Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtUZXN0ICovLAotCQkJCThEMDdGMkM4
MDQ4NkNDN0EwMDdDRDFEMCAvKiBXaWRnZXQuZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5hbWUg
PSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTA4NjdENjkx
RkU4NDAyOEZDMDJBQUMwNyAvKiBnVGVzdEV4YW1wbGUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTQwMjREMUUxMTEzRDgzNkMwMEM3MDU5RSAvKiBTY3Jp
cHRzICovLAotCQkJCTA4RkI3N0FDRkU4NDE3MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCi0JCQkJ
MDg5QzE2NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKLQkJCQkzQjA3QkUzNTBF
NDA5NEU0MDA2NDc4NjkgLyogVGVzdCAqLywKLQkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAotCQkJCTAzNDc2OERERkYz
OEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0JCQluYW1lID0gZ1Rlc3RFeGFt
cGxlOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg2N0Q2OUFGRTg0MDI4
RkMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDAyNEQxODUxMTNEN0Q1NTAw
QzcwNTlFIC8qIGxpYmd0ZXN0LmEgKi8sCi0JCQkJNDAyNEQxODMxMTNEN0Q1NTAwQzcwNTlFIC8q
IGxpYmd0ZXN0X21haW4uYSAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29y
a3MgYW5kIExpYnJhcmllcyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkw
ODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJY
R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDA3RjJDNzA0ODZDQzdBMDA3Q0QxRDAgLyog
SW5mby5wbGlzdCAqLywKLQkJCSk7Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDhGQjc3QUNGRTg0MTcwN0MwMkFBQzA3IC8qIFNvdXJj
ZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJM0I3RUIx
MjMwRTVBRUUzNTAwQzdGMjM5IC8qIHdpZGdldC5jYyAqLywKLQkJCQkzQjdFQjEyNDBFNUFFRTM1
MDBDN0YyMzkgLyogd2lkZ2V0LmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IFNvdXJjZTsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTNCMDdCRTM1MEU0MDk0RTQwMDY0Nzg2OSAv
KiBUZXN0ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkz
QjdFQjEyNzBFNUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi8sCi0JCQkpOwotCQkJ
bmFtZSA9IFRlc3Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk0MDI0RDFF
MTExM0Q4MzZDMDBDNzA1OUUgLyogU2NyaXB0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNDAyNEQxRTIxMTNEODM4MjAwQzcwNTlFIC8qIHJ1bnRlc3Rz
LnNoICovLAotCQkJKTsKLQkJCW5hbWUgPSBTY3JpcHRzOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8q
IEhlYWRlcnMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKLQkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkzQjdFQjEyNjBFNUFF
RTM1MDBDN0YyMzkgLyogd2lkZ2V0LmggaW4gSGVhZGVycyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhIZWFkZXJz
QnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCi0JCTNCMDdCREU5MEUzRjNGOUUwMDY0Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtUZXN0ICov
ID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDNCMDdCREY0MEUzRjNGQjYwMDY0Nzg2OSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiV2lkZ2V0RnJhbWV3b3JrVGVzdCIgKi87Ci0JCQlidWlsZFBo
YXNlcyA9ICgKLQkJCQkzQjA3QkRFNzBFM0YzRjlFMDA2NDc4NjkgLyogU291cmNlcyAqLywKLQkJ
CQkzQjA3QkRFODBFM0YzRjlFMDA2NDc4NjkgLyogRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQli
dWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJCQkzQjA3QkRGMTBF
M0YzRkFFMDA2NDc4NjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJCSk7Ci0JCQluYW1l
ID0gV2lkZ2V0RnJhbWV3b3JrVGVzdDsKLQkJCXByb2R1Y3ROYW1lID0gZ1Rlc3RFeGFtcGxlVGVz
dDsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSAzQjA3QkRFQTBFM0YzRjlFMDA2NDc4NjkgLyogV2lk
Z2V0RnJhbWV3b3JrVGVzdCAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUudG9vbCI7Ci0JCX07Ci0JCThEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBXaWRnZXRG
cmFtZXdvcmsgKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gNEZBREMyNDIwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXaWRnZXRGcmFtZXdvcmsiICovOwotCQkJ
YnVpbGRQaGFzZXMgPSAoCi0JCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMg
Ki8sCi0JCQkJOEQwN0YyQzMwNDg2Q0M3QTAwN0NEMUQwIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkJ
OEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCi0JCQkJOEQwN0YyQkYwNDg2
Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAqLywKLQkJCQk4RDA3RjJDNTA0ODZDQzdBMDA3Q0Qx
RDAgLyogUmV6ICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5k
ZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSBXaWRnZXRGcmFtZXdvcms7Ci0JCQlwcm9kdWN0
SW5zdGFsbFBhdGggPSAiJChIT01FKS9MaWJyYXJ5L0ZyYW1ld29ya3MiOwotCQkJcHJvZHVjdE5h
bWUgPSBnVGVzdEV4YW1wbGU7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gOEQwN0YyQzgwNDg2Q0M3
QTAwN0NEMUQwIC8qIFdpZGdldC5mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFy
Z2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCTA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9IFBC
WFByb2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAw
QUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2lkZ2V0
RnJhbWV3b3JrIiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0J
CQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKLQkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4
NDAyOEZDMDJBQUMwNyAvKiBnVGVzdEV4YW1wbGUgKi87Ci0JCQlwcm9kdWN0UmVmR3JvdXAgPSAw
MzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJvZHVjdHMgKi87Ci0JCQlwcm9qZWN0RGlyUGF0
aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQwN0Yy
QkMwNDg2Q0M3QTAwN0NEMUQwIC8qIFdpZGdldEZyYW1ld29yayAqLywKLQkJCQkzQjA3QkRFOTBF
M0YzRjlFMDA2NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLywKLQkJCQk0MDI0RDE2MjEx
M0Q3RDI0MDBDNzA1OUUgLyogVGVzdCAqLywKLQkJCQk0MDI0RDFFOTExM0Q4M0ZGMDBDNzA1OUUg
LyogVGVzdEFuZEJ1aWxkICovLAotCQkJKTsKLQkJfTsKLS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rp
b24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThE
MDdGMkJGMDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhS
ZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJ
CWZpbGVzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwotCQl9OwotLyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhSZXpCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQwN0YyQzUwNDg2Q0M3QTAw
N0NEMUQwIC8qIFJleiAqLyA9IHsKLQkJCWlzYSA9IFBCWFJlekJ1aWxkUGhhc2U7Ci0JCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYUmV6QnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBz
ZWN0aW9uICovCi0JCTQwMjREMTYxMTEzRDdEMjQwMEM3MDU5RSAvKiBTaGVsbFNjcmlwdCAqLyA9
IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhzID0gKAot
CQkJKTsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2Ny
aXB0ID0gIi9iaW4vYmFzaCAkU1JDUk9PVC9ydW50ZXN0cy5zaCAkQlVJTFRfUFJPRFVDVFNfRElS
L1dpZGdldEZyYW1ld29ya1Rlc3RcbiI7Ci0JCX07Ci0vKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCQkzQjA3QkRFNzBFM0YzRjlFMDA2NDc4NjkgLyogU291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKLQkJCWZpbGVzID0gKAotCQkJCTNCN0VCMTI4MEU1QUVFNDYwMEM3RjIzOSAvKiB3aWRnZXRf
dGVzdC5jYyBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk4RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291
cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTNCN0VCMTI1MEU1QUVFMzUw
MEM3RjIzOSAvKiB3aWRnZXQuY2MgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlv
biAqLwotCQkzQjA3QkRGMTBFM0YzRkFFMDA2NDc4NjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSA4RDA3RjJC
QzA0ODZDQzdBMDA3Q0QxRDAgLyogV2lkZ2V0RnJhbWV3b3JrICovOwotCQkJdGFyZ2V0UHJveHkg
PSAzQjA3QkRGMDBFM0YzRkFFMDA2NDc4NjkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwot
CQl9OwotCQk0MDI0RDE2NjExM0Q3RDMxMDBDNzA1OUUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSAzQjA3QkRF
OTBFM0YzRjlFMDA2NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLzsKLQkJCXRhcmdldFBy
b3h5ID0gNDAyNEQxNjUxMTNEN0QzMTAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKLQkJfTsKLQkJNDAyNEQxRUQxMTNEODQwOTAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gOEQw
N0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8qIFdpZGdldEZyYW1ld29yayAqLzsKLQkJCXRhcmdldFBy
b3h5ID0gNDAyNEQxRUMxMTNEODQwOTAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKLQkJfTsKLQkJNDAyNEQxRUYxMTNEODQwRDAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gNDAy
NEQxNjIxMTNEN0QyNDAwQzcwNTlFIC8qIFRlc3QgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDQwMjRE
MUVFMTEzRDg0MEQwMEM3MDU5RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0v
KiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQkJM0IwN0JERUMwRTNGM0Y5RjAwNjQ3ODY5IC8qIERl
YnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCVBST0RVQ1RfTkFNRSA9IFdpZGdldEZyYW1ld29ya1Rlc3Q7Ci0JCQl9Owot
CQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkzQjA3QkRFRDBFM0YzRjlGMDA2NDc4NjkgLyogUmVs
ZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0
aW5ncyA9IHsKLQkJCQlQUk9EVUNUX05BTUUgPSBXaWRnZXRGcmFtZXdvcmtUZXN0OwotCQkJfTsK
LQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MDI0RDE2MzExM0Q3RDI0MDBDNzA1OUUgLyog
RGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5h
bWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDAyNEQxNjQxMTNEN0QyNDAwQzcwNTlFIC8qIFJlbGVhc2Ug
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3Mg
PSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBS
ZWxlYXNlOwotCQl9OwotCQk0MDI0RDFFQTExM0Q4M0ZGMDBDNzA1OUUgLyogRGVidWcgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJUFJPRFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsK
LQkJfTsKLQkJNDAyNEQxRUIxMTNEODNGRjAwQzcwNTlFIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9
OwotCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09N
UEFUSUJJTElUWV9WRVJTSU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwot
CQkJCUZSQU1FV09SS19WRVJTSU9OID0gQTsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxp
c3Q7Ci0JCQkJSU5TVEFMTF9QQVRIID0gIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIjsKLQkJ
CQlQUk9EVUNUX05BTUUgPSBXaWRnZXQ7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9Owot
CQk0RkFEQzI0NDA4QjQxNTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlEWUxJQl9DT01Q
QVRJQklMSVRZX1ZFUlNJT04gPSAxOwotCQkJCURZTElCX0NVUlJFTlRfVkVSU0lPTiA9IDE7Ci0J
CQkJRlJBTUVXT1JLX1ZFUlNJT04gPSBBOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlz
dDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MiOwotCQkJ
CVBST0RVQ1RfTkFNRSA9IFdpZGdldDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
LQkJNEZBREMyNDcwOEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9O
ID0gNC4wOwotCQkJCVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrOwot
CQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNEZBREMyNDgwOEI0MTU2RDAwQUJFNTVF
IC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1
aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSA0LjA7Ci0JCQkJU0RLUk9PVCA9IC9E
ZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGs7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7
Ci0JCX07Ci0vKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCi0vKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQkJM0IwN0JERjQwRTNGM0ZCNjAwNjQ3
ODY5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXaWRn
ZXRGcmFtZXdvcmtUZXN0IiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0J
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTNCMDdCREVDMEUzRjNGOUYwMDY0Nzg2OSAv
KiBEZWJ1ZyAqLywKLQkJCQkzQjA3QkRFRDBFM0YzRjlGMDA2NDc4NjkgLyogUmVsZWFzZSAqLywK
LQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MDI0RDE2OTExM0Q3RDQ2MDBD
NzA1OUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IlRlc3QiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCi0JCQkJNDAyNEQxNjMxMTNEN0QyNDAwQzcwNTlFIC8qIERlYnVnICov
LAotCQkJCTQwMjREMTY0MTEzRDdEMjQwMEM3MDU5RSAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwMjREMUYwMTEzRDg0MkIwMEM3MDU5RSAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVGVzdEFuZEJ1
aWxkIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAotCQkJCTQwMjREMUVBMTEzRDgzRkYwMEM3MDU5RSAvKiBEZWJ1ZyAqLywK
LQkJCQk0MDI0RDFFQjExM0Q4M0ZGMDBDNzA1OUUgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldpZGdldEZyYW1ld29y
ayIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKLQkJCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCi0J
CQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2lkZ2V0RnJhbWV3b3JrIiAqLyA9
IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAotCQkJCTRGQURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKLQkJCQk0RkFE
QzI0ODA4QjQxNTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBS
ZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCX07
Ci0Jcm9vdE9iamVjdCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3Jr
U2FtcGxlL3J1bnRlc3RzLnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtT
YW1wbGUvcnVudGVzdHMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMGQ0MTNl
NTJkZjc1ZDE1YzJhNGE5NTI1NmIzMmI2MDdmM2IzYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdv
cmtTYW1wbGUvcnVudGVzdHMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0jIS9i
aW4vYmFzaAotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMgRXhlY3V0ZXMgdGhlIHNhbXBsZXMgYW5k
IHRlc3RzIGZvciB0aGUgR29vZ2xlIFRlc3QgRnJhbWV3b3JrLgotCi0jIEhlbHAgdGhlIGR5bmFt
aWMgbGlua2VyIGZpbmQgdGhlIHBhdGggdG8gdGhlIGxpYnJhcmllcy4KLWV4cG9ydCBEWUxEX0ZS
QU1FV09SS19QQVRIPSRCVUlMVF9QUk9EVUNUU19ESVIKLWV4cG9ydCBEWUxEX0xJQlJBUllfUEFU
SD0kQlVJTFRfUFJPRFVDVFNfRElSCi0KLSMgQ3JlYXRlIHNvbWUgZXhlY3V0YWJsZXMuCi10ZXN0
X2V4ZWN1dGFibGVzPSRACi0KLSMgTm93IGV4ZWN1dGUgZWFjaCBvbmUgaW4gdHVybiBrZWVwaW5n
IHRyYWNrIG9mIGhvdyBtYW55IHN1Y2NlZWRlZCBhbmQgZmFpbGVkLgotc3VjY2VlZGVkPTAKLWZh
aWxlZD0wCi1mYWlsZWRfbGlzdD0oKQotZm9yIHRlc3QgaW4gJHt0ZXN0X2V4ZWN1dGFibGVzWypd
fTsgZG8KLSAgIiR0ZXN0IgotICByZXN1bHQ9JD8KLSAgaWYgWyAkcmVzdWx0IC1lcSAwIF07IHRo
ZW4KLSAgICBzdWNjZWVkZWQ9JCgoICRzdWNjZWVkZWQgKyAxICkpCi0gIGVsc2UKLSAgICBmYWls
ZWQ9JCgoIGZhaWxlZCArIDEgKSkKLSAgICBmYWlsZWRfbGlzdD0iJGZhaWxlZF9saXN0ICR0ZXN0
IgotICBmaQotZG9uZQotCi0jIFJlcG9ydCB0aGUgc3VjY2Vzc2VzIGFuZCBmYWlsdXJlcyB0byB0
aGUgY29uc29sZS4KLWVjaG8gIlRlc3RzIGNvbXBsZXRlIHdpdGggJHN1Y2NlZWRlZCBzdWNjZXNz
ZXMgYW5kICRmYWlsZWQgZmFpbHVyZXMuIgotaWYgWyAkZmFpbGVkIC1uZSAwIF07IHRoZW4KLSAg
ZWNobyAiVGhlIGZvbGxvd2luZyB0ZXN0cyBmYWlsZWQ6IgotICBlY2hvICRmYWlsZWRfbGlzdAot
ZmkKLWV4aXQgJGZhaWxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9G
cmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvd2lkZ2V0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmM0
ZTdmY2ZkMGU3YTAzMmYyNjdjYzBhYTE4NzU0YzcwYTdjYTNkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL3dpZGdldC5jYworKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHByZXN0b24uYS5qYWNrc29uQGdtYWlsLmNvbSAoUHJlc3RvbiBKYWNrc29uKQotLy8KLS8vIEdv
b2dsZSBUZXN0IC0gRnJhbWV3b3JrU2FtcGxlCi0vLyB3aWRnZXQuY2MKLS8vCi0KLS8vIFdpZGdl
dCBpcyBhIHZlcnkgc2ltcGxlIGNsYXNzIHVzZWQgZm9yIGRlbW9uc3RyYXRpbmcgdGhlIHVzZSBv
ZiBndGVzdAotCi0jaW5jbHVkZSAid2lkZ2V0LmgiCi0KLVdpZGdldDo6V2lkZ2V0KGludCBudW1i
ZXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQotICAgIDogbnVtYmVyXyhudW1iZXIpLAotICAg
ICAgbmFtZV8obmFtZSkge30KLQotV2lkZ2V0Ojp+V2lkZ2V0KCkge30KLQotZmxvYXQgV2lkZ2V0
OjpHZXRGbG9hdFZhbHVlKCkgY29uc3QgewotICByZXR1cm4gbnVtYmVyXzsKLX0KLQotaW50IFdp
ZGdldDo6R2V0SW50VmFsdWUoKSBjb25zdCB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG51
bWJlcl8pOwotfQotCi1zdGQ6OnN0cmluZyBXaWRnZXQ6OkdldFN0cmluZ1ZhbHVlKCkgY29uc3Qg
ewotICByZXR1cm4gbmFtZV87Ci19Ci0KLXZvaWQgV2lkZ2V0OjpHZXRDaGFyUHRyVmFsdWUoY2hh
ciogYnVmZmVyLCBzaXplX3QgbWF4X3NpemUpIGNvbnN0IHsKLSAgLy8gQ29weSB0aGUgY2hhciog
cmVwcmVzZW50YXRpb24gb2YgbmFtZV8gaW50byBidWZmZXIsIHVwIHRvIG1heF9zaXplLgotICBz
dHJuY3B5KGJ1ZmZlciwgbmFtZV8uY19zdHIoKSwgbWF4X3NpemUtMSk7Ci0gIGJ1ZmZlclttYXhf
c2l6ZS0xXSA9ICdcMCc7Ci0gIHJldHVybjsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hj
b2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUv
U2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBjNTVjZGM4Y2YwOGE4MzcwZTAzMzMzYWQ3ZTU5M2UyYjBhZDRkOTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUv
U2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiBwcmVzdG9uLmEuamFja3NvbkBnbWFpbC5jb20gKFByZXN0b24gSmFja3NvbikK
LS8vCi0vLyBHb29nbGUgVGVzdCAtIEZyYW1ld29ya1NhbXBsZQotLy8gd2lkZ2V0LmgKLS8vCi0K
LS8vIFdpZGdldCBpcyBhIHZlcnkgc2ltcGxlIGNsYXNzIHVzZWQgZm9yIGRlbW9uc3RyYXRpbmcg
dGhlIHVzZSBvZiBndGVzdC4gSXQKLS8vIHNpbXBseSBzdG9yZXMgdHdvIHZhbHVlcyBhIHN0cmlu
ZyBhbmQgYW4gaW50ZWdlciwgd2hpY2ggYXJlIHJldHVybmVkIHZpYQotLy8gcHVibGljIGFjY2Vz
c29ycyBpbiBtdWx0aXBsZSBmb3Jtcy4KLQotI2ltcG9ydCA8c3RyaW5nPgotCi1jbGFzcyBXaWRn
ZXQgewotIHB1YmxpYzoKLSAgV2lkZ2V0KGludCBudW1iZXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBu
YW1lKTsKLSAgfldpZGdldCgpOwotCi0gIC8vIFB1YmxpYyBhY2Nlc3NvcnMgdG8gbnVtYmVyIGRh
dGEKLSAgZmxvYXQgR2V0RmxvYXRWYWx1ZSgpIGNvbnN0OwotICBpbnQgR2V0SW50VmFsdWUoKSBj
b25zdDsKLQotICAvLyBQdWJsaWMgYWNjZXNzb3JzIHRvIHRoZSBzdHJpbmcgZGF0YQotICBzdGQ6
OnN0cmluZyBHZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICB2b2lkIEdldENoYXJQdHJWYWx1ZShj
aGFyKiBidWZmZXIsIHNpemVfdCBtYXhfc2l6ZSkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICAvLyBE
YXRhIG1lbWJlcnMKLSAgZmxvYXQgbnVtYmVyXzsKLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lk
Z2V0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93
aWRnZXRfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyNTk5NDIxODUx
NDA4ZTc2YWFiNmM1NjBiODE4OTI0NTliYmQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1Nh
bXBsZS93aWRnZXRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHBy
ZXN0b24uYS5qYWNrc29uQGdtYWlsLmNvbSAoUHJlc3RvbiBKYWNrc29uKQotLy8KLS8vIEdvb2ds
ZSBUZXN0IC0gRnJhbWV3b3JrU2FtcGxlCi0vLyB3aWRnZXRfdGVzdC5jYwotLy8KLQotLy8gVGhp
cyBpcyBhIHNpbXBsZSB0ZXN0IGZpbGUgZm9yIHRoZSBXaWRnZXQgY2xhc3MgaW4gdGhlIFdpZGdl
dC5mcmFtZXdvcmsKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi0jaW5jbHVkZSA8V2lkZ2V0L3dpZGdldC5oPgotCi0vLyBUaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB0aGUgY29uc3RydWN0b3Igc2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlCi0vLyBX
aWRnZXQgY2xhc3MgY29ycmVjdGx5LgotVEVTVChXaWRnZXRJbml0aWFsaXplclRlc3QsIFRlc3RD
b25zdHJ1Y3RvcikgewotICBXaWRnZXQgd2lkZ2V0KDEuMGYsICJuYW1lIik7Ci0gIEVYUEVDVF9G
TE9BVF9FUSgxLjBmLCB3aWRnZXQuR2V0RmxvYXRWYWx1ZSgpKTsKLSAgRVhQRUNUX0VRKHN0ZDo6
c3RyaW5nKCJuYW1lIiksIHdpZGdldC5HZXRTdHJpbmdWYWx1ZSgpKTsKLX0KLQotLy8gVGhpcyB0
ZXN0IHZlcmlmaWVzIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBmbG9hdCBhbmQgc3RyaW5nIHZhbHVl
cyB0byBpbnQgYW5kCi0vLyBjaGFyKiwgcmVzcGVjdGl2ZWx5LgotVEVTVChXaWRnZXRJbml0aWFs
aXplclRlc3QsIFRlc3RDb252ZXJzaW9uKSB7Ci0gIFdpZGdldCB3aWRnZXQoMS4wZiwgIm5hbWUi
KTsKLSAgRVhQRUNUX0VRKDEsIHdpZGdldC5HZXRJbnRWYWx1ZSgpKTsKLQotICBzaXplX3QgbWF4
X3NpemUgPSAxMjg7Ci0gIGNoYXIgYnVmZmVyW21heF9zaXplXTsKLSAgd2lkZ2V0LkdldENoYXJQ
dHJWYWx1ZShidWZmZXIsIG1heF9zaXplKTsKLSAgRVhQRUNUX1NUUkVRKCJuYW1lIiwgYnVmZmVy
KTsKLX0KLQotLy8gVXNlIHRoZSBHb29nbGUgVGVzdCBtYWluIHRoYXQgaXMgbGlua2VkIGludG8g
dGhlIGZyYW1ld29yay4gSXQgZG9lcyBzb21ldGhpbmcKLS8vIGxpa2UgdGhpczoKLS8vIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotLy8gICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVz
dCgmYXJnYywgYXJndik7Ci0vLyAgIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci0vLyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3J1bnRlc3RzLnNoIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2ZjMjI5ZjFkNGFiNmYyN2NkODdkMzU2N2FjOGJiOTYwMzQ4NjJhMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3Jp
cHRzL3J1bnRlc3RzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotIyEvYmluL2Jh
c2gKLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIEV4ZWN1dGVzIHRoZSBzYW1wbGVzIGFuZCB0ZXN0
cyBmb3IgdGhlIEdvb2dsZSBUZXN0IEZyYW1ld29yay4KLQotIyBIZWxwIHRoZSBkeW5hbWljIGxp
bmtlciBmaW5kIHRoZSBwYXRoIHRvIHRoZSBsaWJyYXJpZXMuCi1leHBvcnQgRFlMRF9GUkFNRVdP
UktfUEFUSD0kQlVJTFRfUFJPRFVDVFNfRElSCi1leHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9JEJV
SUxUX1BST0RVQ1RTX0RJUgotCi0jIENyZWF0ZSBzb21lIGV4ZWN1dGFibGVzLgotdGVzdF9leGVj
dXRhYmxlcz0oIiRCVUlMVF9QUk9EVUNUU19ESVIvZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIgot
ICAgICAgICAgICAgICAgICAgIiRCVUlMVF9QUk9EVUNUU19ESVIvZ3Rlc3RfdW5pdHRlc3QiCi0g
ICAgICAgICAgICAgICAgICAiJEJVSUxUX1BST0RVQ1RTX0RJUi9zYW1wbGUxX3VuaXR0ZXN0LWZy
YW1ld29yayIKLSAgICAgICAgICAgICAgICAgICIkQlVJTFRfUFJPRFVDVFNfRElSL3NhbXBsZTFf
dW5pdHRlc3Qtc3RhdGljIikKLQotIyBOb3cgZXhlY3V0ZSBlYWNoIG9uZSBpbiB0dXJuIGtlZXBp
bmcgdHJhY2sgb2YgaG93IG1hbnkgc3VjY2VlZGVkIGFuZCBmYWlsZWQuIAotc3VjY2VlZGVkPTAK
LWZhaWxlZD0wCi1mYWlsZWRfbGlzdD0oKQotZm9yIHRlc3QgaW4gJHt0ZXN0X2V4ZWN1dGFibGVz
WypdfTsgZG8KLSAgIiR0ZXN0IgotICByZXN1bHQ9JD8KLSAgaWYgWyAkcmVzdWx0IC1lcSAwIF07
IHRoZW4KLSAgICBzdWNjZWVkZWQ9JCgoICRzdWNjZWVkZWQgKyAxICkpCi0gIGVsc2UKLSAgICBm
YWlsZWQ9JCgoIGZhaWxlZCArIDEgKSkKLSAgICBmYWlsZWRfbGlzdD0iJGZhaWxlZF9saXN0ICR0
ZXN0IgotICBmaQotZG9uZQotCi0jIFJlcG9ydCB0aGUgc3VjY2Vzc2VzIGFuZCBmYWlsdXJlcyB0
byB0aGUgY29uc29sZS4KLWVjaG8gIlRlc3RzIGNvbXBsZXRlIHdpdGggJHN1Y2NlZWRlZCBzdWNj
ZXNzZXMgYW5kICRmYWlsZWQgZmFpbHVyZXMuIgotaWYgWyAkZmFpbGVkIC1uZSAwIF07IHRoZW4K
LSAgZWNobyAiVGhlIGZvbGxvd2luZyB0ZXN0cyBmYWlsZWQ6IgotICBlY2hvICRmYWlsZWRfbGlz
dAotZmkKLWV4aXQgJGZhaWxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0
cy92ZXJzaW9uZ2VuZXJhdGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25n
ZW5lcmF0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODFkZThjOTZhYzVkODZj
YTYzOTQ1NmM5MGM0MzMwNjdiZGZkNDBlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0
ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJBIHNjcmlwdCB0byBwcmVwYXJlIHZlcnNpb24g
aW5mb3JtdGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCi0KLSAgVGhpcyBz
Y3JpcHQgZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJl
LmFjIGZpbGUgYW5kCi0gIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWlu
aW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUKLSAgI2RlZmluZXMgaW4gdGhpcyBoZWFkZXIg
ZmlsZSB3aWxsIGJlIGluY2x1ZGVkIGluIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZgotICB0aGUg
SW5mby5wbGlzdCBvZiB0aGUgZnJhbWV3b3JrLCBnaXZpbmcgdGhlIGNvcnJlY3QgdmFsdWUgdG8g
dGhlIHZlcnNpb24KLSAgc2hvd24gaW4gdGhlIEZpbmRlci4KLQotICBUaGlzIHNjcmlwdCBtYWtl
cyB0aGUgZm9sbG93aW5nIGFzc3VtcHRpb25zICh0aGVzZSBhcmUgZmF1bHRzIG9mIHRoZSBzY3Jp
cHQsCi0gIG5vdCBwcm9ibGVtcyB3aXRoIHRoZSBBdXRvY29uZik6Ci0gICAgMS4gVGhlIEFDX0lO
SVQgbWFjcm8gd2lsbCBiZSBjb250YWluZWQgd2l0aGluIHRoZSBmaXJzdCAxMDI0IGNoYXJhY3Rl
cnMKLSAgICAgICBvZiBjb25maWd1cmUuYWMKLSAgICAyLiBUaGUgdmVyc2lvbiBzdHJpbmcgd2ls
bCBiZSAzIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCB3aWxsIGJlCi0gICAgICAg
c3Vycm91bmRlZCBieSBzcXVyZSBicmFja2V0cywgIlsiIGFuZCAiXSIgKGUuZy4gWzEuMC4xXSku
IFRoZSBmaXJzdAotICAgICAgIHNlZ21lbnQgcmVwcmVzZW50cyB0aGUgbWFqb3IgdmVyc2lvbiwg
dGhlIHNlY29uZCByZXByZXNlbnRzIHRoZSBtaW5vcgotICAgICAgIHZlcnNpb24gYW5kIHRoZSB0
aGlyZCByZXByZXNlbnRzIHRoZSBmaXggdmVyc2lvbi4KLSAgICAzLiBObyAiKSIgY2hhcmFjdGVy
IGV4aXN0cyBiZXR3ZWVuIHRoZSBvcGVuaW5nICIoIiBhbmQgY2xvc2luZyAiKSIgb2YKLSAgICAg
ICBBQ19JTklULCBpbmNsdWRpbmcgaW4gY29tbWVudHMgYW5kIGNoYXJhY3RlciBzdHJpbmdzLgot
IiIiCi0KLWltcG9ydCBzeXMKLWltcG9ydCByZQotCi0jIFJlYWQgdGhlIGNvbW1hbmQgbGluZSBh
cmd1bWVudCAodGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIFZlcnNpb24uaCkKLWlmIChsZW4oc3lz
LmFyZ3YpIDwgMyk6Ci0gIHByaW50ICJVc2FnZTogdmVyc2lvbmdlbmVyYXRlLnB5IGlucHV0X2Rp
ciBvdXRwdXRfZGlyIgotICBzeXMuZXhpdCgxKQotZWxzZToKLSAgaW5wdXRfZGlyID0gc3lzLmFy
Z3ZbMV0KLSAgb3V0cHV0X2RpciA9IHN5cy5hcmd2WzJdCi0KLSMgUmVhZCB0aGUgZmlyc3QgMTAy
NCBjaGFyYWN0ZXJzIG9mIHRoZSBjb25maWd1cmUuYWMgZmlsZQotY29uZmlnX2ZpbGUgPSBvcGVu
KCIlcy9jb25maWd1cmUuYWMiICUgaW5wdXRfZGlyLCAncicpCi1idWZmZXJfc2l6ZSA9IDEwMjQK
LW9wZW5pbmdfc3RyaW5nID0gY29uZmlnX2ZpbGUucmVhZChidWZmZXJfc2l6ZSkKLWNvbmZpZ19m
aWxlLmNsb3NlKCkKLQotIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19J
TklUIG1hY3JvCi0jICAgVGhlIGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAg
ICBFeHRyYWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3Vu
ZGVkIGJ5IHNxdXJlCi0jICAgICBicmFja2V0cyhlLmcuICJbMS4wLjFdIikgYmV0d2VlbiAiQUNf
SU5JVCgiIGFuZCAiKSIuIERvIG5vdCBiZSBncmVlZHkKLSMgICAgICgqPyBpcyB0aGUgbm9uLWdy
ZWVkeSBmbGFnKSBzaW5jZSB0aGF0IHdvdWxkIHB1bGwgaW4gZXZlcnl0aGluZyBiZXR3ZWVuCi0j
ICAgICB0aGUgZmlyc3QgIigiIGFuZCB0aGUgbGFzdCAiKSIgaW4gdGhlIGZpbGUuCi12ZXJzaW9u
X2V4cHJlc3Npb24gPSByZS5jb21waWxlKHIiQUNfSU5JVFwoLio/XFsoXGQrKVwuKFxkKylcLihc
ZCspXF0uKj9cKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkK
LXZlcnNpb25fdmFsdWVzID0gdmVyc2lvbl9leHByZXNzaW9uLnNlYXJjaChvcGVuaW5nX3N0cmlu
ZykKLW1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uX3ZhbHVlcy5ncm91cCgxKQotbWlub3JfdmVyc2lv
biA9IHZlcnNpb25fdmFsdWVzLmdyb3VwKDIpCi1maXhfdmVyc2lvbiA9IHZlcnNpb25fdmFsdWVz
Lmdyb3VwKDMpCi0KLSMgV3JpdGUgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gYSBoZWFkZXIg
ZmlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUKLSMgSW5mby5wbGlzdCBmaWxlLgotZmlsZV9kYXRh
ID0gIiIiLy8KLS8vIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIChidXQgeW91IGNhbiBkZWxldGUg
aXQpCi0vLwotLy8gVGhpcyBmaWxlIGlzIGF1dG9nZW5lcmF0ZWQgYnkgdGhlIHZlcnNpb25nZW5l
cmF0ZS5weSBzY3JpcHQuIFRoaXMgc2NyaXB0Ci0vLyBpcyBleGVjdXRlZCBpbiBhICJSdW4gU2Ny
aXB0IiBidWlsZCBwaGFzZSB3aGVuIGNyZWF0aW5nIGd0ZXN0LmZyYW1ld29yay4gVGhpcwotLy8g
aGVhZGVyIGZpbGUgaXMgbm90IHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIEMtc291cmNlLiBS
YXRoZXIsIGl0IHNpbXBseQotLy8gZGVmaW5lcyBzb21lIHZlcnNpb24gc3RyaW5ncyBmb3Igc3Vi
c3RpdHV0aW9uIGluIHRoZSBJbmZvLnBsaXN0LiBCZWNhdXNlIG9mCi0vLyB0aGlzLCB3ZSBhcmUg
bm90IG5vdCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBn
dWFyZHMuCi0vLwotCi0jZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZPX1NIT1JUICVzLiVzCi0jZGVm
aW5lIEdURVNUX1ZFUlNJT05JTkZPX0xPTkcgJXMuJXMuJXMKLQotIiIiICUgKG1ham9yX3ZlcnNp
b24sIG1pbm9yX3ZlcnNpb24sIG1ham9yX3ZlcnNpb24sIG1pbm9yX3ZlcnNpb24sIGZpeF92ZXJz
aW9uKQotdmVyc2lvbl9maWxlID0gb3BlbigiJXMvVmVyc2lvbi5oIiAlIG91dHB1dF9kaXIsICd3
JykKLXZlcnNpb25fZmlsZS53cml0ZShmaWxlX2RhdGEpCi12ZXJzaW9uX2ZpbGUuY2xvc2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDFiNWZiNGNmYjc0ODVjYjFjM2Q3MjYz
ZTY5Nzg2NTZhOWIxZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgL2Rldi9udWxsCkBAIC0xLDExODIgKzAsMCBAQAotLy8gISQqVVRGOCokIQotewotCWFyY2hp
dmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDQ2Owot
CW9iamVjdHMgPSB7Ci0KLS8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCi0J
CTNCMjM4RjVGMEU4MjhCNTQwMDg0NkUxMSAvKiBDaGVjayAqLyA9IHsKLQkJCWlzYSA9IFBCWEFn
Z3JlZ2F0ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAzQjIzOEZBMzBFODI4
QkI2MDA4NDZFMTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVU
YXJnZXQgIkNoZWNrIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTNCMjM4RjVFMEU4MjhC
NTQwMDg0NkUxMSAvKiBTaGVsbFNjcmlwdCAqLywKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAo
Ci0JCQkJNDA4OTlGOUQwRkZBNzQwRjAwMEIyOUFFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
Ci0JCQkJNDBDODQ5RjcxMDFBNDM0NDAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
Ci0JCQkJNDA4OUEwOTgwRkZBRDM0QTAwMEIyOUFFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
Ci0JCQkJNDBDODQ5RjkxMDFBNDM0OTAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
Ci0JCQkpOwotCQkJbmFtZSA9IENoZWNrOwotCQkJcHJvZHVjdE5hbWUgPSBDaGVjazsKLQkJfTsK
LQkJNDBDNDRBREMwRTM3OThGNDAwOEZDQzUxIC8qIFZlcnNpb24gSW5mbyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MEM0
NEFFNDBFMzc5OTA1MDA4RkNDNTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIlZlcnNpb24gSW5mbyIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJ
CQk0MEM0NEFEQjBFMzc5OEY0MDA4RkNDNTEgLyogR2VuZXJhdGUgVmVyc2lvbi5oICovLAotCQkJ
KTsKLQkJCWNvbW1lbnRzID0gIlRoZSBnZW5lcmF0aW9uIG9mIFZlcnNpb24uaCBtdXN0IGJlIHBl
cmZvcm1lZCBpbiBpdHMgb3duIHRhcmdldC4gU2luY2UgdGhlIEluZm8ucGxpc3QgaXMgcHJlcHJv
Y2Vzc2VkIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVyIGJ1aWxkIHBoYXNlcyBpbiBndGVzdCwgdGhl
IFZlcnNpb24uaCBmaWxlIHdvdWxkIG5vdCBiZSByZWFkeSBpZiBpbmNsdWRlZCBhcyBhIGJ1aWxk
IHBoYXNlIG9mIHRoYXQgdGFyZ2V0LiI7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJ
bmFtZSA9ICJWZXJzaW9uIEluZm8iOwotCQkJcHJvZHVjdE5hbWUgPSBWZXJzaW9uLmg7Ci0JCX07
Ci0vKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KLQkJMjI0QTEyQTMwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRl
c3QtcGFydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJM0JGNkYyQTAwRTc5QjVBRDAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUg
LyogZ3Rlc3QtdHlwZS11dGlsLmggKi87IH07Ci0JCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAv
KiBndGVzdC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0
MzgwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RCMEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdC1kZWF0aC10ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwotCQk0MDQ4ODQzOTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzREMw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdC1zcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQwNDg4M0REMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCTQwNDg4NDNCMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDA0ODgzREUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQzQzBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3RfcHJlZF9pbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQz
RDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
X3Byb2QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0J
CTQwNDg4NDUwMEUyRjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0Y2MEUyRjc5OUIwMENGNzY1OCAv
KiBSRUFETUUubWQgKi87IH07Ci0JCTQwNDg4NEEwMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1k
ZWF0aC10ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UyMEUyRjc5OUIwMENGNzY1OCAvKiBndGVz
dC1kZWF0aC10ZXN0LWludGVybmFsLmggKi87IH07Ci0JCTQwNDg4NEExMEUyRjdCRTYwMENGNzY1
OCAvKiBndGVzdC1maWxlcGF0aC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3QtZmlsZXBhdGguaCAqLzsgfTsKLQkJNDA0ODg0QTIwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0
LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U0MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1pbnRlcm5h
bC5oICovOyB9OwotCQk0MDQ4ODRBMzBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oIGlu
IENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oICovOyB9OwotCQk0MDQ4
ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0U2MEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLzsgfTsKLQkJNDA0ODg0QUMwRTJGN0NEOTAw
Q0Y3NjU4IC8qIENIQU5HRVMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VTICovOyB9OwotCQk0
MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTgg
LyogQ09OVFJJQlVUT1JTICovOyB9OwotCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBDRjc2NTggLyogTElD
RU5TRSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0
ODg0QUIwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0UgKi87IH07Ci0JCTQwODk5RjNBMEZGQTcw
RDQwMDBCMjlBRSAvKiBndGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNj
ICovOyB9OwotCQk0MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCBpbiBD
b3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDA4OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi87IH07Ci0JCTQwODk5
RjUzMEZGQTcyQTAwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAv
KiBndGVzdF91bml0dGVzdC5jYyAqLzsgfTsKLQkJNDA4OUEwNDQwRkZBRDFCRTAwMEIyOUFFIC8q
IHNhbXBsZTEuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MDg5QTAyQzBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMS5jYyAqLzsgfTsKLQkJNDA4OUEw
NDYwRkZBRDFCRTAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5QTAyRTBGRkFDRjdGMDAwQjI5QUUg
Lyogc2FtcGxlMV91bml0dGVzdC5jYyAqLzsgfTsKLQkJNDBDODQ4RkYxMDFBMjExNTAwODM2NDJB
IC8qIGd0ZXN0LWFsbC5jYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDIyNEExMkExMEU5RUFEQTcwMEJEMTdGRCAvKiBndGVzdC1hbGwuY2MgKi87IH07Ci0J
CTQwQzg0OTE1MTAxQTIxREYwMDgzNjQyQSAvKiBndGVzdF9tYWluLmNjIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0X21haW4uY2MgKi87IH07Ci0JCTQwQzg0OTE2MTAxQTIzNUIwMDgzNjQyQSAvKiBs
aWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MEM4NDkwQjEwMUEyMTdFMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hICovOyB9
OwotCQk0MEM4NDkyMTEwMUEyM0FEMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBDODQ5MEIxMDFBMjE3
RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsKLQkJNDBDODQ5NzgxMDFBMzY1NDAw
ODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21h
aW4uYSAqLzsgfTsKLQkJNDBDODQ5ODAxMDFBMzY4NTAwODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0
LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0IyMzhD
MTIwRTdGRTEzQzAwODQ2RTExIC8qIGd0ZXN0X3VuaXR0ZXN0LmNjICovOyB9OwotCQk0MEM4NDk4
MjEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwQzg0OEZBMTAxQTIwOUMwMDgzNjQyQSAvKiBsaWJn
dGVzdC5hICovOyB9OwotCQk0MEM4NDk4MzEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFp
bi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBD
ODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsKLQkJNDBDODQ5
OEYxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTEuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5QTAyQzBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxl
MS5jYyAqLzsgfTsKLQkJNDBDODQ5OTAxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRl
c3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDg5
QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLzsgfTsKLQkJNDBD
ODQ5OTIxMDFBMzZBNjAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEM4NDhGQTEwMUEyMDlDMDA4MzY0MkEgLyog
bGliZ3Rlc3QuYSAqLzsgfTsKLQkJNDBDODQ5OTMxMDFBMzZBNjAwODM2NDJBIC8qIGxpYmd0ZXN0
X21haW4uYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQwQzg0OTBCMTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgKi87IH07Ci0JCTQw
Qzg0OUEyMTAxQTM3MDUwMDgzNjQyQSAvKiBndGVzdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzhGRjBFQzI3RjY0MDBBNzBG
NEMgLyogZ3Rlc3QuZnJhbWV3b3JrICovOyB9OwotCQk0MEM4NDlBNDEwMUEzNzE1MDA4MzY0MkEg
LyogZ3Rlc3QuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAq
LzsgfTsKLQkJNDUzOUM5MzQwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTMzMEVD
MjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3Qt
bGlua2VkX3B0ci5oICovOyB9OwotCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzYwRUMyODBFMjAwQTcwRjRDIC8qIGd0
ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmggKi87IH07Ci0JCTQ1MzlDOTNBMEVDMjgwRTIwMEE3
MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0QyAv
KiBndGVzdC1wYXJhbS11dGlsLmggKi87IH07Ci0JCTQ1NjdDODE4MTI2NEZGNzEwMDc3NDBCRSAv
KiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDU2N0M4MTcxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlGNjdENEYzRTFD
N0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rl
c3QtcG9ydC1hcmNoLmggKi87IH07Ci0JCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVz
dC1wb3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQt
YXJjaC5oICovOyB9OwotCQlGNjdENEY0NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDEx
QzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKLQkJRjY3RDRGNDUxQzdGNURE
MDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJp
bnRlcnMuaCAqLzsgfTsKLQkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MzFDN0Y1
REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLzsgfTsKLQkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5
IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBn
dGVzdC1wb3J0LmggKi87IH07Ci0JCUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1w
cmludGVycy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBy
aW50ZXJzLmggKi87IH07Ci0vKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQotLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KLQkJNDA4OTlGOUMwRkZBNzQwRjAw
MEIyOUFFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDQwODk5RjQyMEZGQTcxODQwMDBCMjlBRTsKLQkJCXJlbW90ZUluZm8g
PSBndGVzdF91bml0dGVzdDsKLQkJfTsKLQkJNDA4OUEwOTcwRkZBRDM0QTAwMEIyOUFFIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDQwODlBMDEyMEZGQUNFRkMwMDBCMjlBRTsKLQkJCXJlbW90ZUluZm8gPSBzYW1wbGUxX3Vu
aXR0ZXN0OwotCQl9OwotCQk0MDhCRUMwRjEwNDZDRkU5MDBERUY1MjIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDBDODQ4
RjkxMDFBMjA5QzAwODM2NDJBOwotCQkJcmVtb3RlSW5mbyA9ICJndGVzdC1zdGF0aWMiOwotCQl9
OwotCQk0MEM0NEFFNTBFMzc5OTIyMDA4RkNDNTEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJv
eHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDBDNDRBREMwRTM3OThGNDAw
OEZDQzUxOwotCQkJcmVtb3RlSW5mbyA9IFZlcnNpb24uaDsKLQkJfTsKLQkJNDBDODQ5N0MxMDFB
MzY4NTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OEY5MTAxQTIwOUMwMDgzNjQyQTsKLQkJCXJlbW90
ZUluZm8gPSAiZ3Rlc3Qtc3RhdGljIjsKLQkJfTsKLQkJNDBDODQ5N0UxMDFBMzY4NTAwODM2NDJB
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJ
RFN0cmluZyA9IDQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8gPSAiZ3Rl
c3RfbWFpbi1zdGF0aWMiOwotCQl9OwotCQk0MEM4NDk4QjEwMUEzNkE2MDA4MzY0MkEgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwotCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5n
ID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBOwotCQkJcmVtb3RlSW5mbyA9ICJndGVzdC1zdGF0
aWMiOwotCQl9OwotCQk0MEM4NDk4RDEwMUEzNkE2MDA4MzY0MkEgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDBDODQ5MEEx
MDFBMjE3RTAwODM2NDJBOwotCQkJcmVtb3RlSW5mbyA9ICJndGVzdF9tYWluLXN0YXRpYyI7Ci0J
CX07Ci0JCTQwQzg0OTlCMTAxQTM2REMwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlw
cm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA0MEM4NDkwQTEwMUEyMTdF
MDA4MzY0MkE7Ci0JCQlyZW1vdGVJbmZvID0gImd0ZXN0X21haW4tc3RhdGljIjsKLQkJfTsKLQkJ
NDBDODQ5OUQxMDFBMzZFNTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
LQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlw
ZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFE
MDsKLQkJCXJlbW90ZUluZm8gPSAiZ3Rlc3QtZnJhbWV3b3JrIjsKLQkJfTsKLQkJNDBDODQ5OUYx
MDFBMzZGMTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0J
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMDsKLQkJCXJl
bW90ZUluZm8gPSAiZ3Rlc3QtZnJhbWV3b3JrIjsKLQkJfTsKLQkJNDBDODQ5RjYxMDFBNDM0NDAw
ODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDQwQzg0OTdBMTAxQTM2ODUwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8g
PSAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIjsKLQkJfTsKLQkJNDBDODQ5RjgxMDFBNDM0OTAwODM2
NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDQwQzg0OTg5MTAxQTM2QTYwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8gPSAi
c2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwotCQl9OwotLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCQk0MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTggLyogQ29weSBIZWFkZXJzIEludGVybmFs
ICovID0gewotCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlkc3RQYXRoID0gSGVhZGVycy9pbnRlcm5hbDsKLQkJCWRz
dFN1YmZvbGRlclNwZWMgPSA2OwotCQkJZmlsZXMgPSAoCi0JCQkJNDA0ODg0QTAwRTJGN0JFNjAw
Q0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50
ZXJuYWwgKi8sCi0JCQkJNDA0ODg0QTEwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRo
LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAotCQkJCTQwNDg4NEEyMEUyRjdCRTYwMENG
NzY1OCAvKiBndGVzdC1pbnRlcm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKLQkJ
CQk0NTM5QzkzODBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtbGlua2VkX3B0ci5oIGluIENvcHkg
SGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQk0NTM5QzkzOTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rl
c3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCi0J
CQkJNDUzOUM5M0EwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXV0aWwuaCBpbiBDb3B5
IEhlYWRlcnMgSW50ZXJuYWwgKi8sCi0JCQkJRjY3RDRGM0YxQzdGNURBNzAwMTdDNzI5IC8qIGd0
ZXN0LXBvcnQtYXJjaC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQk0MDQ4ODRB
MzBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCAqLywKLQkJCQk0MDQ4ODRBNDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggaW4g
Q29weSBIZWFkZXJzIEludGVybmFsICovLAotCQkJCTQwODk5RjUwMEZGQTcyODEwMDBCMjlBRSAv
KiBndGVzdC10dXBsZS5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQkzQkY2RjJB
MDBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggaW4gQ29weSBIZWFkZXJzIElu
dGVybmFsICovLAotCQkJKTsKLQkJCW5hbWUgPSAiQ29weSBIZWFkZXJzIEludGVybmFsIjsKLQkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQlGNjdENEY0
NzFDN0Y1REY2MDAxN0M3MjkgLyogQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHsK
LQkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwotCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWwvY3VzdG9tOwotCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDY7Ci0JCQlmaWxlcyA9ICgKLQkJCQlGNjdENEY0ODFDN0Y1RTE2MDAx
N0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8s
Ci0JCQkJRjY3RDRGNDkxQzdGNUUyNjAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gQ29w
eSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkNvcHkgSGVh
ZGVycyBJbnRlcm5hbCBDdXN0b20iOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkyMjRBMTJBMTBFOUVB
REE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9ICJndGVzdC1hbGwuY2MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQky
MjRBMTJBMjBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdGVzdC1wYXJ0LmgiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRl
c3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF91bml0dGVz
dC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJM0I4N0QyMTAwRTk2QjkyRTAwMEQx
ODUyIC8qIHJ1bnRlc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSBydW50
ZXN0cy5zaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJM0JGNkYyOUYwRTc5QjVBRDAw
MEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSAiZ3Rlc3QtdHlwZS11dGlsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
QkY2RjJBNDBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlwZWQtdGVzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtdHlwZWQtdGVzdC5oIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDAzRUUzN0MwRTM3NzgyMjAwNEJEMUUyIC8qIHZlcnNpb25nZW5l
cmF0ZS5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IHZlcnNpb25nZW5l
cmF0ZS5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzREIwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gImd0ZXN0LWRlYXRoLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTQwNDg4M0RDMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1tZXNzYWdlLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MDQ4ODNERDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1zcGkuaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4M0RFMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBndGVzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9pbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGd0ZXN0X3ByZWRfaW1wbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODNFMDBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3RfcHJvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBndGVzdF9wcm9k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4M0UyMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9ICJndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZmlsZXBhdGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LWZpbGVwYXRoLmgiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtaW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0
LWludGVybmFsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODNFNTBFMkY3
OTlCMDBDRjc2NTggLyogZ3Rlc3QtcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSAiZ3Rlc3QtcG9ydC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgz
RTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSAiZ3Rlc3Qtc3RyaW5nLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IFJFQURNRS5tZDsgcGF0aCA9IC4uL1JFQURNRS5tZDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwotCQk0MDQ4ODQwRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfbWFpbi5j
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGd0ZXN0X21haW4uY2M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4NEE5MEUyRjdDRDkwMENGNzY1OCAvKiBD
SEFOR0VTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENIQU5HRVM7IHBhdGggPSAuLi9DSEFOR0VT
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTQwNDg4NEFBMEUyRjdDRDkwMENGNzY1
OCAvKiBDT05UUklCVVRPUlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQ09OVFJJQlVUT1JTOyBw
YXRoID0gLi4vQ09OVFJJQlVUT1JTOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTQw
NDg4NEFCMEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IExJQ0VOU0U7IHBhdGggPSAuLi9MSUNFTlNFOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
Ci0JCTQwODk5RjQzMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJndGVzdF91
bml0dGVzdC1mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owot
CQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXR1cGxlLmgiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDg5QTAxMzBG
RkFDRUZDMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhl
Y3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJzYW1wbGUxX3VuaXR0ZXN0LWZy
YW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTQwODlBMDJD
MEZGQUNGN0YwMDBCMjlBRSAvKiBzYW1wbGUxLmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gc2FtcGxlMS5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA4
OUEwMkQwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gc2FtcGxlMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDg5
QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNhbXBsZTFfdW5pdHRlc3QuY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQwQzg0OEZBMTAxQTIwOUMwMDgzNjQyQSAvKiBsaWJndGVzdC5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJndGVzdC5hOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0MEM4NDkwQjEwMUEyMTdFMDA4MzY0MkEgLyogbGli
Z3Rlc3RfbWFpbi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJndGVzdF9tYWlu
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTQwQzg0OTg3MTAxQTM2
ODUwMDgzNjQyQSAvKiBndGVzdF91bml0dGVzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gZ3Rlc3RfdW5pdHRlc3Q7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07Ci0JCTQwQzg0OTk3MTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxX3Vu
aXR0ZXN0LXN0YXRpYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLQkJNDBENENERjEwRTMwRTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1Byb2plY3QueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwRDRDREYyMEUzMEUwNzQwMDI5
NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MEQ0Q0RGMzBFMzBFMDc0MDAyOTQ4MDEgLyogR2VuZXJhbC54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBHZW5lcmFsLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MEQ0Q0RGNDBFMzBFMDc0MDAyOTQ4MDEgLyogUmVsZWFzZVBy
b2plY3QueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUmVsZWFzZVBy
b2plY3QueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwRDRDRjUxMEUz
MEY1RTIwMDI5NDgwMSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBh
dGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NTM5QzhGRjBF
QzI3RjY0MDBBNzBGNEMgLyogZ3Rlc3QuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gZ3Rlc3QuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwotCQk0NTM5QzkzMzBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdGVzdC5o
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRD
IC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LWxpbmtlZF9wdHIuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ1MzlD
OTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQu
aCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
ICJndGVzdC1wYXJhbS11dGlsLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NTY3
QzgxNzEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGNjdENEYzRDFDN0Y1RDhCMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0LWFyY2guaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBn
dGVzdC1wb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1wb3J0
LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNjdENEY0MjFDN0Y1REQwMDAxN0M3
MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LXByaW50ZXJzLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNjdENEY0
MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gZ3Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLS8qIEVuZCBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLwotCQk0MDg5OUY0MTBGRkE3MTg0MDAwQjI5QUUgLyogRnJhbWV3b3JrcyAqLyA9
IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTQwQzg0OUE0MTAxQTM3MTUwMDgzNjQy
QSAvKiBndGVzdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQk0MEM4NDkxNjEwMUEy
MzVCMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwot
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0JCTQwODlB
MDExMEZGQUNFRkMwMDBCMjlBRSAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJ
ZmlsZXMgPSAoCi0JCQkJNDBDODQ5QTIxMDFBMzcwNTAwODM2NDJBIC8qIGd0ZXN0LmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTQwQzg0OTIxMTAxQTIzQUQwMDgzNjQyQSAvKiBsaWJn
dGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJNDBDODQ5ODExMDFBMzY4NTAwODM2NDJB
IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
LQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MEM4
NDk4MjEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovLAotCQkJ
CTQwQzg0OTgzMTAxQTM2ODUwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3Jr
cyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
LQkJfTsKLQkJNDBDODQ5OTExMDFBMzZBNjAwODM2NDJBIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MEM4NDk5MjEwMUEzNkE2MDA4MzY0MkEgLyog
bGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtzICovLAotCQkJCTQwQzg0OTkzMTAxQTM2QTYwMDgzNjQy
QSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8K
LQkJMDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0MEM4NDk4NzEwMUEzNjg1MDA4MzY0MkEg
LyogZ3Rlc3RfdW5pdHRlc3QgKi8sCi0JCQkJNDA4OTlGNDMwRkZBNzE4NDAwMEIyOUFFIC8qIGd0
ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLywKLQkJCQk0MDg5QTAxMzBGRkFDRUZDMDAwQjI5QUUg
Lyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8sCi0JCQkJNDBDODQ5OTcxMDFBMzZBNjAw
ODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljICovLAotCQkJCTQ1MzlDOEZGMEVDMjdG
NjQwMEE3MEY0QyAvKiBndGVzdC5mcmFtZXdvcmsgKi8sCi0JCQkJNDBDODQ4RkExMDFBMjA5QzAw
ODM2NDJBIC8qIGxpYmd0ZXN0LmEgKi8sCi0JCQkJNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8q
IGxpYmd0ZXN0X21haW4uYSAqLywKLQkJCSk7Ci0JCQluYW1lID0gUHJvZHVjdHM7Ci0JCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyog
Z3Rlc3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTQw
RDRDREYwMEUzMEUwNzQwMDI5NDgwMSAvKiBDb25maWcgKi8sCi0JCQkJMDhGQjc3QUNGRTg0MTcw
N0MwMkFBQzA3IC8qIFNvdXJjZSAqLywKLQkJCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAyOTQ4MDEgLyog
UmVzb3VyY2VzICovLAotCQkJCTQwM0VFMzdCMEUzNzc4MjIwMDRCRDFFMiAvKiBTY3JpcHRzICov
LAotCQkJCTAzNDc2OERERkYzOEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0J
CQluYW1lID0gZ3Rlc3Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwOEZC
NzdBQ0ZFODQxNzA3QzAyQUFDMDcgLyogU291cmNlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7
Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdF
UyAqLywKLQkJCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJQlVUT1JTICovLAot
CQkJCTQwNDg4M0Q5MEUyRjc5OUIwMENGNzY1OCAvKiBpbmNsdWRlICovLAotCQkJCTQwNDg4NEFC
MEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovLAotCQkJCTQwODlBMDJGMEZGQUNGODQwMDBC
MjlBRSAvKiBzYW1wbGVzICovLAotCQkJCTQwNDg4NDA3MEUyRjc5OUIwMENGNzY1OCAvKiBzcmMg
Ki8sCi0JCQkJM0IyMzhCRjAwRTdGRTEzQjAwODQ2RTExIC8qIHRlc3QgKi8sCi0JCQkJNDA0ODgz
RjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291
cmNlOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJM0IyMzhCRjAwRTdGRTEz
QjAwODQ2RTExIC8qIHRlc3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCTNCMjM4QzEyMEU3RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAq
LywKLQkJCSk7Ci0JCQluYW1lID0gdGVzdDsKLQkJCXBhdGggPSAuLi90ZXN0OwotCQkJc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOwotCQl9OwotCQk0MDNFRTM3QjBFMzc3ODIyMDA0QkQxRTIgLyog
U2NyaXB0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
M0I4N0QyMTAwRTk2QjkyRTAwMEQxODUyIC8qIHJ1bnRlc3RzLnNoICovLAotCQkJCTQwM0VFMzdD
MEUzNzc4MjIwMDRCRDFFMiAvKiB2ZXJzaW9uZ2VuZXJhdGUucHkgKi8sCi0JCQkpOwotCQkJcGF0
aCA9IFNjcmlwdHM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk0MDQ4ODNE
OTBFMkY3OTlCMDBDRjc2NTggLyogaW5jbHVkZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNDA0ODgzREEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0ICov
LAotCQkJKTsKLQkJCW5hbWUgPSBpbmNsdWRlOwotCQkJcGF0aCA9IC4uL2luY2x1ZGU7Ci0JCQlz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7Ci0JCX07Ci0JCTQwNDg4M0RBMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0J
CQkJNDA0ODgzRTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICovLAotCQkJCTQwNDg4M0RC
MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8sCi0JCQkJNDA0ODgzREMw
RTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCAqLywKLQkJCQk0NTM5QzkzMzBFQzI4
MEFFMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovLAotCQkJCTQ1NjdDODE3MTI2NEZG
NzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovLAotCQkJCTQwNDg4M0REMEUyRjc5OUIw
MENGNzY1OCAvKiBndGVzdC1zcGkuaCAqLywKLQkJCQkyMjRBMTJBMjBFOUVBRENDMDBCRDE3RkQg
LyogZ3Rlc3QtdGVzdC1wYXJ0LmggKi8sCi0JCQkJM0JGNkYyQTQwRTc5QjYxNjAwMEYyRUVFIC8q
IGd0ZXN0LXR5cGVkLXRlc3QuaCAqLywKLQkJCQk0MDQ4ODNERTBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QuaCAqLywKLQkJCQk0MDQ4ODNERjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3RfcHJlZF9p
bXBsLmggKi8sCi0JCQkJNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gZ3Rlc3Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwot
CQl9OwotCQk0MDQ4ODNFMTBFMkY3OTlCMDBDRjc2NTggLyogaW50ZXJuYWwgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUY2N0Q0RjQwMUM3RjVERDAwMDE3
QzcyOSAvKiBjdXN0b20gKi8sCi0JCQkJNDA0ODgzRTIwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCAqLywKLQkJCQk0MDQ4ODNFMzBFMkY3OTlCMDBDRjc2NTgg
LyogZ3Rlc3QtZmlsZXBhdGguaCAqLywKLQkJCQk0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtaW50ZXJuYWwuaCAqLywKLQkJCQk0NTM5QzkzNTBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rl
c3QtbGlua2VkX3B0ci5oICovLAotCQkJCTQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVz
dC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oICovLAotCQkJCTQ1MzlDOTM3MEVDMjgwRTIwMEE3MEY0
QyAvKiBndGVzdC1wYXJhbS11dGlsLmggKi8sCi0JCQkJRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5
IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovLAotCQkJCTQwNDg4M0U1MEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdC1wb3J0LmggKi8sCi0JCQkJNDA0ODgzRTYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LXN0cmluZy5oICovLAotCQkJCTQwODk5RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBs
ZS5oICovLAotCQkJCTNCRjZGMjlGMEU3OUI1QUQwMDBGMkVFRSAvKiBndGVzdC10eXBlLXV0aWwu
aCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gaW50ZXJuYWw7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwotCQl9OwotCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyogc3JjICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkyMjRBMTJBMTBFOUVBREE3MDBC
RDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovLAotCQkJCTQwNDg4NDBEMEUyRjc5OUIwMENGNzY1OCAv
KiBndGVzdF9tYWluLmNjICovLAotCQkJKTsKLQkJCW5hbWUgPSBzcmM7Ci0JCQlwYXRoID0gLi4v
c3JjOwotCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOwotCQl9OwotCQk0MDg5QTAyRjBGRkFD
Rjg0MDAwQjI5QUUgLyogc2FtcGxlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNDA4OUEwMkMwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuY2MgKi8s
Ci0JCQkJNDA4OUEwMkQwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuaCAqLywKLQkJCQk0MDg5
QTAyRTBGRkFDRjdGMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyAqLywKLQkJCSk7Ci0J
CQluYW1lID0gc2FtcGxlczsKLQkJCXBhdGggPSAuLi9zYW1wbGVzOwotCQkJc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOwotCQl9OwotCQk0MEQ0Q0RGMDBFMzBFMDc0MDAyOTQ4MDEgLyogQ29uZmln
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0MEQ0Q0RG
MTBFMzBFMDc0MDAyOTQ4MDEgLyogRGVidWdQcm9qZWN0LnhjY29uZmlnICovLAotCQkJCTQwRDRD
REYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcgKi8sCi0JCQkJ
NDBENENERjMwRTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8sCi0JCQkJNDBE
NENERjQwRTMwRTA3NDAwMjk0ODAxIC8qIFJlbGVhc2VQcm9qZWN0LnhjY29uZmlnICovLAotCQkJ
CTQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmln
ICovLAotCQkJKTsKLQkJCXBhdGggPSBDb25maWc7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwotCQk0MEQ0Q0Y0RTBFMzBGNUUyMDAyOTQ4MDEgLyogUmVzb3VyY2VzICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0MEQ0Q0Y1MTBFMzBGNUUy
MDAyOTQ4MDEgLyogSW5mby5wbGlzdCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gUmVzb3VyY2VzOwot
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJRjY3RDRGNDAxQzdGNUREMDAwMTdD
NzI5IC8qIGN1c3RvbSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJRjY3RDRGNDExQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCAqLywKLQkJCQlG
NjdENEY0MjFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKLQkJCQlGNjdE
NEY0MzFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY3Vz
dG9tOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhHcm91cCBz
ZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJ
OEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhI
ZWFkZXJzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlm
aWxlcyA9ICgKLQkJCQk0MDQ4ODQzODBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVz
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LW1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0QyAv
KiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGNjdENEYzRTFDN0Y1RDhC
MDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC1hcmNoLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNjdENEY0
NDFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3QtcG9ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjY3
RDRGNDUxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAqLywK
LQkJCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQwNDg4NDNBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zcGkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBh
cnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTNCRjZGMkE1MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVz
dC10eXBlZC10ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGNjdENEY0NjFDN0Y1REQwMDAxN0M3
MjkgLyogZ3Rlc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQwNDg4NDNCMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4
IC8qIGd0ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDA0ODg0M0QwRTJGNzk5
QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovLAotCQkJKTsKLQkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEhlYWRl
cnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rp
b24gKi8KLQkJNDA4OTlGNDIwRkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1l
d29yayAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSA0MDg5OUY0QTBGRkE3MUJDMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayIgKi87
Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk0MDg5OUY0MDBGRkE3MTg0MDAwQjI5QUUgLyogU291
cmNlcyAqLywKLQkJCQk0MDg5OUY0MTBGRkE3MTg0MDAwQjI5QUUgLyogRnJhbWV3b3JrcyAqLywK
LQkJCSk7Ci0JCQlidWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJ
CQk0MEM4NDlBMDEwMUEzNkYxMDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJ
CSk7Ci0JCQluYW1lID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7Ci0JCQlwcm9kdWN0TmFt
ZSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQwODk5RjQzMEZGQTcx
ODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlw
ZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9OwotCQk0MDg5QTAxMjBGRkFD
RUZDMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDA4OUEwMjQw
RkZBQ0YwMTAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayIgKi87Ci0JCQlidWlsZFBoYXNlcyA9
ICgKLQkJCQk0MDg5QTAxMDBGRkFDRUZDMDAwQjI5QUUgLyogU291cmNlcyAqLywKLQkJCQk0MDg5
QTAxMTBGRkFDRUZDMDAwQjI5QUUgLyogRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlidWlsZFJ1
bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJCQk0MEM4NDk5RTEwMUEzNkU1
MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJCSk7Ci0JCQluYW1lID0gInNh
bXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKLQkJCXByb2R1Y3ROYW1lID0gc2FtcGxlMV91bml0
dGVzdDsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA0MDg5QTAxMzBGRkFDRUZDMDAwQjI5QUUgLyog
c2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBw
bGUucHJvZHVjdC10eXBlLnRvb2wiOwotCQl9OwotCQk0MEM4NDhGOTEwMUEyMDlDMDA4MzY0MkEg
LyogZ3Rlc3Qtc3RhdGljICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTAyMTAxQTIxMkUwMDgzNjQyQSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3Qtc3RhdGljIiAqLzsK
LQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTQwQzg0OEY3MTAxQTIwOUMwMDgzNjQyQSAvKiBTb3Vy
Y2VzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVz
ID0gKAotCQkJKTsKLQkJCW5hbWUgPSAiZ3Rlc3Qtc3RhdGljIjsKLQkJCXByb2R1Y3ROYW1lID0g
Imd0ZXN0LXN0YXRpYyI7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gNDBDODQ4RkExMDFBMjA5QzAw
ODM2NDJBIC8qIGxpYmd0ZXN0LmEgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJv
ZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKLQkJfTsKLQkJNDBDODQ5MEExMDFBMjE3RTAwODM2
NDJBIC8qIGd0ZXN0X21haW4tc3RhdGljICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTEyMTAxQTIxRDIwMDgzNjQyQSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfbWFp
bi1zdGF0aWMiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJNDBDODQ5MDgxMDFBMjE3RTAw
ODM2NDJBIC8qIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0J
CQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9ICJndGVzdF9tYWluLXN0YXRpYyI7
Ci0JCQlwcm9kdWN0TmFtZSA9ICJndGVzdF9tYWluLXN0YXRpYyI7Ci0JCQlwcm9kdWN0UmVmZXJl
bmNlID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsKLQkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOwot
CQl9OwotCQk0MEM4NDk3QTEwMUEzNjg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3Qtc3RhdGlj
ICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDQwQzg0OTg0MTAxQTM2ODUwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIiAqLzsKLQkJCWJ1
aWxkUGhhc2VzID0gKAotCQkJCTQwQzg0OTdGMTAxQTM2ODUwMDgzNjQyQSAvKiBTb3VyY2VzICov
LAotCQkJCTQwQzg0OTgxMTAxQTM2ODUwMDgzNjQyQSAvKiBGcmFtZXdvcmtzICovLAotCQkJKTsK
LQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTQwQzg0
OTdCMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJCTQwQzg0
OTdEMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJ
CW5hbWUgPSAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIjsKLQkJCXByb2R1Y3ROYW1lID0gZ3Rlc3Rf
dW5pdHRlc3Q7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gNDBDODQ5ODcxMDFBMzY4NTAwODM2NDJB
IC8qIGd0ZXN0X3VuaXR0ZXN0ICovOwotCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKLQkJfTsKLQkJNDBDODQ5ODkxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBs
ZTFfdW5pdHRlc3Qtc3RhdGljICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwQzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVz
dC1zdGF0aWMiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJNDBDODQ5OEUxMDFBMzZBNjAw
ODM2NDJBIC8qIFNvdXJjZXMgKi8sCi0JCQkJNDBDODQ5OTExMDFBMzZBNjAwODM2NDJBIC8qIEZy
YW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRl
bmNpZXMgPSAoCi0JCQkJNDBDODQ5OEExMDFBMzZBNjAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCi0JCQkJNDBDODQ5OEMxMDFBMzZBNjAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7Ci0J
CQlwcm9kdWN0TmFtZSA9IHNhbXBsZTFfdW5pdHRlc3Q7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0g
NDBDODQ5OTcxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljICovOwot
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLQkJfTsKLQkJ
OEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8qIGd0ZXN0LWZyYW1ld29yayAqLyA9IHsKLQkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0RkFEQzI0
MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk4
RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNlcyAqLywKLQkJCQk4RDA3RjJCRDA0ODZD
QzdBMDA3Q0QxRDAgLyogSGVhZGVycyAqLywKLQkJCQk0MDQ4ODRBNTBFMkY3QzA0MDBDRjc2NTgg
LyogQ29weSBIZWFkZXJzIEludGVybmFsICovLAotCQkJCUY2N0Q0RjQ3MUM3RjVERjYwMDE3Qzcy
OSAvKiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAotCQkJCThEMDdGMkJGMDQ4NkND
N0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJ
CSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDBDNDRBRTYwRTM3OTkyMjAwOEZDQzUxIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkJNDA4QkVDMTAxMDQ2Q0ZFOTAwREVGNTIyIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkJNDBDODQ5OUMxMDFBMzZEQzAwODM2NDJBIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9ICJndGVzdC1mcmFtZXdv
cmsiOwotCQkJcHJvZHVjdEluc3RhbGxQYXRoID0gIiQoSE9NRSkvTGlicmFyeS9GcmFtZXdvcmtz
IjsKLQkJCXByb2R1Y3ROYW1lID0gZ3Rlc3Q7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gNDUzOUM4
RkYwRUMyN0Y2NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAqLzsKLQkJCXByb2R1Y3RUeXBl
ID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKLQkJfTsKLS8qIEVuZCBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
LQkJMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewotCQkJ
aXNhID0gUEJYUHJvamVjdDsKLQkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJTGFzdFVwZ3JhZGVDaGVj
ayA9IDA0NjA7Ci0JCQl9OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDRGQURDMjQ2MDhC
NDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3Qg
Imd0ZXN0IiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7Ci0JCQlk
ZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7Ci0JCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0g
MTsKLQkJCWtub3duUmVnaW9ucyA9ICgKLQkJCQlFbmdsaXNoLAotCQkJCUphcGFuZXNlLAotCQkJ
CUZyZW5jaCwKLQkJCQlHZXJtYW4sCi0JCQkJZW4sCi0JCQkpOwotCQkJbWFpbkdyb3VwID0gMDg2
N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIGd0ZXN0ICovOwotCQkJcHJvZHVjdFJlZkdyb3VwID0g
MDM0NzY4RERGRjM4QTQ1QTExREI5QzhCIC8qIFByb2R1Y3RzICovOwotCQkJcHJvamVjdERpclBh
dGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7Ci0JCQl0YXJnZXRzID0gKAotCQkJCThEMDdG
MkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBndGVzdC1mcmFtZXdvcmsgKi8sCi0JCQkJNDBDODQ4Rjkx
MDFBMjA5QzAwODM2NDJBIC8qIGd0ZXN0LXN0YXRpYyAqLywKLQkJCQk0MEM4NDkwQTEwMUEyMTdF
MDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi1zdGF0aWMgKi8sCi0JCQkJNDA4OTlGNDIwRkZBNzE4NDAw
MEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLywKLQkJCQk0MEM4NDk3QTEwMUEz
Njg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljICovLAotCQkJCTQwODlBMDEyMEZG
QUNFRkMwMDBCMjlBRSAvKiBzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayAqLywKLQkJCQk0MEM4
NDk4OTEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxlMV91bml0dGVzdC1zdGF0aWMgKi8sCi0JCQkJ
M0IyMzhGNUYwRTgyOEI1NDAwODQ2RTExIC8qIENoZWNrICovLAotCQkJCTQwQzQ0QURDMEUzNzk4
RjQwMDhGQ0M1MSAvKiBWZXJzaW9uIEluZm8gKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQkJOEQwN0YyQkYwNDg2Q0M3QTAwN0NEMUQwIC8qIFJlc291cmNlcyAqLyA9IHsKLQkJ
CWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDA0ODg0QUMwRTJGN0NEOTAwQ0Y3NjU4IC8qIENI
QU5HRVMgaW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFEMEUyRjdDRDkwMENGNzY1OCAvKiBD
T05UUklCVVRPUlMgaW4gUmVzb3VyY2VzICovLAotCQkJCTQwQzg0OTc4MTAxQTM2NTQwMDgzNjQy
QSAvKiBsaWJndGVzdF9tYWluLmEgaW4gUmVzb3VyY2VzICovLAotCQkJCTQwNDg4NEFFMEUyRjdD
RDkwMENGNzY1OCAvKiBMSUNFTlNFIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODQ1MDBFMkY3
OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KLQkJM0IyMzhGNUUwRTgyOEI1NDAwODQ2RTExIC8qIFNoZWxsU2Ny
aXB0ICovID0gewotCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwotCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCWlucHV0UGF0
aHMgPSAoCi0JCQkpOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJ
c2hlbGxTY3JpcHQgPSAiIyBSZW1lbWJlciwgdGhpcyBcIlJ1biBTY3JpcHRcIiBidWlsZCBwaGFz
ZSB3aWxsIGJlIGV4ZWN1dGVkIGZyb20gJFNSQ1JPT1Rcbi9iaW4vYmFzaCBTY3JpcHRzL3J1bnRl
c3RzLnNoIjsKLQkJfTsKLQkJNDBDNDRBREIwRTM3OThGNDAwOEZDQzUxIC8qIEdlbmVyYXRlIFZl
cnNpb24uaCAqLyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKLQkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1
dFBhdGhzID0gKAotCQkJCSIkKFNSQ1JPT1QpL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5IiwK
LQkJCQkiJChTUkNST09UKS8uLi9jb25maWd1cmUuYWMiLAotCQkJKTsKLQkJCW5hbWUgPSAiR2Vu
ZXJhdGUgVmVyc2lvbi5oIjsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJCSIkKFBST0pFQ1RfVEVN
UF9ESVIpL1ZlcnNpb24uaCIsCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAi
IyBSZW1lbWJlciwgdGhpcyBcIlJ1biBTY3JpcHRcIiBidWlsZCBwaGFzZSB3aWxsIGJlIGV4ZWN1
dGVkIGZyb20gJFNSQ1JPT1Rcbi91c3IvYmluL3B5dGhvbjMgU2NyaXB0cy92ZXJzaW9uZ2VuZXJh
dGUucHkgLi4vICRQUk9KRUNUX1RFTVBfRElSIjsKLQkJfTsKLS8qIEVuZCBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCi0JCTQwODk5RjQwMEZGQTcxODQwMDBCMjlBRSAvKiBTb3VyY2VzICovID0gewot
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDA4OTlGNTMwRkZBNzJBMDAwMEIyOUFFIC8qIGd0
ZXN0X3VuaXR0ZXN0LmNjIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0JCTQwODlBMDEwMEZGQUNFRkMwMDBCMjlB
RSAvKiBTb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDA4OUEwNDQw
RkZBRDFCRTAwMEIyOUFFIC8qIHNhbXBsZTEuY2MgaW4gU291cmNlcyAqLywKLQkJCQk0MDg5QTA0
NjBGRkFEMUJFMDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovLAot
CQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9Owot
CQk0MEM4NDhGNzEwMUEyMDlDMDA4MzY0MkEgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJ
CWZpbGVzID0gKAotCQkJCTQwQzg0OEZGMTAxQTIxMTUwMDgzNjQyQSAvKiBndGVzdC1hbGwuY2Mg
aW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKLQkJfTsKLQkJNDBDODQ5MDgxMDFBMjE3RTAwODM2NDJBIC8qIFNvdXJjZXMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MEM4NDkxNTEwMUEyMURGMDA4MzY0MkEg
LyogZ3Rlc3RfbWFpbi5jYyBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk0MEM4NDk3RjEwMUEzNjg1MDA4MzY0
MkEgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTQwQzg0OTgw
MTAxQTM2ODUwMDgzNjQyQSAvKiBndGVzdF91bml0dGVzdC5jYyBpbiBTb3VyY2VzICovLAotCQkJ
KTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk0
MEM4NDk4RTEwMUEzNkE2MDA4MzY0MkEgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZp
bGVzID0gKAotCQkJCTQwQzg0OThGMTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDBDODQ5OTAxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRl
c3QuY2MgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJj
ZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MDg5OUYzQTBGRkE3MEQ0MDAw
QjI5QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KLQkJNDA4OTlGOUQwRkZBNzQwRjAwMEIyOUFFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gNDA4OTlG
NDIwRkZBNzE4NDAwMEIyOUFFIC8qIGd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNDA4OTlGOUMwRkZBNzQwRjAwMEIyOUFFIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLQkJNDA4OUEwOTgwRkZBRDM0QTAwMEIyOUFFIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gNDA4OUEwMTIwRkZBQ0VGQzAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3Jr
ICovOwotCQkJdGFyZ2V0UHJveHkgPSA0MDg5QTA5NzBGRkFEMzRBMDAwQjI5QUUgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotCQk0MDhCRUMxMDEwNDZDRkU5MDBERUY1MjIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
Ci0JCQl0YXJnZXQgPSA0MEM4NDhGOTEwMUEyMDlDMDA4MzY0MkEgLyogZ3Rlc3Qtc3RhdGljICov
OwotCQkJdGFyZ2V0UHJveHkgPSA0MDhCRUMwRjEwNDZDRkU5MDBERUY1MjIgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM0NEFFNjBFMzc5OTIyMDA4RkNDNTEgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0J
CQl0YXJnZXQgPSA0MEM0NEFEQzBFMzc5OEY0MDA4RkNDNTEgLyogVmVyc2lvbiBJbmZvICovOwot
CQkJdGFyZ2V0UHJveHkgPSA0MEM0NEFFNTBFMzc5OTIyMDA4RkNDNTEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM4NDk3QjEwMUEzNjg1MDA4MzY0MkEgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0
YXJnZXQgPSA0MEM4NDhGOTEwMUEyMDlDMDA4MzY0MkEgLyogZ3Rlc3Qtc3RhdGljICovOwotCQkJ
dGFyZ2V0UHJveHkgPSA0MEM4NDk3QzEwMUEzNjg1MDA4MzY0MkEgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovOwotCQl9OwotCQk0MEM4NDk3RDEwMUEzNjg1MDA4MzY0MkEgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJn
ZXQgPSA0MEM4NDkwQTEwMUEyMTdFMDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi1zdGF0aWMgKi87Ci0J
CQl0YXJnZXRQcm94eSA9IDQwQzg0OTdFMTAxQTM2ODUwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi87Ci0JCX07Ci0JCTQwQzg0OThBMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRh
cmdldCA9IDQwQzg0OEY5MTAxQTIwOUMwMDgzNjQyQSAvKiBndGVzdC1zdGF0aWMgKi87Ci0JCQl0
YXJnZXRQcm94eSA9IDQwQzg0OThCMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87Ci0JCX07Ci0JCTQwQzg0OThDMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdl
dCA9IDQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQSAvKiBndGVzdF9tYWluLXN0YXRpYyAqLzsKLQkJ
CXRhcmdldFByb3h5ID0gNDBDODQ5OEQxMDFBMzZBNjAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5OUMxMDFBMzZEQzAwODM2NDJBIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFy
Z2V0ID0gNDBDODQ5MEExMDFBMjE3RTAwODM2NDJBIC8qIGd0ZXN0X21haW4tc3RhdGljICovOwot
CQkJdGFyZ2V0UHJveHkgPSA0MEM4NDk5QjEwMUEzNkRDMDA4MzY0MkEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM4NDk5RTEwMUEzNkU1MDA4MzY0MkEgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0
YXJnZXQgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDAgLyogZ3Rlc3QtZnJhbWV3b3JrICovOwot
CQkJdGFyZ2V0UHJveHkgPSA0MEM4NDk5RDEwMUEzNkU1MDA4MzY0MkEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM4NDlBMDEwMUEzNkYxMDA4MzY0MkEgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0
YXJnZXQgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDAgLyogZ3Rlc3QtZnJhbWV3b3JrICovOwot
CQkJdGFyZ2V0UHJveHkgPSA0MEM4NDk5RjEwMUEzNkYxMDA4MzY0MkEgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM4NDlGNzEwMUE0MzQ0MDA4MzY0MkEgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0
YXJnZXQgPSA0MEM4NDk3QTEwMUEzNjg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3Qtc3RhdGlj
ICovOwotCQkJdGFyZ2V0UHJveHkgPSA0MEM4NDlGNjEwMUE0MzQ0MDA4MzY0MkEgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotCQk0MEM4NDlGOTEwMUE0MzQ5MDA4MzY0MkEgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
Ci0JCQl0YXJnZXQgPSA0MEM4NDk4OTEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxlMV91bml0dGVz
dC1zdGF0aWMgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDQwQzg0OUY4MTAxQTQzNDkwMDgzNjQyQSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0vKiBFbmQgUEJYVGFyZ2V0RGVwZW5k
ZW5jeSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24g
Ki8KLQkJM0IyMzhGNjAwRTgyOEI1NDAwODQ2RTExIC8qIERlYnVnICovID0gewotCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPTUJJTkVf
SElEUElfSU1BR0VTID0gWUVTOwotCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKLQkJCQlHQ0Nf
RFlOQU1JQ19OT19QSUMgPSBOTzsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKLQkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJ
UFJPRFVDVF9OQU1FID0gQ2hlY2s7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQlu
YW1lID0gRGVidWc7Ci0JCX07Ci0JCTNCMjM4RjYxMEU4MjhCNTQwMDg0NkUxMSAvKiBSZWxlYXNl
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdz
ID0gewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwotCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBZRVM7Ci0JCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5
bSI7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OwotCQkJCVBST0RVQ1RfTkFNRSA9IENoZWNrOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJ
WkVST19MSU5LID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwODk5
RjQ1MEZGQTcxODUwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9
IC4uLzsKLQkJCQlQUk9EVUNUX05BTUUgPSAiZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrIjsKLQkJ
CQlTREtST09UID0gbWFjb3N4OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDA4
OTlGNDYwRkZBNzE4NTAwMEIyOUFFIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAuLi87Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7
Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
LQkJNDA4OUEwMTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlQUk9EVUNUX05BTUUg
PSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0J
CQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUg
LyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVp
bGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2
bS5jbGFuZy4xXzA7Ci0JCQkJUFJPRFVDVF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3
b3JrIjsKLQkJCQlTREtST09UID0gbWFjb3N4OwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwot
CQl9OwotCQk0MEM0NEFERjBFMzc5OEY0MDA4RkNDNTEgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09NQklO
RV9ISURQSV9JTUFHRVMgPSBZRVM7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7
Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCQlU
QVJHRVRfTkFNRSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDBD
NDRBRTAwRTM3OThGNDAwOEZDQzUxIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCQlUQVJHRVRfTkFN
RSA9IGd0ZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MEM4NDhGQjEw
MUEyMDlEMDA4MzY0MkEgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAw
MEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRp
bmdzID0gewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwotCQkJCUdDQ19JTkxJTkVT
X0FSRV9QUklWQVRFX0VYVEVSTiA9IFlFUzsKLQkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVS
TiA9IFlFUzsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKLQkJCQkJLi4vLAotCQkJCQkuLi9p
bmNsdWRlLywKLQkJCQkpOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVNES1JPT1Qg
PSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk0MEM4NDhGQzEwMUEy
MDlEMDA4MzY0MkEgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAw
QjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGlu
Z3MgPSB7Ci0JCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7Ci0JCQkJR0NDX0lOTElORVNf
QVJFX1BSSVZBVEVfRVhURVJOID0gWUVTOwotCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJO
ID0gWUVTOwotCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKLQkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAotCQkJCQkuLi8sCi0JCQkJCS4uL2lu
Y2x1ZGUvLAotCQkJCSk7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJU0RLUk9PVCA9
IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ5MEUxMDFB
MjE3RjAwODM2NDJBIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBC
MjlBRSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5n
cyA9IHsKLQkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKLQkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICgKLQkJCQkJLi4vLAotCQkJCQkuLi9pbmNsdWRlLywKLQkJCQkpOwotCQkJCVBST0RV
Q1RfTkFNRSA9IGd0ZXN0X21haW47Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQlu
YW1lID0gRGVidWc7Ci0JCX07Ci0JCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBSZWxlYXNl
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlBRSAvKiBTdGF0aWNMaWJyYXJ5
VGFyZ2V0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT01CSU5FX0hJ
RFBJX0lNQUdFUyA9IFlFUzsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKLQkJCQkJLi4vLAot
CQkJCQkuLi9pbmNsdWRlLywKLQkJCQkpOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X21haW47
Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
LQkJNDBDODQ5ODUxMDFBMzY4NTAwODM2NDJBIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gLi4vOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0X3VuaXR0ZXN0OwotCQkJCVNE
S1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk0MEM4NDk4
NjEwMUEzNjg1MDA4MzY0MkEgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9
IC4uLzsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF91bml0dGVzdDsKLQkJCQlTREtST09UID0g
bWFjb3N4OwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MEM4NDk5NTEwMUEz
NkE2MDA4MzY0MkEgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0
ZXN0LXN0YXRpYyI7Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gRGVi
dWc7Ci0JCX07Ci0JCTQwQzg0OTk2MTAxQTM2QTYwMDgzNjQyQSAvKiBSZWxlYXNlICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlQ
Uk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwotCQkJCVNES1JPT1QgPSBt
YWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTRGQURDMjQzMDhCNDE1
NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MEQ0Q0RGMjBFMzBFMDc0MDAyOTQ4
MDEgLyogRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsK
LQkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKLQkJCQlEWUxJQl9DT01QQVRJQklMSVRZ
X1ZFUlNJT04gPSAxOwotCQkJCURZTElCX0NVUlJFTlRfVkVSU0lPTiA9IDE7Ci0JCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSAoCi0JCQkJCS4uLywKLQkJCQkJLi4vaW5jbHVkZS8sCi0JCQkJKTsKLQkJ
CQlJTkZPUExJU1RfRklMRSA9IFJlc291cmNlcy9JbmZvLnBsaXN0OwotCQkJCUlORk9QTElTVF9Q
UkVGSVhfSEVBREVSID0gIiQoUFJPSkVDVF9URU1QX0RJUikvVmVyc2lvbi5oIjsKLQkJCQlJTkZP
UExJU1RfUFJFUFJPQ0VTUyA9IFlFUzsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJCQlT
REtST09UID0gbWFjb3N4OwotCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVyaWMi
OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNEZBREMyNDQwOEI0MTU2RDAwQUJF
NTVFIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8q
IEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJ
Q09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJT
SU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gKAotCQkJCQkuLi8sCi0JCQkJCS4uL2luY2x1ZGUvLAotCQkJCSk7Ci0JCQkJSU5G
T1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKLQkJCQlJTkZPUExJU1RfUFJFRklY
X0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7Ci0JCQkJSU5GT1BMSVNU
X1BSRVBST0NFU1MgPSBZRVM7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJU0RLUk9P
VCA9IG1hY29zeDsKLQkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKLQkJ
CX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNEZBREMyNDcwOEI0MTU2RDAwQUJFNTVF
IC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREYxMEUzMEUwNzQwMDI5NDgwMSAvKiBEZWJ1
Z1Byb2plY3QueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKLQkJCQlDTEFOR19DWFhfTElCUkFSWSA9
ICJsaWJjKysiOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7Ci0JCQl9Owot
CQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk0RkFEQzI0ODA4QjQxNTZEMDBBQkU1NUUgLyogUmVs
ZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA0MEQ0Q0RGNDBFMzBFMDc0MDAyOTQ4MDEgLyogUmVsZWFzZVBy
b2plY3QueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNMQU5HX0NYWF9M
QU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKLQkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJs
aWJjKysiOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7Ci0JCQl9OwotCQkJ
bmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwotCi0vKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQkJM0IyMzhG
QTMwRTgyOEJCNjAwODQ2RTExIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJDaGVjayIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0
OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQkzQjIzOEY2MDBFODI4QjU0MDA4NDZF
MTEgLyogRGVidWcgKi8sCi0JCQkJM0IyMzhGNjEwRTgyOEI1NDAwODQ2RTExIC8qIFJlbGVhc2Ug
Ki8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDA4OTlGNEEwRkZBNzFC
QzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDA4OTlGNDUwRkZBNzE4
NTAwMEIyOUFFIC8qIERlYnVnICovLAotCQkJCTQwODk5RjQ2MEZGQTcxODUwMDBCMjlBRSAvKiBS
ZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsK
LQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwODlBMDI0
MEZGQUNGMDEwMDBCMjlBRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiICovID0gewotCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDA4OUEw
MTUwRkZBQ0VGRDAwMEIyOUFFIC8qIERlYnVnICovLAotCQkJCTQwODlBMDE2MEZGQUNFRkQwMDBC
MjlBRSAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0J
CTQwQzQ0QUU0MEUzNzk5MDUwMDhGQ0M1MSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVmVyc2lvbiBJbmZvIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTQwQzQ0QURG
MEUzNzk4RjQwMDhGQ0M1MSAvKiBEZWJ1ZyAqLywKLQkJCQk0MEM0NEFFMDBFMzc5OEY0MDA4RkND
NTEgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0
MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk0MEM4NDhGQjEwMUEy
MDlEMDA4MzY0MkEgLyogRGVidWcgKi8sCi0JCQkJNDBDODQ4RkMxMDFBMjA5RDAwODM2NDJBIC8q
IFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ5
MTIxMDFBMjFEMjAwODM2NDJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJndGVzdF9tYWluLXN0YXRpYyIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk0MEM4NDkwRTEwMUEy
MTdGMDA4MzY0MkEgLyogRGVidWcgKi8sCi0JCQkJNDBDODQ5MEYxMDFBMjE3RjAwODM2NDJBIC8q
IFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ5
ODQxMDFBMzY4NTAwODM2NDJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1zdGF0aWMiICovID0gewotCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDBDODQ5ODUx
MDFBMzY4NTAwODM2NDJBIC8qIERlYnVnICovLAotCQkJCTQwQzg0OTg2MTAxQTM2ODUwMDgzNjQy
QSAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQw
Qzg0OTk0MTAxQTM2QTYwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiICovID0gewotCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDBD
ODQ5OTUxMDFBMzZBNjAwODM2NDJBIC8qIERlYnVnICovLAotCQkJCTQwQzg0OTk2MTAxQTM2QTYw
MDgzNjQyQSAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07
Ci0JCTRGQURDMjQyMDhCNDE1NkQwMEFCRTU1RSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rlc3QtZnJhbWV3b3JrIiAqLyA9IHsKLQkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTRGQURD
MjQzMDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKLQkJCQk0RkFEQzI0NDA4QjQxNTZEMDBB
QkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9Owot
CQk0RkFEQzI0NjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhQcm9qZWN0ICJndGVzdCIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0
OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk0RkFEQzI0NzA4QjQxNTZEMDBBQkU1
NUUgLyogRGVidWcgKi8sCi0JCQkJNEZBREMyNDgwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2Ug
Ki8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KLQl9OwotCXJvb3RPYmplY3QgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvdHJhdmlzLnNo
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L3RyYXZpcy5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmRlY2JkOTY0ZGI4
ZDZiMTFiZmQyMzgwMTIxNzkyNTdkNzkwNTYyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvdHJhdmlzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgc2gKLXNldCAtZXZ4Ci1lbnYgfCBzb3J0Ci0KLW1rZGlyIGJ1
aWxkIHx8IHRydWUKLW1rZGlyIGJ1aWxkLyRHVEVTVF9UQVJHRVQgfHwgdHJ1ZQotY2QgYnVpbGQv
JEdURVNUX1RBUkdFVAotY21ha2UgLURndGVzdF9idWlsZF9zYW1wbGVzPU9OIFwKLSAgICAgIC1E
Z21vY2tfYnVpbGRfc2FtcGxlcz1PTiBcCi0gICAgICAtRGd0ZXN0X2J1aWxkX3Rlc3RzPU9OIFwK
LSAgICAgIC1EZ21vY2tfYnVpbGRfdGVzdHM9T04gXAotICAgICAgLURDTUFLRV9DWFhfRkxBR1M9
JENYWF9GTEFHUyBcCi0gICAgICAuLi8uLi8kR1RFU1RfVEFSR0VUCi1tYWtlCi1DVEVTVF9PVVRQ
VVRfT05fRkFJTFVSRT0xIG1ha2UgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9MSUNFTlNFIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxl
bC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjQ1Njk1NjczMzQ5ZTM5
NDdlOGU1YWU0MjMzMmQwYWMzMTY0Y2Q3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ3Rlc3QtcGFyYWxsZWwvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCww
IEBACi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCi0KLSAg
IFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJV
VElPTgotCi0gICAxLiBEZWZpbml0aW9ucy4KLQotICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4g
dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKLSAgICAgIGFu
ZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlz
IGRvY3VtZW50LgotCi0gICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBv
d25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQotICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0
aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgotCi0gICAgICAiTGVnYWwgRW50aXR5IiBzaGFs
bCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCi0gICAgICBvdGhl
ciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIg
Y29tbW9uCi0gICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMg
b2YgdGhpcyBkZWZpbml0aW9uLAotICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIs
IGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCi0gICAgICBkaXJlY3Rpb24gb3IgbWFu
YWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgotICAgICAgb3Ro
ZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUg
b2YgdGhlCi0gICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3du
ZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgotCi0gICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBt
ZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5Ci0gICAgICBleGVyY2lzaW5nIHBlcm1p
c3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgotCi0gICAgICAiU291cmNlIiBmb3JtIHNo
YWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKLSAg
ICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRv
Y3VtZW50YXRpb24KLSAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0KLSAg
ICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNo
YW5pY2FsCi0gICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBm
b3JtLCBpbmNsdWRpbmcgYnV0Ci0gICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3Qg
Y29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCi0gICAgICBhbmQgY29udmVyc2lvbnMgdG8g
b3RoZXIgbWVkaWEgdHlwZXMuCi0KLSAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9m
IGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCi0gICAgICBPYmplY3QgZm9ybSwgbWFk
ZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCi0gICAgICBj
b3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdv
cmsKLSAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdyku
Ci0KLSAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVy
IGluIFNvdXJjZSBvciBPYmplY3QKLSAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRl
cml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKLSAgICAgIGVkaXRvcmlhbCBy
ZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlv
bnMKLSAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRo
b3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCi0gICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRp
dmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KLSAgICAgIHNlcGFy
YWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJm
YWNlcyBvZiwKLSAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCi0K
LSAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwg
aW5jbHVkaW5nCi0gICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55
IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCi0gICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZh
dGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKLSAgICAgIHN1Ym1pdHRl
ZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQg
b3duZXIKLSAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6
ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgotICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9y
IHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCi0gICAgICBtZWFu
cyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlv
biBzZW50Ci0gICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5j
bHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bwotICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJv
bmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKLSAgICAgIGFu
ZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFs
ZiBvZiwgdGhlCi0gICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBh
bmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKLSAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9u
IHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCi0gICAgICBkZXNpZ25h
dGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0
aW9uLiIKLQotICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkg
aW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKLSAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29u
dHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAotICAgICAgc3Vic2Vx
dWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCi0KLSAgIDIuIEdyYW50IG9mIENv
cHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgot
ICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91
IGEgcGVycGV0dWFsLAotICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2Us
IHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKLSAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJl
cHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAotICAgICAgcHVibGljbHkgZGlz
cGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCi0g
ICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBm
b3JtLgotCi0gICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVy
bXMgYW5kIGNvbmRpdGlvbnMgb2YKLSAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRv
ciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKLSAgICAgIHdvcmxkd2lkZSwgbm9u
LWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCi0gICAgICAo
ZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2Us
IGhhdmUgbWFkZSwKLSAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQg
b3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAotICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFw
cGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKLSAgICAgIGJ5IHN1
Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCi0g
ICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29u
dHJpYnV0aW9uKHMpCi0gICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0
aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQotICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRp
Z2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKLSAgICAgIGNyb3NzLWNsYWlt
IG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKLSAg
ICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3Rp
dHV0ZXMgZGlyZWN0Ci0gICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwg
dGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCi0gICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlz
IExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKLSAgICAgIGFzIG9mIHRoZSBk
YXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KLQotICAgNC4gUmVkaXN0cmlidXRpb24uIFlv
dSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKLSAgICAgIFdvcmsg
b3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91
dAotICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJv
dmlkZWQgdGhhdCBZb3UKLSAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0g
ICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBv
cgotICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5k
Ci0KLSAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2Fycnkg
cHJvbWluZW50IG5vdGljZXMKLSAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhl
IGZpbGVzOyBhbmQKLQotICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBm
b3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCi0gICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0
ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAotICAgICAgICAgIGF0dHJp
YnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCi0gICAgICAg
ICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFy
dCBvZgotICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKLQotICAgICAgKGQpIElm
IHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCi0g
ICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91
IGRpc3RyaWJ1dGUgbXVzdAotICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRo
ZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAotICAgICAgICAgIHdpdGhpbiBzdWNoIE5P
VElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAotICAgICAgICAg
IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0
IG9uZQotICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0Ug
dGV4dCBmaWxlIGRpc3RyaWJ1dGVkCi0gICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2
ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgotICAgICAgICAgIGRvY3VtZW50YXRp
b24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAotICAg
ICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtz
LCBpZiBhbmQKLSAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9y
bWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKLSAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUg
YXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCi0gICAgICAgICAgZG8gbm90
IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KLSAg
ICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1
dGUsIGFsb25nc2lkZQotICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0Ug
dGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAotICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlv
bmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAotICAgICAgICAgIGFz
IG1vZGlmeWluZyB0aGUgTGljZW5zZS4KLQotICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29w
eXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCi0gICAgICBtYXkgcHJv
dmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25z
Ci0gICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1v
ZGlmaWNhdGlvbnMsIG9yCi0gICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBh
IHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKLSAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3Ry
aWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAotICAgICAgdGhlIGNv
bmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KLQotICAgNS4gU3VibWlzc2lvbiBvZiBD
b250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAotICAg
ICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9u
IGluIHRoZSBXb3JrCi0gICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVy
IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgotICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0
IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCi0gICAgICBOb3R3aXRoc3RhbmRp
bmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5Ci0g
ICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkg
aGF2ZSBleGVjdXRlZAotICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmli
dXRpb25zLgotCi0gICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQg
cGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCi0gICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2Vy
dmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCi0gICAgICBleGNl
cHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3Jp
YmluZyB0aGUKLSAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNv
bnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgotCi0gICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5
LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKLSAgICAgIGFncmVlZCB0byBp
biB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKLSAgICAgIENv
bnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lT
LAotICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yCi0gICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRh
dGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwotICAgICAgb2YgVElUTEUsIE5PTi1J
TkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQotICAgICAgUEFS
VElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5p
bmcgdGhlCi0gICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcg
dGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKLSAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3Vy
IGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KLQotICAgOC4gTGlt
aXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVv
cnksCi0gICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJh
Y3QsIG9yIG90aGVyd2lzZSwKLSAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5Ci0gICAgICBuZWdsaWdlbnQgYWN0cykg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQotICAgICAg
bGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0
LCBzcGVjaWFsLAotICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9m
IGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCi0gICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNl
IG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCi0gICAgICBXb3JrIChp
bmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGws
Ci0gICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBv
ciBhbnkgYW5kIGFsbAotICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3Nlcyks
IGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgotICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUg
cG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgotCi0gICA5LiBBY2NlcHRpbmcgV2FycmFudHkg
b3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCi0gICAgICB0aGUg
V29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVy
LAotICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2Fy
cmFudHksIGluZGVtbml0eSwKLSAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBh
bmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCi0gICAgICBMaWNlbnNlLiBIb3dldmVy
LCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQotICAgICAg
b24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBv
biBiZWhhbGYKLSAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91
IGFncmVlIHRvIGluZGVtbmlmeSwKLSAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmli
dXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQotICAgICAgaW5jdXJyZWQgYnksIG9yIGNs
YWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgotICAgICAg
b2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxp
dHkuCi0KLSAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwotCi0gICBBUFBFTkRJWDogSG93
IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCi0KLSAgICAgIFRvIGFw
cGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5n
Ci0gICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBi
cmFja2V0cyAiW10iCi0gICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGlu
Zm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQotICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0
IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKLSAgICAgIGNvbW1lbnQgc3lu
dGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQotICAgICAg
ZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVk
IG9uIHRoZQotICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGlj
ZSBmb3IgZWFzaWVyCi0gICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJj
aGl2ZXMuCi0KLSAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQot
Ci0gICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKLSAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAotCi0gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCi0KLSAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
LSAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKLSAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVz
dC1wYXJhbGxlbC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2d0ZXN0LXBhcmFsbGVsL09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjc4MmI2MWZjYTVjODIwYjlmZmIwOTg2YzI4ODM3NDdiYWE3MTg0NS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2d0ZXN0LXBhcmFsbGVsL09XTkVSUworKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLXBib3NAd2VicnRjLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9S
RUFETUUud2VicnRjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9ndGVzdC1wYXJhbGxlbC9SRUFETUUud2VicnRjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0ZDQ3MTUxMDg3YmJhNTQxOTg1YTBhYzRhMmQzOTVhNDg3ODA3MDZiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ3Rlc3QtcGFyYWxsZWwvUkVBRE1FLndlYnJ0
YworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVVJMOiBodHRwczovL2dpdGh1Yi5jb20v
Z29vZ2xlL2d0ZXN0LXBhcmFsbGVsCi1WZXJzaW9uOiBkMGNlYmFiYTAxYzVkYmYzYWY4YTFjODli
NjRlZWQ3NTk2YzJiNTZjCi1MaWNlbnNlOiBBcGFjaGUgMi4wCi1MaWNlbnNlIEZpbGU6IExJQ0VO
U0UKLQotRGVzY3JpcHRpb246Ci1QYXJhbGxlbGl6YXRpb24gc2NyaXB0IGZvciBndGVzdCBiaW5h
cmllcy4KLQotTG9jYWwgTW9kaWZpY2F0aW9uczogTm9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9ndGVz
dC1wYXJhbGxlbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ3Rlc3QtcGFyYWxsZWwvZ3Rlc3QtcGFyYWxsZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDRlODA5MjhkZjY1OTI2OWVjYTc1ZjE2OWRiZWZjMmY1NDVjODMwMjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9ndGVzdC1wYXJhbGxl
bAorKysgL2Rldi9udWxsCkBAIC0xLDQxMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24y
Ci0jIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCi0jIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotIwotIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
Ci0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi1pbXBvcnQgY1BpY2tsZQot
aW1wb3J0IGVycm5vCi1pbXBvcnQgZ3ppcAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0
IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1p
bXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB0aHJlYWQKLWltcG9ydCB0aHJlYWRp
bmcKLWltcG9ydCB0aW1lCi1pbXBvcnQgemxpYgotCi0jIEFuIG9iamVjdCB0aGF0IGNhdGNoZXMg
U0lHSU5UIHNlbnQgdG8gdGhlIFB5dGhvbiBwcm9jZXNzIGFuZCBub3RpY2VzCi0jIGlmIHByb2Nl
c3NlcyBwYXNzZWQgdG8gd2FpdCgpIGRpZSBieSBTSUdJTlQgKHdlIG5lZWQgdG8gbG9vayBmb3IK
LSMgYm90aCBvZiB0aG9zZSBjYXNlcywgYmVjYXVzZSBwcmVzc2luZyBDdHJsK0MgY2FuIHJlc3Vs
dCBpbiBlaXRoZXIKLSMgdGhlIG1haW4gcHJvY2VzcyBvciBvbmUgb2YgdGhlIHN1YnByb2Nlc3Nl
cyBnZXR0aW5nIHRoZSBzaWduYWwpLgotIwotIyBCZWZvcmUgYSBTSUdJTlQgaXMgc2Vlbiwgd2Fp
dChwKSB3aWxsIHNpbXBseSBjYWxsIHAud2FpdCgpIGFuZAotIyByZXR1cm4gdGhlIHJlc3VsdC4g
T25jZSBhIFNJR0lOVCBoYXMgYmVlbiBzZWVuIChpbiB0aGUgbWFpbiBwcm9jZXNzCi0jIG9yIGEg
c3VicHJvY2VzcywgaW5jbHVkaW5nIHRoZSBvbmUgdGhlIGN1cnJlbnQgY2FsbCBpcyB3YWl0aW5n
IGZvciksCi0jIHdhaXQocCkgd2lsbCBjYWxsIHAudGVybWluYXRlKCkgYW5kIHJhaXNlIFByb2Nl
c3NXYXNJbnRlcnJ1cHRlZC4KLWNsYXNzIFNpZ2ludEhhbmRsZXIob2JqZWN0KToKLSAgY2xhc3Mg
UHJvY2Vzc1dhc0ludGVycnVwdGVkKEV4Y2VwdGlvbik6IHBhc3MKLSAgc2lnaW50X3JldHVybmNv
ZGVzID0gey1zaWduYWwuU0lHSU5ULCAgIyBVbml4Ci0gICAgICAgICAgICAgICAgICAgICAgICAt
MTA3Mzc0MTUxMCwgICAgICMgV2luZG93cwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgc2VsZi5fX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCi0g
ICAgc2VsZi5fX3Byb2Nlc3NlcyA9IHNldCgpCi0gICAgc2VsZi5fX2dvdF9zaWdpbnQgPSBGYWxz
ZQotICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2VsZi5fX3NpZ2ludF9oYW5kbGVy
KQotICBkZWYgX19vbl9zaWdpbnQoc2VsZik6Ci0gICAgc2VsZi5fX2dvdF9zaWdpbnQgPSBUcnVl
Ci0gICAgd2hpbGUgc2VsZi5fX3Byb2Nlc3NlczoKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5f
X3Byb2Nlc3Nlcy5wb3AoKS50ZXJtaW5hdGUoKQotICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAg
ICAgIHBhc3MKLSAgZGVmIF9fc2lnaW50X2hhbmRsZXIoc2VsZiwgc2lnbmFsX251bSwgZnJhbWUp
OgotICAgIHdpdGggc2VsZi5fX2xvY2s6Ci0gICAgICBzZWxmLl9fb25fc2lnaW50KCkKLSAgZGVm
IGdvdF9zaWdpbnQoc2VsZik6Ci0gICAgd2l0aCBzZWxmLl9fbG9jazoKLSAgICAgIHJldHVybiBz
ZWxmLl9fZ290X3NpZ2ludAotICBkZWYgd2FpdChzZWxmLCBwKToKLSAgICB3aXRoIHNlbGYuX19s
b2NrOgotICAgICAgaWYgc2VsZi5fX2dvdF9zaWdpbnQ6Ci0gICAgICAgIHAudGVybWluYXRlKCkK
LSAgICAgIHNlbGYuX19wcm9jZXNzZXMuYWRkKHApCi0gICAgY29kZSA9IHAud2FpdCgpCi0gICAg
d2l0aCBzZWxmLl9fbG9jazoKLSAgICAgIHNlbGYuX19wcm9jZXNzZXMuZGlzY2FyZChwKQotICAg
ICAgaWYgY29kZSBpbiBzZWxmLnNpZ2ludF9yZXR1cm5jb2RlczoKLSAgICAgICAgc2VsZi5fX29u
X3NpZ2ludCgpCi0gICAgICBpZiBzZWxmLl9fZ290X3NpZ2ludDoKLSAgICAgICAgcmFpc2Ugc2Vs
Zi5Qcm9jZXNzV2FzSW50ZXJydXB0ZWQKLSAgICByZXR1cm4gY29kZQotc2lnaW50X2hhbmRsZXIg
PSBTaWdpbnRIYW5kbGVyKCkKLQotIyBSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCwg
b3IgTm9uZSBpZiBpdCBjb3VsZG4ndCBiZQotIyBkZXRlcm1pbmVkIChlLmcuIGJlY2F1c2Ugd2Un
cmUgbm90IGJlaW5nIHJ1biBpbnRlcmFjdGl2ZWx5KS4KLWRlZiB0ZXJtX3dpZHRoKG91dCk6Ci0g
IGlmIG5vdCBvdXQuaXNhdHR5KCk6Ci0gICAgcmV0dXJuIE5vbmUKLSAgdHJ5OgotICAgIHAgPSBz
dWJwcm9jZXNzLlBvcGVuKFsic3R0eSIsICJzaXplIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICAo
b3V0LCBlcnIpID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgaWYgcC5yZXR1cm5jb2RlICE9IDAgb3Ig
ZXJyOgotICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gaW50KG91dC5zcGxpdCgpWzFdKQot
ICBleGNlcHQgKEluZGV4RXJyb3IsIE9TRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgIHJldHVybiBO
b25lCi0KLSMgT3V0cHV0IHRyYW5zaWVudCBhbmQgcGVybWFuZW50IGxpbmVzIG9mIHRleHQuIElm
IHNldmVyYWwgdHJhbnNpZW50Ci0jIGxpbmVzIGFyZSB3cml0dGVuIGluIHNlcXVlbmNlLCB0aGUg
bmV3IHdpbGwgb3ZlcndyaXRlIHRoZSBvbGQuIFdlCi0jIHVzZSB0aGlzIHRvIGVuc3VyZSB0aGF0
IGxvdHMgb2YgdW5pbXBvcnRhbnQgaW5mbyAodGVzdHMgcGFzc2luZykKLSMgd29uJ3QgZHJvd24g
b3V0IGltcG9ydGFudCBpbmZvICh0ZXN0cyBmYWlsaW5nKS4KLWNsYXNzIE91dHB1dHRlcihvYmpl
Y3QpOgotICBkZWYgX19pbml0X18oc2VsZiwgb3V0X2ZpbGUpOgotICAgIHNlbGYuX19vdXRfZmls
ZSA9IG91dF9maWxlCi0gICAgc2VsZi5fX3ByZXZpb3VzX2xpbmVfd2FzX3RyYW5zaWVudCA9IEZh
bHNlCi0gICAgc2VsZi5fX3dpZHRoID0gdGVybV93aWR0aChvdXRfZmlsZSkgICMgTGluZSB3aWR0
aCwgb3IgTm9uZSBpZiBub3QgYSB0dHkuCi0gIGRlZiB0cmFuc2llbnRfbGluZShzZWxmLCBtc2cp
OgotICAgIGlmIHNlbGYuX193aWR0aCBpcyBOb25lOgotICAgICAgc2VsZi5fX291dF9maWxlLndy
aXRlKG1zZyArICJcbiIpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuX19vdXRfZmlsZS53cml0ZSgi
XHIiICsgbXNnWzpzZWxmLl9fd2lkdGhdLmxqdXN0KHNlbGYuX193aWR0aCkpCi0gICAgICBzZWxm
Ll9fcHJldmlvdXNfbGluZV93YXNfdHJhbnNpZW50ID0gVHJ1ZQotICBkZWYgZmx1c2hfdHJhbnNp
ZW50X291dHB1dChzZWxmKToKLSAgICBpZiBzZWxmLl9fcHJldmlvdXNfbGluZV93YXNfdHJhbnNp
ZW50OgotICAgICAgc2VsZi5fX291dF9maWxlLndyaXRlKCJcbiIpCi0gICAgICBzZWxmLl9fcHJl
dmlvdXNfbGluZV93YXNfdHJhbnNpZW50ID0gRmFsc2UKLSAgZGVmIHBlcm1hbmVudF9saW5lKHNl
bGYsIG1zZyk6Ci0gICAgc2VsZi5mbHVzaF90cmFuc2llbnRfb3V0cHV0KCkKLSAgICBzZWxmLl9f
b3V0X2ZpbGUud3JpdGUobXNnICsgIlxuIikKLQotc3Rkb3V0X2xvY2sgPSB0aHJlYWRpbmcuTG9j
aygpCi0KLWNsYXNzIEZpbHRlckZvcm1hdDoKLSAgaWYgc3lzLnN0ZG91dC5pc2F0dHkoKToKLSAg
ICAjIHN0ZG91dCBuZWVkcyB0byBiZSB1bmJ1ZmZlcmVkIHNpbmNlIHRoZSBvdXRwdXQgaXMgaW50
ZXJhY3RpdmUuCi0gICAgc3lzLnN0ZG91dCA9IG9zLmZkb3BlbihzeXMuc3Rkb3V0LmZpbGVubygp
LCAndycsIDApCi0KLSAgb3V0ID0gT3V0cHV0dGVyKHN5cy5zdGRvdXQpCi0gIHRvdGFsX3Rlc3Rz
ID0gMAotICBmaW5pc2hlZF90ZXN0cyA9IDAKLQotICB0ZXN0cyA9IHt9Ci0gIG91dHB1dHMgPSB7
fQotICBmYWlsdXJlcyA9IFtdCi0KLSAgZGVmIHByaW50X3Rlc3Rfc3RhdHVzKHNlbGYsIGxhc3Rf
ZmluaXNoZWRfdGVzdCwgdGltZV9tcyk6Ci0gICAgc2VsZi5vdXQudHJhbnNpZW50X2xpbmUoIlsl
ZC8lZF0gJXMgKCVkIG1zKSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmZp
bmlzaGVkX3Rlc3RzLCBzZWxmLnRvdGFsX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RfZmluaXNoZWRfdGVzdCwgdGltZV9tcykpCi0KLSAgZGVmIGhhbmRsZV9tZXRh
KHNlbGYsIGpvYl9pZCwgYXJncyk6Ci0gICAgKGNvbW1hbmQsIGFyZykgPSBhcmdzLnNwbGl0KCcg
JywgMSkKLSAgICBpZiBjb21tYW5kID09ICJURVNUIjoKLSAgICAgIChiaW5hcnksIHRlc3QpID0g
YXJnLnNwbGl0KCcgJywgMSkKLSAgICAgIHNlbGYudGVzdHNbam9iX2lkXSA9IChiaW5hcnksIHRl
c3Quc3RyaXAoKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gIkVYSVQiOgotICAgICAgKGV4aXRfY29k
ZSwgdGltZV9tcykgPSBbaW50KHgpIGZvciB4IGluIGFyZy5zcGxpdCgnICcsIDEpXQotICAgICAg
c2VsZi5maW5pc2hlZF90ZXN0cyArPSAxCi0gICAgICAoYmluYXJ5LCB0ZXN0KSA9IHNlbGYudGVz
dHNbam9iX2lkXQotICAgICAgc2VsZi5wcmludF90ZXN0X3N0YXR1cyh0ZXN0LCB0aW1lX21zKQot
ICAgICAgaWYgZXhpdF9jb2RlICE9IDA6Ci0gICAgICAgIHNlbGYuZmFpbHVyZXMuYXBwZW5kKHNl
bGYudGVzdHNbam9iX2lkXSkKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYub3V0cHV0c1tqb2JfaWRd
KSBhcyBmOgotICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAg
ICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZShsaW5lLnJzdHJpcCgpKQotICAgICAgICBzZWxmLm91
dC5wZXJtYW5lbnRfbGluZSgKLSAgICAgICAgICAiWyVkLyVkXSAlcyByZXR1cm5lZC9hYm9ydGVk
IHdpdGggZXhpdCBjb2RlICVkICglZCBtcykiCi0gICAgICAgICAgJSAoc2VsZi5maW5pc2hlZF90
ZXN0cywgc2VsZi50b3RhbF90ZXN0cywgdGVzdCwgZXhpdF9jb2RlLCB0aW1lX21zKSkKLSAgICBl
bGlmIGNvbW1hbmQgPT0gIlRFU1RDTlQiOgotICAgICAgc2VsZi50b3RhbF90ZXN0cyA9IGludChh
cmcuc3BsaXQoJyAnLCAxKVsxXSkKLSAgICAgIHNlbGYub3V0LnRyYW5zaWVudF9saW5lKCJbMC8l
ZF0gUnVubmluZyB0ZXN0cy4uLiIgJSBzZWxmLnRvdGFsX3Rlc3RzKQotCi0gIGRlZiBsb2dmaWxl
KHNlbGYsIGpvYl9pZCwgbmFtZSk6Ci0gICAgc2VsZi5vdXRwdXRzW2pvYl9pZF0gPSBuYW1lCi0K
LSAgZGVmIGxvZyhzZWxmLCBsaW5lKToKLSAgICBzdGRvdXRfbG9jay5hY3F1aXJlKCkKLSAgICAo
cHJlZml4LCBvdXRwdXQpID0gbGluZS5zcGxpdCgnICcsIDEpCi0KLSAgICBhc3NlcnQgcHJlZml4
Wy0xXSA9PSAnOicKLSAgICBzZWxmLmhhbmRsZV9tZXRhKGludChwcmVmaXhbOi0xXSksIG91dHB1
dCkKLSAgICBzdGRvdXRfbG9jay5yZWxlYXNlKCkKLQotICBkZWYgZW5kKHNlbGYpOgotICAgIGlm
IHNlbGYuZmFpbHVyZXM6Ci0gICAgICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZSgiRkFJTEVEIFRF
U1RTICglZC8lZCk6IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobGVuKHNlbGYu
ZmFpbHVyZXMpLCBzZWxmLnRvdGFsX3Rlc3RzKSkKLSAgICAgIGZvciAoYmluYXJ5LCB0ZXN0KSBp
biBzZWxmLmZhaWx1cmVzOgotICAgICAgICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZSgiICIgKyBi
aW5hcnkgKyAiOiAiICsgdGVzdCkKLSAgICBzZWxmLm91dC5mbHVzaF90cmFuc2llbnRfb3V0cHV0
KCkKLQotY2xhc3MgUmF3Rm9ybWF0OgotICBkZWYgbG9nKHNlbGYsIGxpbmUpOgotICAgIHN0ZG91
dF9sb2NrLmFjcXVpcmUoKQotICAgIHN5cy5zdGRvdXQud3JpdGUobGluZSArICJcbiIpCi0gICAg
c3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgc3Rkb3V0X2xvY2sucmVsZWFzZSgpCi0gIGRlZiBsb2dm
aWxlKHNlbGYsIGpvYl9pZCwgbmFtZSk6Ci0gICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6Ci0gICAg
ICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICBzZWxmLmxvZyhzdHIoam9iX2lk
KSArICc+ICcgKyBsaW5lLnJzdHJpcCgpKQotICBkZWYgZW5kKHNlbGYpOgotICAgIHBhc3MKLQot
IyBSZWNvcmQgb2YgdGVzdCBydW50aW1lcy4gSGFzIGJ1aWx0LWluIGxvY2tpbmcuCi1jbGFzcyBU
ZXN0VGltZXMob2JqZWN0KToKLSAgZGVmIF9faW5pdF9fKHNlbGYsIHNhdmVfZmlsZSk6Ci0gICAg
IkNyZWF0ZSBuZXcgb2JqZWN0IHNlZWRlZCB3aXRoIHNhdmVkIHRlc3QgdGltZXMgZnJvbSB0aGUg
Z2l2ZW4gZmlsZS4iCi0gICAgc2VsZi5fX3RpbWVzID0ge30gICMgKHRlc3QgYmluYXJ5LCB0ZXN0
IG5hbWUpIC0+IHJ1bnRpbWUgaW4gbXMKLQotICAgICMgUHJvdGVjdHMgY2FsbHMgdG8gcmVjb3Jk
X3Rlc3RfdGltZSgpOyBvdGhlciBjYWxscyBhcmUgbm90Ci0gICAgIyBleHBlY3RlZCB0byBiZSBt
YWRlIGNvbmN1cnJlbnRseS4KLSAgICBzZWxmLl9fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLQot
ICAgIHRyeToKLSAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzYXZlX2ZpbGUsICJyYiIpIGFzIGY6
Ci0gICAgICAgIHRpbWVzID0gY1BpY2tsZS5sb2FkKGYpCi0gICAgZXhjZXB0IChFT0ZFcnJvciwg
SU9FcnJvciwgY1BpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIHpsaWIuZXJyb3IpOgotICAgICAgIyBG
aWxlIGRvZXNuJ3QgZXhpc3QsIGlzbid0IHJlYWRhYmxlLCBpcyBtYWxmb3JtZWQtLS13aGF0ZXZl
ci4KLSAgICAgICMgSnVzdCBpZ25vcmUgaXQuCi0gICAgICByZXR1cm4KLQotICAgICMgRGlzY2Fy
ZCBzYXZlZCB0aW1lcyBpZiB0aGUgZm9ybWF0IGlzbid0IHJpZ2h0LgotICAgIGlmIHR5cGUodGlt
ZXMpIGlzIG5vdCBkaWN0OgotICAgICAgcmV0dXJuCi0gICAgZm9yICgodGVzdF9iaW5hcnksIHRl
c3RfbmFtZSksIHJ1bnRpbWUpIGluIHRpbWVzLml0ZW1zKCk6Ci0gICAgICBpZiAodHlwZSh0ZXN0
X2JpbmFyeSkgaXMgbm90IHN0ciBvciB0eXBlKHRlc3RfbmFtZSkgaXMgbm90IHN0cgotICAgICAg
ICAgIG9yIHR5cGUocnVudGltZSkgbm90IGluIHtpbnQsIGxvbmcsIHR5cGUoTm9uZSl9KToKLSAg
ICAgICAgcmV0dXJuCi0KLSAgICBzZWxmLl9fdGltZXMgPSB0aW1lcwotCi0gIGRlZiBnZXRfdGVz
dF90aW1lKHNlbGYsIGJpbmFyeSwgdGVzdG5hbWUpOgotICAgICIiIlJldHVybiB0aGUgbGFzdCBk
dXJhdGlvbiBmb3IgdGhlIGdpdmVuIHRlc3QgYXMgYW4gaW50ZWdlciBudW1iZXIgb2YKLSAgICBt
aWxsaXNlY29uZHMsIG9yIE5vbmUgaWYgdGhlIHRlc3QgZmFpbGVkIG9yIGlmIHRoZXJlJ3Mgbm8g
cmVjb3JkIGZvciBpdC4iIiIKLSAgICByZXR1cm4gc2VsZi5fX3RpbWVzLmdldCgoYmluYXJ5LCB0
ZXN0bmFtZSksIE5vbmUpCi0KLSAgZGVmIHJlY29yZF90ZXN0X3RpbWUoc2VsZiwgYmluYXJ5LCB0
ZXN0bmFtZSwgcnVudGltZV9tcyk6Ci0gICAgIiIiUmVjb3JkIHRoYXQgdGhlIGdpdmVuIHRlc3Qg
cmFuIGluIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCi0gICAgbWlsbGlzZWNvbmRzLiBJZiB0aGUg
dGVzdCBmYWlsZWQsIHJ1bnRpbWVfbXMgc2hvdWxkIGJlIE5vbmUuIiIiCi0gICAgd2l0aCBzZWxm
Ll9fbG9jazoKLSAgICAgIHNlbGYuX190aW1lc1soYmluYXJ5LCB0ZXN0bmFtZSldID0gcnVudGlt
ZV9tcwotCi0gIGRlZiB3cml0ZV90b19maWxlKHNlbGYsIHNhdmVfZmlsZSk6Ci0gICAgIldyaXRl
IGFsbCB0aGUgdGltZXMgdG8gZmlsZS4iCi0gICAgdHJ5OgotICAgICAgd2l0aCBvcGVuKHNhdmVf
ZmlsZSwgIndiIikgYXMgZjoKLSAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKCIiLCAid2IiLCA5
LCBmKSBhcyBnemY6Ci0gICAgICAgICAgY1BpY2tsZS5kdW1wKHNlbGYuX190aW1lcywgZ3pmLCBj
UGlja2xlLkhJR0hFU1RfUFJPVE9DT0wpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICBwYXNz
ICAjIGlnbm9yZSBlcnJvcnMtLS1zYXZpbmcgdGhlIHRpbWVzIGlzbid0IHRoYXQgaW1wb3J0YW50
Ci0KLSMgUmVtb3ZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIChhbnl0aGluZyBhZnRlciAtLSkuCi1h
ZGRpdGlvbmFsX2FyZ3MgPSBbXQotCi1mb3IgaSBpbiByYW5nZShsZW4oc3lzLmFyZ3YpKToKLSAg
aWYgc3lzLmFyZ3ZbaV0gPT0gJy0tJzoKLSAgICBhZGRpdGlvbmFsX2FyZ3MgPSBzeXMuYXJndltp
KzE6XQotICAgIHN5cy5hcmd2ID0gc3lzLmFyZ3ZbOmldCi0gICAgYnJlYWsKLQotcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKAotICAgIHVzYWdlID0gJ3VzYWdlOiAlcHJvZyBbb3B0aW9u
c10gYmluYXJ5IFtiaW5hcnkgLi4uXSAtLSBbYWRkaXRpb25hbCBhcmdzXScpCi0KLXBhcnNlci5h
ZGRfb3B0aW9uKCctZCcsICctLW91dHB1dF9kaXInLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1vcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCAiZ3Rl
c3QtcGFyYWxsZWwiKSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBkaXJlY3Rvcnkg
Zm9yIHRlc3QgbG9ncycpCi1wYXJzZXIuYWRkX29wdGlvbignLXInLCAnLS1yZXBlYXQnLCB0eXBl
PSdpbnQnLCBkZWZhdWx0PTEsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdyZXBlYXQgdGVzdHMn
KQotcGFyc2VyLmFkZF9vcHRpb24oJy0tZmFpbGVkJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBvbmx5IGZhaWxlZCBhbmQg
bmV3IHRlc3RzJykKLXBhcnNlci5hZGRfb3B0aW9uKCctdycsICctLXdvcmtlcnMnLCB0eXBlPSdp
bnQnLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1tdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50
KCksCi0gICAgICAgICAgICAgICAgICBoZWxwPSdudW1iZXIgb2Ygd29ya2VycyB0byBzcGF3bicp
Ci1wYXJzZXIuYWRkX29wdGlvbignLS1ndGVzdF9jb2xvcicsIHR5cGU9J3N0cmluZycsIGRlZmF1
bHQ9J3llcycsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdjb2xvciBvdXRwdXQnKQotcGFyc2Vy
LmFkZF9vcHRpb24oJy0tZ3Rlc3RfZmlsdGVyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywK
LSAgICAgICAgICAgICAgICAgIGhlbHA9J3Rlc3QgZmlsdGVyJykKLXBhcnNlci5hZGRfb3B0aW9u
KCctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywK
LSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3J1biBkaXNhYmxlZCB0ZXN0
cyB0b28nKQotcGFyc2VyLmFkZF9vcHRpb24oJy0tZm9ybWF0JywgdHlwZT0nc3RyaW5nJywgZGVm
YXVsdD0nZmlsdGVyJywKLSAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBmb3JtYXQgKHJh
dyxmaWx0ZXIpJykKLXBhcnNlci5hZGRfb3B0aW9uKCctLXByaW50X3Rlc3RfdGltZXMnLCBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgaGVscD0n
V2hlbiBkb25lLCBsaXN0IHRoZSBydW4gdGltZSBvZiBlYWNoIHRlc3QnKQotCi0ob3B0aW9ucywg
YmluYXJpZXMpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi1pZiBiaW5hcmllcyA9PSBbXToKLSAg
cGFyc2VyLnByaW50X3VzYWdlKCkKLSAgc3lzLmV4aXQoMSkKLQotbG9nZ2VyID0gUmF3Rm9ybWF0
KCkKLWlmIG9wdGlvbnMuZm9ybWF0ID09ICdyYXcnOgotICBwYXNzCi1lbGlmIG9wdGlvbnMuZm9y
bWF0ID09ICdmaWx0ZXInOgotICBsb2dnZXIgPSBGaWx0ZXJGb3JtYXQoKQotZWxzZToKLSAgc3lz
LmV4aXQoIlVua25vd24gb3V0cHV0IGZvcm1hdDogIiArIG9wdGlvbnMuZm9ybWF0KQotCi0jIEZp
bmQgdGVzdHMuCi1zYXZlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+
IiksICIuZ3Rlc3QtcGFyYWxsZWwtdGltZXMiKQotdGltZXMgPSBUZXN0VGltZXMoc2F2ZV9maWxl
KQotdGVzdHMgPSBbXQotZm9yIHRlc3RfYmluYXJ5IGluIGJpbmFyaWVzOgotICBjb21tYW5kID0g
W3Rlc3RfYmluYXJ5XQotICBpZiBvcHRpb25zLmd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
OgotICAgIGNvbW1hbmQgKz0gWyctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJ10KLQot
ICBsaXN0X2NvbW1hbmQgPSBsaXN0KGNvbW1hbmQpCi0gIGlmIG9wdGlvbnMuZ3Rlc3RfZmlsdGVy
ICE9ICcnOgotICAgIGxpc3RfY29tbWFuZCArPSBbJy0tZ3Rlc3RfZmlsdGVyPScgKyBvcHRpb25z
Lmd0ZXN0X2ZpbHRlcl0KLQotICB0cnk6Ci0gICAgdGVzdF9saXN0ID0gc3VicHJvY2Vzcy5Qb3Bl
bihsaXN0X2NvbW1hbmQgKyBbJy0tZ3Rlc3RfbGlzdF90ZXN0cyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVsw
XQotICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgIHN5cy5leGl0KCIlczogJXMiICUgKHRlc3Rf
YmluYXJ5LCBzdHIoZSkpKQotCi0gIGNvbW1hbmQgKz0gYWRkaXRpb25hbF9hcmdzCi0KLSAgdGVz
dF9ncm91cCA9ICcnCi0gIGZvciBsaW5lIGluIHRlc3RfbGlzdC5zcGxpdCgnXG4nKToKLSAgICBp
ZiBub3QgbGluZS5zdHJpcCgpOgotICAgICAgY29udGludWUKLSAgICBpZiBsaW5lWzBdICE9ICIg
IjoKLSAgICAgICMgUmVtb3ZlIGNvbW1lbnRzIGZvciB0eXBlZCB0ZXN0cyBhbmQgc3RyaXAgd2hp
dGVzcGFjZS4KLSAgICAgIHRlc3RfZ3JvdXAgPSBsaW5lLnNwbGl0KCcjJylbMF0uc3RyaXAoKQot
ICAgICAgY29udGludWUKLSAgICAjIFJlbW92ZSBjb21tZW50cyBmb3IgcGFyYW1ldGVyaXplZCB0
ZXN0cyBhbmQgc3RyaXAgd2hpdGVzcGFjZS4KLSAgICBsaW5lID0gbGluZS5zcGxpdCgnIycpWzBd
LnN0cmlwKCkKLSAgICBpZiBub3QgbGluZToKLSAgICAgIGNvbnRpbnVlCi0KLSAgICB0ZXN0ID0g
dGVzdF9ncm91cCArIGxpbmUKLSAgICBpZiBub3Qgb3B0aW9ucy5ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cyBhbmQgJ0RJU0FCTEVEXycgaW4gdGVzdDoKLSAgICAgIGNvbnRpbnVlCi0gICAg
dGVzdHMuYXBwZW5kKCh0aW1lcy5nZXRfdGVzdF90aW1lKHRlc3RfYmluYXJ5LCB0ZXN0KSwKLSAg
ICAgICAgICAgICAgICAgIHRlc3RfYmluYXJ5LCB0ZXN0LCBjb21tYW5kKSkKLQotaWYgb3B0aW9u
cy5mYWlsZWQ6Ci0gICMgVGhlIGZpcnN0IGVsZW1lbnQgb2YgZWFjaCBlbnRyeSBpcyB0aGUgcnVu
dGltZSBvZiB0aGUgbW9zdCByZWNlbnQKLSAgIyBydW4gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwsIG9y
IE5vbmUgaWYgdGhlIHRlc3QgaXMgbmV3IG9yIHRoZSBtb3N0Ci0gICMgcmVjZW50IHJ1biBmYWls
ZWQuCi0gIHRlc3RzID0gW3ggZm9yIHggaW4gdGVzdHMgaWYgeFswXSBpcyBOb25lXQotCi0jIFNv
cnQgdGVzdHMgYnkgZmFsbGluZyBydW50aW1lICh3aXRoIE5vbmUsIHdoaWNoIGlzIHdoYXQgd2Ug
Z2V0IGZvcgotIyBuZXcgYW5kIGZhaWxpbmcgdGVzdHMsIGJlaW5nIGNvbnNpZGVyZWQgbGFyZ2Vy
IHRoYW4gYW55IHJlYWwKLSMgcnVudGltZSkuCi10ZXN0cy5zb3J0KHJldmVyc2U9VHJ1ZSwga2V5
PWxhbWJkYSB4OiAoKDEgaWYgeFswXSBpcyBOb25lIGVsc2UgMCksIHgpKQotCi0jIFJlcGVhdCB0
ZXN0cyAoLXIgZmxhZykuCi10ZXN0cyAqPSBvcHRpb25zLnJlcGVhdAotdGVzdF9sb2NrID0gdGhy
ZWFkaW5nLkxvY2soKQotam9iX2lkID0gMAotbG9nZ2VyLmxvZyhzdHIoLTEpICsgJzogVEVTVENO
VCAnICsgJyAnICsgc3RyKGxlbih0ZXN0cykpKQotCi1leGl0X2NvZGUgPSAwCi0KLSMgQ3JlYXRl
IGRpcmVjdG9yeSBmb3IgdGVzdCBsb2cgb3V0cHV0LgotdHJ5OgotICBvcy5tYWtlZGlycyhvcHRp
b25zLm91dHB1dF9kaXIpCi1leGNlcHQgT1NFcnJvciBhcyBlOgotICAjIElnbm9yZSBlcnJvcnMg
aWYgdGhpcyBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuCi0gIGlmIGUuZXJybm8gIT0gZXJybm8u
RUVYSVNUIG9yIG5vdCBvcy5wYXRoLmlzZGlyKG9wdGlvbnMub3V0cHV0X2Rpcik6Ci0gICAgcmFp
c2UgZQotIyBSZW1vdmUgZmlsZXMgZnJvbSBvbGQgdGVzdCBydW5zLgotZm9yIGxvZ2ZpbGUgaW4g
b3MubGlzdGRpcihvcHRpb25zLm91dHB1dF9kaXIpOgotICBvcy5yZW1vdmUob3MucGF0aC5qb2lu
KG9wdGlvbnMub3V0cHV0X2RpciwgbG9nZmlsZSkpCi0KLSMgUnVuIHRoZSBzcGVjaWZpZWQgam9i
LiBSZXR1cm4gdGhlIGVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHMgaWYKLSMgdGhlIGpvYiBz
dWNjZWVkcywgb3IgTm9uZSBpZiB0aGUgam9iIGZhaWxzLiAoVGhpcyBlbnN1cmVzIHRoYXQKLSMg
ZmFpbGluZyB0ZXN0cyB3aWxsIHJ1biBmaXJzdCB0aGUgbmV4dCB0aW1lLikKLWRlZiBydW5fam9i
KChjb21tYW5kLCBqb2JfaWQsIHRlc3QpKToKLSAgYmVnaW4gPSB0aW1lLnRpbWUoKQotCi0gIHdp
dGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj1vcHRpb25zLm91dHB1dF9kaXIsIGRl
bGV0ZT1GYWxzZSkgYXMgbG9nOgotICAgIHN1YiA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCAr
IFsnLS1ndGVzdF9maWx0ZXI9JyArIHRlc3RdICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyctLWd0ZXN0X2NvbG9yPScgKyBvcHRpb25zLmd0ZXN0X2NvbG9yXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD1sb2cuZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycj1sb2cuZmlsZSkKLSAgICB0cnk6Ci0gICAgICBjb2RlID0gc2lnaW50X2hhbmRs
ZXIud2FpdChzdWIpCi0gICAgZXhjZXB0IHNpZ2ludF9oYW5kbGVyLlByb2Nlc3NXYXNJbnRlcnJ1
cHRlZDoKLSAgICAgIHRocmVhZC5leGl0KCkKLSAgICBydW50aW1lX21zID0gaW50KDEwMDAgKiAo
dGltZS50aW1lKCkgLSBiZWdpbikpCi0gICAgbG9nZ2VyLmxvZ2ZpbGUoam9iX2lkLCBsb2cubmFt
ZSkKLQotICBsb2dnZXIubG9nKCIlczogRVhJVCAlcyAlZCIgJSAoam9iX2lkLCBjb2RlLCBydW50
aW1lX21zKSkKLSAgaWYgY29kZSA9PSAwOgotICAgIHJldHVybiBydW50aW1lX21zCi0gIGdsb2Jh
bCBleGl0X2NvZGUKLSAgZXhpdF9jb2RlID0gY29kZQotICByZXR1cm4gTm9uZQotCi1kZWYgd29y
a2VyKCk6Ci0gIGdsb2JhbCBqb2JfaWQKLSAgd2hpbGUgVHJ1ZToKLSAgICBqb2IgPSBOb25lCi0g
ICAgdGVzdF9sb2NrLmFjcXVpcmUoKQotICAgIGlmIGpvYl9pZCA8IGxlbih0ZXN0cyk6Ci0gICAg
ICAoXywgdGVzdF9iaW5hcnksIHRlc3QsIGNvbW1hbmQpID0gdGVzdHNbam9iX2lkXQotICAgICAg
bG9nZ2VyLmxvZyhzdHIoam9iX2lkKSArICc6IFRFU1QgJyArIHRlc3RfYmluYXJ5ICsgJyAnICsg
dGVzdCkKLSAgICAgIGpvYiA9IChjb21tYW5kLCBqb2JfaWQsIHRlc3QpCi0gICAgam9iX2lkICs9
IDEKLSAgICB0ZXN0X2xvY2sucmVsZWFzZSgpCi0gICAgaWYgam9iIGlzIE5vbmU6Ci0gICAgICBy
ZXR1cm4KLSAgICB0aW1lcy5yZWNvcmRfdGVzdF90aW1lKHRlc3RfYmluYXJ5LCB0ZXN0LCBydW5f
am9iKGpvYikpCi0KLWRlZiBzdGFydF9kYWVtb24oZnVuYyk6Ci0gIHQgPSB0aHJlYWRpbmcuVGhy
ZWFkKHRhcmdldD1mdW5jKQotICB0LmRhZW1vbiA9IFRydWUKLSAgdC5zdGFydCgpCi0gIHJldHVy
biB0Ci0KLXdvcmtlcnMgPSBbc3RhcnRfZGFlbW9uKHdvcmtlcikgZm9yIGkgaW4gcmFuZ2Uob3B0
aW9ucy53b3JrZXJzKV0KLQotW3Quam9pbigpIGZvciB0IGluIHdvcmtlcnNdCi1sb2dnZXIuZW5k
KCkKLXRpbWVzLndyaXRlX3RvX2ZpbGUoc2F2ZV9maWxlKQotaWYgb3B0aW9ucy5wcmludF90ZXN0
X3RpbWVzOgotICB0cyA9IHNvcnRlZCgodGltZXMuZ2V0X3Rlc3RfdGltZSh0ZXN0X2JpbmFyeSwg
dGVzdCksIHRlc3RfYmluYXJ5LCB0ZXN0KQotICAgICAgICAgICAgICBmb3IgKF8sIHRlc3RfYmlu
YXJ5LCB0ZXN0LCBfKSBpbiB0ZXN0cwotICAgICAgICAgICAgICBpZiB0aW1lcy5nZXRfdGVzdF90
aW1lKHRlc3RfYmluYXJ5LCB0ZXN0KSBpcyBub3QgTm9uZSkKLSAgZm9yICh0aW1lX21zLCB0ZXN0
X2JpbmFyeSwgdGVzdCkgaW4gdHM6Ci0gICAgcHJpbnQgIiU4cyAlcyIgJSAoIiVkbXMiICUgdGlt
ZV9tcywgdGVzdCkKLXN5cy5leGl0KC1zaWduYWwuU0lHSU5UIGlmIHNpZ2ludF9oYW5kbGVyLmdv
dF9zaWdpbnQoKSBlbHNlIGV4aXRfY29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9CVUlMRC5nbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmNDhiOWVlN2NmYjhjOTg4YjViZjY2YTI2
M2U5YzIxMTQzM2JhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvQlVJTEQuZ24KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jIENvcHlyaWdodCAy
MDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLWltcG9ydCgiLy90ZXN0aW5n
L2xpYmZ1enplci9mdXp6ZXJfdGVzdC5nbmkiKQotCi1jb25maWcoImpzb25jcHBfY29uZmlnIikg
ewotICBpbmNsdWRlX2RpcnMgPSBbCi0gICAgInNvdXJjZS9pbmNsdWRlIiwKLSAgICAiZ2VuZXJh
dGVkIiwKLSAgXQotCi0gICMgVE9ETyhjcmJ1Zy5jb20vOTgzMjIzKTogVXBkYXRlIEpzb25DcHAg
QlVJTEQuZ24gdG8gcmVtb3ZlIGRlcHJlY2F0ZWQKLSAgIyBkZWNsYXJhdGlvbiBmbGFnLgotICAj
IFRoaXMgdGVtcG9yYXJ5IGZsYWcgYWxsb3dpbmcgY2xpZW50cyB0byB1cGRhdGUgdG8gdGhlIG5l
dyB2ZXJzaW9uLCBhbmQgdGhlbgotICAjIHVwZGF0ZSB0byB0aGUgbmV3IFN0cmVhbVdyaXRlciBh
bmQgQ2hhclJlYWRlciBjbGFzc2VzLgotICBpZiAoIWlzX3dpbiB8fCBpc19jbGFuZykgewotICAg
IGNmbGFnc19jYyA9IFsgIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiIF0KLSAgfQotfQot
Ci1zb3VyY2Vfc2V0KCJqc29uY3BwIikgewotICBzb3VyY2VzID0gWwotICAgICJnZW5lcmF0ZWQv
dmVyc2lvbi5oIiwKLSAgICAic291cmNlL2luY2x1ZGUvanNvbi9hc3NlcnRpb25zLmgiLAotICAg
ICJzb3VyY2UvaW5jbHVkZS9qc29uL2F1dG9saW5rLmgiLAotICAgICJzb3VyY2UvaW5jbHVkZS9q
c29uL2NvbmZpZy5oIiwKLSAgICAic291cmNlL2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oIiwKLSAg
ICAic291cmNlL2luY2x1ZGUvanNvbi9mb3J3YXJkcy5oIiwKLSAgICAic291cmNlL2luY2x1ZGUv
anNvbi9qc29uLmgiLAotICAgICJzb3VyY2UvaW5jbHVkZS9qc29uL3JlYWRlci5oIiwKLSAgICAi
c291cmNlL2luY2x1ZGUvanNvbi92YWx1ZS5oIiwKLSAgICAic291cmNlL2luY2x1ZGUvanNvbi93
cml0ZXIuaCIsCi0gICAgInNvdXJjZS9zcmMvbGliX2pzb24vanNvbl9yZWFkZXIuY3BwIiwKLSAg
ICAic291cmNlL3NyYy9saWJfanNvbi9qc29uX3Rvb2wuaCIsCi0gICAgInNvdXJjZS9zcmMvbGli
X2pzb24vanNvbl92YWx1ZS5jcHAiLAotICAgICJzb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fd3Jp
dGVyLmNwcCIsCi0gIF0KLQotICBwdWJsaWNfY29uZmlncyA9IFsgIjpqc29uY3BwX2NvbmZpZyIg
XQotCi0gIGRlZmluZXMgPSBbCi0gICAgIkpTT05fVVNFX0VYQ0VQVElPTj0wIiwKLSAgICAiSlNP
Tl9VU0VfTlVMTFJFRj0wIiwKLSAgXQotCi0gIGluY2x1ZGVfZGlycyA9IFsgInNvdXJjZS9zcmMv
bGliX2pzb24iIF0KLQotICBpZiAoIWlzX3dpbiB8fCBpc19jbGFuZykgewotICAgIGNmbGFnc19j
YyA9IFsgIi1Xbm8taW1wbGljaXQtZmFsbHRocm91Z2giIF0KLSAgfQotfQotCi1mdXp6ZXJfdGVz
dCgianNvbmNwcF9mdXp6ZXIiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImZ1enplcnMvanNvbl9m
dXp6ZXIuY2MiLAotICBdCi0KLSAgZGVwcyA9IFsKLSAgICAiOmpzb25jcHAiLAotICBdCi0KLSAg
aW5jbHVkZV9kaXJzID0gWyAiZ2VuZXJhdGVkIiBdCi0KLSAgZGljdCA9ICIvL3Rlc3RpbmcvbGli
ZnV6emVyL2Z1enplcnMvZGljdHMvanNvbi5kaWN0IgotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL0xJQ0VOU0UgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvTElD
RU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyYmZlMWEwM2VlNWUzOTFmNTFi
MWJjNGRlNDcxMTQ0MjFlZWM5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVRoZSBKc29u
Q3BwIGxpYnJhcnkncyBzb3VyY2UgY29kZSwgaW5jbHVkaW5nIGFjY29tcGFueWluZyBkb2N1bWVu
dGF0aW9uLCAKLXRlc3RzIGFuZCBkZW1vbnN0cmF0aW9uIGFwcGxpY2F0aW9ucywgYXJlIGxpY2Vu
c2VkIHVuZGVyIHRoZSBmb2xsb3dpbmcKLWNvbmRpdGlvbnMuLi4KLQotVGhlIGF1dGhvciAoQmFw
dGlzdGUgTGVwaWxsZXVyKSBleHBsaWNpdGx5IGRpc2NsYWltcyBjb3B5cmlnaHQgaW4gYWxsIAot
anVyaXNkaWN0aW9ucyB3aGljaCByZWNvZ25pemUgc3VjaCBhIGRpc2NsYWltZXIuIEluIHN1Y2gg
anVyaXNkaWN0aW9ucywgCi10aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIGludG8gdGhlIFB1Ymxp
YyBEb21haW4uCi0KLUluIGp1cmlzZGljdGlvbnMgd2hpY2ggZG8gbm90IHJlY29nbml6ZSBQdWJs
aWMgRG9tYWluIHByb3BlcnR5IChlLmcuIEdlcm1hbnkgYXMgb2YKLTIwMTApLCB0aGlzIHNvZnR3
YXJlIGlzIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIGJ5IEJhcHRpc3RlIExlcGlsbGV1ciwgYW5k
IGlzCi1yZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBMaWNlbnNlIChzZWUgYmVs
b3cpLgotCi1JbiBqdXJpc2RpY3Rpb25zIHdoaWNoIHJlY29nbml6ZSBQdWJsaWMgRG9tYWluIHBy
b3BlcnR5LCB0aGUgdXNlciBvZiB0aGlzIAotc29mdHdhcmUgbWF5IGNob29zZSB0byBhY2NlcHQg
aXQgZWl0aGVyIGFzIDEpIFB1YmxpYyBEb21haW4sIDIpIHVuZGVyIHRoZSAKLWNvbmRpdGlvbnMg
b2YgdGhlIE1JVCBMaWNlbnNlIChzZWUgYmVsb3cpLCBvciAzKSB1bmRlciB0aGUgdGVybXMgb2Yg
ZHVhbCAKLVB1YmxpYyBEb21haW4vTUlUIExpY2Vuc2UgY29uZGl0aW9ucyBkZXNjcmliZWQgaGVy
ZSwgYXMgdGhleSBjaG9vc2UuCi0KLVRoZSBNSVQgTGljZW5zZSBpcyBhYm91dCBhcyBjbG9zZSB0
byBQdWJsaWMgRG9tYWluIGFzIGEgbGljZW5zZSBjYW4gZ2V0LCBhbmQgaXMKLWRlc2NyaWJlZCBp
biBjbGVhciwgY29uY2lzZSB0ZXJtcyBhdDoKLQotICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9NSVRfTGljZW5zZQotICAgCi1UaGUgZnVsbCB0ZXh0IG9mIHRoZSBNSVQgTGljZW5zZSBm
b2xsb3dzOgotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNvcHlyaWdodCAoYykgMjAwNy0yMDEwIEJhcHRp
c3RlIExlcGlsbGV1cgotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbgotb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KLWZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKLXJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAotbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCi1vZiB0aGUg
U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwot
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
LQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug
c2hhbGwgYmUKLWluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLUVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotTUVSQ0hBTlRBQklMSVRZLCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLU5PTklORlJJTkdFTUVOVC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKLUJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB
TgotQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBP
VVQgT0YgT1IgSU4KLUNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP
VEhFUiBERUFMSU5HUyBJTiBUSEUKLVNPRlRXQVJFLgotPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0oRU5EIExJ
Q0VOU0UgVEVYVCkKLQotVGhlIE1JVCBsaWNlbnNlIGlzIGNvbXBhdGlibGUgd2l0aCBib3RoIHRo
ZSBHUEwgYW5kIGNvbW1lcmNpYWwKLXNvZnR3YXJlLCBhZmZvcmRpbmcgb25lIGFsbCBvZiB0aGUg
cmlnaHRzIG9mIFB1YmxpYyBEb21haW4gd2l0aCB0aGUKLW1pbm9yIG51aXNhbmNlIG9mIGJlaW5n
IHJlcXVpcmVkIHRvIGtlZXAgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UKLWFuZCBsaWNlbnNl
IHRleHQgaW4gdGhlIHNvdXJjZSBjb2RlLiBOb3RlIGFsc28gdGhhdCBieSBhY2NlcHRpbmcgdGhl
Ci1QdWJsaWMgRG9tYWluICJsaWNlbnNlIiB5b3UgY2FuIHJlLWxpY2Vuc2UgeW91ciBjb3B5IHVz
aW5nIHdoYXRldmVyCi1saWNlbnNlIHlvdSBsaWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL09XTkVSUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9PV05FUlMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZTczNTQ0MjU0Mjc1NjcwY2Y0ZWFhOTE1
NzJlODdlMzkyMmQ3NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL09XTkVSUworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotam9waGJhQGNocm9taXVt
Lm9yZwotCi0jIENPTVBPTkVOVDogSW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvUkVBRE1FLmNocm9taXVt
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L1JFQURNRS5jaHJvbWl1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiYzU0M2Y0
MThkZWVhYWMzZGNhNzQ3ODRiNGUxNWJkNmM5OWE5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvUkVBRE1FLmNocm9taXVtCisrKyAvZGV2L251bGwKQEAgLTEs
MTYgKzAsMCBAQAotTmFtZToganNvbmNwcAotVVJMOiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1z
b3VyY2UtcGFyc2Vycy9qc29uY3BwCi1WZXJzaW9uOiBmNTcyZThlNDJlMjJjZmNmNWFiMGFlYTI2
NTc0ZjQwODk0M2VkZmE0Ci1MaWNlbnNlOiBNSVQKLUxpY2Vuc2UgRmlsZTogTElDRU5TRQotU2Vj
dXJpdHkgQ3JpdGljYWw6IHllcwotCi1EZXNjcmlwdGlvbjoKLUpzb25DcHAgaXMgdXNlZCBieSBt
dWx0aXBsZSBwcm9qZWN0cyBmb3IgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyBKU09OIGRhdGEuIFRo
aXMKLXByb2plY3QgaXMgbWlycm9yZWQgaGVyZSBmcm9tIHRoZSBwdWJsaWMgR2l0SHViIHByb2pl
Y3QsIHdpdGggYSBjdXN0b20gQlVJTEQuZ24KLXRvIGFsbG93IGZvciBidWlsZGluZyB3aXRoIG91
ciBOaW5qYSArIEdOIGNvbmZpZ3VyYXRpb24uIFRoZSBtYWluIHByb2plY3QgdXNlcwotTWVzb24g
b3IgQ01ha2UgZm9yIGJ1aWxkaW5nLgotCi1Ob3RlOiB0byB1cGRhdGUgdGhpcyBwcm9qZWN0IHRv
IGEgbmV3IHZlcnNpb24sIHJlZ2VuZXJhdGluZyB0aGUgdmVyc2lvbi5oIGhlYWRlcgotaXMgcmVx
dWlyZWQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgaW5zdGFsbGluZyBlaXRoZXIgQ01ha2Ugb3IgTWVz
b24sIGJ1aWxkaW5nIHRoZQotcHJvamVjdCwgYW5kIGNvcHlpbmcgdGhlIGdlbmVyYXRlZCB2ZXJz
aW9uLmggdG8gdGhlIGdlbmVyYXRlZC8gc3ViZm9sZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL2Z1enplcnMvanNv
bl9mdXp6ZXIuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvZnV6emVycy9qc29uX2Z1enplci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzIzYjY3MGQ5YjU3ZjBkMGJiNjBkMDhhMmJiZTM4ZjU1MmNkZmJiZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvZnV6emVycy9qc29uX2Z1enpl
ci5jYworKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE5IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBKc29uQ3BwIGZ1enppbmcg
d3JhcHBlciB0byBoZWxwIHdpdGggYXV0b21hdGVkIGZ1enogdGVzdGluZy4KLQotI2luY2x1ZGUg
PHN0ZGludC5oPgotI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPGNsaW1pdHM+Ci0jaW5jbHVk
ZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlICJ0aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vanNvbi5oIgotCi1u
YW1lc3BhY2UgewotLy8gSnNvbkNwcCBoYXMgYSBmZXcgZGlmZmVyZW50IHBhcnNpbmcgb3B0aW9u
cy4gVGhlIGNvZGUgYmVsb3cgbWFrZXMgc3VyZSB0aGF0Ci0vLyB0aGUgbW9zdCBpbnRlcnN0aW5n
IHZhcmlhbnRzIGFyZSB0ZXN0ZWQuCi1lbnVtIHsga0J1aWxkZXJDb25maWdEZWZhdWx0ID0gMCwg
a0J1aWxkZXJDb25maWdTdHJpY3QsIGtOdW1CdWlsZGVyQ29uZmlnIH07Ci19ICAvLyBuYW1lc3Bh
Y2UKLQotc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8SnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIsIGtO
dW1CdWlsZGVyQ29uZmlnPiYKLUluaXRpYWxpemUoKSB7Ci0gIHN0YXRpYyBzdGQ6OmFycmF5PEpz
b246OkNoYXJSZWFkZXJCdWlsZGVyLCBrTnVtQnVpbGRlckNvbmZpZz4gYnVpbGRlcnN7fTsKLQot
ICBKc29uOjpDaGFyUmVhZGVyQnVpbGRlcjo6c3RyaWN0TW9kZSgKLSAgICAgICZidWlsZGVyc1tr
QnVpbGRlckNvbmZpZ1N0cmljdF0uc2V0dGluZ3NfKTsKLQotICByZXR1cm4gYnVpbGRlcnM7Ci19
Ci0KLWV4dGVybiAiQyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgY29uc3QgYXV0byYgcmVhZGVyX2J1aWxkZXJzID0gSW5p
dGlhbGl6ZSgpOwotCi0gIGZvciAoY29uc3QgYXV0byYgcmVhZGVyX2J1aWxkZXIgOiByZWFkZXJf
YnVpbGRlcnMpIHsKLSAgICAvLyBQYXJzZSBKc29uLgotICAgIGF1dG8gcmVhZGVyID0KLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEpzb246OkNoYXJSZWFkZXI+KHJlYWRlcl9idWlsZGVyLm5ld0No
YXJSZWFkZXIoKSk7Ci0gICAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgICBib29sIHJlcyA9IHJlYWRl
ci0+cGFyc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEgKyBz
aXplKSwgJnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIgLyogZXJy
cyAqLyk7Ci0gICAgaWYgKCFyZXMpIHsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIC8v
IFdyaXRlIGFuZCByZS1yZWFkIGpzb24uCi0gICAgY29uc3QgSnNvbjo6U3RyZWFtV3JpdGVyQnVp
bGRlciB3cml0ZXJfYnVpbGRlcjsKLSAgICBhdXRvIHdyaXRlciA9Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxKc29uOjpTdHJlYW1Xcml0ZXI+KHdyaXRlcl9idWlsZGVyLm5ld1N0cmVhbVdyaXRl
cigpKTsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBvdXRfc3RyZWFtOwotICAgIHdyaXRlci0+d3Jp
dGUocm9vdCwgJm91dF9zdHJlYW0pOwotICAgIHN0ZDo6c3RyaW5nIG91dHB1dF9qc29uID0gb3V0
X3N0cmVhbS5zdHIoKTsKLQotICAgIEpzb246OlZhbHVlIHJvb3RfYWdhaW47Ci0gICAgcmVzID0g
cmVhZGVyLT5wYXJzZShvdXRwdXRfanNvbi5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRfanNvbi5kYXRhKCkgKyBvdXRwdXRfanNvbi5sZW5ndGgoKSwgJnJvb3RfYWdhaW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyIC8qIGVycnMgKi8pOwotICAgIGlmICgh
cmVzKSB7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICAvLyBSdW4gZXF1YWxpdHkgdGVz
dC4KLSAgICAvLyBOb3RlOiBUaGlzIGFjdHVhbGx5IGNhdXNlcyB0aGUgSnNvbjo6VmFsdWUgdHJl
ZSB0byBiZSB0cmF2ZXJzZWQgYW5kIGFsbAotICAgIC8vIHRoZSB2YWx1ZXMgdG8gYmUgZGVyZWZl
cmVuY2VkICh1bnRpbCB0d28gb2YgdGhlbSBhcmUgZm91bmQgbm90IGVxdWFsKSwKLSAgICAvLyB3
aGljaCBpcyBncmVhdCBmb3IgZGV0ZWN0aW5nIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3Mgd2hlbiBj
b21waWxlZCB3aXRoCi0gICAgLy8gQWRkcmVzc1Nhbml0aXplci4gVGhlIHJlc3VsdCBvZiB0aGUg
Y29tcGFyaXNvbiBpcyBpZ25vcmVkLCBhcyBpdCBpcwotICAgIC8vIGV4cGVjdGVkIHRoYXQgYm90
aCB0aGUgb3JpZ2luYWwgYW5kIHRoZSByZS1yZWFkIHZlcnNpb24gd2lsbCBkaWZmZXIgZnJvbQot
ICAgIC8vIHRpbWUgdG8gdGltZSAoZS5nLiBkdWUgdG8gZmxvYXRpbmcgcG9pbnQgYWNjdXJhY3kg
bG9zcykuCi0gICAgKHZvaWQpKHJvb3QgPT0gcm9vdF9hZ2Fpbik7Ci0gIH0KLQotICByZXR1cm4g
MDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9nZW5lcmF0ZWQvdmVyc2lvbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL2dlbmVyYXRlZC92ZXJzaW9uLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzYwODIxZTI4M2Q1ZTA3ZTkwNmFkMThl
ODNjODljM2MwYWIzMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL2dlbmVyYXRlZC92ZXJzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0v
LyBETyBOT1QgRURJVC4gVGhpcyBmaWxlIChhbmQgInZlcnNpb24iKSBpcyBhIHRlbXBsYXRlIHVz
ZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbQotLy8gKGVpdGhlciBDTWFrZSBvciBNZXNvbikgdG8gZ2Vu
ZXJhdGUgYSAidmVyc2lvbi5oIiBoZWFkZXIgZmlsZS4KLSNpZm5kZWYgSlNPTl9WRVJTSU9OX0hf
SU5DTFVERUQKLSNkZWZpbmUgSlNPTl9WRVJTSU9OX0hfSU5DTFVERUQKLQotI2RlZmluZSBKU09O
Q1BQX1ZFUlNJT05fU1RSSU5HICIxLjkuMCIKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9OX01BSk9S
IDEKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9OX01JTk9SIDkKLSNkZWZpbmUgSlNPTkNQUF9WRVJT
SU9OX1BBVENIIDAKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9OX1FVQUxJRklFUgotI2RlZmluZSBK
U09OQ1BQX1ZFUlNJT05fSEVYQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgKChKU09OQ1BQX1ZFUlNJT05fTUFKT1IgPDwgMjQpIHwgKEpTT05DUFBfVkVSU0lPTl9N
SU5PUiA8PCAxNikgfCBcCi0gICAoSlNPTkNQUF9WRVJTSU9OX1BBVENIIDw8IDgpKQotCi0jaWZk
ZWYgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi0jdW5kZWYgSlNPTkNQUF9VU0lOR19TRUNV
UkVfTUVNT1JZCi0jZW5kaWYKLSNkZWZpbmUgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZIDAK
LS8vIElmIG5vbi16ZXJvLCB0aGUgbGlicmFyeSB6ZXJvZXMgYW55IG1lbW9yeSB0aGF0IGl0IGhh
cyBhbGxvY2F0ZWQgYmVmb3JlCi0vLyBpdCBmcmVlcyBpdHMgbWVtb3J5LgotCi0jZW5kaWYgIC8v
IEpTT05fVkVSU0lPTl9IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5jbGFuZy1mb3JtYXQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlLy5jbGFuZy1mb3JtYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMzcy
ZmM1YmVlYjIwYmMyNTRkMzY4NDhhMjI0MjA2OWZjOWM4NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uY2xhbmctZm9ybWF0CisrKyAvZGV2L251
bGwKQEAgLTEsNDcgKzAsMCBAQAotLS0tCi0jIEJhc2VkT25TdHlsZTogIExMVk0KLUFjY2Vzc01v
ZGlmaWVyT2Zmc2V0OiAtMgotQ29uc3RydWN0b3JJbml0aWFsaXplckluZGVudFdpZHRoOiA0Ci1B
bGlnbkVzY2FwZWROZXdsaW5lc0xlZnQ6IGZhbHNlCi1BbGlnblRyYWlsaW5nQ29tbWVudHM6IHRy
dWUKLUFsbG93QWxsUGFyYW1ldGVyc09mRGVjbGFyYXRpb25Pbk5leHRMaW5lOiB0cnVlCi1BbGxv
d1Nob3J0SWZTdGF0ZW1lbnRzT25BU2luZ2xlTGluZTogZmFsc2UKLUFsbG93U2hvcnRMb29wc09u
QVNpbmdsZUxpbmU6IGZhbHNlCi1BbHdheXNCcmVha1RlbXBsYXRlRGVjbGFyYXRpb25zOiBmYWxz
ZQotQWx3YXlzQnJlYWtCZWZvcmVNdWx0aWxpbmVTdHJpbmdzOiBmYWxzZQotQnJlYWtCZWZvcmVC
aW5hcnlPcGVyYXRvcnM6IGZhbHNlCi1CcmVha0JlZm9yZVRlcm5hcnlPcGVyYXRvcnM6IHRydWUK
LUJyZWFrQ29uc3RydWN0b3JJbml0aWFsaXplcnNCZWZvcmVDb21tYTogZmFsc2UKLUJpblBhY2tQ
YXJhbWV0ZXJzOiBmYWxzZQotQ29sdW1uTGltaXQ6ICAgICA4MAotQ29uc3RydWN0b3JJbml0aWFs
aXplckFsbE9uT25lTGluZU9yT25lUGVyTGluZTogZmFsc2UKLURlcml2ZVBvaW50ZXJCaW5kaW5n
OiBmYWxzZQotRXhwZXJpbWVudGFsQXV0b0RldGVjdEJpblBhY2tpbmc6IGZhbHNlCi1JbmRlbnRD
YXNlTGFiZWxzOiBmYWxzZQotTWF4RW1wdHlMaW5lc1RvS2VlcDogMQotTmFtZXNwYWNlSW5kZW50
YXRpb246IE5vbmUKLU9iakNTcGFjZUJlZm9yZVByb3RvY29sTGlzdDogdHJ1ZQotUGVuYWx0eUJy
ZWFrQmVmb3JlRmlyc3RDYWxsUGFyYW1ldGVyOiAxOQotUGVuYWx0eUJyZWFrQ29tbWVudDogNjAK
LVBlbmFsdHlCcmVha1N0cmluZzogMTAwMAotUGVuYWx0eUJyZWFrRmlyc3RMZXNzTGVzczogMTIw
Ci1QZW5hbHR5RXhjZXNzQ2hhcmFjdGVyOiAxMDAwMDAwCi1QZW5hbHR5UmV0dXJuVHlwZU9uSXRz
T3duTGluZTogNjAKLVBvaW50ZXJCaW5kc1RvVHlwZTogdHJ1ZQotU3BhY2VzQmVmb3JlVHJhaWxp
bmdDb21tZW50czogMQotQ3BwMTFCcmFjZWRMaXN0U3R5bGU6IHRydWUKLVN0YW5kYXJkOiAgICAg
ICAgQ3BwMTEKLUluZGVudFdpZHRoOiAgICAgMgotVGFiV2lkdGg6ICAgICAgICA4Ci1Vc2VUYWI6
ICAgICAgICAgIE5ldmVyCi1CcmVha0JlZm9yZUJyYWNlczogQXR0YWNoCi1JbmRlbnRGdW5jdGlv
bkRlY2xhcmF0aW9uQWZ0ZXJUeXBlOiBmYWxzZQotU3BhY2VzSW5QYXJlbnRoZXNlczogZmFsc2UK
LVNwYWNlc0luQW5nbGVzOiAgZmFsc2UKLVNwYWNlSW5FbXB0eVBhcmVudGhlc2VzOiBmYWxzZQot
U3BhY2VzSW5DU3R5bGVDYXN0UGFyZW50aGVzZXM6IGZhbHNlCi1TcGFjZUFmdGVyQ29udHJvbFN0
YXRlbWVudEtleXdvcmQ6IHRydWUKLVNwYWNlQmVmb3JlQXNzaWdubWVudE9wZXJhdG9yczogdHJ1
ZQotQ29udGludWF0aW9uSW5kZW50V2lkdGg6IDQKLS4uLgotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5n
aXRhdHRyaWJ1dGVzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0YXR0cmlidXRlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjJkMmI3YTQ1NWEzOGE0YzNlZWU0ZmRhNjAyYTU4NmYzOTZhYjgxMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5naXRhdHRyaWJ1
dGVzCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotKiAgICAgICAgICAgdGV4dD1hdXRv
Ci0qLmggICAgICAgICB0ZXh0Ci0qLmNwcCAgICAgICB0ZXh0Ci0qLmpzb24gICAgICB0ZXh0Ci0q
LmluICAgICAgICB0ZXh0Ci0qLnNoICAgICAgICBlb2w9bGYKLSouYmF0ICAgICAgIGVvbD1jcmxm
Ci0qLnZjcHJvaiAgICBlb2w9Y3JsZgotKi52Y3hwcm9qICAgZW9sPWNybGYKLSouc2xuICAgICAg
IGVvbD1jcmxmCi1kZXZ0b29scy9hZ2VudF92bSogZW9sPWNybGYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
LmdpdGh1Yi9JU1NVRV9URU1QTEFURS9idWdfcmVwb3J0Lm1kIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0aHViL0lTU1VF
X1RFTVBMQVRFL2J1Z19yZXBvcnQubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1
NDc3MDk3YTYzNWIxNjllMWI3OTY3MzJhZDUyZWY3MTQ2NWNkZmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0aHViL0lTU1VFX1RFTVBMQVRF
L2J1Z19yZXBvcnQubWQKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0tLS0KLW5hbWU6
IEJ1ZyByZXBvcnQKLWFib3V0OiBDcmVhdGUgYSByZXBvcnQgdG8gaGVscCB1cyBpbXByb3ZlCi10
aXRsZTogJycKLWxhYmVsczogJycKLWFzc2lnbmVlczogJycKLQotLS0tCi0KLSoqRGVzY3JpYmUg
dGhlIGJ1ZyoqCi1BIGNsZWFyIGFuZCBjb25jaXNlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIGJ1
ZyBpcy4KLQotKipUbyBSZXByb2R1Y2UqKgotU3RlcHMgdG8gcmVwcm9kdWNlIHRoZSBiZWhhdmlv
cjoKLTEuCi0KLSoqRXhwZWN0ZWQgYmVoYXZpb3IqKgotQSBjbGVhciBhbmQgY29uY2lzZSBkZXNj
cmlwdGlvbiBvZiB3aGF0IHlvdSBleHBlY3RlZCB0byBoYXBwZW4uCi0KLSoqRGVza3RvcCAocGxl
YXNlIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24pOioqCi0gLSBPUzogW2UuZy4g
aU9TXQotIC0gTWVzb24gdmVyc2lvbgotIC0gTmluamEgdmVyc2lvbgotCi0qKkFkZGl0aW9uYWwg
Y29udGV4dCoqCi1BZGQgYW55IG90aGVyIGNvbnRleHQgYWJvdXQgdGhlIHByb2JsZW0gaGVyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9mZWF0dXJlX3JlcXVlc3Qu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlLy5naXRodWIvSVNTVUVfVEVNUExBVEUvZmVhdHVyZV9yZXF1ZXN0Lm1kCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmNiYmU3ZDYxNTU4YWRkZTNjYmZkMGM3YTYzYTY3
YzI3ZWQ2ZDMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9mZWF0dXJlX3JlcXVlc3QubWQKKysrIC9kZXYv
bnVsbApAQCAtMSwyMCArMCwwIEBACi0tLS0KLW5hbWU6IEZlYXR1cmUgcmVxdWVzdAotYWJvdXQ6
IFN1Z2dlc3QgYW4gaWRlYSBmb3IgdGhpcyBwcm9qZWN0Ci10aXRsZTogJycKLWxhYmVsczogJycK
LWFzc2lnbmVlczogJycKLQotLS0tCi0KLSoqSXMgeW91ciBmZWF0dXJlIHJlcXVlc3QgcmVsYXRl
ZCB0byBhIHByb2JsZW0/IFBsZWFzZSBkZXNjcmliZS4qKgotQSBjbGVhciBhbmQgY29uY2lzZSBk
ZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSBwcm9ibGVtIGlzLiBFeC4gSSdtIGFsd2F5cyBmcnVzdHJh
dGVkIHdoZW4gWy4uLl0KLQotKipEZXNjcmliZSB0aGUgc29sdXRpb24geW91J2QgbGlrZSoqCi1B
IGNsZWFyIGFuZCBjb25jaXNlIGRlc2NyaXB0aW9uIG9mIHdoYXQgeW91IHdhbnQgdG8gaGFwcGVu
LgotCi0qKkRlc2NyaWJlIGFsdGVybmF0aXZlcyB5b3UndmUgY29uc2lkZXJlZCoqCi1BIGNsZWFy
IGFuZCBjb25jaXNlIGRlc2NyaXB0aW9uIG9mIGFueSBhbHRlcm5hdGl2ZSBzb2x1dGlvbnMgb3Ig
ZmVhdHVyZXMgeW91J3ZlIGNvbnNpZGVyZWQuCi0KLSoqQWRkaXRpb25hbCBjb250ZXh0KioKLUFk
ZCBhbnkgb3RoZXIgY29udGV4dCBvciBzY3JlZW5zaG90cyBhYm91dCB0aGUgZmVhdHVyZSByZXF1
ZXN0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5naXRpZ25vcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5naXRpZ25vcmUK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MjA2OTdjMjMzNTgwMmNiMzVkMzYwZjU5
NThhMGRlNmU4YTIwMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotL2J1
aWxkLwotL2J1aWxkLSovCi0qLnB5YwotKi5zd3AKLSouYWN0dWFsCi0qLmFjdHVhbC1yZXdyaXRl
Ci0qLnByb2Nlc3Mtb3V0cHV0Ci0qLnJld3JpdGUKLS9iaW4vCi0vbGlicy8KLS9kb2MvZG94eWZp
bGUKLS9kaXN0LwotIy92ZXJzaW9uCi0jL2luY2x1ZGUvanNvbi92ZXJzaW9uLmgKLQotIyBNU1ZD
IHByb2plY3QgZmlsZXM6Ci0qLnNsbgotKi52Y3hwcm9qCi0qLmZpbHRlcnMKLSoudXNlcgotKi5z
ZGYKLSoub3BlbnNkZgotKi5zdW8KLQotIyBNU1ZDIGJ1aWxkIGZpbGVzOgotKi5saWIKLSoub2Jq
Ci0qLnRsb2cvCi0qLnBkYgotCi0jIENNYWtlLWdlbmVyYXRlZCBmaWxlczoKLUNNYWtlRmlsZXMv
Ci0qLmNtYWtlCi0vcGtnLWNvbmZpZy9qc29uY3BwLnBjCi1qc29uY3BwX2xpYl9zdGF0aWMuZGly
LwotCi0jIEluIGNhc2Ugc29tZW9uZSBydW5zIGNtYWtlIGluIHRoZSByb290LWRpcjoKLS9DTWFr
ZUNhY2hlLnR4dAotL01ha2VmaWxlCi0vaW5jbHVkZS9NYWtlZmlsZQotL3NyYy9NYWtlZmlsZQot
L3NyYy9qc29udGVzdHJ1bm5lci9NYWtlZmlsZQotL3NyYy9qc29udGVzdHJ1bm5lci9qc29udGVz
dHJ1bm5lcl9leGUKLS9zcmMvbGliX2pzb24vTWFrZWZpbGUKLS9zcmMvdGVzdF9saWJfanNvbi9N
YWtlZmlsZQotL3NyYy90ZXN0X2xpYl9qc29uL2pzb25jcHBfdGVzdAotKi5hCi0KLSMgZWNsaXBz
ZSBwcm9qZWN0IGZpbGVzCi0ucHJvamVjdAotLmNwcm9qZWN0Ci0vLnNldHRpbmdzLwotCi0jIERT
X1N0b3JlCi0uRFNfU3RvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpcy55bWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50
cmF2aXMueW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjQ5YjQ2MzNiZGI5OWRk
ZDAxZDRjMTIyYjQzNzY3ZTA0OTc4YWViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpcy55bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi0jIEJ1aWxkIG1hdHJpeCAvIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgZXhwbGFp
bmVkIG9uOgotIyBodHRwOi8vYWJvdXQudHJhdmlzLWNpLm9yZy9kb2NzL3VzZXIvYnVpbGQtY29u
ZmlndXJhdGlvbi8KLSMgVGhpcyBmaWxlIGNhbiBiZSB2YWxpZGF0ZWQgb246IGh0dHA6Ly93d3cu
eWFtbGxpbnQuY29tLwotIyBPciB1c2luZyB0aGUgUnVieSBiYXNlZCB0cmF2ZWwgY29tbWFuZCBs
aW5lIHRvb2w6Ci0jIGdlbSBpbnN0YWxsIHRyYXZpcyAtLW5vLXJkb2MgLS1uby1yaQotIyB0cmF2
aXMgbGludCAudHJhdmlzLnltbAotbGFuZ3VhZ2U6IGNwcAotc3VkbzogZmFsc2UKLWFkZG9uczoK
LSAgaG9tZWJyZXc6Ci0gICAgcGFja2FnZXM6Ci0gICAgLSBtZXNvbgotICAgIC0gbmluamEKLSAg
ICB1cGRhdGU6IGZhbHNlICMgZG8gbm90IHVwZGF0ZSBob21lYnJldyBieSBkZWZhdWx0Ci0gIGFw
dDoKLSAgICBzb3VyY2VzOgotICAgIC0gdWJ1bnR1LXRvb2xjaGFpbi1yLXRlc3QKLSAgICAtIGxs
dm0tdG9vbGNoYWluLXhlbmlhbC04Ci0gICAgcGFja2FnZXM6Ci0gICAgLSBjbGFuZy04Ci0gICAg
LSB2YWxncmluZAotbWF0cml4OgotICBhbGxvd19mYWlsdXJlczoKLSAgICAtIG9zOiBvc3gKLSAg
aW5jbHVkZToKLSAgICAtIG5hbWU6IE1hYyBjbGFuZyBtZXNvbiBzdGF0aWMgcmVsZWFzZSB0ZXN0
aW5nCi0gICAgICBvczogb3N4Ci0gICAgICBvc3hfaW1hZ2U6IHhjb2RlMTAuMgotICAgICAgY29t
cGlsZXI6IGNsYW5nCi0gICAgICBlbnY6Ci0gICAgICAgICBDWFg9ImNsYW5nKysiCi0gICAgICAg
ICBDQz0iY2xhbmciCi0gICAgICAgICBMSUJfVFlQRT1zdGF0aWMKLSAgICAgICAgIEJVSUxEX1RZ
UEU9cmVsZWFzZQotICAgICAgc2NyaXB0OiAuLy50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVy
LnNoCi0gICAgLSBuYW1lOiBMaW51eCB4ZW5pYWwgY2xhbmcgbWVzb24gc3RhdGljIHJlbGVhc2Ug
dGVzdGluZwotICAgICAgb3M6IGxpbnV4Ci0gICAgICBkaXN0OiB4ZW5pYWwKLSAgICAgIGNvbXBp
bGVyOiBjbGFuZwotICAgICAgZW52OgotICAgICAgICAgQ1hYPSJjbGFuZysrIgotICAgICAgICAg
Q0M9ImNsYW5nIgotICAgICAgICAgTElCX1RZUEU9c3RhdGljCi0gICAgICAgICBCVUlMRF9UWVBF
PXJlbGVhc2UKLSAgICAgICMgYmVmb3JlX2luc3RhbGwgYW5kIGluc3RhbGwgc3RlcHMgb25seSBu
ZWVkZWQgZm9yIGxpbnV4IG1lc29uIGJ1aWxkcwotICAgICAgYmVmb3JlX2luc3RhbGw6Ci0gICAg
ICAgICAgLSBzb3VyY2UgLi8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmJlZm9yZV9pbnN0YWxsLiR7
VFJBVklTX09TX05BTUV9LnNoCi0gICAgICBpbnN0YWxsOgotICAgICAgICAgICAtIHNvdXJjZSAu
Ly50cmF2aXNfc2NyaXB0cy90cmF2aXMuaW5zdGFsbC4ke1RSQVZJU19PU19OQU1FfS5zaAotICAg
ICAgc2NyaXB0OiAuLy50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVyLnNoCi0gICAgLSBuYW1l
OiBMaW51eCB4ZW5pYWwgZ2NjIGNtYWtlIGNvdmVyYWdlCi0gICAgICBvczogbGludXgKLSAgICAg
IGRpc3Q6IHhlbmlhbAotICAgICAgY29tcGlsZXI6IGdjYwotICAgICAgZW52OgotICAgICAgICBD
WFg9ZysrCi0gICAgICAgIENDPWdjYwotICAgICAgICBET19Db3ZlcmFnZT1PTgotICAgICAgICBC
VUlMRF9UT09MPSJVbml4IE1ha2VmaWxlcyIKLSAgICAgICAgQlVJTERfVFlQRT1EZWJ1ZwotICAg
ICAgICBMSUJfVFlQRT1zaGFyZWQKLSAgICAgICAgREVTVERJUj0vdG1wL2NtYWtlX2pzb25fY3Bw
Ci0gICAgICBzY3JpcHQ6IC4vLnRyYXZpc19zY3JpcHRzL2NtYWtlX2J1aWxkZXIuc2gKLW5vdGlm
aWNhdGlvbnM6Ci0gIGVtYWlsOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3Njcmlw
dHMvY21ha2VfYnVpbGRlci5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL2NtYWtlX2J1aWxkZXIu
c2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNjYjMzMzEyZWEwZjIyY2I1Yjk2OWM2
ZGFlYmZjNzRmYmJkYmEyZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvY21ha2VfYnVpbGRlci5zaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEzMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBzaAotIyBUaGlzIHNjcmlwdCBj
YW4gYmUgdXNlZCBvbiB0aGUgY29tbWFuZCBsaW5lIGRpcmVjdGx5IHRvIGNvbmZpZ3VyZSBzZXZl
cmFsCi0jIGRpZmZlcmVudCBidWlsZCBlbnZpcm9ubWVudHMuCi0jIFRoaXMgaXMgY2FsbGVkIGJ5
IGAudHJhdmlzLnltbGAgdmlhIFRyYXZpcyBDSS4KLSMgVHJhdmlzIHN1cHBsaWVzICRUUkFWSVNf
T1NfTkFNRS4KLSMgIGh0dHA6Ly9kb2NzLnRyYXZpcy1jaS5jb20vdXNlci9tdWx0aS1vcy8KLSMg
T3VyIC50cmF2aXMueW1sIGFsc28gZGVmaW5lczoKLQotIyAgIC0gQlVJTERfVFlQRT1SZWxlYXNl
L0RlYnVnCi0jICAgLSBMSUJfVFlQRT1zdGF0aWMvc2hhcmVkCi0jCi0jIE9wdGlvbmFsIGVudmly
b25tZW50YWwgdmFyaWFibGVzCi0jICAgLSBERVNURElSIDwtIHVzZWQgZm9yIHNldHRpbmcgdGhl
IGluc3RhbGwgcHJlZml4Ci0jICAgLSBCVUlMRF9UT09MPVsiVW5peCBNYWtlZmlsZSJ8Ik5pbmph
Il0KLSMgICAtIEJVSUxETkFNRSA8LSBob3cgdG8gaWRlbnRpZnkgdGhpcyBidWlsZCBvbiB0aGUg
ZGFzaGJvYXJkCi0jICAgLSBET19NZW1DaGVjayA8LSBpZiBzZXQsIHRyeSB0byB1c2UgdmFsZ3Jp
bmQKLSMgICAtIERPX0NvdmVyYWdlIDwtIGlmIHNldCwgdHJ5IHRvIGRvIGRhc2hib2FyZCBjb3Zl
cmFnZSB0ZXN0aW5nCi0jCi0KLWVudl9zZXQ9MQotaWYgJHtCVUlMRF9UWVBFK2ZhbHNlfTsgdGhl
bgotICBlY2hvICJCVUlMRF9UWVBFIG5vdCBzZXQgaW4gZW52aXJvbm1lbnQuIgotICBlbnZfc2V0
PTAKLWZpCi1pZiAke0xJQl9UWVBFK2ZhbHNlfTsgdGhlbgotICBlY2hvICJMSUJfVFlQRSBub3Qg
c2V0IGluIGVudmlyb25tZW50LiIKLSAgZW52X3NldD0wCi1maQotaWYgJHtDWFgrZmFsc2V9OyB0
aGVuCi0gIGVjaG8gIkNYWCBub3Qgc2V0IGluIGVudmlyb25tZW50LiIKLSAgZW52X3NldD0wCi1m
aQotCi0KLWlmIFsgJHtlbnZfc2V0fSAtZXEgMCBdOyB0aGVuCi0gIGVjaG8gIlVTQUdFOiAgQ1hY
PSQod2hpY2ggY2xhbmcrKykgIEJVSUxEX1RZUEU9W1JlbGVhc2V8RGVidWddIExJQl9UWVBFPVtz
dGF0aWN8c2hhcmVkXSAkMCIKLSAgZWNobyAiIgotICBlY2hvICJFeGFtcGxlczoiCi0gIGVjaG8g
IiAgICAgICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1SZWxlYXNlIExJQl9U
WVBFPXNoYXJlZCBERVNURElSPS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAg
ICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1EZWJ1ZyAgIExJQl9UWVBFPXNo
YXJlZCBERVNURElSPS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAg
Q1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1SZWxlYXNlIExJQl9UWVBFPXN0YXRpYyBE
RVNURElSPS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQo
d2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1EZWJ1ZyAgIExJQl9UWVBFPXN0YXRpYyBERVNURElS
PS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0KLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGlj
aCBnKyspICAgICBCVUlMRF9UWVBFPVJlbGVhc2UgTElCX1RZUEU9c2hhcmVkIERFU1RESVI9L3Rt
cC9jbWFrZV9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBnKysp
ICAgICBCVUlMRF9UWVBFPURlYnVnICAgTElCX1RZUEU9c2hhcmVkIERFU1RESVI9L3RtcC9jbWFr
ZV9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBnKyspICAgICBC
VUlMRF9UWVBFPVJlbGVhc2UgTElCX1RZUEU9c3RhdGljIERFU1RESVI9L3RtcC9jbWFrZV9qc29u
X2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBnKyspICAgICBCVUlMRF9U
WVBFPURlYnVnICAgTElCX1RZUEU9c3RhdGljIERFU1RESVI9L3RtcC9jbWFrZV9qc29uX2NwcCAk
MCIKLQotICBleGl0IC0xCi1maQotCi1pZiAke0RFU1RESVIrZmFsc2V9OyB0aGVuCi0gIERFU1RE
SVI9Ii91c3IvbG9jYWwiCi1maQotCi0jIC1lOiBmYWlsIG9uIGVycm9yCi0jIC12OiBzaG93IGNv
bW1hbmRzCi0jIC14OiBzaG93IGV4cGFuZGVkIGNvbW1hbmRzCi1zZXQgLXZleAotCi1lbnYgfCBz
b3J0Ci0KLXdoaWNoIGNtYWtlCi1jbWFrZSAtLXZlcnNpb24KLQotZWNobyAke0NYWH0KLSR7Q1hY
fSAtLXZlcnNpb24KLV9DT01QSUxFUl9OQU1FPWBiYXNlbmFtZSAke0NYWH1gCi1pZiBbICIke0JV
SUxEX1RZUEV9IiA9PSAic2hhcmVkIiBdOyB0aGVuCi0gIF9DTUFLRV9CVUlMRF9TSEFSRURfTElC
Uz1PTgotZWxzZQotICBfQ01BS0VfQlVJTERfU0hBUkVEX0xJQlM9T0ZGCi1maQotCi1DVEVTVF9U
RVNUSU5HX09QVElPTj0iLUQgRXhwZXJpbWVudGFsVGVzdCIKLSMgICAtIERPX01lbUNoZWNrIDwt
IGlmIHNldCwgdHJ5IHRvIHVzZSB2YWxncmluZAotaWYgISAke0RPX01lbUNoZWNrK2ZhbHNlfTsg
dGhlbgotICAgdmFsZ3JpbmQgLS12ZXJzaW9uCi0gICBDVEVTVF9URVNUSU5HX09QVElPTj0iLUQg
RXhwZXJpbWVudGFsTWVtQ2hlY2siCi1lbHNlCi0jICAgLSBET19Db3ZlcmFnZSA8LSBpZiBzZXQs
IHRyeSB0byBkbyBkYXNoYm9hcmQgY292ZXJhZ2UgdGVzdGluZwotICBpZiAhICR7RE9fQ292ZXJh
Z2UrZmFsc2V9OyB0aGVuCi0gICAgIGV4cG9ydCBDWFhGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0
ZXN0LWNvdmVyYWdlIgotICAgICBleHBvcnQgTERGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0ZXN0
LWNvdmVyYWdlIgotICAgICBDVEVTVF9URVNUSU5HX09QVElPTj0iLUQgRXhwZXJpbWVudGFsVGVz
dCAtRCBFeHBlcmltZW50YWxDb3ZlcmFnZSIKLSAgICAgI2djb3YgLS12ZXJzaW9uCi0gIGZpCi1m
aQotCi0jICBOaW5qYSAgICAgICAgICAgICAgICAgICAgICAgID0gR2VuZXJhdGVzIGJ1aWxkLm5p
bmphIGZpbGVzLgotaWYgJHtCVUlMRF9UT09MK2ZhbHNlfTsgdGhlbgotICBCVUlMRF9UT09MPSJO
aW5qYSIKLSAgZXhwb3J0IF9CVUlMRF9FWEU9bmluamEKLSAgd2hpY2ggbmluamEKLSAgbmluamEg
LS12ZXJzaW9uCi1lbHNlCi0jICBVbml4IE1ha2VmaWxlcyAgICAgICAgICAgICAgID0gR2VuZXJh
dGVzIHN0YW5kYXJkIFVOSVggbWFrZWZpbGVzLgotICBleHBvcnQgX0JVSUxEX0VYRT1tYWtlCi1m
aQotCi1fQlVJTERfRElSX05BTUU9ImJ1aWxkLWNtYWtlXyR7QlVJTERfVFlQRX1fJHtMSUJfVFlQ
RX1fJHtfQ09NUElMRVJfTkFNRX1fJHtfQlVJTERfRVhFfSIKLW1rZGlyIC1wICR7X0JVSUxEX0RJ
Ul9OQU1FfQotY2QgIiR7X0JVSUxEX0RJUl9OQU1FfSIKLSAgaWYgJHtCVUlMRE5BTUUrZmFsc2V9
OyB0aGVuCi0gICAgIF9IT1NUTkFNRT1gaG9zdG5hbWUgLXNgCi0gICAgIEJVSUxETkFNRT0iJHtf
SE9TVE5BTUV9XyR7QlVJTERfVFlQRX1fJHtMSUJfVFlQRX1fJHtfQ09NUElMRVJfTkFNRX1fJHtf
QlVJTERfRVhFfSIKLSAgZmkKLSAgY21ha2UgXAotICAgIC1HICIke0JVSUxEX1RPT0x9IiBcCi0g
ICAgLURCVUlMRE5BTUU6U1RSSU5HPSIke0JVSUxETkFNRX0iIFwKLSAgICAtRENNQUtFX0NYWF9D
T01QSUxFUjpQQVRIPSR7Q1hYfSBcCi0gICAgLURDTUFLRV9CVUlMRF9UWVBFOlNUUklORz0ke0JV
SUxEX1RZUEV9IFwKLSAgICAtREJVSUxEX1NIQVJFRF9MSUJTOkJPT0w9JHtfQ01BS0VfQlVJTERf
U0hBUkVEX0xJQlN9IFwKLSAgICAtRENNQUtFX0lOU1RBTExfUFJFRklYOlBBVEg9JHtERVNURElS
fSBcCi0gICAgLi4vCi0KLSAgY3Rlc3QgLUMgJHtCVUlMRF9UWVBFfSAtRCBFeHBlcmltZW50YWxT
dGFydCAtRCBFeHBlcmltZW50YWxDb25maWd1cmUgLUQgRXhwZXJpbWVudGFsQnVpbGQgJHtDVEVT
VF9URVNUSU5HX09QVElPTn0gLUQgRXhwZXJpbWVudGFsU3VibWl0Ci0gICMgRmluYWwgc3RlcCBp
cyB0byB2ZXJpZnkgdGhhdCBpbnN0YWxsYXRpb24gc3VjY2VlZHMKLSAgY21ha2UgLS1idWlsZCAu
IC0tY29uZmlnICR7QlVJTERfVFlQRX0gLS10YXJnZXQgaW5zdGFsbAotCi0gIGlmIFsgIiR7REVT
VERJUn0iICE9ICIvdXNyL2xvY2FsIiBdOyB0aGVuCi0gICAgICR7X0JVSUxEX0VYRX0gaW5zdGFs
bAotICBmaQotY2QgLQotCi1pZiAke0NMRUFOVVArZmFsc2V9OyB0aGVuCi0gIGVjaG8gIlNraXBw
aW5nIGNsZWFudXA6IGJ1aWxkIGRpcmVjdG9yeSB3aWxsIHBlcnNpc3QuIgotZWxzZQotICBybSAt
ciAiJHtfQlVJTERfRElSX05BTUV9IgotZmkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3Jp
cHRzL21lc29uX2J1aWxkZXIuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVy
LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkYmYwM2NiMmY1OGI2MWM5MmVkNDRj
YzdjYzA2N2NiZTg5Y2FmZGEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL21lc29uX2J1aWxkZXIuc2gKKysrIC9kZXYv
bnVsbApAQCAtMSw4MSArMCwwIEBACi0jIS91c3IvYmluL2VudiBzaAotIyBUaGlzIHNjcmlwdCBj
YW4gYmUgdXNlZCBvbiB0aGUgY29tbWFuZCBsaW5lIGRpcmVjdGx5IHRvIGNvbmZpZ3VyZSBzZXZl
cmFsCi0jIGRpZmZlcmVudCBidWlsZCBlbnZpcm9ubWVudHMuCi0jIFRoaXMgaXMgY2FsbGVkIGJ5
IGAudHJhdmlzLnltbGAgdmlhIFRyYXZpcyBDSS4KLSMgVHJhdmlzIHN1cHBsaWVzICRUUkFWSVNf
T1NfTkFNRS4KLSMgIGh0dHA6Ly9kb2NzLnRyYXZpcy1jaS5jb20vdXNlci9tdWx0aS1vcy8KLSMg
T3VyIC50cmF2aXMueW1sIGFsc28gZGVmaW5lczoKLQotIyAgIC0gQlVJTERfVFlQRT1yZWxlYXNl
L2RlYnVnCi0jICAgLSBMSUJfVFlQRT1zdGF0aWMvc2hhcmVkCi0KLWVudl9zZXQ9MQotaWYgJHtC
VUlMRF9UWVBFK2ZhbHNlfTsgdGhlbgotICBlY2hvICJCVUlMRF9UWVBFIG5vdCBzZXQgaW4gZW52
aXJvbm1lbnQuIgotICBlbnZfc2V0PTAKLWZpCi1pZiAke0xJQl9UWVBFK2ZhbHNlfTsgdGhlbgot
ICBlY2hvICJMSUJfVFlQRSBub3Qgc2V0IGluIGVudmlyb25tZW50LiIKLSAgZW52X3NldD0wCi1m
aQotaWYgJHtDWFgrZmFsc2V9OyB0aGVuCi0gIGVjaG8gIkNYWCBub3Qgc2V0IGluIGVudmlyb25t
ZW50LiIKLSAgZW52X3NldD0wCi1maQotCi0KLWlmIFsgJHtlbnZfc2V0fSAtZXEgMCBdOyB0aGVu
Ci0gIGVjaG8gIlVTQUdFOiAgQ1hYPSQod2hpY2ggY2xhbmcrKykgIEJVSUxEX1RZUEU9W3JlbGVh
c2V8ZGVidWddIExJQl9UWVBFPVtzdGF0aWN8c2hhcmVkXSAkMCIKLSAgZWNobyAiIgotICBlY2hv
ICJFeGFtcGxlczoiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJ
TERfVFlQRT1yZWxlYXNlIExJQl9UWVBFPXNoYXJlZCBERVNURElSPS90bXAvbWVzb25fanNvbl9j
cHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQ
RT1kZWJ1ZyAgIExJQl9UWVBFPXNoYXJlZCBERVNURElSPS90bXAvbWVzb25fanNvbl9jcHAgJDAi
Ci0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1yZWxl
YXNlIExJQl9UWVBFPXN0YXRpYyBERVNURElSPS90bXAvbWVzb25fanNvbl9jcHAgJDAiCi0gIGVj
aG8gIiAgICAgICAgICAgQ1hYPSQod2hpY2ggY2xhbmcrKykgQlVJTERfVFlQRT1kZWJ1ZyAgIExJ
Ql9UWVBFPXN0YXRpYyBERVNURElSPS90bXAvbWVzb25fanNvbl9jcHAgJDAiCi0KLSAgZWNobyAi
ICAgICAgICAgICBDWFg9JCh3aGljaCBnKyspICAgICBCVUlMRF9UWVBFPXJlbGVhc2UgTElCX1RZ
UEU9c2hhcmVkIERFU1RESVI9L3RtcC9tZXNvbl9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAg
ICAgICBDWFg9JCh3aGljaCBnKyspICAgICBCVUlMRF9UWVBFPWRlYnVnICAgTElCX1RZUEU9c2hh
cmVkIERFU1RESVI9L3RtcC9tZXNvbl9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBD
WFg9JCh3aGljaCBnKyspICAgICBCVUlMRF9UWVBFPXJlbGVhc2UgTElCX1RZUEU9c3RhdGljIERF
U1RESVI9L3RtcC9tZXNvbl9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3
aGljaCBnKyspICAgICBCVUlMRF9UWVBFPWRlYnVnICAgTElCX1RZUEU9c3RhdGljIERFU1RESVI9
L3RtcC9tZXNvbl9qc29uX2NwcCAkMCIKLQotICBleGl0IC0xCi1maQotCi1pZiAke0RFU1RESVIr
ZmFsc2V9OyB0aGVuCi0gIERFU1RESVI9Ii91c3IvbG9jYWwiCi1maQotCi0jIC1lOiBmYWlsIG9u
IGVycm9yCi0jIC12OiBzaG93IGNvbW1hbmRzCi0jIC14OiBzaG93IGV4cGFuZGVkIGNvbW1hbmRz
Ci1zZXQgLXZleAotCi0KLWVudiB8IHNvcnQKLQotd2hpY2ggcHl0aG9uMwotd2hpY2ggbWVzb24K
LXdoaWNoIG5pbmphCi1lY2hvICR7Q1hYfQotJHtDWFh9IC0tdmVyc2lvbgotcHl0aG9uMyAtLXZl
cnNpb24KLW1lc29uIC0tdmVyc2lvbgotbmluamEgLS12ZXJzaW9uCi1fQ09NUElMRVJfTkFNRT1g
YmFzZW5hbWUgJHtDWFh9YAotX0JVSUxEX0RJUl9OQU1FPSJidWlsZC0ke0JVSUxEX1RZUEV9XyR7
TElCX1RZUEV9XyR7X0NPTVBJTEVSX05BTUV9IgotbWVzb24gLS1idWlsZHR5cGUgJHtCVUlMRF9U
WVBFfSAtLWRlZmF1bHQtbGlicmFyeSAke0xJQl9UWVBFfSAuICIke19CVUlMRF9ESVJfTkFNRX0i
Ci1uaW5qYSAtdiAtaiAyIC1DICIke19CVUlMRF9ESVJfTkFNRX0iCi0jbmluamEgLXYgLWogMiAt
QyAiJHtfQlVJTERfRElSX05BTUV9IiB0ZXN0Ci1jZCAiJHtfQlVJTERfRElSX05BTUV9IgotICBt
ZXNvbiB0ZXN0IC0tbm8tcmVidWlsZCAtLXByaW50LWVycm9ybG9ncwotCi0gIGlmIFsgIiR7REVT
VERJUn0iICE9ICIvdXNyL2xvY2FsIiBdOyB0aGVuCi0gICAgIG5pbmphIGluc3RhbGwKLSAgZmkK
LWNkIC0KLQotaWYgJHtDTEVBTlVQK2ZhbHNlfTsgdGhlbgotICBlY2hvICJTa2lwcGluZyBjbGVh
bnVwOiAgYnVpbGQgZGlyZWN0b3J5IHdpbGwgcGVyc2lzdC4iCi1lbHNlCi0gIHJtIC1yICIke19C
VUlMRF9ESVJfTkFNRX0iCi1maQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvdHJh
dmlzLmJlZm9yZV9pbnN0YWxsLmxpbnV4LnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvdHJhdmlz
LmJlZm9yZV9pbnN0YWxsLmxpbnV4LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
YjU1NmRlMTU1ZGYwZGZmNzcyZmY4MTVhODhjMTU0MzA3ZjQ1MjFhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL3RyYXZp
cy5iZWZvcmVfaW5zdGFsbC5saW51eC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAot
c2V0IC12ZXgKLQotIyBQcmVpbnN0YWxsZWQgdmVyc2lvbnMgb2YgcHl0aG9uIGFyZSBkZXBlbmRl
bnQgb24gd2hpY2ggVWJ1bnR1IGRpc3RyaWJ1dGlvbgotIyB5b3UgYXJlIHJ1bm5pbmcuIFRoZSBi
ZWxvdyB2ZXJzaW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2hlbmV2ZXIgd2Ugcm9sbAotIyB0aGUg
VWJ1bnR1IHZlcnNpb24gdXNlZCBpbiBUcmF2aXMuCi0jIGh0dHBzOi8vZG9jcy50cmF2aXMtY2ku
Y29tL3VzZXIvbGFuZ3VhZ2VzL3B5dGhvbi8KLQotcHllbnYgZ2xvYmFsIDMuNy4xCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuYmVmb3JlX2luc3RhbGwub3N4LnNoIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmJlZm9yZV9pbnN0YWxsLm9zeC5zaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4M2MwYzcxZTZmNDlhNTZkYmYwZTcyN2MyYTBjZDk4
NTZkYzI3OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuYmVmb3JlX2luc3RhbGwub3N4LnNoCisrKyAvZGV2
L251bGwKQEAgLTEgKzAsMCBAQAotIyBOT1RISU5HIFRPIERPIEhFUkUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLmxpbnV4LnNoIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlz
X3NjcmlwdHMvdHJhdmlzLmluc3RhbGwubGludXguc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDdjNTg0NmYxYTQwZTdjMWY3MDljZGI1MzRhODQ5OTM3N2IyNDM2NTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3Njcmlw
dHMvdHJhdmlzLmluc3RhbGwubGludXguc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBA
Ci1zZXQgLXZleAotCi13Z2V0IGh0dHBzOi8vZ2l0aHViLmNvbS9uaW5qYS1idWlsZC9uaW5qYS9y
ZWxlYXNlcy9kb3dubG9hZC92MS45LjAvbmluamEtbGludXguemlwCi11bnppcCAtcSBuaW5qYS1s
aW51eC56aXAgLWQgYnVpbGQKLQotcGlwMyBpbnN0YWxsIG1lc29uCi1lY2hvICR7UEFUSH0KLWxz
IC91c3IvbG9jYWwKLWxzIC91c3IvbG9jYWwvYmluCi1leHBvcnQgUEFUSD0iJHtQV0R9Ii9idWls
ZDovdXNyL2xvY2FsL2JpbjovdXNyL2Jpbjoke1BBVEh9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2
aXNfc2NyaXB0cy90cmF2aXMuaW5zdGFsbC5vc3guc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy90
cmF2aXMuaW5zdGFsbC5vc3guc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkODNj
MGM3MWU2ZjQ5YTU2ZGJmMGU3MjdjMmEwY2Q5ODU2ZGMyNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmlu
c3RhbGwub3N4LnNoCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyBOT1RISU5HIFRPIERP
IEhFUkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQVVUSE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQVVUSE9SUwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzcyM2Q1NDZhNzVmMjVhY2RkZTJkNmJkYzFmYjBkYTJiMGEy
NTNlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L0FVVEhPUlMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotQmFwdGlzdGUgTGVwaWxs
ZXVyIDxibGVwQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotQWFyb24gSmFjb2JzIDxhYXJvbmpq
YWNvYnNAZ21haWwuY29tPgotQWFyb24gSmFjb2JzIDxqYWNvYnNhQGdvb2dsZS5jb20+Ci1BZGFt
IEJvc2VsZXkgPEFCb3NlbGV5QGFnanVuY3Rpb24uY29tPgotQWRhbSBCb3NlbGV5IDxhZGFtLmJv
c2VsZXlAZ21haWwuY29tPgotQWxla3NhbmRyIERlcmJlbmV2IDwxM2FsZXhhY0BnbWFpbC5jb20+
Ci1BbGV4YW5kZXIgR2F6YXJvdiA8RHJNZXRhbGxpdXNAdXNlcnMubm9yZXBseS5naXRodWIuY29t
PgotQWxleGFuZGVyIFYuIEJyZXpnaW4gPGFicmV6Z2luQGFwcGxpZWR0ZWNoLnJ1PgotQWxleGFu
ZHIgQnJlemdpbiA8YWxicmV6Z2luQG1haWwucnU+Ci1BbGV4ZXkgS3J1Y2hpbmluIDxhbGV4ZXlA
bW9wYWxzLmNvbT4KLUFudG9uIEluZHJhd2FuIDxhbnRvbi5pbmRyYXdhbkBnbWFpbC5jb20+Ci1C
YXB0aXN0ZSBKb25nbGV6IDxnaXRAYml0c29mbmV0d29ya3Mub3JnPgotQmFwdGlzdGUgTGVwaWxs
ZXVyIDxiYXB0aXN0ZS5sZXBpbGxldXJAZ21haWwuY29tPgotQmFydWNoIFNpYWNoIDxiYXJ1Y2hA
dGtvcy5jby5pbD4KLUJlbiBCb2Vja2VsIDxtYXRoc3R1ZkBnbWFpbC5jb20+Ci1CZW5qYW1pbiBL
bmVjaHQgPGJrbmVjaHRAbG9naXRlY2guY29tPgotQmVybmQgS3VobHMgPGJlcm5kLmt1aGxzQHQt
b25saW5lLmRlPgotQmlsbHkgRG9uYWh1ZSA8YmlsbHlkb25haHVlQGdvb2dsZS5jb20+Ci1CcmFk
ZW4gTWNEb3JtYW4gPGJtY2Rvcm1hbkBnbWFpbC5jb20+Ci1CcmFuZG9uIE15ZXJzIDxibXllcnMx
Nzg4QGdtYWlsLmNvbT4KLUJyZW5kYW4gRHJldyA8YnJlbmRhbi5kcmV3QGRhcXJpLmNvbT4KLWNo
YXNvbiA8Y3hjaGFvODAyQGdtYWlsLmNvbT4KLUNocmlzIEdpbGxpbmcgPGNnaWxsaW5nQGlwYXJh
ZGlnbXMuY29tPgotQ2hyaXN0b3BoZXIgRGF3ZXMgPGNocmlzdG9waGVyLmRhd2VzLjE5ODFAZ29v
Z2xlbWFpbC5jb20+Ci1DaHJpc3RvcGhlciBEdW5uIDxjZHVubjIwMDFAZ21haWwuY29tPgotQ2h1
Y2sgQXRraW5zIDxjaHVjay5hdGtpbnNAa2l0d2FyZS5jb20+Ci1Db2R5IFAgU2NoYWZlciA8ZGV2
QGNvZHlwcy5jb20+Ci1Db25ub3IgTWFubmluZyA8Y29ubm9yQGhvYnUuY28+Ci1Db3J5IFF1YW1t
ZW4gPGNvcnkucXVhbW1lbkBraXR3YXJlLmNvbT4KLUNyaXN0b8yBdmHMg28gQiBkYSBDcnV6IGUg
U2lsdmEgPENyaXNYZWRAZ21haWwuY29tPgotRGFuaWVsIEtyw7xnbGVyIDxkYW5pZWwua3J1ZWds
ZXJAZ21haWwuY29tPgotRGFuaS1IdWIgPGRhbmllbC5rcnVlZ2xlckBnb29nbGVtYWlsLmNvbT4K
LURhbiBMaXUgPGd6bGl1ZGFuPgotZGF0YWRpb2RlIDxkYXRhZGlvZGVAdXNlcnMubm9yZXBseS5n
aXRodWIuY29tPgotZGF0YWRpb2RlIDxqb2NoZW4ubmV1YmVja0B2b2RhZm9uZS5kZT4KLURhdmlk
IFNlaWZlcnQgPHNvYXBAZ2VudG9vLm9yZz4KLURhdmlkIFdlc3QgPGRhdmlkLXdlc3RAaWRleHgu
Y29tPgotZGF3ZXNjIDxjaHJpcy5kYXdlc0BlZnRsYWIuY28udWs+Ci1EZXZpbiBKZWFucGllcnJl
IDxqZWFucGllcnJlZGFAZ29vZ2xlLmNvbT4KLURtaXRyeSBNYXJha2Fzb3YgPGFtZG1pM0BhbWRt
aTMucnU+Ci1kb21pbmljcGV6enV0byA8ZG9tQGRvbXBlenp1dG8uY29tPgotRG9uIE1pbGhhbSA8
ZG1pbGhhbUBnbWFpbC5jb20+Ci1kcmdsZXIgPGRhbmllbC5rcnVlZ2xlckBnbWFpbC5jb20+Ci1k
czI4MyA8RC5TZWVyeUBzdXNzZXguYWMudWs+Ci1FZ29yIFRlbnNpbiA8RWdvci5UZW5zaW5AZ21h
aWwuY29tPgotZWlnaHRub3RlaWdodCA8bXIuZWlnaHRub3RlaWdodEBnbWFpbC5jb20+Ci1Fdmlu
Y2UgPGJhbmV5dWVAZ21haWwuY29tPgotZmlsaXBqcyA8ZmlsaXBqc0B1c2Vycy5ub3JlcGx5Lmdp
dGh1Yi5jb20+Ci1maW5kYmxhciA8ZnRAZmluYmFyci5jYT4KLUZsb3JpYW4gTWVpZXIgPGZsb3Jp
YW4ubWVpZXJAa29hbG8uZGU+Ci1HYcOrdGFuIExlaG1hbm4gPGdhZXRhbi5sZWhtYW5uQGdtYWls
LmNvbT4KLUdhdXJhdiA8Zy5ndXB0YUBzYW1zdW5nLmNvbT4KLUdlcmdlbHkgTmFneSA8bmdnQG5n
Zy5odT4KLUdpZGEgUGF0YWtpIDxnaWRhLnBhdGFraUBwcmV6aS5jb20+Ci1JM2NrIDxidWNrbWFy
dGluQGJ1Y2ttYXJ0aW4uZGU+Ci1Jw7Fha2kgQmF6IENhc3RpbGxvIDxpYmNAYWxpYXgubmV0Pgot
SmFjY28gPGphY2NvQGdldWwubmV0PgotSmVhbi1DaHJpc3RvcGhlIEZpbGxpb24tUm9iaW4gPGpj
aHJpcy5maWxsaW9uckBraXR3YXJlLmNvbT4KLUpvbmFzIFBsYXR0ZSA8bWFpbEBqb25hc3BsYXR0
ZS5kZT4KLUpvcmRhbiBCYXlsZXMgPGJheWxlcy5qb3JkYW5AZ21haWwuY29tPgotSsO2cmcgS3Jh
dXNlIDxqb2VyZy5rcmF1c2VAZW1iZWRkZWQucm9ja3M+Ci1LZWl0aCBMZWEgPGtlaXRoQHdoYW1j
aXR5bGlnaHRzLmNvbT4KLUtldmluIEdyYW50IDxrYnJhZGxleWdyYW50QGdtYWlsLmNvbT4KLUtp
cmlsbCBWLiBMeWFkdmluc2t5IDxqaWEzZXBAZ21haWwuY29tPgotS2lyaWxsIFYuIEx5YWR2aW5z
a3kgPG1haWxAY29kZWF0Y3BwLmNvbT4KLUtvYmkgR3Vya2FuIDxrb2JpZ3Vya0BnbWFpbC5jb20+
Ci1NYWdudXMgQmplcmtlIFZpayA8bWJ2ZXR0QGdtYWlsLmNvbT4KLU1hbGF5IFNoYWggPG1hbGF5
c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1NYXJhIEtpbSA8aGFja2VyLnJvb3RAZ21haWwuY29t
PgotTWFyZWsgS290ZXdpY3ogPG1hcmVrLmtvdGV3aWN6QGdtYWlsLmNvbT4KLU1hcmsgTGFrYXRh
IDxtYXJrQGxha2F0YS5vcmc+Ci1NYXJrIFplcmVuIDxtemVyZW5Adm13YXJlLmNvbT4KLU1hcnRp
biBCdWNrIDxidWNrbWFydGluQGJ1Y2ttYXJ0aW4uZGU+Ci1NYXJ0eW4gR2lnZyA8bWFydHluLmdp
Z2dAZ21haWwuY29tPgotTWF0dGVzIEQgPGdpdGh1YkB4b2Z0LmN6PgotTWF0dGhpYXMgTG95IDxt
YXR0aGlhcy5sb3lAaGJtLmNvbT4KLU1lcmx5biBNb3JnYW4tR3JhaGFtIDxrYXZpa2FAZ21haWwu
Y29tPgotTWljaGFlbCBTaGllbGRzIDxtc2hpZWxkc0Bnb29nbGUuY29tPgotTWljaGHFgiBHw7Ny
bnkgPG1nb3JueUBnZW50b28ub3JnPgotTWlrZSBOYWJlcmV6bnkgPG1pa2VAbmFiZXJlem55LmNv
bT4KLW1sb3kgPG1hdHRoaWFzLmxveUBnb29nbGVtYWlsLmNvbT4KLU1vdHRpIDxsYW56a3JvbkBn
bWFpbC5jb20+Ci1ubmt1ciA8bm5rdXJAbWFpbC5ydT4KLU9ta2FyIFdhZ2ggPG93YWdoQG93YWdo
bGludXgubnkudG93ZXItcmVzZWFyY2guY29tPgotcGF1bG8gPHBhdWxvYnJpem9sYXJhQHVzZXJz
Lm5vcmVwbHkuZ2l0aHViLmNvbT4KLXBhdmVsLnBpbWVub3YgPHBhdmVsLnBpbWVub3ZAZ21haWwu
Y29tPgotUGF3ZcWCIEJ5bGljYSA8Y2hmYXN0QGdtYWlsLmNvbT4KLVDDqXJpY2xlcyBMb3BlcyBN
YWNoYWRvIDxwZXJpY2xlcy5yYXNrb2xuaWtvZmZAZ21haWwuY29tPgotUGV0ZXIgU3BpZXNzLUtu
YWZsIDxwc2tAYXV0aXN0aWNpLm9yZz4KLXBmZmFuZyA8cGZmYW5nQHZpcC5xcS5jb20+Ci1Sw6lt
aSBWZXJzY2hlbGRlIDxyZW1pQHZlcnNjaGVsZGUuZnI+Ci1yZW51NTU1IDxyZW51LnR5YWdpQHNh
bXN1bmcuY29tPgotUm9iZXJ0IERhaWxleSA8cmNkYWlsZXlAZ21haWwuY29tPgotU2FtIENsZWdn
IDxzYmNAY2hyb21pdW0ub3JnPgotc2VsYXNlbGFoIDxzZWxhaEBvdXRsb29rLmNvbT4KLVNlcmdp
eTgwIDxzaWwyMDA0QGdtYWlsLmNvbT4KLXNlcmd6dWIgPHNlcmd6dWJAZ21haWwuY29tPgotU3Rl
ZmFuIFNjaHdldGVyIDxzdGVmYW5Ac2Nod2V0ZXIuaXQ+Ci1TdGVmZmVuIEtpZcOfIDxTdGVmZmVu
LktpZXNzQGlwdnMudW5pLXN0dXR0Z2FydC5kZT4KLVN0ZXZlbiBIYWhuIDxoYWhuc2VAb3JubC5n
b3Y+Ci1TdHVhcnQgRWljaGVydCA8c3R1YXJ0QGZpdmVtaWNyby5jb20+Ci1TdXBlck1hbml0dSA8
c3VwZXJtYW5pdHVAZ21haWwuY29tPgotVGVjaHdvbGYgPGRyaW5nQGczM2t3b3JsZC5uZXQ+Ci1U
ZW5naXogU2hhcmFmaWV2IDxidG9sZmErZ2l0aHViQGdtYWlsLmNvbT4KLVRvbWFzeiBNYWNpZWpl
d3NraSA8dG1hY2llamV3c2tAZ21haWwuY29tPgotVmljZW50ZSBPbGl2ZXJ0IFJpZXJhIDxWaW5j
ZW50LlJpZXJhQGltZ3RlYy5jb20+Ci14aWFveXVyMzQ3IDx4aWFveXVyMzQ3QGdtYWlsLmNvbT4K
LXljcWl1IDw0MjkxNDg4NDhAcXEuY29tPgoteWlxaWp1IDxmcmVkX2p1QHNlbGluYy5jb20+Ci1Z
dSBYaWFvbGVpIDxkcmVpZmFjaHN0ZWluQGdtYWlsLmNvbT4KLQotR29vZ2xlIEluYy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODFkMDhiMGFiMzRiZDI1MmRiYjEzZWY1MWNkM2FhMWFk
ODZhOTYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotIyB2aW06
IGV0IHRzPTQgc3RzPTQgc3c9NCB0dz0wCi0KLSMgPT09PSBEZWZpbmUgY21ha2UgYnVpbGQgcG9s
aWNpZXMgdGhhdCBhZmZlY3QgY29tcGlsYXRpb24gYW5kIGxpbmthZ2UgZGVmYXVsdCBiZWhhdmlv
cnMKLSMKLSMgU2V0IHRoZSBKU09OQ1BQX05FV0VTVF9WQUxJREFURURfUE9MSUNJRVNfVkVSU0lP
TiBzdHJpbmcgdG8gdGhlIG5ld2VzdCBjbWFrZSB2ZXJzaW9uCi0jIHBvbGljaWVzIHRoYXQgcHJv
dmlkZSBzdWNjZXNzZnVsIGJ1aWxkcy4gQnkgc2V0dGluZyBKU09OQ1BQX05FV0VTVF9WQUxJREFU
RURfUE9MSUNJRVNfVkVSU0lPTgotIyB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgb2xkZXN0
IHBvbGljaWVzLCBhbGwgcG9saWNpZXMgYmV0d2VlbgotIyBKU09OQ1BQX09MREVTVF9WQUxJREFU
RURfUE9MSUNJRVNfVkVSU0lPTiBhbmQgQ01BS0VfVkVSU0lPTiAodXNlZCBmb3IgdGhpcyBidWls
ZCkKLSMgYXJlIHNldCB0byB0aGVpciBORVcgYmVoYWl2b3IsIHRoZXJlYnkgc3VwcHJlc3Npbmcg
cG9saWN5IHdhcm5pbmdzIHJlbGF0ZWQgdG8gcG9saWNpZXMKLSMgYmV0d2VlbiB0aGUgSlNPTkNQ
UF9PTERFU1RfVkFMSURBVEVEX1BPTElDSUVTX1ZFUlNJT04gYW5kIENNQUtFX1ZFUlNJT04uCi0j
Ci0jIENNYWtlIHZlcnNpb25zIGdyZWF0ZXIgdGhhbiB0aGUgSlNPTkNQUF9ORVdFU1RfVkFMSURB
VEVEX1BPTElDSUVTX1ZFUlNJT04gcG9saWNpZXMgd2lsbAotIyBjb250aW51ZSB0byBnZW5lcmF0
ZSBwb2xpY3kgd2FybmluZ3MgIkNNYWtlIFdhcm5pbmcgKGRldikuLi5Qb2xpY3kgQ01QMFhYWCBp
cyBub3Qgc2V0OiIKLSMKLXNldChKU09OQ1BQX09MREVTVF9WQUxJREFURURfUE9MSUNJRVNfVkVS
U0lPTiAiMy44LjAiKQotc2V0KEpTT05DUFBfTkVXRVNUX1ZBTElEQVRFRF9QT0xJQ0lFU19WRVJT
SU9OICIzLjEzLjIiKQotY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OICR7SlNPTkNQUF9P
TERFU1RfVkFMSURBVEVEX1BPTElDSUVTX1ZFUlNJT059KQotaWYoIiR7Q01BS0VfVkVSU0lPTn0i
IFZFUlNJT05fTEVTUyAiJHtKU09OQ1BQX05FV0VTVF9WQUxJREFURURfUE9MSUNJRVNfVkVSU0lP
Tn0iKQotICAgICNTZXQgYW5kIHVzZSB0aGUgbmV3ZXN0IGF2YWlsYWJsZSBjbWFrZSBwb2xpY2ll
cyB0aGF0IGFyZSB2YWxpZGF0ZWQgdG8gd29yawotICAgIHNldChKU09OQ1BQX0NNQUtFX1BPTElD
WV9WRVJTSU9OICIke0NNQUtFX1ZFUlNJT059IikKLWVsc2UoKQotICAgIHNldChKU09OQ1BQX0NN
QUtFX1BPTElDWV9WRVJTSU9OICIke0pTT05DUFBfTkVXRVNUX1ZBTElEQVRFRF9QT0xJQ0lFU19W
RVJTSU9OfSIpCi1lbmRpZigpCi1jbWFrZV9wb2xpY3koVkVSU0lPTiAke0pTT05DUFBfQ01BS0Vf
UE9MSUNZX1ZFUlNJT059KQotIwotIyBOb3cgZW51bWVyYXRlIHNwZWNpZmljIHBvbGljaWVzIG5l
d2VyIHRoYW4gSlNPTkNQUF9ORVdFU1RfVkFMSURBVEVEX1BPTElDSUVTX1ZFUlNJT04KLSMgdGhh
dCBtYXkgbmVlZCB0byBiZSBpbmRpdmlkdWFsbHkgc2V0IHRvIE5FVy9PTEQKLSMKLWZvcmVhY2go
cG5ldyAiIikgIyBDdXJyZW50bHkgRW1wdHkKLSAgICBpZihQT0xJQ1kgJHtwbmV3fSkKLSAgICAg
ICAgY21ha2VfcG9saWN5KFNFVCAke3BuZXd9IE5FVykKLSAgICBlbmRpZigpCi1lbmRmb3JlYWNo
KCkKLWZvcmVhY2gocG9sZCAiIikgIyBDdXJyZW50bHkgRW1wdHkKLSAgICBpZihQT0xJQ1kgJHtw
b2xkfSkKLSAgICAgICAgY21ha2VfcG9saWN5KFNFVCAke3BvbGR9IE9MRCkKLSAgICBlbmRpZigp
Ci1lbmRmb3JlYWNoKCkKLQotIyA9PT09IERlZmluZSBsYW5ndWFnZSBzdGFuZGFyZCBjb25maWd1
cmF0aW9ucyByZXF1aXJpbmcgYXQgbGVhc3QgYysrMTEgc3RhbmRhcmQKLWlmKENNQUtFX0NYWF9T
VEFOREFSRCBFUVVBTCAiOTgiICkKLSAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTUFLRV9DWFhf
U1RBTkRBUkQ6U1RSSU5HPTk4IGlzIG5vdCBzdXBwb3J0ZWQuIikKLWVuZGlmKCkKLQotIyMjIyMK
LSMjICBTZXQgdGhlIGRlZmF1bHQgdGFyZ2V0IHByb3BlcnRpZXMKLWlmKE5PVCBDTUFLRV9DWFhf
U1RBTkRBUkQpCi0gICAgc2V0KENNQUtFX0NYWF9TVEFOREFSRCAxMSkgIyBTdXBwb3J0ZWQgdmFs
dWVzIGFyZSBgYDExYGAsIGBgMTRgYCwgYW5kIGBgMTdgYC4KLWVuZGlmKCkKLWlmKE5PVCBDTUFL
RV9DWFhfU1RBTkRBUkRfUkVRVUlSRUQpCi0gICAgc2V0KENNQUtFX0NYWF9TVEFOREFSRF9SRVFV
SVJFRCBPTikKLWVuZGlmKCkKLWlmKE5PVCBDTUFLRV9DWFhfRVhURU5TSU9OUykKLSAgICBzZXQo
Q01BS0VfQ1hYX0VYVEVOU0lPTlMgT0ZGKQotZW5kaWYoKQotCi0jID09PT0KLQotIyBFbnN1cmVz
IHRoYXQgQ01BS0VfQlVJTERfVFlQRSBoYXMgYSBkZWZhdWx0IHZhbHVlCi1pZihOT1QgREVGSU5F
RCBDTUFLRV9CVUlMRF9UWVBFKQotICAgIHNldChDTUFLRV9CVUlMRF9UWVBFIFJlbGVhc2UgQ0FD
SEUgU1RSSU5HCi0gICAgICAgICJDaG9vc2UgdGhlIHR5cGUgb2YgYnVpbGQsIG9wdGlvbnMgYXJl
OiBOb25lIERlYnVnIFJlbGVhc2UgUmVsV2l0aERlYkluZm8gTWluU2l6ZVJlbCBDb3ZlcmFnZS4i
KQotZW5kaWYoKQotCi1wcm9qZWN0KEpTT05DUFAKLSAgICAgICAgVkVSU0lPTiAxLjkuMCAjIDxt
YWpvcj5bLjxtaW5vcj5bLjxwYXRjaD5bLjx0d2Vhaz5dXV0KLSAgICAgICAgTEFOR1VBR0VTIENY
WCkKLQotbWVzc2FnZShTVEFUVVMgIkpzb25DcHAgVmVyc2lvbjogJHtKU09OQ1BQX1ZFUlNJT05f
TUFKT1J9LiR7SlNPTkNQUF9WRVJTSU9OX01JTk9SfS4ke0pTT05DUFBfVkVSU0lPTl9QQVRDSH0i
KQotc2V0KCBKU09OQ1BQX1NPVkVSU0lPTiAyMSApCi0KLW9wdGlvbihKU09OQ1BQX1dJVEhfVEVT
VFMgIkNvbXBpbGUgYW5kIChmb3IganNvbmNwcF9jaGVjaykgcnVuIEpzb25DcHAgdGVzdCBleGVj
dXRhYmxlcyIgT04pCi1vcHRpb24oSlNPTkNQUF9XSVRIX1BPU1RfQlVJTERfVU5JVFRFU1QgIkF1
dG9tYXRpY2FsbHkgcnVuIHVuaXQtdGVzdHMgYXMgYSBwb3N0IGJ1aWxkIHN0ZXAiIE9OKQotb3B0
aW9uKEpTT05DUFBfV0lUSF9XQVJOSU5HX0FTX0VSUk9SICJGb3JjZSBjb21waWxhdGlvbiB0byBm
YWlsIGlmIGEgd2FybmluZyBvY2N1cnMiIE9GRikKLW9wdGlvbihKU09OQ1BQX1dJVEhfU1RSSUNU
X0lTTyAiSXNzdWUgYWxsIHRoZSB3YXJuaW5ncyBkZW1hbmRlZCBieSBzdHJpY3QgSVNPIEMgYW5k
IElTTyBDKysiIE9OKQotb3B0aW9uKEpTT05DUFBfV0lUSF9QS0dDT05GSUdfU1VQUE9SVCAiR2Vu
ZXJhdGUgYW5kIGluc3RhbGwgLnBjIGZpbGVzIiBPTikKLW9wdGlvbihKU09OQ1BQX1dJVEhfQ01B
S0VfUEFDS0FHRSAiR2VuZXJhdGUgYW5kIGluc3RhbGwgY21ha2UgcGFja2FnZSBmaWxlcyIgT04p
Ci1vcHRpb24oQlVJTERfU0hBUkVEX0xJQlMgIkJ1aWxkIGpzb25jcHBfbGliIGFzIGEgc2hhcmVk
IGxpYnJhcnkuIiBPRkYpCi0KLSMgRW5hYmxlIHJ1bnRpbWUgc2VhcmNoIHBhdGggc3VwcG9ydCBm
b3IgZHluYW1pYyBsaWJyYXJpZXMgb24gT1NYCi1pZihBUFBMRSkKLSAgICBzZXQoQ01BS0VfTUFD
T1NYX1JQQVRIIDEpCi1lbmRpZigpCi0KLSMgQWRoZXJlIHRvIEdOVSBmaWxlc3lzdGVtIGxheW91
dCBjb252ZW50aW9ucwotaW5jbHVkZShHTlVJbnN0YWxsRGlycykKLQotc2V0KERFQlVHX0xJQk5B
TUVfU1VGRklYICIiIENBQ0hFIFNUUklORyAiT3B0aW9uYWwgc3VmZml4IHRvIGFwcGVuZCB0byB0
aGUgbGlicmFyeSBuYW1lIGZvciBhIGRlYnVnIGJ1aWxkIikKLQotc2V0KEpTT05DUFBfVVNFX1NF
Q1VSRV9NRU1PUlkgIjAiIENBQ0hFIFNUUklORyAiLUQuLi49MSB0byB1c2UgbWVtb3J5LXdpcGlu
ZyBhbGxvY2F0b3IgZm9yIFNUTCIgKQotCi0jIEZpbGUgdmVyc2lvbi5oIGlzIG9ubHkgcmVnZW5l
cmF0ZWQgb24gQ01ha2UgY29uZmlndXJlIHN0ZXAKLWNvbmZpZ3VyZV9maWxlKCAiJHtQUk9KRUNU
X1NPVVJDRV9ESVJ9L3NyYy9saWJfanNvbi92ZXJzaW9uLmguaW4iCi0gICAgICAgICAgICAgICAg
IiR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRlL2pzb24vdmVyc2lvbi5oIgotICAgICAgICAg
ICAgICAgIE5FV0xJTkVfU1RZTEUgVU5JWCApCi1jb25maWd1cmVfZmlsZSggIiR7UFJPSkVDVF9T
T1VSQ0VfRElSfS92ZXJzaW9uLmluIgotICAgICAgICAgICAgICAgICIke1BST0pFQ1RfQklOQVJZ
X0RJUn0vdmVyc2lvbiIKLSAgICAgICAgICAgICAgICBORVdMSU5FX1NUWUxFIFVOSVggKQotCi1t
YWNybyhVc2VDb21waWxhdGlvbldhcm5pbmdBc0Vycm9yKQotICAgIGlmKE1TVkMpCi0gICAgICAg
ICMgT25seSBlbmFibGVkIGluIGRlYnVnIGJlY2F1c2Ugc29tZSBvbGQgdmVyc2lvbnMgb2YgVlMg
U1RMIGdlbmVyYXRlCi0gICAgICAgICMgd2FybmluZ3Mgd2hlbiBjb21waWxlZCBpbiByZWxlYXNl
IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGFkZF9jb21waWxlX29wdGlvbnMoJDwkPENPTkZJRzpE
ZWJ1Zz46L1dYPikKLSAgICBlbHNlaWYoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJH
TlUiKQotICAgICAgICBhZGRfY29tcGlsZV9vcHRpb25zKC1XZXJyb3IpCi0gICAgICAgIGlmKEpT
T05DUFBfV0lUSF9TVFJJQ1RfSVNPKQotICAgICAgICAgICAgYWRkX2NvbXBpbGVfb3B0aW9ucygt
cGVkYW50aWMtZXJyb3JzKQotICAgICAgICBlbmRpZigpCi0gICAgZW5kaWYoKQotZW5kbWFjcm8o
KQotCi0jIEluY2x1ZGUgb3VyIGNvbmZpZ3VyYXRpb24gaGVhZGVyCi1pbmNsdWRlX2RpcmVjdG9y
aWVzKCAke2pzb25jcHBfU09VUkNFX0RJUn0vaW5jbHVkZSApCi0KLWlmKE1TVkMpCi0gICAgIyBP
bmx5IGVuYWJsZWQgaW4gZGVidWcgYmVjYXVzZSBzb21lIG9sZCB2ZXJzaW9ucyBvZiBWUyBTVEwg
Z2VuZXJhdGUKLSAgICAjIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyB3aGVuIGNvbXBpbGVkIGlu
IHJlbGVhc2UgY29uZmlndXJhdGlvbi4KLSAgICBhZGRfY29tcGlsZV9vcHRpb25zKCQ8JDxDT05G
SUc6RGVidWc+Oi9XND4pCi1lbmRpZigpCi0KLWlmKENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRD
SEVTICJDbGFuZyIpCi0gICAgIyB1c2luZyByZWd1bGFyIENsYW5nIG9yIEFwcGxlQ2xhbmcKLSAg
ICBhZGRfY29tcGlsZV9vcHRpb25zKC1XYWxsIC1XY29udmVyc2lvbiAtV3NoYWRvdyAtV2Vycm9y
PWNvbnZlcnNpb24gLVdlcnJvcj1zaWduLWNvbXBhcmUpCi1lbHNlaWYoQ01BS0VfQ1hYX0NPTVBJ
TEVSX0lEIFNUUkVRVUFMICJHTlUiKQotICAgICMgdXNpbmcgR0NDCi0gICAgYWRkX2NvbXBpbGVf
b3B0aW9ucygtV2FsbCAtV2NvbnZlcnNpb24gLVdzaGFkb3cgLVdleHRyYSkKLSAgICAjIG5vdCB5
ZXQgcmVhZHkgZm9yIC1Xc2lnbi1jb252ZXJzaW9uCi0KLSAgICBpZihKU09OQ1BQX1dJVEhfU1RS
SUNUX0lTTykKLSAgICAgICAgYWRkX2NvbXBpbGVfb3B0aW9ucygtcGVkYW50aWMpCi0gICAgZW5k
aWYoKQotICAgIGlmKEpTT05DUFBfV0lUSF9XQVJOSU5HX0FTX0VSUk9SKQotICAgICAgICBhZGRf
Y29tcGlsZV9vcHRpb25zKC1XZXJyb3I9Y29udmVyc2lvbikKLSAgICBlbmRpZigpCi1lbHNlaWYo
Q01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNUUkVRVUFMICJJbnRlbCIpCi0gICAgI8KgdXNpbmcgSW50
ZWwgY29tcGlsZXIKLSAgICBhZGRfY29tcGlsZV9vcHRpb25zKC1XYWxsIC1XY29udmVyc2lvbiAt
V3NoYWRvdyAtV2V4dHJhIC1XZXJyb3I9Y29udmVyc2lvbikKLQotICAgIGlmKEpTT05DUFBfV0lU
SF9TVFJJQ1RfSVNPIEFORCBOT1QgSlNPTkNQUF9XSVRIX1dBUk5JTkdfQVNfRVJST1IpCi0gICAg
ICAgIGFkZF9jb21waWxlX29wdGlvbnMoLXBlZGFudGljKQotICAgIGVuZGlmKCkKLWVuZGlmKCkK
LQotZmluZF9wcm9ncmFtKENDQUNIRV9GT1VORCBjY2FjaGUpCi1pZihDQ0FDSEVfRk9VTkQpCi0g
ICAgc2V0X3Byb3BlcnR5KEdMT0JBTCBQUk9QRVJUWSBSVUxFX0xBVU5DSF9DT01QSUxFIGNjYWNo
ZSkKLSAgICBzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIFJVTEVfTEFVTkNIX0xJTksgY2Nh
Y2hlKQotZW5kaWYoQ0NBQ0hFX0ZPVU5EKQotCi1pZihKU09OQ1BQX1dJVEhfV0FSTklOR19BU19F
UlJPUikKLSAgICBVc2VDb21waWxhdGlvbldhcm5pbmdBc0Vycm9yKCkKLWVuZGlmKCkKLQotaWYo
SlNPTkNQUF9XSVRIX1BLR0NPTkZJR19TVVBQT1JUKQotICAgIGNvbmZpZ3VyZV9maWxlKAotICAg
ICAgICAicGtnLWNvbmZpZy9qc29uY3BwLnBjLmluIgotICAgICAgICAicGtnLWNvbmZpZy9qc29u
Y3BwLnBjIgotICAgICAgICBAT05MWSkKLSAgICBpbnN0YWxsKEZJTEVTICIke0NNQUtFX0NVUlJF
TlRfQklOQVJZX0RJUn0vcGtnLWNvbmZpZy9qc29uY3BwLnBjIgotICAgICAgICBERVNUSU5BVElP
TiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKLWVuZGlmKCkKLQotaWYoSlNP
TkNQUF9XSVRIX0NNQUtFX1BBQ0tBR0UpCi0gICAgICAgIGluY2x1ZGUgKENNYWtlUGFja2FnZUNv
bmZpZ0hlbHBlcnMpCi0gICAgICAgIGluc3RhbGwoRVhQT1JUIGpzb25jcHAKLSAgICAgICAgICAg
ICAgICBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9qc29uY3BwCi0g
ICAgICAgICAgICAgICAgRklMRSAgICAgICAganNvbmNwcENvbmZpZy5jbWFrZSkKLSAgICAgICAg
d3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUgKCIke0NNQUtFX0NVUlJFTlRfQklOQVJZ
X0RJUn0vanNvbmNwcENvbmZpZ1ZlcnNpb24uY21ha2UiCi0gICAgICAgICAgICAgICAgVkVSU0lP
TiAke1BST0pFQ1RfVkVSU0lPTn0KLSAgICAgICAgICAgICAgICBDT01QQVRJQklMSVRZIFNhbWVN
YWpvclZlcnNpb24pCi0gICAgICAgIGluc3RhbGwoRklMRVMgJHtDTUFLRV9DVVJSRU5UX0JJTkFS
WV9ESVJ9L2pzb25jcHBDb25maWdWZXJzaW9uLmNtYWtlCi0gICAgICAgICAgICAgICAgREVTVElO
QVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vY21ha2UvanNvbmNwcCkKLWVuZGlmKCkKLQot
aWYoSlNPTkNQUF9XSVRIX1RFU1RTKQotICBlbmFibGVfdGVzdGluZygpCi0gIGluY2x1ZGUoQ1Rl
c3QpCi1lbmRpZigpCi0KLSMgQnVpbGQgdGhlIGRpZmZlcmVudCBhcHBsaWNhdGlvbnMKLWFkZF9z
dWJkaXJlY3RvcnkoIHNyYyApCi0KLSNpbnN0YWxsIHRoZSBpbmNsdWRlcwotYWRkX3N1YmRpcmVj
dG9yeSggaW5jbHVkZSApCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQ09OVFJJQlVUSU5HLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS9DT05UUklCVVRJTkcubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTRhYjdh
ZmRmYTdiMmU5ZDMyZTlmOGUyZjUxMTYxMmNiOGM3MjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9DT05UUklCVVRJTkcubWQKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDUgKzAsMCBAQAotIyBDb250cmlidXRpbmcgdG8gSnNvbkNwcAotCi0jIyBCdWls
ZGluZwotCi1Cb3RoIENNYWtlIGFuZCBNZXNvbiB0b29scyBhcmUgY2FwYWJsZSBvZiBnZW5lcmF0
aW5nIGEgdmFyaWV0eSBvZiBidWlsZCBlbnZpcm9ubWVudHMgZm9yIHlvdSBwcmVmZXJyZWQgZGV2
ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi1Vc2luZyBjbWFrZSBvciBtZXNvbiB5b3UgY2FuIGdlbmVy
YXRlIGFuIFhDb2RlLCBWaXN1YWwgU3R1ZGlvLCBVbml4IE1ha2VmaWxlLCBOaW5qYSwgb3Igb3Ro
ZXIgZW52aXJvbm1lbnQgdGhhdCBmaXRzIHlvdXIgbmVlZHMuCi0KLUFuIGV4YW1wbGUgb2YgYSBj
b21tb24gTWVzb24vTmluamEgZW52aXJvbm1lbnQgaXMgZGVzY3JpYmVkIG5leHQuCi0KLSMjIEJ1
aWxkaW5nIGFuZCB0ZXN0aW5nIHdpdGggTWVzb24vTmluamEKLVRoYW5rcyB0byBEYXZpZCBTZWlm
ZXJ0IChAU29hcEdlbnRvbyksIHdlICh0aGUgbWFpbnRhaW5lcnMpIG5vdyB1c2UKLVttZXNvbl0o
aHR0cDovL21lc29uYnVpbGQuY29tLykgYW5kIFtuaW5qYV0oaHR0cHM6Ly9uaW5qYS1idWlsZC5v
cmcvKSB0byBidWlsZAotZm9yIGRlYnVnZ2luZywgYXMgd2VsbCBhcyBmb3IgY29udGludW91cyBp
bnRlZ3JhdGlvbiAoc2VlCi1bYC4vdHJhdmlzX3NjcmlwdHMvbWVzb25fYnVpbGRlci5zaGBdKC4v
dHJhdmlzX3NjcmlwdHMvbWVzb25fYnVpbGRlci5zaCkgKS4gT3RoZXIgc3lzdGVtcyBtYXkgd29y
aywgYnV0IG1pbm9yCi10aGluZ3MgbGlrZSB2ZXJzaW9uIHN0cmluZ3MgbWlnaHQgYnJlYWsuCi0K
LUZpcnN0LCBpbnN0YWxsIGJvdGggbWVzb24gKHdoaWNoIHJlcXVpcmVzIFB5dGhvbjMpIGFuZCBu
aW5qYS4KLUlmIHlvdSB3aXNoIHRvIGluc3RhbGwgdG8gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiAv
dXNyL2xvY2FsLCBzZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgY2FsbGVkIERFU1RESVIgd2l0
aCB0aGUgZGVzaXJlZCBwYXRoOgotICAgIERFU1RESVI9L3BhdGgvdG8vaW5zdGFsbC9kaXIKLQot
VGhlbiwKLQotICAgIGNkIGpzb25jcHAvCi0gICAgQlVJTERfVFlQRT1kZWJ1ZwotICAgICNCVUlM
RF9UWVBFPXJlbGVhc2UKLSAgICBMSUJfVFlQRT1zaGFyZWQKLSAgICAjTElCX1RZUEU9c3RhdGlj
Ci0gICAgbWVzb24gLS1idWlsZHR5cGUgJHtCVUlMRF9UWVBFfSAtLWRlZmF1bHQtbGlicmFyeSAk
e0xJQl9UWVBFfSAuIGJ1aWxkLSR7TElCX1RZUEV9Ci0gICAgI25pbmphIC12IC1DIGJ1aWxkLSR7
TElCX1RZUEV9IHRlc3QgIyBUaGlzIHN0b3BwZWQgd29ya2luZyBvbiBteSBNYWMuCi0gICAgbmlu
amEgLXYgLUMgYnVpbGQtJHtMSUJfVFlQRX0KLSAgICBjZCBidWlsZC0ke0xJQl9UWVBFfQotICAg
IG1lc29uIHRlc3QgLS1uby1yZWJ1aWxkIC0tcHJpbnQtZXJyb3Jsb2dzCi0gICAgc3VkbyBuaW5q
YSBpbnN0YWxsCi0KLSMjIEJ1aWxkaW5nIGFuZCB0ZXN0aW5nIHdpdGggb3RoZXIgYnVpbGQgc3lz
dGVtcwotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAv
d2lraS9CdWlsZGluZwotCi0jIyBSdW5uaW5nIHRoZSB0ZXN0cyBtYW51YWxseQotCi1Zb3UgbmVl
ZCB0byBydW4gdGVzdHMgbWFudWFsbHkgb25seSBpZiB5b3UgYXJlIHRyb3VibGVzaG9vdGluZyBh
biBpc3N1ZS4KLQotSW4gdGhlIGluc3RydWN0aW9ucyBiZWxvdywgcmVwbGFjZSBgcGF0aC90by9q
c29udGVzdGAgd2l0aCB0aGUgcGF0aCBvZiB0aGUKLWBqc29udGVzdGAgZXhlY3V0YWJsZSB0aGF0
IHdhcyBjb21waWxlZCBvbiB5b3VyIHBsYXRmb3JtLgotCi0gICAgY2QgdGVzdAotICAgICMgVGhp
cyB3aWxsIHJ1biB0aGUgUmVhZGVyL1dyaXRlciB0ZXN0cwotICAgIHB5dGhvbiBydW5qc29udGVz
dHMucHkgcGF0aC90by9qc29udGVzdAotCi0gICAgIyBUaGlzIHdpbGwgcnVuIHRoZSBSZWFkZXIv
V3JpdGVyIHRlc3RzLCB1c2luZyBKU09OQ2hlY2tlciB0ZXN0IHN1aXRlCi0gICAgIyAoaHR0cDov
L3d3dy5qc29uLm9yZy9KU09OX2NoZWNrZXIvKS4KLSAgICAjIE5vdGVzOiBub3QgYWxsIHRlc3Rz
IHBhc3M6IEpzb25DcHAgaXMgdG9vIGxlbmllbnQgKGZvciBleGFtcGxlLAotICAgICMgaXQgYWxs
b3dzIGFuIGludGVnZXIgdG8gc3RhcnQgd2l0aCAnMCcpLiBUaGUgZ29hbCBpcyB0byBpbXByb3Zl
Ci0gICAgIyBzdHJpY3QgbW9kZSBwYXJzaW5nIHRvIGdldCBhbGwgdGVzdHMgdG8gcGFzcy4KLSAg
ICBweXRob24gcnVuanNvbnRlc3RzLnB5IC0td2l0aC1qc29uLWNoZWNrZXIgcGF0aC90by9qc29u
dGVzdAotCi0gICAgIyBUaGlzIHdpbGwgcnVuIHRoZSB1bml0IHRlc3RzIChtb3N0bHkgVmFsdWUp
Ci0gICAgcHl0aG9uIHJ1bnVuaXR0ZXN0cy5weSBwYXRoL3RvL3Rlc3RfbGliX2pzb24KLQotICAg
ICMgWW91IGNhbiBydW4gdGhlIHRlc3RzIHVzaW5nIHZhbGdyaW5kOgotICAgIHB5dGhvbiBydW51
bml0dGVzdHMucHkgLS12YWxncmluZCBwYXRoL3RvL3Rlc3RfbGliX2pzb24KLQotIyMgQnVpbGRp
bmcgdGhlIGRvY3VtZW50YXRpb24KLQotUnVuIHRoZSBQeXRob24gc2NyaXB0IGBkb3h5YnVpbGQu
cHlgIGZyb20gdGhlIHRvcCBkaXJlY3Rvcnk6Ci0KLSAgICBweXRob24gZG94eWJ1aWxkLnB5IC0t
ZG94eWdlbj0kKHdoaWNoIGRveHlnZW4pIC0tb3BlbiAtLXdpdGgtZG90Ci0KLVNlZSBgZG94eWJ1
aWxkLnB5IC0taGVscGAgZm9yIG9wdGlvbnMuCi0KLSMjIEFkZGluZyBhIHJlYWRlci93cml0ZXIg
dGVzdAotCi1UbyBhZGQgYSB0ZXN0LCB5b3UgbmVlZCB0byBjcmVhdGUgdHdvIGZpbGVzIGluIHRl
c3QvZGF0YToKLQotKiBhIGBURVNUTkFNRS5qc29uYCBmaWxlLCB0aGF0IGNvbnRhaW5zIHRoZSBp
bnB1dCBkb2N1bWVudCBpbiBKU09OIGZvcm1hdC4KLSogYSBgVEVTVE5BTUUuZXhwZWN0ZWRgIGZp
bGUsIHRoYXQgY29udGFpbnMgYSBmbGF0ZW5lZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgaW5w
dXQgZG9jdW1lbnQuCi0KLVRoZSBgVEVTVE5BTUUuZXhwZWN0ZWRgIGZpbGUgZm9ybWF0IGlzIGFz
IGZvbGxvd3M6Ci0KLSogRWFjaCBsaW5lIHJlcHJlc2VudHMgYSBKU09OIGVsZW1lbnQgb2YgdGhl
IGVsZW1lbnQgdHJlZSByZXByZXNlbnRlZCBieSB0aGUKLSAgaW5wdXQgZG9jdW1lbnQuCi0qIEVh
Y2ggbGluZSBoYXMgdHdvIHBhcnRzOiB0aGUgcGF0aCB0byBhY2Nlc3MgdGhlIGVsZW1lbnQgc2Vw
YXJhdGVkIGZyb20gdGhlCi0gIGVsZW1lbnQgdmFsdWUgYnkgYD1gLiBBcnJheSBhbmQgb2JqZWN0
IHZhbHVlcyBhcmUgYWx3YXlzIGVtcHR5IChpLmUuCi0gIHJlcHJlc2VudGVkIGJ5IGVpdGhlciBg
W11gIG9yIGB7fWApLgotKiBFbGVtZW50IHBhdGggYC5gIHJlcHJlc2VudHMgdGhlIHJvb3QgZWxl
bWVudCwgYW5kIGlzIHVzZWQgdG8gc2VwYXJhdGUgb2JqZWN0Ci0gIG1lbWJlcnMuIGBbTl1gIGlz
IHVzZWQgdG8gc3BlY2lmeSB0aGUgdmFsdWUgb2YgYW4gYXJyYXkgZWxlbWVudCBhdCBpbmRleCBg
TmAuCi0KLVNlZSB0aGUgZXhhbXBsZXMgYHRlc3RfY29tcGxleF8wMS5qc29uYCBhbmQgYHRlc3Rf
Y29tcGxleF8wMS5leHBlY3RlZGAgdG8gYmV0dGVyIHVuZGVyc3RhbmQgZWxlbWVudCBwYXRocy4K
LQotIyMgVW5kZXJzdGFuZGluZyByZWFkZXIvd3JpdGVyIHRlc3Qgb3V0cHV0Ci0KLVdoZW4gYSB0
ZXN0IGlzIHJ1biwgb3V0cHV0IGZpbGVzIGFyZSBnZW5lcmF0ZWQgYmVzaWRlIHRoZSBpbnB1dCB0
ZXN0IGZpbGVzLiBCZWxvdyBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb250ZW50IG9m
IGVhY2ggZmlsZToKLQotKiBgdGVzdF9jb21wbGV4XzAxLmpzb25gOiBpbnB1dCBKU09OIGRvY3Vt
ZW50LgotKiBgdGVzdF9jb21wbGV4XzAxLmV4cGVjdGVkYDogZmxhdHRlbmVkIEpTT04gZWxlbWVu
dCB0cmVlIHVzZWQgdG8gY2hlY2sgaWYKLSAgcGFyc2luZyB3YXMgY29ycmVjdGVkLgotKiBgdGVz
dF9jb21wbGV4XzAxLmFjdHVhbGA6IGZsYXR0ZW5lZCBKU09OIGVsZW1lbnQgdHJlZSBwcm9kdWNl
ZCBieSBganNvbnRlc3RgCi0gIGZyb20gcmVhZGluZyBgdGVzdF9jb21wbGV4XzAxLmpzb25gLgot
KiBgdGVzdF9jb21wbGV4XzAxLnJld3JpdGVgOiBKU09OIGRvY3VtZW50IHdyaXR0ZW4gYnkgYGpz
b250ZXN0YCB1c2luZyB0aGUKLSAgYEpzb246OlZhbHVlYCBwYXJzZWQgZnJvbSBgdGVzdF9jb21w
bGV4XzAxLmpzb25gIGFuZCBzZXJpYWxpemVkIHVzaW5nCi0gIGBKc29uOjpTdHlsZWRXcml0dGVy
YC4KLSogYHRlc3RfY29tcGxleF8wMS5hY3R1YWwtcmV3cml0ZWA6IGZsYXR0ZW5lZCBKU09OIGVs
ZW1lbnQgdHJlZSBwcm9kdWNlZCBieQotICBganNvbnRlc3RgIGZyb20gcmVhZGluZyBgdGVzdF9j
b21wbGV4XzAxLnJld3JpdGVgLgotKiBgdGVzdF9jb21wbGV4XzAxLnByb2Nlc3Mtb3V0cHV0YDog
YGpzb250ZXN0YCBvdXRwdXQsIHR5cGljYWxseSB1c2VmdWwgZm9yCi0gIHVuZGVyc3RhbmRpbmcg
cGFyc2luZyBlcnJvcnMuCi0KLSMjIFZlcnNpb25pbmcgcnVsZXMKLQotQ29uc3VtZXJzIG9mIHRo
aXMgbGlicmFyeSByZXF1aXJlIGEgc3RyaWN0IGFwcHJvYWNoIHRvIGluY3JlbWVudGluZyB2ZXJz
aW9uaW5nIG9mIHRoZSBKc29uQ3BwIGxpYnJhcnkuIEN1cnJlbnRseSwgd2UgZm9sbG93IHRoZSBi
ZWxvdyBzZXQgb2YgcnVsZXM6Ci0KLSogQW55IG5ldyBwdWJsaWMgc3ltYm9scyByZXF1aXJlIGEg
bWlub3IgdmVyc2lvbiBidW1wLgotKiBBbnkgYWx0ZXJhdGlvbiBvciByZW1vdmFsIG9mIHB1Ymxp
YyBzeW1ib2xzIHJlcXVpcmVzIGEgbWFqb3IgdmVyc2lvbiBidW1wLCBpbmNsdWRpbmcgY2hhbmdp
bmcgdGhlIHNpemUgb2YgYSBjbGFzcy4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yCi1jb25zdW1lcnMg
dG8gZG8gZGVwZW5kZW5jeSBpbmplY3Rpb24gcHJvcGVybHkuCi0KLSMjIFByZXBhcmluZyBjb2Rl
IGZvciBzdWJtaXNzaW9uCi0KLUdlbmVyYWxseSwgSnNvbkNwcCdzIHN0eWxlIGd1aWRlIGhhcyBi
ZWVuIHByZXR0eSByZWxheGVkLCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbW9uIHRoZW1lczoKLQot
KiBWYXJpYWJsZXMgYW5kIGZ1bmN0aW9uIG5hbWVzIHVzZSBsb3dlciBjYW1lbCBjYXNlIChFLmcu
IHBhcnNlVmFsdWUgb3IgY29sbGVjdENvbW1lbnRzKS4KLSogQ2xhc3MgdXNlIGNhbWVsIGNhc2Ug
KGUuZy4gT3VyUmVhZGVyKQotKiBNZW1iZXIgdmFyaWFibGVzIGhhdmUgYSB0cmFpbGluZyB1bmRl
cnNjb3JlCi0qIFByZWZlciBgbnVsbHB0cmAgb3ZlciBgTlVMTGAuCi0qIFBhc3NpbmcgYnkgbm9u
LWNvbnN0IHJlZmVyZW5jZSBpcyBhbGxvd2VkLgotKiBTaW5nbGUgc3RhdGVtZW50IGlmIGJsb2Nr
cyBtYXkgb21pdCBicmFja2V0cy4KLSogR2VuZXJhbGx5IHByZWZlciBsZXNzIHNwYWNlIG92ZXIg
bW9yZSBzcGFjZS4KLQotRm9yIGFuIGV4YW1wbGU6Ci0KLWBgYGMrKwotYm9vbCBSZWFkZXI6OmRl
Y29kZU51bWJlcihUb2tlbiYgdG9rZW4pIHsKLSAgVmFsdWUgZGVjb2RlZDsKLSAgaWYgKCFkZWNv
ZGVOdW1iZXIodG9rZW4sIGRlY29kZWQpKQotICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVudFZh
bHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0
YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExp
bWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLWBgYAotCi1CZWZv
cmUgc3VibWl0dGluZyB5b3VyIGNvZGUsIGVuc3VyZSB0aGF0IHlvdSBtZWV0IHRoZSB2ZXJzaW9u
aW5nIHJlcXVpcmVtZW50cyBhYm92ZSwgZm9sbG93IHRoZSBzdHlsZSBndWlkZSBvZiB0aGUgZmls
ZSB5b3UgYXJlIG1vZGlmeWluZyAob3IgdGhlIGFib3ZlIHJ1bGVzIGZvciBuZXcgZmlsZXMpLCBh
bmQgcnVuIGNsYW5nIGZvcm1hdC4gTWVzb24gZXhwb3NlcyBjbGFuZyBmb3JtYXQgd2l0aCB0aGUg
Zm9sbG93aW5nIGNvbW1hbmQ6Ci0KLWBgYAotbmluamEgLXYgLUMgYnVpbGQtJHtMSUJfVFlQRX0v
IGNsYW5nLWZvcm1hdAotYGBgCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL0xJQ0VOU0UgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL0xJQ0VO
U0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MjgwYTZjNDhhOWRiNTE1NTk3MDBk
MzRjODQ5YjQ5ZTFjNDlhZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9MSUNFTlNFCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotVGhl
IEpzb25DcHAgbGlicmFyeSdzIHNvdXJjZSBjb2RlLCBpbmNsdWRpbmcgYWNjb21wYW55aW5nIGRv
Y3VtZW50YXRpb24sIAotdGVzdHMgYW5kIGRlbW9uc3RyYXRpb24gYXBwbGljYXRpb25zLCBhcmUg
bGljZW5zZWQgdW5kZXIgdGhlIGZvbGxvd2luZwotY29uZGl0aW9ucy4uLgotCi1CYXB0aXN0ZSBM
ZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMgZXhwbGljaXRseSBkaXNjbGFpbSBjb3B5
cmlnaHQgaW4gYWxsIAotanVyaXNkaWN0aW9ucyB3aGljaCByZWNvZ25pemUgc3VjaCBhIGRpc2Ns
YWltZXIuIEluIHN1Y2gganVyaXNkaWN0aW9ucywgCi10aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk
IGludG8gdGhlIFB1YmxpYyBEb21haW4uCi0KLUluIGp1cmlzZGljdGlvbnMgd2hpY2ggZG8gbm90
IHJlY29nbml6ZSBQdWJsaWMgRG9tYWluIHByb3BlcnR5IChlLmcuIEdlcm1hbnkgYXMgb2YKLTIw
MTApLCB0aGlzIHNvZnR3YXJlIGlzIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIGJ5IEJhcHRpc3Rl
IExlcGlsbGV1ciBhbmQKLVRoZSBKc29uQ3BwIEF1dGhvcnMsIGFuZCBpcyByZWxlYXNlZCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIE1JVCBMaWNlbnNlIChzZWUgYmVsb3cpLgotCi1JbiBqdXJpc2Rp
Y3Rpb25zIHdoaWNoIHJlY29nbml6ZSBQdWJsaWMgRG9tYWluIHByb3BlcnR5LCB0aGUgdXNlciBv
ZiB0aGlzIAotc29mdHdhcmUgbWF5IGNob29zZSB0byBhY2NlcHQgaXQgZWl0aGVyIGFzIDEpIFB1
YmxpYyBEb21haW4sIDIpIHVuZGVyIHRoZSAKLWNvbmRpdGlvbnMgb2YgdGhlIE1JVCBMaWNlbnNl
IChzZWUgYmVsb3cpLCBvciAzKSB1bmRlciB0aGUgdGVybXMgb2YgZHVhbCAKLVB1YmxpYyBEb21h
aW4vTUlUIExpY2Vuc2UgY29uZGl0aW9ucyBkZXNjcmliZWQgaGVyZSwgYXMgdGhleSBjaG9vc2Uu
Ci0KLVRoZSBNSVQgTGljZW5zZSBpcyBhYm91dCBhcyBjbG9zZSB0byBQdWJsaWMgRG9tYWluIGFz
IGEgbGljZW5zZSBjYW4gZ2V0LCBhbmQgaXMKLWRlc2NyaWJlZCBpbiBjbGVhciwgY29uY2lzZSB0
ZXJtcyBhdDoKLQotICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZQot
ICAgCi1UaGUgZnVsbCB0ZXh0IG9mIHRoZSBNSVQgTGljZW5zZSBmb2xsb3dzOgotCi09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLUNvcHlyaWdodCAoYykgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQg
VGhlIEpzb25DcHAgQXV0aG9ycwotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgotb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3
YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KLWZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKLXJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg
d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAotbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCi1v
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcwotZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUKLWluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLUVYUFJFU1MgT1IgSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotTUVSQ0hBTlRBQklM
SVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLU5PTklORlJJTkdFTUVO
VC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKLUJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBBTgotQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLCBPVVQgT0YgT1IgSU4KLUNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKLVNPRlRXQVJFLgotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0o
RU5EIExJQ0VOU0UgVEVYVCkKLQotVGhlIE1JVCBsaWNlbnNlIGlzIGNvbXBhdGlibGUgd2l0aCBi
b3RoIHRoZSBHUEwgYW5kIGNvbW1lcmNpYWwKLXNvZnR3YXJlLCBhZmZvcmRpbmcgb25lIGFsbCBv
ZiB0aGUgcmlnaHRzIG9mIFB1YmxpYyBEb21haW4gd2l0aCB0aGUKLW1pbm9yIG51aXNhbmNlIG9m
IGJlaW5nIHJlcXVpcmVkIHRvIGtlZXAgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UKLWFuZCBs
aWNlbnNlIHRleHQgaW4gdGhlIHNvdXJjZSBjb2RlLiBOb3RlIGFsc28gdGhhdCBieSBhY2NlcHRp
bmcgdGhlCi1QdWJsaWMgRG9tYWluICJsaWNlbnNlIiB5b3UgY2FuIHJlLWxpY2Vuc2UgeW91ciBj
b3B5IHVzaW5nIHdoYXRldmVyCi1saWNlbnNlIHlvdSBsaWtlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9S
RUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL1JFQURNRS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGM4NTg3MDYwZGIyYWQ4ZDU2NTU2ZDAxNmI3NzgzY2FlMTg0MjcxMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL1JFQURNRS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ2ICswLDAgQEAKLSMgSnNvbkNwcAotCi1bIVtiYWRnZV0oaHR0cHM6Ly9pbWcu
c2hpZWxkcy5pby9iYWRnZS9jb25hbi5pby1qc29uY3BwJTJGMS44LjAtZ3JlZW4uc3ZnP2xvZ289
ZGF0YTppbWFnZS9wbmc7YmFzZTY0JTJDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUE0QUFBQU9D
QU1BQUFBb2x0M2pBQUFBMVZCTVZFVUFBQUJobGN0amxzdGtsOHRsbU10bG1NeGxtY3htbWN4bm1z
eHBuTXhwbk0xcW5jMXNuODV2b005MW9NMTFvYzF4b3RCMm9jNTZwTkY2cE5KMnB0SjhwdEo4cHRO
OXB0TjhwOU41cU5KOXA5TjlwOVI4cXRPQnFkU0FxdE9BcXRSJTJCck5TQ3JOSi9yZFdEck5XQ3NO
V0NzTmFKczllTHM5aVJ2TnVWdmR5VnY5eVh3ZDJad3Q2YXhONmR4dCUyQmZ4JTJCQ2h5ZUdpeXVH
anl1Q2p5dUdseSUyQkdsek9LbXpPR296dUtveiUyQktxeiUyQk9xME9PdjFPV3cxT1d3MWVXeDFl
V3kxdWF5MSUyQmF6MSUyQmF6MSUyQmV6Mk9lMDJPZTEyZWUyMnVqVUd3SDNBQUFBQVhSU1RsTUFR
T2JZWmdBQUFBRmlTMGRFQUlnRkhVZ0FBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFBSGRF
bE5SUWZnQlFrUkV5T3hGSWgvQUFBQWlrbEVRVlFJMTJOZ0FBTWJPd1k0c0xaMk50UTFjb1ZLV052
b2MvRXE4WERyMndCNUlnNjJla3phOXZhT3FwSzJUcG9Nek94YUZ0d3FadWEyQm00bWFrSU03T3pN
QWpvYUNxWXV4b29TVXFKQUxqczdvNHlWcGJvd3Z6U1V5ODdLcVN3bXhRZm5zclBJU3lGeldlV0FY
Q2twTWFCVklDNGJtQ3NPZGdpVUt3aDNKb2pMZ0FRNFpDRTBBTW0yRDI5dFp3ZTZBQUFBQUVsRlRr
U3VRbUNDKV0oaHR0cHM6Ly9iaW50cmF5LmNvbS90aGVpcml4L2NvbmFuLXJlcG8vanNvbmNwcCUz
QXRoZWlyaXgpCi0KLVtKU09OXVtqc29uLW9yZ10gaXMgYSBsaWdodHdlaWdodCBkYXRhLWludGVy
Y2hhbmdlIGZvcm1hdC4gSXQgY2FuIHJlcHJlc2VudAotbnVtYmVycywgc3RyaW5ncywgb3JkZXJl
ZCBzZXF1ZW5jZXMgb2YgdmFsdWVzLCBhbmQgY29sbGVjdGlvbnMgb2YgbmFtZS92YWx1ZQotcGFp
cnMuCi0KLVtqc29uLW9yZ106IGh0dHA6Ly9qc29uLm9yZy8KLQotSnNvbkNwcCBpcyBhIEMrKyBs
aWJyYXJ5IHRoYXQgYWxsb3dzIG1hbmlwdWxhdGluZyBKU09OIHZhbHVlcywgaW5jbHVkaW5nCi1z
ZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gdG8gYW5kIGZyb20gc3RyaW5ncy4gSXQg
Y2FuIGFsc28gcHJlc2VydmUKLWV4aXN0aW5nIGNvbW1lbnQgaW4gdW5zZXJpYWxpemF0aW9uL3Nl
cmlhbGl6YXRpb24gc3RlcHMsIG1ha2luZyBpdCBhIGNvbnZlbmllbnQKLWZvcm1hdCB0byBzdG9y
ZSB1c2VyIGlucHV0IGZpbGVzLgotCi0KLSMjIERvY3VtZW50YXRpb24KLQotW0pzb25DcHAgZG9j
dW1lbnRhdGlvbl1bSnNvbkNwcC1kb2N1bWVudGF0aW9uXSBpcyBnZW5lcmF0ZWQgdXNpbmcgW0Rv
eHlnZW5dW10uCi0KLVtKc29uQ3BwLWRvY3VtZW50YXRpb25dOiBodHRwOi8vb3Blbi1zb3VyY2Ut
cGFyc2Vycy5naXRodWIuaW8vanNvbmNwcC1kb2NzL2RveHlnZW4vaW5kZXguaHRtbAotW0RveHln
ZW5dOiBodHRwOi8vd3d3LmRveHlnZW4ub3JnCi0KLQotIyMgQSBub3RlIG9uIGJhY2t3YXJkLWNv
bXBhdGliaWxpdHkKLQotKiBgMS55LnpgIGlzIGJ1aWx0IHdpdGggQysrMTEuCi0qIGAwLnkuemAg
Y2FuIGJlIHVzZWQgd2l0aCBvbGRlciBjb21waWxlcnMuCi0qIE1ham9yIHZlcnNpb25zIG1haW50
YWluIGJpbmFyeS1jb21wYXRpYmlsaXR5LgotCi0KLSMjIFVzaW5nIEpzb25DcHAgaW4geW91ciBw
cm9qZWN0Ci0KLSMjIyBBbWFsZ2FtYXRlZCBzb3VyY2UKLWh0dHBzOi8vZ2l0aHViLmNvbS9vcGVu
LXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvd2lraS9BbWFsZ2FtYXRlZAotCi0jIyMgVGhlIE1lc29u
IEJ1aWxkIFN5c3RlbQotSWYgeW91IGFyZSB1c2luZyB0aGUgW01lc29uIEJ1aWxkIFN5c3RlbV0o
aHR0cDovL21lc29uYnVpbGQuY29tKSwgdGhlbiB5b3UgY2FuIGdldCBhIHdyYXAgZmlsZSBieSBk
b3dubG9hZGluZyBpdCBmcm9tIFtNZXNvbiBXcmFwREJdKGh0dHBzOi8vd3JhcGRiLm1lc29uYnVp
bGQuY29tL2pzb25jcHApLCBvciBzaW1wbHkgdXNlIGBtZXNvbiB3cmFwIGluc3RhbGwganNvbmNw
cGAuCi0KLSMjIyBPdGhlciB3YXlzCi1JZiB5b3UgaGF2ZSB0cm91YmxlLCBzZWUgdGhlIFdpa2ks
IG9yIHBvc3QgYSBxdWVzdGlvbiBhcyBhbiBJc3N1ZS4KLQotIyMgTGljZW5zZQotCi1TZWUgdGhl
IGBMSUNFTlNFYCBmaWxlIGZvciBkZXRhaWxzLiBJbiBzdW1tYXJ5LCBKc29uQ3BwIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZQotTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBh
bmQgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvYW1h
bGdhbWF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvYW1hbGdhbWF0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzEyMjE1YThiMmI2NTEzZWE3NjkxNWYzYjQxODlkNmIyOGRhZTRjNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2FtYWxnYW1hdGUucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotIiIiQW1hbGdhbWF0ZSBqc29uLWNwcCBs
aWJyYXJ5IHNvdXJjZXMgaW50byBhIHNpbmdsZSBzb3VyY2UgYW5kIGhlYWRlciBmaWxlLgotCi1X
b3JrcyB3aXRoIHB5dGhvbjIuNisgYW5kIHB5dGhvbjMuNCsuCi0KLUV4YW1wbGUgb2YgaW52b2Nh
dGlvbiAobXVzdCBiZSBpbnZva2VkIGZyb20ganNvbi1jcHAgdG9wIGRpcmVjdG9yeSk6Ci1weXRo
b24gYW1hbGdhbWF0ZS5weQotIiIiCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQg
c3lzCi0KLWNsYXNzIEFtYWxnYW1hdGlvbkZpbGU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRv
cF9kaXIpOgotICAgICAgICBzZWxmLnRvcF9kaXIgPSB0b3BfZGlyCi0gICAgICAgIHNlbGYuYmxv
Y2tzID0gW10KLQotICAgIGRlZiBhZGRfdGV4dChzZWxmLCB0ZXh0KToKLSAgICAgICAgaWYgbm90
IHRleHQuZW5kc3dpdGgoIlxuIik6Ci0gICAgICAgICAgICB0ZXh0ICs9ICJcbiIKLSAgICAgICAg
c2VsZi5ibG9ja3MuYXBwZW5kKHRleHQpCi0KLSAgICBkZWYgYWRkX2ZpbGUoc2VsZiwgcmVsYXRp
dmVfaW5wdXRfcGF0aCwgd3JhcF9pbl9jb21tZW50PUZhbHNlKToKLSAgICAgICAgZGVmIGFkZF9t
YXJrZXIocHJlZml4KToKLSAgICAgICAgICAgIHNlbGYuYWRkX3RleHQoIiIpCi0gICAgICAgICAg
ICBzZWxmLmFkZF90ZXh0KCIvLyAiICsgIi8iKjcwKQotICAgICAgICAgICAgc2VsZi5hZGRfdGV4
dCgiLy8gJXMgb2YgY29udGVudCBvZiBmaWxlOiAlcyIgJSAocHJlZml4LCByZWxhdGl2ZV9pbnB1
dF9wYXRoLnJlcGxhY2UoIlxcIiwiLyIpKSkKLSAgICAgICAgICAgIHNlbGYuYWRkX3RleHQoIi8v
ICIgKyAiLyIqNzApCi0gICAgICAgICAgICBzZWxmLmFkZF90ZXh0KCIiKQotICAgICAgICBhZGRf
bWFya2VyKCJCZWdpbm5pbmciKQotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50
b3BfZGlyLCByZWxhdGl2ZV9pbnB1dF9wYXRoKSwgInJ0IikKLSAgICAgICAgY29udGVudCA9IGYu
cmVhZCgpCi0gICAgICAgIGlmIHdyYXBfaW5fY29tbWVudDoKLSAgICAgICAgICAgIGNvbnRlbnQg
PSAiLypcbiIgKyBjb250ZW50ICsgIlxuKi8iCi0gICAgICAgIHNlbGYuYWRkX3RleHQoY29udGVu
dCkKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGFkZF9tYXJrZXIoIkVuZCIpCi0gICAgICAg
IHNlbGYuYWRkX3RleHQoIlxuXG5cblxuIikKLQotICAgIGRlZiBnZXRfdmFsdWUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiAiIi5qb2luKHNlbGYuYmxvY2tzKS5yZXBsYWNlKCJcclxuIiwiXG4iKQot
Ci0gICAgZGVmIHdyaXRlX3RvKHNlbGYsIG91dHB1dF9wYXRoKToKLSAgICAgICAgb3V0cHV0X2Rp
ciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfcGF0aCkKLSAgICAgICAgaWYgb3V0cHV0X2RpciBh
bmQgbm90IG9zLnBhdGguaXNkaXIob3V0cHV0X2Rpcik6Ci0gICAgICAgICAgICBvcy5tYWtlZGly
cyhvdXRwdXRfZGlyKQotICAgICAgICBmID0gb3BlbihvdXRwdXRfcGF0aCwgIndiIikKLSAgICAg
ICAgZi53cml0ZShzdHIuZW5jb2RlKHNlbGYuZ2V0X3ZhbHVlKCksICdVVEYtOCcpKQotICAgICAg
ICBmLmNsb3NlKCkKLQotZGVmIGFtYWxnYW1hdGVfc291cmNlKHNvdXJjZV90b3BfZGlyPU5vbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9zb3VyY2VfcGF0aD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJfaW5jbHVkZV9wYXRoPU5vbmUpOgotICAgICIiIlByb2R1
Y2VzIGFtYWxnYW1hdGVkIHNvdXJjZS4KLSAgICAgICBQYXJhbWV0ZXJzOgotICAgICAgICAgICBz
b3VyY2VfdG9wX2RpcjogdG9wLWRpcmVjdG9yeQotICAgICAgICAgICB0YXJnZXRfc291cmNlX3Bh
dGg6IG91dHB1dCAuY3BwIHBhdGgKLSAgICAgICAgICAgaGVhZGVyX2luY2x1ZGVfcGF0aDogZ2Vu
ZXJhdGVkIGhlYWRlciBwYXRoIHJlbGF0aXZlIHRvIHRhcmdldF9zb3VyY2VfcGF0aC4KLSAgICAi
IiIKLSAgICBwcmludCgiQW1hbGdhbWF0aW5nIGhlYWRlci4uLiIpCi0gICAgaGVhZGVyID0gQW1h
bGdhbWF0aW9uRmlsZShzb3VyY2VfdG9wX2RpcikKLSAgICBoZWFkZXIuYWRkX3RleHQoIi8vLyBK
c29uLWNwcCBhbWFsZ2FtYXRlZCBoZWFkZXIgKGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5l
dC8pLiIpCi0gICAgaGVhZGVyLmFkZF90ZXh0KCcvLy8gSXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNl
ZCB3aXRoICNpbmNsdWRlICIlcyInICUgaGVhZGVyX2luY2x1ZGVfcGF0aCkKLSAgICBoZWFkZXIu
YWRkX2ZpbGUoIkxJQ0VOU0UiLCB3cmFwX2luX2NvbW1lbnQ9VHJ1ZSkKLSAgICBoZWFkZXIuYWRk
X3RleHQoIiNpZm5kZWYgSlNPTl9BTUFMR0FNQVRFRF9IX0lOQ0xVREVEIikKLSAgICBoZWFkZXIu
YWRkX3RleHQoIiMgZGVmaW5lIEpTT05fQU1BTEdBTUFURURfSF9JTkNMVURFRCIpCi0gICAgaGVh
ZGVyLmFkZF90ZXh0KCIvLy8gSWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRoYXQgdGhlIHNvdXJjZSBm
aWxlIGlzIGFtYWxnYW1hdGVkIikKLSAgICBoZWFkZXIuYWRkX3RleHQoIi8vLyB0byBwcmV2ZW50
IHByaXZhdGUgaGVhZGVyIGluY2x1c2lvbi4iKQotICAgIGhlYWRlci5hZGRfdGV4dCgiI2RlZmlu
ZSBKU09OX0lTX0FNQUxHQU1BVElPTiIpCi0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pz
b24vdmVyc2lvbi5oIikKLSAgICBoZWFkZXIuYWRkX2ZpbGUoImluY2x1ZGUvanNvbi9hbGxvY2F0
b3IuaCIpCi0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pzb24vY29uZmlnLmgiKQotICAg
IGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL2ZvcndhcmRzLmgiKQotICAgIGhlYWRlci5h
ZGRfZmlsZSgiaW5jbHVkZS9qc29uL2ZlYXR1cmVzLmgiKQotICAgIGhlYWRlci5hZGRfZmlsZSgi
aW5jbHVkZS9qc29uL3ZhbHVlLmgiKQotICAgIGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29u
L3JlYWRlci5oIikKLSAgICBoZWFkZXIuYWRkX2ZpbGUoImluY2x1ZGUvanNvbi93cml0ZXIuaCIp
Ci0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pzb24vYXNzZXJ0aW9ucy5oIikKLSAgICBo
ZWFkZXIuYWRkX3RleHQoIiNlbmRpZiAvL2lmbmRlZiBKU09OX0FNQUxHQU1BVEVEX0hfSU5DTFVE
RUQiKQotCi0gICAgdGFyZ2V0X2hlYWRlcl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZSh0YXJnZXRfc291cmNlX3BhdGgpLCBoZWFkZXJfaW5jbHVkZV9wYXRoKQotICAgIHByaW50
KCJXcml0aW5nIGFtYWxnYW1hdGVkIGhlYWRlciB0byAlciIgJSB0YXJnZXRfaGVhZGVyX3BhdGgp
Ci0gICAgaGVhZGVyLndyaXRlX3RvKHRhcmdldF9oZWFkZXJfcGF0aCkKLQotICAgIGJhc2UsIGV4
dCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX2luY2x1ZGVfcGF0aCkKLSAgICBmb3J3YXJkX2hl
YWRlcl9pbmNsdWRlX3BhdGggPSBiYXNlICsgIi1mb3J3YXJkcyIgKyBleHQKLSAgICBwcmludCgi
QW1hbGdhbWF0aW5nIGZvcndhcmQgaGVhZGVyLi4uIikKLSAgICBoZWFkZXIgPSBBbWFsZ2FtYXRp
b25GaWxlKHNvdXJjZV90b3BfZGlyKQotICAgIGhlYWRlci5hZGRfdGV4dCgiLy8vIEpzb24tY3Bw
IGFtYWxnYW1hdGVkIGZvcndhcmQgaGVhZGVyIChodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5u
ZXQvKS4iKQotICAgIGhlYWRlci5hZGRfdGV4dCgnLy8vIEl0IGlzIGludGVuZGVkIHRvIGJlIHVz
ZWQgd2l0aCAjaW5jbHVkZSAiJXMiJyAlIGZvcndhcmRfaGVhZGVyX2luY2x1ZGVfcGF0aCkKLSAg
ICBoZWFkZXIuYWRkX3RleHQoIi8vLyBUaGlzIGhlYWRlciBwcm92aWRlcyBmb3J3YXJkIGRlY2xh
cmF0aW9uIGZvciBhbGwgSnNvbkNwcCB0eXBlcy4iKQotICAgIGhlYWRlci5hZGRfZmlsZSgiTElD
RU5TRSIsIHdyYXBfaW5fY29tbWVudD1UcnVlKQotICAgIGhlYWRlci5hZGRfdGV4dCgiI2lmbmRl
ZiBKU09OX0ZPUldBUkRfQU1BTEdBTUFURURfSF9JTkNMVURFRCIpCi0gICAgaGVhZGVyLmFkZF90
ZXh0KCIjIGRlZmluZSBKU09OX0ZPUldBUkRfQU1BTEdBTUFURURfSF9JTkNMVURFRCIpCi0gICAg
aGVhZGVyLmFkZF90ZXh0KCIvLy8gSWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRoYXQgdGhlIHNvdXJj
ZSBmaWxlIGlzIGFtYWxnYW1hdGVkIikKLSAgICBoZWFkZXIuYWRkX3RleHQoIi8vLyB0byBwcmV2
ZW50IHByaXZhdGUgaGVhZGVyIGluY2x1c2lvbi4iKQotICAgIGhlYWRlci5hZGRfdGV4dCgiI2Rl
ZmluZSBKU09OX0lTX0FNQUxHQU1BVElPTiIpCi0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNsdWRl
L2pzb24vY29uZmlnLmgiKQotICAgIGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL2Zvcndh
cmRzLmgiKQotICAgIGhlYWRlci5hZGRfdGV4dCgiI2VuZGlmIC8vaWZuZGVmIEpTT05fRk9SV0FS
RF9BTUFMR0FNQVRFRF9IX0lOQ0xVREVEIikKLQotICAgIHRhcmdldF9mb3J3YXJkX2hlYWRlcl9w
YXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSh0YXJnZXRfc291cmNlX3BhdGgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2hl
YWRlcl9pbmNsdWRlX3BhdGgpCi0gICAgcHJpbnQoIldyaXRpbmcgYW1hbGdhbWF0ZWQgZm9yd2Fy
ZCBoZWFkZXIgdG8gJXIiICUgdGFyZ2V0X2ZvcndhcmRfaGVhZGVyX3BhdGgpCi0gICAgaGVhZGVy
LndyaXRlX3RvKHRhcmdldF9mb3J3YXJkX2hlYWRlcl9wYXRoKQotCi0gICAgcHJpbnQoIkFtYWxn
YW1hdGluZyBzb3VyY2UuLi4iKQotICAgIHNvdXJjZSA9IEFtYWxnYW1hdGlvbkZpbGUoc291cmNl
X3RvcF9kaXIpCi0gICAgc291cmNlLmFkZF90ZXh0KCIvLy8gSnNvbi1jcHAgYW1hbGdhbWF0ZWQg
c291cmNlIChodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvKS4iKQotICAgIHNvdXJjZS5h
ZGRfdGV4dCgnLy8vIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCAjaW5jbHVkZSAiJXMi
JyAlIGhlYWRlcl9pbmNsdWRlX3BhdGgpCi0gICAgc291cmNlLmFkZF9maWxlKCJMSUNFTlNFIiwg
d3JhcF9pbl9jb21tZW50PVRydWUpCi0gICAgc291cmNlLmFkZF90ZXh0KCIiKQotICAgIHNvdXJj
ZS5hZGRfdGV4dCgnI2luY2x1ZGUgIiVzIicgJSBoZWFkZXJfaW5jbHVkZV9wYXRoKQotICAgIHNv
dXJjZS5hZGRfdGV4dCgiIiIKLSNpZm5kZWYgSlNPTl9JU19BTUFMR0FNQVRJT04KLSNlcnJvciAi
Q29tcGlsZSB3aXRoIC1JIFBBVEhfVE9fSlNPTl9ESVJFQ1RPUlkiCi0jZW5kaWYKLSIiIikKLSAg
ICBzb3VyY2UuYWRkX3RleHQoIiIpCi0gICAgbGliX2pzb24gPSAic3JjL2xpYl9qc29uIgotICAg
IHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4obGliX2pzb24sICJqc29uX3Rvb2wuaCIpKQot
ICAgIHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4obGliX2pzb24sICJqc29uX3JlYWRlci5j
cHAiKSkKLSAgICBzb3VyY2UuYWRkX2ZpbGUob3MucGF0aC5qb2luKGxpYl9qc29uLCAianNvbl92
YWx1ZWl0ZXJhdG9yLmlubCIpKQotICAgIHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4obGli
X2pzb24sICJqc29uX3ZhbHVlLmNwcCIpKQotICAgIHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpv
aW4obGliX2pzb24sICJqc29uX3dyaXRlci5jcHAiKSkKLQotICAgIHByaW50KCJXcml0aW5nIGFt
YWxnYW1hdGVkIHNvdXJjZSB0byAlciIgJSB0YXJnZXRfc291cmNlX3BhdGgpCi0gICAgc291cmNl
LndyaXRlX3RvKHRhcmdldF9zb3VyY2VfcGF0aCkKLQotZGVmIG1haW4oKToKLSAgICB1c2FnZSA9
ICIiIiVwcm9nIFtvcHRpb25zXQotR2VuZXJhdGUgYSBzaW5nbGUgYW1hbGdhbWF0ZWQgc291cmNl
IGFuZCBoZWFkZXIgZmlsZSBmcm9tIHRoZSBzb3VyY2VzLgotIiIiCi0gICAgZnJvbSBvcHRwYXJz
ZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKHVzYWdlPXVz
YWdlKQotICAgIHBhcnNlci5hbGxvd19pbnRlcnNwZXJzZWRfYXJncyA9IEZhbHNlCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc291cmNlIiwgZGVzdD0idGFyZ2V0X3NvdXJjZV9wYXRo
IiwgYWN0aW9uPSJzdG9yZSIsIGRlZmF1bHQ9ImRpc3QvanNvbmNwcC5jcHAiLAotICAgICAgICBo
ZWxwPSIiIk91dHB1dCAuY3BwIHNvdXJjZSBwYXRoLiBbRGVmYXVsdDogJWRlZmF1bHRdIiIiKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCItaSIsICItLWluY2x1ZGUiLCBkZXN0PSJoZWFkZXJfaW5j
bHVkZV9wYXRoIiwgYWN0aW9uPSJzdG9yZSIsIGRlZmF1bHQ9Impzb24vanNvbi5oIiwKLSAgICAg
ICAgaGVscD0iIiJIZWFkZXIgaW5jbHVkZSBwYXRoLiBVc2VkIHRvIGluY2x1ZGUgdGhlIGhlYWRl
ciBmcm9tIHRoZSBhbWFsZ2FtYXRlZCBzb3VyY2UgZmlsZS4gW0RlZmF1bHQ6ICVkZWZhdWx0XSIi
IikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXQiLCAiLS10b3AtZGlyIiwgZGVzdD0idG9wX2Rp
ciIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PW9zLmdldGN3ZCgpLAotICAgICAgICBoZWxwPSIi
IlNvdXJjZSB0b3AtZGlyZWN0b3J5LiBbRGVmYXVsdDogJWRlZmF1bHRdIiIiKQotICAgIHBhcnNl
ci5lbmFibGVfaW50ZXJzcGVyc2VkX2FyZ3MoKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIu
cGFyc2VfYXJncygpCi0KLSAgICBtc2cgPSBhbWFsZ2FtYXRlX3NvdXJjZShzb3VyY2VfdG9wX2Rp
cj1vcHRpb25zLnRvcF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9z
b3VyY2VfcGF0aD1vcHRpb25zLnRhcmdldF9zb3VyY2VfcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVhZGVyX2luY2x1ZGVfcGF0aD1vcHRpb25zLmhlYWRlcl9pbmNsdWRlX3Bh
dGgpCi0gICAgaWYgbXNnOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKG1zZyArICJcbiIpCi0g
ICAgICAgIHN5cy5leGl0KDEpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIlNvdXJjZSBzdWNj
ZXNzZnVsbHkgYW1hbGdhbWF0ZWQiKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAg
IG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hcHB2ZXlvci55bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2FwcHZleW9yLnlt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI5YzhmZTNmZWEwZTkwMTlkZDBlMjQy
NzE4Zjg5ZDYwZGI1ZTFjMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL2FwcHZleW9yLnltbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAK
LWNsb25lX2ZvbGRlcjogYzpccHJvamVjdHNcanNvbmNwcAotCi1lbnZpcm9ubWVudDoKLSAgbWF0
cml4OgotICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIw
MTUKLSAgICAgIENNQUtFX0dFTkVSQVRPUjogVmlzdWFsIFN0dWRpbyAxNCAyMDE1Ci0gICAgLSBB
UFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1BR0U6IFZpc3VhbCBTdHVkaW8gMjAxNQotICAgICAgQ01B
S0VfR0VORVJBVE9SOiBWaXN1YWwgU3R1ZGlvIDE0IDIwMTUgV2luNjQKLSAgICAtIEFQUFZFWU9S
X0JVSUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE3Ci0gICAgICBDTUFLRV9HRU5F
UkFUT1I6IFZpc3VhbCBTdHVkaW8gMTUgMjAxNwotICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VS
X0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIwMTcKLSAgICAgIENNQUtFX0dFTkVSQVRPUjogVmlzdWFs
IFN0dWRpbyAxNSAyMDE3IFdpbjY0Ci0KLWJ1aWxkX3NjcmlwdDoKLSAgLSBjbWFrZSAtLXZlcnNp
b24KLSAgLSBjZCBjOlxwcm9qZWN0c1xqc29uY3BwCi0gIC0gY21ha2UgLUcgIiVDTUFLRV9HRU5F
UkFUT1IlIiAtRENNQUtFX0lOU1RBTExfUFJFRklYOlBBVEg9JUNEOlw9LyUvaW5zdGFsbCAtREJV
SUxEX1NIQVJFRF9MSUJTOkJPT0w9T04gLgotICAjIFVzZSBjdGVzdCB0byBtYWtlIGEgZGFzaGJv
YXJkIGJ1aWxkOgotICAjIC0gY3Rlc3QgLUQgRXhwZXJpbWVudGFsKFN0YXJ0fFVwZGF0ZXxDb25m
aWd1cmV8QnVpbGR8VGVzdHxDb3ZlcmFnZXxNZW1DaGVja3xTdWJtaXQpCi0gICMgTk9URTogVGVz
dGluZyBvbiB3aW5kb3cgaXMgbm90IHlldCBmaW5pc2hlZDoKLSAgIyAtIGN0ZXN0IC1DIFJlbGVh
c2UgLUQgRXhwZXJpbWVudGFsU3RhcnQgLUQgRXhwZXJpbWVudGFsQ29uZmlndXJlIC1EIEV4cGVy
aW1lbnRhbEJ1aWxkIC1EIEV4cGVyaW1lbnRhbFRlc3QgLUQgRXhwZXJpbWVudGFsU3VibWl0Ci0g
IC0gY3Rlc3QgLUMgUmVsZWFzZSAtRCBFeHBlcmltZW50YWxTdGFydCAtRCBFeHBlcmltZW50YWxD
b25maWd1cmUgLUQgRXhwZXJpbWVudGFsQnVpbGQgLUQgRXhwZXJpbWVudGFsU3VibWl0Ci0gICMg
RmluYWwgc3RlcCBpcyB0byB2ZXJpZnkgdGhhdCBpbnN0YWxsYXRpb24gc3VjY2VlZHMKLSAgLSBj
bWFrZSAtLWJ1aWxkIC4gLS1jb25maWcgUmVsZWFzZSAtLXRhcmdldCBpbnN0YWxsCi0KLWRlcGxv
eToKLSAgICBwcm92aWRlcjogR2l0SHViCi0gICAgYXV0aF90b2tlbjoKLSAgICAgICAgc2VjdXJl
OiBLMlRwMXE4cElaN3JzME90MjRaTVd1d3IxMkV2NlRjNlFraE1qR1F4b1FHM25nMXBYdGdQYXNp
SjQ1SURYR2RnCi0gICAgb246Ci0gICAgICAgIGJyYW5jaDogbWFzdGVyCi0gICAgICAgIGFwcHZl
eW9yX3JlcG9fdGFnOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rldi5tYWtlZmlsZSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
ZGV2Lm1ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTRiZTZhOTEzNDY4
MThjZDBlMGEwMzMwZTFlOGZiZjFmYmE5NWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2Lm1ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEs
MzUgKzAsMCBAQAotIyBUaGlzIGlzIG9ubHkgZm9yIGpzb25jcHAgZGV2ZWxvcGVycy9jb250cmli
dXRvcnMuCi0jIFdlIHVzZSB0aGlzIHRvIHNpZ24gcmVsZWFzZXMsIGdlbmVyYXRlIGRvY3VtZW50
YXRpb24sIGV0Yy4KLVZFUj89JChzaGVsbCBjYXQgdmVyc2lvbi50eHQpCi0KLWRlZmF1bHQ6Ci0J
QGVjaG8gIlZFUj0ke1ZFUn0iCi1zaWduOiBqc29uY3BwLSR7VkVSfS50YXIuZ3oKLQlncGcgLS1h
cm1vciAtLWRldGFjaC1zaWduICQ8Ci0JZ3BnIC0tdmVyaWZ5ICQ8LmFzYwotCSMgVGhlbiB1cGxv
YWQgLmFzYyB0byB0aGUgcmVsZWFzZS4KLWpzb25jcHAtJS50YXIuZ3o6Ci0JY3VybCBodHRwczov
L2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwL2FyY2hpdmUvJCoudGFyLmd6
IC1vICRACi1kb3g6Ci0JcHl0aG9uIGRveHlidWlsZC5weSAtLWRveHlnZW49JCQod2hpY2ggZG94
eWdlbikgLS1pbiBkb2Mvd2ViX2RveHlmaWxlLmluCi0JcnN5bmMgLXZhIC1jIC0tZGVsZXRlIGRp
c3QvZG94eWdlbi9qc29uY3BwLWFwaS1odG1sLSR7VkVSfS8gLi4vanNvbmNwcC1kb2NzL2RveHln
ZW4vCi0JIyBUaGVuICdnaXQgYWRkIC1BJyBhbmQgJ2dpdCBwdXNoJyBpbiBqc29uY3BwLWRvY3Mu
Ci1idWlsZDoKLQlta2RpciAtcCBidWlsZC9kZWJ1ZwotCWNkIGJ1aWxkL2RlYnVnOyBjbWFrZSAt
RENNQUtFX0JVSUxEX1RZUEU9ZGVidWcgLURCVUlMRF9TSEFSRURfTElCUz1PTiAtRyAiVW5peCBN
YWtlZmlsZXMiIC4uLy4uCi0JbWFrZSAtQyBidWlsZC9kZWJ1ZwotCi0jIEN1cnJlbnRseSwgdGhp
cyBkZXBlbmRzIG9uIGluY2x1ZGUvanNvbi92ZXJzaW9uLmggZ2VuZXJhdGVkCi0jIGJ5IGNtYWtl
LgotdGVzdC1hbWFsZ2FtYXRlOgotCXB5dGhvbjIuNyBhbWFsZ2FtYXRlLnB5Ci0JcHl0aG9uMy40
IGFtYWxnYW1hdGUucHkKLQljZCBkaXN0OyBnY2MgLUkuIC1jIGpzb25jcHAuY3BwCi0KLXZhbGdy
aW5kOgotCXZhbGdyaW5kIC0tZXJyb3ItZXhpdGNvZGU9NDIgLS1sZWFrLWNoZWNrPWZ1bGwgLi9i
dWlsZC9kZWJ1Zy9zcmMvdGVzdF9saWJfanNvbi9qc29uY3BwX3Rlc3QKLQotY2xlYW46Ci0JXHJt
IC1yZiAqLmd6ICouYXNjIGRpc3QvCi0KLS5QSE9OWTogYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
ZGV2dG9vbHMvX19pbml0X18ucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL19faW5pdF9fLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTUxZTY1MTQyNWFhN2YzYzljYmJiMjg1ZTkwYzM1Nzlj
MWY3NzliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvZGV2dG9vbHMvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3Jz
Ci0jIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRl
c2lyZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxl
IExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdl
Lm5ldC9MSUNFTlNFCi0KLSMgbW9kdWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50
X3ZtdzcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvYWdlbnRfdm13Ny5qc29uCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjZDdiNzc3ZmU1ZDQ2MTA4ODZmM2ZkNTdjNjk0OGFiNzliOWU4MzZl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2
dG9vbHMvYWdlbnRfdm13Ny5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotewot
ICAgICJjbWFrZV92YXJpYW50cyIgOiBbCi0gICAgICAgIHsibmFtZSI6ICJnZW5lcmF0b3IiLAot
ICAgICAgICAgImdlbmVyYXRvcnMiOiBbCi0gICAgICAgICAgICB7ImdlbmVyYXRvciI6IFsKLSAg
ICAgICAgICAgICAgICAiVmlzdWFsIFN0dWRpbyA3IC5ORVQgMjAwMyIsCi0gICAgICAgICAgICAg
ICAgIlZpc3VhbCBTdHVkaW8gOSAyMDA4IiwKLSAgICAgICAgICAgICAgICAiVmlzdWFsIFN0dWRp
byA5IDIwMDggV2luNjQiLAotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIDEwIiwKLSAg
ICAgICAgICAgICAgICAiVmlzdWFsIFN0dWRpbyAxMCBXaW42NCIsCi0gICAgICAgICAgICAgICAg
IlZpc3VhbCBTdHVkaW8gMTEiLAotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIDExIFdp
bjY0IgotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Imdl
bmVyYXRvciI6IFsiTWluR1cgTWFrZWZpbGVzIl0sCi0gICAgICAgICAgICAgImVudl9wcmVwZW5k
IjogW3sicGF0aCI6ICJjOi93dXQvcHJnL01pbkdXL2JpbiJ9XQotICAgICAgICAgICAgfQotICAg
ICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Im5hbWUiOiAic2hhcmVkX2RsbCIsCi0gICAg
ICAgICAidmFyaWFibGVzIjogWwotICAgICAgICAgICAgWyJCVUlMRF9TSEFSRURfTElCUz10cnVl
Il0sCi0gICAgICAgICAgICBbIkJVSUxEX1NIQVJFRF9MSUJTPWZhbHNlIl0KLSAgICAgICAgICBd
Ci0gICAgICAgIH0sCi0gICAgICAgIHsibmFtZSI6ICJidWlsZF90eXBlIiwKLSAgICAgICAgICJi
dWlsZF90eXBlcyI6IFsKLSAgICAgICAgICAgICJkZWJ1ZyIsCi0gICAgICAgICAgICAicmVsZWFz
ZSIKLSAgICAgICAgICAgIF0KLSAgICAgICAgfQotICAgIF0KLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
ZGV2dG9vbHMvYWdlbnRfdm14cC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9hZ2VudF92bXhwLmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MmEwNzczYTJmMWY1NTQ1Zjk0YTMxNWI5
NTBlZmM3MTNlYmVlMzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9kZXZ0b29scy9hZ2VudF92bXhwLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwy
NiArMCwwIEBACi17Ci0gICAgImNtYWtlX3ZhcmlhbnRzIiA6IFsKLSAgICAgICAgeyJuYW1lIjog
ImdlbmVyYXRvciIsCi0gICAgICAgICAiZ2VuZXJhdG9ycyI6IFsKLSAgICAgICAgICAgIHsiZ2Vu
ZXJhdG9yIjogWwotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIDYiLAotICAgICAgICAg
ICAgICAgICJWaXN1YWwgU3R1ZGlvIDciLAotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlv
IDggMjAwNSIKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9Ci0gICAgICAgICBdCi0g
ICAgICAgIH0sCi0gICAgICAgIHsibmFtZSI6ICJzaGFyZWRfZGxsIiwKLSAgICAgICAgICJ2YXJp
YWJsZXMiOiBbCi0gICAgICAgICAgICBbIkJVSUxEX1NIQVJFRF9MSUJTPXRydWUiXSwKLSAgICAg
ICAgICAgIFsiQlVJTERfU0hBUkVEX0xJQlM9ZmFsc2UiXQotICAgICAgICAgIF0KLSAgICAgICAg
fSwKLSAgICAgICAgeyJuYW1lIjogImJ1aWxkX3R5cGUiLAotICAgICAgICAgImJ1aWxkX3R5cGVz
IjogWwotICAgICAgICAgICAgImRlYnVnIiwKLSAgICAgICAgICAgICJyZWxlYXNlIgotICAgICAg
ICAgICAgXQotICAgICAgICB9Ci0gICAgXQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9h
bnRnbG9iLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9hbnRnbG9iLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ODQzNzY1OGNlMGI3Yjk2NjEzMmJlYWI0NTM1Y2JmZTVjMzg1ZjlhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMv
YW50Z2xvYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMgZW5jb2Rpbmc6IHV0Zi04Ci0jIENvcHlyaWdodCAyMDA5IEJhcHRpc3RlIExl
cGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotIyBEaXN0cmlidXRlZCB1bmRlciBNSVQg
bGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotIyByZWNvZ25pemVkIGlu
IHlvdXIganVyaXNkaWN0aW9uLgotIyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29w
eSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1mcm9tIGRpcmNhY2hlIGltcG9ydCBsaXN0ZGly
Ci1pbXBvcnQgcmUKLWltcG9ydCBmbm1hdGNoCi1pbXBvcnQgb3MucGF0aAotCi0KLSMgVGhlc2Ug
Zm5tYXRjaCBleHByZXNzaW9ucyBhcmUgdXNlZCBieSBkZWZhdWx0IHRvIHBydW5lIHRoZSBkaXJl
Y3RvcnkgdHJlZQotIyB3aGlsZSBkb2luZyB0aGUgcmVjdXJzaXZlIHRyYXZlcnNhbCBpbiB0aGUg
Z2xvYl9pbXBsIG1ldGhvZCBvZiBnbG9iIGZ1bmN0aW9uLgotcHJ1bmVfZGlycyA9ICcuZ2l0IC5i
enIgLmhnIC5zdm4gX01UTiBfZGFyY3MgQ1ZTIFNDQ1MgJwotCi0jIFRoZXNlIGZubWF0Y2ggZXhw
cmVzc2lvbnMgYXJlIHVzZWQgYnkgZGVmYXVsdCB0byBleGNsdWRlIGZpbGVzIGFuZCBkaXJzCi0j
IHdoaWxlIGRvaW5nIHRoZSByZWN1cnNpdmUgdHJhdmVyc2FsIGluIHRoZSBnbG9iX2ltcGwgbWV0
aG9kIG9mIGdsb2IgZnVuY3Rpb24uCi0jI2V4Y2x1ZGVfcGF0cyA9IHBydW5lX3BhdHMgKyAnKn4g
IyojIC4jKiAlKiUgLl8qIC5naXRpZ25vcmUgLmN2c2lnbm9yZSB2c3N2ZXIuc2NjIC5EU19TdG9y
ZScuc3BsaXQoKQotCi0jIFRoZXNlIGFudF9nbG9iIGV4cHJlc3Npb25zIGFyZSB1c2VkIGJ5IGRl
ZmF1bHQgdG8gZXhjbHVkZSBmaWxlcyBhbmQgZGlycyBhbmQgYWxzbyBwcnVuZSB0aGUgZGlyZWN0
b3J5IHRyZWUKLSMgd2hpbGUgZG9pbmcgdGhlIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgaW4gdGhlIGds
b2JfaW1wbCBtZXRob2Qgb2YgZ2xvYiBmdW5jdGlvbi4KLWRlZmF1bHRfZXhjbHVkZXMgPSAnJycK
LSoqLyp+Ci0qKi8jKiMKLSoqLy4jKgotKiovJSolCi0qKi8uXyoKLSoqL0NWUwotKiovQ1ZTLyoq
Ci0qKi8uY3ZzaWdub3JlCi0qKi9TQ0NTCi0qKi9TQ0NTLyoqCi0qKi92c3N2ZXIuc2NjCi0qKi8u
c3ZuCi0qKi8uc3ZuLyoqCi0qKi8uZ2l0Ci0qKi8uZ2l0LyoqCi0qKi8uZ2l0aWdub3JlCi0qKi8u
YnpyCi0qKi8uYnpyLyoqCi0qKi8uaGcKLSoqLy5oZy8qKgotKiovX01UTgotKiovX01UTi8qKgot
KiovX2RhcmNzCi0qKi9fZGFyY3MvKioKLSoqLy5EU19TdG9yZSAnJycKLQotRElSID0gMQotRklM
RSA9IDIKLURJUl9MSU5LID0gNAotRklMRV9MSU5LID0gOAotTElOS1MgPSBESVJfTElOSyB8IEZJ
TEVfTElOSwotQUxMX05PX0xJTksgPSBESVIgfCBGSUxFCi1BTEwgPSBESVIgfCBGSUxFIHwgTElO
S1MKLQotX0FOVF9SRSA9IHJlLmNvbXBpbGUocicoL1wqXCovKXwoXCpcKi8pfCgvXCpcKil8KFwq
KXwoLyl8KFteXCovXSopJykKLQotZGVmIGFudF9wYXR0ZXJuX3RvX3JlKGFudF9wYXR0ZXJuKToK
LSAgICAiIiJHZW5lcmF0ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSB0aGUgYW50IHBhdHRl
cm4uCi0gICAgTWF0Y2hpbmcgY29udmVudGlvbjoKLSAgICAqKi9hOiBtYXRjaCAnYScsICdkaXIv
YScsICdkaXIxL2RpcjIvYScKLSAgICBhLyoqL2I6IG1hdGNoICdhL2InLCAnYS9jL2InLCAnYS9k
L2MvYicKLSAgICAqLnB5OiBtYXRjaCAnc2NyaXB0LnB5JyBidXQgbm90ICdhL3NjcmlwdC5weScK
LSAgICAiIiIKLSAgICByZXggPSBbJ14nXQotICAgIG5leHRfcG9zID0gMAotICAgIHNlcF9yZXgg
PSByJyg/Oi98JXMpJyAlIHJlLmVzY2FwZShvcy5wYXRoLnNlcCkKLSMjICAgIHByaW50ICdDb252
ZXJ0aW5nJywgYW50X3BhdHRlcm4KLSAgICBmb3IgbWF0Y2ggaW4gX0FOVF9SRS5maW5kaXRlcihh
bnRfcGF0dGVybik6Ci0jIyAgICAgICAgcHJpbnQgJ01hdGNoZWQnLCBtYXRjaC5ncm91cCgpCi0j
IyAgICAgICAgcHJpbnQgbWF0Y2guc3RhcnQoMCksIG5leHRfcG9zCi0gICAgICAgIGlmIG1hdGNo
LnN0YXJ0KDApICE9IG5leHRfcG9zOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52
YWxpZCBhbnQgcGF0dGVybiIpCi0gICAgICAgIGlmIG1hdGNoLmdyb3VwKDEpOiAjIC8qKi8KLSAg
ICAgICAgICAgIHJleC5hcHBlbmQoc2VwX3JleCArICcoPzouKiVzKT8nICUgc2VwX3JleCkKLSAg
ICAgICAgZWxpZiBtYXRjaC5ncm91cCgyKTogIyAqKi8KLSAgICAgICAgICAgIHJleC5hcHBlbmQo
Jyg/Oi4qJXMpPycgJSBzZXBfcmV4KQotICAgICAgICBlbGlmIG1hdGNoLmdyb3VwKDMpOiAjIC8q
KgotICAgICAgICAgICAgcmV4LmFwcGVuZChzZXBfcmV4ICsgJy4qJykKLSAgICAgICAgZWxpZiBt
YXRjaC5ncm91cCg0KTogIyAqCi0gICAgICAgICAgICByZXguYXBwZW5kKCdbXi8lc10qJyAlIHJl
LmVzY2FwZShvcy5wYXRoLnNlcCkpCi0gICAgICAgIGVsaWYgbWF0Y2guZ3JvdXAoNSk6ICMgLwot
ICAgICAgICAgICAgcmV4LmFwcGVuZChzZXBfcmV4KQotICAgICAgICBlbHNlOiAjIHNvbWVwYXRo
Ci0gICAgICAgICAgICByZXguYXBwZW5kKHJlLmVzY2FwZShtYXRjaC5ncm91cCg2KSkpCi0gICAg
ICAgIG5leHRfcG9zID0gbWF0Y2guZW5kKCkKLSAgICByZXguYXBwZW5kKCckJykKLSAgICByZXR1
cm4gcmUuY29tcGlsZSgnJy5qb2luKHJleCkpCi0KLWRlZiBfYXNfbGlzdChsKToKLSAgICBpZiBp
c2luc3RhbmNlKGwsIGJhc2VzdHJpbmcpOgotICAgICAgICByZXR1cm4gbC5zcGxpdCgpCi0gICAg
cmV0dXJuIGwKLQotZGVmIGdsb2IoZGlyX3BhdGgsCi0gICAgICAgICBpbmNsdWRlcyA9ICcqKi8q
JywKLSAgICAgICAgIGV4Y2x1ZGVzID0gZGVmYXVsdF9leGNsdWRlcywKLSAgICAgICAgIGVudHJ5
X3R5cGUgPSBGSUxFLAotICAgICAgICAgcHJ1bmVfZGlycyA9IHBydW5lX2RpcnMsCi0gICAgICAg
ICBtYXhfZGVwdGggPSAyNSk6Ci0gICAgaW5jbHVkZV9maWx0ZXIgPSBbYW50X3BhdHRlcm5fdG9f
cmUocCkgZm9yIHAgaW4gX2FzX2xpc3QoaW5jbHVkZXMpXQotICAgIGV4Y2x1ZGVfZmlsdGVyID0g
W2FudF9wYXR0ZXJuX3RvX3JlKHApIGZvciBwIGluIF9hc19saXN0KGV4Y2x1ZGVzKV0KLSAgICBw
cnVuZV9kaXJzID0gW3AucmVwbGFjZSgnLycsb3MucGF0aC5zZXApIGZvciBwIGluIF9hc19saXN0
KHBydW5lX2RpcnMpXQotICAgIGRpcl9wYXRoID0gZGlyX3BhdGgucmVwbGFjZSgnLycsb3MucGF0
aC5zZXApCi0gICAgZW50cnlfdHlwZV9maWx0ZXIgPSBlbnRyeV90eXBlCi0KLSAgICBkZWYgaXNf
cHJ1bmVkX2RpcihkaXJfbmFtZSk6Ci0gICAgICAgIGZvciBwYXR0ZXJuIGluIHBydW5lX2RpcnM6
Ci0gICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2goZGlyX25hbWUsIHBhdHRlcm4pOgotICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVm
IGFwcGx5X2ZpbHRlcihmdWxsX3BhdGgsIGZpbHRlcl9yZXhzKToKLSAgICAgICAgIiIiUmV0dXJu
IFRydWUgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmaWx0ZXIgcmVndWxhciBleHByZXNzaW9uIG1h
dGNoIGZ1bGxfcGF0aC4iIiIKLSAgICAgICAgZm9yIHJleCBpbiBmaWx0ZXJfcmV4czoKLSAgICAg
ICAgICAgIGlmIHJleC5tYXRjaChmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGdsb2JfaW1wbChyb290X2Rpcl9w
YXRoKToKLSAgICAgICAgY2hpbGRfZGlycyA9IFtyb290X2Rpcl9wYXRoXQotICAgICAgICB3aGls
ZSBjaGlsZF9kaXJzOgotICAgICAgICAgICAgZGlyX3BhdGggPSBjaGlsZF9kaXJzLnBvcCgpCi0g
ICAgICAgICAgICBmb3IgZW50cnkgaW4gbGlzdGRpcihkaXJfcGF0aCk6Ci0gICAgICAgICAgICAg
ICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRoLCBlbnRyeSkKLSMjICAgICAgICAg
ICAgICAgIHByaW50ICdUZXN0aW5nOicsIGZ1bGxfcGF0aCwKLSAgICAgICAgICAgICAgICBpc19k
aXIgPSBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICAgICBpZiBpc19kaXIg
YW5kIG5vdCBpc19wcnVuZWRfZGlyKGVudHJ5KTogIyBleHBsb3JlIGNoaWxkIGRpcmVjdG9yeSA/
Ci0jIyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJz09PT4gbWFya2VkIGZvciByZWN1cnNpb24n
LAotICAgICAgICAgICAgICAgICAgICBjaGlsZF9kaXJzLmFwcGVuZChmdWxsX3BhdGgpCi0gICAg
ICAgICAgICAgICAgaW5jbHVkZWQgPSBhcHBseV9maWx0ZXIoZnVsbF9wYXRoLCBpbmNsdWRlX2Zp
bHRlcikKLSAgICAgICAgICAgICAgICByZWplY3RlZCA9IGFwcGx5X2ZpbHRlcihmdWxsX3BhdGgs
IGV4Y2x1ZGVfZmlsdGVyKQotICAgICAgICAgICAgICAgIGlmIG5vdCBpbmNsdWRlZCBvciByZWpl
Y3RlZDogIyBkbyBub3QgaW5jbHVkZSBlbnRyeSA/Ci0jIyAgICAgICAgICAgICAgICAgICAgcHJp
bnQgJz0+IG5vdCBpbmNsdWRlZCBvciByZWplY3RlZCcKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5pc2xpbmsoZnVsbF9wYXRoKQot
ICAgICAgICAgICAgICAgIGlzX2ZpbGUgPSBvcy5wYXRoLmlzZmlsZShmdWxsX3BhdGgpCi0gICAg
ICAgICAgICAgICAgaWYgbm90IGlzX2ZpbGUgYW5kIG5vdCBpc19kaXI6Ci0jIyAgICAgICAgICAg
ICAgICAgICAgcHJpbnQgJz0+IHVua25vd24gZW50cnkgdHlwZScKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBsaW5rOgotICAgICAgICAgICAgICAgICAg
ICBlbnRyeV90eXBlID0gaXNfZmlsZSBhbmQgRklMRV9MSU5LIG9yIERJUl9MSU5LCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW50cnlfdHlwZSA9IGlzX2ZpbGUg
YW5kIEZJTEUgb3IgRElSCi0jIyAgICAgICAgICAgICAgICBwcmludCAnPT4gdHlwZTogJWQnICUg
ZW50cnlfdHlwZSwgCi0gICAgICAgICAgICAgICAgaWYgKGVudHJ5X3R5cGUgJiBlbnRyeV90eXBl
X2ZpbHRlcikgIT0gMDoKLSMjICAgICAgICAgICAgICAgICAgICBwcmludCAnID0+IEtFRVAnCi0g
ICAgICAgICAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbihkaXJfcGF0aCwgZW50cnkpCi0j
IyAgICAgICAgICAgICAgICBlbHNlOgotIyMgICAgICAgICAgICAgICAgICAgIHByaW50ICcgPT4g
VFlQRSBSRUpFQ1RFRCcKLSAgICByZXR1cm4gbGlzdChnbG9iX2ltcGwoZGlyX3BhdGgpKQotCi0K
LWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0KLSAgICBj
bGFzcyBBbnRQYXR0ZXJuVG9SRVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotIyMgICAgICAgIGRl
ZiB0ZXN0X2NvbnZlcnNpb24oc2VsZik6Ci0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J15zb21lcGF0aCQnLCBhbnRfcGF0dGVybl90b19yZSgnc29tZXBhdGgnKS5wYXR0ZXJuKQotCi0g
ICAgICAgIGRlZiB0ZXN0X21hdGNoaW5nKHNlbGYpOgotICAgICAgICAgICAgdGVzdF9jYXNlcyA9
IFsgKCdwYXRoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwYXRoJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnc29tZXBhdGgnLCAncGF0aHN1ZmZpeCcsICcvcGF0
aCcsICcvcGF0aCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnKi5weScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnc291cmNlLnB5JywgJ3NvdXJjZS5leHQucHknLCAn
LnB5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGF0aC9zb3VyY2UucHknLCAn
Ly5weScsICdkaXIucHkveicsICd6LnB5YycsICd6LmMnXSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAoJyoqL3BhdGgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3BhdGgn
LCAnL3BhdGgnLCAnL2EvcGF0aCcsICdjOi9hL3BhdGgnLCAnL2EvYi9wYXRoJywgJy8vYS9wYXRo
JywgJy9hL3BhdGgvYi9wYXRoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGF0
aC8nLCAnYS9wYXRoL2InLCAnZGlyLnB5L3onLCAnc29tZXBhdGgnLCAncGF0aHN1ZmZpeCcsICdh
L3NvbWVwYXRoJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdwYXRoLyoqJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwYXRoL2EnLCAncGF0aC9wYXRoL2EnLCAncGF0
aC8vJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGF0aCcsICdzb21lcGF0aC9h
JywgJ2EvcGF0aCcsICdhL3BhdGgvYScsICdwYXRoc3VmZml4L2EnXSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAoJy8qKi9wYXRoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WycvcGF0aCcsICcvYS9wYXRoJywgJy9hL2IvcGF0aC9wYXRoJywgJy9wYXRoL3BhdGgnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwYXRoJywgJ3BhdGgvJywgJ2EvcGF0aCcsICcv
cGF0aHN1ZmZpeCcsICcvc29tZXBhdGgnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo
J2EvYicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYS9iJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsnc29tZWEvYicsICdhL2JzdWZmaXgnLCAnYS9iL2MnXSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAoJyoqLyoucHknLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJ3NjcmlwdC5weScsICdzcmMvc2NyaXB0LnB5JywgJ2EvYi9zY3JpcHQucHkn
LCAnL2EvYi9zY3JpcHQucHknXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydzY3Jp
cHQucHljJywgJ3NjcmlwdC5weW8nLCAnYS5weS9iJ10pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCdzcmMvKiovKi5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3Jj
L2EucHknLCAnc3JjL2Rpci9hLnB5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
YS9zcmMvYS5weScsICcvc3JjL2EucHknXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICBmb3IgYW50X3BhdHRlcm4sIGFjY2VwdGVkX21hdGNoZXMsIHJlamVjdGVk
X21hdGNoZXMgaW4gbGlzdCh0ZXN0X2Nhc2VzKToKLSAgICAgICAgICAgICAgICBkZWYgbG9jYWxf
cGF0aChwYXRocyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHAucmVwbGFjZSgnLycs
b3MucGF0aC5zZXApIGZvciBwIGluIHBhdGhzIF0KLSAgICAgICAgICAgICAgICB0ZXN0X2Nhc2Vz
LmFwcGVuZCgoYW50X3BhdHRlcm4sIGxvY2FsX3BhdGgoYWNjZXB0ZWRfbWF0Y2hlcyksIGxvY2Fs
X3BhdGgocmVqZWN0ZWRfbWF0Y2hlcykpKQotICAgICAgICAgICAgZm9yIGFudF9wYXR0ZXJuLCBh
Y2NlcHRlZF9tYXRjaGVzLCByZWplY3RlZF9tYXRjaGVzIGluIHRlc3RfY2FzZXM6Ci0gICAgICAg
ICAgICAgICAgcmV4ID0gYW50X3BhdHRlcm5fdG9fcmUoYW50X3BhdHRlcm4pCi0gICAgICAgICAg
ICAgICAgcHJpbnQoJ2FudF9wYXR0ZXJuOicsIGFudF9wYXR0ZXJuLCAnID0+ICcsIHJleC5wYXR0
ZXJuKQotICAgICAgICAgICAgICAgIGZvciBhY2NlcHRlZF9tYXRjaCBpbiBhY2NlcHRlZF9tYXRj
aGVzOgotICAgICAgICAgICAgICAgICAgICBwcmludCgnQWNjZXB0ZWQ/OicsIGFjY2VwdGVkX21h
dGNoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmV4Lm1hdGNoKGFjY2Vw
dGVkX21hdGNoKSBpcyBub3QgTm9uZSkKLSAgICAgICAgICAgICAgICBmb3IgcmVqZWN0ZWRfbWF0
Y2ggaW4gcmVqZWN0ZWRfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlamVj
dGVkPzonLCByZWplY3RlZF9tYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJleC5tYXRjaChyZWplY3RlZF9tYXRjaCkgaXMgTm9uZSkKLQotICAgIHVuaXR0ZXN0Lm1h
aW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9iYXRjaGJ1aWxkLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0
b29scy9iYXRjaGJ1aWxkLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWIwNjkw
ZThjNmQ3M2FkMWVlOGIzNjMxY2VmN2Y5OTE1NDdmNDg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvYmF0Y2hidWlsZC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50
X2Z1bmN0aW9uCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBpdGVydG9vbHMKLWltcG9ydCBq
c29uCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwK
LWltcG9ydCBzdHJpbmcKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgY2dp
Ci0KLWNsYXNzIEJ1aWxkRGVzYzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlcGVuZF9lbnZz
PU5vbmUsIHZhcmlhYmxlcz1Ob25lLCBidWlsZF90eXBlPU5vbmUsIGdlbmVyYXRvcj1Ob25lKToK
LSAgICAgICAgc2VsZi5wcmVwZW5kX2VudnMgPSBwcmVwZW5kX2VudnMgb3IgW10gIyBbIHsgInZh
ciI6ICJ2YWx1ZSIgfSBdCi0gICAgICAgIHNlbGYudmFyaWFibGVzID0gdmFyaWFibGVzIG9yIFtd
Ci0gICAgICAgIHNlbGYuYnVpbGRfdHlwZSA9IGJ1aWxkX3R5cGUKLSAgICAgICAgc2VsZi5nZW5l
cmF0b3IgPSBnZW5lcmF0b3IKLQotICAgIGRlZiBtZXJnZWRfd2l0aChzZWxmLCBidWlsZF9kZXNj
KToKLSAgICAgICAgIiIiUmV0dXJucyBhIG5ldyBCdWlsZERlc2MgYnkgbWVyZ2luZyBmaWVsZCBj
b250ZW50LgotICAgICAgICAgICBQcmVmZXIgYnVpbGRfZGVzYyBmaWVsZHMgdG8gc2VsZiBmaWVs
ZHMgZm9yIHNpbmdsZSB2YWx1ZWQgZmllbGQuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4g
QnVpbGREZXNjKHNlbGYucHJlcGVuZF9lbnZzICsgYnVpbGRfZGVzYy5wcmVwZW5kX2VudnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzICsgYnVpbGRfZGVzYy52YXJp
YWJsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2Rlc2MuYnVpbGRfdHlwZSBv
ciBzZWxmLmJ1aWxkX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2Rlc2Mu
Z2VuZXJhdG9yIG9yIHNlbGYuZ2VuZXJhdG9yKQotCi0gICAgZGVmIGVudihzZWxmKToKLSAgICAg
ICAgZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgICAgIGZvciB2YWx1ZXNfYnlfbmFt
ZSBpbiBzZWxmLnByZXBlbmRfZW52czoKLSAgICAgICAgICAgIGZvciB2YXIsIHZhbHVlIGluIGxp
c3QodmFsdWVzX2J5X25hbWUuaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAgdmFyID0gdmFyLnVw
cGVyKCkKLSAgICAgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB1bmljb2RlOgotICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShzeXMuZ2V0ZGVmYXVsdGVuY29kaW5n
KCkpCi0gICAgICAgICAgICAgICAgaWYgdmFyIGluIGVudmlyb246Ci0gICAgICAgICAgICAgICAg
ICAgIGVudmlyb25bdmFyXSA9IHZhbHVlICsgb3MucGF0aHNlcCArIGVudmlyb25bdmFyXQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVudmlyb25bdmFyXSA9IHZh
bHVlCi0gICAgICAgIHJldHVybiBlbnZpcm9uCi0KLSAgICBkZWYgY21ha2VfYXJncyhzZWxmKToK
LSAgICAgICAgYXJncyA9IFsiLUQlcyIgJSB2YXIgZm9yIHZhciBpbiBzZWxmLnZhcmlhYmxlc10K
LSAgICAgICAgIyBza2lwIGJ1aWxkIHR5cGUgZm9yIFZpc3VhbCBTdHVkaW8gc29sdXRpb24gYXMg
aXQgY2F1c2Ugd2FybmluZwotICAgICAgICBpZiBzZWxmLmJ1aWxkX3R5cGUgYW5kICdWaXN1YWwn
IG5vdCBpbiBzZWxmLmdlbmVyYXRvcjoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItRENNQUtF
X0JVSUxEX1RZUEU9JXMiICUgc2VsZi5idWlsZF90eXBlKQotICAgICAgICBpZiBzZWxmLmdlbmVy
YXRvcjoKLSAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLUcnLCBzZWxmLmdlbmVyYXRvcl0pCi0g
ICAgICAgIHJldHVybiBhcmdzCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJl
dHVybiAiQnVpbGREZXNjKCVzLCBidWlsZF90eXBlPSVzKSIgJSAgKCIgIi5qb2luKHNlbGYuY21h
a2VfYXJncygpKSwgc2VsZi5idWlsZF90eXBlKQotCi1jbGFzcyBCdWlsZERhdGE6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGRlc2MsIHdvcmtfZGlyLCBzb3VyY2VfZGlyKToKLSAgICAgICAgc2Vs
Zi5kZXNjID0gZGVzYwotICAgICAgICBzZWxmLndvcmtfZGlyID0gd29ya19kaXIKLSAgICAgICAg
c2VsZi5zb3VyY2VfZGlyID0gc291cmNlX2RpcgotICAgICAgICBzZWxmLmNtYWtlX2xvZ19wYXRo
ID0gb3MucGF0aC5qb2luKHdvcmtfZGlyLCAnYmF0Y2hidWlsZF9jbWFrZS5sb2cnKQotICAgICAg
ICBzZWxmLmJ1aWxkX2xvZ19wYXRoID0gb3MucGF0aC5qb2luKHdvcmtfZGlyLCAnYmF0Y2hidWls
ZF9idWlsZC5sb2cnKQotICAgICAgICBzZWxmLmNtYWtlX3N1Y2NlZWRlZCA9IEZhbHNlCi0gICAg
ICAgIHNlbGYuYnVpbGRfc3VjY2VlZGVkID0gRmFsc2UKLQotICAgIGRlZiBleGVjdXRlX2J1aWxk
KHNlbGYpOgotICAgICAgICBwcmludCgnQnVpbGQgJXMnICUgc2VsZi5kZXNjKQotICAgICAgICBz
ZWxmLl9tYWtlX25ld193b3JrX2RpcigpCi0gICAgICAgIHNlbGYuY21ha2Vfc3VjY2VlZGVkID0g
c2VsZi5fZ2VuZXJhdGVfbWFrZWZpbGVzKCkKLSAgICAgICAgaWYgc2VsZi5jbWFrZV9zdWNjZWVk
ZWQ6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkX3N1Y2NlZWRlZCA9IHNlbGYuX2J1aWxkX3VzaW5n
X21ha2VmaWxlcygpCi0gICAgICAgIHJldHVybiBzZWxmLmJ1aWxkX3N1Y2NlZWRlZAotCi0gICAg
ZGVmIF9nZW5lcmF0ZV9tYWtlZmlsZXMoc2VsZik6Ci0gICAgICAgIHByaW50KCcgIEdlbmVyYXRp
bmcgbWFrZWZpbGVzOiAnLCBlbmQ9JyAnKQotICAgICAgICBjbWQgPSBbJ2NtYWtlJ10gKyBzZWxm
LmRlc2MuY21ha2VfYXJncygpICsgW29zLnBhdGguYWJzcGF0aChzZWxmLnNvdXJjZV9kaXIpXQot
ICAgICAgICBzdWNjZWVkZWQgPSBzZWxmLl9leGVjdXRlX2J1aWxkX3N1YnByb2Nlc3MoY21kLCBz
ZWxmLmRlc2MuZW52KCksIHNlbGYuY21ha2VfbG9nX3BhdGgpCi0gICAgICAgIHByaW50KCdkb25l
JyBpZiBzdWNjZWVkZWQgZWxzZSAnRkFJTEVEJykKLSAgICAgICAgcmV0dXJuIHN1Y2NlZWRlZAot
Ci0gICAgZGVmIF9idWlsZF91c2luZ19tYWtlZmlsZXMoc2VsZik6Ci0gICAgICAgIHByaW50KCcg
IEJ1aWxkaW5nOicsIGVuZD0nICcpCi0gICAgICAgIGNtZCA9IFsnY21ha2UnLCAnLS1idWlsZCcs
IHNlbGYud29ya19kaXJdCi0gICAgICAgIGlmIHNlbGYuZGVzYy5idWlsZF90eXBlOgotICAgICAg
ICAgICAgY21kICs9IFsnLS1jb25maWcnLCBzZWxmLmRlc2MuYnVpbGRfdHlwZV0KLSAgICAgICAg
c3VjY2VlZGVkID0gc2VsZi5fZXhlY3V0ZV9idWlsZF9zdWJwcm9jZXNzKGNtZCwgc2VsZi5kZXNj
LmVudigpLCBzZWxmLmJ1aWxkX2xvZ19wYXRoKQotICAgICAgICBwcmludCgnZG9uZScgaWYgc3Vj
Y2VlZGVkIGVsc2UgJ0ZBSUxFRCcpCi0gICAgICAgIHJldHVybiBzdWNjZWVkZWQKLQotICAgIGRl
ZiBfZXhlY3V0ZV9idWlsZF9zdWJwcm9jZXNzKHNlbGYsIGNtZCwgZW52LCBsb2dfcGF0aCk6Ci0g
ICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBjd2Q9c2VsZi53b3JrX2RpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCi0gICAgICAgIHN0ZG91dCwg
XyA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICBzdWNjZWVkZWQgPSAocHJvY2Vzcy5y
ZXR1cm5jb2RlID09IDApCi0gICAgICAgIHdpdGggb3Blbihsb2dfcGF0aCwgJ3diJykgYXMgZmxv
ZzoKLSAgICAgICAgICAgIGxvZyA9ICcgJy5qb2luKGNtZCkgKyAnXG4nICsgc3Rkb3V0ICsgJ1xu
RXhpdCBjb2RlOiAlclxuJyAlIHByb2Nlc3MucmV0dXJuY29kZQotICAgICAgICAgICAgZmxvZy53
cml0ZShmaXhfZW9sKGxvZykpCi0gICAgICAgIHJldHVybiBzdWNjZWVkZWQKLQotICAgIGRlZiBf
bWFrZV9uZXdfd29ya19kaXIoc2VsZik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2VsZi53
b3JrX2Rpcik6Ci0gICAgICAgICAgICBwcmludCgnICBSZW1vdmluZyB3b3JrIGRpcmVjdG9yeScs
IHNlbGYud29ya19kaXIpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYud29ya19kaXIs
IGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoc2VsZi53
b3JrX2Rpcik6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLndvcmtfZGlyKQotCi1kZWYg
Zml4X2VvbChzdGRvdXQpOgotICAgICIiIkZpeGVzIHdyb25nIEVPTCBwcm9kdWNlZCBieSBjbWFr
ZSAtLWJ1aWxkIG9uIFdpbmRvd3MgKFxyXHJcbiBpbnN0ZWFkIG9mIFxyXG4pLgotICAgICIiIgot
ICAgIHJldHVybiByZS5zdWIoJ1xyKlxuJywgb3MubGluZXNlcCwgc3Rkb3V0KQotCi1kZWYgbG9h
ZF9idWlsZF92YXJpYW50c19mcm9tX2NvbmZpZyhjb25maWdfcGF0aCk6Ci0gICAgd2l0aCBvcGVu
KGNvbmZpZ19wYXRoLCAncmInKSBhcyBmY29uZmlnOgotICAgICAgICBkYXRhID0ganNvbi5sb2Fk
KGZjb25maWcpCi0gICAgdmFyaWFudHMgPSBkYXRhWyAnY21ha2VfdmFyaWFudHMnIF0KLSAgICBi
dWlsZF9kZXNjc19ieV9heGlzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGlzdCkKLSAgICBm
b3IgYXhpcyBpbiB2YXJpYW50czoKLSAgICAgICAgYXhpc19uYW1lID0gYXhpc1sibmFtZSJdCi0g
ICAgICAgIGJ1aWxkX2Rlc2NzID0gW10KLSAgICAgICAgaWYgImdlbmVyYXRvcnMiIGluIGF4aXM6
Ci0gICAgICAgICAgICBmb3IgZ2VuZXJhdG9yX2RhdGEgaW4gYXhpc1siZ2VuZXJhdG9ycyJdOgot
ICAgICAgICAgICAgICAgIGZvciBnZW5lcmF0b3IgaW4gZ2VuZXJhdG9yX2RhdGFbImdlbmVyYXRv
ciJdOgotICAgICAgICAgICAgICAgICAgICBidWlsZF9kZXNjID0gQnVpbGREZXNjKGdlbmVyYXRv
cj1nZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByZXBlbmRfZW52cz1nZW5lcmF0b3JfZGF0YS5nZXQoImVudl9wcmVwZW5kIikpCi0gICAgICAg
ICAgICAgICAgICAgIGJ1aWxkX2Rlc2NzLmFwcGVuZChidWlsZF9kZXNjKQotICAgICAgICBlbGlm
ICJ2YXJpYWJsZXMiIGluIGF4aXM6Ci0gICAgICAgICAgICBmb3IgdmFyaWFibGVzIGluIGF4aXNb
InZhcmlhYmxlcyJdOgotICAgICAgICAgICAgICAgIGJ1aWxkX2Rlc2MgPSBCdWlsZERlc2ModmFy
aWFibGVzPXZhcmlhYmxlcykKLSAgICAgICAgICAgICAgICBidWlsZF9kZXNjcy5hcHBlbmQoYnVp
bGRfZGVzYykKLSAgICAgICAgZWxpZiAiYnVpbGRfdHlwZXMiIGluIGF4aXM6Ci0gICAgICAgICAg
ICBmb3IgYnVpbGRfdHlwZSBpbiBheGlzWyJidWlsZF90eXBlcyJdOgotICAgICAgICAgICAgICAg
IGJ1aWxkX2Rlc2MgPSBCdWlsZERlc2MoYnVpbGRfdHlwZT1idWlsZF90eXBlKQotICAgICAgICAg
ICAgICAgIGJ1aWxkX2Rlc2NzLmFwcGVuZChidWlsZF9kZXNjKQotICAgICAgICBidWlsZF9kZXNj
c19ieV9heGlzW2F4aXNfbmFtZV0uZXh0ZW5kKGJ1aWxkX2Rlc2NzKQotICAgIHJldHVybiBidWls
ZF9kZXNjc19ieV9heGlzCi0KLWRlZiBnZW5lcmF0ZV9idWlsZF92YXJpYW50cyhidWlsZF9kZXNj
c19ieV9heGlzKToKLSAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBCdWlsZERlc2MgZ2VuZXJhdGVk
IGZvciB0aGUgcGFydGlhbCBCdWlsZERlc2MgZm9yIGVhY2ggYXhpcy4iIiIKLSAgICBheGlzX25h
bWVzID0gbGlzdChidWlsZF9kZXNjc19ieV9heGlzLmtleXMoKSkKLSAgICBidWlsZF9kZXNjcyA9
IFtdCi0gICAgZm9yIGF4aXNfbmFtZSwgYXhpc19idWlsZF9kZXNjcyBpbiBsaXN0KGJ1aWxkX2Rl
c2NzX2J5X2F4aXMuaXRlbXMoKSk6Ci0gICAgICAgIGlmIGxlbihidWlsZF9kZXNjcyk6Ci0gICAg
ICAgICAgICAjIGZvciBlYWNoIGV4aXN0aW5nIGJ1aWxkX2Rlc2MgYW5kIGVhY2ggYXhpcyBidWls
ZCBkZXNjLCBjcmVhdGUgYSBuZXcgYnVpbGRfZGVzYwotICAgICAgICAgICAgbmV3X2J1aWxkX2Rl
c2NzID0gW10KLSAgICAgICAgICAgIGZvciBwcm90b3R5cGVfYnVpbGRfZGVzYywgYXhpc19idWls
ZF9kZXNjIGluIGl0ZXJ0b29scy5wcm9kdWN0KGJ1aWxkX2Rlc2NzLCBheGlzX2J1aWxkX2Rlc2Nz
KToKLSAgICAgICAgICAgICAgICBuZXdfYnVpbGRfZGVzY3MuYXBwZW5kKHByb3RvdHlwZV9idWls
ZF9kZXNjLm1lcmdlZF93aXRoKGF4aXNfYnVpbGRfZGVzYykpCi0gICAgICAgICAgICBidWlsZF9k
ZXNjcyA9IG5ld19idWlsZF9kZXNjcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnVpbGRf
ZGVzY3MgPSBheGlzX2J1aWxkX2Rlc2NzCi0gICAgcmV0dXJuIGJ1aWxkX2Rlc2NzCi0KLUhUTUxf
VEVNUExBVEUgPSBzdHJpbmcuVGVtcGxhdGUoJycnPGh0bWw+Ci08aGVhZD4KLSAgICA8dGl0bGU+
JHRpdGxlPC90aXRsZT4KLSAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgotICAgIHRkLmZhaWxl
ZCB7YmFja2dyb3VuZC1jb2xvcjojZjA4MDgwO30KLSAgICB0ZC5vayB7YmFja2dyb3VuZC1jb2xv
cjojYzBlZWMwO30KLSAgICA8L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci08dGFibGUgYm9yZGVy
PSIxIj4KLTx0aGVhZD4KLSAgICA8dHI+Ci0gICAgICAgIDx0aD5WYXJpYWJsZXM8L3RoPgotICAg
ICAgICAkdGhfdmFycwotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgICA8dGg+QnVpbGQgdHlw
ZTwvdGg+Ci0gICAgICAgICR0aF9idWlsZF90eXBlcwotICAgIDwvdHI+Ci08L3RoZWFkPgotPHRi
b2R5PgotJHRyX2J1aWxkcwotPC90Ym9keT4KLTwvdGFibGU+Ci08L2JvZHk+PC9odG1sPicnJykK
LQotZGVmIGdlbmVyYXRlX2h0bWxfcmVwb3J0KGh0bWxfcmVwb3J0X3BhdGgsIGJ1aWxkcyk6Ci0g
ICAgcmVwb3J0X2RpciA9IG9zLnBhdGguZGlybmFtZShodG1sX3JlcG9ydF9wYXRoKQotICAgICMg
VmVydGljYWwgYXhpczogZ2VuZXJhdG9yCi0gICAgIyBIb3Jpem9udGFsOiB2YXJpYWJsZXMsIHRo
ZW4gYnVpbGRfdHlwZQotICAgIGJ1aWxkc19ieV9nZW5lcmF0b3IgPSBjb2xsZWN0aW9ucy5kZWZh
dWx0ZGljdChsaXN0KQotICAgIHZhcmlhYmxlcyA9IHNldCgpCi0gICAgYnVpbGRfdHlwZXNfYnlf
dmFyaWFibGUgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCi0gICAgYnVpbGRfYnlfcG9z
X2tleSA9IHt9ICMgeyAoZ2VuZXJhdG9yLCB2YXJfa2V5LCBidWlsZF90eXBlKTogYnVpbGQgfQot
ICAgIGZvciBidWlsZCBpbiBidWlsZHM6Ci0gICAgICAgIGJ1aWxkc19ieV9nZW5lcmF0b3JbYnVp
bGQuZGVzYy5nZW5lcmF0b3JdLmFwcGVuZChidWlsZCkKLSAgICAgICAgdmFyX2tleSA9IHR1cGxl
KHNvcnRlZChidWlsZC5kZXNjLnZhcmlhYmxlcykpCi0gICAgICAgIHZhcmlhYmxlcy5hZGQodmFy
X2tleSkKLSAgICAgICAgYnVpbGRfdHlwZXNfYnlfdmFyaWFibGVbdmFyX2tleV0uYWRkKGJ1aWxk
LmRlc2MuYnVpbGRfdHlwZSkKLSAgICAgICAgcG9zX2tleSA9IChidWlsZC5kZXNjLmdlbmVyYXRv
ciwgdmFyX2tleSwgYnVpbGQuZGVzYy5idWlsZF90eXBlKQotICAgICAgICBidWlsZF9ieV9wb3Nf
a2V5W3Bvc19rZXldID0gYnVpbGQKLSAgICB2YXJpYWJsZXMgPSBzb3J0ZWQodmFyaWFibGVzKQot
ICAgIHRoX3ZhcnMgPSBbXQotICAgIHRoX2J1aWxkX3R5cGVzID0gW10KLSAgICBmb3IgdmFyaWFi
bGUgaW4gdmFyaWFibGVzOgotICAgICAgICBidWlsZF90eXBlcyA9IHNvcnRlZChidWlsZF90eXBl
c19ieV92YXJpYWJsZVt2YXJpYWJsZV0pCi0gICAgICAgIG5iX2J1aWxkX3R5cGUgPSBsZW4oYnVp
bGRfdHlwZXNfYnlfdmFyaWFibGVbdmFyaWFibGVdKQotICAgICAgICB0aF92YXJzLmFwcGVuZCgn
PHRoIGNvbHNwYW49IiVkIj4lczwvdGg+JyAlIChuYl9idWlsZF90eXBlLCBjZ2kuZXNjYXBlKCcg
Jy5qb2luKHZhcmlhYmxlKSkpKQotICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBidWlsZF90eXBl
czoKLSAgICAgICAgICAgIHRoX2J1aWxkX3R5cGVzLmFwcGVuZCgnPHRoPiVzPC90aD4nICUgY2dp
LmVzY2FwZShidWlsZF90eXBlKSkKLSAgICB0cl9idWlsZHMgPSBbXQotICAgIGZvciBnZW5lcmF0
b3IgaW4gc29ydGVkKGJ1aWxkc19ieV9nZW5lcmF0b3IpOgotICAgICAgICB0ZHMgPSBbICc8dGQ+
JXM8L3RkPlxuJyAlIGNnaS5lc2NhcGUoZ2VuZXJhdG9yKSBdCi0gICAgICAgIGZvciB2YXJpYWJs
ZSBpbiB2YXJpYWJsZXM6Ci0gICAgICAgICAgICBidWlsZF90eXBlcyA9IHNvcnRlZChidWlsZF90
eXBlc19ieV92YXJpYWJsZVt2YXJpYWJsZV0pCi0gICAgICAgICAgICBmb3IgYnVpbGRfdHlwZSBp
biBidWlsZF90eXBlczoKLSAgICAgICAgICAgICAgICBwb3Nfa2V5ID0gKGdlbmVyYXRvciwgdmFy
aWFibGUsIGJ1aWxkX3R5cGUpCi0gICAgICAgICAgICAgICAgYnVpbGQgPSBidWlsZF9ieV9wb3Nf
a2V5LmdldChwb3Nfa2V5KQotICAgICAgICAgICAgICAgIGlmIGJ1aWxkOgotICAgICAgICAgICAg
ICAgICAgICBjbWFrZV9zdGF0dXMgPSAnb2snIGlmIGJ1aWxkLmNtYWtlX3N1Y2NlZWRlZCBlbHNl
ICdGQUlMRUQnCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkX3N0YXR1cyA9ICdvaycgaWYgYnVp
bGQuYnVpbGRfc3VjY2VlZGVkIGVsc2UgJ0ZBSUxFRCcKLSAgICAgICAgICAgICAgICAgICAgY21h
a2VfbG9nX3VybCA9IG9zLnBhdGgucmVscGF0aChidWlsZC5jbWFrZV9sb2dfcGF0aCwgcmVwb3J0
X2RpcikKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRfbG9nX3VybCA9IG9zLnBhdGgucmVscGF0
aChidWlsZC5idWlsZF9sb2dfcGF0aCwgcmVwb3J0X2RpcikKLSAgICAgICAgICAgICAgICAgICAg
dGQgPSAnPHRkIGNsYXNzPSIlcyI+PGEgaHJlZj0iJXMiIGNsYXNzPSIlcyI+Q01ha2U6ICVzPC9h
PicgJSAoICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RhdHVzLmxvd2VyKCksIGNtYWtl
X2xvZ191cmwsIGNtYWtlX3N0YXR1cy5sb3dlcigpLCBjbWFrZV9zdGF0dXMpCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGJ1aWxkLmNtYWtlX3N1Y2NlZWRlZDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRkICs9ICc8YnI+PGEgaHJlZj0iJXMiIGNsYXNzPSIlcyI+QnVpbGQ6ICVzPC9hPicgJSAo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2xvZ191cmwsIGJ1aWxkX3N0YXR1cy5s
b3dlcigpLCBidWlsZF9zdGF0dXMpCi0gICAgICAgICAgICAgICAgICAgIHRkICs9ICc8L3RkPicK
LSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0ZCA9ICc8dGQ+PC90
ZD4nCi0gICAgICAgICAgICAgICAgdGRzLmFwcGVuZCh0ZCkKLSAgICAgICAgdHJfYnVpbGRzLmFw
cGVuZCgnPHRyPiVzPC90cj4nICUgJ1xuJy5qb2luKHRkcykpCi0gICAgaHRtbCA9IEhUTUxfVEVN
UExBVEUuc3Vic3RpdHV0ZSggICAgICAgIHRpdGxlPSdCYXRjaCBidWlsZCByZXBvcnQnLAotICAg
ICAgICB0aF92YXJzPScgJy5qb2luKHRoX3ZhcnMpLAotICAgICAgICB0aF9idWlsZF90eXBlcz0n
ICcuam9pbih0aF9idWlsZF90eXBlcyksCi0gICAgICAgIHRyX2J1aWxkcz0nXG4nLmpvaW4odHJf
YnVpbGRzKSkKLSAgICB3aXRoIG9wZW4oaHRtbF9yZXBvcnRfcGF0aCwgJ3d0JykgYXMgZmh0bWw6
Ci0gICAgICAgIGZodG1sLndyaXRlKGh0bWwpCi0gICAgcHJpbnQoJ0hUTUwgcmVwb3J0IGdlbmVy
YXRlZCBpbjonLCBodG1sX3JlcG9ydF9wYXRoKQotCi1kZWYgbWFpbigpOgotICAgIHVzYWdlID0g
ciIiIiVwcm9nIFdPUktfRElSIFNPVVJDRV9ESVIgQ09ORklHX0pTT05fUEFUSCBbQ09ORklHMl9K
U09OX1BBVEguLi5dCi1CdWlsZCBhIGdpdmVuIENNYWtlIGJhc2VkIHByb2plY3QgbG9jYXRlZCBp
biBTT1VSQ0VfRElSIHdpdGggbXVsdGlwbGUgZ2VuZXJhdG9ycy9vcHRpb25zLmRyeV9ydW4KLWFz
IGRlc2NyaWJlZCBpbiBDT05GSUdfSlNPTl9QQVRIIGJ1aWxkaW5nIGluIFdPUktfRElSLgotCi1F
eGFtcGxlIG9mIGNhbGw6Ci1weXRob24gZGV2dG9vbHNcYmF0Y2hidWlsZC5weSBlOlxidWlsZGJv
dHNcanNvbmNwcFxidWlsZCAuIGRldnRvb2xzXGFnZW50X3ZtdzcuanNvbgotIiIiCi0gICAgZnJv
bSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2Vy
KHVzYWdlPXVzYWdlKQotICAgIHBhcnNlci5hbGxvd19pbnRlcnNwZXJzZWRfYXJncyA9IFRydWUK
LSMgICAgcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGRlc3Q9InZlcmJvc2Ui
LCBhY3Rpb249J3N0b3JlX3RydWUnLAotIyAgICAgICAgaGVscD0iIiJCZSB2ZXJib3NlLiIiIikK
LSAgICBwYXJzZXIuZW5hYmxlX2ludGVyc3BlcnNlZF9hcmdzKCkKLSAgICBvcHRpb25zLCBhcmdz
ID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIGxlbihhcmdzKSA8IDM6Ci0gICAgICAgIHBh
cnNlci5lcnJvcigiTWlzc2luZyBvbmUgb2YgV09SS19ESVIgU09VUkNFX0RJUiBDT05GSUdfSlNP
Tl9QQVRILiIpCi0gICAgd29ya19kaXIgPSBhcmdzWzBdCi0gICAgc291cmNlX2RpciA9IGFyZ3Nb
MV0ucnN0cmlwKCcvXFwnKQotICAgIGNvbmZpZ19wYXRocyA9IGFyZ3NbMjpdCi0gICAgZm9yIGNv
bmZpZ19wYXRoIGluIGNvbmZpZ19wYXRoczoKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxl
KGNvbmZpZ19wYXRoKToKLSAgICAgICAgICAgIHBhcnNlci5lcnJvcigiQ2FuIG5vdCByZWFkOiAl
ciIgJSBjb25maWdfcGF0aCkKLQotICAgICMgZ2VuZXJhdGUgYnVpbGQgdmFyaWFudHMKLSAgICBi
dWlsZF9kZXNjcyA9IFtdCi0gICAgZm9yIGNvbmZpZ19wYXRoIGluIGNvbmZpZ19wYXRoczoKLSAg
ICAgICAgYnVpbGRfZGVzY3NfYnlfYXhpcyA9IGxvYWRfYnVpbGRfdmFyaWFudHNfZnJvbV9jb25m
aWcoY29uZmlnX3BhdGgpCi0gICAgICAgIGJ1aWxkX2Rlc2NzLmV4dGVuZChnZW5lcmF0ZV9idWls
ZF92YXJpYW50cyhidWlsZF9kZXNjc19ieV9heGlzKSkKLSAgICBwcmludCgnQnVpbGQgdmFyaWFu
dHMgKCVkKTonICUgbGVuKGJ1aWxkX2Rlc2NzKSkKLSAgICAjIGFzc2lnbiBidWlsZCBkaXJlY3Rv
cnkgZm9yIGVhY2ggdmFyaWFudAotICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHdvcmtfZGlyKToK
LSAgICAgICAgb3MubWFrZWRpcnMod29ya19kaXIpCi0gICAgYnVpbGRzID0gW10KLSAgICB3aXRo
IG9wZW4ob3MucGF0aC5qb2luKHdvcmtfZGlyLCAnbWF0cml4LWRpci1tYXAudHh0JyksICd3dCcp
IGFzIGZtYXRyaXhtYXA6Ci0gICAgICAgIGZvciBpbmRleCwgYnVpbGRfZGVzYyBpbiBlbnVtZXJh
dGUoYnVpbGRfZGVzY3MpOgotICAgICAgICAgICAgYnVpbGRfZGVzY193b3JrX2RpciA9IG9zLnBh
dGguam9pbih3b3JrX2RpciwgJyUwM2QnICUgKGluZGV4KzEpKQotICAgICAgICAgICAgYnVpbGRz
LmFwcGVuZChCdWlsZERhdGEoYnVpbGRfZGVzYywgYnVpbGRfZGVzY193b3JrX2Rpciwgc291cmNl
X2RpcikpCi0gICAgICAgICAgICBmbWF0cml4bWFwLndyaXRlKCclczogJXNcbicgJSAoYnVpbGRf
ZGVzY193b3JrX2RpciwgYnVpbGRfZGVzYykpCi0gICAgZm9yIGJ1aWxkIGluIGJ1aWxkczoKLSAg
ICAgICAgYnVpbGQuZXhlY3V0ZV9idWlsZCgpCi0gICAgaHRtbF9yZXBvcnRfcGF0aCA9IG9zLnBh
dGguam9pbih3b3JrX2RpciwgJ2JhdGNoYnVpbGQtcmVwb3J0Lmh0bWwnKQotICAgIGdlbmVyYXRl
X2h0bWxfcmVwb3J0KGh0bWxfcmVwb3J0X3BhdGgsIGJ1aWxkcykKLSAgICBwcmludCgnRG9uZScp
Ci0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9kZXZ0b29scy9maXhlb2wucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2ZpeGVvbC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUyNTJhMDdkOTIzN2NhNDFhNzA0MmQ1YzdhZjli
NzQ3ZmI0ZGFkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL2RldnRvb2xzL2ZpeGVvbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAK
LSMgQ29weXJpZ2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRo
b3JzCi0jIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlm
IGRlc2lyZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBm
aWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZv
cmdlLm5ldC9MSUNFTlNFCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24K
LWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi0KLWRlZiBmaXhfc291cmNlX2VvbChwYXRoLCBp
c19kcnlfcnVuID0gVHJ1ZSwgdmVyYm9zZSA9IFRydWUsIGVvbCA9ICdcbicpOgotICAgICIiIk1h
a2VzIHN1cmUgdGhhdCBhbGwgc291cmNlcyBoYXZlIHRoZSBzcGVjaWZpZWQgZW9sIHNlcXVlbmNl
IChkZWZhdWx0OiB1bml4KS4iIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0aCk6Ci0g
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1BhdGggIiVzIiBpcyBub3QgYSBmaWxlJyAlIHBhdGgp
Ci0gICAgdHJ5OgotICAgICAgICBmID0gb3BlbihwYXRoLCAncmInKQotICAgIGV4Y2VwdCBJT0Vy
cm9yIGFzIG1zZzoKLSAgICAgICAgcHJpbnQoIiVzOiBJL08gRXJyb3I6ICVzIiAlIChmaWxlLCBz
dHIobXNnKSksIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgdHJ5
OgotICAgICAgICByYXdfbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgZmluYWxseToKLSAgICAg
ICAgZi5jbG9zZSgpCi0gICAgZml4ZWRfbGluZXMgPSBbbGluZS5yc3RyaXAoJ1xyXG4nKSArIGVv
bCBmb3IgbGluZSBpbiByYXdfbGluZXNdCi0gICAgaWYgcmF3X2xpbmVzICE9IGZpeGVkX2xpbmVz
OgotICAgICAgICBwcmludCgnJXMgPT4nICUgcGF0aCwgZW5kPScgJykKLSAgICAgICAgaWYgbm90
IGlzX2RyeV9ydW46Ci0gICAgICAgICAgICBmID0gb3BlbihwYXRoLCAid2IiKQotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhmaXhlZF9saW5lcykKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGlmIHZl
cmJvc2U6Ci0gICAgICAgICAgICBwcmludChpc19kcnlfcnVuIGFuZCAnIE5FRUQgRklYJyBvciAn
IEZJWEVEJykKLSAgICByZXR1cm4gVHJ1ZQotIyMgICAgCi0jIyAgICAKLSMjCi0jI2RlZiBfZG9f
Zml4KGlzX2RyeV9ydW4gPSBUcnVlKToKLSMjICAgIGZyb20gd2FmdG9vbHMgaW1wb3J0IGFudGds
b2IKLSMjICAgIHB5dGhvbl9zb3VyY2VzID0gYW50Z2xvYi5nbG9iKCcuJywKLSMjICAgICAgICBp
bmNsdWRlcyA9ICcqKi8qLnB5ICoqL3dzY3JpcHQgKiovd3NjcmlwdF9idWlsZCcsCi0jIyAgICAg
ICAgZXhjbHVkZXMgPSBhbnRnbG9iLmRlZmF1bHRfZXhjbHVkZXMgKyAnLi93YWYucHknLAotIyMg
ICAgICAgIHBydW5lX2RpcnMgPSBhbnRnbG9iLnBydW5lX2RpcnMgKyAnd2FmLSogLi9idWlsZCcp
Ci0jIyAgICBmb3IgcGF0aCBpbiBweXRob25fc291cmNlczoKLSMjICAgICAgICBfZml4X3B5dGhv
bl9zb3VyY2UocGF0aCwgaXNfZHJ5X3J1bikKLSMjCi0jIyAgICBjcHBfc291cmNlcyA9IGFudGds
b2IuZ2xvYignLicsCi0jIyAgICAgICAgaW5jbHVkZXMgPSAnKiovKi5jcHAgKiovKi5oICoqLyou
aW5sJywKLSMjICAgICAgICBwcnVuZV9kaXJzID0gYW50Z2xvYi5wcnVuZV9kaXJzICsgJ3dhZi0q
IC4vYnVpbGQnKQotIyMgICAgZm9yIHBhdGggaW4gY3BwX3NvdXJjZXM6Ci0jIyAgICAgICAgX2Zp
eF9zb3VyY2VfZW9sKHBhdGgsIGlzX2RyeV9ydW4pCi0jIwotIyMKLSMjZGVmIGRyeV9maXgoY29u
dGV4dCk6Ci0jIyAgICBfZG9fZml4KGlzX2RyeV9ydW4gPSBUcnVlKQotIyMKLSMjZGVmIGZpeChj
b250ZXh0KToKLSMjICAgIF9kb19maXgoaXNfZHJ5X3J1biA9IEZhbHNlKQotIyMKLSMjZGVmIHNo
dXRkb3duKCk6Ci0jIyAgICBwYXNzCi0jIwotIyNkZWYgY2hlY2soY29udGV4dCk6Ci0jIyAgICAj
IFVuaXQgdGVzdHMgYXJlIHJ1biB3aGVuICJjaGVjayIgdGFyZ2V0IGlzIHVzZWQKLSMjICAgIHV0
ID0gVW5pdFRlc3QudW5pdF90ZXN0KCkKLSMjICAgIHV0LmNoYW5nZV90b190ZXN0ZmlsZV9kaXIg
PSBUcnVlCi0jIyAgICB1dC53YW50X3RvX3NlZV90ZXN0X291dHB1dCA9IFRydWUKLSMjICAgIHV0
LndhbnRfdG9fc2VlX3Rlc3RfZXJyb3IgPSBUcnVlCi0jIyAgICB1dC5ydW4oKQotIyMgICAgdXQu
cHJpbnRfcmVzdWx0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2xpY2Vuc2V1cGRhdGVy
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9kZXZ0b29scy9saWNlbnNldXBkYXRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzZiZGI1YzA5YjYxYzk4NDA4N2U0MWYzM2M2YTllYzYzYWEwNzM5ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xz
L2xpY2Vuc2V1cGRhdGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotIiIiVXBk
YXRlcyB0aGUgbGljZW5zZSB0ZXh0IGluIHNvdXJjZSBmaWxlLgotIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0KLSMgQW4gZXhpc3RpbmcgbGljZW5zZSBpcyBmb3Vu
ZCBpZiB0aGUgZmlsZSBzdGFydHMgd2l0aCB0aGUgc3RyaW5nIGJlbG93LAotIyBhbmQgZW5kcyB3
aXRoIHRoZSBmaXJzdCBibGFuayBsaW5lLgotTElDRU5TRV9CRUdJTiA9ICIvLyBDb3B5cmlnaHQg
IgotCi1CUklFRl9MSUNFTlNFID0gTElDRU5TRV9CRUdJTiArICIiIjIwMDctMjAxMCBCYXB0aXN0
ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVy
IE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25p
emVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWls
IG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotIiIi
LnJlcGxhY2UoJ1xyXG4nLCdcbicpCi0KLWRlZiB1cGRhdGVfbGljZW5zZShwYXRoLCBkcnlfcnVu
LCBzaG93X2RpZmYpOgotICAgICIiIlVwZGF0ZSB0aGUgbGljZW5zZSBzdGF0ZW1lbnQgaW4gdGhl
IHNwZWNpZmllZCBmaWxlLgotICAgIFBhcmFtZXRlcnM6Ci0gICAgICBwYXRoOiBwYXRoIG9mIHRo
ZSBDKysgc291cmNlIGZpbGUgdG8gdXBkYXRlLgotICAgICAgZHJ5X3J1bjogaWYgVHJ1ZSwganVz
dCBwcmludCB0aGUgcGF0aCBvZiB0aGUgZmlsZSB0aGF0IHdvdWxkIGJlIHVwZGF0ZWQsCi0gICAg
ICAgICAgICAgICBidXQgZG9uJ3QgY2hhbmdlIGl0LgotICAgICAgc2hvd19kaWZmOiBpZiBUcnVl
LCBwcmludCB0aGUgcGF0aCBvZiB0aGUgZmlsZSB0aGF0IHdvdWxkIGJlIG1vZGlmaWVkLAotICAg
ICAgICAgICAgICAgICBhcyB3ZWxsIGFzIHRoZSBjaGFuZ2UgbWFkZSB0byB0aGUgZmlsZS4gCi0g
ICAgIiIiCi0gICAgd2l0aCBvcGVuKHBhdGgsICdydCcpIGFzIGZpbjoKLSAgICAgICAgb3JpZ2lu
YWxfdGV4dCA9IGZpbi5yZWFkKCkucmVwbGFjZSgnXHJcbicsJ1xuJykKLSAgICAgICAgbmV3bGlu
ZSA9IGZpbi5uZXdsaW5lcyBhbmQgZmluLm5ld2xpbmVzWzBdIG9yICdcbicKLSAgICBpZiBub3Qg
b3JpZ2luYWxfdGV4dC5zdGFydHN3aXRoKExJQ0VOU0VfQkVHSU4pOgotICAgICAgICAjIE5vIGV4
aXN0aW5nIGxpY2Vuc2UgZm91bmQgPT4gcHJlcGVuZCBpdAotICAgICAgICBuZXdfdGV4dCA9IEJS
SUVGX0xJQ0VOU0UgKyBvcmlnaW5hbF90ZXh0Ci0gICAgZWxzZToKLSAgICAgICAgbGljZW5zZV9l
bmRfaW5kZXggPSBvcmlnaW5hbF90ZXh0LmluZGV4KCdcblxuJykgIyBzZWFyY2ggZmlyc3QgYmxh
bmsgbGluZQotICAgICAgICBuZXdfdGV4dCA9IEJSSUVGX0xJQ0VOU0UgKyBvcmlnaW5hbF90ZXh0
W2xpY2Vuc2VfZW5kX2luZGV4KzI6XQotICAgIGlmIG9yaWdpbmFsX3RleHQgIT0gbmV3X3RleHQ6
Ci0gICAgICAgIGlmIG5vdCBkcnlfcnVuOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3
YicpIGFzIGZvdXQ6Ci0gICAgICAgICAgICAgICAgZm91dC53cml0ZShuZXdfdGV4dC5yZXBsYWNl
KCdcbicsIG5ld2xpbmUpKQotICAgICAgICBwcmludCgnVXBkYXRlZCcsIHBhdGgpCi0gICAgICAg
IGlmIHNob3dfZGlmZjoKLSAgICAgICAgICAgIGltcG9ydCBkaWZmbGliCi0gICAgICAgICAgICBw
cmludCgnXG4nLmpvaW4oZGlmZmxpYi51bmlmaWVkX2RpZmYob3JpZ2luYWxfdGV4dC5zcGxpdCgn
XG4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld190ZXh0LnNwbGl0KCdcbicpKSkpCi0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJu
IEZhbHNlCi0KLWRlZiB1cGRhdGVfbGljZW5zZV9pbl9zb3VyY2VfZGlyZWN0b3JpZXMoc291cmNl
X2RpcnMsIGRyeV9ydW4sIHNob3dfZGlmZik6Ci0gICAgIiIiVXBkYXRlcyBsaWNlbnNlIHRleHQg
aW4gQysrIHNvdXJjZSBmaWxlcyBmb3VuZCBpbiBkaXJlY3Rvcnkgc291cmNlX2RpcnMuCi0gICAg
UGFyYW1ldGVyczoKLSAgICAgIHNvdXJjZV9kaXJzOiBsaXN0IG9mIGRpcmVjdG9yeSB0byBzY2Fu
IGZvciBDKysgc291cmNlcy4gRGlyZWN0b3JpZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgc2Nh
bm5lZCByZWN1cnNpdmVseS4KLSAgICAgIGRyeV9ydW46IGlmIFRydWUsIGp1c3QgcHJpbnQgdGhl
IHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3b3VsZCBiZSB1cGRhdGVkLAotICAgICAgICAgICAgICAg
YnV0IGRvbid0IGNoYW5nZSBpdC4KLSAgICAgIHNob3dfZGlmZjogaWYgVHJ1ZSwgcHJpbnQgdGhl
IHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3b3VsZCBiZSBtb2RpZmllZCwKLSAgICAgICAgICAgICAg
ICAgYXMgd2VsbCBhcyB0aGUgY2hhbmdlIG1hZGUgdG8gdGhlIGZpbGUuIAotICAgICIiIgotICAg
IGZyb20gZGV2dG9vbHMgaW1wb3J0IGFudGdsb2IKLSAgICBwcnVuZV9kaXJzID0gYW50Z2xvYi5w
cnVuZV9kaXJzICsgJ3Njb25zLWxvY2FsKiAuL2J1aWxkKiAuL2xpYnMgLi9kaXN0JwotICAgIGZv
ciBzb3VyY2VfZGlyIGluIHNvdXJjZV9kaXJzOgotICAgICAgICBjcHBfc291cmNlcyA9IGFudGds
b2IuZ2xvYihzb3VyY2VfZGlyLAotICAgICAgICAgICAgaW5jbHVkZXMgPSAnJycqKi8qLmggKiov
Ki5jcHAgKiovKi5pbmwnJycsCi0gICAgICAgICAgICBwcnVuZV9kaXJzID0gcHJ1bmVfZGlycykK
LSAgICAgICAgZm9yIHNvdXJjZSBpbiBjcHBfc291cmNlczoKLSAgICAgICAgICAgIHVwZGF0ZV9s
aWNlbnNlKHNvdXJjZSwgZHJ5X3J1biwgc2hvd19kaWZmKQotCi1kZWYgbWFpbigpOgotICAgIHVz
YWdlID0gIiIiJXByb2cgRElSIFtESVIyLi4uXQotVXBkYXRlcyBsaWNlbnNlIHRleHQgaW4gc291
cmNlcyBvZiB0aGUgcHJvamVjdCBpbiBzb3VyY2UgZmlsZXMgZm91bmQKLWluIHRoZSBkaXJlY3Rv
cnkgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUuCi0KLUV4YW1wbGUgb2YgY2FsbDoKLXB5
dGhvbiBkZXZ0b29sc1xsaWNlbnNldXBkYXRlci5weSBpbmNsdWRlIHNyYyAtbiAtLWRpZmYKLT0+
IFNob3cgY2hhbmdlIHRoYXQgd291bGQgYmUgbWFkZSB0byB0aGUgc291cmNlcy4KLQotcHl0aG9u
IGRldnRvb2xzXGxpY2Vuc2V1cGRhdGVyLnB5IGluY2x1ZGUgc3JjCi09PiBVcGRhdGUgbGljZW5z
ZSBzdGF0ZW1lbnQgb24gYWxsIHNvdXJjZXMgaW4gZGlyZWN0b3JpZXMgaW5jbHVkZS8gYW5kIHNy
Yy8uCi0iIiIKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJz
ZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0gICAgcGFyc2VyLmFsbG93X2ludGVyc3Bl
cnNlZF9hcmdzID0gRmFsc2UKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW4nLCAnLS1kcnktcnVu
JywgZGVzdD0iZHJ5X3J1biIsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0g
ICAgICAgIGhlbHA9IiIiT25seSBzaG93IHdoYXQgZmlsZXMgYXJlIHVwZGF0ZWQsIGRvIG5vdCB1
cGRhdGUgdGhlIGZpbGVzIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWRpZmYnLCBkZXN0
PSJzaG93X2RpZmYiLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAg
ICBoZWxwPSIiIk9uIHVwZGF0ZSwgc2hvdyBjaGFuZ2UgbWFkZSB0byB0aGUgZmlsZS4iIiIpCi0g
ICAgcGFyc2VyLmVuYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgb3B0aW9ucywgYXJncyA9
IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICB1cGRhdGVfbGljZW5zZV9pbl9zb3VyY2VfZGlyZWN0
b3JpZXMoYXJncywgb3B0aW9ucy5kcnlfcnVuLCBvcHRpb25zLnNob3dfZGlmZikKLSAgICBwcmlu
dCgnRG9uZScpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHN5cwot
ICAgIGltcG9ydCBvcy5wYXRoCi0gICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKQotICAgIG1haW4o
KQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL3RhcmJhbGwucHkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xz
L3RhcmJhbGwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMGJhNjVlNzExYzA3
MTcyZjU2MmVhYzA5NjBhZjlhYmYyODlmM2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy90YXJiYWxsLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5k
IFRoZSBKc29uQ3BwIEF1dGhvcnMKLSMgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9y
IHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLSMgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlz
ZGljdGlvbi4KLSMgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDov
L2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotZnJvbSBjb250ZXh0bGliIGltcG9y
dCBjbG9zaW5nCi1pbXBvcnQgb3MKLWltcG9ydCB0YXJmaWxlCi0KLVRBUkdaX0RFRkFVTFRfQ09N
UFJFU1NJT05fTEVWRUwgPSA5Ci0KLWRlZiBtYWtlX3RhcmJhbGwodGFyYmFsbF9wYXRoLCBzb3Vy
Y2VzLCBiYXNlX2RpciwgcHJlZml4X2Rpcj0nJyk6Ci0gICAgIiIiUGFyYW1ldGVyczoKLSAgICB0
YXJiYWxsX3BhdGg6IG91dHB1dCBwYXRoIG9mIHRoZSAudGFyLmd6IGZpbGUKLSAgICBzb3VyY2Vz
OiBsaXN0IG9mIHNvdXJjZXMgdG8gaW5jbHVkZSBpbiB0aGUgdGFyYmFsbCwgcmVsYXRpdmUgdG8g
dGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgYmFzZV9kaXI6IGlmIGEgc291cmNlIGZpbGUgaXMg
aW4gYSBzdWItZGlyZWN0b3J5IG9mIGJhc2VfZGlyLCB0aGVuIGJhc2VfZGlyIGlzIHN0cmlwcGVk
Ci0gICAgICAgIGZyb20gcGF0aCBpbiB0aGUgdGFyYmFsbC4KLSAgICBwcmVmaXhfZGlyOiBhbGwg
ZmlsZXMgc3RvcmVkIGluIHRoZSB0YXJiYWxsIGJlIHN1Yi1kaXJlY3Rvcnkgb2YgcHJlZml4X2Rp
ci4gU2V0IHRvICcnCi0gICAgICAgIHRvIG1ha2UgdGhlbSBjaGlsZCBvZiByb290LgotICAgICIi
IgotICAgIGJhc2VfZGlyID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgoYmFzZV9k
aXIpKQotICAgIGRlZiBhcmNoaXZlX25hbWUocGF0aCk6Ci0gICAgICAgICIiIk1ha2VzIHBhdGgg
cmVsYXRpdmUgdG8gYmFzZV9kaXIuIiIiCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRo
KG9zLnBhdGguYWJzcGF0aChwYXRoKSkKLSAgICAgICAgY29tbW9uX3BhdGggPSBvcy5wYXRoLmNv
bW1vbnByZWZpeCgoYmFzZV9kaXIsIHBhdGgpKQotICAgICAgICBhcmNoaXZlX25hbWUgPSBwYXRo
W2xlbihjb21tb25fcGF0aCk6XQotICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKGFyY2hpdmVfbmFt
ZSk6Ci0gICAgICAgICAgICBhcmNoaXZlX25hbWUgPSBhcmNoaXZlX25hbWVbMTpdCi0gICAgICAg
IHJldHVybiBvcy5wYXRoLmpvaW4ocHJlZml4X2RpciwgYXJjaGl2ZV9uYW1lKQotICAgIGRlZiB2
aXNpdCh0YXIsIGRpcm5hbWUsIG5hbWVzKToKLSAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0g
ICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIG5hbWUpCi0gICAgICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoX2luX3RhciA9
IGFyY2hpdmVfbmFtZShwYXRoKQotICAgICAgICAgICAgICAgIHRhci5hZGQocGF0aCwgcGF0aF9p
bl90YXIpCi0gICAgY29tcHJlc3Npb24gPSBUQVJHWl9ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVM
Ci0gICAgd2l0aCBjbG9zaW5nKHRhcmZpbGUuVGFyRmlsZS5vcGVuKHRhcmJhbGxfcGF0aCwgJ3c6
Z3onLAotICAgICAgICAgICAgY29tcHJlc3NsZXZlbD1jb21wcmVzc2lvbikpIGFzIHRhcjoKLSAg
ICAgICAgZm9yIHNvdXJjZSBpbiBzb3VyY2VzOgotICAgICAgICAgICAgc291cmNlX3BhdGggPSBz
b3VyY2UKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc291cmNlKToKLSAgICAgICAgICAg
ICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKHNvdXJjZV9w
YXRoKToKLSAgICAgICAgICAgICAgICAgICAgdmlzaXQodGFyLCBkaXJwYXRoLCBmaWxlbmFtZXMp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBhdGhfaW5fdGFyID0gYXJjaGl2
ZV9uYW1lKHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgICAgIHRhci5hZGQoc291cmNlX3BhdGgs
IHBhdGhfaW5fdGFyKSAgICAgICMgZmlsZW5hbWUsIGFyY25hbWUKLQotZGVmIGRlY29tcHJlc3Mo
dGFyYmFsbF9wYXRoLCBiYXNlX2Rpcik6Ci0gICAgIiIiRGVjb21wcmVzcyB0aGUgZ3ppcHBlZCB0
YXJiYWxsIGludG8gZGlyZWN0b3J5IGJhc2VfZGlyLgotICAgICIiIgotICAgIHdpdGggY2xvc2lu
Zyh0YXJmaWxlLlRhckZpbGUub3Blbih0YXJiYWxsX3BhdGgpKSBhcyB0YXI6Ci0gICAgICAgIHRh
ci5leHRyYWN0YWxsKGJhc2VfZGlyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvZG94eWZpbGUuaW4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL2RvYy9kb3h5ZmlsZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNm
NTE0ZWEzNGRjNjQ1MjVmZDE1NDQ1NmUyNTQyZmY5ODY4YTYzOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9kb3h5ZmlsZS5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDIzMDIgKzAsMCBAQAotIyBEb3h5ZmlsZSAxLjguNQotCi0jIFRoaXMgZmls
ZSBkZXNjcmliZXMgdGhlIHNldHRpbmdzIHRvIGJlIHVzZWQgYnkgdGhlIGRvY3VtZW50YXRpb24g
c3lzdGVtCi0jIGRveHlnZW4gKHd3dy5kb3h5Z2VuLm9yZykgZm9yIGEgcHJvamVjdC4KLSMKLSMg
QWxsIHRleHQgYWZ0ZXIgYSBkb3VibGUgaGFzaCAoIyMpIGlzIGNvbnNpZGVyZWQgYSBjb21tZW50
IGFuZCBpcyBwbGFjZWQgaW4KLSMgZnJvbnQgb2YgdGhlIFRBRyBpdCBpcyBwcmVjZWRpbmcuCi0j
Ci0jIEFsbCB0ZXh0IGFmdGVyIGEgc2luZ2xlIGhhc2ggKCMpIGlzIGNvbnNpZGVyZWQgYSBjb21t
ZW50IGFuZCB3aWxsIGJlIGlnbm9yZWQuCi0jIFRoZSBmb3JtYXQgaXM6Ci0jIFRBRyA9IHZhbHVl
IFt2YWx1ZSwgLi4uXQotIyBGb3IgbGlzdHMsIGl0ZW1zIGNhbiBhbHNvIGJlIGFwcGVuZGVkIHVz
aW5nOgotIyBUQUcgKz0gdmFsdWUgW3ZhbHVlLCAuLi5dCi0jIFZhbHVlcyB0aGF0IGNvbnRhaW4g
c3BhY2VzIHNob3VsZCBiZSBwbGFjZWQgYmV0d2VlbiBxdW90ZXMgKFwiIFwiKS4KLQotIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotIyBQcm9qZWN0IHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCi0j
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhpcyB0YWcgc3BlY2lmaWVzIHRoZSBlbmNvZGluZyB1
c2VkIGZvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUgY29uZmlnIGZpbGUKLSMgdGhhdCBmb2xsb3cu
IFRoZSBkZWZhdWx0IGlzIFVURi04IHdoaWNoIGlzIGFsc28gdGhlIGVuY29kaW5nIHVzZWQgZm9y
IGFsbCB0ZXh0Ci0jIGJlZm9yZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGlzIHRhZy4gRG94
eWdlbiB1c2VzIGxpYmljb252IChvciB0aGUgaWNvbnYKLSMgYnVpbHQgaW50byBsaWJjKSBmb3Ig
dGhlIHRyYW5zY29kaW5nLiBTZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252
Ci0jIGZvciB0aGUgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBVVEYtOC4KLQotRE9YWUZJTEVfRU5DT0RJTkcgICAgICA9IFVURi04Ci0KLSMgVGhl
IFBST0pFQ1RfTkFNRSB0YWcgaXMgYSBzaW5nbGUgd29yZCAob3IgYSBzZXF1ZW5jZSBvZiB3b3Jk
cyBzdXJyb3VuZGVkIGJ5Ci0jIGRvdWJsZS1xdW90ZXMsIHVubGVzcyB5b3UgYXJlIHVzaW5nIERv
eHl3aXphcmQpIHRoYXQgc2hvdWxkIGlkZW50aWZ5IHRoZQotIyBwcm9qZWN0IGZvciB3aGljaCB0
aGUgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgbmFtZSBpcyB1c2VkIGluIHRoZQot
IyB0aXRsZSBvZiBtb3N0IGdlbmVyYXRlZCBwYWdlcyBhbmQgaW4gYSBmZXcgb3RoZXIgcGxhY2Vz
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTXkgUHJvamVjdC4KLQotUFJPSkVDVF9OQU1FICAg
ICAgICAgICA9ICJKc29uQ3BwIgotCi0jIFRoZSBQUk9KRUNUX05VTUJFUiB0YWcgY2FuIGJlIHVz
ZWQgdG8gZW50ZXIgYSBwcm9qZWN0IG9yIHJldmlzaW9uIG51bWJlci4gVGhpcwotIyBjb3VsZCBi
ZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpZiBz
b21lIHZlcnNpb24KLSMgY29udHJvbCBzeXN0ZW0gaXMgdXNlZC4KLQotUFJPSkVDVF9OVU1CRVIg
ICAgICAgICA9ICVKU09OQ1BQX1ZFUlNJT04lCi0KLSMgVXNpbmcgdGhlIFBST0pFQ1RfQlJJRUYg
dGFnIG9uZSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbCBvbmUgbGluZSBkZXNjcmlwdGlvbgotIyBm
b3IgYSBwcm9qZWN0IHRoYXQgYXBwZWFycyBhdCB0aGUgdG9wIG9mIGVhY2ggcGFnZSBhbmQgc2hv
dWxkIGdpdmUgdmlld2VyIGEKLSMgcXVpY2sgaWRlYSBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGUg
cHJvamVjdC4gS2VlcCB0aGUgZGVzY3JpcHRpb24gc2hvcnQuCi0KLVBST0pFQ1RfQlJJRUYgICAg
ICAgICAgPQotCi0jIFdpdGggdGhlIFBST0pFQ1RfTE9HTyB0YWcgb25lIGNhbiBzcGVjaWZ5IGFu
IGxvZ28gb3IgaWNvbiB0aGF0IGlzIGluY2x1ZGVkIGluCi0jIHRoZSBkb2N1bWVudGF0aW9uLiBU
aGUgbWF4aW11bSBoZWlnaHQgb2YgdGhlIGxvZ28gc2hvdWxkIG5vdCBleGNlZWQgNTUgcGl4ZWxz
Ci0jIGFuZCB0aGUgbWF4aW11bSB3aWR0aCBzaG91bGQgbm90IGV4Y2VlZCAyMDAgcGl4ZWxzLiBE
b3h5Z2VuIHdpbGwgY29weSB0aGUgbG9nbwotIyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4KLQot
UFJPSkVDVF9MT0dPICAgICAgICAgICA9Ci0KLSMgVGhlIE9VVFBVVF9ESVJFQ1RPUlkgdGFnIGlz
IHVzZWQgdG8gc3BlY2lmeSB0aGUgKHJlbGF0aXZlIG9yIGFic29sdXRlKSBwYXRoCi0jIGludG8g
d2hpY2ggdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpbGwgYmUgd3JpdHRlbi4gSWYgYSBy
ZWxhdGl2ZSBwYXRoIGlzCi0jIGVudGVyZWQsIGl0IHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGxv
Y2F0aW9uIHdoZXJlIGRveHlnZW4gd2FzIHN0YXJ0ZWQuIElmCi0jIGxlZnQgYmxhbmsgdGhlIGN1
cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgdXNlZC4KLQotT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9
ICVET0NfVE9QRElSJQotCi0jIElmIHRoZSBDUkVBVEVfU1VCRElSUyB0YWcgaXMgc2V0IHRvIFlF
UywgdGhlbiBkb3h5Z2VuIHdpbGwgY3JlYXRlIDQwOTYgc3ViLQotIyBkaXJlY3RvcmllcyAoaW4g
MiBsZXZlbHMpIHVuZGVyIHRoZSBvdXRwdXQgZGlyZWN0b3J5IG9mIGVhY2ggb3V0cHV0IGZvcm1h
dCBhbmQKLSMgd2lsbCBkaXN0cmlidXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMgb3ZlciB0aGVzZSBk
aXJlY3Rvcmllcy4gRW5hYmxpbmcgdGhpcwotIyBvcHRpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIGZl
ZWRpbmcgZG94eWdlbiBhIGh1Z2UgYW1vdW50IG9mIHNvdXJjZSBmaWxlcywgd2hlcmUKLSMgcHV0
dGluZyBhbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3b3VsZCBvdGhl
cndpc2UgY2F1c2VzCi0jIHBlcmZvcm1hbmNlIHByb2JsZW1zIGZvciB0aGUgZmlsZSBzeXN0ZW0u
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotQ1JFQVRFX1NVQkRJUlMgICAgICAgICA9
IE5PCi0KLSMgVGhlIE9VVFBVVF9MQU5HVUFHRSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBs
YW5ndWFnZSBpbiB3aGljaCBhbGwKLSMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgZG94eWdl
biBpcyB3cml0dGVuLiBEb3h5Z2VuIHdpbGwgdXNlIHRoaXMKLSMgaW5mb3JtYXRpb24gdG8gZ2Vu
ZXJhdGUgYWxsIGNvbnN0YW50IG91dHB1dCBpbiB0aGUgcHJvcGVyIGxhbmd1YWdlLgotIyBQb3Nz
aWJsZSB2YWx1ZXMgYXJlOiBBZnJpa2FhbnMsIEFyYWJpYywgQnJhemlsaWFuLCBDYXRhbGFuLCBD
aGluZXNlLCBDaGluZXNlLQotIyBUcmFkaXRpb25hbCwgQ3JvYXRpYW4sIEN6ZWNoLCBEYW5pc2gs
IER1dGNoLCBFbmdsaXNoLCBFc3BlcmFudG8sIEZhcnNpLAotIyBGaW5uaXNoLCBGcmVuY2gsIEdl
cm1hbiwgR3JlZWssIEh1bmdhcmlhbiwgSXRhbGlhbiwgSmFwYW5lc2UsIEphcGFuZXNlLWVuLAot
IyBLb3JlYW4sIEtvcmVhbi1lbiwgTGF0dmlhbiwgTm9yd2VnaWFuLCBNYWNlZG9uaWFuLCBQZXJz
aWFuLCBQb2xpc2gsCi0jIFBvcnR1Z3Vlc2UsIFJvbWFuaWFuLCBSdXNzaWFuLCBTZXJiaWFuLCBT
bG92YWssIFNsb3ZlbmUsIFNwYW5pc2gsIFN3ZWRpc2gsCi0jIFR1cmtpc2gsIFVrcmFpbmlhbiBh
bmQgVmlldG5hbWVzZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IEVuZ2xpc2guCi0KLU9VVFBV
VF9MQU5HVUFHRSAgICAgICAgPSBFbmdsaXNoCi0KLSMgSWYgdGhlIEJSSUVGX01FTUJFUl9ERVND
IHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBpbmNsdWRlIGJyaWVmIG1lbWJlcgotIyBk
ZXNjcmlwdGlvbnMgYWZ0ZXIgdGhlIG1lbWJlcnMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSBmaWxl
IGFuZCBjbGFzcwotIyBkb2N1bWVudGF0aW9uIChzaW1pbGFyIHRvIEphdmFkb2MpLiBTZXQgdG8g
Tk8gdG8gZGlzYWJsZSB0aGlzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1CUklF
Rl9NRU1CRVJfREVTQyAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFJFUEVBVF9CUklFRiB0YWcgaXMg
c2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgcHJlcGVuZCB0aGUgYnJpZWYKLSMgZGVzY3JpcHRpb24g
b2YgYSBtZW1iZXIgb3IgZnVuY3Rpb24gYmVmb3JlIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbgot
IwotIyBOb3RlOiBJZiBib3RoIEhJREVfVU5ET0NfTUVNQkVSUyBhbmQgQlJJRUZfTUVNQkVSX0RF
U0MgYXJlIHNldCB0byBOTywgdGhlCi0jIGJyaWVmIGRlc2NyaXB0aW9ucyB3aWxsIGJlIGNvbXBs
ZXRlbHkgc3VwcHJlc3NlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotUkVQRUFU
X0JSSUVGICAgICAgICAgICA9IFlFUwotCi0jIFRoaXMgdGFnIGltcGxlbWVudHMgYSBxdWFzaS1p
bnRlbGxpZ2VudCBicmllZiBkZXNjcmlwdGlvbiBhYmJyZXZpYXRvciB0aGF0IGlzCi0jIHVzZWQg
dG8gZm9ybSB0aGUgdGV4dCBpbiB2YXJpb3VzIGxpc3RpbmdzLiBFYWNoIHN0cmluZyBpbiB0aGlz
IGxpc3QsIGlmIGZvdW5kCi0jIGFzIHRoZSBsZWFkaW5nIHRleHQgb2YgdGhlIGJyaWVmIGRlc2Ny
aXB0aW9uLCB3aWxsIGJlIHN0cmlwcGVkIGZyb20gdGhlIHRleHQKLSMgYW5kIHRoZSByZXN1bHQs
IGFmdGVyIHByb2Nlc3NpbmcgdGhlIHdob2xlIGxpc3QsIGlzIHVzZWQgYXMgdGhlIGFubm90YXRl
ZAotIyB0ZXh0LiBPdGhlcndpc2UsIHRoZSBicmllZiBkZXNjcmlwdGlvbiBpcyB1c2VkIGFzLWlz
LiBJZiBsZWZ0IGJsYW5rLCB0aGUKLSMgZm9sbG93aW5nIHZhbHVlcyBhcmUgdXNlZCAoJG5hbWUg
aXMgYXV0b21hdGljYWxseSByZXBsYWNlZCB3aXRoIHRoZSBuYW1lIG9mCi0jIHRoZSBlbnRpdHkp
OlRoZSAkbmFtZSBjbGFzcywgVGhlICRuYW1lIHdpZGdldCwgVGhlICRuYW1lIGZpbGUsIGlzLCBw
cm92aWRlcywKLSMgc3BlY2lmaWVzLCBjb250YWlucywgcmVwcmVzZW50cywgYSwgYW4gYW5kIHRo
ZS4KLQotQUJCUkVWSUFURV9CUklFRiAgICAgICA9ICJUaGUgJG5hbWUgY2xhc3MiIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiVGhlICRuYW1lIHdpZGdldCIgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJUaGUgJG5hbWUgZmlsZSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGlz
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc3BlY2lmaWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYW4gXAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZQotCi0jIElmIHRoZSBBTFdBWVNfREVUQUlMRURfU0VDIGFuZCBSRVBF
QVRfQlJJRUYgdGFncyBhcmUgYm90aCBzZXQgdG8gWUVTIHRoZW4KLSMgZG94eWdlbiB3aWxsIGdl
bmVyYXRlIGEgZGV0YWlsZWQgc2VjdGlvbiBldmVuIGlmIHRoZXJlIGlzIG9ubHkgYSBicmllZgot
IyBkZXNjcmlwdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1BTFdBWVNfREVU
QUlMRURfU0VDICAgID0gTk8KLQotIyBJZiB0aGUgSU5MSU5FX0lOSEVSSVRFRF9NRU1CIHRhZyBp
cyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgc2hvdyBhbGwKLSMgaW5oZXJpdGVkIG1lbWJlcnMg
b2YgYSBjbGFzcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGNsYXNzIGFzIGlmIHRob3Nl
Ci0jIG1lbWJlcnMgd2VyZSBvcmRpbmFyeSBjbGFzcyBtZW1iZXJzLiBDb25zdHJ1Y3RvcnMsIGRl
c3RydWN0b3JzIGFuZCBhc3NpZ25tZW50Ci0jIG9wZXJhdG9ycyBvZiB0aGUgYmFzZSBjbGFzc2Vz
IHdpbGwgbm90IGJlIHNob3duLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUlOTElO
RV9JTkhFUklURURfTUVNQiAgPSBOTwotCi0jIElmIHRoZSBGVUxMX1BBVEhfTkFNRVMgdGFnIGlz
IHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHByZXBlbmQgdGhlIGZ1bGwgcGF0aAotIyBiZWZvcmUg
ZmlsZXMgbmFtZSBpbiB0aGUgZmlsZSBsaXN0IGFuZCBpbiB0aGUgaGVhZGVyIGZpbGVzLiBJZiBz
ZXQgdG8gTk8gdGhlCi0jIHNob3J0ZXN0IHBhdGggdGhhdCBtYWtlcyB0aGUgZmlsZSBuYW1lIHVu
aXF1ZSB3aWxsIGJlIHVzZWQKLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotRlVMTF9Q
QVRIX05BTUVTICAgICAgICA9IFlFUwotCi0jIFRoZSBTVFJJUF9GUk9NX1BBVEggdGFnIGNhbiBi
ZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVkIHBhcnQgb2YgdGhlIHBhdGguCi0jIFN0cmlw
cGluZyBpcyBvbmx5IGRvbmUgaWYgb25lIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncyBtYXRjaGVz
IHRoZSBsZWZ0LWhhbmQKLSMgcGFydCBvZiB0aGUgcGF0aC4gVGhlIHRhZyBjYW4gYmUgdXNlZCB0
byBzaG93IHJlbGF0aXZlIHBhdGhzIGluIHRoZSBmaWxlIGxpc3QuCi0jIElmIGxlZnQgYmxhbmsg
dGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIGRveHlnZW4gaXMgcnVuIGlzIHVzZWQgYXMgdGhlIHBh
dGggdG8KLSMgc3RyaXAuCi0jCi0jIE5vdGUgdGhhdCB5b3UgY2FuIHNwZWNpZnkgYWJzb2x1dGUg
cGF0aHMgaGVyZSwgYnV0IGFsc28gcmVsYXRpdmUgcGF0aHMsIHdoaWNoCi0jIHdpbGwgYmUgcmVs
YXRpdmUgZnJvbSB0aGUgZGlyZWN0b3J5IHdoZXJlIGRveHlnZW4gaXMgc3RhcnRlZC4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEZVTExfUEFUSF9OQU1FUyBpcyBzZXQgdG8gWUVT
LgotCi1TVFJJUF9GUk9NX1BBVEggICAgICAgID0gJVRPUERJUiUKLQotIyBUaGUgU1RSSVBfRlJP
TV9JTkNfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3RyaXAgYSB1c2VyLWRlZmluZWQgcGFydCBv
ZiB0aGUKLSMgcGF0aCBtZW50aW9uZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBjbGFzcywg
d2hpY2ggdGVsbHMgdGhlIHJlYWRlciB3aGljaAotIyBoZWFkZXIgZmlsZSB0byBpbmNsdWRlIGlu
IG9yZGVyIHRvIHVzZSBhIGNsYXNzLiBJZiBsZWZ0IGJsYW5rIG9ubHkgdGhlIG5hbWUgb2YKLSMg
dGhlIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgdXNlZC4g
T3RoZXJ3aXNlIG9uZSBzaG91bGQKLSMgc3BlY2lmeSB0aGUgbGlzdCBvZiBpbmNsdWRlIHBhdGhz
IHRoYXQgYXJlIG5vcm1hbGx5IHBhc3NlZCB0byB0aGUgY29tcGlsZXIKLSMgdXNpbmcgdGhlIC1J
IGZsYWcuCi0KLVNUUklQX0ZST01fSU5DX1BBVEggICAgPSAlVE9QRElSJS9pbmNsdWRlCi0KLSMg
SWYgdGhlIFNIT1JUX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJh
dGUgbXVjaCBzaG9ydGVyIChidXQKLSMgbGVzcyByZWFkYWJsZSkgZmlsZSBuYW1lcy4gVGhpcyBj
YW4gYmUgdXNlZnVsIGlzIHlvdXIgZmlsZSBzeXN0ZW1zIGRvZXNuJ3QKLSMgc3VwcG9ydCBsb25n
IG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENELVJPTS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1TSE9SVF9OQU1FUyAgICAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgSkFWQURP
Q19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgaW50ZXJwcmV0
IHRoZQotIyBmaXJzdCBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIEphdmFkb2Mtc3R5
bGUgY29tbWVudCBhcyB0aGUgYnJpZWYKLSMgZGVzY3JpcHRpb24uIElmIHNldCB0byBOTywgdGhl
IEphdmFkb2Mtc3R5bGUgd2lsbCBiZWhhdmUganVzdCBsaWtlIHJlZ3VsYXIgUXQtCi0jIHN0eWxl
IGNvbW1lbnRzICh0aHVzIHJlcXVpcmluZyBhbiBleHBsaWNpdCBAYnJpZWYgY29tbWFuZCBmb3Ig
YSBicmllZgotIyBkZXNjcmlwdGlvbi4pCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
SkFWQURPQ19BVVRPQlJJRUYgICAgICA9IFlFUwotCi0jIElmIHRoZSBRVF9BVVRPQlJJRUYgdGFn
IGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgaW50ZXJwcmV0IHRoZSBmaXJzdAotIyBs
aW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIFF0LXN0eWxlIGNvbW1lbnQgYXMgdGhlIGJy
aWVmIGRlc2NyaXB0aW9uLiBJZgotIyBzZXQgdG8gTk8sIHRoZSBRdC1zdHlsZSB3aWxsIGJlaGF2
ZSBqdXN0IGxpa2UgcmVndWxhciBRdC1zdHlsZSBjb21tZW50cyAodGh1cwotIyByZXF1aXJpbmcg
YW4gZXhwbGljaXQgXGJyaWVmIGNvbW1hbmQgZm9yIGEgYnJpZWYgZGVzY3JpcHRpb24uKQotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVFUX0FVVE9CUklFRiAgICAgICAgICAgPSBOTwot
Ci0jIFRoZSBNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGIHRhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBt
YWtlIGRveHlnZW4gdHJlYXQgYQotIyBtdWx0aS1saW5lIEMrKyBzcGVjaWFsIGNvbW1lbnQgYmxv
Y2sgKGkuZS4gYSBibG9jayBvZiAvLyEgb3IgLy8vIGNvbW1lbnRzKSBhcwotIyBhIGJyaWVmIGRl
c2NyaXB0aW9uLiBUaGlzIHVzZWQgdG8gYmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIFRoZSBuZXcg
ZGVmYXVsdCBpcwotIyB0byB0cmVhdCBhIG11bHRpLWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMg
YSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4gU2V0IHRoaXMKLSMgdGFnIHRvIFlFUyBpZiB5b3UgcHJl
ZmVyIHRoZSBvbGQgYmVoYXZpb3IgaW5zdGVhZC4KLSMKLSMgTm90ZSB0aGF0IHNldHRpbmcgdGhp
cyB0YWcgdG8gWUVTIGFsc28gbWVhbnMgdGhhdCByYXRpb25hbCByb3NlIGNvbW1lbnRzIGFyZQot
IyBub3QgcmVjb2duaXplZCBhbnkgbW9yZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgot
Ci1NVUxUSUxJTkVfQ1BQX0lTX0JSSUVGID0gTk8KLQotIyBJZiB0aGUgSU5IRVJJVF9ET0NTIHRh
ZyBpcyBzZXQgdG8gWUVTIHRoZW4gYW4gdW5kb2N1bWVudGVkIG1lbWJlciBpbmhlcml0cyB0aGUK
LSMgZG9jdW1lbnRhdGlvbiBmcm9tIGFueSBkb2N1bWVudGVkIG1lbWJlciB0aGF0IGl0IHJlLWlt
cGxlbWVudHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUlOSEVSSVRfRE9DUyAg
ICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgU0VQQVJBVEVfTUVNQkVSX1BBR0VTIHRhZyBpcyBz
ZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBwcm9kdWNlIGEKLSMgbmV3IHBhZ2UgZm9yIGVh
Y2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdp
bGwgYmUKLSMgcGFydCBvZiB0aGUgZmlsZS9jbGFzcy9uYW1lc3BhY2UgdGhhdCBjb250YWlucyBp
dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TRVBBUkFURV9NRU1CRVJfUEFHRVMg
ID0gTk8KLQotIyBUaGUgVEFCX1NJWkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVy
IG9mIHNwYWNlcyBpbiBhIHRhYi4gRG94eWdlbgotIyB1c2VzIHRoaXMgdmFsdWUgdG8gcmVwbGFj
ZSB0YWJzIGJ5IHNwYWNlcyBpbiBjb2RlIGZyYWdtZW50cy4KLSMgTWluaW11bSB2YWx1ZTogMSwg
bWF4aW11bSB2YWx1ZTogMTYsIGRlZmF1bHQgdmFsdWU6IDQuCi0KLVRBQl9TSVpFICAgICAgICAg
ICAgICAgPSAzCi0KLSMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBv
ZiBhbGlhc2VzIHRoYXQgYWN0IGFzIGNvbW1hbmRzIGluCi0jIHRoZSBkb2N1bWVudGF0aW9uLiBB
biBhbGlhcyBoYXMgdGhlIGZvcm06Ci0jIG5hbWU9dmFsdWUKLSMgRm9yIGV4YW1wbGUgYWRkaW5n
Ci0jICJzaWRlZWZmZWN0PUBwYXIgU2lkZSBFZmZlY3RzOlxuIgotIyB3aWxsIGFsbG93IHlvdSB0
byBwdXQgdGhlIGNvbW1hbmQgXHNpZGVlZmZlY3QgKG9yIEBzaWRlZWZmZWN0KSBpbiB0aGUKLSMg
ZG9jdW1lbnRhdGlvbiwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdy
YXBoIHdpdGggaGVhZGluZwotIyAiU2lkZSBFZmZlY3RzOiIuIFlvdSBjYW4gcHV0IFxuJ3MgaW4g
dGhlIHZhbHVlIHBhcnQgb2YgYW4gYWxpYXMgdG8gaW5zZXJ0Ci0jIG5ld2xpbmVzLgotCi1BTElB
U0VTICAgICAgICAgICAgICAgID0gInRlc3RDYXNlU2V0dXA9XGxpbmsgQ3BwVVQ6OlRlc3RDYXNl
OjpzZXRVcCgpIHNldFVwKClcZW5kbGluayIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICJ0
ZXN0Q2FzZVJ1bj1cbGluayBDcHBVVDo6VGVzdENhc2U6OnJ1bigpIHJ1bigpXGVuZGxpbmsiIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdENhc2VUZWFyRG93bj1cbGluayBDcHBVVDo6
VGVzdENhc2U6OnRlYXJEb3duKCkgdGVhckRvd24oKVxlbmRsaW5rIiBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgImpzb25fcmVmPTxhIEhSRUY9J2h0dHA6Ly93d3cuanNvbi5vcmcvJz5KU09O
IChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbik8L2E+IgotCi0jIFRoaXMgdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgYSBudW1iZXIgb2Ygd29yZC1rZXl3b3JkIG1hcHBpbmdzIChUQ0wgb25s
eSkuCi0jIEEgbWFwcGluZyBoYXMgdGhlIGZvcm0gIm5hbWU9dmFsdWUiLiBGb3IgZXhhbXBsZSBh
ZGRpbmcgImNsYXNzPWl0Y2w6OmNsYXNzIgotIyB3aWxsIGFsbG93IHlvdSB0byB1c2UgdGhlIGNv
bW1hbmQgY2xhc3MgaW4gdGhlIGl0Y2w6OmNsYXNzIG1lYW5pbmcuCi0KLVRDTF9TVUJTVCAgICAg
ICAgICAgICAgPQotCi0jIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX0ZPUl9DIHRhZyB0byBZRVMg
aWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEMgc291cmNlcwotIyBvbmx5LiBEb3h5Z2VuIHdp
bGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyBtb3JlIHRhaWxvcmVkIGZvciBDLiBGb3IK
LSMgaW5zdGFuY2UsIHNvbWUgb2YgdGhlIG5hbWVzIHRoYXQgYXJlIHVzZWQgd2lsbCBiZSBkaWZm
ZXJlbnQuIFRoZSBsaXN0IG9mIGFsbAotIyBtZW1iZXJzIHdpbGwgYmUgb21pdHRlZCwgZXRjLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLU9QVElNSVpFX09VVFBVVF9GT1JfQyAgPSBO
TwotCi0jIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX0pBVkEgdGFnIHRvIFlFUyBpZiB5b3VyIHBy
b2plY3QgY29uc2lzdHMgb2YgSmF2YSBvcgotIyBQeXRob24gc291cmNlcyBvbmx5LiBEb3h5Z2Vu
IHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyBtb3JlIHRhaWxvcmVkCi0jIGZvciB0
aGF0IGxhbmd1YWdlLiBGb3IgaW5zdGFuY2UsIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50ZWQg
YXMgcGFja2FnZXMsCi0jIHF1YWxpZmllZCBzY29wZXMgd2lsbCBsb29rIGRpZmZlcmVudCwgZXRj
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLU9QVElNSVpFX09VVFBVVF9KQVZBICAg
PSBOTwotCi0jIFNldCB0aGUgT1BUSU1JWkVfRk9SX0ZPUlRSQU4gdGFnIHRvIFlFUyBpZiB5b3Vy
IHByb2plY3QgY29uc2lzdHMgb2YgRm9ydHJhbgotIyBzb3VyY2VzLiBEb3h5Z2VuIHdpbGwgdGhl
biBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWlsb3JlZCBmb3IgRm9ydHJhbi4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1PUFRJTUlaRV9GT1JfRk9SVFJBTiAgID0gTk8KLQotIyBT
ZXQgdGhlIE9QVElNSVpFX09VVFBVVF9WSERMIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNv
bnNpc3RzIG9mIFZIREwKLSMgc291cmNlcy4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0
cHV0IHRoYXQgaXMgdGFpbG9yZWQgZm9yIFZIREwuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLQotT1BUSU1JWkVfT1VUUFVUX1ZIREwgICA9IE5PCi0KLSMgRG94eWdlbiBzZWxlY3RzIHRo
ZSBwYXJzZXIgdG8gdXNlIGRlcGVuZGluZyBvbiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlcyBp
dAotIyBwYXJzZXMuIFdpdGggdGhpcyB0YWcgeW91IGNhbiBhc3NpZ24gd2hpY2ggcGFyc2VyIHRv
IHVzZSBmb3IgYSBnaXZlbgotIyBleHRlbnNpb24uIERveHlnZW4gaGFzIGEgYnVpbHQtaW4gbWFw
cGluZywgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgb3IgZXh0ZW5kIGl0Ci0jIHVzaW5nIHRoaXMgdGFn
LiBUaGUgZm9ybWF0IGlzIGV4dD1sYW5ndWFnZSwgd2hlcmUgZXh0IGlzIGEgZmlsZSBleHRlbnNp
b24sIGFuZAotIyBsYW5ndWFnZSBpcyBvbmUgb2YgdGhlIHBhcnNlcnMgc3VwcG9ydGVkIGJ5IGRv
eHlnZW46IElETCwgSmF2YSwgSmF2YVNjcmlwdCwKLSMgQyMsIEMsIEMrKywgRCwgUEhQLCBPYmpl
Y3RpdmUtQywgUHl0aG9uLCBGb3J0cmFuLCBWSERMLiBGb3IgaW5zdGFuY2UgdG8gbWFrZQotIyBk
b3h5Z2VuIHRyZWF0IC5pbmMgZmlsZXMgYXMgRm9ydHJhbiBmaWxlcyAoZGVmYXVsdCBpcyBQSFAp
LCBhbmQgLmYgZmlsZXMgYXMgQwotIyAoZGVmYXVsdCBpcyBGb3J0cmFuKSwgdXNlOiBpbmM9Rm9y
dHJhbiBmPUMuCi0jCi0jIE5vdGUgRm9yIGZpbGVzIHdpdGhvdXQgZXh0ZW5zaW9uIHlvdSBjYW4g
dXNlIG5vX2V4dGVuc2lvbiBhcyBhIHBsYWNlaG9sZGVyLgotIwotIyBOb3RlIHRoYXQgZm9yIGN1
c3RvbSBleHRlbnNpb25zIHlvdSBhbHNvIG5lZWQgdG8gc2V0IEZJTEVfUEFUVEVSTlMgb3RoZXJ3
aXNlCi0jIHRoZSBmaWxlcyBhcmUgbm90IHJlYWQgYnkgZG94eWdlbi4KLQotRVhURU5TSU9OX01B
UFBJTkcgICAgICA9Ci0KLSMgSWYgdGhlIE1BUktET1dOX1NVUFBPUlQgdGFnIGlzIGVuYWJsZWQg
dGhlbiBkb3h5Z2VuIHByZS1wcm9jZXNzZXMgYWxsIGNvbW1lbnRzCi0jIGFjY29yZGluZyB0byB0
aGUgTWFya2Rvd24gZm9ybWF0LCB3aGljaCBhbGxvd3MgZm9yIG1vcmUgcmVhZGFibGUKLSMgZG9j
dW1lbnRhdGlvbi4gU2VlIGh0dHA6Ly9kYXJpbmdmaXJlYmFsbC5uZXQvcHJvamVjdHMvbWFya2Rv
d24vIGZvciBkZXRhaWxzLgotIyBUaGUgb3V0cHV0IG9mIG1hcmtkb3duIHByb2Nlc3NpbmcgaXMg
ZnVydGhlciBwcm9jZXNzZWQgYnkgZG94eWdlbiwgc28geW91IGNhbgotIyBtaXggZG94eWdlbiwg
SFRNTCwgYW5kIFhNTCBjb21tYW5kcyB3aXRoIE1hcmtkb3duIGZvcm1hdHRpbmcuIERpc2FibGUg
b25seSBpbgotIyBjYXNlIG9mIGJhY2t3YXJkIGNvbXBhdGliaWxpdGllcyBpc3N1ZXMuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLU1BUktET1dOX1NVUFBPUlQgICAgICAgPSBZRVMK
LQotIyBXaGVuIGVuYWJsZWQgZG94eWdlbiB0cmllcyB0byBsaW5rIHdvcmRzIHRoYXQgY29ycmVz
cG9uZCB0byBkb2N1bWVudGVkCi0jIGNsYXNzZXMsIG9yIG5hbWVzcGFjZXMgdG8gdGhlaXIgY29y
cmVzcG9uZGluZyBkb2N1bWVudGF0aW9uLiBTdWNoIGEgbGluayBjYW4KLSMgYmUgcHJldmVudGVk
IGluIGluZGl2aWR1YWwgY2FzZXMgYnkgYnkgcHV0dGluZyBhICUgc2lnbiBpbiBmcm9udCBvZiB0
aGUgd29yZAotIyBvciBnbG9iYWxseSBieSBzZXR0aW5nIEFVVE9MSU5LX1NVUFBPUlQgdG8gTk8u
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUFVVE9MSU5LX1NVUFBPUlQgICAgICAg
PSBZRVMKLQotIyBJZiB5b3UgdXNlIFNUTCBjbGFzc2VzIChpLmUuIHN0ZDo6c3RyaW5nLCBzdGQ6
OnZlY3RvciwgZXRjLikgYnV0IGRvIG5vdCB3YW50Ci0jIHRvIGluY2x1ZGUgKGEgdGFnIGZpbGUg
Zm9yKSB0aGUgU1RMIHNvdXJjZXMgYXMgaW5wdXQsIHRoZW4geW91IHNob3VsZCBzZXQgdGhpcwot
IyB0YWcgdG8gWUVTIGluIG9yZGVyIHRvIGxldCBkb3h5Z2VuIG1hdGNoIGZ1bmN0aW9ucyBkZWNs
YXJhdGlvbnMgYW5kCi0jIGRlZmluaXRpb25zIHdob3NlIGFyZ3VtZW50cyBjb250YWluIFNUTCBj
bGFzc2VzIChlLmcuIGZ1bmMoc3RkOjpzdHJpbmcpOwotIyB2ZXJzdXMgZnVuYyhzdGQ6OnN0cmlu
Zykge30pLiBUaGlzIGFsc28gbWFrZSB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24K
LSMgZGlhZ3JhbXMgdGhhdCBpbnZvbHZlIFNUTCBjbGFzc2VzIG1vcmUgY29tcGxldGUgYW5kIGFj
Y3VyYXRlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUJVSUxUSU5fU1RMX1NVUFBP
UlQgICAgPSBZRVMKLQotIyBJZiB5b3UgdXNlIE1pY3Jvc29mdCdzIEMrKy9DTEkgbGFuZ3VhZ2Us
IHlvdSBzaG91bGQgc2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0bwotIyBlbmFibGUgcGFyc2luZyBz
dXBwb3J0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUNQUF9DTElfU1VQUE9SVCAg
ICAgICAgPSBOTwotCi0jIFNldCB0aGUgU0lQX1NVUFBPUlQgdGFnIHRvIFlFUyBpZiB5b3VyIHBy
b2plY3QgY29uc2lzdHMgb2Ygc2lwIChzZWU6Ci0jIGh0dHA6Ly93d3cucml2ZXJiYW5rY29tcHV0
aW5nLmNvLnVrL3NvZnR3YXJlL3NpcC9pbnRybykgc291cmNlcyBvbmx5LiBEb3h5Z2VuCi0jIHdp
bGwgcGFyc2UgdGhlbSBsaWtlIG5vcm1hbCBDKysgYnV0IHdpbGwgYXNzdW1lIGFsbCBjbGFzc2Vz
IHVzZSBwdWJsaWMgaW5zdGVhZAotIyBvZiBwcml2YXRlIGluaGVyaXRhbmNlIHdoZW4gbm8gZXhw
bGljaXQgcHJvdGVjdGlvbiBrZXl3b3JkIGlzIHByZXNlbnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBOTy4KLQotU0lQX1NVUFBPUlQgICAgICAgICAgICA9IE5PCi0KLSMgRm9yIE1pY3Jvc29m
dCdzIElETCB0aGVyZSBhcmUgcHJvcGdldCBhbmQgcHJvcHB1dCBhdHRyaWJ1dGVzIHRvIGluZGlj
YXRlCi0jIGdldHRlciBhbmQgc2V0dGVyIG1ldGhvZHMgZm9yIGEgcHJvcGVydHkuIFNldHRpbmcg
dGhpcyBvcHRpb24gdG8gWUVTIHdpbGwgbWFrZQotIyBkb3h5Z2VuIHRvIHJlcGxhY2UgdGhlIGdl
dCBhbmQgc2V0IG1ldGhvZHMgYnkgYSBwcm9wZXJ0eSBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMg
VGhpcyB3aWxsIG9ubHkgd29yayBpZiB0aGUgbWV0aG9kcyBhcmUgaW5kZWVkIGdldHRpbmcgb3Ig
c2V0dGluZyBhIHNpbXBsZQotIyB0eXBlLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgb3IgeW91
IHdhbnQgdG8gc2hvdyB0aGUgbWV0aG9kcyBhbnl3YXksIHlvdQotIyBzaG91bGQgc2V0IHRoaXMg
b3B0aW9uIHRvIE5PLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1JRExfUFJPUEVS
VFlfU1VQUE9SVCAgID0gWUVTCi0KLSMgSWYgbWVtYmVyIGdyb3VwaW5nIGlzIHVzZWQgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kIHRoZSBESVNUUklCVVRFX0dST1VQX0RPQwotIyB0YWcgaXMgc2V0
IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgcmV1c2UgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhl
IGZpcnN0Ci0jIG1lbWJlciBpbiB0aGUgZ3JvdXAgKGlmIGFueSkgZm9yIHRoZSBvdGhlciBtZW1i
ZXJzIG9mIHRoZSBncm91cC4gQnkgZGVmYXVsdAotIyBhbGwgbWVtYmVycyBvZiBhIGdyb3VwIG11
c3QgYmUgZG9jdW1lbnRlZCBleHBsaWNpdGx5LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLURJU1RSSUJVVEVfR1JPVVBfRE9DICAgPSBOTwotCi0jIFNldCB0aGUgU1VCR1JPVVBJTkcg
dGFnIHRvIFlFUyB0byBhbGxvdyBjbGFzcyBtZW1iZXIgZ3JvdXBzIG9mIHRoZSBzYW1lIHR5cGUK
LSMgKGZvciBpbnN0YW5jZSBhIGdyb3VwIG9mIHB1YmxpYyBmdW5jdGlvbnMpIHRvIGJlIHB1dCBh
cyBhIHN1Ymdyb3VwIG9mIHRoYXQKLSMgdHlwZSAoZS5nLiB1bmRlciB0aGUgUHVibGljIEZ1bmN0
aW9ucyBzZWN0aW9uKS4gU2V0IGl0IHRvIE5PIHRvIHByZXZlbnQKLSMgc3ViZ3JvdXBpbmcuIEFs
dGVybmF0aXZlbHksIHRoaXMgY2FuIGJlIGRvbmUgcGVyIGNsYXNzIHVzaW5nIHRoZQotIyBcbm9z
dWJncm91cGluZyBjb21tYW5kLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1TVUJH
Uk9VUElORyAgICAgICAgICAgID0gWUVTCi0KLSMgV2hlbiB0aGUgSU5MSU5FX0dST1VQRURfQ0xB
U1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgY2xhc3Nlcywgc3RydWN0cyBhbmQgdW5pb25zCi0jIGFy
ZSBzaG93biBpbnNpZGUgdGhlIGdyb3VwIGluIHdoaWNoIHRoZXkgYXJlIGluY2x1ZGVkIChlLmcu
IHVzaW5nIFxpbmdyb3VwKQotIyBpbnN0ZWFkIG9mIG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9yIEhU
TUwgYW5kIE1hbiBwYWdlcykgb3Igc2VjdGlvbiAoZm9yIExhVGVYCi0jIGFuZCBSVEYpLgotIwot
IyBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGRvZXMgbm90IHdvcmsgaW4gY29tYmluYXRpb24gd2l0
aAotIyBTRVBBUkFURV9NRU1CRVJfUEFHRVMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LQotSU5MSU5FX0dST1VQRURfQ0xBU1NFUyA9IE5PCi0KLSMgV2hlbiB0aGUgSU5MSU5FX1NJTVBM
RV9TVFJVQ1RTIHRhZyBpcyBzZXQgdG8gWUVTLCBzdHJ1Y3RzLCBjbGFzc2VzLCBhbmQgdW5pb25z
Ci0jIHdpdGggb25seSBwdWJsaWMgZGF0YSBmaWVsZHMgb3Igc2ltcGxlIHR5cGVkZWYgZmllbGRz
IHdpbGwgYmUgc2hvd24gaW5saW5lIGluCi0jIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzY29w
ZSBpbiB3aGljaCB0aGV5IGFyZSBkZWZpbmVkIChpLmUuIGZpbGUsCi0jIG5hbWVzcGFjZSwgb3Ig
Z3JvdXAgZG9jdW1lbnRhdGlvbiksIHByb3ZpZGVkIHRoaXMgc2NvcGUgaXMgZG9jdW1lbnRlZC4g
SWYgc2V0Ci0jIHRvIE5PLCBzdHJ1Y3RzLCBjbGFzc2VzLCBhbmQgdW5pb25zIGFyZSBzaG93biBv
biBhIHNlcGFyYXRlIHBhZ2UgKGZvciBIVE1MIGFuZAotIyBNYW4gcGFnZXMpIG9yIHNlY3Rpb24g
KGZvciBMYVRlWCBhbmQgUlRGKS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTkxJ
TkVfU0lNUExFX1NUUlVDVFMgID0gTk8KLQotIyBXaGVuIFRZUEVERUZfSElERVNfU1RSVUNUIHRh
ZyBpcyBlbmFibGVkLCBhIHR5cGVkZWYgb2YgYSBzdHJ1Y3QsIHVuaW9uLCBvcgotIyBlbnVtIGlz
IGRvY3VtZW50ZWQgYXMgc3RydWN0LCB1bmlvbiwgb3IgZW51bSB3aXRoIHRoZSBuYW1lIG9mIHRo
ZSB0eXBlZGVmLiBTbwotIyB0eXBlZGVmIHN0cnVjdCBUeXBlUyB7fSBUeXBlVCwgd2lsbCBhcHBl
YXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYXMgYSBzdHJ1Y3QKLSMgd2l0aCBuYW1lIFR5cGVULiBX
aGVuIGRpc2FibGVkIHRoZSB0eXBlZGVmIHdpbGwgYXBwZWFyIGFzIGEgbWVtYmVyIG9mIGEgZmls
ZSwKLSMgbmFtZXNwYWNlLCBvciBjbGFzcy4gQW5kIHRoZSBzdHJ1Y3Qgd2lsbCBiZSBuYW1lZCBU
eXBlUy4gVGhpcyBjYW4gdHlwaWNhbGx5IGJlCi0jIHVzZWZ1bCBmb3IgQyBjb2RlIGluIGNhc2Ug
dGhlIGNvZGluZyBjb252ZW50aW9uIGRpY3RhdGVzIHRoYXQgYWxsIGNvbXBvdW5kCi0jIHR5cGVz
IGFyZSB0eXBlZGVmJ2VkIGFuZCBvbmx5IHRoZSB0eXBlZGVmIGlzIHJlZmVyZW5jZWQsIG5ldmVy
IHRoZSB0YWcgbmFtZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1UWVBFREVGX0hJ
REVTX1NUUlVDVCAgID0gTk8KLQotIyBUaGUgc2l6ZSBvZiB0aGUgc3ltYm9sIGxvb2t1cCBjYWNo
ZSBjYW4gYmUgc2V0IHVzaW5nIExPT0tVUF9DQUNIRV9TSVpFLiBUaGlzCi0jIGNhY2hlIGlzIHVz
ZWQgdG8gcmVzb2x2ZSBzeW1ib2xzIGdpdmVuIHRoZWlyIG5hbWUgYW5kIHNjb3BlLiBTaW5jZSB0
aGlzIGNhbiBiZQotIyBhbiBleHBlbnNpdmUgcHJvY2VzcyBhbmQgb2Z0ZW4gdGhlIHNhbWUgc3lt
Ym9sIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gdGhlCi0jIGNvZGUsIGRveHlnZW4ga2VlcHMg
YSBjYWNoZSBvZiBwcmUtcmVzb2x2ZWQgc3ltYm9scy4gSWYgdGhlIGNhY2hlIGlzIHRvbyBzbWFs
bAotIyBkb3h5Z2VuIHdpbGwgYmVjb21lIHNsb3dlci4gSWYgdGhlIGNhY2hlIGlzIHRvbyBsYXJn
ZSwgbWVtb3J5IGlzIHdhc3RlZC4gVGhlCi0jIGNhY2hlIHNpemUgaXMgZ2l2ZW4gYnkgdGhpcyBm
b3JtdWxhOiAyXigxNitMT09LVVBfQ0FDSEVfU0laRSkuIFRoZSB2YWxpZCByYW5nZQotIyBpcyAw
Li45LCB0aGUgZGVmYXVsdCBpcyAwLCBjb3JyZXNwb25kaW5nIHRvIGEgY2FjaGUgc2l6ZSBvZiAy
XjE2PTY1NTM2Ci0jIHN5bWJvbHMuIEF0IHRoZSBlbmQgb2YgYSBydW4gZG94eWdlbiB3aWxsIHJl
cG9ydCB0aGUgY2FjaGUgdXNhZ2UgYW5kIHN1Z2dlc3QKLSMgdGhlIG9wdGltYWwgY2FjaGUgc2l6
ZSBmcm9tIGEgc3BlZWQgcG9pbnQgb2Ygdmlldy4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11
bSB2YWx1ZTogOSwgZGVmYXVsdCB2YWx1ZTogMC4KLQotTE9PS1VQX0NBQ0hFX1NJWkUgICAgICA9
IDAKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBCdWlsZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24g
b3B0aW9ucwotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBFWFRSQUNUX0FMTCB0YWcg
aXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgYXNzdW1lIGFsbCBlbnRpdGllcyBpbgotIyBkb2N1
bWVudGF0aW9uIGFyZSBkb2N1bWVudGVkLCBldmVuIGlmIG5vIGRvY3VtZW50YXRpb24gd2FzIGF2
YWlsYWJsZS4gUHJpdmF0ZQotIyBjbGFzcyBtZW1iZXJzIGFuZCBzdGF0aWMgZmlsZSBtZW1iZXJz
IHdpbGwgYmUgaGlkZGVuIHVubGVzcyB0aGUKLSMgRVhUUkFDVF9QUklWQVRFIHJlc3BlY3RpdmVs
eSBFWFRSQUNUX1NUQVRJQyB0YWdzIGFyZSBzZXQgdG8gWUVTLgotIyBOb3RlOiBUaGlzIHdpbGwg
YWxzbyBkaXNhYmxlIHRoZSB3YXJuaW5ncyBhYm91dCB1bmRvY3VtZW50ZWQgbWVtYmVycyB0aGF0
IGFyZQotIyBub3JtYWxseSBwcm9kdWNlZCB3aGVuIFdBUk5JTkdTIGlzIHNldCB0byBZRVMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRVhUUkFDVF9BTEwgICAgICAgICAgICA9IFlF
UwotCi0jIElmIHRoZSBFWFRSQUNUX1BSSVZBVEUgdGFnIGlzIHNldCB0byBZRVMgYWxsIHByaXZh
dGUgbWVtYmVycyBvZiBhIGNsYXNzIHdpbGwKLSMgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50
YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRVhUUkFDVF9QUklWQVRFICAg
ICAgICA9IE5PCi0KLSMgSWYgdGhlIEVYVFJBQ1RfUEFDS0FHRSB0YWcgaXMgc2V0IHRvIFlFUyBh
bGwgbWVtYmVycyB3aXRoIHBhY2thZ2Ugb3IgaW50ZXJuYWwKLSMgc2NvcGUgd2lsbCBiZSBpbmNs
dWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgot
Ci1FWFRSQUNUX1BBQ0tBR0UgICAgICAgID0gTk8KLQotIyBJZiB0aGUgRVhUUkFDVF9TVEFUSUMg
dGFnIGlzIHNldCB0byBZRVMgYWxsIHN0YXRpYyBtZW1iZXJzIG9mIGEgZmlsZSB3aWxsIGJlCi0j
IGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCi0KLUVYVFJBQ1RfU1RBVElDICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgRVhUUkFDVF9M
T0NBTF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTIGNsYXNzZXMgKGFuZCBzdHJ1Y3RzKSBkZWZp
bmVkCi0jIGxvY2FsbHkgaW4gc291cmNlIGZpbGVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRv
Y3VtZW50YXRpb24uIElmIHNldCB0byBOTwotIyBvbmx5IGNsYXNzZXMgZGVmaW5lZCBpbiBoZWFk
ZXIgZmlsZXMgYXJlIGluY2x1ZGVkLiBEb2VzIG5vdCBoYXZlIGFueSBlZmZlY3QKLSMgZm9yIEph
dmEgc291cmNlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotRVhUUkFDVF9MT0NB
TF9DTEFTU0VTICA9IE5PCi0KLSMgVGhpcyBmbGFnIGlzIG9ubHkgdXNlZnVsIGZvciBPYmplY3Rp
dmUtQyBjb2RlLiBXaGVuIHNldCB0byBZRVMgbG9jYWwgbWV0aG9kcywKLSMgd2hpY2ggYXJlIGRl
ZmluZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIHNlY3Rpb24gYnV0IG5vdCBpbiB0aGUgaW50ZXJm
YWNlIGFyZQotIyBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PIG9u
bHkgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlIGFyZQotIyBpbmNsdWRlZC4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE5PLgotCi1FWFRSQUNUX0xPQ0FMX01FVEhPRFMgID0gTk8KLQotIyBJZiB0
aGlzIGZsYWcgaXMgc2V0IHRvIFlFUywgdGhlIG1lbWJlcnMgb2YgYW5vbnltb3VzIG5hbWVzcGFj
ZXMgd2lsbCBiZQotIyBleHRyYWN0ZWQgYW5kIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
cyBhIG5hbWVzcGFjZSBjYWxsZWQKLSMgJ2Fub255bW91c19uYW1lc3BhY2V7ZmlsZX0nLCB3aGVy
ZSBmaWxlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYmFzZSBuYW1lIG9mCi0jIHRoZSBmaWxl
IHRoYXQgY29udGFpbnMgdGhlIGFub255bW91cyBuYW1lc3BhY2UuIEJ5IGRlZmF1bHQgYW5vbnlt
b3VzIG5hbWVzcGFjZQotIyBhcmUgaGlkZGVuLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLUVYVFJBQ1RfQU5PTl9OU1BBQ0VTICAgPSBOTwotCi0jIElmIHRoZSBISURFX1VORE9DX01F
TUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbAotIyB1bmRvY3Vt
ZW50ZWQgbWVtYmVycyBpbnNpZGUgZG9jdW1lbnRlZCBjbGFzc2VzIG9yIGZpbGVzLiBJZiBzZXQg
dG8gTk8gdGhlc2UKLSMgbWVtYmVycyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92
ZXJ2aWV3cywgYnV0IG5vIGRvY3VtZW50YXRpb24KLSMgc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIFRo
aXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1ISURFX1VORE9DX01FTUJFUlMgICAgID0gTk8KLQot
IyBJZiB0aGUgSElERV9VTkRPQ19DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdp
bGwgaGlkZSBhbGwKLSMgdW5kb2N1bWVudGVkIGNsYXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlz
aWJsZSBpbiB0aGUgY2xhc3MgaGllcmFyY2h5LiBJZiBzZXQKLSMgdG8gTk8gdGhlc2UgY2xhc3Nl
cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92ZXJ2aWV3cy4gVGhpcyBvcHRpb24g
aGFzCi0jIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogTk8uCi0KLUhJREVfVU5ET0NfQ0xBU1NFUyAgICAgPSBOTwotCi0jIElmIHRo
ZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBo
aWRlIGFsbCBmcmllbmQKLSMgKGNsYXNzfHN0cnVjdHx1bmlvbikgZGVjbGFyYXRpb25zLiBJZiBz
ZXQgdG8gTk8gdGhlc2UgZGVjbGFyYXRpb25zIHdpbGwgYmUKLSMgaW5jbHVkZWQgaW4gdGhlIGRv
Y3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSElERV9GUklFTkRf
Q09NUE9VTkRTICA9IE5PCi0KLSMgSWYgdGhlIEhJREVfSU5fQk9EWV9ET0NTIHRhZyBpcyBzZXQg
dG8gWUVTLCBkb3h5Z2VuIHdpbGwgaGlkZSBhbnkKLSMgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm91
bmQgaW5zaWRlIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24uIElmIHNldCB0byBOTyB0aGVzZQotIyBi
bG9ja3Mgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZnVuY3Rpb24ncyBkZXRhaWxlZCBkb2N1bWVu
dGF0aW9uIGJsb2NrLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUhJREVfSU5fQk9E
WV9ET0NTICAgICAgPSBOTwotCi0jIFRoZSBJTlRFUk5BTF9ET0NTIHRhZyBkZXRlcm1pbmVzIGlm
IGRvY3VtZW50YXRpb24gdGhhdCBpcyB0eXBlZCBhZnRlciBhCi0jIFxpbnRlcm5hbCBjb21tYW5k
IGlzIGluY2x1ZGVkLiBJZiB0aGUgdGFnIGlzIHNldCB0byBOTyB0aGVuIHRoZSBkb2N1bWVudGF0
aW9uCi0jIHdpbGwgYmUgZXhjbHVkZWQuIFNldCBpdCB0byBZRVMgdG8gaW5jbHVkZSB0aGUgaW50
ZXJuYWwgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTlRF
Uk5BTF9ET0NTICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIENBU0VfU0VOU0VfTkFNRVMgdGFn
IGlzIHNldCB0byBOTyB0aGVuIGRveHlnZW4gd2lsbCBvbmx5IGdlbmVyYXRlIGZpbGUKLSMgbmFt
ZXMgaW4gbG93ZXItY2FzZSBsZXR0ZXJzLiBJZiBzZXQgdG8gWUVTIHVwcGVyLWNhc2UgbGV0dGVy
cyBhcmUgYWxzbwotIyBhbGxvd2VkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBjbGFzc2Vz
IG9yIGZpbGVzIHdob3NlIG5hbWVzIG9ubHkgZGlmZmVyCi0jIGluIGNhc2UgYW5kIGlmIHlvdXIg
ZmlsZSBzeXN0ZW0gc3VwcG9ydHMgY2FzZSBzZW5zaXRpdmUgZmlsZSBuYW1lcy4gV2luZG93cwot
IyBhbmQgTWFjIHVzZXJzIGFyZSBhZHZpc2VkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBOTy4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IHN5c3RlbSBkZXBlbmRlbnQuCi0KLUNBU0VfU0VOU0VfTkFN
RVMgICAgICAgPSBOTwotCi0jIElmIHRoZSBISURFX1NDT1BFX05BTUVTIHRhZyBpcyBzZXQgdG8g
Tk8gdGhlbiBkb3h5Z2VuIHdpbGwgc2hvdyBtZW1iZXJzIHdpdGgKLSMgdGhlaXIgZnVsbCBjbGFz
cyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIFlF
UyB0aGUKLSMgc2NvcGUgd2lsbCBiZSBoaWRkZW4uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLQotSElERV9TQ09QRV9OQU1FUyAgICAgICA9IE5PCi0KLSMgSWYgdGhlIFNIT1dfSU5DTFVE
RV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBwdXQgYSBsaXN0IG9m
Ci0jIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50
YXRpb24gb2YgdGhhdCBmaWxlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1TSE9X
X0lOQ0xVREVfRklMRVMgICAgID0gWUVTCi0KLSMgSWYgdGhlIEZPUkNFX0xPQ0FMX0lOQ0xVREVT
IHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGxpc3QgaW5jbHVkZQotIyBmaWxl
cyB3aXRoIGRvdWJsZSBxdW90ZXMgaW4gdGhlIGRvY3VtZW50YXRpb24gcmF0aGVyIHRoYW4gd2l0
aCBzaGFycCBicmFja2V0cy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1GT1JDRV9M
T0NBTF9JTkNMVURFUyAgID0gTk8KLQotIyBJZiB0aGUgSU5MSU5FX0lORk8gdGFnIGlzIHNldCB0
byBZRVMgdGhlbiBhIHRhZyBbaW5saW5lXSBpcyBpbnNlcnRlZCBpbiB0aGUKLSMgZG9jdW1lbnRh
dGlvbiBmb3IgaW5saW5lIG1lbWJlcnMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0K
LUlOTElORV9JTkZPICAgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgU09SVF9NRU1CRVJfRE9D
UyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZQotIyAoZGV0YWls
ZWQpIGRvY3VtZW50YXRpb24gb2YgZmlsZSBhbmQgY2xhc3MgbWVtYmVycyBhbHBoYWJldGljYWxs
eSBieSBtZW1iZXIKLSMgbmFtZS4gSWYgc2V0IHRvIE5PIHRoZSBtZW1iZXJzIHdpbGwgYXBwZWFy
IGluIGRlY2xhcmF0aW9uIG9yZGVyLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1T
T1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFNPUlRfQlJJRUZfRE9DUyB0
YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZSBicmllZgotIyBkZXNj
cmlwdGlvbnMgb2YgZmlsZSwgbmFtZXNwYWNlIGFuZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNh
bGx5IGJ5IG1lbWJlcgotIyBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBl
YXIgaW4gZGVjbGFyYXRpb24gb3JkZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
U09SVF9CUklFRl9ET0NTICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIFNPUlRfTUVNQkVSU19DVE9S
U18xU1QgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc29ydCB0aGUKLSMgKGJy
aWVmIGFuZCBkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBjbGFzcyBtZW1iZXJzIHNvIHRoYXQg
Y29uc3RydWN0b3JzIGFuZAotIyBkZXN0cnVjdG9ycyBhcmUgbGlzdGVkIGZpcnN0LiBJZiBzZXQg
dG8gTk8gdGhlIGNvbnN0cnVjdG9ycyB3aWxsIGFwcGVhciBpbiB0aGUKLSMgcmVzcGVjdGl2ZSBv
cmRlcnMgZGVmaW5lZCBieSBTT1JUX0JSSUVGX0RPQ1MgYW5kIFNPUlRfTUVNQkVSX0RPQ1MuCi0j
IE5vdGU6IElmIFNPUlRfQlJJRUZfRE9DUyBpcyBzZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdu
b3JlZCBmb3Igc29ydGluZyBicmllZgotIyBtZW1iZXIgZG9jdW1lbnRhdGlvbi4KLSMgTm90ZTog
SWYgU09SVF9NRU1CRVJfRE9DUyBpcyBzZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBm
b3Igc29ydGluZwotIyBkZXRhaWxlZCBtZW1iZXIgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE5PLgotCi1TT1JUX01FTUJFUlNfQ1RPUlNfMVNUID0gTk8KLQotIyBJZiB0
aGUgU09SVF9HUk9VUF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBz
b3J0IHRoZSBoaWVyYXJjaHkKLSMgb2YgZ3JvdXAgbmFtZXMgaW50byBhbHBoYWJldGljYWwgb3Jk
ZXIuIElmIHNldCB0byBOTyB0aGUgZ3JvdXAgbmFtZXMgd2lsbAotIyBhcHBlYXIgaW4gdGhlaXIg
ZGVmaW5lZCBvcmRlci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TT1JUX0dST1VQ
X05BTUVTICAgICAgID0gTk8KLQotIyBJZiB0aGUgU09SVF9CWV9TQ09QRV9OQU1FIHRhZyBpcyBz
ZXQgdG8gWUVTLCB0aGUgY2xhc3MgbGlzdCB3aWxsIGJlIHNvcnRlZCBieQotIyBmdWxseS1xdWFs
aWZpZWQgbmFtZXMsIGluY2x1ZGluZyBuYW1lc3BhY2VzLiBJZiBzZXQgdG8gTk8sIHRoZSBjbGFz
cyBsaXN0IHdpbGwKLSMgYmUgc29ydGVkIG9ubHkgYnkgY2xhc3MgbmFtZSwgbm90IGluY2x1ZGlu
ZyB0aGUgbmFtZXNwYWNlIHBhcnQuCi0jIE5vdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCB2ZXJ5IHVz
ZWZ1bCBpZiBISURFX1NDT1BFX05BTUVTIGlzIHNldCB0byBZRVMuCi0jIE5vdGU6IFRoaXMgb3B0
aW9uIGFwcGxpZXMgb25seSB0byB0aGUgY2xhc3MgbGlzdCwgbm90IHRvIHRoZSBhbHBoYWJldGlj
YWwKLSMgbGlzdC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TT1JUX0JZX1NDT1BF
X05BTUUgICAgID0gWUVTCi0KLSMgSWYgdGhlIFNUUklDVF9QUk9UT19NQVRDSElORyBvcHRpb24g
aXMgZW5hYmxlZCBhbmQgZG94eWdlbiBmYWlscyB0byBkbyBwcm9wZXIKLSMgdHlwZSByZXNvbHV0
aW9uIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gaXQgd2lsbCByZWplY3QgYSBtYXRj
aCBiZXR3ZWVuCi0jIHRoZSBwcm90b3R5cGUgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIG1l
bWJlciBmdW5jdGlvbiBldmVuIGlmIHRoZXJlIGlzCi0jIG9ubHkgb25lIGNhbmRpZGF0ZSBvciBp
dCBpcyBvYnZpb3VzIHdoaWNoIGNhbmRpZGF0ZSB0byBjaG9vc2UgYnkgZG9pbmcgYQotIyBzaW1w
bGUgc3RyaW5nIG1hdGNoLiBCeSBkaXNhYmxpbmcgU1RSSUNUX1BST1RPX01BVENISU5HIGRveHln
ZW4gd2lsbCBzdGlsbAotIyBhY2NlcHQgYSBtYXRjaCBiZXR3ZWVuIHByb3RvdHlwZSBhbmQgaW1w
bGVtZW50YXRpb24gaW4gc3VjaCBjYXNlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgot
Ci1TVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgID0gTk8KLQotIyBUaGUgR0VORVJBVEVfVE9ET0xJU1Qg
dGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKLSMg
dG9kbyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0b2RvIGNvbW1hbmRz
IGluIHRoZQotIyBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgot
Ci1HRU5FUkFURV9UT0RPTElTVCAgICAgID0gWUVTCi0KLSMgVGhlIEdFTkVSQVRFX1RFU1RMSVNU
IHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZRVMpIG9yIGRpc2FibGUgKCBOTykgdGhlCi0j
IHRlc3QgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcdGVzdCBjb21tYW5k
cyBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4K
LQotR0VORVJBVEVfVEVTVExJU1QgICAgICA9IE5PCi0KLSMgVGhlIEdFTkVSQVRFX0JVR0xJU1Qg
dGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUgYnVn
Ci0jIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXGJ1ZyBjb21tYW5kcyBp
biB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotR0VO
RVJBVEVfQlVHTElTVCAgICAgICA9IE5PCi0KLSMgVGhlIEdFTkVSQVRFX0RFUFJFQ0FURURMSVNU
IHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZRVMpIG9yIGRpc2FibGUgKCBOTykKLSMgdGhl
IGRlcHJlY2F0ZWQgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcZGVwcmVj
YXRlZCBjb21tYW5kcyBpbgotIyB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLQotR0VORVJBVEVfREVQUkVDQVRFRExJU1Q9IFlFUwotCi0jIFRoZSBFTkFC
TEVEX1NFQ1RJT05TIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgY29uZGl0aW9uYWwgZG9jdW1l
bnRhdGlvbgotIyBzZWN0aW9ucywgbWFya2VkIGJ5IFxpZiA8c2VjdGlvbl9sYWJlbD4gLi4uIFxl
bmRpZiBhbmQgXGNvbmQgPHNlY3Rpb25fbGFiZWw+Ci0jIC4uLiBcZW5kY29uZCBibG9ja3MuCi0K
LUVOQUJMRURfU0VDVElPTlMgICAgICAgPQotCi0jIFRoZSBNQVhfSU5JVElBTElaRVJfTElORVMg
dGFnIGRldGVybWluZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRoYXQgdGhlCi0jIGlu
aXRpYWwgdmFsdWUgb2YgYSB2YXJpYWJsZSBvciBtYWNybyAvIGRlZmluZSBjYW4gaGF2ZSBmb3Ig
aXQgdG8gYXBwZWFyIGluIHRoZQotIyBkb2N1bWVudGF0aW9uLiBJZiB0aGUgaW5pdGlhbGl6ZXIg
Y29uc2lzdHMgb2YgbW9yZSBsaW5lcyB0aGFuIHNwZWNpZmllZCBoZXJlCi0jIGl0IHdpbGwgYmUg
aGlkZGVuLiBVc2UgYSB2YWx1ZSBvZiAwIHRvIGhpZGUgaW5pdGlhbGl6ZXJzIGNvbXBsZXRlbHku
IFRoZQotIyBhcHBlYXJhbmNlIG9mIHRoZSB2YWx1ZSBvZiBpbmRpdmlkdWFsIHZhcmlhYmxlcyBh
bmQgbWFjcm9zIC8gZGVmaW5lcyBjYW4gYmUKLSMgY29udHJvbGxlZCB1c2luZyBcc2hvd2luaXRp
YWxpemVyIG9yIFxoaWRlaW5pdGlhbGl6ZXIgY29tbWFuZCBpbiB0aGUKLSMgZG9jdW1lbnRhdGlv
biByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11
bSB2YWx1ZTogMTAwMDAsIGRlZmF1bHQgdmFsdWU6IDMwLgotCi1NQVhfSU5JVElBTElaRVJfTElO
RVMgID0gMzAKLQotIyBTZXQgdGhlIFNIT1dfVVNFRF9GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJs
ZSB0aGUgbGlzdCBvZiBmaWxlcyBnZW5lcmF0ZWQgYXQKLSMgdGhlIGJvdHRvbSBvZiB0aGUgZG9j
dW1lbnRhdGlvbiBvZiBjbGFzc2VzIGFuZCBzdHJ1Y3RzLiBJZiBzZXQgdG8gWUVTIHRoZSBsaXN0
Ci0jIHdpbGwgbWVudGlvbiB0aGUgZmlsZXMgdGhhdCB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhl
IGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNIT1dfVVNF
RF9GSUxFUyAgICAgICAgPSBZRVMKLQotIyBTZXQgdGhlIFNIT1dfRklMRVMgdGFnIHRvIE5PIHRv
IGRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIEZpbGVzIHBhZ2UuIFRoaXMKLSMgd2lsbCBy
ZW1vdmUgdGhlIEZpbGVzIGVudHJ5IGZyb20gdGhlIFF1aWNrIEluZGV4IGFuZCBmcm9tIHRoZSBG
b2xkZXIgVHJlZSBWaWV3Ci0jIChpZiBzcGVjaWZpZWQpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogWUVTLgotCi1TSE9XX0ZJTEVTICAgICAgICAgICAgID0gWUVTCi0KLSMgU2V0IHRoZSBTSE9X
X05BTUVTUEFDRVMgdGFnIHRvIE5PIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIE5h
bWVzcGFjZXMKLSMgcGFnZS4gVGhpcyB3aWxsIHJlbW92ZSB0aGUgTmFtZXNwYWNlcyBlbnRyeSBm
cm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0aGUKLSMgRm9sZGVyIFRyZWUgVmlldyAoaWYg
c3BlY2lmaWVkKS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotU0hPV19OQU1FU1BB
Q0VTICAgICAgICA9IFlFUwotCi0jIFRoZSBGSUxFX1ZFUlNJT05fRklMVEVSIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgcHJvZ3JhbSBvciBzY3JpcHQgdGhhdAotIyBkb3h5Z2VuIHNob3Vs
ZCBpbnZva2UgdG8gZ2V0IHRoZSBjdXJyZW50IHZlcnNpb24gZm9yIGVhY2ggZmlsZSAodHlwaWNh
bGx5IGZyb20KLSMgdGhlIHZlcnNpb24gY29udHJvbCBzeXN0ZW0pLiBEb3h5Z2VuIHdpbGwgaW52
b2tlIHRoZSBwcm9ncmFtIGJ5IGV4ZWN1dGluZyAodmlhCi0jIHBvcGVuKCkpIHRoZSBjb21tYW5k
IGNvbW1hbmQgaW5wdXQtZmlsZSwgd2hlcmUgY29tbWFuZCBpcyB0aGUgdmFsdWUgb2YgdGhlCi0j
IEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnLCBhbmQgaW5wdXQtZmlsZSBpcyB0aGUgbmFtZSBvZiBh
biBpbnB1dCBmaWxlIHByb3ZpZGVkCi0jIGJ5IGRveHlnZW4uIFdoYXRldmVyIHRoZSBwcm9ncmFt
IHdyaXRlcyB0byBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZCBhcyB0aGUgZmlsZQotIyB2ZXJzaW9u
LiBGb3IgYW4gZXhhbXBsZSBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0KLUZJTEVfVkVSU0lPTl9G
SUxURVIgICAgPQotCi0jIFRoZSBMQVlPVVRfRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lm
eSBhIGxheW91dCBmaWxlIHdoaWNoIHdpbGwgYmUgcGFyc2VkCi0jIGJ5IGRveHlnZW4uIFRoZSBs
YXlvdXQgZmlsZSBjb250cm9scyB0aGUgZ2xvYmFsIHN0cnVjdHVyZSBvZiB0aGUgZ2VuZXJhdGVk
Ci0jIG91dHB1dCBmaWxlcyBpbiBhbiBvdXRwdXQgZm9ybWF0IGluZGVwZW5kZW50IHdheS4gVG8g
Y3JlYXRlIHRoZSBsYXlvdXQgZmlsZQotIyB0aGF0IHJlcHJlc2VudHMgZG94eWdlbidzIGRlZmF1
bHRzLCBydW4gZG94eWdlbiB3aXRoIHRoZSAtbCBvcHRpb24uIFlvdSBjYW4KLSMgb3B0aW9uYWxs
eSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGFmdGVyIHRoZSBvcHRpb24sIGlmIG9taXR0ZWQgRG94eWdl
bkxheW91dC54bWwKLSMgd2lsbCBiZSB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSBsYXlvdXQgZmls
ZS4KLSMKLSMgTm90ZSB0aGF0IGlmIHlvdSBydW4gZG94eWdlbiBmcm9tIGEgZGlyZWN0b3J5IGNv
bnRhaW5pbmcgYSBmaWxlIGNhbGxlZAotIyBEb3h5Z2VuTGF5b3V0LnhtbCwgZG94eWdlbiB3aWxs
IHBhcnNlIGl0IGF1dG9tYXRpY2FsbHkgZXZlbiBpZiB0aGUgTEFZT1VUX0ZJTEUKLSMgdGFnIGlz
IGxlZnQgZW1wdHkuCi0KLUxBWU9VVF9GSUxFICAgICAgICAgICAgPQotCi0jIFRoZSBDSVRFX0JJ
Ql9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBiaWIgZmlsZXMg
Y29udGFpbmluZwotIyB0aGUgcmVmZXJlbmNlIGRlZmluaXRpb25zLiBUaGlzIG11c3QgYmUgYSBs
aXN0IG9mIC5iaWIgZmlsZXMuIFRoZSAuYmliCi0jIGV4dGVuc2lvbiBpcyBhdXRvbWF0aWNhbGx5
IGFwcGVuZGVkIGlmIG9taXR0ZWQuIFRoaXMgcmVxdWlyZXMgdGhlIGJpYnRleCB0b29sCi0jIHRv
IGJlIGluc3RhbGxlZC4gU2VlIGFsc28gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJU
ZVggZm9yIG1vcmUgaW5mby4KLSMgRm9yIExhVGVYIHRoZSBzdHlsZSBvZiB0aGUgYmlibGlvZ3Jh
cGh5IGNhbiBiZSBjb250cm9sbGVkIHVzaW5nCi0jIExBVEVYX0JJQl9TVFlMRS4gVG8gdXNlIHRo
aXMgZmVhdHVyZSB5b3UgbmVlZCBiaWJ0ZXggYW5kIHBlcmwgYXZhaWxhYmxlIGluIHRoZQotIyBz
ZWFyY2ggcGF0aC4gRG8gbm90IHVzZSBmaWxlIG5hbWVzIHdpdGggc3BhY2VzLCBiaWJ0ZXggY2Fu
bm90IGhhbmRsZSB0aGVtLiBTZWUKLSMgYWxzbyBcY2l0ZSBmb3IgaW5mbyBob3cgdG8gY3JlYXRl
IHJlZmVyZW5jZXMuCi0KLUNJVEVfQklCX0ZJTEVTICAgICAgICAgPQotCi0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdhcm5pbmcgYW5kIHBy
b2dyZXNzIG1lc3NhZ2VzCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhlIFFVSUVUIHRhZyBj
YW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgbWVzc2FnZXMgdGhhdCBhcmUgZ2VuZXJhdGVk
IHRvCi0jIHN0YW5kYXJkIG91dHB1dCBieSBkb3h5Z2VuLiBJZiBRVUlFVCBpcyBzZXQgdG8gWUVT
IHRoaXMgaW1wbGllcyB0aGF0IHRoZQotIyBtZXNzYWdlcyBhcmUgb2ZmLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogTk8uCi0KLVFVSUVUICAgICAgICAgICAgICAgICAgPSBOTwotCi0jIFRoZSBX
QVJOSU5HUyB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIHdhcm5pbmcgbWVzc2Fn
ZXMgdGhhdCBhcmUKLSMgZ2VuZXJhdGVkIHRvIHN0YW5kYXJkIGVycm9yICggc3RkZXJyKSBieSBk
b3h5Z2VuLiBJZiBXQVJOSU5HUyBpcyBzZXQgdG8gWUVTCi0jIHRoaXMgaW1wbGllcyB0aGF0IHRo
ZSB3YXJuaW5ncyBhcmUgb24uCi0jCi0jIFRpcDogVHVybiB3YXJuaW5ncyBvbiB3aGlsZSB3cml0
aW5nIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1X
QVJOSU5HUyAgICAgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFdBUk5fSUZfVU5ET0NVTUVO
VEVEIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZQotIyB3YXJu
aW5ncyBmb3IgdW5kb2N1bWVudGVkIG1lbWJlcnMuIElmIEVYVFJBQ1RfQUxMIGlzIHNldCB0byBZ
RVMgdGhlbiB0aGlzIGZsYWcKLSMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGRpc2FibGVkLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1XQVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVT
Ci0KLSMgSWYgdGhlIFdBUk5fSUZfRE9DX0VSUk9SIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2Vu
IHdpbGwgZ2VuZXJhdGUgd2FybmluZ3MgZm9yCi0jIHBvdGVudGlhbCBlcnJvcnMgaW4gdGhlIGRv
Y3VtZW50YXRpb24sIHN1Y2ggYXMgbm90IGRvY3VtZW50aW5nIHNvbWUgcGFyYW1ldGVycwotIyBp
biBhIGRvY3VtZW50ZWQgZnVuY3Rpb24sIG9yIGRvY3VtZW50aW5nIHBhcmFtZXRlcnMgdGhhdCBk
b24ndCBleGlzdCBvciB1c2luZwotIyBtYXJrdXAgY29tbWFuZHMgd3JvbmdseS4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotV0FSTl9JRl9ET0NfRVJST1IgICAgICA9IFlFUwotCi0j
IFRoaXMgV0FSTl9OT19QQVJBTURPQyBvcHRpb24gY2FuIGJlIGVuYWJsZWQgdG8gZ2V0IHdhcm5p
bmdzIGZvciBmdW5jdGlvbnMgdGhhdAotIyBhcmUgZG9jdW1lbnRlZCwgYnV0IGhhdmUgbm8gZG9j
dW1lbnRhdGlvbiBmb3IgdGhlaXIgcGFyYW1ldGVycyBvciByZXR1cm4KLSMgdmFsdWUuIElmIHNl
dCB0byBOTyBkb3h5Z2VuIHdpbGwgb25seSB3YXJuIGFib3V0IHdyb25nIG9yIGluY29tcGxldGUg
cGFyYW1ldGVyCi0jIGRvY3VtZW50YXRpb24sIGJ1dCBub3QgYWJvdXQgdGhlIGFic2VuY2Ugb2Yg
ZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1XQVJOX05PX1BB
UkFNRE9DICAgICAgID0gTk8KLQotIyBUaGUgV0FSTl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhl
IGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGRveHlnZW4KLSMgY2FuIHByb2R1
Y2UuIFRoZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlICRmaWxlLCAkbGluZSwgYW5kICR0ZXh0
IHRhZ3MsIHdoaWNoCi0jIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGZpbGUgYW5kIGxpbmUgbnVt
YmVyIGZyb20gd2hpY2ggdGhlIHdhcm5pbmcgb3JpZ2luYXRlZAotIyBhbmQgdGhlIHdhcm5pbmcg
dGV4dC4gT3B0aW9uYWxseSB0aGUgZm9ybWF0IG1heSBjb250YWluICR2ZXJzaW9uLCB3aGljaCB3
aWxsCi0jIGJlIHJlcGxhY2VkIGJ5IHRoZSB2ZXJzaW9uIG9mIHRoZSBmaWxlIChpZiBpdCBjb3Vs
ZCBiZSBvYnRhaW5lZCB2aWEKLSMgRklMRV9WRVJTSU9OX0ZJTFRFUikKLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6ICRmaWxlOiRsaW5lOiAkdGV4dC4KLQotV0FSTl9GT1JNQVQgICAgICAgICAgICA9
ICIkZmlsZTokbGluZTogJHRleHQiCi0KLSMgVGhlIFdBUk5fTE9HRklMRSB0YWcgY2FuIGJlIHVz
ZWQgdG8gc3BlY2lmeSBhIGZpbGUgdG8gd2hpY2ggd2FybmluZyBhbmQgZXJyb3IKLSMgbWVzc2Fn
ZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIElmIGxlZnQgYmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVu
IHRvIHN0YW5kYXJkCi0jIGVycm9yIChzdGRlcnIpLgotCi1XQVJOX0xPR0ZJTEUgICAgICAgICAg
ID0gJVdBUk5JTkdfTE9HX1BBVEglCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJh
dGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGlucHV0IGZpbGVzCi0jLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSMgVGhlIElOUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGVzIGFuZC9v
ciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4KLSMgZG9jdW1lbnRlZCBzb3VyY2UgZmlsZXMuIFlv
dSBtYXkgZW50ZXIgZmlsZSBuYW1lcyBsaWtlIG15ZmlsZS5jcHAgb3IKLSMgZGlyZWN0b3JpZXMg
bGlrZSAvdXNyL3NyYy9teXByb2plY3QuIFNlcGFyYXRlIHRoZSBmaWxlcyBvciBkaXJlY3Rvcmll
cyB3aXRoCi0jIHNwYWNlcy4KLSMgTm90ZTogSWYgdGhpcyB0YWcgaXMgZW1wdHkgdGhlIGN1cnJl
bnQgZGlyZWN0b3J5IGlzIHNlYXJjaGVkLgotCi1JTlBVVCAgICAgICAgICAgICAgICAgID0gLi4v
aW5jbHVkZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgLi4vc3JjL2xpYl9qc29uIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAuCi0KLSMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9mIHRoZSBzb3VyY2UgZmlsZXMKLSMgdGhhdCBk
b3h5Z2VuIHBhcnNlcy4gSW50ZXJuYWxseSBkb3h5Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5n
LiBEb3h5Z2VuIHVzZXMKLSMgbGliaWNvbnYgKG9yIHRoZSBpY29udiBidWlsdCBpbnRvIGxpYmMp
IGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSB0aGUgbGliaWNvbnYKLSMgZG9jdW1lbnRhdGlvbiAo
c2VlOiBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYpIGZvciB0aGUgbGlzdCBv
ZgotIyBwb3NzaWJsZSBlbmNvZGluZ3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYtOC4K
LQotSU5QVVRfRU5DT0RJTkcgICAgICAgICA9IFVURi04Ci0KLSMgSWYgdGhlIHZhbHVlIG9mIHRo
ZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQotIyBGSUxF
X1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIChs
aWtlICouY3BwIGFuZAotIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0
aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsgdGhlCi0jIGZvbGxvd2luZyBwYXR0ZXJucyBh
cmUgdGVzdGVkOiouYywgKi5jYywgKi5jeHgsICouY3BwLCAqLmMrKywgKi5qYXZhLCAqLmlpLAot
IyAqLml4eCwgKi5pcHAsICouaSsrLCAqLmlubCwgKi5pZGwsICouZGRsLCAqLm9kbCwgKi5oLCAq
LmhoLCAqLmh4eCwgKi5ocHAsCi0jICouaCsrLCAqLmNzLCAqLmQsICoucGhwLCAqLnBocDQsICou
cGhwNSwgKi5waHRtbCwgKi5pbmMsICoubSwgKi5tYXJrZG93biwKLSMgKi5tZCwgKi5tbSwgKi5k
b3gsICoucHksICouZjkwLCAqLmYsICouZm9yLCAqLnRjbCwgKi52aGQsICoudmhkbCwgKi51Y2Ys
Ci0jICoucXNmLCAqLmFzIGFuZCAqLmpzLgotCi1GSUxFX1BBVFRFUk5TICAgICAgICAgID0gKi5o
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqLmNwcCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgKi5pbmwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICouZG94Ci0KLSMgVGhlIFJF
Q1VSU0lWRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBzdWJkaXJl
Y3RvcmllcyBzaG91bGQKLSMgYmUgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIGFzIHdlbGwuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUkVDVVJTSVZFICAgICAgICAgICAgICA9IFlF
UwotCi0jIFRoZSBFWENMVURFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZpbGVzIGFuZC9v
ciBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZQotIyBleGNsdWRlZCBmcm9tIHRoZSBJTlBVVCBz
b3VyY2UgZmlsZXMuIFRoaXMgd2F5IHlvdSBjYW4gZWFzaWx5IGV4Y2x1ZGUgYQotIyBzdWJkaXJl
Y3RvcnkgZnJvbSBhIGRpcmVjdG9yeSB0cmVlIHdob3NlIHJvb3QgaXMgc3BlY2lmaWVkIHdpdGgg
dGhlIElOUFVUIHRhZy4KLSMKLSMgTm90ZSB0aGF0IHJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2
ZSB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggZG94eWdlbiBpcwotIyBydW4uCi0KLUVYQ0xV
REUgICAgICAgICAgICAgICAgPQotCi0jIFRoZSBFWENMVURFX1NZTUxJTktTIHRhZyBjYW4gYmUg
dXNlZCB0byBzZWxlY3Qgd2hldGhlciBvciBub3QgZmlsZXMgb3IKLSMgZGlyZWN0b3JpZXMgdGhh
dCBhcmUgc3ltYm9saWMgbGlua3MgKGEgVW5peCBmaWxlIHN5c3RlbSBmZWF0dXJlKSBhcmUgZXhj
bHVkZWQKLSMgZnJvbSB0aGUgaW5wdXQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
RVhDTFVERV9TWU1MSU5LUyAgICAgICA9IE5PCi0KLSMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBV
VCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQotIyBFWENMVURFX1BB
VFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIHRvIGV4
Y2x1ZGUKLSMgY2VydGFpbiBmaWxlcyBmcm9tIHRob3NlIGRpcmVjdG9yaWVzLgotIwotIyBOb3Rl
IHRoYXQgdGhlIHdpbGRjYXJkcyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaWxlIHdpdGggYWJz
b2x1dGUgcGF0aCwgc28gdG8KLSMgZXhjbHVkZSBhbGwgdGVzdCBkaXJlY3RvcmllcyBmb3IgZXhh
bXBsZSB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoKLQotRVhDTFVERV9QQVRURVJOUyAgICAgICA9
Ci0KLSMgVGhlIEVYQ0xVREVfU1lNQk9MUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUg
b3IgbW9yZSBzeW1ib2wgbmFtZXMKLSMgKG5hbWVzcGFjZXMsIGNsYXNzZXMsIGZ1bmN0aW9ucywg
ZXRjLikgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSB0aGUKLSMgb3V0cHV0LiBUaGUgc3lt
Ym9sIG5hbWUgY2FuIGJlIGEgZnVsbHkgcXVhbGlmaWVkIG5hbWUsIGEgd29yZCwgb3IgaWYgdGhl
Ci0jIHdpbGRjYXJkICogaXMgdXNlZCwgYSBzdWJzdHJpbmcuIEV4YW1wbGVzOiBBTmFtZXNwYWNl
LCBBQ2xhc3MsCi0jIEFDbGFzczo6QU5hbWVzcGFjZSwgQU5hbWVzcGFjZTo6KlRlc3QKLSMKLSMg
Tm90ZSB0aGF0IHRoZSB3aWxkY2FyZHMgYXJlIG1hdGNoZWQgYWdhaW5zdCB0aGUgZmlsZSB3aXRo
IGFic29sdXRlIHBhdGgsIHNvIHRvCi0jIGV4Y2x1ZGUgYWxsIHRlc3QgZGlyZWN0b3JpZXMgdXNl
IHRoZSBwYXR0ZXJuICovdGVzdC8qCi0KLUVYQ0xVREVfU1lNQk9MUyAgICAgICAgPQotCi0jIFRo
ZSBFWEFNUExFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZmls
ZXMgb3IgZGlyZWN0b3JpZXMKLSMgdGhhdCBjb250YWluIGV4YW1wbGUgY29kZSBmcmFnbWVudHMg
dGhhdCBhcmUgaW5jbHVkZWQgKHNlZSB0aGUgXGluY2x1ZGUKLSMgY29tbWFuZCkuCi0KLUVYQU1Q
TEVfUEFUSCAgICAgICAgICAgPSAuLgotCi0jIElmIHRoZSB2YWx1ZSBvZiB0aGUgRVhBTVBMRV9Q
QVRIIHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlCi0jIEVYQU1QTEVf
UEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybiAobGlr
ZSAqLmNwcCBhbmQKLSMgKi5oKSB0byBmaWx0ZXIgb3V0IHRoZSBzb3VyY2UtZmlsZXMgaW4gdGhl
IGRpcmVjdG9yaWVzLiBJZiBsZWZ0IGJsYW5rIGFsbAotIyBmaWxlcyBhcmUgaW5jbHVkZWQuCi0K
LUVYQU1QTEVfUEFUVEVSTlMgICAgICAgPSAqCi0KLSMgSWYgdGhlIEVYQU1QTEVfUkVDVVJTSVZF
IHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gc3ViZGlyZWN0b3JpZXMgd2lsbCBiZQotIyBzZWFyY2hl
ZCBmb3IgaW5wdXQgZmlsZXMgdG8gYmUgdXNlZCB3aXRoIHRoZSBcaW5jbHVkZSBvciBcZG9udGlu
Y2x1ZGUgY29tbWFuZHMKLSMgaXJyZXNwZWN0aXZlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgUkVDVVJT
SVZFIHRhZy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWEFNUExFX1JFQ1VSU0lW
RSAgICAgID0gTk8KLQotIyBUaGUgSU1BR0VfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lm
eSBvbmUgb3IgbW9yZSBmaWxlcyBvciBkaXJlY3RvcmllcwotIyB0aGF0IGNvbnRhaW4gaW1hZ2Vz
IHRoYXQgYXJlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlCi0j
IFxpbWFnZSBjb21tYW5kKS4KLQotSU1BR0VfUEFUSCAgICAgICAgICAgICA9Ci0KLSMgVGhlIElO
UFVUX0ZJTFRFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByb2dyYW0gdGhhdCBkb3h5
Z2VuIHNob3VsZAotIyBpbnZva2UgdG8gZmlsdGVyIGZvciBlYWNoIGlucHV0IGZpbGUuIERveHln
ZW4gd2lsbCBpbnZva2UgdGhlIGZpbHRlciBwcm9ncmFtCi0jIGJ5IGV4ZWN1dGluZyAodmlhIHBv
cGVuKCkpIHRoZSBjb21tYW5kOgotIwotIyA8ZmlsdGVyPiA8aW5wdXQtZmlsZT4KLSMKLSMgd2hl
cmUgPGZpbHRlcj4gaXMgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVF9GSUxURVIgdGFnLCBhbmQgPGlu
cHV0LWZpbGU+IGlzIHRoZQotIyBuYW1lIG9mIGFuIGlucHV0IGZpbGUuIERveHlnZW4gd2lsbCB0
aGVuIHVzZSB0aGUgb3V0cHV0IHRoYXQgdGhlIGZpbHRlcgotIyBwcm9ncmFtIHdyaXRlcyB0byBz
dGFuZGFyZCBvdXRwdXQuIElmIEZJTFRFUl9QQVRURVJOUyBpcyBzcGVjaWZpZWQsIHRoaXMgdGFn
Ci0jIHdpbGwgYmUgaWdub3JlZC4KLSMKLSMgTm90ZSB0aGF0IHRoZSBmaWx0ZXIgbXVzdCBub3Qg
YWRkIG9yIHJlbW92ZSBsaW5lczsgaXQgaXMgYXBwbGllZCBiZWZvcmUgdGhlCi0jIGNvZGUgaXMg
c2Nhbm5lZCwgYnV0IG5vdCB3aGVuIHRoZSBvdXRwdXQgY29kZSBpcyBnZW5lcmF0ZWQuIElmIGxp
bmVzIGFyZSBhZGRlZAotIyBvciByZW1vdmVkLCB0aGUgYW5jaG9ycyB3aWxsIG5vdCBiZSBwbGFj
ZWQgY29ycmVjdGx5LgotCi1JTlBVVF9GSUxURVIgICAgICAgICAgID0KLQotIyBUaGUgRklMVEVS
X1BBVFRFUk5TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZpbHRlcnMgb24gYSBwZXIgZmls
ZSBwYXR0ZXJuCi0jIGJhc2lzLiBEb3h5Z2VuIHdpbGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdp
dGggZWFjaCBwYXR0ZXJuIGFuZCBhcHBseSB0aGUKLSMgZmlsdGVyIGlmIHRoZXJlIGlzIGEgbWF0
Y2guIFRoZSBmaWx0ZXJzIGFyZSBhIGxpc3Qgb2YgdGhlIGZvcm06IHBhdHRlcm49ZmlsdGVyCi0j
IChsaWtlICouY3BwPW15X2NwcF9maWx0ZXIpLiBTZWUgSU5QVVRfRklMVEVSIGZvciBmdXJ0aGVy
IGluZm9ybWF0aW9uIG9uIGhvdwotIyBmaWx0ZXJzIGFyZSB1c2VkLiBJZiB0aGUgRklMVEVSX1BB
VFRFUk5TIHRhZyBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZQotIyBwYXR0ZXJucyBtYXRjaCB0
aGUgZmlsZSBuYW1lLCBJTlBVVF9GSUxURVIgaXMgYXBwbGllZC4KLQotRklMVEVSX1BBVFRFUk5T
ICAgICAgICA9Ci0KLSMgSWYgdGhlIEZJTFRFUl9TT1VSQ0VfRklMRVMgdGFnIGlzIHNldCB0byBZ
RVMsIHRoZSBpbnB1dCBmaWx0ZXIgKGlmIHNldCB1c2luZwotIyBJTlBVVF9GSUxURVIgKSB3aWxs
IGFsc28gYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGlucHV0IGZpbGVzIHRoYXQgYXJlIHVzZWQgZm9y
Ci0jIHByb2R1Y2luZyB0aGUgc291cmNlIGZpbGVzIHRvIGJyb3dzZSAoaS5lLiB3aGVuIFNPVVJD
RV9CUk9XU0VSIGlzIHNldCB0byBZRVMpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LUZJTFRFUl9TT1VSQ0VfRklMRVMgICAgPSBOTwotCi0jIFRoZSBGSUxURVJfU09VUkNFX1BBVFRF
Uk5TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHNvdXJjZSBmaWx0ZXJzIHBlciBmaWxlCi0j
IHBhdHRlcm4uIEEgcGF0dGVybiB3aWxsIG92ZXJyaWRlIHRoZSBzZXR0aW5nIGZvciBGSUxURVJf
UEFUVEVSTiAoaWYgYW55KSBhbmQKLSMgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkaXNhYmxlIHNv
dXJjZSBmaWx0ZXJpbmcgZm9yIGEgc3BlY2lmaWMgcGF0dGVybiB1c2luZwotIyAqLmV4dD0gKHNv
IHdpdGhvdXQgbmFtaW5nIGEgZmlsdGVyKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEZJTFRFUl9TT1VSQ0VfRklMRVMgaXMgc2V0IHRvIFlFUy4KLQotRklMVEVSX1NPVVJDRV9Q
QVRURVJOUyA9Ci0KLSMgSWYgdGhlIFVTRV9NREZJTEVfQVNfTUFJTlBBR0UgdGFnIHJlZmVycyB0
byB0aGUgbmFtZSBvZiBhIG1hcmtkb3duIGZpbGUgdGhhdAotIyBpcyBwYXJ0IG9mIHRoZSBpbnB1
dCwgaXRzIGNvbnRlbnRzIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBtYWluIHBhZ2UKLSMgKGluZGV4
Lmh0bWwpLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IGhhdmUgYSBwcm9qZWN0IG9uIGZvciBp
bnN0YW5jZSBHaXRIdWIKLSMgYW5kIHdhbnQgdG8gcmV1c2UgdGhlIGludHJvZHVjdGlvbiBwYWdl
IGFsc28gZm9yIHRoZSBkb3h5Z2VuIG91dHB1dC4KLQotVVNFX01ERklMRV9BU19NQUlOUEFHRSA9
Ci0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQg
dG8gc291cmNlIGJyb3dzaW5nCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIFNPVVJD
RV9CUk9XU0VSIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gYSBsaXN0IG9mIHNvdXJjZSBmaWxlcyB3
aWxsIGJlCi0jIGdlbmVyYXRlZC4gRG9jdW1lbnRlZCBlbnRpdGllcyB3aWxsIGJlIGNyb3NzLXJl
ZmVyZW5jZWQgd2l0aCB0aGVzZSBzb3VyY2VzLgotIwotIyBOb3RlOiBUbyBnZXQgcmlkIG9mIGFs
bCBzb3VyY2UgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgbWFrZSBzdXJlIHRoYXQKLSMg
YWxzbyBWRVJCQVRJTV9IRUFERVJTIGlzIHNldCB0byBOTy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1TT1VSQ0VfQlJPV1NFUiAgICAgICAgID0gWUVTCi0KLSMgU2V0dGluZyB0aGUg
SU5MSU5FX1NPVVJDRVMgdGFnIHRvIFlFUyB3aWxsIGluY2x1ZGUgdGhlIGJvZHkgb2YgZnVuY3Rp
b25zLAotIyBjbGFzc2VzIGFuZCBlbnVtcyBkaXJlY3RseSBpbnRvIHRoZSBkb2N1bWVudGF0aW9u
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUlOTElORV9TT1VSQ0VTICAgICAgICAg
PSBOTwotCi0jIFNldHRpbmcgdGhlIFNUUklQX0NPREVfQ09NTUVOVFMgdGFnIHRvIFlFUyB3aWxs
IGluc3RydWN0IGRveHlnZW4gdG8gaGlkZSBhbnkKLSMgc3BlY2lhbCBjb21tZW50IGJsb2NrcyBm
cm9tIGdlbmVyYXRlZCBzb3VyY2UgY29kZSBmcmFnbWVudHMuIE5vcm1hbCBDLCBDKysgYW5kCi0j
IEZvcnRyYW4gY29tbWVudHMgd2lsbCBhbHdheXMgcmVtYWluIHZpc2libGUuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNUUklQX0NPREVfQ09NTUVOVFMgICAgPSBZRVMKLQotIyBJ
ZiB0aGUgUkVGRVJFTkNFRF9CWV9SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBl
YWNoIGRvY3VtZW50ZWQKLSMgZnVuY3Rpb24gYWxsIGRvY3VtZW50ZWQgZnVuY3Rpb25zIHJlZmVy
ZW5jaW5nIGl0IHdpbGwgYmUgbGlzdGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LVJFRkVSRU5DRURfQllfUkVMQVRJT04gPSBZRVMKLQotIyBJZiB0aGUgUkVGRVJFTkNFU19SRUxB
VElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24K
LSMgYWxsIGRvY3VtZW50ZWQgZW50aXRpZXMgY2FsbGVkL3VzZWQgYnkgdGhhdCBmdW5jdGlvbiB3
aWxsIGJlIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1SRUZFUkVOQ0VT
X1JFTEFUSU9OICAgID0gWUVTCi0KLSMgSWYgdGhlIFJFRkVSRU5DRVNfTElOS19TT1VSQ0UgdGFn
IGlzIHNldCB0byBZRVMgYW5kIFNPVVJDRV9CUk9XU0VSIHRhZyBpcyBzZXQKLSMgdG8gWUVTLCB0
aGVuIHRoZSBoeXBlcmxpbmtzIGZyb20gZnVuY3Rpb25zIGluIFJFRkVSRU5DRVNfUkVMQVRJT04g
YW5kCi0jIFJFRkVSRU5DRURfQllfUkVMQVRJT04gbGlzdHMgd2lsbCBsaW5rIHRvIHRoZSBzb3Vy
Y2UgY29kZS4gT3RoZXJ3aXNlIHRoZXkgd2lsbAotIyBsaW5rIHRvIHRoZSBkb2N1bWVudGF0aW9u
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1SRUZFUkVOQ0VTX0xJTktfU09VUkNF
ID0gWUVTCi0KLSMgSWYgU09VUkNFX1RPT0xUSVBTIGlzIGVuYWJsZWQgKHRoZSBkZWZhdWx0KSB0
aGVuIGhvdmVyaW5nIGEgaHlwZXJsaW5rIGluIHRoZQotIyBzb3VyY2UgY29kZSB3aWxsIHNob3cg
YSB0b29sdGlwIHdpdGggYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBzdWNoIGFzIHByb3RvdHlwZSwK
LSMgYnJpZWYgZGVzY3JpcHRpb24gYW5kIGxpbmtzIHRvIHRoZSBkZWZpbml0aW9uIGFuZCBkb2N1
bWVudGF0aW9uLiBTaW5jZSB0aGlzCi0jIHdpbGwgbWFrZSB0aGUgSFRNTCBmaWxlIGxhcmdlciBh
bmQgbG9hZGluZyBvZiBsYXJnZSBmaWxlcyBhIGJpdCBzbG93ZXIsIHlvdQotIyBjYW4gb3B0IHRv
IGRpc2FibGUgdGhpcyBmZWF0dXJlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlF
Uy4KLQotU09VUkNFX1RPT0xUSVBTICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBVU0VfSFRBR1Mg
dGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgcmVmZXJlbmNlcyB0byBzb3VyY2UgY29kZSB3aWxs
Ci0jIHBvaW50IHRvIHRoZSBIVE1MIGdlbmVyYXRlZCBieSB0aGUgaHRhZ3MoMSkgdG9vbCBpbnN0
ZWFkIG9mIGRveHlnZW4gYnVpbHQtaW4KLSMgc291cmNlIGJyb3dzZXIuIFRoZSBodGFncyB0b29s
IGlzIHBhcnQgb2YgR05VJ3MgZ2xvYmFsIHNvdXJjZSB0YWdnaW5nIHN5c3RlbQotIyAoc2VlIGh0
dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbG9iYWwvZ2xvYmFsLmh0bWwpLiBZb3Ugd2lsbCBu
ZWVkIHZlcnNpb24KLSMgNC44LjYgb3IgaGlnaGVyLgotIwotIyBUbyB1c2UgaXQgZG8gdGhlIGZv
bGxvd2luZzoKLSMgLSBJbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBnbG9iYWwKLSMgLSBF
bmFibGUgU09VUkNFX0JST1dTRVIgYW5kIFVTRV9IVEFHUyBpbiB0aGUgY29uZmlnIGZpbGUKLSMg
LSBNYWtlIHN1cmUgdGhlIElOUFVUIHBvaW50cyB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRy
ZWUKLSMgLSBSdW4gZG94eWdlbiBhcyBub3JtYWwKLSMKLSMgRG94eWdlbiB3aWxsIGludm9rZSBo
dGFncyAoYW5kIHRoYXQgd2lsbCBpbiB0dXJuIGludm9rZSBndGFncyksIHNvIHRoZXNlCi0jIHRv
b2xzIG11c3QgYmUgYXZhaWxhYmxlIGZyb20gdGhlIGNvbW1hbmQgbGluZSAoaS5lLiBpbiB0aGUg
c2VhcmNoIHBhdGgpLgotIwotIyBUaGUgcmVzdWx0OiBpbnN0ZWFkIG9mIHRoZSBzb3VyY2UgYnJv
d3NlciBnZW5lcmF0ZWQgYnkgZG94eWdlbiwgdGhlIGxpbmtzIHRvCi0jIHNvdXJjZSBjb2RlIHdp
bGwgbm93IHBvaW50IHRvIHRoZSBvdXRwdXQgb2YgaHRhZ3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNPVVJDRV9CUk9XU0VS
IGlzIHNldCB0byBZRVMuCi0KLVVTRV9IVEFHUyAgICAgICAgICAgICAgPSBOTwotCi0jIElmIHRo
ZSBWRVJCQVRJTV9IRUFERVJTIHRhZyBpcyBzZXQgdGhlIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBn
ZW5lcmF0ZSBhCi0jIHZlcmJhdGltIGNvcHkgb2YgdGhlIGhlYWRlciBmaWxlIGZvciBlYWNoIGNs
YXNzIGZvciB3aGljaCBhbiBpbmNsdWRlIGlzCi0jIHNwZWNpZmllZC4gU2V0IHRvIE5PIHRvIGRp
c2FibGUgdGhpcy4KLSMgU2VlIGFsc286IFNlY3Rpb24gXGNsYXNzLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogWUVTLgotCi1WRVJCQVRJTV9IRUFERVJTICAgICAgID0gWUVTCi0KLSMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGFscGhh
YmV0aWNhbCBjbGFzcyBpbmRleAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBBTFBI
QUJFVElDQUxfSU5ERVggdGFnIGlzIHNldCB0byBZRVMsIGFuIGFscGhhYmV0aWNhbCBpbmRleCBv
ZiBhbGwKLSMgY29tcG91bmRzIHdpbGwgYmUgZ2VuZXJhdGVkLiBFbmFibGUgdGhpcyBpZiB0aGUg
cHJvamVjdCBjb250YWlucyBhIGxvdCBvZgotIyBjbGFzc2VzLCBzdHJ1Y3RzLCB1bmlvbnMgb3Ig
aW50ZXJmYWNlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotQUxQSEFCRVRJQ0FM
X0lOREVYICAgICA9IFlFUwotVE9DX0lOQ0xVREVfSEVBRElOR1MgPSAyCi0KLSMgVGhlIENPTFNf
SU5fQUxQSEFfSU5ERVggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBj
b2x1bW5zIGluCi0jIHdoaWNoIHRoZSBhbHBoYWJldGljYWwgaW5kZXggbGlzdCB3aWxsIGJlIHNw
bGl0LgotIyBNaW5pbXVtIHZhbHVlOiAxLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1
ZTogNS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEFMUEhBQkVUSUNBTF9JTkRF
WCBpcyBzZXQgdG8gWUVTLgotCi1DT0xTX0lOX0FMUEhBX0lOREVYICAgID0gNQotCi0jIEluIGNh
c2UgYWxsIGNsYXNzZXMgaW4gYSBwcm9qZWN0IHN0YXJ0IHdpdGggYSBjb21tb24gcHJlZml4LCBh
bGwgY2xhc3NlcyB3aWxsCi0jIGJlIHB1dCB1bmRlciB0aGUgc2FtZSBoZWFkZXIgaW4gdGhlIGFs
cGhhYmV0aWNhbCBpbmRleC4gVGhlIElHTk9SRV9QUkVGSVggdGFnCi0jIGNhbiBiZSB1c2VkIHRv
IHNwZWNpZnkgYSBwcmVmaXggKG9yIGEgbGlzdCBvZiBwcmVmaXhlcykgdGhhdCBzaG91bGQgYmUg
aWdub3JlZAotIyB3aGlsZSBnZW5lcmF0aW5nIHRoZSBpbmRleCBoZWFkZXJzLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgQUxQSEFCRVRJQ0FMX0lOREVYIGlzIHNldCB0byBZRVMu
Ci0KLUlHTk9SRV9QUkVGSVggICAgICAgICAgPQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENv
bmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBIVE1MIG91dHB1dAotIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9IVE1MIHRhZyBpcyBzZXQgdG8gWUVTIGRv
eHlnZW4gd2lsbCBnZW5lcmF0ZSBIVE1MIG91dHB1dAotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
WUVTLgotCi1HRU5FUkFURV9IVE1MICAgICAgICAgID0gWUVTCi0KLSMgVGhlIEhUTUxfT1VUUFVU
IHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIEhUTUwgZG9jcyB3aWxsIGJlIHB1dC4g
SWYgYQotIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJF
Q1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKLSMgaXQuCi0jIFRoZSBkZWZhdWx0IGRpcmVj
dG9yeSBpczogaHRtbC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9PVVRQVVQgICAgICAgICAgICA9ICVIVE1MX09V
VFBVVCUKLQotIyBUaGUgSFRNTF9GSUxFX0VYVEVOU0lPTiB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSB0aGUgZmlsZSBleHRlbnNpb24gZm9yIGVhY2gKLSMgZ2VuZXJhdGVkIEhUTUwgcGFnZSAo
Zm9yIGV4YW1wbGU6IC5odG0sIC5waHAsIC5hc3ApLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Lmh0bWwuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUhUTUxfRklMRV9FWFRFTlNJT04gICAgPSAuaHRtbAotCi0jIFRoZSBI
VE1MX0hFQURFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBIVE1M
IGhlYWRlciBmaWxlIGZvcgotIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIHRoZSB0YWcg
aXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQotIyBzdGFuZGFyZCBoZWFkZXIu
Ci0jCi0jIFRvIGdldCB2YWxpZCBIVE1MIHRoZSBoZWFkZXIgZmlsZSB0aGF0IGluY2x1ZGVzIGFu
eSBzY3JpcHRzIGFuZCBzdHlsZSBzaGVldHMKLSMgdGhhdCBkb3h5Z2VuIG5lZWRzLCB3aGljaCBp
cyBkZXBlbmRlbnQgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1c2VkIChlLmcuCi0jIHRo
ZSBzZXR0aW5nIEdFTkVSQVRFX1RSRUVWSUVXKS4gSXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRv
IHN0YXJ0IHdpdGggYQotIyBkZWZhdWx0IGhlYWRlciB1c2luZwotIyBkb3h5Z2VuIC13IGh0bWwg
bmV3X2hlYWRlci5odG1sIG5ld19mb290ZXIuaHRtbCBuZXdfc3R5bGVzaGVldC5jc3MKLSMgWW91
ckNvbmZpZ0ZpbGUKLSMgYW5kIHRoZW4gbW9kaWZ5IHRoZSBmaWxlIG5ld19oZWFkZXIuaHRtbC4g
U2VlIGFsc28gc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIKLSMgZm9yIGluZm9ybWF0aW9uIG9uIGhv
dyB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBoZWFkZXIgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5Ci0j
IHVzZXMuCi0jIE5vdGU6IFRoZSBoZWFkZXIgaXMgc3ViamVjdCB0byBjaGFuZ2Ugc28geW91IHR5
cGljYWxseSBoYXZlIHRvIHJlZ2VuZXJhdGUgdGhlCi0jIGRlZmF1bHQgaGVhZGVyIHdoZW4gdXBn
cmFkaW5nIHRvIGEgbmV3ZXIgdmVyc2lvbiBvZiBkb3h5Z2VuLiBGb3IgYSBkZXNjcmlwdGlvbgot
IyBvZiB0aGUgcG9zc2libGUgbWFya2VycyBhbmQgYmxvY2sgbmFtZXMgc2VlIHRoZSBkb2N1bWVu
dGF0aW9uLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBp
cyBzZXQgdG8gWUVTLgotCi1IVE1MX0hFQURFUiAgICAgICAgICAgID0gaGVhZGVyLmh0bWwKLQot
IyBUaGUgSFRNTF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmlu
ZWQgSFRNTCBmb290ZXIgZm9yIGVhY2gKLSMgZ2VuZXJhdGVkIEhUTUwgcGFnZS4gSWYgdGhlIHRh
ZyBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJkCi0jIGZvb3Rl
ci4gU2VlIEhUTUxfSEVBREVSIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0
ZSBhIGRlZmF1bHQKLSMgZm9vdGVyIGFuZCB3aGF0IHNwZWNpYWwgY29tbWFuZHMgY2FuIGJlIHVz
ZWQgaW5zaWRlIHRoZSBmb290ZXIuIFNlZSBhbHNvCi0jIHNlY3Rpb24gIkRveHlnZW4gdXNhZ2Ui
IGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIGRlZmF1bHQgZm9vdGVyCi0j
IHRoYXQgZG94eWdlbiBub3JtYWxseSB1c2VzLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0ZPT1RFUiAgICAgICAg
ICAgID0gZm9vdGVyLmh0bWwKLQotIyBUaGUgSFRNTF9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIGNhc2NhZGluZyBzdHlsZQotIyBzaGVldCB0aGF0
IGlzIHVzZWQgYnkgZWFjaCBIVE1MIHBhZ2UuIEl0IGNhbiBiZSB1c2VkIHRvIGZpbmUtdHVuZSB0
aGUgbG9vayBvZgotIyB0aGUgSFRNTCBvdXRwdXQuIElmIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxs
IGdlbmVyYXRlIGEgZGVmYXVsdCBzdHlsZSBzaGVldC4KLSMgU2VlIGFsc28gc2VjdGlvbiAiRG94
eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUgc3R5bGUK
LSMgc2hlZXQgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5IHVzZXMuCi0jIE5vdGU6IEl0IGlzIHJlY29t
bWVuZGVkIHRvIHVzZSBIVE1MX0VYVFJBX1NUWUxFU0hFRVQgaW5zdGVhZCBvZiB0aGlzIHRhZywg
YXMKLSMgaXQgaXMgbW9yZSByb2J1c3QgYW5kIHRoaXMgdGFnIChIVE1MX1NUWUxFU0hFRVQpIHdp
bGwgaW4gdGhlIGZ1dHVyZSBiZWNvbWUKLSMgb2Jzb2xldGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfU1RZTEVT
SEVFVCAgICAgICAgPQotCi0jIFRoZSBIVE1MX0VYVFJBX1NUWUxFU0hFRVQgdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgYW4gYWRkaXRpb25hbCB1c2VyLQotIyBkZWZpbmVkIGNhc2NhZGluZyBz
dHlsZSBzaGVldCB0aGF0IGlzIGluY2x1ZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBzdHlsZSBzaGVl
dHMKLSMgY3JlYXRlZCBieSBkb3h5Z2VuLiBVc2luZyB0aGlzIG9wdGlvbiBvbmUgY2FuIG92ZXJy
dWxlIGNlcnRhaW4gc3R5bGUgYXNwZWN0cy4KLSMgVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciB1c2lu
ZyBIVE1MX1NUWUxFU0hFRVQgc2luY2UgaXQgZG9lcyBub3QgcmVwbGFjZSB0aGUKLSMgc3RhbmRh
cmQgc3R5bGUgc2hlZXQgYW5kIGlzIHRoZXJlZm9yZSBtb3JlIHJvYnVzdCBhZ2FpbnN0IGZ1dHVy
ZSB1cGRhdGVzLgotIyBEb3h5Z2VuIHdpbGwgY29weSB0aGUgc3R5bGUgc2hlZXQgZmlsZSB0byB0
aGUgb3V0cHV0IGRpcmVjdG9yeS4gRm9yIGFuIGV4YW1wbGUKLSMgc2VlIHRoZSBkb2N1bWVudGF0
aW9uLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBz
ZXQgdG8gWUVTLgotCi1IVE1MX0VYVFJBX1NUWUxFU0hFRVQgID0KLQotIyBUaGUgSFRNTF9FWFRS
QV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBleHRyYSBpbWFn
ZXMgb3IKLSMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgdG8gdGhl
IEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gTm90ZQotIyB0aGF0IHRoZXNlIGZpbGVzIHdpbGwgYmUg
Y29waWVkIHRvIHRoZSBiYXNlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gVXNlIHRoZQotIyAkcmVs
cGF0aF4gbWFya2VyIGluIHRoZSBIVE1MX0hFQURFUiBhbmQvb3IgSFRNTF9GT09URVIgZmlsZXMg
dG8gbG9hZCB0aGVzZQotIyBmaWxlcy4gSW4gdGhlIEhUTUxfU1RZTEVTSEVFVCBmaWxlLCB1c2Ug
dGhlIGZpbGUgbmFtZSBvbmx5LiBBbHNvIG5vdGUgdGhhdCB0aGUKLSMgZmlsZXMgd2lsbCBiZSBj
b3BpZWQgYXMtaXM7IHRoZXJlIGFyZSBubyBjb21tYW5kcyBvciBtYXJrZXJzIGF2YWlsYWJsZS4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRv
IFlFUy4KLQotSFRNTF9FWFRSQV9GSUxFUyAgICAgICA9Ci0KLSMgVGhlIEhUTUxfQ09MT1JTVFlM
RV9IVUUgdGFnIGNvbnRyb2xzIHRoZSBjb2xvciBvZiB0aGUgSFRNTCBvdXRwdXQuIERveHlnZW4K
LSMgd2lsbCBhZGp1c3QgdGhlIGNvbG9ycyBpbiB0aGUgc3R5bGVzaGVldCBhbmQgYmFja2dyb3Vu
ZCBpbWFnZXMgYWNjb3JkaW5nIHRvCi0jIHRoaXMgY29sb3IuIEh1ZSBpcyBzcGVjaWZpZWQgYXMg
YW4gYW5nbGUgb24gYSBjb2xvcndoZWVsLCBzZWUKLSMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9IdWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIEZvciBpbnN0YW5jZSB0aGUgdmFsdWUKLSMg
MCByZXByZXNlbnRzIHJlZCwgNjAgaXMgeWVsbG93LCAxMjAgaXMgZ3JlZW4sIDE4MCBpcyBjeWFu
LCAyNDAgaXMgYmx1ZSwgMzAwCi0jIHB1cnBsZSwgYW5kIDM2MCBpcyByZWQgYWdhaW4uCi0jIE1p
bmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDM1OSwgZGVmYXVsdCB2YWx1ZTogMjIwLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8g
WUVTLgotCi1IVE1MX0NPTE9SU1RZTEVfSFVFICAgID0gMjIwCi0KLSMgVGhlIEhUTUxfQ09MT1JT
VFlMRV9TQVQgdGFnIGNvbnRyb2xzIHRoZSBwdXJpdHkgKG9yIHNhdHVyYXRpb24pIG9mIHRoZSBj
b2xvcnMKLSMgaW4gdGhlIEhUTUwgb3V0cHV0LiBGb3IgYSB2YWx1ZSBvZiAwIHRoZSBvdXRwdXQg
d2lsbCB1c2UgZ3JheXNjYWxlcyBvbmx5LiBBCi0jIHZhbHVlIG9mIDI1NSB3aWxsIHByb2R1Y2Ug
dGhlIG1vc3Qgdml2aWQgY29sb3JzLgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVl
OiAyNTUsIGRlZmF1bHQgdmFsdWU6IDEwMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9DT0xPUlNUWUxFX1NBVCAg
ICA9IDEwMAotCi0jIFRoZSBIVE1MX0NPTE9SU1RZTEVfR0FNTUEgdGFnIGNvbnRyb2xzIHRoZSBn
YW1tYSBjb3JyZWN0aW9uIGFwcGxpZWQgdG8gdGhlCi0jIGx1bWluYW5jZSBjb21wb25lbnQgb2Yg
dGhlIGNvbG9ycyBpbiB0aGUgSFRNTCBvdXRwdXQuIFZhbHVlcyBiZWxvdyAxMDAKLSMgZ3JhZHVh
bGx5IG1ha2UgdGhlIG91dHB1dCBsaWdodGVyLCB3aGVyZWFzIHZhbHVlcyBhYm92ZSAxMDAgbWFr
ZSB0aGUgb3V0cHV0Ci0jIGRhcmtlci4gVGhlIHZhbHVlIGRpdmlkZWQgYnkgMTAwIGlzIHRoZSBh
Y3R1YWwgZ2FtbWEgYXBwbGllZCwgc28gODAgcmVwcmVzZW50cwotIyBhIGdhbW1hIG9mIDAuOCwg
VGhlIHZhbHVlIDIyMCByZXByZXNlbnRzIGEgZ2FtbWEgb2YgMi4yLCBhbmQgMTAwIGRvZXMgbm90
Ci0jIGNoYW5nZSB0aGUgZ2FtbWEuCi0jIE1pbmltdW0gdmFsdWU6IDQwLCBtYXhpbXVtIHZhbHVl
OiAyNDAsIGRlZmF1bHQgdmFsdWU6IDgwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0NPTE9SU1RZTEVfR0FNTUEg
ID0gODAKLQotIyBJZiB0aGUgSFRNTF9USU1FU1RBTVAgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0
aGUgZm9vdGVyIG9mIGVhY2ggZ2VuZXJhdGVkIEhUTUwKLSMgcGFnZSB3aWxsIGNvbnRhaW4gdGhl
IGRhdGUgYW5kIHRpbWUgd2hlbiB0aGUgcGFnZSB3YXMgZ2VuZXJhdGVkLiBTZXR0aW5nIHRoaXMK
LSMgdG8gTk8gY2FuIGhlbHAgd2hlbiBjb21wYXJpbmcgdGhlIG91dHB1dCBvZiBtdWx0aXBsZSBy
dW5zLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX1RJTUVTVEFN
UCAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEhUTUxfRFlOQU1JQ19TRUNUSU9OUyB0YWcgaXMg
c2V0IHRvIFlFUyB0aGVuIHRoZSBnZW5lcmF0ZWQgSFRNTAotIyBkb2N1bWVudGF0aW9uIHdpbGwg
Y29udGFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBoaWRkZW4gYW5kIHNob3duIGFmdGVyIHRoZQot
IyBwYWdlIGhhcyBsb2FkZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQot
SFRNTF9EWU5BTUlDX1NFQ1RJT05TICA9IFlFUwotCi0jIFdpdGggSFRNTF9JTkRFWF9OVU1fRU5U
UklFUyBvbmUgY2FuIGNvbnRyb2wgdGhlIHByZWZlcnJlZCBudW1iZXIgb2YgZW50cmllcwotIyBz
aG93biBpbiB0aGUgdmFyaW91cyB0cmVlIHN0cnVjdHVyZWQgaW5kaWNlcyBpbml0aWFsbHk7IHRo
ZSB1c2VyIGNhbiBleHBhbmQKLSMgYW5kIGNvbGxhcHNlIGVudHJpZXMgZHluYW1pY2FsbHkgbGF0
ZXIgb24uIERveHlnZW4gd2lsbCBleHBhbmQgdGhlIHRyZWUgdG8KLSMgc3VjaCBhIGxldmVsIHRo
YXQgYXQgbW9zdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBlbnRyaWVzIGFyZSB2aXNpYmxlICh1
bmxlc3MKLSMgYSBmdWxseSBjb2xsYXBzZWQgdHJlZSBhbHJlYWR5IGV4Y2VlZHMgdGhpcyBhbW91
bnQpLiBTbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YKLSMgZW50cmllcyAxIHdpbGwgcHJvZHVjZSBh
IGZ1bGwgY29sbGFwc2VkIHRyZWUgYnkgZGVmYXVsdC4gMCBpcyBhIHNwZWNpYWwgdmFsdWUKLSMg
cmVwcmVzZW50aW5nIGFuIGluZmluaXRlIG51bWJlciBvZiBlbnRyaWVzIGFuZCB3aWxsIHJlc3Vs
dCBpbiBhIGZ1bGwgZXhwYW5kZWQKLSMgdHJlZSBieSBkZWZhdWx0LgotIyBNaW5pbXVtIHZhbHVl
OiAwLCBtYXhpbXVtIHZhbHVlOiA5OTk5LCBkZWZhdWx0IHZhbHVlOiAxMDAuCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhU
TUxfSU5ERVhfTlVNX0VOVFJJRVMgPSAxMDAKLQotIyBJZiB0aGUgR0VORVJBVEVfRE9DU0VUIHRh
ZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKLSMgZ2VuZXJh
dGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEFwcGxlJ3MgWGNvZGUgMyBpbnRlZ3Jh
dGVkIGRldmVsb3BtZW50Ci0jIGVudmlyb25tZW50IChzZWU6IGh0dHA6Ly9kZXZlbG9wZXIuYXBw
bGUuY29tL3Rvb2xzL3hjb2RlLyksIGludHJvZHVjZWQgd2l0aAotIyBPU1ggMTAuNSAoTGVvcGFy
ZCkuIFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUg
YQotIyBNYWtlZmlsZSBpbiB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBSdW5uaW5nIG1ha2Ug
d2lsbCBwcm9kdWNlIHRoZSBkb2NzZXQgaW4KLSMgdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bm5pbmcg
bWFrZSBpbnN0YWxsIHdpbGwgaW5zdGFsbCB0aGUgZG9jc2V0IGluCi0jIH4vTGlicmFyeS9EZXZl
bG9wZXIvU2hhcmVkL0RvY3VtZW50YXRpb24vRG9jU2V0cyBzbyB0aGF0IFhjb2RlIHdpbGwgZmlu
ZCBpdCBhdAotIyBzdGFydHVwLiBTZWUgaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vdG9vbHMv
Y3JlYXRpbmdkb2NzZXRzd2l0aGRveHlnZW4uaHRtbAotIyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K
LSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9ET0NTRVQgICAg
ICAgID0gTk8KLQotIyBUaGlzIHRhZyBkZXRlcm1pbmVzIHRoZSBuYW1lIG9mIHRoZSBkb2NzZXQg
ZmVlZC4gQSBkb2N1bWVudGF0aW9uIGZlZWQgcHJvdmlkZXMKLSMgYW4gdW1icmVsbGEgdW5kZXIg
d2hpY2ggbXVsdGlwbGUgZG9jdW1lbnRhdGlvbiBzZXRzIGZyb20gYSBzaW5nbGUgcHJvdmlkZXIK
LSMgKHN1Y2ggYXMgYSBjb21wYW55IG9yIHByb2R1Y3Qgc3VpdGUpIGNhbiBiZSBncm91cGVkLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogRG94eWdlbiBnZW5lcmF0ZWQgZG9jcy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgot
Ci1ET0NTRVRfRkVFRE5BTUUgICAgICAgID0gIkRveHlnZW4gZ2VuZXJhdGVkIGRvY3MiCi0KLSMg
VGhpcyB0YWcgc3BlY2lmaWVzIGEgc3RyaW5nIHRoYXQgc2hvdWxkIHVuaXF1ZWx5IGlkZW50aWZ5
IHRoZSBkb2N1bWVudGF0aW9uCi0jIHNldCBidW5kbGUuIFRoaXMgc2hvdWxkIGJlIGEgcmV2ZXJz
ZSBkb21haW4tbmFtZSBzdHlsZSBzdHJpbmcsIGUuZy4KLSMgY29tLm15Y29tcGFueS5NeURvY1Nl
dC4gRG94eWdlbiB3aWxsIGFwcGVuZCAuZG9jc2V0IHRvIHRoZSBuYW1lLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHJvamVjdC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgotCi1ET0NTRVRfQlVORExF
X0lEICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAotCi0jIFRoZSBET0NTRVRfUFVCTElTSEVS
X0lEIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkK
LSMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLiBUaGlzIHNob3VsZCBiZSBhIHJldmVyc2Ug
ZG9tYWluLW5hbWUgc3R5bGUKLSMgc3RyaW5nLCBlLmcuIGNvbS5teWNvbXBhbnkuTXlEb2NTZXQu
ZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlB1Ymxp
c2hlci4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBp
cyBzZXQgdG8gWUVTLgotCi1ET0NTRVRfUFVCTElTSEVSX0lEICAgID0gb3JnLmRveHlnZW4uUHVi
bGlzaGVyCi0KLSMgVGhlIERPQ1NFVF9QVUJMSVNIRVJfTkFNRSB0YWcgaWRlbnRpZmllcyB0aGUg
ZG9jdW1lbnRhdGlvbiBwdWJsaXNoZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBQdWJsaXNo
ZXIuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NTRVQgaXMg
c2V0IHRvIFlFUy4KLQotRE9DU0VUX1BVQkxJU0hFUl9OQU1FICA9IFB1Ymxpc2hlcgotCi0jIElm
IHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gZ2Vu
ZXJhdGVzIHRocmVlCi0jIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBmaWxlczogaW5kZXguaGhwLCBp
bmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQotIyBpbmRleC5oaHAgaXMgYSBwcm9qZWN0IGZp
bGUgdGhhdCBjYW4gYmUgcmVhZCBieSBNaWNyb3NvZnQncyBIVE1MIEhlbHAgV29ya3Nob3AKLSMg
KHNlZTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNw
eD9pZD0yMTEzOCkgb24KLSMgV2luZG93cy4KLSMKLSMgVGhlIEhUTUwgSGVscCBXb3Jrc2hvcCBj
b250YWlucyBhIGNvbXBpbGVyIHRoYXQgY2FuIGNvbnZlcnQgYWxsIEhUTUwgb3V0cHV0Ci0jIGdl
bmVyYXRlZCBieSBkb3h5Z2VuIGludG8gYSBzaW5nbGUgY29tcGlsZWQgSFRNTCBmaWxlICguY2ht
KS4gQ29tcGlsZWQgSFRNTAotIyBmaWxlcyBhcmUgbm93IHVzZWQgYXMgdGhlIFdpbmRvd3MgOTgg
aGVscCBmb3JtYXQsIGFuZCB3aWxsIHJlcGxhY2UgdGhlIG9sZAotIyBXaW5kb3dzIGhlbHAgZm9y
bWF0ICguaGxwKSBvbiBhbGwgV2luZG93cyBwbGF0Zm9ybXMgaW4gdGhlIGZ1dHVyZS4gQ29tcHJl
c3NlZAotIyBIVE1MIGZpbGVzIGFsc28gY29udGFpbiBhbiBpbmRleCwgYSB0YWJsZSBvZiBjb250
ZW50cywgYW5kIHlvdSBjYW4gc2VhcmNoIGZvcgotIyB3b3JkcyBpbiB0aGUgZG9jdW1lbnRhdGlv
bi4gVGhlIEhUTUwgd29ya3Nob3AgYWxzbyBjb250YWlucyBhIHZpZXdlciBmb3IKLSMgY29tcHJl
c3NlZCBIVE1MIGZpbGVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUdF
TkVSQVRFX0hUTUxIRUxQICAgICAgPSAlSFRNTF9IRUxQJQotCi0jIFRoZSBDSE1fRklMRSB0YWcg
Y2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLmNo
bQotIyBmaWxlLiBZb3UgY2FuIGFkZCBhIHBhdGggaW4gZnJvbnQgb2YgdGhlIGZpbGUgaWYgdGhl
IHJlc3VsdCBzaG91bGQgbm90IGJlCi0jIHdyaXR0ZW4gdG8gdGhlIGh0bWwgb3V0cHV0IGRpcmVj
dG9yeS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQ
IGlzIHNldCB0byBZRVMuCi0KLUNITV9GSUxFICAgICAgICAgICAgICAgPSBqc29uY3BwLSVKU09O
Q1BQX1ZFUlNJT04lLmNobQotCi0jIFRoZSBISENfTE9DQVRJT04gdGFnIGNhbiBiZSB1c2VkIHRv
IHNwZWNpZnkgdGhlIGxvY2F0aW9uIChhYnNvbHV0ZSBwYXRoCi0jIGluY2x1ZGluZyBmaWxlIG5h
bWUpIG9mIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgKCBoaGMuZXhlKS4gSWYgbm9uLWVtcHR5Ci0j
IGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgb24gdGhlIGdl
bmVyYXRlZCBpbmRleC5oaHAuCi0jIFRoZSBmaWxlIGhhcyB0byBiZSBzcGVjaWZpZWQgd2l0aCBm
dWxsIHBhdGguCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1M
SEVMUCBpcyBzZXQgdG8gWUVTLgotCi1ISENfTE9DQVRJT04gICAgICAgICAgID0gImM6XFByb2dy
YW0gRmlsZXNcSFRNTCBIZWxwIFdvcmtzaG9wXGhoYy5leGUiCi0KLSMgVGhlIEdFTkVSQVRFX0NI
SSBmbGFnIGNvbnRyb2xzIGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdlbmVyYXRl
ZCAoCi0jIFlFUykgb3IgdGhhdCBpdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIG1hc3RlciAu
Y2htIGZpbGUgKCBOTykuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCi0K
LUdFTkVSQVRFX0NISSAgICAgICAgICAgPSBZRVMKLQotIyBUaGUgQ0hNX0lOREVYX0VOQ09ESU5H
IGlzIHVzZWQgdG8gZW5jb2RlIEh0bWxIZWxwIGluZGV4ICggaGhrKSwgY29udGVudCAoIGhoYykK
LSMgYW5kIHByb2plY3QgZmlsZSBjb250ZW50LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotQ0hNX0lOREVYX0VOQ09E
SU5HICAgICA9Ci0KLSMgVGhlIEJJTkFSWV9UT0MgZmxhZyBjb250cm9scyB3aGV0aGVyIGEgYmlu
YXJ5IHRhYmxlIG9mIGNvbnRlbnRzIGlzIGdlbmVyYXRlZCAoCi0jIFlFUykgb3IgYSBub3JtYWwg
dGFibGUgb2YgY29udGVudHMgKCBOTykgaW4gdGhlIC5jaG0gZmlsZS4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVf
SFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotQklOQVJZX1RPQyAgICAgICAgICAgICA9IFlFUwot
Ci0jIFRoZSBUT0NfRVhQQU5EIGZsYWcgY2FuIGJlIHNldCB0byBZRVMgdG8gYWRkIGV4dHJhIGl0
ZW1zIGZvciBncm91cCBtZW1iZXJzIHRvCi0jIHRoZSB0YWJsZSBvZiBjb250ZW50cyBvZiB0aGUg
SFRNTCBoZWxwIGRvY3VtZW50YXRpb24gYW5kIHRvIHRoZSB0cmVlIHZpZXcuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVS
QVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCi0KLVRPQ19FWFBBTkQgICAgICAgICAgICAgPSBZ
RVMKLQotIyBJZiB0aGUgR0VORVJBVEVfUUhQIHRhZyBpcyBzZXQgdG8gWUVTIGFuZCBib3RoIFFI
UF9OQU1FU1BBQ0UgYW5kCi0jIFFIUF9WSVJUVUFMX0ZPTERFUiBhcmUgc2V0LCBhbiBhZGRpdGlv
bmFsIGluZGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgdGhhdAotIyBjYW4gYmUgdXNlZCBhcyBp
bnB1dCBmb3IgUXQncyBxaGVscGdlbmVyYXRvciB0byBnZW5lcmF0ZSBhIFF0IENvbXByZXNzZWQg
SGVscAotIyAoLnFjaCkgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotR0VORVJBVEVfUUhQICAgICAgICAgICA9
IE5PCi0KLSMgSWYgdGhlIFFIR19MT0NBVElPTiB0YWcgaXMgc3BlY2lmaWVkLCB0aGUgUUNIX0ZJ
TEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkKLSMgdGhlIGZpbGUgbmFtZSBvZiB0aGUgcmVz
dWx0aW5nIC5xY2ggZmlsZS4gVGhlIHBhdGggc3BlY2lmaWVkIGlzIHJlbGF0aXZlIHRvCi0jIHRo
ZSBIVE1MIG91dHB1dCBmb2xkZXIuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUNIX0ZJTEUgICAgICAgICAgICAgICA9Ci0K
LSMgVGhlIFFIUF9OQU1FU1BBQ0UgdGFnIHNwZWNpZmllcyB0aGUgbmFtZXNwYWNlIHRvIHVzZSB3
aGVuIGdlbmVyYXRpbmcgUXQgSGVscAotIyBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3Jt
YXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBOYW1lc3BhY2UKLSMgKHNlZTogaHR0
cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI25hbWVzcGFj
ZSkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0LgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0K
LVFIUF9OQU1FU1BBQ0UgICAgICAgICAgPQotCi0jIFRoZSBRSFBfVklSVFVBTF9GT0xERVIgdGFn
IHNwZWNpZmllcyB0aGUgbmFtZXNwYWNlIHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgUXQKLSMgSGVs
cCBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxw
IFByb2plY3QgLyBWaXJ0dWFsCi0jIEZvbGRlcnMgKHNlZTogaHR0cDovL3F0LXByb2plY3Qub3Jn
L2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI3ZpcnR1YWwtCi0jIGZvbGRlcnMpLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogZG9jLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0KLVFIUF9WSVJUVUFMX0ZPTERFUiAgICAg
PSBkb2MKLQotIyBJZiB0aGUgUUhQX0NVU1RfRklMVEVSX05BTUUgdGFnIGlzIHNldCwgaXQgc3Bl
Y2lmaWVzIHRoZSBuYW1lIG9mIGEgY3VzdG9tCi0jIGZpbHRlciB0byBhZGQuIEZvciBtb3JlIGlu
Zm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gQ3VzdG9tCi0jIEZpbHRlcnMg
KHNlZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1s
I2N1c3RvbS0KLSMgZmlsdGVycykuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhQX0NVU1RfRklMVEVSX05BTUUgICA9Ci0K
LSMgVGhlIFFIUF9DVVNUX0ZJTFRFUl9BVFRSUyB0YWcgc3BlY2lmaWVzIHRoZSBsaXN0IG9mIHRo
ZSBhdHRyaWJ1dGVzIG9mIHRoZQotIyBjdXN0b20gZmlsdGVyIHRvIGFkZC4gRm9yIG1vcmUgaW5m
b3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBDdXN0b20KLSMgRmlsdGVycyAo
c2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwj
Y3VzdG9tLQotIyBmaWx0ZXJzKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdF
TkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgotCi1RSFBfQ1VTVF9GSUxURVJfQVRUUlMgID0KLQot
IyBUaGUgUUhQX1NFQ1RfRklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qgb2YgdGhl
IGF0dHJpYnV0ZXMgdGhpcwotIyBwcm9qZWN0J3MgZmlsdGVyIHNlY3Rpb24gbWF0Y2hlcy4gUXQg
SGVscCBQcm9qZWN0IC8gRmlsdGVyIEF0dHJpYnV0ZXMgKHNlZToKLSMgaHR0cDovL3F0LXByb2pl
Y3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2ZpbHRlci1hdHRyaWJ1dGVzKS4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8g
WUVTLgotCi1RSFBfU0VDVF9GSUxURVJfQVRUUlMgID0KLQotIyBUaGUgUUhHX0xPQ0FUSU9OIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBRdCdzCi0jIHFoZWxwZ2Vu
ZXJhdG9yLiBJZiBub24tZW1wdHkgZG94eWdlbiB3aWxsIHRyeSB0byBydW4gcWhlbHBnZW5lcmF0
b3Igb24gdGhlCi0jIGdlbmVyYXRlZCAucWhwIGZpbGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhHX0xPQ0FUSU9OICAg
ICAgICAgICA9Ci0KLSMgSWYgdGhlIEdFTkVSQVRFX0VDTElQU0VIRUxQIHRhZyBpcyBzZXQgdG8g
WUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKLSMgZ2VuZXJhdGVkLCB0b2dldGhl
ciB3aXRoIHRoZSBIVE1MIGZpbGVzLCB0aGV5IGZvcm0gYW4gRWNsaXBzZSBoZWxwIHBsdWdpbi4g
VG8KLSMgaW5zdGFsbCB0aGlzIHBsdWdpbiBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdW5kZXIgdGhl
IGhlbHAgY29udGVudHMgbWVudSBpbgotIyBFY2xpcHNlLCB0aGUgY29udGVudHMgb2YgdGhlIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBIVE1MIGFuZCBYTUwgZmlsZXMgbmVlZHMKLSMgdG8gYmUg
Y29waWVkIGludG8gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IG9mIGVjbGlwc2UuIFRoZSBuYW1lIG9m
IHRoZSBkaXJlY3RvcnkKLSMgd2l0aGluIHRoZSBwbHVnaW5zIGRpcmVjdG9yeSBzaG91bGQgYmUg
dGhlIHNhbWUgYXMgdGhlIEVDTElQU0VfRE9DX0lEIHZhbHVlLgotIyBBZnRlciBjb3B5aW5nIEVj
bGlwc2UgbmVlZHMgdG8gYmUgcmVzdGFydGVkIGJlZm9yZSB0aGUgaGVscCBhcHBlYXJzLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh
ZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUdFTkVSQVRFX0VDTElQU0VIRUxQICAg
PSBOTwotCi0jIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBFY2xpcHNlIGhlbHAgcGx1Z2lu
LiBXaGVuIGluc3RhbGxpbmcgdGhlIHBsdWdpbgotIyB0aGUgZGlyZWN0b3J5IG5hbWUgY29udGFp
bmluZyB0aGUgSFRNTCBhbmQgWE1MIGZpbGVzIHNob3VsZCBhbHNvIGhhdmUgdGhpcwotIyBuYW1l
LiBFYWNoIGRvY3VtZW50YXRpb24gc2V0IHNob3VsZCBoYXZlIGl0cyBvd24gaWRlbnRpZmllci4K
LSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9FQ0xJUFNFSEVMUCBpcyBzZXQgdG8gWUVT
LgotCi1FQ0xJUFNFX0RPQ19JRCAgICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAotCi0jIElm
IHlvdSB3YW50IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBsYXlvdXQgb2YgdGhlIGdlbmVyYXRlZCBI
VE1MIHBhZ2VzIGl0IG1pZ2h0Ci0jIGJlIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHRoZSBpbmRleCBh
bmQgcmVwbGFjZSBpdCB3aXRoIHlvdXIgb3duLiBUaGUKLSMgRElTQUJMRV9JTkRFWCB0YWcgY2Fu
IGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIGNvbmRlbnNlZCBpbmRleCAodGFicykgYXQgdG9w
Ci0jIG9mIGVhY2ggSFRNTCBwYWdlLiBBIHZhbHVlIG9mIE5PIGVuYWJsZXMgdGhlIGluZGV4IGFu
ZCB0aGUgdmFsdWUgWUVTIGRpc2FibGVzCi0jIGl0LiBTaW5jZSB0aGUgdGFicyBpbiB0aGUgaW5k
ZXggY29udGFpbiB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgbmF2aWdhdGlvbgotIyB0cmVl
LCB5b3UgY2FuIHNldCB0aGlzIG9wdGlvbiB0byBZRVMgaWYgeW91IGFsc28gc2V0IEdFTkVSQVRF
X1RSRUVWSUVXIHRvIFlFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1E
SVNBQkxFX0lOREVYICAgICAgICAgID0gTk8KLQotIyBUaGUgR0VORVJBVEVfVFJFRVZJRVcgdGFn
IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGEgdHJlZS1saWtlIGluZGV4Ci0jIHN0cnVjdHVy
ZSBzaG91bGQgYmUgZ2VuZXJhdGVkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIGluZm9ybWF0aW9u
LiBJZiB0aGUgdGFnCi0jIHZhbHVlIGlzIHNldCB0byBZRVMsIGEgc2lkZSBwYW5lbCB3aWxsIGJl
IGdlbmVyYXRlZCBjb250YWluaW5nIGEgdHJlZS1saWtlCi0jIGluZGV4IHN0cnVjdHVyZSAoanVz
dCBsaWtlIHRoZSBvbmUgdGhhdCBpcyBnZW5lcmF0ZWQgZm9yIEhUTUwgSGVscCkuIEZvciB0aGlz
Ci0jIHRvIHdvcmsgYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgSmF2YVNjcmlwdCwgREhUTUwsIENT
UyBhbmQgZnJhbWVzIGlzIHJlcXVpcmVkCi0jIChpLmUuIGFueSBtb2Rlcm4gYnJvd3NlcikuIFdp
bmRvd3MgdXNlcnMgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgdGhlCi0jIEhUTUwgaGVs
cCBmZWF0dXJlLiBWaWEgY3VzdG9tIHN0eWxlc2hlZXRzIChzZWUgSFRNTF9FWFRSQV9TVFlMRVNI
RUVUKSBvbmUgY2FuCi0jIGZ1cnRoZXIgZmluZS10dW5lIHRoZSBsb29rIG9mIHRoZSBpbmRleC4g
QXMgYW4gZXhhbXBsZSwgdGhlIGRlZmF1bHQgc3R5bGUKLSMgc2hlZXQgZ2VuZXJhdGVkIGJ5IGRv
eHlnZW4gaGFzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gcHV0IGFuIGltYWdlIGF0Ci0j
IHRoZSByb290IG9mIHRoZSB0cmVlIGluc3RlYWQgb2YgdGhlIFBST0pFQ1RfTkFNRS4gU2luY2Ug
dGhlIHRyZWUgYmFzaWNhbGx5IGhhcwotIyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgdGFi
IGluZGV4LCB5b3UgY291bGQgY29uc2lkZXIgc2V0dGluZwotIyBESVNBQkxFX0lOREVYIHRvIFlF
UyB3aGVuIGVuYWJsaW5nIHRoaXMgb3B0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0
byBZRVMuCi0KLUdFTkVSQVRFX1RSRUVWSUVXICAgICAgPSBOTwotCi0jIFRoZSBFTlVNX1ZBTFVF
U19QRVJfTElORSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2YgZW51bSB2YWx1
ZXMgdGhhdAotIyBkb3h5Z2VuIHdpbGwgZ3JvdXAgb24gb25lIGxpbmUgaW4gdGhlIGdlbmVyYXRl
ZCBIVE1MIGRvY3VtZW50YXRpb24uCi0jCi0jIE5vdGUgdGhhdCBhIHZhbHVlIG9mIDAgd2lsbCBj
b21wbGV0ZWx5IHN1cHByZXNzIHRoZSBlbnVtIHZhbHVlcyBmcm9tIGFwcGVhcmluZwotIyBpbiB0
aGUgb3ZlcnZpZXcgc2VjdGlvbi4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTog
MjAsIGRlZmF1bHQgdmFsdWU6IDQuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUVOVU1fVkFMVUVTX1BFUl9MSU5FICAgPSA0
Ci0KLSMgSWYgdGhlIHRyZWV2aWV3IGlzIGVuYWJsZWQgKHNlZSBHRU5FUkFURV9UUkVFVklFVykg
dGhlbiB0aGlzIHRhZyBjYW4gYmUgdXNlZAotIyB0byBzZXQgdGhlIGluaXRpYWwgd2lkdGggKGlu
IHBpeGVscykgb2YgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSB0cmVlIGlzIHNob3duLgotIyBNaW5p
bXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxNTAwLCBkZWZhdWx0IHZhbHVlOiAyNTAuCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZ
RVMuCi0KLVRSRUVWSUVXX1dJRFRIICAgICAgICAgPSAyNTAKLQotIyBXaGVuIHRoZSBFWFRfTElO
S1NfSU5fV0lORE9XIG9wdGlvbiBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBvcGVuIGxpbmtz
IHRvCi0jIGV4dGVybmFsIHN5bWJvbHMgaW1wb3J0ZWQgdmlhIHRhZyBmaWxlcyBpbiBhIHNlcGFy
YXRlIHdpbmRvdy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1FWFRfTElO
S1NfSU5fV0lORE9XICAgID0gTk8KLQotIyBVc2UgdGhpcyB0YWcgdG8gY2hhbmdlIHRoZSBmb250
IHNpemUgb2YgTGFUZVggZm9ybXVsYXMgaW5jbHVkZWQgYXMgaW1hZ2VzIGluCi0jIHRoZSBIVE1M
IGRvY3VtZW50YXRpb24uIFdoZW4geW91IGNoYW5nZSB0aGUgZm9udCBzaXplIGFmdGVyIGEgc3Vj
Y2Vzc2Z1bAotIyBkb3h5Z2VuIHJ1biB5b3UgbmVlZCB0byBtYW51YWxseSByZW1vdmUgYW55IGZv
cm1fKi5wbmcgaW1hZ2VzIGZyb20gdGhlIEhUTUwKLSMgb3V0cHV0IGRpcmVjdG9yeSB0byBmb3Jj
ZSB0aGVtIHRvIGJlIHJlZ2VuZXJhdGVkLgotIyBNaW5pbXVtIHZhbHVlOiA4LCBtYXhpbXVtIHZh
bHVlOiA1MCwgZGVmYXVsdCB2YWx1ZTogMTAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUZPUk1VTEFfRk9OVFNJWkUgICAg
ICAgPSAxMAotCi0jIFVzZSB0aGUgRk9STVVMQV9UUkFOUEFSRU5UIHRhZyB0byBkZXRlcm1pbmUg
d2hldGhlciBvciBub3QgdGhlIGltYWdlcwotIyBnZW5lcmF0ZWQgZm9yIGZvcm11bGFzIGFyZSB0
cmFuc3BhcmVudCBQTkdzLiBUcmFuc3BhcmVudCBQTkdzIGFyZSBub3QKLSMgc3VwcG9ydGVkIHBy
b3Blcmx5IGZvciBJRSA2LjAsIGJ1dCBhcmUgc3VwcG9ydGVkIG9uIGFsbCBtb2Rlcm4gYnJvd3Nl
cnMuCi0jCi0jIE5vdGUgdGhhdCB3aGVuIGNoYW5naW5nIHRoaXMgb3B0aW9uIHlvdSBuZWVkIHRv
IGRlbGV0ZSBhbnkgZm9ybV8qLnBuZyBmaWxlcyBpbgotIyB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0
b3J5IGJlZm9yZSB0aGUgY2hhbmdlcyBoYXZlIGVmZmVjdC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwg
aXMgc2V0IHRvIFlFUy4KLQotRk9STVVMQV9UUkFOU1BBUkVOVCAgICA9IFlFUwotCi0jIEVuYWJs
ZSB0aGUgVVNFX01BVEhKQVggb3B0aW9uIHRvIHJlbmRlciBMYVRlWCBmb3JtdWxhcyB1c2luZyBN
YXRoSmF4IChzZWUKLSMgaHR0cDovL3d3dy5tYXRoamF4Lm9yZykgd2hpY2ggdXNlcyBjbGllbnQg
c2lkZSBKYXZhU2NyaXB0IGZvciB0aGUgcmVuZGVyaW5nCi0jIGluc3RlYWQgb2YgdXNpbmcgcHJl
cmVuZGVyZWQgYml0bWFwcy4gVXNlIHRoaXMgaWYgeW91IGRvIG5vdCBoYXZlIExhVGVYCi0jIGlu
c3RhbGxlZCBvciBpZiB5b3Ugd2FudCB0byBmb3JtdWxhcyBsb29rIHByZXR0aWVyIGluIHRoZSBI
VE1MIG91dHB1dC4gV2hlbgotIyBlbmFibGVkIHlvdSBtYXkgYWxzbyBuZWVkIHRvIGluc3RhbGwg
TWF0aEpheCBzZXBhcmF0ZWx5IGFuZCBjb25maWd1cmUgdGhlIHBhdGgKLSMgdG8gaXQgdXNpbmcg
dGhlIE1BVEhKQVhfUkVMUEFUSCBvcHRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRv
IFlFUy4KLQotVVNFX01BVEhKQVggICAgICAgICAgICA9IE5PCi0KLSMgV2hlbiBNYXRoSmF4IGlz
IGVuYWJsZWQgeW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdCB0byBiZSB1c2Vk
IGZvcgotIyB0aGUgTWF0aEpheCBvdXRwdXQuIFNlZSB0aGUgTWF0aEpheCBzaXRlIChzZWU6Ci0j
IGh0dHA6Ly9kb2NzLm1hdGhqYXgub3JnL2VuL2xhdGVzdC9vdXRwdXQuaHRtbCkgZm9yIG1vcmUg
ZGV0YWlscy4KLSMgUG9zc2libGUgdmFsdWVzIGFyZTogSFRNTC1DU1MgKHdoaWNoIGlzIHNsb3dl
ciwgYnV0IGhhcyB0aGUgYmVzdAotIyBjb21wYXRpYmlsaXR5KSwgTmF0aXZlTU1MIChpLmUuIE1h
dGhNTCkgYW5kIFNWRy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IEhUTUwtQ1NTLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4KLQot
TUFUSEpBWF9GT1JNQVQgICAgICAgICA9IEhUTUwtQ1NTCi0KLSMgV2hlbiBNYXRoSmF4IGlzIGVu
YWJsZWQgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gcmVsYXRpdmUgdG8gdGhlIEhU
TUwKLSMgb3V0cHV0IGRpcmVjdG9yeSB1c2luZyB0aGUgTUFUSEpBWF9SRUxQQVRIIG9wdGlvbi4g
VGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQotIyBzaG91bGQgY29udGFpbiB0aGUgTWF0aEpheC5q
cyBzY3JpcHQuIEZvciBpbnN0YW5jZSwgaWYgdGhlIG1hdGhqYXggZGlyZWN0b3J5Ci0jIGlzIGxv
Y2F0ZWQgYXQgdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeSwgdGhl
bgotIyBNQVRISkFYX1JFTFBBVEggc2hvdWxkIGJlIC4uL21hdGhqYXguIFRoZSBkZWZhdWx0IHZh
bHVlIHBvaW50cyB0byB0aGUgTWF0aEpheAotIyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgc28g
eW91IGNhbiBxdWlja2x5IHNlZSB0aGUgcmVzdWx0IHdpdGhvdXQgaW5zdGFsbGluZwotIyBNYXRo
SmF4LiBIb3dldmVyLCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGEgbG9j
YWwgY29weSBvZgotIyBNYXRoSmF4IGZyb20gaHR0cDovL3d3dy5tYXRoamF4Lm9yZyBiZWZvcmUg
ZGVwbG95bWVudC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGh0dHA6Ly9jZG4ubWF0aGpheC5v
cmcvbWF0aGpheC9sYXRlc3QuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0Vf
TUFUSEpBWCBpcyBzZXQgdG8gWUVTLgotCi1NQVRISkFYX1JFTFBBVEggICAgICAgID0gaHR0cDov
L2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdAotCi0jIFRoZSBNQVRISkFYX0VYVEVOU0lP
TlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgTWF0aEpheAotIyBleHRl
bnNpb24gbmFtZXMgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBkdXJpbmcgTWF0aEpheCByZW5kZXJp
bmcuIEZvciBleGFtcGxlCi0jIE1BVEhKQVhfRVhURU5TSU9OUyA9IFRlWC9BTVNtYXRoIFRlWC9B
TVNzeW1ib2xzCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0VfTUFUSEpBWCBp
cyBzZXQgdG8gWUVTLgotCi1NQVRISkFYX0VYVEVOU0lPTlMgICAgID0KLQotIyBUaGUgTUFUSEpB
WF9DT0RFRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgd2l0aCBqYXZhc2Ny
aXB0IHBpZWNlcwotIyBvZiBjb2RlIHRoYXQgd2lsbCBiZSB1c2VkIG9uIHN0YXJ0dXAgb2YgdGhl
IE1hdGhKYXggY29kZS4gU2VlIHRoZSBNYXRoSmF4IHNpdGUKLSMgKHNlZTogaHR0cDovL2RvY3Mu
bWF0aGpheC5vcmcvZW4vbGF0ZXN0L291dHB1dC5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLiBGb3Ig
YW4KLSMgZXhhbXBsZSBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBVU0VfTUFUSEpBWCBpcyBzZXQgdG8gWUVTLgotCi1NQVRISkFYX0NPREVG
SUxFICAgICAgID0KLQotIyBXaGVuIHRoZSBTRUFSQ0hFTkdJTkUgdGFnIGlzIGVuYWJsZWQgZG94
eWdlbiB3aWxsIGdlbmVyYXRlIGEgc2VhcmNoIGJveCBmb3IKLSMgdGhlIEhUTUwgb3V0cHV0LiBU
aGUgdW5kZXJseWluZyBzZWFyY2ggZW5naW5lIHVzZXMgamF2YXNjcmlwdCBhbmQgREhUTUwgYW5k
Ci0jIHNob3VsZCB3b3JrIG9uIGFueSBtb2Rlcm4gYnJvd3Nlci4gTm90ZSB0aGF0IHdoZW4gdXNp
bmcgSFRNTCBoZWxwCi0jIChHRU5FUkFURV9IVE1MSEVMUCksIFF0IGhlbHAgKEdFTkVSQVRFX1FI
UCksIG9yIGRvY3NldHMgKEdFTkVSQVRFX0RPQ1NFVCkKLSMgdGhlcmUgaXMgYWxyZWFkeSBhIHNl
YXJjaCBmdW5jdGlvbiBzbyB0aGlzIG9uZSBzaG91bGQgdHlwaWNhbGx5IGJlIGRpc2FibGVkLgot
IyBGb3IgbGFyZ2UgcHJvamVjdHMgdGhlIGphdmFzY3JpcHQgYmFzZWQgc2VhcmNoIGVuZ2luZSBj
YW4gYmUgc2xvdywgdGhlbgotIyBlbmFibGluZyBTRVJWRVJfQkFTRURfU0VBUkNIIG1heSBwcm92
aWRlIGEgYmV0dGVyIHNvbHV0aW9uLiBJdCBpcyBwb3NzaWJsZSB0bwotIyBzZWFyY2ggdXNpbmcg
dGhlIGtleWJvYXJkOyB0byBqdW1wIHRvIHRoZSBzZWFyY2ggYm94IHVzZSA8YWNjZXNzIGtleT4g
KyBTCi0jICh3aGF0IHRoZSA8YWNjZXNzIGtleT4gaXMgZGVwZW5kcyBvbiB0aGUgT1MgYW5kIGJy
b3dzZXIsIGJ1dCBpdCBpcyB0eXBpY2FsbHkKLSMgPENUUkw+LCA8QUxUPi88b3B0aW9uPiwgb3Ig
Ym90aCkuIEluc2lkZSB0aGUgc2VhcmNoIGJveCB1c2UgdGhlIDxjdXJzb3IgZG93bgotIyBrZXk+
IHRvIGp1bXAgaW50byB0aGUgc2VhcmNoIHJlc3VsdHMgd2luZG93LCB0aGUgcmVzdWx0cyBjYW4g
YmUgbmF2aWdhdGVkCi0jIHVzaW5nIHRoZSA8Y3Vyc29yIGtleXM+LiBQcmVzcyA8RW50ZXI+IHRv
IHNlbGVjdCBhbiBpdGVtIG9yIDxlc2NhcGU+IHRvIGNhbmNlbAotIyB0aGUgc2VhcmNoLiBUaGUg
ZmlsdGVyIG9wdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHdoZW4gdGhlIGN1cnNvciBpcyBpbnNpZGUg
dGhlCi0jIHNlYXJjaCBib3ggYnkgcHJlc3NpbmcgPFNoaWZ0Pis8Y3Vyc29yIGRvd24+LiBBbHNv
IGhlcmUgdXNlIHRoZSA8Y3Vyc29yIGtleXM+Ci0jIHRvIHNlbGVjdCBhIGZpbHRlciBhbmQgPEVu
dGVyPiBvciA8ZXNjYXBlPiB0byBhY3RpdmF0ZSBvciBjYW5jZWwgdGhlIGZpbHRlcgotIyBvcHRp
b24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLVNFQVJDSEVOR0lORSAg
ICAgICAgICAgPSBOTwotCi0jIFdoZW4gdGhlIFNFUlZFUl9CQVNFRF9TRUFSQ0ggdGFnIGlzIGVu
YWJsZWQgdGhlIHNlYXJjaCBlbmdpbmUgd2lsbCBiZQotIyBpbXBsZW1lbnRlZCB1c2luZyBhIHdl
YiBzZXJ2ZXIgaW5zdGVhZCBvZiBhIHdlYiBjbGllbnQgdXNpbmcgSmF2YVNjcmlwdC4gVGhlcmUK
LSMgYXJlIHR3byBmbGF2b3VycyBvZiB3ZWIgc2VydmVyIGJhc2VkIHNlYXJjaGluZyBkZXBlbmRp
bmcgb24gdGhlCi0jIEVYVEVSTkFMX1NFQVJDSCBzZXR0aW5nLiBXaGVuIGRpc2FibGVkLCBkb3h5
Z2VuIHdpbGwgZ2VuZXJhdGUgYSBQSFAgc2NyaXB0IGZvcgotIyBzZWFyY2hpbmcgYW5kIGFuIGlu
ZGV4IGZpbGUgdXNlZCBieSB0aGUgc2NyaXB0LiBXaGVuIEVYVEVSTkFMX1NFQVJDSCBpcwotIyBl
bmFibGVkIHRoZSBpbmRleGluZyBhbmQgc2VhcmNoaW5nIG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5
IGV4dGVybmFsIHRvb2xzLiBTZWUKLSMgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5nIGFu
ZCBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlF
Uy4KLQotU0VSVkVSX0JBU0VEX1NFQVJDSCAgICA9IE5PCi0KLSMgV2hlbiBFWFRFUk5BTF9TRUFS
Q0ggdGFnIGlzIGVuYWJsZWQgZG94eWdlbiB3aWxsIG5vIGxvbmdlciBnZW5lcmF0ZSB0aGUgUEhQ
Ci0jIHNjcmlwdCBmb3Igc2VhcmNoaW5nLiBJbnN0ZWFkIHRoZSBzZWFyY2ggcmVzdWx0cyBhcmUg
d3JpdHRlbiB0byBhbiBYTUwgZmlsZQotIyB3aGljaCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkg
YW4gZXh0ZXJuYWwgaW5kZXhlci4gRG94eWdlbiB3aWxsIGludm9rZSBhbgotIyBleHRlcm5hbCBz
ZWFyY2ggZW5naW5lIHBvaW50ZWQgdG8gYnkgdGhlIFNFQVJDSEVOR0lORV9VUkwgb3B0aW9uIHRv
IG9idGFpbiB0aGUKLSMgc2VhcmNoIHJlc3VsdHMuCi0jCi0jIERveHlnZW4gc2hpcHMgd2l0aCBh
biBleGFtcGxlIGluZGV4ZXIgKCBkb3h5aW5kZXhlcikgYW5kIHNlYXJjaCBlbmdpbmUKLSMgKGRv
eHlzZWFyY2guY2dpKSB3aGljaCBhcmUgYmFzZWQgb24gdGhlIG9wZW4gc291cmNlIHNlYXJjaCBl
bmdpbmUgbGlicmFyeQotIyBYYXBpYW4gKHNlZTogaHR0cDovL3hhcGlhbi5vcmcvKS4KLSMKLSMg
U2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGluZyBhbmQgU2VhcmNoaW5nIiBmb3IgZGV0
YWlscy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0KLUVYVEVSTkFMX1NFQVJD
SCAgICAgICAgPSBOTwotCi0jIFRoZSBTRUFSQ0hFTkdJTkVfVVJMIHNob3VsZCBwb2ludCB0byBh
IHNlYXJjaCBlbmdpbmUgaG9zdGVkIGJ5IGEgd2ViIHNlcnZlcgotIyB3aGljaCB3aWxsIHJldHVy
biB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiBFWFRFUk5BTF9TRUFSQ0ggaXMgZW5hYmxlZC4KLSMK
LSMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoIGRveHlpbmRleGVyKSBh
bmQgc2VhcmNoIGVuZ2luZQotIyAoZG94eXNlYXJjaC5jZ2kpIHdoaWNoIGFyZSBiYXNlZCBvbiB0
aGUgb3BlbiBzb3VyY2Ugc2VhcmNoIGVuZ2luZSBsaWJyYXJ5Ci0jIFhhcGlhbiAoc2VlOiBodHRw
Oi8veGFwaWFuLm9yZy8pLiBTZWUgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5nIGFuZAot
IyBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0KLVNFQVJDSEVOR0lORV9VUkwgICAgICAg
PQotCi0jIFdoZW4gU0VSVkVSX0JBU0VEX1NFQVJDSCBhbmQgRVhURVJOQUxfU0VBUkNIIGFyZSBi
b3RoIGVuYWJsZWQgdGhlIHVuaW5kZXhlZAotIyBzZWFyY2ggZGF0YSBpcyB3cml0dGVuIHRvIGEg
ZmlsZSBmb3IgaW5kZXhpbmcgYnkgYW4gZXh0ZXJuYWwgdG9vbC4gV2l0aCB0aGUKLSMgU0VBUkNI
REFUQV9GSUxFIHRhZyB0aGUgbmFtZSBvZiB0aGlzIGZpbGUgY2FuIGJlIHNwZWNpZmllZC4KLSMg
VGhlIGRlZmF1bHQgZmlsZSBpczogc2VhcmNoZGF0YS54bWwuCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KLQotU0VBUkNIREFUQV9G
SUxFICAgICAgICA9IHNlYXJjaGRhdGEueG1sCi0KLSMgV2hlbiBTRVJWRVJfQkFTRURfU0VBUkNI
IGFuZCBFWFRFUk5BTF9TRUFSQ0ggYXJlIGJvdGggZW5hYmxlZCB0aGUKLSMgRVhURVJOQUxfU0VB
UkNIX0lEIHRhZyBjYW4gYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyIGZvciB0aGUgcHJvamVjdC4g
VGhpcyBpcwotIyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBFWFRSQV9TRUFSQ0hfTUFQUElO
R1MgdG8gc2VhcmNoIHRocm91Z2ggbXVsdGlwbGUKLSMgcHJvamVjdHMgYW5kIHJlZGlyZWN0IHRo
ZSByZXN1bHRzIGJhY2sgdG8gdGhlIHJpZ2h0IHByb2plY3QuCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KLQotRVhURVJOQUxfU0VB
UkNIX0lEICAgICA9Ci0KLSMgVGhlIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyB0YWcgY2FuIGJlIHVz
ZWQgdG8gZW5hYmxlIHNlYXJjaGluZyB0aHJvdWdoIGRveHlnZW4KLSMgcHJvamVjdHMgb3RoZXIg
dGhhbiB0aGUgb25lIGRlZmluZWQgYnkgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGF0
IGFyZQotIyBhbGwgYWRkZWQgdG8gdGhlIHNhbWUgZXh0ZXJuYWwgc2VhcmNoIGluZGV4LiBFYWNo
IHByb2plY3QgbmVlZHMgdG8gaGF2ZSBhCi0jIHVuaXF1ZSBpZCBzZXQgdmlhIEVYVEVSTkFMX1NF
QVJDSF9JRC4gVGhlIHNlYXJjaCBtYXBwaW5nIHRoZW4gbWFwcyB0aGUgaWQgb2YKLSMgdG8gYSBy
ZWxhdGl2ZSBsb2NhdGlvbiB3aGVyZSB0aGUgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQuIFRo
ZSBmb3JtYXQgaXM6Ci0jIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyA9IHRhZ25hbWUxPWxvYzEgdGFn
bmFtZTI9bG9jMiAuLi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVO
R0lORSBpcyBzZXQgdG8gWUVTLgotCi1FWFRSQV9TRUFSQ0hfTUFQUElOR1MgID0KLQotIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgTGFU
ZVggb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0xBVEVY
IHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBMYVRlWCBvdXRwdXQuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUdFTkVSQVRFX0xBVEVYICAgICAgICAgPSBO
TwotCi0jIFRoZSBMQVRFWF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUg
TGFUZVggZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQotIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQg
dGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKLSMg
aXQuCi0jIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogbGF0ZXguCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9P
VVRQVVQgICAgICAgICAgID0gbGF0ZXgKLQotIyBUaGUgTEFURVhfQ01EX05BTUUgdGFnIGNhbiBi
ZSB1c2VkIHRvIHNwZWNpZnkgdGhlIExhVGVYIGNvbW1hbmQgbmFtZSB0byBiZQotIyBpbnZva2Vk
LgotIwotIyBOb3RlIHRoYXQgd2hlbiBlbmFibGluZyBVU0VfUERGTEFURVggdGhpcyBvcHRpb24g
aXMgb25seSB1c2VkIGZvciBnZW5lcmF0aW5nCi0jIGJpdG1hcHMgZm9yIGZvcm11bGFzIGluIHRo
ZSBIVE1MIG91dHB1dCwgYnV0IG5vdCBpbiB0aGUgTWFrZWZpbGUgdGhhdCBpcwotIyB3cml0dGVu
IHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LgotIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBsYXRleC4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0
byBZRVMuCi0KLUxBVEVYX0NNRF9OQU1FICAgICAgICAgPSBsYXRleAotCi0jIFRoZSBNQUtFSU5E
RVhfQ01EX05BTUUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbW1hbmQgbmFtZSB0
byBnZW5lcmF0ZQotIyBpbmRleCBmb3IgTGFUZVguCi0jIFRoZSBkZWZhdWx0IGZpbGUgaXM6IG1h
a2VpbmRleC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVY
IGlzIHNldCB0byBZRVMuCi0KLU1BS0VJTkRFWF9DTURfTkFNRSAgICAgPSBtYWtlaW5kZXgKLQot
IyBJZiB0aGUgQ09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRl
cyBtb3JlIGNvbXBhY3QgTGFUZVgKLSMgZG9jdW1lbnRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9y
IHNtYWxsIHByb2plY3RzIGFuZCBtYXkgaGVscCB0byBzYXZlIHNvbWUKLSMgdHJlZXMgaW4gZ2Vu
ZXJhbC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotQ09NUEFDVF9MQVRF
WCAgICAgICAgICA9IE5PCi0KLSMgVGhlIFBBUEVSX1RZUEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNl
dCB0aGUgcGFwZXIgdHlwZSB0aGF0IGlzIHVzZWQgYnkgdGhlCi0jIHByaW50ZXIuCi0jIFBvc3Np
YmxlIHZhbHVlcyBhcmU6IGE0ICgyMTAgeCAyOTcgbW0pLCBsZXR0ZXIgKDguNSB4IDExIGluY2hl
cyksIGxlZ2FsICg4LjUgeAotIyAxNCBpbmNoZXMpIGFuZCBleGVjdXRpdmUgKDcuMjUgeCAxMC41
IGluY2hlcykuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBhNC4KLSMgVGhpcyB0YWcgcmVxdWly
ZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLVBBUEVSX1RZ
UEUgICAgICAgICAgICAgPSBhNHdpZGUKLQotIyBUaGUgRVhUUkFfUEFDS0FHRVMgdGFnIGNhbiBi
ZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgTGFUZVggcGFja2FnZSBuYW1lcwotIyB0aGF0
IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgTGFUZVggb3V0cHV0LiBUbyBnZXQgdGhlIHRpbWVz
IGZvbnQgZm9yCi0jIGluc3RhbmNlIHlvdSBjYW4gc3BlY2lmeQotIyBFWFRSQV9QQUNLQUdFUz10
aW1lcwotIyBJZiBsZWZ0IGJsYW5rIG5vIGV4dHJhIHBhY2thZ2VzIHdpbGwgYmUgaW5jbHVkZWQu
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQg
dG8gWUVTLgotCi1FWFRSQV9QQUNLQUdFUyAgICAgICAgID0KLQotIyBUaGUgTEFURVhfSEVBREVS
IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgTGFUZVggaGVhZGVyIGZvciB0
aGUKLSMgZ2VuZXJhdGVkIExhVGVYIGRvY3VtZW50LiBUaGUgaGVhZGVyIHNob3VsZCBjb250YWlu
IGV2ZXJ5dGhpbmcgdW50aWwgdGhlIGZpcnN0Ci0jIGNoYXB0ZXIuIElmIGl0IGlzIGxlZnQgYmxh
bmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgc3RhbmRhcmQgaGVhZGVyLiBTZWUKLSMgc2VjdGlv
biAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgZG94eWdlbiB3
cml0ZSB0aGUKLSMgZGVmYXVsdCBoZWFkZXIgdG8gYSBzZXBhcmF0ZSBmaWxlLgotIwotIyBOb3Rl
OiBPbmx5IHVzZSBhIHVzZXItZGVmaW5lZCBoZWFkZXIgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJl
IGRvaW5nISBUaGUKLSMgZm9sbG93aW5nIGNvbW1hbmRzIGhhdmUgYSBzcGVjaWFsIG1lYW5pbmcg
aW5zaWRlIHRoZSBoZWFkZXI6ICR0aXRsZSwKLSMgJGRhdGV0aW1lLCAkZGF0ZSwgJGRveHlnZW52
ZXJzaW9uLCAkcHJvamVjdG5hbWUsICRwcm9qZWN0bnVtYmVyLiBEb3h5Z2VuIHdpbGwKLSMgcmVw
bGFjZSB0aGVtIGJ5IHJlc3BlY3RpdmVseSB0aGUgdGl0bGUgb2YgdGhlIHBhZ2UsIHRoZSBjdXJy
ZW50IGRhdGUgYW5kIHRpbWUsCi0jIG9ubHkgdGhlIGN1cnJlbnQgZGF0ZSwgdGhlIHZlcnNpb24g
bnVtYmVyIG9mIGRveHlnZW4sIHRoZSBwcm9qZWN0IG5hbWUgKHNlZQotIyBQUk9KRUNUX05BTUUp
LCBvciB0aGUgcHJvamVjdCBudW1iZXIgKHNlZSBQUk9KRUNUX05VTUJFUikuCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1M
QVRFWF9IRUFERVIgICAgICAgICAgID0KLQotIyBUaGUgTEFURVhfRk9PVEVSIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgTGFUZVggZm9vdGVyIGZvciB0aGUKLSMgZ2VuZXJh
dGVkIExhVGVYIGRvY3VtZW50LiBUaGUgZm9vdGVyIHNob3VsZCBjb250YWluIGV2ZXJ5dGhpbmcg
YWZ0ZXIgdGhlIGxhc3QKLSMgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdp
bGwgZ2VuZXJhdGUgYSBzdGFuZGFyZCBmb290ZXIuCi0jCi0jIE5vdGU6IE9ubHkgdXNlIGEgdXNl
ci1kZWZpbmVkIGZvb3RlciBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgot
Ci1MQVRFWF9GT09URVIgICAgICAgICAgID0KLQotIyBUaGUgTEFURVhfRVhUUkFfRklMRVMgdGFn
IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZXh0cmEgaW1hZ2VzIG9yCi0jIG90
aGVyIHNvdXJjZSBmaWxlcyB3aGljaCBzaG91bGQgYmUgY29waWVkIHRvIHRoZSBMQVRFWF9PVVRQ
VVQgb3V0cHV0Ci0jIGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoZSBmaWxlcyB3aWxsIGJlIGNvcGll
ZCBhcy1pczsgdGhlcmUgYXJlIG5vIGNvbW1hbmRzIG9yCi0jIG1hcmtlcnMgYXZhaWxhYmxlLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRv
IFlFUy4KLQotTEFURVhfRVhUUkFfRklMRVMgICAgICA9Ci0KLSMgSWYgdGhlIFBERl9IWVBFUkxJ
TktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgTGFUZVggdGhhdCBpcyBnZW5lcmF0ZWQgaXMKLSMg
cHJlcGFyZWQgZm9yIGNvbnZlcnNpb24gdG8gUERGICh1c2luZyBwczJwZGYgb3IgcGRmbGF0ZXgp
LiBUaGUgUERGIGZpbGUgd2lsbAotIyBjb250YWluIGxpbmtzIChqdXN0IGxpa2UgdGhlIEhUTUwg
b3V0cHV0KSBpbnN0ZWFkIG9mIHBhZ2UgcmVmZXJlbmNlcy4gVGhpcwotIyBtYWtlcyB0aGUgb3V0
cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgYSBQREYgdmlld2VyLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotUERGX0hZUEVSTElOS1MgICAgICAg
ICA9IE5PCi0KLSMgSWYgdGhlIExBVEVYX1BERkxBVEVYIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5
Z2VuIHdpbGwgdXNlIHBkZmxhdGV4IHRvIGdlbmVyYXRlCi0jIHRoZSBQREYgZmlsZSBkaXJlY3Rs
eSBmcm9tIHRoZSBMYVRlWCBmaWxlcy4gU2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0byBnZXQgYQot
IyBoaWdoZXIgcXVhbGl0eSBQREYgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVY
IGlzIHNldCB0byBZRVMuCi0KLVVTRV9QREZMQVRFWCAgICAgICAgICAgPSBOTwotCi0jIElmIHRo
ZSBMQVRFWF9CQVRDSE1PREUgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBhZGQgdGhl
IFxiYXRjaG1vZGUKLSMgY29tbWFuZCB0byB0aGUgZ2VuZXJhdGVkIExhVGVYIGZpbGVzLiBUaGlz
IHdpbGwgaW5zdHJ1Y3QgTGFUZVggdG8ga2VlcCBydW5uaW5nCi0jIGlmIGVycm9ycyBvY2N1ciwg
aW5zdGVhZCBvZiBhc2tpbmcgdGhlIHVzZXIgZm9yIGhlbHAuIFRoaXMgb3B0aW9uIGlzIGFsc28g
dXNlZAotIyB3aGVuIGdlbmVyYXRpbmcgZm9ybXVsYXMgaW4gSFRNTC4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVf
TEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfQkFUQ0hNT0RFICAgICAgICA9IE5PCi0KLSMg
SWYgdGhlIExBVEVYX0hJREVfSU5ESUNFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4g
d2lsbCBub3QgaW5jbHVkZSB0aGUKLSMgaW5kZXggY2hhcHRlcnMgKHN1Y2ggYXMgRmlsZSBJbmRl
eCwgQ29tcG91bmQgSW5kZXgsIGV0Yy4pIGluIHRoZSBvdXRwdXQuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xB
VEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0hJREVfSU5ESUNFUyAgICAgPSBOTwotCi0jIElm
IHRoZSBMQVRFWF9TT1VSQ0VfQ09ERSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2ls
bCBpbmNsdWRlIHNvdXJjZQotIyBjb2RlIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZyBpbiB0aGUg
TGFUZVggb3V0cHV0LgotIwotIyBOb3RlIHRoYXQgd2hpY2ggc291cmNlcyBhcmUgc2hvd24gYWxz
byBkZXBlbmRzIG9uIG90aGVyIHNldHRpbmdzIHN1Y2ggYXMKLSMgU09VUkNFX0JST1dTRVIuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX1NPVVJDRV9DT0RFICAg
ICAgPSBOTwotCi0jIFRoZSBMQVRFWF9CSUJfU1RZTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNp
ZnkgdGhlIHN0eWxlIHRvIHVzZSBmb3IgdGhlCi0jIGJpYmxpb2dyYXBoeSwgZS5nLiBwbGFpbm5h
dCwgb3IgaWVlZXRyLiBTZWUKLSMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJUZVgg
YW5kIFxjaXRlIGZvciBtb3JlIGluZm8uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbGFpbi4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0
byBZRVMuCi0KLUxBVEVYX0JJQl9TVFlMRSAgICAgICAgPSBwbGFpbgotCi0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBSVEYgb3V0cHV0
Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX1JURiB0YWcgaXMgc2V0
IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgUlRGIG91dHB1dC4gVGhlCi0jIFJURiBvdXRw
dXQgaXMgb3B0aW1pemVkIGZvciBXb3JkIDk3IGFuZCBtYXkgbm90IGxvb2sgdG9vIHByZXR0eSB3
aXRoIG90aGVyIFJURgotIyByZWFkZXJzL2VkaXRvcnMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLQotR0VORVJBVEVfUlRGICAgICAgICAgICA9IE5PCi0KLSMgVGhlIFJURl9PVVRQVVQg
dGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgUlRGIGRvY3Mgd2lsbCBiZSBwdXQuIElm
IGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNU
T1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCi0jIGl0LgotIyBUaGUgZGVmYXVsdCBkaXJlY3Rv
cnkgaXM6IHJ0Zi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JU
RiBpcyBzZXQgdG8gWUVTLgotCi1SVEZfT1VUUFVUICAgICAgICAgICAgID0gcnRmCi0KLSMgSWYg
dGhlIENPTVBBQ1RfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gZ2VuZXJhdGVzIG1vcmUg
Y29tcGFjdCBSVEYKLSMgZG9jdW1lbnRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIHNtYWxsIHBy
b2plY3RzIGFuZCBtYXkgaGVscCB0byBzYXZlIHNvbWUKLSMgdHJlZXMgaW4gZ2VuZXJhbC4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCi0KLUNPTVBBQ1RfUlRGICAgICAgICAgICAg
PSBOTwotCi0jIElmIHRoZSBSVEZfSFlQRVJMSU5LUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIFJU
RiB0aGF0IGlzIGdlbmVyYXRlZCB3aWxsCi0jIGNvbnRhaW4gaHlwZXJsaW5rIGZpZWxkcy4gVGhl
IFJURiBmaWxlIHdpbGwgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRoZSBIVE1MCi0jIG91dHB1
dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIFRoaXMgbWFrZXMgdGhlIG91dHB1dCBzdWl0
YWJsZSBmb3Igb25saW5lCi0jIGJyb3dzaW5nIHVzaW5nIFdvcmQgb3Igc29tZSBvdGhlciBXb3Jk
IGNvbXBhdGlibGUgcmVhZGVycyB0aGF0IHN1cHBvcnQgdGhvc2UKLSMgZmllbGRzLgotIwotIyBO
b3RlOiBXb3JkUGFkICh3cml0ZSkgYW5kIG90aGVycyBkbyBub3Qgc3VwcG9ydCBsaW5rcy4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCi0KLVJURl9IWVBFUkxJTktTICAgICAgICAg
PSBOTwotCi0jIExvYWQgc3R5bGVzaGVldCBkZWZpbml0aW9ucyBmcm9tIGZpbGUuIFN5bnRheCBp
cyBzaW1pbGFyIHRvIGRveHlnZW4ncyBjb25maWcKLSMgZmlsZSwgaS5lLiBhIHNlcmllcyBvZiBh
c3NpZ25tZW50cy4gWW91IG9ubHkgaGF2ZSB0byBwcm92aWRlIHJlcGxhY2VtZW50cywKLSMgbWlz
c2luZyBkZWZpbml0aW9ucyBhcmUgc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWUuCi0jCi0jIFNl
ZSBhbHNvIHNlY3Rpb24gIkRveHlnZW4gdXNhZ2UiIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8g
Z2VuZXJhdGUgdGhlCi0jIGRlZmF1bHQgc3R5bGUgc2hlZXQgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5
IHVzZXMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMg
c2V0IHRvIFlFUy4KLQotUlRGX1NUWUxFU0hFRVRfRklMRSAgICA9Ci0KLSMgU2V0IG9wdGlvbmFs
IHZhcmlhYmxlcyB1c2VkIGluIHRoZSBnZW5lcmF0aW9uIG9mIGFuIFJURiBkb2N1bWVudC4gU3lu
dGF4IGlzCi0jIHNpbWlsYXIgdG8gZG94eWdlbidzIGNvbmZpZyBmaWxlLiBBIHRlbXBsYXRlIGV4
dGVuc2lvbnMgZmlsZSBjYW4gYmUgZ2VuZXJhdGVkCi0jIHVzaW5nIGRveHlnZW4gLWUgcnRmIGV4
dGVuc2lvbkZpbGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9S
VEYgaXMgc2V0IHRvIFlFUy4KLQotUlRGX0VYVEVOU0lPTlNfRklMRSAgICA9Ci0KLSMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIG1hbiBw
YWdlIG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9NQU4g
dGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIG1hbiBwYWdlcyBmb3IKLSMg
Y2xhc3NlcyBhbmQgZmlsZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJB
VEVfTUFOICAgICAgICAgICA9IE5PCi0KLSMgVGhlIE1BTl9PVVRQVVQgdGFnIGlzIHVzZWQgdG8g
c3BlY2lmeSB3aGVyZSB0aGUgbWFuIHBhZ2VzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJlbGF0aXZl
IHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1
dCBpbiBmcm9udCBvZgotIyBpdC4gQSBkaXJlY3RvcnkgbWFuMyB3aWxsIGJlIGNyZWF0ZWQgaW5z
aWRlIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIGJ5Ci0jIE1BTl9PVVRQVVQuCi0jIFRoZSBkZWZh
dWx0IGRpcmVjdG9yeSBpczogbWFuLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuCi0KLU1BTl9PVVRQVVQgICAgICAgICAgICAgPSBt
YW4KLQotIyBUaGUgTUFOX0VYVEVOU0lPTiB0YWcgZGV0ZXJtaW5lcyB0aGUgZXh0ZW5zaW9uIHRo
YXQgaXMgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZAotIyBtYW4gcGFnZXMuIEluIGNhc2UgdGhlIG1h
bnVhbCBzZWN0aW9uIGRvZXMgbm90IHN0YXJ0IHdpdGggYSBudW1iZXIsIHRoZSBudW1iZXIKLSMg
MyBpcyBwcmVwZW5kZWQuIFRoZSBkb3QgKC4pIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIE1BTl9F
WFRFTlNJT04gdGFnIGlzCi0jIG9wdGlvbmFsLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogLjMu
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9NQU4gaXMgc2V0IHRv
IFlFUy4KLQotTUFOX0VYVEVOU0lPTiAgICAgICAgICA9IC4zCi0KLSMgSWYgdGhlIE1BTl9MSU5L
UyB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgZG94eWdlbiBnZW5lcmF0ZXMgbWFuIG91dHB1dCwgdGhl
biBpdAotIyB3aWxsIGdlbmVyYXRlIG9uZSBhZGRpdGlvbmFsIG1hbiBmaWxlIGZvciBlYWNoIGVu
dGl0eSBkb2N1bWVudGVkIGluIHRoZSByZWFsCi0jIG1hbiBwYWdlKHMpLiBUaGVzZSBhZGRpdGlv
bmFsIGZpbGVzIG9ubHkgc291cmNlIHRoZSByZWFsIG1hbiBwYWdlLCBidXQgd2l0aG91dAotIyB0
aGVtIHRoZSBtYW4gY29tbWFuZCB3b3VsZCBiZSB1bmFibGUgdG8gZmluZCB0aGUgY29ycmVjdCBw
YWdlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9NQU4gaXMgc2V0IHRvIFlFUy4KLQotTUFOX0xJTktTICAgICAg
ICAgICAgICA9IE5PCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRp
b25zIHJlbGF0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJ
ZiB0aGUgR0VORVJBVEVfWE1MIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0
ZSBhbiBYTUwgZmlsZSB0aGF0Ci0jIGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUg
aW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLUdFTkVSQVRFX1hNTCAgICAgICAgICAgPSBOTwotCi0jIFRoZSBYTUxfT1VUUFVUIHRhZyBp
cyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIFhNTCBwYWdlcyB3aWxsIGJlIHB1dC4gSWYgYQot
IyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkg
d2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKLSMgaXQuCi0jIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBp
czogeG1sLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlz
IHNldCB0byBZRVMuCi0KLVhNTF9PVVRQVVQgICAgICAgICAgICAgPSB4bWwKLQotIyBUaGUgWE1M
X1NDSEVNQSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIFhNTCBzY2hlbWEsIHdoaWNoIGNh
biBiZSB1c2VkIGJ5IGEKLSMgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHRvIGNoZWNrIHRoZSBzeW50
YXggb2YgdGhlIFhNTCBmaWxlcy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdF
TkVSQVRFX1hNTCBpcyBzZXQgdG8gWUVTLgotCi1YTUxfU0NIRU1BICAgICAgICAgICAgID0KLQot
IyBUaGUgWE1MX0RURCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIFhNTCBEVEQsIHdoaWNo
IGNhbiBiZSB1c2VkIGJ5IGEKLSMgdmFsaWRhdGluZyBYTUwgcGFyc2VyIHRvIGNoZWNrIHRoZSBz
eW50YXggb2YgdGhlIFhNTCBmaWxlcy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX1hNTCBpcyBzZXQgdG8gWUVTLgotCi1YTUxfRFREICAgICAgICAgICAgICAgID0K
LQotIyBJZiB0aGUgWE1MX1BST0dSQU1MSVNUSU5HIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4g
d2lsbCBkdW1wIHRoZSBwcm9ncmFtCi0jIGxpc3RpbmdzIChpbmNsdWRpbmcgc3ludGF4IGhpZ2hs
aWdodGluZyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgaW5mb3JtYXRpb24pIHRvCi0jIHRoZSBYTUwg
b3V0cHV0LiBOb3RlIHRoYXQgZW5hYmxpbmcgdGhpcyB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVh
c2UgdGhlIHNpemUKLSMgb2YgdGhlIFhNTCBvdXRwdXQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMg
c2V0IHRvIFlFUy4KLQotWE1MX1BST0dSQU1MSVNUSU5HICAgICA9IFlFUwotCi0jLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBET0NCT09L
IG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9ET0NCT09L
IHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBEb2Nib29rIGZpbGVzCi0j
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgUERGLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0KLUdFTkVSQVRFX0RPQ0JPT0sgICAgICAgPSBOTwotCi0jIFRoZSBET0NCT09LX09V
VFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBEb2Nib29rIHBhZ2VzIHdpbGwg
YmUgcHV0LgotIyBJZiBhIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VU
UFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbgotIyBmcm9udCBvZiBpdC4KLSMgVGhlIGRlZmF1
bHQgZGlyZWN0b3J5IGlzOiBkb2Nib29rLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfRE9DQk9PSyBpcyBzZXQgdG8gWUVTLgotCi1ET0NCT09LX09VVFBVVCAgICAg
ICAgID0gZG9jYm9vawotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0
aW9ucyBmb3IgdGhlIEF1dG9HZW4gRGVmaW5pdGlvbnMgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0FVVE9HRU5fREVGIHRhZyBpcyBzZXQgdG8gWUVTIGRv
eHlnZW4gd2lsbCBnZW5lcmF0ZSBhbiBBdXRvR2VuCi0jIERlZmluaXRpb25zIChzZWUgaHR0cDov
L2F1dG9nZW4uc2YubmV0KSBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZgotIyB0
aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uIE5vdGUgdGhhdCB0aGlzIGZlYXR1
cmUgaXMgc3RpbGwKLSMgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfQVVUT0dFTl9ERUYgICA9
IE5PCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0
ZWQgdG8gdGhlIFBlcmwgbW9kdWxlIG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElm
IHRoZSBHRU5FUkFURV9QRVJMTU9EIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5l
cmF0ZSBhIFBlcmwgbW9kdWxlCi0jIGZpbGUgdGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9m
IHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4KLSMKLSMgTm90ZSB0aGF0IHRo
aXMgZmVhdHVyZSBpcyBzdGlsbCBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUgYXQgdGhlIG1v
bWVudC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9QRVJMTU9EICAg
ICAgID0gTk8KLQotIyBJZiB0aGUgUEVSTE1PRF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5
Z2VuIHdpbGwgZ2VuZXJhdGUgdGhlIG5lY2Vzc2FyeQotIyBNYWtlZmlsZSBydWxlcywgUGVybCBz
Y3JpcHRzIGFuZCBMYVRlWCBjb2RlIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgUERGIGFuZCBEVkkK
LSMgb3V0cHV0IGZyb20gdGhlIFBlcmwgbW9kdWxlIG91dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUEVS
TE1PRCBpcyBzZXQgdG8gWUVTLgotCi1QRVJMTU9EX0xBVEVYICAgICAgICAgID0gTk8KLQotIyBJ
ZiB0aGUgUEVSTE1PRF9QUkVUVFkgdGFnIGlzIHNldCB0byBZRVMgdGhlIFBlcmwgbW9kdWxlIG91
dHB1dCB3aWxsIGJlIG5pY2VseQotIyBmb3JtYXR0ZWQgc28gaXQgY2FuIGJlIHBhcnNlZCBieSBh
IGh1bWFuIHJlYWRlci4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8KLSMgdW5kZXJzdGFu
ZCB3aGF0IGlzIGdvaW5nIG9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhpcyB0YWcgaXMgc2V0
IHRvIE5PIHRoZQotIyBzaXplIG9mIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQgd2lsbCBiZSBtdWNo
IHNtYWxsZXIgYW5kIFBlcmwgd2lsbCBwYXJzZSBpdAotIyBqdXN0IHRoZSBzYW1lLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfUEVSTE1PRCBpcyBzZXQgdG8gWUVTLgotCi1QRVJMTU9EX1BSRVRUWSAgICAgICAg
ID0gWUVTCi0KLSMgVGhlIG5hbWVzIG9mIHRoZSBtYWtlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJh
dGVkIGRveHlydWxlcy5tYWtlIGZpbGUgYXJlCi0jIHByZWZpeGVkIHdpdGggdGhlIHN0cmluZyBj
b250YWluZWQgaW4gUEVSTE1PRF9NQUtFVkFSX1BSRUZJWC4gVGhpcyBpcyB1c2VmdWwKLSMgc28g
ZGlmZmVyZW50IGRveHlydWxlcy5tYWtlIGZpbGVzIGluY2x1ZGVkIGJ5IHRoZSBzYW1lIE1ha2Vm
aWxlIGRvbid0Ci0jIG92ZXJ3cml0ZSBlYWNoIG90aGVyJ3MgdmFyaWFibGVzLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUEVSTE1PRCBpcyBzZXQgdG8gWUVTLgot
Ci1QRVJMTU9EX01BS0VWQVJfUFJFRklYID0KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25m
aWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgcHJlcHJvY2Vzc29yCi0jLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLSMgSWYgdGhlIEVOQUJMRV9QUkVQUk9DRVNTSU5HIHRhZyBpcyBzZXQgdG8g
WUVTIGRveHlnZW4gd2lsbCBldmFsdWF0ZSBhbGwKLSMgQy1wcmVwcm9jZXNzb3IgZGlyZWN0aXZl
cyBmb3VuZCBpbiB0aGUgc291cmNlcyBhbmQgaW5jbHVkZSBmaWxlcy4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IFlFUy4KLQotRU5BQkxFX1BSRVBST0NFU1NJTkcgICA9IFlFUwotCi0jIElmIHRo
ZSBNQUNST19FWFBBTlNJT04gdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGV4cGFuZCBh
bGwgbWFjcm8gbmFtZXMKLSMgaW4gdGhlIHNvdXJjZSBjb2RlLiBJZiBzZXQgdG8gTk8gb25seSBj
b25kaXRpb25hbCBjb21waWxhdGlvbiB3aWxsIGJlCi0jIHBlcmZvcm1lZC4gTWFjcm8gZXhwYW5z
aW9uIGNhbiBiZSBkb25lIGluIGEgY29udHJvbGxlZCB3YXkgYnkgc2V0dGluZwotIyBFWFBBTkRf
T05MWV9QUkVERUYgdG8gWUVTLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8g
WUVTLgotCi1NQUNST19FWFBBTlNJT04gICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEVYUEFORF9P
TkxZX1BSRURFRiBhbmQgTUFDUk9fRVhQQU5TSU9OIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyB0
aGVuCi0jIHRoZSBtYWNybyBleHBhbnNpb24gaXMgbGltaXRlZCB0byB0aGUgbWFjcm9zIHNwZWNp
ZmllZCB3aXRoIHRoZSBQUkVERUZJTkVEIGFuZAotIyBFWFBBTkRfQVNfREVGSU5FRCB0YWdzLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgotCi1FWFBBTkRfT05MWV9Q
UkVERUYgICAgID0gTk8KLQotIyBJZiB0aGUgU0VBUkNIX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8g
WUVTIHRoZSBpbmNsdWRlcyBmaWxlcyBpbiB0aGUKLSMgSU5DTFVERV9QQVRIIHdpbGwgYmUgc2Vh
cmNoZWQgaWYgYSAjaW5jbHVkZSBpcyBmb3VuZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlF
Uy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5H
IGlzIHNldCB0byBZRVMuCi0KLVNFQVJDSF9JTkNMVURFUyAgICAgICAgPSBZRVMKLQotIyBUaGUg
SU5DTFVERV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVj
dG9yaWVzIHRoYXQKLSMgY29udGFpbiBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIG5vdCBpbnB1dCBm
aWxlcyBidXQgc2hvdWxkIGJlIHByb2Nlc3NlZCBieSB0aGUKLSMgcHJlcHJvY2Vzc29yLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIX0lOQ0xVREVTIGlzIHNldCB0byBZ
RVMuCi0KLUlOQ0xVREVfUEFUSCAgICAgICAgICAgPSAuLi9pbmNsdWRlCi0KLSMgWW91IGNhbiB1
c2UgdGhlIElOQ0xVREVfRklMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3
aWxkY2FyZAotIyBwYXR0ZXJucyAobGlrZSAqLmggYW5kICouaHBwKSB0byBmaWx0ZXIgb3V0IHRo
ZSBoZWFkZXItZmlsZXMgaW4gdGhlCi0jIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IGJsYW5rLCB0aGUg
cGF0dGVybnMgc3BlY2lmaWVkIHdpdGggRklMRV9QQVRURVJOUyB3aWxsIGJlCi0jIHVzZWQuCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBz
ZXQgdG8gWUVTLgotCi1JTkNMVURFX0ZJTEVfUEFUVEVSTlMgID0gKi5oCi0KLSMgVGhlIFBSRURF
RklORUQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbWFjcm8gbmFtZXMg
dGhhdCBhcmUKLSMgZGVmaW5lZCBiZWZvcmUgdGhlIHByZXByb2Nlc3NvciBpcyBzdGFydGVkIChz
aW1pbGFyIHRvIHRoZSAtRCBvcHRpb24gb2YgZS5nLgotIyBnY2MpLiBUaGUgYXJndW1lbnQgb2Yg
dGhlIHRhZyBpcyBhIGxpc3Qgb2YgbWFjcm9zIG9mIHRoZSBmb3JtOiBuYW1lIG9yCi0jIG5hbWU9
ZGVmaW5pdGlvbiAobm8gc3BhY2VzKS4gSWYgdGhlIGRlZmluaXRpb24gYW5kIHRoZSAiPSIgYXJl
IG9taXR0ZWQsICI9MSIKLSMgaXMgYXNzdW1lZC4gVG8gcHJldmVudCBhIG1hY3JvIGRlZmluaXRp
b24gZnJvbSBiZWluZyB1bmRlZmluZWQgdmlhICN1bmRlZiBvcgotIyByZWN1cnNpdmVseSBleHBh
bmRlZCB1c2UgdGhlIDo9IG9wZXJhdG9yIGluc3RlYWQgb2YgdGhlID0gb3BlcmF0b3IuCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQg
dG8gWUVTLgotCi1QUkVERUZJTkVEICAgICAgICAgICAgID0gIl9NU0NfVkVSPTE4MDAiIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBfQ1BQUlRUSSBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgX1dJTjMyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBKU09OQ1BQX0RPQ19FWENMVURF
X0lNUExFTUVOVEFUSU9OCi0KLSMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiBhbmQgRVhQQU5EX09O
TFlfUFJFREVGIHRhZ3MgYXJlIHNldCB0byBZRVMgdGhlbiB0aGlzCi0jIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiBtYWNybyBuYW1lcyB0aGF0IHNob3VsZCBiZSBleHBhbmRl
ZC4gVGhlCi0jIG1hY3JvIGRlZmluaXRpb24gdGhhdCBpcyBmb3VuZCBpbiB0aGUgc291cmNlcyB3
aWxsIGJlIHVzZWQuIFVzZSB0aGUgUFJFREVGSU5FRAotIyB0YWcgaWYgeW91IHdhbnQgdG8gdXNl
IGEgZGlmZmVyZW50IG1hY3JvIGRlZmluaXRpb24gdGhhdCBvdmVycnVsZXMgdGhlCi0jIGRlZmlu
aXRpb24gZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KLQotRVhQQU5EX0FT
X0RFRklORUQgICAgICA9Ci0KLSMgSWYgdGhlIFNLSVBfRlVOQ1RJT05fTUFDUk9TIHRhZyBpcyBz
ZXQgdG8gWUVTIHRoZW4gZG94eWdlbidzIHByZXByb2Nlc3NvciB3aWxsCi0jIHJlbW92ZSBhbGwg
cmVmZXJlbmNlcyB0byBmdW5jdGlvbi1saWtlIG1hY3JvcyB0aGF0IGFyZSBhbG9uZSBvbiBhIGxp
bmUsIGhhdmUgYW4KLSMgYWxsIHVwcGVyY2FzZSBuYW1lLCBhbmQgZG8gbm90IGVuZCB3aXRoIGEg
c2VtaWNvbG9uLiBTdWNoIGZ1bmN0aW9uIG1hY3JvcyBhcmUKLSMgdHlwaWNhbGx5IHVzZWQgZm9y
IGJvaWxlci1wbGF0ZSBjb2RlLCBhbmQgd2lsbCBjb25mdXNlIHRoZSBwYXJzZXIgaWYgbm90Ci0j
IHJlbW92ZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgotCi1T
S0lQX0ZVTkNUSU9OX01BQ1JPUyAgID0gWUVTCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29u
ZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gZXh0ZXJuYWwgcmVmZXJlbmNlcwotIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi0jIFRoZSBUQUdGSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lm
eSBvbmUgb3IgbW9yZSB0YWcgZmlsZXMuIEZvciBlYWNoIHRhZwotIyBmaWxlIHRoZSBsb2NhdGlv
biBvZiB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgYWRkZWQuIFRoZSBmb3Jt
YXQgb2YKLSMgYSB0YWcgZmlsZSB3aXRob3V0IHRoaXMgbG9jYXRpb24gaXMgYXMgZm9sbG93czoK
LSMgVEFHRklMRVMgPSBmaWxlMSBmaWxlMiAuLi4KLSMgQWRkaW5nIGxvY2F0aW9uIGZvciB0aGUg
dGFnIGZpbGVzIGlzIGRvbmUgYXMgZm9sbG93czoKLSMgVEFHRklMRVMgPSBmaWxlMT1sb2MxICJm
aWxlMiA9IGxvYzIiIC4uLgotIyB3aGVyZSBsb2MxIGFuZCBsb2MyIGNhbiBiZSByZWxhdGl2ZSBv
ciBhYnNvbHV0ZSBwYXRocyBvciBVUkxzLiBTZWUgdGhlCi0jIHNlY3Rpb24gIkxpbmtpbmcgdG8g
ZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiIgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVz
ZQotIyBvZiB0YWcgZmlsZXMuCi0jIE5vdGU6IEVhY2ggdGFnIGZpbGUgbXVzdCBoYXZlIGFuIHVu
aXF1ZSBuYW1lICh3aGVyZSB0aGUgbmFtZSBkb2VzIE5PVCBpbmNsdWRlCi0jIHRoZSBwYXRoKS4g
SWYgYSB0YWcgZmlsZSBpcyBub3QgbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGRv
eHlnZW4gaXMKLSMgcnVuLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIHRh
Z2ZpbGUgaGVyZS4KLQotVEFHRklMRVMgICAgICAgICAgICAgICA9Ci0KLSMgV2hlbiBhIGZpbGUg
bmFtZSBpcyBzcGVjaWZpZWQgYWZ0ZXIgR0VORVJBVEVfVEFHRklMRSwgZG94eWdlbiB3aWxsIGNy
ZWF0ZSBhCi0jIHRhZyBmaWxlIHRoYXQgaXMgYmFzZWQgb24gdGhlIGlucHV0IGZpbGVzIGl0IHJl
YWRzLiBTZWUgc2VjdGlvbiAiTGlua2luZyB0bwotIyBleHRlcm5hbCBkb2N1bWVudGF0aW9uIiBm
b3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNhZ2Ugb2YgdGFnIGZpbGVzLgotCi1HRU5F
UkFURV9UQUdGSUxFICAgICAgID0KLQotIyBJZiB0aGUgQUxMRVhURVJOQUxTIHRhZyBpcyBzZXQg
dG8gWUVTIGFsbCBleHRlcm5hbCBjbGFzcyB3aWxsIGJlIGxpc3RlZCBpbiB0aGUKLSMgY2xhc3Mg
aW5kZXguIElmIHNldCB0byBOTyBvbmx5IHRoZSBpbmhlcml0ZWQgZXh0ZXJuYWwgY2xhc3NlcyB3
aWxsIGJlIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1BTExFWFRFUk5B
TFMgICAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgRVhURVJOQUxfR1JPVVBTIHRhZyBpcyBzZXQg
dG8gWUVTIGFsbCBleHRlcm5hbCBncm91cHMgd2lsbCBiZSBsaXN0ZWQgaW4KLSMgdGhlIG1vZHVs
ZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3MgZ3JvdXBz
IHdpbGwgYmUKLSMgbGlzdGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1FWFRF
Uk5BTF9HUk9VUFMgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEVYVEVSTkFMX1BBR0VTIHRhZyBp
cyBzZXQgdG8gWUVTIGFsbCBleHRlcm5hbCBwYWdlcyB3aWxsIGJlIGxpc3RlZCBpbgotIyB0aGUg
cmVsYXRlZCBwYWdlcyBpbmRleC4gSWYgc2V0IHRvIE5PLCBvbmx5IHRoZSBjdXJyZW50IHByb2pl
Y3QncyBwYWdlcyB3aWxsCi0jIGJlIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlF
Uy4KLQotRVhURVJOQUxfUEFHRVMgICAgICAgICA9IFlFUwotCi0jIFRoZSBQRVJMX1BBVEggc2hv
dWxkIGJlIHRoZSBhYnNvbHV0ZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBwZXJsIHNjcmlwdAotIyBp
bnRlcnByZXRlciAoaS5lLiB0aGUgcmVzdWx0IG9mICd3aGljaCBwZXJsJykuCi0jIFRoZSBkZWZh
dWx0IGZpbGUgKHdpdGggYWJzb2x1dGUgcGF0aCkgaXM6IC91c3IvYmluL3BlcmwuCi0KLVBFUkxf
UEFUSCAgICAgICAgICAgICAgPSAvdXNyL2Jpbi9wZXJsCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGRvdCB0b29sCi0jLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIENMQVNTX0RJQUdSQU1TIHRhZyBpcyBzZXQgdG8gWUVT
IGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNsYXNzIGRpYWdyYW0KLSMgKGluIEhUTUwgYW5kIExh
VGVYKSBmb3IgY2xhc3NlcyB3aXRoIGJhc2Ugb3Igc3VwZXIgY2xhc3Nlcy4gU2V0dGluZyB0aGUg
dGFnIHRvCi0jIE5PIHR1cm5zIHRoZSBkaWFncmFtcyBvZmYuIE5vdGUgdGhhdCB0aGlzIG9wdGlv
biBhbHNvIHdvcmtzIHdpdGggSEFWRV9ET1QKLSMgZGlzYWJsZWQsIGJ1dCBpdCBpcyByZWNvbW1l
bmRlZCB0byBpbnN0YWxsIGFuZCB1c2UgZG90LCBzaW5jZSBpdCB5aWVsZHMgbW9yZQotIyBwb3dl
cmZ1bCBncmFwaHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUNMQVNTX0RJQUdS
QU1TICAgICAgICAgPSBOTwotCi0jIFlvdSBjYW4gZGVmaW5lIG1lc3NhZ2Ugc2VxdWVuY2UgY2hh
cnRzIHdpdGhpbiBkb3h5Z2VuIGNvbW1lbnRzIHVzaW5nIHRoZSBcbXNjCi0jIGNvbW1hbmQuIERv
eHlnZW4gd2lsbCB0aGVuIHJ1biB0aGUgbXNjZ2VuIHRvb2wgKHNlZToKLSMgaHR0cDovL3d3dy5t
Y3Rlcm5hbi5tZS51ay9tc2NnZW4vKSkgdG8gcHJvZHVjZSB0aGUgY2hhcnQgYW5kIGluc2VydCBp
dCBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbi4gVGhlIE1TQ0dFTl9QQVRIIHRhZyBhbGxvd3MgeW91
IHRvIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSB3aGVyZQotIyB0aGUgbXNjZ2VuIHRvb2wgcmVzaWRl
cy4gSWYgbGVmdCBlbXB0eSB0aGUgdG9vbCBpcyBhc3N1bWVkIHRvIGJlIGZvdW5kIGluIHRoZQot
IyBkZWZhdWx0IHNlYXJjaCBwYXRoLgotCi1NU0NHRU5fUEFUSCAgICAgICAgICAgID0KLQotIyBJ
ZiBzZXQgdG8gWUVTLCB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gZ3JhcGhzIHdp
bGwgaGlkZSBpbmhlcml0YW5jZQotIyBhbmQgdXNhZ2UgcmVsYXRpb25zIGlmIHRoZSB0YXJnZXQg
aXMgdW5kb2N1bWVudGVkIG9yIGlzIG5vdCBhIGNsYXNzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogWUVTLgotCi1ISURFX1VORE9DX1JFTEFUSU9OUyAgID0gTk8KLQotIyBJZiB5b3Ugc2V0IHRo
ZSBIQVZFX0RPVCB0YWcgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGFzc3VtZSB0aGUgZG90IHRv
b2wgaXMKLSMgYXZhaWxhYmxlIGZyb20gdGhlIHBhdGguIFRoaXMgdG9vbCBpcyBwYXJ0IG9mIEdy
YXBodml6IChzZWU6Ci0jIGh0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyksIGEgZ3JhcGggdmlzdWFs
aXphdGlvbiB0b29sa2l0IGZyb20gQVQmVCBhbmQgTHVjZW50Ci0jIEJlbGwgTGFicy4gVGhlIG90
aGVyIG9wdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGhhdmUgbm8gZWZmZWN0IGlmIHRoaXMgb3B0aW9u
IGlzCi0jIHNldCB0byBOTwotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUhBVkVfRE9U
ICAgICAgICAgICAgICAgPSAlSEFWRV9ET1QlCi0KLSMgVGhlIERPVF9OVU1fVEhSRUFEUyBzcGVj
aWZpZXMgdGhlIG51bWJlciBvZiBkb3QgaW52b2NhdGlvbnMgZG94eWdlbiBpcyBhbGxvd2VkCi0j
IHRvIHJ1biBpbiBwYXJhbGxlbC4gV2hlbiBzZXQgdG8gMCBkb3h5Z2VuIHdpbGwgYmFzZSB0aGlz
IG9uIHRoZSBudW1iZXIgb2YKLSMgcHJvY2Vzc29ycyBhdmFpbGFibGUgaW4gdGhlIHN5c3RlbS4g
WW91IGNhbiBzZXQgaXQgZXhwbGljaXRseSB0byBhIHZhbHVlCi0jIGxhcmdlciB0aGFuIDAgdG8g
Z2V0IGNvbnRyb2wgb3ZlciB0aGUgYmFsYW5jZSBiZXR3ZWVuIENQVSBsb2FkIGFuZCBwcm9jZXNz
aW5nCi0jIHNwZWVkLgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAzMiwgZGVm
YXVsdCB2YWx1ZTogMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9U
IGlzIHNldCB0byBZRVMuCi0KLURPVF9OVU1fVEhSRUFEUyAgICAgICAgPSAwCi0KLSMgV2hlbiB5
b3Ugd2FudCBhIGRpZmZlcmVudGx5IGxvb2tpbmcgZm9udCBuIHRoZSBkb3QgZmlsZXMgdGhhdCBk
b3h5Z2VuCi0jIGdlbmVyYXRlcyB5b3UgY2FuIHNwZWNpZnkgdGhlIGZvbnQgbmFtZSB1c2luZyBE
T1RfRk9OVE5BTUUuIFlvdSBuZWVkIHRvIG1ha2UKLSMgc3VyZSBkb3QgaXMgYWJsZSB0byBmaW5k
IHRoZSBmb250LCB3aGljaCBjYW4gYmUgZG9uZSBieSBwdXR0aW5nIGl0IGluIGEKLSMgc3RhbmRh
cmQgbG9jYXRpb24gb3IgYnkgc2V0dGluZyB0aGUgRE9URk9OVFBBVEggZW52aXJvbm1lbnQgdmFy
aWFibGUgb3IgYnkKLSMgc2V0dGluZyBET1RfRk9OVFBBVEggdG8gdGhlIGRpcmVjdG9yeSBjb250
YWluaW5nIHRoZSBmb250LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogSGVsdmV0aWNhLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
RE9UX0ZPTlROQU1FICAgICAgICAgICA9IEZyZWVTYW5zCi0KLSMgVGhlIERPVF9GT05UU0laRSB0
YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBzaXplIChpbiBwb2ludHMpIG9mIHRoZSBmb250IG9m
Ci0jIGRvdCBncmFwaHMuCi0jIE1pbmltdW0gdmFsdWU6IDQsIG1heGltdW0gdmFsdWU6IDI0LCBk
ZWZhdWx0IHZhbHVlOiAxMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVf
RE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9GT05UU0laRSAgICAgICAgICAgPSAxMAotCi0jIEJ5
IGRlZmF1bHQgZG94eWdlbiB3aWxsIHRlbGwgZG90IHRvIHVzZSB0aGUgZGVmYXVsdCBmb250IGFz
IHNwZWNpZmllZCB3aXRoCi0jIERPVF9GT05UTkFNRS4gSWYgeW91IHNwZWNpZnkgYSBkaWZmZXJl
bnQgZm9udCB1c2luZyBET1RfRk9OVE5BTUUgeW91IGNhbiBzZXQKLSMgdGhlIHBhdGggd2hlcmUg
ZG90IGNhbiBmaW5kIGl0IHVzaW5nIHRoaXMgdGFnLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX0ZPTlRQQVRIICAgICAgICAg
ICA9Ci0KLSMgSWYgdGhlIENMQVNTX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdl
biB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yCi0jIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93
aW5nIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGluaGVyaXRhbmNlIHJlbGF0aW9ucy4KLSMgU2V0
dGluZyB0aGlzIHRhZyB0byBZRVMgd2lsbCBmb3JjZSB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIHRv
IE5PLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotQ0xBU1NfR1JBUEggICAgICAg
ICAgICA9IFlFUwotCi0jIElmIHRoZSBDT0xMQUJPUkFUSU9OX0dSQVBIIHRhZyBpcyBzZXQgdG8g
WUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKLSMgZ3JhcGggZm9yIGVhY2ggZG9jdW1l
bnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGltcGxlbWVudGF0aW9u
Ci0jIGRlcGVuZGVuY2llcyAoaW5oZXJpdGFuY2UsIGNvbnRhaW5tZW50LCBhbmQgY2xhc3MgcmVm
ZXJlbmNlcyB2YXJpYWJsZXMpIG9mIHRoZQotIyBjbGFzcyB3aXRoIG90aGVyIGRvY3VtZW50ZWQg
Y2xhc3Nlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWly
ZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUNPTExBQk9SQVRJT05f
R1JBUEggICAgPSBZRVMKLQotIyBJZiB0aGUgR1JPVVBfR1JBUEhTIHRhZyBpcyBzZXQgdG8gWUVT
IHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yCi0jIGdyb3Vwcywgc2hvd2lu
ZyB0aGUgZGlyZWN0IGdyb3VwcyBkZXBlbmRlbmNpZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1HUk9VUF9HUkFQSFMgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFVNTF9M
T09LIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBpbmhlcml0YW5jZSBh
bmQKLSMgY29sbGFib3JhdGlvbiBkaWFncmFtcyBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gdGhlIE9N
RydzIFVuaWZpZWQgTW9kZWxpbmcKLSMgTGFuZ3VhZ2UuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0
byBZRVMuCi0KLVVNTF9MT09LICAgICAgICAgICAgICAgPSAlVU1MX0xPT0slCi0KLSMgSWYgdGhl
IFVNTF9MT09LIHRhZyBpcyBlbmFibGVkLCB0aGUgZmllbGRzIGFuZCBtZXRob2RzIGFyZSBzaG93
biBpbnNpZGUgdGhlCi0jIGNsYXNzIG5vZGUuIElmIHRoZXJlIGFyZSBtYW55IGZpZWxkcyBvciBt
ZXRob2RzIGFuZCBtYW55IG5vZGVzIHRoZSBncmFwaCBtYXkKLSMgYmVjb21lIHRvbyBiaWcgdG8g
YmUgdXNlZnVsLiBUaGUgVU1MX0xJTUlUX05VTV9GSUVMRFMgdGhyZXNob2xkIGxpbWl0cyB0aGUK
LSMgbnVtYmVyIG9mIGl0ZW1zIGZvciBlYWNoIHR5cGUgdG8gbWFrZSB0aGUgc2l6ZSBtb3JlIG1h
bmFnZWFibGUuIFNldCB0aGlzIHRvIDAKLSMgZm9yIG5vIGxpbWl0LiBOb3RlIHRoYXQgdGhlIHRo
cmVzaG9sZCBtYXkgYmUgZXhjZWVkZWQgYnkgNTAlIGJlZm9yZSB0aGUgbGltaXQKLSMgaXMgZW5m
b3JjZWQuIFNvIHdoZW4geW91IHNldCB0aGUgdGhyZXNob2xkIHRvIDEwLCB1cCB0byAxNSBmaWVs
ZHMgbWF5IGFwcGVhciwKLSMgYnV0IGlmIHRoZSBudW1iZXIgZXhjZWVkcyAxNSwgdGhlIHRvdGFs
IGFtb3VudCBvZiBmaWVsZHMgc2hvd24gaXMgbGltaXRlZCB0bwotIyAxMC4KLSMgTWluaW11bSB2
YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwLCBkZWZhdWx0IHZhbHVlOiAxMC4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLVVNTF9M
SU1JVF9OVU1fRklFTERTICAgPSAxMAotCi0jIElmIHRoZSBURU1QTEFURV9SRUxBVElPTlMgdGFn
IGlzIHNldCB0byBZRVMgdGhlbiB0aGUgaW5oZXJpdGFuY2UgYW5kCi0jIGNvbGxhYm9yYXRpb24g
Z3JhcGhzIHdpbGwgc2hvdyB0aGUgcmVsYXRpb25zIGJldHdlZW4gdGVtcGxhdGVzIGFuZCB0aGVp
cgotIyBpbnN0YW5jZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLVRFTVBMQVRF
X1JFTEFUSU9OUyAgICAgPSBZRVMKLQotIyBJZiB0aGUgSU5DTFVERV9HUkFQSCwgRU5BQkxFX1BS
RVBST0NFU1NJTkcgYW5kIFNFQVJDSF9JTkNMVURFUyB0YWdzIGFyZSBzZXQgdG8KLSMgWUVTIHRo
ZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBmaWxl
IHNob3dpbmcgdGhlCi0jIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMg
b2YgdGhlIGZpbGUgd2l0aCBvdGhlciBkb2N1bWVudGVkCi0jIGZpbGVzLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9E
T1QgaXMgc2V0IHRvIFlFUy4KLQotSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUwotCi0jIElm
IHRoZSBJTkNMVURFRF9CWV9HUkFQSCwgRU5BQkxFX1BSRVBST0NFU1NJTkcgYW5kIFNFQVJDSF9J
TkNMVURFUyB0YWdzIGFyZQotIyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRl
IGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBmaWxlIHNob3dpbmcKLSMgdGhlIGRpcmVjdCBh
bmQgaW5kaXJlY3QgaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgdGhlIGZpbGUgd2l0aCBvdGhlciBk
b2N1bWVudGVkCi0jIGZpbGVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotSU5D
TFVERURfQllfR1JBUEggICAgICA9IFlFUwotCi0jIElmIHRoZSBDQUxMX0dSQVBIIHRhZyBpcyBz
ZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgY2FsbAotIyBkZXBlbmRlbmN5
IGdyYXBoIGZvciBldmVyeSBnbG9iYWwgZnVuY3Rpb24gb3IgY2xhc3MgbWV0aG9kLgotIwotIyBO
b3RlIHRoYXQgZW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBzaWduaWZpY2FudGx5IGluY3JlYXNl
IHRoZSB0aW1lIG9mIGEgcnVuLgotIyBTbyBpbiBtb3N0IGNhc2VzIGl0IHdpbGwgYmUgYmV0dGVy
IHRvIGVuYWJsZSBjYWxsIGdyYXBocyBmb3Igc2VsZWN0ZWQKLSMgZnVuY3Rpb25zIG9ubHkgdXNp
bmcgdGhlIFxjYWxsZ3JhcGggY29tbWFuZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4K
LQotQ0FMTF9HUkFQSCAgICAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIENBTExFUl9HUkFQSCB0
YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNhbGxlcgotIyBk
ZXBlbmRlbmN5IGdyYXBoIGZvciBldmVyeSBnbG9iYWwgZnVuY3Rpb24gb3IgY2xhc3MgbWV0aG9k
LgotIwotIyBOb3RlIHRoYXQgZW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBzaWduaWZpY2FudGx5
IGluY3JlYXNlIHRoZSB0aW1lIG9mIGEgcnVuLgotIyBTbyBpbiBtb3N0IGNhc2VzIGl0IHdpbGwg
YmUgYmV0dGVyIHRvIGVuYWJsZSBjYWxsZXIgZ3JhcGhzIGZvciBzZWxlY3RlZAotIyBmdW5jdGlv
bnMgb25seSB1c2luZyB0aGUgXGNhbGxlcmdyYXBoIGNvbW1hbmQuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlz
IHNldCB0byBZRVMuCi0KLUNBTExFUl9HUkFQSCAgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUg
R1JBUEhJQ0FMX0hJRVJBUkNIWSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBn
cmFwaGljYWwKLSMgaGllcmFyY2h5IG9mIGFsbCBjbGFzc2VzIGluc3RlYWQgb2YgYSB0ZXh0dWFs
IG9uZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUdSQVBISUNBTF9ISUVSQVJD
SFkgICAgPSBZRVMKLQotIyBJZiB0aGUgRElSRUNUT1JZX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVT
IHRoZW4gZG94eWdlbiB3aWxsIHNob3cgdGhlCi0jIGRlcGVuZGVuY2llcyBhIGRpcmVjdG9yeSBo
YXMgb24gb3RoZXIgZGlyZWN0b3JpZXMgaW4gYSBncmFwaGljYWwgd2F5LiBUaGUKLSMgZGVwZW5k
ZW5jeSByZWxhdGlvbnMgYXJlIGRldGVybWluZWQgYnkgdGhlICNpbmNsdWRlIHJlbGF0aW9ucyBi
ZXR3ZWVuIHRoZQotIyBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBp
cyBzZXQgdG8gWUVTLgotCi1ESVJFQ1RPUllfR1JBUEggICAgICAgID0gWUVTCi0KLSMgVGhlIERP
VF9JTUFHRV9GT1JNQVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgaW1hZ2UgZm9ybWF0IG9m
IHRoZSBpbWFnZXMKLSMgZ2VuZXJhdGVkIGJ5IGRvdC4KLSMgTm90ZTogSWYgeW91IGNob29zZSBz
dmcgeW91IG5lZWQgdG8gc2V0IEhUTUxfRklMRV9FWFRFTlNJT04gdG8geGh0bWwgaW4gb3JkZXIK
LSMgdG8gbWFrZSB0aGUgU1ZHIGZpbGVzIHZpc2libGUgaW4gSUUgOSsgKG90aGVyIGJyb3dzZXJz
IGRvIG5vdCBoYXZlIHRoaXMKLSMgcmVxdWlyZW1lbnQpLgotIyBQb3NzaWJsZSB2YWx1ZXMgYXJl
OiBwbmcsIGpwZywgZ2lmIGFuZCBzdmcuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbmcuCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgot
Ci1ET1RfSU1BR0VfRk9STUFUICAgICAgID0gcG5nCi0KLSMgSWYgRE9UX0lNQUdFX0ZPUk1BVCBp
cyBzZXQgdG8gc3ZnLCB0aGVuIHRoaXMgb3B0aW9uIGNhbiBiZSBzZXQgdG8gWUVTIHRvCi0jIGVu
YWJsZSBnZW5lcmF0aW9uIG9mIGludGVyYWN0aXZlIFNWRyBpbWFnZXMgdGhhdCBhbGxvdyB6b29t
aW5nIGFuZCBwYW5uaW5nLgotIwotIyBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhIG1vZGVybiBi
cm93c2VyIG90aGVyIHRoYW4gSW50ZXJuZXQgRXhwbG9yZXIuIFRlc3RlZAotIyBhbmQgd29ya2lu
ZyBhcmUgRmlyZWZveCwgQ2hyb21lLCBTYWZhcmksIGFuZCBPcGVyYS4KLSMgTm90ZTogRm9yIElF
IDkrIHlvdSBuZWVkIHRvIHNldCBIVE1MX0ZJTEVfRVhURU5TSU9OIHRvIHhodG1sIGluIG9yZGVy
IHRvIG1ha2UKLSMgdGhlIFNWRyBmaWxlcyB2aXNpYmxlLiBPbGRlciB2ZXJzaW9ucyBvZiBJRSBk
byBub3QgaGF2ZSBTVkcgc3VwcG9ydC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
SU5URVJBQ1RJVkVfU1ZHICAgICAgICA9IE5PCi0KLSMgVGhlIERPVF9QQVRIIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHdoZXJlIHRoZSBkb3QgdG9vbCBjYW4gYmUKLSMgZm91
bmQuIElmIGxlZnQgYmxhbmssIGl0IGlzIGFzc3VtZWQgdGhlIGRvdCB0b29sIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgcGF0aC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9U
IGlzIHNldCB0byBZRVMuCi0KLURPVF9QQVRIICAgICAgICAgICAgICAgPSAlRE9UX1BBVEglCi0K
LSMgVGhlIERPVEZJTEVfRElSUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9y
ZSBkaXJlY3RvcmllcyB0aGF0Ci0jIGNvbnRhaW4gZG90IGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVk
IGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlIFxkb3RmaWxlCi0jIGNvbW1hbmQpLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
RE9URklMRV9ESVJTICAgICAgICAgICA9Ci0KLSMgVGhlIE1TQ0ZJTEVfRElSUyB0YWcgY2FuIGJl
IHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0Ci0jIGNvbnRhaW4g
bXNjIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhl
IFxtc2NmaWxlCi0jIGNvbW1hbmQpLgotCi1NU0NGSUxFX0RJUlMgICAgICAgICAgID0KLQotIyBU
aGUgRE9UX0dSQVBIX01BWF9OT0RFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVt
IG51bWJlciBvZiBub2RlcwotIyB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhlIGdyYXBoLiBJZiB0
aGUgbnVtYmVyIG9mIG5vZGVzIGluIGEgZ3JhcGggYmVjb21lcwotIyBsYXJnZXIgdGhhbiB0aGlz
IHZhbHVlLCBkb3h5Z2VuIHdpbGwgdHJ1bmNhdGUgdGhlIGdyYXBoLCB3aGljaCBpcyB2aXN1YWxp
emVkCi0jIGJ5IHJlcHJlc2VudGluZyBhIG5vZGUgYXMgYSByZWQgYm94LiBOb3RlIHRoYXQgZG94
eWdlbiBpZiB0aGUgbnVtYmVyIG9mIGRpcmVjdAotIyBjaGlsZHJlbiBvZiB0aGUgcm9vdCBub2Rl
IGluIGEgZ3JhcGggaXMgYWxyZWFkeSBsYXJnZXIgdGhhbgotIyBET1RfR1JBUEhfTUFYX05PREVT
IHRoZW4gdGhlIGdyYXBoIHdpbGwgbm90IGJlIHNob3duIGF0IGFsbC4gQWxzbyBub3RlIHRoYXQK
LSMgdGhlIHNpemUgb2YgYSBncmFwaCBjYW4gYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IE1BWF9E
T1RfR1JBUEhfREVQVEguCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMDAw
LCBkZWZhdWx0IHZhbHVlOiA1MC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhB
VkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9HUkFQSF9NQVhfTk9ERVMgICAgPSA1MAotCi0j
IFRoZSBNQVhfRE9UX0dSQVBIX0RFUFRIIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGlt
dW0gZGVwdGggb2YgdGhlIGdyYXBocwotIyBnZW5lcmF0ZWQgYnkgZG90LiBBIGRlcHRoIHZhbHVl
IG9mIDMgbWVhbnMgdGhhdCBvbmx5IG5vZGVzIHJlYWNoYWJsZSBmcm9tIHRoZQotIyByb290IGJ5
IGZvbGxvd2luZyBhIHBhdGggdmlhIGF0IG1vc3QgMyBlZGdlcyB3aWxsIGJlIHNob3duLiBOb2Rl
cyB0aGF0IGxheQotIyBmdXJ0aGVyIGZyb20gdGhlIHJvb3Qgbm9kZSB3aWxsIGJlIG9taXR0ZWQu
IE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgb3B0aW9uIHRvIDEKLSMgb3IgMiBtYXkgZ3JlYXRseSBy
ZWR1Y2UgdGhlIGNvbXB1dGF0aW9uIHRpbWUgbmVlZGVkIGZvciBsYXJnZSBjb2RlIGJhc2VzLiBB
bHNvCi0jIG5vdGUgdGhhdCB0aGUgc2l6ZSBvZiBhIGdyYXBoIGNhbiBiZSBmdXJ0aGVyIHJlc3Ry
aWN0ZWQgYnkKLSMgRE9UX0dSQVBIX01BWF9OT0RFUy4gVXNpbmcgYSBkZXB0aCBvZiAwIG1lYW5z
IG5vIGRlcHRoIHJlc3RyaWN0aW9uLgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVl
OiAxMDAwLCBkZWZhdWx0IHZhbHVlOiAwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotTUFYX0RPVF9HUkFQSF9ERVBUSCAgICA9IDEw
MDAKLQotIyBTZXQgdGhlIERPVF9UUkFOU1BBUkVOVCB0YWcgdG8gWUVTIHRvIGdlbmVyYXRlIGlt
YWdlcyB3aXRoIGEgdHJhbnNwYXJlbnQKLSMgYmFja2dyb3VuZC4gVGhpcyBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0LCBiZWNhdXNlIGRvdCBvbiBXaW5kb3dzIGRvZXMgbm90IHNlZW0KLSMgdG8gc3Vw
cG9ydCB0aGlzIG91dCBvZiB0aGUgYm94LgotIwotIyBXYXJuaW5nOiBEZXBlbmRpbmcgb24gdGhl
IHBsYXRmb3JtIHVzZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBsZWFkIHRvCi0jIGJhZGx5
IGFudGktYWxpYXNlZCBsYWJlbHMgb24gdGhlIGVkZ2VzIG9mIGEgZ3JhcGggKGkuZS4gdGhleSBi
ZWNvbWUgaGFyZCB0bwotIyByZWFkKS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
RE9UX1RSQU5TUEFSRU5UICAgICAgICA9IE5PCi0KLSMgU2V0IHRoZSBET1RfTVVMVElfVEFSR0VU
UyB0YWcgdG8gWUVTIGFsbG93IGRvdCB0byBnZW5lcmF0ZSBtdWx0aXBsZSBvdXRwdXQKLSMgZmls
ZXMgaW4gb25lIHJ1biAoaS5lLiBtdWx0aXBsZSAtbyBhbmQgLVQgb3B0aW9ucyBvbiB0aGUgY29t
bWFuZCBsaW5lKS4gVGhpcwotIyBtYWtlcyBkb3QgcnVuIGZhc3RlciwgYnV0IHNpbmNlIG9ubHkg
bmV3ZXIgdmVyc2lvbnMgb2YgZG90ICg+MS44LjEwKSBzdXBwb3J0Ci0jIHRoaXMsIHRoaXMgZmVh
dHVyZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVT
LgotCi1ET1RfTVVMVElfVEFSR0VUUyAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0xF
R0VORCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBsZWdlbmQgcGFn
ZQotIyBleHBsYWluaW5nIHRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGJveGVzIGFuZCBhcnJv
d3MgaW4gdGhlIGRvdCBnZW5lcmF0ZWQKLSMgZ3JhcGhzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0
IHRvIFlFUy4KLQotR0VORVJBVEVfTEVHRU5EICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBET1Rf
Q0xFQU5VUCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgcmVtb3ZlIHRoZSBpbnRlcm1l
ZGlhdGUgZG90Ci0jIGZpbGVzIHRoYXQgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHZhcmlvdXMg
Z3JhcGhzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJl
cyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX0NMRUFOVVAgICAg
ICAgICAgICA9IFlFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvZm9vdGVyLmh0bWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rv
Yy9mb290ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI0YmYyYjliNDdl
OTk5MjI1Mjg5ZmU4YjYxYjIwZWI5Y2ZiNWNkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9mb290ZXIuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDIxICswLDAgQEAKLTwhLS0gSFRNTCBmb290ZXIgZm9yIGRveHlnZW4gMS44LjEzLS0+Ci08
IS0tIHN0YXJ0IGZvb3RlciBwYXJ0IC0tPgotPCEtLUJFR0lOIEdFTkVSQVRFX1RSRUVWSUVXLS0+
Ci08ZGl2IGlkPSJuYXYtcGF0aCIgY2xhc3M9Im5hdnBhdGgiPjwhLS0gaWQgaXMgbmVlZGVkIGZv
ciB0cmVldmlldyBmdW5jdGlvbiEgLS0+Ci0gIDx1bD4KLSAgICAkbmF2cGF0aAotICAgIDxsaSBj
bGFzcz0iZm9vdGVyIj4kZ2VuZXJhdGVkYnkKLSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmRveHln
ZW4ub3JnL2luZGV4Lmh0bWwiPgotICAgIDxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSIkcmVscGF0
aF5kb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIi8+PC9hPiAkZG94eWdlbnZlcnNpb24gPC9saT4K
LSAgPC91bD4KLTwvZGl2PgotPCEtLUVORCBHRU5FUkFURV9UUkVFVklFVy0tPgotPCEtLUJFR0lO
ICFHRU5FUkFURV9UUkVFVklFVy0tPgotPGhyIGNsYXNzPSJmb290ZXIiLz48YWRkcmVzcyBjbGFz
cz0iZm9vdGVyIj48c21hbGw+Ci0kZ2VuZXJhdGVkYnkgJiMxNjA7PGEgaHJlZj0iaHR0cDovL3d3
dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSIkcmVs
cGF0aF5kb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIi8+Ci08L2E+ICRkb3h5Z2VudmVyc2lvbgot
PC9zbWFsbD48L2FkZHJlc3M+Ci08IS0tRU5EICFHRU5FUkFURV9UUkVFVklFVy0tPgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvaGVhZGVyLmh0bWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9o
ZWFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiOTNlMDg0ZDViZTZk
MTBlNWI4OTkyNDIwZWQ2NzAwNGE0MjdiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9oZWFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDY0ICswLDAgQEAKLTwhLS0gSFRNTCBoZWFkZXIgZm9yIGRveHlnZW4gMS44LjEzLS0+Ci08IURP
Q1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VO
IiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0
ZCI+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4K
LTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFy
c2V0PVVURi04Ii8+Ci08bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9
IklFPTkiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAkZG94eWdl
bnZlcnNpb24iLz4KLTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgsIGluaXRpYWwtc2NhbGU9MSIvPgotPGxpbmsgaHJlZj0iJHJlbHBhdGhedGFicy5jc3Mi
IHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IiRyZWxwYXRoXmpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIkcmVscGF0aF5keW5zZWN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci0kdHJlZXZpZXcKLSRzZWFyY2gKLSRtYXRoamF4Ci08bGluayBocmVmPSIkcmVscGF0aF4k
c3R5bGVzaGVldCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KLSRleHRyYXN0
eWxlc2hlZXQKLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0idG9wIj48IS0tIGRvIG5vdCByZW1v
dmUgdGhpcyBkaXYsIGl0IGlzIGNsb3NlZCBieSBkb3h5Z2VuISAtLT4KLQotPCEtLUJFR0lOIFRJ
VExFQVJFQS0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIg
Y2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgot
ICA8IS0tQkVHSU4gUFJPSkVDVF9MT0dPLS0+Ci0gIDx0ZCBpZD0icHJvamVjdGxvZ28iPjxpbWcg
YWx0PSJMb2dvIiBzcmM9IiRyZWxwYXRoXiRwcm9qZWN0bG9nbyIvPjwvdGQ+Ci0gIDwhLS1FTkQg
UFJPSkVDVF9MT0dPLS0+Ci0gIDwhLS1CRUdJTiBESVNBQkxFX0lOREVYLS0+Ci0gICA8IS0tQkVH
SU4gU0VBUkNIRU5HSU5FLS0+Ci0gICA8dGQ+JHNlYXJjaGJveDwvdGQ+Ci0gICA8IS0tRU5EIFNF
QVJDSEVOR0lORS0tPgotICA8IS0tRU5EIERJU0FCTEVfSU5ERVgtLT4KLSA8L3RyPgotIDwvdGJv
ZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tRU5EIFRJVExFQVJFQS0tPgotPGJvZHkgYmdjb2xv
cj0iI2ZmZmZmZiI+Ci08dGFibGUgd2lkdGg9IjEwMCUiPgotICA8dHI+Ci0gICAgPHRkIHdpZHRo
PSIzMCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249ImNlbnRlciI+Ci0gICAgICA8YSBocmVmPSJodHRw
czovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwIj4KLSAgICAgIEpzb25D
cHAgcHJvamVjdCBwYWdlCi0gICAgICA8L2E+Ci0gICAgPC90ZD4KLSAgICA8dGQgd2lkdGg9IjIw
JSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJjZW50ZXIiPgotICAgICAgPGEgaHJlZj0iaGllcmFy
Y2h5Lmh0bWwiPgotICAgICAgICBDbGFzc2VzCi0gICAgICA8L2E+Ci0gICAgPC90ZD4KLSAgICA8
dGQgd2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJjZW50ZXIiPgotICAgICAgPGEg
aHJlZj0ibmFtZXNwYWNlX2pzb24uaHRtbCI+Ci0gICAgICAgIE5hbWVzcGFjZQotICAgICAgPC9h
PgotICAgIDwvdGQ+Ci0gICAgPHRkIHdpZHRoPSIzMCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJj
ZW50ZXIiPgotICAgICAgPGEgaHJlZj0iaHR0cDovL29wZW4tc291cmNlLXBhcnNlcnMuZ2l0aHVi
LmlvL2pzb25jcHAtZG9jcy9kb3h5Z2VuLyI+SnNvbkNwcCBob21lIHBhZ2U8L2E+Ci0gICAgPC90
ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci0KLTxocj4KLTwhLS0gZW5kIGhlYWRlciBwYXJ0IC0tPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9kb2MvanNvbmNwcC5kb3ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9qc29uY3BwLmRveApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdlZmM4YTM1NzZjZjQ1NGI1Y2FmMjU1ODJh
Mzg0Y2Q1MGI4NTM2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2RvYy9qc29uY3BwLmRveAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBA
Ci0vKioKLVxtYWlucGFnZQotXHNlY3Rpb24gX2ludHJvIEludHJvZHVjdGlvbgotCi08YSBIUkVG
PSJodHRwOi8vd3d3Lmpzb24ub3JnLyI+SlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24p
PC9hPgotIGlzIGEgbGlnaHR3ZWlnaHQgZGF0YS1pbnRlcmNoYW5nZSBmb3JtYXQuIAotCi1IZXJl
IGlzIGFuIGV4YW1wbGUgb2YgSlNPTiBkYXRhOgotXHZlcmJhdGltCi17Ci0gICAgImVuY29kaW5n
IiA6ICJVVEYtOCIsCi0gICAgInBsdWctaW5zIiA6IFsKLSAgICAgICAgInB5dGhvbiIsCi0gICAg
ICAgICJjKysiLAotICAgICAgICAicnVieSIKLSAgICAgICAgXSwKLSAgICAiaW5kZW50IiA6IHsg
Imxlbmd0aCIgOiAzLCAidXNlX3NwYWNlIjogdHJ1ZSB9Ci19Ci1cZW5kdmVyYmF0aW0KLTxiPkpz
b25DcHA8L2I+IHN1cHBvcnRzIGNvbW1lbnRzIGFzIDxpPm1ldGEtZGF0YTwvaT46Ci1cY29kZQot
Ly8gQ29uZmlndXJhdGlvbiBvcHRpb25zCi17Ci0gICAgLy8gRGVmYXVsdCBlbmNvZGluZyBmb3Ig
dGV4dAotICAgICJlbmNvZGluZyIgOiAiVVRGLTgiLAotICAgIAotICAgIC8vIFBsdWctaW5zIGxv
YWRlZCBhdCBzdGFydC11cAotICAgICJwbHVnLWlucyIgOiBbCi0gICAgICAgICJweXRob24iLAot
ICAgICAgICAiYysrIiwgIC8vIHRyYWlsaW5nIGNvbW1lbnQKLSAgICAgICAgInJ1YnkiCi0gICAg
ICAgIF0sCi0gICAgICAgIAotICAgIC8vIFRhYiBpbmRlbnQgc2l6ZQotICAgIC8vIChtdWx0aS1s
aW5lIGNvbW1lbnQpCi0gICAgImluZGVudCIgOiB7IC8qZW1iZWRkZWQgY29tbWVudCovICJsZW5n
dGgiIDogMywgInVzZV9zcGFjZSI6IHRydWUgfQotfQotXGVuZGNvZGUKLQotXHNlY3Rpb24gX2Zl
YXR1cmVzIEZlYXR1cmVzCi0tIHJlYWQgYW5kIHdyaXRlIEpTT04gZG9jdW1lbnQKLS0gYXR0YWNo
IEMrKyBzdHlsZSBjb21tZW50cyB0byBlbGVtZW50IGR1cmluZyBwYXJzaW5nCi0tIHJld3JpdGUg
SlNPTiBkb2N1bWVudCBwcmVzZXJ2aW5nIG9yaWdpbmFsIGNvbW1lbnRzCi0KLU5vdGVzOiBDb21t
ZW50cyB1c2VkIHRvIGJlIHN1cHBvcnRlZCBpbiBKU09OIGJ1dCB3ZXJlIHJlbW92ZWQgZm9yCi1w
b3J0YWJpbGl0eSAoQyBsaWtlIGNvbW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIFB5dGhvbiku
IFNpbmNlCi1jb21tZW50cyBhcmUgdXNlZnVsIGluIGNvbmZpZ3VyYXRpb24vaW5wdXQgZmlsZSwg
dGhpcyBmZWF0dXJlIHdhcwotcHJlc2VydmVkLgotCi1cc2VjdGlvbiBfZXhhbXBsZSBDb2RlIGV4
YW1wbGUKLQotXGNvZGUKLUpzb246OlZhbHVlIHJvb3Q7ICAgLy8gJ3Jvb3QnIHdpbGwgY29udGFp
biB0aGUgcm9vdCB2YWx1ZSBhZnRlciBwYXJzaW5nLgotc3RkOjpjaW4gPj4gcm9vdDsKLQotLy8g
WW91IGNhbiBhbHNvIHJlYWQgaW50byBhIHBhcnRpY3VsYXIgc3ViLXZhbHVlLgotc3RkOjpjaW4g
Pj4gcm9vdFsic3VidHJlZSJdOwotCi0vLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSBtZW1iZXIgb2Yg
cm9vdCBuYW1lZCAnZW5jb2RpbmcnLAotLy8gYW5kIHJldHVybiAnVVRGLTgnIGlmIHRoZXJlIGlz
IG5vIHN1Y2ggbWVtYmVyLgotc3RkOjpzdHJpbmcgZW5jb2RpbmcgPSByb290LmdldCgiZW5jb2Rp
bmciLCAiVVRGLTgiICkuYXNTdHJpbmcoKTsKLQotLy8gR2V0IHRoZSB2YWx1ZSBvZiB0aGUgbWVt
YmVyIG9mIHJvb3QgbmFtZWQgJ3BsdWctaW5zJzsgcmV0dXJuIGEgJ251bGwnIHZhbHVlIGlmCi0v
LyB0aGVyZSBpcyBubyBzdWNoIG1lbWJlci4KLWNvbnN0IEpzb246OlZhbHVlIHBsdWdpbnMgPSBy
b290WyJwbHVnLWlucyJdOwotCi0vLyBJdGVyYXRlIG92ZXIgdGhlIHNlcXVlbmNlIGVsZW1lbnRz
LgotZm9yICggaW50IGluZGV4ID0gMDsgaW5kZXggPCBwbHVnaW5zLnNpemUoKTsgKytpbmRleCAp
Ci0gICBsb2FkUGx1Z0luKCBwbHVnaW5zW2luZGV4XS5hc1N0cmluZygpICk7Ci0gICAKLS8vIFRy
eSBvdGhlciBkYXRhdHlwZXMuIFNvbWUgYXJlIGF1dG8tY29udmVydGlibGUgdG8gb3RoZXJzLgot
Zm9vOjpzZXRJbmRlbnRMZW5ndGgoIHJvb3RbImluZGVudCJdLmdldCgibGVuZ3RoIiwgMykuYXNJ
bnQoKSApOwotZm9vOjpzZXRJbmRlbnRVc2VTcGFjZSggcm9vdFsiaW5kZW50Il0uZ2V0KCJ1c2Vf
c3BhY2UiLCB0cnVlKS5hc0Jvb2woKSApOwotCi0vLyBTaW5jZSBKc29uOjpWYWx1ZSBoYXMgYW4g
aW1wbGljaXQgY29uc3RydWN0b3IgZm9yIGFsbCB2YWx1ZSB0eXBlcywgaXQgaXMgbm90Ci0vLyBu
ZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjb25zdHJ1Y3QgdGhlIEpzb246OlZhbHVlIG9iamVjdC4K
LXJvb3RbImVuY29kaW5nIl0gPSBmb286OmdldEN1cnJlbnRFbmNvZGluZygpOwotcm9vdFsiaW5k
ZW50Il1bImxlbmd0aCJdID0gZm9vOjpnZXRDdXJyZW50SW5kZW50TGVuZ3RoKCk7Ci1yb290WyJp
bmRlbnQiXVsidXNlX3NwYWNlIl0gPSBmb286OmdldEN1cnJlbnRJbmRlbnRVc2VTcGFjZSgpOwot
Ci0vLyBJZiB5b3UgbGlrZSB0aGUgZGVmYXVsdHMsIHlvdSBjYW4gaW5zZXJ0IGRpcmVjdGx5IGlu
dG8gYSBzdHJlYW0uCi1zdGQ6OmNvdXQgPDwgcm9vdDsKLS8vIE9mIGNvdXJzZSwgeW91IGNhbiB3
cml0ZSB0byBgc3RkOjpvc3RyaW5nc3RyZWFtYCBpZiB5b3UgcHJlZmVyLgotCi0vLyBJZiBkZXNp
cmVkLCByZW1lbWJlciB0byBhZGQgYSBsaW5lZmVlZCBhbmQgZmx1c2guCi1zdGQ6OmNvdXQgPDwg
c3RkOjplbmRsOwotXGVuZGNvZGUKLQotXHNlY3Rpb24gX2FkdmFuY2VkIEFkdmFuY2VkIHVzYWdl
Ci0KLUNvbmZpZ3VyZSAqYnVpbGRlcnMqIHRvIGNyZWF0ZSAqcmVhZGVycyogYW5kICp3cml0ZXJz
Ki4gRm9yCi1jb25maWd1cmF0aW9uLCB3ZSB1c2Ugb3VyIG93biBgSnNvbjo6VmFsdWVgIChyYXRo
ZXIgdGhhbgotc3RhbmRhcmQgc2V0dGVycy9nZXR0ZXJzKSBzbyB0aGF0IHdlIGNhbiBhZGQKLWZl
YXR1cmVzIHdpdGhvdXQgbG9zaW5nIGJpbmFyeS1jb21wYXRpYmlsaXR5LgotCi1cY29kZQotLy8g
Rm9yIGNvbnZlbmllbmNlLCB1c2UgYHdyaXRlU3RyaW5nKClgIHdpdGggYSBzcGVjaWFsaXplZCBi
dWlsZGVyLgotSnNvbjo6U3RyZWFtV3JpdGVyQnVpbGRlciB3YnVpbGRlcjsKLXdidWlsZGVyWyJp
bmRlbnRhdGlvbiJdID0gIlx0IjsKLXN0ZDo6c3RyaW5nIGRvY3VtZW50ID0gSnNvbjo6d3JpdGVT
dHJpbmcod2J1aWxkZXIsIHJvb3QpOwotCi0vLyBIZXJlLCB1c2luZyBhIHNwZWNpYWxpemVkIEJ1
aWxkZXIsIHdlIGRpc2NhcmQgY29tbWVudHMgYW5kCi0vLyByZWNvcmQgZXJyb3JzIGFzIHdlIHBh
cnNlLgotSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgcmJ1aWxkZXI7Ci1yYnVpbGRlclsiY29sbGVj
dENvbW1lbnRzIl0gPSBmYWxzZTsKLXN0ZDo6c3RyaW5nIGVycnM7Ci1ib29sIG9rID0gSnNvbjo6
cGFyc2VGcm9tU3RyZWFtKHJidWlsZGVyLCBzdGQ6OmNpbiwgJnJvb3QsICZlcnJzKTsKLVxlbmRj
b2RlCi0KLVllcywgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb24tY2hlY2tpbmcgd291bGQgYmUg
aGVscGZ1bCwKLWJ1dCBgSnNvbjo6VmFsdWVgIGxldHMgeW91Ci13cml0ZSBhbmQgcmVhZCB0aGUg
YnVpbGRlciBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBiZXR0ZXIhIEluIG90aGVyIHdvcmRzLAot
eW91IGNhbiBjb25maWd1cmUgeW91ciBKU09OIHBhcnNlciB1c2luZyBKU09OLgotCi1DaGFyUmVh
ZGVycyBhbmQgU3RyZWFtV3JpdGVycyBhcmUgbm90IHRocmVhZC1zYWZlLCBidXQgdGhleSBhcmUg
cmUtdXNhYmxlLgotXGNvZGUKLUpzb246OkNoYXJSZWFkZXJCdWlsZGVyIHJidWlsZGVyOwotY2Zn
ID4+IHJidWlsZGVyLnNldHRpbmdzXzsKLXN0ZDo6dW5pcXVlX3B0cjxKc29uOjpDaGFyUmVhZGVy
PiBjb25zdCByZWFkZXIocmJ1aWxkZXIubmV3Q2hhclJlYWRlcigpKTsKLXJlYWRlci0+cGFyc2Uo
c3RhcnQsIHN0b3AsICZ2YWx1ZTEsICZlcnJzKTsKLS8vIC4uLgotcmVhZGVyLT5wYXJzZShzdGFy
dCwgc3RvcCwgJnZhbHVlMiwgJmVycnMpOwotLy8gZXRjLgotXGVuZGNvZGUKLQotXHNlY3Rpb24g
X3BidWlsZCBCdWlsZCBpbnN0cnVjdGlvbnMKLVRoZSBidWlsZCBpbnN0cnVjdGlvbnMgYXJlIGxv
Y2F0ZWQgaW4gdGhlIGZpbGUgCi08YSBIUkVGPSJodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3Vy
Y2UtcGFyc2Vycy9qc29uY3BwL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FLm1kPC9hPiBp
biB0aGUgdG9wLWRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4KLQotVGhlIGxhdGVzdCB2ZXJzaW9u
IG9mIHRoZSBzb3VyY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBwcm9qZWN0J3MgR2l0SHViIHJlcG9z
aXRvcnk6Ci08YSBIUkVGPSJodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9q
c29uY3BwLyI+Ci1qc29uY3BwPC9hPgotCi1cc2VjdGlvbiBfbmV3cyBXaGF0J3MgTmV3PwotVGhl
IGRlc2NyaXB0aW9uIG9mIGxhdGVzdCBjaGFuZ2VzIGNhbiBiZSBmb3VuZCBpbiAKLTxhIEhSRUY9
Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvd2lraS9ORVdT
Ij4KLSAgdGhlIE5FV1Mgd2lraQotPC9hPi4KLQotXHNlY3Rpb24gX3JsaW5rcyBSZWxhdGVkIGxp
bmtzCi0tIDxhIEhSRUY9Imh0dHA6Ly93d3cuanNvbi5vcmcvIj5KU09OPC9hPiBTcGVjaWZpY2F0
aW9uIGFuZCBhbHRlcm5hdGUgbGFuZ3VhZ2UgaW1wbGVtZW50YXRpb25zLgotLSA8YSBIUkVGPSJo
dHRwOi8vd3d3LnlhbWwub3JnLyI+WUFNTDwvYT4gQSBkYXRhIGZvcm1hdCBkZXNpZ25lZCBmb3Ig
aHVtYW4gcmVhZGFiaWxpdHkuCi0tIDxhIEhSRUY9Imh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35t
Z2syNS91bmljb2RlLmh0bWwiPlVURi04IGFuZCBVbmljb2RlIEZBUTwvYT4uCi0KLVxzZWN0aW9u
IF9wbGlua3MgT2xkIHByb2plY3QgbGlua3MKLS0gPGEgaHJlZj0iaHR0cHM6Ly9zb3VyY2Vmb3Jn
ZS5uZXQvcHJvamVjdHMvanNvbmNwcC8iPmh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Rz
L2pzb25jcHAvPC9hPgotLSA8YSBocmVmPSJodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQi
Pmh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldDwvYT4KLS0gPGEgaHJlZj0iaHR0cDovL3Nv
dXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9qc29uY3BwL2ZpbGVzLyI+aHR0cDovL3NvdXJjZWZvcmdl
Lm5ldC9wcm9qZWN0cy9qc29uY3BwL2ZpbGVzLzwvYT4KLS0gPGEgaHJlZj0iaHR0cDovL2pzb25j
cHAuc3ZuLnNvdXJjZWZvcmdlLm5ldC9zdm5yb290L2pzb25jcHAvdHJ1bmsvIj5odHRwOi8vanNv
bmNwcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvanNvbmNwcC90cnVuay88L2E+Ci0tIDxh
IGhyZWY9Imh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9vbGQuaHRtbCI+aHR0cDovL2pz
b25jcHAuc291cmNlZm9yZ2UubmV0L29sZC5odG1sPC9hPgotCi1cc2VjdGlvbiBfbGljZW5zZSBM
aWNlbnNlCi1TZWUgZmlsZSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2Ut
cGFyc2Vycy9qc29uY3BwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UiPjxjb2RlPkxJQ0VOU0U8L2NvZGU+
PC9hPiBpbiB0aGUgdG9wLWRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4KLQotQmFzaWNhbGx5IEpz
b25DcHAgaXMgbGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYg
ZGVzaXJlZCAKLWFuZCByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotCi1cYXV0aG9y
IEJhcHRpc3RlIExlcGlsbGV1ciA8YmxlcEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IChvcmlnaW5h
dG9yKQotXGF1dGhvciBDaHJpc3RvcGhlciBEdW5uIDxjZHVubjIwMDFAZ21haWwuY29tPiAocHJp
bWFyeSBtYWludGFpbmVyKQotXHZlcnNpb24gXGluY2x1ZGUgdmVyc2lvbgotV2UgbWFrZSBzdHJv
bmcgZ3VhcmFudGVlcyBhYm91dCBiaW5hcnktY29tcGF0aWJpbGl0eSwgY29uc2lzdGVudCB3aXRo
Ci08YSBocmVmPSJodHRwOi8vYXByLmFwYWNoZS5vcmcvdmVyc2lvbmluZy5odG1sIj50aGUgQXBh
Y2hlIHZlcnNpb25pbmcgc2NoZW1lPC9hPi4KLVxzYSB2ZXJzaW9uLmgKLSovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL2RvYy9yZWFkbWUudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvcmVhZG1lLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGU0MmNkZmI0Y2ZkZWQxZDgwMmU0YzA1MTQxYjg5NDJjMzM5YTVl
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rv
Yy9yZWFkbWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhlIGRvY3VtZW50YXRp
b24gaXMgZ2VuZXJhdGVkIHVzaW5nIGRveHlnZW4gKGh0dHA6Ly93d3cuZG94eWdlbi5vcmcpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9kb2Mvcm9hZG1hcC5kb3ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9yb2FkbWFwLmRveApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyOTRiYmJkMjlkMTk4NjliMThiNmMyNzRk
M2EzZTE5YjlmZDg5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2RvYy9yb2FkbWFwLmRveAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAot
LyohIFxwYWdlIHJvYWRtYXAgSnNvbkNwcCByb2FkbWFwCi0gIE1vdmVkIHRvOiBodHRwczovL2dp
dGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwL3dpa2kvUm9hZG1hcAotKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvZG9jL3dlYl9kb3h5ZmlsZS5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL3dlYl9kb3h5Zmls
ZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwOWRjY2FlYzUwMGUzMTU3ZjFm
MjRlZjNhMzY2MmRjYWRkMmVlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL2RvYy93ZWJfZG94eWZpbGUuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwy
MjkwICswLDAgQEAKLSMgRG94eWZpbGUgMS44LjUKLQotIyBUaGlzIGZpbGUgZGVzY3JpYmVzIHRo
ZSBzZXR0aW5ncyB0byBiZSB1c2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIHN5c3RlbQotIyBkb3h5
Z2VuICh3d3cuZG94eWdlbi5vcmcpIGZvciBhIHByb2plY3QuCi0jCi0jIEFsbCB0ZXh0IGFmdGVy
IGEgZG91YmxlIGhhc2ggKCMjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgaXMgcGxhY2Vk
IGluCi0jIGZyb250IG9mIHRoZSBUQUcgaXQgaXMgcHJlY2VkaW5nLgotIwotIyBBbGwgdGV4dCBh
ZnRlciBhIHNpbmdsZSBoYXNoICgjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgd2lsbCBi
ZSBpZ25vcmVkLgotIyBUaGUgZm9ybWF0IGlzOgotIyBUQUcgPSB2YWx1ZSBbdmFsdWUsIC4uLl0K
LSMgRm9yIGxpc3RzLCBpdGVtcyBjYW4gYWxzbyBiZSBhcHBlbmRlZCB1c2luZzoKLSMgVEFHICs9
IHZhbHVlIFt2YWx1ZSwgLi4uXQotIyBWYWx1ZXMgdGhhdCBjb250YWluIHNwYWNlcyBzaG91bGQg
YmUgcGxhY2VkIGJldHdlZW4gcXVvdGVzIChcIiBcIikuCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSMgUHJvamVjdCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwotIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0jIFRoaXMgdGFnIHNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdXNlZCBmb3IgYWxsIGNo
YXJhY3RlcnMgaW4gdGhlIGNvbmZpZyBmaWxlCi0jIHRoYXQgZm9sbG93LiBUaGUgZGVmYXVsdCBp
cyBVVEYtOCB3aGljaCBpcyBhbHNvIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgdGV4dAotIyBi
ZWZvcmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhpcyB0YWcuIERveHlnZW4gdXNlcyBsaWJp
Y29udiAob3IgdGhlIGljb252Ci0jIGJ1aWx0IGludG8gbGliYykgZm9yIHRoZSB0cmFuc2NvZGlu
Zy4gU2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udgotIyBmb3IgdGhlIGxp
c3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogVVRGLTgu
Ci0KLURPWFlGSUxFX0VOQ09ESU5HICAgICAgPSBVVEYtOAotCi0jIFRoZSBQUk9KRUNUX05BTUUg
dGFnIGlzIGEgc2luZ2xlIHdvcmQgKG9yIGEgc2VxdWVuY2Ugb2Ygd29yZHMgc3Vycm91bmRlZCBi
eQotIyBkb3VibGUtcXVvdGVzLCB1bmxlc3MgeW91IGFyZSB1c2luZyBEb3h5d2l6YXJkKSB0aGF0
IHNob3VsZCBpZGVudGlmeSB0aGUKLSMgcHJvamVjdCBmb3Igd2hpY2ggdGhlIGRvY3VtZW50YXRp
b24gaXMgZ2VuZXJhdGVkLiBUaGlzIG5hbWUgaXMgdXNlZCBpbiB0aGUKLSMgdGl0bGUgb2YgbW9z
dCBnZW5lcmF0ZWQgcGFnZXMgYW5kIGluIGEgZmV3IG90aGVyIHBsYWNlcy4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE15IFByb2plY3QuCi0KLVBST0pFQ1RfTkFNRSAgICAgICAgICAgPSAiSnNv
bkNwcCIKLQotIyBUaGUgUFJPSkVDVF9OVU1CRVIgdGFnIGNhbiBiZSB1c2VkIHRvIGVudGVyIGEg
cHJvamVjdCBvciByZXZpc2lvbiBudW1iZXIuIFRoaXMKLSMgY291bGQgYmUgaGFuZHkgZm9yIGFy
Y2hpdmluZyB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gb3IgaWYgc29tZSB2ZXJzaW9uCi0j
IGNvbnRyb2wgc3lzdGVtIGlzIHVzZWQuCi0KLVBST0pFQ1RfTlVNQkVSICAgICAgICAgPSAlSlNP
TkNQUF9WRVJTSU9OJQotCi0jIFVzaW5nIHRoZSBQUk9KRUNUX0JSSUVGIHRhZyBvbmUgY2FuIHBy
b3ZpZGUgYW4gb3B0aW9uYWwgb25lIGxpbmUgZGVzY3JpcHRpb24KLSMgZm9yIGEgcHJvamVjdCB0
aGF0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiBlYWNoIHBhZ2UgYW5kIHNob3VsZCBnaXZlIHZpZXdl
ciBhCi0jIHF1aWNrIGlkZWEgYWJvdXQgdGhlIHB1cnBvc2Ugb2YgdGhlIHByb2plY3QuIEtlZXAg
dGhlIGRlc2NyaXB0aW9uIHNob3J0LgotCi1QUk9KRUNUX0JSSUVGICAgICAgICAgICA9ICJKU09O
IGRhdGEgZm9ybWF0IG1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotCi0jIFdpdGggdGhlIFBST0pFQ1Rf
TE9HTyB0YWcgb25lIGNhbiBzcGVjaWZ5IGFuIGxvZ28gb3IgaWNvbiB0aGF0IGlzIGluY2x1ZGVk
IGluCi0jIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgbWF4aW11bSBoZWlnaHQgb2YgdGhlIGxvZ28g
c2hvdWxkIG5vdCBleGNlZWQgNTUgcGl4ZWxzCi0jIGFuZCB0aGUgbWF4aW11bSB3aWR0aCBzaG91
bGQgbm90IGV4Y2VlZCAyMDAgcGl4ZWxzLiBEb3h5Z2VuIHdpbGwgY29weSB0aGUgbG9nbwotIyB0
byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4KLQotUFJPSkVDVF9MT0dPICAgICAgICAgICA9Ci0KLSMg
VGhlIE9VVFBVVF9ESVJFQ1RPUlkgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgKHJlbGF0aXZl
IG9yIGFic29sdXRlKSBwYXRoCi0jIGludG8gd2hpY2ggdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0
aW9uIHdpbGwgYmUgd3JpdHRlbi4gSWYgYSByZWxhdGl2ZSBwYXRoIGlzCi0jIGVudGVyZWQsIGl0
IHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIGRveHlnZW4gd2FzIHN0YXJ0
ZWQuIElmCi0jIGxlZnQgYmxhbmsgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgdXNlZC4K
LQotT1VUUFVUX0RJUkVDVE9SWSAgICAgICA9ICVET0NfVE9QRElSJQotCi0jIElmIHRoZSBDUkVB
VEVfU1VCRElSUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgY3JlYXRlIDQw
OTYgc3ViLQotIyBkaXJlY3RvcmllcyAoaW4gMiBsZXZlbHMpIHVuZGVyIHRoZSBvdXRwdXQgZGly
ZWN0b3J5IG9mIGVhY2ggb3V0cHV0IGZvcm1hdCBhbmQKLSMgd2lsbCBkaXN0cmlidXRlIHRoZSBn
ZW5lcmF0ZWQgZmlsZXMgb3ZlciB0aGVzZSBkaXJlY3Rvcmllcy4gRW5hYmxpbmcgdGhpcwotIyBv
cHRpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIGZlZWRpbmcgZG94eWdlbiBhIGh1Z2UgYW1vdW50IG9m
IHNvdXJjZSBmaWxlcywgd2hlcmUKLSMgcHV0dGluZyBhbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeSB3b3VsZCBvdGhlcndpc2UgY2F1c2VzCi0jIHBlcmZvcm1hbmNlIHBy
b2JsZW1zIGZvciB0aGUgZmlsZSBzeXN0ZW0uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LQotQ1JFQVRFX1NVQkRJUlMgICAgICAgICA9IE5PCi0KLSMgVGhlIE9VVFBVVF9MQU5HVUFHRSB0
YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBsYW5ndWFnZSBpbiB3aGljaCBhbGwKLSMgZG9jdW1l
bnRhdGlvbiBnZW5lcmF0ZWQgYnkgZG94eWdlbiBpcyB3cml0dGVuLiBEb3h5Z2VuIHdpbGwgdXNl
IHRoaXMKLSMgaW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYWxsIGNvbnN0YW50IG91dHB1dCBpbiB0
aGUgcHJvcGVyIGxhbmd1YWdlLgotIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBBZnJpa2FhbnMsIEFy
YWJpYywgQnJhemlsaWFuLCBDYXRhbGFuLCBDaGluZXNlLCBDaGluZXNlLQotIyBUcmFkaXRpb25h
bCwgQ3JvYXRpYW4sIEN6ZWNoLCBEYW5pc2gsIER1dGNoLCBFbmdsaXNoLCBFc3BlcmFudG8sIEZh
cnNpLAotIyBGaW5uaXNoLCBGcmVuY2gsIEdlcm1hbiwgR3JlZWssIEh1bmdhcmlhbiwgSXRhbGlh
biwgSmFwYW5lc2UsIEphcGFuZXNlLWVuLAotIyBLb3JlYW4sIEtvcmVhbi1lbiwgTGF0dmlhbiwg
Tm9yd2VnaWFuLCBNYWNlZG9uaWFuLCBQZXJzaWFuLCBQb2xpc2gsCi0jIFBvcnR1Z3Vlc2UsIFJv
bWFuaWFuLCBSdXNzaWFuLCBTZXJiaWFuLCBTbG92YWssIFNsb3ZlbmUsIFNwYW5pc2gsIFN3ZWRp
c2gsCi0jIFR1cmtpc2gsIFVrcmFpbmlhbiBhbmQgVmlldG5hbWVzZS4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IEVuZ2xpc2guCi0KLU9VVFBVVF9MQU5HVUFHRSAgICAgICAgPSBFbmdsaXNoCi0K
LSMgSWYgdGhlIEJSSUVGX01FTUJFUl9ERVNDIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2ls
bCBpbmNsdWRlIGJyaWVmIG1lbWJlcgotIyBkZXNjcmlwdGlvbnMgYWZ0ZXIgdGhlIG1lbWJlcnMg
dGhhdCBhcmUgbGlzdGVkIGluIHRoZSBmaWxlIGFuZCBjbGFzcwotIyBkb2N1bWVudGF0aW9uIChz
aW1pbGFyIHRvIEphdmFkb2MpLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1CUklFRl9NRU1CRVJfREVTQyAgICAgID0gWUVTCi0KLSMg
SWYgdGhlIFJFUEVBVF9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgcHJlcGVu
ZCB0aGUgYnJpZWYKLSMgZGVzY3JpcHRpb24gb2YgYSBtZW1iZXIgb3IgZnVuY3Rpb24gYmVmb3Jl
IHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbgotIwotIyBOb3RlOiBJZiBib3RoIEhJREVfVU5ET0Nf
TUVNQkVSUyBhbmQgQlJJRUZfTUVNQkVSX0RFU0MgYXJlIHNldCB0byBOTywgdGhlCi0jIGJyaWVm
IGRlc2NyaXB0aW9ucyB3aWxsIGJlIGNvbXBsZXRlbHkgc3VwcHJlc3NlZC4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLQotUkVQRUFUX0JSSUVGICAgICAgICAgICA9IFlFUwotCi0jIFRo
aXMgdGFnIGltcGxlbWVudHMgYSBxdWFzaS1pbnRlbGxpZ2VudCBicmllZiBkZXNjcmlwdGlvbiBh
YmJyZXZpYXRvciB0aGF0IGlzCi0jIHVzZWQgdG8gZm9ybSB0aGUgdGV4dCBpbiB2YXJpb3VzIGxp
c3RpbmdzLiBFYWNoIHN0cmluZyBpbiB0aGlzIGxpc3QsIGlmIGZvdW5kCi0jIGFzIHRoZSBsZWFk
aW5nIHRleHQgb2YgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLCB3aWxsIGJlIHN0cmlwcGVkIGZyb20g
dGhlIHRleHQKLSMgYW5kIHRoZSByZXN1bHQsIGFmdGVyIHByb2Nlc3NpbmcgdGhlIHdob2xlIGxp
c3QsIGlzIHVzZWQgYXMgdGhlIGFubm90YXRlZAotIyB0ZXh0LiBPdGhlcndpc2UsIHRoZSBicmll
ZiBkZXNjcmlwdGlvbiBpcyB1c2VkIGFzLWlzLiBJZiBsZWZ0IGJsYW5rLCB0aGUKLSMgZm9sbG93
aW5nIHZhbHVlcyBhcmUgdXNlZCAoJG5hbWUgaXMgYXV0b21hdGljYWxseSByZXBsYWNlZCB3aXRo
IHRoZSBuYW1lIG9mCi0jIHRoZSBlbnRpdHkpOlRoZSAkbmFtZSBjbGFzcywgVGhlICRuYW1lIHdp
ZGdldCwgVGhlICRuYW1lIGZpbGUsIGlzLCBwcm92aWRlcywKLSMgc3BlY2lmaWVzLCBjb250YWlu
cywgcmVwcmVzZW50cywgYSwgYW4gYW5kIHRoZS4KLQotQUJCUkVWSUFURV9CUklFRiAgICAgICA9
ICJUaGUgJG5hbWUgY2xhc3MiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlICRuYW1l
IHdpZGdldCIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgJG5hbWUgZmlsZSIgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBw
cm92aWRlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250YWlucyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVw
cmVzZW50cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYSBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgYW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQotCi0jIElmIHRoZSBB
TFdBWVNfREVUQUlMRURfU0VDIGFuZCBSRVBFQVRfQlJJRUYgdGFncyBhcmUgYm90aCBzZXQgdG8g
WUVTIHRoZW4KLSMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZGV0YWlsZWQgc2VjdGlvbiBldmVu
IGlmIHRoZXJlIGlzIG9ubHkgYSBicmllZgotIyBkZXNjcmlwdGlvbi4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1BTFdBWVNfREVUQUlMRURfU0VDICAgID0gTk8KLQotIyBJZiB0aGUg
SU5MSU5FX0lOSEVSSVRFRF9NRU1CIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgc2hv
dyBhbGwKLSMgaW5oZXJpdGVkIG1lbWJlcnMgb2YgYSBjbGFzcyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBvZiB0aGF0IGNsYXNzIGFzIGlmIHRob3NlCi0jIG1lbWJlcnMgd2VyZSBvcmRpbmFyeSBjbGFz
cyBtZW1iZXJzLiBDb25zdHJ1Y3RvcnMsIGRlc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50Ci0jIG9w
ZXJhdG9ycyBvZiB0aGUgYmFzZSBjbGFzc2VzIHdpbGwgbm90IGJlIHNob3duLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0KLUlOTElORV9JTkhFUklURURfTUVNQiAgPSBOTwotCi0jIElm
IHRoZSBGVUxMX1BBVEhfTkFNRVMgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHByZXBl
bmQgdGhlIGZ1bGwgcGF0aAotIyBiZWZvcmUgZmlsZXMgbmFtZSBpbiB0aGUgZmlsZSBsaXN0IGFu
ZCBpbiB0aGUgaGVhZGVyIGZpbGVzLiBJZiBzZXQgdG8gTk8gdGhlCi0jIHNob3J0ZXN0IHBhdGgg
dGhhdCBtYWtlcyB0aGUgZmlsZSBuYW1lIHVuaXF1ZSB3aWxsIGJlIHVzZWQKLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLQotRlVMTF9QQVRIX05BTUVTICAgICAgICA9IFlFUwotCi0jIFRo
ZSBTVFJJUF9GUk9NX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVk
IHBhcnQgb2YgdGhlIHBhdGguCi0jIFN0cmlwcGluZyBpcyBvbmx5IGRvbmUgaWYgb25lIG9mIHRo
ZSBzcGVjaWZpZWQgc3RyaW5ncyBtYXRjaGVzIHRoZSBsZWZ0LWhhbmQKLSMgcGFydCBvZiB0aGUg
cGF0aC4gVGhlIHRhZyBjYW4gYmUgdXNlZCB0byBzaG93IHJlbGF0aXZlIHBhdGhzIGluIHRoZSBm
aWxlIGxpc3QuCi0jIElmIGxlZnQgYmxhbmsgdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIGRveHln
ZW4gaXMgcnVuIGlzIHVzZWQgYXMgdGhlIHBhdGggdG8KLSMgc3RyaXAuCi0jCi0jIE5vdGUgdGhh
dCB5b3UgY2FuIHNwZWNpZnkgYWJzb2x1dGUgcGF0aHMgaGVyZSwgYnV0IGFsc28gcmVsYXRpdmUg
cGF0aHMsIHdoaWNoCi0jIHdpbGwgYmUgcmVsYXRpdmUgZnJvbSB0aGUgZGlyZWN0b3J5IHdoZXJl
IGRveHlnZW4gaXMgc3RhcnRlZC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEZV
TExfUEFUSF9OQU1FUyBpcyBzZXQgdG8gWUVTLgotCi1TVFJJUF9GUk9NX1BBVEggICAgICAgID0g
JVRPUERJUiUKLQotIyBUaGUgU1RSSVBfRlJPTV9JTkNfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8g
c3RyaXAgYSB1c2VyLWRlZmluZWQgcGFydCBvZiB0aGUKLSMgcGF0aCBtZW50aW9uZWQgaW4gdGhl
IGRvY3VtZW50YXRpb24gb2YgYSBjbGFzcywgd2hpY2ggdGVsbHMgdGhlIHJlYWRlciB3aGljaAot
IyBoZWFkZXIgZmlsZSB0byBpbmNsdWRlIGluIG9yZGVyIHRvIHVzZSBhIGNsYXNzLiBJZiBsZWZ0
IGJsYW5rIG9ubHkgdGhlIG5hbWUgb2YKLSMgdGhlIGhlYWRlciBmaWxlIGNvbnRhaW5pbmcgdGhl
IGNsYXNzIGRlZmluaXRpb24gaXMgdXNlZC4gT3RoZXJ3aXNlIG9uZSBzaG91bGQKLSMgc3BlY2lm
eSB0aGUgbGlzdCBvZiBpbmNsdWRlIHBhdGhzIHRoYXQgYXJlIG5vcm1hbGx5IHBhc3NlZCB0byB0
aGUgY29tcGlsZXIKLSMgdXNpbmcgdGhlIC1JIGZsYWcuCi0KLVNUUklQX0ZST01fSU5DX1BBVEgg
ICAgPSAlVE9QRElSJS9pbmNsdWRlCi0KLSMgSWYgdGhlIFNIT1JUX05BTUVTIHRhZyBpcyBzZXQg
dG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgbXVjaCBzaG9ydGVyIChidXQKLSMgbGVzcyBy
ZWFkYWJsZSkgZmlsZSBuYW1lcy4gVGhpcyBjYW4gYmUgdXNlZnVsIGlzIHlvdXIgZmlsZSBzeXN0
ZW1zIGRvZXNuJ3QKLSMgc3VwcG9ydCBsb25nIG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENE
LVJPTS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TSE9SVF9OQU1FUyAgICAgICAg
ICAgID0gTk8KLQotIyBJZiB0aGUgSkFWQURPQ19BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMg
dGhlbiBkb3h5Z2VuIHdpbGwgaW50ZXJwcmV0IHRoZQotIyBmaXJzdCBsaW5lICh1bnRpbCB0aGUg
Zmlyc3QgZG90KSBvZiBhIEphdmFkb2Mtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYKLSMgZGVz
Y3JpcHRpb24uIElmIHNldCB0byBOTywgdGhlIEphdmFkb2Mtc3R5bGUgd2lsbCBiZWhhdmUganVz
dCBsaWtlIHJlZ3VsYXIgUXQtCi0jIHN0eWxlIGNvbW1lbnRzICh0aHVzIHJlcXVpcmluZyBhbiBl
eHBsaWNpdCBAYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZgotIyBkZXNjcmlwdGlvbi4pCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSkFWQURPQ19BVVRPQlJJRUYgICAgICA9IFlFUwot
Ci0jIElmIHRoZSBRVF9BVVRPQlJJRUYgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdp
bGwgaW50ZXJwcmV0IHRoZSBmaXJzdAotIyBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBh
IFF0LXN0eWxlIGNvbW1lbnQgYXMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLiBJZgotIyBzZXQgdG8g
Tk8sIHRoZSBRdC1zdHlsZSB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVndWxhciBRdC1zdHlsZSBj
b21tZW50cyAodGh1cwotIyByZXF1aXJpbmcgYW4gZXhwbGljaXQgXGJyaWVmIGNvbW1hbmQgZm9y
IGEgYnJpZWYgZGVzY3JpcHRpb24uKQotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVFU
X0FVVE9CUklFRiAgICAgICAgICAgPSBOTwotCi0jIFRoZSBNVUxUSUxJTkVfQ1BQX0lTX0JSSUVG
IHRhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBtYWtlIGRveHlnZW4gdHJlYXQgYQotIyBtdWx0aS1s
aW5lIEMrKyBzcGVjaWFsIGNvbW1lbnQgYmxvY2sgKGkuZS4gYSBibG9jayBvZiAvLyEgb3IgLy8v
IGNvbW1lbnRzKSBhcwotIyBhIGJyaWVmIGRlc2NyaXB0aW9uLiBUaGlzIHVzZWQgdG8gYmUgdGhl
IGRlZmF1bHQgYmVoYXZpb3IuIFRoZSBuZXcgZGVmYXVsdCBpcwotIyB0byB0cmVhdCBhIG11bHRp
LWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4gU2V0IHRo
aXMKLSMgdGFnIHRvIFlFUyBpZiB5b3UgcHJlZmVyIHRoZSBvbGQgYmVoYXZpb3IgaW5zdGVhZC4K
LSMKLSMgTm90ZSB0aGF0IHNldHRpbmcgdGhpcyB0YWcgdG8gWUVTIGFsc28gbWVhbnMgdGhhdCBy
YXRpb25hbCByb3NlIGNvbW1lbnRzIGFyZQotIyBub3QgcmVjb2duaXplZCBhbnkgbW9yZS4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1NVUxUSUxJTkVfQ1BQX0lTX0JSSUVGID0gTk8K
LQotIyBJZiB0aGUgSU5IRVJJVF9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gYW4gdW5kb2N1
bWVudGVkIG1lbWJlciBpbmhlcml0cyB0aGUKLSMgZG9jdW1lbnRhdGlvbiBmcm9tIGFueSBkb2N1
bWVudGVkIG1lbWJlciB0aGF0IGl0IHJlLWltcGxlbWVudHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBZRVMuCi0KLUlOSEVSSVRfRE9DUyAgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgU0VQ
QVJBVEVfTUVNQkVSX1BBR0VTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBw
cm9kdWNlIGEKLSMgbmV3IHBhZ2UgZm9yIGVhY2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBk
b2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdpbGwgYmUKLSMgcGFydCBvZiB0aGUgZmlsZS9jbGFz
cy9uYW1lc3BhY2UgdGhhdCBjb250YWlucyBpdC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5P
LgotCi1TRVBBUkFURV9NRU1CRVJfUEFHRVMgID0gTk8KLQotIyBUaGUgVEFCX1NJWkUgdGFnIGNh
biBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiBhIHRhYi4gRG94eWdlbgot
IyB1c2VzIHRoaXMgdmFsdWUgdG8gcmVwbGFjZSB0YWJzIGJ5IHNwYWNlcyBpbiBjb2RlIGZyYWdt
ZW50cy4KLSMgTWluaW11bSB2YWx1ZTogMSwgbWF4aW11bSB2YWx1ZTogMTYsIGRlZmF1bHQgdmFs
dWU6IDQuCi0KLVRBQl9TSVpFICAgICAgICAgICAgICAgPSAzCi0KLSMgVGhpcyB0YWcgY2FuIGJl
IHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiBhbGlhc2VzIHRoYXQgYWN0IGFzIGNvbW1hbmRz
IGluCi0jIHRoZSBkb2N1bWVudGF0aW9uLiBBbiBhbGlhcyBoYXMgdGhlIGZvcm06Ci0jIG5hbWU9
dmFsdWUKLSMgRm9yIGV4YW1wbGUgYWRkaW5nCi0jICJzaWRlZWZmZWN0PUBwYXIgU2lkZSBFZmZl
Y3RzOlxuIgotIyB3aWxsIGFsbG93IHlvdSB0byBwdXQgdGhlIGNvbW1hbmQgXHNpZGVlZmZlY3Qg
KG9yIEBzaWRlZWZmZWN0KSBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbiwgd2hpY2ggd2lsbCByZXN1
bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdyYXBoIHdpdGggaGVhZGluZwotIyAiU2lkZSBFZmZl
Y3RzOiIuIFlvdSBjYW4gcHV0IFxuJ3MgaW4gdGhlIHZhbHVlIHBhcnQgb2YgYW4gYWxpYXMgdG8g
aW5zZXJ0Ci0jIG5ld2xpbmVzLgotCi1BTElBU0VTICAgICAgICAgICAgICAgID0gInRlc3RDYXNl
U2V0dXA9XGxpbmsgQ3BwVVQ6OlRlc3RDYXNlOjpzZXRVcCgpIHNldFVwKClcZW5kbGluayIgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0Q2FzZVJ1bj1cbGluayBDcHBVVDo6VGVzdENh
c2U6OnJ1bigpIHJ1bigpXGVuZGxpbmsiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAidGVz
dENhc2VUZWFyRG93bj1cbGluayBDcHBVVDo6VGVzdENhc2U6OnRlYXJEb3duKCkgdGVhckRvd24o
KVxlbmRsaW5rIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgImpzb25fcmVmPTxhIEhSRUY9
J2h0dHA6Ly93d3cuanNvbi5vcmcvJz5KU09OIChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbik8
L2E+IgotCi0jIFRoaXMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBudW1iZXIgb2Ygd29y
ZC1rZXl3b3JkIG1hcHBpbmdzIChUQ0wgb25seSkuCi0jIEEgbWFwcGluZyBoYXMgdGhlIGZvcm0g
Im5hbWU9dmFsdWUiLiBGb3IgZXhhbXBsZSBhZGRpbmcgImNsYXNzPWl0Y2w6OmNsYXNzIgotIyB3
aWxsIGFsbG93IHlvdSB0byB1c2UgdGhlIGNvbW1hbmQgY2xhc3MgaW4gdGhlIGl0Y2w6OmNsYXNz
IG1lYW5pbmcuCi0KLVRDTF9TVUJTVCAgICAgICAgICAgICAgPQotCi0jIFNldCB0aGUgT1BUSU1J
WkVfT1VUUFVUX0ZPUl9DIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIEMg
c291cmNlcwotIyBvbmx5LiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBp
cyBtb3JlIHRhaWxvcmVkIGZvciBDLiBGb3IKLSMgaW5zdGFuY2UsIHNvbWUgb2YgdGhlIG5hbWVz
IHRoYXQgYXJlIHVzZWQgd2lsbCBiZSBkaWZmZXJlbnQuIFRoZSBsaXN0IG9mIGFsbAotIyBtZW1i
ZXJzIHdpbGwgYmUgb21pdHRlZCwgZXRjLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LU9QVElNSVpFX09VVFBVVF9GT1JfQyAgPSBOTwotCi0jIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVU
X0pBVkEgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgSmF2YSBvcgotIyBQ
eXRob24gc291cmNlcyBvbmx5LiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhh
dCBpcyBtb3JlIHRhaWxvcmVkCi0jIGZvciB0aGF0IGxhbmd1YWdlLiBGb3IgaW5zdGFuY2UsIG5h
bWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50ZWQgYXMgcGFja2FnZXMsCi0jIHF1YWxpZmllZCBzY29w
ZXMgd2lsbCBsb29rIGRpZmZlcmVudCwgZXRjLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLU9QVElNSVpFX09VVFBVVF9KQVZBICAgPSBOTwotCi0jIFNldCB0aGUgT1BUSU1JWkVfRk9S
X0ZPUlRSQU4gdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgRm9ydHJhbgot
IyBzb3VyY2VzLiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWls
b3JlZCBmb3IgRm9ydHJhbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1PUFRJTUla
RV9GT1JfRk9SVFJBTiAgID0gTk8KLQotIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9WSERMIHRh
ZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIFZIREwKLSMgc291cmNlcy4gRG94
eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgdGFpbG9yZWQgZm9yIFZIREwu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotT1BUSU1JWkVfT1VUUFVUX1ZIREwgICA9
IE5PCi0KLSMgRG94eWdlbiBzZWxlY3RzIHRoZSBwYXJzZXIgdG8gdXNlIGRlcGVuZGluZyBvbiB0
aGUgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlcyBpdAotIyBwYXJzZXMuIFdpdGggdGhpcyB0YWcgeW91
IGNhbiBhc3NpZ24gd2hpY2ggcGFyc2VyIHRvIHVzZSBmb3IgYSBnaXZlbgotIyBleHRlbnNpb24u
IERveHlnZW4gaGFzIGEgYnVpbHQtaW4gbWFwcGluZywgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgb3Ig
ZXh0ZW5kIGl0Ci0jIHVzaW5nIHRoaXMgdGFnLiBUaGUgZm9ybWF0IGlzIGV4dD1sYW5ndWFnZSwg
d2hlcmUgZXh0IGlzIGEgZmlsZSBleHRlbnNpb24sIGFuZAotIyBsYW5ndWFnZSBpcyBvbmUgb2Yg
dGhlIHBhcnNlcnMgc3VwcG9ydGVkIGJ5IGRveHlnZW46IElETCwgSmF2YSwgSmF2YVNjcmlwdCwK
LSMgQyMsIEMsIEMrKywgRCwgUEhQLCBPYmplY3RpdmUtQywgUHl0aG9uLCBGb3J0cmFuLCBWSERM
LiBGb3IgaW5zdGFuY2UgdG8gbWFrZQotIyBkb3h5Z2VuIHRyZWF0IC5pbmMgZmlsZXMgYXMgRm9y
dHJhbiBmaWxlcyAoZGVmYXVsdCBpcyBQSFApLCBhbmQgLmYgZmlsZXMgYXMgQwotIyAoZGVmYXVs
dCBpcyBGb3J0cmFuKSwgdXNlOiBpbmM9Rm9ydHJhbiBmPUMuCi0jCi0jIE5vdGUgRm9yIGZpbGVz
IHdpdGhvdXQgZXh0ZW5zaW9uIHlvdSBjYW4gdXNlIG5vX2V4dGVuc2lvbiBhcyBhIHBsYWNlaG9s
ZGVyLgotIwotIyBOb3RlIHRoYXQgZm9yIGN1c3RvbSBleHRlbnNpb25zIHlvdSBhbHNvIG5lZWQg
dG8gc2V0IEZJTEVfUEFUVEVSTlMgb3RoZXJ3aXNlCi0jIHRoZSBmaWxlcyBhcmUgbm90IHJlYWQg
YnkgZG94eWdlbi4KLQotRVhURU5TSU9OX01BUFBJTkcgICAgICA9Ci0KLSMgSWYgdGhlIE1BUktE
T1dOX1NVUFBPUlQgdGFnIGlzIGVuYWJsZWQgdGhlbiBkb3h5Z2VuIHByZS1wcm9jZXNzZXMgYWxs
IGNvbW1lbnRzCi0jIGFjY29yZGluZyB0byB0aGUgTWFya2Rvd24gZm9ybWF0LCB3aGljaCBhbGxv
d3MgZm9yIG1vcmUgcmVhZGFibGUKLSMgZG9jdW1lbnRhdGlvbi4gU2VlIGh0dHA6Ly9kYXJpbmdm
aXJlYmFsbC5uZXQvcHJvamVjdHMvbWFya2Rvd24vIGZvciBkZXRhaWxzLgotIyBUaGUgb3V0cHV0
IG9mIG1hcmtkb3duIHByb2Nlc3NpbmcgaXMgZnVydGhlciBwcm9jZXNzZWQgYnkgZG94eWdlbiwg
c28geW91IGNhbgotIyBtaXggZG94eWdlbiwgSFRNTCwgYW5kIFhNTCBjb21tYW5kcyB3aXRoIE1h
cmtkb3duIGZvcm1hdHRpbmcuIERpc2FibGUgb25seSBpbgotIyBjYXNlIG9mIGJhY2t3YXJkIGNv
bXBhdGliaWxpdGllcyBpc3N1ZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLU1B
UktET1dOX1NVUFBPUlQgICAgICAgPSBZRVMKLQotIyBXaGVuIGVuYWJsZWQgZG94eWdlbiB0cmll
cyB0byBsaW5rIHdvcmRzIHRoYXQgY29ycmVzcG9uZCB0byBkb2N1bWVudGVkCi0jIGNsYXNzZXMs
IG9yIG5hbWVzcGFjZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBkb2N1bWVudGF0aW9uLiBTdWNo
IGEgbGluayBjYW4KLSMgYmUgcHJldmVudGVkIGluIGluZGl2aWR1YWwgY2FzZXMgYnkgYnkgcHV0
dGluZyBhICUgc2lnbiBpbiBmcm9udCBvZiB0aGUgd29yZAotIyBvciBnbG9iYWxseSBieSBzZXR0
aW5nIEFVVE9MSU5LX1NVUFBPUlQgdG8gTk8uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMu
Ci0KLUFVVE9MSU5LX1NVUFBPUlQgICAgICAgPSBZRVMKLQotIyBJZiB5b3UgdXNlIFNUTCBjbGFz
c2VzIChpLmUuIHN0ZDo6c3RyaW5nLCBzdGQ6OnZlY3RvciwgZXRjLikgYnV0IGRvIG5vdCB3YW50
Ci0jIHRvIGluY2x1ZGUgKGEgdGFnIGZpbGUgZm9yKSB0aGUgU1RMIHNvdXJjZXMgYXMgaW5wdXQs
IHRoZW4geW91IHNob3VsZCBzZXQgdGhpcwotIyB0YWcgdG8gWUVTIGluIG9yZGVyIHRvIGxldCBk
b3h5Z2VuIG1hdGNoIGZ1bmN0aW9ucyBkZWNsYXJhdGlvbnMgYW5kCi0jIGRlZmluaXRpb25zIHdo
b3NlIGFyZ3VtZW50cyBjb250YWluIFNUTCBjbGFzc2VzIChlLmcuIGZ1bmMoc3RkOjpzdHJpbmcp
OwotIyB2ZXJzdXMgZnVuYyhzdGQ6OnN0cmluZykge30pLiBUaGlzIGFsc28gbWFrZSB0aGUgaW5o
ZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24KLSMgZGlhZ3JhbXMgdGhhdCBpbnZvbHZlIFNUTCBj
bGFzc2VzIG1vcmUgY29tcGxldGUgYW5kIGFjY3VyYXRlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0KLUJVSUxUSU5fU1RMX1NVUFBPUlQgICAgPSBZRVMKLQotIyBJZiB5b3UgdXNlIE1p
Y3Jvc29mdCdzIEMrKy9DTEkgbGFuZ3VhZ2UsIHlvdSBzaG91bGQgc2V0IHRoaXMgb3B0aW9uIHRv
IFlFUyB0bwotIyBlbmFibGUgcGFyc2luZyBzdXBwb3J0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0KLUNQUF9DTElfU1VQUE9SVCAgICAgICAgPSBOTwotCi0jIFNldCB0aGUgU0lQX1NV
UFBPUlQgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2Ygc2lwIChzZWU6Ci0j
IGh0dHA6Ly93d3cucml2ZXJiYW5rY29tcHV0aW5nLmNvLnVrL3NvZnR3YXJlL3NpcC9pbnRybykg
c291cmNlcyBvbmx5LiBEb3h5Z2VuCi0jIHdpbGwgcGFyc2UgdGhlbSBsaWtlIG5vcm1hbCBDKysg
YnV0IHdpbGwgYXNzdW1lIGFsbCBjbGFzc2VzIHVzZSBwdWJsaWMgaW5zdGVhZAotIyBvZiBwcml2
YXRlIGluaGVyaXRhbmNlIHdoZW4gbm8gZXhwbGljaXQgcHJvdGVjdGlvbiBrZXl3b3JkIGlzIHBy
ZXNlbnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotU0lQX1NVUFBPUlQgICAgICAg
ICAgICA9IE5PCi0KLSMgRm9yIE1pY3Jvc29mdCdzIElETCB0aGVyZSBhcmUgcHJvcGdldCBhbmQg
cHJvcHB1dCBhdHRyaWJ1dGVzIHRvIGluZGljYXRlCi0jIGdldHRlciBhbmQgc2V0dGVyIG1ldGhv
ZHMgZm9yIGEgcHJvcGVydHkuIFNldHRpbmcgdGhpcyBvcHRpb24gdG8gWUVTIHdpbGwgbWFrZQot
IyBkb3h5Z2VuIHRvIHJlcGxhY2UgdGhlIGdldCBhbmQgc2V0IG1ldGhvZHMgYnkgYSBwcm9wZXJ0
eSBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhpcyB3aWxsIG9ubHkgd29yayBpZiB0aGUgbWV0
aG9kcyBhcmUgaW5kZWVkIGdldHRpbmcgb3Igc2V0dGluZyBhIHNpbXBsZQotIyB0eXBlLiBJZiB0
aGlzIGlzIG5vdCB0aGUgY2FzZSwgb3IgeW91IHdhbnQgdG8gc2hvdyB0aGUgbWV0aG9kcyBhbnl3
YXksIHlvdQotIyBzaG91bGQgc2V0IHRoaXMgb3B0aW9uIHRvIE5PLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogWUVTLgotCi1JRExfUFJPUEVSVFlfU1VQUE9SVCAgID0gWUVTCi0KLSMgSWYgbWVt
YmVyIGdyb3VwaW5nIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBESVNUUklC
VVRFX0dST1VQX0RPQwotIyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgcmV1
c2UgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGZpcnN0Ci0jIG1lbWJlciBpbiB0aGUgZ3JvdXAg
KGlmIGFueSkgZm9yIHRoZSBvdGhlciBtZW1iZXJzIG9mIHRoZSBncm91cC4gQnkgZGVmYXVsdAot
IyBhbGwgbWVtYmVycyBvZiBhIGdyb3VwIG11c3QgYmUgZG9jdW1lbnRlZCBleHBsaWNpdGx5Lgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLURJU1RSSUJVVEVfR1JPVVBfRE9DICAgPSBO
TwotCi0jIFNldCB0aGUgU1VCR1JPVVBJTkcgdGFnIHRvIFlFUyB0byBhbGxvdyBjbGFzcyBtZW1i
ZXIgZ3JvdXBzIG9mIHRoZSBzYW1lIHR5cGUKLSMgKGZvciBpbnN0YW5jZSBhIGdyb3VwIG9mIHB1
YmxpYyBmdW5jdGlvbnMpIHRvIGJlIHB1dCBhcyBhIHN1Ymdyb3VwIG9mIHRoYXQKLSMgdHlwZSAo
ZS5nLiB1bmRlciB0aGUgUHVibGljIEZ1bmN0aW9ucyBzZWN0aW9uKS4gU2V0IGl0IHRvIE5PIHRv
IHByZXZlbnQKLSMgc3ViZ3JvdXBpbmcuIEFsdGVybmF0aXZlbHksIHRoaXMgY2FuIGJlIGRvbmUg
cGVyIGNsYXNzIHVzaW5nIHRoZQotIyBcbm9zdWJncm91cGluZyBjb21tYW5kLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1TVUJHUk9VUElORyAgICAgICAgICAgID0gWUVTCi0KLSMg
V2hlbiB0aGUgSU5MSU5FX0dST1VQRURfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgY2xhc3Nl
cywgc3RydWN0cyBhbmQgdW5pb25zCi0jIGFyZSBzaG93biBpbnNpZGUgdGhlIGdyb3VwIGluIHdo
aWNoIHRoZXkgYXJlIGluY2x1ZGVkIChlLmcuIHVzaW5nIFxpbmdyb3VwKQotIyBpbnN0ZWFkIG9m
IG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9yIEhUTUwgYW5kIE1hbiBwYWdlcykgb3Igc2VjdGlvbiAo
Zm9yIExhVGVYCi0jIGFuZCBSVEYpLgotIwotIyBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGRvZXMg
bm90IHdvcmsgaW4gY29tYmluYXRpb24gd2l0aAotIyBTRVBBUkFURV9NRU1CRVJfUEFHRVMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSU5MSU5FX0dST1VQRURfQ0xBU1NFUyA9IE5P
Ci0KLSMgV2hlbiB0aGUgSU5MSU5FX1NJTVBMRV9TVFJVQ1RTIHRhZyBpcyBzZXQgdG8gWUVTLCBz
dHJ1Y3RzLCBjbGFzc2VzLCBhbmQgdW5pb25zCi0jIHdpdGggb25seSBwdWJsaWMgZGF0YSBmaWVs
ZHMgb3Igc2ltcGxlIHR5cGVkZWYgZmllbGRzIHdpbGwgYmUgc2hvd24gaW5saW5lIGluCi0jIHRo
ZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzY29wZSBpbiB3aGljaCB0aGV5IGFyZSBkZWZpbmVkIChp
LmUuIGZpbGUsCi0jIG5hbWVzcGFjZSwgb3IgZ3JvdXAgZG9jdW1lbnRhdGlvbiksIHByb3ZpZGVk
IHRoaXMgc2NvcGUgaXMgZG9jdW1lbnRlZC4gSWYgc2V0Ci0jIHRvIE5PLCBzdHJ1Y3RzLCBjbGFz
c2VzLCBhbmQgdW5pb25zIGFyZSBzaG93biBvbiBhIHNlcGFyYXRlIHBhZ2UgKGZvciBIVE1MIGFu
ZAotIyBNYW4gcGFnZXMpIG9yIHNlY3Rpb24gKGZvciBMYVRlWCBhbmQgUlRGKS4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTkxJTkVfU0lNUExFX1NUUlVDVFMgID0gTk8KLQotIyBX
aGVuIFRZUEVERUZfSElERVNfU1RSVUNUIHRhZyBpcyBlbmFibGVkLCBhIHR5cGVkZWYgb2YgYSBz
dHJ1Y3QsIHVuaW9uLCBvcgotIyBlbnVtIGlzIGRvY3VtZW50ZWQgYXMgc3RydWN0LCB1bmlvbiwg
b3IgZW51bSB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmLiBTbwotIyB0eXBlZGVmIHN0cnVj
dCBUeXBlUyB7fSBUeXBlVCwgd2lsbCBhcHBlYXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYXMgYSBz
dHJ1Y3QKLSMgd2l0aCBuYW1lIFR5cGVULiBXaGVuIGRpc2FibGVkIHRoZSB0eXBlZGVmIHdpbGwg
YXBwZWFyIGFzIGEgbWVtYmVyIG9mIGEgZmlsZSwKLSMgbmFtZXNwYWNlLCBvciBjbGFzcy4gQW5k
IHRoZSBzdHJ1Y3Qgd2lsbCBiZSBuYW1lZCBUeXBlUy4gVGhpcyBjYW4gdHlwaWNhbGx5IGJlCi0j
IHVzZWZ1bCBmb3IgQyBjb2RlIGluIGNhc2UgdGhlIGNvZGluZyBjb252ZW50aW9uIGRpY3RhdGVz
IHRoYXQgYWxsIGNvbXBvdW5kCi0jIHR5cGVzIGFyZSB0eXBlZGVmJ2VkIGFuZCBvbmx5IHRoZSB0
eXBlZGVmIGlzIHJlZmVyZW5jZWQsIG5ldmVyIHRoZSB0YWcgbmFtZS4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1UWVBFREVGX0hJREVTX1NUUlVDVCAgID0gTk8KLQotIyBUaGUgc2l6
ZSBvZiB0aGUgc3ltYm9sIGxvb2t1cCBjYWNoZSBjYW4gYmUgc2V0IHVzaW5nIExPT0tVUF9DQUNI
RV9TSVpFLiBUaGlzCi0jIGNhY2hlIGlzIHVzZWQgdG8gcmVzb2x2ZSBzeW1ib2xzIGdpdmVuIHRo
ZWlyIG5hbWUgYW5kIHNjb3BlLiBTaW5jZSB0aGlzIGNhbiBiZQotIyBhbiBleHBlbnNpdmUgcHJv
Y2VzcyBhbmQgb2Z0ZW4gdGhlIHNhbWUgc3ltYm9sIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4g
dGhlCi0jIGNvZGUsIGRveHlnZW4ga2VlcHMgYSBjYWNoZSBvZiBwcmUtcmVzb2x2ZWQgc3ltYm9s
cy4gSWYgdGhlIGNhY2hlIGlzIHRvbyBzbWFsbAotIyBkb3h5Z2VuIHdpbGwgYmVjb21lIHNsb3dl
ci4gSWYgdGhlIGNhY2hlIGlzIHRvbyBsYXJnZSwgbWVtb3J5IGlzIHdhc3RlZC4gVGhlCi0jIGNh
Y2hlIHNpemUgaXMgZ2l2ZW4gYnkgdGhpcyBmb3JtdWxhOiAyXigxNitMT09LVVBfQ0FDSEVfU0la
RSkuIFRoZSB2YWxpZCByYW5nZQotIyBpcyAwLi45LCB0aGUgZGVmYXVsdCBpcyAwLCBjb3JyZXNw
b25kaW5nIHRvIGEgY2FjaGUgc2l6ZSBvZiAyXjE2PTY1NTM2Ci0jIHN5bWJvbHMuIEF0IHRoZSBl
bmQgb2YgYSBydW4gZG94eWdlbiB3aWxsIHJlcG9ydCB0aGUgY2FjaGUgdXNhZ2UgYW5kIHN1Z2dl
c3QKLSMgdGhlIG9wdGltYWwgY2FjaGUgc2l6ZSBmcm9tIGEgc3BlZWQgcG9pbnQgb2Ygdmlldy4K
LSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogOSwgZGVmYXVsdCB2YWx1ZTogMC4K
LQotTE9PS1VQX0NBQ0hFX1NJWkUgICAgICA9IDAKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBC
dWlsZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwotIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci0jIElmIHRoZSBFWFRSQUNUX0FMTCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgYXNz
dW1lIGFsbCBlbnRpdGllcyBpbgotIyBkb2N1bWVudGF0aW9uIGFyZSBkb2N1bWVudGVkLCBldmVu
IGlmIG5vIGRvY3VtZW50YXRpb24gd2FzIGF2YWlsYWJsZS4gUHJpdmF0ZQotIyBjbGFzcyBtZW1i
ZXJzIGFuZCBzdGF0aWMgZmlsZSBtZW1iZXJzIHdpbGwgYmUgaGlkZGVuIHVubGVzcyB0aGUKLSMg
RVhUUkFDVF9QUklWQVRFIHJlc3BlY3RpdmVseSBFWFRSQUNUX1NUQVRJQyB0YWdzIGFyZSBzZXQg
dG8gWUVTLgotIyBOb3RlOiBUaGlzIHdpbGwgYWxzbyBkaXNhYmxlIHRoZSB3YXJuaW5ncyBhYm91
dCB1bmRvY3VtZW50ZWQgbWVtYmVycyB0aGF0IGFyZQotIyBub3JtYWxseSBwcm9kdWNlZCB3aGVu
IFdBUk5JTkdTIGlzIHNldCB0byBZRVMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
RVhUUkFDVF9BTEwgICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBFWFRSQUNUX1BSSVZBVEUg
dGFnIGlzIHNldCB0byBZRVMgYWxsIHByaXZhdGUgbWVtYmVycyBvZiBhIGNsYXNzIHdpbGwKLSMg
YmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLQotRVhUUkFDVF9QUklWQVRFICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIEVYVFJBQ1Rf
UEFDS0FHRSB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgbWVtYmVycyB3aXRoIHBhY2thZ2Ugb3IgaW50
ZXJuYWwKLSMgc2NvcGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWFRSQUNUX1BBQ0tBR0UgICAgICAgID0gTk8K
LQotIyBJZiB0aGUgRVhUUkFDVF9TVEFUSUMgdGFnIGlzIHNldCB0byBZRVMgYWxsIHN0YXRpYyBt
ZW1iZXJzIG9mIGEgZmlsZSB3aWxsIGJlCi0jIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9u
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVYVFJBQ1RfU1RBVElDICAgICAgICAg
PSBZRVMKLQotIyBJZiB0aGUgRVhUUkFDVF9MT0NBTF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVT
IGNsYXNzZXMgKGFuZCBzdHJ1Y3RzKSBkZWZpbmVkCi0jIGxvY2FsbHkgaW4gc291cmNlIGZpbGVz
IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uIElmIHNldCB0byBOTwotIyBv
bmx5IGNsYXNzZXMgZGVmaW5lZCBpbiBoZWFkZXIgZmlsZXMgYXJlIGluY2x1ZGVkLiBEb2VzIG5v
dCBoYXZlIGFueSBlZmZlY3QKLSMgZm9yIEphdmEgc291cmNlcy4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLQotRVhUUkFDVF9MT0NBTF9DTEFTU0VTICA9IE5PCi0KLSMgVGhpcyBmbGFn
IGlzIG9ubHkgdXNlZnVsIGZvciBPYmplY3RpdmUtQyBjb2RlLiBXaGVuIHNldCB0byBZRVMgbG9j
YWwgbWV0aG9kcywKLSMgd2hpY2ggYXJlIGRlZmluZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIHNl
Y3Rpb24gYnV0IG5vdCBpbiB0aGUgaW50ZXJmYWNlIGFyZQotIyBpbmNsdWRlZCBpbiB0aGUgZG9j
dW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PIG9ubHkgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlIGFy
ZQotIyBpbmNsdWRlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWFRSQUNUX0xP
Q0FMX01FVEhPRFMgID0gTk8KLQotIyBJZiB0aGlzIGZsYWcgaXMgc2V0IHRvIFlFUywgdGhlIG1l
bWJlcnMgb2YgYW5vbnltb3VzIG5hbWVzcGFjZXMgd2lsbCBiZQotIyBleHRyYWN0ZWQgYW5kIGFw
cGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhcyBhIG5hbWVzcGFjZSBjYWxsZWQKLSMgJ2Fub255
bW91c19uYW1lc3BhY2V7ZmlsZX0nLCB3aGVyZSBmaWxlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0
aGUgYmFzZSBuYW1lIG9mCi0jIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGFub255bW91cyBu
YW1lc3BhY2UuIEJ5IGRlZmF1bHQgYW5vbnltb3VzIG5hbWVzcGFjZQotIyBhcmUgaGlkZGVuLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVYVFJBQ1RfQU5PTl9OU1BBQ0VTICAgPSBO
TwotCi0jIElmIHRoZSBISURFX1VORE9DX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIGRveHln
ZW4gd2lsbCBoaWRlIGFsbAotIyB1bmRvY3VtZW50ZWQgbWVtYmVycyBpbnNpZGUgZG9jdW1lbnRl
ZCBjbGFzc2VzIG9yIGZpbGVzLiBJZiBzZXQgdG8gTk8gdGhlc2UKLSMgbWVtYmVycyB3aWxsIGJl
IGluY2x1ZGVkIGluIHRoZSB2YXJpb3VzIG92ZXJ2aWV3cywgYnV0IG5vIGRvY3VtZW50YXRpb24K
LSMgc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhU
UkFDVF9BTEwgaXMgZW5hYmxlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1ISURF
X1VORE9DX01FTUJFUlMgICAgID0gTk8KLQotIyBJZiB0aGUgSElERV9VTkRPQ19DTEFTU0VTIHRh
ZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgaGlkZSBhbGwKLSMgdW5kb2N1bWVudGVkIGNs
YXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlzaWJsZSBpbiB0aGUgY2xhc3MgaGllcmFyY2h5LiBJ
ZiBzZXQKLSMgdG8gTk8gdGhlc2UgY2xhc3NlcyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSB2YXJp
b3VzIG92ZXJ2aWV3cy4gVGhpcyBvcHRpb24gaGFzCi0jIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FM
TCBpcyBlbmFibGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUhJREVfVU5ET0Nf
Q0xBU1NFUyAgICAgPSBOTwotCi0jIElmIHRoZSBISURFX0ZSSUVORF9DT01QT1VORFMgdGFnIGlz
IHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbCBmcmllbmQKLSMgKGNsYXNzfHN0cnVj
dHx1bmlvbikgZGVjbGFyYXRpb25zLiBJZiBzZXQgdG8gTk8gdGhlc2UgZGVjbGFyYXRpb25zIHdp
bGwgYmUKLSMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLQotSElERV9GUklFTkRfQ09NUE9VTkRTICA9IE5PCi0KLSMgSWYgdGhlIEhJ
REVfSU5fQk9EWV9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgaGlkZSBhbnkK
LSMgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm91bmQgaW5zaWRlIHRoZSBib2R5IG9mIGEgZnVuY3Rp
b24uIElmIHNldCB0byBOTyB0aGVzZQotIyBibG9ja3Mgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUg
ZnVuY3Rpb24ncyBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIGJsb2NrLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0KLUhJREVfSU5fQk9EWV9ET0NTICAgICAgPSBOTwotCi0jIFRoZSBJTlRF
Uk5BTF9ET0NTIHRhZyBkZXRlcm1pbmVzIGlmIGRvY3VtZW50YXRpb24gdGhhdCBpcyB0eXBlZCBh
ZnRlciBhCi0jIFxpbnRlcm5hbCBjb21tYW5kIGlzIGluY2x1ZGVkLiBJZiB0aGUgdGFnIGlzIHNl
dCB0byBOTyB0aGVuIHRoZSBkb2N1bWVudGF0aW9uCi0jIHdpbGwgYmUgZXhjbHVkZWQuIFNldCBp
dCB0byBZRVMgdG8gaW5jbHVkZSB0aGUgaW50ZXJuYWwgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTlRFUk5BTF9ET0NTICAgICAgICAgID0gWUVTCi0KLSMg
SWYgdGhlIENBU0VfU0VOU0VfTkFNRVMgdGFnIGlzIHNldCB0byBOTyB0aGVuIGRveHlnZW4gd2ls
bCBvbmx5IGdlbmVyYXRlIGZpbGUKLSMgbmFtZXMgaW4gbG93ZXItY2FzZSBsZXR0ZXJzLiBJZiBz
ZXQgdG8gWUVTIHVwcGVyLWNhc2UgbGV0dGVycyBhcmUgYWxzbwotIyBhbGxvd2VkLiBUaGlzIGlz
IHVzZWZ1bCBpZiB5b3UgaGF2ZSBjbGFzc2VzIG9yIGZpbGVzIHdob3NlIG5hbWVzIG9ubHkgZGlm
ZmVyCi0jIGluIGNhc2UgYW5kIGlmIHlvdXIgZmlsZSBzeXN0ZW0gc3VwcG9ydHMgY2FzZSBzZW5z
aXRpdmUgZmlsZSBuYW1lcy4gV2luZG93cwotIyBhbmQgTWFjIHVzZXJzIGFyZSBhZHZpc2VkIHRv
IHNldCB0aGlzIG9wdGlvbiB0byBOTy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IHN5c3RlbSBk
ZXBlbmRlbnQuCi0KLUNBU0VfU0VOU0VfTkFNRVMgICAgICAgPSBOTwotCi0jIElmIHRoZSBISURF
X1NDT1BFX05BTUVTIHRhZyBpcyBzZXQgdG8gTk8gdGhlbiBkb3h5Z2VuIHdpbGwgc2hvdyBtZW1i
ZXJzIHdpdGgKLSMgdGhlaXIgZnVsbCBjbGFzcyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIFlFUyB0aGUKLSMgc2NvcGUgd2lsbCBiZSBoaWRkZW4u
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSElERV9TQ09QRV9OQU1FUyAgICAgICA9
IE5PCi0KLSMgSWYgdGhlIFNIT1dfSU5DTFVERV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVu
IGRveHlnZW4gd2lsbCBwdXQgYSBsaXN0IG9mCi0jIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRl
ZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmaWxlLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1TSE9XX0lOQ0xVREVfRklMRVMgICAgID0gWUVTCi0KLSMg
SWYgdGhlIEZPUkNFX0xPQ0FMX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdl
biB3aWxsIGxpc3QgaW5jbHVkZQotIyBmaWxlcyB3aXRoIGRvdWJsZSBxdW90ZXMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gcmF0aGVyIHRoYW4gd2l0aCBzaGFycCBicmFja2V0cy4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE5PLgotCi1GT1JDRV9MT0NBTF9JTkNMVURFUyAgID0gTk8KLQotIyBJZiB0
aGUgSU5MSU5FX0lORk8gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIHRhZyBbaW5saW5lXSBpcyBp
bnNlcnRlZCBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbiBmb3IgaW5saW5lIG1lbWJlcnMuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUlOTElORV9JTkZPICAgICAgICAgICAgPSBZRVMK
LQotIyBJZiB0aGUgU09SVF9NRU1CRVJfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHln
ZW4gd2lsbCBzb3J0IHRoZQotIyAoZGV0YWlsZWQpIGRvY3VtZW50YXRpb24gb2YgZmlsZSBhbmQg
Y2xhc3MgbWVtYmVycyBhbHBoYWJldGljYWxseSBieSBtZW1iZXIKLSMgbmFtZS4gSWYgc2V0IHRv
IE5PIHRoZSBtZW1iZXJzIHdpbGwgYXBwZWFyIGluIGRlY2xhcmF0aW9uIG9yZGVyLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1TT1JUX01FTUJFUl9ET0NTICAgICAgID0gWUVTCi0K
LSMgSWYgdGhlIFNPUlRfQlJJRUZfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4g
d2lsbCBzb3J0IHRoZSBicmllZgotIyBkZXNjcmlwdGlvbnMgb2YgZmlsZSwgbmFtZXNwYWNlIGFu
ZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcgotIyBuYW1lLiBJZiBzZXQg
dG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gZGVjbGFyYXRpb24gb3JkZXIuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotU09SVF9CUklFRl9ET0NTICAgICAgICA9IE5PCi0K
LSMgSWYgdGhlIFNPUlRfTUVNQkVSU19DVE9SU18xU1QgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBk
b3h5Z2VuIHdpbGwgc29ydCB0aGUKLSMgKGJyaWVmIGFuZCBkZXRhaWxlZCkgZG9jdW1lbnRhdGlv
biBvZiBjbGFzcyBtZW1iZXJzIHNvIHRoYXQgY29uc3RydWN0b3JzIGFuZAotIyBkZXN0cnVjdG9y
cyBhcmUgbGlzdGVkIGZpcnN0LiBJZiBzZXQgdG8gTk8gdGhlIGNvbnN0cnVjdG9ycyB3aWxsIGFw
cGVhciBpbiB0aGUKLSMgcmVzcGVjdGl2ZSBvcmRlcnMgZGVmaW5lZCBieSBTT1JUX0JSSUVGX0RP
Q1MgYW5kIFNPUlRfTUVNQkVSX0RPQ1MuCi0jIE5vdGU6IElmIFNPUlRfQlJJRUZfRE9DUyBpcyBz
ZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Igc29ydGluZyBicmllZgotIyBtZW1i
ZXIgZG9jdW1lbnRhdGlvbi4KLSMgTm90ZTogSWYgU09SVF9NRU1CRVJfRE9DUyBpcyBzZXQgdG8g
Tk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Igc29ydGluZwotIyBkZXRhaWxlZCBtZW1iZXIg
ZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TT1JUX01FTUJF
UlNfQ1RPUlNfMVNUID0gTk8KLQotIyBJZiB0aGUgU09SVF9HUk9VUF9OQU1FUyB0YWcgaXMgc2V0
IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZSBoaWVyYXJjaHkKLSMgb2YgZ3JvdXAg
bmFtZXMgaW50byBhbHBoYWJldGljYWwgb3JkZXIuIElmIHNldCB0byBOTyB0aGUgZ3JvdXAgbmFt
ZXMgd2lsbAotIyBhcHBlYXIgaW4gdGhlaXIgZGVmaW5lZCBvcmRlci4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1TT1JUX0dST1VQX05BTUVTICAgICAgID0gTk8KLQotIyBJZiB0aGUg
U09SVF9CWV9TQ09QRV9OQU1FIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgY2xhc3MgbGlzdCB3aWxs
IGJlIHNvcnRlZCBieQotIyBmdWxseS1xdWFsaWZpZWQgbmFtZXMsIGluY2x1ZGluZyBuYW1lc3Bh
Y2VzLiBJZiBzZXQgdG8gTk8sIHRoZSBjbGFzcyBsaXN0IHdpbGwKLSMgYmUgc29ydGVkIG9ubHkg
YnkgY2xhc3MgbmFtZSwgbm90IGluY2x1ZGluZyB0aGUgbmFtZXNwYWNlIHBhcnQuCi0jIE5vdGU6
IFRoaXMgb3B0aW9uIGlzIG5vdCB2ZXJ5IHVzZWZ1bCBpZiBISURFX1NDT1BFX05BTUVTIGlzIHNl
dCB0byBZRVMuCi0jIE5vdGU6IFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSB0byB0aGUgY2xhc3Mg
bGlzdCwgbm90IHRvIHRoZSBhbHBoYWJldGljYWwKLSMgbGlzdC4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IE5PLgotCi1TT1JUX0JZX1NDT1BFX05BTUUgICAgID0gWUVTCi0KLSMgSWYgdGhlIFNU
UklDVF9QUk9UT19NQVRDSElORyBvcHRpb24gaXMgZW5hYmxlZCBhbmQgZG94eWdlbiBmYWlscyB0
byBkbyBwcm9wZXIKLSMgdHlwZSByZXNvbHV0aW9uIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIGEgZnVu
Y3Rpb24gaXQgd2lsbCByZWplY3QgYSBtYXRjaCBiZXR3ZWVuCi0jIHRoZSBwcm90b3R5cGUgYW5k
IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIG1lbWJlciBmdW5jdGlvbiBldmVuIGlmIHRoZXJlIGlz
Ci0jIG9ubHkgb25lIGNhbmRpZGF0ZSBvciBpdCBpcyBvYnZpb3VzIHdoaWNoIGNhbmRpZGF0ZSB0
byBjaG9vc2UgYnkgZG9pbmcgYQotIyBzaW1wbGUgc3RyaW5nIG1hdGNoLiBCeSBkaXNhYmxpbmcg
U1RSSUNUX1BST1RPX01BVENISU5HIGRveHlnZW4gd2lsbCBzdGlsbAotIyBhY2NlcHQgYSBtYXRj
aCBiZXR3ZWVuIHByb3RvdHlwZSBhbmQgaW1wbGVtZW50YXRpb24gaW4gc3VjaCBjYXNlcy4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgID0gTk8K
LQotIyBUaGUgR0VORVJBVEVfVE9ET0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlF
Uykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKLSMgdG9kbyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRl
ZCBieSBwdXR0aW5nIFx0b2RvIGNvbW1hbmRzIGluIHRoZQotIyBkb2N1bWVudGF0aW9uLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFURV9UT0RPTElTVCAgICAgID0gWUVT
Ci0KLSMgVGhlIEdFTkVSQVRFX1RFU1RMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZ
RVMpIG9yIGRpc2FibGUgKCBOTykgdGhlCi0jIHRlc3QgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0
ZWQgYnkgcHV0dGluZyBcdGVzdCBjb21tYW5kcyBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbi4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotR0VORVJBVEVfVEVTVExJU1QgICAgICA9IE5P
Ci0KLSMgVGhlIEdFTkVSQVRFX0JVR0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlF
Uykgb3IgZGlzYWJsZSAoIE5PKSB0aGUgYnVnCi0jIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVk
IGJ5IHB1dHRpbmcgXGJ1ZyBjb21tYW5kcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotR0VORVJBVEVfQlVHTElTVCAgICAgICA9IE5PCi0KLSMg
VGhlIEdFTkVSQVRFX0RFUFJFQ0FURURMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZ
RVMpIG9yIGRpc2FibGUgKCBOTykKLSMgdGhlIGRlcHJlY2F0ZWQgbGlzdC4gVGhpcyBsaXN0IGlz
IGNyZWF0ZWQgYnkgcHV0dGluZyBcZGVwcmVjYXRlZCBjb21tYW5kcyBpbgotIyB0aGUgZG9jdW1l
bnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotR0VORVJBVEVfREVQUkVD
QVRFRExJU1Q9IFlFUwotCi0jIFRoZSBFTkFCTEVEX1NFQ1RJT05TIHRhZyBjYW4gYmUgdXNlZCB0
byBlbmFibGUgY29uZGl0aW9uYWwgZG9jdW1lbnRhdGlvbgotIyBzZWN0aW9ucywgbWFya2VkIGJ5
IFxpZiA8c2VjdGlvbl9sYWJlbD4gLi4uIFxlbmRpZiBhbmQgXGNvbmQgPHNlY3Rpb25fbGFiZWw+
Ci0jIC4uLiBcZW5kY29uZCBibG9ja3MuCi0KLUVOQUJMRURfU0VDVElPTlMgICAgICAgPQotCi0j
IFRoZSBNQVhfSU5JVElBTElaRVJfTElORVMgdGFnIGRldGVybWluZXMgdGhlIG1heGltdW0gbnVt
YmVyIG9mIGxpbmVzIHRoYXQgdGhlCi0jIGluaXRpYWwgdmFsdWUgb2YgYSB2YXJpYWJsZSBvciBt
YWNybyAvIGRlZmluZSBjYW4gaGF2ZSBmb3IgaXQgdG8gYXBwZWFyIGluIHRoZQotIyBkb2N1bWVu
dGF0aW9uLiBJZiB0aGUgaW5pdGlhbGl6ZXIgY29uc2lzdHMgb2YgbW9yZSBsaW5lcyB0aGFuIHNw
ZWNpZmllZCBoZXJlCi0jIGl0IHdpbGwgYmUgaGlkZGVuLiBVc2UgYSB2YWx1ZSBvZiAwIHRvIGhp
ZGUgaW5pdGlhbGl6ZXJzIGNvbXBsZXRlbHkuIFRoZQotIyBhcHBlYXJhbmNlIG9mIHRoZSB2YWx1
ZSBvZiBpbmRpdmlkdWFsIHZhcmlhYmxlcyBhbmQgbWFjcm9zIC8gZGVmaW5lcyBjYW4gYmUKLSMg
Y29udHJvbGxlZCB1c2luZyBcc2hvd2luaXRpYWxpemVyIG9yIFxoaWRlaW5pdGlhbGl6ZXIgY29t
bWFuZCBpbiB0aGUKLSMgZG9jdW1lbnRhdGlvbiByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4K
LSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwMDAsIGRlZmF1bHQgdmFsdWU6
IDMwLgotCi1NQVhfSU5JVElBTElaRVJfTElORVMgID0gMzAKLQotIyBTZXQgdGhlIFNIT1dfVVNF
RF9GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgbGlzdCBvZiBmaWxlcyBnZW5lcmF0ZWQg
YXQKLSMgdGhlIGJvdHRvbSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBjbGFzc2VzIGFuZCBzdHJ1
Y3RzLiBJZiBzZXQgdG8gWUVTIHRoZSBsaXN0Ci0jIHdpbGwgbWVudGlvbiB0aGUgZmlsZXMgdGhh
dCB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBZRVMuCi0KLVNIT1dfVVNFRF9GSUxFUyAgICAgICAgPSBZRVMKLQotIyBTZXQg
dGhlIFNIT1dfRklMRVMgdGFnIHRvIE5PIHRvIGRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgdGhl
IEZpbGVzIHBhZ2UuIFRoaXMKLSMgd2lsbCByZW1vdmUgdGhlIEZpbGVzIGVudHJ5IGZyb20gdGhl
IFF1aWNrIEluZGV4IGFuZCBmcm9tIHRoZSBGb2xkZXIgVHJlZSBWaWV3Ci0jIChpZiBzcGVjaWZp
ZWQpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1TSE9XX0ZJTEVTICAgICAgICAg
ICAgID0gWUVTCi0KLSMgU2V0IHRoZSBTSE9XX05BTUVTUEFDRVMgdGFnIHRvIE5PIHRvIGRpc2Fi
bGUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIE5hbWVzcGFjZXMKLSMgcGFnZS4gVGhpcyB3aWxsIHJl
bW92ZSB0aGUgTmFtZXNwYWNlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0
aGUKLSMgRm9sZGVyIFRyZWUgVmlldyAoaWYgc3BlY2lmaWVkKS4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLQotU0hPV19OQU1FU1BBQ0VTICAgICAgICA9IFlFUwotCi0jIFRoZSBGSUxF
X1ZFUlNJT05fRklMVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcHJvZ3JhbSBvciBz
Y3JpcHQgdGhhdAotIyBkb3h5Z2VuIHNob3VsZCBpbnZva2UgdG8gZ2V0IHRoZSBjdXJyZW50IHZl
cnNpb24gZm9yIGVhY2ggZmlsZSAodHlwaWNhbGx5IGZyb20KLSMgdGhlIHZlcnNpb24gY29udHJv
bCBzeXN0ZW0pLiBEb3h5Z2VuIHdpbGwgaW52b2tlIHRoZSBwcm9ncmFtIGJ5IGV4ZWN1dGluZyAo
dmlhCi0jIHBvcGVuKCkpIHRoZSBjb21tYW5kIGNvbW1hbmQgaW5wdXQtZmlsZSwgd2hlcmUgY29t
bWFuZCBpcyB0aGUgdmFsdWUgb2YgdGhlCi0jIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnLCBhbmQg
aW5wdXQtZmlsZSBpcyB0aGUgbmFtZSBvZiBhbiBpbnB1dCBmaWxlIHByb3ZpZGVkCi0jIGJ5IGRv
eHlnZW4uIFdoYXRldmVyIHRoZSBwcm9ncmFtIHdyaXRlcyB0byBzdGFuZGFyZCBvdXRwdXQgaXMg
dXNlZCBhcyB0aGUgZmlsZQotIyB2ZXJzaW9uLiBGb3IgYW4gZXhhbXBsZSBzZWUgdGhlIGRvY3Vt
ZW50YXRpb24uCi0KLUZJTEVfVkVSU0lPTl9GSUxURVIgICAgPQotCi0jIFRoZSBMQVlPVVRfRklM
RSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGxheW91dCBmaWxlIHdoaWNoIHdpbGwgYmUg
cGFyc2VkCi0jIGJ5IGRveHlnZW4uIFRoZSBsYXlvdXQgZmlsZSBjb250cm9scyB0aGUgZ2xvYmFs
IHN0cnVjdHVyZSBvZiB0aGUgZ2VuZXJhdGVkCi0jIG91dHB1dCBmaWxlcyBpbiBhbiBvdXRwdXQg
Zm9ybWF0IGluZGVwZW5kZW50IHdheS4gVG8gY3JlYXRlIHRoZSBsYXlvdXQgZmlsZQotIyB0aGF0
IHJlcHJlc2VudHMgZG94eWdlbidzIGRlZmF1bHRzLCBydW4gZG94eWdlbiB3aXRoIHRoZSAtbCBv
cHRpb24uIFlvdSBjYW4KLSMgb3B0aW9uYWxseSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGFmdGVyIHRo
ZSBvcHRpb24sIGlmIG9taXR0ZWQgRG94eWdlbkxheW91dC54bWwKLSMgd2lsbCBiZSB1c2VkIGFz
IHRoZSBuYW1lIG9mIHRoZSBsYXlvdXQgZmlsZS4KLSMKLSMgTm90ZSB0aGF0IGlmIHlvdSBydW4g
ZG94eWdlbiBmcm9tIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBmaWxlIGNhbGxlZAotIyBEb3h5
Z2VuTGF5b3V0LnhtbCwgZG94eWdlbiB3aWxsIHBhcnNlIGl0IGF1dG9tYXRpY2FsbHkgZXZlbiBp
ZiB0aGUgTEFZT1VUX0ZJTEUKLSMgdGFnIGlzIGxlZnQgZW1wdHkuCi0KLUxBWU9VVF9GSUxFICAg
ICAgICAgICAgPQotCi0jIFRoZSBDSVRFX0JJQl9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSBvbmUgb3IgbW9yZSBiaWIgZmlsZXMgY29udGFpbmluZwotIyB0aGUgcmVmZXJlbmNlIGRl
ZmluaXRpb25zLiBUaGlzIG11c3QgYmUgYSBsaXN0IG9mIC5iaWIgZmlsZXMuIFRoZSAuYmliCi0j
IGV4dGVuc2lvbiBpcyBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIGlmIG9taXR0ZWQuIFRoaXMgcmVx
dWlyZXMgdGhlIGJpYnRleCB0b29sCi0jIHRvIGJlIGluc3RhbGxlZC4gU2VlIGFsc28gaHR0cDov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJUZVggZm9yIG1vcmUgaW5mby4KLSMgRm9yIExhVGVY
IHRoZSBzdHlsZSBvZiB0aGUgYmlibGlvZ3JhcGh5IGNhbiBiZSBjb250cm9sbGVkIHVzaW5nCi0j
IExBVEVYX0JJQl9TVFlMRS4gVG8gdXNlIHRoaXMgZmVhdHVyZSB5b3UgbmVlZCBiaWJ0ZXggYW5k
IHBlcmwgYXZhaWxhYmxlIGluIHRoZQotIyBzZWFyY2ggcGF0aC4gRG8gbm90IHVzZSBmaWxlIG5h
bWVzIHdpdGggc3BhY2VzLCBiaWJ0ZXggY2Fubm90IGhhbmRsZSB0aGVtLiBTZWUKLSMgYWxzbyBc
Y2l0ZSBmb3IgaW5mbyBob3cgdG8gY3JlYXRlIHJlZmVyZW5jZXMuCi0KLUNJVEVfQklCX0ZJTEVT
ICAgICAgICAgPQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9u
cyByZWxhdGVkIHRvIHdhcm5pbmcgYW5kIHByb2dyZXNzIG1lc3NhZ2VzCi0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSMgVGhlIFFVSUVUIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUg
bWVzc2FnZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIHRvCi0jIHN0YW5kYXJkIG91dHB1dCBieSBkb3h5
Z2VuLiBJZiBRVUlFVCBpcyBzZXQgdG8gWUVTIHRoaXMgaW1wbGllcyB0aGF0IHRoZQotIyBtZXNz
YWdlcyBhcmUgb2ZmLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVFVSUVUICAgICAg
ICAgICAgICAgICAgPSBOTwotCi0jIFRoZSBXQVJOSU5HUyB0YWcgY2FuIGJlIHVzZWQgdG8gdHVy
biBvbi9vZmYgdGhlIHdhcm5pbmcgbWVzc2FnZXMgdGhhdCBhcmUKLSMgZ2VuZXJhdGVkIHRvIHN0
YW5kYXJkIGVycm9yICggc3RkZXJyKSBieSBkb3h5Z2VuLiBJZiBXQVJOSU5HUyBpcyBzZXQgdG8g
WUVTCi0jIHRoaXMgaW1wbGllcyB0aGF0IHRoZSB3YXJuaW5ncyBhcmUgb24uCi0jCi0jIFRpcDog
VHVybiB3YXJuaW5ncyBvbiB3aGlsZSB3cml0aW5nIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1XQVJOSU5HUyAgICAgICAgICAgICAgID0gWUVTCi0K
LSMgSWYgdGhlIFdBUk5fSUZfVU5ET0NVTUVOVEVEIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRv
eHlnZW4gd2lsbCBnZW5lcmF0ZQotIyB3YXJuaW5ncyBmb3IgdW5kb2N1bWVudGVkIG1lbWJlcnMu
IElmIEVYVFJBQ1RfQUxMIGlzIHNldCB0byBZRVMgdGhlbiB0aGlzIGZsYWcKLSMgd2lsbCBhdXRv
bWF0aWNhbGx5IGJlIGRpc2FibGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1X
QVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVTCi0KLSMgSWYgdGhlIFdBUk5fSUZfRE9DX0VSUk9S
IHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgd2FybmluZ3MgZm9yCi0j
IHBvdGVudGlhbCBlcnJvcnMgaW4gdGhlIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMgbm90IGRvY3Vt
ZW50aW5nIHNvbWUgcGFyYW1ldGVycwotIyBpbiBhIGRvY3VtZW50ZWQgZnVuY3Rpb24sIG9yIGRv
Y3VtZW50aW5nIHBhcmFtZXRlcnMgdGhhdCBkb24ndCBleGlzdCBvciB1c2luZwotIyBtYXJrdXAg
Y29tbWFuZHMgd3JvbmdseS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotV0FSTl9J
Rl9ET0NfRVJST1IgICAgICA9IFlFUwotCi0jIFRoaXMgV0FSTl9OT19QQVJBTURPQyBvcHRpb24g
Y2FuIGJlIGVuYWJsZWQgdG8gZ2V0IHdhcm5pbmdzIGZvciBmdW5jdGlvbnMgdGhhdAotIyBhcmUg
ZG9jdW1lbnRlZCwgYnV0IGhhdmUgbm8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlaXIgcGFyYW1ldGVy
cyBvciByZXR1cm4KLSMgdmFsdWUuIElmIHNldCB0byBOTyBkb3h5Z2VuIHdpbGwgb25seSB3YXJu
IGFib3V0IHdyb25nIG9yIGluY29tcGxldGUgcGFyYW1ldGVyCi0jIGRvY3VtZW50YXRpb24sIGJ1
dCBub3QgYWJvdXQgdGhlIGFic2VuY2Ugb2YgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1XQVJOX05PX1BBUkFNRE9DICAgICAgID0gTk8KLQotIyBUaGUgV0FS
Tl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhlIGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdl
cyB0aGF0IGRveHlnZW4KLSMgY2FuIHByb2R1Y2UuIFRoZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4g
dGhlICRmaWxlLCAkbGluZSwgYW5kICR0ZXh0IHRhZ3MsIHdoaWNoCi0jIHdpbGwgYmUgcmVwbGFj
ZWQgYnkgdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGZyb20gd2hpY2ggdGhlIHdhcm5pbmcgb3Jp
Z2luYXRlZAotIyBhbmQgdGhlIHdhcm5pbmcgdGV4dC4gT3B0aW9uYWxseSB0aGUgZm9ybWF0IG1h
eSBjb250YWluICR2ZXJzaW9uLCB3aGljaCB3aWxsCi0jIGJlIHJlcGxhY2VkIGJ5IHRoZSB2ZXJz
aW9uIG9mIHRoZSBmaWxlIChpZiBpdCBjb3VsZCBiZSBvYnRhaW5lZCB2aWEKLSMgRklMRV9WRVJT
SU9OX0ZJTFRFUikKLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6ICRmaWxlOiRsaW5lOiAkdGV4dC4K
LQotV0FSTl9GT1JNQVQgICAgICAgICAgICA9ICIkZmlsZTokbGluZTogJHRleHQiCi0KLSMgVGhl
IFdBUk5fTE9HRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgdG8gd2hpY2gg
d2FybmluZyBhbmQgZXJyb3IKLSMgbWVzc2FnZXMgc2hvdWxkIGJlIHdyaXR0ZW4uIElmIGxlZnQg
YmxhbmsgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRvIHN0YW5kYXJkCi0jIGVycm9yIChzdGRlcnIp
LgotCi1XQVJOX0xPR0ZJTEUgICAgICAgICAgID0gJVdBUk5JTkdfTE9HX1BBVEglCi0KLSMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGlu
cHV0IGZpbGVzCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhlIElOUFVUIHRhZyBpcyB1c2Vk
IHRvIHNwZWNpZnkgdGhlIGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4KLSMg
ZG9jdW1lbnRlZCBzb3VyY2UgZmlsZXMuIFlvdSBtYXkgZW50ZXIgZmlsZSBuYW1lcyBsaWtlIG15
ZmlsZS5jcHAgb3IKLSMgZGlyZWN0b3JpZXMgbGlrZSAvdXNyL3NyYy9teXByb2plY3QuIFNlcGFy
YXRlIHRoZSBmaWxlcyBvciBkaXJlY3RvcmllcyB3aXRoCi0jIHNwYWNlcy4KLSMgTm90ZTogSWYg
dGhpcyB0YWcgaXMgZW1wdHkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNlYXJjaGVkLgotCi1J
TlBVVCAgICAgICAgICAgICAgICAgID0gLi4vaW5jbHVkZSBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgLi4vc3JjL2xpYl9qc29uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAuCi0KLSMg
VGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIG9m
IHRoZSBzb3VyY2UgZmlsZXMKLSMgdGhhdCBkb3h5Z2VuIHBhcnNlcy4gSW50ZXJuYWxseSBkb3h5
Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5nLiBEb3h5Z2VuIHVzZXMKLSMgbGliaWNvbnYgKG9y
IHRoZSBpY29udiBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSB0aGUg
bGliaWNvbnYKLSMgZG9jdW1lbnRhdGlvbiAoc2VlOiBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdh
cmUvbGliaWNvbnYpIGZvciB0aGUgbGlzdCBvZgotIyBwb3NzaWJsZSBlbmNvZGluZ3MuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYtOC4KLQotSU5QVVRfRU5DT0RJTkcgICAgICAgICA9IFVU
Ri04Ci0KLSMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3Jp
ZXMsIHlvdSBjYW4gdXNlIHRoZQotIyBGSUxFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBv
ciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIChsaWtlICouY3BwIGFuZAotIyAqLmgpIHRvIGZpbHRl
ciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsg
dGhlCi0jIGZvbGxvd2luZyBwYXR0ZXJucyBhcmUgdGVzdGVkOiouYywgKi5jYywgKi5jeHgsICou
Y3BwLCAqLmMrKywgKi5qYXZhLCAqLmlpLAotIyAqLml4eCwgKi5pcHAsICouaSsrLCAqLmlubCwg
Ki5pZGwsICouZGRsLCAqLm9kbCwgKi5oLCAqLmhoLCAqLmh4eCwgKi5ocHAsCi0jICouaCsrLCAq
LmNzLCAqLmQsICoucGhwLCAqLnBocDQsICoucGhwNSwgKi5waHRtbCwgKi5pbmMsICoubSwgKi5t
YXJrZG93biwKLSMgKi5tZCwgKi5tbSwgKi5kb3gsICoucHksICouZjkwLCAqLmYsICouZm9yLCAq
LnRjbCwgKi52aGQsICoudmhkbCwgKi51Y2YsCi0jICoucXNmLCAqLmFzIGFuZCAqLmpzLgotCi1G
SUxFX1BBVFRFUk5TICAgICAgICAgID0gKi5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAq
LmNwcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi5pbmwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICouZG94Ci0KLSMgVGhlIFJFQ1VSU0lWRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSB3aGV0aGVyIG9yIG5vdCBzdWJkaXJlY3RvcmllcyBzaG91bGQKLSMgYmUgc2VhcmNoZWQg
Zm9yIGlucHV0IGZpbGVzIGFzIHdlbGwuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
UkVDVVJTSVZFICAgICAgICAgICAgICA9IFlFUwotCi0jIFRoZSBFWENMVURFIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IHNob3VsZCBiZQot
IyBleGNsdWRlZCBmcm9tIHRoZSBJTlBVVCBzb3VyY2UgZmlsZXMuIFRoaXMgd2F5IHlvdSBjYW4g
ZWFzaWx5IGV4Y2x1ZGUgYQotIyBzdWJkaXJlY3RvcnkgZnJvbSBhIGRpcmVjdG9yeSB0cmVlIHdo
b3NlIHJvb3QgaXMgc3BlY2lmaWVkIHdpdGggdGhlIElOUFVUIHRhZy4KLSMKLSMgTm90ZSB0aGF0
IHJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2gg
ZG94eWdlbiBpcwotIyBydW4uCi0KLUVYQ0xVREUgICAgICAgICAgICAgICAgPQotCi0jIFRoZSBF
WENMVURFX1NZTUxJTktTIHRhZyBjYW4gYmUgdXNlZCB0byBzZWxlY3Qgd2hldGhlciBvciBub3Qg
ZmlsZXMgb3IKLSMgZGlyZWN0b3JpZXMgdGhhdCBhcmUgc3ltYm9saWMgbGlua3MgKGEgVW5peCBm
aWxlIHN5c3RlbSBmZWF0dXJlKSBhcmUgZXhjbHVkZWQKLSMgZnJvbSB0aGUgaW5wdXQuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRVhDTFVERV9TWU1MSU5LUyAgICAgICA9IE5PCi0K
LSMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlv
dSBjYW4gdXNlIHRoZQotIyBFWENMVURFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBt
b3JlIHdpbGRjYXJkIHBhdHRlcm5zIHRvIGV4Y2x1ZGUKLSMgY2VydGFpbiBmaWxlcyBmcm9tIHRo
b3NlIGRpcmVjdG9yaWVzLgotIwotIyBOb3RlIHRoYXQgdGhlIHdpbGRjYXJkcyBhcmUgbWF0Y2hl
ZCBhZ2FpbnN0IHRoZSBmaWxlIHdpdGggYWJzb2x1dGUgcGF0aCwgc28gdG8KLSMgZXhjbHVkZSBh
bGwgdGVzdCBkaXJlY3RvcmllcyBmb3IgZXhhbXBsZSB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoK
LQotRVhDTFVERV9QQVRURVJOUyAgICAgICA9Ci0KLSMgVGhlIEVYQ0xVREVfU1lNQk9MUyB0YWcg
Y2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBzeW1ib2wgbmFtZXMKLSMgKG5hbWVz
cGFjZXMsIGNsYXNzZXMsIGZ1bmN0aW9ucywgZXRjLikgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQg
ZnJvbSB0aGUKLSMgb3V0cHV0LiBUaGUgc3ltYm9sIG5hbWUgY2FuIGJlIGEgZnVsbHkgcXVhbGlm
aWVkIG5hbWUsIGEgd29yZCwgb3IgaWYgdGhlCi0jIHdpbGRjYXJkICogaXMgdXNlZCwgYSBzdWJz
dHJpbmcuIEV4YW1wbGVzOiBBTmFtZXNwYWNlLCBBQ2xhc3MsCi0jIEFDbGFzczo6QU5hbWVzcGFj
ZSwgQU5hbWVzcGFjZTo6KlRlc3QKLSMKLSMgTm90ZSB0aGF0IHRoZSB3aWxkY2FyZHMgYXJlIG1h
dGNoZWQgYWdhaW5zdCB0aGUgZmlsZSB3aXRoIGFic29sdXRlIHBhdGgsIHNvIHRvCi0jIGV4Y2x1
ZGUgYWxsIHRlc3QgZGlyZWN0b3JpZXMgdXNlIHRoZSBwYXR0ZXJuICovdGVzdC8qCi0KLUVYQ0xV
REVfU1lNQk9MUyAgICAgICAgPQotCi0jIFRoZSBFWEFNUExFX1BBVEggdGFnIGNhbiBiZSB1c2Vk
IHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMgb3IgZGlyZWN0b3JpZXMKLSMgdGhhdCBjb250
YWluIGV4YW1wbGUgY29kZSBmcmFnbWVudHMgdGhhdCBhcmUgaW5jbHVkZWQgKHNlZSB0aGUgXGlu
Y2x1ZGUKLSMgY29tbWFuZCkuCi0KLUVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAuLgotCi0jIElm
IHRoZSB2YWx1ZSBvZiB0aGUgRVhBTVBMRV9QQVRIIHRhZyBjb250YWlucyBkaXJlY3Rvcmllcywg
eW91IGNhbiB1c2UgdGhlCi0jIEVYQU1QTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9y
IG1vcmUgd2lsZGNhcmQgcGF0dGVybiAobGlrZSAqLmNwcCBhbmQKLSMgKi5oKSB0byBmaWx0ZXIg
b3V0IHRoZSBzb3VyY2UtZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzLiBJZiBsZWZ0IGJsYW5rIGFs
bAotIyBmaWxlcyBhcmUgaW5jbHVkZWQuCi0KLUVYQU1QTEVfUEFUVEVSTlMgICAgICAgPSAqCi0K
LSMgSWYgdGhlIEVYQU1QTEVfUkVDVVJTSVZFIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gc3ViZGly
ZWN0b3JpZXMgd2lsbCBiZQotIyBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgdG8gYmUgdXNlZCB3
aXRoIHRoZSBcaW5jbHVkZSBvciBcZG9udGluY2x1ZGUgY29tbWFuZHMKLSMgaXJyZXNwZWN0aXZl
IG9mIHRoZSB2YWx1ZSBvZiB0aGUgUkVDVVJTSVZFIHRhZy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1FWEFNUExFX1JFQ1VSU0lWRSAgICAgID0gTk8KLQotIyBUaGUgSU1BR0VfUEFU
SCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBmaWxlcyBvciBkaXJlY3Rv
cmllcwotIyB0aGF0IGNvbnRhaW4gaW1hZ2VzIHRoYXQgYXJlIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlCi0jIFxpbWFnZSBjb21tYW5kKS4KLQotSU1BR0VfUEFU
SCAgICAgICAgICAgICA9Ci0KLSMgVGhlIElOUFVUX0ZJTFRFUiB0YWcgY2FuIGJlIHVzZWQgdG8g
c3BlY2lmeSBhIHByb2dyYW0gdGhhdCBkb3h5Z2VuIHNob3VsZAotIyBpbnZva2UgdG8gZmlsdGVy
IGZvciBlYWNoIGlucHV0IGZpbGUuIERveHlnZW4gd2lsbCBpbnZva2UgdGhlIGZpbHRlciBwcm9n
cmFtCi0jIGJ5IGV4ZWN1dGluZyAodmlhIHBvcGVuKCkpIHRoZSBjb21tYW5kOgotIwotIyA8Zmls
dGVyPiA8aW5wdXQtZmlsZT4KLSMKLSMgd2hlcmUgPGZpbHRlcj4gaXMgdGhlIHZhbHVlIG9mIHRo
ZSBJTlBVVF9GSUxURVIgdGFnLCBhbmQgPGlucHV0LWZpbGU+IGlzIHRoZQotIyBuYW1lIG9mIGFu
IGlucHV0IGZpbGUuIERveHlnZW4gd2lsbCB0aGVuIHVzZSB0aGUgb3V0cHV0IHRoYXQgdGhlIGZp
bHRlcgotIyBwcm9ncmFtIHdyaXRlcyB0byBzdGFuZGFyZCBvdXRwdXQuIElmIEZJTFRFUl9QQVRU
RVJOUyBpcyBzcGVjaWZpZWQsIHRoaXMgdGFnCi0jIHdpbGwgYmUgaWdub3JlZC4KLSMKLSMgTm90
ZSB0aGF0IHRoZSBmaWx0ZXIgbXVzdCBub3QgYWRkIG9yIHJlbW92ZSBsaW5lczsgaXQgaXMgYXBw
bGllZCBiZWZvcmUgdGhlCi0jIGNvZGUgaXMgc2Nhbm5lZCwgYnV0IG5vdCB3aGVuIHRoZSBvdXRw
dXQgY29kZSBpcyBnZW5lcmF0ZWQuIElmIGxpbmVzIGFyZSBhZGRlZAotIyBvciByZW1vdmVkLCB0
aGUgYW5jaG9ycyB3aWxsIG5vdCBiZSBwbGFjZWQgY29ycmVjdGx5LgotCi1JTlBVVF9GSUxURVIg
ICAgICAgICAgID0KLQotIyBUaGUgRklMVEVSX1BBVFRFUk5TIHRhZyBjYW4gYmUgdXNlZCB0byBz
cGVjaWZ5IGZpbHRlcnMgb24gYSBwZXIgZmlsZSBwYXR0ZXJuCi0jIGJhc2lzLiBEb3h5Z2VuIHdp
bGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdpdGggZWFjaCBwYXR0ZXJuIGFuZCBhcHBseSB0aGUK
LSMgZmlsdGVyIGlmIHRoZXJlIGlzIGEgbWF0Y2guIFRoZSBmaWx0ZXJzIGFyZSBhIGxpc3Qgb2Yg
dGhlIGZvcm06IHBhdHRlcm49ZmlsdGVyCi0jIChsaWtlICouY3BwPW15X2NwcF9maWx0ZXIpLiBT
ZWUgSU5QVVRfRklMVEVSIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIGhvdwotIyBmaWx0ZXJz
IGFyZSB1c2VkLiBJZiB0aGUgRklMVEVSX1BBVFRFUk5TIHRhZyBpcyBlbXB0eSBvciBpZiBub25l
IG9mIHRoZQotIyBwYXR0ZXJucyBtYXRjaCB0aGUgZmlsZSBuYW1lLCBJTlBVVF9GSUxURVIgaXMg
YXBwbGllZC4KLQotRklMVEVSX1BBVFRFUk5TICAgICAgICA9Ci0KLSMgSWYgdGhlIEZJTFRFUl9T
T1VSQ0VfRklMRVMgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBpbnB1dCBmaWx0ZXIgKGlmIHNldCB1
c2luZwotIyBJTlBVVF9GSUxURVIgKSB3aWxsIGFsc28gYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGlu
cHV0IGZpbGVzIHRoYXQgYXJlIHVzZWQgZm9yCi0jIHByb2R1Y2luZyB0aGUgc291cmNlIGZpbGVz
IHRvIGJyb3dzZSAoaS5lLiB3aGVuIFNPVVJDRV9CUk9XU0VSIGlzIHNldCB0byBZRVMpLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUZJTFRFUl9TT1VSQ0VfRklMRVMgICAgPSBOTwot
Ci0jIFRoZSBGSUxURVJfU09VUkNFX1BBVFRFUk5TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5
IHNvdXJjZSBmaWx0ZXJzIHBlciBmaWxlCi0jIHBhdHRlcm4uIEEgcGF0dGVybiB3aWxsIG92ZXJy
aWRlIHRoZSBzZXR0aW5nIGZvciBGSUxURVJfUEFUVEVSTiAoaWYgYW55KSBhbmQKLSMgaXQgaXMg
YWxzbyBwb3NzaWJsZSB0byBkaXNhYmxlIHNvdXJjZSBmaWx0ZXJpbmcgZm9yIGEgc3BlY2lmaWMg
cGF0dGVybiB1c2luZwotIyAqLmV4dD0gKHNvIHdpdGhvdXQgbmFtaW5nIGEgZmlsdGVyKS4KLSMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEZJTFRFUl9TT1VSQ0VfRklMRVMgaXMgc2V0
IHRvIFlFUy4KLQotRklMVEVSX1NPVVJDRV9QQVRURVJOUyA9Ci0KLSMgSWYgdGhlIFVTRV9NREZJ
TEVfQVNfTUFJTlBBR0UgdGFnIHJlZmVycyB0byB0aGUgbmFtZSBvZiBhIG1hcmtkb3duIGZpbGUg
dGhhdAotIyBpcyBwYXJ0IG9mIHRoZSBpbnB1dCwgaXRzIGNvbnRlbnRzIHdpbGwgYmUgcGxhY2Vk
IG9uIHRoZSBtYWluIHBhZ2UKLSMgKGluZGV4Lmh0bWwpLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYg
eW91IGhhdmUgYSBwcm9qZWN0IG9uIGZvciBpbnN0YW5jZSBHaXRIdWIKLSMgYW5kIHdhbnQgdG8g
cmV1c2UgdGhlIGludHJvZHVjdGlvbiBwYWdlIGFsc28gZm9yIHRoZSBkb3h5Z2VuIG91dHB1dC4K
LQotVVNFX01ERklMRV9BU19NQUlOUEFHRSA9Ci0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29u
ZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gc291cmNlIGJyb3dzaW5nCi0jLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLSMgSWYgdGhlIFNPVVJDRV9CUk9XU0VSIHRhZyBpcyBzZXQgdG8gWUVTIHRo
ZW4gYSBsaXN0IG9mIHNvdXJjZSBmaWxlcyB3aWxsIGJlCi0jIGdlbmVyYXRlZC4gRG9jdW1lbnRl
ZCBlbnRpdGllcyB3aWxsIGJlIGNyb3NzLXJlZmVyZW5jZWQgd2l0aCB0aGVzZSBzb3VyY2VzLgot
IwotIyBOb3RlOiBUbyBnZXQgcmlkIG9mIGFsbCBzb3VyY2UgY29kZSBpbiB0aGUgZ2VuZXJhdGVk
IG91dHB1dCwgbWFrZSBzdXJlIHRoYXQKLSMgYWxzbyBWRVJCQVRJTV9IRUFERVJTIGlzIHNldCB0
byBOTy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TT1VSQ0VfQlJPV1NFUiAgICAg
ICAgID0gTk8KLQotIyBTZXR0aW5nIHRoZSBJTkxJTkVfU09VUkNFUyB0YWcgdG8gWUVTIHdpbGwg
aW5jbHVkZSB0aGUgYm9keSBvZiBmdW5jdGlvbnMsCi0jIGNsYXNzZXMgYW5kIGVudW1zIGRpcmVj
dGx5IGludG8gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LQotSU5MSU5FX1NPVVJDRVMgICAgICAgICA9IE5PCi0KLSMgU2V0dGluZyB0aGUgU1RSSVBfQ09E
RV9DT01NRU5UUyB0YWcgdG8gWUVTIHdpbGwgaW5zdHJ1Y3QgZG94eWdlbiB0byBoaWRlIGFueQot
IyBzcGVjaWFsIGNvbW1lbnQgYmxvY2tzIGZyb20gZ2VuZXJhdGVkIHNvdXJjZSBjb2RlIGZyYWdt
ZW50cy4gTm9ybWFsIEMsIEMrKyBhbmQKLSMgRm9ydHJhbiBjb21tZW50cyB3aWxsIGFsd2F5cyBy
ZW1haW4gdmlzaWJsZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotU1RSSVBfQ09E
RV9DT01NRU5UUyAgICA9IFlFUwotCi0jIElmIHRoZSBSRUZFUkVOQ0VEX0JZX1JFTEFUSU9OIHRh
ZyBpcyBzZXQgdG8gWUVTIHRoZW4gZm9yIGVhY2ggZG9jdW1lbnRlZAotIyBmdW5jdGlvbiBhbGwg
ZG9jdW1lbnRlZCBmdW5jdGlvbnMgcmVmZXJlbmNpbmcgaXQgd2lsbCBiZSBsaXN0ZWQuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUkVGRVJFTkNFRF9CWV9SRUxBVElPTiA9IE5PCi0K
LSMgSWYgdGhlIFJFRkVSRU5DRVNfUkVMQVRJT04gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBmb3Ig
ZWFjaCBkb2N1bWVudGVkIGZ1bmN0aW9uCi0jIGFsbCBkb2N1bWVudGVkIGVudGl0aWVzIGNhbGxl
ZC91c2VkIGJ5IHRoYXQgZnVuY3Rpb24gd2lsbCBiZSBsaXN0ZWQuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLQotUkVGRVJFTkNFU19SRUxBVElPTiAgICA9IE5PCi0KLSMgSWYgdGhlIFJF
RkVSRU5DRVNfTElOS19TT1VSQ0UgdGFnIGlzIHNldCB0byBZRVMgYW5kIFNPVVJDRV9CUk9XU0VS
IHRhZyBpcyBzZXQKLSMgdG8gWUVTLCB0aGVuIHRoZSBoeXBlcmxpbmtzIGZyb20gZnVuY3Rpb25z
IGluIFJFRkVSRU5DRVNfUkVMQVRJT04gYW5kCi0jIFJFRkVSRU5DRURfQllfUkVMQVRJT04gbGlz
dHMgd2lsbCBsaW5rIHRvIHRoZSBzb3VyY2UgY29kZS4gT3RoZXJ3aXNlIHRoZXkgd2lsbAotIyBs
aW5rIHRvIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgot
Ci1SRUZFUkVOQ0VTX0xJTktfU09VUkNFID0gWUVTCi0KLSMgSWYgU09VUkNFX1RPT0xUSVBTIGlz
IGVuYWJsZWQgKHRoZSBkZWZhdWx0KSB0aGVuIGhvdmVyaW5nIGEgaHlwZXJsaW5rIGluIHRoZQot
IyBzb3VyY2UgY29kZSB3aWxsIHNob3cgYSB0b29sdGlwIHdpdGggYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiBzdWNoIGFzIHByb3RvdHlwZSwKLSMgYnJpZWYgZGVzY3JpcHRpb24gYW5kIGxpbmtzIHRv
IHRoZSBkZWZpbml0aW9uIGFuZCBkb2N1bWVudGF0aW9uLiBTaW5jZSB0aGlzCi0jIHdpbGwgbWFr
ZSB0aGUgSFRNTCBmaWxlIGxhcmdlciBhbmQgbG9hZGluZyBvZiBsYXJnZSBmaWxlcyBhIGJpdCBz
bG93ZXIsIHlvdQotIyBjYW4gb3B0IHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09V
UkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KLQotU09VUkNFX1RPT0xUSVBTICAgICAgICA9IFlF
UwotCi0jIElmIHRoZSBVU0VfSFRBR1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgcmVmZXJl
bmNlcyB0byBzb3VyY2UgY29kZSB3aWxsCi0jIHBvaW50IHRvIHRoZSBIVE1MIGdlbmVyYXRlZCBi
eSB0aGUgaHRhZ3MoMSkgdG9vbCBpbnN0ZWFkIG9mIGRveHlnZW4gYnVpbHQtaW4KLSMgc291cmNl
IGJyb3dzZXIuIFRoZSBodGFncyB0b29sIGlzIHBhcnQgb2YgR05VJ3MgZ2xvYmFsIHNvdXJjZSB0
YWdnaW5nIHN5c3RlbQotIyAoc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbG9iYWwv
Z2xvYmFsLmh0bWwpLiBZb3Ugd2lsbCBuZWVkIHZlcnNpb24KLSMgNC44LjYgb3IgaGlnaGVyLgot
IwotIyBUbyB1c2UgaXQgZG8gdGhlIGZvbGxvd2luZzoKLSMgLSBJbnN0YWxsIHRoZSBsYXRlc3Qg
dmVyc2lvbiBvZiBnbG9iYWwKLSMgLSBFbmFibGUgU09VUkNFX0JST1dTRVIgYW5kIFVTRV9IVEFH
UyBpbiB0aGUgY29uZmlnIGZpbGUKLSMgLSBNYWtlIHN1cmUgdGhlIElOUFVUIHBvaW50cyB0byB0
aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUKLSMgLSBSdW4gZG94eWdlbiBhcyBub3JtYWwKLSMK
LSMgRG94eWdlbiB3aWxsIGludm9rZSBodGFncyAoYW5kIHRoYXQgd2lsbCBpbiB0dXJuIGludm9r
ZSBndGFncyksIHNvIHRoZXNlCi0jIHRvb2xzIG11c3QgYmUgYXZhaWxhYmxlIGZyb20gdGhlIGNv
bW1hbmQgbGluZSAoaS5lLiBpbiB0aGUgc2VhcmNoIHBhdGgpLgotIwotIyBUaGUgcmVzdWx0OiBp
bnN0ZWFkIG9mIHRoZSBzb3VyY2UgYnJvd3NlciBnZW5lcmF0ZWQgYnkgZG94eWdlbiwgdGhlIGxp
bmtzIHRvCi0jIHNvdXJjZSBjb2RlIHdpbGwgbm93IHBvaW50IHRvIHRoZSBvdXRwdXQgb2YgaHRh
Z3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIFNPVVJDRV9CUk9XU0VSIGlzIHNldCB0byBZRVMuCi0KLVVTRV9IVEFHUyAgICAg
ICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBWRVJCQVRJTV9IRUFERVJTIHRhZyBpcyBzZXQgdGhl
IFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhCi0jIHZlcmJhdGltIGNvcHkgb2YgdGhl
IGhlYWRlciBmaWxlIGZvciBlYWNoIGNsYXNzIGZvciB3aGljaCBhbiBpbmNsdWRlIGlzCi0jIHNw
ZWNpZmllZC4gU2V0IHRvIE5PIHRvIGRpc2FibGUgdGhpcy4KLSMgU2VlIGFsc286IFNlY3Rpb24g
XGNsYXNzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1WRVJCQVRJTV9IRUFERVJT
ICAgICAgID0gTk8KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlv
bnMgcmVsYXRlZCB0byB0aGUgYWxwaGFiZXRpY2FsIGNsYXNzIGluZGV4Ci0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSMgSWYgdGhlIEFMUEhBQkVUSUNBTF9JTkRFWCB0YWcgaXMgc2V0IHRvIFlFUywg
YW4gYWxwaGFiZXRpY2FsIGluZGV4IG9mIGFsbAotIyBjb21wb3VuZHMgd2lsbCBiZSBnZW5lcmF0
ZWQuIEVuYWJsZSB0aGlzIGlmIHRoZSBwcm9qZWN0IGNvbnRhaW5zIGEgbG90IG9mCi0jIGNsYXNz
ZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogWUVTLgotCi1BTFBIQUJFVElDQUxfSU5ERVggICAgID0gWUVTCi1UT0NfSU5DTFVERV9IRUFE
SU5HUyA9IDIKLQotIyBUaGUgQ09MU19JTl9BTFBIQV9JTkRFWCB0YWcgY2FuIGJlIHVzZWQgdG8g
c3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4KLSMgd2hpY2ggdGhlIGFscGhhYmV0aWNh
bCBpbmRleCBsaXN0IHdpbGwgYmUgc3BsaXQuCi0jIE1pbmltdW0gdmFsdWU6IDEsIG1heGltdW0g
dmFsdWU6IDIwLCBkZWZhdWx0IHZhbHVlOiA1LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgQUxQSEFCRVRJQ0FMX0lOREVYIGlzIHNldCB0byBZRVMuCi0KLUNPTFNfSU5fQUxQSEFf
SU5ERVggICAgPSA1Ci0KLSMgSW4gY2FzZSBhbGwgY2xhc3NlcyBpbiBhIHByb2plY3Qgc3RhcnQg
d2l0aCBhIGNvbW1vbiBwcmVmaXgsIGFsbCBjbGFzc2VzIHdpbGwKLSMgYmUgcHV0IHVuZGVyIHRo
ZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiBUaGUgSUdOT1JFX1BSRUZJ
WCB0YWcKLSMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByZWZpeCAob3IgYSBsaXN0IG9mIHBy
ZWZpeGVzKSB0aGF0IHNob3VsZCBiZSBpZ25vcmVkCi0jIHdoaWxlIGdlbmVyYXRpbmcgdGhlIGlu
ZGV4IGhlYWRlcnMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBBTFBIQUJFVElD
QUxfSU5ERVggaXMgc2V0IHRvIFlFUy4KLQotSUdOT1JFX1BSRUZJWCAgICAgICAgICA9Ci0KLSMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhl
IEhUTUwgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0hU
TUwgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIEhUTUwgb3V0cHV0Ci0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUdFTkVSQVRFX0hUTUwgICAgICAgICAgPSBZ
RVMKLQotIyBUaGUgSFRNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUg
SFRNTCBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0
aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgotIyBp
dC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBodG1sLgotIyBUaGlzIHRhZyByZXF1aXJl
cyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX09VVFBV
VCAgICAgICAgICAgID0gJUhUTUxfT1VUUFVUJQotCi0jIFRoZSBIVE1MX0ZJTEVfRVhURU5TSU9O
IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgZWFjaAot
IyBnZW5lcmF0ZWQgSFRNTCBwYWdlIChmb3IgZXhhbXBsZTogLmh0bSwgLnBocCwgLmFzcCkuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiAuaHRtbC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9GSUxFX0VYVEVOU0lP
TiAgICA9IC5odG1sCi0KLSMgVGhlIEhUTUxfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVj
aWZ5IGEgdXNlci1kZWZpbmVkIEhUTUwgaGVhZGVyIGZpbGUgZm9yCi0jIGVhY2ggZ2VuZXJhdGVk
IEhUTUwgcGFnZS4gSWYgdGhlIHRhZyBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0
ZSBhCi0jIHN0YW5kYXJkIGhlYWRlci4KLSMKLSMgVG8gZ2V0IHZhbGlkIEhUTUwgdGhlIGhlYWRl
ciBmaWxlIHRoYXQgaW5jbHVkZXMgYW55IHNjcmlwdHMgYW5kIHN0eWxlIHNoZWV0cwotIyB0aGF0
IGRveHlnZW4gbmVlZHMsIHdoaWNoIGlzIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJhdGlvbiBv
cHRpb25zIHVzZWQgKGUuZy4KLSMgdGhlIHNldHRpbmcgR0VORVJBVEVfVFJFRVZJRVcpLiBJdCBp
cyBoaWdobHkgcmVjb21tZW5kZWQgdG8gc3RhcnQgd2l0aCBhCi0jIGRlZmF1bHQgaGVhZGVyIHVz
aW5nCi0jIGRveHlnZW4gLXcgaHRtbCBuZXdfaGVhZGVyLmh0bWwgbmV3X2Zvb3Rlci5odG1sIG5l
d19zdHlsZXNoZWV0LmNzcwotIyBZb3VyQ29uZmlnRmlsZQotIyBhbmQgdGhlbiBtb2RpZnkgdGhl
IGZpbGUgbmV3X2hlYWRlci5odG1sLiBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIgot
IyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGhlYWRlciB0
aGF0IGRveHlnZW4gbm9ybWFsbHkKLSMgdXNlcy4KLSMgTm90ZTogVGhlIGhlYWRlciBpcyBzdWJq
ZWN0IHRvIGNoYW5nZSBzbyB5b3UgdHlwaWNhbGx5IGhhdmUgdG8gcmVnZW5lcmF0ZSB0aGUKLSMg
ZGVmYXVsdCBoZWFkZXIgd2hlbiB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIGRveHln
ZW4uIEZvciBhIGRlc2NyaXB0aW9uCi0jIG9mIHRoZSBwb3NzaWJsZSBtYXJrZXJzIGFuZCBibG9j
ayBuYW1lcyBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfSEVBREVSICAgICAg
ICAgICAgPSBoZWFkZXIuaHRtbAotCi0jIFRoZSBIVE1MX0ZPT1RFUiB0YWcgY2FuIGJlIHVzZWQg
dG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBIVE1MIGZvb3RlciBmb3IgZWFjaAotIyBnZW5lcmF0
ZWQgSFRNTCBwYWdlLiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVy
YXRlIGEgc3RhbmRhcmQKLSMgZm9vdGVyLiBTZWUgSFRNTF9IRUFERVIgZm9yIG1vcmUgaW5mb3Jt
YXRpb24gb24gaG93IHRvIGdlbmVyYXRlIGEgZGVmYXVsdAotIyBmb290ZXIgYW5kIHdoYXQgc3Bl
Y2lhbCBjb21tYW5kcyBjYW4gYmUgdXNlZCBpbnNpZGUgdGhlIGZvb3Rlci4gU2VlIGFsc28KLSMg
c2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0
ZSB0aGUgZGVmYXVsdCBmb290ZXIKLSMgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5IHVzZXMuCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMu
Ci0KLUhUTUxfRk9PVEVSICAgICAgICAgICAgPSBmb290ZXIuaHRtbAotCi0jIFRoZSBIVE1MX1NU
WUxFU0hFRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmluZWQgY2FzY2Fk
aW5nIHN0eWxlCi0jIHNoZWV0IHRoYXQgaXMgdXNlZCBieSBlYWNoIEhUTUwgcGFnZS4gSXQgY2Fu
IGJlIHVzZWQgdG8gZmluZS10dW5lIHRoZSBsb29rIG9mCi0jIHRoZSBIVE1MIG91dHB1dC4gSWYg
bGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0eWxlIHNoZWV0Lgot
IyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93
IHRvIGdlbmVyYXRlIHRoZSBzdHlsZQotIyBzaGVldCB0aGF0IGRveHlnZW4gbm9ybWFsbHkgdXNl
cy4KLSMgTm90ZTogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIEhUTUxfRVhUUkFfU1RZTEVTSEVF
VCBpbnN0ZWFkIG9mIHRoaXMgdGFnLCBhcwotIyBpdCBpcyBtb3JlIHJvYnVzdCBhbmQgdGhpcyB0
YWcgKEhUTUxfU1RZTEVTSEVFVCkgd2lsbCBpbiB0aGUgZnV0dXJlIGJlY29tZQotIyBvYnNvbGV0
ZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0
IHRvIFlFUy4KLQotSFRNTF9TVFlMRVNIRUVUICAgICAgICA9Ci0KLSMgVGhlIEhUTUxfRVhUUkFf
U1RZTEVTSEVFVCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhZGRpdGlvbmFsIHVzZXIt
Ci0jIGRlZmluZWQgY2FzY2FkaW5nIHN0eWxlIHNoZWV0IHRoYXQgaXMgaW5jbHVkZWQgYWZ0ZXIg
dGhlIHN0YW5kYXJkIHN0eWxlIHNoZWV0cwotIyBjcmVhdGVkIGJ5IGRveHlnZW4uIFVzaW5nIHRo
aXMgb3B0aW9uIG9uZSBjYW4gb3ZlcnJ1bGUgY2VydGFpbiBzdHlsZSBhc3BlY3RzLgotIyBUaGlz
IGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIEhUTUxfU1RZTEVTSEVFVCBzaW5jZSBpdCBkb2VzIG5v
dCByZXBsYWNlIHRoZQotIyBzdGFuZGFyZCBzdHlsZSBzaGVldCBhbmQgaXMgdGhlcmVmb3JlIG1v
cmUgcm9idXN0IGFnYWluc3QgZnV0dXJlIHVwZGF0ZXMuCi0jIERveHlnZW4gd2lsbCBjb3B5IHRo
ZSBzdHlsZSBzaGVldCBmaWxlIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LiBGb3IgYW4gZXhhbXBs
ZQotIyBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfRVhUUkFfU1RZTEVTSEVF
VCAgPQotCi0jIFRoZSBIVE1MX0VYVFJBX0ZJTEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5
IG9uZSBvciBtb3JlIGV4dHJhIGltYWdlcyBvcgotIyBvdGhlciBzb3VyY2UgZmlsZXMgd2hpY2gg
c2hvdWxkIGJlIGNvcGllZCB0byB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBOb3RlCi0jIHRo
YXQgdGhlc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGJhc2UgSFRNTCBvdXRwdXQgZGly
ZWN0b3J5LiBVc2UgdGhlCi0jICRyZWxwYXRoXiBtYXJrZXIgaW4gdGhlIEhUTUxfSEVBREVSIGFu
ZC9vciBIVE1MX0ZPT1RFUiBmaWxlcyB0byBsb2FkIHRoZXNlCi0jIGZpbGVzLiBJbiB0aGUgSFRN
TF9TVFlMRVNIRUVUIGZpbGUsIHVzZSB0aGUgZmlsZSBuYW1lIG9ubHkuIEFsc28gbm90ZSB0aGF0
IHRoZQotIyBmaWxlcyB3aWxsIGJlIGNvcGllZCBhcy1pczsgdGhlcmUgYXJlIG5vIGNvbW1hbmRz
IG9yIG1hcmtlcnMgYXZhaWxhYmxlLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0VYVFJBX0ZJTEVTICAgICAgID0K
LQotIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0hVRSB0YWcgY29udHJvbHMgdGhlIGNvbG9yIG9mIHRo
ZSBIVE1MIG91dHB1dC4gRG94eWdlbgotIyB3aWxsIGFkanVzdCB0aGUgY29sb3JzIGluIHRoZSBz
dHlsZXNoZWV0IGFuZCBiYWNrZ3JvdW5kIGltYWdlcyBhY2NvcmRpbmcgdG8KLSMgdGhpcyBjb2xv
ci4gSHVlIGlzIHNwZWNpZmllZCBhcyBhbiBhbmdsZSBvbiBhIGNvbG9yd2hlZWwsIHNlZQotIyBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gRm9y
IGluc3RhbmNlIHRoZSB2YWx1ZQotIyAwIHJlcHJlc2VudHMgcmVkLCA2MCBpcyB5ZWxsb3csIDEy
MCBpcyBncmVlbiwgMTgwIGlzIGN5YW4sIDI0MCBpcyBibHVlLCAzMDAKLSMgcHVycGxlLCBhbmQg
MzYwIGlzIHJlZCBhZ2Fpbi4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMzU5
LCBkZWZhdWx0IHZhbHVlOiAyMjAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfQ09MT1JTVFlMRV9IVUUgICAgPSAy
MjAKLQotIyBUaGUgSFRNTF9DT0xPUlNUWUxFX1NBVCB0YWcgY29udHJvbHMgdGhlIHB1cml0eSAo
b3Igc2F0dXJhdGlvbikgb2YgdGhlIGNvbG9ycwotIyBpbiB0aGUgSFRNTCBvdXRwdXQuIEZvciBh
IHZhbHVlIG9mIDAgdGhlIG91dHB1dCB3aWxsIHVzZSBncmF5c2NhbGVzIG9ubHkuIEEKLSMgdmFs
dWUgb2YgMjU1IHdpbGwgcHJvZHVjZSB0aGUgbW9zdCB2aXZpZCBjb2xvcnMuCi0jIE1pbmltdW0g
dmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDI1NSwgZGVmYXVsdCB2YWx1ZTogMTAwLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgot
Ci1IVE1MX0NPTE9SU1RZTEVfU0FUICAgID0gMTAwCi0KLSMgVGhlIEhUTUxfQ09MT1JTVFlMRV9H
QU1NQSB0YWcgY29udHJvbHMgdGhlIGdhbW1hIGNvcnJlY3Rpb24gYXBwbGllZCB0byB0aGUKLSMg
bHVtaW5hbmNlIGNvbXBvbmVudCBvZiB0aGUgY29sb3JzIGluIHRoZSBIVE1MIG91dHB1dC4gVmFs
dWVzIGJlbG93IDEwMAotIyBncmFkdWFsbHkgbWFrZSB0aGUgb3V0cHV0IGxpZ2h0ZXIsIHdoZXJl
YXMgdmFsdWVzIGFib3ZlIDEwMCBtYWtlIHRoZSBvdXRwdXQKLSMgZGFya2VyLiBUaGUgdmFsdWUg
ZGl2aWRlZCBieSAxMDAgaXMgdGhlIGFjdHVhbCBnYW1tYSBhcHBsaWVkLCBzbyA4MCByZXByZXNl
bnRzCi0jIGEgZ2FtbWEgb2YgMC44LCBUaGUgdmFsdWUgMjIwIHJlcHJlc2VudHMgYSBnYW1tYSBv
ZiAyLjIsIGFuZCAxMDAgZG9lcyBub3QKLSMgY2hhbmdlIHRoZSBnYW1tYS4KLSMgTWluaW11bSB2
YWx1ZTogNDAsIG1heGltdW0gdmFsdWU6IDI0MCwgZGVmYXVsdCB2YWx1ZTogODAuCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0K
LUhUTUxfQ09MT1JTVFlMRV9HQU1NQSAgPSA4MAotCi0jIElmIHRoZSBIVE1MX1RJTUVTVEFNUCB0
YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBmb290ZXIgb2YgZWFjaCBnZW5lcmF0ZWQgSFRNTAot
IyBwYWdlIHdpbGwgY29udGFpbiB0aGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBwYWdlIHdhcyBn
ZW5lcmF0ZWQuIFNldHRpbmcgdGhpcwotIyB0byBOTyBjYW4gaGVscCB3aGVuIGNvbXBhcmluZyB0
aGUgb3V0cHV0IG9mIG11bHRpcGxlIHJ1bnMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMu
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0
byBZRVMuCi0KLUhUTUxfVElNRVNUQU1QICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBIVE1MX0RZ
TkFNSUNfU0VDVElPTlMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgZ2VuZXJhdGVkIEhUTUwK
LSMgZG9jdW1lbnRhdGlvbiB3aWxsIGNvbnRhaW4gc2VjdGlvbnMgdGhhdCBjYW4gYmUgaGlkZGVu
IGFuZCBzaG93biBhZnRlciB0aGUKLSMgcGFnZSBoYXMgbG9hZGVkLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9I
VE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfRFlOQU1JQ19TRUNUSU9OUyAgPSBZRVMKLQotIyBX
aXRoIEhUTUxfSU5ERVhfTlVNX0VOVFJJRVMgb25lIGNhbiBjb250cm9sIHRoZSBwcmVmZXJyZWQg
bnVtYmVyIG9mIGVudHJpZXMKLSMgc2hvd24gaW4gdGhlIHZhcmlvdXMgdHJlZSBzdHJ1Y3R1cmVk
IGluZGljZXMgaW5pdGlhbGx5OyB0aGUgdXNlciBjYW4gZXhwYW5kCi0jIGFuZCBjb2xsYXBzZSBl
bnRyaWVzIGR5bmFtaWNhbGx5IGxhdGVyIG9uLiBEb3h5Z2VuIHdpbGwgZXhwYW5kIHRoZSB0cmVl
IHRvCi0jIHN1Y2ggYSBsZXZlbCB0aGF0IGF0IG1vc3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2Yg
ZW50cmllcyBhcmUgdmlzaWJsZSAodW5sZXNzCi0jIGEgZnVsbHkgY29sbGFwc2VkIHRyZWUgYWxy
ZWFkeSBleGNlZWRzIHRoaXMgYW1vdW50KS4gU28gc2V0dGluZyB0aGUgbnVtYmVyIG9mCi0jIGVu
dHJpZXMgMSB3aWxsIHByb2R1Y2UgYSBmdWxsIGNvbGxhcHNlZCB0cmVlIGJ5IGRlZmF1bHQuIDAg
aXMgYSBzcGVjaWFsIHZhbHVlCi0jIHJlcHJlc2VudGluZyBhbiBpbmZpbml0ZSBudW1iZXIgb2Yg
ZW50cmllcyBhbmQgd2lsbCByZXN1bHQgaW4gYSBmdWxsIGV4cGFuZGVkCi0jIHRyZWUgYnkgZGVm
YXVsdC4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogOTk5OSwgZGVmYXVsdCB2
YWx1ZTogMTAwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRN
TCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0lOREVYX05VTV9FTlRSSUVTID0gMTAwCi0KLSMgSWYg
dGhlIEdFTkVSQVRFX0RPQ1NFVCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBm
aWxlcyB3aWxsIGJlCi0jIGdlbmVyYXRlZCB0aGF0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBB
cHBsZSdzIFhjb2RlIDMgaW50ZWdyYXRlZCBkZXZlbG9wbWVudAotIyBlbnZpcm9ubWVudCAoc2Vl
OiBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90b29scy94Y29kZS8pLCBpbnRyb2R1Y2VkIHdp
dGgKLSMgT1NYIDEwLjUgKExlb3BhcmQpLiBUbyBjcmVhdGUgYSBkb2N1bWVudGF0aW9uIHNldCwg
ZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKLSMgTWFrZWZpbGUgaW4gdGhlIEhUTUwgb3V0cHV0IGRp
cmVjdG9yeS4gUnVubmluZyBtYWtlIHdpbGwgcHJvZHVjZSB0aGUgZG9jc2V0IGluCi0jIHRoYXQg
ZGlyZWN0b3J5IGFuZCBydW5uaW5nIG1ha2UgaW5zdGFsbCB3aWxsIGluc3RhbGwgdGhlIGRvY3Nl
dCBpbgotIyB+L0xpYnJhcnkvRGV2ZWxvcGVyL1NoYXJlZC9Eb2N1bWVudGF0aW9uL0RvY1NldHMg
c28gdGhhdCBYY29kZSB3aWxsIGZpbmQgaXQgYXQKLSMgc3RhcnR1cC4gU2VlIGh0dHA6Ly9kZXZl
bG9wZXIuYXBwbGUuY29tL3Rvb2xzL2NyZWF0aW5nZG9jc2V0c3dpdGhkb3h5Z2VuLmh0bWwKLSMg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4K
LQotR0VORVJBVEVfRE9DU0VUICAgICAgICA9IE5PCi0KLSMgVGhpcyB0YWcgZGV0ZXJtaW5lcyB0
aGUgbmFtZSBvZiB0aGUgZG9jc2V0IGZlZWQuIEEgZG9jdW1lbnRhdGlvbiBmZWVkIHByb3ZpZGVz
Ci0jIGFuIHVtYnJlbGxhIHVuZGVyIHdoaWNoIG11bHRpcGxlIGRvY3VtZW50YXRpb24gc2V0cyBm
cm9tIGEgc2luZ2xlIHByb3ZpZGVyCi0jIChzdWNoIGFzIGEgY29tcGFueSBvciBwcm9kdWN0IHN1
aXRlKSBjYW4gYmUgZ3JvdXBlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IERveHlnZW4gZ2Vu
ZXJhdGVkIGRvY3MuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9E
T0NTRVQgaXMgc2V0IHRvIFlFUy4KLQotRE9DU0VUX0ZFRUROQU1FICAgICAgICA9ICJEb3h5Z2Vu
IGdlbmVyYXRlZCBkb2NzIgotCi0jIFRoaXMgdGFnIHNwZWNpZmllcyBhIHN0cmluZyB0aGF0IHNo
b3VsZCB1bmlxdWVseSBpZGVudGlmeSB0aGUgZG9jdW1lbnRhdGlvbgotIyBzZXQgYnVuZGxlLiBU
aGlzIHNob3VsZCBiZSBhIHJldmVyc2UgZG9tYWluLW5hbWUgc3R5bGUgc3RyaW5nLCBlLmcuCi0j
IGNvbS5teWNvbXBhbnkuTXlEb2NTZXQuIERveHlnZW4gd2lsbCBhcHBlbmQgLmRvY3NldCB0byB0
aGUgbmFtZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NTRVQgaXMgc2V0IHRv
IFlFUy4KLQotRE9DU0VUX0JVTkRMRV9JRCAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKLQot
IyBUaGUgRE9DU0VUX1BVQkxJU0hFUl9JRCB0YWcgc3BlY2lmaWVzIGEgc3RyaW5nIHRoYXQgc2hv
dWxkIHVuaXF1ZWx5IGlkZW50aWZ5Ci0jIHRoZSBkb2N1bWVudGF0aW9uIHB1Ymxpc2hlci4gVGhp
cyBzaG91bGQgYmUgYSByZXZlcnNlIGRvbWFpbi1uYW1lIHN0eWxlCi0jIHN0cmluZywgZS5nLiBj
b20ubXljb21wYW55Lk15RG9jU2V0LmRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBvcmcuZG94eWdlbi5QdWJsaXNoZXIuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9ET0NTRVQgaXMgc2V0IHRvIFlFUy4KLQotRE9DU0VUX1BVQkxJU0hFUl9J
RCAgICA9IG9yZy5kb3h5Z2VuLlB1Ymxpc2hlcgotCi0jIFRoZSBET0NTRVRfUFVCTElTSEVSX05B
TUUgdGFnIGlkZW50aWZpZXMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogUHVibGlzaGVyLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfRE9DU0VUIGlzIHNldCB0byBZRVMuCi0KLURPQ1NFVF9QVUJMSVNIRVJfTkFN
RSAgPSBQdWJsaXNoZXIKLQotIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0
byBZRVMgdGhlbiBkb3h5Z2VuIGdlbmVyYXRlcyB0aHJlZQotIyBhZGRpdGlvbmFsIEhUTUwgaW5k
ZXggZmlsZXM6IGluZGV4LmhocCwgaW5kZXguaGhjLCBhbmQgaW5kZXguaGhrLiBUaGUKLSMgaW5k
ZXguaGhwIGlzIGEgcHJvamVjdCBmaWxlIHRoYXQgY2FuIGJlIHJlYWQgYnkgTWljcm9zb2Z0J3Mg
SFRNTCBIZWxwIFdvcmtzaG9wCi0jIChzZWU6IGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11
cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9MjExMzgpIG9uCi0jIFdpbmRvd3MuCi0jCi0jIFRo
ZSBIVE1MIEhlbHAgV29ya3Nob3AgY29udGFpbnMgYSBjb21waWxlciB0aGF0IGNhbiBjb252ZXJ0
IGFsbCBIVE1MIG91dHB1dAotIyBnZW5lcmF0ZWQgYnkgZG94eWdlbiBpbnRvIGEgc2luZ2xlIGNv
bXBpbGVkIEhUTUwgZmlsZSAoLmNobSkuIENvbXBpbGVkIEhUTUwKLSMgZmlsZXMgYXJlIG5vdyB1
c2VkIGFzIHRoZSBXaW5kb3dzIDk4IGhlbHAgZm9ybWF0LCBhbmQgd2lsbCByZXBsYWNlIHRoZSBv
bGQKLSMgV2luZG93cyBoZWxwIGZvcm1hdCAoLmhscCkgb24gYWxsIFdpbmRvd3MgcGxhdGZvcm1z
IGluIHRoZSBmdXR1cmUuIENvbXByZXNzZWQKLSMgSFRNTCBmaWxlcyBhbHNvIGNvbnRhaW4gYW4g
aW5kZXgsIGEgdGFibGUgb2YgY29udGVudHMsIGFuZCB5b3UgY2FuIHNlYXJjaCBmb3IKLSMgd29y
ZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uIFRoZSBIVE1MIHdvcmtzaG9wIGFsc28gY29udGFpbnMg
YSB2aWV3ZXIgZm9yCi0jIGNvbXByZXNzZWQgSFRNTCBmaWxlcy4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRN
TCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9IVE1MSEVMUCAgICAgID0gJUhUTUxfSEVMUCUK
LQotIyBUaGUgQ0hNX0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgbmFt
ZSBvZiB0aGUgcmVzdWx0aW5nIC5jaG0KLSMgZmlsZS4gWW91IGNhbiBhZGQgYSBwYXRoIGluIGZy
b250IG9mIHRoZSBmaWxlIGlmIHRoZSByZXN1bHQgc2hvdWxkIG5vdCBiZQotIyB3cml0dGVuIHRv
IHRoZSBodG1sIG91dHB1dCBkaXJlY3RvcnkuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgotCi1DSE1fRklMRSAgICAgICAg
ICAgICAgID0ganNvbmNwcC0lSlNPTkNQUF9WRVJTSU9OJS5jaG0KLQotIyBUaGUgSEhDX0xPQ0FU
SU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiAoYWJzb2x1dGUgcGF0
aAotIyBpbmNsdWRpbmcgZmlsZSBuYW1lKSBvZiB0aGUgSFRNTCBoZWxwIGNvbXBpbGVyICggaGhj
LmV4ZSkuIElmIG5vbi1lbXB0eQotIyBkb3h5Z2VuIHdpbGwgdHJ5IHRvIHJ1biB0aGUgSFRNTCBo
ZWxwIGNvbXBpbGVyIG9uIHRoZSBnZW5lcmF0ZWQgaW5kZXguaGhwLgotIyBUaGUgZmlsZSBoYXMg
dG8gYmUgc3BlY2lmaWVkIHdpdGggZnVsbCBwYXRoLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotSEhDX0xPQ0FUSU9O
ICAgICAgICAgICA9ICJjOlxQcm9ncmFtIEZpbGVzXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhl
IgotCi0jIFRoZSBHRU5FUkFURV9DSEkgZmxhZyBjb250cm9scyBpZiBhIHNlcGFyYXRlIC5jaGkg
aW5kZXggZmlsZSBpcyBnZW5lcmF0ZWQgKAotIyBZRVMpIG9yIHRoYXQgaXQgc2hvdWxkIGJlIGlu
Y2x1ZGVkIGluIHRoZSBtYXN0ZXIgLmNobSBmaWxlICggTk8pLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1M
SEVMUCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9DSEkgICAgICAgICAgID0gWUVTCi0KLSMg
VGhlIENITV9JTkRFWF9FTkNPRElORyBpcyB1c2VkIHRvIGVuY29kZSBIdG1sSGVscCBpbmRleCAo
IGhoayksIGNvbnRlbnQgKCBoaGMpCi0jIGFuZCBwcm9qZWN0IGZpbGUgY29udGVudC4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZ
RVMuCi0KLUNITV9JTkRFWF9FTkNPRElORyAgICAgPQotCi0jIFRoZSBCSU5BUllfVE9DIGZsYWcg
Y29udHJvbHMgd2hldGhlciBhIGJpbmFyeSB0YWJsZSBvZiBjb250ZW50cyBpcyBnZW5lcmF0ZWQg
KAotIyBZRVMpIG9yIGEgbm9ybWFsIHRhYmxlIG9mIGNvbnRlbnRzICggTk8pIGluIHRoZSAuY2ht
IGZpbGUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCi0KLUJJTkFSWV9U
T0MgICAgICAgICAgICAgPSBZRVMKLQotIyBUaGUgVE9DX0VYUEFORCBmbGFnIGNhbiBiZSBzZXQg
dG8gWUVTIHRvIGFkZCBleHRyYSBpdGVtcyBmb3IgZ3JvdXAgbWVtYmVycyB0bwotIyB0aGUgdGFi
bGUgb2YgY29udGVudHMgb2YgdGhlIEhUTUwgaGVscCBkb2N1bWVudGF0aW9uIGFuZCB0byB0aGUg
dHJlZSB2aWV3LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgotCi1UT0Nf
RVhQQU5EICAgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEdFTkVSQVRFX1FIUCB0YWcgaXMg
c2V0IHRvIFlFUyBhbmQgYm90aCBRSFBfTkFNRVNQQUNFIGFuZAotIyBRSFBfVklSVFVBTF9GT0xE
RVIgYXJlIHNldCwgYW4gYWRkaXRpb25hbCBpbmRleCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIHRo
YXQKLSMgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIFF0J3MgcWhlbHBnZW5lcmF0b3IgdG8gZ2Vu
ZXJhdGUgYSBRdCBDb21wcmVzc2VkIEhlbHAKLSMgKC5xY2gpIG9mIHRoZSBnZW5lcmF0ZWQgSFRN
TCBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUdF
TkVSQVRFX1FIUCAgICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBRSEdfTE9DQVRJT04gdGFnIGlz
IHNwZWNpZmllZCwgdGhlIFFDSF9GSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5Ci0jIHRo
ZSBmaWxlIG5hbWUgb2YgdGhlIHJlc3VsdGluZyAucWNoIGZpbGUuIFRoZSBwYXRoIHNwZWNpZmll
ZCBpcyByZWxhdGl2ZSB0bwotIyB0aGUgSFRNTCBvdXRwdXQgZm9sZGVyLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0KLVFDSF9G
SUxFICAgICAgICAgICAgICAgPQotCi0jIFRoZSBRSFBfTkFNRVNQQUNFIHRhZyBzcGVjaWZpZXMg
dGhlIG5hbWVzcGFjZSB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIFF0IEhlbHAKLSMgUHJvamVjdCBv
dXRwdXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8g
TmFtZXNwYWNlCi0jIChzZWU6IGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVs
cHByb2plY3QuaHRtbCNuYW1lc3BhY2UpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRv
eHlnZW4uUHJvamVjdC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X1FIUCBpcyBzZXQgdG8gWUVTLgotCi1RSFBfTkFNRVNQQUNFICAgICAgICAgID0KLQotIyBUaGUg
UUhQX1ZJUlRVQUxfRk9MREVSIHRhZyBzcGVjaWZpZXMgdGhlIG5hbWVzcGFjZSB0byB1c2Ugd2hl
biBnZW5lcmF0aW5nIFF0Ci0jIEhlbHAgUHJvamVjdCBvdXRwdXQuIEZvciBtb3JlIGluZm9ybWF0
aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gVmlydHVhbAotIyBGb2xkZXJzIChzZWU6
IGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCN2aXJ0
dWFsLQotIyBmb2xkZXJzKS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGRvYy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgotCi1R
SFBfVklSVFVBTF9GT0xERVIgICAgID0gZG9jCi0KLSMgSWYgdGhlIFFIUF9DVVNUX0ZJTFRFUl9O
QU1FIHRhZyBpcyBzZXQsIGl0IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGN1c3RvbQotIyBmaWx0
ZXIgdG8gYWRkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVj
dCAvIEN1c3RvbQotIyBGaWx0ZXJzIChzZWU6IGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQt
NC44L3F0aGVscHByb2plY3QuaHRtbCNjdXN0b20tCi0jIGZpbHRlcnMpLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0KLVFIUF9D
VVNUX0ZJTFRFUl9OQU1FICAgPQotCi0jIFRoZSBRSFBfQ1VTVF9GSUxURVJfQVRUUlMgdGFnIHNw
ZWNpZmllcyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUKLSMgY3VzdG9tIGZpbHRl
ciB0byBhZGQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0
IC8gQ3VzdG9tCi0jIEZpbHRlcnMgKHNlZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00
LjgvcXRoZWxwcHJvamVjdC5odG1sI2N1c3RvbS0KLSMgZmlsdGVycykuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhQX0NV
U1RfRklMVEVSX0FUVFJTICA9Ci0KLSMgVGhlIFFIUF9TRUNUX0ZJTFRFUl9BVFRSUyB0YWcgc3Bl
Y2lmaWVzIHRoZSBsaXN0IG9mIHRoZSBhdHRyaWJ1dGVzIHRoaXMKLSMgcHJvamVjdCdzIGZpbHRl
ciBzZWN0aW9uIG1hdGNoZXMuIFF0IEhlbHAgUHJvamVjdCAvIEZpbHRlciBBdHRyaWJ1dGVzIChz
ZWU6Ci0jIGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRt
bCNmaWx0ZXItYXR0cmlidXRlcykuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhQX1NFQ1RfRklMVEVSX0FUVFJTICA9Ci0K
LSMgVGhlIFFIR19MT0NBVElPTiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRp
b24gb2YgUXQncwotIyBxaGVscGdlbmVyYXRvci4gSWYgbm9uLWVtcHR5IGRveHlnZW4gd2lsbCB0
cnkgdG8gcnVuIHFoZWxwZ2VuZXJhdG9yIG9uIHRoZQotIyBnZW5lcmF0ZWQgLnFocCBmaWxlLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZ
RVMuCi0KLVFIR19MT0NBVElPTiAgICAgICAgICAgPQotCi0jIElmIHRoZSBHRU5FUkFURV9FQ0xJ
UFNFSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyB3aWxsIGJl
Ci0jIGdlbmVyYXRlZCwgdG9nZXRoZXIgd2l0aCB0aGUgSFRNTCBmaWxlcywgdGhleSBmb3JtIGFu
IEVjbGlwc2UgaGVscCBwbHVnaW4uIFRvCi0jIGluc3RhbGwgdGhpcyBwbHVnaW4gYW5kIG1ha2Ug
aXQgYXZhaWxhYmxlIHVuZGVyIHRoZSBoZWxwIGNvbnRlbnRzIG1lbnUgaW4KLSMgRWNsaXBzZSwg
dGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgSFRNTCBhbmQgWE1M
IGZpbGVzIG5lZWRzCi0jIHRvIGJlIGNvcGllZCBpbnRvIHRoZSBwbHVnaW5zIGRpcmVjdG9yeSBv
ZiBlY2xpcHNlLiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5Ci0jIHdpdGhpbiB0aGUgcGx1Z2lu
cyBkaXJlY3Rvcnkgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBFQ0xJUFNFX0RPQ19JRCB2YWx1
ZS4KLSMgQWZ0ZXIgY29weWluZyBFY2xpcHNlIG5lZWRzIHRvIGJlIHJlc3RhcnRlZCBiZWZvcmUg
dGhlIGhlbHAgYXBwZWFycy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1H
RU5FUkFURV9FQ0xJUFNFSEVMUCAgID0gTk8KLQotIyBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0
aGUgRWNsaXBzZSBoZWxwIHBsdWdpbi4gV2hlbiBpbnN0YWxsaW5nIHRoZSBwbHVnaW4KLSMgdGhl
IGRpcmVjdG9yeSBuYW1lIGNvbnRhaW5pbmcgdGhlIEhUTUwgYW5kIFhNTCBmaWxlcyBzaG91bGQg
YWxzbyBoYXZlIHRoaXMKLSMgbmFtZS4gRWFjaCBkb2N1bWVudGF0aW9uIHNldCBzaG91bGQgaGF2
ZSBpdHMgb3duIGlkZW50aWZpZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdl
bi5Qcm9qZWN0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfRUNM
SVBTRUhFTFAgaXMgc2V0IHRvIFlFUy4KLQotRUNMSVBTRV9ET0NfSUQgICAgICAgICA9IG9yZy5k
b3h5Z2VuLlByb2plY3QKLQotIyBJZiB5b3Ugd2FudCBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgbGF5
b3V0IG9mIHRoZSBnZW5lcmF0ZWQgSFRNTCBwYWdlcyBpdCBtaWdodAotIyBiZSBuZWNlc3Nhcnkg
dG8gZGlzYWJsZSB0aGUgaW5kZXggYW5kIHJlcGxhY2UgaXQgd2l0aCB5b3VyIG93bi4gVGhlCi0j
IERJU0FCTEVfSU5ERVggdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSBjb25kZW5z
ZWQgaW5kZXggKHRhYnMpIGF0IHRvcAotIyBvZiBlYWNoIEhUTUwgcGFnZS4gQSB2YWx1ZSBvZiBO
TyBlbmFibGVzIHRoZSBpbmRleCBhbmQgdGhlIHZhbHVlIFlFUyBkaXNhYmxlcwotIyBpdC4gU2lu
Y2UgdGhlIHRhYnMgaW4gdGhlIGluZGV4IGNvbnRhaW4gdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMg
dGhlIG5hdmlnYXRpb24KLSMgdHJlZSwgeW91IGNhbiBzZXQgdGhpcyBvcHRpb24gdG8gWUVTIGlm
IHlvdSBhbHNvIHNldCBHRU5FUkFURV9UUkVFVklFVyB0byBZRVMuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hU
TUwgaXMgc2V0IHRvIFlFUy4KLQotRElTQUJMRV9JTkRFWCAgICAgICAgICA9IE5PCi0KLSMgVGhl
IEdFTkVSQVRFX1RSRUVWSUVXIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBhIHRyZWUt
bGlrZSBpbmRleAotIyBzdHJ1Y3R1cmUgc2hvdWxkIGJlIGdlbmVyYXRlZCB0byBkaXNwbGF5IGhp
ZXJhcmNoaWNhbCBpbmZvcm1hdGlvbi4gSWYgdGhlIHRhZwotIyB2YWx1ZSBpcyBzZXQgdG8gWUVT
LCBhIHNpZGUgcGFuZWwgd2lsbCBiZSBnZW5lcmF0ZWQgY29udGFpbmluZyBhIHRyZWUtbGlrZQot
IyBpbmRleCBzdHJ1Y3R1cmUgKGp1c3QgbGlrZSB0aGUgb25lIHRoYXQgaXMgZ2VuZXJhdGVkIGZv
ciBIVE1MIEhlbHApLiBGb3IgdGhpcwotIyB0byB3b3JrIGEgYnJvd3NlciB0aGF0IHN1cHBvcnRz
IEphdmFTY3JpcHQsIERIVE1MLCBDU1MgYW5kIGZyYW1lcyBpcyByZXF1aXJlZAotIyAoaS5lLiBh
bnkgbW9kZXJuIGJyb3dzZXIpLiBXaW5kb3dzIHVzZXJzIGFyZSBwcm9iYWJseSBiZXR0ZXIgb2Zm
IHVzaW5nIHRoZQotIyBIVE1MIGhlbHAgZmVhdHVyZS4gVmlhIGN1c3RvbSBzdHlsZXNoZWV0cyAo
c2VlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCkgb25lIGNhbgotIyBmdXJ0aGVyIGZpbmUtdHVuZSB0
aGUgbG9vayBvZiB0aGUgaW5kZXguIEFzIGFuIGV4YW1wbGUsIHRoZSBkZWZhdWx0IHN0eWxlCi0j
IHNoZWV0IGdlbmVyYXRlZCBieSBkb3h5Z2VuIGhhcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93
IHRvIHB1dCBhbiBpbWFnZSBhdAotIyB0aGUgcm9vdCBvZiB0aGUgdHJlZSBpbnN0ZWFkIG9mIHRo
ZSBQUk9KRUNUX05BTUUuIFNpbmNlIHRoZSB0cmVlIGJhc2ljYWxseSBoYXMKLSMgdGhlIHNhbWUg
aW5mb3JtYXRpb24gYXMgdGhlIHRhYiBpbmRleCwgeW91IGNvdWxkIGNvbnNpZGVyIHNldHRpbmcK
LSMgRElTQUJMRV9JTkRFWCB0byBZRVMgd2hlbiBlbmFibGluZyB0aGlzIG9wdGlvbi4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9UUkVFVklFVyAgICAgID0g
WUVTCi0KLSMgVGhlIEVOVU1fVkFMVUVTX1BFUl9MSU5FIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQg
dGhlIG51bWJlciBvZiBlbnVtIHZhbHVlcyB0aGF0Ci0jIGRveHlnZW4gd2lsbCBncm91cCBvbiBv
bmUgbGluZSBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KLSMKLSMgTm90ZSB0
aGF0IGEgdmFsdWUgb2YgMCB3aWxsIGNvbXBsZXRlbHkgc3VwcHJlc3MgdGhlIGVudW0gdmFsdWVz
IGZyb20gYXBwZWFyaW5nCi0jIGluIHRoZSBvdmVydmlldyBzZWN0aW9uLgotIyBNaW5pbXVtIHZh
bHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNC4KLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotRU5V
TV9WQUxVRVNfUEVSX0xJTkUgICA9IDQKLQotIyBJZiB0aGUgdHJlZXZpZXcgaXMgZW5hYmxlZCAo
c2VlIEdFTkVSQVRFX1RSRUVWSUVXKSB0aGVuIHRoaXMgdGFnIGNhbiBiZSB1c2VkCi0jIHRvIHNl
dCB0aGUgaW5pdGlhbCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZnJhbWUgaW4gd2hpY2ggdGhl
IHRyZWUgaXMgc2hvd24uCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDE1MDAs
IGRlZmF1bHQgdmFsdWU6IDI1MC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdF
TkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotVFJFRVZJRVdfV0lEVEggICAgICAgICA9IDI1
MAotCi0jIFdoZW4gdGhlIEVYVF9MSU5LU19JTl9XSU5ET1cgb3B0aW9uIGlzIHNldCB0byBZRVMg
ZG94eWdlbiB3aWxsIG9wZW4gbGlua3MgdG8KLSMgZXh0ZXJuYWwgc3ltYm9scyBpbXBvcnRlZCB2
aWEgdGFnIGZpbGVzIGluIGEgc2VwYXJhdGUgd2luZG93LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUVYVF9MSU5LU19JTl9XSU5ET1cgICAgPSBOTwotCi0jIFVzZSB0aGlz
IHRhZyB0byBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBvZiBMYVRlWCBmb3JtdWxhcyBpbmNsdWRlZCBh
cyBpbWFnZXMgaW4KLSMgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbi4gV2hlbiB5b3UgY2hhbmdlIHRo
ZSBmb250IHNpemUgYWZ0ZXIgYSBzdWNjZXNzZnVsCi0jIGRveHlnZW4gcnVuIHlvdSBuZWVkIHRv
IG1hbnVhbGx5IHJlbW92ZSBhbnkgZm9ybV8qLnBuZyBpbWFnZXMgZnJvbSB0aGUgSFRNTAotIyBv
dXRwdXQgZGlyZWN0b3J5IHRvIGZvcmNlIHRoZW0gdG8gYmUgcmVnZW5lcmF0ZWQuCi0jIE1pbmlt
dW0gdmFsdWU6IDgsIG1heGltdW0gdmFsdWU6IDUwLCBkZWZhdWx0IHZhbHVlOiAxMC4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4K
LQotRk9STVVMQV9GT05UU0laRSAgICAgICA9IDEwCi0KLSMgVXNlIHRoZSBGT1JNVUxBX1RSQU5Q
QVJFTlQgdGFnIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgaW1hZ2VzCi0jIGdlbmVy
YXRlZCBmb3IgZm9ybXVsYXMgYXJlIHRyYW5zcGFyZW50IFBOR3MuIFRyYW5zcGFyZW50IFBOR3Mg
YXJlIG5vdAotIyBzdXBwb3J0ZWQgcHJvcGVybHkgZm9yIElFIDYuMCwgYnV0IGFyZSBzdXBwb3J0
ZWQgb24gYWxsIG1vZGVybiBicm93c2Vycy4KLSMKLSMgTm90ZSB0aGF0IHdoZW4gY2hhbmdpbmcg
dGhpcyBvcHRpb24geW91IG5lZWQgdG8gZGVsZXRlIGFueSBmb3JtXyoucG5nIGZpbGVzIGluCi0j
IHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjaGFuZ2VzIGhhdmUgZWZmZWN0
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1GT1JNVUxBX1RSQU5TUEFS
RU5UICAgID0gWUVTCi0KLSMgRW5hYmxlIHRoZSBVU0VfTUFUSEpBWCBvcHRpb24gdG8gcmVuZGVy
IExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhKYXggKHNlZQotIyBodHRwOi8vd3d3Lm1hdGhqYXgu
b3JnKSB3aGljaCB1c2VzIGNsaWVudCBzaWRlIEphdmFTY3JpcHQgZm9yIHRoZSByZW5kZXJpbmcK
LSMgaW5zdGVhZCBvZiB1c2luZyBwcmVyZW5kZXJlZCBiaXRtYXBzLiBVc2UgdGhpcyBpZiB5b3Ug
ZG8gbm90IGhhdmUgTGFUZVgKLSMgaW5zdGFsbGVkIG9yIGlmIHlvdSB3YW50IHRvIGZvcm11bGFz
IGxvb2sgcHJldHRpZXIgaW4gdGhlIEhUTUwgb3V0cHV0LiBXaGVuCi0jIGVuYWJsZWQgeW91IG1h
eSBhbHNvIG5lZWQgdG8gaW5zdGFsbCBNYXRoSmF4IHNlcGFyYXRlbHkgYW5kIGNvbmZpZ3VyZSB0
aGUgcGF0aAotIyB0byBpdCB1c2luZyB0aGUgTUFUSEpBWF9SRUxQQVRIIG9wdGlvbi4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1VU0VfTUFUSEpBWCAgICAgICAgICAgID0g
Tk8KLQotIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdCBv
dXRwdXQgZm9ybWF0IHRvIGJlIHVzZWQgZm9yCi0jIHRoZSBNYXRoSmF4IG91dHB1dC4gU2VlIHRo
ZSBNYXRoSmF4IHNpdGUgKHNlZToKLSMgaHR0cDovL2RvY3MubWF0aGpheC5vcmcvZW4vbGF0ZXN0
L291dHB1dC5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLgotIyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBI
VE1MLUNTUyAod2hpY2ggaXMgc2xvd2VyLCBidXQgaGFzIHRoZSBiZXN0Ci0jIGNvbXBhdGliaWxp
dHkpLCBOYXRpdmVNTUwgKGkuZS4gTWF0aE1MKSBhbmQgU1ZHLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogSFRNTC1DU1MuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBVU0VfTUFU
SEpBWCBpcyBzZXQgdG8gWUVTLgotCi1NQVRISkFYX0ZPUk1BVCAgICAgICAgID0gSFRNTC1DU1MK
LQotIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBsb2Nh
dGlvbiByZWxhdGl2ZSB0byB0aGUgSFRNTAotIyBvdXRwdXQgZGlyZWN0b3J5IHVzaW5nIHRoZSBN
QVRISkFYX1JFTFBBVEggb3B0aW9uLiBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5Ci0jIHNob3Vs
ZCBjb250YWluIHRoZSBNYXRoSmF4LmpzIHNjcmlwdC4gRm9yIGluc3RhbmNlLCBpZiB0aGUgbWF0
aGpheCBkaXJlY3RvcnkKLSMgaXMgbG9jYXRlZCBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgSFRN
TCBvdXRwdXQgZGlyZWN0b3J5LCB0aGVuCi0jIE1BVEhKQVhfUkVMUEFUSCBzaG91bGQgYmUgLi4v
bWF0aGpheC4gVGhlIGRlZmF1bHQgdmFsdWUgcG9pbnRzIHRvIHRoZSBNYXRoSmF4Ci0jIENvbnRl
bnQgRGVsaXZlcnkgTmV0d29yayBzbyB5b3UgY2FuIHF1aWNrbHkgc2VlIHRoZSByZXN1bHQgd2l0
aG91dCBpbnN0YWxsaW5nCi0jIE1hdGhKYXguIEhvd2V2ZXIsIGl0IGlzIHN0cm9uZ2x5IHJlY29t
bWVuZGVkIHRvIGluc3RhbGwgYSBsb2NhbCBjb3B5IG9mCi0jIE1hdGhKYXggZnJvbSBodHRwOi8v
d3d3Lm1hdGhqYXgub3JnIGJlZm9yZSBkZXBsb3ltZW50LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogaHR0cDovL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdC4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCi0KLU1BVEhKQVhf
UkVMUEFUSCAgICAgICAgPSBodHRwOi8vY2RuLm1hdGhqYXgub3JnL21hdGhqYXgvbGF0ZXN0Ci0K
LSMgVGhlIE1BVEhKQVhfRVhURU5TSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUg
b3IgbW9yZSBNYXRoSmF4Ci0jIGV4dGVuc2lvbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBlbmFibGVk
IGR1cmluZyBNYXRoSmF4IHJlbmRlcmluZy4gRm9yIGV4YW1wbGUKLSMgTUFUSEpBWF9FWFRFTlNJ
T05TID0gVGVYL0FNU21hdGggVGVYL0FNU3N5bWJvbHMKLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCi0KLU1BVEhKQVhfRVhURU5TSU9O
UyAgICAgPQotCi0jIFRoZSBNQVRISkFYX0NPREVGSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVj
aWZ5IGEgZmlsZSB3aXRoIGphdmFzY3JpcHQgcGllY2VzCi0jIG9mIGNvZGUgdGhhdCB3aWxsIGJl
IHVzZWQgb24gc3RhcnR1cCBvZiB0aGUgTWF0aEpheCBjb2RlLiBTZWUgdGhlIE1hdGhKYXggc2l0
ZQotIyAoc2VlOiBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qvb3V0cHV0Lmh0bWwp
IGZvciBtb3JlIGRldGFpbHMuIEZvciBhbgotIyBleGFtcGxlIHNlZSB0aGUgZG9jdW1lbnRhdGlv
bi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0
byBZRVMuCi0KLU1BVEhKQVhfQ09ERUZJTEUgICAgICAgPQotCi0jIFdoZW4gdGhlIFNFQVJDSEVO
R0lORSB0YWcgaXMgZW5hYmxlZCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzZWFyY2ggYm94IGZv
cgotIyB0aGUgSFRNTCBvdXRwdXQuIFRoZSB1bmRlcmx5aW5nIHNlYXJjaCBlbmdpbmUgdXNlcyBq
YXZhc2NyaXB0IGFuZCBESFRNTCBhbmQKLSMgc2hvdWxkIHdvcmsgb24gYW55IG1vZGVybiBicm93
c2VyLiBOb3RlIHRoYXQgd2hlbiB1c2luZyBIVE1MIGhlbHAKLSMgKEdFTkVSQVRFX0hUTUxIRUxQ
KSwgUXQgaGVscCAoR0VORVJBVEVfUUhQKSwgb3IgZG9jc2V0cyAoR0VORVJBVEVfRE9DU0VUKQot
IyB0aGVyZSBpcyBhbHJlYWR5IGEgc2VhcmNoIGZ1bmN0aW9uIHNvIHRoaXMgb25lIHNob3VsZCB0
eXBpY2FsbHkgYmUgZGlzYWJsZWQuCi0jIEZvciBsYXJnZSBwcm9qZWN0cyB0aGUgamF2YXNjcmlw
dCBiYXNlZCBzZWFyY2ggZW5naW5lIGNhbiBiZSBzbG93LCB0aGVuCi0jIGVuYWJsaW5nIFNFUlZF
Ul9CQVNFRF9TRUFSQ0ggbWF5IHByb3ZpZGUgYSBiZXR0ZXIgc29sdXRpb24uIEl0IGlzIHBvc3Np
YmxlIHRvCi0jIHNlYXJjaCB1c2luZyB0aGUga2V5Ym9hcmQ7IHRvIGp1bXAgdG8gdGhlIHNlYXJj
aCBib3ggdXNlIDxhY2Nlc3Mga2V5PiArIFMKLSMgKHdoYXQgdGhlIDxhY2Nlc3Mga2V5PiBpcyBk
ZXBlbmRzIG9uIHRoZSBPUyBhbmQgYnJvd3NlciwgYnV0IGl0IGlzIHR5cGljYWxseQotIyA8Q1RS
TD4sIDxBTFQ+LzxvcHRpb24+LCBvciBib3RoKS4gSW5zaWRlIHRoZSBzZWFyY2ggYm94IHVzZSB0
aGUgPGN1cnNvciBkb3duCi0jIGtleT4gdG8ganVtcCBpbnRvIHRoZSBzZWFyY2ggcmVzdWx0cyB3
aW5kb3csIHRoZSByZXN1bHRzIGNhbiBiZSBuYXZpZ2F0ZWQKLSMgdXNpbmcgdGhlIDxjdXJzb3Ig
a2V5cz4uIFByZXNzIDxFbnRlcj4gdG8gc2VsZWN0IGFuIGl0ZW0gb3IgPGVzY2FwZT4gdG8gY2Fu
Y2VsCi0jIHRoZSBzZWFyY2guIFRoZSBmaWx0ZXIgb3B0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgd2hl
biB0aGUgY3Vyc29yIGlzIGluc2lkZSB0aGUKLSMgc2VhcmNoIGJveCBieSBwcmVzc2luZyA8U2hp
ZnQ+KzxjdXJzb3IgZG93bj4uIEFsc28gaGVyZSB1c2UgdGhlIDxjdXJzb3Iga2V5cz4KLSMgdG8g
c2VsZWN0IGEgZmlsdGVyIGFuZCA8RW50ZXI+IG9yIDxlc2NhcGU+IHRvIGFjdGl2YXRlIG9yIGNh
bmNlbCB0aGUgZmlsdGVyCi0jIG9wdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRv
IFlFUy4KLQotU0VBUkNIRU5HSU5FICAgICAgICAgICA9IE5PCi0KLSMgV2hlbiB0aGUgU0VSVkVS
X0JBU0VEX1NFQVJDSCB0YWcgaXMgZW5hYmxlZCB0aGUgc2VhcmNoIGVuZ2luZSB3aWxsIGJlCi0j
IGltcGxlbWVudGVkIHVzaW5nIGEgd2ViIHNlcnZlciBpbnN0ZWFkIG9mIGEgd2ViIGNsaWVudCB1
c2luZyBKYXZhU2NyaXB0LiBUaGVyZQotIyBhcmUgdHdvIGZsYXZvdXJzIG9mIHdlYiBzZXJ2ZXIg
YmFzZWQgc2VhcmNoaW5nIGRlcGVuZGluZyBvbiB0aGUKLSMgRVhURVJOQUxfU0VBUkNIIHNldHRp
bmcuIFdoZW4gZGlzYWJsZWQsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIFBIUCBzY3JpcHQgZm9y
Ci0jIHNlYXJjaGluZyBhbmQgYW4gaW5kZXggZmlsZSB1c2VkIGJ5IHRoZSBzY3JpcHQuIFdoZW4g
RVhURVJOQUxfU0VBUkNIIGlzCi0jIGVuYWJsZWQgdGhlIGluZGV4aW5nIGFuZCBzZWFyY2hpbmcg
bmVlZHMgdG8gYmUgcHJvdmlkZWQgYnkgZXh0ZXJuYWwgdG9vbHMuIFNlZQotIyB0aGUgc2VjdGlv
biAiRXh0ZXJuYWwgSW5kZXhpbmcgYW5kIFNlYXJjaGluZyIgZm9yIGRldGFpbHMuCi0jIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNF
QVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgotCi1TRVJWRVJfQkFTRURfU0VBUkNIICAgID0gTk8K
LQotIyBXaGVuIEVYVEVSTkFMX1NFQVJDSCB0YWcgaXMgZW5hYmxlZCBkb3h5Z2VuIHdpbGwgbm8g
bG9uZ2VyIGdlbmVyYXRlIHRoZSBQSFAKLSMgc2NyaXB0IGZvciBzZWFyY2hpbmcuIEluc3RlYWQg
dGhlIHNlYXJjaCByZXN1bHRzIGFyZSB3cml0dGVuIHRvIGFuIFhNTCBmaWxlCi0jIHdoaWNoIG5l
ZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBhbiBleHRlcm5hbCBpbmRleGVyLiBEb3h5Z2VuIHdpbGwg
aW52b2tlIGFuCi0jIGV4dGVybmFsIHNlYXJjaCBlbmdpbmUgcG9pbnRlZCB0byBieSB0aGUgU0VB
UkNIRU5HSU5FX1VSTCBvcHRpb24gdG8gb2J0YWluIHRoZQotIyBzZWFyY2ggcmVzdWx0cy4KLSMK
LSMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoIGRveHlpbmRleGVyKSBh
bmQgc2VhcmNoIGVuZ2luZQotIyAoZG94eXNlYXJjaC5jZ2kpIHdoaWNoIGFyZSBiYXNlZCBvbiB0
aGUgb3BlbiBzb3VyY2Ugc2VhcmNoIGVuZ2luZSBsaWJyYXJ5Ci0jIFhhcGlhbiAoc2VlOiBodHRw
Oi8veGFwaWFuLm9yZy8pLgotIwotIyBTZWUgdGhlIHNlY3Rpb24gIkV4dGVybmFsIEluZGV4aW5n
IGFuZCBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRv
IFlFUy4KLQotRVhURVJOQUxfU0VBUkNIICAgICAgICA9IE5PCi0KLSMgVGhlIFNFQVJDSEVOR0lO
RV9VUkwgc2hvdWxkIHBvaW50IHRvIGEgc2VhcmNoIGVuZ2luZSBob3N0ZWQgYnkgYSB3ZWIgc2Vy
dmVyCi0jIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIEVYVEVSTkFM
X1NFQVJDSCBpcyBlbmFibGVkLgotIwotIyBEb3h5Z2VuIHNoaXBzIHdpdGggYW4gZXhhbXBsZSBp
bmRleGVyICggZG94eWluZGV4ZXIpIGFuZCBzZWFyY2ggZW5naW5lCi0jIChkb3h5c2VhcmNoLmNn
aSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBvcGVuIHNvdXJjZSBzZWFyY2ggZW5naW5lIGxpYnJh
cnkKLSMgWGFwaWFuIChzZWU6IGh0dHA6Ly94YXBpYW4ub3JnLykuIFNlZSB0aGUgc2VjdGlvbiAi
RXh0ZXJuYWwgSW5kZXhpbmcgYW5kCi0jIFNlYXJjaGluZyIgZm9yIGRldGFpbHMuCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KLQot
U0VBUkNIRU5HSU5FX1VSTCAgICAgICA9Ci0KLSMgV2hlbiBTRVJWRVJfQkFTRURfU0VBUkNIIGFu
ZCBFWFRFUk5BTF9TRUFSQ0ggYXJlIGJvdGggZW5hYmxlZCB0aGUgdW5pbmRleGVkCi0jIHNlYXJj
aCBkYXRhIGlzIHdyaXR0ZW4gdG8gYSBmaWxlIGZvciBpbmRleGluZyBieSBhbiBleHRlcm5hbCB0
b29sLiBXaXRoIHRoZQotIyBTRUFSQ0hEQVRBX0ZJTEUgdGFnIHRoZSBuYW1lIG9mIHRoaXMgZmls
ZSBjYW4gYmUgc3BlY2lmaWVkLgotIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBzZWFyY2hkYXRhLnht
bC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQg
dG8gWUVTLgotCi1TRUFSQ0hEQVRBX0ZJTEUgICAgICAgID0gc2VhcmNoZGF0YS54bWwKLQotIyBX
aGVuIFNFUlZFUl9CQVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJDSCBhcmUgYm90aCBlbmFi
bGVkIHRoZQotIyBFWFRFUk5BTF9TRUFSQ0hfSUQgdGFnIGNhbiBiZSB1c2VkIGFzIGFuIGlkZW50
aWZpZXIgZm9yIHRoZSBwcm9qZWN0LiBUaGlzIGlzCi0jIHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3
aXRoIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyB0byBzZWFyY2ggdGhyb3VnaCBtdWx0aXBsZQotIyBw
cm9qZWN0cyBhbmQgcmVkaXJlY3QgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUgcmlnaHQgcHJvamVj
dC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQg
dG8gWUVTLgotCi1FWFRFUk5BTF9TRUFSQ0hfSUQgICAgID0KLQotIyBUaGUgRVhUUkFfU0VBUkNI
X01BUFBJTkdTIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgc2VhcmNoaW5nIHRocm91Z2ggZG94
eWdlbgotIyBwcm9qZWN0cyBvdGhlciB0aGFuIHRoZSBvbmUgZGVmaW5lZCBieSB0aGlzIGNvbmZp
Z3VyYXRpb24gZmlsZSwgYnV0IHRoYXQgYXJlCi0jIGFsbCBhZGRlZCB0byB0aGUgc2FtZSBleHRl
cm5hbCBzZWFyY2ggaW5kZXguIEVhY2ggcHJvamVjdCBuZWVkcyB0byBoYXZlIGEKLSMgdW5pcXVl
IGlkIHNldCB2aWEgRVhURVJOQUxfU0VBUkNIX0lELiBUaGUgc2VhcmNoIG1hcHBpbmcgdGhlbiBt
YXBzIHRoZSBpZCBvZgotIyB0byBhIHJlbGF0aXZlIGxvY2F0aW9uIHdoZXJlIHRoZSBkb2N1bWVu
dGF0aW9uIGNhbiBiZSBmb3VuZC4gVGhlIGZvcm1hdCBpczoKLSMgRVhUUkFfU0VBUkNIX01BUFBJ
TkdTID0gdGFnbmFtZTE9bG9jMSB0YWduYW1lMj1sb2MyIC4uLgotIyBUaGlzIHRhZyByZXF1aXJl
cyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0KLUVYVFJBX1NFQVJD
SF9NQVBQSU5HUyAgPQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0
aW9ucyByZWxhdGVkIHRvIHRoZSBMYVRlWCBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
IyBJZiB0aGUgR0VORVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdl
bmVyYXRlIExhVGVYIG91dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotR0VO
RVJBVEVfTEFURVggICAgICAgICA9IE5PCi0KLSMgVGhlIExBVEVYX09VVFBVVCB0YWcgaXMgdXNl
ZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJl
bGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxs
IGJlIHB1dCBpbiBmcm9udCBvZgotIyBpdC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBs
YXRleC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlz
IHNldCB0byBZRVMuCi0KLUxBVEVYX09VVFBVVCAgICAgICAgICAgPSBsYXRleAotCi0jIFRoZSBM
QVRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgTGFUZVggY29tbWFu
ZCBuYW1lIHRvIGJlCi0jIGludm9rZWQuCi0jCi0jIE5vdGUgdGhhdCB3aGVuIGVuYWJsaW5nIFVT
RV9QREZMQVRFWCB0aGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgZm9yIGdlbmVyYXRpbmcKLSMgYml0
bWFwcyBmb3IgZm9ybXVsYXMgaW4gdGhlIEhUTUwgb3V0cHV0LCBidXQgbm90IGluIHRoZSBNYWtl
ZmlsZSB0aGF0IGlzCi0jIHdyaXR0ZW4gdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuCi0jIFRoZSBk
ZWZhdWx0IGZpbGUgaXM6IGxhdGV4LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfQ01EX05BTUUgICAgICAgICA9
IGxhdGV4Ci0KLSMgVGhlIE1BS0VJTkRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3Bl
Y2lmeSB0aGUgY29tbWFuZCBuYW1lIHRvIGdlbmVyYXRlCi0jIGluZGV4IGZvciBMYVRlWC4KLSMg
VGhlIGRlZmF1bHQgZmlsZSBpczogbWFrZWluZGV4LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTUFLRUlOREVYX0NNRF9O
QU1FICAgICA9IG1ha2VpbmRleAotCi0jIElmIHRoZSBDT01QQUNUX0xBVEVYIHRhZyBpcyBzZXQg
dG8gWUVTIGRveHlnZW4gZ2VuZXJhdGVzIG1vcmUgY29tcGFjdCBMYVRlWAotIyBkb2N1bWVudHMu
IFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRvIHNh
dmUgc29tZQotIyB0cmVlcyBpbiBnZW5lcmFsLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQg
dG8gWUVTLgotCi1DT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8KLQotIyBUaGUgUEFQRVJfVFlQ
RSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBwYXBlciB0eXBlIHRoYXQgaXMgdXNlZCBieSB0
aGUKLSMgcHJpbnRlci4KLSMgUG9zc2libGUgdmFsdWVzIGFyZTogYTQgKDIxMCB4IDI5NyBtbSks
IGxldHRlciAoOC41IHggMTEgaW5jaGVzKSwgbGVnYWwgKDguNSB4Ci0jIDE0IGluY2hlcykgYW5k
IGV4ZWN1dGl2ZSAoNy4yNSB4IDEwLjUgaW5jaGVzKS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IGE0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMg
c2V0IHRvIFlFUy4KLQotUEFQRVJfVFlQRSAgICAgICAgICAgICA9IGE0d2lkZQotCi0jIFRoZSBF
WFRSQV9QQUNLQUdFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBMYVRl
WCBwYWNrYWdlIG5hbWVzCi0jIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBv
dXRwdXQuIFRvIGdldCB0aGUgdGltZXMgZm9udCBmb3IKLSMgaW5zdGFuY2UgeW91IGNhbiBzcGVj
aWZ5Ci0jIEVYVFJBX1BBQ0tBR0VTPXRpbWVzCi0jIElmIGxlZnQgYmxhbmsgbm8gZXh0cmEgcGFj
a2FnZXMgd2lsbCBiZSBpbmNsdWRlZC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUVYVFJBX1BBQ0tBR0VTICAgICAgICAg
PQotCi0jIFRoZSBMQVRFWF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJz
b25hbCBMYVRlWCBoZWFkZXIgZm9yIHRoZQotIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRo
ZSBoZWFkZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyB1bnRpbCB0aGUgZmlyc3QKLSMgY2hh
cHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFy
ZCBoZWFkZXIuIFNlZQotIyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24g
b24gaG93IHRvIGxldCBkb3h5Z2VuIHdyaXRlIHRoZQotIyBkZWZhdWx0IGhlYWRlciB0byBhIHNl
cGFyYXRlIGZpbGUuCi0jCi0jIE5vdGU6IE9ubHkgdXNlIGEgdXNlci1kZWZpbmVkIGhlYWRlciBp
ZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFRoZQotIyBmb2xsb3dpbmcgY29tbWFuZHMg
aGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBpbnNpZGUgdGhlIGhlYWRlcjogJHRpdGxlLAotIyAkZGF0
ZXRpbWUsICRkYXRlLCAkZG94eWdlbnZlcnNpb24sICRwcm9qZWN0bmFtZSwgJHByb2plY3RudW1i
ZXIuIERveHlnZW4gd2lsbAotIyByZXBsYWNlIHRoZW0gYnkgcmVzcGVjdGl2ZWx5IHRoZSB0aXRs
ZSBvZiB0aGUgcGFnZSwgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSwKLSMgb25seSB0aGUgY3Vy
cmVudCBkYXRlLCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgZG94eWdlbiwgdGhlIHByb2plY3QgbmFt
ZSAoc2VlCi0jIFBST0pFQ1RfTkFNRSksIG9yIHRoZSBwcm9qZWN0IG51bWJlciAoc2VlIFBST0pF
Q1RfTlVNQkVSKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xB
VEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0hFQURFUiAgICAgICAgICAgPQotCi0jIFRoZSBM
QVRFWF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJzb25hbCBMYVRlWCBm
b290ZXIgZm9yIHRoZQotIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRoZSBmb290ZXIgc2hv
dWxkIGNvbnRhaW4gZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdAotIyBjaGFwdGVyLiBJZiBpdCBp
cyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJkIGZvb3Rlci4KLSMK
LSMgTm90ZTogT25seSB1c2UgYSB1c2VyLWRlZmluZWQgZm9vdGVyIGlmIHlvdSBrbm93IHdoYXQg
eW91IGFyZSBkb2luZyEKLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0ZPT1RFUiAgICAgICAgICAgPQotCi0jIFRo
ZSBMQVRFWF9FWFRSQV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9y
ZSBleHRyYSBpbWFnZXMgb3IKLSMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBj
b3BpZWQgdG8gdGhlIExBVEVYX09VVFBVVCBvdXRwdXQKLSMgZGlyZWN0b3J5LiBOb3RlIHRoYXQg
dGhlIGZpbGVzIHdpbGwgYmUgY29waWVkIGFzLWlzOyB0aGVyZSBhcmUgbm8gY29tbWFuZHMgb3IK
LSMgbWFya2VycyBhdmFpbGFibGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9FWFRSQV9GSUxFUyAgICAgID0K
LQotIyBJZiB0aGUgUERGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBMYVRlWCB0
aGF0IGlzIGdlbmVyYXRlZCBpcwotIyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBQREYgKHVz
aW5nIHBzMnBkZiBvciBwZGZsYXRleCkuIFRoZSBQREYgZmlsZSB3aWxsCi0jIGNvbnRhaW4gbGlu
a3MgKGp1c3QgbGlrZSB0aGUgSFRNTCBvdXRwdXQpIGluc3RlYWQgb2YgcGFnZSByZWZlcmVuY2Vz
LiBUaGlzCi0jIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGluZSBicm93c2luZyB1
c2luZyBhIFBERiB2aWV3ZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgot
Ci1QREZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgTEFURVhfUERGTEFURVgg
dGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCB1c2UgcGRmbGF0ZXggdG8gZ2VuZXJhdGUK
LSMgdGhlIFBERiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIExhVGVYIGZpbGVzLiBTZXQgdGhpcyBv
cHRpb24gdG8gWUVTIHRvIGdldCBhCi0jIGhpZ2hlciBxdWFsaXR5IFBERiBkb2N1bWVudGF0aW9u
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotVVNFX1BERkxBVEVYICAg
ICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIExBVEVYX0JBVENITU9ERSB0YWcgaXMgc2V0IHRvIFlF
UywgZG94eWdlbiB3aWxsIGFkZCB0aGUgXGJhdGNobW9kZQotIyBjb21tYW5kIHRvIHRoZSBnZW5l
cmF0ZWQgTGFUZVggZmlsZXMuIFRoaXMgd2lsbCBpbnN0cnVjdCBMYVRlWCB0byBrZWVwIHJ1bm5p
bmcKLSMgaWYgZXJyb3JzIG9jY3VyLCBpbnN0ZWFkIG9mIGFza2luZyB0aGUgdXNlciBmb3IgaGVs
cC4gVGhpcyBvcHRpb24gaXMgYWxzbyB1c2VkCi0jIHdoZW4gZ2VuZXJhdGluZyBmb3JtdWxhcyBp
biBIVE1MLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9CQVRD
SE1PREUgICAgICAgID0gTk8KLQotIyBJZiB0aGUgTEFURVhfSElERV9JTkRJQ0VTIHRhZyBpcyBz
ZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIG5vdCBpbmNsdWRlIHRoZQotIyBpbmRleCBjaGFw
dGVycyAoc3VjaCBhcyBGaWxlIEluZGV4LCBDb21wb3VuZCBJbmRleCwgZXRjLikgaW4gdGhlIG91
dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfSElERV9J
TkRJQ0VTICAgICA9IE5PCi0KLSMgSWYgdGhlIExBVEVYX1NPVVJDRV9DT0RFIHRhZyBpcyBzZXQg
dG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGluY2x1ZGUgc291cmNlCi0jIGNvZGUgd2l0aCBzeW50
YXggaGlnaGxpZ2h0aW5nIGluIHRoZSBMYVRlWCBvdXRwdXQuCi0jCi0jIE5vdGUgdGhhdCB3aGlj
aCBzb3VyY2VzIGFyZSBzaG93biBhbHNvIGRlcGVuZHMgb24gb3RoZXIgc2V0dGluZ3Mgc3VjaCBh
cwotIyBTT1VSQ0VfQlJPV1NFUi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4K
LQotTEFURVhfU09VUkNFX0NPREUgICAgICA9IE5PCi0KLSMgVGhlIExBVEVYX0JJQl9TVFlMRSB0
YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgc3R5bGUgdG8gdXNlIGZvciB0aGUKLSMgYmli
bGlvZ3JhcGh5LCBlLmcuIHBsYWlubmF0LCBvciBpZWVldHIuIFNlZQotIyBodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL0JpYlRlWCBhbmQgXGNpdGUgZm9yIG1vcmUgaW5mby4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IHBsYWluLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfQklCX1NUWUxFICAgICAgICA9
IHBsYWluCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJl
bGF0ZWQgdG8gdGhlIFJURiBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUg
R0VORVJBVEVfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBSVEYg
b3V0cHV0LiBUaGUKLSMgUlRGIG91dHB1dCBpcyBvcHRpbWl6ZWQgZm9yIFdvcmQgOTcgYW5kIG1h
eSBub3QgbG9vayB0b28gcHJldHR5IHdpdGggb3RoZXIgUlRGCi0jIHJlYWRlcnMvZWRpdG9ycy4K
LSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9SVEYgICAgICAgICAgID0g
Tk8KLQotIyBUaGUgUlRGX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBS
VEYgZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQotIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhl
IHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKLSMgaXQu
Ci0jIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogcnRmLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCi0KLVJURl9PVVRQVVQgICAg
ICAgICAgICAgPSBydGYKLQotIyBJZiB0aGUgQ09NUEFDVF9SVEYgdGFnIGlzIHNldCB0byBZRVMg
ZG94eWdlbiBnZW5lcmF0ZXMgbW9yZSBjb21wYWN0IFJURgotIyBkb2N1bWVudHMuIFRoaXMgbWF5
IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRvIHNhdmUgc29tZQot
IyB0cmVlcyBpbiBnZW5lcmFsLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0IHRvIFlFUy4KLQot
Q09NUEFDVF9SVEYgICAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIFJURl9IWVBFUkxJTktTIHRh
ZyBpcyBzZXQgdG8gWUVTLCB0aGUgUlRGIHRoYXQgaXMgZ2VuZXJhdGVkIHdpbGwKLSMgY29udGFp
biBoeXBlcmxpbmsgZmllbGRzLiBUaGUgUlRGIGZpbGUgd2lsbCBjb250YWluIGxpbmtzIChqdXN0
IGxpa2UgdGhlIEhUTUwKLSMgb3V0cHV0KSBpbnN0ZWFkIG9mIHBhZ2UgcmVmZXJlbmNlcy4gVGhp
cyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUKLSMgYnJvd3NpbmcgdXNpbmcg
V29yZCBvciBzb21lIG90aGVyIFdvcmQgY29tcGF0aWJsZSByZWFkZXJzIHRoYXQgc3VwcG9ydCB0
aG9zZQotIyBmaWVsZHMuCi0jCi0jIE5vdGU6IFdvcmRQYWQgKHdyaXRlKSBhbmQgb3RoZXJzIGRv
IG5vdCBzdXBwb3J0IGxpbmtzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0IHRvIFlFUy4KLQot
UlRGX0hZUEVSTElOS1MgICAgICAgICA9IE5PCi0KLSMgTG9hZCBzdHlsZXNoZWV0IGRlZmluaXRp
b25zIGZyb20gZmlsZS4gU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidzIGNvbmZpZwotIyBm
aWxlLCBpLmUuIGEgc2VyaWVzIG9mIGFzc2lnbm1lbnRzLiBZb3Ugb25seSBoYXZlIHRvIHByb3Zp
ZGUgcmVwbGFjZW1lbnRzLAotIyBtaXNzaW5nIGRlZmluaXRpb25zIGFyZSBzZXQgdG8gdGhlaXIg
ZGVmYXVsdCB2YWx1ZS4KLSMKLSMgU2VlIGFsc28gc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9y
IGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUKLSMgZGVmYXVsdCBzdHlsZSBzaGVl
dCB0aGF0IGRveHlnZW4gbm9ybWFsbHkgdXNlcy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1SVEZfU1RZTEVTSEVFVF9GSUxF
ICAgID0KLQotIyBTZXQgb3B0aW9uYWwgdmFyaWFibGVzIHVzZWQgaW4gdGhlIGdlbmVyYXRpb24g
b2YgYW4gUlRGIGRvY3VtZW50LiBTeW50YXggaXMKLSMgc2ltaWxhciB0byBkb3h5Z2VuJ3MgY29u
ZmlnIGZpbGUuIEEgdGVtcGxhdGUgZXh0ZW5zaW9ucyBmaWxlIGNhbiBiZSBnZW5lcmF0ZWQKLSMg
dXNpbmcgZG94eWdlbiAtZSBydGYgZXh0ZW5zaW9uRmlsZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1SVEZfRVhURU5TSU9O
U19GSUxFICAgID0KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlv
bnMgcmVsYXRlZCB0byB0aGUgbWFuIHBhZ2Ugb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSMgSWYgdGhlIEdFTkVSQVRFX01BTiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2Vu
ZXJhdGUgbWFuIHBhZ2VzIGZvcgotIyBjbGFzc2VzIGFuZCBmaWxlcy4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9NQU4gICAgICAgICAgID0gTk8KLQotIyBUaGUgTUFO
X09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBtYW4gcGFnZXMgd2lsbCBi
ZSBwdXQuIElmIGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQ
VVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCi0jIGl0LiBBIGRpcmVjdG9yeSBt
YW4zIHdpbGwgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkKLSMg
TUFOX09VVFBVVC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBtYW4uCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9NQU4gaXMgc2V0IHRvIFlFUy4KLQotTUFO
X09VVFBVVCAgICAgICAgICAgICA9IG1hbgotCi0jIFRoZSBNQU5fRVhURU5TSU9OIHRhZyBkZXRl
cm1pbmVzIHRoZSBleHRlbnNpb24gdGhhdCBpcyBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkCi0jIG1h
biBwYWdlcy4gSW4gY2FzZSB0aGUgbWFudWFsIHNlY3Rpb24gZG9lcyBub3Qgc3RhcnQgd2l0aCBh
IG51bWJlciwgdGhlIG51bWJlcgotIyAzIGlzIHByZXBlbmRlZC4gVGhlIGRvdCAoLikgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgTUFOX0VYVEVOU0lPTiB0YWcgaXMKLSMgb3B0aW9uYWwuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiAuMy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgotCi1NQU5fRVhURU5TSU9OICAgICAgICAgID0g
LjMKLQotIyBJZiB0aGUgTUFOX0xJTktTIHRhZyBpcyBzZXQgdG8gWUVTIGFuZCBkb3h5Z2VuIGdl
bmVyYXRlcyBtYW4gb3V0cHV0LCB0aGVuIGl0Ci0jIHdpbGwgZ2VuZXJhdGUgb25lIGFkZGl0aW9u
YWwgbWFuIGZpbGUgZm9yIGVhY2ggZW50aXR5IGRvY3VtZW50ZWQgaW4gdGhlIHJlYWwKLSMgbWFu
IHBhZ2UocykuIFRoZXNlIGFkZGl0aW9uYWwgZmlsZXMgb25seSBzb3VyY2UgdGhlIHJlYWwgbWFu
IHBhZ2UsIGJ1dCB3aXRob3V0Ci0jIHRoZW0gdGhlIG1hbiBjb21tYW5kIHdvdWxkIGJlIHVuYWJs
ZSB0byBmaW5kIHRoZSBjb3JyZWN0IHBhZ2UuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8g
WUVTLgotCi1NQU5fTElOS1MgICAgICAgICAgICAgID0gTk8KLQotIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgWE1MIG91dHB1dAotIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9YTUwgdGFnIGlzIHNldCB0byBZ
RVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGFuIFhNTCBmaWxlIHRoYXQKLSMgY2FwdHVyZXMgdGhl
IHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfWE1MICAgICAgICAgICA9IE5PCi0K
LSMgVGhlIFhNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgWE1MIHBh
Z2VzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFs
dWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgotIyBpdC4KLSMg
VGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiB4bWwuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4KLQotWE1MX09VVFBVVCAgICAgICAg
ICAgICA9IHhtbAotCi0jIElmIHRoZSBYTUxfUFJPR1JBTUxJU1RJTkcgdGFnIGlzIHNldCB0byBZ
RVMgZG94eWdlbiB3aWxsIGR1bXAgdGhlIHByb2dyYW0KLSMgbGlzdGluZ3MgKGluY2x1ZGluZyBz
eW50YXggaGlnaGxpZ2h0aW5nIGFuZCBjcm9zcy1yZWZlcmVuY2luZyBpbmZvcm1hdGlvbikgdG8K
LSMgdGhlIFhNTCBvdXRwdXQuIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIHdpbGwgc2lnbmlmaWNh
bnRseSBpbmNyZWFzZSB0aGUgc2l6ZQotIyBvZiB0aGUgWE1MIG91dHB1dC4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVS
QVRFX1hNTCBpcyBzZXQgdG8gWUVTLgotCi1YTUxfUFJPR1JBTUxJU1RJTkcgICAgID0gWUVTCi0K
LSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8g
dGhlIERPQ0JPT0sgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVS
QVRFX0RPQ0JPT0sgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIERvY2Jv
b2sgZmlsZXMKLSMgdGhhdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBQREYuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfRE9DQk9PSyAgICAgICA9IE5PCi0KLSMgVGhl
IERPQ0JPT0tfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIERvY2Jvb2sg
cGFnZXMgd2lsbCBiZSBwdXQuCi0jIElmIGEgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2
YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluCi0jIGZyb250IG9mIGl0Lgot
IyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IGRvY2Jvb2suCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NCT09LIGlzIHNldCB0byBZRVMuCi0KLURPQ0JPT0tf
T1VUUFVUICAgICAgICAgPSBkb2Nib29rCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmln
dXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXV0b0dlbiBEZWZpbml0aW9ucyBvdXRwdXQKLSMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJBVEVfQVVUT0dFTl9ERUYgdGFnIGlzIHNl
dCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGFuIEF1dG9HZW4KLSMgRGVmaW5pdGlvbnMg
KHNlZSBodHRwOi8vYXV0b2dlbi5zZi5uZXQpIGZpbGUgdGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0
dXJlIG9mCi0jIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4gTm90ZSB0aGF0
IHRoaXMgZmVhdHVyZSBpcyBzdGlsbAotIyBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUgYXQg
dGhlIG1vbWVudC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9BVVRP
R0VOX0RFRiAgID0gTk8KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9w
dGlvbnMgcmVsYXRlZCB0byB0aGUgUGVybCBtb2R1bGUgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX1BFUkxNT0QgdGFnIGlzIHNldCB0byBZRVMgZG94eWdl
biB3aWxsIGdlbmVyYXRlIGEgUGVybCBtb2R1bGUKLSMgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBz
dHJ1Y3R1cmUgb2YgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLgotIwotIyBO
b3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCBhbmQgaW5jb21wbGV0
ZSBhdCB0aGUgbW9tZW50LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUdFTkVSQVRF
X1BFUkxNT0QgICAgICAgPSBOTwotCi0jIElmIHRoZSBQRVJMTU9EX0xBVEVYIHRhZyBpcyBzZXQg
dG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5Ci0jIE1ha2VmaWxlIHJ1
bGVzLCBQZXJsIHNjcmlwdHMgYW5kIExhVGVYIGNvZGUgdG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBQ
REYgYW5kIERWSQotIyBvdXRwdXQgZnJvbSB0aGUgUGVybCBtb2R1bGUgb3V0cHV0LgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMuCi0KLVBFUkxNT0RfTEFURVggICAgICAgICAg
PSBOTwotCi0jIElmIHRoZSBQRVJMTU9EX1BSRVRUWSB0YWcgaXMgc2V0IHRvIFlFUyB0aGUgUGVy
bCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbmljZWx5Ci0jIGZvcm1hdHRlZCBzbyBpdCBjYW4gYmUg
cGFyc2VkIGJ5IGEgaHVtYW4gcmVhZGVyLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0bwot
IyB1bmRlcnN0YW5kIHdoYXQgaXMgZ29pbmcgb24uIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGlz
IHRhZyBpcyBzZXQgdG8gTk8gdGhlCi0jIHNpemUgb2YgdGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3
aWxsIGJlIG11Y2ggc21hbGxlciBhbmQgUGVybCB3aWxsIHBhcnNlIGl0Ci0jIGp1c3QgdGhlIHNh
bWUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMuCi0KLVBFUkxNT0RfUFJF
VFRZICAgICAgICAgPSBZRVMKLQotIyBUaGUgbmFtZXMgb2YgdGhlIG1ha2UgdmFyaWFibGVzIGlu
IHRoZSBnZW5lcmF0ZWQgZG94eXJ1bGVzLm1ha2UgZmlsZSBhcmUKLSMgcHJlZml4ZWQgd2l0aCB0
aGUgc3RyaW5nIGNvbnRhaW5lZCBpbiBQRVJMTU9EX01BS0VWQVJfUFJFRklYLiBUaGlzIGlzIHVz
ZWZ1bAotIyBzbyBkaWZmZXJlbnQgZG94eXJ1bGVzLm1ha2UgZmlsZXMgaW5jbHVkZWQgYnkgdGhl
IHNhbWUgTWFrZWZpbGUgZG9uJ3QKLSMgb3ZlcndyaXRlIGVhY2ggb3RoZXIncyB2YXJpYWJsZXMu
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNl
dCB0byBZRVMuCi0KLVBFUkxNT0RfTUFLRVZBUl9QUkVGSVggPQotCi0jLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBwcmVwcm9jZXNzb3IK
LSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgRU5BQkxFX1BSRVBST0NFU1NJTkcgdGFn
IGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGV2YWx1YXRlIGFsbAotIyBDLXByZXByb2Nlc3Nv
ciBkaXJlY3RpdmVzIGZvdW5kIGluIHRoZSBzb3VyY2VzIGFuZCBpbmNsdWRlIGZpbGVzLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1FTkFCTEVfUFJFUFJPQ0VTU0lORyAgID0gWUVT
Ci0KLSMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdp
bGwgZXhwYW5kIGFsbCBtYWNybyBuYW1lcwotIyBpbiB0aGUgc291cmNlIGNvZGUuIElmIHNldCB0
byBOTyBvbmx5IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdpbGwgYmUKLSMgcGVyZm9ybWVkLiBN
YWNybyBleHBhbnNpb24gY2FuIGJlIGRvbmUgaW4gYSBjb250cm9sbGVkIHdheSBieSBzZXR0aW5n
Ci0jIEVYUEFORF9PTkxZX1BSRURFRiB0byBZRVMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5H
IGlzIHNldCB0byBZRVMuCi0KLU1BQ1JPX0VYUEFOU0lPTiAgICAgICAgPSBZRVMKLQotIyBJZiB0
aGUgRVhQQU5EX09OTFlfUFJFREVGIGFuZCBNQUNST19FWFBBTlNJT04gdGFncyBhcmUgYm90aCBz
ZXQgdG8gWUVTIHRoZW4KLSMgdGhlIG1hY3JvIGV4cGFuc2lvbiBpcyBsaW1pdGVkIHRvIHRoZSBt
YWNyb3Mgc3BlY2lmaWVkIHdpdGggdGhlIFBSRURFRklORUQgYW5kCi0jIEVYUEFORF9BU19ERUZJ
TkVEIHRhZ3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWly
ZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLUVY
UEFORF9PTkxZX1BSRURFRiAgICAgPSBOTwotCi0jIElmIHRoZSBTRUFSQ0hfSU5DTFVERVMgdGFn
IGlzIHNldCB0byBZRVMgdGhlIGluY2x1ZGVzIGZpbGVzIGluIHRoZQotIyBJTkNMVURFX1BBVEgg
d2lsbCBiZSBzZWFyY2hlZCBpZiBhICNpbmNsdWRlIGlzIGZvdW5kLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BS
RVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KLQotU0VBUkNIX0lOQ0xVREVTICAgICAgICA9IFlF
UwotCi0jIFRoZSBJTkNMVURFX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9y
IG1vcmUgZGlyZWN0b3JpZXMgdGhhdAotIyBjb250YWluIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUg
bm90IGlucHV0IGZpbGVzIGJ1dCBzaG91bGQgYmUgcHJvY2Vzc2VkIGJ5IHRoZQotIyBwcmVwcm9j
ZXNzb3IuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hfSU5DTFVERVMg
aXMgc2V0IHRvIFlFUy4KLQotSU5DTFVERV9QQVRIICAgICAgICAgICA9IC4uL2luY2x1ZGUKLQot
IyBZb3UgY2FuIHVzZSB0aGUgSU5DTFVERV9GSUxFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9u
ZSBvciBtb3JlIHdpbGRjYXJkCi0jIHBhdHRlcm5zIChsaWtlICouaCBhbmQgKi5ocHApIHRvIGZp
bHRlciBvdXQgdGhlIGhlYWRlci1maWxlcyBpbiB0aGUKLSMgZGlyZWN0b3JpZXMuIElmIGxlZnQg
YmxhbmssIHRoZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCBGSUxFX1BBVFRFUk5TIHdpbGwgYmUK
LSMgdXNlZC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9D
RVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLUlOQ0xVREVfRklMRV9QQVRURVJOUyAgPSAqLmgKLQot
IyBUaGUgUFJFREVGSU5FRCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBt
YWNybyBuYW1lcyB0aGF0IGFyZQotIyBkZWZpbmVkIGJlZm9yZSB0aGUgcHJlcHJvY2Vzc29yIGlz
IHN0YXJ0ZWQgKHNpbWlsYXIgdG8gdGhlIC1EIG9wdGlvbiBvZiBlLmcuCi0jIGdjYykuIFRoZSBh
cmd1bWVudCBvZiB0aGUgdGFnIGlzIGEgbGlzdCBvZiBtYWNyb3Mgb2YgdGhlIGZvcm06IG5hbWUg
b3IKLSMgbmFtZT1kZWZpbml0aW9uIChubyBzcGFjZXMpLiBJZiB0aGUgZGVmaW5pdGlvbiBhbmQg
dGhlICI9IiBhcmUgb21pdHRlZCwgIj0xIgotIyBpcyBhc3N1bWVkLiBUbyBwcmV2ZW50IGEgbWFj
cm8gZGVmaW5pdGlvbiBmcm9tIGJlaW5nIHVuZGVmaW5lZCB2aWEgI3VuZGVmIG9yCi0jIHJlY3Vy
c2l2ZWx5IGV4cGFuZGVkIHVzZSB0aGUgOj0gb3BlcmF0b3IgaW5zdGVhZCBvZiB0aGUgPSBvcGVy
YXRvci4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNT
SU5HIGlzIHNldCB0byBZRVMuCi0KLVBSRURFRklORUQgICAgICAgICAgICAgPSAiX01TQ19WRVI9
MTgwMCIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIF9DUFBSVFRJIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBfV0lOMzIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIEpTT05DUFBf
RE9DX0VYQ0xVREVfSU1QTEVNRU5UQVRJT04KLQotIyBJZiB0aGUgTUFDUk9fRVhQQU5TSU9OIGFu
ZCBFWFBBTkRfT05MWV9QUkVERUYgdGFncyBhcmUgc2V0IHRvIFlFUyB0aGVuIHRoaXMKLSMgdGFn
IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9mIG1hY3JvIG5hbWVzIHRoYXQgc2hvdWxk
IGJlIGV4cGFuZGVkLiBUaGUKLSMgbWFjcm8gZGVmaW5pdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRo
ZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gVXNlIHRoZSBQUkVERUZJTkVECi0jIHRhZyBpZiB5b3Ug
d2FudCB0byB1c2UgYSBkaWZmZXJlbnQgbWFjcm8gZGVmaW5pdGlvbiB0aGF0IG92ZXJydWxlcyB0
aGUKLSMgZGVmaW5pdGlvbiBmb3VuZCBpbiB0aGUgc291cmNlIGNvZGUuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgot
Ci1FWFBBTkRfQVNfREVGSU5FRCAgICAgID0KLQotIyBJZiB0aGUgU0tJUF9GVU5DVElPTl9NQUNS
T1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuJ3MgcHJlcHJvY2Vzc29yIHdpbGwKLSMg
cmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9uLWxpa2UgbWFjcm9zIHRoYXQgYXJlIGFs
b25lIG9uIGEgbGluZSwgaGF2ZSBhbgotIyBhbGwgdXBwZXJjYXNlIG5hbWUsIGFuZCBkbyBub3Qg
ZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggZnVuY3Rpb24gbWFjcm9zIGFyZQotIyB0eXBpY2Fs
bHkgdXNlZCBmb3IgYm9pbGVyLXBsYXRlIGNvZGUsIGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcnNl
ciBpZiBub3QKLSMgcmVtb3ZlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0
byBZRVMuCi0KLVNLSVBfRlVOQ1RJT05fTUFDUk9TICAgPSBZRVMKLQotIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCByZWZlcmVu
Y2VzCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhlIFRBR0ZJTEVTIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZyBmaWxlcy4gRm9yIGVhY2ggdGFnCi0jIGZpbGUg
dGhlIGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uIHNob3VsZCBiZSBhZGRl
ZC4gVGhlIGZvcm1hdCBvZgotIyBhIHRhZyBmaWxlIHdpdGhvdXQgdGhpcyBsb2NhdGlvbiBpcyBh
cyBmb2xsb3dzOgotIyBUQUdGSUxFUyA9IGZpbGUxIGZpbGUyIC4uLgotIyBBZGRpbmcgbG9jYXRp
b24gZm9yIHRoZSB0YWcgZmlsZXMgaXMgZG9uZSBhcyBmb2xsb3dzOgotIyBUQUdGSUxFUyA9IGZp
bGUxPWxvYzEgImZpbGUyID0gbG9jMiIgLi4uCi0jIHdoZXJlIGxvYzEgYW5kIGxvYzIgY2FuIGJl
IHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIG9yIFVSTHMuIFNlZSB0aGUKLSMgc2VjdGlvbiAi
TGlua2luZyB0byBleHRlcm5hbCBkb2N1bWVudGF0aW9uIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgdXNlCi0jIG9mIHRhZyBmaWxlcy4KLSMgTm90ZTogRWFjaCB0YWcgZmlsZSBtdXN0
IGhhdmUgYW4gdW5pcXVlIG5hbWUgKHdoZXJlIHRoZSBuYW1lIGRvZXMgTk9UIGluY2x1ZGUKLSMg
dGhlIHBhdGgpLiBJZiBhIHRhZyBmaWxlIGlzIG5vdCBsb2NhdGVkIGluIHRoZSBkaXJlY3Rvcnkg
aW4gd2hpY2ggZG94eWdlbiBpcwotIyBydW4sIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgcGF0
aCB0byB0aGUgdGFnZmlsZSBoZXJlLgotCi1UQUdGSUxFUyAgICAgICAgICAgICAgID0KLQotIyBX
aGVuIGEgZmlsZSBuYW1lIGlzIHNwZWNpZmllZCBhZnRlciBHRU5FUkFURV9UQUdGSUxFLCBkb3h5
Z2VuIHdpbGwgY3JlYXRlIGEKLSMgdGFnIGZpbGUgdGhhdCBpcyBiYXNlZCBvbiB0aGUgaW5wdXQg
ZmlsZXMgaXQgcmVhZHMuIFNlZSBzZWN0aW9uICJMaW5raW5nIHRvCi0jIGV4dGVybmFsIGRvY3Vt
ZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0YWcgZmls
ZXMuCi0KLUdFTkVSQVRFX1RBR0ZJTEUgICAgICAgPQotCi0jIElmIHRoZSBBTExFWFRFUk5BTFMg
dGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGNsYXNzIHdpbGwgYmUgbGlzdGVkIGluIHRo
ZQotIyBjbGFzcyBpbmRleC4gSWYgc2V0IHRvIE5PIG9ubHkgdGhlIGluaGVyaXRlZCBleHRlcm5h
bCBjbGFzc2VzIHdpbGwgYmUgbGlzdGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LUFMTEVYVEVSTkFMUyAgICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBFWFRFUk5BTF9HUk9VUFMg
dGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGdyb3VwcyB3aWxsIGJlIGxpc3RlZCBpbgot
IyB0aGUgbW9kdWxlcyBpbmRleC4gSWYgc2V0IHRvIE5PLCBvbmx5IHRoZSBjdXJyZW50IHByb2pl
Y3QncyBncm91cHMgd2lsbCBiZQotIyBsaXN0ZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0KLUVYVEVSTkFMX0dST1VQUyAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgRVhURVJOQUxf
UEFHRVMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIHBhZ2VzIHdpbGwgYmUgbGlzdGVk
IGluCi0jIHRoZSByZWxhdGVkIHBhZ2VzIGluZGV4LiBJZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1
cnJlbnQgcHJvamVjdCdzIHBhZ2VzIHdpbGwKLSMgYmUgbGlzdGVkLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogWUVTLgotCi1FWFRFUk5BTF9QQUdFUyAgICAgICAgID0gWUVTCi0KLSMgVGhlIFBF
UkxfUEFUSCBzaG91bGQgYmUgdGhlIGFic29sdXRlIHBhdGggYW5kIG5hbWUgb2YgdGhlIHBlcmwg
c2NyaXB0Ci0jIGludGVycHJldGVyIChpLmUuIHRoZSByZXN1bHQgb2YgJ3doaWNoIHBlcmwnKS4K
LSMgVGhlIGRlZmF1bHQgZmlsZSAod2l0aCBhYnNvbHV0ZSBwYXRoKSBpczogL3Vzci9iaW4vcGVy
bC4KLQotUEVSTF9QQVRIICAgICAgICAgICAgICA9IC91c3IvYmluL3BlcmwKLQotIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgZG90IHRv
b2wKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgQ0xBU1NfRElBR1JBTVMgdGFnIGlz
IHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgY2xhc3MgZGlhZ3JhbQotIyAoaW4g
SFRNTCBhbmQgTGFUZVgpIGZvciBjbGFzc2VzIHdpdGggYmFzZSBvciBzdXBlciBjbGFzc2VzLiBT
ZXR0aW5nIHRoZSB0YWcgdG8KLSMgTk8gdHVybnMgdGhlIGRpYWdyYW1zIG9mZi4gTm90ZSB0aGF0
IHRoaXMgb3B0aW9uIGFsc28gd29ya3Mgd2l0aCBIQVZFX0RPVAotIyBkaXNhYmxlZCwgYnV0IGl0
IGlzIHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYW5kIHVzZSBkb3QsIHNpbmNlIGl0IHlpZWxkcyBt
b3JlCi0jIHBvd2VyZnVsIGdyYXBocy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQot
Q0xBU1NfRElBR1JBTVMgICAgICAgICA9IE5PCi0KLSMgWW91IGNhbiBkZWZpbmUgbWVzc2FnZSBz
ZXF1ZW5jZSBjaGFydHMgd2l0aGluIGRveHlnZW4gY29tbWVudHMgdXNpbmcgdGhlIFxtc2MKLSMg
Y29tbWFuZC4gRG94eWdlbiB3aWxsIHRoZW4gcnVuIHRoZSBtc2NnZW4gdG9vbCAoc2VlOgotIyBo
dHRwOi8vd3d3Lm1jdGVybmFuLm1lLnVrL21zY2dlbi8pKSB0byBwcm9kdWNlIHRoZSBjaGFydCBh
bmQgaW5zZXJ0IGl0IGluIHRoZQotIyBkb2N1bWVudGF0aW9uLiBUaGUgTVNDR0VOX1BBVEggdGFn
IGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IHdoZXJlCi0jIHRoZSBtc2NnZW4g
dG9vbCByZXNpZGVzLiBJZiBsZWZ0IGVtcHR5IHRoZSB0b29sIGlzIGFzc3VtZWQgdG8gYmUgZm91
bmQgaW4gdGhlCi0jIGRlZmF1bHQgc2VhcmNoIHBhdGguCi0KLU1TQ0dFTl9QQVRIICAgICAgICAg
ICAgPQotCi0jIElmIHNldCB0byBZRVMsIHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlv
biBncmFwaHMgd2lsbCBoaWRlIGluaGVyaXRhbmNlCi0jIGFuZCB1c2FnZSByZWxhdGlvbnMgaWYg
dGhlIHRhcmdldCBpcyB1bmRvY3VtZW50ZWQgb3IgaXMgbm90IGEgY2xhc3MuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBZRVMuCi0KLUhJREVfVU5ET0NfUkVMQVRJT05TICAgPSBOTwotCi0jIElm
IHlvdSBzZXQgdGhlIEhBVkVfRE9UIHRhZyB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgYXNzdW1l
IHRoZSBkb3QgdG9vbCBpcwotIyBhdmFpbGFibGUgZnJvbSB0aGUgcGF0aC4gVGhpcyB0b29sIGlz
IHBhcnQgb2YgR3JhcGh2aXogKHNlZToKLSMgaHR0cDovL3d3dy5ncmFwaHZpei5vcmcvKSwgYSBn
cmFwaCB2aXN1YWxpemF0aW9uIHRvb2xraXQgZnJvbSBBVCZUIGFuZCBMdWNlbnQKLSMgQmVsbCBM
YWJzLiBUaGUgb3RoZXIgb3B0aW9ucyBpbiB0aGlzIHNlY3Rpb24gaGF2ZSBubyBlZmZlY3QgaWYg
dGhpcyBvcHRpb24gaXMKLSMgc2V0IHRvIE5PCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4K
LQotSEFWRV9ET1QgICAgICAgICAgICAgICA9ICVIQVZFX0RPVCUKLQotIyBUaGUgRE9UX05VTV9U
SFJFQURTIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRvdCBpbnZvY2F0aW9ucyBkb3h5Z2VuIGlz
IGFsbG93ZWQKLSMgdG8gcnVuIGluIHBhcmFsbGVsLiBXaGVuIHNldCB0byAwIGRveHlnZW4gd2ls
bCBiYXNlIHRoaXMgb24gdGhlIG51bWJlciBvZgotIyBwcm9jZXNzb3JzIGF2YWlsYWJsZSBpbiB0
aGUgc3lzdGVtLiBZb3UgY2FuIHNldCBpdCBleHBsaWNpdGx5IHRvIGEgdmFsdWUKLSMgbGFyZ2Vy
IHRoYW4gMCB0byBnZXQgY29udHJvbCBvdmVyIHRoZSBiYWxhbmNlIGJldHdlZW4gQ1BVIGxvYWQg
YW5kIHByb2Nlc3NpbmcKLSMgc3BlZWQuCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFs
dWU6IDMyLCBkZWZhdWx0IHZhbHVlOiAwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX05VTV9USFJFQURTICAgICAgICA9IDAK
LQotIyBXaGVuIHlvdSB3YW50IGEgZGlmZmVyZW50bHkgbG9va2luZyBmb250IG4gdGhlIGRvdCBm
aWxlcyB0aGF0IGRveHlnZW4KLSMgZ2VuZXJhdGVzIHlvdSBjYW4gc3BlY2lmeSB0aGUgZm9udCBu
YW1lIHVzaW5nIERPVF9GT05UTkFNRS4gWW91IG5lZWQgdG8gbWFrZQotIyBzdXJlIGRvdCBpcyBh
YmxlIHRvIGZpbmQgdGhlIGZvbnQsIHdoaWNoIGNhbiBiZSBkb25lIGJ5IHB1dHRpbmcgaXQgaW4g
YQotIyBzdGFuZGFyZCBsb2NhdGlvbiBvciBieSBzZXR0aW5nIHRoZSBET1RGT05UUEFUSCBlbnZp
cm9ubWVudCB2YXJpYWJsZSBvciBieQotIyBzZXR0aW5nIERPVF9GT05UUEFUSCB0byB0aGUgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZvbnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBIZWx2
ZXRpY2EuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1ET1RfRk9OVE5BTUUgICAgICAgICAgID0gRnJlZVNhbnMKLQotIyBUaGUgRE9U
X0ZPTlRTSVpFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHNpemUgKGluIHBvaW50cykgb2Yg
dGhlIGZvbnQgb2YKLSMgZG90IGdyYXBocy4KLSMgTWluaW11bSB2YWx1ZTogNCwgbWF4aW11bSB2
YWx1ZTogMjQsIGRlZmF1bHQgdmFsdWU6IDEwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX0ZPTlRTSVpFICAgICAgICAgICA9
IDEwCi0KLSMgQnkgZGVmYXVsdCBkb3h5Z2VuIHdpbGwgdGVsbCBkb3QgdG8gdXNlIHRoZSBkZWZh
dWx0IGZvbnQgYXMgc3BlY2lmaWVkIHdpdGgKLSMgRE9UX0ZPTlROQU1FLiBJZiB5b3Ugc3BlY2lm
eSBhIGRpZmZlcmVudCBmb250IHVzaW5nIERPVF9GT05UTkFNRSB5b3UgY2FuIHNldAotIyB0aGUg
cGF0aCB3aGVyZSBkb3QgY2FuIGZpbmQgaXQgdXNpbmcgdGhpcyB0YWcuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1ET1RfRk9OVFBB
VEggICAgICAgICAgID0KLQotIyBJZiB0aGUgQ0xBU1NfR1JBUEggdGFnIGlzIHNldCB0byBZRVMg
dGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IKLSMgZWFjaCBkb2N1bWVudGVk
IGNsYXNzIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5oZXJpdGFuY2UgcmVsYXRp
b25zLgotIyBTZXR0aW5nIHRoaXMgdGFnIHRvIFlFUyB3aWxsIGZvcmNlIHRoZSBDTEFTU19ESUFH
UkFNUyB0YWcgdG8gTk8uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1DTEFTU19H
UkFQSCAgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIENPTExBQk9SQVRJT05fR1JBUEggdGFn
IGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQotIyBncmFwaCBmb3Ig
ZWFjaCBkb2N1bWVudGVkIGNsYXNzIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW1w
bGVtZW50YXRpb24KLSMgZGVwZW5kZW5jaWVzIChpbmhlcml0YW5jZSwgY29udGFpbm1lbnQsIGFu
ZCBjbGFzcyByZWZlcmVuY2VzIHZhcmlhYmxlcykgb2YgdGhlCi0jIGNsYXNzIHdpdGggb3RoZXIg
ZG9jdW1lbnRlZCBjbGFzc2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotQ09M
TEFCT1JBVElPTl9HUkFQSCAgICA9IFlFUwotCi0jIElmIHRoZSBHUk9VUF9HUkFQSFMgdGFnIGlz
IHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IKLSMgZ3Jv
dXBzLCBzaG93aW5nIHRoZSBkaXJlY3QgZ3JvdXBzIGRlcGVuZGVuY2llcy4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVf
RE9UIGlzIHNldCB0byBZRVMuCi0KLUdST1VQX0dSQVBIUyAgICAgICAgICAgPSBZRVMKLQotIyBJ
ZiB0aGUgVU1MX0xPT0sgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGlu
aGVyaXRhbmNlIGFuZAotIyBjb2xsYWJvcmF0aW9uIGRpYWdyYW1zIGluIGEgc3R5bGUgc2ltaWxh
ciB0byB0aGUgT01HJ3MgVW5pZmllZCBNb2RlbGluZwotIyBMYW5ndWFnZS4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9E
T1QgaXMgc2V0IHRvIFlFUy4KLQotVU1MX0xPT0sgICAgICAgICAgICAgICA9ICVVTUxfTE9PSyUK
LQotIyBJZiB0aGUgVU1MX0xPT0sgdGFnIGlzIGVuYWJsZWQsIHRoZSBmaWVsZHMgYW5kIG1ldGhv
ZHMgYXJlIHNob3duIGluc2lkZSB0aGUKLSMgY2xhc3Mgbm9kZS4gSWYgdGhlcmUgYXJlIG1hbnkg
ZmllbGRzIG9yIG1ldGhvZHMgYW5kIG1hbnkgbm9kZXMgdGhlIGdyYXBoIG1heQotIyBiZWNvbWUg
dG9vIGJpZyB0byBiZSB1c2VmdWwuIFRoZSBVTUxfTElNSVRfTlVNX0ZJRUxEUyB0aHJlc2hvbGQg
bGltaXRzIHRoZQotIyBudW1iZXIgb2YgaXRlbXMgZm9yIGVhY2ggdHlwZSB0byBtYWtlIHRoZSBz
aXplIG1vcmUgbWFuYWdlYWJsZS4gU2V0IHRoaXMgdG8gMAotIyBmb3Igbm8gbGltaXQuIE5vdGUg
dGhhdCB0aGUgdGhyZXNob2xkIG1heSBiZSBleGNlZWRlZCBieSA1MCUgYmVmb3JlIHRoZSBsaW1p
dAotIyBpcyBlbmZvcmNlZC4gU28gd2hlbiB5b3Ugc2V0IHRoZSB0aHJlc2hvbGQgdG8gMTAsIHVw
IHRvIDE1IGZpZWxkcyBtYXkgYXBwZWFyLAotIyBidXQgaWYgdGhlIG51bWJlciBleGNlZWRzIDE1
LCB0aGUgdG90YWwgYW1vdW50IG9mIGZpZWxkcyBzaG93biBpcyBsaW1pdGVkIHRvCi0jIDEwLgot
IyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAsIGRlZmF1bHQgdmFsdWU6IDEw
LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlF
Uy4KLQotVU1MX0xJTUlUX05VTV9GSUVMRFMgICA9IDEwCi0KLSMgSWYgdGhlIFRFTVBMQVRFX1JF
TEFUSU9OUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBpbmhlcml0YW5jZSBhbmQKLSMgY29s
bGFib3JhdGlvbiBncmFwaHMgd2lsbCBzaG93IHRoZSByZWxhdGlvbnMgYmV0d2VlbiB0ZW1wbGF0
ZXMgYW5kIHRoZWlyCi0jIGluc3RhbmNlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4K
LQotVEVNUExBVEVfUkVMQVRJT05TICAgICA9IFlFUwotCi0jIElmIHRoZSBJTkNMVURFX0dSQVBI
LCBFTkFCTEVfUFJFUFJPQ0VTU0lORyBhbmQgU0VBUkNIX0lOQ0xVREVTIHRhZ3MgYXJlIHNldCB0
bwotIyBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1
bWVudGVkIGZpbGUgc2hvd2luZyB0aGUKLSMgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRl
cGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3aXRoIG90aGVyIGRvY3VtZW50ZWQKLSMgZmlsZXMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1JTkNMVURFX0dSQVBIICAgICAgICAgID0g
WUVTCi0KLSMgSWYgdGhlIElOQ0xVREVEX0JZX0dSQVBILCBFTkFCTEVfUFJFUFJPQ0VTU0lORyBh
bmQgU0VBUkNIX0lOQ0xVREVTIHRhZ3MgYXJlCi0jIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdp
bGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIGZpbGUgc2hvd2luZwotIyB0
aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRlcGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3
aXRoIG90aGVyIGRvY3VtZW50ZWQKLSMgZmlsZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8g
WUVTLgotCi1JTkNMVURFRF9CWV9HUkFQSCAgICAgID0gWUVTCi0KLSMgSWYgdGhlIENBTExfR1JB
UEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjYWxsCi0j
IGRlcGVuZGVuY3kgZ3JhcGggZm9yIGV2ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBjbGFzcyBtZXRo
b2QuCi0jCi0jIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIHNpZ25pZmljYW50
bHkgaW5jcmVhc2UgdGhlIHRpbWUgb2YgYSBydW4uCi0jIFNvIGluIG1vc3QgY2FzZXMgaXQgd2ls
bCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGwgZ3JhcGhzIGZvciBzZWxlY3RlZAotIyBmdW5jdGlv
bnMgb25seSB1c2luZyB0aGUgXGNhbGxncmFwaCBjb21tYW5kLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBz
ZXQgdG8gWUVTLgotCi1DQUxMX0dSQVBIICAgICAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgQ0FM
TEVSX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEg
Y2FsbGVyCi0jIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGV2ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBj
bGFzcyBtZXRob2QuCi0jCi0jIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIG9wdGlvbiB3aWxsIHNp
Z25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHRpbWUgb2YgYSBydW4uCi0jIFNvIGluIG1vc3QgY2Fz
ZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGxlciBncmFwaHMgZm9yIHNlbGVjdGVk
Ci0jIGZ1bmN0aW9ucyBvbmx5IHVzaW5nIHRoZSBcY2FsbGVyZ3JhcGggY29tbWFuZC4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
SEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotQ0FMTEVSX0dSQVBIICAgICAgICAgICA9IFlFUwot
Ci0jIElmIHRoZSBHUkFQSElDQUxfSElFUkFSQ0hZIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94
eWdlbiB3aWxsIGdyYXBoaWNhbAotIyBoaWVyYXJjaHkgb2YgYWxsIGNsYXNzZXMgaW5zdGVhZCBv
ZiBhIHRleHR1YWwgb25lLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotR1JBUEhJ
Q0FMX0hJRVJBUkNIWSAgICA9IFlFUwotCi0jIElmIHRoZSBESVJFQ1RPUllfR1JBUEggdGFnIGlz
IHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc2hvdyB0aGUKLSMgZGVwZW5kZW5jaWVzIGEg
ZGlyZWN0b3J5IGhhcyBvbiBvdGhlciBkaXJlY3RvcmllcyBpbiBhIGdyYXBoaWNhbCB3YXkuIFRo
ZQotIyBkZXBlbmRlbmN5IHJlbGF0aW9ucyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgI2luY2x1ZGUg
cmVsYXRpb25zIGJldHdlZW4gdGhlCi0jIGZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURJUkVDVE9SWV9HUkFQSCAgICAgICAgPSBZRVMK
LQotIyBUaGUgRE9UX0lNQUdFX0ZPUk1BVCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBpbWFn
ZSBmb3JtYXQgb2YgdGhlIGltYWdlcwotIyBnZW5lcmF0ZWQgYnkgZG90LgotIyBOb3RlOiBJZiB5
b3UgY2hvb3NlIHN2ZyB5b3UgbmVlZCB0byBzZXQgSFRNTF9GSUxFX0VYVEVOU0lPTiB0byB4aHRt
bCBpbiBvcmRlcgotIyB0byBtYWtlIHRoZSBTVkcgZmlsZXMgdmlzaWJsZSBpbiBJRSA5KyAob3Ro
ZXIgYnJvd3NlcnMgZG8gbm90IGhhdmUgdGhpcwotIyByZXF1aXJlbWVudCkuCi0jIFBvc3NpYmxl
IHZhbHVlcyBhcmU6IHBuZywganBnLCBnaWYgYW5kIHN2Zy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IHBuZy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNl
dCB0byBZRVMuCi0KLURPVF9JTUFHRV9GT1JNQVQgICAgICAgPSBwbmcKLQotIyBJZiBET1RfSU1B
R0VfRk9STUFUIGlzIHNldCB0byBzdmcsIHRoZW4gdGhpcyBvcHRpb24gY2FuIGJlIHNldCB0byBZ
RVMgdG8KLSMgZW5hYmxlIGdlbmVyYXRpb24gb2YgaW50ZXJhY3RpdmUgU1ZHIGltYWdlcyB0aGF0
IGFsbG93IHpvb21pbmcgYW5kIHBhbm5pbmcuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVz
IGEgbW9kZXJuIGJyb3dzZXIgb3RoZXIgdGhhbiBJbnRlcm5ldCBFeHBsb3Jlci4gVGVzdGVkCi0j
IGFuZCB3b3JraW5nIGFyZSBGaXJlZm94LCBDaHJvbWUsIFNhZmFyaSwgYW5kIE9wZXJhLgotIyBO
b3RlOiBGb3IgSUUgOSsgeW91IG5lZWQgdG8gc2V0IEhUTUxfRklMRV9FWFRFTlNJT04gdG8geGh0
bWwgaW4gb3JkZXIgdG8gbWFrZQotIyB0aGUgU1ZHIGZpbGVzIHZpc2libGUuIE9sZGVyIHZlcnNp
b25zIG9mIElFIGRvIG5vdCBoYXZlIFNWRyBzdXBwb3J0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1JTlRFUkFDVElWRV9TVkcgICAgICAgID0gTk8KLQotIyBUaGUgRE9UX1BBVEgg
dGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggd2hlcmUgdGhlIGRvdCB0b29sIGNh
biBiZQotIyBmb3VuZC4gSWYgbGVmdCBibGFuaywgaXQgaXMgYXNzdW1lZCB0aGUgZG90IHRvb2wg
Y2FuIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX1BBVEggICAgICAgICAgICAgICA9ICVE
T1RfUEFUSCUKLQotIyBUaGUgRE9URklMRV9ESVJTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5
IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQKLSMgY29udGFpbiBkb3QgZmlsZXMgdGhhdCBh
cmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSB0aGUgXGRvdGZpbGUKLSMgY29t
bWFuZCkuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1ET1RGSUxFX0RJUlMgICAgICAgICAgID0KLQotIyBUaGUgTVNDRklMRV9ESVJT
IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQK
LSMgY29udGFpbiBtc2MgZmlsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRp
b24gKHNlZSB0aGUgXG1zY2ZpbGUKLSMgY29tbWFuZCkuCi0KLU1TQ0ZJTEVfRElSUyAgICAgICAg
ICAgPQotCi0jIFRoZSBET1RfR1JBUEhfTUFYX05PREVTIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQg
dGhlIG1heGltdW0gbnVtYmVyIG9mIG5vZGVzCi0jIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUg
Z3JhcGguIElmIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gYSBncmFwaCBiZWNvbWVzCi0jIGxhcmdl
ciB0aGFuIHRoaXMgdmFsdWUsIGRveHlnZW4gd2lsbCB0cnVuY2F0ZSB0aGUgZ3JhcGgsIHdoaWNo
IGlzIHZpc3VhbGl6ZWQKLSMgYnkgcmVwcmVzZW50aW5nIGEgbm9kZSBhcyBhIHJlZCBib3guIE5v
dGUgdGhhdCBkb3h5Z2VuIGlmIHRoZSBudW1iZXIgb2YgZGlyZWN0Ci0jIGNoaWxkcmVuIG9mIHRo
ZSByb290IG5vZGUgaW4gYSBncmFwaCBpcyBhbHJlYWR5IGxhcmdlciB0aGFuCi0jIERPVF9HUkFQ
SF9NQVhfTk9ERVMgdGhlbiB0aGUgZ3JhcGggd2lsbCBub3QgYmUgc2hvd24gYXQgYWxsLiBBbHNv
IG5vdGUgdGhhdAotIyB0aGUgc2l6ZSBvZiBhIGdyYXBoIGNhbiBiZSBmdXJ0aGVyIHJlc3RyaWN0
ZWQgYnkgTUFYX0RPVF9HUkFQSF9ERVBUSC4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2
YWx1ZTogMTAwMDAsIGRlZmF1bHQgdmFsdWU6IDUwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9UX0dSQVBIX01BWF9OT0RFUyAg
ICA9IDUwCi0KLSMgVGhlIE1BWF9ET1RfR1JBUEhfREVQVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNl
dCB0aGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgZ3JhcGhzCi0jIGdlbmVyYXRlZCBieSBkb3QuIEEg
ZGVwdGggdmFsdWUgb2YgMyBtZWFucyB0aGF0IG9ubHkgbm9kZXMgcmVhY2hhYmxlIGZyb20gdGhl
Ci0jIHJvb3QgYnkgZm9sbG93aW5nIGEgcGF0aCB2aWEgYXQgbW9zdCAzIGVkZ2VzIHdpbGwgYmUg
c2hvd24uIE5vZGVzIHRoYXQgbGF5Ci0jIGZ1cnRoZXIgZnJvbSB0aGUgcm9vdCBub2RlIHdpbGwg
YmUgb21pdHRlZC4gTm90ZSB0aGF0IHNldHRpbmcgdGhpcyBvcHRpb24gdG8gMQotIyBvciAyIG1h
eSBncmVhdGx5IHJlZHVjZSB0aGUgY29tcHV0YXRpb24gdGltZSBuZWVkZWQgZm9yIGxhcmdlIGNv
ZGUgYmFzZXMuIEFsc28KLSMgbm90ZSB0aGF0IHRoZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1
cnRoZXIgcmVzdHJpY3RlZCBieQotIyBET1RfR1JBUEhfTUFYX05PREVTLiBVc2luZyBhIGRlcHRo
IG9mIDAgbWVhbnMgbm8gZGVwdGggcmVzdHJpY3Rpb24uCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1h
eGltdW0gdmFsdWU6IDEwMDAsIGRlZmF1bHQgdmFsdWU6IDAuCi0jIFRoaXMgdGFnIHJlcXVpcmVz
IHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1NQVhfRE9UX0dSQVBIX0RF
UFRIICAgID0gMTAwMAotCi0jIFNldCB0aGUgRE9UX1RSQU5TUEFSRU5UIHRhZyB0byBZRVMgdG8g
Z2VuZXJhdGUgaW1hZ2VzIHdpdGggYSB0cmFuc3BhcmVudAotIyBiYWNrZ3JvdW5kLiBUaGlzIGlz
IGRpc2FibGVkIGJ5IGRlZmF1bHQsIGJlY2F1c2UgZG90IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2Vl
bQotIyB0byBzdXBwb3J0IHRoaXMgb3V0IG9mIHRoZSBib3guCi0jCi0jIFdhcm5pbmc6IERlcGVu
ZGluZyBvbiB0aGUgcGxhdGZvcm0gdXNlZCwgZW5hYmxpbmcgdGhpcyBvcHRpb24gbWF5IGxlYWQg
dG8KLSMgYmFkbHkgYW50aS1hbGlhc2VkIGxhYmVscyBvbiB0aGUgZWRnZXMgb2YgYSBncmFwaCAo
aS5lLiB0aGV5IGJlY29tZSBoYXJkIHRvCi0jIHJlYWQpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1ET1RfVFJBTlNQQVJFTlQgICAgICAgID0gTk8KLQotIyBTZXQgdGhlIERPVF9N
VUxUSV9UQVJHRVRTIHRhZyB0byBZRVMgYWxsb3cgZG90IHRvIGdlbmVyYXRlIG11bHRpcGxlIG91
dHB1dAotIyBmaWxlcyBpbiBvbmUgcnVuIChpLmUuIG11bHRpcGxlIC1vIGFuZCAtVCBvcHRpb25z
IG9uIHRoZSBjb21tYW5kIGxpbmUpLiBUaGlzCi0jIG1ha2VzIGRvdCBydW4gZmFzdGVyLCBidXQg
c2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3QgKD4xLjguMTApIHN1cHBvcnQKLSMgdGhp
cywgdGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlz
IHNldCB0byBZRVMuCi0KLURPVF9NVUxUSV9UQVJHRVRTICAgICAgPSBZRVMKLQotIyBJZiB0aGUg
R0VORVJBVEVfTEVHRU5EIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBh
IGxlZ2VuZCBwYWdlCi0jIGV4cGxhaW5pbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94
ZXMgYW5kIGFycm93cyBpbiB0aGUgZG90IGdlbmVyYXRlZAotIyBncmFwaHMuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZF
X0RPVCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9MRUdFTkQgICAgICAgID0gWUVTCi0KLSMg
SWYgdGhlIERPVF9DTEVBTlVQIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCByZW1vdmUg
dGhlIGludGVybWVkaWF0ZSBkb3QKLSMgZmlsZXMgdGhhdCBhcmUgdXNlZCB0byBnZW5lcmF0ZSB0
aGUgdmFyaW91cyBncmFwaHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1ET1Rf
Q0xFQU5VUCAgICAgICAgICAgID0gWUVTCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RveHlidWlsZC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvZG94eWJ1aWxkLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjJjMWY0
M2ZmNGIwZDYzNDkyMWRhNGY3OTAzYWIzYzIyMDJkODcxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG94eWJ1aWxkLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTg5ICswLDAgQEAKLSIiIlNjcmlwdCB0byBnZW5lcmF0ZSBkb3h5Z2VuIGRvY3VtZW50
YXRpb24uCi0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotZnJvbSBkZXZ0b29scyBpbXBvcnQg
dGFyYmFsbAotZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgotaW1wb3J0IHN1
YnByb2Nlc3MKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCByZQotaW1wb3J0IG9zCi1pbXBvcnQg
c3lzCi1pbXBvcnQgc2h1dGlsCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIGNkKG5ld2Rpcik6Ci0g
ICAgIiIiCi0gICAgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MzE2ODQvaG93
LWRvLWktY2QtaW4tcHl0aG9uCi0gICAgIiIiCi0gICAgcHJldmRpciA9IG9zLmdldGN3ZCgpCi0g
ICAgb3MuY2hkaXIobmV3ZGlyKQotICAgIHRyeToKLSAgICAgICAgeWllbGQKLSAgICBmaW5hbGx5
OgotICAgICAgICBvcy5jaGRpcihwcmV2ZGlyKQotCi1kZWYgZmluZF9wcm9ncmFtKCpmaWxlbmFt
ZXMpOgotICAgICIiImZpbmQgYSBwcm9ncmFtIGluIGZvbGRlcnMgcGF0aF9sc3QsIGFuZCBzZXRz
IGVudlt2YXJdCi0gICAgQHBhcmFtIGZpbGVuYW1lczogYSBsaXN0IG9mIHBvc3NpYmxlIG5hbWVz
IG9mIHRoZSBwcm9ncmFtIHRvIHNlYXJjaCBmb3IKLSAgICBAcmV0dXJuOiB0aGUgZnVsbCBwYXRo
IG9mIHRoZSBmaWxlbmFtZSBpZiBmb3VuZCwgb3IgJycgaWYgZmlsZW5hbWUgY291bGQgbm90IGJl
IGZvdW5kCi0iIiIKLSAgICBwYXRocyA9IG9zLmVudmlyb24uZ2V0KCdQQVRIJywgJycpLnNwbGl0
KG9zLnBhdGhzZXApCi0gICAgc3VmZml4ZXMgPSAoJ3dpbjMyJyBpbiBzeXMucGxhdGZvcm0pIGFu
ZCAnLmV4ZSAuY29tIC5iYXQgLmNtZCcgb3IgJycKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5h
bWVzOgotICAgICAgICBmb3IgbmFtZSBpbiBbZmlsZW5hbWUrZXh0IGZvciBleHQgaW4gc3VmZml4
ZXMuc3BsaXQoJyAnKV06Ci0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHBhdGhzOgotICAg
ICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIG5hbWUpCi0g
ICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bGxfcGF0aAotICAgIHJldHVybiAnJwotCi1kZWYgZG9fc3Vic3Rf
aW5fZmlsZSh0YXJnZXRmaWxlLCBzb3VyY2VmaWxlLCBkaWN0KToKLSAgICAiIiJSZXBsYWNlIGFs
bCBpbnN0YW5jZXMgb2YgdGhlIGtleXMgb2YgZGljdCB3aXRoIHRoZWlyIHZhbHVlcy4KLSAgICBG
b3IgZXhhbXBsZSwgaWYgZGljdCBpcyB7JyVWRVJTSU9OJSc6ICcxLjIzNDUnLCAnJUJBU0UlJzog
J015UHJvZyd9LAotICAgIHRoZW4gYWxsIGluc3RhbmNlcyBvZiAlVkVSU0lPTiUgaW4gdGhlIGZp
bGUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIDEuMjM0NSBldGMuCi0gICAgIiIiCi0gICAgd2l0aCBv
cGVuKHNvdXJjZWZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQot
ICAgIGZvciAoayx2KSBpbiBsaXN0KGRpY3QuaXRlbXMoKSk6Ci0gICAgICAgIHYgPSB2LnJlcGxh
Y2UoJ1xcJywnXFxcXCcpIAotICAgICAgICBjb250ZW50cyA9IHJlLnN1YihrLCB2LCBjb250ZW50
cykKLSAgICB3aXRoIG9wZW4odGFyZ2V0ZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRl
KGNvbnRlbnRzKQotCi1kZWYgZ2V0c3RhdHVzb3V0cHV0KGNtZCk6Ci0gICAgIiIiY21kIGlzIGEg
bGlzdC4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VU
KQotICAgICAgICBvdXRwdXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgc3Rh
dHVzID0gcHJvY2Vzcy5yZXR1cm5jb2RlCi0gICAgZXhjZXB0OgotICAgICAgICBzdGF0dXMgPSAt
MQotICAgICAgICBvdXRwdXQgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgcmV0dXJuIHN0
YXR1cywgb3V0cHV0Ci0KLWRlZiBydW5fY21kKGNtZCwgc2lsZW50PUZhbHNlKToKLSAgICAiIiJS
YWlzZSBleGNlcHRpb24gb24gZmFpbHVyZS4KLSAgICAiIiIKLSAgICBpbmZvID0gJ1J1bm5pbmc6
ICVyIGluICVyJyAlKCcgJy5qb2luKGNtZCksIG9zLmdldGN3ZCgpKQotICAgIHByaW50KGluZm8p
Ci0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgaWYgc2lsZW50OgotICAgICAgICBzdGF0dXMs
IG91dHB1dCA9IGdldHN0YXR1c291dHB1dChjbWQpCi0gICAgZWxzZToKLSAgICAgICAgc3RhdHVz
LCBvdXRwdXQgPSBzdWJwcm9jZXNzLmNhbGwoY21kKSwgJycKLSAgICBpZiBzdGF0dXM6Ci0gICAg
ICAgIG1zZyA9ICdFcnJvciB3aGlsZSAlcyAuLi5cblx0ZXJyb3I9JWQsIG91dHB1dD0iIiIlcyIi
IicgJShpbmZvLCBzdGF0dXMsIG91dHB1dCkKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykK
LQotZGVmIGFzc2VydF9pc19leGUocGF0aCk6Ci0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigncGF0aCBpcyBlbXB0eS4nKQotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmls
ZShwYXRoKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclciBpcyBub3QgYSBmaWxlLicgJXBh
dGgpCi0gICAgaWYgbm90IG9zLmFjY2VzcyhwYXRoLCBvcy5YX09LKToKLSAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCclciBpcyBub3QgZXhlY3V0YWJsZSBieSB0aGlzIHVzZXIuJyAlcGF0aCkKLQot
ZGVmIHJ1bl9kb3h5Z2VuKGRveHlnZW5fcGF0aCwgY29uZmlnX2ZpbGUsIHdvcmtpbmdfZGlyLCBp
c19zaWxlbnQpOgotICAgIGFzc2VydF9pc19leGUoZG94eWdlbl9wYXRoKQotICAgIGNvbmZpZ19m
aWxlID0gb3MucGF0aC5hYnNwYXRoKGNvbmZpZ19maWxlKQotICAgIHdpdGggY2Qod29ya2luZ19k
aXIpOgotICAgICAgICBjbWQgPSBbZG94eWdlbl9wYXRoLCBjb25maWdfZmlsZV0KLSAgICAgICAg
cnVuX2NtZChjbWQsIGlzX3NpbGVudCkKLQotZGVmIGJ1aWxkX2RvYyhvcHRpb25zLCAgbWFrZV9y
ZWxlYXNlPUZhbHNlKToKLSAgICBpZiBtYWtlX3JlbGVhc2U6Ci0gICAgICAgIG9wdGlvbnMubWFr
ZV90YXJiYWxsID0gVHJ1ZQotICAgICAgICBvcHRpb25zLndpdGhfZG90ID0gVHJ1ZQotICAgICAg
ICBvcHRpb25zLndpdGhfaHRtbF9oZWxwID0gVHJ1ZQotICAgICAgICBvcHRpb25zLndpdGhfdW1s
X2xvb2sgPSBUcnVlCi0gICAgICAgIG9wdGlvbnMub3BlbiA9IEZhbHNlCi0gICAgICAgIG9wdGlv
bnMuc2lsZW50ID0gVHJ1ZQotCi0gICAgdmVyc2lvbiA9IG9wZW4oJ3ZlcnNpb24nLCAncnQnKS5y
ZWFkKCkuc3RyaXAoKQotICAgIG91dHB1dF9kaXIgPSAnZGlzdC9kb3h5Z2VuJyAjIHJlbGF0aXZl
IHRvIGRvYy9kb3h5ZmlsZSBsb2NhdGlvbi4KLSAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihvdXRw
dXRfZGlyKToKLSAgICAgICAgb3MubWFrZWRpcnMob3V0cHV0X2RpcikKLSAgICB0b3BfZGlyID0g
b3MucGF0aC5hYnNwYXRoKCcuJykKLSAgICBodG1sX291dHB1dF9kaXJuYW1lID0gJ2pzb25jcHAt
YXBpLWh0bWwtJyArIHZlcnNpb24KLSAgICB0YXJiYWxsX3BhdGggPSBvcy5wYXRoLmpvaW4oJ2Rp
c3QnLCBodG1sX291dHB1dF9kaXJuYW1lICsgJy50YXIuZ3onKQotICAgIHdhcm5pbmdfbG9nX3Bh
dGggPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgJy4uL2pzb25jcHAtZG94eWdlbi13YXJuaW5n
LmxvZycpCi0gICAgaHRtbF9vdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBo
dG1sX291dHB1dF9kaXJuYW1lKQotICAgIGRlZiB5ZXNubyhib29sKToKLSAgICAgICAgcmV0dXJu
IGJvb2wgYW5kICdZRVMnIG9yICdOTycKLSAgICBzdWJzdF9rZXlzID0gewotICAgICAgICAnJUpT
T05DUFBfVkVSU0lPTiUnOiB2ZXJzaW9uLAotICAgICAgICAnJURPQ19UT1BESVIlJzogJycsCi0g
ICAgICAgICclVE9QRElSJSc6IHRvcF9kaXIsCi0gICAgICAgICclSFRNTF9PVVRQVVQlJzogb3Mu
cGF0aC5qb2luKCcuLicsIG91dHB1dF9kaXIsIGh0bWxfb3V0cHV0X2Rpcm5hbWUpLAotICAgICAg
ICAnJUhBVkVfRE9UJSc6IHllc25vKG9wdGlvbnMud2l0aF9kb3QpLAotICAgICAgICAnJURPVF9Q
QVRIJSc6IG9zLnBhdGguc3BsaXQob3B0aW9ucy5kb3RfcGF0aClbMF0sCi0gICAgICAgICclSFRN
TF9IRUxQJSc6IHllc25vKG9wdGlvbnMud2l0aF9odG1sX2hlbHApLAotICAgICAgICAnJVVNTF9M
T09LJSc6IHllc25vKG9wdGlvbnMud2l0aF91bWxfbG9vayksCi0gICAgICAgICclV0FSTklOR19M
T0dfUEFUSCUnOiBvcy5wYXRoLmpvaW4oJy4uJywgd2FybmluZ19sb2dfcGF0aCkKLSAgICAgICAg
fQotCi0gICAgaWYgb3MucGF0aC5pc2RpcihvdXRwdXRfZGlyKToKLSAgICAgICAgcHJpbnQoJ0Rl
bGV0aW5nIGRpcmVjdG9yeTonLCBvdXRwdXRfZGlyKQotICAgICAgICBzaHV0aWwucm10cmVlKG91
dHB1dF9kaXIpCi0gICAgaWYgbm90IG9zLnBhdGguaXNkaXIob3V0cHV0X2Rpcik6Ci0gICAgICAg
IG9zLm1ha2VkaXJzKG91dHB1dF9kaXIpCi0KLSAgICBkb19zdWJzdF9pbl9maWxlKCdkb2MvZG94
eWZpbGUnLCBvcHRpb25zLmRveHlmaWxlX2lucHV0X3BhdGgsIHN1YnN0X2tleXMpCi0gICAgcnVu
X2RveHlnZW4ob3B0aW9ucy5kb3h5Z2VuX3BhdGgsICdkb2MvZG94eWZpbGUnLCAnZG9jJywgaXNf
c2lsZW50PW9wdGlvbnMuc2lsZW50KQotICAgIGlmIG5vdCBvcHRpb25zLnNpbGVudDoKLSAgICAg
ICAgcHJpbnQob3Blbih3YXJuaW5nX2xvZ19wYXRoLCAncicpLnJlYWQoKSkKLSAgICBpbmRleF9w
YXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbignZG9jJywgc3Vic3Rfa2V5c1snJUhU
TUxfT1VUUFVUJSddLCAnaW5kZXguaHRtbCcpKQotICAgIHByaW50KCdHZW5lcmF0ZWQgZG9jdW1l
bnRhdGlvbiBjYW4gYmUgZm91bmQgaW46JykKLSAgICBwcmludChpbmRleF9wYXRoKQotICAgIGlm
IG9wdGlvbnMub3BlbjoKLSAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICAgICAgd2ViYnJv
d3Nlci5vcGVuKCdmaWxlOi8vJyArIGluZGV4X3BhdGgpCi0gICAgaWYgb3B0aW9ucy5tYWtlX3Rh
cmJhbGw6Ci0gICAgICAgIHByaW50KCdHZW5lcmF0aW5nIGRvYyB0YXJiYWxsIHRvJywgdGFyYmFs
bF9wYXRoKQotICAgICAgICB0YXJiYWxsX3NvdXJjZXMgPSBbCi0gICAgICAgICAgICBvdXRwdXRf
ZGlyLAotICAgICAgICAgICAgJ1JFQURNRS5tZCcsCi0gICAgICAgICAgICAnTElDRU5TRScsCi0g
ICAgICAgICAgICAnTkVXUy50eHQnLAotICAgICAgICAgICAgJ3ZlcnNpb24nCi0gICAgICAgICAg
ICBdCi0gICAgICAgIHRhcmJhbGxfYmFzZWRpciA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBo
dG1sX291dHB1dF9kaXJuYW1lKQotICAgICAgICB0YXJiYWxsLm1ha2VfdGFyYmFsbCh0YXJiYWxs
X3BhdGgsIHRhcmJhbGxfc291cmNlcywgdGFyYmFsbF9iYXNlZGlyLCBodG1sX291dHB1dF9kaXJu
YW1lKQotICAgIHJldHVybiB0YXJiYWxsX3BhdGgsIGh0bWxfb3V0cHV0X2Rpcm5hbWUKLQotZGVm
IG1haW4oKToKLSAgICB1c2FnZSA9ICIiIiVwcm9nCi0gICAgR2VuZXJhdGVzIGRveHlnZW4gZG9j
dW1lbnRhdGlvbiBpbiBidWlsZC9kb3h5Z2VuLgotICAgIE9wdGlvbmFsbHkgbWFrZXMgYSB0YXJi
YWxsIG9mIHRoZSBkb2N1bWVudGF0aW9uIHRvIGRpc3QvLgotCi0gICAgTXVzdCBiZSBzdGFydGVk
IGluIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkuICAgIAotICAgICIiIgotICAgIGZyb20gb3B0
cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2Fn
ZT11c2FnZSkKLSAgICBwYXJzZXIuYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgPSBGYWxzZQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLXdpdGgtZG90JywgZGVzdD0id2l0aF9kb3QiLCBhY3Rpb249
J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIkVuYWJsZSB1c2Fn
ZSBvZiBET1QgdG8gZ2VuZXJhdGUgY29sbGFib3JhdGlvbiBkaWFncmFtIiIiKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLWRvdCcsIGRlc3Q9ImRvdF9wYXRoIiwgYWN0aW9uPSdzdG9yZScsIGRl
ZmF1bHQ9ZmluZF9wcm9ncmFtKCdkb3QnKSwKLSAgICAgICAgaGVscD0iIiJQYXRoIHRvIEdyYXBo
Vml6IGRvdCB0b29sLiBNdXN0IGJlIGZ1bGwgcXVhbGlmaWVkIHBhdGguIFtEZWZhdWx0OiAlZGVm
YXVsdF0iIiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZG94eWdlbicsIGRlc3Q9ImRveHln
ZW5fcGF0aCIsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PWZpbmRfcHJvZ3JhbSgnZG94eWdlbicp
LAotICAgICAgICBoZWxwPSIiIlBhdGggdG8gRG94eWdlbiB0b29sLiBbRGVmYXVsdDogJWRlZmF1
bHRdIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWluJywgZGVzdD0iZG94eWZpbGVfaW5w
dXRfcGF0aCIsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PSdkb2MvZG94eWZpbGUuaW4nLAotICAg
ICAgICBoZWxwPSIiIlBhdGggdG8gZG94eWdlbiBpbnB1dHMuIFtEZWZhdWx0OiAlZGVmYXVsdF0i
IiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0td2l0aC1odG1sLWhlbHAnLCBkZXN0PSJ3aXRo
X2h0bWxfaGVscCIsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
IGhlbHA9IiIiRW5hYmxlIGdlbmVyYXRpb24gb2YgTWljcm9zb2Z0IEhUTUwgSEVMUCIiIikKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS1uby11bWwtbG9vaycsIGRlc3Q9IndpdGhfdW1sX2xvb2si
LCBhY3Rpb249J3N0b3JlX2ZhbHNlJywgZGVmYXVsdD1UcnVlLAotICAgICAgICBoZWxwPSIiIkdl
bmVyYXRlcyBET1QgZ3JhcGggd2l0aG91dCBVTUwgbG9vayBbRGVmYXVsdDogRmFsc2VdIiIiKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLW9wZW4nLCBkZXN0PSJvcGVuIiwgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJPcGVuIHRoZSBIVE1MIGlu
ZGV4IGluIHRoZSB3ZWIgYnJvd3NlciBhZnRlciBnZW5lcmF0aW9uIiIiKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXRhcmJhbGwnLCBkZXN0PSJtYWtlX3RhcmJhbGwiLCBhY3Rpb249J3N0b3Jl
X3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIkdlbmVyYXRlcyBhIHRhcmJh
bGwgb2YgdGhlIGRvY3VtZW50YXRpb24gaW4gZGlzdC8gZGlyZWN0b3J5IiIiKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctcycsICctLXNpbGVudCcsIGRlc3Q9InNpbGVudCIsIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9IiIiSGlkZXMgZG94eWdlbiBv
dXRwdXQiIiIpCi0gICAgcGFyc2VyLmVuYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgb3B0
aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICBidWlsZF9kb2Mob3B0aW9ucykK
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvaW5jbHVkZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9DTWFrZUxpc3RzLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFjZmFiMWM1YTNiYWE5NTYwY2ZmNmY2NmNj
Y2Y4ZGVlY2U4NzI3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2luY2x1ZGUvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLWZpbGUoR0xPQiBJTkNMVURFX0ZJTEVTICJqc29uLyouaCIpCi1pbnN0YWxsKEZJTEVT
Ci0gICAgJHtJTkNMVURFX0ZJTEVTfQotICAgICR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRl
L2pzb24vdmVyc2lvbi5oCi0gICAgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVE
SVJ9L2pzb24pCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2FsbG9jYXRvci5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9pbmNsdWRlL2pzb24vYWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ1Zjk4N2U5N2IzMTNmY2I1MWY3ZTk4Yjk2OWQyYjQzOGM5MjdkY2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vYWxs
b2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
Ny0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlz
dHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBh
bmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNF
TlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQv
TElDRU5TRQotCi0jaWZuZGVmIENQUFRMX0pTT05fQUxMT0NBVE9SX0hfSU5DTFVERUQKLSNkZWZp
bmUgQ1BQVExfSlNPTl9BTExPQ0FUT1JfSF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0cmluZz4K
LSNpbmNsdWRlIDxtZW1vcnk+Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA4KQotCi1uYW1lc3BhY2Ug
SnNvbiB7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2VjdXJlQWxsb2NhdG9yIHsKLXB1
YmxpYzoKLSAgLy8gVHlwZSBkZWZpbml0aW9ucwotICB1c2luZyB2YWx1ZV90eXBlID0gVDsKLSAg
dXNpbmcgcG9pbnRlciA9IFQqOwotICB1c2luZyBjb25zdF9wb2ludGVyID0gY29uc3QgVCo7Ci0g
IHVzaW5nIHJlZmVyZW5jZSA9IFQmOwotICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBU
JjsKLSAgdXNpbmcgc2l6ZV90eXBlID0gc3RkOjpzaXplX3Q7Ci0gIHVzaW5nIGRpZmZlcmVuY2Vf
dHlwZSA9IHN0ZDo6cHRyZGlmZl90OwotCi0gIC8qKgotICAgKiBBbGxvY2F0ZSBtZW1vcnkgZm9y
IE4gaXRlbXMgdXNpbmcgdGhlIHN0YW5kYXJkIGFsbG9jYXRvci4KLSAgICovCi0gIHBvaW50ZXIg
YWxsb2NhdGUoc2l6ZV90eXBlIG4pIHsKLSAgICAvLyBhbGxvY2F0ZSB1c2luZyAiZ2xvYmFsIG9w
ZXJhdG9yIG5ldyIKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oOjpvcGVyYXRvciBu
ZXcobiAqIHNpemVvZihUKSkpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJlbGVhc2UgbWVtb3J5IHdo
aWNoIHdhcyBhbGxvY2F0ZWQgZm9yIE4gaXRlbXMgYXQgcG9pbnRlciBQLgotICAgKgotICAgKiBU
aGUgbWVtb3J5IGJsb2NrIGlzIGZpbGxlZCB3aXRoIHplcm9lcyBiZWZvcmUgYmVpbmcgcmVsZWFz
ZWQuCi0gICAqIFRoZSBwb2ludGVyIGFyZ3VtZW50IGlzIHRhZ2dlZCBhcyAidm9sYXRpbGUiIHRv
IHByZXZlbnQgdGhlCi0gICAqIGNvbXBpbGVyIG9wdGltaXppbmcgb3V0IHRoaXMgY3JpdGljYWwg
c3RlcC4KLSAgICovCi0gIHZvaWQgZGVhbGxvY2F0ZSh2b2xhdGlsZSBwb2ludGVyIHAsIHNpemVf
dHlwZSBuKSB7Ci0gICAgc3RkOjptZW1zZXQocCwgMCwgbiAqIHNpemVvZihUKSk7Ci0gICAgLy8g
ZnJlZSB1c2luZyAiZ2xvYmFsIG9wZXJhdG9yIGRlbGV0ZSIKLSAgICA6Om9wZXJhdG9yIGRlbGV0
ZShwKTsKLSAgfQotCi0gIC8qKgotICAgKiBDb25zdHJ1Y3QgYW4gaXRlbSBpbi1wbGFjZSBhdCBw
b2ludGVyIFAuCi0gICAqLwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4gdm9pZCBjb25z
dHJ1Y3QocG9pbnRlciBwLCBBcmdzJiYuLi4gYXJncykgewotICAgIC8vIGNvbnN0cnVjdCB1c2lu
ZyAicGxhY2VtZW50IG5ldyIgYW5kICJwZXJmZWN0IGZvcndhcmRpbmciCi0gICAgOjpuZXcgKHN0
YXRpY19jYXN0PHZvaWQqPihwKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICB9
Ci0KLSAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV90KC0xKSAvIHNp
emVvZihUKTsgfQotCi0gIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgeCkgY29uc3QgeyByZXR1
cm4gc3RkOjphZGRyZXNzb2YoeCk7IH0KLQotICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3Rf
cmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKHgpOyB9Ci0KLSAgLyoq
Ci0gICAqIERlc3Ryb3kgYW4gaXRlbSBpbi1wbGFjZSBhdCBwb2ludGVyIFAuCi0gICAqLwotICB2
b2lkIGRlc3Ryb3kocG9pbnRlciBwKSB7Ci0gICAgLy8gZGVzdHJveSB1c2luZyAiZXhwbGljaXQg
ZGVzdHJ1Y3RvciIKLSAgICBwLT5+VCgpOwotICB9Ci0KLSAgLy8gQm9pbGVycGxhdGUKLSAgU2Vj
dXJlQWxsb2NhdG9yKCkge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IFNlY3VyZUFsbG9jYXRv
cihjb25zdCBTZWN1cmVBbGxvY2F0b3I8VT4mKSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
c3RydWN0IHJlYmluZCB7IHVzaW5nIG90aGVyID0gU2VjdXJlQWxsb2NhdG9yPFU+OyB9OwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1ib29sIG9wZXJhdG9yPT0oY29u
c3QgU2VjdXJlQWxsb2NhdG9yPFQ+JiwgY29uc3QgU2VjdXJlQWxsb2NhdG9yPFU+JikgewotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1ib29s
IG9wZXJhdG9yIT0oY29uc3QgU2VjdXJlQWxsb2NhdG9yPFQ+JiwgY29uc3QgU2VjdXJlQWxsb2Nh
dG9yPFU+JikgewotICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KLQot
I3ByYWdtYSBwYWNrKHBvcCkKLQotI2VuZGlmIC8vIENQUFRMX0pTT05fQUxMT0NBVE9SX0hfSU5D
TFVERUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2Fzc2VydGlvbnMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
aW5jbHVkZS9qc29uL2Fzc2VydGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjA3MTZiMDY3NGJhNzg3N2JmZmNjZDQwOThiOWE1NTg2MTI4MGE3ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hc3NlcnRp
b25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0y
MDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJp
YnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQK
LS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNF
IGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElD
RU5TRQotCi0jaWZuZGVmIENQUFRMX0pTT05fQVNTRVJUSU9OU19IX0lOQ0xVREVECi0jZGVmaW5l
IENQUFRMX0pTT05fQVNTRVJUSU9OU19IX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RkbGliPgot
I2luY2x1ZGUgPHNzdHJlYW0+Ci0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikK
LSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxH
QU1BVElPTikKLQotLyoqIEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgZm9yIGEgbWFsaWNpb3Vz
bHkgZGVzaWduZWQgZmlsZSB0bwotICogIGNhdXNlIGFuIGFib3J0KCkgb3Igc2VnLWZhdWx0LCBz
byB0aGVzZSBtYWNyb3MgYXJlIHVzZWQgb25seQotICogIGZvciBwcmUtY29uZGl0aW9uIHZpb2xh
dGlvbnMgYW5kIGludGVybmFsIGxvZ2ljIGVycm9ycy4KLSAqLwotI2lmIEpTT05fVVNFX0VYQ0VQ
VElPTgotCi0vLyBAdG9kbyA8PSBhZGQgZGV0YWlsIGFib3V0IGNvbmRpdGlvbiBpbiBleGNlcHRp
b24KLSNkZWZpbmUgSlNPTl9BU1NFUlQoY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IGlmICghKGNvbmRpdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIEpzb246OnRocm93TG9naWNFcnJvcigiYXNzZXJ0
IGpzb24gZmFpbGVkIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICB9Ci0KLSNkZWZpbmUgSlNPTl9GQUlMX01FU1NBR0UobWVzc2FnZSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIE9TdHJpbmdTdHJlYW0gb3NzOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvc3MgPDwgbWVzc2Fn
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgSnNvbjo6dGhyb3dMb2dpY0Vycm9yKG9zcy5zdHIoKSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGFib3J0KCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgfQotCi0jZWxzZSAvLyBKU09OX1VTRV9FWENFUFRJT04KLQotI2RlZmluZSBKU09OX0FTU0VS
VChjb25kaXRpb24pIGFzc2VydChjb25kaXRpb24pCi0KLS8vIFRoZSBjYWxsIHRvIGFzc2VydCgp
IHdpbGwgc2hvdyB0aGUgZmFpbHVyZSBtZXNzYWdlIGluIGRlYnVnIGJ1aWxkcy4gSW4KLS8vIHJl
bGVhc2UgYnVpbGRzIHdlIGFib3J0LCBmb3IgYSBjb3JlLWR1bXAgb3IgZGVidWdnZXIuCi0jZGVm
aW5lIEpTT05fRkFJTF9NRVNTQUdFKG1lc3NhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBPU3RyaW5n
U3RyZWFtIG9zczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgb3NzIDw8IG1lc3NhZ2U7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGFzc2VydChmYWxzZSAm
JiBvc3Muc3RyKCkuY19zdHIoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBhYm9ydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotI2VuZGlmCi0KLSNkZWZpbmUg
SlNPTl9BU1NFUlRfTUVTU0FHRShjb25kaXRpb24sIG1lc3NhZ2UpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gIGlmICghKGNvbmRpdGlvbikpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEpTT05fRkFJTF9N
RVNTQUdFKG1lc3NhZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgfQotCi0jZW5kaWYgLy8gQ1BQVExfSlNPTl9BU1NFUlRJT05TX0hfSU5DTFVE
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2F1dG9saW5rLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1
ZGUvanNvbi9hdXRvbGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmMwZjAw
MjRmYzgzZWZiMTZlOWZjNDY2NGVhM2YyYWZlM2U4NWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2F1dG9saW5rLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRp
c3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5k
ZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29n
bml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRh
aWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0j
aWZuZGVmIEpTT05fQVVUT0xJTktfSF9JTkNMVURFRAotI2RlZmluZSBKU09OX0FVVE9MSU5LX0hf
SU5DTFVERUQKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWZkZWYgSlNPTl9JTl9DUFBUTAot
I2luY2x1ZGUgPGNwcHRsL2NwcHRsX2F1dG9saW5rLmg+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVk
KEpTT05fTk9fQVVUT0xJTkspICYmICFkZWZpbmVkKEpTT05fRExMX0JVSUxEKSAmJiAgICAgICAg
ICAgICAgICAgIFwKLSAgICAhZGVmaW5lZChKU09OX0lOX0NQUFRMKQotI2RlZmluZSBDUFBUTF9B
VVRPTElOS19OQU1FICJqc29uIgotI3VuZGVmIENQUFRMX0FVVE9MSU5LX0RMTAotI2lmZGVmIEpT
T05fRExMCi0jZGVmaW5lIENQUFRMX0FVVE9MSU5LX0RMTAotI2VuZGlmCi0jaW5jbHVkZSAiYXV0
b2xpbmsuaCIKLSNlbmRpZgotCi0jZW5kaWYgLy8gSlNPTl9BVVRPTElOS19IX0lOQ0xVREVECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9jb25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29u
L2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzI0YWQ5NWEwZTgzMmY2
MjVkMDI2MzVhODY4MTZjM2EyNjk1ZWIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2NvbmZpZy5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTgwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVwaWxs
ZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGlj
ZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5
b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5
IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZm5kZWYgSlNP
Tl9DT05GSUdfSF9JTkNMVURFRAotI2RlZmluZSBKU09OX0NPTkZJR19IX0lOQ0xVREVECi0jaW5j
bHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPGlzdHJlYW0+Ci0j
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPG9zdHJlYW0+Ci0jaW5jbHVkZSA8c3N0cmVhbT4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0KLS8vLyBJZiBkZWZp
bmVkLCBpbmRpY2F0ZXMgdGhhdCBqc29uIGxpYnJhcnkgaXMgZW1iZWRkZWQgaW4gQ3BwVEwgbGli
cmFyeS4KLS8vIyBkZWZpbmUgSlNPTl9JTl9DUFBUTCAxCi0KLS8vLyBJZiBkZWZpbmVkLCBpbmRp
Y2F0ZXMgdGhhdCBqc29uIG1heSBsZXZlcmFnZSBDcHBUTCBsaWJyYXJ5Ci0vLyMgIGRlZmluZSBK
U09OX1VTRV9DUFBUTCAxCi0vLy8gSWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRoYXQgY3BwdGwgdmVj
dG9yIGJhc2VkIG1hcCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mCi0vLy8gc3RkOjptYXAKLS8v
LyBhcyBWYWx1ZSBjb250YWluZXIuCi0vLyMgIGRlZmluZSBKU09OX1VTRV9DUFBUTF9TTUFMTE1B
UCAxCi0KLS8vIElmIG5vbi16ZXJvLCB0aGUgbGlicmFyeSB1c2VzIGV4Y2VwdGlvbnMgdG8gcmVw
b3J0IGJhZCBpbnB1dCBpbnN0ZWFkIG9mIEMKLS8vIGFzc2VydGlvbiBtYWNyb3MuIFRoZSBkZWZh
dWx0IGlzIHRvIHVzZSBleGNlcHRpb25zLgotI2lmbmRlZiBKU09OX1VTRV9FWENFUFRJT04KLSNk
ZWZpbmUgSlNPTl9VU0VfRVhDRVBUSU9OIDEKLSNlbmRpZgotCi0vLyBUZW1wb3JhcnksIHRyYWNr
ZWQgZm9yIHJlbW92YWwgd2l0aCBpc3N1ZSAjOTgyLgotI2lmbmRlZiBKU09OX1VTRV9OVUxMUkVG
Ci0jZGVmaW5lIEpTT05fVVNFX05VTExSRUYgMQotI2VuZGlmCi0KLS8vLyBJZiBkZWZpbmVkLCBp
bmRpY2F0ZXMgdGhhdCB0aGUgc291cmNlIGZpbGUgaXMgYW1hbGdhbWF0ZWQKLS8vLyB0byBwcmV2
ZW50IHByaXZhdGUgaGVhZGVyIGluY2x1c2lvbi4KLS8vLyBSZW1hcmtzOiBpdCBpcyBhdXRvbWF0
aWNhbGx5IGRlZmluZWQgaW4gdGhlIGdlbmVyYXRlZCBhbWFsZ2FtYXRlZCBoZWFkZXIuCi0vLyAj
ZGVmaW5lIEpTT05fSVNfQU1BTEdBTUFUSU9OCi0KLSNpZmRlZiBKU09OX0lOX0NQUFRMCi0jaW5j
bHVkZSA8Y3BwdGwvY29uZmlnLmg+Ci0jaWZuZGVmIEpTT05fVVNFX0NQUFRMCi0jZGVmaW5lIEpT
T05fVVNFX0NQUFRMIDEKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBKU09OX0lOX0NQUFRMCi0j
ZGVmaW5lIEpTT05fQVBJIENQUFRMX0FQSQotI2VsaWYgZGVmaW5lZChKU09OX0RMTF9CVUlMRCkK
LSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQotI2RlZmluZSBK
U09OX0FQSSBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNkZWZpbmUgSlNPTkNQUF9ESVNBQkxFX0RM
TF9JTlRFUkZBQ0VfV0FSTklORwotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChf
X2NsYW5nX18pCi0jZGVmaW5lIEpTT05fQVBJIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRl
ZmF1bHQiKSkpCi0jZW5kaWYgLy8gaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNlbGlmIGRlZmluZWQo
SlNPTl9ETEwpCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX01JTkdXMzJfXykK
LSNkZWZpbmUgSlNPTl9BUEkgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZGVmaW5lIEpTT05DUFBf
RElTQUJMRV9ETExfSU5URVJGQUNFX1dBUk5JTkcKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKF9NU0Nf
VkVSKQotI2VuZGlmIC8vIGlmZGVmIEpTT05fSU5fQ1BQVEwKLSNpZiAhZGVmaW5lZChKU09OX0FQ
SSkKLSNkZWZpbmUgSlNPTl9BUEkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPCAxODAwCi0jZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICJFUlJPUjogIFZp
c3VhbCBTdHVkaW8gMTIgKDIwMTMpIHdpdGggX01TQ19WRVI9MTgwMCBpcyB0aGUgb2xkZXN0IHN1
cHBvcnRlZCBjb21waWxlciB3aXRoIHN1ZmZpY2llbnQgQysrMTEgY2FwYWJpbGl0aWVzIgotI2Vu
ZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8vIEFzIHJl
Y29tbWVuZGVkIGF0Ci0vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yOTE1
NjcyL3NucHJpbnRmLWFuZC12aXN1YWwtc3R1ZGlvLTIwMTAKLWV4dGVybiBKU09OX0FQSSBpbnQK
LW1zdmNfcHJlMTkwMF9jOTlfc25wcmludGYoY2hhciogb3V0QnVmLCBzaXplX3Qgc2l6ZSwgY29u
c3QgY2hhciogZm9ybWF0LCAuLi4pOwotI2RlZmluZSBqc29uY3BwX3NucHJpbnRmIG1zdmNfcHJl
MTkwMF9jOTlfc25wcmludGYKLSNlbHNlCi0jZGVmaW5lIGpzb25jcHBfc25wcmludGYgc3RkOjpz
bnByaW50ZgotI2VuZGlmCi0KLS8vIElmIEpTT05fTk9fSU5UNjQgaXMgZGVmaW5lZCwgdGhlbiBK
c29uIG9ubHkgc3VwcG9ydCBDKysgImludCIgdHlwZSBmb3IKLS8vIGludGVnZXIKLS8vIFN0b3Jh
Z2VzLCBhbmQgNjQgYml0cyBpbnRlZ2VyIHN1cHBvcnQgaXMgZGlzYWJsZWQuCi0vLyAjZGVmaW5l
IEpTT05fTk9fSU5UNjQgMQotCi0vLyBKU09OQ1BQX09WRVJSSURFIGlzIG1haW50YWluZWQgZm9y
IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9mIGV4dGVybmFsIHRvb2xzLgotLy8gQysrMTEgc2hv
dWxkIGJlIHVzZWQgZGlyZWN0bHkgaW4gSlNPTkNQUC4KLSNkZWZpbmUgSlNPTkNQUF9PVkVSUklE
RSBvdmVycmlkZQotCi0jaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAotI2RlZmluZSBKU09OQ1BQ
X05PRVhDRVBUIG5vZXhjZXB0Ci0jZGVmaW5lIEpTT05DUFBfT1BfRVhQTElDSVQgZXhwbGljaXQK
LSNlbGlmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkwMAotI2RlZmluZSBKU09O
Q1BQX05PRVhDRVBUIHRocm93KCkKLSNkZWZpbmUgSlNPTkNQUF9PUF9FWFBMSUNJVCBleHBsaWNp
dAotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkwMAotI2RlZmluZSBK
U09OQ1BQX05PRVhDRVBUIG5vZXhjZXB0Ci0jZGVmaW5lIEpTT05DUFBfT1BfRVhQTElDSVQgZXhw
bGljaXQKLSNlbHNlCi0jZGVmaW5lIEpTT05DUFBfTk9FWENFUFQgdGhyb3coKQotI2RlZmluZSBK
U09OQ1BQX09QX0VYUExJQ0lUCi0jZW5kaWYKLQotI2lmZGVmIF9fY2xhbmdfXwotI2lmIF9faGFz
X2V4dGVuc2lvbihhdHRyaWJ1dGVfZGVwcmVjYXRlZF93aXRoX21lc3NhZ2UpCi0jZGVmaW5lIEpT
T05DUFBfREVQUkVDQVRFRChtZXNzYWdlKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNhdGVkKG1lc3Nh
Z2UpKSkKLSNlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0dOVUNfXyAvLyBub3QgY2xhbmcgKGdjYyBj
b21lcyBsYXRlciBzaW5jZSBjbGFuZyBlbXVsYXRlcyBnY2MpCi0jaWYgKF9fR05VQ19fID4gNCB8
fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA1KSkKLSNkZWZpbmUgSlNPTkNQ
UF9ERVBSRUNBVEVEKG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQobWVzc2FnZSkp
KQotI2VsaWYgKF9fR05VQ19fID4gMyB8fCAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1Jf
XyA+PSAxKSkKLSNkZWZpbmUgSlNPTkNQUF9ERVBSRUNBVEVEKG1lc3NhZ2UpIF9fYXR0cmlidXRl
X18oKF9fZGVwcmVjYXRlZF9fKSkKLSNlbmRpZiAgICAgICAgICAgICAgICAgIC8vIEdOVUMgdmVy
c2lvbgotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikgLy8gTVNWQyAoYWZ0ZXIgY2xhbmcgYmVjYXVz
ZSBjbGFuZyBvbiBXaW5kb3dzIGVtdWxhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBN
U1ZDKQotI2RlZmluZSBKU09OQ1BQX0RFUFJFQ0FURUQobWVzc2FnZSkgX19kZWNsc3BlYyhkZXBy
ZWNhdGVkKG1lc3NhZ2UpKQotI2VuZGlmIC8vIF9fY2xhbmdfXyB8fCBfX0dOVUNfXyB8fCBfTVND
X1ZFUgotCi0jaWYgIWRlZmluZWQoSlNPTkNQUF9ERVBSRUNBVEVEKQotI2RlZmluZSBKU09OQ1BQ
X0RFUFJFQ0FURUQobWVzc2FnZSkKLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OQ1BQX0RFUFJF
Q0FURUQpCi0KLSNpZiBfX0dOVUNfXyA+PSA2Ci0jZGVmaW5lIEpTT05fVVNFX0lOVDY0X0RPVUJM
RV9DT05WRVJTSU9OIDEKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJ
T04pCi0KLSNpbmNsdWRlICJhbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0KLSNl
bmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLQotbmFtZXNwYWNlIEpz
b24gewotdHlwZWRlZiBpbnQgSW50OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUludDsKLSNpZiBk
ZWZpbmVkKEpTT05fTk9fSU5UNjQpCi10eXBlZGVmIGludCBMYXJnZXN0SW50OwotdHlwZWRlZiB1
bnNpZ25lZCBpbnQgTGFyZ2VzdFVJbnQ7Ci0jdW5kZWYgSlNPTl9IQVNfSU5UNjQKLSNlbHNlICAg
ICAgICAgICAgICAgICAvLyBpZiBkZWZpbmVkKEpTT05fTk9fSU5UNjQpCi0vLyBGb3IgTWljcm9z
b2Z0IFZpc3VhbCB1c2Ugc3BlY2lmaWMgdHlwZXMgYXMgbG9uZyBsb25nIGlzIG5vdCBzdXBwb3J0
ZWQKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAvLyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbwotdHlw
ZWRlZiBfX2ludDY0IEludDY0OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IFVJbnQ2NDsKLSNl
bHNlICAgICAgICAgICAgICAgICAvLyBpZiBkZWZpbmVkKF9NU0NfVkVSKSAvLyBPdGhlciBwbGF0
Zm9ybXMsIHVzZSBsb25nIGxvbmcKLXR5cGVkZWYgaW50NjRfdCBJbnQ2NDsKLXR5cGVkZWYgdWlu
dDY0X3QgVUludDY0OwotI2VuZGlmICAgICAgICAgICAgICAgIC8vIGlmIGRlZmluZWQoX01TQ19W
RVIpCi10eXBlZGVmIEludDY0IExhcmdlc3RJbnQ7Ci10eXBlZGVmIFVJbnQ2NCBMYXJnZXN0VUlu
dDsKLSNkZWZpbmUgSlNPTl9IQVNfSU5UNjQKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKEpTT05fTk9f
SU5UNjQpCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdXNpbmcgQWxsb2NhdG9yID0gdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDxKU09OQ1BQX1VTSU5HX1NFQ1VSRV9NRU1PUlksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyZUFsbG9jYXRvcjxUPiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphbGxvY2F0
b3I8VD4+Ojp0eXBlOwotdXNpbmcgU3RyaW5nID0gc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3Rk
OjpjaGFyX3RyYWl0czxjaGFyPiwgQWxsb2NhdG9yPGNoYXI+PjsKLXVzaW5nIElTdHJpbmdTdHJl
YW0gPSBzdGQ6OmJhc2ljX2lzdHJpbmdzdHJlYW08U3RyaW5nOjp2YWx1ZV90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OnRyYWl0c190
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJp
bmc6OmFsbG9jYXRvcl90eXBlPjsKLXVzaW5nIE9TdHJpbmdTdHJlYW0gPSBzdGQ6OmJhc2ljX29z
dHJpbmdzdHJlYW08U3RyaW5nOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OnRyYWl0c190eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OmFsbG9jYXRvcl90eXBl
PjsKLXVzaW5nIElTdHJlYW0gPSBzdGQ6OmlzdHJlYW07Ci11c2luZyBPU3RyZWFtID0gc3RkOjpv
c3RyZWFtOwotfSAvLyBuYW1lc3BhY2UgSnNvbgotCi0vLyBMZWdhY3kgbmFtZXMgKGZvcm1lcmx5
IG1hY3JvcykuCi11c2luZyBKU09OQ1BQX1NUUklORyA9IEpzb246OlN0cmluZzsKLXVzaW5nIEpT
T05DUFBfSVNUUklOR1NUUkVBTSA9IEpzb246OklTdHJpbmdTdHJlYW07Ci11c2luZyBKU09OQ1BQ
X09TVFJJTkdTVFJFQU0gPSBKc29uOjpPU3RyaW5nU3RyZWFtOwotdXNpbmcgSlNPTkNQUF9JU1RS
RUFNID0gSnNvbjo6SVN0cmVhbTsKLXVzaW5nIEpTT05DUFBfT1NUUkVBTSA9IEpzb246Ok9TdHJl
YW07Ci0KLSNlbmRpZiAvLyBKU09OX0NPTkZJR19IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vZmVhdHVyZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyNWU4ZGE2NDZhMDQzZjFjODk3NGZhYmU2
MjA1Njc3NDMzNmY3NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRo
ZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBw
dWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNk
aWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDov
L2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBDUFBUTF9KU09OX0ZF
QVRVUkVTX0hfSU5DTFVERUQKLSNkZWZpbmUgQ1BQVExfSlNPTl9GRUFUVVJFU19IX0lOQ0xVREVE
Ci0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlICJmb3J3YXJk
cy5oIgotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotCi0jcHJh
Z21hIHBhY2socHVzaCwgOCkKLQotbmFtZXNwYWNlIEpzb24gewotCi0vKiogXGJyaWVmIENvbmZp
Z3VyYXRpb24gcGFzc2VkIHRvIHJlYWRlciBhbmQgd3JpdGVyLgotICogVGhpcyBjb25maWd1cmF0
aW9uIG9iamVjdCBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgUmVhZGVyIG9yIFdyaXRlcgotICog
dG8gYmVoYXZlIGluIGEgc3RhbmRhcmQgY29uZm9ybWluZyB3YXkuCi0gKi8KLWNsYXNzIEpTT05f
QVBJIEZlYXR1cmVzIHsKLXB1YmxpYzoKLSAgLyoqIFxicmllZiBBIGNvbmZpZ3VyYXRpb24gdGhh
dCBhbGxvd3MgYWxsIGZlYXR1cmVzIGFuZCBhc3N1bWVzIGFsbCBzdHJpbmdzCi0gICAqIGFyZSBV
VEYtOC4KLSAgICogLSBDICYgQysrIGNvbW1lbnRzIGFyZSBhbGxvd2VkCi0gICAqIC0gUm9vdCBv
YmplY3QgY2FuIGJlIGFueSBKU09OIHZhbHVlCi0gICAqIC0gQXNzdW1lcyBWYWx1ZSBzdHJpbmdz
IGFyZSBlbmNvZGVkIGluIFVURi04Ci0gICAqLwotICBzdGF0aWMgRmVhdHVyZXMgYWxsKCk7Ci0K
LSAgLyoqIFxicmllZiBBIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBzdHJpY3RseSBjb21wYXRpYmxl
IHdpdGggdGhlIEpTT04KLSAgICogc3BlY2lmaWNhdGlvbi4KLSAgICogLSBDb21tZW50cyBhcmUg
Zm9yYmlkZGVuLgotICAgKiAtIFJvb3Qgb2JqZWN0IG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9y
IGFuIG9iamVjdCB2YWx1ZS4KLSAgICogLSBBc3N1bWVzIFZhbHVlIHN0cmluZ3MgYXJlIGVuY29k
ZWQgaW4gVVRGLTgKLSAgICovCi0gIHN0YXRpYyBGZWF0dXJlcyBzdHJpY3RNb2RlKCk7Ci0KLSAg
LyoqIFxicmllZiBJbml0aWFsaXplIHRoZSBjb25maWd1cmF0aW9uIGxpa2UgSnNvbkNvbmZpZzo6
YWxsRmVhdHVyZXM7Ci0gICAqLwotICBGZWF0dXJlcygpOwotCi0gIC8vLyBcYyB0cnVlIGlmIGNv
bW1lbnRzIGFyZSBhbGxvd2VkLiBEZWZhdWx0OiBcYyB0cnVlLgotICBib29sIGFsbG93Q29tbWVu
dHNfe3RydWV9OwotCi0gIC8vLyBcYyB0cnVlIGlmIHJvb3QgbXVzdCBiZSBlaXRoZXIgYW4gYXJy
YXkgb3IgYW4gb2JqZWN0IHZhbHVlLiBEZWZhdWx0OiBcYwotICAvLy8gZmFsc2UuCi0gIGJvb2wg
c3RyaWN0Um9vdF97ZmFsc2V9OwotCi0gIC8vLyBcYyB0cnVlIGlmIGRyb3BwZWQgbnVsbCBwbGFj
ZWhvbGRlcnMgYXJlIGFsbG93ZWQuIERlZmF1bHQ6IFxjIGZhbHNlLgotICBib29sIGFsbG93RHJv
cHBlZE51bGxQbGFjZWhvbGRlcnNfe2ZhbHNlfTsKLQotICAvLy8gXGMgdHJ1ZSBpZiBudW1lcmlj
IG9iamVjdCBrZXkgYXJlIGFsbG93ZWQuIERlZmF1bHQ6IFxjIGZhbHNlLgotICBib29sIGFsbG93
TnVtZXJpY0tleXNfe2ZhbHNlfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KLQotI3ByYWdt
YSBwYWNrKHBvcCkKLQotI2VuZGlmIC8vIENQUFRMX0pTT05fRkVBVFVSRVNfSF9JTkNMVURFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vZm9yd2FyZHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9q
c29uL2ZvcndhcmRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OGI1YmNjODAz
NDhhMmIyNzc1ZmY4NWZmNjUxMjU2YzM4MTZlNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vZm9yd2FyZHMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUg
TGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBN
SVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXpl
ZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBv
ciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZm5k
ZWYgSlNPTl9GT1JXQVJEU19IX0lOQ0xVREVECi0jZGVmaW5lIEpTT05fRk9SV0FSRFNfSF9JTkNM
VURFRAotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0KLW5h
bWVzcGFjZSBKc29uIHsKLQotLy8gd3JpdGVyLmgKLWNsYXNzIFN0cmVhbVdyaXRlcjsKLWNsYXNz
IFN0cmVhbVdyaXRlckJ1aWxkZXI7Ci1jbGFzcyBXcml0ZXI7Ci1jbGFzcyBGYXN0V3JpdGVyOwot
Y2xhc3MgU3R5bGVkV3JpdGVyOwotY2xhc3MgU3R5bGVkU3RyZWFtV3JpdGVyOwotCi0vLyByZWFk
ZXIuaAotY2xhc3MgUmVhZGVyOwotY2xhc3MgQ2hhclJlYWRlcjsKLWNsYXNzIENoYXJSZWFkZXJC
dWlsZGVyOwotCi0vLyBmZWF0dXJlcy5oCi1jbGFzcyBGZWF0dXJlczsKLQotLy8gdmFsdWUuaAot
dHlwZWRlZiB1bnNpZ25lZCBpbnQgQXJyYXlJbmRleDsKLWNsYXNzIFN0YXRpY1N0cmluZzsKLWNs
YXNzIFBhdGg7Ci1jbGFzcyBQYXRoQXJndW1lbnQ7Ci1jbGFzcyBWYWx1ZTsKLWNsYXNzIFZhbHVl
SXRlcmF0b3JCYXNlOwotY2xhc3MgVmFsdWVJdGVyYXRvcjsKLWNsYXNzIFZhbHVlQ29uc3RJdGVy
YXRvcjsKLQotfSAvLyBuYW1lc3BhY2UgSnNvbgotCi0jZW5kaWYgLy8gSlNPTl9GT1JXQVJEU19I
X0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9qc29uLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2lu
Y2x1ZGUvanNvbi9qc29uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjE0YzI2
NjRhNmZkZmNkNzEyYTU4N2EwOWJlYjhkMTIwNzAyOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vanNvbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBM
ZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1J
VCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVk
IGluIHlvdXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9y
IGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRl
ZiBKU09OX0pTT05fSF9JTkNMVURFRAotI2RlZmluZSBKU09OX0pTT05fSF9JTkNMVURFRAotCi0j
aW5jbHVkZSAiYXV0b2xpbmsuaCIKLSNpbmNsdWRlICJmZWF0dXJlcy5oIgotI2luY2x1ZGUgInJl
YWRlci5oIgotI2luY2x1ZGUgInZhbHVlLmgiCi0jaW5jbHVkZSAid3JpdGVyLmgiCi0KLSNlbmRp
ZiAvLyBKU09OX0pTT05fSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24v
cmVhZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9yZWFkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGY0ODlkNmFkYjFiMDdkOTlkOGJmNzlhYmE4M2FmMzAxMmEwMjdlMy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUv
anNvbi9yZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxNyArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwot
Ly8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVz
aXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmls
ZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3Jn
ZS5uZXQvTElDRU5TRQotCi0jaWZuZGVmIENQUFRMX0pTT05fUkVBREVSX0hfSU5DTFVERUQKLSNk
ZWZpbmUgQ1BQVExfSlNPTl9SRUFERVJfSF9JTkNMVURFRAotCi0jaWYgIWRlZmluZWQoSlNPTl9J
U19BTUFMR0FNQVRJT04pCi0jaW5jbHVkZSAiZmVhdHVyZXMuaCIKLSNpbmNsdWRlICJ2YWx1ZS5o
IgotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUg
PGRlcXVlPgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUg
PHN0YWNrPgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy8gRGlzYWJsZSB3YXJuaW5nIEM0MjUxOiA8
ZGF0YSBtZW1iZXI+OiA8dHlwZT4gbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvCi0vLyBi
ZSB1c2VkIGJ5Li4uCi0jaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9X
QVJOSU5HKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6
IDQyNTEpCi0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFD
RV9XQVJOSU5HKQotCi0jcHJhZ21hIHBhY2socHVzaCwgOCkKLQotbmFtZXNwYWNlIEpzb24gewot
Ci0vKiogXGJyaWVmIFVuc2VyaWFsaXplIGEgPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+
SlNPTjwvYT4gZG9jdW1lbnQgaW50byBhCi0gKlZhbHVlLgotICoKLSAqIFxkZXByZWNhdGVkIFVz
ZSBDaGFyUmVhZGVyIGFuZCBDaGFyUmVhZGVyQnVpbGRlci4KLSAqLwotY2xhc3MgSlNPTl9BUEkg
UmVhZGVyIHsKLXB1YmxpYzoKLSAgdHlwZWRlZiBjaGFyIENoYXI7Ci0gIHR5cGVkZWYgY29uc3Qg
Q2hhciogTG9jYXRpb247Ci0KLSAgLyoqIFxicmllZiBBbiBlcnJvciB0YWdnZWQgd2l0aCB3aGVy
ZSBpbiB0aGUgSlNPTiB0ZXh0IGl0IHdhcyBlbmNvdW50ZXJlZC4KLSAgICoKLSAgICogVGhlIG9m
ZnNldHMgZ2l2ZSB0aGUgW3N0YXJ0LCBsaW1pdCkgcmFuZ2Ugb2YgYnl0ZXMgd2l0aGluIHRoZSB0
ZXh0LiBOb3RlCi0gICAqIHRoYXQgdGhpcyBpcyBieXRlcywgbm90IGNvZGVwb2ludHMuCi0gICAq
Ci0gICAqLwotICBzdHJ1Y3QgU3RydWN0dXJlZEVycm9yIHsKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0
X3N0YXJ0OwotICAgIHB0cmRpZmZfdCBvZmZzZXRfbGltaXQ7Ci0gICAgU3RyaW5nIG1lc3NhZ2U7
Ci0gIH07Ci0KLSAgLyoqIFxicmllZiBDb25zdHJ1Y3RzIGEgUmVhZGVyIGFsbG93aW5nIGFsbCBm
ZWF0dXJlcwotICAgKiBmb3IgcGFyc2luZy4KLSAgICovCi0gIEpTT05DUFBfREVQUkVDQVRFRCgi
VXNlIENoYXJSZWFkZXIgYW5kIENoYXJSZWFkZXJCdWlsZGVyIGluc3RlYWQiKQotICBSZWFkZXIo
KTsKLQotICAvKiogXGJyaWVmIENvbnN0cnVjdHMgYSBSZWFkZXIgYWxsb3dpbmcgdGhlIHNwZWNp
ZmllZCBmZWF0dXJlIHNldAotICAgKiBmb3IgcGFyc2luZy4KLSAgICovCi0gIEpTT05DUFBfREVQ
UkVDQVRFRCgiVXNlIENoYXJSZWFkZXIgYW5kIENoYXJSZWFkZXJCdWlsZGVyIGluc3RlYWQiKQot
ICBSZWFkZXIoY29uc3QgRmVhdHVyZXMmIGZlYXR1cmVzKTsKLQotICAvKiogXGJyaWVmIFJlYWQg
YSBWYWx1ZSBmcm9tIGEgPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNPTjwvYT4KLSAg
ICogZG9jdW1lbnQuCi0gICAqIFxwYXJhbSBkb2N1bWVudCBVVEYtOCBlbmNvZGVkIHN0cmluZyBj
b250YWluaW5nIHRoZSBkb2N1bWVudCB0byByZWFkLgotICAgKiBccGFyYW0gcm9vdCBbb3V0XSBD
b250YWlucyB0aGUgcm9vdCB2YWx1ZSBvZiB0aGUgZG9jdW1lbnQgaWYgaXQgd2FzCi0gICAqICAg
ICAgICAgICAgIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAqIFxwYXJhbSBjb2xsZWN0Q29tbWVu
dHMgXGMgdHJ1ZSB0byBjb2xsZWN0IGNvbW1lbnQgYW5kIGFsbG93IHdyaXRpbmcgdGhlbQotICAg
KiBiYWNrIGR1cmluZwotICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24s
IFxjIGZhbHNlIHRvIGRpc2NhcmQgY29tbWVudHMuCi0gICAqICAgICAgICAgICAgICAgICAgICAg
ICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBpZgotICAgKiBGZWF0dXJlczo6YWxsb3dDb21t
ZW50c18KLSAgICogICAgICAgICAgICAgICAgICAgICAgICBpcyBcYyBmYWxzZS4KLSAgICogXHJl
dHVybiBcYyB0cnVlIGlmIHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgXGMg
ZmFsc2UgaWYgYW4KLSAgICogZXJyb3Igb2NjdXJyZWQuCi0gICAqLwotICBib29sCi0gIHBhcnNl
KGNvbnN0IHN0ZDo6c3RyaW5nJiBkb2N1bWVudCwgVmFsdWUmIHJvb3QsIGJvb2wgY29sbGVjdENv
bW1lbnRzID0gdHJ1ZSk7Ci0KLSAgLyoqIFxicmllZiBSZWFkIGEgVmFsdWUgZnJvbSBhIDxhIEhS
RUY9Imh0dHA6Ly93d3cuanNvbi5vcmciPkpTT048L2E+Ci0gICBkb2N1bWVudC4KLSAgICogXHBh
cmFtIGJlZ2luRG9jIFBvaW50ZXIgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUgVVRGLTggZW5jb2Rl
ZCBzdHJpbmcgb2YgdGhlCi0gICBkb2N1bWVudCB0byByZWFkLgotICAgKiBccGFyYW0gZW5kRG9j
IFBvaW50ZXIgb24gdGhlIGVuZCBvZiB0aGUgVVRGLTggZW5jb2RlZCBzdHJpbmcgb2YgdGhlCi0g
ICBkb2N1bWVudCB0byByZWFkLgotICAgKiAgICAgICAgICAgICAgIE11c3QgYmUgPj0gYmVnaW5E
b2MuCi0gICAqIFxwYXJhbSByb290IFtvdXRdIENvbnRhaW5zIHRoZSByb290IHZhbHVlIG9mIHRo
ZSBkb2N1bWVudCBpZiBpdCB3YXMKLSAgICogICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZC4KLSAgICogXHBhcmFtIGNvbGxlY3RDb21tZW50cyBcYyB0cnVlIHRvIGNvbGxlY3QgY29tbWVu
dCBhbmQgYWxsb3cgd3JpdGluZyB0aGVtCi0gICBiYWNrIGR1cmluZwotICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24sIFxjIGZhbHNlIHRvIGRpc2NhcmQgY29tbWVudHMu
Ci0gICAqICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBp
ZgotICAgRmVhdHVyZXM6OmFsbG93Q29tbWVudHNfCi0gICAqICAgICAgICAgICAgICAgICAgICAg
ICAgaXMgXGMgZmFsc2UuCi0gICAqIFxyZXR1cm4gXGMgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2Fz
IHN1Y2Nlc3NmdWxseSBwYXJzZWQsIFxjIGZhbHNlIGlmIGFuCi0gICBlcnJvciBvY2N1cnJlZC4K
LSAgICovCi0gIGJvb2wgcGFyc2UoY29uc3QgY2hhciogYmVnaW5Eb2MsCi0gICAgICAgICAgICAg
Y29uc3QgY2hhciogZW5kRG9jLAotICAgICAgICAgICAgIFZhbHVlJiByb290LAotICAgICAgICAg
ICAgIGJvb2wgY29sbGVjdENvbW1lbnRzID0gdHJ1ZSk7Ci0KLSAgLy8vIFxicmllZiBQYXJzZSBm
cm9tIGlucHV0IHN0cmVhbS4KLSAgLy8vIFxzZWUgSnNvbjo6b3BlcmF0b3I+PihzdGQ6OmlzdHJl
YW0mLCBKc29uOjpWYWx1ZSYpLgotICBib29sIHBhcnNlKElTdHJlYW0mIGlzLCBWYWx1ZSYgcm9v
dCwgYm9vbCBjb2xsZWN0Q29tbWVudHMgPSB0cnVlKTsKLQotICAvKiogXGJyaWVmIFJldHVybnMg
YSB1c2VyIGZyaWVuZGx5IHN0cmluZyB0aGF0IGxpc3QgZXJyb3JzIGluIHRoZSBwYXJzZWQKLSAg
ICogZG9jdW1lbnQuCi0gICAqIFxyZXR1cm4gRm9ybWF0dGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCB0
aGUgbGlzdCBvZiBlcnJvcnMgd2l0aCB0aGVpciBsb2NhdGlvbgotICAgKiBpbgotICAgKiAgICAg
ICAgIHRoZSBwYXJzZWQgZG9jdW1lbnQuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiBu
byBlcnJvcgotICAgKiBvY2N1cnJlZAotICAgKiAgICAgICAgIGR1cmluZyBwYXJzaW5nLgotICAg
KiBcZGVwcmVjYXRlZCBVc2UgZ2V0Rm9ybWF0dGVkRXJyb3JNZXNzYWdlcygpIGluc3RlYWQgKHR5
cG8gZml4KS4KLSAgICovCi0gIEpTT05DUFBfREVQUkVDQVRFRCgiVXNlIGdldEZvcm1hdHRlZEVy
cm9yTWVzc2FnZXMoKSBpbnN0ZWFkLiIpCi0gIFN0cmluZyBnZXRGb3JtYXRlZEVycm9yTWVzc2Fn
ZXMoKSBjb25zdDsKLQotICAvKiogXGJyaWVmIFJldHVybnMgYSB1c2VyIGZyaWVuZGx5IHN0cmlu
ZyB0aGF0IGxpc3QgZXJyb3JzIGluIHRoZSBwYXJzZWQKLSAgICogZG9jdW1lbnQuCi0gICAqIFxy
ZXR1cm4gRm9ybWF0dGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMgd2l0
aCB0aGVpciBsb2NhdGlvbgotICAgKiBpbgotICAgKiAgICAgICAgIHRoZSBwYXJzZWQgZG9jdW1l
bnQuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiBubyBlcnJvcgotICAgKiBvY2N1cnJl
ZAotICAgKiAgICAgICAgIGR1cmluZyBwYXJzaW5nLgotICAgKi8KLSAgU3RyaW5nIGdldEZvcm1h
dHRlZEVycm9yTWVzc2FnZXMoKSBjb25zdDsKLQotICAvKiogXGJyaWVmIFJldHVybnMgYSB2ZWN0
b3Igb2Ygc3RydWN0dXJlZCBlcnJvcyBlbmNvdW50ZWQgd2hpbGUgcGFyc2luZy4KLSAgICogXHJl
dHVybiBBIChwb3NzaWJseSBlbXB0eSkgdmVjdG9yIG9mIFN0cnVjdHVyZWRFcnJvciBvYmplY3Rz
LiBDdXJyZW50bHkKLSAgICogICAgICAgICBvbmx5IG9uZSBlcnJvciBjYW4gYmUgcmV0dXJuZWQs
IGJ1dCB0aGUgY2FsbGVyIHNob3VsZCB0b2xlcmF0ZQotICAgKiBtdWx0aXBsZQotICAgKiAgICAg
ICAgIGVycm9ycy4gIFRoaXMgY2FuIG9jY3VyIGlmIHRoZSBwYXJzZXIgcmVjb3ZlcnMgZnJvbSBh
IG5vbi1mYXRhbAotICAgKiAgICAgICAgIHBhcnNlIGVycm9yIGFuZCB0aGVuIGVuY291bnRlcnMg
YWRkaXRpb25hbCBlcnJvcnMuCi0gICAqLwotICBzdGQ6OnZlY3RvcjxTdHJ1Y3R1cmVkRXJyb3I+
IGdldFN0cnVjdHVyZWRFcnJvcnMoKSBjb25zdDsKLQotICAvKiogXGJyaWVmIEFkZCBhIHNlbWFu
dGljIGVycm9yIG1lc3NhZ2UuCi0gICAqIFxwYXJhbSB2YWx1ZSBKU09OIFZhbHVlIGxvY2F0aW9u
IGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3IKLSAgICogXHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9y
IG1lc3NhZ2UuCi0gICAqIFxyZXR1cm4gXGMgdHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIHN1Y2Nlc3Nm
dWxseSBhZGRlZCwgXGMgZmFsc2UgaWYgdGhlCi0gICAqIFZhbHVlIG9mZnNldCBleGNlZWRzIHRo
ZSBkb2N1bWVudCBzaXplLgotICAgKi8KLSAgYm9vbCBwdXNoRXJyb3IoY29uc3QgVmFsdWUmIHZh
bHVlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gIC8qKiBcYnJpZWYgQWRkIGEgc2VtYW50
aWMgZXJyb3IgbWVzc2FnZSB3aXRoIGV4dHJhIGNvbnRleHQuCi0gICAqIFxwYXJhbSB2YWx1ZSBK
U09OIFZhbHVlIGxvY2F0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3IKLSAgICogXHBhcmFt
IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqIFxwYXJhbSBleHRyYSBBZGRpdGlvbmFs
IEpTT04gVmFsdWUgbG9jYXRpb24gdG8gY29udGV4dHVhbGl6ZSB0aGUgZXJyb3IKLSAgICogXHJl
dHVybiBcYyB0cnVlIGlmIHRoZSBlcnJvciB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkLCBcYyBmYWxz
ZSBpZiBlaXRoZXIKLSAgICogVmFsdWUgb2Zmc2V0IGV4Y2VlZHMgdGhlIGRvY3VtZW50IHNpemUu
Ci0gICAqLwotICBib29sIHB1c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgVmFsdWUmIGV4dHJhKTsKLQotICAvKiogXGJyaWVmIFJldHVybiB3
aGV0aGVyIHRoZXJlIGFyZSBhbnkgZXJyb3JzLgotICAgKiBccmV0dXJuIFxjIHRydWUgaWYgdGhl
cmUgYXJlIG5vIGVycm9ycyB0byByZXBvcnQgXGMgZmFsc2UgaWYKLSAgICogZXJyb3JzIGhhdmUg
b2NjdXJyZWQuCi0gICAqLwotICBib29sIGdvb2QoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgZW51
bSBUb2tlblR5cGUgewotICAgIHRva2VuRW5kT2ZTdHJlYW0gPSAwLAotICAgIHRva2VuT2JqZWN0
QmVnaW4sCi0gICAgdG9rZW5PYmplY3RFbmQsCi0gICAgdG9rZW5BcnJheUJlZ2luLAotICAgIHRv
a2VuQXJyYXlFbmQsCi0gICAgdG9rZW5TdHJpbmcsCi0gICAgdG9rZW5OdW1iZXIsCi0gICAgdG9r
ZW5UcnVlLAotICAgIHRva2VuRmFsc2UsCi0gICAgdG9rZW5OdWxsLAotICAgIHRva2VuQXJyYXlT
ZXBhcmF0b3IsCi0gICAgdG9rZW5NZW1iZXJTZXBhcmF0b3IsCi0gICAgdG9rZW5Db21tZW50LAot
ICAgIHRva2VuRXJyb3IKLSAgfTsKLQotICBjbGFzcyBUb2tlbiB7Ci0gIHB1YmxpYzoKLSAgICBU
b2tlblR5cGUgdHlwZV87Ci0gICAgTG9jYXRpb24gc3RhcnRfOwotICAgIExvY2F0aW9uIGVuZF87
Ci0gIH07Ci0KLSAgY2xhc3MgRXJyb3JJbmZvIHsKLSAgcHVibGljOgotICAgIFRva2VuIHRva2Vu
XzsKLSAgICBTdHJpbmcgbWVzc2FnZV87Ci0gICAgTG9jYXRpb24gZXh0cmFfOwotICB9OwotCi0g
IHR5cGVkZWYgc3RkOjpkZXF1ZTxFcnJvckluZm8+IEVycm9yczsKLQotICBib29sIHJlYWRUb2tl
bihUb2tlbiYgdG9rZW4pOwotICB2b2lkIHNraXBTcGFjZXMoKTsKLSAgYm9vbCBtYXRjaChMb2Nh
dGlvbiBwYXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCk7Ci0gIGJvb2wgcmVhZENvbW1lbnQoKTsK
LSAgYm9vbCByZWFkQ1N0eWxlQ29tbWVudCgpOwotICBib29sIHJlYWRDcHBTdHlsZUNvbW1lbnQo
KTsKLSAgYm9vbCByZWFkU3RyaW5nKCk7Ci0gIHZvaWQgcmVhZE51bWJlcigpOwotICBib29sIHJl
YWRWYWx1ZSgpOwotICBib29sIHJlYWRPYmplY3QoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCByZWFk
QXJyYXkoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCBkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuKTsK
LSAgYm9vbCBkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7Ci0gIGJv
b2wgZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbik7Ci0gIGJvb2wgZGVjb2RlU3RyaW5nKFRva2Vu
JiB0b2tlbiwgU3RyaW5nJiBkZWNvZGVkKTsKLSAgYm9vbCBkZWNvZGVEb3VibGUoVG9rZW4mIHRv
a2VuKTsKLSAgYm9vbCBkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7
Ci0gIGJvb2wgZGVjb2RlVW5pY29kZUNvZGVQb2ludChUb2tlbiYgdG9rZW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCYgdW5pY29kZSk7Ci0gIGJvb2wgZGVjb2RlVW5pY29kZUVzY2FwZVNlcXVl
bmNlKFRva2VuJiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9j
YXRpb24mIGN1cnJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0
aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
JiB1bmljb2RlKTsKLSAgYm9vbCBhZGRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFRva2Vu
JiB0b2tlbiwgTG9jYXRpb24gZXh0cmEgPSBudWxscHRyKTsKLSAgYm9vbCByZWNvdmVyRnJvbUVy
cm9yKFRva2VuVHlwZSBza2lwVW50aWxUb2tlbik7Ci0gIGJvb2wgYWRkRXJyb3JBbmRSZWNvdmVy
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4m
IHRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlblR5cGUgc2tpcFVudGlsVG9r
ZW4pOwotICB2b2lkIHNraXBVbnRpbFNwYWNlKCk7Ci0gIFZhbHVlJiBjdXJyZW50VmFsdWUoKTsK
LSAgQ2hhciBnZXROZXh0Q2hhcigpOwotICB2b2lkCi0gIGdldExvY2F0aW9uTGluZUFuZENvbHVt
bihMb2NhdGlvbiBsb2NhdGlvbiwgaW50JiBsaW5lLCBpbnQmIGNvbHVtbikgY29uc3Q7Ci0gIFN0
cmluZyBnZXRMb2NhdGlvbkxpbmVBbmRDb2x1bW4oTG9jYXRpb24gbG9jYXRpb24pIGNvbnN0Owot
ICB2b2lkIGFkZENvbW1lbnQoTG9jYXRpb24gYmVnaW4sIExvY2F0aW9uIGVuZCwgQ29tbWVudFBs
YWNlbWVudCBwbGFjZW1lbnQpOwotICB2b2lkIHNraXBDb21tZW50VG9rZW5zKFRva2VuJiB0b2tl
bik7Ci0KLSAgc3RhdGljIGJvb2wgY29udGFpbnNOZXdMaW5lKExvY2F0aW9uIGJlZ2luLCBMb2Nh
dGlvbiBlbmQpOwotICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZUVPTChMb2NhdGlvbiBiZWdpbiwg
TG9jYXRpb24gZW5kKTsKLQotICB0eXBlZGVmIHN0ZDo6c3RhY2s8VmFsdWUqPiBOb2RlczsKLSAg
Tm9kZXMgbm9kZXNfOwotICBFcnJvcnMgZXJyb3JzXzsKLSAgU3RyaW5nIGRvY3VtZW50XzsKLSAg
TG9jYXRpb24gYmVnaW5fe307Ci0gIExvY2F0aW9uIGVuZF97fTsKLSAgTG9jYXRpb24gY3VycmVu
dF97fTsKLSAgTG9jYXRpb24gbGFzdFZhbHVlRW5kX3t9OwotICBWYWx1ZSogbGFzdFZhbHVlX3t9
OwotICBTdHJpbmcgY29tbWVudHNCZWZvcmVfOwotICBGZWF0dXJlcyBmZWF0dXJlc187Ci0gIGJv
b2wgY29sbGVjdENvbW1lbnRzX3t9OwotfTsgLy8gUmVhZGVyCi0KLS8qKiBJbnRlcmZhY2UgZm9y
IHJlYWRpbmcgSlNPTiBmcm9tIGEgY2hhciBhcnJheS4KLSAqLwotY2xhc3MgSlNPTl9BUEkgQ2hh
clJlYWRlciB7Ci1wdWJsaWM6Ci0gIHZpcnR1YWwgfkNoYXJSZWFkZXIoKSA9IGRlZmF1bHQ7Ci0g
IC8qKiBcYnJpZWYgUmVhZCBhIFZhbHVlIGZyb20gYSA8YSBIUkVGPSJodHRwOi8vd3d3Lmpzb24u
b3JnIj5KU09OPC9hPgotICAgZG9jdW1lbnQuCi0gICAqIFRoZSBkb2N1bWVudCBtdXN0IGJlIGEg
VVRGLTggZW5jb2RlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZG9jdW1lbnQgdG8KLSAgIHJlYWQu
Ci0gICAqCi0gICAqIFxwYXJhbSBiZWdpbkRvYyBQb2ludGVyIG9uIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIFVURi04IGVuY29kZWQgc3RyaW5nIG9mIHRoZQotICAgZG9jdW1lbnQgdG8gcmVhZC4KLSAg
ICogXHBhcmFtIGVuZERvYyBQb2ludGVyIG9uIHRoZSBlbmQgb2YgdGhlIFVURi04IGVuY29kZWQg
c3RyaW5nIG9mIHRoZQotICAgZG9jdW1lbnQgdG8gcmVhZC4KLSAgICogICAgICAgIE11c3QgYmUg
Pj0gYmVnaW5Eb2MuCi0gICAqIFxwYXJhbSByb290IFtvdXRdIENvbnRhaW5zIHRoZSByb290IHZh
bHVlIG9mIHRoZSBkb2N1bWVudCBpZiBpdCB3YXMKLSAgICogICAgICAgICAgICAgc3VjY2Vzc2Z1
bGx5IHBhcnNlZC4KLSAgICogXHBhcmFtIGVycnMgW291dF0gRm9ybWF0dGVkIGVycm9yIG1lc3Nh
Z2VzIChpZiBub3QgTlVMTCkKLSAgICogICAgICAgIGEgdXNlciBmcmllbmRseSBzdHJpbmcgdGhh
dCBsaXN0cyBlcnJvcnMgaW4gdGhlIHBhcnNlZAotICAgKiBkb2N1bWVudC4KLSAgICogXHJldHVy
biBcYyB0cnVlIGlmIHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgXGMgZmFs
c2UgaWYgYW4KLSAgIGVycm9yIG9jY3VycmVkLgotICAgKi8KLSAgdmlydHVhbCBib29sIHBhcnNl
KGNoYXIgY29uc3QqIGJlZ2luRG9jLAotICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCog
ZW5kRG9jLAotICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvb3QsCi0gICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcqIGVycnMpID0gMDsKLQotICBjbGFzcyBKU09OX0FQSSBGYWN0b3J5IHsK
LSAgcHVibGljOgotICAgIHZpcnR1YWwgfkZhY3RvcnkoKSA9IGRlZmF1bHQ7Ci0gICAgLyoqIFxi
cmllZiBBbGxvY2F0ZSBhIENoYXJSZWFkZXIgdmlhIG9wZXJhdG9yIG5ldygpLgotICAgICAqIFx0
aHJvdyBzdGQ6OmV4Y2VwdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyAoZS5nLiBpbnZhbGlk
IHNldHRpbmdzKQotICAgICAqLwotICAgIHZpcnR1YWwgQ2hhclJlYWRlciogbmV3Q2hhclJlYWRl
cigpIGNvbnN0ID0gMDsKLSAgfTsgLy8gRmFjdG9yeQotfTsgICAvLyBDaGFyUmVhZGVyCi0KLS8q
KiBcYnJpZWYgQnVpbGQgYSBDaGFyUmVhZGVyIGltcGxlbWVudGF0aW9uLgotCi1Vc2FnZToKLVxj
b2RlCi0gIHVzaW5nIG5hbWVzcGFjZSBKc29uOwotICBDaGFyUmVhZGVyQnVpbGRlciBidWlsZGVy
OwotICBidWlsZGVyWyJjb2xsZWN0Q29tbWVudHMiXSA9IGZhbHNlOwotICBWYWx1ZSB2YWx1ZTsK
LSAgU3RyaW5nIGVycnM7Ci0gIGJvb2wgb2sgPSBwYXJzZUZyb21TdHJlYW0oYnVpbGRlciwgc3Rk
OjpjaW4sICZ2YWx1ZSwgJmVycnMpOwotXGVuZGNvZGUKLSovCi1jbGFzcyBKU09OX0FQSSBDaGFy
UmVhZGVyQnVpbGRlciA6IHB1YmxpYyBDaGFyUmVhZGVyOjpGYWN0b3J5IHsKLXB1YmxpYzoKLSAg
Ly8gTm90ZTogV2UgdXNlIGEgSnNvbjo6VmFsdWUgc28gdGhhdCB3ZSBjYW4gYWRkIGRhdGEtbWVt
YmVycyB0byB0aGlzIGNsYXNzCi0gIC8vIHdpdGhvdXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXAuCi0g
IC8qKiBDb25maWd1cmF0aW9uIG9mIHRoaXMgYnVpbGRlci4KLSAgICBUaGVzZSBhcmUgY2FzZS1z
ZW5zaXRpdmUuCi0gICAgQXZhaWxhYmxlIHNldHRpbmdzIChjYXNlLXNlbnNpdGl2ZSk6Ci0gICAg
LSBgImNvbGxlY3RDb21tZW50cyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIHRydWUgdG8gY29s
bGVjdCBjb21tZW50IGFuZCBhbGxvdyB3cml0aW5nIHRoZW0KLSAgICAgICAgYmFjayBkdXJpbmcg
c2VyaWFsaXphdGlvbiwgZmFsc2UgdG8gZGlzY2FyZCBjb21tZW50cy4KLSAgICAgICAgVGhpcyBw
YXJhbWV0ZXIgaXMgaWdub3JlZCBpZiBhbGxvd0NvbW1lbnRzIGlzIGZhbHNlLgotICAgIC0gYCJh
bGxvd0NvbW1lbnRzIjogZmFsc2Ugb3IgdHJ1ZWAKLSAgICAgIC0gdHJ1ZSBpZiBjb21tZW50cyBh
cmUgYWxsb3dlZC4KLSAgICAtIGAic3RyaWN0Um9vdCI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAt
IHRydWUgaWYgcm9vdCBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhbiBvYmplY3QgdmFsdWUK
LSAgICAtIGAiYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVycyI6IGZhbHNlIG9yIHRydWVgCi0g
ICAgICAtIHRydWUgaWYgZHJvcHBlZCBudWxsIHBsYWNlaG9sZGVycyBhcmUgYWxsb3dlZC4gKFNl
ZQotICAgIFN0cmVhbVdyaXRlckJ1aWxkZXIuKQotICAgIC0gYCJhbGxvd051bWVyaWNLZXlzIjog
ZmFsc2Ugb3IgdHJ1ZWAKLSAgICAgIC0gdHJ1ZSBpZiBudW1lcmljIG9iamVjdCBrZXlzIGFyZSBh
bGxvd2VkLgotICAgIC0gYCJhbGxvd1NpbmdsZVF1b3RlcyI6IGZhbHNlIG9yIHRydWVgCi0gICAg
ICAtIHRydWUgaWYgJycgYXJlIGFsbG93ZWQgZm9yIHN0cmluZ3MgKGJvdGgga2V5cyBhbmQgdmFs
dWVzKQotICAgIC0gYCJzdGFja0xpbWl0IjogaW50ZWdlcmAKLSAgICAgIC0gRXhjZWVkaW5nIHN0
YWNrTGltaXQgKHJlY3Vyc2l2ZSBkZXB0aCBvZiBgcmVhZFZhbHVlKClgKSB3aWxsCi0gICAgICAg
IGNhdXNlIGFuIGV4Y2VwdGlvbi4KLSAgICAgIC0gVGhpcyBpcyBhIHNlY3VyaXR5IGlzc3VlIChz
ZWctZmF1bHRzIGNhdXNlZCBieSBkZWVwbHkgbmVzdGVkIEpTT04pLAotICAgICAgICBzbyB0aGUg
ZGVmYXVsdCBpcyBsb3cuCi0gICAgLSBgImZhaWxJZkV4dHJhIjogZmFsc2Ugb3IgdHJ1ZWAKLSAg
ICAgIC0gSWYgdHJ1ZSwgYHBhcnNlKClgIHJldHVybnMgZmFsc2Ugd2hlbiBleHRyYSBub24td2hp
dGVzcGFjZSB0cmFpbHMKLSAgICAgICAgdGhlIEpTT04gdmFsdWUgaW4gdGhlIGlucHV0IHN0cmlu
Zy4KLSAgICAtIGAicmVqZWN0RHVwS2V5cyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIElmIHRy
dWUsIGBwYXJzZSgpYCByZXR1cm5zIGZhbHNlIHdoZW4gYSBrZXkgaXMgZHVwbGljYXRlZCB3aXRo
aW4gYW4KLSAgICBvYmplY3QuCi0gICAgLSBgImFsbG93U3BlY2lhbEZsb2F0cyI6IGZhbHNlIG9y
IHRydWVgCi0gICAgICAtIElmIHRydWUsIHNwZWNpYWwgZmxvYXQgdmFsdWVzIChOYU5zIGFuZCBp
bmZpbml0aWVzKSBhcmUgYWxsb3dlZAotICAgICAgICBhbmQgdGhlaXIgdmFsdWVzIGFyZSBsb3Nz
ZnJlZSByZXN0b3JhYmxlLgotCi0gICAgWW91IGNhbiBleGFtaW5lICdzZXR0aW5nc19gIHlvdXJz
ZWxmCi0gICAgdG8gc2VlIHRoZSBkZWZhdWx0cy4gWW91IGNhbiBhbHNvIHdyaXRlIGFuZCByZWFk
IHRoZW0ganVzdCBsaWtlIGFueQotICAgIEpTT04gVmFsdWUuCi0gICAgXHNhIHNldERlZmF1bHRz
KCkKLSAgICAqLwotICBKc29uOjpWYWx1ZSBzZXR0aW5nc187Ci0KLSAgQ2hhclJlYWRlckJ1aWxk
ZXIoKTsKLSAgfkNoYXJSZWFkZXJCdWlsZGVyKCkgb3ZlcnJpZGU7Ci0KLSAgQ2hhclJlYWRlciog
bmV3Q2hhclJlYWRlcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8qKiBccmV0dXJuIHRydWUgaWYg
J3NldHRpbmdzJyBhcmUgbGVnYWwgYW5kIGNvbnNpc3RlbnQ7Ci0gICAqICAgb3RoZXJ3aXNlLCBp
bmRpY2F0ZSBiYWQgc2V0dGluZ3MgdmlhICdpbnZhbGlkJy4KLSAgICovCi0gIGJvb2wgdmFsaWRh
dGUoSnNvbjo6VmFsdWUqIGludmFsaWQpIGNvbnN0OwotCi0gIC8qKiBBIHNpbXBsZSB3YXkgdG8g
dXBkYXRlIGEgc3BlY2lmaWMgc2V0dGluZy4KLSAgICovCi0gIFZhbHVlJiBvcGVyYXRvcltdKGNv
bnN0IFN0cmluZyYga2V5KTsKLQotICAvKiogQ2FsbGVkIGJ5IGN0b3IsIGJ1dCB5b3UgY2FuIHVz
ZSB0aGlzIHRvIHJlc2V0IHNldHRpbmdzXy4KLSAgICogXHByZSAnc2V0dGluZ3MnICE9IE5VTEwg
KGJ1dCBKc29uOjpudWxsIGlzIGZpbmUpCi0gICAqIFxyZW1hcmsgRGVmYXVsdHM6Ci0gICAqIFxz
bmlwcGV0IHNyYy9saWJfanNvbi9qc29uX3JlYWRlci5jcHAgQ2hhclJlYWRlckJ1aWxkZXJEZWZh
dWx0cwotICAgKi8KLSAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHMoSnNvbjo6VmFsdWUqIHNldHRp
bmdzKTsKLSAgLyoqIFNhbWUgYXMgb2xkIEZlYXR1cmVzOjpzdHJpY3RNb2RlKCkuCi0gICAqIFxw
cmUgJ3NldHRpbmdzJyAhPSBOVUxMIChidXQgSnNvbjo6bnVsbCBpcyBmaW5lKQotICAgKiBccmVt
YXJrIERlZmF1bHRzOgotICAgKiBcc25pcHBldCBzcmMvbGliX2pzb24vanNvbl9yZWFkZXIuY3Bw
IENoYXJSZWFkZXJCdWlsZGVyU3RyaWN0TW9kZQotICAgKi8KLSAgc3RhdGljIHZvaWQgc3RyaWN0
TW9kZShKc29uOjpWYWx1ZSogc2V0dGluZ3MpOwotfTsKLQotLyoqIENvbnN1bWUgZW50aXJlIHN0
cmVhbSBhbmQgdXNlIGl0cyBiZWdpbi9lbmQuCi0gKiBTb21lZGF5IHdlIG1pZ2h0IGhhdmUgYSBy
ZWFsIFN0cmVhbVJlYWRlciwgYnV0IGZvciBub3cgdGhpcwotICogaXMgY29udmVuaWVudC4KLSAq
LwotYm9vbCBKU09OX0FQSSBwYXJzZUZyb21TdHJlYW0oQ2hhclJlYWRlcjo6RmFjdG9yeSBjb25z
dCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU3RyZWFtJiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbHVlKiByb290LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nKiBlcnJzKTsKLQotLyoqIFxicmllZiBSZWFkIGZyb20gJ3NpbicgaW50byAn
cm9vdCcuCi0KLSBBbHdheXMga2VlcCBjb21tZW50cyBmcm9tIHRoZSBpbnB1dCBKU09OLgotCi0g
VGhpcyBjYW4gYmUgdXNlZCB0byByZWFkIGEgZmlsZSBpbnRvIGEgcGFydGljdWxhciBzdWItb2Jq
ZWN0LgotIEZvciBleGFtcGxlOgotIFxjb2RlCi0gSnNvbjo6VmFsdWUgcm9vdDsKLSBjaW4gPj4g
cm9vdFsiZGlyIl1bImZpbGUiXTsKLSBjb3V0IDw8IHJvb3Q7Ci0gXGVuZGNvZGUKLSBSZXN1bHQ6
Ci0gXHZlcmJhdGltCi0gewotICJkaXIiOiB7Ci0gICAgICJmaWxlIjogewotICAgICAvLyBUaGUg
aW5wdXQgc3RyZWFtIEpTT04gd291bGQgYmUgbmVzdGVkIGhlcmUuCi0gICAgIH0KLSB9Ci0gfQot
IFxlbmR2ZXJiYXRpbQotIFx0aHJvdyBzdGQ6OmV4Y2VwdGlvbiBvbiBwYXJzZSBlcnJvci4KLSBc
c2VlIEpzb246Om9wZXJhdG9yPDwoKQotKi8KLUpTT05fQVBJIElTdHJlYW0mIG9wZXJhdG9yPj4o
SVN0cmVhbSYsIFZhbHVlJik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KLQotI3ByYWdtYSBwYWNr
KHBvcCkKLQotI2lmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklO
RykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OQ1BQX0RJ
U0FCTEVfRExMX0lOVEVSRkFDRV9XQVJOSU5HKQotCi0jZW5kaWYgLy8gQ1BQVExfSlNPTl9SRUFE
RVJfSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vdmFsdWUuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvaW5jbHVkZS9qc29uL3ZhbHVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1
N2YzZjZmNjc2NTZiZjUzZWU1ZmU3YWM2OGQ5NDlmOTBiN2Y5YzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vdmFsdWUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDkwNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJh
cHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQg
dW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJl
Y29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBk
ZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQot
Ci0jaWZuZGVmIENQUFRMX0pTT05fSF9JTkNMVURFRAotI2RlZmluZSBDUFBUTF9KU09OX0hfSU5D
TFVERUQKLQotI2lmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgImZv
cndhcmRzLmgiCi0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0j
aW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8ZXhjZXB0aW9uPgotI2luY2x1ZGUgPG1lbW9yeT4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaWZuZGVmIEpTT05fVVNF
X0NQUFRMX1NNQUxMTUFQCi0jaW5jbHVkZSA8bWFwPgotI2Vsc2UKLSNpbmNsdWRlIDxjcHB0bC9z
bWFsbG1hcC5oPgotI2VuZGlmCi0jaWZkZWYgSlNPTl9VU0VfQ1BQVEwKLSNpbmNsdWRlIDxjcHB0
bC9mb3J3YXJkcy5oPgotI2VuZGlmCi0KLS8vIERpc2FibGUgd2FybmluZyBDNDI1MTogPGRhdGEg
bWVtYmVyPjogPHR5cGU+IG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0bwotLy8gYmUgdXNl
ZCBieS4uLgotI2lmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklO
RykKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUx
KQotI2VuZGlmIC8vIGlmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FS
TklORykKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDgpCi0KLS8qKiBcYnJpZWYgSlNPTiAoSmF2YVNj
cmlwdCBPYmplY3QgTm90YXRpb24pLgotICovCi1uYW1lc3BhY2UgSnNvbiB7Ci0KLSNpZiBKU09O
X1VTRV9FWENFUFRJT04KLS8qKiBCYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyB3ZSB0aHJv
dy4KLSAqCi0gKiBXZSB1c2Ugbm90aGluZyBidXQgdGhlc2UgaW50ZXJuYWxseS4gT2YgY291cnNl
LCBTVEwgY2FuIHRocm93IG90aGVycy4KLSAqLwotY2xhc3MgSlNPTl9BUEkgRXhjZXB0aW9uIDog
cHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgRXhjZXB0aW9uKFN0cmluZyBtc2cp
OwotICB+RXhjZXB0aW9uKCkgSlNPTkNQUF9OT0VYQ0VQVCBvdmVycmlkZTsKLSAgY2hhciBjb25z
dCogd2hhdCgpIGNvbnN0IEpTT05DUFBfTk9FWENFUFQgb3ZlcnJpZGU7Ci0KLXByb3RlY3RlZDoK
LSAgU3RyaW5nIG1zZ187Ci19OwotCi0vKiogRXhjZXB0aW9ucyB3aGljaCB0aGUgdXNlciBjYW5u
b3QgZWFzaWx5IGF2b2lkLgotICoKLSAqIEUuZy4gb3V0LW9mLW1lbW9yeSAod2hlbiB3ZSB1c2Ug
bWFsbG9jKSwgc3RhY2stb3ZlcmZsb3csIG1hbGljaW91cyBpbnB1dAotICoKLSAqIFxyZW1hcmsg
ZGVyaXZlZCBmcm9tIEpzb246OkV4Y2VwdGlvbgotICovCi1jbGFzcyBKU09OX0FQSSBSdW50aW1l
RXJyb3IgOiBwdWJsaWMgRXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgUnVudGltZUVycm9yKFN0cmlu
ZyBjb25zdCYgbXNnKTsKLX07Ci0KLS8qKiBFeGNlcHRpb25zIHRocm93biBieSBKU09OX0FTU0VS
VC9KU09OX0ZBSUwgbWFjcm9zLgotICoKLSAqIFRoZXNlIGFyZSBwcmVjb25kaXRpb24tdmlvbGF0
aW9ucyAodXNlciBidWdzKSBhbmQgaW50ZXJuYWwgZXJyb3JzIChvdXIgYnVncykuCi0gKgotICog
XHJlbWFyayBkZXJpdmVkIGZyb20gSnNvbjo6RXhjZXB0aW9uCi0gKi8KLWNsYXNzIEpTT05fQVBJ
IExvZ2ljRXJyb3IgOiBwdWJsaWMgRXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgTG9naWNFcnJvcihT
dHJpbmcgY29uc3QmIG1zZyk7Ci19OwotI2VuZGlmCi0KLS8vLyB1c2VkIGludGVybmFsbHkKLVtb
bm9yZXR1cm5dXSB2b2lkIHRocm93UnVudGltZUVycm9yKFN0cmluZyBjb25zdCYgbXNnKTsKLS8v
LyB1c2VkIGludGVybmFsbHkKLVtbbm9yZXR1cm5dXSB2b2lkIHRocm93TG9naWNFcnJvcihTdHJp
bmcgY29uc3QmIG1zZyk7Ci0KLS8qKiBcYnJpZWYgVHlwZSBvZiB0aGUgdmFsdWUgaGVsZCBieSBh
IFZhbHVlIG9iamVjdC4KLSAqLwotZW51bSBWYWx1ZVR5cGUgewotICBudWxsVmFsdWUgPSAwLCAv
Ly88ICdudWxsJyB2YWx1ZQotICBpbnRWYWx1ZSwgICAgICAvLy88IHNpZ25lZCBpbnRlZ2VyIHZh
bHVlCi0gIHVpbnRWYWx1ZSwgICAgIC8vLzwgdW5zaWduZWQgaW50ZWdlciB2YWx1ZQotICByZWFs
VmFsdWUsICAgICAvLy88IGRvdWJsZSB2YWx1ZQotICBzdHJpbmdWYWx1ZSwgICAvLy88IFVURi04
IHN0cmluZyB2YWx1ZQotICBib29sZWFuVmFsdWUsICAvLy88IGJvb2wgdmFsdWUKLSAgYXJyYXlW
YWx1ZSwgICAgLy8vPCBhcnJheSB2YWx1ZSAob3JkZXJlZCBsaXN0KQotICBvYmplY3RWYWx1ZSAg
ICAvLy88IG9iamVjdCB2YWx1ZSAoY29sbGVjdGlvbiBvZiBuYW1lL3ZhbHVlIHBhaXJzKS4KLX07
Ci0KLWVudW0gQ29tbWVudFBsYWNlbWVudCB7Ci0gIGNvbW1lbnRCZWZvcmUgPSAwLCAgICAgIC8v
LzwgYSBjb21tZW50IHBsYWNlZCBvbiB0aGUgbGluZSBiZWZvcmUgYSB2YWx1ZQotICBjb21tZW50
QWZ0ZXJPblNhbWVMaW5lLCAvLy88IGEgY29tbWVudCBqdXN0IGFmdGVyIGEgdmFsdWUgb24gdGhl
IHNhbWUgbGluZQotICBjb21tZW50QWZ0ZXIsIC8vLzwgYSBjb21tZW50IG9uIHRoZSBsaW5lIGFm
dGVyIGEgdmFsdWUgKG9ubHkgbWFrZSBzZW5zZSBmb3IKLSAgLy8vIHJvb3QgdmFsdWUpCi0gIG51
bWJlck9mQ29tbWVudFBsYWNlbWVudAotfTsKLQotLyoqIFxicmllZiBUeXBlIG9mIHByZWNpc2lv
biBmb3IgZm9ybWF0dGluZyBvZiByZWFsIHZhbHVlcy4KLSAqLwotZW51bSBQcmVjaXNpb25UeXBl
IHsKLSAgc2lnbmlmaWNhbnREaWdpdHMgPSAwLCAvLy88IHdlIHNldCBtYXggbnVtYmVyIG9mIHNp
Z25pZmljYW50IGRpZ2l0cyBpbiBzdHJpbmcKLSAgZGVjaW1hbFBsYWNlcyAgICAgICAgICAvLy88
IHdlIHNldCBtYXggbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciAiLiIgaW4gc3RyaW5nCi19OwotCi0v
LyMgaWZkZWYgSlNPTl9VU0VfQ1BQVEwKLS8vICAgdHlwZWRlZiBDcHBUTDo6QW55RW51bWVyYXRv
cjxjb25zdCBjaGFyICo+IEVudW1NZW1iZXJOYW1lczsKLS8vICAgdHlwZWRlZiBDcHBUTDo6QW55
RW51bWVyYXRvcjxjb25zdCBWYWx1ZSAmPiBFbnVtVmFsdWVzOwotLy8jIGVuZGlmCi0KLS8qKiBc
YnJpZWYgTGlnaHR3ZWlnaHQgd3JhcHBlciB0byB0YWcgc3RhdGljIHN0cmluZy4KLSAqCi0gKiBW
YWx1ZSBjb25zdHJ1Y3RvciBhbmQgb2JqZWN0VmFsdWUgbWVtYmVyIGFzc2lnbm1lbnQgdGFrZXMg
YWR2YW50YWdlIG9mIHRoZQotICogU3RhdGljU3RyaW5nIGFuZCBhdm9pZCB0aGUgY29zdCBvZiBz
dHJpbmcgZHVwbGljYXRpb24gd2hlbiBzdG9yaW5nIHRoZQotICogc3RyaW5nIG9yIHRoZSBtZW1i
ZXIgbmFtZS4KLSAqCi0gKiBFeGFtcGxlIG9mIHVzYWdlOgotICogXGNvZGUKLSAqIEpzb246OlZh
bHVlIGFWYWx1ZSggU3RhdGljU3RyaW5nKCJzb21lIHRleHQiKSApOwotICogSnNvbjo6VmFsdWUg
b2JqZWN0OwotICogc3RhdGljIGNvbnN0IFN0YXRpY1N0cmluZyBjb2RlKCJjb2RlIik7Ci0gKiBv
YmplY3RbY29kZV0gPSAxMjM0OwotICogXGVuZGNvZGUKLSAqLwotY2xhc3MgSlNPTl9BUEkgU3Rh
dGljU3RyaW5nIHsKLXB1YmxpYzoKLSAgZXhwbGljaXQgU3RhdGljU3RyaW5nKGNvbnN0IGNoYXIq
IGN6c3RyaW5nKSA6IGNfc3RyXyhjenN0cmluZykge30KLQotICBvcGVyYXRvciBjb25zdCBjaGFy
KigpIGNvbnN0IHsgcmV0dXJuIGNfc3RyXzsgfQotCi0gIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29u
c3QgeyByZXR1cm4gY19zdHJfOyB9Ci0KLXByaXZhdGU6Ci0gIGNvbnN0IGNoYXIqIGNfc3RyXzsK
LX07Ci0KLS8qKiBcYnJpZWYgUmVwcmVzZW50cyBhIDxhIEhSRUY9Imh0dHA6Ly93d3cuanNvbi5v
cmciPkpTT048L2E+IHZhbHVlLgotICoKLSAqIFRoaXMgY2xhc3MgaXMgYSBkaXNjcmltaW5hdGVk
IHVuaW9uIHdyYXBwZXIgdGhhdCBjYW4gcmVwcmVzZW50cyBhOgotICogLSBzaWduZWQgaW50ZWdl
ciBbcmFuZ2U6IFZhbHVlOjptaW5JbnQgLSBWYWx1ZTo6bWF4SW50XQotICogLSB1bnNpZ25lZCBp
bnRlZ2VyIChyYW5nZTogMCAtIFZhbHVlOjptYXhVSW50KQotICogLSBkb3VibGUKLSAqIC0gVVRG
LTggc3RyaW5nCi0gKiAtIGJvb2xlYW4KLSAqIC0gJ251bGwnCi0gKiAtIGFuIG9yZGVyZWQgbGlz
dCBvZiBWYWx1ZQotICogLSBjb2xsZWN0aW9uIG9mIG5hbWUvdmFsdWUgcGFpcnMgKGphdmFzY3Jp
cHQgb2JqZWN0KQotICoKLSAqIFRoZSB0eXBlIG9mIHRoZSBoZWxkIHZhbHVlIGlzIHJlcHJlc2Vu
dGVkIGJ5IGEgI1ZhbHVlVHlwZSBhbmQKLSAqIGNhbiBiZSBvYnRhaW5lZCB1c2luZyB0eXBlKCku
Ci0gKgotICogVmFsdWVzIG9mIGFuICNvYmplY3RWYWx1ZSBvciAjYXJyYXlWYWx1ZSBjYW4gYmUg
YWNjZXNzZWQgdXNpbmcgb3BlcmF0b3JbXSgpCi0gKiBtZXRob2RzLgotICogTm9uLWNvbnN0IG1l
dGhvZHMgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgYSAjbnVsbFZhbHVlIGVsZW1lbnQK
LSAqIGlmIGl0IGRvZXMgbm90IGV4aXN0LgotICogVGhlIHNlcXVlbmNlIG9mIGFuICNhcnJheVZh
bHVlIHdpbGwgYmUgYXV0b21hdGljYWxseSByZXNpemVkIGFuZCBpbml0aWFsaXplZAotICogd2l0
aCAjbnVsbFZhbHVlLiByZXNpemUoKSBjYW4gYmUgdXNlZCB0byBlbmxhcmdlIG9yIHRydW5jYXRl
IGFuICNhcnJheVZhbHVlLgotICoKLSAqIFRoZSBnZXQoKSBtZXRob2RzIGNhbiBiZSB1c2VkIHRv
IG9idGFpbiBkZWZhdWx0IHZhbHVlIGluIHRoZSBjYXNlIHRoZQotICogcmVxdWlyZWQgZWxlbWVu
dCBkb2VzIG5vdCBleGlzdC4KLSAqCi0gKiBJdCBpcyBwb3NzaWJsZSB0byBpdGVyYXRlIG92ZXIg
dGhlIGxpc3Qgb2YgbWVtYmVyIGtleXMgb2YgYW4gb2JqZWN0IHVzaW5nCi0gKiB0aGUgZ2V0TWVt
YmVyTmFtZXMoKSBtZXRob2QuCi0gKgotICogXG5vdGUgI1ZhbHVlIHN0cmluZy1sZW5ndGggZml0
IGluIHNpemVfdCwgYnV0IGtleXMgbXVzdCBiZSA8IDJeMzAuCi0gKiAoVGhlIHJlYXNvbiBpcyBh
biBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuKSBBICNDaGFyUmVhZGVyIHdpbGwgcmFpc2UgYW4KLSAq
IGV4Y2VwdGlvbiBpZiBhIGJvdW5kIGlzIGV4Y2VlZGVkIHRvIGF2b2lkIHNlY3VyaXR5IGhvbGVz
IGluIHlvdXIgYXBwLAotICogYnV0IHRoZSBWYWx1ZSBBUEkgZG9lcyAqbm90KiBjaGVjayBib3Vu
ZHMuIFRoYXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5Ci0gKiBvZiB0aGUgY2FsbGVyLgotICovCi1j
bGFzcyBKU09OX0FQSSBWYWx1ZSB7Ci0gIGZyaWVuZCBjbGFzcyBWYWx1ZUl0ZXJhdG9yQmFzZTsK
LQotcHVibGljOgotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFN0cmluZz4gTWVtYmVyczsKLSAgdHlw
ZWRlZiBWYWx1ZUl0ZXJhdG9yIGl0ZXJhdG9yOwotICB0eXBlZGVmIFZhbHVlQ29uc3RJdGVyYXRv
ciBjb25zdF9pdGVyYXRvcjsKLSAgdHlwZWRlZiBKc29uOjpVSW50IFVJbnQ7Ci0gIHR5cGVkZWYg
SnNvbjo6SW50IEludDsKLSNpZiBkZWZpbmVkKEpTT05fSEFTX0lOVDY0KQotICB0eXBlZGVmIEpz
b246OlVJbnQ2NCBVSW50NjQ7Ci0gIHR5cGVkZWYgSnNvbjo6SW50NjQgSW50NjQ7Ci0jZW5kaWYg
Ly8gZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgdHlwZWRlZiBKc29uOjpMYXJnZXN0SW50IExh
cmdlc3RJbnQ7Ci0gIHR5cGVkZWYgSnNvbjo6TGFyZ2VzdFVJbnQgTGFyZ2VzdFVJbnQ7Ci0gIHR5
cGVkZWYgSnNvbjo6QXJyYXlJbmRleCBBcnJheUluZGV4OwotCi0gIC8vIFJlcXVpcmVkIGZvciBi
b29zdCBpbnRlZ3JhdGlvbiwgZS4gZy4gQk9PU1RfVEVTVAotICB0eXBlZGVmIHN0ZDo6c3RyaW5n
IHZhbHVlX3R5cGU7Ci0KLSNpZiBKU09OX1VTRV9OVUxMUkVGCi0gIC8vIEJpbmFyeSBjb21wYXRp
YmlsaXR5IGtsdWRnZXMsIGRvIG5vdCB1c2UuCi0gIHN0YXRpYyBjb25zdCBWYWx1ZSYgbnVsbDsK
LSAgc3RhdGljIGNvbnN0IFZhbHVlJiBudWxsUmVmOwotI2VuZGlmCi0KLSAgLy8gbnVsbCBhbmQg
bnVsbFJlZiBhcmUgZGVwcmVjYXRlZCwgdXNlIHRoaXMgaW5zdGVhZC4KLSAgc3RhdGljIFZhbHVl
IGNvbnN0JiBudWxsU2luZ2xldG9uKCk7Ci0KLSAgLy8vIE1pbmltdW0gc2lnbmVkIGludGVnZXIg
dmFsdWUgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgSnNvbjo6VmFsdWUuCi0gIHN0YXRpYyBjb25z
dCBMYXJnZXN0SW50IG1pbkxhcmdlc3RJbnQ7Ci0gIC8vLyBNYXhpbXVtIHNpZ25lZCBpbnRlZ2Vy
IHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29u
c3QgTGFyZ2VzdEludCBtYXhMYXJnZXN0SW50OwotICAvLy8gTWF4aW11bSB1bnNpZ25lZCBpbnRl
Z2VyIHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMg
Y29uc3QgTGFyZ2VzdFVJbnQgbWF4TGFyZ2VzdFVJbnQ7Ci0KLSAgLy8vIE1pbmltdW0gc2lnbmVk
IGludCB2YWx1ZSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSBKc29uOjpWYWx1ZS4KLSAgc3RhdGlj
IGNvbnN0IEludCBtaW5JbnQ7Ci0gIC8vLyBNYXhpbXVtIHNpZ25lZCBpbnQgdmFsdWUgdGhhdCBj
YW4gYmUgc3RvcmVkIGluIGEgSnNvbjo6VmFsdWUuCi0gIHN0YXRpYyBjb25zdCBJbnQgbWF4SW50
OwotICAvLy8gTWF4aW11bSB1bnNpZ25lZCBpbnQgdmFsdWUgdGhhdCBjYW4gYmUgc3RvcmVkIGlu
IGEgSnNvbjo6VmFsdWUuCi0gIHN0YXRpYyBjb25zdCBVSW50IG1heFVJbnQ7Ci0KLSNpZiBkZWZp
bmVkKEpTT05fSEFTX0lOVDY0KQotICAvLy8gTWluaW11bSBzaWduZWQgNjQgYml0cyBpbnQgdmFs
dWUgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgSnNvbjo6VmFsdWUuCi0gIHN0YXRpYyBjb25zdCBJ
bnQ2NCBtaW5JbnQ2NDsKLSAgLy8vIE1heGltdW0gc2lnbmVkIDY0IGJpdHMgaW50IHZhbHVlIHRo
YXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgSW50NjQg
bWF4SW50NjQ7Ci0gIC8vLyBNYXhpbXVtIHVuc2lnbmVkIDY0IGJpdHMgaW50IHZhbHVlIHRoYXQg
Y2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgVUludDY0IG1h
eFVJbnQ2NDsKLSNlbmRpZiAvLyBkZWZpbmVkKEpTT05fSEFTX0lOVDY0KQotCi0gIC8vLyBEZWZh
dWx0IHByZWNpc2lvbiBmb3IgcmVhbCB2YWx1ZSBmb3Igc3RyaW5nIHJlcHJlc2VudGF0aW9uLgot
ICBzdGF0aWMgY29uc3QgVUludCBkZWZhdWx0UmVhbFByZWNpc2lvbjsKLQotLy8gV29ya2Fyb3Vu
ZCBmb3IgYnVnIGluIHRoZSBOVklESUFzIENVREEgOS4xIG52Y2MgY29tcGlsZXIKLS8vIHdoZW4g
dXNpbmcgZ2NjIGFuZCBjbGFuZyBiYWNrZW5kIGNvbXBpbGVycy4gIENaU3RyaW5nCi0vLyBjYW5u
b3QgYmUgZGVmaW5lZCBhcyBwcml2YXRlLiAgU2VlIGlzc3VlICM0ODYKLSNpZmRlZiBfX05WQ0Nf
XwotcHVibGljOgotI2Vsc2UKLXByaXZhdGU6Ci0jZW5kaWYKLSNpZm5kZWYgSlNPTkNQUF9ET0Nf
RVhDTFVERV9JTVBMRU1FTlRBVElPTgotICBjbGFzcyBDWlN0cmluZyB7Ci0gIHB1YmxpYzoKLSAg
ICBlbnVtIER1cGxpY2F0aW9uUG9saWN5IHsgbm9EdXBsaWNhdGlvbiA9IDAsIGR1cGxpY2F0ZSwg
ZHVwbGljYXRlT25Db3B5IH07Ci0gICAgQ1pTdHJpbmcoQXJyYXlJbmRleCBpbmRleCk7Ci0gICAg
Q1pTdHJpbmcoY2hhciBjb25zdCogc3RyLCB1bnNpZ25lZCBsZW5ndGgsIER1cGxpY2F0aW9uUG9s
aWN5IGFsbG9jYXRlKTsKLSAgICBDWlN0cmluZyhDWlN0cmluZyBjb25zdCYgb3RoZXIpOwotICAg
IENaU3RyaW5nKENaU3RyaW5nJiYgb3RoZXIpOwotICAgIH5DWlN0cmluZygpOwotICAgIENaU3Ry
aW5nJiBvcGVyYXRvcj0oY29uc3QgQ1pTdHJpbmcmIG90aGVyKTsKLSAgICBDWlN0cmluZyYgb3Bl
cmF0b3I9KENaU3RyaW5nJiYgb3RoZXIpOwotCi0gICAgYm9vbCBvcGVyYXRvcjwoQ1pTdHJpbmcg
Y29uc3QmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oQ1pTdHJpbmcgY29uc3Qm
IG90aGVyKSBjb25zdDsKLSAgICBBcnJheUluZGV4IGluZGV4KCkgY29uc3Q7Ci0gICAgLy8gY29u
c3QgY2hhciogY19zdHIoKSBjb25zdDsgLy8vPCBcZGVwcmVjYXRlZAotICAgIGNoYXIgY29uc3Qq
IGRhdGEoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBib29sIGlz
U3RhdGljU3RyaW5nKCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIHN3YXAoQ1pTdHJp
bmcmIG90aGVyKTsKLQotICAgIHN0cnVjdCBTdHJpbmdTdG9yYWdlIHsKLSAgICAgIHVuc2lnbmVk
IHBvbGljeV8gOiAyOwotICAgICAgdW5zaWduZWQgbGVuZ3RoXyA6IDMwOyAvLyAxR0IgbWF4Ci0g
ICAgfTsKLQotICAgIGNoYXIgY29uc3QqIGNzdHJfOyAvLyBhY3R1YWxseSwgYSBwcmVmaXhlZCBz
dHJpbmcsIHVubGVzcyBwb2xpY3kgaXMgbm9EdXAKLSAgICB1bmlvbiB7Ci0gICAgICBBcnJheUlu
ZGV4IGluZGV4XzsKLSAgICAgIFN0cmluZ1N0b3JhZ2Ugc3RvcmFnZV87Ci0gICAgfTsKLSAgfTsK
LQotcHVibGljOgotI2lmbmRlZiBKU09OX1VTRV9DUFBUTF9TTUFMTE1BUAotICB0eXBlZGVmIHN0
ZDo6bWFwPENaU3RyaW5nLCBWYWx1ZT4gT2JqZWN0VmFsdWVzOwotI2Vsc2UKLSAgdHlwZWRlZiBD
cHBUTDo6U21hbGxNYXA8Q1pTdHJpbmcsIFZhbHVlPiBPYmplY3RWYWx1ZXM7Ci0jZW5kaWYgLy8g
aWZuZGVmIEpTT05fVVNFX0NQUFRMX1NNQUxMTUFQCi0jZW5kaWYgLy8gaWZuZGVmIEpTT05DUFBf
RE9DX0VYQ0xVREVfSU1QTEVNRU5UQVRJT04KLQotcHVibGljOgotICAvKiogXGJyaWVmIENyZWF0
ZSBhIGRlZmF1bHQgVmFsdWUgb2YgdGhlIGdpdmVuIHR5cGUuCi0KLSAgICBUaGlzIGlzIGEgdmVy
eSB1c2VmdWwgY29uc3RydWN0b3IuCi0gICAgVG8gY3JlYXRlIGFuIGVtcHR5IGFycmF5LCBwYXNz
IGFycmF5VmFsdWUuCi0gICAgVG8gY3JlYXRlIGFuIGVtcHR5IG9iamVjdCwgcGFzcyBvYmplY3RW
YWx1ZS4KLSAgICBBbm90aGVyIFZhbHVlIGNhbiB0aGVuIGJlIHNldCB0byB0aGlzIG9uZSBieSBh
c3NpZ25tZW50LgotVGhpcyBpcyB1c2VmdWwgc2luY2UgY2xlYXIoKSBhbmQgcmVzaXplKCkgd2ls
bCBub3QgYWx0ZXIgdHlwZXMuCi0KLSAgICBFeGFtcGxlczoKLVxjb2RlCi1Kc29uOjpWYWx1ZSBu
dWxsX3ZhbHVlOyAvLyBudWxsCi1Kc29uOjpWYWx1ZSBhcnJfdmFsdWUoSnNvbjo6YXJyYXlWYWx1
ZSk7IC8vIFtdCi1Kc29uOjpWYWx1ZSBvYmpfdmFsdWUoSnNvbjo6b2JqZWN0VmFsdWUpOyAvLyB7
fQotXGVuZGNvZGUKLSAgKi8KLSAgVmFsdWUoVmFsdWVUeXBlIHR5cGUgPSBudWxsVmFsdWUpOwot
ICBWYWx1ZShJbnQgdmFsdWUpOwotICBWYWx1ZShVSW50IHZhbHVlKTsKLSNpZiBkZWZpbmVkKEpT
T05fSEFTX0lOVDY0KQotICBWYWx1ZShJbnQ2NCB2YWx1ZSk7Ci0gIFZhbHVlKFVJbnQ2NCB2YWx1
ZSk7Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgVmFsdWUoZG91Ymxl
IHZhbHVlKTsKLSAgVmFsdWUoY29uc3QgY2hhciogdmFsdWUpOyAvLy88IENvcHkgdGlsIGZpcnN0
IDAuIChOVUxMIGNhdXNlcyB0byBzZWctZmF1bHQuKQotICBWYWx1ZShjb25zdCBjaGFyKiBiZWdp
biwgY29uc3QgY2hhciogZW5kKTsgLy8vPCBDb3B5IGFsbCwgaW5jbCB6ZXJvZXMuCi0gIC8qKiBc
YnJpZWYgQ29uc3RydWN0cyBhIHZhbHVlIGZyb20gYSBzdGF0aWMgc3RyaW5nLgotCi0gICAqIExp
a2Ugb3RoZXIgdmFsdWUgc3RyaW5nIGNvbnN0cnVjdG9yIGJ1dCBkbyBub3QgZHVwbGljYXRlIHRo
ZSBzdHJpbmcgZm9yCi0gICAqIGludGVybmFsIHN0b3JhZ2UuIFRoZSBnaXZlbiBzdHJpbmcgbXVz
dCByZW1haW4gYWxpdmUgYWZ0ZXIgdGhlIGNhbGwgdG8gdGhpcwotICAgKiBjb25zdHJ1Y3Rvci4K
LSAgICogXG5vdGUgVGhpcyB3b3JrcyBvbmx5IGZvciBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncy4g
KFdlIGNhbm5vdCBjaGFuZ2UgdGhlCi0gICAqICAgc2l6ZSBvZiB0aGlzIGNsYXNzLCBzbyB3ZSBo
YXZlIG5vd2hlcmUgdG8gc3RvcmUgdGhlIGxlbmd0aCwKLSAgICogICB3aGljaCBtaWdodCBiZSBj
b21wdXRlZCBsYXRlciBmb3IgdmFyaW91cyBvcGVyYXRpb25zLikKLSAgICoKLSAgICogRXhhbXBs
ZSBvZiB1c2FnZToKLSAgICogXGNvZGUKLSAgICogc3RhdGljIFN0YXRpY1N0cmluZyBmb28oInNv
bWUgdGV4dCIpOwotICAgKiBKc29uOjpWYWx1ZSBhVmFsdWUoZm9vKTsKLSAgICogXGVuZGNvZGUK
LSAgICovCi0gIFZhbHVlKGNvbnN0IFN0YXRpY1N0cmluZyYgdmFsdWUpOwotICBWYWx1ZShjb25z
dCBTdHJpbmcmIHZhbHVlKTsgLy8vPCBDb3B5IGRhdGEoKSB0aWwgc2l6ZSgpLiBFbWJlZGRlZAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCB6ZXJvZXMgdG9vLgotI2lmZGVmIEpT
T05fVVNFX0NQUFRMCi0gIFZhbHVlKGNvbnN0IENwcFRMOjpDb25zdFN0cmluZyYgdmFsdWUpOwot
I2VuZGlmCi0gIFZhbHVlKGJvb2wgdmFsdWUpOwotICBWYWx1ZShjb25zdCBWYWx1ZSYgb3RoZXIp
OwotICBWYWx1ZShWYWx1ZSYmIG90aGVyKTsKLSAgflZhbHVlKCk7Ci0KLSAgLy8vIFxub3RlIE92
ZXJ3cml0ZSBleGlzdGluZyBjb21tZW50cy4gVG8gcHJlc2VydmUgY29tbWVudHMsIHVzZQotICAv
Ly8gI3N3YXBQYXlsb2FkKCkuCi0gIFZhbHVlJiBvcGVyYXRvcj0oY29uc3QgVmFsdWUmIG90aGVy
KTsKLSAgVmFsdWUmIG9wZXJhdG9yPShWYWx1ZSYmIG90aGVyKTsKLQotICAvLy8gU3dhcCBldmVy
eXRoaW5nLgotICB2b2lkIHN3YXAoVmFsdWUmIG90aGVyKTsKLSAgLy8vIFN3YXAgdmFsdWVzIGJ1
dCBsZWF2ZSBjb21tZW50cyBhbmQgc291cmNlIG9mZnNldHMgaW4gcGxhY2UuCi0gIHZvaWQgc3dh
cFBheWxvYWQoVmFsdWUmIG90aGVyKTsKLQotICAvLy8gY29weSBldmVyeXRoaW5nLgotICB2b2lk
IGNvcHkoY29uc3QgVmFsdWUmIG90aGVyKTsKLSAgLy8vIGNvcHkgdmFsdWVzIGJ1dCBsZWF2ZSBj
b21tZW50cyBhbmQgc291cmNlIG9mZnNldHMgaW4gcGxhY2UuCi0gIHZvaWQgY29weVBheWxvYWQo
Y29uc3QgVmFsdWUmIG90aGVyKTsKLQotICBWYWx1ZVR5cGUgdHlwZSgpIGNvbnN0OwotCi0gIC8v
LyBDb21wYXJlIHBheWxvYWQgb25seSwgbm90IGNvbW1lbnRzIGV0Yy4KLSAgYm9vbCBvcGVyYXRv
cjwoY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdDsKLSAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFZh
bHVlJiBvdGhlcikgY29uc3Q7Ci0gIGJvb2wgb3BlcmF0b3I+PShjb25zdCBWYWx1ZSYgb3RoZXIp
IGNvbnN0OwotICBib29sIG9wZXJhdG9yPihjb25zdCBWYWx1ZSYgb3RoZXIpIGNvbnN0OwotICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdDsKLSAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFZhbHVlJiBvdGhlcikgY29uc3Q7Ci0gIGludCBjb21wYXJlKGNvbnN0IFZhbHVl
JiBvdGhlcikgY29uc3Q7Ci0KLSAgY29uc3QgY2hhciogYXNDU3RyaW5nKCkgY29uc3Q7IC8vLzwg
RW1iZWRkZWQgemVyb2VzIGNvdWxkIGNhdXNlIHlvdSB0cm91YmxlIQotI2lmIEpTT05DUFBfVVNJ
TkdfU0VDVVJFX01FTU9SWQotICB1bnNpZ25lZCBnZXRDU3RyaW5nTGVuZ3RoKCkgY29uc3Q7IC8v
IEFsbG93cyB5b3UgdG8gdW5kZXJzdGFuZCB0aGUgbGVuZ3RoIG9mCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIENTdHJpbmcKLSNlbmRpZgotICBTdHJpbmcgYXNT
dHJpbmcoKSBjb25zdDsgLy8vPCBFbWJlZGRlZCB6ZXJvZXMgYXJlIHBvc3NpYmxlLgotICAvKiog
R2V0IHJhdyBjaGFyKiBvZiBzdHJpbmctdmFsdWUuCi0gICAqICBccmV0dXJuIGZhbHNlIGlmICFz
dHJpbmcuIChTZWctZmF1bHQgaWYgc3RyIG9yIGVuZCBhcmUgTlVMTC4pCi0gICAqLwotICBib29s
IGdldFN0cmluZyhjaGFyIGNvbnN0KiogYmVnaW4sIGNoYXIgY29uc3QqKiBlbmQpIGNvbnN0Owot
I2lmZGVmIEpTT05fVVNFX0NQUFRMCi0gIENwcFRMOjpDb25zdFN0cmluZyBhc0NvbnN0U3RyaW5n
KCkgY29uc3Q7Ci0jZW5kaWYKLSAgSW50IGFzSW50KCkgY29uc3Q7Ci0gIFVJbnQgYXNVSW50KCkg
Y29uc3Q7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgSW50NjQgYXNJbnQ2NCgpIGNv
bnN0OwotICBVSW50NjQgYXNVSW50NjQoKSBjb25zdDsKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKEpT
T05fSEFTX0lOVDY0KQotICBMYXJnZXN0SW50IGFzTGFyZ2VzdEludCgpIGNvbnN0OwotICBMYXJn
ZXN0VUludCBhc0xhcmdlc3RVSW50KCkgY29uc3Q7Ci0gIGZsb2F0IGFzRmxvYXQoKSBjb25zdDsK
LSAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7Ci0gIGJvb2wgYXNCb29sKCkgY29uc3Q7Ci0KLSAg
Ym9vbCBpc051bGwoKSBjb25zdDsKLSAgYm9vbCBpc0Jvb2woKSBjb25zdDsKLSAgYm9vbCBpc0lu
dCgpIGNvbnN0OwotICBib29sIGlzSW50NjQoKSBjb25zdDsKLSAgYm9vbCBpc1VJbnQoKSBjb25z
dDsKLSAgYm9vbCBpc1VJbnQ2NCgpIGNvbnN0OwotICBib29sIGlzSW50ZWdyYWwoKSBjb25zdDsK
LSAgYm9vbCBpc0RvdWJsZSgpIGNvbnN0OwotICBib29sIGlzTnVtZXJpYygpIGNvbnN0OwotICBi
b29sIGlzU3RyaW5nKCkgY29uc3Q7Ci0gIGJvb2wgaXNBcnJheSgpIGNvbnN0OwotICBib29sIGlz
T2JqZWN0KCkgY29uc3Q7Ci0KLSAgYm9vbCBpc0NvbnZlcnRpYmxlVG8oVmFsdWVUeXBlIG90aGVy
KSBjb25zdDsKLQotICAvLy8gTnVtYmVyIG9mIHZhbHVlcyBpbiBhcnJheSBvciBvYmplY3QKLSAg
QXJyYXlJbmRleCBzaXplKCkgY29uc3Q7Ci0KLSAgLy8vIFxicmllZiBSZXR1cm4gdHJ1ZSBpZiBl
bXB0eSBhcnJheSwgZW1wdHkgb2JqZWN0LCBvciBudWxsOwotICAvLy8gb3RoZXJ3aXNlLCBmYWxz
ZS4KLSAgYm9vbCBlbXB0eSgpIGNvbnN0OwotCi0gIC8vLyBSZXR1cm4gIWlzTnVsbCgpCi0gIEpT
T05DUFBfT1BfRVhQTElDSVQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwotCi0gIC8vLyBSZW1vdmUg
YWxsIG9iamVjdCBtZW1iZXJzIGFuZCBhcnJheSBlbGVtZW50cy4KLSAgLy8vIFxwcmUgdHlwZSgp
IGlzIGFycmF5VmFsdWUsIG9iamVjdFZhbHVlLCBvciBudWxsVmFsdWUKLSAgLy8vIFxwb3N0IHR5
cGUoKSBpcyB1bmNoYW5nZWQKLSAgdm9pZCBjbGVhcigpOwotCi0gIC8vLyBSZXNpemUgdGhlIGFy
cmF5IHRvIG5ld1NpemUgZWxlbWVudHMuCi0gIC8vLyBOZXcgZWxlbWVudHMgYXJlIGluaXRpYWxp
emVkIHRvIG51bGwuCi0gIC8vLyBNYXkgb25seSBiZSBjYWxsZWQgb24gbnVsbFZhbHVlIG9yIGFy
cmF5VmFsdWUuCi0gIC8vLyBccHJlIHR5cGUoKSBpcyBhcnJheVZhbHVlIG9yIG51bGxWYWx1ZQot
ICAvLy8gXHBvc3QgdHlwZSgpIGlzIGFycmF5VmFsdWUKLSAgdm9pZCByZXNpemUoQXJyYXlJbmRl
eCBuZXdTaXplKTsKLQotICAvLy8gQWNjZXNzIGFuIGFycmF5IGVsZW1lbnQgKHplcm8gYmFzZWQg
aW5kZXggKS4KLSAgLy8vIElmIHRoZSBhcnJheSBjb250YWlucyBsZXNzIHRoYW4gaW5kZXggZWxl
bWVudCwgdGhlbiBudWxsIHZhbHVlIGFyZQotICAvLy8gaW5zZXJ0ZWQKLSAgLy8vIGluIHRoZSBh
cnJheSBzbyB0aGF0IGl0cyBzaXplIGlzIGluZGV4KzEuCi0gIC8vLyAoWW91IG1heSBuZWVkIHRv
IHNheSAndmFsdWVbMHVdJyB0byBnZXQgeW91ciBjb21waWxlciB0byBkaXN0aW5ndWlzaAotICAv
Ly8gIHRoaXMgZnJvbSB0aGUgb3BlcmF0b3JbXSB3aGljaCB0YWtlcyBhIHN0cmluZy4pCi0gIFZh
bHVlJiBvcGVyYXRvcltdKEFycmF5SW5kZXggaW5kZXgpOwotCi0gIC8vLyBBY2Nlc3MgYW4gYXJy
YXkgZWxlbWVudCAoemVybyBiYXNlZCBpbmRleCApLgotICAvLy8gSWYgdGhlIGFycmF5IGNvbnRh
aW5zIGxlc3MgdGhhbiBpbmRleCBlbGVtZW50LCB0aGVuIG51bGwgdmFsdWUgYXJlCi0gIC8vLyBp
bnNlcnRlZAotICAvLy8gaW4gdGhlIGFycmF5IHNvIHRoYXQgaXRzIHNpemUgaXMgaW5kZXgrMS4K
LSAgLy8vIChZb3UgbWF5IG5lZWQgdG8gc2F5ICd2YWx1ZVswdV0nIHRvIGdldCB5b3VyIGNvbXBp
bGVyIHRvIGRpc3Rpbmd1aXNoCi0gIC8vLyAgdGhpcyBmcm9tIHRoZSBvcGVyYXRvcltdIHdoaWNo
IHRha2VzIGEgc3RyaW5nLikKLSAgVmFsdWUmIG9wZXJhdG9yW10oaW50IGluZGV4KTsKLQotICAv
Ly8gQWNjZXNzIGFuIGFycmF5IGVsZW1lbnQgKHplcm8gYmFzZWQgaW5kZXggKQotICAvLy8gKFlv
dSBtYXkgbmVlZCB0byBzYXkgJ3ZhbHVlWzB1XScgdG8gZ2V0IHlvdXIgY29tcGlsZXIgdG8gZGlz
dGluZ3Vpc2gKLSAgLy8vICB0aGlzIGZyb20gdGhlIG9wZXJhdG9yW10gd2hpY2ggdGFrZXMgYSBz
dHJpbmcuKQotICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShBcnJheUluZGV4IGluZGV4KSBjb25z
dDsKLQotICAvLy8gQWNjZXNzIGFuIGFycmF5IGVsZW1lbnQgKHplcm8gYmFzZWQgaW5kZXggKQot
ICAvLy8gKFlvdSBtYXkgbmVlZCB0byBzYXkgJ3ZhbHVlWzB1XScgdG8gZ2V0IHlvdXIgY29tcGls
ZXIgdG8gZGlzdGluZ3Vpc2gKLSAgLy8vICB0aGlzIGZyb20gdGhlIG9wZXJhdG9yW10gd2hpY2gg
dGFrZXMgYSBzdHJpbmcuKQotICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShpbnQgaW5kZXgpIGNv
bnN0OwotCi0gIC8vLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgYXQgbGVhc3QgaW5kZXgrMSBlbGVt
ZW50cywgcmV0dXJucyB0aGUgZWxlbWVudAotICAvLy8gdmFsdWUsCi0gIC8vLyBvdGhlcndpc2Ug
cmV0dXJucyBkZWZhdWx0VmFsdWUuCi0gIFZhbHVlIGdldChBcnJheUluZGV4IGluZGV4LCBjb25z
dCBWYWx1ZSYgZGVmYXVsdFZhbHVlKSBjb25zdDsKLSAgLy8vIFJldHVybiB0cnVlIGlmIGluZGV4
IDwgc2l6ZSgpLgotICBib29sIGlzVmFsaWRJbmRleChBcnJheUluZGV4IGluZGV4KSBjb25zdDsK
LSAgLy8vIFxicmllZiBBcHBlbmQgdmFsdWUgdG8gYXJyYXkgYXQgdGhlIGVuZC4KLSAgLy8vCi0g
IC8vLyBFcXVpdmFsZW50IHRvIGpzb252YWx1ZVtqc29udmFsdWUuc2l6ZSgpXSA9IHZhbHVlOwot
ICBWYWx1ZSYgYXBwZW5kKGNvbnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIFZhbHVlJiBhcHBlbmQoVmFs
dWUmJiB2YWx1ZSk7Ci0KLSAgLy8vIEFjY2VzcyBhbiBvYmplY3QgdmFsdWUgYnkgbmFtZSwgY3Jl
YXRlIGEgbnVsbCBtZW1iZXIgaWYgaXQgZG9lcyBub3QgZXhpc3QuCi0gIC8vLyBcbm90ZSBCZWNh
dXNlIG9mIG91ciBpbXBsZW1lbnRhdGlvbiwga2V5cyBhcmUgbGltaXRlZCB0byAyXjMwIC0xIGNo
YXJzLgotICAvLy8gIEV4Y2VlZGluZyB0aGF0IHdpbGwgY2F1c2UgYW4gZXhjZXB0aW9uLgotICBW
YWx1ZSYgb3BlcmF0b3JbXShjb25zdCBjaGFyKiBrZXkpOwotICAvLy8gQWNjZXNzIGFuIG9iamVj
dCB2YWx1ZSBieSBuYW1lLCByZXR1cm5zIG51bGwgaWYgdGhlcmUgaXMgbm8gbWVtYmVyIHdpdGgK
LSAgLy8vIHRoYXQgbmFtZS4KLSAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oY29uc3QgY2hhciog
a2V5KSBjb25zdDsKLSAgLy8vIEFjY2VzcyBhbiBvYmplY3QgdmFsdWUgYnkgbmFtZSwgY3JlYXRl
IGEgbnVsbCBtZW1iZXIgaWYgaXQgZG9lcyBub3QgZXhpc3QuCi0gIC8vLyBccGFyYW0ga2V5IG1h
eSBjb250YWluIGVtYmVkZGVkIG51bGxzLgotICBWYWx1ZSYgb3BlcmF0b3JbXShjb25zdCBTdHJp
bmcmIGtleSk7Ci0gIC8vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIHJldHVybnMg
bnVsbCBpZiB0aGVyZSBpcyBubyBtZW1iZXIgd2l0aAotICAvLy8gdGhhdCBuYW1lLgotICAvLy8g
XHBhcmFtIGtleSBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscy4KLSAgY29uc3QgVmFsdWUmIG9w
ZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAvKiogXGJyaWVmIEFjY2VzcyBh
biBvYmplY3QgdmFsdWUgYnkgbmFtZSwgY3JlYXRlIGEgbnVsbCBtZW1iZXIgaWYgaXQgZG9lcyBu
b3QKLSAgIGV4aXN0LgotCi0gICAqIElmIHRoZSBvYmplY3QgaGFzIG5vIGVudHJ5IGZvciB0aGF0
IG5hbWUsIHRoZW4gdGhlIG1lbWJlciBuYW1lIHVzZWQgdG8KLSAgIHN0b3JlCi0gICAqIHRoZSBu
ZXcgZW50cnkgaXMgbm90IGR1cGxpY2F0ZWQuCi0gICAqIEV4YW1wbGUgb2YgdXNlOgotICAgKiBc
Y29kZQotICAgKiBKc29uOjpWYWx1ZSBvYmplY3Q7Ci0gICAqIHN0YXRpYyBjb25zdCBTdGF0aWNT
dHJpbmcgY29kZSgiY29kZSIpOwotICAgKiBvYmplY3RbY29kZV0gPSAxMjM0OwotICAgKiBcZW5k
Y29kZQotICAgKi8KLSAgVmFsdWUmIG9wZXJhdG9yW10oY29uc3QgU3RhdGljU3RyaW5nJiBrZXkp
OwotI2lmZGVmIEpTT05fVVNFX0NQUFRMCi0gIC8vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5
IG5hbWUsIGNyZWF0ZSBhIG51bGwgbWVtYmVyIGlmIGl0IGRvZXMgbm90IGV4aXN0LgotICBWYWx1
ZSYgb3BlcmF0b3JbXShjb25zdCBDcHBUTDo6Q29uc3RTdHJpbmcmIGtleSk7Ci0gIC8vLyBBY2Nl
c3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIHJldHVybnMgbnVsbCBpZiB0aGVyZSBpcyBubyBt
ZW1iZXIgd2l0aAotICAvLy8gdGhhdCBuYW1lLgotICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShj
b25zdCBDcHBUTDo6Q29uc3RTdHJpbmcmIGtleSkgY29uc3Q7Ci0jZW5kaWYKLSAgLy8vIFJldHVy
biB0aGUgbWVtYmVyIG5hbWVkIGtleSBpZiBpdCBleGlzdCwgZGVmYXVsdFZhbHVlIG90aGVyd2lz
ZS4KLSAgLy8vIFxub3RlIGRlZXAgY29weQotICBWYWx1ZSBnZXQoY29uc3QgY2hhcioga2V5LCBj
b25zdCBWYWx1ZSYgZGVmYXVsdFZhbHVlKSBjb25zdDsKLSAgLy8vIFJldHVybiB0aGUgbWVtYmVy
IG5hbWVkIGtleSBpZiBpdCBleGlzdCwgZGVmYXVsdFZhbHVlIG90aGVyd2lzZS4KLSAgLy8vIFxu
b3RlIGRlZXAgY29weQotICAvLy8gXG5vdGUga2V5IG1heSBjb250YWluIGVtYmVkZGVkIG51bGxz
LgotICBWYWx1ZQotICBnZXQoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCwgY29u
c3QgVmFsdWUmIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0gIC8vLyBSZXR1cm4gdGhlIG1lbWJlciBu
YW1lZCBrZXkgaWYgaXQgZXhpc3QsIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuCi0gIC8vLyBcbm90
ZSBkZWVwIGNvcHkKLSAgLy8vIFxwYXJhbSBrZXkgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbHMu
Ci0gIFZhbHVlIGdldChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgVmFsdWUmIGRlZmF1bHRWYWx1
ZSkgY29uc3Q7Ci0jaWZkZWYgSlNPTl9VU0VfQ1BQVEwKLSAgLy8vIFJldHVybiB0aGUgbWVtYmVy
IG5hbWVkIGtleSBpZiBpdCBleGlzdCwgZGVmYXVsdFZhbHVlIG90aGVyd2lzZS4KLSAgLy8vIFxu
b3RlIGRlZXAgY29weQotICBWYWx1ZSBnZXQoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiBrZXks
IGNvbnN0IFZhbHVlJiBkZWZhdWx0VmFsdWUpIGNvbnN0OwotI2VuZGlmCi0gIC8vLyBNb3N0IGdl
bmVyYWwgYW5kIGVmZmljaWVudCB2ZXJzaW9uIG9mIGlzTWVtYmVyKCljb25zdCwgZ2V0KCljb25z
dCwKLSAgLy8vIGFuZCBvcGVyYXRvcltdY29uc3QKLSAgLy8vIFxub3RlIEFzIHN0YXRlZCBlbHNl
d2hlcmUsIGJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiAoZW5kLWJlZ2luKSA+PSAyXjMwCi0gIFZh
bHVlIGNvbnN0KiBmaW5kKGNoYXIgY29uc3QqIGJlZ2luLCBjaGFyIGNvbnN0KiBlbmQpIGNvbnN0
OwotICAvLy8gTW9zdCBnZW5lcmFsIGFuZCBlZmZpY2llbnQgdmVyc2lvbiBvZiBvYmplY3QtbXV0
YXRvcnMuCi0gIC8vLyBcbm90ZSBBcyBzdGF0ZWQgZWxzZXdoZXJlLCBiZWhhdmlvciBpcyB1bmRl
ZmluZWQgaWYgKGVuZC1iZWdpbikgPj0gMl4zMAotICAvLy8gXHJldHVybiBub24temVybywgYnV0
IEpTT05fQVNTRVJUIGlmIHRoaXMgaXMgbmVpdGhlciBvYmplY3Qgbm9yIG51bGxWYWx1ZS4KLSAg
VmFsdWUqIGRlbWFuZChjaGFyIGNvbnN0KiBiZWdpbiwgY2hhciBjb25zdCogZW5kKTsKLSAgLy8v
IFxicmllZiBSZW1vdmUgYW5kIHJldHVybiB0aGUgbmFtZWQgbWVtYmVyLgotICAvLy8KLSAgLy8v
IERvIG5vdGhpbmcgaWYgaXQgZGlkIG5vdCBleGlzdC4KLSAgLy8vIFxwcmUgdHlwZSgpIGlzIG9i
amVjdFZhbHVlIG9yIG51bGxWYWx1ZQotICAvLy8gXHBvc3QgdHlwZSgpIGlzIHVuY2hhbmdlZAot
ICB2b2lkIHJlbW92ZU1lbWJlcihjb25zdCBjaGFyKiBrZXkpOwotICAvLy8gU2FtZSBhcyByZW1v
dmVNZW1iZXIoY29uc3QgY2hhciopCi0gIC8vLyBccGFyYW0ga2V5IG1heSBjb250YWluIGVtYmVk
ZGVkIG51bGxzLgotICB2b2lkIHJlbW92ZU1lbWJlcihjb25zdCBTdHJpbmcmIGtleSk7Ci0gIC8v
LyBTYW1lIGFzIHJlbW92ZU1lbWJlcihjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5k
LCBWYWx1ZSogcmVtb3ZlZCksCi0gIC8vLyBidXQgJ2tleScgaXMgbnVsbC10ZXJtaW5hdGVkLgot
ICBib29sIHJlbW92ZU1lbWJlcihjb25zdCBjaGFyKiBrZXksIFZhbHVlKiByZW1vdmVkKTsKLSAg
LyoqIFxicmllZiBSZW1vdmUgdGhlIG5hbWVkIG1hcCBtZW1iZXIuCi0KLSAgICAgIFVwZGF0ZSAn
cmVtb3ZlZCcgaWZmIHJlbW92ZWQuCi0gICAgICBccGFyYW0ga2V5IG1heSBjb250YWluIGVtYmVk
ZGVkIG51bGxzLgotICAgICAgXHJldHVybiB0cnVlIGlmZiByZW1vdmVkIChubyBleGNlcHRpb25z
KQotICAqLwotICBib29sIHJlbW92ZU1lbWJlcihTdHJpbmcgY29uc3QmIGtleSwgVmFsdWUqIHJl
bW92ZWQpOwotICAvLy8gU2FtZSBhcyByZW1vdmVNZW1iZXIoU3RyaW5nIGNvbnN0JiBrZXksIFZh
bHVlKiByZW1vdmVkKQotICBib29sIHJlbW92ZU1lbWJlcihjb25zdCBjaGFyKiBiZWdpbiwgY29u
c3QgY2hhciogZW5kLCBWYWx1ZSogcmVtb3ZlZCk7Ci0gIC8qKiBcYnJpZWYgUmVtb3ZlIHRoZSBp
bmRleGVkIGFycmF5IGVsZW1lbnQuCi0KLSAgICAgIE8obikgZXhwZW5zaXZlIG9wZXJhdGlvbnMu
Ci0gICAgICBVcGRhdGUgJ3JlbW92ZWQnIGlmZiByZW1vdmVkLgotICAgICAgXHJldHVybiB0cnVl
IGlmIHJlbW92ZWQgKG5vIGV4Y2VwdGlvbnMpCi0gICovCi0gIGJvb2wgcmVtb3ZlSW5kZXgoQXJy
YXlJbmRleCBpbmRleCwgVmFsdWUqIHJlbW92ZWQpOwotCi0gIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgb2JqZWN0IGhhcyBhIG1lbWJlciBuYW1lZCBrZXkuCi0gIC8vLyBcbm90ZSAna2V5JyBtdXN0
IGJlIG51bGwtdGVybWluYXRlZC4KLSAgYm9vbCBpc01lbWJlcihjb25zdCBjaGFyKiBrZXkpIGNv
bnN0OwotICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBoYXMgYSBtZW1iZXIgbmFtZWQg
a2V5LgotICAvLy8gXHBhcmFtIGtleSBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscy4KLSAgYm9v
bCBpc01lbWJlcihjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7Ci0gIC8vLyBTYW1lIGFzIGlzTWVt
YmVyKFN0cmluZyBjb25zdCYga2V5KWNvbnN0Ci0gIGJvb2wgaXNNZW1iZXIoY29uc3QgY2hhciog
YmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkgY29uc3Q7Ci0jaWZkZWYgSlNPTl9VU0VfQ1BQVEwKLSAg
Ly8vIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgbWVtYmVyIG5hbWVkIGtleS4KLSAg
Ym9vbCBpc01lbWJlcihjb25zdCBDcHBUTDo6Q29uc3RTdHJpbmcmIGtleSkgY29uc3Q7Ci0jZW5k
aWYKLQotICAvLy8gXGJyaWVmIFJldHVybiBhIGxpc3Qgb2YgdGhlIG1lbWJlciBuYW1lcy4KLSAg
Ly8vCi0gIC8vLyBJZiBudWxsLCByZXR1cm4gYW4gZW1wdHkgbGlzdC4KLSAgLy8vIFxwcmUgdHlw
ZSgpIGlzIG9iamVjdFZhbHVlIG9yIG51bGxWYWx1ZQotICAvLy8gXHBvc3QgaWYgdHlwZSgpIHdh
cyBudWxsVmFsdWUsIGl0IHJlbWFpbnMgbnVsbFZhbHVlCi0gIE1lbWJlcnMgZ2V0TWVtYmVyTmFt
ZXMoKSBjb25zdDsKLQotICAvLyMgaWZkZWYgSlNPTl9VU0VfQ1BQVEwKLSAgLy8gICAgICBFbnVt
TWVtYmVyTmFtZXMgZW51bU1lbWJlck5hbWVzKCkgY29uc3Q7Ci0gIC8vICAgICAgRW51bVZhbHVl
cyBlbnVtVmFsdWVzKCkgY29uc3Q7Ci0gIC8vIyBlbmRpZgotCi0gIC8vLyBcZGVwcmVjYXRlZCBB
bHdheXMgcGFzcyBsZW4uCi0gIEpTT05DUFBfREVQUkVDQVRFRCgiVXNlIHNldENvbW1lbnQoU3Ry
aW5nIGNvbnN0JikgaW5zdGVhZC4iKQotICB2b2lkIHNldENvbW1lbnQoY29uc3QgY2hhciogY29t
bWVudCwgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQpIHsKLSAgICBzZXRDb21tZW50KFN0cmlu
Zyhjb21tZW50LCBzdHJsZW4oY29tbWVudCkpLCBwbGFjZW1lbnQpOwotICB9Ci0gIC8vLyBDb21t
ZW50cyBtdXN0IGJlIC8vLi4uIG9yIC8qIC4uLiAqLwotICB2b2lkIHNldENvbW1lbnQoY29uc3Qg
Y2hhciogY29tbWVudCwgc2l6ZV90IGxlbiwgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQpIHsK
LSAgICBzZXRDb21tZW50KFN0cmluZyhjb21tZW50LCBsZW4pLCBwbGFjZW1lbnQpOwotICB9Ci0g
IC8vLyBDb21tZW50cyBtdXN0IGJlIC8vLi4uIG9yIC8qIC4uLiAqLwotICB2b2lkIHNldENvbW1l
bnQoU3RyaW5nIGNvbW1lbnQsIENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KTsKLSAgYm9vbCBo
YXNDb21tZW50KENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSBjb25zdDsKLSAgLy8vIEluY2x1
ZGUgZGVsaW1pdGVycyBhbmQgZW1iZWRkZWQgbmV3bGluZXMuCi0gIFN0cmluZyBnZXRDb21tZW50
KENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSBjb25zdDsKLQotICBTdHJpbmcgdG9TdHlsZWRT
dHJpbmcoKSBjb25zdDsKLQotICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OwotICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdDsKLQotICBpdGVyYXRvciBiZWdpbigpOwotICBpdGVyYXRv
ciBlbmQoKTsKLQotICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBbc3RhcnQsIGxpbWl0KSByYW5nZSBv
ZiBieXRlcyB3aXRoaW4gdGhlIEpTT04gdGV4dCBmcm9tCi0gIC8vIHdoaWNoIHRoaXMgdmFsdWUg
d2FzIHBhcnNlZCwgaWYgYW55LgotICB2b2lkIHNldE9mZnNldFN0YXJ0KHB0cmRpZmZfdCBzdGFy
dCk7Ci0gIHZvaWQgc2V0T2Zmc2V0TGltaXQocHRyZGlmZl90IGxpbWl0KTsKLSAgcHRyZGlmZl90
IGdldE9mZnNldFN0YXJ0KCkgY29uc3Q7Ci0gIHB0cmRpZmZfdCBnZXRPZmZzZXRMaW1pdCgpIGNv
bnN0OwotCi1wcml2YXRlOgotICB2b2lkIHNldFR5cGUoVmFsdWVUeXBlIHYpIHsKLSAgICBiaXRz
Xy52YWx1ZV90eXBlXyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHYpOwotICB9Ci0gIGJv
b2wgaXNBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiBiaXRzXy5hbGxvY2F0ZWRfOyB9Ci0gIHZv
aWQgc2V0SXNBbGxvY2F0ZWQoYm9vbCB2KSB7IGJpdHNfLmFsbG9jYXRlZF8gPSB2OyB9Ci0KLSAg
dm9pZCBpbml0QmFzaWMoVmFsdWVUeXBlIHR5cGUsIGJvb2wgYWxsb2NhdGVkID0gZmFsc2UpOwot
ICB2b2lkIGR1cFBheWxvYWQoY29uc3QgVmFsdWUmIG90aGVyKTsKLSAgdm9pZCByZWxlYXNlUGF5
bG9hZCgpOwotICB2b2lkIGR1cE1ldGEoY29uc3QgVmFsdWUmIG90aGVyKTsKLQotICBWYWx1ZSYg
cmVzb2x2ZVJlZmVyZW5jZShjb25zdCBjaGFyKiBrZXkpOwotICBWYWx1ZSYgcmVzb2x2ZVJlZmVy
ZW5jZShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIGVuZCk7Ci0KLSAgLy8gc3RydWN0IE1l
bWJlck5hbWVzVHJhbnNmb3JtCi0gIC8vewotICAvLyAgIHR5cGVkZWYgY29uc3QgY2hhciAqcmVz
dWx0X3R5cGU7Ci0gIC8vICAgY29uc3QgY2hhciAqb3BlcmF0b3IoKSggY29uc3QgQ1pTdHJpbmcg
Jm5hbWUgKSBjb25zdAotICAvLyAgIHsKLSAgLy8gICAgICByZXR1cm4gbmFtZS5jX3N0cigpOwot
ICAvLyAgIH0KLSAgLy99OwotCi0gIHVuaW9uIFZhbHVlSG9sZGVyIHsKLSAgICBMYXJnZXN0SW50
IGludF87Ci0gICAgTGFyZ2VzdFVJbnQgdWludF87Ci0gICAgZG91YmxlIHJlYWxfOwotICAgIGJv
b2wgYm9vbF87Ci0gICAgY2hhciogc3RyaW5nXzsgLy8gaWYgYWxsb2NhdGVkXywgcHRyIHRvIHsg
dW5zaWduZWQsIGNoYXJbXSB9LgotICAgIE9iamVjdFZhbHVlcyogbWFwXzsKLSAgfSB2YWx1ZV87
Ci0KLSAgc3RydWN0IHsKLSAgICAvLyBSZWFsbHkgYSBWYWx1ZVR5cGUsIGJ1dCB0eXBlcyBzaG91
bGQgYWdyZWUgZm9yIGJpdGZpZWxkIHBhY2tpbmcuCi0gICAgdW5zaWduZWQgaW50IHZhbHVlX3R5
cGVfIDogODsKLSAgICAvLyBVbmxlc3MgYWxsb2NhdGVkXywgc3RyaW5nXyBtdXN0IGJlIG51bGwt
dGVybWluYXRlZC4KLSAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGVkXyA6IDE7Ci0gIH0gYml0c187
Ci0KLSAgY2xhc3MgQ29tbWVudHMgewotICBwdWJsaWM6Ci0gICAgQ29tbWVudHMoKSA9IGRlZmF1
bHQ7Ci0gICAgQ29tbWVudHMoY29uc3QgQ29tbWVudHMmIHRoYXQpOwotICAgIENvbW1lbnRzKENv
bW1lbnRzJiYgdGhhdCk7Ci0gICAgQ29tbWVudHMmIG9wZXJhdG9yPShjb25zdCBDb21tZW50cyYg
dGhhdCk7Ci0gICAgQ29tbWVudHMmIG9wZXJhdG9yPShDb21tZW50cyYmIHRoYXQpOwotICAgIGJv
b2wgaGFzKENvbW1lbnRQbGFjZW1lbnQgc2xvdCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdldChDb21t
ZW50UGxhY2VtZW50IHNsb3QpIGNvbnN0OwotICAgIHZvaWQgc2V0KENvbW1lbnRQbGFjZW1lbnQg
c2xvdCwgU3RyaW5nIHMpOwotCi0gIHByaXZhdGU6Ci0gICAgdXNpbmcgQXJyYXkgPSBzdGQ6OmFy
cmF5PFN0cmluZywgbnVtYmVyT2ZDb21tZW50UGxhY2VtZW50PjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXk+IHB0cl87Ci0gIH07Ci0gIENvbW1lbnRzIGNvbW1lbnRzXzsKLQotICAvLyBbc3Rh
cnQsIGxpbWl0KSBieXRlIG9mZnNldHMgaW4gdGhlIHNvdXJjZSBKU09OIHRleHQgZnJvbSB3aGlj
aCB0aGlzIFZhbHVlCi0gIC8vIHdhcyBleHRyYWN0ZWQuCi0gIHB0cmRpZmZfdCBzdGFydF87Ci0g
IHB0cmRpZmZfdCBsaW1pdF87Ci19OwotCi0vKiogXGJyaWVmIEV4cGVyaW1lbnRhbCBhbmQgdW50
ZXN0ZWQ6IHJlcHJlc2VudHMgYW4gZWxlbWVudCBvZiB0aGUgInBhdGgiIHRvCi0gKiBhY2Nlc3Mg
YSBub2RlLgotICovCi1jbGFzcyBKU09OX0FQSSBQYXRoQXJndW1lbnQgewotcHVibGljOgotICBm
cmllbmQgY2xhc3MgUGF0aDsKLQotICBQYXRoQXJndW1lbnQoKTsKLSAgUGF0aEFyZ3VtZW50KEFy
cmF5SW5kZXggaW5kZXgpOwotICBQYXRoQXJndW1lbnQoY29uc3QgY2hhcioga2V5KTsKLSAgUGF0
aEFyZ3VtZW50KGNvbnN0IFN0cmluZyYga2V5KTsKLQotcHJpdmF0ZToKLSAgZW51bSBLaW5kIHsg
a2luZE5vbmUgPSAwLCBraW5kSW5kZXgsIGtpbmRLZXkgfTsKLSAgU3RyaW5nIGtleV87Ci0gIEFy
cmF5SW5kZXggaW5kZXhfe307Ci0gIEtpbmQga2luZF97a2luZE5vbmV9OwotfTsKLQotLyoqIFxi
cmllZiBFeHBlcmltZW50YWwgYW5kIHVudGVzdGVkOiByZXByZXNlbnRzIGEgInBhdGgiIHRvIGFj
Y2VzcyBhIG5vZGUuCi0gKgotICogU3ludGF4OgotICogLSAiLiIgPT4gcm9vdCBub2RlCi0gKiAt
ICIuW25dIiA9PiBlbGVtZW50cyBhdCBpbmRleCAnbicgb2Ygcm9vdCBub2RlIChhbiBhcnJheSB2
YWx1ZSkKLSAqIC0gIi5uYW1lIiA9PiBtZW1iZXIgbmFtZWQgJ25hbWUnIG9mIHJvb3Qgbm9kZSAo
YW4gb2JqZWN0IHZhbHVlKQotICogLSAiLm5hbWUxLm5hbWUyLm5hbWUzIgotICogLSAiLlswXVsx
XVsyXS5uYW1lMVszXSIKLSAqIC0gIi4lIiA9PiBtZW1iZXIgbmFtZSBpcyBwcm92aWRlZCBhcyBw
YXJhbWV0ZXIKLSAqIC0gIi5bJV0iID0+IGluZGV4IGlzIHByb3ZpZWQgYXMgcGFyYW1ldGVyCi0g
Ki8KLWNsYXNzIEpTT05fQVBJIFBhdGggewotcHVibGljOgotICBQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwKLSAgICAgICBjb25zdCBQYXRoQXJndW1lbnQmIGExID0gUGF0aEFyZ3VtZW50KCksCi0g
ICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhMiA9IFBhdGhBcmd1bWVudCgpLAotICAgICAgIGNv
bnN0IFBhdGhBcmd1bWVudCYgYTMgPSBQYXRoQXJndW1lbnQoKSwKLSAgICAgICBjb25zdCBQYXRo
QXJndW1lbnQmIGE0ID0gUGF0aEFyZ3VtZW50KCksCi0gICAgICAgY29uc3QgUGF0aEFyZ3VtZW50
JiBhNSA9IFBhdGhBcmd1bWVudCgpKTsKLQotICBjb25zdCBWYWx1ZSYgcmVzb2x2ZShjb25zdCBW
YWx1ZSYgcm9vdCkgY29uc3Q7Ci0gIFZhbHVlIHJlc29sdmUoY29uc3QgVmFsdWUmIHJvb3QsIGNv
bnN0IFZhbHVlJiBkZWZhdWx0VmFsdWUpIGNvbnN0OwotICAvLy8gQ3JlYXRlcyB0aGUgInBhdGgi
IHRvIGFjY2VzcyB0aGUgc3BlY2lmaWVkIG5vZGUgYW5kIHJldHVybnMgYSByZWZlcmVuY2Ugb24K
LSAgLy8vIHRoZSBub2RlLgotICBWYWx1ZSYgbWFrZShWYWx1ZSYgcm9vdCkgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y29uc3QgUGF0aEFyZ3VtZW50Kj4gSW5Bcmdz
OwotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFBhdGhBcmd1bWVudD4gQXJnczsKLQotICB2b2lkIG1h
a2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSW5BcmdzJiBpbik7Ci0gIHZvaWQgYWRk
UGF0aEluQXJnKGNvbnN0IFN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SW5BcmdzJiBpbiwKLSAgICAgICAgICAgICAgICAgICAgSW5BcmdzOjpjb25zdF9pdGVyYXRvciYg
aXRJbkFyZywKLSAgICAgICAgICAgICAgICAgICAgUGF0aEFyZ3VtZW50OjpLaW5kIGtpbmQpOwot
ICBzdGF0aWMgdm9pZCBpbnZhbGlkUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGludCBsb2NhdGlv
bik7Ci0KLSAgQXJncyBhcmdzXzsKLX07Ci0KLS8qKiBcYnJpZWYgYmFzZSBjbGFzcyBmb3IgVmFs
dWUgaXRlcmF0b3JzLgotICoKLSAqLwotY2xhc3MgSlNPTl9BUEkgVmFsdWVJdGVyYXRvckJhc2Ug
ewotcHVibGljOgotICB0eXBlZGVmIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRl
cmF0b3JfY2F0ZWdvcnk7Ci0gIHR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKLSAgdHlwZWRl
ZiBpbnQgZGlmZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIFZhbHVlSXRlcmF0b3JCYXNlIFNlbGZU
eXBlOwotCi0gIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZWxmVHlwZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIGlzRXF1YWwob3RoZXIpOyB9Ci0KLSAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNlbGZU
eXBlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIWlzRXF1YWwob3RoZXIpOyB9Ci0KLSAgZGlmZmVy
ZW5jZV90eXBlIG9wZXJhdG9yLShjb25zdCBTZWxmVHlwZSYgb3RoZXIpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gb3RoZXIuY29tcHV0ZURpc3RhbmNlKCp0aGlzKTsKLSAgfQotCi0gIC8vLyBSZXR1cm4g
ZWl0aGVyIHRoZSBpbmRleCBvciB0aGUgbWVtYmVyIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgdmFs
dWUgYXMgYQotICAvLy8gVmFsdWUuCi0gIFZhbHVlIGtleSgpIGNvbnN0OwotCi0gIC8vLyBSZXR1
cm4gdGhlIGluZGV4IG9mIHRoZSByZWZlcmVuY2VkIFZhbHVlLCBvciAtMSBpZiBpdCBpcyBub3Qg
YW4KLSAgLy8vIGFycmF5VmFsdWUuCi0gIFVJbnQgaW5kZXgoKSBjb25zdDsKLQotICAvLy8gUmV0
dXJuIHRoZSBtZW1iZXIgbmFtZSBvZiB0aGUgcmVmZXJlbmNlZCBWYWx1ZSwgb3IgIiIgaWYgaXQg
aXMgbm90IGFuCi0gIC8vLyBvYmplY3RWYWx1ZS4KLSAgLy8vIFxub3RlIEF2b2lkIGBjX3N0cigp
YCBvbiByZXN1bHQsIGFzIGVtYmVkZGVkIHplcm9lcyBhcmUgcG9zc2libGUuCi0gIFN0cmluZyBu
YW1lKCkgY29uc3Q7Ci0KLSAgLy8vIFJldHVybiB0aGUgbWVtYmVyIG5hbWUgb2YgdGhlIHJlZmVy
ZW5jZWQgVmFsdWUuICIiIGlmIGl0IGlzIG5vdCBhbgotICAvLy8gb2JqZWN0VmFsdWUuCi0gIC8v
LyBcZGVwcmVjYXRlZCBUaGlzIGNhbm5vdCBiZSB1c2VkIGZvciBVVEYtOCBzdHJpbmdzLCBzaW5j
ZSB0aGVyZSBjYW4gYmUKLSAgLy8vIGVtYmVkZGVkIG51bGxzLgotICBKU09OQ1BQX0RFUFJFQ0FU
RUQoIlVzZSBga2V5ID0gbmFtZSgpO2AgaW5zdGVhZC4iKQotICBjaGFyIGNvbnN0KiBtZW1iZXJO
YW1lKCkgY29uc3Q7Ci0gIC8vLyBSZXR1cm4gdGhlIG1lbWJlciBuYW1lIG9mIHRoZSByZWZlcmVu
Y2VkIFZhbHVlLCBvciBOVUxMIGlmIGl0IGlzIG5vdCBhbgotICAvLy8gb2JqZWN0VmFsdWUuCi0g
IC8vLyBcbm90ZSBCZXR0ZXIgdmVyc2lvbiB0aGFuIG1lbWJlck5hbWUoKS4gQWxsb3dzIGVtYmVk
ZGVkIG51bGxzLgotICBjaGFyIGNvbnN0KiBtZW1iZXJOYW1lKGNoYXIgY29uc3QqKiBlbmQpIGNv
bnN0OwotCi1wcm90ZWN0ZWQ6Ci0gIFZhbHVlJiBkZXJlZigpIGNvbnN0OwotCi0gIHZvaWQgaW5j
cmVtZW50KCk7Ci0KLSAgdm9pZCBkZWNyZW1lbnQoKTsKLQotICBkaWZmZXJlbmNlX3R5cGUgY29t
cHV0ZURpc3RhbmNlKGNvbnN0IFNlbGZUeXBlJiBvdGhlcikgY29uc3Q7Ci0KLSAgYm9vbCBpc0Vx
dWFsKGNvbnN0IFNlbGZUeXBlJiBvdGhlcikgY29uc3Q7Ci0KLSAgdm9pZCBjb3B5KGNvbnN0IFNl
bGZUeXBlJiBvdGhlcik7Ci0KLXByaXZhdGU6Ci0gIFZhbHVlOjpPYmplY3RWYWx1ZXM6Oml0ZXJh
dG9yIGN1cnJlbnRfOwotICAvLyBJbmRpY2F0ZXMgdGhhdCBpdGVyYXRvciBpcyBmb3IgYSBudWxs
IHZhbHVlLgotICBib29sIGlzTnVsbF97dHJ1ZX07Ci0KLXB1YmxpYzoKLSAgLy8gRm9yIHNvbWUg
cmVhc29uLCBCT1JMQU5EIG5lZWRzIHRoZXNlIGF0IHRoZSBlbmQsIHJhdGhlcgotICAvLyB0aGFu
IGVhcmxpZXIuIE5vIGlkZWEgd2h5LgotICBWYWx1ZUl0ZXJhdG9yQmFzZSgpOwotICBleHBsaWNp
dCBWYWx1ZUl0ZXJhdG9yQmFzZShjb25zdCBWYWx1ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciYg
Y3VycmVudCk7Ci19OwotCi0vKiogXGJyaWVmIGNvbnN0IGl0ZXJhdG9yIGZvciBvYmplY3QgYW5k
IGFycmF5IHZhbHVlLgotICoKLSAqLwotY2xhc3MgSlNPTl9BUEkgVmFsdWVDb25zdEl0ZXJhdG9y
IDogcHVibGljIFZhbHVlSXRlcmF0b3JCYXNlIHsKLSAgZnJpZW5kIGNsYXNzIFZhbHVlOwotCi1w
dWJsaWM6Ci0gIHR5cGVkZWYgY29uc3QgVmFsdWUgdmFsdWVfdHlwZTsKLSAgLy8gdHlwZWRlZiB1
bnNpZ25lZCBpbnQgc2l6ZV90OwotICAvLyB0eXBlZGVmIGludCBkaWZmZXJlbmNlX3R5cGU7Ci0g
IHR5cGVkZWYgY29uc3QgVmFsdWUmIHJlZmVyZW5jZTsKLSAgdHlwZWRlZiBjb25zdCBWYWx1ZSog
cG9pbnRlcjsKLSAgdHlwZWRlZiBWYWx1ZUNvbnN0SXRlcmF0b3IgU2VsZlR5cGU7Ci0KLSAgVmFs
dWVDb25zdEl0ZXJhdG9yKCk7Ci0gIFZhbHVlQ29uc3RJdGVyYXRvcihWYWx1ZUl0ZXJhdG9yIGNv
bnN0JiBvdGhlcik7Ci0KLXByaXZhdGU6Ci0gIC8qISBcaW50ZXJuYWwgVXNlIGJ5IFZhbHVlIHRv
IGNyZWF0ZSBhbiBpdGVyYXRvci4KLSAgICovCi0gIGV4cGxpY2l0IFZhbHVlQ29uc3RJdGVyYXRv
cihjb25zdCBWYWx1ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciYgY3VycmVudCk7Ci0KLXB1Ymxp
YzoKLSAgU2VsZlR5cGUmIG9wZXJhdG9yPShjb25zdCBWYWx1ZUl0ZXJhdG9yQmFzZSYgb3RoZXIp
OwotCi0gIFNlbGZUeXBlIG9wZXJhdG9yKysoaW50KSB7Ci0gICAgU2VsZlR5cGUgdGVtcCgqdGhp
cyk7Ci0gICAgKysqdGhpczsKLSAgICByZXR1cm4gdGVtcDsKLSAgfQotCi0gIFNlbGZUeXBlIG9w
ZXJhdG9yLS0oaW50KSB7Ci0gICAgU2VsZlR5cGUgdGVtcCgqdGhpcyk7Ci0gICAgLS0qdGhpczsK
LSAgICByZXR1cm4gdGVtcDsKLSAgfQotCi0gIFNlbGZUeXBlJiBvcGVyYXRvci0tKCkgewotICAg
IGRlY3JlbWVudCgpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIFNlbGZUeXBlJiBvcGVy
YXRvcisrKCkgewotICAgIGluY3JlbWVudCgpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0g
IHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBkZXJlZigpOyB9Ci0KLSAgcG9p
bnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmRlcmVmKCk7IH0KLX07Ci0KLS8qKiBc
YnJpZWYgSXRlcmF0b3IgZm9yIG9iamVjdCBhbmQgYXJyYXkgdmFsdWUuCi0gKi8KLWNsYXNzIEpT
T05fQVBJIFZhbHVlSXRlcmF0b3IgOiBwdWJsaWMgVmFsdWVJdGVyYXRvckJhc2UgewotICBmcmll
bmQgY2xhc3MgVmFsdWU7Ci0KLXB1YmxpYzoKLSAgdHlwZWRlZiBWYWx1ZSB2YWx1ZV90eXBlOwot
ICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7Ci0gIHR5cGVkZWYgaW50IGRpZmZlcmVuY2Vf
dHlwZTsKLSAgdHlwZWRlZiBWYWx1ZSYgcmVmZXJlbmNlOwotICB0eXBlZGVmIFZhbHVlKiBwb2lu
dGVyOwotICB0eXBlZGVmIFZhbHVlSXRlcmF0b3IgU2VsZlR5cGU7Ci0KLSAgVmFsdWVJdGVyYXRv
cigpOwotICBleHBsaWNpdCBWYWx1ZUl0ZXJhdG9yKGNvbnN0IFZhbHVlQ29uc3RJdGVyYXRvciYg
b3RoZXIpOwotICBWYWx1ZUl0ZXJhdG9yKGNvbnN0IFZhbHVlSXRlcmF0b3ImIG90aGVyKTsKLQot
cHJpdmF0ZToKLSAgLyohIFxpbnRlcm5hbCBVc2UgYnkgVmFsdWUgdG8gY3JlYXRlIGFuIGl0ZXJh
dG9yLgotICAgKi8KLSAgZXhwbGljaXQgVmFsdWVJdGVyYXRvcihjb25zdCBWYWx1ZTo6T2JqZWN0
VmFsdWVzOjppdGVyYXRvciYgY3VycmVudCk7Ci0KLXB1YmxpYzoKLSAgU2VsZlR5cGUmIG9wZXJh
dG9yPShjb25zdCBTZWxmVHlwZSYgb3RoZXIpOwotCi0gIFNlbGZUeXBlIG9wZXJhdG9yKysoaW50
KSB7Ci0gICAgU2VsZlR5cGUgdGVtcCgqdGhpcyk7Ci0gICAgKysqdGhpczsKLSAgICByZXR1cm4g
dGVtcDsKLSAgfQotCi0gIFNlbGZUeXBlIG9wZXJhdG9yLS0oaW50KSB7Ci0gICAgU2VsZlR5cGUg
dGVtcCgqdGhpcyk7Ci0gICAgLS0qdGhpczsKLSAgICByZXR1cm4gdGVtcDsKLSAgfQotCi0gIFNl
bGZUeXBlJiBvcGVyYXRvci0tKCkgewotICAgIGRlY3JlbWVudCgpOwotICAgIHJldHVybiAqdGhp
czsKLSAgfQotCi0gIFNlbGZUeXBlJiBvcGVyYXRvcisrKCkgewotICAgIGluY3JlbWVudCgpOwot
ICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7
IHJldHVybiBkZXJlZigpOyB9Ci0KLSAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gJmRlcmVmKCk7IH0KLX07Ci0KLWlubGluZSB2b2lkIHN3YXAoVmFsdWUmIGEsIFZhbHVlJiBi
KSB7IGEuc3dhcChiKTsgfQotCi19IC8vIG5hbWVzcGFjZSBKc29uCi0KLSNwcmFnbWEgcGFjayhw
b3ApCi0KLSNpZiBkZWZpbmVkKEpTT05DUFBfRElTQUJMRV9ETExfSU5URVJGQUNFX1dBUk5JTkcp
Ci0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmIC8vIGlmIGRlZmluZWQoSlNPTkNQUF9ESVNB
QkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklORykKLQotI2VuZGlmIC8vIENQUFRMX0pTT05fSF9JTkNM
VURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vd3JpdGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1
ZGUvanNvbi93cml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJmZDM2YTdh
ODQ1Y2U4MTEyMTBjMGNiNDUyMDk5MGRjNjFkYzZhOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi93cml0ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDM2OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3Rl
IExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIg
TUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6
ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwg
b3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWZu
ZGVmIEpTT05fV1JJVEVSX0hfSU5DTFVERUQKLSNkZWZpbmUgSlNPTl9XUklURVJfSF9JTkNMVURF
RAotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0jaW5jbHVkZSAidmFsdWUu
aCIKLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRl
IDxvc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIERp
c2FibGUgd2FybmluZyBDNDI1MTogPGRhdGEgbWVtYmVyPjogPHR5cGU+IG5lZWRzIHRvIGhhdmUg
ZGxsLWludGVyZmFjZSB0bwotLy8gYmUgdXNlZCBieS4uLgotI2lmIGRlZmluZWQoSlNPTkNQUF9E
SVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklORykgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFn
bWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxKQotI2VuZGlm
IC8vIGlmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklORykKLQot
I3ByYWdtYSBwYWNrKHB1c2gsIDgpCi0KLW5hbWVzcGFjZSBKc29uIHsKLQotY2xhc3MgVmFsdWU7
Ci0KLS8qKgotCi1Vc2FnZToKLVxjb2RlCi0gIHVzaW5nIG5hbWVzcGFjZSBKc29uOwotICB2b2lk
IHdyaXRlVG9TdGRvdXQoU3RyZWFtV3JpdGVyOjpGYWN0b3J5IGNvbnN0JiBmYWN0b3J5LCBWYWx1
ZSBjb25zdCYgdmFsdWUpIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RyZWFtV3JpdGVyPiBjb25z
dCB3cml0ZXIoCi0gICAgICBmYWN0b3J5Lm5ld1N0cmVhbVdyaXRlcigpKTsKLSAgICB3cml0ZXIt
PndyaXRlKHZhbHVlLCAmc3RkOjpjb3V0KTsKLSAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOyAg
Ly8gYWRkIGxmIGFuZCBmbHVzaAotICB9Ci1cZW5kY29kZQotKi8KLWNsYXNzIEpTT05fQVBJIFN0
cmVhbVdyaXRlciB7Ci1wcm90ZWN0ZWQ6Ci0gIE9TdHJlYW0qIHNvdXRfOyAvLyBub3Qgb3duZWQ7
IHdpbGwgbm90IGRlbGV0ZQotcHVibGljOgotICBTdHJlYW1Xcml0ZXIoKTsKLSAgdmlydHVhbCB+
U3RyZWFtV3JpdGVyKCk7Ci0gIC8qKiBXcml0ZSBWYWx1ZSBpbnRvIGRvY3VtZW50IGFzIGNvbmZp
Z3VyZWQgaW4gc3ViLWNsYXNzLgotICAgICAgRG8gbm90IHRha2Ugb3duZXJzaGlwIG9mIHNvdXQs
IGJ1dCBtYWludGFpbiBhIHJlZmVyZW5jZSBkdXJpbmcgZnVuY3Rpb24uCi0gICAgICBccHJlIHNv
dXQgIT0gTlVMTAotICAgICAgXHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MgKEZvciBub3csIHdlIGFs
d2F5cyByZXR1cm4gemVybywgc28gY2hlY2sgdGhlCi0gICAgIHN0cmVhbSBpbnN0ZWFkLikgXHRo
cm93IHN0ZDo6ZXhjZXB0aW9uIHBvc3NpYmx5LCBkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbgot
ICAgKi8KLSAgdmlydHVhbCBpbnQgd3JpdGUoVmFsdWUgY29uc3QmIHJvb3QsIE9TdHJlYW0qIHNv
dXQpID0gMDsKLQotICAvKiogXGJyaWVmIEEgc2ltcGxlIGFic3RyYWN0IGZhY3RvcnkuCi0gICAq
LwotICBjbGFzcyBKU09OX0FQSSBGYWN0b3J5IHsKLSAgcHVibGljOgotICAgIHZpcnR1YWwgfkZh
Y3RvcnkoKTsKLSAgICAvKiogXGJyaWVmIEFsbG9jYXRlIGEgQ2hhclJlYWRlciB2aWEgb3BlcmF0
b3IgbmV3KCkuCi0gICAgICogXHRocm93IHN0ZDo6ZXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2Vz
IHdyb25nIChlLmcuIGludmFsaWQgc2V0dGluZ3MpCi0gICAgICovCi0gICAgdmlydHVhbCBTdHJl
YW1Xcml0ZXIqIG5ld1N0cmVhbVdyaXRlcigpIGNvbnN0ID0gMDsKLSAgfTsgLy8gRmFjdG9yeQot
fTsgICAvLyBTdHJlYW1Xcml0ZXIKLQotLyoqIFxicmllZiBXcml0ZSBpbnRvIHN0cmluZ3N0cmVh
bSwgdGhlbiByZXR1cm4gc3RyaW5nLCBmb3IgY29udmVuaWVuY2UuCi0gKiBBIFN0cmVhbVdyaXRl
ciB3aWxsIGJlIGNyZWF0ZWQgZnJvbSB0aGUgZmFjdG9yeSwgdXNlZCwgYW5kIHRoZW4gZGVsZXRl
ZC4KLSAqLwotU3RyaW5nIEpTT05fQVBJIHdyaXRlU3RyaW5nKFN0cmVhbVdyaXRlcjo6RmFjdG9y
eSBjb25zdCYgZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBjb25z
dCYgcm9vdCk7Ci0KLS8qKiBcYnJpZWYgQnVpbGQgYSBTdHJlYW1Xcml0ZXIgaW1wbGVtZW50YXRp
b24uCi0KLVVzYWdlOgotXGNvZGUKLSAgdXNpbmcgbmFtZXNwYWNlIEpzb247Ci0gIFZhbHVlIHZh
bHVlID0gLi4uOwotICBTdHJlYW1Xcml0ZXJCdWlsZGVyIGJ1aWxkZXI7Ci0gIGJ1aWxkZXJbImNv
bW1lbnRTdHlsZSJdID0gIk5vbmUiOwotICBidWlsZGVyWyJpbmRlbnRhdGlvbiJdID0gIiAgICI7
ICAvLyBvciB3aGF0ZXZlciB5b3UgbGlrZQotICBzdGQ6OnVuaXF1ZV9wdHI8SnNvbjo6U3RyZWFt
V3JpdGVyPiB3cml0ZXIoCi0gICAgICBidWlsZGVyLm5ld1N0cmVhbVdyaXRlcigpKTsKLSAgd3Jp
dGVyLT53cml0ZSh2YWx1ZSwgJnN0ZDo6Y291dCk7Ci0gIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7
ICAvLyBhZGQgbGYgYW5kIGZsdXNoCi1cZW5kY29kZQotKi8KLWNsYXNzIEpTT05fQVBJIFN0cmVh
bVdyaXRlckJ1aWxkZXIgOiBwdWJsaWMgU3RyZWFtV3JpdGVyOjpGYWN0b3J5IHsKLXB1YmxpYzoK
LSAgLy8gTm90ZTogV2UgdXNlIGEgSnNvbjo6VmFsdWUgc28gdGhhdCB3ZSBjYW4gYWRkIGRhdGEt
bWVtYmVycyB0byB0aGlzIGNsYXNzCi0gIC8vIHdpdGhvdXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXAu
Ci0gIC8qKiBDb25maWd1cmF0aW9uIG9mIHRoaXMgYnVpbGRlci4KLSAgICBBdmFpbGFibGUgc2V0
dGluZ3MgKGNhc2Utc2Vuc2l0aXZlKToKLSAgICAtICJjb21tZW50U3R5bGUiOiAiTm9uZSIgb3Ig
IkFsbCIKLSAgICAtICJpbmRlbnRhdGlvbiI6ICAiPGFueXRoaW5nPiIuCi0gICAgICAtIFNldHRp
bmcgdGhpcyB0byBhbiBlbXB0eSBzdHJpbmcgYWxzbyBvbWl0cyBuZXdsaW5lIGNoYXJhY3RlcnMu
Ci0gICAgLSAiZW5hYmxlWUFNTENvbXBhdGliaWxpdHkiOiBmYWxzZSBvciB0cnVlCi0gICAgICAt
IHNsaWdodGx5IGNoYW5nZSB0aGUgd2hpdGVzcGFjZSBhcm91bmQgY29sb25zCi0gICAgLSAiZHJv
cE51bGxQbGFjZWhvbGRlcnMiOiBmYWxzZSBvciB0cnVlCi0gICAgICAtIERyb3AgdGhlICJudWxs
IiBzdHJpbmcgZnJvbSB0aGUgd3JpdGVyJ3Mgb3V0cHV0IGZvciBudWxsVmFsdWVzLgotICAgICAg
ICBTdHJpY3RseSBzcGVha2luZywgdGhpcyBpcyBub3QgdmFsaWQgSlNPTi4gQnV0IHdoZW4gdGhl
IG91dHB1dCBpcyBiZWluZwotICAgICAgICBmZWQgdG8gYSBicm93c2VyJ3MgSmF2YVNjcmlwdCwg
aXQgbWFrZXMgZm9yIHNtYWxsZXIgb3V0cHV0IGFuZCB0aGUKLSAgICAgICAgYnJvd3NlciBjYW4g
aGFuZGxlIHRoZSBvdXRwdXQganVzdCBmaW5lLgotICAgIC0gInVzZVNwZWNpYWxGbG9hdHMiOiBm
YWxzZSBvciB0cnVlCi0gICAgICAtIElmIHRydWUsIG91dHB1dHMgbm9uLWZpbml0ZSBmbG9hdGlu
ZyBwb2ludCB2YWx1ZXMgaW4gdGhlIGZvbGxvd2luZyB3YXk6Ci0gICAgICAgIE5hTiB2YWx1ZXMg
YXMgIk5hTiIsIHBvc2l0aXZlIGluZmluaXR5IGFzICJJbmZpbml0eSIsIGFuZCBuZWdhdGl2ZQot
ICAgIGluZmluaXR5IGFzICItSW5maW5pdHkiLgotICAgIC0gInByZWNpc2lvbiI6IGludAotICAg
ICAgLSBOdW1iZXIgb2YgcHJlY2lzaW9uIGRpZ2l0cyBmb3IgZm9ybWF0dGluZyBvZiByZWFsIHZh
bHVlcy4KLSAgICAtICJwcmVjaXNpb25UeXBlIjogInNpZ25pZmljYW50IihkZWZhdWx0KSBvciAi
ZGVjaW1hbCIKLSAgICAgIC0gVHlwZSBvZiBwcmVjaXNpb24gZm9yIGZvcm1hdHRpbmcgb2YgcmVh
bCB2YWx1ZXMuCi0KLSAgICBZb3UgY2FuIGV4YW1pbmUgJ3NldHRpbmdzX2AgeW91cnNlbGYKLSAg
ICB0byBzZWUgdGhlIGRlZmF1bHRzLiBZb3UgY2FuIGFsc28gd3JpdGUgYW5kIHJlYWQgdGhlbSBq
dXN0IGxpa2UgYW55Ci0gICAgSlNPTiBWYWx1ZS4KLSAgICBcc2Egc2V0RGVmYXVsdHMoKQotICAg
ICovCi0gIEpzb246OlZhbHVlIHNldHRpbmdzXzsKLQotICBTdHJlYW1Xcml0ZXJCdWlsZGVyKCk7
Ci0gIH5TdHJlYW1Xcml0ZXJCdWlsZGVyKCkgb3ZlcnJpZGU7Ci0KLSAgLyoqCi0gICAqIFx0aHJv
dyBzdGQ6OmV4Y2VwdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyAoZS5nLiBpbnZhbGlkIHNl
dHRpbmdzKQotICAgKi8KLSAgU3RyZWFtV3JpdGVyKiBuZXdTdHJlYW1Xcml0ZXIoKSBjb25zdCBv
dmVycmlkZTsKLQotICAvKiogXHJldHVybiB0cnVlIGlmICdzZXR0aW5ncycgYXJlIGxlZ2FsIGFu
ZCBjb25zaXN0ZW50OwotICAgKiAgIG90aGVyd2lzZSwgaW5kaWNhdGUgYmFkIHNldHRpbmdzIHZp
YSAnaW52YWxpZCcuCi0gICAqLwotICBib29sIHZhbGlkYXRlKEpzb246OlZhbHVlKiBpbnZhbGlk
KSBjb25zdDsKLSAgLyoqIEEgc2ltcGxlIHdheSB0byB1cGRhdGUgYSBzcGVjaWZpYyBzZXR0aW5n
LgotICAgKi8KLSAgVmFsdWUmIG9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpOwotCi0gIC8q
KiBDYWxsZWQgYnkgY3RvciwgYnV0IHlvdSBjYW4gdXNlIHRoaXMgdG8gcmVzZXQgc2V0dGluZ3Nf
LgotICAgKiBccHJlICdzZXR0aW5ncycgIT0gTlVMTCAoYnV0IEpzb246Om51bGwgaXMgZmluZSkK
LSAgICogXHJlbWFyayBEZWZhdWx0czoKLSAgICogXHNuaXBwZXQgc3JjL2xpYl9qc29uL2pzb25f
d3JpdGVyLmNwcCBTdHJlYW1Xcml0ZXJCdWlsZGVyRGVmYXVsdHMKLSAgICovCi0gIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRzKEpzb246OlZhbHVlKiBzZXR0aW5ncyk7Ci19OwotCi0vKiogXGJyaWVm
IEFic3RyYWN0IGNsYXNzIGZvciB3cml0ZXJzLgotICogXGRlcHJlY2F0ZWQgVXNlIFN0cmVhbVdy
aXRlci4gKEFuZCByZWFsbHksIHRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLikKLSAq
LwotY2xhc3MgSlNPTkNQUF9ERVBSRUNBVEVEKCJVc2UgU3RyZWFtV3JpdGVyIGluc3RlYWQiKSBK
U09OX0FQSSBXcml0ZXIgewotcHVibGljOgotICB2aXJ0dWFsIH5Xcml0ZXIoKTsKLQotICB2aXJ0
dWFsIFN0cmluZyB3cml0ZShjb25zdCBWYWx1ZSYgcm9vdCkgPSAwOwotfTsKLQotLyoqIFxicmll
ZiBPdXRwdXRzIGEgVmFsdWUgaW4gPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNPTjwv
YT4gZm9ybWF0Ci0gKndpdGhvdXQgZm9ybWF0dGluZyAobm90IGh1bWFuIGZyaWVuZGx5KS4KLSAq
Ci0gKiBUaGUgSlNPTiBkb2N1bWVudCBpcyB3cml0dGVuIGluIGEgc2luZ2xlIGxpbmUuIEl0IGlz
IG5vdCBpbnRlbmRlZCBmb3IgJ2h1bWFuJwotICpjb25zdW1wdGlvbiwKLSAqIGJ1dCBtYXkgYmUg
dXNlZnVsIHRvIHN1cHBvcnQgZmVhdHVyZSBzdWNoIGFzIFJQQyB3aGVyZSBiYW5kd2lkdGggaXMg
bGltaXRlZC4KLSAqIFxzYSBSZWFkZXIsIFZhbHVlCi0gKiBcZGVwcmVjYXRlZCBVc2UgU3RyZWFt
V3JpdGVyQnVpbGRlci4KLSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5p
bmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDk5NikgLy8gRGVyaXZpbmcgZnJv
bSBkZXByZWNhdGVkIGNsYXNzCi0jZW5kaWYKLWNsYXNzIEpTT05DUFBfREVQUkVDQVRFRCgiVXNl
IFN0cmVhbVdyaXRlckJ1aWxkZXIgaW5zdGVhZCIpIEpTT05fQVBJIEZhc3RXcml0ZXIKLSAgICA6
IHB1YmxpYyBXcml0ZXIgewotcHVibGljOgotICBGYXN0V3JpdGVyKCk7Ci0gIH5GYXN0V3JpdGVy
KCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwotCi0gIHZvaWQgZW5hYmxlWUFNTENvbXBhdGliaWxpdHko
KTsKLQotICAvKiogXGJyaWVmIERyb3AgdGhlICJudWxsIiBzdHJpbmcgZnJvbSB0aGUgd3JpdGVy
J3Mgb3V0cHV0IGZvciBudWxsVmFsdWVzLgotICAgKiBTdHJpY3RseSBzcGVha2luZywgdGhpcyBp
cyBub3QgdmFsaWQgSlNPTi4gQnV0IHdoZW4gdGhlIG91dHB1dCBpcyBiZWluZwotICAgKiBmZWQg
dG8gYSBicm93c2VyJ3MgSmF2YVNjcmlwdCwgaXQgbWFrZXMgZm9yIHNtYWxsZXIgb3V0cHV0IGFu
ZCB0aGUKLSAgICogYnJvd3NlciBjYW4gaGFuZGxlIHRoZSBvdXRwdXQganVzdCBmaW5lLgotICAg
Ki8KLSAgdm9pZCBkcm9wTnVsbFBsYWNlaG9sZGVycygpOwotCi0gIHZvaWQgb21pdEVuZGluZ0xp
bmVGZWVkKCk7Ci0KLXB1YmxpYzogLy8gb3ZlcnJpZGRlbiBmcm9tIFdyaXRlcgotICBTdHJpbmcg
d3JpdGUoY29uc3QgVmFsdWUmIHJvb3QpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICB2b2lkIHdy
aXRlVmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKTsKLQotICBTdHJpbmcgZG9jdW1lbnRfOwotICBi
b29sIHlhbWxDb21wYXRpYmlsaXR5RW5hYmxlZF97ZmFsc2V9OwotICBib29sIGRyb3BOdWxsUGxh
Y2Vob2xkZXJzX3tmYWxzZX07Ci0gIGJvb2wgb21pdEVuZGluZ0xpbmVGZWVkX3tmYWxzZX07Ci19
OwotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0K
LS8qKiBcYnJpZWYgV3JpdGVzIGEgVmFsdWUgaW4gPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9y
ZyI+SlNPTjwvYT4gZm9ybWF0IGluIGEKLSAqaHVtYW4gZnJpZW5kbHkgd2F5LgotICoKLSAqIFRo
ZSBydWxlcyBmb3IgbGluZSBicmVhayBhbmQgaW5kZW50IGFyZSBhcyBmb2xsb3c6Ci0gKiAtIE9i
amVjdCB2YWx1ZToKLSAqICAgICAtIGlmIGVtcHR5IHRoZW4gcHJpbnQge30gd2l0aG91dCBpbmRl
bnQgYW5kIGxpbmUgYnJlYWsKLSAqICAgICAtIGlmIG5vdCBlbXB0eSB0aGUgcHJpbnQgJ3snLCBs
aW5lIGJyZWFrICYgaW5kZW50LCBwcmludCBvbmUgdmFsdWUgcGVyCi0gKmxpbmUKLSAqICAgICAg
IGFuZCB0aGVuIHVuaW5kZW50IGFuZCBsaW5lIGJyZWFrIGFuZCBwcmludCAnfScuCi0gKiAtIEFy
cmF5IHZhbHVlOgotICogICAgIC0gaWYgZW1wdHkgdGhlbiBwcmludCBbXSB3aXRob3V0IGluZGVu
dCBhbmQgbGluZSBicmVhawotICogICAgIC0gaWYgdGhlIGFycmF5IGNvbnRhaW5zIG5vIG9iamVj
dCB2YWx1ZSwgZW1wdHkgYXJyYXkgb3Igc29tZSBvdGhlciB2YWx1ZQotICp0eXBlcywKLSAqICAg
ICAgIGFuZCBhbGwgdGhlIHZhbHVlcyBmaXQgb24gb25lIGxpbmVzLCB0aGVuIHByaW50IHRoZSBh
cnJheSBvbiBhIHNpbmdsZQotICpsaW5lLgotICogICAgIC0gb3RoZXJ3aXNlLCBpdCB0aGUgdmFs
dWVzIGRvIG5vdCBmaXQgb24gb25lIGxpbmUsIG9yIHRoZSBhcnJheSBjb250YWlucwotICogICAg
ICAgb2JqZWN0IG9yIG5vbiBlbXB0eSBhcnJheSwgdGhlbiBwcmludCBvbmUgdmFsdWUgcGVyIGxp
bmUuCi0gKgotICogSWYgdGhlIFZhbHVlIGhhdmUgY29tbWVudHMgdGhlbiB0aGV5IGFyZSBvdXRw
dXRlZCBhY2NvcmRpbmcgdG8gdGhlaXIKLSAqI0NvbW1lbnRQbGFjZW1lbnQuCi0gKgotICogXHNh
IFJlYWRlciwgVmFsdWUsIFZhbHVlOjpzZXRDb21tZW50KCkKLSAqIFxkZXByZWNhdGVkIFVzZSBT
dHJlYW1Xcml0ZXJCdWlsZGVyLgotICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEg
d2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSAvLyBEZXJpdmlu
ZyBmcm9tIGRlcHJlY2F0ZWQgY2xhc3MKLSNlbmRpZgotY2xhc3MgSlNPTkNQUF9ERVBSRUNBVEVE
KCJVc2UgU3RyZWFtV3JpdGVyQnVpbGRlciBpbnN0ZWFkIikgSlNPTl9BUEkKLSAgICBTdHlsZWRX
cml0ZXIgOiBwdWJsaWMgV3JpdGVyIHsKLXB1YmxpYzoKLSAgU3R5bGVkV3JpdGVyKCk7Ci0gIH5T
dHlsZWRXcml0ZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7Ci0KLXB1YmxpYzogLy8gb3ZlcnJpZGRl
biBmcm9tIFdyaXRlcgotICAvKiogXGJyaWVmIFNlcmlhbGl6ZSBhIFZhbHVlIGluIDxhIEhSRUY9
Imh0dHA6Ly93d3cuanNvbi5vcmciPkpTT048L2E+IGZvcm1hdC4KLSAgICogXHBhcmFtIHJvb3Qg
VmFsdWUgdG8gc2VyaWFsaXplLgotICAgKiBccmV0dXJuIFN0cmluZyBjb250YWluaW5nIHRoZSBK
U09OIGRvY3VtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgcm9vdCB2YWx1ZS4KLSAgICovCi0gIFN0
cmluZyB3cml0ZShjb25zdCBWYWx1ZSYgcm9vdCkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gIHZv
aWQgd3JpdGVWYWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotICB2b2lkIHdyaXRlQXJyYXlWYWx1
ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotICBib29sIGlzTXVsdGlsaW5lQXJyYXkoY29uc3QgVmFs
dWUmIHZhbHVlKTsKLSAgdm9pZCBwdXNoVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gIHZv
aWQgd3JpdGVJbmRlbnQoKTsKLSAgdm9pZCB3cml0ZVdpdGhJbmRlbnQoY29uc3QgU3RyaW5nJiB2
YWx1ZSk7Ci0gIHZvaWQgaW5kZW50KCk7Ci0gIHZvaWQgdW5pbmRlbnQoKTsKLSAgdm9pZCB3cml0
ZUNvbW1lbnRCZWZvcmVWYWx1ZShjb25zdCBWYWx1ZSYgcm9vdCk7Ci0gIHZvaWQgd3JpdGVDb21t
ZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY29uc3QgVmFsdWUmIHJvb3QpOwotICBzdGF0aWMgYm9v
bCBoYXNDb21tZW50Rm9yVmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKTsKLSAgc3RhdGljIFN0cmlu
ZyBub3JtYWxpemVFT0woY29uc3QgU3RyaW5nJiB0ZXh0KTsKLQotICB0eXBlZGVmIHN0ZDo6dmVj
dG9yPFN0cmluZz4gQ2hpbGRWYWx1ZXM7Ci0KLSAgQ2hpbGRWYWx1ZXMgY2hpbGRWYWx1ZXNfOwot
ICBTdHJpbmcgZG9jdW1lbnRfOwotICBTdHJpbmcgaW5kZW50U3RyaW5nXzsKLSAgdW5zaWduZWQg
aW50IHJpZ2h0TWFyZ2luX3s3NH07Ci0gIHVuc2lnbmVkIGludCBpbmRlbnRTaXplX3szfTsKLSAg
Ym9vbCBhZGRDaGlsZFZhbHVlc197ZmFsc2V9OwotfTsKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQot
I3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vKiogXGJyaWVmIFdyaXRlcyBhIFZhbHVl
IGluIDxhIEhSRUY9Imh0dHA6Ly93d3cuanNvbi5vcmciPkpTT048L2E+IGZvcm1hdCBpbiBhCi0g
aHVtYW4gZnJpZW5kbHkgd2F5LAotICAgICB0byBhIHN0cmVhbSByYXRoZXIgdGhhbiB0byBhIHN0
cmluZy4KLSAqCi0gKiBUaGUgcnVsZXMgZm9yIGxpbmUgYnJlYWsgYW5kIGluZGVudCBhcmUgYXMg
Zm9sbG93OgotICogLSBPYmplY3QgdmFsdWU6Ci0gKiAgICAgLSBpZiBlbXB0eSB0aGVuIHByaW50
IHt9IHdpdGhvdXQgaW5kZW50IGFuZCBsaW5lIGJyZWFrCi0gKiAgICAgLSBpZiBub3QgZW1wdHkg
dGhlIHByaW50ICd7JywgbGluZSBicmVhayAmIGluZGVudCwgcHJpbnQgb25lIHZhbHVlIHBlcgot
IGxpbmUKLSAqICAgICAgIGFuZCB0aGVuIHVuaW5kZW50IGFuZCBsaW5lIGJyZWFrIGFuZCBwcmlu
dCAnfScuCi0gKiAtIEFycmF5IHZhbHVlOgotICogICAgIC0gaWYgZW1wdHkgdGhlbiBwcmludCBb
XSB3aXRob3V0IGluZGVudCBhbmQgbGluZSBicmVhawotICogICAgIC0gaWYgdGhlIGFycmF5IGNv
bnRhaW5zIG5vIG9iamVjdCB2YWx1ZSwgZW1wdHkgYXJyYXkgb3Igc29tZSBvdGhlciB2YWx1ZQot
IHR5cGVzLAotICogICAgICAgYW5kIGFsbCB0aGUgdmFsdWVzIGZpdCBvbiBvbmUgbGluZXMsIHRo
ZW4gcHJpbnQgdGhlIGFycmF5IG9uIGEgc2luZ2xlCi0gbGluZS4KLSAqICAgICAtIG90aGVyd2lz
ZSwgaXQgdGhlIHZhbHVlcyBkbyBub3QgZml0IG9uIG9uZSBsaW5lLCBvciB0aGUgYXJyYXkgY29u
dGFpbnMKLSAqICAgICAgIG9iamVjdCBvciBub24gZW1wdHkgYXJyYXksIHRoZW4gcHJpbnQgb25l
IHZhbHVlIHBlciBsaW5lLgotICoKLSAqIElmIHRoZSBWYWx1ZSBoYXZlIGNvbW1lbnRzIHRoZW4g
dGhleSBhcmUgb3V0cHV0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyCi0gI0NvbW1lbnRQbGFjZW1lbnQu
Ci0gKgotICogXHNhIFJlYWRlciwgVmFsdWUsIFZhbHVlOjpzZXRDb21tZW50KCkKLSAqIFxkZXBy
ZWNhdGVkIFVzZSBTdHJlYW1Xcml0ZXJCdWlsZGVyLgotICovCi0jaWYgZGVmaW5lZChfTVNDX1ZF
UikKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2
KSAvLyBEZXJpdmluZyBmcm9tIGRlcHJlY2F0ZWQgY2xhc3MKLSNlbmRpZgotY2xhc3MgSlNPTkNQ
UF9ERVBSRUNBVEVEKCJVc2UgU3RyZWFtV3JpdGVyQnVpbGRlciBpbnN0ZWFkIikgSlNPTl9BUEkK
LSAgICBTdHlsZWRTdHJlYW1Xcml0ZXIgewotcHVibGljOgotICAvKioKLSAgICogXHBhcmFtIGlu
ZGVudGF0aW9uIEVhY2ggbGV2ZWwgd2lsbCBiZSBpbmRlbnRlZCBieSB0aGlzIGFtb3VudCBleHRy
YS4KLSAgICovCi0gIFN0eWxlZFN0cmVhbVdyaXRlcihTdHJpbmcgaW5kZW50YXRpb24gPSAiXHQi
KTsKLSAgflN0eWxlZFN0cmVhbVdyaXRlcigpID0gZGVmYXVsdDsKLQotcHVibGljOgotICAvKiog
XGJyaWVmIFNlcmlhbGl6ZSBhIFZhbHVlIGluIDxhIEhSRUY9Imh0dHA6Ly93d3cuanNvbi5vcmci
PkpTT048L2E+IGZvcm1hdC4KLSAgICogXHBhcmFtIG91dCBTdHJlYW0gdG8gd3JpdGUgdG8uIChD
YW4gYmUgb3N0cmluZ3N0cmVhbSwgZS5nLikKLSAgICogXHBhcmFtIHJvb3QgVmFsdWUgdG8gc2Vy
aWFsaXplLgotICAgKiBcbm90ZSBUaGVyZSBpcyBubyBwb2ludCBpbiBkZXJpdmluZyBmcm9tIFdy
aXRlciwgc2luY2Ugd3JpdGUoKSBzaG91bGQgbm90Ci0gICAqIHJldHVybiBhIHZhbHVlLgotICAg
Ki8KLSAgdm9pZCB3cml0ZShPU3RyZWFtJiBvdXQsIGNvbnN0IFZhbHVlJiByb290KTsKLQotcHJp
dmF0ZToKLSAgdm9pZCB3cml0ZVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIHZvaWQgd3Jp
dGVBcnJheVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIGJvb2wgaXNNdWx0aWxpbmVBcnJh
eShjb25zdCBWYWx1ZSYgdmFsdWUpOwotICB2b2lkIHB1c2hWYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKTsKLSAgdm9pZCB3cml0ZUluZGVudCgpOwotICB2b2lkIHdyaXRlV2l0aEluZGVudChjb25z
dCBTdHJpbmcmIHZhbHVlKTsKLSAgdm9pZCBpbmRlbnQoKTsKLSAgdm9pZCB1bmluZGVudCgpOwot
ICB2b2lkIHdyaXRlQ29tbWVudEJlZm9yZVZhbHVlKGNvbnN0IFZhbHVlJiByb290KTsKLSAgdm9p
ZCB3cml0ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShjb25zdCBWYWx1ZSYgcm9vdCk7Ci0g
IHN0YXRpYyBib29sIGhhc0NvbW1lbnRGb3JWYWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotICBz
dGF0aWMgU3RyaW5nIG5vcm1hbGl6ZUVPTChjb25zdCBTdHJpbmcmIHRleHQpOwotCi0gIHR5cGVk
ZWYgc3RkOjp2ZWN0b3I8U3RyaW5nPiBDaGlsZFZhbHVlczsKLQotICBDaGlsZFZhbHVlcyBjaGls
ZFZhbHVlc187Ci0gIE9TdHJlYW0qIGRvY3VtZW50XzsKLSAgU3RyaW5nIGluZGVudFN0cmluZ187
Ci0gIHVuc2lnbmVkIGludCByaWdodE1hcmdpbl97NzR9OwotICBTdHJpbmcgaW5kZW50YXRpb25f
OwotICBib29sIGFkZENoaWxkVmFsdWVzXyA6IDE7Ci0gIGJvb2wgaW5kZW50ZWRfIDogMTsKLX07
Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQot
I2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi1TdHJpbmcgSlNPTl9BUEkgdmFsdWVUb1N0cmlu
ZyhJbnQgdmFsdWUpOwotU3RyaW5nIEpTT05fQVBJIHZhbHVlVG9TdHJpbmcoVUludCB2YWx1ZSk7
Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLVN0cmluZyBKU09OX0FQSSB2
YWx1ZVRvU3RyaW5nKExhcmdlc3RJbnQgdmFsdWUpOwotU3RyaW5nIEpTT05fQVBJIHZhbHVlVG9T
dHJpbmcoTGFyZ2VzdFVJbnQgdmFsdWUpOwotU3RyaW5nIEpTT05fQVBJCi12YWx1ZVRvU3RyaW5n
KGRvdWJsZSB2YWx1ZSwKLSAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHByZWNpc2lvbiA9IFZh
bHVlOjpkZWZhdWx0UmVhbFByZWNpc2lvbiwKLSAgICAgICAgICAgICAgUHJlY2lzaW9uVHlwZSBw
cmVjaXNpb25UeXBlID0gUHJlY2lzaW9uVHlwZTo6c2lnbmlmaWNhbnREaWdpdHMpOwotU3RyaW5n
IEpTT05fQVBJIHZhbHVlVG9TdHJpbmcoYm9vbCB2YWx1ZSk7Ci1TdHJpbmcgSlNPTl9BUEkgdmFs
dWVUb1F1b3RlZFN0cmluZyhjb25zdCBjaGFyKiB2YWx1ZSk7Ci0KLS8vLyBcYnJpZWYgT3V0cHV0
IHVzaW5nIHRoZSBTdHlsZWRTdHJlYW1Xcml0ZXIuCi0vLy8gXHNlZSBKc29uOjpvcGVyYXRvcj4+
KCkKLUpTT05fQVBJIE9TdHJlYW0mIG9wZXJhdG9yPDwoT1N0cmVhbSYsIGNvbnN0IFZhbHVlJiBy
b290KTsKLQotfSAvLyBuYW1lc3BhY2UgSnNvbgotCi0jcHJhZ21hIHBhY2socG9wKQotCi0jaWYg
ZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9XQVJOSU5HKQotI3ByYWdtYSB3
YXJuaW5nKHBvcCkKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKEpTT05DUFBfRElTQUJMRV9ETExfSU5U
RVJGQUNFX1dBUk5JTkcpCi0KLSNlbmRpZiAvLyBKU09OX1dSSVRFUl9IX0lOQ0xVREVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL21ha2VyZWxlYXNlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9tYWtlcmVsZWFzZS5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3MTZjYmFiM2MzY2ZhMThkZWE3ODk2MzgyZDA4NTJh
MTQyYTI0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL21ha2VyZWxlYXNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkwICswLDAgQEAKLSMgQ29w
eXJpZ2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0j
IERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2ly
ZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxlIExJ
Q0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5l
dC9MSUNFTlNFCi0KLSIiIlRhZyB0aGUgc2FuZGJveCBmb3IgcmVsZWFzZSwgbWFrZSBzb3VyY2Ug
YW5kIGRvYyB0YXJiYWxscy4KLQotUmVxdWlyZXMgUHl0aG9uIDIuNgotCi1FeGFtcGxlIG9mIGlu
dm9jYXRpb24gKHVzZSB0byB0ZXN0IHRoZSBzY3JpcHQpOgotcHl0aG9uIG1ha2VyZWxlYXNlLnB5
IC0tcGxhdGZvcm09bXN2YzYsbXN2YzcxLG1zdmM4MCxtc3ZjOTAsbWluZ3cgLXVibGVwIDAuNi4w
IDAuNy4wLWRldgotCi1XaGVuIHRlc3RpbmcgdGhpcyBzY3JpcHQ6Ci1weXRob24gbWFrZXJlbGVh
c2UucHkgLS1mb3JjZSAtLXJldGFnIC0tcGxhdGZvcm09bXN2YzYsbXN2YzcxLG1zdmM4MCxtaW5n
dyAtdWJsZXAgdGVzdC0wLjYuMCB0ZXN0LTAuNi4xLWRldgotCi1FeGFtcGxlIG9mIGludm9jYXRp
b24gd2hlbiBkb2luZyBhIHJlbGVhc2U6Ci1weXRob24gbWFrZXJlbGVhc2UucHkgMC41LjAgMC42
LjAtZGV2Ci0KLU5vdGU6IFRoaXMgd2FzIGZvciBTdWJ2ZXJzaW9uLiBOb3cgdGhhdCB3ZSBhcmUg
aW4gR2l0SHViLCB3ZSBkbyBub3QKLW5lZWQgdG8gYnVpbGQgdmVyc2lvbmVkIHRhcmJhbGxzIGFu
eW1vcmUsIHNvIG1ha2VyZWxlYXNlLnB5IGlzIGRlZnVuY3QuCi0iIiIKLQotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9j
ZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgZG94eWJ1aWxkCi1pbXBvcnQgc3VicHJvY2VzcwotaW1w
b3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFbGVtZW50VHJlZQotaW1wb3J0IHNodXRpbAot
aW1wb3J0IHVybGxpYjIKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IG9zCi1pbXBvcnQgdGltZQot
ZnJvbSBkZXZ0b29scyBpbXBvcnQgYW50Z2xvYiwgZml4ZW9sLCB0YXJiYWxsCi1pbXBvcnQgYW1h
bGdhbWF0ZQotCi1TVk5fUk9PVCA9ICdodHRwczovL2pzb25jcHAuc3ZuLnNvdXJjZWZvcmdlLm5l
dC9zdm5yb290L2pzb25jcHAvJwotU1ZOX1RBR19ST09UID0gU1ZOX1JPT1QgKyAndGFncy9qc29u
Y3BwJwotU0NPTlNfTE9DQUxfVVJMID0gJ2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMv
c2NvbnMvZmlsZXMvc2NvbnMtbG9jYWwvMS4yLjAvc2NvbnMtbG9jYWwtMS4yLjAudGFyLmd6L2Rv
d25sb2FkJwotU09VUkNFRk9SR0VfUFJPSkVDVCA9ICdqc29uY3BwJwotCi1kZWYgc2V0X3ZlcnNp
b24odmVyc2lvbik6Ci0gICAgd2l0aCBvcGVuKCd2ZXJzaW9uJywnd2InKSBhcyBmOgotICAgICAg
ICBmLndyaXRlKHZlcnNpb24uc3RyaXAoKSkKLQotZGVmIHJtZGlyX2lmX2V4aXN0KGRpcl9wYXRo
KToKLSAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcl9wYXRoKToKLSAgICAgICAgc2h1dGlsLnJtdHJl
ZShkaXJfcGF0aCkKLQotY2xhc3MgU1ZORXJyb3IoRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLWRl
ZiBzdm5fY29tbWFuZChjb21tYW5kLCAqYXJncyk6Ci0gICAgY21kID0gWydzdm4nLCAnLS1ub24t
aW50ZXJhY3RpdmUnLCBjb21tYW5kXSArIGxpc3QoYXJncykKLSAgICBwcmludCgnUnVubmluZzon
LCAnICcuam9pbihjbWQpKQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQot
ICAgIHN0ZG91dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQotICAgIGlmIHByb2Nlc3MucmV0
dXJuY29kZToKLSAgICAgICAgZXJyb3IgPSBTVk5FcnJvcignU1ZOIGNvbW1hbmQgZmFpbGVkOlxu
JyArIHN0ZG91dCkKLSAgICAgICAgZXJyb3IucmV0dXJuY29kZSA9IHByb2Nlc3MucmV0dXJuY29k
ZQotICAgICAgICByYWlzZSBlcnJvcgotICAgIHJldHVybiBzdGRvdXQKLQotZGVmIGNoZWNrX25v
X3BlbmRpbmdfY29tbWl0KCk6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlcmUgaXMgbm8gcGVuZGlu
ZyBjb21taXQgaW4gdGhlIHNhbmRib3guIiIiCi0gICAgc3Rkb3V0ID0gc3ZuX2NvbW1hbmQoJ3N0
YXR1cycsICctLXhtbCcpCi0gICAgZXRyZWUgPSBFbGVtZW50VHJlZS5mcm9tc3RyaW5nKHN0ZG91
dCkKLSAgICBtc2cgPSBbXQotICAgIGZvciBlbnRyeSBpbiBldHJlZS5nZXRpdGVyYXRvcignZW50
cnknKToKLSAgICAgICAgcGF0aCA9IGVudHJ5LmdldCgncGF0aCcpCi0gICAgICAgIHN0YXR1cyA9
IGVudHJ5LmZpbmQoJ3djLXN0YXR1cycpLmdldCgnaXRlbScpCi0gICAgICAgIGlmIHN0YXR1cyAh
PSAndW52ZXJzaW9uZWQnIGFuZCBwYXRoICE9ICd2ZXJzaW9uJzoKLSAgICAgICAgICAgIG1zZy5h
cHBlbmQoJ0ZpbGUgIiVzIiBoYXMgcGVuZGluZyBjaGFuZ2UgKHN0YXR1cz0iJXMiKScgJSAocGF0
aCwgc3RhdHVzKSkKLSAgICBpZiBtc2c6Ci0gICAgICAgIG1zZy5pbnNlcnQoMCwgJ1BlbmRpbmcg
Y2hhbmdlIHRvIGNvbW1pdCBmb3VuZCBpbiBzYW5kYm94LiBDb21taXQgdGhlbSBmaXJzdCEnKQot
ICAgIHJldHVybiAnXG4nLmpvaW4obXNnKQotCi1kZWYgc3ZuX2pvaW5fdXJsKGJhc2VfdXJsLCBz
dWZmaXgpOgotICAgIGlmIG5vdCBiYXNlX3VybC5lbmRzd2l0aCgnLycpOgotICAgICAgICBiYXNl
X3VybCArPSAnLycKLSAgICBpZiBzdWZmaXguc3RhcnRzd2l0aCgnLycpOgotICAgICAgICBzdWZm
aXggPSBzdWZmaXhbMTpdCi0gICAgcmV0dXJuIGJhc2VfdXJsICsgc3VmZml4Ci0KLWRlZiBzdm5f
Y2hlY2tfaWZfdGFnX2V4aXN0KHRhZ191cmwpOgotICAgICIiIkNoZWNrcyBpZiBhIHRhZyBleGlz
dC4KLSAgICBSZXR1cm5zOiBUcnVlIGlmIHRoZSB0YWcgZXhpc3QsIEZhbHNlIG90aGVyd2lzZS4K
LSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGxpc3Rfc3Rkb3V0ID0gc3ZuX2NvbW1hbmQoJ2xp
c3QnLCB0YWdfdXJsKQotICAgIGV4Y2VwdCBTVk5FcnJvciBhcyBlOgotICAgICAgICBpZiBlLnJl
dHVybmNvZGUgIT0gMSBvciBub3Qgc3RyKGUpLmZpbmQoJ3RhZ191cmwnKToKLSAgICAgICAgICAg
IHJhaXNlIGUKLSAgICAgICAgIyBvdGhlcndpc2UgaWdub3JlIGVycm9yLCBtZWFuaW5nIHRhZyBk
b2VzIG5vdCBleGlzdAotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi1k
ZWYgc3ZuX2NvbW1pdChtZXNzYWdlKToKLSAgICAiIiJDb21taXQgdGhlIHNhbmRib3gsIHByb3Zp
ZGluZyB0aGUgc3BlY2lmaWVkIGNvbW1lbnQuCi0gICAgIiIiCi0gICAgc3ZuX2NvbW1hbmQoJ2Np
JywgJy1tJywgbWVzc2FnZSkKLQotZGVmIHN2bl90YWdfc2FuZGJveCh0YWdfdXJsLCBtZXNzYWdl
KToKLSAgICAiIiJNYWtlcyBhIHRhZyBiYXNlZCBvbiB0aGUgc2FuZGJveCByZXZpc2lvbnMuCi0g
ICAgIiIiCi0gICAgc3ZuX2NvbW1hbmQoJ2NvcHknLCAnLW0nLCBtZXNzYWdlLCAnLicsIHRhZ191
cmwpCi0KLWRlZiBzdm5fcmVtb3ZlX3RhZyh0YWdfdXJsLCBtZXNzYWdlKToKLSAgICAiIiJSZW1v
dmVzIGFuIGV4aXN0aW5nIHRhZy4KLSAgICAiIiIKLSAgICBzdm5fY29tbWFuZCgnZGVsZXRlJywg
Jy1tJywgbWVzc2FnZSwgdGFnX3VybCkKLQotZGVmIHN2bl9leHBvcnQodGFnX3VybCwgZXhwb3J0
X2Rpcik6Ci0gICAgIiIiRXhwb3J0cyB0aGUgdGFnX3VybCByZXZpc2lvbiB0byBleHBvcnRfZGly
LgotICAgICAgIFRhcmdldCBkaXJlY3RvcnksIGluY2x1ZGluZyBpdHMgcGFyZW50IGlzIGNyZWF0
ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuCi0gICAgICAgSWYgdGhlIGRpcmVjdG9yeSBleHBvcnRf
ZGlyIGV4aXN0LCBpdCBpcyBkZWxldGVkIGJlZm9yZSBleHBvcnQgcHJvY2VlZC4KLSAgICAiIiIK
LSAgICBybWRpcl9pZl9leGlzdChleHBvcnRfZGlyKQotICAgIHN2bl9jb21tYW5kKCdleHBvcnQn
LCB0YWdfdXJsLCBleHBvcnRfZGlyKQotCi1kZWYgZml4X3NvdXJjZXNfZW9sKGRpc3RfZGlyKToK
LSAgICAiIiJTZXQgZmlsZSBFT0wgZm9yIHRhcmJhbGwgZGlzdHJpYnV0aW9uLgotICAgICIiIgot
ICAgIHByaW50KCdQcmVwYXJpbmcgZXhwb3J0ZWQgc291cmNlIGZpbGUgRU9MIGZvciBkaXN0cmli
dXRpb24uLi4nKQotICAgIHBydW5lX2RpcnMgPSBhbnRnbG9iLnBydW5lX2RpcnMgKyAnc2NvbnMt
bG9jYWwqIC4vYnVpbGQqIC4vbGlicyAuL2Rpc3QnCi0gICAgd2luX3NvdXJjZXMgPSBhbnRnbG9i
Lmdsb2IoZGlzdF9kaXIsIAotICAgICAgICBpbmNsdWRlcyA9ICcqKi8qLnNsbiAqKi8qLnZjcHJv
aicsCi0gICAgICAgIHBydW5lX2RpcnMgPSBwcnVuZV9kaXJzKQotICAgIHVuaXhfc291cmNlcyA9
IGFudGdsb2IuZ2xvYihkaXN0X2RpciwKLSAgICAgICAgaW5jbHVkZXMgPSAnJycqKi8qLmggKiov
Ki5jcHAgKiovKi5pbmwgKiovKi50eHQgKiovKi5kb3ggKiovKi5weSAqKi8qLmh0bWwgKiovKi5p
bgotICAgICAgICBzY29uc2NyaXB0ICouanNvbiAqLmV4cGVjdGVkIEFVVEhPUlMgTElDRU5TRScn
JywKLSAgICAgICAgZXhjbHVkZXMgPSBhbnRnbG9iLmRlZmF1bHRfZXhjbHVkZXMgKyAnc2NvbnMu
cHkgc2NvbnNpZ24ucHkgc2NvbnMtKicsCi0gICAgICAgIHBydW5lX2RpcnMgPSBwcnVuZV9kaXJz
KQotICAgIGZvciBwYXRoIGluIHdpbl9zb3VyY2VzOgotICAgICAgICBmaXhlb2wuZml4X3NvdXJj
ZV9lb2wocGF0aCwgaXNfZHJ5X3J1biA9IEZhbHNlLCB2ZXJib3NlID0gVHJ1ZSwgZW9sID0gJ1xy
XG4nKQotICAgIGZvciBwYXRoIGluIHVuaXhfc291cmNlczoKLSAgICAgICAgZml4ZW9sLmZpeF9z
b3VyY2VfZW9sKHBhdGgsIGlzX2RyeV9ydW4gPSBGYWxzZSwgdmVyYm9zZSA9IFRydWUsIGVvbCA9
ICdcbicpCi0KLWRlZiBkb3dubG9hZCh1cmwsIHRhcmdldF9wYXRoKToKLSAgICAiIiJEb3dubG9h
ZCBmaWxlIHJlcHJlc2VudGVkIGJ5IHVybCB0byB0YXJnZXRfcGF0aC4KLSAgICAiIiIKLSAgICBm
ID0gdXJsbGliMi51cmxvcGVuKHVybCkKLSAgICB0cnk6Ci0gICAgICAgIGRhdGEgPSBmLnJlYWQo
KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQotICAgIGZvdXQgPSBvcGVuKHRhcmdl
dF9wYXRoLCAnd2InKQotICAgIHRyeToKLSAgICAgICAgZm91dC53cml0ZShkYXRhKQotICAgIGZp
bmFsbHk6Ci0gICAgICAgIGZvdXQuY2xvc2UoKQotCi1kZWYgY2hlY2tfY29tcGlsZShkaXN0Y2hl
Y2tfdG9wX2RpciwgcGxhdGZvcm0pOgotICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJ3Njb25z
LnB5JywgJ3BsYXRmb3JtPSVzJyAlIHBsYXRmb3JtLCAnY2hlY2snXQotICAgIHByaW50KCdSdW5u
aW5nOicsICcgJy5qb2luKGNtZCkpCi0gICAgbG9nX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlzdGNo
ZWNrX3RvcF9kaXIsICdidWlsZC0lcy5sb2cnICUgcGxhdGZvcm0pCi0gICAgZmxvZyA9IG9wZW4o
bG9nX3BhdGgsICd3YicpCi0gICAgdHJ5OgotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Q
b3BlbihjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9Zmxv
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNz
LlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1kaXN0Y2hl
Y2tfdG9wX2RpcikKLSAgICAgICAgc3Rkb3V0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCi0g
ICAgICAgIHN0YXR1cyA9IChwcm9jZXNzLnJldHVybmNvZGUgPT0gMCkKLSAgICBmaW5hbGx5Ogot
ICAgICAgICBmbG9nLmNsb3NlKCkKLSAgICByZXR1cm4gKHN0YXR1cywgbG9nX3BhdGgpCi0KLWRl
ZiB3cml0ZV90ZW1wZmlsZShjb250ZW50LCAqKmt3YXJncyk6Ci0gICAgZmQsIHBhdGggPSB0ZW1w
ZmlsZS5ta3N0ZW1wKCoqa3dhcmdzKQotICAgIGYgPSBvcy5mZG9wZW4oZmQsICd3dCcpCi0gICAg
dHJ5OgotICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgZmluYWxseToKLSAgICAgICAgZi5j
bG9zZSgpCi0gICAgcmV0dXJuIHBhdGgKLQotY2xhc3MgU0ZUUEVycm9yKEV4Y2VwdGlvbik6Ci0g
ICAgcGFzcwotCi1kZWYgcnVuX3NmdHBfYmF0Y2godXNlcmhvc3QsIHNmdHAsIGJhdGNoLCByZXRy
eT0wKToKLSAgICBwYXRoID0gd3JpdGVfdGVtcGZpbGUoYmF0Y2gsIHN1ZmZpeD0nLnNmdHAnLCB0
ZXh0PVRydWUpCi0gICAgIyBwc2Z0cCAtYWdlbnQgLUMgYmxlcCxqc29uY3BwQHdlYi5zb3VyY2Vm
b3JnZS5uZXQgLWJhdGNoIC1iIGJhdGNoLnNmdHAgLWJjCi0gICAgY21kID0gW3NmdHAsICctYWdl
bnQnLCAnLUMnLCAnLWJhdGNoJywgJy1iJywgcGF0aCwgJy1iYycsIHVzZXJob3N0XQotICAgIGVy
cm9yID0gTm9uZQotICAgIGZvciByZXRyeV9pbmRleCBpbiByYW5nZSgwLCBtYXgoMSxyZXRyeSkp
OgotICAgICAgICBoZWFkaW5nID0gcmV0cnlfaW5kZXggPT0gMCBhbmQgJ1J1bm5pbmc6JyBvciAn
UmV0cnlpbmc6JwotICAgICAgICBwcmludChoZWFkaW5nLCAnICcuam9pbihjbWQpKQotICAgICAg
ICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc3Rkb3V0ID0gcHJvY2Vzcy5jb21t
dW5pY2F0ZSgpWzBdCi0gICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAg
ICAgICAgZXJyb3IgPSBTRlRQRXJyb3IoJ1NGVFAgYmF0Y2ggZmFpbGVkOlxuJyArIHN0ZG91dCkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgZXJyb3I6Ci0gICAgICAg
IHJhaXNlIGVycm9yCi0gICAgcmV0dXJuIHN0ZG91dAotCi1kZWYgc291cmNlZm9yZ2Vfd2ViX3N5
bmNocm8oc291cmNlZm9yZ2VfcHJvamVjdCwgZG9jX2RpciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNlcj1Ob25lLCBzZnRwPSdzZnRwJyk6Ci0gICAgIiIiTm90ZXM6IGRvZXMgbm90
IHN5bmNocm9uaXplIHN1Yi1kaXJlY3Rvcnkgb2YgZG9jLWRpci4KLSAgICAiIiIKLSAgICB1c2Vy
aG9zdCA9ICclcywlc0B3ZWIuc291cmNlZm9yZ2UubmV0JyAlICh1c2VyLCBzb3VyY2Vmb3JnZV9w
cm9qZWN0KQotICAgIHN0ZG91dCA9IHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAiIiIK
LWNkIGh0ZG9jcwotZGlyCi1leGl0Ci0iIiIpCi0gICAgZXhpc3RpbmdfcGF0aHMgPSBzZXQoKQot
ICAgIGNvbGxlY3QgPSAwCi0gICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0KCdcbicpOgotICAg
ICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBjb2xsZWN0IGFuZCBsaW5l
LmVuZHN3aXRoKCc+IGRpcicpOgotICAgICAgICAgICAgY29sbGVjdCA9IFRydWUKLSAgICAgICAg
ZWxpZiBjb2xsZWN0IGFuZCBsaW5lLmVuZHN3aXRoKCc+IGV4aXQnKToKLSAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgIGVsaWYgY29sbGVjdCA9PSAxOgotICAgICAgICAgICAgY29sbGVjdCA9IDIK
LSAgICAgICAgZWxpZiBjb2xsZWN0ID09IDI6Ci0gICAgICAgICAgICBwYXRoID0gbGluZS5zdHJp
cCgpLnNwbGl0KClbLTE6XQotICAgICAgICAgICAgaWYgcGF0aCBhbmQgcGF0aFswXSBub3QgaW4g
KCcuJywgJy4uJyk6Ci0gICAgICAgICAgICAgICAgZXhpc3RpbmdfcGF0aHMuYWRkKHBhdGhbMF0p
Ci0gICAgdXBsb2FkX3BhdGhzID0gc2V0KFtvcy5wYXRoLmJhc2VuYW1lKHApIGZvciBwIGluIGFu
dGdsb2IuZ2xvYihkb2NfZGlyKV0pCi0gICAgcGF0aHNfdG9fcmVtb3ZlID0gZXhpc3RpbmdfcGF0
aHMgLSB1cGxvYWRfcGF0aHMKLSAgICBpZiBwYXRoc190b19yZW1vdmU6Ci0gICAgICAgIHByaW50
KCdSZW1vdmluZyB0aGUgZm9sbG93aW5nIGZpbGUgZnJvbSB3ZWI6JykKLSAgICAgICAgcHJpbnQo
J1xuJy5qb2luKHBhdGhzX3RvX3JlbW92ZSkpCi0gICAgICAgIHN0ZG91dCA9IHJ1bl9zZnRwX2Jh
dGNoKHVzZXJob3N0LCBzZnRwLCAiIiJjZCBodGRvY3MKLXJtICVzCi1leGl0IiIiICUgJyAnLmpv
aW4ocGF0aHNfdG9fcmVtb3ZlKSkKLSAgICBwcmludCgnVXBsb2FkaW5nICVkIGZpbGVzOicgJSBs
ZW4odXBsb2FkX3BhdGhzKSkKLSAgICBiYXRjaF9zaXplID0gMTAKLSAgICB1cGxvYWRfcGF0aHMg
PSBsaXN0KHVwbG9hZF9wYXRocykKLSAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICBm
b3IgaW5kZXggaW4gcmFuZ2UoMCxsZW4odXBsb2FkX3BhdGhzKSxiYXRjaF9zaXplKToKLSAgICAg
ICAgcGF0aHMgPSB1cGxvYWRfcGF0aHNbaW5kZXg6aW5kZXgrYmF0Y2hfc2l6ZV0KLSAgICAgICAg
ZmlsZV9wZXJfc2VjID0gKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgLyAoaW5kZXgrMSkKLSAg
ICAgICAgcmVtYWluaW5nX2ZpbGVzID0gbGVuKHVwbG9hZF9wYXRocykgLSBpbmRleAotICAgICAg
ICByZW1haW5pbmdfc2VjID0gZmlsZV9wZXJfc2VjICogcmVtYWluaW5nX2ZpbGVzCi0gICAgICAg
IHByaW50KCclZC8lZCwgRVRBPSUuMWZzJyAlIChpbmRleCsxLCBsZW4odXBsb2FkX3BhdGhzKSwg
cmVtYWluaW5nX3NlYykpCi0gICAgICAgIHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAi
IiJjZCBodGRvY3MKLWxjZCAlcwotbXB1dCAlcwotZXhpdCIiIiAlIChkb2NfZGlyLCAnICcuam9p
bihwYXRocykpLCByZXRyeT0zKQotCi1kZWYgc291cmNlZm9yZ2VfcmVsZWFzZV90YXJiYWxsKHNv
dXJjZWZvcmdlX3Byb2plY3QsIHBhdGhzLCB1c2VyPU5vbmUsIHNmdHA9J3NmdHAnKToKLSAgICB1
c2VyaG9zdCA9ICclcywlc0BmcnMuc291cmNlZm9yZ2UubmV0JyAlICh1c2VyLCBzb3VyY2Vmb3Jn
ZV9wcm9qZWN0KQotICAgIHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAiIiIKLW1wdXQg
JXMKLWV4aXQKLSIiIiAlICgnICcuam9pbihwYXRocyksKSkKLQotCi1kZWYgbWFpbigpOgotICAg
IHVzYWdlID0gIiIiJXByb2cgcmVsZWFzZV92ZXJzaW9uIG5leHRfZGV2X3ZlcnNpb24KLVVwZGF0
ZSAndmVyc2lvbicgZmlsZSB0byByZWxlYXNlX3ZlcnNpb24gYW5kIGNvbW1pdC4KLUdlbmVyYXRl
cyB0aGUgZG9jdW1lbnQgdGFyYmFsbC4KLVRhZ3MgdGhlIHNhbmRib3ggcmV2aXNpb24gd2l0aCBy
ZWxlYXNlX3ZlcnNpb24uCi1VcGRhdGUgJ3ZlcnNpb24nIGZpbGUgdG8gbmV4dF9kZXZfdmVyc2lv
biBhbmQgY29tbWl0LgotCi1QZXJmb3JtcyBhbiBzdm4gZXhwb3J0IG9mIHRhZyByZWxlYXNlIHZl
cnNpb24sIGFuZCBidWlsZCBhIHNvdXJjZSB0YXJiYWxsLiAgICAKLQotTXVzdCBiZSBzdGFydGVk
IGluIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkuCi0KLVdhcm5pbmc6IC0tZm9yY2Ugc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIGRldmVsb3BpbmcvdGVzdGluZyB0aGUgcmVsZWFzZSBzY3JpcHQu
Ci0iIiIKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJzZXIg
PSBPcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0gICAgcGFyc2VyLmFsbG93X2ludGVyc3BlcnNl
ZF9hcmdzID0gRmFsc2UKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kb3QnLCBkZXN0PSJkb3Rf
cGF0aCIsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PWRveHlidWlsZC5maW5kX3Byb2dyYW0oJ2Rv
dCcpLAotICAgICAgICBoZWxwPSIiIlBhdGggdG8gR3JhcGhWaXogZG90IHRvb2wuIE11c3QgYmUg
ZnVsbCBxdWFsaWZpZWQgcGF0aC4gW0RlZmF1bHQ6ICVkZWZhdWx0XSIiIikKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLS1kb3h5Z2VuJywgZGVzdD0iZG94eWdlbl9wYXRoIiwgYWN0aW9uPSdzdG9y
ZScsIGRlZmF1bHQ9ZG94eWJ1aWxkLmZpbmRfcHJvZ3JhbSgnZG94eWdlbicpLAotICAgICAgICBo
ZWxwPSIiIlBhdGggdG8gRG94eWdlbiB0b29sLiBbRGVmYXVsdDogJWRlZmF1bHRdIiIiKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLWZvcmNlJywgZGVzdD0iaWdub3JlX3BlbmRpbmdfY29tbWl0
IiwgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJJ
Z25vcmUgcGVuZGluZyBjb21taXQuIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0tcmV0YWcnLCBkZXN0PSJyZXRhZ19yZWxlYXNlIiwgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJPdmVyd3JpdGUgcmVsZWFz
ZSBleGlzdGluZyB0YWcgaWYgaXQgZXhpc3QuIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcGxhdGZvcm1zJywgZGVzdD0icGxhdGZvcm1zIiwg
YWN0aW9uPSdzdG9yZScsIGRlZmF1bHQ9JycsCi0gICAgICAgIGhlbHA9IiIiQ29tbWEgc2VwYXJh
dGVkIGxpc3Qgb2YgcGxhdGZvcm0gcGFzc2VkIHRvIHNjb25zIGZvciBidWlsZCBjaGVjay4iIiIp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbm8tdGVzdCcsIGRlc3Q9Im5vX3Rlc3QiLCBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIlNraXBzIGJ1
aWxkIGNoZWNrLiIiIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1uby13ZWInLCBkZXN0PSJu
b193ZWIiLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxw
PSIiIkRvIG5vdCB1cGRhdGUgd2ViIHNpdGUuIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
dScsICctLXVwbG9hZC11c2VyJywgZGVzdD0idXNlciIsIGFjdGlvbj0nc3RvcmUnLAotICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9IiIiU291cmNlZm9yZ2UgdXNlciBmb3IgU0ZUUCBkb2N1bWVu
dGF0aW9uIHVwbG9hZC4iIiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc2Z0cCcsIGRlc3Q9
J3NmdHAnLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD1kb3h5YnVpbGQuZmluZF9wcm9ncmFtKCdw
c2Z0cCcsICdzZnRwJyksCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0iIiJQYXRoIG9mIHRo
ZSBTRlRQIGNvbXBhdGlibGUgYmluYXJ5IHVzZWQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudGF0aW9u
LiIiIikKLSAgICBwYXJzZXIuZW5hYmxlX2ludGVyc3BlcnNlZF9hcmdzKCkKLSAgICBvcHRpb25z
LCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDI6Ci0g
ICAgICAgIHBhcnNlci5lcnJvcigncmVsZWFzZV92ZXJzaW9uIG1pc3Npbmcgb24gY29tbWFuZC1s
aW5lLicpCi0gICAgcmVsZWFzZV92ZXJzaW9uID0gYXJnc1swXQotICAgIG5leHRfdmVyc2lvbiA9
IGFyZ3NbMV0KLQotICAgIGlmIG5vdCBvcHRpb25zLnBsYXRmb3JtcyBhbmQgbm90IG9wdGlvbnMu
bm9fdGVzdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCdZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciAt
LXBsYXRmb3JtIG9yIC0tbm8tdGVzdCBvcHRpb24uJykKLQotICAgIGlmIG9wdGlvbnMuaWdub3Jl
X3BlbmRpbmdfY29tbWl0OgotICAgICAgICBtc2cgPSAnJwotICAgIGVsc2U6Ci0gICAgICAgIG1z
ZyA9IGNoZWNrX25vX3BlbmRpbmdfY29tbWl0KCkKLSAgICBpZiBub3QgbXNnOgotICAgICAgICBw
cmludCgnU2V0dGluZyB2ZXJzaW9uIHRvJywgcmVsZWFzZV92ZXJzaW9uKQotICAgICAgICBzZXRf
dmVyc2lvbihyZWxlYXNlX3ZlcnNpb24pCi0gICAgICAgIHN2bl9jb21taXQoJ1JlbGVhc2UgJyAr
IHJlbGVhc2VfdmVyc2lvbikKLSAgICAgICAgdGFnX3VybCA9IHN2bl9qb2luX3VybChTVk5fVEFH
X1JPT1QsIHJlbGVhc2VfdmVyc2lvbikKLSAgICAgICAgaWYgc3ZuX2NoZWNrX2lmX3RhZ19leGlz
dCh0YWdfdXJsKToKLSAgICAgICAgICAgIGlmIG9wdGlvbnMucmV0YWdfcmVsZWFzZToKLSAgICAg
ICAgICAgICAgICBzdm5fcmVtb3ZlX3RhZyh0YWdfdXJsLCAnT3ZlcndyaXRpbmcgcHJldmlvdXMg
dGFnJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0Fib3J0aW5n
LCB0YWcgJXMgYWxyZWFkeSBleGlzdC4gVXNlIC0tcmV0YWcgdG8gb3ZlcndyaXRlIGl0IScgJSB0
YWdfdXJsKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHN2bl90YWdfc2Fu
ZGJveCh0YWdfdXJsLCAnUmVsZWFzZSAnICsgcmVsZWFzZV92ZXJzaW9uKQotCi0gICAgICAgIHBy
aW50KCdHZW5lcmF0ZWQgZG94eWdlbiBkb2N1bWVudC4uLicpCi0jIyAgICAgICAgZG9jX2Rpcm5h
bWUgPSByJ2pzb25jcHAtYXBpLWh0bWwtMC41LjAnCi0jIyAgICAgICAgZG9jX3RhcmJhbGxfcGF0
aCA9IHInZTpccHJnXHZjXExpYlxqc29uY3BwLXRydW5rXGRpc3RcanNvbmNwcC1hcGktaHRtbC0w
LjUuMC50YXIuZ3onCi0gICAgICAgIGRvY190YXJiYWxsX3BhdGgsIGRvY19kaXJuYW1lID0gZG94
eWJ1aWxkLmJ1aWxkX2RvYyhvcHRpb25zLCBtYWtlX3JlbGVhc2U9VHJ1ZSkKLSAgICAgICAgZG9j
X2Rpc3RjaGVja19kaXIgPSAnZGlzdC9kb2NjaGVjaycKLSAgICAgICAgdGFyYmFsbC5kZWNvbXBy
ZXNzKGRvY190YXJiYWxsX3BhdGgsIGRvY19kaXN0Y2hlY2tfZGlyKQotICAgICAgICBkb2NfZGlz
dGNoZWNrX3RvcF9kaXIgPSBvcy5wYXRoLmpvaW4oZG9jX2Rpc3RjaGVja19kaXIsIGRvY19kaXJu
YW1lKQotICAgICAgICAKLSAgICAgICAgZXhwb3J0X2RpciA9ICdkaXN0L2V4cG9ydCcKLSAgICAg
ICAgc3ZuX2V4cG9ydCh0YWdfdXJsLCBleHBvcnRfZGlyKQotICAgICAgICBmaXhfc291cmNlc19l
b2woZXhwb3J0X2RpcikKLSAgICAgICAgCi0gICAgICAgIHNvdXJjZV9kaXIgPSAnanNvbmNwcC1z
cmMtJyArIHJlbGVhc2VfdmVyc2lvbgotICAgICAgICBzb3VyY2VfdGFyYmFsbF9wYXRoID0gJ2Rp
c3QvJXMudGFyLmd6JyAlIHNvdXJjZV9kaXIKLSAgICAgICAgcHJpbnQoJ0dlbmVyYXRpbmcgc291
cmNlIHRhcmJhbGwgdG8nLCBzb3VyY2VfdGFyYmFsbF9wYXRoKQotICAgICAgICB0YXJiYWxsLm1h
a2VfdGFyYmFsbChzb3VyY2VfdGFyYmFsbF9wYXRoLCBbZXhwb3J0X2Rpcl0sIGV4cG9ydF9kaXIs
IHByZWZpeF9kaXI9c291cmNlX2RpcikKLQotICAgICAgICBhbWFsZ2FtYXRpb25fdGFyYmFsbF9w
YXRoID0gJ2Rpc3QvJXMtYW1hbGdhbWF0aW9uLnRhci5neicgJSBzb3VyY2VfZGlyCi0gICAgICAg
IHByaW50KCdHZW5lcmF0aW5nIGFtYWxnYW1hdGlvbiBzb3VyY2UgdGFyYmFsbCB0bycsIGFtYWxn
YW1hdGlvbl90YXJiYWxsX3BhdGgpCi0gICAgICAgIGFtYWxnYW1hdGlvbl9kaXIgPSAnZGlzdC9h
bWFsZ2FtYXRpb24nCi0gICAgICAgIGFtYWxnYW1hdGUuYW1hbGdhbWF0ZV9zb3VyY2UoZXhwb3J0
X2RpciwgJyVzL2pzb25jcHAuY3BwJyAlIGFtYWxnYW1hdGlvbl9kaXIsICdqc29uL2pzb24uaCcp
Ci0gICAgICAgIGFtYWxnYW1hdGlvbl9zb3VyY2VfZGlyID0gJ2pzb25jcHAtc3JjLWFtYWxnYW1h
dGlvbicgKyByZWxlYXNlX3ZlcnNpb24KLSAgICAgICAgdGFyYmFsbC5tYWtlX3RhcmJhbGwoYW1h
bGdhbWF0aW9uX3RhcmJhbGxfcGF0aCwgW2FtYWxnYW1hdGlvbl9kaXJdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW1hbGdhbWF0aW9uX2RpciwgcHJlZml4X2Rpcj1hbWFsZ2FtYXRp
b25fc291cmNlX2RpcikKLQotICAgICAgICAjIERlY29tcHJlc3Mgc291cmNlIHRhcmJhbGwsIGRv
d25sb2FkIGFuZCBpbnN0YWxsIHNjb25zLWxvY2FsCi0gICAgICAgIGRpc3RjaGVja19kaXIgPSAn
ZGlzdC9kaXN0Y2hlY2snCi0gICAgICAgIGRpc3RjaGVja190b3BfZGlyID0gZGlzdGNoZWNrX2Rp
ciArICcvJyArIHNvdXJjZV9kaXIKLSAgICAgICAgcHJpbnQoJ0RlY29tcHJlc3Npbmcgc291cmNl
IHRhcmJhbGwgdG8nLCBkaXN0Y2hlY2tfZGlyKQotICAgICAgICBybWRpcl9pZl9leGlzdChkaXN0
Y2hlY2tfZGlyKQotICAgICAgICB0YXJiYWxsLmRlY29tcHJlc3Moc291cmNlX3RhcmJhbGxfcGF0
aCwgZGlzdGNoZWNrX2RpcikKLSAgICAgICAgc2NvbnNfbG9jYWxfcGF0aCA9ICdkaXN0L3Njb25z
LWxvY2FsLnRhci5neicKLSAgICAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHNjb25zLWxvY2FsIHRv
Jywgc2NvbnNfbG9jYWxfcGF0aCkKLSAgICAgICAgZG93bmxvYWQoU0NPTlNfTE9DQUxfVVJMLCBz
Y29uc19sb2NhbF9wYXRoKQotICAgICAgICBwcmludCgnRGVjb21wcmVzc2luZyBzY29ucy1sb2Nh
bCB0bycsIGRpc3RjaGVja190b3BfZGlyKQotICAgICAgICB0YXJiYWxsLmRlY29tcHJlc3Moc2Nv
bnNfbG9jYWxfcGF0aCwgZGlzdGNoZWNrX3RvcF9kaXIpCi0KLSAgICAgICAgIyBSdW4gY29tcGls
YXRpb24KLSAgICAgICAgcHJpbnQoJ0NvbXBpbGluZyBkZWNvbXByZXNzZWQgdGFyYmFsbCcpCi0g
ICAgICAgIGFsbF9idWlsZF9zdGF0dXMgPSBUcnVlCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBv
cHRpb25zLnBsYXRmb3Jtcy5zcGxpdCgnLCcpOgotICAgICAgICAgICAgcHJpbnQoJ1Rlc3Rpbmcg
cGxhdGZvcm06JywgcGxhdGZvcm0pCi0gICAgICAgICAgICBidWlsZF9zdGF0dXMsIGxvZ19wYXRo
ID0gY2hlY2tfY29tcGlsZShkaXN0Y2hlY2tfdG9wX2RpciwgcGxhdGZvcm0pCi0gICAgICAgICAg
ICBwcmludCgnc2VlIGJ1aWxkIGxvZzonLCBsb2dfcGF0aCkKLSAgICAgICAgICAgIHByaW50KGJ1
aWxkX3N0YXR1cyBhbmQgJz0+IG9rJyBvciAnPT4gRkFJTEVEJykKLSAgICAgICAgICAgIGFsbF9i
dWlsZF9zdGF0dXMgPSBhbGxfYnVpbGRfc3RhdHVzIGFuZCBidWlsZF9zdGF0dXMKLSAgICAgICAg
aWYgbm90IGJ1aWxkX3N0YXR1czoKLSAgICAgICAgICAgIHByaW50KCdUZXN0aW5nIGZhaWxlZCBv
biBhdCBsZWFzdCBvbmUgcGxhdGZvcm0sIGFib3J0aW5nLi4uJykKLSAgICAgICAgICAgIHN2bl9y
ZW1vdmVfdGFnKHRhZ191cmwsICdSZW1vdmluZyB0YWcgZHVlIHRvIGZhaWxlZCB0ZXN0aW5nJykK
LSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGlmIG9wdGlvbnMudXNlcjoKLSAgICAg
ICAgICAgIGlmIG5vdCBvcHRpb25zLm5vX3dlYjoKLSAgICAgICAgICAgICAgICBwcmludCgnVXBs
b2FkaW5nIGRvY3VtZW50YXRpb24gdXNpbmcgdXNlcicsIG9wdGlvbnMudXNlcikKLSAgICAgICAg
ICAgICAgICBzb3VyY2Vmb3JnZV93ZWJfc3luY2hybyhTT1VSQ0VGT1JHRV9QUk9KRUNULCBkb2Nf
ZGlzdGNoZWNrX3RvcF9kaXIsIHVzZXI9b3B0aW9ucy51c2VyLCBzZnRwPW9wdGlvbnMuc2Z0cCkK
LSAgICAgICAgICAgICAgICBwcmludCgnQ29tcGxldGVkIGRvY3VtZW50YXRpb24gdXBsb2FkJykK
LSAgICAgICAgICAgIHByaW50KCdVcGxvYWRpbmcgc291cmNlIGFuZCBkb2N1bWVudGF0aW9uIHRh
cmJhbGxzIGZvciByZWxlYXNlIHVzaW5nIHVzZXInLCBvcHRpb25zLnVzZXIpCi0gICAgICAgICAg
ICBzb3VyY2Vmb3JnZV9yZWxlYXNlX3RhcmJhbGwoU09VUkNFRk9SR0VfUFJPSkVDVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvdXJjZV90YXJiYWxsX3BhdGgs
IGRvY190YXJiYWxsX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VyPW9wdGlvbnMudXNlciwgc2Z0cD1vcHRpb25zLnNmdHApCi0gICAgICAgICAgICBw
cmludCgnU291cmNlIGFuZCBkb2MgcmVsZWFzZSB0YXJiYWxscyB1cGxvYWRlZCcpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBwcmludCgnTm8gdXBsb2FkIHVzZXIgc3BlY2lmaWVkLiBXZWIg
c2l0ZSBhbmQgZG93bmxvYWQgdGFyYmFsbCB3ZXJlIG5vdCB1cGxvYWRlZC4nKQotICAgICAgICAg
ICAgcHJpbnQoJ1RhcmJhbGwgY2FuIGJlIGZvdW5kIGF0OicsIGRvY190YXJiYWxsX3BhdGgpCi0K
LSAgICAgICAgIyBTZXQgbmV4dCB2ZXJzaW9uIG51bWJlciBhbmQgY29tbWl0ICAgICAgICAgICAg
Ci0gICAgICAgIHNldF92ZXJzaW9uKG5leHRfdmVyc2lvbikKLSAgICAgICAgc3ZuX2NvbW1pdCgn
UmVsZWFzZWQgJyArIHJlbGVhc2VfdmVyc2lvbikKLSAgICBlbHNlOgotICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKG1zZyArICdcbicpCi0gCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9tZXNvbi5idWlsZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvbWVzb24uYnVpbGQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZTk0N2M0Y2RmODBlYThlZjc3MTI1ZTNm
ZTJlMjc5NjAzZDhlNGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9tZXNvbi5idWlsZAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1w
cm9qZWN0KAotICAnanNvbmNwcCcsCi0gICdjcHAnLAotICB2ZXJzaW9uIDogJzEuOS4wJywKLSAg
ZGVmYXVsdF9vcHRpb25zIDogWwotICAgICdidWlsZHR5cGU9cmVsZWFzZScsCi0gICAgJ2NwcF9z
dGQ9YysrMTEnLAotICAgICd3YXJuaW5nX2xldmVsPTEnXSwKLSAgbGljZW5zZSA6ICdQdWJsaWMg
RG9tYWluJywKLSAgbWVzb25fdmVyc2lvbiA6ICc+PSAwLjUwLjAnKQotCi1qc29uY3BwX3Zlcl9h
cnIgPSBtZXNvbi5wcm9qZWN0X3ZlcnNpb24oKS5zcGxpdCgnLicpCi1qc29uY3BwX21ham9yX3Zl
cnNpb24gPSBqc29uY3BwX3Zlcl9hcnJbMF0KLWpzb25jcHBfbWlub3JfdmVyc2lvbiA9IGpzb25j
cHBfdmVyX2FyclsxXQotanNvbmNwcF9wYXRjaF92ZXJzaW9uID0ganNvbmNwcF92ZXJfYXJyWzJd
Ci0KLWpzb25jcHBfY2RhdGEgPSBjb25maWd1cmF0aW9uX2RhdGEoKQotanNvbmNwcF9jZGF0YS5z
ZXQoJ0pTT05DUFBfVkVSU0lPTicsIG1lc29uLnByb2plY3RfdmVyc2lvbigpKQotanNvbmNwcF9j
ZGF0YS5zZXQoJ0pTT05DUFBfVkVSU0lPTl9NQUpPUicsIGpzb25jcHBfbWFqb3JfdmVyc2lvbikK
LWpzb25jcHBfY2RhdGEuc2V0KCdKU09OQ1BQX1ZFUlNJT05fTUlOT1InLCBqc29uY3BwX21pbm9y
X3ZlcnNpb24pCi1qc29uY3BwX2NkYXRhLnNldCgnSlNPTkNQUF9WRVJTSU9OX1BBVENIJywganNv
bmNwcF9wYXRjaF92ZXJzaW9uKQotanNvbmNwcF9jZGF0YS5zZXQoJ0pTT05DUFBfVVNFX1NFQ1VS
RV9NRU1PUlknLDApCi0KLWpzb25jcHBfZ2VuX3NvdXJjZXMgPSBjb25maWd1cmVfZmlsZSgKLSAg
aW5wdXQgOiAnc3JjL2xpYl9qc29uL3ZlcnNpb24uaC5pbicsCi0gIG91dHB1dCA6ICd2ZXJzaW9u
LmgnLAotICBjb25maWd1cmF0aW9uIDoganNvbmNwcF9jZGF0YSwKLSAgaW5zdGFsbCA6IHRydWUs
Ci0gIGluc3RhbGxfZGlyIDogam9pbl9wYXRocyhnZXRfb3B0aW9uKCdwcmVmaXgnKSwgZ2V0X29w
dGlvbignaW5jbHVkZWRpcicpLCAnanNvbicpCi0pCi0KLWpzb25jcHBfaGVhZGVycyA9IFsKLSAg
J2luY2x1ZGUvanNvbi9hbGxvY2F0b3IuaCcsCi0gICdpbmNsdWRlL2pzb24vYXNzZXJ0aW9ucy5o
JywKLSAgJ2luY2x1ZGUvanNvbi9hdXRvbGluay5oJywKLSAgJ2luY2x1ZGUvanNvbi9jb25maWcu
aCcsCi0gICdpbmNsdWRlL2pzb24vZmVhdHVyZXMuaCcsCi0gICdpbmNsdWRlL2pzb24vZm9yd2Fy
ZHMuaCcsCi0gICdpbmNsdWRlL2pzb24vanNvbi5oJywKLSAgJ2luY2x1ZGUvanNvbi9yZWFkZXIu
aCcsCi0gICdpbmNsdWRlL2pzb24vdmFsdWUuaCcsCi0gICdpbmNsdWRlL2pzb24vd3JpdGVyLmgn
XQotanNvbmNwcF9pbmNsdWRlX2RpcmVjdG9yaWVzID0gaW5jbHVkZV9kaXJlY3RvcmllcygnaW5j
bHVkZScpCi0KLWluc3RhbGxfaGVhZGVycygKLSAganNvbmNwcF9oZWFkZXJzLAotICBzdWJkaXIg
OiAnanNvbicpCi0KLWlmIGdldF9vcHRpb24oJ2RlZmF1bHRfbGlicmFyeScpID09ICdzaGFyZWQn
IGFuZCBtZXNvbi5nZXRfY29tcGlsZXIoJ2NwcCcpLmdldF9pZCgpID09ICdtc3ZjJwotICBkbGxf
ZXhwb3J0X2ZsYWcgPSAnLURKU09OX0RMTF9CVUlMRCcKLSAgZGxsX2ltcG9ydF9mbGFnID0gJy1E
SlNPTl9ETEwnCi1lbHNlCi0gIGRsbF9leHBvcnRfZmxhZyA9IFtdCi0gIGRsbF9pbXBvcnRfZmxh
ZyA9IFtdCi1lbmRpZgotCi1qc29uY3BwX2xpYiA9IGxpYnJhcnkoCi0gICdqc29uY3BwJywKLSAg
WyBqc29uY3BwX2dlbl9zb3VyY2VzLAotICAgIGpzb25jcHBfaGVhZGVycywKLSAgICAnc3JjL2xp
Yl9qc29uL2pzb25fdG9vbC5oJywKLSAgICAnc3JjL2xpYl9qc29uL2pzb25fcmVhZGVyLmNwcCcs
Ci0gICAgJ3NyYy9saWJfanNvbi9qc29uX3ZhbHVlLmNwcCcsCi0gICAgJ3NyYy9saWJfanNvbi9q
c29uX3dyaXRlci5jcHAnXSwKLSAgc292ZXJzaW9uIDogMjEsCi0gIGluc3RhbGwgOiB0cnVlLAot
ICBpbmNsdWRlX2RpcmVjdG9yaWVzIDoganNvbmNwcF9pbmNsdWRlX2RpcmVjdG9yaWVzLAotICBj
cHBfYXJnczogZGxsX2V4cG9ydF9mbGFnKQotCi1pbXBvcnQoJ3BrZ2NvbmZpZycpLmdlbmVyYXRl
KAotICBsaWJyYXJpZXMgOiBqc29uY3BwX2xpYiwKLSAgdmVyc2lvbiA6IG1lc29uLnByb2plY3Rf
dmVyc2lvbigpLAotICBuYW1lIDogJ2pzb25jcHAnLAotICBmaWxlYmFzZSA6ICdqc29uY3BwJywK
LSAgZGVzY3JpcHRpb24gOiAnQSBDKysgbGlicmFyeSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBKU09O
JykKLQotIyBmb3IgbGlicmFyaWVzIGJ1bmRsaW5nIGpzb25jcHAKLWpzb25jcHBfZGVwID0gZGVj
bGFyZV9kZXBlbmRlbmN5KAotICBpbmNsdWRlX2RpcmVjdG9yaWVzIDoganNvbmNwcF9pbmNsdWRl
X2RpcmVjdG9yaWVzLAotICBsaW5rX3dpdGggOiBqc29uY3BwX2xpYiwKLSAgdmVyc2lvbiA6IG1l
c29uLnByb2plY3RfdmVyc2lvbigpLAotICBzb3VyY2VzIDoganNvbmNwcF9nZW5fc291cmNlcykK
LQotIyB0ZXN0cwotcHl0aG9uID0gaW1wb3J0KCdweXRob24zJykuZmluZF9weXRob24oKQotCi1q
c29uY3BwX3Rlc3QgPSBleGVjdXRhYmxlKAotICAnanNvbmNwcF90ZXN0JywKLSAgWyAnc3JjL3Rl
c3RfbGliX2pzb24vanNvbnRlc3QuY3BwJywKLSAgICAnc3JjL3Rlc3RfbGliX2pzb24vanNvbnRl
c3QuaCcsCi0gICAgJ3NyYy90ZXN0X2xpYl9qc29uL21haW4uY3BwJywKLSAgICAnc3JjL3Rlc3Rf
bGliX2pzb24vZnV6ei5jcHAnXSwKLSAgaW5jbHVkZV9kaXJlY3RvcmllcyA6IGpzb25jcHBfaW5j
bHVkZV9kaXJlY3RvcmllcywKLSAgbGlua193aXRoIDoganNvbmNwcF9saWIsCi0gIGluc3RhbGwg
OiBmYWxzZSwKLSAgY3BwX2FyZ3M6IGRsbF9pbXBvcnRfZmxhZykKLXRlc3QoCi0gICd1bml0dGVz
dF9qc29uY3BwX3Rlc3QnLAotICBqc29uY3BwX3Rlc3QpCi0KLWpzb250ZXN0cnVubmVyID0gZXhl
Y3V0YWJsZSgKLSAgJ2pzb250ZXN0cnVubmVyJywKLSAgJ3NyYy9qc29udGVzdHJ1bm5lci9tYWlu
LmNwcCcsCi0gIGluY2x1ZGVfZGlyZWN0b3JpZXMgOiBqc29uY3BwX2luY2x1ZGVfZGlyZWN0b3Jp
ZXMsCi0gIGxpbmtfd2l0aCA6IGpzb25jcHBfbGliLAotICBpbnN0YWxsIDogZmFsc2UsCi0gIGNw
cF9hcmdzOiBkbGxfaW1wb3J0X2ZsYWcpCi10ZXN0KAotICAndW5pdHRlc3RfanNvbnRlc3RydW5u
ZXInLAotICBweXRob24sCi0gIGFyZ3MgOiBbCi0gICAgJy1CJywKLSAgICBqb2luX3BhdGhzKG1l
c29uLmN1cnJlbnRfc291cmNlX2RpcigpLCAndGVzdC9ydW5qc29udGVzdHMucHknKSwKLSAgICBq
c29udGVzdHJ1bm5lciwKLSAgICBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2Rpcigp
LCAndGVzdC9kYXRhJyldCi0gICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvcGtnLWNvbmZpZy9qc29uY3Bw
LnBjLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9wa2ctY29uZmlnL2pzb25jcHAucGMuaW4KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGRlYTUxZjUxMjVhMmQ3NWRmYzU2Y2EyZDQ2NjEyNzU0ZmIyNGFjZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9wa2ctY29u
ZmlnL2pzb25jcHAucGMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWxpYmRpcj1A
Q01BS0VfSU5TVEFMTF9GVUxMX0xJQkRJUkAKLWluY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVM
TF9JTkNMVURFRElSQAotCi1OYW1lOiBqc29uY3BwCi1EZXNjcmlwdGlvbjogQSBDKysgbGlicmFy
eSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBKU09OCi1WZXJzaW9uOiBASlNPTkNQUF9WRVJTSU9OQAot
VVJMOiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwCi1MaWJz
OiAtTCR7bGliZGlyfSAtbGpzb25jcHAKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3NyYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL0NNYWtlTGlzdHMudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjgyYTc0NjMzMTIxZTQwZWI0MDMxMDNiYzE4
ZGRiMzFjN2JkNWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2Uvc3JjL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci1hZGRfc3ViZGlyZWN0b3J5KGxpYl9qc29uKQotaWYoSlNPTkNQUF9XSVRIX1RFU1RTKQotICAg
IGFkZF9zdWJkaXJlY3RvcnkoanNvbnRlc3RydW5uZXIpCi0gICAgYWRkX3N1YmRpcmVjdG9yeSh0
ZXN0X2xpYl9qc29uKQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvanNvbnRlc3RydW5u
ZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9qc29udGVzdHJ1bm5lci9DTWFrZUxpc3RzLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzYTQ0ZTY0YmE1MjY0NGQwMWNmOTUw
M2M3ODE3ZjBlZDk1YTUwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3NyYy9qc29udGVzdHJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDM2ICswLDAgQEAKLWZpbmRfcGFja2FnZShQeXRob25JbnRlcnAgMi42KQotCi1h
ZGRfZXhlY3V0YWJsZShqc29udGVzdHJ1bm5lcl9leGUKLSAgICAgICAgICAgICAgIG1haW4uY3Bw
Ci0gICAgICAgICAgICAgICApCi0KLWlmKEJVSUxEX1NIQVJFRF9MSUJTKQotICAgIGFkZF9jb21w
aWxlX2RlZmluaXRpb25zKCBKU09OX0RMTCApCi1lbmRpZigpCi10YXJnZXRfbGlua19saWJyYXJp
ZXMoanNvbnRlc3RydW5uZXJfZXhlIGpzb25jcHBfbGliKQotCi1zZXRfdGFyZ2V0X3Byb3BlcnRp
ZXMoanNvbnRlc3RydW5uZXJfZXhlIFBST1BFUlRJRVMgT1VUUFVUX05BTUUganNvbnRlc3RydW5u
ZXJfZXhlKQotCi1pZihQWVRIT05JTlRFUlBfRk9VTkQpCi0gICAgIyBSdW4gZW5kIHRvIGVuZCBw
YXJzZXIvd3JpdGVyIHRlc3RzCi0gICAgc2V0KFRFU1RfRElSICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS8uLi8uLi90ZXN0KQotICAgIHNldChSVU5KU09OVEVTVFNfUEFUSCAke1RFU1RfRElS
fS9ydW5qc29udGVzdHMucHkpCi0KLSAgICAjIFJ1biB1bml0IHRlc3RzIGluIHBvc3QtYnVpbGQK
LSAgICAjIChkZWZhdWx0IGNtYWtlIHdvcmtmbG93IGhpZGVzIGF3YXkgdGhlIHRlc3QgcmVzdWx0
IGludG8gYSBmaWxlLCByZXN1bHRpbmcgaW4gcG9vciBkZXYgd29ya2Zsb3c/IT8pCi0gICAgYWRk
X2N1c3RvbV90YXJnZXQoanNvbmNwcF9yZWFkZXJ3cml0ZXJfdGVzdHMKLSAgICAgICAgICAgICAg
ICAgICAgICAiJHtQWVRIT05fRVhFQ1VUQUJMRX0iIC1CICIke1JVTkpTT05URVNUU19QQVRIfSIg
JDxUQVJHRVRfRklMRTpqc29udGVzdHJ1bm5lcl9leGU+ICIke1RFU1RfRElSfS9kYXRhIgotICAg
ICAgICAgICAgICAgICAgICAgIERFUEVORFMganNvbnRlc3RydW5uZXJfZXhlIGpzb25jcHBfdGVz
dAotICAgICAgICAgICAgICAgICAgICAgICkKLSAgICBhZGRfY3VzdG9tX3RhcmdldChqc29uY3Bw
X2NoZWNrIERFUEVORFMganNvbmNwcF9yZWFkZXJ3cml0ZXJfdGVzdHMpCi0KLSAgICAjIyBDcmVh
dGUgdGVzdHMgZm9yIGRhc2hib2FyZCBzdWJtaXNzaW9uLCBhbGxvd3MgZWFzeSByZXZpZXcgb2Yg
Q0kgcmVzdWx0cyBodHRwczovL215LmNkYXNoLm9yZy9pbmRleC5waHA/cHJvamVjdD1qc29uY3Bw
Ci0gICAgYWRkX3Rlc3QoTkFNRSBqc29uY3BwX3JlYWRlcndyaXRlcgotICAgICAgICAgICAgIENP
TU1BTkQgIiR7UFlUSE9OX0VYRUNVVEFCTEV9IiAtQiAiJHtSVU5KU09OVEVTVFNfUEFUSH0iICQ8
VEFSR0VUX0ZJTEU6anNvbnRlc3RydW5uZXJfZXhlPiAiJHtURVNUX0RJUn0vZGF0YSIKLSAgICAg
ICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAiJHtURVNUX0RJUn0vZGF0YSIKLSAgICApCi0gICAg
YWRkX3Rlc3QoTkFNRSBqc29uY3BwX3JlYWRlcndyaXRlcl9qc29uX2NoZWNrZXIKLSAgICAgICAg
ICAgICBDT01NQU5EICIke1BZVEhPTl9FWEVDVVRBQkxFfSIgLUIgIiR7UlVOSlNPTlRFU1RTX1BB
VEh9IiAtLXdpdGgtanNvbi1jaGVja2VyICAkPFRBUkdFVF9GSUxFOmpzb250ZXN0cnVubmVyX2V4
ZT4gIiR7VEVTVF9ESVJ9L2RhdGEiCi0gICAgICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgIiR7
VEVTVF9ESVJ9L2RhdGEiCi0gICAgKQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvanNv
bnRlc3RydW5uZXIvbWFpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9qc29udGVzdHJ1bm5lci9tYWluLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJkNDFhYTVmZDk5YjEwMDBkZDUyZDUzZjQ4
ODJiZjc2Yjc3OWI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3NyYy9qc29udGVzdHJ1bm5lci9tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDMwMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBh
bmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2Us
IG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBq
dXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBo
dHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWYgZGVmaW5lZChfX0dO
VUNfXykKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotI2VsaWYgZGVmaW5lZChfTVND
X1ZFUikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDk5NikKLSNlbmRpZgotCi0vKiBUaGlz
IGV4ZWN1dGFibGUgaXMgdXNlZCBmb3IgdGVzdGluZyBwYXJzZXIvd3JpdGVyIHVzaW5nIHJlYWwg
SlNPTiBmaWxlcy4KLSAqLwotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAvLyBzb3J0Ci0jaW5jbHVk
ZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGpzb24vanNvbi5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0K
LXN0cnVjdCBPcHRpb25zIHsKLSAgSnNvbjo6U3RyaW5nIHBhdGg7Ci0gIEpzb246OkZlYXR1cmVz
IGZlYXR1cmVzOwotICBib29sIHBhcnNlT25seTsKLSAgdXNpbmcgd3JpdGVGdW5jVHlwZSA9IEpz
b246OlN0cmluZyAoKikoSnNvbjo6VmFsdWUgY29uc3QmKTsKLSAgd3JpdGVGdW5jVHlwZSB3cml0
ZTsKLX07Ci0KLXN0YXRpYyBKc29uOjpTdHJpbmcgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cihk
b3VibGUgdmFsdWUpIHsKLSAgY2hhciBidWZmZXJbMzJdOwotICBqc29uY3BwX3NucHJpbnRmKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlLjE2ZyIsIHZhbHVlKTsKLSAgYnVmZmVyW3NpemVvZihi
dWZmZXIpIC0gMV0gPSAwOwotICBKc29uOjpTdHJpbmcgcyhidWZmZXIpOwotICBKc29uOjpTdHJp
bmc6OnNpemVfdHlwZSBpbmRleCA9IHMuZmluZF9sYXN0X29mKCJlRSIpOwotICBpZiAoaW5kZXgg
IT0gSnNvbjo6U3RyaW5nOjpucG9zKSB7Ci0gICAgSnNvbjo6U3RyaW5nOjpzaXplX3R5cGUgaGFz
U2lnbiA9Ci0gICAgICAgIChzW2luZGV4ICsgMV0gPT0gJysnIHx8IHNbaW5kZXggKyAxXSA9PSAn
LScpID8gMSA6IDA7Ci0gICAgSnNvbjo6U3RyaW5nOjpzaXplX3R5cGUgZXhwb25lbnRTdGFydElu
ZGV4ID0gaW5kZXggKyAxICsgaGFzU2lnbjsKLSAgICBKc29uOjpTdHJpbmcgbm9ybWFsaXplZCA9
IHMuc3Vic3RyKDAsIGV4cG9uZW50U3RhcnRJbmRleCk7Ci0gICAgSnNvbjo6U3RyaW5nOjpzaXpl
X3R5cGUgaW5kZXhEaWdpdCA9Ci0gICAgICAgIHMuZmluZF9maXJzdF9ub3Rfb2YoJzAnLCBleHBv
bmVudFN0YXJ0SW5kZXgpOwotICAgIEpzb246OlN0cmluZyBleHBvbmVudCA9ICIwIjsKLSAgICBp
ZiAoaW5kZXhEaWdpdCAhPSBKc29uOjpTdHJpbmc6Om5wb3MpIC8vIFRoZXJlIGlzIGFuIGV4cG9u
ZW50IGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZnJvbSAwCi0gICAgewotICAgICAgZXhwb25lbnQgPSBzLnN1YnN0cihpbmRleERpZ2l0KTsK
LSAgICB9Ci0gICAgcmV0dXJuIG5vcm1hbGl6ZWQgKyBleHBvbmVudDsKLSAgfQotICByZXR1cm4g
czsKLX0KLQotc3RhdGljIEpzb246OlN0cmluZyByZWFkSW5wdXRUZXN0RmlsZShjb25zdCBjaGFy
KiBwYXRoKSB7Ci0gIEZJTEUqIGZpbGUgPSBmb3BlbihwYXRoLCAicmIiKTsKLSAgaWYgKCFmaWxl
KQotICAgIHJldHVybiAiIjsKLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotICBsb25nIGNv
bnN0IHNpemUgPSBmdGVsbChmaWxlKTsKLSAgc2l6ZV90IGNvbnN0IHVzaXplID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4oc2l6ZSk7Ci0gIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKLSAg
Y2hhciogYnVmZmVyID0gbmV3IGNoYXJbc2l6ZSArIDFdOwotICBidWZmZXJbc2l6ZV0gPSAwOwot
ICBKc29uOjpTdHJpbmcgdGV4dDsKLSAgaWYgKGZyZWFkKGJ1ZmZlciwgMSwgdXNpemUsIGZpbGUp
ID09IHVzaXplKQotICAgIHRleHQgPSBidWZmZXI7Ci0gIGZjbG9zZShmaWxlKTsKLSAgZGVsZXRl
W10gYnVmZmVyOwotICByZXR1cm4gdGV4dDsKLX0KLQotc3RhdGljIHZvaWQKLXByaW50VmFsdWVU
cmVlKEZJTEUqIGZvdXQsIEpzb246OlZhbHVlJiB2YWx1ZSwgY29uc3QgSnNvbjo6U3RyaW5nJiBw
YXRoID0gIi4iKSB7Ci0gIGlmICh2YWx1ZS5oYXNDb21tZW50KEpzb246OmNvbW1lbnRCZWZvcmUp
KSB7Ci0gICAgZnByaW50Zihmb3V0LCAiJXNcbiIsIHZhbHVlLmdldENvbW1lbnQoSnNvbjo6Y29t
bWVudEJlZm9yZSkuY19zdHIoKSk7Ci0gIH0KLSAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsKLSAg
Y2FzZSBKc29uOjpudWxsVmFsdWU6Ci0gICAgZnByaW50Zihmb3V0LCAiJXM9bnVsbFxuIiwgcGF0
aC5jX3N0cigpKTsKLSAgICBicmVhazsKLSAgY2FzZSBKc29uOjppbnRWYWx1ZToKLSAgICBmcHJp
bnRmKGZvdXQsICIlcz0lc1xuIiwgcGF0aC5jX3N0cigpLAotICAgICAgICAgICAgSnNvbjo6dmFs
dWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RJbnQoKSkuY19zdHIoKSk7Ci0gICAgYnJlYWs7Ci0g
IGNhc2UgSnNvbjo6dWludFZhbHVlOgotICAgIGZwcmludGYoZm91dCwgIiVzPSVzXG4iLCBwYXRo
LmNfc3RyKCksCi0gICAgICAgICAgICBKc29uOjp2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzTGFyZ2Vz
dFVJbnQoKSkuY19zdHIoKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgSnNvbjo6cmVhbFZhbHVlOgot
ICAgIGZwcmludGYoZm91dCwgIiVzPSVzXG4iLCBwYXRoLmNfc3RyKCksCi0gICAgICAgICAgICBu
b3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKHZhbHVlLmFzRG91YmxlKCkpLmNfc3RyKCkpOwotICAg
IGJyZWFrOwotICBjYXNlIEpzb246OnN0cmluZ1ZhbHVlOgotICAgIGZwcmludGYoZm91dCwgIiVz
PVwiJXNcIlxuIiwgcGF0aC5jX3N0cigpLCB2YWx1ZS5hc1N0cmluZygpLmNfc3RyKCkpOwotICAg
IGJyZWFrOwotICBjYXNlIEpzb246OmJvb2xlYW5WYWx1ZToKLSAgICBmcHJpbnRmKGZvdXQsICIl
cz0lc1xuIiwgcGF0aC5jX3N0cigpLCB2YWx1ZS5hc0Jvb2woKSA/ICJ0cnVlIiA6ICJmYWxzZSIp
OwotICAgIGJyZWFrOwotICBjYXNlIEpzb246OmFycmF5VmFsdWU6IHsKLSAgICBmcHJpbnRmKGZv
dXQsICIlcz1bXVxuIiwgcGF0aC5jX3N0cigpKTsKLSAgICBKc29uOjpBcnJheUluZGV4IHNpemUg
PSB2YWx1ZS5zaXplKCk7Ci0gICAgZm9yIChKc29uOjpBcnJheUluZGV4IGluZGV4ID0gMDsgaW5k
ZXggPCBzaXplOyArK2luZGV4KSB7Ci0gICAgICBzdGF0aWMgY2hhciBidWZmZXJbMTZdOwotICAg
ICAganNvbmNwcF9zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiWyV1XSIsIGluZGV4
KTsKLSAgICAgIHByaW50VmFsdWVUcmVlKGZvdXQsIHZhbHVlW2luZGV4XSwgcGF0aCArIGJ1ZmZl
cik7Ci0gICAgfQotICB9IGJyZWFrOwotICBjYXNlIEpzb246Om9iamVjdFZhbHVlOiB7Ci0gICAg
ZnByaW50Zihmb3V0LCAiJXM9e31cbiIsIHBhdGguY19zdHIoKSk7Ci0gICAgSnNvbjo6VmFsdWU6
Ok1lbWJlcnMgbWVtYmVycyh2YWx1ZS5nZXRNZW1iZXJOYW1lcygpKTsKLSAgICBzdGQ6OnNvcnQo
bWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpKTsKLSAgICBKc29uOjpTdHJpbmcgc3VmZml4
ID0gKihwYXRoLmVuZCgpIC0gMSkgPT0gJy4nID8gIiIgOiAiLiI7Ci0gICAgZm9yIChhdXRvIG5h
bWUgOiBtZW1iZXJzKSB7Ci0gICAgICBwcmludFZhbHVlVHJlZShmb3V0LCB2YWx1ZVtuYW1lXSwg
cGF0aCArIHN1ZmZpeCArIG5hbWUpOwotICAgIH0KLSAgfSBicmVhazsKLSAgZGVmYXVsdDoKLSAg
ICBicmVhazsKLSAgfQotCi0gIGlmICh2YWx1ZS5oYXNDb21tZW50KEpzb246OmNvbW1lbnRBZnRl
cikpIHsKLSAgICBmcHJpbnRmKGZvdXQsICIlc1xuIiwgdmFsdWUuZ2V0Q29tbWVudChKc29uOjpj
b21tZW50QWZ0ZXIpLmNfc3RyKCkpOwotICB9Ci19Ci0KLXN0YXRpYyBpbnQgcGFyc2VBbmRTYXZl
VmFsdWVUcmVlKGNvbnN0IEpzb246OlN0cmluZyYgaW5wdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBKc29uOjpTdHJpbmcmIGFjdHVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYga2luZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OkZlYXR1cmVzJiBmZWF0dXJlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGFyc2VPbmx5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSnNvbjo6VmFsdWUqIHJvb3QpIHsKLSAgSnNvbjo6UmVh
ZGVyIHJlYWRlcihmZWF0dXJlcyk7Ci0gIGJvb2wgcGFyc2luZ1N1Y2Nlc3NmdWwgPQotICAgICAg
cmVhZGVyLnBhcnNlKGlucHV0LmRhdGEoKSwgaW5wdXQuZGF0YSgpICsgaW5wdXQuc2l6ZSgpLCAq
cm9vdCk7Ci0gIGlmICghcGFyc2luZ1N1Y2Nlc3NmdWwpIHsKLSAgICBwcmludGYoIkZhaWxlZCB0
byBwYXJzZSAlcyBmaWxlOiBcbiVzXG4iLCBraW5kLmNfc3RyKCksCi0gICAgICAgICAgIHJlYWRl
ci5nZXRGb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKCkuY19zdHIoKSk7Ci0gICAgcmV0dXJuIDE7Ci0g
IH0KLSAgaWYgKCFwYXJzZU9ubHkpIHsKLSAgICBGSUxFKiBmYWN0dWFsID0gZm9wZW4oYWN0dWFs
LmNfc3RyKCksICJ3dCIpOwotICAgIGlmICghZmFjdHVhbCkgewotICAgICAgcHJpbnRmKCJGYWls
ZWQgdG8gY3JlYXRlICVzIGFjdHVhbCBmaWxlLlxuIiwga2luZC5jX3N0cigpKTsKLSAgICAgIHJl
dHVybiAyOwotICAgIH0KLSAgICBwcmludFZhbHVlVHJlZShmYWN0dWFsLCAqcm9vdCk7Ci0gICAg
ZmNsb3NlKGZhY3R1YWwpOwotICB9Ci0gIHJldHVybiAwOwotfQotLy8gc3RhdGljIEpzb246OlN0
cmluZyB1c2VGYXN0V3JpdGVyKEpzb246OlZhbHVlIGNvbnN0JiByb290KSB7Ci0vLyAgIEpzb246
OkZhc3RXcml0ZXIgd3JpdGVyOwotLy8gICB3cml0ZXIuZW5hYmxlWUFNTENvbXBhdGliaWxpdHko
KTsKLS8vICAgcmV0dXJuIHdyaXRlci53cml0ZShyb290KTsKLS8vIH0KLXN0YXRpYyBKc29uOjpT
dHJpbmcgdXNlU3R5bGVkV3JpdGVyKEpzb246OlZhbHVlIGNvbnN0JiByb290KSB7Ci0gIEpzb246
OlN0eWxlZFdyaXRlciB3cml0ZXI7Ci0gIHJldHVybiB3cml0ZXIud3JpdGUocm9vdCk7Ci19Ci1z
dGF0aWMgSnNvbjo6U3RyaW5nIHVzZVN0eWxlZFN0cmVhbVdyaXRlcihKc29uOjpWYWx1ZSBjb25z
dCYgcm9vdCkgewotICBKc29uOjpTdHlsZWRTdHJlYW1Xcml0ZXIgd3JpdGVyOwotICBKc29uOjpP
U3RyaW5nU3RyZWFtIHNvdXQ7Ci0gIHdyaXRlci53cml0ZShzb3V0LCByb290KTsKLSAgcmV0dXJu
IHNvdXQuc3RyKCk7Ci19Ci1zdGF0aWMgSnNvbjo6U3RyaW5nIHVzZUJ1aWx0U3R5bGVkU3RyZWFt
V3JpdGVyKEpzb246OlZhbHVlIGNvbnN0JiByb290KSB7Ci0gIEpzb246OlN0cmVhbVdyaXRlckJ1
aWxkZXIgYnVpbGRlcjsKLSAgcmV0dXJuIEpzb246OndyaXRlU3RyaW5nKGJ1aWxkZXIsIHJvb3Qp
OwotfQotc3RhdGljIGludCByZXdyaXRlVmFsdWVUcmVlKGNvbnN0IEpzb246OlN0cmluZyYgcmV3
cml0ZVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSnNvbjo6VmFsdWUm
IHJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uczo6d3JpdGVGdW5jVHlw
ZSB3cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKc29uOjpTdHJpbmcqIHJld3Jp
dGUpIHsKLSAgKnJld3JpdGUgPSB3cml0ZShyb290KTsKLSAgRklMRSogZm91dCA9IGZvcGVuKHJl
d3JpdGVQYXRoLmNfc3RyKCksICJ3dCIpOwotICBpZiAoIWZvdXQpIHsKLSAgICBwcmludGYoIkZh
aWxlZCB0byBjcmVhdGUgcmV3cml0ZSBmaWxlOiAlc1xuIiwgcmV3cml0ZVBhdGguY19zdHIoKSk7
Ci0gICAgcmV0dXJuIDI7Ci0gIH0KLSAgZnByaW50Zihmb3V0LCAiJXNcbiIsIHJld3JpdGUtPmNf
c3RyKCkpOwotICBmY2xvc2UoZm91dCk7Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgSnNvbjo6
U3RyaW5nIHJlbW92ZVN1ZmZpeChjb25zdCBKc29uOjpTdHJpbmcmIHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKc29uOjpTdHJpbmcmIGV4dGVuc2lvbikgewot
ICBpZiAoZXh0ZW5zaW9uLmxlbmd0aCgpID49IHBhdGgubGVuZ3RoKCkpCi0gICAgcmV0dXJuIEpz
b246OlN0cmluZygiIik7Ci0gIEpzb246OlN0cmluZyBzdWZmaXggPSBwYXRoLnN1YnN0cihwYXRo
Lmxlbmd0aCgpIC0gZXh0ZW5zaW9uLmxlbmd0aCgpKTsKLSAgaWYgKHN1ZmZpeCAhPSBleHRlbnNp
b24pCi0gICAgcmV0dXJuIEpzb246OlN0cmluZygiIik7Ci0gIHJldHVybiBwYXRoLnN1YnN0cigw
LCBwYXRoLmxlbmd0aCgpIC0gZXh0ZW5zaW9uLmxlbmd0aCgpKTsKLX0KLQotc3RhdGljIHZvaWQg
cHJpbnRDb25maWcoKSB7Ci0vLyBQcmludCB0aGUgY29uZmlndXJhdGlvbiB1c2VkIHRvIGNvbXBp
bGUgSnNvbkNwcAotI2lmIGRlZmluZWQoSlNPTl9OT19JTlQ2NCkKLSAgcHJpbnRmKCJKU09OX05P
X0lOVDY0PTFcbiIpOwotI2Vsc2UKLSAgcHJpbnRmKCJKU09OX05PX0lOVDY0PTBcbiIpOwotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyBpbnQgcHJpbnRVc2FnZShjb25zdCBjaGFyKiBhcmd2W10pIHsKLSAg
cHJpbnRmKCJVc2FnZTogJXMgWy0tc3RyaWN0XSBpbnB1dC1qc29uLWZpbGUiLCBhcmd2WzBdKTsK
LSAgcmV0dXJuIDM7Ci19Ci0KLXN0YXRpYyBpbnQgcGFyc2VDb21tYW5kTGluZShpbnQgYXJnYywg
Y29uc3QgY2hhciogYXJndltdLCBPcHRpb25zKiBvcHRzKSB7Ci0gIG9wdHMtPnBhcnNlT25seSA9
IGZhbHNlOwotICBvcHRzLT53cml0ZSA9ICZ1c2VTdHlsZWRXcml0ZXI7Ci0gIGlmIChhcmdjIDwg
MikgewotICAgIHJldHVybiBwcmludFVzYWdlKGFyZ3YpOwotICB9Ci0gIGludCBpbmRleCA9IDE7
Ci0gIGlmIChKc29uOjpTdHJpbmcoYXJndltpbmRleF0pID09ICItLWpzb24tY2hlY2tlciIpIHsK
LSAgICBvcHRzLT5mZWF0dXJlcyA9IEpzb246OkZlYXR1cmVzOjpzdHJpY3RNb2RlKCk7Ci0gICAg
b3B0cy0+cGFyc2VPbmx5ID0gdHJ1ZTsKLSAgICArK2luZGV4OwotICB9Ci0gIGlmIChKc29uOjpT
dHJpbmcoYXJndltpbmRleF0pID09ICItLWpzb24tY29uZmlnIikgewotICAgIHByaW50Q29uZmln
KCk7Ci0gICAgcmV0dXJuIDM7Ci0gIH0KLSAgaWYgKEpzb246OlN0cmluZyhhcmd2W2luZGV4XSkg
PT0gIi0tanNvbi13cml0ZXIiKSB7Ci0gICAgKytpbmRleDsKLSAgICBKc29uOjpTdHJpbmcgY29u
c3Qgd3JpdGVyTmFtZShhcmd2W2luZGV4KytdKTsKLSAgICBpZiAod3JpdGVyTmFtZSA9PSAiU3R5
bGVkV3JpdGVyIikgewotICAgICAgb3B0cy0+d3JpdGUgPSAmdXNlU3R5bGVkV3JpdGVyOwotICAg
IH0gZWxzZSBpZiAod3JpdGVyTmFtZSA9PSAiU3R5bGVkU3RyZWFtV3JpdGVyIikgewotICAgICAg
b3B0cy0+d3JpdGUgPSAmdXNlU3R5bGVkU3RyZWFtV3JpdGVyOwotICAgIH0gZWxzZSBpZiAod3Jp
dGVyTmFtZSA9PSAiQnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXIiKSB7Ci0gICAgICBvcHRzLT53cml0
ZSA9ICZ1c2VCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjsKLSAgICB9IGVsc2UgewotICAgICAgcHJp
bnRmKCJVbmtub3duICctLWpzb24td3JpdGVyICVzJ1xuIiwgd3JpdGVyTmFtZS5jX3N0cigpKTsK
LSAgICAgIHJldHVybiA0OwotICAgIH0KLSAgfQotICBpZiAoaW5kZXggPT0gYXJnYyB8fCBpbmRl
eCArIDEgPCBhcmdjKSB7Ci0gICAgcmV0dXJuIHByaW50VXNhZ2UoYXJndik7Ci0gIH0KLSAgb3B0
cy0+cGF0aCA9IGFyZ3ZbaW5kZXhdOwotICByZXR1cm4gMDsKLX0KLXN0YXRpYyBpbnQgcnVuVGVz
dChPcHRpb25zIGNvbnN0JiBvcHRzKSB7Ci0gIGludCBleGl0Q29kZSA9IDA7Ci0KLSAgSnNvbjo6
U3RyaW5nIGlucHV0ID0gcmVhZElucHV0VGVzdEZpbGUob3B0cy5wYXRoLmNfc3RyKCkpOwotICBp
ZiAoaW5wdXQuZW1wdHkoKSkgewotICAgIHByaW50ZigiRmFpbGVkIHRvIHJlYWQgaW5wdXQgb3Ig
ZW1wdHkgaW5wdXQ6ICVzXG4iLCBvcHRzLnBhdGguY19zdHIoKSk7Ci0gICAgcmV0dXJuIDM7Ci0g
IH0KLQotICBKc29uOjpTdHJpbmcgYmFzZVBhdGggPSByZW1vdmVTdWZmaXgob3B0cy5wYXRoLCAi
Lmpzb24iKTsKLSAgaWYgKCFvcHRzLnBhcnNlT25seSAmJiBiYXNlUGF0aC5lbXB0eSgpKSB7Ci0g
ICAgcHJpbnRmKCJCYWQgaW5wdXQgcGF0aC4gUGF0aCBkb2VzIG5vdCBlbmQgd2l0aCAnLmV4cGVj
dGVkJzpcbiVzXG4iLAotICAgICAgICAgICBvcHRzLnBhdGguY19zdHIoKSk7Ci0gICAgcmV0dXJu
IDM7Ci0gIH0KLQotICBKc29uOjpTdHJpbmcgY29uc3QgYWN0dWFsUGF0aCA9IGJhc2VQYXRoICsg
Ii5hY3R1YWwiOwotICBKc29uOjpTdHJpbmcgY29uc3QgcmV3cml0ZVBhdGggPSBiYXNlUGF0aCAr
ICIucmV3cml0ZSI7Ci0gIEpzb246OlN0cmluZyBjb25zdCByZXdyaXRlQWN0dWFsUGF0aCA9IGJh
c2VQYXRoICsgIi5hY3R1YWwtcmV3cml0ZSI7Ci0KLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgZXhp
dENvZGUgPSBwYXJzZUFuZFNhdmVWYWx1ZVRyZWUoaW5wdXQsIGFjdHVhbFBhdGgsICJpbnB1dCIs
IG9wdHMuZmVhdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMu
cGFyc2VPbmx5LCAmcm9vdCk7Ci0gIGlmIChleGl0Q29kZSB8fCBvcHRzLnBhcnNlT25seSkgewot
ICAgIHJldHVybiBleGl0Q29kZTsKLSAgfQotICBKc29uOjpTdHJpbmcgcmV3cml0ZTsKLSAgZXhp
dENvZGUgPSByZXdyaXRlVmFsdWVUcmVlKHJld3JpdGVQYXRoLCByb290LCBvcHRzLndyaXRlLCAm
cmV3cml0ZSk7Ci0gIGlmIChleGl0Q29kZSkgewotICAgIHJldHVybiBleGl0Q29kZTsKLSAgfQot
ICBKc29uOjpWYWx1ZSByZXdyaXRlUm9vdDsKLSAgZXhpdENvZGUgPSBwYXJzZUFuZFNhdmVWYWx1
ZVRyZWUocmV3cml0ZSwgcmV3cml0ZUFjdHVhbFBhdGgsICJyZXdyaXRlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5mZWF0dXJlcywgb3B0cy5wYXJzZU9ubHksICZy
ZXdyaXRlUm9vdCk7Ci0gIGlmIChleGl0Q29kZSkgewotICAgIHJldHVybiBleGl0Q29kZTsKLSAg
fQotICByZXR1cm4gMDsKLX0KLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
IHsKLSAgT3B0aW9ucyBvcHRzOwotICB0cnkgewotICAgIGludCBleGl0Q29kZSA9IHBhcnNlQ29t
bWFuZExpbmUoYXJnYywgYXJndiwgJm9wdHMpOwotICAgIGlmIChleGl0Q29kZSAhPSAwKSB7Ci0g
ICAgICBwcmludGYoIkZhaWxlZCB0byBwYXJzZSBjb21tYW5kLWxpbmUuIik7Ci0gICAgICByZXR1
cm4gZXhpdENvZGU7Ci0gICAgfQotICAgIHJldHVybiBydW5UZXN0KG9wdHMpOwotICB9IGNhdGNo
IChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkgewotICAgIHByaW50ZigiVW5oYW5kbGVkIGV4Y2Vw
dGlvbjpcbiVzXG4iLCBlLndoYXQoKSk7Ci0gICAgcmV0dXJuIDE7Ci0gIH0KLX0KLQotI2lmIGRl
ZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3NyYy9saWJfanNvbi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9q
c29uL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzkyMDky
YWY3YTVlNGZjZWY3YjRjNDliM2M1NzJlYjQ1ZmRkZDBmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL0NNYWtlTGlzdHMudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLWlmKCBDTUFLRV9DT01QSUxFUl9JU19H
TlVDWFggKQotICAgICNHZXQgY29tcGlsZXIgdmVyc2lvbi4KLSAgICBleGVjdXRlX3Byb2Nlc3Mo
IENPTU1BTkQgJHtDTUFLRV9DWFhfQ09NUElMRVJ9IC1kdW1wdmVyc2lvbgotICAgICAgICAgICAg
ICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIEdOVUNYWF9WRVJTSU9OICkKLQotICAgICMtV2Vycm9y
PSogd2FzIGludHJvZHVjZWQgLWFmdGVyLSBHQ0MgNC4xLjIKLSAgICBpZiggR05VQ1hYX1ZFUlNJ
T04gVkVSU0lPTl9HUkVBVEVSIDQuMS4yICkKLSAgICAgICAgc2V0KENNQUtFX0NYWF9GTEFHUyAi
JHtDTUFLRV9DWFhfRkxBR1N9IC1XZXJyb3I9c3RyaWN0LWFsaWFzaW5nIikKLSAgICBlbmRpZigp
Ci1lbmRpZiggQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYICkKLQotaW5jbHVkZShDaGVja0luY2x1
ZGVGaWxlQ1hYKQotaW5jbHVkZShDaGVja1R5cGVTaXplKQotaW5jbHVkZShDaGVja1N0cnVjdEhh
c01lbWJlcikKLWluY2x1ZGUoQ2hlY2tDWFhTeW1ib2xFeGlzdHMpCi0KLWNoZWNrX2luY2x1ZGVf
ZmlsZV9jeHgoY2xvY2FsZSBIQVZFX0NMT0NBTEUpCi1jaGVja19jeHhfc3ltYm9sX2V4aXN0cyhs
b2NhbGVjb252IGNsb2NhbGUgSEFWRV9MT0NBTEVDT05WKQotCi1pZihDTUFLRV9WRVJTSU9OIFZF
UlNJT05fTEVTUyAzLjAuMCkKLSAgICAjIFRoZSAiTEFOR1VBR0UgQ1hYIiBwYXJhbWV0ZXIgaXMg
bm90IHN1cHBvcnRlZCBpbiBDTWFrZSB2ZXJzaW9ucyBiZWxvdyAzLAotICAgICMgc28gdGhlIEMg
Y29tcGlsZXIgYW5kIGhlYWRlciBoYXMgdG8gYmUgdXNlZC4KLSAgICBjaGVja19pbmNsdWRlX2Zp
bGUobG9jYWxlLmggSEFWRV9MT0NBTEVfSCkKLSAgICBzZXQoQ01BS0VfRVhUUkFfSU5DTFVERV9G
SUxFUyBsb2NhbGUuaCkKLSAgICBjaGVja190eXBlX3NpemUoInN0cnVjdCBsY29udiIgTENPTlZf
U0laRSkKLSAgICB1bnNldChDTUFLRV9FWFRSQV9JTkNMVURFX0ZJTEVTKQotICAgIGNoZWNrX3N0
cnVjdF9oYXNfbWVtYmVyKCJzdHJ1Y3QgbGNvbnYiIGRlY2ltYWxfcG9pbnQgbG9jYWxlLmggSEFW
RV9ERUNJTUFMX1BPSU5UKQotZWxzZSgpCi0gICAgc2V0KENNQUtFX0VYVFJBX0lOQ0xVREVfRklM
RVMgY2xvY2FsZSkKLSAgICBjaGVja190eXBlX3NpemUobGNvbnYgTENPTlZfU0laRSBMQU5HVUFH
RSBDWFgpCi0gICAgdW5zZXQoQ01BS0VfRVhUUkFfSU5DTFVERV9GSUxFUykKLSAgICBjaGVja19z
dHJ1Y3RfaGFzX21lbWJlcihsY29udiBkZWNpbWFsX3BvaW50IGNsb2NhbGUgSEFWRV9ERUNJTUFM
X1BPSU5UIExBTkdVQUdFIENYWCkKLWVuZGlmKCkKLQotaWYoTk9UIChIQVZFX0NMT0NBTEUgQU5E
IEhBVkVfTENPTlZfU0laRSBBTkQgSEFWRV9ERUNJTUFMX1BPSU5UIEFORCBIQVZFX0xPQ0FMRUNP
TlYpKQotICAgIG1lc3NhZ2UoV0FSTklORyAiTG9jYWxlIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHN1
cHBvcnRlZCIpCi0gICAgYWRkX2NvbXBpbGVfZGVmaW5pdGlvbnMoSlNPTkNQUF9OT19MT0NBTEVf
U1VQUE9SVCkKLWVuZGlmKCkKLQotc2V0KCBKU09OQ1BQX0lOQ0xVREVfRElSIC4uLy4uL2luY2x1
ZGUgKQotCi1zZXQoIFBVQkxJQ19IRUFERVJTCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9q
c29uL2NvbmZpZy5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL2ZvcndhcmRzLmgK
LSAgICAke0pTT05DUFBfSU5DTFVERV9ESVJ9L2pzb24vZmVhdHVyZXMuaAotICAgICR7SlNPTkNQ
UF9JTkNMVURFX0RJUn0vanNvbi92YWx1ZS5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9q
c29uL3JlYWRlci5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL3dyaXRlci5oCi0g
ICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL2Fzc2VydGlvbnMuaAotICAgICR7UFJPSkVD
VF9CSU5BUllfRElSfS9pbmNsdWRlL2pzb24vdmVyc2lvbi5oCi0gICAgKQotCi1zb3VyY2VfZ3Jv
dXAoICJQdWJsaWMgQVBJIiBGSUxFUyAke1BVQkxJQ19IRUFERVJTfSApCi0KLXNldChqc29uY3Bw
X3NvdXJjZXMKLSAgICAgICAgICAgICAgICBqc29uX3Rvb2wuaAotICAgICAgICAgICAgICAgIGpz
b25fcmVhZGVyLmNwcAotICAgICAgICAgICAgICAgIGpzb25fdmFsdWVpdGVyYXRvci5pbmwKLSAg
ICAgICAgICAgICAgICBqc29uX3ZhbHVlLmNwcAotICAgICAgICAgICAgICAgIGpzb25fd3JpdGVy
LmNwcAotICAgICAgICAgICAgICAgIHZlcnNpb24uaC5pbikKLQotIyBJbnN0YWxsIGluc3RydWN0
aW9ucyBmb3IgdGhpcyB0YXJnZXQKLWlmKEpTT05DUFBfV0lUSF9DTUFLRV9QQUNLQUdFKQotICAg
IHNldChJTlNUQUxMX0VYUE9SVCBFWFBPUlQganNvbmNwcCkKLWVsc2UoSlNPTkNQUF9XSVRIX0NN
QUtFX1BBQ0tBR0UpCi0gICAgc2V0KElOU1RBTExfRVhQT1JUKQotZW5kaWYoKQotCi1pZihCVUlM
RF9TSEFSRURfTElCUykKLSAgICBhZGRfY29tcGlsZV9kZWZpbml0aW9ucyggSlNPTl9ETExfQlVJ
TEQgKQotZW5kaWYoKQotCi0KLWFkZF9saWJyYXJ5KGpzb25jcHBfbGliICR7UFVCTElDX0hFQURF
UlN9ICR7anNvbmNwcF9zb3VyY2VzfSkKLXNldF90YXJnZXRfcHJvcGVydGllcygganNvbmNwcF9s
aWIgUFJPUEVSVElFUyBWRVJTSU9OICR7SlNPTkNQUF9WRVJTSU9OfSBTT1ZFUlNJT04gJHtKU09O
Q1BQX1NPVkVSU0lPTn0pCi1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMoIGpzb25jcHBfbGliIFBST1BF
UlRJRVMgT1VUUFVUX05BTUUganNvbmNwcAotICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdf
T1VUUFVUX05BTUUganNvbmNwcCR7REVCVUdfTElCTkFNRV9TVUZGSVh9ICkKLXNldF90YXJnZXRf
cHJvcGVydGllcygganNvbmNwcF9saWIgUFJPUEVSVElFUyBQT1NJVElPTl9JTkRFUEVOREVOVF9D
T0RFIE9OKQotCi0jIFNldCBsaWJyYXJ5J3MgcnVudGltZSBzZWFyY2ggcGF0aCBvbiBPU1gKLWlm
KEFQUExFKQotICAgIHNldF90YXJnZXRfcHJvcGVydGllcygganNvbmNwcF9saWIgUFJPUEVSVElF
UyBJTlNUQUxMX1JQQVRIICJAbG9hZGVyX3BhdGgvLiIgKQotZW5kaWYoKQotCi0jIFNwZWNpZnkg
Y29tcGlsZXIgZmVhdHVyZXMgcmVxdWlyZWQgd2hlbiBjb21waWxpbmcgYSBnaXZlbiB0YXJnZXQu
Ci0jIFNlZSBodHRwczovL2NtYWtlLm9yZy9jbWFrZS9oZWxwL3YzLjEvcHJvcF9nYmwvQ01BS0Vf
Q1hYX0tOT1dOX0ZFQVRVUkVTLmh0bWwjcHJvcF9nYmw6Q01BS0VfQ1hYX0tOT1dOX0ZFQVRVUkVT
Ci0jIGZvciBjb21wbGV0ZSBsaXN0IG9mIGZlYXR1cmVzIGF2YWlsYWJsZQotdGFyZ2V0X2NvbXBp
bGVfZmVhdHVyZXMoanNvbmNwcF9saWIgUFVCTElDCi0gICAgICAgIGN4eF9zdGRfMTEgIyBDb21w
aWxlciBtb2RlIGlzIGF3YXJlIG9mIEMrKyAxMS4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfYWxp
Z25hcyAjIEFsaWdubWVudCBjb250cm9sIGFsaWduYXMsIGFzIGRlZmluZWQgaW4gTjIzNDEuCi0g
ICAgICAgICNNU1ZDIDE5MDAgY3h4X2FsaWdub2YgIyBBbGlnbm1lbnQgY29udHJvbCBhbGlnbm9m
LCBhcyBkZWZpbmVkIGluIE4yMzQxLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9hdHRyaWJ1dGVz
ICMgR2VuZXJpYyBhdHRyaWJ1dGVzLCBhcyBkZWZpbmVkIGluIE4yNzYxLgotICAgICAgICBjeHhf
YXV0b190eXBlICMgQXV0b21hdGljIHR5cGUgZGVkdWN0aW9uLCBhcyBkZWZpbmVkIGluIE4xOTg0
LgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9jb25zdGV4cHIgIyBDb25zdGFudCBleHByZXNzaW9u
cywgYXMgZGVmaW5lZCBpbiBOMjIzNS4KLSAgICAgICAgY3h4X2RlY2x0eXBlICMgRGVjbHR5cGUs
IGFzIGRlZmluZWQgaW4gTjIzNDMuCi0gICAgICAgIGN4eF9kZWZhdWx0X2Z1bmN0aW9uX3RlbXBs
YXRlX2FyZ3MgIyBEZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gdGVtcGxh
dGVzLCBhcyBkZWZpbmVkIGluIERSMjI2Ci0gICAgICAgIGN4eF9kZWZhdWx0ZWRfZnVuY3Rpb25z
ICMgRGVmYXVsdGVkIGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiBOMjM0Ni4KLSAgICAgICAgI01T
VkMgMTkwMCBjeHhfZGVmYXVsdGVkX21vdmVfaW5pdGlhbGl6ZXJzICMgRGVmYXVsdGVkIG1vdmUg
aW5pdGlhbGl6ZXJzLCBhcyBkZWZpbmVkIGluIE4zMDUzLgotICAgICAgICBjeHhfZGVsZWdhdGlu
Z19jb25zdHJ1Y3RvcnMgIyBEZWxlZ2F0aW5nIGNvbnN0cnVjdG9ycywgYXMgZGVmaW5lZCBpbiBO
MTk4Ni4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfZGVsZXRlZF9mdW5jdGlvbnMgIyBEZWxldGVk
IGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiBOMjM0Ni4KLSAgICAgICAgY3h4X2VudW1fZm9yd2Fy
ZF9kZWNsYXJhdGlvbnMgIyBFbnVtIGZvcndhcmQgZGVjbGFyYXRpb25zLCBhcyBkZWZpbmVkIGlu
IE4yNzY0LgotICAgICAgICBjeHhfZXhwbGljaXRfY29udmVyc2lvbnMgIyBFeHBsaWNpdCBjb252
ZXJzaW9uIG9wZXJhdG9ycywgYXMgZGVmaW5lZCBpbiBOMjQzNy4KLSAgICAgICAgY3h4X2V4dGVu
ZGVkX2ZyaWVuZF9kZWNsYXJhdGlvbnMgIyBFeHRlbmRlZCBmcmllbmQgZGVjbGFyYXRpb25zLCBh
cyBkZWZpbmVkIGluIE4xNzkxLgotICAgICAgICBjeHhfZXh0ZXJuX3RlbXBsYXRlcyAjIEV4dGVy
biB0ZW1wbGF0ZXMsIGFzIGRlZmluZWQgaW4gTjE5ODcuCi0gICAgICAgIGN4eF9maW5hbCAjIE92
ZXJyaWRlIGNvbnRyb2wgZmluYWwga2V5d29yZCwgYXMgZGVmaW5lZCBpbiBOMjkyOCwgTjMyMDYg
YW5kIE4zMjcyLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9mdW5jX2lkZW50aWZpZXIgIyBQcmVk
ZWZpbmVkIF9fZnVuY19fIGlkZW50aWZpZXIsIGFzIGRlZmluZWQgaW4gTjIzNDAuCi0gICAgICAg
ICNNU1ZDIDE5MDAgY3h4X2dlbmVyYWxpemVkX2luaXRpYWxpemVycyAjIEluaXRpYWxpemVyIGxp
c3RzLCBhcyBkZWZpbmVkIGluIE4yNjcyLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9pbmhlcml0
aW5nX2NvbnN0cnVjdG9ycyAjIEluaGVyaXRpbmcgY29uc3RydWN0b3JzLCBhcyBkZWZpbmVkIGlu
IE4yNTQwLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9pbmxpbmVfbmFtZXNwYWNlcyAjIElubGlu
ZSBuYW1lc3BhY2VzLCBhcyBkZWZpbmVkIGluIE4yNTM1LgotICAgICAgICBjeHhfbGFtYmRhcyAj
IExhbWJkYSBmdW5jdGlvbnMsIGFzIGRlZmluZWQgaW4gTjI5MjcuCi0gICAgICAgICNNU1ZDIDE5
MDAgY3h4X2xvY2FsX3R5cGVfdGVtcGxhdGVfYXJncyAjIExvY2FsIGFuZCB1bm5hbWVkIHR5cGVz
IGFzIHRlbXBsYXRlIGFyZ3VtZW50cywgYXMgZGVmaW5lZCBpbiBOMjY1Ny4KLSAgICAgICAgY3h4
X2xvbmdfbG9uZ190eXBlICMgbG9uZyBsb25nIHR5cGUsIGFzIGRlZmluZWQgaW4gTjE4MTEuCi0g
ICAgICAgICNNU1ZDIDE5MDAgY3h4X25vZXhjZXB0ICMgRXhjZXB0aW9uIHNwZWNpZmljYXRpb25z
LCBhcyBkZWZpbmVkIGluIE4zMDUwLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9ub25zdGF0aWNf
bWVtYmVyX2luaXQgIyBOb24tc3RhdGljIGRhdGEgbWVtYmVyIGluaXRpYWxpemF0aW9uLCBhcyBk
ZWZpbmVkIGluIE4yNzU2LgotICAgICAgICBjeHhfbnVsbHB0ciAjIE51bGwgcG9pbnRlciwgYXMg
ZGVmaW5lZCBpbiBOMjQzMS4KLSAgICAgICAgY3h4X292ZXJyaWRlICMgT3ZlcnJpZGUgY29udHJv
bCBvdmVycmlkZSBrZXl3b3JkLCBhcyBkZWZpbmVkIGluIE4yOTI4LCBOMzIwNiBhbmQgTjMyNzIu
Ci0gICAgICAgIGN4eF9yYW5nZV9mb3IgIyBSYW5nZS1iYXNlZCBmb3IsIGFzIGRlZmluZWQgaW4g
TjI5MzAuCi0gICAgICAgIGN4eF9yYXdfc3RyaW5nX2xpdGVyYWxzICMgUmF3IHN0cmluZyBsaXRl
cmFscywgYXMgZGVmaW5lZCBpbiBOMjQ0Mi4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfcmVmZXJl
bmNlX3F1YWxpZmllZF9mdW5jdGlvbnMgIyBSZWZlcmVuY2UgcXVhbGlmaWVkIGZ1bmN0aW9ucywg
YXMgZGVmaW5lZCBpbiBOMjQzOS4KLSAgICAgICAgY3h4X3JpZ2h0X2FuZ2xlX2JyYWNrZXRzICMg
UmlnaHQgYW5nbGUgYnJhY2tldCBwYXJzaW5nLCBhcyBkZWZpbmVkIGluIE4xNzU3LgotICAgICAg
ICBjeHhfcnZhbHVlX3JlZmVyZW5jZXMgIyBSLXZhbHVlIHJlZmVyZW5jZXMsIGFzIGRlZmluZWQg
aW4gTjIxMTguCi0gICAgICAgICNNU1ZDIDE5MDAgY3h4X3NpemVvZl9tZW1iZXIgIyBTaXplIG9m
IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLCBhcyBkZWZpbmVkIGluIE4yMjUzLgotICAgICAgICBj
eHhfc3RhdGljX2Fzc2VydCAjIFN0YXRpYyBhc3NlcnQsIGFzIGRlZmluZWQgaW4gTjE3MjAuCi0g
ICAgICAgIGN4eF9zdHJvbmdfZW51bXMgIyBTdHJvbmdseSB0eXBlZCBlbnVtcywgYXMgZGVmaW5l
ZCBpbiBOMjM0Ny4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfdGhyZWFkX2xvY2FsICMgVGhyZWFk
LWxvY2FsIHZhcmlhYmxlcywgYXMgZGVmaW5lZCBpbiBOMjY1OS4KLSAgICAgICAgY3h4X3RyYWls
aW5nX3JldHVybl90eXBlcyAjIEF1dG9tYXRpYyBmdW5jdGlvbiByZXR1cm4gdHlwZSwgYXMgZGVm
aW5lZCBpbiBOMjU0MS4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfdW5pY29kZV9saXRlcmFscyAj
IFVuaWNvZGUgc3RyaW5nIGxpdGVyYWxzLCBhcyBkZWZpbmVkIGluIE4yNDQyLgotICAgICAgICBj
eHhfdW5pZm9ybV9pbml0aWFsaXphdGlvbiAjIFVuaWZvcm0gaW5pdGlhbGl6YXRpb24sIGFzIGRl
ZmluZWQgaW4gTjI2NDAuCi0gICAgICAgICNNU1ZDIDE5MDAgY3h4X3VucmVzdHJpY3RlZF91bmlv
bnMgIyBVbnJlc3RyaWN0ZWQgdW5pb25zLCBhcyBkZWZpbmVkIGluIE4yNTQ0LgotICAgICAgICAj
TVNWQyAxOTAwIGN4eF91c2VyX2xpdGVyYWxzICMgVXNlci1kZWZpbmVkIGxpdGVyYWxzLCBhcyBk
ZWZpbmVkIGluIE4yNzY1LgotICAgICAgICBjeHhfdmFyaWFkaWNfbWFjcm9zICMgVmFyaWFkaWMg
bWFjcm9zLCBhcyBkZWZpbmVkIGluIE4xNjUzLgotICAgICAgICBjeHhfdmFyaWFkaWNfdGVtcGxh
dGVzICMgVmFyaWFkaWMgdGVtcGxhdGVzLCBhcyBkZWZpbmVkIGluIE4yMjQyLgotKQotCi1pbnN0
YWxsKCBUQVJHRVRTIGpzb25jcHBfbGliICR7SU5TVEFMTF9FWFBPUlR9Ci0gICAgICAgICAgUlVO
VElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQotICAgICAgICAgIExJQlJB
UlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KLSAgICAgICAgICBBUkNISVZF
IERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9KQotCi1pZihOT1QgQ01BS0VfVkVS
U0lPTiBWRVJTSU9OX0xFU1MgMi44LjExKQotICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVz
KCBqc29uY3BwX2xpYiBQVUJMSUMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDxJ
TlNUQUxMX0lOVEVSRkFDRToke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9M
SVNUX0RJUn0vJHtKU09OQ1BQX0lOQ0xVREVfRElSfT4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUv
anNvbj4pCi1lbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3JlYWRl
ci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3JlYWRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwNWFiMjY4OTI3YmY1ZTg4ZjMwZTA3NmZjMzk2ZGYzNTExYmYzNzQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMv
bGliX2pzb24vanNvbl9yZWFkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjAxNyArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwNy0yMDExIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25D
cHAgQXV0aG9ycwotLy8gQ29weXJpZ2h0IChDKSAyMDE2IEluZm9UZUNTIEpTQy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMg
ZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9u
LgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25j
cHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdB
TUFUSU9OKQotI2luY2x1ZGUgImpzb25fdG9vbC5oIgotI2luY2x1ZGUgPGpzb24vYXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPGpzb24vcmVhZGVyLmg+Ci0jaW5jbHVkZSA8anNvbi92YWx1ZS5oPgot
I2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgPGNh
c3NlcnQ+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUg
PGxpbWl0cz4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHNz
dHJlYW0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2luY2x1ZGUgPGNzdGRpbz4KLSNpZiBfX2Nw
bHVzcGx1cyA+PSAyMDExMDNMCi0KLSNpZiAhZGVmaW5lZChzc2NhbmYpCi0jZGVmaW5lIHNzY2Fu
ZiBzdGQ6OnNzY2FuZgotI2VuZGlmCi0KLSNlbmRpZiAvL19fY3BsdXNwbHVzCi0KLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKQotI2lmICFkZWZpbmVkKF9DUlRfU0VDVVJFX0NQUF9PVkVSTE9BRF9TVEFO
REFSRF9OQU1FUykKLSNkZWZpbmUgX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05B
TUVTIDEKLSNlbmRpZiAvL19DUlRfU0VDVVJFX0NQUF9PVkVSTE9BRF9TVEFOREFSRF9OQU1FUwot
I2VuZGlmIC8vX01TQ19WRVIKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0vLyBEaXNhYmxlIHdh
cm5pbmcgYWJvdXQgc3RyZHVwIGJlaW5nIGRlcHJlY2F0ZWQuCi0jcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZSA6IDQ5OTYpCi0jZW5kaWYKLQotLy8gRGVmaW5lIEpTT05DUFBfREVQUkVDQVRFRF9TVEFD
S19MSU1JVCBhcyBhbiBhcHByb3ByaWF0ZSBpbnRlZ2VyIGF0IGNvbXBpbGUKLS8vIHRpbWUgdG8g
Y2hhbmdlIHRoZSBzdGFjayBsaW1pdAotI2lmICFkZWZpbmVkKEpTT05DUFBfREVQUkVDQVRFRF9T
VEFDS19MSU1JVCkKLSNkZWZpbmUgSlNPTkNQUF9ERVBSRUNBVEVEX1NUQUNLX0xJTUlUIDEwMDAK
LSNlbmRpZgotCi1zdGF0aWMgc2l6ZV90IGNvbnN0IHN0YWNrTGltaXRfZyA9Ci0gICAgSlNPTkNQ
UF9ERVBSRUNBVEVEX1NUQUNLX0xJTUlUOyAvLyBzZWUgcmVhZFZhbHVlKCkKLQotbmFtZXNwYWNl
IEpzb24gewotCi0jaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCB8fCAoZGVmaW5lZChfQ1BQTElC
X1ZFUikgJiYgX0NQUExJQl9WRVIgPj0gNTIwKQotdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8Q2hh
clJlYWRlcj4gQ2hhclJlYWRlclB0cjsKLSNlbHNlCi10eXBlZGVmIHN0ZDo6YXV0b19wdHI8Q2hh
clJlYWRlcj4gQ2hhclJlYWRlclB0cjsKLSNlbmRpZgotCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBj
bGFzcyBGZWF0dXJlcwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotRmVh
dHVyZXM6OkZlYXR1cmVzKCkgPSBkZWZhdWx0OwotCi1GZWF0dXJlcyBGZWF0dXJlczo6YWxsKCkg
eyByZXR1cm4ge307IH0KLQotRmVhdHVyZXMgRmVhdHVyZXM6OnN0cmljdE1vZGUoKSB7Ci0gIEZl
YXR1cmVzIGZlYXR1cmVzOwotICBmZWF0dXJlcy5hbGxvd0NvbW1lbnRzXyA9IGZhbHNlOwotICBm
ZWF0dXJlcy5zdHJpY3RSb290XyA9IHRydWU7Ci0gIGZlYXR1cmVzLmFsbG93RHJvcHBlZE51bGxQ
bGFjZWhvbGRlcnNfID0gZmFsc2U7Ci0gIGZlYXR1cmVzLmFsbG93TnVtZXJpY0tleXNfID0gZmFs
c2U7Ci0gIHJldHVybiBmZWF0dXJlczsKLX0KLQotLy8gSW1wbGVtZW50YXRpb24gb2YgY2xhc3Mg
UmVhZGVyCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1ib29sIFJlYWRl
cjo6Y29udGFpbnNOZXdMaW5lKFJlYWRlcjo6TG9jYXRpb24gYmVnaW4sIFJlYWRlcjo6TG9jYXRp
b24gZW5kKSB7Ci0gIGZvciAoOyBiZWdpbiA8IGVuZDsgKytiZWdpbikKLSAgICBpZiAoKmJlZ2lu
ID09ICdcbicgfHwgKmJlZ2luID09ICdccicpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgcmV0dXJu
IGZhbHNlOwotfQotCi0vLyBDbGFzcyBSZWFkZXIKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1SZWFkZXI6OlJl
YWRlcigpCi0gICAgOiBlcnJvcnNfKCksIGRvY3VtZW50XygpLCBjb21tZW50c0JlZm9yZV8oKSwg
ZmVhdHVyZXNfKEZlYXR1cmVzOjphbGwoKSkge30KLQotUmVhZGVyOjpSZWFkZXIoY29uc3QgRmVh
dHVyZXMmIGZlYXR1cmVzKQotICAgIDogZXJyb3JzXygpLCBkb2N1bWVudF8oKSwgYmVnaW5fKCks
IGVuZF8oKSwgY3VycmVudF8oKSwgbGFzdFZhbHVlRW5kXygpLAotICAgICAgbGFzdFZhbHVlXygp
LCBjb21tZW50c0JlZm9yZV8oKSwgZmVhdHVyZXNfKGZlYXR1cmVzKSwgY29sbGVjdENvbW1lbnRz
XygpIHsKLX0KLQotYm9vbCBSZWFkZXI6OnBhcnNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBkb2N1bWVu
dCwKLSAgICAgICAgICAgICAgICAgICBWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgICBi
b29sIGNvbGxlY3RDb21tZW50cykgewotICBkb2N1bWVudF8uYXNzaWduKGRvY3VtZW50LmJlZ2lu
KCksIGRvY3VtZW50LmVuZCgpKTsKLSAgY29uc3QgY2hhciogYmVnaW4gPSBkb2N1bWVudF8uY19z
dHIoKTsKLSAgY29uc3QgY2hhciogZW5kID0gYmVnaW4gKyBkb2N1bWVudF8ubGVuZ3RoKCk7Ci0g
IHJldHVybiBwYXJzZShiZWdpbiwgZW5kLCByb290LCBjb2xsZWN0Q29tbWVudHMpOwotfQotCi1i
b29sIFJlYWRlcjo6cGFyc2Uoc3RkOjppc3RyZWFtJiBpcywgVmFsdWUmIHJvb3QsIGJvb2wgY29s
bGVjdENvbW1lbnRzKSB7Ci0gIC8vIHN0ZDo6aXN0cmVhbV9pdGVyYXRvcjxjaGFyPiBiZWdpbihp
cyk7Ci0gIC8vIHN0ZDo6aXN0cmVhbV9pdGVyYXRvcjxjaGFyPiBlbmQ7Ci0gIC8vIFRob3NlIHdv
dWxkIGFsbG93IHN0cmVhbWVkIGlucHV0IGZyb20gYSBmaWxlLCBpZiBwYXJzZSgpIHdlcmUgYQot
ICAvLyB0ZW1wbGF0ZSBmdW5jdGlvbi4KLQotICAvLyBTaW5jZSBTdHJpbmcgaXMgcmVmZXJlbmNl
LWNvdW50ZWQsIHRoaXMgYXQgbGVhc3QgZG9lcyBub3QKLSAgLy8gY3JlYXRlIGFuIGV4dHJhIGNv
cHkuCi0gIFN0cmluZyBkb2M7Ci0gIHN0ZDo6Z2V0bGluZShpcywgZG9jLCAoY2hhcilFT0YpOwot
ICByZXR1cm4gcGFyc2UoZG9jLmRhdGEoKSwgZG9jLmRhdGEoKSArIGRvYy5zaXplKCksIHJvb3Qs
IGNvbGxlY3RDb21tZW50cyk7Ci19Ci0KLWJvb2wgUmVhZGVyOjpwYXJzZShjb25zdCBjaGFyKiBi
ZWdpbkRvYywKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlbmREb2MsCi0gICAgICAg
ICAgICAgICAgICAgVmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgICAgICAgYm9vbCBjb2xsZWN0
Q29tbWVudHMpIHsKLSAgaWYgKCFmZWF0dXJlc18uYWxsb3dDb21tZW50c18pIHsKLSAgICBjb2xs
ZWN0Q29tbWVudHMgPSBmYWxzZTsKLSAgfQotCi0gIGJlZ2luXyA9IGJlZ2luRG9jOwotICBlbmRf
ID0gZW5kRG9jOwotICBjb2xsZWN0Q29tbWVudHNfID0gY29sbGVjdENvbW1lbnRzOwotICBjdXJy
ZW50XyA9IGJlZ2luXzsKLSAgbGFzdFZhbHVlRW5kXyA9IG51bGxwdHI7Ci0gIGxhc3RWYWx1ZV8g
PSBudWxscHRyOwotICBjb21tZW50c0JlZm9yZV8uY2xlYXIoKTsKLSAgZXJyb3JzXy5jbGVhcigp
OwotICB3aGlsZSAoIW5vZGVzXy5lbXB0eSgpKQotICAgIG5vZGVzXy5wb3AoKTsKLSAgbm9kZXNf
LnB1c2goJnJvb3QpOwotCi0gIGJvb2wgc3VjY2Vzc2Z1bCA9IHJlYWRWYWx1ZSgpOwotICBUb2tl
biB0b2tlbjsKLSAgc2tpcENvbW1lbnRUb2tlbnModG9rZW4pOwotICBpZiAoY29sbGVjdENvbW1l
bnRzXyAmJiAhY29tbWVudHNCZWZvcmVfLmVtcHR5KCkpCi0gICAgcm9vdC5zZXRDb21tZW50KGNv
bW1lbnRzQmVmb3JlXywgY29tbWVudEFmdGVyKTsKLSAgaWYgKGZlYXR1cmVzXy5zdHJpY3RSb290
XykgewotICAgIGlmICghcm9vdC5pc0FycmF5KCkgJiYgIXJvb3QuaXNPYmplY3QoKSkgewotICAg
ICAgLy8gU2V0IGVycm9yIGxvY2F0aW9uIHRvIHN0YXJ0IG9mIGRvYywgaWRlYWxseSBzaG91bGQg
YmUgZmlyc3QgdG9rZW4gZm91bmQKLSAgICAgIC8vIGluIGRvYwotICAgICAgdG9rZW4udHlwZV8g
PSB0b2tlbkVycm9yOwotICAgICAgdG9rZW4uc3RhcnRfID0gYmVnaW5Eb2M7Ci0gICAgICB0b2tl
bi5lbmRfID0gZW5kRG9jOwotICAgICAgYWRkRXJyb3IoCi0gICAgICAgICAgIkEgdmFsaWQgSlNP
TiBkb2N1bWVudCBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhbiBvYmplY3QgdmFsdWUuIiwK
LSAgICAgICAgICB0b2tlbik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0gIHJl
dHVybiBzdWNjZXNzZnVsOwotfQotCi1ib29sIFJlYWRlcjo6cmVhZFZhbHVlKCkgewotICAvLyBy
ZWFkVmFsdWUoKSBtYXkgY2FsbCBpdHNlbGYgb25seSBpZiBpdCBjYWxscyByZWFkT2JqZWN0KCkg
b3IgUmVhZEFycmF5KCkuCi0gIC8vIFRoZXNlIG1ldGhvZHMgZXhlY3V0ZSBub2Rlc18ucHVzaCgp
IGp1c3QgYmVmb3JlIGFuZCBub2Rlc18ucG9wKSgpIGp1c3QKLSAgLy8gYWZ0ZXIgY2FsbGluZyBy
ZWFkVmFsdWUoKS4gcGFyc2UoKSBleGVjdXRlcyBvbmUgbm9kZXNfLnB1c2goKSwgc28gPiBpbnN0
ZWFkCi0gIC8vIG9mID49LgotICBpZiAobm9kZXNfLnNpemUoKSA+IHN0YWNrTGltaXRfZykKLSAg
ICB0aHJvd1J1bnRpbWVFcnJvcigiRXhjZWVkZWQgc3RhY2tMaW1pdCBpbiByZWFkVmFsdWUoKS4i
KTsKLQotICBUb2tlbiB0b2tlbjsKLSAgc2tpcENvbW1lbnRUb2tlbnModG9rZW4pOwotICBib29s
IHN1Y2Nlc3NmdWwgPSB0cnVlOwotCi0gIGlmIChjb2xsZWN0Q29tbWVudHNfICYmICFjb21tZW50
c0JlZm9yZV8uZW1wdHkoKSkgewotICAgIGN1cnJlbnRWYWx1ZSgpLnNldENvbW1lbnQoY29tbWVu
dHNCZWZvcmVfLCBjb21tZW50QmVmb3JlKTsKLSAgICBjb21tZW50c0JlZm9yZV8uY2xlYXIoKTsK
LSAgfQotCi0gIHN3aXRjaCAodG9rZW4udHlwZV8pIHsKLSAgY2FzZSB0b2tlbk9iamVjdEJlZ2lu
OgotICAgIHN1Y2Nlc3NmdWwgPSByZWFkT2JqZWN0KHRva2VuKTsKLSAgICBjdXJyZW50VmFsdWUo
KS5zZXRPZmZzZXRMaW1pdChjdXJyZW50XyAtIGJlZ2luXyk7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
dG9rZW5BcnJheUJlZ2luOgotICAgIHN1Y2Nlc3NmdWwgPSByZWFkQXJyYXkodG9rZW4pOwotICAg
IGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KGN1cnJlbnRfIC0gYmVnaW5fKTsKLSAgICBi
cmVhazsKLSAgY2FzZSB0b2tlbk51bWJlcjoKLSAgICBzdWNjZXNzZnVsID0gZGVjb2RlTnVtYmVy
KHRva2VuKTsKLSAgICBicmVhazsKLSAgY2FzZSB0b2tlblN0cmluZzoKLSAgICBzdWNjZXNzZnVs
ID0gZGVjb2RlU3RyaW5nKHRva2VuKTsKLSAgICBicmVhazsKLSAgY2FzZSB0b2tlblRydWU6IHsK
LSAgICBWYWx1ZSB2KHRydWUpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwot
ICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7
Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7
Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgdG9rZW5GYWxzZTogewotICAgIFZhbHVlIHYoZmFsc2UpOwot
ICAgIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNl
dE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCku
c2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIH0gYnJlYWs7Ci0gIGNhc2Ug
dG9rZW5OdWxsOiB7Ci0gICAgVmFsdWUgdjsKLSAgICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9h
ZCh2KTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBi
ZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBi
ZWdpbl8pOwotICB9IGJyZWFrOwotICBjYXNlIHRva2VuQXJyYXlTZXBhcmF0b3I6Ci0gIGNhc2Ug
dG9rZW5PYmplY3RFbmQ6Ci0gIGNhc2UgdG9rZW5BcnJheUVuZDoKLSAgICBpZiAoZmVhdHVyZXNf
LmFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRlcnNfKSB7Ci0gICAgICAvLyAiVW4tcmVhZCIgdGhl
IGN1cnJlbnQgdG9rZW4gYW5kIG1hcmsgdGhlIGN1cnJlbnQgdmFsdWUgYXMgYSBudWxsCi0gICAg
ICAvLyB0b2tlbi4KLSAgICAgIGN1cnJlbnRfLS07Ci0gICAgICBWYWx1ZSB2OwotICAgICAgY3Vy
cmVudFZhbHVlKCkuc3dhcFBheWxvYWQodik7Ci0gICAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZz
ZXRTdGFydChjdXJyZW50XyAtIGJlZ2luXyAtIDEpOwotICAgICAgY3VycmVudFZhbHVlKCkuc2V0
T2Zmc2V0TGltaXQoY3VycmVudF8gLSBiZWdpbl8pOwotICAgICAgYnJlYWs7Ci0gICAgfSAvLyBF
bHNlLCBmYWxsIHRocm91Z2guLi4KLSAgZGVmYXVsdDoKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRP
ZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNl
dE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICAgIHJldHVybiBhZGRFcnJvcigi
U3ludGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5IGV4cGVjdGVkLiIsIHRva2VuKTsK
LSAgfQotCi0gIGlmIChjb2xsZWN0Q29tbWVudHNfKSB7Ci0gICAgbGFzdFZhbHVlRW5kXyA9IGN1
cnJlbnRfOwotICAgIGxhc3RWYWx1ZV8gPSAmY3VycmVudFZhbHVlKCk7Ci0gIH0KLQotICByZXR1
cm4gc3VjY2Vzc2Z1bDsKLX0KLQotdm9pZCBSZWFkZXI6OnNraXBDb21tZW50VG9rZW5zKFRva2Vu
JiB0b2tlbikgewotICBpZiAoZmVhdHVyZXNfLmFsbG93Q29tbWVudHNfKSB7Ci0gICAgZG8gewot
ICAgICAgcmVhZFRva2VuKHRva2VuKTsKLSAgICB9IHdoaWxlICh0b2tlbi50eXBlXyA9PSB0b2tl
bkNvbW1lbnQpOwotICB9IGVsc2UgewotICAgIHJlYWRUb2tlbih0b2tlbik7Ci0gIH0KLX0KLQot
Ym9vbCBSZWFkZXI6OnJlYWRUb2tlbihUb2tlbiYgdG9rZW4pIHsKLSAgc2tpcFNwYWNlcygpOwot
ICB0b2tlbi5zdGFydF8gPSBjdXJyZW50XzsKLSAgQ2hhciBjID0gZ2V0TmV4dENoYXIoKTsKLSAg
Ym9vbCBvayA9IHRydWU7Ci0gIHN3aXRjaCAoYykgewotICBjYXNlICd7JzoKLSAgICB0b2tlbi50
eXBlXyA9IHRva2VuT2JqZWN0QmVnaW47Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ30nOgotICAgIHRv
a2VuLnR5cGVfID0gdG9rZW5PYmplY3RFbmQ7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ1snOgotICAg
IHRva2VuLnR5cGVfID0gdG9rZW5BcnJheUJlZ2luOwotICAgIGJyZWFrOwotICBjYXNlICddJzoK
LSAgICB0b2tlbi50eXBlXyA9IHRva2VuQXJyYXlFbmQ7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJyIn
OgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5TdHJpbmc7Ci0gICAgb2sgPSByZWFkU3RyaW5nKCk7
Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJy8nOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5Db21tZW50
OwotICAgIG9rID0gcmVhZENvbW1lbnQoKTsKLSAgICBicmVhazsKLSAgY2FzZSAnMCc6Ci0gIGNh
c2UgJzEnOgotICBjYXNlICcyJzoKLSAgY2FzZSAnMyc6Ci0gIGNhc2UgJzQnOgotICBjYXNlICc1
JzoKLSAgY2FzZSAnNic6Ci0gIGNhc2UgJzcnOgotICBjYXNlICc4JzoKLSAgY2FzZSAnOSc6Ci0g
IGNhc2UgJy0nOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5OdW1iZXI7Ci0gICAgcmVhZE51bWJl
cigpOwotICAgIGJyZWFrOwotICBjYXNlICd0JzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuVHJ1
ZTsKLSAgICBvayA9IG1hdGNoKCJydWUiLCAzKTsKLSAgICBicmVhazsKLSAgY2FzZSAnZic6Ci0g
ICAgdG9rZW4udHlwZV8gPSB0b2tlbkZhbHNlOwotICAgIG9rID0gbWF0Y2goImFsc2UiLCA0KTsK
LSAgICBicmVhazsKLSAgY2FzZSAnbic6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbk51bGw7Ci0g
ICAgb2sgPSBtYXRjaCgidWxsIiwgMyk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJywnOgotICAgIHRv
a2VuLnR5cGVfID0gdG9rZW5BcnJheVNlcGFyYXRvcjsKLSAgICBicmVhazsKLSAgY2FzZSAnOic6
Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbk1lbWJlclNlcGFyYXRvcjsKLSAgICBicmVhazsKLSAg
Y2FzZSAwOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5FbmRPZlN0cmVhbTsKLSAgICBicmVhazsK
LSAgZGVmYXVsdDoKLSAgICBvayA9IGZhbHNlOwotICAgIGJyZWFrOwotICB9Ci0gIGlmICghb2sp
Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbkVycm9yOwotICB0b2tlbi5lbmRfID0gY3VycmVudF87
Ci0gIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlYWRlcjo6c2tpcFNwYWNlcygpIHsKLSAgd2hp
bGUgKGN1cnJlbnRfICE9IGVuZF8pIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudF87Ci0gICAgaWYg
KGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdccicgfHwgYyA9PSAnXG4nKQotICAgICAg
KytjdXJyZW50XzsKLSAgICBlbHNlCi0gICAgICBicmVhazsKLSAgfQotfQotCi1ib29sIFJlYWRl
cjo6bWF0Y2goTG9jYXRpb24gcGF0dGVybiwgaW50IHBhdHRlcm5MZW5ndGgpIHsKLSAgaWYgKGVu
ZF8gLSBjdXJyZW50XyA8IHBhdHRlcm5MZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpbnQg
aW5kZXggPSBwYXR0ZXJuTGVuZ3RoOwotICB3aGlsZSAoaW5kZXgtLSkKLSAgICBpZiAoY3VycmVu
dF9baW5kZXhdICE9IHBhdHRlcm5baW5kZXhdKQotICAgICAgcmV0dXJuIGZhbHNlOwotICBjdXJy
ZW50XyArPSBwYXR0ZXJuTGVuZ3RoOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6
OnJlYWRDb21tZW50KCkgewotICBMb2NhdGlvbiBjb21tZW50QmVnaW4gPSBjdXJyZW50XyAtIDE7
Ci0gIENoYXIgYyA9IGdldE5leHRDaGFyKCk7Ci0gIGJvb2wgc3VjY2Vzc2Z1bCA9IGZhbHNlOwot
ICBpZiAoYyA9PSAnKicpCi0gICAgc3VjY2Vzc2Z1bCA9IHJlYWRDU3R5bGVDb21tZW50KCk7Ci0g
IGVsc2UgaWYgKGMgPT0gJy8nKQotICAgIHN1Y2Nlc3NmdWwgPSByZWFkQ3BwU3R5bGVDb21tZW50
KCk7Ci0gIGlmICghc3VjY2Vzc2Z1bCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKGNvbGxl
Y3RDb21tZW50c18pIHsKLSAgICBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCA9IGNvbW1lbnRC
ZWZvcmU7Ci0gICAgaWYgKGxhc3RWYWx1ZUVuZF8gJiYgIWNvbnRhaW5zTmV3TGluZShsYXN0VmFs
dWVFbmRfLCBjb21tZW50QmVnaW4pKSB7Ci0gICAgICBpZiAoYyAhPSAnKicgfHwgIWNvbnRhaW5z
TmV3TGluZShjb21tZW50QmVnaW4sIGN1cnJlbnRfKSkKLSAgICAgICAgcGxhY2VtZW50ID0gY29t
bWVudEFmdGVyT25TYW1lTGluZTsKLSAgICB9Ci0KLSAgICBhZGRDb21tZW50KGNvbW1lbnRCZWdp
biwgY3VycmVudF8sIHBsYWNlbWVudCk7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmlu
ZyBSZWFkZXI6Om5vcm1hbGl6ZUVPTChSZWFkZXI6OkxvY2F0aW9uIGJlZ2luLCBSZWFkZXI6Okxv
Y2F0aW9uIGVuZCkgewotICBTdHJpbmcgbm9ybWFsaXplZDsKLSAgbm9ybWFsaXplZC5yZXNlcnZl
KHN0YXRpY19jYXN0PHNpemVfdD4oZW5kIC0gYmVnaW4pKTsKLSAgUmVhZGVyOjpMb2NhdGlvbiBj
dXJyZW50ID0gYmVnaW47Ci0gIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgewotICAgIGNoYXIgYyA9
ICpjdXJyZW50Kys7Ci0gICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgaWYgKGN1cnJlbnQgIT0g
ZW5kICYmICpjdXJyZW50ID09ICdcbicpCi0gICAgICAgIC8vIGNvbnZlcnQgZG9zIEVPTAotICAg
ICAgICArK2N1cnJlbnQ7Ci0gICAgICAvLyBjb252ZXJ0IE1hYyBFT0wKLSAgICAgIG5vcm1hbGl6
ZWQgKz0gJ1xuJzsKLSAgICB9IGVsc2UgewotICAgICAgbm9ybWFsaXplZCArPSBjOwotICAgIH0K
LSAgfQotICByZXR1cm4gbm9ybWFsaXplZDsKLX0KLQotdm9pZCBSZWFkZXI6OmFkZENvbW1lbnQo
TG9jYXRpb24gYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBlbmQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCkgewotICBh
c3NlcnQoY29sbGVjdENvbW1lbnRzXyk7Ci0gIGNvbnN0IFN0cmluZyYgbm9ybWFsaXplZCA9IG5v
cm1hbGl6ZUVPTChiZWdpbiwgZW5kKTsKLSAgaWYgKHBsYWNlbWVudCA9PSBjb21tZW50QWZ0ZXJP
blNhbWVMaW5lKSB7Ci0gICAgYXNzZXJ0KGxhc3RWYWx1ZV8gIT0gbnVsbHB0cik7Ci0gICAgbGFz
dFZhbHVlXy0+c2V0Q29tbWVudChub3JtYWxpemVkLCBwbGFjZW1lbnQpOwotICB9IGVsc2Ugewot
ICAgIGNvbW1lbnRzQmVmb3JlXyArPSBub3JtYWxpemVkOwotICB9Ci19Ci0KLWJvb2wgUmVhZGVy
OjpyZWFkQ1N0eWxlQ29tbWVudCgpIHsKLSAgd2hpbGUgKChjdXJyZW50XyArIDEpIDwgZW5kXykg
ewotICAgIENoYXIgYyA9IGdldE5leHRDaGFyKCk7Ci0gICAgaWYgKGMgPT0gJyonICYmICpjdXJy
ZW50XyA9PSAnLycpCi0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gZ2V0TmV4dENoYXIoKSA9
PSAnLyc7Ci19Ci0KLWJvb2wgUmVhZGVyOjpyZWFkQ3BwU3R5bGVDb21tZW50KCkgewotICB3aGls
ZSAoY3VycmVudF8gIT0gZW5kXykgewotICAgIENoYXIgYyA9IGdldE5leHRDaGFyKCk7Ci0gICAg
aWYgKGMgPT0gJ1xuJykKLSAgICAgIGJyZWFrOwotICAgIGlmIChjID09ICdccicpIHsKLSAgICAg
IC8vIENvbnN1bWUgRE9TIEVPTC4gSXQgd2lsbCBiZSBub3JtYWxpemVkIGluIGFkZENvbW1lbnQu
Ci0gICAgICBpZiAoY3VycmVudF8gIT0gZW5kXyAmJiAqY3VycmVudF8gPT0gJ1xuJykKLSAgICAg
ICAgZ2V0TmV4dENoYXIoKTsKLSAgICAgIC8vIEJyZWFrIG9uIE1vYyBPUyA5IEVPTC4KLSAgICAg
IGJyZWFrOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSZWFkZXI6OnJl
YWROdW1iZXIoKSB7Ci0gIGNvbnN0IGNoYXIqIHAgPSBjdXJyZW50XzsKLSAgY2hhciBjID0gJzAn
OyAvLyBzdG9wZ2FwIGZvciBhbHJlYWR5IGNvbnN1bWVkIGNoYXJhY3RlcgotICAvLyBpbnRlZ3Jh
bCBwYXJ0Ci0gIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICBjID0gKGN1cnJlbnRf
ID0gcCkgPCBlbmRfID8gKnArKyA6ICdcMCc7Ci0gIC8vIGZyYWN0aW9uYWwgcGFydAotICBpZiAo
YyA9PSAnLicpIHsKLSAgICBjID0gKGN1cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6ICdcMCc7
Ci0gICAgd2hpbGUgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgYyA9IChjdXJyZW50XyA9
IHApIDwgZW5kXyA/ICpwKysgOiAnXDAnOwotICB9Ci0gIC8vIGV4cG9uZW50aWFsIHBhcnQKLSAg
aWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7Ci0gICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5k
XyA/ICpwKysgOiAnXDAnOwotICAgIGlmIChjID09ICcrJyB8fCBjID09ICctJykKLSAgICAgIGMg
PSAoY3VycmVudF8gPSBwKSA8IGVuZF8gPyAqcCsrIDogJ1wwJzsKLSAgICB3aGlsZSAoYyA+PSAn
MCcgJiYgYyA8PSAnOScpCi0gICAgICBjID0gKGN1cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6
ICdcMCc7Ci0gIH0KLX0KLQotYm9vbCBSZWFkZXI6OnJlYWRTdHJpbmcoKSB7Ci0gIENoYXIgYyA9
ICdcMCc7Ci0gIHdoaWxlIChjdXJyZW50XyAhPSBlbmRfKSB7Ci0gICAgYyA9IGdldE5leHRDaGFy
KCk7Ci0gICAgaWYgKGMgPT0gJ1xcJykKLSAgICAgIGdldE5leHRDaGFyKCk7Ci0gICAgZWxzZSBp
ZiAoYyA9PSAnIicpCi0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gYyA9PSAnIic7Ci19Ci0K
LWJvb2wgUmVhZGVyOjpyZWFkT2JqZWN0KFRva2VuJiB0b2tlbikgewotICBUb2tlbiB0b2tlbk5h
bWU7Ci0gIFN0cmluZyBuYW1lOwotICBWYWx1ZSBpbml0KG9iamVjdFZhbHVlKTsKLSAgY3VycmVu
dFZhbHVlKCkuc3dhcFBheWxvYWQoaW5pdCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0
YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIHdoaWxlIChyZWFkVG9rZW4odG9rZW5OYW1l
KSkgewotICAgIGJvb2wgaW5pdGlhbFRva2VuT2sgPSB0cnVlOwotICAgIHdoaWxlICh0b2tlbk5h
bWUudHlwZV8gPT0gdG9rZW5Db21tZW50ICYmIGluaXRpYWxUb2tlbk9rKQotICAgICAgaW5pdGlh
bFRva2VuT2sgPSByZWFkVG9rZW4odG9rZW5OYW1lKTsKLSAgICBpZiAoIWluaXRpYWxUb2tlbk9r
KQotICAgICAgYnJlYWs7Ci0gICAgaWYgKHRva2VuTmFtZS50eXBlXyA9PSB0b2tlbk9iamVjdEVu
ZCAmJiBuYW1lLmVtcHR5KCkpIC8vIGVtcHR5IG9iamVjdAotICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgbmFtZS5jbGVhcigpOwotICAgIGlmICh0b2tlbk5hbWUudHlwZV8gPT0gdG9rZW5TdHJpbmcp
IHsKLSAgICAgIGlmICghZGVjb2RlU3RyaW5nKHRva2VuTmFtZSwgbmFtZSkpCi0gICAgICAgIHJl
dHVybiByZWNvdmVyRnJvbUVycm9yKHRva2VuT2JqZWN0RW5kKTsKLSAgICB9IGVsc2UgaWYgKHRv
a2VuTmFtZS50eXBlXyA9PSB0b2tlbk51bWJlciAmJiBmZWF0dXJlc18uYWxsb3dOdW1lcmljS2V5
c18pIHsKLSAgICAgIFZhbHVlIG51bWJlck5hbWU7Ci0gICAgICBpZiAoIWRlY29kZU51bWJlcih0
b2tlbk5hbWUsIG51bWJlck5hbWUpKQotICAgICAgICByZXR1cm4gcmVjb3ZlckZyb21FcnJvcih0
b2tlbk9iamVjdEVuZCk7Ci0gICAgICBuYW1lID0gU3RyaW5nKG51bWJlck5hbWUuYXNDU3RyaW5n
KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBUb2tlbiBjb2xv
bjsKLSAgICBpZiAoIXJlYWRUb2tlbihjb2xvbikgfHwgY29sb24udHlwZV8gIT0gdG9rZW5NZW1i
ZXJTZXBhcmF0b3IpIHsKLSAgICAgIHJldHVybiBhZGRFcnJvckFuZFJlY292ZXIoIk1pc3Npbmcg
JzonIGFmdGVyIG9iamVjdCBtZW1iZXIgbmFtZSIsIGNvbG9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbk9iamVjdEVuZCk7Ci0gICAgfQotICAgIFZhbHVlJiB2YWx1ZSA9
IGN1cnJlbnRWYWx1ZSgpW25hbWVdOwotICAgIG5vZGVzXy5wdXNoKCZ2YWx1ZSk7Ci0gICAgYm9v
bCBvayA9IHJlYWRWYWx1ZSgpOwotICAgIG5vZGVzXy5wb3AoKTsKLSAgICBpZiAoIW9rKSAvLyBl
cnJvciBhbHJlYWR5IHNldAotICAgICAgcmV0dXJuIHJlY292ZXJGcm9tRXJyb3IodG9rZW5PYmpl
Y3RFbmQpOwotCi0gICAgVG9rZW4gY29tbWE7Ci0gICAgaWYgKCFyZWFkVG9rZW4oY29tbWEpIHx8
Ci0gICAgICAgIChjb21tYS50eXBlXyAhPSB0b2tlbk9iamVjdEVuZCAmJiBjb21tYS50eXBlXyAh
PSB0b2tlbkFycmF5U2VwYXJhdG9yICYmCi0gICAgICAgICBjb21tYS50eXBlXyAhPSB0b2tlbkNv
bW1lbnQpKSB7Ci0gICAgICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICcsJyBv
ciAnfScgaW4gb2JqZWN0IGRlY2xhcmF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWEsIHRva2VuT2JqZWN0RW5kKTsKLSAgICB9Ci0gICAgYm9vbCBmaW5hbGl6ZVRv
a2VuT2sgPSB0cnVlOwotICAgIHdoaWxlIChjb21tYS50eXBlXyA9PSB0b2tlbkNvbW1lbnQgJiYg
ZmluYWxpemVUb2tlbk9rKQotICAgICAgZmluYWxpemVUb2tlbk9rID0gcmVhZFRva2VuKGNvbW1h
KTsKLSAgICBpZiAoY29tbWEudHlwZV8gPT0gdG9rZW5PYmplY3RFbmQpCi0gICAgICByZXR1cm4g
dHJ1ZTsKLSAgfQotICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICd9JyBvciBv
YmplY3QgbWVtYmVyIG5hbWUiLCB0b2tlbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW5PYmplY3RFbmQpOwotfQotCi1ib29sIFJlYWRlcjo6cmVhZEFycmF5KFRva2VuJiB0
b2tlbikgewotICBWYWx1ZSBpbml0KGFycmF5VmFsdWUpOwotICBjdXJyZW50VmFsdWUoKS5zd2Fw
UGF5bG9hZChpbml0KTsKLSAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3Rh
cnRfIC0gYmVnaW5fKTsKLSAgc2tpcFNwYWNlcygpOwotICBpZiAoY3VycmVudF8gIT0gZW5kXyAm
JiAqY3VycmVudF8gPT0gJ10nKSAvLyBlbXB0eSBhcnJheQotICB7Ci0gICAgVG9rZW4gZW5kQXJy
YXk7Ci0gICAgcmVhZFRva2VuKGVuZEFycmF5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBp
bnQgaW5kZXggPSAwOwotICBmb3IgKDs7KSB7Ci0gICAgVmFsdWUmIHZhbHVlID0gY3VycmVudFZh
bHVlKClbaW5kZXgrK107Ci0gICAgbm9kZXNfLnB1c2goJnZhbHVlKTsKLSAgICBib29sIG9rID0g
cmVhZFZhbHVlKCk7Ci0gICAgbm9kZXNfLnBvcCgpOwotICAgIGlmICghb2spIC8vIGVycm9yIGFs
cmVhZHkgc2V0Ci0gICAgICByZXR1cm4gcmVjb3ZlckZyb21FcnJvcih0b2tlbkFycmF5RW5kKTsK
LQotICAgIFRva2VuIGN1cnJlbnRUb2tlbjsKLSAgICAvLyBBY2NlcHQgQ29tbWVudCBhZnRlciBs
YXN0IGl0ZW0gaW4gdGhlIGFycmF5LgotICAgIG9rID0gcmVhZFRva2VuKGN1cnJlbnRUb2tlbik7
Ci0gICAgd2hpbGUgKGN1cnJlbnRUb2tlbi50eXBlXyA9PSB0b2tlbkNvbW1lbnQgJiYgb2spIHsK
LSAgICAgIG9rID0gcmVhZFRva2VuKGN1cnJlbnRUb2tlbik7Ci0gICAgfQotICAgIGJvb2wgYmFk
VG9rZW5UeXBlID0gKGN1cnJlbnRUb2tlbi50eXBlXyAhPSB0b2tlbkFycmF5U2VwYXJhdG9yICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuLnR5cGVfICE9IHRva2VuQXJy
YXlFbmQpOwotICAgIGlmICghb2sgfHwgYmFkVG9rZW5UeXBlKSB7Ci0gICAgICByZXR1cm4gYWRk
RXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICcsJyBvciAnXScgaW4gYXJyYXkgZGVjbGFyYXRpb24i
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4sIHRva2VuQXJy
YXlFbmQpOwotICAgIH0KLSAgICBpZiAoY3VycmVudFRva2VuLnR5cGVfID09IHRva2VuQXJyYXlF
bmQpCi0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6
OmRlY29kZU51bWJlcihUb2tlbiYgdG9rZW4pIHsKLSAgVmFsdWUgZGVjb2RlZDsKLSAgaWYgKCFk
ZWNvZGVOdW1iZXIodG9rZW4sIGRlY29kZWQpKQotICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVu
dFZhbHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNl
dFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNl
dExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBS
ZWFkZXI6OmRlY29kZU51bWJlcihUb2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKSB7Ci0gIC8v
IEF0dGVtcHRzIHRvIHBhcnNlIHRoZSBudW1iZXIgYXMgYW4gaW50ZWdlci4gSWYgdGhlIG51bWJl
ciBpcwotICAvLyBsYXJnZXIgdGhhbiB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgdmFsdWUgb2YgYW4g
aW50ZWdlciB0aGVuCi0gIC8vIHdlIGRlY29kZSB0aGUgbnVtYmVyIGFzIGEgZG91YmxlLgotICBM
b2NhdGlvbiBjdXJyZW50ID0gdG9rZW4uc3RhcnRfOwotICBib29sIGlzTmVnYXRpdmUgPSAqY3Vy
cmVudCA9PSAnLSc7Ci0gIGlmIChpc05lZ2F0aXZlKQotICAgICsrY3VycmVudDsKLSAgLy8gVE9E
TzogSGVscCB0aGUgY29tcGlsZXIgZG8gdGhlIGRpdiBhbmQgbW9kIGF0IGNvbXBpbGUgdGltZSBv
ciBnZXQgcmlkIG9mCi0gIC8vIHRoZW0uCi0gIFZhbHVlOjpMYXJnZXN0VUludCBtYXhJbnRlZ2Vy
VmFsdWUgPQotICAgICAgaXNOZWdhdGl2ZSA/IFZhbHVlOjpMYXJnZXN0VUludChWYWx1ZTo6bWF4
TGFyZ2VzdEludCkgKyAxCi0gICAgICAgICAgICAgICAgIDogVmFsdWU6Om1heExhcmdlc3RVSW50
OwotICBWYWx1ZTo6TGFyZ2VzdFVJbnQgdGhyZXNob2xkID0gbWF4SW50ZWdlclZhbHVlIC8gMTA7
Ci0gIFZhbHVlOjpMYXJnZXN0VUludCB2YWx1ZSA9IDA7Ci0gIHdoaWxlIChjdXJyZW50IDwgdG9r
ZW4uZW5kXykgewotICAgIENoYXIgYyA9ICpjdXJyZW50Kys7Ci0gICAgaWYgKGMgPCAnMCcgfHwg
YyA+ICc5JykKLSAgICAgIHJldHVybiBkZWNvZGVEb3VibGUodG9rZW4sIGRlY29kZWQpOwotICAg
IGF1dG8gZGlnaXQoc3RhdGljX2Nhc3Q8VmFsdWU6OlVJbnQ+KGMgLSAnMCcpKTsKLSAgICBpZiAo
dmFsdWUgPj0gdGhyZXNob2xkKSB7Ci0gICAgICAvLyBXZSd2ZSBoaXQgb3IgZXhjZWVkZWQgdGhl
IG1heCB2YWx1ZSBkaXZpZGVkIGJ5IDEwIChyb3VuZGVkIGRvd24pLiBJZgotICAgICAgLy8gYSkg
d2UndmUgb25seSBqdXN0IHRvdWNoZWQgdGhlIGxpbWl0LCBiKSB0aGlzIGlzIHRoZSBsYXN0IGRp
Z2l0LCBhbmQKLSAgICAgIC8vIGMpIGl0J3Mgc21hbGwgZW5vdWdoIHRvIGZpdCBpbiB0aGF0IHJv
dW5kaW5nIGRlbHRhLCB3ZSdyZSBva2F5LgotICAgICAgLy8gT3RoZXJ3aXNlIHRyZWF0IHRoaXMg
bnVtYmVyIGFzIGEgZG91YmxlIHRvIGF2b2lkIG92ZXJmbG93LgotICAgICAgaWYgKHZhbHVlID4g
dGhyZXNob2xkIHx8IGN1cnJlbnQgIT0gdG9rZW4uZW5kXyB8fAotICAgICAgICAgIGRpZ2l0ID4g
bWF4SW50ZWdlclZhbHVlICUgMTApIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZURvdWJsZSh0b2tl
biwgZGVjb2RlZCk7Ci0gICAgICB9Ci0gICAgfQotICAgIHZhbHVlID0gdmFsdWUgKiAxMCArIGRp
Z2l0OwotICB9Ci0gIGlmIChpc05lZ2F0aXZlICYmIHZhbHVlID09IG1heEludGVnZXJWYWx1ZSkK
LSAgICBkZWNvZGVkID0gVmFsdWU6Om1pbkxhcmdlc3RJbnQ7Ci0gIGVsc2UgaWYgKGlzTmVnYXRp
dmUpCi0gICAgZGVjb2RlZCA9IC1WYWx1ZTo6TGFyZ2VzdEludCh2YWx1ZSk7Ci0gIGVsc2UgaWYg
KHZhbHVlIDw9IFZhbHVlOjpMYXJnZXN0VUludChWYWx1ZTo6bWF4SW50KSkKLSAgICBkZWNvZGVk
ID0gVmFsdWU6Okxhcmdlc3RJbnQodmFsdWUpOwotICBlbHNlCi0gICAgZGVjb2RlZCA9IHZhbHVl
OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6OmRlY29kZURvdWJsZShUb2tlbiYg
dG9rZW4pIHsKLSAgVmFsdWUgZGVjb2RlZDsKLSAgaWYgKCFkZWNvZGVEb3VibGUodG9rZW4sIGRl
Y29kZWQpKQotICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQo
ZGVjb2RlZCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAt
IGJlZ2luXyk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBi
ZWdpbl8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6OmRlY29kZURvdWJsZShU
b2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKSB7Ci0gIGRvdWJsZSB2YWx1ZSA9IDA7Ci0gIFN0
cmluZyBidWZmZXIodG9rZW4uc3RhcnRfLCB0b2tlbi5lbmRfKTsKLSAgSVN0cmluZ1N0cmVhbSBp
cyhidWZmZXIpOwotICBpZiAoIShpcyA+PiB2YWx1ZSkpCi0gICAgcmV0dXJuIGFkZEVycm9yKAot
ICAgICAgICAiJyIgKyBTdHJpbmcodG9rZW4uc3RhcnRfLCB0b2tlbi5lbmRfKSArICInIGlzIG5v
dCBhIG51bWJlci4iLCB0b2tlbik7Ci0gIGRlY29kZWQgPSB2YWx1ZTsKLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgUmVhZGVyOjpkZWNvZGVTdHJpbmcoVG9rZW4mIHRva2VuKSB7Ci0gIFN0cmlu
ZyBkZWNvZGVkX3N0cmluZzsKLSAgaWYgKCFkZWNvZGVTdHJpbmcodG9rZW4sIGRlY29kZWRfc3Ry
aW5nKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIFZhbHVlIGRlY29kZWQoZGVjb2RlZF9zdHJpbmcp
OwotICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZChkZWNvZGVkKTsKLSAgY3VycmVudFZhbHVl
KCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgY3VycmVudFZhbHVl
KCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIHJldHVybiB0cnVlOwot
fQotCi1ib29sIFJlYWRlcjo6ZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbiwgU3RyaW5nJiBkZWNv
ZGVkKSB7Ci0gIGRlY29kZWQucmVzZXJ2ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHRva2VuLmVuZF8g
LSB0b2tlbi5zdGFydF8gLSAyKSk7Ci0gIExvY2F0aW9uIGN1cnJlbnQgPSB0b2tlbi5zdGFydF8g
KyAxOyAvLyBza2lwICciJwotICBMb2NhdGlvbiBlbmQgPSB0b2tlbi5lbmRfIC0gMTsgICAgICAg
Ly8gZG8gbm90IGluY2x1ZGUgJyInCi0gIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgewotICAgIENo
YXIgYyA9ICpjdXJyZW50Kys7Ci0gICAgaWYgKGMgPT0gJyInKQotICAgICAgYnJlYWs7Ci0gICAg
ZWxzZSBpZiAoYyA9PSAnXFwnKSB7Ci0gICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAg
IHJldHVybiBhZGRFcnJvcigiRW1wdHkgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyIsIHRva2Vu
LCBjdXJyZW50KTsKLSAgICAgIENoYXIgZXNjYXBlID0gKmN1cnJlbnQrKzsKLSAgICAgIHN3aXRj
aCAoZXNjYXBlKSB7Ci0gICAgICBjYXNlICciJzoKLSAgICAgICAgZGVjb2RlZCArPSAnIic7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnLyc6Ci0gICAgICAgIGRlY29kZWQgKz0gJy8nOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgZGVjb2RlZCArPSAnXFwn
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2InOgotICAgICAgICBkZWNvZGVkICs9ICdc
Yic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnZic6Ci0gICAgICAgIGRlY29kZWQgKz0g
J1xmJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICduJzoKLSAgICAgICAgZGVjb2RlZCAr
PSAnXG4nOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3InOgotICAgICAgICBkZWNvZGVk
ICs9ICdccic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAndCc6Ci0gICAgICAgIGRlY29k
ZWQgKz0gJ1x0JzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICd1JzogewotICAgICAgICB1
bnNpZ25lZCBpbnQgdW5pY29kZTsKLSAgICAgICAgaWYgKCFkZWNvZGVVbmljb2RlQ29kZVBvaW50
KHRva2VuLCBjdXJyZW50LCBlbmQsIHVuaWNvZGUpKQotICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgZGVjb2RlZCArPSBjb2RlUG9pbnRUb1VURjgodW5pY29kZSk7Ci0gICAgICB9IGJy
ZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkZEVycm9yKCJCYWQgZXNjYXBl
IHNlcXVlbmNlIGluIHN0cmluZyIsIHRva2VuLCBjdXJyZW50KTsKLSAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgZGVjb2RlZCArPSBjOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBSZWFkZXI6OmRlY29kZVVuaWNvZGVDb2RlUG9pbnQoVG9rZW4mIHRva2VuLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24mIGN1cnJlbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBlbmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQmIHVuaWNvZGUpIHsKLQotICBp
ZiAoIWRlY29kZVVuaWNvZGVFc2NhcGVTZXF1ZW5jZSh0b2tlbiwgY3VycmVudCwgZW5kLCB1bmlj
b2RlKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICh1bmljb2RlID49IDB4RDgwMCAmJiB1bmlj
b2RlIDw9IDB4REJGRikgewotICAgIC8vIHN1cnJvZ2F0ZSBwYWlycwotICAgIGlmIChlbmQgLSBj
dXJyZW50IDwgNikKLSAgICAgIHJldHVybiBhZGRFcnJvcigKLSAgICAgICAgICAiYWRkaXRpb25h
bCBzaXggY2hhcmFjdGVycyBleHBlY3RlZCB0byBwYXJzZSB1bmljb2RlIHN1cnJvZ2F0ZSBwYWly
LiIsCi0gICAgICAgICAgdG9rZW4sIGN1cnJlbnQpOwotICAgIGlmICgqKGN1cnJlbnQrKykgPT0g
J1xcJyAmJiAqKGN1cnJlbnQrKykgPT0gJ3UnKSB7Ci0gICAgICB1bnNpZ25lZCBpbnQgc3Vycm9n
YXRlUGFpcjsKLSAgICAgIGlmIChkZWNvZGVVbmljb2RlRXNjYXBlU2VxdWVuY2UodG9rZW4sIGN1
cnJlbnQsIGVuZCwgc3Vycm9nYXRlUGFpcikpIHsKLSAgICAgICAgdW5pY29kZSA9IDB4MTAwMDAg
KyAoKHVuaWNvZGUgJiAweDNGRikgPDwgMTApICsgKHN1cnJvZ2F0ZVBhaXIgJiAweDNGRik7Ci0g
ICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0gZWxzZQotICAgICAgcmV0
dXJuIGFkZEVycm9yKCJleHBlY3RpbmcgYW5vdGhlciBcXHUgdG9rZW4gdG8gYmVnaW4gdGhlIHNl
Y29uZCBoYWxmIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAiYSB1bmljb2RlIHN1cnJvZ2F0
ZSBwYWlyIiwKLSAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgY3VycmVudCk7Ci0gIH0KLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZGVyOjpkZWNvZGVVbmljb2RlRXNjYXBlU2VxdWVu
Y2UoVG9rZW4mIHRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTG9jYXRpb24gZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQmIHJldF91bmljb2RlKSB7Ci0gIGlmIChlbmQgLSBjdXJyZW50IDwg
NCkKLSAgICByZXR1cm4gYWRkRXJyb3IoCi0gICAgICAgICJCYWQgdW5pY29kZSBlc2NhcGUgc2Vx
dWVuY2UgaW4gc3RyaW5nOiBmb3VyIGRpZ2l0cyBleHBlY3RlZC4iLCB0b2tlbiwKLSAgICAgICAg
Y3VycmVudCk7Ci0gIGludCB1bmljb2RlID0gMDsKLSAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRl
eCA8IDQ7ICsraW5kZXgpIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIHVuaWNvZGUg
Kj0gMTY7Ci0gICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgdW5pY29kZSArPSBj
IC0gJzAnOwotICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgdW5pY29k
ZSArPSBjIC0gJ2EnICsgMTA7Ci0gICAgZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpCi0g
ICAgICB1bmljb2RlICs9IGMgLSAnQScgKyAxMDsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gYWRk
RXJyb3IoCi0gICAgICAgICAgIkJhZCB1bmljb2RlIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmc6
IGhleGFkZWNpbWFsIGRpZ2l0IGV4cGVjdGVkLiIsCi0gICAgICAgICAgdG9rZW4sIGN1cnJlbnQp
OwotICB9Ci0gIHJldF91bmljb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmljb2Rl
KTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZGVyOjphZGRFcnJvcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIFRva2VuJiB0b2tlbiwgTG9jYXRpb24gZXh0cmEpIHsKLSAgRXJyb3JJbmZv
IGluZm87Ci0gIGluZm8udG9rZW5fID0gdG9rZW47Ci0gIGluZm8ubWVzc2FnZV8gPSBtZXNzYWdl
OwotICBpbmZvLmV4dHJhXyA9IGV4dHJhOwotICBlcnJvcnNfLnB1c2hfYmFjayhpbmZvKTsKLSAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlYWRlcjo6cmVjb3ZlckZyb21FcnJvcihUb2tlblR5
cGUgc2tpcFVudGlsVG9rZW4pIHsKLSAgc2l6ZV90IGNvbnN0IGVycm9yQ291bnQgPSBlcnJvcnNf
LnNpemUoKTsKLSAgVG9rZW4gc2tpcDsKLSAgZm9yICg7OykgewotICAgIGlmICghcmVhZFRva2Vu
KHNraXApKQotICAgICAgZXJyb3JzXy5yZXNpemUoZXJyb3JDb3VudCk7IC8vIGRpc2NhcmQgZXJy
b3JzIGNhdXNlZCBieSByZWNvdmVyeQotICAgIGlmIChza2lwLnR5cGVfID09IHNraXBVbnRpbFRv
a2VuIHx8IHNraXAudHlwZV8gPT0gdG9rZW5FbmRPZlN0cmVhbSkKLSAgICAgIGJyZWFrOwotICB9
Ci0gIGVycm9yc18ucmVzaXplKGVycm9yQ291bnQpOwotICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgUmVhZGVyOjphZGRFcnJvckFuZFJlY292ZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbiYgdG9rZW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRva2VuVHlwZSBza2lwVW50aWxUb2tlbikgewotICBhZGRFcnJv
cihtZXNzYWdlLCB0b2tlbik7Ci0gIHJldHVybiByZWNvdmVyRnJvbUVycm9yKHNraXBVbnRpbFRv
a2VuKTsKLX0KLQotVmFsdWUmIFJlYWRlcjo6Y3VycmVudFZhbHVlKCkgeyByZXR1cm4gKihub2Rl
c18udG9wKCkpOyB9Ci0KLVJlYWRlcjo6Q2hhciBSZWFkZXI6OmdldE5leHRDaGFyKCkgewotICBp
ZiAoY3VycmVudF8gPT0gZW5kXykKLSAgICByZXR1cm4gMDsKLSAgcmV0dXJuICpjdXJyZW50Xysr
OwotfQotCi12b2lkIFJlYWRlcjo6Z2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKExvY2F0aW9uIGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxpbmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgY29sdW1uKSBjb25z
dCB7Ci0gIExvY2F0aW9uIGN1cnJlbnQgPSBiZWdpbl87Ci0gIExvY2F0aW9uIGxhc3RMaW5lU3Rh
cnQgPSBjdXJyZW50OwotICBsaW5lID0gMDsKLSAgd2hpbGUgKGN1cnJlbnQgPCBsb2NhdGlvbiAm
JiBjdXJyZW50ICE9IGVuZF8pIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIGlmIChj
ID09ICdccicpIHsKLSAgICAgIGlmICgqY3VycmVudCA9PSAnXG4nKQotICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICBsYXN0TGluZVN0YXJ0ID0gY3VycmVudDsKLSAgICAgICsrbGluZTsKLSAgICB9
IGVsc2UgaWYgKGMgPT0gJ1xuJykgewotICAgICAgbGFzdExpbmVTdGFydCA9IGN1cnJlbnQ7Ci0g
ICAgICArK2xpbmU7Ci0gICAgfQotICB9Ci0gIC8vIGNvbHVtbiAmIGxpbmUgc3RhcnQgYXQgMQot
ICBjb2x1bW4gPSBpbnQobG9jYXRpb24gLSBsYXN0TGluZVN0YXJ0KSArIDE7Ci0gICsrbGluZTsK
LX0KLQotU3RyaW5nIFJlYWRlcjo6Z2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKExvY2F0aW9uIGxv
Y2F0aW9uKSBjb25zdCB7Ci0gIGludCBsaW5lLCBjb2x1bW47Ci0gIGdldExvY2F0aW9uTGluZUFu
ZENvbHVtbihsb2NhdGlvbiwgbGluZSwgY29sdW1uKTsKLSAgY2hhciBidWZmZXJbMTggKyAxNiAr
IDE2ICsgMV07Ci0gIGpzb25jcHBfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIkxp
bmUgJWQsIENvbHVtbiAlZCIsIGxpbmUsIGNvbHVtbik7Ci0gIHJldHVybiBidWZmZXI7Ci19Ci0K
LS8vIERlcHJlY2F0ZWQuIFByZXNlcnZlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotU3Ry
aW5nIFJlYWRlcjo6Z2V0Rm9ybWF0ZWRFcnJvck1lc3NhZ2VzKCkgY29uc3QgewotICByZXR1cm4g
Z2V0Rm9ybWF0dGVkRXJyb3JNZXNzYWdlcygpOwotfQotCi1TdHJpbmcgUmVhZGVyOjpnZXRGb3Jt
YXR0ZWRFcnJvck1lc3NhZ2VzKCkgY29uc3QgewotICBTdHJpbmcgZm9ybWF0dGVkTWVzc2FnZTsK
LSAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGVycm9yc18pIHsKLSAgICBmb3JtYXR0ZWRNZXNz
YWdlICs9Ci0gICAgICAgICIqICIgKyBnZXRMb2NhdGlvbkxpbmVBbmRDb2x1bW4oZXJyb3IudG9r
ZW5fLnN0YXJ0XykgKyAiXG4iOwotICAgIGZvcm1hdHRlZE1lc3NhZ2UgKz0gIiAgIiArIGVycm9y
Lm1lc3NhZ2VfICsgIlxuIjsKLSAgICBpZiAoZXJyb3IuZXh0cmFfKQotICAgICAgZm9ybWF0dGVk
TWVzc2FnZSArPQotICAgICAgICAgICJTZWUgIiArIGdldExvY2F0aW9uTGluZUFuZENvbHVtbihl
cnJvci5leHRyYV8pICsgIiBmb3IgZGV0YWlsLlxuIjsKLSAgfQotICByZXR1cm4gZm9ybWF0dGVk
TWVzc2FnZTsKLX0KLQotc3RkOjp2ZWN0b3I8UmVhZGVyOjpTdHJ1Y3R1cmVkRXJyb3I+IFJlYWRl
cjo6Z2V0U3RydWN0dXJlZEVycm9ycygpIGNvbnN0IHsKLSAgc3RkOjp2ZWN0b3I8UmVhZGVyOjpT
dHJ1Y3R1cmVkRXJyb3I+IGFsbEVycm9yczsKLSAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGVy
cm9yc18pIHsKLSAgICBSZWFkZXI6OlN0cnVjdHVyZWRFcnJvciBzdHJ1Y3R1cmVkOwotICAgIHN0
cnVjdHVyZWQub2Zmc2V0X3N0YXJ0ID0gZXJyb3IudG9rZW5fLnN0YXJ0XyAtIGJlZ2luXzsKLSAg
ICBzdHJ1Y3R1cmVkLm9mZnNldF9saW1pdCA9IGVycm9yLnRva2VuXy5lbmRfIC0gYmVnaW5fOwot
ICAgIHN0cnVjdHVyZWQubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2VfOwotICAgIGFsbEVycm9ycy5w
dXNoX2JhY2soc3RydWN0dXJlZCk7Ci0gIH0KLSAgcmV0dXJuIGFsbEVycm9yczsKLX0KLQotYm9v
bCBSZWFkZXI6OnB1c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgewotICBwdHJkaWZmX3QgY29uc3QgbGVuZ3RoID0gZW5kXyAtIGJlZ2luXzsKLSAgaWYg
KHZhbHVlLmdldE9mZnNldFN0YXJ0KCkgPiBsZW5ndGggfHwgdmFsdWUuZ2V0T2Zmc2V0TGltaXQo
KSA+IGxlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIFRva2VuIHRva2VuOwotICB0b2tlbi50
eXBlXyA9IHRva2VuRXJyb3I7Ci0gIHRva2VuLnN0YXJ0XyA9IGJlZ2luXyArIHZhbHVlLmdldE9m
ZnNldFN0YXJ0KCk7Ci0gIHRva2VuLmVuZF8gPSBiZWdpbl8gKyB2YWx1ZS5nZXRPZmZzZXRMaW1p
dCgpOwotICBFcnJvckluZm8gaW5mbzsKLSAgaW5mby50b2tlbl8gPSB0b2tlbjsKLSAgaW5mby5t
ZXNzYWdlXyA9IG1lc3NhZ2U7Ci0gIGluZm8uZXh0cmFfID0gbnVsbHB0cjsKLSAgZXJyb3JzXy5w
dXNoX2JhY2soaW5mbyk7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFJlYWRlcjo6cHVzaEVy
cm9yKGNvbnN0IFZhbHVlJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZSYgZXh0cmEp
IHsKLSAgcHRyZGlmZl90IGNvbnN0IGxlbmd0aCA9IGVuZF8gLSBiZWdpbl87Ci0gIGlmICh2YWx1
ZS5nZXRPZmZzZXRTdGFydCgpID4gbGVuZ3RoIHx8IHZhbHVlLmdldE9mZnNldExpbWl0KCkgPiBs
ZW5ndGggfHwKLSAgICAgIGV4dHJhLmdldE9mZnNldExpbWl0KCkgPiBsZW5ndGgpCi0gICAgcmV0
dXJuIGZhbHNlOwotICBUb2tlbiB0b2tlbjsKLSAgdG9rZW4udHlwZV8gPSB0b2tlbkVycm9yOwot
ICB0b2tlbi5zdGFydF8gPSBiZWdpbl8gKyB2YWx1ZS5nZXRPZmZzZXRTdGFydCgpOwotICB0b2tl
bi5lbmRfID0gYmVnaW5fICsgdmFsdWUuZ2V0T2Zmc2V0TGltaXQoKTsKLSAgRXJyb3JJbmZvIGlu
Zm87Ci0gIGluZm8udG9rZW5fID0gdG9rZW47Ci0gIGluZm8ubWVzc2FnZV8gPSBtZXNzYWdlOwot
ICBpbmZvLmV4dHJhXyA9IGJlZ2luXyArIGV4dHJhLmdldE9mZnNldFN0YXJ0KCk7Ci0gIGVycm9y
c18ucHVzaF9iYWNrKGluZm8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6Omdv
b2QoKSBjb25zdCB7IHJldHVybiBlcnJvcnNfLmVtcHR5KCk7IH0KLQotLy8gT3JpZ2luYWxseSBj
b3BpZWQgZnJvbSB0aGUgRmVhdHVyZXMgY2xhc3MgKG5vdyBkZXByZWNhdGVkKSwgdXNlZCBpbnRl
cm5hbGx5Ci0vLyBmb3IgZmVhdHVyZXMgaW1wbGVtZW50YXRpb24uCi1jbGFzcyBPdXJGZWF0dXJl
cyB7Ci1wdWJsaWM6Ci0gIHN0YXRpYyBPdXJGZWF0dXJlcyBhbGwoKTsKLSAgYm9vbCBhbGxvd0Nv
bW1lbnRzXzsKLSAgYm9vbCBzdHJpY3RSb290XzsKLSAgYm9vbCBhbGxvd0Ryb3BwZWROdWxsUGxh
Y2Vob2xkZXJzXzsKLSAgYm9vbCBhbGxvd051bWVyaWNLZXlzXzsKLSAgYm9vbCBhbGxvd1Npbmds
ZVF1b3Rlc187Ci0gIGJvb2wgZmFpbElmRXh0cmFfOwotICBib29sIHJlamVjdER1cEtleXNfOwot
ICBib29sIGFsbG93U3BlY2lhbEZsb2F0c187Ci0gIHNpemVfdCBzdGFja0xpbWl0XzsKLX07IC8v
IE91ckZlYXR1cmVzCi0KLU91ckZlYXR1cmVzIE91ckZlYXR1cmVzOjphbGwoKSB7IHJldHVybiB7
fTsgfQotCi0vLyBJbXBsZW1lbnRhdGlvbiBvZiBjbGFzcyBSZWFkZXIKLS8vIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIE9yaWdpbmFsbHkgY29waWVkIGZyb20gdGhlIFJl
YWRlciBjbGFzcyAobm93IGRlcHJlY2F0ZWQpLCB1c2VkIGludGVybmFsbHkKLS8vIGZvciBpbXBs
ZW1lbnRpbmcgSlNPTiByZWFkaW5nLgotY2xhc3MgT3VyUmVhZGVyIHsKLXB1YmxpYzoKLSAgdHlw
ZWRlZiBjaGFyIENoYXI7Ci0gIHR5cGVkZWYgY29uc3QgQ2hhciogTG9jYXRpb247Ci0gIHN0cnVj
dCBTdHJ1Y3R1cmVkRXJyb3IgewotICAgIHB0cmRpZmZfdCBvZmZzZXRfc3RhcnQ7Ci0gICAgcHRy
ZGlmZl90IG9mZnNldF9saW1pdDsKLSAgICBTdHJpbmcgbWVzc2FnZTsKLSAgfTsKLQotICBPdXJS
ZWFkZXIoT3VyRmVhdHVyZXMgY29uc3QmIGZlYXR1cmVzKTsKLSAgYm9vbCBwYXJzZShjb25zdCBj
aGFyKiBiZWdpbkRvYywKLSAgICAgICAgICAgICBjb25zdCBjaGFyKiBlbmREb2MsCi0gICAgICAg
ICAgICAgVmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgYm9vbCBjb2xsZWN0Q29tbWVudHMgPSB0
cnVlKTsKLSAgU3RyaW5nIGdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKSBjb25zdDsKLSAgc3Rk
Ojp2ZWN0b3I8U3RydWN0dXJlZEVycm9yPiBnZXRTdHJ1Y3R1cmVkRXJyb3JzKCkgY29uc3Q7Ci0g
IGJvb2wgcHVzaEVycm9yKGNvbnN0IFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKLSAgYm9vbCBwdXNoRXJyb3IoY29uc3QgVmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFZhbHVlJiBleHRyYSk7Ci0gIGJvb2wgZ29vZCgpIGNvbnN0OwotCi1wcml2
YXRlOgotICBPdXJSZWFkZXIoT3VyUmVhZGVyIGNvbnN0Jik7ICAgICAgLy8gbm8gaW1wbAotICB2
b2lkIG9wZXJhdG9yPShPdXJSZWFkZXIgY29uc3QmKTsgLy8gbm8gaW1wbAotCi0gIGVudW0gVG9r
ZW5UeXBlIHsKLSAgICB0b2tlbkVuZE9mU3RyZWFtID0gMCwKLSAgICB0b2tlbk9iamVjdEJlZ2lu
LAotICAgIHRva2VuT2JqZWN0RW5kLAotICAgIHRva2VuQXJyYXlCZWdpbiwKLSAgICB0b2tlbkFy
cmF5RW5kLAotICAgIHRva2VuU3RyaW5nLAotICAgIHRva2VuTnVtYmVyLAotICAgIHRva2VuVHJ1
ZSwKLSAgICB0b2tlbkZhbHNlLAotICAgIHRva2VuTnVsbCwKLSAgICB0b2tlbk5hTiwKLSAgICB0
b2tlblBvc0luZiwKLSAgICB0b2tlbk5lZ0luZiwKLSAgICB0b2tlbkFycmF5U2VwYXJhdG9yLAot
ICAgIHRva2VuTWVtYmVyU2VwYXJhdG9yLAotICAgIHRva2VuQ29tbWVudCwKLSAgICB0b2tlbkVy
cm9yCi0gIH07Ci0KLSAgY2xhc3MgVG9rZW4gewotICBwdWJsaWM6Ci0gICAgVG9rZW5UeXBlIHR5
cGVfOwotICAgIExvY2F0aW9uIHN0YXJ0XzsKLSAgICBMb2NhdGlvbiBlbmRfOwotICB9OwotCi0g
IGNsYXNzIEVycm9ySW5mbyB7Ci0gIHB1YmxpYzoKLSAgICBUb2tlbiB0b2tlbl87Ci0gICAgU3Ry
aW5nIG1lc3NhZ2VfOwotICAgIExvY2F0aW9uIGV4dHJhXzsKLSAgfTsKLQotICB0eXBlZGVmIHN0
ZDo6ZGVxdWU8RXJyb3JJbmZvPiBFcnJvcnM7Ci0KLSAgYm9vbCByZWFkVG9rZW4oVG9rZW4mIHRv
a2VuKTsKLSAgdm9pZCBza2lwU3BhY2VzKCk7Ci0gIGJvb2wgbWF0Y2goTG9jYXRpb24gcGF0dGVy
biwgaW50IHBhdHRlcm5MZW5ndGgpOwotICBib29sIHJlYWRDb21tZW50KCk7Ci0gIGJvb2wgcmVh
ZENTdHlsZUNvbW1lbnQoKTsKLSAgYm9vbCByZWFkQ3BwU3R5bGVDb21tZW50KCk7Ci0gIGJvb2wg
cmVhZFN0cmluZygpOwotICBib29sIHJlYWRTdHJpbmdTaW5nbGVRdW90ZSgpOwotICBib29sIHJl
YWROdW1iZXIoYm9vbCBjaGVja0luZik7Ci0gIGJvb2wgcmVhZFZhbHVlKCk7Ci0gIGJvb2wgcmVh
ZE9iamVjdChUb2tlbiYgdG9rZW4pOwotICBib29sIHJlYWRBcnJheShUb2tlbiYgdG9rZW4pOwot
ICBib29sIGRlY29kZU51bWJlcihUb2tlbiYgdG9rZW4pOwotICBib29sIGRlY29kZU51bWJlcihU
b2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKTsKLSAgYm9vbCBkZWNvZGVTdHJpbmcoVG9rZW4m
IHRva2VuKTsKLSAgYm9vbCBkZWNvZGVTdHJpbmcoVG9rZW4mIHRva2VuLCBTdHJpbmcmIGRlY29k
ZWQpOwotICBib29sIGRlY29kZURvdWJsZShUb2tlbiYgdG9rZW4pOwotICBib29sIGRlY29kZURv
dWJsZShUb2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKTsKLSAgYm9vbCBkZWNvZGVVbmljb2Rl
Q29kZVBvaW50KFRva2VuJiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExv
Y2F0aW9uJiBjdXJyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24g
ZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50JiB1bmljb2Rl
KTsKLSAgYm9vbCBkZWNvZGVVbmljb2RlRXNjYXBlU2VxdWVuY2UoVG9rZW4mIHRva2VuLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gZW5kLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQmIHVuaWNvZGUpOwotICBib29sIGFk
ZEVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgVG9rZW4mIHRva2VuLCBMb2NhdGlvbiBleHRy
YSA9IG51bGxwdHIpOwotICBib29sIHJlY292ZXJGcm9tRXJyb3IoVG9rZW5UeXBlIHNraXBVbnRp
bFRva2VuKTsKLSAgYm9vbCBhZGRFcnJvckFuZFJlY292ZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlbiYgdG9rZW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFRva2VuVHlwZSBza2lwVW50aWxUb2tlbik7Ci0gIHZvaWQgc2tpcFVudGls
U3BhY2UoKTsKLSAgVmFsdWUmIGN1cnJlbnRWYWx1ZSgpOwotICBDaGFyIGdldE5leHRDaGFyKCk7
Ci0gIHZvaWQKLSAgZ2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKExvY2F0aW9uIGxvY2F0aW9uLCBp
bnQmIGxpbmUsIGludCYgY29sdW1uKSBjb25zdDsKLSAgU3RyaW5nIGdldExvY2F0aW9uTGluZUFu
ZENvbHVtbihMb2NhdGlvbiBsb2NhdGlvbikgY29uc3Q7Ci0gIHZvaWQgYWRkQ29tbWVudChMb2Nh
dGlvbiBiZWdpbiwgTG9jYXRpb24gZW5kLCBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCk7Ci0g
IHZvaWQgc2tpcENvbW1lbnRUb2tlbnMoVG9rZW4mIHRva2VuKTsKLQotICBzdGF0aWMgU3RyaW5n
IG5vcm1hbGl6ZUVPTChMb2NhdGlvbiBiZWdpbiwgTG9jYXRpb24gZW5kKTsKLSAgc3RhdGljIGJv
b2wgY29udGFpbnNOZXdMaW5lKExvY2F0aW9uIGJlZ2luLCBMb2NhdGlvbiBlbmQpOwotCi0gIHR5
cGVkZWYgc3RkOjpzdGFjazxWYWx1ZSo+IE5vZGVzOwotICBOb2RlcyBub2Rlc187Ci0gIEVycm9y
cyBlcnJvcnNfOwotICBTdHJpbmcgZG9jdW1lbnRfOwotICBMb2NhdGlvbiBiZWdpbl87Ci0gIExv
Y2F0aW9uIGVuZF87Ci0gIExvY2F0aW9uIGN1cnJlbnRfOwotICBMb2NhdGlvbiBsYXN0VmFsdWVF
bmRfOwotICBWYWx1ZSogbGFzdFZhbHVlXzsKLSAgU3RyaW5nIGNvbW1lbnRzQmVmb3JlXzsKLQot
ICBPdXJGZWF0dXJlcyBjb25zdCBmZWF0dXJlc187Ci0gIGJvb2wgY29sbGVjdENvbW1lbnRzXzsK
LX07IC8vIE91clJlYWRlcgotCi0vLyBjb21wbGV0ZSBjb3B5IG9mIFJlYWQgaW1wbCwgZm9yIE91
clJlYWRlcgotCi1ib29sIE91clJlYWRlcjo6Y29udGFpbnNOZXdMaW5lKE91clJlYWRlcjo6TG9j
YXRpb24gYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91clJlYWRlcjo6
TG9jYXRpb24gZW5kKSB7Ci0gIGZvciAoOyBiZWdpbiA8IGVuZDsgKytiZWdpbikKLSAgICBpZiAo
KmJlZ2luID09ICdcbicgfHwgKmJlZ2luID09ICdccicpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAg
cmV0dXJuIGZhbHNlOwotfQotCi1PdXJSZWFkZXI6Ok91clJlYWRlcihPdXJGZWF0dXJlcyBjb25z
dCYgZmVhdHVyZXMpCi0gICAgOiBlcnJvcnNfKCksIGRvY3VtZW50XygpLCBiZWdpbl8oKSwgZW5k
XygpLCBjdXJyZW50XygpLCBsYXN0VmFsdWVFbmRfKCksCi0gICAgICBsYXN0VmFsdWVfKCksIGNv
bW1lbnRzQmVmb3JlXygpLCBmZWF0dXJlc18oZmVhdHVyZXMpLCBjb2xsZWN0Q29tbWVudHNfKCkg
ewotfQotCi1ib29sIE91clJlYWRlcjo6cGFyc2UoY29uc3QgY2hhciogYmVnaW5Eb2MsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZW5kRG9jLAotICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlJiByb290LAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29sbGVjdENvbW1l
bnRzKSB7Ci0gIGlmICghZmVhdHVyZXNfLmFsbG93Q29tbWVudHNfKSB7Ci0gICAgY29sbGVjdENv
bW1lbnRzID0gZmFsc2U7Ci0gIH0KLQotICBiZWdpbl8gPSBiZWdpbkRvYzsKLSAgZW5kXyA9IGVu
ZERvYzsKLSAgY29sbGVjdENvbW1lbnRzXyA9IGNvbGxlY3RDb21tZW50czsKLSAgY3VycmVudF8g
PSBiZWdpbl87Ci0gIGxhc3RWYWx1ZUVuZF8gPSBudWxscHRyOwotICBsYXN0VmFsdWVfID0gbnVs
bHB0cjsKLSAgY29tbWVudHNCZWZvcmVfLmNsZWFyKCk7Ci0gIGVycm9yc18uY2xlYXIoKTsKLSAg
d2hpbGUgKCFub2Rlc18uZW1wdHkoKSkKLSAgICBub2Rlc18ucG9wKCk7Ci0gIG5vZGVzXy5wdXNo
KCZyb290KTsKLQotICBib29sIHN1Y2Nlc3NmdWwgPSByZWFkVmFsdWUoKTsKLSAgbm9kZXNfLnBv
cCgpOwotICBUb2tlbiB0b2tlbjsKLSAgc2tpcENvbW1lbnRUb2tlbnModG9rZW4pOwotICBpZiAo
ZmVhdHVyZXNfLmZhaWxJZkV4dHJhXykgewotICAgIGlmICgoZmVhdHVyZXNfLnN0cmljdFJvb3Rf
IHx8IHRva2VuLnR5cGVfICE9IHRva2VuRXJyb3IpICYmCi0gICAgICAgIHRva2VuLnR5cGVfICE9
IHRva2VuRW5kT2ZTdHJlYW0pIHsKLSAgICAgIGFkZEVycm9yKCJFeHRyYSBub24td2hpdGVzcGFj
ZSBhZnRlciBKU09OIHZhbHVlLiIsIHRva2VuKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gIH0KLSAgaWYgKGNvbGxlY3RDb21tZW50c18gJiYgIWNvbW1lbnRzQmVmb3JlXy5lbXB0eSgp
KQotICAgIHJvb3Quc2V0Q29tbWVudChjb21tZW50c0JlZm9yZV8sIGNvbW1lbnRBZnRlcik7Ci0g
IGlmIChmZWF0dXJlc18uc3RyaWN0Um9vdF8pIHsKLSAgICBpZiAoIXJvb3QuaXNBcnJheSgpICYm
ICFyb290LmlzT2JqZWN0KCkpIHsKLSAgICAgIC8vIFNldCBlcnJvciBsb2NhdGlvbiB0byBzdGFy
dCBvZiBkb2MsIGlkZWFsbHkgc2hvdWxkIGJlIGZpcnN0IHRva2VuIGZvdW5kCi0gICAgICAvLyBp
biBkb2MKLSAgICAgIHRva2VuLnR5cGVfID0gdG9rZW5FcnJvcjsKLSAgICAgIHRva2VuLnN0YXJ0
XyA9IGJlZ2luRG9jOwotICAgICAgdG9rZW4uZW5kXyA9IGVuZERvYzsKLSAgICAgIGFkZEVycm9y
KAotICAgICAgICAgICJBIHZhbGlkIEpTT04gZG9jdW1lbnQgbXVzdCBiZSBlaXRoZXIgYW4gYXJy
YXkgb3IgYW4gb2JqZWN0IHZhbHVlLiIsCi0gICAgICAgICAgdG9rZW4pOwotICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgfQotICByZXR1cm4gc3VjY2Vzc2Z1bDsKLX0KLQotYm9vbCBPdXJS
ZWFkZXI6OnJlYWRWYWx1ZSgpIHsKLSAgLy8gIFRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3Vy
IHdlIGNhc3Qgc2l6ZV90IHRvIGludC4KLSAgaWYgKG5vZGVzXy5zaXplKCkgPiBmZWF0dXJlc18u
c3RhY2tMaW1pdF8pCi0gICAgdGhyb3dSdW50aW1lRXJyb3IoIkV4Y2VlZGVkIHN0YWNrTGltaXQg
aW4gcmVhZFZhbHVlKCkuIik7Ci0gIFRva2VuIHRva2VuOwotICBza2lwQ29tbWVudFRva2Vucyh0
b2tlbik7Ci0gIGJvb2wgc3VjY2Vzc2Z1bCA9IHRydWU7Ci0KLSAgaWYgKGNvbGxlY3RDb21tZW50
c18gJiYgIWNvbW1lbnRzQmVmb3JlXy5lbXB0eSgpKSB7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0
Q29tbWVudChjb21tZW50c0JlZm9yZV8sIGNvbW1lbnRCZWZvcmUpOwotICAgIGNvbW1lbnRzQmVm
b3JlXy5jbGVhcigpOwotICB9Ci0KLSAgc3dpdGNoICh0b2tlbi50eXBlXykgewotICBjYXNlIHRv
a2VuT2JqZWN0QmVnaW46Ci0gICAgc3VjY2Vzc2Z1bCA9IHJlYWRPYmplY3QodG9rZW4pOwotICAg
IGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KGN1cnJlbnRfIC0gYmVnaW5fKTsKLSAgICBi
cmVhazsKLSAgY2FzZSB0b2tlbkFycmF5QmVnaW46Ci0gICAgc3VjY2Vzc2Z1bCA9IHJlYWRBcnJh
eSh0b2tlbik7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQoY3VycmVudF8gLSBi
ZWdpbl8pOwotICAgIGJyZWFrOwotICBjYXNlIHRva2VuTnVtYmVyOgotICAgIHN1Y2Nlc3NmdWwg
PSBkZWNvZGVOdW1iZXIodG9rZW4pOwotICAgIGJyZWFrOwotICBjYXNlIHRva2VuU3RyaW5nOgot
ICAgIHN1Y2Nlc3NmdWwgPSBkZWNvZGVTdHJpbmcodG9rZW4pOwotICAgIGJyZWFrOwotICBjYXNl
IHRva2VuVHJ1ZTogewotICAgIFZhbHVlIHYodHJ1ZSk7Ci0gICAgY3VycmVudFZhbHVlKCkuc3dh
cFBheWxvYWQodik7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3Rh
cnRfIC0gYmVnaW5fKTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5l
bmRfIC0gYmVnaW5fKTsKLSAgfSBicmVhazsKLSAgY2FzZSB0b2tlbkZhbHNlOiB7Ci0gICAgVmFs
dWUgdihmYWxzZSk7Ci0gICAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQodik7Ci0gICAgY3Vy
cmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgICBj
dXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVnaW5fKTsKLSAgfSBi
cmVhazsKLSAgY2FzZSB0b2tlbk51bGw6IHsKLSAgICBWYWx1ZSB2OwotICAgIGN1cnJlbnRWYWx1
ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRv
a2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQo
dG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgdG9rZW5OYU46IHsKLSAg
ICBWYWx1ZSB2KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwotICAg
IGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9m
ZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0
T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgdG9r
ZW5Qb3NJbmY6IHsKLSAgICBWYWx1ZSB2KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSk7Ci0gICAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQodik7Ci0gICAgY3VycmVu
dFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgICBjdXJy
ZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVnaW5fKTsKLSAgfSBicmVh
azsKLSAgY2FzZSB0b2tlbk5lZ0luZjogewotICAgIFZhbHVlIHYoLXN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7Ci0gICAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQo
dik7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVn
aW5fKTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVn
aW5fKTsKLSAgfSBicmVhazsKLSAgY2FzZSB0b2tlbkFycmF5U2VwYXJhdG9yOgotICBjYXNlIHRv
a2VuT2JqZWN0RW5kOgotICBjYXNlIHRva2VuQXJyYXlFbmQ6Ci0gICAgaWYgKGZlYXR1cmVzXy5h
bGxvd0Ryb3BwZWROdWxsUGxhY2Vob2xkZXJzXykgewotICAgICAgLy8gIlVuLXJlYWQiIHRoZSBj
dXJyZW50IHRva2VuIGFuZCBtYXJrIHRoZSBjdXJyZW50IHZhbHVlIGFzIGEgbnVsbAotICAgICAg
Ly8gdG9rZW4uCi0gICAgICBjdXJyZW50Xy0tOwotICAgICAgVmFsdWUgdjsKLSAgICAgIGN1cnJl
bnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0
U3RhcnQoY3VycmVudF8gLSBiZWdpbl8gLSAxKTsKLSAgICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9m
ZnNldExpbWl0KGN1cnJlbnRfIC0gYmVnaW5fKTsKLSAgICAgIGJyZWFrOwotICAgIH0gLy8gZWxz
ZSwgZmFsbCB0aHJvdWdoIC4uLgotICBkZWZhdWx0OgotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9m
ZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0
T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gICAgcmV0dXJuIGFkZEVycm9yKCJT
eW50YXggZXJyb3I6IHZhbHVlLCBvYmplY3Qgb3IgYXJyYXkgZXhwZWN0ZWQuIiwgdG9rZW4pOwot
ICB9Ci0KLSAgaWYgKGNvbGxlY3RDb21tZW50c18pIHsKLSAgICBsYXN0VmFsdWVFbmRfID0gY3Vy
cmVudF87Ci0gICAgbGFzdFZhbHVlXyA9ICZjdXJyZW50VmFsdWUoKTsKLSAgfQotCi0gIHJldHVy
biBzdWNjZXNzZnVsOwotfQotCi12b2lkIE91clJlYWRlcjo6c2tpcENvbW1lbnRUb2tlbnMoVG9r
ZW4mIHRva2VuKSB7Ci0gIGlmIChmZWF0dXJlc18uYWxsb3dDb21tZW50c18pIHsKLSAgICBkbyB7
Ci0gICAgICByZWFkVG9rZW4odG9rZW4pOwotICAgIH0gd2hpbGUgKHRva2VuLnR5cGVfID09IHRv
a2VuQ29tbWVudCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmVhZFRva2VuKHRva2VuKTsKLSAgfQotfQot
Ci1ib29sIE91clJlYWRlcjo6cmVhZFRva2VuKFRva2VuJiB0b2tlbikgewotICBza2lwU3BhY2Vz
KCk7Ci0gIHRva2VuLnN0YXJ0XyA9IGN1cnJlbnRfOwotICBDaGFyIGMgPSBnZXROZXh0Q2hhcigp
OwotICBib29sIG9rID0gdHJ1ZTsKLSAgc3dpdGNoIChjKSB7Ci0gIGNhc2UgJ3snOgotICAgIHRv
a2VuLnR5cGVfID0gdG9rZW5PYmplY3RCZWdpbjsKLSAgICBicmVhazsKLSAgY2FzZSAnfSc6Ci0g
ICAgdG9rZW4udHlwZV8gPSB0b2tlbk9iamVjdEVuZDsKLSAgICBicmVhazsKLSAgY2FzZSAnWyc6
Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbkFycmF5QmVnaW47Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
J10nOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5BcnJheUVuZDsKLSAgICBicmVhazsKLSAgY2Fz
ZSAnIic6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlblN0cmluZzsKLSAgICBvayA9IHJlYWRTdHJp
bmcoKTsKLSAgICBicmVhazsKLSAgY2FzZSAnXCcnOgotICAgIGlmIChmZWF0dXJlc18uYWxsb3dT
aW5nbGVRdW90ZXNfKSB7Ci0gICAgICB0b2tlbi50eXBlXyA9IHRva2VuU3RyaW5nOwotICAgICAg
b2sgPSByZWFkU3RyaW5nU2luZ2xlUXVvdGUoKTsKLSAgICAgIGJyZWFrOwotICAgIH0gLy8gZWxz
ZSBmYWxsIHRocm91Z2gKLSAgY2FzZSAnLyc6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbkNvbW1l
bnQ7Ci0gICAgb2sgPSByZWFkQ29tbWVudCgpOwotICAgIGJyZWFrOwotICBjYXNlICcwJzoKLSAg
Y2FzZSAnMSc6Ci0gIGNhc2UgJzInOgotICBjYXNlICczJzoKLSAgY2FzZSAnNCc6Ci0gIGNhc2Ug
JzUnOgotICBjYXNlICc2JzoKLSAgY2FzZSAnNyc6Ci0gIGNhc2UgJzgnOgotICBjYXNlICc5JzoK
LSAgICB0b2tlbi50eXBlXyA9IHRva2VuTnVtYmVyOwotICAgIHJlYWROdW1iZXIoZmFsc2UpOwot
ICAgIGJyZWFrOwotICBjYXNlICctJzoKLSAgICBpZiAocmVhZE51bWJlcih0cnVlKSkgewotICAg
ICAgdG9rZW4udHlwZV8gPSB0b2tlbk51bWJlcjsKLSAgICB9IGVsc2UgewotICAgICAgdG9rZW4u
dHlwZV8gPSB0b2tlbk5lZ0luZjsKLSAgICAgIG9rID0gZmVhdHVyZXNfLmFsbG93U3BlY2lhbEZs
b2F0c18gJiYgbWF0Y2goIm5maW5pdHkiLCA3KTsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
J3QnOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5UcnVlOwotICAgIG9rID0gbWF0Y2goInJ1ZSIs
IDMpOwotICAgIGJyZWFrOwotICBjYXNlICdmJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuRmFs
c2U7Ci0gICAgb2sgPSBtYXRjaCgiYWxzZSIsIDQpOwotICAgIGJyZWFrOwotICBjYXNlICduJzoK
LSAgICB0b2tlbi50eXBlXyA9IHRva2VuTnVsbDsKLSAgICBvayA9IG1hdGNoKCJ1bGwiLCAzKTsK
LSAgICBicmVhazsKLSAgY2FzZSAnTic6Ci0gICAgaWYgKGZlYXR1cmVzXy5hbGxvd1NwZWNpYWxG
bG9hdHNfKSB7Ci0gICAgICB0b2tlbi50eXBlXyA9IHRva2VuTmFOOwotICAgICAgb2sgPSBtYXRj
aCgiYU4iLCAyKTsKLSAgICB9IGVsc2UgewotICAgICAgb2sgPSBmYWxzZTsKLSAgICB9Ci0gICAg
YnJlYWs7Ci0gIGNhc2UgJ0knOgotICAgIGlmIChmZWF0dXJlc18uYWxsb3dTcGVjaWFsRmxvYXRz
XykgewotICAgICAgdG9rZW4udHlwZV8gPSB0b2tlblBvc0luZjsKLSAgICAgIG9rID0gbWF0Y2go
Im5maW5pdHkiLCA3KTsKLSAgICB9IGVsc2UgewotICAgICAgb2sgPSBmYWxzZTsKLSAgICB9Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgJywnOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5BcnJheVNlcGFy
YXRvcjsKLSAgICBicmVhazsKLSAgY2FzZSAnOic6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbk1l
bWJlclNlcGFyYXRvcjsKLSAgICBicmVhazsKLSAgY2FzZSAwOgotICAgIHRva2VuLnR5cGVfID0g
dG9rZW5FbmRPZlN0cmVhbTsKLSAgICBicmVhazsKLSAgZGVmYXVsdDoKLSAgICBvayA9IGZhbHNl
OwotICAgIGJyZWFrOwotICB9Ci0gIGlmICghb2spCi0gICAgdG9rZW4udHlwZV8gPSB0b2tlbkVy
cm9yOwotICB0b2tlbi5lbmRfID0gY3VycmVudF87Ci0gIHJldHVybiB0cnVlOwotfQotCi12b2lk
IE91clJlYWRlcjo6c2tpcFNwYWNlcygpIHsKLSAgd2hpbGUgKGN1cnJlbnRfICE9IGVuZF8pIHsK
LSAgICBDaGFyIGMgPSAqY3VycmVudF87Ci0gICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8
fCBjID09ICdccicgfHwgYyA9PSAnXG4nKQotICAgICAgKytjdXJyZW50XzsKLSAgICBlbHNlCi0g
ICAgICBicmVhazsKLSAgfQotfQotCi1ib29sIE91clJlYWRlcjo6bWF0Y2goTG9jYXRpb24gcGF0
dGVybiwgaW50IHBhdHRlcm5MZW5ndGgpIHsKLSAgaWYgKGVuZF8gLSBjdXJyZW50XyA8IHBhdHRl
cm5MZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpbnQgaW5kZXggPSBwYXR0ZXJuTGVuZ3Ro
OwotICB3aGlsZSAoaW5kZXgtLSkKLSAgICBpZiAoY3VycmVudF9baW5kZXhdICE9IHBhdHRlcm5b
aW5kZXhdKQotICAgICAgcmV0dXJuIGZhbHNlOwotICBjdXJyZW50XyArPSBwYXR0ZXJuTGVuZ3Ro
OwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OnJlYWRDb21tZW50KCkgewot
ICBMb2NhdGlvbiBjb21tZW50QmVnaW4gPSBjdXJyZW50XyAtIDE7Ci0gIENoYXIgYyA9IGdldE5l
eHRDaGFyKCk7Ci0gIGJvb2wgc3VjY2Vzc2Z1bCA9IGZhbHNlOwotICBpZiAoYyA9PSAnKicpCi0g
ICAgc3VjY2Vzc2Z1bCA9IHJlYWRDU3R5bGVDb21tZW50KCk7Ci0gIGVsc2UgaWYgKGMgPT0gJy8n
KQotICAgIHN1Y2Nlc3NmdWwgPSByZWFkQ3BwU3R5bGVDb21tZW50KCk7Ci0gIGlmICghc3VjY2Vz
c2Z1bCkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgaWYgKGNvbGxlY3RDb21tZW50c18pIHsKLSAg
ICBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCA9IGNvbW1lbnRCZWZvcmU7Ci0gICAgaWYgKGxh
c3RWYWx1ZUVuZF8gJiYgIWNvbnRhaW5zTmV3TGluZShsYXN0VmFsdWVFbmRfLCBjb21tZW50QmVn
aW4pKSB7Ci0gICAgICBpZiAoYyAhPSAnKicgfHwgIWNvbnRhaW5zTmV3TGluZShjb21tZW50QmVn
aW4sIGN1cnJlbnRfKSkKLSAgICAgICAgcGxhY2VtZW50ID0gY29tbWVudEFmdGVyT25TYW1lTGlu
ZTsKLSAgICB9Ci0KLSAgICBhZGRDb21tZW50KGNvbW1lbnRCZWdpbiwgY3VycmVudF8sIHBsYWNl
bWVudCk7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBPdXJSZWFkZXI6Om5vcm1h
bGl6ZUVPTChPdXJSZWFkZXI6OkxvY2F0aW9uIGJlZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE91clJlYWRlcjo6TG9jYXRpb24gZW5kKSB7Ci0gIFN0cmluZyBub3JtYWxpemVk
OwotICBub3JtYWxpemVkLnJlc2VydmUoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbmQgLSBiZWdpbikp
OwotICBPdXJSZWFkZXI6OkxvY2F0aW9uIGN1cnJlbnQgPSBiZWdpbjsKLSAgd2hpbGUgKGN1cnJl
bnQgIT0gZW5kKSB7Ci0gICAgY2hhciBjID0gKmN1cnJlbnQrKzsKLSAgICBpZiAoYyA9PSAnXHIn
KSB7Ci0gICAgICBpZiAoY3VycmVudCAhPSBlbmQgJiYgKmN1cnJlbnQgPT0gJ1xuJykKLSAgICAg
ICAgLy8gY29udmVydCBkb3MgRU9MCi0gICAgICAgICsrY3VycmVudDsKLSAgICAgIC8vIGNvbnZl
cnQgTWFjIEVPTAotICAgICAgbm9ybWFsaXplZCArPSAnXG4nOwotICAgIH0gZWxzZSB7Ci0gICAg
ICBub3JtYWxpemVkICs9IGM7Ci0gICAgfQotICB9Ci0gIHJldHVybiBub3JtYWxpemVkOwotfQot
Ci12b2lkIE91clJlYWRlcjo6YWRkQ29tbWVudChMb2NhdGlvbiBiZWdpbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSB7Ci0gIGFzc2VydChjb2xsZWN0Q29tbWVudHNf
KTsKLSAgY29uc3QgU3RyaW5nJiBub3JtYWxpemVkID0gbm9ybWFsaXplRU9MKGJlZ2luLCBlbmQp
OwotICBpZiAocGxhY2VtZW50ID09IGNvbW1lbnRBZnRlck9uU2FtZUxpbmUpIHsKLSAgICBhc3Nl
cnQobGFzdFZhbHVlXyAhPSBudWxscHRyKTsKLSAgICBsYXN0VmFsdWVfLT5zZXRDb21tZW50KG5v
cm1hbGl6ZWQsIHBsYWNlbWVudCk7Ci0gIH0gZWxzZSB7Ci0gICAgY29tbWVudHNCZWZvcmVfICs9
IG5vcm1hbGl6ZWQ7Ci0gIH0KLX0KLQotYm9vbCBPdXJSZWFkZXI6OnJlYWRDU3R5bGVDb21tZW50
KCkgewotICB3aGlsZSAoKGN1cnJlbnRfICsgMSkgPCBlbmRfKSB7Ci0gICAgQ2hhciBjID0gZ2V0
TmV4dENoYXIoKTsKLSAgICBpZiAoYyA9PSAnKicgJiYgKmN1cnJlbnRfID09ICcvJykKLSAgICAg
IGJyZWFrOwotICB9Ci0gIHJldHVybiBnZXROZXh0Q2hhcigpID09ICcvJzsKLX0KLQotYm9vbCBP
dXJSZWFkZXI6OnJlYWRDcHBTdHlsZUNvbW1lbnQoKSB7Ci0gIHdoaWxlIChjdXJyZW50XyAhPSBl
bmRfKSB7Ci0gICAgQ2hhciBjID0gZ2V0TmV4dENoYXIoKTsKLSAgICBpZiAoYyA9PSAnXG4nKQot
ICAgICAgYnJlYWs7Ci0gICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgLy8gQ29uc3VtZSBET1Mg
RU9MLiBJdCB3aWxsIGJlIG5vcm1hbGl6ZWQgaW4gYWRkQ29tbWVudC4KLSAgICAgIGlmIChjdXJy
ZW50XyAhPSBlbmRfICYmICpjdXJyZW50XyA9PSAnXG4nKQotICAgICAgICBnZXROZXh0Q2hhcigp
OwotICAgICAgLy8gQnJlYWsgb24gTW9jIE9TIDkgRU9MLgotICAgICAgYnJlYWs7Ci0gICAgfQot
ICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE91clJlYWRlcjo6cmVhZE51bWJlcihib29s
IGNoZWNrSW5mKSB7Ci0gIGNvbnN0IGNoYXIqIHAgPSBjdXJyZW50XzsKLSAgaWYgKGNoZWNrSW5m
ICYmIHAgIT0gZW5kXyAmJiAqcCA9PSAnSScpIHsKLSAgICBjdXJyZW50XyA9ICsrcDsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIH0KLSAgY2hhciBjID0gJzAnOyAvLyBzdG9wZ2FwIGZvciBhbHJlYWR5
IGNvbnN1bWVkIGNoYXJhY3RlcgotICAvLyBpbnRlZ3JhbCBwYXJ0Ci0gIHdoaWxlIChjID49ICcw
JyAmJiBjIDw9ICc5JykKLSAgICBjID0gKGN1cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6ICdc
MCc7Ci0gIC8vIGZyYWN0aW9uYWwgcGFydAotICBpZiAoYyA9PSAnLicpIHsKLSAgICBjID0gKGN1
cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6ICdcMCc7Ci0gICAgd2hpbGUgKGMgPj0gJzAnICYm
IGMgPD0gJzknKQotICAgICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAnXDAn
OwotICB9Ci0gIC8vIGV4cG9uZW50aWFsIHBhcnQKLSAgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0Un
KSB7Ci0gICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAnXDAnOwotICAgIGlm
IChjID09ICcrJyB8fCBjID09ICctJykKLSAgICAgIGMgPSAoY3VycmVudF8gPSBwKSA8IGVuZF8g
PyAqcCsrIDogJ1wwJzsKLSAgICB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICBj
ID0gKGN1cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6ICdcMCc7Ci0gIH0KLSAgcmV0dXJuIHRy
dWU7Ci19Ci1ib29sIE91clJlYWRlcjo6cmVhZFN0cmluZygpIHsKLSAgQ2hhciBjID0gMDsKLSAg
d2hpbGUgKGN1cnJlbnRfICE9IGVuZF8pIHsKLSAgICBjID0gZ2V0TmV4dENoYXIoKTsKLSAgICBp
ZiAoYyA9PSAnXFwnKQotICAgICAgZ2V0TmV4dENoYXIoKTsKLSAgICBlbHNlIGlmIChjID09ICci
JykKLSAgICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBjID09ICciJzsKLX0KLQotYm9vbCBPdXJS
ZWFkZXI6OnJlYWRTdHJpbmdTaW5nbGVRdW90ZSgpIHsKLSAgQ2hhciBjID0gMDsKLSAgd2hpbGUg
KGN1cnJlbnRfICE9IGVuZF8pIHsKLSAgICBjID0gZ2V0TmV4dENoYXIoKTsKLSAgICBpZiAoYyA9
PSAnXFwnKQotICAgICAgZ2V0TmV4dENoYXIoKTsKLSAgICBlbHNlIGlmIChjID09ICdcJycpCi0g
ICAgICBicmVhazsKLSAgfQotICByZXR1cm4gYyA9PSAnXCcnOwotfQotCi1ib29sIE91clJlYWRl
cjo6cmVhZE9iamVjdChUb2tlbiYgdG9rZW4pIHsKLSAgVG9rZW4gdG9rZW5OYW1lOwotICBTdHJp
bmcgbmFtZTsKLSAgVmFsdWUgaW5pdChvYmplY3RWYWx1ZSk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnN3
YXBQYXlsb2FkKGluaXQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFydCh0b2tlbi5z
dGFydF8gLSBiZWdpbl8pOwotICB3aGlsZSAocmVhZFRva2VuKHRva2VuTmFtZSkpIHsKLSAgICBi
b29sIGluaXRpYWxUb2tlbk9rID0gdHJ1ZTsKLSAgICB3aGlsZSAodG9rZW5OYW1lLnR5cGVfID09
IHRva2VuQ29tbWVudCAmJiBpbml0aWFsVG9rZW5PaykKLSAgICAgIGluaXRpYWxUb2tlbk9rID0g
cmVhZFRva2VuKHRva2VuTmFtZSk7Ci0gICAgaWYgKCFpbml0aWFsVG9rZW5PaykKLSAgICAgIGJy
ZWFrOwotICAgIGlmICh0b2tlbk5hbWUudHlwZV8gPT0gdG9rZW5PYmplY3RFbmQgJiYgbmFtZS5l
bXB0eSgpKSAvLyBlbXB0eSBvYmplY3QKLSAgICAgIHJldHVybiB0cnVlOwotICAgIG5hbWUuY2xl
YXIoKTsKLSAgICBpZiAodG9rZW5OYW1lLnR5cGVfID09IHRva2VuU3RyaW5nKSB7Ci0gICAgICBp
ZiAoIWRlY29kZVN0cmluZyh0b2tlbk5hbWUsIG5hbWUpKQotICAgICAgICByZXR1cm4gcmVjb3Zl
ckZyb21FcnJvcih0b2tlbk9iamVjdEVuZCk7Ci0gICAgfSBlbHNlIGlmICh0b2tlbk5hbWUudHlw
ZV8gPT0gdG9rZW5OdW1iZXIgJiYgZmVhdHVyZXNfLmFsbG93TnVtZXJpY0tleXNfKSB7Ci0gICAg
ICBWYWx1ZSBudW1iZXJOYW1lOwotICAgICAgaWYgKCFkZWNvZGVOdW1iZXIodG9rZW5OYW1lLCBu
dW1iZXJOYW1lKSkKLSAgICAgICAgcmV0dXJuIHJlY292ZXJGcm9tRXJyb3IodG9rZW5PYmplY3RF
bmQpOwotICAgICAgbmFtZSA9IG51bWJlck5hbWUuYXNTdHJpbmcoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChuYW1lLmxlbmd0aCgpID49ICgxVSA8PCAzMCkp
Ci0gICAgICB0aHJvd1J1bnRpbWVFcnJvcigia2V5bGVuZ3RoID49IDJeMzAiKTsKLSAgICBpZiAo
ZmVhdHVyZXNfLnJlamVjdER1cEtleXNfICYmIGN1cnJlbnRWYWx1ZSgpLmlzTWVtYmVyKG5hbWUp
KSB7Ci0gICAgICBTdHJpbmcgbXNnID0gIkR1cGxpY2F0ZSBrZXk6ICciICsgbmFtZSArICInIjsK
LSAgICAgIHJldHVybiBhZGRFcnJvckFuZFJlY292ZXIobXNnLCB0b2tlbk5hbWUsIHRva2VuT2Jq
ZWN0RW5kKTsKLSAgICB9Ci0KLSAgICBUb2tlbiBjb2xvbjsKLSAgICBpZiAoIXJlYWRUb2tlbihj
b2xvbikgfHwgY29sb24udHlwZV8gIT0gdG9rZW5NZW1iZXJTZXBhcmF0b3IpIHsKLSAgICAgIHJl
dHVybiBhZGRFcnJvckFuZFJlY292ZXIoIk1pc3NpbmcgJzonIGFmdGVyIG9iamVjdCBtZW1iZXIg
bmFtZSIsIGNvbG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbk9iamVj
dEVuZCk7Ci0gICAgfQotICAgIFZhbHVlJiB2YWx1ZSA9IGN1cnJlbnRWYWx1ZSgpW25hbWVdOwot
ICAgIG5vZGVzXy5wdXNoKCZ2YWx1ZSk7Ci0gICAgYm9vbCBvayA9IHJlYWRWYWx1ZSgpOwotICAg
IG5vZGVzXy5wb3AoKTsKLSAgICBpZiAoIW9rKSAvLyBlcnJvciBhbHJlYWR5IHNldAotICAgICAg
cmV0dXJuIHJlY292ZXJGcm9tRXJyb3IodG9rZW5PYmplY3RFbmQpOwotCi0gICAgVG9rZW4gY29t
bWE7Ci0gICAgaWYgKCFyZWFkVG9rZW4oY29tbWEpIHx8Ci0gICAgICAgIChjb21tYS50eXBlXyAh
PSB0b2tlbk9iamVjdEVuZCAmJiBjb21tYS50eXBlXyAhPSB0b2tlbkFycmF5U2VwYXJhdG9yICYm
Ci0gICAgICAgICBjb21tYS50eXBlXyAhPSB0b2tlbkNvbW1lbnQpKSB7Ci0gICAgICByZXR1cm4g
YWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICcsJyBvciAnfScgaW4gb2JqZWN0IGRlY2xhcmF0
aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWEsIHRva2VuT2JqZWN0
RW5kKTsKLSAgICB9Ci0gICAgYm9vbCBmaW5hbGl6ZVRva2VuT2sgPSB0cnVlOwotICAgIHdoaWxl
IChjb21tYS50eXBlXyA9PSB0b2tlbkNvbW1lbnQgJiYgZmluYWxpemVUb2tlbk9rKQotICAgICAg
ZmluYWxpemVUb2tlbk9rID0gcmVhZFRva2VuKGNvbW1hKTsKLSAgICBpZiAoY29tbWEudHlwZV8g
PT0gdG9rZW5PYmplY3RFbmQpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICByZXR1cm4gYWRk
RXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICd9JyBvciBvYmplY3QgbWVtYmVyIG5hbWUiLCB0b2tl
bk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5PYmplY3RFbmQpOwotfQot
Ci1ib29sIE91clJlYWRlcjo6cmVhZEFycmF5KFRva2VuJiB0b2tlbikgewotICBWYWx1ZSBpbml0
KGFycmF5VmFsdWUpOwotICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZChpbml0KTsKLSAgY3Vy
cmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgc2tp
cFNwYWNlcygpOwotICBpZiAoY3VycmVudF8gIT0gZW5kXyAmJiAqY3VycmVudF8gPT0gJ10nKSAv
LyBlbXB0eSBhcnJheQotICB7Ci0gICAgVG9rZW4gZW5kQXJyYXk7Ci0gICAgcmVhZFRva2VuKGVu
ZEFycmF5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICBpbnQgaW5kZXggPSAwOwotICBmb3Ig
KDs7KSB7Ci0gICAgVmFsdWUmIHZhbHVlID0gY3VycmVudFZhbHVlKClbaW5kZXgrK107Ci0gICAg
bm9kZXNfLnB1c2goJnZhbHVlKTsKLSAgICBib29sIG9rID0gcmVhZFZhbHVlKCk7Ci0gICAgbm9k
ZXNfLnBvcCgpOwotICAgIGlmICghb2spIC8vIGVycm9yIGFscmVhZHkgc2V0Ci0gICAgICByZXR1
cm4gcmVjb3ZlckZyb21FcnJvcih0b2tlbkFycmF5RW5kKTsKLQotICAgIFRva2VuIGN1cnJlbnRU
b2tlbjsKLSAgICAvLyBBY2NlcHQgQ29tbWVudCBhZnRlciBsYXN0IGl0ZW0gaW4gdGhlIGFycmF5
LgotICAgIG9rID0gcmVhZFRva2VuKGN1cnJlbnRUb2tlbik7Ci0gICAgd2hpbGUgKGN1cnJlbnRU
b2tlbi50eXBlXyA9PSB0b2tlbkNvbW1lbnQgJiYgb2spIHsKLSAgICAgIG9rID0gcmVhZFRva2Vu
KGN1cnJlbnRUb2tlbik7Ci0gICAgfQotICAgIGJvb2wgYmFkVG9rZW5UeXBlID0gKGN1cnJlbnRU
b2tlbi50eXBlXyAhPSB0b2tlbkFycmF5U2VwYXJhdG9yICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudFRva2VuLnR5cGVfICE9IHRva2VuQXJyYXlFbmQpOwotICAgIGlmICghb2sg
fHwgYmFkVG9rZW5UeXBlKSB7Ci0gICAgICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNz
aW5nICcsJyBvciAnXScgaW4gYXJyYXkgZGVjbGFyYXRpb24iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50VG9rZW4sIHRva2VuQXJyYXlFbmQpOwotICAgIH0KLSAgICBp
ZiAoY3VycmVudFRva2VuLnR5cGVfID09IHRva2VuQXJyYXlFbmQpCi0gICAgICBicmVhazsKLSAg
fQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OmRlY29kZU51bWJlcihUb2tl
biYgdG9rZW4pIHsKLSAgVmFsdWUgZGVjb2RlZDsKLSAgaWYgKCFkZWNvZGVOdW1iZXIodG9rZW4s
IGRlY29kZWQpKQotICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxv
YWQoZGVjb2RlZCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0
XyAtIGJlZ2luXyk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8g
LSBiZWdpbl8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OmRlY29kZU51
bWJlcihUb2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKSB7Ci0gIC8vIEF0dGVtcHRzIHRvIHBh
cnNlIHRoZSBudW1iZXIgYXMgYW4gaW50ZWdlci4gSWYgdGhlIG51bWJlciBpcwotICAvLyBsYXJn
ZXIgdGhhbiB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgdmFsdWUgb2YgYW4gaW50ZWdlciB0aGVuCi0g
IC8vIHdlIGRlY29kZSB0aGUgbnVtYmVyIGFzIGEgZG91YmxlLgotICBMb2NhdGlvbiBjdXJyZW50
ID0gdG9rZW4uc3RhcnRfOwotICBib29sIGlzTmVnYXRpdmUgPSAqY3VycmVudCA9PSAnLSc7Ci0g
IGlmIChpc05lZ2F0aXZlKQotICAgICsrY3VycmVudDsKLQotICAvLyBUT0RPKGlzc3VlICM5NjAp
OiBDaGFuZ2UgdG8gY29uc3RleHByCi0gIHN0YXRpYyBjb25zdCBhdXRvIHBvc2l0aXZlX3RocmVz
aG9sZCA9IFZhbHVlOjptYXhMYXJnZXN0VUludCAvIDEwOwotICBzdGF0aWMgY29uc3QgYXV0byBw
b3NpdGl2ZV9sYXN0X2RpZ2l0ID0gVmFsdWU6Om1heExhcmdlc3RVSW50ICUgMTA7Ci0gIHN0YXRp
YyBjb25zdCBhdXRvIG5lZ2F0aXZlX3RocmVzaG9sZCA9Ci0gICAgICBWYWx1ZTo6TGFyZ2VzdFVJ
bnQoVmFsdWU6Om1pbkxhcmdlc3RJbnQpIC8gMTA7Ci0gIHN0YXRpYyBjb25zdCBhdXRvIG5lZ2F0
aXZlX2xhc3RfZGlnaXQgPQotICAgICAgVmFsdWU6Okxhcmdlc3RVSW50KFZhbHVlOjptaW5MYXJn
ZXN0SW50KSAlIDEwOwotCi0gIGNvbnN0IGF1dG8gdGhyZXNob2xkID0gaXNOZWdhdGl2ZSA/IG5l
Z2F0aXZlX3RocmVzaG9sZCA6IHBvc2l0aXZlX3RocmVzaG9sZDsKLSAgY29uc3QgYXV0byBsYXN0
X2RpZ2l0ID0KLSAgICAgIGlzTmVnYXRpdmUgPyBuZWdhdGl2ZV9sYXN0X2RpZ2l0IDogcG9zaXRp
dmVfbGFzdF9kaWdpdDsKLQotICBWYWx1ZTo6TGFyZ2VzdFVJbnQgdmFsdWUgPSAwOwotICB3aGls
ZSAoY3VycmVudCA8IHRva2VuLmVuZF8pIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAg
IGlmIChjIDwgJzAnIHx8IGMgPiAnOScpCi0gICAgICByZXR1cm4gZGVjb2RlRG91YmxlKHRva2Vu
LCBkZWNvZGVkKTsKLQotICAgIGNvbnN0IGF1dG8gZGlnaXQoc3RhdGljX2Nhc3Q8VmFsdWU6OlVJ
bnQ+KGMgLSAnMCcpKTsKLSAgICBpZiAodmFsdWUgPj0gdGhyZXNob2xkKSB7Ci0gICAgICAvLyBX
ZSd2ZSBoaXQgb3IgZXhjZWVkZWQgdGhlIG1heCB2YWx1ZSBkaXZpZGVkIGJ5IDEwIChyb3VuZGVk
IGRvd24pLiBJZgotICAgICAgLy8gYSkgd2UndmUgb25seSBqdXN0IHRvdWNoZWQgdGhlIGxpbWl0
LCBtZWFpbmcgdmFsdWUgPT0gdGhyZXNob2xkLAotICAgICAgLy8gYikgdGhpcyBpcyB0aGUgbGFz
dCBkaWdpdCwgb3IKLSAgICAgIC8vIGMpIGl0J3Mgc21hbGwgZW5vdWdoIHRvIGZpdCBpbiB0aGF0
IHJvdW5kaW5nIGRlbHRhLCB3ZSdyZSBva2F5LgotICAgICAgLy8gT3RoZXJ3aXNlIHRyZWF0IHRo
aXMgbnVtYmVyIGFzIGEgZG91YmxlIHRvIGF2b2lkIG92ZXJmbG93LgotICAgICAgaWYgKHZhbHVl
ID4gdGhyZXNob2xkIHx8IGN1cnJlbnQgIT0gdG9rZW4uZW5kXyB8fCBkaWdpdCA+IGxhc3RfZGln
aXQpIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZURvdWJsZSh0b2tlbiwgZGVjb2RlZCk7Ci0gICAg
ICB9Ci0gICAgfQotICAgIHZhbHVlID0gdmFsdWUgKiAxMCArIGRpZ2l0OwotICB9Ci0KLSAgaWYg
KGlzTmVnYXRpdmUpCi0gICAgZGVjb2RlZCA9IC1WYWx1ZTo6TGFyZ2VzdEludCh2YWx1ZSk7Ci0g
IGVsc2UgaWYgKHZhbHVlIDw9IFZhbHVlOjpMYXJnZXN0VUludChWYWx1ZTo6bWF4TGFyZ2VzdElu
dCkpCi0gICAgZGVjb2RlZCA9IFZhbHVlOjpMYXJnZXN0SW50KHZhbHVlKTsKLSAgZWxzZQotICAg
IGRlY29kZWQgPSB2YWx1ZTsKLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6
OmRlY29kZURvdWJsZShUb2tlbiYgdG9rZW4pIHsKLSAgVmFsdWUgZGVjb2RlZDsKLSAgaWYgKCFk
ZWNvZGVEb3VibGUodG9rZW4sIGRlY29kZWQpKQotICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVu
dFZhbHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNl
dFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNl
dExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBP
dXJSZWFkZXI6OmRlY29kZURvdWJsZShUb2tlbiYgdG9rZW4sIFZhbHVlJiBkZWNvZGVkKSB7Ci0g
IGRvdWJsZSB2YWx1ZSA9IDA7Ci0gIGNvbnN0IGludCBidWZmZXJTaXplID0gMzI7Ci0gIGludCBj
b3VudDsKLSAgcHRyZGlmZl90IGNvbnN0IGxlbmd0aCA9IHRva2VuLmVuZF8gLSB0b2tlbi5zdGFy
dF87Ci0KLSAgLy8gU2FuaXR5IGNoZWNrIHRvIGF2b2lkIGJ1ZmZlciBvdmVyZmxvdyBleHBsb2l0
cy4KLSAgaWYgKGxlbmd0aCA8IDApIHsKLSAgICByZXR1cm4gYWRkRXJyb3IoIlVuYWJsZSB0byBw
YXJzZSB0b2tlbiBsZW5ndGgiLCB0b2tlbik7Ci0gIH0KLSAgYXV0byBjb25zdCB1bGVuZ3RoID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpOwotCi0gIC8vIEF2b2lkIHVzaW5nIGEgc3RyaW5n
IGNvbnN0YW50IGZvciB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIGdpdmVuIHRvCi0gIC8vIHNz
Y2FuZiwgYXMgdGhpcyBjYW4gY2F1c2UgaGFyZCB0byBkZWJ1ZyBjcmFzaGVzIG9uIE9TIFguIFNl
ZSBoZXJlIGZvciBtb3JlCi0gIC8vIGluZm86Ci0gIC8vCi0gIC8vICAgICBodHRwOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jRE9DVU1FTlRBVElPTi9EZXZlbG9wZXJUb29scy9n
Y2MtNC4wLjEvZ2NjL0luY29tcGF0aWJpbGl0aWVzLmh0bWwKLSAgY2hhciBmb3JtYXRbXSA9ICIl
bGYiOwotCi0gIGlmIChsZW5ndGggPD0gYnVmZmVyU2l6ZSkgewotICAgIENoYXIgYnVmZmVyW2J1
ZmZlclNpemUgKyAxXTsKLSAgICBtZW1jcHkoYnVmZmVyLCB0b2tlbi5zdGFydF8sIHVsZW5ndGgp
OwotICAgIGJ1ZmZlcltsZW5ndGhdID0gMDsKLSAgICBmaXhOdW1lcmljTG9jYWxlSW5wdXQoYnVm
ZmVyLCBidWZmZXIgKyBsZW5ndGgpOwotICAgIGNvdW50ID0gc3NjYW5mKGJ1ZmZlciwgZm9ybWF0
LCAmdmFsdWUpOwotICB9IGVsc2UgewotICAgIFN0cmluZyBidWZmZXIodG9rZW4uc3RhcnRfLCB0
b2tlbi5lbmRfKTsKLSAgICBjb3VudCA9IHNzY2FuZihidWZmZXIuY19zdHIoKSwgZm9ybWF0LCAm
dmFsdWUpOwotICB9Ci0KLSAgaWYgKGNvdW50ICE9IDEpCi0gICAgcmV0dXJuIGFkZEVycm9yKAot
ICAgICAgICAiJyIgKyBTdHJpbmcodG9rZW4uc3RhcnRfLCB0b2tlbi5lbmRfKSArICInIGlzIG5v
dCBhIG51bWJlci4iLCB0b2tlbik7Ci0gIGRlY29kZWQgPSB2YWx1ZTsKLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpkZWNvZGVTdHJpbmcoVG9rZW4mIHRva2VuKSB7Ci0gIFN0
cmluZyBkZWNvZGVkX3N0cmluZzsKLSAgaWYgKCFkZWNvZGVTdHJpbmcodG9rZW4sIGRlY29kZWRf
c3RyaW5nKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIFZhbHVlIGRlY29kZWQoZGVjb2RlZF9zdHJp
bmcpOwotICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZChkZWNvZGVkKTsKLSAgY3VycmVudFZh
bHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgY3VycmVudFZh
bHVlKCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIE91clJlYWRlcjo6ZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbiwgU3RyaW5n
JiBkZWNvZGVkKSB7Ci0gIGRlY29kZWQucmVzZXJ2ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHRva2Vu
LmVuZF8gLSB0b2tlbi5zdGFydF8gLSAyKSk7Ci0gIExvY2F0aW9uIGN1cnJlbnQgPSB0b2tlbi5z
dGFydF8gKyAxOyAvLyBza2lwICciJwotICBMb2NhdGlvbiBlbmQgPSB0b2tlbi5lbmRfIC0gMTsg
ICAgICAgLy8gZG8gbm90IGluY2x1ZGUgJyInCi0gIHdoaWxlIChjdXJyZW50ICE9IGVuZCkgewot
ICAgIENoYXIgYyA9ICpjdXJyZW50Kys7Ci0gICAgaWYgKGMgPT0gJyInKQotICAgICAgYnJlYWs7
Ci0gICAgZWxzZSBpZiAoYyA9PSAnXFwnKSB7Ci0gICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0g
ICAgICAgIHJldHVybiBhZGRFcnJvcigiRW1wdHkgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyIs
IHRva2VuLCBjdXJyZW50KTsKLSAgICAgIENoYXIgZXNjYXBlID0gKmN1cnJlbnQrKzsKLSAgICAg
IHN3aXRjaCAoZXNjYXBlKSB7Ci0gICAgICBjYXNlICciJzoKLSAgICAgICAgZGVjb2RlZCArPSAn
Iic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnLyc6Ci0gICAgICAgIGRlY29kZWQgKz0g
Jy8nOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgZGVjb2RlZCAr
PSAnXFwnOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2InOgotICAgICAgICBkZWNvZGVk
ICs9ICdcYic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnZic6Ci0gICAgICAgIGRlY29k
ZWQgKz0gJ1xmJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICduJzoKLSAgICAgICAgZGVj
b2RlZCArPSAnXG4nOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3InOgotICAgICAgICBk
ZWNvZGVkICs9ICdccic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAndCc6Ci0gICAgICAg
IGRlY29kZWQgKz0gJ1x0JzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICd1JzogewotICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5pY29kZTsKLSAgICAgICAgaWYgKCFkZWNvZGVVbmljb2RlQ29k
ZVBvaW50KHRva2VuLCBjdXJyZW50LCBlbmQsIHVuaWNvZGUpKQotICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZGVjb2RlZCArPSBjb2RlUG9pbnRUb1VURjgodW5pY29kZSk7Ci0gICAg
ICB9IGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGFkZEVycm9yKCJCYWQg
ZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyIsIHRva2VuLCBjdXJyZW50KTsKLSAgICAgIH0KLSAg
ICB9IGVsc2UgewotICAgICAgZGVjb2RlZCArPSBjOwotICAgIH0KLSAgfQotICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OmRlY29kZVVuaWNvZGVDb2RlUG9pbnQoVG9rZW4mIHRv
a2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24mIGN1
cnJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBl
bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQm
IHVuaWNvZGUpIHsKLQotICBpZiAoIWRlY29kZVVuaWNvZGVFc2NhcGVTZXF1ZW5jZSh0b2tlbiwg
Y3VycmVudCwgZW5kLCB1bmljb2RlKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICh1bmljb2Rl
ID49IDB4RDgwMCAmJiB1bmljb2RlIDw9IDB4REJGRikgewotICAgIC8vIHN1cnJvZ2F0ZSBwYWly
cwotICAgIGlmIChlbmQgLSBjdXJyZW50IDwgNikKLSAgICAgIHJldHVybiBhZGRFcnJvcigKLSAg
ICAgICAgICAiYWRkaXRpb25hbCBzaXggY2hhcmFjdGVycyBleHBlY3RlZCB0byBwYXJzZSB1bmlj
b2RlIHN1cnJvZ2F0ZSBwYWlyLiIsCi0gICAgICAgICAgdG9rZW4sIGN1cnJlbnQpOwotICAgIGlm
ICgqKGN1cnJlbnQrKykgPT0gJ1xcJyAmJiAqKGN1cnJlbnQrKykgPT0gJ3UnKSB7Ci0gICAgICB1
bnNpZ25lZCBpbnQgc3Vycm9nYXRlUGFpcjsKLSAgICAgIGlmIChkZWNvZGVVbmljb2RlRXNjYXBl
U2VxdWVuY2UodG9rZW4sIGN1cnJlbnQsIGVuZCwgc3Vycm9nYXRlUGFpcikpIHsKLSAgICAgICAg
dW5pY29kZSA9IDB4MTAwMDAgKyAoKHVuaWNvZGUgJiAweDNGRikgPDwgMTApICsgKHN1cnJvZ2F0
ZVBhaXIgJiAweDNGRik7Ci0gICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0gZWxzZQotICAgICAgcmV0dXJuIGFkZEVycm9yKCJleHBlY3RpbmcgYW5vdGhlciBcXHUgdG9r
ZW4gdG8gYmVnaW4gdGhlIHNlY29uZCBoYWxmIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAi
YSB1bmljb2RlIHN1cnJvZ2F0ZSBwYWlyIiwKLSAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwg
Y3VycmVudCk7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpkZWNv
ZGVVbmljb2RlRXNjYXBlU2VxdWVuY2UoVG9rZW4mIHRva2VuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gZW5kLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQmIHJldF91bmlj
b2RlKSB7Ci0gIGlmIChlbmQgLSBjdXJyZW50IDwgNCkKLSAgICByZXR1cm4gYWRkRXJyb3IoCi0g
ICAgICAgICJCYWQgdW5pY29kZSBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nOiBmb3VyIGRpZ2l0
cyBleHBlY3RlZC4iLCB0b2tlbiwKLSAgICAgICAgY3VycmVudCk7Ci0gIGludCB1bmljb2RlID0g
MDsKLSAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKLSAgICBDaGFy
IGMgPSAqY3VycmVudCsrOwotICAgIHVuaWNvZGUgKj0gMTY7Ci0gICAgaWYgKGMgPj0gJzAnICYm
IGMgPD0gJzknKQotICAgICAgdW5pY29kZSArPSBjIC0gJzAnOwotICAgIGVsc2UgaWYgKGMgPj0g
J2EnICYmIGMgPD0gJ2YnKQotICAgICAgdW5pY29kZSArPSBjIC0gJ2EnICsgMTA7Ci0gICAgZWxz
ZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpCi0gICAgICB1bmljb2RlICs9IGMgLSAnQScgKyAx
MDsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gYWRkRXJyb3IoCi0gICAgICAgICAgIkJhZCB1bmlj
b2RlIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmc6IGhleGFkZWNpbWFsIGRpZ2l0IGV4cGVjdGVk
LiIsCi0gICAgICAgICAgdG9rZW4sIGN1cnJlbnQpOwotICB9Ci0gIHJldF91bmljb2RlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmljb2RlKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgT3VyUmVhZGVyOjphZGRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFRva2VuJiB0b2tl
biwgTG9jYXRpb24gZXh0cmEpIHsKLSAgRXJyb3JJbmZvIGluZm87Ci0gIGluZm8udG9rZW5fID0g
dG9rZW47Ci0gIGluZm8ubWVzc2FnZV8gPSBtZXNzYWdlOwotICBpbmZvLmV4dHJhXyA9IGV4dHJh
OwotICBlcnJvcnNfLnB1c2hfYmFjayhpbmZvKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29s
IE91clJlYWRlcjo6cmVjb3ZlckZyb21FcnJvcihUb2tlblR5cGUgc2tpcFVudGlsVG9rZW4pIHsK
LSAgc2l6ZV90IGVycm9yQ291bnQgPSBlcnJvcnNfLnNpemUoKTsKLSAgVG9rZW4gc2tpcDsKLSAg
Zm9yICg7OykgewotICAgIGlmICghcmVhZFRva2VuKHNraXApKQotICAgICAgZXJyb3JzXy5yZXNp
emUoZXJyb3JDb3VudCk7IC8vIGRpc2NhcmQgZXJyb3JzIGNhdXNlZCBieSByZWNvdmVyeQotICAg
IGlmIChza2lwLnR5cGVfID09IHNraXBVbnRpbFRva2VuIHx8IHNraXAudHlwZV8gPT0gdG9rZW5F
bmRPZlN0cmVhbSkKLSAgICAgIGJyZWFrOwotICB9Ci0gIGVycm9yc18ucmVzaXplKGVycm9yQ291
bnQpOwotICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjphZGRFcnJvckFuZFJl
Y292ZXIoY29uc3QgU3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUb2tlbiYgdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRva2VuVHlwZSBza2lwVW50aWxUb2tlbikgewotICBhZGRFcnJvcihtZXNzYWdlLCB0b2tlbik7
Ci0gIHJldHVybiByZWNvdmVyRnJvbUVycm9yKHNraXBVbnRpbFRva2VuKTsKLX0KLQotVmFsdWUm
IE91clJlYWRlcjo6Y3VycmVudFZhbHVlKCkgeyByZXR1cm4gKihub2Rlc18udG9wKCkpOyB9Ci0K
LU91clJlYWRlcjo6Q2hhciBPdXJSZWFkZXI6OmdldE5leHRDaGFyKCkgewotICBpZiAoY3VycmVu
dF8gPT0gZW5kXykKLSAgICByZXR1cm4gMDsKLSAgcmV0dXJuICpjdXJyZW50XysrOwotfQotCi12
b2lkIE91clJlYWRlcjo6Z2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKExvY2F0aW9uIGxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgY29sdW1uKSBjb25z
dCB7Ci0gIExvY2F0aW9uIGN1cnJlbnQgPSBiZWdpbl87Ci0gIExvY2F0aW9uIGxhc3RMaW5lU3Rh
cnQgPSBjdXJyZW50OwotICBsaW5lID0gMDsKLSAgd2hpbGUgKGN1cnJlbnQgPCBsb2NhdGlvbiAm
JiBjdXJyZW50ICE9IGVuZF8pIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIGlmIChj
ID09ICdccicpIHsKLSAgICAgIGlmICgqY3VycmVudCA9PSAnXG4nKQotICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICBsYXN0TGluZVN0YXJ0ID0gY3VycmVudDsKLSAgICAgICsrbGluZTsKLSAgICB9
IGVsc2UgaWYgKGMgPT0gJ1xuJykgewotICAgICAgbGFzdExpbmVTdGFydCA9IGN1cnJlbnQ7Ci0g
ICAgICArK2xpbmU7Ci0gICAgfQotICB9Ci0gIC8vIGNvbHVtbiAmIGxpbmUgc3RhcnQgYXQgMQot
ICBjb2x1bW4gPSBpbnQobG9jYXRpb24gLSBsYXN0TGluZVN0YXJ0KSArIDE7Ci0gICsrbGluZTsK
LX0KLQotU3RyaW5nIE91clJlYWRlcjo6Z2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKExvY2F0aW9u
IGxvY2F0aW9uKSBjb25zdCB7Ci0gIGludCBsaW5lLCBjb2x1bW47Ci0gIGdldExvY2F0aW9uTGlu
ZUFuZENvbHVtbihsb2NhdGlvbiwgbGluZSwgY29sdW1uKTsKLSAgY2hhciBidWZmZXJbMTggKyAx
NiArIDE2ICsgMV07Ci0gIGpzb25jcHBfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
IkxpbmUgJWQsIENvbHVtbiAlZCIsIGxpbmUsIGNvbHVtbik7Ci0gIHJldHVybiBidWZmZXI7Ci19
Ci0KLVN0cmluZyBPdXJSZWFkZXI6OmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKSBjb25zdCB7
Ci0gIFN0cmluZyBmb3JtYXR0ZWRNZXNzYWdlOwotICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDog
ZXJyb3JzXykgewotICAgIGZvcm1hdHRlZE1lc3NhZ2UgKz0KLSAgICAgICAgIiogIiArIGdldExv
Y2F0aW9uTGluZUFuZENvbHVtbihlcnJvci50b2tlbl8uc3RhcnRfKSArICJcbiI7Ci0gICAgZm9y
bWF0dGVkTWVzc2FnZSArPSAiICAiICsgZXJyb3IubWVzc2FnZV8gKyAiXG4iOwotICAgIGlmIChl
cnJvci5leHRyYV8pCi0gICAgICBmb3JtYXR0ZWRNZXNzYWdlICs9Ci0gICAgICAgICAgIlNlZSAi
ICsgZ2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKGVycm9yLmV4dHJhXykgKyAiIGZvciBkZXRhaWwu
XG4iOwotICB9Ci0gIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlOwotfQotCi1zdGQ6OnZlY3RvcjxP
dXJSZWFkZXI6OlN0cnVjdHVyZWRFcnJvcj4gT3VyUmVhZGVyOjpnZXRTdHJ1Y3R1cmVkRXJyb3Jz
KCkgY29uc3QgewotICBzdGQ6OnZlY3RvcjxPdXJSZWFkZXI6OlN0cnVjdHVyZWRFcnJvcj4gYWxs
RXJyb3JzOwotICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzXykgewotICAgIE91clJl
YWRlcjo6U3RydWN0dXJlZEVycm9yIHN0cnVjdHVyZWQ7Ci0gICAgc3RydWN0dXJlZC5vZmZzZXRf
c3RhcnQgPSBlcnJvci50b2tlbl8uc3RhcnRfIC0gYmVnaW5fOwotICAgIHN0cnVjdHVyZWQub2Zm
c2V0X2xpbWl0ID0gZXJyb3IudG9rZW5fLmVuZF8gLSBiZWdpbl87Ci0gICAgc3RydWN0dXJlZC5t
ZXNzYWdlID0gZXJyb3IubWVzc2FnZV87Ci0gICAgYWxsRXJyb3JzLnB1c2hfYmFjayhzdHJ1Y3R1
cmVkKTsKLSAgfQotICByZXR1cm4gYWxsRXJyb3JzOwotfQotCi1ib29sIE91clJlYWRlcjo6cHVz
aEVycm9yKGNvbnN0IFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7Ci0gIHB0
cmRpZmZfdCBsZW5ndGggPSBlbmRfIC0gYmVnaW5fOwotICBpZiAodmFsdWUuZ2V0T2Zmc2V0U3Rh
cnQoKSA+IGxlbmd0aCB8fCB2YWx1ZS5nZXRPZmZzZXRMaW1pdCgpID4gbGVuZ3RoKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgVG9rZW4gdG9rZW47Ci0gIHRva2VuLnR5cGVfID0gdG9rZW5FcnJvcjsK
LSAgdG9rZW4uc3RhcnRfID0gYmVnaW5fICsgdmFsdWUuZ2V0T2Zmc2V0U3RhcnQoKTsKLSAgdG9r
ZW4uZW5kXyA9IGJlZ2luXyArIHZhbHVlLmdldE9mZnNldExpbWl0KCk7Ci0gIEVycm9ySW5mbyBp
bmZvOwotICBpbmZvLnRva2VuXyA9IHRva2VuOwotICBpbmZvLm1lc3NhZ2VfID0gbWVzc2FnZTsK
LSAgaW5mby5leHRyYV8gPSBudWxscHRyOwotICBlcnJvcnNfLnB1c2hfYmFjayhpbmZvKTsKLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpwdXNoRXJyb3IoY29uc3QgVmFsdWUm
IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlJiBleHRyYSkgewotICBwdHJk
aWZmX3QgbGVuZ3RoID0gZW5kXyAtIGJlZ2luXzsKLSAgaWYgKHZhbHVlLmdldE9mZnNldFN0YXJ0
KCkgPiBsZW5ndGggfHwgdmFsdWUuZ2V0T2Zmc2V0TGltaXQoKSA+IGxlbmd0aCB8fAotICAgICAg
ZXh0cmEuZ2V0T2Zmc2V0TGltaXQoKSA+IGxlbmd0aCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIFRv
a2VuIHRva2VuOwotICB0b2tlbi50eXBlXyA9IHRva2VuRXJyb3I7Ci0gIHRva2VuLnN0YXJ0XyA9
IGJlZ2luXyArIHZhbHVlLmdldE9mZnNldFN0YXJ0KCk7Ci0gIHRva2VuLmVuZF8gPSBiZWdpbl8g
KyB2YWx1ZS5nZXRPZmZzZXRMaW1pdCgpOwotICBFcnJvckluZm8gaW5mbzsKLSAgaW5mby50b2tl
bl8gPSB0b2tlbjsKLSAgaW5mby5tZXNzYWdlXyA9IG1lc3NhZ2U7Ci0gIGluZm8uZXh0cmFfID0g
YmVnaW5fICsgZXh0cmEuZ2V0T2Zmc2V0U3RhcnQoKTsKLSAgZXJyb3JzXy5wdXNoX2JhY2soaW5m
byk7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE91clJlYWRlcjo6Z29vZCgpIGNvbnN0IHsg
cmV0dXJuIGVycm9yc18uZW1wdHkoKTsgfQotCi1jbGFzcyBPdXJDaGFyUmVhZGVyIDogcHVibGlj
IENoYXJSZWFkZXIgewotICBib29sIGNvbnN0IGNvbGxlY3RDb21tZW50c187Ci0gIE91clJlYWRl
ciByZWFkZXJfOwotCi1wdWJsaWM6Ci0gIE91ckNoYXJSZWFkZXIoYm9vbCBjb2xsZWN0Q29tbWVu
dHMsIE91ckZlYXR1cmVzIGNvbnN0JiBmZWF0dXJlcykKLSAgICAgIDogY29sbGVjdENvbW1lbnRz
Xyhjb2xsZWN0Q29tbWVudHMpLCByZWFkZXJfKGZlYXR1cmVzKSB7fQotICBib29sIHBhcnNlKGNo
YXIgY29uc3QqIGJlZ2luRG9jLAotICAgICAgICAgICAgIGNoYXIgY29uc3QqIGVuZERvYywKLSAg
ICAgICAgICAgICBWYWx1ZSogcm9vdCwKLSAgICAgICAgICAgICBTdHJpbmcqIGVycnMpIG92ZXJy
aWRlIHsKLSAgICBib29sIG9rID0gcmVhZGVyXy5wYXJzZShiZWdpbkRvYywgZW5kRG9jLCAqcm9v
dCwgY29sbGVjdENvbW1lbnRzXyk7Ci0gICAgaWYgKGVycnMpIHsKLSAgICAgICplcnJzID0gcmVh
ZGVyXy5nZXRGb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKCk7Ci0gICAgfQotICAgIHJldHVybiBvazsK
LSAgfQotfTsKLQotQ2hhclJlYWRlckJ1aWxkZXI6OkNoYXJSZWFkZXJCdWlsZGVyKCkgeyBzZXRE
ZWZhdWx0cygmc2V0dGluZ3NfKTsgfQotQ2hhclJlYWRlckJ1aWxkZXI6On5DaGFyUmVhZGVyQnVp
bGRlcigpID0gZGVmYXVsdDsKLUNoYXJSZWFkZXIqIENoYXJSZWFkZXJCdWlsZGVyOjpuZXdDaGFy
UmVhZGVyKCkgY29uc3QgewotICBib29sIGNvbGxlY3RDb21tZW50cyA9IHNldHRpbmdzX1siY29s
bGVjdENvbW1lbnRzIl0uYXNCb29sKCk7Ci0gIE91ckZlYXR1cmVzIGZlYXR1cmVzID0gT3VyRmVh
dHVyZXM6OmFsbCgpOwotICBmZWF0dXJlcy5hbGxvd0NvbW1lbnRzXyA9IHNldHRpbmdzX1siYWxs
b3dDb21tZW50cyJdLmFzQm9vbCgpOwotICBmZWF0dXJlcy5zdHJpY3RSb290XyA9IHNldHRpbmdz
X1sic3RyaWN0Um9vdCJdLmFzQm9vbCgpOwotICBmZWF0dXJlcy5hbGxvd0Ryb3BwZWROdWxsUGxh
Y2Vob2xkZXJzXyA9Ci0gICAgICBzZXR0aW5nc19bImFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRl
cnMiXS5hc0Jvb2woKTsKLSAgZmVhdHVyZXMuYWxsb3dOdW1lcmljS2V5c18gPSBzZXR0aW5nc19b
ImFsbG93TnVtZXJpY0tleXMiXS5hc0Jvb2woKTsKLSAgZmVhdHVyZXMuYWxsb3dTaW5nbGVRdW90
ZXNfID0gc2V0dGluZ3NfWyJhbGxvd1NpbmdsZVF1b3RlcyJdLmFzQm9vbCgpOwotCi0gIC8vIFN0
YWNrIGxpbWl0IGlzIGFsd2F5cyBhIHNpemVfdCwgc28gd2UgZ2V0IHRoaXMgYXMgYW4gdW5zaWdu
ZWQgaW50Ci0gIC8vIHJlZ2FyZGxlc3Mgb2YgaXQgd2UgaGF2ZSA2NC1iaXQgaW50ZWdlciBzdXBw
b3J0IGVuYWJsZWQuCi0gIGZlYXR1cmVzLnN0YWNrTGltaXRfID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzZXR0aW5nc19bInN0YWNrTGltaXQiXS5hc1VJbnQoKSk7Ci0gIGZlYXR1cmVzLmZhaWxJZkV4
dHJhXyA9IHNldHRpbmdzX1siZmFpbElmRXh0cmEiXS5hc0Jvb2woKTsKLSAgZmVhdHVyZXMucmVq
ZWN0RHVwS2V5c18gPSBzZXR0aW5nc19bInJlamVjdER1cEtleXMiXS5hc0Jvb2woKTsKLSAgZmVh
dHVyZXMuYWxsb3dTcGVjaWFsRmxvYXRzXyA9IHNldHRpbmdzX1siYWxsb3dTcGVjaWFsRmxvYXRz
Il0uYXNCb29sKCk7Ci0gIHJldHVybiBuZXcgT3VyQ2hhclJlYWRlcihjb2xsZWN0Q29tbWVudHMs
IGZlYXR1cmVzKTsKLX0KLXN0YXRpYyB2b2lkIGdldFZhbGlkUmVhZGVyS2V5cyhzdGQ6OnNldDxT
dHJpbmc+KiB2YWxpZF9rZXlzKSB7Ci0gIHZhbGlkX2tleXMtPmNsZWFyKCk7Ci0gIHZhbGlkX2tl
eXMtPmluc2VydCgiY29sbGVjdENvbW1lbnRzIik7Ci0gIHZhbGlkX2tleXMtPmluc2VydCgiYWxs
b3dDb21tZW50cyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoInN0cmljdFJvb3QiKTsKLSAgdmFs
aWRfa2V5cy0+aW5zZXJ0KCJhbGxvd0Ryb3BwZWROdWxsUGxhY2Vob2xkZXJzIik7Ci0gIHZhbGlk
X2tleXMtPmluc2VydCgiYWxsb3dOdW1lcmljS2V5cyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQo
ImFsbG93U2luZ2xlUXVvdGVzIik7Ci0gIHZhbGlkX2tleXMtPmluc2VydCgic3RhY2tMaW1pdCIp
OwotICB2YWxpZF9rZXlzLT5pbnNlcnQoImZhaWxJZkV4dHJhIik7Ci0gIHZhbGlkX2tleXMtPmlu
c2VydCgicmVqZWN0RHVwS2V5cyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoImFsbG93U3BlY2lh
bEZsb2F0cyIpOwotfQotYm9vbCBDaGFyUmVhZGVyQnVpbGRlcjo6dmFsaWRhdGUoSnNvbjo6VmFs
dWUqIGludmFsaWQpIGNvbnN0IHsKLSAgSnNvbjo6VmFsdWUgbXlfaW52YWxpZDsKLSAgaWYgKCFp
bnZhbGlkKQotICAgIGludmFsaWQgPSAmbXlfaW52YWxpZDsgLy8gc28gd2UgZG8gbm90IG5lZWQg
dG8gdGVzdCBmb3IgTlVMTAotICBKc29uOjpWYWx1ZSYgaW52ID0gKmludmFsaWQ7Ci0gIHN0ZDo6
c2V0PFN0cmluZz4gdmFsaWRfa2V5czsKLSAgZ2V0VmFsaWRSZWFkZXJLZXlzKCZ2YWxpZF9rZXlz
KTsKLSAgVmFsdWU6Ok1lbWJlcnMga2V5cyA9IHNldHRpbmdzXy5nZXRNZW1iZXJOYW1lcygpOwot
ICBzaXplX3QgbiA9IGtleXMuc2l6ZSgpOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsr
aSkgewotICAgIFN0cmluZyBjb25zdCYga2V5ID0ga2V5c1tpXTsKLSAgICBpZiAodmFsaWRfa2V5
cy5maW5kKGtleSkgPT0gdmFsaWRfa2V5cy5lbmQoKSkgewotICAgICAgaW52W2tleV0gPSBzZXR0
aW5nc19ba2V5XTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGludi5lbXB0eSgpOwotfQotVmFsdWUm
IENoYXJSZWFkZXJCdWlsZGVyOjpvcGVyYXRvcltdKGNvbnN0IFN0cmluZyYga2V5KSB7Ci0gIHJl
dHVybiBzZXR0aW5nc19ba2V5XTsKLX0KLS8vIHN0YXRpYwotdm9pZCBDaGFyUmVhZGVyQnVpbGRl
cjo6c3RyaWN0TW9kZShKc29uOjpWYWx1ZSogc2V0dGluZ3MpIHsKLSAgLy8hIFtDaGFyUmVhZGVy
QnVpbGRlclN0cmljdE1vZGVdCi0gICgqc2V0dGluZ3MpWyJhbGxvd0NvbW1lbnRzIl0gPSBmYWxz
ZTsKLSAgKCpzZXR0aW5ncylbInN0cmljdFJvb3QiXSA9IHRydWU7Ci0gICgqc2V0dGluZ3MpWyJh
bGxvd0Ryb3BwZWROdWxsUGxhY2Vob2xkZXJzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbImFs
bG93TnVtZXJpY0tleXMiXSA9IGZhbHNlOwotICAoKnNldHRpbmdzKVsiYWxsb3dTaW5nbGVRdW90
ZXMiXSA9IGZhbHNlOwotICAoKnNldHRpbmdzKVsic3RhY2tMaW1pdCJdID0gMTAwMDsKLSAgKCpz
ZXR0aW5ncylbImZhaWxJZkV4dHJhIl0gPSB0cnVlOwotICAoKnNldHRpbmdzKVsicmVqZWN0RHVw
S2V5cyJdID0gdHJ1ZTsKLSAgKCpzZXR0aW5ncylbImFsbG93U3BlY2lhbEZsb2F0cyJdID0gZmFs
c2U7Ci0gIC8vISBbQ2hhclJlYWRlckJ1aWxkZXJTdHJpY3RNb2RlXQotfQotLy8gc3RhdGljCi12
b2lkIENoYXJSZWFkZXJCdWlsZGVyOjpzZXREZWZhdWx0cyhKc29uOjpWYWx1ZSogc2V0dGluZ3Mp
IHsKLSAgLy8hIFtDaGFyUmVhZGVyQnVpbGRlckRlZmF1bHRzXQotICAoKnNldHRpbmdzKVsiY29s
bGVjdENvbW1lbnRzIl0gPSB0cnVlOwotICAoKnNldHRpbmdzKVsiYWxsb3dDb21tZW50cyJdID0g
dHJ1ZTsKLSAgKCpzZXR0aW5ncylbInN0cmljdFJvb3QiXSA9IGZhbHNlOwotICAoKnNldHRpbmdz
KVsiYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVycyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3Mp
WyJhbGxvd051bWVyaWNLZXlzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbImFsbG93U2luZ2xl
UXVvdGVzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbInN0YWNrTGltaXQiXSA9IDEwMDA7Ci0g
ICgqc2V0dGluZ3MpWyJmYWlsSWZFeHRyYSJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3MpWyJyZWpl
Y3REdXBLZXlzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbImFsbG93U3BlY2lhbEZsb2F0cyJd
ID0gZmFsc2U7Ci0gIC8vISBbQ2hhclJlYWRlckJ1aWxkZXJEZWZhdWx0c10KLX0KLQotLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gZ2xvYmFsIGZ1bmN0aW9ucwotCi1ib29s
IHBhcnNlRnJvbVN0cmVhbShDaGFyUmVhZGVyOjpGYWN0b3J5IGNvbnN0JiBmYWN0LAotICAgICAg
ICAgICAgICAgICAgICAgSVN0cmVhbSYgc2luLAotICAgICAgICAgICAgICAgICAgICAgVmFsdWUq
IHJvb3QsCi0gICAgICAgICAgICAgICAgICAgICBTdHJpbmcqIGVycnMpIHsKLSAgT1N0cmluZ1N0
cmVhbSBzc2luOwotICBzc2luIDw8IHNpbi5yZGJ1ZigpOwotICBTdHJpbmcgZG9jID0gc3Npbi5z
dHIoKTsKLSAgY2hhciBjb25zdCogYmVnaW4gPSBkb2MuZGF0YSgpOwotICBjaGFyIGNvbnN0KiBl
bmQgPSBiZWdpbiArIGRvYy5zaXplKCk7Ci0gIC8vIE5vdGUgdGhhdCB3ZSBkbyBub3QgYWN0dWFs
bHkgbmVlZCBhIG51bGwtdGVybWluYXRvci4KLSAgQ2hhclJlYWRlclB0ciBjb25zdCByZWFkZXIo
ZmFjdC5uZXdDaGFyUmVhZGVyKCkpOwotICByZXR1cm4gcmVhZGVyLT5wYXJzZShiZWdpbiwgZW5k
LCByb290LCBlcnJzKTsKLX0KLQotSVN0cmVhbSYgb3BlcmF0b3I+PihJU3RyZWFtJiBzaW4sIFZh
bHVlJiByb290KSB7Ci0gIENoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIFN0cmluZyBlcnJzOwotICBi
b29sIG9rID0gcGFyc2VGcm9tU3RyZWFtKGIsIHNpbiwgJnJvb3QsICZlcnJzKTsKLSAgaWYgKCFv
aykgewotICAgIHRocm93UnVudGltZUVycm9yKGVycnMpOwotICB9Ci0gIHJldHVybiBzaW47Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL2pz
b25fdG9vbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl90b29sLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVjMTNmMWZlZDIwN2Q1ODZiOTNlY2VjZGFjOGQ0NWU3MzU3Mjg5ZGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMv
bGliX2pzb24vanNvbl90b29sLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1
dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWlu
IGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotLy8g
U2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291
cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBMSUJfSlNPTkNQUF9KU09OX1RPT0xfSF9J
TkNMVURFRAotI2RlZmluZSBMSUJfSlNPTkNQUF9KU09OX1RPT0xfSF9JTkNMVURFRAotCi0jaWYg
IWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0jaW5jbHVkZSA8anNvbi9jb25maWcuaD4K
LSNlbmRpZgotCi0vLyBBbHNvIHN1cHBvcnQgb2xkIGZsYWcgTk9fTE9DQUxFX1NVUFBPUlQKLSNp
ZmRlZiBOT19MT0NBTEVfU1VQUE9SVAotI2RlZmluZSBKU09OQ1BQX05PX0xPQ0FMRV9TVVBQT1JU
Ci0jZW5kaWYKLQotI2lmbmRlZiBKU09OQ1BQX05PX0xPQ0FMRV9TVVBQT1JUCi0jaW5jbHVkZSA8
Y2xvY2FsZT4KLSNlbmRpZgotCi0vKiBUaGlzIGhlYWRlciBwcm92aWRlcyBjb21tb24gc3RyaW5n
IG1hbmlwdWxhdGlvbiBzdXBwb3J0LCBzdWNoIGFzIFVURi04LAotICogcG9ydGFibGUgY29udmVy
c2lvbiBmcm9tL3RvIHN0cmluZy4uLgotICoKLSAqIEl0IGlzIGFuIGludGVybmFsIGhlYWRlciB0
aGF0IG11c3Qgbm90IGJlIGV4cG9zZWQuCi0gKi8KLQotbmFtZXNwYWNlIEpzb24gewotc3RhdGlj
IGlubGluZSBjaGFyIGdldERlY2ltYWxQb2ludCgpIHsKLSNpZmRlZiBKU09OQ1BQX05PX0xPQ0FM
RV9TVVBQT1JUCi0gIHJldHVybiAnXDAnOwotI2Vsc2UKLSAgc3RydWN0IGxjb252KiBsYyA9IGxv
Y2FsZWNvbnYoKTsKLSAgcmV0dXJuIGxjID8gKihsYy0+ZGVjaW1hbF9wb2ludCkgOiAnXDAnOwot
I2VuZGlmCi19Ci0KLS8vLyBDb252ZXJ0cyBhIHVuaWNvZGUgY29kZS1wb2ludCB0byBVVEYtOC4K
LXN0YXRpYyBpbmxpbmUgU3RyaW5nIGNvZGVQb2ludFRvVVRGOCh1bnNpZ25lZCBpbnQgY3ApIHsK
LSAgU3RyaW5nIHJlc3VsdDsKLQotICAvLyBiYXNlZCBvbiBkZXNjcmlwdGlvbiBmcm9tIGh0dHA6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTgKLQotICBpZiAoY3AgPD0gMHg3ZikgewotICAg
IHJlc3VsdC5yZXNpemUoMSk7Ci0gICAgcmVzdWx0WzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oY3Ap
OwotICB9IGVsc2UgaWYgKGNwIDw9IDB4N0ZGKSB7Ci0gICAgcmVzdWx0LnJlc2l6ZSgyKTsKLSAg
ICByZXN1bHRbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4M2YgJiBjcCkpOwotICAg
IHJlc3VsdFswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4QzAgfCAoMHgxZiAmIChjcCA+PiA2KSkp
OwotICB9IGVsc2UgaWYgKGNwIDw9IDB4RkZGRikgewotICAgIHJlc3VsdC5yZXNpemUoMyk7Ci0g
ICAgcmVzdWx0WzJdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8ICgweDNmICYgY3ApKTsKLSAg
ICByZXN1bHRbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4M2YgJiAoY3AgPj4gNikp
KTsKLSAgICByZXN1bHRbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPigweEUwIHwgKDB4ZiAmIChjcCA+
PiAxMikpKTsKLSAgfSBlbHNlIGlmIChjcCA8PSAweDEwRkZGRikgewotICAgIHJlc3VsdC5yZXNp
emUoNCk7Ci0gICAgcmVzdWx0WzNdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8ICgweDNmICYg
Y3ApKTsKLSAgICByZXN1bHRbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4M2YgJiAo
Y3AgPj4gNikpKTsKLSAgICByZXN1bHRbMV0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4
M2YgJiAoY3AgPj4gMTIpKSk7Ci0gICAgcmVzdWx0WzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhG
MCB8ICgweDcgJiAoY3AgPj4gMTgpKSk7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi1l
bnVtIHsKLSAgLy8vIENvbnN0YW50IHRoYXQgc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVy
IHRoYXQgbXVzdCBiZSBwYXNzZWQgdG8KLSAgLy8vIHVpbnRUb1N0cmluZy4KLSAgdWludFRvU3Ry
aW5nQnVmZmVyU2l6ZSA9IDMgKiBzaXplb2YoTGFyZ2VzdFVJbnQpICsgMQotfTsKLQotLy8gRGVm
aW5lcyBhIGNoYXIgYnVmZmVyIGZvciB1c2Ugd2l0aCB1aW50VG9TdHJpbmcoKS4KLXR5cGVkZWYg
Y2hhciBVSW50VG9TdHJpbmdCdWZmZXJbdWludFRvU3RyaW5nQnVmZmVyU2l6ZV07Ci0KLS8qKiBD
b252ZXJ0cyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRvIHN0cmluZy4KLSAqIEBwYXJhbSB2YWx1ZSBV
bnNpZ25lZCBpbnRlZ2VyIHRvIGNvbnZlcnQgdG8gc3RyaW5nCi0gKiBAcGFyYW0gY3VycmVudCBJ
bnB1dC9PdXRwdXQgc3RyaW5nIGJ1ZmZlci4KLSAqICAgICAgICBNdXN0IGhhdmUgYXQgbGVhc3Qg
dWludFRvU3RyaW5nQnVmZmVyU2l6ZSBjaGFycyBmcmVlLgotICovCi1zdGF0aWMgaW5saW5lIHZv
aWQgdWludFRvU3RyaW5nKExhcmdlc3RVSW50IHZhbHVlLCBjaGFyKiYgY3VycmVudCkgewotICAq
LS1jdXJyZW50ID0gMDsKLSAgZG8gewotICAgICotLWN1cnJlbnQgPSBzdGF0aWNfY2FzdDxjaGFy
Pih2YWx1ZSAlIDEwVSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPignMCcpKTsKLSAgICB2YWx1ZSAv
PSAxMDsKLSAgfSB3aGlsZSAodmFsdWUgIT0gMCk7Ci19Ci0KLS8qKiBDaGFuZ2UgJywnIHRvICcu
JyBldmVyeXdoZXJlIGluIGJ1ZmZlci4KLSAqCi0gKiBXZSBoYWQgYSBzb3BoaXN0aWNhdGVkIHdh
eSwgYnV0IGl0IGRpZCBub3Qgd29yayBpbiBXaW5DRS4KLSAqIEBzZWUgaHR0cHM6Ly9naXRodWIu
Y29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcC9wdWxsLzkKLSAqLwotdGVtcGxhdGUgPHR5
cGVuYW1lIEl0ZXI+IEl0ZXIgZml4TnVtZXJpY0xvY2FsZShJdGVyIGJlZ2luLCBJdGVyIGVuZCkg
ewotICBmb3IgKDsgYmVnaW4gIT0gZW5kOyArK2JlZ2luKSB7Ci0gICAgaWYgKCpiZWdpbiA9PSAn
LCcpIHsKLSAgICAgICpiZWdpbiA9ICcuJzsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGJlZ2luOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4gdm9pZCBmaXhOdW1lcmljTG9jYWxlSW5wdXQo
SXRlciBiZWdpbiwgSXRlciBlbmQpIHsKLSAgY2hhciBkZWNpbWFsUG9pbnQgPSBnZXREZWNpbWFs
UG9pbnQoKTsKLSAgaWYgKGRlY2ltYWxQb2ludCA9PSAnXDAnIHx8IGRlY2ltYWxQb2ludCA9PSAn
LicpIHsKLSAgICByZXR1cm47Ci0gIH0KLSAgZm9yICg7IGJlZ2luICE9IGVuZDsgKytiZWdpbikg
ewotICAgIGlmICgqYmVnaW4gPT0gJy4nKSB7Ci0gICAgICAqYmVnaW4gPSBkZWNpbWFsUG9pbnQ7
Ci0gICAgfQotICB9Ci19Ci0KLS8qKgotICogUmV0dXJuIGl0ZXJhdG9yIHRoYXQgd291bGQgYmUg
dGhlIG5ldyBlbmQgb2YgdGhlIHJhbmdlIFtiZWdpbixlbmQpLCBpZiB3ZQotICogd2VyZSB0byBk
ZWxldGUgemVyb3MgaW4gdGhlIGVuZCBvZiBzdHJpbmcsIGJ1dCBub3QgdGhlIGxhc3QgemVybyBi
ZWZvcmUgJy4nLgotICovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4gSXRlciBmaXhaZXJvc0lu
VGhlRW5kKEl0ZXIgYmVnaW4sIEl0ZXIgZW5kKSB7Ci0gIGZvciAoOyBiZWdpbiAhPSBlbmQ7IC0t
ZW5kKSB7Ci0gICAgaWYgKCooZW5kIC0gMSkgIT0gJzAnKSB7Ci0gICAgICByZXR1cm4gZW5kOwot
ICAgIH0KLSAgICAvLyBEb24ndCBkZWxldGUgdGhlIGxhc3QgemVybyBiZWZvcmUgdGhlIGRlY2lt
YWwgcG9pbnQuCi0gICAgaWYgKGJlZ2luICE9IChlbmQgLSAxKSAmJiAqKGVuZCAtIDIpID09ICcu
JykgewotICAgICAgcmV0dXJuIGVuZDsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGVuZDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSnNvbgotCi0jZW5kaWYgLy8gTElCX0pTT05DUFBfSlNPTl9UT09MX0hf
SU5DTFVERUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fdmFsdWUuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9zcmMvbGliX2pzb24vanNvbl92YWx1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ4MTNjMTZhMGU4ZDhiYmY3ZTNhNGFmMTNhZWUwNjFjYjY3NDk1OGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24v
anNvbl92YWx1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzA3ICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDExIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8g
RGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJl
ZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBM
SUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5u
ZXQvTElDRU5TRQotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0jaW5jbHVk
ZSA8anNvbi9hc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8anNvbi92YWx1ZS5oPgotI2luY2x1ZGUg
PGpzb24vd3JpdGVyLmg+Ci0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJ
T04pCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3Ry
aW5nPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpZmRlZiBKU09O
X1VTRV9DUFBUTAotI2luY2x1ZGUgPGNwcHRsL2NvbnN0c3RyaW5nLmg+Ci0jZW5kaWYKLSNpbmNs
dWRlIDxhbGdvcml0aG0+IC8vIG1pbigpCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAvLyBzaXplX3QK
LQotLy8gUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBlcXVpdmFsZW50IG9mIHN0ZDo6c25wcmludGYg
Zm9yIG9sZGVyIF9NU0MgY29tcGlsZXJzCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19W
RVIgPCAxOTAwCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci1zdGF0aWMgaW50IG1zdmNfcHJlMTkwMF9j
OTlfdnNucHJpbnRmKGNoYXIqIG91dEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFfbGlzdCBhcCkgewotICBpbnQgY291bnQgPSAtMTsKLSAgaWYgKHNpemUgIT0gMCkK
LSAgICBjb3VudCA9IF92c25wcmludGZfcyhvdXRCdWYsIHNpemUsIF9UUlVOQ0FURSwgZm9ybWF0
LCBhcCk7Ci0gIGlmIChjb3VudCA9PSAtMSkKLSAgICBjb3VudCA9IF92c2NwcmludGYoZm9ybWF0
LCBhcCk7Ci0gIHJldHVybiBjb3VudDsKLX0KLQotaW50IEpTT05fQVBJIG1zdmNfcHJlMTkwMF9j
OTlfc25wcmludGYoY2hhciogb3V0QnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuLi4pIHsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0g
IGNvbnN0IGludCBjb3VudCA9IG1zdmNfcHJlMTkwMF9jOTlfdnNucHJpbnRmKG91dEJ1Ziwgc2l6
ZSwgZm9ybWF0LCBhcCk7Ci0gIHZhX2VuZChhcCk7Ci0gIHJldHVybiBjb3VudDsKLX0KLSNlbmRp
ZgotCi0vLyBEaXNhYmxlIHdhcm5pbmcgQzQ3MDIgOiB1bnJlYWNoYWJsZSBjb2RlCi0jaWYgZGVm
aW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcwMikKLSNlbmRpZgot
Ci0jZGVmaW5lIEpTT05fQVNTRVJUX1VOUkVBQ0hBQkxFIGFzc2VydChmYWxzZSkKLQotbmFtZXNw
YWNlIEpzb24gewotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFQ+IGNsb25lVW5pcXVlKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUPiYgcCkgewotICBzdGQ6OnVu
aXF1ZV9wdHI8VD4gcjsKLSAgaWYgKHApIHsKLSAgICByID0gc3RkOjp1bmlxdWVfcHRyPFQ+KG5l
dyBUKCpwKSk7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLS8vIFRoaXMgaXMgYSB3YWxrYXJvdW5k
IHRvIGF2b2lkIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb2YgVmFsdWU6Om51bGwuCi0vLyBr
TnVsbCBtdXN0IGJlIHdvcmQtYWxpZ25lZCB0byBhdm9pZCBjcmFzaGluZyBvbiBBUk0uICBXZSB1
c2UgYW4gYWxpZ25tZW50IG9mCi0vLyA4IChpbnN0ZWFkIG9mIDQpIGFzIGEgYml0IG9mIGZ1dHVy
ZS1wcm9vZmluZy4KLSNpZiBkZWZpbmVkKF9fQVJNRUxfXykKLSNkZWZpbmUgQUxJR05BUyhieXRl
X2FsaWdubWVudCkgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlX2FsaWdubWVudCkpKQotI2Vs
c2UKLSNkZWZpbmUgQUxJR05BUyhieXRlX2FsaWdubWVudCkKLSNlbmRpZgotCi0vLyBzdGF0aWMK
LVZhbHVlIGNvbnN0JiBWYWx1ZTo6bnVsbFNpbmdsZXRvbigpIHsKLSAgc3RhdGljIFZhbHVlIGNv
bnN0IG51bGxTdGF0aWM7Ci0gIHJldHVybiBudWxsU3RhdGljOwotfQotCi0jaWYgSlNPTl9VU0Vf
TlVMTFJFRgotLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSdsbCBsZWF2ZSB0aGVz
ZSBnbG9iYWwgcmVmZXJlbmNlcyBhcm91bmQsIGJ1dAotLy8gRE8gTk9UIHVzZSB0aGVtIGluIEpT
T05DUFAgbGlicmFyeSBjb2RlIGFueSBtb3JlIQotLy8gc3RhdGljCi1WYWx1ZSBjb25zdCYgVmFs
dWU6Om51bGwgPSBWYWx1ZTo6bnVsbFNpbmdsZXRvbigpOwotCi0vLyBzdGF0aWMKLVZhbHVlIGNv
bnN0JiBWYWx1ZTo6bnVsbFJlZiA9IFZhbHVlOjpudWxsU2luZ2xldG9uKCk7Ci0jZW5kaWYKLQot
Y29uc3QgSW50IFZhbHVlOjptaW5JbnQgPSBJbnQofihVSW50KC0xKSAvIDIpKTsKLWNvbnN0IElu
dCBWYWx1ZTo6bWF4SW50ID0gSW50KFVJbnQoLTEpIC8gMik7Ci1jb25zdCBVSW50IFZhbHVlOjpt
YXhVSW50ID0gVUludCgtMSk7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLWNvbnN0IElu
dDY0IFZhbHVlOjptaW5JbnQ2NCA9IEludDY0KH4oVUludDY0KC0xKSAvIDIpKTsKLWNvbnN0IElu
dDY0IFZhbHVlOjptYXhJbnQ2NCA9IEludDY0KFVJbnQ2NCgtMSkgLyAyKTsKLWNvbnN0IFVJbnQ2
NCBWYWx1ZTo6bWF4VUludDY0ID0gVUludDY0KC0xKTsKLS8vIFRoZSBjb25zdGFudCBpcyBoYXJk
LWNvZGVkIGJlY2F1c2Ugc29tZSBjb21waWxlciBoYXZlIHRyb3VibGUKLS8vIGNvbnZlcnRpbmcg
VmFsdWU6Om1heFVJbnQ2NCB0byBhIGRvdWJsZSBjb3JyZWN0bHkgKEFJWC94bEMpLgotLy8gQXNz
dW1lcyB0aGF0IFVJbnQ2NCBpcyBhIDY0IGJpdHMgaW50ZWdlci4KLXN0YXRpYyBjb25zdCBkb3Vi
bGUgbWF4VUludDY0QXNEb3VibGUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNS4wOwotI2VuZGlmIC8v
IGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi1jb25zdCBMYXJnZXN0SW50IFZhbHVlOjptaW5MYXJn
ZXN0SW50ID0gTGFyZ2VzdEludCh+KExhcmdlc3RVSW50KC0xKSAvIDIpKTsKLWNvbnN0IExhcmdl
c3RJbnQgVmFsdWU6Om1heExhcmdlc3RJbnQgPSBMYXJnZXN0SW50KExhcmdlc3RVSW50KC0xKSAv
IDIpOwotY29uc3QgTGFyZ2VzdFVJbnQgVmFsdWU6Om1heExhcmdlc3RVSW50ID0gTGFyZ2VzdFVJ
bnQoLTEpOwotCi1jb25zdCBVSW50IFZhbHVlOjpkZWZhdWx0UmVhbFByZWNpc2lvbiA9IDE3Owot
Ci0jaWYgIWRlZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0YXRpYyBpbmxpbmUgYm9vbCBJblJhbmdlKGRv
dWJsZSBkLCBUIG1pbiwgVSBtYXgpIHsKLSAgLy8gVGhlIGNhc3RzIGNhbiBsb3NlIHByZWNpc2lv
biwgYnV0IHdlIGFyZSBsb29raW5nIG9ubHkgZm9yCi0gIC8vIGFuIGFwcHJveGltYXRlIHJhbmdl
LiBNaWdodCBmYWlsIG9uIGVkZ2UgY2FzZXMgdGhvdWdoLiB+Y2R1bm4KLSAgLy8gcmV0dXJuIGQg
Pj0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtaW4pICYmIGQgPD0gc3RhdGljX2Nhc3Q8ZG91YmxlPiht
YXgpOwotICByZXR1cm4gZCA+PSBtaW4gJiYgZCA8PSBtYXg7Ci19Ci0jZWxzZSAgLy8gaWYgIWRl
ZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi1zdGF0aWMgaW5saW5lIGRv
dWJsZSBpbnRlZ2VyVG9Eb3VibGUoSnNvbjo6VUludDY0IHZhbHVlKSB7Ci0gIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KEludDY0KHZhbHVlIC8gMikpICogMi4wICsKLSAgICAgICAgIHN0YXRp
Y19jYXN0PGRvdWJsZT4oSW50NjQodmFsdWUgJiAxKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdGF0aWMgaW5saW5lIGRvdWJsZSBpbnRlZ2VyVG9Eb3VibGUoVCB2YWx1ZSkgewotICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgotc3RhdGljIGlubGluZSBib29sIEluUmFuZ2UoZG91YmxlIGQsIFQg
bWluLCBVIG1heCkgewotICByZXR1cm4gZCA+PSBpbnRlZ2VyVG9Eb3VibGUobWluKSAmJiBkIDw9
IGludGVnZXJUb0RvdWJsZShtYXgpOwotfQotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fVVNF
X0lOVDY0X0RPVUJMRV9DT05WRVJTSU9OKQotCi0vKiogRHVwbGljYXRlcyB0aGUgc3BlY2lmaWVk
IHN0cmluZyB2YWx1ZS4KLSAqIEBwYXJhbSB2YWx1ZSBQb2ludGVyIHRvIHRoZSBzdHJpbmcgdG8g
ZHVwbGljYXRlLiBNdXN0IGJlIHplcm8tdGVybWluYXRlZCBpZgotICogICAgICAgICAgICAgIGxl
bmd0aCBpcyAidW5rbm93biIuCi0gKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiB0aGUgdmFsdWUu
IGlmIGVxdWFscyB0byB1bmtub3duLCB0aGVuIGl0IHdpbGwgYmUKLSAqICAgICAgICAgICAgICAg
Y29tcHV0ZWQgdXNpbmcgc3RybGVuKHZhbHVlKS4KLSAqIEByZXR1cm4gUG9pbnRlciBvbiB0aGUg
ZHVwbGljYXRlIGluc3RhbmNlIG9mIHN0cmluZy4KLSAqLwotc3RhdGljIGlubGluZSBjaGFyKiBk
dXBsaWNhdGVTdHJpbmdWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0aCkgewot
ICAvLyBBdm9pZCBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBjYWxsIHRvIG1hbGxvYyBiZWxv
dyBieSBsaW1pdGluZyBsZW5ndGgKLSAgLy8gdG8gYSBzYW5lIHZhbHVlLgotICBpZiAobGVuZ3Ro
ID49IHN0YXRpY19jYXN0PHNpemVfdD4oVmFsdWU6Om1heEludCkpCi0gICAgbGVuZ3RoID0gVmFs
dWU6Om1heEludCAtIDE7Ci0KLSAgY2hhciogbmV3U3RyaW5nID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1hbGxvYyhsZW5ndGggKyAxKSk7Ci0gIGlmIChuZXdTdHJpbmcgPT0gbnVsbHB0cikgewotICAg
IHRocm93UnVudGltZUVycm9yKCJpbiBKc29uOjpWYWx1ZTo6ZHVwbGljYXRlU3RyaW5nVmFsdWUo
KTogIgotICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgc3RyaW5nIHZh
bHVlIGJ1ZmZlciIpOwotICB9Ci0gIG1lbWNweShuZXdTdHJpbmcsIHZhbHVlLCBsZW5ndGgpOwot
ICBuZXdTdHJpbmdbbGVuZ3RoXSA9IDA7Ci0gIHJldHVybiBuZXdTdHJpbmc7Ci19Ci0KLS8qIFJl
Y29yZCB0aGUgbGVuZ3RoIGFzIGEgcHJlZml4LgotICovCi1zdGF0aWMgaW5saW5lIGNoYXIqIGR1
cGxpY2F0ZUFuZFByZWZpeFN0cmluZ1ZhbHVlKGNvbnN0IGNoYXIqIHZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVu
Z3RoKSB7Ci0gIC8vIEF2b2lkIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGNhbGwgdG8gbWFs
bG9jIGJlbG93IGJ5IGxpbWl0aW5nIGxlbmd0aAotICAvLyB0byBhIHNhbmUgdmFsdWUuCi0gIEpT
T05fQVNTRVJUX01FU1NBR0UobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihWYWx1ZTo6
bWF4SW50KSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5z
aWduZWQpIC0gMVUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjpkdXBs
aWNhdGVBbmRQcmVmaXhTdHJpbmdWYWx1ZSgpOiAiCi0gICAgICAgICAgICAgICAgICAgICAgImxl
bmd0aCB0b28gYmlnIGZvciBwcmVmaXhpbmciKTsKLSAgdW5zaWduZWQgYWN0dWFsTGVuZ3RoID0g
bGVuZ3RoICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemVvZih1bnNpZ25lZCkpICsgMVU7Ci0g
IGNoYXIqIG5ld1N0cmluZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoYWN0dWFsTGVuZ3Ro
KSk7Ci0gIGlmIChuZXdTdHJpbmcgPT0gbnVsbHB0cikgewotICAgIHRocm93UnVudGltZUVycm9y
KCJpbiBKc29uOjpWYWx1ZTo6ZHVwbGljYXRlQW5kUHJlZml4U3RyaW5nVmFsdWUoKTogIgotICAg
ICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgc3RyaW5nIHZhbHVlIGJ1ZmZl
ciIpOwotICB9Ci0gICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obmV3U3RyaW5nKSA9IGxl
bmd0aDsKLSAgbWVtY3B5KG5ld1N0cmluZyArIHNpemVvZih1bnNpZ25lZCksIHZhbHVlLCBsZW5n
dGgpOwotICBuZXdTdHJpbmdbYWN0dWFsTGVuZ3RoIC0gMVVdID0KLSAgICAgIDA7IC8vIHRvIGF2
b2lkIGJ1ZmZlciBvdmVyLXJ1biBhY2NpZGVudHMgYnkgdXNlcnMgbGF0ZXIKLSAgcmV0dXJuIG5l
d1N0cmluZzsKLX0KLWlubGluZSBzdGF0aWMgdm9pZCBkZWNvZGVQcmVmaXhlZFN0cmluZyhib29s
IGlzUHJlZml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBjb25zdCogcHJlZml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQqIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyIGNvbnN0KiogdmFsdWUpIHsKLSAgaWYgKCFpc1ByZWZpeGVkKSB7Ci0gICAgKmxl
bmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJsZW4ocHJlZml4ZWQpKTsKLSAgICAqdmFs
dWUgPSBwcmVmaXhlZDsKLSAgfSBlbHNlIHsKLSAgICAqbGVuZ3RoID0gKnJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgY29uc3QqPihwcmVmaXhlZCk7Ci0gICAgKnZhbHVlID0gcHJlZml4ZWQgKyBz
aXplb2YodW5zaWduZWQpOwotICB9Ci19Ci0vKiogRnJlZSB0aGUgc3RyaW5nIGR1cGxpY2F0ZWQg
YnkKLSAqIGR1cGxpY2F0ZVN0cmluZ1ZhbHVlKCkvZHVwbGljYXRlQW5kUHJlZml4U3RyaW5nVmFs
dWUoKS4KLSAqLwotI2lmIEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWQotc3RhdGljIGlubGlu
ZSB2b2lkIHJlbGVhc2VQcmVmaXhlZFN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlKSB7Ci0gIHVuc2ln
bmVkIGxlbmd0aCA9IDA7Ci0gIGNoYXIgY29uc3QqIHZhbHVlRGVjb2RlZDsKLSAgZGVjb2RlUHJl
Zml4ZWRTdHJpbmcodHJ1ZSwgdmFsdWUsICZsZW5ndGgsICZ2YWx1ZURlY29kZWQpOwotICBzaXpl
X3QgY29uc3Qgc2l6ZSA9IHNpemVvZih1bnNpZ25lZCkgKyBsZW5ndGggKyAxVTsKLSAgbWVtc2V0
KHZhbHVlLCAwLCBzaXplKTsKLSAgZnJlZSh2YWx1ZSk7Ci19Ci1zdGF0aWMgaW5saW5lIHZvaWQg
cmVsZWFzZVN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlLCB1bnNpZ25lZCBsZW5ndGgpIHsKLSAgLy8g
bGVuZ3RoPT0wID0+IHdlIGFsbG9jYXRlZCB0aGUgc3RyaW5ncyBtZW1vcnkKLSAgc2l6ZV90IHNp
emUgPSAobGVuZ3RoID09IDApID8gc3RybGVuKHZhbHVlKSA6IGxlbmd0aDsKLSAgbWVtc2V0KHZh
bHVlLCAwLCBzaXplKTsKLSAgZnJlZSh2YWx1ZSk7Ci19Ci0jZWxzZSAgLy8gIUpTT05DUFBfVVNJ
TkdfU0VDVVJFX01FTU9SWQotc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VQcmVmaXhlZFN0cmlu
Z1ZhbHVlKGNoYXIqIHZhbHVlKSB7IGZyZWUodmFsdWUpOyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQg
cmVsZWFzZVN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlLCB1bnNpZ25lZCkgeyBmcmVlKHZhbHVlKTsg
fQotI2VuZGlmIC8vIEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWQotCi19IC8vIG5hbWVzcGFj
ZSBKc29uCi0KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFZh
bHVlSW50ZXJuYWxzLi4uCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0KLSNpbmNsdWRlICJqc29uX3Zh
bHVlaXRlcmF0b3IuaW5sIgotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFU
SU9OKQotCi1uYW1lc3BhY2UgSnNvbiB7Ci0KLSNpZiBKU09OX1VTRV9FWENFUFRJT04KLUV4Y2Vw
dGlvbjo6RXhjZXB0aW9uKFN0cmluZyBtc2cpIDogbXNnXyhzdGQ6Om1vdmUobXNnKSkge30KLUV4
Y2VwdGlvbjo6fkV4Y2VwdGlvbigpIEpTT05DUFBfTk9FWENFUFQge30KLWNoYXIgY29uc3QqIEV4
Y2VwdGlvbjo6d2hhdCgpIGNvbnN0IEpTT05DUFBfTk9FWENFUFQgeyByZXR1cm4gbXNnXy5jX3N0
cigpOyB9Ci1SdW50aW1lRXJyb3I6OlJ1bnRpbWVFcnJvcihTdHJpbmcgY29uc3QmIG1zZykgOiBF
eGNlcHRpb24obXNnKSB7fQotTG9naWNFcnJvcjo6TG9naWNFcnJvcihTdHJpbmcgY29uc3QmIG1z
ZykgOiBFeGNlcHRpb24obXNnKSB7fQotW1tub3JldHVybl1dIHZvaWQgdGhyb3dSdW50aW1lRXJy
b3IoU3RyaW5nIGNvbnN0JiBtc2cpIHsKLSAgdGhyb3cgUnVudGltZUVycm9yKG1zZyk7Ci19Ci1b
W25vcmV0dXJuXV0gdm9pZCB0aHJvd0xvZ2ljRXJyb3IoU3RyaW5nIGNvbnN0JiBtc2cpIHsKLSAg
dGhyb3cgTG9naWNFcnJvcihtc2cpOwotfQotI2Vsc2UgLy8gIUpTT05fVVNFX0VYQ0VQVElPTgot
W1tub3JldHVybl1dIHZvaWQgdGhyb3dSdW50aW1lRXJyb3IoU3RyaW5nIGNvbnN0JiBtc2cpIHsg
YWJvcnQoKTsgfQotW1tub3JldHVybl1dIHZvaWQgdGhyb3dMb2dpY0Vycm9yKFN0cmluZyBjb25z
dCYgbXNnKSB7IGFib3J0KCk7IH0KLSNlbmRpZgotCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyBjbGFzcyBWYWx1ZTo6Q1pTdHJpbmcKLS8vIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gTm90ZXM6IHBvbGljeV8gaW5kaWNhdGVz
IGlmIHRoZSBzdHJpbmcgd2FzIGFsbG9jYXRlZCB3aGVuCi0vLyBhIHN0cmluZyBpcyBzdG9yZWQu
Ci0KLVZhbHVlOjpDWlN0cmluZzo6Q1pTdHJpbmcoQXJyYXlJbmRleCBpbmRleCkgOiBjc3RyXyhu
dWxscHRyKSwgaW5kZXhfKGluZGV4KSB7fQotCi1WYWx1ZTo6Q1pTdHJpbmc6OkNaU3RyaW5nKGNo
YXIgY29uc3QqIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGlvblBvbGljeSBhbGxvY2F0ZSkK
LSAgICA6IGNzdHJfKHN0cikgewotICAvLyBhbGxvY2F0ZSAhPSBkdXBsaWNhdGUKLSAgc3RvcmFn
ZV8ucG9saWN5XyA9IGFsbG9jYXRlICYgMHgzOwotICBzdG9yYWdlXy5sZW5ndGhfID0gbGVuZ3Ro
ICYgMHgzRkZGRkZGRjsKLX0KLQotVmFsdWU6OkNaU3RyaW5nOjpDWlN0cmluZyhjb25zdCBDWlN0
cmluZyYgb3RoZXIpIHsKLSAgY3N0cl8gPSAob3RoZXIuc3RvcmFnZV8ucG9saWN5XyAhPSBub0R1
cGxpY2F0aW9uICYmIG90aGVyLmNzdHJfICE9IG51bGxwdHIKLSAgICAgICAgICAgICAgID8gZHVw
bGljYXRlU3RyaW5nVmFsdWUob3RoZXIuY3N0cl8sIG90aGVyLnN0b3JhZ2VfLmxlbmd0aF8pCi0g
ICAgICAgICAgICAgICA6IG90aGVyLmNzdHJfKTsKLSAgc3RvcmFnZV8ucG9saWN5XyA9Ci0gICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oCi0gICAgICAgICAgb3RoZXIuY3N0cl8KLSAgICAgICAg
ICAgICAgPyAoc3RhdGljX2Nhc3Q8RHVwbGljYXRpb25Qb2xpY3k+KG90aGVyLnN0b3JhZ2VfLnBv
bGljeV8pID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbm9EdXBsaWNhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgPyBub0R1cGxpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICA6IGR1
cGxpY2F0ZSkKLSAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxEdXBsaWNhdGlvblBvbGljeT4o
b3RoZXIuc3RvcmFnZV8ucG9saWN5XykpICYKLSAgICAgIDNVOwotICBzdG9yYWdlXy5sZW5ndGhf
ID0gb3RoZXIuc3RvcmFnZV8ubGVuZ3RoXzsKLX0KLQotVmFsdWU6OkNaU3RyaW5nOjpDWlN0cmlu
ZyhDWlN0cmluZyYmIG90aGVyKQotICAgIDogY3N0cl8ob3RoZXIuY3N0cl8pLCBpbmRleF8ob3Ro
ZXIuaW5kZXhfKSB7Ci0gIG90aGVyLmNzdHJfID0gbnVsbHB0cjsKLX0KLQotVmFsdWU6OkNaU3Ry
aW5nOjp+Q1pTdHJpbmcoKSB7Ci0gIGlmIChjc3RyXyAmJiBzdG9yYWdlXy5wb2xpY3lfID09IGR1
cGxpY2F0ZSkgewotICAgIHJlbGVhc2VTdHJpbmdWYWx1ZShjb25zdF9jYXN0PGNoYXIqPihjc3Ry
XyksCi0gICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmxlbmd0aF8gKyAxdSk7IC8vICsx
IGZvciBudWxsIHRlcm1pbmF0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBmb3Igc2FrZSBvZgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZW5lc3MgYnV0IG5vdCBhY3R1
YWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBu
ZWNlc3NhcnkKLSAgfQotfQotCi12b2lkIFZhbHVlOjpDWlN0cmluZzo6c3dhcChDWlN0cmluZyYg
b3RoZXIpIHsKLSAgc3RkOjpzd2FwKGNzdHJfLCBvdGhlci5jc3RyXyk7Ci0gIHN0ZDo6c3dhcChp
bmRleF8sIG90aGVyLmluZGV4Xyk7Ci19Ci0KLVZhbHVlOjpDWlN0cmluZyYgVmFsdWU6OkNaU3Ry
aW5nOjpvcGVyYXRvcj0oY29uc3QgQ1pTdHJpbmcmIG90aGVyKSB7Ci0gIGNzdHJfID0gb3RoZXIu
Y3N0cl87Ci0gIGluZGV4XyA9IG90aGVyLmluZGV4XzsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1W
YWx1ZTo6Q1pTdHJpbmcmIFZhbHVlOjpDWlN0cmluZzo6b3BlcmF0b3I9KENaU3RyaW5nJiYgb3Ro
ZXIpIHsKLSAgY3N0cl8gPSBvdGhlci5jc3RyXzsKLSAgaW5kZXhfID0gb3RoZXIuaW5kZXhfOwot
ICBvdGhlci5jc3RyXyA9IG51bGxwdHI7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotYm9vbCBWYWx1
ZTo6Q1pTdHJpbmc6Om9wZXJhdG9yPChjb25zdCBDWlN0cmluZyYgb3RoZXIpIGNvbnN0IHsKLSAg
aWYgKCFjc3RyXykKLSAgICByZXR1cm4gaW5kZXhfIDwgb3RoZXIuaW5kZXhfOwotICAvLyByZXR1
cm4gc3RyY21wKGNzdHJfLCBvdGhlci5jc3RyXykgPCAwOwotICAvLyBBc3N1bWUgYm90aCBhcmUg
c3RyaW5ncy4KLSAgdW5zaWduZWQgdGhpc19sZW4gPSB0aGlzLT5zdG9yYWdlXy5sZW5ndGhfOwot
ICB1bnNpZ25lZCBvdGhlcl9sZW4gPSBvdGhlci5zdG9yYWdlXy5sZW5ndGhfOwotICB1bnNpZ25l
ZCBtaW5fbGVuID0gc3RkOjptaW48dW5zaWduZWQ+KHRoaXNfbGVuLCBvdGhlcl9sZW4pOwotICBK
U09OX0FTU0VSVCh0aGlzLT5jc3RyXyAmJiBvdGhlci5jc3RyXyk7Ci0gIGludCBjb21wID0gbWVt
Y21wKHRoaXMtPmNzdHJfLCBvdGhlci5jc3RyXywgbWluX2xlbik7Ci0gIGlmIChjb21wIDwgMCkK
LSAgICByZXR1cm4gdHJ1ZTsKLSAgaWYgKGNvbXAgPiAwKQotICAgIHJldHVybiBmYWxzZTsKLSAg
cmV0dXJuICh0aGlzX2xlbiA8IG90aGVyX2xlbik7Ci19Ci0KLWJvb2wgVmFsdWU6OkNaU3RyaW5n
OjpvcGVyYXRvcj09KGNvbnN0IENaU3RyaW5nJiBvdGhlcikgY29uc3QgewotICBpZiAoIWNzdHJf
KQotICAgIHJldHVybiBpbmRleF8gPT0gb3RoZXIuaW5kZXhfOwotICAvLyByZXR1cm4gc3RyY21w
KGNzdHJfLCBvdGhlci5jc3RyXykgPT0gMDsKLSAgLy8gQXNzdW1lIGJvdGggYXJlIHN0cmluZ3Mu
Ci0gIHVuc2lnbmVkIHRoaXNfbGVuID0gdGhpcy0+c3RvcmFnZV8ubGVuZ3RoXzsKLSAgdW5zaWdu
ZWQgb3RoZXJfbGVuID0gb3RoZXIuc3RvcmFnZV8ubGVuZ3RoXzsKLSAgaWYgKHRoaXNfbGVuICE9
IG90aGVyX2xlbikKLSAgICByZXR1cm4gZmFsc2U7Ci0gIEpTT05fQVNTRVJUKHRoaXMtPmNzdHJf
ICYmIG90aGVyLmNzdHJfKTsKLSAgaW50IGNvbXAgPSBtZW1jbXAodGhpcy0+Y3N0cl8sIG90aGVy
LmNzdHJfLCB0aGlzX2xlbik7Ci0gIHJldHVybiBjb21wID09IDA7Ci19Ci0KLUFycmF5SW5kZXgg
VmFsdWU6OkNaU3RyaW5nOjppbmRleCgpIGNvbnN0IHsgcmV0dXJuIGluZGV4XzsgfQotCi0vLyBj
b25zdCBjaGFyKiBWYWx1ZTo6Q1pTdHJpbmc6OmNfc3RyKCkgY29uc3QgeyByZXR1cm4gY3N0cl87
IH0KLWNvbnN0IGNoYXIqIFZhbHVlOjpDWlN0cmluZzo6ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGNz
dHJfOyB9Ci11bnNpZ25lZCBWYWx1ZTo6Q1pTdHJpbmc6Omxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IHN0b3JhZ2VfLmxlbmd0aF87IH0KLWJvb2wgVmFsdWU6OkNaU3RyaW5nOjppc1N0YXRpY1N0cmlu
ZygpIGNvbnN0IHsKLSAgcmV0dXJuIHN0b3JhZ2VfLnBvbGljeV8gPT0gbm9EdXBsaWNhdGlvbjsK
LX0KLQotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gY2xhc3Mg
VmFsdWU6OlZhbHVlCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0K
LS8qISBcaW50ZXJuYWwgRGVmYXVsdCBjb25zdHJ1Y3RvciBpbml0aWFsaXphdGlvbiBtdXN0IGJl
IGVxdWl2YWxlbnQgdG86Ci0gKiBtZW1zZXQoIHRoaXMsIDAsIHNpemVvZihWYWx1ZSkgKQotICog
VGhpcyBvcHRpbWl6YXRpb24gaXMgdXNlZCBpbiBWYWx1ZUludGVybmFsTWFwIGZhc3QgYWxsb2Nh
dG9yLgotICovCi1WYWx1ZTo6VmFsdWUoVmFsdWVUeXBlIHR5cGUpIHsKLSAgc3RhdGljIGNoYXIg
Y29uc3QgZW1wdHlTdHJpbmdbXSA9ICIiOwotICBpbml0QmFzaWModHlwZSk7Ci0gIHN3aXRjaCAo
dHlwZSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgICBicmVhazsKLSAgY2FzZSBpbnRWYWx1ZToK
LSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgdmFsdWVfLmludF8gPSAwOwotICAgIGJyZWFrOwotICBj
YXNlIHJlYWxWYWx1ZToKLSAgICB2YWx1ZV8ucmVhbF8gPSAwLjA7Ci0gICAgYnJlYWs7Ci0gIGNh
c2Ugc3RyaW5nVmFsdWU6Ci0gICAgLy8gYWxsb2NhdGVkXyA9PSBmYWxzZSwgc28gdGhpcyBpcyBz
YWZlLgotICAgIHZhbHVlXy5zdHJpbmdfID0gY29uc3RfY2FzdDxjaGFyKj4oc3RhdGljX2Nhc3Q8
Y2hhciBjb25zdCo+KGVtcHR5U3RyaW5nKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgYXJyYXlWYWx1
ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICB2YWx1ZV8ubWFwXyA9IG5ldyBPYmplY3RWYWx1
ZXMoKTsKLSAgICBicmVhazsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgdmFsdWVfLmJvb2xf
ID0gZmFsc2U7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgSlNPTl9BU1NFUlRfVU5SRUFD
SEFCTEU7Ci0gIH0KLX0KLQotVmFsdWU6OlZhbHVlKEludCB2YWx1ZSkgewotICBpbml0QmFzaWMo
aW50VmFsdWUpOwotICB2YWx1ZV8uaW50XyA9IHZhbHVlOwotfQotCi1WYWx1ZTo6VmFsdWUoVUlu
dCB2YWx1ZSkgewotICBpbml0QmFzaWModWludFZhbHVlKTsKLSAgdmFsdWVfLnVpbnRfID0gdmFs
dWU7Ci19Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLVZhbHVlOjpWYWx1ZShJbnQ2NCB2
YWx1ZSkgewotICBpbml0QmFzaWMoaW50VmFsdWUpOwotICB2YWx1ZV8uaW50XyA9IHZhbHVlOwot
fQotVmFsdWU6OlZhbHVlKFVJbnQ2NCB2YWx1ZSkgewotICBpbml0QmFzaWModWludFZhbHVlKTsK
LSAgdmFsdWVfLnVpbnRfID0gdmFsdWU7Ci19Ci0jZW5kaWYgLy8gZGVmaW5lZChKU09OX0hBU19J
TlQ2NCkKLQotVmFsdWU6OlZhbHVlKGRvdWJsZSB2YWx1ZSkgewotICBpbml0QmFzaWMocmVhbFZh
bHVlKTsKLSAgdmFsdWVfLnJlYWxfID0gdmFsdWU7Ci19Ci0KLVZhbHVlOjpWYWx1ZShjb25zdCBj
aGFyKiB2YWx1ZSkgewotICBpbml0QmFzaWMoc3RyaW5nVmFsdWUsIHRydWUpOwotICBKU09OX0FT
U0VSVF9NRVNTQUdFKHZhbHVlICE9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIk51
bGwgVmFsdWUgUGFzc2VkIHRvIFZhbHVlIENvbnN0cnVjdG9yIik7Ci0gIHZhbHVlXy5zdHJpbmdf
ID0gZHVwbGljYXRlQW5kUHJlZml4U3RyaW5nVmFsdWUoCi0gICAgICB2YWx1ZSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0cmxlbih2YWx1ZSkpKTsKLX0KLQotVmFsdWU6OlZhbHVlKGNvbnN0IGNo
YXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIHsKLSAgaW5pdEJhc2ljKHN0cmluZ1ZhbHVlLCB0
cnVlKTsKLSAgdmFsdWVfLnN0cmluZ18gPQotICAgICAgZHVwbGljYXRlQW5kUHJlZml4U3RyaW5n
VmFsdWUoYmVnaW4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBiZWdpbikpOwotfQotCi1W
YWx1ZTo6VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgewotICBpbml0QmFzaWMoc3RyaW5nVmFs
dWUsIHRydWUpOwotICB2YWx1ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFuZFByZWZpeFN0cmluZ1Zh
bHVlKAotICAgICAgdmFsdWUuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFsdWUubGVu
Z3RoKCkpKTsKLX0KLQotVmFsdWU6OlZhbHVlKGNvbnN0IFN0YXRpY1N0cmluZyYgdmFsdWUpIHsK
LSAgaW5pdEJhc2ljKHN0cmluZ1ZhbHVlKTsKLSAgdmFsdWVfLnN0cmluZ18gPSBjb25zdF9jYXN0
PGNoYXIqPih2YWx1ZS5jX3N0cigpKTsKLX0KLQotI2lmZGVmIEpTT05fVVNFX0NQUFRMCi1WYWx1
ZTo6VmFsdWUoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiB2YWx1ZSkgewotICBpbml0QmFzaWMo
c3RyaW5nVmFsdWUsIHRydWUpOwotICB2YWx1ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFuZFByZWZp
eFN0cmluZ1ZhbHVlKAotICAgICAgdmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZS5s
ZW5ndGgoKSkpOwotfQotI2VuZGlmCi0KLVZhbHVlOjpWYWx1ZShib29sIHZhbHVlKSB7Ci0gIGlu
aXRCYXNpYyhib29sZWFuVmFsdWUpOwotICB2YWx1ZV8uYm9vbF8gPSB2YWx1ZTsKLX0KLQotVmFs
dWU6OlZhbHVlKGNvbnN0IFZhbHVlJiBvdGhlcikgewotICBkdXBQYXlsb2FkKG90aGVyKTsKLSAg
ZHVwTWV0YShvdGhlcik7Ci19Ci0KLVZhbHVlOjpWYWx1ZShWYWx1ZSYmIG90aGVyKSB7Ci0gIGlu
aXRCYXNpYyhudWxsVmFsdWUpOwotICBzd2FwKG90aGVyKTsKLX0KLQotVmFsdWU6On5WYWx1ZSgp
IHsKLSAgcmVsZWFzZVBheWxvYWQoKTsKLSAgdmFsdWVfLnVpbnRfID0gMDsKLX0KLQotVmFsdWUm
IFZhbHVlOjpvcGVyYXRvcj0oY29uc3QgVmFsdWUmIG90aGVyKSB7Ci0gIFZhbHVlKG90aGVyKS5z
d2FwKCp0aGlzKTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9y
PShWYWx1ZSYmIG90aGVyKSB7Ci0gIG90aGVyLnN3YXAoKnRoaXMpOwotICByZXR1cm4gKnRoaXM7
Ci19Ci0KLXZvaWQgVmFsdWU6OnN3YXBQYXlsb2FkKFZhbHVlJiBvdGhlcikgewotICBzdGQ6OnN3
YXAoYml0c18sIG90aGVyLmJpdHNfKTsKLSAgc3RkOjpzd2FwKHZhbHVlXywgb3RoZXIudmFsdWVf
KTsKLX0KLQotdm9pZCBWYWx1ZTo6Y29weVBheWxvYWQoY29uc3QgVmFsdWUmIG90aGVyKSB7Ci0g
IHJlbGVhc2VQYXlsb2FkKCk7Ci0gIGR1cFBheWxvYWQob3RoZXIpOwotfQotCi12b2lkIFZhbHVl
Ojpzd2FwKFZhbHVlJiBvdGhlcikgewotICBzd2FwUGF5bG9hZChvdGhlcik7Ci0gIHN0ZDo6c3dh
cChjb21tZW50c18sIG90aGVyLmNvbW1lbnRzXyk7Ci0gIHN0ZDo6c3dhcChzdGFydF8sIG90aGVy
LnN0YXJ0Xyk7Ci0gIHN0ZDo6c3dhcChsaW1pdF8sIG90aGVyLmxpbWl0Xyk7Ci19Ci0KLXZvaWQg
VmFsdWU6OmNvcHkoY29uc3QgVmFsdWUmIG90aGVyKSB7Ci0gIGNvcHlQYXlsb2FkKG90aGVyKTsK
LSAgZHVwTWV0YShvdGhlcik7Ci19Ci0KLVZhbHVlVHlwZSBWYWx1ZTo6dHlwZSgpIGNvbnN0IHsK
LSAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oYml0c18udmFsdWVfdHlwZV8pOwotfQot
Ci1pbnQgVmFsdWU6OmNvbXBhcmUoY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdCB7Ci0gIGlmICgq
dGhpcyA8IG90aGVyKQotICAgIHJldHVybiAtMTsKLSAgaWYgKCp0aGlzID4gb3RoZXIpCi0gICAg
cmV0dXJuIDE7Ci0gIHJldHVybiAwOwotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcjwoY29uc3Qg
VmFsdWUmIG90aGVyKSBjb25zdCB7Ci0gIGludCB0eXBlRGVsdGEgPSB0eXBlKCkgLSBvdGhlci50
eXBlKCk7Ci0gIGlmICh0eXBlRGVsdGEpCi0gICAgcmV0dXJuIHR5cGVEZWx0YSA8IDAgPyB0cnVl
IDogZmFsc2U7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2UgbnVsbFZhbHVlOgotICAgIHJl
dHVybiBmYWxzZTsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLmludF8gPCBv
dGhlci52YWx1ZV8uaW50XzsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy51
aW50XyA8IG90aGVyLnZhbHVlXy51aW50XzsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcmV0dXJu
IHZhbHVlXy5yZWFsXyA8IG90aGVyLnZhbHVlXy5yZWFsXzsKLSAgY2FzZSBib29sZWFuVmFsdWU6
Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA8IG90aGVyLnZhbHVlXy5ib29sXzsKLSAgY2FzZSBz
dHJpbmdWYWx1ZTogewotICAgIGlmICgodmFsdWVfLnN0cmluZ18gPT0gbnVsbHB0cikgfHwgKG90
aGVyLnZhbHVlXy5zdHJpbmdfID09IG51bGxwdHIpKSB7Ci0gICAgICBpZiAob3RoZXIudmFsdWVf
LnN0cmluZ18pCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHVuc2lnbmVkIHRoaXNfbGVuOwotICAgIHVuc2lnbmVkIG90
aGVyX2xlbjsKLSAgICBjaGFyIGNvbnN0KiB0aGlzX3N0cjsKLSAgICBjaGFyIGNvbnN0KiBvdGhl
cl9zdHI7Ci0gICAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNBbGxvY2F0ZWQoKSwgdGhp
cy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAm
dGhpc19zdHIpOwotICAgIGRlY29kZVByZWZpeGVkU3RyaW5nKG90aGVyLmlzQWxsb2NhdGVkKCks
IG90aGVyLnZhbHVlXy5zdHJpbmdfLCAmb3RoZXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICZvdGhlcl9zdHIpOwotICAgIHVuc2lnbmVkIG1pbl9sZW4gPSBzdGQ6Om1pbjx1bnNpZ25l
ZD4odGhpc19sZW4sIG90aGVyX2xlbik7Ci0gICAgSlNPTl9BU1NFUlQodGhpc19zdHIgJiYgb3Ro
ZXJfc3RyKTsKLSAgICBpbnQgY29tcCA9IG1lbWNtcCh0aGlzX3N0ciwgb3RoZXJfc3RyLCBtaW5f
bGVuKTsKLSAgICBpZiAoY29tcCA8IDApCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY29t
cCA+IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICh0aGlzX2xlbiA8IG90aGVy
X2xlbik7Ci0gIH0KLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOiB7Ci0g
ICAgaW50IGRlbHRhID0gaW50KHZhbHVlXy5tYXBfLT5zaXplKCkgLSBvdGhlci52YWx1ZV8ubWFw
Xy0+c2l6ZSgpKTsKLSAgICBpZiAoZGVsdGEpCi0gICAgICByZXR1cm4gZGVsdGEgPCAwOwotICAg
IHJldHVybiAoKnZhbHVlXy5tYXBfKSA8ICgqb3RoZXIudmFsdWVfLm1hcF8pOwotICB9Ci0gIGRl
ZmF1bHQ6Ci0gICAgSlNPTl9BU1NFUlRfVU5SRUFDSEFCTEU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNl
OyAvLyB1bnJlYWNoYWJsZQotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcjw9KGNvbnN0IFZhbHVl
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIShvdGhlciA8ICp0aGlzKTsgfQotCi1ib29sIFZhbHVl
OjpvcGVyYXRvcj49KGNvbnN0IFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA8
IG90aGVyKTsgfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcj4oY29uc3QgVmFsdWUmIG90aGVyKSBj
b25zdCB7IHJldHVybiBvdGhlciA8ICp0aGlzOyB9Ci0KLWJvb2wgVmFsdWU6Om9wZXJhdG9yPT0o
Y29uc3QgVmFsdWUmIG90aGVyKSBjb25zdCB7Ci0gIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgp
KQotICAgIHJldHVybiBmYWxzZTsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBudWxsVmFs
dWU6Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVl
Xy5pbnRfID09IG90aGVyLnZhbHVlXy5pbnRfOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1
cm4gdmFsdWVfLnVpbnRfID09IG90aGVyLnZhbHVlXy51aW50XzsKLSAgY2FzZSByZWFsVmFsdWU6
Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXyA9PSBvdGhlci52YWx1ZV8ucmVhbF87Ci0gIGNhc2Ug
Ym9vbGVhblZhbHVlOgotICAgIHJldHVybiB2YWx1ZV8uYm9vbF8gPT0gb3RoZXIudmFsdWVfLmJv
b2xfOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgaWYgKCh2YWx1ZV8uc3RyaW5nXyA9PSBu
dWxscHRyKSB8fCAob3RoZXIudmFsdWVfLnN0cmluZ18gPT0gbnVsbHB0cikpIHsKLSAgICAgIHJl
dHVybiAodmFsdWVfLnN0cmluZ18gPT0gb3RoZXIudmFsdWVfLnN0cmluZ18pOwotICAgIH0KLSAg
ICB1bnNpZ25lZCB0aGlzX2xlbjsKLSAgICB1bnNpZ25lZCBvdGhlcl9sZW47Ci0gICAgY2hhciBj
b25zdCogdGhpc19zdHI7Ci0gICAgY2hhciBjb25zdCogb3RoZXJfc3RyOwotICAgIGRlY29kZVBy
ZWZpeGVkU3RyaW5nKHRoaXMtPmlzQWxsb2NhdGVkKCksIHRoaXMtPnZhbHVlXy5zdHJpbmdfLCAm
dGhpc19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnRoaXNfc3RyKTsKLSAgICBkZWNv
ZGVQcmVmaXhlZFN0cmluZyhvdGhlci5pc0FsbG9jYXRlZCgpLCBvdGhlci52YWx1ZV8uc3RyaW5n
XywgJm90aGVyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXJfc3RyKTsKLSAg
ICBpZiAodGhpc19sZW4gIT0gb3RoZXJfbGVuKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEpT
T05fQVNTRVJUKHRoaXNfc3RyICYmIG90aGVyX3N0cik7Ci0gICAgaW50IGNvbXAgPSBtZW1jbXAo
dGhpc19zdHIsIG90aGVyX3N0ciwgdGhpc19sZW4pOwotICAgIHJldHVybiBjb21wID09IDA7Ci0g
IH0KLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIHJldHVybiB2
YWx1ZV8ubWFwXy0+c2l6ZSgpID09IG90aGVyLnZhbHVlXy5tYXBfLT5zaXplKCkgJiYKLSAgICAg
ICAgICAgKCp2YWx1ZV8ubWFwXykgPT0gKCpvdGhlci52YWx1ZV8ubWFwXyk7Ci0gIGRlZmF1bHQ6
Ci0gICAgSlNPTl9BU1NFUlRfVU5SRUFDSEFCTEU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOyAvLyB1
bnJlYWNoYWJsZQotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IFZhbHVlJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotY29uc3QgY2hhciogVmFs
dWU6OmFzQ1N0cmluZygpIGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0eXBlKCkgPT0g
c3RyaW5nVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjphc0NT
dHJpbmcoKTogcmVxdWlyZXMgc3RyaW5nVmFsdWUiKTsKLSAgaWYgKHZhbHVlXy5zdHJpbmdfID09
IG51bGxwdHIpCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIHVuc2lnbmVkIHRoaXNfbGVuOwotICBj
aGFyIGNvbnN0KiB0aGlzX3N0cjsKLSAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNBbGxv
Y2F0ZWQoKSwgdGhpcy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgJnRoaXNfc3RyKTsKLSAgcmV0dXJuIHRoaXNfc3RyOwotfQotCi0jaWYgSlNPTkNQ
UF9VU0lOR19TRUNVUkVfTUVNT1JZCi11bnNpZ25lZCBWYWx1ZTo6Z2V0Q1N0cmluZ0xlbmd0aCgp
IGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0eXBlKCkgPT0gc3RyaW5nVmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjphc0NTdHJpbmcoKTogcmVxdWly
ZXMgc3RyaW5nVmFsdWUiKTsKLSAgaWYgKHZhbHVlXy5zdHJpbmdfID09IDApCi0gICAgcmV0dXJu
IDA7Ci0gIHVuc2lnbmVkIHRoaXNfbGVuOwotICBjaGFyIGNvbnN0KiB0aGlzX3N0cjsKLSAgZGVj
b2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNBbGxvY2F0ZWQoKSwgdGhpcy0+dmFsdWVfLnN0cmlu
Z18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgJnRoaXNfc3RyKTsKLSAgcmV0
dXJuIHRoaXNfbGVuOwotfQotI2VuZGlmCi0KLWJvb2wgVmFsdWU6OmdldFN0cmluZyhjaGFyIGNv
bnN0KiogYmVnaW4sIGNoYXIgY29uc3QqKiBlbmQpIGNvbnN0IHsKLSAgaWYgKHR5cGUoKSAhPSBz
dHJpbmdWYWx1ZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICh2YWx1ZV8uc3RyaW5nXyA9PSBu
dWxscHRyKQotICAgIHJldHVybiBmYWxzZTsKLSAgdW5zaWduZWQgbGVuZ3RoOwotICBkZWNvZGVQ
cmVmaXhlZFN0cmluZyh0aGlzLT5pc0FsbG9jYXRlZCgpLCB0aGlzLT52YWx1ZV8uc3RyaW5nXywg
Jmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4pOwotICAqZW5kID0gKmJlZ2lu
ICsgbGVuZ3RoOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFZhbHVlOjphc1N0cmluZygp
IGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBudWxsVmFsdWU6Ci0gICAgcmV0
dXJuICIiOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgaWYgKHZhbHVlXy5zdHJpbmdfID09
IG51bGxwdHIpCi0gICAgICByZXR1cm4gIiI7Ci0gICAgdW5zaWduZWQgdGhpc19sZW47Ci0gICAg
Y2hhciBjb25zdCogdGhpc19zdHI7Ci0gICAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNB
bGxvY2F0ZWQoKSwgdGhpcy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAmdGhpc19zdHIpOwotICAgIHJldHVybiBTdHJpbmcodGhpc19zdHIsIHRo
aXNfbGVuKTsKLSAgfQotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLmJv
b2xfID8gInRydWUiIDogImZhbHNlIjsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFs
dWVUb1N0cmluZyh2YWx1ZV8uaW50Xyk7Ci0gIGNhc2UgdWludFZhbHVlOgotICAgIHJldHVybiB2
YWx1ZVRvU3RyaW5nKHZhbHVlXy51aW50Xyk7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAgIHJldHVy
biB2YWx1ZVRvU3RyaW5nKHZhbHVlXy5yZWFsXyk7Ci0gIGRlZmF1bHQ6Ci0gICAgSlNPTl9GQUlM
X01FU1NBR0UoIlR5cGUgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHN0cmluZyIpOwotICB9Ci19Ci0K
LSNpZmRlZiBKU09OX1VTRV9DUFBUTAotQ3BwVEw6OkNvbnN0U3RyaW5nIFZhbHVlOjphc0NvbnN0
U3RyaW5nKCkgY29uc3QgewotICB1bnNpZ25lZCBsZW47Ci0gIGNoYXIgY29uc3QqIHN0cjsKLSAg
ZGVjb2RlUHJlZml4ZWRTdHJpbmcoaXNBbGxvY2F0ZWQoKSwgdmFsdWVfLnN0cmluZ18sICZsZW4s
ICZzdHIpOwotICByZXR1cm4gQ3BwVEw6OkNvbnN0U3RyaW5nKHN0ciwgbGVuKTsKLX0KLSNlbmRp
ZgotCi1WYWx1ZTo6SW50IFZhbHVlOjphc0ludCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkp
IHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKGlzSW50KCksICJM
YXJnZXN0SW50IG91dCBvZiBJbnQgcmFuZ2UiKTsKLSAgICByZXR1cm4gSW50KHZhbHVlXy5pbnRf
KTsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgSlNPTl9BU1NFUlRfTUVTU0FHRShpc0ludCgpLCAi
TGFyZ2VzdFVJbnQgb3V0IG9mIEludCByYW5nZSIpOwotICAgIHJldHVybiBJbnQodmFsdWVfLnVp
bnRfKTsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgSlNPTl9BU1NFUlRfTUVTU0FHRShJblJhbmdl
KHZhbHVlXy5yZWFsXywgbWluSW50LCBtYXhJbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ImRvdWJsZSBvdXQgb2YgSW50IHJhbmdlIik7Ci0gICAgcmV0dXJuIEludCh2YWx1ZV8ucmVhbF8p
OwotICBjYXNlIG51bGxWYWx1ZToKLSAgICByZXR1cm4gMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6
Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA/IDEgOiAwOwotICBkZWZhdWx0OgotICAgIGJyZWFr
OwotICB9Ci0gIEpTT05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGlibGUgdG8g
SW50LiIpOwotfQotCi1WYWx1ZTo6VUludCBWYWx1ZTo6YXNVSW50KCkgY29uc3QgewotICBzd2l0
Y2ggKHR5cGUoKSkgewotICBjYXNlIGludFZhbHVlOgotICAgIEpTT05fQVNTRVJUX01FU1NBR0Uo
aXNVSW50KCksICJMYXJnZXN0SW50IG91dCBvZiBVSW50IHJhbmdlIik7Ci0gICAgcmV0dXJuIFVJ
bnQodmFsdWVfLmludF8pOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNT
QUdFKGlzVUludCgpLCAiTGFyZ2VzdFVJbnQgb3V0IG9mIFVJbnQgcmFuZ2UiKTsKLSAgICByZXR1
cm4gVUludCh2YWx1ZV8udWludF8pOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBKU09OX0FTU0VS
VF9NRVNTQUdFKEluUmFuZ2UodmFsdWVfLnJlYWxfLCAwLCBtYXhVSW50KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJkb3VibGUgb3V0IG9mIFVJbnQgcmFuZ2UiKTsKLSAgICByZXR1cm4gVUlu
dCh2YWx1ZV8ucmVhbF8pOwotICBjYXNlIG51bGxWYWx1ZToKLSAgICByZXR1cm4gMDsKLSAgY2Fz
ZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA/IDEgOiAwOwotICBkZWZh
dWx0OgotICAgIGJyZWFrOwotICB9Ci0gIEpTT05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBpcyBub3Qg
Y29udmVydGlibGUgdG8gVUludC4iKTsKLX0KLQotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQp
Ci0KLVZhbHVlOjpJbnQ2NCBWYWx1ZTo6YXNJbnQ2NCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBl
KCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gSW50NjQodmFsdWVfLmludF8pOwot
ICBjYXNlIHVpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKGlzSW50NjQoKSwgIkxh
cmdlc3RVSW50IG91dCBvZiBJbnQ2NCByYW5nZSIpOwotICAgIHJldHVybiBJbnQ2NCh2YWx1ZV8u
dWludF8pOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKEluUmFu
Z2UodmFsdWVfLnJlYWxfLCBtaW5JbnQ2NCwgbWF4SW50NjQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgImRvdWJsZSBvdXQgb2YgSW50NjQgcmFuZ2UiKTsKLSAgICByZXR1cm4gSW50NjQodmFs
dWVfLnJlYWxfKTsKLSAgY2FzZSBudWxsVmFsdWU6Ci0gICAgcmV0dXJuIDA7Ci0gIGNhc2UgYm9v
bGVhblZhbHVlOgotICAgIHJldHVybiB2YWx1ZV8uYm9vbF8gPyAxIDogMDsKLSAgZGVmYXVsdDoK
LSAgICBicmVhazsKLSAgfQotICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUgaXMgbm90IGNvbnZl
cnRpYmxlIHRvIEludDY0LiIpOwotfQotCi1WYWx1ZTo6VUludDY0IFZhbHVlOjphc1VJbnQ2NCgp
IGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICBKU09O
X0FTU0VSVF9NRVNTQUdFKGlzVUludDY0KCksICJMYXJnZXN0SW50IG91dCBvZiBVSW50NjQgcmFu
Z2UiKTsKLSAgICByZXR1cm4gVUludDY0KHZhbHVlXy5pbnRfKTsKLSAgY2FzZSB1aW50VmFsdWU6
Ci0gICAgcmV0dXJuIFVJbnQ2NCh2YWx1ZV8udWludF8pOwotICBjYXNlIHJlYWxWYWx1ZToKLSAg
ICBKU09OX0FTU0VSVF9NRVNTQUdFKEluUmFuZ2UodmFsdWVfLnJlYWxfLCAwLCBtYXhVSW50NjQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgImRvdWJsZSBvdXQgb2YgVUludDY0IHJhbmdlIik7
Ci0gICAgcmV0dXJuIFVJbnQ2NCh2YWx1ZV8ucmVhbF8pOwotICBjYXNlIG51bGxWYWx1ZToKLSAg
ICByZXR1cm4gMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29s
XyA/IDEgOiAwOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIEpTT05fRkFJTF9NRVNT
QUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGlibGUgdG8gVUludDY0LiIpOwotfQotI2VuZGlmIC8v
IGlmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0KLUxhcmdlc3RJbnQgVmFsdWU6OmFzTGFyZ2Vz
dEludCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05fTk9fSU5UNjQpCi0gIHJldHVybiBhc0lu
dCgpOwotI2Vsc2UKLSAgcmV0dXJuIGFzSW50NjQoKTsKLSNlbmRpZgotfQotCi1MYXJnZXN0VUlu
dCBWYWx1ZTo6YXNMYXJnZXN0VUludCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05fTk9fSU5U
NjQpCi0gIHJldHVybiBhc1VJbnQoKTsKLSNlbHNlCi0gIHJldHVybiBhc1VJbnQ2NCgpOwotI2Vu
ZGlmCi19Ci0KLWRvdWJsZSBWYWx1ZTo6YXNEb3VibGUoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlw
ZSgpKSB7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWVfLmludF8pOwotICBjYXNlIHVpbnRWYWx1ZToKLSNpZiAhZGVmaW5lZChKU09OX1VTRV9J
TlQ2NF9ET1VCTEVfQ09OVkVSU0lPTikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZV8udWludF8pOwotI2Vsc2UgIC8vIGlmICFkZWZpbmVkKEpTT05fVVNFX0lOVDY0X0RPVUJM
RV9DT05WRVJTSU9OKQotICAgIHJldHVybiBpbnRlZ2VyVG9Eb3VibGUodmFsdWVfLnVpbnRfKTsK
LSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VCTEVfQ09OVkVSU0lPTikK
LSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXzsKLSAgY2FzZSBudWxs
VmFsdWU6Ci0gICAgcmV0dXJuIDAuMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJu
IHZhbHVlXy5ib29sXyA/IDEuMCA6IDAuMDsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQot
ICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGRvdWJsZS4i
KTsKLX0KLQotZmxvYXQgVmFsdWU6OmFzRmxvYXQoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgp
KSB7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1
ZV8uaW50Xyk7Ci0gIGNhc2UgdWludFZhbHVlOgotI2lmICFkZWZpbmVkKEpTT05fVVNFX0lOVDY0
X0RPVUJMRV9DT05WRVJTSU9OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWVf
LnVpbnRfKTsKLSNlbHNlICAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VCTEVfQ09O
VkVSU0lPTikKLSAgICAvLyBUaGlzIGNhbiBmYWlsIChzaWxlbnRseT8pIGlmIHRoZSB2YWx1ZSBp
cyBiaWdnZXIgdGhhbiBNQVhfRkxPQVQuCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihp
bnRlZ2VyVG9Eb3VibGUodmFsdWVfLnVpbnRfKSk7Ci0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNP
Tl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi0gIGNhc2UgcmVhbFZhbHVlOgotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWVfLnJlYWxfKTsKLSAgY2FzZSBudWxsVmFsdWU6
Ci0gICAgcmV0dXJuIDAuMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVl
Xy5ib29sXyA/IDEuMGYgOiAwLjBmOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIEpT
T05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGlibGUgdG8gZmxvYXQuIik7Ci19
Ci0KLWJvb2wgVmFsdWU6OmFzQm9vbCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAg
Y2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXzsKLSAgY2FzZSBudWxs
VmFsdWU6Ci0gICAgcmV0dXJuIGZhbHNlOwotICBjYXNlIGludFZhbHVlOgotICAgIHJldHVybiB2
YWx1ZV8uaW50XyA/IHRydWUgOiBmYWxzZTsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJu
IHZhbHVlXy51aW50XyA/IHRydWUgOiBmYWxzZTsKLSAgY2FzZSByZWFsVmFsdWU6IHsKLSAgICAv
LyBBY2NvcmRpbmcgdG8gSmF2YVNjcmlwdCBsYW5ndWFnZSB6ZXJvIG9yIE5hTiBpcyByZWdhcmRl
ZCBhcyBmYWxzZQotICAgIGNvbnN0IGF1dG8gdmFsdWVfY2xhc3NpZmljYXRpb24gPSBzdGQ6OmZw
Y2xhc3NpZnkodmFsdWVfLnJlYWxfKTsKLSAgICByZXR1cm4gdmFsdWVfY2xhc3NpZmljYXRpb24g
IT0gRlBfWkVSTyAmJiB2YWx1ZV9jbGFzc2lmaWNhdGlvbiAhPSBGUF9OQU47Ci0gIH0KLSAgZGVm
YXVsdDoKLSAgICBicmVhazsKLSAgfQotICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUgaXMgbm90
IGNvbnZlcnRpYmxlIHRvIGJvb2wuIik7Ci19Ci0KLWJvb2wgVmFsdWU6OmlzQ29udmVydGlibGVU
byhWYWx1ZVR5cGUgb3RoZXIpIGNvbnN0IHsKLSAgc3dpdGNoIChvdGhlcikgewotICBjYXNlIG51
bGxWYWx1ZToKLSAgICByZXR1cm4gKGlzTnVtZXJpYygpICYmIGFzRG91YmxlKCkgPT0gMC4wKSB8
fAotICAgICAgICAgICAodHlwZSgpID09IGJvb2xlYW5WYWx1ZSAmJiB2YWx1ZV8uYm9vbF8gPT0g
ZmFsc2UpIHx8Ci0gICAgICAgICAgICh0eXBlKCkgPT0gc3RyaW5nVmFsdWUgJiYgYXNTdHJpbmco
KS5lbXB0eSgpKSB8fAotICAgICAgICAgICAodHlwZSgpID09IGFycmF5VmFsdWUgJiYgdmFsdWVf
Lm1hcF8tPmVtcHR5KCkpIHx8Ci0gICAgICAgICAgICh0eXBlKCkgPT0gb2JqZWN0VmFsdWUgJiYg
dmFsdWVfLm1hcF8tPmVtcHR5KCkpIHx8Ci0gICAgICAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWU7
Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIGlzSW50KCkgfHwKLSAgICAgICAgICAgKHR5
cGUoKSA9PSByZWFsVmFsdWUgJiYgSW5SYW5nZSh2YWx1ZV8ucmVhbF8sIG1pbkludCwgbWF4SW50
KSkgfHwKLSAgICAgICAgICAgdHlwZSgpID09IGJvb2xlYW5WYWx1ZSB8fCB0eXBlKCkgPT0gbnVs
bFZhbHVlOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gaXNVSW50KCkgfHwKLSAgICAg
ICAgICAgKHR5cGUoKSA9PSByZWFsVmFsdWUgJiYgSW5SYW5nZSh2YWx1ZV8ucmVhbF8sIDAsIG1h
eFVJbnQpKSB8fAotICAgICAgICAgICB0eXBlKCkgPT0gYm9vbGVhblZhbHVlIHx8IHR5cGUoKSA9
PSBudWxsVmFsdWU7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAgIHJldHVybiBpc051bWVyaWMoKSB8
fCB0eXBlKCkgPT0gYm9vbGVhblZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIGNhc2Ug
Ym9vbGVhblZhbHVlOgotICAgIHJldHVybiBpc051bWVyaWMoKSB8fCB0eXBlKCkgPT0gYm9vbGVh
blZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIGNhc2Ugc3RyaW5nVmFsdWU6Ci0gICAg
cmV0dXJuIGlzTnVtZXJpYygpIHx8IHR5cGUoKSA9PSBib29sZWFuVmFsdWUgfHwgdHlwZSgpID09
IHN0cmluZ1ZhbHVlIHx8Ci0gICAgICAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIGNhc2Ug
YXJyYXlWYWx1ZToKLSAgICByZXR1cm4gdHlwZSgpID09IGFycmF5VmFsdWUgfHwgdHlwZSgpID09
IG51bGxWYWx1ZTsKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICByZXR1cm4gdHlwZSgpID09IG9i
amVjdFZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIH0KLSAgSlNPTl9BU1NFUlRfVU5S
RUFDSEFCTEU7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotLy8vIE51bWJlciBvZiB2YWx1ZXMgaW4g
YXJyYXkgb3Igb2JqZWN0Ci1BcnJheUluZGV4IFZhbHVlOjpzaXplKCkgY29uc3QgewotICBzd2l0
Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgY2FzZSBpbnRWYWx1ZToKLSAgY2Fz
ZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVlOgotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAg
Y2FzZSBzdHJpbmdWYWx1ZToKLSAgICByZXR1cm4gMDsKLSAgY2FzZSBhcnJheVZhbHVlOiAvLyBz
aXplIG9mIHRoZSBhcnJheSBpcyBoaWdoZXN0IGluZGV4ICsgMQotICAgIGlmICghdmFsdWVfLm1h
cF8tPmVtcHR5KCkpIHsKLSAgICAgIE9iamVjdFZhbHVlczo6Y29uc3RfaXRlcmF0b3IgaXRMYXN0
ID0gdmFsdWVfLm1hcF8tPmVuZCgpOwotICAgICAgLS1pdExhc3Q7Ci0gICAgICByZXR1cm4gKCpp
dExhc3QpLmZpcnN0LmluZGV4KCkgKyAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSAgY2FzZSBv
YmplY3RWYWx1ZToKLSAgICByZXR1cm4gQXJyYXlJbmRleCh2YWx1ZV8ubWFwXy0+c2l6ZSgpKTsK
LSAgfQotICBKU09OX0FTU0VSVF9VTlJFQUNIQUJMRTsKLSAgcmV0dXJuIDA7IC8vIHVucmVhY2hh
YmxlOwotfQotCi1ib29sIFZhbHVlOjplbXB0eSgpIGNvbnN0IHsKLSAgaWYgKGlzTnVsbCgpIHx8
IGlzQXJyYXkoKSB8fCBpc09iamVjdCgpKQotICAgIHJldHVybiBzaXplKCkgPT0gMHU7Ci0gIGVs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVlOjpvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gIWlzTnVsbCgpOyB9Ci0KLXZvaWQgVmFsdWU6OmNsZWFyKCkgewotICBKU09OX0FT
U0VSVF9NRVNTQUdFKHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IGFycmF5VmFsdWUg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSgpID09IG9iamVjdFZhbHVlLAotICAg
ICAgICAgICAgICAgICAgICAgICJpbiBKc29uOjpWYWx1ZTo6Y2xlYXIoKTogcmVxdWlyZXMgY29t
cGxleCB2YWx1ZSIpOwotICBzdGFydF8gPSAwOwotICBsaW1pdF8gPSAwOwotICBzd2l0Y2ggKHR5
cGUoKSkgewotICBjYXNlIGFycmF5VmFsdWU6Ci0gIGNhc2Ugb2JqZWN0VmFsdWU6Ci0gICAgdmFs
dWVfLm1hcF8tPmNsZWFyKCk7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgYnJlYWs7Ci0g
IH0KLX0KLQotdm9pZCBWYWx1ZTo6cmVzaXplKEFycmF5SW5kZXggbmV3U2l6ZSkgewotICBKU09O
X0FTU0VSVF9NRVNTQUdFKHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IGFycmF5VmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjpyZXNpemUoKTogcmVx
dWlyZXMgYXJyYXlWYWx1ZSIpOwotICBpZiAodHlwZSgpID09IG51bGxWYWx1ZSkKLSAgICAqdGhp
cyA9IFZhbHVlKGFycmF5VmFsdWUpOwotICBBcnJheUluZGV4IG9sZFNpemUgPSBzaXplKCk7Ci0g
IGlmIChuZXdTaXplID09IDApCi0gICAgY2xlYXIoKTsKLSAgZWxzZSBpZiAobmV3U2l6ZSA+IG9s
ZFNpemUpCi0gICAgdGhpcy0+b3BlcmF0b3JbXShuZXdTaXplIC0gMSk7Ci0gIGVsc2UgewotICAg
IGZvciAoQXJyYXlJbmRleCBpbmRleCA9IG5ld1NpemU7IGluZGV4IDwgb2xkU2l6ZTsgKytpbmRl
eCkgewotICAgICAgdmFsdWVfLm1hcF8tPmVyYXNlKGluZGV4KTsKLSAgICB9Ci0gICAgSlNPTl9B
U1NFUlQoc2l6ZSgpID09IG5ld1NpemUpOwotICB9Ci19Ci0KLVZhbHVlJiBWYWx1ZTo6b3BlcmF0
b3JbXShBcnJheUluZGV4IGluZGV4KSB7Ci0gIEpTT05fQVNTRVJUX01FU1NBR0UoCi0gICAgICB0
eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBhcnJheVZhbHVlLAotICAgICAgImluIEpz
b246OlZhbHVlOjpvcGVyYXRvcltdKEFycmF5SW5kZXgpOiByZXF1aXJlcyBhcnJheVZhbHVlIik7
Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgICp0aGlzID0gVmFsdWUoYXJyYXlWYWx1
ZSk7Ci0gIENaU3RyaW5nIGtleShpbmRleCk7Ci0gIGF1dG8gaXQgPSB2YWx1ZV8ubWFwXy0+bG93
ZXJfYm91bmQoa2V5KTsKLSAgaWYgKGl0ICE9IHZhbHVlXy5tYXBfLT5lbmQoKSAmJiAoKml0KS5m
aXJzdCA9PSBrZXkpCi0gICAgcmV0dXJuICgqaXQpLnNlY29uZDsKLQotICBPYmplY3RWYWx1ZXM6
OnZhbHVlX3R5cGUgZGVmYXVsdFZhbHVlKGtleSwgbnVsbFNpbmdsZXRvbigpKTsKLSAgaXQgPSB2
YWx1ZV8ubWFwXy0+aW5zZXJ0KGl0LCBkZWZhdWx0VmFsdWUpOwotICByZXR1cm4gKCppdCkuc2Vj
b25kOwotfQotCi1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9yW10oaW50IGluZGV4KSB7Ci0gIEpTT05f
QVNTRVJUX01FU1NBR0UoCi0gICAgICBpbmRleCA+PSAwLAotICAgICAgImluIEpzb246OlZhbHVl
OjpvcGVyYXRvcltdKGludCBpbmRleCk6IGluZGV4IGNhbm5vdCBiZSBuZWdhdGl2ZSIpOwotICBy
ZXR1cm4gKCp0aGlzKVtBcnJheUluZGV4KGluZGV4KV07Ci19Ci0KLWNvbnN0IFZhbHVlJiBWYWx1
ZTo6b3BlcmF0b3JbXShBcnJheUluZGV4IGluZGV4KSBjb25zdCB7Ci0gIEpTT05fQVNTRVJUX01F
U1NBR0UoCi0gICAgICB0eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBhcnJheVZhbHVl
LAotICAgICAgImluIEpzb246OlZhbHVlOjpvcGVyYXRvcltdKEFycmF5SW5kZXgpY29uc3Q6IHJl
cXVpcmVzIGFycmF5VmFsdWUiKTsKLSAgaWYgKHR5cGUoKSA9PSBudWxsVmFsdWUpCi0gICAgcmV0
dXJuIG51bGxTaW5nbGV0b24oKTsKLSAgQ1pTdHJpbmcga2V5KGluZGV4KTsKLSAgT2JqZWN0VmFs
dWVzOjpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlXy5tYXBfLT5maW5kKGtleSk7Ci0gIGlmIChp
dCA9PSB2YWx1ZV8ubWFwXy0+ZW5kKCkpCi0gICAgcmV0dXJuIG51bGxTaW5nbGV0b24oKTsKLSAg
cmV0dXJuICgqaXQpLnNlY29uZDsKLX0KLQotY29uc3QgVmFsdWUmIFZhbHVlOjpvcGVyYXRvcltd
KGludCBpbmRleCkgY29uc3QgewotICBKU09OX0FTU0VSVF9NRVNTQUdFKAotICAgICAgaW5kZXgg
Pj0gMCwKLSAgICAgICJpbiBKc29uOjpWYWx1ZTo6b3BlcmF0b3JbXShpbnQgaW5kZXgpIGNvbnN0
OiBpbmRleCBjYW5ub3QgYmUgbmVnYXRpdmUiKTsKLSAgcmV0dXJuICgqdGhpcylbQXJyYXlJbmRl
eChpbmRleCldOwotfQotCi12b2lkIFZhbHVlOjppbml0QmFzaWMoVmFsdWVUeXBlIHR5cGUsIGJv
b2wgYWxsb2NhdGVkKSB7Ci0gIHNldFR5cGUodHlwZSk7Ci0gIHNldElzQWxsb2NhdGVkKGFsbG9j
YXRlZCk7Ci0gIGNvbW1lbnRzXyA9IENvbW1lbnRze307Ci0gIHN0YXJ0XyA9IDA7Ci0gIGxpbWl0
XyA9IDA7Ci19Ci0KLXZvaWQgVmFsdWU6OmR1cFBheWxvYWQoY29uc3QgVmFsdWUmIG90aGVyKSB7
Ci0gIHNldFR5cGUob3RoZXIudHlwZSgpKTsKLSAgc2V0SXNBbGxvY2F0ZWQoZmFsc2UpOwotICBz
d2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgY2FzZSBpbnRWYWx1ZToKLSAg
Y2FzZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVlOgotICBjYXNlIGJvb2xlYW5WYWx1ZToK
LSAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgYnJlYWs7Ci0gIGNhc2Ugc3RyaW5nVmFs
dWU6Ci0gICAgaWYgKG90aGVyLnZhbHVlXy5zdHJpbmdfICYmIG90aGVyLmlzQWxsb2NhdGVkKCkp
IHsKLSAgICAgIHVuc2lnbmVkIGxlbjsKLSAgICAgIGNoYXIgY29uc3QqIHN0cjsKLSAgICAgIGRl
Y29kZVByZWZpeGVkU3RyaW5nKG90aGVyLmlzQWxsb2NhdGVkKCksIG90aGVyLnZhbHVlXy5zdHJp
bmdfLCAmbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cik7Ci0gICAgICB2YWx1
ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFuZFByZWZpeFN0cmluZ1ZhbHVlKHN0ciwgbGVuKTsKLSAg
ICAgIHNldElzQWxsb2NhdGVkKHRydWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICB2YWx1ZV8uc3Ry
aW5nXyA9IG90aGVyLnZhbHVlXy5zdHJpbmdfOwotICAgIH0KLSAgICBicmVhazsKLSAgY2FzZSBh
cnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIHZhbHVlXy5tYXBfID0gbmV3IE9i
amVjdFZhbHVlcygqb3RoZXIudmFsdWVfLm1hcF8pOwotICAgIGJyZWFrOwotICBkZWZhdWx0Ogot
ICAgIEpTT05fQVNTRVJUX1VOUkVBQ0hBQkxFOwotICB9Ci19Ci0KLXZvaWQgVmFsdWU6OnJlbGVh
c2VQYXlsb2FkKCkgewotICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAg
Y2FzZSBpbnRWYWx1ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVlOgotICBj
YXNlIGJvb2xlYW5WYWx1ZToKLSAgICBicmVhazsKLSAgY2FzZSBzdHJpbmdWYWx1ZToKLSAgICBp
ZiAoaXNBbGxvY2F0ZWQoKSkKLSAgICAgIHJlbGVhc2VQcmVmaXhlZFN0cmluZ1ZhbHVlKHZhbHVl
Xy5zdHJpbmdfKTsKLSAgICBicmVhazsKLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVj
dFZhbHVlOgotICAgIGRlbGV0ZSB2YWx1ZV8ubWFwXzsKLSAgICBicmVhazsKLSAgZGVmYXVsdDoK
LSAgICBKU09OX0FTU0VSVF9VTlJFQUNIQUJMRTsKLSAgfQotfQotCi12b2lkIFZhbHVlOjpkdXBN
ZXRhKGNvbnN0IFZhbHVlJiBvdGhlcikgewotICBjb21tZW50c18gPSBvdGhlci5jb21tZW50c187
Ci0gIHN0YXJ0XyA9IG90aGVyLnN0YXJ0XzsKLSAgbGltaXRfID0gb3RoZXIubGltaXRfOwotfQot
Ci0vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIGNyZWF0ZSBhIG51bGwgbWVtYmVy
IGlmIGl0IGRvZXMgbm90IGV4aXN0LgotLy8gQHByZSBUeXBlIG9mICcqdGhpcycgaXMgb2JqZWN0
IG9yIG51bGwuCi0vLyBAcGFyYW0ga2V5IGlzIG51bGwtdGVybWluYXRlZC4KLVZhbHVlJiBWYWx1
ZTo6cmVzb2x2ZVJlZmVyZW5jZShjb25zdCBjaGFyKiBrZXkpIHsKLSAgSlNPTl9BU1NFUlRfTUVT
U0FHRSgKLSAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IG9iamVjdFZhbHVl
LAotICAgICAgImluIEpzb246OlZhbHVlOjpyZXNvbHZlUmVmZXJlbmNlKCk6IHJlcXVpcmVzIG9i
amVjdFZhbHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgICp0aGlzID0gVmFs
dWUob2JqZWN0VmFsdWUpOwotICBDWlN0cmluZyBhY3R1YWxLZXkoa2V5LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RybGVuKGtleSkpLAotICAgICAgICAgICAgICAgICAgICAgQ1pTdHJpbmc6Om5v
RHVwbGljYXRpb24pOyAvLyBOT1RFIQotICBhdXRvIGl0ID0gdmFsdWVfLm1hcF8tPmxvd2VyX2Jv
dW5kKGFjdHVhbEtleSk7Ci0gIGlmIChpdCAhPSB2YWx1ZV8ubWFwXy0+ZW5kKCkgJiYgKCppdCku
Zmlyc3QgPT0gYWN0dWFsS2V5KQotICAgIHJldHVybiAoKml0KS5zZWNvbmQ7Ci0KLSAgT2JqZWN0
VmFsdWVzOjp2YWx1ZV90eXBlIGRlZmF1bHRWYWx1ZShhY3R1YWxLZXksIG51bGxTaW5nbGV0b24o
KSk7Ci0gIGl0ID0gdmFsdWVfLm1hcF8tPmluc2VydChpdCwgZGVmYXVsdFZhbHVlKTsKLSAgVmFs
dWUmIHZhbHVlID0gKCppdCkuc2Vjb25kOwotICByZXR1cm4gdmFsdWU7Ci19Ci0KLS8vIEBwYXJh
bSBrZXkgaXMgbm90IG51bGwtdGVybWluYXRlZC4KLVZhbHVlJiBWYWx1ZTo6cmVzb2x2ZVJlZmVy
ZW5jZShjaGFyIGNvbnN0KiBrZXksIGNoYXIgY29uc3QqIGVuZCkgewotICBKU09OX0FTU0VSVF9N
RVNTQUdFKAotICAgICAgdHlwZSgpID09IG51bGxWYWx1ZSB8fCB0eXBlKCkgPT0gb2JqZWN0VmFs
dWUsCi0gICAgICAiaW4gSnNvbjo6VmFsdWU6OnJlc29sdmVSZWZlcmVuY2Uoa2V5LCBlbmQpOiBy
ZXF1aXJlcyBvYmplY3RWYWx1ZSIpOwotICBpZiAodHlwZSgpID09IG51bGxWYWx1ZSkKLSAgICAq
dGhpcyA9IFZhbHVlKG9iamVjdFZhbHVlKTsKLSAgQ1pTdHJpbmcgYWN0dWFsS2V5KGtleSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGtleSksCi0gICAgICAgICAgICAgICAgICAgICBDWlN0
cmluZzo6ZHVwbGljYXRlT25Db3B5KTsKLSAgYXV0byBpdCA9IHZhbHVlXy5tYXBfLT5sb3dlcl9i
b3VuZChhY3R1YWxLZXkpOwotICBpZiAoaXQgIT0gdmFsdWVfLm1hcF8tPmVuZCgpICYmICgqaXQp
LmZpcnN0ID09IGFjdHVhbEtleSkKLSAgICByZXR1cm4gKCppdCkuc2Vjb25kOwotCi0gIE9iamVj
dFZhbHVlczo6dmFsdWVfdHlwZSBkZWZhdWx0VmFsdWUoYWN0dWFsS2V5LCBudWxsU2luZ2xldG9u
KCkpOwotICBpdCA9IHZhbHVlXy5tYXBfLT5pbnNlcnQoaXQsIGRlZmF1bHRWYWx1ZSk7Ci0gIFZh
bHVlJiB2YWx1ZSA9ICgqaXQpLnNlY29uZDsKLSAgcmV0dXJuIHZhbHVlOwotfQotCi1WYWx1ZSBW
YWx1ZTo6Z2V0KEFycmF5SW5kZXggaW5kZXgsIGNvbnN0IFZhbHVlJiBkZWZhdWx0VmFsdWUpIGNv
bnN0IHsKLSAgY29uc3QgVmFsdWUqIHZhbHVlID0gJigoKnRoaXMpW2luZGV4XSk7Ci0gIHJldHVy
biB2YWx1ZSA9PSAmbnVsbFNpbmdsZXRvbigpID8gZGVmYXVsdFZhbHVlIDogKnZhbHVlOwotfQot
Ci1ib29sIFZhbHVlOjppc1ZhbGlkSW5kZXgoQXJyYXlJbmRleCBpbmRleCkgY29uc3QgeyByZXR1
cm4gaW5kZXggPCBzaXplKCk7IH0KLQotVmFsdWUgY29uc3QqIFZhbHVlOjpmaW5kKGNoYXIgY29u
c3QqIGJlZ2luLCBjaGFyIGNvbnN0KiBlbmQpIGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FH
RSh0eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBvYmplY3RWYWx1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAiaW4gSnNvbjo6VmFsdWU6OmZpbmQoYmVnaW4sIGVuZCk6IHJlcXVpcmVz
ICIKLSAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0VmFsdWUgb3IgbnVsbFZhbHVlIik7Ci0g
IGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgIHJldHVybiBudWxscHRyOwotICBDWlN0cmlu
ZyBhY3R1YWxLZXkoYmVnaW4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBiZWdpbiksCi0g
ICAgICAgICAgICAgICAgICAgICBDWlN0cmluZzo6bm9EdXBsaWNhdGlvbik7Ci0gIE9iamVjdFZh
bHVlczo6Y29uc3RfaXRlcmF0b3IgaXQgPSB2YWx1ZV8ubWFwXy0+ZmluZChhY3R1YWxLZXkpOwot
ICBpZiAoaXQgPT0gdmFsdWVfLm1hcF8tPmVuZCgpKQotICAgIHJldHVybiBudWxscHRyOwotICBy
ZXR1cm4gJigqaXQpLnNlY29uZDsKLX0KLVZhbHVlKiBWYWx1ZTo6ZGVtYW5kKGNoYXIgY29uc3Qq
IGJlZ2luLCBjaGFyIGNvbnN0KiBlbmQpIHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0eXBlKCkg
PT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBvYmplY3RWYWx1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAiaW4gSnNvbjo6VmFsdWU6OmRlbWFuZChiZWdpbiwgZW5kKTogcmVxdWlyZXMgIgotICAg
ICAgICAgICAgICAgICAgICAgICJvYmplY3RWYWx1ZSBvciBudWxsVmFsdWUiKTsKLSAgcmV0dXJu
ICZyZXNvbHZlUmVmZXJlbmNlKGJlZ2luLCBlbmQpOwotfQotY29uc3QgVmFsdWUmIFZhbHVlOjpv
cGVyYXRvcltdKGNvbnN0IGNoYXIqIGtleSkgY29uc3QgewotICBWYWx1ZSBjb25zdCogZm91bmQg
PSBmaW5kKGtleSwga2V5ICsgc3RybGVuKGtleSkpOwotICBpZiAoIWZvdW5kKQotICAgIHJldHVy
biBudWxsU2luZ2xldG9uKCk7Ci0gIHJldHVybiAqZm91bmQ7Ci19Ci1WYWx1ZSBjb25zdCYgVmFs
dWU6Om9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0IHsKLSAgVmFsdWUgY29uc3Qq
IGZvdW5kID0gZmluZChrZXkuZGF0YSgpLCBrZXkuZGF0YSgpICsga2V5Lmxlbmd0aCgpKTsKLSAg
aWYgKCFmb3VuZCkKLSAgICByZXR1cm4gbnVsbFNpbmdsZXRvbigpOwotICByZXR1cm4gKmZvdW5k
OwotfQotCi1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9yW10oY29uc3QgY2hhcioga2V5KSB7Ci0gIHJl
dHVybiByZXNvbHZlUmVmZXJlbmNlKGtleSwga2V5ICsgc3RybGVuKGtleSkpOwotfQotCi1WYWx1
ZSYgVmFsdWU6Om9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpIHsKLSAgcmV0dXJuIHJlc29s
dmVSZWZlcmVuY2Uoa2V5LmRhdGEoKSwga2V5LmRhdGEoKSArIGtleS5sZW5ndGgoKSk7Ci19Ci0K
LVZhbHVlJiBWYWx1ZTo6b3BlcmF0b3JbXShjb25zdCBTdGF0aWNTdHJpbmcmIGtleSkgewotICBy
ZXR1cm4gcmVzb2x2ZVJlZmVyZW5jZShrZXkuY19zdHIoKSk7Ci19Ci0KLSNpZmRlZiBKU09OX1VT
RV9DUFBUTAotVmFsdWUmIFZhbHVlOjpvcGVyYXRvcltdKGNvbnN0IENwcFRMOjpDb25zdFN0cmlu
ZyYga2V5KSB7Ci0gIHJldHVybiByZXNvbHZlUmVmZXJlbmNlKGtleS5jX3N0cigpLCBrZXkuZW5k
X2Nfc3RyKCkpOwotfQotVmFsdWUgY29uc3QmIFZhbHVlOjpvcGVyYXRvcltdKENwcFRMOjpDb25z
dFN0cmluZyBjb25zdCYga2V5KSBjb25zdCB7Ci0gIFZhbHVlIGNvbnN0KiBmb3VuZCA9IGZpbmQo
a2V5LmNfc3RyKCksIGtleS5lbmRfY19zdHIoKSk7Ci0gIGlmICghZm91bmQpCi0gICAgcmV0dXJu
IG51bGxTaW5nbGV0b24oKTsKLSAgcmV0dXJuICpmb3VuZDsKLX0KLSNlbmRpZgotCi1WYWx1ZSYg
VmFsdWU6OmFwcGVuZChjb25zdCBWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuICgqdGhpcylbc2l6ZSgp
XSA9IHZhbHVlOyB9Ci0KLVZhbHVlJiBWYWx1ZTo6YXBwZW5kKFZhbHVlJiYgdmFsdWUpIHsKLSAg
cmV0dXJuICgqdGhpcylbc2l6ZSgpXSA9IHN0ZDo6bW92ZSh2YWx1ZSk7Ci19Ci0KLVZhbHVlIFZh
bHVlOjpnZXQoY2hhciBjb25zdCogYmVnaW4sCi0gICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qq
IGVuZCwKLSAgICAgICAgICAgICAgICAgVmFsdWUgY29uc3QmIGRlZmF1bHRWYWx1ZSkgY29uc3Qg
ewotICBWYWx1ZSBjb25zdCogZm91bmQgPSBmaW5kKGJlZ2luLCBlbmQpOwotICByZXR1cm4gIWZv
dW5kID8gZGVmYXVsdFZhbHVlIDogKmZvdW5kOwotfQotVmFsdWUgVmFsdWU6OmdldChjaGFyIGNv
bnN0KiBrZXksIFZhbHVlIGNvbnN0JiBkZWZhdWx0VmFsdWUpIGNvbnN0IHsKLSAgcmV0dXJuIGdl
dChrZXksIGtleSArIHN0cmxlbihrZXkpLCBkZWZhdWx0VmFsdWUpOwotfQotVmFsdWUgVmFsdWU6
OmdldChTdHJpbmcgY29uc3QmIGtleSwgVmFsdWUgY29uc3QmIGRlZmF1bHRWYWx1ZSkgY29uc3Qg
ewotICByZXR1cm4gZ2V0KGtleS5kYXRhKCksIGtleS5kYXRhKCkgKyBrZXkubGVuZ3RoKCksIGRl
ZmF1bHRWYWx1ZSk7Ci19Ci0KLWJvb2wgVmFsdWU6OnJlbW92ZU1lbWJlcihjb25zdCBjaGFyKiBi
ZWdpbiwgY29uc3QgY2hhciogZW5kLCBWYWx1ZSogcmVtb3ZlZCkgewotICBpZiAodHlwZSgpICE9
IG9iamVjdFZhbHVlKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIENaU3RyaW5nIGFjdHVh
bEtleShiZWdpbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGJlZ2luKSwKLSAgICAgICAg
ICAgICAgICAgICAgIENaU3RyaW5nOjpub0R1cGxpY2F0aW9uKTsKLSAgYXV0byBpdCA9IHZhbHVl
Xy5tYXBfLT5maW5kKGFjdHVhbEtleSk7Ci0gIGlmIChpdCA9PSB2YWx1ZV8ubWFwXy0+ZW5kKCkp
Ci0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAocmVtb3ZlZCkKLSAgICAqcmVtb3ZlZCA9IHN0ZDo6
bW92ZShpdC0+c2Vjb25kKTsKLSAgdmFsdWVfLm1hcF8tPmVyYXNlKGl0KTsKLSAgcmV0dXJuIHRy
dWU7Ci19Ci1ib29sIFZhbHVlOjpyZW1vdmVNZW1iZXIoY29uc3QgY2hhcioga2V5LCBWYWx1ZSog
cmVtb3ZlZCkgewotICByZXR1cm4gcmVtb3ZlTWVtYmVyKGtleSwga2V5ICsgc3RybGVuKGtleSks
IHJlbW92ZWQpOwotfQotYm9vbCBWYWx1ZTo6cmVtb3ZlTWVtYmVyKFN0cmluZyBjb25zdCYga2V5
LCBWYWx1ZSogcmVtb3ZlZCkgewotICByZXR1cm4gcmVtb3ZlTWVtYmVyKGtleS5kYXRhKCksIGtl
eS5kYXRhKCkgKyBrZXkubGVuZ3RoKCksIHJlbW92ZWQpOwotfQotdm9pZCBWYWx1ZTo6cmVtb3Zl
TWVtYmVyKGNvbnN0IGNoYXIqIGtleSkgewotICBKU09OX0FTU0VSVF9NRVNTQUdFKHR5cGUoKSA9
PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IG9iamVjdFZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICJpbiBKc29uOjpWYWx1ZTo6cmVtb3ZlTWVtYmVyKCk6IHJlcXVpcmVzIG9iamVjdFZhbHVl
Iik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgIHJldHVybjsKLQotICBDWlN0cmlu
ZyBhY3R1YWxLZXkoa2V5LCB1bnNpZ25lZChzdHJsZW4oa2V5KSksIENaU3RyaW5nOjpub0R1cGxp
Y2F0aW9uKTsKLSAgdmFsdWVfLm1hcF8tPmVyYXNlKGFjdHVhbEtleSk7Ci19Ci12b2lkIFZhbHVl
OjpyZW1vdmVNZW1iZXIoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmVtb3ZlTWVtYmVyKGtleS5jX3N0
cigpKTsgfQotCi1ib29sIFZhbHVlOjpyZW1vdmVJbmRleChBcnJheUluZGV4IGluZGV4LCBWYWx1
ZSogcmVtb3ZlZCkgewotICBpZiAodHlwZSgpICE9IGFycmF5VmFsdWUpIHsKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIH0KLSAgQ1pTdHJpbmcga2V5KGluZGV4KTsKLSAgYXV0byBpdCA9IHZhbHVlXy5t
YXBfLT5maW5kKGtleSk7Ci0gIGlmIChpdCA9PSB2YWx1ZV8ubWFwXy0+ZW5kKCkpIHsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKHJlbW92ZWQpCi0gICAgKnJlbW92ZWQgPSBpdC0+c2Vj
b25kOwotICBBcnJheUluZGV4IG9sZFNpemUgPSBzaXplKCk7Ci0gIC8vIHNoaWZ0IGxlZnQgYWxs
IGl0ZW1zIGxlZnQsIGludG8gdGhlIHBsYWNlIG9mIHRoZSAicmVtb3ZlZCIKLSAgZm9yIChBcnJh
eUluZGV4IGkgPSBpbmRleDsgaSA8IChvbGRTaXplIC0gMSk7ICsraSkgewotICAgIENaU3RyaW5n
IGtlZXkoaSk7Ci0gICAgKCp2YWx1ZV8ubWFwXylba2VleV0gPSAoKnRoaXMpW2kgKyAxXTsKLSAg
fQotICAvLyBlcmFzZSB0aGUgbGFzdCBvbmUgKCJsZWZ0b3ZlciIpCi0gIENaU3RyaW5nIGtleUxh
c3Qob2xkU2l6ZSAtIDEpOwotICBhdXRvIGl0TGFzdCA9IHZhbHVlXy5tYXBfLT5maW5kKGtleUxh
c3QpOwotICB2YWx1ZV8ubWFwXy0+ZXJhc2UoaXRMYXN0KTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0K
LSNpZmRlZiBKU09OX1VTRV9DUFBUTAotVmFsdWUgVmFsdWU6OmdldChjb25zdCBDcHBUTDo6Q29u
c3RTdHJpbmcmIGtleSwKLSAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWUmIGRlZmF1bHRWYWx1
ZSkgY29uc3QgewotICByZXR1cm4gZ2V0KGtleS5jX3N0cigpLCBrZXkuZW5kX2Nfc3RyKCksIGRl
ZmF1bHRWYWx1ZSk7Ci19Ci0jZW5kaWYKLQotYm9vbCBWYWx1ZTo6aXNNZW1iZXIoY2hhciBjb25z
dCogYmVnaW4sIGNoYXIgY29uc3QqIGVuZCkgY29uc3QgewotICBWYWx1ZSBjb25zdCogdmFsdWUg
PSBmaW5kKGJlZ2luLCBlbmQpOwotICByZXR1cm4gbnVsbHB0ciAhPSB2YWx1ZTsKLX0KLWJvb2wg
VmFsdWU6OmlzTWVtYmVyKGNoYXIgY29uc3QqIGtleSkgY29uc3QgewotICByZXR1cm4gaXNNZW1i
ZXIoa2V5LCBrZXkgKyBzdHJsZW4oa2V5KSk7Ci19Ci1ib29sIFZhbHVlOjppc01lbWJlcihTdHJp
bmcgY29uc3QmIGtleSkgY29uc3QgewotICByZXR1cm4gaXNNZW1iZXIoa2V5LmRhdGEoKSwga2V5
LmRhdGEoKSArIGtleS5sZW5ndGgoKSk7Ci19Ci0KLSNpZmRlZiBKU09OX1VTRV9DUFBUTAotYm9v
bCBWYWx1ZTo6aXNNZW1iZXIoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiBrZXkpIGNvbnN0IHsK
LSAgcmV0dXJuIGlzTWVtYmVyKGtleS5jX3N0cigpLCBrZXkuZW5kX2Nfc3RyKCkpOwotfQotI2Vu
ZGlmCi0KLVZhbHVlOjpNZW1iZXJzIFZhbHVlOjpnZXRNZW1iZXJOYW1lcygpIGNvbnN0IHsKLSAg
SlNPTl9BU1NFUlRfTUVTU0FHRSgKLSAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgp
ID09IG9iamVjdFZhbHVlLAotICAgICAgImluIEpzb246OlZhbHVlOjpnZXRNZW1iZXJOYW1lcygp
LCB2YWx1ZSBtdXN0IGJlIG9iamVjdFZhbHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVl
KQotICAgIHJldHVybiBWYWx1ZTo6TWVtYmVycygpOwotICBNZW1iZXJzIG1lbWJlcnM7Ci0gIG1l
bWJlcnMucmVzZXJ2ZSh2YWx1ZV8ubWFwXy0+c2l6ZSgpKTsKLSAgT2JqZWN0VmFsdWVzOjpjb25z
dF9pdGVyYXRvciBpdCA9IHZhbHVlXy5tYXBfLT5iZWdpbigpOwotICBPYmplY3RWYWx1ZXM6OmNv
bnN0X2l0ZXJhdG9yIGl0RW5kID0gdmFsdWVfLm1hcF8tPmVuZCgpOwotICBmb3IgKDsgaXQgIT0g
aXRFbmQ7ICsraXQpIHsKLSAgICBtZW1iZXJzLnB1c2hfYmFjayhTdHJpbmcoKCppdCkuZmlyc3Qu
ZGF0YSgpLCAoKml0KS5maXJzdC5sZW5ndGgoKSkpOwotICB9Ci0gIHJldHVybiBtZW1iZXJzOwot
fQotLy8KLS8vIyBpZmRlZiBKU09OX1VTRV9DUFBUTAotLy8gRW51bU1lbWJlck5hbWVzCi0vLyBW
YWx1ZTo6ZW51bU1lbWJlck5hbWVzKCkgY29uc3QKLS8vewotLy8gICBpZiAoIHR5cGUoKSA9PSBv
YmplY3RWYWx1ZSApCi0vLyAgIHsKLS8vICAgICAgcmV0dXJuIENwcFRMOjpFbnVtOjphbnkoICBD
cHBUTDo6RW51bTo6dHJhbnNmb3JtKAotLy8gICAgICAgICBDcHBUTDo6RW51bTo6a2V5cyggKih2
YWx1ZV8ubWFwXyksIENwcFRMOjpUeXBlPGNvbnN0IENaU3RyaW5nICY+KCkgKSwKLS8vICAgICAg
ICAgTWVtYmVyTmFtZXNUcmFuc2Zvcm0oKSApICk7Ci0vLyAgIH0KLS8vICAgcmV0dXJuIEVudW1N
ZW1iZXJOYW1lcygpOwotLy99Ci0vLwotLy8KLS8vIEVudW1WYWx1ZXMKLS8vIFZhbHVlOjplbnVt
VmFsdWVzKCkgY29uc3QKLS8vewotLy8gICBpZiAoIHR5cGUoKSA9PSBvYmplY3RWYWx1ZSAgfHwg
IHR5cGUoKSA9PSBhcnJheVZhbHVlICkKLS8vICAgICAgcmV0dXJuIENwcFRMOjpFbnVtOjphbnlW
YWx1ZXMoICoodmFsdWVfLm1hcF8pLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ3BwVEw6OlR5cGU8Y29uc3QgVmFsdWUgJj4oKSApOwotLy8gICByZXR1cm4gRW51bVZh
bHVlcygpOwotLy99Ci0vLwotLy8jIGVuZGlmCi0KLXN0YXRpYyBib29sIElzSW50ZWdyYWwoZG91
YmxlIGQpIHsKLSAgZG91YmxlIGludGVncmFsX3BhcnQ7Ci0gIHJldHVybiBtb2RmKGQsICZpbnRl
Z3JhbF9wYXJ0KSA9PSAwLjA7Ci19Ci0KLWJvb2wgVmFsdWU6OmlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBudWxsVmFsdWU7IH0KLQotYm9vbCBWYWx1ZTo6aXNCb29sKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IGJvb2xlYW5WYWx1ZTsgfQotCi1ib29sIFZhbHVlOjppc0ludCgp
IGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSNpZiBkZWZp
bmVkKEpTT05fSEFTX0lOVDY0KQotICAgIHJldHVybiB2YWx1ZV8uaW50XyA+PSBtaW5JbnQgJiYg
dmFsdWVfLmludF8gPD0gbWF4SW50OwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgot
ICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnVpbnRfIDw9IFVJbnQobWF4SW50
KTsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXyA+PSBtaW5JbnQg
JiYgdmFsdWVfLnJlYWxfIDw9IG1heEludCAmJgotICAgICAgICAgICBJc0ludGVncmFsKHZhbHVl
Xy5yZWFsXyk7Ci0gIGRlZmF1bHQ6Ci0gICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFZhbHVlOjppc1VJbnQoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0g
IGNhc2UgaW50VmFsdWU6Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgICByZXR1cm4g
dmFsdWVfLmludF8gPj0gMCAmJiBMYXJnZXN0VUludCh2YWx1ZV8uaW50XykgPD0gTGFyZ2VzdFVJ
bnQobWF4VUludCk7Ci0jZWxzZQotICAgIHJldHVybiB2YWx1ZV8uaW50XyA+PSAwOwotI2VuZGlm
Ci0gIGNhc2UgdWludFZhbHVlOgotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gICAgcmV0
dXJuIHZhbHVlXy51aW50XyA8PSBtYXhVSW50OwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgotICBjYXNlIHJlYWxWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnJlYWxfID49IDAgJiYg
dmFsdWVfLnJlYWxfIDw9IG1heFVJbnQgJiYKLSAgICAgICAgICAgSXNJbnRlZ3JhbCh2YWx1ZV8u
cmVhbF8pOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBWYWx1ZTo6aXNJbnQ2NCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05fSEFTX0lO
VDY0KQotICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIGludFZhbHVlOgotICAgIHJldHVybiB0
cnVlOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnVpbnRfIDw9IFVJbnQ2
NChtYXhJbnQ2NCk7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAgIC8vIE5vdGUgdGhhdCBtYXhJbnQ2
NCAoPSAyXjYzIC0gMSkgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhCi0gICAgLy8g
ZG91YmxlLCBzbyBkb3VibGUobWF4SW50NjQpIHdpbGwgYmUgcm91bmRlZCB1cCB0byAyXjYzLiBU
aGVyZWZvcmUgd2UKLSAgICAvLyByZXF1aXJlIHRoZSB2YWx1ZSB0byBiZSBzdHJpY3RseSBsZXNz
IHRoYW4gdGhlIGxpbWl0LgotICAgIHJldHVybiB2YWx1ZV8ucmVhbF8gPj0gZG91YmxlKG1pbklu
dDY0KSAmJgotICAgICAgICAgICB2YWx1ZV8ucmVhbF8gPCBkb3VibGUobWF4SW50NjQpICYmIElz
SW50ZWdyYWwodmFsdWVfLnJlYWxfKTsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotI2Vu
ZGlmIC8vIEpTT05fSEFTX0lOVDY0Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBWYWx1ZTo6
aXNVSW50NjQoKSBjb25zdCB7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgc3dpdGNo
ICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLmludF8gPj0g
MDsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGNhc2UgcmVhbFZhbHVl
OgotICAgIC8vIE5vdGUgdGhhdCBtYXhVSW50NjQgKD0gMl42NCAtIDEpIGlzIG5vdCBleGFjdGx5
IHJlcHJlc2VudGFibGUgYXMgYQotICAgIC8vIGRvdWJsZSwgc28gZG91YmxlKG1heFVJbnQ2NCkg
d2lsbCBiZSByb3VuZGVkIHVwIHRvIDJeNjQuIFRoZXJlZm9yZSB3ZQotICAgIC8vIHJlcXVpcmUg
dGhlIHZhbHVlIHRvIGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgbGltaXQuCi0gICAgcmV0dXJu
IHZhbHVlXy5yZWFsXyA+PSAwICYmIHZhbHVlXy5yZWFsXyA8IG1heFVJbnQ2NEFzRG91YmxlICYm
Ci0gICAgICAgICAgIElzSW50ZWdyYWwodmFsdWVfLnJlYWxfKTsKLSAgZGVmYXVsdDoKLSAgICBi
cmVhazsKLSAgfQotI2VuZGlmIC8vIEpTT05fSEFTX0lOVDY0Ci0gIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBWYWx1ZTo6aXNJbnRlZ3JhbCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsK
LSAgY2FzZSBpbnRWYWx1ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHRydWU7Ci0g
IGNhc2UgcmVhbFZhbHVlOgotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gICAgLy8gTm90
ZSB0aGF0IG1heFVJbnQ2NCAoPSAyXjY0IC0gMSkgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJs
ZSBhcyBhCi0gICAgLy8gZG91YmxlLCBzbyBkb3VibGUobWF4VUludDY0KSB3aWxsIGJlIHJvdW5k
ZWQgdXAgdG8gMl42NC4gVGhlcmVmb3JlIHdlCi0gICAgLy8gcmVxdWlyZSB0aGUgdmFsdWUgdG8g
YmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBsaW1pdC4KLSAgICByZXR1cm4gdmFsdWVfLnJlYWxf
ID49IGRvdWJsZShtaW5JbnQ2NCkgJiYKLSAgICAgICAgICAgdmFsdWVfLnJlYWxfIDwgbWF4VUlu
dDY0QXNEb3VibGUgJiYgSXNJbnRlZ3JhbCh2YWx1ZV8ucmVhbF8pOwotI2Vsc2UKLSAgICByZXR1
cm4gdmFsdWVfLnJlYWxfID49IG1pbkludCAmJiB2YWx1ZV8ucmVhbF8gPD0gbWF4VUludCAmJgot
ICAgICAgICAgICBJc0ludGVncmFsKHZhbHVlXy5yZWFsXyk7Ci0jZW5kaWYgLy8gSlNPTl9IQVNf
SU5UNjQKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgVmFsdWU6OmlzRG91YmxlKCkgY29uc3QgewotICByZXR1cm4gdHlwZSgpID09IGludFZh
bHVlIHx8IHR5cGUoKSA9PSB1aW50VmFsdWUgfHwgdHlwZSgpID09IHJlYWxWYWx1ZTsKLX0KLQot
Ym9vbCBWYWx1ZTo6aXNOdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaXNEb3VibGUoKTsgfQotCi1i
b29sIFZhbHVlOjppc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBzdHJpbmdWYWx1
ZTsgfQotCi1ib29sIFZhbHVlOjppc0FycmF5KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IGFy
cmF5VmFsdWU7IH0KLQotYm9vbCBWYWx1ZTo6aXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gb2JqZWN0VmFsdWU7IH0KLQotVmFsdWU6OkNvbW1lbnRzOjpDb21tZW50cyhjb25zdCBD
b21tZW50cyYgdGhhdCkKLSAgICA6IHB0cl97Y2xvbmVVbmlxdWUodGhhdC5wdHJfKX0ge30KLQot
VmFsdWU6OkNvbW1lbnRzOjpDb21tZW50cyhDb21tZW50cyYmIHRoYXQpIDogcHRyX3tzdGQ6Om1v
dmUodGhhdC5wdHJfKX0ge30KLQotVmFsdWU6OkNvbW1lbnRzJiBWYWx1ZTo6Q29tbWVudHM6Om9w
ZXJhdG9yPShjb25zdCBDb21tZW50cyYgdGhhdCkgewotICBwdHJfID0gY2xvbmVVbmlxdWUodGhh
dC5wdHJfKTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1WYWx1ZTo6Q29tbWVudHMmIFZhbHVlOjpD
b21tZW50czo6b3BlcmF0b3I9KENvbW1lbnRzJiYgdGhhdCkgewotICBwdHJfID0gc3RkOjptb3Zl
KHRoYXQucHRyXyk7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotYm9vbCBWYWx1ZTo6Q29tbWVudHM6
OmhhcyhDb21tZW50UGxhY2VtZW50IHNsb3QpIGNvbnN0IHsKLSAgcmV0dXJuIHB0cl8gJiYgISgq
cHRyXylbc2xvdF0uZW1wdHkoKTsKLX0KLQotU3RyaW5nIFZhbHVlOjpDb21tZW50czo6Z2V0KENv
bW1lbnRQbGFjZW1lbnQgc2xvdCkgY29uc3QgewotICBpZiAoIXB0cl8pCi0gICAgcmV0dXJuIHt9
OwotICByZXR1cm4gKCpwdHJfKVtzbG90XTsKLX0KLQotdm9pZCBWYWx1ZTo6Q29tbWVudHM6OnNl
dChDb21tZW50UGxhY2VtZW50IHNsb3QsIFN0cmluZyBjb21tZW50KSB7Ci0gIGlmICghcHRyXykg
ewotICAgIHB0cl8gPSBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+KG5ldyBBcnJheSgpKTsKLSAgfQot
ICAoKnB0cl8pW3Nsb3RdID0gc3RkOjptb3ZlKGNvbW1lbnQpOwotfQotCi12b2lkIFZhbHVlOjpz
ZXRDb21tZW50KFN0cmluZyBjb21tZW50LCBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCkgewot
ICBpZiAoIWNvbW1lbnQuZW1wdHkoKSAmJiAoY29tbWVudC5iYWNrKCkgPT0gJ1xuJykpIHsKLSAg
ICAvLyBBbHdheXMgZGlzY2FyZCB0cmFpbGluZyBuZXdsaW5lLCB0byBhaWQgaW5kZW50YXRpb24u
Ci0gICAgY29tbWVudC5wb3BfYmFjaygpOwotICB9Ci0gIEpTT05fQVNTRVJUKCFjb21tZW50LmVt
cHR5KCkpOwotICBKU09OX0FTU0VSVF9NRVNTQUdFKAotICAgICAgY29tbWVudFswXSA9PSAnXDAn
IHx8IGNvbW1lbnRbMF0gPT0gJy8nLAotICAgICAgImluIEpzb246OlZhbHVlOjpzZXRDb21tZW50
KCk6IENvbW1lbnRzIG11c3Qgc3RhcnQgd2l0aCAvIik7Ci0gIGNvbW1lbnRzXy5zZXQocGxhY2Vt
ZW50LCBzdGQ6Om1vdmUoY29tbWVudCkpOwotfQotCi1ib29sIFZhbHVlOjpoYXNDb21tZW50KENv
bW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSBjb25zdCB7Ci0gIHJldHVybiBjb21tZW50c18uaGFz
KHBsYWNlbWVudCk7Ci19Ci0KLVN0cmluZyBWYWx1ZTo6Z2V0Q29tbWVudChDb21tZW50UGxhY2Vt
ZW50IHBsYWNlbWVudCkgY29uc3QgewotICByZXR1cm4gY29tbWVudHNfLmdldChwbGFjZW1lbnQp
OwotfQotCi12b2lkIFZhbHVlOjpzZXRPZmZzZXRTdGFydChwdHJkaWZmX3Qgc3RhcnQpIHsgc3Rh
cnRfID0gc3RhcnQ7IH0KLQotdm9pZCBWYWx1ZTo6c2V0T2Zmc2V0TGltaXQocHRyZGlmZl90IGxp
bWl0KSB7IGxpbWl0XyA9IGxpbWl0OyB9Ci0KLXB0cmRpZmZfdCBWYWx1ZTo6Z2V0T2Zmc2V0U3Rh
cnQoKSBjb25zdCB7IHJldHVybiBzdGFydF87IH0KLQotcHRyZGlmZl90IFZhbHVlOjpnZXRPZmZz
ZXRMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIGxpbWl0XzsgfQotCi1TdHJpbmcgVmFsdWU6OnRvU3R5
bGVkU3RyaW5nKCkgY29uc3QgewotICBTdHJlYW1Xcml0ZXJCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAg
U3RyaW5nIG91dCA9IHRoaXMtPmhhc0NvbW1lbnQoY29tbWVudEJlZm9yZSkgPyAiXG4iIDogIiI7
Ci0gIG91dCArPSBKc29uOjp3cml0ZVN0cmluZyhidWlsZGVyLCAqdGhpcyk7Ci0gIG91dCArPSAn
XG4nOwotCi0gIHJldHVybiBvdXQ7Ci19Ci0KLVZhbHVlOjpjb25zdF9pdGVyYXRvciBWYWx1ZTo6
YmVnaW4oKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2UgYXJyYXlWYWx1ZToK
LSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1hcF8pCi0gICAgICByZXR1cm4g
Y29uc3RfaXRlcmF0b3IodmFsdWVfLm1hcF8tPmJlZ2luKCkpOwotICAgIGJyZWFrOwotICBkZWZh
dWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiB7fTsKLX0KLQotVmFsdWU6OmNvbnN0X2l0
ZXJhdG9yIFZhbHVlOjplbmQoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2Ug
YXJyYXlWYWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1hcF8pCi0g
ICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodmFsdWVfLm1hcF8tPmVuZCgpKTsKLSAgICBicmVh
azsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotICByZXR1cm4ge307Ci19Ci0KLVZhbHVl
OjppdGVyYXRvciBWYWx1ZTo6YmVnaW4oKSB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2Ug
YXJyYXlWYWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1hcF8pCi0g
ICAgICByZXR1cm4gaXRlcmF0b3IodmFsdWVfLm1hcF8tPmJlZ2luKCkpOwotICAgIGJyZWFrOwot
ICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBpdGVyYXRvcigpOwotfQotCi1W
YWx1ZTo6aXRlcmF0b3IgVmFsdWU6OmVuZCgpIHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2Fz
ZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIGlmICh2YWx1ZV8ubWFwXykK
LSAgICAgIHJldHVybiBpdGVyYXRvcih2YWx1ZV8ubWFwXy0+ZW5kKCkpOwotICAgIGJyZWFrOwot
ICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBpdGVyYXRvcigpOwotfQotCi0v
LyBjbGFzcyBQYXRoQXJndW1lbnQKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1QYXRoQXJndW1lbnQ6OlBhdGhB
cmd1bWVudCgpIDoga2V5XygpIHt9Ci0KLVBhdGhBcmd1bWVudDo6UGF0aEFyZ3VtZW50KEFycmF5
SW5kZXggaW5kZXgpCi0gICAgOiBrZXlfKCksIGluZGV4XyhpbmRleCksIGtpbmRfKGtpbmRJbmRl
eCkge30KLQotUGF0aEFyZ3VtZW50OjpQYXRoQXJndW1lbnQoY29uc3QgY2hhcioga2V5KQotICAg
IDoga2V5XyhrZXkpLCBpbmRleF8oKSwga2luZF8oa2luZEtleSkge30KLQotUGF0aEFyZ3VtZW50
OjpQYXRoQXJndW1lbnQoY29uc3QgU3RyaW5nJiBrZXkpCi0gICAgOiBrZXlfKGtleS5jX3N0cigp
KSwgaW5kZXhfKCksIGtpbmRfKGtpbmRLZXkpIHt9Ci0KLS8vIGNsYXNzIFBhdGgKLS8vIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi1QYXRoOjpQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwKLSAgICAgICAgICAgY29uc3Qg
UGF0aEFyZ3VtZW50JiBhMSwKLSAgICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhMiwKLSAg
ICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhMywKLSAgICAgICAgICAgY29uc3QgUGF0aEFy
Z3VtZW50JiBhNCwKLSAgICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhNSkgewotICBJbkFy
Z3MgaW47Ci0gIGluLnJlc2VydmUoNSk7Ci0gIGluLnB1c2hfYmFjaygmYTEpOwotICBpbi5wdXNo
X2JhY2soJmEyKTsKLSAgaW4ucHVzaF9iYWNrKCZhMyk7Ci0gIGluLnB1c2hfYmFjaygmYTQpOwot
ICBpbi5wdXNoX2JhY2soJmE1KTsKLSAgbWFrZVBhdGgocGF0aCwgaW4pOwotfQotCi12b2lkIFBh
dGg6Om1ha2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSW5BcmdzJiBpbikgewotICBj
b25zdCBjaGFyKiBjdXJyZW50ID0gcGF0aC5jX3N0cigpOwotICBjb25zdCBjaGFyKiBlbmQgPSBj
dXJyZW50ICsgcGF0aC5sZW5ndGgoKTsKLSAgYXV0byBpdEluQXJnID0gaW4uYmVnaW4oKTsKLSAg
d2hpbGUgKGN1cnJlbnQgIT0gZW5kKSB7Ci0gICAgaWYgKCpjdXJyZW50ID09ICdbJykgewotICAg
ICAgKytjdXJyZW50OwotICAgICAgaWYgKCpjdXJyZW50ID09ICclJykKLSAgICAgICAgYWRkUGF0
aEluQXJnKHBhdGgsIGluLCBpdEluQXJnLCBQYXRoQXJndW1lbnQ6OmtpbmRJbmRleCk7Ci0gICAg
ICBlbHNlIHsKLSAgICAgICAgQXJyYXlJbmRleCBpbmRleCA9IDA7Ci0gICAgICAgIGZvciAoOyBj
dXJyZW50ICE9IGVuZCAmJiAqY3VycmVudCA+PSAnMCcgJiYgKmN1cnJlbnQgPD0gJzknOyArK2N1
cnJlbnQpCi0gICAgICAgICAgaW5kZXggPSBpbmRleCAqIDEwICsgQXJyYXlJbmRleCgqY3VycmVu
dCAtICcwJyk7Ci0gICAgICAgIGFyZ3NfLnB1c2hfYmFjayhpbmRleCk7Ci0gICAgICB9Ci0gICAg
ICBpZiAoY3VycmVudCA9PSBlbmQgfHwgKisrY3VycmVudCAhPSAnXScpCi0gICAgICAgIGludmFs
aWRQYXRoKHBhdGgsIGludChjdXJyZW50IC0gcGF0aC5jX3N0cigpKSk7Ci0gICAgfSBlbHNlIGlm
ICgqY3VycmVudCA9PSAnJScpIHsKLSAgICAgIGFkZFBhdGhJbkFyZyhwYXRoLCBpbiwgaXRJbkFy
ZywgUGF0aEFyZ3VtZW50OjpraW5kS2V5KTsKLSAgICAgICsrY3VycmVudDsKLSAgICB9IGVsc2Ug
aWYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnXScpIHsKLSAgICAgICsrY3VycmVu
dDsKLSAgICB9IGVsc2UgewotICAgICAgY29uc3QgY2hhciogYmVnaW5OYW1lID0gY3VycmVudDsK
LSAgICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiAhc3RyY2hyKCJbLiIsICpjdXJyZW50KSkK
LSAgICAgICAgKytjdXJyZW50OwotICAgICAgYXJnc18ucHVzaF9iYWNrKFN0cmluZyhiZWdpbk5h
bWUsIGN1cnJlbnQpKTsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBQYXRoOjphZGRQYXRoSW5Bcmco
Y29uc3QgU3RyaW5nJiAvKnBhdGgqLywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElu
QXJncyYgaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBJbkFyZ3M6OmNvbnN0X2l0ZXJhdG9y
JiBpdEluQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgUGF0aEFyZ3VtZW50OjpLaW5kIGtp
bmQpIHsKLSAgaWYgKGl0SW5BcmcgPT0gaW4uZW5kKCkpIHsKLSAgICAvLyBFcnJvcjogbWlzc2lu
ZyBhcmd1bWVudCAlZAotICB9IGVsc2UgaWYgKCgqaXRJbkFyZyktPmtpbmRfICE9IGtpbmQpIHsK
LSAgICAvLyBFcnJvcjogYmFkIGFyZ3VtZW50IHR5cGUKLSAgfSBlbHNlIHsKLSAgICBhcmdzXy5w
dXNoX2JhY2soKippdEluQXJnKyspOwotICB9Ci19Ci0KLXZvaWQgUGF0aDo6aW52YWxpZFBhdGgo
Y29uc3QgU3RyaW5nJiAvKnBhdGgqLywgaW50IC8qbG9jYXRpb24qLykgewotICAvLyBFcnJvcjog
aW52YWxpZCBwYXRoLgotfQotCi1jb25zdCBWYWx1ZSYgUGF0aDo6cmVzb2x2ZShjb25zdCBWYWx1
ZSYgcm9vdCkgY29uc3QgewotICBjb25zdCBWYWx1ZSogbm9kZSA9ICZyb290OwotICBmb3IgKGNv
bnN0IGF1dG8mIGFyZyA6IGFyZ3NfKSB7Ci0gICAgaWYgKGFyZy5raW5kXyA9PSBQYXRoQXJndW1l
bnQ6OmtpbmRJbmRleCkgewotICAgICAgaWYgKCFub2RlLT5pc0FycmF5KCkgfHwgIW5vZGUtPmlz
VmFsaWRJbmRleChhcmcuaW5kZXhfKSkgewotICAgICAgICAvLyBFcnJvcjogdW5hYmxlIHRvIHJl
c29sdmUgcGF0aCAoYXJyYXkgdmFsdWUgZXhwZWN0ZWQgYXQgcG9zaXRpb24uLi4gKQotICAgICAg
ICByZXR1cm4gVmFsdWU6Om51bGxTaW5nbGV0b24oKTsKLSAgICAgIH0KLSAgICAgIG5vZGUgPSAm
KCgqbm9kZSlbYXJnLmluZGV4X10pOwotICAgIH0gZWxzZSBpZiAoYXJnLmtpbmRfID09IFBhdGhB
cmd1bWVudDo6a2luZEtleSkgewotICAgICAgaWYgKCFub2RlLT5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIC8vIEVycm9yOiB1bmFibGUgdG8gcmVzb2x2ZSBwYXRoIChvYmplY3QgdmFsdWUgZXhwZWN0
ZWQgYXQgcG9zaXRpb24uLi4pCi0gICAgICAgIHJldHVybiBWYWx1ZTo6bnVsbFNpbmdsZXRvbigp
OwotICAgICAgfQotICAgICAgbm9kZSA9ICYoKCpub2RlKVthcmcua2V5X10pOwotICAgICAgaWYg
KG5vZGUgPT0gJlZhbHVlOjpudWxsU2luZ2xldG9uKCkpIHsKLSAgICAgICAgLy8gRXJyb3I6IHVu
YWJsZSB0byByZXNvbHZlIHBhdGggKG9iamVjdCBoYXMgbm8gbWVtYmVyIG5hbWVkICcnIGF0Ci0g
ICAgICAgIC8vIHBvc2l0aW9uLi4uKQotICAgICAgICByZXR1cm4gVmFsdWU6Om51bGxTaW5nbGV0
b24oKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuICpub2RlOwotfQotCi1WYWx1ZSBQ
YXRoOjpyZXNvbHZlKGNvbnN0IFZhbHVlJiByb290LCBjb25zdCBWYWx1ZSYgZGVmYXVsdFZhbHVl
KSBjb25zdCB7Ci0gIGNvbnN0IFZhbHVlKiBub2RlID0gJnJvb3Q7Ci0gIGZvciAoY29uc3QgYXV0
byYgYXJnIDogYXJnc18pIHsKLSAgICBpZiAoYXJnLmtpbmRfID09IFBhdGhBcmd1bWVudDo6a2lu
ZEluZGV4KSB7Ci0gICAgICBpZiAoIW5vZGUtPmlzQXJyYXkoKSB8fCAhbm9kZS0+aXNWYWxpZElu
ZGV4KGFyZy5pbmRleF8pKQotICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwotICAgICAgbm9k
ZSA9ICYoKCpub2RlKVthcmcuaW5kZXhfXSk7Ci0gICAgfSBlbHNlIGlmIChhcmcua2luZF8gPT0g
UGF0aEFyZ3VtZW50OjpraW5kS2V5KSB7Ci0gICAgICBpZiAoIW5vZGUtPmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gICAgICBub2RlID0gJigoKm5vZGUpW2FyZy5r
ZXlfXSk7Ci0gICAgICBpZiAobm9kZSA9PSAmVmFsdWU6Om51bGxTaW5nbGV0b24oKSkKLSAgICAg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuICpub2RlOwotfQot
Ci1WYWx1ZSYgUGF0aDo6bWFrZShWYWx1ZSYgcm9vdCkgY29uc3QgewotICBWYWx1ZSogbm9kZSA9
ICZyb290OwotICBmb3IgKGNvbnN0IGF1dG8mIGFyZyA6IGFyZ3NfKSB7Ci0gICAgaWYgKGFyZy5r
aW5kXyA9PSBQYXRoQXJndW1lbnQ6OmtpbmRJbmRleCkgewotICAgICAgaWYgKCFub2RlLT5pc0Fy
cmF5KCkpIHsKLSAgICAgICAgLy8gRXJyb3I6IG5vZGUgaXMgbm90IGFuIGFycmF5IGF0IHBvc2l0
aW9uIC4uLgotICAgICAgfQotICAgICAgbm9kZSA9ICYoKCpub2RlKVthcmcuaW5kZXhfXSk7Ci0g
ICAgfSBlbHNlIGlmIChhcmcua2luZF8gPT0gUGF0aEFyZ3VtZW50OjpraW5kS2V5KSB7Ci0gICAg
ICBpZiAoIW5vZGUtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgLy8gRXJyb3I6IG5vZGUgaXMgbm90
IGFuIG9iamVjdCBhdCBwb3NpdGlvbi4uLgotICAgICAgfQotICAgICAgbm9kZSA9ICYoKCpub2Rl
KVthcmcua2V5X10pOwotICAgIH0KLSAgfQotICByZXR1cm4gKm5vZGU7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fdmFsdWVpdGVy
YXRvci5pbmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVlaXRlcmF0b3IuaW5sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTNkMjEwZGUzMWM2NGM4MzUxZTg0MWIxN2RhY2Iw
OGE1OTQ3OWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fdmFsdWVpdGVyYXRvci5pbmwKKysrIC9kZXYvbnVsbApA
QCAtMSwxNTkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxl
dXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNl
bnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlv
dXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkg
YXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotLy8gaW5jbHVkZWQg
YnkganNvbl92YWx1ZS5jcHAKLQotbmFtZXNwYWNlIEpzb24gewotCi0vLyAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBjbGFzcyBWYWx1ZUl0ZXJhdG9yQmFzZQotLy8g
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1WYWx1ZUl0ZXJhdG9yQmFz
ZTo6VmFsdWVJdGVyYXRvckJhc2UoKSA6IGN1cnJlbnRfKCkge30KLQotVmFsdWVJdGVyYXRvckJh
c2U6OlZhbHVlSXRlcmF0b3JCYXNlKAotICAgIGNvbnN0IFZhbHVlOjpPYmplY3RWYWx1ZXM6Oml0
ZXJhdG9yJiBjdXJyZW50KQotICAgIDogY3VycmVudF8oY3VycmVudCksIGlzTnVsbF8oZmFsc2Up
IHt9Ci0KLVZhbHVlJiBWYWx1ZUl0ZXJhdG9yQmFzZTo6ZGVyZWYoKSBjb25zdCB7IHJldHVybiBj
dXJyZW50Xy0+c2Vjb25kOyB9Ci0KLXZvaWQgVmFsdWVJdGVyYXRvckJhc2U6OmluY3JlbWVudCgp
IHsgKytjdXJyZW50XzsgfQotCi12b2lkIFZhbHVlSXRlcmF0b3JCYXNlOjpkZWNyZW1lbnQoKSB7
IC0tY3VycmVudF87IH0KLQotVmFsdWVJdGVyYXRvckJhc2U6OmRpZmZlcmVuY2VfdHlwZQotVmFs
dWVJdGVyYXRvckJhc2U6OmNvbXB1dGVEaXN0YW5jZShjb25zdCBTZWxmVHlwZSYgb3RoZXIpIGNv
bnN0IHsKLSNpZmRlZiBKU09OX1VTRV9DUFBUTF9TTUFMTE1BUAotICByZXR1cm4gb3RoZXIuY3Vy
cmVudF8gLSBjdXJyZW50XzsKLSNlbHNlCi0gIC8vIEl0ZXJhdG9yIGZvciBudWxsIHZhbHVlIGFy
ZSBpbml0aWFsaXplZCB1c2luZyB0aGUgZGVmYXVsdAotICAvLyBjb25zdHJ1Y3Rvciwgd2hpY2gg
aW5pdGlhbGl6ZSBjdXJyZW50XyB0byB0aGUgZGVmYXVsdAotICAvLyBzdGQ6Om1hcDo6aXRlcmF0
b3IuIEFzIGJlZ2luKCkgYW5kIGVuZCgpIGFyZSB0d28gaW5zdGFuY2UKLSAgLy8gb2YgdGhlIGRl
ZmF1bHQgc3RkOjptYXA6Oml0ZXJhdG9yLCB0aGV5IGNhbiBub3QgYmUgY29tcGFyZWQuCi0gIC8v
IFRvIGFsbG93IHRoaXMsIHdlIGhhbmRsZSB0aGlzIGNvbXBhcmlzb24gc3BlY2lmaWNhbGx5Lgot
ICBpZiAoaXNOdWxsXyAmJiBvdGhlci5pc051bGxfKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQot
ICAvLyBVc2FnZSBvZiBzdGQ6OmRpc3RhbmNlIGlzIG5vdCBwb3J0YWJsZSAoZG9lcyBub3QgY29t
cGlsZSB3aXRoIFN1biBTdHVkaW8gMTIKLSAgLy8gUm9ndWVXYXZlIFNUTCwKLSAgLy8gd2hpY2gg
aXMgdGhlIG9uZSB1c2VkIGJ5IGRlZmF1bHQpLgotICAvLyBVc2luZyBhIHBvcnRhYmxlIGhhbmQt
bWFkZSB2ZXJzaW9uIGZvciBub24gcmFuZG9tIGl0ZXJhdG9yIGluc3RlYWQ6Ci0gIC8vICAgcmV0
dXJuIGRpZmZlcmVuY2VfdHlwZSggc3RkOjpkaXN0YW5jZSggY3VycmVudF8sIG90aGVyLmN1cnJl
bnRfICkgKTsKLSAgZGlmZmVyZW5jZV90eXBlIG15RGlzdGFuY2UgPSAwOwotICBmb3IgKFZhbHVl
OjpPYmplY3RWYWx1ZXM6Oml0ZXJhdG9yIGl0ID0gY3VycmVudF87IGl0ICE9IG90aGVyLmN1cnJl
bnRfOwotICAgICAgICsraXQpIHsKLSAgICArK215RGlzdGFuY2U7Ci0gIH0KLSAgcmV0dXJuIG15
RGlzdGFuY2U7Ci0jZW5kaWYKLX0KLQotYm9vbCBWYWx1ZUl0ZXJhdG9yQmFzZTo6aXNFcXVhbChj
b25zdCBTZWxmVHlwZSYgb3RoZXIpIGNvbnN0IHsKLSAgaWYgKGlzTnVsbF8pIHsKLSAgICByZXR1
cm4gb3RoZXIuaXNOdWxsXzsKLSAgfQotICByZXR1cm4gY3VycmVudF8gPT0gb3RoZXIuY3VycmVu
dF87Ci19Ci0KLXZvaWQgVmFsdWVJdGVyYXRvckJhc2U6OmNvcHkoY29uc3QgU2VsZlR5cGUmIG90
aGVyKSB7Ci0gIGN1cnJlbnRfID0gb3RoZXIuY3VycmVudF87Ci0gIGlzTnVsbF8gPSBvdGhlci5p
c051bGxfOwotfQotCi1WYWx1ZSBWYWx1ZUl0ZXJhdG9yQmFzZTo6a2V5KCkgY29uc3QgewotICBj
b25zdCBWYWx1ZTo6Q1pTdHJpbmcgY3pzdHJpbmcgPSAoKmN1cnJlbnRfKS5maXJzdDsKLSAgaWYg
KGN6c3RyaW5nLmRhdGEoKSkgewotICAgIGlmIChjenN0cmluZy5pc1N0YXRpY1N0cmluZygpKQot
ICAgICAgcmV0dXJuIFZhbHVlKFN0YXRpY1N0cmluZyhjenN0cmluZy5kYXRhKCkpKTsKLSAgICBy
ZXR1cm4gVmFsdWUoY3pzdHJpbmcuZGF0YSgpLCBjenN0cmluZy5kYXRhKCkgKyBjenN0cmluZy5s
ZW5ndGgoKSk7Ci0gIH0KLSAgcmV0dXJuIFZhbHVlKGN6c3RyaW5nLmluZGV4KCkpOwotfQotCi1V
SW50IFZhbHVlSXRlcmF0b3JCYXNlOjppbmRleCgpIGNvbnN0IHsKLSAgY29uc3QgVmFsdWU6OkNa
U3RyaW5nIGN6c3RyaW5nID0gKCpjdXJyZW50XykuZmlyc3Q7Ci0gIGlmICghY3pzdHJpbmcuZGF0
YSgpKQotICAgIHJldHVybiBjenN0cmluZy5pbmRleCgpOwotICByZXR1cm4gVmFsdWU6OlVJbnQo
LTEpOwotfQotCi1TdHJpbmcgVmFsdWVJdGVyYXRvckJhc2U6Om5hbWUoKSBjb25zdCB7Ci0gIGNo
YXIgY29uc3QqIGtlZXk7Ci0gIGNoYXIgY29uc3QqIGVuZDsKLSAga2VleSA9IG1lbWJlck5hbWUo
JmVuZCk7Ci0gIGlmICgha2VleSkKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci0gIHJldHVybiBTdHJp
bmcoa2VleSwgZW5kKTsKLX0KLQotY2hhciBjb25zdCogVmFsdWVJdGVyYXRvckJhc2U6Om1lbWJl
ck5hbWUoKSBjb25zdCB7Ci0gIGNvbnN0IGNoYXIqIGNuYW1lID0gKCpjdXJyZW50XykuZmlyc3Qu
ZGF0YSgpOwotICByZXR1cm4gY25hbWUgPyBjbmFtZSA6ICIiOwotfQotCi1jaGFyIGNvbnN0KiBW
YWx1ZUl0ZXJhdG9yQmFzZTo6bWVtYmVyTmFtZShjaGFyIGNvbnN0KiogZW5kKSBjb25zdCB7Ci0g
IGNvbnN0IGNoYXIqIGNuYW1lID0gKCpjdXJyZW50XykuZmlyc3QuZGF0YSgpOwotICBpZiAoIWNu
YW1lKSB7Ci0gICAgKmVuZCA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLSAg
KmVuZCA9IGNuYW1lICsgKCpjdXJyZW50XykuZmlyc3QubGVuZ3RoKCk7Ci0gIHJldHVybiBjbmFt
ZTsKLX0KLQotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gY2xh
c3MgVmFsdWVDb25zdEl0ZXJhdG9yCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0KLVZhbHVlQ29uc3RJdGVyYXRvcjo6VmFsdWVDb25zdEl0ZXJhdG9yKCkgPSBkZWZh
dWx0OwotCi1WYWx1ZUNvbnN0SXRlcmF0b3I6OlZhbHVlQ29uc3RJdGVyYXRvcigKLSAgICBjb25z
dCBWYWx1ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciYgY3VycmVudCkKLSAgICA6IFZhbHVlSXRl
cmF0b3JCYXNlKGN1cnJlbnQpIHt9Ci0KLVZhbHVlQ29uc3RJdGVyYXRvcjo6VmFsdWVDb25zdEl0
ZXJhdG9yKFZhbHVlSXRlcmF0b3IgY29uc3QmIG90aGVyKQotICAgIDogVmFsdWVJdGVyYXRvckJh
c2Uob3RoZXIpIHt9Ci0KLVZhbHVlQ29uc3RJdGVyYXRvciYgVmFsdWVDb25zdEl0ZXJhdG9yOjoK
LW9wZXJhdG9yPShjb25zdCBWYWx1ZUl0ZXJhdG9yQmFzZSYgb3RoZXIpIHsKLSAgY29weShvdGhl
cik7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotLy8gY2xhc3MgVmFsdWVJdGVyYXRvcgotLy8gLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi1WYWx1ZUl0ZXJhdG9yOjpWYWx1ZUl0ZXJhdG9yKCkgPSBk
ZWZhdWx0OwotCi1WYWx1ZUl0ZXJhdG9yOjpWYWx1ZUl0ZXJhdG9yKGNvbnN0IFZhbHVlOjpPYmpl
Y3RWYWx1ZXM6Oml0ZXJhdG9yJiBjdXJyZW50KQotICAgIDogVmFsdWVJdGVyYXRvckJhc2UoY3Vy
cmVudCkge30KLQotVmFsdWVJdGVyYXRvcjo6VmFsdWVJdGVyYXRvcihjb25zdCBWYWx1ZUNvbnN0
SXRlcmF0b3ImIG90aGVyKQotICAgIDogVmFsdWVJdGVyYXRvckJhc2Uob3RoZXIpIHsKLSAgdGhy
b3dSdW50aW1lRXJyb3IoIkNvbnN0SXRlcmF0b3IgdG8gSXRlcmF0b3Igc2hvdWxkIG5ldmVyIGJl
IGFsbG93ZWQuIik7Ci19Ci0KLVZhbHVlSXRlcmF0b3I6OlZhbHVlSXRlcmF0b3IoY29uc3QgVmFs
dWVJdGVyYXRvciYgb3RoZXIpID0gZGVmYXVsdDsKLQotVmFsdWVJdGVyYXRvciYgVmFsdWVJdGVy
YXRvcjo6b3BlcmF0b3I9KGNvbnN0IFNlbGZUeXBlJiBvdGhlcikgewotICBjb3B5KG90aGVyKTsK
LSAgcmV0dXJuICp0aGlzOwotfQotCi19IC8vIG5hbWVzcGFjZSBKc29uCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3NyYy9saWJfanNvbi9qc29uX3dyaXRlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29u
X3dyaXRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZGZkOGNmNjA4Y2Nm
NTAzNTI3N2JmNTZkY2Y5MjVjYTIxNjBmZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl93cml0ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTI1MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMSBCYXB0aXN0ZSBM
ZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1J
VCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVk
IGluIHlvdXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9y
IGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmICFk
ZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgImpzb25fdG9vbC5oIgotI2lu
Y2x1ZGUgPGpzb24vd3JpdGVyLmg+Ci0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNPTl9JU19BTUFM
R0FNQVRJT04pCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1
ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDEx
MDNMCi0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotCi0jaWYgIWRlZmluZWQo
aXNuYW4pCi0jZGVmaW5lIGlzbmFuIHN0ZDo6aXNuYW4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQo
aXNmaW5pdGUpCi0jZGVmaW5lIGlzZmluaXRlIHN0ZDo6aXNmaW5pdGUKLSNlbmRpZgotCi0jZWxz
ZQotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGNzdGRpbz4KLQotI2lmIGRlZmluZWQoX01T
Q19WRVIpCi0jaWYgIWRlZmluZWQoaXNuYW4pCi0jaW5jbHVkZSA8ZmxvYXQuaD4KLSNkZWZpbmUg
aXNuYW4gX2lzbmFuCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKGlzZmluaXRlKQotI2luY2x1ZGUg
PGZsb2F0Lmg+Ci0jZGVmaW5lIGlzZmluaXRlIF9maW5pdGUKLSNlbmRpZgotCi0jaWYgIWRlZmlu
ZWQoX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTKQotI2RlZmluZSBfQ1JU
X1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVMgMQotI2VuZGlmIC8vX0NSVF9TRUNV
UkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTCi0KLSNlbmRpZiAvL19NU0NfVkVSCi0KLSNp
ZiBkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fU1ZSNCkgLy8gU29sYXJpcwotI2lmICFkZWZp
bmVkKGlzZmluaXRlKQotI2luY2x1ZGUgPGllZWVmcC5oPgotI2RlZmluZSBpc2Zpbml0ZSBmaW5p
dGUKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9faHB1eCkKLSNpZiAhZGVmaW5lZChp
c2Zpbml0ZSkKLSNpZiBkZWZpbmVkKF9faWE2NCkgJiYgIWRlZmluZWQoZmluaXRlKQotI2RlZmlu
ZSBpc2Zpbml0ZSh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgKChzaXplb2YoeCkgPT0gc2l6ZW9mKGZsb2F0KSA/IF9Jc2Zp
bml0ZWYoeCkgOiBfSXNGaW5pdGUoeCkpKQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jaWYg
IWRlZmluZWQoaXNuYW4pCi0vLyBJRUVFIHN0YW5kYXJkIHN0YXRlcyB0aGF0IE5hTiB2YWx1ZXMg
d2lsbCBub3QgY29tcGFyZSB0byB0aGVtc2VsdmVzCi0jZGVmaW5lIGlzbmFuKHgpICh4ICE9IHgp
Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKF9fQVBQTEVfXykKLSNpZiAhZGVmaW5lZChpc2Zpbml0
ZSkKLSNkZWZpbmUgaXNmaW5pdGUgZmluaXRlCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNp
ZiBkZWZpbmVkKF9NU0NfVkVSKQotLy8gRGlzYWJsZSB3YXJuaW5nIGFib3V0IHN0cmR1cCBiZWlu
ZyBkZXByZWNhdGVkLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2KQotI2VuZGlmCi0K
LW5hbWVzcGFjZSBKc29uIHsKLQotI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wgfHwgKGRlZmlu
ZWQoX0NQUExJQl9WRVIpICYmIF9DUFBMSUJfVkVSID49IDUyMCkKLXR5cGVkZWYgc3RkOjp1bmlx
dWVfcHRyPFN0cmVhbVdyaXRlcj4gU3RyZWFtV3JpdGVyUHRyOwotI2Vsc2UKLXR5cGVkZWYgc3Rk
OjphdXRvX3B0cjxTdHJlYW1Xcml0ZXI+IFN0cmVhbVdyaXRlclB0cjsKLSNlbmRpZgotCi1TdHJp
bmcgdmFsdWVUb1N0cmluZyhMYXJnZXN0SW50IHZhbHVlKSB7Ci0gIFVJbnRUb1N0cmluZ0J1ZmZl
ciBidWZmZXI7Ci0gIGNoYXIqIGN1cnJlbnQgPSBidWZmZXIgKyBzaXplb2YoYnVmZmVyKTsKLSAg
aWYgKHZhbHVlID09IFZhbHVlOjptaW5MYXJnZXN0SW50KSB7Ci0gICAgdWludFRvU3RyaW5nKExh
cmdlc3RVSW50KFZhbHVlOjptYXhMYXJnZXN0SW50KSArIDEsIGN1cnJlbnQpOwotICAgICotLWN1
cnJlbnQgPSAnLSc7Ci0gIH0gZWxzZSBpZiAodmFsdWUgPCAwKSB7Ci0gICAgdWludFRvU3RyaW5n
KExhcmdlc3RVSW50KC12YWx1ZSksIGN1cnJlbnQpOwotICAgICotLWN1cnJlbnQgPSAnLSc7Ci0g
IH0gZWxzZSB7Ci0gICAgdWludFRvU3RyaW5nKExhcmdlc3RVSW50KHZhbHVlKSwgY3VycmVudCk7
Ci0gIH0KLSAgYXNzZXJ0KGN1cnJlbnQgPj0gYnVmZmVyKTsKLSAgcmV0dXJuIGN1cnJlbnQ7Ci19
Ci0KLVN0cmluZyB2YWx1ZVRvU3RyaW5nKExhcmdlc3RVSW50IHZhbHVlKSB7Ci0gIFVJbnRUb1N0
cmluZ0J1ZmZlciBidWZmZXI7Ci0gIGNoYXIqIGN1cnJlbnQgPSBidWZmZXIgKyBzaXplb2YoYnVm
ZmVyKTsKLSAgdWludFRvU3RyaW5nKHZhbHVlLCBjdXJyZW50KTsKLSAgYXNzZXJ0KGN1cnJlbnQg
Pj0gYnVmZmVyKTsKLSAgcmV0dXJuIGN1cnJlbnQ7Ci19Ci0KLSNpZiBkZWZpbmVkKEpTT05fSEFT
X0lOVDY0KQotCi1TdHJpbmcgdmFsdWVUb1N0cmluZyhJbnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
VG9TdHJpbmcoTGFyZ2VzdEludCh2YWx1ZSkpOyB9Ci0KLVN0cmluZyB2YWx1ZVRvU3RyaW5nKFVJ
bnQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlVG9TdHJpbmcoTGFyZ2VzdFVJbnQodmFsdWUpKTsgfQot
Ci0jZW5kaWYgLy8gIyBpZiBkZWZpbmVkKEpTT05fSEFTX0lOVDY0KQotCi1uYW1lc3BhY2Ugewot
U3RyaW5nIHZhbHVlVG9TdHJpbmcoZG91YmxlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1c2VTcGVjaWFsRmxvYXRzLAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgIFByZWNpc2lvblR5cGUgcHJlY2lzaW9u
VHlwZSkgewotICAvLyBQcmludCBpbnRvIHRoZSBidWZmZXIuIFdlIG5lZWQgbm90IHJlcXVlc3Qg
dGhlIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9uCi0gIC8vIHRoYXQgYWx3YXlzIGhhcyBhIGRl
Y2ltYWwgcG9pbnQgYmVjYXVzZSBKU09OIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggdGhlCi0gIC8vIGNv
bmNlcHRzIG9mIHJlYWxzIGFuZCBpbnRlZ2Vycy4KLSAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpIHsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVwc1syXVszXSA9IHt7Ik5hTiIsICItSW5m
aW5pdHkiLCAiSW5maW5pdHkifSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7Im51bGwiLCAiLTFlKzk5OTkiLCAiMWUrOTk5OSJ9fTsKLSAgICByZXR1cm4gcmVw
c1t1c2VTcGVjaWFsRmxvYXRzID8gMCA6IDFdCi0gICAgICAgICAgICAgICBbaXNuYW4odmFsdWUp
ID8gMCA6ICh2YWx1ZSA8IDApID8gMSA6IDJdOwotICB9Ci0KLSAgU3RyaW5nIGJ1ZmZlcihzaXpl
X3QoMzYpLCAnXDAnKTsKLSAgd2hpbGUgKHRydWUpIHsKLSAgICBpbnQgbGVuID0ganNvbmNwcF9z
bnByaW50ZigKLSAgICAgICAgJipidWZmZXIuYmVnaW4oKSwgYnVmZmVyLnNpemUoKSwKLSAgICAg
ICAgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uVHlwZTo6c2lnbmlmaWNhbnREaWdpdHMpID8g
IiUuKmciIDogIiUuKmYiLAotICAgICAgICBwcmVjaXNpb24sIHZhbHVlKTsKLSAgICBhc3NlcnQo
bGVuID49IDApOwotICAgIGF1dG8gd291bGRQcmludCA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVu
KTsKLSAgICBpZiAod291bGRQcmludCA+PSBidWZmZXIuc2l6ZSgpKSB7Ci0gICAgICBidWZmZXIu
cmVzaXplKHdvdWxkUHJpbnQgKyAxKTsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBidWZm
ZXIucmVzaXplKHdvdWxkUHJpbnQpOwotICAgIGJyZWFrOwotICB9Ci0KLSAgYnVmZmVyLmVyYXNl
KGZpeE51bWVyaWNMb2NhbGUoYnVmZmVyLmJlZ2luKCksIGJ1ZmZlci5lbmQoKSksIGJ1ZmZlci5l
bmQoKSk7Ci0KLSAgLy8gc3RyaXAgdGhlIHplcm8gcGFkZGluZyBmcm9tIHRoZSByaWdodAotICBp
ZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb25UeXBlOjpkZWNpbWFsUGxhY2VzKSB7Ci0gICAg
YnVmZmVyLmVyYXNlKGZpeFplcm9zSW5UaGVFbmQoYnVmZmVyLmJlZ2luKCksIGJ1ZmZlci5lbmQo
KSksIGJ1ZmZlci5lbmQoKSk7Ci0gIH0KLQotICAvLyB0cnkgdG8gZW5zdXJlIHdlIHByZXNlcnZl
IHRoZSBmYWN0IHRoYXQgdGhpcyB3YXMgZ2l2ZW4gdG8gdXMgYXMgYSBkb3VibGUgb24KLSAgLy8g
aW5wdXQKLSAgaWYgKGJ1ZmZlci5maW5kKCcuJykgPT0gYnVmZmVyLm5wb3MgJiYgYnVmZmVyLmZp
bmQoJ2UnKSA9PSBidWZmZXIubnBvcykgewotICAgIGJ1ZmZlciArPSAiLjAiOwotICB9Ci0gIHJl
dHVybiBidWZmZXI7Ci19Ci19IC8vIG5hbWVzcGFjZQotCi1TdHJpbmcgdmFsdWVUb1N0cmluZyhk
b3VibGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJlY2lzaW9u
LAotICAgICAgICAgICAgICAgICAgICAgUHJlY2lzaW9uVHlwZSBwcmVjaXNpb25UeXBlKSB7Ci0g
IHJldHVybiB2YWx1ZVRvU3RyaW5nKHZhbHVlLCBmYWxzZSwgcHJlY2lzaW9uLCBwcmVjaXNpb25U
eXBlKTsKLX0KLQotU3RyaW5nIHZhbHVlVG9TdHJpbmcoYm9vbCB2YWx1ZSkgeyByZXR1cm4gdmFs
dWUgPyAidHJ1ZSIgOiAiZmFsc2UiOyB9Ci0KLXN0YXRpYyBib29sIGlzQW55Q2hhclJlcXVpcmVk
UXVvdGluZyhjaGFyIGNvbnN0KiBzLCBzaXplX3QgbikgewotICBhc3NlcnQocyB8fCAhbik7Ci0K
LSAgY2hhciBjb25zdCogY29uc3QgZW5kID0gcyArIG47Ci0gIGZvciAoY2hhciBjb25zdCogY3Vy
ID0gczsgY3VyIDwgZW5kOyArK2N1cikgewotICAgIGlmICgqY3VyID09ICdcXCcgfHwgKmN1ciA9
PSAnXCInIHx8ICpjdXIgPCAnICcgfHwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oKmN1cikgPCAweDgwKQotICAgICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNl
OwotfQotCi1zdGF0aWMgdW5zaWduZWQgaW50IHV0ZjhUb0NvZGVwb2ludChjb25zdCBjaGFyKiYg
cywgY29uc3QgY2hhciogZSkgewotICBjb25zdCB1bnNpZ25lZCBpbnQgUkVQTEFDRU1FTlRfQ0hB
UkFDVEVSID0gMHhGRkZEOwotCi0gIHVuc2lnbmVkIGludCBmaXJzdEJ5dGUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPigqcyk7Ci0KLSAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApCi0gICAgcmV0
dXJuIGZpcnN0Qnl0ZTsKLQotICBpZiAoZmlyc3RCeXRlIDwgMHhFMCkgewotICAgIGlmIChlIC0g
cyA8IDIpCi0gICAgICByZXR1cm4gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotCi0gICAgdW5zaWdu
ZWQgaW50IGNhbGN1bGF0ZWQgPQotICAgICAgICAoKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDYpIHwg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc1sxXSkgJiAweDNGKTsKLSAgICBzICs9IDE7Ci0g
ICAgLy8gb3ZlcnNpemVkIGVuY29kZWQgY2hhcmFjdGVycyBhcmUgaW52YWxpZAotICAgIHJldHVy
biBjYWxjdWxhdGVkIDwgMHg4MCA/IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA6IGNhbGN1bGF0ZWQ7
Ci0gIH0KLQotICBpZiAoZmlyc3RCeXRlIDwgMHhGMCkgewotICAgIGlmIChlIC0gcyA8IDMpCi0g
ICAgICByZXR1cm4gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotCi0gICAgdW5zaWduZWQgaW50IGNh
bGN1bGF0ZWQgPSAoKGZpcnN0Qnl0ZSAmIDB4MEYpIDw8IDEyKSB8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc1sxXSkgJiAweDNGKSA8
PCA2KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihzWzJdKSAmIDB4M0YpOwotICAgIHMgKz0gMjsKLSAgICAvLyBzdXJyb2dhdGVzIGFy
ZW4ndCB2YWxpZCBjb2RlcG9pbnRzIGl0c2VsZgotICAgIC8vIHNob3VsZG4ndCBiZSBVVEYtOCBl
bmNvZGVkCi0gICAgaWYgKGNhbGN1bGF0ZWQgPj0gMHhEODAwICYmIGNhbGN1bGF0ZWQgPD0gMHhE
RkZGKQotICAgICAgcmV0dXJuIFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKLSAgICAvLyBvdmVyc2l6
ZWQgZW5jb2RlZCBjaGFyYWN0ZXJzIGFyZSBpbnZhbGlkCi0gICAgcmV0dXJuIGNhbGN1bGF0ZWQg
PCAweDgwMCA/IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA6IGNhbGN1bGF0ZWQ7Ci0gIH0KLQotICBp
ZiAoZmlyc3RCeXRlIDwgMHhGOCkgewotICAgIGlmIChlIC0gcyA8IDQpCi0gICAgICByZXR1cm4g
UkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotCi0gICAgdW5zaWduZWQgaW50IGNhbGN1bGF0ZWQgPSAo
KGZpcnN0Qnl0ZSAmIDB4MDcpIDw8IDE4KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc1sxXSkgJiAweDNGKSA8PCAxMikgfAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNb
Ml0pICYgMHgzRikgPDwgNikgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oc1szXSkgJiAweDNGKTsKLSAgICBzICs9IDM7Ci0gICAgLy8g
b3ZlcnNpemVkIGVuY29kZWQgY2hhcmFjdGVycyBhcmUgaW52YWxpZAotICAgIHJldHVybiBjYWxj
dWxhdGVkIDwgMHgxMDAwMCA/IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiA6IGNhbGN1bGF0ZWQ7Ci0g
IH0KLQotICByZXR1cm4gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotfQotCi1zdGF0aWMgY29uc3Qg
Y2hhciBoZXgyW10gPSAiMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiMTAxMTEyMTMxNDE1MTYxNzE4MTkxYTFiMWMxZDFlMWYiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMjAyMTIyMjMyNDI1MjYyNzI4MjkyYTJiMmMyZDJl
MmYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMzAzMTMyMzMzNDM1MzYzNzM4MzkzYTNi
M2MzZDNlM2YiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiNDA0MTQyNDM0NDQ1NDY0NzQ4
NDk0YTRiNGM0ZDRlNGYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiNTA1MTUyNTM1NDU1
NTY1NzU4NTk1YTViNWM1ZDVlNWYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiNjA2MTYy
NjM2NDY1NjY2NzY4Njk2YTZiNmM2ZDZlNmYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
NzA3MTcyNzM3NDc1NzY3Nzc4Nzk3YTdiN2M3ZDdlN2YiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiODA4MTgyODM4NDg1ODY4Nzg4ODk4YThiOGM4ZDhlOGYiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiOTA5MTkyOTM5NDk1OTY5Nzk4OTk5YTliOWM5ZDllOWYiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYTBhMWEyYTNhNGE1YTZhN2E4YTlhYWFiYWNhZGFlYWYiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYjBiMWIyYjNiNGI1YjZiN2I4YjliYWJiYmNiZGJlYmYi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYzBjMWMyYzNjNGM1YzZjN2M4YzljYWNiY2Nj
ZGNlY2YiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZDBkMWQyZDNkNGQ1ZDZkN2Q4ZDlk
YWRiZGNkZGRlZGYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZTBlMWUyZTNlNGU1ZTZl
N2U4ZTllYWViZWNlZGVlZWYiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZjBmMWYyZjNm
NGY1ZjZmN2Y4ZjlmYWZiZmNmZGZlZmYiOwotCi1zdGF0aWMgU3RyaW5nIHRvSGV4MTZCaXQodW5z
aWduZWQgaW50IHgpIHsKLSAgY29uc3QgdW5zaWduZWQgaW50IGhpID0gKHggPj4gOCkgJiAweGZm
OwotICBjb25zdCB1bnNpZ25lZCBpbnQgbG8gPSB4ICYgMHhmZjsKLSAgU3RyaW5nIHJlc3VsdCg0
LCAnICcpOwotICByZXN1bHRbMF0gPSBoZXgyWzIgKiBoaV07Ci0gIHJlc3VsdFsxXSA9IGhleDJb
MiAqIGhpICsgMV07Ci0gIHJlc3VsdFsyXSA9IGhleDJbMiAqIGxvXTsKLSAgcmVzdWx0WzNdID0g
aGV4MlsyICogbG8gKyAxXTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFN0cmluZyB2
YWx1ZVRvUXVvdGVkU3RyaW5nTihjb25zdCBjaGFyKiB2YWx1ZSwgdW5zaWduZWQgbGVuZ3RoKSB7
Ci0gIGlmICh2YWx1ZSA9PSBudWxscHRyKQotICAgIHJldHVybiAiIjsKLQotICBpZiAoIWlzQW55
Q2hhclJlcXVpcmVkUXVvdGluZyh2YWx1ZSwgbGVuZ3RoKSkKLSAgICByZXR1cm4gU3RyaW5nKCJc
IiIpICsgdmFsdWUgKyAiXCIiOwotICAvLyBXZSBoYXZlIHRvIHdhbGsgdmFsdWUgYW5kIGVzY2Fw
ZSBhbnkgc3BlY2lhbCBjaGFyYWN0ZXJzLgotICAvLyBBcHBlbmRpbmcgdG8gU3RyaW5nIGlzIG5v
dCBlZmZpY2llbnQsIGJ1dCB0aGlzIHNob3VsZCBiZSByYXJlLgotICAvLyAoTm90ZTogZm9yd2Fy
ZCBzbGFzaGVzIGFyZSAqbm90KiByYXJlLCBidXQgSSBhbSBub3QgZXNjYXBpbmcgdGhlbS4pCi0g
IFN0cmluZzo6c2l6ZV90eXBlIG1heHNpemUgPSBsZW5ndGggKiAyICsgMzsgLy8gYWxsZXNjYXBl
ZCtxdW90ZXMrTlVMTAotICBTdHJpbmcgcmVzdWx0OwotICByZXN1bHQucmVzZXJ2ZShtYXhzaXpl
KTsgLy8gdG8gYXZvaWQgbG90cyBvZiBtYWxsb2NzCi0gIHJlc3VsdCArPSAiXCIiOwotICBjaGFy
IGNvbnN0KiBlbmQgPSB2YWx1ZSArIGxlbmd0aDsKLSAgZm9yIChjb25zdCBjaGFyKiBjID0gdmFs
dWU7IGMgIT0gZW5kOyArK2MpIHsKLSAgICBzd2l0Y2ggKCpjKSB7Ci0gICAgY2FzZSAnXCInOgot
ICAgICAgcmVzdWx0ICs9ICJcXFwiIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xcJzoKLSAg
ICAgIHJlc3VsdCArPSAiXFxcXCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdcYic6Ci0gICAg
ICByZXN1bHQgKz0gIlxcYiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdcZic6Ci0gICAgICBy
ZXN1bHQgKz0gIlxcZiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdcbic6Ci0gICAgICByZXN1
bHQgKz0gIlxcbiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdccic6Ci0gICAgICByZXN1bHQg
Kz0gIlxcciI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlICdcdCc6Ci0gICAgICByZXN1bHQgKz0g
IlxcdCI7Ci0gICAgICBicmVhazsKLSAgICAvLyBjYXNlICcvJzoKLSAgICAvLyBFdmVuIHRob3Vn
aCBcLyBpcyBjb25zaWRlcmVkIGEgbGVnYWwgZXNjYXBlIGluIEpTT04sIGEgYmFyZQotICAgIC8v
IHNsYXNoIGlzIGFsc28gbGVnYWwsIHNvIEkgc2VlIG5vIHJlYXNvbiB0byBlc2NhcGUgaXQuCi0g
ICAgLy8gKEkgaG9wZSBJIGFtIG5vdCBtaXN1bmRlcnN0YW5kaW5nIHNvbWV0aGluZy4pCi0gICAg
Ly8gYmxlcCBub3RlczogYWN0dWFsbHkgZXNjYXBpbmcgXC8gbWF5IGJlIHVzZWZ1bCBpbiBqYXZh
c2NyaXB0IHRvIGF2b2lkIDwvCi0gICAgLy8gc2VxdWVuY2UuCi0gICAgLy8gU2hvdWxkIGFkZCBh
IGZsYWcgdG8gYWxsb3cgdGhpcyBjb21wYXRpYmlsaXR5IG1vZGUgYW5kIHByZXZlbnQgdGhpcwot
ICAgIC8vIHNlcXVlbmNlIGZyb20gb2NjdXJyaW5nLgotICAgIGRlZmF1bHQ6IHsKLSAgICAgIHVu
c2lnbmVkIGludCBjcCA9IHV0ZjhUb0NvZGVwb2ludChjLCBlbmQpOwotICAgICAgLy8gZG9uJ3Qg
ZXNjYXBlIG5vbi1jb250cm9sIGNoYXJhY3RlcnMKLSAgICAgIC8vIChzaG9ydCBlc2NhcGUgc2Vx
dWVuY2UgYXJlIGFwcGxpZWQgYWJvdmUpCi0gICAgICBpZiAoY3AgPCAweDgwICYmIGNwID49IDB4
MjApCi0gICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxjaGFyPihjcCk7Ci0gICAgICBlbHNl
IGlmIChjcCA8IDB4MTAwMDApIHsgLy8gY29kZXBvaW50IGlzIGluIEJhc2ljIE11bHRpbGluZ3Vh
bCBQbGFuZQotICAgICAgICByZXN1bHQgKz0gIlxcdSI7Ci0gICAgICAgIHJlc3VsdCArPSB0b0hl
eDE2Qml0KGNwKTsKLSAgICAgIH0gZWxzZSB7IC8vIGNvZGVwb2ludCBpcyBub3QgaW4gQmFzaWMg
TXVsdGlsaW5ndWFsIFBsYW5lCi0gICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIHN1cnJvZ2F0
ZSBwYWlyIGZpcnN0Ci0gICAgICAgIGNwIC09IDB4MTAwMDA7Ci0gICAgICAgIHJlc3VsdCArPSAi
XFx1IjsKLSAgICAgICAgcmVzdWx0ICs9IHRvSGV4MTZCaXQoKGNwID4+IDEwKSArIDB4RDgwMCk7
Ci0gICAgICAgIHJlc3VsdCArPSAiXFx1IjsKLSAgICAgICAgcmVzdWx0ICs9IHRvSGV4MTZCaXQo
KGNwICYgMHgzRkYpICsgMHhEQzAwKTsKLSAgICAgIH0KLSAgICB9IGJyZWFrOwotICAgIH0KLSAg
fQotICByZXN1bHQgKz0gIlwiIjsKLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotU3RyaW5nIHZhbHVl
VG9RdW90ZWRTdHJpbmcoY29uc3QgY2hhciogdmFsdWUpIHsKLSAgcmV0dXJuIHZhbHVlVG9RdW90
ZWRTdHJpbmdOKHZhbHVlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0cmxlbih2YWx1ZSkp
KTsKLX0KLQotLy8gQ2xhc3MgV3JpdGVyCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLVdyaXRlcjo6fldyaXRlcigp
ID0gZGVmYXVsdDsKLQotLy8gQ2xhc3MgRmFzdFdyaXRlcgotLy8gLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLUZhc3RX
cml0ZXI6OkZhc3RXcml0ZXIoKQotCi0gICAgPSBkZWZhdWx0OwotCi12b2lkIEZhc3RXcml0ZXI6
OmVuYWJsZVlBTUxDb21wYXRpYmlsaXR5KCkgeyB5YW1sQ29tcGF0aWJpbGl0eUVuYWJsZWRfID0g
dHJ1ZTsgfQotCi12b2lkIEZhc3RXcml0ZXI6OmRyb3BOdWxsUGxhY2Vob2xkZXJzKCkgeyBkcm9w
TnVsbFBsYWNlaG9sZGVyc18gPSB0cnVlOyB9Ci0KLXZvaWQgRmFzdFdyaXRlcjo6b21pdEVuZGlu
Z0xpbmVGZWVkKCkgeyBvbWl0RW5kaW5nTGluZUZlZWRfID0gdHJ1ZTsgfQotCi1TdHJpbmcgRmFz
dFdyaXRlcjo6d3JpdGUoY29uc3QgVmFsdWUmIHJvb3QpIHsKLSAgZG9jdW1lbnRfLmNsZWFyKCk7
Ci0gIHdyaXRlVmFsdWUocm9vdCk7Ci0gIGlmICghb21pdEVuZGluZ0xpbmVGZWVkXykKLSAgICBk
b2N1bWVudF8gKz0gJ1xuJzsKLSAgcmV0dXJuIGRvY3VtZW50XzsKLX0KLQotdm9pZCBGYXN0V3Jp
dGVyOjp3cml0ZVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICBzd2l0Y2ggKHZhbHVlLnR5
cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgICBpZiAoIWRyb3BOdWxsUGxhY2Vob2xkZXJz
XykKLSAgICAgIGRvY3VtZW50XyArPSAibnVsbCI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgaW50VmFs
dWU6Ci0gICAgZG9jdW1lbnRfICs9IHZhbHVlVG9TdHJpbmcodmFsdWUuYXNMYXJnZXN0SW50KCkp
OwotICAgIGJyZWFrOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBkb2N1bWVudF8gKz0gdmFsdWVU
b1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RVSW50KCkpOwotICAgIGJyZWFrOwotICBjYXNlIHJlYWxW
YWx1ZToKLSAgICBkb2N1bWVudF8gKz0gdmFsdWVUb1N0cmluZyh2YWx1ZS5hc0RvdWJsZSgpKTsK
LSAgICBicmVhazsKLSAgY2FzZSBzdHJpbmdWYWx1ZTogewotICAgIC8vIElzIE5VTEwgcG9zc2li
bGUgZm9yIHZhbHVlLnN0cmluZ18/IE5vLgotICAgIGNoYXIgY29uc3QqIHN0cjsKLSAgICBjaGFy
IGNvbnN0KiBlbmQ7Ci0gICAgYm9vbCBvayA9IHZhbHVlLmdldFN0cmluZygmc3RyLCAmZW5kKTsK
LSAgICBpZiAob2spCi0gICAgICBkb2N1bWVudF8gKz0gdmFsdWVUb1F1b3RlZFN0cmluZ04oc3Ry
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gc3RyKSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAg
Y2FzZSBib29sZWFuVmFsdWU6Ci0gICAgZG9jdW1lbnRfICs9IHZhbHVlVG9TdHJpbmcodmFsdWUu
YXNCb29sKCkpOwotICAgIGJyZWFrOwotICBjYXNlIGFycmF5VmFsdWU6IHsKLSAgICBkb2N1bWVu
dF8gKz0gJ1snOwotICAgIEFycmF5SW5kZXggc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAgICBmb3Ig
KEFycmF5SW5kZXggaW5kZXggPSAwOyBpbmRleCA8IHNpemU7ICsraW5kZXgpIHsKLSAgICAgIGlm
IChpbmRleCA+IDApCi0gICAgICAgIGRvY3VtZW50XyArPSAnLCc7Ci0gICAgICB3cml0ZVZhbHVl
KHZhbHVlW2luZGV4XSk7Ci0gICAgfQotICAgIGRvY3VtZW50XyArPSAnXSc7Ci0gIH0gYnJlYWs7
Ci0gIGNhc2Ugb2JqZWN0VmFsdWU6IHsKLSAgICBWYWx1ZTo6TWVtYmVycyBtZW1iZXJzKHZhbHVl
LmdldE1lbWJlck5hbWVzKCkpOwotICAgIGRvY3VtZW50XyArPSAneyc7Ci0gICAgZm9yIChhdXRv
IGl0ID0gbWVtYmVycy5iZWdpbigpOyBpdCAhPSBtZW1iZXJzLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICBjb25zdCBTdHJpbmcmIG5hbWUgPSAqaXQ7Ci0gICAgICBpZiAoaXQgIT0gbWVtYmVycy5iZWdp
bigpKQotICAgICAgICBkb2N1bWVudF8gKz0gJywnOwotICAgICAgZG9jdW1lbnRfICs9IHZhbHVl
VG9RdW90ZWRTdHJpbmdOKG5hbWUuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW1lLmxlbmd0aCgpKSk7Ci0gICAg
ICBkb2N1bWVudF8gKz0geWFtbENvbXBhdGliaWxpdHlFbmFibGVkXyA/ICI6ICIgOiAiOiI7Ci0g
ICAgICB3cml0ZVZhbHVlKHZhbHVlW25hbWVdKTsKLSAgICB9Ci0gICAgZG9jdW1lbnRfICs9ICd9
JzsKLSAgfSBicmVhazsKLSAgfQotfQotCi0vLyBDbGFzcyBTdHlsZWRXcml0ZXIKLS8vIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi1TdHlsZWRXcml0ZXI6OlN0eWxlZFdyaXRlcigpID0gZGVmYXVsdDsKLQotU3RyaW5n
IFN0eWxlZFdyaXRlcjo6d3JpdGUoY29uc3QgVmFsdWUmIHJvb3QpIHsKLSAgZG9jdW1lbnRfLmNs
ZWFyKCk7Ci0gIGFkZENoaWxkVmFsdWVzXyA9IGZhbHNlOwotICBpbmRlbnRTdHJpbmdfLmNsZWFy
KCk7Ci0gIHdyaXRlQ29tbWVudEJlZm9yZVZhbHVlKHJvb3QpOwotICB3cml0ZVZhbHVlKHJvb3Qp
OwotICB3cml0ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShyb290KTsKLSAgZG9jdW1lbnRf
ICs9ICdcbic7Ci0gIHJldHVybiBkb2N1bWVudF87Ci19Ci0KLXZvaWQgU3R5bGVkV3JpdGVyOjp3
cml0ZVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkg
ewotICBjYXNlIG51bGxWYWx1ZToKLSAgICBwdXNoVmFsdWUoIm51bGwiKTsKLSAgICBicmVhazsK
LSAgY2FzZSBpbnRWYWx1ZToKLSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xh
cmdlc3RJbnQoKSkpOwotICAgIGJyZWFrOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBwdXNoVmFs
dWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RVSW50KCkpKTsKLSAgICBicmVhazsKLSAg
Y2FzZSByZWFsVmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZhbHVlVG9TdHJpbmcodmFsdWUuYXNEb3Vi
bGUoKSkpOwotICAgIGJyZWFrOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgLy8gSXMgTlVM
TCBwb3NzaWJsZSBmb3IgdmFsdWUuc3RyaW5nXz8gTm8uCi0gICAgY2hhciBjb25zdCogc3RyOwot
ICAgIGNoYXIgY29uc3QqIGVuZDsKLSAgICBib29sIG9rID0gdmFsdWUuZ2V0U3RyaW5nKCZzdHIs
ICZlbmQpOwotICAgIGlmIChvaykKLSAgICAgIHB1c2hWYWx1ZSh2YWx1ZVRvUXVvdGVkU3RyaW5n
TihzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdHIpKSk7Ci0gICAgZWxzZQotICAg
ICAgcHVzaFZhbHVlKCIiKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGJvb2xlYW5WYWx1ZToK
LSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0Jvb2woKSkpOwotICAgIGJyZWFr
OwotICBjYXNlIGFycmF5VmFsdWU6Ci0gICAgd3JpdGVBcnJheVZhbHVlKHZhbHVlKTsKLSAgICBi
cmVhazsKLSAgY2FzZSBvYmplY3RWYWx1ZTogewotICAgIFZhbHVlOjpNZW1iZXJzIG1lbWJlcnMo
dmFsdWUuZ2V0TWVtYmVyTmFtZXMoKSk7Ci0gICAgaWYgKG1lbWJlcnMuZW1wdHkoKSkKLSAgICAg
IHB1c2hWYWx1ZSgie30iKTsKLSAgICBlbHNlIHsKLSAgICAgIHdyaXRlV2l0aEluZGVudCgieyIp
OwotICAgICAgaW5kZW50KCk7Ci0gICAgICBhdXRvIGl0ID0gbWVtYmVycy5iZWdpbigpOwotICAg
ICAgZm9yICg7OykgewotICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSAqaXQ7Ci0gICAgICAg
IGNvbnN0IFZhbHVlJiBjaGlsZFZhbHVlID0gdmFsdWVbbmFtZV07Ci0gICAgICAgIHdyaXRlQ29t
bWVudEJlZm9yZVZhbHVlKGNoaWxkVmFsdWUpOwotICAgICAgICB3cml0ZVdpdGhJbmRlbnQodmFs
dWVUb1F1b3RlZFN0cmluZyhuYW1lLmNfc3RyKCkpKTsKLSAgICAgICAgZG9jdW1lbnRfICs9ICIg
OiAiOwotICAgICAgICB3cml0ZVZhbHVlKGNoaWxkVmFsdWUpOwotICAgICAgICBpZiAoKytpdCA9
PSBtZW1iZXJzLmVuZCgpKSB7Ci0gICAgICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2Ft
ZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
ZG9jdW1lbnRfICs9ICcsJzsKLSAgICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxp
bmUoY2hpbGRWYWx1ZSk7Ci0gICAgICB9Ci0gICAgICB1bmluZGVudCgpOwotICAgICAgd3JpdGVX
aXRoSW5kZW50KCJ9Iik7Ci0gICAgfQotICB9IGJyZWFrOwotICB9Ci19Ci0KLXZvaWQgU3R5bGVk
V3JpdGVyOjp3cml0ZUFycmF5VmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKSB7Ci0gIHVuc2lnbmVk
IHNpemUgPSB2YWx1ZS5zaXplKCk7Ci0gIGlmIChzaXplID09IDApCi0gICAgcHVzaFZhbHVlKCJb
XSIpOwotICBlbHNlIHsKLSAgICBib29sIGlzQXJyYXlNdWx0aUxpbmUgPSBpc011bHRpbGluZUFy
cmF5KHZhbHVlKTsKLSAgICBpZiAoaXNBcnJheU11bHRpTGluZSkgewotICAgICAgd3JpdGVXaXRo
SW5kZW50KCJbIik7Ci0gICAgICBpbmRlbnQoKTsKLSAgICAgIGJvb2wgaGFzQ2hpbGRWYWx1ZSA9
ICFjaGlsZFZhbHVlc18uZW1wdHkoKTsKLSAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAg
IGZvciAoOzspIHsKLSAgICAgICAgY29uc3QgVmFsdWUmIGNoaWxkVmFsdWUgPSB2YWx1ZVtpbmRl
eF07Ci0gICAgICAgIHdyaXRlQ29tbWVudEJlZm9yZVZhbHVlKGNoaWxkVmFsdWUpOwotICAgICAg
ICBpZiAoaGFzQ2hpbGRWYWx1ZSkKLSAgICAgICAgICB3cml0ZVdpdGhJbmRlbnQoY2hpbGRWYWx1
ZXNfW2luZGV4XSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHdyaXRlSW5kZW50KCk7Ci0g
ICAgICAgICAgd3JpdGVWYWx1ZShjaGlsZFZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
KytpbmRleCA9PSBzaXplKSB7Ci0gICAgICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2Ft
ZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
ZG9jdW1lbnRfICs9ICcsJzsKLSAgICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxp
bmUoY2hpbGRWYWx1ZSk7Ci0gICAgICB9Ci0gICAgICB1bmluZGVudCgpOwotICAgICAgd3JpdGVX
aXRoSW5kZW50KCJdIik7Ci0gICAgfSBlbHNlIC8vIG91dHB1dCBvbiBhIHNpbmdsZSBsaW5lCi0g
ICAgewotICAgICAgYXNzZXJ0KGNoaWxkVmFsdWVzXy5zaXplKCkgPT0gc2l6ZSk7Ci0gICAgICBk
b2N1bWVudF8gKz0gIlsgIjsKLSAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IHNpemU7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGluZGV4ID4gMCkKLSAgICAgICAgICBkb2N1
bWVudF8gKz0gIiwgIjsKLSAgICAgICAgZG9jdW1lbnRfICs9IGNoaWxkVmFsdWVzX1tpbmRleF07
Ci0gICAgICB9Ci0gICAgICBkb2N1bWVudF8gKz0gIiBdIjsKLSAgICB9Ci0gIH0KLX0KLQotYm9v
bCBTdHlsZWRXcml0ZXI6OmlzTXVsdGlsaW5lQXJyYXkoY29uc3QgVmFsdWUmIHZhbHVlKSB7Ci0g
IEFycmF5SW5kZXggY29uc3Qgc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAgYm9vbCBpc011bHRpTGlu
ZSA9IHNpemUgKiAzID49IHJpZ2h0TWFyZ2luXzsKLSAgY2hpbGRWYWx1ZXNfLmNsZWFyKCk7Ci0g
IGZvciAoQXJyYXlJbmRleCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZSAmJiAhaXNNdWx0aUxpbmU7
ICsraW5kZXgpIHsKLSAgICBjb25zdCBWYWx1ZSYgY2hpbGRWYWx1ZSA9IHZhbHVlW2luZGV4XTsK
LSAgICBpc011bHRpTGluZSA9ICgoY2hpbGRWYWx1ZS5pc0FycmF5KCkgfHwgY2hpbGRWYWx1ZS5p
c09iamVjdCgpKSAmJgotICAgICAgICAgICAgICAgICAgICFjaGlsZFZhbHVlLmVtcHR5KCkpOwot
ICB9Ci0gIGlmICghaXNNdWx0aUxpbmUpIC8vIGNoZWNrIGlmIGxpbmUgbGVuZ3RoID4gbWF4IGxp
bmUgbGVuZ3RoCi0gIHsKLSAgICBjaGlsZFZhbHVlc18ucmVzZXJ2ZShzaXplKTsKLSAgICBhZGRD
aGlsZFZhbHVlc18gPSB0cnVlOwotICAgIEFycmF5SW5kZXggbGluZUxlbmd0aCA9IDQgKyAoc2l6
ZSAtIDEpICogMjsgLy8gJ1sgJyArICcsICcqbiArICcgXScKLSAgICBmb3IgKEFycmF5SW5kZXgg
aW5kZXggPSAwOyBpbmRleCA8IHNpemU7ICsraW5kZXgpIHsKLSAgICAgIGlmIChoYXNDb21tZW50
Rm9yVmFsdWUodmFsdWVbaW5kZXhdKSkgewotICAgICAgICBpc011bHRpTGluZSA9IHRydWU7Ci0g
ICAgICB9Ci0gICAgICB3cml0ZVZhbHVlKHZhbHVlW2luZGV4XSk7Ci0gICAgICBsaW5lTGVuZ3Ro
ICs9IHN0YXRpY19jYXN0PEFycmF5SW5kZXg+KGNoaWxkVmFsdWVzX1tpbmRleF0ubGVuZ3RoKCkp
OwotICAgIH0KLSAgICBhZGRDaGlsZFZhbHVlc18gPSBmYWxzZTsKLSAgICBpc011bHRpTGluZSA9
IGlzTXVsdGlMaW5lIHx8IGxpbmVMZW5ndGggPj0gcmlnaHRNYXJnaW5fOwotICB9Ci0gIHJldHVy
biBpc011bHRpTGluZTsKLX0KLQotdm9pZCBTdHlsZWRXcml0ZXI6OnB1c2hWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKSB7Ci0gIGlmIChhZGRDaGlsZFZhbHVlc18pCi0gICAgY2hpbGRWYWx1ZXNf
LnB1c2hfYmFjayh2YWx1ZSk7Ci0gIGVsc2UKLSAgICBkb2N1bWVudF8gKz0gdmFsdWU7Ci19Ci0K
LXZvaWQgU3R5bGVkV3JpdGVyOjp3cml0ZUluZGVudCgpIHsKLSAgaWYgKCFkb2N1bWVudF8uZW1w
dHkoKSkgewotICAgIGNoYXIgbGFzdCA9IGRvY3VtZW50X1tkb2N1bWVudF8ubGVuZ3RoKCkgLSAx
XTsKLSAgICBpZiAobGFzdCA9PSAnICcpIC8vIGFscmVhZHkgaW5kZW50ZWQKLSAgICAgIHJldHVy
bjsKLSAgICBpZiAobGFzdCAhPSAnXG4nKSAvLyBDb21tZW50cyBtYXkgYWRkIG5ldy1saW5lCi0g
ICAgICBkb2N1bWVudF8gKz0gJ1xuJzsKLSAgfQotICBkb2N1bWVudF8gKz0gaW5kZW50U3RyaW5n
XzsKLX0KLQotdm9pZCBTdHlsZWRXcml0ZXI6OndyaXRlV2l0aEluZGVudChjb25zdCBTdHJpbmcm
IHZhbHVlKSB7Ci0gIHdyaXRlSW5kZW50KCk7Ci0gIGRvY3VtZW50XyArPSB2YWx1ZTsKLX0KLQot
dm9pZCBTdHlsZWRXcml0ZXI6OmluZGVudCgpIHsgaW5kZW50U3RyaW5nXyArPSBTdHJpbmcoaW5k
ZW50U2l6ZV8sICcgJyk7IH0KLQotdm9pZCBTdHlsZWRXcml0ZXI6OnVuaW5kZW50KCkgewotICBh
c3NlcnQoaW5kZW50U3RyaW5nXy5zaXplKCkgPj0gaW5kZW50U2l6ZV8pOwotICBpbmRlbnRTdHJp
bmdfLnJlc2l6ZShpbmRlbnRTdHJpbmdfLnNpemUoKSAtIGluZGVudFNpemVfKTsKLX0KLQotdm9p
ZCBTdHlsZWRXcml0ZXI6OndyaXRlQ29tbWVudEJlZm9yZVZhbHVlKGNvbnN0IFZhbHVlJiByb290
KSB7Ci0gIGlmICghcm9vdC5oYXNDb21tZW50KGNvbW1lbnRCZWZvcmUpKQotICAgIHJldHVybjsK
LQotICBkb2N1bWVudF8gKz0gJ1xuJzsKLSAgd3JpdGVJbmRlbnQoKTsKLSAgY29uc3QgU3RyaW5n
JiBjb21tZW50ID0gcm9vdC5nZXRDb21tZW50KGNvbW1lbnRCZWZvcmUpOwotICBTdHJpbmc6OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIgPSBjb21tZW50LmJlZ2luKCk7Ci0gIHdoaWxlIChpdGVyICE9IGNv
bW1lbnQuZW5kKCkpIHsKLSAgICBkb2N1bWVudF8gKz0gKml0ZXI7Ci0gICAgaWYgKCppdGVyID09
ICdcbicgJiYgKChpdGVyICsgMSkgIT0gY29tbWVudC5lbmQoKSAmJiAqKGl0ZXIgKyAxKSA9PSAn
LycpKQotICAgICAgd3JpdGVJbmRlbnQoKTsKLSAgICArK2l0ZXI7Ci0gIH0KLQotICAvLyBDb21t
ZW50cyBhcmUgc3RyaXBwZWQgb2YgdHJhaWxpbmcgbmV3bGluZXMsIHNvIGFkZCBvbmUgaGVyZQot
ICBkb2N1bWVudF8gKz0gJ1xuJzsKLX0KLQotdm9pZCBTdHlsZWRXcml0ZXI6OndyaXRlQ29tbWVu
dEFmdGVyVmFsdWVPblNhbWVMaW5lKGNvbnN0IFZhbHVlJiByb290KSB7Ci0gIGlmIChyb290Lmhh
c0NvbW1lbnQoY29tbWVudEFmdGVyT25TYW1lTGluZSkpCi0gICAgZG9jdW1lbnRfICs9ICIgIiAr
IHJvb3QuZ2V0Q29tbWVudChjb21tZW50QWZ0ZXJPblNhbWVMaW5lKTsKLQotICBpZiAocm9vdC5o
YXNDb21tZW50KGNvbW1lbnRBZnRlcikpIHsKLSAgICBkb2N1bWVudF8gKz0gJ1xuJzsKLSAgICBk
b2N1bWVudF8gKz0gcm9vdC5nZXRDb21tZW50KGNvbW1lbnRBZnRlcik7Ci0gICAgZG9jdW1lbnRf
ICs9ICdcbic7Ci0gIH0KLX0KLQotYm9vbCBTdHlsZWRXcml0ZXI6Omhhc0NvbW1lbnRGb3JWYWx1
ZShjb25zdCBWYWx1ZSYgdmFsdWUpIHsKLSAgcmV0dXJuIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVu
dEJlZm9yZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVyT25TYW1l
TGluZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVyKTsKLX0KLQot
Ly8gQ2xhc3MgU3R5bGVkU3RyZWFtV3JpdGVyCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotU3R5bGVkU3RyZWFt
V3JpdGVyOjpTdHlsZWRTdHJlYW1Xcml0ZXIoU3RyaW5nIGluZGVudGF0aW9uKQotICAgIDogZG9j
dW1lbnRfKG51bGxwdHIpLCBpbmRlbnRhdGlvbl8oc3RkOjptb3ZlKGluZGVudGF0aW9uKSksCi0g
ICAgICBhZGRDaGlsZFZhbHVlc18oKSwgaW5kZW50ZWRfKGZhbHNlKSB7fQotCi12b2lkIFN0eWxl
ZFN0cmVhbVdyaXRlcjo6d3JpdGUoT1N0cmVhbSYgb3V0LCBjb25zdCBWYWx1ZSYgcm9vdCkgewot
ICBkb2N1bWVudF8gPSAmb3V0OwotICBhZGRDaGlsZFZhbHVlc18gPSBmYWxzZTsKLSAgaW5kZW50
U3RyaW5nXy5jbGVhcigpOwotICBpbmRlbnRlZF8gPSB0cnVlOwotICB3cml0ZUNvbW1lbnRCZWZv
cmVWYWx1ZShyb290KTsKLSAgaWYgKCFpbmRlbnRlZF8pCi0gICAgd3JpdGVJbmRlbnQoKTsKLSAg
aW5kZW50ZWRfID0gdHJ1ZTsKLSAgd3JpdGVWYWx1ZShyb290KTsKLSAgd3JpdGVDb21tZW50QWZ0
ZXJWYWx1ZU9uU2FtZUxpbmUocm9vdCk7Ci0gICpkb2N1bWVudF8gPDwgIlxuIjsKLSAgZG9jdW1l
bnRfID0gbnVsbHB0cjsgLy8gRm9yZ2V0IHRoZSBzdHJlYW0sIGZvciBzYWZldHkuCi19Ci0KLXZv
aWQgU3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewot
ICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgICBwdXNoVmFs
dWUoIm51bGwiKTsKLSAgICBicmVhazsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICBwdXNoVmFsdWUo
dmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RJbnQoKSkpOwotICAgIGJyZWFrOwotICBjYXNl
IHVpbnRWYWx1ZToKLSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RV
SW50KCkpKTsKLSAgICBicmVhazsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZh
bHVlVG9TdHJpbmcodmFsdWUuYXNEb3VibGUoKSkpOwotICAgIGJyZWFrOwotICBjYXNlIHN0cmlu
Z1ZhbHVlOiB7Ci0gICAgLy8gSXMgTlVMTCBwb3NzaWJsZSBmb3IgdmFsdWUuc3RyaW5nXz8gTm8u
Ci0gICAgY2hhciBjb25zdCogc3RyOwotICAgIGNoYXIgY29uc3QqIGVuZDsKLSAgICBib29sIG9r
ID0gdmFsdWUuZ2V0U3RyaW5nKCZzdHIsICZlbmQpOwotICAgIGlmIChvaykKLSAgICAgIHB1c2hW
YWx1ZSh2YWx1ZVRvUXVvdGVkU3RyaW5nTihzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQg
LSBzdHIpKSk7Ci0gICAgZWxzZQotICAgICAgcHVzaFZhbHVlKCIiKTsKLSAgICBicmVhazsKLSAg
fQotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1
ZS5hc0Jvb2woKSkpOwotICAgIGJyZWFrOwotICBjYXNlIGFycmF5VmFsdWU6Ci0gICAgd3JpdGVB
cnJheVZhbHVlKHZhbHVlKTsKLSAgICBicmVhazsKLSAgY2FzZSBvYmplY3RWYWx1ZTogewotICAg
IFZhbHVlOjpNZW1iZXJzIG1lbWJlcnModmFsdWUuZ2V0TWVtYmVyTmFtZXMoKSk7Ci0gICAgaWYg
KG1lbWJlcnMuZW1wdHkoKSkKLSAgICAgIHB1c2hWYWx1ZSgie30iKTsKLSAgICBlbHNlIHsKLSAg
ICAgIHdyaXRlV2l0aEluZGVudCgieyIpOwotICAgICAgaW5kZW50KCk7Ci0gICAgICBhdXRvIGl0
ID0gbWVtYmVycy5iZWdpbigpOwotICAgICAgZm9yICg7OykgewotICAgICAgICBjb25zdCBTdHJp
bmcmIG5hbWUgPSAqaXQ7Ci0gICAgICAgIGNvbnN0IFZhbHVlJiBjaGlsZFZhbHVlID0gdmFsdWVb
bmFtZV07Ci0gICAgICAgIHdyaXRlQ29tbWVudEJlZm9yZVZhbHVlKGNoaWxkVmFsdWUpOwotICAg
ICAgICB3cml0ZVdpdGhJbmRlbnQodmFsdWVUb1F1b3RlZFN0cmluZyhuYW1lLmNfc3RyKCkpKTsK
LSAgICAgICAgKmRvY3VtZW50XyA8PCAiIDogIjsKLSAgICAgICAgd3JpdGVWYWx1ZShjaGlsZFZh
bHVlKTsKLSAgICAgICAgaWYgKCsraXQgPT0gbWVtYmVycy5lbmQoKSkgewotICAgICAgICAgIHdy
aXRlQ29tbWVudEFmdGVyVmFsdWVPblNhbWVMaW5lKGNoaWxkVmFsdWUpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgICpkb2N1bWVudF8gPDwgIiwiOwotICAgICAgICB3cml0
ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgIH0KLSAgICAg
IHVuaW5kZW50KCk7Ci0gICAgICB3cml0ZVdpdGhJbmRlbnQoIn0iKTsKLSAgICB9Ci0gIH0gYnJl
YWs7Ci0gIH0KLX0KLQotdm9pZCBTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlQXJyYXlWYWx1ZShj
b25zdCBWYWx1ZSYgdmFsdWUpIHsKLSAgdW5zaWduZWQgc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAg
aWYgKHNpemUgPT0gMCkKLSAgICBwdXNoVmFsdWUoIltdIik7Ci0gIGVsc2UgewotICAgIGJvb2wg
aXNBcnJheU11bHRpTGluZSA9IGlzTXVsdGlsaW5lQXJyYXkodmFsdWUpOwotICAgIGlmIChpc0Fy
cmF5TXVsdGlMaW5lKSB7Ci0gICAgICB3cml0ZVdpdGhJbmRlbnQoIlsiKTsKLSAgICAgIGluZGVu
dCgpOwotICAgICAgYm9vbCBoYXNDaGlsZFZhbHVlID0gIWNoaWxkVmFsdWVzXy5lbXB0eSgpOwot
ICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgZm9yICg7OykgewotICAgICAgICBjb25z
dCBWYWx1ZSYgY2hpbGRWYWx1ZSA9IHZhbHVlW2luZGV4XTsKLSAgICAgICAgd3JpdGVDb21tZW50
QmVmb3JlVmFsdWUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgIGlmIChoYXNDaGlsZFZhbHVlKQotICAg
ICAgICAgIHdyaXRlV2l0aEluZGVudChjaGlsZFZhbHVlc19baW5kZXhdKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgaWYgKCFpbmRlbnRlZF8pCi0gICAgICAgICAgICB3cml0ZUluZGVudCgp
OwotICAgICAgICAgIGluZGVudGVkXyA9IHRydWU7Ci0gICAgICAgICAgd3JpdGVWYWx1ZShjaGls
ZFZhbHVlKTsKLSAgICAgICAgICBpbmRlbnRlZF8gPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoKytpbmRleCA9PSBzaXplKSB7Ci0gICAgICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1
ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgKmRvY3VtZW50XyA8PCAiLCI7Ci0gICAgICAgIHdyaXRlQ29tbWVudEFmdGVyVmFsdWVP
blNhbWVMaW5lKGNoaWxkVmFsdWUpOwotICAgICAgfQotICAgICAgdW5pbmRlbnQoKTsKLSAgICAg
IHdyaXRlV2l0aEluZGVudCgiXSIpOwotICAgIH0gZWxzZSAvLyBvdXRwdXQgb24gYSBzaW5nbGUg
bGluZQotICAgIHsKLSAgICAgIGFzc2VydChjaGlsZFZhbHVlc18uc2l6ZSgpID09IHNpemUpOwot
ICAgICAgKmRvY3VtZW50XyA8PCAiWyAiOwotICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPiAwKQotICAgICAg
ICAgICpkb2N1bWVudF8gPDwgIiwgIjsKLSAgICAgICAgKmRvY3VtZW50XyA8PCBjaGlsZFZhbHVl
c19baW5kZXhdOwotICAgICAgfQotICAgICAgKmRvY3VtZW50XyA8PCAiIF0iOwotICAgIH0KLSAg
fQotfQotCi1ib29sIFN0eWxlZFN0cmVhbVdyaXRlcjo6aXNNdWx0aWxpbmVBcnJheShjb25zdCBW
YWx1ZSYgdmFsdWUpIHsKLSAgQXJyYXlJbmRleCBjb25zdCBzaXplID0gdmFsdWUuc2l6ZSgpOwot
ICBib29sIGlzTXVsdGlMaW5lID0gc2l6ZSAqIDMgPj0gcmlnaHRNYXJnaW5fOwotICBjaGlsZFZh
bHVlc18uY2xlYXIoKTsKLSAgZm9yIChBcnJheUluZGV4IGluZGV4ID0gMDsgaW5kZXggPCBzaXpl
ICYmICFpc011bHRpTGluZTsgKytpbmRleCkgewotICAgIGNvbnN0IFZhbHVlJiBjaGlsZFZhbHVl
ID0gdmFsdWVbaW5kZXhdOwotICAgIGlzTXVsdGlMaW5lID0gKChjaGlsZFZhbHVlLmlzQXJyYXko
KSB8fCBjaGlsZFZhbHVlLmlzT2JqZWN0KCkpICYmCi0gICAgICAgICAgICAgICAgICAgIWNoaWxk
VmFsdWUuZW1wdHkoKSk7Ci0gIH0KLSAgaWYgKCFpc011bHRpTGluZSkgLy8gY2hlY2sgaWYgbGlu
ZSBsZW5ndGggPiBtYXggbGluZSBsZW5ndGgKLSAgewotICAgIGNoaWxkVmFsdWVzXy5yZXNlcnZl
KHNpemUpOwotICAgIGFkZENoaWxkVmFsdWVzXyA9IHRydWU7Ci0gICAgQXJyYXlJbmRleCBsaW5l
TGVuZ3RoID0gNCArIChzaXplIC0gMSkgKiAyOyAvLyAnWyAnICsgJywgJypuICsgJyBdJwotICAg
IGZvciAoQXJyYXlJbmRleCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAg
ICAgaWYgKGhhc0NvbW1lbnRGb3JWYWx1ZSh2YWx1ZVtpbmRleF0pKSB7Ci0gICAgICAgIGlzTXVs
dGlMaW5lID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHdyaXRlVmFsdWUodmFsdWVbaW5kZXhdKTsK
LSAgICAgIGxpbmVMZW5ndGggKz0gc3RhdGljX2Nhc3Q8QXJyYXlJbmRleD4oY2hpbGRWYWx1ZXNf
W2luZGV4XS5sZW5ndGgoKSk7Ci0gICAgfQotICAgIGFkZENoaWxkVmFsdWVzXyA9IGZhbHNlOwot
ICAgIGlzTXVsdGlMaW5lID0gaXNNdWx0aUxpbmUgfHwgbGluZUxlbmd0aCA+PSByaWdodE1hcmdp
bl87Ci0gIH0KLSAgcmV0dXJuIGlzTXVsdGlMaW5lOwotfQotCi12b2lkIFN0eWxlZFN0cmVhbVdy
aXRlcjo6cHVzaFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsKLSAgaWYgKGFkZENoaWxkVmFs
dWVzXykKLSAgICBjaGlsZFZhbHVlc18ucHVzaF9iYWNrKHZhbHVlKTsKLSAgZWxzZQotICAgICpk
b2N1bWVudF8gPDwgdmFsdWU7Ci19Ci0KLXZvaWQgU3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZUlu
ZGVudCgpIHsKLSAgLy8gYmxlcCBpbnRlbmRlZCB0aGlzIHRvIGxvb2sgYXQgdGhlIHNvLWZhci13
cml0dGVuIHN0cmluZwotICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBhcmUgYWxyZWFkeSBp
bmRlbnRlZCwgYnV0Ci0gIC8vIHdpdGggYSBzdHJlYW0gd2UgY2Fubm90IGRvIHRoYXQuIFNvIHdl
IHJlbHkgb24gc29tZSBzYXZlZCBzdGF0ZS4KLSAgLy8gVGhlIGNhbGxlciBjaGVja3MgaW5kZW50
ZWRfLgotICAqZG9jdW1lbnRfIDw8ICdcbicgPDwgaW5kZW50U3RyaW5nXzsKLX0KLQotdm9pZCBT
dHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlV2l0aEluZGVudChjb25zdCBTdHJpbmcmIHZhbHVlKSB7
Ci0gIGlmICghaW5kZW50ZWRfKQotICAgIHdyaXRlSW5kZW50KCk7Ci0gICpkb2N1bWVudF8gPDwg
dmFsdWU7Ci0gIGluZGVudGVkXyA9IGZhbHNlOwotfQotCi12b2lkIFN0eWxlZFN0cmVhbVdyaXRl
cjo6aW5kZW50KCkgeyBpbmRlbnRTdHJpbmdfICs9IGluZGVudGF0aW9uXzsgfQotCi12b2lkIFN0
eWxlZFN0cmVhbVdyaXRlcjo6dW5pbmRlbnQoKSB7Ci0gIGFzc2VydChpbmRlbnRTdHJpbmdfLnNp
emUoKSA+PSBpbmRlbnRhdGlvbl8uc2l6ZSgpKTsKLSAgaW5kZW50U3RyaW5nXy5yZXNpemUoaW5k
ZW50U3RyaW5nXy5zaXplKCkgLSBpbmRlbnRhdGlvbl8uc2l6ZSgpKTsKLX0KLQotdm9pZCBTdHls
ZWRTdHJlYW1Xcml0ZXI6OndyaXRlQ29tbWVudEJlZm9yZVZhbHVlKGNvbnN0IFZhbHVlJiByb290
KSB7Ci0gIGlmICghcm9vdC5oYXNDb21tZW50KGNvbW1lbnRCZWZvcmUpKQotICAgIHJldHVybjsK
LQotICBpZiAoIWluZGVudGVkXykKLSAgICB3cml0ZUluZGVudCgpOwotICBjb25zdCBTdHJpbmcm
IGNvbW1lbnQgPSByb290LmdldENvbW1lbnQoY29tbWVudEJlZm9yZSk7Ci0gIFN0cmluZzo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IGNvbW1lbnQuYmVnaW4oKTsKLSAgd2hpbGUgKGl0ZXIgIT0gY29t
bWVudC5lbmQoKSkgewotICAgICpkb2N1bWVudF8gPDwgKml0ZXI7Ci0gICAgaWYgKCppdGVyID09
ICdcbicgJiYgKChpdGVyICsgMSkgIT0gY29tbWVudC5lbmQoKSAmJiAqKGl0ZXIgKyAxKSA9PSAn
LycpKQotICAgICAgLy8gd3JpdGVJbmRlbnQoKTsgIC8vIHdvdWxkIGluY2x1ZGUgbmV3bGluZQot
ICAgICAgKmRvY3VtZW50XyA8PCBpbmRlbnRTdHJpbmdfOwotICAgICsraXRlcjsKLSAgfQotICBp
bmRlbnRlZF8gPSBmYWxzZTsKLX0KLQotdm9pZCBTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlQ29t
bWVudEFmdGVyVmFsdWVPblNhbWVMaW5lKGNvbnN0IFZhbHVlJiByb290KSB7Ci0gIGlmIChyb290
Lmhhc0NvbW1lbnQoY29tbWVudEFmdGVyT25TYW1lTGluZSkpCi0gICAgKmRvY3VtZW50XyA8PCAn
ICcgPDwgcm9vdC5nZXRDb21tZW50KGNvbW1lbnRBZnRlck9uU2FtZUxpbmUpOwotCi0gIGlmIChy
b290Lmhhc0NvbW1lbnQoY29tbWVudEFmdGVyKSkgewotICAgIHdyaXRlSW5kZW50KCk7Ci0gICAg
KmRvY3VtZW50XyA8PCByb290LmdldENvbW1lbnQoY29tbWVudEFmdGVyKTsKLSAgfQotICBpbmRl
bnRlZF8gPSBmYWxzZTsKLX0KLQotYm9vbCBTdHlsZWRTdHJlYW1Xcml0ZXI6Omhhc0NvbW1lbnRG
b3JWYWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpIHsKLSAgcmV0dXJuIHZhbHVlLmhhc0NvbW1lbnQo
Y29tbWVudEJlZm9yZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVy
T25TYW1lTGluZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVyKTsK
LX0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEJ1aWx0U3R5bGVkU3RyZWFtV3Jp
dGVyCi0KLS8vLyBTY29wZWQgZW51bXMgYXJlIG5vdCBhdmFpbGFibGUgdW50aWwgQysrMTEuCi1z
dHJ1Y3QgQ29tbWVudFN0eWxlIHsKLSAgLy8vIERlY2lkZSB3aGV0aGVyIHRvIHdyaXRlIGNvbW1l
bnRzLgotICBlbnVtIEVudW0gewotICAgIE5vbmUsIC8vLzwgRHJvcCBhbGwgY29tbWVudHMuCi0g
ICAgTW9zdCwgLy8vPCBSZWNvdmVyIG9kZCBiZWhhdmlvciBvZiBwcmV2aW91cyB2ZXJzaW9ucyAo
bm90IGltcGxlbWVudGVkIHlldCkuCi0gICAgQWxsICAgLy8vPCBLZWVwIGFsbCBjb21tZW50cy4K
LSAgfTsKLX07Ci0KLXN0cnVjdCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlciA6IHB1YmxpYyBTdHJl
YW1Xcml0ZXIgewotICBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcihTdHJpbmcgaW5kZW50YXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1lbnRTdHlsZTo6RW51bSBjcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbG9uU3ltYm9sLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgbnVsbFN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nIGVuZGluZ0xpbmVGZWVkU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVzZVNwZWNpYWxGbG9hdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFByZWNpc2lvblR5cGUg
cHJlY2lzaW9uVHlwZSk7Ci0gIGludCB3cml0ZShWYWx1ZSBjb25zdCYgcm9vdCwgT1N0cmVhbSog
c291dCkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gIHZvaWQgd3JpdGVWYWx1ZShWYWx1ZSBjb25z
dCYgdmFsdWUpOwotICB2b2lkIHdyaXRlQXJyYXlWYWx1ZShWYWx1ZSBjb25zdCYgdmFsdWUpOwot
ICBib29sIGlzTXVsdGlsaW5lQXJyYXkoVmFsdWUgY29uc3QmIHZhbHVlKTsKLSAgdm9pZCBwdXNo
VmFsdWUoU3RyaW5nIGNvbnN0JiB2YWx1ZSk7Ci0gIHZvaWQgd3JpdGVJbmRlbnQoKTsKLSAgdm9p
ZCB3cml0ZVdpdGhJbmRlbnQoU3RyaW5nIGNvbnN0JiB2YWx1ZSk7Ci0gIHZvaWQgaW5kZW50KCk7
Ci0gIHZvaWQgdW5pbmRlbnQoKTsKLSAgdm9pZCB3cml0ZUNvbW1lbnRCZWZvcmVWYWx1ZShWYWx1
ZSBjb25zdCYgcm9vdCk7Ci0gIHZvaWQgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUo
VmFsdWUgY29uc3QmIHJvb3QpOwotICBzdGF0aWMgYm9vbCBoYXNDb21tZW50Rm9yVmFsdWUoY29u
c3QgVmFsdWUmIHZhbHVlKTsKLQotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFN0cmluZz4gQ2hpbGRW
YWx1ZXM7Ci0KLSAgQ2hpbGRWYWx1ZXMgY2hpbGRWYWx1ZXNfOwotICBTdHJpbmcgaW5kZW50U3Ry
aW5nXzsKLSAgdW5zaWduZWQgaW50IHJpZ2h0TWFyZ2luXzsKLSAgU3RyaW5nIGluZGVudGF0aW9u
XzsKLSAgQ29tbWVudFN0eWxlOjpFbnVtIGNzXzsKLSAgU3RyaW5nIGNvbG9uU3ltYm9sXzsKLSAg
U3RyaW5nIG51bGxTeW1ib2xfOwotICBTdHJpbmcgZW5kaW5nTGluZUZlZWRTeW1ib2xfOwotICBi
b29sIGFkZENoaWxkVmFsdWVzXyA6IDE7Ci0gIGJvb2wgaW5kZW50ZWRfIDogMTsKLSAgYm9vbCB1
c2VTcGVjaWFsRmxvYXRzXyA6IDE7Ci0gIHVuc2lnbmVkIGludCBwcmVjaXNpb25fOwotICBQcmVj
aXNpb25UeXBlIHByZWNpc2lvblR5cGVfOwotfTsKLUJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjpC
dWlsdFN0eWxlZFN0cmVhbVdyaXRlcihTdHJpbmcgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudFN0eWxlOjpFbnVtIGNz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyBjb2xvblN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgbnVsbFN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5kaW5nTGluZUZlZWRTeW1ib2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VTcGVjaWFs
RmxvYXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJlY2lzaW9uVHlwZSBwcmVjaXNpb25UeXBlKQotICAgIDogcmln
aHRNYXJnaW5fKDc0KSwgaW5kZW50YXRpb25fKHN0ZDo6bW92ZShpbmRlbnRhdGlvbikpLCBjc18o
Y3MpLAotICAgICAgY29sb25TeW1ib2xfKHN0ZDo6bW92ZShjb2xvblN5bWJvbCkpLCBudWxsU3lt
Ym9sXyhzdGQ6Om1vdmUobnVsbFN5bWJvbCkpLAotICAgICAgZW5kaW5nTGluZUZlZWRTeW1ib2xf
KHN0ZDo6bW92ZShlbmRpbmdMaW5lRmVlZFN5bWJvbCkpLAotICAgICAgYWRkQ2hpbGRWYWx1ZXNf
KGZhbHNlKSwgaW5kZW50ZWRfKGZhbHNlKSwKLSAgICAgIHVzZVNwZWNpYWxGbG9hdHNfKHVzZVNw
ZWNpYWxGbG9hdHMpLCBwcmVjaXNpb25fKHByZWNpc2lvbiksCi0gICAgICBwcmVjaXNpb25UeXBl
XyhwcmVjaXNpb25UeXBlKSB7fQotaW50IEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZShW
YWx1ZSBjb25zdCYgcm9vdCwgT1N0cmVhbSogc291dCkgewotICBzb3V0XyA9IHNvdXQ7Ci0gIGFk
ZENoaWxkVmFsdWVzXyA9IGZhbHNlOwotICBpbmRlbnRlZF8gPSB0cnVlOwotICBpbmRlbnRTdHJp
bmdfLmNsZWFyKCk7Ci0gIHdyaXRlQ29tbWVudEJlZm9yZVZhbHVlKHJvb3QpOwotICBpZiAoIWlu
ZGVudGVkXykKLSAgICB3cml0ZUluZGVudCgpOwotICBpbmRlbnRlZF8gPSB0cnVlOwotICB3cml0
ZVZhbHVlKHJvb3QpOwotICB3cml0ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShyb290KTsK
LSAgKnNvdXRfIDw8IGVuZGluZ0xpbmVGZWVkU3ltYm9sXzsKLSAgc291dF8gPSBudWxscHRyOwot
ICByZXR1cm4gMDsKLX0KLXZvaWQgQnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlVmFsdWUo
VmFsdWUgY29uc3QmIHZhbHVlKSB7Ci0gIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gIGNhc2Ug
bnVsbFZhbHVlOgotICAgIHB1c2hWYWx1ZShudWxsU3ltYm9sXyk7Ci0gICAgYnJlYWs7Ci0gIGNh
c2UgaW50VmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZhbHVlVG9TdHJpbmcodmFsdWUuYXNMYXJnZXN0
SW50KCkpKTsKLSAgICBicmVhazsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZh
bHVlVG9TdHJpbmcodmFsdWUuYXNMYXJnZXN0VUludCgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
cmVhbFZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzRG91YmxlKCks
IHVzZVNwZWNpYWxGbG9hdHNfLCBwcmVjaXNpb25fLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZWNpc2lvblR5cGVfKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ugc3RyaW5nVmFsdWU6IHsK
LSAgICAvLyBJcyBOVUxMIGlzIHBvc3NpYmxlIGZvciB2YWx1ZS5zdHJpbmdfPyBOby4KLSAgICBj
aGFyIGNvbnN0KiBzdHI7Ci0gICAgY2hhciBjb25zdCogZW5kOwotICAgIGJvb2wgb2sgPSB2YWx1
ZS5nZXRTdHJpbmcoJnN0ciwgJmVuZCk7Ci0gICAgaWYgKG9rKQotICAgICAgcHVzaFZhbHVlKHZh
bHVlVG9RdW90ZWRTdHJpbmdOKHN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0cikp
KTsKLSAgICBlbHNlCi0gICAgICBwdXNoVmFsdWUoIiIpOwotICAgIGJyZWFrOwotICB9Ci0gIGNh
c2UgYm9vbGVhblZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzQm9v
bCgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgYXJyYXlWYWx1ZToKLSAgICB3cml0ZUFycmF5VmFs
dWUodmFsdWUpOwotICAgIGJyZWFrOwotICBjYXNlIG9iamVjdFZhbHVlOiB7Ci0gICAgVmFsdWU6
Ok1lbWJlcnMgbWVtYmVycyh2YWx1ZS5nZXRNZW1iZXJOYW1lcygpKTsKLSAgICBpZiAobWVtYmVy
cy5lbXB0eSgpKQotICAgICAgcHVzaFZhbHVlKCJ7fSIpOwotICAgIGVsc2UgewotICAgICAgd3Jp
dGVXaXRoSW5kZW50KCJ7Iik7Ci0gICAgICBpbmRlbnQoKTsKLSAgICAgIGF1dG8gaXQgPSBtZW1i
ZXJzLmJlZ2luKCk7Ci0gICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFN0cmluZyBjb25zdCYgbmFt
ZSA9ICppdDsKLSAgICAgICAgVmFsdWUgY29uc3QmIGNoaWxkVmFsdWUgPSB2YWx1ZVtuYW1lXTsK
LSAgICAgICAgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgIHdy
aXRlV2l0aEluZGVudCh2YWx1ZVRvUXVvdGVkU3RyaW5nTigKLSAgICAgICAgICAgIG5hbWUuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmFtZS5sZW5ndGgoKSkpKTsKLSAgICAgICAgKnNv
dXRfIDw8IGNvbG9uU3ltYm9sXzsKLSAgICAgICAgd3JpdGVWYWx1ZShjaGlsZFZhbHVlKTsKLSAg
ICAgICAgaWYgKCsraXQgPT0gbWVtYmVycy5lbmQoKSkgewotICAgICAgICAgIHdyaXRlQ29tbWVu
dEFmdGVyVmFsdWVPblNhbWVMaW5lKGNoaWxkVmFsdWUpOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgICpzb3V0XyA8PCAiLCI7Ci0gICAgICAgIHdyaXRlQ29tbWVudEFmdGVy
VmFsdWVPblNhbWVMaW5lKGNoaWxkVmFsdWUpOwotICAgICAgfQotICAgICAgdW5pbmRlbnQoKTsK
LSAgICAgIHdyaXRlV2l0aEluZGVudCgifSIpOwotICAgIH0KLSAgfSBicmVhazsKLSAgfQotfQot
Ci12b2lkIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZUFycmF5VmFsdWUoVmFsdWUgY29u
c3QmIHZhbHVlKSB7Ci0gIHVuc2lnbmVkIHNpemUgPSB2YWx1ZS5zaXplKCk7Ci0gIGlmIChzaXpl
ID09IDApCi0gICAgcHVzaFZhbHVlKCJbXSIpOwotICBlbHNlIHsKLSAgICBib29sIGlzTXVsdGlM
aW5lID0gKGNzXyA9PSBDb21tZW50U3R5bGU6OkFsbCkgfHwgaXNNdWx0aWxpbmVBcnJheSh2YWx1
ZSk7Ci0gICAgaWYgKGlzTXVsdGlMaW5lKSB7Ci0gICAgICB3cml0ZVdpdGhJbmRlbnQoIlsiKTsK
LSAgICAgIGluZGVudCgpOwotICAgICAgYm9vbCBoYXNDaGlsZFZhbHVlID0gIWNoaWxkVmFsdWVz
Xy5lbXB0eSgpOwotICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgZm9yICg7Oykgewot
ICAgICAgICBWYWx1ZSBjb25zdCYgY2hpbGRWYWx1ZSA9IHZhbHVlW2luZGV4XTsKLSAgICAgICAg
d3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgIGlmIChoYXNDaGls
ZFZhbHVlKQotICAgICAgICAgIHdyaXRlV2l0aEluZGVudChjaGlsZFZhbHVlc19baW5kZXhdKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgaWYgKCFpbmRlbnRlZF8pCi0gICAgICAgICAgICB3
cml0ZUluZGVudCgpOwotICAgICAgICAgIGluZGVudGVkXyA9IHRydWU7Ci0gICAgICAgICAgd3Jp
dGVWYWx1ZShjaGlsZFZhbHVlKTsKLSAgICAgICAgICBpbmRlbnRlZF8gPSBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoKytpbmRleCA9PSBzaXplKSB7Ci0gICAgICAgICAgd3JpdGVDb21t
ZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgKnNvdXRfIDw8ICIsIjsKLSAgICAgICAgd3JpdGVDb21tZW50QWZ0
ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICB9Ci0gICAgICB1bmluZGVudCgp
OwotICAgICAgd3JpdGVXaXRoSW5kZW50KCJdIik7Ci0gICAgfSBlbHNlIC8vIG91dHB1dCBvbiBh
IHNpbmdsZSBsaW5lCi0gICAgewotICAgICAgYXNzZXJ0KGNoaWxkVmFsdWVzXy5zaXplKCkgPT0g
c2l6ZSk7Ci0gICAgICAqc291dF8gPDwgIlsiOwotICAgICAgaWYgKCFpbmRlbnRhdGlvbl8uZW1w
dHkoKSkKLSAgICAgICAgKnNvdXRfIDw8ICIgIjsKLSAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHNpemU7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGluZGV4ID4gMCkKLSAg
ICAgICAgICAqc291dF8gPDwgKCghaW5kZW50YXRpb25fLmVtcHR5KCkpID8gIiwgIiA6ICIsIik7
Ci0gICAgICAgICpzb3V0XyA8PCBjaGlsZFZhbHVlc19baW5kZXhdOwotICAgICAgfQotICAgICAg
aWYgKCFpbmRlbnRhdGlvbl8uZW1wdHkoKSkKLSAgICAgICAgKnNvdXRfIDw8ICIgIjsKLSAgICAg
ICpzb3V0XyA8PCAiXSI7Ci0gICAgfQotICB9Ci19Ci0KLWJvb2wgQnVpbHRTdHlsZWRTdHJlYW1X
cml0ZXI6OmlzTXVsdGlsaW5lQXJyYXkoVmFsdWUgY29uc3QmIHZhbHVlKSB7Ci0gIEFycmF5SW5k
ZXggY29uc3Qgc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAgYm9vbCBpc011bHRpTGluZSA9IHNpemUg
KiAzID49IHJpZ2h0TWFyZ2luXzsKLSAgY2hpbGRWYWx1ZXNfLmNsZWFyKCk7Ci0gIGZvciAoQXJy
YXlJbmRleCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZSAmJiAhaXNNdWx0aUxpbmU7ICsraW5kZXgp
IHsKLSAgICBWYWx1ZSBjb25zdCYgY2hpbGRWYWx1ZSA9IHZhbHVlW2luZGV4XTsKLSAgICBpc011
bHRpTGluZSA9ICgoY2hpbGRWYWx1ZS5pc0FycmF5KCkgfHwgY2hpbGRWYWx1ZS5pc09iamVjdCgp
KSAmJgotICAgICAgICAgICAgICAgICAgICFjaGlsZFZhbHVlLmVtcHR5KCkpOwotICB9Ci0gIGlm
ICghaXNNdWx0aUxpbmUpIC8vIGNoZWNrIGlmIGxpbmUgbGVuZ3RoID4gbWF4IGxpbmUgbGVuZ3Ro
Ci0gIHsKLSAgICBjaGlsZFZhbHVlc18ucmVzZXJ2ZShzaXplKTsKLSAgICBhZGRDaGlsZFZhbHVl
c18gPSB0cnVlOwotICAgIEFycmF5SW5kZXggbGluZUxlbmd0aCA9IDQgKyAoc2l6ZSAtIDEpICog
MjsgLy8gJ1sgJyArICcsICcqbiArICcgXScKLSAgICBmb3IgKEFycmF5SW5kZXggaW5kZXggPSAw
OyBpbmRleCA8IHNpemU7ICsraW5kZXgpIHsKLSAgICAgIGlmIChoYXNDb21tZW50Rm9yVmFsdWUo
dmFsdWVbaW5kZXhdKSkgewotICAgICAgICBpc011bHRpTGluZSA9IHRydWU7Ci0gICAgICB9Ci0g
ICAgICB3cml0ZVZhbHVlKHZhbHVlW2luZGV4XSk7Ci0gICAgICBsaW5lTGVuZ3RoICs9IHN0YXRp
Y19jYXN0PEFycmF5SW5kZXg+KGNoaWxkVmFsdWVzX1tpbmRleF0ubGVuZ3RoKCkpOwotICAgIH0K
LSAgICBhZGRDaGlsZFZhbHVlc18gPSBmYWxzZTsKLSAgICBpc011bHRpTGluZSA9IGlzTXVsdGlM
aW5lIHx8IGxpbmVMZW5ndGggPj0gcmlnaHRNYXJnaW5fOwotICB9Ci0gIHJldHVybiBpc011bHRp
TGluZTsKLX0KLQotdm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6cHVzaFZhbHVlKFN0cmlu
ZyBjb25zdCYgdmFsdWUpIHsKLSAgaWYgKGFkZENoaWxkVmFsdWVzXykKLSAgICBjaGlsZFZhbHVl
c18ucHVzaF9iYWNrKHZhbHVlKTsKLSAgZWxzZQotICAgICpzb3V0XyA8PCB2YWx1ZTsKLX0KLQot
dm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVJbmRlbnQoKSB7Ci0gIC8vIGJsZXAg
aW50ZW5kZWQgdGhpcyB0byBsb29rIGF0IHRoZSBzby1mYXItd3JpdHRlbiBzdHJpbmcKLSAgLy8g
dG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgYXJlIGFscmVhZHkgaW5kZW50ZWQsIGJ1dAotICAvLyB3
aXRoIGEgc3RyZWFtIHdlIGNhbm5vdCBkbyB0aGF0LiBTbyB3ZSByZWx5IG9uIHNvbWUgc2F2ZWQg
c3RhdGUuCi0gIC8vIFRoZSBjYWxsZXIgY2hlY2tzIGluZGVudGVkXy4KLQotICBpZiAoIWluZGVu
dGF0aW9uXy5lbXB0eSgpKSB7Ci0gICAgLy8gSW4gdGhpcyBjYXNlLCBkcm9wIG5ld2xpbmVzIHRv
by4KLSAgICAqc291dF8gPDwgJ1xuJyA8PCBpbmRlbnRTdHJpbmdfOwotICB9Ci19Ci0KLXZvaWQg
QnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlV2l0aEluZGVudChTdHJpbmcgY29uc3QmIHZh
bHVlKSB7Ci0gIGlmICghaW5kZW50ZWRfKQotICAgIHdyaXRlSW5kZW50KCk7Ci0gICpzb3V0XyA8
PCB2YWx1ZTsKLSAgaW5kZW50ZWRfID0gZmFsc2U7Ci19Ci0KLXZvaWQgQnVpbHRTdHlsZWRTdHJl
YW1Xcml0ZXI6OmluZGVudCgpIHsgaW5kZW50U3RyaW5nXyArPSBpbmRlbnRhdGlvbl87IH0KLQot
dm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6dW5pbmRlbnQoKSB7Ci0gIGFzc2VydChpbmRl
bnRTdHJpbmdfLnNpemUoKSA+PSBpbmRlbnRhdGlvbl8uc2l6ZSgpKTsKLSAgaW5kZW50U3RyaW5n
Xy5yZXNpemUoaW5kZW50U3RyaW5nXy5zaXplKCkgLSBpbmRlbnRhdGlvbl8uc2l6ZSgpKTsKLX0K
LQotdm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVDb21tZW50QmVmb3JlVmFsdWUo
VmFsdWUgY29uc3QmIHJvb3QpIHsKLSAgaWYgKGNzXyA9PSBDb21tZW50U3R5bGU6Ok5vbmUpCi0g
ICAgcmV0dXJuOwotICBpZiAoIXJvb3QuaGFzQ29tbWVudChjb21tZW50QmVmb3JlKSkKLSAgICBy
ZXR1cm47Ci0KLSAgaWYgKCFpbmRlbnRlZF8pCi0gICAgd3JpdGVJbmRlbnQoKTsKLSAgY29uc3Qg
U3RyaW5nJiBjb21tZW50ID0gcm9vdC5nZXRDb21tZW50KGNvbW1lbnRCZWZvcmUpOwotICBTdHJp
bmc6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBjb21tZW50LmJlZ2luKCk7Ci0gIHdoaWxlIChpdGVy
ICE9IGNvbW1lbnQuZW5kKCkpIHsKLSAgICAqc291dF8gPDwgKml0ZXI7Ci0gICAgaWYgKCppdGVy
ID09ICdcbicgJiYgKChpdGVyICsgMSkgIT0gY29tbWVudC5lbmQoKSAmJiAqKGl0ZXIgKyAxKSA9
PSAnLycpKQotICAgICAgLy8gd3JpdGVJbmRlbnQoKTsgIC8vIHdvdWxkIHdyaXRlIGV4dHJhIG5l
d2xpbmUKLSAgICAgICpzb3V0XyA8PCBpbmRlbnRTdHJpbmdfOwotICAgICsraXRlcjsKLSAgfQot
ICBpbmRlbnRlZF8gPSBmYWxzZTsKLX0KLQotdm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6
d3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoCi0gICAgVmFsdWUgY29uc3QmIHJvb3Qp
IHsKLSAgaWYgKGNzXyA9PSBDb21tZW50U3R5bGU6Ok5vbmUpCi0gICAgcmV0dXJuOwotICBpZiAo
cm9vdC5oYXNDb21tZW50KGNvbW1lbnRBZnRlck9uU2FtZUxpbmUpKQotICAgICpzb3V0XyA8PCAi
ICIgKyByb290LmdldENvbW1lbnQoY29tbWVudEFmdGVyT25TYW1lTGluZSk7Ci0KLSAgaWYgKHJv
b3QuaGFzQ29tbWVudChjb21tZW50QWZ0ZXIpKSB7Ci0gICAgd3JpdGVJbmRlbnQoKTsKLSAgICAq
c291dF8gPDwgcm9vdC5nZXRDb21tZW50KGNvbW1lbnRBZnRlcik7Ci0gIH0KLX0KLQotLy8gc3Rh
dGljCi1ib29sIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjpoYXNDb21tZW50Rm9yVmFsdWUoY29u
c3QgVmFsdWUmIHZhbHVlKSB7Ci0gIHJldHVybiB2YWx1ZS5oYXNDb21tZW50KGNvbW1lbnRCZWZv
cmUpIHx8Ci0gICAgICAgICB2YWx1ZS5oYXNDb21tZW50KGNvbW1lbnRBZnRlck9uU2FtZUxpbmUp
IHx8Ci0gICAgICAgICB2YWx1ZS5oYXNDb21tZW50KGNvbW1lbnRBZnRlcik7Ci19Ci0KLS8vLy8v
Ly8vLy8vLy8vLwotLy8gU3RyZWFtV3JpdGVyCi0KLVN0cmVhbVdyaXRlcjo6U3RyZWFtV3JpdGVy
KCkgOiBzb3V0XyhudWxscHRyKSB7fQotU3RyZWFtV3JpdGVyOjp+U3RyZWFtV3JpdGVyKCkgPSBk
ZWZhdWx0OwotU3RyZWFtV3JpdGVyOjpGYWN0b3J5Ojp+RmFjdG9yeSgpID0gZGVmYXVsdDsKLVN0
cmVhbVdyaXRlckJ1aWxkZXI6OlN0cmVhbVdyaXRlckJ1aWxkZXIoKSB7IHNldERlZmF1bHRzKCZz
ZXR0aW5nc18pOyB9Ci1TdHJlYW1Xcml0ZXJCdWlsZGVyOjp+U3RyZWFtV3JpdGVyQnVpbGRlcigp
ID0gZGVmYXVsdDsKLVN0cmVhbVdyaXRlciogU3RyZWFtV3JpdGVyQnVpbGRlcjo6bmV3U3RyZWFt
V3JpdGVyKCkgY29uc3QgewotICBTdHJpbmcgaW5kZW50YXRpb24gPSBzZXR0aW5nc19bImluZGVu
dGF0aW9uIl0uYXNTdHJpbmcoKTsKLSAgU3RyaW5nIGNzX3N0ciA9IHNldHRpbmdzX1siY29tbWVu
dFN0eWxlIl0uYXNTdHJpbmcoKTsKLSAgU3RyaW5nIHB0X3N0ciA9IHNldHRpbmdzX1sicHJlY2lz
aW9uVHlwZSJdLmFzU3RyaW5nKCk7Ci0gIGJvb2wgZXljID0gc2V0dGluZ3NfWyJlbmFibGVZQU1M
Q29tcGF0aWJpbGl0eSJdLmFzQm9vbCgpOwotICBib29sIGRucCA9IHNldHRpbmdzX1siZHJvcE51
bGxQbGFjZWhvbGRlcnMiXS5hc0Jvb2woKTsKLSAgYm9vbCB1c2YgPSBzZXR0aW5nc19bInVzZVNw
ZWNpYWxGbG9hdHMiXS5hc0Jvb2woKTsKLSAgdW5zaWduZWQgaW50IHByZSA9IHNldHRpbmdzX1si
cHJlY2lzaW9uIl0uYXNVSW50KCk7Ci0gIENvbW1lbnRTdHlsZTo6RW51bSBjcyA9IENvbW1lbnRT
dHlsZTo6QWxsOwotICBpZiAoY3Nfc3RyID09ICJBbGwiKSB7Ci0gICAgY3MgPSBDb21tZW50U3R5
bGU6OkFsbDsKLSAgfSBlbHNlIGlmIChjc19zdHIgPT0gIk5vbmUiKSB7Ci0gICAgY3MgPSBDb21t
ZW50U3R5bGU6Ok5vbmU7Ci0gIH0gZWxzZSB7Ci0gICAgdGhyb3dSdW50aW1lRXJyb3IoImNvbW1l
bnRTdHlsZSBtdXN0IGJlICdBbGwnIG9yICdOb25lJyIpOwotICB9Ci0gIFByZWNpc2lvblR5cGUg
cHJlY2lzaW9uVHlwZShzaWduaWZpY2FudERpZ2l0cyk7Ci0gIGlmIChwdF9zdHIgPT0gInNpZ25p
ZmljYW50IikgewotICAgIHByZWNpc2lvblR5cGUgPSBQcmVjaXNpb25UeXBlOjpzaWduaWZpY2Fu
dERpZ2l0czsKLSAgfSBlbHNlIGlmIChwdF9zdHIgPT0gImRlY2ltYWwiKSB7Ci0gICAgcHJlY2lz
aW9uVHlwZSA9IFByZWNpc2lvblR5cGU6OmRlY2ltYWxQbGFjZXM7Ci0gIH0gZWxzZSB7Ci0gICAg
dGhyb3dSdW50aW1lRXJyb3IoInByZWNpc2lvblR5cGUgbXVzdCBiZSAnc2lnbmlmaWNhbnQnIG9y
ICdkZWNpbWFsJyIpOwotICB9Ci0gIFN0cmluZyBjb2xvblN5bWJvbCA9ICIgOiAiOwotICBpZiAo
ZXljKSB7Ci0gICAgY29sb25TeW1ib2wgPSAiOiAiOwotICB9IGVsc2UgaWYgKGluZGVudGF0aW9u
LmVtcHR5KCkpIHsKLSAgICBjb2xvblN5bWJvbCA9ICI6IjsKLSAgfQotICBTdHJpbmcgbnVsbFN5
bWJvbCA9ICJudWxsIjsKLSAgaWYgKGRucCkgewotICAgIG51bGxTeW1ib2wuY2xlYXIoKTsKLSAg
fQotICBpZiAocHJlID4gMTcpCi0gICAgcHJlID0gMTc7Ci0gIFN0cmluZyBlbmRpbmdMaW5lRmVl
ZFN5bWJvbDsKLSAgcmV0dXJuIG5ldyBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcihpbmRlbnRhdGlv
biwgY3MsIGNvbG9uU3ltYm9sLCBudWxsU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZGluZ0xpbmVGZWVkU3ltYm9sLCB1c2YsIHByZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb25UeXBlKTsKLX0KLXN0YXRpYyB2b2lk
IGdldFZhbGlkV3JpdGVyS2V5cyhzdGQ6OnNldDxTdHJpbmc+KiB2YWxpZF9rZXlzKSB7Ci0gIHZh
bGlkX2tleXMtPmNsZWFyKCk7Ci0gIHZhbGlkX2tleXMtPmluc2VydCgiaW5kZW50YXRpb24iKTsK
LSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJjb21tZW50U3R5bGUiKTsKLSAgdmFsaWRfa2V5cy0+aW5z
ZXJ0KCJlbmFibGVZQU1MQ29tcGF0aWJpbGl0eSIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoImRy
b3BOdWxsUGxhY2Vob2xkZXJzIik7Ci0gIHZhbGlkX2tleXMtPmluc2VydCgidXNlU3BlY2lhbEZs
b2F0cyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoInByZWNpc2lvbiIpOwotICB2YWxpZF9rZXlz
LT5pbnNlcnQoInByZWNpc2lvblR5cGUiKTsKLX0KLWJvb2wgU3RyZWFtV3JpdGVyQnVpbGRlcjo6
dmFsaWRhdGUoSnNvbjo6VmFsdWUqIGludmFsaWQpIGNvbnN0IHsKLSAgSnNvbjo6VmFsdWUgbXlf
aW52YWxpZDsKLSAgaWYgKCFpbnZhbGlkKQotICAgIGludmFsaWQgPSAmbXlfaW52YWxpZDsgLy8g
c28gd2UgZG8gbm90IG5lZWQgdG8gdGVzdCBmb3IgTlVMTAotICBKc29uOjpWYWx1ZSYgaW52ID0g
KmludmFsaWQ7Ci0gIHN0ZDo6c2V0PFN0cmluZz4gdmFsaWRfa2V5czsKLSAgZ2V0VmFsaWRXcml0
ZXJLZXlzKCZ2YWxpZF9rZXlzKTsKLSAgVmFsdWU6Ok1lbWJlcnMga2V5cyA9IHNldHRpbmdzXy5n
ZXRNZW1iZXJOYW1lcygpOwotICBzaXplX3QgbiA9IGtleXMuc2l6ZSgpOwotICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG47ICsraSkgewotICAgIFN0cmluZyBjb25zdCYga2V5ID0ga2V5c1tpXTsK
LSAgICBpZiAodmFsaWRfa2V5cy5maW5kKGtleSkgPT0gdmFsaWRfa2V5cy5lbmQoKSkgewotICAg
ICAgaW52W2tleV0gPSBzZXR0aW5nc19ba2V5XTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGludi5l
bXB0eSgpOwotfQotVmFsdWUmIFN0cmVhbVdyaXRlckJ1aWxkZXI6Om9wZXJhdG9yW10oY29uc3Qg
U3RyaW5nJiBrZXkpIHsKLSAgcmV0dXJuIHNldHRpbmdzX1trZXldOwotfQotLy8gc3RhdGljCi12
b2lkIFN0cmVhbVdyaXRlckJ1aWxkZXI6OnNldERlZmF1bHRzKEpzb246OlZhbHVlKiBzZXR0aW5n
cykgewotICAvLyEgW1N0cmVhbVdyaXRlckJ1aWxkZXJEZWZhdWx0c10KLSAgKCpzZXR0aW5ncylb
ImNvbW1lbnRTdHlsZSJdID0gIkFsbCI7Ci0gICgqc2V0dGluZ3MpWyJpbmRlbnRhdGlvbiJdID0g
Ilx0IjsKLSAgKCpzZXR0aW5ncylbImVuYWJsZVlBTUxDb21wYXRpYmlsaXR5Il0gPSBmYWxzZTsK
LSAgKCpzZXR0aW5ncylbImRyb3BOdWxsUGxhY2Vob2xkZXJzIl0gPSBmYWxzZTsKLSAgKCpzZXR0
aW5ncylbInVzZVNwZWNpYWxGbG9hdHMiXSA9IGZhbHNlOwotICAoKnNldHRpbmdzKVsicHJlY2lz
aW9uIl0gPSAxNzsKLSAgKCpzZXR0aW5ncylbInByZWNpc2lvblR5cGUiXSA9ICJzaWduaWZpY2Fu
dCI7Ci0gIC8vISBbU3RyZWFtV3JpdGVyQnVpbGRlckRlZmF1bHRzXQotfQotCi1TdHJpbmcgd3Jp
dGVTdHJpbmcoU3RyZWFtV3JpdGVyOjpGYWN0b3J5IGNvbnN0JiBmYWN0b3J5LCBWYWx1ZSBjb25z
dCYgcm9vdCkgewotICBPU3RyaW5nU3RyZWFtIHNvdXQ7Ci0gIFN0cmVhbVdyaXRlclB0ciBjb25z
dCB3cml0ZXIoZmFjdG9yeS5uZXdTdHJlYW1Xcml0ZXIoKSk7Ci0gIHdyaXRlci0+d3JpdGUocm9v
dCwgJnNvdXQpOwotICByZXR1cm4gc291dC5zdHIoKTsKLX0KLQotT1N0cmVhbSYgb3BlcmF0b3I8
PChPU3RyZWFtJiBzb3V0LCBWYWx1ZSBjb25zdCYgcm9vdCkgewotICBTdHJlYW1Xcml0ZXJCdWls
ZGVyIGJ1aWxkZXI7Ci0gIFN0cmVhbVdyaXRlclB0ciBjb25zdCB3cml0ZXIoYnVpbGRlci5uZXdT
dHJlYW1Xcml0ZXIoKSk7Ci0gIHdyaXRlci0+d3JpdGUocm9vdCwgJnNvdXQpOwotICByZXR1cm4g
c291dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSnNvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGli
X2pzb24vdmVyc2lvbi5oLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vdmVyc2lvbi5oLmluCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2Y0MzljY2M4YjNmZjE0Y2I0Y2E2OWUwY2I4MTM2
NjUzMzcxM2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2Uvc3JjL2xpYl9qc29uL3ZlcnNpb24uaC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDIyICsw
LDAgQEAKLS8vIERPIE5PVCBFRElULiBUaGlzIGZpbGUgKGFuZCAidmVyc2lvbiIpIGlzIGEgdGVt
cGxhdGUgdXNlZCBieSB0aGUgYnVpbGQgc3lzdGVtCi0vLyAoZWl0aGVyIENNYWtlIG9yIE1lc29u
KSB0byBnZW5lcmF0ZSBhICJ2ZXJzaW9uLmgiIGhlYWRlciBmaWxlLgotI2lmbmRlZiBKU09OX1ZF
UlNJT05fSF9JTkNMVURFRAotI2RlZmluZSBKU09OX1ZFUlNJT05fSF9JTkNMVURFRAotCi0jZGVm
aW5lIEpTT05DUFBfVkVSU0lPTl9TVFJJTkcgIkBKU09OQ1BQX1ZFUlNJT05AIgotI2RlZmluZSBK
U09OQ1BQX1ZFUlNJT05fTUFKT1IgQEpTT05DUFBfVkVSU0lPTl9NQUpPUkAKLSNkZWZpbmUgSlNP
TkNQUF9WRVJTSU9OX01JTk9SIEBKU09OQ1BQX1ZFUlNJT05fTUlOT1JACi0jZGVmaW5lIEpTT05D
UFBfVkVSU0lPTl9QQVRDSCBASlNPTkNQUF9WRVJTSU9OX1BBVENIQAotI2RlZmluZSBKU09OQ1BQ
X1ZFUlNJT05fUVVBTElGSUVSCi0jZGVmaW5lIEpTT05DUFBfVkVSU0lPTl9IRVhBICgoSlNPTkNQ
UF9WRVJTSU9OX01BSk9SIDw8IDI0KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAo
SlNPTkNQUF9WRVJTSU9OX01JTk9SIDw8IDE2KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAoSlNPTkNQUF9WRVJTSU9OX1BBVENIIDw8IDgpKQotCi0jaWZkZWYgSlNPTkNQUF9VU0lO
R19TRUNVUkVfTUVNT1JZCi0jdW5kZWYgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi0jZW5k
aWYKLSNkZWZpbmUgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZIEBKU09OQ1BQX1VTRV9TRUNV
UkVfTUVNT1JZQAotLy8gSWYgbm9uLXplcm8sIHRoZSBsaWJyYXJ5IHplcm9lcyBhbnkgbWVtb3J5
IHRoYXQgaXQgaGFzIGFsbG9jYXRlZCBiZWZvcmUKLS8vIGl0IGZyZWVzIGl0cyBtZW1vcnkuCi0K
LSNlbmRpZiAvLyBKU09OX1ZFUlNJT05fSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMv
dGVzdF9saWJfanNvbi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vQ01h
a2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYjE4MTM2MWIyYmYy
Y2Y3Y2M5NzYyZmE2YjJiNDgxNmE4OWJkYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9DTWFrZUxpc3RzLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSMgdmltOiBldCB0cz00IHN0cz00IHN3PTQg
dHc9MAotCi1hZGRfZXhlY3V0YWJsZSgganNvbmNwcF90ZXN0Ci0gICAgICAgICAgICAgICAganNv
bnRlc3QuY3BwCi0gICAgICAgICAgICAgICAganNvbnRlc3QuaAotICAgICAgICAgICAgICAgIGZ1
enouY3BwCi0gICAgICAgICAgICAgICAgZnV6ei5oCi0gICAgICAgICAgICAgICAgbWFpbi5jcHAK
LSAgICAgICAgICAgICAgICApCi0KLQotaWYoQlVJTERfU0hBUkVEX0xJQlMpCi0gICAgYWRkX2Nv
bXBpbGVfZGVmaW5pdGlvbnMoIEpTT05fRExMICkKLWVuZGlmKCkKLXRhcmdldF9saW5rX2xpYnJh
cmllcyhqc29uY3BwX3Rlc3QganNvbmNwcF9saWIpCi0KLSMgYW5vdGhlciB3YXkgdG8gc29sdmUg
aXNzdWUgIzkwCi0jc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGpzb25jcHBfdGVzdCBQUk9QRVJUSUVT
IENPTVBJTEVfRkxBR1MgLWZmbG9hdC1zdG9yZSkKLQotIyBSdW4gdW5pdCB0ZXN0cyBpbiBwb3N0
LWJ1aWxkCi0jIChkZWZhdWx0IGNtYWtlIHdvcmtmbG93IGhpZGVzIGF3YXkgdGhlIHRlc3QgcmVz
dWx0IGludG8gYSBmaWxlLCByZXN1bHRpbmcgaW4gcG9vciBkZXYgd29ya2Zsb3c/IT8pCi1pZihK
U09OQ1BQX1dJVEhfUE9TVF9CVUlMRF9VTklUVEVTVCkKLSAgICBpZihCVUlMRF9TSEFSRURfTElC
UykKLSAgICAgICAgIyBGaXJzdCwgY29weSB0aGUgc2hhcmVkIGxpYiwgZm9yIE1pY3Jvc29mdC4K
LSAgICAgICAgIyBUaGVuLCBydW4gdGhlIHRlc3QgZXhlY3V0YWJsZS4KLSAgICAgICAgYWRkX2N1
c3RvbV9jb21tYW5kKCBUQVJHRVQganNvbmNwcF90ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUE9TVF9CVUlMRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkQgJHtD
TUFLRV9DT01NQU5EfSAtRSBjb3B5X2lmX2RpZmZlcmVudCAkPFRBUkdFVF9GSUxFOmpzb25jcHBf
bGliPiAkPFRBUkdFVF9GSUxFX0RJUjpqc29uY3BwX3Rlc3Q+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ09NTUFORCAke0NNQUtFX0NST1NTQ09NUElMSU5HX0VNVUxBVE9SfSAkPFRBUkdF
VF9GSUxFOmpzb25jcHBfdGVzdD4pCi0gICAgZWxzZShCVUlMRF9TSEFSRURfTElCUykKLSAgICAg
ICAgIyBKdXN0IHJ1biB0aGUgdGVzdCBleGVjdXRhYmxlLgotICAgICAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoIFRBUkdFVCBqc29uY3BwX3Rlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
T1NUX0JVSUxECi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUFORCAke0NNQUtFX0NS
T1NTQ09NUElMSU5HX0VNVUxBVE9SfSAkPFRBUkdFVF9GSUxFOmpzb25jcHBfdGVzdD4pCi0gICAg
ZW5kaWYoKQotICAgICMjIENyZWF0ZSB0ZXN0cyBmb3IgZGFzaGJvYXJkIHN1Ym1pc3Npb24sIGFs
bG93cyBlYXN5IHJldmlldyBvZiBDSSByZXN1bHRzIGh0dHBzOi8vbXkuY2Rhc2gub3JnL2luZGV4
LnBocD9wcm9qZWN0PWpzb25jcHAKLSAgICBhZGRfdGVzdChOQU1FIGpzb25jcHBfdGVzdAotICAg
ICAgIENPTU1BTkQgJHtDTUFLRV9DUk9TU0NPTVBJTElOR19FTVVMQVRPUn0gICQ8VEFSR0VUX0ZJ
TEU6anNvbmNwcF90ZXN0PgotICAgICkKLWVuZGlmKCkKLQotc2V0X3RhcmdldF9wcm9wZXJ0aWVz
KGpzb25jcHBfdGVzdCBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FIGpzb25jcHBfdGVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vZnV6ei5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xp
Yl9qc29uL2Z1enouY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzlmMTlmZmVl
NGRhNDcxYWFjMWY4NzYwZGY2OTgyNGRhMDNlNTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vZnV6ei5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDE5IFRoZSBK
c29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJs
aWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0
aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pz
b25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2luY2x1ZGUgImZ1enouaCIKLQotI2lu
Y2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8anNvbi9jb25maWcuaD4KLSNpbmNsdWRlIDxqc29u
L2pzb24uaD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVk
ZSA8c3RyaW5nPgotCi1uYW1lc3BhY2UgSnNvbiB7Ci1jbGFzcyBFeGNlcHRpb247Ci19Ci0KLWV4
dGVybiAiQyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYnVpbGRlcjsKLQotICBp
ZiAoc2l6ZSA8IHNpemVvZih1aW50MzJfdCkpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIHVp
bnQzMl90IGhhc2hfc2V0dGluZ3MgPSAqKGNvbnN0IHVpbnQzMl90KilkYXRhOwotICBkYXRhICs9
IHNpemVvZih1aW50MzJfdCk7Ci0KLSAgYnVpbGRlci5zZXR0aW5nc19bImZhaWxJZkV4dHJhIl0g
PSBoYXNoX3NldHRpbmdzICYgKDEgPDwgMCk7Ci0gIGJ1aWxkZXIuc2V0dGluZ3NfWyJhbGxvd0Nv
bW1lbnRzXyJdID0gaGFzaF9zZXR0aW5ncyAmICgxIDw8IDEpOwotICBidWlsZGVyLnNldHRpbmdz
X1sic3RyaWN0Um9vdF8iXSA9IGhhc2hfc2V0dGluZ3MgJiAoMSA8PCAyKTsKLSAgYnVpbGRlci5z
ZXR0aW5nc19bImFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRlcnNfIl0gPSBoYXNoX3NldHRpbmdz
ICYgKDEgPDwgMyk7Ci0gIGJ1aWxkZXIuc2V0dGluZ3NfWyJhbGxvd051bWVyaWNLZXlzXyJdID0g
aGFzaF9zZXR0aW5ncyAmICgxIDw8IDQpOwotICBidWlsZGVyLnNldHRpbmdzX1siYWxsb3dTaW5n
bGVRdW90ZXNfIl0gPSBoYXNoX3NldHRpbmdzICYgKDEgPDwgNSk7Ci0gIGJ1aWxkZXIuc2V0dGlu
Z3NfWyJmYWlsSWZFeHRyYV8iXSA9IGhhc2hfc2V0dGluZ3MgJiAoMSA8PCA2KTsKLSAgYnVpbGRl
ci5zZXR0aW5nc19bInJlamVjdER1cEtleXNfIl0gPSBoYXNoX3NldHRpbmdzICYgKDEgPDwgNyk7
Ci0gIGJ1aWxkZXIuc2V0dGluZ3NfWyJhbGxvd1NwZWNpYWxGbG9hdHNfIl0gPSBoYXNoX3NldHRp
bmdzICYgKDEgPDwgOCk7Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPEpzb246OkNoYXJSZWFkZXI+IHJl
YWRlcihidWlsZGVyLm5ld0NoYXJSZWFkZXIoKSk7Ci0KLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAg
Y29uc3QgY2hhciogZGF0YV9zdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KTsKLSAgdHJ5IHsKLSAgICByZWFkZXItPnBhcnNlKGRhdGFfc3RyLCBkYXRhX3N0ciArIHNpemUs
ICZyb290LCBudWxscHRyKTsKLSAgfSBjYXRjaCAoSnNvbjo6RXhjZXB0aW9uIGNvbnN0Jikgewot
ICB9Ci0gIC8vIFdoZXRoZXIgaXQgc3VjY2VlZGVkIG9yIG5vdCBkb2Vzbid0IG1hdHRlci4KLSAg
cmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29uL2Z1enouaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vZnV6ei5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwODE2ZDI3NTdjZTU4OTY5NGRlNzFhY2JhNGVjNGFhMGI2Yzk1M2FjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pz
b24vZnV6ei5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDctMjAxMCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGlj
ZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5
b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5
IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZm5kZWYgRlVa
Wl9IX0lOQ0xVREVECi0jZGVmaW5lIEZVWlpfSF9JTkNMVURFRAotCi0jaW5jbHVkZSA8Y3N0ZGRl
Zj4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRlc3RP
bmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSk7Ci0KLSNlbmRpZiAvLyBp
Zm5kZWYgRlVaWl9IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29u
L2pzb250ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vanNvbnRlc3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGI1Mjk2ZDkzNzdmNjc3MmJhYWZlYTE4YzgzYjY3
ZDQ3NmQ3MzZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vanNvbnRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFu
ZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwg
b3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5b3VyIGp1
cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0
dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNkZWZpbmUgX0NSVF9TRUNV
UkVfTk9fV0FSTklOR1MgMSAvLyBQcmV2ZW50cyBkZXByZWNhdGlvbiB3YXJuaW5nIHdpdGggTVNW
QwotI2luY2x1ZGUgImpzb250ZXN0LmgiCi0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHN0
cmluZz4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0vLyBVc2VkIHRvIGluc3RhbGwgYSByZXBv
cnQgaG9vayB0aGF0IHByZXZlbnQgZGlhbG9nIG9uIGFzc2VydGlvbiBhbmQgZXJyb3IuCi0jaW5j
bHVkZSA8Y3J0ZGJnLmg+Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotI2lmIGRl
ZmluZWQoX1dJTjMyKQotLy8gVXNlZCB0byBwcmV2ZW50IGRpYWxvZyBvbiBtZW1vcnkgZmF1bHQu
Ci0vLyBMaW1pdHMgaGVhZGVycyBpbmNsdWRlZCBieSBXaW5kb3dzLmgKLSNkZWZpbmUgV0lOMzJf
TEVBTl9BTkRfTUVBTgotI2RlZmluZSBOT1NFUlZJQ0UKLSNkZWZpbmUgTk9NQ1gKLSNkZWZpbmUg
Tk9JTUUKLSNkZWZpbmUgTk9TT1VORAotI2RlZmluZSBOT0NPTU0KLSNkZWZpbmUgTk9SUEMKLSNk
ZWZpbmUgTk9HREkKLSNkZWZpbmUgTk9VU0VSCi0jZGVmaW5lIE5PRFJJVkVSUwotI2RlZmluZSBO
T0xPR0VSUk9SCi0jZGVmaW5lIE5PUFJPRklMRVIKLSNkZWZpbmUgTk9NRU1NR1IKLSNkZWZpbmUg
Tk9MRklMRUlPCi0jZGVmaW5lIE5PT1BFTkZJTEUKLSNkZWZpbmUgTk9SRVNPVVJDRQotI2RlZmlu
ZSBOT0FUT00KLSNkZWZpbmUgTk9MQU5HVUFHRQotI2RlZmluZSBOT0xTVFJJTkcKLSNkZWZpbmUg
Tk9EQkNTCi0jZGVmaW5lIE5PS0VZQk9BUkRJTkZPCi0jZGVmaW5lIE5PR0RJQ0FQTUFTS1MKLSNk
ZWZpbmUgTk9DT0xPUgotI2RlZmluZSBOT0dESU9CSgotI2RlZmluZSBOT0RSQVdURVhUCi0jZGVm
aW5lIE5PVEVYVE1FVFJJQwotI2RlZmluZSBOT1NDQUxBQkxFRk9OVAotI2RlZmluZSBOT0JJVE1B
UAotI2RlZmluZSBOT1JBU1RFUk9QUwotI2RlZmluZSBOT01FVEFGSUxFCi0jZGVmaW5lIE5PU1lT
TUVUUklDUwotI2RlZmluZSBOT1NZU1RFTVBBUkFNU0lORk8KLSNkZWZpbmUgTk9NU0cKLSNkZWZp
bmUgTk9XSU5TVFlMRVMKLSNkZWZpbmUgTk9XSU5PRkZTRVRTCi0jZGVmaW5lIE5PU0hPV1dJTkRP
VwotI2RlZmluZSBOT0RFRkVSV0lORE9XUE9TCi0jZGVmaW5lIE5PVklSVFVBTEtFWUNPREVTCi0j
ZGVmaW5lIE5PS0VZU1RBVEVTCi0jZGVmaW5lIE5PV0gKLSNkZWZpbmUgTk9NRU5VUwotI2RlZmlu
ZSBOT1NDUk9MTAotI2RlZmluZSBOT0NMSVBCT0FSRAotI2RlZmluZSBOT0lDT05TCi0jZGVmaW5l
IE5PTUIKLSNkZWZpbmUgTk9TWVNDT01NQU5EUwotI2RlZmluZSBOT01ESQotI2RlZmluZSBOT0NU
TE1HUgotI2RlZmluZSBOT1dJTk1FU1NBR0VTCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlm
IC8vIGlmIGRlZmluZWQoX1dJTjMyKQotCi1uYW1lc3BhY2UgSnNvblRlc3QgewotCi0vLyBjbGFz
cyBUZXN0UmVzdWx0Ci0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotVGVzdFJlc3VsdDo6VGVzdFJlc3VsdCgpIHsK
LSAgLy8gVGhlIHJvb3QgcHJlZGljYXRlIGhhcyBpZCAwCi0gIHJvb3RQcmVkaWNhdGVOb2RlXy5p
ZF8gPSAwOwotICByb290UHJlZGljYXRlTm9kZV8ubmV4dF8gPSBudWxscHRyOwotICBwcmVkaWNh
dGVTdGFja1RhaWxfID0gJnJvb3RQcmVkaWNhdGVOb2RlXzsKLX0KLQotdm9pZCBUZXN0UmVzdWx0
OjpzZXRUZXN0TmFtZShjb25zdCBKc29uOjpTdHJpbmcmIG5hbWUpIHsgbmFtZV8gPSBuYW1lOyB9
Ci0KLVRlc3RSZXN1bHQmCi1UZXN0UmVzdWx0OjphZGRGYWlsdXJlKGNvbnN0IGNoYXIqIGZpbGUs
IHVuc2lnbmVkIGludCBsaW5lLCBjb25zdCBjaGFyKiBleHByKSB7Ci0gIC8vLyBXYWxrcyB0aGUg
UHJlZGljYXRlQ29udGV4dCBzdGFjayBhZGRpbmcgdGhlbSB0byBmYWlsdXJlc18gaWYgbm90IGFs
cmVhZHkKLSAgLy8vIGFkZGVkLgotICB1bnNpZ25lZCBpbnQgbmVzdGluZ0xldmVsID0gMDsKLSAg
UHJlZGljYXRlQ29udGV4dCogbGFzdE5vZGUgPSByb290UHJlZGljYXRlTm9kZV8ubmV4dF87Ci0g
IGZvciAoOyBsYXN0Tm9kZSAhPSBudWxscHRyOyBsYXN0Tm9kZSA9IGxhc3ROb2RlLT5uZXh0Xykg
ewotICAgIGlmIChsYXN0Tm9kZS0+aWRfID4gbGFzdFVzZWRQcmVkaWNhdGVJZF8pIC8vIG5ldyBQ
cmVkaWNhdGVDb250ZXh0Ci0gICAgewotICAgICAgbGFzdFVzZWRQcmVkaWNhdGVJZF8gPSBsYXN0
Tm9kZS0+aWRfOwotICAgICAgYWRkRmFpbHVyZUluZm8obGFzdE5vZGUtPmZpbGVfLCBsYXN0Tm9k
ZS0+bGluZV8sIGxhc3ROb2RlLT5leHByXywKLSAgICAgICAgICAgICAgICAgICAgIG5lc3RpbmdM
ZXZlbCk7Ci0gICAgICAvLyBMaW5rIHRoZSBQcmVkaWNhdGVDb250ZXh0IHRvIHRoZSBmYWlsdXJl
IGZvciBtZXNzYWdlIHRhcmdldCB3aGVuCi0gICAgICAvLyBwb3BwaW5nIHRoZSBQcmVkaWNhdGVD
b250ZXh0LgotICAgICAgbGFzdE5vZGUtPmZhaWx1cmVfID0gJihmYWlsdXJlc18uYmFjaygpKTsK
LSAgICB9Ci0gICAgKytuZXN0aW5nTGV2ZWw7Ci0gIH0KLQotICAvLyBBZGRzIHRoZSBmYWlsZWQg
YXNzZXJ0aW9uCi0gIGFkZEZhaWx1cmVJbmZvKGZpbGUsIGxpbmUsIGV4cHIsIG5lc3RpbmdMZXZl
bCk7Ci0gIG1lc3NhZ2VUYXJnZXRfID0gJihmYWlsdXJlc18uYmFjaygpKTsKLSAgcmV0dXJuICp0
aGlzOwotfQotCi12b2lkIFRlc3RSZXN1bHQ6OmFkZEZhaWx1cmVJbmZvKGNvbnN0IGNoYXIqIGZp
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmVzdGluZ0xldmVsKSB7Ci0g
IEZhaWx1cmUgZmFpbHVyZTsKLSAgZmFpbHVyZS5maWxlXyA9IGZpbGU7Ci0gIGZhaWx1cmUubGlu
ZV8gPSBsaW5lOwotICBpZiAoZXhwcikgewotICAgIGZhaWx1cmUuZXhwcl8gPSBleHByOwotICB9
Ci0gIGZhaWx1cmUubmVzdGluZ0xldmVsXyA9IG5lc3RpbmdMZXZlbDsKLSAgZmFpbHVyZXNfLnB1
c2hfYmFjayhmYWlsdXJlKTsKLX0KLQotVGVzdFJlc3VsdCYgVGVzdFJlc3VsdDo6cG9wUHJlZGlj
YXRlQ29udGV4dCgpIHsKLSAgUHJlZGljYXRlQ29udGV4dCogbGFzdE5vZGUgPSAmcm9vdFByZWRp
Y2F0ZU5vZGVfOwotICB3aGlsZSAobGFzdE5vZGUtPm5leHRfICE9IG51bGxwdHIgJiYgbGFzdE5v
ZGUtPm5leHRfLT5uZXh0XyAhPSBudWxscHRyKSB7Ci0gICAgbGFzdE5vZGUgPSBsYXN0Tm9kZS0+
bmV4dF87Ci0gIH0KLSAgLy8gU2V0IG1lc3NhZ2UgdGFyZ2V0IHRvIHBvcHBlZCBmYWlsdXJlCi0g
IFByZWRpY2F0ZUNvbnRleHQqIHRhaWwgPSBsYXN0Tm9kZS0+bmV4dF87Ci0gIGlmICh0YWlsICE9
IG51bGxwdHIgJiYgdGFpbC0+ZmFpbHVyZV8gIT0gbnVsbHB0cikgewotICAgIG1lc3NhZ2VUYXJn
ZXRfID0gdGFpbC0+ZmFpbHVyZV87Ci0gIH0KLSAgLy8gUmVtb3ZlIHRhaWwgZnJvbSBsaXN0Ci0g
IHByZWRpY2F0ZVN0YWNrVGFpbF8gPSBsYXN0Tm9kZTsKLSAgbGFzdE5vZGUtPm5leHRfID0gbnVs
bHB0cjsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1ib29sIFRlc3RSZXN1bHQ6OmZhaWxlZCgpIGNv
bnN0IHsgcmV0dXJuICFmYWlsdXJlc18uZW1wdHkoKTsgfQotCi12b2lkIFRlc3RSZXN1bHQ6OnBy
aW50RmFpbHVyZShib29sIHByaW50VGVzdE5hbWUpIGNvbnN0IHsKLSAgaWYgKGZhaWx1cmVzXy5l
bXB0eSgpKSB7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHByaW50VGVzdE5hbWUpIHsKLSAg
ICBwcmludGYoIiogRGV0YWlsIG9mICVzIHRlc3QgZmFpbHVyZTpcbiIsIG5hbWVfLmNfc3RyKCkp
OwotICB9Ci0KLSAgLy8gUHJpbnQgaW4gcmV2ZXJzZSB0byBkaXNwbGF5IHRoZSBjYWxsc3RhY2sg
aW4gdGhlIHJpZ2h0IG9yZGVyCi0gIGZvciAoY29uc3QgYXV0byYgZmFpbHVyZSA6IGZhaWx1cmVz
XykgewotICAgIEpzb246OlN0cmluZyBpbmRlbnQoZmFpbHVyZS5uZXN0aW5nTGV2ZWxfICogMiwg
JyAnKTsKLSAgICBpZiAoZmFpbHVyZS5maWxlXykgewotICAgICAgcHJpbnRmKCIlcyVzKCV1KTog
IiwgaW5kZW50LmNfc3RyKCksIGZhaWx1cmUuZmlsZV8sIGZhaWx1cmUubGluZV8pOwotICAgIH0K
LSAgICBpZiAoIWZhaWx1cmUuZXhwcl8uZW1wdHkoKSkgewotICAgICAgcHJpbnRmKCIlc1xuIiwg
ZmFpbHVyZS5leHByXy5jX3N0cigpKTsKLSAgICB9IGVsc2UgaWYgKGZhaWx1cmUuZmlsZV8pIHsK
LSAgICAgIHByaW50ZigiXG4iKTsKLSAgICB9Ci0gICAgaWYgKCFmYWlsdXJlLm1lc3NhZ2VfLmVt
cHR5KCkpIHsKLSAgICAgIEpzb246OlN0cmluZyByZWluZGVudGVkID0gaW5kZW50VGV4dChmYWls
dXJlLm1lc3NhZ2VfLCBpbmRlbnQgKyAiICAiKTsKLSAgICAgIHByaW50ZigiJXNcbiIsIHJlaW5k
ZW50ZWQuY19zdHIoKSk7Ci0gICAgfQotICB9Ci19Ci0KLUpzb246OlN0cmluZyBUZXN0UmVzdWx0
OjppbmRlbnRUZXh0KGNvbnN0IEpzb246OlN0cmluZyYgdGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgaW5kZW50KSB7Ci0gIEpzb246
OlN0cmluZyByZWluZGVudGVkOwotICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBsYXN0SW5kZXgg
PSAwOwotICB3aGlsZSAobGFzdEluZGV4IDwgdGV4dC5zaXplKCkpIHsKLSAgICBKc29uOjpTdHJp
bmc6OnNpemVfdHlwZSBuZXh0SW5kZXggPSB0ZXh0LmZpbmQoJ1xuJywgbGFzdEluZGV4KTsKLSAg
ICBpZiAobmV4dEluZGV4ID09IEpzb246OlN0cmluZzo6bnBvcykgewotICAgICAgbmV4dEluZGV4
ID0gdGV4dC5zaXplKCkgLSAxOwotICAgIH0KLSAgICByZWluZGVudGVkICs9IGluZGVudDsKLSAg
ICByZWluZGVudGVkICs9IHRleHQuc3Vic3RyKGxhc3RJbmRleCwgbmV4dEluZGV4IC0gbGFzdElu
ZGV4ICsgMSk7Ci0gICAgbGFzdEluZGV4ID0gbmV4dEluZGV4ICsgMTsKLSAgfQotICByZXR1cm4g
cmVpbmRlbnRlZDsKLX0KLQotVGVzdFJlc3VsdCYgVGVzdFJlc3VsdDo6YWRkVG9MYXN0RmFpbHVy
ZShjb25zdCBKc29uOjpTdHJpbmcmIG1lc3NhZ2UpIHsKLSAgaWYgKG1lc3NhZ2VUYXJnZXRfICE9
IG51bGxwdHIpIHsKLSAgICBtZXNzYWdlVGFyZ2V0Xy0+bWVzc2FnZV8gKz0gbWVzc2FnZTsKLSAg
fQotICByZXR1cm4gKnRoaXM7Ci19Ci0KLVRlc3RSZXN1bHQmIFRlc3RSZXN1bHQ6Om9wZXJhdG9y
PDwoSnNvbjo6SW50NjQgdmFsdWUpIHsKLSAgcmV0dXJuIGFkZFRvTGFzdEZhaWx1cmUoSnNvbjo6
dmFsdWVUb1N0cmluZyh2YWx1ZSkpOwotfQotCi1UZXN0UmVzdWx0JiBUZXN0UmVzdWx0OjpvcGVy
YXRvcjw8KEpzb246OlVJbnQ2NCB2YWx1ZSkgewotICByZXR1cm4gYWRkVG9MYXN0RmFpbHVyZShK
c29uOjp2YWx1ZVRvU3RyaW5nKHZhbHVlKSk7Ci19Ci0KLVRlc3RSZXN1bHQmIFRlc3RSZXN1bHQ6
Om9wZXJhdG9yPDwoYm9vbCB2YWx1ZSkgewotICByZXR1cm4gYWRkVG9MYXN0RmFpbHVyZSh2YWx1
ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotfQotCi0vLyBjbGFzcyBUZXN0Q2FzZQotLy8gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLVRlc3RDYXNlOjpUZXN0Q2FzZSgpID0gZGVmYXVsdDsKLQotVGVzdENhc2U6On5UZXN0
Q2FzZSgpID0gZGVmYXVsdDsKLQotdm9pZCBUZXN0Q2FzZTo6cnVuKFRlc3RSZXN1bHQmIHJlc3Vs
dCkgewotICByZXN1bHRfID0gJnJlc3VsdDsKLSAgcnVuVGVzdENhc2UoKTsKLX0KLQotLy8gY2xh
c3MgUnVubmVyCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotUnVubmVyOjpSdW5uZXIoKSA9IGRlZmF1bHQ7Ci0K
LVJ1bm5lciYgUnVubmVyOjphZGQoVGVzdENhc2VGYWN0b3J5IGZhY3RvcnkpIHsKLSAgdGVzdHNf
LnB1c2hfYmFjayhmYWN0b3J5KTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1zaXplX3QgUnVubmVy
Ojp0ZXN0Q291bnQoKSBjb25zdCB7IHJldHVybiB0ZXN0c18uc2l6ZSgpOyB9Ci0KLUpzb246OlN0
cmluZyBSdW5uZXI6OnRlc3ROYW1lQXQoc2l6ZV90IGluZGV4KSBjb25zdCB7Ci0gIFRlc3RDYXNl
KiB0ZXN0ID0gdGVzdHNfW2luZGV4XSgpOwotICBKc29uOjpTdHJpbmcgbmFtZSA9IHRlc3QtPnRl
c3ROYW1lKCk7Ci0gIGRlbGV0ZSB0ZXN0OwotICByZXR1cm4gbmFtZTsKLX0KLQotdm9pZCBSdW5u
ZXI6OnJ1blRlc3RBdChzaXplX3QgaW5kZXgsIFRlc3RSZXN1bHQmIHJlc3VsdCkgY29uc3Qgewot
ICBUZXN0Q2FzZSogdGVzdCA9IHRlc3RzX1tpbmRleF0oKTsKLSAgcmVzdWx0LnNldFRlc3ROYW1l
KHRlc3QtPnRlc3ROYW1lKCkpOwotICBwcmludGYoIlRlc3RpbmcgJXM6ICIsIHRlc3QtPnRlc3RO
YW1lKCkpOwotICBmZmx1c2goc3Rkb3V0KTsKLSNpZiBKU09OX1VTRV9FWENFUFRJT04KLSAgdHJ5
IHsKLSNlbmRpZiAvLyBpZiBKU09OX1VTRV9FWENFUFRJT04KLSAgICB0ZXN0LT5ydW4ocmVzdWx0
KTsKLSNpZiBKU09OX1VTRV9FWENFUFRJT04KLSAgfSBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRp
b24mIGUpIHsKLSAgICByZXN1bHQuYWRkRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sICJVbmV4
cGVjdGVkIGV4Y2VwdGlvbiBjYXVnaHQ6IikKLSAgICAgICAgPDwgZS53aGF0KCk7Ci0gIH0KLSNl
bmRpZiAvLyBpZiBKU09OX1VTRV9FWENFUFRJT04KLSAgZGVsZXRlIHRlc3Q7Ci0gIGNvbnN0IGNo
YXIqIHN0YXR1cyA9IHJlc3VsdC5mYWlsZWQoKSA/ICJGQUlMRUQiIDogIk9LIjsKLSAgcHJpbnRm
KCIlc1xuIiwgc3RhdHVzKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci19Ci0KLWJvb2wgUnVubmVyOjpy
dW5BbGxUZXN0KGJvb2wgcHJpbnRTdW1tYXJ5KSBjb25zdCB7Ci0gIHNpemVfdCBjb25zdCBjb3Vu
dCA9IHRlc3RDb3VudCgpOwotICBzdGQ6OmRlcXVlPFRlc3RSZXN1bHQ+IGZhaWx1cmVzOwotICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICBUZXN0
UmVzdWx0IHJlc3VsdDsKLSAgICBydW5UZXN0QXQoaW5kZXgsIHJlc3VsdCk7Ci0gICAgaWYgKHJl
c3VsdC5mYWlsZWQoKSkgewotICAgICAgZmFpbHVyZXMucHVzaF9iYWNrKHJlc3VsdCk7Ci0gICAg
fQotICB9Ci0KLSAgaWYgKGZhaWx1cmVzLmVtcHR5KCkpIHsKLSAgICBpZiAocHJpbnRTdW1tYXJ5
KSB7Ci0gICAgICBwcmludGYoIkFsbCAlenUgdGVzdHMgcGFzc2VkXG4iLCBjb3VudCk7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotICB9IGVsc2UgewotICAgIGZvciAoYXV0byYgcmVzdWx0IDog
ZmFpbHVyZXMpIHsKLSAgICAgIHJlc3VsdC5wcmludEZhaWx1cmUoY291bnQgPiAxKTsKLSAgICB9
Ci0KLSAgICBpZiAocHJpbnRTdW1tYXJ5KSB7Ci0gICAgICBzaXplX3QgY29uc3QgZmFpbGVkQ291
bnQgPSBmYWlsdXJlcy5zaXplKCk7Ci0gICAgICBzaXplX3QgY29uc3QgcGFzc2VkQ291bnQgPSBj
b3VudCAtIGZhaWxlZENvdW50OwotICAgICAgcHJpbnRmKCIlenUvJXp1IHRlc3RzIHBhc3NlZCAo
JXp1IGZhaWx1cmUocykpXG4iLCBwYXNzZWRDb3VudCwgY291bnQsCi0gICAgICAgICAgICAgZmFp
bGVkQ291bnQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KLQotYm9vbCBSdW5u
ZXI6OnRlc3RJbmRleChjb25zdCBKc29uOjpTdHJpbmcmIHRlc3ROYW1lLCBzaXplX3QmIGluZGV4
T3V0KSBjb25zdCB7Ci0gIGNvbnN0IHNpemVfdCBjb3VudCA9IHRlc3RDb3VudCgpOwotICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICBpZiAodGVz
dE5hbWVBdChpbmRleCkgPT0gdGVzdE5hbWUpIHsKLSAgICAgIGluZGV4T3V0ID0gaW5kZXg7Ci0g
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IFJ1bm5lcjo6bGlzdFRlc3RzKCkgY29uc3QgewotICBjb25zdCBzaXplX3QgY291bnQgPSB0ZXN0
Q291bnQoKTsKLSAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7Ci0gICAgcHJpbnRmKCIlc1xuIiwgdGVzdE5hbWVBdChpbmRleCkuY19zdHIoKSk7Ci0gIH0K
LX0KLQotaW50IFJ1bm5lcjo6cnVuQ29tbWFuZExpbmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFy
Z3ZbXSkgY29uc3QgewotICAvLyB0eXBlZGVmIHN0ZDo6ZGVxdWU8U3RyaW5nPiBUZXN0TmFtZXM7
Ci0gIFJ1bm5lciBzdWJydW5uZXI7Ci0gIGZvciAoaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmdj
OyArK2luZGV4KSB7Ci0gICAgSnNvbjo6U3RyaW5nIG9wdCA9IGFyZ3ZbaW5kZXhdOwotICAgIGlm
IChvcHQgPT0gIi0tbGlzdC10ZXN0cyIpIHsKLSAgICAgIGxpc3RUZXN0cygpOwotICAgICAgcmV0
dXJuIDA7Ci0gICAgfSBlbHNlIGlmIChvcHQgPT0gIi0tdGVzdC1hdXRvIikgewotICAgICAgcHJl
dmVudERpYWxvZ09uQ3Jhc2goKTsKLSAgICB9IGVsc2UgaWYgKG9wdCA9PSAiLS10ZXN0Iikgewot
ICAgICAgKytpbmRleDsKLSAgICAgIGlmIChpbmRleCA8IGFyZ2MpIHsKLSAgICAgICAgc2l6ZV90
IHRlc3ROYW1lSW5kZXg7Ci0gICAgICAgIGlmICh0ZXN0SW5kZXgoYXJndltpbmRleF0sIHRlc3RO
YW1lSW5kZXgpKSB7Ci0gICAgICAgICAgc3VicnVubmVyLmFkZCh0ZXN0c19bdGVzdE5hbWVJbmRl
eF0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVGVzdCAn
JXMnIGRvZXMgbm90IGV4aXN0IVxuIiwgYXJndltpbmRleF0pOwotICAgICAgICAgIHJldHVybiAy
OwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBwcmludFVzYWdlKGFyZ3ZbMF0p
OwotICAgICAgICByZXR1cm4gMjsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgcHJpbnRV
c2FnZShhcmd2WzBdKTsKLSAgICAgIHJldHVybiAyOwotICAgIH0KLSAgfQotICBib29sIHN1Y2Nl
ZWRlZDsKLSAgaWYgKHN1YnJ1bm5lci50ZXN0Q291bnQoKSA+IDApIHsKLSAgICBzdWNjZWVkZWQg
PSBzdWJydW5uZXIucnVuQWxsVGVzdChzdWJydW5uZXIudGVzdENvdW50KCkgPiAxKTsKLSAgfSBl
bHNlIHsKLSAgICBzdWNjZWVkZWQgPSBydW5BbGxUZXN0KHRydWUpOwotICB9Ci0gIHJldHVybiBz
dWNjZWVkZWQgPyAwIDogMTsKLX0KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQo
X0RFQlVHKQotLy8gSG9vayBNU1ZDUlQgYXNzZXJ0aW9ucyB0byBwcmV2ZW50IGRpYWxvZyBmcm9t
IGFwcGVhcmluZwotc3RhdGljIGludAotbXN2Y3J0U2lsZW50UmVwb3J0SG9vayhpbnQgcmVwb3J0
VHlwZSwgY2hhciogbWVzc2FnZSwgaW50KiAvKnJldHVyblZhbHVlKi8pIHsKLSAgLy8gVGhlIGRl
ZmF1bHQgQ1JUIGhhbmRsaW5nIG9mIGVycm9yIGFuZCBhc3NlcnRpb24gaXMgdG8gZGlzcGxheQot
ICAvLyBhbiBlcnJvciBkaWFsb2cgdG8gdGhlIHVzZXIuCi0gIC8vIEluc3RlYWQsIHdoZW4gYW4g
ZXJyb3Igb3IgYW4gYXNzZXJ0aW9uIG9jY3Vycywgd2UgZm9yY2UgdGhlCi0gIC8vIGFwcGxpY2F0
aW9uIHRvIHRlcm1pbmF0ZSB1c2luZyBhYm9ydCgpIGFmdGVyIGRpc3BsYXkKLSAgLy8gdGhlIG1l
c3NhZ2Ugb24gc3RkZXJyLgotICBpZiAocmVwb3J0VHlwZSA9PSBfQ1JUX0VSUk9SIHx8IHJlcG9y
dFR5cGUgPT0gX0NSVF9BU1NFUlQpIHsKLSAgICAvLyBjYWxsaW5nIGFib3J0KCkgY2F1c2UgdGhl
IFJlcG9ydEhvb2sgdG8gYmUgY2FsbGVkCi0gICAgLy8gVGhlIGZvbGxvd2luZyBpcyB1c2VkIHRv
IGRldGVjdCB0aGlzIGNhc2UgYW5kIGxldCdzIHRoZQotICAgIC8vIGVycm9yIGhhbmRsZXIgZmFs
bGJhY2sgb24gaXRzIGRlZmF1bHQgYmVoYXZpb3VyICgKLSAgICAvLyBkaXNwbGF5IGEgd2Fybmlu
ZyBtZXNzYWdlKQotICAgIHN0YXRpYyB2b2xhdGlsZSBib29sIGlzQWJvcnRpbmcgPSBmYWxzZTsK
LSAgICBpZiAoaXNBYm9ydGluZykgewotICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIGlz
QWJvcnRpbmcgPSB0cnVlOwotCi0gICAgZnByaW50ZihzdGRlcnIsICJDUlQgRXJyb3IvQXNzZXJ0
OlxuJXNcbiIsIG1lc3NhZ2UpOwotICAgIGZmbHVzaChzdGRlcnIpOwotICAgIGFib3J0KCk7Ci0g
IH0KLSAgLy8gTGV0J3Mgb3RoZXIgcmVwb3J0VHlwZSAoX0NSVF9XQVJOSU5HKSBiZSBoYW5kbGVk
IGFzIHRoZXkgd291bGQgYnkgZGVmYXVsdAotICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5kaWYgLy8g
aWYgZGVmaW5lZChfTVNDX1ZFUikKLQotdm9pZCBSdW5uZXI6OnByZXZlbnREaWFsb2dPbkNyYXNo
KCkgewotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX0RFQlVHKQotICAvLyBJbnN0
YWxsIGEgaG9vayB0byBwcmV2ZW50IE1TVkNSVCBlcnJvciBhbmQgYXNzZXJ0aW9uIGZyb20KLSAg
Ly8gcG9wcGluZyBhIGRpYWxvZwotICAvLyBUaGlzIGZ1bmN0aW9uIGEgTk8tT1AgaW4gcmVsZWFz
ZSBjb25maWd1cmF0aW9uCi0gIC8vICh3aGljaCBjYXVzZSB3YXJuaW5nIHNpbmNlIG1zdmNydFNp
bGVudFJlcG9ydEhvb2sgaXMgbm90IHJlZmVyZW5jZWQpCi0gIF9DcnRTZXRSZXBvcnRIb29rKCZt
c3ZjcnRTaWxlbnRSZXBvcnRIb29rKTsKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKF9NU0NfVkVSKQot
Ci0gIC8vIEB0b2RvIGludmVzdGlnYXRlIHRoaXMgaGFuZGxlciAoZm9yIGJ1ZmZlciBvdmVyZmxv
dykKLSAgLy8gX3NldF9zZWN1cml0eV9lcnJvcl9oYW5kbGVyCi0KLSNpZiBkZWZpbmVkKF9XSU4z
MikKLSAgLy8gUHJldmVudHMgdGhlIHN5c3RlbSBmcm9tIHBvcHBpbmcgYSBkaWFsb2cgZm9yIGRl
YnVnZ2luZyBpZiB0aGUKLSAgLy8gYXBwbGljYXRpb24gZmFpbHMgZHVlIHRvIGludmFsaWQgbWVt
b3J5IGFjY2Vzcy4KLSAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMgfCBTRU1f
Tk9HUEZBVUxURVJST1JCT1ggfAotICAgICAgICAgICAgICAgU0VNX05PT1BFTkZJTEVFUlJPUkJP
WCk7Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChfV0lOMzIpCi19Ci0KLXZvaWQgUnVubmVyOjpwcmlu
dFVzYWdlKGNvbnN0IGNoYXIqIGFwcE5hbWUpIHsKLSAgcHJpbnRmKCJVc2FnZTogJXMgW29wdGlv
bnNdXG4iCi0gICAgICAgICAiXG4iCi0gICAgICAgICAiSWYgLS10ZXN0IGlzIG5vdCBzcGVjaWZp
ZWQsIHRoZW4gYWxsIHRoZSB0ZXN0IGNhc2VzIGJlIHJ1bi5cbiIKLSAgICAgICAgICJcbiIKLSAg
ICAgICAgICJWYWxpZCBvcHRpb25zOlxuIgotICAgICAgICAgIi0tbGlzdC10ZXN0czogcHJpbnQg
dGhlIG5hbWUgb2YgYWxsIHRlc3QgY2FzZXMgb24gdGhlIHN0YW5kYXJkXG4iCi0gICAgICAgICAi
ICAgICAgICAgICAgICBvdXRwdXQgYW5kIGV4aXQuXG4iCi0gICAgICAgICAiLS10ZXN0IFRFU1RO
QU1FOiBleGVjdXRlcyB0aGUgdGVzdCBjYXNlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLlxuIgot
ICAgICAgICAgIiAgICAgICAgICAgICAgICAgTWF5IGJlIHJlcGVhdGVkLlxuIgotICAgICAgICAg
Ii0tdGVzdC1hdXRvOiBwcmV2ZW50IGRpYWxvZyBwcm9tcHRpbmcgZm9yIGRlYnVnZ2luZyBvbiBj
cmFzaC5cbiIsCi0gICAgICAgICBhcHBOYW1lKTsKLX0KLQotLy8gQXNzZXJ0aW9uIGZ1bmN0aW9u
cwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0KLUpzb246OlN0cmluZyBUb0pzb25TdHJpbmcoY29uc3QgY2hhciog
dG9Db252ZXJ0KSB7Ci0gIHJldHVybiBKc29uOjpTdHJpbmcodG9Db252ZXJ0KTsKLX0KLQotSnNv
bjo6U3RyaW5nIFRvSnNvblN0cmluZyhKc29uOjpTdHJpbmcgaW4pIHsgcmV0dXJuIGluOyB9Ci0K
LSNpZiBKU09OQ1BQX1VTSU5HX1NFQ1VSRV9NRU1PUlkKLUpzb246OlN0cmluZyBUb0pzb25TdHJp
bmcoc3RkOjpzdHJpbmcgaW4pIHsKLSAgcmV0dXJuIEpzb246OlN0cmluZyhpbi5kYXRhKCksIGlu
LmRhdGEoKSArIGluLmxlbmd0aCgpKTsKLX0KLSNlbmRpZgotCi1UZXN0UmVzdWx0JiBjaGVja1N0
cmluZ0VxdWFsKFRlc3RSZXN1bHQmIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSnNvbjo6U3RyaW5nJiBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSnNvbjo6U3RyaW5nJiBhY3R1YWwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBleHByKSB7Ci0gIGlmIChleHBlY3RlZCAhPSBhY3R1YWwpIHsKLSAgICByZXN1bHQuYWRkRmFp
bHVyZShmaWxlLCBsaW5lLCBleHByKTsKLSAgICByZXN1bHQgPDwgIkV4cGVjdGVkOiAnIiA8PCBl
eHBlY3RlZCA8PCAiJ1xuIjsKLSAgICByZXN1bHQgPDwgIkFjdHVhbCAgOiAnIiA8PCBhY3R1YWwg
PDwgIiciOwotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb25U
ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29uL2pzb250ZXN0LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3NyYy90ZXN0X2xpYl9qc29uL2pzb250ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU5YzExYTQ3MDdkMjc3YzI5OWFkYzk1ZDFhNjM1MDUxNjFjNzEzZjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNv
bi9qc29udGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjc2ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0v
LyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNp
cmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxl
IExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdl
Lm5ldC9MSUNFTlNFCi0KLSNpZm5kZWYgSlNPTlRFU1RfSF9JTkNMVURFRAotI2RlZmluZSBKU09O
VEVTVF9IX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8ZGVxdWU+Ci0j
aW5jbHVkZSA8anNvbi9jb25maWcuaD4KLSNpbmNsdWRlIDxqc29uL3ZhbHVlLmg+Ci0jaW5jbHVk
ZSA8anNvbi93cml0ZXIuaD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4K
LQotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIE1pbmkgVW5pdCBUZXN0aW5nIGZyYW1l
d29yawotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLyoqIFxicmllZiBVbml0IHRlc3Rp
bmcgZnJhbWV3b3JrLgotICogXHdhcm5pbmc6IGFsbCBhc3NlcnRpb25zIGFyZSBub24tYWJvcnRp
bmcsIHRlc3QgY2FzZSBleGVjdXRpb24gd2lsbCBjb250aW51ZQotICogICAgICAgICAgIGV2ZW4g
aWYgYW4gYXNzZXJ0aW9uIG5hbWVzcGFjZS4KLSAqICAgICAgICAgICBUaGlzIGNvbnN0cmFpbnQg
aXMgZm9yIHBvcnRhYmlsaXR5OiB0aGUgZnJhbWV3b3JrIG5lZWRzIHRvIGNvbXBpbGUKLSAqICAg
ICAgICAgICBvbiBWaXN1YWwgU3R1ZGlvIDYgYW5kIG11c3Qgbm90IHJlcXVpcmUgZXhjZXB0aW9u
IHVzYWdlLgotICovCi1uYW1lc3BhY2UgSnNvblRlc3QgewotCi1jbGFzcyBGYWlsdXJlIHsKLXB1
YmxpYzoKLSAgY29uc3QgY2hhciogZmlsZV87Ci0gIHVuc2lnbmVkIGludCBsaW5lXzsKLSAgSnNv
bjo6U3RyaW5nIGV4cHJfOwotICBKc29uOjpTdHJpbmcgbWVzc2FnZV87Ci0gIHVuc2lnbmVkIGlu
dCBuZXN0aW5nTGV2ZWxfOwotfTsKLQotLy8vIENvbnRleHQgdXNlZCB0byBjcmVhdGUgdGhlIGFz
c2VydGlvbiBjYWxsc3RhY2sgb24gZmFpbHVyZS4KLS8vLyBNdXN0IGJlIGEgUE9EIHRvIGFsbG93
IGlubGluZSBpbml0aWFsaXNhdGlvbiB3aXRob3V0IHN0ZXBwaW5nCi0vLy8gaW50byB0aGUgZGVi
dWdnZXIuCi1zdHJ1Y3QgUHJlZGljYXRlQ29udGV4dCB7Ci0gIHR5cGVkZWYgdW5zaWduZWQgaW50
IElkOwotICBJZCBpZF87Ci0gIGNvbnN0IGNoYXIqIGZpbGVfOwotICB1bnNpZ25lZCBpbnQgbGlu
ZV87Ci0gIGNvbnN0IGNoYXIqIGV4cHJfOwotICBQcmVkaWNhdGVDb250ZXh0KiBuZXh0XzsKLSAg
Ly8vIFJlbGF0ZWQgRmFpbHVyZSwgc2V0IHdoZW4gdGhlIFByZWRpY2F0ZUNvbnRleHQgaXMgY29u
dmVydGVkCi0gIC8vLyBpbnRvIGEgRmFpbHVyZS4KLSAgRmFpbHVyZSogZmFpbHVyZV87Ci19Owot
Ci1jbGFzcyBUZXN0UmVzdWx0IHsKLXB1YmxpYzoKLSAgVGVzdFJlc3VsdCgpOwotCi0gIC8vLyBc
aW50ZXJuYWwgSW1wbGVtZW50YXRpb24gZGV0YWlsIGZvciBhc3NlcnRpb24gbWFjcm9zCi0gIC8v
LyBOb3QgZW5jYXBzdWxhdGVkIHRvIHByZXZlbnQgc3RlcCBpbnRvIHdoZW4gZGVidWdnaW5nIGZh
aWxlZCBhc3NlcnRpb25zCi0gIC8vLyBJbmNyZW1lbnRlZCBieSBvbmUgb24gYXNzZXJ0aW9uIHBy
ZWRpY2F0ZSBlbnRyeSwgZGVjcmVhc2VkIGJ5IG9uZQotICAvLy8gYnkgYWRkUHJlZGljYXRlQ29u
dGV4dCgpLgotICBQcmVkaWNhdGVDb250ZXh0OjpJZCBwcmVkaWNhdGVJZF97MX07Ci0KLSAgLy8v
IFxpbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiBkZXRhaWwgZm9yIHByZWRpY2F0ZSBtYWNyb3MKLSAg
UHJlZGljYXRlQ29udGV4dCogcHJlZGljYXRlU3RhY2tUYWlsXzsKLQotICB2b2lkIHNldFRlc3RO
YW1lKGNvbnN0IEpzb246OlN0cmluZyYgbmFtZSk7Ci0KLSAgLy8vIEFkZHMgYW4gYXNzZXJ0aW9u
IGZhaWx1cmUuCi0gIFRlc3RSZXN1bHQmCi0gIGFkZEZhaWx1cmUoY29uc3QgY2hhciogZmlsZSwg
dW5zaWduZWQgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGV4cHIgPSBudWxscHRyKTsKLQotICAvLy8g
UmVtb3ZlcyB0aGUgbGFzdCBQcmVkaWNhdGVDb250ZXh0IGFkZGVkIHRvIHRoZSBwcmVkaWNhdGUg
c3RhY2sKLSAgLy8vIGNoYWluZWQgbGlzdC4KLSAgLy8vIE5leHQgbWVzc2FnZXMgd2lsbCBiZSB0
YXJnZWQgYXQgdGhlIFByZWRpY2F0ZUNvbnRleHQgdGhhdCB3YXMgcmVtb3ZlZC4KLSAgVGVzdFJl
c3VsdCYgcG9wUHJlZGljYXRlQ29udGV4dCgpOwotCi0gIGJvb2wgZmFpbGVkKCkgY29uc3Q7Ci0K
LSAgdm9pZCBwcmludEZhaWx1cmUoYm9vbCBwcmludFRlc3ROYW1lKSBjb25zdDsKLQotICAvLyBH
ZW5lcmljIG9wZXJhdG9yIHRoYXQgd2lsbCB3b3JrIHdpdGggYW55dGhpbmcgb3N0cmVhbSBjYW4g
ZGVhbCB3aXRoLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVGVzdFJlc3VsdCYgb3BlcmF0b3I8
PChjb25zdCBUJiB2YWx1ZSkgewotICAgIEpzb246Ok9TdHJpbmdTdHJlYW0gb3NzOwotICAgIG9z
cy5wcmVjaXNpb24oMTYpOwotICAgIG9zcy5zZXRmKHN0ZDo6aW9zX2Jhc2U6OmZsb2F0ZmllbGQp
OwotICAgIG9zcyA8PCB2YWx1ZTsKLSAgICByZXR1cm4gYWRkVG9MYXN0RmFpbHVyZShvc3Muc3Ry
KCkpOwotICB9Ci0KLSAgLy8gU3BlY2lhbGl6ZWQgdmVyc2lvbnMuCi0gIFRlc3RSZXN1bHQmIG9w
ZXJhdG9yPDwoYm9vbCB2YWx1ZSk7Ci0gIC8vIHN0ZDpvc3RyZWFtIGRvZXMgbm90IHN1cHBvcnQg
NjRiaXRzIGludGVnZXJzIG9uIGFsbCBTVEwgaW1wbGVtZW50YXRpb24KLSAgVGVzdFJlc3VsdCYg
b3BlcmF0b3I8PChKc29uOjpJbnQ2NCB2YWx1ZSk7Ci0gIFRlc3RSZXN1bHQmIG9wZXJhdG9yPDwo
SnNvbjo6VUludDY0IHZhbHVlKTsKLQotcHJpdmF0ZToKLSAgVGVzdFJlc3VsdCYgYWRkVG9MYXN0
RmFpbHVyZShjb25zdCBKc29uOjpTdHJpbmcmIG1lc3NhZ2UpOwotICAvLy8gQWRkcyBhIGZhaWx1
cmUgb3IgYSBwcmVkaWNhdGUgY29udGV4dAotICB2b2lkIGFkZEZhaWx1cmVJbmZvKGNvbnN0IGNo
YXIqIGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhwciwKLSAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbmVzdGluZ0xldmVsKTsKLSAgc3RhdGljIEpzb246OlN0cmluZyBpbmRl
bnRUZXh0KGNvbnN0IEpzb246OlN0cmluZyYgdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgaW5kZW50KTsKLQotICB0eXBlZGVmIHN0ZDo6
ZGVxdWU8RmFpbHVyZT4gRmFpbHVyZXM7Ci0gIEZhaWx1cmVzIGZhaWx1cmVzXzsKLSAgSnNvbjo6
U3RyaW5nIG5hbWVfOwotICBQcmVkaWNhdGVDb250ZXh0IHJvb3RQcmVkaWNhdGVOb2RlXzsKLSAg
UHJlZGljYXRlQ29udGV4dDo6SWQgbGFzdFVzZWRQcmVkaWNhdGVJZF97MH07Ci0gIC8vLyBGYWls
dXJlIHdoaWNoIGlzIHRoZSB0YXJnZXQgb2YgdGhlIG1lc3NhZ2VzIGFkZGVkIHVzaW5nIG9wZXJh
dG9yIDw8Ci0gIEZhaWx1cmUqIG1lc3NhZ2VUYXJnZXRfe251bGxwdHJ9OwotfTsKLQotY2xhc3Mg
VGVzdENhc2UgewotcHVibGljOgotICBUZXN0Q2FzZSgpOwotCi0gIHZpcnR1YWwgflRlc3RDYXNl
KCk7Ci0KLSAgdm9pZCBydW4oVGVzdFJlc3VsdCYgcmVzdWx0KTsKLQotICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHRlc3ROYW1lKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gIFRlc3RSZXN1bHQq
IHJlc3VsdF97bnVsbHB0cn07Ci0KLXByaXZhdGU6Ci0gIHZpcnR1YWwgdm9pZCBydW5UZXN0Q2Fz
ZSgpID0gMDsKLX07Ci0KLS8vLyBGdW5jdGlvbiBwb2ludGVyIHR5cGUgZm9yIFRlc3RDYXNlIGZh
Y3RvcnkKLXR5cGVkZWYgVGVzdENhc2UqICgqVGVzdENhc2VGYWN0b3J5KSgpOwotCi1jbGFzcyBS
dW5uZXIgewotcHVibGljOgotICBSdW5uZXIoKTsKLQotICAvLy8gQWRkcyBhIHRlc3QgdG8gdGhl
IHN1aXRlCi0gIFJ1bm5lciYgYWRkKFRlc3RDYXNlRmFjdG9yeSBmYWN0b3J5KTsKLQotICAvLy8g
UnVucyB0ZXN0IGFzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC1saW5lCi0gIC8vLyBJZiBubyBj
b21tYW5kLWxpbmUgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgcnVuIGFsbCB0ZXN0cy4KLSAgLy8v
IElmIC0tbGlzdC10ZXN0cyBpcyBwcm92aWRlZCwgdGhlbiBwcmludCB0aGUgbGlzdCBvZiBhbGwg
dGVzdCBjYXNlcwotICAvLy8gSWYgLS10ZXN0IDx0ZXN0bmFtZT4gaXMgcHJvdmlkZWQsIHRoZW4g
cnVuIHRlc3QgdGVzdG5hbWUuCi0gIGludCBydW5Db21tYW5kTGluZShpbnQgYXJnYywgY29uc3Qg
Y2hhciogYXJndltdKSBjb25zdDsKLQotICAvLy8gUnVucyBhbGwgdGhlIHRlc3QgY2FzZXMKLSAg
Ym9vbCBydW5BbGxUZXN0KGJvb2wgcHJpbnRTdW1tYXJ5KSBjb25zdDsKLQotICAvLy8gUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIHRlc3QgY2FzZSBpbiB0aGUgc3VpdGUKLSAgc2l6ZV90IHRlc3RDb3Vu
dCgpIGNvbnN0OwotCi0gIC8vLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UgYXQg
dGhlIHNwZWNpZmllZCBpbmRleAotICBKc29uOjpTdHJpbmcgdGVzdE5hbWVBdChzaXplX3QgaW5k
ZXgpIGNvbnN0OwotCi0gIC8vLyBSdW5zIHRoZSB0ZXN0IGNhc2UgYXQgdGhlIHNwZWNpZmllZCBp
bmRleCB1c2luZyB0aGUgc3BlY2lmaWVkIFRlc3RSZXN1bHQKLSAgdm9pZCBydW5UZXN0QXQoc2l6
ZV90IGluZGV4LCBUZXN0UmVzdWx0JiByZXN1bHQpIGNvbnN0OwotCi0gIHN0YXRpYyB2b2lkIHBy
aW50VXNhZ2UoY29uc3QgY2hhciogYXBwTmFtZSk7Ci0KLXByaXZhdGU6IC8vIHByZXZlbnRzIGNv
cHkgY29uc3RydWN0aW9uIGFuZCBhc3NpZ25tZW50Ci0gIFJ1bm5lcihjb25zdCBSdW5uZXImIG90
aGVyKSA9IGRlbGV0ZTsKLSAgUnVubmVyJiBvcGVyYXRvcj0oY29uc3QgUnVubmVyJiBvdGhlcikg
PSBkZWxldGU7Ci0KLXByaXZhdGU6Ci0gIHZvaWQgbGlzdFRlc3RzKCkgY29uc3Q7Ci0gIGJvb2wg
dGVzdEluZGV4KGNvbnN0IEpzb246OlN0cmluZyYgdGVzdE5hbWUsIHNpemVfdCYgaW5kZXhPdXQp
IGNvbnN0OwotICBzdGF0aWMgdm9pZCBwcmV2ZW50RGlhbG9nT25DcmFzaCgpOwotCi1wcml2YXRl
OgotICB0eXBlZGVmIHN0ZDo6ZGVxdWU8VGVzdENhc2VGYWN0b3J5PiBGYWN0b3JpZXM7Ci0gIEZh
Y3RvcmllcyB0ZXN0c187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LVRlc3RSZXN1bHQmIGNoZWNrRXF1YWwoVGVzdFJlc3VsdCYgcmVzdWx0LAotICAgICAgICAgICAg
ICAgICAgICAgICBUIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICBVIGFjdHVhbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGV4cHIpIHsKLSAgaWYgKHN0YXRpY19jYXN0PFU+KGV4cGVjdGVkKSAhPSBhY3R1YWwp
IHsKLSAgICByZXN1bHQuYWRkRmFpbHVyZShmaWxlLCBsaW5lLCBleHByKTsKLSAgICByZXN1bHQg
PDwgIkV4cGVjdGVkOiAiIDw8IHN0YXRpY19jYXN0PFU+KGV4cGVjdGVkKSA8PCAiXG4iOwotICAg
IHJlc3VsdCA8PCAiQWN0dWFsICA6ICIgPDwgYWN0dWFsOwotICB9Ci0gIHJldHVybiByZXN1bHQ7
Ci19Ci0KLUpzb246OlN0cmluZyBUb0pzb25TdHJpbmcoY29uc3QgY2hhciogdG9Db252ZXJ0KTsK
LUpzb246OlN0cmluZyBUb0pzb25TdHJpbmcoSnNvbjo6U3RyaW5nIGluKTsKLSNpZiBKU09OQ1BQ
X1VTSU5HX1NFQ1VSRV9NRU1PUlkKLUpzb246OlN0cmluZyBUb0pzb25TdHJpbmcoc3RkOjpzdHJp
bmcgaW4pOwotI2VuZGlmCi0KLVRlc3RSZXN1bHQmIGNoZWNrU3RyaW5nRXF1YWwoVGVzdFJlc3Vs
dCYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKc29uOjpTdHJp
bmcmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKc29uOjpT
dHJpbmcmIGFjdHVhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4cHIpOwotCi19IC8vIG5h
bWVzcGFjZSBKc29uVGVzdAotCi0vLy8gXGJyaWVmIEFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gZXhw
cmVzc2lvbiBpcyB0cnVlLgotLy8vIEpTT05URVNUX0FTU0VSVCggeCA9PSB5ICkgPDwgIng9IiA8
PCB4IDw8ICIsIHk9IiA8PCB5OwotLy8vIEpTT05URVNUX0FTU0VSVCggeCA9PSB5ICk7Ci0jZGVm
aW5lIEpTT05URVNUX0FTU0VSVChleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICBpZiAoZXhwcikgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSBlbHNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgcmVzdWx0Xy0+YWRkRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18s
ICNleHByKQotCi0vLy8gXGJyaWVmIEFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gcHJlZGljYXRlIGlz
IHRydWUuCi0vLy8gVGhlIHByZWRpY2F0ZSBtYXkgZG8gb3RoZXIgYXNzZXJ0aW9ucyBhbmQgYmUg
YSBtZW1iZXIgZnVuY3Rpb24gb2YgdGhlCi0vLy8gZml4dHVyZS4KLSNkZWZpbmUgSlNPTlRFU1Rf
QVNTRVJUX1BSRUQoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEpzb25UZXN0OjpQcmVkaWNhdGVD
b250ZXh0IF9taW5pdGVzdF9Db250ZXh0ID0geyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgcmVzdWx0Xy0+cHJlZGljYXRlSWRfLCBfX0ZJTEVfXywgX19MSU5FX18sICNleHBy
LCBOVUxMLCBOVUxMfTsgICAgICAgICBcCi0gICAgcmVzdWx0Xy0+cHJlZGljYXRlU3RhY2tUYWls
Xy0+bmV4dF8gPSAmX21pbml0ZXN0X0NvbnRleHQ7ICAgICAgICAgICAgICAgICAgXAotICAgIHJl
c3VsdF8tPnByZWRpY2F0ZUlkXyArPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICByZXN1bHRfLT5wcmVkaWNhdGVTdGFja1RhaWxfID0gJl9t
aW5pdGVzdF9Db250ZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKGV4cHIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIHJlc3VsdF8tPnBvcFByZWRpY2F0ZUNvbnRleHQoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0vLy8gXGJyaWVmIEFz
c2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbHMuCi0jZGVmaW5lIEpTT05URVNUX0FTU0VS
VF9FUVVBTChleHBlY3RlZCwgYWN0dWFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICBKc29uVGVzdDo6Y2hlY2tFcXVhbCgqcmVzdWx0XywgZXhwZWN0ZWQsIGFjdHVhbCwgX19G
SUxFX18sIF9fTElORV9fLCAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgI2V4cGVj
dGVkICIgPT0gIiAjYWN0dWFsKQotCi0vLy8gXGJyaWVmIEFzc2VydHMgdGhhdCB0d28gdmFsdWVz
IGFyZSBlcXVhbHMuCi0jZGVmaW5lIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0
ZWQsIGFjdHVhbCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBKc29uVGVzdDo6Y2hlY2tT
dHJpbmdFcXVhbCgqcmVzdWx0XywgSnNvblRlc3Q6OlRvSnNvblN0cmluZyhleHBlY3RlZCksICAg
ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnNvblRlc3Q6OlRvSnNvblN0cmlu
ZyhhY3R1YWwpLCBfX0ZJTEVfXywgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fTElORV9fLCAjZXhwZWN0ZWQgIiA9PSAiICNhY3R1YWwpCi0KLS8vLyBcYnJpZWYgQXNz
ZXJ0cyB0aGF0IGEgZ2l2ZW4gZXhwcmVzc2lvbiB0aHJvd3MgYW4gZXhjZXB0aW9uCi0jZGVmaW5l
IEpTT05URVNUX0FTU0VSVF9USFJPV1MoZXhwcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBib29sIF90aHJl
dyA9IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgZXhwcjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB9IGNhdGNoICguLi4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBfdGhyZXcgPSB0cnVlOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIV90aHJldykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXN1
bHRfLT5hZGRGYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVfXywgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZXhjZXB0
aW9uIHRocm93bjogIiAjZXhwcik7ICAgICAgICAgICAgICAgIFwKLSAgfQotCi0vLy8gXGJyaWVm
IEJlZ2luIGEgZml4dHVyZSB0ZXN0IGNhc2UuCi0jZGVmaW5lIEpTT05URVNUX0ZJWFRVUkUoRml4
dHVyZVR5cGUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBj
bGFzcyBUZXN0IyNGaXh0dXJlVHlwZSMjbmFtZSA6IHB1YmxpYyBGaXh0dXJlVHlwZSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGlj
IEpzb25UZXN0OjpUZXN0Q2FzZSogZmFjdG9yeSgpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgcmV0dXJuIG5ldyBUZXN0IyNGaXh0dXJlVHlwZSMjbmFtZSgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBwdWJsaWM6IC8qIG92ZXJyaWRkZW4g
ZnJvbSBUZXN0Q2FzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBjb25zdCBjaGFyKiB0ZXN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICNGaXh0
dXJlVHlwZSAiLyIgI25hbWU7IH0gICBcCi0gICAgdm9pZCBydW5UZXN0Q2FzZSgpIG92ZXJyaWRl
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHZvaWQgVGVzdCMj
Rml4dHVyZVR5cGUjI25hbWU6OnJ1blRlc3RDYXNlKCkKLQotI2RlZmluZSBKU09OVEVTVF9GSVhU
VVJFX0ZBQ1RPUlkoRml4dHVyZVR5cGUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgJlRlc3QjI0ZpeHR1cmVUeXBlIyNuYW1lOjpmYWN0b3J5Ci0KLSNkZWZpbmUgSlNPTlRF
U1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIEZpeHR1cmVUeXBlLCBuYW1lKSAgICAgICAgICAg
ICAgICAgICBcCi0gIChydW5uZXIpLmFkZChKU09OVEVTVF9GSVhUVVJFX0ZBQ1RPUlkoRml4dHVy
ZVR5cGUsIG5hbWUpKQotCi0jZW5kaWYgLy8gaWZuZGVmIEpTT05URVNUX0hfSU5DTFVERUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vbWFpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0
X2xpYl9qc29uL21haW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2RhNjBl
ODFjNDY4ODVlMDdmZjQ4Nzc1MTM1Y2VhNDI2YjIwOWQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vbWFpbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNjU3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAg
QmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRl
ZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8g
cmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9y
IGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNF
Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0j
cHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
Ci0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2
KQotI2VuZGlmCi0KLSNpbmNsdWRlICJmdXp6LmgiCi0jaW5jbHVkZSAianNvbnRlc3QuaCIKLSNp
bmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGlvbWFuaXA+Ci0j
aW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8anNvbi9jb25maWcuaD4KLSNpbmNsdWRlIDxq
c29uL2pzb24uaD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0KLS8vIE1ha2UgbnVtZXJpYyBsaW1pdHMgbW9yZSBjb252ZW5pZW50IHRv
IHRhbGsgYWJvdXQuCi0vLyBBc3N1bWVzIGludCB0eXBlIGluIDMyIGJpdHMuCi0jZGVmaW5lIGtp
bnQzMm1heCBKc29uOjpWYWx1ZTo6bWF4SW50Ci0jZGVmaW5lIGtpbnQzMm1pbiBKc29uOjpWYWx1
ZTo6bWluSW50Ci0jZGVmaW5lIGt1aW50MzJtYXggSnNvbjo6VmFsdWU6Om1heFVJbnQKLSNkZWZp
bmUga2ludDY0bWF4IEpzb246OlZhbHVlOjptYXhJbnQ2NAotI2RlZmluZSBraW50NjRtaW4gSnNv
bjo6VmFsdWU6Om1pbkludDY0Ci0jZGVmaW5lIGt1aW50NjRtYXggSnNvbjo6VmFsdWU6Om1heFVJ
bnQ2NAotCi0vLyBzdGF0aWMgY29uc3QgZG91YmxlIGtkaW50NjRtYXggPSBkb3VibGUoa2ludDY0
bWF4KTsKLS8vIHN0YXRpYyBjb25zdCBmbG9hdCBrZmludDY0bWF4ID0gZmxvYXQoa2ludDY0bWF4
KTsKLXN0YXRpYyBjb25zdCBmbG9hdCBrZmludDMybWF4ID0gZmxvYXQoa2ludDMybWF4KTsKLXN0
YXRpYyBjb25zdCBmbG9hdCBrZnVpbnQzMm1heCA9IGZsb2F0KGt1aW50MzJtYXgpOwotCi0vLyAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSnNvbiBMaWJyYXJ5IHRlc3QgY2FzZXMKLS8vIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VC
TEVfQ09OVkVSU0lPTikKLXN0YXRpYyBpbmxpbmUgZG91YmxlIHVpbnQ2NFRvRG91YmxlKEpzb246
OlVJbnQ2NCB2YWx1ZSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci19
Ci0jZWxzZSAgLy8gaWYgIWRlZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04p
Ci1zdGF0aWMgaW5saW5lIGRvdWJsZSB1aW50NjRUb0RvdWJsZShKc29uOjpVSW50NjQgdmFsdWUp
IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oSnNvbjo6SW50NjQodmFsdWUgLyAyKSkg
KiAyLjAgKwotICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihKc29uOjpJbnQ2NCh2YWx1ZSAm
IDEpKTsKLX0KLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VCTEVfQ09O
VkVSU0lPTikKLQotc3RydWN0IFZhbHVlVGVzdCA6IEpzb25UZXN0OjpUZXN0Q2FzZSB7Ci0gIEpz
b246OlZhbHVlIG51bGxfOwotICBKc29uOjpWYWx1ZSBlbXB0eUFycmF5XzsKLSAgSnNvbjo6VmFs
dWUgZW1wdHlPYmplY3RfOwotICBKc29uOjpWYWx1ZSBpbnRlZ2VyXzsKLSAgSnNvbjo6VmFsdWUg
dW5zaWduZWRJbnRlZ2VyXzsKLSAgSnNvbjo6VmFsdWUgc21hbGxVbnNpZ25lZEludGVnZXJfOwot
ICBKc29uOjpWYWx1ZSByZWFsXzsKLSAgSnNvbjo6VmFsdWUgZmxvYXRfOwotICBKc29uOjpWYWx1
ZSBhcnJheTFfOwotICBKc29uOjpWYWx1ZSBvYmplY3QxXzsKLSAgSnNvbjo6VmFsdWUgZW1wdHlT
dHJpbmdfOwotICBKc29uOjpWYWx1ZSBzdHJpbmcxXzsKLSAgSnNvbjo6VmFsdWUgc3RyaW5nXzsK
LSAgSnNvbjo6VmFsdWUgdHJ1ZV87Ci0gIEpzb246OlZhbHVlIGZhbHNlXzsKLQotICBWYWx1ZVRl
c3QoKQotICAgICAgOiBlbXB0eUFycmF5XyhKc29uOjphcnJheVZhbHVlKSwgZW1wdHlPYmplY3Rf
KEpzb246Om9iamVjdFZhbHVlKSwKLSAgICAgICAgaW50ZWdlcl8oMTIzNDU2Nzg5KSwgdW5zaWdu
ZWRJbnRlZ2VyXygzNDU2Nzg5MHUpLAotICAgICAgICBzbWFsbFVuc2lnbmVkSW50ZWdlcl8oSnNv
bjo6VmFsdWU6OlVJbnQoSnNvbjo6VmFsdWU6Om1heEludCkpLAotICAgICAgICByZWFsXygxMjM0
LjU2Nzg5KSwgZmxvYXRfKDAuMDAzOTA2MjVmKSwgZW1wdHlTdHJpbmdfKCIiKSwgc3RyaW5nMV8o
ImEiKSwKLSAgICAgICAgc3RyaW5nXygic29tZXRleHQgd2l0aCBzcGFjZSIpLCB0cnVlXyh0cnVl
KSwgZmFsc2VfKGZhbHNlKSB7Ci0gICAgYXJyYXkxXy5hcHBlbmQoMTIzNCk7Ci0gICAgb2JqZWN0
MV9bImlkIl0gPSAxMjM0OwotICB9Ci0KLSAgc3RydWN0IElzQ2hlY2sgewotICAgIC8vLyBJbml0
aWFsaXplIGFsbCBjaGVja3MgdG8gXGMgZmFsc2UgYnkgZGVmYXVsdC4KLSAgICBJc0NoZWNrKCk7
Ci0KLSAgICBib29sIGlzT2JqZWN0X3tmYWxzZX07Ci0gICAgYm9vbCBpc0FycmF5X3tmYWxzZX07
Ci0gICAgYm9vbCBpc0Jvb2xfe2ZhbHNlfTsKLSAgICBib29sIGlzU3RyaW5nX3tmYWxzZX07Ci0g
ICAgYm9vbCBpc051bGxfe2ZhbHNlfTsKLQotICAgIGJvb2wgaXNJbnRfe2ZhbHNlfTsKLSAgICBi
b29sIGlzSW50NjRfe2ZhbHNlfTsKLSAgICBib29sIGlzVUludF97ZmFsc2V9OwotICAgIGJvb2wg
aXNVSW50NjRfe2ZhbHNlfTsKLSAgICBib29sIGlzSW50ZWdyYWxfe2ZhbHNlfTsKLSAgICBib29s
IGlzRG91YmxlX3tmYWxzZX07Ci0gICAgYm9vbCBpc051bWVyaWNfe2ZhbHNlfTsKLSAgfTsKLQot
ICB2b2lkIGNoZWNrQ29uc3RNZW1iZXJDb3VudChjb25zdCBKc29uOjpWYWx1ZSYgdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleHBlY3RlZENvdW50KTsK
LQotICB2b2lkIGNoZWNrTWVtYmVyQ291bnQoSnNvbjo6VmFsdWUmIHZhbHVlLCB1bnNpZ25lZCBp
bnQgZXhwZWN0ZWRDb3VudCk7Ci0KLSAgdm9pZCBjaGVja0lzKGNvbnN0IEpzb246OlZhbHVlJiB2
YWx1ZSwgY29uc3QgSXNDaGVjayYgY2hlY2spOwotCi0gIHZvaWQgY2hlY2tJc0xlc3MoY29uc3Qg
SnNvbjo6VmFsdWUmIHgsIGNvbnN0IEpzb246OlZhbHVlJiB5KTsKLQotICB2b2lkIGNoZWNrSXNF
cXVhbChjb25zdCBKc29uOjpWYWx1ZSYgeCwgY29uc3QgSnNvbjo6VmFsdWUmIHkpOwotCi0gIC8v
LyBOb3JtYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0aW5nLXBvaW50IG51bWJlciBi
eSBzdHJpcHBlZCBsZWFkaW5nCi0gIC8vLyAwIGluIGV4cG9uZW50LgotICBzdGF0aWMgSnNvbjo6
U3RyaW5nIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoY29uc3QgSnNvbjo6U3RyaW5nJiBzKTsK
LX07Ci0KLUpzb246OlN0cmluZyBWYWx1ZVRlc3Q6Om5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIo
Y29uc3QgSnNvbjo6U3RyaW5nJiBzKSB7Ci0gIEpzb246OlN0cmluZzo6c2l6ZV90eXBlIGluZGV4
ID0gcy5maW5kX2xhc3Rfb2YoImVFIik7Ci0gIGlmIChpbmRleCAhPSBKc29uOjpTdHJpbmc6Om5w
b3MpIHsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBoYXNTaWduID0KLSAgICAgICAgKHNb
aW5kZXggKyAxXSA9PSAnKycgfHwgc1tpbmRleCArIDFdID09ICctJykgPyAxIDogMDsKLSAgICBK
c29uOjpTdHJpbmc6OnNpemVfdHlwZSBleHBvbmVudFN0YXJ0SW5kZXggPSBpbmRleCArIDEgKyBo
YXNTaWduOwotICAgIEpzb246OlN0cmluZyBub3JtYWxpemVkID0gcy5zdWJzdHIoMCwgZXhwb25l
bnRTdGFydEluZGV4KTsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBpbmRleERpZ2l0ID0K
LSAgICAgICAgcy5maW5kX2ZpcnN0X25vdF9vZignMCcsIGV4cG9uZW50U3RhcnRJbmRleCk7Ci0g
ICAgSnNvbjo6U3RyaW5nIGV4cG9uZW50ID0gIjAiOwotICAgIGlmIChpbmRleERpZ2l0ICE9IEpz
b246OlN0cmluZzo6bnBvcykgLy8gVGhlcmUgaXMgYW4gZXhwb25lbnQgZGlmZmVyZW50Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIDAKLSAgICB7Ci0g
ICAgICBleHBvbmVudCA9IHMuc3Vic3RyKGluZGV4RGlnaXQpOwotICAgIH0KLSAgICByZXR1cm4g
bm9ybWFsaXplZCArIGV4cG9uZW50OwotICB9Ci0gIHJldHVybiBzOwotfQotCi1KU09OVEVTVF9G
SVhUVVJFKFZhbHVlVGVzdCwgY2hlY2tOb3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKSB7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAuMCIsIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRT
dHIoIjAuMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMGUwIiwgbm9ybWFs
aXplRmxvYXRpbmdQb2ludFN0cigiMGUwIikpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VR
VUFMKCIxMjM0LjAiLCBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0LjAiKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzQuMGUwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0LjBlMCIpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMTIzNC4wZSswIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0LjBlKzAiKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlLTEiLCBub3JtYWxpemVGbG9h
dGluZ1BvaW50U3RyKCIxMjM0ZS0xIikpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KCIxMjM0ZTEwIiwgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIzNGUxMCIpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMTIzNGUxMCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIzNGUwMTAiKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlKzEwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0ZSswMTAiKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlLTEwIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0ZS0wMTAiKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlKzEwMCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIzNGUrMTAw
IikpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIxMjM0ZS0xMDAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoIjEyMzRl
LTEwMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMTIzNGUrMSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIz
NGUrMDAxIikpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgbWVtYmVyQ291bnQp
IHsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3VudChlbXB0eUFycmF5Xywg
MCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJlckNvdW50KGVtcHR5T2JqZWN0
XywgMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJlckNvdW50KGFycmF5MV8s
IDEpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3VudChvYmplY3QxXywg
MSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJlckNvdW50KG51bGxfLCAwKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVyQ291bnQoaW50ZWdlcl8sIDApKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3VudCh1bnNpZ25lZEludGVnZXJf
LCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVyQ291bnQoc21hbGxVbnNp
Z25lZEludGVnZXJfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVyQ291
bnQocmVhbF8sIDApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3VudChl
bXB0eVN0cmluZ18sIDApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3Vu
dChzdHJpbmdfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVyQ291bnQo
dHJ1ZV8sIDApKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIG9iamVjdHMpIHsK
LSAgLy8gVHlwZXMKLSAgSXNDaGVjayBjaGVja3M7Ci0gIGNoZWNrcy5pc09iamVjdF8gPSB0cnVl
OwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKGVtcHR5T2JqZWN0XywgY2hlY2tzKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXMob2JqZWN0MV8sIGNoZWNrcykpOwotCi0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpvYmplY3RWYWx1ZSwgZW1wdHlPYmplY3RfLnR5
cGUoKSk7Ci0KLSAgLy8gRW1wdHkgb2JqZWN0IG9rYXkKLSAgSlNPTlRFU1RfQVNTRVJUKGVtcHR5
T2JqZWN0Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0KLSAgLy8gTm9uLWVt
cHR5IG9iamVjdCBub3Qgb2theQotICBKU09OVEVTVF9BU1NFUlQoIW9iamVjdDFfLmlzQ29udmVy
dGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLQotICAvLyBBbHdheXMgb2theQotICBKU09OVEVT
VF9BU1NFUlQoZW1wdHlPYmplY3RfLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkp
OwotCi0gIC8vIE5ldmVyIG9rYXkKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0eU9iamVjdF8uaXND
b252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0
eU9iamVjdF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FT
U0VSVCghZW1wdHlPYmplY3RfLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKCFlbXB0eU9iamVjdF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OnJlYWxW
YWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIWVtcHR5T2JqZWN0Xy5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghZW1wdHlPYmplY3RfLmlz
Q29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotCi0gIC8vIEFjY2VzcyB0aHJvdWdo
IGNvbnN0IHJlZmVyZW5jZQotICBjb25zdCBKc29uOjpWYWx1ZSYgY29uc3RPYmplY3QgPSBvYmpl
Y3QxXzsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTIzNCksIGNvbnN0
T2JqZWN0WyJpZCJdKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCksIGNv
bnN0T2JqZWN0WyJ1bmtub3duIGlkIl0pOwotCi0gIC8vIEFjY2VzcyB0aHJvdWdoIGZpbmQoKQot
ICBjb25zdCBjaGFyIGlkS2V5W10gPSAiaWQiOwotICBjb25zdCBKc29uOjpWYWx1ZSogZm91bmRJ
ZCA9IG9iamVjdDFfLmZpbmQoaWRLZXksIGlkS2V5ICsgc3RybGVuKGlkS2V5KSk7Ci0gIEpTT05U
RVNUX0FTU0VSVChmb3VuZElkICE9IG51bGxwdHIpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6VmFsdWUoMTIzNCksICpmb3VuZElkKTsKLQotICBjb25zdCBjaGFyIHVua25vd25JZEtl
eVtdID0gInVua25vd24gaWQiOwotICBjb25zdCBKc29uOjpWYWx1ZSogZm91bmRVbmtub3duSWQg
PQotICAgICAgb2JqZWN0MV8uZmluZCh1bmtub3duSWRLZXksIHVua25vd25JZEtleSArIHN0cmxl
bih1bmtub3duSWRLZXkpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKG51bGxwdHIsIGZvdW5k
VW5rbm93bklkKTsKLQotICAvLyBBY2Nlc3MgdGhyb3VnaCBkZW1hbmQoKQotICBjb25zdCBjaGFy
IHlldEFub3RoZXJJZEtleVtdID0gInlldCBhbm90aGVyIGlkIjsKLSAgY29uc3QgSnNvbjo6VmFs
dWUqIGZvdW5kWWV0QW5vdGhlcklkID0KLSAgICAgIG9iamVjdDFfLmZpbmQoeWV0QW5vdGhlcklk
S2V5LCB5ZXRBbm90aGVySWRLZXkgKyBzdHJsZW4oeWV0QW5vdGhlcklkS2V5KSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChudWxscHRyLCBmb3VuZFlldEFub3RoZXJJZCk7Ci0gIEpzb246OlZh
bHVlKiBkZW1hbmRlZFlldEFub3RoZXJJZCA9IG9iamVjdDFfLmRlbWFuZCgKLSAgICAgIHlldEFu
b3RoZXJJZEtleSwgeWV0QW5vdGhlcklkS2V5ICsgc3RybGVuKHlldEFub3RoZXJJZEtleSkpOwot
ICBKU09OVEVTVF9BU1NFUlQoZGVtYW5kZWRZZXRBbm90aGVySWQgIT0gbnVsbHB0cik7Ci0gICpk
ZW1hbmRlZFlldEFub3RoZXJJZCA9ICJiYXoiOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChK
c29uOjpWYWx1ZSgiYmF6IiksIG9iamVjdDFfWyJ5ZXQgYW5vdGhlciBpZCJdKTsKLQotICAvLyBB
Y2Nlc3MgdGhyb3VnaCBub24tY29uc3QgcmVmZXJlbmNlCi0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjpWYWx1ZSgxMjM0KSwgb2JqZWN0MV9bImlkIl0pOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoSnNvbjo6VmFsdWUoKSwgb2JqZWN0MV9bInVua25vd24gaWQiXSk7Ci0KLSAgb2JqZWN0
MV9bInNvbWUgb3RoZXIgaWQiXSA9ICJmb28iOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNv
bjo6VmFsdWUoImZvbyIpLCBvYmplY3QxX1sic29tZSBvdGhlciBpZCJdKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCJmb28iKSwgb2JqZWN0MV9bInNvbWUgb3RoZXIgaWQi
XSk7Ci0KLSAgLy8gUmVtb3ZlLgotICBKc29uOjpWYWx1ZSBnb3Q7Ci0gIGJvb2wgZGlkOwotICBk
aWQgPSBvYmplY3QxXy5yZW1vdmVNZW1iZXIoInNvbWUgb3RoZXIgaWQiLCAmZ290KTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCJmb28iKSwgZ290KTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKHRydWUsIGRpZCk7Ci0gIGdvdCA9IEpzb246OlZhbHVlKCJiYXIiKTsKLSAg
ZGlkID0gb2JqZWN0MV8ucmVtb3ZlTWVtYmVyKCJzb21lIG90aGVyIGlkIiwgJmdvdCk7Ci0gIEpT
T05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgiYmFyIiksIGdvdCk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChmYWxzZSwgZGlkKTsKLQotICBvYmplY3QxX1sic29tZSBvdGhlciBpZCJd
ID0gImZvbyI7Ci0gIEpzb246OlZhbHVlKiBnb3RQdHIgPSBudWxscHRyOwotICBkaWQgPSBvYmpl
Y3QxXy5yZW1vdmVNZW1iZXIoInNvbWUgb3RoZXIgaWQiLCBnb3RQdHIpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwobnVsbHB0ciwgZ290UHRyKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRy
dWUsIGRpZCk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBhcnJheXMpIHsKLSAg
Y29uc3QgdW5zaWduZWQgaW50IGluZGV4MCA9IDA7Ci0KLSAgLy8gVHlwZXMKLSAgSXNDaGVjayBj
aGVja3M7Ci0gIGNoZWNrcy5pc0FycmF5XyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVE
KGNoZWNrSXMoZW1wdHlBcnJheV8sIGNoZWNrcykpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzKGFycmF5MV8sIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29u
OjphcnJheVZhbHVlLCBhcnJheTFfLnR5cGUoKSk7Ci0KLSAgLy8gRW1wdHkgYXJyYXkgb2theQot
ICBKU09OVEVTVF9BU1NFUlQoZW1wdHlBcnJheV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxW
YWx1ZSkpOwotCi0gIC8vIE5vbi1lbXB0eSBhcnJheSBub3Qgb2theQotICBKU09OVEVTVF9BU1NF
UlQoIWFycmF5MV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotCi0gIC8vIEFs
d2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVChlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6YXJyYXlWYWx1ZSkpOwotCi0gIC8vIE5ldmVyIG9rYXkKLSAgSlNPTlRFU1RfQVNTRVJU
KCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6b2JqZWN0VmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6
dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghZW1wdHlBcnJheV8uaXNDb252ZXJ0aWJs
ZVRvKEpzb246OnJlYWxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIWVtcHR5QXJyYXlfLmlz
Q29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFl
bXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6c3RyaW5nVmFsdWUpKTsKLQotICAvLyBB
Y2Nlc3MgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UKLSAgY29uc3QgSnNvbjo6VmFsdWUmIGNvbnN0
QXJyYXkgPSBhcnJheTFfOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTIz
NCksIGNvbnN0QXJyYXlbaW5kZXgwXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpW
YWx1ZSgxMjM0KSwgY29uc3RBcnJheVswXSk7Ci0KLSAgLy8gQWNjZXNzIHRocm91Z2ggbm9uLWNv
bnN0IHJlZmVyZW5jZQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTIzNCks
IGFycmF5MV9baW5kZXgwXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgx
MjM0KSwgYXJyYXkxX1swXSk7Ci0KLSAgYXJyYXkxX1syXSA9IEpzb246OlZhbHVlKDE3KTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCksIGFycmF5MV9bMV0pOwotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTcpLCBhcnJheTFfWzJdKTsKLSAgSnNvbjo6
VmFsdWUgZ290OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgYXJyYXkxXy5yZW1vdmVJ
bmRleCgyLCAmZ290KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgxNyks
IGdvdCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgYXJyYXkxXy5yZW1vdmVJbmRl
eCgyLCAmZ290KSk7IC8vIGdvbmUgbm93Ci19Ci1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwg
YXJyYXlJc3N1ZTI1MikgewotICBpbnQgY291bnQgPSA1OwotICBKc29uOjpWYWx1ZSByb290Owot
ICBKc29uOjpWYWx1ZSBpdGVtOwotICByb290WyJhcnJheSJdID0gSnNvbjo6VmFsdWU6Om51bGxS
ZWY7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgIGl0ZW1bImEiXSA9
IGk7Ci0gICAgaXRlbVsiYiJdID0gaTsKLSAgICByb290WyJhcnJheSJdW2ldID0gaXRlbTsKLSAg
fQotICAvLyBKU09OVEVTVF9BU1NFUlRfRVFVQUwoNSwgcm9vdFsiYXJyYXkiXS5zaXplKCkpOwot
fQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgbnVsbCkgewotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoSnNvbjo6bnVsbFZhbHVlLCBudWxsXy50eXBlKCkpOwotCi0gIElzQ2hlY2sgY2hl
Y2tzOwotICBjaGVja3MuaXNOdWxsXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNo
ZWNrSXMobnVsbF8sIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVChudWxsXy5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVChudWxsXy5pc0Nv
bnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG51bGxfLmlz
Q29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG51bGxf
LmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG51
bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVT
VF9BU1NFUlQobnVsbF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkpOwot
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpJbnQoMCksIG51bGxfLmFzSW50KCkpOwot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6TGFyZ2VzdEludCgwKSwgbnVsbF8uYXNMYXJn
ZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VUludCgwKSwgbnVsbF8u
YXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6TGFyZ2VzdFVJbnQoMCks
IG51bGxfLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIG51
bGxfLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMC4wLCBudWxsXy5hc0Zs
b2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIiLCBudWxsXy5hc1N0cmlu
ZygpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWU6Om51bGwsIG51bGxf
KTsKLQotICAvLyBUZXN0IHVzaW5nIGEgVmFsdWUgaW4gYSBib29sZWFuIGNvbnRleHQgKGZhbHNl
IGlmZiBudWxsKQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwobnVsbF8sIGZhbHNlKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKG9iamVjdDFfLCB0cnVlKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKCFudWxsXywgdHJ1ZSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCghb2JqZWN0MV8sIGZh
bHNlKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIHN0cmluZ3MpIHsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnN0cmluZ1ZhbHVlLCBzdHJpbmcxXy50eXBlKCkpOwot
Ci0gIElzQ2hlY2sgY2hlY2tzOwotICBjaGVja3MuaXNTdHJpbmdfID0gdHJ1ZTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1BSRUQoY2hlY2tJcyhlbXB0eVN0cmluZ18sIGNoZWNrcykpOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzKHN0cmluZ18sIGNoZWNrcykpOwotICBKU09OVEVTVF9BU1NF
UlRfUFJFRChjaGVja0lzKHN0cmluZzFfLCBjaGVja3MpKTsKLQotICAvLyBFbXB0eSBzdHJpbmcg
b2theQotICBKU09OVEVTVF9BU1NFUlQoZW1wdHlTdHJpbmdfLmlzQ29udmVydGlibGVUbyhKc29u
OjpudWxsVmFsdWUpKTsKLQotICAvLyBOb24tZW1wdHkgc3RyaW5nIG5vdCBva2F5Ci0gIEpTT05U
RVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwot
Ci0gIC8vIEFsd2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVChzdHJpbmcxXy5pc0NvbnZlcnRp
YmxlVG8oSnNvbjo6c3RyaW5nVmFsdWUpKTsKLQotICAvLyBOZXZlciBva2F5Ci0gIEpTT05URVNU
X0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7Ci0g
IEpTT05URVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFs
dWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFzdHJpbmcxXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6
aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFzdHJpbmcxXy5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0
aWJsZVRvKEpzb246OnJlYWxWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoImEiLCBzdHJpbmcxXy5hc1N0cmluZygpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTCgiYSIsIHN0cmluZzFfLmFzQ1N0cmluZygpKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShW
YWx1ZVRlc3QsIGJvb2xzKSB7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpib29sZWFu
VmFsdWUsIGZhbHNlXy50eXBlKCkpOwotCi0gIElzQ2hlY2sgY2hlY2tzOwotICBjaGVja3MuaXNC
b29sXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXMoZmFsc2VfLCBjaGVj
a3MpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh0cnVlXywgY2hlY2tzKSk7Ci0K
LSAgLy8gRmFsc2Ugb2theQotICBKU09OVEVTVF9BU1NFUlQoZmFsc2VfLmlzQ29udmVydGlibGVU
byhKc29uOjpudWxsVmFsdWUpKTsKLQotICAvLyBUcnVlIG5vdCBva2F5Ci0gIEpTT05URVNUX0FT
U0VSVCghdHJ1ZV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotCi0gIC8vIEFs
d2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVCh0cnVlXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6
aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlzQ29udmVydGlibGVUbyhKc29u
Ojp1aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlzQ29udmVydGlibGVUbyhK
c29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlzQ29udmVydGlibGVU
byhKc29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlzQ29udmVy
dGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotCi0gIC8vIE5ldmVyIG9rYXkKLSAgSlNPTlRF
U1RfQVNTRVJUKCF0cnVlXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJyYXlWYWx1ZSkpOwotICBK
U09OVEVTVF9BU1NFUlQoIXRydWVfLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkp
OwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB0cnVlXy5hc0Jvb2woKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9FUVVBTCgxLCB0cnVlXy5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDEsIHRydWVfLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KDEsIHRydWVfLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEsIHRydWVfLmFz
TGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLjAsIHRydWVfLmFzRG91
YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMS4wLCB0cnVlXy5hc0Zsb2F0KCkpOwot
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgZmFsc2VfLmFzQm9vbCgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDAsIGZhbHNlXy5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDAsIGZhbHNlXy5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgwLCBmYWxzZV8uYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgZmFsc2Vf
LmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIGZhbHNlXy5h
c0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgZmFsc2VfLmFzRmxvYXQo
KSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBpbnRlZ2VycykgewotICBJc0No
ZWNrIGNoZWNrczsKLSAgSnNvbjo6VmFsdWUgdmFsOwotCi0gIC8vIENvbnZlcnNpb25zIHRoYXQg
ZG9uJ3QgZGVwZW5kIG9uIHRoZSB2YWx1ZS4KLSAgSlNPTlRFU1RfQVNTRVJUKEpzb246OlZhbHVl
KDE3KS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVhbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VS
VChKc29uOjpWYWx1ZSgxNykuaXNDb252ZXJ0aWJsZVRvKEpzb246OnN0cmluZ1ZhbHVlKSk7Ci0g
IEpTT05URVNUX0FTU0VSVChKc29uOjpWYWx1ZSgxNykuaXNDb252ZXJ0aWJsZVRvKEpzb246OmJv
b2xlYW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZhbHVlKDE3KS5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6YXJyYXlWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZh
bHVlKDE3KS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6b2JqZWN0VmFsdWUpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQoSnNvbjo6VmFsdWUoMTdVKS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVhbFZhbHVl
KSk7Ci0gIEpTT05URVNUX0FTU0VSVChKc29uOjpWYWx1ZSgxN1UpLmlzQ29udmVydGlibGVUbyhK
c29uOjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoSnNvbjo6VmFsdWUoMTdVKS5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCgh
SnNvbjo6VmFsdWUoMTdVKS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJyYXlWYWx1ZSkpOwotICBK
U09OVEVTVF9BU1NFUlQoIUpzb246OlZhbHVlKDE3VSkuaXNDb252ZXJ0aWJsZVRvKEpzb246Om9i
amVjdFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKEpzb246OlZhbHVlKDE3LjApLmlzQ29u
dmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKEpzb246OlZh
bHVlKDE3LjApLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVT
VF9BU1NFUlQoSnNvbjo6VmFsdWUoMTcuMCkuaXNDb252ZXJ0aWJsZVRvKEpzb246OmJvb2xlYW5W
YWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZhbHVlKDE3LjApLmlzQ29udmVydGli
bGVUbyhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghSnNvbjo6VmFsdWUo
MTcuMCkuaXNDb252ZXJ0aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7Ci0KLSAgLy8gRGVmYXVs
dCBpbnQKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6aW50VmFsdWUpOwotCi0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0g
SXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0g
dHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1
ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwg
dmFsLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzTGFyZ2VzdElu
dCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc1VJbnQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKDAuMCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
MC4wLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCB2YWwu
YXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIwIiwgdmFsLmFzU3Ry
aW5nKCkpOwotCi0gIC8vIERlZmF1bHQgdWludAotICB2YWwgPSBKc29uOjpWYWx1ZShKc29uOjp1
aW50VmFsdWUpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjp1aW50VmFsdWUsIHZh
bC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50XyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09O
VEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgw
LCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzTGFyZ2Vz
dFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZhbC5hc0RvdWJsZSgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NU
UklOR19FUVVBTCgiMCIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBEZWZhdWx0IHJlYWwKLSAg
dmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6cmVhbFZhbHVlKTsKLQotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBKU09OVEVTVF9BU1NFUlQo
dmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
KHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
KHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgY2hlY2tzID0gSXND
aGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1
ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hl
Y2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNJ
bnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNMYXJnZXN0SW50KCkpOwot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoMC4wLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZh
bC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmFsc2UsIHZhbC5hc0Jvb2wo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAuMCIsIHZhbC5hc1N0cmluZygp
KTsKLQotICAvLyBaZXJvIChzaWduZWQgY29uc3RydWN0b3IgYXJnKQotICB2YWwgPSBKc29uOjpW
YWx1ZSgwKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6aW50VmFsdWUsIHZhbC50
eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50XyA9IHRydWU7
Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsKLSAg
Y2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0g
IGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2
YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzTGFyZ2VzdFVJ
bnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZhbC5hc0RvdWJsZSgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklO
R19FUVVBTCgiMCIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBaZXJvICh1bnNpZ25lZCBjb25z
dHJ1Y3RvciBhcmcpCi0gIHZhbCA9IEpzb246OlZhbHVlKDB1KTsKLQotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoSnNvbjo6dWludFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0No
ZWNrKCk7Ci0gIGNoZWNrcy5pc0ludF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVl
OwotICBjaGVja3MuaXNVSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnQ2NF8gPSB0cnVlOwot
ICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVj
a0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJs
ZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJs
ZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwu
YXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNMYXJnZXN0SW50KCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoMC4wLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAs
IHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmFsc2UsIHZhbC5hc0Jv
b2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAiLCB2YWwuYXNTdHJpbmco
KSk7Ci0KLSAgLy8gWmVybyAoZmxvYXRpbmctcG9pbnQgY29uc3RydWN0b3IgYXJnKQotICB2YWwg
PSBKc29uOjpWYWx1ZSgwLjApOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpyZWFs
VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlz
SW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnRf
ID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFs
XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmlj
XyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsK
LQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVl
KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgwLCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFs
LmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZhbC5hc0Rv
dWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRmxvYXQoKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX1NUUklOR19FUVVBTCgiMC4wIiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIDJeMjAg
KHNpZ25lZCBjb25zdHJ1Y3RvciBhcmcpCi0gIHZhbCA9IEpzb246OlZhbHVlKDEgPDwgMjApOwot
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0g
IGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5p
c0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUlu
dDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0Rv
dWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FT
U0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KCgxIDw8IDIwKSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KCgxIDw8IDIwKSwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8
IDIwKSwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8
PCAyMCksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIw
KSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNC
b29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIxMDQ4NTc2IiwgdmFsLmFz
U3RyaW5nKCkpOwotCi0gIC8vIDJeMjAgKHVuc2lnbmVkIGNvbnN0cnVjdG9yIGFyZykKLSAgdmFs
ID0gSnNvbjo6VmFsdWUoSnNvbjo6VUludCgxIDw8IDIwKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKEpzb246OnVpbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVj
aygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAg
Y2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0g
IGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJ
cyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVU
byhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIw
KSwgdmFsLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwgMjApLCB2YWwu
YXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwgMjApLCB2YWwu
YXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwgMjApLCB2YWwuYXNMYXJn
ZXN0VUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzRG91
YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwgMjApLCB2YWwuYXNGbG9hdCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwNDg1NzYiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAg
Ly8gMl4yMCAoZmxvYXRpbmctcG9pbnQgY29uc3RydWN0b3IgYXJnKQotICB2YWwgPSBKc29uOjpW
YWx1ZSgoMSA8PCAyMCkgLyAxLjApOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpy
ZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tz
LmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJ
bnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVn
cmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1l
cmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3Mp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRW
YWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0ludCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzTGFyZ2VzdEludCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzVUludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RS
SU5HX0VRVUFMKAotICAgICAgIjEwNDg1NzYuMCIsCi0gICAgICBub3JtYWxpemVGbG9hdGluZ1Bv
aW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3RyaW5nKCkpKSk7Ci0KLSAgLy8g
LTJeMjAKLSAgdmFsID0gSnNvbjo6VmFsdWUoLSgxIDw8IDIwKSk7Ci0KLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKEpzb246OmludFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0No
ZWNrKCk7Ci0gIGNoZWNrcy5pc0ludF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVl
OwotICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1
ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0o
MSA8PCAyMCksIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0oMSA8PCAy
MCksIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtKDEgPDwg
MjApLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtKDEgPDwgMjAp
LCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jv
b2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIi0xMDQ4NTc2IiwgdmFsLmFz
U3RyaW5nKCkpOwotCi0gIC8vIGludDMyIG1heAotICB2YWwgPSBKc29uOjpWYWx1ZShraW50MzJt
YXgpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUo
KSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAg
Y2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVj
a3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hl
Y2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FT
U0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1heCwgdmFsLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoa2ludDMybWF4LCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoa2ludDMybWF4LCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoa2ludDMybWF4LCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKGtpbnQzMm1heCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
a2ZpbnQzMm1heCwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVl
LCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIyMTQ3NDgz
NjQ3IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDMyIG1pbgotICB2YWwgPSBKc29uOjpW
YWx1ZShraW50MzJtaW4pOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1
ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRf
ID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxf
ID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNf
ID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwot
Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1
ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChraW50MzJtaW4sIHZhbC5hc0ludCgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1pbiwgdmFsLmFzTGFyZ2VzdEludCgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1pbiwgdmFsLmFzRG91YmxlKCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoa2ludDMybWluLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9T
VFJJTkdfRVFVQUwoIi0yMTQ3NDgzNjQ4IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIHVpbnQz
MiBtYXgKLSAgdmFsID0gSnNvbjo6VmFsdWUoa3VpbnQzMm1heCk7Ci0KLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKEpzb246OnVpbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXND
aGVjaygpOwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50XyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc1VJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0
cnVlOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0
cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwot
ICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7
Ci0KLSNpZm5kZWYgSlNPTl9OT19JTlQ2NAotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa3VpbnQz
Mm1heCwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSNlbmRpZgotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoa3VpbnQzMm1heCwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGt1
aW50MzJtYXgsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
a3VpbnQzMm1heCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa2Z1
aW50MzJtYXgsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwg
dmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiNDI5NDk2NzI5
NSIsIHZhbC5hc1N0cmluZygpKTsKLQotI2lmZGVmIEpTT05fTk9fSU5UNjQKLSAgLy8gaW50NjQg
bWF4Ci0gIHZhbCA9IEpzb246OlZhbHVlKGRvdWJsZShraW50NjRtYXgpKTsKLQotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3Mg
PSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1l
cmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3Mp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRW
YWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWlu
dFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGRvdWJsZShraW50NjRtYXgpLCB2
YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9hdChraW50NjRtYXgp
LCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jv
b2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjkuMjIzMzdlKzE4IiwgdmFs
LmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDY0IG1pbgotICB2YWwgPSBKc29uOjpWYWx1ZShkb3Vi
bGUoa2ludDY0bWluKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1
ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNEb3Vi
bGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NF
UlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwu
aXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChkb3VibGUoa2ludDY0bWluKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoZmxvYXQoa2ludDY0bWluKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RS
SU5HX0VRVUFMKCItOS4yMjMzN2UrMTgiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gdWludDY0
IG1heAotICB2YWwgPSBKc29uOjpWYWx1ZShkb3VibGUoa3VpbnQ2NG1heCkpOwotCi0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNr
cyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051
bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNr
cykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxs
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Omlu
dFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1
aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZG91YmxlKGt1aW50NjRtYXgp
LCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9hdChrdWludDY0
bWF4KSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwu
YXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIxLjg0NDY3ZSsxOSIs
IHZhbC5hc1N0cmluZygpKTsKLSNlbHNlIC8vIGlmZGVmIEpTT05fTk9fSU5UNjQKLSAgLy8gMl40
MCAoc2lnbmVkIGNvbnN0cnVjdG9yIGFyZykKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6SW50
NjQoMSkgPDwgNDApOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwg
dmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnQ2NF8g
PSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxf
ID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNf
ID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwot
Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVl
KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFs
dWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwg
dmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkg
PDwgNDApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpz
b246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzVUludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNEb3VibGUo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwu
YXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwOTk1MTE2Mjc3NzYiLCB2YWwuYXNT
dHJpbmcoKSk7Ci0KLSAgLy8gMl40MCAodW5zaWduZWQgY29uc3RydWN0b3IgYXJnKQotICB2YWwg
PSBKc29uOjpWYWx1ZShKc29uOjpVSW50NjQoMSkgPDwgNDApOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChKc29uOjp1aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hl
Y2soKTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0
cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVE
KGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0Nv
bnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KChKc29uOjpJbnQ2NCgxKSA8PCA0MCksIHZhbC5hc0ludDY0KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKChKc29uOjpJbnQ2NCgxKSA8PCA0MCksIHZhbC5hc1VJbnQ2
NCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKChKc29uOjpJbnQ2NCgxKSA8PCA0MCksIHZh
bC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0
KDEpIDw8IDQwKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpz
b246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KCIxMDk5NTExNjI3Nzc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIDJeNDAgKGZsb2F0aW5n
LXBvaW50IGNvbnN0cnVjdG9yIGFyZykKLSAgdmFsID0gSnNvbjo6VmFsdWUoKEpzb246OkludDY0
KDEpIDw8IDQwKSAvIDEuMCk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxW
YWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJ
bnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50
ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051
bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNr
cykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxs
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Omlu
dFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1
aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8
IDQwKSwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50
NjQoMSkgPDwgNDApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzVUludDY0KCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNE
b3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDAp
LCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jv
b2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoCi0gICAgICAiMTA5OTUxMTYy
Nzc3Ni4wIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNv
blN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyAtMl40MAotICB2YWwgPSBKc29uOjpW
YWx1ZSgtKEpzb246OkludDY0KDEpIDw8IDQwKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KEpzb246OmludFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0g
IGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0g
IGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0oSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNJbnQ2
NCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0oSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2
YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoLShKc29uOjpJbnQ2
NCgxKSA8PCA0MCksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0o
SnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoIi0xMDk5NTExNjI3Nzc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDY0IG1heAot
ICB2YWwgPSBKc29uOjpWYWx1ZShKc29uOjpJbnQ2NChraW50NjRtYXgpKTsKLQotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoSnNvbjo6aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9
IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0
XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJs
ZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VS
VF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFs
LmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKGtpbnQ2NG1heCwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChraW50NjRtYXgsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChraW50NjRtYXgsIHZhbC5hc1VJbnQ2NCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtp
bnQ2NG1heCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChk
b3VibGUoa2ludDY0bWF4KSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoZmxvYXQoa2ludDY0bWF4KSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDY0IG1h
eCAoZmxvYXRpbmcgcG9pbnQgY29uc3RydWN0b3IpLiBOb3RlIHRoYXQga2ludDY0bWF4IGlzIG5v
dCBleGFjdGx5Ci0gIC8vIHJlcHJlc2VudGFibGUgYXMgYSBkb3VibGUsIGFuZCB3aWxsIGJlIHJv
dW5kZWQgdXAgdG8gYmUgaGlnaGVyLgotICB2YWwgPSBKc29uOjpWYWx1ZShkb3VibGUoa2ludDY0
bWF4KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5
cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1
ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252
ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6VUludDY0KDEpIDw8IDYzLCB2YWwuYXNVSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChKc29uOjpVSW50NjQoMSkgPDwgNjMsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwodWludDY0VG9Eb3VibGUoSnNvbjo6VUludDY0KDEpIDw8IDYz
KSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmxvYXQoSnNvbjo6
VUludDY0KDEpIDw8IDYzKSwgdmFsLmFzRmxvYXQoKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwo
Ci0gICAgICAiOS4yMjMzNzIwMzY4NTQ3NzU4ZSsxOCIsCi0gICAgICBub3JtYWxpemVGbG9hdGlu
Z1BvaW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3RyaW5nKCkpKSk7Ci0KLSAg
Ly8gaW50NjQgbWluCi0gIHZhbCA9IEpzb246OlZhbHVlKEpzb246OkludDY0KGtpbnQ2NG1pbikp
OwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7
Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVlOwotICBj
aGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsKLSAg
Y2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lz
KHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRv
KEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJs
ZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChraW50NjRt
aW4sIHZhbC5hc0ludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa2ludDY0bWluLCB2
YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZG91YmxlKGtpbnQ2
NG1pbiksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0KGtp
bnQ2NG1pbiksIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwg
dmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiLTkyMjMzNzIw
MzY4NTQ3NzU4MDgiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gaW50NjQgbWluIChmbG9hdGlu
ZyBwb2ludCBjb25zdHJ1Y3RvcikuIE5vdGUgdGhhdCBraW50NjRtaW4gKmlzKiBleGFjdGx5Ci0g
IC8vIHJlcHJlc2VudGFibGUgYXMgYSBkb3VibGUuCi0gIHZhbCA9IEpzb246OlZhbHVlKGRvdWJs
ZShraW50NjRtaW4pKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVl
LCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0ludDY0
XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJs
ZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VS
VF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFs
LmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKGtpbnQ2NG1pbiwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChraW50NjRtaW4sIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgtOTIyMzM3MjAzNjg1NDc3NTgwOC4wLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgtOTIyMzM3MjAzNjg1NDc3NTgwOC4wLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoCi0gICAgICAiLTkuMjIzMzcyMDM2ODU0Nzc1OGUrMTgiLAotICAgICAg
bm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cihKc29uVGVzdDo6VG9Kc29uU3RyaW5nKHZhbC5hc1N0
cmluZygpKSkpOwotCi0gIC8vIDEwXjE5Ci0gIGNvbnN0IGF1dG8gdGVuX3RvXzE5ID0gc3RhdGlj
X2Nhc3Q8SnNvbjo6VUludDY0PigxZTE5KTsKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6VUlu
dDY0KHRlbl90b18xOSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjp1aW50VmFs
dWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzVUlu
dDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0Rv
dWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FT
U0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCgh
dmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQo
IXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKHRlbl90b18xOSwgdmFsLmFzVUludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwodGVuX3RvXzE5LCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKHVpbnQ2NFRvRG91YmxlKHRlbl90b18xOSksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0KHVpbnQ2NFRvRG91YmxlKHRlbl90b18xOSkpLCB2YWwu
YXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwMDAwMDAwMDAwMDAwMDAwMDAwIiwg
dmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIDEwXjE5IChkb3VibGUgY29uc3RydWN0b3IpLiBOb3Rl
IHRoYXQgMTBeMTkgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZQotICAvLyBhcyBhIGRvdWJs
ZS4KLSAgdmFsID0gSnNvbjo6VmFsdWUodWludDY0VG9Eb3VibGUodGVuX3RvXzE5KSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAg
Y2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNr
cy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWws
IGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29u
OjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpz
b246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMWUxOSwgdmFsLmFz
RG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMWUxOSwgdmFsLmFzRmxvYXQoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKAotICAgICAgIjFlKzE5IiwKLSAgICAgIG5vcm1hbGl6ZUZs
b2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsK
LQotICAvLyB1aW50NjQgbWF4Ci0gIHZhbCA9IEpzb246OlZhbHVlKEpzb246OlVJbnQ2NChrdWlu
dDY0bWF4KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnVpbnRWYWx1ZSwgdmFs
LnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNVSW50NjRfID0g
dHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9
IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BS
RUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXND
b252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlz
Q29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoa3VpbnQ2NG1heCwgdmFsLmFzVUludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
a3VpbnQ2NG1heCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCh1aW50NjRUb0RvdWJsZShrdWludDY0bWF4KSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoZmxvYXQodWludDY0VG9Eb3VibGUoa3VpbnQ2NG1heCkpLCB2YWwuYXNG
bG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IiwgdmFs
LmFzU3RyaW5nKCkpOwotCi0gIC8vIHVpbnQ2NCBtYXggKGZsb2F0aW5nIHBvaW50IGNvbnN0cnVj
dG9yKS4gTm90ZSB0aGF0IGt1aW50NjRtYXggaXMgbm90Ci0gIC8vIGV4YWN0bHkgcmVwcmVzZW50
YWJsZSBhcyBhIGRvdWJsZSwgYW5kIHdpbGwgYmUgcm91bmRlZCB1cCB0byBiZSBoaWdoZXIuCi0g
IHZhbCA9IEpzb246OlZhbHVlKHVpbnQ2NFRvRG91YmxlKGt1aW50NjRtYXgpKTsKLQotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVj
a3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNO
dW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVj
a3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVs
bFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpp
bnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6
dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDE4NDQ2NzQ0MDczNzA5NTUx
NjE2LjAsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDE4NDQ2NzQ0
MDczNzA5NTUxNjE2LjAsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
dHJ1ZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgKLSAg
ICAgICIxLjg0NDY3NDQwNzM3MDk1NTJlKzE5IiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9p
bnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLSNlbmRpZgot
fQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgbm9uSW50ZWdlcnMpIHsKLSAgSXNDaGVj
ayBjaGVja3M7Ci0gIEpzb246OlZhbHVlIHZhbDsKLQotICAvLyBTbWFsbCBwb3NpdGl2ZSBudW1i
ZXIKLSAgdmFsID0gSnNvbjo6VmFsdWUoMS41KTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0g
IGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVT
VF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVhbFZhbHVlKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmJvb2xlYW5WYWx1ZSkpOwotICBK
U09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwot
ICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7
Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjphcnJheVZhbHVl
KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmplY3RW
YWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLjUsIHZhbC5hc0RvdWJsZSgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEuNSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCgxLCB2YWwuYXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgx
LCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMSwgdmFsLmFz
VUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEsIHZhbC5hc0xhcmdlc3RVSW50KCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKCIxLjUiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gU21hbGwgbmVn
YXRpdmUgbnVtYmVyCi0gIHZhbCA9IEpzb246OlZhbHVlKC0xLjUpOwotCi0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElz
Q2hlY2soKTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNf
ID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwot
Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7
Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnJlYWxWYWx1ZSkp
OwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFs
dWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6c3RyaW5n
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om51
bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6
dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29u
OjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMS41LCB2YWwu
YXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMS41LCB2YWwuYXNGbG9hdCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0xLCB2YWwuYXNJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCgtMSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgiLTEu
NSIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBBIGJpdCBvdmVyIGludDMyIG1heAotICB2YWwg
PSBKc29uOjpWYWx1ZShraW50MzJtYXggKyAwLjUpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsK
LSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05U
RVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotICBKU09O
VEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0g
IEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnN0cmluZ1ZhbHVlKSk7
Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVl
KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjphcnJheVZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmpl
Y3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgyMTQ3NDgzNjQ3LjUsIHZhbC5h
c0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0KDIxNDc0ODM2NDcuNSks
IHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMjE0NzQ4MzY0N1UsIHZh
bC5hc1VJbnQoKSk7Ci0jaWZkZWYgSlNPTl9IQVNfSU5UNjQKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKDIxNDc0ODM2NDdMLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoMjE0NzQ4MzY0N1UsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotI2VuZGlmCi0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoCi0gICAgICAiMjE0NzQ4MzY0Ny41IiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9p
bnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyBB
IGJpdCB1bmRlciBpbnQzMiBtaW4KLSAgdmFsID0gSnNvbjo6VmFsdWUoa2ludDMybWluIC0gMC41
KTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgp
KTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwot
ICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVU
byhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246OnN0cmluZ1ZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXND
b252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlz
Q29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwu
aXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKC0yMTQ3NDgzNjQ4LjUsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKGZsb2F0KC0yMTQ3NDgzNjQ4LjUpLCB2YWwuYXNGbG9hdCgpKTsKLSNpZmRlZiBK
U09OX0hBU19JTlQ2NAotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoLShKc29uOjpJbnQ2NCgxKSA8
PCAzMSksIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0jZW5kaWYKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgKLSAgICAg
ICItMjE0NzQ4MzY0OC41IiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRl
c3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyBBIGJpdCBvdmVyIHVp
bnQzMiBtYXgKLSAgdmFsID0gSnNvbjo6VmFsdWUoa3VpbnQzMm1heCArIDAuNSk7Ci0KLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hl
Y2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlz
TnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHZhbCwgY2hl
Y2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVh
bFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmJv
b2xlYW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29u
OjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVU
byhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGli
bGVUbyhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCg0
Mjk0OTY3Mjk1LjUsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZs
b2F0KDQyOTQ5NjcyOTUuNSksIHZhbC5hc0Zsb2F0KCkpOwotI2lmZGVmIEpTT05fSEFTX0lOVDY0
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgMzIpIC0gMSwgdmFs
LmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKChKc29uOjpVSW50NjQo
MSkgPDwgMzIpIC0gSnNvbjo6VUludDY0KDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFs
LmFzTGFyZ2VzdFVJbnQoKSk7Ci0jZW5kaWYKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUs
IHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgKLSAgICAgICI0Mjk0OTY3
Mjk1LjUiLAotICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cihKc29uVGVzdDo6VG9Kc29u
U3RyaW5nKHZhbC5hc1N0cmluZygpKSkpOwotCi0gIHZhbCA9IEpzb246OlZhbHVlKDEuMjM0NTY3
ODkwMTIzNCk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoCi0gICAgICAiMS4yMzQ1
Njc4OTAxMjM0MDAxIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6
OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyBBIDE2LWRpZ2l0IGZsb2F0
aW5nIHBvaW50IG51bWJlci4KLSAgdmFsID0gSnNvbjo6VmFsdWUoMjE5OTAyMzI1NTU1MjAwMC4w
Zik7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9hdCgyMTk5MDIzMjU1NTUyMDAwLjBmKSwg
dmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoCi0gICAgICAi
MjE5OTAyMzI1NTU1MjAwMC4wIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNv
blRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyBBIHZlcnkgbGFy
Z2UgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgotICB2YWwgPSBKc29uOjpWYWx1ZSgzLjQwMjgyMzQ2
NjM4NTI4OWUzOCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9hdCgzLjQwMjgyMzQ2NjM4
NTI4OWUzOCksIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KAotICAgICAgIjMuNDAyODIzNDY2Mzg1Mjg5ZSszOCIsCi0gICAgICBub3JtYWxpemVGbG9hdGlu
Z1BvaW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3RyaW5nKCkpKSk7Ci0KLSAg
Ly8gQW4gZXZlbiBsYXJnZXIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgotICB2YWwgPSBKc29uOjpW
YWx1ZSgxLjIzNDU2NzhlMzAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGRvdWJsZSgxLjIz
NDU2NzhlMzAwKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VR
VUFMKAotICAgICAgIjEuMjM0NTY3OGUrMzAwIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9p
bnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLX0KLQotdm9p
ZCBWYWx1ZVRlc3Q6OmNoZWNrQ29uc3RNZW1iZXJDb3VudChjb25zdCBKc29uOjpWYWx1ZSYgdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
eHBlY3RlZENvdW50KSB7Ci0gIHVuc2lnbmVkIGludCBjb3VudCA9IDA7Ci0gIEpzb246OlZhbHVl
Ojpjb25zdF9pdGVyYXRvciBpdEVuZCA9IHZhbHVlLmVuZCgpOwotICBmb3IgKEpzb246OlZhbHVl
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlLmJlZ2luKCk7IGl0ICE9IGl0RW5kOyArK2l0KSB7
Ci0gICAgKytjb3VudDsKLSAgfQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZXhwZWN0ZWRDb3Vu
dCwgY291bnQpIDw8ICJKc29uOjpWYWx1ZTo6Y29uc3RfaXRlcmF0b3IiOwotfQotCi12b2lkIFZh
bHVlVGVzdDo6Y2hlY2tNZW1iZXJDb3VudChKc29uOjpWYWx1ZSYgdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRDb3VudCkgewotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoZXhwZWN0ZWRDb3VudCwgdmFsdWUuc2l6ZSgpKTsKLQotICB1
bnNpZ25lZCBpbnQgY291bnQgPSAwOwotICBKc29uOjpWYWx1ZTo6aXRlcmF0b3IgaXRFbmQgPSB2
YWx1ZS5lbmQoKTsKLSAgZm9yIChKc29uOjpWYWx1ZTo6aXRlcmF0b3IgaXQgPSB2YWx1ZS5iZWdp
bigpOyBpdCAhPSBpdEVuZDsgKytpdCkgewotICAgICsrY291bnQ7Ci0gIH0KLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGV4cGVjdGVkQ291bnQsIGNvdW50KSA8PCAiSnNvbjo6VmFsdWU6Oml0ZXJh
dG9yIjsKLQotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0NvbnN0TWVtYmVyQ291bnQodmFs
dWUsIGV4cGVjdGVkQ291bnQpKTsKLX0KLQotVmFsdWVUZXN0OjpJc0NoZWNrOjpJc0NoZWNrKCkK
LQotICAgID0gZGVmYXVsdDsKLQotdm9pZCBWYWx1ZVRlc3Q6OmNoZWNrSXMoY29uc3QgSnNvbjo6
VmFsdWUmIHZhbHVlLCBjb25zdCBJc0NoZWNrJiBjaGVjaykgewotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoY2hlY2suaXNPYmplY3RfLCB2YWx1ZS5pc09iamVjdCgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKGNoZWNrLmlzQXJyYXlfLCB2YWx1ZS5pc0FycmF5KCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoY2hlY2suaXNCb29sXywgdmFsdWUuaXNCb29sKCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoY2hlY2suaXNEb3VibGVfLCB2YWx1ZS5pc0RvdWJsZSgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzSW50XywgdmFsdWUuaXNJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChjaGVjay5pc1VJbnRfLCB2YWx1ZS5pc1VJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChjaGVjay5pc0ludGVncmFsXywgdmFsdWUuaXNJbnRlZ3JhbCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzTnVtZXJpY18sIHZhbHVlLmlzTnVtZXJpYygp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzU3RyaW5nXywgdmFsdWUuaXNTdHJp
bmcoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChjaGVjay5pc051bGxfLCB2YWx1ZS5pc051
bGwoKSk7Ci0KLSNpZmRlZiBKU09OX0hBU19JTlQ2NAotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
Y2hlY2suaXNJbnQ2NF8sIHZhbHVlLmlzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChjaGVjay5pc1VJbnQ2NF8sIHZhbHVlLmlzVUludDY0KCkpOwotI2Vsc2UKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGZhbHNlLCB2YWx1ZS5pc0ludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoZmFsc2UsIHZhbHVlLmlzVUludDY0KCkpOwotI2VuZGlmCi19Ci0KLUpTT05URVNUX0ZJ
WFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlTnVsbCkgewotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzRXF1YWwoSnNvbjo6VmFsdWUoKSwgSnNvbjo6VmFsdWUoKSkpOwotfQotCi1KU09OVEVT
VF9GSVhUVVJFKFZhbHVlVGVzdCwgY29tcGFyZUludCkgewotICBKU09OVEVTVF9BU1NFUlRfUFJF
RChjaGVja0lzTGVzcygwLCAxMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1
YWwoMTAsIDEwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbCgtMTAsIC0x
MCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcygtMTAsIDApKTsKLX0KLQot
SlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIGNvbXBhcmVVSW50KSB7Ci0gIEpTT05URVNUX0FT
U0VSVF9QUkVEKGNoZWNrSXNMZXNzKDB1LCAxMHUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tJc0xlc3MoMHUsIEpzb246OlZhbHVlOjptYXhVSW50KSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9QUkVEKGNoZWNrSXNFcXVhbCgxMHUsIDEwdSkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZh
bHVlVGVzdCwgY29tcGFyZURvdWJsZSkgewotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lz
TGVzcygwLjAsIDEwLjApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0VxdWFsKDEw
LjAsIDEwLjApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0VxdWFsKC0xMC4wLCAt
MTAuMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcygtMTAuMCwgMC4wKSk7
Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlU3RyaW5nKSB7Ci0gIEpT
T05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKCIiLCAiICIpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1BSRUQoY2hlY2tJc0xlc3MoIiIsICJhIikpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzTGVzcygiYWJjZCIsICJ6eXVpIikpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVj
a0lzTGVzcygiYWJjIiwgImFiY2QiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNF
cXVhbCgiYWJjZCIsICJhYmNkIikpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1
YWwoIiAiLCAiICIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0xlc3MoIkFCQ0Qi
LCAiYWJjZCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0VxdWFsKCJBQkNEIiwg
IkFCQ0QiKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlQm9vbGVh
bikgewotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhmYWxzZSwgdHJ1ZSkpOwot
ICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwoZmFsc2UsIGZhbHNlKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbCh0cnVlLCB0cnVlKSk7Ci19Ci0KLUpTT05U
RVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlQXJyYXkpIHsKLSAgLy8gYXJyYXkgY29tcGFy
ZSBzaXplIHRoZW4gY29udGVudAotICBKc29uOjpWYWx1ZSBlbXB0eUFycmF5KEpzb246OmFycmF5
VmFsdWUpOwotICBKc29uOjpWYWx1ZSBsMWFBcnJheTsKLSAgbDFhQXJyYXkuYXBwZW5kKDApOwot
ICBKc29uOjpWYWx1ZSBsMWJBcnJheTsKLSAgbDFiQXJyYXkuYXBwZW5kKDEwKTsKLSAgSnNvbjo6
VmFsdWUgbDJhQXJyYXk7Ci0gIGwyYUFycmF5LmFwcGVuZCgwKTsKLSAgbDJhQXJyYXkuYXBwZW5k
KDApOwotICBKc29uOjpWYWx1ZSBsMmJBcnJheTsKLSAgbDJiQXJyYXkuYXBwZW5kKDApOwotICBs
MmJBcnJheS5hcHBlbmQoMTApOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhl
bXB0eUFycmF5LCBsMWFBcnJheSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVz
cyhlbXB0eUFycmF5LCBsMmFBcnJheSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lz
TGVzcyhsMWFBcnJheSwgbDJhQXJyYXkpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJ
c0xlc3MobDJhQXJyYXksIGwyYkFycmF5KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXNFcXVhbChlbXB0eUFycmF5LCBKc29uOjpWYWx1ZShlbXB0eUFycmF5KSkpOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwobDFhQXJyYXksIEpzb246OlZhbHVlKGwxYUFycmF5
KSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwobDJiQXJyYXksIEpzb246
OlZhbHVlKGwyYkFycmF5KSkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgY29t
cGFyZU9iamVjdCkgewotICAvLyBvYmplY3QgY29tcGFyZSBzaXplIHRoZW4gY29udGVudAotICBK
c29uOjpWYWx1ZSBlbXB0eU9iamVjdChKc29uOjpvYmplY3RWYWx1ZSk7Ci0gIEpzb246OlZhbHVl
IGwxYU9iamVjdDsKLSAgbDFhT2JqZWN0WyJrZXkxIl0gPSAwOwotICBKc29uOjpWYWx1ZSBsMWJP
YmplY3Q7Ci0gIGwxYU9iamVjdFsia2V5MSJdID0gMTA7Ci0gIEpzb246OlZhbHVlIGwyYU9iamVj
dDsKLSAgbDJhT2JqZWN0WyJrZXkxIl0gPSAwOwotICBsMmFPYmplY3RbImtleTIiXSA9IDA7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKGVtcHR5T2JqZWN0LCBsMWFPYmplY3Qp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0xlc3MoZW1wdHlPYmplY3QsIGwyYU9i
amVjdCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhsMWFPYmplY3QsIGwy
YU9iamVjdCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwoZW1wdHlPYmpl
Y3QsIEpzb246OlZhbHVlKGVtcHR5T2JqZWN0KSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzRXF1YWwobDFhT2JqZWN0LCBKc29uOjpWYWx1ZShsMWFPYmplY3QpKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbChsMmFPYmplY3QsIEpzb246OlZhbHVlKGwyYU9i
amVjdCkpKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIGNvbXBhcmVUeXBlKSB7
Ci0gIC8vIG9iamVjdCBvZiBkaWZmZXJlbnQgdHlwZSBhcmUgb3JkZXJlZCBhY2NvcmRpbmcgdG8g
dGhlaXIgdHlwZQotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhKc29uOjpWYWx1
ZSgpLCBKc29uOjpWYWx1ZSgxKSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVz
cyhKc29uOjpWYWx1ZSgxKSwgSnNvbjo6VmFsdWUoMXUpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9Q
UkVEKGNoZWNrSXNMZXNzKEpzb246OlZhbHVlKDF1KSwgSnNvbjo6VmFsdWUoMS4wKSkpOwotICBK
U09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhKc29uOjpWYWx1ZSgxLjApLCBKc29uOjpW
YWx1ZSgiYSIpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKEpzb246OlZh
bHVlKCJhIiksIEpzb246OlZhbHVlKHRydWUpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKAot
ICAgICAgY2hlY2tJc0xlc3MoSnNvbjo6VmFsdWUodHJ1ZSksIEpzb246OlZhbHVlKEpzb246OmFy
cmF5VmFsdWUpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKEpzb246OlZh
bHVlKEpzb246OmFycmF5VmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKc29uOjpWYWx1ZShKc29uOjpvYmplY3RWYWx1ZSkpKTsKLX0KLQotSlNPTlRFU1RfRklYVFVS
RShWYWx1ZVRlc3QsIENvcHlPYmplY3QpIHsKLSAgSnNvbjo6VmFsdWUgYXJyYXlWYWw7Ci0gIGFy
cmF5VmFsLmFwcGVuZCgidmFsMSIpOwotICBhcnJheVZhbC5hcHBlbmQoInZhbDIiKTsKLSAgYXJy
YXlWYWwuYXBwZW5kKCJ2YWwzIik7Ci0gIEpzb246OlZhbHVlIHN0cmluZ1ZhbCgic3RyaW5nIHZh
bHVlIik7Ci0gIEpzb246OlZhbHVlIGNvcHkxLCBjb3B5MjsKLSAgewotICAgIEpzb246OlZhbHVl
IGFycmF5Q29weSwgc3RyaW5nQ29weTsKLSAgICBhcnJheUNvcHkuY29weShhcnJheVZhbCk7Ci0g
ICAgc3RyaW5nQ29weS5jb3B5KHN0cmluZ1ZhbCk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tJc0VxdWFsKGFycmF5Q29weSwgYXJyYXlWYWwpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRf
UFJFRChjaGVja0lzRXF1YWwoc3RyaW5nQ29weSwgc3RyaW5nVmFsKSk7Ci0gICAgYXJyYXlDb3B5
LmFwcGVuZCgidmFsNCIpOwotICAgIEpTT05URVNUX0FTU0VSVChhcnJheUNvcHkuc2l6ZSgpID09
IDQpOwotICAgIGFycmF5VmFsLmFwcGVuZCgibmV3NCIpOwotICAgIGFycmF5VmFsLmFwcGVuZCgi
bmV3NSIpOwotICAgIEpTT05URVNUX0FTU0VSVChhcnJheVZhbC5zaXplKCkgPT0gNSk7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUKCEoYXJyYXlDb3B5ID09IGFycmF5VmFsKSk7Ci0gICAgc3RyaW5nQ29w
eSA9ICJhbm90aGVyIHN0cmluZyI7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKCEoc3RyaW5nQ29weSA9
PSBzdHJpbmdWYWwpKTsKLSAgICBjb3B5MS5jb3B5KGFycmF5Q29weSk7Ci0gICAgY29weTIuY29w
eShzdHJpbmdDb3B5KTsKLSAgfQotICBKU09OVEVTVF9BU1NFUlQoYXJyYXlWYWwuc2l6ZSgpID09
IDUpOwotICBKU09OVEVTVF9BU1NFUlQoc3RyaW5nVmFsID09ICJzdHJpbmcgdmFsdWUiKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKGNvcHkxLnNpemUoKSA9PSA0KTsKLSAgSlNPTlRFU1RfQVNTRVJUKGNv
cHkyID09ICJhbm90aGVyIHN0cmluZyIpOwotICBjb3B5MS5jb3B5KHN0cmluZ1ZhbCk7Ci0gIEpT
T05URVNUX0FTU0VSVChjb3B5MSA9PSAic3RyaW5nIHZhbHVlIik7Ci0gIGNvcHkyLmNvcHkoYXJy
YXlWYWwpOwotICBKU09OVEVTVF9BU1NFUlQoY29weTIuc2l6ZSgpID09IDUpOwotfQotCi12b2lk
IFZhbHVlVGVzdDo6Y2hlY2tJc0xlc3MoY29uc3QgSnNvbjo6VmFsdWUmIHgsIGNvbnN0IEpzb246
OlZhbHVlJiB5KSB7Ci0gIEpTT05URVNUX0FTU0VSVCh4IDwgeSk7Ci0gIEpTT05URVNUX0FTU0VS
VCh5ID4geCk7Ci0gIEpTT05URVNUX0FTU0VSVCh4IDw9IHkpOwotICBKU09OVEVTVF9BU1NFUlQo
eSA+PSB4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA9PSB5KSk7Ci0gIEpTT05URVNUX0FTU0VS
VCghKHkgPT0geCkpOwotICBKU09OVEVTVF9BU1NFUlQoISh4ID49IHkpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKCEoeSA8PSB4KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghKHggPiB5KSk7Ci0gIEpTT05U
RVNUX0FTU0VSVCghKHkgPCB4KSk7Ci0gIEpTT05URVNUX0FTU0VSVCh4LmNvbXBhcmUoeSkgPCAw
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHkuY29tcGFyZSh4KSA+PSAwKTsKLX0KLQotdm9pZCBWYWx1
ZVRlc3Q6OmNoZWNrSXNFcXVhbChjb25zdCBKc29uOjpWYWx1ZSYgeCwgY29uc3QgSnNvbjo6VmFs
dWUmIHkpIHsKLSAgSlNPTlRFU1RfQVNTRVJUKHggPT0geSk7Ci0gIEpTT05URVNUX0FTU0VSVCh5
ID09IHgpOwotICBKU09OVEVTVF9BU1NFUlQoeCA8PSB5KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHkg
PD0geCk7Ci0gIEpTT05URVNUX0FTU0VSVCh4ID49IHkpOwotICBKU09OVEVTVF9BU1NFUlQoeSA+
PSB4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA8IHkpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEo
eSA8IHgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA+IHkpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
KCEoeSA+IHgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHguY29tcGFyZSh5KSA9PSAwKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHkuY29tcGFyZSh4KSA9PSAwKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShW
YWx1ZVRlc3QsIHR5cGVDaGVja3NUaHJvd0V4Y2VwdGlvbnMpIHsKLSNpZiBKU09OX1VTRV9FWENF
UFRJT04KLQotICBKc29uOjpWYWx1ZSBpbnRWYWwoMSk7Ci0gIEpzb246OlZhbHVlIHN0clZhbCgi
VGVzdCIpOwotICBKc29uOjpWYWx1ZSBvYmpWYWwoSnNvbjo6b2JqZWN0VmFsdWUpOwotICBKc29u
OjpWYWx1ZSBhcnJWYWwoSnNvbjo6YXJyYXlWYWx1ZSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX1RI
Uk9XUyhpbnRWYWxbInRlc3QiXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsWyJ0
ZXN0Il0pOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbFsidGVzdCJdKTsKLQotICBK
U09OVEVTVF9BU1NFUlRfVEhST1dTKGludFZhbC5yZW1vdmVNZW1iZXIoInRlc3QiKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsLnJlbW92ZU1lbWJlcigidGVzdCIpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1RIUk9XUyhhcnJWYWwucmVtb3ZlTWVtYmVyKCJ0ZXN0IikpOwotCi0gIEpT
T05URVNUX0FTU0VSVF9USFJPV1MoaW50VmFsLmdldE1lbWJlck5hbWVzKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfVEhST1dTKHN0clZhbC5nZXRNZW1iZXJOYW1lcygpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1RIUk9XUyhhcnJWYWwuZ2V0TWVtYmVyTmFtZXMoKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X1RIUk9XUyhpbnRWYWxbMF0pOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKG9ialZhbFswXSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsWzBdKTsKLQotICBKU09OVEVTVF9BU1NF
UlRfVEhST1dTKGludFZhbC5jbGVhcigpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGlu
dFZhbC5yZXNpemUoMSkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKHN0clZhbC5yZXNpemUo
MSkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKG9ialZhbC5yZXNpemUoMSkpOwotCi0gIEpT
T05URVNUX0FTU0VSVF9USFJPV1MoaW50VmFsLmFzQ1N0cmluZygpKTsKLQotICBKU09OVEVTVF9B
U1NFUlRfVEhST1dTKG9ialZhbC5hc1N0cmluZygpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9X
UyhhcnJWYWwuYXNTdHJpbmcoKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhzdHJWYWwu
YXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFsLmFzSW50KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbC5hc0ludCgpKTsKLQotICBKU09OVEVTVF9BU1NF
UlRfVEhST1dTKHN0clZhbC5hc1VJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2Jq
VmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhhcnJWYWwuYXNVSW50KCkp
OwotCi0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsLmFzSW50NjQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9USFJPV1Mob2JqVmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9U
SFJPV1MoYXJyVmFsLmFzSW50NjQoKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhzdHJW
YWwuYXNVSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFsLmFzVUludDY0
KCkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbC5hc1VJbnQ2NCgpKTsKLQotICBK
U09OVEVTVF9BU1NFUlRfVEhST1dTKHN0clZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1RIUk9XUyhvYmpWYWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mo
YXJyVmFsLmFzRG91YmxlKCkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsLmFz
RmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFsLmFzRmxvYXQoKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9USFJPV1MoYXJyVmFsLmFzRmxvYXQoKSk7Ci0KLSAgSlNPTlRFU1Rf
QVNTRVJUX1RIUk9XUyhzdHJWYWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dT
KG9ialZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1MoYXJyVmFsLmFzQm9v
bCgpKTsKLQotI2VuZGlmCi19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBvZmZzZXRB
Y2Nlc3NvcnMpIHsKLSAgSnNvbjo6VmFsdWUgeDsKLSAgSlNPTlRFU1RfQVNTRVJUKHguZ2V0T2Zm
c2V0U3RhcnQoKSA9PSAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHguZ2V0T2Zmc2V0TGltaXQoKSA9
PSAwKTsKLSAgeC5zZXRPZmZzZXRTdGFydCgxMCk7Ci0gIHguc2V0T2Zmc2V0TGltaXQoMjApOwot
ICBKU09OVEVTVF9BU1NFUlQoeC5nZXRPZmZzZXRTdGFydCgpID09IDEwKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKHguZ2V0T2Zmc2V0TGltaXQoKSA9PSAyMCk7Ci0gIEpzb246OlZhbHVlIHkoeCk7Ci0g
IEpTT05URVNUX0FTU0VSVCh5LmdldE9mZnNldFN0YXJ0KCkgPT0gMTApOwotICBKU09OVEVTVF9B
U1NFUlQoeS5nZXRPZmZzZXRMaW1pdCgpID09IDIwKTsKLSAgSnNvbjo6VmFsdWUgejsKLSAgei5z
d2FwKHkpOwotICBKU09OVEVTVF9BU1NFUlQoei5nZXRPZmZzZXRTdGFydCgpID09IDEwKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKHouZ2V0T2Zmc2V0TGltaXQoKSA9PSAyMCk7Ci0gIEpTT05URVNUX0FT
U0VSVCh5LmdldE9mZnNldFN0YXJ0KCkgPT0gMCk7Ci0gIEpTT05URVNUX0FTU0VSVCh5LmdldE9m
ZnNldExpbWl0KCkgPT0gMCk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBTdGF0
aWNTdHJpbmcpIHsKLSAgY2hhciBtdXRhbnRbXSA9ICJoZWxsbyI7Ci0gIEpzb246OlN0YXRpY1N0
cmluZyBzcyhtdXRhbnQpOwotICBKc29uOjpTdHJpbmcgcmVndWxhcihtdXRhbnQpOwotICBtdXRh
bnRbMV0gPSAnYSc7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoImhhbGxvIiwgc3Mu
Y19zdHIoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoImhlbGxvIiwgcmVndWxh
ci5jX3N0cigpKTsKLSAgewotICAgIEpzb246OlZhbHVlIHJvb3Q7Ci0gICAgcm9vdFsidG9wIl0g
PSBzczsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJoYWxsbyIsIHJvb3RbInRv
cCJdLmFzU3RyaW5nKCkpOwotICAgIG11dGFudFsxXSA9ICd1JzsKLSAgICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKCJodWxsbyIsIHJvb3RbInRvcCJdLmFzU3RyaW5nKCkpOwotICB9Ci0g
IHsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHJvb3RbInRvcCJdID0gcmVndWxhcjsKLSAg
ICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJoZWxsbyIsIHJvb3RbInRvcCJdLmFzU3Ry
aW5nKCkpOwotICAgIG11dGFudFsxXSA9ICd1JzsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5H
X0VRVUFMKCJoZWxsbyIsIHJvb3RbInRvcCJdLmFzU3RyaW5nKCkpOwotICB9Ci19Ci0KLUpTT05U
RVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBXaWRlU3RyaW5nKSB7Ci0gIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvaXNzdWVzLzc1NgotICBjb25zdCBzdGQ6
OnN0cmluZyB1bmkgPSB1OCLlvI/vvIzov5siOyAvLyAiXHU1ZjBmXHVmZjBjXHU4ZmRiIgotICBz
dGQ6OnN0cmluZyBzdHlsZWQ7Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSB2OwotICAgIHZbImFiYyJd
ID0gdW5pOwotICAgIHN0eWxlZCA9IHYudG9TdHlsZWRTdHJpbmcoKTsKLSAgfQotICBKc29uOjpW
YWx1ZSByb290OwotICB7Ci0gICAgSlNPTkNQUF9TVFJJTkcgZXJyczsKLSAgICBzdGQ6OmlzdHJp
bmdzdHJlYW0gaXNzKHN0eWxlZCk7Ci0gICAgYm9vbCBvayA9IHBhcnNlRnJvbVN0cmVhbShKc29u
OjpDaGFyUmVhZGVyQnVpbGRlcigpLCBpc3MsICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUKG9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICBzdGQ6OmNlcnIgPDwgImVycnM6ICIg
PDwgZXJycyA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotICB9Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJ
TkdfRVFVQUwocm9vdFsiYWJjIl0uYXNTdHJpbmcoKSwgdW5pKTsKLX0KLQotSlNPTlRFU1RfRklY
VFVSRShWYWx1ZVRlc3QsIENvbW1lbnRCZWZvcmUpIHsKLSAgSnNvbjo6VmFsdWUgdmFsOyAvLyBm
aWxsIHZhbAotICB2YWwuc2V0Q29tbWVudChKc29uOjpTdHJpbmcoIi8vIHRoaXMgY29tbWVudCBz
aG91bGQgYXBwZWFyIGJlZm9yZSIpLAotICAgICAgICAgICAgICAgICBKc29uOjpjb21tZW50QmVm
b3JlKTsKLSAgSnNvbjo6U3RyZWFtV3JpdGVyQnVpbGRlciB3YnVpbGRlcjsKLSAgd2J1aWxkZXIu
c2V0dGluZ3NfWyJjb21tZW50U3R5bGUiXSA9ICJBbGwiOwotICB7Ci0gICAgY2hhciBjb25zdCBl
eHBlY3RlZFtdID0gIi8vIHRoaXMgY29tbWVudCBzaG91bGQgYXBwZWFyIGJlZm9yZVxubnVsbCI7
Ci0gICAgSnNvbjo6U3RyaW5nIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5nKHdidWlsZGVyLCB2
YWwpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7
Ci0gICAgSnNvbjo6U3RyaW5nIHJlczIgPSB2YWwudG9TdHlsZWRTdHJpbmcoKTsKLSAgICBKc29u
OjpTdHJpbmcgZXhwMiA9ICJcbiI7Ci0gICAgZXhwMiArPSBleHBlY3RlZDsKLSAgICBleHAyICs9
ICJcbiI7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChleHAyLCByZXMyKTsKLSAg
fQotICBKc29uOjpWYWx1ZSBvdGhlciA9ICJoZWxsbyI7Ci0gIHZhbC5zd2FwUGF5bG9hZChvdGhl
cik7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGV4cGVjdGVkW10gPSAiLy8gdGhpcyBjb21tZW50IHNo
b3VsZCBhcHBlYXIgYmVmb3JlXG5cImhlbGxvXCIiOwotICAgIEpzb246OlN0cmluZyByZXN1bHQg
PSBKc29uOjp3cml0ZVN0cmluZyh3YnVpbGRlciwgdmFsKTsKLSAgICBKU09OVEVTVF9BU1NFUlRf
U1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwotICAgIEpzb246OlN0cmluZyByZXMyID0g
dmFsLnRvU3R5bGVkU3RyaW5nKCk7Ci0gICAgSnNvbjo6U3RyaW5nIGV4cDIgPSAiXG4iOwotICAg
IGV4cDIgKz0gZXhwZWN0ZWQ7Ci0gICAgZXhwMiArPSAiXG4iOwotICAgIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoZXhwMiwgcmVzMik7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTCgibnVsbFxuIiwgb3RoZXIudG9TdHlsZWRTdHJpbmcoKSk7Ci0gIH0KLSAgdmFsID0gImhl
bGxvIjsKLSAgLy8gdmFsLnNldENvbW1lbnQoIi8vIHRoaXMgY29tbWVudCBzaG91bGQgYXBwZWFy
IGJlZm9yZSIsCi0gIC8vIEpzb246OkNvbW1lbnRQbGFjZW1lbnQ6OmNvbW1lbnRCZWZvcmUpOyBB
c3NpZ25tZW50IG92ZXItd3JpdGVzIGNvbW1lbnRzLgotICB7Ci0gICAgY2hhciBjb25zdCBleHBl
Y3RlZFtdID0gIlwiaGVsbG9cIiI7Ci0gICAgSnNvbjo6U3RyaW5nIHJlc3VsdCA9IEpzb246Ondy
aXRlU3RyaW5nKHdidWlsZGVyLCB2YWwpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0gICAgSnNvbjo6U3RyaW5nIHJlczIgPSB2YWwudG9TdHls
ZWRTdHJpbmcoKTsKLSAgICBKc29uOjpTdHJpbmcgZXhwMiA9ICIiOwotICAgIGV4cDIgKz0gZXhw
ZWN0ZWQ7Ci0gICAgZXhwMiArPSAiXG4iOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoZXhwMiwgcmVzMik7Ci0gIH0KLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIHpl
cm9lcykgewotICBjaGFyIGNvbnN0IGNzdHJbXSA9ICJoXDBpIjsKLSAgSnNvbjo6U3RyaW5nIGJp
bmFyeShjc3RyLCBzaXplb2YoY3N0cikpOyAvLyBpbmNsdWRlIHRyYWlsaW5nIDAKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKDRVLCBiaW5hcnkubGVuZ3RoKCkpOwotICBKc29uOjpTdHJlYW1Xcml0
ZXJCdWlsZGVyIGI7Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHJvb3QgPSBiaW5h
cnk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChiaW5hcnksIHJvb3QuYXNTdHJp
bmcoKSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgdG9wW10gPSAidG9wIjsKLSAgICBKc29u
OjpWYWx1ZSByb290OwotICAgIHJvb3RbdG9wXSA9IGJpbmFyeTsKLSAgICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKGJpbmFyeSwgcm9vdFt0b3BdLmFzU3RyaW5nKCkpOwotICAgIEpzb246
OlZhbHVlIHJlbW92ZWQ7Ci0gICAgYm9vbCBkaWQ7Ci0gICAgZGlkID0gcm9vdC5yZW1vdmVNZW1i
ZXIodG9wLCB0b3AgKyBzaXplb2YodG9wKSAtIDFVLCAmcmVtb3ZlZCk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUKGRpZCk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChiaW5hcnksIHJl
bW92ZWQuYXNTdHJpbmcoKSk7Ci0gICAgZGlkID0gcm9vdC5yZW1vdmVNZW1iZXIodG9wLCB0b3Ag
KyBzaXplb2YodG9wKSAtIDFVLCAmcmVtb3ZlZCk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKCFkaWQp
OwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoYmluYXJ5LCByZW1vdmVkLmFzU3Ry
aW5nKCkpOyAvLyBzdGlsbAotICB9Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCB6
ZXJvZXNJbktleXMpIHsKLSAgY2hhciBjb25zdCBjc3RyW10gPSAiaFwwaSI7Ci0gIEpzb246OlN0
cmluZyBiaW5hcnkoY3N0ciwgc2l6ZW9mKGNzdHIpKTsgLy8gaW5jbHVkZSB0cmFpbGluZyAwCi0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTCg0VSwgYmluYXJ5Lmxlbmd0aCgpKTsKLSAgewotICAgIEpz
b246OlZhbHVlIHJvb3Q7Ci0gICAgcm9vdFtiaW5hcnldID0gInRoZXJlIjsKLSAgICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ0aGVyZSIsIHJvb3RbYmluYXJ5XS5hc1N0cmluZygpKTsK
LSAgICBKU09OVEVTVF9BU1NFUlQoIXJvb3QuaXNNZW1iZXIoImgiKSk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUKHJvb3QuaXNNZW1iZXIoYmluYXJ5KSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklO
R19FUVVBTCgKLSAgICAgICAgInRoZXJlIiwgcm9vdC5nZXQoYmluYXJ5LCBKc29uOjpWYWx1ZTo6
bnVsbFJlZikuYXNTdHJpbmcoKSk7Ci0gICAgSnNvbjo6VmFsdWUgcmVtb3ZlZDsKLSAgICBib29s
IGRpZDsKLSAgICBkaWQgPSByb290LnJlbW92ZU1lbWJlcihiaW5hcnkuZGF0YSgpLCBiaW5hcnku
ZGF0YSgpICsgYmluYXJ5Lmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZy
ZW1vdmVkKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoZGlkKTsKLSAgICBKU09OVEVTVF9BU1NFUlRf
U1RSSU5HX0VRVUFMKCJ0aGVyZSIsIHJlbW92ZWQuYXNTdHJpbmcoKSk7Ci0gICAgZGlkID0gcm9v
dC5yZW1vdmVNZW1iZXIoYmluYXJ5LmRhdGEoKSwgYmluYXJ5LmRhdGEoKSArIGJpbmFyeS5sZW5n
dGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3ZlZCk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUKCFkaWQpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoInRoZXJl
IiwgcmVtb3ZlZC5hc1N0cmluZygpKTsgLy8gc3RpbGwKLSAgICBKU09OVEVTVF9BU1NFUlQoIXJv
b3QuaXNNZW1iZXIoYmluYXJ5KSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgK
LSAgICAgICAgIiIsIHJvb3QuZ2V0KGJpbmFyeSwgSnNvbjo6VmFsdWU6Om51bGxSZWYpLmFzU3Ry
aW5nKCkpOwotICB9Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBzcGVjaWFsRmxv
YXRzKSB7Ci0gIEpzb246OlN0cmVhbVdyaXRlckJ1aWxkZXIgYjsKLSAgYi5zZXR0aW5nc19bInVz
ZVNwZWNpYWxGbG9hdHMiXSA9IHRydWU7Ci0KLSAgSnNvbjo6VmFsdWUgdiA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gIEpzb246OlN0cmluZyBleHBlY3RlZCA9
ICJOYU4iOwotICBKc29uOjpTdHJpbmcgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAg
diA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAgZXhwZWN0ZWQg
PSAiSW5maW5pdHkiOwotICByZXN1bHQgPSBKc29uOjp3cml0ZVN0cmluZyhiLCB2KTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChleHBlY3RlZCwgcmVzdWx0KTsKLQotICB2ID0gLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAgZXhwZWN0ZWQgPSAiLUlu
ZmluaXR5IjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNU
X0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci19Ci0KLUpTT05URVNUX0ZJ
WFRVUkUoVmFsdWVUZXN0LCBwcmVjaXNpb24pIHsKLSAgSnNvbjo6U3RyZWFtV3JpdGVyQnVpbGRl
ciBiOwotICBiLnNldHRpbmdzX1sicHJlY2lzaW9uIl0gPSA1OwotCi0gIEpzb246OlZhbHVlIHYg
PSAxMDAuMCAvIDM7Ci0gIEpzb246OlN0cmluZyBleHBlY3RlZCA9ICIzMy4zMzMiOwotICBKc29u
OjpTdHJpbmcgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgdiA9IDAuMjUwMDAwMDA7
Ci0gIGV4cGVjdGVkID0gIjAuMjUiOwotICByZXN1bHQgPSBKc29uOjp3cml0ZVN0cmluZyhiLCB2
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChleHBlY3RlZCwgcmVzdWx0KTsKLQot
ICB2ID0gMC4yNTYzNDU2OwotICBleHBlY3RlZCA9ICIwLjI1NjM1IjsKLSAgcmVzdWx0ID0gSnNv
bjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhw
ZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0aW5nc19bInByZWNpc2lvbiJdID0gMTsKLSAgZXhw
ZWN0ZWQgPSAiMC4zIjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0
aW5nc19bInByZWNpc2lvbiJdID0gMTc7Ci0gIHYgPSAxMjM0ODU3NDc2MzA1LjI1NjM0NTY5NDg3
Mzc0MDU0NTA2ODsKLSAgZXhwZWN0ZWQgPSAiMTIzNDg1NzQ3NjMwNS4yNTYzIjsKLSAgcmVzdWx0
ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0aW5nc19bInByZWNpc2lvbiJdID0gMjQ7
Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAgZXhwZWN0ZWQgPSAiMC4yNTYzNDU2
OTQ4NzM3NDA1NCI7Ci0gIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5nKGIsIHYpOwotICBKU09O
VEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwotCi0gIGIuc2V0dGlu
Z3NfWyJwcmVjaXNpb24iXSA9IDU7Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb25UeXBlIl0gPSAi
ZGVjaW1hbCI7Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAgZXhwZWN0ZWQgPSAi
MC4yNTYzNSI7Ci0gIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5nKGIsIHYpOwotICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwotCi0gIGIuc2V0dGluZ3Nf
WyJwcmVjaXNpb24iXSA9IDE7Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb25UeXBlIl0gPSAiZGVj
aW1hbCI7Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAgZXhwZWN0ZWQgPSAiMC4z
IjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0aW5nc19bInByZWNp
c2lvbiJdID0gMTA7Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb25UeXBlIl0gPSAiZGVjaW1hbCI7
Ci0gIHYgPSAwLjIzMzAwMDAwOwotICBleHBlY3RlZCA9ICIwLjIzMyI7Ci0gIHJlc3VsdCA9IEpz
b246OndyaXRlU3RyaW5nKGIsIHYpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4
cGVjdGVkLCByZXN1bHQpOwotfQotCi1zdHJ1Y3QgV3JpdGVyVGVzdCA6IEpzb25UZXN0OjpUZXN0
Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShXcml0ZXJUZXN0LCBkcm9wTnVsbFBsYWNlaG9s
ZGVycykgewotICBKc29uOjpGYXN0V3JpdGVyIHdyaXRlcjsKLSAgSnNvbjo6VmFsdWUgbnVsbFZh
bHVlOwotICBKU09OVEVTVF9BU1NFUlQod3JpdGVyLndyaXRlKG51bGxWYWx1ZSkgPT0gIm51bGxc
biIpOwotCi0gIHdyaXRlci5kcm9wTnVsbFBsYWNlaG9sZGVycygpOwotICBKU09OVEVTVF9BU1NF
UlQod3JpdGVyLndyaXRlKG51bGxWYWx1ZSkgPT0gIlxuIik7Ci19Ci0KLXN0cnVjdCBTdHJlYW1X
cml0ZXJUZXN0IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKFN0
cmVhbVdyaXRlclRlc3QsIGRyb3BOdWxsUGxhY2Vob2xkZXJzKSB7Ci0gIEpzb246OlN0cmVhbVdy
aXRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6VmFsdWUgbnVsbFZhbHVlOwotICBiLnNldHRpbmdzX1si
ZHJvcE51bGxQbGFjZWhvbGRlcnMiXSA9IGZhbHNlOwotICBKU09OVEVTVF9BU1NFUlQoSnNvbjo6
d3JpdGVTdHJpbmcoYiwgbnVsbFZhbHVlKSA9PSAibnVsbCIpOwotICBiLnNldHRpbmdzX1siZHJv
cE51bGxQbGFjZWhvbGRlcnMiXSA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVChKc29uOjp3cml0
ZVN0cmluZyhiLCBudWxsVmFsdWUpLmVtcHR5KCkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFN0
cmVhbVdyaXRlclRlc3QsIHdyaXRlWmVyb2VzKSB7Ci0gIEpzb246OlN0cmluZyBiaW5hcnkoImhp
IiwgMyk7IC8vIGluY2x1ZGUgdHJhaWxpbmcgMAotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMywg
YmluYXJ5Lmxlbmd0aCgpKTsKLSAgSnNvbjo6U3RyaW5nIGV4cGVjdGVkKCJcImhpXFx1MDAwMFwi
Iik7IC8vIHVuaWNvZGVkIHplcm8KLSAgSnNvbjo6U3RyZWFtV3JpdGVyQnVpbGRlciBiOwotICB7
Ci0gICAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgICByb290ID0gYmluYXJ5OwotICAgIEpTT05URVNU
X0FTU0VSVF9TVFJJTkdfRVFVQUwoYmluYXJ5LCByb290LmFzU3RyaW5nKCkpOwotICAgIEpzb246
OlN0cmluZyBvdXQgPSBKc29uOjp3cml0ZVN0cmluZyhiLCByb290KTsKLSAgICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoZXhwZWN0ZWQuc2l6ZSgpLCBvdXQuc2l6ZSgpKTsKLSAgICBKU09OVEVTVF9B
U1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCBvdXQpOwotICB9Ci0gIHsKLSAgICBKc29uOjpW
YWx1ZSByb290OwotICAgIHJvb3RbInRvcCJdID0gYmluYXJ5OwotICAgIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoYmluYXJ5LCByb290WyJ0b3AiXS5hc1N0cmluZygpKTsKLSAgICBKc29u
OjpTdHJpbmcgb3V0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgcm9vdFsidG9wIl0pOwotICAgIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIG91dCk7Ci0gIH0KLX0KLQotc3Ry
dWN0IFJlYWRlclRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05URVNUX0ZJWFRV
UkUoUmVhZGVyVGVzdCwgcGFyc2VXaXRoTm9FcnJvcnMpIHsKLSAgSnNvbjo6UmVhZGVyIHJlYWRl
cjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgYm9vbCBvayA9IHJlYWRlci5wYXJzZSgieyBcInBy
b3BlcnR5XCIgOiBcInZhbHVlXCIgfSIsIHJvb3QpOwotICBKU09OVEVTVF9BU1NFUlQob2spOwot
ICBKU09OVEVTVF9BU1NFUlQocmVhZGVyLmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKS5lbXB0
eSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJlYWRlci5nZXRTdHJ1Y3R1cmVkRXJyb3JzKCkuZW1w
dHkoKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoUmVhZGVyVGVzdCwgcGFyc2VXaXRoTm9FcnJv
cnNUZXN0aW5nT2Zmc2V0cykgewotICBKc29uOjpSZWFkZXIgcmVhZGVyOwotICBKc29uOjpWYWx1
ZSByb290OwotICBib29sIG9rID0gcmVhZGVyLnBhcnNlKCJ7IFwicHJvcGVydHlcIiA6IFtcInZh
bHVlXCIsIFwidmFsdWUyXCJdLCBcIm9ialwiIDogIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICJ7IFwibmVzdGVkXCIgOiAxMjMsIFwiYm9vbFwiIDogdHJ1ZX0sIFwibnVsbFwiIDogIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICJudWxsLCBcImZhbHNlXCIgOiBmYWxzZSB9IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByb290KTsKLSAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHJlYWRlci5nZXRGb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKCkuZW1wdHkoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVChyZWFkZXIuZ2V0U3RydWN0dXJlZEVycm9ycygpLmVtcHR5KCkp
OwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsicHJvcGVydHkiXS5nZXRPZmZzZXRTdGFydCgpID09
IDE1KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3RbInByb3BlcnR5Il0uZ2V0T2Zmc2V0TGltaXQo
KSA9PSAzNCk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJwcm9wZXJ0eSJdWzBdLmdldE9mZnNl
dFN0YXJ0KCkgPT0gMTYpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsicHJvcGVydHkiXVswXS5n
ZXRPZmZzZXRMaW1pdCgpID09IDIzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3RbInByb3BlcnR5
Il1bMV0uZ2V0T2Zmc2V0U3RhcnQoKSA9PSAyNSk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJw
cm9wZXJ0eSJdWzFdLmdldE9mZnNldExpbWl0KCkgPT0gMzMpOwotICBKU09OVEVTVF9BU1NFUlQo
cm9vdFsib2JqIl0uZ2V0T2Zmc2V0U3RhcnQoKSA9PSA0NCk7Ci0gIEpTT05URVNUX0FTU0VSVChy
b290WyJvYmoiXS5nZXRPZmZzZXRMaW1pdCgpID09IDc2KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJv
b3RbIm9iaiJdWyJuZXN0ZWQiXS5nZXRPZmZzZXRTdGFydCgpID09IDU3KTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKHJvb3RbIm9iaiJdWyJuZXN0ZWQiXS5nZXRPZmZzZXRMaW1pdCgpID09IDYwKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKHJvb3RbIm9iaiJdWyJib29sIl0uZ2V0T2Zmc2V0U3RhcnQoKSA9PSA3
MSk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJvYmoiXVsiYm9vbCJdLmdldE9mZnNldExpbWl0
KCkgPT0gNzUpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsibnVsbCJdLmdldE9mZnNldFN0YXJ0
KCkgPT0gODcpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsibnVsbCJdLmdldE9mZnNldExpbWl0
KCkgPT0gOTEpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsiZmFsc2UiXS5nZXRPZmZzZXRTdGFy
dCgpID09IDEwMyk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJmYWxzZSJdLmdldE9mZnNldExp
bWl0KCkgPT0gMTA4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3QuZ2V0T2Zmc2V0U3RhcnQoKSA9
PSAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3QuZ2V0T2Zmc2V0TGltaXQoKSA9PSAxMTApOwot
fQotCi1KU09OVEVTVF9GSVhUVVJFKFJlYWRlclRlc3QsIHBhcnNlV2l0aE9uZUVycm9yKSB7Ci0g
IEpzb246OlJlYWRlciByZWFkZXI7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIGJvb2wgb2sgPSBy
ZWFkZXIucGFyc2UoInsgXCJwcm9wZXJ0eVwiIDo6IFwidmFsdWVcIiB9Iiwgcm9vdCk7Ci0gIEpT
T05URVNUX0FTU0VSVCghb2spOwotICBKU09OVEVTVF9BU1NFUlQocmVhZGVyLmdldEZvcm1hdHRl
ZEVycm9yTWVzc2FnZXMoKSA9PQotICAgICAgICAgICAgICAgICAgIiogTGluZSAxLCBDb2x1bW4g
MTVcbiAgU3ludGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5ICIKLSAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZC5cbiIpOwotICBzdGQ6OnZlY3RvcjxKc29uOjpSZWFkZXI6OlN0cnVj
dHVyZWRFcnJvcj4gZXJyb3JzID0KLSAgICAgIHJlYWRlci5nZXRTdHJ1Y3R1cmVkRXJyb3JzKCk7
Ci0gIEpTT05URVNUX0FTU0VSVChlcnJvcnMuc2l6ZSgpID09IDEpOwotICBKU09OVEVTVF9BU1NF
UlQoZXJyb3JzLmF0KDApLm9mZnNldF9zdGFydCA9PSAxNCk7Ci0gIEpTT05URVNUX0FTU0VSVChl
cnJvcnMuYXQoMCkub2Zmc2V0X2xpbWl0ID09IDE1KTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycm9y
cy5hdCgwKS5tZXNzYWdlID09Ci0gICAgICAgICAgICAgICAgICAiU3ludGF4IGVycm9yOiB2YWx1
ZSwgb2JqZWN0IG9yIGFycmF5IGV4cGVjdGVkLiIpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFJl
YWRlclRlc3QsIHBhcnNlQ2hpbmVzZVdpdGhPbmVFcnJvcikgewotICBKc29uOjpSZWFkZXIgcmVh
ZGVyOwotICBKc29uOjpWYWx1ZSByb290OwotICBib29sIG9rID0gcmVhZGVyLnBhcnNlKCJ7IFwi
cHLkvZDol6RlcnR5XCIgOjogXCJ2YWx1ZVwiIH0iLCByb290KTsKLSAgSlNPTlRFU1RfQVNTRVJU
KCFvayk7Ci0gIEpTT05URVNUX0FTU0VSVChyZWFkZXIuZ2V0Rm9ybWF0dGVkRXJyb3JNZXNzYWdl
cygpID09Ci0gICAgICAgICAgICAgICAgICAiKiBMaW5lIDEsIENvbHVtbiAxOVxuICBTeW50YXgg
ZXJyb3I6IHZhbHVlLCBvYmplY3Qgb3IgYXJyYXkgIgotICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkLlxuIik7Ci0gIHN0ZDo6dmVjdG9yPEpzb246OlJlYWRlcjo6U3RydWN0dXJlZEVycm9yPiBl
cnJvcnMgPQotICAgICAgcmVhZGVyLmdldFN0cnVjdHVyZWRFcnJvcnMoKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKGVycm9ycy5zaXplKCkgPT0gMSk7Ci0gIEpTT05URVNUX0FTU0VSVChlcnJvcnMuYXQo
MCkub2Zmc2V0X3N0YXJ0ID09IDE4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycm9ycy5hdCgwKS5v
ZmZzZXRfbGltaXQgPT0gMTkpOwotICBKU09OVEVTVF9BU1NFUlQoZXJyb3JzLmF0KDApLm1lc3Nh
Z2UgPT0KLSAgICAgICAgICAgICAgICAgICJTeW50YXggZXJyb3I6IHZhbHVlLCBvYmplY3Qgb3Ig
YXJyYXkgZXhwZWN0ZWQuIik7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoUmVhZGVyVGVzdCwgcGFy
c2VXaXRoRGV0YWlsRXJyb3IpIHsKLSAgSnNvbjo6UmVhZGVyIHJlYWRlcjsKLSAgSnNvbjo6VmFs
dWUgcm9vdDsKLSAgYm9vbCBvayA9IHJlYWRlci5wYXJzZSgieyBcInByb3BlcnR5XCIgOiBcInZc
XGFsdWVcIiB9Iiwgcm9vdCk7Ci0gIEpTT05URVNUX0FTU0VSVCghb2spOwotICBKU09OVEVTVF9B
U1NFUlQocmVhZGVyLmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKSA9PQotICAgICAgICAgICAg
ICAgICAgIiogTGluZSAxLCBDb2x1bW4gMTZcbiAgQmFkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJp
bmdcblNlZSAiCi0gICAgICAgICAgICAgICAgICAiTGluZSAxLCBDb2x1bW4gMjAgZm9yIGRldGFp
bC5cbiIpOwotICBzdGQ6OnZlY3RvcjxKc29uOjpSZWFkZXI6OlN0cnVjdHVyZWRFcnJvcj4gZXJy
b3JzID0KLSAgICAgIHJlYWRlci5nZXRTdHJ1Y3R1cmVkRXJyb3JzKCk7Ci0gIEpTT05URVNUX0FT
U0VSVChlcnJvcnMuc2l6ZSgpID09IDEpOwotICBKU09OVEVTVF9BU1NFUlQoZXJyb3JzLmF0KDAp
Lm9mZnNldF9zdGFydCA9PSAxNSk7Ci0gIEpTT05URVNUX0FTU0VSVChlcnJvcnMuYXQoMCkub2Zm
c2V0X2xpbWl0ID09IDIzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycm9ycy5hdCgwKS5tZXNzYWdl
ID09ICJCYWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyIpOwotfQotCi1zdHJ1Y3QgQ2hhclJl
YWRlclRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05URVNUX0ZJWFRVUkUoQ2hh
clJlYWRlclRlc3QsIHBhcnNlV2l0aE5vRXJyb3JzKSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWls
ZGVyIGI7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0g
IEpzb246OlN0cmluZyBlcnJzOwotICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRv
Y1tdID0gInsgXCJwcm9wZXJ0eVwiIDogXCJ2YWx1ZVwiIH0iOwotICBib29sIG9rID0gcmVhZGVy
LT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gIEpT
T05URVNUX0FTU0VSVChvayk7Ci0gIEpTT05URVNUX0FTU0VSVChlcnJzLmVtcHR5KCkpOwotICBk
ZWxldGUgcmVhZGVyOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJUZXN0LCBwYXJz
ZVdpdGhOb0Vycm9yc1Rlc3RpbmdPZmZzZXRzKSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVy
IGI7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIEpz
b246OlN0cmluZyBlcnJzOwotICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1td
ID0gInsgXCJwcm9wZXJ0eVwiIDogW1widmFsdWVcIiwgXCJ2YWx1ZTJcIl0sIFwib2JqXCIgOiAi
Ci0gICAgICAgICAgICAgICAgICAgICAieyBcIm5lc3RlZFwiIDogMTIzLCBcImJvb2xcIiA6IHRy
dWV9LCBcIm51bGxcIiA6ICIKLSAgICAgICAgICAgICAgICAgICAgICJudWxsLCBcImZhbHNlXCIg
OiBmYWxzZSB9IjsKLSAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0
cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICBKU09OVEVTVF9BU1NFUlQob2spOwotICBKU09O
VEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAgZGVsZXRlIHJlYWRlcjsKLX0KLQotSlNPTlRF
U1RfRklYVFVSRShDaGFyUmVhZGVyVGVzdCwgcGFyc2VXaXRoT25lRXJyb3IpIHsKLSAgSnNvbjo6
Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hh
clJlYWRlcigpKTsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0g
IGNoYXIgY29uc3QgZG9jW10gPSAieyBcInByb3BlcnR5XCIgOjogXCJ2YWx1ZVwiIH0iOwotICBi
b29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290
LCAmZXJycyk7Ci0gIEpTT05URVNUX0FTU0VSVCghb2spOwotICBKU09OVEVTVF9BU1NFUlQoZXJy
cyA9PQotICAgICAgICAgICAgICAgICAgIiogTGluZSAxLCBDb2x1bW4gMTVcbiAgU3ludGF4IGVy
cm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5ICIKLSAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZC5cbiIpOwotICBkZWxldGUgcmVhZGVyOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFk
ZXJUZXN0LCBwYXJzZUNoaW5lc2VXaXRoT25lRXJyb3IpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1
aWxkZXIgYjsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsK
LSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIGNoYXIgY29uc3Qg
ZG9jW10gPSAieyBcInBy5L2Q6JekZXJ0eVwiIDo6IFwidmFsdWVcIiB9IjsKLSAgYm9vbCBvayA9
IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMp
OwotICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycnMgPT0KLSAg
ICAgICAgICAgICAgICAgICIqIExpbmUgMSwgQ29sdW1uIDE5XG4gIFN5bnRheCBlcnJvcjogdmFs
dWUsIG9iamVjdCBvciBhcnJheSAiCi0gICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQuXG4iKTsK
LSAgZGVsZXRlIHJlYWRlcjsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShDaGFyUmVhZGVyVGVzdCwg
cGFyc2VXaXRoRGV0YWlsRXJyb3IpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAg
SnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAgSnNvbjo6U3Ry
aW5nIGVycnM7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIGNoYXIgY29uc3QgZG9jW10gPSAieyBc
InByb3BlcnR5XCIgOiBcInZcXGFsdWVcIiB9IjsKLSAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2Uo
ZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICBKU09OVEVTVF9B
U1NFUlQoIW9rKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycnMgPT0KLSAgICAgICAgICAgICAgICAg
ICIqIExpbmUgMSwgQ29sdW1uIDE2XG4gIEJhZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nXG5T
ZWUgIgotICAgICAgICAgICAgICAgICAgIkxpbmUgMSwgQ29sdW1uIDIwIGZvciBkZXRhaWwuXG4i
KTsKLSAgZGVsZXRlIHJlYWRlcjsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShDaGFyUmVhZGVyVGVz
dCwgcGFyc2VXaXRoU3RhY2tMaW1pdCkgewotICBKc29uOjpDaGFyUmVhZGVyQnVpbGRlciBiOwot
ICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0gInsgXCJwcm9wZXJ0eVwi
IDogXCJ2YWx1ZVwiIH0iOwotICB7Ci0gICAgYi5zZXR0aW5nc19bInN0YWNrTGltaXQiXSA9IDI7
Ci0gICAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAgICBK
c29uOjpTdHJpbmcgZXJyczsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyAr
IHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9r
KTsKLSAgICBKU09OVEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAgICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoInZhbHVlIiwgcm9vdFsicHJvcGVydHkiXSk7Ci0gICAgZGVsZXRlIHJlYWRlcjsK
LSAgfQotICB7Ci0gICAgYi5zZXR0aW5nc19bInN0YWNrTGltaXQiXSA9IDE7Ci0gICAgSnNvbjo6
Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAgICBKc29uOjpTdHJpbmcg
ZXJyczsKLSAgICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKAotICAgICAgICByZWFkZXItPnBhcnNl
KGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKSk7Ci0gICAgZGVsZXRl
IHJlYWRlcjsKLSAgfQotfQotCi1zdHJ1Y3QgQ2hhclJlYWRlclN0cmljdE1vZGVUZXN0IDogSnNv
blRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJTdHJpY3RN
b2RlVGVzdCwgZHVwS2V5cykgewotICBKc29uOjpDaGFyUmVhZGVyQnVpbGRlciBiOwotICBKc29u
OjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0KLSAgICAgICJ7IFwicHJvcGVydHlc
IiA6IFwidmFsdWVcIiwgXCJrZXlcIiA6IFwidmFsMVwiLCBcImtleVwiIDogXCJ2YWwyXCIgfSI7
Ci0gIHsKLSAgICBiLnN0cmljdE1vZGUoJmIuc2V0dGluZ3NfKTsKLSAgICBKc29uOjpDaGFyUmVh
ZGVyKiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246OlN0cmluZyBlcnJzOwot
ICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwg
JnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAgICBKU09OVEVTVF9B
U1NFUlRfU1RSSU5HX0VRVUFMKCIqIExpbmUgMSwgQ29sdW1uIDQxXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICBEdXBsaWNhdGUga2V5OiAna2V5J1xuIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgidmFsMSIsIHJvb3RbImtleSJdKTsgLy8gc28gZmFyCi0gICAgZGVsZXRlIHJlYWRlcjsKLSAg
fQotfQotc3RydWN0IENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QgOiBKc29uVGVzdDo6VGVzdENh
c2Uge307Ci0KLUpTT05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwgaXNz
dWUxNjQpIHsKLSAgLy8gVGhpcyBpcyBpbnRlcnByZXRlZCBhcyBhIHN0cmluZyB2YWx1ZSBmb2xs
b3dlZCBieSBhIGNvbG9uLgotICBKc29uOjpDaGFyUmVhZGVyQnVpbGRlciBiOwotICBKc29uOjpW
YWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0gIiBcInByb3BlcnR5XCIgOiBcInZhbHVl
XCIgfSI7Ci0gIHsKLSAgICBiLnNldHRpbmdzX1siZmFpbElmRXh0cmEiXSA9IGZhbHNlOwotICAg
IEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gICAgSnNvbjo6
U3RyaW5nIGVycnM7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6
OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0g
ICAgSlNPTlRFU1RfQVNTRVJUKGVycnMuZW1wdHkoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKCJwcm9wZXJ0eSIsIHJvb3QpOwotICAgIGRlbGV0ZSByZWFkZXI7Ci0gIH0KLSAgewotICAg
IGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgICBKc29uOjpDaGFyUmVhZGVy
KiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246OlN0cmluZyBlcnJzOwotICAg
IGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJv
b3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAgICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKGVycnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
KiBMaW5lIDEsIENvbHVtbiAxM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgRXh0cmEgbm9uLXdoaXRlc3BhY2UgYWZ0ZXIgSlNPTiB2YWx1ZS5cbiIpOwotICAgIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgicHJvcGVydHkiLCByb290KTsKLSAgICBkZWxldGUgcmVhZGVyOwot
ICB9Ci0gIHsKLSAgICBiLnNldHRpbmdzX1siZmFpbElmRXh0cmEiXSA9IGZhbHNlOwotICAgIGIu
c3RyaWN0TW9kZSgmYi5zZXR0aW5nc18pOwotICAgIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihi
Lm5ld0NoYXJSZWFkZXIoKSk7Ci0gICAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gICAgYm9vbCBvayA9
IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMp
OwotICAgIEpTT05URVNUX0FTU0VSVCghb2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdf
RVFVQUwoZXJycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIExpbmUgMSwg
Q29sdW1uIDEzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBFeHRyYSBu
b24td2hpdGVzcGFjZSBhZnRlciBKU09OIHZhbHVlLlxuIik7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKCJwcm9wZXJ0eSIsIHJvb3QpOwotICAgIGRlbGV0ZSByZWFkZXI7Ci0gIH0KLX0KLUpT
T05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwgaXNzdWUxMDcpIHsKLSAg
Ly8gVGhpcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBpbnQgdmFsdWUgZm9sbG93ZWQgYnkgYSBjb2xv
bi4KLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAg
Y2hhciBjb25zdCBkb2NbXSA9ICIxOjI6MyI7Ci0gIGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJd
ID0gdHJ1ZTsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsK
LSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9j
ICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFv
ayk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiogTGluZSAxLCBDb2x1bW4gMlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEV4dHJhIG5vbi13aGl0ZXNwYWNl
IGFmdGVyIEpTT04gdmFsdWUuXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cnMpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMSwgcm9vdC5hc0ludCgpKTsKLSAgZGVsZXRl
IHJlYWRlcjsKLX0KLUpTT05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwg
Y29tbWVudEFmdGVyT2JqZWN0KSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIEpz
b246OlZhbHVlIHJvb3Q7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsgXCJwcm9wZXJ0
eVwiIDogXCJ2YWx1ZVwiIH0gLy90cmFpbGluZ1xuLy9jb21tZW50XG4iOwotICAgIGIuc2V0dGlu
Z3NfWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgICBKc29uOjpDaGFyUmVhZGVyKiByZWFkZXIo
Yi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246OlN0cmluZyBlcnJzOwotICAgIGJvb2wgb2sg
PSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJz
KTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdf
RVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgidmFsdWUiLCByb290
WyJwcm9wZXJ0eSJdKTsKLSAgICBkZWxldGUgcmVhZGVyOwotICB9Ci19Ci1KU09OVEVTVF9GSVhU
VVJFKENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGNvbW1lbnRBZnRlckFycmF5KSB7Ci0gIEpz
b246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIGNoYXIgY29u
c3QgZG9jW10gPSAiWyBcInByb3BlcnR5XCIgLCBcInZhbHVlXCIgXSAvL3RyYWlsaW5nXG4vL2Nv
bW1lbnRcbiI7Ci0gIGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgSnNvbjo6
Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAgSnNvbjo6U3RyaW5nIGVy
cnM7Ci0gIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9j
KSwgJnJvb3QsICZlcnJzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgidmFs
dWUiLCByb290WzF1XSk7Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci1KU09OVEVTVF9GSVhUVVJFKENo
YXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGNvbW1lbnRBZnRlckJvb2wpIHsKLSAgSnNvbjo6Q2hh
clJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgY2hhciBjb25zdCBkb2Nb
XSA9ICIgdHJ1ZSAvKnRyYWlsaW5nXG5jb21tZW50Ki8iOwotICBiLnNldHRpbmdzX1siZmFpbElm
RXh0cmEiXSA9IHRydWU7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFk
ZXIoKSk7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShk
b2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gIEpTT05URVNUX0FT
U0VSVChvayk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcm9vdC5hc0Jvb2woKSk7Ci0gIGRlbGV0ZSByZWFk
ZXI7Ci19Ci1zdHJ1Y3QgQ2hhclJlYWRlckFsbG93RHJvcE51bGxUZXN0IDogSnNvblRlc3Q6OlRl
c3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJBbGxvd0Ryb3BOdWxsVGVz
dCwgaXNzdWUxNzgpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgYi5zZXR0aW5n
c19bImFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRlcnMiXSA9IHRydWU7Ci0gIEpzb246OlZhbHVl
IHJvb3Q7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBKc29uOjpDaGFyUmVhZGVyKiByZWFkZXIo
Yi5uZXdDaGFyUmVhZGVyKCkpOwotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJ7XCJhXCI6
LFwiYlwiOnRydWV9IjsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0
ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9rKTsK
LSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIiLCBlcnJzKTsKLSAgICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoMnUsIHJvb3Quc2l6ZSgpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoSnNvbjo6bnVsbFZhbHVlLCByb290LmdldCgiYSIsIHRydWUpKTsKLSAgfQotICB7Ci0gICAg
Y2hhciBjb25zdCBkb2NbXSA9ICJ7XCJhXCI6fSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFy
c2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05U
RVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJy
cyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDF1LCByb290LnNpemUoKSk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKEpzb246Om51bGxWYWx1ZSwgcm9vdC5nZXQoImEiLCB0cnVlKSk7
Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10gPSAiW10iOwotICAgIGJvb2wgb2sgPSBy
ZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsK
LSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVChlcnJzLmVtcHR5
KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwdSwgcm9vdC5zaXplKCkpOwotICAgIEpT
T05URVNUX0FTU0VSVF9FUVVBTChKc29uOjphcnJheVZhbHVlLCByb290KTsKLSAgfQotICB7Ci0g
ICAgY2hhciBjb25zdCBkb2NbXSA9ICJbbnVsbF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBh
cnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09O
VEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVChlcnJzLmVtcHR5KCkpOwotICAg
IEpTT05URVNUX0FTU0VSVF9FUVVBTCgxdSwgcm9vdC5zaXplKCkpOwotICB9Ci0gIHsKLSAgICBj
aGFyIGNvbnN0IGRvY1tdID0gIlssXSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9j
LCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FT
U0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0g
ICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gIH0KLSAgewotICAg
IGNoYXIgY29uc3QgZG9jW10gPSAiWywsLF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNl
KGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVT
VF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIsIGVycnMp
OwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCg0dSwgcm9vdC5zaXplKCkpOwotICB9Ci0gIHsK
LSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIltudWxsLF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXIt
PnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBK
U09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIs
IGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgydSwgcm9vdC5zaXplKCkpOwotICB9
Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIlssbnVsbF0iOwotICAgIGJvb2wgb2sgPSBy
ZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsK
LSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVChlcnJzLmVtcHR5
KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgydSwgcm9vdC5zaXplKCkpOwotICB9Ci0g
IHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIlssLF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXIt
PnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBK
U09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIs
IGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgzdSwgcm9vdC5zaXplKCkpOwotICB9
Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIltudWxsLCxdIjsKLSAgICBib29sIG9rID0g
cmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VR
VUFMKCIiLCBlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoM3UsIHJvb3Quc2l6ZSgp
KTsKLSAgfQotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJbLG51bGwsXSI7Ci0gICAgYm9v
bCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwg
JmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NU
UklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDN1LCByb290
LnNpemUoKSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10gPSAiWywsbnVsbF0iOwot
ICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwg
JnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FT
U0VSVChlcnJzLmVtcHR5KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgzdSwgcm9vdC5z
aXplKCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIltbXSwsLF0iOwotICAg
IGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJv
b3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCg0dSwg
cm9vdC5zaXplKCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjphcnJheVZhbHVl
LCByb290WzB1XSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10gPSAiWyxbXSwsXSI7
Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2Mp
LCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KDR1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OmFycmF5
VmFsdWUsIHJvb3RbMXVdKTsKLSAgfQotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJbLCws
W11dIjsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVu
KGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgICBKU09O
VEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoNHUs
IHJvb3Quc2l6ZSgpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6YXJyYXlWYWx1
ZSwgcm9vdFszdV0pOwotICB9Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBDaGFyUmVh
ZGVyQWxsb3dTaW5nbGVRdW90ZXNUZXN0IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09O
VEVTVF9GSVhUVVJFKENoYXJSZWFkZXJBbGxvd1NpbmdsZVF1b3Rlc1Rlc3QsIGlzc3VlMTgyKSB7
Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIGIuc2V0dGluZ3NfWyJhbGxvd1Npbmds
ZVF1b3RlcyJdID0gdHJ1ZTsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgSnNvbjo6U3RyaW5nIGVy
cnM7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIHsK
LSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsnYSc6dHJ1ZSxcImJcIjp0cnVlfSI7Ci0gICAgYm9v
bCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwg
JmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NU
UklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290
LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHJvb3QuZ2V0KCJhIiwg
ZmFsc2UpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcm9vdC5nZXQoImIiLCBm
YWxzZSkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsnYSc6ICd4JywgXCJi
XCI6J3knfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0
cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTCgieCIsIHJvb3RbImEiXS5hc1N0cmluZygpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RS
SU5HX0VRVUFMKCJ5Iiwgcm9vdFsiYiJdLmFzU3RyaW5nKCkpOwotICB9Ci0gIGRlbGV0ZSByZWFk
ZXI7Ci19Ci0KLXN0cnVjdCBDaGFyUmVhZGVyQWxsb3daZXJvZXNUZXN0IDogSnNvblRlc3Q6OlRl
c3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJBbGxvd1plcm9lc1Rlc3Qs
IGlzc3VlMTc2KSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIGIuc2V0dGluZ3Nf
WyJhbGxvd1NpbmdsZVF1b3RlcyJdID0gdHJ1ZTsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgSnNv
bjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFk
ZXIoKSk7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsnYSc6dHJ1ZSxcImJcIjp0cnVl
fSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihk
b2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHJv
b3QuZ2V0KCJhIiwgZmFsc2UpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcm9v
dC5nZXQoImIiLCBmYWxzZSkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsn
YSc6ICd4JywgXCJiXCI6J3knfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBk
b2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VS
VChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNT
RVJUX1NUUklOR19FUVVBTCgieCIsIHJvb3RbImEiXS5hc1N0cmluZygpKTsKLSAgICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ5Iiwgcm9vdFsiYiJdLmFzU3RyaW5nKCkpOwotICB9Ci0g
IGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBDaGFyUmVhZGVyQWxsb3dTcGVjaWFsRmxvYXRz
VGVzdCA6IEpzb25UZXN0OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShDaGFyUmVh
ZGVyQWxsb3dTcGVjaWFsRmxvYXRzVGVzdCwgaXNzdWUyMDkpIHsKLSAgSnNvbjo6Q2hhclJlYWRl
ckJ1aWxkZXIgYjsKLSAgYi5zZXR0aW5nc19bImFsbG93U3BlY2lhbEZsb2F0cyJdID0gdHJ1ZTsK
LSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OkNoYXJS
ZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRv
Y1tdID0gIntcImFcIjpOYU4sXCJiXCI6SW5maW5pdHksXCJjXCI6LUluZmluaXR5fSI7Ci0gICAg
Ym9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9v
dCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDN1LCBy
b290LnNpemUoKSk7Ci0gICAgZG91YmxlIG4gPSByb290WyJhIl0uYXNEb3VibGUoKTsKLSAgICBK
U09OVEVTVF9BU1NFUlQoc3RkOjppc25hbihuKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgcm9vdC5nZXQoImIiLCAwLjApKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcm9vdC5nZXQoImMiLCAwLjApKTsKLSAgfQotCi0gIHN0cnVjdCBUZXN0
RGF0YSB7Ci0gICAgaW50IGxpbmU7Ci0gICAgYm9vbCBvazsKLSAgICBKc29uOjpTdHJpbmcgaW47
Ci0gIH07Ci0gIGNvbnN0IFRlc3REYXRhIHRlc3RfZGF0YVtdID0gewotICAgICAge19fTElORV9f
LCB0cnVlLCAie1wiYVwiOjl9In0sICAgICAgICAgIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNl
LCAie1wiYVwiOjBJbmZpbml0eX0ifSwgLy8KLSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJh
XCI6MUluZmluaXR5fSJ9LCAvLwotICAgICAge19fTElORV9fLCBmYWxzZSwgIntcImFcIjo5SW5m
aW5pdHl9In0sIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOjBuZmluaXR5fSJ9
LCAgLy8KLSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJhXCI6MW5maW5pdHl9In0sICAvLwot
ICAgICAge19fTElORV9fLCBmYWxzZSwgIntcImFcIjo5bmZpbml0eX0ifSwgIC8vCi0gICAgICB7
X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOm5maW5pdHl9In0sICAgLy8KLSAgICAgIHtfX0xJTkVf
XywgZmFsc2UsICJ7XCJhXCI6Lm5maW5pdHl9In0sICAvLwotICAgICAge19fTElORV9fLCBmYWxz
ZSwgIntcImFcIjo5bmZpbml0eX0ifSwgIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wi
YVwiOi1uZmluaXR5fSJ9LCAgLy8KLSAgICAgIHtfX0xJTkVfXywgdHJ1ZSwgIntcImFcIjpJbmZp
bml0eX0ifSwgICAvLwotICAgICAge19fTElORV9fLCBmYWxzZSwgIntcImFcIjouSW5maW5pdHl9
In0sIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOl9JbmZpbml0eX0ifSwgLy8K
LSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJhXCI6X25maW5pdHl9In0sICAvLwotICAgICAg
e19fTElORV9fLCB0cnVlLCAie1wiYVwiOi1JbmZpbml0eX0ifSAgIC8vCi0gIH07Ci0gIGZvciAo
Y29uc3QgYXV0byYgdGQgOiB0ZXN0X2RhdGEpIHsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJz
ZSgmKnRkLmluLmJlZ2luKCksICYqdGQuaW4uYmVnaW4oKSArIHRkLmluLnNpemUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VS
VCh0ZC5vayA9PSBvaykgPDwgImxpbmU6IiA8PCB0ZC5saW5lIDw8ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGV4cGVjdGVkOiB7IgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIm9rOiIgPDwgdGQub2sgPDwgIiwgaW46XCciIDw8IHRkLmlu
IDw8ICJcJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBhY3R1YWw6IHsiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAib2s6IiA8PCBvayA8PCAifVxuIjsKLSAgfQotCi0g
IHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIntcInBvc0luZlwiOiBJbmZpbml0eSwgXCJOZWdJ
bmZcIjogLUluZmluaXR5fSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2Mg
KyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChv
ayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgcm9vdFsicG9zSW5mIl0uYXNEb3VibGUoKSk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbIk5lZ0luZiJdLmFzRG91YmxlKCkpOwot
ICB9Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBCdWlsZGVyVGVzdCA6IEpzb25UZXN0
OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShCdWlsZGVyVGVzdCwgc2V0dGluZ3Mp
IHsKLSAgewotICAgIEpzb246OlZhbHVlIGVycnM7Ci0gICAgSnNvbjo6Q2hhclJlYWRlckJ1aWxk
ZXIgcmI7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCByYi5zZXR0aW5nc18uaXNN
ZW1iZXIoImZvbyIpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcmIudmFsaWRh
dGUoJmVycnMpKTsKLSAgICByYlsiZm9vIl0gPSAiYmFyIjsKLSAgICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwodHJ1ZSwgcmIuc2V0dGluZ3NfLmlzTWVtYmVyKCJmb28iKSk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGZhbHNlLCByYi52YWxpZGF0ZSgmZXJycykpOwotICB9Ci0gIHsKLSAgICBK
c29uOjpWYWx1ZSBlcnJzOwotICAgIEpzb246OlN0cmVhbVdyaXRlckJ1aWxkZXIgd2I7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCB3Yi5zZXR0aW5nc18uaXNNZW1iZXIoImZvbyIp
KTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgd2IudmFsaWRhdGUoJmVycnMpKTsK
LSAgICB3YlsiZm9vIl0gPSAiYmFyIjsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwg
d2Iuc2V0dGluZ3NfLmlzTWVtYmVyKCJmb28iKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KGZhbHNlLCB3Yi52YWxpZGF0ZSgmZXJycykpOwotICB9Ci19Ci0KLXN0cnVjdCBJdGVyYXRvclRl
c3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05URVNUX0ZJWFRVUkUoSXRlcmF0b3JU
ZXN0LCBkaXN0YW5jZSkgewotICBKc29uOjpWYWx1ZSBqc29uOwotICBqc29uWyJrMSJdID0gImEi
OwotICBqc29uWyJrMiJdID0gImIiOwotICBpbnQgZGlzdCA9IDA7Ci0gIEpzb246OlN0cmluZyBz
dHI7Ci0gIGZvciAoSnNvbjo6VmFsdWVJdGVyYXRvciBpdCA9IGpzb24uYmVnaW4oKTsgaXQgIT0g
anNvbi5lbmQoKTsgKytpdCkgewotICAgIGRpc3QgPSBpdCAtIGpzb24uYmVnaW4oKTsKLSAgICBz
dHIgPSBpdC0+YXNTdHJpbmcoKS5jX3N0cigpOwotICB9Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgxLCBkaXN0KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiYiIsIHN0cik7Ci19
Ci0KLUpTT05URVNUX0ZJWFRVUkUoSXRlcmF0b3JUZXN0LCBuYW1lcykgewotICBKc29uOjpWYWx1
ZSBqc29uOwotICBqc29uWyJrMSJdID0gImEiOwotICBqc29uWyJrMiJdID0gImIiOwotICBKc29u
OjpWYWx1ZUl0ZXJhdG9yIGl0ID0ganNvbi5iZWdpbigpOwotICBKU09OVEVTVF9BU1NFUlQoaXQg
IT0ganNvbi5lbmQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgiazEi
KSwgaXQua2V5KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJrMSIsIGl0Lm5h
bWUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMSwgaXQuaW5kZXgoKSk7Ci0gICsraXQ7
Ci0gIEpTT05URVNUX0FTU0VSVChpdCAhPSBqc29uLmVuZCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKEpzb246OlZhbHVlKCJrMiIpLCBpdC5rZXkoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9T
VFJJTkdfRVFVQUwoImsyIiwgaXQubmFtZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0x
LCBpdC5pbmRleCgpKTsKLSAgKytpdDsKLSAgSlNPTlRFU1RfQVNTRVJUKGl0ID09IGpzb24uZW5k
KCkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKEl0ZXJhdG9yVGVzdCwgaW5kZXhlcykgewotICBK
c29uOjpWYWx1ZSBqc29uOwotICBqc29uWzBdID0gImEiOwotICBqc29uWzFdID0gImIiOwotICBK
c29uOjpWYWx1ZUl0ZXJhdG9yIGl0ID0ganNvbi5iZWdpbigpOwotICBKU09OVEVTVF9BU1NFUlQo
aXQgIT0ganNvbi5lbmQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZShK
c29uOjpBcnJheUluZGV4KDApKSwgaXQua2V5KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5H
X0VRVUFMKCIiLCBpdC5uYW1lKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgaXQuaW5k
ZXgoKSk7Ci0gICsraXQ7Ci0gIEpTT05URVNUX0FTU0VSVChpdCAhPSBqc29uLmVuZCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKEpzb246OkFycmF5SW5kZXgoMSkpLCBp
dC5rZXkoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIsIGl0Lm5hbWUoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLCBpdC5pbmRleCgpKTsKLSAgKytpdDsKLSAgSlNP
TlRFU1RfQVNTRVJUKGl0ID09IGpzb24uZW5kKCkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKEl0
ZXJhdG9yVGVzdCwgY29uc3QpIHsKLSAgSnNvbjo6VmFsdWUgY29uc3QgdjsKLSAgSlNPTlRFU1Rf
QVNTRVJUX1RIUk9XUygKLSAgICAgIEpzb246OlZhbHVlOjppdGVyYXRvciBpdCh2LmJlZ2luKCkp
IC8vIENvbXBpbGUsIGJ1dCB0aHJvdy4KLSAgKTsKLQotICBKc29uOjpWYWx1ZSB2YWx1ZTsKLQot
ICBmb3IgKGludCBpID0gOTsgaSA8IDEyOyArK2kpIHsKLSAgICBKc29uOjpPU3RyaW5nU3RyZWFt
IG91dDsKLSAgICBvdXQgPDwgc3RkOjpzZXR3KDIpIDw8IGk7Ci0gICAgSnNvbjo6U3RyaW5nIHN0
ciA9IG91dC5zdHIoKTsKLSAgICB2YWx1ZVtzdHJdID0gc3RyOwotICB9Ci0KLSAgSnNvbjo6T1N0
cmluZ1N0cmVhbSBvdXQ7Ci0gIC8vIGluIG9sZCBjb2RlLCB0aGlzIHdpbGwgZ2V0IGEgY29tcGls
ZSBlcnJvcgotICBKc29uOjpWYWx1ZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHZhbHVlLmJlZ2lu
KCk7Ci0gIGZvciAoOyBpdGVyICE9IHZhbHVlLmVuZCgpOyArK2l0ZXIpIHsKLSAgICBvdXQgPDwg
Kml0ZXIgPDwgJywnOwotICB9Ci0gIEpzb246OlN0cmluZyBleHBlY3RlZCA9ICJcIiA5XCIsXCIx
MFwiLFwiMTFcIiwiOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCBv
dXQuc3RyKCkpOwotfQotCi1zdHJ1Y3QgUlZhbHVlVGVzdCA6IEpzb25UZXN0OjpUZXN0Q2FzZSB7
fTsKLQotSlNPTlRFU1RfRklYVFVSRShSVmFsdWVUZXN0LCBtb3ZlQ29uc3RydWN0aW9uKSB7Ci0g
IEpzb246OlZhbHVlIGpzb247Ci0gIGpzb25bImtleSJdID0gInZhbHVlIjsKLSAgSnNvbjo6VmFs
dWUgbW92ZWQgPSBzdGQ6Om1vdmUoanNvbik7Ci0gIEpTT05URVNUX0FTU0VSVChtb3ZlZCAhPSBq
c29uKTsgLy8gUG9zc2libHkgbm90IG51bGxWYWx1ZTsgZGVmaW5pdGVseSBub3QKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcXVhbC4KLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKEpzb246Om9iamVjdFZhbHVlLCBtb3ZlZC50eXBlKCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoSnNvbjo6c3RyaW5nVmFsdWUsIG1vdmVkWyJrZXkiXS50eXBlKCkpOwotfQotCi1zdHJ1
Y3QgRnV6elRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLS8vIEJ1aWxkIGFuZCBydW4g
dGhlIGZ1enogdGVzdCB3aXRob3V0IGFueSBmdXp6ZXIsIHNvIHRoYXQgaXQncyBndWFyYW50ZWVk
IG5vdAotLy8gZ28gb3V0IG9mIGRhdGUsIGV2ZW4gaWYgaXQncyBuZXZlciBydW4gYXMgYW4gYWN0
dWFsIGZ1enogdGVzdC4KLUpTT05URVNUX0ZJWFRVUkUoRnV6elRlc3QsIGZ1enpEb2VzbnRDcmFz
aCkgewotICBjb25zdCBzdGQ6OnN0cmluZyBleGFtcGxlID0gInt9IjsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKAotICAgICAgMCwKLSAgICAgIExMVk1GdXp6ZXJUZXN0T25lSW5wdXQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZXhhbXBsZS5jX3N0cigpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhhbXBsZS5zaXplKCkpKTsKLX0KLQotaW50IG1haW4oaW50IGFy
Z2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkgewotICBKc29uVGVzdDo6UnVubmVyIHJ1bm5lcjsKLSAg
SlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY2hlY2tOb3JtYWxp
emVGbG9hdGluZ1BvaW50U3RyKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IFZhbHVlVGVzdCwgbWVtYmVyQ291bnQpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1
bm5lciwgVmFsdWVUZXN0LCBvYmplY3RzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShy
dW5uZXIsIFZhbHVlVGVzdCwgYXJyYXlzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShy
dW5uZXIsIFZhbHVlVGVzdCwgYXJyYXlJc3N1ZTI1Mik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJ
WFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG51bGwpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhU
VVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBzdHJpbmdzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklY
VFVSRShydW5uZXIsIFZhbHVlVGVzdCwgYm9vbHMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhU
VVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBpbnRlZ2Vycyk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJ
WFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG5vbkludGVnZXJzKTsKLSAgSlNPTlRFU1RfUkVHSVNU
RVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFyZU51bGwpOwotICBKU09OVEVTVF9S
RUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBjb21wYXJlSW50KTsKLSAgSlNPTlRF
U1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFyZVVJbnQpOwotICBK
U09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBjb21wYXJlRG91Ymxl
KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFy
ZVN0cmluZyk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3Qs
IGNvbXBhcmVCb29sZWFuKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZh
bHVlVGVzdCwgY29tcGFyZUFycmF5KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5u
ZXIsIFZhbHVlVGVzdCwgY29tcGFyZU9iamVjdCk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRV
UkUocnVubmVyLCBWYWx1ZVRlc3QsIGNvbXBhcmVUeXBlKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgQ29weU9iamVjdCk7Ci0gIEpTT05URVNUX1JFR0lT
VEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG9mZnNldEFjY2Vzc29ycyk7Ci0gIEpTT05U
RVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIHR5cGVDaGVja3NUaHJvd0V4
Y2VwdGlvbnMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0
LCBTdGF0aWNTdHJpbmcpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFs
dWVUZXN0LCBXaWRlU3RyaW5nKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IFZhbHVlVGVzdCwgQ29tbWVudEJlZm9yZSk7Ci0gIC8vIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRV
UkUocnVubmVyLCBWYWx1ZVRlc3QsIG51bGxzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVS
RShydW5uZXIsIFZhbHVlVGVzdCwgemVyb2VzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVS
RShydW5uZXIsIFZhbHVlVGVzdCwgemVyb2VzSW5LZXlzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgc3BlY2lhbEZsb2F0cyk7Ci0gIEpTT05URVNUX1JF
R0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIHByZWNpc2lvbik7Ci0KLSAgSlNPTlRF
U1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFdyaXRlclRlc3QsIGRyb3BOdWxsUGxhY2Vob2xk
ZXJzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFN0cmVhbVdyaXRlclRl
c3QsIGRyb3BOdWxsUGxhY2Vob2xkZXJzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShy
dW5uZXIsIFN0cmVhbVdyaXRlclRlc3QsIHdyaXRlWmVyb2VzKTsKLQotICBKU09OVEVTVF9SRUdJ
U1RFUl9GSVhUVVJFKHJ1bm5lciwgUmVhZGVyVGVzdCwgcGFyc2VXaXRoTm9FcnJvcnMpOwotICBK
U09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgUmVhZGVyVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZVdpdGhOb0Vycm9yc1Rlc3RpbmdPZmZzZXRzKTsKLSAgSlNP
TlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFJlYWRlclRlc3QsIHBhcnNlV2l0aE9uZUVy
cm9yKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFJlYWRlclRlc3QsIHBh
cnNlQ2hpbmVzZVdpdGhPbmVFcnJvcik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVu
bmVyLCBSZWFkZXJUZXN0LCBwYXJzZVdpdGhEZXRhaWxFcnJvcik7Ci0KLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJUZXN0LCBwYXJzZVdpdGhOb0Vycm9ycyk7
Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBDaGFyUmVhZGVyVGVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVdpdGhOb0Vycm9yc1Rlc3RpbmdPZmZzZXRz
KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJUZXN0LCBw
YXJzZVdpdGhPbmVFcnJvcik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBD
aGFyUmVhZGVyVGVzdCwgcGFyc2VDaGluZXNlV2l0aE9uZUVycm9yKTsKLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJUZXN0LCBwYXJzZVdpdGhEZXRhaWxFcnJv
cik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBDaGFyUmVhZGVyVGVzdCwg
cGFyc2VXaXRoU3RhY2tMaW1pdCk7Ci0KLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5u
ZXIsIENoYXJSZWFkZXJTdHJpY3RNb2RlVGVzdCwgZHVwS2V5cyk7Ci0KLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGlzc3VlMTY0
KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJGYWlsSWZF
eHRyYVRlc3QsIGlzc3VlMTA3KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWVudEFmdGVyT2JqZWN0KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWVudEFmdGVyQXJyYXkpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwg
Q2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21tZW50QWZ0ZXJCb29sKTsKLQotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwg
Q2hhclJlYWRlckFsbG93RHJvcE51bGxUZXN0LCBpc3N1ZTE3OCk7Ci0KLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJBbGxvd1NpbmdsZVF1b3Rlc1Rlc3QsIGlz
c3VlMTgyKTsKLQotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgQ2hhclJlYWRl
ckFsbG93WmVyb2VzVGVzdCwgaXNzdWUxNzYpOwotCi0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRV
UkUocnVubmVyLCBDaGFyUmVhZGVyQWxsb3dTcGVjaWFsRmxvYXRzVGVzdCwgaXNzdWUyMDkpOwot
Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBCdWlsZGVyVGVzdCwgc2V0dGlu
Z3MpOwotCi0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBJdGVyYXRvclRlc3Qs
IGRpc3RhbmNlKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIEl0ZXJhdG9y
VGVzdCwgbmFtZXMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgSXRlcmF0
b3JUZXN0LCBpbmRleGVzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIEl0
ZXJhdG9yVGVzdCwgY29uc3QpOwotCi0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVy
LCBSVmFsdWVUZXN0LCBtb3ZlQ29uc3RydWN0aW9uKTsKLQotICBKU09OVEVTVF9SRUdJU1RFUl9G
SVhUVVJFKHJ1bm5lciwgRnV6elRlc3QsIGZ1enpEb2VzbnRDcmFzaCk7Ci0KLSAgcmV0dXJuIHJ1
bm5lci5ydW5Db21tYW5kTGluZShhcmdjLCBhcmd2KTsKLX0KLQotI2lmIGRlZmluZWQoX19HTlVD
X18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvY2xlYW50ZXN0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9jbGVhbnRlc3RzLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzNmQ1YjliNDYxMDQ4YjI0MDU1YzFkNjhhMjdkNTgyYzczY2M4
MDg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9jbGVhbnRlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyBDb3B5
cmlnaHQgMjAwNyBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLSMg
RGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJl
ZCBhbmQKLSMgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLSMgU2VlIGZpbGUgTElD
RU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0
L0xJQ0VOU0UKLQotIiIiUmVtb3ZlcyBhbGwgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGVzdGluZy4i
IiIKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwotCi1wYXRocyA9IFtdCi1mb3IgcGF0dGVybiBp
biBbICcqLmFjdHVhbCcsICcqLmFjdHVhbC1yZXdyaXRlJywgJyoucmV3cml0ZScsICcqLnByb2Nl
c3Mtb3V0cHV0JyBdOgotICAgIHBhdGhzICs9IGdsb2IuZ2xvYignZGF0YS8nICsgcGF0dGVybikK
LQotZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgb3MudW5saW5rKHBhdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS9mYWlsX3Rlc3RfYXJyYXlfMDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL2Zh
aWxfdGVzdF9hcnJheV8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzJh
NmQwNzc0OTQ4M2E2YWJkNDU3NzZlZTk3ZTlmOWQzNDIwNzE4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL2ZhaWxfdGVzdF9hcnJh
eV8wMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyAxIDIgM10KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL2ZhaWxfdGVzdF9zdGFja19saW1pdC5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvZmFpbF90ZXN0X3N0YWNrX2xpbWl0Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc1MjRlMGJiYjk1NWNjNDE2ODU3ZjE2YzljODA2M2ZkMTg5OTA0NzkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvZmFp
bF90ZXN0X3N0YWNrX2xpbWl0Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W11dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAxLmV4cGVjdGVk
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTM0MWZmNzUzY2IzN2RlNzU2MGM3YTIzNWMzMTE1MTM2ZjU5NmU4Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2FycmF5XzAxLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
Lj1bXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmZTUxNDg4YzcwNjZmNjY4N2VmNjgwZDZiZmFhNGY3NzY4ZWYyMDVjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YXJyYXlfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVtdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAyLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9hcnJheV8wMi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYx
ZjI2MjNkZTA2YzhhMjRmMTgwYmMzYWE4ODQ4MjM1MGEwNjY5YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAy
LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPVtdCi0uWzBdPTEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDIuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfYXJyYXlfMDIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY2
MDg3M2QxMDMxMmY1OTZjNGRjMDU4NmZiNTQ4MzA5YzcxMjc2Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAy
Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bMV0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDMuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Fy
cmF5XzAzLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDhkYzE4ZWIx
ZTk3NDk1YTcwNGU5ODM2OTg4MmNhMzhhYjYwN2E2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDMuZXhwZWN0
ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLS49W10KLS5bMF09MQotLlsxXT0yCi0u
WzJdPTMKLS5bM109NAotLls0XT01CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Fy
cmF5XzAzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAzLmpzb24KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliM2Y5MjQ3NTU5MDUzOWMxYWY5YTk4MzJiOGE4MzZhNTI2
ZGE3MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotWyAxLCAyICwgIDMsNCw1XQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJh
eV8wNC5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQuZXhwZWN0ZWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNGFkZDk3OTQ2ZjdhZmQ2MDA5NDY3YmU0NDJm
ZTI1ZGVlMjdhZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNC5leHBlY3RlZAorKysgL2Rldi9udWxsCkBA
IC0xLDUgKzAsMCBAQAotLj1bXQotLlswXT0xCi0uWzFdPSJhYmMiCi0uWzJdPTEyLjMKLS5bM109
LTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWNjYTU0NmIyYzY0M2RlMTliNTRlOGU1YWRiYmQzMjMwZjYxZTQ2NC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Fy
cmF5XzA0Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bMSwgImFiYyIgLCAxMi4z
LCAtNF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDUuZXhwZWN0ZWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA1LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NmNmZjg3YzJhYjBiZTRmMDlhNWJlZGMzYTBiMjYxMDNhYzNkMTQ4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfYXJyYXlfMDUuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBA
QAotLj1bXQotLlswXT0xCi0uWzFdPTIKLS5bMl09MwotLlszXT00Ci0uWzRdPTUKLS5bNV09Ngot
Lls2XT03Ci0uWzddPTgKLS5bOF09OQotLls5XT0xMAotLlsxMF09MTEKLS5bMTFdPTEyCi0uWzEy
XT0xMwotLlsxM109MTQKLS5bMTRdPTE1Ci0uWzE1XT0xNgotLlsxNl09MTcKLS5bMTddPTE4Ci0u
WzE4XT0xOQotLlsxOV09MjAKLS5bMjBdPTIxCi0uWzIxXT0yMgotLlsyMl09MjMKLS5bMjNdPTI0
Ci0uWzI0XT0yNQotLlsyNV09MjYKLS5bMjZdPTI3Ci0uWzI3XT0yOAotLlsyOF09MjkKLS5bMjld
PTMwCi0uWzMwXT0zMQotLlszMV09MzIKLS5bMzJdPTMzCi0uWzMzXT0zNAotLlszNF09MzUKLS5b
MzVdPTM2Ci0uWzM2XT0zNwotLlszN109MzgKLS5bMzhdPTM5Ci0uWzM5XT00MAotLls0MF09NDEK
LS5bNDFdPTQyCi0uWzQyXT00MwotLls0M109NDQKLS5bNDRdPTQ1Ci0uWzQ1XT00NgotLls0Nl09
NDcKLS5bNDddPTQ4Ci0uWzQ4XT00OQotLls0OV09NTAKLS5bNTBdPTUxCi0uWzUxXT01MgotLls1
Ml09NTMKLS5bNTNdPTU0Ci0uWzU0XT01NQotLls1NV09NTYKLS5bNTZdPTU3Ci0uWzU3XT01OAot
Lls1OF09NTkKLS5bNTldPTYwCi0uWzYwXT02MQotLls2MV09NjIKLS5bNjJdPTYzCi0uWzYzXT02
NAotLls2NF09NjUKLS5bNjVdPTY2Ci0uWzY2XT02NwotLls2N109NjgKLS5bNjhdPTY5Ci0uWzY5
XT03MAotLls3MF09NzEKLS5bNzFdPTcyCi0uWzcyXT03MwotLls3M109NzQKLS5bNzRdPTc1Ci0u
Wzc1XT03NgotLls3Nl09NzcKLS5bNzddPTc4Ci0uWzc4XT03OQotLls3OV09ODAKLS5bODBdPTgx
Ci0uWzgxXT04MgotLls4Ml09ODMKLS5bODNdPTg0Ci0uWzg0XT04NQotLls4NV09ODYKLS5bODZd
PTg3Ci0uWzg3XT04OAotLls4OF09ODkKLS5bODldPTkwCi0uWzkwXT05MQotLls5MV09OTIKLS5b
OTJdPTkzCi0uWzkzXT05NAotLls5NF09OTUKLS5bOTVdPTk2Ci0uWzk2XT05NwotLls5N109OTgK
LS5bOThdPTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA1Lmpzb24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA1Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc4MDlkNmM5YTFhZDJmNzUzMzRkYzhmMmM4ODZkZjIzZTFjY2M5YmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9hcnJheV8wNS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWzEsIDIsIDMs
IDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5
LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMs
IDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0Nywg
NDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2
MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2
LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAs
IDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTldClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNi5leHBlY3Rl
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDYuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDVjOWY0OGVhYWNkNWFlZjgzYjc2ODRjZDA2OWU3NDhkZjJkNjk5ZmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9hcnJheV8wNi5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBA
QAotLj1bXQotLlswXT0iYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIgot
LlsxXT0iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYiIKLS5bMl09ImNjY2NjY2Nj
Y2NjY2NjY2NjY2NjY2NjIgotLlszXT0iZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJy
YXlfMDYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDYuanNvbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y2YzUxNmFmZGViMzA5YWM0MTk3NDcwNDllMTQ0OWNiYmQ5
ZGM5OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA2Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAg
QEAKLVsgImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIsIAotICAiYmJi
YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYiIsCi0gICJjY2NjY2NjY2NjY2NjY2NjY2Nj
Y2NjYyIsCi0gICJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkIiBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJy
YXlfMDcuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMmZhZmMwMTBl
MjBjMjVjZGZmMTQ3YmRjZmVmOTA4MzNlZTIzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5leHBlY3Rl
ZAorKysgL2Rldi9udWxsCkBAIC0xLDIxMjIgKzAsMCBAQAotLj1bXQotLlswXT1bXQotLlswXVsw
XT0iQSIKLS5bMF1bMV09MAotLlswXVsyXT0xCi0uWzBdWzNdPTIKLS5bMF1bNF09MwotLlswXVs1
XT00Ci0uWzBdWzZdPTUKLS5bMF1bN109NgotLlswXVs4XT03Ci0uWzBdWzldPTgKLS5bMF1bMTBd
PTkKLS5bMF1bMTFdPTEwCi0uWzBdWzEyXT0xMQotLlswXVsxM109MTIKLS5bMF1bMTRdPTEzCi0u
WzBdWzE1XT0xNAotLlswXVsxNl09MTUKLS5bMF1bMTddPTE2Ci0uWzBdWzE4XT0xNwotLlswXVsx
OV09MTgKLS5bMF1bMjBdPTE5Ci0uWzBdWzIxXT0yMAotLlswXVsyMl09MjEKLS5bMF1bMjNdPTIy
Ci0uWzBdWzI0XT0yMwotLlswXVsyNV09MjQKLS5bMF1bMjZdPTI1Ci0uWzBdWzI3XT0yNgotLlsw
XVsyOF09MjcKLS5bMF1bMjldPTI4Ci0uWzBdWzMwXT0yOQotLlswXVszMV09MzAKLS5bMF1bMzJd
PTMxCi0uWzBdWzMzXT0zMgotLlswXVszNF09MzMKLS5bMF1bMzVdPTM0Ci0uWzBdWzM2XT0zNQot
LlswXVszN109MzYKLS5bMF1bMzhdPTM3Ci0uWzBdWzM5XT0zOAotLlswXVs0MF09MzkKLS5bMF1b
NDFdPTQwCi0uWzBdWzQyXT00MQotLlswXVs0M109NDIKLS5bMF1bNDRdPTQzCi0uWzBdWzQ1XT00
NAotLlswXVs0Nl09NDUKLS5bMF1bNDddPTQ2Ci0uWzBdWzQ4XT00NwotLlswXVs0OV09NDgKLS5b
MF1bNTBdPTQ5Ci0uWzBdWzUxXT01MAotLlswXVs1Ml09NTEKLS5bMF1bNTNdPTUyCi0uWzBdWzU0
XT01MwotLlswXVs1NV09NTQKLS5bMF1bNTZdPTU1Ci0uWzBdWzU3XT01NgotLlswXVs1OF09NTcK
LS5bMF1bNTldPTU4Ci0uWzBdWzYwXT01OQotLlswXVs2MV09NjAKLS5bMF1bNjJdPTYxCi0uWzBd
WzYzXT02MgotLlswXVs2NF09NjMKLS5bMF1bNjVdPTY0Ci0uWzBdWzY2XT02NQotLlswXVs2N109
NjYKLS5bMF1bNjhdPTY3Ci0uWzBdWzY5XT02OAotLlswXVs3MF09NjkKLS5bMF1bNzFdPTcwCi0u
WzBdWzcyXT03MQotLlswXVs3M109NzIKLS5bMF1bNzRdPTczCi0uWzBdWzc1XT03NAotLlswXVs3
Nl09NzUKLS5bMF1bNzddPTc2Ci0uWzBdWzc4XT03NwotLlswXVs3OV09NzgKLS5bMF1bODBdPTc5
Ci0uWzBdWzgxXT04MAotLlswXVs4Ml09ODEKLS5bMF1bODNdPTgyCi0uWzBdWzg0XT04MwotLlsw
XVs4NV09ODQKLS5bMF1bODZdPTg1Ci0uWzBdWzg3XT04NgotLlswXVs4OF09ODcKLS5bMF1bODld
PTg4Ci0uWzBdWzkwXT04OQotLlswXVs5MV09OTAKLS5bMF1bOTJdPTkxCi0uWzBdWzkzXT05Mgot
LlswXVs5NF09OTMKLS5bMF1bOTVdPTk0Ci0uWzBdWzk2XT05NQotLlswXVs5N109OTYKLS5bMF1b
OThdPTk3Ci0uWzBdWzk5XT05OAotLlswXVsxMDBdPTk5Ci0uWzBdWzEwMV09MTAwCi0uWzBdWzEw
Ml09MTAxCi0uWzBdWzEwM109MTAyCi0uWzBdWzEwNF09MTAzCi0uWzBdWzEwNV09MTA0Ci0uWzBd
WzEwNl09MTA1Ci0uWzBdWzEwN109MTA2Ci0uWzBdWzEwOF09MTA3Ci0uWzBdWzEwOV09MTA4Ci0u
WzBdWzExMF09MTA5Ci0uWzBdWzExMV09MTEwCi0uWzBdWzExMl09MTExCi0uWzBdWzExM109MTEy
Ci0uWzBdWzExNF09MTEzCi0uWzBdWzExNV09MTE0Ci0uWzBdWzExNl09MTE1Ci0uWzBdWzExN109
MTE2Ci0uWzBdWzExOF09MTE3Ci0uWzBdWzExOV09MTE4Ci0uWzBdWzEyMF09MTE5Ci0uWzBdWzEy
MV09MTIwCi0uWzBdWzEyMl09MTIxCi0uWzBdWzEyM109MTIyCi0uWzBdWzEyNF09MTIzCi0uWzBd
WzEyNV09MTI0Ci0uWzBdWzEyNl09MTI1Ci0uWzBdWzEyN109MTI2Ci0uWzBdWzEyOF09MTI3Ci0u
WzBdWzEyOV09MTI4Ci0uWzBdWzEzMF09MTI5Ci0uWzBdWzEzMV09MTMwCi0uWzBdWzEzMl09MTMx
Ci0uWzBdWzEzM109MTMyCi0uWzBdWzEzNF09MTMzCi0uWzBdWzEzNV09MTM0Ci0uWzBdWzEzNl09
MTM1Ci0uWzBdWzEzN109MTM2Ci0uWzBdWzEzOF09MTM3Ci0uWzBdWzEzOV09MTM4Ci0uWzBdWzE0
MF09MTM5Ci0uWzBdWzE0MV09MTQwCi0uWzBdWzE0Ml09MTQxCi0uWzBdWzE0M109MTQyCi0uWzBd
WzE0NF09MTQzCi0uWzBdWzE0NV09MTQ0Ci0uWzBdWzE0Nl09MTQ1Ci0uWzBdWzE0N109MTQ2Ci0u
WzBdWzE0OF09MTQ3Ci0uWzBdWzE0OV09MTQ4Ci0uWzBdWzE1MF09MTQ5Ci0uWzBdWzE1MV09MTUw
Ci0uWzBdWzE1Ml09MTUxCi0uWzBdWzE1M109MTUyCi0uWzBdWzE1NF09MTUzCi0uWzBdWzE1NV09
MTU0Ci0uWzBdWzE1Nl09MTU1Ci0uWzBdWzE1N109MTU2Ci0uWzBdWzE1OF09MTU3Ci0uWzBdWzE1
OV09MTU4Ci0uWzBdWzE2MF09MTU5Ci0uWzBdWzE2MV09MTYwCi0uWzBdWzE2Ml09MTYxCi0uWzBd
WzE2M109MTYyCi0uWzBdWzE2NF09MTYzCi0uWzBdWzE2NV09MTY0Ci0uWzBdWzE2Nl09MTY1Ci0u
WzBdWzE2N109MTY2Ci0uWzBdWzE2OF09MTY3Ci0uWzBdWzE2OV09MTY4Ci0uWzBdWzE3MF09MTY5
Ci0uWzBdWzE3MV09MTcwCi0uWzBdWzE3Ml09MTcxCi0uWzBdWzE3M109MTcyCi0uWzBdWzE3NF09
MTczCi0uWzBdWzE3NV09MTc0Ci0uWzBdWzE3Nl09MTc1Ci0uWzBdWzE3N109MTc2Ci0uWzBdWzE3
OF09MTc3Ci0uWzBdWzE3OV09MTc4Ci0uWzBdWzE4MF09MTc5Ci0uWzBdWzE4MV09MTgwCi0uWzBd
WzE4Ml09MTgxCi0uWzBdWzE4M109MTgyCi0uWzBdWzE4NF09MTgzCi0uWzBdWzE4NV09MTg0Ci0u
WzBdWzE4Nl09MTg1Ci0uWzBdWzE4N109MTg2Ci0uWzBdWzE4OF09MTg3Ci0uWzBdWzE4OV09MTg4
Ci0uWzBdWzE5MF09MTg5Ci0uWzBdWzE5MV09MTkwCi0uWzBdWzE5Ml09MTkxCi0uWzBdWzE5M109
MTkyCi0uWzBdWzE5NF09MTkzCi0uWzBdWzE5NV09MTk0Ci0uWzBdWzE5Nl09MTk1Ci0uWzBdWzE5
N109MTk2Ci0uWzBdWzE5OF09MTk3Ci0uWzBdWzE5OV09MTk4Ci0uWzBdWzIwMF09MTk5Ci0uWzBd
WzIwMV09MjAwCi0uWzBdWzIwMl09MjAxCi0uWzBdWzIwM109MjAyCi0uWzBdWzIwNF09MjAzCi0u
WzBdWzIwNV09MjA0Ci0uWzBdWzIwNl09MjA1Ci0uWzBdWzIwN109MjA2Ci0uWzBdWzIwOF09MjA3
Ci0uWzBdWzIwOV09MjA4Ci0uWzBdWzIxMF09MjA5Ci0uWzBdWzIxMV09MjEwCi0uWzBdWzIxMl09
MjExCi0uWzBdWzIxM109MjEyCi0uWzBdWzIxNF09MjEzCi0uWzBdWzIxNV09MjE0Ci0uWzBdWzIx
Nl09MjE1Ci0uWzBdWzIxN109MjE2Ci0uWzBdWzIxOF09MjE3Ci0uWzBdWzIxOV09MjE4Ci0uWzBd
WzIyMF09MjE5Ci0uWzBdWzIyMV09MjIwCi0uWzBdWzIyMl09MjIxCi0uWzBdWzIyM109MjIyCi0u
WzBdWzIyNF09MjIzCi0uWzBdWzIyNV09MjI0Ci0uWzBdWzIyNl09MjI1Ci0uWzBdWzIyN109MjI2
Ci0uWzBdWzIyOF09MjI3Ci0uWzBdWzIyOV09MjI4Ci0uWzBdWzIzMF09MjI5Ci0uWzBdWzIzMV09
MjMwCi0uWzBdWzIzMl09MjMxCi0uWzBdWzIzM109MjMyCi0uWzBdWzIzNF09MjMzCi0uWzBdWzIz
NV09MjM0Ci0uWzBdWzIzNl09MjM1Ci0uWzBdWzIzN109MjM2Ci0uWzBdWzIzOF09MjM3Ci0uWzBd
WzIzOV09MjM4Ci0uWzBdWzI0MF09MjM5Ci0uWzBdWzI0MV09MjQwCi0uWzBdWzI0Ml09MjQxCi0u
WzBdWzI0M109MjQyCi0uWzBdWzI0NF09MjQzCi0uWzBdWzI0NV09MjQ0Ci0uWzBdWzI0Nl09MjQ1
Ci0uWzBdWzI0N109MjQ2Ci0uWzBdWzI0OF09MjQ3Ci0uWzBdWzI0OV09MjQ4Ci0uWzBdWzI1MF09
MjQ5Ci0uWzBdWzI1MV09MjUwCi0uWzBdWzI1Ml09MjUxCi0uWzBdWzI1M109MjUyCi0uWzBdWzI1
NF09MjUzCi0uWzBdWzI1NV09MjU0Ci0uWzBdWzI1Nl09MjU1Ci0uWzBdWzI1N109MjU2Ci0uWzBd
WzI1OF09MjU3Ci0uWzBdWzI1OV09MjU4Ci0uWzBdWzI2MF09MjU5Ci0uWzBdWzI2MV09MjYwCi0u
WzBdWzI2Ml09MjYxCi0uWzBdWzI2M109MjYyCi0uWzBdWzI2NF09MjYzCi0uWzBdWzI2NV09MjY0
Ci0uWzBdWzI2Nl09MjY1Ci0uWzBdWzI2N109MjY2Ci0uWzBdWzI2OF09MjY3Ci0uWzBdWzI2OV09
MjY4Ci0uWzBdWzI3MF09MjY5Ci0uWzBdWzI3MV09MjcwCi0uWzBdWzI3Ml09MjcxCi0uWzBdWzI3
M109MjcyCi0uWzBdWzI3NF09MjczCi0uWzBdWzI3NV09Mjc0Ci0uWzBdWzI3Nl09Mjc1Ci0uWzBd
WzI3N109Mjc2Ci0uWzBdWzI3OF09Mjc3Ci0uWzBdWzI3OV09Mjc4Ci0uWzBdWzI4MF09Mjc5Ci0u
WzBdWzI4MV09MjgwCi0uWzBdWzI4Ml09MjgxCi0uWzBdWzI4M109MjgyCi0uWzBdWzI4NF09Mjgz
Ci0uWzBdWzI4NV09Mjg0Ci0uWzBdWzI4Nl09Mjg1Ci0uWzBdWzI4N109Mjg2Ci0uWzBdWzI4OF09
Mjg3Ci0uWzBdWzI4OV09Mjg4Ci0uWzBdWzI5MF09Mjg5Ci0uWzBdWzI5MV09MjkwCi0uWzBdWzI5
Ml09MjkxCi0uWzBdWzI5M109MjkyCi0uWzBdWzI5NF09MjkzCi0uWzBdWzI5NV09Mjk0Ci0uWzBd
WzI5Nl09Mjk1Ci0uWzBdWzI5N109Mjk2Ci0uWzBdWzI5OF09Mjk3Ci0uWzBdWzI5OV09Mjk4Ci0u
WzBdWzMwMF09Mjk5Ci0uWzBdWzMwMV09MzAwCi0uWzBdWzMwMl09MzAxCi0uWzBdWzMwM109MzAy
Ci0uWzBdWzMwNF09MzAzCi0uWzBdWzMwNV09MzA0Ci0uWzBdWzMwNl09MzA1Ci0uWzBdWzMwN109
MzA2Ci0uWzBdWzMwOF09MzA3Ci0uWzBdWzMwOV09MzA4Ci0uWzBdWzMxMF09MzA5Ci0uWzBdWzMx
MV09MzEwCi0uWzBdWzMxMl09MzExCi0uWzBdWzMxM109MzEyCi0uWzBdWzMxNF09MzEzCi0uWzBd
WzMxNV09MzE0Ci0uWzBdWzMxNl09MzE1Ci0uWzBdWzMxN109MzE2Ci0uWzBdWzMxOF09MzE3Ci0u
WzBdWzMxOV09MzE4Ci0uWzBdWzMyMF09MzE5Ci0uWzBdWzMyMV09MzIwCi0uWzBdWzMyMl09MzIx
Ci0uWzBdWzMyM109MzIyCi0uWzBdWzMyNF09MzIzCi0uWzBdWzMyNV09MzI0Ci0uWzBdWzMyNl09
MzI1Ci0uWzBdWzMyN109MzI2Ci0uWzBdWzMyOF09MzI3Ci0uWzBdWzMyOV09MzI4Ci0uWzBdWzMz
MF09MzI5Ci0uWzBdWzMzMV09MzMwCi0uWzBdWzMzMl09MzMxCi0uWzBdWzMzM109MzMyCi0uWzBd
WzMzNF09MzMzCi0uWzBdWzMzNV09MzM0Ci0uWzBdWzMzNl09MzM1Ci0uWzBdWzMzN109MzM2Ci0u
WzBdWzMzOF09MzM3Ci0uWzBdWzMzOV09MzM4Ci0uWzBdWzM0MF09MzM5Ci0uWzBdWzM0MV09MzQw
Ci0uWzBdWzM0Ml09MzQxCi0uWzBdWzM0M109MzQyCi0uWzBdWzM0NF09MzQzCi0uWzBdWzM0NV09
MzQ0Ci0uWzBdWzM0Nl09MzQ1Ci0uWzBdWzM0N109MzQ2Ci0uWzBdWzM0OF09MzQ3Ci0uWzBdWzM0
OV09MzQ4Ci0uWzBdWzM1MF09MzQ5Ci0uWzBdWzM1MV09MzUwCi0uWzBdWzM1Ml09MzUxCi0uWzBd
WzM1M109MzUyCi0uWzBdWzM1NF09MzUzCi0uWzBdWzM1NV09MzU0Ci0uWzBdWzM1Nl09MzU1Ci0u
WzBdWzM1N109MzU2Ci0uWzBdWzM1OF09MzU3Ci0uWzBdWzM1OV09MzU4Ci0uWzBdWzM2MF09MzU5
Ci0uWzBdWzM2MV09MzYwCi0uWzBdWzM2Ml09MzYxCi0uWzBdWzM2M109MzYyCi0uWzBdWzM2NF09
MzYzCi0uWzBdWzM2NV09MzY0Ci0uWzBdWzM2Nl09MzY1Ci0uWzBdWzM2N109MzY2Ci0uWzBdWzM2
OF09MzY3Ci0uWzBdWzM2OV09MzY4Ci0uWzBdWzM3MF09MzY5Ci0uWzBdWzM3MV09MzcwCi0uWzBd
WzM3Ml09MzcxCi0uWzBdWzM3M109MzcyCi0uWzBdWzM3NF09MzczCi0uWzBdWzM3NV09Mzc0Ci0u
WzBdWzM3Nl09Mzc1Ci0uWzBdWzM3N109Mzc2Ci0uWzBdWzM3OF09Mzc3Ci0uWzBdWzM3OV09Mzc4
Ci0uWzBdWzM4MF09Mzc5Ci0uWzBdWzM4MV09MzgwCi0uWzBdWzM4Ml09MzgxCi0uWzBdWzM4M109
MzgyCi0uWzBdWzM4NF09MzgzCi0uWzBdWzM4NV09Mzg0Ci0uWzBdWzM4Nl09Mzg1Ci0uWzBdWzM4
N109Mzg2Ci0uWzBdWzM4OF09Mzg3Ci0uWzBdWzM4OV09Mzg4Ci0uWzBdWzM5MF09Mzg5Ci0uWzBd
WzM5MV09MzkwCi0uWzBdWzM5Ml09MzkxCi0uWzBdWzM5M109MzkyCi0uWzBdWzM5NF09MzkzCi0u
WzBdWzM5NV09Mzk0Ci0uWzBdWzM5Nl09Mzk1Ci0uWzBdWzM5N109Mzk2Ci0uWzBdWzM5OF09Mzk3
Ci0uWzBdWzM5OV09Mzk4Ci0uWzBdWzQwMF09Mzk5Ci0uWzBdWzQwMV09NDAwCi0uWzBdWzQwMl09
NDAxCi0uWzBdWzQwM109NDAyCi0uWzBdWzQwNF09NDAzCi0uWzBdWzQwNV09NDA0Ci0uWzBdWzQw
Nl09NDA1Ci0uWzBdWzQwN109NDA2Ci0uWzBdWzQwOF09NDA3Ci0uWzBdWzQwOV09NDA4Ci0uWzBd
WzQxMF09NDA5Ci0uWzBdWzQxMV09NDEwCi0uWzBdWzQxMl09NDExCi0uWzBdWzQxM109NDEyCi0u
WzBdWzQxNF09NDEzCi0uWzBdWzQxNV09NDE0Ci0uWzBdWzQxNl09NDE1Ci0uWzBdWzQxN109NDE2
Ci0uWzBdWzQxOF09NDE3Ci0uWzBdWzQxOV09NDE4Ci0uWzBdWzQyMF09NDE5Ci0uWzBdWzQyMV09
NDIwCi0uWzBdWzQyMl09NDIxCi0uWzBdWzQyM109NDIyCi0uWzBdWzQyNF09NDIzCi0uWzBdWzQy
NV09NDI0Ci0uWzBdWzQyNl09NDI1Ci0uWzBdWzQyN109NDI2Ci0uWzBdWzQyOF09NDI3Ci0uWzBd
WzQyOV09NDI4Ci0uWzBdWzQzMF09NDI5Ci0uWzBdWzQzMV09NDMwCi0uWzBdWzQzMl09NDMxCi0u
WzBdWzQzM109NDMyCi0uWzBdWzQzNF09NDMzCi0uWzBdWzQzNV09NDM0Ci0uWzBdWzQzNl09NDM1
Ci0uWzBdWzQzN109NDM2Ci0uWzBdWzQzOF09NDM3Ci0uWzBdWzQzOV09NDM4Ci0uWzBdWzQ0MF09
NDM5Ci0uWzBdWzQ0MV09NDQwCi0uWzBdWzQ0Ml09NDQxCi0uWzBdWzQ0M109NDQyCi0uWzBdWzQ0
NF09NDQzCi0uWzBdWzQ0NV09NDQ0Ci0uWzBdWzQ0Nl09NDQ1Ci0uWzBdWzQ0N109NDQ2Ci0uWzBd
WzQ0OF09NDQ3Ci0uWzBdWzQ0OV09NDQ4Ci0uWzBdWzQ1MF09NDQ5Ci0uWzBdWzQ1MV09NDUwCi0u
WzBdWzQ1Ml09NDUxCi0uWzBdWzQ1M109NDUyCi0uWzBdWzQ1NF09NDUzCi0uWzBdWzQ1NV09NDU0
Ci0uWzBdWzQ1Nl09NDU1Ci0uWzBdWzQ1N109NDU2Ci0uWzBdWzQ1OF09NDU3Ci0uWzBdWzQ1OV09
NDU4Ci0uWzBdWzQ2MF09NDU5Ci0uWzBdWzQ2MV09NDYwCi0uWzBdWzQ2Ml09NDYxCi0uWzBdWzQ2
M109NDYyCi0uWzBdWzQ2NF09NDYzCi0uWzBdWzQ2NV09NDY0Ci0uWzBdWzQ2Nl09NDY1Ci0uWzBd
WzQ2N109NDY2Ci0uWzBdWzQ2OF09NDY3Ci0uWzBdWzQ2OV09NDY4Ci0uWzBdWzQ3MF09NDY5Ci0u
WzBdWzQ3MV09NDcwCi0uWzBdWzQ3Ml09NDcxCi0uWzBdWzQ3M109NDcyCi0uWzBdWzQ3NF09NDcz
Ci0uWzBdWzQ3NV09NDc0Ci0uWzBdWzQ3Nl09NDc1Ci0uWzBdWzQ3N109NDc2Ci0uWzBdWzQ3OF09
NDc3Ci0uWzBdWzQ3OV09NDc4Ci0uWzBdWzQ4MF09NDc5Ci0uWzBdWzQ4MV09NDgwCi0uWzBdWzQ4
Ml09NDgxCi0uWzBdWzQ4M109NDgyCi0uWzBdWzQ4NF09NDgzCi0uWzBdWzQ4NV09NDg0Ci0uWzBd
WzQ4Nl09NDg1Ci0uWzBdWzQ4N109NDg2Ci0uWzBdWzQ4OF09NDg3Ci0uWzBdWzQ4OV09NDg4Ci0u
WzBdWzQ5MF09NDg5Ci0uWzBdWzQ5MV09NDkwCi0uWzBdWzQ5Ml09NDkxCi0uWzBdWzQ5M109NDky
Ci0uWzBdWzQ5NF09NDkzCi0uWzBdWzQ5NV09NDk0Ci0uWzBdWzQ5Nl09NDk1Ci0uWzBdWzQ5N109
NDk2Ci0uWzBdWzQ5OF09NDk3Ci0uWzBdWzQ5OV09NDk4Ci0uWzBdWzUwMF09NDk5Ci0uWzBdWzUw
MV09NTAwCi0uWzBdWzUwMl09NTAxCi0uWzBdWzUwM109NTAyCi0uWzBdWzUwNF09NTAzCi0uWzBd
WzUwNV09NTA0Ci0uWzBdWzUwNl09NTA1Ci0uWzBdWzUwN109NTA2Ci0uWzBdWzUwOF09NTA3Ci0u
WzBdWzUwOV09NTA4Ci0uWzBdWzUxMF09NTA5Ci0uWzBdWzUxMV09NTEwCi0uWzBdWzUxMl09NTEx
Ci0uWzBdWzUxM109NTEyCi0uWzBdWzUxNF09NTEzCi0uWzBdWzUxNV09NTE0Ci0uWzBdWzUxNl09
NTE1Ci0uWzBdWzUxN109NTE2Ci0uWzBdWzUxOF09NTE3Ci0uWzBdWzUxOV09NTE4Ci0uWzBdWzUy
MF09NTE5Ci0uWzBdWzUyMV09NTIwCi0uWzBdWzUyMl09NTIxCi0uWzBdWzUyM109NTIyCi0uWzBd
WzUyNF09NTIzCi0uWzBdWzUyNV09NTI0Ci0uWzBdWzUyNl09NTI1Ci0uWzBdWzUyN109NTI2Ci0u
WzBdWzUyOF09NTI3Ci0uWzBdWzUyOV09NTI4Ci0uWzBdWzUzMF09NTI5Ci0uWzBdWzUzMV09NTMw
Ci0uWzBdWzUzMl09NTMxCi0uWzBdWzUzM109NTMyCi0uWzBdWzUzNF09NTMzCi0uWzBdWzUzNV09
NTM0Ci0uWzBdWzUzNl09NTM1Ci0uWzBdWzUzN109NTM2Ci0uWzBdWzUzOF09NTM3Ci0uWzBdWzUz
OV09NTM4Ci0uWzBdWzU0MF09NTM5Ci0uWzBdWzU0MV09NTQwCi0uWzBdWzU0Ml09NTQxCi0uWzBd
WzU0M109NTQyCi0uWzBdWzU0NF09NTQzCi0uWzBdWzU0NV09NTQ0Ci0uWzBdWzU0Nl09NTQ1Ci0u
WzBdWzU0N109NTQ2Ci0uWzBdWzU0OF09NTQ3Ci0uWzBdWzU0OV09NTQ4Ci0uWzBdWzU1MF09NTQ5
Ci0uWzBdWzU1MV09NTUwCi0uWzBdWzU1Ml09NTUxCi0uWzBdWzU1M109NTUyCi0uWzBdWzU1NF09
NTUzCi0uWzBdWzU1NV09NTU0Ci0uWzBdWzU1Nl09NTU1Ci0uWzBdWzU1N109NTU2Ci0uWzBdWzU1
OF09NTU3Ci0uWzBdWzU1OV09NTU4Ci0uWzBdWzU2MF09NTU5Ci0uWzBdWzU2MV09NTYwCi0uWzBd
WzU2Ml09NTYxCi0uWzBdWzU2M109NTYyCi0uWzBdWzU2NF09NTYzCi0uWzBdWzU2NV09NTY0Ci0u
WzBdWzU2Nl09NTY1Ci0uWzBdWzU2N109NTY2Ci0uWzBdWzU2OF09NTY3Ci0uWzBdWzU2OV09NTY4
Ci0uWzBdWzU3MF09NTY5Ci0uWzBdWzU3MV09NTcwCi0uWzBdWzU3Ml09NTcxCi0uWzBdWzU3M109
NTcyCi0uWzBdWzU3NF09NTczCi0uWzBdWzU3NV09NTc0Ci0uWzBdWzU3Nl09NTc1Ci0uWzBdWzU3
N109NTc2Ci0uWzBdWzU3OF09NTc3Ci0uWzBdWzU3OV09NTc4Ci0uWzBdWzU4MF09NTc5Ci0uWzBd
WzU4MV09NTgwCi0uWzBdWzU4Ml09NTgxCi0uWzBdWzU4M109NTgyCi0uWzBdWzU4NF09NTgzCi0u
WzBdWzU4NV09NTg0Ci0uWzBdWzU4Nl09NTg1Ci0uWzBdWzU4N109NTg2Ci0uWzBdWzU4OF09NTg3
Ci0uWzBdWzU4OV09NTg4Ci0uWzBdWzU5MF09NTg5Ci0uWzBdWzU5MV09NTkwCi0uWzBdWzU5Ml09
NTkxCi0uWzBdWzU5M109NTkyCi0uWzBdWzU5NF09NTkzCi0uWzBdWzU5NV09NTk0Ci0uWzBdWzU5
Nl09NTk1Ci0uWzBdWzU5N109NTk2Ci0uWzBdWzU5OF09NTk3Ci0uWzBdWzU5OV09NTk4Ci0uWzBd
WzYwMF09NTk5Ci0uWzBdWzYwMV09NjAwCi0uWzBdWzYwMl09NjAxCi0uWzBdWzYwM109NjAyCi0u
WzBdWzYwNF09NjAzCi0uWzBdWzYwNV09NjA0Ci0uWzBdWzYwNl09NjA1Ci0uWzBdWzYwN109NjA2
Ci0uWzBdWzYwOF09NjA3Ci0uWzBdWzYwOV09NjA4Ci0uWzBdWzYxMF09NjA5Ci0uWzBdWzYxMV09
NjEwCi0uWzBdWzYxMl09NjExCi0uWzBdWzYxM109NjEyCi0uWzBdWzYxNF09NjEzCi0uWzBdWzYx
NV09NjE0Ci0uWzBdWzYxNl09NjE1Ci0uWzBdWzYxN109NjE2Ci0uWzBdWzYxOF09NjE3Ci0uWzBd
WzYxOV09NjE4Ci0uWzBdWzYyMF09NjE5Ci0uWzBdWzYyMV09NjIwCi0uWzBdWzYyMl09NjIxCi0u
WzBdWzYyM109NjIyCi0uWzBdWzYyNF09NjIzCi0uWzBdWzYyNV09NjI0Ci0uWzBdWzYyNl09NjI1
Ci0uWzBdWzYyN109NjI2Ci0uWzBdWzYyOF09NjI3Ci0uWzBdWzYyOV09NjI4Ci0uWzBdWzYzMF09
NjI5Ci0uWzBdWzYzMV09NjMwCi0uWzBdWzYzMl09NjMxCi0uWzBdWzYzM109NjMyCi0uWzBdWzYz
NF09NjMzCi0uWzBdWzYzNV09NjM0Ci0uWzBdWzYzNl09NjM1Ci0uWzBdWzYzN109NjM2Ci0uWzBd
WzYzOF09NjM3Ci0uWzBdWzYzOV09NjM4Ci0uWzBdWzY0MF09NjM5Ci0uWzBdWzY0MV09NjQwCi0u
WzBdWzY0Ml09NjQxCi0uWzBdWzY0M109NjQyCi0uWzBdWzY0NF09NjQzCi0uWzBdWzY0NV09NjQ0
Ci0uWzBdWzY0Nl09NjQ1Ci0uWzBdWzY0N109NjQ2Ci0uWzBdWzY0OF09NjQ3Ci0uWzBdWzY0OV09
NjQ4Ci0uWzBdWzY1MF09NjQ5Ci0uWzBdWzY1MV09NjUwCi0uWzBdWzY1Ml09NjUxCi0uWzBdWzY1
M109NjUyCi0uWzBdWzY1NF09NjUzCi0uWzBdWzY1NV09NjU0Ci0uWzBdWzY1Nl09NjU1Ci0uWzBd
WzY1N109NjU2Ci0uWzBdWzY1OF09NjU3Ci0uWzBdWzY1OV09NjU4Ci0uWzBdWzY2MF09NjU5Ci0u
WzBdWzY2MV09NjYwCi0uWzBdWzY2Ml09NjYxCi0uWzBdWzY2M109NjYyCi0uWzBdWzY2NF09NjYz
Ci0uWzBdWzY2NV09NjY0Ci0uWzBdWzY2Nl09NjY1Ci0uWzBdWzY2N109NjY2Ci0uWzBdWzY2OF09
NjY3Ci0uWzBdWzY2OV09NjY4Ci0uWzBdWzY3MF09NjY5Ci0uWzBdWzY3MV09NjcwCi0uWzBdWzY3
Ml09NjcxCi0uWzBdWzY3M109NjcyCi0uWzBdWzY3NF09NjczCi0uWzBdWzY3NV09Njc0Ci0uWzBd
WzY3Nl09Njc1Ci0uWzBdWzY3N109Njc2Ci0uWzBdWzY3OF09Njc3Ci0uWzBdWzY3OV09Njc4Ci0u
WzBdWzY4MF09Njc5Ci0uWzBdWzY4MV09NjgwCi0uWzBdWzY4Ml09NjgxCi0uWzBdWzY4M109Njgy
Ci0uWzBdWzY4NF09NjgzCi0uWzBdWzY4NV09Njg0Ci0uWzBdWzY4Nl09Njg1Ci0uWzBdWzY4N109
Njg2Ci0uWzBdWzY4OF09Njg3Ci0uWzBdWzY4OV09Njg4Ci0uWzBdWzY5MF09Njg5Ci0uWzBdWzY5
MV09NjkwCi0uWzBdWzY5Ml09NjkxCi0uWzBdWzY5M109NjkyCi0uWzBdWzY5NF09NjkzCi0uWzBd
WzY5NV09Njk0Ci0uWzBdWzY5Nl09Njk1Ci0uWzBdWzY5N109Njk2Ci0uWzBdWzY5OF09Njk3Ci0u
WzBdWzY5OV09Njk4Ci0uWzBdWzcwMF09Njk5Ci0uWzBdWzcwMV09NzAwCi0uWzBdWzcwMl09NzAx
Ci0uWzBdWzcwM109NzAyCi0uWzBdWzcwNF09NzAzCi0uWzBdWzcwNV09NzA0Ci0uWzBdWzcwNl09
NzA1Ci0uWzBdWzcwN109NzA2Ci0uWzBdWzcwOF09NzA3Ci0uWzBdWzcwOV09NzA4Ci0uWzBdWzcx
MF09NzA5Ci0uWzBdWzcxMV09NzEwCi0uWzBdWzcxMl09NzExCi0uWzBdWzcxM109NzEyCi0uWzBd
WzcxNF09NzEzCi0uWzBdWzcxNV09NzE0Ci0uWzBdWzcxNl09NzE1Ci0uWzBdWzcxN109NzE2Ci0u
WzBdWzcxOF09NzE3Ci0uWzBdWzcxOV09NzE4Ci0uWzBdWzcyMF09NzE5Ci0uWzBdWzcyMV09NzIw
Ci0uWzBdWzcyMl09NzIxCi0uWzBdWzcyM109NzIyCi0uWzBdWzcyNF09NzIzCi0uWzBdWzcyNV09
NzI0Ci0uWzBdWzcyNl09NzI1Ci0uWzBdWzcyN109NzI2Ci0uWzBdWzcyOF09NzI3Ci0uWzBdWzcy
OV09NzI4Ci0uWzBdWzczMF09NzI5Ci0uWzBdWzczMV09NzMwCi0uWzBdWzczMl09NzMxCi0uWzBd
WzczM109NzMyCi0uWzBdWzczNF09NzMzCi0uWzBdWzczNV09NzM0Ci0uWzBdWzczNl09NzM1Ci0u
WzBdWzczN109NzM2Ci0uWzBdWzczOF09NzM3Ci0uWzBdWzczOV09NzM4Ci0uWzBdWzc0MF09NzM5
Ci0uWzBdWzc0MV09NzQwCi0uWzBdWzc0Ml09NzQxCi0uWzBdWzc0M109NzQyCi0uWzBdWzc0NF09
NzQzCi0uWzBdWzc0NV09NzQ0Ci0uWzBdWzc0Nl09NzQ1Ci0uWzBdWzc0N109NzQ2Ci0uWzBdWzc0
OF09NzQ3Ci0uWzBdWzc0OV09NzQ4Ci0uWzBdWzc1MF09NzQ5Ci0uWzBdWzc1MV09NzUwCi0uWzBd
Wzc1Ml09NzUxCi0uWzBdWzc1M109NzUyCi0uWzBdWzc1NF09NzUzCi0uWzBdWzc1NV09NzU0Ci0u
WzBdWzc1Nl09NzU1Ci0uWzBdWzc1N109NzU2Ci0uWzBdWzc1OF09NzU3Ci0uWzBdWzc1OV09NzU4
Ci0uWzBdWzc2MF09NzU5Ci0uWzBdWzc2MV09NzYwCi0uWzBdWzc2Ml09NzYxCi0uWzBdWzc2M109
NzYyCi0uWzBdWzc2NF09NzYzCi0uWzBdWzc2NV09NzY0Ci0uWzBdWzc2Nl09NzY1Ci0uWzBdWzc2
N109NzY2Ci0uWzBdWzc2OF09NzY3Ci0uWzBdWzc2OV09NzY4Ci0uWzBdWzc3MF09NzY5Ci0uWzBd
Wzc3MV09NzcwCi0uWzBdWzc3Ml09NzcxCi0uWzBdWzc3M109NzcyCi0uWzBdWzc3NF09NzczCi0u
WzBdWzc3NV09Nzc0Ci0uWzBdWzc3Nl09Nzc1Ci0uWzBdWzc3N109Nzc2Ci0uWzBdWzc3OF09Nzc3
Ci0uWzBdWzc3OV09Nzc4Ci0uWzBdWzc4MF09Nzc5Ci0uWzBdWzc4MV09NzgwCi0uWzBdWzc4Ml09
NzgxCi0uWzBdWzc4M109NzgyCi0uWzBdWzc4NF09NzgzCi0uWzBdWzc4NV09Nzg0Ci0uWzBdWzc4
Nl09Nzg1Ci0uWzBdWzc4N109Nzg2Ci0uWzBdWzc4OF09Nzg3Ci0uWzBdWzc4OV09Nzg4Ci0uWzBd
Wzc5MF09Nzg5Ci0uWzBdWzc5MV09NzkwCi0uWzBdWzc5Ml09NzkxCi0uWzBdWzc5M109NzkyCi0u
WzBdWzc5NF09NzkzCi0uWzBdWzc5NV09Nzk0Ci0uWzBdWzc5Nl09Nzk1Ci0uWzBdWzc5N109Nzk2
Ci0uWzBdWzc5OF09Nzk3Ci0uWzBdWzc5OV09Nzk4Ci0uWzBdWzgwMF09Nzk5Ci0uWzBdWzgwMV09
ODAwCi0uWzBdWzgwMl09ODAxCi0uWzBdWzgwM109ODAyCi0uWzBdWzgwNF09ODAzCi0uWzBdWzgw
NV09ODA0Ci0uWzBdWzgwNl09ODA1Ci0uWzBdWzgwN109ODA2Ci0uWzBdWzgwOF09ODA3Ci0uWzBd
WzgwOV09ODA4Ci0uWzBdWzgxMF09ODA5Ci0uWzBdWzgxMV09ODEwCi0uWzBdWzgxMl09ODExCi0u
WzBdWzgxM109ODEyCi0uWzBdWzgxNF09ODEzCi0uWzBdWzgxNV09ODE0Ci0uWzBdWzgxNl09ODE1
Ci0uWzBdWzgxN109ODE2Ci0uWzBdWzgxOF09ODE3Ci0uWzBdWzgxOV09ODE4Ci0uWzBdWzgyMF09
ODE5Ci0uWzBdWzgyMV09ODIwCi0uWzBdWzgyMl09ODIxCi0uWzBdWzgyM109ODIyCi0uWzBdWzgy
NF09ODIzCi0uWzBdWzgyNV09ODI0Ci0uWzBdWzgyNl09ODI1Ci0uWzBdWzgyN109ODI2Ci0uWzBd
WzgyOF09ODI3Ci0uWzBdWzgyOV09ODI4Ci0uWzBdWzgzMF09ODI5Ci0uWzBdWzgzMV09ODMwCi0u
WzBdWzgzMl09ODMxCi0uWzBdWzgzM109ODMyCi0uWzBdWzgzNF09ODMzCi0uWzBdWzgzNV09ODM0
Ci0uWzBdWzgzNl09ODM1Ci0uWzBdWzgzN109ODM2Ci0uWzBdWzgzOF09ODM3Ci0uWzBdWzgzOV09
ODM4Ci0uWzBdWzg0MF09ODM5Ci0uWzBdWzg0MV09ODQwCi0uWzBdWzg0Ml09ODQxCi0uWzBdWzg0
M109ODQyCi0uWzBdWzg0NF09ODQzCi0uWzBdWzg0NV09ODQ0Ci0uWzBdWzg0Nl09ODQ1Ci0uWzBd
Wzg0N109ODQ2Ci0uWzBdWzg0OF09ODQ3Ci0uWzBdWzg0OV09ODQ4Ci0uWzBdWzg1MF09ODQ5Ci0u
WzBdWzg1MV09ODUwCi0uWzBdWzg1Ml09ODUxCi0uWzBdWzg1M109ODUyCi0uWzBdWzg1NF09ODUz
Ci0uWzBdWzg1NV09ODU0Ci0uWzBdWzg1Nl09ODU1Ci0uWzBdWzg1N109ODU2Ci0uWzBdWzg1OF09
ODU3Ci0uWzBdWzg1OV09ODU4Ci0uWzBdWzg2MF09ODU5Ci0uWzBdWzg2MV09ODYwCi0uWzBdWzg2
Ml09ODYxCi0uWzBdWzg2M109ODYyCi0uWzBdWzg2NF09ODYzCi0uWzBdWzg2NV09ODY0Ci0uWzBd
Wzg2Nl09ODY1Ci0uWzBdWzg2N109ODY2Ci0uWzBdWzg2OF09ODY3Ci0uWzBdWzg2OV09ODY4Ci0u
WzBdWzg3MF09ODY5Ci0uWzBdWzg3MV09ODcwCi0uWzBdWzg3Ml09ODcxCi0uWzBdWzg3M109ODcy
Ci0uWzBdWzg3NF09ODczCi0uWzBdWzg3NV09ODc0Ci0uWzBdWzg3Nl09ODc1Ci0uWzBdWzg3N109
ODc2Ci0uWzBdWzg3OF09ODc3Ci0uWzBdWzg3OV09ODc4Ci0uWzBdWzg4MF09ODc5Ci0uWzBdWzg4
MV09ODgwCi0uWzBdWzg4Ml09ODgxCi0uWzBdWzg4M109ODgyCi0uWzBdWzg4NF09ODgzCi0uWzBd
Wzg4NV09ODg0Ci0uWzBdWzg4Nl09ODg1Ci0uWzBdWzg4N109ODg2Ci0uWzBdWzg4OF09ODg3Ci0u
WzBdWzg4OV09ODg4Ci0uWzBdWzg5MF09ODg5Ci0uWzBdWzg5MV09ODkwCi0uWzBdWzg5Ml09ODkx
Ci0uWzBdWzg5M109ODkyCi0uWzBdWzg5NF09ODkzCi0uWzBdWzg5NV09ODk0Ci0uWzBdWzg5Nl09
ODk1Ci0uWzBdWzg5N109ODk2Ci0uWzBdWzg5OF09ODk3Ci0uWzBdWzg5OV09ODk4Ci0uWzBdWzkw
MF09ODk5Ci0uWzBdWzkwMV09OTAwCi0uWzBdWzkwMl09OTAxCi0uWzBdWzkwM109OTAyCi0uWzBd
WzkwNF09OTAzCi0uWzBdWzkwNV09OTA0Ci0uWzBdWzkwNl09OTA1Ci0uWzBdWzkwN109OTA2Ci0u
WzBdWzkwOF09OTA3Ci0uWzBdWzkwOV09OTA4Ci0uWzBdWzkxMF09OTA5Ci0uWzBdWzkxMV09OTEw
Ci0uWzBdWzkxMl09OTExCi0uWzBdWzkxM109OTEyCi0uWzBdWzkxNF09OTEzCi0uWzBdWzkxNV09
OTE0Ci0uWzBdWzkxNl09OTE1Ci0uWzBdWzkxN109OTE2Ci0uWzBdWzkxOF09OTE3Ci0uWzBdWzkx
OV09OTE4Ci0uWzBdWzkyMF09OTE5Ci0uWzBdWzkyMV09OTIwCi0uWzBdWzkyMl09OTIxCi0uWzBd
WzkyM109OTIyCi0uWzBdWzkyNF09OTIzCi0uWzBdWzkyNV09OTI0Ci0uWzBdWzkyNl09OTI1Ci0u
WzBdWzkyN109OTI2Ci0uWzBdWzkyOF09OTI3Ci0uWzBdWzkyOV09OTI4Ci0uWzBdWzkzMF09OTI5
Ci0uWzBdWzkzMV09OTMwCi0uWzBdWzkzMl09OTMxCi0uWzBdWzkzM109OTMyCi0uWzBdWzkzNF09
OTMzCi0uWzBdWzkzNV09OTM0Ci0uWzBdWzkzNl09OTM1Ci0uWzBdWzkzN109OTM2Ci0uWzBdWzkz
OF09OTM3Ci0uWzBdWzkzOV09OTM4Ci0uWzBdWzk0MF09OTM5Ci0uWzBdWzk0MV09OTQwCi0uWzBd
Wzk0Ml09OTQxCi0uWzBdWzk0M109OTQyCi0uWzBdWzk0NF09OTQzCi0uWzBdWzk0NV09OTQ0Ci0u
WzBdWzk0Nl09OTQ1Ci0uWzBdWzk0N109OTQ2Ci0uWzBdWzk0OF09OTQ3Ci0uWzBdWzk0OV09OTQ4
Ci0uWzBdWzk1MF09OTQ5Ci0uWzBdWzk1MV09OTUwCi0uWzBdWzk1Ml09OTUxCi0uWzBdWzk1M109
OTUyCi0uWzBdWzk1NF09OTUzCi0uWzBdWzk1NV09OTU0Ci0uWzBdWzk1Nl09OTU1Ci0uWzBdWzk1
N109OTU2Ci0uWzBdWzk1OF09OTU3Ci0uWzBdWzk1OV09OTU4Ci0uWzBdWzk2MF09OTU5Ci0uWzBd
Wzk2MV09OTYwCi0uWzBdWzk2Ml09OTYxCi0uWzBdWzk2M109OTYyCi0uWzBdWzk2NF09OTYzCi0u
WzBdWzk2NV09OTY0Ci0uWzBdWzk2Nl09OTY1Ci0uWzBdWzk2N109OTY2Ci0uWzBdWzk2OF09OTY3
Ci0uWzBdWzk2OV09OTY4Ci0uWzBdWzk3MF09OTY5Ci0uWzBdWzk3MV09OTcwCi0uWzBdWzk3Ml09
OTcxCi0uWzBdWzk3M109OTcyCi0uWzBdWzk3NF09OTczCi0uWzBdWzk3NV09OTc0Ci0uWzBdWzk3
Nl09OTc1Ci0uWzBdWzk3N109OTc2Ci0uWzBdWzk3OF09OTc3Ci0uWzBdWzk3OV09OTc4Ci0uWzBd
Wzk4MF09OTc5Ci0uWzBdWzk4MV09OTgwCi0uWzBdWzk4Ml09OTgxCi0uWzBdWzk4M109OTgyCi0u
WzBdWzk4NF09OTgzCi0uWzBdWzk4NV09OTg0Ci0uWzBdWzk4Nl09OTg1Ci0uWzBdWzk4N109OTg2
Ci0uWzBdWzk4OF09OTg3Ci0uWzBdWzk4OV09OTg4Ci0uWzBdWzk5MF09OTg5Ci0uWzBdWzk5MV09
OTkwCi0uWzBdWzk5Ml09OTkxCi0uWzBdWzk5M109OTkyCi0uWzBdWzk5NF09OTkzCi0uWzBdWzk5
NV09OTk0Ci0uWzBdWzk5Nl09OTk1Ci0uWzBdWzk5N109OTk2Ci0uWzBdWzk5OF09OTk3Ci0uWzBd
Wzk5OV09OTk4Ci0uWzBdWzEwMDBdPTk5OQotLlswXVsxMDAxXT0xMDAwCi0uWzBdWzEwMDJdPTEw
MDEKLS5bMF1bMTAwM109MTAwMgotLlswXVsxMDA0XT0xMDAzCi0uWzBdWzEwMDVdPTEwMDQKLS5b
MF1bMTAwNl09MTAwNQotLlswXVsxMDA3XT0xMDA2Ci0uWzBdWzEwMDhdPTEwMDcKLS5bMF1bMTAw
OV09MTAwOAotLlswXVsxMDEwXT0xMDA5Ci0uWzBdWzEwMTFdPTEwMTAKLS5bMF1bMTAxMl09MTAx
MQotLlswXVsxMDEzXT0xMDEyCi0uWzBdWzEwMTRdPTEwMTMKLS5bMF1bMTAxNV09MTAxNAotLlsw
XVsxMDE2XT0xMDE1Ci0uWzBdWzEwMTddPTEwMTYKLS5bMF1bMTAxOF09MTAxNwotLlswXVsxMDE5
XT0xMDE4Ci0uWzBdWzEwMjBdPTEwMTkKLS5bMF1bMTAyMV09MTAyMAotLlswXVsxMDIyXT0xMDIx
Ci0uWzBdWzEwMjNdPTEwMjIKLS5bMF1bMTAyNF09MTAyMwotLlswXVsxMDI1XT0xMDI0Ci0uWzBd
WzEwMjZdPTEwMjUKLS5bMF1bMTAyN109MTAyNgotLlswXVsxMDI4XT0xMDI3Ci0uWzBdWzEwMjld
PTEwMjgKLS5bMF1bMTAzMF09MTAyOQotLlswXVsxMDMxXT0xMDMwCi0uWzBdWzEwMzJdPTEwMzEK
LS5bMF1bMTAzM109MTAzMgotLlswXVsxMDM0XT0xMDMzCi0uWzBdWzEwMzVdPTEwMzQKLS5bMF1b
MTAzNl09MTAzNQotLlswXVsxMDM3XT0xMDM2Ci0uWzBdWzEwMzhdPTEwMzcKLS5bMF1bMTAzOV09
MTAzOAotLlswXVsxMDQwXT0xMDM5Ci0uWzBdWzEwNDFdPTEwNDAKLS5bMF1bMTA0Ml09MTA0MQot
LlswXVsxMDQzXT0xMDQyCi0uWzBdWzEwNDRdPTEwNDMKLS5bMF1bMTA0NV09MTA0NAotLlswXVsx
MDQ2XT0xMDQ1Ci0uWzBdWzEwNDddPTEwNDYKLS5bMF1bMTA0OF09MTA0NwotLlswXVsxMDQ5XT0x
MDQ4Ci0uWzBdWzEwNTBdPTEwNDkKLS5bMF1bMTA1MV09MTA1MAotLlswXVsxMDUyXT0xMDUxCi0u
WzBdWzEwNTNdPTEwNTIKLS5bMF1bMTA1NF09MTA1MwotLlswXVsxMDU1XT0xMDU0Ci0uWzBdWzEw
NTZdPTEwNTUKLS5bMF1bMTA1N109MTA1NgotLlswXVsxMDU4XT0xMDU3Ci0uWzBdWzEwNTldPTEw
NTgKLS5bMF1bMTA2MF09MTA1OQotLlswXVsxMDYxXT0xMDYwCi0uWzBdWzEwNjJdPTEwNjEKLS5b
MF1bMTA2M109MTA2MgotLlswXVsxMDY0XT0xMDYzCi0uWzBdWzEwNjVdPTEwNjQKLS5bMF1bMTA2
Nl09MTA2NQotLlswXVsxMDY3XT0xMDY2Ci0uWzBdWzEwNjhdPTEwNjcKLS5bMF1bMTA2OV09MTA2
OAotLlswXVsxMDcwXT0xMDY5Ci0uWzBdWzEwNzFdPTEwNzAKLS5bMF1bMTA3Ml09MTA3MQotLlsw
XVsxMDczXT0xMDcyCi0uWzBdWzEwNzRdPTEwNzMKLS5bMF1bMTA3NV09MTA3NAotLlswXVsxMDc2
XT0xMDc1Ci0uWzBdWzEwNzddPTEwNzYKLS5bMF1bMTA3OF09MTA3NwotLlswXVsxMDc5XT0xMDc4
Ci0uWzBdWzEwODBdPTEwNzkKLS5bMF1bMTA4MV09MTA4MAotLlswXVsxMDgyXT0xMDgxCi0uWzBd
WzEwODNdPTEwODIKLS5bMF1bMTA4NF09MTA4MwotLlswXVsxMDg1XT0xMDg0Ci0uWzBdWzEwODZd
PTEwODUKLS5bMF1bMTA4N109MTA4NgotLlswXVsxMDg4XT0xMDg3Ci0uWzBdWzEwODldPTEwODgK
LS5bMF1bMTA5MF09MTA4OQotLlswXVsxMDkxXT0xMDkwCi0uWzBdWzEwOTJdPTEwOTEKLS5bMF1b
MTA5M109MTA5MgotLlswXVsxMDk0XT0xMDkzCi0uWzBdWzEwOTVdPTEwOTQKLS5bMF1bMTA5Nl09
MTA5NQotLlswXVsxMDk3XT0xMDk2Ci0uWzBdWzEwOThdPTEwOTcKLS5bMF1bMTA5OV09MTA5OAot
LlswXVsxMTAwXT0xMDk5Ci0uWzBdWzExMDFdPTExMDAKLS5bMF1bMTEwMl09MTEwMQotLlswXVsx
MTAzXT0xMTAyCi0uWzBdWzExMDRdPTExMDMKLS5bMF1bMTEwNV09MTEwNAotLlswXVsxMTA2XT0x
MTA1Ci0uWzBdWzExMDddPTExMDYKLS5bMF1bMTEwOF09MTEwNwotLlswXVsxMTA5XT0xMTA4Ci0u
WzBdWzExMTBdPTExMDkKLS5bMF1bMTExMV09MTExMAotLlswXVsxMTEyXT0xMTExCi0uWzBdWzEx
MTNdPTExMTIKLS5bMF1bMTExNF09MTExMwotLlswXVsxMTE1XT0xMTE0Ci0uWzBdWzExMTZdPTEx
MTUKLS5bMF1bMTExN109MTExNgotLlswXVsxMTE4XT0xMTE3Ci0uWzBdWzExMTldPTExMTgKLS5b
MF1bMTEyMF09MTExOQotLlswXVsxMTIxXT0xMTIwCi0uWzBdWzExMjJdPTExMjEKLS5bMF1bMTEy
M109MTEyMgotLlswXVsxMTI0XT0xMTIzCi0uWzBdWzExMjVdPTExMjQKLS5bMF1bMTEyNl09MTEy
NQotLlswXVsxMTI3XT0xMTI2Ci0uWzBdWzExMjhdPTExMjcKLS5bMF1bMTEyOV09MTEyOAotLlsw
XVsxMTMwXT0xMTI5Ci0uWzBdWzExMzFdPTExMzAKLS5bMF1bMTEzMl09MTEzMQotLlswXVsxMTMz
XT0xMTMyCi0uWzBdWzExMzRdPTExMzMKLS5bMF1bMTEzNV09MTEzNAotLlswXVsxMTM2XT0xMTM1
Ci0uWzBdWzExMzddPTExMzYKLS5bMF1bMTEzOF09MTEzNwotLlswXVsxMTM5XT0xMTM4Ci0uWzBd
WzExNDBdPTExMzkKLS5bMF1bMTE0MV09MTE0MAotLlswXVsxMTQyXT0xMTQxCi0uWzBdWzExNDNd
PTExNDIKLS5bMF1bMTE0NF09MTE0MwotLlswXVsxMTQ1XT0xMTQ0Ci0uWzBdWzExNDZdPTExNDUK
LS5bMF1bMTE0N109MTE0NgotLlswXVsxMTQ4XT0xMTQ3Ci0uWzBdWzExNDldPTExNDgKLS5bMF1b
MTE1MF09MTE0OQotLlswXVsxMTUxXT0xMTUwCi0uWzBdWzExNTJdPTExNTEKLS5bMF1bMTE1M109
MTE1MgotLlswXVsxMTU0XT0xMTUzCi0uWzBdWzExNTVdPTExNTQKLS5bMF1bMTE1Nl09MTE1NQot
LlswXVsxMTU3XT0xMTU2Ci0uWzBdWzExNThdPTExNTcKLS5bMF1bMTE1OV09MTE1OAotLlswXVsx
MTYwXT0xMTU5Ci0uWzBdWzExNjFdPTExNjAKLS5bMF1bMTE2Ml09MTE2MQotLlswXVsxMTYzXT0x
MTYyCi0uWzBdWzExNjRdPTExNjMKLS5bMF1bMTE2NV09MTE2NAotLlswXVsxMTY2XT0xMTY1Ci0u
WzBdWzExNjddPTExNjYKLS5bMF1bMTE2OF09MTE2NwotLlswXVsxMTY5XT0xMTY4Ci0uWzBdWzEx
NzBdPTExNjkKLS5bMF1bMTE3MV09MTE3MAotLlswXVsxMTcyXT0xMTcxCi0uWzBdWzExNzNdPTEx
NzIKLS5bMF1bMTE3NF09MTE3MwotLlswXVsxMTc1XT0xMTc0Ci0uWzBdWzExNzZdPTExNzUKLS5b
MF1bMTE3N109MTE3NgotLlswXVsxMTc4XT0xMTc3Ci0uWzBdWzExNzldPTExNzgKLS5bMF1bMTE4
MF09MTE3OQotLlswXVsxMTgxXT0xMTgwCi0uWzBdWzExODJdPTExODEKLS5bMF1bMTE4M109MTE4
MgotLlswXVsxMTg0XT0xMTgzCi0uWzBdWzExODVdPTExODQKLS5bMF1bMTE4Nl09MTE4NQotLlsw
XVsxMTg3XT0xMTg2Ci0uWzBdWzExODhdPTExODcKLS5bMF1bMTE4OV09MTE4OAotLlswXVsxMTkw
XT0xMTg5Ci0uWzBdWzExOTFdPTExOTAKLS5bMF1bMTE5Ml09MTE5MQotLlswXVsxMTkzXT0xMTky
Ci0uWzBdWzExOTRdPTExOTMKLS5bMF1bMTE5NV09MTE5NAotLlswXVsxMTk2XT0xMTk1Ci0uWzBd
WzExOTddPTExOTYKLS5bMF1bMTE5OF09MTE5NwotLlswXVsxMTk5XT0xMTk4Ci0uWzBdWzEyMDBd
PTExOTkKLS5bMF1bMTIwMV09MTIwMAotLlswXVsxMjAyXT0xMjAxCi0uWzBdWzEyMDNdPTEyMDIK
LS5bMF1bMTIwNF09MTIwMwotLlswXVsxMjA1XT0xMjA0Ci0uWzBdWzEyMDZdPTEyMDUKLS5bMF1b
MTIwN109MTIwNgotLlswXVsxMjA4XT0xMjA3Ci0uWzBdWzEyMDldPTEyMDgKLS5bMF1bMTIxMF09
MTIwOQotLlswXVsxMjExXT0xMjEwCi0uWzBdWzEyMTJdPTEyMTEKLS5bMF1bMTIxM109MTIxMgot
LlswXVsxMjE0XT0xMjEzCi0uWzBdWzEyMTVdPTEyMTQKLS5bMF1bMTIxNl09MTIxNQotLlswXVsx
MjE3XT0xMjE2Ci0uWzBdWzEyMThdPTEyMTcKLS5bMF1bMTIxOV09MTIxOAotLlswXVsxMjIwXT0x
MjE5Ci0uWzBdWzEyMjFdPTEyMjAKLS5bMF1bMTIyMl09MTIyMQotLlswXVsxMjIzXT0xMjIyCi0u
WzBdWzEyMjRdPTEyMjMKLS5bMF1bMTIyNV09MTIyNAotLlswXVsxMjI2XT0xMjI1Ci0uWzBdWzEy
MjddPTEyMjYKLS5bMF1bMTIyOF09MTIyNwotLlswXVsxMjI5XT0xMjI4Ci0uWzBdWzEyMzBdPTEy
MjkKLS5bMF1bMTIzMV09MTIzMAotLlswXVsxMjMyXT0xMjMxCi0uWzBdWzEyMzNdPTEyMzIKLS5b
MF1bMTIzNF09MTIzMwotLlswXVsxMjM1XT0xMjM0Ci0uWzBdWzEyMzZdPTEyMzUKLS5bMF1bMTIz
N109MTIzNgotLlswXVsxMjM4XT0xMjM3Ci0uWzBdWzEyMzldPTEyMzgKLS5bMF1bMTI0MF09MTIz
OQotLlswXVsxMjQxXT0xMjQwCi0uWzBdWzEyNDJdPTEyNDEKLS5bMF1bMTI0M109MTI0MgotLlsw
XVsxMjQ0XT0xMjQzCi0uWzBdWzEyNDVdPTEyNDQKLS5bMF1bMTI0Nl09MTI0NQotLlswXVsxMjQ3
XT0xMjQ2Ci0uWzBdWzEyNDhdPTEyNDcKLS5bMF1bMTI0OV09MTI0OAotLlswXVsxMjUwXT0xMjQ5
Ci0uWzBdWzEyNTFdPTEyNTAKLS5bMF1bMTI1Ml09MTI1MQotLlswXVsxMjUzXT0xMjUyCi0uWzBd
WzEyNTRdPTEyNTMKLS5bMF1bMTI1NV09MTI1NAotLlswXVsxMjU2XT0xMjU1Ci0uWzBdWzEyNTdd
PTEyNTYKLS5bMF1bMTI1OF09MTI1NwotLlswXVsxMjU5XT0xMjU4Ci0uWzBdWzEyNjBdPTEyNTkK
LS5bMF1bMTI2MV09MTI2MAotLlswXVsxMjYyXT0xMjYxCi0uWzBdWzEyNjNdPTEyNjIKLS5bMF1b
MTI2NF09MTI2MwotLlswXVsxMjY1XT0xMjY0Ci0uWzBdWzEyNjZdPTEyNjUKLS5bMF1bMTI2N109
MTI2NgotLlswXVsxMjY4XT0xMjY3Ci0uWzBdWzEyNjldPTEyNjgKLS5bMF1bMTI3MF09MTI2OQot
LlswXVsxMjcxXT0xMjcwCi0uWzBdWzEyNzJdPTEyNzEKLS5bMF1bMTI3M109MTI3MgotLlswXVsx
Mjc0XT0xMjczCi0uWzBdWzEyNzVdPTEyNzQKLS5bMF1bMTI3Nl09MTI3NQotLlswXVsxMjc3XT0x
Mjc2Ci0uWzBdWzEyNzhdPTEyNzcKLS5bMF1bMTI3OV09MTI3OAotLlswXVsxMjgwXT0xMjc5Ci0u
WzBdWzEyODFdPTEyODAKLS5bMF1bMTI4Ml09MTI4MQotLlswXVsxMjgzXT0xMjgyCi0uWzBdWzEy
ODRdPTEyODMKLS5bMF1bMTI4NV09MTI4NAotLlswXVsxMjg2XT0xMjg1Ci0uWzBdWzEyODddPTEy
ODYKLS5bMF1bMTI4OF09MTI4NwotLlswXVsxMjg5XT0xMjg4Ci0uWzBdWzEyOTBdPTEyODkKLS5b
MF1bMTI5MV09MTI5MAotLlswXVsxMjkyXT0xMjkxCi0uWzBdWzEyOTNdPTEyOTIKLS5bMF1bMTI5
NF09MTI5MwotLlswXVsxMjk1XT0xMjk0Ci0uWzBdWzEyOTZdPTEyOTUKLS5bMF1bMTI5N109MTI5
NgotLlswXVsxMjk4XT0xMjk3Ci0uWzBdWzEyOTldPTEyOTgKLS5bMF1bMTMwMF09MTI5OQotLlsw
XVsxMzAxXT0xMzAwCi0uWzBdWzEzMDJdPTEzMDEKLS5bMF1bMTMwM109MTMwMgotLlswXVsxMzA0
XT0xMzAzCi0uWzBdWzEzMDVdPTEzMDQKLS5bMF1bMTMwNl09MTMwNQotLlswXVsxMzA3XT0xMzA2
Ci0uWzBdWzEzMDhdPTEzMDcKLS5bMF1bMTMwOV09MTMwOAotLlswXVsxMzEwXT0xMzA5Ci0uWzBd
WzEzMTFdPTEzMTAKLS5bMF1bMTMxMl09MTMxMQotLlswXVsxMzEzXT0xMzEyCi0uWzBdWzEzMTRd
PTEzMTMKLS5bMF1bMTMxNV09MTMxNAotLlswXVsxMzE2XT0xMzE1Ci0uWzBdWzEzMTddPTEzMTYK
LS5bMF1bMTMxOF09MTMxNwotLlswXVsxMzE5XT0xMzE4Ci0uWzBdWzEzMjBdPTEzMTkKLS5bMF1b
MTMyMV09MTMyMAotLlswXVsxMzIyXT0xMzIxCi0uWzBdWzEzMjNdPTEzMjIKLS5bMF1bMTMyNF09
MTMyMwotLlswXVsxMzI1XT0xMzI0Ci0uWzBdWzEzMjZdPTEzMjUKLS5bMF1bMTMyN109MTMyNgot
LlswXVsxMzI4XT0xMzI3Ci0uWzBdWzEzMjldPTEzMjgKLS5bMF1bMTMzMF09MTMyOQotLlswXVsx
MzMxXT0xMzMwCi0uWzBdWzEzMzJdPTEzMzEKLS5bMF1bMTMzM109MTMzMgotLlswXVsxMzM0XT0x
MzMzCi0uWzBdWzEzMzVdPTEzMzQKLS5bMF1bMTMzNl09MTMzNQotLlswXVsxMzM3XT0xMzM2Ci0u
WzBdWzEzMzhdPTEzMzcKLS5bMF1bMTMzOV09MTMzOAotLlswXVsxMzQwXT0xMzM5Ci0uWzBdWzEz
NDFdPTEzNDAKLS5bMF1bMTM0Ml09MTM0MQotLlswXVsxMzQzXT0xMzQyCi0uWzBdWzEzNDRdPTEz
NDMKLS5bMF1bMTM0NV09MTM0NAotLlswXVsxMzQ2XT0xMzQ1Ci0uWzBdWzEzNDddPTEzNDYKLS5b
MF1bMTM0OF09MTM0NwotLlswXVsxMzQ5XT0xMzQ4Ci0uWzBdWzEzNTBdPTEzNDkKLS5bMF1bMTM1
MV09MTM1MAotLlswXVsxMzUyXT0xMzUxCi0uWzBdWzEzNTNdPTEzNTIKLS5bMF1bMTM1NF09MTM1
MwotLlswXVsxMzU1XT0xMzU0Ci0uWzBdWzEzNTZdPTEzNTUKLS5bMF1bMTM1N109MTM1NgotLlsw
XVsxMzU4XT0xMzU3Ci0uWzBdWzEzNTldPTEzNTgKLS5bMF1bMTM2MF09MTM1OQotLlswXVsxMzYx
XT0xMzYwCi0uWzBdWzEzNjJdPTEzNjEKLS5bMF1bMTM2M109MTM2MgotLlswXVsxMzY0XT0xMzYz
Ci0uWzBdWzEzNjVdPTEzNjQKLS5bMF1bMTM2Nl09MTM2NQotLlswXVsxMzY3XT0xMzY2Ci0uWzBd
WzEzNjhdPTEzNjcKLS5bMF1bMTM2OV09MTM2OAotLlswXVsxMzcwXT0xMzY5Ci0uWzBdWzEzNzFd
PTEzNzAKLS5bMF1bMTM3Ml09MTM3MQotLlswXVsxMzczXT0xMzcyCi0uWzBdWzEzNzRdPTEzNzMK
LS5bMF1bMTM3NV09MTM3NAotLlswXVsxMzc2XT0xMzc1Ci0uWzBdWzEzNzddPTEzNzYKLS5bMF1b
MTM3OF09MTM3NwotLlswXVsxMzc5XT0xMzc4Ci0uWzBdWzEzODBdPTEzNzkKLS5bMF1bMTM4MV09
MTM4MAotLlswXVsxMzgyXT0xMzgxCi0uWzBdWzEzODNdPTEzODIKLS5bMF1bMTM4NF09MTM4Mwot
LlswXVsxMzg1XT0xMzg0Ci0uWzBdWzEzODZdPTEzODUKLS5bMF1bMTM4N109MTM4NgotLlswXVsx
Mzg4XT0xMzg3Ci0uWzBdWzEzODldPTEzODgKLS5bMF1bMTM5MF09MTM4OQotLlswXVsxMzkxXT0x
MzkwCi0uWzBdWzEzOTJdPTEzOTEKLS5bMF1bMTM5M109MTM5MgotLlswXVsxMzk0XT0xMzkzCi0u
WzBdWzEzOTVdPTEzOTQKLS5bMF1bMTM5Nl09MTM5NQotLlswXVsxMzk3XT0xMzk2Ci0uWzBdWzEz
OThdPTEzOTcKLS5bMF1bMTM5OV09MTM5OAotLlswXVsxNDAwXT0xMzk5Ci0uWzBdWzE0MDFdPTE0
MDAKLS5bMF1bMTQwMl09MTQwMQotLlswXVsxNDAzXT0xNDAyCi0uWzBdWzE0MDRdPTE0MDMKLS5b
MF1bMTQwNV09MTQwNAotLlswXVsxNDA2XT0xNDA1Ci0uWzBdWzE0MDddPTE0MDYKLS5bMF1bMTQw
OF09MTQwNwotLlswXVsxNDA5XT0xNDA4Ci0uWzBdWzE0MTBdPTE0MDkKLS5bMF1bMTQxMV09MTQx
MAotLlswXVsxNDEyXT0xNDExCi0uWzBdWzE0MTNdPTE0MTIKLS5bMF1bMTQxNF09MTQxMwotLlsw
XVsxNDE1XT0xNDE0Ci0uWzBdWzE0MTZdPTE0MTUKLS5bMF1bMTQxN109MTQxNgotLlswXVsxNDE4
XT0xNDE3Ci0uWzBdWzE0MTldPTE0MTgKLS5bMF1bMTQyMF09MTQxOQotLlswXVsxNDIxXT0xNDIw
Ci0uWzBdWzE0MjJdPTE0MjEKLS5bMF1bMTQyM109MTQyMgotLlswXVsxNDI0XT0xNDIzCi0uWzBd
WzE0MjVdPTE0MjQKLS5bMF1bMTQyNl09MTQyNQotLlswXVsxNDI3XT0xNDI2Ci0uWzBdWzE0Mjhd
PTE0MjcKLS5bMF1bMTQyOV09MTQyOAotLlswXVsxNDMwXT0xNDI5Ci0uWzBdWzE0MzFdPTE0MzAK
LS5bMF1bMTQzMl09MTQzMQotLlswXVsxNDMzXT0xNDMyCi0uWzBdWzE0MzRdPTE0MzMKLS5bMF1b
MTQzNV09MTQzNAotLlswXVsxNDM2XT0xNDM1Ci0uWzBdWzE0MzddPTE0MzYKLS5bMF1bMTQzOF09
MTQzNwotLlswXVsxNDM5XT0xNDM4Ci0uWzBdWzE0NDBdPTE0MzkKLS5bMF1bMTQ0MV09MTQ0MAot
LlswXVsxNDQyXT0xNDQxCi0uWzBdWzE0NDNdPTE0NDIKLS5bMF1bMTQ0NF09MTQ0MwotLlswXVsx
NDQ1XT0xNDQ0Ci0uWzBdWzE0NDZdPTE0NDUKLS5bMF1bMTQ0N109MTQ0NgotLlswXVsxNDQ4XT0x
NDQ3Ci0uWzBdWzE0NDldPTE0NDgKLS5bMF1bMTQ1MF09MTQ0OQotLlswXVsxNDUxXT0xNDUwCi0u
WzBdWzE0NTJdPTE0NTEKLS5bMF1bMTQ1M109MTQ1MgotLlswXVsxNDU0XT0xNDUzCi0uWzBdWzE0
NTVdPTE0NTQKLS5bMF1bMTQ1Nl09MTQ1NQotLlswXVsxNDU3XT0xNDU2Ci0uWzBdWzE0NThdPTE0
NTcKLS5bMF1bMTQ1OV09MTQ1OAotLlswXVsxNDYwXT0xNDU5Ci0uWzBdWzE0NjFdPTE0NjAKLS5b
MF1bMTQ2Ml09MTQ2MQotLlswXVsxNDYzXT0xNDYyCi0uWzBdWzE0NjRdPTE0NjMKLS5bMF1bMTQ2
NV09MTQ2NAotLlswXVsxNDY2XT0xNDY1Ci0uWzBdWzE0NjddPTE0NjYKLS5bMF1bMTQ2OF09MTQ2
NwotLlswXVsxNDY5XT0xNDY4Ci0uWzBdWzE0NzBdPTE0NjkKLS5bMF1bMTQ3MV09MTQ3MAotLlsw
XVsxNDcyXT0xNDcxCi0uWzBdWzE0NzNdPTE0NzIKLS5bMF1bMTQ3NF09MTQ3MwotLlswXVsxNDc1
XT0xNDc0Ci0uWzBdWzE0NzZdPTE0NzUKLS5bMF1bMTQ3N109MTQ3NgotLlswXVsxNDc4XT0xNDc3
Ci0uWzBdWzE0NzldPTE0NzgKLS5bMF1bMTQ4MF09MTQ3OQotLlswXVsxNDgxXT0xNDgwCi0uWzBd
WzE0ODJdPTE0ODEKLS5bMF1bMTQ4M109MTQ4MgotLlswXVsxNDg0XT0xNDgzCi0uWzBdWzE0ODVd
PTE0ODQKLS5bMF1bMTQ4Nl09MTQ4NQotLlswXVsxNDg3XT0xNDg2Ci0uWzBdWzE0ODhdPTE0ODcK
LS5bMF1bMTQ4OV09MTQ4OAotLlswXVsxNDkwXT0xNDg5Ci0uWzBdWzE0OTFdPTE0OTAKLS5bMF1b
MTQ5Ml09MTQ5MQotLlswXVsxNDkzXT0xNDkyCi0uWzBdWzE0OTRdPTE0OTMKLS5bMF1bMTQ5NV09
MTQ5NAotLlswXVsxNDk2XT0xNDk1Ci0uWzBdWzE0OTddPTE0OTYKLS5bMF1bMTQ5OF09MTQ5Nwot
LlswXVsxNDk5XT0xNDk4Ci0uWzBdWzE1MDBdPTE0OTkKLS5bMF1bMTUwMV09MTUwMAotLlswXVsx
NTAyXT0xNTAxCi0uWzBdWzE1MDNdPTE1MDIKLS5bMF1bMTUwNF09MTUwMwotLlswXVsxNTA1XT0x
NTA0Ci0uWzBdWzE1MDZdPTE1MDUKLS5bMF1bMTUwN109MTUwNgotLlswXVsxNTA4XT0xNTA3Ci0u
WzBdWzE1MDldPTE1MDgKLS5bMF1bMTUxMF09MTUwOQotLlswXVsxNTExXT0xNTEwCi0uWzBdWzE1
MTJdPTE1MTEKLS5bMF1bMTUxM109MTUxMgotLlswXVsxNTE0XT0xNTEzCi0uWzBdWzE1MTVdPTE1
MTQKLS5bMF1bMTUxNl09MTUxNQotLlswXVsxNTE3XT0xNTE2Ci0uWzBdWzE1MThdPTE1MTcKLS5b
MF1bMTUxOV09MTUxOAotLlswXVsxNTIwXT0xNTE5Ci0uWzBdWzE1MjFdPTE1MjAKLS5bMF1bMTUy
Ml09MTUyMQotLlswXVsxNTIzXT0xNTIyCi0uWzBdWzE1MjRdPTE1MjMKLS5bMF1bMTUyNV09MTUy
NAotLlswXVsxNTI2XT0xNTI1Ci0uWzBdWzE1MjddPTE1MjYKLS5bMF1bMTUyOF09MTUyNwotLlsw
XVsxNTI5XT0xNTI4Ci0uWzBdWzE1MzBdPTE1MjkKLS5bMF1bMTUzMV09MTUzMAotLlswXVsxNTMy
XT0xNTMxCi0uWzBdWzE1MzNdPTE1MzIKLS5bMF1bMTUzNF09MTUzMwotLlswXVsxNTM1XT0xNTM0
Ci0uWzBdWzE1MzZdPTE1MzUKLS5bMF1bMTUzN109MTUzNgotLlswXVsxNTM4XT0xNTM3Ci0uWzBd
WzE1MzldPTE1MzgKLS5bMF1bMTU0MF09MTUzOQotLlswXVsxNTQxXT0xNTQwCi0uWzBdWzE1NDJd
PTE1NDEKLS5bMF1bMTU0M109MTU0MgotLlswXVsxNTQ0XT0xNTQzCi0uWzBdWzE1NDVdPTE1NDQK
LS5bMF1bMTU0Nl09MTU0NQotLlswXVsxNTQ3XT0xNTQ2Ci0uWzBdWzE1NDhdPTE1NDcKLS5bMF1b
MTU0OV09MTU0OAotLlswXVsxNTUwXT0xNTQ5Ci0uWzBdWzE1NTFdPTE1NTAKLS5bMF1bMTU1Ml09
MTU1MQotLlswXVsxNTUzXT0xNTUyCi0uWzBdWzE1NTRdPTE1NTMKLS5bMF1bMTU1NV09MTU1NAot
LlswXVsxNTU2XT0xNTU1Ci0uWzBdWzE1NTddPTE1NTYKLS5bMF1bMTU1OF09MTU1NwotLlswXVsx
NTU5XT0xNTU4Ci0uWzBdWzE1NjBdPTE1NTkKLS5bMF1bMTU2MV09MTU2MAotLlswXVsxNTYyXT0x
NTYxCi0uWzBdWzE1NjNdPTE1NjIKLS5bMF1bMTU2NF09MTU2MwotLlswXVsxNTY1XT0xNTY0Ci0u
WzBdWzE1NjZdPTE1NjUKLS5bMF1bMTU2N109MTU2NgotLlswXVsxNTY4XT0xNTY3Ci0uWzBdWzE1
NjldPTE1NjgKLS5bMF1bMTU3MF09MTU2OQotLlswXVsxNTcxXT0xNTcwCi0uWzBdWzE1NzJdPTE1
NzEKLS5bMF1bMTU3M109MTU3MgotLlswXVsxNTc0XT0xNTczCi0uWzBdWzE1NzVdPTE1NzQKLS5b
MF1bMTU3Nl09MTU3NQotLlswXVsxNTc3XT0xNTc2Ci0uWzBdWzE1NzhdPTE1NzcKLS5bMF1bMTU3
OV09MTU3OAotLlswXVsxNTgwXT0xNTc5Ci0uWzBdWzE1ODFdPTE1ODAKLS5bMF1bMTU4Ml09MTU4
MQotLlswXVsxNTgzXT0xNTgyCi0uWzBdWzE1ODRdPTE1ODMKLS5bMF1bMTU4NV09MTU4NAotLlsw
XVsxNTg2XT0xNTg1Ci0uWzBdWzE1ODddPTE1ODYKLS5bMF1bMTU4OF09MTU4NwotLlswXVsxNTg5
XT0xNTg4Ci0uWzBdWzE1OTBdPTE1ODkKLS5bMF1bMTU5MV09MTU5MAotLlswXVsxNTkyXT0xNTkx
Ci0uWzBdWzE1OTNdPTE1OTIKLS5bMF1bMTU5NF09MTU5MwotLlswXVsxNTk1XT0xNTk0Ci0uWzBd
WzE1OTZdPTE1OTUKLS5bMF1bMTU5N109MTU5NgotLlswXVsxNTk4XT0xNTk3Ci0uWzBdWzE1OTld
PTE1OTgKLS5bMF1bMTYwMF09MTU5OQotLlswXVsxNjAxXT0xNjAwCi0uWzBdWzE2MDJdPTE2MDEK
LS5bMF1bMTYwM109MTYwMgotLlswXVsxNjA0XT0xNjAzCi0uWzBdWzE2MDVdPTE2MDQKLS5bMF1b
MTYwNl09MTYwNQotLlswXVsxNjA3XT0xNjA2Ci0uWzBdWzE2MDhdPTE2MDcKLS5bMF1bMTYwOV09
MTYwOAotLlswXVsxNjEwXT0xNjA5Ci0uWzBdWzE2MTFdPTE2MTAKLS5bMF1bMTYxMl09MTYxMQot
LlswXVsxNjEzXT0xNjEyCi0uWzBdWzE2MTRdPTE2MTMKLS5bMF1bMTYxNV09MTYxNAotLlswXVsx
NjE2XT0xNjE1Ci0uWzBdWzE2MTddPTE2MTYKLS5bMF1bMTYxOF09MTYxNwotLlswXVsxNjE5XT0x
NjE4Ci0uWzBdWzE2MjBdPTE2MTkKLS5bMF1bMTYyMV09MTYyMAotLlswXVsxNjIyXT0xNjIxCi0u
WzBdWzE2MjNdPTE2MjIKLS5bMF1bMTYyNF09MTYyMwotLlswXVsxNjI1XT0xNjI0Ci0uWzBdWzE2
MjZdPTE2MjUKLS5bMF1bMTYyN109MTYyNgotLlswXVsxNjI4XT0xNjI3Ci0uWzBdWzE2MjldPTE2
MjgKLS5bMF1bMTYzMF09MTYyOQotLlswXVsxNjMxXT0xNjMwCi0uWzBdWzE2MzJdPTE2MzEKLS5b
MF1bMTYzM109MTYzMgotLlswXVsxNjM0XT0xNjMzCi0uWzBdWzE2MzVdPTE2MzQKLS5bMF1bMTYz
Nl09MTYzNQotLlswXVsxNjM3XT0xNjM2Ci0uWzBdWzE2MzhdPTE2MzcKLS5bMF1bMTYzOV09MTYz
OAotLlswXVsxNjQwXT0xNjM5Ci0uWzBdWzE2NDFdPTE2NDAKLS5bMF1bMTY0Ml09MTY0MQotLlsw
XVsxNjQzXT0xNjQyCi0uWzBdWzE2NDRdPTE2NDMKLS5bMF1bMTY0NV09MTY0NAotLlswXVsxNjQ2
XT0xNjQ1Ci0uWzBdWzE2NDddPTE2NDYKLS5bMF1bMTY0OF09MTY0NwotLlswXVsxNjQ5XT0xNjQ4
Ci0uWzBdWzE2NTBdPTE2NDkKLS5bMF1bMTY1MV09MTY1MAotLlswXVsxNjUyXT0xNjUxCi0uWzBd
WzE2NTNdPTE2NTIKLS5bMF1bMTY1NF09MTY1MwotLlswXVsxNjU1XT0xNjU0Ci0uWzBdWzE2NTZd
PTE2NTUKLS5bMF1bMTY1N109MTY1NgotLlswXVsxNjU4XT0xNjU3Ci0uWzBdWzE2NTldPTE2NTgK
LS5bMF1bMTY2MF09MTY1OQotLlswXVsxNjYxXT0xNjYwCi0uWzBdWzE2NjJdPTE2NjEKLS5bMF1b
MTY2M109MTY2MgotLlswXVsxNjY0XT0xNjYzCi0uWzBdWzE2NjVdPTE2NjQKLS5bMF1bMTY2Nl09
MTY2NQotLlswXVsxNjY3XT0xNjY2Ci0uWzBdWzE2NjhdPTE2NjcKLS5bMF1bMTY2OV09MTY2OAot
LlswXVsxNjcwXT0xNjY5Ci0uWzBdWzE2NzFdPTE2NzAKLS5bMF1bMTY3Ml09MTY3MQotLlswXVsx
NjczXT0xNjcyCi0uWzBdWzE2NzRdPTE2NzMKLS5bMF1bMTY3NV09MTY3NAotLlswXVsxNjc2XT0x
Njc1Ci0uWzBdWzE2NzddPTE2NzYKLS5bMF1bMTY3OF09MTY3NwotLlswXVsxNjc5XT0xNjc4Ci0u
WzBdWzE2ODBdPTE2NzkKLS5bMF1bMTY4MV09MTY4MAotLlswXVsxNjgyXT0xNjgxCi0uWzBdWzE2
ODNdPTE2ODIKLS5bMF1bMTY4NF09MTY4MwotLlswXVsxNjg1XT0xNjg0Ci0uWzBdWzE2ODZdPTE2
ODUKLS5bMF1bMTY4N109MTY4NgotLlswXVsxNjg4XT0xNjg3Ci0uWzBdWzE2ODldPTE2ODgKLS5b
MF1bMTY5MF09MTY4OQotLlswXVsxNjkxXT0xNjkwCi0uWzBdWzE2OTJdPTE2OTEKLS5bMF1bMTY5
M109MTY5MgotLlswXVsxNjk0XT0xNjkzCi0uWzBdWzE2OTVdPTE2OTQKLS5bMF1bMTY5Nl09MTY5
NQotLlswXVsxNjk3XT0xNjk2Ci0uWzBdWzE2OThdPTE2OTcKLS5bMF1bMTY5OV09MTY5OAotLlsw
XVsxNzAwXT0xNjk5Ci0uWzBdWzE3MDFdPTE3MDAKLS5bMF1bMTcwMl09MTcwMQotLlswXVsxNzAz
XT0xNzAyCi0uWzBdWzE3MDRdPTE3MDMKLS5bMF1bMTcwNV09MTcwNAotLlswXVsxNzA2XT0xNzA1
Ci0uWzBdWzE3MDddPTE3MDYKLS5bMF1bMTcwOF09MTcwNwotLlswXVsxNzA5XT0xNzA4Ci0uWzBd
WzE3MTBdPTE3MDkKLS5bMF1bMTcxMV09MTcxMAotLlswXVsxNzEyXT0xNzExCi0uWzBdWzE3MTNd
PTE3MTIKLS5bMF1bMTcxNF09MTcxMwotLlswXVsxNzE1XT0xNzE0Ci0uWzBdWzE3MTZdPTE3MTUK
LS5bMF1bMTcxN109MTcxNgotLlswXVsxNzE4XT0xNzE3Ci0uWzBdWzE3MTldPTE3MTgKLS5bMF1b
MTcyMF09MTcxOQotLlswXVsxNzIxXT0xNzIwCi0uWzBdWzE3MjJdPTE3MjEKLS5bMF1bMTcyM109
MTcyMgotLlswXVsxNzI0XT0xNzIzCi0uWzBdWzE3MjVdPTE3MjQKLS5bMF1bMTcyNl09MTcyNQot
LlswXVsxNzI3XT0xNzI2Ci0uWzBdWzE3MjhdPTE3MjcKLS5bMF1bMTcyOV09MTcyOAotLlswXVsx
NzMwXT0xNzI5Ci0uWzBdWzE3MzFdPTE3MzAKLS5bMF1bMTczMl09MTczMQotLlswXVsxNzMzXT0x
NzMyCi0uWzBdWzE3MzRdPTE3MzMKLS5bMF1bMTczNV09MTczNAotLlswXVsxNzM2XT0xNzM1Ci0u
WzBdWzE3MzddPTE3MzYKLS5bMF1bMTczOF09MTczNwotLlswXVsxNzM5XT0xNzM4Ci0uWzBdWzE3
NDBdPTE3MzkKLS5bMF1bMTc0MV09MTc0MAotLlswXVsxNzQyXT0xNzQxCi0uWzBdWzE3NDNdPTE3
NDIKLS5bMF1bMTc0NF09MTc0MwotLlswXVsxNzQ1XT0xNzQ0Ci0uWzBdWzE3NDZdPTE3NDUKLS5b
MF1bMTc0N109MTc0NgotLlswXVsxNzQ4XT0xNzQ3Ci0uWzBdWzE3NDldPTE3NDgKLS5bMF1bMTc1
MF09MTc0OQotLlswXVsxNzUxXT0xNzUwCi0uWzBdWzE3NTJdPTE3NTEKLS5bMF1bMTc1M109MTc1
MgotLlswXVsxNzU0XT0xNzUzCi0uWzBdWzE3NTVdPTE3NTQKLS5bMF1bMTc1Nl09MTc1NQotLlsw
XVsxNzU3XT0xNzU2Ci0uWzBdWzE3NThdPTE3NTcKLS5bMF1bMTc1OV09MTc1OAotLlswXVsxNzYw
XT0xNzU5Ci0uWzBdWzE3NjFdPTE3NjAKLS5bMF1bMTc2Ml09MTc2MQotLlswXVsxNzYzXT0xNzYy
Ci0uWzBdWzE3NjRdPTE3NjMKLS5bMF1bMTc2NV09MTc2NAotLlswXVsxNzY2XT0xNzY1Ci0uWzBd
WzE3NjddPTE3NjYKLS5bMF1bMTc2OF09MTc2NwotLlswXVsxNzY5XT0xNzY4Ci0uWzBdWzE3NzBd
PTE3NjkKLS5bMF1bMTc3MV09MTc3MAotLlswXVsxNzcyXT0xNzcxCi0uWzBdWzE3NzNdPTE3NzIK
LS5bMF1bMTc3NF09MTc3MwotLlswXVsxNzc1XT0xNzc0Ci0uWzBdWzE3NzZdPTE3NzUKLS5bMF1b
MTc3N109MTc3NgotLlswXVsxNzc4XT0xNzc3Ci0uWzBdWzE3NzldPTE3NzgKLS5bMF1bMTc4MF09
MTc3OQotLlswXVsxNzgxXT0xNzgwCi0uWzBdWzE3ODJdPTE3ODEKLS5bMF1bMTc4M109MTc4Mgot
LlswXVsxNzg0XT0xNzgzCi0uWzBdWzE3ODVdPTE3ODQKLS5bMF1bMTc4Nl09MTc4NQotLlswXVsx
Nzg3XT0xNzg2Ci0uWzBdWzE3ODhdPTE3ODcKLS5bMF1bMTc4OV09MTc4OAotLlswXVsxNzkwXT0x
Nzg5Ci0uWzBdWzE3OTFdPTE3OTAKLS5bMF1bMTc5Ml09MTc5MQotLlswXVsxNzkzXT0xNzkyCi0u
WzBdWzE3OTRdPTE3OTMKLS5bMF1bMTc5NV09MTc5NAotLlswXVsxNzk2XT0xNzk1Ci0uWzBdWzE3
OTddPTE3OTYKLS5bMF1bMTc5OF09MTc5NwotLlswXVsxNzk5XT0xNzk4Ci0uWzBdWzE4MDBdPTE3
OTkKLS5bMF1bMTgwMV09MTgwMAotLlswXVsxODAyXT0xODAxCi0uWzBdWzE4MDNdPTE4MDIKLS5b
MF1bMTgwNF09MTgwMwotLlswXVsxODA1XT0xODA0Ci0uWzBdWzE4MDZdPTE4MDUKLS5bMF1bMTgw
N109MTgwNgotLlswXVsxODA4XT0xODA3Ci0uWzBdWzE4MDldPTE4MDgKLS5bMF1bMTgxMF09MTgw
OQotLlswXVsxODExXT0xODEwCi0uWzBdWzE4MTJdPTE4MTEKLS5bMF1bMTgxM109MTgxMgotLlsw
XVsxODE0XT0xODEzCi0uWzBdWzE4MTVdPTE4MTQKLS5bMF1bMTgxNl09MTgxNQotLlswXVsxODE3
XT0xODE2Ci0uWzBdWzE4MThdPTE4MTcKLS5bMF1bMTgxOV09MTgxOAotLlswXVsxODIwXT0xODE5
Ci0uWzBdWzE4MjFdPTE4MjAKLS5bMF1bMTgyMl09MTgyMQotLlswXVsxODIzXT0xODIyCi0uWzBd
WzE4MjRdPTE4MjMKLS5bMF1bMTgyNV09MTgyNAotLlswXVsxODI2XT0xODI1Ci0uWzBdWzE4Mjdd
PTE4MjYKLS5bMF1bMTgyOF09MTgyNwotLlswXVsxODI5XT0xODI4Ci0uWzBdWzE4MzBdPTE4MjkK
LS5bMF1bMTgzMV09MTgzMAotLlswXVsxODMyXT0xODMxCi0uWzBdWzE4MzNdPTE4MzIKLS5bMF1b
MTgzNF09MTgzMwotLlswXVsxODM1XT0xODM0Ci0uWzBdWzE4MzZdPTE4MzUKLS5bMF1bMTgzN109
MTgzNgotLlswXVsxODM4XT0xODM3Ci0uWzBdWzE4MzldPTE4MzgKLS5bMF1bMTg0MF09MTgzOQot
LlswXVsxODQxXT0xODQwCi0uWzBdWzE4NDJdPTE4NDEKLS5bMF1bMTg0M109MTg0MgotLlswXVsx
ODQ0XT0xODQzCi0uWzBdWzE4NDVdPTE4NDQKLS5bMF1bMTg0Nl09MTg0NQotLlswXVsxODQ3XT0x
ODQ2Ci0uWzBdWzE4NDhdPTE4NDcKLS5bMF1bMTg0OV09MTg0OAotLlswXVsxODUwXT0xODQ5Ci0u
WzBdWzE4NTFdPTE4NTAKLS5bMF1bMTg1Ml09MTg1MQotLlswXVsxODUzXT0xODUyCi0uWzBdWzE4
NTRdPTE4NTMKLS5bMF1bMTg1NV09MTg1NAotLlswXVsxODU2XT0xODU1Ci0uWzBdWzE4NTddPTE4
NTYKLS5bMF1bMTg1OF09MTg1NwotLlswXVsxODU5XT0xODU4Ci0uWzBdWzE4NjBdPTE4NTkKLS5b
MF1bMTg2MV09MTg2MAotLlswXVsxODYyXT0xODYxCi0uWzBdWzE4NjNdPTE4NjIKLS5bMF1bMTg2
NF09MTg2MwotLlswXVsxODY1XT0xODY0Ci0uWzBdWzE4NjZdPTE4NjUKLS5bMF1bMTg2N109MTg2
NgotLlswXVsxODY4XT0xODY3Ci0uWzBdWzE4NjldPTE4NjgKLS5bMF1bMTg3MF09MTg2OQotLlsw
XVsxODcxXT0xODcwCi0uWzBdWzE4NzJdPTE4NzEKLS5bMF1bMTg3M109MTg3MgotLlswXVsxODc0
XT0xODczCi0uWzBdWzE4NzVdPTE4NzQKLS5bMF1bMTg3Nl09MTg3NQotLlswXVsxODc3XT0xODc2
Ci0uWzBdWzE4NzhdPTE4NzcKLS5bMF1bMTg3OV09MTg3OAotLlswXVsxODgwXT0xODc5Ci0uWzBd
WzE4ODFdPTE4ODAKLS5bMF1bMTg4Ml09MTg4MQotLlswXVsxODgzXT0xODgyCi0uWzBdWzE4ODRd
PTE4ODMKLS5bMF1bMTg4NV09MTg4NAotLlswXVsxODg2XT0xODg1Ci0uWzBdWzE4ODddPTE4ODYK
LS5bMF1bMTg4OF09MTg4NwotLlswXVsxODg5XT0xODg4Ci0uWzBdWzE4OTBdPTE4ODkKLS5bMF1b
MTg5MV09MTg5MAotLlswXVsxODkyXT0xODkxCi0uWzBdWzE4OTNdPTE4OTIKLS5bMF1bMTg5NF09
MTg5MwotLlswXVsxODk1XT0xODk0Ci0uWzBdWzE4OTZdPTE4OTUKLS5bMF1bMTg5N109MTg5Ngot
LlswXVsxODk4XT0xODk3Ci0uWzBdWzE4OTldPTE4OTgKLS5bMF1bMTkwMF09MTg5OQotLlswXVsx
OTAxXT0xOTAwCi0uWzBdWzE5MDJdPTE5MDEKLS5bMF1bMTkwM109MTkwMgotLlswXVsxOTA0XT0x
OTAzCi0uWzBdWzE5MDVdPTE5MDQKLS5bMF1bMTkwNl09MTkwNQotLlswXVsxOTA3XT0xOTA2Ci0u
WzBdWzE5MDhdPTE5MDcKLS5bMF1bMTkwOV09MTkwOAotLlswXVsxOTEwXT0xOTA5Ci0uWzBdWzE5
MTFdPTE5MTAKLS5bMF1bMTkxMl09MTkxMQotLlswXVsxOTEzXT0xOTEyCi0uWzBdWzE5MTRdPTE5
MTMKLS5bMF1bMTkxNV09MTkxNAotLlswXVsxOTE2XT0xOTE1Ci0uWzBdWzE5MTddPTE5MTYKLS5b
MF1bMTkxOF09MTkxNwotLlswXVsxOTE5XT0xOTE4Ci0uWzBdWzE5MjBdPTE5MTkKLS5bMF1bMTky
MV09MTkyMAotLlswXVsxOTIyXT0xOTIxCi0uWzBdWzE5MjNdPTE5MjIKLS5bMF1bMTkyNF09MTky
MwotLlswXVsxOTI1XT0xOTI0Ci0uWzBdWzE5MjZdPTE5MjUKLS5bMF1bMTkyN109MTkyNgotLlsw
XVsxOTI4XT0xOTI3Ci0uWzBdWzE5MjldPTE5MjgKLS5bMF1bMTkzMF09MTkyOQotLlswXVsxOTMx
XT0xOTMwCi0uWzBdWzE5MzJdPTE5MzEKLS5bMF1bMTkzM109MTkzMgotLlswXVsxOTM0XT0xOTMz
Ci0uWzBdWzE5MzVdPTE5MzQKLS5bMF1bMTkzNl09MTkzNQotLlswXVsxOTM3XT0xOTM2Ci0uWzBd
WzE5MzhdPTE5MzcKLS5bMF1bMTkzOV09MTkzOAotLlswXVsxOTQwXT0xOTM5Ci0uWzBdWzE5NDFd
PTE5NDAKLS5bMF1bMTk0Ml09MTk0MQotLlswXVsxOTQzXT0xOTQyCi0uWzBdWzE5NDRdPTE5NDMK
LS5bMF1bMTk0NV09MTk0NAotLlswXVsxOTQ2XT0xOTQ1Ci0uWzBdWzE5NDddPTE5NDYKLS5bMF1b
MTk0OF09MTk0NwotLlswXVsxOTQ5XT0xOTQ4Ci0uWzBdWzE5NTBdPTE5NDkKLS5bMF1bMTk1MV09
MTk1MAotLlswXVsxOTUyXT0xOTUxCi0uWzBdWzE5NTNdPTE5NTIKLS5bMF1bMTk1NF09MTk1Mwot
LlswXVsxOTU1XT0xOTU0Ci0uWzBdWzE5NTZdPTE5NTUKLS5bMF1bMTk1N109MTk1NgotLlswXVsx
OTU4XT0xOTU3Ci0uWzBdWzE5NTldPTE5NTgKLS5bMF1bMTk2MF09MTk1OQotLlswXVsxOTYxXT0x
OTYwCi0uWzBdWzE5NjJdPTE5NjEKLS5bMF1bMTk2M109MTk2MgotLlswXVsxOTY0XT0xOTYzCi0u
WzBdWzE5NjVdPTE5NjQKLS5bMF1bMTk2Nl09MTk2NQotLlswXVsxOTY3XT0xOTY2Ci0uWzBdWzE5
NjhdPTE5NjcKLS5bMF1bMTk2OV09MTk2OAotLlswXVsxOTcwXT0xOTY5Ci0uWzBdWzE5NzFdPTE5
NzAKLS5bMF1bMTk3Ml09MTk3MQotLlswXVsxOTczXT0xOTcyCi0uWzBdWzE5NzRdPTE5NzMKLS5b
MF1bMTk3NV09MTk3NAotLlswXVsxOTc2XT0xOTc1Ci0uWzBdWzE5NzddPTE5NzYKLS5bMF1bMTk3
OF09MTk3NwotLlswXVsxOTc5XT0xOTc4Ci0uWzBdWzE5ODBdPTE5NzkKLS5bMF1bMTk4MV09MTk4
MAotLlswXVsxOTgyXT0xOTgxCi0uWzBdWzE5ODNdPTE5ODIKLS5bMF1bMTk4NF09MTk4MwotLlsw
XVsxOTg1XT0xOTg0Ci0uWzBdWzE5ODZdPTE5ODUKLS5bMF1bMTk4N109MTk4NgotLlswXVsxOTg4
XT0xOTg3Ci0uWzBdWzE5ODldPTE5ODgKLS5bMF1bMTk5MF09MTk4OQotLlswXVsxOTkxXT0xOTkw
Ci0uWzBdWzE5OTJdPTE5OTEKLS5bMF1bMTk5M109MTk5MgotLlswXVsxOTk0XT0xOTkzCi0uWzBd
WzE5OTVdPTE5OTQKLS5bMF1bMTk5Nl09MTk5NQotLlswXVsxOTk3XT0xOTk2Ci0uWzBdWzE5OThd
PTE5OTcKLS5bMF1bMTk5OV09MTk5OAotLlswXVsyMDAwXT0xOTk5Ci0uWzBdWzIwMDFdPTIwMDAK
LS5bMF1bMjAwMl09MjAwMQotLlswXVsyMDAzXT0yMDAyCi0uWzBdWzIwMDRdPTIwMDMKLS5bMF1b
MjAwNV09MjAwNAotLlswXVsyMDA2XT0yMDA1Ci0uWzBdWzIwMDddPTIwMDYKLS5bMF1bMjAwOF09
MjAwNwotLlswXVsyMDA5XT0yMDA4Ci0uWzBdWzIwMTBdPTIwMDkKLS5bMF1bMjAxMV09MjAxMAot
LlswXVsyMDEyXT0yMDExCi0uWzBdWzIwMTNdPTIwMTIKLS5bMF1bMjAxNF09MjAxMwotLlswXVsy
MDE1XT0yMDE0Ci0uWzBdWzIwMTZdPTIwMTUKLS5bMF1bMjAxN109MjAxNgotLlswXVsyMDE4XT0y
MDE3Ci0uWzBdWzIwMTldPTIwMTgKLS5bMF1bMjAyMF09MjAxOQotLlswXVsyMDIxXT0yMDIwCi0u
WzBdWzIwMjJdPTIwMjEKLS5bMF1bMjAyM109MjAyMgotLlswXVsyMDI0XT0yMDIzCi0uWzBdWzIw
MjVdPTIwMjQKLS5bMF1bMjAyNl09MjAyNQotLlswXVsyMDI3XT0yMDI2Ci0uWzBdWzIwMjhdPTIw
MjcKLS5bMF1bMjAyOV09MjAyOAotLlswXVsyMDMwXT0yMDI5Ci0uWzBdWzIwMzFdPTIwMzAKLS5b
MF1bMjAzMl09MjAzMQotLlswXVsyMDMzXT0yMDMyCi0uWzBdWzIwMzRdPTIwMzMKLS5bMF1bMjAz
NV09MjAzNAotLlswXVsyMDM2XT0yMDM1Ci0uWzBdWzIwMzddPTIwMzYKLS5bMF1bMjAzOF09MjAz
NwotLlswXVsyMDM5XT0yMDM4Ci0uWzBdWzIwNDBdPTIwMzkKLS5bMF1bMjA0MV09MjA0MAotLlsw
XVsyMDQyXT0yMDQxCi0uWzBdWzIwNDNdPTIwNDIKLS5bMF1bMjA0NF09MjA0MwotLlswXVsyMDQ1
XT0yMDQ0Ci0uWzBdWzIwNDZdPTIwNDUKLS5bMF1bMjA0N109MjA0NgotLlswXVsyMDQ4XT0yMDQ3
Ci0uWzBdWzIwNDldPTIwNDgKLS5bMF1bMjA1MF09MjA0OQotLlswXVsyMDUxXT0yMDUwCi0uWzBd
WzIwNTJdPTIwNTEKLS5bMF1bMjA1M109MjA1MgotLlswXVsyMDU0XT0yMDUzCi0uWzBdWzIwNTVd
PTIwNTQKLS5bMF1bMjA1Nl09MjA1NQotLlswXVsyMDU3XT0yMDU2Ci0uWzBdWzIwNThdPTIwNTcK
LS5bMF1bMjA1OV09MjA1OAotLlswXVsyMDYwXT0yMDU5Ci0uWzBdWzIwNjFdPTIwNjAKLS5bMF1b
MjA2Ml09MjA2MQotLlswXVsyMDYzXT0yMDYyCi0uWzBdWzIwNjRdPTIwNjMKLS5bMF1bMjA2NV09
MjA2NAotLlswXVsyMDY2XT0yMDY1Ci0uWzBdWzIwNjddPTIwNjYKLS5bMF1bMjA2OF09MjA2Nwot
LlswXVsyMDY5XT0yMDY4Ci0uWzBdWzIwNzBdPTIwNjkKLS5bMF1bMjA3MV09MjA3MAotLlswXVsy
MDcyXT0yMDcxCi0uWzBdWzIwNzNdPTIwNzIKLS5bMF1bMjA3NF09MjA3MwotLlswXVsyMDc1XT0y
MDc0Ci0uWzBdWzIwNzZdPTIwNzUKLS5bMF1bMjA3N109MjA3NgotLlswXVsyMDc4XT0yMDc3Ci0u
WzBdWzIwNzldPTIwNzgKLS5bMF1bMjA4MF09MjA3OQotLlswXVsyMDgxXT0yMDgwCi0uWzBdWzIw
ODJdPTIwODEKLS5bMF1bMjA4M109MjA4MgotLlswXVsyMDg0XT0yMDgzCi0uWzBdWzIwODVdPTIw
ODQKLS5bMF1bMjA4Nl09MjA4NQotLlswXVsyMDg3XT0yMDg2Ci0uWzBdWzIwODhdPTIwODcKLS5b
MF1bMjA4OV09MjA4OAotLlswXVsyMDkwXT0yMDg5Ci0uWzBdWzIwOTFdPTIwOTAKLS5bMF1bMjA5
Ml09MjA5MQotLlswXVsyMDkzXT0yMDkyCi0uWzBdWzIwOTRdPTIwOTMKLS5bMF1bMjA5NV09MjA5
NAotLlswXVsyMDk2XT0yMDk1Ci0uWzBdWzIwOTddPTIwOTYKLS5bMF1bMjA5OF09MjA5NwotLlsw
XVsyMDk5XT0yMDk4Ci0uWzBdWzIxMDBdPTIwOTkKLS5bMF1bMjEwMV09MjEwMAotLlswXVsyMTAy
XT0yMTAxCi0uWzBdWzIxMDNdPTIxMDIKLS5bMF1bMjEwNF09MjEwMwotLlswXVsyMTA1XT0yMTA0
Ci0uWzBdWzIxMDZdPTIxMDUKLS5bMF1bMjEwN109MjEwNgotLlswXVsyMTA4XT0yMTA3Ci0uWzBd
WzIxMDldPTIxMDgKLS5bMF1bMjExMF09MjEwOQotLlswXVsyMTExXT0yMTEwCi0uWzBdWzIxMTJd
PTIxMTEKLS5bMF1bMjExM109MjExMgotLlswXVsyMTE0XT0yMTEzCi0uWzBdWzIxMTVdPTIxMTQK
LS5bMF1bMjExNl09MjExNQotLlswXVsyMTE3XT0yMTE2Ci0uWzBdWzIxMThdPTIxMTcKLS5bMF1b
MjExOV09MjExOApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5qc29u
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlNGFiNGNkNDMzMGNmZmYwZjIxNWU2N2YzODg2ZmQxZDI4NmU0MzJjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfYXJyYXlfMDcuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotW1siQSIs
MCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwy
MiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0
MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2
MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3
OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5
OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIs
MTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwx
MjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0
MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1
LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjks
MTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4Mywx
ODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5
OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEy
LDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYs
MjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwy
NDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1
NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5
LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMs
Mjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5Nywy
OTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMx
MiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2
LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAs
MzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwz
NTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2
OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgz
LDM4NCwzODUsMzg2LDM4NywzODgsMzg5LDM5MCwzOTEsMzkyLDM5MywzOTQsMzk1LDM5NiwzOTcs
Mzk4LDM5OSw0MDAsNDAxLDQwMiw0MDMsNDA0LDQwNSw0MDYsNDA3LDQwOCw0MDksNDEwLDQxMSw0
MTIsNDEzLDQxNCw0MTUsNDE2LDQxNyw0MTgsNDE5LDQyMCw0MjEsNDIyLDQyMyw0MjQsNDI1LDQy
Niw0MjcsNDI4LDQyOSw0MzAsNDMxLDQzMiw0MzMsNDM0LDQzNSw0MzYsNDM3LDQzOCw0MzksNDQw
LDQ0MSw0NDIsNDQzLDQ0NCw0NDUsNDQ2LDQ0Nyw0NDgsNDQ5LDQ1MCw0NTEsNDUyLDQ1Myw0NTQs
NDU1LDQ1Niw0NTcsNDU4LDQ1OSw0NjAsNDYxLDQ2Miw0NjMsNDY0LDQ2NSw0NjYsNDY3LDQ2OCw0
NjksNDcwLDQ3MSw0NzIsNDczLDQ3NCw0NzUsNDc2LDQ3Nyw0NzgsNDc5LDQ4MCw0ODEsNDgyLDQ4
Myw0ODQsNDg1LDQ4Niw0ODcsNDg4LDQ4OSw0OTAsNDkxLDQ5Miw0OTMsNDk0LDQ5NSw0OTYsNDk3
LDQ5OCw0OTksNTAwLDUwMSw1MDIsNTAzLDUwNCw1MDUsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEs
NTEyLDUxMyw1MTQsNTE1LDUxNiw1MTcsNTE4LDUxOSw1MjAsNTIxLDUyMiw1MjMsNTI0LDUyNSw1
MjYsNTI3LDUyOCw1MjksNTMwLDUzMSw1MzIsNTMzLDUzNCw1MzUsNTM2LDUzNyw1MzgsNTM5LDU0
MCw1NDEsNTQyLDU0Myw1NDQsNTQ1LDU0Niw1NDcsNTQ4LDU0OSw1NTAsNTUxLDU1Miw1NTMsNTU0
LDU1NSw1NTYsNTU3LDU1OCw1NTksNTYwLDU2MSw1NjIsNTYzLDU2NCw1NjUsNTY2LDU2Nyw1Njgs
NTY5LDU3MCw1NzEsNTcyLDU3Myw1NzQsNTc1LDU3Niw1NzcsNTc4LDU3OSw1ODAsNTgxLDU4Miw1
ODMsNTg0LDU4NSw1ODYsNTg3LDU4OCw1ODksNTkwLDU5MSw1OTIsNTkzLDU5NCw1OTUsNTk2LDU5
Nyw1OTgsNTk5LDYwMCw2MDEsNjAyLDYwMyw2MDQsNjA1LDYwNiw2MDcsNjA4LDYwOSw2MTAsNjEx
LDYxMiw2MTMsNjE0LDYxNSw2MTYsNjE3LDYxOCw2MTksNjIwLDYyMSw2MjIsNjIzLDYyNCw2MjUs
NjI2LDYyNyw2MjgsNjI5LDYzMCw2MzEsNjMyLDYzMyw2MzQsNjM1LDYzNiw2MzcsNjM4LDYzOSw2
NDAsNjQxLDY0Miw2NDMsNjQ0LDY0NSw2NDYsNjQ3LDY0OCw2NDksNjUwLDY1MSw2NTIsNjUzLDY1
NCw2NTUsNjU2LDY1Nyw2NTgsNjU5LDY2MCw2NjEsNjYyLDY2Myw2NjQsNjY1LDY2Niw2NjcsNjY4
LDY2OSw2NzAsNjcxLDY3Miw2NzMsNjc0LDY3NSw2NzYsNjc3LDY3OCw2NzksNjgwLDY4MSw2ODIs
NjgzLDY4NCw2ODUsNjg2LDY4Nyw2ODgsNjg5LDY5MCw2OTEsNjkyLDY5Myw2OTQsNjk1LDY5Niw2
OTcsNjk4LDY5OSw3MDAsNzAxLDcwMiw3MDMsNzA0LDcwNSw3MDYsNzA3LDcwOCw3MDksNzEwLDcx
MSw3MTIsNzEzLDcxNCw3MTUsNzE2LDcxNyw3MTgsNzE5LDcyMCw3MjEsNzIyLDcyMyw3MjQsNzI1
LDcyNiw3MjcsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsNzM0LDczNSw3MzYsNzM3LDczOCw3Mzks
NzQwLDc0MSw3NDIsNzQzLDc0NCw3NDUsNzQ2LDc0Nyw3NDgsNzQ5LDc1MCw3NTEsNzUyLDc1Myw3
NTQsNzU1LDc1Niw3NTcsNzU4LDc1OSw3NjAsNzYxLDc2Miw3NjMsNzY0LDc2NSw3NjYsNzY3LDc2
OCw3NjksNzcwLDc3MSw3NzIsNzczLDc3NCw3NzUsNzc2LDc3Nyw3NzgsNzc5LDc4MCw3ODEsNzgy
LDc4Myw3ODQsNzg1LDc4Niw3ODcsNzg4LDc4OSw3OTAsNzkxLDc5Miw3OTMsNzk0LDc5NSw3OTYs
Nzk3LDc5OCw3OTksODAwLDgwMSw4MDIsODAzLDgwNCw4MDUsODA2LDgwNyw4MDgsODA5LDgxMCw4
MTEsODEyLDgxMyw4MTQsODE1LDgxNiw4MTcsODE4LDgxOSw4MjAsODIxLDgyMiw4MjMsODI0LDgy
NSw4MjYsODI3LDgyOCw4MjksODMwLDgzMSw4MzIsODMzLDgzNCw4MzUsODM2LDgzNyw4MzgsODM5
LDg0MCw4NDEsODQyLDg0Myw4NDQsODQ1LDg0Niw4NDcsODQ4LDg0OSw4NTAsODUxLDg1Miw4NTMs
ODU0LDg1NSw4NTYsODU3LDg1OCw4NTksODYwLDg2MSw4NjIsODYzLDg2NCw4NjUsODY2LDg2Nyw4
NjgsODY5LDg3MCw4NzEsODcyLDg3Myw4NzQsODc1LDg3Niw4NzcsODc4LDg3OSw4ODAsODgxLDg4
Miw4ODMsODg0LDg4NSw4ODYsODg3LDg4OCw4ODksODkwLDg5MSw4OTIsODkzLDg5NCw4OTUsODk2
LDg5Nyw4OTgsODk5LDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDcsOTA4LDkwOSw5MTAs
OTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5
MjUsOTI2LDkyNyw5MjgsOTI5LDkzMCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkz
OSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUz
LDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5Njcs
OTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDk3NSw5NzYsOTc3LDk3OCw5NzksOTgwLDk4MSw5
ODIsOTgzLDk4NCw5ODUsOTg2LDk4Nyw5ODgsOTg5LDk5MCw5OTEsOTkyLDk5Myw5OTQsOTk1LDk5
Niw5OTcsOTk4LDk5OSwxMDAwLDEwMDEsMTAwMiwxMDAzLDEwMDQsMTAwNSwxMDA2LDEwMDcsMTAw
OCwxMDA5LDEwMTAsMTAxMSwxMDEyLDEwMTMsMTAxNCwxMDE1LDEwMTYsMTAxNywxMDE4LDEwMTks
MTAyMCwxMDIxLDEwMjIsMTAyMywxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEw
MzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQy
LDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1Mywx
MDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2
NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYs
MTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEw
ODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5
LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwx
MTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTIwLDExMjEsMTEy
MiwxMTIzLDExMjQsMTEyNSwxMTI2LDExMjcsMTEyOCwxMTI5LDExMzAsMTEzMSwxMTMyLDExMzMs
MTEzNCwxMTM1LDExMzYsMTEzNywxMTM4LDExMzksMTE0MCwxMTQxLDExNDIsMTE0MywxMTQ0LDEx
NDUsMTE0NiwxMTQ3LDExNDgsMTE0OSwxMTUwLDExNTEsMTE1MiwxMTUzLDExNTQsMTE1NSwxMTU2
LDExNTcsMTE1OCwxMTU5LDExNjAsMTE2MSwxMTYyLDExNjMsMTE2NCwxMTY1LDExNjYsMTE2Nywx
MTY4LDExNjksMTE3MCwxMTcxLDExNzIsMTE3MywxMTc0LDExNzUsMTE3NiwxMTc3LDExNzgsMTE3
OSwxMTgwLDExODEsMTE4MiwxMTgzLDExODQsMTE4NSwxMTg2LDExODcsMTE4OCwxMTg5LDExOTAs
MTE5MSwxMTkyLDExOTMsMTE5NCwxMTk1LDExOTYsMTE5NywxMTk4LDExOTksMTIwMCwxMjAxLDEy
MDIsMTIwMywxMjA0LDEyMDUsMTIwNiwxMjA3LDEyMDgsMTIwOSwxMjEwLDEyMTEsMTIxMiwxMjEz
LDEyMTQsMTIxNSwxMjE2LDEyMTcsMTIxOCwxMjE5LDEyMjAsMTIyMSwxMjIyLDEyMjMsMTIyNCwx
MjI1LDEyMjYsMTIyNywxMjI4LDEyMjksMTIzMCwxMjMxLDEyMzIsMTIzMywxMjM0LDEyMzUsMTIz
NiwxMjM3LDEyMzgsMTIzOSwxMjQwLDEyNDEsMTI0MiwxMjQzLDEyNDQsMTI0NSwxMjQ2LDEyNDcs
MTI0OCwxMjQ5LDEyNTAsMTI1MSwxMjUyLDEyNTMsMTI1NCwxMjU1LDEyNTYsMTI1NywxMjU4LDEy
NTksMTI2MCwxMjYxLDEyNjIsMTI2MywxMjY0LDEyNjUsMTI2NiwxMjY3LDEyNjgsMTI2OSwxMjcw
LDEyNzEsMTI3MiwxMjczLDEyNzQsMTI3NSwxMjc2LDEyNzcsMTI3OCwxMjc5LDEyODAsMTI4MSwx
MjgyLDEyODMsMTI4NCwxMjg1LDEyODYsMTI4NywxMjg4LDEyODksMTI5MCwxMjkxLDEyOTIsMTI5
MywxMjk0LDEyOTUsMTI5NiwxMjk3LDEyOTgsMTI5OSwxMzAwLDEzMDEsMTMwMiwxMzAzLDEzMDQs
MTMwNSwxMzA2LDEzMDcsMTMwOCwxMzA5LDEzMTAsMTMxMSwxMzEyLDEzMTMsMTMxNCwxMzE1LDEz
MTYsMTMxNywxMzE4LDEzMTksMTMyMCwxMzIxLDEzMjIsMTMyMywxMzI0LDEzMjUsMTMyNiwxMzI3
LDEzMjgsMTMyOSwxMzMwLDEzMzEsMTMzMiwxMzMzLDEzMzQsMTMzNSwxMzM2LDEzMzcsMTMzOCwx
MzM5LDEzNDAsMTM0MSwxMzQyLDEzNDMsMTM0NCwxMzQ1LDEzNDYsMTM0NywxMzQ4LDEzNDksMTM1
MCwxMzUxLDEzNTIsMTM1MywxMzU0LDEzNTUsMTM1NiwxMzU3LDEzNTgsMTM1OSwxMzYwLDEzNjEs
MTM2MiwxMzYzLDEzNjQsMTM2NSwxMzY2LDEzNjcsMTM2OCwxMzY5LDEzNzAsMTM3MSwxMzcyLDEz
NzMsMTM3NCwxMzc1LDEzNzYsMTM3NywxMzc4LDEzNzksMTM4MCwxMzgxLDEzODIsMTM4MywxMzg0
LDEzODUsMTM4NiwxMzg3LDEzODgsMTM4OSwxMzkwLDEzOTEsMTM5MiwxMzkzLDEzOTQsMTM5NSwx
Mzk2LDEzOTcsMTM5OCwxMzk5LDE0MDAsMTQwMSwxNDAyLDE0MDMsMTQwNCwxNDA1LDE0MDYsMTQw
NywxNDA4LDE0MDksMTQxMCwxNDExLDE0MTIsMTQxMywxNDE0LDE0MTUsMTQxNiwxNDE3LDE0MTgs
MTQxOSwxNDIwLDE0MjEsMTQyMiwxNDIzLDE0MjQsMTQyNSwxNDI2LDE0MjcsMTQyOCwxNDI5LDE0
MzAsMTQzMSwxNDMyLDE0MzMsMTQzNCwxNDM1LDE0MzYsMTQzNywxNDM4LDE0MzksMTQ0MCwxNDQx
LDE0NDIsMTQ0MywxNDQ0LDE0NDUsMTQ0NiwxNDQ3LDE0NDgsMTQ0OSwxNDUwLDE0NTEsMTQ1Miwx
NDUzLDE0NTQsMTQ1NSwxNDU2LDE0NTcsMTQ1OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMsMTQ2
NCwxNDY1LDE0NjYsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0NzUs
MTQ3NiwxNDc3LDE0NzgsMTQ3OSwxNDgwLDE0ODEsMTQ4MiwxNDgzLDE0ODQsMTQ4NSwxNDg2LDE0
ODcsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4
LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwx
NTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsMTUxNSwxNTE2LDE1MTcsMTUxOCwxNTE5LDE1MjAsMTUy
MSwxNTIyLDE1MjMsMTUyNCwxNTI1LDE1MjYsMTUyNywxNTI4LDE1MjksMTUzMCwxNTMxLDE1MzIs
MTUzMywxNTM0LDE1MzUsMTUzNiwxNTM3LDE1MzgsMTUzOSwxNTQwLDE1NDEsMTU0MiwxNTQzLDE1
NDQsMTU0NSwxNTQ2LDE1NDcsMTU0OCwxNTQ5LDE1NTAsMTU1MSwxNTUyLDE1NTMsMTU1NCwxNTU1
LDE1NTYsMTU1NywxNTU4LDE1NTksMTU2MCwxNTYxLDE1NjIsMTU2MywxNTY0LDE1NjUsMTU2Niwx
NTY3LDE1NjgsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3
OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODks
MTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LDE1OTUsMTU5NiwxNTk3LDE1OTgsMTU5OSwxNjAwLDE2
MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEy
LDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LDE2MTksMTYyMCwxNjIxLDE2MjIsMTYyMywx
NjI0LDE2MjUsMTYyNiwxNjI3LDE2MjgsMTYyOSwxNjMwLDE2MzEsMTYzMiwxNjMzLDE2MzQsMTYz
NSwxNjM2LDE2MzcsMTYzOCwxNjM5LDE2NDAsMTY0MSwxNjQyLDE2NDMsMTY0NCwxNjQ1LDE2NDYs
MTY0NywxNjQ4LDE2NDksMTY1MCwxNjUxLDE2NTIsMTY1MywxNjU0LDE2NTUsMTY1NiwxNjU3LDE2
NTgsMTY1OSwxNjYwLDE2NjEsMTY2MiwxNjYzLDE2NjQsMTY2NSwxNjY2LDE2NjcsMTY2OCwxNjY5
LDE2NzAsMTY3MSwxNjcyLDE2NzMsMTY3NCwxNjc1LDE2NzYsMTY3NywxNjc4LDE2NzksMTY4MCwx
NjgxLDE2ODIsMTY4MywxNjg0LDE2ODUsMTY4NiwxNjg3LDE2ODgsMTY4OSwxNjkwLDE2OTEsMTY5
MiwxNjkzLDE2OTQsMTY5NSwxNjk2LDE2OTcsMTY5OCwxNjk5LDE3MDAsMTcwMSwxNzAyLDE3MDMs
MTcwNCwxNzA1LDE3MDYsMTcwNywxNzA4LDE3MDksMTcxMCwxNzExLDE3MTIsMTcxMywxNzE0LDE3
MTUsMTcxNiwxNzE3LDE3MTgsMTcxOSwxNzIwLDE3MjEsMTcyMiwxNzIzLDE3MjQsMTcyNSwxNzI2
LDE3MjcsMTcyOCwxNzI5LDE3MzAsMTczMSwxNzMyLDE3MzMsMTczNCwxNzM1LDE3MzYsMTczNywx
NzM4LDE3MzksMTc0MCwxNzQxLDE3NDIsMTc0MywxNzQ0LDE3NDUsMTc0NiwxNzQ3LDE3NDgsMTc0
OSwxNzUwLDE3NTEsMTc1MiwxNzUzLDE3NTQsMTc1NSwxNzU2LDE3NTcsMTc1OCwxNzU5LDE3NjAs
MTc2MSwxNzYyLDE3NjMsMTc2NCwxNzY1LDE3NjYsMTc2NywxNzY4LDE3NjksMTc3MCwxNzcxLDE3
NzIsMTc3MywxNzc0LDE3NzUsMTc3NiwxNzc3LDE3NzgsMTc3OSwxNzgwLDE3ODEsMTc4MiwxNzgz
LDE3ODQsMTc4NSwxNzg2LDE3ODcsMTc4OCwxNzg5LDE3OTAsMTc5MSwxNzkyLDE3OTMsMTc5NCwx
Nzk1LDE3OTYsMTc5NywxNzk4LDE3OTksMTgwMCwxODAxLDE4MDIsMTgwMywxODA0LDE4MDUsMTgw
NiwxODA3LDE4MDgsMTgwOSwxODEwLDE4MTEsMTgxMiwxODEzLDE4MTQsMTgxNSwxODE2LDE4MTcs
MTgxOCwxODE5LDE4MjAsMTgyMSwxODIyLDE4MjMsMTgyNCwxODI1LDE4MjYsMTgyNywxODI4LDE4
MjksMTgzMCwxODMxLDE4MzIsMTgzMywxODM0LDE4MzUsMTgzNiwxODM3LDE4MzgsMTgzOSwxODQw
LDE4NDEsMTg0MiwxODQzLDE4NDQsMTg0NSwxODQ2LDE4NDcsMTg0OCwxODQ5LDE4NTAsMTg1MSwx
ODUyLDE4NTMsMTg1NCwxODU1LDE4NTYsMTg1NywxODU4LDE4NTksMTg2MCwxODYxLDE4NjIsMTg2
MywxODY0LDE4NjUsMTg2NiwxODY3LDE4NjgsMTg2OSwxODcwLDE4NzEsMTg3MiwxODczLDE4NzQs
MTg3NSwxODc2LDE4NzcsMTg3OCwxODc5LDE4ODAsMTg4MSwxODgyLDE4ODMsMTg4NCwxODg1LDE4
ODYsMTg4NywxODg4LDE4ODksMTg5MCwxODkxLDE4OTIsMTg5MywxODk0LDE4OTUsMTg5NiwxODk3
LDE4OTgsMTg5OSwxOTAwLDE5MDEsMTkwMiwxOTAzLDE5MDQsMTkwNSwxOTA2LDE5MDcsMTkwOCwx
OTA5LDE5MTAsMTkxMSwxOTEyLDE5MTMsMTkxNCwxOTE1LDE5MTYsMTkxNywxOTE4LDE5MTksMTky
MCwxOTIxLDE5MjIsMTkyMywxOTI0LDE5MjUsMTkyNiwxOTI3LDE5MjgsMTkyOSwxOTMwLDE5MzEs
MTkzMiwxOTMzLDE5MzQsMTkzNSwxOTM2LDE5MzcsMTkzOCwxOTM5LDE5NDAsMTk0MSwxOTQyLDE5
NDMsMTk0NCwxOTQ1LDE5NDYsMTk0NywxOTQ4LDE5NDksMTk1MCwxOTUxLDE5NTIsMTk1MywxOTU0
LDE5NTUsMTk1NiwxOTU3LDE5NTgsMTk1OSwxOTYwLDE5NjEsMTk2MiwxOTYzLDE5NjQsMTk2NSwx
OTY2LDE5NjcsMTk2OCwxOTY5LDE5NzAsMTk3MSwxOTcyLDE5NzMsMTk3NCwxOTc1LDE5NzYsMTk3
NywxOTc4LDE5NzksMTk4MCwxOTgxLDE5ODIsMTk4MywxOTg0LDE5ODUsMTk4NiwxOTg3LDE5ODgs
MTk4OSwxOTkwLDE5OTEsMTk5MiwxOTkzLDE5OTQsMTk5NSwxOTk2LDE5OTcsMTk5OCwxOTk5LDIw
MDAsMjAwMSwyMDAyLDIwMDMsMjAwNCwyMDA1LDIwMDYsMjAwNywyMDA4LDIwMDksMjAxMCwyMDEx
LDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiwyMDE3LDIwMTgsMjAxOSwyMDIwLDIwMjEsMjAyMiwy
MDIzLDIwMjQsMjAyNSwyMDI2LDIwMjcsMjAyOCwyMDI5LDIwMzAsMjAzMSwyMDMyLDIwMzMsMjAz
NCwyMDM1LDIwMzYsMjAzNywyMDM4LDIwMzksMjA0MCwyMDQxLDIwNDIsMjA0MywyMDQ0LDIwNDUs
MjA0NiwyMDQ3LDIwNDgsMjA0OSwyMDUwLDIwNTEsMjA1MiwyMDUzLDIwNTQsMjA1NSwyMDU2LDIw
NTcsMjA1OCwyMDU5LDIwNjAsMjA2MSwyMDYyLDIwNjMsMjA2NCwyMDY1LDIwNjYsMjA2NywyMDY4
LDIwNjksMjA3MCwyMDcxLDIwNzIsMjA3MywyMDc0LDIwNzUsMjA3NiwyMDc3LDIwNzgsMjA3OSwy
MDgwLDIwODEsMjA4MiwyMDgzLDIwODQsMjA4NSwyMDg2LDIwODcsMjA4OCwyMDg5LDIwOTAsMjA5
MSwyMDkyLDIwOTMsMjA5NCwyMDk1LDIwOTYsMjA5NywyMDk4LDIwOTksMjEwMCwyMTAxLDIxMDIs
MjEwMywyMTA0LDIxMDUsMjEwNiwyMTA3LDIxMDgsMjEwOSwyMTEwLDIxMTEsMjExMiwyMTEzLDIx
MTQsMjExNSwyMTE2LDIxMTcsMjExOF0KLV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAxLmV4cGVjdGVkIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9iYXNpY18wMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDc2MWZjZTFjYzA1MGNkNjAyM2VjZmNlN2Q3Y2JlYmExOTU0NjkxNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2Jhc2ljXzAxLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0xMjM0NTY3
ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDEuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTFmMTFmOWJlM2JhYmRiYTcwNjY2MGJmYzU0Y2I0ZTg5OTBjM2ExNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jh
c2ljXzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0wMTIzNDU2Nzg5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAyLmV4cGVjdGVkIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9iYXNpY18wMi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjUwZTM3Y2JhYWYzN2I1MjMxNGMzZTg2ZDE2YmRmY2IyMWJhMDhhMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jh
c2ljXzAyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0tMTIzNDU2Nzg5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAyLmpzb24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2Jhc2ljXzAyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJmMTFiY2VhYzc0ZmEyMzI0NDQ1NTdmYzQyNWI4MDgwZjFjZmI5ZjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNp
Y18wMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLTAxMjM0NTY3ODkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDMuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2Jhc2ljXzAzLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxZGEyZDM5NWI4ZTliMjk0NjM1OWI1NDUxNjkxYWY5MzIwMWU5NzQ4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFz
aWNfMDMuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS49MS4yMzQ1Njc4
Ci0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMy5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhOTJiNmJkMjhiNWZjODQ0NDliNWU0NmFiZmFjNzI1NTcxODVhNjdlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YmFzaWNfMDMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotMS4yMzQ1Njc4Ci0K
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNC5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDQuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAxM2Y0MjRmOTMyMjYxMDZjYTVmZTA0NmYyZjcwMDEzNTdhYWY1OWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9iYXNpY18wNC5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLj0i
YWJjZGVmIgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA0Lmpzb24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA0Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE3ZWViOTllMGIwYWU5ZTJkODZhN2IxMjIxZGM3NjhiMzMwZDA0MjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9iYXNpY18wNC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0iYWJjZGVm
IgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA1LmV4cGVjdGVkIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYzhkYjgyMmU1ODRiMzU4NzA0MzhhNjI3MTIzMTEwY2Y2YTVkNjc2OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X2Jhc2ljXzA1LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0u
PW51bGwKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNS5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkMGFhZWEyMTI2Yjk5MjgyZjQ4ZGQ3NjBlMmQ0MDI4MTE5YmZjZmYxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfYmFzaWNfMDUuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotbnVsbAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA2LmV4cGVjdGVkIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDliZTU1YTk2NTRlODc2ODc3MjkzMTE3NDA2NTczNDUxZmFlYzhiMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2Jhc2ljXzA2LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPXRydWUK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3ZWVhZDFlZTc1ZjAyNDQ0YmIwOWM4NTU2ZGY3M2Q1N2UzYTc0ZmQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFz
aWNfMDYuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotdHJ1ZQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA3LmV4cGVjdGVkIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9iYXNpY18wNy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmU1NWE2YTg1NDYwYzhhNDc3NDZkMGJmOTE3OTE2YTkyYmVmMTBhNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2lj
XzA3LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPWZhbHNlCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDcuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfYmFzaWNfMDcuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg2
NGJjNDg3ZDRkNjMzNjhkZWY2ZmM5M2ZmYTZmMWI2MzE2N2Y4MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA3
Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWZhbHNlCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDguZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2Jhc2ljXzA4LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWY1
MzUyYTExMzk5M2RhZDc5YjkxMTlhY2IyODhlNzhkNDE2ODVmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDgu
ZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIEMrKyBzdHlsZSBjb21t
ZW50Ci0uPW51bGwKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOC5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOC5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZDc4ODM3YzBjODY5YjgwYzhkYzYyYTAwNDE3NmE4NjUyYjFkNzMyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfYmFzaWNfMDguanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8g
QysrIHN0eWxlIGNvbW1lbnQKLW51bGwKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9iYXNpY18wOS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDkuZXhwZWN0
ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMTI5ZGE0MmU0Y2RkYjExNDUzNWEx
ZWRmYjQ3MDNmYjA4ODljODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOS5leHBlY3RlZAorKysgL2Rldi9u
dWxsCkBAIC0xLDQgKzAsMCBAQAotLyogQyBzdHlsZSBjb21tZW50Ci0gKi8KLS49bnVsbAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA5Lmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2Jhc2ljXzA5Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj
OTVmMGY1MTRlZGZjMTFkMWFmZGUyZDI2Mzk4ZGU3N2UzNzEzYzUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18w
OS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vKiBDIHN0eWxlIGNvbW1lbnQK
LSAqLwotbnVsbAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAu
ZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAuZXhwZWN0ZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NGE3OTdkNzE0NzI5MjhhODVjZTVjN2Y4OWFmNzQx
ZDljOTQ1YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAwLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAg
LTEsNCArMCwwIEBACi0vLyBDb21tZW50IGZvciBhcnJheQotLj1bXQotLy8gQ29tbWVudCB3aXRo
aW4gYXJyYXkKLS5bMF09Im9uZS1lbGVtZW50IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9jb21tZW50XzAwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAuanNv
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmNTc3YThhZTIyMDc2MTFlMWRiOWRh
YzRlZWU5MzA2MGYxZWYzNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotLy8gQ29tbWVudCBmb3IgYXJyYXkKLVsKLSAgIC8vIENvbW1lbnQg
d2l0aGluIGFycmF5Ci0gICAib25lLWVsZW1lbnQiCi1dCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2NvbW1lbnRfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1l
bnRfMDEuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZDAxYmExMDBj
NGJkYmJhMzc1M2Q4MDkyZDY4MGJiNTY5NTk2OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAxLmV4cGVj
dGVkCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotLj17fQotLy8gQ29tbWVudCBmb3Ig
YXJyYXkKLS50ZXN0PVtdCi0vLyBDb21tZW50IHdpdGhpbiBhcnJheQotLnRlc3RbMF09e30KLS50
ZXN0WzBdLmE9ImFhYSIKLS50ZXN0WzFdPXt9Ci0udGVzdFsxXS5iPSJiYmIiCi0udGVzdFsyXT17
fQotLnRlc3RbMl0uYz0iY2NjIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21t
ZW50XzAxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDEuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRlZmU0MDA0MDRhMTdiNTBhMGRmYTFkMzllYWU4NzI1
ZTk5MjNlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDEw
ICswLDAgQEAKLXsKLSAgICAidGVzdCI6Ci0gICAgLy8gQ29tbWVudCBmb3IgYXJyYXkKLSAgICBb
Ci0gICAgICAgLy8gQ29tbWVudCB3aXRoaW4gYXJyYXkKLSAgICAgICB7ICJhIiA6ICJhYWEiIH0s
IC8vIENvbW1lbnQgZm9yIGEKLSAgICAgICB7ICJiIiA6ICJiYmIiIH0sIC8vIENvbW1lbnQgZm9y
IGIKLSAgICAgICB7ICJjIiA6ICJjY2MiIH0gLy8gQ29tbWVudCBmb3IgYwotICAgIF0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMi5leHBlY3RlZCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODk4NmRiYWMwNWViYmY0Y2UwMGIzZDNiNDNmMWFkYjNiNmVkMDU2YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2NvbW1lbnRfMDIuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0u
PXt9Ci0vKiBDLXN0eWxlIGNvbW1lbnQKLQotICAgIEMtc3R5bGUtMiBjb21tZW50ICovCi0uYy10
ZXN0PXt9Ci0uYy10ZXN0LmE9MQotLyogSW50ZXJuYWwgY29tbWVudCBjLXN0eWxlICovCi0uYy10
ZXN0LmI9MgotLy8gQysrLXN0eWxlIGNvbW1lbnQKLS5jcHAtdGVzdD17fQotLy8gTXVsdGlsaW5l
IGNvbW1lbnQgY3BwLXN0eWxlCi0vLyBTZWNvbmQgbGluZQotLmNwcC10ZXN0LmM9MwotLy8gQ29t
bWVudCBiZWZvcmUgZG91YmxlCi0uY3BwLXRlc3QuZD00LjEKLS8vIENvbW1lbnQgYmVmb3JlIHN0
cmluZwotLmNwcC10ZXN0LmU9ImUtc3RyaW5nIgotLy8gQ29tbWVudCBiZWZvcmUgdHJ1ZQotLmNw
cC10ZXN0LmY9dHJ1ZQotLy8gQ29tbWVudCBiZWZvcmUgZmFsc2UKLS5jcHAtdGVzdC5nPWZhbHNl
Ci0vLyBDb21tZW50IGJlZm9yZSBudWxsCi0uY3BwLXRlc3QuaD1udWxsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
Y29tbWVudF8wMi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA0MmUwZGQ2
OGVhYzNmYWJlNDhkMWFiMDk0OTMwNmJhM2RjZDg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMi5qc29u
CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotewotICAgLyogQy1zdHlsZSBjb21tZW50
Ci0KLSAgICBDLXN0eWxlLTIgY29tbWVudCAqLwotICAgImMtdGVzdCIgOiB7Ci0gICAgICAiYSIg
OiAxLAotICAgICAgLyogSW50ZXJuYWwgY29tbWVudCBjLXN0eWxlICovCi0gICAgICAiYiIgOiAy
Ci0gICB9LAotICAgLy8gQysrLXN0eWxlIGNvbW1lbnQKLSAgICJjcHAtdGVzdCIgOiB7Ci0gICAg
ICAvLyBNdWx0aWxpbmUgY29tbWVudCBjcHAtc3R5bGUKLSAgICAgIC8vIFNlY29uZCBsaW5lCi0g
ICAgICAiYyIgOiAzLAotICAgICAgLy8gQ29tbWVudCBiZWZvcmUgZG91YmxlCi0gICAgICAiZCIg
OiA0LjEsCi0gICAgICAvLyBDb21tZW50IGJlZm9yZSBzdHJpbmcKLSAgICAgICJlIiA6ICJlLXN0
cmluZyIsCi0gICAgICAvLyBDb21tZW50IGJlZm9yZSB0cnVlCi0gICAgICAiZiIgOiB0cnVlLAot
ICAgICAgLy8gQ29tbWVudCBiZWZvcmUgZmFsc2UKLSAgICAgICJnIiA6IGZhbHNlLAotICAgICAg
Ly8gQ29tbWVudCBiZWZvcmUgbnVsbAotICAgICAgImgiIDogbnVsbAotICAgfQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21wbGV4XzAxLmV4cGVjdGVkIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9jb21wbGV4XzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NTczYzg4MTJkOWZlNjA5ZTMzODY4OGIxZWE2NDk5NjUxZTA5NDE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
Y29tcGxleF8wMS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS49e30K
LS5hdHRyaWJ1dGU9W10KLS5hdHRyaWJ1dGVbMF09InJhbmRvbSIKLS5hdHRyaWJ1dGVbMV09InNo
b3J0IgotLmF0dHJpYnV0ZVsyXT0iYm9sZCIKLS5hdHRyaWJ1dGVbM109MTIKLS5hdHRyaWJ1dGVb
NF09e30KLS5hdHRyaWJ1dGVbNF0uaGVpZ2h0PTcKLS5hdHRyaWJ1dGVbNF0ud2lkdGg9NjQKLS5j
b3VudD0xMjM0Ci0ubmFtZT17fQotLm5hbWUuYWthPSJULkUuUy5ULiIKLS5uYW1lLmlkPTEyMzk4
NwotLnRlc3Q9e30KLS50ZXN0LjE9e30KLS50ZXN0LjEuMj17fQotLnRlc3QuMS4yLjM9e30KLS50
ZXN0LjEuMi4zLmNvb3JkPVtdCi0udGVzdC4xLjIuMy5jb29yZFswXT0xCi0udGVzdC4xLjIuMy5j
b29yZFsxXT0yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbXBsZXhfMDEuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tcGxleF8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYzBmMzBmNWMzNDc4ZWM3NWRkNzAzYzg0MGY5NmQ3YWM0MTQ0ZTRiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfY29tcGxleF8wMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot
eyAKLQkiY291bnQiIDogMTIzNCwKLQkibmFtZSIgOiB7ICJha2EiIDogIlQuRS5TLlQuIiwgImlk
IiA6IDEyMzk4NyB9LAotCSJhdHRyaWJ1dGUiIDogWyAKLQkJInJhbmRvbSIsIAotCQkic2hvcnQi
LCAKLQkJImJvbGQiLCAKLQkJMTIsIAotCQl7ICJoZWlnaHQiIDogNywgIndpZHRoIiA6IDY0IH0g
Ci0JCV0sCi0JInRlc3QiOiB7ICIxIiA6IAotCQl7ICIyIiA6IAotCQkJeyAiMyIgOiAgeyAiY29v
cmQiIDogWyAxLDJdIH0gCi0JCQl9IAotCQl9Ci0JfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9pbnRlZ2VyXzAxLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRl
Z2VyXzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjNlMTQ5ZGU4
NzEzMDllNDM1NTIyNDcwZWU2ZDE1ZjM3MjU1YTBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMS5leHBl
Y3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLy8gTWF4IHNpZ25lZCBpbnRlZ2Vy
Ci0uPTIxNDc0ODM2NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8w
MS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAxLmpzb24KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVhYjEyZmZlZTQxMGFiM2Q5NTA5Yzc0MmQ1ZGQ4NWRmOTYyNmI0
OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLS8vIE1heCBzaWduZWQgaW50ZWdlcgotMjE0NzQ4MzY0NwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAyLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9p
bnRlZ2VyXzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzczZTA4
NTFhNDlkYTdhYjc1YmFjOWU3MzI4YzYwNDhiYjJhZTQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMi5l
eHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLy8gTWluIHNpZ25lZCBpbnRl
Z2VyCi0uPS0yMTQ3NDgzNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVn
ZXJfMDIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMi5qc29uCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTZjODUwMDY1N2M5MGUxMzQ4YTdiYTAwNWNiZDM3OGM4
YmY1YjZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiAr
MCwwIEBACi0vLyBNaW4gc2lnbmVkIGludGVnZXIKLS0yMTQ3NDgzNjQ4CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDMuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2ludGVnZXJfMDMuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3
ZWZmZjc5OWViMzM2OWFhZWZjZTJjM2M1ODZkNzhlMDdiZGQ4YTYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2Vy
XzAzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0vLyBNYXggdW5zaWdu
ZWQgaW50ZWdlcgotLj00Mjk0OTY3Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2ludGVnZXJfMDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMy5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmVmM2ZiYjg5NDhlMDFlYzg1ZjFkYTMzNGNh
MTExMDUxMDE4ZjNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMy5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi0vLyBNYXggdW5zaWduZWQgaW50ZWdlcgotNDI5NDk2NzI5NQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA0LmV4cGVjdGVkIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9pbnRlZ2VyXzA0LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzOWY4NTY3MDQwZmM4YzlkMmMxM2E5ZmQzOGFlZDRmNmZlMWEwMjgyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
aW50ZWdlcl8wNC5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gTWlu
IHVuc2lnbmVkIGludGVnZXIKLS49MAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2ludGVnZXJfMDQuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjgxNDk5NDUzMzZjYzAxNmNiNDQxOTBlYzYz
YmIxZDI5N2ZkOTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsMyArMCwwIEBACi0vLyBNaW4gdW5zaWduZWQgaW50ZWdlcgotMAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDUuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2ludGVnZXJfMDUuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBj
YWVhOWQzZmQzNmI4NTEzNjc0MmM5MjJhM2U5YzU3ZWYyZDAzNGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2Vy
XzA1LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPTEKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA1Lmpzb24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X2ludGVnZXJfMDUuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3
NGUxYjRkNjI2ZGJmMDlhOTc3NmM3NzhlOWY4NjkxYmM4YjQwNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJf
MDUuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotMQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmV4cGVjdGVkIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9pbnRlZ2VyXzA2XzY0Yml0cy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTMxYjA4NWZmNTY3OGQwMDZkMDI5ZDdjMWJkNTFjNGQ2ZjQ5ZGJiZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotLj05MjIzMzcyMDM2ODU0Nzc1ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJf
MDZfNjRiaXRzLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZWRmZTVlODA5
MDUzYTNlNGM5M2VmNmEwMTA3MTA5YzYxMWM3YjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA2XzY0Yml0
cy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi05MjIzMzcyMDM2ODU0Nzc1ODA4
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wN182NGJpdHMuZXhw
ZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDdfNjRiaXRzLmV4cGVjdGVkCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODUyNGEzMmM3YTg2ZDcwNzI1NjJjZTkxZjU1
ZDRhNGIzM2E4MGE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wN182NGJpdHMuZXhwZWN0ZWQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi0uPS05MjIzMzcyMDM2ODU0Nzc1ODA4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDdfNjRiaXRzLmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2ludGVnZXJfMDdfNjRiaXRzLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE5NjRhZDJlZDI1YWY3NWY1NzRiN2FlZGQ4NDVjZjQ0YWY2ZDYzYjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9pbnRlZ2VyXzA3XzY0Yml0cy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0t
OTIyMzM3MjAzNjg1NDc3NTgwOAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2lu
dGVnZXJfMDhfNjRiaXRzLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA4
XzY0Yml0cy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxYmJhNWE3
MzgzNDU1ZjgzMjc5ODJmMTdmYjdlNzY1MDhhYTlkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDhfNjRi
aXRzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0xODQ0Njc0NDA3Mzcw
OTU1MTYxNQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA4XzY0Yml0
cy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA4XzY0Yml0cy5qc29uCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzE1YTAxYjRhOTE5NDc5MmI2NDhmODEyMjg5ZDVh
NjA3ZTYyNDY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wOF82NGJpdHMuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xLDIgKzAsMCBAQAotMTg0NDY3NDQwNzM3MDk1NTE2MTUKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
bGFyZ2VfMDEuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMmZhZmMw
MTBlMjBjMjVjZGZmMTQ3YmRjZmVmOTA4MzNlZTIzM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5leHBl
Y3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIxMjIgKzAsMCBAQAotLj1bXQotLlswXT1bXQotLlsw
XVswXT0iQSIKLS5bMF1bMV09MAotLlswXVsyXT0xCi0uWzBdWzNdPTIKLS5bMF1bNF09MwotLlsw
XVs1XT00Ci0uWzBdWzZdPTUKLS5bMF1bN109NgotLlswXVs4XT03Ci0uWzBdWzldPTgKLS5bMF1b
MTBdPTkKLS5bMF1bMTFdPTEwCi0uWzBdWzEyXT0xMQotLlswXVsxM109MTIKLS5bMF1bMTRdPTEz
Ci0uWzBdWzE1XT0xNAotLlswXVsxNl09MTUKLS5bMF1bMTddPTE2Ci0uWzBdWzE4XT0xNwotLlsw
XVsxOV09MTgKLS5bMF1bMjBdPTE5Ci0uWzBdWzIxXT0yMAotLlswXVsyMl09MjEKLS5bMF1bMjNd
PTIyCi0uWzBdWzI0XT0yMwotLlswXVsyNV09MjQKLS5bMF1bMjZdPTI1Ci0uWzBdWzI3XT0yNgot
LlswXVsyOF09MjcKLS5bMF1bMjldPTI4Ci0uWzBdWzMwXT0yOQotLlswXVszMV09MzAKLS5bMF1b
MzJdPTMxCi0uWzBdWzMzXT0zMgotLlswXVszNF09MzMKLS5bMF1bMzVdPTM0Ci0uWzBdWzM2XT0z
NQotLlswXVszN109MzYKLS5bMF1bMzhdPTM3Ci0uWzBdWzM5XT0zOAotLlswXVs0MF09MzkKLS5b
MF1bNDFdPTQwCi0uWzBdWzQyXT00MQotLlswXVs0M109NDIKLS5bMF1bNDRdPTQzCi0uWzBdWzQ1
XT00NAotLlswXVs0Nl09NDUKLS5bMF1bNDddPTQ2Ci0uWzBdWzQ4XT00NwotLlswXVs0OV09NDgK
LS5bMF1bNTBdPTQ5Ci0uWzBdWzUxXT01MAotLlswXVs1Ml09NTEKLS5bMF1bNTNdPTUyCi0uWzBd
WzU0XT01MwotLlswXVs1NV09NTQKLS5bMF1bNTZdPTU1Ci0uWzBdWzU3XT01NgotLlswXVs1OF09
NTcKLS5bMF1bNTldPTU4Ci0uWzBdWzYwXT01OQotLlswXVs2MV09NjAKLS5bMF1bNjJdPTYxCi0u
WzBdWzYzXT02MgotLlswXVs2NF09NjMKLS5bMF1bNjVdPTY0Ci0uWzBdWzY2XT02NQotLlswXVs2
N109NjYKLS5bMF1bNjhdPTY3Ci0uWzBdWzY5XT02OAotLlswXVs3MF09NjkKLS5bMF1bNzFdPTcw
Ci0uWzBdWzcyXT03MQotLlswXVs3M109NzIKLS5bMF1bNzRdPTczCi0uWzBdWzc1XT03NAotLlsw
XVs3Nl09NzUKLS5bMF1bNzddPTc2Ci0uWzBdWzc4XT03NwotLlswXVs3OV09NzgKLS5bMF1bODBd
PTc5Ci0uWzBdWzgxXT04MAotLlswXVs4Ml09ODEKLS5bMF1bODNdPTgyCi0uWzBdWzg0XT04Mwot
LlswXVs4NV09ODQKLS5bMF1bODZdPTg1Ci0uWzBdWzg3XT04NgotLlswXVs4OF09ODcKLS5bMF1b
ODldPTg4Ci0uWzBdWzkwXT04OQotLlswXVs5MV09OTAKLS5bMF1bOTJdPTkxCi0uWzBdWzkzXT05
MgotLlswXVs5NF09OTMKLS5bMF1bOTVdPTk0Ci0uWzBdWzk2XT05NQotLlswXVs5N109OTYKLS5b
MF1bOThdPTk3Ci0uWzBdWzk5XT05OAotLlswXVsxMDBdPTk5Ci0uWzBdWzEwMV09MTAwCi0uWzBd
WzEwMl09MTAxCi0uWzBdWzEwM109MTAyCi0uWzBdWzEwNF09MTAzCi0uWzBdWzEwNV09MTA0Ci0u
WzBdWzEwNl09MTA1Ci0uWzBdWzEwN109MTA2Ci0uWzBdWzEwOF09MTA3Ci0uWzBdWzEwOV09MTA4
Ci0uWzBdWzExMF09MTA5Ci0uWzBdWzExMV09MTEwCi0uWzBdWzExMl09MTExCi0uWzBdWzExM109
MTEyCi0uWzBdWzExNF09MTEzCi0uWzBdWzExNV09MTE0Ci0uWzBdWzExNl09MTE1Ci0uWzBdWzEx
N109MTE2Ci0uWzBdWzExOF09MTE3Ci0uWzBdWzExOV09MTE4Ci0uWzBdWzEyMF09MTE5Ci0uWzBd
WzEyMV09MTIwCi0uWzBdWzEyMl09MTIxCi0uWzBdWzEyM109MTIyCi0uWzBdWzEyNF09MTIzCi0u
WzBdWzEyNV09MTI0Ci0uWzBdWzEyNl09MTI1Ci0uWzBdWzEyN109MTI2Ci0uWzBdWzEyOF09MTI3
Ci0uWzBdWzEyOV09MTI4Ci0uWzBdWzEzMF09MTI5Ci0uWzBdWzEzMV09MTMwCi0uWzBdWzEzMl09
MTMxCi0uWzBdWzEzM109MTMyCi0uWzBdWzEzNF09MTMzCi0uWzBdWzEzNV09MTM0Ci0uWzBdWzEz
Nl09MTM1Ci0uWzBdWzEzN109MTM2Ci0uWzBdWzEzOF09MTM3Ci0uWzBdWzEzOV09MTM4Ci0uWzBd
WzE0MF09MTM5Ci0uWzBdWzE0MV09MTQwCi0uWzBdWzE0Ml09MTQxCi0uWzBdWzE0M109MTQyCi0u
WzBdWzE0NF09MTQzCi0uWzBdWzE0NV09MTQ0Ci0uWzBdWzE0Nl09MTQ1Ci0uWzBdWzE0N109MTQ2
Ci0uWzBdWzE0OF09MTQ3Ci0uWzBdWzE0OV09MTQ4Ci0uWzBdWzE1MF09MTQ5Ci0uWzBdWzE1MV09
MTUwCi0uWzBdWzE1Ml09MTUxCi0uWzBdWzE1M109MTUyCi0uWzBdWzE1NF09MTUzCi0uWzBdWzE1
NV09MTU0Ci0uWzBdWzE1Nl09MTU1Ci0uWzBdWzE1N109MTU2Ci0uWzBdWzE1OF09MTU3Ci0uWzBd
WzE1OV09MTU4Ci0uWzBdWzE2MF09MTU5Ci0uWzBdWzE2MV09MTYwCi0uWzBdWzE2Ml09MTYxCi0u
WzBdWzE2M109MTYyCi0uWzBdWzE2NF09MTYzCi0uWzBdWzE2NV09MTY0Ci0uWzBdWzE2Nl09MTY1
Ci0uWzBdWzE2N109MTY2Ci0uWzBdWzE2OF09MTY3Ci0uWzBdWzE2OV09MTY4Ci0uWzBdWzE3MF09
MTY5Ci0uWzBdWzE3MV09MTcwCi0uWzBdWzE3Ml09MTcxCi0uWzBdWzE3M109MTcyCi0uWzBdWzE3
NF09MTczCi0uWzBdWzE3NV09MTc0Ci0uWzBdWzE3Nl09MTc1Ci0uWzBdWzE3N109MTc2Ci0uWzBd
WzE3OF09MTc3Ci0uWzBdWzE3OV09MTc4Ci0uWzBdWzE4MF09MTc5Ci0uWzBdWzE4MV09MTgwCi0u
WzBdWzE4Ml09MTgxCi0uWzBdWzE4M109MTgyCi0uWzBdWzE4NF09MTgzCi0uWzBdWzE4NV09MTg0
Ci0uWzBdWzE4Nl09MTg1Ci0uWzBdWzE4N109MTg2Ci0uWzBdWzE4OF09MTg3Ci0uWzBdWzE4OV09
MTg4Ci0uWzBdWzE5MF09MTg5Ci0uWzBdWzE5MV09MTkwCi0uWzBdWzE5Ml09MTkxCi0uWzBdWzE5
M109MTkyCi0uWzBdWzE5NF09MTkzCi0uWzBdWzE5NV09MTk0Ci0uWzBdWzE5Nl09MTk1Ci0uWzBd
WzE5N109MTk2Ci0uWzBdWzE5OF09MTk3Ci0uWzBdWzE5OV09MTk4Ci0uWzBdWzIwMF09MTk5Ci0u
WzBdWzIwMV09MjAwCi0uWzBdWzIwMl09MjAxCi0uWzBdWzIwM109MjAyCi0uWzBdWzIwNF09MjAz
Ci0uWzBdWzIwNV09MjA0Ci0uWzBdWzIwNl09MjA1Ci0uWzBdWzIwN109MjA2Ci0uWzBdWzIwOF09
MjA3Ci0uWzBdWzIwOV09MjA4Ci0uWzBdWzIxMF09MjA5Ci0uWzBdWzIxMV09MjEwCi0uWzBdWzIx
Ml09MjExCi0uWzBdWzIxM109MjEyCi0uWzBdWzIxNF09MjEzCi0uWzBdWzIxNV09MjE0Ci0uWzBd
WzIxNl09MjE1Ci0uWzBdWzIxN109MjE2Ci0uWzBdWzIxOF09MjE3Ci0uWzBdWzIxOV09MjE4Ci0u
WzBdWzIyMF09MjE5Ci0uWzBdWzIyMV09MjIwCi0uWzBdWzIyMl09MjIxCi0uWzBdWzIyM109MjIy
Ci0uWzBdWzIyNF09MjIzCi0uWzBdWzIyNV09MjI0Ci0uWzBdWzIyNl09MjI1Ci0uWzBdWzIyN109
MjI2Ci0uWzBdWzIyOF09MjI3Ci0uWzBdWzIyOV09MjI4Ci0uWzBdWzIzMF09MjI5Ci0uWzBdWzIz
MV09MjMwCi0uWzBdWzIzMl09MjMxCi0uWzBdWzIzM109MjMyCi0uWzBdWzIzNF09MjMzCi0uWzBd
WzIzNV09MjM0Ci0uWzBdWzIzNl09MjM1Ci0uWzBdWzIzN109MjM2Ci0uWzBdWzIzOF09MjM3Ci0u
WzBdWzIzOV09MjM4Ci0uWzBdWzI0MF09MjM5Ci0uWzBdWzI0MV09MjQwCi0uWzBdWzI0Ml09MjQx
Ci0uWzBdWzI0M109MjQyCi0uWzBdWzI0NF09MjQzCi0uWzBdWzI0NV09MjQ0Ci0uWzBdWzI0Nl09
MjQ1Ci0uWzBdWzI0N109MjQ2Ci0uWzBdWzI0OF09MjQ3Ci0uWzBdWzI0OV09MjQ4Ci0uWzBdWzI1
MF09MjQ5Ci0uWzBdWzI1MV09MjUwCi0uWzBdWzI1Ml09MjUxCi0uWzBdWzI1M109MjUyCi0uWzBd
WzI1NF09MjUzCi0uWzBdWzI1NV09MjU0Ci0uWzBdWzI1Nl09MjU1Ci0uWzBdWzI1N109MjU2Ci0u
WzBdWzI1OF09MjU3Ci0uWzBdWzI1OV09MjU4Ci0uWzBdWzI2MF09MjU5Ci0uWzBdWzI2MV09MjYw
Ci0uWzBdWzI2Ml09MjYxCi0uWzBdWzI2M109MjYyCi0uWzBdWzI2NF09MjYzCi0uWzBdWzI2NV09
MjY0Ci0uWzBdWzI2Nl09MjY1Ci0uWzBdWzI2N109MjY2Ci0uWzBdWzI2OF09MjY3Ci0uWzBdWzI2
OV09MjY4Ci0uWzBdWzI3MF09MjY5Ci0uWzBdWzI3MV09MjcwCi0uWzBdWzI3Ml09MjcxCi0uWzBd
WzI3M109MjcyCi0uWzBdWzI3NF09MjczCi0uWzBdWzI3NV09Mjc0Ci0uWzBdWzI3Nl09Mjc1Ci0u
WzBdWzI3N109Mjc2Ci0uWzBdWzI3OF09Mjc3Ci0uWzBdWzI3OV09Mjc4Ci0uWzBdWzI4MF09Mjc5
Ci0uWzBdWzI4MV09MjgwCi0uWzBdWzI4Ml09MjgxCi0uWzBdWzI4M109MjgyCi0uWzBdWzI4NF09
MjgzCi0uWzBdWzI4NV09Mjg0Ci0uWzBdWzI4Nl09Mjg1Ci0uWzBdWzI4N109Mjg2Ci0uWzBdWzI4
OF09Mjg3Ci0uWzBdWzI4OV09Mjg4Ci0uWzBdWzI5MF09Mjg5Ci0uWzBdWzI5MV09MjkwCi0uWzBd
WzI5Ml09MjkxCi0uWzBdWzI5M109MjkyCi0uWzBdWzI5NF09MjkzCi0uWzBdWzI5NV09Mjk0Ci0u
WzBdWzI5Nl09Mjk1Ci0uWzBdWzI5N109Mjk2Ci0uWzBdWzI5OF09Mjk3Ci0uWzBdWzI5OV09Mjk4
Ci0uWzBdWzMwMF09Mjk5Ci0uWzBdWzMwMV09MzAwCi0uWzBdWzMwMl09MzAxCi0uWzBdWzMwM109
MzAyCi0uWzBdWzMwNF09MzAzCi0uWzBdWzMwNV09MzA0Ci0uWzBdWzMwNl09MzA1Ci0uWzBdWzMw
N109MzA2Ci0uWzBdWzMwOF09MzA3Ci0uWzBdWzMwOV09MzA4Ci0uWzBdWzMxMF09MzA5Ci0uWzBd
WzMxMV09MzEwCi0uWzBdWzMxMl09MzExCi0uWzBdWzMxM109MzEyCi0uWzBdWzMxNF09MzEzCi0u
WzBdWzMxNV09MzE0Ci0uWzBdWzMxNl09MzE1Ci0uWzBdWzMxN109MzE2Ci0uWzBdWzMxOF09MzE3
Ci0uWzBdWzMxOV09MzE4Ci0uWzBdWzMyMF09MzE5Ci0uWzBdWzMyMV09MzIwCi0uWzBdWzMyMl09
MzIxCi0uWzBdWzMyM109MzIyCi0uWzBdWzMyNF09MzIzCi0uWzBdWzMyNV09MzI0Ci0uWzBdWzMy
Nl09MzI1Ci0uWzBdWzMyN109MzI2Ci0uWzBdWzMyOF09MzI3Ci0uWzBdWzMyOV09MzI4Ci0uWzBd
WzMzMF09MzI5Ci0uWzBdWzMzMV09MzMwCi0uWzBdWzMzMl09MzMxCi0uWzBdWzMzM109MzMyCi0u
WzBdWzMzNF09MzMzCi0uWzBdWzMzNV09MzM0Ci0uWzBdWzMzNl09MzM1Ci0uWzBdWzMzN109MzM2
Ci0uWzBdWzMzOF09MzM3Ci0uWzBdWzMzOV09MzM4Ci0uWzBdWzM0MF09MzM5Ci0uWzBdWzM0MV09
MzQwCi0uWzBdWzM0Ml09MzQxCi0uWzBdWzM0M109MzQyCi0uWzBdWzM0NF09MzQzCi0uWzBdWzM0
NV09MzQ0Ci0uWzBdWzM0Nl09MzQ1Ci0uWzBdWzM0N109MzQ2Ci0uWzBdWzM0OF09MzQ3Ci0uWzBd
WzM0OV09MzQ4Ci0uWzBdWzM1MF09MzQ5Ci0uWzBdWzM1MV09MzUwCi0uWzBdWzM1Ml09MzUxCi0u
WzBdWzM1M109MzUyCi0uWzBdWzM1NF09MzUzCi0uWzBdWzM1NV09MzU0Ci0uWzBdWzM1Nl09MzU1
Ci0uWzBdWzM1N109MzU2Ci0uWzBdWzM1OF09MzU3Ci0uWzBdWzM1OV09MzU4Ci0uWzBdWzM2MF09
MzU5Ci0uWzBdWzM2MV09MzYwCi0uWzBdWzM2Ml09MzYxCi0uWzBdWzM2M109MzYyCi0uWzBdWzM2
NF09MzYzCi0uWzBdWzM2NV09MzY0Ci0uWzBdWzM2Nl09MzY1Ci0uWzBdWzM2N109MzY2Ci0uWzBd
WzM2OF09MzY3Ci0uWzBdWzM2OV09MzY4Ci0uWzBdWzM3MF09MzY5Ci0uWzBdWzM3MV09MzcwCi0u
WzBdWzM3Ml09MzcxCi0uWzBdWzM3M109MzcyCi0uWzBdWzM3NF09MzczCi0uWzBdWzM3NV09Mzc0
Ci0uWzBdWzM3Nl09Mzc1Ci0uWzBdWzM3N109Mzc2Ci0uWzBdWzM3OF09Mzc3Ci0uWzBdWzM3OV09
Mzc4Ci0uWzBdWzM4MF09Mzc5Ci0uWzBdWzM4MV09MzgwCi0uWzBdWzM4Ml09MzgxCi0uWzBdWzM4
M109MzgyCi0uWzBdWzM4NF09MzgzCi0uWzBdWzM4NV09Mzg0Ci0uWzBdWzM4Nl09Mzg1Ci0uWzBd
WzM4N109Mzg2Ci0uWzBdWzM4OF09Mzg3Ci0uWzBdWzM4OV09Mzg4Ci0uWzBdWzM5MF09Mzg5Ci0u
WzBdWzM5MV09MzkwCi0uWzBdWzM5Ml09MzkxCi0uWzBdWzM5M109MzkyCi0uWzBdWzM5NF09Mzkz
Ci0uWzBdWzM5NV09Mzk0Ci0uWzBdWzM5Nl09Mzk1Ci0uWzBdWzM5N109Mzk2Ci0uWzBdWzM5OF09
Mzk3Ci0uWzBdWzM5OV09Mzk4Ci0uWzBdWzQwMF09Mzk5Ci0uWzBdWzQwMV09NDAwCi0uWzBdWzQw
Ml09NDAxCi0uWzBdWzQwM109NDAyCi0uWzBdWzQwNF09NDAzCi0uWzBdWzQwNV09NDA0Ci0uWzBd
WzQwNl09NDA1Ci0uWzBdWzQwN109NDA2Ci0uWzBdWzQwOF09NDA3Ci0uWzBdWzQwOV09NDA4Ci0u
WzBdWzQxMF09NDA5Ci0uWzBdWzQxMV09NDEwCi0uWzBdWzQxMl09NDExCi0uWzBdWzQxM109NDEy
Ci0uWzBdWzQxNF09NDEzCi0uWzBdWzQxNV09NDE0Ci0uWzBdWzQxNl09NDE1Ci0uWzBdWzQxN109
NDE2Ci0uWzBdWzQxOF09NDE3Ci0uWzBdWzQxOV09NDE4Ci0uWzBdWzQyMF09NDE5Ci0uWzBdWzQy
MV09NDIwCi0uWzBdWzQyMl09NDIxCi0uWzBdWzQyM109NDIyCi0uWzBdWzQyNF09NDIzCi0uWzBd
WzQyNV09NDI0Ci0uWzBdWzQyNl09NDI1Ci0uWzBdWzQyN109NDI2Ci0uWzBdWzQyOF09NDI3Ci0u
WzBdWzQyOV09NDI4Ci0uWzBdWzQzMF09NDI5Ci0uWzBdWzQzMV09NDMwCi0uWzBdWzQzMl09NDMx
Ci0uWzBdWzQzM109NDMyCi0uWzBdWzQzNF09NDMzCi0uWzBdWzQzNV09NDM0Ci0uWzBdWzQzNl09
NDM1Ci0uWzBdWzQzN109NDM2Ci0uWzBdWzQzOF09NDM3Ci0uWzBdWzQzOV09NDM4Ci0uWzBdWzQ0
MF09NDM5Ci0uWzBdWzQ0MV09NDQwCi0uWzBdWzQ0Ml09NDQxCi0uWzBdWzQ0M109NDQyCi0uWzBd
WzQ0NF09NDQzCi0uWzBdWzQ0NV09NDQ0Ci0uWzBdWzQ0Nl09NDQ1Ci0uWzBdWzQ0N109NDQ2Ci0u
WzBdWzQ0OF09NDQ3Ci0uWzBdWzQ0OV09NDQ4Ci0uWzBdWzQ1MF09NDQ5Ci0uWzBdWzQ1MV09NDUw
Ci0uWzBdWzQ1Ml09NDUxCi0uWzBdWzQ1M109NDUyCi0uWzBdWzQ1NF09NDUzCi0uWzBdWzQ1NV09
NDU0Ci0uWzBdWzQ1Nl09NDU1Ci0uWzBdWzQ1N109NDU2Ci0uWzBdWzQ1OF09NDU3Ci0uWzBdWzQ1
OV09NDU4Ci0uWzBdWzQ2MF09NDU5Ci0uWzBdWzQ2MV09NDYwCi0uWzBdWzQ2Ml09NDYxCi0uWzBd
WzQ2M109NDYyCi0uWzBdWzQ2NF09NDYzCi0uWzBdWzQ2NV09NDY0Ci0uWzBdWzQ2Nl09NDY1Ci0u
WzBdWzQ2N109NDY2Ci0uWzBdWzQ2OF09NDY3Ci0uWzBdWzQ2OV09NDY4Ci0uWzBdWzQ3MF09NDY5
Ci0uWzBdWzQ3MV09NDcwCi0uWzBdWzQ3Ml09NDcxCi0uWzBdWzQ3M109NDcyCi0uWzBdWzQ3NF09
NDczCi0uWzBdWzQ3NV09NDc0Ci0uWzBdWzQ3Nl09NDc1Ci0uWzBdWzQ3N109NDc2Ci0uWzBdWzQ3
OF09NDc3Ci0uWzBdWzQ3OV09NDc4Ci0uWzBdWzQ4MF09NDc5Ci0uWzBdWzQ4MV09NDgwCi0uWzBd
WzQ4Ml09NDgxCi0uWzBdWzQ4M109NDgyCi0uWzBdWzQ4NF09NDgzCi0uWzBdWzQ4NV09NDg0Ci0u
WzBdWzQ4Nl09NDg1Ci0uWzBdWzQ4N109NDg2Ci0uWzBdWzQ4OF09NDg3Ci0uWzBdWzQ4OV09NDg4
Ci0uWzBdWzQ5MF09NDg5Ci0uWzBdWzQ5MV09NDkwCi0uWzBdWzQ5Ml09NDkxCi0uWzBdWzQ5M109
NDkyCi0uWzBdWzQ5NF09NDkzCi0uWzBdWzQ5NV09NDk0Ci0uWzBdWzQ5Nl09NDk1Ci0uWzBdWzQ5
N109NDk2Ci0uWzBdWzQ5OF09NDk3Ci0uWzBdWzQ5OV09NDk4Ci0uWzBdWzUwMF09NDk5Ci0uWzBd
WzUwMV09NTAwCi0uWzBdWzUwMl09NTAxCi0uWzBdWzUwM109NTAyCi0uWzBdWzUwNF09NTAzCi0u
WzBdWzUwNV09NTA0Ci0uWzBdWzUwNl09NTA1Ci0uWzBdWzUwN109NTA2Ci0uWzBdWzUwOF09NTA3
Ci0uWzBdWzUwOV09NTA4Ci0uWzBdWzUxMF09NTA5Ci0uWzBdWzUxMV09NTEwCi0uWzBdWzUxMl09
NTExCi0uWzBdWzUxM109NTEyCi0uWzBdWzUxNF09NTEzCi0uWzBdWzUxNV09NTE0Ci0uWzBdWzUx
Nl09NTE1Ci0uWzBdWzUxN109NTE2Ci0uWzBdWzUxOF09NTE3Ci0uWzBdWzUxOV09NTE4Ci0uWzBd
WzUyMF09NTE5Ci0uWzBdWzUyMV09NTIwCi0uWzBdWzUyMl09NTIxCi0uWzBdWzUyM109NTIyCi0u
WzBdWzUyNF09NTIzCi0uWzBdWzUyNV09NTI0Ci0uWzBdWzUyNl09NTI1Ci0uWzBdWzUyN109NTI2
Ci0uWzBdWzUyOF09NTI3Ci0uWzBdWzUyOV09NTI4Ci0uWzBdWzUzMF09NTI5Ci0uWzBdWzUzMV09
NTMwCi0uWzBdWzUzMl09NTMxCi0uWzBdWzUzM109NTMyCi0uWzBdWzUzNF09NTMzCi0uWzBdWzUz
NV09NTM0Ci0uWzBdWzUzNl09NTM1Ci0uWzBdWzUzN109NTM2Ci0uWzBdWzUzOF09NTM3Ci0uWzBd
WzUzOV09NTM4Ci0uWzBdWzU0MF09NTM5Ci0uWzBdWzU0MV09NTQwCi0uWzBdWzU0Ml09NTQxCi0u
WzBdWzU0M109NTQyCi0uWzBdWzU0NF09NTQzCi0uWzBdWzU0NV09NTQ0Ci0uWzBdWzU0Nl09NTQ1
Ci0uWzBdWzU0N109NTQ2Ci0uWzBdWzU0OF09NTQ3Ci0uWzBdWzU0OV09NTQ4Ci0uWzBdWzU1MF09
NTQ5Ci0uWzBdWzU1MV09NTUwCi0uWzBdWzU1Ml09NTUxCi0uWzBdWzU1M109NTUyCi0uWzBdWzU1
NF09NTUzCi0uWzBdWzU1NV09NTU0Ci0uWzBdWzU1Nl09NTU1Ci0uWzBdWzU1N109NTU2Ci0uWzBd
WzU1OF09NTU3Ci0uWzBdWzU1OV09NTU4Ci0uWzBdWzU2MF09NTU5Ci0uWzBdWzU2MV09NTYwCi0u
WzBdWzU2Ml09NTYxCi0uWzBdWzU2M109NTYyCi0uWzBdWzU2NF09NTYzCi0uWzBdWzU2NV09NTY0
Ci0uWzBdWzU2Nl09NTY1Ci0uWzBdWzU2N109NTY2Ci0uWzBdWzU2OF09NTY3Ci0uWzBdWzU2OV09
NTY4Ci0uWzBdWzU3MF09NTY5Ci0uWzBdWzU3MV09NTcwCi0uWzBdWzU3Ml09NTcxCi0uWzBdWzU3
M109NTcyCi0uWzBdWzU3NF09NTczCi0uWzBdWzU3NV09NTc0Ci0uWzBdWzU3Nl09NTc1Ci0uWzBd
WzU3N109NTc2Ci0uWzBdWzU3OF09NTc3Ci0uWzBdWzU3OV09NTc4Ci0uWzBdWzU4MF09NTc5Ci0u
WzBdWzU4MV09NTgwCi0uWzBdWzU4Ml09NTgxCi0uWzBdWzU4M109NTgyCi0uWzBdWzU4NF09NTgz
Ci0uWzBdWzU4NV09NTg0Ci0uWzBdWzU4Nl09NTg1Ci0uWzBdWzU4N109NTg2Ci0uWzBdWzU4OF09
NTg3Ci0uWzBdWzU4OV09NTg4Ci0uWzBdWzU5MF09NTg5Ci0uWzBdWzU5MV09NTkwCi0uWzBdWzU5
Ml09NTkxCi0uWzBdWzU5M109NTkyCi0uWzBdWzU5NF09NTkzCi0uWzBdWzU5NV09NTk0Ci0uWzBd
WzU5Nl09NTk1Ci0uWzBdWzU5N109NTk2Ci0uWzBdWzU5OF09NTk3Ci0uWzBdWzU5OV09NTk4Ci0u
WzBdWzYwMF09NTk5Ci0uWzBdWzYwMV09NjAwCi0uWzBdWzYwMl09NjAxCi0uWzBdWzYwM109NjAy
Ci0uWzBdWzYwNF09NjAzCi0uWzBdWzYwNV09NjA0Ci0uWzBdWzYwNl09NjA1Ci0uWzBdWzYwN109
NjA2Ci0uWzBdWzYwOF09NjA3Ci0uWzBdWzYwOV09NjA4Ci0uWzBdWzYxMF09NjA5Ci0uWzBdWzYx
MV09NjEwCi0uWzBdWzYxMl09NjExCi0uWzBdWzYxM109NjEyCi0uWzBdWzYxNF09NjEzCi0uWzBd
WzYxNV09NjE0Ci0uWzBdWzYxNl09NjE1Ci0uWzBdWzYxN109NjE2Ci0uWzBdWzYxOF09NjE3Ci0u
WzBdWzYxOV09NjE4Ci0uWzBdWzYyMF09NjE5Ci0uWzBdWzYyMV09NjIwCi0uWzBdWzYyMl09NjIx
Ci0uWzBdWzYyM109NjIyCi0uWzBdWzYyNF09NjIzCi0uWzBdWzYyNV09NjI0Ci0uWzBdWzYyNl09
NjI1Ci0uWzBdWzYyN109NjI2Ci0uWzBdWzYyOF09NjI3Ci0uWzBdWzYyOV09NjI4Ci0uWzBdWzYz
MF09NjI5Ci0uWzBdWzYzMV09NjMwCi0uWzBdWzYzMl09NjMxCi0uWzBdWzYzM109NjMyCi0uWzBd
WzYzNF09NjMzCi0uWzBdWzYzNV09NjM0Ci0uWzBdWzYzNl09NjM1Ci0uWzBdWzYzN109NjM2Ci0u
WzBdWzYzOF09NjM3Ci0uWzBdWzYzOV09NjM4Ci0uWzBdWzY0MF09NjM5Ci0uWzBdWzY0MV09NjQw
Ci0uWzBdWzY0Ml09NjQxCi0uWzBdWzY0M109NjQyCi0uWzBdWzY0NF09NjQzCi0uWzBdWzY0NV09
NjQ0Ci0uWzBdWzY0Nl09NjQ1Ci0uWzBdWzY0N109NjQ2Ci0uWzBdWzY0OF09NjQ3Ci0uWzBdWzY0
OV09NjQ4Ci0uWzBdWzY1MF09NjQ5Ci0uWzBdWzY1MV09NjUwCi0uWzBdWzY1Ml09NjUxCi0uWzBd
WzY1M109NjUyCi0uWzBdWzY1NF09NjUzCi0uWzBdWzY1NV09NjU0Ci0uWzBdWzY1Nl09NjU1Ci0u
WzBdWzY1N109NjU2Ci0uWzBdWzY1OF09NjU3Ci0uWzBdWzY1OV09NjU4Ci0uWzBdWzY2MF09NjU5
Ci0uWzBdWzY2MV09NjYwCi0uWzBdWzY2Ml09NjYxCi0uWzBdWzY2M109NjYyCi0uWzBdWzY2NF09
NjYzCi0uWzBdWzY2NV09NjY0Ci0uWzBdWzY2Nl09NjY1Ci0uWzBdWzY2N109NjY2Ci0uWzBdWzY2
OF09NjY3Ci0uWzBdWzY2OV09NjY4Ci0uWzBdWzY3MF09NjY5Ci0uWzBdWzY3MV09NjcwCi0uWzBd
WzY3Ml09NjcxCi0uWzBdWzY3M109NjcyCi0uWzBdWzY3NF09NjczCi0uWzBdWzY3NV09Njc0Ci0u
WzBdWzY3Nl09Njc1Ci0uWzBdWzY3N109Njc2Ci0uWzBdWzY3OF09Njc3Ci0uWzBdWzY3OV09Njc4
Ci0uWzBdWzY4MF09Njc5Ci0uWzBdWzY4MV09NjgwCi0uWzBdWzY4Ml09NjgxCi0uWzBdWzY4M109
NjgyCi0uWzBdWzY4NF09NjgzCi0uWzBdWzY4NV09Njg0Ci0uWzBdWzY4Nl09Njg1Ci0uWzBdWzY4
N109Njg2Ci0uWzBdWzY4OF09Njg3Ci0uWzBdWzY4OV09Njg4Ci0uWzBdWzY5MF09Njg5Ci0uWzBd
WzY5MV09NjkwCi0uWzBdWzY5Ml09NjkxCi0uWzBdWzY5M109NjkyCi0uWzBdWzY5NF09NjkzCi0u
WzBdWzY5NV09Njk0Ci0uWzBdWzY5Nl09Njk1Ci0uWzBdWzY5N109Njk2Ci0uWzBdWzY5OF09Njk3
Ci0uWzBdWzY5OV09Njk4Ci0uWzBdWzcwMF09Njk5Ci0uWzBdWzcwMV09NzAwCi0uWzBdWzcwMl09
NzAxCi0uWzBdWzcwM109NzAyCi0uWzBdWzcwNF09NzAzCi0uWzBdWzcwNV09NzA0Ci0uWzBdWzcw
Nl09NzA1Ci0uWzBdWzcwN109NzA2Ci0uWzBdWzcwOF09NzA3Ci0uWzBdWzcwOV09NzA4Ci0uWzBd
WzcxMF09NzA5Ci0uWzBdWzcxMV09NzEwCi0uWzBdWzcxMl09NzExCi0uWzBdWzcxM109NzEyCi0u
WzBdWzcxNF09NzEzCi0uWzBdWzcxNV09NzE0Ci0uWzBdWzcxNl09NzE1Ci0uWzBdWzcxN109NzE2
Ci0uWzBdWzcxOF09NzE3Ci0uWzBdWzcxOV09NzE4Ci0uWzBdWzcyMF09NzE5Ci0uWzBdWzcyMV09
NzIwCi0uWzBdWzcyMl09NzIxCi0uWzBdWzcyM109NzIyCi0uWzBdWzcyNF09NzIzCi0uWzBdWzcy
NV09NzI0Ci0uWzBdWzcyNl09NzI1Ci0uWzBdWzcyN109NzI2Ci0uWzBdWzcyOF09NzI3Ci0uWzBd
WzcyOV09NzI4Ci0uWzBdWzczMF09NzI5Ci0uWzBdWzczMV09NzMwCi0uWzBdWzczMl09NzMxCi0u
WzBdWzczM109NzMyCi0uWzBdWzczNF09NzMzCi0uWzBdWzczNV09NzM0Ci0uWzBdWzczNl09NzM1
Ci0uWzBdWzczN109NzM2Ci0uWzBdWzczOF09NzM3Ci0uWzBdWzczOV09NzM4Ci0uWzBdWzc0MF09
NzM5Ci0uWzBdWzc0MV09NzQwCi0uWzBdWzc0Ml09NzQxCi0uWzBdWzc0M109NzQyCi0uWzBdWzc0
NF09NzQzCi0uWzBdWzc0NV09NzQ0Ci0uWzBdWzc0Nl09NzQ1Ci0uWzBdWzc0N109NzQ2Ci0uWzBd
Wzc0OF09NzQ3Ci0uWzBdWzc0OV09NzQ4Ci0uWzBdWzc1MF09NzQ5Ci0uWzBdWzc1MV09NzUwCi0u
WzBdWzc1Ml09NzUxCi0uWzBdWzc1M109NzUyCi0uWzBdWzc1NF09NzUzCi0uWzBdWzc1NV09NzU0
Ci0uWzBdWzc1Nl09NzU1Ci0uWzBdWzc1N109NzU2Ci0uWzBdWzc1OF09NzU3Ci0uWzBdWzc1OV09
NzU4Ci0uWzBdWzc2MF09NzU5Ci0uWzBdWzc2MV09NzYwCi0uWzBdWzc2Ml09NzYxCi0uWzBdWzc2
M109NzYyCi0uWzBdWzc2NF09NzYzCi0uWzBdWzc2NV09NzY0Ci0uWzBdWzc2Nl09NzY1Ci0uWzBd
Wzc2N109NzY2Ci0uWzBdWzc2OF09NzY3Ci0uWzBdWzc2OV09NzY4Ci0uWzBdWzc3MF09NzY5Ci0u
WzBdWzc3MV09NzcwCi0uWzBdWzc3Ml09NzcxCi0uWzBdWzc3M109NzcyCi0uWzBdWzc3NF09Nzcz
Ci0uWzBdWzc3NV09Nzc0Ci0uWzBdWzc3Nl09Nzc1Ci0uWzBdWzc3N109Nzc2Ci0uWzBdWzc3OF09
Nzc3Ci0uWzBdWzc3OV09Nzc4Ci0uWzBdWzc4MF09Nzc5Ci0uWzBdWzc4MV09NzgwCi0uWzBdWzc4
Ml09NzgxCi0uWzBdWzc4M109NzgyCi0uWzBdWzc4NF09NzgzCi0uWzBdWzc4NV09Nzg0Ci0uWzBd
Wzc4Nl09Nzg1Ci0uWzBdWzc4N109Nzg2Ci0uWzBdWzc4OF09Nzg3Ci0uWzBdWzc4OV09Nzg4Ci0u
WzBdWzc5MF09Nzg5Ci0uWzBdWzc5MV09NzkwCi0uWzBdWzc5Ml09NzkxCi0uWzBdWzc5M109Nzky
Ci0uWzBdWzc5NF09NzkzCi0uWzBdWzc5NV09Nzk0Ci0uWzBdWzc5Nl09Nzk1Ci0uWzBdWzc5N109
Nzk2Ci0uWzBdWzc5OF09Nzk3Ci0uWzBdWzc5OV09Nzk4Ci0uWzBdWzgwMF09Nzk5Ci0uWzBdWzgw
MV09ODAwCi0uWzBdWzgwMl09ODAxCi0uWzBdWzgwM109ODAyCi0uWzBdWzgwNF09ODAzCi0uWzBd
WzgwNV09ODA0Ci0uWzBdWzgwNl09ODA1Ci0uWzBdWzgwN109ODA2Ci0uWzBdWzgwOF09ODA3Ci0u
WzBdWzgwOV09ODA4Ci0uWzBdWzgxMF09ODA5Ci0uWzBdWzgxMV09ODEwCi0uWzBdWzgxMl09ODEx
Ci0uWzBdWzgxM109ODEyCi0uWzBdWzgxNF09ODEzCi0uWzBdWzgxNV09ODE0Ci0uWzBdWzgxNl09
ODE1Ci0uWzBdWzgxN109ODE2Ci0uWzBdWzgxOF09ODE3Ci0uWzBdWzgxOV09ODE4Ci0uWzBdWzgy
MF09ODE5Ci0uWzBdWzgyMV09ODIwCi0uWzBdWzgyMl09ODIxCi0uWzBdWzgyM109ODIyCi0uWzBd
WzgyNF09ODIzCi0uWzBdWzgyNV09ODI0Ci0uWzBdWzgyNl09ODI1Ci0uWzBdWzgyN109ODI2Ci0u
WzBdWzgyOF09ODI3Ci0uWzBdWzgyOV09ODI4Ci0uWzBdWzgzMF09ODI5Ci0uWzBdWzgzMV09ODMw
Ci0uWzBdWzgzMl09ODMxCi0uWzBdWzgzM109ODMyCi0uWzBdWzgzNF09ODMzCi0uWzBdWzgzNV09
ODM0Ci0uWzBdWzgzNl09ODM1Ci0uWzBdWzgzN109ODM2Ci0uWzBdWzgzOF09ODM3Ci0uWzBdWzgz
OV09ODM4Ci0uWzBdWzg0MF09ODM5Ci0uWzBdWzg0MV09ODQwCi0uWzBdWzg0Ml09ODQxCi0uWzBd
Wzg0M109ODQyCi0uWzBdWzg0NF09ODQzCi0uWzBdWzg0NV09ODQ0Ci0uWzBdWzg0Nl09ODQ1Ci0u
WzBdWzg0N109ODQ2Ci0uWzBdWzg0OF09ODQ3Ci0uWzBdWzg0OV09ODQ4Ci0uWzBdWzg1MF09ODQ5
Ci0uWzBdWzg1MV09ODUwCi0uWzBdWzg1Ml09ODUxCi0uWzBdWzg1M109ODUyCi0uWzBdWzg1NF09
ODUzCi0uWzBdWzg1NV09ODU0Ci0uWzBdWzg1Nl09ODU1Ci0uWzBdWzg1N109ODU2Ci0uWzBdWzg1
OF09ODU3Ci0uWzBdWzg1OV09ODU4Ci0uWzBdWzg2MF09ODU5Ci0uWzBdWzg2MV09ODYwCi0uWzBd
Wzg2Ml09ODYxCi0uWzBdWzg2M109ODYyCi0uWzBdWzg2NF09ODYzCi0uWzBdWzg2NV09ODY0Ci0u
WzBdWzg2Nl09ODY1Ci0uWzBdWzg2N109ODY2Ci0uWzBdWzg2OF09ODY3Ci0uWzBdWzg2OV09ODY4
Ci0uWzBdWzg3MF09ODY5Ci0uWzBdWzg3MV09ODcwCi0uWzBdWzg3Ml09ODcxCi0uWzBdWzg3M109
ODcyCi0uWzBdWzg3NF09ODczCi0uWzBdWzg3NV09ODc0Ci0uWzBdWzg3Nl09ODc1Ci0uWzBdWzg3
N109ODc2Ci0uWzBdWzg3OF09ODc3Ci0uWzBdWzg3OV09ODc4Ci0uWzBdWzg4MF09ODc5Ci0uWzBd
Wzg4MV09ODgwCi0uWzBdWzg4Ml09ODgxCi0uWzBdWzg4M109ODgyCi0uWzBdWzg4NF09ODgzCi0u
WzBdWzg4NV09ODg0Ci0uWzBdWzg4Nl09ODg1Ci0uWzBdWzg4N109ODg2Ci0uWzBdWzg4OF09ODg3
Ci0uWzBdWzg4OV09ODg4Ci0uWzBdWzg5MF09ODg5Ci0uWzBdWzg5MV09ODkwCi0uWzBdWzg5Ml09
ODkxCi0uWzBdWzg5M109ODkyCi0uWzBdWzg5NF09ODkzCi0uWzBdWzg5NV09ODk0Ci0uWzBdWzg5
Nl09ODk1Ci0uWzBdWzg5N109ODk2Ci0uWzBdWzg5OF09ODk3Ci0uWzBdWzg5OV09ODk4Ci0uWzBd
WzkwMF09ODk5Ci0uWzBdWzkwMV09OTAwCi0uWzBdWzkwMl09OTAxCi0uWzBdWzkwM109OTAyCi0u
WzBdWzkwNF09OTAzCi0uWzBdWzkwNV09OTA0Ci0uWzBdWzkwNl09OTA1Ci0uWzBdWzkwN109OTA2
Ci0uWzBdWzkwOF09OTA3Ci0uWzBdWzkwOV09OTA4Ci0uWzBdWzkxMF09OTA5Ci0uWzBdWzkxMV09
OTEwCi0uWzBdWzkxMl09OTExCi0uWzBdWzkxM109OTEyCi0uWzBdWzkxNF09OTEzCi0uWzBdWzkx
NV09OTE0Ci0uWzBdWzkxNl09OTE1Ci0uWzBdWzkxN109OTE2Ci0uWzBdWzkxOF09OTE3Ci0uWzBd
WzkxOV09OTE4Ci0uWzBdWzkyMF09OTE5Ci0uWzBdWzkyMV09OTIwCi0uWzBdWzkyMl09OTIxCi0u
WzBdWzkyM109OTIyCi0uWzBdWzkyNF09OTIzCi0uWzBdWzkyNV09OTI0Ci0uWzBdWzkyNl09OTI1
Ci0uWzBdWzkyN109OTI2Ci0uWzBdWzkyOF09OTI3Ci0uWzBdWzkyOV09OTI4Ci0uWzBdWzkzMF09
OTI5Ci0uWzBdWzkzMV09OTMwCi0uWzBdWzkzMl09OTMxCi0uWzBdWzkzM109OTMyCi0uWzBdWzkz
NF09OTMzCi0uWzBdWzkzNV09OTM0Ci0uWzBdWzkzNl09OTM1Ci0uWzBdWzkzN109OTM2Ci0uWzBd
WzkzOF09OTM3Ci0uWzBdWzkzOV09OTM4Ci0uWzBdWzk0MF09OTM5Ci0uWzBdWzk0MV09OTQwCi0u
WzBdWzk0Ml09OTQxCi0uWzBdWzk0M109OTQyCi0uWzBdWzk0NF09OTQzCi0uWzBdWzk0NV09OTQ0
Ci0uWzBdWzk0Nl09OTQ1Ci0uWzBdWzk0N109OTQ2Ci0uWzBdWzk0OF09OTQ3Ci0uWzBdWzk0OV09
OTQ4Ci0uWzBdWzk1MF09OTQ5Ci0uWzBdWzk1MV09OTUwCi0uWzBdWzk1Ml09OTUxCi0uWzBdWzk1
M109OTUyCi0uWzBdWzk1NF09OTUzCi0uWzBdWzk1NV09OTU0Ci0uWzBdWzk1Nl09OTU1Ci0uWzBd
Wzk1N109OTU2Ci0uWzBdWzk1OF09OTU3Ci0uWzBdWzk1OV09OTU4Ci0uWzBdWzk2MF09OTU5Ci0u
WzBdWzk2MV09OTYwCi0uWzBdWzk2Ml09OTYxCi0uWzBdWzk2M109OTYyCi0uWzBdWzk2NF09OTYz
Ci0uWzBdWzk2NV09OTY0Ci0uWzBdWzk2Nl09OTY1Ci0uWzBdWzk2N109OTY2Ci0uWzBdWzk2OF09
OTY3Ci0uWzBdWzk2OV09OTY4Ci0uWzBdWzk3MF09OTY5Ci0uWzBdWzk3MV09OTcwCi0uWzBdWzk3
Ml09OTcxCi0uWzBdWzk3M109OTcyCi0uWzBdWzk3NF09OTczCi0uWzBdWzk3NV09OTc0Ci0uWzBd
Wzk3Nl09OTc1Ci0uWzBdWzk3N109OTc2Ci0uWzBdWzk3OF09OTc3Ci0uWzBdWzk3OV09OTc4Ci0u
WzBdWzk4MF09OTc5Ci0uWzBdWzk4MV09OTgwCi0uWzBdWzk4Ml09OTgxCi0uWzBdWzk4M109OTgy
Ci0uWzBdWzk4NF09OTgzCi0uWzBdWzk4NV09OTg0Ci0uWzBdWzk4Nl09OTg1Ci0uWzBdWzk4N109
OTg2Ci0uWzBdWzk4OF09OTg3Ci0uWzBdWzk4OV09OTg4Ci0uWzBdWzk5MF09OTg5Ci0uWzBdWzk5
MV09OTkwCi0uWzBdWzk5Ml09OTkxCi0uWzBdWzk5M109OTkyCi0uWzBdWzk5NF09OTkzCi0uWzBd
Wzk5NV09OTk0Ci0uWzBdWzk5Nl09OTk1Ci0uWzBdWzk5N109OTk2Ci0uWzBdWzk5OF09OTk3Ci0u
WzBdWzk5OV09OTk4Ci0uWzBdWzEwMDBdPTk5OQotLlswXVsxMDAxXT0xMDAwCi0uWzBdWzEwMDJd
PTEwMDEKLS5bMF1bMTAwM109MTAwMgotLlswXVsxMDA0XT0xMDAzCi0uWzBdWzEwMDVdPTEwMDQK
LS5bMF1bMTAwNl09MTAwNQotLlswXVsxMDA3XT0xMDA2Ci0uWzBdWzEwMDhdPTEwMDcKLS5bMF1b
MTAwOV09MTAwOAotLlswXVsxMDEwXT0xMDA5Ci0uWzBdWzEwMTFdPTEwMTAKLS5bMF1bMTAxMl09
MTAxMQotLlswXVsxMDEzXT0xMDEyCi0uWzBdWzEwMTRdPTEwMTMKLS5bMF1bMTAxNV09MTAxNAot
LlswXVsxMDE2XT0xMDE1Ci0uWzBdWzEwMTddPTEwMTYKLS5bMF1bMTAxOF09MTAxNwotLlswXVsx
MDE5XT0xMDE4Ci0uWzBdWzEwMjBdPTEwMTkKLS5bMF1bMTAyMV09MTAyMAotLlswXVsxMDIyXT0x
MDIxCi0uWzBdWzEwMjNdPTEwMjIKLS5bMF1bMTAyNF09MTAyMwotLlswXVsxMDI1XT0xMDI0Ci0u
WzBdWzEwMjZdPTEwMjUKLS5bMF1bMTAyN109MTAyNgotLlswXVsxMDI4XT0xMDI3Ci0uWzBdWzEw
MjldPTEwMjgKLS5bMF1bMTAzMF09MTAyOQotLlswXVsxMDMxXT0xMDMwCi0uWzBdWzEwMzJdPTEw
MzEKLS5bMF1bMTAzM109MTAzMgotLlswXVsxMDM0XT0xMDMzCi0uWzBdWzEwMzVdPTEwMzQKLS5b
MF1bMTAzNl09MTAzNQotLlswXVsxMDM3XT0xMDM2Ci0uWzBdWzEwMzhdPTEwMzcKLS5bMF1bMTAz
OV09MTAzOAotLlswXVsxMDQwXT0xMDM5Ci0uWzBdWzEwNDFdPTEwNDAKLS5bMF1bMTA0Ml09MTA0
MQotLlswXVsxMDQzXT0xMDQyCi0uWzBdWzEwNDRdPTEwNDMKLS5bMF1bMTA0NV09MTA0NAotLlsw
XVsxMDQ2XT0xMDQ1Ci0uWzBdWzEwNDddPTEwNDYKLS5bMF1bMTA0OF09MTA0NwotLlswXVsxMDQ5
XT0xMDQ4Ci0uWzBdWzEwNTBdPTEwNDkKLS5bMF1bMTA1MV09MTA1MAotLlswXVsxMDUyXT0xMDUx
Ci0uWzBdWzEwNTNdPTEwNTIKLS5bMF1bMTA1NF09MTA1MwotLlswXVsxMDU1XT0xMDU0Ci0uWzBd
WzEwNTZdPTEwNTUKLS5bMF1bMTA1N109MTA1NgotLlswXVsxMDU4XT0xMDU3Ci0uWzBdWzEwNTld
PTEwNTgKLS5bMF1bMTA2MF09MTA1OQotLlswXVsxMDYxXT0xMDYwCi0uWzBdWzEwNjJdPTEwNjEK
LS5bMF1bMTA2M109MTA2MgotLlswXVsxMDY0XT0xMDYzCi0uWzBdWzEwNjVdPTEwNjQKLS5bMF1b
MTA2Nl09MTA2NQotLlswXVsxMDY3XT0xMDY2Ci0uWzBdWzEwNjhdPTEwNjcKLS5bMF1bMTA2OV09
MTA2OAotLlswXVsxMDcwXT0xMDY5Ci0uWzBdWzEwNzFdPTEwNzAKLS5bMF1bMTA3Ml09MTA3MQot
LlswXVsxMDczXT0xMDcyCi0uWzBdWzEwNzRdPTEwNzMKLS5bMF1bMTA3NV09MTA3NAotLlswXVsx
MDc2XT0xMDc1Ci0uWzBdWzEwNzddPTEwNzYKLS5bMF1bMTA3OF09MTA3NwotLlswXVsxMDc5XT0x
MDc4Ci0uWzBdWzEwODBdPTEwNzkKLS5bMF1bMTA4MV09MTA4MAotLlswXVsxMDgyXT0xMDgxCi0u
WzBdWzEwODNdPTEwODIKLS5bMF1bMTA4NF09MTA4MwotLlswXVsxMDg1XT0xMDg0Ci0uWzBdWzEw
ODZdPTEwODUKLS5bMF1bMTA4N109MTA4NgotLlswXVsxMDg4XT0xMDg3Ci0uWzBdWzEwODldPTEw
ODgKLS5bMF1bMTA5MF09MTA4OQotLlswXVsxMDkxXT0xMDkwCi0uWzBdWzEwOTJdPTEwOTEKLS5b
MF1bMTA5M109MTA5MgotLlswXVsxMDk0XT0xMDkzCi0uWzBdWzEwOTVdPTEwOTQKLS5bMF1bMTA5
Nl09MTA5NQotLlswXVsxMDk3XT0xMDk2Ci0uWzBdWzEwOThdPTEwOTcKLS5bMF1bMTA5OV09MTA5
OAotLlswXVsxMTAwXT0xMDk5Ci0uWzBdWzExMDFdPTExMDAKLS5bMF1bMTEwMl09MTEwMQotLlsw
XVsxMTAzXT0xMTAyCi0uWzBdWzExMDRdPTExMDMKLS5bMF1bMTEwNV09MTEwNAotLlswXVsxMTA2
XT0xMTA1Ci0uWzBdWzExMDddPTExMDYKLS5bMF1bMTEwOF09MTEwNwotLlswXVsxMTA5XT0xMTA4
Ci0uWzBdWzExMTBdPTExMDkKLS5bMF1bMTExMV09MTExMAotLlswXVsxMTEyXT0xMTExCi0uWzBd
WzExMTNdPTExMTIKLS5bMF1bMTExNF09MTExMwotLlswXVsxMTE1XT0xMTE0Ci0uWzBdWzExMTZd
PTExMTUKLS5bMF1bMTExN109MTExNgotLlswXVsxMTE4XT0xMTE3Ci0uWzBdWzExMTldPTExMTgK
LS5bMF1bMTEyMF09MTExOQotLlswXVsxMTIxXT0xMTIwCi0uWzBdWzExMjJdPTExMjEKLS5bMF1b
MTEyM109MTEyMgotLlswXVsxMTI0XT0xMTIzCi0uWzBdWzExMjVdPTExMjQKLS5bMF1bMTEyNl09
MTEyNQotLlswXVsxMTI3XT0xMTI2Ci0uWzBdWzExMjhdPTExMjcKLS5bMF1bMTEyOV09MTEyOAot
LlswXVsxMTMwXT0xMTI5Ci0uWzBdWzExMzFdPTExMzAKLS5bMF1bMTEzMl09MTEzMQotLlswXVsx
MTMzXT0xMTMyCi0uWzBdWzExMzRdPTExMzMKLS5bMF1bMTEzNV09MTEzNAotLlswXVsxMTM2XT0x
MTM1Ci0uWzBdWzExMzddPTExMzYKLS5bMF1bMTEzOF09MTEzNwotLlswXVsxMTM5XT0xMTM4Ci0u
WzBdWzExNDBdPTExMzkKLS5bMF1bMTE0MV09MTE0MAotLlswXVsxMTQyXT0xMTQxCi0uWzBdWzEx
NDNdPTExNDIKLS5bMF1bMTE0NF09MTE0MwotLlswXVsxMTQ1XT0xMTQ0Ci0uWzBdWzExNDZdPTEx
NDUKLS5bMF1bMTE0N109MTE0NgotLlswXVsxMTQ4XT0xMTQ3Ci0uWzBdWzExNDldPTExNDgKLS5b
MF1bMTE1MF09MTE0OQotLlswXVsxMTUxXT0xMTUwCi0uWzBdWzExNTJdPTExNTEKLS5bMF1bMTE1
M109MTE1MgotLlswXVsxMTU0XT0xMTUzCi0uWzBdWzExNTVdPTExNTQKLS5bMF1bMTE1Nl09MTE1
NQotLlswXVsxMTU3XT0xMTU2Ci0uWzBdWzExNThdPTExNTcKLS5bMF1bMTE1OV09MTE1OAotLlsw
XVsxMTYwXT0xMTU5Ci0uWzBdWzExNjFdPTExNjAKLS5bMF1bMTE2Ml09MTE2MQotLlswXVsxMTYz
XT0xMTYyCi0uWzBdWzExNjRdPTExNjMKLS5bMF1bMTE2NV09MTE2NAotLlswXVsxMTY2XT0xMTY1
Ci0uWzBdWzExNjddPTExNjYKLS5bMF1bMTE2OF09MTE2NwotLlswXVsxMTY5XT0xMTY4Ci0uWzBd
WzExNzBdPTExNjkKLS5bMF1bMTE3MV09MTE3MAotLlswXVsxMTcyXT0xMTcxCi0uWzBdWzExNzNd
PTExNzIKLS5bMF1bMTE3NF09MTE3MwotLlswXVsxMTc1XT0xMTc0Ci0uWzBdWzExNzZdPTExNzUK
LS5bMF1bMTE3N109MTE3NgotLlswXVsxMTc4XT0xMTc3Ci0uWzBdWzExNzldPTExNzgKLS5bMF1b
MTE4MF09MTE3OQotLlswXVsxMTgxXT0xMTgwCi0uWzBdWzExODJdPTExODEKLS5bMF1bMTE4M109
MTE4MgotLlswXVsxMTg0XT0xMTgzCi0uWzBdWzExODVdPTExODQKLS5bMF1bMTE4Nl09MTE4NQot
LlswXVsxMTg3XT0xMTg2Ci0uWzBdWzExODhdPTExODcKLS5bMF1bMTE4OV09MTE4OAotLlswXVsx
MTkwXT0xMTg5Ci0uWzBdWzExOTFdPTExOTAKLS5bMF1bMTE5Ml09MTE5MQotLlswXVsxMTkzXT0x
MTkyCi0uWzBdWzExOTRdPTExOTMKLS5bMF1bMTE5NV09MTE5NAotLlswXVsxMTk2XT0xMTk1Ci0u
WzBdWzExOTddPTExOTYKLS5bMF1bMTE5OF09MTE5NwotLlswXVsxMTk5XT0xMTk4Ci0uWzBdWzEy
MDBdPTExOTkKLS5bMF1bMTIwMV09MTIwMAotLlswXVsxMjAyXT0xMjAxCi0uWzBdWzEyMDNdPTEy
MDIKLS5bMF1bMTIwNF09MTIwMwotLlswXVsxMjA1XT0xMjA0Ci0uWzBdWzEyMDZdPTEyMDUKLS5b
MF1bMTIwN109MTIwNgotLlswXVsxMjA4XT0xMjA3Ci0uWzBdWzEyMDldPTEyMDgKLS5bMF1bMTIx
MF09MTIwOQotLlswXVsxMjExXT0xMjEwCi0uWzBdWzEyMTJdPTEyMTEKLS5bMF1bMTIxM109MTIx
MgotLlswXVsxMjE0XT0xMjEzCi0uWzBdWzEyMTVdPTEyMTQKLS5bMF1bMTIxNl09MTIxNQotLlsw
XVsxMjE3XT0xMjE2Ci0uWzBdWzEyMThdPTEyMTcKLS5bMF1bMTIxOV09MTIxOAotLlswXVsxMjIw
XT0xMjE5Ci0uWzBdWzEyMjFdPTEyMjAKLS5bMF1bMTIyMl09MTIyMQotLlswXVsxMjIzXT0xMjIy
Ci0uWzBdWzEyMjRdPTEyMjMKLS5bMF1bMTIyNV09MTIyNAotLlswXVsxMjI2XT0xMjI1Ci0uWzBd
WzEyMjddPTEyMjYKLS5bMF1bMTIyOF09MTIyNwotLlswXVsxMjI5XT0xMjI4Ci0uWzBdWzEyMzBd
PTEyMjkKLS5bMF1bMTIzMV09MTIzMAotLlswXVsxMjMyXT0xMjMxCi0uWzBdWzEyMzNdPTEyMzIK
LS5bMF1bMTIzNF09MTIzMwotLlswXVsxMjM1XT0xMjM0Ci0uWzBdWzEyMzZdPTEyMzUKLS5bMF1b
MTIzN109MTIzNgotLlswXVsxMjM4XT0xMjM3Ci0uWzBdWzEyMzldPTEyMzgKLS5bMF1bMTI0MF09
MTIzOQotLlswXVsxMjQxXT0xMjQwCi0uWzBdWzEyNDJdPTEyNDEKLS5bMF1bMTI0M109MTI0Mgot
LlswXVsxMjQ0XT0xMjQzCi0uWzBdWzEyNDVdPTEyNDQKLS5bMF1bMTI0Nl09MTI0NQotLlswXVsx
MjQ3XT0xMjQ2Ci0uWzBdWzEyNDhdPTEyNDcKLS5bMF1bMTI0OV09MTI0OAotLlswXVsxMjUwXT0x
MjQ5Ci0uWzBdWzEyNTFdPTEyNTAKLS5bMF1bMTI1Ml09MTI1MQotLlswXVsxMjUzXT0xMjUyCi0u
WzBdWzEyNTRdPTEyNTMKLS5bMF1bMTI1NV09MTI1NAotLlswXVsxMjU2XT0xMjU1Ci0uWzBdWzEy
NTddPTEyNTYKLS5bMF1bMTI1OF09MTI1NwotLlswXVsxMjU5XT0xMjU4Ci0uWzBdWzEyNjBdPTEy
NTkKLS5bMF1bMTI2MV09MTI2MAotLlswXVsxMjYyXT0xMjYxCi0uWzBdWzEyNjNdPTEyNjIKLS5b
MF1bMTI2NF09MTI2MwotLlswXVsxMjY1XT0xMjY0Ci0uWzBdWzEyNjZdPTEyNjUKLS5bMF1bMTI2
N109MTI2NgotLlswXVsxMjY4XT0xMjY3Ci0uWzBdWzEyNjldPTEyNjgKLS5bMF1bMTI3MF09MTI2
OQotLlswXVsxMjcxXT0xMjcwCi0uWzBdWzEyNzJdPTEyNzEKLS5bMF1bMTI3M109MTI3MgotLlsw
XVsxMjc0XT0xMjczCi0uWzBdWzEyNzVdPTEyNzQKLS5bMF1bMTI3Nl09MTI3NQotLlswXVsxMjc3
XT0xMjc2Ci0uWzBdWzEyNzhdPTEyNzcKLS5bMF1bMTI3OV09MTI3OAotLlswXVsxMjgwXT0xMjc5
Ci0uWzBdWzEyODFdPTEyODAKLS5bMF1bMTI4Ml09MTI4MQotLlswXVsxMjgzXT0xMjgyCi0uWzBd
WzEyODRdPTEyODMKLS5bMF1bMTI4NV09MTI4NAotLlswXVsxMjg2XT0xMjg1Ci0uWzBdWzEyODdd
PTEyODYKLS5bMF1bMTI4OF09MTI4NwotLlswXVsxMjg5XT0xMjg4Ci0uWzBdWzEyOTBdPTEyODkK
LS5bMF1bMTI5MV09MTI5MAotLlswXVsxMjkyXT0xMjkxCi0uWzBdWzEyOTNdPTEyOTIKLS5bMF1b
MTI5NF09MTI5MwotLlswXVsxMjk1XT0xMjk0Ci0uWzBdWzEyOTZdPTEyOTUKLS5bMF1bMTI5N109
MTI5NgotLlswXVsxMjk4XT0xMjk3Ci0uWzBdWzEyOTldPTEyOTgKLS5bMF1bMTMwMF09MTI5OQot
LlswXVsxMzAxXT0xMzAwCi0uWzBdWzEzMDJdPTEzMDEKLS5bMF1bMTMwM109MTMwMgotLlswXVsx
MzA0XT0xMzAzCi0uWzBdWzEzMDVdPTEzMDQKLS5bMF1bMTMwNl09MTMwNQotLlswXVsxMzA3XT0x
MzA2Ci0uWzBdWzEzMDhdPTEzMDcKLS5bMF1bMTMwOV09MTMwOAotLlswXVsxMzEwXT0xMzA5Ci0u
WzBdWzEzMTFdPTEzMTAKLS5bMF1bMTMxMl09MTMxMQotLlswXVsxMzEzXT0xMzEyCi0uWzBdWzEz
MTRdPTEzMTMKLS5bMF1bMTMxNV09MTMxNAotLlswXVsxMzE2XT0xMzE1Ci0uWzBdWzEzMTddPTEz
MTYKLS5bMF1bMTMxOF09MTMxNwotLlswXVsxMzE5XT0xMzE4Ci0uWzBdWzEzMjBdPTEzMTkKLS5b
MF1bMTMyMV09MTMyMAotLlswXVsxMzIyXT0xMzIxCi0uWzBdWzEzMjNdPTEzMjIKLS5bMF1bMTMy
NF09MTMyMwotLlswXVsxMzI1XT0xMzI0Ci0uWzBdWzEzMjZdPTEzMjUKLS5bMF1bMTMyN109MTMy
NgotLlswXVsxMzI4XT0xMzI3Ci0uWzBdWzEzMjldPTEzMjgKLS5bMF1bMTMzMF09MTMyOQotLlsw
XVsxMzMxXT0xMzMwCi0uWzBdWzEzMzJdPTEzMzEKLS5bMF1bMTMzM109MTMzMgotLlswXVsxMzM0
XT0xMzMzCi0uWzBdWzEzMzVdPTEzMzQKLS5bMF1bMTMzNl09MTMzNQotLlswXVsxMzM3XT0xMzM2
Ci0uWzBdWzEzMzhdPTEzMzcKLS5bMF1bMTMzOV09MTMzOAotLlswXVsxMzQwXT0xMzM5Ci0uWzBd
WzEzNDFdPTEzNDAKLS5bMF1bMTM0Ml09MTM0MQotLlswXVsxMzQzXT0xMzQyCi0uWzBdWzEzNDRd
PTEzNDMKLS5bMF1bMTM0NV09MTM0NAotLlswXVsxMzQ2XT0xMzQ1Ci0uWzBdWzEzNDddPTEzNDYK
LS5bMF1bMTM0OF09MTM0NwotLlswXVsxMzQ5XT0xMzQ4Ci0uWzBdWzEzNTBdPTEzNDkKLS5bMF1b
MTM1MV09MTM1MAotLlswXVsxMzUyXT0xMzUxCi0uWzBdWzEzNTNdPTEzNTIKLS5bMF1bMTM1NF09
MTM1MwotLlswXVsxMzU1XT0xMzU0Ci0uWzBdWzEzNTZdPTEzNTUKLS5bMF1bMTM1N109MTM1Ngot
LlswXVsxMzU4XT0xMzU3Ci0uWzBdWzEzNTldPTEzNTgKLS5bMF1bMTM2MF09MTM1OQotLlswXVsx
MzYxXT0xMzYwCi0uWzBdWzEzNjJdPTEzNjEKLS5bMF1bMTM2M109MTM2MgotLlswXVsxMzY0XT0x
MzYzCi0uWzBdWzEzNjVdPTEzNjQKLS5bMF1bMTM2Nl09MTM2NQotLlswXVsxMzY3XT0xMzY2Ci0u
WzBdWzEzNjhdPTEzNjcKLS5bMF1bMTM2OV09MTM2OAotLlswXVsxMzcwXT0xMzY5Ci0uWzBdWzEz
NzFdPTEzNzAKLS5bMF1bMTM3Ml09MTM3MQotLlswXVsxMzczXT0xMzcyCi0uWzBdWzEzNzRdPTEz
NzMKLS5bMF1bMTM3NV09MTM3NAotLlswXVsxMzc2XT0xMzc1Ci0uWzBdWzEzNzddPTEzNzYKLS5b
MF1bMTM3OF09MTM3NwotLlswXVsxMzc5XT0xMzc4Ci0uWzBdWzEzODBdPTEzNzkKLS5bMF1bMTM4
MV09MTM4MAotLlswXVsxMzgyXT0xMzgxCi0uWzBdWzEzODNdPTEzODIKLS5bMF1bMTM4NF09MTM4
MwotLlswXVsxMzg1XT0xMzg0Ci0uWzBdWzEzODZdPTEzODUKLS5bMF1bMTM4N109MTM4NgotLlsw
XVsxMzg4XT0xMzg3Ci0uWzBdWzEzODldPTEzODgKLS5bMF1bMTM5MF09MTM4OQotLlswXVsxMzkx
XT0xMzkwCi0uWzBdWzEzOTJdPTEzOTEKLS5bMF1bMTM5M109MTM5MgotLlswXVsxMzk0XT0xMzkz
Ci0uWzBdWzEzOTVdPTEzOTQKLS5bMF1bMTM5Nl09MTM5NQotLlswXVsxMzk3XT0xMzk2Ci0uWzBd
WzEzOThdPTEzOTcKLS5bMF1bMTM5OV09MTM5OAotLlswXVsxNDAwXT0xMzk5Ci0uWzBdWzE0MDFd
PTE0MDAKLS5bMF1bMTQwMl09MTQwMQotLlswXVsxNDAzXT0xNDAyCi0uWzBdWzE0MDRdPTE0MDMK
LS5bMF1bMTQwNV09MTQwNAotLlswXVsxNDA2XT0xNDA1Ci0uWzBdWzE0MDddPTE0MDYKLS5bMF1b
MTQwOF09MTQwNwotLlswXVsxNDA5XT0xNDA4Ci0uWzBdWzE0MTBdPTE0MDkKLS5bMF1bMTQxMV09
MTQxMAotLlswXVsxNDEyXT0xNDExCi0uWzBdWzE0MTNdPTE0MTIKLS5bMF1bMTQxNF09MTQxMwot
LlswXVsxNDE1XT0xNDE0Ci0uWzBdWzE0MTZdPTE0MTUKLS5bMF1bMTQxN109MTQxNgotLlswXVsx
NDE4XT0xNDE3Ci0uWzBdWzE0MTldPTE0MTgKLS5bMF1bMTQyMF09MTQxOQotLlswXVsxNDIxXT0x
NDIwCi0uWzBdWzE0MjJdPTE0MjEKLS5bMF1bMTQyM109MTQyMgotLlswXVsxNDI0XT0xNDIzCi0u
WzBdWzE0MjVdPTE0MjQKLS5bMF1bMTQyNl09MTQyNQotLlswXVsxNDI3XT0xNDI2Ci0uWzBdWzE0
MjhdPTE0MjcKLS5bMF1bMTQyOV09MTQyOAotLlswXVsxNDMwXT0xNDI5Ci0uWzBdWzE0MzFdPTE0
MzAKLS5bMF1bMTQzMl09MTQzMQotLlswXVsxNDMzXT0xNDMyCi0uWzBdWzE0MzRdPTE0MzMKLS5b
MF1bMTQzNV09MTQzNAotLlswXVsxNDM2XT0xNDM1Ci0uWzBdWzE0MzddPTE0MzYKLS5bMF1bMTQz
OF09MTQzNwotLlswXVsxNDM5XT0xNDM4Ci0uWzBdWzE0NDBdPTE0MzkKLS5bMF1bMTQ0MV09MTQ0
MAotLlswXVsxNDQyXT0xNDQxCi0uWzBdWzE0NDNdPTE0NDIKLS5bMF1bMTQ0NF09MTQ0MwotLlsw
XVsxNDQ1XT0xNDQ0Ci0uWzBdWzE0NDZdPTE0NDUKLS5bMF1bMTQ0N109MTQ0NgotLlswXVsxNDQ4
XT0xNDQ3Ci0uWzBdWzE0NDldPTE0NDgKLS5bMF1bMTQ1MF09MTQ0OQotLlswXVsxNDUxXT0xNDUw
Ci0uWzBdWzE0NTJdPTE0NTEKLS5bMF1bMTQ1M109MTQ1MgotLlswXVsxNDU0XT0xNDUzCi0uWzBd
WzE0NTVdPTE0NTQKLS5bMF1bMTQ1Nl09MTQ1NQotLlswXVsxNDU3XT0xNDU2Ci0uWzBdWzE0NThd
PTE0NTcKLS5bMF1bMTQ1OV09MTQ1OAotLlswXVsxNDYwXT0xNDU5Ci0uWzBdWzE0NjFdPTE0NjAK
LS5bMF1bMTQ2Ml09MTQ2MQotLlswXVsxNDYzXT0xNDYyCi0uWzBdWzE0NjRdPTE0NjMKLS5bMF1b
MTQ2NV09MTQ2NAotLlswXVsxNDY2XT0xNDY1Ci0uWzBdWzE0NjddPTE0NjYKLS5bMF1bMTQ2OF09
MTQ2NwotLlswXVsxNDY5XT0xNDY4Ci0uWzBdWzE0NzBdPTE0NjkKLS5bMF1bMTQ3MV09MTQ3MAot
LlswXVsxNDcyXT0xNDcxCi0uWzBdWzE0NzNdPTE0NzIKLS5bMF1bMTQ3NF09MTQ3MwotLlswXVsx
NDc1XT0xNDc0Ci0uWzBdWzE0NzZdPTE0NzUKLS5bMF1bMTQ3N109MTQ3NgotLlswXVsxNDc4XT0x
NDc3Ci0uWzBdWzE0NzldPTE0NzgKLS5bMF1bMTQ4MF09MTQ3OQotLlswXVsxNDgxXT0xNDgwCi0u
WzBdWzE0ODJdPTE0ODEKLS5bMF1bMTQ4M109MTQ4MgotLlswXVsxNDg0XT0xNDgzCi0uWzBdWzE0
ODVdPTE0ODQKLS5bMF1bMTQ4Nl09MTQ4NQotLlswXVsxNDg3XT0xNDg2Ci0uWzBdWzE0ODhdPTE0
ODcKLS5bMF1bMTQ4OV09MTQ4OAotLlswXVsxNDkwXT0xNDg5Ci0uWzBdWzE0OTFdPTE0OTAKLS5b
MF1bMTQ5Ml09MTQ5MQotLlswXVsxNDkzXT0xNDkyCi0uWzBdWzE0OTRdPTE0OTMKLS5bMF1bMTQ5
NV09MTQ5NAotLlswXVsxNDk2XT0xNDk1Ci0uWzBdWzE0OTddPTE0OTYKLS5bMF1bMTQ5OF09MTQ5
NwotLlswXVsxNDk5XT0xNDk4Ci0uWzBdWzE1MDBdPTE0OTkKLS5bMF1bMTUwMV09MTUwMAotLlsw
XVsxNTAyXT0xNTAxCi0uWzBdWzE1MDNdPTE1MDIKLS5bMF1bMTUwNF09MTUwMwotLlswXVsxNTA1
XT0xNTA0Ci0uWzBdWzE1MDZdPTE1MDUKLS5bMF1bMTUwN109MTUwNgotLlswXVsxNTA4XT0xNTA3
Ci0uWzBdWzE1MDldPTE1MDgKLS5bMF1bMTUxMF09MTUwOQotLlswXVsxNTExXT0xNTEwCi0uWzBd
WzE1MTJdPTE1MTEKLS5bMF1bMTUxM109MTUxMgotLlswXVsxNTE0XT0xNTEzCi0uWzBdWzE1MTVd
PTE1MTQKLS5bMF1bMTUxNl09MTUxNQotLlswXVsxNTE3XT0xNTE2Ci0uWzBdWzE1MThdPTE1MTcK
LS5bMF1bMTUxOV09MTUxOAotLlswXVsxNTIwXT0xNTE5Ci0uWzBdWzE1MjFdPTE1MjAKLS5bMF1b
MTUyMl09MTUyMQotLlswXVsxNTIzXT0xNTIyCi0uWzBdWzE1MjRdPTE1MjMKLS5bMF1bMTUyNV09
MTUyNAotLlswXVsxNTI2XT0xNTI1Ci0uWzBdWzE1MjddPTE1MjYKLS5bMF1bMTUyOF09MTUyNwot
LlswXVsxNTI5XT0xNTI4Ci0uWzBdWzE1MzBdPTE1MjkKLS5bMF1bMTUzMV09MTUzMAotLlswXVsx
NTMyXT0xNTMxCi0uWzBdWzE1MzNdPTE1MzIKLS5bMF1bMTUzNF09MTUzMwotLlswXVsxNTM1XT0x
NTM0Ci0uWzBdWzE1MzZdPTE1MzUKLS5bMF1bMTUzN109MTUzNgotLlswXVsxNTM4XT0xNTM3Ci0u
WzBdWzE1MzldPTE1MzgKLS5bMF1bMTU0MF09MTUzOQotLlswXVsxNTQxXT0xNTQwCi0uWzBdWzE1
NDJdPTE1NDEKLS5bMF1bMTU0M109MTU0MgotLlswXVsxNTQ0XT0xNTQzCi0uWzBdWzE1NDVdPTE1
NDQKLS5bMF1bMTU0Nl09MTU0NQotLlswXVsxNTQ3XT0xNTQ2Ci0uWzBdWzE1NDhdPTE1NDcKLS5b
MF1bMTU0OV09MTU0OAotLlswXVsxNTUwXT0xNTQ5Ci0uWzBdWzE1NTFdPTE1NTAKLS5bMF1bMTU1
Ml09MTU1MQotLlswXVsxNTUzXT0xNTUyCi0uWzBdWzE1NTRdPTE1NTMKLS5bMF1bMTU1NV09MTU1
NAotLlswXVsxNTU2XT0xNTU1Ci0uWzBdWzE1NTddPTE1NTYKLS5bMF1bMTU1OF09MTU1NwotLlsw
XVsxNTU5XT0xNTU4Ci0uWzBdWzE1NjBdPTE1NTkKLS5bMF1bMTU2MV09MTU2MAotLlswXVsxNTYy
XT0xNTYxCi0uWzBdWzE1NjNdPTE1NjIKLS5bMF1bMTU2NF09MTU2MwotLlswXVsxNTY1XT0xNTY0
Ci0uWzBdWzE1NjZdPTE1NjUKLS5bMF1bMTU2N109MTU2NgotLlswXVsxNTY4XT0xNTY3Ci0uWzBd
WzE1NjldPTE1NjgKLS5bMF1bMTU3MF09MTU2OQotLlswXVsxNTcxXT0xNTcwCi0uWzBdWzE1NzJd
PTE1NzEKLS5bMF1bMTU3M109MTU3MgotLlswXVsxNTc0XT0xNTczCi0uWzBdWzE1NzVdPTE1NzQK
LS5bMF1bMTU3Nl09MTU3NQotLlswXVsxNTc3XT0xNTc2Ci0uWzBdWzE1NzhdPTE1NzcKLS5bMF1b
MTU3OV09MTU3OAotLlswXVsxNTgwXT0xNTc5Ci0uWzBdWzE1ODFdPTE1ODAKLS5bMF1bMTU4Ml09
MTU4MQotLlswXVsxNTgzXT0xNTgyCi0uWzBdWzE1ODRdPTE1ODMKLS5bMF1bMTU4NV09MTU4NAot
LlswXVsxNTg2XT0xNTg1Ci0uWzBdWzE1ODddPTE1ODYKLS5bMF1bMTU4OF09MTU4NwotLlswXVsx
NTg5XT0xNTg4Ci0uWzBdWzE1OTBdPTE1ODkKLS5bMF1bMTU5MV09MTU5MAotLlswXVsxNTkyXT0x
NTkxCi0uWzBdWzE1OTNdPTE1OTIKLS5bMF1bMTU5NF09MTU5MwotLlswXVsxNTk1XT0xNTk0Ci0u
WzBdWzE1OTZdPTE1OTUKLS5bMF1bMTU5N109MTU5NgotLlswXVsxNTk4XT0xNTk3Ci0uWzBdWzE1
OTldPTE1OTgKLS5bMF1bMTYwMF09MTU5OQotLlswXVsxNjAxXT0xNjAwCi0uWzBdWzE2MDJdPTE2
MDEKLS5bMF1bMTYwM109MTYwMgotLlswXVsxNjA0XT0xNjAzCi0uWzBdWzE2MDVdPTE2MDQKLS5b
MF1bMTYwNl09MTYwNQotLlswXVsxNjA3XT0xNjA2Ci0uWzBdWzE2MDhdPTE2MDcKLS5bMF1bMTYw
OV09MTYwOAotLlswXVsxNjEwXT0xNjA5Ci0uWzBdWzE2MTFdPTE2MTAKLS5bMF1bMTYxMl09MTYx
MQotLlswXVsxNjEzXT0xNjEyCi0uWzBdWzE2MTRdPTE2MTMKLS5bMF1bMTYxNV09MTYxNAotLlsw
XVsxNjE2XT0xNjE1Ci0uWzBdWzE2MTddPTE2MTYKLS5bMF1bMTYxOF09MTYxNwotLlswXVsxNjE5
XT0xNjE4Ci0uWzBdWzE2MjBdPTE2MTkKLS5bMF1bMTYyMV09MTYyMAotLlswXVsxNjIyXT0xNjIx
Ci0uWzBdWzE2MjNdPTE2MjIKLS5bMF1bMTYyNF09MTYyMwotLlswXVsxNjI1XT0xNjI0Ci0uWzBd
WzE2MjZdPTE2MjUKLS5bMF1bMTYyN109MTYyNgotLlswXVsxNjI4XT0xNjI3Ci0uWzBdWzE2Mjld
PTE2MjgKLS5bMF1bMTYzMF09MTYyOQotLlswXVsxNjMxXT0xNjMwCi0uWzBdWzE2MzJdPTE2MzEK
LS5bMF1bMTYzM109MTYzMgotLlswXVsxNjM0XT0xNjMzCi0uWzBdWzE2MzVdPTE2MzQKLS5bMF1b
MTYzNl09MTYzNQotLlswXVsxNjM3XT0xNjM2Ci0uWzBdWzE2MzhdPTE2MzcKLS5bMF1bMTYzOV09
MTYzOAotLlswXVsxNjQwXT0xNjM5Ci0uWzBdWzE2NDFdPTE2NDAKLS5bMF1bMTY0Ml09MTY0MQot
LlswXVsxNjQzXT0xNjQyCi0uWzBdWzE2NDRdPTE2NDMKLS5bMF1bMTY0NV09MTY0NAotLlswXVsx
NjQ2XT0xNjQ1Ci0uWzBdWzE2NDddPTE2NDYKLS5bMF1bMTY0OF09MTY0NwotLlswXVsxNjQ5XT0x
NjQ4Ci0uWzBdWzE2NTBdPTE2NDkKLS5bMF1bMTY1MV09MTY1MAotLlswXVsxNjUyXT0xNjUxCi0u
WzBdWzE2NTNdPTE2NTIKLS5bMF1bMTY1NF09MTY1MwotLlswXVsxNjU1XT0xNjU0Ci0uWzBdWzE2
NTZdPTE2NTUKLS5bMF1bMTY1N109MTY1NgotLlswXVsxNjU4XT0xNjU3Ci0uWzBdWzE2NTldPTE2
NTgKLS5bMF1bMTY2MF09MTY1OQotLlswXVsxNjYxXT0xNjYwCi0uWzBdWzE2NjJdPTE2NjEKLS5b
MF1bMTY2M109MTY2MgotLlswXVsxNjY0XT0xNjYzCi0uWzBdWzE2NjVdPTE2NjQKLS5bMF1bMTY2
Nl09MTY2NQotLlswXVsxNjY3XT0xNjY2Ci0uWzBdWzE2NjhdPTE2NjcKLS5bMF1bMTY2OV09MTY2
OAotLlswXVsxNjcwXT0xNjY5Ci0uWzBdWzE2NzFdPTE2NzAKLS5bMF1bMTY3Ml09MTY3MQotLlsw
XVsxNjczXT0xNjcyCi0uWzBdWzE2NzRdPTE2NzMKLS5bMF1bMTY3NV09MTY3NAotLlswXVsxNjc2
XT0xNjc1Ci0uWzBdWzE2NzddPTE2NzYKLS5bMF1bMTY3OF09MTY3NwotLlswXVsxNjc5XT0xNjc4
Ci0uWzBdWzE2ODBdPTE2NzkKLS5bMF1bMTY4MV09MTY4MAotLlswXVsxNjgyXT0xNjgxCi0uWzBd
WzE2ODNdPTE2ODIKLS5bMF1bMTY4NF09MTY4MwotLlswXVsxNjg1XT0xNjg0Ci0uWzBdWzE2ODZd
PTE2ODUKLS5bMF1bMTY4N109MTY4NgotLlswXVsxNjg4XT0xNjg3Ci0uWzBdWzE2ODldPTE2ODgK
LS5bMF1bMTY5MF09MTY4OQotLlswXVsxNjkxXT0xNjkwCi0uWzBdWzE2OTJdPTE2OTEKLS5bMF1b
MTY5M109MTY5MgotLlswXVsxNjk0XT0xNjkzCi0uWzBdWzE2OTVdPTE2OTQKLS5bMF1bMTY5Nl09
MTY5NQotLlswXVsxNjk3XT0xNjk2Ci0uWzBdWzE2OThdPTE2OTcKLS5bMF1bMTY5OV09MTY5OAot
LlswXVsxNzAwXT0xNjk5Ci0uWzBdWzE3MDFdPTE3MDAKLS5bMF1bMTcwMl09MTcwMQotLlswXVsx
NzAzXT0xNzAyCi0uWzBdWzE3MDRdPTE3MDMKLS5bMF1bMTcwNV09MTcwNAotLlswXVsxNzA2XT0x
NzA1Ci0uWzBdWzE3MDddPTE3MDYKLS5bMF1bMTcwOF09MTcwNwotLlswXVsxNzA5XT0xNzA4Ci0u
WzBdWzE3MTBdPTE3MDkKLS5bMF1bMTcxMV09MTcxMAotLlswXVsxNzEyXT0xNzExCi0uWzBdWzE3
MTNdPTE3MTIKLS5bMF1bMTcxNF09MTcxMwotLlswXVsxNzE1XT0xNzE0Ci0uWzBdWzE3MTZdPTE3
MTUKLS5bMF1bMTcxN109MTcxNgotLlswXVsxNzE4XT0xNzE3Ci0uWzBdWzE3MTldPTE3MTgKLS5b
MF1bMTcyMF09MTcxOQotLlswXVsxNzIxXT0xNzIwCi0uWzBdWzE3MjJdPTE3MjEKLS5bMF1bMTcy
M109MTcyMgotLlswXVsxNzI0XT0xNzIzCi0uWzBdWzE3MjVdPTE3MjQKLS5bMF1bMTcyNl09MTcy
NQotLlswXVsxNzI3XT0xNzI2Ci0uWzBdWzE3MjhdPTE3MjcKLS5bMF1bMTcyOV09MTcyOAotLlsw
XVsxNzMwXT0xNzI5Ci0uWzBdWzE3MzFdPTE3MzAKLS5bMF1bMTczMl09MTczMQotLlswXVsxNzMz
XT0xNzMyCi0uWzBdWzE3MzRdPTE3MzMKLS5bMF1bMTczNV09MTczNAotLlswXVsxNzM2XT0xNzM1
Ci0uWzBdWzE3MzddPTE3MzYKLS5bMF1bMTczOF09MTczNwotLlswXVsxNzM5XT0xNzM4Ci0uWzBd
WzE3NDBdPTE3MzkKLS5bMF1bMTc0MV09MTc0MAotLlswXVsxNzQyXT0xNzQxCi0uWzBdWzE3NDNd
PTE3NDIKLS5bMF1bMTc0NF09MTc0MwotLlswXVsxNzQ1XT0xNzQ0Ci0uWzBdWzE3NDZdPTE3NDUK
LS5bMF1bMTc0N109MTc0NgotLlswXVsxNzQ4XT0xNzQ3Ci0uWzBdWzE3NDldPTE3NDgKLS5bMF1b
MTc1MF09MTc0OQotLlswXVsxNzUxXT0xNzUwCi0uWzBdWzE3NTJdPTE3NTEKLS5bMF1bMTc1M109
MTc1MgotLlswXVsxNzU0XT0xNzUzCi0uWzBdWzE3NTVdPTE3NTQKLS5bMF1bMTc1Nl09MTc1NQot
LlswXVsxNzU3XT0xNzU2Ci0uWzBdWzE3NThdPTE3NTcKLS5bMF1bMTc1OV09MTc1OAotLlswXVsx
NzYwXT0xNzU5Ci0uWzBdWzE3NjFdPTE3NjAKLS5bMF1bMTc2Ml09MTc2MQotLlswXVsxNzYzXT0x
NzYyCi0uWzBdWzE3NjRdPTE3NjMKLS5bMF1bMTc2NV09MTc2NAotLlswXVsxNzY2XT0xNzY1Ci0u
WzBdWzE3NjddPTE3NjYKLS5bMF1bMTc2OF09MTc2NwotLlswXVsxNzY5XT0xNzY4Ci0uWzBdWzE3
NzBdPTE3NjkKLS5bMF1bMTc3MV09MTc3MAotLlswXVsxNzcyXT0xNzcxCi0uWzBdWzE3NzNdPTE3
NzIKLS5bMF1bMTc3NF09MTc3MwotLlswXVsxNzc1XT0xNzc0Ci0uWzBdWzE3NzZdPTE3NzUKLS5b
MF1bMTc3N109MTc3NgotLlswXVsxNzc4XT0xNzc3Ci0uWzBdWzE3NzldPTE3NzgKLS5bMF1bMTc4
MF09MTc3OQotLlswXVsxNzgxXT0xNzgwCi0uWzBdWzE3ODJdPTE3ODEKLS5bMF1bMTc4M109MTc4
MgotLlswXVsxNzg0XT0xNzgzCi0uWzBdWzE3ODVdPTE3ODQKLS5bMF1bMTc4Nl09MTc4NQotLlsw
XVsxNzg3XT0xNzg2Ci0uWzBdWzE3ODhdPTE3ODcKLS5bMF1bMTc4OV09MTc4OAotLlswXVsxNzkw
XT0xNzg5Ci0uWzBdWzE3OTFdPTE3OTAKLS5bMF1bMTc5Ml09MTc5MQotLlswXVsxNzkzXT0xNzky
Ci0uWzBdWzE3OTRdPTE3OTMKLS5bMF1bMTc5NV09MTc5NAotLlswXVsxNzk2XT0xNzk1Ci0uWzBd
WzE3OTddPTE3OTYKLS5bMF1bMTc5OF09MTc5NwotLlswXVsxNzk5XT0xNzk4Ci0uWzBdWzE4MDBd
PTE3OTkKLS5bMF1bMTgwMV09MTgwMAotLlswXVsxODAyXT0xODAxCi0uWzBdWzE4MDNdPTE4MDIK
LS5bMF1bMTgwNF09MTgwMwotLlswXVsxODA1XT0xODA0Ci0uWzBdWzE4MDZdPTE4MDUKLS5bMF1b
MTgwN109MTgwNgotLlswXVsxODA4XT0xODA3Ci0uWzBdWzE4MDldPTE4MDgKLS5bMF1bMTgxMF09
MTgwOQotLlswXVsxODExXT0xODEwCi0uWzBdWzE4MTJdPTE4MTEKLS5bMF1bMTgxM109MTgxMgot
LlswXVsxODE0XT0xODEzCi0uWzBdWzE4MTVdPTE4MTQKLS5bMF1bMTgxNl09MTgxNQotLlswXVsx
ODE3XT0xODE2Ci0uWzBdWzE4MThdPTE4MTcKLS5bMF1bMTgxOV09MTgxOAotLlswXVsxODIwXT0x
ODE5Ci0uWzBdWzE4MjFdPTE4MjAKLS5bMF1bMTgyMl09MTgyMQotLlswXVsxODIzXT0xODIyCi0u
WzBdWzE4MjRdPTE4MjMKLS5bMF1bMTgyNV09MTgyNAotLlswXVsxODI2XT0xODI1Ci0uWzBdWzE4
MjddPTE4MjYKLS5bMF1bMTgyOF09MTgyNwotLlswXVsxODI5XT0xODI4Ci0uWzBdWzE4MzBdPTE4
MjkKLS5bMF1bMTgzMV09MTgzMAotLlswXVsxODMyXT0xODMxCi0uWzBdWzE4MzNdPTE4MzIKLS5b
MF1bMTgzNF09MTgzMwotLlswXVsxODM1XT0xODM0Ci0uWzBdWzE4MzZdPTE4MzUKLS5bMF1bMTgz
N109MTgzNgotLlswXVsxODM4XT0xODM3Ci0uWzBdWzE4MzldPTE4MzgKLS5bMF1bMTg0MF09MTgz
OQotLlswXVsxODQxXT0xODQwCi0uWzBdWzE4NDJdPTE4NDEKLS5bMF1bMTg0M109MTg0MgotLlsw
XVsxODQ0XT0xODQzCi0uWzBdWzE4NDVdPTE4NDQKLS5bMF1bMTg0Nl09MTg0NQotLlswXVsxODQ3
XT0xODQ2Ci0uWzBdWzE4NDhdPTE4NDcKLS5bMF1bMTg0OV09MTg0OAotLlswXVsxODUwXT0xODQ5
Ci0uWzBdWzE4NTFdPTE4NTAKLS5bMF1bMTg1Ml09MTg1MQotLlswXVsxODUzXT0xODUyCi0uWzBd
WzE4NTRdPTE4NTMKLS5bMF1bMTg1NV09MTg1NAotLlswXVsxODU2XT0xODU1Ci0uWzBdWzE4NTdd
PTE4NTYKLS5bMF1bMTg1OF09MTg1NwotLlswXVsxODU5XT0xODU4Ci0uWzBdWzE4NjBdPTE4NTkK
LS5bMF1bMTg2MV09MTg2MAotLlswXVsxODYyXT0xODYxCi0uWzBdWzE4NjNdPTE4NjIKLS5bMF1b
MTg2NF09MTg2MwotLlswXVsxODY1XT0xODY0Ci0uWzBdWzE4NjZdPTE4NjUKLS5bMF1bMTg2N109
MTg2NgotLlswXVsxODY4XT0xODY3Ci0uWzBdWzE4NjldPTE4NjgKLS5bMF1bMTg3MF09MTg2OQot
LlswXVsxODcxXT0xODcwCi0uWzBdWzE4NzJdPTE4NzEKLS5bMF1bMTg3M109MTg3MgotLlswXVsx
ODc0XT0xODczCi0uWzBdWzE4NzVdPTE4NzQKLS5bMF1bMTg3Nl09MTg3NQotLlswXVsxODc3XT0x
ODc2Ci0uWzBdWzE4NzhdPTE4NzcKLS5bMF1bMTg3OV09MTg3OAotLlswXVsxODgwXT0xODc5Ci0u
WzBdWzE4ODFdPTE4ODAKLS5bMF1bMTg4Ml09MTg4MQotLlswXVsxODgzXT0xODgyCi0uWzBdWzE4
ODRdPTE4ODMKLS5bMF1bMTg4NV09MTg4NAotLlswXVsxODg2XT0xODg1Ci0uWzBdWzE4ODddPTE4
ODYKLS5bMF1bMTg4OF09MTg4NwotLlswXVsxODg5XT0xODg4Ci0uWzBdWzE4OTBdPTE4ODkKLS5b
MF1bMTg5MV09MTg5MAotLlswXVsxODkyXT0xODkxCi0uWzBdWzE4OTNdPTE4OTIKLS5bMF1bMTg5
NF09MTg5MwotLlswXVsxODk1XT0xODk0Ci0uWzBdWzE4OTZdPTE4OTUKLS5bMF1bMTg5N109MTg5
NgotLlswXVsxODk4XT0xODk3Ci0uWzBdWzE4OTldPTE4OTgKLS5bMF1bMTkwMF09MTg5OQotLlsw
XVsxOTAxXT0xOTAwCi0uWzBdWzE5MDJdPTE5MDEKLS5bMF1bMTkwM109MTkwMgotLlswXVsxOTA0
XT0xOTAzCi0uWzBdWzE5MDVdPTE5MDQKLS5bMF1bMTkwNl09MTkwNQotLlswXVsxOTA3XT0xOTA2
Ci0uWzBdWzE5MDhdPTE5MDcKLS5bMF1bMTkwOV09MTkwOAotLlswXVsxOTEwXT0xOTA5Ci0uWzBd
WzE5MTFdPTE5MTAKLS5bMF1bMTkxMl09MTkxMQotLlswXVsxOTEzXT0xOTEyCi0uWzBdWzE5MTRd
PTE5MTMKLS5bMF1bMTkxNV09MTkxNAotLlswXVsxOTE2XT0xOTE1Ci0uWzBdWzE5MTddPTE5MTYK
LS5bMF1bMTkxOF09MTkxNwotLlswXVsxOTE5XT0xOTE4Ci0uWzBdWzE5MjBdPTE5MTkKLS5bMF1b
MTkyMV09MTkyMAotLlswXVsxOTIyXT0xOTIxCi0uWzBdWzE5MjNdPTE5MjIKLS5bMF1bMTkyNF09
MTkyMwotLlswXVsxOTI1XT0xOTI0Ci0uWzBdWzE5MjZdPTE5MjUKLS5bMF1bMTkyN109MTkyNgot
LlswXVsxOTI4XT0xOTI3Ci0uWzBdWzE5MjldPTE5MjgKLS5bMF1bMTkzMF09MTkyOQotLlswXVsx
OTMxXT0xOTMwCi0uWzBdWzE5MzJdPTE5MzEKLS5bMF1bMTkzM109MTkzMgotLlswXVsxOTM0XT0x
OTMzCi0uWzBdWzE5MzVdPTE5MzQKLS5bMF1bMTkzNl09MTkzNQotLlswXVsxOTM3XT0xOTM2Ci0u
WzBdWzE5MzhdPTE5MzcKLS5bMF1bMTkzOV09MTkzOAotLlswXVsxOTQwXT0xOTM5Ci0uWzBdWzE5
NDFdPTE5NDAKLS5bMF1bMTk0Ml09MTk0MQotLlswXVsxOTQzXT0xOTQyCi0uWzBdWzE5NDRdPTE5
NDMKLS5bMF1bMTk0NV09MTk0NAotLlswXVsxOTQ2XT0xOTQ1Ci0uWzBdWzE5NDddPTE5NDYKLS5b
MF1bMTk0OF09MTk0NwotLlswXVsxOTQ5XT0xOTQ4Ci0uWzBdWzE5NTBdPTE5NDkKLS5bMF1bMTk1
MV09MTk1MAotLlswXVsxOTUyXT0xOTUxCi0uWzBdWzE5NTNdPTE5NTIKLS5bMF1bMTk1NF09MTk1
MwotLlswXVsxOTU1XT0xOTU0Ci0uWzBdWzE5NTZdPTE5NTUKLS5bMF1bMTk1N109MTk1NgotLlsw
XVsxOTU4XT0xOTU3Ci0uWzBdWzE5NTldPTE5NTgKLS5bMF1bMTk2MF09MTk1OQotLlswXVsxOTYx
XT0xOTYwCi0uWzBdWzE5NjJdPTE5NjEKLS5bMF1bMTk2M109MTk2MgotLlswXVsxOTY0XT0xOTYz
Ci0uWzBdWzE5NjVdPTE5NjQKLS5bMF1bMTk2Nl09MTk2NQotLlswXVsxOTY3XT0xOTY2Ci0uWzBd
WzE5NjhdPTE5NjcKLS5bMF1bMTk2OV09MTk2OAotLlswXVsxOTcwXT0xOTY5Ci0uWzBdWzE5NzFd
PTE5NzAKLS5bMF1bMTk3Ml09MTk3MQotLlswXVsxOTczXT0xOTcyCi0uWzBdWzE5NzRdPTE5NzMK
LS5bMF1bMTk3NV09MTk3NAotLlswXVsxOTc2XT0xOTc1Ci0uWzBdWzE5NzddPTE5NzYKLS5bMF1b
MTk3OF09MTk3NwotLlswXVsxOTc5XT0xOTc4Ci0uWzBdWzE5ODBdPTE5NzkKLS5bMF1bMTk4MV09
MTk4MAotLlswXVsxOTgyXT0xOTgxCi0uWzBdWzE5ODNdPTE5ODIKLS5bMF1bMTk4NF09MTk4Mwot
LlswXVsxOTg1XT0xOTg0Ci0uWzBdWzE5ODZdPTE5ODUKLS5bMF1bMTk4N109MTk4NgotLlswXVsx
OTg4XT0xOTg3Ci0uWzBdWzE5ODldPTE5ODgKLS5bMF1bMTk5MF09MTk4OQotLlswXVsxOTkxXT0x
OTkwCi0uWzBdWzE5OTJdPTE5OTEKLS5bMF1bMTk5M109MTk5MgotLlswXVsxOTk0XT0xOTkzCi0u
WzBdWzE5OTVdPTE5OTQKLS5bMF1bMTk5Nl09MTk5NQotLlswXVsxOTk3XT0xOTk2Ci0uWzBdWzE5
OThdPTE5OTcKLS5bMF1bMTk5OV09MTk5OAotLlswXVsyMDAwXT0xOTk5Ci0uWzBdWzIwMDFdPTIw
MDAKLS5bMF1bMjAwMl09MjAwMQotLlswXVsyMDAzXT0yMDAyCi0uWzBdWzIwMDRdPTIwMDMKLS5b
MF1bMjAwNV09MjAwNAotLlswXVsyMDA2XT0yMDA1Ci0uWzBdWzIwMDddPTIwMDYKLS5bMF1bMjAw
OF09MjAwNwotLlswXVsyMDA5XT0yMDA4Ci0uWzBdWzIwMTBdPTIwMDkKLS5bMF1bMjAxMV09MjAx
MAotLlswXVsyMDEyXT0yMDExCi0uWzBdWzIwMTNdPTIwMTIKLS5bMF1bMjAxNF09MjAxMwotLlsw
XVsyMDE1XT0yMDE0Ci0uWzBdWzIwMTZdPTIwMTUKLS5bMF1bMjAxN109MjAxNgotLlswXVsyMDE4
XT0yMDE3Ci0uWzBdWzIwMTldPTIwMTgKLS5bMF1bMjAyMF09MjAxOQotLlswXVsyMDIxXT0yMDIw
Ci0uWzBdWzIwMjJdPTIwMjEKLS5bMF1bMjAyM109MjAyMgotLlswXVsyMDI0XT0yMDIzCi0uWzBd
WzIwMjVdPTIwMjQKLS5bMF1bMjAyNl09MjAyNQotLlswXVsyMDI3XT0yMDI2Ci0uWzBdWzIwMjhd
PTIwMjcKLS5bMF1bMjAyOV09MjAyOAotLlswXVsyMDMwXT0yMDI5Ci0uWzBdWzIwMzFdPTIwMzAK
LS5bMF1bMjAzMl09MjAzMQotLlswXVsyMDMzXT0yMDMyCi0uWzBdWzIwMzRdPTIwMzMKLS5bMF1b
MjAzNV09MjAzNAotLlswXVsyMDM2XT0yMDM1Ci0uWzBdWzIwMzddPTIwMzYKLS5bMF1bMjAzOF09
MjAzNwotLlswXVsyMDM5XT0yMDM4Ci0uWzBdWzIwNDBdPTIwMzkKLS5bMF1bMjA0MV09MjA0MAot
LlswXVsyMDQyXT0yMDQxCi0uWzBdWzIwNDNdPTIwNDIKLS5bMF1bMjA0NF09MjA0MwotLlswXVsy
MDQ1XT0yMDQ0Ci0uWzBdWzIwNDZdPTIwNDUKLS5bMF1bMjA0N109MjA0NgotLlswXVsyMDQ4XT0y
MDQ3Ci0uWzBdWzIwNDldPTIwNDgKLS5bMF1bMjA1MF09MjA0OQotLlswXVsyMDUxXT0yMDUwCi0u
WzBdWzIwNTJdPTIwNTEKLS5bMF1bMjA1M109MjA1MgotLlswXVsyMDU0XT0yMDUzCi0uWzBdWzIw
NTVdPTIwNTQKLS5bMF1bMjA1Nl09MjA1NQotLlswXVsyMDU3XT0yMDU2Ci0uWzBdWzIwNThdPTIw
NTcKLS5bMF1bMjA1OV09MjA1OAotLlswXVsyMDYwXT0yMDU5Ci0uWzBdWzIwNjFdPTIwNjAKLS5b
MF1bMjA2Ml09MjA2MQotLlswXVsyMDYzXT0yMDYyCi0uWzBdWzIwNjRdPTIwNjMKLS5bMF1bMjA2
NV09MjA2NAotLlswXVsyMDY2XT0yMDY1Ci0uWzBdWzIwNjddPTIwNjYKLS5bMF1bMjA2OF09MjA2
NwotLlswXVsyMDY5XT0yMDY4Ci0uWzBdWzIwNzBdPTIwNjkKLS5bMF1bMjA3MV09MjA3MAotLlsw
XVsyMDcyXT0yMDcxCi0uWzBdWzIwNzNdPTIwNzIKLS5bMF1bMjA3NF09MjA3MwotLlswXVsyMDc1
XT0yMDc0Ci0uWzBdWzIwNzZdPTIwNzUKLS5bMF1bMjA3N109MjA3NgotLlswXVsyMDc4XT0yMDc3
Ci0uWzBdWzIwNzldPTIwNzgKLS5bMF1bMjA4MF09MjA3OQotLlswXVsyMDgxXT0yMDgwCi0uWzBd
WzIwODJdPTIwODEKLS5bMF1bMjA4M109MjA4MgotLlswXVsyMDg0XT0yMDgzCi0uWzBdWzIwODVd
PTIwODQKLS5bMF1bMjA4Nl09MjA4NQotLlswXVsyMDg3XT0yMDg2Ci0uWzBdWzIwODhdPTIwODcK
LS5bMF1bMjA4OV09MjA4OAotLlswXVsyMDkwXT0yMDg5Ci0uWzBdWzIwOTFdPTIwOTAKLS5bMF1b
MjA5Ml09MjA5MQotLlswXVsyMDkzXT0yMDkyCi0uWzBdWzIwOTRdPTIwOTMKLS5bMF1bMjA5NV09
MjA5NAotLlswXVsyMDk2XT0yMDk1Ci0uWzBdWzIwOTddPTIwOTYKLS5bMF1bMjA5OF09MjA5Nwot
LlswXVsyMDk5XT0yMDk4Ci0uWzBdWzIxMDBdPTIwOTkKLS5bMF1bMjEwMV09MjEwMAotLlswXVsy
MTAyXT0yMTAxCi0uWzBdWzIxMDNdPTIxMDIKLS5bMF1bMjEwNF09MjEwMwotLlswXVsyMTA1XT0y
MTA0Ci0uWzBdWzIxMDZdPTIxMDUKLS5bMF1bMjEwN109MjEwNgotLlswXVsyMTA4XT0yMTA3Ci0u
WzBdWzIxMDldPTIxMDgKLS5bMF1bMjExMF09MjEwOQotLlswXVsyMTExXT0yMTEwCi0uWzBdWzIx
MTJdPTIxMTEKLS5bMF1bMjExM109MjExMgotLlswXVsyMTE0XT0yMTEzCi0uWzBdWzIxMTVdPTIx
MTQKLS5bMF1bMjExNl09MjExNQotLlswXVsyMTE3XT0yMTE2Ci0uWzBdWzIxMThdPTIxMTcKLS5b
MF1bMjExOV09MjExOApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNGFiNGNkNDMzMGNmZmYwZjIxNWU2N2YzODg2ZmQxZDI4NmU0MzJjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfbGFyZ2VfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotW1si
QSIsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwy
MSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0
MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1
OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3
OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5
Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwx
MTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEy
NiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQw
LDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQs
MTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwx
NjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4
MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3
LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEs
MjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwy
MjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0
MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0
LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgs
MjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4Miwy
ODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5
NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzEx
LDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUs
MzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwz
NDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1
NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4
LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIs
MzgzLDM4NCwzODUsMzg2LDM4NywzODgsMzg5LDM5MCwzOTEsMzkyLDM5MywzOTQsMzk1LDM5Niwz
OTcsMzk4LDM5OSw0MDAsNDAxLDQwMiw0MDMsNDA0LDQwNSw0MDYsNDA3LDQwOCw0MDksNDEwLDQx
MSw0MTIsNDEzLDQxNCw0MTUsNDE2LDQxNyw0MTgsNDE5LDQyMCw0MjEsNDIyLDQyMyw0MjQsNDI1
LDQyNiw0MjcsNDI4LDQyOSw0MzAsNDMxLDQzMiw0MzMsNDM0LDQzNSw0MzYsNDM3LDQzOCw0Mzks
NDQwLDQ0MSw0NDIsNDQzLDQ0NCw0NDUsNDQ2LDQ0Nyw0NDgsNDQ5LDQ1MCw0NTEsNDUyLDQ1Myw0
NTQsNDU1LDQ1Niw0NTcsNDU4LDQ1OSw0NjAsNDYxLDQ2Miw0NjMsNDY0LDQ2NSw0NjYsNDY3LDQ2
OCw0NjksNDcwLDQ3MSw0NzIsNDczLDQ3NCw0NzUsNDc2LDQ3Nyw0NzgsNDc5LDQ4MCw0ODEsNDgy
LDQ4Myw0ODQsNDg1LDQ4Niw0ODcsNDg4LDQ4OSw0OTAsNDkxLDQ5Miw0OTMsNDk0LDQ5NSw0OTYs
NDk3LDQ5OCw0OTksNTAwLDUwMSw1MDIsNTAzLDUwNCw1MDUsNTA2LDUwNyw1MDgsNTA5LDUxMCw1
MTEsNTEyLDUxMyw1MTQsNTE1LDUxNiw1MTcsNTE4LDUxOSw1MjAsNTIxLDUyMiw1MjMsNTI0LDUy
NSw1MjYsNTI3LDUyOCw1MjksNTMwLDUzMSw1MzIsNTMzLDUzNCw1MzUsNTM2LDUzNyw1MzgsNTM5
LDU0MCw1NDEsNTQyLDU0Myw1NDQsNTQ1LDU0Niw1NDcsNTQ4LDU0OSw1NTAsNTUxLDU1Miw1NTMs
NTU0LDU1NSw1NTYsNTU3LDU1OCw1NTksNTYwLDU2MSw1NjIsNTYzLDU2NCw1NjUsNTY2LDU2Nyw1
NjgsNTY5LDU3MCw1NzEsNTcyLDU3Myw1NzQsNTc1LDU3Niw1NzcsNTc4LDU3OSw1ODAsNTgxLDU4
Miw1ODMsNTg0LDU4NSw1ODYsNTg3LDU4OCw1ODksNTkwLDU5MSw1OTIsNTkzLDU5NCw1OTUsNTk2
LDU5Nyw1OTgsNTk5LDYwMCw2MDEsNjAyLDYwMyw2MDQsNjA1LDYwNiw2MDcsNjA4LDYwOSw2MTAs
NjExLDYxMiw2MTMsNjE0LDYxNSw2MTYsNjE3LDYxOCw2MTksNjIwLDYyMSw2MjIsNjIzLDYyNCw2
MjUsNjI2LDYyNyw2MjgsNjI5LDYzMCw2MzEsNjMyLDYzMyw2MzQsNjM1LDYzNiw2MzcsNjM4LDYz
OSw2NDAsNjQxLDY0Miw2NDMsNjQ0LDY0NSw2NDYsNjQ3LDY0OCw2NDksNjUwLDY1MSw2NTIsNjUz
LDY1NCw2NTUsNjU2LDY1Nyw2NTgsNjU5LDY2MCw2NjEsNjYyLDY2Myw2NjQsNjY1LDY2Niw2Njcs
NjY4LDY2OSw2NzAsNjcxLDY3Miw2NzMsNjc0LDY3NSw2NzYsNjc3LDY3OCw2NzksNjgwLDY4MSw2
ODIsNjgzLDY4NCw2ODUsNjg2LDY4Nyw2ODgsNjg5LDY5MCw2OTEsNjkyLDY5Myw2OTQsNjk1LDY5
Niw2OTcsNjk4LDY5OSw3MDAsNzAxLDcwMiw3MDMsNzA0LDcwNSw3MDYsNzA3LDcwOCw3MDksNzEw
LDcxMSw3MTIsNzEzLDcxNCw3MTUsNzE2LDcxNyw3MTgsNzE5LDcyMCw3MjEsNzIyLDcyMyw3MjQs
NzI1LDcyNiw3MjcsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsNzM0LDczNSw3MzYsNzM3LDczOCw3
MzksNzQwLDc0MSw3NDIsNzQzLDc0NCw3NDUsNzQ2LDc0Nyw3NDgsNzQ5LDc1MCw3NTEsNzUyLDc1
Myw3NTQsNzU1LDc1Niw3NTcsNzU4LDc1OSw3NjAsNzYxLDc2Miw3NjMsNzY0LDc2NSw3NjYsNzY3
LDc2OCw3NjksNzcwLDc3MSw3NzIsNzczLDc3NCw3NzUsNzc2LDc3Nyw3NzgsNzc5LDc4MCw3ODEs
NzgyLDc4Myw3ODQsNzg1LDc4Niw3ODcsNzg4LDc4OSw3OTAsNzkxLDc5Miw3OTMsNzk0LDc5NSw3
OTYsNzk3LDc5OCw3OTksODAwLDgwMSw4MDIsODAzLDgwNCw4MDUsODA2LDgwNyw4MDgsODA5LDgx
MCw4MTEsODEyLDgxMyw4MTQsODE1LDgxNiw4MTcsODE4LDgxOSw4MjAsODIxLDgyMiw4MjMsODI0
LDgyNSw4MjYsODI3LDgyOCw4MjksODMwLDgzMSw4MzIsODMzLDgzNCw4MzUsODM2LDgzNyw4Mzgs
ODM5LDg0MCw4NDEsODQyLDg0Myw4NDQsODQ1LDg0Niw4NDcsODQ4LDg0OSw4NTAsODUxLDg1Miw4
NTMsODU0LDg1NSw4NTYsODU3LDg1OCw4NTksODYwLDg2MSw4NjIsODYzLDg2NCw4NjUsODY2LDg2
Nyw4NjgsODY5LDg3MCw4NzEsODcyLDg3Myw4NzQsODc1LDg3Niw4NzcsODc4LDg3OSw4ODAsODgx
LDg4Miw4ODMsODg0LDg4NSw4ODYsODg3LDg4OCw4ODksODkwLDg5MSw4OTIsODkzLDg5NCw4OTUs
ODk2LDg5Nyw4OTgsODk5LDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDcsOTA4LDkwOSw5
MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDky
NCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMCw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4
LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIs
OTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5
NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDk3NSw5NzYsOTc3LDk3OCw5NzksOTgwLDk4
MSw5ODIsOTgzLDk4NCw5ODUsOTg2LDk4Nyw5ODgsOTg5LDk5MCw5OTEsOTkyLDk5Myw5OTQsOTk1
LDk5Niw5OTcsOTk4LDk5OSwxMDAwLDEwMDEsMTAwMiwxMDAzLDEwMDQsMTAwNSwxMDA2LDEwMDcs
MTAwOCwxMDA5LDEwMTAsMTAxMSwxMDEyLDEwMTMsMTAxNCwxMDE1LDEwMTYsMTAxNywxMDE4LDEw
MTksMTAyMCwxMDIxLDEwMjIsMTAyMywxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMw
LDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwx
MDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1
MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQs
MTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEw
NzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3
LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwx
MDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTEx
MCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTIwLDExMjEs
MTEyMiwxMTIzLDExMjQsMTEyNSwxMTI2LDExMjcsMTEyOCwxMTI5LDExMzAsMTEzMSwxMTMyLDEx
MzMsMTEzNCwxMTM1LDExMzYsMTEzNywxMTM4LDExMzksMTE0MCwxMTQxLDExNDIsMTE0MywxMTQ0
LDExNDUsMTE0NiwxMTQ3LDExNDgsMTE0OSwxMTUwLDExNTEsMTE1MiwxMTUzLDExNTQsMTE1NSwx
MTU2LDExNTcsMTE1OCwxMTU5LDExNjAsMTE2MSwxMTYyLDExNjMsMTE2NCwxMTY1LDExNjYsMTE2
NywxMTY4LDExNjksMTE3MCwxMTcxLDExNzIsMTE3MywxMTc0LDExNzUsMTE3NiwxMTc3LDExNzgs
MTE3OSwxMTgwLDExODEsMTE4MiwxMTgzLDExODQsMTE4NSwxMTg2LDExODcsMTE4OCwxMTg5LDEx
OTAsMTE5MSwxMTkyLDExOTMsMTE5NCwxMTk1LDExOTYsMTE5NywxMTk4LDExOTksMTIwMCwxMjAx
LDEyMDIsMTIwMywxMjA0LDEyMDUsMTIwNiwxMjA3LDEyMDgsMTIwOSwxMjEwLDEyMTEsMTIxMiwx
MjEzLDEyMTQsMTIxNSwxMjE2LDEyMTcsMTIxOCwxMjE5LDEyMjAsMTIyMSwxMjIyLDEyMjMsMTIy
NCwxMjI1LDEyMjYsMTIyNywxMjI4LDEyMjksMTIzMCwxMjMxLDEyMzIsMTIzMywxMjM0LDEyMzUs
MTIzNiwxMjM3LDEyMzgsMTIzOSwxMjQwLDEyNDEsMTI0MiwxMjQzLDEyNDQsMTI0NSwxMjQ2LDEy
NDcsMTI0OCwxMjQ5LDEyNTAsMTI1MSwxMjUyLDEyNTMsMTI1NCwxMjU1LDEyNTYsMTI1NywxMjU4
LDEyNTksMTI2MCwxMjYxLDEyNjIsMTI2MywxMjY0LDEyNjUsMTI2NiwxMjY3LDEyNjgsMTI2OSwx
MjcwLDEyNzEsMTI3MiwxMjczLDEyNzQsMTI3NSwxMjc2LDEyNzcsMTI3OCwxMjc5LDEyODAsMTI4
MSwxMjgyLDEyODMsMTI4NCwxMjg1LDEyODYsMTI4NywxMjg4LDEyODksMTI5MCwxMjkxLDEyOTIs
MTI5MywxMjk0LDEyOTUsMTI5NiwxMjk3LDEyOTgsMTI5OSwxMzAwLDEzMDEsMTMwMiwxMzAzLDEz
MDQsMTMwNSwxMzA2LDEzMDcsMTMwOCwxMzA5LDEzMTAsMTMxMSwxMzEyLDEzMTMsMTMxNCwxMzE1
LDEzMTYsMTMxNywxMzE4LDEzMTksMTMyMCwxMzIxLDEzMjIsMTMyMywxMzI0LDEzMjUsMTMyNiwx
MzI3LDEzMjgsMTMyOSwxMzMwLDEzMzEsMTMzMiwxMzMzLDEzMzQsMTMzNSwxMzM2LDEzMzcsMTMz
OCwxMzM5LDEzNDAsMTM0MSwxMzQyLDEzNDMsMTM0NCwxMzQ1LDEzNDYsMTM0NywxMzQ4LDEzNDks
MTM1MCwxMzUxLDEzNTIsMTM1MywxMzU0LDEzNTUsMTM1NiwxMzU3LDEzNTgsMTM1OSwxMzYwLDEz
NjEsMTM2MiwxMzYzLDEzNjQsMTM2NSwxMzY2LDEzNjcsMTM2OCwxMzY5LDEzNzAsMTM3MSwxMzcy
LDEzNzMsMTM3NCwxMzc1LDEzNzYsMTM3NywxMzc4LDEzNzksMTM4MCwxMzgxLDEzODIsMTM4Mywx
Mzg0LDEzODUsMTM4NiwxMzg3LDEzODgsMTM4OSwxMzkwLDEzOTEsMTM5MiwxMzkzLDEzOTQsMTM5
NSwxMzk2LDEzOTcsMTM5OCwxMzk5LDE0MDAsMTQwMSwxNDAyLDE0MDMsMTQwNCwxNDA1LDE0MDYs
MTQwNywxNDA4LDE0MDksMTQxMCwxNDExLDE0MTIsMTQxMywxNDE0LDE0MTUsMTQxNiwxNDE3LDE0
MTgsMTQxOSwxNDIwLDE0MjEsMTQyMiwxNDIzLDE0MjQsMTQyNSwxNDI2LDE0MjcsMTQyOCwxNDI5
LDE0MzAsMTQzMSwxNDMyLDE0MzMsMTQzNCwxNDM1LDE0MzYsMTQzNywxNDM4LDE0MzksMTQ0MCwx
NDQxLDE0NDIsMTQ0MywxNDQ0LDE0NDUsMTQ0NiwxNDQ3LDE0NDgsMTQ0OSwxNDUwLDE0NTEsMTQ1
MiwxNDUzLDE0NTQsMTQ1NSwxNDU2LDE0NTcsMTQ1OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMs
MTQ2NCwxNDY1LDE0NjYsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0
NzUsMTQ3NiwxNDc3LDE0NzgsMTQ3OSwxNDgwLDE0ODEsMTQ4MiwxNDgzLDE0ODQsMTQ4NSwxNDg2
LDE0ODcsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5Nywx
NDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUw
OSwxNTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsMTUxNSwxNTE2LDE1MTcsMTUxOCwxNTE5LDE1MjAs
MTUyMSwxNTIyLDE1MjMsMTUyNCwxNTI1LDE1MjYsMTUyNywxNTI4LDE1MjksMTUzMCwxNTMxLDE1
MzIsMTUzMywxNTM0LDE1MzUsMTUzNiwxNTM3LDE1MzgsMTUzOSwxNTQwLDE1NDEsMTU0MiwxNTQz
LDE1NDQsMTU0NSwxNTQ2LDE1NDcsMTU0OCwxNTQ5LDE1NTAsMTU1MSwxNTUyLDE1NTMsMTU1NCwx
NTU1LDE1NTYsMTU1NywxNTU4LDE1NTksMTU2MCwxNTYxLDE1NjIsMTU2MywxNTY0LDE1NjUsMTU2
NiwxNTY3LDE1NjgsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1Nzcs
MTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1
ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LDE1OTUsMTU5NiwxNTk3LDE1OTgsMTU5OSwxNjAw
LDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwx
NjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LDE2MTksMTYyMCwxNjIxLDE2MjIsMTYy
MywxNjI0LDE2MjUsMTYyNiwxNjI3LDE2MjgsMTYyOSwxNjMwLDE2MzEsMTYzMiwxNjMzLDE2MzQs
MTYzNSwxNjM2LDE2MzcsMTYzOCwxNjM5LDE2NDAsMTY0MSwxNjQyLDE2NDMsMTY0NCwxNjQ1LDE2
NDYsMTY0NywxNjQ4LDE2NDksMTY1MCwxNjUxLDE2NTIsMTY1MywxNjU0LDE2NTUsMTY1NiwxNjU3
LDE2NTgsMTY1OSwxNjYwLDE2NjEsMTY2MiwxNjYzLDE2NjQsMTY2NSwxNjY2LDE2NjcsMTY2OCwx
NjY5LDE2NzAsMTY3MSwxNjcyLDE2NzMsMTY3NCwxNjc1LDE2NzYsMTY3NywxNjc4LDE2NzksMTY4
MCwxNjgxLDE2ODIsMTY4MywxNjg0LDE2ODUsMTY4NiwxNjg3LDE2ODgsMTY4OSwxNjkwLDE2OTEs
MTY5MiwxNjkzLDE2OTQsMTY5NSwxNjk2LDE2OTcsMTY5OCwxNjk5LDE3MDAsMTcwMSwxNzAyLDE3
MDMsMTcwNCwxNzA1LDE3MDYsMTcwNywxNzA4LDE3MDksMTcxMCwxNzExLDE3MTIsMTcxMywxNzE0
LDE3MTUsMTcxNiwxNzE3LDE3MTgsMTcxOSwxNzIwLDE3MjEsMTcyMiwxNzIzLDE3MjQsMTcyNSwx
NzI2LDE3MjcsMTcyOCwxNzI5LDE3MzAsMTczMSwxNzMyLDE3MzMsMTczNCwxNzM1LDE3MzYsMTcz
NywxNzM4LDE3MzksMTc0MCwxNzQxLDE3NDIsMTc0MywxNzQ0LDE3NDUsMTc0NiwxNzQ3LDE3NDgs
MTc0OSwxNzUwLDE3NTEsMTc1MiwxNzUzLDE3NTQsMTc1NSwxNzU2LDE3NTcsMTc1OCwxNzU5LDE3
NjAsMTc2MSwxNzYyLDE3NjMsMTc2NCwxNzY1LDE3NjYsMTc2NywxNzY4LDE3NjksMTc3MCwxNzcx
LDE3NzIsMTc3MywxNzc0LDE3NzUsMTc3NiwxNzc3LDE3NzgsMTc3OSwxNzgwLDE3ODEsMTc4Miwx
NzgzLDE3ODQsMTc4NSwxNzg2LDE3ODcsMTc4OCwxNzg5LDE3OTAsMTc5MSwxNzkyLDE3OTMsMTc5
NCwxNzk1LDE3OTYsMTc5NywxNzk4LDE3OTksMTgwMCwxODAxLDE4MDIsMTgwMywxODA0LDE4MDUs
MTgwNiwxODA3LDE4MDgsMTgwOSwxODEwLDE4MTEsMTgxMiwxODEzLDE4MTQsMTgxNSwxODE2LDE4
MTcsMTgxOCwxODE5LDE4MjAsMTgyMSwxODIyLDE4MjMsMTgyNCwxODI1LDE4MjYsMTgyNywxODI4
LDE4MjksMTgzMCwxODMxLDE4MzIsMTgzMywxODM0LDE4MzUsMTgzNiwxODM3LDE4MzgsMTgzOSwx
ODQwLDE4NDEsMTg0MiwxODQzLDE4NDQsMTg0NSwxODQ2LDE4NDcsMTg0OCwxODQ5LDE4NTAsMTg1
MSwxODUyLDE4NTMsMTg1NCwxODU1LDE4NTYsMTg1NywxODU4LDE4NTksMTg2MCwxODYxLDE4NjIs
MTg2MywxODY0LDE4NjUsMTg2NiwxODY3LDE4NjgsMTg2OSwxODcwLDE4NzEsMTg3MiwxODczLDE4
NzQsMTg3NSwxODc2LDE4NzcsMTg3OCwxODc5LDE4ODAsMTg4MSwxODgyLDE4ODMsMTg4NCwxODg1
LDE4ODYsMTg4NywxODg4LDE4ODksMTg5MCwxODkxLDE4OTIsMTg5MywxODk0LDE4OTUsMTg5Niwx
ODk3LDE4OTgsMTg5OSwxOTAwLDE5MDEsMTkwMiwxOTAzLDE5MDQsMTkwNSwxOTA2LDE5MDcsMTkw
OCwxOTA5LDE5MTAsMTkxMSwxOTEyLDE5MTMsMTkxNCwxOTE1LDE5MTYsMTkxNywxOTE4LDE5MTks
MTkyMCwxOTIxLDE5MjIsMTkyMywxOTI0LDE5MjUsMTkyNiwxOTI3LDE5MjgsMTkyOSwxOTMwLDE5
MzEsMTkzMiwxOTMzLDE5MzQsMTkzNSwxOTM2LDE5MzcsMTkzOCwxOTM5LDE5NDAsMTk0MSwxOTQy
LDE5NDMsMTk0NCwxOTQ1LDE5NDYsMTk0NywxOTQ4LDE5NDksMTk1MCwxOTUxLDE5NTIsMTk1Mywx
OTU0LDE5NTUsMTk1NiwxOTU3LDE5NTgsMTk1OSwxOTYwLDE5NjEsMTk2MiwxOTYzLDE5NjQsMTk2
NSwxOTY2LDE5NjcsMTk2OCwxOTY5LDE5NzAsMTk3MSwxOTcyLDE5NzMsMTk3NCwxOTc1LDE5NzYs
MTk3NywxOTc4LDE5NzksMTk4MCwxOTgxLDE5ODIsMTk4MywxOTg0LDE5ODUsMTk4NiwxOTg3LDE5
ODgsMTk4OSwxOTkwLDE5OTEsMTk5MiwxOTkzLDE5OTQsMTk5NSwxOTk2LDE5OTcsMTk5OCwxOTk5
LDIwMDAsMjAwMSwyMDAyLDIwMDMsMjAwNCwyMDA1LDIwMDYsMjAwNywyMDA4LDIwMDksMjAxMCwy
MDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiwyMDE3LDIwMTgsMjAxOSwyMDIwLDIwMjEsMjAy
MiwyMDIzLDIwMjQsMjAyNSwyMDI2LDIwMjcsMjAyOCwyMDI5LDIwMzAsMjAzMSwyMDMyLDIwMzMs
MjAzNCwyMDM1LDIwMzYsMjAzNywyMDM4LDIwMzksMjA0MCwyMDQxLDIwNDIsMjA0MywyMDQ0LDIw
NDUsMjA0NiwyMDQ3LDIwNDgsMjA0OSwyMDUwLDIwNTEsMjA1MiwyMDUzLDIwNTQsMjA1NSwyMDU2
LDIwNTcsMjA1OCwyMDU5LDIwNjAsMjA2MSwyMDYyLDIwNjMsMjA2NCwyMDY1LDIwNjYsMjA2Nywy
MDY4LDIwNjksMjA3MCwyMDcxLDIwNzIsMjA3MywyMDc0LDIwNzUsMjA3NiwyMDc3LDIwNzgsMjA3
OSwyMDgwLDIwODEsMjA4MiwyMDgzLDIwODQsMjA4NSwyMDg2LDIwODcsMjA4OCwyMDg5LDIwOTAs
MjA5MSwyMDkyLDIwOTMsMjA5NCwyMDk1LDIwOTYsMjA5NywyMDk4LDIwOTksMjEwMCwyMTAxLDIx
MDIsMjEwMywyMTA0LDIxMDUsMjEwNiwyMTA3LDIxMDgsMjEwOSwyMTEwLDIxMTEsMjExMiwyMTEz
LDIxMTQsMjExNSwyMTE2LDIxMTcsMjExOF0KLV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMS5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2NzQ0NGU1Nzk0ZWY5ZjQ4YjdjYmRmN2Q2MTNhZjYwZjQ0MTlhZDJmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3Rfb2JqZWN0XzAxLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj17
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDEuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA5NjdlZjQyNGJjZTY3OTE4OTNlOWE1N2JiOTUyZjgwZmQ1MzZlOTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9v
YmplY3RfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXt9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3Rfb2JqZWN0XzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
OTM5MWMyYTZjYmRiY2QxZGJkMDRjMWI5ZTg2OWU2OTBhMWY5YzBhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0
XzAyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPXt9Ci0uY291bnQ9
MTIzNApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDIuanNvbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQwZjJmYWNhYzM2OWEyNWUwNzRkMWFmMTgxMDU4Y2ExOGEzYjEwM2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9vYmplY3RfMDIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsgImNvdW50IiA6
IDEyMzQgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDMuZXhwZWN0
ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMy5leHBlY3RlZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNWU5NjExMzc5MmQ1NjFkZDJlMmFmMzZlZDcxZDhjZTVlN2M5ZjZm
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X29iamVjdF8wMy5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAs
MCBAQAotLj17fQotLmF0dHJpYnV0ZT0icmFuZG9tIgotLmNvdW50PTEyMzQKLS5uYW1lPSJ0ZXN0
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDMuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAzLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRmY2Q0ZDgyMWQ0MDYyYzljNmYyNWM3MjQxZjM3MTVmNWUyMjMxN2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9v
YmplY3RfMDMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAoteyAKLQkiY291bnQi
IDogMTIzNCwKLQkibmFtZSIgOiAidGVzdCIsCi0JImF0dHJpYnV0ZSIgOiAicmFuZG9tIgotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDQuZXhwZWN0ZWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wNC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODEyOTY1YjBjYWFmODAxNGNmOGIyYWU4YjQzODA3NTUzYWMwOWRhZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X29iamVjdF8wNC5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLj17
fQotLj0xMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wNC5qc29u
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDQuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDUwNzYyZDcxZTU5YThhNTFkY2QwODEyODlhMGUzMjliM2VjODJjZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X29iamVjdF8wNC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi17IAot
CSIiIDogMTIzNAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9wcmVzZXJ2ZV9j
b21tZW50XzAxLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9wcmVzZXJ2ZV9jb21tZW50
XzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzk3YWE3ZDZiZWRm
NTQyNTQ5ZjFlOTI4MTc3ZTk5MjYxN2Q2MTA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcHJlc2VydmVfY29tbWVudF8w
MS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS8qIEEgY29tbWVudAot
ICAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KLSAqLwotLj17fQotLmZpcnN0PTEKLS8q
IENvbW1lbnQgYmVmb3JlICdzZWNvbmQnCi0gKi8KLS5zZWNvbmQ9MgotLyogQSBjb21tZW50IGF0
IAotICAgdGhlIGVuZCBvZiB0aGUgZmlsZS4KLSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9wcmVzZXJ2ZV9jb21tZW50XzAxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3By
ZXNlcnZlX2NvbW1lbnRfMDEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFi
ZDU1ZGQ5NjYzOWVhNWVjNzc1OWI1YjU0ZDM1YTFiNzRiY2JlZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3ByZXNlcnZl
X2NvbW1lbnRfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS8qIEEgY29t
bWVudAotICAgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KLSAqLwotewotICAgImZpcnN0
IiA6IDEsIC8vIGNvbW1lbnQgYWZ0ZXIgJ2ZpcnN0JyBvbiB0aGUgc2FtZSBsaW5lCi0KLS8qIENv
bW1lbnQgYmVmb3JlICdzZWNvbmQnCi0gKi8KLSAgICJzZWNvbmQiIDogMgotfQotCi0vKiBBIGNv
bW1lbnQgYXQgCi0gICB0aGUgZW5kIG9mIHRoZSBmaWxlLgotICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3Jl
YWxfMDEuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MTQ4MjcwOGEw
YTRjMmMwMjNkOWUzMzQyYWQ0ZWY0OTk2ZTQwNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAxLmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vLyAyXjMzID0+IG91dCBvZiBpbnRlZ2Vy
IHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlCi0uPTg1ODk5MzQ1OTIKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxf
MDEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU4NDUyZDM4NzgwZTZhM2M2
NGFkZGY5YzgyOGZjOTY5MTdlNmFlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDEuanNvbgorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gMl4zMyA9PiBvdXQgb2YgaW50ZWdlciByYW5nZSwgc3dp
dGNoIHRvIGRvdWJsZQotODU4OTkzNDU5MgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X3JlYWxfMDIuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDIuZXhwZWN0
ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MGMwMDQ4MTE5NDYwNDc1YjM3ZTk1
ODhjZWJmMjc0YWYwZDljMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAyLmV4cGVjdGVkCisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi0vLyAtMl4zMiA9PiBvdXQgb2Ygc2lnbmVkIGludGVnZXIgcmFu
Z2UsIHN3aXRjaCB0byBkb3VibGUKLS49LTQyOTQ5NjcyOTUKLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9yZWFsXzAyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDIu
anNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM2YzcwNmI2OGVjYjhhZTQyYmZk
NzhjNTNiMzc4NjFjODgxNjI3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDIuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotLy8gLTJeMzIgPT4gb3V0IG9mIHNpZ25lZCBpbnRlZ2VyIHJhbmdl
LCBzd2l0Y2ggdG8gZG91YmxlCi0tNDI5NDk2NzI5NQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3JlYWxfMDMuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDMu
ZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MGMwMDQ4MTE5NDYwNDc1
YjM3ZTk1ODhjZWJmMjc0YWYwZDljMGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAzLmV4cGVjdGVkCisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vLyAtMl4zMiA9PiBvdXQgb2Ygc2lnbmVkIGludGVn
ZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3VibGUKLS49LTQyOTQ5NjcyOTUKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3Jl
YWxfMDMuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM2YzcwNmI2OGVjYjhh
ZTQyYmZkNzhjNTNiMzc4NjFjODgxNjI3My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDMuanNvbgorKysgL2Rl
di9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gLTJeMzIgPT4gb3V0IG9mIHNpZ25lZCBpbnRlZ2Vy
IHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlCi0tNDI5NDk2NzI5NQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDQuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3Jl
YWxfMDQuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNzFhMjNlMTQx
NTU3YzJiNTc4OGRmOTMyODExOWU0MDRjZThlYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA0LmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vLyAxLjIzNDU2NzgKLS49MS4yMzQ1Njc4
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNC5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9yZWFsXzA0Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE4ZWI2ZDBjOTJjZmU3YjVlOTU0OTM3Yzk4NTI4N2UzYTFhNDg4NzIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFs
XzA0Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIDEuMjM0NTY3OAotMTIz
NDU2NzhlLTcKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1LmV4cGVj
dGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YTQ2MDkzMmQ3YjdjNWZhNjQyYmE2NzkzMzdhYjQ3MmJlMDE3MWFi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfcmVhbF8wNS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBA
QAotLy8gMTIzNDU2Ny44Ci0uPTEyMzQ1NjcuOAotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfcmVhbF8wNS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1Lmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3OTIzYmFiODk4MTA0NThhODY5YjljZWRl
MjNkZWFmZDRiN2YyOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1Lmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLS8vIDEyMzQ1NjcuOAotMC4xMjM0NTY3OGU3Ci0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
cmVhbF8wNi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRhMDA0ZGVi
MTQwNDI1YTliYzI5YWJhNjZkNmMyMWZlM2ExMThhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDYuZXhwZWN0
ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8vIC0xLjIzNDU2NzgKLS49LTEuMjM0
NTY3OAotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNi5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA2Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ4NTQxOWEyNzZjMmJiYTMxODkxY2I3ZDBkMmJiZGVkM2MzZGQ3MzkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9yZWFsXzA2Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIC0xLjIzNDU2
NzgKLS0xMjM0NTY3OGUtNwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxf
MDcuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuZXhwZWN0ZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMDJhODk1ODMxMTI5M2NjZjhlNTVmNzhmNDhmZTdi
NTY1ZGM2NjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA3LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0vLyAtMTIzNDU2Ny44Ci0uPS0xMjM0NTY3LjgKLQotCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8wNy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDEzZWI1YzlhNDM0ODk1
YTNhNDViZWYxOTM1YjgyM2E1NzVhMDY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNy5qc29uCisrKyAvZGV2
L251bGwKQEAgLTEsMyArMCwwIEBACi0vLyAtMTIzNDU2Ny44Ci0tMC4xMjM0NTY3OGU3Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5leHBlY3RlZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfcmVhbF8wOC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjFkZWVmOTE5ZTk1YjI4MmNhMTg1MTRhZDc5Mzc1NDI2YWZjMDZlYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3Jl
YWxfMDguZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8vIE91dCBvZiAz
Mi1iaXQgaW50ZWdlciByYW5nZSwgc3dpdGNoIHRvIGRvdWJsZSBpbiAzMi1iaXQgbW9kZS4gTGVu
Z3RoIHRoZQotLy8gc2FtZSBhcyBVSU5UX01BWCBpbiBiYXNlIDEwIGFuZCBkaWdpdCBsZXNzIHRo
YW4gVUlOVF9NQVgncyBsYXN0IGRpZ2l0IGluCi0vLyBvcmRlciB0byBjYXRjaCBhIGJ1ZyBpbiB0
aGUgcGFyc2luZyBjb2RlLgotLj00MzAwMDAwMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X3JlYWxfMDguanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2E5NTBkOTM5ZWIyZjEwMDEzYjg3OGUxYTYy
NjRjYTNhZDQzY2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEs
NCArMCwwIEBACi0vLyBPdXQgb2YgMzItYml0IGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3Vi
bGUgaW4gMzItYml0IG1vZGUuIExlbmd0aCB0aGUKLS8vIHNhbWUgYXMgVUlOVF9NQVggaW4gYmFz
ZSAxMCBhbmQgZGlnaXQgbGVzcyB0aGFuIFVJTlRfTUFYJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3Jk
ZXIgdG8gY2F0Y2ggYSBidWcgaW4gdGhlIHBhcnNpbmcgY29kZS4KLTQzMDAwMDAwMDEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOS5leHBlY3RlZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfcmVhbF8wOS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWEyZGJiMjg0OWQyNTFiZWQ1YmIxOWRhMDU1MWE5YTZmNGYxNzQxMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxf
MDkuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8vIE91dCBvZiA2NC1i
aXQgaW50ZWdlciByYW5nZSwgc3dpdGNoIHRvIGRvdWJsZSBpbiBhbGwgbW9kZXMuIExlbmd0aCB0
aGUgc2FtZQotLy8gYXMgVUxPTkdfTUFYIGluIGJhc2UgMTAgYW5kIGRpZ2l0IGxlc3MgdGhhbiBV
TE9OR19NQVgncyBsYXN0IGRpZ2l0IGluIG9yZGVyCi0vLyB0byBjYXRjaCBhIGJ1ZyBpbiB0aGUg
cGFyc2luZyBjb2RlLgotLj0xLjllKzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X3JlYWxfMDkuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOS5qc29uCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjVkNTBjOTdjNmZhYzdkOWJmODI5Yzc1ZjYwNGQyYTgw
M2EwZTE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCww
IEBACi0vLyBPdXQgb2YgNjQtYml0IGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3VibGUgaW4g
YWxsIG1vZGVzLiBMZW5ndGggdGhlIHNhbWUKLS8vIGFzIFVMT05HX01BWCBpbiBiYXNlIDEwIGFu
ZCBkaWdpdCBsZXNzIHRoYW4gVUxPTkdfTUFYJ3MgbGFzdCBkaWdpdCBpbiBvcmRlcgotLy8gdG8g
Y2F0Y2ggYSBidWcgaW4gdGhlIHBhcnNpbmcgY29kZS4KLTE5MDAwMDAwMDAwMDAwMDAwMDAxCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTAuZXhwZWN0ZWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3JlYWxfMTAuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQyOGE0MzBlYWI0ZDljNzM3Y2RjYjgyNjVmNGFjYzliODdmOTAxMjcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9y
ZWFsXzEwLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vLyBPdXQgb2Yg
MzItYml0IHNpZ25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlIGluIGFsbCBtb2Rl
cy4gTGVuZ3RoCi0vLyB0aGUgc2FtZSBhcyBJTlRfTUlOIGluIGJhc2UgMTAgYW5kIGRpZ2l0IGxl
c3MgdGhhbiBJTlRfTUlOJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3JkZXIgdG8gY2F0Y2ggYSBidWcg
aW4gdGhlIHBhcnNpbmcgY29kZS4KLS49LTIyMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfcmVhbF8xMC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEwLmpz
b24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YThiY2VmNTBmNDY3MmNjMjg5MjU0
NjRhYWI2YzQyZDRiMzg1YzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEwLmpzb24KKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLS8vIE91dCBvZiAzMi1iaXQgc2lnbmVkIGludGVnZXIgcmFuZ2UsIHN3
aXRjaCB0byBkb3VibGUgaW4gYWxsIG1vZGVzLiBMZW5ndGgKLS8vIHRoZSBzYW1lIGFzIElOVF9N
SU4gaW4gYmFzZSAxMCBhbmQgZGlnaXQgbGVzcyB0aGFuIElOVF9NSU4ncyBsYXN0IGRpZ2l0IGlu
Ci0vLyBvcmRlciB0byBjYXRjaCBhIGJ1ZyBpbiB0aGUgcGFyc2luZyBjb2RlLgotLTIyMDAwMDAw
MDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjU1MTk0NmY1MmY2YTRiOWFjZWMxNTI2OTI0MDU3ZWM3ZmRhN2VlZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X3JlYWxfMTEuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8vIE91
dCBvZiA2NC1iaXQgc2lnbmVkIGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3VibGUgaW4gYWxs
IG1vZGVzLiBMZW5ndGgKLS8vIHRoZSBzYW1lIGFzIExPTkdfTUlOIGluIGJhc2UgMTAgYW5kIGRp
Z2l0IGxlc3MgdGhhbiBMT05HX01JTidzIGxhc3QgZGlnaXQgaW4KLS8vIG9yZGVyIHRvIGNhdGNo
IGEgYnVnIGluIHRoZSBwYXJzaW5nIGNvZGUuCi0uPS05LjNlKzE4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8x
MS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2NkYjM2ZjRlY2Q5NGE4M2Uy
ZmY3OTM0YTg5NTYyNGUxZjhmMTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5qc29uCisrKyAvZGV2L251
bGwKQEAgLTEsNCArMCwwIEBACi0vLyBPdXQgb2YgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHJhbmdl
LCBzd2l0Y2ggdG8gZG91YmxlIGluIGFsbCBtb2Rlcy4gTGVuZ3RoCi0vLyB0aGUgc2FtZSBhcyBM
T05HX01JTiBpbiBiYXNlIDEwIGFuZCBkaWdpdCBsZXNzIHRoYW4gTE9OR19NSU4ncyBsYXN0IGRp
Z2l0IGluCi0vLyBvcmRlciB0byBjYXRjaCBhIGJ1ZyBpbiB0aGUgcGFyc2luZyBjb2RlLgotLTkz
MDAwMDAwMDAwMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8x
Mi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMi5leHBlY3RlZApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlMjQxN2QzNDI0ZGVhMWIyNzUxOTYyMGIyYTNiMjQ1
ZTEyMTNhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTIuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwy
ICswLDAgQEAKLS8vIDJeNjQgLT4gc3dpdGNoIHRvIGRvdWJsZS4KLS49MS44NDQ2NzQ0MDczNzA5
NTVlKzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTIuanNvbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYTEzZWVkMjIwMGJiZjBjZDU5MzFhZjcxMGI5MmJlY2JjZGI5OGM0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
cmVhbF8xMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0vLyAyXjY0IC0+IHN3
aXRjaCB0byBkb3VibGUuCi0xODQ0Njc0NDA3MzcwOTU1MTYxNgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0
cmluZ18wMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZkMzdiMWUw
ZTdkYzJhY2U2ODdlYjgwOTFhMDA3ZDYxNmI5ODViNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMS5leHBl
Y3RlZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS49IiEiIyQlJicoKSorLC0uLzAxMjM0
NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ent8fX4iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3Rfc3RyaW5nXzAxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZDBkYjQ0
ZGZjYjNiZDdlNjA2OGU0YTNlNDdlMWI3ZWIxOWY0ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDEuanNv
bgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSIhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ent8fX4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18w
Mi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAyLmV4cGVjdGVkCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDQzYmMzNjQ5ZGJiMzhiNmFiZDU4MjRlNGQ5NTRi
OTZmZjA3YWE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotLj0iISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQl
JicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1e
X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5
Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXp7fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJico
KSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2Bh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8
PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXp7fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q
UVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSor
LC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/
QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXp7fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0u
LzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7
fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAx
MjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+
ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0
NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIj
JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltc
XV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3
ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ent8fX4iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
c3RyaW5nXzAyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhN2U1ZGNhZDQz
OTM5MDY4MjAzZDlhOTY2MzU2YWJiYTIxZDY5YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIuanNvbgor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSIhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7
PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUm
JygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e
X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIj
JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltc
XF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1
Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4h
XCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEy
MzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNE
RUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8
fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4v
MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKiss
LS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+
P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q
UVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygp
KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2Bh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7
PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMy5l
eHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmV4cGVjdGVkCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWQ2MjdhODUwMzE0MTI3Y2Q1MDhmOGJmMTc5ZDBhNTZk
YTUxMjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotLj0iaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0LyIKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18w
My5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDMuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmQzODE4MGFlYTE0ZTk1NWQwODc0ZWU2ZDQ2OWMxMWU2Nzk0ZmE0
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3N0cmluZ18wMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
Imh0dHA6XC9cL2pzb25jcHAuc291cmNlZm9yZ2UubmV0XC8iCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3N0cmluZ18wNC5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3Ry
aW5nXzA0LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTdkNTI1NmM0
OTZjMDgwYjUwYmMwZjY2NDhkYTY5M2M3NmEwOWViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0LmV4cGVj
dGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPSIiYWJjXGRlZiIiCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X3N0cmluZ18wNC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWZl
NzUyNGNlYjc0YTg5MzM3MjA1YThhMjY0ZDFhYTZkZDE2MDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0
Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSJcImFiY1xcZGVmXCIiCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA1LmV4cGVjdGVkIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDUuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk3OTRkZGRiNGQ3OTEzMDk5MWY5YTUwYWRiMmM5MzM5NDdlNzJkODAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9zdHJpbmdfMDUuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS49Ilxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCIKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDUuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3Ry
aW5nXzA1Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNTYwMjRkNWFlNWI5
Yzc3YzE4NzkwZDkxNTQyZGY0ZjczYjUzZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDUuanNvbgorKysg
L2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIlxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCIKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5leHBlY3RlZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDEuZXhwZWN0ZWQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmM2JlN2ZiNjg3MzdlYTk0Yzg2NDA4M2RjOTA1MjM4NzMx
NGVjYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5leHBlY3RlZAorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLS49ImEiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0
cmluZ191bmljb2RlXzAxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2Rl
XzAxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNDExNGJjMDk1ZjhmZDdi
NTIxYzFhNDQ3YzRhMmEwMjMyZjlmNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5qc29u
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIlx1MDA2MSIKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2Rl
XzAyLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMi5leHBl
Y3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM4OGY1Mzk0MzJhNGZkNWQ4ZmZj
YzQ3NTYxMjJkYTJjM2ZiMjViYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAyLmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0iwqIiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X3N0cmluZ191bmljb2RlXzAyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5
NjEwMjRmYWI0MzE1NTEzMGVmYjExYzBkMWRlZDkzNWZiNmE1NDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdf
dW5pY29kZV8wMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIlx1MDBBMiIKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X3N0cmluZ191bmljb2RlXzAzLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdf
dW5pY29kZV8wMy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI4MGIy
NzE5ZjE5NTQzNDQ3YzNjZWI4MjgwMmE4NjQ3MzRkZTBiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmlj
b2RlXzAzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0i4oKsIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMy5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMy5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlN2UxYTllMTM4OGEzMDk0YjljNmJlYmU3MDE5ZDM1ZTYxMzBkZDkyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLSJcdTIwQUMiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNC5leHBlY3RlZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDQuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI5ZTdmZTNiN2Q1MTk5ZmI1NmM0MmNiNTNjNjRkZjVkYTRlZmRiZTIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9zdHJpbmdfdW5pY29kZV8wNC5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLS49IvCdhJ4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmlj
b2RlXzA0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA0Lmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZTY1YzUxNTU0NmIzZGVjYjMyODdhOTRj
NjU2ZDMxMTUxZGUzYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNC5qc29uCisrKyAvZGV2
L251bGwKQEAgLTEgKzAsMCBAQAotIlx1RDgzNFx1REQxRSIKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA1
LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNS5leHBlY3Rl
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJlNjdmOTk4MTlhMWEyZmI5NzA5OGJh
MTFlMzMxNDUwMDg2NTdlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA1LmV4cGVjdGVkCisr
KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPSJaYcW8w7PFgsSHIGfEmcWbbMSFIGphxbrF
hCIKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNS5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNS5qc29uCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzcwNDEwOTQ2MmNmOTNhYmI0MGZkYWIzYWQyZDEyNTM3
ZWE5NjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDUuanNvbgorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLSJaYcW8w7PFgsSHIGfEmcWbbMSFIGphxbrFhCIKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZ2VuZXJhdGVfZXhwZWN0ZWQucHkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZ2VuZXJhdGVfZXhwZWN0ZWQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwNDlhYjVmNGQxMjMzNjNmMGVjY2VmNzQ5YmY0YThhNDIwZGUyNTMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2dlbmVyYXRl
X2V4cGVjdGVkLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAwNyBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLSMgRGlzdHJp
YnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQK
LSMgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLSMgU2VlIGZpbGUgTElDRU5TRSBm
b3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VO
U0UKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IGdsb2IK
LWltcG9ydCBvcy5wYXRoCi1mb3IgcGF0aCBpbiBnbG9iLmdsb2IoJyouanNvbicpOgotICAgIHRl
eHQgPSBmaWxlKHBhdGgsJ3J0JykucmVhZCgpCi0gICAgdGFyZ2V0ID0gb3MucGF0aC5zcGxpdGV4
dChwYXRoKVswXSArICcuZXhwZWN0ZWQnCi0gICAgaWYgb3MucGF0aC5leGlzdHModGFyZ2V0KToK
LSAgICAgICAgcHJpbnQoJ3NraXBwaW5nOicsIHRhcmdldCkKLSAgICBlbHNlOgotICAgICAgICBw
cmludCgnY3JlYXRpbmc6JywgdGFyZ2V0KQotICAgICAgICBmaWxlKHRhcmdldCwnd3QnKS53cml0
ZSh0ZXh0KQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDEuanNvbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MjE2Yjg2NWYxMDIxOWM1MWM2YWYyMWU3YTY4NjQxYmFiNzdlZTRmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIkEgSlNPTiBwYXls
b2FkIHNob3VsZCBiZSBhbiBvYmplY3Qgb3IgYXJyYXksIG5vdCBhIHN0cmluZy4iClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwxMC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMC5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhjMDA0N2JkNTIyZGZhOWZiYzY0MjA1MWVkNzZiZDMxNjJk
OTM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsMTAuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LXsiRXh0cmEgdmFsdWUgYWZ0ZXIgY2xvc2UiOiB0cnVlfSAibWlzcGxhY2VkIHF1b3RlZCB2YWx1
ZSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDExLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDExLmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZWI5NWI0NTgzYzhlZTc0ZWVlM2JkYzI1
ZTFkYjY5ZTFhYWY0YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMS5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAoteyJJbGxlZ2FsIGV4cHJlc3Npb24iOiAxICsgMn0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDEyLmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDEyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc3NTgwYTQ1MjJkOGM3OTI0NTg1MWU3MmEzNjQ0YTA3MDliM2QyOGMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWwxMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJJbGxl
Z2FsIGludm9jYXRpb24iOiBhbGVydCgpfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTMuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9q
c29uY2hlY2tlci9mYWlsMTMuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc5
NDA2YjU5YmRiOTQzZjE0NWFmZWE5OGZmMWJiYzQ1ZDQzZmY0NS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDEz
Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17Ik51bWJlcnMgY2Fubm90IGhhdmUg
bGVhZGluZyB6ZXJvZXMiOiAwMTN9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNC5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL2ZhaWwxNC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQzNjZi
MzhhMzRmNTUxYzI1NzM1YmRjYjkyODJkMjdiZWFlMDI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTQuanNv
bgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsiTnVtYmVycyBjYW5ub3QgYmUgaGV4Ijog
MHgxNH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
anNvbmNoZWNrZXIvZmFpbDE1Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE1Lmpz
b24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODM3NmI2MDVkYTY5ZGRhMjNmM2Zj
ZGQ5ODE2ZGNiZjJlNzM2Y2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNS5qc29uCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotWyJJbGxlZ2FsIGJhY2tzbGFzaCBlc2NhcGU6IFx4MTUiXQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9m
YWlsMTYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTYuanNvbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlMjFkNGI1MzI0OThjOGI5MDg3MmVmNTcxYzY4NjdmNDVl
NjQ1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE2Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci1bXG5ha2VkXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsMTcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWls
MTcuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJiOTIxNGFlZGE2ZDc0YTcy
ZWJlY2VlZGYwYWFlMzYwOWYxYzYzOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE3Lmpzb24KKysrIC9kZXYv
bnVsbApAQCAtMSArMCwwIEBACi1bIklsbGVnYWwgYmFja3NsYXNoIGVzY2FwZTogXDAxNyJdClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVj
a2VyL2ZhaWwxOC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxOC5qc29uCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGFjOTI3MTZmMTg2ZTM5ZDBlM2M4MThiOGIxMTBi
OWEyYzRhZGQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTguanNvbgorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLVtbW1tbW1tbW1tbW1tbW1tbW1tbIlRvbyBkZWVwIl1dXV1dXV1dXV1dXV1dXV1dXV1d
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL2ZhaWwxOS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxOS5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjljNDZmYTlhMjk2YzlkOGMzNWNlNGE2NTky
ZDhiYjdmZmU3NDhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTkuanNvbgorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLXsiTWlzc2luZyBjb2xvbiIgbnVsbH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsMi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2YjdjMTFlNWE1NjUzN2Y4MWU2NTE5ODAzNTljNjJlMjYzZjczOTlmLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9m
YWlsMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJVbmNsb3NlZCBhcnJheSIK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDIwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIwLmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YzFhZjNlNzJlZTM3YmJmNjRjY2Q3Yjc3YzVi
YWQ4Y2RlYTE1NTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyMC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAoteyJEb3VibGUgY29sb24iOjogbnVsbH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIxLmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDYyNDc0NTczYjIxNjBhZGVmYzNkYzY2OWIzOTIwMGVhNjU5ZDZlNTkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2Vy
L2ZhaWwyMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJDb21tYSBpbnN0ZWFk
IG9mIGNvbG9uIiwgbnVsbH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNr
ZXIvZmFpbDIyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NzUyNTgxYmNm
N2YzYjkwMWFlZjA1MmEyZGY1NDFjMTI4NWI2YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyMi5qc29uCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJDb2xvbiBpbnN0ZWFkIG9mIGNvbW1hIjogZmFs
c2VdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWwyMy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyMy5qc29u
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRhZGQxY2ExOTBlMTJhY2QxYzhlMzRh
YzgxOWE2MzE2YzkyN2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjMuanNvbgorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLVsiQmFkIHZhbHVlIiwgdHJ1dGhdClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNC5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjYWZmMjM5YmZjMzYyOTdkYTA4ODI4MDk1MTA1YmI0OTdiOGFlZjJhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tl
ci9mYWlsMjQuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsnc2luZ2xlIHF1b3Rl
J10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDI1Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI1Lmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiN2FkMjNlMDEwMzE0NTkxZDkxNDUxOTk5
NmMyODQ4M2I1ZGFkYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNS5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotWyIJdGFiCWNoYXJhY3RlcglpbglzdHJpbmcJIl0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI2Lmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI2Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg0NWQyNmE2YTU0Mzk4YzQ5Y2Q0OTJlNjgzNmMwZDE5ODdmNTU0ZTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWwyNi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJ0YWJc
ICAgY2hhcmFjdGVyXCAgIGluXCAgc3RyaW5nXCAgIl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI3Lmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI3Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDZiMDFhMmNhNGE5N2VjMzY2MDQ3NzFkY2MzMTc1YmJjZGE4NjVkODUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2Vy
L2ZhaWwyNy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1bImxpbmUKLWJyZWFr
Il0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDI4Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI4Lmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMWEwMTAxYzY2NGE2MTk0NTdkMTZmMTEw
N2E2NzdjOTExNDgxYjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyOC5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi1bImxpbmVcCi1icmVhayJdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyOS5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwyOS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0N2VjNDIxYmI2MjQyNjQ4ZTgwYjJiNDY1MDQ5YWNiYWUxZTZlNDRhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9m
YWlsMjkuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVswZV0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMy5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNjhjODFlYjc4NTM3ZWE0MDA2ZWEwYTQ2YjY3ODUxZDk5OTU1NjRkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9q
c29uY2hlY2tlci9mYWlsMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAote3VucXVv
dGVkX2tleTogImtleXMgbXVzdCBiZSBxdW90ZWQifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzAuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsMzAuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGFiMGJjNGI4YjJjNzNiNjE2YTQ1OTMxZDA1NzIwNTU1YTJmNzc2Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDMwLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bMGUrXQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWls
MzEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzEuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWNjZTYwMmI1MThmYzZlN2YxNjRhNThjYzcxMGRlZjI3ZTY0Yjhh
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvanNvbmNoZWNrZXIvZmFpbDMxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1b
MGUrLTFdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2pzb25jaGVja2VyL2ZhaWwzMi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMi5q
c29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNiYTczOTZmZjc0NjJkZDZkZTAw
NWMzMmZkMmE5NWM1MzE4ZTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzIuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLXsiQ29tbWEgaW5zdGVhZCBpZiBjbG9zaW5nIGJyYWNlIjogdHJ1ZSwK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDMzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMzLmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNWViMTlkYzk3ZjVjYTM2M2ZmMzNhNGMzNjQ0
YWQyOGU2MTI2NzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotWyJtaXNtYXRjaCJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDQuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRlMTY4YmYz
NGUyZTM2OGQwNDRiY2NjMDk5ZDQ0YjAyMzE2ZGU2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDQuanNvbgor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiZXh0cmEgY29tbWEiLF0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDUu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsNS5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkZGYzY2UzZDI0MDk0NjcwMTFlYzc1NDU1NTFkNWQwNzhiY2UxYmZkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9q
c29uY2hlY2tlci9mYWlsNS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJkb3Vi
bGUgZXh0cmEgY29tbWEiLCxdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw2Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNr
ZXIvZmFpbDYuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ5MTU4MGUxYjFj
MTUxOTRhOWE3NThmMWIyMzE1NzUwNzQ3MjJkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDYuanNvbgorKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsgICAsICI8LS0gbWlzc2luZyB2YWx1ZSJdClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2Vy
L2ZhaWw3Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDcuanNvbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5NmFmM2U0ZWU2YzdmZmZkOGRhNjQxZGVkY2Q3NTBhNWNj
NGQ5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDcuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LVsiQ29tbWEgYWZ0ZXIgdGhlIGNsb3NlIl0sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw4Lmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
anNvbmNoZWNrZXIvZmFpbDguanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4
NDc5YzZlY2IyMWE4MDFkNjk4OGI5ZWEzOWE0ZWIwMGE2NDcwMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDgu
anNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiRXh0cmEgY2xvc2UiXV0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDkuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsOS5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1ODE1NTc0ZjM2M2U1OGNmOTE1NzhlOTA5ZWY0ZGFiYjQwMmE3
NWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsOS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
eyJFeHRyYSBjb21tYSI6IHRydWUsfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9wYXNzMS5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL3Bhc3MxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZTI2ODU0
MzY5MjgyZTYyNWU3NWIzMDI3ODJmNTgxZTYxMGYyYjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MxLmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1bCi0gICAgIkpTT04gVGVzdCBQYXR0ZXJu
IHBhc3MxIiwKLSAgICB7Im9iamVjdCB3aXRoIDEgbWVtYmVyIjpbImFycmF5IHdpdGggMSBlbGVt
ZW50Il19LAotICAgIHt9LAotICAgIFtdLAotICAgIC00MiwKLSAgICB0cnVlLAotICAgIGZhbHNl
LAotICAgIG51bGwsCi0gICAgewotICAgICAgICAiaW50ZWdlciI6IDEyMzQ1Njc4OTAsCi0gICAg
ICAgICJyZWFsIjogLTk4NzYuNTQzMjEwLAotICAgICAgICAiZSI6IDAuMTIzNDU2Nzg5ZS0xMiwK
LSAgICAgICAgIkUiOiAxLjIzNDU2Nzg5MEUrMzQsCi0gICAgICAgICIiOiAgMjM0NTY3ODkwMTJF
NjYsCi0gICAgICAgICJ6ZXJvIjogMCwKLSAgICAgICAgIm9uZSI6IDEsCi0gICAgICAgICJzcGFj
ZSI6ICIgIiwKLSAgICAgICAgInF1b3RlIjogIlwiIiwKLSAgICAgICAgImJhY2tzbGFzaCI6ICJc
XCIsCi0gICAgICAgICJjb250cm9scyI6ICJcYlxmXG5cclx0IiwKLSAgICAgICAgInNsYXNoIjog
Ii8gJiBcLyIsCi0gICAgICAgICJhbHBoYSI6ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3l6IiwK
LSAgICAgICAgIkFMUEhBIjogIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWVoiLAotICAgICAgICAi
ZGlnaXQiOiAiMDEyMzQ1Njc4OSIsCi0gICAgICAgICIwMTIzNDU2Nzg5IjogImRpZ2l0IiwKLSAg
ICAgICAgInNwZWNpYWwiOiAiYDF+IUAjJCVeJiooKV8rLT17JzpbLF19fDsuPC8+PyIsCi0gICAg
ICAgICJoZXgiOiAiXHUwMTIzXHU0NTY3XHU4OUFCXHVDREVGXHVhYmNkXHVlZjRBIiwKLSAgICAg
ICAgInRydWUiOiB0cnVlLAotICAgICAgICAiZmFsc2UiOiBmYWxzZSwKLSAgICAgICAgIm51bGwi
OiBudWxsLAotICAgICAgICAiYXJyYXkiOlsgIF0sCi0gICAgICAgICJvYmplY3QiOnsgIH0sCi0g
ICAgICAgICJhZGRyZXNzIjogIjUwIFN0LiBKYW1lcyBTdHJlZXQiLAotICAgICAgICAidXJsIjog
Imh0dHA6Ly93d3cuSlNPTi5vcmcvIiwKLSAgICAgICAgImNvbW1lbnQiOiAiLy8gLyogPCEtLSAt
LSIsCi0gICAgICAgICIjIC0tIC0tPiAqLyI6ICIgIiwKLSAgICAgICAgIiBzIHAgYSBjIGUgZCAi
IDpbMSwyICwgMwotCi0sCi0KLTQgLCA1ICAgICAgICAsICAgICAgICAgIDYgICAgICAgICAgICw3
ICAgICAgICBdLCJjb21wYWN0IjpbMSwyLDMsNCw1LDYsN10sCi0gICAgICAgICJqc29udGV4dCI6
ICJ7XCJvYmplY3Qgd2l0aCAxIG1lbWJlclwiOltcImFycmF5IHdpdGggMSBlbGVtZW50XCJdfSIs
Ci0gICAgICAgICJxdW90ZXMiOiAiJiMzNDsgXHUwMDIyICUyMiAweDIyIDAzNCAmI3gyMjsiLAot
ICAgICAgICAiXC9cXFwiXHVDQUZFXHVCQUJFXHVBQjk4XHVGQ0RFXHViY2RhXHVlZjRBXGJcZlxu
XHJcdGAxfiFAIyQlXiYqKClfKy09W117fXw7OicsLi88Pj8iCi06ICJBIGtleSBjYW4gYmUgYW55
IHN0cmluZyIKLSAgICB9LAotICAgIDAuNSAsOTguNgotLAotOTkuNDQKLSwKLQotMTA2NiwKLTFl
MSwKLTAuMWUxLAotMWUtMSwKLTFlMDAsMmUrMDAsMmUtMDAKLSwicm9zZWJ1ZCJdClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bh
c3MyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcGFzczIuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDNjNjNjN2FkODQ1ZTRjZWRkMGM3MGQxMzEwMmIzOGM1MWVjMTk3
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvanNvbmNoZWNrZXIvcGFzczIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVtb
W1tbW1tbW1tbW1tbW1tbW1siTm90IHRvbyBkZWVwIl1dXV1dXV1dXV1dXV1dXV1dXV0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
cGFzczMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9wYXNzMy5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NTI4ZDUxZjFhYzYxNWU3ZTExZGJiMTMyMWRjOTkxODc3MDVm
MGQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9wYXNzMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBA
Ci17Ci0gICAgIkpTT04gVGVzdCBQYXR0ZXJuIHBhc3MzIjogewotICAgICAgICAiVGhlIG91dGVy
bW9zdCB2YWx1ZSI6ICJtdXN0IGJlIGFuIG9iamVjdCBvciBhcnJheS4iLAotICAgICAgICAiSW4g
dGhpcyB0ZXN0IjogIkl0IGlzIGFuIG9iamVjdC4iCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2pzb25jaGVja2VyL3JlYWRtZS50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcmVh
ZG1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxZDg5ZDk5OGVkMmFmNDI3
OTE0ODU1NTdjYjgzYzUxMzA1MDE4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcmVhZG1lLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdCBzdWl0ZSBmcm9tIGh0dHA6Ly9qc29uLm9yZy9KU09O
X2NoZWNrZXIvLgotCi1JZiB0aGUgSlNPTl9jaGVja2VyIGlzIHdvcmtpbmcgY29ycmVjdGx5LCBp
dCBtdXN0IGFjY2VwdCBhbGwgb2YgdGhlIHBhc3MqLmpzb24gZmlsZXMgYW5kIHJlamVjdCBhbGwg
b2YgdGhlIGZhaWwqLmpzb24gZmlsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvcHlqc29udGVz
dHJ1bm5lci5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9weWpzb250ZXN0cnVubmVyLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZDc0OWI1MzBmMzBlODI2NDIyMWZhZjBmOTJkZjY1ZGU3Mjk0OTEw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9weWpzb250ZXN0cnVubmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAwNyBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMK
LSMgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVz
aXJlZCBhbmQKLSMgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLSMgU2VlIGZpbGUg
TElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2Uu
bmV0L0xJQ0VOU0UKLQotIiIiU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEganNvbiB0ZXN0IHJ1
bm5lciB0byBydW4gdGhlIHRlc3QgYWdhaW5zdAotanNvbi1weS4iIiIKLQotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwotaW1wb3J0IG9zLnBhdGgKLWlt
cG9ydCBqc29uCi1pbXBvcnQgdHlwZXMKLQotaWYgbGVuKHN5cy5hcmd2KSAhPSAyOgotICAgIHBy
aW50KCJVc2FnZTogJXMgaW5wdXQtanNvbi1maWxlIiwgc3lzLmFyZ3ZbMF0pCi0gICAgc3lzLmV4
aXQoMykKLSAgICAKLWlucHV0X3BhdGggPSBzeXMuYXJndlsxXQotYmFzZV9wYXRoID0gb3MucGF0
aC5zcGxpdGV4dChpbnB1dF9wYXRoKVswXQotYWN0dWFsX3BhdGggPSBiYXNlX3BhdGggKyAnLmFj
dHVhbCcKLXJld3JpdGVfcGF0aCA9IGJhc2VfcGF0aCArICcucmV3cml0ZScKLXJld3JpdGVfYWN0
dWFsX3BhdGggPSBiYXNlX3BhdGggKyAnLmFjdHVhbC1yZXdyaXRlJwotCi1kZWYgdmFsdWVUcmVl
VG9TdHJpbmcoZm91dCwgdmFsdWUsIHBhdGggPSAnLicpOgotICAgIHR5ID0gdHlwZSh2YWx1ZSkg
Ci0gICAgaWYgdHkgIGlzIHR5cGVzLkRpY3RUeXBlOgotICAgICAgICBmb3V0LndyaXRlKCclcz17
fVxuJyAlIHBhdGgpCi0gICAgICAgIHN1ZmZpeCA9IHBhdGhbLTFdICE9ICcuJyBhbmQgJy4nIG9y
ICcnCi0gICAgICAgIG5hbWVzID0gdmFsdWUua2V5cygpCi0gICAgICAgIG5hbWVzLnNvcnQoKQot
ICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgICAgIHZhbHVlVHJlZVRvU3RyaW5n
KGZvdXQsIHZhbHVlW25hbWVdLCBwYXRoICsgc3VmZml4ICsgbmFtZSkKLSAgICBlbGlmIHR5IGlz
IHR5cGVzLkxpc3RUeXBlOgotICAgICAgICBmb3V0LndyaXRlKCclcz1bXVxuJyAlIHBhdGgpCi0g
ICAgICAgIGZvciBpbmRleCwgY2hpbGRWYWx1ZSBpbiB6aXAoeHJhbmdlKDAsbGVuKHZhbHVlKSks
IHZhbHVlKToKLSAgICAgICAgICAgIHZhbHVlVHJlZVRvU3RyaW5nKGZvdXQsIGNoaWxkVmFsdWUs
IHBhdGggKyAnWyVkXScgJSBpbmRleCkKLSAgICBlbGlmIHR5IGlzIHR5cGVzLlN0cmluZ1R5cGU6
Ci0gICAgICAgIGZvdXQud3JpdGUoJyVzPSIlcyJcbicgJSAocGF0aCx2YWx1ZSkpCi0gICAgZWxp
ZiB0eSBpcyB0eXBlcy5JbnRUeXBlOgotICAgICAgICBmb3V0LndyaXRlKCclcz0lZFxuJyAlIChw
YXRoLHZhbHVlKSkKLSAgICBlbGlmIHR5IGlzIHR5cGVzLkZsb2F0VHlwZToKLSAgICAgICAgZm91
dC53cml0ZSgnJXM9JS4xNmdcbicgJSAocGF0aCx2YWx1ZSkpCi0gICAgZWxpZiB2YWx1ZSBpcyBU
cnVlOgotICAgICAgICBmb3V0LndyaXRlKCclcz10cnVlXG4nICUgcGF0aCkKLSAgICBlbGlmIHZh
bHVlIGlzIEZhbHNlOgotICAgICAgICBmb3V0LndyaXRlKCclcz1mYWxzZVxuJyAlIHBhdGgpCi0g
ICAgZWxpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICBmb3V0LndyaXRlKCclcz1udWxsXG4nICUg
cGF0aCkKLSAgICBlbHNlOgotICAgICAgICBhc3NlcnQgRmFsc2UgYW5kICJVbmV4cGVjdGVkIHZh
bHVlIHR5cGUiCi0gICAgICAgIAotZGVmIHBhcnNlQW5kU2F2ZVZhbHVlVHJlZShpbnB1dCwgYWN0
dWFsX3BhdGgpOgotICAgIHJvb3QgPSBqc29uLmxvYWRzKGlucHV0KQotICAgIGZvdXQgPSBmaWxl
KGFjdHVhbF9wYXRoLCAnd3QnKQotICAgIHZhbHVlVHJlZVRvU3RyaW5nKGZvdXQsIHJvb3QpCi0g
ICAgZm91dC5jbG9zZSgpCi0gICAgcmV0dXJuIHJvb3QKLQotZGVmIHJld3JpdGVWYWx1ZVRyZWUo
dmFsdWUsIHJld3JpdGVfcGF0aCk6Ci0gICAgcmV3cml0ZSA9IGpzb24uZHVtcHModmFsdWUpCi0g
ICAgI3Jld3JpdGUgPSByZXdyaXRlWzE6LTFdICAjIFNvbWVob3cgdGhlIHN0cmluZyBpcyBxdW90
ZWQgISBqc29ucHkgYnVnID8KLSAgICBmaWxlKHJld3JpdGVfcGF0aCwgJ3d0Jykud3JpdGUocmV3
cml0ZSArICdcbicpCi0gICAgcmV0dXJuIHJld3JpdGUKLSAgICAKLWlucHV0ID0gZmlsZShpbnB1
dF9wYXRoLCAncnQnKS5yZWFkKCkKLXJvb3QgPSBwYXJzZUFuZFNhdmVWYWx1ZVRyZWUoaW5wdXQs
IGFjdHVhbF9wYXRoKQotcmV3cml0ZSA9IHJld3JpdGVWYWx1ZVRyZWUoanNvbi53cml0ZShyb290
KSwgcmV3cml0ZV9wYXRoKQotcmV3cml0ZV9yb290ID0gcGFyc2VBbmRTYXZlVmFsdWVUcmVlKHJl
d3JpdGUsIHJld3JpdGVfYWN0dWFsX3BhdGgpCi0KLXN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvcnVuanNvbnRlc3RzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L3J1bmpzb250ZXN0cy5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZkZWNhM2VhYmZlNjA1ZTIyMTJlOTQxNWMwM2I1
N2YzYzFhYzg0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvcnVuanNvbnRlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMDcgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBB
dXRob3JzCi0jIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWlu
IGlmIGRlc2lyZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNl
ZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJj
ZWZvcmdlLm5ldC9MSUNFTlNFCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rp
b24KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotZnJvbSBpbyBpbXBv
cnQgb3BlbgotZnJvbSBnbG9iIGltcG9ydCBnbG9iCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWlt
cG9ydCBvcy5wYXRoCi1pbXBvcnQgb3B0cGFyc2UKLQotVkFMR1JJTkRfQ01EID0gJ3ZhbGdyaW5k
IC0tdG9vbD1tZW1jaGVjayAtLWxlYWstY2hlY2s9eWVzIC0tdW5kZWYtdmFsdWUtZXJyb3JzPXll
cyAnCi0KLWRlZiBnZXRTdGF0dXNPdXRwdXQoY21kKToKLSAgICAiIiIKLSAgICBSZXR1cm4gaW50
LCB1bmljb2RlIChmb3IgYm90aCBQeXRob24gMiBhbmQgMykuCi0gICAgTm90ZTogb3MucG9wZW4o
KS5jbG9zZSgpIHdvdWxkIHJldHVybiBOb25lIGZvciAwLgotICAgICIiIgotICAgIHByaW50KGNt
ZCwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHBpcGUgPSBvcy5wb3BlbihjbWQpCi0gICAgcHJvY2Vz
c19vdXRwdXQgPSBwaXBlLnJlYWQoKQotICAgIHRyeToKLSAgICAgICAgIyBXZSBoYXZlIGJlZW4g
dXNpbmcgb3MucG9wZW4oKS4gV2hlbiB3ZSByZWFkKCkgdGhlIHJlc3VsdAotICAgICAgICAjIHdl
IGdldCAnc3RyJyAoYnl0ZXMpIGluIHB5MiwgYW5kICdzdHInICh1bmljb2RlKSBpbiBweTMuCi0g
ICAgICAgICMgVWdoISBUaGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4K
LSAgICAgICAgcHJvY2Vzc19vdXRwdXQgPSBwcm9jZXNzX291dHB1dC5kZWNvZGUoJ3V0Zi04JykK
LSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHBhc3MgICMgcHl0aG9uMwotICAg
IHN0YXR1cyA9IHBpcGUuY2xvc2UoKQotICAgIHJldHVybiBzdGF0dXMsIHByb2Nlc3Nfb3V0cHV0
Ci1kZWYgY29tcGFyZU91dHB1dHMoZXhwZWN0ZWQsIGFjdHVhbCwgbWVzc2FnZSk6Ci0gICAgZXhw
ZWN0ZWQgPSBleHBlY3RlZC5zdHJpcCgpLnJlcGxhY2UoJ1xyJywnJykuc3BsaXQoJ1xuJykKLSAg
ICBhY3R1YWwgPSBhY3R1YWwuc3RyaXAoKS5yZXBsYWNlKCdccicsJycpLnNwbGl0KCdcbicpCi0g
ICAgZGlmZl9saW5lID0gMAotICAgIG1heF9saW5lX3RvX2NvbXBhcmUgPSBtaW4obGVuKGV4cGVj
dGVkKSwgbGVuKGFjdHVhbCkpCi0gICAgZm9yIGluZGV4IGluIHJhbmdlKDAsbWF4X2xpbmVfdG9f
Y29tcGFyZSk6Ci0gICAgICAgIGlmIGV4cGVjdGVkW2luZGV4XS5zdHJpcCgpICE9IGFjdHVhbFtp
bmRleF0uc3RyaXAoKToKLSAgICAgICAgICAgIGRpZmZfbGluZSA9IGluZGV4ICsgMQotICAgICAg
ICAgICAgYnJlYWsKLSAgICBpZiBkaWZmX2xpbmUgPT0gMCBhbmQgbGVuKGV4cGVjdGVkKSAhPSBs
ZW4oYWN0dWFsKToKLSAgICAgICAgZGlmZl9saW5lID0gbWF4X2xpbmVfdG9fY29tcGFyZSsxCi0g
ICAgaWYgZGlmZl9saW5lID09IDA6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgZGVmIHNhZmVH
ZXRMaW5lKGxpbmVzLCBpbmRleCk6Ci0gICAgICAgIGluZGV4ICs9IC0xCi0gICAgICAgIGlmIGlu
ZGV4ID49IGxlbihsaW5lcyk6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJu
IGxpbmVzW2luZGV4XS5zdHJpcCgpCi0gICAgcmV0dXJuICIiIiAgRGlmZmVyZW5jZSBpbiAlcyBh
dCBsaW5lICVkOgotICBFeHBlY3RlZDogJyVzJwotICBBY3R1YWw6ICAgJyVzJwotIiIiICUgKG1l
c3NhZ2UsIGRpZmZfbGluZSwKLSAgICAgICBzYWZlR2V0TGluZShleHBlY3RlZCxkaWZmX2xpbmUp
LAotICAgICAgIHNhZmVHZXRMaW5lKGFjdHVhbCxkaWZmX2xpbmUpKQotCi1kZWYgc2FmZVJlYWRG
aWxlKHBhdGgpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG9wZW4ocGF0aCwgJ3J0JywgZW5j
b2RpbmcgPSAndXRmLTgnKS5yZWFkKCkKLSAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAg
ICByZXR1cm4gJzxGaWxlICIlcyIgaXMgbWlzc2luZzogJXM+JyAlIChwYXRoLGUpCi0KLWRlZiBy
dW5BbGxUZXN0cyhqc29udGVzdF9leGVjdXRhYmxlX3BhdGgsIGlucHV0X2RpciA9IE5vbmUsCi0g
ICAgICAgICAgICAgICAgIHVzZV92YWxncmluZD1GYWxzZSwgd2l0aF9qc29uX2NoZWNrZXI9RmFs
c2UsCi0gICAgICAgICAgICAgICAgIHdyaXRlckNsYXNzPSdTdHlsZWRXcml0ZXInKToKLSAgICBp
ZiBub3QgaW5wdXRfZGlyOgotICAgICAgICBpbnB1dF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0
Y3dkKCksICdkYXRhJykKLSAgICB0ZXN0cyA9IGdsb2Iob3MucGF0aC5qb2luKGlucHV0X2Rpciwg
JyouanNvbicpKQotICAgIGlmIHdpdGhfanNvbl9jaGVja2VyOgotICAgICAgICBhbGxfdGVzdF9q
c29uY2hlY2tlciA9IGdsb2Iob3MucGF0aC5qb2luKGlucHV0X2RpciwgJy4uL2pzb25jaGVja2Vy
JywgJyouanNvbicpKQotICAgICAgICAjIFRoZXNlIHRlc3RzIGZhaWwgd2l0aCBzdHJpY3QganNv
biBzdXBwb3J0LCBidXQgcGFzcyB3aXRoIGpzb25jcHAgZXh0cmEgbGllbmllbmN5Ci0gICAgICAg
ICIiIgotICAgICAgICBGYWlsdXJlIGRldGFpbHM6Ci0gICAgICAgICogVGVzdCAuLi9qc29uY2hl
Y2tlci9mYWlsMjUuanNvbgotICAgICAgICBQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAg
ICAgICAgWyIJdGFiCWNoYXJhY3RlcglpbglzdHJpbmcJIl0KLQotICAgICAgICAqIFRlc3QgLi4v
anNvbmNoZWNrZXIvZmFpbDEzLmpzb24KLSAgICAgICAgUGFyc2luZyBzaG91bGQgaGF2ZSBmYWls
ZWQ6Ci0gICAgICAgIHsiTnVtYmVycyBjYW5ub3QgaGF2ZSBsZWFkaW5nIHplcm9lcyI6IDAxM30K
LQotICAgICAgICAqIFRlc3QgLi4vanNvbmNoZWNrZXIvZmFpbDE4Lmpzb24KLSAgICAgICAgUGFy
c2luZyBzaG91bGQgaGF2ZSBmYWlsZWQ6Ci0gICAgICAgIFtbW1tbW1tbW1tbW1tbW1tbW1tbIlRv
byBkZWVwIl1dXV1dXV1dXV1dXV1dXV1dXV1dCi0KLSAgICAgICAgKiBUZXN0IC4uL2pzb25jaGVj
a2VyL2ZhaWw4Lmpzb24KLSAgICAgICAgUGFyc2luZyBzaG91bGQgaGF2ZSBmYWlsZWQ6Ci0gICAg
ICAgIFsiRXh0cmEgY2xvc2UiXV0KLQotICAgICAgICAqIFRlc3QgLi4vanNvbmNoZWNrZXIvZmFp
bDcuanNvbgotICAgICAgICBQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAgICAgICAgWyJD
b21tYSBhZnRlciB0aGUgY2xvc2UiXSwKLQotICAgICAgICAqIFRlc3QgLi4vanNvbmNoZWNrZXIv
ZmFpbDEwLmpzb24KLSAgICAgICAgUGFyc2luZyBzaG91bGQgaGF2ZSBmYWlsZWQ6Ci0gICAgICAg
IHsiRXh0cmEgdmFsdWUgYWZ0ZXIgY2xvc2UiOiB0cnVlfSAibWlzcGxhY2VkIHF1b3RlZCB2YWx1
ZSIKLQotICAgICAgICAqIFRlc3QgLi4vanNvbmNoZWNrZXIvZmFpbDI3Lmpzb24KLSAgICAgICAg
UGFyc2luZyBzaG91bGQgaGF2ZSBmYWlsZWQ6Ci0gICAgICAgIFsibGluZQotICAgICAgICBicmVh
ayJdCi0gICAgICAgICIiIgotICAgICAgICBrbm93bl9kaWZmZXJlbmNlc193aXRoanNvbmNoZWNr
ZXIgPSBbICJmYWlsMjUuanNvbiIsICJmYWlsMTMuanNvbiIsICJmYWlsMTguanNvbiIsICJmYWls
OC5qc29uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmFpbDcuanNvbiIsICJmYWlsMTAuanNvbiIsICJmYWlsMjcuanNvbiIgXQotICAgICAgICB0ZXN0
X2pzb25jaGVja2VyID0gWyB0ZXN0IGZvciB0ZXN0IGluIGFsbF90ZXN0X2pzb25jaGVja2VyIGlm
IG9zLnBhdGguYmFzZW5hbWUodGVzdCkgbm90IGluIGtub3duX2RpZmZlcmVuY2VzX3dpdGhqc29u
Y2hlY2tlciBdCi0KLSAgICBlbHNlOgotICAgICAgICB0ZXN0X2pzb25jaGVja2VyID0gW10KLSAg
ICBmYWlsZWRfdGVzdHMgPSBbXQotICAgIHZhbGdyaW5kX3BhdGggPSB1c2VfdmFsZ3JpbmQgYW5k
IFZBTEdSSU5EX0NNRCBvciAnJwotICAgIGZvciBpbnB1dF9wYXRoIGluIHRlc3RzICsgdGVzdF9q
c29uY2hlY2tlcjoKLSAgICAgICAgZXhwZWN0X2ZhaWx1cmUgPSBvcy5wYXRoLmJhc2VuYW1lKGlu
cHV0X3BhdGgpLnN0YXJ0c3dpdGgoJ2ZhaWwnKQotICAgICAgICBpc19qc29uX2NoZWNrZXJfdGVz
dCA9IChpbnB1dF9wYXRoIGluIHRlc3RfanNvbmNoZWNrZXIpIG9yIGV4cGVjdF9mYWlsdXJlCi0g
ICAgICAgIHByaW50KCdURVNUSU5HOicsIGlucHV0X3BhdGgsIGVuZD0nICcpCi0gICAgICAgIG9w
dGlvbnMgPSBpc19qc29uX2NoZWNrZXJfdGVzdCBhbmQgJy0tanNvbi1jaGVja2VyJyBvciAnJwot
ICAgICAgICBvcHRpb25zICs9ICcgLS1qc29uLXdyaXRlciAlcycld3JpdGVyQ2xhc3MKLSAgICAg
ICAgY21kID0gJyVzJXMgJXMgIiVzIicgJSAoICAgICAgICAgICAgdmFsZ3JpbmRfcGF0aCwganNv
bnRlc3RfZXhlY3V0YWJsZV9wYXRoLCBvcHRpb25zLAotICAgICAgICAgICAgaW5wdXRfcGF0aCkK
LSAgICAgICAgc3RhdHVzLCBwcm9jZXNzX291dHB1dCA9IGdldFN0YXR1c091dHB1dChjbWQpCi0g
ICAgICAgIGlmIGlzX2pzb25fY2hlY2tlcl90ZXN0OgotICAgICAgICAgICAgaWYgZXhwZWN0X2Zh
aWx1cmU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICAg
ICAgcHJpbnQoJ0ZBSUxFRCcpCi0gICAgICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0cy5hcHBl
bmQoKGlucHV0X3BhdGgsICdQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDpcbiVzJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlUmVhZEZpbGUoaW5wdXRf
cGF0aCkpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50
KCdPSycpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHN0YXR1czoKLSAg
ICAgICAgICAgICAgICAgICAgcHJpbnQoJ0ZBSUxFRCcpCi0gICAgICAgICAgICAgICAgICAgIGZh
aWxlZF90ZXN0cy5hcHBlbmQoKGlucHV0X3BhdGgsICdQYXJzaW5nIGZhaWxlZDpcbicgKyBwcm9j
ZXNzX291dHB1dCkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
cHJpbnQoJ09LJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJhc2VfcGF0aCA9IG9zLnBh
dGguc3BsaXRleHQoaW5wdXRfcGF0aClbMF0KLSAgICAgICAgICAgIGFjdHVhbF9vdXRwdXQgPSBz
YWZlUmVhZEZpbGUoYmFzZV9wYXRoICsgJy5hY3R1YWwnKQotICAgICAgICAgICAgYWN0dWFsX3Jl
d3JpdGVfb3V0cHV0ID0gc2FmZVJlYWRGaWxlKGJhc2VfcGF0aCArICcuYWN0dWFsLXJld3JpdGUn
KQotICAgICAgICAgICAgb3BlbihiYXNlX3BhdGggKyAnLnByb2Nlc3Mtb3V0cHV0JywgJ3d0Jywg
ZW5jb2RpbmcgPSAndXRmLTgnKS53cml0ZShwcm9jZXNzX291dHB1dCkKLSAgICAgICAgICAgIGlm
IHN0YXR1czoKLSAgICAgICAgICAgICAgICBwcmludCgncGFyc2luZyBmYWlsZWQnKQotICAgICAg
ICAgICAgICAgIGZhaWxlZF90ZXN0cy5hcHBlbmQoKGlucHV0X3BhdGgsICdQYXJzaW5nIGZhaWxl
ZDpcbicgKyBwcm9jZXNzX291dHB1dCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX291dHB1dF9wYXRoID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dF9wYXRoKVsw
XSArICcuZXhwZWN0ZWQnCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gb3Blbihl
eHBlY3RlZF9vdXRwdXRfcGF0aCwgJ3J0JywgZW5jb2RpbmcgPSAndXRmLTgnKS5yZWFkKCkKLSAg
ICAgICAgICAgICAgICBkZXRhaWwgPSAoY29tcGFyZU91dHB1dHMoZXhwZWN0ZWRfb3V0cHV0LCBh
Y3R1YWxfb3V0cHV0LCAnaW5wdXQnKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNv
bXBhcmVPdXRwdXRzKGV4cGVjdGVkX291dHB1dCwgYWN0dWFsX3Jld3JpdGVfb3V0cHV0LCAncmV3
cml0ZScpKQotICAgICAgICAgICAgICAgIGlmIGRldGFpbDoKLSAgICAgICAgICAgICAgICAgICAg
cHJpbnQoJ0ZBSUxFRCcpCi0gICAgICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0cy5hcHBlbmQo
KGlucHV0X3BhdGgsIGRldGFpbCkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgcHJpbnQoJ09LJykKLQotICAgIGlmIGZhaWxlZF90ZXN0czoKLSAgICAgICAgcHJp
bnQoKQotICAgICAgICBwcmludCgnRmFpbHVyZSBkZXRhaWxzOicpCi0gICAgICAgIGZvciBmYWls
ZWRfdGVzdCBpbiBmYWlsZWRfdGVzdHM6Ci0gICAgICAgICAgICBwcmludCgnKiBUZXN0JywgZmFp
bGVkX3Rlc3RbMF0pCi0gICAgICAgICAgICBwcmludChmYWlsZWRfdGVzdFsxXSkKLSAgICAgICAg
ICAgIHByaW50KCkKLSAgICAgICAgcHJpbnQoJ1Rlc3QgcmVzdWx0czogJWQgcGFzc2VkLCAlZCBm
YWlsZWQuJyAlIChsZW4odGVzdHMpLWxlbihmYWlsZWRfdGVzdHMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmYWlsZWRfdGVzdHMp
KSkKLSAgICAgICAgcmV0dXJuIDEKLSAgICBlbHNlOgotICAgICAgICBwcmludCgnQWxsICVkIHRl
c3RzIHBhc3NlZC4nICUgbGVuKHRlc3RzKSkKLSAgICAgICAgcmV0dXJuIDAKLQotZGVmIG1haW4o
KToKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJzZXIgPSBP
cHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25zXSA8cGF0aCB0byBqc29udGVzdHJ1bm5l
ci5leGU+IFt0ZXN0IGNhc2UgZGlyZWN0b3J5XSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0t
dmFsZ3JpbmQiLAotICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0i
dmFsZ3JpbmQiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgaGVscD0icnVuIGFs
bCB0aGUgdGVzdHMgdXNpbmcgdmFsZ3JpbmQgdG8gZGV0ZWN0IG1lbW9yeSBsZWFrcyIpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgIi0td2l0aC1qc29uLWNoZWNrZXIiLAotICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0id2l0aF9qc29uX2NoZWNrZXIiLCBk
ZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgaGVscD0icnVuIGFsbCB0aGUgdGVzdHMg
ZnJvbSB0aGUgb2ZmaWNpYWwgSlNPTkNoZWNrZXIgdGVzdCBzdWl0ZSBvZiBqc29uLm9yZyIpCi0g
ICAgcGFyc2VyLmVuYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgb3B0aW9ucywgYXJncyA9
IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGlmIGxlbihhcmdzKSA8IDEgb3IgbGVuKGFyZ3Mp
ID4gMjoKLSAgICAgICAgcGFyc2VyLmVycm9yKCdNdXN0IHByb3ZpZGVzIGF0IGxlYXN0IHBhdGgg
dG8ganNvbnRlc3RydW5uZXIgZXhlY3V0YWJsZS4nKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0g
ICAganNvbnRlc3RfZXhlY3V0YWJsZV9wYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFi
c3BhdGgoYXJnc1swXSkpCi0gICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgaW5wdXRfcGF0
aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5hYnNwYXRoKGFyZ3NbMV0pKQotICAgIGVsc2U6
Ci0gICAgICAgIGlucHV0X3BhdGggPSBOb25lCi0gICAgc3RhdHVzID0gcnVuQWxsVGVzdHMoanNv
bnRlc3RfZXhlY3V0YWJsZV9wYXRoLCBpbnB1dF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHVzZV92YWxncmluZD1vcHRpb25zLnZhbGdyaW5kLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpdGhfanNvbl9jaGVja2VyPW9wdGlvbnMud2l0aF9qc29uX2NoZWNrZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgd3JpdGVyQ2xhc3M9J1N0eWxlZFdyaXRlcicpCi0gICAgaWYgc3Rh
dHVzOgotICAgICAgICBzeXMuZXhpdChzdGF0dXMpCi0gICAgc3RhdHVzID0gcnVuQWxsVGVzdHMo
anNvbnRlc3RfZXhlY3V0YWJsZV9wYXRoLCBpbnB1dF9wYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZV92YWxncmluZD1vcHRpb25zLnZhbGdyaW5kLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpdGhfanNvbl9jaGVja2VyPW9wdGlvbnMud2l0aF9qc29uX2NoZWNrZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyQ2xhc3M9J1N0eWxlZFN0cmVhbVdyaXRlcicpCi0g
ICAgaWYgc3RhdHVzOgotICAgICAgICBzeXMuZXhpdChzdGF0dXMpCi0gICAgc3RhdHVzID0gcnVu
QWxsVGVzdHMoanNvbnRlc3RfZXhlY3V0YWJsZV9wYXRoLCBpbnB1dF9wYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZV92YWxncmluZD1vcHRpb25zLnZhbGdyaW5kLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpdGhfanNvbl9jaGVja2VyPW9wdGlvbnMud2l0aF9qc29uX2NoZWNr
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyQ2xhc3M9J0J1aWx0U3R5bGVkU3Ry
ZWFtV3JpdGVyJykKLSAgICBpZiBzdGF0dXM6Ci0gICAgICAgIHN5cy5leGl0KHN0YXR1cykKLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9ydW51bml0dGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvcnVudW5pdHRlc3RzLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjM0ZTcyNDE5Njc4Y2E0M2ZjOGIwODc2ZDBhOWM3OTc3
N2E3ZTUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9ydW51bml0dGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5IEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9y
cwotIyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBk
ZXNpcmVkIGFuZAotIyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotIyBTZWUgZmls
ZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3Jn
ZS5uZXQvTElDRU5TRQotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKLWZyb20gaW8gaW1wb3J0IG9w
ZW4KLWZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQg
b3MucGF0aAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBvcHRwYXJzZQotCi1WQUxHUklORF9D
TUQgPSAndmFsZ3JpbmQgLS10b29sPW1lbWNoZWNrIC0tbGVhay1jaGVjaz15ZXMgLS11bmRlZi12
YWx1ZS1lcnJvcnM9eWVzJwotCi1jbGFzcyBUZXN0UHJveHkob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGVzdF9leGVfcGF0aCwgdXNlX3ZhbGdyaW5kPUZhbHNlKToKLSAgICAgICAg
c2VsZi50ZXN0X2V4ZV9wYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgodGVz
dF9leGVfcGF0aCkpCi0gICAgICAgIHNlbGYudXNlX3ZhbGdyaW5kID0gdXNlX3ZhbGdyaW5kCi0K
LSAgICBkZWYgcnVuKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICBpZiBzZWxmLnVzZV92YWxncmlu
ZDoKLSAgICAgICAgICAgIGNtZCA9IFZBTEdSSU5EX0NNRC5zcGxpdCgpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBjbWQgPSBbXQotICAgICAgICBjbWQuZXh0ZW5kKFtzZWxmLnRlc3RfZXhl
X3BhdGgsICctLXRlc3QtYXV0byddICsgb3B0aW9ucykKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF
LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAg
IHByaW50KGNtZCkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHN0ZG91dCA9IHByb2Nlc3Mu
Y29tbXVuaWNhdGUoKVswXQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGU6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UsIHN0ZG91dAotICAgICAgICByZXR1cm4gVHJ1ZSwgc3Rkb3V0Ci0K
LWRlZiBydW5BbGxUZXN0cyhleGVfcGF0aCwgdXNlX3ZhbGdyaW5kPUZhbHNlKToKLSAgICB0ZXN0
X3Byb3h5ID0gVGVzdFByb3h5KGV4ZV9wYXRoLCB1c2VfdmFsZ3JpbmQ9dXNlX3ZhbGdyaW5kKQot
ICAgIHN0YXR1cywgdGVzdF9uYW1lcyA9IHRlc3RfcHJveHkucnVuKFsnLS1saXN0LXRlc3RzJ10p
Ci0gICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBvYnRhaW4gdW5p
dCB0ZXN0cyBsaXN0OlxuIiArIHRlc3RfbmFtZXMsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAg
cmV0dXJuIDEKLSAgICB0ZXN0X25hbWVzID0gW25hbWUuc3RyaXAoKSBmb3IgbmFtZSBpbiB0ZXN0
X25hbWVzLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpLnNwbGl0KCdcbicpXQotICAgIGZhaWx1cmVz
ID0gW10KLSAgICBmb3IgbmFtZSBpbiB0ZXN0X25hbWVzOgotICAgICAgICBwcmludCgnVEVTVElO
RyAlczonICUgbmFtZSwgZW5kPScgJykKLSAgICAgICAgc3VjY2VlZCwgcmVzdWx0ID0gdGVzdF9w
cm94eS5ydW4oWyctLXRlc3QnLCBuYW1lXSkKLSAgICAgICAgaWYgc3VjY2VlZDoKLSAgICAgICAg
ICAgIHByaW50KCdPSycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQoKG5hbWUsIHJlc3VsdCkpCi0gICAgICAgICAgICBwcmludCgnRkFJTEVEJykKLSAgICBmYWls
ZWRfY291bnQgPSBsZW4oZmFpbHVyZXMpCi0gICAgcGFzc19jb3VudCA9IGxlbih0ZXN0X25hbWVz
KSAtIGZhaWxlZF9jb3VudAotICAgIGlmIGZhaWxlZF9jb3VudDoKLSAgICAgICAgcHJpbnQoKQot
ICAgICAgICBmb3IgbmFtZSwgcmVzdWx0IGluIGZhaWx1cmVzOgotICAgICAgICAgICAgcHJpbnQo
cmVzdWx0KQotICAgICAgICBwcmludCgnJWQvJWQgdGVzdHMgcGFzc2VkICglZCBmYWlsdXJlKHMp
KScgJSAoICAgICAgICAgICAgcGFzc19jb3VudCwgbGVuKHRlc3RfbmFtZXMpLCBmYWlsZWRfY291
bnQpKQotICAgICAgICByZXR1cm4gMQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCdBbGwgJWQg
dGVzdHMgcGFzc2VkJyAlIGxlbih0ZXN0X25hbWVzKSkKLSAgICAgICAgcmV0dXJuIDAKLQotZGVm
IG1haW4oKToKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJz
ZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25zXSA8cGF0aCB0byB0ZXN0X2xp
Yl9qc29uLmV4ZT4iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXZhbGdyaW5kIiwKLSAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InZhbGdyaW5kIiwgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGhlIHRlc3RzIHVzaW5n
IHZhbGdyaW5kIHRvIGRldGVjdCBtZW1vcnkgbGVha3MiKQotICAgIHBhcnNlci5lbmFibGVfaW50
ZXJzcGVyc2VkX2FyZ3MoKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygp
Ci0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgcGFyc2VyLmVycm9yKCdNdXN0IHBy
b3ZpZGVzIGF0IGxlYXN0IHBhdGggdG8gdGVzdF9saWJfanNvbiBleGVjdXRhYmxlLicpCi0gICAg
ICAgIHN5cy5leGl0KDEpCi0KLSAgICBleGl0X2NvZGUgPSBydW5BbGxUZXN0cyhhcmdzWzBdLCB1
c2VfdmFsZ3JpbmQ9b3B0aW9ucy52YWxncmluZCkKLSAgICBzeXMuZXhpdChleGl0X2NvZGUpCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3ZlcnNpb24uaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3ZlcnNpb24uaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJmYzAzZjdkZDcyOTY2ZDI3ZDk2MTcyMDI5NzhiODkyNGI1OTFjMGEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS92ZXJzaW9uLmluCisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQEpTT05DUFBfVkVSU0lPTkAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdmVyc2lvbi50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3ZlcnNpb24udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZmEzNjNlNzZlZDcxNzM4YjkyNTFjNjg4YjVmODEzYzM1MWI5OWE4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdmVyc2lvbi50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0xLjguNAo=
</data>
<flag name="commit-queue"
          id="482574"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454813</attachid>
            <date>2022-03-16 03:13:07 -0700</date>
            <delta_ts>2022-03-17 00:33:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-fix-237945.patch</filename>
            <type>text/plain</type>
            <size>7591772</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">RnJvbSBiMDk2MTk2YmRlODU3NzM3ZjgzMzAzMmEzZmYzMmVkMmU5OGUwOGUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBZb3Vlbm4gRmFibGV0IDx5b3Vlbm5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDE2IE1hciAyMDIyIDExOjA3OjMzICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZml4LTIz
Nzk0NQoKLS0tCiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VMaXN0cy50eHQgICAg
fCAgICA3IC0KIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cgICAgICAgICB8
ICAgMTcgKwogLi4uL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy54Y2NvbmZpZyAgICAgICAgIHwg
ICAgMiArLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvQlVJTEQuZ24gICAgICAgIHwg
ICA3MyAtCiAuLi4vU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9MSUNFTlNFICAgICAgICAgfCAg
IDI4IC0KIC4uLi9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL09XTkVSUyAgICAgICAgICB8ICAg
IDYgLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvUkVBRE1FLndlYnJ0YyAgIHwgICAy
OCAtCiAuLi4vZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaCAgfCAgNTcz
IC0tCiAuLi4vcG9zaXgvaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmggfCAgMTIx
IC0KIC4uLi9nZW4vcG9zaXgvaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaCB8ICAxNDEg
LQogLi4uL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfZ2ZsYWdzLmggIHwgIDEwMSAt
CiAuLi4vZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmggfCAgMTEyIC0K
IC4uLi9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaCAgICB8ICA1NzMgLS0K
IC4uLi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmggICB8ICAxMjEgLQog
Li4uL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaCAgIHwgIDE0MSAtCiAu
Li4vZ2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfZ2ZsYWdzLmggICAgfCAgMTAxIC0KIC4u
Li9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmggICB8ICAxMTIgLQogLi4u
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2ZsYWdzLmd5cCAgICAgIHwgICA5NSAtCiAuLi4v
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy8uZ2l0YXR0cmlidXRlcyAgICAgfCAgICAzIC0KIC4uLi9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy8uZ2l0bW9kdWxlcyB8ICAgIDQgLQogLi4uL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0FVVEhPUlMudHh0IHwgICAgMiAtCiAuLi4vdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9DTWFrZUxpc3RzLnR4dCAgICAgfCAgNTEwIC0tCiAuLi4vU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvQ09QWUlORy50eHQgfCAgIDI4IC0KIC4uLi90aGly
ZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NoYW5nZUxvZy50eHQgICAgICB8ICAyMTggLQogLi4uL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0lOU1RBTEwubWQgIHwgICA2NyAtCiAuLi4vU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvUkVBRE1FLm1kICAgfCAgMjcwIC0KIC4uLi9nZmxhZ3Mv
c3JjL2NtYWtlL1JFQURNRV9ydW50aW1lLnR4dCAgICAgICB8ICAgIDQgLQogLi4uL2dmbGFncy9z
cmMvY21ha2UvY29uZmlnLmNtYWtlLmluICAgICAgICAgIHwgIDExMSAtCiAuLi4vZ2ZsYWdzL3Ny
Yy9jbWFrZS9leGVjdXRlX3Rlc3QuY21ha2UgICAgICAgfCAgIDUzIC0KIC4uLi9nZmxhZ3Mvc3Jj
L2NtYWtlL3BhY2thZ2UuY21ha2UuaW4gICAgICAgICB8ICAgNDkgLQogLi4uL3RoaXJkX3BhcnR5
L2dmbGFncy9zcmMvY21ha2UvdXRpbHMuY21ha2UgIHwgICA5NiAtCiAuLi4vZ2ZsYWdzL3NyYy9j
bWFrZS92ZXJzaW9uLmNtYWtlLmluICAgICAgICAgfCAgIDIxIC0KIC4uLi90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3NyYy9jb25maWcuaC5pbiAgICB8ICAxMTIgLQogLi4uL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvc3JjL2dmbGFncy5jYyAgICAgIHwgMTk2MCAtLS0tLQogLi4uL3RoaXJkX3BhcnR5
L2dmbGFncy9zcmMvc3JjL2dmbGFncy5oLmluICAgIHwgIDU3MiAtLQogLi4uL2dmbGFncy9zcmMv
c3JjL2dmbGFnc19jb21wbGV0aW9ucy5jYyAgICAgIHwgIDc3MSAtLQogLi4uL2dmbGFncy9zcmMv
c3JjL2dmbGFnc19jb21wbGV0aW9ucy5oLmluICAgIHwgIDEyMSAtCiAuLi4vZ2ZsYWdzL3NyYy9z
cmMvZ2ZsYWdzX2NvbXBsZXRpb25zLnNoICAgICAgfCAgMTE3IC0KIC4uLi9nZmxhZ3Mvc3JjL3Ny
Yy9nZmxhZ3NfZGVjbGFyZS5oLmluICAgICAgICB8ICAxNDEgLQogLi4uL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvc3JjL2dmbGFnc19ucy5oLmluIHwgIDEwMSAtCiAuLi4vZ2ZsYWdzL3NyYy9zcmMv
Z2ZsYWdzX3JlcG9ydGluZy5jYyAgICAgICAgfCAgNDQxIC0KIC4uLi9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy9zcmMvbXV0ZXguaCB8ICAzNDggLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL3NyYy91dGlsLmggIHwgIDM3NCAtCiAuLi4vZ2ZsYWdzL3NyYy9zcmMvd2lu
ZG93c19wb3J0LmNjICAgICAgICAgICAgfCAgIDczIC0KIC4uLi90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3NyYy93aW5kb3dzX3BvcnQuaCB8ICAxMjkgLQogLi4uL2dmbGFncy9zcmMvdGVzdC9DTWFr
ZUxpc3RzLnR4dCAgICAgICAgICAgIHwgIDIwNSAtCiAuLi4vZ2ZsYWdzL3NyYy90ZXN0L2NvbmZp
Zy9DTWFrZUxpc3RzLnR4dCAgICAgfCAgIDEwIC0KIC4uLi9nZmxhZ3Mvc3JjL3Rlc3QvY29uZmln
L21haW4uY2MgICAgICAgICAgICB8ICAgMTIgLQogLi4uL2dmbGFncy9zcmMvdGVzdC9jb25maWdf
Zm9yX3VuaXR0ZXN0cy5oICAgIHwgICA3OSAtCiAuLi4vdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90
ZXN0L2ZsYWdmaWxlLjEgICAgfCAgICAxIC0KIC4uLi90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rl
c3QvZmxhZ2ZpbGUuMiAgICB8ICAgIDIgLQogLi4uL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9mbGFnZmlsZS4zICAgIHwgICAgMSAtCiAuLi4vZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19idWls
ZC5weS5pbiAgICAgICAgfCAgIDQzIC0KIC4uLi9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2RlY2xh
cmVfZmxhZ3MuY2MgICB8ICAgMTAgLQogLi4uL2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVjbGFy
ZV90ZXN0LmNjICAgIHwgICAxMiAtCiAuLi4vc3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rl
c3QuY2MgICAgICAgfCAgIDYxIC0KIC4uLi9zcmMvdGVzdC9nZmxhZ3Nfc3RyaXBfZmxhZ3NfdGVz
dC5jbWFrZSAgICB8ICAgIDcgLQogLi4uL2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfdW5pdHRlc3Qu
Y2MgICAgICAgIHwgMTUzNiAtLS0tCiAuLi4vZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc191bml0dGVz
dF9mbGFnZmlsZSAgfCAgICAyIC0KIC4uLi9nZmxhZ3Mvc3JjL3Rlc3QvbmMvQ01ha2VMaXN0cy50
eHQgICAgICAgICB8ICAgMTYgLQogLi4uL2dmbGFncy9zcmMvdGVzdC9uYy9nZmxhZ3NfbmMuY2Mg
ICAgICAgICAgIHwgICA3MyAtCiAuLi4vU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvLmdp
dGlnbm9yZSAgfCAgICAzIC0KIC4uLi9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8udHJh
dmlzLnltbCB8ICAgNDYgLQogLi4uL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50
eHQgICAgIHwgICAxNiAtCiAuLi4vU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvUkVBRE1F
Lm1kICAgfCAgMTQyIC0KIC4uLi90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2FwcHZleW9yLnltbCAg
ICAgICB8ICAgNzEgLQogLi4uL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DSEFO
R0VTIHwgIDEyNiAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NNYWtlTGlzdHMudHh0ICAg
ICAgfCAgMjAyIC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ09OVFJJQlVUT1JTICAgICAg
ICB8ICAgNDAgLQogLi4uL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9MSUNFTlNF
IHwgICAyOCAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL01ha2VmaWxlLmFtICAgICAgICAg
fCAgMjI0IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kICAgICAgICAgICB8
ICAzNDMgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9jb25maWd1cmUuYWMgICAgICAgIHwg
IDE0NiAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZCAgfCAg
NTYyIC0tCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQgICAgfCAz
Njc1IC0tLS0tLS0tCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRGVzaWduRG9jLm1k
ICAgfCAgMjgwIC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5tZCAg
ICB8ICAxMzIgLQogLi4uL2dvb2dsZW1vY2svZG9jcy9Eb2N1bWVudGF0aW9uLm1kICAgICAgICAg
IHwgICAxMiAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRm9yRHVtbWllcy5tZCAg
fCAgNDM5IC0KIC4uLi9kb2NzL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZCAgICAgICAgICB8
ICA2MjggLS0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Lbm93bklzc3Vlcy5tZCB8
ICAgMTkgLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV81L0NoZWF0U2hlZXQubWQgICAgICAgIHwg
IDUyNSAtLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV81L0Nvb2tCb29rLm1kICAgICAgICAgIHwg
MzI1MCAtLS0tLS0tCiAuLi4vZ29vZ2xlbW9jay9kb2NzL3YxXzUvRG9jdW1lbnRhdGlvbi5tZCAg
ICAgfCAgIDExIC0KIC4uLi9nb29nbGVtb2NrL2RvY3MvdjFfNS9Gb3JEdW1taWVzLm1kICAgICAg
ICB8ICA0MzkgLQogLi4uL2RvY3MvdjFfNS9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQgICAg
IHwgIDYyNCAtLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV82L0NoZWF0U2hlZXQubWQgICAgICAg
IHwgIDUzNCAtLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV82L0Nvb2tCb29rLm1kICAgICAgICAg
IHwgMzM0MiAtLS0tLS0tCiAuLi4vZ29vZ2xlbW9jay9kb2NzL3YxXzYvRG9jdW1lbnRhdGlvbi5t
ZCAgICAgfCAgIDEyIC0KIC4uLi9nb29nbGVtb2NrL2RvY3MvdjFfNi9Gb3JEdW1taWVzLm1kICAg
ICAgICB8ICA0MzkgLQogLi4uL2RvY3MvdjFfNi9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQg
ICAgIHwgIDYyOCAtLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV83L0NoZWF0U2hlZXQubWQgICAg
ICAgIHwgIDU1NiAtLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV83L0Nvb2tCb29rLm1kICAgICAg
ICAgIHwgMzQzMiAtLS0tLS0tLQogLi4uL2dvb2dsZW1vY2svZG9jcy92MV83L0RvY3VtZW50YXRp
b24ubWQgICAgIHwgICAxMiAtCiAuLi4vZ29vZ2xlbW9jay9kb2NzL3YxXzcvRm9yRHVtbWllcy5t
ZCAgICAgICAgfCAgNDM5IC0KIC4uLi9kb2NzL3YxXzcvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25z
Lm1kICAgICB8ICA2MjggLS0KIC4uLi9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stYWN0
aW9ucy5oICB8IDEyMDUgLS0tCiAuLi4vaW5jbHVkZS9nbW9jay9nbW9jay1jYXJkaW5hbGl0aWVz
LmggICAgICAgfCAgMTQ3IC0KIC4uLi9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rp
b25zLmggICB8IDIzNzcgLS0tLS0KIC4uLi9nbW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5o
LnB1bXAgICAgICB8ICA3OTQgLS0KIC4uLi9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24t
bW9ja2Vycy5oICB8IDEwOTUgLS0tCiAuLi4vZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tl
cnMuaC5wdW1wICAgfCAgMjkxIC0KIC4uLi9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1t
YXRjaGVycy5oICB8IDIxNzkgLS0tLS0KIC4uLi9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hl
cnMuaC5wdW1wICAgICB8ICA2NzIgLS0KIC4uLi9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1z
dHJpY3QuaCAgICAgICB8ICAzOTcgLQogLi4uL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0
cmljdC5oLnB1bXAgIHwgIDE2MSAtCiAuLi4vZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2Nr
LW1hdGNoZXJzLmggfCA0Mzk3IC0tLS0tLS0tLS0KIC4uLi9pbmNsdWRlL2dtb2NrL2dtb2NrLW1v
cmUtYWN0aW9ucy5oICAgICAgICB8ICAyNDYgLQogLi4uL2luY2x1ZGUvZ21vY2svZ21vY2stbW9y
ZS1tYXRjaGVycy5oICAgICAgIHwgICA1OCAtCiAuLi4vaW5jbHVkZS9nbW9jay9nbW9jay1zcGVj
LWJ1aWxkZXJzLmggICAgICAgfCAxODUwIC0tLS0KIC4uLi9nb29nbGVtb2NrL2luY2x1ZGUvZ21v
Y2svZ21vY2suaCAgICAgICAgICB8ICAgOTQgLQogLi4uL2ludGVybmFsL2N1c3RvbS9nbW9jay1n
ZW5lcmF0ZWQtYWN0aW9ucy5oIHwgICAgOCAtCiAuLi4vY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1h
Y3Rpb25zLmgucHVtcCAgICAgfCAgIDEwIC0KIC4uLi9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21v
Y2stbWF0Y2hlcnMuaCAgICB8ICAgMzkgLQogLi4uL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9j
ay1wb3J0LmggICAgICAgIHwgICA0NiAtCiAuLi4vaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWlu
dGVybmFsLXV0aWxzLmggfCAgMjc5IC0KIC4uLi9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRp
bHMuaC5wdW1wICAgICB8ICAxMzYgLQogLi4uL2dtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFs
LXV0aWxzLmggICAgIHwgIDUxMCAtLQogLi4uL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2st
cG9ydC5oICAgICAgIHwgICA5MSAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL21ha2UvTWFr
ZWZpbGUgICAgICAgfCAgMTAxIC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1
L2dtb2NrLnNsbiB8ICAgMzIgLQogLi4uL2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJv
aiAgICAgICAgIHwgIDE5MSAtCiAuLi4vZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfY29uZmln
LnZzcHJvcHMgfCAgIDE1IC0KIC4uLi9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19tYWluLnZj
cHJvaiAgICB8ICAxODcgLQogLi4uL2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX3Rlc3QudmNw
cm9qICAgIHwgIDIwMSAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9j
ay5zbG4gfCAgIDMyIC0KIC4uLi9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9jay52Y3hwcm9qICAg
ICAgICB8ICAgODIgLQogLi4uL2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9w
cyAgIHwgICAxOSAtCiAuLi4vZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfbWFpbi52Y3hwcm9q
ICAgfCAgIDg4IC0KIC4uLi9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9ja190ZXN0LnZjeHByb2og
ICB8ICAxMDEgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2suc2xu
IHwgICAzMiAtCiAuLi4vZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2sudmN4cHJvaiAgICAgICAg
fCAgIDg0IC0KIC4uLi9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9ja19jb25maWcucHJvcHMgICB8
ICAgMTkgLQogLi4uL2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX21haW4udmN4cHJvaiAgIHwg
ICA5MCAtCiAuLi4vZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfdGVzdC52Y3hwcm9qICAgfCAg
MTAzIC0KIC4uLi9nb29nbGVtb2NrL3NjcmlwdHMvZnVzZV9nbW9ja19maWxlcy5weSAgICB8ICAy
NDAgLQogLi4uL2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvTElDRU5TRSAgICAgIHwgIDIw
MyAtCiAuLi4vZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUgICAgICAgfCAgIDM1
IC0KIC4uLi9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUuY3BwY2xlYW4gICAgICAgICB8ICAxMTUg
LQogLi4uL2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2FzdC5weSAgIHwgMTczMyAt
LS0tCiAuLi4vc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNzLnB5ICAgICAgfCAgMjI3
IC0KIC4uLi9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3NfdGVzdC5weSB8ICA0NDgg
LQogLi4uL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weSAgICAgICAgIHwgICA1OSAt
CiAuLi4vc2NyaXB0cy9nZW5lcmF0b3IvY3BwL3Rva2VuaXplLnB5ICAgICAgICAgfCAgMjg3IC0K
IC4uLi9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC91dGlscy5weSB8ICAgNDEgLQog
Li4uL2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvZ21vY2tfZ2VuLnB5IHwgICAzMSAtCiAu
Li4vZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrLWNvbmZpZy5pbiAgICAgICAgfCAgMzAzIC0KIC4u
Li9nb29nbGVtb2NrL3NjcmlwdHMvZ21vY2tfZG9jdG9yLnB5ICAgICAgICB8ICA2NDAgLS0KIC4u
Li9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWQucHkgICB8IDEzODcgLS0tCiAu
Li4vZ29vZ2xlbW9jay9zY3JpcHRzL3VwbG9hZF9nbW9jay5weSAgICAgICAgfCAgIDc4IC0KIC4u
Li9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLWFsbC5jYyAgICB8ICAgNDcgLQogLi4u
L2dvb2dsZW1vY2svc3JjL2dtb2NrLWNhcmRpbmFsaXRpZXMuY2MgICAgIHwgIDE1NiAtCiAuLi4v
Z29vZ2xlbW9jay9zcmMvZ21vY2staW50ZXJuYWwtdXRpbHMuY2MgICAgfCAgMTczIC0KIC4uLi9n
b29nbGVtb2NrL3NyYy9nbW9jay1tYXRjaGVycy5jYyAgICAgICAgICB8ICA0OTcgLS0KIC4uLi9n
b29nbGVtb2NrL3NyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjICAgICB8ICA4MjIgLS0KIC4uLi9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLmNjICAgICAgICB8ICAxODMgLQogLi4uL2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2tfbWFpbi5jYyAgIHwgICA1NCAtCiAuLi4vZ29v
Z2xlbW9jay90ZXN0L2dtb2NrLWFjdGlvbnNfdGVzdC5jYyAgICAgfCAxNDExIC0tLQogLi4uL3Rl
c3QvZ21vY2stY2FyZGluYWxpdGllc190ZXN0LmNjICAgICAgICAgIHwgIDQyOCAtCiAuLi4vdGVz
dC9nbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjICAgICAgfCAxMjI4IC0tLQogLi4uL2dt
b2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MgIHwgIDYyNCAtLQogLi4uL2dt
b2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjICAgIHwgIDEyNyAtCiAuLi4vdGVz
dC9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnNfdGVzdC5jYyAgICAgfCAxMjg2IC0tLQogLi4uL3Rl
c3QvZ21vY2staW50ZXJuYWwtdXRpbHNfdGVzdC5jYyAgICAgICAgIHwgIDY5OCAtLQogLi4uL2dv
b2dsZW1vY2svdGVzdC9nbW9jay1tYXRjaGVyc190ZXN0LmNjICAgIHwgNTY1OCAtLS0tLS0tLS0t
LS0KIC4uLi90ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0LmNjICAgICAgICAgICB8ICA3MTEg
LS0KIC4uLi9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbmljZS1zdHJpY3RfdGVzdC5jYyB8ICA0MjMg
LQogLi4uL2dvb2dsZW1vY2svdGVzdC9nbW9jay1wb3J0X3Rlc3QuY2MgICAgICAgIHwgICA0MyAt
CiAuLi4vdGVzdC9nbW9jay1zcGVjLWJ1aWxkZXJzX3Rlc3QuY2MgICAgICAgICAgfCAyNjQzIC0t
LS0tLQogLi4uL2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVzdC5jYyAgICAgICAgIHwgICA1
MSAtCiAuLi4vZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2V4X3Rlc3QuY2MgICAgICAgICAgfCAgIDgx
IC0KIC4uLi9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGVha190ZXN0LnB5ICAgICAgICB8ICAxMDgg
LQogLi4uL2dvb2dsZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rlc3RfLmNjICAgICAgIHwgIDEwMCAt
CiAuLi4vZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MgICAgICAgfCAgIDQwIC0K
IC4uLi9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGlua190ZXN0LmNjICAgICAgICB8ICAgNDAgLQog
Li4uL2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rX3Rlc3QuaCAgICAgICAgIHwgIDY2OSAtLQog
Li4uL2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdC5weSAgICAgIHwgIDE4MCAtCiAu
Li4vZ29vZ2xlbW9jay90ZXN0L2dtb2NrX291dHB1dF90ZXN0Xy5jYyAgICAgfCAgMjkxIC0KIC4u
Li90ZXN0L2dtb2NrX291dHB1dF90ZXN0X2dvbGRlbi50eHQgICAgICAgICB8ICAzMTAgLQogLi4u
L2dvb2dsZW1vY2svdGVzdC9nbW9ja19zdHJlc3NfdGVzdC5jYyAgICAgIHwgIDMyMiAtCiAuLi4v
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdC5jYyAgfCAgMjIwIC0KIC4uLi9n
b29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdF91dGlscy5weSAgICAgICB8ICAxMTIgLQogLi4uL2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC8uZ2l0aWdub3JlICAgICAgICAgIHwgICAgMiAtCiAuLi4vdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0NIQU5HRVMgfCAgMTU3IC0KIC4uLi9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQgICAgICB8ICAyODYgLQogLi4uL2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9DT05UUklCVVRPUlMgICAgICAgIHwgICAzNyAtCiAuLi4vdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L0xJQ0VOU0UgfCAgIDI4IC0KIC4uLi9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvTWFrZWZpbGUuYW0gICAgICAgICB8ICAzMTAgLQogLi4uL2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9SRUFETUUubWQgICAgICAgICAgIHwgIDM4MyAtCiAuLi4vZ29vZ2xldGVz
dC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZSAgICAgfCAgMjU2IC0KIC4uLi9nb29nbGV0ZXN0
L2NvZGVnZWFyL2d0ZXN0LmNicHJvaiAgICAgICAgICB8ICAxMzggLQogLi4uL2dvb2dsZXRlc3Qv
Y29kZWdlYXIvZ3Rlc3QuZ3JvdXBwcm9qICAgICAgIHwgICA1NCAtCiAuLi4vZ29vZ2xldGVzdC9j
b2RlZ2Vhci9ndGVzdF9hbGwuY2MgICAgICAgICAgfCAgIDM4IC0KIC4uLi9nb29nbGV0ZXN0L2Nv
ZGVnZWFyL2d0ZXN0X2xpbmsuY2MgICAgICAgICB8ICAgNDAgLQogLi4uL2dvb2dsZXRlc3QvY29k
ZWdlYXIvZ3Rlc3RfbWFpbi5jYnByb2ogICAgIHwgICA4MiAtCiAuLi4vZ29vZ2xldGVzdC9jb2Rl
Z2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2ogfCAgIDg4IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvY29uZmlndXJlLmFjICAgICAgICB8ICAgNjggLQogLi4uL2dvb2dsZXRlc3QvZG9jcy9B
ZHZhbmNlZEd1aWRlLm1kICAgICAgICAgIHwgMjE4MiAtLS0tLQogLi4uL2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL0Rldkd1aWRlLm1kICAgIHwgIDEyNiAtCiAuLi4vZ29vZ2xldGVzdC9kb2Nz
L0RvY3VtZW50YXRpb24ubWQgICAgICAgICAgfCAgIDE0IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9GQVEubWQgICAgICAgICB8IDEwODcgLS0tCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvUHJpbWVyLm1kICAgICAgfCAgNTAyIC0tCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCAgfCAgMTc3IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9TYW1wbGVzLm1kICAgICB8ICAgMTQgLQogLi4uL2dvb2dsZXRlc3QvZG9jcy9W
MV81X0FkdmFuY2VkR3VpZGUubWQgICAgIHwgMjA5NiAtLS0tLQogLi4uL2dvb2dsZXRlc3QvZG9j
cy9WMV81X0RvY3VtZW50YXRpb24ubWQgICAgIHwgICAxMiAtCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvVjFfNV9GQVEubWQgICAgfCAgODg2IC0tCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvVjFfNV9QcmltZXIubWQgfCAgNDk3IC0tCiAuLi4vZ29vZ2xldGVzdC9kb2Nz
L1YxXzVfUHVtcE1hbnVhbC5tZCAgICAgICAgfCAgMTc3IC0KIC4uLi9nb29nbGV0ZXN0L2RvY3Mv
VjFfNV9YY29kZUd1aWRlLm1kICAgICAgICB8ICAgOTMgLQogLi4uL2dvb2dsZXRlc3QvZG9jcy9W
MV82X0FkdmFuY2VkR3VpZGUubWQgICAgIHwgMjE3OCAtLS0tLQogLi4uL2dvb2dsZXRlc3QvZG9j
cy9WMV82X0RvY3VtZW50YXRpb24ubWQgICAgIHwgICAxNCAtCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvVjFfNl9GQVEubWQgICAgfCAxMDM4IC0tLQogLi4uL2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1kIHwgIDUwMSAtLQogLi4uL2dvb2dsZXRlc3QvZG9j
cy9WMV82X1B1bXBNYW51YWwubWQgICAgICAgIHwgIDE3NyAtCiAuLi4vZ29vZ2xldGVzdC9kb2Nz
L1YxXzZfU2FtcGxlcy5tZCAgICAgICAgICAgfCAgIDE0IC0KIC4uLi9nb29nbGV0ZXN0L2RvY3Mv
VjFfNl9YY29kZUd1aWRlLm1kICAgICAgICB8ICAgOTMgLQogLi4uL2dvb2dsZXRlc3QvZG9jcy9W
MV83X0FkdmFuY2VkR3VpZGUubWQgICAgIHwgMjE4MSAtLS0tLQogLi4uL2dvb2dsZXRlc3QvZG9j
cy9WMV83X0RvY3VtZW50YXRpb24ubWQgICAgIHwgICAxNCAtCiAuLi4vZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvVjFfN19GQVEubWQgICAgfCAxMDgyIC0tLQogLi4uL2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzdfUHJpbWVyLm1kIHwgIDUwMSAtLQogLi4uL2dvb2dsZXRlc3QvZG9j
cy9WMV83X1B1bXBNYW51YWwubWQgICAgICAgIHwgIDE3NyAtCiAuLi4vZ29vZ2xldGVzdC9kb2Nz
L1YxXzdfU2FtcGxlcy5tZCAgICAgICAgICAgfCAgIDE0IC0KIC4uLi9nb29nbGV0ZXN0L2RvY3Mv
VjFfN19YY29kZUd1aWRlLm1kICAgICAgICB8ICAgOTMgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1hjb2RlR3VpZGUubWQgIHwgICA5MyAtCiAuLi4vaW5jbHVkZS9ndGVzdC9ndGVz
dC1kZWF0aC10ZXN0LmggICAgICAgICAgfCAgMjk0IC0KIC4uLi9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oICB8ICAyNTAgLQogLi4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
cGFyYW0tdGVzdC5oICAgICAgICAgIHwgMTQ0NCAtLS0KIC4uLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXBhcmFtLXRlc3QuaC5wdW1wICAgICB8ICA1MTAgLS0KIC4uLi9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCB8IDEwMDYgLS0tCiAuLi4vZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXNwaS5oICAgICAgfCAgMjMxIC0KIC4uLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0
LXRlc3QtcGFydC5oICAgICAgICAgICB8ICAxNzkgLQogLi4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdC5oICAgICAgICAgIHwgIDI2NCAtCiAuLi4vZ29vZ2xldGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LmggICAgICAgICAgfCAyMjQwIC0tLS0tCiAuLi4vaW5jbHVkZS9ndGVzdC9ndGVz
dF9wcmVkX2ltcGwuaCAgICAgICAgICAgfCAgMzU4IC0KIC4uLi9nb29nbGV0ZXN0L2luY2x1ZGUv
Z3Rlc3QvZ3Rlc3RfcHJvZC5oICAgICB8ICAgNTggLQogLi4uL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wb3J0LmggICAgICAgIHwgICA3MiAtCiAuLi4vZ3Rlc3QvaW50ZXJuYWwvY3VzdG9t
L2d0ZXN0LXByaW50ZXJzLmggICAgfCAgIDQyIC0KIC4uLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2N1c3RvbS9ndGVzdC5oICAgICB8ICAgNDUgLQogLi4uL2ludGVybmFsL2d0ZXN0LWRlYXRoLXRl
c3QtaW50ZXJuYWwuaCAgICAgIHwgIDMxOSAtCiAuLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1maWxlcGF0aC5oICAgfCAgMjA2IC0KIC4uLi9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWludGVybmFsLmggICB8IDEyMzkgLS0tCiAuLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9n
dGVzdC1saW5rZWRfcHRyLmggfCAgMjQzIC0KIC4uLi9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oICAgICB8IDUxNDYgLS0tLS0tLS0tLS0KIC4uLi9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oLnB1bXAgICAgICAgICB8ICAyODYgLQogLi4uL2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcGFyYW0tdXRpbC5oIHwgIDczMCAtLQogLi4uL2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggIHwgICA5MyAtCiAuLi4vaW5jbHVkZS9ndGVzdC9pbnRl
cm5hbC9ndGVzdC1wb3J0LmggICAgICAgfCAyNTkwIC0tLS0tLQogLi4uL2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmggICAgIHwgIDE2NyAtCiAuLi4vaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10dXBsZS5oICAgICAgfCAxMDIwIC0tLQogLi4uL2luY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wIHwgIDM0NyAtCiAuLi4vaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCAgfCAzMzMxIC0tLS0tLS0KIC4uLi9ndGVzdC9pbnRl
cm5hbC9ndGVzdC10eXBlLXV0aWwuaC5wdW1wICAgICB8ICAyOTcgLQogLi4uL2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9tNC9hY3hfcHRocmVhZC5tNCAgIHwgIDM2MyAtCiAuLi4vZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L200L2d0ZXN0Lm00ICAgICAgICAgfCAgIDc0IC0KIC4uLi9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvbWFrZS9NYWtlZmlsZSAgICAgICB8ICAgODIgLQogLi4uL2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9tc3ZjL2d0ZXN0LW1kLnNsbiAgIHwgICA0NSAtCiAuLi4vZ29vZ2xldGVzdC9tc3Zj
L2d0ZXN0LW1kLnZjcHJvaiAgICAgICAgICAgfCAgMTI2IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvbXN2Yy9ndGVzdC5zbG4gICAgICB8ICAgNDUgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9tc3ZjL2d0ZXN0LnZjcHJvaiAgIHwgIDEyNiAtCiAuLi4vZ29vZ2xldGVzdC9tc3ZjL2d0
ZXN0X21haW4tbWQudmNwcm9qICAgICAgfCAgMTI5IC0KIC4uLi9nb29nbGV0ZXN0L21zdmMvZ3Rl
c3RfbWFpbi52Y3Byb2ogICAgICAgICB8ICAxMjkgLQogLi4uL2dvb2dsZXRlc3QvbXN2Yy9ndGVz
dF9wcm9kX3Rlc3QtbWQudmNwcm9qIHwgIDE2NCAtCiAuLi4vZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0
X3Byb2RfdGVzdC52Y3Byb2ogICAgfCAgMTY0IC0KIC4uLi9nb29nbGV0ZXN0L21zdmMvZ3Rlc3Rf
dW5pdHRlc3QtbWQudmNwcm9qICB8ICAxNDcgLQogLi4uL2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF91
bml0dGVzdC52Y3Byb2ogICAgIHwgIDE0NyAtCiAuLi4vZ29vZ2xldGVzdC9zYW1wbGVzL3ByaW1l
X3RhYmxlcy5oICAgICAgICAgfCAgMTIzIC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGUxLmNjICB8ICAgNjggLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1w
bGVzL3NhbXBsZTEuaCAgIHwgICA0MyAtCiAuLi4vZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTEw
X3VuaXR0ZXN0LmNjICAgfCAgMTQ0IC0KIC4uLi9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMV91
bml0dGVzdC5jYyAgICB8ICAxNTMgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVz
L3NhbXBsZTIuY2MgIHwgICA1NiAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMv
c2FtcGxlMi5oICAgfCAgIDg1IC0KIC4uLi9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0
dGVzdC5jYyAgICB8ICAxMDkgLQogLi4uL2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5o
ICAgICAgICAgIHwgIDE3MiAtCiAuLi4vZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRl
c3QuY2MgICAgfCAgMTUxIC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1w
bGU0LmNjICB8ICAgNDYgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBs
ZTQuaCAgIHwgICA1MyAtCiAuLi4vZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3Qu
Y2MgICAgfCAgIDQ1IC0KIC4uLi9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5j
YyAgICB8ICAxOTkgLQogLi4uL2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNj
ICAgIHwgIDIyNCAtCiAuLi4vZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2Mg
ICAgfCAgMTMwIC0KIC4uLi9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYyAg
ICB8ICAxNzMgLQogLi4uL2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjICAg
IHwgIDE2MCAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvY29tbW9uLnB5ICAg
fCAgIDgzIC0KIC4uLi9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSAgICB8
ICAyNTMgLQogLi4uL2dvb2dsZXRlc3Qvc2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IHwg
IDczMCAtLQogLi4uL2dvb2dsZXRlc3Qvc2NyaXB0cy9ndGVzdC1jb25maWcuaW4gICAgICAgIHwg
IDI3NCAtCiAuLi4vZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvcHVtcC5weSAgICAgfCAg
ODU1IC0tCiAuLi4vZ29vZ2xldGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAgICAgICAgfCAg
MTU4IC0KIC4uLi9nb29nbGV0ZXN0L3NjcmlwdHMvdGVzdC9NYWtlZmlsZSAgICAgICAgICB8ICAg
NTkgLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3VwbG9hZC5weSAgIHwgMTM4
NyAtLS0KIC4uLi9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5ICAgICAgICB8ICAg
NzggLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjICAgIHwgICA0
OCAtCiAuLi4vZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZGVhdGgtdGVzdC5jYyAgICAgICAgfCAxMzQx
IC0tLQogLi4uL2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjICAgICAgICAgIHwgIDM4
NyAtCiAuLi4vZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggICAgICAgfCAxMTgz
IC0tLQogLi4uL2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYyAgIHwgMTI0
MSAtLS0KIC4uLi9nb29nbGV0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYyAgICAgICAgICB8ICAz
NzMgLQogLi4uL2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXRlc3QtcGFydC5jYyAgICAgICAgIHwgIDEx
MCAtCiAuLi4vZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyAgICAgICAgfCAgMTE4
IC0KIC4uLi9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgICAgICB8IDU0MDgg
LS0tLS0tLS0tLS0tCiAuLi4vZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdF9tYWluLmNj
ICAgfCAgIDM4IC0KIC4uLi90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyAgICAgICAg
ICB8ICAgOTMgLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2Mg
IHwgMTQyNyAtLS0KIC4uLi9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyAg
ICB8ICA2NjIgLS0KIC4uLi9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlua2VkX3B0cl90ZXN0LmNj
ICB8ICAxNTQgLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjICAg
IHwgIDMxMSAtCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyAgICAg
fCAgMTU5IC0KIC4uLi9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjICAgICB8
ICAyMTUgLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIHwg
ICA2NSAtCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyAgfCAx
MDU1IC0tLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaCAgIHwg
ICA1NyAtCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyAgICAgICAgfCAx
MzExIC0tLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjICAgIHwg
MTYzNyAtLS0tCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjICAg
fCAgMjA4IC0KIC4uLi9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyAgICAgICB8
ICAzMjAgLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjIHwg
ICA0NSAtCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYyAgfCAg
MzgwIC0KIC4uLi9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggICB8ICAg
NjYgLQogLi4uL3Rlc3QvZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QuY2MgICAgICAgICAgIHwgIDM0
MSAtCiAuLi4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjICAgICAgICAgfCAgIDQ3
IC0KIC4uLi90ZXN0L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgICB8ICAyMTIg
LQogLi4uL3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgIHwgICA4OCAt
CiAuLi4vdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkgICAgICAgfCAgMjM3IC0K
IC4uLi90ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8uY2MgICAgICB8ICAzMTEgLQog
Li4uL2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5ICAgICAgIHwgIDEzMCAtCiAu
Li4vZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NvbG9yX3Rlc3RfLmNjICAgICAgfCAgIDcxIC0KIC4u
Li9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5ICAgICB8ICAxMTcgLQogLi4u
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjICAgIHwgIDEyNiAtCiAuLi4v
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgfCAgMTkyIC0KIC4uLi9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5ICB8ICA2MzYgLS0KIC4uLi9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYyB8ICAxNDAgLQogLi4uL2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkgICAgICAgIHwgIDE3MiAtCiAuLi4vZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgICAgICAgfCAgIDQ2IC0KIC4uLi90ZXN0
L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgICAgICAgICB8ICAyMDcgLQogLi4uL3Rlc3Qv
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8uY2MgICAgICAgIHwgIDE1NyAtCiAuLi4vZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MgICAgfCAgIDQ1IC0KIC4uLi9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdC5jYyB8ICAgNTYgLQogLi4uL2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF9vdXRwdXRfdGVzdC5weSAgICAgIHwgIDM0MCAtCiAuLi4vZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYyAgICAgfCAxMDYyIC0tLQogLi4uL3Rlc3QvZ3Rl
c3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQgICAgIHwgIDc0MyAtLQogLi4uL3Rlc3QvZ3Rl
c3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjICAgICAgICAgIHwgMjQyNyAtLS0tLS0KIC4uLi90ZXN0
L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgICAgICAgICB8ICAxMjcgLQogLi4uL2dvb2ds
ZXRlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MgICAgICAgIHwgICA1NyAtCiAuLi4vZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjICAgICAgfCAgMjUzIC0KIC4uLi9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0LnB5ICAgICB8ICAzMjUgLQogLi4uL2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjICAgIHwgIDEwMyAtCiAuLi4vZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MgfCAgIDU3IC0KIC4uLi9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgICAgICB8ICAyNTYgLQogLi4uL2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF90ZXN0X3V0aWxzLnB5ICAgICAgIHwgIDMyMCAtCiAuLi4vdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgICAgfCAgIDkyIC0KIC4uLi90ZXN0L2d0ZXN0X3Ro
cm93X29uX2ZhaWx1cmVfdGVzdC5weSAgICAgICB8ICAxNzEgLQogLi4uL3Rlc3QvZ3Rlc3RfdGhy
b3dfb25fZmFpbHVyZV90ZXN0Xy5jYyAgICAgIHwgICA3MiAtCiAuLi4vdGVzdC9ndGVzdF91bmlu
aXRpYWxpemVkX3Rlc3QucHkgICAgICAgICAgfCAgIDcwIC0KIC4uLi90ZXN0L2d0ZXN0X3VuaW5p
dGlhbGl6ZWRfdGVzdF8uY2MgICAgICAgICB8ICAgNDMgLQogLi4uL2dvb2dsZXRlc3QvdGVzdC9n
dGVzdF91bml0dGVzdC5jYyAgICAgICAgIHwgNzcwNSAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3Rl
c3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rlc3RfLmNjICAgICAgICAgIHwgICA0OSAtCiAuLi4vdGVz
dC9ndGVzdF94bWxfb3V0ZmlsZTJfdGVzdF8uY2MgICAgICAgICAgfCAgIDQ5IC0KIC4uLi90ZXN0
L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5ICAgICAgICAgICB8ICAxMzIgLQogLi4uL3Rlc3Qv
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdC5weSAgICAgICAgIHwgIDMwOCAtCiAuLi4vdGVzdC9n
dGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyAgICAgICAgfCAgMTgxIC0KIC4uLi9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkgICB8ICAxOTQgLQogLi4uL2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MgIHwgICAzNiAtCiAuLi4vZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvcHJvZHVjdGlvbi5oICAgfCAgIDU1IC0KIC4uLi94Y29kZS9Db25m
aWcvRGVidWdQcm9qZWN0LnhjY29uZmlnICAgICAgICB8ICAgMzAgLQogLi4uL3hjb2RlL0NvbmZp
Zy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcgICAgIHwgICAxNyAtCiAuLi4vZ29vZ2xldGVzdC94
Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZyAgfCAgIDQxIC0KIC4uLi94Y29kZS9Db25maWcv
UmVsZWFzZVByb2plY3QueGNjb25maWcgICAgICB8ICAgMzIgLQogLi4uL3hjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIHwgICAxOCAtCiAuLi4veGNvZGUvQ29uZmlnL1Rl
c3RUYXJnZXQueGNjb25maWcgICAgICAgICAgfCAgICA4IC0KIC4uLi9nb29nbGV0ZXN0L3hjb2Rl
L1Jlc291cmNlcy9JbmZvLnBsaXN0ICAgICB8ICAgMzAgLQogLi4uL3hjb2RlL1NhbXBsZXMvRnJh
bWV3b3JrU2FtcGxlL0luZm8ucGxpc3QgIHwgICAyOCAtCiAuLi4vV2lkZ2V0RnJhbWV3b3JrLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgNDU3IC0KIC4uLi94Y29kZS9TYW1wbGVzL0ZyYW1l
d29ya1NhbXBsZS9ydW50ZXN0cy5zaCB8ICAgNjIgLQogLi4uL3hjb2RlL1NhbXBsZXMvRnJhbWV3
b3JrU2FtcGxlL3dpZGdldC5jYyAgIHwgICA2MyAtCiAuLi4veGNvZGUvU2FtcGxlcy9GcmFtZXdv
cmtTYW1wbGUvd2lkZ2V0LmggICAgfCAgIDU5IC0KIC4uLi9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS93aWRnZXRfdGVzdC5jYyAgICB8ICAgNjggLQogLi4uL2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0
cy9ydW50ZXN0cy5zaCAgICAgIHwgICA2NSAtCiAuLi4veGNvZGUvU2NyaXB0cy92ZXJzaW9uZ2Vu
ZXJhdGUucHkgICAgICAgICAgfCAgMTAwIC0KIC4uLi94Y29kZS9ndGVzdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qICAgICB8IDExODIgLS0tCiAuLi4vU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvdHJhdmlzLnNoICAgfCAgIDE1IC0KIC4uLi9Tb3VyY2UvdGhpcmRfcGFydHkvZ3Rlc3Qt
cGFyYWxsZWwvTElDRU5TRSB8ICAyMDIgLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1w
YXJhbGxlbC9PV05FUlMgIHwgICAgMSAtCiAuLi4vdGhpcmRfcGFydHkvZ3Rlc3QtcGFyYWxsZWwv
UkVBRE1FLndlYnJ0YyAgfCAgICA5IC0KIC4uLi90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9n
dGVzdC1wYXJhbGxlbCB8ICA0MTEgLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL0JV
SUxELmduICAgICAgIHwgICA2NiAtCiAuLi4vU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvTElD
RU5TRSAgICAgICAgfCAgIDU1IC0KIC4uLi9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9PV05F
UlMgICAgICAgICB8ICAgIDMgLQogLi4uL3RoaXJkX3BhcnR5L2pzb25jcHAvUkVBRE1FLmNocm9t
aXVtICAgICAgIHwgICAxNiAtCiAuLi4vanNvbmNwcC9mdXp6ZXJzL2pzb25fZnV6emVyLmNjICAg
ICAgICAgICAgfCAgIDczIC0KIC4uLi90aGlyZF9wYXJ0eS9qc29uY3BwL2dlbmVyYXRlZC92ZXJz
aW9uLmggICB8ICAgMjIgLQogLi4uL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5jbGFuZy1m
b3JtYXQgIHwgICA0NyAtCiAuLi4vdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdpdGF0dHJp
YnV0ZXMgfCAgIDExIC0KIC4uLi8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2J1Z19yZXBvcnQubWQg
ICAgICB8ICAgMjYgLQogLi4uLy5naXRodWIvSVNTVUVfVEVNUExBVEUvZmVhdHVyZV9yZXF1ZXN0
Lm1kIHwgICAyMCAtCiAuLi4vdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdpdGlnbm9yZSAg
ICAgfCAgIDU1IC0KIC4uLi90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzLnltbCAg
ICB8ICAgNjUgLQogLi4uL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvY21ha2VfYnVpbGRlci5zaCAg
IHwgIDEzMCAtCiAuLi4vc291cmNlLy50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVyLnNoICAg
fCAgIDgxIC0KIC4uLi90cmF2aXMuYmVmb3JlX2luc3RhbGwubGludXguc2ggICAgICAgICAgICB8
ICAgIDggLQogLi4uL3RyYXZpcy5iZWZvcmVfaW5zdGFsbC5vc3guc2ggICAgICAgICAgICAgIHwg
ICAgMSAtCiAuLi4vLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLmxpbnV4LnNoICAgfCAg
IDEwIC0KIC4uLi8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmluc3RhbGwub3N4LnNoICAgICB8ICAg
IDEgLQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9BVVRIT1JTIHwgIDEx
MyAtCiAuLi4vdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQ01ha2VMaXN0cy50eHQgfCAgMTg2
IC0KIC4uLi9qc29uY3BwL3NvdXJjZS9DT05UUklCVVRJTkcubWQgICAgICAgICAgICB8ICAxNDUg
LQogLi4uL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9MSUNFTlNFIHwgICA1NSAt
CiAuLi4vdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvUkVBRE1FLm1kICAgICAgfCAgIDQ2IC0K
IC4uLi90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hbWFsZ2FtYXRlLnB5ICB8ICAxNTUgLQog
Li4uL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2FwcHZleW9yLnltbCAgIHwgICAzMiAtCiAu
Li4vdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2Lm1ha2VmaWxlICAgfCAgIDM1IC0KIC4u
Li9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9fX2luaXRfXy5weSAgICAgICB8ICAgIDYgLQogLi4u
L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50X3ZtdzcuanNvbiAgIHwgICAzMyAtCiAuLi4v
anNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvYWdlbnRfdm14cC5qc29uICAgfCAgIDI2IC0KIC4uLi9q
c29uY3BwL3NvdXJjZS9kZXZ0b29scy9hbnRnbG9iLnB5ICAgICAgICB8ICAyMDUgLQogLi4uL2pz
b25jcHAvc291cmNlL2RldnRvb2xzL2JhdGNoYnVpbGQucHkgICAgIHwgIDI3OCAtCiAuLi4vanNv
bmNwcC9zb3VyY2UvZGV2dG9vbHMvZml4ZW9sLnB5ICAgICAgICAgfCAgIDcwIC0KIC4uLi9qc29u
Y3BwL3NvdXJjZS9kZXZ0b29scy9saWNlbnNldXBkYXRlci5weSB8ICAgOTQgLQogLi4uL2pzb25j
cHAvc291cmNlL2RldnRvb2xzL3RhcmJhbGwucHkgICAgICAgIHwgICA1MiAtCiAuLi4vanNvbmNw
cC9zb3VyY2UvZG9jL2RveHlmaWxlLmluICAgICAgICAgICAgfCAyMzAyIC0tLS0tCiAuLi4vanNv
bmNwcC9zb3VyY2UvZG9jL2Zvb3Rlci5odG1sICAgICAgICAgICAgfCAgIDIxIC0KIC4uLi9qc29u
Y3BwL3NvdXJjZS9kb2MvaGVhZGVyLmh0bWwgICAgICAgICAgICB8ICAgNjQgLQogLi4uL2pzb25j
cHAvc291cmNlL2RvYy9qc29uY3BwLmRveCAgICAgICAgICAgIHwgIDE2NCAtCiAuLi4vdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL3JlYWRtZS50eHQgfCAgICAxIC0KIC4uLi9qc29uY3Bw
L3NvdXJjZS9kb2Mvcm9hZG1hcC5kb3ggICAgICAgICAgICB8ICAgIDMgLQogLi4uL2pzb25jcHAv
c291cmNlL2RvYy93ZWJfZG94eWZpbGUuaW4gICAgICAgIHwgMjI5MCAtLS0tLQogLi4uL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2RveHlidWlsZC5weSAgIHwgIDE4OSAtCiAuLi4vanNvbmNw
cC9zb3VyY2UvaW5jbHVkZS9DTWFrZUxpc3RzLnR4dCAgICAgfCAgICA2IC0KIC4uLi9qc29uY3Bw
L3NvdXJjZS9pbmNsdWRlL2pzb24vYWxsb2NhdG9yLmggICB8ICAgODkgLQogLi4uL2pzb25jcHAv
c291cmNlL2luY2x1ZGUvanNvbi9hc3NlcnRpb25zLmggIHwgICA1OSAtCiAuLi4vanNvbmNwcC9z
b3VyY2UvaW5jbHVkZS9qc29uL2F1dG9saW5rLmggICAgfCAgIDI1IC0KIC4uLi9qc29uY3BwL3Nv
dXJjZS9pbmNsdWRlL2pzb24vY29uZmlnLmggICAgICB8ICAxODAgLQogLi4uL2pzb25jcHAvc291
cmNlL2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oICAgIHwgICA2MSAtCiAuLi4vanNvbmNwcC9zb3Vy
Y2UvaW5jbHVkZS9qc29uL2ZvcndhcmRzLmggICAgfCAgIDQzIC0KIC4uLi9qc29uY3BwL3NvdXJj
ZS9pbmNsdWRlL2pzb24vanNvbi5oICAgICAgICB8ICAgMTUgLQogLi4uL2pzb25jcHAvc291cmNl
L2luY2x1ZGUvanNvbi9yZWFkZXIuaCAgICAgIHwgIDQxNyAtCiAuLi4vanNvbmNwcC9zb3VyY2Uv
aW5jbHVkZS9qc29uL3ZhbHVlLmggICAgICAgfCAgOTA3IC0tCiAuLi4vanNvbmNwcC9zb3VyY2Uv
aW5jbHVkZS9qc29uL3dyaXRlci5oICAgICAgfCAgMzY4IC0KIC4uLi90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9tYWtlcmVsZWFzZS5weSB8ICAzOTAgLQogLi4uL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL21lc29uLmJ1aWxkICAgIHwgIDExNiAtCiAuLi4vanNvbmNwcC9zb3VyY2UvcGtn
LWNvbmZpZy9qc29uY3BwLnBjLmluICAgfCAgICA5IC0KIC4uLi9qc29uY3BwL3NvdXJjZS9zcmMv
Q01ha2VMaXN0cy50eHQgICAgICAgICB8ICAgIDUgLQogLi4uL3NvdXJjZS9zcmMvanNvbnRlc3Ry
dW5uZXIvQ01ha2VMaXN0cy50eHQgIHwgICAzNiAtCiAuLi4vc291cmNlL3NyYy9qc29udGVzdHJ1
bm5lci9tYWluLmNwcCAgICAgICAgfCAgMzAwIC0KIC4uLi9zb3VyY2Uvc3JjL2xpYl9qc29uL0NN
YWtlTGlzdHMudHh0ICAgICAgICB8ICAxNDYgLQogLi4uL3NvdXJjZS9zcmMvbGliX2pzb24vanNv
bl9yZWFkZXIuY3BwICAgICAgIHwgMjAxNyAtLS0tLQogLi4uL2pzb25jcHAvc291cmNlL3NyYy9s
aWJfanNvbi9qc29uX3Rvb2wuaCAgIHwgIDEzNCAtCiAuLi4vc291cmNlL3NyYy9saWJfanNvbi9q
c29uX3ZhbHVlLmNwcCAgICAgICAgfCAxNzA3IC0tLS0KIC4uLi9zcmMvbGliX2pzb24vanNvbl92
YWx1ZWl0ZXJhdG9yLmlubCAgICAgICB8ICAxNTkgLQogLi4uL3NvdXJjZS9zcmMvbGliX2pzb24v
anNvbl93cml0ZXIuY3BwICAgICAgIHwgMTI1MyAtLS0KIC4uLi9qc29uY3BwL3NvdXJjZS9zcmMv
bGliX2pzb24vdmVyc2lvbi5oLmluICB8ICAgMjIgLQogLi4uL3NvdXJjZS9zcmMvdGVzdF9saWJf
anNvbi9DTWFrZUxpc3RzLnR4dCAgIHwgICA0MiAtCiAuLi4vanNvbmNwcC9zb3VyY2Uvc3JjL3Rl
c3RfbGliX2pzb24vZnV6ei5jcHAgfCAgIDQ5IC0KIC4uLi9qc29uY3BwL3NvdXJjZS9zcmMvdGVz
dF9saWJfanNvbi9mdXp6LmggICB8ICAgMTQgLQogLi4uL3NvdXJjZS9zcmMvdGVzdF9saWJfanNv
bi9qc29udGVzdC5jcHAgICAgIHwgIDQzNSAtCiAuLi4vc291cmNlL3NyYy90ZXN0X2xpYl9qc29u
L2pzb250ZXN0LmggICAgICAgfCAgMjc2IC0KIC4uLi9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9s
aWJfanNvbi9tYWluLmNwcCB8IDI2NTcgLS0tLS0tCiAuLi4vanNvbmNwcC9zb3VyY2UvdGVzdC9j
bGVhbnRlc3RzLnB5ICAgICAgICAgfCAgIDE2IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL2ZhaWxf
dGVzdF9hcnJheV8wMS5qc29uICB8ICAgIDEgLQogLi4uL3Rlc3QvZGF0YS9mYWlsX3Rlc3Rfc3Rh
Y2tfbGltaXQuanNvbiAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Fy
cmF5XzAxLmV4cGVjdGVkICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJy
YXlfMDEuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJh
eV8wMi5leHBlY3RlZCAgIHwgICAgMiAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5
XzAyLmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlf
MDMuZXhwZWN0ZWQgICB8ICAgIDYgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8w
My5qc29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA0
LmV4cGVjdGVkICAgfCAgICA1IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQu
anNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNS5l
eHBlY3RlZCAgIHwgIDEwMCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA1Lmpz
b24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDYuZXhw
ZWN0ZWQgICB8ICAgIDUgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNi5qc29u
ICAgICAgIHwgICAgNCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA3LmV4cGVj
dGVkICAgfCAyMTIyIC0tLS0tCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA3Lmpz
b24gICAgICAgfCAgICAyIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDEuZXhw
ZWN0ZWQgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMS5qc29u
ICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAyLmV4cGVj
dGVkICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDIuanNvbiAg
ICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMy5leHBlY3Rl
ZCAgIHwgICAgMyAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAzLmpzb24gICAg
ICAgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDQuZXhwZWN0ZWQg
ICB8ICAgIDIgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNC5qc29uICAgICAg
IHwgICAgMiAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA1LmV4cGVjdGVkICAg
fCAgICAyIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDUuanNvbiAgICAgICB8
ICAgIDIgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5leHBlY3RlZCAgIHwg
ICAgMiAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA2Lmpzb24gICAgICAgfCAg
ICAyIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDcuZXhwZWN0ZWQgICB8ICAg
IDIgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNy5qc29uICAgICAgIHwgICAg
MiAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA4LmV4cGVjdGVkICAgfCAgICAz
IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDguanNvbiAgICAgICB8ICAgIDMg
LQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOS5leHBlY3RlZCAgIHwgICAgNCAt
CiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA5Lmpzb24gICAgICAgfCAgICA0IC0K
IC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMC5leHBlY3RlZCB8ICAgIDQgLQog
Li4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAwLmpzb24gICAgIHwgICAgNSAtCiAu
Li4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDEuZXhwZWN0ZWQgfCAgIDEwIC0KIC4u
Li9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMS5qc29uICAgICB8ICAgMTAgLQogLi4u
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAyLmV4cGVjdGVkIHwgICAyMyAtCiAuLi4v
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDIuanNvbiAgICAgfCAgIDI2IC0KIC4uLi9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tcGxleF8wMS5leHBlY3RlZCB8ICAgMjAgLQogLi4uL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9jb21wbGV4XzAxLmpzb24gICAgIHwgICAxNyAtCiAuLi4vc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDEuZXhwZWN0ZWQgfCAgICAyIC0KIC4uLi9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMS5qc29uICAgICB8ICAgIDIgLQogLi4uL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAyLmV4cGVjdGVkIHwgICAgMiAtCiAuLi4vc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDIuanNvbiAgICAgfCAgICAyIC0KIC4uLi9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMy5leHBlY3RlZCB8ICAgIDIgLQogLi4uL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAzLmpzb24gICAgIHwgICAgMiAtCiAuLi4vc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2ludGVnZXJfMDQuZXhwZWN0ZWQgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5qc29uICAgICB8ICAgIDMgLQogLi4uL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9pbnRlZ2VyXzA1LmV4cGVjdGVkIHwgICAgMiAtCiAuLi4vc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2ludGVnZXJfMDUuanNvbiAgICAgfCAgICAyIC0KIC4uLi90ZXN0L2RhdGEvdGVz
dF9pbnRlZ2VyXzA2XzY0Yml0cy5leHBlY3RlZCB8ICAgIDEgLQogLi4uL3Rlc3QvZGF0YS90ZXN0
X2ludGVnZXJfMDZfNjRiaXRzLmpzb24gICAgIHwgICAgMiAtCiAuLi4vdGVzdC9kYXRhL3Rlc3Rf
aW50ZWdlcl8wN182NGJpdHMuZXhwZWN0ZWQgfCAgICAxIC0KIC4uLi90ZXN0L2RhdGEvdGVzdF9p
bnRlZ2VyXzA3XzY0Yml0cy5qc29uICAgICB8ICAgIDIgLQogLi4uL3Rlc3QvZGF0YS90ZXN0X2lu
dGVnZXJfMDhfNjRiaXRzLmV4cGVjdGVkIHwgICAgMSAtCiAuLi4vdGVzdC9kYXRhL3Rlc3RfaW50
ZWdlcl8wOF82NGJpdHMuanNvbiAgICAgfCAgICAyIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfbGFyZ2VfMDEuZXhwZWN0ZWQgICB8IDIxMjIgLS0tLS0KIC4uLi9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfbGFyZ2VfMDEuanNvbiAgICAgICB8ICAgIDIgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9vYmplY3RfMDEuZXhwZWN0ZWQgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90
ZXN0X29iamVjdF8wMS5qc29uICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3Rfb2JqZWN0XzAyLmV4cGVjdGVkICB8ICAgIDIgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9vYmplY3RfMDIuanNvbiAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0
X29iamVjdF8wMy5leHBlY3RlZCAgfCAgICA0IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
b2JqZWN0XzAzLmpzb24gICAgICB8ICAgIDUgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9v
YmplY3RfMDQuZXhwZWN0ZWQgIHwgICAgMiAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X29i
amVjdF8wNC5qc29uICAgICAgfCAgICAzIC0KIC4uLi9kYXRhL3Rlc3RfcHJlc2VydmVfY29tbWVu
dF8wMS5leHBlY3RlZCAgICB8ICAgMTEgLQogLi4uL3Rlc3QvZGF0YS90ZXN0X3ByZXNlcnZlX2Nv
bW1lbnRfMDEuanNvbiAgIHwgICAxNCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxf
MDEuZXhwZWN0ZWQgICAgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8w
MS5qc29uICAgICAgICB8ICAgIDMgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAy
LmV4cGVjdGVkICAgIHwgICAgMyAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDIu
anNvbiAgICAgICAgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wMy5l
eHBlY3RlZCAgICB8ICAgIDMgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAzLmpz
b24gICAgICAgIHwgICAgMyAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDQuZXhw
ZWN0ZWQgICAgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNC5qc29u
ICAgICAgICB8ICAgIDMgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1LmV4cGVj
dGVkICAgIHwgICAgNCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDUuanNvbiAg
ICAgICAgfCAgICAzIC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNi5leHBlY3Rl
ZCAgICB8ICAgIDQgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA2Lmpzb24gICAg
ICAgIHwgICAgMyAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuZXhwZWN0ZWQg
ICAgfCAgICA0IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNy5qc29uICAgICAg
ICB8ICAgIDMgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA4LmV4cGVjdGVkICAg
IHwgICAgNCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDguanNvbiAgICAgICAg
fCAgICA0IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOS5leHBlY3RlZCAgICB8
ICAgIDQgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA5Lmpzb24gICAgICAgIHwg
ICAgNCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTAuZXhwZWN0ZWQgICAgfCAg
ICA0IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMC5qc29uICAgICAgICB8ICAg
IDQgLQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzExLmV4cGVjdGVkICAgIHwgICAg
NCAtCiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTEuanNvbiAgICAgICAgfCAgICA0
IC0KIC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMi5leHBlY3RlZCAgICB8ICAgIDIg
LQogLi4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEyLmpzb24gICAgICAgIHwgICAgMiAt
CiAuLi4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMS5leHBlY3RlZCAgfCAgICAxIC0K
IC4uLi9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAxLmpzb24gICAgICB8ICAgIDEgLQog
Li4uL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIuZXhwZWN0ZWQgIHwgICAgMSAtCiAu
Li4vc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMi5qc29uICAgICAgfCAgICAxIC0KIC4u
Li9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmV4cGVjdGVkICB8ICAgIDEgLQogLi4u
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDMuanNvbiAgICAgIHwgICAgMSAtCiAuLi4v
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNC5leHBlY3RlZCAgfCAgICAyIC0KIC4uLi9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0Lmpzb24gICAgICB8ICAgIDIgLQogLi4uL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDUuZXhwZWN0ZWQgIHwgICAgMiAtCiAuLi4vc291
cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNS5qc29uICAgICAgfCAgICAyIC0KIC4uLi90ZXN0
L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5leHBlY3RlZCB8ICAgIDEgLQogLi4uL3Rlc3Qv
ZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAxLmpzb24gICAgIHwgICAgMSAtCiAuLi4vdGVzdC9k
YXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDIuZXhwZWN0ZWQgfCAgICAxIC0KIC4uLi90ZXN0L2Rh
dGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMi5qc29uICAgICB8ICAgIDEgLQogLi4uL3Rlc3QvZGF0
YS90ZXN0X3N0cmluZ191bmljb2RlXzAzLmV4cGVjdGVkIHwgICAgMSAtCiAuLi4vdGVzdC9kYXRh
L3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDMuanNvbiAgICAgfCAgICAxIC0KIC4uLi90ZXN0L2RhdGEv
dGVzdF9zdHJpbmdfdW5pY29kZV8wNC5leHBlY3RlZCB8ICAgIDEgLQogLi4uL3Rlc3QvZGF0YS90
ZXN0X3N0cmluZ191bmljb2RlXzA0Lmpzb24gICAgIHwgICAgMSAtCiAuLi4vdGVzdC9kYXRhL3Rl
c3Rfc3RyaW5nX3VuaWNvZGVfMDUuZXhwZWN0ZWQgfCAgICAyIC0KIC4uLi90ZXN0L2RhdGEvdGVz
dF9zdHJpbmdfdW5pY29kZV8wNS5qc29uICAgICB8ICAgIDEgLQogLi4uL2pzb25jcHAvc291cmNl
L3Rlc3QvZ2VuZXJhdGVfZXhwZWN0ZWQucHkgIHwgICAxNyAtCiAuLi4vc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDEuanNvbiAgICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29u
Y2hlY2tlci9mYWlsMTAuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL2ZhaWwxMS5qc29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDEyLmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMTMuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVj
a2VyL2ZhaWwxNC5qc29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNr
ZXIvZmFpbDE1Lmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tl
ci9mYWlsMTYuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2Vy
L2ZhaWwxNy5qc29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDE4Lmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9m
YWlsMTkuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwyLmpzb24gICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFp
bDIwLmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWls
MjEuanNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwy
Mi5qc29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIz
Lmpzb24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjQu
anNvbiAgICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNS5q
c29uICAgICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI2Lmpz
b24gICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjcuanNv
biAgICAgICB8ICAgIDIgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyOC5qc29u
ICAgICAgIHwgICAgMiAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI5Lmpzb24g
ICAgICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMy5qc29uICAg
ICAgICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMC5qc29uICAg
ICAgIHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMxLmpzb24gICAg
ICAgfCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzIuanNvbiAgICAg
ICB8ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMy5qc29uICAgICAg
IHwgICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDQuanNvbiAgICAgICAg
fCAgICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsNS5qc29uICAgICAgICB8
ICAgIDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw2Lmpzb24gICAgICAgIHwg
ICAgMSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDcuanNvbiAgICAgICAgfCAg
ICAxIC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsOC5qc29uICAgICAgICB8ICAg
IDEgLQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw5Lmpzb24gICAgICAgIHwgICAg
MSAtCiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcGFzczEuanNvbiAgICAgICAgfCAgIDU4
IC0KIC4uLi9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9wYXNzMi5qc29uICAgICAgICB8ICAgIDEg
LQogLi4uL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MzLmpzb24gICAgICAgIHwgICAgNiAt
CiAuLi4vc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcmVhZG1lLnR4dCAgICAgICAgfCAgICAzIC0K
IC4uLi9qc29uY3BwL3NvdXJjZS90ZXN0L3B5anNvbnRlc3RydW5uZXIucHkgICB8ICAgNzEgLQog
Li4uL2pzb25jcHAvc291cmNlL3Rlc3QvcnVuanNvbnRlc3RzLnB5ICAgICAgIHwgIDIxMCAtCiAu
Li4vanNvbmNwcC9zb3VyY2UvdGVzdC9ydW51bml0dGVzdHMucHkgICAgICAgfCAgIDg0IC0KIC4u
Li90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS92ZXJzaW9uLmluICAgICB8ICAgIDEgLQogLi4u
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3ZlcnNpb24udHh0ICAgIHwgICAgMSAtCiAuLi4v
bGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgfCAgIDY4IC0KIDYxNyBm
aWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxOTAyMzEgZGVsZXRpb25zKC0pCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3MvQlVJTEQuZ24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9MSUNFTlNFCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3MvT1dORVJTCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvUkVBRE1FLndlYnJ0YwogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2Zs
YWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dl
bi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfY29tcGxldGlvbnMuaAogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2Zs
YWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfZGVjbGFyZS5oCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19nZmxhZ3MuaAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmgKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFn
cy9nZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dmbGFncy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dp
bi9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfY29tcGxldGlvbnMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dl
bi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dl
bi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2dmbGFncy5oCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2Vu
L3dpbi9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZmxhZ3MuZ3lw
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjLy5naXRhdHRyaWJ1dGVzCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
Ly5naXRtb2R1bGVzCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0FVVEhPUlMudHh0CiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL0NNYWtlTGlzdHMudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NPUFlJTkcudHh0
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0NoYW5nZUxvZy50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMv
SU5TVEFMTC5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9SRUFETUUubWQKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFn
cy9zcmMvY21ha2UvUkVBRE1FX3J1bnRpbWUudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtl
L2NvbmZpZy5jbWFrZS5pbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9leGVjdXRlX3Rlc3Qu
Y21ha2UKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvcGFja2FnZS5jbWFrZS5pbgogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy9jbWFrZS91dGlscy5jbWFrZQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFr
ZS92ZXJzaW9uLmNtYWtlLmluCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9jb25maWcuaC5pbgog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Ny
Yy9nZmxhZ3MuaC5pbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25z
LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuaC5pbgogZGVs
ZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25zLnNoCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxh
Z3Mvc3JjL3NyYy9nZmxhZ3NfZGVjbGFyZS5oLmluCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9n
ZmxhZ3NfbnMuaC5pbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX3JlcG9ydGluZy5j
YwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvbXV0ZXguaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9z
cmMvdXRpbC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy93aW5kb3dzX3BvcnQuY2MKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dmbGFncy9zcmMvc3JjL3dpbmRvd3NfcG9ydC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rl
c3QvQ01ha2VMaXN0cy50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9jb25maWcvQ01ha2VM
aXN0cy50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9jb25maWcvbWFpbi5jYwogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy90ZXN0L2NvbmZpZ19mb3JfdW5pdHRlc3RzLmgKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFn
cy9zcmMvdGVzdC9mbGFnZmlsZS4xCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZmxhZ2ZpbGUu
MgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjMKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9z
cmMvdGVzdC9nZmxhZ3NfYnVpbGQucHkuaW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxh
Z3NfZGVjbGFyZV9mbGFncy5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19kZWNs
YXJlX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3Nfc3RyaXBfZmxhZ3Nf
dGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19zdHJpcF9mbGFnc190ZXN0
LmNtYWtlCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3VuaXR0ZXN0LmNjCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3VuaXR0ZXN0X2ZsYWdmaWxlCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3Rlc3QvbmMvQ01ha2VMaXN0cy50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9uYy9nZmxhZ3NfbmMuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvLmdpdGlnbm9yZQogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC8udHJhdmlzLnltbAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9DTWFrZUxpc3Rz
LnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9SRUFETUUubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
YXBwdmV5b3IueW1sCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ0hBTkdFUwogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NNYWtlTGlzdHMudHh0CiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svQ09OVFJJQlVUT1JTCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svTElDRU5TRQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL01ha2VmaWxlLmFt
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svY29uZmlndXJlLmFjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
ZG9jcy9Db29rQm9vay5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRGVz
aWduRG9jLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5t
ZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRG9jdW1lbnRhdGlvbi5tZAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRm9yRHVtbWllcy5tZAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1k
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Lbm93bklzc3Vlcy5tZAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9DaGVhdFNoZWV0Lm1kCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0Nvb2tCb29rLm1kCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0RvY3VtZW50YXRpb24ubWQKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRm9yRHVtbWllcy5tZAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9GcmVxdWVudGx5QXNrZWRRdWVzdGlv
bnMubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvQ2hlYXRTaGVl
dC5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Db29rQm9vay5t
ZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Eb2N1bWVudGF0aW9u
Lm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0ZvckR1bW1pZXMu
bWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83
L0NoZWF0U2hlZXQubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcv
Q29va0Jvb2subWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRG9j
dW1lbnRhdGlvbi5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9G
b3JEdW1taWVzLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0Zy
ZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2luY2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1jYXJkaW5hbGl0aWVzLmgKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVy
YXRlZC1hY3Rpb25zLmgucHVtcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaAogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9u
LW1vY2tlcnMuaC5wdW1wCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzLmgucHVtcAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVk
LW5pY2Utc3RyaWN0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dt
b2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oLnB1bXAKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1hdGNoZXJzLmgKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtYWN0aW9ucy5oCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3JlLW1h
dGNoZXJzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dt
b2NrLXNwZWMtYnVpbGRlcnMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svZ21vY2suaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9j
ay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1bXAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21v
Y2stcG9ydC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9p
bnRlcm5hbC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJhdGVkLWlu
dGVybmFsLXV0aWxzLmgucHVtcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbWFrZS9NYWtlZmlsZQogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9jay5zbG4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2sudmNwcm9qCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX2NvbmZpZy52c3Byb3BzCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX21haW4udmNwcm9qCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX3Rlc3QudmNwcm9qCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrLnNsbgogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9jay52Y3hwcm9qCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5wcm9wcwogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9ja19tYWluLnZjeHByb2oKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfdGVzdC52Y3hwcm9qCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnNsbgogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9jay52Y3hwcm9qCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrX2NvbmZpZy5wcm9wcwogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9ja19tYWluLnZjeHByb2oKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfdGVzdC52Y3hwcm9q
CiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9mdXNlX2dtb2NrX2ZpbGVz
LnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvTElD
RU5TRQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL1JF
QURNRQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL1JF
QURNRS5jcHBjbGVhbgogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2Vu
ZXJhdG9yL2NwcC9hc3QucHkKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRz
L2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3MucHkKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3NfdGVzdC5weQogZGVsZXRlIG1v
ZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weQog
ZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC90b2tl
bml6ZS5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9y
L2NwcC91dGlscy5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2Vu
ZXJhdG9yL2dtb2NrX2dlbi5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Njcmlw
dHMvZ21vY2stY29uZmlnLmluCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0
cy9nbW9ja19kb2N0b3IucHkKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRz
L3VwbG9hZC5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvdXBsb2Fk
X2dtb2NrLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLWFsbC5j
YwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1jYXJkaW5hbGl0aWVz
LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLWludGVybmFsLXV0
aWxzLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLW1hdGNoZXJz
LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLXNwZWMtYnVpbGRl
cnMuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2suY2MKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2tfbWFpbi5jYwogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3QuY2MKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25z
X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVy
YXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnNfdGVz
dC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2staW50ZXJuYWwt
dXRpbHNfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2st
bWF0Y2hlcnNfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2stbW9yZS1hY3Rpb25zX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90
ZXN0L2dtb2NrLW5pY2Utc3RyaWN0X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrLXBvcnRfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3Rlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL3Rlc3QvZ21vY2tfZXhfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3Rlc3QvZ21vY2tfbGVha190ZXN0LnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rlc3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19saW5rMl90ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19saW5rX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5oCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdF9nb2xkZW4udHh0CiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19zdHJlc3NfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNzU1IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdF91dGlscy5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0Ly5naXRpZ25vcmUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9DSEFO
R0VTCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9DT05UUklCVVRPUlMKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9MSUNFTlNFCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvTWFr
ZWZpbGUuYW0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9SRUFETUUubWQKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZQogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0LmNicHJvagogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0Lmdyb3VwcHJvagogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X2FsbC5jYwogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X2xpbmsuY2MKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9tYWluLmNicHJvagogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvagogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvbmZpZ3VyZS5hYwogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L2RvY3MvRGV2R3VpZGUubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL0RvY3VtZW50YXRpb24ubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL0ZBUS5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvUHJpbWVy
Lm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QdW1wTWFudWFsLm1kCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9TYW1wbGVzLm1kCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0FkdmFuY2VkR3VpZGUubWQKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfRG9jdW1lbnRhdGlvbi5tZAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9GQVEubWQKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfUHJpbWVyLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV81X1B1bXBNYW51YWwubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1YxXzVfWGNvZGVHdWlkZS5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2RvY3MvVjFfNl9BZHZhbmNlZEd1aWRlLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV82X0RvY3VtZW50YXRpb24ubWQKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRkFRLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV82X1ByaW1lci5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfNl9QdW1wTWFudWFsLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
ZG9jcy9WMV82X1NhbXBsZXMubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2Nz
L1YxXzZfWGNvZGVHdWlkZS5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3Mv
VjFfN19BZHZhbmNlZEd1aWRlLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9j
cy9WMV83X0RvY3VtZW50YXRpb24ubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9k
b2NzL1YxXzdfRkFRLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83
X1ByaW1lci5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19QdW1w
TWFudWFsLm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV83X1NhbXBs
ZXMubWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfWGNvZGVHdWlk
ZS5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtZGVhdGgt
dGVzdC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVz
dC1tZXNzYWdlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LXBhcmFtLXRlc3QuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdC5oCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC5oCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdF9wcmVkX2ltcGwu
aAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJv
ZC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9jdXN0b20vZ3Rlc3QtcG9ydC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5j
bHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaAogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtbGlua2VkX3B0ci5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oLnB1bXAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmgKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBv
cnQuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11
dGlsLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9tNC9hY3hfcHRocmVhZC5tNAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L200L2d0
ZXN0Lm00CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbWFrZS9NYWtlZmlsZQogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC1tZC52Y3Byb2oKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnNsbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L21zdmMvZ3Rlc3QudmNwcm9qCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
bXN2Yy9ndGVzdF9tYWluLW1kLnZjcHJvagogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L21zdmMvZ3Rlc3RfbWFpbi52Y3Byb2oKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9t
c3ZjL2d0ZXN0X3Byb2RfdGVzdC1tZC52Y3Byb2oKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2oKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvagogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NhbXBsZXMvc2FtcGxlMi5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NhbXBsZXMvc2FtcGxlMi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxl
cy9zYW1wbGUyX3VuaXR0ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGUzLWlubC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxl
cy9zYW1wbGUzX3VuaXR0ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGU0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9z
YW1wbGU0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTRf
dW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBs
ZTVfdW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3Nh
bXBsZTZfdW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVz
L3NhbXBsZTdfdW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1w
bGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
YW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zY3JpcHRzL2NvbW1vbi5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Njcmlw
dHMvZnVzZV9ndGVzdF9maWxlcy5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nj
cmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc2NyaXB0cy9wdW1wLnB5CiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0
cy9yZWxlYXNlX2RvY3MucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRz
L3Rlc3QvTWFrZWZpbGUKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3Vw
bG9hZC5weQogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkX2d0
ZXN0LnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWFsbC5jYwog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWZpbGVwYXRoLmNjCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWludGVybmFsLWlubC5oCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXBvcnQuY2MKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LXR5cGVkLXRlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zcmMvZ3Rlc3RfbWFpbi5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYwogZGVsZXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1vcHRpb25zX3Rlc3QuY2MKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5j
YwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXBvcnRfdGVz
dC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcHJpbnRlcnNf
dGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdGVzdC1w
YXJ0X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR1
cGxlX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXR5
cGVkLXRlc3QyX3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5weQogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVz
dF8uY2MKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4
Y2VwdGlvbnNfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYwogZGVsZXRlIG1vZGUgMTAwNzU1IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0Xy5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52aXJvbm1lbnRfdGVzdC5jYwogZGVsZXRlIG1vZGUgMTAw
NzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0LnB5CiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjCiBkZWxl
dGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MKIGRlbGV0
ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3Qu
cHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNf
dW5pdHRlc3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9t
YWluX3VuaXR0ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF9ub190ZXN0X3VuaXR0ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9vdXRwdXRfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF9vdXRwdXRfdGVzdF9nb2xkZW5fbGluLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0LmNjCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9wcm9kX3Rlc3QuY2MKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3JlcGVhdF90ZXN0LmNjCiBk
ZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVfdGVzdF8u
Y2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVy
X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3N0cmVz
c190ZXN0LmNjCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90ZXN0
X3V0aWxzLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYwogZGVsZXRlIG1v
ZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5CiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rl
c3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bml0dGVz
dC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZp
bGUxX3Rlc3RfLmNjCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8uY2MKIGRlbGV0ZSBtb2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0X3htbF9vdXRmaWxlc190ZXN0LnB5CiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYwogZGVsZXRlIG1v
ZGUgMTAwNzU1IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uY2MKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3Byb2R1Y3Rpb24uaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1Z1Byb2plY3QueGNjb25maWcKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29u
ZmlnCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwu
eGNjb25maWcKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9Db25maWcvUmVs
ZWFzZVByb2plY3QueGNjb25maWcKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29k
ZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9UZXN0VGFyZ2V0LnhjY29uZmlnCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvUmVzb3VyY2VzL0luZm8ucGxpc3QKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZv
LnBsaXN0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFt
ZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBs
ZS9ydW50ZXN0cy5zaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBs
ZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5oCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rl
c3QuY2MKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3J1bnRl
c3RzLnNoCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0cy92ZXJz
aW9uZ2VuZXJhdGUucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9ndGVz
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCiBkZWxldGUgbW9kZSAxMDA3NTUgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L3RyYXZpcy5z
aAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ3Rlc3QtcGFyYWxsZWwvTElDRU5TRQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ3Rlc3QtcGFyYWxs
ZWwvT1dORVJTCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9SRUFETUUud2VicnRjCiBkZWxldGUg
bW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9ndGVzdC1wYXJhbGxlbC9ndGVzdC1wYXJhbGxlbAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9CVUlMRC5n
bgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9MSUNFTlNFCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL09XTkVSUwogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9SRUFETUUuY2hyb21pdW0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvZnV6emVycy9q
c29uX2Z1enplci5jYwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9nZW5lcmF0ZWQvdmVyc2lvbi5oCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS8uY2xhbmctZm9ybWF0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS8uZ2l0YXR0cmlidXRlcwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdpdGh1Yi9JU1NVRV9U
RU1QTEFURS9idWdfcmVwb3J0Lm1kCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0aHViL0lT
U1VFX1RFTVBMQVRFL2ZlYXR1cmVfcmVxdWVzdC5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
LmdpdGlnbm9yZQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpcy55bWwKIGRlbGV0ZSBt
b2RlIDEwMDc1NSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy9jbWFrZV9idWlsZGVyLnNoCiBkZWxldGUg
bW9kZSAxMDA3NTUgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvbWVzb25fYnVpbGRlci5zaAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5iZWZvcmVfaW5zdGFsbC5s
aW51eC5zaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5i
ZWZvcmVfaW5zdGFsbC5vc3guc2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2Ny
aXB0cy90cmF2aXMuaW5zdGFsbC5saW51eC5zaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRy
YXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLm9zeC5zaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvQVVUSE9SUwogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQ01ha2VMaXN0cy50eHQKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL0NPTlRSSUJVVElORy5tZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvTElDRU5TRQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvUkVBRE1FLm1kCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9hbWFsZ2FtYXRlLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hcHB2
ZXlvci55bWwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rldi5tYWtlZmlsZQogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvX19pbml0X18ucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL2RldnRvb2xzL2FnZW50X3ZtdzcuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2
dG9vbHMvYWdlbnRfdm14cC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9h
bnRnbG9iLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9iYXRjaGJ1aWxkLnB5
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9maXhlb2wucHkKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL2RldnRvb2xzL2xpY2Vuc2V1cGRhdGVyLnB5CiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9kZXZ0b29scy90YXJiYWxsLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2Mv
ZG94eWZpbGUuaW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9mb290ZXIuaHRtbAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL2hlYWRlci5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9kb2MvanNvbmNwcC5kb3gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9yZWFkbWUu
dHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2Mvcm9hZG1hcC5kb3gKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL2RvYy93ZWJfZG94eWZpbGUuaW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L2RveHlidWlsZC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9DTWFrZUxpc3Rz
LnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2FsbG9jYXRvci5oCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vYXNzZXJ0aW9ucy5oCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vYXV0b2xpbmsuaAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvaW5jbHVkZS9qc29uL2NvbmZpZy5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9p
bmNsdWRlL2pzb24vZmVhdHVyZXMuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9q
c29uL2ZvcndhcmRzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9qc29u
LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9yZWFkZXIuaAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL3ZhbHVlLmgKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL2luY2x1ZGUvanNvbi93cml0ZXIuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvbWFr
ZXJlbGVhc2UucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL21lc29uLmJ1aWxkCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9wa2ctY29uZmlnL2pzb25jcHAucGMuaW4KIGRlbGV0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3NyYy9DTWFrZUxpc3RzLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3Jj
L2pzb250ZXN0cnVubmVyL0NNYWtlTGlzdHMudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9z
cmMvanNvbnRlc3RydW5uZXIvbWFpbi5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9s
aWJfanNvbi9DTWFrZUxpc3RzLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9q
c29uL2pzb25fcmVhZGVyLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29u
L2pzb25fdG9vbC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl92
YWx1ZS5jcHAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVl
aXRlcmF0b3IuaW5sCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl93
cml0ZXIuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vdmVyc2lvbi5o
LmluCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9DTWFrZUxpc3Rz
LnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vZnV6ei5jcHAK
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29uL2Z1enouaAogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vanNvbnRlc3QuY3BwCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9qc29udGVzdC5oCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9tYWluLmNwcAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9jbGVhbnRlc3RzLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvZmFpbF90ZXN0X2FycmF5XzAxLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS9mYWlsX3Rlc3Rfc3RhY2tfbGltaXQuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDEuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAxLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAyLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMi5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9hcnJheV8wMy5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDMuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfYXJyYXlfMDQuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2FycmF5XzA0Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2FycmF5XzA1LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9hcnJheV8wNS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9hcnJheV8wNi5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfYXJyYXlfMDYuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfYXJyYXlfMDcuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X2FycmF5XzA3Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2Jhc2ljXzAxLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9iYXNpY18wMS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9iYXNpY18wMi5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfYmFzaWNfMDIuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YmFzaWNfMDMuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2Jhc2ljXzAzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jh
c2ljXzA0LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9i
YXNpY18wNC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNp
Y18wNS5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFz
aWNfMDUuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNf
MDYuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2lj
XzA2Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA3
LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18w
Ny5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOC5l
eHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDgu
anNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDkuZXhw
ZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA5Lmpz
b24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAuZXhw
ZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAu
anNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMS5l
eHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8w
MS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAy
LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50
XzAyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbXBsZXhf
MDEuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbXBs
ZXhfMDEuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdl
cl8wMS5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50
ZWdlcl8wMS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRl
Z2VyXzAyLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9p
bnRlZ2VyXzAyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2lu
dGVnZXJfMDMuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2ludGVnZXJfMDMuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
aW50ZWdlcl8wNC5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfaW50ZWdlcl8wNC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9pbnRlZ2VyXzA1LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9pbnRlZ2VyXzA1Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA2XzY0Yml0cy5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA3XzY0Yml0cy5leHBlY3RlZAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wN182NGJpdHMuanNvbgogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wOF82NGJpdHMuZXhw
ZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDhf
NjRiaXRzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2xhcmdl
XzAxLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9sYXJn
ZV8wMS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3Rf
MDEuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVj
dF8wMS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3Rf
MDIuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVj
dF8wMi5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3Rf
MDMuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVj
dF8wMy5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3Rf
MDQuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVj
dF8wNC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9wcmVzZXJ2
ZV9jb21tZW50XzAxLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9wcmVzZXJ2ZV9jb21tZW50XzAxLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3JlYWxfMDEuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3JlYWxfMDEuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfcmVhbF8wMi5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfcmVhbF8wMi5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9yZWFsXzAzLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9yZWFsXzAzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X3JlYWxfMDQuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X3JlYWxfMDQuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8wNS5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8wNS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA2
LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA2
Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuZXhw
ZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuanNv
bgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5leHBlY3Rl
ZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5qc29uCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA5LmV4cGVjdGVkCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA5Lmpzb24KIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTAuZXhwZWN0ZWQKIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTAuanNvbgogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5leHBlY3RlZAogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5qc29uCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEyLmV4cGVjdGVkCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMS5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAxLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMi5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMy5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNC5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNS5leHBlY3RlZAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA1Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAxLmV4cGVjdGVkCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5qc29uCiBk
ZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMi5l
eHBlY3RlZAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3Vu
aWNvZGVfMDIuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3Ry
aW5nX3VuaWNvZGVfMDMuZXhwZWN0ZWQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X3N0cmluZ191bmljb2RlXzAzLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA0LmV4cGVjdGVkCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNC5qc29uCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNS5leHBlY3RlZAog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDUu
anNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9nZW5lcmF0ZV9leHBlY3RlZC5weQog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMS5qc29uCiBkZWxl
dGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMC5qc29uCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMS5qc29uCiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMi5qc29uCiBkZWxldGUgbW9kZSAx
MDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMy5qc29uCiBkZWxldGUgbW9kZSAxMDA2
NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQg
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNi5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwxNy5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2pzb25jaGVja2VyL2ZhaWwxOC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWwxOS5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL2ZhaWwyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNr
ZXIvZmFpbDIwLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDIxLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFp
bDIyLmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIz
Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI0Lmpz
b24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI1Lmpzb24K
IGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI2Lmpzb24KIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI3Lmpzb24KIGRlbGV0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI4Lmpzb24KIGRlbGV0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI5Lmpzb24KIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMuanNvbgogZGVsZXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzAuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzEuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzIuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsMzMuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9qc29uY2hlY2tlci9mYWlsNC5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWw1Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDYuanNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tl
ci9mYWlsNy5qc29uCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWw4Lmpzb24KIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDku
anNvbgogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9wYXNzMS5qc29u
CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MyLmpzb24KIGRl
bGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcGFzczMuanNvbgogZGVsZXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9yZWFkbWUudHh0CiBkZWxldGUgbW9k
ZSAxMDA2NDQgU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L3B5anNvbnRlc3RydW5uZXIucHkKIGRlbGV0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvcnVuanNvbnRlc3RzLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L3J1bnVuaXR0ZXN0cy5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdmVyc2lvbi5pbgogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdmVyc2lvbi50eHQKCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvQ01ha2VMaXN0cy50eHQKaW5kZXggYmU4NjY2Njk2MTkwLi45Y2Y1OGQ5Mjk3MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ01ha2VMaXN0cy50eHQKQEAgLTI4OSw5ICsy
ODksNiBAQCBzZXQod2VicnRjX1NPVVJDRVMKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYm9yaW5n
c3NsL3NyYy9zc2wvdGxzMTNfc2VydmVyLmNjCiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2Jvcmlu
Z3NzbC9zcmMvc3NsL3Rsc19tZXRob2QuY2MKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvYm9yaW5n
c3NsL3NyYy9zc2wvdGxzX3JlY29yZC5jYwotICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl9yZWFkZXIuY3BwCi0gICAgU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVlLmNwcAotICAgIFNvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl93cml0ZXIuY3Bw
CiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2xpYnl1di9zb3VyY2UvY29tcGFyZV9jb21tb24uY2MK
ICAgICBTb3VyY2UvdGhpcmRfcGFydHkvbGlieXV2L3NvdXJjZS9jb21wYXJlX2djYy5jYwogICAg
IFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ5dXYvc291cmNlL2NvbnZlcnQuY2MKQEAgLTE3NDcsMTAg
KzE3NDQsNiBAQCBzZXQod2VicnRjX0lOQ0xVREVfRElSRUNUT1JJRVMgUFJJVkFURQogICAgIFNv
dXJjZQogICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwCiAgICAgU291cmNlL3RoaXJk
X3BhcnR5L2JvcmluZ3NzbC9zcmMvaW5jbHVkZQotICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL2dlbmVyYXRlZAotICAgIFNvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL292ZXJyaWRlcy9p
bmNsdWRlCi0gICAgU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUKLSAg
ICBTb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uCiAgICAgU291
cmNlL3RoaXJkX3BhcnR5L2xpYnNydHAvY29uZmlnCiAgICAgU291cmNlL3RoaXJkX3BhcnR5L2xp
YnNydHAvY3J5cHRvL2luY2x1ZGUKICAgICBTb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9pbmNs
dWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5nZUxvZwppbmRleCBjYzJiNDEyNGIzYmUu
LmM2ZDZkOTliMjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMjItMDMtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBubyBsb25nZXIgdXNlZCB0aGlyZCBwYXJ0eSB3ZWJydGMgbW9k
dWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
OTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIGZvbGRlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHVzZWQgZm9yIGEgbG9uZyB0aW1lLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6IFJlbW92ZWQganNvbmNwcCBjb21waWxhdGlvbi4KKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWc6CisgICAgICAgICogU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFnczogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdDogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkv
Z3Rlc3QtcGFyYWxsZWw6IFJlbW92ZWQuCisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHA6IFJlbW92ZWQuCisgICAgICAgICogbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMjItMDMtMTQgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkxMjM5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy54Y2NvbmZp
ZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMu
eGNjb25maWcKaW5kZXggNzA1OTgyZjVlYzllLi4wY2Y4ZDU5MTRlMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25m
aWcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndl
YnJ0Yy54Y2NvbmZpZwpAQCAtNTIsNyArNTIsNyBAQCBEWUxJQl9JTlNUQUxMX05BTUVfQkFTRV9X
S19SRUxPQ0FUQUJMRV9GUkFNRVdPUktTXyA9ICQoTk9STUFMX1dFQkNPUkVfRlJBTUVXT1JLUwog
RFlMSUJfSU5TVEFMTF9OQU1FX0JBU0VfV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLU19ZRVMgPSBA
bG9hZGVyX3BhdGgvLi4vLi4vLi4vOwogCiBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POwotSEVBREVSX1NFQVJDSF9QQVRIUyA9IFNvdXJjZSBTb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvaW5jbHVkZSBTb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9jcnlwdG8v
aW5jbHVkZSBTb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9pbmNsdWRlIFNvdXJjZS90aGlyZF9w
YXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUgU291cmNlL3RoaXJkX3BhcnR5L2xpYnl1di9pbmNs
dWRlIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIgU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliIFNvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0hlYWRlcnMgU291cmNlL3dlYnJ0
Yy9jb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZSBTb3VyY2Uvd2VicnRjL21v
ZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZSBTb3VyY2UvdGhpcmRf
cGFydHkvb3B1cy9zcmMvY2VsdCBTb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvaW5jbHVkZSBT
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjIFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRp
b19kZXZpY2UvbWFjIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9uZXRpbmV0IFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZpY2UvaW9zIFNvdXJj
ZS93ZWJydGMgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYyBTb3VyY2Uvd2VicnRjL3Nkay9vYmpjL2Jh
c2UgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3NlcyBTb3VyY2UvdGhpcmRf
cGFydHkvbGlic3J0cC9jb25maWcgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xh
c3Nlcy9Db21tb24gU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3Nlcy9WaWRl
byBTb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1BlZXJDb25uZWN0aW9u
IFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwIFNvdXJjZS90aGlyZF9wYXJ0eS9saWJ2cHgv
c291cmNlL2xpYnZweCBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJtX3BhcnNlci9pbmNs
dWRlOworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFNvdXJjZSBTb3VyY2UvdGhpcmRfcGFydHkvbGli
c3J0cC9jcnlwdG8vaW5jbHVkZSBTb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9pbmNsdWRlIFNv
dXJjZS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUgU291cmNlL3RoaXJkX3BhcnR5
L2xpYnl1di9pbmNsdWRlIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwIFNvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIgU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliIFNvdXJjZS93ZWJydGMvc2RrL29iamMvRnJhbWV3b3JrL0hlYWRlcnMg
U291cmNlL3dlYnJ0Yy9jb21tb25fYXVkaW8vc2lnbmFsX3Byb2Nlc3NpbmcvaW5jbHVkZSBTb3Vy
Y2Uvd2VicnRjL21vZHVsZXMvYXVkaW9fY29kaW5nL2NvZGVjcy9pc2FjL21haW4vaW5jbHVkZSBT
b3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvY2VsdCBTb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9z
cmMvaW5jbHVkZSBTb3VyY2UvdGhpcmRfcGFydHkvb3B1cy9zcmMvc3JjIFNvdXJjZS93ZWJydGMv
bW9kdWxlcy9hdWRpb19kZXZpY2UvbWFjIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0IFNvdXJjZS93ZWJydGMvbW9kdWxlcy9hdWRpb19kZXZp
Y2UvaW9zIFNvdXJjZS93ZWJydGMgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYyBTb3VyY2Uvd2VicnRj
L3Nkay9vYmpjL2Jhc2UgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsvQ2xhc3NlcyBT
b3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9jb25maWcgU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9G
cmFtZXdvcmsvQ2xhc3Nlcy9Db21tb24gU291cmNlL3dlYnJ0Yy9zZGsvb2JqYy9GcmFtZXdvcmsv
Q2xhc3Nlcy9WaWRlbyBTb3VyY2Uvd2VicnRjL3Nkay9vYmpjL0ZyYW1ld29yay9DbGFzc2VzL1Bl
ZXJDb25uZWN0aW9uIFNvdXJjZS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwIFNvdXJjZS90aGlyZF9w
YXJ0eS9saWJ2cHgvc291cmNlL2xpYnZweCBTb3VyY2UvdGhpcmRfcGFydHkvbGlid2VibS93ZWJt
X3BhcnNlci9pbmNsdWRlOwogCiBQVUJMSUNfSEVBREVSU19GT0xERVJfUFJFRklYID0gL3Vzci9s
b2NhbC9pbmNsdWRlOwogSU5TVEFMTF9QVUJMSUNfSEVBREVSX1BSRUZJWCA9ICQoSU5TVEFMTF9Q
QVRIX1BSRUZJWCkkKFBVQkxJQ19IRUFERVJTX0ZPTERFUl9QUkVGSVgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9CVUlMRC5nbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY0MWI3ZWNiZmNl
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3MvQlVJTEQuZ24KKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBA
Ci0jIENvcHlyaWdodCAoYykgMjAxNCBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZQotIyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKLSMgdHJlZS4gQW4gYWRkaXRpb25hbCBp
bnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAotIyBpbiB0aGUg
ZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhvcnMgbWF5Ci0jIGJl
IGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVl
LgotCi1pZiAoaXNfd2luKSB7Ci0gIGdmbGFnc19nZW5fYXJjaF9yb290ID0gImdlbi93aW4iCi19
IGVsc2UgewotICBnZmxhZ3NfZ2VuX2FyY2hfcm9vdCA9ICJnZW4vcG9zaXgiCi19Ci0KLWNvbmZp
ZygiZ2ZsYWdzX2NvbmZpZyIpIHsKLSAgaW5jbHVkZV9kaXJzID0gWwotICAgICIkZ2ZsYWdzX2dl
bl9hcmNoX3Jvb3QvaW5jbHVkZSIsICAjIEZvciBjb25maWd1cmVkIGZpbGVzLgotICAgICJzcmMv
c3JjIiwgICMgRm9yIGV2ZXJ5dGhpbmcgZWxzZS4KLSAgXQotCi0gIGRlZmluZXMgPSBbCi0gICAg
IyBUaGVzZSBtYWNyb3MgZXhpc3Qgc28gZmxhZ3MgYW5kIHN5bWJvbHMgYXJlIHByb3Blcmx5IGV4
cG9ydGVkIHdoZW4KLSAgICAjIGJ1aWxkaW5nIERMTHMuIFNpbmNlIHdlIGRvbid0IGJ1aWxkIERM
THMsIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGVtLgotICAgICJHRkxBR1NfRExMX0RFQ0w9IiwKLSAg
ICAiR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUc9IiwKLSAgICAiR0ZMQUdTX0RMTF9ERUZJTkVfRkxB
Rz0iLAotICBdCi0KLSAgIyBHTiBvcmRlcnMgZmxhZ3Mgb24gYSB0YXJnZXQgYmVmb3JlIGZsYWdz
IGZyb20gY29uZmlncy4gVGhlIGRlZmF1bHQgY29uZmlnCi0gICMgYWRkcyAtV2FsbCwgYW5kIHRo
aXMgZmxhZyBoYXZlIHRvIGJlIGFmdGVyIC1XYWxsIC0tIHNvIHRoZXkgbmVlZCB0bwotICAjIGNv
bWUgZnJvbSBhIGNvbmZpZyBhbmQgY2FuJ3QgYmUgb24gdGhlIHRhcmdldCBkaXJlY3RseS4KLSAg
aWYgKGlzX2NsYW5nKSB7Ci0gICAgY2ZsYWdzID0gWyAiLVduby11bnVzZWQtbG9jYWwtdHlwZWRl
ZiIgXQotICB9Ci19Ci0KLXNvdXJjZV9zZXQoImdmbGFncyIpIHsKLSAgY2ZsYWdzID0gW10KLSAg
c291cmNlcyA9IFsKLSAgICAic3JjL3NyYy9nZmxhZ3MuY2MiLAotICAgICJzcmMvc3JjL2dmbGFn
c19jb21wbGV0aW9ucy5jYyIsCi0gICAgInNyYy9zcmMvZ2ZsYWdzX3JlcG9ydGluZy5jYyIsCi0g
IF0KLSAgaWYgKGlzX3dpbikgewotICAgIHNvdXJjZXMgKz0gWyAic3JjL3NyYy93aW5kb3dzX3Bv
cnQuY2MiIF0KLQotICAgIGNmbGFncyArPSBbCi0gICAgICAiL3dkNDAwNSIsICAjIFdJTjMyX0xF
QU5fQU5EX01FQU4uCi0gICAgICAiL3dkNDI2NyIsICAjIENvbnZlcnNpb24gZnJvbSBzaXplX3Qg
dG8gInR5cGUiLgotICAgIF0KLSAgfQotCi0gIGluY2x1ZGVfZGlycyA9IFsKLSAgICAiJGdmbGFn
c19nZW5fYXJjaF9yb290L2luY2x1ZGUvZ2ZsYWdzIiwgICMgRm9yIGNvbmZpZ3VyZWQgZmlsZXMu
Ci0gICAgIiRnZmxhZ3NfZ2VuX2FyY2hfcm9vdC9pbmNsdWRlL3ByaXZhdGUiLCAgIyBGb3IgY29u
ZmlnLmgKLSAgXQotCi0gIHB1YmxpY19jb25maWdzID0gWyAiOmdmbGFnc19jb25maWciIF0KLQot
ICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0K
LSAgY29uZmlncyArPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2Rl
IiBdCi0KLSAgaWYgKGlzX3dpbikgewotICAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcv
d2luOnVuaWNvZGUiIF0KLSAgfQotCi0gIGlmIChpc19jbGFuZykgewotICAgICMgVE9ETyhhbmRy
ZXcpOiBMb29rIGludG8gZml4aW5nIHRoaXMgd2FybmluZyB1cHN0cmVhbToKLSAgICAjIGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD03NjAKLSAgICBjb25m
aWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NsYW5nOmV4dHJhX3dhcm5pbmdzIiBdCi0gICAgY2Zs
YWdzICs9IFsgIi1Xbm8tbWljcm9zb2Z0LWluY2x1ZGUiIF0KLSAgfQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvTElD
RU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2Zs
YWdzL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNWIwYzI0MTM0ZC4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1D
b3B5cmlnaHQgKGMpIDIwMDYsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1S
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvT1dORVJTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvT1dORVJTCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmYTgzMjY5YjE4OGUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9PV05FUlMK
KysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWtqZWxsYW5kZXJAd2VicnRjLm9yZwotCi0j
IFRoZXNlIGFyZSBmb3IgdGhlIGNvbW1vbiBjYXNlIG9mIGFkZGluZyBvciByZW5hbWluZyBmaWxl
cy4gSWYgeW91J3JlIGRvaW5nCi0jIHN0cnVjdHVyYWwgY2hhbmdlcywgcGxlYXNlIGdldCBhIHJl
dmlldyBmcm9tIGEgcmV2aWV3ZXIgaW4gdGhpcyBmaWxlLgotcGVyLWZpbGUgKi5neXA9KgotcGVy
LWZpbGUgKi5neXBpPSoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL1JFQURNRS53ZWJydGMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9SRUFETUUud2VicnRjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGE5ODMwYTYxYTAuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9S
RUFETUUud2VicnRjCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVVJMOiBodHRwczov
L2dpdGh1Yi5jb20vZ2ZsYWdzL2dmbGFncwotVmVyc2lvbjogMi4xLjIKLUxpY2Vuc2U6IE5ldyBC
U0QKLUxpY2Vuc2UgRmlsZTogTElDRU5TRQotCi1EZXNjcmlwdGlvbjoKLVRoZSBnZmxhZ3MgcGFj
a2FnZSBjb250YWlucyBhIGxpYnJhcnkgdGhhdCBpbXBsZW1lbnRzIGNvbW1hbmRsaW5lCi1mbGFn
cyBwcm9jZXNzaW5nLiBBcyBzdWNoIGl0J3MgYSByZXBsYWNlbWVudCBmb3IgZ2V0b3B0KCkuIEl0
IGhhcwotaW5jcmVhc2VkIGZsZXhpYmlsaXR5LCBpbmNsdWRpbmcgYnVpbHQtaW4gc3VwcG9ydCBm
b3IgQysrIHR5cGVzIGxpa2UKLXN0cmluZywgYW5kIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBmbGFn
cyBpbiB0aGUgc291cmNlIGZpbGUgaW4gd2hpY2gKLXRoZXkncmUgdXNlZC4KLQotTG9jYWwgTW9k
aWZpY2F0aW9uczogTm9uZQotCi0KLUhvdyB0byB1cGRhdGUgcGxhdGZvcm0gY29uZmlndXJhdGlv
biBmaWxlczoKLVRoZSBnZW4vIGRpcmVjdG9yeSBjb250YWlucyBwcmUtZ2VuZXJhdGVkIGNvbmZp
Z3VyYXRpb24gaGVhZGVyIGZpbGVzLgotSGlzdG9yaWNhbGx5LCBhbGwgb3BlcmF0aW5nIHN5c3Rl
bXMgYW5kIGFyY2hpdGVjdHVyZXMgaGF2ZSBnZW5lcmF0ZWQKLXNpbWlsYXIgY29uZmlndXJhdGlv
bnMgZXhjZXB0IGZvciBXaW5kb3dzLiBUaGlzIGlzIHdoeSB0aGVyZSdzIG9ubHkKLXBvc2l4IGFu
ZCB3aW4gZGlyZWN0b3JpZXMgYmVsb3cgZ2VuLy4KLVdoZW4gcm9sbGluZyBnZmxhZ3MgdG8gYSBu
ZXdlciB2ZXJzaW9uLCBpdCdzIGEgZ29vZCBpZGVhIHRvIGNoZWNrIGlmCi1uZXcgY29uZmlndXJh
dGlvbiBmaWxlcyBuZWVkcyB0byBiZSBnZW5lcmF0ZWQgYXMgd2VsbC4KLURvIHRoaXMgYnkgcnVu
bmluZyBjbWFrZSBpbiB0aGUgbmV3bHkgY2hlY2tlZCBvdXQgdmVyc2lvbiBvZgotZ2ZsYWdzLiBU
aGVuIGRpZmYgdGhlIGdlbmVyYXRlZCBmaWxlcyB3aXRoIHRoZSBvbmVzIGJlbG93IGdlbi8uCi1J
ZiB5b3Ugbm90aWNlIGEgZGlmZiwgdXBkYXRlIHRoZSBmaWxlcyB3aXRoIHRoZSB1cGRhdGVkIG9u
ZXMuCi1JZiB5b3Ugc3VzcGVjdCBwbGF0Zm9ybSBkZXBlbmRlbmQgY2hhbmdlcyBvdGhlciB0aGFu
IFdpbmRvd3MsIHlvdSdsbAotaGF2ZSB0byBjaGVja291dCBnZmxhZ3Mgb24gdGhlIG90aGVyIHBs
YXRmb3JtcyBhcyB3ZWxsIGFuZCBydW4KLWNtYWtlIHRoZXJlIHRvby4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9w
b3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxh
Z3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiMzhmNWM4NjgyLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFncy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTczICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLS8vIC0tLQotLy8gUmV2YW1wZWQgYW5kIHJlb3JnYW5pemVkIGJ5IENyYWln
IFNpbHZlcnN0ZWluCi0vLwotLy8gVGhpcyBpcyB0aGUgZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNs
dWRlZCBieSBhbnkgZmlsZSB3aGljaCBkZWNsYXJlcwotLy8gb3IgZGVmaW5lcyBhIGNvbW1hbmQg
bGluZSBmbGFnIG9yIHdhbnRzIHRvIHBhcnNlIGNvbW1hbmQgbGluZSBmbGFncwotLy8gb3IgcHJp
bnQgYSBwcm9ncmFtIHVzYWdlIG1lc3NhZ2UgKHdoaWNoIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlv
biBhYm91dAotLy8gZmxhZ3MpLiAgRXhlY3V0aXZlIHN1bW1hcnksIGluIHRoZSBmb3JtIG9mIGFu
IGV4YW1wbGUgZm9vLmNjIGZpbGU6Ci0vLwotLy8gICAgI2luY2x1ZGUgImZvby5oIiAgICAgICAg
IC8vIGZvby5oIGhhcyBhIGxpbmUgIkRFQ0xBUkVfaW50MzIoc3RhcnQpOyIKLS8vICAgICNpbmNs
dWRlICJ2YWxpZGF0b3JzLmgiICAvLyBoeXBvdGhldGljYWwgZmlsZSBkZWZpbmluZyBWYWxpZGF0
ZUlzRmlsZSgpCi0vLwotLy8gICAgREVGSU5FX2ludDMyKGVuZCwgMTAwMCwgIlRoZSBsYXN0IHJl
Y29yZCB0byByZWFkIik7Ci0vLwotLy8gICAgREVGSU5FX3N0cmluZyhmaWxlbmFtZSwgIm15X2Zp
bGUudHh0IiwgIlRoZSBmaWxlIHRvIHJlYWQiKTsKLS8vICAgIC8vIENyYXNoIGlmIHRoZSBzcGVj
aWZpZWQgZmlsZSBkb2VzIG5vdCBleGlzdC4KLS8vICAgIHN0YXRpYyBib29sIGR1bW15ID0gUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU19maWxlbmFtZSwKLS8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZWYWxpZGF0ZUlzRmlsZSk7Ci0vLwotLy8gICAg
REVDTEFSRV9ib29sKHZlcmJvc2UpOyAvLyBzb21lIG90aGVyIGZpbGUgaGFzIGEgREVGSU5FX2Jv
b2wodmVyYm9zZSwgLi4uKQotLy8KLS8vICAgIHZvaWQgTXlGdW5jKCkgewotLy8gICAgICBpZiAo
RkxBR1NfdmVyYm9zZSkgcHJpbnRmKCJSZWNvcmRzICVkLSVkXG4iLCBGTEFHU19zdGFydCwgRkxB
R1NfZW5kKTsKLS8vICAgIH0KLS8vCi0vLyAgICBUaGVuLCBhdCB0aGUgY29tbWFuZC1saW5lOgot
Ly8gICAgICAgLi9mb28gLS1ub3ZlcmJvc2UgLS1zdGFydD01IC0tZW5kPTEwMAotLy8KLS8vIEZv
ciBtb3JlIGRldGFpbHMsIHNlZQotLy8gICAgZG9jL2dmbGFncy5odG1sCi0vLwotLy8gLS0tIEEg
bm90ZSBhYm91dCB0aHJlYWQtc2FmZXR5OgotLy8KLS8vIFdlIGRlc2NyaWJlIG1hbnkgZnVuY3Rp
b25zIGluIHRoaXMgcm91dGluZSBhcyBiZWluZyB0aHJlYWQtaG9zdGlsZSwKLS8vIHRocmVhZC1j
b21wYXRpYmxlLCBvciB0aHJlYWQtc2FmZS4gIEhlcmUgYXJlIHRoZSBtZWFuaW5ncyB3ZSB1c2U6
Ci0vLwotLy8gdGhyZWFkLXNhZmU6IGl0IGlzIHNhZmUgZm9yIG11bHRpcGxlIHRocmVhZHMgdG8g
Y2FsbCB0aGlzIHJvdXRpbmUKLS8vICAgKG9yLCB3aGVuIHJlZmVycmluZyB0byBhIGNsYXNzLCBt
ZXRob2RzIG9mIHRoaXMgY2xhc3MpCi0vLyAgIGNvbmN1cnJlbnRseS4KLS8vIHRocmVhZC1ob3N0
aWxlOiBpdCBpcyBub3Qgc2FmZSBmb3IgbXVsdGlwbGUgdGhyZWFkcyB0byBjYWxsIHRoaXMKLS8v
ICAgcm91dGluZSAob3IgbWV0aG9kcyBvZiB0aGlzIGNsYXNzKSBjb25jdXJyZW50bHkuICBJbiBn
ZmxhZ3MsCi0vLyAgIG1vc3QgdGhyZWFkLWhvc3RpbGUgcm91dGluZXMgYXJlIGludGVuZGVkIHRv
IGJlIGNhbGxlZCBlYXJseSBpbiwKLS8vICAgb3IgZXZlbiBiZWZvcmUsIG1haW4oKSAtLSB0aGF0
IGlzLCBiZWZvcmUgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLS8vIHRocmVhZC1jb21wYXRpYmxlOiBp
dCBpcyBzYWZlIGZvciBtdWx0aXBsZSB0aHJlYWRzIHRvIHJlYWQgZnJvbQotLy8gICB0aGlzIHZh
cmlhYmxlICh3aGVuIGFwcGxpZWQgdG8gdmFyaWFibGVzKSwgb3IgdG8gY2FsbCBjb25zdAotLy8g
ICBtZXRob2RzIG9mIHRoaXMgY2xhc3MgKHdoZW4gYXBwbGllZCB0byBjbGFzc2VzKSwgYXMgbG9u
ZyBhcyBubwotLy8gICBvdGhlciB0aHJlYWQgaXMgd3JpdGluZyB0byB0aGUgdmFyaWFibGUgb3Ig
Y2FsbGluZyBub24tY29uc3QKLS8vICAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgotCi0jaWZuZGVm
IEdGTEFHU19HRkxBR1NfSF8KLSNkZWZpbmUgR0ZMQUdTX0dGTEFHU19IXwotCi0jaW5jbHVkZSA8
c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImdmbGFnc19kZWNsYXJlLmgi
IC8vIElXWVUgcHJhZ21hOiBleHBvcnQKLQotCi0vLyBXZSBhbHdheXMgd2FudCB0byBleHBvcnQg
dmFyaWFibGVzIGRlZmluZWQgaW4gdXNlciBjb2RlCi0jaWZuZGVmIEdGTEFHU19ETExfREVGSU5F
X0ZMQUcKLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFRklORV9G
TEFHIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RM
TF9ERUZJTkVfRkxBRwotIyAgZW5kaWYKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBHRkxBR1NfTkFN
RVNQQUNFIHsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVG8gYWN0dWFsbHkgZGVmaW5lIGEgZmxh
ZyBpbiBhIGZpbGUsIHVzZSBERUZJTkVfYm9vbCwKLS8vIERFRklORV9zdHJpbmcsIGV0Yy4gYXQg
dGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUuICBZb3UgbWF5IGFsc28gZmluZAotLy8gaXQgdXNlZnVs
IHRvIHJlZ2lzdGVyIGEgdmFsaWRhdG9yIHdpdGggdGhlIGZsYWcuICBUaGlzIGVuc3VyZXMgdGhh
dAotLy8gd2hlbiB0aGUgZmxhZyBpcyBwYXJzZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUsIG9yIGlz
IGxhdGVyIHNldCB2aWEKLS8vIFNldENvbW1hbmRMaW5lT3B0aW9uLCB3ZSBjYWxsIHRoZSB2YWxp
ZGF0aW9uIGZ1bmN0aW9uLiBJdCBpcyBfbm90XwotLy8gY2FsbGVkIHdoZW4geW91IGFzc2lnbiB0
aGUgdmFsdWUgdG8gdGhlIGZsYWcgZGlyZWN0bHkgdXNpbmcgdGhlID0gb3BlcmF0b3IuCi0vLwot
Ly8gVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBmbGFn
IHZhbHVlIGlzIHZhbGlkLCBhbmQKLS8vIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIGZ1bmN0aW9u
IHJldHVybnMgZmFsc2UgZm9yIHRoZSBuZXcgc2V0dGluZyBvZiB0aGUKLS8vIGZsYWcsIHRoZSBm
bGFnIHdpbGwgcmV0YWluIGl0cyBjdXJyZW50IHZhbHVlLiBJZiBpdCByZXR1cm5zIGZhbHNlIGZv
ciB0aGUKLS8vIGRlZmF1bHQgdmFsdWUsIFBhcnNlQ29tbWFuZExpbmVGbGFncygpIHdpbGwgZGll
LgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gaXMgc2FmZSB0byBjYWxsIGF0IGdsb2JhbCBjb25zdHJ1
Y3QgdGltZSAoYXMgaW4gdGhlCi0vLyBleGFtcGxlIGJlbG93KS4KLS8vCi0vLyBFeGFtcGxlIHVz
ZToKLS8vICAgIHN0YXRpYyBib29sIFZhbGlkYXRlUG9ydChjb25zdCBjaGFyKiBmbGFnbmFtZSwg
aW50MzIgdmFsdWUpIHsKLS8vICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAzMjc2OCkg
ICAvLyB2YWx1ZSBpcyBvawotLy8gICAgICAgICByZXR1cm4gdHJ1ZTsKLS8vICAgICAgIHByaW50
ZigiSW52YWxpZCB2YWx1ZSBmb3IgLS0lczogJWRcbiIsIGZsYWduYW1lLCAoaW50KXZhbHVlKTsK
LS8vICAgICAgIHJldHVybiBmYWxzZTsKLS8vICAgIH0KLS8vICAgIERFRklORV9pbnQzMihwb3J0
LCAwLCAiV2hhdCBwb3J0IHRvIGxpc3RlbiBvbiIpOwotLy8gICAgc3RhdGljIGJvb2wgZHVtbXkg
PSBSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3BvcnQsICZWYWxpZGF0ZVBvcnQpOwotCi0v
LyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQsIGZhbHNlIGlmIG5vdCAo
YmVjYXVzZSB0aGUKLS8vIGZpcnN0IGFyZ3VtZW50IGRvZXNuJ3QgcG9pbnQgdG8gYSBjb21tYW5k
LWxpbmUgZmxhZywgb3IgYmVjYXVzZSBhCi0vLyB2YWxpZGF0b3IgaXMgYWxyZWFkeSByZWdpc3Rl
cmVkIGZvciB0aGlzIGZsYWcpLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVy
RmxhZ1ZhbGlkYXRvcihjb25zdCBib29sKiAgICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2Zu
KShjb25zdCBjaGFyKiwgYm9vbCkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lz
dGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBpbnQzMiogICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRl
X2ZuKShjb25zdCBjaGFyKiwgaW50MzIpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBS
ZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3QgaW50NjQqICAgICAgIGZsYWcsIGJvb2wgKCp2YWxp
ZGF0ZV9mbikoY29uc3QgY2hhciosIGludDY0KSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJv
b2wgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IHVpbnQ2NCogICAgICBmbGFnLCBib29sICgq
dmFsaWRhdGVfZm4pKGNvbnN0IGNoYXIqLCB1aW50NjQpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RF
Q0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3QgZG91YmxlKiAgICAgIGZsYWcsIGJv
b2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGRvdWJsZSkpOwotZXh0ZXJuIEdGTEFHU19E
TExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBzdGQ6OnN0cmluZyogZmxh
ZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgY29uc3Qgc3RkOjpzdHJpbmcmKSk7
Ci0KLS8vIENvbnZlbmllbmNlIG1hY3JvIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgZmxhZyB2
YWxpZGF0b3IKLSNkZWZpbmUgREVGSU5FX3ZhbGlkYXRvcihuYW1lLCB2YWxpZGF0b3IpIFwKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuYW1lIyNfdmFsaWRhdG9yX3JlZ2lzdGVyZWQgPSBcCi0gICAg
ICAgICAgICBHRkxBR1NfTkFNRVNQQUNFOjpSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTXyMj
bmFtZSwgdmFsaWRhdG9yKQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBUaGVzZSBtZXRob2RzIGFy
ZSB0aGUgYmVzdCB3YXkgdG8gZ2V0IGFjY2VzcyB0byBpbmZvIGFib3V0IHRoZQotLy8gbGlzdCBv
ZiBjb21tYW5kbGluZSBmbGFncy4gIE5vdGUgdGhhdCB0aGVzZSByb3V0aW5lcyBhcmUgcHJldHR5
IHNsb3cuCi0vLyAgIEdldEFsbEZsYWdzOiBtb3N0bHktY29tcGxldGUgaW5mbyBhYm91dCB0aGUg
bGlzdCwgc29ydGVkIGJ5IGZpbGUuCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnczogcHJldHR5LXBy
aW50cyB0aGUgbGlzdCB0byBzdGRvdXQgKHdoYXQgLS1oZWxwIGRvZXMpCi0vLyAgIFNob3dVc2Fn
ZVdpdGhGbGFnc1Jlc3RyaWN0OiBsaW1pdCB0byBmaWxlbmFtZXMgd2l0aCByZXN0cmljdCBhcyBh
IHN1YnN0cgotLy8KLS8vIEluIGFkZGl0aW9uIHRvIGFjY2Vzc2luZyBmbGFncywgeW91IGNhbiBh
bHNvIGFjY2VzcyBhcmd2WzBdICh0aGUgcHJvZ3JhbQotLy8gbmFtZSkgYW5kIGFyZ3YgKHRoZSBl
bnRpcmUgY29tbWFuZGxpbmUpLCB3aGljaCB3ZSBzb2NrIGF3YXkgYSBjb3B5IG9mLgotLy8gVGhl
c2UgdmFyaWFibGVzIGFyZSBzdGF0aWMsIHNvIHlvdSBzaG91bGQgb25seSBzZXQgdGhlbSBvbmNl
LgotLy8KLS8vIE5vIG5lZWQgdG8gZXhwb3J0IHRoaXMgZGF0YSBvbmx5IHN0cnVjdHVyZSBmcm9t
IERMTCwgYXZvaWRpbmcgVlMgd2FybmluZyA0MjUxLgotc3RydWN0IENvbW1hbmRMaW5lRmxhZ0lu
Zm8gewotICBzdGQ6OnN0cmluZyBuYW1lOyAgICAgICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBm
bGFnCi0gIHN0ZDo6c3RyaW5nIHR5cGU7ICAgICAgICAgICAgLy8gdGhlIHR5cGUgb2YgdGhlIGZs
YWc6IGludDMyLCBldGMKLSAgc3RkOjpzdHJpbmcgZGVzY3JpcHRpb247ICAgICAvLyB0aGUgImhl
bHAgdGV4dCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIGN1cnJlbnRf
dmFsdWU7ICAgLy8gdGhlIGN1cnJlbnQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5n
IGRlZmF1bHRfdmFsdWU7ICAgLy8gdGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0
ZDo6c3RyaW5nIGZpbGVuYW1lOyAgICAgICAgLy8gJ2NsZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5h
bWUgaG9sZGluZyB0aGUgZmxhZwotICBib29sIGhhc192YWxpZGF0b3JfZm47ICAgICAgIC8vIHRy
dWUgaWYgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yIGNhbGxlZCBvbiB0aGlzIGZsYWcKLSAgYm9vbCBp
c19kZWZhdWx0OyAgICAgICAgICAgICAvLyB0cnVlIGlmIHRoZSBmbGFnIGhhcyB0aGUgZGVmYXVs
dCB2YWx1ZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJl
ZW4gc2V0IGV4cGxpY2l0bHkgZnJvbSB0aGUgY21kbGluZQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG9yIHZpYSBTZXRDb21tYW5kTGluZU9wdGlvbgotICBjb25zdCB2b2lkKiBm
bGFnX3B0cjsgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlIChp
LmUuIEZMQUdTX2ZvbykKLX07Ci0KLS8vIFVzaW5nIHRoaXMgaW5zaWRlIG9mIGEgdmFsaWRhdG9y
IGlzIGEgcmVjaXBlIGZvciBhIGRlYWRsb2NrLgotLy8gVE9ETyh1c2VyKSBGaXggbG9ja2luZyB3
aGVuIHZhbGlkYXRvcnMgYXJlIHJ1bm5pbmcsIHRvIG1ha2UgaXQgc2FmZSB0bwotLy8gY2FsbCB2
YWxpZGF0b3JzIGR1cmluZyBQYXJzZUFsbEZsYWdzLgotLy8gQWxzbyBtYWtlIHN1cmUgdGhlbiB0
byB1bmNvbW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0IGluCi0vLyBnZmxhZ3NfdW5p
dHRlc3Quc2gKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBHZXRBbGxGbGFncyhzdGQ6OnZl
Y3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiogT1VUUFVUKTsKLS8vIFRoZXNlIHR3byBhcmUgYWN0
dWFsbHkgZGVmaW5lZCBpbiBnZmxhZ3NfcmVwb3J0aW5nLmNjLgotZXh0ZXJuIEdGTEFHU19ETExf
REVDTCB2b2lkIFNob3dVc2FnZVdpdGhGbGFncyhjb25zdCBjaGFyICphcmd2MCk7ICAvLyB3aGF0
IC0taGVscCBkb2VzCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2hvd1VzYWdlV2l0aEZs
YWdzUmVzdHJpY3QoY29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKnJlc3RyaWN0KTsKLQot
Ly8gQ3JlYXRlIGEgZGVzY3JpcHRpdmUgc3RyaW5nIGZvciBhIGZsYWcuCi0vLyBHb2VzIHRvIHNv
bWUgdHJvdWJsZSB0byBtYWtlIHByZXR0eSBsaW5lIGJyZWFrcy4KLWV4dGVybiBHRkxBR1NfRExM
X0RFQ0wgc3RkOjpzdHJpbmcgRGVzY3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0lu
Zm8mIGZsYWcpOwotCi0vLyBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9y
ZSBhbnkgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBT
ZXRBcmd2KGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJndik7Ci0KLS8vIFRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIGFyZSB0aHJlYWQtc2FmZSBhcyBsb25nIGFzIFNldEFyZ3YoKSBpcwotLy8gb25s
eSBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVD
TCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIEdldEFyZ3ZzKCk7Ci1leHRlcm4gR0ZM
QUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIEdldEFyZ3YoKTsgICAgICAgICAgICAgICAgICAgICAg
Ly8gYWxsIG9mIGFyZ3YgYXMgYSBzdHJpbmcKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3Qg
Y2hhciogR2V0QXJndjAoKTsgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGFyZ3YwCi1leHRl
cm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQzMiBHZXRBcmd2U3VtKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gc2ltcGxlIGNoZWNrc3VtIG9mIGFyZ3YKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
Y29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25OYW1lKCk7ICAgICAgICAvLyBhcmd2MCwgb3Ig
IlVOS05PV04iIGlmIG5vdCBzZXQKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciog
UHJvZ3JhbUludm9jYXRpb25TaG9ydE5hbWUoKTsgICAvLyBiYXNlbmFtZShhcmd2MCkKLQotLy8g
UHJvZ3JhbVVzYWdlKCkgaXMgdGhyZWFkLXNhZmUgYXMgbG9uZyBhcyBTZXRVc2FnZU1lc3NhZ2Uo
KSBpcyBvbmx5Ci0vLyBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdG
TEFHU19ETExfREVDTCBjb25zdCBjaGFyKiBQcm9ncmFtVXNhZ2UoKTsgICAgICAgICAgICAgICAg
IC8vIHN0cmluZyBzZXQgYnkgU2V0VXNhZ2VNZXNzYWdlKCkKLQotLy8gVmVyc2lvblN0cmluZygp
IGlzIHRocmVhZC1zYWZlIGFzIGxvbmcgYXMgU2V0VmVyc2lvblN0cmluZygpIGlzIG9ubHkKLS8v
IGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMgc3RhcnQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IGNvbnN0IGNoYXIqIFZlcnNpb25TdHJpbmcoKTsgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHNl
dCBieSBTZXRWZXJzaW9uU3RyaW5nKCkKLQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3JtYWxs
eSB5b3UgYWNjZXNzIGNvbW1hbmRsaW5lIGZsYWdzIGJ5IGp1c3Qgc2F5aW5nICJpZiAoRkxBR1Nf
Zm9vKSIKLS8vIG9yIHdoYXRldmVyLCBhbmQgc2V0IHRoZW0gYnkgY2FsbGluZyAiRkxBR1NfZm9v
ID0gYmFyIiAob3IsIG1vcmUKLS8vIGNvbW1vbmx5LCB2aWEgdGhlIERFRklORV9mb28gbWFjcm8p
LiAgQnV0IGlmIHlvdSBuZWVkIGEgYml0IG1vcmUKLS8vIGNvbnRyb2wsIHdlIGhhdmUgcHJvZ3Jh
bW1hdGljIHdheXMgdG8gZ2V0L3NldCB0aGUgZmxhZ3MgYXMgd2VsbC4KLS8vIFRoZXNlIHByb2dy
YW1tYXRpYyB3YXlzIHRvIGFjY2VzcyBmbGFncyBhcmUgdGhyZWFkLXNhZmUsIGJ1dCBkaXJlY3QK
LS8vIGFjY2VzcyBpcyBvbmx5IHRocmVhZC1jb21wYXRpYmxlLgotCi0vLyBSZXR1cm4gdHJ1ZSBp
ZmYgdGhlIGZsYWduYW1lIHdhcyBmb3VuZC4KLS8vIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcn
cyB2YWx1ZSwgb3IgdW5jaGFuZ2VkIGlmIHdlIHJldHVybiBmYWxzZS4KLWV4dGVybiBHRkxBR1Nf
RExMX0RFQ0wgYm9vbCBHZXRDb21tYW5kTGluZU9wdGlvbihjb25zdCBjaGFyKiBuYW1lLCBzdGQ6
OnN0cmluZyogT1VUUFVUKTsKLQotLy8gUmV0dXJuIHRydWUgaWZmIHRoZSBmbGFnbmFtZSB3YXMg
Zm91bmQuIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncwotLy8gQ29tbWFuZExpbmVGbGFnSW5m
byBvciB1bmNoYW5nZWQgaWYgd2UgcmV0dXJuIGZhbHNlLgotZXh0ZXJuIEdGTEFHU19ETExfREVD
TCBib29sIEdldENvbW1hbmRMaW5lRmxhZ0luZm8oY29uc3QgY2hhciogbmFtZSwgQ29tbWFuZExp
bmVGbGFnSW5mbyogT1VUUFVUKTsKLQotLy8gUmV0dXJuIHRoZSBDb21tYW5kTGluZUZsYWdJbmZv
IG9mIHRoZSBmbGFnbmFtZS4gIGV4aXQoKSBpZiBuYW1lIG5vdCBmb3VuZC4KLS8vIEV4YW1wbGUg
dXNhZ2UsIHRvIGNoZWNrIGlmIGEgZmxhZydzIHZhbHVlIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVs
dCB2YWx1ZToKLS8vICAgaWYgKEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgiZm9vIikuaXNf
ZGVmYXVsdCkgLi4uCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIENvbW1hbmRMaW5lRmxhZ0luZm8g
R2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKGNvbnN0IGNoYXIqIG5hbWUpOwotCi1lbnVtIEdG
TEFHU19ETExfREVDTCBGbGFnU2V0dGluZ01vZGUgewotICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2
YWx1ZSAoY2FuIGNhbGwgdGhpcyBtdWx0aXBsZSB0aW1lcykuCi0gIFNFVF9GTEFHU19WQUxVRSwK
LSAgLy8gdXBkYXRlIHRoZSBmbGFnJ3MgdmFsdWUsIGJ1dCAqb25seSBpZiogaXQgaGFzIG5vdCB5
ZXQgYmVlbiB1cGRhdGVkCi0gIC8vIHdpdGggU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxBR19JRl9E
RUZBVUxULCBvciAiRkxBR1NfeHh4ID0gbm9uZGVmIi4KLSAgU0VUX0ZMQUdfSUZfREVGQVVMVCwK
LSAgLy8gc2V0IHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSB0byB0aGlzLiAgSWYgdGhlIGZsYWcg
aGFzIG5vdCB5ZXQgdXBkYXRlZAotICAvLyB5ZXQgKHZpYSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9G
TEFHX0lGX0RFRkFVTFQsIG9yICJGTEFHU194eHggPSBub25kZWYiKQotICAvLyBjaGFuZ2UgdGhl
IGZsYWcncyBjdXJyZW50IHZhbHVlIHRvIHRoZSBuZXcgZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgot
ICBTRVRfRkxBR1NfREVGQVVMVAotfTsKLQotLy8gU2V0IGEgcGFydGljdWxhciBmbGFnICgiY29t
bWFuZCBsaW5lIG9wdGlvbiIpLiAgUmV0dXJucyBhIHN0cmluZwotLy8gZGVzY3JpYmluZyB0aGUg
bmV3IHZhbHVlIHRoYXQgdGhlIG9wdGlvbiBoYXMgYmVlbiBzZXQgdG8uICBUaGUKLS8vIHJldHVy
biB2YWx1ZSBBUEkgaXMgbm90IHdlbGwtc3BlY2lmaWVkLCBzbyBiYXNpY2FsbHkganVzdCBkZXBl
bmQgb24KLS8vIGl0IHRvIGJlIGVtcHR5IGlmIHRoZSBzZXR0aW5nIGZhaWxlZCBmb3Igc29tZSBy
ZWFzb24gLS0gdGhlIG5hbWUgaXMKLS8vIG5vdCBhIHZhbGlkIGZsYWcgbmFtZSwgb3IgdGhlIHZh
bHVlIGlzIG5vdCBhIHZhbGlkIHZhbHVlIC0tIGFuZAotLy8gbm9uLWVtcHR5IGVsc2UuCi0KLS8v
IFNldENvbW1hbmRMaW5lT3B0aW9uIHVzZXMgc2V0X21vZGUgPT0gU0VUX0ZMQUdTX1ZBTFVFICh0
aGUgY29tbW9uIGNhc2UpCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIFNldENv
bW1hbmRMaW5lT3B0aW9uICAgICAgICAoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFs
dWUpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBzdGQ6OnN0cmluZyBTZXRDb21tYW5kTGluZU9w
dGlvbldpdGhNb2RlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLCBGbGFnU2V0
dGluZ01vZGUgc2V0X21vZGUpOwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTYXZlcyB0aGUgc3Rh
dGVzICh2YWx1ZSwgZGVmYXVsdCB2YWx1ZSwgd2hldGhlciB0aGUgdXNlciBoYXMgc2V0Ci0vLyB0
aGUgZmxhZywgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzLCBldGMpIG9mIGFsbCBmbGFncywgYW5kIHJl
c3RvcmVzCi0vLyB0aGVtIHdoZW4gdGhlIEZsYWdTYXZlciBpcyBkZXN0cm95ZWQuICBUaGlzIGlz
IHZlcnkgdXNlZnVsIGluCi0vLyB0ZXN0cywgc2F5LCB3aGVuIHlvdSB3YW50IHRvIGxldCB5b3Vy
IHRlc3RzIGNoYW5nZSB0aGUgZmxhZ3MsIGJ1dAotLy8gbWFrZSBzdXJlIHRoYXQgdGhleSBnZXQg
cmV2ZXJ0ZWQgdG8gdGhlIG9yaWdpbmFsIHN0YXRlcyB3aGVuIHlvdXIKLS8vIHRlc3QgaXMgY29t
cGxldGUuCi0vLwotLy8gRXhhbXBsZSB1c2FnZToKLS8vICAgdm9pZCBUZXN0Rm9vKCkgewotLy8g
ICAgIEZsYWdTYXZlciBzMTsKLS8vICAgICBGTEFHX2ZvbyA9IGZhbHNlOwotLy8gICAgIEZMQUdf
YmFyID0gInNvbWUgdmFsdWUiOwotLy8KLS8vICAgICAvLyB0ZXN0IGhhcHBlbnMgaGVyZS4gIFlv
dSBjYW4gcmV0dXJuIGF0IGFueSB0aW1lCi0vLyAgICAgLy8gd2l0aG91dCB3b3JyeWluZyBhYm91
dCByZXN0b3JpbmcgdGhlIEZMQUcgdmFsdWVzLgotLy8gICB9Ci0vLwotLy8gTm90ZTogVGhpcyBj
bGFzcyBpcyBtYXJrZWQgd2l0aCBHRkxBR1NfQVRUUklCVVRFX1VOVVNFRCBiZWNhdXNlIGFsbAot
Ly8gdGhlIHdvcmsgaXMgZG9uZSBpbiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIHNv
IGluIHRoZSBzdGFuZGFyZAotLy8gdXNhZ2UgZXhhbXBsZSBhYm92ZSwgdGhlIGNvbXBpbGVyIHdv
dWxkIGNvbXBsYWluIHRoYXQgaXQncyBhbgotLy8gdW51c2VkIHZhcmlhYmxlLgotLy8KLS8vIFRo
aXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUuICBIb3dldmVyLCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMg
dG8KLS8vIGV4YWN0bHkgdGhlIHNldCBvZiBmbGFncyB0aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBk
dXJpbmcgaXRzCi0vLyBsaWZldGltZSwgc28gY29uY3VycmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8g
dGhvc2UgZmxhZ3MKLS8vIChpLmUuIEZMQUdTX2ZvbyBpbnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1h
bmRMaW5lT3B0aW9uKCkpIGlzIHVuc2FmZS4KLQotY2xhc3MgR0ZMQUdTX0RMTF9ERUNMIEZsYWdT
YXZlciB7Ci0gcHVibGljOgotICBGbGFnU2F2ZXIoKTsKLSAgfkZsYWdTYXZlcigpOwotCi0gcHJp
dmF0ZToKLSAgY2xhc3MgRmxhZ1NhdmVySW1wbCogaW1wbF87ICAgLy8gd2UgdXNlIHBpbXBsIGhl
cmUgdG8ga2VlcCBBUEkgc3RlYWR5Ci0KLSAgRmxhZ1NhdmVyKGNvbnN0IEZsYWdTYXZlciYpOyAg
Ly8gbm8gY29weWluZyEKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJik7Ci19X19h
dHRyaWJ1dGUoKHVudXNlZCkpOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU29tZSBkZXByZWNhdGVk
IG9yIGhvcGVmdWxseS1zb29uLXRvLWJlLWRlcHJlY2F0ZWQgZnVuY3Rpb25zLgotCi0vLyBUaGlz
IGlzIG9mdGVuIHVzZWQgZm9yIGxvZ2dpbmcuICBUT0RPKGNzaWx2ZXJzKTogZmlndXJlIG91dCBh
IGJldHRlciB3YXkKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgQ29tbWFuZGxp
bmVGbGFnc0ludG9TdHJpbmcoKTsKLS8vIFVzdWFsbHkgd2hlcmUgdGhpcyBpcyB1c2VkLCBhIEZs
YWdTYXZlciBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTAot
Ym9vbCBSZWFkRmxhZ3NGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBmbGFnZmlsZWNvbnRl
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByb2dfbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGVycm9yc19hcmVfZmF0YWwpOyAgLy8gdXNlcyBT
RVRfRkxBR1NfVkFMVUUKLQotLy8gVGhlc2UgbGV0IHlvdSBtYW51YWxseSBpbXBsZW1lbnQgLS1m
bGFnZmlsZSBmdW5jdGlvbmFsaXR5LgotLy8gREVQUkVDQVRFRC4KLWV4dGVybiBHRkxBR1NfRExM
X0RFQ0wgYm9vbCBBcHBlbmRGbGFnc0ludG9GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgY2hhciogcHJvZ19uYW1lKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBS
ZWFkRnJvbUZsYWdzRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNoYXIq
IHByb2dfbmFtZSwgYm9vbCBlcnJvcnNfYXJlX2ZhdGFsKTsgICAvLyB1c2VzIFNFVF9GTEFHU19W
QUxVRQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBVc2VmdWwgcm91dGluZXMgZm9yIGluaXRpYWxp
emluZyBmbGFncyBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLS8vIEluIGVhY2ggY2FzZSwgaWYgJ3Zh
cm5hbWUnIGRvZXMgbm90IGV4aXN0IGluIHRoZSBlbnZpcm9ubWVudAotLy8gcmV0dXJuIGRlZnZh
bC4gIElmICd2YXJuYW1lJyBkb2VzIGV4aXN0IGJ1dCBpcyBub3QgdmFsaWQKLS8vIChlLmcuLCBu
b3QgYSBudW1iZXIgZm9yIGFuIGludDMyIGZsYWcpLCBhYm9ydCB3aXRoIGFuIGVycm9yLgotLy8g
T3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlLiAgTk9URTogZm9yIGJvb2xlYW5zLCBmb3IgdHJ1
ZSB1c2UKLS8vICd0JyBvciAnVCcgb3IgJ3RydWUnIG9yICcxJywgZm9yIGZhbHNlICdmJyBvciAn
Ricgb3IgJ2ZhbHNlJyBvciAnMCcuCi0KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBCb29s
RnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBib29sIGRlZnZhbCk7Ci1leHRlcm4gR0ZMQUdT
X0RMTF9ERUNMIGludDMyIEludDMyRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBpbnQzMiBk
ZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBpbnQ2NCBJbnQ2NEZyb21FbnYoY29uc3Qg
Y2hhciAqdmFybmFtZSwgaW50NjQgZGVmdmFsKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWlu
dDY0IFVpbnQ2NEZyb21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgdWludDY0IGRlZnZhbCk7Ci1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGRvdWJsZSBEb3VibGVGcm9tRW52KGNvbnN0IGNoYXIgKnZh
cm5hbWUsIGRvdWJsZSBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFy
ICpTdHJpbmdGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIGNvbnN0IGNoYXIgKmRlZnZhbCk7
Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRoZSBuZXh0IHR3byBmdW5jdGlvbnMgcGFyc2UgZ2Zs
YWdzIGZyb20gbWFpbigpOgotCi0vLyBTZXQgdGhlICJ1c2FnZSIgbWVzc2FnZSBmb3IgdGhpcyBw
cm9ncmFtLiAgRm9yIGV4YW1wbGU6Ci0vLyAgIHN0cmluZyB1c2FnZSgiVGhpcyBwcm9ncmFtIGRv
ZXMgbm90aGluZy4gIFNhbXBsZSB1c2FnZTpcbiIpOwotLy8gICB1c2FnZSArPSBhcmd2WzBdICsg
IiA8dXNlbGVzc2FyZzE+IDx1c2VsZXNzYXJnMj4iOwotLy8gICBTZXRVc2FnZU1lc3NhZ2UodXNh
Z2UpOwotLy8gRG8gbm90IGluY2x1ZGUgY29tbWFuZGxpbmUgZmxhZ3MgaW4gdGhlIHVzYWdlOiB3
ZSBkbyB0aGF0IGZvciB5b3UhCi0vLyBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVk
IGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
dm9pZCBTZXRVc2FnZU1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIHVzYWdlKTsKLQotLy8gU2V0
cyB0aGUgdmVyc2lvbiBzdHJpbmcsIHdoaWNoIGlzIGVtaXR0ZWQgd2l0aCAtLXZlcnNpb24uCi0v
LyBGb3IgaW5zdGFuY2U6IFNldFZlcnNpb25TdHJpbmcoIjEuMyIpOwotLy8gVGhyZWFkLWhvc3Rp
bGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQuCi1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2V0VmVyc2lvblN0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgdmVyc2lvbik7Ci0KLQotLy8gTG9va3MgZm9yIGZsYWdzIGluIGFyZ3YgYW5kIHBhcnNl
cyB0aGVtLiAgUmVhcnJhbmdlcyBhcmd2IHRvIHB1dAotLy8gZmxhZ3MgZmlyc3QsIG9yIHJlbW92
ZXMgdGhlbSBlbnRpcmVseSBpZiByZW1vdmVfZmxhZ3MgaXMgdHJ1ZS4KLS8vIElmIGEgZmxhZyBp
cyBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgZmxhZwotLy8g
ZmlsZSwgdGhlIGxhc3QgZGVmaW5pdGlvbiBpcyB1c2VkLiAgUmV0dXJucyB0aGUgaW5kZXggKGlu
dG8gYXJndikKLS8vIG9mIHRoZSBmaXJzdCBub24tZmxhZyBhcmd1bWVudC4KLS8vIFNlZSB0b3At
b2YtZmlsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMgZnVuY3Rpb24uCi0jaWZuZGVmIFNXSUcg
ICAvLyBJbiBzd2lnLCB1c2UgUGFyc2VDb21tYW5kTGluZUZsYWdzU2NyaXB0KCkgaW5zdGVhZC4K
LWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWludDMyIFBhcnNlQ29tbWFuZExpbmVGbGFncyhpbnQg
KmFyZ2MsIGNoYXIqKiogYXJndiwgYm9vbCByZW1vdmVfZmxhZ3MpOwotI2VuZGlmCi0KLQotLy8g
Q2FsbHMgdG8gUGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncyBhbmQgdGhlbiB0bwotLy8gSGFu
ZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIGNhbGwgdG8K
LS8vIFBhcnNlQ29tbWFuZExpbmVGbGFncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGluIG9yZGVy
IHRvIGFsbG93IGZvcgotLy8gY2hhbmdpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHNvbWUgRkxBR1Mg
KHZpYQotLy8gZS5nLiBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlIGNhbGxzKSBiZXR3ZWVu
IHRoZSB0aW1lIG9mCi0vLyBjb21tYW5kIGxpbmUgcGFyc2luZyBhbmQgdGhlIHRpbWUgb2YgZHVt
cGluZyBoZWxwIGluZm9ybWF0aW9uIGZvcgotLy8gdGhlIGZsYWdzIGFzIGEgcmVzdWx0IG9mIGNv
bW1hbmQgbGluZSBwYXJzaW5nLiAgSWYgYSBmbGFnIGlzCi0vLyBkZWZpbmVkIG1vcmUgdGhhbiBv
bmNlIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgZmxhZyBmaWxlLCB0aGUgbGFzdAotLy8gZGVmaW5p
dGlvbiBpcyB1c2VkLiAgUmV0dXJucyB0aGUgaW5kZXggKGludG8gYXJndikgb2YgdGhlIGZpcnN0
Ci0vLyBub24tZmxhZyBhcmd1bWVudC4gIChJZiByZW1vdmVfZmxhZ3MgaXMgdHJ1ZSwgd2lsbCBh
bHdheXMgcmV0dXJuIDEuKQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB1aW50MzIgUGFyc2VDb21t
YW5kTGluZU5vbkhlbHBGbGFncyhpbnQgKmFyZ2MsIGNoYXIqKiogYXJndiwgYm9vbCByZW1vdmVf
ZmxhZ3MpOwotCi0vLyBUaGlzIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gZ2ZsYWdzX3JlcG9ydGlu
Zy5jYy4KLS8vIFRoaXMgZnVuY3Rpb24gaXMgbWlzbmFtZWQgKGl0IGFsc28gaGFuZGxlcyAtLXZl
cnNpb24sIGV0Yy4pLCBidXQKLS8vIGl0J3MgdG9vIGxhdGUgdG8gY2hhbmdlIHRoYXQgbm93LiA6
LSgKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFn
cygpOyAgIC8vIGluIGdmbGFnc19yZXBvcnRpbmcuY2MKLQotLy8gQWxsb3cgY29tbWFuZCBsaW5l
IHJlcGFyc2luZy4gIERpc2FibGVzIHRoZSBlcnJvciBub3JtYWxseQotLy8gZ2VuZXJhdGVkIHdo
ZW4gYW4gdW5rbm93biBmbGFnIGlzIGZvdW5kLCBzaW5jZSBpdCBtYXkgYmUgZm91bmQgaW4gYQot
Ly8gbGF0ZXIgcGFyc2UuICBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9y
ZSBhbnkgdGhyZWFkcwotLy8gYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZv
aWQgQWxsb3dDb21tYW5kTGluZVJlcGFyc2luZygpOwotCi0vLyBSZXBhcnNlIHRoZSBmbGFncyB0
aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlY29nbml6ZWQuICBPbmx5IGZsYWdzCi0vLyByZWdpc3Rl
cmVkIHNpbmNlIHRoZSBsYXN0IHBhcnNlIHdpbGwgYmUgcmVjb2duaXplZC4gIEFueSBmbGFnIHZh
bHVlCi0vLyBtdXN0IGJlIHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50IHVzaW5nICI9
Iiwgbm90IGFzIGEKLS8vIHNlcGFyYXRlIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0aGF0IGZvbGxv
d3MgdGhlIGZsYWcgYXJndW1lbnQuCi0vLyBJbnRlbmRlZCBmb3IgaGFuZGxpbmcgZmxhZ3MgZnJv
bSBkeW5hbWljYWxseSBsb2FkZWQgbGlicmFyaWVzLAotLy8gc2luY2UgdGhlaXIgZmxhZ3MgYXJl
IG5vdCByZWdpc3RlcmVkIHVudGlsIHRoZXkgYXJlIGxvYWRlZC4KLWV4dGVybiBHRkxBR1NfRExM
X0RFQ0wgdm9pZCBSZXBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoKTsKLQotLy8gQ2xlYW4g
dXAgbWVtb3J5IGFsbG9jYXRlZCBieSBmbGFncy4gIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gcmVk
dWNlCi0vLyB0aGUgcXVhbnRpdHkgb2YgInBvdGVudGlhbGx5IGxlYWtlZCIgcmVwb3J0cyBlbWl0
dGVkIGJ5IG1lbW9yeQotLy8gZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgdmFsZ3JpbmQuICBJdCBp
cyBub3QgcmVxdWlyZWQgZm9yIG5vcm1hbAotLy8gb3BlcmF0aW9uLCBvciBmb3IgdGhlIGdvb2ds
ZSBwZXJmdG9vbHMgaGVhcC1jaGVja2VyLiAgSXQgbXVzdCBvbmx5Ci0vLyBiZSBjYWxsZWQgd2hl
biB0aGUgcHJvY2VzcyBpcyBhYm91dCB0byBleGl0LCBhbmQgYWxsIHRocmVhZHMgdGhhdAotLy8g
bWlnaHQgYWNjZXNzIGZsYWdzIGFyZSBxdWllc2NlbnQuICBSZWZlcmVuY2luZyBmbGFncyBhZnRl
ciB0aGlzIGlzCi0vLyBjYWxsZWQgd2lsbCBoYXZlIHVuZXhwZWN0ZWQgY29uc2VxdWVuY2VzLiAg
VGhpcyBpcyBub3Qgc2FmZSB0byBydW4KLS8vIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBtaWdodCBi
ZSBydW5uaW5nOiB0aGUgZnVuY3Rpb24gaXMKLS8vIHRocmVhZC1ob3N0aWxlLgotZXh0ZXJuIEdG
TEFHU19ETExfREVDTCB2b2lkIFNodXREb3duQ29tbWFuZExpbmVGbGFncygpOwotCi0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBOb3cgY29tZSB0aGUgY29tbWFuZCBsaW5lIGZsYWcgZGVjbGFyYXRpb24v
ZGVmaW5pdGlvbiBtYWNyb3MgdGhhdAotLy8gd2lsbCBhY3R1YWxseSBiZSB1c2VkLiAgVGhleSdy
ZSBraW5kIG9mIGhhaXJ5LiAgQSBtYWpvciByZWFzb24KLS8vIGZvciB0aGlzIGlzIGluaXRpYWxp
emF0aW9uOiB3ZSB3YW50IHBlb3BsZSB0byBiZSBhYmxlIHRvIGFjY2VzcwotLy8gdmFyaWFibGVz
IGluIGdsb2JhbCBjb25zdHJ1Y3RvcnMgYW5kIGhhdmUgdGhhdCBub3QgY3Jhc2gsIGV2ZW4gaWYK
LS8vIHRoZWlyIGdsb2JhbCBjb25zdHJ1Y3RvciBydW5zIGJlZm9yZSB0aGUgZ2xvYmFsIGNvbnN0
cnVjdG9yIGhlcmUuCi0vLyAoT2J2aW91c2x5LCB3ZSBjYW4ndCBndWFyYW50ZWUgdGhlIGZsYWdz
IHdpbGwgaGF2ZSB0aGUgY29ycmVjdAotLy8gZGVmYXVsdCB2YWx1ZSBpbiB0aGF0IGNhc2UsIGJ1
dCBhdCBsZWFzdCBhY2Nlc3NpbmcgdGhlbSBpcyBzYWZlLikKLS8vIFRoZSBvbmx5IHdheSB0byBk
byB0aGF0IGlzIGhhdmUgZmxhZ3MgcG9pbnQgdG8gYSBzdGF0aWMgYnVmZmVyLgotLy8gU28gd2Ug
bWFrZSBvbmUsIHVzaW5nIGEgdW5pb24gdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQsIGFuZAot
Ly8gdGhlbiB1c2UgcGxhY2VtZW50LW5ldyB0byBhY3R1YWxseSBzZXQgdXAgdGhlIGZsYWcgd2l0
aCB0aGUKLS8vIGNvcnJlY3QgZGVmYXVsdCB2YWx1ZS4gIEluIHRoZSBzYW1lIHZlaW4sIHdlIGhh
dmUgdG8gd29ycnkgYWJvdXQKLS8vIGZsYWcgYWNjZXNzIGluIGdsb2JhbCBkZXN0cnVjdG9ycywg
c28gRmxhZ1JlZ2lzdGVyZXIgaGFzIHRvIGJlCi0vLyBjYXJlZnVsIG5ldmVyIHRvIGRlc3Ryb3kg
dGhlIGZsYWctdmFsdWVzIGl0IGNvbnN0cnVjdHMuCi0vLwotLy8gTm90ZSB0aGF0IHdoZW4gd2Ug
ZGVmaW5lIGEgZmxhZyB2YXJpYWJsZSBGTEFHU188bmFtZT4sIHdlIGFsc28KLS8vIHByZWVtcHRp
dmVseSBkZWZpbmUgYSBqdW5rIHZhcmlhYmxlLCBGTEFHU19ubzxuYW1lPi4gIFRoaXMgaXMgdG8K
LS8vIGNhdXNlIGEgbGluay10aW1lIGVycm9yIGlmIHNvbWVvbmUgdHJpZXMgdG8gZGVmaW5lIDIg
ZmxhZ3Mgd2l0aAotLy8gbmFtZXMgbGlrZSAibG9nZ2luZyIgYW5kICJub2xvZ2dpbmciLiAgV2Ug
ZG8gdGhpcyBiZWNhdXNlIGEgYm9vbAotLy8gZmxhZyBGTEFHIGNhbiBiZSBzZXQgZnJvbSB0aGUg
Y29tbWFuZCBsaW5lIHRvIHRydWUgd2l0aCBhICItRkxBRyIKLS8vIGFyZ3VtZW50LCBhbmQgdG8g
ZmFsc2Ugd2l0aCBhICItbm9GTEFHIiBhcmd1bWVudCwgYW5kIHNvIHRoaXMgY2FuCi0vLyBwb3Rl
bnRpYWxseSBhdmVydCBjb25mdXNpb24uCi0vLwotLy8gV2UgYWxzbyBwdXQgZmxhZ3MgaW50byB0
aGVpciBvd24gbmFtZXNwYWNlLiAgSXQgaXMgcHVycG9zZWZ1bGx5Ci0vLyBuYW1lZCBpbiBhbiBv
cGFxdWUgd2F5IHRoYXQgcGVvcGxlIHNob3VsZCBoYXZlIHRyb3VibGUgdHlwaW5nCi0vLyBkaXJl
Y3RseS4gIFRoZSBpZGVhIGlzIHRoYXQgREVGSU5FIHB1dHMgdGhlIGZsYWcgaW4gdGhlIHdlaXJk
Ci0vLyBuYW1lc3BhY2UsIGFuZCBERUNMQVJFIGltcG9ydHMgdGhlIGZsYWcgZnJvbSB0aGVyZSBp
bnRvIHRoZSBjdXJyZW50Ci0vLyBuYW1lc3BhY2UuICBUaGUgbmV0IHJlc3VsdCBpcyB0byBmb3Jj
ZSBwZW9wbGUgdG8gdXNlIERFQ0xBUkUgdG8gZ2V0Ci0vLyBhY2Nlc3MgdG8gYSBmbGFnLCByYXRo
ZXIgdGhhbiBzYXlpbmcgImV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBGTEFHU193aGF0ZXZl
cjsiCi0vLyBvciBzb21lIHN1Y2ggaW5zdGVhZC4gIFdlIHdhbnQgdGhpcyBzbyB3ZSBjYW4gcHV0
IGV4dHJhCi0vLyBmdW5jdGlvbmFsaXR5IChsaWtlIHNhbml0eS1jaGVja2luZykgaW4gREVDTEFS
RSBpZiB3ZSB3YW50LCBhbmQKLS8vIG1ha2Ugc3VyZSBpdCBpcyBwaWNrZWQgdXAgZXZlcnl3aGVy
ZS4KLS8vCi0vLyBXZSBhbHNvIHB1dCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gdGhlIG5h
bWVzcGFjZSwgc28gdGhhdAotLy8gcGVvcGxlIGNhbid0IERFQ0xBUkVfaW50MzIgc29tZXRoaW5n
IHRoYXQgdGhleSBERUZJTkVfYm9vbCdkCi0vLyBlbHNld2hlcmUuCi0KLWNsYXNzIEdGTEFHU19E
TExfREVDTCBGbGFnUmVnaXN0ZXJlciB7Ci0gcHVibGljOgotICBGbGFnUmVnaXN0ZXJlcihjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0eXBlLAotICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBoZWxwLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgdm9pZCog
Y3VycmVudF9zdG9yYWdlLCB2b2lkKiBkZWZ2YWx1ZV9zdG9yYWdlKTsKLX07Ci0KLS8vIElmIHlv
dXIgYXBwbGljYXRpb24gI2RlZmluZXMgU1RSSVBfRkxBR19IRUxQIHRvIGEgbm9uLXplcm8gdmFs
dWUKLS8vIGJlZm9yZSAjaW5jbHVkaW5nIHRoaXMgZmlsZSwgd2UgcmVtb3ZlIHRoZSBoZWxwIG1l
c3NhZ2UgZnJvbSB0aGUKLS8vIGJpbmFyeSBmaWxlLiBUaGlzIGNhbiByZWR1Y2UgdGhlIHNpemUg
b2YgdGhlIHJlc3VsdGluZyBiaW5hcnkKLS8vIHNvbWV3aGF0LCBhbmQgbWF5IGFsc28gYmUgdXNl
ZnVsIGZvciBzZWN1cml0eSByZWFzb25zLgotCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0
IGNoYXIga1N0cmlwcGVkRmxhZ0hlbHBbXTsKLQotCi19IC8vIG5hbWVzcGFjZSBHRkxBR1NfTkFN
RVNQQUNFCi0KLQotI2lmbmRlZiBTV0lHICAvLyBJbiBzd2lnLCBpZ25vcmUgdGhlIG1haW4gZmxh
ZyBkZWNsYXJhdGlvbnMKLQotI2lmIGRlZmluZWQoU1RSSVBfRkxBR19IRUxQKSAmJiBTVFJJUF9G
TEFHX0hFTFAgPiAwCi0vLyBOZWVkIHRoaXMgY29uc3RydWN0IHRvIGF2b2lkIHRoZSAnZGVmaW5l
ZCBidXQgbm90IHVzZWQnIHdhcm5pbmcuCi0jZGVmaW5lIE1BWUJFX1NUUklQUEVEX0hFTFAodHh0
KSBcCi0gICAoZmFsc2UgPyAodHh0KSA6IEdGTEFHU19OQU1FU1BBQ0U6OmtTdHJpcHBlZEZsYWdI
ZWxwKQotI2Vsc2UKLSNkZWZpbmUgTUFZQkVfU1RSSVBQRURfSEVMUCh0eHQpIHR4dAotI2VuZGlm
Ci0KLS8vIEVhY2ggY29tbWFuZC1saW5lIGZsYWcgaGFzIHR3byB2YXJpYWJsZXMgYXNzb2NpYXRl
ZCB3aXRoIGl0OiBvbmUKLS8vIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCBvbmUgd2l0aCB0
aGUgZGVmYXVsdCB2YWx1ZS4gIEhvd2V2ZXIsCi0vLyB3ZSBoYXZlIGEgdGhpcmQgdmFyaWFibGUs
IHdoaWNoIGlzIHdoZXJlIHZhbHVlIGlzIGFzc2lnbmVkOyBpdCdzIGEKLS8vIGNvbnN0YW50LiAg
VGhpcyBndWFyYW50ZWVzIHRoYXQgRkxBR18jI3ZhbHVlIGlzIGluaXRpYWxpemVkIGF0Ci0vLyBz
dGF0aWMgaW5pdGlhbGl6YXRpb24gdGltZSAoZS5nLiBiZWZvcmUgcHJvZ3JhbS1zdGFydCkgcmF0
aGVyIHRoYW4KLS8vIHRoYW4gZ2xvYmFsIGNvbnN0cnVjdGlvbiB0aW1lICh3aGljaCBpcyBhZnRl
ciBwcm9ncmFtLXN0YXJ0IGJ1dAotLy8gYmVmb3JlIG1haW4pLCBhdCBsZWFzdCB3aGVuICd2YWx1
ZScgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuICBXZQotLy8gdXNlIGEgc21hbGwgdHJpY2sg
Zm9yIHRoZSAiZGVmYXVsdCB2YWx1ZSIgdmFyaWFibGUsIGFuZCBjYWxsIGl0Ci0vLyBGTEFHU19u
bzxuYW1lPi4gIFRoaXMgc2VydmVzIHRoZSBzZWNvbmQgcHVycG9zZSBvZiBhc3N1cmluZyBhCi0v
LyBjb21waWxlIGVycm9yIGlmIHNvbWVvbmUgdHJpZXMgdG8gZGVmaW5lIGEgZmxhZyBuYW1lZCBu
bzxuYW1lPgotLy8gd2hpY2ggaXMgaWxsZWdhbCAoLS1mb28gYW5kIC0tbm9mb28gYm90aCBhZmZl
Y3QgdGhlICJmb28iIGZsYWcpLgotI2RlZmluZSBERUZJTkVfVkFSSUFCTEUodHlwZSwgc2hvcnR0
eXBlLCBuYW1lLCB2YWx1ZSwgaGVscCkgICAgICAgICAgICAgXAotICBuYW1lc3BhY2UgZkwjI3No
b3J0dHlwZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHN0YXRpYyBjb25zdCB0eXBlIEZMQUdTX25vbm8jI25hbWUgPSB2YWx1ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIC8qIFdlIGFsd2F5cyB3YW50IHRvIGV4cG9ydCBkZWZpbmVk
IHZhcmlhYmxlcywgZGxsIG9yIG5vICovICAgICAgICAgXAotICAgIEdGTEFHU19ETExfREVGSU5F
X0ZMQUcgdHlwZSBGTEFHU18jI25hbWUgPSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgXAotICAg
IHR5cGUgRkxBR1Nfbm8jI25hbWUgPSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHN0YXRpYyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJl
ciBvXyMjbmFtZSggICAgICAgICAgICAgICAgICAgXAotICAgICAgI25hbWUsICN0eXBlLCBNQVlC
RV9TVFJJUFBFRF9IRUxQKGhlbHApLCBfX0ZJTEVfXywgICAgICAgICAgICAgICAgXAotICAgICAg
JkZMQUdTXyMjbmFtZSwgJkZMQUdTX25vIyNuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB1c2luZyBmTCMjc2hvcnR0eXBlOjpGTEFH
U18jI25hbWUKLQotLy8gRm9yIERFRklORV9ib29sLCB3ZSB3YW50IHRvIGRvIHRoZSBleHRyYSBj
aGVjayB0aGF0IHRoZSBwYXNzZWQtaW4KLS8vIHZhbHVlIGlzIGFjdHVhbGx5IGEgYm9vbCwgYW5k
IG5vdCBhIHN0cmluZyBvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUKLS8vIGNvZXJjZWQgdG8gYSBi
b29sLiAgVGhlc2UgZGVjbGFyYXRpb25zIChubyBkZWZpbml0aW9uIG5lZWRlZCEpIHdpbGwKLS8v
IGhlbHAgdXMgZG8gdGhhdCwgYW5kIG5ldmVyIGV2YWx1YXRlIEZyb20sIHdoaWNoIGlzIGltcG9y
dGFudC4KLS8vIFdlJ2xsIHVzZSAnc2l6ZW9mKElzQm9vbCh2YWwpKScgdG8gZGlzdGluZ3Vpc2gu
IFRoaXMgY29kZSByZXF1aXJlcwotLy8gdGhhdCB0aGUgY29tcGlsZXIgaGF2ZSBkaWZmZXJlbnQg
c2l6ZXMgZm9yIGJvb2wgJiBkb3VibGUuIFNpbmNlCi0vLyB0aGlzIGlzIG5vdCBndWFyYW50ZWVk
IGJ5IHRoZSBzdGFuZGFyZCwgd2UgY2hlY2sgaXQgd2l0aCBhCi0vLyBDT01QSUxFX0FTU0VSVC4K
LW5hbWVzcGFjZSBmTEIgewotc3RydWN0IENvbXBpbGVBc3NlcnQge307Ci10eXBlZGVmIENvbXBp
bGVBc3NlcnQgZXhwZWN0ZWRfc2l6ZW9mX2RvdWJsZV9uZXFfc2l6ZW9mX2Jvb2xbCi0gICAgICAg
ICAgICAgICAgICAgICAgKHNpemVvZihkb3VibGUpICE9IHNpemVvZihib29sKSkgPyAxIDogLTFd
OwotdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gZG91YmxlIEdGTEFHU19ETExfREVDTCBJc0Jvb2xG
bGFnKGNvbnN0IEZyb20mIGZyb20pOwotR0ZMQUdTX0RMTF9ERUNMIGJvb2wgSXNCb29sRmxhZyhi
b29sIGZyb20pOwotfSAgLy8gbmFtZXNwYWNlIGZMQgotCi0vLyBIZXJlIGFyZSB0aGUgYWN0dWFs
IERFRklORV8qLW1hY3Jvcy4gVGhlIHJlc3BlY3RpdmUgREVDTEFSRV8qLW1hY3JvcwotLy8gYXJl
IGluIGEgc2VwYXJhdGUgaW5jbHVkZSwgZ2ZsYWdzX2RlY2xhcmUuaCwgZm9yIHJlZHVjaW5nCi0v
LyB0aGUgcGh5c2ljYWwgdHJhbnNpdGl2ZSBzaXplIGZvciBERUNMQVJFIHVzZS4KLSNkZWZpbmUg
REVGSU5FX2Jvb2wobmFtZSwgdmFsLCB0eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgbmFtZXNwYWNlIGZMQiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIDo6ZkxCOjpDb21waWxlQXNz
ZXJ0IEZMQUdfIyNuYW1lIyNfdmFsdWVfaXNfbm90X2FfYm9vbFsgICAgIFwKLSAgICAgICAgICAg
IChzaXplb2YoOjpmTEI6OklzQm9vbEZsYWcodmFsKSkgIT0gc2l6ZW9mKGRvdWJsZSkpPyAxOiAt
MV07IFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgREVGSU5FX1ZBUklBQkxFKGJvb2wsIEIsIG5hbWUs
IHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV9pbnQzMihuYW1lLCB2YWwsIHR4dCkgXAotICAg
REVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OmludDMyLCBJLCBcCi0gICAgICAgICAg
ICAgICAgICAgbmFtZSwgdmFsLCB0eHQpCi0KLSNkZWZpbmUgREVGSU5FX2ludDY0KG5hbWUsIHZh
bCwgdHh0KSBcCi0gICBERUZJTkVfVkFSSUFCTEUoR0ZMQUdTX05BTUVTUEFDRTo6aW50NjQsIEk2
NCwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklO
RV91aW50NjQobmFtZSx2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1F
U1BBQ0U6OnVpbnQ2NCwgVTY0LCBcCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsLCB0eHQp
Ci0KLSNkZWZpbmUgREVGSU5FX2RvdWJsZShuYW1lLCB2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZB
UklBQkxFKGRvdWJsZSwgRCwgbmFtZSwgdmFsLCB0eHQpCi0KLS8vIFN0cmluZ3MgYXJlIHRyaWNr
aWVyLCBiZWNhdXNlIHRoZXkncmUgbm90IGEgUE9ELCBzbyB3ZSBjYW4ndAotLy8gY29uc3RydWN0
IHRoZW0gYXQgc3RhdGljLWluaXRpYWxpemF0aW9uIHRpbWUgKGluc3RlYWQgdGhleSBnZXQKLS8v
IGNvbnN0cnVjdGVkIGF0IGdsb2JhbC1jb25zdHJ1Y3RvciB0aW1lLCB3aGljaCBpcyBtdWNoIGxh
dGVyKS4gIFRvCi0vLyB0cnkgdG8gYXZvaWQgY3Jhc2hlcyBpbiB0aGF0IGNhc2UsIHdlIHVzZSBh
IGNoYXIgYnVmZmVyIHRvIHN0b3JlCi0vLyB0aGUgc3RyaW5nLCB3aGljaCB3ZSBjYW4gc3RhdGlj
LWluaXRpYWxpemUsIGFuZCB0aGVuIHBsYWNlbWVudC1uZXcKLS8vIGludG8gaXQgbGF0ZXIuICBJ
dCdzIG5vdCBwZXJmZWN0LCBidXQgdGhlIGJlc3Qgd2UgY2FuIGRvLgotCi1uYW1lc3BhY2UgZkxT
IHsKLQotaW5saW5lIGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0
cmluZ3Nwb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqdmFsdWUpIHsKLSAgcmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0cmluZyh2YWx1
ZSk7Ci19Ci1pbmxpbmUgY2xzdHJpbmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJpbmcoY2hhciAq
c3RyaW5nc3BvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjbHN0cmluZyAmdmFsdWUpIHsKLSAgcmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0cmlu
Zyh2YWx1ZSk7Ci19Ci1pbmxpbmUgY2xzdHJpbmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJpbmco
Y2hhciAqc3RyaW5nc3BvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdmFsdWUpOwotfSAgLy8gbmFtZXNwYWNlIGZMUwotCi0vLyBXZSBuZWVkIHRvIGRl
ZmluZSBhIHZhciBuYW1lZCBGTEFHU19ubyMjbmFtZSBzbyBwZW9wbGUgZG9uJ3QgZGVmaW5lCi0v
LyAtLXN0cmluZyBhbmQgLS1ub3N0cmluZy4gIEFuZCB3ZSBuZWVkIGEgdGVtcG9yYXJ5IHBsYWNl
IHRvIHB1dCB2YWwKLS8vIHNvIHdlIGRvbid0IGhhdmUgdG8gZXZhbHVhdGUgaXQgdHdpY2UuICBU
d28gZ3JlYXQgbmVlZHMgdGhhdCBnbwotLy8gZ3JlYXQgdG9nZXRoZXIhCi0vLyBUaGUgd2VpcmQg
J3VzaW5nJyArICdleHRlcm4nIGluc2lkZSB0aGUgZkxTIG5hbWVzcGFjZSBpcyB0byB3b3JrIGFy
b3VuZAotLy8gYW4gdW5rbm93biBjb21waWxlciBidWcvaXNzdWUgd2l0aCB0aGUgZ2NjIDQuMi4x
IG9uIFNVU0UgMTAuICBTZWUKLS8vICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUt
Z2ZsYWdzL2lzc3Vlcy9kZXRhaWw/aWQ9MjAKLSNkZWZpbmUgREVGSU5FX3N0cmluZyhuYW1lLCB2
YWwsIHR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIG5hbWVz
cGFjZSBmTFMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHVzaW5nIDo6ZkxTOjpjbHN0cmluZzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdW5pb24geyB2
b2lkKiBhbGlnbjsgY2hhciBzW3NpemVvZihjbHN0cmluZyldOyB9IHNfIyNuYW1lWzJdOyAgICBc
Ci0gICAgY2xzdHJpbmcqIGNvbnN0IEZMQUdTX25vIyNuYW1lID0gOjpmTFM6OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKHNfIyNuYW1lWzBdLnMsIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwpOyAg
ICAgICAgICBcCi0gICAgc3RhdGljIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdSZWdpc3RlcmVyIG9f
IyNuYW1lKCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAjbmFtZSwgInN0cmluZyIs
IE1BWUJFX1NUUklQUEVEX0hFTFAodHh0KSwgX19GSUxFX18sICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgc18jI25hbWVbMF0ucywgbmV3IChzXyMjbmFtZVsxXS5zKSBjbHN0cmluZygqRkxBR1Nf
bm8jI25hbWUpKTsgICAgICBcCi0gICAgZXh0ZXJuIEdGTEFHU19ETExfREVGSU5FX0ZMQUcgY2xz
dHJpbmcmIEZMQUdTXyMjbmFtZTsgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGZMUzo6
RkxBR1NfIyNuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBjbHN0cmluZyYgRkxBR1NfIyNuYW1lID0gKkZMQUdTX25vIyNuYW1lOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB1c2lu
ZyBmTFM6OkZMQUdTXyMjbmFtZQotCi0jZW5kaWYgIC8vIFNXSUcKLQotCi0vLyBJbXBvcnQgZ2Zs
YWdzIGxpYnJhcnkgc3ltYm9scyBpbnRvIGFsdGVybmF0aXZlL2RlcHJlY2F0ZWQgbmFtZXNwYWNl
KHMpCi0jaW5jbHVkZSAiZ2ZsYWdzX2dmbGFncy5oIgotCi0KLSNlbmRpZiAgLy8gR0ZMQUdTX0dG
TEFHU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19jb21wbGV0
aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19jb21wbGV0aW9ucy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTUxYzFlMDJkMWYuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9n
ZW4vcG9zaXgvaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMjEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyAtLS0KLQotLy8KLS8vIEltcGxlbWVudCBoZWxwZnVsIGJhc2gt
c3R5bGUgY29tbWFuZCBsaW5lIGZsYWcgY29tcGxldGlvbnMKLS8vCi0vLyAqKiBGdW5jdGlvbmFs
IEFQSToKLS8vIEhhbmRsZUNvbW1hbmRMaW5lQ29tcGxldGlvbnMoKSBzaG91bGQgYmUgY2FsbGVk
IGVhcmx5IGR1cmluZwotLy8gcHJvZ3JhbSBzdGFydHVwLCBidXQgYWZ0ZXIgY29tbWFuZCBsaW5l
IGZsYWcgY29kZSBoYXMgYmVlbgotLy8gaW5pdGlhbGl6ZWQsIHN1Y2ggYXMgdGhlIGJlZ2lubmlu
ZyBvZiBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpLgotLy8gSXQgY2hlY2tzIHRoZSB2YWx1
ZSBvZiB0aGUgZmxhZyAtLXRhYl9jb21wbGV0aW9uX3dvcmQuICBJZiB0aGlzCi0vLyBmbGFnIGlz
IGVtcHR5LCBub3RoaW5nIGhhcHBlbnMgaGVyZS4gIElmIGl0IGNvbnRhaW5zIGEgc3RyaW5nLAot
Ly8gaG93ZXZlciwgdGhlbiBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKCkgd2lsbCBoaWph
Y2sgdGhlCi0vLyBwcm9jZXNzLCBhdHRlbXB0aW5nIHRvIGlkZW50aWZ5IHRoZSBpbnRlbnRpb24g
YmVoaW5kIHRoaXMKLS8vIGNvbXBsZXRpb24uICBSZWdhcmRsZXNzIG9mIHRoZSBvdXRjb21lIG9m
IHRoaXMgZGVkdWN0aW9uLCB0aGUKLS8vIHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkLCBzaW1p
bGFyIHRvIC0taGVscHNob3J0IGZsYWcKLS8vIGhhbmRsaW5nLgotLy8KLS8vICoqIE92ZXJ2aWV3
IG9mIEJhc2ggY29tcGxldGlvbnM6Ci0vLyBCYXNoIGNhbiBiZSB0b2xkIHRvIHByb2dyYW1hdGlj
YWxseSBkZXRlcm1pbmUgY29tcGxldGlvbnMgZm9yIHRoZQotLy8gY3VycmVudCAnY3Vyc29yIHdv
cmQnLiAgSXQgZG9lcyB0aGlzIGJ5IChpbiB0aGlzIGNhc2UpIGludm9raW5nIGEKLS8vIGNvbW1h
bmQgd2l0aCBzb21lIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlkZW50aWZ5aW5nIHRoZSBjb21tYW5k
Ci0vLyBiZWluZyBleGVjdXRlZCwgdGhlIHdvcmQgYmVpbmcgY29tcGxldGVkLCBhbmQgdGhlIHBy
ZXZpb3VzIHdvcmQKLS8vIChpZiBhbnkpLiAgQmFzaCB0aGVuIGV4cGVjdHMgYSBzZXF1ZW5jZSBv
ZiBvdXRwdXQgbGluZXMgdG8gYmUKLS8vIHByaW50ZWQgdG8gc3Rkb3V0LiAgSWYgdGhlc2UgbGlu
ZXMgYWxsIGNvbnRhaW4gYSBjb21tb24gcHJlZml4Ci0vLyBsb25nZXIgdGhhbiB0aGUgY3Vyc29y
IHdvcmQsIGJhc2ggd2lsbCByZXBsYWNlIHRoZSBjdXJzb3Igd29yZAotLy8gd2l0aCB0aGF0IGNv
bW1vbiBwcmVmaXgsIGFuZCBkaXNwbGF5IG5vdGhpbmcuICBJZiB0aGVyZSBpc24ndCBzdWNoCi0v
LyBhIGNvbW1vbiBwcmVmaXgsIGJhc2ggd2lsbCBkaXNwbGF5IHRoZSBsaW5lcyBpbiBwYWdlcyB1
c2luZyAnbW9yZScuCi0vLwotLy8gKiogU3RyYXRlZ3kgdGFrZW4gZm9yIGNvbW1hbmQgbGluZSBj
b21wbGV0aW9uczoKLS8vIElmIHdlIGNhbiBkZWR1Y2UgZWl0aGVyIHRoZSBleGFjdCBmbGFnIGlu
dGVuZGVkLCBvciBhIGNvbW1vbiBmbGFnCi0vLyBwcmVmaXgsIHdlJ2xsIG91dHB1dCBleGFjdGx5
IHRoYXQuICBPdGhlcndpc2UsIGlmIGluZm9ybWF0aW9uCi0vLyBtdXN0IGJlIGRpc3BsYXllZCB0
byB0aGUgdXNlciwgd2UnbGwgdGFrZSB0aGUgb3Bwb3J0dW5pdHkgdG8gYWRkCi0vLyBzb21lIGhl
bHBmdWwgaW5mb3JtYXRpb24gYmV5b25kIGp1c3QgdGhlIGZsYWcgbmFtZSAoc3BlY2lmaWNhbGx5
LAotLy8gd2UnbGwgaW5jbHVkZSB0aGUgZGVmYXVsdCBmbGFnIHZhbHVlIGFuZCBhcyBtdWNoIG9m
IHRoZSBmbGFnJ3MKLS8vIGRlc2NyaXB0aW9uIGFzIGNhbiBmaXQgb24gYSBzaW5nbGUgdGVybWlu
YWwgbGluZSB3aWR0aCwgYXMgc3BlY2lmaWVkCi0vLyBieSB0aGUgZmxhZyAtLXRhYl9jb21wbGV0
aW9uX2NvbHVtbnMpLiAgRnVydGhlcm1vcmUsIHdlJ2xsIHRyeSB0bwotLy8gbWFrZSBiYXNoIG9y
ZGVyIHRoZSBvdXRwdXQgc3VjaCB0aGF0IHRoZSBtb3N0IHVzZWZ1bCBvciByZWxldmVudAotLy8g
ZmxhZ3MgYXJlIHRoZSBtb3N0IGxpa2VseSB0byBiZSBzaG93biBhdCB0aGUgdG9wLgotLy8KLS8v
ICoqIEFkZGl0aW9uYWwgZmVhdHVyZXM6Ci0vLyBUbyBhc3Npc3QgaW4gZmluZGluZyB0aGF0IG9u
ZSByZWFsbHkgdXNlZnVsIGZsYWcsIHN1YnN0cmluZyBtYXRjaGluZwotLy8gd2FzIGltcGxlbWVu
dGVkLiAgQmVmb3JlIHByZXNzaW5nIGEgPFRBQj4gdG8gZ2V0IGNvbXBsZXRpb24gZm9yIHRoZQot
Ly8gY3VycmVudCB3b3JkLCB5b3UgY2FuIGFwcGVuZCBvbmUgb3IgbW9yZSAnPycgdG8gdGhlIGZs
YWcgdG8gZG8KLS8vIHN1YnN0cmluZyBtYXRjaGluZy4gIEhlcmUncyB0aGUgc2VtYW50aWNzOgot
Ly8gICAtLWZvbzxUQUI+ICAgICBTaG93IG1lIGFsbCBmbGFncyB3aXRoIG5hbWVzIHByZWZpeGVk
IGJ5ICdmb28nCi0vLyAgIC0tZm9vPzxUQUI+ICAgIFNob3cgbWUgYWxsIGZsYWdzIHdpdGggJ2Zv
bycgc29tZXdoZXJlIGluIHRoZSBuYW1lCi0vLyAgIC0tZm9vPz88VEFCPiAgIFNhbWUgYXMgcHJp
b3IgY2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIG1vZHVsZQotLy8gICAgICAgICAgICAgICAgICBk
ZWZpbml0aW9uIHBhdGggZm9yICdmb28nCi0vLyAgIC0tZm9vPz8/PFRBQj4gIFNhbWUgYXMgcHJp
b3IgY2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIGZsYWcKLS8vICAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRpb25zIGZvciAnZm9vJwotLy8gRmluYWxseSwgd2UnbGwgdHJpbSB0aGUgb3V0cHV0IHRv
IGEgcmVsYXRpdmVseSBzbWFsbCBudW1iZXIgb2YKLS8vIGZsYWdzIHRvIGtlZXAgYmFzaCBxdWll
dCBhYm91dCB0aGUgdmVyYm9zaXR5IG9mIG91dHB1dC4gIElmIG9uZQotLy8gcmVhbGx5IHdhbnRl
ZCB0byBzZWUgYWxsIHBvc3NpYmxlIG1hdGNoZXMsIGFwcGVuZGluZyBhICcrJyB0byB0aGUKLS8v
IHNlYXJjaCB3b3JkIHdpbGwgZm9yY2UgdGhlIGV4aGF1c3RpdmUgbGlzdCBvZiBtYXRjaGVzIHRv
IGJlIHByaW50ZWQuCi0vLwotLy8gKiogSG93IHRvIGhhdmUgYmFzaCBhY2NlcHQgY29tcGxldGlv
bnMgZnJvbSBhIGJpbmFyeToKLS8vIEJhc2ggcmVxdWlyZXMgdGhhdCBpdCBiZSBpbmZvcm1lZCBh
Ym91dCBlYWNoIGNvbW1hbmQgdGhhdCBwcm9ncmFtbWF0aWMKLS8vIGNvbXBsZXRpb24gc2hvdWxk
IGJlIGVuYWJsZWQgZm9yLiAgRXhhbXBsZSBhZGRpdGlvbiB0byBhIC5iYXNocmMKLS8vIGZpbGUg
d291bGQgYmUgKHlvdXIgcGF0aCB0byBnZmxhZ3NfY29tcGxldGlvbnMuc2ggZmlsZSBtYXkgZGlm
ZmVyKToKLQotLyoKLSQgY29tcGxldGUgLW8gYmFzaGRlZmF1bHQgLW8gZGVmYXVsdCAtbyBub3Nw
YWNlIC1DICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAnL2hvbWUvYnVpbGQvZW5nL2Jh
c2gvYmFzaF9jb21wbGV0aW9ucy5zaCAtLXRhYl9jb21wbGV0aW9uX2NvbHVtbnMgJENPTFVNTlMn
IFwKLSAgdGltZSAgZW52ICBiaW5hcnlfbmFtZSAgYW5vdGhlcl9iaW5hcnkgIFsuLi5dCi0qLwot
Ci0vLyBUaGlzIHdvdWxkIGFsbG93IHRoZSBmb2xsb3dpbmcgdG8gd29yazoKLS8vICAgJCAvcGF0
aC90by9iaW5hcnlfbmFtZSAtLXZtb2R1bGU8VEFCPgotLy8gT3I6Ci0vLyAgICQgLi9iaW4vcGF0
aC9hbm90aGVyX2JpbmFyeSAtLWdmc191PFRBQj4KLS8vIChldGMpCi0vLwotLy8gU2FkbHksIGl0
IGFwcGVhcnMgdGhhdCBiYXNoIGdpdmVzIG5vIGVhc3kgd2F5IHRvIGZvcmNlIHRoaXMgYmVoYXZp
b3IgZm9yCi0vLyBhbGwgY29tbWFuZHMuICBUaGF0J3Mgd2hlcmUgdGhlICJ0aW1lIiBpbiB0aGUg
YWJvdmUgZXhhbXBsZSBjb21lcyBpbi4KLS8vIElmIHlvdSBoYXZlbid0IHNwZWNpZmljYWxseSBh
ZGRlZCBhIGNvbW1hbmQgdG8gdGhlIGxpc3Qgb2YgY29tcGxldGlvbgotLy8gc3VwcG9ydGVkIGNv
bW1hbmRzLCB5b3UgY2FuIHN0aWxsIGdldCBjb21wbGV0aW9ucyBieSBwcmVmaXhpbmcgdGhlCi0v
LyBlbnRpcmUgY29tbWFuZCB3aXRoICJlbnYiLgotLy8gICAkIGVudiAvc29tZS9icmFuZC9uZXcv
YmluYXJ5IC0tdm1vZDxUQUI+Ci0vLyBBc3N1bWluZyB0aGF0ICJiaW5hcnkiIGlzIGEgbmV3bHkg
Y29tcGlsZWQgYmluYXJ5LCB0aGlzIHNob3VsZCBzdGlsbAotLy8gcHJvZHVjZSB0aGUgZXhwZWN0
ZWQgY29tcGxldGlvbiBvdXRwdXQuCi0KLQotI2lmbmRlZiBHRkxBR1NfQ09NUExFVElPTlNfSF8K
LSNkZWZpbmUgR0ZMQUdTX0NPTVBMRVRJT05TX0hfCi0KLW5hbWVzcGFjZSBnb29nbGUgewotCi1l
eHRlcm4gdm9pZCBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKHZvaWQpOwotCi19Ci0KLSNl
bmRpZiAgLy8gR0ZMQUdTX0NPTVBMRVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVk
ZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL2dmbGFncy9nZmxhZ3Nf
ZGVjbGFyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzVhMjBlNzc1Y2IuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaAor
KysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDE5OTksIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyAtLS0KLS8vCi0vLyBSZXZhbXBlZCBhbmQgcmVv
cmdhbml6ZWQgYnkgQ3JhaWcgU2lsdmVyc3RlaW4KLS8vCi0vLyBUaGlzIGlzIHRoZSBmaWxlIHRo
YXQgc2hvdWxkIGJlIGluY2x1ZGVkIGJ5IGFueSBmaWxlIHdoaWNoIGRlY2xhcmVzCi0vLyBjb21t
YW5kIGxpbmUgZmxhZy4KLQotI2lmbmRlZiBHRkxBR1NfREVDTEFSRV9IXwotI2RlZmluZSBHRkxB
R1NfREVDTEFSRV9IXwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTmFtZXNwYWNlIG9m
IGdmbGFncyBsaWJyYXJ5IHN5bWJvbHMuCi0jZGVmaW5lIEdGTEFHU19OQU1FU1BBQ0UgZ29vZ2xl
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gV2luZG93cyBETEwgaW1wb3J0L2V4cG9ydC4K
LQotLy8gV2UgYWx3YXlzIHdhbnQgdG8gaW1wb3J0IHRoZSBzeW1ib2xzIG9mIHRoZSBnZmxhZ3Mg
bGlicmFyeQotI2lmbmRlZiBHRkxBR1NfRExMX0RFQ0wKLSMgIGlmIDAgJiYgZGVmaW5lZChfTVND
X1ZFUikKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
LSMgIGVsc2UKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTAotIyAgZW5kaWYKLSNlbmRpZgot
Ci0vLyBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgdmFyaWFibGVzIGRlY2xhcmVkIGluIHVzZXIg
Y29kZQotI2lmbmRlZiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRwotIyAgaWZkZWYgX01TQ19WRVIK
LSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTEFSRV9GTEFHIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcKLSMgIGVuZGlm
Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBGbGFnIHR5cGVzCi0jaW5jbHVk
ZSA8c3RyaW5nPgotI2lmIDEKLSMgIGluY2x1ZGUgPHN0ZGludC5oPiAgICAgICAgICAgICAgICAg
ICAvLyB0aGUgbm9ybWFsIHBsYWNlIHVpbnQzMl90IGlzIGRlZmluZWQKLSNlbGlmIDEKLSMgIGlu
Y2x1ZGUgPHN5cy90eXBlcy5oPiAgICAgICAgICAgICAgICAvLyB0aGUgbm9ybWFsIHBsYWNlIHVf
aW50MzJfdCBpcyBkZWZpbmVkCi0jZWxpZiAxCi0jICBpbmNsdWRlIDxpbnR0eXBlcy5oPiAgICAg
ICAgICAgICAgICAgLy8gYSB0aGlyZCBwbGFjZSBmb3IgdWludDMyX3Qgb3IgdV9pbnQzMl90Ci0j
ZW5kaWYKLQotbmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UgewotCi0jaWYgMSAvLyBDOTkKLXR5
cGVkZWYgaW50MzJfdCAgICAgICAgICBpbnQzMjsKLXR5cGVkZWYgdWludDMyX3QgICAgICAgICB1
aW50MzI7Ci10eXBlZGVmIGludDY0X3QgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVpbnQ2NF90
ICAgICAgICAgdWludDY0OwotI2VsaWYgMCAvLyBCU0QKLXR5cGVkZWYgaW50MzJfdCAgICAgICAg
ICBpbnQzMjsKLXR5cGVkZWYgdV9pbnQzMl90ICAgICAgICB1aW50MzI7Ci10eXBlZGVmIGludDY0
X3QgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVfaW50NjRfdCAgICAgICAgdWludDY0OwotI2Vs
aWYgMCAvLyBXaW5kb3dzCi10eXBlZGVmIF9faW50MzIgICAgICAgICAgaW50MzI7Ci10eXBlZGVm
IHVuc2lnbmVkIF9faW50MzIgdWludDMyOwotdHlwZWRlZiBfX2ludDY0ICAgICAgICAgIGludDY0
OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NDsKLSNlbHNlCi0jICBlcnJvciBEbyBu
b3Qga25vdyBob3cgdG8gZGVmaW5lIGEgMzItYml0IGludGVnZXIgcXVhbnRpdHkgb24geW91ciBz
eXN0ZW0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFCi0KLQotbmFt
ZXNwYWNlIGZMUyB7Ci0KLS8vIFRoZSBtZWFuaW5nIG9mICJzdHJpbmciIG1pZ2h0IGJlIGRpZmZl
cmVudCBiZXR3ZWVuIG5vdyBhbmQgd2hlbiB0aGUKLS8vIG1hY3JvcyBiZWxvdyBnZXQgaW52b2tl
ZCAoZS5nLiwgaWYgc29tZW9uZSBpcyBleHBlcmltZW50aW5nIHdpdGgKLS8vIG90aGVyIHN0cmlu
ZyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBnZXQgZGVmaW5lZCBhZnRlciB0aGlzIGZpbGUgaXMKLS8v
IGluY2x1ZGVkKS4gIFNhdmUgdGhlIGN1cnJlbnQgbWVhbmluZyBub3cgYW5kIHVzZSBpdCBpbiB0
aGUgbWFjcm9zLgotdHlwZWRlZiBzdGQ6OnN0cmluZyBjbHN0cmluZzsKLQotfSAvLyBuYW1lc3Bh
Y2UgZkxTCi0KLQotI2RlZmluZSBERUNMQVJFX1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwgbmFt
ZSkgXAotICAvKiBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgZGVjbGFyZWQgdmFyaWFibGVzLCBk
bGwgb3Igbm8gKi8gXAotICBuYW1lc3BhY2UgZkwjI3Nob3J0dHlwZSB7IGV4dGVybiBHRkxBR1Nf
RExMX0RFQ0xBUkVfRkxBRyB0eXBlIEZMQUdTXyMjbmFtZTsgfSBcCi0gIHVzaW5nIGZMIyNzaG9y
dHR5cGU6OkZMQUdTXyMjbmFtZQotCi0jZGVmaW5lIERFQ0xBUkVfYm9vbChuYW1lKSBcCi0gIERF
Q0xBUkVfVkFSSUFCTEUoYm9vbCwgQiwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX2ludDMyKG5h
bWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRSg6OkdGTEFHU19OQU1FU1BBQ0U6OmludDMyLCBJLCBu
YW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfaW50NjQobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxF
KDo6R0ZMQUdTX05BTUVTUEFDRTo6aW50NjQsIEk2NCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJF
X3VpbnQ2NChuYW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFCTEUoOjpHRkxBR1NfTkFNRVNQQUNFOjp1
aW50NjQsIFU2NCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX2RvdWJsZShuYW1lKSBcCi0gIERF
Q0xBUkVfVkFSSUFCTEUoZG91YmxlLCBELCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfc3RyaW5n
KG5hbWUpIFwKLSAgLyogV2UgYWx3YXlzIHdhbnQgdG8gaW1wb3J0IGRlY2xhcmVkIHZhcmlhYmxl
cywgZGxsIG9yIG5vICovIFwKLSAgbmFtZXNwYWNlIGZMUyB7IFwKLSAgdXNpbmcgOjpmTFM6OmNs
c3RyaW5nOyBcCi0gIGV4dGVybiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRyA6OmZMUzo6Y2xzdHJp
bmcmIEZMQUdTXyMjbmFtZTsgXAotICB9IFwKLSAgdXNpbmcgZkxTOjpGTEFHU18jI25hbWUKLQot
Ci0jZW5kaWYgIC8vIEdGTEFHU19ERUNMQVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVk
ZS9nZmxhZ3MvZ2ZsYWdzX2dmbGFncy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19n
ZmxhZ3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxNzgyNWRkNjIzLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3MvZ2VuL3Bvc2l4L2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19nZmxhZ3MuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQsIEFuZHJl
YXMgU2NodWgKLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBJbXBv
cnRzIHRoZSBnZmxhZ3MgbGlicmFyeSBzeW1ib2xzIGludG8gYW4gYWx0ZXJuYXRpdmUvZGVwcmVj
YXRlZCBuYW1lc3BhY2UuCi0KLSNpZm5kZWYgR0ZMQUdTX0dGTEFHU19IXwotIyAgZXJyb3IgVGhl
IGludGVybmFsIGhlYWRlciBnZmxhZ3NfZ2ZsYWdzLmggbWF5IG9ubHkgYmUgaW5jbHVkZWQgYnkg
Z2ZsYWdzLmgKLSNlbmRpZgotCi0jaWZuZGVmIEdGTEFHU19OU19HRkxBR1NfSF8KLSNkZWZpbmUg
R0ZMQUdTX05TX0dGTEFHU19IXwotCi0KLW5hbWVzcGFjZSBnZmxhZ3MgewotCi0KLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OmludDMyOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6dWludDMyOwot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6aW50NjQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjp1
aW50NjQ7Ci0KLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcjsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkNvbW1hbmRMaW5lRmxhZ0luZm87Ci11c2luZyBHRkxB
R1NfTkFNRVNQQUNFOjpHZXRBbGxGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNob3dV
c2FnZVdpdGhGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNob3dVc2FnZVdpdGhGbGFn
c1Jlc3RyaWN0OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6RGVzY3JpYmVPbmVGbGFnOwotdXNp
bmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0QXJndjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6Okdl
dEFyZ3ZzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndjsKLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OkdldEFyZ3YwOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndlN1bTsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlByb2dyYW1JbnZvY2F0aW9uTmFtZTsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lOwotdXNpbmcgR0ZMQUdT
X05BTUVTUEFDRTo6UHJvZ3JhbVVzYWdlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6VmVyc2lv
blN0cmluZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldENvbW1hbmRMaW5lT3B0aW9uOwot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0Q29tbWFuZExpbmVGbGFnSW5mbzsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OkdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZTsKLXVzaW5nIEdGTEFH
U19OQU1FU1BBQ0U6OkZsYWdTZXR0aW5nTW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNF
VF9GTEFHU19WQUxVRTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNFVF9GTEFHX0lGX0RFRkFV
TFQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTRVRfRkxBR1NfREVGQVVMVDsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlNldENvbW1hbmRMaW5lT3B0aW9uOwotdXNpbmcgR0ZMQUdTX05BTUVT
UEFDRTo6U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BB
Q0U6OkZsYWdTYXZlcjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkNvbW1hbmRsaW5lRmxhZ3NJ
bnRvU3RyaW5nOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVhZEZsYWdzRnJvbVN0cmluZzsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkFwcGVuZEZsYWdzSW50b0ZpbGU7Ci11c2luZyBHRkxB
R1NfTkFNRVNQQUNFOjpSZWFkRnJvbUZsYWdzRmlsZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkJvb2xGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6SW50MzJGcm9tRW52OwotdXNp
bmcgR0ZMQUdTX05BTUVTUEFDRTo6SW50NjRGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFD
RTo6VWludDY0RnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkRvdWJsZUZyb21FbnY7
Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTdHJpbmdGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05B
TUVTUEFDRTo6U2V0VXNhZ2VNZXNzYWdlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0VmVy
c2lvblN0cmluZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlBhcnNlQ29tbWFuZExpbmVOb25I
ZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpIYW5kbGVDb21tYW5kTGluZUhlbHBG
bGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkFsbG93Q29tbWFuZExpbmVSZXBhcnNpbmc7
Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpSZXBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3M7
Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3M7Ci11c2lu
ZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlcjsKLQotI2lmbmRlZiBTV0lHCi11c2lu
ZyBHRkxBR1NfTkFNRVNQQUNFOjpQYXJzZUNvbW1hbmRMaW5lRmxhZ3M7Ci0jZW5kaWYKLQotCi19
IC8vIG5hbWVzcGFjZSBnZmxhZ3MKLQotCi0jZW5kaWYgIC8vIEdGTEFHU19OU19HRkxBR1NfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL2dlbi9wb3NpeC9pbmNsdWRlL3ByaXZhdGUvY29uZmlnLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5j
bHVkZS9wcml2YXRlL2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTJk
NjFjNGMwNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vcG9zaXgvaW5jbHVkZS9wcml2YXRlL2NvbmZp
Zy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLS8qIEdlbmVyYXRlZCBmcm9tIGNv
bmZpZy5oLmluIGR1cmluZyBidWlsZCBjb25maWd1cmF0aW9uIHVzaW5nIENNYWtlLiAqLwotCi0v
LyBOb3RlOiBUaGlzIGhlYWRlciBmaWxlIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LiBJdCBpcyBu
b3QgcGFydCBvZiBwdWJsaWMgaW50ZXJmYWNlIQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IFN5c3RlbSBjaGVja3MKLQotLy8gRGVmaW5lIGlmIHlvdSBidWlsZCB0aGlzIGxpYnJhcnkgZm9y
IGEgTVMgV2luZG93cyBPUy4KLS8qICN1bmRlZiBPU19XSU5ET1dTICovCi0KLS8vIERlZmluZSBp
ZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVERJ
TlRfSAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZp
bGUuCi0jZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfSU5UVFlQRVNfSAotCi0v
LyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZp
bmUgSEFWRV9TWVNfU1RBVF9ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5o
PiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9VTklTVERfSAotCi0vLyBEZWZpbmUgaWYgeW91
IGhhdmUgdGhlIDxmbm1hdGNoLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0ZOTUFUQ0hf
SAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzaGx3YXBpLmg+IGhlYWRlciBmaWxlIChX
aW5kb3dzIDIwMDAvWFApLgotLyogI3VuZGVmIEhBVkVfU0hMV0FQSV9IICovCi0KLS8vIERlZmlu
ZSBpZiB5b3UgaGF2ZSB0aGUgc3RydG9sbCBmdW5jdGlvbi4KLSNkZWZpbmUgSEFWRV9TVFJUT0xM
Ci0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc3RydG9xIGZ1bmN0aW9uLgotLyogI3VuZGVm
IEhBVkVfU1RSVE9RICovCi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHB0aHJlYWQuaD4g
aGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfUFRIUkVBRAotCi0vLyBEZWZpbmUgaWYgeW91ciBw
dGhyZWFkIGxpYnJhcnkgZGVmaW5lcyB0aGUgdHlwZSBwdGhyZWFkX3J3bG9ja190Ci0jZGVmaW5l
IEhBVkVfUldMT0NLCi0KLS8vIGdjYyByZXF1aXJlcyB0aGlzIHRvIGdldCBQUklkNjQsIGV0Yy4K
LSNpZiBkZWZpbmVkKEhBVkVfSU5UVFlQRVNfSCkgJiYgIWRlZmluZWQoX19TVERDX0ZPUk1BVF9N
QUNST1MpCi0jICBkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQotI2VuZGlmCi0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gUGFja2FnZSBpbmZvcm1hdGlvbgotCi0vLyBOYW1lIG9mIHBh
Y2thZ2UuCi0jZGVmaW5lIFBBQ0tBR0UgZ2ZsYWdzCi0KLS8vIERlZmluZSB0byB0aGUgZnVsbCBu
YW1lIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9OQU1FIGdmbGFncwotCi0vLyBE
ZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuCi0jZGVm
aW5lIFBBQ0tBR0VfU1RSSU5HIGdmbGFncyAyLjIuMAotCi0vLyBEZWZpbmUgdG8gdGhlIG9uZSBz
eW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFBBQ0tBR0VfVEFSTkFN
RSBnZmxhZ3MtMi4yLjAKLQotLy8gRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2Fn
ZS4KLSNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OIDIuMi4wCi0KLS8vIFZlcnNpb24gbnVtYmVyIG9m
IHBhY2thZ2UuCi0jZGVmaW5lIFZFUlNJT04gUEFDS0FHRV9WRVJTSU9OCi0KLS8vIERlZmluZSB0
byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBi
ZSBzZW50LgotI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCBodHRwczovL2dpdGh1Yi5jb20vc2No
dWhzY2h1aC9nZmxhZ3MvaXNzdWVzCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUGF0aCBz
ZXBhcmF0b3IKLSNpZm5kZWYgUEFUSF9TRVBBUkFUT1IKLSMgIGlmZGVmIE9TX1dJTkRPV1MKLSMg
ICAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICAnXFwnCi0jICBlbHNlCi0jICAgIGRlZmluZSBQQVRI
X1NFUEFSQVRPUiAgJy8nCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gV2luZG93cwotCi0vLyBXaGV0aGVyIGdmbGFncyBsaWJyYXJ5IGlzIGEgRExMLgotI2lm
bmRlZiBHRkxBR1NfSVNfQV9ETEwKLSMgIGRlZmluZSBHRkxBR1NfSVNfQV9ETEwgMAotI2VuZGlm
Ci0KLS8vIEFsd2F5cyBleHBvcnQgc3ltYm9scyB3aGVuIGNvbXBpbGluZyBhIHNoYXJlZCBsaWJy
YXJ5IGFzIHRoaXMgZmlsZSBpcyBvbmx5Ci0vLyBpbmNsdWRlZCBieSBpbnRlcm5hbCBtb2R1bGVz
IHdoZW4gYnVpbGRpbmcgdGhlIGdmbGFncyBsaWJyYXJ5IGl0c2VsZi4KLS8vIFRoZSBnZmxhZ3Nf
ZGVjbGFyZS5oIGhlYWRlciBmaWxlIHdpbGwgc2V0IGl0IHRvIGltcG9ydCB0aGVzZSBzeW1ib2xz
IG90aGVyd2lzZS4KLSNpZm5kZWYgR0ZMQUdTX0RMTF9ERUNMCi0jICBpZiBHRkxBR1NfSVNfQV9E
TEwgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTCBfX2Rl
Y2xzcGVjKGRsbGV4cG9ydCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTAot
IyAgZW5kaWYKLSNlbmRpZgotLy8gRmxhZ3MgZGVmaW5lZCBieSB0aGUgZ2ZsYWdzIGxpYnJhcnkg
aXRzZWxmIG11c3QgYmUgZXhwb3J0ZWQKLSNpZm5kZWYgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwot
IyAgZGVmaW5lIEdGTEFHU19ETExfREVGSU5FX0ZMQUcgR0ZMQUdTX0RMTF9ERUNMCi0jZW5kaWYK
LQotI2lmZGVmIE9TX1dJTkRPV1MKLS8vIFRoZSB1bml0dGVzdHMgaW1wb3J0IHRoZSBzeW1ib2xz
IG9mIHRoZSBzaGFyZWQgZ2ZsYWdzIGxpYnJhcnkKLSMgIGlmIEdGTEFHU19JU19BX0RMTCAmJiBk
ZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMX0ZPUl9VTklUVEVT
VFMgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBlbmRpZgotIyAgaW5jbHVkZSAid2luZG93c19w
b3J0LmgiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9n
ZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dmbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzNTdlZWM2YmU3Y2UuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2ZsYWdz
L2dmbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTczICswLDAgQEAKLS8vIENvcHlyaWdodCAo
YykgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8gUmV2YW1wZWQg
YW5kIHJlb3JnYW5pemVkIGJ5IENyYWlnIFNpbHZlcnN0ZWluCi0vLwotLy8gVGhpcyBpcyB0aGUg
ZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBieSBhbnkgZmlsZSB3aGljaCBkZWNsYXJlcwot
Ly8gb3IgZGVmaW5lcyBhIGNvbW1hbmQgbGluZSBmbGFnIG9yIHdhbnRzIHRvIHBhcnNlIGNvbW1h
bmQgbGluZSBmbGFncwotLy8gb3IgcHJpbnQgYSBwcm9ncmFtIHVzYWdlIG1lc3NhZ2UgKHdoaWNo
IHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dAotLy8gZmxhZ3MpLiAgRXhlY3V0aXZlIHN1
bW1hcnksIGluIHRoZSBmb3JtIG9mIGFuIGV4YW1wbGUgZm9vLmNjIGZpbGU6Ci0vLwotLy8gICAg
I2luY2x1ZGUgImZvby5oIiAgICAgICAgIC8vIGZvby5oIGhhcyBhIGxpbmUgIkRFQ0xBUkVfaW50
MzIoc3RhcnQpOyIKLS8vICAgICNpbmNsdWRlICJ2YWxpZGF0b3JzLmgiICAvLyBoeXBvdGhldGlj
YWwgZmlsZSBkZWZpbmluZyBWYWxpZGF0ZUlzRmlsZSgpCi0vLwotLy8gICAgREVGSU5FX2ludDMy
KGVuZCwgMTAwMCwgIlRoZSBsYXN0IHJlY29yZCB0byByZWFkIik7Ci0vLwotLy8gICAgREVGSU5F
X3N0cmluZyhmaWxlbmFtZSwgIm15X2ZpbGUudHh0IiwgIlRoZSBmaWxlIHRvIHJlYWQiKTsKLS8v
ICAgIC8vIENyYXNoIGlmIHRoZSBzcGVjaWZpZWQgZmlsZSBkb2VzIG5vdCBleGlzdC4KLS8vICAg
IHN0YXRpYyBib29sIGR1bW15ID0gUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU19maWxlbmFt
ZSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZWYWxp
ZGF0ZUlzRmlsZSk7Ci0vLwotLy8gICAgREVDTEFSRV9ib29sKHZlcmJvc2UpOyAvLyBzb21lIG90
aGVyIGZpbGUgaGFzIGEgREVGSU5FX2Jvb2wodmVyYm9zZSwgLi4uKQotLy8KLS8vICAgIHZvaWQg
TXlGdW5jKCkgewotLy8gICAgICBpZiAoRkxBR1NfdmVyYm9zZSkgcHJpbnRmKCJSZWNvcmRzICVk
LSVkXG4iLCBGTEFHU19zdGFydCwgRkxBR1NfZW5kKTsKLS8vICAgIH0KLS8vCi0vLyAgICBUaGVu
LCBhdCB0aGUgY29tbWFuZC1saW5lOgotLy8gICAgICAgLi9mb28gLS1ub3ZlcmJvc2UgLS1zdGFy
dD01IC0tZW5kPTEwMAotLy8KLS8vIEZvciBtb3JlIGRldGFpbHMsIHNlZQotLy8gICAgZG9jL2dm
bGFncy5odG1sCi0vLwotLy8gLS0tIEEgbm90ZSBhYm91dCB0aHJlYWQtc2FmZXR5OgotLy8KLS8v
IFdlIGRlc2NyaWJlIG1hbnkgZnVuY3Rpb25zIGluIHRoaXMgcm91dGluZSBhcyBiZWluZyB0aHJl
YWQtaG9zdGlsZSwKLS8vIHRocmVhZC1jb21wYXRpYmxlLCBvciB0aHJlYWQtc2FmZS4gIEhlcmUg
YXJlIHRoZSBtZWFuaW5ncyB3ZSB1c2U6Ci0vLwotLy8gdGhyZWFkLXNhZmU6IGl0IGlzIHNhZmUg
Zm9yIG11bHRpcGxlIHRocmVhZHMgdG8gY2FsbCB0aGlzIHJvdXRpbmUKLS8vICAgKG9yLCB3aGVu
IHJlZmVycmluZyB0byBhIGNsYXNzLCBtZXRob2RzIG9mIHRoaXMgY2xhc3MpCi0vLyAgIGNvbmN1
cnJlbnRseS4KLS8vIHRocmVhZC1ob3N0aWxlOiBpdCBpcyBub3Qgc2FmZSBmb3IgbXVsdGlwbGUg
dGhyZWFkcyB0byBjYWxsIHRoaXMKLS8vICAgcm91dGluZSAob3IgbWV0aG9kcyBvZiB0aGlzIGNs
YXNzKSBjb25jdXJyZW50bHkuICBJbiBnZmxhZ3MsCi0vLyAgIG1vc3QgdGhyZWFkLWhvc3RpbGUg
cm91dGluZXMgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBlYXJseSBpbiwKLS8vICAgb3IgZXZl
biBiZWZvcmUsIG1haW4oKSAtLSB0aGF0IGlzLCBiZWZvcmUgdGhyZWFkcyBhcmUgc3Bhd25lZC4K
LS8vIHRocmVhZC1jb21wYXRpYmxlOiBpdCBpcyBzYWZlIGZvciBtdWx0aXBsZSB0aHJlYWRzIHRv
IHJlYWQgZnJvbQotLy8gICB0aGlzIHZhcmlhYmxlICh3aGVuIGFwcGxpZWQgdG8gdmFyaWFibGVz
KSwgb3IgdG8gY2FsbCBjb25zdAotLy8gICBtZXRob2RzIG9mIHRoaXMgY2xhc3MgKHdoZW4gYXBw
bGllZCB0byBjbGFzc2VzKSwgYXMgbG9uZyBhcyBubwotLy8gICBvdGhlciB0aHJlYWQgaXMgd3Jp
dGluZyB0byB0aGUgdmFyaWFibGUgb3IgY2FsbGluZyBub24tY29uc3QKLS8vICAgbWV0aG9kcyBv
ZiB0aGlzIGNsYXNzLgotCi0jaWZuZGVmIEdGTEFHU19HRkxBR1NfSF8KLSNkZWZpbmUgR0ZMQUdT
X0dGTEFHU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImdmbGFnc19kZWNsYXJlLmgiIC8vIElXWVUgcHJhZ21hOiBleHBvcnQKLQotCi0vLyBX
ZSBhbHdheXMgd2FudCB0byBleHBvcnQgdmFyaWFibGVzIGRlZmluZWQgaW4gdXNlciBjb2RlCi0j
aWZuZGVmIEdGTEFHU19ETExfREVGSU5FX0ZMQUcKLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgIGRl
ZmluZSBHRkxBR1NfRExMX0RFRklORV9GTEFHIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgZWxz
ZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwotIyAgZW5kaWYKLSNlbmRpZgot
Ci0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
VG8gYWN0dWFsbHkgZGVmaW5lIGEgZmxhZyBpbiBhIGZpbGUsIHVzZSBERUZJTkVfYm9vbCwKLS8v
IERFRklORV9zdHJpbmcsIGV0Yy4gYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUuICBZb3UgbWF5
IGFsc28gZmluZAotLy8gaXQgdXNlZnVsIHRvIHJlZ2lzdGVyIGEgdmFsaWRhdG9yIHdpdGggdGhl
IGZsYWcuICBUaGlzIGVuc3VyZXMgdGhhdAotLy8gd2hlbiB0aGUgZmxhZyBpcyBwYXJzZWQgZnJv
bSB0aGUgY29tbWFuZGxpbmUsIG9yIGlzIGxhdGVyIHNldCB2aWEKLS8vIFNldENvbW1hbmRMaW5l
T3B0aW9uLCB3ZSBjYWxsIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uLiBJdCBpcyBfbm90XwotLy8g
Y2FsbGVkIHdoZW4geW91IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIGZsYWcgZGlyZWN0bHkgdXNp
bmcgdGhlID0gb3BlcmF0b3IuCi0vLwotLy8gVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gc2hvdWxk
IHJldHVybiB0cnVlIGlmIHRoZSBmbGFnIHZhbHVlIGlzIHZhbGlkLCBhbmQKLS8vIGZhbHNlIG90
aGVyd2lzZS4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIHRoZSBuZXcgc2V0dGlu
ZyBvZiB0aGUKLS8vIGZsYWcsIHRoZSBmbGFnIHdpbGwgcmV0YWluIGl0cyBjdXJyZW50IHZhbHVl
LiBJZiBpdCByZXR1cm5zIGZhbHNlIGZvciB0aGUKLS8vIGRlZmF1bHQgdmFsdWUsIFBhcnNlQ29t
bWFuZExpbmVGbGFncygpIHdpbGwgZGllLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gaXMgc2FmZSB0
byBjYWxsIGF0IGdsb2JhbCBjb25zdHJ1Y3QgdGltZSAoYXMgaW4gdGhlCi0vLyBleGFtcGxlIGJl
bG93KS4KLS8vCi0vLyBFeGFtcGxlIHVzZToKLS8vICAgIHN0YXRpYyBib29sIFZhbGlkYXRlUG9y
dChjb25zdCBjaGFyKiBmbGFnbmFtZSwgaW50MzIgdmFsdWUpIHsKLS8vICAgICAgIGlmICh2YWx1
ZSA+IDAgJiYgdmFsdWUgPCAzMjc2OCkgICAvLyB2YWx1ZSBpcyBvawotLy8gICAgICAgICByZXR1
cm4gdHJ1ZTsKLS8vICAgICAgIHByaW50ZigiSW52YWxpZCB2YWx1ZSBmb3IgLS0lczogJWRcbiIs
IGZsYWduYW1lLCAoaW50KXZhbHVlKTsKLS8vICAgICAgIHJldHVybiBmYWxzZTsKLS8vICAgIH0K
LS8vICAgIERFRklORV9pbnQzMihwb3J0LCAwLCAiV2hhdCBwb3J0IHRvIGxpc3RlbiBvbiIpOwot
Ly8gICAgc3RhdGljIGJvb2wgZHVtbXkgPSBSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Bv
cnQsICZWYWxpZGF0ZVBvcnQpOwotCi0vLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJl
Z2lzdGVyZWQsIGZhbHNlIGlmIG5vdCAoYmVjYXVzZSB0aGUKLS8vIGZpcnN0IGFyZ3VtZW50IGRv
ZXNuJ3QgcG9pbnQgdG8gYSBjb21tYW5kLWxpbmUgZmxhZywgb3IgYmVjYXVzZSBhCi0vLyB2YWxp
ZGF0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB0aGlzIGZsYWcpLgotZXh0ZXJuIEdGTEFH
U19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBib29sKiAgICAgICAg
ZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgYm9vbCkpOwotZXh0ZXJuIEdG
TEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBpbnQzMiogICAg
ICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgaW50MzIpKTsKLWV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3QgaW50NjQq
ICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGludDY0KSk7Ci1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IHVp
bnQ2NCogICAgICBmbGFnLCBib29sICgqdmFsaWRhdGVfZm4pKGNvbnN0IGNoYXIqLCB1aW50NjQp
KTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29u
c3QgZG91YmxlKiAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGRv
dWJsZSkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRv
cihjb25zdCBzdGQ6OnN0cmluZyogZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFy
KiwgY29uc3Qgc3RkOjpzdHJpbmcmKSk7Ci0KLS8vIENvbnZlbmllbmNlIG1hY3JvIGZvciB0aGUg
cmVnaXN0cmF0aW9uIG9mIGEgZmxhZyB2YWxpZGF0b3IKLSNkZWZpbmUgREVGSU5FX3ZhbGlkYXRv
cihuYW1lLCB2YWxpZGF0b3IpIFwKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuYW1lIyNfdmFsaWRh
dG9yX3JlZ2lzdGVyZWQgPSBcCi0gICAgICAgICAgICBHRkxBR1NfTkFNRVNQQUNFOjpSZWdpc3Rl
ckZsYWdWYWxpZGF0b3IoJkZMQUdTXyMjbmFtZSwgdmFsaWRhdG9yKQotCi0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLyBUaGVzZSBtZXRob2RzIGFyZSB0aGUgYmVzdCB3YXkgdG8gZ2V0IGFjY2VzcyB0byBp
bmZvIGFib3V0IHRoZQotLy8gbGlzdCBvZiBjb21tYW5kbGluZSBmbGFncy4gIE5vdGUgdGhhdCB0
aGVzZSByb3V0aW5lcyBhcmUgcHJldHR5IHNsb3cuCi0vLyAgIEdldEFsbEZsYWdzOiBtb3N0bHkt
Y29tcGxldGUgaW5mbyBhYm91dCB0aGUgbGlzdCwgc29ydGVkIGJ5IGZpbGUuCi0vLyAgIFNob3dV
c2FnZVdpdGhGbGFnczogcHJldHR5LXByaW50cyB0aGUgbGlzdCB0byBzdGRvdXQgKHdoYXQgLS1o
ZWxwIGRvZXMpCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0OiBsaW1pdCB0byBmaWxl
bmFtZXMgd2l0aCByZXN0cmljdCBhcyBhIHN1YnN0cgotLy8KLS8vIEluIGFkZGl0aW9uIHRvIGFj
Y2Vzc2luZyBmbGFncywgeW91IGNhbiBhbHNvIGFjY2VzcyBhcmd2WzBdICh0aGUgcHJvZ3JhbQot
Ly8gbmFtZSkgYW5kIGFyZ3YgKHRoZSBlbnRpcmUgY29tbWFuZGxpbmUpLCB3aGljaCB3ZSBzb2Nr
IGF3YXkgYSBjb3B5IG9mLgotLy8gVGhlc2UgdmFyaWFibGVzIGFyZSBzdGF0aWMsIHNvIHlvdSBz
aG91bGQgb25seSBzZXQgdGhlbSBvbmNlLgotLy8KLS8vIE5vIG5lZWQgdG8gZXhwb3J0IHRoaXMg
ZGF0YSBvbmx5IHN0cnVjdHVyZSBmcm9tIERMTCwgYXZvaWRpbmcgVlMgd2FybmluZyA0MjUxLgot
c3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8gewotICBzdGQ6OnN0cmluZyBuYW1lOyAgICAgICAg
ICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIHR5cGU7ICAgICAgICAg
ICAgLy8gdGhlIHR5cGUgb2YgdGhlIGZsYWc6IGludDMyLCBldGMKLSAgc3RkOjpzdHJpbmcgZGVz
Y3JpcHRpb247ICAgICAvLyB0aGUgImhlbHAgdGV4dCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBmbGFn
Ci0gIHN0ZDo6c3RyaW5nIGN1cnJlbnRfdmFsdWU7ICAgLy8gdGhlIGN1cnJlbnQgdmFsdWUsIGFz
IGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWU7ICAgLy8gdGhlIGRlZmF1bHQg
dmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGZpbGVuYW1lOyAgICAgICAgLy8gJ2Ns
ZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5hbWUgaG9sZGluZyB0aGUgZmxhZwotICBib29sIGhhc192
YWxpZGF0b3JfZm47ICAgICAgIC8vIHRydWUgaWYgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yIGNhbGxl
ZCBvbiB0aGlzIGZsYWcKLSAgYm9vbCBpc19kZWZhdWx0OyAgICAgICAgICAgICAvLyB0cnVlIGlm
IHRoZSBmbGFnIGhhcyB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkgZnJvbSB0aGUgY21kbGlu
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHZpYSBTZXRDb21tYW5kTGlu
ZU9wdGlvbgotICBjb25zdCB2b2lkKiBmbGFnX3B0cjsgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhl
IGZsYWcncyBjdXJyZW50IHZhbHVlIChpLmUuIEZMQUdTX2ZvbykKLX07Ci0KLS8vIFVzaW5nIHRo
aXMgaW5zaWRlIG9mIGEgdmFsaWRhdG9yIGlzIGEgcmVjaXBlIGZvciBhIGRlYWRsb2NrLgotLy8g
VE9ETyh1c2VyKSBGaXggbG9ja2luZyB3aGVuIHZhbGlkYXRvcnMgYXJlIHJ1bm5pbmcsIHRvIG1h
a2UgaXQgc2FmZSB0bwotLy8gY2FsbCB2YWxpZGF0b3JzIGR1cmluZyBQYXJzZUFsbEZsYWdzLgot
Ly8gQWxzbyBtYWtlIHN1cmUgdGhlbiB0byB1bmNvbW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgdW5p
dCB0ZXN0IGluCi0vLyBnZmxhZ3NfdW5pdHRlc3Quc2gKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
dm9pZCBHZXRBbGxGbGFncyhzdGQ6OnZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiogT1VUUFVU
KTsKLS8vIFRoZXNlIHR3byBhcmUgYWN0dWFsbHkgZGVmaW5lZCBpbiBnZmxhZ3NfcmVwb3J0aW5n
LmNjLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIFNob3dVc2FnZVdpdGhGbGFncyhjb25z
dCBjaGFyICphcmd2MCk7ICAvLyB3aGF0IC0taGVscCBkb2VzCi1leHRlcm4gR0ZMQUdTX0RMTF9E
RUNMIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QoY29uc3QgY2hhciAqYXJndjAsIGNv
bnN0IGNoYXIgKnJlc3RyaWN0KTsKLQotLy8gQ3JlYXRlIGEgZGVzY3JpcHRpdmUgc3RyaW5nIGZv
ciBhIGZsYWcuCi0vLyBHb2VzIHRvIHNvbWUgdHJvdWJsZSB0byBtYWtlIHByZXR0eSBsaW5lIGJy
ZWFrcy4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgRGVzY3JpYmVPbmVGbGFn
KGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcpOwotCi0vLyBUaHJlYWQtaG9zdGlsZTsg
bWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLWV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTZXRBcmd2KGludCBhcmdjLCBjb25zdCBjaGFyKiogYXJn
dik7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0aHJlYWQtc2FmZSBhcyBsb25n
IGFzIFNldEFyZ3YoKSBpcwotLy8gb25seSBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0
LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IEdldEFyZ3ZzKCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIEdldEFyZ3Yo
KTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG9mIGFyZ3YgYXMgYSBzdHJpbmcKLWV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogR2V0QXJndjAoKTsgICAgICAgICAgICAgICAg
ICAgICAvLyBvbmx5IGFyZ3YwCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQzMiBHZXRBcmd2
U3VtKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2ltcGxlIGNoZWNrc3VtIG9mIGFyZ3YK
LWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25OYW1l
KCk7ICAgICAgICAvLyBhcmd2MCwgb3IgIlVOS05PV04iIGlmIG5vdCBzZXQKLWV4dGVybiBHRkxB
R1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25TaG9ydE5hbWUoKTsgICAv
LyBiYXNlbmFtZShhcmd2MCkKLQotLy8gUHJvZ3JhbVVzYWdlKCkgaXMgdGhyZWFkLXNhZmUgYXMg
bG9uZyBhcyBTZXRVc2FnZU1lc3NhZ2UoKSBpcyBvbmx5Ci0vLyBjYWxsZWQgYmVmb3JlIGFueSB0
aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFyKiBQcm9ncmFt
VXNhZ2UoKTsgICAgICAgICAgICAgICAgIC8vIHN0cmluZyBzZXQgYnkgU2V0VXNhZ2VNZXNzYWdl
KCkKLQotLy8gVmVyc2lvblN0cmluZygpIGlzIHRocmVhZC1zYWZlIGFzIGxvbmcgYXMgU2V0VmVy
c2lvblN0cmluZygpIGlzIG9ubHkKLS8vIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMgc3RhcnQu
Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIFZlcnNpb25TdHJpbmcoKTsgICAg
ICAgICAgICAgICAgLy8gc3RyaW5nIHNldCBieSBTZXRWZXJzaW9uU3RyaW5nKCkKLQotCi0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBOb3JtYWxseSB5b3UgYWNjZXNzIGNvbW1hbmRsaW5lIGZsYWdzIGJ5
IGp1c3Qgc2F5aW5nICJpZiAoRkxBR1NfZm9vKSIKLS8vIG9yIHdoYXRldmVyLCBhbmQgc2V0IHRo
ZW0gYnkgY2FsbGluZyAiRkxBR1NfZm9vID0gYmFyIiAob3IsIG1vcmUKLS8vIGNvbW1vbmx5LCB2
aWEgdGhlIERFRklORV9mb28gbWFjcm8pLiAgQnV0IGlmIHlvdSBuZWVkIGEgYml0IG1vcmUKLS8v
IGNvbnRyb2wsIHdlIGhhdmUgcHJvZ3JhbW1hdGljIHdheXMgdG8gZ2V0L3NldCB0aGUgZmxhZ3Mg
YXMgd2VsbC4KLS8vIFRoZXNlIHByb2dyYW1tYXRpYyB3YXlzIHRvIGFjY2VzcyBmbGFncyBhcmUg
dGhyZWFkLXNhZmUsIGJ1dCBkaXJlY3QKLS8vIGFjY2VzcyBpcyBvbmx5IHRocmVhZC1jb21wYXRp
YmxlLgotCi0vLyBSZXR1cm4gdHJ1ZSBpZmYgdGhlIGZsYWduYW1lIHdhcyBmb3VuZC4KLS8vIE9V
VFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncyB2YWx1ZSwgb3IgdW5jaGFuZ2VkIGlmIHdlIHJldHVy
biBmYWxzZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBHZXRDb21tYW5kTGluZU9wdGlv
bihjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OnN0cmluZyogT1VUUFVUKTsKLQotLy8gUmV0dXJuIHRy
dWUgaWZmIHRoZSBmbGFnbmFtZSB3YXMgZm91bmQuIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcn
cwotLy8gQ29tbWFuZExpbmVGbGFnSW5mbyBvciB1bmNoYW5nZWQgaWYgd2UgcmV0dXJuIGZhbHNl
LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIEdldENvbW1hbmRMaW5lRmxhZ0luZm8oY29u
c3QgY2hhciogbmFtZSwgQ29tbWFuZExpbmVGbGFnSW5mbyogT1VUUFVUKTsKLQotLy8gUmV0dXJu
IHRoZSBDb21tYW5kTGluZUZsYWdJbmZvIG9mIHRoZSBmbGFnbmFtZS4gIGV4aXQoKSBpZiBuYW1l
IG5vdCBmb3VuZC4KLS8vIEV4YW1wbGUgdXNhZ2UsIHRvIGNoZWNrIGlmIGEgZmxhZydzIHZhbHVl
IGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCB2YWx1ZToKLS8vICAgaWYgKEdldENvbW1hbmRMaW5l
RmxhZ0luZm9PckRpZSgiZm9vIikuaXNfZGVmYXVsdCkgLi4uCi1leHRlcm4gR0ZMQUdTX0RMTF9E
RUNMIENvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKGNvbnN0
IGNoYXIqIG5hbWUpOwotCi1lbnVtIEdGTEFHU19ETExfREVDTCBGbGFnU2V0dGluZ01vZGUgewot
ICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2YWx1ZSAoY2FuIGNhbGwgdGhpcyBtdWx0aXBsZSB0aW1l
cykuCi0gIFNFVF9GTEFHU19WQUxVRSwKLSAgLy8gdXBkYXRlIHRoZSBmbGFnJ3MgdmFsdWUsIGJ1
dCAqb25seSBpZiogaXQgaGFzIG5vdCB5ZXQgYmVlbiB1cGRhdGVkCi0gIC8vIHdpdGggU0VUX0ZM
QUdTX1ZBTFVFLCBTRVRfRkxBR19JRl9ERUZBVUxULCBvciAiRkxBR1NfeHh4ID0gbm9uZGVmIi4K
LSAgU0VUX0ZMQUdfSUZfREVGQVVMVCwKLSAgLy8gc2V0IHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1
ZSB0byB0aGlzLiAgSWYgdGhlIGZsYWcgaGFzIG5vdCB5ZXQgdXBkYXRlZAotICAvLyB5ZXQgKHZp
YSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RFRkFVTFQsIG9yICJGTEFHU194eHggPSBu
b25kZWYiKQotICAvLyBjaGFuZ2UgdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlIHRvIHRoZSBuZXcg
ZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgotICBTRVRfRkxBR1NfREVGQVVMVAotfTsKLQotLy8gU2V0
IGEgcGFydGljdWxhciBmbGFnICgiY29tbWFuZCBsaW5lIG9wdGlvbiIpLiAgUmV0dXJucyBhIHN0
cmluZwotLy8gZGVzY3JpYmluZyB0aGUgbmV3IHZhbHVlIHRoYXQgdGhlIG9wdGlvbiBoYXMgYmVl
biBzZXQgdG8uICBUaGUKLS8vIHJldHVybiB2YWx1ZSBBUEkgaXMgbm90IHdlbGwtc3BlY2lmaWVk
LCBzbyBiYXNpY2FsbHkganVzdCBkZXBlbmQgb24KLS8vIGl0IHRvIGJlIGVtcHR5IGlmIHRoZSBz
ZXR0aW5nIGZhaWxlZCBmb3Igc29tZSByZWFzb24gLS0gdGhlIG5hbWUgaXMKLS8vIG5vdCBhIHZh
bGlkIGZsYWcgbmFtZSwgb3IgdGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlkIHZhbHVlIC0tIGFuZAot
Ly8gbm9uLWVtcHR5IGVsc2UuCi0KLS8vIFNldENvbW1hbmRMaW5lT3B0aW9uIHVzZXMgc2V0X21v
ZGUgPT0gU0VUX0ZMQUdTX1ZBTFVFICh0aGUgY29tbW9uIGNhc2UpCi1leHRlcm4gR0ZMQUdTX0RM
TF9ERUNMIHN0ZDo6c3RyaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uICAgICAgICAoY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBzdGQ6
OnN0cmluZyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IGNoYXIqIHZhbHVlLCBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpOwotCi0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBTYXZlcyB0aGUgc3RhdGVzICh2YWx1ZSwgZGVmYXVsdCB2YWx1ZSwgd2hldGhl
ciB0aGUgdXNlciBoYXMgc2V0Ci0vLyB0aGUgZmxhZywgcmVnaXN0ZXJlZCB2YWxpZGF0b3JzLCBl
dGMpIG9mIGFsbCBmbGFncywgYW5kIHJlc3RvcmVzCi0vLyB0aGVtIHdoZW4gdGhlIEZsYWdTYXZl
ciBpcyBkZXN0cm95ZWQuICBUaGlzIGlzIHZlcnkgdXNlZnVsIGluCi0vLyB0ZXN0cywgc2F5LCB3
aGVuIHlvdSB3YW50IHRvIGxldCB5b3VyIHRlc3RzIGNoYW5nZSB0aGUgZmxhZ3MsIGJ1dAotLy8g
bWFrZSBzdXJlIHRoYXQgdGhleSBnZXQgcmV2ZXJ0ZWQgdG8gdGhlIG9yaWdpbmFsIHN0YXRlcyB3
aGVuIHlvdXIKLS8vIHRlc3QgaXMgY29tcGxldGUuCi0vLwotLy8gRXhhbXBsZSB1c2FnZToKLS8v
ICAgdm9pZCBUZXN0Rm9vKCkgewotLy8gICAgIEZsYWdTYXZlciBzMTsKLS8vICAgICBGTEFHX2Zv
byA9IGZhbHNlOwotLy8gICAgIEZMQUdfYmFyID0gInNvbWUgdmFsdWUiOwotLy8KLS8vICAgICAv
LyB0ZXN0IGhhcHBlbnMgaGVyZS4gIFlvdSBjYW4gcmV0dXJuIGF0IGFueSB0aW1lCi0vLyAgICAg
Ly8gd2l0aG91dCB3b3JyeWluZyBhYm91dCByZXN0b3JpbmcgdGhlIEZMQUcgdmFsdWVzLgotLy8g
ICB9Ci0vLwotLy8gTm90ZTogVGhpcyBjbGFzcyBpcyBtYXJrZWQgd2l0aCBHRkxBR1NfQVRUUklC
VVRFX1VOVVNFRCBiZWNhdXNlIGFsbAotLy8gdGhlIHdvcmsgaXMgZG9uZSBpbiB0aGUgY29uc3Ry
dWN0b3IgYW5kIGRlc3RydWN0b3IsIHNvIGluIHRoZSBzdGFuZGFyZAotLy8gdXNhZ2UgZXhhbXBs
ZSBhYm92ZSwgdGhlIGNvbXBpbGVyIHdvdWxkIGNvbXBsYWluIHRoYXQgaXQncyBhbgotLy8gdW51
c2VkIHZhcmlhYmxlLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgdGhyZWFkLXNhZmUuICBIb3dldmVy
LCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMgdG8KLS8vIGV4YWN0bHkgdGhlIHNldCBvZiBmbGFncyB0
aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBkdXJpbmcgaXRzCi0vLyBsaWZldGltZSwgc28gY29uY3Vy
cmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8gdGhvc2UgZmxhZ3MKLS8vIChpLmUuIEZMQUdTX2ZvbyBp
bnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1hbmRMaW5lT3B0aW9uKCkpIGlzIHVuc2FmZS4KLQotY2xh
c3MgR0ZMQUdTX0RMTF9ERUNMIEZsYWdTYXZlciB7Ci0gcHVibGljOgotICBGbGFnU2F2ZXIoKTsK
LSAgfkZsYWdTYXZlcigpOwotCi0gcHJpdmF0ZToKLSAgY2xhc3MgRmxhZ1NhdmVySW1wbCogaW1w
bF87ICAgLy8gd2UgdXNlIHBpbXBsIGhlcmUgdG8ga2VlcCBBUEkgc3RlYWR5Ci0KLSAgRmxhZ1Nh
dmVyKGNvbnN0IEZsYWdTYXZlciYpOyAgLy8gbm8gY29weWluZyEKLSAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgRmxhZ1NhdmVyJik7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU29tZSBkZXByZWNh
dGVkIG9yIGhvcGVmdWxseS1zb29uLXRvLWJlLWRlcHJlY2F0ZWQgZnVuY3Rpb25zLgotCi0vLyBU
aGlzIGlzIG9mdGVuIHVzZWQgZm9yIGxvZ2dpbmcuICBUT0RPKGNzaWx2ZXJzKTogZmlndXJlIG91
dCBhIGJldHRlciB3YXkKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcgQ29tbWFu
ZGxpbmVGbGFnc0ludG9TdHJpbmcoKTsKLS8vIFVzdWFsbHkgd2hlcmUgdGhpcyBpcyB1c2VkLCBh
IEZsYWdTYXZlciBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotZXh0ZXJuIEdGTEFHU19ETExfREVD
TAotYm9vbCBSZWFkRmxhZ3NGcm9tU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBmbGFnZmlsZWNv
bnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByb2dfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVycm9yc19hcmVfZmF0YWwpOyAgLy8gdXNl
cyBTRVRfRkxBR1NfVkFMVUUKLQotLy8gVGhlc2UgbGV0IHlvdSBtYW51YWxseSBpbXBsZW1lbnQg
LS1mbGFnZmlsZSBmdW5jdGlvbmFsaXR5LgotLy8gREVQUkVDQVRFRC4KLWV4dGVybiBHRkxBR1Nf
RExMX0RFQ0wgYm9vbCBBcHBlbmRGbGFnc0ludG9GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgY2hhciogcHJvZ19uYW1lKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9v
bCBSZWFkRnJvbUZsYWdzRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNo
YXIqIHByb2dfbmFtZSwgYm9vbCBlcnJvcnNfYXJlX2ZhdGFsKTsgICAvLyB1c2VzIFNFVF9GTEFH
U19WQUxVRQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBVc2VmdWwgcm91dGluZXMgZm9yIGluaXRp
YWxpemluZyBmbGFncyBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLS8vIEluIGVhY2ggY2FzZSwgaWYg
J3Zhcm5hbWUnIGRvZXMgbm90IGV4aXN0IGluIHRoZSBlbnZpcm9ubWVudAotLy8gcmV0dXJuIGRl
ZnZhbC4gIElmICd2YXJuYW1lJyBkb2VzIGV4aXN0IGJ1dCBpcyBub3QgdmFsaWQKLS8vIChlLmcu
LCBub3QgYSBudW1iZXIgZm9yIGFuIGludDMyIGZsYWcpLCBhYm9ydCB3aXRoIGFuIGVycm9yLgot
Ly8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlLiAgTk9URTogZm9yIGJvb2xlYW5zLCBmb3Ig
dHJ1ZSB1c2UKLS8vICd0JyBvciAnVCcgb3IgJ3RydWUnIG9yICcxJywgZm9yIGZhbHNlICdmJyBv
ciAnRicgb3IgJ2ZhbHNlJyBvciAnMCcuCi0KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBC
b29sRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBib29sIGRlZnZhbCk7Ci1leHRlcm4gR0ZM
QUdTX0RMTF9ERUNMIGludDMyIEludDMyRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBpbnQz
MiBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBpbnQ2NCBJbnQ2NEZyb21FbnYoY29u
c3QgY2hhciAqdmFybmFtZSwgaW50NjQgZGVmdmFsKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
dWludDY0IFVpbnQ2NEZyb21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgdWludDY0IGRlZnZhbCk7
Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGRvdWJsZSBEb3VibGVGcm9tRW52KGNvbnN0IGNoYXIg
KnZhcm5hbWUsIGRvdWJsZSBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBj
aGFyICpTdHJpbmdGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIGNvbnN0IGNoYXIgKmRlZnZh
bCk7Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFRoZSBuZXh0IHR3byBmdW5jdGlvbnMgcGFyc2Ug
Z2ZsYWdzIGZyb20gbWFpbigpOgotCi0vLyBTZXQgdGhlICJ1c2FnZSIgbWVzc2FnZSBmb3IgdGhp
cyBwcm9ncmFtLiAgRm9yIGV4YW1wbGU6Ci0vLyAgIHN0cmluZyB1c2FnZSgiVGhpcyBwcm9ncmFt
IGRvZXMgbm90aGluZy4gIFNhbXBsZSB1c2FnZTpcbiIpOwotLy8gICB1c2FnZSArPSBhcmd2WzBd
ICsgIiA8dXNlbGVzc2FyZzE+IDx1c2VsZXNzYXJnMj4iOwotLy8gICBTZXRVc2FnZU1lc3NhZ2Uo
dXNhZ2UpOwotLy8gRG8gbm90IGluY2x1ZGUgY29tbWFuZGxpbmUgZmxhZ3MgaW4gdGhlIHVzYWdl
OiB3ZSBkbyB0aGF0IGZvciB5b3UhCi0vLyBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2Fs
bGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUgc3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RF
Q0wgdm9pZCBTZXRVc2FnZU1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIHVzYWdlKTsKLQotLy8g
U2V0cyB0aGUgdmVyc2lvbiBzdHJpbmcsIHdoaWNoIGlzIGVtaXR0ZWQgd2l0aCAtLXZlcnNpb24u
Ci0vLyBGb3IgaW5zdGFuY2U6IFNldFZlcnNpb25TdHJpbmcoIjEuMyIpOwotLy8gVGhyZWFkLWhv
c3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMgYXJlIHNwYXduZWQu
Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2V0VmVyc2lvblN0cmluZyhjb25zdCBzdGQ6
OnN0cmluZyYgdmVyc2lvbik7Ci0KLQotLy8gTG9va3MgZm9yIGZsYWdzIGluIGFyZ3YgYW5kIHBh
cnNlcyB0aGVtLiAgUmVhcnJhbmdlcyBhcmd2IHRvIHB1dAotLy8gZmxhZ3MgZmlyc3QsIG9yIHJl
bW92ZXMgdGhlbSBlbnRpcmVseSBpZiByZW1vdmVfZmxhZ3MgaXMgdHJ1ZS4KLS8vIElmIGEgZmxh
ZyBpcyBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgZmxhZwot
Ly8gZmlsZSwgdGhlIGxhc3QgZGVmaW5pdGlvbiBpcyB1c2VkLiAgUmV0dXJucyB0aGUgaW5kZXgg
KGludG8gYXJndikKLS8vIG9mIHRoZSBmaXJzdCBub24tZmxhZyBhcmd1bWVudC4KLS8vIFNlZSB0
b3Atb2YtZmlsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMgZnVuY3Rpb24uCi0jaWZuZGVmIFNX
SUcgICAvLyBJbiBzd2lnLCB1c2UgUGFyc2VDb21tYW5kTGluZUZsYWdzU2NyaXB0KCkgaW5zdGVh
ZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWludDMyIFBhcnNlQ29tbWFuZExpbmVGbGFncyhp
bnQgKmFyZ2MsIGNoYXIqKiogYXJndiwgYm9vbCByZW1vdmVfZmxhZ3MpOwotI2VuZGlmCi0KLQot
Ly8gQ2FsbHMgdG8gUGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncyBhbmQgdGhlbiB0bwotLy8g
SGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIGNhbGwg
dG8KLS8vIFBhcnNlQ29tbWFuZExpbmVGbGFncyBkdXJpbmcgaW5pdGlhbGl6YXRpb24sIGluIG9y
ZGVyIHRvIGFsbG93IGZvcgotLy8gY2hhbmdpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIHNvbWUgRkxB
R1MgKHZpYQotLy8gZS5nLiBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlIGNhbGxzKSBiZXR3
ZWVuIHRoZSB0aW1lIG9mCi0vLyBjb21tYW5kIGxpbmUgcGFyc2luZyBhbmQgdGhlIHRpbWUgb2Yg
ZHVtcGluZyBoZWxwIGluZm9ybWF0aW9uIGZvcgotLy8gdGhlIGZsYWdzIGFzIGEgcmVzdWx0IG9m
IGNvbW1hbmQgbGluZSBwYXJzaW5nLiAgSWYgYSBmbGFnIGlzCi0vLyBkZWZpbmVkIG1vcmUgdGhh
biBvbmNlIGluIHRoZSBjb21tYW5kIGxpbmUgb3IgZmxhZyBmaWxlLCB0aGUgbGFzdAotLy8gZGVm
aW5pdGlvbiBpcyB1c2VkLiAgUmV0dXJucyB0aGUgaW5kZXggKGludG8gYXJndikgb2YgdGhlIGZp
cnN0Ci0vLyBub24tZmxhZyBhcmd1bWVudC4gIChJZiByZW1vdmVfZmxhZ3MgaXMgdHJ1ZSwgd2ls
bCBhbHdheXMgcmV0dXJuIDEuKQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB1aW50MzIgUGFyc2VD
b21tYW5kTGluZU5vbkhlbHBGbGFncyhpbnQgKmFyZ2MsIGNoYXIqKiogYXJndiwgYm9vbCByZW1v
dmVfZmxhZ3MpOwotCi0vLyBUaGlzIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gZ2ZsYWdzX3JlcG9y
dGluZy5jYy4KLS8vIFRoaXMgZnVuY3Rpb24gaXMgbWlzbmFtZWQgKGl0IGFsc28gaGFuZGxlcyAt
LXZlcnNpb24sIGV0Yy4pLCBidXQKLS8vIGl0J3MgdG9vIGxhdGUgdG8gY2hhbmdlIHRoYXQgbm93
LiA6LSgKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBIYW5kbGVDb21tYW5kTGluZUhlbHBG
bGFncygpOyAgIC8vIGluIGdmbGFnc19yZXBvcnRpbmcuY2MKLQotLy8gQWxsb3cgY29tbWFuZCBs
aW5lIHJlcGFyc2luZy4gIERpc2FibGVzIHRoZSBlcnJvciBub3JtYWxseQotLy8gZ2VuZXJhdGVk
IHdoZW4gYW4gdW5rbm93biBmbGFnIGlzIGZvdW5kLCBzaW5jZSBpdCBtYXkgYmUgZm91bmQgaW4g
YQotLy8gbGF0ZXIgcGFyc2UuICBUaHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJl
Zm9yZSBhbnkgdGhyZWFkcwotLy8gYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IHZvaWQgQWxsb3dDb21tYW5kTGluZVJlcGFyc2luZygpOwotCi0vLyBSZXBhcnNlIHRoZSBmbGFn
cyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlY29nbml6ZWQuICBPbmx5IGZsYWdzCi0vLyByZWdp
c3RlcmVkIHNpbmNlIHRoZSBsYXN0IHBhcnNlIHdpbGwgYmUgcmVjb2duaXplZC4gIEFueSBmbGFn
IHZhbHVlCi0vLyBtdXN0IGJlIHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIGFyZ3VtZW50IHVzaW5n
ICI9Iiwgbm90IGFzIGEKLS8vIHNlcGFyYXRlIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0aGF0IGZv
bGxvd3MgdGhlIGZsYWcgYXJndW1lbnQuCi0vLyBJbnRlbmRlZCBmb3IgaGFuZGxpbmcgZmxhZ3Mg
ZnJvbSBkeW5hbWljYWxseSBsb2FkZWQgbGlicmFyaWVzLAotLy8gc2luY2UgdGhlaXIgZmxhZ3Mg
YXJlIG5vdCByZWdpc3RlcmVkIHVudGlsIHRoZXkgYXJlIGxvYWRlZC4KLWV4dGVybiBHRkxBR1Nf
RExMX0RFQ0wgdm9pZCBSZXBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoKTsKLQotLy8gQ2xl
YW4gdXAgbWVtb3J5IGFsbG9jYXRlZCBieSBmbGFncy4gIFRoaXMgaXMgb25seSBuZWVkZWQgdG8g
cmVkdWNlCi0vLyB0aGUgcXVhbnRpdHkgb2YgInBvdGVudGlhbGx5IGxlYWtlZCIgcmVwb3J0cyBl
bWl0dGVkIGJ5IG1lbW9yeQotLy8gZGVidWdnaW5nIHRvb2xzIHN1Y2ggYXMgdmFsZ3JpbmQuICBJ
dCBpcyBub3QgcmVxdWlyZWQgZm9yIG5vcm1hbAotLy8gb3BlcmF0aW9uLCBvciBmb3IgdGhlIGdv
b2dsZSBwZXJmdG9vbHMgaGVhcC1jaGVja2VyLiAgSXQgbXVzdCBvbmx5Ci0vLyBiZSBjYWxsZWQg
d2hlbiB0aGUgcHJvY2VzcyBpcyBhYm91dCB0byBleGl0LCBhbmQgYWxsIHRocmVhZHMgdGhhdAot
Ly8gbWlnaHQgYWNjZXNzIGZsYWdzIGFyZSBxdWllc2NlbnQuICBSZWZlcmVuY2luZyBmbGFncyBh
ZnRlciB0aGlzIGlzCi0vLyBjYWxsZWQgd2lsbCBoYXZlIHVuZXhwZWN0ZWQgY29uc2VxdWVuY2Vz
LiAgVGhpcyBpcyBub3Qgc2FmZSB0byBydW4KLS8vIHdoZW4gbXVsdGlwbGUgdGhyZWFkcyBtaWdo
dCBiZSBydW5uaW5nOiB0aGUgZnVuY3Rpb24gaXMKLS8vIHRocmVhZC1ob3N0aWxlLgotZXh0ZXJu
IEdGTEFHU19ETExfREVDTCB2b2lkIFNodXREb3duQ29tbWFuZExpbmVGbGFncygpOwotCi0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBOb3cgY29tZSB0aGUgY29tbWFuZCBsaW5lIGZsYWcgZGVjbGFyYXRp
b24vZGVmaW5pdGlvbiBtYWNyb3MgdGhhdAotLy8gd2lsbCBhY3R1YWxseSBiZSB1c2VkLiAgVGhl
eSdyZSBraW5kIG9mIGhhaXJ5LiAgQSBtYWpvciByZWFzb24KLS8vIGZvciB0aGlzIGlzIGluaXRp
YWxpemF0aW9uOiB3ZSB3YW50IHBlb3BsZSB0byBiZSBhYmxlIHRvIGFjY2VzcwotLy8gdmFyaWFi
bGVzIGluIGdsb2JhbCBjb25zdHJ1Y3RvcnMgYW5kIGhhdmUgdGhhdCBub3QgY3Jhc2gsIGV2ZW4g
aWYKLS8vIHRoZWlyIGdsb2JhbCBjb25zdHJ1Y3RvciBydW5zIGJlZm9yZSB0aGUgZ2xvYmFsIGNv
bnN0cnVjdG9yIGhlcmUuCi0vLyAoT2J2aW91c2x5LCB3ZSBjYW4ndCBndWFyYW50ZWUgdGhlIGZs
YWdzIHdpbGwgaGF2ZSB0aGUgY29ycmVjdAotLy8gZGVmYXVsdCB2YWx1ZSBpbiB0aGF0IGNhc2Us
IGJ1dCBhdCBsZWFzdCBhY2Nlc3NpbmcgdGhlbSBpcyBzYWZlLikKLS8vIFRoZSBvbmx5IHdheSB0
byBkbyB0aGF0IGlzIGhhdmUgZmxhZ3MgcG9pbnQgdG8gYSBzdGF0aWMgYnVmZmVyLgotLy8gU28g
d2UgbWFrZSBvbmUsIHVzaW5nIGEgdW5pb24gdG8gZW5zdXJlIHByb3BlciBhbGlnbm1lbnQsIGFu
ZAotLy8gdGhlbiB1c2UgcGxhY2VtZW50LW5ldyB0byBhY3R1YWxseSBzZXQgdXAgdGhlIGZsYWcg
d2l0aCB0aGUKLS8vIGNvcnJlY3QgZGVmYXVsdCB2YWx1ZS4gIEluIHRoZSBzYW1lIHZlaW4sIHdl
IGhhdmUgdG8gd29ycnkgYWJvdXQKLS8vIGZsYWcgYWNjZXNzIGluIGdsb2JhbCBkZXN0cnVjdG9y
cywgc28gRmxhZ1JlZ2lzdGVyZXIgaGFzIHRvIGJlCi0vLyBjYXJlZnVsIG5ldmVyIHRvIGRlc3Ry
b3kgdGhlIGZsYWctdmFsdWVzIGl0IGNvbnN0cnVjdHMuCi0vLwotLy8gTm90ZSB0aGF0IHdoZW4g
d2UgZGVmaW5lIGEgZmxhZyB2YXJpYWJsZSBGTEFHU188bmFtZT4sIHdlIGFsc28KLS8vIHByZWVt
cHRpdmVseSBkZWZpbmUgYSBqdW5rIHZhcmlhYmxlLCBGTEFHU19ubzxuYW1lPi4gIFRoaXMgaXMg
dG8KLS8vIGNhdXNlIGEgbGluay10aW1lIGVycm9yIGlmIHNvbWVvbmUgdHJpZXMgdG8gZGVmaW5l
IDIgZmxhZ3Mgd2l0aAotLy8gbmFtZXMgbGlrZSAibG9nZ2luZyIgYW5kICJub2xvZ2dpbmciLiAg
V2UgZG8gdGhpcyBiZWNhdXNlIGEgYm9vbAotLy8gZmxhZyBGTEFHIGNhbiBiZSBzZXQgZnJvbSB0
aGUgY29tbWFuZCBsaW5lIHRvIHRydWUgd2l0aCBhICItRkxBRyIKLS8vIGFyZ3VtZW50LCBhbmQg
dG8gZmFsc2Ugd2l0aCBhICItbm9GTEFHIiBhcmd1bWVudCwgYW5kIHNvIHRoaXMgY2FuCi0vLyBw
b3RlbnRpYWxseSBhdmVydCBjb25mdXNpb24uCi0vLwotLy8gV2UgYWxzbyBwdXQgZmxhZ3MgaW50
byB0aGVpciBvd24gbmFtZXNwYWNlLiAgSXQgaXMgcHVycG9zZWZ1bGx5Ci0vLyBuYW1lZCBpbiBh
biBvcGFxdWUgd2F5IHRoYXQgcGVvcGxlIHNob3VsZCBoYXZlIHRyb3VibGUgdHlwaW5nCi0vLyBk
aXJlY3RseS4gIFRoZSBpZGVhIGlzIHRoYXQgREVGSU5FIHB1dHMgdGhlIGZsYWcgaW4gdGhlIHdl
aXJkCi0vLyBuYW1lc3BhY2UsIGFuZCBERUNMQVJFIGltcG9ydHMgdGhlIGZsYWcgZnJvbSB0aGVy
ZSBpbnRvIHRoZSBjdXJyZW50Ci0vLyBuYW1lc3BhY2UuICBUaGUgbmV0IHJlc3VsdCBpcyB0byBm
b3JjZSBwZW9wbGUgdG8gdXNlIERFQ0xBUkUgdG8gZ2V0Ci0vLyBhY2Nlc3MgdG8gYSBmbGFnLCBy
YXRoZXIgdGhhbiBzYXlpbmcgImV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBGTEFHU193aGF0
ZXZlcjsiCi0vLyBvciBzb21lIHN1Y2ggaW5zdGVhZC4gIFdlIHdhbnQgdGhpcyBzbyB3ZSBjYW4g
cHV0IGV4dHJhCi0vLyBmdW5jdGlvbmFsaXR5IChsaWtlIHNhbml0eS1jaGVja2luZykgaW4gREVD
TEFSRSBpZiB3ZSB3YW50LCBhbmQKLS8vIG1ha2Ugc3VyZSBpdCBpcyBwaWNrZWQgdXAgZXZlcnl3
aGVyZS4KLS8vCi0vLyBXZSBhbHNvIHB1dCB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgaW4gdGhl
IG5hbWVzcGFjZSwgc28gdGhhdAotLy8gcGVvcGxlIGNhbid0IERFQ0xBUkVfaW50MzIgc29tZXRo
aW5nIHRoYXQgdGhleSBERUZJTkVfYm9vbCdkCi0vLyBlbHNld2hlcmUuCi0KLWNsYXNzIEdGTEFH
U19ETExfREVDTCBGbGFnUmVnaXN0ZXJlciB7Ci0gcHVibGljOgotICBGbGFnUmVnaXN0ZXJlcihj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB0eXBlLAotICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBoZWxwLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgdm9p
ZCogY3VycmVudF9zdG9yYWdlLCB2b2lkKiBkZWZ2YWx1ZV9zdG9yYWdlKTsKLX07Ci0KLS8vIElm
IHlvdXIgYXBwbGljYXRpb24gI2RlZmluZXMgU1RSSVBfRkxBR19IRUxQIHRvIGEgbm9uLXplcm8g
dmFsdWUKLS8vIGJlZm9yZSAjaW5jbHVkaW5nIHRoaXMgZmlsZSwgd2UgcmVtb3ZlIHRoZSBoZWxw
IG1lc3NhZ2UgZnJvbSB0aGUKLS8vIGJpbmFyeSBmaWxlLiBUaGlzIGNhbiByZWR1Y2UgdGhlIHNp
emUgb2YgdGhlIHJlc3VsdGluZyBiaW5hcnkKLS8vIHNvbWV3aGF0LCBhbmQgbWF5IGFsc28gYmUg
dXNlZnVsIGZvciBzZWN1cml0eSByZWFzb25zLgotCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNv
bnN0IGNoYXIga1N0cmlwcGVkRmxhZ0hlbHBbXTsKLQotCi19IC8vIG5hbWVzcGFjZSBHRkxBR1Nf
TkFNRVNQQUNFCi0KLQotI2lmbmRlZiBTV0lHICAvLyBJbiBzd2lnLCBpZ25vcmUgdGhlIG1haW4g
ZmxhZyBkZWNsYXJhdGlvbnMKLQotI2lmIGRlZmluZWQoU1RSSVBfRkxBR19IRUxQKSAmJiBTVFJJ
UF9GTEFHX0hFTFAgPiAwCi0vLyBOZWVkIHRoaXMgY29uc3RydWN0IHRvIGF2b2lkIHRoZSAnZGVm
aW5lZCBidXQgbm90IHVzZWQnIHdhcm5pbmcuCi0jZGVmaW5lIE1BWUJFX1NUUklQUEVEX0hFTFAo
dHh0KSBcCi0gICAoZmFsc2UgPyAodHh0KSA6IEdGTEFHU19OQU1FU1BBQ0U6OmtTdHJpcHBlZEZs
YWdIZWxwKQotI2Vsc2UKLSNkZWZpbmUgTUFZQkVfU1RSSVBQRURfSEVMUCh0eHQpIHR4dAotI2Vu
ZGlmCi0KLS8vIEVhY2ggY29tbWFuZC1saW5lIGZsYWcgaGFzIHR3byB2YXJpYWJsZXMgYXNzb2Np
YXRlZCB3aXRoIGl0OiBvbmUKLS8vIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCBvbmUgd2l0
aCB0aGUgZGVmYXVsdCB2YWx1ZS4gIEhvd2V2ZXIsCi0vLyB3ZSBoYXZlIGEgdGhpcmQgdmFyaWFi
bGUsIHdoaWNoIGlzIHdoZXJlIHZhbHVlIGlzIGFzc2lnbmVkOyBpdCdzIGEKLS8vIGNvbnN0YW50
LiAgVGhpcyBndWFyYW50ZWVzIHRoYXQgRkxBR18jI3ZhbHVlIGlzIGluaXRpYWxpemVkIGF0Ci0v
LyBzdGF0aWMgaW5pdGlhbGl6YXRpb24gdGltZSAoZS5nLiBiZWZvcmUgcHJvZ3JhbS1zdGFydCkg
cmF0aGVyIHRoYW4KLS8vIHRoYW4gZ2xvYmFsIGNvbnN0cnVjdGlvbiB0aW1lICh3aGljaCBpcyBh
ZnRlciBwcm9ncmFtLXN0YXJ0IGJ1dAotLy8gYmVmb3JlIG1haW4pLCBhdCBsZWFzdCB3aGVuICd2
YWx1ZScgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuICBXZQotLy8gdXNlIGEgc21hbGwgdHJp
Y2sgZm9yIHRoZSAiZGVmYXVsdCB2YWx1ZSIgdmFyaWFibGUsIGFuZCBjYWxsIGl0Ci0vLyBGTEFH
U19ubzxuYW1lPi4gIFRoaXMgc2VydmVzIHRoZSBzZWNvbmQgcHVycG9zZSBvZiBhc3N1cmluZyBh
Ci0vLyBjb21waWxlIGVycm9yIGlmIHNvbWVvbmUgdHJpZXMgdG8gZGVmaW5lIGEgZmxhZyBuYW1l
ZCBubzxuYW1lPgotLy8gd2hpY2ggaXMgaWxsZWdhbCAoLS1mb28gYW5kIC0tbm9mb28gYm90aCBh
ZmZlY3QgdGhlICJmb28iIGZsYWcpLgotI2RlZmluZSBERUZJTkVfVkFSSUFCTEUodHlwZSwgc2hv
cnR0eXBlLCBuYW1lLCB2YWx1ZSwgaGVscCkgICAgICAgICAgICAgXAotICBuYW1lc3BhY2UgZkwj
I3Nob3J0dHlwZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHN0YXRpYyBjb25zdCB0eXBlIEZMQUdTX25vbm8jI25hbWUgPSB2YWx1ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIC8qIFdlIGFsd2F5cyB3YW50IHRvIGV4cG9ydCBkZWZp
bmVkIHZhcmlhYmxlcywgZGxsIG9yIG5vICovICAgICAgICAgXAotICAgIEdGTEFHU19ETExfREVG
SU5FX0ZMQUcgdHlwZSBGTEFHU18jI25hbWUgPSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgXAot
ICAgIHR5cGUgRkxBR1Nfbm8jI25hbWUgPSBGTEFHU19ub25vIyNuYW1lOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0
ZXJlciBvXyMjbmFtZSggICAgICAgICAgICAgICAgICAgXAotICAgICAgI25hbWUsICN0eXBlLCBN
QVlCRV9TVFJJUFBFRF9IRUxQKGhlbHApLCBfX0ZJTEVfXywgICAgICAgICAgICAgICAgXAotICAg
ICAgJkZMQUdTXyMjbmFtZSwgJkZMQUdTX25vIyNuYW1lKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB1c2luZyBmTCMjc2hvcnR0eXBlOjpG
TEFHU18jI25hbWUKLQotLy8gRm9yIERFRklORV9ib29sLCB3ZSB3YW50IHRvIGRvIHRoZSBleHRy
YSBjaGVjayB0aGF0IHRoZSBwYXNzZWQtaW4KLS8vIHZhbHVlIGlzIGFjdHVhbGx5IGEgYm9vbCwg
YW5kIG5vdCBhIHN0cmluZyBvciBzb21ldGhpbmcgdGhhdCBjYW4gYmUKLS8vIGNvZXJjZWQgdG8g
YSBib29sLiAgVGhlc2UgZGVjbGFyYXRpb25zIChubyBkZWZpbml0aW9uIG5lZWRlZCEpIHdpbGwK
LS8vIGhlbHAgdXMgZG8gdGhhdCwgYW5kIG5ldmVyIGV2YWx1YXRlIEZyb20sIHdoaWNoIGlzIGlt
cG9ydGFudC4KLS8vIFdlJ2xsIHVzZSAnc2l6ZW9mKElzQm9vbCh2YWwpKScgdG8gZGlzdGluZ3Vp
c2guIFRoaXMgY29kZSByZXF1aXJlcwotLy8gdGhhdCB0aGUgY29tcGlsZXIgaGF2ZSBkaWZmZXJl
bnQgc2l6ZXMgZm9yIGJvb2wgJiBkb3VibGUuIFNpbmNlCi0vLyB0aGlzIGlzIG5vdCBndWFyYW50
ZWVkIGJ5IHRoZSBzdGFuZGFyZCwgd2UgY2hlY2sgaXQgd2l0aCBhCi0vLyBDT01QSUxFX0FTU0VS
VC4KLW5hbWVzcGFjZSBmTEIgewotc3RydWN0IENvbXBpbGVBc3NlcnQge307Ci10eXBlZGVmIENv
bXBpbGVBc3NlcnQgZXhwZWN0ZWRfc2l6ZW9mX2RvdWJsZV9uZXFfc2l6ZW9mX2Jvb2xbCi0gICAg
ICAgICAgICAgICAgICAgICAgKHNpemVvZihkb3VibGUpICE9IHNpemVvZihib29sKSkgPyAxIDog
LTFdOwotdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4gZG91YmxlIEdGTEFHU19ETExfREVDTCBJc0Jv
b2xGbGFnKGNvbnN0IEZyb20mIGZyb20pOwotR0ZMQUdTX0RMTF9ERUNMIGJvb2wgSXNCb29sRmxh
Zyhib29sIGZyb20pOwotfSAgLy8gbmFtZXNwYWNlIGZMQgotCi0vLyBIZXJlIGFyZSB0aGUgYWN0
dWFsIERFRklORV8qLW1hY3Jvcy4gVGhlIHJlc3BlY3RpdmUgREVDTEFSRV8qLW1hY3JvcwotLy8g
YXJlIGluIGEgc2VwYXJhdGUgaW5jbHVkZSwgZ2ZsYWdzX2RlY2xhcmUuaCwgZm9yIHJlZHVjaW5n
Ci0vLyB0aGUgcGh5c2ljYWwgdHJhbnNpdGl2ZSBzaXplIGZvciBERUNMQVJFIHVzZS4KLSNkZWZp
bmUgREVGSU5FX2Jvb2wobmFtZSwgdmFsLCB0eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgbmFtZXNwYWNlIGZMQiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIDo6ZkxCOjpDb21waWxl
QXNzZXJ0IEZMQUdfIyNuYW1lIyNfdmFsdWVfaXNfbm90X2FfYm9vbFsgICAgIFwKLSAgICAgICAg
ICAgIChzaXplb2YoOjpmTEI6OklzQm9vbEZsYWcodmFsKSkgIT0gc2l6ZW9mKGRvdWJsZSkpPyAx
OiAtMV07IFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgREVGSU5FX1ZBUklBQkxFKGJvb2wsIEIsIG5h
bWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV9pbnQzMihuYW1lLCB2YWwsIHR4dCkgXAot
ICAgREVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OmludDMyLCBJLCBcCi0gICAgICAg
ICAgICAgICAgICAgbmFtZSwgdmFsLCB0eHQpCi0KLSNkZWZpbmUgREVGSU5FX2ludDY0KG5hbWUs
IHZhbCwgdHh0KSBcCi0gICBERUZJTkVfVkFSSUFCTEUoR0ZMQUdTX05BTUVTUEFDRTo6aW50NjQs
IEk2NCwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERF
RklORV91aW50NjQobmFtZSx2YWwsIHR4dCkgXAotICAgREVGSU5FX1ZBUklBQkxFKEdGTEFHU19O
QU1FU1BBQ0U6OnVpbnQ2NCwgVTY0LCBcCi0gICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsLCB0
eHQpCi0KLSNkZWZpbmUgREVGSU5FX2RvdWJsZShuYW1lLCB2YWwsIHR4dCkgXAotICAgREVGSU5F
X1ZBUklBQkxFKGRvdWJsZSwgRCwgbmFtZSwgdmFsLCB0eHQpCi0KLS8vIFN0cmluZ3MgYXJlIHRy
aWNraWVyLCBiZWNhdXNlIHRoZXkncmUgbm90IGEgUE9ELCBzbyB3ZSBjYW4ndAotLy8gY29uc3Ry
dWN0IHRoZW0gYXQgc3RhdGljLWluaXRpYWxpemF0aW9uIHRpbWUgKGluc3RlYWQgdGhleSBnZXQK
LS8vIGNvbnN0cnVjdGVkIGF0IGdsb2JhbC1jb25zdHJ1Y3RvciB0aW1lLCB3aGljaCBpcyBtdWNo
IGxhdGVyKS4gIFRvCi0vLyB0cnkgdG8gYXZvaWQgY3Jhc2hlcyBpbiB0aGF0IGNhc2UsIHdlIHVz
ZSBhIGNoYXIgYnVmZmVyIHRvIHN0b3JlCi0vLyB0aGUgc3RyaW5nLCB3aGljaCB3ZSBjYW4gc3Rh
dGljLWluaXRpYWxpemUsIGFuZCB0aGVuIHBsYWNlbWVudC1uZXcKLS8vIGludG8gaXQgbGF0ZXIu
ICBJdCdzIG5vdCBwZXJmZWN0LCBidXQgdGhlIGJlc3Qgd2UgY2FuIGRvLgotCi1uYW1lc3BhY2Ug
ZkxTIHsKLQotaW5saW5lIGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIg
KnN0cmluZ3Nwb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqdmFsdWUpIHsKLSAgcmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0cmluZyh2
YWx1ZSk7Ci19Ci1pbmxpbmUgY2xzdHJpbmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJpbmcoY2hh
ciAqc3RyaW5nc3BvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjbHN0cmluZyAmdmFsdWUpIHsKLSAgcmV0dXJuIG5ldyhzdHJpbmdzcG90KSBjbHN0
cmluZyh2YWx1ZSk7Ci19Ci1pbmxpbmUgY2xzdHJpbmcqIGRvbnRfcGFzczB0b0RFRklORV9zdHJp
bmcoY2hhciAqc3RyaW5nc3BvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgdmFsdWUpOwotfSAgLy8gbmFtZXNwYWNlIGZMUwotCi0vLyBXZSBuZWVkIHRv
IGRlZmluZSBhIHZhciBuYW1lZCBGTEFHU19ubyMjbmFtZSBzbyBwZW9wbGUgZG9uJ3QgZGVmaW5l
Ci0vLyAtLXN0cmluZyBhbmQgLS1ub3N0cmluZy4gIEFuZCB3ZSBuZWVkIGEgdGVtcG9yYXJ5IHBs
YWNlIHRvIHB1dCB2YWwKLS8vIHNvIHdlIGRvbid0IGhhdmUgdG8gZXZhbHVhdGUgaXQgdHdpY2Uu
ICBUd28gZ3JlYXQgbmVlZHMgdGhhdCBnbwotLy8gZ3JlYXQgdG9nZXRoZXIhCi0vLyBUaGUgd2Vp
cmQgJ3VzaW5nJyArICdleHRlcm4nIGluc2lkZSB0aGUgZkxTIG5hbWVzcGFjZSBpcyB0byB3b3Jr
IGFyb3VuZAotLy8gYW4gdW5rbm93biBjb21waWxlciBidWcvaXNzdWUgd2l0aCB0aGUgZ2NjIDQu
Mi4xIG9uIFNVU0UgMTAuICBTZWUKLS8vICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGUtZ2ZsYWdzL2lzc3Vlcy9kZXRhaWw/aWQ9MjAKLSNkZWZpbmUgREVGSU5FX3N0cmluZyhuYW1l
LCB2YWwsIHR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIG5h
bWVzcGFjZSBmTFMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIDo6ZkxTOjpjbHN0cmluZzsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdW5pb24g
eyB2b2lkKiBhbGlnbjsgY2hhciBzW3NpemVvZihjbHN0cmluZyldOyB9IHNfIyNuYW1lWzJdOyAg
ICBcCi0gICAgY2xzdHJpbmcqIGNvbnN0IEZMQUdTX25vIyNuYW1lID0gOjpmTFM6OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKHNfIyNuYW1lWzBdLnMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwp
OyAgICAgICAgICBcCi0gICAgc3RhdGljIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdSZWdpc3RlcmVy
IG9fIyNuYW1lKCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAjbmFtZSwgInN0cmlu
ZyIsIE1BWUJFX1NUUklQUEVEX0hFTFAodHh0KSwgX19GSUxFX18sICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgc18jI25hbWVbMF0ucywgbmV3IChzXyMjbmFtZVsxXS5zKSBjbHN0cmluZygqRkxB
R1Nfbm8jI25hbWUpKTsgICAgICBcCi0gICAgZXh0ZXJuIEdGTEFHU19ETExfREVGSU5FX0ZMQUcg
Y2xzdHJpbmcmIEZMQUdTXyMjbmFtZTsgICAgICAgICAgICAgICAgICAgXAotICAgIHVzaW5nIGZM
Uzo6RkxBR1NfIyNuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBjbHN0cmluZyYgRkxBR1NfIyNuYW1lID0gKkZMQUdTX25vIyNuYW1lOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB1
c2luZyBmTFM6OkZMQUdTXyMjbmFtZQotCi0jZW5kaWYgIC8vIFNXSUcKLQotCi0vLyBJbXBvcnQg
Z2ZsYWdzIGxpYnJhcnkgc3ltYm9scyBpbnRvIGFsdGVybmF0aXZlL2RlcHJlY2F0ZWQgbmFtZXNw
YWNlKHMpCi0jaW5jbHVkZSAiZ2ZsYWdzX2dmbGFncy5oIgotCi0KLSNlbmRpZiAgLy8gR0ZMQUdT
X0dGTEFHU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL2dmbGFncy9nZmxhZ3NfY29tcGxl
dGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTFjMWUwMmQxZi4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dl
bi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2NvbXBsZXRpb25zLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyAtLS0KLQotLy8KLS8vIEltcGxlbWVudCBoZWxwZnVsIGJhc2gtc3R5
bGUgY29tbWFuZCBsaW5lIGZsYWcgY29tcGxldGlvbnMKLS8vCi0vLyAqKiBGdW5jdGlvbmFsIEFQ
SToKLS8vIEhhbmRsZUNvbW1hbmRMaW5lQ29tcGxldGlvbnMoKSBzaG91bGQgYmUgY2FsbGVkIGVh
cmx5IGR1cmluZwotLy8gcHJvZ3JhbSBzdGFydHVwLCBidXQgYWZ0ZXIgY29tbWFuZCBsaW5lIGZs
YWcgY29kZSBoYXMgYmVlbgotLy8gaW5pdGlhbGl6ZWQsIHN1Y2ggYXMgdGhlIGJlZ2lubmluZyBv
ZiBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpLgotLy8gSXQgY2hlY2tzIHRoZSB2YWx1ZSBv
ZiB0aGUgZmxhZyAtLXRhYl9jb21wbGV0aW9uX3dvcmQuICBJZiB0aGlzCi0vLyBmbGFnIGlzIGVt
cHR5LCBub3RoaW5nIGhhcHBlbnMgaGVyZS4gIElmIGl0IGNvbnRhaW5zIGEgc3RyaW5nLAotLy8g
aG93ZXZlciwgdGhlbiBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKCkgd2lsbCBoaWphY2sg
dGhlCi0vLyBwcm9jZXNzLCBhdHRlbXB0aW5nIHRvIGlkZW50aWZ5IHRoZSBpbnRlbnRpb24gYmVo
aW5kIHRoaXMKLS8vIGNvbXBsZXRpb24uICBSZWdhcmRsZXNzIG9mIHRoZSBvdXRjb21lIG9mIHRo
aXMgZGVkdWN0aW9uLCB0aGUKLS8vIHByb2Nlc3Mgd2lsbCBiZSB0ZXJtaW5hdGVkLCBzaW1pbGFy
IHRvIC0taGVscHNob3J0IGZsYWcKLS8vIGhhbmRsaW5nLgotLy8KLS8vICoqIE92ZXJ2aWV3IG9m
IEJhc2ggY29tcGxldGlvbnM6Ci0vLyBCYXNoIGNhbiBiZSB0b2xkIHRvIHByb2dyYW1hdGljYWxs
eSBkZXRlcm1pbmUgY29tcGxldGlvbnMgZm9yIHRoZQotLy8gY3VycmVudCAnY3Vyc29yIHdvcmQn
LiAgSXQgZG9lcyB0aGlzIGJ5IChpbiB0aGlzIGNhc2UpIGludm9raW5nIGEKLS8vIGNvbW1hbmQg
d2l0aCBzb21lIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlkZW50aWZ5aW5nIHRoZSBjb21tYW5kCi0v
LyBiZWluZyBleGVjdXRlZCwgdGhlIHdvcmQgYmVpbmcgY29tcGxldGVkLCBhbmQgdGhlIHByZXZp
b3VzIHdvcmQKLS8vIChpZiBhbnkpLiAgQmFzaCB0aGVuIGV4cGVjdHMgYSBzZXF1ZW5jZSBvZiBv
dXRwdXQgbGluZXMgdG8gYmUKLS8vIHByaW50ZWQgdG8gc3Rkb3V0LiAgSWYgdGhlc2UgbGluZXMg
YWxsIGNvbnRhaW4gYSBjb21tb24gcHJlZml4Ci0vLyBsb25nZXIgdGhhbiB0aGUgY3Vyc29yIHdv
cmQsIGJhc2ggd2lsbCByZXBsYWNlIHRoZSBjdXJzb3Igd29yZAotLy8gd2l0aCB0aGF0IGNvbW1v
biBwcmVmaXgsIGFuZCBkaXNwbGF5IG5vdGhpbmcuICBJZiB0aGVyZSBpc24ndCBzdWNoCi0vLyBh
IGNvbW1vbiBwcmVmaXgsIGJhc2ggd2lsbCBkaXNwbGF5IHRoZSBsaW5lcyBpbiBwYWdlcyB1c2lu
ZyAnbW9yZScuCi0vLwotLy8gKiogU3RyYXRlZ3kgdGFrZW4gZm9yIGNvbW1hbmQgbGluZSBjb21w
bGV0aW9uczoKLS8vIElmIHdlIGNhbiBkZWR1Y2UgZWl0aGVyIHRoZSBleGFjdCBmbGFnIGludGVu
ZGVkLCBvciBhIGNvbW1vbiBmbGFnCi0vLyBwcmVmaXgsIHdlJ2xsIG91dHB1dCBleGFjdGx5IHRo
YXQuICBPdGhlcndpc2UsIGlmIGluZm9ybWF0aW9uCi0vLyBtdXN0IGJlIGRpc3BsYXllZCB0byB0
aGUgdXNlciwgd2UnbGwgdGFrZSB0aGUgb3Bwb3J0dW5pdHkgdG8gYWRkCi0vLyBzb21lIGhlbHBm
dWwgaW5mb3JtYXRpb24gYmV5b25kIGp1c3QgdGhlIGZsYWcgbmFtZSAoc3BlY2lmaWNhbGx5LAot
Ly8gd2UnbGwgaW5jbHVkZSB0aGUgZGVmYXVsdCBmbGFnIHZhbHVlIGFuZCBhcyBtdWNoIG9mIHRo
ZSBmbGFnJ3MKLS8vIGRlc2NyaXB0aW9uIGFzIGNhbiBmaXQgb24gYSBzaW5nbGUgdGVybWluYWwg
bGluZSB3aWR0aCwgYXMgc3BlY2lmaWVkCi0vLyBieSB0aGUgZmxhZyAtLXRhYl9jb21wbGV0aW9u
X2NvbHVtbnMpLiAgRnVydGhlcm1vcmUsIHdlJ2xsIHRyeSB0bwotLy8gbWFrZSBiYXNoIG9yZGVy
IHRoZSBvdXRwdXQgc3VjaCB0aGF0IHRoZSBtb3N0IHVzZWZ1bCBvciByZWxldmVudAotLy8gZmxh
Z3MgYXJlIHRoZSBtb3N0IGxpa2VseSB0byBiZSBzaG93biBhdCB0aGUgdG9wLgotLy8KLS8vICoq
IEFkZGl0aW9uYWwgZmVhdHVyZXM6Ci0vLyBUbyBhc3Npc3QgaW4gZmluZGluZyB0aGF0IG9uZSBy
ZWFsbHkgdXNlZnVsIGZsYWcsIHN1YnN0cmluZyBtYXRjaGluZwotLy8gd2FzIGltcGxlbWVudGVk
LiAgQmVmb3JlIHByZXNzaW5nIGEgPFRBQj4gdG8gZ2V0IGNvbXBsZXRpb24gZm9yIHRoZQotLy8g
Y3VycmVudCB3b3JkLCB5b3UgY2FuIGFwcGVuZCBvbmUgb3IgbW9yZSAnPycgdG8gdGhlIGZsYWcg
dG8gZG8KLS8vIHN1YnN0cmluZyBtYXRjaGluZy4gIEhlcmUncyB0aGUgc2VtYW50aWNzOgotLy8g
ICAtLWZvbzxUQUI+ICAgICBTaG93IG1lIGFsbCBmbGFncyB3aXRoIG5hbWVzIHByZWZpeGVkIGJ5
ICdmb28nCi0vLyAgIC0tZm9vPzxUQUI+ICAgIFNob3cgbWUgYWxsIGZsYWdzIHdpdGggJ2Zvbycg
c29tZXdoZXJlIGluIHRoZSBuYW1lCi0vLyAgIC0tZm9vPz88VEFCPiAgIFNhbWUgYXMgcHJpb3Ig
Y2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIG1vZHVsZQotLy8gICAgICAgICAgICAgICAgICBkZWZp
bml0aW9uIHBhdGggZm9yICdmb28nCi0vLyAgIC0tZm9vPz8/PFRBQj4gIFNhbWUgYXMgcHJpb3Ig
Y2FzZSwgYnV0IGFsc28gc2VhcmNoIGluIGZsYWcKLS8vICAgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb25zIGZvciAnZm9vJwotLy8gRmluYWxseSwgd2UnbGwgdHJpbSB0aGUgb3V0cHV0IHRvIGEg
cmVsYXRpdmVseSBzbWFsbCBudW1iZXIgb2YKLS8vIGZsYWdzIHRvIGtlZXAgYmFzaCBxdWlldCBh
Ym91dCB0aGUgdmVyYm9zaXR5IG9mIG91dHB1dC4gIElmIG9uZQotLy8gcmVhbGx5IHdhbnRlZCB0
byBzZWUgYWxsIHBvc3NpYmxlIG1hdGNoZXMsIGFwcGVuZGluZyBhICcrJyB0byB0aGUKLS8vIHNl
YXJjaCB3b3JkIHdpbGwgZm9yY2UgdGhlIGV4aGF1c3RpdmUgbGlzdCBvZiBtYXRjaGVzIHRvIGJl
IHByaW50ZWQuCi0vLwotLy8gKiogSG93IHRvIGhhdmUgYmFzaCBhY2NlcHQgY29tcGxldGlvbnMg
ZnJvbSBhIGJpbmFyeToKLS8vIEJhc2ggcmVxdWlyZXMgdGhhdCBpdCBiZSBpbmZvcm1lZCBhYm91
dCBlYWNoIGNvbW1hbmQgdGhhdCBwcm9ncmFtbWF0aWMKLS8vIGNvbXBsZXRpb24gc2hvdWxkIGJl
IGVuYWJsZWQgZm9yLiAgRXhhbXBsZSBhZGRpdGlvbiB0byBhIC5iYXNocmMKLS8vIGZpbGUgd291
bGQgYmUgKHlvdXIgcGF0aCB0byBnZmxhZ3NfY29tcGxldGlvbnMuc2ggZmlsZSBtYXkgZGlmZmVy
KToKLQotLyoKLSQgY29tcGxldGUgLW8gYmFzaGRlZmF1bHQgLW8gZGVmYXVsdCAtbyBub3NwYWNl
IC1DICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAnL2hvbWUvYnVpbGQvZW5nL2Jhc2gv
YmFzaF9jb21wbGV0aW9ucy5zaCAtLXRhYl9jb21wbGV0aW9uX2NvbHVtbnMgJENPTFVNTlMnIFwK
LSAgdGltZSAgZW52ICBiaW5hcnlfbmFtZSAgYW5vdGhlcl9iaW5hcnkgIFsuLi5dCi0qLwotCi0v
LyBUaGlzIHdvdWxkIGFsbG93IHRoZSBmb2xsb3dpbmcgdG8gd29yazoKLS8vICAgJCAvcGF0aC90
by9iaW5hcnlfbmFtZSAtLXZtb2R1bGU8VEFCPgotLy8gT3I6Ci0vLyAgICQgLi9iaW4vcGF0aC9h
bm90aGVyX2JpbmFyeSAtLWdmc191PFRBQj4KLS8vIChldGMpCi0vLwotLy8gU2FkbHksIGl0IGFw
cGVhcnMgdGhhdCBiYXNoIGdpdmVzIG5vIGVhc3kgd2F5IHRvIGZvcmNlIHRoaXMgYmVoYXZpb3Ig
Zm9yCi0vLyBhbGwgY29tbWFuZHMuICBUaGF0J3Mgd2hlcmUgdGhlICJ0aW1lIiBpbiB0aGUgYWJv
dmUgZXhhbXBsZSBjb21lcyBpbi4KLS8vIElmIHlvdSBoYXZlbid0IHNwZWNpZmljYWxseSBhZGRl
ZCBhIGNvbW1hbmQgdG8gdGhlIGxpc3Qgb2YgY29tcGxldGlvbgotLy8gc3VwcG9ydGVkIGNvbW1h
bmRzLCB5b3UgY2FuIHN0aWxsIGdldCBjb21wbGV0aW9ucyBieSBwcmVmaXhpbmcgdGhlCi0vLyBl
bnRpcmUgY29tbWFuZCB3aXRoICJlbnYiLgotLy8gICAkIGVudiAvc29tZS9icmFuZC9uZXcvYmlu
YXJ5IC0tdm1vZDxUQUI+Ci0vLyBBc3N1bWluZyB0aGF0ICJiaW5hcnkiIGlzIGEgbmV3bHkgY29t
cGlsZWQgYmluYXJ5LCB0aGlzIHNob3VsZCBzdGlsbAotLy8gcHJvZHVjZSB0aGUgZXhwZWN0ZWQg
Y29tcGxldGlvbiBvdXRwdXQuCi0KLQotI2lmbmRlZiBHRkxBR1NfQ09NUExFVElPTlNfSF8KLSNk
ZWZpbmUgR0ZMQUdTX0NPTVBMRVRJT05TX0hfCi0KLW5hbWVzcGFjZSBnb29nbGUgewotCi1leHRl
cm4gdm9pZCBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKHZvaWQpOwotCi19Ci0KLSNlbmRp
ZiAgLy8gR0ZMQUdTX0NPTVBMRVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2Zs
YWdzL2dmbGFnc19kZWNsYXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19kZWNsYXJl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYzg0NjZmZDRjNy4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2RlY2xhcmUuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDE5OTksIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0vLyAtLS0KLS8vCi0vLyBSZXZhbXBlZCBhbmQgcmVvcmdhbml6ZWQg
YnkgQ3JhaWcgU2lsdmVyc3RlaW4KLS8vCi0vLyBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgc2hvdWxk
IGJlIGluY2x1ZGVkIGJ5IGFueSBmaWxlIHdoaWNoIGRlY2xhcmVzCi0vLyBjb21tYW5kIGxpbmUg
ZmxhZy4KLQotI2lmbmRlZiBHRkxBR1NfREVDTEFSRV9IXwotI2RlZmluZSBHRkxBR1NfREVDTEFS
RV9IXwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTmFtZXNwYWNlIG9mIGdmbGFncyBs
aWJyYXJ5IHN5bWJvbHMuCi0jZGVmaW5lIEdGTEFHU19OQU1FU1BBQ0UgZ29vZ2xlCi0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gV2luZG93cyBETEwgaW1wb3J0L2V4cG9ydC4KLQotLy8gV2Ug
YWx3YXlzIHdhbnQgdG8gaW1wb3J0IHRoZSBzeW1ib2xzIG9mIHRoZSBnZmxhZ3MgbGlicmFyeQot
I2lmbmRlZiBHRkxBR1NfRExMX0RFQ0wKLSMgIGlmIDAgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMg
ICAgZGVmaW5lIEdGTEFHU19ETExfREVDTCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSMgIGVsc2UK
LSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTAotIyAgZW5kaWYKLSNlbmRpZgotCi0vLyBXZSBh
bHdheXMgd2FudCB0byBpbXBvcnQgdmFyaWFibGVzIGRlY2xhcmVkIGluIHVzZXIgY29kZQotI2lm
bmRlZiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRwotIyAgaWZkZWYgX01TQ19WRVIKLSMgICAgZGVm
aW5lIEdGTEFHU19ETExfREVDTEFSRV9GTEFHIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotIyAgZWxz
ZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcKLSMgIGVuZGlmCi0jZW5kaWYK
LQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBGbGFnIHR5cGVzCi0jaW5jbHVkZSA8c3RyaW5n
PgotI2lmIDEKLSMgIGluY2x1ZGUgPHN0ZGludC5oPiAgICAgICAgICAgICAgICAgICAvLyB0aGUg
bm9ybWFsIHBsYWNlIHVpbnQzMl90IGlzIGRlZmluZWQKLSNlbGlmIDEKLSMgIGluY2x1ZGUgPHN5
cy90eXBlcy5oPiAgICAgICAgICAgICAgICAvLyB0aGUgbm9ybWFsIHBsYWNlIHVfaW50MzJfdCBp
cyBkZWZpbmVkCi0jZWxpZiAwCi0jICBpbmNsdWRlIDxpbnR0eXBlcy5oPiAgICAgICAgICAgICAg
ICAgLy8gYSB0aGlyZCBwbGFjZSBmb3IgdWludDMyX3Qgb3IgdV9pbnQzMl90Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UgewotCi0jaWYgMCAvLyBDOTkKLXR5cGVkZWYgaW50
MzJfdCAgICAgICAgICBpbnQzMjsKLXR5cGVkZWYgdWludDMyX3QgICAgICAgICB1aW50MzI7Ci10
eXBlZGVmIGludDY0X3QgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVpbnQ2NF90ICAgICAgICAg
dWludDY0OwotI2VsaWYgMCAvLyBCU0QKLXR5cGVkZWYgaW50MzJfdCAgICAgICAgICBpbnQzMjsK
LXR5cGVkZWYgdV9pbnQzMl90ICAgICAgICB1aW50MzI7Ci10eXBlZGVmIGludDY0X3QgICAgICAg
ICAgaW50NjQ7Ci10eXBlZGVmIHVfaW50NjRfdCAgICAgICAgdWludDY0OwotI2VsaWYgMSAvLyBX
aW5kb3dzCi10eXBlZGVmIF9faW50MzIgICAgICAgICAgaW50MzI7Ci10eXBlZGVmIHVuc2lnbmVk
IF9faW50MzIgdWludDMyOwotdHlwZWRlZiBfX2ludDY0ICAgICAgICAgIGludDY0OwotdHlwZWRl
ZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NDsKLSNlbHNlCi0jICBlcnJvciBEbyBub3Qga25vdyBo
b3cgdG8gZGVmaW5lIGEgMzItYml0IGludGVnZXIgcXVhbnRpdHkgb24geW91ciBzeXN0ZW0KLSNl
bmRpZgotCi19IC8vIG5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFCi0KLQotbmFtZXNwYWNlIGZM
UyB7Ci0KLS8vIFRoZSBtZWFuaW5nIG9mICJzdHJpbmciIG1pZ2h0IGJlIGRpZmZlcmVudCBiZXR3
ZWVuIG5vdyBhbmQgd2hlbiB0aGUKLS8vIG1hY3JvcyBiZWxvdyBnZXQgaW52b2tlZCAoZS5nLiwg
aWYgc29tZW9uZSBpcyBleHBlcmltZW50aW5nIHdpdGgKLS8vIG90aGVyIHN0cmluZyBpbXBsZW1l
bnRhdGlvbnMgdGhhdCBnZXQgZGVmaW5lZCBhZnRlciB0aGlzIGZpbGUgaXMKLS8vIGluY2x1ZGVk
KS4gIFNhdmUgdGhlIGN1cnJlbnQgbWVhbmluZyBub3cgYW5kIHVzZSBpdCBpbiB0aGUgbWFjcm9z
LgotdHlwZWRlZiBzdGQ6OnN0cmluZyBjbHN0cmluZzsKLQotfSAvLyBuYW1lc3BhY2UgZkxTCi0K
LQotI2RlZmluZSBERUNMQVJFX1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwgbmFtZSkgXAotICAv
KiBXZSBhbHdheXMgd2FudCB0byBpbXBvcnQgZGVjbGFyZWQgdmFyaWFibGVzLCBkbGwgb3Igbm8g
Ki8gXAotICBuYW1lc3BhY2UgZkwjI3Nob3J0dHlwZSB7IGV4dGVybiBHRkxBR1NfRExMX0RFQ0xB
UkVfRkxBRyB0eXBlIEZMQUdTXyMjbmFtZTsgfSBcCi0gIHVzaW5nIGZMIyNzaG9ydHR5cGU6OkZM
QUdTXyMjbmFtZQotCi0jZGVmaW5lIERFQ0xBUkVfYm9vbChuYW1lKSBcCi0gIERFQ0xBUkVfVkFS
SUFCTEUoYm9vbCwgQiwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX2ludDMyKG5hbWUpIFwKLSAg
REVDTEFSRV9WQVJJQUJMRSg6OkdGTEFHU19OQU1FU1BBQ0U6OmludDMyLCBJLCBuYW1lKQotCi0j
ZGVmaW5lIERFQ0xBUkVfaW50NjQobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxFKDo6R0ZMQUdT
X05BTUVTUEFDRTo6aW50NjQsIEk2NCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX3VpbnQ2NChu
YW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFCTEUoOjpHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQsIFU2
NCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX2RvdWJsZShuYW1lKSBcCi0gIERFQ0xBUkVfVkFS
SUFCTEUoZG91YmxlLCBELCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfc3RyaW5nKG5hbWUpIFwK
LSAgLyogV2UgYWx3YXlzIHdhbnQgdG8gaW1wb3J0IGRlY2xhcmVkIHZhcmlhYmxlcywgZGxsIG9y
IG5vICovIFwKLSAgbmFtZXNwYWNlIGZMUyB7IFwKLSAgdXNpbmcgOjpmTFM6OmNsc3RyaW5nOyBc
Ci0gIGV4dGVybiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRyA6OmZMUzo6Y2xzdHJpbmcmIEZMQUdT
XyMjbmFtZTsgXAotICB9IFwKLSAgdXNpbmcgZkxTOjpGTEFHU18jI25hbWUKLQotCi0jZW5kaWYg
IC8vIEdGTEFHU19ERUNMQVJFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9nZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dm
bGFnc19nZmxhZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9nZmxhZ3MvZ2ZsYWdzX2dmbGFncy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzE3ODI1ZGQ2MjMuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9n
ZW4vd2luL2luY2x1ZGUvZ2ZsYWdzL2dmbGFnc19nZmxhZ3MuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEwMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQsIEFuZHJlYXMgU2NodWgKLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBJbXBvcnRzIHRoZSBnZmxhZ3Mg
bGlicmFyeSBzeW1ib2xzIGludG8gYW4gYWx0ZXJuYXRpdmUvZGVwcmVjYXRlZCBuYW1lc3BhY2Uu
Ci0KLSNpZm5kZWYgR0ZMQUdTX0dGTEFHU19IXwotIyAgZXJyb3IgVGhlIGludGVybmFsIGhlYWRl
ciBnZmxhZ3NfZ2ZsYWdzLmggbWF5IG9ubHkgYmUgaW5jbHVkZWQgYnkgZ2ZsYWdzLmgKLSNlbmRp
ZgotCi0jaWZuZGVmIEdGTEFHU19OU19HRkxBR1NfSF8KLSNkZWZpbmUgR0ZMQUdTX05TX0dGTEFH
U19IXwotCi0KLW5hbWVzcGFjZSBnZmxhZ3MgewotCi0KLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OmludDMyOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6dWludDMyOwotdXNpbmcgR0ZMQUdTX05B
TUVTUEFDRTo6aW50NjQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQ7Ci0KLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcjsKLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OkNvbW1hbmRMaW5lRmxhZ0luZm87Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpH
ZXRBbGxGbGFnczsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNob3dVc2FnZVdpdGhGbGFnczsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0OwotdXNp
bmcgR0ZMQUdTX05BTUVTUEFDRTo6RGVzY3JpYmVPbmVGbGFnOwotdXNpbmcgR0ZMQUdTX05BTUVT
UEFDRTo6U2V0QXJndjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFyZ3ZzOwotdXNpbmcg
R0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFy
Z3YwOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QXJndlN1bTsKLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OlByb2dyYW1JbnZvY2F0aW9uTmFtZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OlByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UHJv
Z3JhbVVzYWdlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6VmVyc2lvblN0cmluZzsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OkdldENvbW1hbmRMaW5lT3B0aW9uOwotdXNpbmcgR0ZMQUdTX05B
TUVTUEFDRTo6R2V0Q29tbWFuZExpbmVGbGFnSW5mbzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZs
YWdTZXR0aW5nTW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNFVF9GTEFHU19WQUxVRTsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNFVF9GTEFHX0lGX0RFRkFVTFQ7Ci11c2luZyBHRkxB
R1NfTkFNRVNQQUNFOjpTRVRfRkxBR1NfREVGQVVMVDsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OlNldENvbW1hbmRMaW5lT3B0aW9uOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0Q29tbWFu
ZExpbmVPcHRpb25XaXRoTW9kZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdTYXZlcjsK
LXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkNvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nOwotdXNp
bmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVhZEZsYWdzRnJvbVN0cmluZzsKLXVzaW5nIEdGTEFHU19O
QU1FU1BBQ0U6OkFwcGVuZEZsYWdzSW50b0ZpbGU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpS
ZWFkRnJvbUZsYWdzRmlsZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkJvb2xGcm9tRW52Owot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6SW50MzJGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVT
UEFDRTo6SW50NjRGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6VWludDY0RnJvbUVu
djsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkRvdWJsZUZyb21FbnY7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpTdHJpbmdGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0VXNh
Z2VNZXNzYWdlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2V0VmVyc2lvblN0cmluZzsKLXVz
aW5nIEdGTEFHU19OQU1FU1BBQ0U6OlBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3M7Ci11c2lu
ZyBHRkxBR1NfTkFNRVNQQUNFOjpIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFnczsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OkFsbG93Q29tbWFuZExpbmVSZXBhcnNpbmc7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpSZXBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQ
QUNFOjpGbGFnUmVnaXN0ZXJlcjsKLQotI2lmbmRlZiBTV0lHCi11c2luZyBHRkxBR1NfTkFNRVNQ
QUNFOjpQYXJzZUNvbW1hbmRMaW5lRmxhZ3M7Ci0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSBn
ZmxhZ3MKLQotCi0jZW5kaWYgIC8vIEdGTEFHU19OU19HRkxBR1NfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dlbi93
aW4vaW5jbHVkZS9wcml2YXRlL2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2VuL3dpbi9pbmNsdWRlL3ByaXZhdGUvY29uZmln
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NDE1ODBlYWIwNi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z2ZsYWdzL2dlbi93aW4vaW5jbHVkZS9wcml2YXRlL2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTEyICswLDAgQEAKLS8qIEdlbmVyYXRlZCBmcm9tIGNvbmZpZy5oLmluIGR1cmluZyBidWls
ZCBjb25maWd1cmF0aW9uIHVzaW5nIENNYWtlLiAqLwotCi0vLyBOb3RlOiBUaGlzIGhlYWRlciBm
aWxlIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LiBJdCBpcyBub3QgcGFydCBvZiBwdWJsaWMgaW50
ZXJmYWNlIQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFN5c3RlbSBjaGVja3MKLQotLy8g
RGVmaW5lIGlmIHlvdSBidWlsZCB0aGlzIGxpYnJhcnkgZm9yIGEgTVMgV2luZG93cyBPUy4KLSNk
ZWZpbmUgT1NfV0lORE9XUwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4g
aGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RESU5UX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NZU19UWVBF
U19ICi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxl
LgotLyogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCAqLwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TWVNfU1RBVF9ICi0K
LS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4KLS8qICN1
bmRlZiBIQVZFX1VOSVNURF9IICovCi0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZubWF0
Y2guaD4gaGVhZGVyIGZpbGUuCi0vKiAjdW5kZWYgSEFWRV9GTk1BVENIX0ggKi8KLQotLy8gRGVm
aW5lIGlmIHlvdSBoYXZlIHRoZSA8c2hsd2FwaS5oPiBoZWFkZXIgZmlsZSAoV2luZG93cyAyMDAw
L1hQKS4KLSNkZWZpbmUgSEFWRV9TSExXQVBJX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRo
ZSBzdHJ0b2xsIGZ1bmN0aW9uLgotLyogI3VuZGVmIEhBVkVfU1RSVE9MTCAqLwotCi0vLyBEZWZp
bmUgaWYgeW91IGhhdmUgdGhlIHN0cnRvcSBmdW5jdGlvbi4KLS8qICN1bmRlZiBIQVZFX1NUUlRP
USAqLwotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxwdGhyZWFkLmg+IGhlYWRlciBmaWxl
LgotLyogI3VuZGVmIEhBVkVfUFRIUkVBRCAqLwotCi0vLyBEZWZpbmUgaWYgeW91ciBwdGhyZWFk
IGxpYnJhcnkgZGVmaW5lcyB0aGUgdHlwZSBwdGhyZWFkX3J3bG9ja190Ci0vKiAjdW5kZWYgSEFW
RV9SV0xPQ0sgKi8KLQotLy8gZ2NjIHJlcXVpcmVzIHRoaXMgdG8gZ2V0IFBSSWQ2NCwgZXRjLgot
I2lmIGRlZmluZWQoSEFWRV9JTlRUWVBFU19IKSAmJiAhZGVmaW5lZChfX1NURENfRk9STUFUX01B
Q1JPUykKLSMgIGRlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCi0jZW5kaWYKLQotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLyBQYWNrYWdlIGluZm9ybWF0aW9uCi0KLS8vIE5hbWUgb2YgcGFj
a2FnZS4KLSNkZWZpbmUgUEFDS0FHRSBnZmxhZ3MKLQotLy8gRGVmaW5lIHRvIHRoZSBmdWxsIG5h
bWUgb2YgdGhpcyBwYWNrYWdlLgotI2RlZmluZSBQQUNLQUdFX05BTUUgZ2ZsYWdzCi0KLS8vIERl
ZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZp
bmUgUEFDS0FHRV9TVFJJTkcgZ2ZsYWdzIDIuMi4wCi0KLS8vIERlZmluZSB0byB0aGUgb25lIHN5
bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1F
IGdmbGFncy0yLjIuMAotCi0vLyBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdl
LgotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gMi4yLjAKLQotLy8gVmVyc2lvbiBudW1iZXIgb2Yg
cGFja2FnZS4KLSNkZWZpbmUgVkVSU0lPTiBQQUNLQUdFX1ZFUlNJT04KLQotLy8gRGVmaW5lIHRv
IHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJl
IHNlbnQuCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1
aHNjaHVoL2dmbGFncy9pc3N1ZXMKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYXRoIHNl
cGFyYXRvcgotI2lmbmRlZiBQQVRIX1NFUEFSQVRPUgotIyAgaWZkZWYgT1NfV0lORE9XUwotIyAg
ICBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgICdcXCcKLSMgIGVsc2UKLSMgICAgZGVmaW5lIFBBVEhf
U0VQQVJBVE9SICAnLycKLSMgIGVuZGlmCi0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBXaW5kb3dzCi0KLS8vIFdoZXRoZXIgZ2ZsYWdzIGxpYnJhcnkgaXMgYSBETEwuCi0jaWZu
ZGVmIEdGTEFHU19JU19BX0RMTAotIyAgZGVmaW5lIEdGTEFHU19JU19BX0RMTCAwCi0jZW5kaWYK
LQotLy8gQWx3YXlzIGV4cG9ydCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIGEgc2hhcmVkIGxpYnJh
cnkgYXMgdGhpcyBmaWxlIGlzIG9ubHkKLS8vIGluY2x1ZGVkIGJ5IGludGVybmFsIG1vZHVsZXMg
d2hlbiBidWlsZGluZyB0aGUgZ2ZsYWdzIGxpYnJhcnkgaXRzZWxmLgotLy8gVGhlIGdmbGFnc19k
ZWNsYXJlLmggaGVhZGVyIGZpbGUgd2lsbCBzZXQgaXQgdG8gaW1wb3J0IHRoZXNlIHN5bWJvbHMg
b3RoZXJ3aXNlLgotI2lmbmRlZiBHRkxBR1NfRExMX0RFQ0wKLSMgIGlmIEdGTEFHU19JU19BX0RM
TCAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMIF9fZGVj
bHNwZWMoZGxsZXhwb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMCi0j
ICBlbmRpZgotI2VuZGlmCi0vLyBGbGFncyBkZWZpbmVkIGJ5IHRoZSBnZmxhZ3MgbGlicmFyeSBp
dHNlbGYgbXVzdCBiZSBleHBvcnRlZAotI2lmbmRlZiBHRkxBR1NfRExMX0RFRklORV9GTEFHCi0j
ICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRyBHRkxBR1NfRExMX0RFQ0wKLSNlbmRpZgot
Ci0jaWZkZWYgT1NfV0lORE9XUwotLy8gVGhlIHVuaXR0ZXN0cyBpbXBvcnQgdGhlIHN5bWJvbHMg
b2YgdGhlIHNoYXJlZCBnZmxhZ3MgbGlicmFyeQotIyAgaWYgR0ZMQUdTX0lTX0FfRExMICYmIGRl
ZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFQ0xfRk9SX1VOSVRURVNU
UyBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSMgIGVuZGlmCi0jICBpbmNsdWRlICJ3aW5kb3dzX3Bv
cnQuaCIKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3MvZ2ZsYWdzLmd5cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dmbGFncy5neXAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVhODVlOTYyYjU5Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL2dmbGFncy5n
eXAKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDExIEdvb2ds
ZSBJbmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0jIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAotIwotIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAotIwotIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgotIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCi0jIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi17
Ci0gICd2YXJpYWJsZXMnOiB7Ci0gICAgJ2dmbGFnc19yb290JzogJzwoREVQVEgpL3RoaXJkX3Bh
cnR5L2dmbGFncycsCi0gICAgJ2NvbmRpdGlvbnMnOiBbCi0gICAgICBbJ09TPT0id2luIicsIHsK
LSAgICAgICAgJ2dmbGFnc19nZW5fYXJjaF9yb290JzogJzwoZ2ZsYWdzX3Jvb3QpL2dlbi93aW4n
LAotICAgICAgfSwgewotICAgICAgICAnZ2ZsYWdzX2dlbl9hcmNoX3Jvb3QnOiAnPChnZmxhZ3Nf
cm9vdCkvZ2VuL3Bvc2l4JywKLSAgICAgIH1dLAotICAgIF0sCi0gIH0sCi0gICd0YXJnZXRzJzog
WwotICAgIHsKLSAgICAgICd0YXJnZXRfbmFtZSc6ICdnZmxhZ3MnLAotICAgICAgJ3R5cGUnOiAn
c3RhdGljX2xpYnJhcnknLAotICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKLSAgICAgICAgJzwoZ2Zs
YWdzX2dlbl9hcmNoX3Jvb3QpL2luY2x1ZGUvZ2ZsYWdzJywgICMgRm9yIGNvbmZpZ3VyZWQgZmls
ZXMuCi0gICAgICAgICc8KGdmbGFnc19nZW5fYXJjaF9yb290KS9pbmNsdWRlL3ByaXZhdGUnLCAg
IyBGb3IgY29uZmlnLmgKLSAgICAgICAgJzwoZ2ZsYWdzX3Jvb3QpL3NyYy9zcmMnLCAgIyBGb3Ig
ZXZlcnl0aGluZyBlbHNlLgotICAgICAgXSwKLSAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAj
IFRoZXNlIG1hY3JvcyBleGlzdCBzbyBmbGFncyBhbmQgc3ltYm9scyBhcmUgcHJvcGVybHkKLSAg
ICAgICAgIyBleHBvcnRlZCB3aGVuIGJ1aWxkaW5nIERMTHMuIFNpbmNlIHdlIGRvbid0IGJ1aWxk
IERMTHMsIHdlCi0gICAgICAgICMgbmVlZCB0byBkaXNhYmxlIHRoZW0uCi0gICAgICAgICdHRkxB
R1NfRExMX0RFQ0w9JywKLSAgICAgICAgJ0dGTEFHU19ETExfREVDTEFSRV9GTEFHPScsCi0gICAg
ICAgICdHRkxBR1NfRExMX0RFRklORV9GTEFHPScsCi0gICAgICBdLAotICAgICAgJ2RpcmVjdF9k
ZXBlbmRlbnRfc2V0dGluZ3MnOiB7Ci0gICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCi0gICAgICAg
ICAgJzwoZ2ZsYWdzX2dlbl9hcmNoX3Jvb3QpL2luY2x1ZGUnLCAgIyBGb3IgY29uZmlndXJlZCBm
aWxlcy4KLSAgICAgICAgICAnPChnZmxhZ3Nfcm9vdCkvc3JjL3NyYycsICAjIEZvciBldmVyeXRo
aW5nIGVsc2UuCi0gICAgICAgIF0sCi0gICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAgICdH
RkxBR1NfRExMX0RFQ0w9JywKLSAgICAgICAgICAnR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUc9JywK
LSAgICAgICAgICAnR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRz0nLAotICAgICAgICBdLAotICAgICAg
fSwKLSAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAnc3JjL3NyYy9nZmxhZ3MuY2MnLAotICAg
ICAgICAnc3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuY2MnLAotICAgICAgICAnc3JjL3NyYy9n
ZmxhZ3NfcmVwb3J0aW5nLmNjJywKLSAgICAgIF0sCi0gICAgICAnY29uZGl0aW9ucyc6IFsKLSAg
ICAgICAgWydPUz09IndpbiInLCB7Ci0gICAgICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAg
ICAnc3JjL3NyYy93aW5kb3dzX3BvcnQuY2MnLAotICAgICAgICAgIF0sCi0gICAgICAgICAgJ21z
dnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbCi0gICAgICAgICAgICA0MDA1LCAgIyBXSU4zMl9MRUFO
X0FORF9NRUFOIHJlZGVmaW5pdGlvbi4KLSAgICAgICAgICAgIDQyNjcsICAjIENvbnZlcnNpb24g
ZnJvbSBzaXplX3QgdG8gInR5cGUiLgotICAgICAgICAgIF0sCi0gICAgICAgICAgJ2NvbmZpZ3Vy
YXRpb25zJzogewotICAgICAgICAgICAgJ0NvbW1vbl9CYXNlJzogewotICAgICAgICAgICAgICAn
bXN2c19jb25maWd1cmF0aW9uX2F0dHJpYnV0ZXMnOiB7Ci0gICAgICAgICAgICAgICAgJ0NoYXJh
Y3RlclNldCc6ICcyJywgICMgVXNlIE11bHRpLWJ5dGUgQ2hhcmFjdGVyIFNldC4KLSAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfSwKLSAgICAgICAgfV0sCi0gICAg
ICAgICMgVE9ETyhhbmRyZXcpOiBMb29rIGludG8gZml4aW5nIHRoaXMgd2FybmluZyB1cHN0cmVh
bToKLSAgICAgICAgIyBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2VicnRjL2lzc3Vlcy9kZXRh
aWw/aWQ9NzYwCi0gICAgICAgIFsnT1M9PSJ3aW4iIGFuZCBjbGFuZz09MScsIHsKLSAgICAgICAg
ICAnbXN2c19zZXR0aW5ncyc6IHsKLSAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzogewot
ICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiBbCi0gICAgICAgICAgICAgICAgJy1X
bm8tbWljcm9zb2Z0LWluY2x1ZGUnLAotICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwK
LSAgICAgICAgICB9LAotICAgICAgICB9XSwKLSAgICAgICAgWydjbGFuZz09MScsIHsKLSAgICAg
ICAgICAnY2ZsYWdzJzogWwotICAgICAgICAgICAgJy1Xbm8tbWljcm9zb2Z0LWluY2x1ZGUnLAot
ICAgICAgICAgIF0sCi0gICAgICAgIH1dLAotICAgICAgXSwKLSAgICB9LAotICBdLAotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjLy5naXRhdHRyaWJ1dGVzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjLy5naXRhdHRyaWJ1dGVzCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA4N2ZlOWMwMjdlYzYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvLmdpdGF0
dHJpYnV0ZXMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMgdHJlYXQgYWxsIGZpbGVz
IGluIHRoaXMgcmVwb3NpdG9yeSBhcyB0ZXh0IGZpbGVzCi0jIGFuZCBub3JtYWxpemUgdGhlbSB0
byBMRiBsaW5lIGVuZGluZ3Mgd2hlbiBjb21taXR0ZWQKLSogdGV4dApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjLy5n
aXRtb2R1bGVzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjLy5naXRtb2R1bGVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YTIwNzJjNTc1ZmUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvLmdpdG1vZHVsZXMKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLVtzdWJtb2R1bGUgImRvYyJdCi0JcGF0aCA9IGRvYwotCXVybCA9
IGh0dHBzOi8vZ2l0aHViLmNvbS9nZmxhZ3MvZ2ZsYWdzLmdpdAotCWJyYW5jaCA9IGdoLXBhZ2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dmbGFncy9zcmMvQVVUSE9SUy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvQVVUSE9SUy50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg4NzkxOGJkMDBlMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9BVVRIT1JT
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZ29vZ2xlLWdmbGFnc0Bnb29nbGVn
cm91cHMuY29tCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DTWFrZUxpc3RzLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyYmNlMzZiNDliLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTEwICswLDAgQEAK
LWNtYWtlX21pbmltdW1fcmVxdWlyZWQgKFZFUlNJT04gMi44LjEyIEZBVEFMX0VSUk9SKQotCi1p
ZiAoUE9MSUNZIENNUDAwNDIpCi0gIGNtYWtlX3BvbGljeSAoU0VUIENNUDAwNDIgTkVXKQotZW5k
aWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGluY2x1ZGVzCi1zZXQgKENNQUtFX01P
RFVMRV9QQVRIICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY21ha2UiKQotaW5jbHVkZSAo
dXRpbHMpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBwYWNrYWdlIGluZm9ybWF0aW9uCi1z
ZXQgKFBBQ0tBR0VfTkFNRSAgICAgICJnZmxhZ3MiKQotc2V0IChQQUNLQUdFX1ZFUlNJT04gICAi
Mi4yLjAiKQotc2V0IChQQUNLQUdFX1NUUklORyAgICAiJHtQQUNLQUdFX05BTUV9ICR7UEFDS0FH
RV9WRVJTSU9OfSIpCi1zZXQgKFBBQ0tBR0VfVEFSTkFNRSAgICIke1BBQ0tBR0VfTkFNRX0tJHtQ
QUNLQUdFX1ZFUlNJT059IikKLXNldCAoUEFDS0FHRV9CVUdSRVBPUlQgImh0dHBzOi8vZ2l0aHVi
LmNvbS9zY2h1aHNjaHVoL2dmbGFncy9pc3N1ZXMiKQotCi1wcm9qZWN0ICgke1BBQ0tBR0VfTkFN
RX0gQ1hYKQotaWYgKENNQUtFX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwMCkKLSAgIyBDIGxhbmd1
YWdlIHN0aWxsIG5lZWRlZCBiZWNhdXNlIHRoZSBmb2xsb3dpbmcgcmVxdWlyZWQgQ01ha2UgbW9k
dWxlcwotICAjIChvciB0aGVpciBkZXBlbmRlbmNpZXMsIHJlc3BlY3RpdmVseSkgYXJlIG5vdCBj
b3JyZWN0bHkgaGFuZGxpbmcKLSAgIyB0aGUgY2FzZSB3aGVyZSBvbmx5IENYWCBpcyBlbmFibGVk
LgotICAjIC0gQ2hlY2tUeXBlU2l6ZS5jbWFrZSAoZml4ZWQgaW4gQ01ha2UgMy4xLCBjZi4gaHR0
cDovL3d3dy5jbWFrZS5vcmcvQnVnL3ZpZXcucGhwP2lkPTE0MDU2KQotICAjIC0gRmluZFRocmVh
ZHMuY21ha2UgKC0tPiBDaGVja0luY2x1ZGVGaWxlcy5jbWFrZSA8LS0pCi0gIGVuYWJsZV9sYW5n
dWFnZSAoQykKLWVuZGlmICgpCi0KLXZlcnNpb25fbnVtYmVycyAoCi0gICR7UEFDS0FHRV9WRVJT
SU9OfQotICAgIFBBQ0tBR0VfVkVSU0lPTl9NQUpPUgotICAgIFBBQ0tBR0VfVkVSU0lPTl9NSU5P
UgotICAgIFBBQ0tBR0VfVkVSU0lPTl9QQVRDSAotKQotCi1zZXQgKFBBQ0tBR0VfU09WRVJTSU9O
ICIke1BBQ0tBR0VfVkVSU0lPTl9NQUpPUn0iKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg
b3B0aW9ucwotaWYgKE5PVCBHRkxBR1NfTkFNRVNQQUNFKQotICAjIG1haW50YWluIGJpbmFyeSBi
YWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGdmbGFncyBsaWJyYXJ5IHZlcnNpb24gPD0gMi4w
LAotICAjIGJ1dCBhdCB0aGUgc2FtZSB0aW1lIGVuYWJsZSB0aGUgdXNlIG9mIHRoZSBwcmVmZXJy
ZWQgbmV3ICJnZmxhZ3MiIG5hbWVzcGFjZQotICBzZXQgKEdGTEFHU19OQU1FU1BBQ0UgImdvb2ds
ZTske1BBQ0tBR0VfTkFNRX0iIENBQ0hFIFNUUklORyAiTmFtZShzKSBvZiBsaWJyYXJ5IG5hbWVz
cGFjZSAoc2VwYXJhdGUgbXVsdGlwbGUgb3B0aW9ucyBieSBzZW1pY29sb24pIikKLSAgbWFya19h
c19hZHZhbmNlZCAoR0ZMQUdTX05BTUVTUEFDRSkKLWVuZGlmICgpCi1zZXQgKEdGTEFHU19OQU1F
U1BBQ0VfU0VDT05EQVJZICIke0dGTEFHU19OQU1FU1BBQ0V9IikKLWxpc3QgKFJFTU9WRV9EVVBM
SUNBVEVTIEdGTEFHU19OQU1FU1BBQ0VfU0VDT05EQVJZKQotaWYgKE5PVCBHRkxBR1NfTkFNRVNQ
QUNFX1NFQ09OREFSWSkKLSAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkdGTEFHU19OQU1FU1BBQ0Ug
bXVzdCBiZSBzZXQgdG8gb25lIChvciBtb3JlKSB2YWxpZCBDKysgbmFtZXNwYWNlIGlkZW50aWZp
ZXIocyBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9uIFwiO1wiKS4iKQotZW5kaWYgKCkKLWZvcmVhY2gg
KG5zIElOIExJU1RTIEdGTEFHU19OQU1FU1BBQ0VfU0VDT05EQVJZKQotICBpZiAoTk9UIG5zIE1B
VENIRVMgIl5bYS16QS1aXVthLXpBLVowLTlfXSokIikKLSAgICBtZXNzYWdlIChGQVRBTF9FUlJP
UiAiR0ZMQUdTX05BTUVTUEFDRSBjb250YWlucyBpbnZhbGlkIG5hbWVzcGFjZSBpZGVudGlmaWVy
OiAke25zfSIpCi0gIGVuZGlmICgpCi1lbmRmb3JlYWNoICgpCi1saXN0IChHRVQgICAgICAgR0ZM
QUdTX05BTUVTUEFDRV9TRUNPTkRBUlkgMCBHRkxBR1NfTkFNRVNQQUNFKQotbGlzdCAoUkVNT1ZF
X0FUIEdGTEFHU19OQU1FU1BBQ0VfU0VDT05EQVJZIDApCi0KLW9wdGlvbiAoQlVJTERfU0hBUkVE
X0xJQlMgICAgICAgICAgIlJlcXVlc3QgYnVpbGQgb2Ygc2hhcmVkIGxpYnJhcmllcy4iICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGKQotb3B0aW9uIChCVUlMRF9TVEFU
SUNfTElCUyAgICAgICAgICAiUmVxdWVzdCBidWlsZCBvZiBzdGF0aWMgbGlicmFyaWVzIChkZWZh
dWx0IGlmIEJVSUxEX1NIQVJFRF9MSUJTIGlzIE9GRikuIiBPRkYpCi1vcHRpb24gKEJVSUxEX2dm
bGFnc19MSUIgICAgICAgICAgICJSZXF1ZXN0IGJ1aWxkIG9mIHRoZSBtdWx0aS10aHJlYWRlZCBn
ZmxhZ3MgbGlicmFyeS4iICAgICAgICAgICAgICAgICAgICAgIE9OKQotb3B0aW9uIChCVUlMRF9n
ZmxhZ3Nfbm90aHJlYWRzX0xJQiAiUmVxdWVzdCBidWlsZCBvZiB0aGUgc2luZ2xlLXRocmVhZGVk
IGdmbGFncyBsaWJyYXJ5LiIgICAgICAgICAgICAgICAgICAgICBPTikKLW9wdGlvbiAoQlVJTERf
UEFDS0FHSU5HICAgICAgICAgICAgIkVuYWJsZSBidWlsZCBvZiBkaXN0cmlidXRpb24gcGFja2Fn
ZXMgdXNpbmcgQ1BhY2suIiAgICAgICAgICAgICAgICAgICAgICAgT0ZGKQotb3B0aW9uIChCVUlM
RF9URVNUSU5HICAgICAgICAgICAgICAiRW5hYmxlIGJ1aWxkIG9mIHRoZSB1bml0IHRlc3RzIGFu
ZCB0aGVpciBleGVjdXRpb24gdXNpbmcgQ1Rlc3QuIiAgICAgICAgICBPRkYpCi1vcHRpb24gKElO
U1RBTExfSEVBREVSUyAgICAgICAgICAgICJSZXF1ZXN0IHBhY2thZ2luZyBvZiBoZWFkZXJzIGFu
ZCBvdGhlciBkZXZlbG9wbWVudCBmaWxlcy4iICAgICAgICAgICAgICAgIE9OKQotCi1tYXJrX2Fz
X2FkdmFuY2VkIChDTEVBUiBDTUFLRV9JTlNUQUxMX1BSRUZJWCkKLW1hcmtfYXNfYWR2YW5jZWQg
KENNQUtFX0NPTkZJR1VSQVRJT05fVFlQRVMKLSAgICAgICAgICAgICAgICAgIEJVSUxEX1NUQVRJ
Q19MSUJTCi0gICAgICAgICAgICAgICAgICBJTlNUQUxMX0hFQURFUlMpCi1pZiAoQVBQTEUpCi0g
IG1hcmtfYXNfYWR2YW5jZWQoQ01BS0VfT1NYX0FSQ0hJVEVDVFVSRVMKLSAgICAgICAgICAgICAg
ICAgICBDTUFLRV9PU1hfREVQTE9ZTUVOVF9UQVJHRVQKLSAgICAgICAgICAgICAgICAgICBDTUFL
RV9PU1hfU1lTUk9PVCkKLWVuZGlmICgpCi0KLWlmIChOT1QgQlVJTERfU0hBUkVEX0xJQlMgQU5E
IE5PVCBCVUlMRF9TVEFUSUNfTElCUykKLSAgc2V0IChCVUlMRF9TVEFUSUNfTElCUyBPTikKLWVu
ZGlmICgpCi1pZiAoTk9UIEJVSUxEX2dmbGFnc19MSUIgQU5EIE5PVCBCVUlMRF9nZmxhZ3Nfbm90
aHJlYWRzX0xJQikKLSBtZXNzYWdlIChGQVRBTF9FUlJPUiAiQXQgbGVhc3Qgb25lIG9mIEJVSUxE
X2dmbGFnc19MSUIgYW5kIEJVSUxEX2dmbGFnc19ub3RocmVhZHNfTElCIG11c3QgYmUgT04uIikK
LWVuZGlmICgpCi0KLWlmIChOT1QgQ01BS0VfQlVJTERfVFlQRSBBTkQgTk9UIENNQUtFX0NYWF9G
TEFHUykKLSAgc2V0X3Byb3BlcnR5IChDQUNIRSBDTUFLRV9CVUlMRF9UWVBFIFBST1BFUlRZIFZB
TFVFIFJlbGVhc2UpCi1lbmRpZiAoKQotCi1pZiAoTk9UIEdGTEFHU19JTkNMVURFX0RJUikKLSAg
c2V0IChHRkxBR1NfSU5DTFVERV9ESVIgIiR7UEFDS0FHRV9OQU1FfSIgQ0FDSEUgU1RSSU5HICJO
YW1lIG9mIGluY2x1ZGUgZGlyZWN0b3J5IG9mIGluc3RhbGxlZCBoZWFkZXIgZmlsZXMiKQotICBt
YXJrX2FzX2FkdmFuY2VkIChHRkxBR1NfSU5DTFVERV9ESVIpCi1lbHNlICgpCi0gIGlmIChJU19B
QlNPTFVURSBHRkxBR1NfSU5DTFVERV9ESVIpCi0gICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkdG
TEFHU19JTkNMVURFX0RJUiBtdXN0IGJlIGEgcGF0aCByZWxhdGl2ZSB0byBDTUFLRV9JTlNUQUxM
X1BSRUZJWC9pbmNsdWRlIikKLSAgZW5kaWYgKCkKLSAgaWYgKEdGTEFHU19JTkNMVURFX0RJUiBN
QVRDSEVTICJeXFwuXFwuWy9cXF0iKQotICAgIG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJHRkxBR1Nf
SU5DTFVERV9ESVIgbXVzdCBub3Qgc3RhcnQgd2l0aCBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5j
ZSAoLi4vKSIpCi0gIGVuZGlmICgpCi1lbmRpZiAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LSMgc3lzdGVtIGNoZWNrcwotaW5jbHVkZSAoQ2hlY2tUeXBlU2l6ZSkKLWluY2x1ZGUgKENoZWNr
SW5jbHVkZUZpbGVDWFgpCi1pbmNsdWRlIChDaGVja0NYWFN5bWJvbEV4aXN0cykKLQotaWYgKFdJ
TjMyIEFORCBOT1QgQ1lHV0lOKQotICBzZXQgKE9TX1dJTkRPV1MgMSkKLWVsc2UgKCkKLSAgc2V0
IChPU19XSU5ET1dTIDApCi1lbmRpZiAoKQotCi1pZiAoTVNWQykKLSAgc2V0IChIQVZFX1NZU19U
WVBFU19IIDEpCi0gIHNldCAoSEFWRV9TVERJTlRfSCAgICAxKQotICBzZXQgKEhBVkVfU1REREVG
X0ggICAgMSkgIyB1c2VkIGJ5IENoZWNrVHlwZVNpemUgbW9kdWxlCi0gIHNldCAoSEFWRV9JTlRU
WVBFU19IICAwKQotICBzZXQgKEhBVkVfVU5JU1REX0ggICAgMCkKLSAgc2V0IChIQVZFX1NZU19T
VEFUX0ggIDEpCi0gIHNldCAoSEFWRV9TSExXQVBJX0ggICAxKQotZWxzZSAoKQotICBmb3JlYWNo
IChmbmFtZSBJTiBJVEVNUyB1bmlzdGQgc3RkaW50IGludHR5cGVzIHN5cy90eXBlcyBzeXMvc3Rh
dCBmbm1hdGNoKQotICAgIHN0cmluZyAoVE9VUFBFUiAiJHtmbmFtZX0iIEZOQU1FKQotICAgIHN0
cmluZyAoUkVQTEFDRSAiLyIgIl8iIEZOQU1FICIke0ZOQU1FfSIpCi0gICAgaWYgKE5PVCBIQVZF
XyR7Rk5BTUV9X0gpCi0gICAgICBjaGVja19pbmNsdWRlX2ZpbGVfY3h4ICgiJHtmbmFtZX0uaCIg
SEFWRV8ke0ZOQU1FfV9IKQotICAgIGVuZGlmICgpCi0gIGVuZGZvcmVhY2ggKCkKLSAgIyB0aGUg
Zm9sbG93aW5nIGFyZSB1c2VkIGluICNpZiBkaXJlY3RpdmVzIG5vdCAjaWZkZWYKLSAgYm9vbF90
b19pbnQgKEhBVkVfU1RESU5UX0gpCi0gIGJvb2xfdG9faW50IChIQVZFX1NZU19UWVBFU19IKQot
ICBib29sX3RvX2ludCAoSEFWRV9JTlRUWVBFU19IKQotICBpZiAoTk9UIEhBVkVfRk5NQVRDSF9I
IEFORCBPU19XSU5ET1dTKQotICAgIGNoZWNrX2luY2x1ZGVfZmlsZV9jeHggKCJzaGx3YXBpLmgi
IEhBVkVfU0hMV0FQSV9IKQotICBlbmRpZiAoKQotZW5kaWYgKCkKLQotc2V0IChHRkxBR1NfSU5U
VFlQRVNfRk9STUFUICIiIENBQ0hFIFNUUklORyAiRm9ybWF0IG9mIGludGVnZXIgdHlwZXM6IFwi
Qzk5XCIgKHVpbnQzMl90KSwgXCJCU0RcIiAodV9pbnQzMl90KSwgXCJWQzdcIiAoX19pbnQzMiki
KQotc2V0X3Byb3BlcnR5IChDQUNIRSBHRkxBR1NfSU5UVFlQRVNfRk9STUFUIFBST1BFUlRZIFNU
UklOR1MgIkM5OTtCU0Q7VkM3IikKLW1hcmtfYXNfYWR2YW5jZWQgKEdGTEFHU19JTlRUWVBFU19G
T1JNQVQpCi1pZiAoTk9UIEdGTEFHU19JTlRUWVBFU19GT1JNQVQpCi0gIHNldCAoVFlQRVMgdWlu
dDMyX3QgdV9pbnQzMl90KQotICBpZiAoTVNWQykKLSAgICBsaXN0IChJTlNFUlQgVFlQRVMgMCBf
X2ludDMyKQotICBlbmRpZiAoKQotICBmb3JlYWNoICh0eXBlIElOIExJU1RTIFRZUEVTKQotICAg
IGNoZWNrX3R5cGVfc2l6ZSAoJHt0eXBlfSAke3R5cGV9IExBTkdVQUdFIENYWCkKLSAgICBpZiAo
SEFWRV8ke3R5cGV9KQotICAgICAgYnJlYWsgKCkKLSAgICBlbmRpZiAoKQotICBlbmRmb3JlYWNo
ICgpCi0gIGlmIChIQVZFX3VpbnQzMl90KQotICAgIHNldF9wcm9wZXJ0eSAoQ0FDSEUgR0ZMQUdT
X0lOVFRZUEVTX0ZPUk1BVCBQUk9QRVJUWSBWQUxVRSBDOTkpCi0gIGVsc2VpZiAoSEFWRV91X2lu
dDMyX3QpCi0gICAgc2V0X3Byb3BlcnR5IChDQUNIRSBHRkxBR1NfSU5UVFlQRVNfRk9STUFUIFBS
T1BFUlRZIFZBTFVFIEJTRCkKLSAgZWxzZWlmIChIQVZFX19faW50MzIpCi0gICAgc2V0X3Byb3Bl
cnR5IChDQUNIRSBHRkxBR1NfSU5UVFlQRVNfRk9STUFUIFBST1BFUlRZIFZBTFVFIFZDNykKLSAg
ZWxzZSAoKQotICAgIG1hcmtfYXNfYWR2YW5jZWQgKENMRUFSIEdGTEFHU19JTlRUWVBFU19GT1JN
QVQpCi0gICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkRvIG5vdCBrbm93IGhvdyB0byBkZWZpbmUg
YSAzMi1iaXQgaW50ZWdlciBxdWFudGl0eSBvbiB5b3VyIHN5c3RlbSEiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIiBOZWl0aGVyIHVpbnQzMl90LCB1X2ludDMyX3QsIG5vciBfX2ludDMyIHNl
ZW0gdG8gYmUgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIFNldCBHRkxB
R1NfSU5UVFlQRVNfRk9STUFUIHRvIGVpdGhlciBDOTksIEJTRCwgb3IgVkM3IGFuZCB0cnkgYWdh
aW4uIikKLSAgZW5kaWYgKCkKLWVuZGlmICgpCi0jIHVzZSBvZiBzcGVjaWFsIGNoYXJhY3RlcnMg
aW4gc3RyaW5ncyB0byBjaXJjdW12ZW50IGJ1ZyAjMDAwODIyNgotaWYgKCJeJHtHRkxBR1NfSU5U
VFlQRVNfRk9STUFUfSQiIFNUUkVRVUFMICJeV0lOJCIpCi0gIHNldF9wcm9wZXJ0eSAoQ0FDSEUg
R0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVCBQUk9QRVJUWSBWQUxVRSBWQzcpCi1lbmRpZiAoKQotaWYg
KE5PVCBHRkxBR1NfSU5UVFlQRVNfRk9STUFUIE1BVENIRVMgIl4oQzk5fEJTRHxWQzcpJCIpCi0g
IG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJJbnZhbGlkIHZhbHVlIGZvciBHRkxBR1NfSU5UVFlQRVNf
Rk9STUFUISBDaG9vc2Ugb25lIG9mIFwiQzk5XCIsIFwiQlNEXCIsIG9yIFwiVkM3XCIiKQotZW5k
aWYgKCkKLXNldCAoR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVF9DOTkgMCkKLXNldCAoR0ZMQUdTX0lO
VFRZUEVTX0ZPUk1BVF9CU0QgMCkKLXNldCAoR0ZMQUdTX0lOVFRZUEVTX0ZPUk1BVF9WQzcgMCkK
LXNldCAoIkdGTEFHU19JTlRUWVBFU19GT1JNQVRfJHtHRkxBR1NfSU5UVFlQRVNfRk9STUFUfSIg
MSkKLQotaWYgKE1TVkMpCi0gIHNldCAoSEFWRV9zdHJ0b2xsIDApCi0gIHNldCAoSEFWRV9zdHJ0
b3EgIDApCi1lbHNlICgpCi0gIGNoZWNrX2N4eF9zeW1ib2xfZXhpc3RzIChzdHJ0b2xsIHN0ZGxp
Yi5oIEhBVkVfU1RSVE9MTCkKLSAgaWYgKE5PVCBIQVZFX1NUUlRPTEwpCi0gICAgY2hlY2tfY3h4
X3N5bWJvbF9leGlzdHMgKHN0cnRvcSBzdGRsaWIuaCBIQVZFX1NUUlRPUSkKLSAgZW5kaWYgKCkK
LWVuZGlmICgpCi0KLXNldCAoQ01BS0VfVEhSRUFEX1BSRUZFUl9QVEhSRUFEIFRSVUUpCi1maW5k
X3BhY2thZ2UgKFRocmVhZHMpCi1pZiAoVGhyZWFkc19GT1VORCBBTkQgQ01BS0VfVVNFX1BUSFJF
QURTX0lOSVQpCi0gIHNldCAoSEFWRV9QVEhSRUFEIDEpCi0gIGNoZWNrX3R5cGVfc2l6ZSAocHRo
cmVhZF9yd2xvY2tfdCBSV0xPQ0sgTEFOR1VBR0UgQ1hYKQotZWxzZSAoKQotICBzZXQgKEhBVkVf
UFRIUkVBRCAwKQotZW5kaWYgKCkKLQotaWYgKFVOSVggQU5EIE5PVCBIQVZFX1BUSFJFQUQgQU5E
IEJVSUxEX2dmbGFnc19MSUIpCi0gIGlmIChDTUFLRV9IQVZFX1BUSFJFQURfSCkKLSAgICBzZXQg
KHdoYXQgImxpYnJhcnkiKQotICBlbHNlICgpCi0gICAgc2V0ICh3aGF0ICIuaCBmaWxlIikKLSAg
ZW5kaWYgKCkKLSAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIkNvdWxkIG5vdCBmaW5kIHB0aHJlYWQk
e3doYXR9LiBDaGVjayB0aGUgbG9nIGZpbGUiCi0gICAgICAgICAgICAgICAgICAgICAgICJcblx0
JHtDTUFLRV9CSU5BUllfRElSfSR7Q01BS0VfRklMRVNfRElSRUNUT1JZfS9DTWFrZUVycm9yLmxv
ZyIKLSAgICAgICAgICAgICAgICAgICAgICAgIlxub3IgZGlzYWJsZSB0aGUgYnVpbGQgb2YgdGhl
IG11bHRpLXRocmVhZGVkIGdmbGFncyBsaWJyYXJ5IChCVUlMRF9nZmxhZ3NfTElCPU9GRikuIikK
LWVuZGlmICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzb3VyY2UgZmlsZXMgLSBleGNs
dWRpbmcgcm9vdCBzdWJkaXJlY3RvcnkgYW5kL29yIC5pbiBzdWZmaXgKLXNldCAoUFVCTElDX0hE
UlMKLSAgImdmbGFncy5oIgotICAiZ2ZsYWdzX2RlY2xhcmUuaCIKLSAgImdmbGFnc19jb21wbGV0
aW9ucy5oIgotKQotCi1pZiAoR0ZMQUdTX05BTUVTUEFDRV9TRUNPTkRBUlkpCi0gIHNldCAoSU5D
TFVERV9HRkxBR1NfTlNfSCAiLy8gSW1wb3J0IGdmbGFncyBsaWJyYXJ5IHN5bWJvbHMgaW50byBh
bHRlcm5hdGl2ZS9kZXByZWNhdGVkIG5hbWVzcGFjZShzKSIpCi0gIGZvcmVhY2ggKG5zIElOIExJ
U1RTIEdGTEFHU19OQU1FU1BBQ0VfU0VDT05EQVJZKQotICAgIHN0cmluZyAoVE9VUFBFUiAiJHtu
c30iIE5TKQotICAgIHNldCAoZ2ZsYWdzX25zX2ggIiR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNs
dWRlLyR7R0ZMQUdTX0lOQ0xVREVfRElSfS9nZmxhZ3NfJHtuc30uaCIpCi0gICAgY29uZmlndXJl
X2ZpbGUgKCIke1BST0pFQ1RfU09VUkNFX0RJUn0vc3JjL2dmbGFnc19ucy5oLmluIiAiJHtnZmxh
Z3NfbnNfaH0iIEBPTkxZKQotICAgIGxpc3QgKEFQUEVORCBQVUJMSUNfSERSUyAiJHtnZmxhZ3Nf
bnNfaH0iKQotICAgIHNldCAoSU5DTFVERV9HRkxBR1NfTlNfSCAiJHtJTkNMVURFX0dGTEFHU19O
U19IfVxuI2luY2x1ZGUgXCJnZmxhZ3NfJHtuc30uaFwiIikKLSAgZW5kZm9yZWFjaCAoKQotZWxz
ZSAoKQotICBzZXQgKElOQ0xVREVfR0ZMQUdTX05TX0gpCi1lbmRpZiAoKQotCi1zZXQgKFBSSVZB
VEVfSERSUwotICAiY29uZmlnLmgiCi0gICJ1dGlsLmgiCi0gICJtdXRleC5oIgotKQotCi1zZXQg
KEdGTEFHU19TUkNTCi0gICJnZmxhZ3MuY2MiCi0gICJnZmxhZ3NfcmVwb3J0aW5nLmNjIgotICAi
Z2ZsYWdzX2NvbXBsZXRpb25zLmNjIgotKQotCi1pZiAoT1NfV0lORE9XUykKLSAgbGlzdCAoQVBQ
RU5EIFBSSVZBVEVfSERSUyAid2luZG93c19wb3J0LmgiKQotICBsaXN0IChBUFBFTkQgR0ZMQUdT
X1NSQ1MgICJ3aW5kb3dzX3BvcnQuY2MiKQotZW5kaWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIGNvbmZpZ3VyZSBzb3VyY2UgZmlsZXMKLWlmIChDTUFLRV9DT01QSUxFUl9JU19HTlVD
WFgpCi0gIHNldCAoR0ZMQUdTX0FUVFJJQlVURV9VTlVTRUQgIl9fYXR0cmlidXRlKCh1bnVzZWQp
KSIpCi1lbHNlICgpCi0gIHNldCAoR0ZMQUdTX0FUVFJJQlVURV9VTlVTRUQpCi1lbmRpZiAoKQot
Ci0jIHdoZW5ldmVyIHdlIGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkgKERMTCBvbiBXaW5kb3dzKSwg
Y29uZmlndXJlIHRoZSBwdWJsaWMKLSMgaGVhZGVycyBvZiB0aGUgQVBJIGZvciB1c2Ugb2YgdGhp
cyBsaWJyYXJ5IHJhdGhlciB0aGFuIHRoZSBvcHRpb25hbGx5Ci0jIGFsc28gYnVpbGQgc3RhdGlj
YWxseSBsaW5rZWQgbGlicmFyeTsgdXNlcnMgY2FuIG92ZXJyaWRlIEdGTEFHU19ETExfREVDTAot
aWYgKEJVSUxEX1NIQVJFRF9MSUJTKQotICBzZXQgKEdGTEFHU19JU19BX0RMTCAxKQotZWxzZSAo
KQotICBzZXQgKEdGTEFHU19JU19BX0RMTCAwKQotZW5kaWYgKCkKLQotY29uZmlndXJlX2hlYWRl
cnMgKFBVQkxJQ19IRFJTICAke1BVQkxJQ19IRFJTfSkKLWNvbmZpZ3VyZV9zb3VyY2VzIChQUklW
QVRFX0hEUlMgJHtQUklWQVRFX0hEUlN9KQotY29uZmlndXJlX3NvdXJjZXMgKEdGTEFHU19TUkNT
ICAke0dGTEFHU19TUkNTfSkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIG91dHB1dCBkaXJl
Y3Rvcmllcwotc2V0IChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgImJpbiIpCi1zZXQg
KENNQUtFX0xJQlJBUllfT1VUUFVUX0RJUkVDVE9SWSAibGliIikKLXNldCAoQ01BS0VfQVJDSElW
RV9PVVRQVVRfRElSRUNUT1JZICJsaWIiKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW5z
dGFsbGF0aW9uIGRpcmVjdG9yaWVzCi1pZiAoT1NfV0lORE9XUykKLSAgc2V0IChSVU5USU1FX0lO
U1RBTExfRElSIEJpbikKLSAgc2V0IChMSUJSQVJZX0lOU1RBTExfRElSIExpYikKLSAgc2V0IChJ
TkNMVURFX0lOU1RBTExfRElSIEluY2x1ZGUpCi0gIHNldCAoQ09ORklHX0lOU1RBTExfRElSICBD
TWFrZSkKLWVsc2UgKCkKLSAgc2V0IChSVU5USU1FX0lOU1RBTExfRElSIGJpbikKLSAgIyBUaGUg
TElCX0lOU1RBTExfRElSIGFuZCBMSUJfU1VGRklYIHZhcmlhYmxlcyBhcmUgdXNlZCBieSB0aGUg
RmVkb3JhCi0gICMgcGFja2FnZSBtYWludGFpbmVycy4gQWxzbyBwYWNrYWdlIG1haW50YWluZXJz
IG9mIG90aGVyIGRpc3RyaWJ1dGlvbgotICAjIHBhY2thZ2VzIG5lZWQgdG8gYmUgYWJsZSB0byBz
cGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeS4KLSAgaWYgKE5PVCBMSUJf
SU5TVEFMTF9ESVIpCi0gICAgc2V0IChMSUJfSU5TVEFMTF9ESVIgImxpYiR7TElCX1NVRkZJWH0i
KQotICBlbmRpZiAoKQotICBzZXQgKExJQlJBUllfSU5TVEFMTF9ESVIgIiR7TElCX0lOU1RBTExf
RElSfSIKLSAgICBDQUNIRSBQQVRIICJEaXJlY3Rvcnkgb2YgaW5zdGFsbGVkIGxpYnJhcmllcywg
ZS5nLiwgXCJsaWI2NFwiIgotICApCi0gIG1hcmtfYXNfYWR2YW5jZWQgKExJQlJBUllfSU5TVEFM
TF9ESVIpCi0gIHNldCAoSU5DTFVERV9JTlNUQUxMX0RJUiBpbmNsdWRlKQotICBzZXQgKENPTkZJ
R19JTlNUQUxMX0RJUiAgJHtMSUJSQVJZX0lOU1RBTExfRElSfS9jbWFrZS8ke1BBQ0tBR0VfTkFN
RX0pCi1lbmRpZiAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgYWRkIGxpYnJhcnkgdGFy
Z2V0cwotc2V0IChUQVJHRVRTKQotIyBzdGF0aWMgdnMuIHNoYXJlZAotZm9yZWFjaCAoVFlQRSBJ
TiBJVEVNUyBTVEFUSUMgU0hBUkVEKQotICBpZiAoQlVJTERfJHtUWVBFfV9MSUJTKQotICAgICMg
d2hldGhlciBvciBub3QgdGFyZ2V0cyBhcmUgYSBETEwKLSAgICBpZiAoT1NfV0lORE9XUyBBTkQg
Il4ke1RZUEV9JCIgU1RSRVFVQUwgIl5TSEFSRUQkIikKLSAgICAgIHNldCAoR0ZMQUdTX0lTX0Ff
RExMIDEpCi0gICAgZWxzZSAoKQotICAgICAgc2V0IChHRkxBR1NfSVNfQV9ETEwgMCkKLSAgICBl
bmRpZiAoKQotICAgIHN0cmluZyAoVE9MT1dFUiAiJHtUWVBFfSIgdHlwZSkKLSAgICAjIG11bHRp
LXRocmVhZGVkIHZzLiBzaW5nbGUtdGhyZWFkZWQKLSAgICBmb3JlYWNoIChvcHRzIElOIElURU1T
ICIiIF9ub3RocmVhZHMpCi0gICAgICBpZiAoQlVJTERfZ2ZsYWdzJHtvcHRzfV9MSUIpCi0gICAg
ICAgIGFkZF9saWJyYXJ5IChnZmxhZ3Mke29wdHN9LSR7dHlwZX0gJHtUWVBFfSAke0dGTEFHU19T
UkNTfSAke1BSSVZBVEVfSERSU30gJHtQVUJMSUNfSERSU30pCi0gICAgICAgIHNldCAoaW5jbHVk
ZV9kaXJzICIkPEJVSUxEX0lOVEVSRkFDRToke1BST0pFQ1RfQklOQVJZX0RJUn0vaW5jbHVkZT4i
KQotICAgICAgICBpZiAoSU5TVEFMTF9IRUFERVJTKQotICAgICAgICAgIGxpc3QgKEFQUEVORCBp
bmNsdWRlX2RpcnMgIiQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtJTkNMVURFX0lOU1RBTExfRElSfT4i
KQotICAgICAgICBlbmRpZiAoKQotICAgICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyAo
Z2ZsYWdzJHtvcHRzfS0ke3R5cGV9Ci0gICAgICAgICAgUFVCTElDICAiJHtpbmNsdWRlX2RpcnN9
IgotICAgICAgICAgIFBSSVZBVEUgIiR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmM7JHtQUk9KRUNU
X0JJTkFSWV9ESVJ9L2luY2x1ZGUvJHtHRkxBR1NfSU5DTFVERV9ESVJ9IgotICAgICAgICApCi0g
ICAgICAgIGlmIChvcHRzIE1BVENIRVMgIm5vdGhyZWFkcyIpCi0gICAgICAgICAgc2V0IChkZWZp
bmVzICJHRkxBR1NfSVNfQV9ETEw9JHtHRkxBR1NfSVNfQV9ETEx9O05PVEhSRUFEUyIpCi0gICAg
ICAgIGVsc2UgKCkKLSAgICAgICAgICBzZXQgKGRlZmluZXMgIkdGTEFHU19JU19BX0RMTD0ke0dG
TEFHU19JU19BX0RMTH0iKQotICAgICAgICAgIGlmIChDTUFLRV9VU0VfUFRIUkVBRFNfSU5JVCkK
LSAgICAgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyAoZ2ZsYWdzJHtvcHRzfS0ke3R5cGV9
ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCi0gICAgICAgICAgZW5kaWYgKCkKLSAgICAgICAg
ZW5kaWYgKCkKLSAgICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzICgKLSAgICAgICAgICBnZmxh
Z3Mke29wdHN9LSR7dHlwZX0gUFJPUEVSVElFUyBDT01QSUxFX0RFRklOSVRJT05TICIke2RlZmlu
ZXN9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9O
QU1FICAgICAgICAgImdmbGFncyR7b3B0c30iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVkVSU0lPTiAgICAgICAgICAgICAiJHtQQUNLQUdFX1ZFUlNJT059Igot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVkVSU0lPTiAgICAg
ICAgICAgIiR7UEFDS0FHRV9TT1ZFUlNJT059IgotICAgICAgICApCi0gICAgICAgIGlmIChIQVZF
X1NITFdBUElfSCkKLSAgICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMgKGdmbGFncyR7b3B0
c30tJHt0eXBlfSBzaGx3YXBpLmxpYikKLSAgICAgICAgZW5kaWYgKCkKLSAgICAgICAgaWYgKE5P
VCBUQVJHRVQgZ2ZsYWdzJHtvcHRzfSkKLSAgICAgICAgICBhZGRfY3VzdG9tX3RhcmdldCAoZ2Zs
YWdzJHtvcHRzfSkKLSAgICAgICAgZW5kaWYgKCkKLSAgICAgICAgYWRkX2RlcGVuZGVuY2llcyAo
Z2ZsYWdzJHtvcHRzfSBnZmxhZ3Mke29wdHN9LSR7dHlwZX0pCi0gICAgICAgIGxpc3QgKEFQUEVO
RCBUQVJHRVRTIGdmbGFncyR7b3B0c30tJHt0eXBlfSkKLSAgICAgIGVuZGlmICgpCi0gICAgZW5k
Zm9yZWFjaCAoKQotICBlbmRpZiAoKQotZW5kZm9yZWFjaCAoKQotCi0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSMgaW5zdGFsbGF0aW9uIHJ1bGVzCi1maWxlIChSRUxBVElWRV9QQVRIIElOU1RBTExf
UFJFRklYX1JFTDJDT05GSUdfRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS8ke0NPTkZJR19J
TlNUQUxMX0RJUn0iICIke0NNQUtFX0lOU1RBTExfUFJFRklYfSIpCi1jb25maWd1cmVfZmlsZSAo
Y21ha2UvY29uZmlnLmNtYWtlLmluICAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UEFDS0FHRV9O
QU1FfS1jb25maWctaW5zdGFsbC5jbWFrZSIgQE9OTFkpCi1jb25maWd1cmVfZmlsZSAoY21ha2Uv
dmVyc2lvbi5jbWFrZS5pbiAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UEFDS0FHRV9OQU1FfS1j
b25maWctdmVyc2lvbi5jbWFrZSIgQE9OTFkpCi0KLWluc3RhbGwgKFRBUkdFVFMgJHtUQVJHRVRT
fSBERVNUSU5BVElPTiAke0xJQlJBUllfSU5TVEFMTF9ESVJ9IEVYUE9SVCBnZmxhZ3MtbGliKQot
aWYgKElOU1RBTExfSEVBREVSUykKLSAgaW5zdGFsbCAoRklMRVMgJHtQVUJMSUNfSERSU30gREVT
VElOQVRJT04gJHtJTkNMVURFX0lOU1RBTExfRElSfS8ke0dGTEFHU19JTkNMVURFX0RJUn0pCi0g
IGluc3RhbGwgKAotICAgIEZJTEVTICIke1BST0pFQ1RfQklOQVJZX0RJUn0vJHtQQUNLQUdFX05B
TUV9LWNvbmZpZy1pbnN0YWxsLmNtYWtlIgotICAgIFJFTkFNRSAke1BBQ0tBR0VfTkFNRX0tY29u
ZmlnLmNtYWtlCi0gICAgREVTVElOQVRJT04gJHtDT05GSUdfSU5TVEFMTF9ESVJ9Ci0gICkKLSAg
aW5zdGFsbCAoCi0gICAgRklMRVMgIiR7UFJPSkVDVF9CSU5BUllfRElSfS8ke1BBQ0tBR0VfTkFN
RX0tY29uZmlnLXZlcnNpb24uY21ha2UiCi0gICAgREVTVElOQVRJT04gJHtDT05GSUdfSU5TVEFM
TF9ESVJ9Ci0gICkKLSAgaW5zdGFsbCAoRVhQT1JUIGdmbGFncy1saWIgREVTVElOQVRJT04gJHtD
T05GSUdfSU5TVEFMTF9ESVJ9IEZJTEUgJHtQQUNLQUdFX05BTUV9LWV4cG9ydC5jbWFrZSkKLSAg
aWYgKFVOSVgpCi0gICAgaW5zdGFsbCAoUFJPR1JBTVMgc3JjL2dmbGFnc19jb21wbGV0aW9ucy5z
aCBERVNUSU5BVElPTiAke1JVTlRJTUVfSU5TVEFMTF9ESVJ9KQotICBlbmRpZiAoKQotZW5kaWYg
KCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHN1cHBvcnQgZGlyZWN0IHVzZSBvZiBidWls
ZCB0cmVlCi1zZXQgKElOU1RBTExfUFJFRklYX1JFTDJDT05GSUdfRElSIC4pCi1leHBvcnQgKFRB
UkdFVFMgJHtUQVJHRVRTfSBGSUxFICIke1BST0pFQ1RfQklOQVJZX0RJUn0vJHtQQUNLQUdFX05B
TUV9LWV4cG9ydC5jbWFrZSIpCi1leHBvcnQgKFBBQ0tBR0UgZ2ZsYWdzKQotY29uZmlndXJlX2Zp
bGUgKGNtYWtlL2NvbmZpZy5jbWFrZS5pbiAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UEFDS0FH
RV9OQU1FfS1jb25maWcuY21ha2UiIEBPTkxZKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg
dGVzdGluZyAtIE1VU1QgZm9sbG93IHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBidWlsZCB0cmVlIGNv
bmZpZyBmaWxlCi1pZiAoQlVJTERfVEVTVElORykKLSAgaW5jbHVkZSAoQ1Rlc3QpCi0gIGVuYWJs
ZV90ZXN0aW5nICgpCi0gIGFkZF9zdWJkaXJlY3RvcnkgKHRlc3QpCi1lbmRpZiAoKQotCi0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSMgcGFja2FnaW5nCi1pZiAoQlVJTERfUEFDS0FHSU5HKQotCi0g
IGlmIChOT1QgQlVJTERfU0hBUkVEX0xJQlMgQU5EIE5PVCBJTlNUQUxMX0hFQURFUlMpCi0gICAg
bWVzc2FnZSAoV0FSTklORyAiUGFja2FnZSB3aWxsIGNvbnRhaW4gc3RhdGljIGxpYnJhcmllcyB3
aXRob3V0IGhlYWRlcnMhIgotICAgICAgICAgICAgICAgICAgICAgIlxuUmVjb21tZW5kZWQgb3B0
aW9ucyBmb3IgZ2VuZXJhdGlvbiBvZiBydW50aW1lIHBhY2thZ2U6IgotICAgICAgICAgICAgICAg
ICAgICAgIlxuICBCVUlMRF9TSEFSRURfTElCUz1PTiIKLSAgICAgICAgICAgICAgICAgICAgICJc
biAgQlVJTERfU1RBVElDX0xJQlM9T0ZGIgotICAgICAgICAgICAgICAgICAgICAgIlxuICBJTlNU
QUxMX0hFQURFUlM9T0ZGIgotICAgICAgICAgICAgICAgICAgICAgIlxuUmVjb21tZW5kZWQgb3B0
aW9ucyBmb3IgZ2VuZXJhdGlvbiBvZiBkZXZlbG9wbWVudCBwYWNrYWdlOiIKLSAgICAgICAgICAg
ICAgICAgICAgICJcbiAgQlVJTERfU0hBUkVEX0xJQlM9T04iCi0gICAgICAgICAgICAgICAgICAg
ICAiXG4gIEJVSUxEX1NUQVRJQ19MSUJTPU9OIgotICAgICAgICAgICAgICAgICAgICAgIlxuICBJ
TlNUQUxMX0hFQURFUlM9T04iKQotICBlbmRpZiAoKQotCi0gICMgZGVmYXVsdCBwYWNrYWdlIGdl
bmVyYXRvcnMKLSAgaWYgKEFQUExFKQotICAgIHNldCAoUEFDS0FHRV9HRU5FUkFUT1IgICAgICAg
ICJQYWNrYWdlTWFrZXIiKQotICAgIHNldCAoUEFDS0FHRV9TT1VSQ0VfR0VORVJBVE9SICJUR1o7
WklQIikKLSAgZWxzZWlmIChVTklYKQotICAgIHNldCAoUEFDS0FHRV9HRU5FUkFUT1IgICAgICAg
ICJERUI7UlBNIikKLSAgICBzZXQgKFBBQ0tBR0VfU09VUkNFX0dFTkVSQVRPUiAiVEdaO1pJUCIp
Ci0gIGVsc2UgKCkKLSAgICBzZXQgKFBBQ0tBR0VfR0VORVJBVE9SICAgICAgICAiWklQIikKLSAg
ICBzZXQgKFBBQ0tBR0VfU09VUkNFX0dFTkVSQVRPUiAiWklQIikKLSAgZW5kaWYgKCkKLQotICAj
IHVzZWQgcGFja2FnZSBnZW5lcmF0b3JzCi0gIHNldCAoQ1BBQ0tfR0VORVJBVE9SICAgICAgICAi
JHtQQUNLQUdFX0dFTkVSQVRPUn0iICAgICAgICBDQUNIRSBTVFJJTkcgIkxpc3Qgb2YgYmluYXJ5
IHBhY2thZ2UgZ2VuZXJhdG9ycyAoQ1BhY2spLiIpCi0gIHNldCAoQ1BBQ0tfU09VUkNFX0dFTkVS
QVRPUiAiJHtQQUNLQUdFX1NPVVJDRV9HRU5FUkFUT1J9IiBDQUNIRSBTVFJJTkcgIkxpc3Qgb2Yg
c291cmNlIHBhY2thZ2UgZ2VuZXJhdG9ycyAoQ1BhY2spLiIpCi0gIG1hcmtfYXNfYWR2YW5jZWQg
KENQQUNLX0dFTkVSQVRPUiBDUEFDS19TT1VSQ0VfR0VORVJBVE9SKQotCi0gICMgc29tZSBwYWNr
YWdlIGdlbmVyYXRvcnMgKGUuZy4sIFBhY2thZ2VNYWtlcikgZG8gbm90IGFsbG93IC5tZCBleHRl
bnNpb24KLSAgY29uZmlndXJlX2ZpbGUgKCIke0NNQUtFX0NVUlJFTlRfTElTVF9ESVJ9L1JFQURN
RS5tZCIgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9SRUFETUUudHh0IiBDT1BZT05MWSkK
LQotICAjIGNvbW1vbiBwYWNrYWdlIGluZm9ybWF0aW9uCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9W
RU5ET1IgICAgICAgICAgICAgICJBbmRyZWFzIFNjaHVoIikKLSAgc2V0IChDUEFDS19QQUNLQUdF
X0NPTlRBQ1QgICAgICAgICAgICAgImdvb2dsZS1nZmxhZ3NAZ29vZ2xlZ3JvdXBzLmNvbSIpCi0g
IHNldCAoQ1BBQ0tfUEFDS0FHRV9OQU1FICAgICAgICAgICAgICAgICIke1BBQ0tBR0VfTkFNRX0i
KQotICBzZXQgKENQQUNLX1BBQ0tBR0VfVkVSU0lPTiAgICAgICAgICAgICAiJHtQQUNLQUdFX1ZF
UlNJT059IikKLSAgc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT05fTUFKT1IgICAgICAgIiR7UEFD
S0FHRV9WRVJTSU9OX01BSk9SfSIpCi0gIHNldCAoQ1BBQ0tfUEFDS0FHRV9WRVJTSU9OX01JTk9S
ICAgICAgICIke1BBQ0tBR0VfVkVSU0lPTl9NSU5PUn0iKQotICBzZXQgKENQQUNLX1BBQ0tBR0Vf
VkVSU0lPTl9QQVRDSCAgICAgICAiJHtQQUNLQUdFX1ZFUlNJT05fUEFUQ0h9IikKLSAgc2V0IChD
UEFDS19QQUNLQUdFX0RFU0NSSVBUSU9OX1NVTU1BUlkgIkEgY29tbWFuZGxpbmUgZmxhZ3MgbGli
cmFyeSB0aGF0IGFsbG93cyBmb3IgZGlzdHJpYnV0ZWQgZmxhZ3MuIikKLSAgc2V0IChDUEFDS19S
RVNPVVJDRV9GSUxFX1dFTENPTUUgICAgICAgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9S
RUFETUUudHh0IikKLSAgc2V0IChDUEFDS19SRVNPVVJDRV9GSUxFX0xJQ0VOU0UgICAgICAgIiR7
Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQ09QWUlORy50eHQiKQotICBzZXQgKENQQUNLX1BBQ0tB
R0VfREVTQ1JJUFRJT05fRklMRSAgICAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1JFQURN
RS50eHQiKQotICBzZXQgKENQQUNLX0lOU1RBTExfUFJFRklYICAgICAgICAgICAgICAiJHtDTUFL
RV9JTlNUQUxMX1BSRUZJWH0iKQotICBzZXQgKENQQUNLX09VVFBVVF9GSUxFX1BSRUZJWCAgICAg
ICAgICBwYWNrYWdlcykKLSAgc2V0IChDUEFDS19QQUNLQUdFX1JFTE9DQVRBQkxFICAgICAgICAg
VFJVRSkKLSAgc2V0IChDUEFDS19NT05PTElUSElDX0lOU1RBTEwgICAgICAgICAgVFJVRSkKLQot
ICAjIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIC0tIHVzZWQgaW4gY21ha2UvcGFja2FnZS5jbWFr
ZS5pbiBhbHNvIGZvciBERUIKLSAgc2V0IChDUEFDS19SUE1fUEFDS0FHRV9HUk9VUCAgICJEZXZl
bG9wbWVudC9MaWJyYXJpZXMiKQotICBzZXQgKENQQUNLX1JQTV9QQUNLQUdFX0xJQ0VOU0UgIkJT
RCIpCi0gIHNldCAoQ1BBQ0tfUlBNX1BBQ0tBR0VfVVJMICAgICAiaHR0cDovL3NjaHVoc2NodWgu
Z2l0aHViLmNvbS9nZmxhZ3MiKQotICBzZXQgKENQQUNLX1JQTV9DSEFOR0VMT0dfRklMRSAgIiR7
Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vQ2hhbmdlTG9nLnR4dCIpCi0KLSAgaWYgKElOU1RBTExf
SEVBREVSUykKLSAgICBzZXQgKENQQUNLX1JFU09VUkNFX0ZJTEVfUkVBRE1FICIke0NNQUtFX0NV
UlJFTlRfTElTVF9ESVJ9L2RvYy9pbmRleC5odG1sIikKLSAgZWxzZSAoKQotICAgIHNldCAoQ1BB
Q0tfUkVTT1VSQ0VfRklMRV9SRUFETUUgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY21ha2Uv
UkVBRE1FX3J1bnRpbWUudHh0IikKLSAgZW5kaWYgKCkKLQotICAjIHN5c3RlbS9hcmNoaXRlY3R1
cmUKLSAgaWYgKFdJTkRPV1MpCi0gICAgaWYgKENNQUtFX0NMXzY0KQotICAgICAgc2V0IChDUEFD
S19TWVNURU1fTkFNRSAid2luNjQiKQotICAgIGVsc2UgKCkKLSAgICAgIHNldCAoQ1BBQ0tfU1lT
VEVNX05BTUUgIndpbjMyIikKLSAgICBlbmRpZiAoKQotICAgIHNldCAoQ1BBQ0tfUEFDS0FHRV9B
UkNISVRFQ1RVUkUpCi0gIGVsc2VpZiAoQVBQTEUpCi0gICAgc2V0IChDUEFDS19QQUNLQUdFX0FS
Q0hJVEVDVFVSRSBkYXJ3aW4pCi0gIGVsc2UgKCkKLSAgICBzdHJpbmcgKFRPTE9XRVIgIiR7Q01B
S0VfU1lTVEVNX05BTUV9IiBDUEFDS19TWVNURU1fTkFNRSkKLSAgICBpZiAoQ01BS0VfQ1hYX0ZM
QUdTIE1BVENIRVMgIi1tMzIiKQotICAgICAgc2V0IChDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVS
RSBpMzg2KQotICAgIGVsc2UgKCkKLSAgICAgIGV4ZWN1dGVfcHJvY2VzcyAoCi0gICAgICAgIENP
TU1BTkQgICAgICAgICBkcGtnIC0tcHJpbnQtYXJjaGl0ZWN0dXJlCi0gICAgICAgIFJFU1VMVF9W
QVJJQUJMRSBSVgotICAgICAgICBPVVRQVVRfVkFSSUFCTEUgQ1BBQ0tfUEFDS0FHRV9BUkNISVRF
Q1RVUkUKLSAgICAgICkKLSAgICAgIGlmIChSViBFUVVBTCAwKQotCSAgICAgIHN0cmluZyAoU1RS
SVAgIiR7Q1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkV9IiBDUEFDS19QQUNLQUdFX0FSQ0hJVEVD
VFVSRSkKLSAgICAgIGVsc2UgKCkKLSAgICAgICAgZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EIHVu
YW1lIC1tIE9VVFBVVF9WQVJJQUJMRSBDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVSRSkKLSAgICAg
ICAgaWYgKENQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFIE1BVENIRVMgIng4Nl82NCIpCi0JICAg
ICAgICBzZXQgKENQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFIGFtZDY0KQotICAgICAgICBlbHNl
ICgpCi0gICAgICAgICAgc2V0IChDUEFDS19QQUNLQUdFX0FSQ0hJVEVDVFVSRSBpMzg2KQotICAg
ICAgICBlbmRpZiAoKQotICAgICAgZW5kaWYgKCkKLSAgICBlbmRpZiAoKQotICBlbmRpZiAoKQot
Ci0gICMgc291cmNlIHBhY2thZ2Ugc2V0dGluZ3MKLSAgc2V0IChDUEFDS19TT1VSQ0VfVE9QTEVW
RUxfVEFHICAgICAgInNvdXJjZSIpCi0gIHNldCAoQ1BBQ0tfU09VUkNFX1BBQ0tBR0VfRklMRV9O
QU1FICIke0NQQUNLX1BBQ0tBR0VfTkFNRX0tJHtDUEFDS19QQUNLQUdFX1ZFUlNJT059IikKLSAg
c2V0IChDUEFDS19TT1VSQ0VfSUdOT1JFX0ZJTEVTICAgICAgIi9cXFxcLmdpdC87XFxcXC5zd3Ak
O1xcXFwuIzsvIztcXFxcLip+O2NzY29wZVxcXFwuKjsvW0JiXXVpbGRbListX2EtekEtWjAtOV0q
LyIpCi0KLSAgIyBkZWZhdWx0IGJpbmFyeSBwYWNrYWdlIHNldHRpbmdzCi0gIHNldCAoQ1BBQ0tf
SU5DTFVERV9UT1BMRVZFTF9ESVJFQ1RPUlkgVFJVRSkKLSAgc2V0IChDUEFDS19QQUNLQUdFX0ZJ
TEVfTkFNRSAgICAgICAgICAiJHtDUEFDS19QQUNLQUdFX05BTUV9LSR7Q1BBQ0tfUEFDS0FHRV9W
RVJTSU9OfS0ke0NQQUNLX1NZU1RFTV9OQU1FfSIpCi0gIGlmIChDUEFDS19QQUNLQUdFX0FSQ0hJ
VEVDVFVSRSkKLSAgICBzZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICIke0NQQUNLX1BBQ0tB
R0VfRklMRV9OQU1FfS0ke0NQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFfSIpCi0gIGVuZGlmICgp
Ci0KLSAgIyBnZW5lcmF0b3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlCi0gICMKLSAgIyBh
bGxvdyBwYWNrYWdlIG1haW50YWluZXJzIHRvIHVzZSB0aGVpciBvd24gY29uZmlndXJhdGlvbiBm
aWxlCi0gICMgJCBjbWFrZSAtRENQQUNLX1BST0pFQ1RfQ09ORklHX0ZJTEU6RklMRT0vcGF0aC90
by9wYWNrYWdlL2NvbmZpZwotICBpZiAoTk9UIENQQUNLX1BST0pFQ1RfQ09ORklHX0ZJTEUpCi0g
ICAgY29uZmlndXJlX2ZpbGUgKAotICAgICAgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY21h
a2UvcGFja2FnZS5jbWFrZS5pbiIKLSAgICAgICIke1BST0pFQ1RfQklOQVJZX0RJUn0vJHtQQUNL
QUdFX05BTUV9LXBhY2thZ2UuY21ha2UiIEBPTkxZCi0gICAgKQotICAgIHNldCAoQ1BBQ0tfUFJP
SkVDVF9DT05GSUdfRklMRSAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9LyR7UEFDS0FHRV9OQU1FfS1w
YWNrYWdlLmNtYWtlIikKLSAgZW5kaWYgKCkKLQotICBpbmNsdWRlIChDUGFjaykKLQotZW5kaWYg
KCkgIyBCVUlMRF9QQUNLQUdJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DT1BZSU5HLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DT1BZSU5H
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1YjBjMjQxMzRkLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL0NPUFlJTkcudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAot
Q29weXJpZ2h0IChjKSAyMDA2LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQot
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQot
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9DaGFuZ2VMb2cudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL0No
YW5nZUxvZy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYTlmODM5NTBmYS4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9DaGFuZ2VMb2cudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjE4
ICswLDAgQEAKLSogVHVlIE1hciAyNCAyMDE0IC0gQW5kcmVhcyBTY2h1aCA8YW5kcmVhcy5zY2h1
aC44NEBnbWFpbC5jb20+Ci0KLS0gZ2ZsYWdzOiB2ZXJzaW9uIDIuMS4yCi0tIE1vdmVkIHByb2pl
Y3QgdG8gR2l0SHViCi0tIEFkZGVkIEdGTEFHU19OQU1FU1BBQ0UgZGVmaW5pdGlvbiB0byBnZmxh
Z3NfZGVjbGFyZS5oCi0tIEZpeGVkIGlzc3VlIDk0OiBLZWVwICJnb29nbGUiIGFzIHByaW1hcnkg
bmFtZXNwYWNlIGFuZCBpbXBvcnQgc3ltYm9scyBpbnRvICJnZmxhZ3MiIG5hbWVzcGFjZQotLSBG
aXhlZCBpc3N1ZSA5NjogRml4IGJpbmFyeSBBQkkgY29tcGF0aWJpbGl0eSB3aXRoIGdmbGFncyAy
LjAgdXNpbmcgImdvb2dsZSIgYXMgcHJpbWFyeSBuYW1lc3BhY2UKLS0gRml4ZWQgaXNzdWUgOTcv
MTAxOiBSZW1vdmVkIChwYXRjaGVkKSBDTWFrZSBtb2R1bGVzIGFuZCBlbmFibGVkIEMgbGFuZ3Vh
Z2UgaW5zdGVhZAotLSBGaXhlZCBpc3N1ZSAxMDM6IFNldCBDTWFrZSBwb2xpY3kgQ01QMDA0MiB0
byBzaWxlbmNlIHdhcm5pbmcgcmVnYXJkaW5nIE1BQ09TX1JQQVRIIHNldHRpbmcKLQotKiBTdW4g
TWFyIDIwIDIwMTQgLSBBbmRyZWFzIFNjaHVoIDxnb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5j
b20+Ci0KLS0gZ2ZsYWdzOiB2ZXJzaW9uIDIuMS4xCi0tIEZpeGVkIGlzc3VlIDc3OiBHRkxBR1Nf
SVNfQV9ETEwgZXhwYW5kcyB0byBlbXB0eSBzdHJpbmcgaW4gZ2ZsYWdzX2RlY2xhcmUuaAotLSBG
aXhlZCBpc3N1ZSA3OTogR0ZMQUdTX05BTUVTUEFDRSBub3QgZXhwYW5kZWQgdG8gYWN0dWFsIG5h
bWVzcGFjZSBpbiBnZmxhZ3NfZGVjbGFyZS5oCi0tIEZpeGVkIGlzc3VlIDgwOiBBbGxvdyBpbmNs
dWRlIHBhdGggdG8gZGlmZmVyIGZyb20gR0ZMQUdTX05BTUVTUEFDRQotCi0qIFRodSBNYXIgMjAg
MjAxNCAtIEFuZHJlYXMgU2NodWggPGdvb2dsZS1nZmxhZ3NAZ29vZ2xlZ3JvdXBzLmNvbT4KLQot
LSBnZmxhZ3M6IHZlcnNpb24gMi4xLjAKLS0gQnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdXNp
bmcgQ01ha2UgaW5zdGVhZCBvZiBhdXRvdG9vbHMKLS0gQ1BhY2sgcGFja2FnaW5nIHN1cHBvcnQg
Zm9yIERlYmlhbi9VYnVudHUsIFJlZCBIYXQsIGFuZCBNYWMgT1MgWAotLSBGaXhlZCBpc3N1ZSA1
NDogRml4ICJpbnZhbGlkIHN1ZmZpeCBvbiBsaXRlcmFsIiAoQysrMTEpCi0tIEZpeGVkIGlzc3Vl
IDU3OiBVc2UgX3N0cmR1cCBpbnN0ZWFkIG9mIHN0cmR1cCBvbiBXaW5kb3dzCi0tIEZpeGVkIGlz
c3VlIDYyOiBDaGFuZ2UgYWxsIHByZXByb2Nlc3NvciBpbmNsdWRlIGd1YXJkcyB0byBzdGFydCB3
aXRoIEdGTEFHU18KLS0gRml4ZWQgaXNzdWUgNjQ6IEFkZCBERUZJTkVfdmFsaWRhdG9yIG1hY3Jv
Ci0tIEZpeGVkIGlzc3VlIDczOiBXYXJuaW5ncyBpbiBWaXN1YWwgU3R1ZGlvIDIwMTAgYW5kIHVu
YWJsZSB0byBjb21waWxlIHVuaXQgdGVzdAotCi0qIFdlZCBKYW4gMjUgMjAxMiAtIEdvb2dsZSBJ
bmMuIDxnb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb20+Ci0KLS0gZ2ZsYWdzOiB2ZXJzaW9u
IDIuMAotLSBDaGFuZ2VkIHRoZSAnb2ZmaWNpYWwnIGdmbGFncyBlbWFpbCBpbiBzZXR1cC5weS9l
dGMKLS0gUmVuYW1lZCBnb29nbGUtZ2ZsYWdzLnNsbiB0byBnZmxhZ3Muc2xuCi0tIENoYW5nZWQg
Y29weXJpZ2h0IHRleHQgdG8gcmVmbGVjdCBHb29nbGUncyByZWxpbnF1aXNoZWQgb3duZXJzaGlw
Ci0KLSogVHVlIERlYyAyMCAyMDExIC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNv
bT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDEuNwotLSBBZGQgQ29tbWFuZExpbmVGbGFn
SW5mbzo6ZmxhZ19wdHIgcG9pbnRpbmcgdG8gY3VycmVudCBzdG9yYWdlIChtdXNqaSkKLS0gUE9S
VElORzogZmx1c2ggYWZ0ZXIgd3JpdGluZyB0byBzdGRlcnIsIG5lZWRlZCBvbiBjeWd3aW4KLS0g
UE9SVElORzogQ2xlYW4gdXAgdGhlIEdGTEFHU19ETExfREVDTCBzdHVmZiBiZXR0ZXIKLS0gRml4
IGEgYnVnIGluIFN0cmluZ1ByaW50ZigpIHRoYXQgYWZmZWN0ZWQgbGFyZ2Ugc3RyaW5ncyAoY3Np
bHZlcnMpCi0tIERpZSBhdCBjb25maWd1cmUtdGltZSB3aGVuIGcrKyBpc24ndCBpbnN0YWxsZWQK
LQotKiBGcmkgSnVsIDI5IDIwMTEgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29t
PgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS42Ci0tIEJVR0ZJWDogRml4IGEgYnVnIHdo
ZXJlIHdlIHdlcmUgbGVhdmluZyBvdXQgYSByZXF1aXJlZCAkKHRvcF9zcmNkaXIpCi0tIEZpeCBk
ZWZpbml0aW9uIG9mIGNsc3RyaW5nIChqeXJraSkKLS0gU3BsaXQgdXAgZmxhZyBkZWNsYXJlcyBp
bnRvIGl0cyBvd24gZmlsZSAoanlya2kpCi0tIEFkZCAtLXZlcnNpb24gc3VwcG9ydCAoY3NpbHZl
cnMpCi0tIFVwZGF0ZSB0aGUgUkVBRE1FIGZvciBnZmxhZ3Mgd2l0aCBzdGF0aWMgbGlicwotLSBV
cGRhdGUgYWN4X3B0aHJlYWQubTQgZm9yIG5vc3RkbGliCi0tIENoYW5nZSBSZXBhcnNlQ29tbWFu
ZExpbmVGbGFncyB0byByZXR1cm4gdm9pZCAoY3NpbHZlcnMpCi0tIFNvbWUgZG9jIHR5cG9maXhl
cyBhbmQgZXhhbXBsZSBhdWdtZW50YXRpb24gKHZhcmlvdXMpCi0KLSogTW9uIEphbiAyNCAyMDEx
IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdz
OiB2ZXJzaW9uIDEuNQotLSBCZXR0ZXIgcmVwb3J0aW5nIG9mIGN1cnJlbnQgdnMgZGVmYXVsdCB2
YWx1ZSAoaGFuZGxlcikKLS0gQWRkIEFQSSBmb3IgY2xlYW5pbmcgdXAgb2YgbWVtb3J5IGF0IHBy
b2dyYW0tZXhpdCAoam1hcmFudHopCi0tIEZpeCBtYWNyb3MgdG8gd29yayBpbnNpZGUgbmFtZXNw
YWNlcyAoY3NpbHZlcnMpCi0tIFVzZSBvdXIgb3duIHN0cmluZyB0eXBlZGVmIGluIGNhc2Ugc3Ry
aW5nIGlzIHJlZGVmaW5lZCAoY3NpbHZlcnMpCi0tIFVwZGF0ZWQgdG8gYXV0b2NvbmYgMi42NQot
Ci0qIFdlZCBPY3QgMTMgMjAxMCAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNlQGdvb2dsZS5jb20+
Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAxLjQKLS0gQWRkIGEgY2hlY2sgdG8gcHJldmVu
dCBwYXNzaW5nIDAgdG8gREVGSU5FX3N0cmluZyAoam9yZykKLS0gUmVkdWNlIGNvbXBpbGUgKC5v
KSBzaXplIChqeXJraSkKLS0gU29tZSBzbWFsbCBjaGFuZ2VzIHRvIHF1aWV0IGRlYnVnIGNvbXBp
bGVzIChhbGV4aykKLS0gUE9SVElORzogYmV0dGVyIHN1cHBvcnQgc3RhdGljIGxpbmtpbmcgb24g
d2luZG93cyAoY3NpbHZlcnMpCi0tIERPQ1VNRU5UQVRJT046IGNoYW5nZSBkZWZhdWx0IHZhbHVl
cywgdXNlIHZhbGlkYXRvcnMsIGV0Yy4KLS0gVXBkYXRlIHRoZSBORVdTIGZpbGUgdG8gYmUgbm9u
LWVtcHR5Ci0tIEFkZCBwa2ctY29uZmlnICgucGMpIGZpbGVzIGZvciBsaWJnZmxhZ3MgYW5kIGxp
YmdmbGFnc19ub3RocmVhZHMKLQotKiBNb24gSmFuICA0IDIwMTAgLSBHb29nbGUgSW5jLiA8b3Bl
bnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS4zCi0tIFBP
UlRBQklMSVRZOiBjYW4gbm93IGJ1aWxkIGFuZCBydW4gdGVzdHMgdW5kZXIgTVNWQyAoY3NpbHZl
cnMpCi0tIFJlbW92ZSB0aGUgcHl0aG9uIGdmbGFncyBjb2RlLCB3aGljaCBpcyBub3cgaXRzIG93
biBwYWNrYWdlICh0YW5zZWxsKQotLSBDbGFyaWZ5IHRoYXQgImxhc3QgZmxhZyB3aW5zIiBpbiB0
aGUgZG9jcyAoY3NpbHZlcnMpCi0tIENvbW1lbnQgZGFuZ2VyIG9mIHVzaW5nIEdldEFsbEZsYWdz
IGluIHZhbGlkYXRvcnMgKHdvanRla20pCi0tIFBPUlRBQklMSVRZOiBTb21lIGZpeGVzIG5lY2Vz
c2FyeSBmb3IgYysrMHggKG1ib2VyZ2VyKQotLSBNYWtlZmlsZSBmaXg6ICQoc3JjZGlyKSAtPiAk
KHRvcF9zcmNkaXIpIGluIG9uZSBwbGFjZSAoY3NpbHZyZXMpCi0tIElOU1RBTEw6IGF1dG90b29s
cyB0byBhdXRvY29uZiB2Mi42NCArIGF1dG9tYWtlIHYxLjExIChjc2lsdmVycykKLQotKiBUaHUg
U2VwIDEwIDIwMDkgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdv
b2dsZS1nZmxhZ3M6IHZlcnNpb24gMS4yCi0tIFBPUlRBQklMSVRZOiBjYW4gbm93IGJ1aWxkIGFu
ZCBydW4gdGVzdHMgdW5kZXIgbWluZ3cgKGNzaWx2ZXJzKQotLSBVc2luZyBhIHN0cmluZyBhcmcg
Zm9yIGEgYm9vbCBmbGFnIGlzIGEgY29tcGlsZS10aW1lIGVycm9yIChyYmF5YXJkbykKLS0gQWRk
IC0taGVscHhtbCB0byBnZmxhZ3MucHkgKHNhbGNpYW51KQotLSBQcm90ZWN0IGFnYWluc3QgYSBo
eXBvdGhldGljYWwgZ2xvYmFsIGQndG9yIG11dGV4IHByb2JsZW0gKGNzaWx2ZXJzKQotLSBCVUdG
SVg6IGNhbiBub3cgZGVmaW5lIGEgZmxhZyBhZnRlciAndXNpbmcgbmFtZXNwYWNlIGdvb2dsZScg
KGhhbWFqaSkKLQotKiBUdWUgQXByIDE0IDIwMDkgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBn
b29nbGUuY29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMS4xCi0tIEFkZCBib3RoIGZv
byBhbmQgbm9mb28gZm9yIGJvb2xlYW4gZmxhZ3MsIHdpdGggLS11bmRlZm9rIChhbmR5Y2h1KQot
LSBCZXR0ZXIgZG9jdW1lbnQgaG93IHZhbGlkYXRvcnMgd29yayAod29qdGVrbSkKLS0gSW1wcm92
ZSBiaW5hcnktZGV0ZWN0aW9uIGZvciBiYXNoLWNvbXBsZXRpb24gKG10YW1za3kpCi0tIFB5dGhv
bjogQWRkIGEgY29uY2VwdCBvZiAia2V5IGZsYWdzIiwgdXNlZCB3aXRoIC0taGVscCAoc2FsY2lh
bnUpCi0tIFB5dGhvbjogUm9idXN0aWZ5IGZsYWdfdmFsdWVzIChzYWxjaWFudSkKLS0gUHl0aG9u
OiBBZGQgYSBuZXcgREVGSU5FX2Jvb2wgYWxpYXMgKGtlaXIsIGFuZHJld2xpdSkKLS0gUHl0aG9u
OiBEbyBtb2R1bGUgaW50cm9zcGVjdGlvbiBiYXNlZCBvbiBtb2R1bGUgbmFtZSAoZHN0dXJ0ZXZh
bnQpCi0tIEZpeCBhdXRvY29uZiBhIGJpdCBiZXR0ZXIsIGVzcGVjaWFsbHkgb24gd2luZG93cyBh
bmQgc29sYXJpcyAoYWplbmpvKQotLSBCVUcgRklYOiBnZmxhZ3Nfbm90aHJlYWRzIHdhcyBsaW5r
aW5nIGFnYWluc3QgdGhlIHdyb25nIGxpYiAoYWplbmpvKQotLSBCVUcgRklYOiB0aHJlYWRzLWRl
dGVjdGlvbiBmYWlsZWQgb24gRnJlZUJTRDsgcmVwbGFjZSBpdCAoYWplbmpvKQotLSBQT1JUQUJJ
TElUWTogUXVpZXQgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2l0aCBTVVNFIDEwIChjc2ls
dmVycykKLS0gUE9SVEFCSUxJVFk6IFVwZGF0ZSBkZWIuc2ggZm9yIG1vcmUgcmVjZW50eSBkZWJ1
aWxkcyAoY3NpbHZlcnMpCi0tIFBPUlRBQklMSVRZOiAjaW5jbHVkZSBtb3JlIGhlYWRlcnMgdG8g
c2F0aWZ5IG5ldyBnY2MncyAoY3NpbHZlcnMpCi0tIElOU1RBTEw6IFVwZGF0ZWQgdG8gYXV0b2Nv
bmYgMi42MSBhbmQgbGlidG9vbCAxLjUuMjYgKGNzaWx2ZXJzKQotCi0qIEZyaSBPY3QgIDMgMjAw
OCAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNlQGdvb2dsZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFn
czogdmVyc2lvbiAxLjAKLS0gQWRkIGEgbWlzc2luZyBuZXdsaW5lIHRvIGFuIGVycm9yIHN0cmlu
ZyAoYmNtaWxscykKLS0gKG90aGVyd2lzZSBleGFjdGx5IHRoZSBzYW1lIGFzIGdmbGFncyAxLjBy
YzIpCi0KLSogVGh1IFNlcCAxOCAyMDA4IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xl
LmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDEuMHJjMgotLSBSZXBvcnQgY3VycmVu
dCBmbGFnIHZhbHVlcyBpbiAtLWhlbHB4bWwgKGhkbikKLS0gRml4IGNvbXBpbGF0aW9uIHRyb3Vi
bGVzIHdpdGggZ2NjIDQuMy4zIChzaW1vbmIpCi0tIEJVRyBGSVg6IEkgd2FzIG1pc3NpbmcgYSBz
dGQ6OiBpbiBERUNMQVJFX3N0cmluZyAoY3NpbHZlcnMpCi0tIEJVRyBGSVg6IENsYXJpZnkgaW4g
ZG9jcyBob3cgdG8gc3BlY2lmeSAtLWJvb2wgZmxhZ3MgKGNzaWx2ZXJzKQotLSBCVUcgRklYOiBG
aXggLS1oZWxwc2hvcnQgZm9yIHNvdXJjZSBmaWxlcyBub3QgaW4gYSBzdWJkaXIgKGNzaWx2ZXJz
KQotLSBCVUcgRklYOiBGaXggcHl0aG9uIHVuaXR0ZXN0IGZvciA2NC1iaXQgYnVpbGRzIChiY21p
bGxzKQotCi0qIFR1ZSBBdWcgMTkgMjAwOCAtIEdvb2dsZSBJbmMuIDxvcGVuc291cmNlQGdvb2ds
ZS5jb20+Ci0KLS0gZ29vZ2xlLWdmbGFnczogdmVyc2lvbiAxLjByYzEKLS0gTW92ZSAjaW5jbHVk
ZSBmaWxlcyBmcm9tIGdvb2dsZS8gdG8gZ2ZsYWdzLyAoY3NpbHZlcnMpCi0tIFNtYWxsIG9wdGlt
aXphdGlvbnMgdG8gcmVkdWNlIGJpbmFyeSAobGlicmFyeSkgc2l6ZSAoanlya2kpCi0tIEJVR0ZJ
WDogZm9yZ290IGEgc3RkOjogaW4gb25lIG9mIHRoZSAuaCBmaWxlcyAoY3NpbHZlcnMpCi0tIFNw
ZWVkIHVwIGxvY2tpbmcgYnkgbWFraW5nIHN1cmUgY2FsbHMgYXJlIGlubGluZWQgKGFqZW5qbykK
LS0gNjQtQklUIENPTVBBVElCSUxJVFk6IFVzZSAlUFJJZDY0IGluc3RlYWQgb2YgJWxsZCAoY3Np
bHZlcnMpCi0tIFBPUlRBQklMSVRZOiBmaXggTWFrZWZpbGUgdG8gd29yayB3aXRoIEN5Z3dpbiAo
YWplbmpvKQotLSBQT1JUQUJJTElUWTogZml4IGNvZGUgdG8gY29tcGlsZSB1bmRlciBWaXN1YWwg
U3R1ZGlvIChhamVuam8pCi0tIFBPUlRBQklMSVRZOiBmaXggY29kZSB0byBjb21waWxlIHVuZGVy
IFNvbGFyaXMgMTAgd2l0aCBDQyAoY3NpbHZlcnMpCi0KLSogTW9uIEp1bCAyMSAyMDA4IC0gR29v
Z2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJz
aW9uIDAuOQotLSBBZGQgdGhlIGFiaWxpdHkgdG8gdmFsaWRhdGUgYSBjb21tYW5kLWxpbmUgZmxh
ZyAoY3NpbHZlcnMpCi0tIEFkZCBjb21wbGV0aW9uIHN1cHBvcnQgZm9yIGNvbW1hbmRsaW5lIGZs
YWdzIGluIGJhc2ggKGRhdmVuKQotLSBBZGQgLVcgY29tcGlsZSBmbGFncyB0byBNYWtlZmlsZSwg
d2hlbiB1c2luZyBnY2MgKGNzaWx2ZXJzKQotLSBBbGxvdyBoZWxwc3RyaW5nIHRvIGJlIE5VTEwg
KGNyaXN0aWFub2MpCi0tIEltcHJvdmVkIGRvY3VtZW50YXRpb24gb2YgY2xhc3NlcyBpbiB0aGUg
LmNjIGZpbGUgKGNzaWx2ZXJzKQotLSBGaXggcHl0aG9uIGJ1ZyB3aXRoIEFwcGVuZEZsYWdWYWx1
ZXMgKyBzaG9ydG5hbWVzIChqanRzd2FuKQotLSBVc2UgYm9vbCBpbnN0ZWFkIG9mIGludCBmb3Ig
Ym9vbGVhbiBmbGFncyBpbiBnZmxhZ3MucHkgKGJjbWlsbHMpCi0tIFNpbXBsaWZ5IHRoZSB3YXkg
d2UgZGVjbGFyZSBmbGFncywgbm93IG1vcmUgZm9vbHByb29mIChjc2lsdmVycykKLS0gQmV0dGVy
IGVycm9yIG1lc3NhZ2VzIHdoZW4gYm9vbCBmbGFncyBjb2xsaWRlIChjb2xvaGFuKQotLSBPbmx5
IGV2YWx1YXRlIERFRklORV9mb28gbWFjcm8gYXJncyBvbmNlIChjc2lsdmVycykKLQotKiBXZWQg
TWFyIDI2IDIwMDggLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0tIGdv
b2dsZS1nZmxhZ3M6IHZlcnNpb24gMC44Ci0tIEV4cG9ydCBEZXNjcmliZU9uZUZsYWcoKSBpbiB0
aGUgQVBJCi0tIEFkZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgbGluZSB3cmFwcGluZyBhdCA4MCBj
b2xzIGZvciBnZmxhZ3MucHkKLS0gQnVnZml4OiBkbyBub3QgdHJlYXQgYW4gaXNvbGF0ZWQgIi0i
IHRoZSBzYW1lIGFzIGFuIGlzb2xhdGVkICItLSIKLS0gVXBkYXRlIHJwbSBzcGVjIHRvIHBvaW50
IHRvIEdvb2dsZSBDb2RlIHJhdGhlciB0aGFuIHNvdXJjZWZvcmdlICghKQotLSBJbXByb3ZlIGRv
Y3VtZW50YXRpb24gKGluY2x1ZGluZyBkb2N1bWVudGluZyB0aHJlYWQtc2FmZXR5KQotLSBJbXBy
b3ZlICNpbmNsdWRlIGh5Z2llbmUKLS0gSW1wcm92ZSB0ZXN0aW5nCi0KLSogVGh1IE9jdCAxOCAy
MDA3IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2Zs
YWdzOiB2ZXJzaW9uIDAuNwotLSBEZWFsIGV2ZW4gbW9yZSBjb3JyZWN0bHkgd2l0aCBsaWJwdGhy
ZWFkIG5vdCBsaW5rZWQgaW4gKGNzaWx2ZXJzKQotLSBBZGQgU1RSSVBfTE9HLCBhbiBpbXByb3Zl
ZCBET19OT1RfU0hPV19DT01NQU5ETElORV9IRUxQIChzaW9mZmUpCi0tIEJlIG1vcmUgYWNjdXJh
dGUgcHJpbnRpbmcgZGVmYXVsdCBmbGFnIHZhbHVlcyBpbiAtLWhlbHAgKGRzdHVydGV2YW50KQot
LSBSZWR1Y2UgLm8gZmlsZSBzaXplIGEgYml0IGJ5IHVzaW5nIHNob3J0ZXIgbmFtZXNwYWNlIG5h
bWVzIChqZWZmKQotLSBVc2UgcmVsYXRpdmUgaW5zdGFsbCBwYXRoLCBzbyAnc2V0dXAucHkgLS1o
b21lJyB3b3JrcyAoY3NpbHZlcnMpCi0tIE5vdGljZSB3aGVuIGEgYm9vbGVhbiBmbGFnIGhhcyBh
IG5vbi1ib29sZWFuIGRlZmF1bHQgKGJubW91bGkpCi0tIEJyb2FkZW4gLS1oZWxwc2hvcnQgdG8g
bWF0Y2ggZm9vLW1haW4uY2MgYW5kIGZvb19tYWluLmNjIChoZW5kcmllKQotLSBGaXggIm5vIG1v
ZHVsZXMgbWF0Y2giIG1lc3NhZ2UgZm9yIC0taGVscHNob3J0LCBldGMgKGhlbmRyaWUpCi0KLSog
V2VkIEF1ZyAxNSAyMDA3IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQot
LSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDAuNgotLSBEZWFsIGNvcnJlY3RseSB3aXRoIGNhc2Ug
dGhhdCBsaWJwdGhyZWFkIGlzIG5vdCBsaW5rZWQgaW4gKGNzaWx2ZXJzKQotLSBVcGRhdGUgTWFr
ZWZpbGUvdGVzdHMgc28gd2UgcGFzcyAibWFrZSBkaXN0Y2hlY2siIChjc2lsdmVycykKLS0gRG9j
dW1lbnQgYW5kIHRlc3QgdGhhdCBsYXN0IGFzc2lnbm1lbnQgdG8gYSBmbGFnIHdpbnMgKHdhbikK
LQotKiBUdWUgSnVuIDEyIDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29t
PgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC41Ci0tIEluY2x1ZGUgYWxsIG00IG1hY3Jv
cyBpbiB0aGUgZGlzdHJpYnV0aW9uIChjc2lsdmVycykKLS0gUHl0aG9uOiBGaXggYnJva2VuIGRh
dGFfZmlsZXMgZmllbGQgaW4gc2V0dXAucHkgKHNpZGxvbikKLS0gUHl0aG9uOiBiZXR0ZXIgc3Ry
aW5nIHNlcmxpYWl6aW5nIGFuZCB1bnBhcnNpbmcgKGFibywgY3NpbW1vbnMpCi0tIEZpeCBjaGVj
a3MgZm9yIE5hTiBhbmQgaW5mIHRvIHdvcmsgd2l0aCBNYWMgT1MgWCAoY3NpbHZlcnMpCi0KLSog
VGh1IEFwciAxOSAyMDA3IC0gR29vZ2xlIEluYy4gPG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQot
LSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDAuNAotLSBSZW1vdmUgaXNfZGVmYXVsdCBmcm9tIEdl
dENvbW1hbmRMaW5lRmxhZ0luZm8gKGNzaWx2ZXJzKQotLSBQb3J0YWJpbGl0eSBmaXhlczogaW5j
bHVkZXMsIHN0cnRvbGwsIGdjYzQuMyBlcnJvcnMgKGNzaWx2ZXJzKQotLSBBIGZldyBkb2MgdHlw
byBjbGVhbnVwcyAoY3NpbHZlcnMpCi0KLSogV2VkIE1hciAyOCAyMDA3IC0gR29vZ2xlIEluYy4g
PG9wZW5zb3VyY2VAZ29vZ2xlLmNvbT4KLQotLSBnb29nbGUtZ2ZsYWdzOiB2ZXJzaW9uIDAuMwot
LSBweXRob24gcG9ydGFiaWxpdHkgZml4OiB1c2UgcG9wZW4gaW5zdGVhZCBvZiBzdWJwcm9jZXNz
IChjc2lsdmVycykKLS0gQWRkIGlzX2RlZmF1bHQgdG8gQ29tbWFuZExpbmVGbGFnSW5mbyAocGNo
aWVuKQotLSBNYWtlIGRvY3MgYSBiaXQgcHJldHRpZXIgKGNzaWx2ZXJzKQotLSBBY3R1YWxseSBp
bmNsdWRlIHRoZSBweXRob24gZmlsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbiEgOi0vIChjc2lsdmVy
cykKLQotKiBNb24gSmFuIDIyIDIwMDcgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUu
Y29tPgotCi0tIGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC4yCi0tIGFkZGVkIHN1cHBvcnQgZm9y
IHB5dGhvbiBjb21tYW5kbGluZWZsYWdzLCBhcyB3ZWxsIGFzIGMrKwotLSBnZmxhZ3MybWFuLCBh
IHNjcmlwdCB0byB0dXJuIGZsYWdzIGludG8gYSBtYW4gcGFnZSAoZGNocmlzdGlhbikKLQotKiBX
ZWQgRGVjIDEzIDIwMDYgLSBHb29nbGUgSW5jLiA8b3BlbnNvdXJjZUBnb29nbGUuY29tPgotCi0t
IGdvb2dsZS1nZmxhZ3M6IHZlcnNpb24gMC4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvSU5TVEFMTC5tZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9J
TlNUQUxMLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODlkODZkZTJjMDQuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvSU5TVEFMTC5tZAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAg
QEAKLUluc3RhbGxpbmcgYSBiaW5hcnkgZGlzdHJpYnV0aW9uIHBhY2thZ2UKLT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotTm8gb2ZmaWNpYWwgYmluYXJ5IGRpc3Ry
aWJ1dGlvbiBwYWNrYWdlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIGdmbGFncyBkZXZlbG9wZXJzLgot
VGhlcmUgbWF5LCBob3dldmVyLCBiZSBiaW5hcnkgcGFja2FnZXMgYXZhaWxhYmxlIGZvciB5b3Vy
IE9TLiBQbGVhc2UgY29uc3VsdAotYWxzbyB0aGUgcGFja2FnZSByZXBvc2l0b3JpZXMgb2YgeW91
ciBMaW51eCBkaXN0cmlidXRpb24uCi0KLUZvciBleGFtcGxlIG9uIERlYmlhbi9VYnVudHUgTGlu
dXgsIGdmbGFncyBjYW4gYmUgaW5zdGFsbGVkIHVzaW5nIHRoZQotZm9sbG93aW5nIGNvbW1hbmQ6
Ci0KLSAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBnZmxhZ3MKLQotCi1Db21waWxpbmcgdGhlIHNv
dXJjZSBjb2RlCi09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSBidWlsZCBzeXN0ZW0g
b2YgZ2ZsYWdzIGlzIHNpbmNlIHZlcnNpb24gMi4xIGJhc2VkIG9uIFtDTWFrZV0oaHR0cDovL2Nt
YWtlLm9yZykuCi1UaGUgY29tbW9uIHN0ZXBzIHRvIGJ1aWxkLCB0ZXN0LCBhbmQgaW5zdGFsbCBz
b2Z0d2FyZSBhcmUgdGhlcmVmb3JlOgotCi0xLiBFeHRyYWN0IHNvdXJjZSBmaWxlcy4KLTIuIENy
ZWF0ZSBidWlsZCBkaXJlY3RvcnkgYW5kIGNoYW5nZSB0byBpdC4KLTMuIFJ1biBDTWFrZSB0byBj
b25maWd1cmUgdGhlIGJ1aWxkIHRyZWUuCi00LiBCdWlsZCB0aGUgc29mdHdhcmUgdXNpbmcgc2Vs
ZWN0ZWQgYnVpbGQgdG9vbC4KLTUuIFRlc3QgdGhlIGJ1aWx0IHNvZnR3YXJlLgotNi4gSW5zdGFs
bCB0aGUgYnVpbHQgZmlsZXMuCi0KLU9uIFVuaXgtbGlrZSBzeXN0ZW1zIHdpdGggR05VIE1ha2Ug
YXMgYnVpbGQgdG9vbCwgdGhlc2UgYnVpbGQgc3RlcHMgY2FuIGJlCi1zdW1tYXJpemVkIGJ5IHRo
ZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgY29tbWFuZHMgZXhlY3V0ZWQgaW4gYSBzaGVsbCwKLXdo
ZXJlIGBgYCRwYWNrYWdlYGBgIGFuZCBgYGAkdmVyc2lvbmBgYCBhcmUgc2hlbGwgdmFyaWFibGVz
IHdoaWNoIHJlcHJlc2VudAotdGhlIG5hbWUgb2YgdGhpcyBwYWNrYWdlIGFuZCB0aGUgb2J0YWlu
ZWQgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCi0KLSAgICAkIHRhciB4emYgZ2ZsYWdzLSR2ZXJz
aW9uLXNvdXJjZS50YXIuZ3oKLSAgICAkIGNkIGdmbGFncy0kdmVyc2lvbgotICAgICQgbWtkaXIg
YnVpbGQgJiYgY2QgYnVpbGQKLSAgICAkIGNjbWFrZSAuLgotICAgIAotICAgICAgLSBQcmVzcyAn
YycgdG8gY29uZmlndXJlIHRoZSBidWlsZCBzeXN0ZW0gYW5kICdlJyB0byBpZ25vcmUgd2Fybmlu
Z3MuCi0gICAgICAtIFNldCBDTUFLRV9JTlNUQUxMX1BSRUZJWCBhbmQgb3RoZXIgQ01ha2UgdmFy
aWFibGVzIGFuZCBvcHRpb25zLgotICAgICAgLSBDb250aW51ZSBwcmVzc2luZyAnYycgdW50aWwg
dGhlIG9wdGlvbiAnZycgaXMgYXZhaWxhYmxlLgotICAgICAgLSBUaGVuIHByZXNzICdnJyB0byBn
ZW5lcmF0ZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgR05VIE1ha2UuCi0gICAgCi0gICAg
JCBtYWtlCi0gICAgJCBtYWtlIHRlc3QgICAgKG9wdGlvbmFsKQotICAgICQgbWFrZSBpbnN0YWxs
IChvcHRpb25hbCkKLQotSW4gdGhlIGZvbGxvd2luZywgb25seSBnZmxhZ3Mtc3BlY2lmaWMgQ01h
a2Ugc2V0dGluZ3MgYXZhaWxhYmxlIHRvCi1jb25maWd1cmUgdGhlIGJ1aWxkIGFuZCBpbnN0YWxs
YXRpb24gYXJlIGRvY3VtZW50ZWQuIE5vdGUgdGhhdCBtb3N0IG9mIHRoZXNlCi12YXJpYWJsZXMg
YXJlIGZvciBhZHZhbmNlZCB1c2VycyBhbmQgYmluYXJ5IHBhY2thZ2UgbWFpbnRhaW5lcnMgb25s
eS4KLVRoZXkgdXN1YWxseSBkbyBub3QgaGF2ZSB0byBiZSBtb2RpZmllZC4KLQotCi1DTWFrZSBP
cHRpb24gICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotQ01BS0VfSU5TVEFMTF9QUkVGSVggICAgICAgIHwgSW5zdGFsbGF0aW9uIGRpcmVj
dG9yeSwgZS5nLiwgIi91c3IvbG9jYWwiIG9uIFVuaXggYW5kICJDOlxQcm9ncmFtIEZpbGVzXGdm
bGFncyIgb24gV2luZG93cy4KLUJVSUxEX1NIQVJFRF9MSUJTICAgICAgICAgICB8IFJlcXVlc3Qg
YnVpbGQgb2YgZHluYW1pYyBsaW5rIGxpYnJhcmllcy4KLUJVSUxEX1NUQVRJQ19MSUJTICAgICAg
ICAgICB8IFJlcXVlc3QgYnVpbGQgb2Ygc3RhdGljIGxpbmsgbGlicmFyaWVzLiBJbXBsaWVkIGlm
IEJVSUxEX1NIQVJFRF9MSUJTIGlzIE9GRi4KLUJVSUxEX1BBQ0tBR0lORyAgICAgICAgICAgICB8
IEVuYWJsZSBiaW5hcnkgcGFja2FnZSBnZW5lcmF0aW9uIHVzaW5nIENQYWNrLgotQlVJTERfVEVT
VElORyAgICAgICAgICAgICAgIHwgQnVpbGQgdGVzdHMgZm9yIGV4ZWN1dGlvbiBieSBDVGVzdC4K
LUJVSUxEX05DX1RFU1RTICAgICAgICAgICAgICB8IFJlcXVlc3QgaW5jbHVzaW9uIG9mIG5lZ2F0
aXZlIGNvbXBpbGF0aW9uIHRlc3RzIChyZXF1aXJlcyBQeXRob24pLgotQlVJTERfQ09ORklHX1RF
U1RTICAgICAgICAgIHwgUmVxdWVzdCBpbmNsdXNpb24gb2YgcGFja2FnZSBjb25maWd1cmF0aW9u
IHRlc3RzIChyZXF1aXJlcyBQeXRob24pLgotQlVJTERfZ2ZsYWdzX0xJQlMgICAgICAgICAgIHwg
UmVxdWVzdCBidWlsZCBvZiBtdWx0aS10aHJlYWRlZCBnZmxhZ3MgbGlicmFyaWVzIChpZiB0aHJl
YWRpbmcgbGlicmFyeSBmb3VuZCkuCi1CVUlMRF9nZmxhZ3Nfbm90aHJlYWRzX0xJQlMgfCBSZXF1
ZXN0IGJ1aWxkIG9mIHNpbmdsZS10aHJlYWRlZCBnZmxhZ3MgbGlicmFyaWVzLgotR0ZMQUdTX05B
TUVTUEFDRSAgICAgICAgICAgIHwgTmFtZSBvZiB0aGUgQysrIG5hbWVzcGFjZSB0byBiZSB1c2Vk
IGJ5IHRoZSBnZmxhZ3MgbGlicmFyeS4gTm90ZSB0aGF0IHRoZSBwdWJsaWMgc291cmNlIGhlYWRl
ciBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIGEgc3ViZGlyZWN0b3J5IG5hbWVkIGFmdGVyIHRoaXMg
bmFtZXNwYWNlLiBUbyBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBH
b29nbGUgQ29tbWFuZGxpbmUgRmxhZ3MsIHNldCB0aGlzIHZhcmlhYmxlIHRvICJnb29nbGUiLiBU
aGUgZGVmYXVsdCBpcyAiZ2ZsYWdzIi4KLUdGTEFHU19JTlRUWVBFU19GT1JNQVQgICAgICB8IFN0
cmluZyBpZGVudGlmeWluZyBmb3JtYXQgb2YgYnVpbHQtaW4gaW50ZWdlciB0eXBlcy4KLUdGTEFH
U19JTkNMVURFX0RJUiAgICAgICAgICB8IE5hbWUgb2YgaGVhZGVycyBpbnN0YWxsYXRpb24gZGly
ZWN0b3J5IHJlbGF0aXZlIHRvIENNQUtFX0lOU1RBTExfUFJFRklYLgotTElCUkFSWV9JTlNUQUxM
X0RJUiAgICAgICAgIHwgTmFtZSBvZiBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgcmVs
YXRpdmUgdG8gQ01BS0VfSU5TVEFMTF9QUkVGSVguCi1JTlNUQUxMX0hFQURFUlMgICAgICAgICAg
ICAgfCBSZXF1ZXN0IGluc3RhbGxhdGlvbiBvZiBwdWJsaWMgaGVhZGVyIGZpbGVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxh
Z3Mvc3JjL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc5YmQyMDI4NjAzNy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9SRUFETUUubWQKKysrIC9kZXYv
bnVsbApAQCAtMSwyNzAgKzAsMCBAQAotMjQgTWFyY2ggMjAxNQotLS0tLS0tLS0tLS0tLQotCi1J
J3ZlIGp1c3QgcmVsZWFzZWQgZ2ZsYWdzIDIuMS4yLgotCi1UaGlzIHJlbGVhc2UgY29tcGxldGVz
IHRoZSBuYW1lc3BhY2UgY2hhbmdlIGZpeGVzLiBJbiBwYXJ0aWN1bGFyLAotaXQgcmVzdG9yZXMg
YmluYXJ5IEFCSSBjb21wYXRpYmlsaXR5IHdpdGggcmVsZWFzZSB2ZXJzaW9uIDIuMC4KLVRoZSBk
ZXByZWNhdGVkICJnb29nbGUiIG5hbWVzcGFjZSBpcyBieSBkZWZhdWx0IHN0aWxsIGtlcHQgYXMK
LXByaW1hcnkgbmFtZXNwYWNlIHdoaWxlIHN5bWJvbHMgYXJlIGltcG9ydGVkIGludG8gdGhlIG5l
dyAiZ2ZsYWdzIiBuYW1lc3BhY2UuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBD
TWFrZSB2YXJpYWJsZSBHRkxBR1NfTkFNRVNQQUNFLgotCi1PdGhlciBmaXhlcyBvZiB0aGUgYnVp
bGQgY29uZmlndXJhdGlvbiBhcmUgcmVsYXRlZCB0byB0aGUgKHBhdGNoZWQpCi1DTWFrZSBtb2R1
bGVzIEZpbmRUaHJlYWRzLmNtYWtlIGFuZCBDaGVja1R5cGVTaXplLmNtYWtlLiBUaGVzZSBoYXZl
Ci1iZWVuIHJlbW92ZWQgYW5kIGluc3RlYWQgdGhlIEMgbGFuZ3VhZ2UgaXMgZW5hYmxlZCBhZ2Fp
biBldmVuIHRob3VnaAotZ2ZsYWdzIGlzIHdyaXR0ZW4gaW4gQysrIG9ubHkuCi0KLVRoaXMgcmVs
ZWFzZSBhbHNvIG1hcmtzIHRoZSBjb21wbGV0ZSBtb3ZlIG9mIHRoZSBnZmxhZ3MgcHJvamVjdAot
ZnJvbSBHb29nbGUgQ29kZSB0byBHaXRIdWIuIEVtYWlsIGFkZHJlc3NlcyBvZiBvcmlnaW5hbCBp
c3N1ZQotcmVwb3J0ZXJzIGdvdCBsb3N0IGluIHRoZSBwcm9jZXNzLiBHaXZlbiB0aGUgYWdlIG9m
IG1vc3QgaXNzdWUgcmVwb3J0cywKLXRoaXMgc2hvdWxkIGJlIG5lZ2xpZ2FibGUuCi0KLVBsZWFz
ZSByZXBvcnQgYW55IGZ1cnRoZXIgaXNzdWVzIHVzaW5nIHRoZSBHaXRIdWIgaXNzdWUgdHJhY2tl
ci4KLQotCi0zMCBNYXJjaCAyMDE0Ci0tLS0tLS0tLS0tLS0tCi0KLUkndmUganVzdCByZWxlYXNl
ZCBnZmxhZ3MgMi4xLjEuCi0KLVRoaXMgcmVsZWFzZSBmaXhlcyBhIGZldyBidWdzIGluIHRoZSBj
b25maWd1cmF0aW9uIG9mIGdmbGFnc1xfZGVjbGFyZS5oCi1hbmQgYWRkcyBhIHNlcGFyYXRlIEdG
TEFHU1xfSU5DTFVERVxfRElSIENNYWtlIHZhcmlhYmxlIHRvIHRoZSBidWlsZCBjb25maWd1cmF0
aW9uLgotU2V0dGluZyBHRkxBR1NcX05BTUVTUEFDRSB0byAiZ29vZ2xlIiBubyBsb25nZXIgY2hh
bmdlcyBhbHNvIHRoZSBpbmNsdWRlCi1wYXRoIG9mIHRoZSBwdWJsaWMgaGVhZGVyIGZpbGVzLiBU
aGlzIGFsbG93cyB0aGUgdXNlIG9mIHRoZSBsaWJyYXJ5IHdpdGgKLW90aGVyIEdvb2dsZSBwcm9q
ZWN0cyBzdWNoIGFzIGdsb2cgd2hpY2ggc3RpbGwgdXNlIHRoZSBkZXByZWNhdGVkICJnb29nbGUi
Ci1uYW1lc3BhY2UgZm9yIHRoZSBnZmxhZ3MgbGlicmFyeSwgYnV0IGluY2x1ZGUgaXQgYXMgImdm
bGFncy9nZmxhZ3MuaCIuCi0KLTIwIE1hcmNoIDIwMTQKLS0tLS0tLS0tLS0tLS0KLQotSSd2ZSBq
dXN0IHJlbGVhc2VkIGdmbGFncyAyLjEuCi0KLVRoZSBtYWpvciBjaGFuZ2VzIGFyZSB0aGUgdXNl
IG9mIENNYWtlIGZvciB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBpbnN0ZWFkCi1vZiB0aGUgYXV0
b3Rvb2xzIGFuZCBwYWNrYWdpbmcgc3VwcG9ydCB0aHJvdWdoIENQYWNrLiBUaGUgZGVmYXVsdCBu
YW1lc3BhY2UKLW9mIGFsbCBDKysgc3ltYm9scyBpcyBub3cgImdmbGFncyIgaW5zdGVhZCBvZiAi
Z29vZ2xlIi4gVGhpcyBjYW4gYmUKLWNvbmZpZ3VyZWQgdmlhIHRoZSBHRkxBR1NcX05BTUVTUEFD
RSB2YXJpYWJsZS4KLQotVGhpcyByZWxlYXNlIGNvbXBpbGVzIHdpdGggYWxsIG1ham9yIGNvbXBp
bGVycyB3aXRob3V0IHdhcm5pbmdzIGFuZCBwYXNzZWQKLXRoZSB1bml0IHRlc3RzIG9uICBVYnVu
dHUgMTIuMDQsIFdpbmRvd3MgNyAoVmlzdWFsIFN0dWRpbyAyMDA4IGFuZCAyMDEwLAotQ3lnd2lu
LCBNaW5HVyksIGFuZCBNYWMgT1MgWCAoWGNvZGUgNS4xKS4KLQotVGhlIFNWTiByZXBvc2l0b3J5
IG9uIEdvb2dsZSBDb2RlIGlzIG5vdyBmcm96ZW4gYW5kIHJlcGxhY2VkIGJ5IGEgR2l0Ci1yZXBv
c2l0b3J5IHN1Y2ggdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBHaXQgc3VibW9kdWxlIGJ5IHByb2pl
Y3RzLiBUaGUgbWFpbgotaG9zdGluZyBvZiB0aGlzIHByb2plY3QgcmVtYWlucyBhdCBHb29nbGUg
Q29kZS4gVGhhbmtzIHRvIHRoZSBkaXN0cmlidXRlZAotY2hhcmFjdGVyIG9mIEdpdCwgSSBjYW4g
cHVzaCAoYW5kIHB1bGwpIGNoYW5nZXMgZnJvbSBib3RoIEdpdEh1YiBhbmQgR29vZ2xlIENvZGUK
LWluIG9yZGVyIHRvIGtlZXAgdGhlIHR3byBwdWJsaWMgcmVwb3NpdG9yaWVzIGluIHN5bmMuCi1X
aGVuIGZpeGluZyBhbiBpc3N1ZSBmb3IgYSBwdWxsIHJlcXVlc3QgdGhyb3VnaCBlaXRoZXIgb2Yg
dGhlc2UgaG9zdGluZwotcGxhdGZvcm1zLCBwbGVhc2UgcmVmZXJlbmNlIHRoZSBpc3N1ZSBudW1i
ZXIgYXMKLVtkZXNjcmliZWQgaGVyZV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zdXBwb3J0
L3dpa2kvSXNzdWVUcmFja2VyI0ludGVncmF0aW9uX3dpdGhfdmVyc2lvbl9jb250cm9sKS4KLUZv
ciB0aGUgZnVydGhlciBkZXZlbG9wbWVudCwgSSBhbSBmb2xsb3dpbmcgdGhlCi1bR2l0IGJyYW5j
aGluZyBtb2RlbF0oaHR0cDovL252aWUuY29tL3Bvc3RzL2Etc3VjY2Vzc2Z1bC1naXQtYnJhbmNo
aW5nLW1vZGVsLykKLXdpdGggZmVhdHVyZSBicmFuY2ggbmFtZXMgcHJlZml4ZWQgYnkgImZlYXR1
cmUvIiBhbmQgYnVnZml4IGJyYW5jaCBuYW1lcwotcHJlZml4ZWQgYnkgImJ1Z2ZpeC8iLCByZXNw
ZWN0aXZlbHkuCi0KLUJpbmFyeSBhbmQgc291cmNlIFtwYWNrYWdlc10oaHR0cHM6Ly9naXRodWIu
Y29tL3NjaHVoc2NodWgvZ2ZsYWdzL3JlbGVhc2VzKSBhcmUgYXZhaWxhYmxlIG9uIEdpdEh1Yi4K
LQotCi0xNCBKYW51YXJ5IDIwMTQKLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgbWlncmF0aW9uIG9m
IHRoZSBidWlsZCBzeXN0ZW0gdG8gQ01ha2UgaXMgYWxtb3N0IGNvbXBsZXRlLgotV2hhdCByZW1h
aW5zIHRvIGJlIGRvbmUgaXMgcmV3cml0aW5nIHRoZSB0ZXN0cyBpbiBQeXRob24gc3VjaCB0aGV5
IGNhbiBiZQotZXhlY3V0ZWQgb24gbm9uLVVuaXggcGxhdGZvcm1zIGFuZCBzcGxpdHRpbmcgdGhl
bSB1cCBpbnRvIHNlcGFyYXRlIENUZXN0IHRlc3RzLgotVGhvdWdoIG1lcmdpbmcgdGhlc2UgY2hh
bmdlcyBpbnRvIHRoZSBtYXN0ZXIgYnJhbmNoIHlldCByZW1haW5zIHRvIGJlIGRvbmUsCi1pdCBp
cyByZWNvbW1lbmRlZCB0byBhbHJlYWR5IHN0YXJ0IHVzaW5nIHRoZQotW2NtYWtlLW1pZ3JhdGlv
bl0oaHR0cHM6Ly9naXRodWIuY29tL3NjaHVoc2NodWgvZ2ZsYWdzL3RyZWUvY21ha2UtbWlncmF0
aW9uKSBicmFuY2guCi0KLQotMjAgQXByaWwgMjAxMwotLS0tLS0tLS0tLS0tLQotCi1Nb3JlIHRo
YW4gYSB5ZWFyIGhhcyBwYXN0IHNpbmNlIEkgKEFuZHJlYXMpIHRvb2sgb3ZlciB0aGUgbWFpbnRl
bmFuY2UgZm9yCi1gZ2ZsYWdzYC4gT25seSBmZXcgbWlub3IgY2hhbmdlcyBoYXZlIGJlZW4gbWFk
ZSBzaW5jZSB0aGVuLCBtdWNoIHRvIG15IHJlZ3JldC4KLVRvIGdldCBtb3JlIGludm9sdmVkIGFu
ZCBzdGltdWxhdGUgcGFydGljaXBhdGlvbiBpbiB0aGUgZnVydGhlcgotZGV2ZWxvcG1lbnQgb2Yg
dGhlIGxpYnJhcnksIEkgbW92ZWQgdGhlIHByb2plY3Qgc291cmNlIGNvZGUgdG9kYXkgdG8KLVtH
aXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2h1aHNjaHVoL2dmbGFncykuCi1JIGJlbGlldmUg
dGhhdCB0aGUgc3RyZW5ndGhzIG9mIFtHaXRdKGh0dHA6Ly9naXQtc2NtLmNvbS8pIHdpbGwgYWxs
b3cgZm9yIGJldHRlciBjb21tdW5pdHkgY29sbGFib3JhdGlvbgotYXMgd2VsbCBhcyBlYXNlIHRo
ZSBpbnRlZ3JhdGlvbiBvZiBjaGFuZ2VzIG1hZGUgYnkgb3RoZXJzLiBJIGVuY291cmFnZSBldmVy
eW9uZQotd2hvIHdvdWxkIGxpa2UgdG8gY29udHJpYnV0ZSB0byBzZW5kIG1lIHB1bGwgcmVxdWVz
dHMuCi1HaXQncyBsaWdodHdlaWdodCBmZWF0dXJlIGJyYW5jaGVzIHdpbGwgYWxzbyBwcm92aWRl
IHRoZSByaWdodCB0b29sIGZvciBtb3JlCi1yYWRpY2FsIGNoYW5nZXMgd2hpY2ggc2hvdWxkIG9u
bHkgYmUgbWVyZ2VkIGJhY2sgaW50byB0aGUgbWFzdGVyIGJyYW5jaAotYWZ0ZXIgdGhlc2UgYXJl
IGNvbXBsZXRlIGFuZCBpbXBsZW1lbnQgdGhlIGRlc2lyZWQgYmVoYXZpb3IuCi0KLVRoZSBTVk4g
cmVwb3NpdG9yeSByZW1haW5zIGFjY2Vzc2libGUgYXQgR29vZ2xlIENvZGUgYW5kIEkgd2lsbCBr
ZWVwIHRoZQotbWFzdGVyIGJyYW5jaCBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgaG9zdGVkIGF0IEdp
dEh1YiBhbmQgdGhlIHRydW5rIG9mIHRoZQotU3VidmVyc2lvbiByZXBvc2l0b3J5IHN5bmNocm9u
aXplZC4gSW5pdGlhbGx5LCBJIHdhcyBnb2luZyB0byBzaW1wbHkgc3dpdGNoIHRoZQotR29vZ2xl
IENvZGUgcHJvamVjdCB0byBHaXQsIGJ1dCBpbiB0aGlzIGNhc2UgdGhlIFNWTiByZXBvc2l0b3J5
IHdvdWxkIGJlCi1mcm96ZW4gYW5kIGZvcmNlIGV2ZXJ5b25lIHdobyB3b3VsZCBsaWtlIHRoZSBs
YXRlc3QgZGV2ZWxvcG1lbnQgY2hhbmdlcyB0bwotdXNlIEdpdCBhcyB3ZWxsLiBUaGVyZWZvcmUg
SSBkZWNpZGVkIHRvIGhvc3QgdGhlIHB1YmxpYyBHaXQgcmVwb3NpdG9yeSBhdCBHaXRIdWIKLWlu
c3RlYWQuCi0KLVBsZWFzZSBjb250aW51ZSB0byByZXBvcnQgYW55IGlzc3VlcyB3aXRoIGdmbGFn
cyBvbiBHb29nbGUgQ29kZS4gVGhlIEdpdEh1YiBwcm9qZWN0IHdpbGwKLW9ubHkgYmUgdXNlZCB0
byBob3N0IHRoZSBHaXQgcmVwb3NpdG9yeS4KLQotT25lIG1ham9yIGNoYW5nZSBvZiB0aGUgcHJv
amVjdCBzdHJ1Y3R1cmUgSSBoYXZlIGluIG1pbmQgZm9yIHRoZSBuZXh0IHdlZWtzCi1pcyB0aGUg
bWlncmF0aW9uIGZyb20gYXV0b3Rvb2xzIHRvIFtDTWFrZV0oaHR0cDovL3d3dy5jbWFrZS5vcmcv
KS4KLUNoZWNrIG91dCB0aGUgKHVuc3RhYmxlISkKLVtjbWFrZS1taWdyYXRpb25dKGh0dHBzOi8v
Z2l0aHViLmNvbS9zY2h1aHNjaHVoL2dmbGFncy90cmVlL2NtYWtlLW1pZ3JhdGlvbikKLWJyYW5j
aCBvbiBHaXRIdWIgZm9yIGRldGFpbHMuCi0KLQotMjUgSmFudWFyeSAyMDEyCi0tLS0tLS0tLS0t
LS0tLS0KLQotSSd2ZSBqdXN0IHJlbGVhc2VkIGdmbGFncyAyLjAuCi0KLVRoZSBgZ29vZ2xlLWdm
bGFnc2AgcHJvamVjdCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZmxhZ3NgLiAgSQotKGNzaWx2ZXJz
KSBhbSBzdGVwcGluZyBkb3duIGFzIG1haW50YWluZXIsIHRvIGJlIHJlcGxhY2VkIGJ5IEFuZHJl
YXMKLVNjaHVoLiAgV2VsY29tZSB0byB0aGUgdGVhbSwgQW5kcmVhcyEgIEkndmUgc2VlbiB0aGUg
ZW5lcmd5IHlvdSBoYXZlCi1hcm91bmQgZ2ZsYWdzIGFuZCB0aGUgaWRlYXMgeW91IGhhdmUgZm9y
IHRoZSBwcm9qZWN0IGdvaW5nIGZvcndhcmQsCi1hbmQgbG9vayBmb3J3YXJkIHRvIGhhdmluZyB5
b3Ugb24gdGhlIHRlYW0uCi0KLUkgYnVtcGVkIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciB1cCB0
byAyIHRvIHJlZmxlY3QgdGhlIG5ldyBjb21tdW5pdHkKLW93bmVyc2hpcCBvZiB0aGUgcHJvamVj
dC4gIEFsbCB0aGUgW2NoYW5nZXNdKENoYW5nZUxvZy50eHQpCi1hcmUgcmVsYXRlZCB0byB0aGUg
cmVuYW1pbmcuICBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGZyb20KLWdmbGFncyAx
LjcuICBJbiBwYXJ0aWN1bGFyLCBJJ3ZlIGtlcHQgdGhlIGNvZGUgaW4gdGhlIG5hbWVzcGFjZQot
YGdvb2dsZWAsIHRob3VnaCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIGl0IHNob3VsZCBiZSByZW5hbWVk
IHRvIGBnZmxhZ3NgLgotSSd2ZSBhbHNvIGtlcHQgdGhlIGAvdXNyL2xvY2FsL2luY2x1ZGUvZ29v
Z2xlL2Agc3ViZGlyZWN0b3J5IGFzCi1zeW5vbnltIG9mIGAvdXNyL2xvY2FsL2luY2x1ZGUvZ2Zs
YWdzL2AsIHRob3VnaCB0aGUgZm9ybWVyIG5hbWUgaGFzCi1iZWVuIG9ic29sZXRlIGZvciBzb21l
IHRpbWUgbm93LgotCi0KLTE4IEphbnVhcnkgMjAxMQotLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBg
Z29vZ2xlLWdmbGFnc2AgR29vZ2xlIENvZGUgcGFnZSBoYXMgYmVlbiByZW5hbWVkIHRvCi1gZ2Zs
YWdzYCwgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBwcm9qZWN0IGJlaW5nIHJlbmFtZWQgdG8KLWBn
ZmxhZ3NgLiAgSW4gdGhlIGNvbWluZyB3ZWVrcywgSSdsbCBiZSBzdGVwcGluZyBkb3duIGFzCi1t
YWludGFpbmVyIGZvciB0aGUgZ2ZsYWdzIHByb2plY3QsIGFuZCBhcyBwYXJ0IG9mIHRoYXQgR29v
Z2xlIGlzCi1yZWxpbnF1aXNoaW5nIG93bmVyc2hpcCBvZiB0aGUgcHJvamVjdDsgaXQgd2lsbCBu
b3cgYmUgZW50aXJlbHkKLWNvbW11bml0eSBydW4uICBUaGUgbmFtZSBjaGFuZ2UgcmVmbGVjdHMg
dGhhdCBzaGlmdC4KLQotCi0yMCBEZWNlbWJlciAyMDExCi0tLS0tLS0tLS0tLS0tLS0tCi0KLUkn
dmUganVzdCByZWxlYXNlZCBnZmxhZ3MgMS43LiAgVGhpcyBpcyBhIG1pbm9yIHJlbGVhc2U7IHRo
ZSBtYWpvcgotY2hhbmdlIGlzIHRoYXQgYENvbW1hbmRMaW5lRmxhZ0luZm9gIG5vdyBleHBvcnRz
IHRoZSBhZGRyZXNzIGluIG1lbW9yeQotd2hlcmUgdGhlIGZsYWcgaXMgbG9jYXRlZC4gIFRoZXJl
IGhhcyBhbHNvIGJlZW4gYSBidWdmaXggaW52b2x2aW5nCi12ZXJ5IGxvbmcgLS1oZWxwIHN0cmlu
Z3MsIGFuZCBzb21lIG90aGVyIG1pbm9yIFtjaGFuZ2VzXShDaGFuZ2VMb2cudHh0KS4KLQotMjkg
SnVseSAyMDExCi0tLS0tLS0tLS0tLS0KLQotSSd2ZSBqdXN0IHJlbGVhc2VkIGdmbGFncyAxLjYu
ICBUaGUgbWFqb3IgbmV3IGZlYXR1cmUgaW4gdGhpcyByZWxlYXNlCi1pcyBzdXBwb3J0IGZvciBz
ZXR0aW5nIHZlcnNpb24gaW5mbywgc28gdGhhdCAtLXZlcnNpb24gZG9lcyBzb21ldGhpbmcKLXVz
ZWZ1bC4KLQotT25lIG1pbm9yIGNoYW5nZSBoYXMgcmVxdWlyZWQgYnVtcGluZyB0aGUgbGlicmFy
eSBudW1iZXI6Ci1gUmVwYXJzZUNvbW1hbmRsaW5lRmxhZ3NgIG5vdyByZXR1cm5zIGB2b2lkYCBp
bnN0ZWFkIG9mIGBpbnRgICh0aGUgaW50Ci1yZXR1cm4gdmFsdWUgd2FzIGFsd2F5cyBtZWFuaW5n
bGVzcykuICBUaG91Z2ggSSBkb3VidCBhbnlvbmUgZXZlciB1c2VkCi10aGlzIChtZWFuaW5nbGVz
cykgcmV0dXJuIHZhbHVlLCB0ZWNobmljYWxseSBpdCdzIGEgY2hhbmdlIHRvIHRoZSBBQkkKLXRo
YXQgcmVxdWlyZXMgYSB2ZXJzaW9uIGJ1bXAuICBBIGJpdCBzYWQuCi0KLVRoZXJlJ3MgYWxzbyBh
IHByb2NlZHVyYWwgY2hhbmdlIHdpdGggdGhpcyByZWxlYXNlOiBJJ3ZlIGNoYW5nZWQgdGhlCi1p
bnRlcm5hbCB0b29scyB1c2VkIHRvIGludGVncmF0ZSBHb29nbGUtc3VwcGxpZWQgcGF0Y2hlcyBm
b3IgZ2ZsYWdzCi1pbnRvIHRoZSBvcGVuc291cmNlIHJlbGVhc2UuICBUaGVzZSBuZXcgdG9vbHMg
c2hvdWxkIHJlc3VsdCBpbiBtb3JlCi1mcmVxdWVudCB1cGRhdGVzIHdpdGggYmV0dGVyIGNoYW5n
ZSBkZXNjcmlwdGlvbnMuICBUaGV5IHdpbGwgYWxzbwotcmVzdWx0IGluIGZ1dHVyZSBgQ2hhbmdl
TG9nYCBlbnRyaWVzIGJlaW5nIG11Y2ggbW9yZSB2ZXJib3NlIChmb3IgYmV0dGVyCi1vciBmb3Ig
d29yc2UpLgotCi1TZWUgdGhlIFtDaGFuZ2VMb2ddKENoYW5nZUxvZy50eHQpIGZvciBhIGZ1bGwg
bGlzdCBvZiBjaGFuZ2VzIGZvciB0aGlzIHJlbGVhc2UuCi0KLTI0IEphbnVhcnkgMjAxMQotLS0t
LS0tLS0tLS0tLS0tCi0KLUkndmUganVzdCByZWxlYXNlZCBnZmxhZ3MgMS41LiAgVGhpcyByZWxl
YXNlIGhhcyBvbmx5IG1pbm9yIGNoYW5nZXMKLWZyb20gMS40LCBpbmNsdWRpbmcgc29tZSBzbGln
aHRseSBiZXR0ZXIgcmVwb3J0aW5nIGluIC0taGVscCwgYW5kCi1hbiBuZXcgbWVtb3J5LWNsZWFu
dXAgZnVuY3Rpb24gdGhhdCBjYW4gaGVscCB3aGVuIHJ1bm5pbmcgZ2ZsYWdzLXVzaW5nCi1saWJy
YXJpZXMgdW5kZXIgdmFsZ3JpbmQuICBUaGUgbWFqb3IgY2hhbmdlIGlzIHRvIGZpeCB1cCB0aGUg
bWFjcm9zCi0oYERFRklORV9ib29sYCBhbmQgdGhlIGxpa2UpIHRvIHdvcmsgbW9yZSByZWxpYWJs
eSBpbnNpZGUgbmFtZXNwYWNlcy4KLQotSWYgeW91IGhhdmUgbm90IGhhZCBhIHByb2JsZW0gd2l0
aCB0aGVzZSBtYWNyb3MsIGFuZCBkb24ndCBuZWVkIGFueSBvZgotdGhlIG90aGVyIGNoYW5nZXMg
ZGVzY3JpYmVkLCB0aGVyZSBpcyBubyBuZWVkIHRvIHVwZ3JhZGUuICBTZWUgdGhlCi1bQ2hhbmdl
TG9nXShDaGFuZ2VMb2cudHh0KSBmb3IgYSBmdWxsIGxpc3Qgb2YgY2hhbmdlcyBmb3IgdGhpcyBy
ZWxlYXNlLgotCi0xMSBPY3RvYmVyIDIwMTAKLS0tLS0tLS0tLS0tLS0tLQotCi1JJ3ZlIGp1c3Qg
cmVsZWFzZWQgZ2ZsYWdzIDEuNC4gIFRoaXMgcmVsZWFzZSBoYXMgb25seSBtaW5vciBjaGFuZ2Vz
Ci1mcm9tIDEuMywgaW5jbHVkaW5nIHNvbWUgZG9jdW1lbnRhdGlvbiB0d2Vha3MgYW5kIHNvbWUg
d29yayB0byBtYWtlCi10aGUgbGlicmFyeSBzbWFsbGVyLiAgSWYgMS4zIGlzIHdvcmtpbmcgd2Vs
bCBmb3IgeW91LCB0aGVyZSdzIG5vCi1wYXJ0aWN1bGFyIHJlYXNvbiB0byB1cGdyYWRlLgotCi00
IEphbnVhcnkgMjAxMAotLS0tLS0tLS0tLS0tLS0KLQotSSd2ZSBqdXN0IHJlbGVhc2VkIGdmbGFn
cyAxLjMuICBnZmxhZ3Mgbm93IGNvbXBpbGVzIHVuZGVyIE1TVkMsIGFuZAotYWxsIHRlc3RzIHBh
c3MuICBJICoqcmVhbGx5KiogbmV2ZXIgdGhvdWdodCBub24tdW5peC15IFdpbmRvd3MgZm9sa3MK
LXdvdWxkIHdhbnQgZ2ZsYWdzLCBidXQgYXQgbGVhc3Qgc29tZSBvZiB0aGVtIGRvLgotCi1UaGUg
bWFqb3IgbmV3cywgdGhvdWdoLCBpcyB0aGF0IEkndmUgc2VwYXJhdGVkIG91dCB0aGUgcHl0aG9u
IHBhY2thZ2UKLWludG8gaXRzIG93biBsaWJyYXJ5LCBbcHl0aG9uLWdmbGFnc10oaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL3B5dGhvbi1nZmxhZ3MpLgotSWYgeW91J3JlIGludGVyZXN0ZWQgaW4g
dGhlIFB5dGhvbiB2ZXJzaW9uIG9mIGdmbGFncywgdGhhdCdzIHRoZSBwbGFjZSB0bwotZ2V0IGl0
IG5vdy4KLQotMTAgU2VwdGVtYmVyIDIwMDkKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUkndmUganVz
dCByZWxlYXNlZCBnZmxhZ3MgMS4yLiAgVGhlIG1ham9yIGNoYW5nZSBmcm9tIGdmbGFncyAxLjEg
aXMgaXQKLW5vdyBjb21waWxlcyB1bmRlciBNaW5HVyAoYXMgd2VsbCBhcyBjeWd3aW4pLCBhbmQg
YWxsIHRlc3RzIHBhc3MuICBJCi1uZXZlciB0aG91Z2h0IFdpbmRvd3MgZm9sa3Mgd291bGQgd2Fu
dCB1bml4LXN0eWxlIGNvbW1hbmQtbGluZSBmbGFncywKLXNpbmNlIHRoZXkncmUgc28gZGlmZmVy
ZW50IGZyb20gdGhlIFdpbmRvd3Mgc3R5bGUsIGJ1dCBJIGd1ZXNzIEkgd2FzCi13cm9uZyEKLQot
VGhlIG90aGVyIGNoYW5nZXMgYXJlIG1pbm9yLCBzdWNoIGFzIHN1cHBvcnQgZm9yIC0taHRtbHht
bCBpbiB0aGUKLXB5dGhvbiB2ZXJzaW9uIG9mIGdmbGFncy4KLQotMTUgQXByaWwgMjAwOQotLS0t
LS0tLS0tLS0tLQotCi1JJ3ZlIGp1c3QgcmVsZWFzZWQgZ2ZsYWdzIDEuMS4gIEl0IGhhcyBvbmx5
IG1pbm9yIGNoYW5nZXMgZmRyb20gZ2ZsYWdzCi0xLjAgKHNlZSB0aGUgW0NoYW5nZUxvZ10oQ2hh
bmdlTG9nLnR4dCkgZm9yIGRldGFpbHMpLgotVGhlIG1ham9yIGNoYW5nZSBpcyB0aGF0IEkgbW92
ZWQgdG8gYSBuZXcgc3lzdGVtIGZvciBjcmVhdGluZyAuZGViIGFuZCAucnBtIGZpbGVzLgotVGhp
cyBhbGxvd3MgbWUgdG8gY3JlYXRlIHg4NlxfNjQgZGViIGFuZCBycG0gZmlsZXMuCi0KLUluIHRo
ZSBwcm9jZXNzIG9mIG1vdmluZyB0byB0aGlzIG5ldyBzeXN0ZW0sIEkgbm90aWNlZCBhbgotaW5j
b25zaXN0ZW5jeTogdGhlIHRhci5neiBhbmQgLnJwbSBmaWxlcyBjcmVhdGVkIGxpYnJhcmllcyBu
YW1lZAotbGliZ2ZsYWdzLnNvLCBidXQgdGhlIGRlYiBmaWxlIGNyZWF0ZWQgbGliZ29vZ2xlLWdm
bGFncy5zby4gIEkgaGF2ZQotZml4ZWQgdGhlIGRlYiBmaWxlIHRvIGNyZWF0ZSBsaWJyYXJpZXMg
bGlrZSB0aGUgb3RoZXJzLiAgSSdtIG5vIGV4cGVydAotaW4gZGViaWFuIHBhY2thZ2luZywgYnV0
IEkgYmVsaWV2ZSB0aGlzIGhhcyBjYXVzZWQgdGhlIHBhY2thZ2UgbmFtZSB0bwotY2hhbmdlIGFz
IHdlbGwuICBQbGVhc2UgbGV0IG1lIGtub3cgKGF0Ci1bW21haWx0bzpnb29nbGUtZ2ZsYWdzQGdv
b2dsZWdyb3Vwcy5jb21dKG1haWx0bzpnb29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb20pCi1n
b29nbGUtZ2ZsYWdzQGdvb2dsZWdyb3Vwcy5jb21dKSBpZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyBm
b3IgeW91IC0tCi1lc3BlY2lhbGx5IGlmIHlvdSBrbm93IG9mIGEgZml4ISAgSSB3b3VsZCBiZSBo
YXBweSB0byBjaGFuZ2UgdGhlIGRlYgotcGFja2FnZXMgdG8gYWRkIHN5bWxpbmtzIGZyb20gdGhl
IG9sZCBsaWJyYXJ5IG5hbWUgdG8gdGhlIG5ldwotKGxpYmdvb2dsZS1nZmxhZ3Muc28gLT4gbGli
Z2ZsYWdzLnNvKSwgYnV0IHRoYXQgaXMgYmV5b25kIG15IGtub3dsZWRnZQotb2YgaG93IHRvIG1h
a2UgLmRlYnMuCi0KLUlmIHlvdSd2ZSB0cmllZCB0byBpbnN0YWxsIGEgLnJwbSBvciAuZGViIGFu
ZCBpdCBkb2Vzbid0IHdvcmsgZm9yIHlvdSwKLWxldCBtZSBrbm93LiAgSSdtIGV4Y2l0ZWQgdG8g
ZmluYWxseSBoYXZlIDY0LWJpdCBwYWNrYWdlIGZpbGVzLCBidXQKLXRoZXJlIG1heSBzdGlsbCBi
ZSBzb21lIHdyaW5rbGVzIGluIHRoZSBuZXcgc3lzdGVtIHRvIGlyb24gb3V0LgotCi0xIE9jdG9i
ZXIgMjAwOAotLS0tLS0tLS0tLS0tLS0KLQotZ2ZsYWdzIDEuMHJjMiB3YXMgb3V0IGZvciBhIGZl
dyB3ZWVrcyB3aXRob3V0IGFueSBpc3N1ZXMsIHNvIGdmbGFncwotMS4wIGlzIG5vdyByZWxlYXNl
ZC4gIFRoaXMgaXMgbXVjaCBsaWtlIGdmbGFncyAwLjkuICBUaGUgbWFqb3IgY2hhbmdlCi1pcyB0
aGF0IHRoZSAuaCBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgZnJvbSBgL3Vzci9pbmNsdWRlL2dvb2ds
ZWAgdG8KLWAvdXNyL2luY2x1ZGUvZ2ZsYWdzYC4gIFdoaWxlIEkgaGF2ZSBiYWNrd2FyZHMtY29t
cGF0aWJpbGl0eQotZm9yd2FyZGluZyBoZWFkZWRzIGluIHBsYWNlLCBwbGVhc2UgcmV3cml0ZSBl
eGlzdGluZyBjb2RlIHRvIHNheQotYGBgCi0gICAjaW5jbHVkZSA8Z2ZsYWdzL2dmbGFncy5oPgot
YGBgCi1pbnN0ZWFkIG9mCi1gYGAKLSAgICNpbmNsdWRlIDxnb29nbGUvZ2ZsYWdzLmg+Ci1gYGAK
LQotSSd2ZSBrZXB0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZSB0byBnb29nbGUuICBZb3UgY2FuIHN0
aWxsIGNoYW5nZSB3aXRoCi13aXRoIHRoZSBhcHByb3ByaWF0ZSBmbGFnIHRvIHRoZSBjb25maWd1
cmUgc2NyaXB0IChgLi9jb25maWd1cmUKLS0taGVscGAgdG8gc2VlIHRoZSBmbGFncykuICBJZiB5
b3UgaGF2ZSBmZWVkYmFjayBhcyB0byB3aGV0aGVyIHRoZQotZGVmYXVsdCBuYW1lc3BhY2Ugc2hv
dWxkIGNoYW5nZSB0byBnZmxhZ3MsIHdoaWNoIHdvdWxkIGJlIGEKLW5vbi1iYWNrd2FyZHMtY29t
cGF0aWJsZSBjaGFuZ2UsIHNlbmQgbWFpbCB0bwotYGdvb2dsZS1nZmxhZ3NAZ29vZ2xlZ3JvdXBz
LmNvbWAhCi0KLVZlcnNpb24gMS4wIGFsc28gaGFzIHNvbWUgbmVhdCBuZXcgZmVhdHVyZXMsIGxp
a2Ugc3VwcG9ydCBmb3IgYmFzaAotY29tbWFuZGxpbmUtY29tcGxldGlvbiBvZiBoZWxwIGZsYWdz
LiAgU2VlIHRoZSBbQ2hhbmdlTG9nXShDaGFuZ2VMb2cudHh0KQotZm9yIG1vcmUgZGV0YWlscy4K
LQotSWYgSSBkb24ndCBoZWFyIGFueSBiYWQgbmV3cyBmb3IgYSBmZXcgd2Vla3MsIEknbGwgcmVs
ZWFzZSAxLjAtZmluYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvUkVBRE1FX3J1bnRpbWUudHh0IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L2NtYWtlL1JFQURNRV9ydW50aW1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDI1NTZiMmU4ZDQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL1JFQURNRV9ydW50aW1lLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHJ1
bnRpbWUgbGlicmFyaWVzIG9ubHkgd2hpY2ggYXJlIHJlcXVpcmVkCi1ieSBhcHBsaWNhdGlvbnMg
dGhhdCB1c2UgdGhlc2UgbGlicmFyaWVzIGZvciB0aGUgY29tbWFuZGxpbmUgZmxhZ3MKLXByb2Nl
c3NpbmcuIElmIHlvdSB3YW50IHRvIGRldmVsb3Agc3VjaCBhcHBsaWNhdGlvbiwgZG93bmxvYWQK
LWFuZCBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBwYWNrYWdlIGluc3RlYWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9z
cmMvY21ha2UvY29uZmlnLmNtYWtlLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL2NvbmZpZy5jbWFrZS5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0MTljMmE1OTE4Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L2NtYWtlL2NvbmZpZy5jbWFrZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0j
IyBnZmxhZ3MgQ01ha2UgY29uZmlndXJhdGlvbiBmaWxlCi0KLSMgbGlicmFyeSB2ZXJzaW9uIGlu
Zm9ybWF0aW9uCi1zZXQgKEBQQUNLQUdFX05BTUVAX1ZFUlNJT05fU1RSSU5HICJAUEFDS0FHRV9W
RVJTSU9OQCIpCi1zZXQgKEBQQUNLQUdFX05BTUVAX1ZFUlNJT05fTUFKT1IgIEBQQUNLQUdFX1ZF
UlNJT05fTUFKT1JAKQotc2V0IChAUEFDS0FHRV9OQU1FQF9WRVJTSU9OX01JTk9SICBAUEFDS0FH
RV9WRVJTSU9OX01JTk9SQCkKLXNldCAoQFBBQ0tBR0VfTkFNRUBfVkVSU0lPTl9QQVRDSCAgQFBB
Q0tBR0VfVkVSU0lPTl9QQVRDSEApCi0KLSMgaW1wb3J0IHRhcmdldHMKLWluY2x1ZGUgKCIke0NN
QUtFX0NVUlJFTlRfTElTVF9ESVJ9L0BQQUNLQUdFX05BTUVALWV4cG9ydC5jbWFrZSIpCi0KLSMg
aW5zdGFsbGF0aW9uIHByZWZpeAotZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCAoQ01BS0VfQ1VSUkVO
VF9MSVNUX0RJUiAiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRklMRX0iIFBBVEgpCi1nZXRfZmlsZW5h
bWVfY29tcG9uZW50IChfSU5TVEFMTF9QUkVGSVggIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0v
QElOU1RBTExfUFJFRklYX1JFTDJDT05GSUdfRElSQCIgQUJTT0xVVEUpCi0KLSMgaW5jbHVkZSBk
aXJlY3RvcnkKLSMKLSMgTmV3ZXIgdmVyc2lvbnMgb2YgQ01ha2Ugc2V0IHRoZSBJTlRFUkZBQ0Vf
SU5DTFVERV9ESVJFQ1RPUklFUyBwcm9wZXJ0eQotIyBvZiB0aGUgaW1wb3J0ZWQgdGFyZ2V0cy4g
SXQgaXMgaGVuY2Ugbm90IG5lY2Vzc2FyeSB0byBhZGQgdGhpcyBwYXRoCi0jIG1hbnVhbGx5IHRv
IHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoIGZvciB0YXJnZXRzIHdoaWNoIGxpbmsgdG8gZ2ZsYWdz
Lgotc2V0IChAUEFDS0FHRV9OQU1FQF9JTkNMVURFX0RJUiAiJHtfSU5TVEFMTF9QUkVGSVh9L0BJ
TkNMVURFX0lOU1RBTExfRElSQCIpCi0KLSMgZGVmYXVsdCBzZXR0aW5ncwotaWYgKE5PVCBERUZJ
TkVEIEBQQUNLQUdFX05BTUVAX1NIQVJFRCkKLSAgaWYgKFRBUkdFVCBAUEFDS0FHRV9OQU1FQC1z
dGF0aWMgT1IgVEFSR0VUIEBQQUNLQUdFX05BTUVAX25vdGhyZWFkcy1zdGF0aWMpCi0gICAgc2V0
IChAUEFDS0FHRV9OQU1FQF9TSEFSRUQgRkFMU0UpCi0gIGVsc2UgKCkKLSAgICBzZXQgKEBQQUNL
QUdFX05BTUVAX1NIQVJFRCBUUlVFKQotICBlbmRpZiAoKQotZW5kaWYgKCkKLWlmIChOT1QgREVG
SU5FRCBAUEFDS0FHRV9OQU1FQF9OT1RIUkVBRFMpCi0gIGlmIChUQVJHRVQgQFBBQ0tBR0VfTkFN
RUAtc3RhdGljIE9SIFRBUkdFVCBAUEFDS0FHRV9OQU1FQC1zaGFyZWQpCi0gICAgc2V0IChAUEFD
S0FHRV9OQU1FQF9OT1RIUkVBRFMgRkFMU0UpCi0gIGVsc2UgKCkKLSAgICBzZXQgKEBQQUNLQUdF
X05BTUVAX05PVEhSRUFEUyBUUlVFKQotICBlbmRpZiAoKQotZW5kaWYgKCkKLQotIyBjaG9vc2Ug
aW1wb3J0ZWQgbGlicmFyeSB0YXJnZXQKLWlmIChOT1QgQFBBQ0tBR0VfTkFNRUBfVEFSR0VUKQot
ICBpZiAoQFBBQ0tBR0VfTkFNRUBfU0hBUkVEKQotICAgIGlmIChAUEFDS0FHRV9OQU1FQF9OT1RI
UkVBRFMpCi0gICAgICBzZXQgKEBQQUNLQUdFX05BTUVAX1RBUkdFVCBAUEFDS0FHRV9OQU1FQF9u
b3RocmVhZHMtc2hhcmVkKQotICAgIGVsc2UgKCkKLSAgICAgIHNldCAoQFBBQ0tBR0VfTkFNRUBf
VEFSR0VUIEBQQUNLQUdFX05BTUVALXNoYXJlZCkKLSAgICBlbmRpZiAoKQotICBlbHNlICgpCi0g
ICAgaWYgKEBQQUNLQUdFX05BTUVAX05PVEhSRUFEUykKLSAgICAgIHNldCAoQFBBQ0tBR0VfTkFN
RUBfVEFSR0VUIEBQQUNLQUdFX05BTUVAX25vdGhyZWFkcy1zdGF0aWMpCi0gICAgZWxzZSAoKQot
ICAgICAgc2V0IChAUEFDS0FHRV9OQU1FQF9UQVJHRVQgQFBBQ0tBR0VfTkFNRUAtc3RhdGljKQot
ICAgIGVuZGlmICgpCi0gIGVuZGlmICgpCi1lbmRpZiAoKQotaWYgKE5PVCBUQVJHRVQgJHtAUEFD
S0FHRV9OQU1FQF9UQVJHRVR9KQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiWW91ciBAUEFDS0FH
RV9OQU1FQCBpbnN0YWxsYXRpb24gZG9lcyBub3QgY29udGFpbiBhICR7QFBBQ0tBR0VfTkFNRUBf
VEFSR0VUfSBsaWJyYXJ5IHRhcmdldCEiCi0gICAgICAgICAgICAgICAgICAgICAgICIgVHJ5IGEg
ZGlmZmVyZW50IGNvbWJpbmF0aW9uIG9mIEBQQUNLQUdFX05BTUVAX1NIQVJFRCBhbmQgQFBBQ0tB
R0VfTkFNRUBfTk9USFJFQURTLiIpCi1lbmRpZiAoKQotCi0jIGFkZCBtb3JlIGNvbnZlbmllbnQg
IkBQQUNLQUdFX05BTUVAIiBpbXBvcnQgdGFyZ2V0Ci1pZiAoTk9UIFRBUkdFVCBAUEFDS0FHRV9O
QU1FQCkKLSAgaWYgKEBQQUNLQUdFX05BTUVAX1NIQVJFRCkKLSAgICBhZGRfbGlicmFyeSAoQFBB
Q0tBR0VfTkFNRUAgU0hBUkVEIElNUE9SVEVEKQotICBlbHNlICgpCi0gICAgYWRkX2xpYnJhcnkg
KEBQQUNLQUdFX05BTUVAIFNUQVRJQyBJTVBPUlRFRCkKLSAgZW5kaWYgKCkKLSAgIyBJTlRFUkZB
Q0VfSU5DTFVERV9ESVJFQ1RPUklFUwotICBnZXRfdGFyZ2V0X3Byb3BlcnR5IChfQFBBQ0tBR0Vf
TkFNRUBfSU5DTFVERVMgJHtAUEFDS0FHRV9OQU1FQF9UQVJHRVR9IElOVEVSRkFDRV9JTkNMVURF
X0RJUkVDVE9SSUVTKQotICBpZiAoX0BQQUNLQUdFX05BTUVAX0lOQ0xVREVTKQotICAgIHNldF90
YXJnZXRfcHJvcGVydGllcyhAUEFDS0FHRV9OQU1FQCBQUk9QRVJUSUVTCi0gICAgICBJTlRFUkZB
Q0VfSU5DTFVERV9ESVJFQ1RPUklFUyAiJHtfQFBBQ0tBR0VfTkFNRUBfSU5DTFVERVN9IgotICAg
ICkKLSAgZW5kaWYgKCkKLSAgdW5zZXQgKF9AUEFDS0FHRV9OQU1FQF9JTkNMVURFUykKLSAgIyBz
ZXQgY29uZmlndXJhdGlvbiBzcGVjaWZpYyBwcm9wZXJ0aWVzCi0gIGdldF90YXJnZXRfcHJvcGVy
dHkgKF9AUEFDS0FHRV9OQU1FQF9DT05GSUdVUkFUSU9OUyAke0BQQUNLQUdFX05BTUVAX1RBUkdF
VH0gSU1QT1JURURfQ09ORklHVVJBVElPTlMpCi0gIHNldF90YXJnZXRfcHJvcGVydGllcyAoQFBB
Q0tBR0VfTkFNRUAgUFJPUEVSVElFUyBJTVBPUlRFRF9DT05GSUdVUkFUSU9OUyAiJHtfQFBBQ0tB
R0VfTkFNRUBfQ09ORklHVVJBVElPTlN9IikKLSAgZm9yZWFjaCAoX0BQQUNLQUdFX05BTUVAX0NP
TkZJRyBJTiBMSVNUUyBfQFBBQ0tBR0VfTkFNRUBfQ09ORklHVVJBVElPTlMpCi0gICAgIyBJTVBP
UlRFRF9MT0NBVElPTl88Y29uZmlnPgotICAgIGdldF90YXJnZXRfcHJvcGVydHkgKF9AUEFDS0FH
RV9OQU1FQF9MT0NBVElPTiAke0BQQUNLQUdFX05BTUVAX1RBUkdFVH0gSU1QT1JURURfTE9DQVRJ
T05fJHtfQFBBQ0tBR0VfTkFNRUBfQ09ORklHfSkKLSAgICBpZiAoX0BQQUNLQUdFX05BTUVAX0xP
Q0FUSU9OKQotICAgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEBQQUNLQUdFX05BTUVAIFBST1BF
UlRJRVMKLSAgICAgICAgSU1QT1JURURfTE9DQVRJT05fJHtfQFBBQ0tBR0VfTkFNRUBfQ09ORklH
fSAiJHtfQFBBQ0tBR0VfTkFNRUBfTE9DQVRJT059IgotICAgICAgKQotICAgIGVuZGlmICgpCi0g
ICAgdW5zZXQgKF9AUEFDS0FHRV9OQU1FQF9MT0NBVElPTikKLSAgICAjIElNUE9SVEVEX0xJTktf
SU5URVJGQUNFX0xBTkdVQUdFU188Y29uZmlnPiAoc3RhdGljKQotICAgIGdldF90YXJnZXRfcHJv
cGVydHkgKF9AUEFDS0FHRV9OQU1FQF9MQU5HVUFHRVMgJHtAUEFDS0FHRV9OQU1FQF9UQVJHRVR9
IElNUE9SVEVEX0xJTktfSU5URVJGQUNFX0xBTkdVQUdFU18ke19AUEFDS0FHRV9OQU1FQF9DT05G
SUd9KQotICAgIGlmIChfQFBBQ0tBR0VfTkFNRUBfTEFOR1VBR0VTKQotICAgICAgc2V0X3Rhcmdl
dF9wcm9wZXJ0aWVzKEBQQUNLQUdFX05BTUVAIFBST1BFUlRJRVMKLSAgICAgICAgSU1QT1JURURf
TElOS19JTlRFUkZBQ0VfTEFOR1VBR0VTXyR7X0BQQUNLQUdFX05BTUVAX0NPTkZJR30gIiR7X0BQ
QUNLQUdFX05BTUVAX0xBTkdVQUdFU30iCi0gICAgICApCi0gICAgZW5kaWYgKCkKLSAgICB1bnNl
dCAoX0BQQUNLQUdFX05BTUVAX0xBTkdVQUdFUykKLSAgICAjIElNUE9SVEVEX1NPTkFNRV88Y29u
ZmlnPiAoc2hhcmVkKQotICAgIGdldF90YXJnZXRfcHJvcGVydHkgKF9AUEFDS0FHRV9OQU1FQF9T
T05BTUUgJHtAUEFDS0FHRV9OQU1FQF9UQVJHRVR9IElNUE9SVEVEX1NPTkFNRV8ke19AUEFDS0FH
RV9OQU1FQF9DT05GSUd9KQotICAgIGlmIChfQFBBQ0tBR0VfTkFNRUBfU09OQU1FKQotICAgICAg
c2V0X3RhcmdldF9wcm9wZXJ0aWVzKEBQQUNLQUdFX05BTUVAIFBST1BFUlRJRVMKLSAgICAgICAg
SU1QT1JURURfU09OQU1FXyR7X0BQQUNLQUdFX05BTUVAX0NPTkZJR30gIiR7X0BQQUNLQUdFX05B
TUVAX1NPTkFNRX0iCi0gICAgICApCi0gICAgZW5kaWYgKCkKLSAgICB1bnNldCAoX0BQQUNLQUdF
X05BTUVAX1NPTkFNRSkKLSAgZW5kZm9yZWFjaCAoKQotICB1bnNldCAoX0BQQUNLQUdFX05BTUVA
X0NPTkZJR1VSQVRJT05TKQotZW5kaWYgKCkKLQotIyBhbGlhcyBmb3IgZGVmYXVsdCBpbXBvcnQg
dGFyZ2V0IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBDTWFrZSBwYWNrYWdlIGNvbmZpZ3Vy
YXRpb25zCi1zZXQgKEBQQUNLQUdFX05BTUVAX0xJQlJBUklFUyAiJHtAUEFDS0FHRV9OQU1FQF9U
QVJHRVR9IikKLQotIyB1bnNldCBwcml2YXRlIHZhcmlhYmxlcwotdW5zZXQgKF9JTlNUQUxMX1BS
RUZJWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9leGVjdXRlX3Rlc3QuY21ha2UgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvZXhl
Y3V0ZV90ZXN0LmNtYWtlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAwOGNmNDY1
ZTQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvZXhlY3V0ZV90ZXN0LmNtYWtlCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNhbml0aXpl
IHN0cmluZyBzdG9yZWQgaW4gdmFyaWFibGUgZm9yIHVzZSBpbiByZWd1bGFyIGV4cHJlc3Npb24u
Ci1tYWNybyAoc2FuaXRpemVfZm9yX3JlZ2V4IFNUUlZBUikKLSAgc3RyaW5nIChSRUdFWCBSRVBM
QUNFICIoWy4rKj9eJCgpXSkiICJcXFxcXFwxIiAke1NUUlZBUn0gIiR7JHtTVFJWQVJ9fSIpCi1l
bmRtYWNybyAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgc2NyaXB0IGFyZ3VtZW50cwot
aWYgKE5PVCBDT01NQU5EKQotICBtZXNzYWdlIChGQVRBTF9FUlJPUiAiVGVzdCBjb21tYW5kIG5v
dCBzcGVjaWZpZWQhIikKLWVuZGlmICgpCi1pZiAoTk9UIERFRklORUQgRVhQRUNURURfUkMpCi0g
IHNldCAoRVhQRUNURURfUkMgMCkKLWVuZGlmICgpCi1pZiAoRVhQRUNURURfT1VUUFVUKQotICBz
YW5pdGl6ZV9mb3JfcmVnZXgoRVhQRUNURURfT1VUUFVUKQotZW5kaWYgKCkKLWlmIChVTkVYUEVD
VEVEX09VVFBVVCkKLSAgc2FuaXRpemVfZm9yX3JlZ2V4KFVORVhQRUNURURfT1VUUFVUKQotZW5k
aWYgKCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNldCBhIGZldyBlbnZpcm9ubWVudCB2
YXJpYWJsZXMgKHVzZWZ1bCBmb3IgLS10cnlmcm9tZW52KQotc2V0IChFTlZ7RkxBR1NfdW5kZWZv
a30gImZvbyxiYXIiKQotc2V0IChFTlZ7RkxBR1Nfd2VpcmRvfSAgIiIpCi1zZXQgKEVOVntGTEFH
U192ZXJzaW9ufSAidHJ1ZSIpCi1zZXQgKEVOVntGTEFHU19oZWxwfSAgICAiZmFsc2UiKQotCi0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZXhlY3V0ZSB0ZXN0IGNvbW1hbmQKLWV4ZWN1dGVfcHJv
Y2VzcygKLSAgQ09NTUFORCAke0NPTU1BTkR9Ci0gIFJFU1VMVF9WQVJJQUJMRSBSQwotICBPVVRQ
VVRfVkFSSUFCTEUgT1VUUFVUCi0gIEVSUk9SX1ZBUklBQkxFICBPVVRQVVQKLSkKLQotaWYgKE9V
VFBVVCkKLSAgbWVzc2FnZSAoIiR7T1VUUFVUfSIpCi1lbmRpZiAoKQotCi0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLSMgY2hlY2sgdGVzdCByZXN1bHQKLWlmIChOT1QgUkMgRVFVQUwgRVhQRUNURURf
UkMpCi0gIHN0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENPTU1BTkQgIiR7Q09NTUFORH0iKQotICBt
ZXNzYWdlIChGQVRBTF9FUlJPUiAiQ29tbWFuZDpcblx0JHtDT01NQU5EfVxuRXhpdCBzdGF0dXMg
aXMgJHtSQ30sIGV4cGVjdGVkICR7RVhQRUNURURfUkN9IikKLWVuZGlmICgpCi1pZiAoRVhQRUNU
RURfT1VUUFVUIEFORCBOT1QgT1VUUFVUIE1BVENIRVMgIiR7RVhQRUNURURfT1VUUFVUfSIpCi0g
IG1lc3NhZ2UgKEZBVEFMX0VSUk9SICJUZXN0IG91dHB1dCBkb2VzIG5vdCBtYXRjaCBleHBlY3Rl
ZCBvdXRwdXQ6ICR7RVhQRUNURURfT1VUUFVUfSIpCi1lbmRpZiAoKQotaWYgKFVORVhQRUNURURf
T1VUUFVUIEFORCBPVVRQVVQgTUFUQ0hFUyAiJHtVTkVYUEVDVEVEX09VVFBVVH0iKQotICBtZXNz
YWdlIChGQVRBTF9FUlJPUiAiVGVzdCBvdXRwdXQgbWF0Y2hlcyB1bmV4cGVjdGVkIG91dHB1dDog
JHtVTkVYUEVDVEVEX09VVFBVVH0iKQotZW5kaWYgKCkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvY21ha2UvcGFja2FnZS5jbWFrZS5pbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS9wYWNrYWdl
LmNtYWtlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWVjNzkyNWUzNGYuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvY21ha2UvcGFja2FnZS5jbWFrZS5pbgorKysgL2Rldi9udWxsCkBA
IC0xLDQ5ICswLDAgQEAKLSMgUGVyLWdlbmVyYXRvciBDUGFjayBjb25maWd1cmF0aW9uIGZpbGUu
IFNlZSBDUEFDS19QUk9KRUNUX0NPTkZJR19GSUxFIGRvY3VtZW50ZWQgYXQKLSMgaHR0cDovL3d3
dy5jbWFrZS5vcmcvY21ha2UvaGVscC92Mi44LjEyL2NwYWNrLmh0bWwjdmFyaWFibGU6Q1BBQ0tf
UFJPSkVDVF9DT05GSUdfRklMRQotIwotIyBBbGwgY29tbW9uIENQQUNLXyogdmFyaWFibGVzIGFy
ZSBzZXQgaW4gQ01ha2VMaXN0cy50eHQgYWxyZWFkeS4gVGhpcyBmaWxlIG9ubHkKLSMgb3ZlcnJp
ZGVzIHNvbWUgb2YgdGhlc2UgdG8gcHJvdmlkZSBwYWNrYWdlIGdlbmVyYXRvciBzcGVjaWZpYyBz
ZXR0aW5ncy4KLQotIyB3aGV0aGVyIHBhY2thZ2UgY29udGFpbnMgYWxsIGRldmVsb3BtZW50IGZp
bGVzIG9yIG9ubHkgcnVudGltZSBmaWxlcwotc2V0IChERVZFTCBASU5TVEFMTF9IRUFERVJTQCkK
LQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgTWFjIE9TIFggcGFja2FnZQotaWYgKENQQUNL
X0dFTkVSQVRPUiBNQVRDSEVTICJQYWNrYWdlTWFrZXJ8RHJhZ05Ecm9wIikKLQotICBzZXQgKENQ
QUNLX1BBQ0tBR0VfRklMRV9OQU1FICIke0NQQUNLX1BBQ0tBR0VfTkFNRX0iKQotICBpZiAoREVW
RUwpCi0gICAgc2V0IChDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRSAiJHtDUEFDS19QQUNLQUdFX0ZJ
TEVfTkFNRX0tZGV2ZWwiKQotICBlbmRpZiAoKQotICBzZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9O
QU1FICIke0NQQUNLX1BBQ0tBR0VfRklMRV9OQU1FfS0ke0NQQUNLX1BBQ0tBR0VfVkVSU0lPTn0i
KQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZWJpYW4gcGFja2FnZQotZWxzZWlmIChD
UEFDS19HRU5FUkFUT1IgTUFUQ0hFUyAiREVCIikKLQotICBzZXQgKENQQUNLX1BBQ0tBR0VfRklM
RV9OQU1FICAgImxpYiR7Q1BBQ0tfUEFDS0FHRV9OQU1FfSIpCi0gIGlmIChERVZFTCkKLSAgICBz
ZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICIke0NQQUNLX1BBQ0tBR0VfRklMRV9OQU1FfS1k
ZXYiKQotICBlbHNlICgpCi0gICAgc2V0IChDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRSAiJHtDUEFD
S19QQUNLQUdFX0ZJTEVfTkFNRX0wIikKLSAgZW5kaWYgKCkKLSAgc2V0IChDUEFDS19QQUNLQUdF
X0ZJTEVfTkFNRSAgICIke0NQQUNLX1BBQ0tBR0VfRklMRV9OQU1FfV8ke0NQQUNLX1BBQ0tBR0Vf
VkVSU0lPTn0tMV8ke0NQQUNLX1BBQ0tBR0VfQVJDSElURUNUVVJFfSIpCi0KLSAgc2V0IChDUEFD
S19ERUJJQU5fUEFDS0FHRV9ERVBFTkRTKQotICBzZXQgKENQQUNLX0RFQklBTl9QQUNLQUdFX1NF
Q1RJT04gICAgICAiZGV2ZWwiKQotICBzZXQgKENQQUNLX0RFQklBTl9QQUNLQUdFX1BSSU9SSVRZ
ICAgICAib3B0aW9uYWwiKQotICBzZXQgKENQQUNLX0RFQklBTl9QQUNLQUdFX0hPTUVQQUdFICAg
ICAiJHtDUEFDS19SUE1fUEFDS0FHRV9VUkx9IikKLSAgc2V0IChDUEFDS19ERUJJQU5fUEFDS0FH
RV9NQUlOVEFJTkVSICAgIiR7Q1BBQ0tfUEFDS0FHRV9WRU5ET1J9IikKLSAgc2V0IChDUEFDS19E
RUJJQU5fUEFDS0FHRV9BUkNISVRFQ1RVUkUgIiR7Q1BBQ0tfUEFDS0FHRV9BUkNISVRFQ1RVUkV9
IikKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUlBNIHBhY2thZ2UKLWVsc2VpZiAoQ1BB
Q0tfR0VORVJBVE9SIE1BVENIRVMgIlJQTSIpCi0KLSAgc2V0IChDUEFDS19QQUNLQUdFX0ZJTEVf
TkFNRSAgICIke0NQQUNLX1BBQ0tBR0VfTkFNRX0iKQotICBpZiAoREVWRUwpCi0gICAgc2V0IChD
UEFDS19QQUNLQUdFX0ZJTEVfTkFNRSAiJHtDUEFDS19QQUNLQUdFX0ZJTEVfTkFNRX0tZGV2ZWwi
KQotICBlbmRpZiAoKQotICBzZXQgKENQQUNLX1BBQ0tBR0VfRklMRV9OQU1FICAgIiR7Q1BBQ0tf
UEFDS0FHRV9GSUxFX05BTUV9LSR7Q1BBQ0tfUEFDS0FHRV9WRVJTSU9OfS0xLiR7Q1BBQ0tfUEFD
S0FHRV9BUkNISVRFQ1RVUkV9IikKLQotZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9jbWFrZS91dGls
cy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z2ZsYWdzL3NyYy9jbWFrZS91dGlscy5jbWFrZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWNlZjQ2M2M0YThmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL2NtYWtlL3V0aWxzLmNtYWtlCisr
KyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotIyMgVXRpbGl0eSBDTWFrZSBmdW5jdGlvbnMu
Ci0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyMgQ29udmVydCBib29sZWFuIHZhbHVlIHRvIDAg
b3IgMQotbWFjcm8gKGJvb2xfdG9faW50IFZBUikKLSAgaWYgKCR7VkFSfSkKLSAgICBzZXQgKCR7
VkFSfSAxKQotICBlbHNlICgpCi0gICAgc2V0ICgke1ZBUn0gMCkKLSAgZW5kaWYgKCkKLWVuZG1h
Y3JvICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyMgRXh0cmFjdCB2ZXJzaW9uIG51bWJl
cnMgZnJvbSB2ZXJzaW9uIHN0cmluZy4KLWZ1bmN0aW9uICh2ZXJzaW9uX251bWJlcnMgdmVyc2lv
biBtYWpvciBtaW5vciBwYXRjaCkKLSAgaWYgKHZlcnNpb24gTUFUQ0hFUyAiKFswLTldKykoXFwu
WzAtOV0rKT8oXFwuWzAtOV0rKT8ocmNbMS05XVswLTldKnxbYS16XSspPyIpCi0gICAgaWYgKENN
QUtFX01BVENIXzEpCi0gICAgICBzZXQgKF9tYWpvciAke0NNQUtFX01BVENIXzF9KQotICAgIGVs
c2UgKCkKLSAgICAgIHNldCAoX21ham9yIDApCi0gICAgZW5kaWYgKCkKLSAgICBpZiAoQ01BS0Vf
TUFUQ0hfMikKLSAgICAgIHNldCAoX21pbm9yICR7Q01BS0VfTUFUQ0hfMn0pCi0gICAgICBzdHJp
bmcgKFJFR0VYIFJFUExBQ0UgIl5cXC4iICIiIF9taW5vciAiJHtfbWlub3J9IikKLSAgICBlbHNl
ICgpCi0gICAgICBzZXQgKF9taW5vciAwKQotICAgIGVuZGlmICgpCi0gICAgaWYgKENNQUtFX01B
VENIXzMpCi0gICAgICBzZXQgKF9wYXRjaCAke0NNQUtFX01BVENIXzN9KQotICAgICAgc3RyaW5n
IChSRUdFWCBSRVBMQUNFICJeXFwuIiAiIiBfcGF0Y2ggIiR7X3BhdGNofSIpCi0gICAgZWxzZSAo
KQotICAgICAgc2V0IChfcGF0Y2ggMCkKLSAgICBlbmRpZiAoKQotICBlbHNlICgpCi0gICAgc2V0
IChfbWFqb3IgMCkKLSAgICBzZXQgKF9taW5vciAwKQotICAgIHNldCAoX3BhdGNoIDApCi0gIGVu
ZGlmICgpCi0gIHNldCAoIiR7bWFqb3J9IiAiJHtfbWFqb3J9IiBQQVJFTlRfU0NPUEUpCi0gIHNl
dCAoIiR7bWlub3J9IiAiJHtfbWlub3J9IiBQQVJFTlRfU0NPUEUpCi0gIHNldCAoIiR7cGF0Y2h9
IiAiJHtfcGF0Y2h9IiBQQVJFTlRfU0NPUEUpCi1lbmRmdW5jdGlvbiAoKQotCi0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMjIENvbmZpZ3VyZSBwdWJsaWMgaGVhZGVyIGZpbGVzCi1mdW5jdGlvbiAo
Y29uZmlndXJlX2hlYWRlcnMgb3V0KQotICBzZXQgKHRtcCkKLSAgZm9yZWFjaCAoc3JjIElOIExJ
U1RTIEFSR04pCi0gICAgaWYgKElTX0FCU09MVVRFICIke3NyY30iKQotICAgICAgbGlzdCAoQVBQ
RU5EIHRtcCAiJHtzcmN9IikKLSAgICBlbHNlaWYgKEVYSVNUUyAiJHtQUk9KRUNUX1NPVVJDRV9E
SVJ9L3NyYy8ke3NyY30uaW4iKQotICAgICAgY29uZmlndXJlX2ZpbGUgKCIke1BST0pFQ1RfU09V
UkNFX0RJUn0vc3JjLyR7c3JjfS5pbiIgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9pbmNsdWRlLyR7
R0ZMQUdTX0lOQ0xVREVfRElSfS8ke3NyY30iIEBPTkxZKQotICAgICAgbGlzdCAoQVBQRU5EIHRt
cCAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUvJHtHRkxBR1NfSU5DTFVERV9ESVJ9LyR7
c3JjfSIpCi0gICAgZWxzZSAoKQotCSAgICBjb25maWd1cmVfZmlsZSAoIiR7UFJPSkVDVF9TT1VS
Q0VfRElSfS9zcmMvJHtzcmN9IiAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUvJHtHRkxB
R1NfSU5DTFVERV9ESVJ9LyR7c3JjfSIgQ09QWU9OTFkpCi0gICAgICBsaXN0IChBUFBFTkQgdG1w
ICIke1BST0pFQ1RfQklOQVJZX0RJUn0vaW5jbHVkZS8ke0dGTEFHU19JTkNMVURFX0RJUn0vJHtz
cmN9IikKLSAgICBlbmRpZiAoKQotICBlbmRmb3JlYWNoICgpCi0gIHNldCAoJHtvdXR9ICIke3Rt
cH0iIFBBUkVOVF9TQ09QRSkKLWVuZGZ1bmN0aW9uICgpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotIyMgQ29uZmlndXJlIHNvdXJjZSBmaWxlcyB3aXRoIC5pbiBzdWZmaXgKLWZ1bmN0aW9uIChj
b25maWd1cmVfc291cmNlcyBvdXQpCi0gIHNldCAodG1wKQotICBmb3JlYWNoIChzcmMgSU4gTElT
VFMgQVJHTikKLSAgICBpZiAoc3JjIE1BVENIRVMgIi5oJCIgQU5EIEVYSVNUUyAiJHtQUk9KRUNU
X1NPVVJDRV9ESVJ9L3NyYy8ke3NyY30uaW4iKQotICAgICAgY29uZmlndXJlX2ZpbGUgKCIke1BS
T0pFQ1RfU09VUkNFX0RJUn0vc3JjLyR7c3JjfS5pbiIgIiR7UFJPSkVDVF9CSU5BUllfRElSfS9p
bmNsdWRlLyR7R0ZMQUdTX0lOQ0xVREVfRElSfS8ke3NyY30iIEBPTkxZKQotICAgICAgbGlzdCAo
QVBQRU5EIHRtcCAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUvJHtHRkxBR1NfSU5DTFVE
RV9ESVJ9LyR7c3JjfSIpCi0gICAgZWxzZSAoKQotICAgICAgbGlzdCAoQVBQRU5EIHRtcCAiJHtQ
Uk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy8ke3NyY30iKQotICAgIGVuZGlmICgpCi0gIGVuZGZvcmVh
Y2ggKCkKLSAgc2V0ICgke291dH0gIiR7dG1wfSIgUEFSRU5UX1NDT1BFKQotZW5kZnVuY3Rpb24g
KCkKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIyBBZGQgdXNhZ2UgdGVzdAotIwotIyBVc2lu
ZyBQQVNTX1JFR1VMQVJfRVhQUkVTU0lPTiBhbmQgRkFJTF9SRUdVTEFSX0VYUFJFU1NJT04gd291
bGQKLSMgZG8gYXMgd2VsbCwgYnV0IENNYWtlL0NUZXN0IGRvZXMgbm90IGFsbG93IHVzIHRvIHNw
ZWNpZnkgYW4KLSMgZXhwZWN0ZWQgZXhpdCBzdGF0dXMuIE1vcmVvdmVyLCB0aGUgZXhlY3V0ZV90
ZXN0LmNtYWtlIHNjcmlwdAotIyBzZXRzIGVudmlyb25tZW50IHZhcmlhYmxlcyBuZWVkZWQgYnkg
dGhlIC0tZnJvbWVudi8tLXRyeWZyb21lbnYgdGVzdHMuCi1tYWNybyAoYWRkX2dmbGFnc190ZXN0
IG5hbWUgZXhwZWN0ZWRfcmMgZXhwZWN0ZWRfb3V0cHV0IHVuZXhwZWN0ZWRfb3V0cHV0IGNtZCkK
LSAgc2V0IChhcmdzICItLXRlc3RfdG1wZGlyPSR7UFJPSkVDVF9CSU5BUllfRElSfS9UZXN0aW5n
L1RlbXBvcmFyeSIKLSAgICAgICAgICAgICItLXNyY2Rpcj0ke1BST0pFQ1RfU09VUkNFX0RJUn0v
dGVzdCIpCi0gIGFkZF90ZXN0ICgKLSAgICBOQU1FICAgICR7bmFtZX0KLSAgICBDT01NQU5EICIk
e0NNQUtFX0NPTU1BTkR9IiAiLURDT01NQU5EOlNUUklORz0kPFRBUkdFVF9GSUxFOiR7Y21kfT47
JHthcmdzfTske0FSR059IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItREVYUEVD
VEVEX1JDOlNUUklORz0ke2V4cGVjdGVkX3JjfSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiLURFWFBFQ1RFRF9PVVRQVVQ6U1RSSU5HPSR7ZXhwZWN0ZWRfb3V0cHV0fSIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLURVTkVYUEVDVEVEX09VVFBVVDpTVFJJTkc9JHt1
bmV4cGVjdGVkX291dHB1dH0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLVAgIiR7
UFJPSkVDVF9TT1VSQ0VfRElSfS9jbWFrZS9leGVjdXRlX3Rlc3QuY21ha2UiCi0gICAgV09SS0lO
R19ESVJFQ1RPUlkgIiR7R0ZMQUdTX0ZMQUdGSUxFU19ESVJ9IgotICApCi1lbmRtYWNybyAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL2NtYWtlL3ZlcnNpb24uY21ha2UuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvY21ha2UvdmVyc2lvbi5jbWFr
ZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxYWYwNTBkOTc0Li4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nZmxhZ3Mvc3JjL2NtYWtlL3ZlcnNpb24uY21ha2UuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwy
MSArMCwwIEBACi0jIyBnZmxhZ3MgQ01ha2UgY29uZmlndXJhdGlvbiB2ZXJzaW9uIGZpbGUKLQot
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBsaWJyYXJ5IHZlcnNpb24KLXNldCAoUEFDS0FHRV9W
RVJTSU9OICJAUEFDS0FHRV9WRVJTSU9OQCIpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMg
Y2hlY2sgY29tcGF0aWJpbGl0eQotCi0jIFBlcmZvcm0gY29tcGF0aWJpbGl0eSBjaGVjayBoZXJl
IHVzaW5nIHRoZSBpbnB1dCBDTWFrZSB2YXJpYWJsZXMuCi0jIFNlZSBleGFtcGxlIGluIGh0dHA6
Ly93d3cuY21ha2Uub3JnL1dpa2kvQ01ha2VfMi42X05vdGVzLgotCi1zZXQgKFBBQ0tBR0VfVkVS
U0lPTl9DT01QQVRJQkxFIFRSVUUpCi1zZXQgKFBBQ0tBR0VfVkVSU0lPTl9VTlNVSVRBQkxFIEZB
TFNFKQotCi1pZiAoIiR7UEFDS0FHRV9GSU5EX1ZFUlNJT05fTUFKT1J9IiBFUVVBTCAiQFBBQ0tB
R0VfVkVSU0lPTl9NQUpPUkAiIEFORAotICAgICIke1BBQ0tBR0VfRklORF9WRVJTSU9OX01JTk9S
fSIgRVFVQUwgIkBQQUNLQUdFX1ZFUlNJT05fTUlOT1JAIikKLSAgc2V0IChQQUNLQUdFX1ZFUlNJ
T05fRVhBQ1QgVFJVRSkKLWVsc2UgKCkKLSAgc2V0IChQQUNLQUdFX1ZFUlNJT05fRVhBQ1QgRkFM
U0UpCi1lbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9jb25maWcuaC5pbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvY29uZmln
LmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NzA4ZGE2MTMzYi4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy9zcmMvY29uZmlnLmguaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAs
MCBAQAotLyogR2VuZXJhdGVkIGZyb20gY29uZmlnLmguaW4gZHVyaW5nIGJ1aWxkIGNvbmZpZ3Vy
YXRpb24gdXNpbmcgQ01ha2UuICovCi0KLS8vIE5vdGU6IFRoaXMgaGVhZGVyIGZpbGUgaXMgb25s
eSB1c2VkIGludGVybmFsbHkuIEl0IGlzIG5vdCBwYXJ0IG9mIHB1YmxpYyBpbnRlcmZhY2UhCi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gU3lzdGVtIGNoZWNrcwotCi0vLyBEZWZpbmUgaWYg
eW91IGJ1aWxkIHRoaXMgbGlicmFyeSBmb3IgYSBNUyBXaW5kb3dzIE9TLgotI2NtYWtlZGVmaW5l
IE9TX1dJTkRPV1MKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRl
ciBmaWxlLgotI2NtYWtlZGVmaW5lIEhBVkVfU1RESU5UX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBo
YXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLgotI2NtYWtlZGVmaW5lIEhBVkVfU1lT
X1RZUEVTX0gKLQotLy8gRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVy
IGZpbGUuCi0jY21ha2VkZWZpbmUgSEFWRV9JTlRUWVBFU19ICi0KLS8vIERlZmluZSBpZiB5b3Ug
aGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLgotI2NtYWtlZGVmaW5lIEhBVkVfU1lT
X1NUQVRfSAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZp
bGUuCi0jY21ha2VkZWZpbmUgSEFWRV9VTklTVERfSAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUg
dGhlIDxmbm1hdGNoLmg+IGhlYWRlciBmaWxlLgotI2NtYWtlZGVmaW5lIEhBVkVfRk5NQVRDSF9I
Ci0KLS8vIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHNobHdhcGkuaD4gaGVhZGVyIGZpbGUgKFdp
bmRvd3MgMjAwMC9YUCkuCi0jY21ha2VkZWZpbmUgSEFWRV9TSExXQVBJX0gKLQotLy8gRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2xsIGZ1bmN0aW9uLgotI2NtYWtlZGVmaW5lIEhBVkVfU1RS
VE9MTAotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnRvcSBmdW5jdGlvbi4KLSNjbWFr
ZWRlZmluZSBIQVZFX1NUUlRPUQotCi0vLyBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxwdGhyZWFk
Lmg+IGhlYWRlciBmaWxlLgotI2NtYWtlZGVmaW5lIEhBVkVfUFRIUkVBRAotCi0vLyBEZWZpbmUg
aWYgeW91ciBwdGhyZWFkIGxpYnJhcnkgZGVmaW5lcyB0aGUgdHlwZSBwdGhyZWFkX3J3bG9ja190
Ci0jY21ha2VkZWZpbmUgSEFWRV9SV0xPQ0sKLQotLy8gZ2NjIHJlcXVpcmVzIHRoaXMgdG8gZ2V0
IFBSSWQ2NCwgZXRjLgotI2lmIGRlZmluZWQoSEFWRV9JTlRUWVBFU19IKSAmJiAhZGVmaW5lZChf
X1NURENfRk9STUFUX01BQ1JPUykKLSMgIGRlZmluZSBfX1NURENfRk9STUFUX01BQ1JPUyAxCi0j
ZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQYWNrYWdlIGluZm9ybWF0aW9uCi0K
LS8vIE5hbWUgb2YgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FHRSBAUFJPSkVDVF9OQU1FQAotCi0v
LyBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFBBQ0tB
R0VfTkFNRSBAUEFDS0FHRV9OQU1FQAotCi0vLyBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQg
dmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFBBQ0tBR0VfU1RSSU5HIEBQQUNLQUdF
X1NUUklOR0AKLQotLy8gRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhp
cyBwYWNrYWdlLgotI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgQFBBQ0tBR0VfVEFSTkFNRUAKLQot
Ly8gRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4KLSNkZWZpbmUgUEFDS0FH
RV9WRVJTSU9OIEBQQUNLQUdFX1ZFUlNJT05ACi0KLS8vIFZlcnNpb24gbnVtYmVyIG9mIHBhY2th
Z2UuCi0jZGVmaW5lIFZFUlNJT04gUEFDS0FHRV9WRVJTSU9OCi0KLS8vIERlZmluZSB0byB0aGUg
YWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50
LgotI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCBAUEFDS0FHRV9CVUdSRVBPUlRACi0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLy8gUGF0aCBzZXBhcmF0b3IKLSNpZm5kZWYgUEFUSF9TRVBBUkFU
T1IKLSMgIGlmZGVmIE9TX1dJTkRPV1MKLSMgICAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICAnXFwn
Ci0jICBlbHNlCi0jICAgIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAgJy8nCi0jICBlbmRpZgotI2Vu
ZGlmCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gV2luZG93cwotCi0vLyBXaGV0aGVyIGdm
bGFncyBsaWJyYXJ5IGlzIGEgRExMLgotI2lmbmRlZiBHRkxBR1NfSVNfQV9ETEwKLSMgIGRlZmlu
ZSBHRkxBR1NfSVNfQV9ETEwgMAotI2VuZGlmCi0KLS8vIEFsd2F5cyBleHBvcnQgc3ltYm9scyB3
aGVuIGNvbXBpbGluZyBhIHNoYXJlZCBsaWJyYXJ5IGFzIHRoaXMgZmlsZSBpcyBvbmx5Ci0vLyBp
bmNsdWRlZCBieSBpbnRlcm5hbCBtb2R1bGVzIHdoZW4gYnVpbGRpbmcgdGhlIGdmbGFncyBsaWJy
YXJ5IGl0c2VsZi4KLS8vIFRoZSBnZmxhZ3NfZGVjbGFyZS5oIGhlYWRlciBmaWxlIHdpbGwgc2V0
IGl0IHRvIGltcG9ydCB0aGVzZSBzeW1ib2xzIG90aGVyd2lzZS4KLSNpZm5kZWYgR0ZMQUdTX0RM
TF9ERUNMCi0jICBpZiBHRkxBR1NfSVNfQV9ETEwgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICAg
ZGVmaW5lIEdGTEFHU19ETExfREVDTCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgIGVsc2UKLSMg
ICAgZGVmaW5lIEdGTEFHU19ETExfREVDTAotIyAgZW5kaWYKLSNlbmRpZgotLy8gRmxhZ3MgZGVm
aW5lZCBieSB0aGUgZ2ZsYWdzIGxpYnJhcnkgaXRzZWxmIG11c3QgYmUgZXhwb3J0ZWQKLSNpZm5k
ZWYgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwotIyAgZGVmaW5lIEdGTEFHU19ETExfREVGSU5FX0ZM
QUcgR0ZMQUdTX0RMTF9ERUNMCi0jZW5kaWYKLQotI2lmZGVmIE9TX1dJTkRPV1MKLS8vIFRoZSB1
bml0dGVzdHMgaW1wb3J0IHRoZSBzeW1ib2xzIG9mIHRoZSBzaGFyZWQgZ2ZsYWdzIGxpYnJhcnkK
LSMgIGlmIEdGTEFHU19JU19BX0RMTCAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUg
R0ZMQUdTX0RMTF9ERUNMX0ZPUl9VTklUVEVTVFMgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICBl
bmRpZgotIyAgaW5jbHVkZSAid2luZG93c19wb3J0LmgiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9z
cmMvZ2ZsYWdzLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3MuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzNWJiZmU2NjY0Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzLmNjCisrKyAv
ZGV2L251bGwKQEAgLTEsMTk2MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDE5OTksIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyAtLS0KLS8vIFJldmFtcGVkIGFuZCByZW9yZ2FuaXpl
ZCBieSBDcmFpZyBTaWx2ZXJzdGVpbgotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaW1w
bGVtZW50YXRpb24gb2YgYWxsIG91ciBjb21tYW5kIGxpbmUgZmxhZ3MKLS8vIHN0dWZmLiAgSGVy
ZSdzIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIKLS8vCi0vLyAqIEZsYWdSZWdpc3RyeSBv
d25zIENvbW1hbmRMaW5lRmxhZ3Mgb3ducyBGbGFnVmFsdWUuCi0vLyAqIEZsYWdTYXZlciBob2xk
cyBhIEZsYWdSZWdpc3RyeSAoc2F2ZXMgaXQgYXQgY29uc3RydWN0IHRpbWUsCi0vLyAgICAgcmVz
dG9yZXMgaXQgYXQgZGVzdHJveSB0aW1lKS4KLS8vICogQ29tbWFuZExpbmVGbGFnUGFyc2VyIGxp
dmVzIG91dHNpZGUgdGhhdCBoaWVyYXJjaHksIGJ1dCB3b3JrcyBvbgotLy8gICAgIENvbW1hbmRM
aW5lRmxhZ3MgKG1vZGlmeWluZyB0aGUgRmxhZ1ZhbHVlcykuCi0vLyAqIEZyZWUgZnVuY3Rpb25z
IGxpa2UgU2V0Q29tbWFuZExpbmVPcHRpb24oKSB3b3JrIHZpYSBvbmUgb2YgdGhlCi0vLyAgICAg
YWJvdmUgKHN1Y2ggYXMgQ29tbWFuZExpbmVGbGFnUGFyc2VyKS4KLS8vCi0vLyBJbiBtb3JlIGRl
dGFpbDoKLS8vCi0vLyAtLSBUaGUgbWFpbiBjbGFzc2VzIHRoYXQgaG9sZCBmbGFnIGRhdGE6Ci0v
LwotLy8gRmxhZ1ZhbHVlIGhvbGRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgZmxhZy4gIEl0J3MK
LS8vIHBzZXVkby10ZW1wbGF0aXplZDogZXZlcnkgb3BlcmF0aW9uIG9uIGEgRmxhZ1ZhbHVlIGlz
IHR5cGVkLiAgSXQKLS8vIGFsc28gZGVhbHMgd2l0aCBzdG9yYWdlLWxpZmV0aW1lIGlzc3VlcyAo
c28gZmxhZyB2YWx1ZXMgZG9uJ3QgZ28KLS8vIGF3YXkgaW4gYSBkZXN0cnVjdG9yKSwgd2hpY2gg
aXMgd2h5IHdlIG5lZWQgYSB3aG9sZSBjbGFzcyB0byBob2xkIGEKLS8vIHZhcmlhYmxlJ3MgdmFs
dWUuCi0vLwotLy8gQ29tbWFuZExpbmVGbGFnIGlzIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQg
YSBzaW5nbGUgY29tbWFuZC1saW5lCi0vLyBmbGFnLiAgSXQgaGFzIGEgRmxhZ1ZhbHVlIGZvciB0
aGUgZmxhZydzIGN1cnJlbnQgdmFsdWUsIGJ1dCBhbHNvCi0vLyB0aGUgZmxhZydzIG5hbWUsIHR5
cGUsIGV0Yy4KLS8vCi0vLyBGbGFnUmVnaXN0cnkgaXMgYSBjb2xsZWN0aW9uIG9mIENvbW1hbmRM
aW5lRmxhZ3MuICBUaGVyZSdzIHRoZQotLy8gZ2xvYmFsIHJlZ2lzdHJ5LCB3aGljaCBpcyB3aGVy
ZSBmbGFncyBkZWZpbmVkIHZpYSBERUZJTkVfZm9vKCkKLS8vIGxpdmUuICBCdXQgaXQncyBwb3Nz
aWJsZSB0byBkZWZpbmUgeW91ciBvd24gZmxhZywgbWFudWFsbHksIGluIGEKLS8vIGRpZmZlcmVu
dCByZWdpc3RyeSB5b3UgY3JlYXRlLiAgKEluIHByYWN0aWNlLCBtdWx0aXBsZSByZWdpc3RyaWVz
Ci0vLyBhcmUgdXNlZCBvbmx5IGJ5IEZsYWdTYXZlcikuCi0vLwotLy8gQSBnaXZlbiBGbGFnVmFs
dWUgaXMgb3duZWQgYnkgZXhhY3RseSBvbmUgQ29tbWFuZExpbmVGbGFnLiAgQSBnaXZlbgotLy8g
Q29tbWFuZExpbmVGbGFnIGlzIG93bmVkIGJ5IGV4YWN0bHkgb25lIEZsYWdSZWdpc3RyeS4gIEZs
YWdSZWdpc3RyeQotLy8gaGFzIGEgbG9jazsgYW55IG9wZXJhdGlvbiB0aGF0IHdyaXRlcyB0byBh
IEZsYWdWYWx1ZSBvcgotLy8gQ29tbWFuZExpbmVGbGFnIG93bmVkIGJ5IHRoYXQgcmVnaXN0cnkg
bXVzdCBhY3F1aXJlIHRoZQotLy8gRmxhZ1JlZ2lzdHJ5IGxvY2sgYmVmb3JlIGRvaW5nIHNvLgot
Ly8KLS8vIC0tLSBTb21lIG90aGVyIGNsYXNzZXMgYW5kIGZyZWUgZnVuY3Rpb25zOgotLy8KLS8v
IENvbW1hbmRMaW5lRmxhZ0luZm8gaXMgYSBjbGllbnQtZXhwb3NlZCB2ZXJzaW9uIG9mIENvbW1h
bmRMaW5lRmxhZy4KLS8vIE9uY2UgaXQncyBpbnN0YW50aWF0ZWQsIGl0IGhhcyBubyBkZXBlbmRl
bmNpZXMgb3IgcmVsYXRpb25zaGlwcwotLy8gd2l0aCBhbnkgb3RoZXIgcGFydCBvZiB0aGlzIGZp
bGUuCi0vLwotLy8gRmxhZ1JlZ2lzdGVyZXIgaXMgdGhlIGhlbHBlciBjbGFzcyB1c2VkIGJ5IHRo
ZSBERUZJTkVfKiBtYWNyb3MgdG8KLS8vIGFsbG93IHdvcmsgdG8gYmUgZG9uZSBhdCBnbG9iYWwg
aW5pdGlhbGl6YXRpb24gdGltZS4KLS8vCi0vLyBDb21tYW5kTGluZUZsYWdQYXJzZXIgaXMgdGhl
IGNsYXNzIHRoYXQgcmVhZHMgZnJvbSB0aGUgY29tbWFuZGxpbmUKLS8vIGFuZCBpbnN0YW50aWF0
ZXMgZmxhZyB2YWx1ZXMgYmFzZWQgb24gdGhhdC4gIEl0IG5lZWRzIHRvIHBva2UgaW50bwotLy8g
dGhlIGlubmFyZHMgb2YgdGhlIEZsYWdWYWx1ZS0+Q29tbWFuZExpbmVGbGFnLT5GbGFnUmVnaXN0
cnkgY2xhc3MKLS8vIGhpZXJhcmNoeSB0byBkbyB0aGF0LiAgSXQncyBjYXJlZnVsIHRvIGFjcXVp
cmUgdGhlIEZsYWdSZWdpc3RyeQotLy8gbG9jayBiZWZvcmUgZG9pbmcgYW55IHdyaXRpbmcgb3Ig
b3RoZXIgbm9uLWNvbnN0IGFjdGlvbnMuCi0vLwotLy8gR2V0Q29tbWFuZExpbmVPcHRpb24gaXMg
anVzdCBhIGhvb2sgaW50byByZWdpc3RyeSByb3V0aW5lcyB0bwotLy8gcmV0cmlldmUgYSBmbGFn
IGJhc2VkIG9uIGl0cyBuYW1lLiAgU2V0Q29tbWFuZExpbmVPcHRpb24sIG9uIHRoZQotLy8gb3Ro
ZXIgaGFuZCwgaG9va3MgaW50byBDb21tYW5kTGluZUZsYWdQYXJzZXIuICBPdGhlciBBUEkgZnVu
Y3Rpb25zCi0vLyBhcmUsIHNpbWlsYXJseSwgbW9zdGx5IGhvb2tzIGludG8gdGhlIGZ1bmN0aW9u
YWxpdHkgZGVzY3JpYmVkIGFib3ZlLgotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Z2ZsYWdzLmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2lu
Y2x1ZGUgPGVycm5vLmg+Ci0jaWYgZGVmaW5lZChIQVZFX0ZOTUFUQ0hfSCkKLSMgIGluY2x1ZGUg
PGZubWF0Y2guaD4KLSNlbGlmIGRlZmluZWQoSEFWRV9TSExXQVBJX0gpCi0jICBpbmNsdWRlIDxz
aGx3YXBpLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzdGRhcmcuaD4gLy8gRm9yIHZhX2xpc3QgYW5k
IHJlbGF0ZWQgb3BlcmF0aW9ucwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PiAgICAgLy8gZm9yIHBhaXI8PgotI2luY2x1ZGUgPHZl
Y3Rvcj4KLQotI2luY2x1ZGUgIm11dGV4LmgiCi0jaW5jbHVkZSAidXRpbC5oIgotCi11c2luZyBu
YW1lc3BhY2UgTVVURVhfTkFNRVNQQUNFOwotCi0KLS8vIFNwZWNpYWwgZmxhZ3MsIHR5cGUgMTog
dGhlICdyZWN1cnNpdmUnIGZsYWdzLiAgVGhleSBzZXQgYW5vdGhlciBmbGFnJ3MgdmFsLgotREVG
SU5FX3N0cmluZyhmbGFnZmlsZSwgICAiIiwgImxvYWQgZmxhZ3MgZnJvbSBmaWxlIik7Ci1ERUZJ
TkVfc3RyaW5nKGZyb21lbnYsICAgICIiLCAic2V0IGZsYWdzIGZyb20gdGhlIGVudmlyb25tZW50
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBbdXNlICdleHBvcnQgRkxBR1NfZmxh
ZzE9dmFsdWUnXSIpOwotREVGSU5FX3N0cmluZyh0cnlmcm9tZW52LCAiIiwgInNldCBmbGFncyBm
cm9tIHRoZSBlbnZpcm9ubWVudCBpZiBwcmVzZW50Iik7Ci0KLS8vIFNwZWNpYWwgZmxhZ3MsIHR5
cGUgMjogdGhlICdwYXJzaW5nJyBmbGFncy4gIFRoZXkgbW9kaWZ5IGhvdyB3ZSBwYXJzZS4KLURF
RklORV9zdHJpbmcodW5kZWZvaywgIiIsICJjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmbGFnIG5h
bWVzIHRoYXQgaXQgaXMgb2theSB0byBzcGVjaWZ5ICIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJvbiB0aGUgY29tbWFuZCBsaW5lIGV2ZW4gaWYgdGhlIHByb2dyYW0gZG9lcyBub3QgZGVm
aW5lIGEgZmxhZyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGF0IG5hbWUu
ICBJTVBPUlRBTlQ6IGZsYWdzIGluIHRoaXMgbGlzdCB0aGF0IGhhdmUgIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImFyZ3VtZW50cyBNVVNUIHVzZSB0aGUgZmxhZz12YWx1ZSBmb3JtYXQi
KTsKLQotbmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UgewotCi11c2luZyBzdGQ6Om1hcDsKLXVz
aW5nIHN0ZDo6cGFpcjsKLXVzaW5nIHN0ZDo6c29ydDsKLXVzaW5nIHN0ZDo6c3RyaW5nOwotdXNp
bmcgc3RkOjp2ZWN0b3I7Ci0KLS8vIFRoaXMgaXMgdXNlZCBieSB0aGUgdW5pdHRlc3QgdG8gdGVz
dCBlcnJvci1leGl0IGNvZGUKLXZvaWQgR0ZMQUdTX0RMTF9ERUNMICgqZ2ZsYWdzX2V4aXRmdW5j
KShpbnQpID0gJmV4aXQ7ICAvLyBmcm9tIHN0ZGxpYi5oCi0KLQotLy8gVGhlIGhlbHAgbWVzc2Fn
ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGNvbW1hbmRsaW5lIGZsYWcgaGFzIGJlZW4KLS8vICdzdHJp
cHBlZCcuIEl0IHdpbGwgbm90IHNob3cgdXAgd2hlbiBkb2luZyAiLWhlbHAiIGFuZCBpdHMKLS8v
IHZhcmlhbnRzLiBUaGUgZmxhZyBpcyBzdHJpcHBlZCBpZiBTVFJJUF9GTEFHX0hFTFAgaXMgc2V0
IHRvIDEKLS8vIGJlZm9yZSBpbmNsdWRpbmcgYmFzZS9nZmxhZ3MuaAotCi0vLyBUaGlzIGlzIHVz
ZWQgYnkgdGhpcyBmaWxlLCBhbmQgYWxzbyBpbiBnZmxhZ3NfcmVwb3J0aW5nLmNjCi1jb25zdCBj
aGFyIGtTdHJpcHBlZEZsYWdIZWxwW10gPSAiXDAwMVwwMDJcMDAzXDAwNCAodW5rbm93bikgXDAw
NFwwMDNcMDAyXDAwMSI7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRoZXJlIGFyZSBhbHNvICdyZXBv
cnRpbmcnIGZsYWdzLCBpbiBnZmxhZ3NfcmVwb3J0aW5nLmNjLgotCi1zdGF0aWMgY29uc3QgY2hh
ciBrRXJyb3JbXSA9ICJFUlJPUjogIjsKLQotLy8gSW5kaWNhdGVzIHRoYXQgdW5kZWZpbmVkIG9w
dGlvbnMgYXJlIHRvIGJlIGlnbm9yZWQuCi0vLyBFbmFibGVzIGRlZmVycmVkIHByb2Nlc3Npbmcg
b2YgZmxhZ3MgaW4gZHluYW1pY2FsbHkgbG9hZGVkIGxpYnJhcmllcy4KLXN0YXRpYyBib29sIGFs
bG93X2NvbW1hbmRfbGluZV9yZXBhcnNpbmcgPSBmYWxzZTsKLQotc3RhdGljIGJvb2wgbG9nZ2lu
Z19pc19wcm9iYWJseV9zZXRfdXAgPSBmYWxzZTsKLQotLy8gVGhpcyBpcyBhICdwcm90b3R5cGUn
IHZhbGlkYXRlLWZ1bmN0aW9uLiAgJ1JlYWwnIHZhbGlkYXRlCi0vLyBmdW5jdGlvbnMsIHRha2Ug
YSBmbGFnLXZhbHVlIGFzIGFuIGFyZ3VtZW50OiBWYWxpZGF0ZUZuKGJvb2wpIG9yCi0vLyBWYWxp
ZGF0ZUZuKHVpbnQ2NCkuICBIb3dldmVyLCBmb3IgZWFzaWVyIHN0b3JhZ2UsIHdlIHN0cmlwIG9m
ZiB0aGlzCi0vLyBhcmd1bWVudCBhbmQgdGhlbiByZXN0b3JlIGl0IHdoZW4gYWN0dWFsbHkgY2Fs
bGluZyB0aGUgZnVuY3Rpb24gb24KLS8vIGEgZmxhZyB2YWx1ZS4KLXR5cGVkZWYgYm9vbCAoKlZh
bGlkYXRlRm5Qcm90bykoKTsKLQotLy8gV2hldGhlciB3ZSBzaG91bGQgZGllIHdoZW4gcmVwb3J0
aW5nIGFuIGVycm9yLgotZW51bSBEaWVXaGVuUmVwb3J0aW5nIHsgRElFLCBET19OT1RfRElFIH07
Ci0KLS8vIFJlcG9ydCBFcnJvciBhbmQgZXhpdCBpZiByZXF1ZXN0ZWQuCi1zdGF0aWMgdm9pZCBS
ZXBvcnRFcnJvcihEaWVXaGVuUmVwb3J0aW5nIHNob3VsZF9kaWUsIGNvbnN0IGNoYXIqIGZvcm1h
dCwgLi4uKSB7Ci0gIGNoYXIgZXJyb3JfbWVzc2FnZVsyNTVdOwotICB2YV9saXN0IGFwOwotICB2
YV9zdGFydChhcCwgZm9ybWF0KTsKLSAgdnNucHJpbnRmKGVycm9yX21lc3NhZ2UsIHNpemVvZihl
cnJvcl9tZXNzYWdlKSwgZm9ybWF0LCBhcCk7Ci0gIHZhX2VuZChhcCk7Ci0gIGZwcmludGYoc3Rk
ZXJyLCAiJXMiLCBlcnJvcl9tZXNzYWdlKTsKLSAgZmZsdXNoKHN0ZGVycik7ICAgLy8gc2hvdWxk
IGJlIHVubmVjZXNzYXJ5LCBidXQgY3lnd2luJ3Mgcnh2dCBidWZmZXJzIHN0ZGVycgotICBpZiAo
c2hvdWxkX2RpZSA9PSBESUUpIGdmbGFnc19leGl0ZnVuYygxKTsKLX0KLQotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRmxhZ1ZhbHVlCi0vLyAgICBUaGlzIHJlcHJlc2VudCB0aGUgdmFsdWUgYSBzaW5n
bGUgZmxhZyBtaWdodCBoYXZlLiAgVGhlIG1ham9yCi0vLyAgICBmdW5jdGlvbmFsaXR5IGlzIHRv
IGNvbnZlcnQgZnJvbSBhIHN0cmluZyB0byBhbiBvYmplY3Qgb2YgYQotLy8gICAgZ2l2ZW4gdHlw
ZSwgYW5kIGJhY2suICBUaHJlYWQtY29tcGF0aWJsZS4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNz
IENvbW1hbmRMaW5lRmxhZzsKLWNsYXNzIEZsYWdWYWx1ZSB7Ci0gcHVibGljOgotICBGbGFnVmFs
dWUodm9pZCogdmFsYnVmLCBjb25zdCBjaGFyKiB0eXBlLCBib29sIHRyYW5zZmVyX293bmVyc2hp
cF9vZl92YWx1ZSk7Ci0gIH5GbGFnVmFsdWUoKTsKLQotICBib29sIFBhcnNlRnJvbShjb25zdCBj
aGFyKiBzcGVjKTsKLSAgc3RyaW5nIFRvU3RyaW5nKCkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICBm
cmllbmQgY2xhc3MgQ29tbWFuZExpbmVGbGFnOyAgLy8gZm9yIG1hbnkgdGhpbmdzLCBpbmNsdWRp
bmcgVmFsaWRhdGUoKQotICBmcmllbmQgY2xhc3MgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1NhdmVy
SW1wbDsgIC8vIGNhbGxzIE5ldygpCi0gIGZyaWVuZCBjbGFzcyBGbGFnUmVnaXN0cnk7ICAgICAv
LyBjaGVja3MgdmFsdWVfYnVmZmVyXyBmb3IgZmxhZ3NfYnlfcHRyXyBtYXAKLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGZyaWVuZCBUIEdldEZyb21FbnYoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBUKTsKLSAgZnJpZW5kIGJvb2wgVHJ5UGFyc2VMb2NrZWQoY29uc3QgQ29tbWFuZExpbmVGbGFn
KiwgRmxhZ1ZhbHVlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcios
IHN0cmluZyopOyAgLy8gZm9yIE5ldygpLCBDb3B5RnJvbSgpCi0KLSAgZW51bSBWYWx1ZVR5cGUg
ewotICAgIEZWX0JPT0wgPSAwLAotICAgIEZWX0lOVDMyID0gMSwKLSAgICBGVl9JTlQ2NCA9IDIs
Ci0gICAgRlZfVUlOVDY0ID0gMywKLSAgICBGVl9ET1VCTEUgPSA0LAotICAgIEZWX1NUUklORyA9
IDUsCi0gICAgRlZfTUFYX0lOREVYID0gNSwKLSAgfTsKLSAgY29uc3QgY2hhciogVHlwZU5hbWUo
KSBjb25zdDsKLSAgYm9vbCBFcXVhbChjb25zdCBGbGFnVmFsdWUmIHgpIGNvbnN0OwotICBGbGFn
VmFsdWUqIE5ldygpIGNvbnN0OyAgIC8vIGNyZWF0ZXMgYSBuZXcgb25lIHdpdGggZGVmYXVsdCB2
YWx1ZQotICB2b2lkIENvcHlGcm9tKGNvbnN0IEZsYWdWYWx1ZSYgeCk7Ci0gIGludCBWYWx1ZVNp
emUoKSBjb25zdDsKLQotICAvLyBDYWxscyB0aGUgZ2l2ZW4gdmFsaWRhdGUtZm4gb24gdmFsdWVf
YnVmZmVyXywgYW5kIHJldHVybnMKLSAgLy8gd2hhdGV2ZXIgaXQgcmV0dXJucy4gIEJ1dCBmaXJz
dCBjYXN0cyB2YWxpZGF0ZV9mbl9wcm90byB0byBhCi0gIC8vIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
b3VyIHZhbHVlIGFzIGFuIGFyZ3VtZW50IChlZyB2b2lkCi0gIC8vICgqdmFsaWRhdGVfZm4pKGJv
b2wpIGZvciBhIGJvb2wgZmxhZykuCi0gIGJvb2wgVmFsaWRhdGUoY29uc3QgY2hhciogZmxhZ25h
bWUsIFZhbGlkYXRlRm5Qcm90byB2YWxpZGF0ZV9mbl9wcm90bykgY29uc3Q7Ci0KLSAgdm9pZCog
dmFsdWVfYnVmZmVyXzsgICAgICAgICAgLy8gcG9pbnRzIHRvIHRoZSBidWZmZXIgaG9sZGluZyBv
dXIgZGF0YQotICBpbnQ4IHR5cGVfOyAgICAgICAgICAgICAgICAgICAvLyBob3cgdG8gaW50ZXJw
cmV0IHZhbHVlXwotICBib29sIG93bnNfdmFsdWVfOyAgICAgICAgIC8vIHdoZXRoZXIgdG8gZnJl
ZSB2YWx1ZSBvbiBkZXN0cnVjdAotCi0gIEZsYWdWYWx1ZShjb25zdCBGbGFnVmFsdWUmKTsgICAv
LyBubyBjb3B5aW5nIQotICB2b2lkIG9wZXJhdG9yPShjb25zdCBGbGFnVmFsdWUmKTsKLX07Ci0K
LQotLy8gVGhpcyBjb3VsZCBiZSBhIHRlbXBsYXRlZCBtZXRob2Qgb2YgRmxhZ1ZhbHVlLCBidXQg
ZG9pbmcgc28gYWRkcyB0byB0aGUKLS8vIHNpemUgb2YgdGhlIC5vLiAgU2luY2UgdGhlcmUncyBu
byB0eXBlLXNhZmV0eSBoZXJlIGFueXdheSwgbWFjcm8gaXMgb2suCi0jZGVmaW5lIFZBTFVFX0FT
KHR5cGUpICAqcmVpbnRlcnByZXRfY2FzdDx0eXBlKj4odmFsdWVfYnVmZmVyXykKLSNkZWZpbmUg
T1RIRVJfVkFMVUVfQVMoZnYsIHR5cGUpICAqcmVpbnRlcnByZXRfY2FzdDx0eXBlKj4oZnYudmFs
dWVfYnVmZmVyXykKLSNkZWZpbmUgU0VUX1ZBTFVFX0FTKHR5cGUsIHZhbHVlKSAgVkFMVUVfQVMo
dHlwZSkgPSAodmFsdWUpCi0KLUZsYWdWYWx1ZTo6RmxhZ1ZhbHVlKHZvaWQqIHZhbGJ1ZiwgY29u
c3QgY2hhciogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJhbnNmZXJfb3duZXJz
aGlwX29mX3ZhbHVlKQotICAgIDogdmFsdWVfYnVmZmVyXyh2YWxidWYpLAotICAgICAgb3duc192
YWx1ZV8odHJhbnNmZXJfb3duZXJzaGlwX29mX3ZhbHVlKSB7Ci0gIGZvciAodHlwZV8gPSAwOyB0
eXBlXyA8PSBGVl9NQVhfSU5ERVg7ICsrdHlwZV8pIHsKLSAgICBpZiAoIXN0cmNtcCh0eXBlLCBU
eXBlTmFtZSgpKSkgewotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0gIGFzc2VydCh0eXBlXyA8
PSBGVl9NQVhfSU5ERVgpOyAgLy8gVW5rbm93biB0eXBlbmFtZQotfQotCi1GbGFnVmFsdWU6On5G
bGFnVmFsdWUoKSB7Ci0gIGlmICghb3duc192YWx1ZV8pIHsKLSAgICByZXR1cm47Ci0gIH0KLSAg
c3dpdGNoICh0eXBlXykgewotICAgIGNhc2UgRlZfQk9PTDogZGVsZXRlIHJlaW50ZXJwcmV0X2Nh
c3Q8Ym9vbCo+KHZhbHVlX2J1ZmZlcl8pOyBicmVhazsKLSAgICBjYXNlIEZWX0lOVDMyOiBkZWxl
dGUgcmVpbnRlcnByZXRfY2FzdDxpbnQzMio+KHZhbHVlX2J1ZmZlcl8pOyBicmVhazsKLSAgICBj
YXNlIEZWX0lOVDY0OiBkZWxldGUgcmVpbnRlcnByZXRfY2FzdDxpbnQ2NCo+KHZhbHVlX2J1ZmZl
cl8pOyBicmVhazsKLSAgICBjYXNlIEZWX1VJTlQ2NDogZGVsZXRlIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0Kj4odmFsdWVfYnVmZmVyXyk7IGJyZWFrOwotICAgIGNhc2UgRlZfRE9VQkxFOiBkZWxl
dGUgcmVpbnRlcnByZXRfY2FzdDxkb3VibGUqPih2YWx1ZV9idWZmZXJfKTsgYnJlYWs7Ci0gICAg
Y2FzZSBGVl9TVFJJTkc6IGRlbGV0ZSByZWludGVycHJldF9jYXN0PHN0cmluZyo+KHZhbHVlX2J1
ZmZlcl8pOyBicmVhazsKLSAgfQotfQotCi1ib29sIEZsYWdWYWx1ZTo6UGFyc2VGcm9tKGNvbnN0
IGNoYXIqIHZhbHVlKSB7Ci0gIGlmICh0eXBlXyA9PSBGVl9CT09MKSB7Ci0gICAgY29uc3QgY2hh
cioga1RydWVbXSA9IHsgIjEiLCAidCIsICJ0cnVlIiwgInkiLCAieWVzIiB9OwotICAgIGNvbnN0
IGNoYXIqIGtGYWxzZVtdID0geyAiMCIsICJmIiwgImZhbHNlIiwgIm4iLCAibm8iIH07Ci0gICAg
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKGtUcnVlKSA9PSBzaXplb2Yoa0ZhbHNlKSwgdHJ1ZV9mYWxz
ZV9lcXVhbCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2Yoa1RydWUpL3NpemVv
Zigqa1RydWUpOyArK2kpIHsKLSAgICAgIGlmIChzdHJjYXNlY21wKHZhbHVlLCBrVHJ1ZVtpXSkg
PT0gMCkgewotICAgICAgICBTRVRfVkFMVUVfQVMoYm9vbCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgfSBlbHNlIGlmIChzdHJjYXNlY21wKHZhbHVlLCBrRmFsc2VbaV0pID09
IDApIHsKLSAgICAgICAgU0VUX1ZBTFVFX0FTKGJvb2wsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsgICAvLyBkaWRuJ3QgbWF0
Y2ggYSBsZWdhbCBpbnB1dAotCi0gIH0gZWxzZSBpZiAodHlwZV8gPT0gRlZfU1RSSU5HKSB7Ci0g
ICAgU0VUX1ZBTFVFX0FTKHN0cmluZywgdmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0K
LSAgLy8gT0ssIGl0J3MgbGlrZWx5IHRvIGJlIG51bWVyaWMsIGFuZCB3ZSdsbCBiZSB1c2luZyBh
IHN0cnRvWFhYIG1ldGhvZC4KLSAgaWYgKHZhbHVlWzBdID09ICdcMCcpICAgLy8gZW1wdHktc3Ry
aW5nIGlzIG9ubHkgYWxsb3dlZCBmb3Igc3RyaW5nIHR5cGUuCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBjaGFyKiBlbmQ7Ci0gIC8vIExlYWRpbmcgMHggcHV0cyB1cyBpbiBiYXNlIDE2LiAgQnV0IGxl
YWRpbmcgMCBkb2VzIG5vdCBwdXQgdXMgaW4gYmFzZSA4IQotICAvLyBJdCBjYXVzZWQgdG9vIG1h
bnkgYnVncyB3aGVuIHdlIGhhZCB0aGF0IGJlaGF2aW9yLgotICBpbnQgYmFzZSA9IDEwOyAgICAv
LyBieSBkZWZhdWx0Ci0gIGlmICh2YWx1ZVswXSA9PSAnMCcgJiYgKHZhbHVlWzFdID09ICd4JyB8
fCB2YWx1ZVsxXSA9PSAnWCcpKQotICAgIGJhc2UgPSAxNjsKLSAgZXJybm8gPSAwOwotCi0gIHN3
aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0lOVDMyOiB7Ci0gICAgICBjb25zdCBpbnQ2NCBy
ID0gc3RydG82NCh2YWx1ZSwgJmVuZCwgYmFzZSk7Ci0gICAgICBpZiAoZXJybm8gfHwgZW5kICE9
IHZhbHVlICsgc3RybGVuKHZhbHVlKSkgIHJldHVybiBmYWxzZTsgIC8vIGJhZCBwYXJzZQotICAg
ICAgaWYgKHN0YXRpY19jYXN0PGludDMyPihyKSAhPSByKSAgLy8gd29ya2VkLCBidXQgbnVtYmVy
IG91dCBvZiByYW5nZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBTRVRfVkFMVUVfQVMo
aW50MzIsIHN0YXRpY19jYXN0PGludDMyPihyKSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgY2FzZSBGVl9JTlQ2NDogewotICAgICAgY29uc3QgaW50NjQgciA9IHN0cnRvNjQodmFs
dWUsICZlbmQsIGJhc2UpOwotICAgICAgaWYgKGVycm5vIHx8IGVuZCAhPSB2YWx1ZSArIHN0cmxl
bih2YWx1ZSkpICByZXR1cm4gZmFsc2U7ICAvLyBiYWQgcGFyc2UKLSAgICAgIFNFVF9WQUxVRV9B
UyhpbnQ2NCwgcik7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgY2FzZSBGVl9VSU5U
NjQ6IHsKLSAgICAgIHdoaWxlICgqdmFsdWUgPT0gJyAnKSB2YWx1ZSsrOwotICAgICAgaWYgKCp2
YWx1ZSA9PSAnLScpIHJldHVybiBmYWxzZTsgIC8vIG5lZ2F0aXZlIG51bWJlcgotICAgICAgY29u
c3QgdWludDY0IHIgPSBzdHJ0b3U2NCh2YWx1ZSwgJmVuZCwgYmFzZSk7Ci0gICAgICBpZiAoZXJy
bm8gfHwgZW5kICE9IHZhbHVlICsgc3RybGVuKHZhbHVlKSkgIHJldHVybiBmYWxzZTsgIC8vIGJh
ZCBwYXJzZQotICAgICAgU0VUX1ZBTFVFX0FTKHVpbnQ2NCwgcik7Ci0gICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgY2FzZSBGVl9ET1VCTEU6IHsKLSAgICAgIGNvbnN0IGRvdWJsZSByID0g
c3RydG9kKHZhbHVlLCAmZW5kKTsKLSAgICAgIGlmIChlcnJubyB8fCBlbmQgIT0gdmFsdWUgKyBz
dHJsZW4odmFsdWUpKSAgcmV0dXJuIGZhbHNlOyAgLy8gYmFkIHBhcnNlCi0gICAgICBTRVRfVkFM
VUVfQVMoZG91YmxlLCByKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBkZWZhdWx0
OiB7Ci0gICAgICBhc3NlcnQoZmFsc2UpOyAgLy8gdW5rbm93biB0eXBlCi0gICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICB9Ci19Ci0KLXN0cmluZyBGbGFnVmFsdWU6OlRvU3RyaW5nKCkgY29u
c3QgewotICBjaGFyIGludGJ1Zls2NF07ICAgIC8vIGVub3VnaCB0byBob2xkIGV2ZW4gdGhlIGJp
Z2dlc3QgbnVtYmVyCi0gIHN3aXRjaCAodHlwZV8pIHsKLSAgICBjYXNlIEZWX0JPT0w6Ci0gICAg
ICByZXR1cm4gVkFMVUVfQVMoYm9vbCkgPyAidHJ1ZSIgOiAiZmFsc2UiOwotICAgIGNhc2UgRlZf
SU5UMzI6Ci0gICAgICBzbnByaW50ZihpbnRidWYsIHNpemVvZihpbnRidWYpLCAiJSIgUFJJZDMy
LCBWQUxVRV9BUyhpbnQzMikpOwotICAgICAgcmV0dXJuIGludGJ1ZjsKLSAgICBjYXNlIEZWX0lO
VDY0OgotICAgICAgc25wcmludGYoaW50YnVmLCBzaXplb2YoaW50YnVmKSwgIiUiIFBSSWQ2NCwg
VkFMVUVfQVMoaW50NjQpKTsKLSAgICAgIHJldHVybiBpbnRidWY7Ci0gICAgY2FzZSBGVl9VSU5U
NjQ6Ci0gICAgICBzbnByaW50ZihpbnRidWYsIHNpemVvZihpbnRidWYpLCAiJSIgUFJJdTY0LCBW
QUxVRV9BUyh1aW50NjQpKTsKLSAgICAgIHJldHVybiBpbnRidWY7Ci0gICAgY2FzZSBGVl9ET1VC
TEU6Ci0gICAgICBzbnByaW50ZihpbnRidWYsIHNpemVvZihpbnRidWYpLCAiJS4xN2ciLCBWQUxV
RV9BUyhkb3VibGUpKTsKLSAgICAgIHJldHVybiBpbnRidWY7Ci0gICAgY2FzZSBGVl9TVFJJTkc6
Ci0gICAgICByZXR1cm4gVkFMVUVfQVMoc3RyaW5nKTsKLSAgICBkZWZhdWx0OgotICAgICAgYXNz
ZXJ0KGZhbHNlKTsKLSAgICAgIHJldHVybiAiIjsgIC8vIHVua25vd24gdHlwZQotICB9Ci19Ci0K
LWJvb2wgRmxhZ1ZhbHVlOjpWYWxpZGF0ZShjb25zdCBjaGFyKiBmbGFnbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZuUHJvdG8gdmFsaWRhdGVfZm5fcHJvdG8pIGNvbnN0
IHsKLSAgc3dpdGNoICh0eXBlXykgewotICAgIGNhc2UgRlZfQk9PTDoKLSAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGJvb2wgKCopKGNvbnN0IGNoYXIqLCBib29sKT4oCi0gICAgICAgICAg
dmFsaWRhdGVfZm5fcHJvdG8pKGZsYWduYW1lLCBWQUxVRV9BUyhib29sKSk7Ci0gICAgY2FzZSBG
Vl9JTlQzMjoKLSAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGJvb2wgKCopKGNvbnN0IGNo
YXIqLCBpbnQzMik+KAotICAgICAgICAgIHZhbGlkYXRlX2ZuX3Byb3RvKShmbGFnbmFtZSwgVkFM
VUVfQVMoaW50MzIpKTsKLSAgICBjYXNlIEZWX0lOVDY0OgotICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Ym9vbCAoKikoY29uc3QgY2hhciosIGludDY0KT4oCi0gICAgICAgICAgdmFsaWRh
dGVfZm5fcHJvdG8pKGZsYWduYW1lLCBWQUxVRV9BUyhpbnQ2NCkpOwotICAgIGNhc2UgRlZfVUlO
VDY0OgotICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Ym9vbCAoKikoY29uc3QgY2hhcios
IHVpbnQ2NCk+KAotICAgICAgICAgIHZhbGlkYXRlX2ZuX3Byb3RvKShmbGFnbmFtZSwgVkFMVUVf
QVModWludDY0KSk7Ci0gICAgY2FzZSBGVl9ET1VCTEU6Ci0gICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxib29sICgqKShjb25zdCBjaGFyKiwgZG91YmxlKT4oCi0gICAgICAgICAgdmFsaWRh
dGVfZm5fcHJvdG8pKGZsYWduYW1lLCBWQUxVRV9BUyhkb3VibGUpKTsKLSAgICBjYXNlIEZWX1NU
UklORzoKLSAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGJvb2wgKCopKGNvbnN0IGNoYXIq
LCBjb25zdCBzdHJpbmcmKT4oCi0gICAgICAgICAgdmFsaWRhdGVfZm5fcHJvdG8pKGZsYWduYW1l
LCBWQUxVRV9BUyhzdHJpbmcpKTsKLSAgICBkZWZhdWx0OgotICAgICAgYXNzZXJ0KGZhbHNlKTsg
IC8vIHVua25vd24gdHlwZQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci19Ci0KLWNvbnN0IGNo
YXIqIEZsYWdWYWx1ZTo6VHlwZU5hbWUoKSBjb25zdCB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIHR5
cGVzW10gPQotICAgICAgImJvb2xcMHh4IgotICAgICAgImludDMyXDB4IgotICAgICAgImludDY0
XDB4IgotICAgICAgInVpbnQ2NFwwIgotICAgICAgImRvdWJsZVwwIgotICAgICAgInN0cmluZyI7
Ci0gIGlmICh0eXBlXyA+IEZWX01BWF9JTkRFWCkgewotICAgIGFzc2VydChmYWxzZSk7Ci0gICAg
cmV0dXJuICIiOwotICB9Ci0gIC8vIERpcmVjdGx5IGluZGV4aW5nIHRoZSBzdHJpbmdzIGluIHRo
ZSAndHlwZXMnIHN0cmluZywgZWFjaCBvZiB0aGVtIGlzIDcgYnl0ZXMgbG9uZy4KLSAgcmV0dXJu
ICZ0eXBlc1t0eXBlXyAqIDddOwotfQotCi1ib29sIEZsYWdWYWx1ZTo6RXF1YWwoY29uc3QgRmxh
Z1ZhbHVlJiB4KSBjb25zdCB7Ci0gIGlmICh0eXBlXyAhPSB4LnR5cGVfKQotICAgIHJldHVybiBm
YWxzZTsKLSAgc3dpdGNoICh0eXBlXykgewotICAgIGNhc2UgRlZfQk9PTDogICByZXR1cm4gVkFM
VUVfQVMoYm9vbCkgPT0gT1RIRVJfVkFMVUVfQVMoeCwgYm9vbCk7Ci0gICAgY2FzZSBGVl9JTlQz
MjogIHJldHVybiBWQUxVRV9BUyhpbnQzMikgPT0gT1RIRVJfVkFMVUVfQVMoeCwgaW50MzIpOwot
ICAgIGNhc2UgRlZfSU5UNjQ6ICByZXR1cm4gVkFMVUVfQVMoaW50NjQpID09IE9USEVSX1ZBTFVF
X0FTKHgsIGludDY0KTsKLSAgICBjYXNlIEZWX1VJTlQ2NDogcmV0dXJuIFZBTFVFX0FTKHVpbnQ2
NCkgPT0gT1RIRVJfVkFMVUVfQVMoeCwgdWludDY0KTsKLSAgICBjYXNlIEZWX0RPVUJMRTogcmV0
dXJuIFZBTFVFX0FTKGRvdWJsZSkgPT0gT1RIRVJfVkFMVUVfQVMoeCwgZG91YmxlKTsKLSAgICBj
YXNlIEZWX1NUUklORzogcmV0dXJuIFZBTFVFX0FTKHN0cmluZykgPT0gT1RIRVJfVkFMVUVfQVMo
eCwgc3RyaW5nKTsKLSAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpOyByZXR1cm4gZmFsc2U7ICAv
LyB1bmtub3duIHR5cGUKLSAgfQotfQotCi1GbGFnVmFsdWUqIEZsYWdWYWx1ZTo6TmV3KCkgY29u
c3QgewotICBjb25zdCBjaGFyICp0eXBlID0gVHlwZU5hbWUoKTsKLSAgc3dpdGNoICh0eXBlXykg
ewotICAgIGNhc2UgRlZfQk9PTDogICByZXR1cm4gbmV3IEZsYWdWYWx1ZShuZXcgYm9vbChmYWxz
ZSksIHR5cGUsIHRydWUpOwotICAgIGNhc2UgRlZfSU5UMzI6ICByZXR1cm4gbmV3IEZsYWdWYWx1
ZShuZXcgaW50MzIoMCksIHR5cGUsIHRydWUpOwotICAgIGNhc2UgRlZfSU5UNjQ6ICByZXR1cm4g
bmV3IEZsYWdWYWx1ZShuZXcgaW50NjQoMCksIHR5cGUsIHRydWUpOwotICAgIGNhc2UgRlZfVUlO
VDY0OiByZXR1cm4gbmV3IEZsYWdWYWx1ZShuZXcgdWludDY0KDApLCB0eXBlLCB0cnVlKTsKLSAg
ICBjYXNlIEZWX0RPVUJMRTogcmV0dXJuIG5ldyBGbGFnVmFsdWUobmV3IGRvdWJsZSgwLjApLCB0
eXBlLCB0cnVlKTsKLSAgICBjYXNlIEZWX1NUUklORzogcmV0dXJuIG5ldyBGbGFnVmFsdWUobmV3
IHN0cmluZywgdHlwZSwgdHJ1ZSk7Ci0gICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTsgcmV0dXJu
IE5VTEw7ICAvLyB1bmtub3duIHR5cGUKLSAgfQotfQotCi12b2lkIEZsYWdWYWx1ZTo6Q29weUZy
b20oY29uc3QgRmxhZ1ZhbHVlJiB4KSB7Ci0gIGFzc2VydCh0eXBlXyA9PSB4LnR5cGVfKTsKLSAg
c3dpdGNoICh0eXBlXykgewotICAgIGNhc2UgRlZfQk9PTDogICBTRVRfVkFMVUVfQVMoYm9vbCwg
T1RIRVJfVkFMVUVfQVMoeCwgYm9vbCkpOyAgICAgIGJyZWFrOwotICAgIGNhc2UgRlZfSU5UMzI6
ICBTRVRfVkFMVUVfQVMoaW50MzIsIE9USEVSX1ZBTFVFX0FTKHgsIGludDMyKSk7ICAgIGJyZWFr
OwotICAgIGNhc2UgRlZfSU5UNjQ6ICBTRVRfVkFMVUVfQVMoaW50NjQsIE9USEVSX1ZBTFVFX0FT
KHgsIGludDY0KSk7ICAgIGJyZWFrOwotICAgIGNhc2UgRlZfVUlOVDY0OiBTRVRfVkFMVUVfQVMo
dWludDY0LCBPVEhFUl9WQUxVRV9BUyh4LCB1aW50NjQpKTsgIGJyZWFrOwotICAgIGNhc2UgRlZf
RE9VQkxFOiBTRVRfVkFMVUVfQVMoZG91YmxlLCBPVEhFUl9WQUxVRV9BUyh4LCBkb3VibGUpKTsg
IGJyZWFrOwotICAgIGNhc2UgRlZfU1RSSU5HOiBTRVRfVkFMVUVfQVMoc3RyaW5nLCBPVEhFUl9W
QUxVRV9BUyh4LCBzdHJpbmcpKTsgIGJyZWFrOwotICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7
ICAvLyB1bmtub3duIHR5cGUKLSAgfQotfQotCi1pbnQgRmxhZ1ZhbHVlOjpWYWx1ZVNpemUoKSBj
b25zdCB7Ci0gIGlmICh0eXBlXyA+IEZWX01BWF9JTkRFWCkgewotICAgIGFzc2VydChmYWxzZSk7
ICAvLyB1bmtub3duIHR5cGUKLSAgICByZXR1cm4gMDsKLSAgfQotICBzdGF0aWMgY29uc3QgdWlu
dDggdmFsdWVzaXplW10gPSB7Ci0gICAgc2l6ZW9mKGJvb2wpLAotICAgIHNpemVvZihpbnQzMiks
Ci0gICAgc2l6ZW9mKGludDY0KSwKLSAgICBzaXplb2YodWludDY0KSwKLSAgICBzaXplb2YoZG91
YmxlKSwKLSAgICBzaXplb2Yoc3RyaW5nKSwKLSAgfTsKLSAgcmV0dXJuIHZhbHVlc2l6ZVt0eXBl
X107Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDb21tYW5kTGluZUZsYWcKLS8vICAgIFRoaXMg
cmVwcmVzZW50cyBhIHNpbmdsZSBmbGFnLCBpbmNsdWRpbmcgaXRzIG5hbWUsIGRlc2NyaXB0aW9u
LAotLy8gICAgZGVmYXVsdCB2YWx1ZSwgYW5kIGN1cnJlbnQgdmFsdWUuICBNb3N0bHkgdGhpcyBz
ZXJ2ZXMgYXMgYQotLy8gICAgc3RydWN0LCB0aG91Z2ggaXQgYWxzbyBrbm93cyBob3cgdG8gcmVn
aXN0ZXIgaXRzZWxmLgotLy8gICAgICAgQWxsIENvbW1hbmRMaW5lRmxhZ3MgYXJlIG93bmVkIGJ5
IGEgKGV4YWN0bHkgb25lKQotLy8gICAgRmxhZ1JlZ2lzdHJ5LiAgSWYgeW91IHdpc2ggdG8gbW9k
aWZ5IGZpZWxkcyBpbiB0aGlzIGNsYXNzLCB5b3UKLS8vICAgIHNob3VsZCBhY3F1aXJlIHRoZSBG
bGFnUmVnaXN0cnkgbG9jayBmb3IgdGhlIHJlZ2lzdHJ5IHRoYXQgb3ducwotLy8gICAgdGhpcyBm
bGFnLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQ29tbWFuZExpbmVGbGFnIHsKLSBwdWJsaWM6
Ci0gIC8vIE5vdGU6IHdlIHRha2Ugb3ZlciBtZW1vcnktb3duZXJzaGlwIG9mIGN1cnJlbnRfdmFs
IGFuZCBkZWZhdWx0X3ZhbC4KLSAgQ29tbWFuZExpbmVGbGFnKGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IGNoYXIqIGhlbHAsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAg
RmxhZ1ZhbHVlKiBjdXJyZW50X3ZhbCwgRmxhZ1ZhbHVlKiBkZWZhdWx0X3ZhbCk7Ci0gIH5Db21t
YW5kTGluZUZsYWcoKTsKLQotICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbmFt
ZV87IH0KLSAgY29uc3QgY2hhciogaGVscCgpIGNvbnN0IHsgcmV0dXJuIGhlbHBfOyB9Ci0gIGNv
bnN0IGNoYXIqIGZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gZmlsZV87IH0KLSAgY29uc3QgY2hh
ciogQ2xlYW5GaWxlTmFtZSgpIGNvbnN0OyAgLy8gbml4ZXMgaXJyZWxldmFudCBwcmVmaXggc3Vj
aCBhcyBob21lZGlyCi0gIHN0cmluZyBjdXJyZW50X3ZhbHVlKCkgY29uc3QgeyByZXR1cm4gY3Vy
cmVudF8tPlRvU3RyaW5nKCk7IH0KLSAgc3RyaW5nIGRlZmF1bHRfdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBkZWZ2YWx1ZV8tPlRvU3RyaW5nKCk7IH0KLSAgY29uc3QgY2hhciogdHlwZV9uYW1lKCkg
Y29uc3QgeyByZXR1cm4gZGVmdmFsdWVfLT5UeXBlTmFtZSgpOyB9Ci0gIFZhbGlkYXRlRm5Qcm90
byB2YWxpZGF0ZV9mdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlX2ZuX3Byb3RvXzsg
fQotICBjb25zdCB2b2lkKiBmbGFnX3B0cigpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfLT52YWx1
ZV9idWZmZXJfOyB9Ci0KLSAgdm9pZCBGaWxsQ29tbWFuZExpbmVGbGFnSW5mbyhzdHJ1Y3QgQ29t
bWFuZExpbmVGbGFnSW5mbyogcmVzdWx0KTsKLQotICAvLyBJZiB2YWxpZGF0ZV9mbl9wcm90b18g
aXMgbm9uLU5VTEwsIGNhbGxzIGl0IG9uIHZhbHVlLCByZXR1cm5zIHJlc3VsdC4KLSAgYm9vbCBW
YWxpZGF0ZShjb25zdCBGbGFnVmFsdWUmIHZhbHVlKSBjb25zdDsKLSAgYm9vbCBWYWxpZGF0ZUN1
cnJlbnQoKSBjb25zdCB7IHJldHVybiBWYWxpZGF0ZSgqY3VycmVudF8pOyB9Ci0KLSBwcml2YXRl
OgotICAvLyBmb3IgU2V0RmxhZ0xvY2tlZCgpIGFuZCBzZXR0aW5nIGZsYWdzX2J5X3B0cl8KLSAg
ZnJpZW5kIGNsYXNzIEZsYWdSZWdpc3RyeTsKLSAgZnJpZW5kIGNsYXNzIEdGTEFHU19OQU1FU1BB
Q0U6OkZsYWdTYXZlckltcGw7ICAvLyBmb3IgY2xvbmluZyB0aGUgdmFsdWVzCi0gIC8vIHNldCB2
YWxpZGF0ZV9mbgotICBmcmllbmQgYm9vbCBBZGRGbGFnVmFsaWRhdG9yKGNvbnN0IHZvaWQqLCBW
YWxpZGF0ZUZuUHJvdG8pOwotCi0gIC8vIFRoaXMgY29waWVzIGFsbCB0aGUgbm9uLWNvbnN0IG1l
bWJlcnM6IG1vZGlmaWVkLCBwcm9jZXNzZWQsIGRlZnZhbHVlLCBldGMuCi0gIHZvaWQgQ29weUZy
b20oY29uc3QgQ29tbWFuZExpbmVGbGFnJiBzcmMpOwotCi0gIHZvaWQgVXBkYXRlTW9kaWZpZWRC
aXQoKTsKLQotICBjb25zdCBjaGFyKiBjb25zdCBuYW1lXzsgICAgIC8vIEZsYWcgbmFtZQotICBj
b25zdCBjaGFyKiBjb25zdCBoZWxwXzsgICAgIC8vIEhlbHAgbWVzc2FnZQotICBjb25zdCBjaGFy
KiBjb25zdCBmaWxlXzsgICAgIC8vIFdoaWNoIGZpbGUgZGlkIHRoaXMgY29tZSBmcm9tPwotICBi
b29sIG1vZGlmaWVkXzsgICAgICAgICAgICAgIC8vIFNldCBhZnRlciBkZWZhdWx0IGFzc2lnbm1l
bnQ/Ci0gIEZsYWdWYWx1ZSogZGVmdmFsdWVfOyAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZSBmb3Ig
ZmxhZwotICBGbGFnVmFsdWUqIGN1cnJlbnRfOyAgICAgICAgIC8vIEN1cnJlbnQgdmFsdWUgZm9y
IGZsYWcKLSAgLy8gVGhpcyBpcyBhIGNhc3RlZCwgJ2dlbmVyaWMnIHZlcnNpb24gb2YgdmFsaWRh
dGVfZm4sIHdoaWNoIGFjdHVhbGx5Ci0gIC8vIHRha2VzIGEgZmxhZy12YWx1ZSBhcyBhbiBhcmcg
KHZvaWQgKCp2YWxpZGF0ZV9mbikoYm9vbCksIHNheSkuCi0gIC8vIFdoZW4gd2UgcGFzcyB0aGlz
IHRvIGN1cnJlbnRfLT5WYWxpZGF0ZSgpLCBpdCB3aWxsIGNhc3QgaXQgYmFjayB0bwotICAvLyB0
aGUgcHJvcGVyIHR5cGUuICBUaGlzIG1heSBiZSBOVUxMIHRvIG1lYW4gd2UgaGF2ZSBubyB2YWxp
ZGF0ZV9mbi4KLSAgVmFsaWRhdGVGblByb3RvIHZhbGlkYXRlX2ZuX3Byb3RvXzsKLQotICBDb21t
YW5kTGluZUZsYWcoY29uc3QgQ29tbWFuZExpbmVGbGFnJik7ICAgLy8gbm8gY29weWluZyEKLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgQ29tbWFuZExpbmVGbGFnJik7Ci19OwotCi1Db21tYW5kTGlu
ZUZsYWc6OkNvbW1hbmRMaW5lRmxhZyhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBoZWxw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnVmFsdWUqIGN1cnJlbnRfdmFs
LCBGbGFnVmFsdWUqIGRlZmF1bHRfdmFsKQotICAgIDogbmFtZV8obmFtZSksIGhlbHBfKGhlbHAp
LCBmaWxlXyhmaWxlbmFtZSksIG1vZGlmaWVkXyhmYWxzZSksCi0gICAgICBkZWZ2YWx1ZV8oZGVm
YXVsdF92YWwpLCBjdXJyZW50XyhjdXJyZW50X3ZhbCksIHZhbGlkYXRlX2ZuX3Byb3RvXyhOVUxM
KSB7Ci19Ci0KLUNvbW1hbmRMaW5lRmxhZzo6fkNvbW1hbmRMaW5lRmxhZygpIHsKLSAgZGVsZXRl
IGN1cnJlbnRfOwotICBkZWxldGUgZGVmdmFsdWVfOwotfQotCi1jb25zdCBjaGFyKiBDb21tYW5k
TGluZUZsYWc6OkNsZWFuRmlsZU5hbWUoKSBjb25zdCB7Ci0gIC8vIENvbXB1dGUgdG9wLWxldmVs
IGRpcmVjdG9yeSAmIGZpbGUgdGhhdCB0aGlzIGFwcGVhcnMgaW4KLSAgLy8gc2VhcmNoIGZ1bGwg
cGF0aCBiYWNrd2FyZHMuCi0gIC8vIFN0b3AgZ29pbmcgYmFja3dhcmRzIGF0IGtSb290RGlyOyBh
bmQgc2tpcCBieSB0aGUgZmlyc3Qgc2xhc2guCi0gIHN0YXRpYyBjb25zdCBjaGFyIGtSb290RGly
W10gPSAiIjsgICAgLy8gY2FuIHNldCB0aGlzIHRvIHJvb3QgZGlyZWN0b3J5LAotCi0gIGlmIChz
aXplb2Yoa1Jvb3REaXIpLTEgPT0gMCkgICAgICAgICAgLy8gbm8gcHJlZml4IHRvIHN0cmlwCi0g
ICAgcmV0dXJuIGZpbGVuYW1lKCk7Ci0KLSAgY29uc3QgY2hhciogY2xlYW5fbmFtZSA9IGZpbGVu
YW1lKCkgKyBzdHJsZW4oZmlsZW5hbWUoKSkgLSAxOwotICB3aGlsZSAoIGNsZWFuX25hbWUgPiBm
aWxlbmFtZSgpICkgewotICAgIGlmICgqY2xlYW5fbmFtZSA9PSBQQVRIX1NFUEFSQVRPUikgewot
ICAgICAgaWYgKHN0cm5jbXAoY2xlYW5fbmFtZSwga1Jvb3REaXIsIHNpemVvZihrUm9vdERpcikt
MSkgPT0gMCkgewotICAgICAgICBjbGVhbl9uYW1lICs9IHNpemVvZihrUm9vdERpciktMTsgICAg
Ly8gcGFzdCByb290LWRpcgotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgLS1j
bGVhbl9uYW1lOwotICB9Ci0gIHdoaWxlICggKmNsZWFuX25hbWUgPT0gUEFUSF9TRVBBUkFUT1Ig
KSArK2NsZWFuX25hbWU7ICAvLyBTa2lwIGFueSBzbGFzaGVzCi0gIHJldHVybiBjbGVhbl9uYW1l
OwotfQotCi12b2lkIENvbW1hbmRMaW5lRmxhZzo6RmlsbENvbW1hbmRMaW5lRmxhZ0luZm8oCi0g
ICAgQ29tbWFuZExpbmVGbGFnSW5mbyogcmVzdWx0KSB7Ci0gIHJlc3VsdC0+bmFtZSA9IG5hbWUo
KTsKLSAgcmVzdWx0LT50eXBlID0gdHlwZV9uYW1lKCk7Ci0gIHJlc3VsdC0+ZGVzY3JpcHRpb24g
PSBoZWxwKCk7Ci0gIHJlc3VsdC0+Y3VycmVudF92YWx1ZSA9IGN1cnJlbnRfdmFsdWUoKTsKLSAg
cmVzdWx0LT5kZWZhdWx0X3ZhbHVlID0gZGVmYXVsdF92YWx1ZSgpOwotICByZXN1bHQtPmZpbGVu
YW1lID0gQ2xlYW5GaWxlTmFtZSgpOwotICBVcGRhdGVNb2RpZmllZEJpdCgpOwotICByZXN1bHQt
PmlzX2RlZmF1bHQgPSAhbW9kaWZpZWRfOwotICByZXN1bHQtPmhhc192YWxpZGF0b3JfZm4gPSB2
YWxpZGF0ZV9mdW5jdGlvbigpICE9IE5VTEw7Ci0gIHJlc3VsdC0+ZmxhZ19wdHIgPSBmbGFnX3B0
cigpOwotfQotCi12b2lkIENvbW1hbmRMaW5lRmxhZzo6VXBkYXRlTW9kaWZpZWRCaXQoKSB7Ci0g
IC8vIFVwZGF0ZSB0aGUgIm1vZGlmaWVkIiBiaXQgaW4gY2FzZSBzb21lYm9keSBieXBhc3NlZCB0
aGUKLSAgLy8gRmxhZ3MgQVBJIGFuZCB3cm90ZSBkaXJlY3RseSB0aHJvdWdoIHRoZSBGTEFHU19u
YW1lIHZhcmlhYmxlLgotICBpZiAoIW1vZGlmaWVkXyAmJiAhY3VycmVudF8tPkVxdWFsKCpkZWZ2
YWx1ZV8pKSB7Ci0gICAgbW9kaWZpZWRfID0gdHJ1ZTsKLSAgfQotfQotCi12b2lkIENvbW1hbmRM
aW5lRmxhZzo6Q29weUZyb20oY29uc3QgQ29tbWFuZExpbmVGbGFnJiBzcmMpIHsKLSAgLy8gTm90
ZSB3ZSBvbmx5IGNvcHkgdGhlIG5vbi1jb25zdCBtZW1iZXJzOyBvdGhlcnMgYXJlIGZpeGVkIGF0
IGNvbnN0cnVjdCB0aW1lCi0gIGlmIChtb2RpZmllZF8gIT0gc3JjLm1vZGlmaWVkXykgbW9kaWZp
ZWRfID0gc3JjLm1vZGlmaWVkXzsKLSAgaWYgKCFjdXJyZW50Xy0+RXF1YWwoKnNyYy5jdXJyZW50
XykpIGN1cnJlbnRfLT5Db3B5RnJvbSgqc3JjLmN1cnJlbnRfKTsKLSAgaWYgKCFkZWZ2YWx1ZV8t
PkVxdWFsKCpzcmMuZGVmdmFsdWVfKSkgZGVmdmFsdWVfLT5Db3B5RnJvbSgqc3JjLmRlZnZhbHVl
Xyk7Ci0gIGlmICh2YWxpZGF0ZV9mbl9wcm90b18gIT0gc3JjLnZhbGlkYXRlX2ZuX3Byb3RvXykK
LSAgICB2YWxpZGF0ZV9mbl9wcm90b18gPSBzcmMudmFsaWRhdGVfZm5fcHJvdG9fOwotfQotCi1i
b29sIENvbW1hbmRMaW5lRmxhZzo6VmFsaWRhdGUoY29uc3QgRmxhZ1ZhbHVlJiB2YWx1ZSkgY29u
c3QgewotCi0gIGlmICh2YWxpZGF0ZV9mdW5jdGlvbigpID09IE5VTEwpCi0gICAgcmV0dXJuIHRy
dWU7Ci0gIGVsc2UKLSAgICByZXR1cm4gdmFsdWUuVmFsaWRhdGUobmFtZSgpLCB2YWxpZGF0ZV9m
dW5jdGlvbigpKTsKLX0KLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRmxhZ1JlZ2lzdHJ5Ci0vLyAg
ICBBIEZsYWdSZWdpc3RyeSBzaW5nbGV0b24gb2JqZWN0IGhvbGRzIGFsbCBmbGFnIG9iamVjdHMg
aW5kZXhlZAotLy8gICAgYnkgdGhlaXIgbmFtZXMgc28gdGhhdCBpZiB5b3Uga25vdyBhIGZsYWcn
cyBuYW1lIChhcyBhIEMKLS8vICAgIHN0cmluZyksIHlvdSBjYW4gYWNjZXNzIG9yIHNldCBpdC4g
IElmIHRoZSBmdW5jdGlvbiBpcyBuYW1lZAotLy8gICAgRm9vTG9ja2VkKCksIHlvdSBtdXN0IG93
biB0aGUgcmVnaXN0cnkgbG9jayBiZWZvcmUgY2FsbGluZwotLy8gICAgdGhlIGZ1bmN0aW9uOyBv
dGhlcndpc2UsIHlvdSBzaG91bGQgKm5vdCogaG9sZCB0aGUgbG9jaywgYW5kCi0vLyAgICB0aGUg
ZnVuY3Rpb24gd2lsbCBhY3F1aXJlIGl0IGl0c2VsZiBpZiBuZWVkZWQuCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1zdHJ1Y3QgU3RyaW5nQ21wIHsgIC8vIFVzZWQgYnkgdGhlIEZsYWdSZWdpc3RyeSBtYXAg
Y2xhc3MgdG8gY29tcGFyZSBjaGFyKidzCi0gIGJvb2wgb3BlcmF0b3IoKSAoY29uc3QgY2hhciog
czEsIGNvbnN0IGNoYXIqIHMyKSBjb25zdCB7Ci0gICAgcmV0dXJuIChzdHJjbXAoczEsIHMyKSA8
IDApOwotICB9Ci19OwotCi0KLWNsYXNzIEZsYWdSZWdpc3RyeSB7Ci0gcHVibGljOgotICBGbGFn
UmVnaXN0cnkoKSB7Ci0gIH0KLSAgfkZsYWdSZWdpc3RyeSgpIHsKLSAgICAvLyBOb3QgdXNpbmcg
U1RMRGVsZXRlRWxlbWVudHMgYXMgdGhhdCByZXNpZGVzIGluIHV0aWwgYW5kIHRoaXMKLSAgICAv
LyBjbGFzcyBpcyBiYXNlLgotICAgIGZvciAoRmxhZ01hcDo6aXRlcmF0b3IgcCA9IGZsYWdzXy5i
ZWdpbigpLCBlID0gZmxhZ3NfLmVuZCgpOyBwICE9IGU7ICsrcCkgewotICAgICAgQ29tbWFuZExp
bmVGbGFnKiBmbGFnID0gcC0+c2Vjb25kOwotICAgICAgZGVsZXRlIGZsYWc7Ci0gICAgfQotICB9
Ci0KLSAgc3RhdGljIHZvaWQgRGVsZXRlR2xvYmFsUmVnaXN0cnkoKSB7Ci0gICAgZGVsZXRlIGds
b2JhbF9yZWdpc3RyeV87Ci0gICAgZ2xvYmFsX3JlZ2lzdHJ5XyA9IE5VTEw7Ci0gIH0KLQotICAv
LyBTdG9yZSBhIGZsYWcgaW4gdGhpcyByZWdpc3RyeS4gIFRha2VzIG93bmVyc2hpcCBvZiB0aGUg
Z2l2ZW4gcG9pbnRlci4KLSAgdm9pZCBSZWdpc3RlckZsYWcoQ29tbWFuZExpbmVGbGFnKiBmbGFn
KTsKLQotICB2b2lkIExvY2soKSB7IGxvY2tfLkxvY2soKTsgfQotICB2b2lkIFVubG9jaygpIHsg
bG9ja18uVW5sb2NrKCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBmbGFnIG9iamVjdCBmb3IgdGhl
IHNwZWNpZmllZCBuYW1lLCBvciBOVUxMIGlmIG5vdCBmb3VuZC4KLSAgQ29tbWFuZExpbmVGbGFn
KiBGaW5kRmxhZ0xvY2tlZChjb25zdCBjaGFyKiBuYW1lKTsKLQotICAvLyBSZXR1cm5zIHRoZSBm
bGFnIG9iamVjdCB3aG9zZSBjdXJyZW50LXZhbHVlIGlzIHN0b3JlZCBhdCBmbGFnX3B0ci4KLSAg
Ly8gVGhhdCBpcywgZm9yIHdob20gY3VycmVudF8tPnZhbHVlX2J1ZmZlcl8gPT0gZmxhZ19wdHIK
LSAgQ29tbWFuZExpbmVGbGFnKiBGaW5kRmxhZ1ZpYVB0ckxvY2tlZChjb25zdCB2b2lkKiBmbGFn
X3B0cik7Ci0KLSAgLy8gQSBmYW5jaWVyIGZvcm0gb2YgRmluZEZsYWcgdGhhdCB3b3JrcyBjb3Jy
ZWN0bHkgaWYgbmFtZSBpcyBvZiB0aGUKLSAgLy8gZm9ybSBmbGFnPXZhbHVlLiAgSW4gdGhhdCBj
YXNlLCB3ZSBzZXQga2V5IHRvIHBvaW50IHRvIGZsYWcsIGFuZAotICAvLyBtb2RpZnkgdiB0byBw
b2ludCB0byB0aGUgdmFsdWUgKGlmIHByZXNlbnQpLCBhbmQgcmV0dXJuIHRoZSBmbGFnCi0gIC8v
IHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiB0aGUgZmxhZyBkb2VzIG5vdCBleGlzdCwgcmV0dXJu
cyBOVUxMCi0gIC8vIGFuZCBzZXRzIGVycm9yX21lc3NhZ2UuCi0gIENvbW1hbmRMaW5lRmxhZyog
U3BsaXRBcmd1bWVudExvY2tlZChjb25zdCBjaGFyKiBhcmd1bWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyoga2V5LCBjb25zdCBjaGFyKiogdiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyogZXJyb3JfbWVzc2Fn
ZSk7Ci0KLSAgLy8gU2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcuICBJZiB0aGUgZmxhZyB3YXMgc3Vj
Y2Vzc2Z1bGx5IHNldCB0bwotICAvLyB2YWx1ZSwgc2V0IG1zZyB0byBpbmRpY2F0ZSB0aGUgbmV3
IGZsYWctdmFsdWUsIGFuZCByZXR1cm4gdHJ1ZS4KLSAgLy8gT3RoZXJ3aXNlLCBzZXQgbXNnIHRv
IGluZGljYXRlIHRoZSBlcnJvciwgbGVhdmUgZmxhZyB1bmNoYW5nZWQsCi0gIC8vIGFuZCByZXR1
cm4gZmFsc2UuICBtc2cgY2FuIGJlIE5VTEwuCi0gIGJvb2wgU2V0RmxhZ0xvY2tlZChDb21tYW5k
TGluZUZsYWcqIGZsYWcsIGNvbnN0IGNoYXIqIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAg
RmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlLCBzdHJpbmcqIG1zZyk7Ci0KLSAgc3RhdGljIEZsYWdS
ZWdpc3RyeSogR2xvYmFsUmVnaXN0cnkoKTsgICAvLyByZXR1cm5zIGEgc2luZ2xldG9uIHJlZ2lz
dHJ5Ci0KLSBwcml2YXRlOgotICBmcmllbmQgY2xhc3MgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1Nh
dmVySW1wbDsgIC8vIHJlYWRzIGFsbCB0aGUgZmxhZ3MgaW4gb3JkZXIgdG8gY29weSB0aGVtCi0g
IGZyaWVuZCBjbGFzcyBDb21tYW5kTGluZUZsYWdQYXJzZXI7ICAgIC8vIGZvciBWYWxpZGF0ZUFs
bEZsYWdzCi0gIGZyaWVuZCB2b2lkIEdGTEFHU19OQU1FU1BBQ0U6OkdldEFsbEZsYWdzKHZlY3Rv
cjxDb21tYW5kTGluZUZsYWdJbmZvPiopOwotCi0gIC8vIFRoZSBtYXAgZnJvbSBuYW1lIHRvIGZs
YWcsIGZvciBGaW5kRmxhZ0xvY2tlZCgpLgotICB0eXBlZGVmIG1hcDxjb25zdCBjaGFyKiwgQ29t
bWFuZExpbmVGbGFnKiwgU3RyaW5nQ21wPiBGbGFnTWFwOwotICB0eXBlZGVmIEZsYWdNYXA6Oml0
ZXJhdG9yIEZsYWdJdGVyYXRvcjsKLSAgdHlwZWRlZiBGbGFnTWFwOjpjb25zdF9pdGVyYXRvciBG
bGFnQ29uc3RJdGVyYXRvcjsKLSAgRmxhZ01hcCBmbGFnc187Ci0KLSAgLy8gVGhlIG1hcCBmcm9t
IGN1cnJlbnQtdmFsdWUgcG9pbnRlciB0byBmbGFnLCBmbyBGaW5kRmxhZ1ZpYVB0ckxvY2tlZCgp
LgotICB0eXBlZGVmIG1hcDxjb25zdCB2b2lkKiwgQ29tbWFuZExpbmVGbGFnKj4gRmxhZ1B0ck1h
cDsKLSAgRmxhZ1B0ck1hcCBmbGFnc19ieV9wdHJfOwotCi0gIHN0YXRpYyBGbGFnUmVnaXN0cnkq
IGdsb2JhbF9yZWdpc3RyeV87ICAgLy8gYSBzaW5nbGV0b24gcmVnaXN0cnkKLQotICBNdXRleCBs
b2NrXzsKLSAgc3RhdGljIE11dGV4IGdsb2JhbF9yZWdpc3RyeV9sb2NrXzsKLQotICBzdGF0aWMg
dm9pZCBJbml0R2xvYmFsUmVnaXN0cnkoKTsKLQotICAvLyBEaXNhbGxvdwotICBGbGFnUmVnaXN0
cnkoY29uc3QgRmxhZ1JlZ2lzdHJ5Jik7Ci0gIEZsYWdSZWdpc3RyeSYgb3BlcmF0b3I9KGNvbnN0
IEZsYWdSZWdpc3RyeSYpOwotfTsKLQotY2xhc3MgRmxhZ1JlZ2lzdHJ5TG9jayB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBGbGFnUmVnaXN0cnlMb2NrKEZsYWdSZWdpc3RyeSogZnIpIDogZnJfKGZy
KSB7IGZyXy0+TG9jaygpOyB9Ci0gIH5GbGFnUmVnaXN0cnlMb2NrKCkgeyBmcl8tPlVubG9jaygp
OyB9Ci0gcHJpdmF0ZToKLSAgRmxhZ1JlZ2lzdHJ5ICpjb25zdCBmcl87Ci19OwotCi0KLXZvaWQg
RmxhZ1JlZ2lzdHJ5OjpSZWdpc3RlckZsYWcoQ29tbWFuZExpbmVGbGFnKiBmbGFnKSB7Ci0gIExv
Y2soKTsKLSAgcGFpcjxGbGFnSXRlcmF0b3IsIGJvb2w+IGlucyA9Ci0gICAgZmxhZ3NfLmluc2Vy
dChwYWlyPGNvbnN0IGNoYXIqLCBDb21tYW5kTGluZUZsYWcqPihmbGFnLT5uYW1lKCksIGZsYWcp
KTsKLSAgaWYgKGlucy5zZWNvbmQgPT0gZmFsc2UpIHsgICAvLyBtZWFucyB0aGUgbmFtZSB3YXMg
YWxyZWFkeSBpbiB0aGUgbWFwCi0gICAgaWYgKHN0cmNtcChpbnMuZmlyc3QtPnNlY29uZC0+Zmls
ZW5hbWUoKSwgZmxhZy0+ZmlsZW5hbWUoKSkgIT0gMCkgewotICAgICAgUmVwb3J0RXJyb3IoRElF
LCAiRVJST1I6IGZsYWcgJyVzJyB3YXMgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSAiCi0gICAgICAg
ICAgICAgICAgICAiKGluIGZpbGVzICclcycgYW5kICclcycpLlxuIiwKLSAgICAgICAgICAgICAg
ICAgIGZsYWctPm5hbWUoKSwKLSAgICAgICAgICAgICAgICAgIGlucy5maXJzdC0+c2Vjb25kLT5m
aWxlbmFtZSgpLAotICAgICAgICAgICAgICAgICAgZmxhZy0+ZmlsZW5hbWUoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgIFJlcG9ydEVycm9yKERJRSwgIkVSUk9SOiBzb21ldGhpbmcgd3Jvbmcgd2l0
aCBmbGFnICclcycgaW4gZmlsZSAnJXMnLiAgIgotICAgICAgICAgICAgICAgICAgIk9uZSBwb3Nz
aWJpbGl0eTogZmlsZSAnJXMnIGlzIGJlaW5nIGxpbmtlZCBib3RoIHN0YXRpY2FsbHkgIgotICAg
ICAgICAgICAgICAgICAgImFuZCBkeW5hbWljYWxseSBpbnRvIHRoaXMgZXhlY3V0YWJsZS5cbiIs
Ci0gICAgICAgICAgICAgICAgICBmbGFnLT5uYW1lKCksCi0gICAgICAgICAgICAgICAgICBmbGFn
LT5maWxlbmFtZSgpLCBmbGFnLT5maWxlbmFtZSgpKTsKLSAgICB9Ci0gIH0KLSAgLy8gQWxzbyBh
ZGQgdG8gdGhlIGZsYWdzX2J5X3B0cl8gbWFwLgotICBmbGFnc19ieV9wdHJfW2ZsYWctPmN1cnJl
bnRfLT52YWx1ZV9idWZmZXJfXSA9IGZsYWc7Ci0gIFVubG9jaygpOwotfQotCi1Db21tYW5kTGlu
ZUZsYWcqIEZsYWdSZWdpc3RyeTo6RmluZEZsYWdMb2NrZWQoY29uc3QgY2hhciogbmFtZSkgewot
ICBGbGFnQ29uc3RJdGVyYXRvciBpID0gZmxhZ3NfLmZpbmQobmFtZSk7Ci0gIGlmIChpID09IGZs
YWdzXy5lbmQoKSkgewotICAgIHJldHVybiBOVUxMOwotICB9IGVsc2UgewotICAgIHJldHVybiBp
LT5zZWNvbmQ7Ci0gIH0KLX0KLQotQ29tbWFuZExpbmVGbGFnKiBGbGFnUmVnaXN0cnk6OkZpbmRG
bGFnVmlhUHRyTG9ja2VkKGNvbnN0IHZvaWQqIGZsYWdfcHRyKSB7Ci0gIEZsYWdQdHJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGkgPSBmbGFnc19ieV9wdHJfLmZpbmQoZmxhZ19wdHIpOwotICBpZiAoaSA9
PSBmbGFnc19ieV9wdHJfLmVuZCgpKSB7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0gZWxzZSB7Ci0g
ICAgcmV0dXJuIGktPnNlY29uZDsKLSAgfQotfQotCi1Db21tYW5kTGluZUZsYWcqIEZsYWdSZWdp
c3RyeTo6U3BsaXRBcmd1bWVudExvY2tlZChjb25zdCBjaGFyKiBhcmcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcqIGtleSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
KiB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaW5nKiBlcnJvcl9tZXNzYWdlKSB7Ci0gIC8vIEZpbmQgdGhlIGZsYWcgb2JqZWN0IGZvciB0
aGlzIG9wdGlvbgotICBjb25zdCBjaGFyKiBmbGFnX25hbWU7Ci0gIGNvbnN0IGNoYXIqIHZhbHVl
ID0gc3RyY2hyKGFyZywgJz0nKTsKLSAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICBrZXktPmFz
c2lnbihhcmcpOwotICAgICp2ID0gTlVMTDsKLSAgfSBlbHNlIHsKLSAgICAvLyBTdHJpcCBvdXQg
dGhlICI9dmFsdWUiIHBvcnRpb24gZnJvbSBhcmcKLSAgICBrZXktPmFzc2lnbihhcmcsIHZhbHVl
LWFyZyk7Ci0gICAgKnYgPSArK3ZhbHVlOyAgICAvLyBhZHZhbmNlIHBhc3QgdGhlICc9JwotICB9
Ci0gIGZsYWdfbmFtZSA9IGtleS0+Y19zdHIoKTsKLQotICBDb21tYW5kTGluZUZsYWcqIGZsYWcg
PSBGaW5kRmxhZ0xvY2tlZChmbGFnX25hbWUpOwotCi0gIGlmIChmbGFnID09IE5VTEwpIHsKLSAg
ICAvLyBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBmbGFnLW5hbWUsIHRoZW4gd2Ugc2hvdWxkIHJldHVy
biBhbiBlcnJvci4KLSAgICAvLyBUaGUgb25lIGV4Y2VwdGlvbiBpcyBpZiAxKSB0aGUgZmxhZy1u
YW1lIGlzICdub3gnLCAyKSB0aGVyZQotICAgIC8vIGV4aXN0cyBhIGZsYWcgbmFtZWQgJ3gnLCBh
bmQgMykgJ3gnIGlzIGEgYm9vbGVhbiBmbGFnLgotICAgIC8vIEluIHRoYXQgY2FzZSwgd2Ugd2Fu
dCB0byByZXR1cm4gZmxhZyAneCcuCi0gICAgaWYgKCEoZmxhZ19uYW1lWzBdID09ICduJyAmJiBm
bGFnX25hbWVbMV0gPT0gJ28nKSkgewotICAgICAgLy8gZmxhZy1uYW1lIGlzIG5vdCAnbm94Jywg
c28gd2UncmUgbm90IGluIHRoZSBleGNlcHRpb24gY2FzZS4KLSAgICAgICplcnJvcl9tZXNzYWdl
ID0gU3RyaW5nUHJpbnRmKCIlc3Vua25vd24gY29tbWFuZCBsaW5lIGZsYWcgJyVzJ1xuIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtFcnJvciwga2V5LT5jX3N0cigpKTsK
LSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmbGFnID0gRmluZEZsYWdMb2NrZWQoZmxh
Z19uYW1lKzIpOwotICAgIGlmIChmbGFnID09IE5VTEwpIHsKLSAgICAgIC8vIE5vIGZsYWcgbmFt
ZWQgJ3gnIGV4aXN0cywgc28gd2UncmUgbm90IGluIHRoZSBleGNlcHRpb24gY2FzZS4KLSAgICAg
ICplcnJvcl9tZXNzYWdlID0gU3RyaW5nUHJpbnRmKCIlc3Vua25vd24gY29tbWFuZCBsaW5lIGZs
YWcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtFcnJvciwg
a2V5LT5jX3N0cigpKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoc3RyY21w
KGZsYWctPnR5cGVfbmFtZSgpLCAiYm9vbCIpICE9IDApIHsKLSAgICAgIC8vICd4JyBleGlzdHMg
YnV0IGlzIG5vdCBib29sZWFuLCBzbyB3ZSdyZSBub3QgaW4gdGhlIGV4Y2VwdGlvbiBjYXNlLgot
ICAgICAgKmVycm9yX21lc3NhZ2UgPSBTdHJpbmdQcmludGYoCi0gICAgICAgICAgIiVzYm9vbGVh
biB2YWx1ZSAoJXMpIHNwZWNpZmllZCBmb3IgJXMgY29tbWFuZCBsaW5lIGZsYWdcbiIsCi0gICAg
ICAgICAga0Vycm9yLCBrZXktPmNfc3RyKCksIGZsYWctPnR5cGVfbmFtZSgpKTsKLSAgICAgIHJl
dHVybiBOVUxMOwotICAgIH0KLSAgICAvLyBXZSdyZSBpbiB0aGUgZXhjZXB0aW9uIGNhc2UhCi0g
ICAgLy8gTWFrZSB1cCBhIGZha2UgdmFsdWUgdG8gcmVwbGFjZSB0aGUgIm5vIiB3ZSBzdHJpcHBl
ZCBvdXQKLSAgICBrZXktPmFzc2lnbihmbGFnX25hbWUrMik7ICAgLy8gdGhlIG5hbWUgd2l0aG91
dCB0aGUgIm5vIgotICAgICp2ID0gIjAiOwotICB9Ci0KLSAgLy8gQXNzaWduIGEgdmFsdWUgaWYg
dGhpcyBpcyBhIGJvb2xlYW4gZmxhZwotICBpZiAoKnYgPT0gTlVMTCAmJiBzdHJjbXAoZmxhZy0+
dHlwZV9uYW1lKCksICJib29sIikgPT0gMCkgewotICAgICp2ID0gIjEiOyAgICAvLyB0aGUgLS1u
b3ggY2FzZSB3YXMgYWxyZWFkeSBoYW5kbGVkLCBzbyB0aGlzIGlzIHRoZSAtLXggY2FzZQotICB9
Ci0KLSAgcmV0dXJuIGZsYWc7Ci19Ci0KLWJvb2wgVHJ5UGFyc2VMb2NrZWQoY29uc3QgQ29tbWFu
ZExpbmVGbGFnKiBmbGFnLCBGbGFnVmFsdWUqIGZsYWdfdmFsdWUsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHZhbHVlLCBzdHJpbmcqIG1zZykgewotICAvLyBVc2UgdGVuYXRpdmVf
dmFsdWUsIG5vdCBmbGFnX3ZhbHVlLCB1bnRpbCB3ZSBrbm93IHZhbHVlIGlzIHZhbGlkLgotICBG
bGFnVmFsdWUqIHRlbnRhdGl2ZV92YWx1ZSA9IGZsYWdfdmFsdWUtPk5ldygpOwotICBpZiAoIXRl
bnRhdGl2ZV92YWx1ZS0+UGFyc2VGcm9tKHZhbHVlKSkgewotICAgIGlmIChtc2cpIHsKLSAgICAg
IFN0cmluZ0FwcGVuZEYobXNnLAotICAgICAgICAgICAgICAgICAgICAiJXNpbGxlZ2FsIHZhbHVl
ICclcycgc3BlY2lmaWVkIGZvciAlcyBmbGFnICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAg
IGtFcnJvciwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIGZsYWctPnR5cGVfbmFtZSgpLCBm
bGFnLT5uYW1lKCkpOwotICAgIH0KLSAgICBkZWxldGUgdGVudGF0aXZlX3ZhbHVlOwotICAgIHJl
dHVybiBmYWxzZTsKLSAgfSBlbHNlIGlmICghZmxhZy0+VmFsaWRhdGUoKnRlbnRhdGl2ZV92YWx1
ZSkpIHsKLSAgICBpZiAobXNnKSB7Ci0gICAgICBTdHJpbmdBcHBlbmRGKG1zZywKLSAgICAgICAg
ICAiJXNmYWlsZWQgdmFsaWRhdGlvbiBvZiBuZXcgdmFsdWUgJyVzJyBmb3IgZmxhZyAnJXMnXG4i
LAotICAgICAgICAgIGtFcnJvciwgdGVudGF0aXZlX3ZhbHVlLT5Ub1N0cmluZygpLmNfc3RyKCks
Ci0gICAgICAgICAgZmxhZy0+bmFtZSgpKTsKLSAgICB9Ci0gICAgZGVsZXRlIHRlbnRhdGl2ZV92
YWx1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0gZWxzZSB7Ci0gICAgZmxhZ192YWx1ZS0+Q29w
eUZyb20oKnRlbnRhdGl2ZV92YWx1ZSk7Ci0gICAgaWYgKG1zZykgewotICAgICAgU3RyaW5nQXBw
ZW5kRihtc2csICIlcyBzZXQgdG8gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGZsYWctPm5h
bWUoKSwgZmxhZ192YWx1ZS0+VG9TdHJpbmcoKS5jX3N0cigpKTsKLSAgICB9Ci0gICAgZGVsZXRl
IHRlbnRhdGl2ZV92YWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQotCi1ib29sIEZsYWdS
ZWdpc3RyeTo6U2V0RmxhZ0xvY2tlZChDb21tYW5kTGluZUZsYWcqIGZsYWcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsYWdTZXR0aW5nTW9kZSBzZXRfbW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyogbXNnKSB7Ci0gIGZsYWctPlVwZGF0ZU1vZGlm
aWVkQml0KCk7Ci0gIHN3aXRjaCAoc2V0X21vZGUpIHsKLSAgICBjYXNlIFNFVF9GTEFHU19WQUxV
RTogewotICAgICAgLy8gc2V0IG9yIG1vZGlmeSB0aGUgZmxhZydzIHZhbHVlCi0gICAgICBpZiAo
IVRyeVBhcnNlTG9ja2VkKGZsYWcsIGZsYWctPmN1cnJlbnRfLCB2YWx1ZSwgbXNnKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgZmxhZy0+bW9kaWZpZWRfID0gdHJ1ZTsKLSAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIFNFVF9GTEFHX0lGX0RFRkFVTFQ6IHsKLSAgICAgIC8vIHNl
dCB0aGUgZmxhZydzIHZhbHVlLCBidXQgb25seSBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgYnkgc29t
ZW9uZSBlbHNlCi0gICAgICBpZiAoIWZsYWctPm1vZGlmaWVkXykgewotICAgICAgICBpZiAoIVRy
eVBhcnNlTG9ja2VkKGZsYWcsIGZsYWctPmN1cnJlbnRfLCB2YWx1ZSwgbXNnKSkKLSAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZsYWctPm1vZGlmaWVkXyA9IHRydWU7Ci0gICAgICB9
IGVsc2UgewotICAgICAgICAqbXNnID0gU3RyaW5nUHJpbnRmKCIlcyBzZXQgdG8gJXMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWctPm5hbWUoKSwgZmxhZy0+Y3VycmVudF92YWx1
ZSgpLmNfc3RyKCkpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgU0VU
X0ZMQUdTX0RFRkFVTFQ6IHsKLSAgICAgIC8vIG1vZGlmeSB0aGUgZmxhZydzIGRlZmF1bHQtdmFs
dWUKLSAgICAgIGlmICghVHJ5UGFyc2VMb2NrZWQoZmxhZywgZmxhZy0+ZGVmdmFsdWVfLCB2YWx1
ZSwgbXNnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYgKCFmbGFnLT5tb2RpZmll
ZF8pIHsKLSAgICAgICAgLy8gTmVlZCB0byBzZXQgYm90aCBkZWZ2YWx1ZSAqYW5kKiBjdXJyZW50
LCBpbiB0aGlzIGNhc2UKLSAgICAgICAgVHJ5UGFyc2VMb2NrZWQoZmxhZywgZmxhZy0+Y3VycmVu
dF8sIHZhbHVlLCBOVUxMKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZh
dWx0OiB7Ci0gICAgICAvLyB1bmtub3duIHNldF9tb2RlCi0gICAgICBhc3NlcnQoZmFsc2UpOwot
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHJldHVybiB0cnVlOwotfQotCi0v
LyBHZXQgdGhlIHNpbmdsZXRvbiBGbGFnUmVnaXN0cnkgb2JqZWN0Ci1GbGFnUmVnaXN0cnkqIEZs
YWdSZWdpc3RyeTo6Z2xvYmFsX3JlZ2lzdHJ5XyA9IE5VTEw7Ci1NdXRleCBGbGFnUmVnaXN0cnk6
Omdsb2JhbF9yZWdpc3RyeV9sb2NrXyhNdXRleDo6TElOS0VSX0lOSVRJQUxJWkVEKTsKLQotRmxh
Z1JlZ2lzdHJ5KiBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCkgewotICBNdXRleExvY2sg
YWNxdWlyZV9sb2NrKCZnbG9iYWxfcmVnaXN0cnlfbG9ja18pOwotICBpZiAoIWdsb2JhbF9yZWdp
c3RyeV8pIHsKLSAgICBnbG9iYWxfcmVnaXN0cnlfID0gbmV3IEZsYWdSZWdpc3RyeTsKLSAgfQot
ICByZXR1cm4gZ2xvYmFsX3JlZ2lzdHJ5XzsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENvbW1h
bmRMaW5lRmxhZ1BhcnNlcgotLy8gICAgUGFyc2luZyBpcyBkb25lIGluIHR3byBzdGFnZXMuICBJ
biB0aGUgZmlyc3QsIHdlIGdvIHRocm91Z2gKLS8vICAgIGFyZ3YuICBGb3IgZXZlcnkgZmxhZy1s
aWtlIGFyZyB3ZSBjYW4gbWFrZSBzZW5zZSBvZiwgd2UgcGFyc2UKLS8vICAgIGl0IGFuZCBzZXQg
dGhlIGFwcHJvcHJpYXRlIEZMQUdTXyogdmFyaWFibGUuICBGb3IgZXZlcnkgZmxhZy0KLS8vICAg
IGxpa2UgYXJnIHdlIGNhbid0IG1ha2Ugc2Vuc2Ugb2YsIHdlIHN0b3JlIGl0IGluIGEgdmVjdG9y
LAotLy8gICAgYWxvbmcgd2l0aCBhbiBleHBsYW5hdGlvbiBvZiB0aGUgdHJvdWJsZS4gIEluIHN0
YWdlIDIsIHdlCi0vLyAgICBoYW5kbGUgdGhlICdyZXBvcnRpbmcnIGZsYWdzIGxpa2UgLS1oZWxw
IGFuZCAtLW1wbV92ZXJzaW9uLgotLy8gICAgKFRoaXMgaXMgdmlhIGEgY2FsbCB0byBIYW5kbGVD
b21tYW5kTGluZUhlbHBGbGFncygpLCBpbgotLy8gICAgZ2ZsYWdzX3JlcG9ydGluZy5jYy4pCi0v
LyAgICBBbiBvcHRpb25hbCBzdGFnZSAzIHByaW50cyBvdXQgdGhlIGVycm9yIG1lc3NhZ2VzLgot
Ly8gICAgICAgVGhpcyBpcyBhIGJpdCBvZiBhIHNpbXBsaWZpY2F0aW9uLiAgRm9yIGluc3RhbmNl
LCAtLWZsYWdmaWxlCi0vLyAgICBpcyBoYW5kbGVkIGFzIHNvb24gYXMgaXQncyBzZWVuIGluIHN0
YWdlIDEsIG5vdCBpbiBzdGFnZSAyLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQ29tbWFuZExp
bmVGbGFnUGFyc2VyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBhcmd1bWVudCBpcyB0aGUgZmxhZy1y
ZWdpc3RyeSB0byByZWdpc3RlciB0aGUgcGFyc2VkIGZsYWdzIGluCi0gIGV4cGxpY2l0IENvbW1h
bmRMaW5lRmxhZ1BhcnNlcihGbGFnUmVnaXN0cnkqIHJlZykgOiByZWdpc3RyeV8ocmVnKSB7fQot
ICB+Q29tbWFuZExpbmVGbGFnUGFyc2VyKCkge30KLQotICAvLyBTdGFnZSAxOiBFdmVyeSB0aW1l
IHRoaXMgaXMgY2FsbGVkLCBpdCByZWFkcyBhbGwgZmxhZ3MgaW4gYXJndi4KLSAgLy8gSG93ZXZl
ciwgaXQgaWdub3JlcyBhbGwgZmxhZ3MgdGhhdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldAot
ICAvLyBiZWZvcmUuICBUeXBpY2FsbHkgdGhpcyBpcyBvbmx5IGNhbGxlZCBvbmNlLCBzbyB0aGlz
ICdyZXBhcnNpbmcnCi0gIC8vIGJlaGF2aW9yIGlzbid0IGltcG9ydGFudC4gIEl0IGNhbiBiZSB1
c2VmdWwgd2hlbiB0cnlpbmcgdG8KLSAgLy8gcmVwYXJzZSBhZnRlciBsb2FkaW5nIGEgZGxsLCB0
aG91Z2guCi0gIHVpbnQzMiBQYXJzZU5ld0NvbW1hbmRMaW5lRmxhZ3MoaW50KiBhcmdjLCBjaGFy
KioqIGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKTsKLQotICAvLyBTdGFnZSAyOiBwcmludCByZXBv
cnRpbmcgaW5mbyBhbmQgZXhpdCwgaWYgcmVxdWVzdGVkLgotICAvLyBJbiBnZmxhZ3NfcmVwb3J0
aW5nLmNjOkhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzKCkuCi0KLSAgLy8gU3RhZ2UgMzogdmFs
aWRhdGUgYWxsIHRoZSBjb21tYW5kbGluZSBmbGFncyB0aGF0IGhhdmUgdmFsaWRhdG9ycwotICAv
LyByZWdpc3RlcmVkLgotICB2b2lkIFZhbGlkYXRlQWxsRmxhZ3MoKTsKLQotICAvLyBTdGFnZSA0
OiByZXBvcnQgYW55IGVycm9ycyBhbmQgcmV0dXJuIHRydWUgaWYgYW55IHdlcmUgZm91bmQuCi0g
IGJvb2wgUmVwb3J0RXJyb3JzKCk7Ci0KLSAgLy8gU2V0IGEgcGFydGljdWxhciBjb21tYW5kIGxp
bmUgb3B0aW9uLiAgIm5ld3ZhbCIgaXMgYSBzdHJpbmcKLSAgLy8gZGVzY3JpYmluZyB0aGUgbmV3
IHZhbHVlIHRoYXQgdGhlIG9wdGlvbiBoYXMgYmVlbiBzZXQgdG8uICBJZgotICAvLyBvcHRpb25f
bmFtZSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmFsaWQgb3B0aW9uIG5hbWUsIG9yIHZhbHVlIGlzIG5v
dAotICAvLyBhIHZhbGlkIHZhbHVlIGZvciBvcHRpb25fbmFtZSwgbmV3dmFsIGlzIGVtcHR5LiAg
RG9lcyByZWN1cnNpdmUKLSAgLy8gcHJvY2Vzc2luZyBmb3IgLS1mbGFnZmlsZSBhbmQgLS1mcm9t
ZW52LiAgUmV0dXJucyB0aGUgbmV3IHZhbHVlCi0gIC8vIGlmIGV2ZXJ5dGhpbmcgd2VudCBvaywg
b3IgZW1wdHktc3RyaW5nIGlmIG5vdC4gIChBY3R1YWxseSwgdGhlCi0gIC8vIHJldHVybi1zdHJp
bmcgY291bGQgaG9sZCBtYW55IGZsYWcvdmFsdWUgcGFpcnMgZHVlIHRvIC0tZmxhZ2ZpbGUuKQot
ICAvLyBOQjogTXVzdCBoYXZlIGNhbGxlZCByZWdpc3RyeV8tPkxvY2soKSBiZWZvcmUgY2FsbGlu
ZyB0aGlzIGZ1bmN0aW9uLgotICBzdHJpbmcgUHJvY2Vzc1NpbmdsZU9wdGlvbkxvY2tlZChDb21t
YW5kTGluZUZsYWcqIGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFn
U2V0dGluZ01vZGUgc2V0X21vZGUpOwotCi0gIC8vIFNldCBhIHdob2xlIGJhdGNoIG9mIGNvbW1h
bmQgbGluZSBvcHRpb25zIGFzIHNwZWNpZmllZCBieSBjb250ZW50ZGF0YSwKLSAgLy8gd2hpY2gg
aXMgaW4gZmxhZ2ZpbGUgZm9ybWF0IChhbmQgcHJvYmFibHkgaGFzIGJlZW4gcmVhZCBmcm9tIGEg
ZmxhZ2ZpbGUpLgotICAvLyBSZXR1cm5zIHRoZSBuZXcgdmFsdWUgaWYgZXZlcnl0aGluZyB3ZW50
IG9rLCBvciBlbXB0eS1zdHJpbmcgaWYKLSAgLy8gbm90LiAgKEFjdHVhbGx5LCB0aGUgcmV0dXJu
LXN0cmluZyBjb3VsZCBob2xkIG1hbnkgZmxhZy92YWx1ZQotICAvLyBwYWlycyBkdWUgdG8gLS1m
bGFnZmlsZS4pCi0gIC8vIE5COiBNdXN0IGhhdmUgY2FsbGVkIHJlZ2lzdHJ5Xy0+TG9jaygpIGJl
Zm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCi0gIHN0cmluZyBQcm9jZXNzT3B0aW9uc0Zyb21T
dHJpbmdMb2NrZWQoY29uc3Qgc3RyaW5nJiBjb250ZW50ZGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpOwotCi0gIC8v
IFRoZXNlIGFyZSB0aGUgJ3JlY3Vyc2l2ZScgZmxhZ3MsIGRlZmluZWQgYXQgdGhlIHRvcCBvZiB0
aGlzIGZpbGUuCi0gIC8vIFdoZW5ldmVyIHdlIHNlZSB0aGVzZSBmbGFncyBvbiB0aGUgY29tbWFu
ZGxpbmUsIHdlIG11c3QgdGFrZSBhY3Rpb24uCi0gIC8vIFRoZXNlIGFyZSBjYWxsZWQgYnkgUHJv
Y2Vzc1NpbmdsZU9wdGlvbkxvY2tlZCBhbmQsIHNpbWlsYXJseSwgcmV0dXJuCi0gIC8vIG5ldyB2
YWx1ZXMgaWYgZXZlcnl0aGluZyB3ZW50IG9rLCBvciB0aGUgZW1wdHktc3RyaW5nIGlmIG5vdC4K
LSAgc3RyaW5nIFByb2Nlc3NGbGFnZmlsZUxvY2tlZChjb25zdCBzdHJpbmcmIGZsYWd2YWwsIEZs
YWdTZXR0aW5nTW9kZSBzZXRfbW9kZSk7Ci0gIC8vIGRpZmYgZnJvbWVudi90cnlmcm9tZW52Ci0g
IHN0cmluZyBQcm9jZXNzRnJvbWVudkxvY2tlZChjb25zdCBzdHJpbmcmIGZsYWd2YWwsIEZsYWdT
ZXR0aW5nTW9kZSBzZXRfbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZXJyb3JzX2FyZV9mYXRhbCk7Ci0KLSBwcml2YXRlOgotICBGbGFnUmVnaXN0cnkqIGNvbnN0IHJl
Z2lzdHJ5XzsKLSAgbWFwPHN0cmluZywgc3RyaW5nPiBlcnJvcl9mbGFnc187ICAgICAgLy8gbWFw
IGZyb20gbmFtZSB0byBlcnJvciBtZXNzYWdlCi0gIC8vIFRoaXMgY291bGQgYmUgYSBzZXQ8c3Ry
aW5nPiwgYnV0IHdlIHJldXNlIHRoZSBtYXAgdG8gbWluaW1pemUgdGhlIC5vIHNpemUKLSAgbWFw
PHN0cmluZywgc3RyaW5nPiB1bmRlZmluZWRfbmFtZXNfOyAgLy8gLS1bZmxhZ10gbmFtZSB3YXMg
bm90IHJlZ2lzdGVyZWQKLX07Ci0KLQotLy8gUGFyc2UgYSBsaXN0IG9mIChjb21tYS1zZXBhcmF0
ZWQpIGZsYWdzLgotc3RhdGljIHZvaWQgUGFyc2VGbGFnTGlzdChjb25zdCBjaGFyKiB2YWx1ZSwg
dmVjdG9yPHN0cmluZz4qIGZsYWdzKSB7Ci0gIGZvciAoY29uc3QgY2hhciAqcCA9IHZhbHVlOyBw
ICYmICpwOyB2YWx1ZSA9IHApIHsKLSAgICBwID0gc3RyY2hyKHZhbHVlLCAnLCcpOwotICAgIHNp
emVfdCBsZW47Ci0gICAgaWYgKHApIHsKLSAgICAgIGxlbiA9IHAgLSB2YWx1ZTsKLSAgICAgIHAr
KzsKLSAgICB9IGVsc2UgewotICAgICAgbGVuID0gc3RybGVuKHZhbHVlKTsKLSAgICB9Ci0KLSAg
ICBpZiAobGVuID09IDApCi0gICAgICBSZXBvcnRFcnJvcihESUUsICJFUlJPUjogZW1wdHkgZmxh
Z2xpc3QgZW50cnlcbiIpOwotICAgIGlmICh2YWx1ZVswXSA9PSAnLScpCi0gICAgICBSZXBvcnRF
cnJvcihESUUsICJFUlJPUjogZmxhZyBcIiUqc1wiIGJlZ2lucyB3aXRoICctJ1xuIiwgbGVuLCB2
YWx1ZSk7Ci0KLSAgICBmbGFncy0+cHVzaF9iYWNrKHN0cmluZyh2YWx1ZSwgbGVuKSk7Ci0gIH0K
LX0KLQotLy8gU25hcmYgYW4gZW50aXJlIGZpbGUgaW50byBhIEMrKyBzdHJpbmcuICBUaGlzIGlz
IGp1c3Qgc28gdGhhdCB3ZQotLy8gY2FuIGRvIGFsbCB0aGUgSS9PIGluIG9uZSBwbGFjZSBhbmQg
bm90IHdvcnJ5IGFib3V0IGl0IGV2ZXJ5d2hlcmUuCi0vLyBQbHVzLCBpdCdzIGNvbnZlbmllbnQg
dG8gaGF2ZSB0aGUgd2hvbGUgZmlsZSBjb250ZW50cyBhdCBoYW5kLgotLy8gQWRkcyBhIG5ld2xp
bmUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KLSNkZWZpbmUgUEZBVEFMKHMpICBkbyB7IHBlcnJv
cihzKTsgZ2ZsYWdzX2V4aXRmdW5jKDEpOyB9IHdoaWxlICgwKQotCi1zdGF0aWMgc3RyaW5nIFJl
YWRGaWxlSW50b1N0cmluZyhjb25zdCBjaGFyKiBmaWxlbmFtZSkgewotICBjb25zdCBpbnQga0J1
ZlNpemUgPSA4MDkyOwotICBjaGFyIGJ1ZmZlcltrQnVmU2l6ZV07Ci0gIHN0cmluZyBzOwotICBG
SUxFKiBmcDsKLSAgaWYgKChlcnJubyA9IFNhZmVGT3BlbigmZnAsIGZpbGVuYW1lLCAiciIpKSAh
PSAwKSBQRkFUQUwoZmlsZW5hbWUpOwotICBzaXplX3QgbjsKLSAgd2hpbGUgKCAobj1mcmVhZChi
dWZmZXIsIDEsIGtCdWZTaXplLCBmcCkpID4gMCApIHsKLSAgICBpZiAoZmVycm9yKGZwKSkgIFBG
QVRBTChmaWxlbmFtZSk7Ci0gICAgcy5hcHBlbmQoYnVmZmVyLCBuKTsKLSAgfQotICBmY2xvc2Uo
ZnApOwotICByZXR1cm4gczsKLX0KLQotdWludDMyIENvbW1hbmRMaW5lRmxhZ1BhcnNlcjo6UGFy
c2VOZXdDb21tYW5kTGluZUZsYWdzKGludCogYXJnYywgY2hhcioqKiBhcmd2LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVtb3Zl
X2ZsYWdzKSB7Ci0gIGNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IHN0cnJjaHIoKCphcmd2KVsw
XSwgUEFUSF9TRVBBUkFUT1IpOyAgIC8vIG5peCBwYXRoCi0gIHByb2dyYW1fbmFtZSA9IChwcm9n
cmFtX25hbWUgPT0gTlVMTCA/ICgqYXJndilbMF0gOiBwcm9ncmFtX25hbWUrMSk7Ci0KLSAgaW50
IGZpcnN0X25vbm9wdCA9ICphcmdjOyAgICAgICAgLy8gZm9yIG5vbi1vcHRpb25zIG1vdmVkIHRv
IHRoZSBlbmQKLQotICByZWdpc3RyeV8tPkxvY2soKTsKLSAgZm9yIChpbnQgaSA9IDE7IGkgPCBm
aXJzdF9ub25vcHQ7IGkrKykgewotICAgIGNoYXIqIGFyZyA9ICgqYXJndilbaV07Ci0KLSAgICAv
LyBMaWtlIGdldG9wdCgpLCB3ZSBwZXJtdXRlIG5vbi1vcHRpb24gZmxhZ3MgdG8gYmUgYXQgdGhl
IGVuZC4KLSAgICBpZiAoYXJnWzBdICE9ICctJyB8fCAgICAgICAgICAgLy8gbXVzdCBiZSBhIHBy
b2dyYW0gYXJndW1lbnQKLSAgICAgICAgKGFyZ1swXSA9PSAnLScgJiYgYXJnWzFdID09ICdcMCcp
KSB7ICAvLyAiLSIgaXMgYW4gYXJndW1lbnQsIG5vdCBhIGZsYWcKLSAgICAgIG1lbW1vdmUoKCph
cmd2KSArIGksICgqYXJndikgKyBpKzEsICgqYXJnYyAtIChpKzEpKSAqIHNpemVvZigoKmFyZ3Yp
W2ldKSk7Ci0gICAgICAoKmFyZ3YpWyphcmdjLTFdID0gYXJnOyAgICAgIC8vIHdlIGdvIGxhc3QK
LSAgICAgIGZpcnN0X25vbm9wdC0tOyAgICAgICAgICAgICAgLy8gd2UndmUgYmVlbiBwdXNoZWQg
b250byB0aGUgc3RhY2sKLSAgICAgIGktLTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8g
dW5kbyB0aGUgaSsrIGluIHRoZSBsb29wCi0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoYXJnWzBdID09ICctJykgYXJnKys7ICAgICAgLy8gYWxsb3cgbGVhZGluZyAnLScKLSAgICBp
ZiAoYXJnWzBdID09ICctJykgYXJnKys7ICAgICAgLy8gb3IgbGVhZGluZyAnLS0nCi0KLSAgICAv
LyAtLSBhbG9uZSBtZWFucyB3aGF0IGl0IGRvZXMgZm9yIEdOVTogc3RvcCBvcHRpb25zIHBhcnNp
bmcKLSAgICBpZiAoKmFyZyA9PSAnXDAnKSB7Ci0gICAgICBmaXJzdF9ub25vcHQgPSBpKzE7Ci0g
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICAvLyBGaW5kIHRoZSBmbGFnIG9iamVjdCBmb3IgdGhp
cyBvcHRpb24KLSAgICBzdHJpbmcga2V5OwotICAgIGNvbnN0IGNoYXIqIHZhbHVlOwotICAgIHN0
cmluZyBlcnJvcl9tZXNzYWdlOwotICAgIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9IHJlZ2lzdHJ5
Xy0+U3BsaXRBcmd1bWVudExvY2tlZChhcmcsICZrZXksICZ2YWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX21lc3Nh
Z2UpOwotICAgIGlmIChmbGFnID09IE5VTEwpIHsKLSAgICAgIHVuZGVmaW5lZF9uYW1lc19ba2V5
XSA9ICIiOyAgICAvLyB2YWx1ZSBpc24ndCBhY3R1YWxseSB1c2VkCi0gICAgICBlcnJvcl9mbGFn
c19ba2V5XSA9IGVycm9yX21lc3NhZ2U7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBp
ZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgLy8gQm9vbGVhbiBvcHRpb25zIGFyZSBhbHdheXMg
YXNzaWduZWQgYSB2YWx1ZSBieSBTcGxpdEFyZ3VtZW50TG9ja2VkKCkKLSAgICAgIGFzc2VydChz
dHJjbXAoZmxhZy0+dHlwZV9uYW1lKCksICJib29sIikgIT0gMCk7Ci0gICAgICBpZiAoaSsxID49
IGZpcnN0X25vbm9wdCkgewotICAgICAgICAvLyBUaGlzIGZsYWcgbmVlZHMgYSB2YWx1ZSwgYnV0
IHRoZXJlIGlzIG5vdGhpbmcgYXZhaWxhYmxlCi0gICAgICAgIGVycm9yX2ZsYWdzX1trZXldID0g
KHN0cmluZyhrRXJyb3IpICsgImZsYWcgJyIgKyAoKmFyZ3YpW2ldICsgIiciCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsgIiBpcyBtaXNzaW5nIGl0cyBhcmd1bWVudCIpOwotICAgICAg
ICBpZiAoZmxhZy0+aGVscCgpICYmIGZsYWctPmhlbHAoKVswXSA+ICdcMDAxJykgewotICAgICAg
ICAgIC8vIEJlIHVzZWZ1bCBpbiBjYXNlIHdlIGhhdmUgYSBub24tc3RyaXBwZWQgZGVzY3JpcHRp
b24uCi0gICAgICAgICAgZXJyb3JfZmxhZ3NfW2tleV0gKz0gc3RyaW5nKCI7IGZsYWcgZGVzY3Jp
cHRpb246ICIpICsgZmxhZy0+aGVscCgpOwotICAgICAgICB9Ci0gICAgICAgIGVycm9yX2ZsYWdz
X1trZXldICs9ICJcbiI7Ci0gICAgICAgIGJyZWFrOyAgICAvLyB3ZSB0cmVhdCB0aGlzIGFzIGFu
IHVucmVjb3ZlcmFibGUgZXJyb3IKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHZhbHVlID0gKCph
cmd2KVsrK2ldOyAgICAgICAgICAgICAgICAgICAvLyByZWFkIG5leHQgYXJnIGZvciB2YWx1ZQot
Ci0gICAgICAgIC8vIEhldXJpc3RpYyB0byBkZXRlY3QgdGhlIGNhc2Ugd2hlcmUgc29tZW9uZSB0
cmVhdHMgYSBzdHJpbmcgYXJnCi0gICAgICAgIC8vIGxpa2UgYSBib29sOgotICAgICAgICAvLyAt
LW15X3N0cmluZ192YXIgLS1mb289YmFyCi0gICAgICAgIC8vIFdlIGxvb2sgZm9yIGEgZmxhZyBv
ZiBzdHJpbmcgdHlwZSwgd2hvc2UgdmFsdWUgYmVnaW5zIHdpdGggYQotICAgICAgICAvLyBkYXNo
LCBhbmQgd2hlcmUgdGhlIGZsYWctbmFtZSBhbmQgdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhCi0g
ICAgICAgIC8vIHNwYWNlIHJhdGhlciB0aGFuIGFuICc9Jy4KLSAgICAgICAgLy8gVG8gYXZvaWQg
ZmFsc2UgcG9zaXRpdmVzLCB3ZSBhbHNvIHJlcXVpcmUgdGhlIHdvcmQgInRydWUiCi0gICAgICAg
IC8vIG9yICJmYWxzZSIgaW4gdGhlIGhlbHAgc3RyaW5nLiAgV2l0aG91dCB0aGlzLCBhIHZhbGlk
IHVzYWdlCi0gICAgICAgIC8vICItbGF0IC0zMC41IiB3b3VsZCB0cmlnZ2VyIHRoZSB3YXJuaW5n
LiAgVGhlIGNvbW1vbiBjYXNlcyB3ZQotICAgICAgICAvLyB3YW50IHRvIHNvbHZlIHRhbGsgYWJv
dXQgdHJ1ZSBhbmQgZmFsc2UgYXMgdmFsdWVzLgotICAgICAgICBpZiAodmFsdWVbMF0gPT0gJy0n
Ci0gICAgICAgICAgICAmJiBzdHJjbXAoZmxhZy0+dHlwZV9uYW1lKCksICJzdHJpbmciKSA9PSAw
Ci0gICAgICAgICAgICAmJiAoc3Ryc3RyKGZsYWctPmhlbHAoKSwgInRydWUiKQotICAgICAgICAg
ICAgICAgIHx8IHN0cnN0cihmbGFnLT5oZWxwKCksICJmYWxzZSIpKSkgewotICAgICAgICAgIExP
RyhXQVJOSU5HKSA8PCAiRGlkIHlvdSByZWFsbHkgbWVhbiB0byBzZXQgZmxhZyAnIgotICAgICAg
ICAgICAgICAgICAgICAgICA8PCBmbGFnLT5uYW1lKCkgPDwgIicgdG8gdGhlIHZhbHVlICciCi0g
ICAgICAgICAgICAgICAgICAgICAgIDw8IHZhbHVlIDw8ICInPyI7Ci0gICAgICAgIH0KLSAgICAg
IH0KLSAgICB9Ci0KLSAgICAvLyBUT0RPKGNzaWx2ZXJzKTogb25seSBzZXQgYSBmbGFnIGlmIHdl
IGhhZG4ndCBzZXQgaXQgYmVmb3JlIGhlcmUKLSAgICBQcm9jZXNzU2luZ2xlT3B0aW9uTG9ja2Vk
KGZsYWcsIHZhbHVlLCBTRVRfRkxBR1NfVkFMVUUpOwotICB9Ci0gIHJlZ2lzdHJ5Xy0+VW5sb2Nr
KCk7Ci0KLSAgaWYgKHJlbW92ZV9mbGFncykgeyAgIC8vIEZpeCB1cCBhcmdjIGFuZCBhcmd2IGJ5
IHJlbW92aW5nIGNvbW1hbmQgbGluZSBmbGFncwotICAgICgqYXJndilbZmlyc3Rfbm9ub3B0LTFd
ID0gKCphcmd2KVswXTsKLSAgICAoKmFyZ3YpICs9IChmaXJzdF9ub25vcHQtMSk7Ci0gICAgKCph
cmdjKSAtPSAoZmlyc3Rfbm9ub3B0LTEpOwotICAgIGZpcnN0X25vbm9wdCA9IDE7ICAgLy8gYmVj
YXVzZSB3ZSBzdGlsbCBkb24ndCBjb3VudCBhcmd2WzBdCi0gIH0KLQotICBsb2dnaW5nX2lzX3By
b2JhYmx5X3NldF91cCA9IHRydWU7ICAgLy8gYmVjYXVzZSB3ZSd2ZSBwYXJzZWQgLS1sb2dkaXIs
IGV0Yy4KLQotICByZXR1cm4gZmlyc3Rfbm9ub3B0OwotfQotCi1zdHJpbmcgQ29tbWFuZExpbmVG
bGFnUGFyc2VyOjpQcm9jZXNzRmxhZ2ZpbGVMb2NrZWQoY29uc3Qgc3RyaW5nJiBmbGFndmFsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWdT
ZXR0aW5nTW9kZSBzZXRfbW9kZSkgewotICBpZiAoZmxhZ3ZhbC5lbXB0eSgpKQotICAgIHJldHVy
biAiIjsKLQotICBzdHJpbmcgbXNnOwotICB2ZWN0b3I8c3RyaW5nPiBmaWxlbmFtZV9saXN0Owot
ICBQYXJzZUZsYWdMaXN0KGZsYWd2YWwuY19zdHIoKSwgJmZpbGVuYW1lX2xpc3QpOyAgLy8gdGFr
ZSBhIGxpc3Qgb2YgZmlsZW5hbWVzCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZW5hbWVf
bGlzdC5zaXplKCk7ICsraSkgewotICAgIGNvbnN0IGNoYXIqIGZpbGUgPSBmaWxlbmFtZV9saXN0
W2ldLmNfc3RyKCk7Ci0gICAgbXNnICs9IFByb2Nlc3NPcHRpb25zRnJvbVN0cmluZ0xvY2tlZChS
ZWFkRmlsZUludG9TdHJpbmcoZmlsZSksIHNldF9tb2RlKTsKLSAgfQotICByZXR1cm4gbXNnOwot
fQotCi1zdHJpbmcgQ29tbWFuZExpbmVGbGFnUGFyc2VyOjpQcm9jZXNzRnJvbWVudkxvY2tlZChj
b25zdCBzdHJpbmcmIGZsYWd2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVycm9yc19hcmVfZmF0
YWwpIHsKLSAgaWYgKGZsYWd2YWwuZW1wdHkoKSkKLSAgICByZXR1cm4gIiI7Ci0KLSAgc3RyaW5n
IG1zZzsKLSAgdmVjdG9yPHN0cmluZz4gZmxhZ2xpc3Q7Ci0gIFBhcnNlRmxhZ0xpc3QoZmxhZ3Zh
bC5jX3N0cigpLCAmZmxhZ2xpc3QpOwotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmxhZ2xp
c3Quc2l6ZSgpOyArK2kpIHsKLSAgICBjb25zdCBjaGFyKiBmbGFnbmFtZSA9IGZsYWdsaXN0W2ld
LmNfc3RyKCk7Ci0gICAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gcmVnaXN0cnlfLT5GaW5kRmxh
Z0xvY2tlZChmbGFnbmFtZSk7Ci0gICAgaWYgKGZsYWcgPT0gTlVMTCkgewotICAgICAgZXJyb3Jf
ZmxhZ3NfW2ZsYWduYW1lXSA9Ci0gICAgICAgICAgU3RyaW5nUHJpbnRmKCIlc3Vua25vd24gY29t
bWFuZCBsaW5lIGZsYWcgJyVzJyAiCi0gICAgICAgICAgICAgICAgICAgICAgICIodmlhIC0tZnJv
bWVudiBvciAtLXRyeWZyb21lbnYpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICBrRXJyb3Is
IGZsYWduYW1lKTsKLSAgICAgIHVuZGVmaW5lZF9uYW1lc19bZmxhZ25hbWVdID0gIiI7Ci0gICAg
ICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBzdHJpbmcgZW52bmFtZSA9IHN0cmluZygi
RkxBR1NfIikgKyBzdHJpbmcoZmxhZ25hbWUpOwotCXN0cmluZyBlbnZ2YWw7Ci0JaWYgKCFTYWZl
R2V0RW52KGVudm5hbWUuY19zdHIoKSwgZW52dmFsKSkgewotICAgICAgaWYgKGVycm9yc19hcmVf
ZmF0YWwpIHsKLSAgICAgICAgZXJyb3JfZmxhZ3NfW2ZsYWduYW1lXSA9IChzdHJpbmcoa0Vycm9y
KSArIGVudm5hbWUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbm90IGZv
dW5kIGluIGVudmlyb25tZW50XG4iKTsKLSAgICAgIH0KLSAgICAgIGNvbnRpbnVlOwotICAgIH0K
LQotICAgIC8vIEF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICBpZiAoZW52dmFsID09ICJm
cm9tZW52IiB8fCBlbnZ2YWwgPT0gInRyeWZyb21lbnYiKSB7Ci0gICAgICBlcnJvcl9mbGFnc19b
ZmxhZ25hbWVdID0KLSAgICAgICAgICBTdHJpbmdQcmludGYoIiVzaW5maW5pdGUgcmVjdXJzaW9u
IG9uIGVudmlyb25tZW50IGZsYWcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAga0Vy
cm9yLCBlbnZ2YWwuY19zdHIoKSk7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBtc2cg
Kz0gUHJvY2Vzc1NpbmdsZU9wdGlvbkxvY2tlZChmbGFnLCBlbnZ2YWwuY19zdHIoKSwgc2V0X21v
ZGUpOwotICB9Ci0gIHJldHVybiBtc2c7Ci19Ci0KLXN0cmluZyBDb21tYW5kTGluZUZsYWdQYXJz
ZXI6OlByb2Nlc3NTaW5nbGVPcHRpb25Mb2NrZWQoCi0gICAgQ29tbWFuZExpbmVGbGFnKiBmbGFn
LCBjb25zdCBjaGFyKiB2YWx1ZSwgRmxhZ1NldHRpbmdNb2RlIHNldF9tb2RlKSB7Ci0gIHN0cmlu
ZyBtc2c7Ci0gIGlmICh2YWx1ZSAmJiAhcmVnaXN0cnlfLT5TZXRGbGFnTG9ja2VkKGZsYWcsIHZh
bHVlLCBzZXRfbW9kZSwgJm1zZykpIHsKLSAgICBlcnJvcl9mbGFnc19bZmxhZy0+bmFtZSgpXSA9
IG1zZzsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLQotICAvLyBUaGUgcmVjdXJzaXZlIGZsYWdzLCAt
LWZsYWdmaWxlIGFuZCAtLWZyb21lbnYgYW5kIC0tdHJ5ZnJvbWVudiwKLSAgLy8gbXVzdCBiZSBk
ZWFsdCB3aXRoIGFzIHNvb24gYXMgdGhleSdyZSBzZWVuLiAgVGhleSB3aWxsIGVtaXQKLSAgLy8g
bWVzc2FnZXMgb2YgdGhlaXIgb3duLgotICBpZiAoc3RyY21wKGZsYWctPm5hbWUoKSwgImZsYWdm
aWxlIikgPT0gMCkgewotICAgIG1zZyArPSBQcm9jZXNzRmxhZ2ZpbGVMb2NrZWQoRkxBR1NfZmxh
Z2ZpbGUsIHNldF9tb2RlKTsKLQotICB9IGVsc2UgaWYgKHN0cmNtcChmbGFnLT5uYW1lKCksICJm
cm9tZW52IikgPT0gMCkgewotICAgIC8vIGxhc3QgYXJnIGluZGljYXRlcyBlbnZ2YWwtbm90LWZv
dW5kIGlzIGZhdGFsICh1bmxpa2UgaW4gLS10cnlmcm9tZW52KQotICAgIG1zZyArPSBQcm9jZXNz
RnJvbWVudkxvY2tlZChGTEFHU19mcm9tZW52LCBzZXRfbW9kZSwgdHJ1ZSk7Ci0KLSAgfSBlbHNl
IGlmIChzdHJjbXAoZmxhZy0+bmFtZSgpLCAidHJ5ZnJvbWVudiIpID09IDApIHsKLSAgICBtc2cg
Kz0gUHJvY2Vzc0Zyb21lbnZMb2NrZWQoRkxBR1NfdHJ5ZnJvbWVudiwgc2V0X21vZGUsIGZhbHNl
KTsKLSAgfQotCi0gIHJldHVybiBtc2c7Ci19Ci0KLXZvaWQgQ29tbWFuZExpbmVGbGFnUGFyc2Vy
OjpWYWxpZGF0ZUFsbEZsYWdzKCkgewotICBGbGFnUmVnaXN0cnlMb2NrIGZybChyZWdpc3RyeV8p
OwotICBmb3IgKEZsYWdSZWdpc3RyeTo6RmxhZ0NvbnN0SXRlcmF0b3IgaSA9IHJlZ2lzdHJ5Xy0+
ZmxhZ3NfLmJlZ2luKCk7Ci0gICAgICAgaSAhPSByZWdpc3RyeV8tPmZsYWdzXy5lbmQoKTsgKytp
KSB7Ci0gICAgaWYgKCFpLT5zZWNvbmQtPlZhbGlkYXRlQ3VycmVudCgpKSB7Ci0gICAgICAvLyBv
bmx5IHNldCBhIG1lc3NhZ2UgaWYgb25lIGlzbid0IGFscmVhZHkgdGhlcmUuICAoSWYgdGhlcmUn
cwotICAgICAgLy8gYW4gZXJyb3IgbWVzc2FnZSwgb3VyIGpvYiBpcyBkb25lLCBldmVuIGlmIGl0
J3Mgbm90IGV4YWN0bHkKLSAgICAgIC8vIHRoZSBzYW1lIGVycm9yLikKLSAgICAgIGlmIChlcnJv
cl9mbGFnc19baS0+c2Vjb25kLT5uYW1lKCldLmVtcHR5KCkpCi0gICAgICAgIGVycm9yX2ZsYWdz
X1tpLT5zZWNvbmQtPm5hbWUoKV0gPQotICAgICAgICAgICAgc3RyaW5nKGtFcnJvcikgKyAiLS0i
ICsgaS0+c2Vjb25kLT5uYW1lKCkgKwotICAgICAgICAgICAgIiBtdXN0IGJlIHNldCBvbiB0aGUg
Y29tbWFuZGxpbmUiCi0gICAgICAgICAgICAiIChkZWZhdWx0IHZhbHVlIGZhaWxzIHZhbGlkYXRp
b24pXG4iOwotICAgIH0KLSAgfQotfQotCi1ib29sIENvbW1hbmRMaW5lRmxhZ1BhcnNlcjo6UmVw
b3J0RXJyb3JzKCkgewotICAvLyBlcnJvcl9mbGFnc18gaW5kaWNhdGVzIGVycm9ycyB3ZSBzYXcg
d2hpbGUgcGFyc2luZy4KLSAgLy8gQnV0IHdlIGlnbm9yZSB1bmRlZmluZWQtbmFtZXMgaWYgb2sn
ZWQgYnkgLS11bmRlZl9vawotICBpZiAoIUZMQUdTX3VuZGVmb2suZW1wdHkoKSkgewotICAgIHZl
Y3RvcjxzdHJpbmc+IGZsYWdsaXN0OwotICAgIFBhcnNlRmxhZ0xpc3QoRkxBR1NfdW5kZWZvay5j
X3N0cigpLCAmZmxhZ2xpc3QpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmxhZ2xpc3Qu
c2l6ZSgpOyArK2kpIHsKLSAgICAgIC8vIFdlIGFsc28gZGVhbCB3aXRoIC0tbm88ZmxhZz4sIGlu
IGNhc2UgdGhlIGZsYWduYW1lIHdhcyBib29sZWFuCi0gICAgICBjb25zdCBzdHJpbmcgbm9fdmVy
c2lvbiA9IHN0cmluZygibm8iKSArIGZsYWdsaXN0W2ldOwotICAgICAgaWYgKHVuZGVmaW5lZF9u
YW1lc18uZmluZChmbGFnbGlzdFtpXSkgIT0gdW5kZWZpbmVkX25hbWVzXy5lbmQoKSkgewotICAg
ICAgICBlcnJvcl9mbGFnc19bZmxhZ2xpc3RbaV1dID0gIiI7ICAgIC8vIGNsZWFyIHRoZSBlcnJv
ciBtZXNzYWdlCi0gICAgICB9IGVsc2UgaWYgKHVuZGVmaW5lZF9uYW1lc18uZmluZChub192ZXJz
aW9uKSAhPSB1bmRlZmluZWRfbmFtZXNfLmVuZCgpKSB7Ci0gICAgICAgIGVycm9yX2ZsYWdzX1tu
b192ZXJzaW9uXSA9ICIiOwotICAgICAgfQotICAgIH0KLSAgfQotICAvLyBMaWtld2lzZSwgaWYg
dGhleSBkZWNpZGVkIHRvIGFsbG93IHJlcGFyc2luZywgYWxsIHVuZGVmaW5lZC1uYW1lcwotICAv
LyBhcmUgb2s7IHdlIGp1c3Qgc2lsZW50bHkgaWdub3JlIHRoZW0gbm93LCBhbmQgaG9wZSB0aGF0
IGEgZnV0dXJlCi0gIC8vIHBhcnNlIHdpbGwgcGljayB0aGVtIHVwIHNvbWVob3cuCi0gIGlmIChh
bGxvd19jb21tYW5kX2xpbmVfcmVwYXJzaW5nKSB7Ci0gICAgZm9yIChtYXA8c3RyaW5nLCBzdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHVuZGVmaW5lZF9uYW1lc18uYmVnaW4oKTsKLSAgICAg
ICAgIGl0ICE9IHVuZGVmaW5lZF9uYW1lc18uZW5kKCk7ICArK2l0KQotICAgICAgZXJyb3JfZmxh
Z3NfW2l0LT5maXJzdF0gPSAiIjsgICAgICAvLyBjbGVhciB0aGUgZXJyb3IgbWVzc2FnZQotICB9
Ci0KLSAgYm9vbCBmb3VuZF9lcnJvciA9IGZhbHNlOwotICBzdHJpbmcgZXJyb3JfbWVzc2FnZTsK
LSAgZm9yIChtYXA8c3RyaW5nLCBzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGVycm9yX2Zs
YWdzXy5iZWdpbigpOwotICAgICAgIGl0ICE9IGVycm9yX2ZsYWdzXy5lbmQoKTsgKytpdCkgewot
ICAgIGlmICghaXQtPnNlY29uZC5lbXB0eSgpKSB7Ci0gICAgICBlcnJvcl9tZXNzYWdlLmFwcGVu
ZChpdC0+c2Vjb25kLmRhdGEoKSwgaXQtPnNlY29uZC5zaXplKCkpOwotICAgICAgZm91bmRfZXJy
b3IgPSB0cnVlOwotICAgIH0KLSAgfQotICBpZiAoZm91bmRfZXJyb3IpCi0gICAgUmVwb3J0RXJy
b3IoRE9fTk9UX0RJRSwgIiVzIiwgZXJyb3JfbWVzc2FnZS5jX3N0cigpKTsKLSAgcmV0dXJuIGZv
dW5kX2Vycm9yOwotfQotCi1zdHJpbmcgQ29tbWFuZExpbmVGbGFnUGFyc2VyOjpQcm9jZXNzT3B0
aW9uc0Zyb21TdHJpbmdMb2NrZWQoCi0gICAgY29uc3Qgc3RyaW5nJiBjb250ZW50ZGF0YSwgRmxh
Z1NldHRpbmdNb2RlIHNldF9tb2RlKSB7Ci0gIHN0cmluZyByZXR2YWw7Ci0gIGNvbnN0IGNoYXIq
IGZsYWdmaWxlX2NvbnRlbnRzID0gY29udGVudGRhdGEuY19zdHIoKTsKLSAgYm9vbCBmbGFnc19h
cmVfcmVsZXZhbnQgPSB0cnVlOyAgIC8vIHNldCB0byBmYWxzZSB3aGVuIGZpbGVuYW1lcyBkb24n
dCBtYXRjaAotICBib29sIGluX2ZpbGVuYW1lX3NlY3Rpb24gPSBmYWxzZTsKLQotICBjb25zdCBj
aGFyKiBsaW5lX2VuZCA9IGZsYWdmaWxlX2NvbnRlbnRzOwotICAvLyBXZSByZWFkIHRoaXMgZmls
ZSBhIGxpbmUgYXQgYSB0aW1lLgotICBmb3IgKDsgbGluZV9lbmQ7IGZsYWdmaWxlX2NvbnRlbnRz
ID0gbGluZV9lbmQgKyAxKSB7Ci0gICAgd2hpbGUgKCpmbGFnZmlsZV9jb250ZW50cyAmJiBpc3Nw
YWNlKCpmbGFnZmlsZV9jb250ZW50cykpCi0gICAgICArK2ZsYWdmaWxlX2NvbnRlbnRzOwotICAg
IGxpbmVfZW5kID0gc3RyY2hyKGZsYWdmaWxlX2NvbnRlbnRzLCAnXG4nKTsKLSAgICBzaXplX3Qg
bGVuID0gbGluZV9lbmQgPyBsaW5lX2VuZCAtIGZsYWdmaWxlX2NvbnRlbnRzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIDogc3RybGVuKGZsYWdmaWxlX2NvbnRlbnRzKTsKLSAgICBzdHJpbmcg
bGluZShmbGFnZmlsZV9jb250ZW50cywgbGVuKTsKLQotICAgIC8vIEVhY2ggbGluZSBjYW4gYmUg
b25lIG9mIGZvdXIgdGhpbmdzOgotICAgIC8vIDEpIEEgY29tbWVudCBsaW5lIC0tIHdlIHNraXAg
aXQKLSAgICAvLyAyKSBBbiBlbXB0eSBsaW5lIC0tIHdlIHNraXAgaXQKLSAgICAvLyAzKSBBIGxp
c3Qgb2YgZmlsZW5hbWVzIC0tIHN0YXJ0cyBhIG5ldyBmaWxlbmFtZXMrZmxhZ3Mgc2VjdGlvbgot
ICAgIC8vIDQpIEEgLS1mbGFnPXZhbHVlIGxpbmUgLS0gYXBwbHkgaWYgcHJldmlvdXMgZmlsZW5h
bWVzIG1hdGNoCi0gICAgaWYgKGxpbmUuZW1wdHkoKSB8fCBsaW5lWzBdID09ICcjJykgewotICAg
ICAgLy8gY29tbWVudCBvciBlbXB0eSBsaW5lOyBqdXN0IGlnbm9yZQotCi0gICAgfSBlbHNlIGlm
IChsaW5lWzBdID09ICctJykgeyAgICAvLyBmbGFnCi0gICAgICBpbl9maWxlbmFtZV9zZWN0aW9u
ID0gZmFsc2U7ICAvLyBpbnN0ZWFkLCBpdCB3YXMgYSBmbGFnLWxpbmUKLSAgICAgIGlmICghZmxh
Z3NfYXJlX3JlbGV2YW50KSAgICAgIC8vIHNraXAgdGhpcyBmbGFnOyBhcHBsaWVzIHRvIHNvbWVv
bmUgZWxzZQotICAgICAgICBjb250aW51ZTsKLQotICAgICAgY29uc3QgY2hhciogbmFtZV9hbmRf
dmFsID0gbGluZS5jX3N0cigpICsgMTsgICAgLy8gc2tpcCB0aGUgbGVhZGluZyAtCi0gICAgICBp
ZiAoKm5hbWVfYW5kX3ZhbCA9PSAnLScpCi0gICAgICAgIG5hbWVfYW5kX3ZhbCsrOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIHNlY29uZCAtIHRvbwotICAgICAgc3RyaW5n
IGtleTsKLSAgICAgIGNvbnN0IGNoYXIqIHZhbHVlOwotICAgICAgc3RyaW5nIGVycm9yX21lc3Nh
Z2U7Ci0gICAgICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSByZWdpc3RyeV8tPlNwbGl0QXJndW1l
bnRMb2NrZWQobmFtZV9hbmRfdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXksICZ2YWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JfbWVz
c2FnZSk7Ci0gICAgICAvLyBCeSBBUEksIGVycm9ycyBwYXJzaW5nIGZsYWdmaWxlIGxpbmVzIGFy
ZSBzaWxlbnRseSBpZ25vcmVkLgotICAgICAgaWYgKGZsYWcgPT0gTlVMTCkgewotICAgICAgICAv
LyAiV0FSTklORzogZmxhZ25hbWUgJyIgKyBrZXkgKyAiJyBub3QgZm91bmRcbiIKLSAgICAgIH0g
ZWxzZSBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAvLyAiV0FSTklORzogZmxhZ25hbWUg
JyIgKyBrZXkgKyAiJyBtaXNzaW5nIGEgdmFsdWVcbiIKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJldHZhbCArPSBQcm9jZXNzU2luZ2xlT3B0aW9uTG9ja2VkKGZsYWcsIHZhbHVlLCBzZXRfbW9k
ZSk7Ci0gICAgICB9Ci0KLSAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEg
ZmlsZW5hbWUhCi0gICAgICBpZiAoIWluX2ZpbGVuYW1lX3NlY3Rpb24pIHsgICAvLyBzdGFydCBv
dmVyOiBhc3N1bWUgZmlsZW5hbWVzIGRvbid0IG1hdGNoCi0gICAgICAgIGluX2ZpbGVuYW1lX3Nl
Y3Rpb24gPSB0cnVlOwotICAgICAgICBmbGFnc19hcmVfcmVsZXZhbnQgPSBmYWxzZTsKLSAgICAg
IH0KLQotICAgICAgLy8gU3BsaXQgdGhlIGxpbmUgdXAgYXQgc3BhY2VzIGludG8gZ2xvYi1wYXR0
ZXJucwotICAgICAgY29uc3QgY2hhciogc3BhY2UgPSBsaW5lLmNfc3RyKCk7ICAgLy8ganVzdCBo
YXMgdG8gYmUgbm9uLU5VTEwKLSAgICAgIGZvciAoY29uc3QgY2hhciogd29yZCA9IGxpbmUuY19z
dHIoKTsgKnNwYWNlOyB3b3JkID0gc3BhY2UrMSkgewotICAgICAgICBpZiAoZmxhZ3NfYXJlX3Jl
bGV2YW50KSAgICAgLy8gd2UgY2FuIHN0b3AgYXMgc29vbiBhcyB3ZSBtYXRjaAotICAgICAgICAg
IGJyZWFrOwotICAgICAgICBzcGFjZSA9IHN0cmNocih3b3JkLCAnICcpOwotICAgICAgICBpZiAo
c3BhY2UgPT0gTlVMTCkKLSAgICAgICAgICBzcGFjZSA9IHdvcmQgKyBzdHJsZW4od29yZCk7Ci0g
ICAgICAgIGNvbnN0IHN0cmluZyBnbG9iKHdvcmQsIHNwYWNlIC0gd29yZCk7Ci0gICAgICAgIC8v
IFdlIHRyeSBtYXRjaGluZyBib3RoIGFnYWluc3QgdGhlIGZ1bGwgYXJndjAgYW5kIGJhc2VuYW1l
KGFyZ3YwKQotICAgICAgICBpZiAoZ2xvYiA9PSBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSAgICAg
ICAvLyBzbWFsbCBvcHRpbWl6YXRpb24KLSAgICAgICAgICAgIHx8IGdsb2IgPT0gUHJvZ3JhbUlu
dm9jYXRpb25TaG9ydE5hbWUoKQotI2lmIGRlZmluZWQoSEFWRV9GTk1BVENIX0gpCi0gICAgICAg
ICAgICB8fCBmbm1hdGNoKGdsb2IuY19zdHIoKSwgUHJvZ3JhbUludm9jYXRpb25OYW1lKCksICAg
ICAgRk5NX1BBVEhOQU1FKSA9PSAwCi0gICAgICAgICAgICB8fCBmbm1hdGNoKGdsb2IuY19zdHIo
KSwgUHJvZ3JhbUludm9jYXRpb25TaG9ydE5hbWUoKSwgRk5NX1BBVEhOQU1FKSA9PSAwCi0jZWxp
ZiBkZWZpbmVkKEhBVkVfU0hMV0FQSV9IKQotICAgICAgICAgICAgfHwgUGF0aE1hdGNoU3BlYyhn
bG9iLmNfc3RyKCksIFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpKQotICAgICAgICAgICAgfHwgUGF0
aE1hdGNoU3BlYyhnbG9iLmNfc3RyKCksIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCkpCi0j
ZW5kaWYKLSAgICAgICAgICAgICkgewotICAgICAgICAgIGZsYWdzX2FyZV9yZWxldmFudCA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJldHZhbDsKLX0K
LQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS8vIEdldEZyb21FbnYoKQotLy8gQWRkRmxhZ1ZhbGlkYXRvcigp
Ci0vLyAgICBUaGVzZSBhcmUgaGVscGVyIGZ1bmN0aW9ucyBmb3Igcm91dGluZXMgbGlrZSBCb29s
RnJvbUVudigpIGFuZAotLy8gICAgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yLCBkZWZpbmVkIGJlbG93
LiAgVGhleSdyZSBkZWZpbmVkIGhlcmUgc28KLS8vICAgIHRoZXkgY2FuIGxpdmUgaW4gdGhlIHVu
bmFtZWQgbmFtZXNwYWNlICh3aGljaCBtYWtlcyBmcmllbmRzaGlwCi0vLyAgICBkZWNsYXJhdGlv
bnMgZm9yIHRoZXNlIGNsYXNzZXMgcG9zc2libGUpLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLVQgR2V0RnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBjb25zdCBj
aGFyKiB0eXBlLCBUIGRmbHQpIHsKLSAgc3RkOjpzdHJpbmcgdmFsc3RyOwotICBpZiAoU2FmZUdl
dEVudih2YXJuYW1lLCB2YWxzdHIpKSB7Ci0gICAgRmxhZ1ZhbHVlIGlmdihuZXcgVCwgdHlwZSwg
dHJ1ZSk7Ci0gICAgaWYgKCFpZnYuUGFyc2VGcm9tKHZhbHN0ci5jX3N0cigpKSkgewotICAgICAg
UmVwb3J0RXJyb3IoRElFLCAiRVJST1I6IGVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlICclcycg
d2l0aCB2YWx1ZSAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgdmFybmFtZSwgdmFsc3RyLmNf
c3RyKCkpOwotCX0KLSAgICByZXR1cm4gT1RIRVJfVkFMVUVfQVMoaWZ2LCBUKTsKLSAgfSBlbHNl
IHJldHVybiBkZmx0OwotfQotCi1ib29sIEFkZEZsYWdWYWxpZGF0b3IoY29uc3Qgdm9pZCogZmxh
Z19wdHIsIFZhbGlkYXRlRm5Qcm90byB2YWxpZGF0ZV9mbl9wcm90bykgewotICAvLyBXZSB3YW50
IGEgbG9jayBhcm91bmQgdGhpcyByb3V0aW5lLCBpbiBjYXNlIHR3byB0aHJlYWRzIHRyeSB0bwot
ICAvLyBhZGQgYSB2YWxpZGF0b3IgKGhvcGVmdWxseSB0aGUgc2FtZSBvbmUhKSBhdCBvbmNlLiAg
V2UgY291bGQgdXNlCi0gIC8vIG91ciBvd24gdGhyZWFkLCBidXQgd2UgbmVlZCB0byBsb29vayBh
dCB0aGUgcmVnaXN0cnkgYW55d2F5LCBzbwotICAvLyB3ZSBqdXN0IHN0ZWFsIHRoYXQgb25lLgot
ICBGbGFnUmVnaXN0cnkqIGNvbnN0IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdp
c3RyeSgpOwotICBGbGFnUmVnaXN0cnlMb2NrIGZybChyZWdpc3RyeSk7Ci0gIC8vIEZpcnN0LCBm
aW5kIHRoZSBmbGFnIHdob3NlIGN1cnJlbnQtZmxhZyBzdG9yYWdlIGlzICdmbGFnJy4KLSAgLy8g
VGhpcyBpcyB0aGUgQ29tbWFuZExpbmVGbGFnIHdob3NlIGN1cnJlbnRfLT52YWx1ZV9idWZmZXJf
ID09IGZsYWcKLSAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gcmVnaXN0cnktPkZpbmRGbGFnVmlh
UHRyTG9ja2VkKGZsYWdfcHRyKTsKLSAgaWYgKCFmbGFnKSB7Ci0gICAgTE9HKFdBUk5JTkcpIDw8
ICJJZ25vcmluZyBSZWdpc3RlclZhbGlkYXRlRnVuY3Rpb24oKSBmb3IgZmxhZyBwb2ludGVyICIK
LSAgICAgICAgICAgICAgICAgPDwgZmxhZ19wdHIgPDwgIjogbm8gZmxhZyBmb3VuZCBhdCB0aGF0
IGFkZHJlc3MiOwotICAgIHJldHVybiBmYWxzZTsKLSAgfSBlbHNlIGlmICh2YWxpZGF0ZV9mbl9w
cm90byA9PSBmbGFnLT52YWxpZGF0ZV9mdW5jdGlvbigpKSB7Ci0gICAgcmV0dXJuIHRydWU7ICAg
IC8vIG9rIHRvIHJlZ2lzdGVyIHRoZSBzYW1lIGZ1bmN0aW9uIG92ZXIgYW5kIG92ZXIgYWdhaW4K
LSAgfSBlbHNlIGlmICh2YWxpZGF0ZV9mbl9wcm90byAhPSBOVUxMICYmIGZsYWctPnZhbGlkYXRl
X2Z1bmN0aW9uKCkgIT0gTlVMTCkgewotICAgIExPRyhXQVJOSU5HKSA8PCAiSWdub3JpbmcgUmVn
aXN0ZXJWYWxpZGF0ZUZ1bmN0aW9uKCkgZm9yIGZsYWcgJyIKLSAgICAgICAgICAgICAgICAgPDwg
ZmxhZy0+bmFtZSgpIDw8ICInOiB2YWxpZGF0ZS1mbiBhbHJlYWR5IHJlZ2lzdGVyZWQiOwotICAg
IHJldHVybiBmYWxzZTsKLSAgfSBlbHNlIHsKLSAgICBmbGFnLT52YWxpZGF0ZV9mbl9wcm90b18g
PSB2YWxpZGF0ZV9mbl9wcm90bzsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotfQotCi19ICAvLyBl
bmQgdW5uYW1lZCBuYW1lc3BhY2VzCi0KLQotLy8gTm93IGRlZmluZSB0aGUgZnVuY3Rpb25zIHRo
YXQgYXJlIGV4cG9ydGVkIHZpYSB0aGUgLmggZmlsZQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRmxh
Z1JlZ2lzdGVyZXIKLS8vICAgIFRoaXMgY2xhc3MgZXhpc3RzIG1lcmVseSB0byBoYXZlIGEgZ2xv
YmFsIGNvbnN0cnVjdG9yICh0aGUKLS8vICAgIGtpbmQgdGhhdCBydW5zIGJlZm9yZSBtYWluKCks
IHRoYXQgZ29lcyBhbiBpbml0aWFsaXplcyBlYWNoCi0vLyAgICBmbGFnIHRoYXQncyBiZWVuIGRl
Y2xhcmVkLiAgTm90ZSB0aGF0IGl0J3MgdmVyeSBpbXBvcnRhbnQgd2UKLS8vICAgIGRvbid0IGhh
dmUgYSBkZXN0cnVjdG9yIHRoYXQgZGVsZXRlcyBmbGFnXywgYmVjYXVzZSB0aGF0IHdvdWxkCi0v
LyAgICBjYXVzZSB1cyB0byBkZWxldGUgY3VycmVudF9zdG9yYWdlL2RlZnZhbHVlX3N0b3JhZ2Ug
YXMgd2VsbCwKLS8vICAgIHdoaWNoIGNhbiBjYXVzZSBhIGNyYXNoIGlmIGFueXRoaW5nIHRyaWVz
IHRvIGFjY2VzcyB0aGUgZmxhZwotLy8gICAgdmFsdWVzIGluIGEgZ2xvYmFsIGRlc3RydWN0b3Iu
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi1GbGFnUmVnaXN0ZXJlcjo6RmxhZ1JlZ2lzdGVyZXIoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBoZWxwLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkKiBjdXJyZW50X3N0b3JhZ2UsIHZvaWQqIGRlZnZhbHVl
X3N0b3JhZ2UpIHsKLSAgaWYgKGhlbHAgPT0gTlVMTCkKLSAgICBoZWxwID0gIiI7Ci0gIC8vIEZs
YWdWYWx1ZSBleHBlY3RzIHRoZSB0eXBlLW5hbWUgdG8gbm90IGluY2x1ZGUgYW55IG5hbWVzcGFj
ZQotICAvLyBjb21wb25lbnRzLCBzbyB3ZSBnZXQgcmlkIG9mIHRob3NlLCBpZiBhbnkuCi0gIGlm
IChzdHJjaHIodHlwZSwgJzonKSkKLSAgICB0eXBlID0gc3RycmNocih0eXBlLCAnOicpICsgMTsK
LSAgRmxhZ1ZhbHVlKiBjdXJyZW50ID0gbmV3IEZsYWdWYWx1ZShjdXJyZW50X3N0b3JhZ2UsIHR5
cGUsIGZhbHNlKTsKLSAgRmxhZ1ZhbHVlKiBkZWZ2YWx1ZSA9IG5ldyBGbGFnVmFsdWUoZGVmdmFs
dWVfc3RvcmFnZSwgdHlwZSwgZmFsc2UpOwotICAvLyBJbXBvcnRhbnRseSwgZmxhZ18gd2lsbCBu
ZXZlciBiZSBkZWxldGVkLCBzbyBzdG9yYWdlIGlzIGFsd2F5cyBnb29kLgotICBDb21tYW5kTGlu
ZUZsYWcqIGZsYWcgPSBuZXcgQ29tbWFuZExpbmVGbGFnKG5hbWUsIGhlbHAsIGZpbGVuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQsIGRl
ZnZhbHVlKTsKLSAgRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpLT5SZWdpc3RlckZsYWco
ZmxhZyk7ICAgLy8gZGVmYXVsdCByZWdpc3RyeQotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gR2V0
QWxsRmxhZ3MoKQotLy8gICAgVGhlIG1haW4gd2F5IHRoZSBGbGFnUmVnaXN0cnkgY2xhc3MgZXhw
b3NlcyBpdHMgZGF0YS4gIFRoaXMKLS8vICAgIHJldHVybnMsIGFzIHN0cmluZ3MsIGFsbCB0aGUg
aW5mbyBhYm91dCBhbGwgdGhlIGZsYWdzIGluCi0vLyAgICB0aGUgbWFpbiByZWdpc3RyeSwgc29y
dGVkIGZpcnN0IGJ5IGZpbGVuYW1lIHRoZXkgYXJlIGRlZmluZWQKLS8vICAgIGluLCBhbmQgdGhl
biBieSBmbGFnbmFtZS4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0cnVjdCBGaWxlbmFtZUZsYWduYW1l
Q21wIHsKLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGEsCi0g
ICAgICAgICAgICAgICAgICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvJiBiKSBjb25zdCB7Ci0g
ICAgaW50IGNtcCA9IHN0cmNtcChhLmZpbGVuYW1lLmNfc3RyKCksIGIuZmlsZW5hbWUuY19zdHIo
KSk7Ci0gICAgaWYgKGNtcCA9PSAwKQotICAgICAgY21wID0gc3RyY21wKGEubmFtZS5jX3N0cigp
LCBiLm5hbWUuY19zdHIoKSk7ICAvLyBzZWNvbmRhcnkgc29ydCBrZXkKLSAgICByZXR1cm4gY21w
IDwgMDsKLSAgfQotfTsKLQotdm9pZCBHZXRBbGxGbGFncyh2ZWN0b3I8Q29tbWFuZExpbmVGbGFn
SW5mbz4qIE9VVFBVVCkgewotICBGbGFnUmVnaXN0cnkqIGNvbnN0IHJlZ2lzdHJ5ID0gRmxhZ1Jl
Z2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOwotICByZWdpc3RyeS0+TG9jaygpOwotICBmb3IgKEZs
YWdSZWdpc3RyeTo6RmxhZ0NvbnN0SXRlcmF0b3IgaSA9IHJlZ2lzdHJ5LT5mbGFnc18uYmVnaW4o
KTsKLSAgICAgICBpICE9IHJlZ2lzdHJ5LT5mbGFnc18uZW5kKCk7ICsraSkgewotICAgIENvbW1h
bmRMaW5lRmxhZ0luZm8gZmk7Ci0gICAgaS0+c2Vjb25kLT5GaWxsQ29tbWFuZExpbmVGbGFnSW5m
bygmZmkpOwotICAgIE9VVFBVVC0+cHVzaF9iYWNrKGZpKTsKLSAgfQotICByZWdpc3RyeS0+VW5s
b2NrKCk7Ci0gIC8vIE5vdyBzb3J0IHRoZSBmbGFncywgZmlyc3QgYnkgZmlsZW5hbWUgdGhleSBv
Y2N1ciBpbiwgdGhlbiBhbHBoYWJldGljYWxseQotICBzb3J0KE9VVFBVVC0+YmVnaW4oKSwgT1VU
UFVULT5lbmQoKSwgRmlsZW5hbWVGbGFnbmFtZUNtcCgpKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIFNldEFyZ3YoKQotLy8gR2V0QXJndnMoKQotLy8gR2V0QXJndigpCi0vLyBHZXRBcmd2MCgp
Ci0vLyBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKQotLy8gUHJvZ3JhbUludm9jYXRpb25TaG9ydE5h
bWUoKQotLy8gU2V0VXNhZ2VNZXNzYWdlKCkKLS8vIFByb2dyYW1Vc2FnZSgpCi0vLyAgICBGdW5j
dGlvbnMgdG8gc2V0IGFuZCBnZXQgYXJndi4gIFR5cGljYWxseSB0aGUgc2V0dGVyIGlzIGNhbGxl
ZAotLy8gICAgYnkgUGFyc2VDb21tYW5kTGluZUZsYWdzLiAgQWxzbyBjYW4gZ2V0IHRoZSBQcm9n
cmFtVXNhZ2Ugc3RyaW5nLAotLy8gICAgc2V0IGJ5IFNldFVzYWdlTWVzc2FnZS4KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLS8vIFRoZXNlIHZhbHVlcyBhcmUgbm90IHByb3RlY3RlZCBieSBhIE11dGV4IGJl
Y2F1c2UgdGhleSBhcmUgbm9ybWFsbHkKLS8vIHNldCBvbmx5IG9uY2UgZHVyaW5nIHByb2dyYW0g
c3RhcnR1cC4KLXN0YXRpYyBjb25zdCBjaGFyKiBhcmd2MCA9ICJVTktOT1dOIjsgICAgICAvLyBq
dXN0IHRoZSBwcm9ncmFtIG5hbWUKLXN0YXRpYyBjb25zdCBjaGFyKiBjbWRsaW5lID0gIiI7ICAg
ICAgICAgICAvLyB0aGUgZW50aXJlIGNvbW1hbmQtbGluZQotc3RhdGljIHZlY3RvcjxzdHJpbmc+
IGFyZ3ZzOwotc3RhdGljIHVpbnQzMiBhcmd2X3N1bSA9IDA7Ci1zdGF0aWMgY29uc3QgY2hhciog
cHJvZ3JhbV91c2FnZSA9IE5VTEw7Ci0KLXZvaWQgU2V0QXJndihpbnQgYXJnYywgY29uc3QgY2hh
cioqIGFyZ3YpIHsKLSAgc3RhdGljIGJvb2wgY2FsbGVkX3NldF9hcmd2ID0gZmFsc2U7Ci0gIGlm
IChjYWxsZWRfc2V0X2FyZ3YpICAgICAgICAgLy8gd2UgYWxyZWFkeSBoYXZlIGFuIGFyZ3YgZm9y
IHlvdQotICAgIHJldHVybjsKLQotICBjYWxsZWRfc2V0X2FyZ3YgPSB0cnVlOwotCi0gIGFzc2Vy
dChhcmdjID4gMCk7ICAgICAgICAgICAgLy8gZXZlcnkgcHJvZ3JhbSBoYXMgYXQgbGVhc3QgYSBw
cm9nbmFtZQotICBhcmd2MCA9IHN0cmR1cChhcmd2WzBdKTsgICAgIC8vIHNtYWxsIG1lbW9yeSBs
ZWFrLCBidXQgZm4gb25seSBjYWxsZWQgb25jZQotICBhc3NlcnQoYXJndjApOwotCi0gIHN0cmlu
ZyBjbWRsaW5lX3N0cmluZzsgICAgICAgLy8gZWFzaWVyIHRoYW4gZG9pbmcgc3RyY2F0cwotICBm
b3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgIGlmIChpICE9IDApIHsKLSAgICAg
IGNtZGxpbmVfc3RyaW5nICs9ICIgIjsKLSAgICB9Ci0gICAgY21kbGluZV9zdHJpbmcgKz0gYXJn
dltpXTsKLSAgICBhcmd2cy5wdXNoX2JhY2soYXJndltpXSk7Ci0gIH0KLSAgY21kbGluZSA9IHN0
cmR1cChjbWRsaW5lX3N0cmluZy5jX3N0cigpKTsgIC8vIGFub3RoZXIgc21hbGwgbWVtb3J5IGxl
YWsKLSAgYXNzZXJ0KGNtZGxpbmUpOwotCi0gIC8vIENvbXB1dGUgYSBzaW1wbGUgc3VtIG9mIGFs
bCB0aGUgY2hhcnMgaW4gYXJndgotICBmb3IgKGNvbnN0IGNoYXIqIGMgPSBjbWRsaW5lOyAqYzsg
YysrKQotICAgIGFyZ3Zfc3VtICs9ICpjOwotfQotCi1jb25zdCB2ZWN0b3I8c3RyaW5nPiYgR2V0
QXJndnMoKSB7IHJldHVybiBhcmd2czsgfQotY29uc3QgY2hhciogR2V0QXJndigpICAgICAgICAg
ICAgeyByZXR1cm4gY21kbGluZTsgfQotY29uc3QgY2hhciogR2V0QXJndjAoKSAgICAgICAgICAg
eyByZXR1cm4gYXJndjA7IH0KLXVpbnQzMiBHZXRBcmd2U3VtKCkgICAgICAgICAgICAgIHsgcmV0
dXJuIGFyZ3Zfc3VtOyB9Ci1jb25zdCBjaGFyKiBQcm9ncmFtSW52b2NhdGlvbk5hbWUoKSB7ICAg
ICAgICAgICAgIC8vIGxpa2UgdGhlIEdOVSBsaWJjIGZuCi0gIHJldHVybiBHZXRBcmd2MCgpOwot
fQotY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25TaG9ydE5hbWUoKSB7ICAgICAgICAvLyBs
aWtlIHRoZSBHTlUgbGliYyBmbgotICBjb25zdCBjaGFyKiBzbGFzaCA9IHN0cnJjaHIoYXJndjAs
ICcvJyk7Ci0jaWZkZWYgT1NfV0lORE9XUwotICBpZiAoIXNsYXNoKSAgc2xhc2ggPSBzdHJyY2hy
KGFyZ3YwLCAnXFwnKTsKLSNlbmRpZgotICByZXR1cm4gc2xhc2ggPyBzbGFzaCArIDEgOiBhcmd2
MDsKLX0KLQotdm9pZCBTZXRVc2FnZU1lc3NhZ2UoY29uc3Qgc3RyaW5nJiB1c2FnZSkgewotICBp
ZiAocHJvZ3JhbV91c2FnZSAhPSBOVUxMKQotICAgIFJlcG9ydEVycm9yKERJRSwgIkVSUk9SOiBT
ZXRVc2FnZU1lc3NhZ2UoKSBjYWxsZWQgdHdpY2VcbiIpOwotICBwcm9ncmFtX3VzYWdlID0gc3Ry
ZHVwKHVzYWdlLmNfc3RyKCkpOyAgICAgIC8vIHNtYWxsIG1lbW9yeSBsZWFrCi19Ci0KLWNvbnN0
IGNoYXIqIFByb2dyYW1Vc2FnZSgpIHsKLSAgaWYgKHByb2dyYW1fdXNhZ2UpIHsKLSAgICByZXR1
cm4gcHJvZ3JhbV91c2FnZTsKLSAgfQotICByZXR1cm4gIldhcm5pbmc6IFNldFVzYWdlTWVzc2Fn
ZSgpIG5ldmVyIGNhbGxlZCI7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTZXRWZXJzaW9uU3Ry
aW5nKCkKLS8vIFZlcnNpb25TdHJpbmcoKQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGNvbnN0
IGNoYXIqIHZlcnNpb25fc3RyaW5nID0gTlVMTDsKLQotdm9pZCBTZXRWZXJzaW9uU3RyaW5nKGNv
bnN0IHN0cmluZyYgdmVyc2lvbikgewotICBpZiAodmVyc2lvbl9zdHJpbmcgIT0gTlVMTCkKLSAg
ICBSZXBvcnRFcnJvcihESUUsICJFUlJPUjogU2V0VmVyc2lvblN0cmluZygpIGNhbGxlZCB0d2lj
ZVxuIik7Ci0gIHZlcnNpb25fc3RyaW5nID0gc3RyZHVwKHZlcnNpb24uY19zdHIoKSk7ICAgLy8g
c21hbGwgbWVtb3J5IGxlYWsKLX0KLQotY29uc3QgY2hhciogVmVyc2lvblN0cmluZygpIHsKLSAg
cmV0dXJuIHZlcnNpb25fc3RyaW5nID8gdmVyc2lvbl9zdHJpbmcgOiAiIjsKLX0KLQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gR2V0Q29tbWFuZExpbmVPcHRpb24oKQotLy8gR2V0Q29tbWFuZExpbmVG
bGFnSW5mbygpCi0vLyBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoKQotLy8gU2V0Q29tbWFu
ZExpbmVPcHRpb24oKQotLy8gU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgpCi0vLyAgICBU
aGUgcHJvZ3JhbW1hdGljIHdheSB0byBzZXQgYSBmbGFnJ3MgdmFsdWUsIHVzaW5nIGEgc3RyaW5n
Ci0vLyAgICBmb3IgaXRzIG5hbWUgcmF0aGVyIHRoYW4gdGhlIHZhcmlhYmxlIGl0c2VsZiAodGhh
dCBpcywKLS8vICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJmb28iLCB4KSByYXRoZXIgdGhhbiBG
TEFHU19mb28gPSB4KS4KLS8vICAgIFRoZXJlJ3MgYWxzbyBhIGJpdCBtb3JlIGZsZXhpYmlsaXR5
IGhlcmUgZHVlIHRvIHRoZSB2YXJpb3VzCi0vLyAgICBzZXQtbW9kZXMsIGJ1dCB0eXBpY2FsbHkg
dGhlc2UgYXJlIHVzZWQgd2hlbiB5b3Ugb25seSBoYXZlCi0vLyAgICB0aGF0IGZsYWcncyBuYW1l
IGFzIGEgc3RyaW5nLCBwZXJoYXBzIGF0IHJ1bnRpbWUuCi0vLyAgICBBbGwgb2YgdGhlc2Ugd29y
ayBvbiB0aGUgZGVmYXVsdCwgZ2xvYmFsIHJlZ2lzdHJ5LgotLy8gICAgICAgRm9yIEdldENvbW1h
bmRMaW5lT3B0aW9uLCByZXR1cm4gZmFsc2UgaWYgbm8gc3VjaCBmbGFnCi0vLyAgICBpcyBrbm93
biwgdHJ1ZSBvdGhlcndpc2UuICBXZSBjbGVhciAidmFsdWUiIGlmIGEgc3VpdGFibGUKLS8vICAg
IGZsYWcgaXMgZm91bmQuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLWJvb2wgR2V0Q29tbWFuZExpbmVP
cHRpb24oY29uc3QgY2hhciogbmFtZSwgc3RyaW5nKiB2YWx1ZSkgewotICBpZiAoTlVMTCA9PSBu
YW1lKQotICAgIHJldHVybiBmYWxzZTsKLSAgYXNzZXJ0KHZhbHVlKTsKLQotICBGbGFnUmVnaXN0
cnkqIGNvbnN0IHJlZ2lzdHJ5ID0gRmxhZ1JlZ2lzdHJ5OjpHbG9iYWxSZWdpc3RyeSgpOwotICBG
bGFnUmVnaXN0cnlMb2NrIGZybChyZWdpc3RyeSk7Ci0gIENvbW1hbmRMaW5lRmxhZyogZmxhZyA9
IHJlZ2lzdHJ5LT5GaW5kRmxhZ0xvY2tlZChuYW1lKTsKLSAgaWYgKGZsYWcgPT0gTlVMTCkgewot
ICAgIHJldHVybiBmYWxzZTsKLSAgfSBlbHNlIHsKLSAgICAqdmFsdWUgPSBmbGFnLT5jdXJyZW50
X3ZhbHVlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0KLQotYm9vbCBHZXRDb21tYW5kTGlu
ZUZsYWdJbmZvKGNvbnN0IGNoYXIqIG5hbWUsIENvbW1hbmRMaW5lRmxhZ0luZm8qIE9VVFBVVCkg
ewotICBpZiAoTlVMTCA9PSBuYW1lKSByZXR1cm4gZmFsc2U7Ci0gIEZsYWdSZWdpc3RyeSogY29u
c3QgcmVnaXN0cnkgPSBGbGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7Ci0gIEZsYWdSZWdp
c3RyeUxvY2sgZnJsKHJlZ2lzdHJ5KTsKLSAgQ29tbWFuZExpbmVGbGFnKiBmbGFnID0gcmVnaXN0
cnktPkZpbmRGbGFnTG9ja2VkKG5hbWUpOwotICBpZiAoZmxhZyA9PSBOVUxMKSB7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIGFzc2VydChPVVRQVVQpOwotICAgIGZsYWctPkZp
bGxDb21tYW5kTGluZUZsYWdJbmZvKE9VVFBVVCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX0K
LQotQ29tbWFuZExpbmVGbGFnSW5mbyBHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoY29uc3Qg
Y2hhciogbmFtZSkgewotICBDb21tYW5kTGluZUZsYWdJbmZvIGluZm87Ci0gIGlmICghR2V0Q29t
bWFuZExpbmVGbGFnSW5mbyhuYW1lLCAmaW5mbykpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZB
VEFMIEVSUk9SOiBmbGFnIG5hbWUgJyVzJyBkb2Vzbid0IGV4aXN0XG4iLCBuYW1lKTsKLSAgICBn
ZmxhZ3NfZXhpdGZ1bmMoMSk7ICAgIC8vIGFsbW9zdCBjZXJ0YWlubHkgZ2ZsYWdzX2V4aXRmdW5j
KCkKLSAgfQotICByZXR1cm4gaW5mbzsKLX0KLQotc3RyaW5nIFNldENvbW1hbmRMaW5lT3B0aW9u
V2l0aE1vZGUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUpIHsKLSAg
c3RyaW5nIHJlc3VsdDsKLSAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdpc3RyeSA9IEZsYWdSZWdp
c3RyeTo6R2xvYmFsUmVnaXN0cnkoKTsKLSAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwocmVnaXN0cnkp
OwotICBDb21tYW5kTGluZUZsYWcqIGZsYWcgPSByZWdpc3RyeS0+RmluZEZsYWdMb2NrZWQobmFt
ZSk7Ci0gIGlmIChmbGFnKSB7Ci0gICAgQ29tbWFuZExpbmVGbGFnUGFyc2VyIHBhcnNlcihyZWdp
c3RyeSk7Ci0gICAgcmVzdWx0ID0gcGFyc2VyLlByb2Nlc3NTaW5nbGVPcHRpb25Mb2NrZWQoZmxh
ZywgdmFsdWUsIHNldF9tb2RlKTsKLSAgICBpZiAoIXJlc3VsdC5lbXB0eSgpKSB7ICAgLy8gaW4g
dGhlIGVycm9yIGNhc2UsIHdlJ3ZlIGFscmVhZHkgbG9nZ2VkCi0gICAgICAvLyBDb3VsZCBjb25z
aWRlciBsb2dnaW5nIHRoaXMgY2hhbmdlCi0gICAgfQotICB9Ci0gIC8vIFRoZSBBUEkgb2YgdGhp
cyBmdW5jdGlvbiBpcyB0aGF0IHdlIHJldHVybiBlbXB0eSBzdHJpbmcgb24gZXJyb3IKLSAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotc3RyaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uKGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKSB7Ci0gIHJldHVybiBTZXRDb21tYW5kTGluZU9wdGlv
bldpdGhNb2RlKG5hbWUsIHZhbHVlLCBTRVRfRkxBR1NfVkFMVUUpOwotfQotCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLy8gRmxhZ1NhdmVyCi0vLyBGbGFnU2F2ZXJJbXBsCi0vLyAgICBUaGlzIGNsYXNzIHN0
b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncyBhdCBjb25zdHJ1Y3QgdGltZSwKLS8vICAgIGFu
ZCByZXN0b3JlcyBhbGwgZmxhZ3MgdG8gdGhhdCBzdGF0ZSBhdCBkZXN0cnVjdCB0aW1lLgotLy8g
ICAgSXRzIG1ham9yIGltcGxlbWVudGF0aW9uIGNoYWxsZW5nZSBpcyB0aGF0IGl0IG5ldmVyIG1v
ZGlmaWVzCi0vLyAgICBwb2ludGVycyBpbiB0aGUgJ21haW4nIHJlZ2lzdHJ5LCBzbyBnbG9iYWwg
RkxBR18qIHZhcnMgYWx3YXlzCi0vLyAgICBwb2ludCB0byB0aGUgcmlnaHQgcGxhY2UuCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1jbGFzcyBGbGFnU2F2ZXJJbXBsIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0
cnVjdHMgYW4gZW1wdHkgRmxhZ1NhdmVySW1wbCBvYmplY3QuCi0gIGV4cGxpY2l0IEZsYWdTYXZl
ckltcGwoRmxhZ1JlZ2lzdHJ5KiBtYWluX3JlZ2lzdHJ5KQotICAgICAgOiBtYWluX3JlZ2lzdHJ5
XyhtYWluX3JlZ2lzdHJ5KSB7IH0KLSAgfkZsYWdTYXZlckltcGwoKSB7Ci0gICAgLy8gcmVjbGFp
bSBtZW1vcnkgZnJvbSBlYWNoIG9mIG91ciBDb21tYW5kTGluZUZsYWdzCi0gICAgdmVjdG9yPENv
bW1hbmRMaW5lRmxhZyo+Ojpjb25zdF9pdGVyYXRvciBpdDsKLSAgICBmb3IgKGl0ID0gYmFja3Vw
X3JlZ2lzdHJ5Xy5iZWdpbigpOyBpdCAhPSBiYWNrdXBfcmVnaXN0cnlfLmVuZCgpOyArK2l0KQot
ICAgICAgZGVsZXRlICppdDsKLSAgfQotCi0gIC8vIFNhdmVzIHRoZSBmbGFnIHN0YXRlcyBmcm9t
IHRoZSBmbGFnIHJlZ2lzdHJ5IGludG8gdGhpcyBvYmplY3QuCi0gIC8vIEl0J3MgYW4gZXJyb3Ig
dG8gY2FsbCB0aGlzIG1vcmUgdGhhbiBvbmNlLgotICAvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIHRo
ZSByZWdpc3RyeSBtdXRleCBpcyBub3QgaGVsZC4KLSAgdm9pZCBTYXZlRnJvbVJlZ2lzdHJ5KCkg
ewotICAgIEZsYWdSZWdpc3RyeUxvY2sgZnJsKG1haW5fcmVnaXN0cnlfKTsKLSAgICBhc3NlcnQo
YmFja3VwX3JlZ2lzdHJ5Xy5lbXB0eSgpKTsgICAvLyBjYWxsIG9ubHkgb25jZSEKLSAgICBmb3Ig
KEZsYWdSZWdpc3RyeTo6RmxhZ0NvbnN0SXRlcmF0b3IgaXQgPSBtYWluX3JlZ2lzdHJ5Xy0+Zmxh
Z3NfLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBtYWluX3JlZ2lzdHJ5Xy0+ZmxhZ3NfLmVuZCgp
OwotICAgICAgICAgKytpdCkgewotICAgICAgY29uc3QgQ29tbWFuZExpbmVGbGFnKiBtYWluID0g
aXQtPnNlY29uZDsKLSAgICAgIC8vIFNldHMgdXAgYWxsIHRoZSBjb25zdCB2YXJpYWJsZXMgaW4g
YmFja3VwIGNvcnJlY3RseQotICAgICAgQ29tbWFuZExpbmVGbGFnKiBiYWNrdXAgPSBuZXcgQ29t
bWFuZExpbmVGbGFnKAotICAgICAgICAgIG1haW4tPm5hbWUoKSwgbWFpbi0+aGVscCgpLCBtYWlu
LT5maWxlbmFtZSgpLAotICAgICAgICAgIG1haW4tPmN1cnJlbnRfLT5OZXcoKSwgbWFpbi0+ZGVm
dmFsdWVfLT5OZXcoKSk7Ci0gICAgICAvLyBTZXRzIHVwIGFsbCB0aGUgbm9uLWNvbnN0IHZhcmlh
YmxlcyBpbiBiYWNrdXAgY29ycmVjdGx5Ci0gICAgICBiYWNrdXAtPkNvcHlGcm9tKCptYWluKTsK
LSAgICAgIGJhY2t1cF9yZWdpc3RyeV8ucHVzaF9iYWNrKGJhY2t1cCk7ICAgLy8gYWRkIGl0IHRv
IGEgY29udmVuaWVudCBsaXN0Ci0gICAgfQotICB9Ci0KLSAgLy8gUmVzdG9yZXMgdGhlIHNhdmVk
IGZsYWcgc3RhdGVzIGludG8gdGhlIGZsYWcgcmVnaXN0cnkuICBXZQotICAvLyBhc3N1bWUgbm8g
ZmxhZ3Mgd2VyZSBhZGRlZCBvciBkZWxldGVkIGZyb20gdGhlIHJlZ2lzdHJ5IHNpbmNlCi0gIC8v
IHRoZSBTYXZlRnJvbVJlZ2lzdHJ5OyBpZiB0aGV5IHdlcmUsIHRoYXQncyB0cm91YmxlISAgTXVz
dCBiZQotICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVnaXN0cnkgbXV0ZXggaXMgbm90IGhlbGQuCi0g
IHZvaWQgUmVzdG9yZVRvUmVnaXN0cnkoKSB7Ci0gICAgRmxhZ1JlZ2lzdHJ5TG9jayBmcmwobWFp
bl9yZWdpc3RyeV8pOwotICAgIHZlY3RvcjxDb21tYW5kTGluZUZsYWcqPjo6Y29uc3RfaXRlcmF0
b3IgaXQ7Ci0gICAgZm9yIChpdCA9IGJhY2t1cF9yZWdpc3RyeV8uYmVnaW4oKTsgaXQgIT0gYmFj
a3VwX3JlZ2lzdHJ5Xy5lbmQoKTsgKytpdCkgewotICAgICAgQ29tbWFuZExpbmVGbGFnKiBtYWlu
ID0gbWFpbl9yZWdpc3RyeV8tPkZpbmRGbGFnTG9ja2VkKCgqaXQpLT5uYW1lKCkpOwotICAgICAg
aWYgKG1haW4gIT0gTlVMTCkgeyAgICAgICAvLyBpZiBOVUxMLCBmbGFnIGdvdCBkZWxldGVkIGZy
b20gcmVnaXN0cnkoISkKLSAgICAgICAgbWFpbi0+Q29weUZyb20oKippdCk7Ci0gICAgICB9Ci0g
ICAgfQotICB9Ci0KLSBwcml2YXRlOgotICBGbGFnUmVnaXN0cnkqIGNvbnN0IG1haW5fcmVnaXN0
cnlfOwotICB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnKj4gYmFja3VwX3JlZ2lzdHJ5XzsKLQotICBG
bGFnU2F2ZXJJbXBsKGNvbnN0IEZsYWdTYXZlckltcGwmKTsgIC8vIG5vIGNvcHlpbmchCi0gIHZv
aWQgb3BlcmF0b3I9KGNvbnN0IEZsYWdTYXZlckltcGwmKTsKLX07Ci0KLUZsYWdTYXZlcjo6Rmxh
Z1NhdmVyKCkKLSAgICA6IGltcGxfKG5ldyBGbGFnU2F2ZXJJbXBsKEZsYWdSZWdpc3RyeTo6R2xv
YmFsUmVnaXN0cnkoKSkpIHsKLSAgaW1wbF8tPlNhdmVGcm9tUmVnaXN0cnkoKTsKLX0KLQotRmxh
Z1NhdmVyOjp+RmxhZ1NhdmVyKCkgewotICBpbXBsXy0+UmVzdG9yZVRvUmVnaXN0cnkoKTsKLSAg
ZGVsZXRlIGltcGxfOwotfQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBDb21tYW5kbGluZUZsYWdz
SW50b1N0cmluZygpCi0vLyBSZWFkRmxhZ3NGcm9tU3RyaW5nKCkKLS8vIEFwcGVuZEZsYWdzSW50
b0ZpbGUoKQotLy8gUmVhZEZyb21GbGFnc0ZpbGUoKQotLy8gICAgVGhlc2UgYXJlIG1vc3RseS1k
ZXByZWNhdGVkIHJvdXRpbmVzIHRoYXQgc3RpY2sgdGhlCi0vLyAgICBjb21tYW5kbGluZSBmbGFn
cyBpbnRvIGEgZmlsZS9zdHJpbmcgYW5kIHJlYWQgdGhlbSBiYWNrCi0vLyAgICBvdXQgYWdhaW4u
ICBJIGNhbiBzZWUgYSB1c2UgZm9yIENvbW1hbmRsaW5lRmxhZ3NJbnRvU3RyaW5nLAotLy8gICAg
Zm9yIGNyZWF0aW5nIGEgZmxhZ2ZpbGUsIGJ1dCB0aGUgcmVzdCBkb24ndCBzZWVtIHRoYXQgdXNl
ZnVsCi0vLyAgICAtLSBzb21lLCBJIHRoaW5rLCBhcmUgYSBwb29yLW1hbidzIGF0dGVtcHQgYXQg
RmxhZ1NhdmVyIC0tCi0vLyAgICBhbmQgYXJlIGluY2x1ZGVkIG9ubHkgdW50aWwgd2UgY2FuIGRl
bGV0ZSB0aGVtIGZyb20gY2FsbGVycy4KLS8vICAgIE5vdGUgdGhleSBkb24ndCBzYXZlIC0tZmxh
Z2ZpbGUgZmxhZ3MgKHRob3VnaCB0aGV5IGRvIHNhdmUKLS8vICAgIHRoZSByZXN1bHQgb2YgaGF2
aW5nIGNhbGxlZCB0aGUgZmxhZ2ZpbGUsIG9mIGNvdXJzZSkuCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1z
dGF0aWMgc3RyaW5nIFRoZXNlQ29tbWFuZGxpbmVGbGFnc0ludG9TdHJpbmcoCi0gICAgY29uc3Qg
dmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+JiBmbGFncykgewotICB2ZWN0b3I8Q29tbWFuZExp
bmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGk7Ci0KLSAgc2l6ZV90IHJldHZhbF9zcGFjZSA9
IDA7Ci0gIGZvciAoaSA9IGZsYWdzLmJlZ2luKCk7IGkgIT0gZmxhZ3MuZW5kKCk7ICsraSkgewot
ICAgIC8vIEFuIChvdmVyKWVzdGltYXRlIG9mIGhvdyBtdWNoIHNwYWNlIGl0IHdpbGwgdGFrZSB0
byBwcmludCB0aGlzIGZsYWcKLSAgICByZXR2YWxfc3BhY2UgKz0gaS0+bmFtZS5sZW5ndGgoKSAr
IGktPmN1cnJlbnRfdmFsdWUubGVuZ3RoKCkgKyA1OwotICB9Ci0KLSAgc3RyaW5nIHJldHZhbDsK
LSAgcmV0dmFsLnJlc2VydmUocmV0dmFsX3NwYWNlKTsKLSAgZm9yIChpID0gZmxhZ3MuYmVnaW4o
KTsgaSAhPSBmbGFncy5lbmQoKTsgKytpKSB7Ci0gICAgcmV0dmFsICs9ICItLSI7Ci0gICAgcmV0
dmFsICs9IGktPm5hbWU7Ci0gICAgcmV0dmFsICs9ICI9IjsKLSAgICByZXR2YWwgKz0gaS0+Y3Vy
cmVudF92YWx1ZTsKLSAgICByZXR2YWwgKz0gIlxuIjsKLSAgfQotICByZXR1cm4gcmV0dmFsOwot
fQotCi1zdHJpbmcgQ29tbWFuZGxpbmVGbGFnc0ludG9TdHJpbmcoKSB7Ci0gIHZlY3RvcjxDb21t
YW5kTGluZUZsYWdJbmZvPiBzb3J0ZWRfZmxhZ3M7Ci0gIEdldEFsbEZsYWdzKCZzb3J0ZWRfZmxh
Z3MpOwotICByZXR1cm4gVGhlc2VDb21tYW5kbGluZUZsYWdzSW50b1N0cmluZyhzb3J0ZWRfZmxh
Z3MpOwotfQotCi1ib29sIFJlYWRGbGFnc0Zyb21TdHJpbmcoY29uc3Qgc3RyaW5nJiBmbGFnZmls
ZWNvbnRlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qcHJvZ19u
YW1lKi8sICAvLyBUT0RPKGNzaWx2ZXJzKTogbml4IHRoaXMKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGVycm9yc19hcmVfZmF0YWwpIHsKLSAgRmxhZ1JlZ2lzdHJ5KiBjb25zdCByZWdp
c3RyeSA9IEZsYWdSZWdpc3RyeTo6R2xvYmFsUmVnaXN0cnkoKTsKLSAgRmxhZ1NhdmVySW1wbCBz
YXZlZF9zdGF0ZXMocmVnaXN0cnkpOwotICBzYXZlZF9zdGF0ZXMuU2F2ZUZyb21SZWdpc3RyeSgp
OwotCi0gIENvbW1hbmRMaW5lRmxhZ1BhcnNlciBwYXJzZXIocmVnaXN0cnkpOwotICByZWdpc3Ry
eS0+TG9jaygpOwotICBwYXJzZXIuUHJvY2Vzc09wdGlvbnNGcm9tU3RyaW5nTG9ja2VkKGZsYWdm
aWxlY29udGVudHMsIFNFVF9GTEFHU19WQUxVRSk7Ci0gIHJlZ2lzdHJ5LT5VbmxvY2soKTsKLSAg
Ly8gU2hvdWxkIHdlIGhhbmRsZSAtLWhlbHAgYW5kIHN1Y2ggd2hlbiByZWFkaW5nIGZsYWdzIGZy
b20gYSBzdHJpbmc/ICBTdXJlLgotICBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpOwotICBp
ZiAocGFyc2VyLlJlcG9ydEVycm9ycygpKSB7Ci0gICAgLy8gRXJyb3IuICBSZXN0b3JlIGFsbCBn
bG9iYWwgZmxhZ3MgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzLgotICAgIGlmIChlcnJvcnNfYXJl
X2ZhdGFsKQotICAgICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOwotICAgIHNhdmVkX3N0YXRlcy5SZXN0
b3JlVG9SZWdpc3RyeSgpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gdHJ1ZTsK
LX0KLQotLy8gVE9ETyhjc2lsdmVycyk6IG5peCBwcm9nX25hbWUgaW4gZmF2b3Igb2YgUHJvZ3Jh
bUludm9jYXRpb25TaG9ydE5hbWUoKQotYm9vbCBBcHBlbmRGbGFnc0ludG9GaWxlKGNvbnN0IHN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnByb2dfbmFtZSkgewotICBGSUxFICpmcDsKLSAg
aWYgKFNhZmVGT3BlbigmZnAsIGZpbGVuYW1lLmNfc3RyKCksICJhIikgIT0gMCkgewotICAgIHJl
dHVybiBmYWxzZTsKLSAgfQotCi0gIGlmIChwcm9nX25hbWUpCi0gICAgZnByaW50ZihmcCwgIiVz
XG4iLCBwcm9nX25hbWUpOwotCi0gIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBmbGFnczsK
LSAgR2V0QWxsRmxhZ3MoJmZsYWdzKTsKLSAgLy8gQnV0IHdlIGRvbid0IHdhbnQgLS1mbGFnZmls
ZSwgd2hpY2ggbGVhZHMgdG8gd2VpcmQgcmVjdXJzaW9uIGlzc3VlcwotICB2ZWN0b3I8Q29tbWFu
ZExpbmVGbGFnSW5mbz46Oml0ZXJhdG9yIGk7Ci0gIGZvciAoaSA9IGZsYWdzLmJlZ2luKCk7IGkg
IT0gZmxhZ3MuZW5kKCk7ICsraSkgewotICAgIGlmIChzdHJjbXAoaS0+bmFtZS5jX3N0cigpLCAi
ZmxhZ2ZpbGUiKSA9PSAwKSB7Ci0gICAgICBmbGFncy5lcmFzZShpKTsKLSAgICAgIGJyZWFrOwot
ICAgIH0KLSAgfQotICBmcHJpbnRmKGZwLCAiJXMiLCBUaGVzZUNvbW1hbmRsaW5lRmxhZ3NJbnRv
U3RyaW5nKGZsYWdzKS5jX3N0cigpKTsKLQotICBmY2xvc2UoZnApOwotICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBSZWFkRnJvbUZsYWdzRmlsZShjb25zdCBzdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBjaGFyKiBwcm9nX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXJyb3JzX2Fy
ZV9mYXRhbCkgewotICByZXR1cm4gUmVhZEZsYWdzRnJvbVN0cmluZyhSZWFkRmlsZUludG9TdHJp
bmcoZmlsZW5hbWUuY19zdHIoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2df
bmFtZSwgZXJyb3JzX2FyZV9mYXRhbCk7Ci19Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEJvb2xG
cm9tRW52KCkKLS8vIEludDMyRnJvbUVudigpCi0vLyBJbnQ2NEZyb21FbnYoKQotLy8gVWludDY0
RnJvbUVudigpCi0vLyBEb3VibGVGcm9tRW52KCkKLS8vIFN0cmluZ0Zyb21FbnYoKQotLy8gICAg
UmVhZHMgdGhlIHZhbHVlIGZyb20gdGhlIGVudmlyb25tZW50IGFuZCByZXR1cm5zIGl0LgotLy8g
ICAgV2UgdXNlIGFuIEZsYWdWYWx1ZSB0byBtYWtlIHRoZSBwYXJzaW5nIGVhc3kuCi0vLyAgICBF
eGFtcGxlIHVzYWdlOgotLy8gICAgICAgREVGSU5FX2Jvb2wobXlmbGFnLCBCb29sRnJvbUVudigi
TVlGTEFHX0RFRkFVTFQiLCBmYWxzZSksICJ3aGF0ZXZlciIpOwotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
Ym9vbCBCb29sRnJvbUVudihjb25zdCBjaGFyICp2LCBib29sIGRmbHQpIHsKLSAgcmV0dXJuIEdl
dEZyb21FbnYodiwgImJvb2wiLCBkZmx0KTsKLX0KLWludDMyIEludDMyRnJvbUVudihjb25zdCBj
aGFyICp2LCBpbnQzMiBkZmx0KSB7Ci0gIHJldHVybiBHZXRGcm9tRW52KHYsICJpbnQzMiIsIGRm
bHQpOwotfQotaW50NjQgSW50NjRGcm9tRW52KGNvbnN0IGNoYXIgKnYsIGludDY0IGRmbHQpICAg
IHsKLSAgcmV0dXJuIEdldEZyb21FbnYodiwgImludDY0IiwgZGZsdCk7Ci19Ci11aW50NjQgVWlu
dDY0RnJvbUVudihjb25zdCBjaGFyICp2LCB1aW50NjQgZGZsdCkgewotICByZXR1cm4gR2V0RnJv
bUVudih2LCAidWludDY0IiwgZGZsdCk7Ci19Ci1kb3VibGUgRG91YmxlRnJvbUVudihjb25zdCBj
aGFyICp2LCBkb3VibGUgZGZsdCkgewotICByZXR1cm4gR2V0RnJvbUVudih2LCAiZG91YmxlIiwg
ZGZsdCk7Ci19Ci0KLSNpZmRlZiBfTVNDX1ZFUgotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMg
IHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpIC8vIGlnbm9yZSBnZXRlbnYgc2VjdXJpdHkg
d2FybmluZwotI2VuZGlmCi1jb25zdCBjaGFyICpTdHJpbmdGcm9tRW52KGNvbnN0IGNoYXIgKnZh
cm5hbWUsIGNvbnN0IGNoYXIgKmRmbHQpIHsKLSAgY29uc3QgY2hhciogY29uc3QgdmFsID0gZ2V0
ZW52KHZhcm5hbWUpOwotICByZXR1cm4gdmFsID8gdmFsIDogZGZsdDsKLX0KLSNpZmRlZiBfTVND
X1ZFUgotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS8vIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigpCi0vLyAgICBSZWdpc3RlckZsYWdWYWxpZGF0b3Io
KSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBjbGllbnRzIHVzZSB0bwotLy8gICAgJ2RlY29yYXRlJyBh
IGZsYWcgd2l0aCBhIHZhbGlkYXRpb24gZnVuY3Rpb24uICBPbmNlIHRoaXMgaXMKLS8vICAgIGRv
bmUsIGV2ZXJ5IHRpbWUgdGhlIGZsYWcgaXMgc2V0IChpbmNsdWRpbmcgd2hlbiB0aGUgZmxhZwot
Ly8gICAgaXMgcGFyc2VkIGZyb20gYXJndiksIHRoZSB2YWxpZGF0b3ItZnVuY3Rpb24gaXMgY2Fs
bGVkLgotLy8gICAgICAgVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0cnVlIGlmIHRoZSB2YWxpZGF0
b3Igd2FzIGFkZGVkCi0vLyAgICBzdWNjZXNzZnVsbHksIG9yIGZhbHNlIGlmIG5vdDogdGhlIGZs
YWcgYWxyZWFkeSBoYXMgYSB2YWxpZGF0b3IsCi0vLyAgICAob25seSBvbmUgYWxsb3dlZCBwZXIg
ZmxhZyksIHRoZSAxc3QgYXJnIGlzbid0IGEgZmxhZywgZXRjLgotLy8gICAgICAgVGhpcyBmdW5j
dGlvbiBpcyBub3QgdGhyZWFkLXNhZmUuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1ib29sIFJlZ2lzdGVy
RmxhZ1ZhbGlkYXRvcihjb25zdCBib29sKiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgYm9vbCkpIHsKLSAgcmV0dXJuIEFk
ZEZsYWdWYWxpZGF0b3IoZmxhZywgcmVpbnRlcnByZXRfY2FzdDxWYWxpZGF0ZUZuUHJvdG8+KHZh
bGlkYXRlX2ZuKSk7Ci19Ci1ib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBpbnQzMiog
ZmxhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29u
c3QgY2hhciosIGludDMyKSkgewotICByZXR1cm4gQWRkRmxhZ1ZhbGlkYXRvcihmbGFnLCByZWlu
dGVycHJldF9jYXN0PFZhbGlkYXRlRm5Qcm90bz4odmFsaWRhdGVfZm4pKTsKLX0KLWJvb2wgUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IGludDY0KiBmbGFnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgaW50NjQpKSB7Ci0gIHJl
dHVybiBBZGRGbGFnVmFsaWRhdG9yKGZsYWcsIHJlaW50ZXJwcmV0X2Nhc3Q8VmFsaWRhdGVGblBy
b3RvPih2YWxpZGF0ZV9mbikpOwotfQotYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0b3IoY29uc3Qg
dWludDY0KiBmbGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAoKnZhbGlkYXRl
X2ZuKShjb25zdCBjaGFyKiwgdWludDY0KSkgewotICByZXR1cm4gQWRkRmxhZ1ZhbGlkYXRvcihm
bGFnLCByZWludGVycHJldF9jYXN0PFZhbGlkYXRlRm5Qcm90bz4odmFsaWRhdGVfZm4pKTsKLX0K
LWJvb2wgUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKGNvbnN0IGRvdWJsZSogZmxhZywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hhciosIGRvdWJs
ZSkpIHsKLSAgcmV0dXJuIEFkZEZsYWdWYWxpZGF0b3IoZmxhZywgcmVpbnRlcnByZXRfY2FzdDxW
YWxpZGF0ZUZuUHJvdG8+KHZhbGlkYXRlX2ZuKSk7Ci19Ci1ib29sIFJlZ2lzdGVyRmxhZ1ZhbGlk
YXRvcihjb25zdCBzdHJpbmcqIGZsYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
ICgqdmFsaWRhdGVfZm4pKGNvbnN0IGNoYXIqLCBjb25zdCBzdHJpbmcmKSkgewotICByZXR1cm4g
QWRkRmxhZ1ZhbGlkYXRvcihmbGFnLCByZWludGVycHJldF9jYXN0PFZhbGlkYXRlRm5Qcm90bz4o
dmFsaWRhdGVfZm4pKTsKLX0KLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUGFyc2VDb21tYW5kTGlu
ZUZsYWdzKCkKLS8vIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3MoKQotLy8gSGFuZGxlQ29t
bWFuZExpbmVIZWxwRmxhZ3MoKQotLy8gICAgVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbiBjYWxs
ZWQgZnJvbSBtYWluKCksIHRvIGFjdHVhbGx5Ci0vLyAgICBwYXJzZSB0aGUgY29tbWFuZGxpbmUu
ICBJdCBtb2RpZmllcyBhcmdjIGFuZCBhcmd2IGFzIGRlc2NyaWJlZAotLy8gICAgYXQgdGhlIHRv
cCBvZiBnZmxhZ3MuaC4gIFlvdSBjYW4gYWxzbyBkaXZpZGUgdGhpcwotLy8gICAgZnVuY3Rpb24g
aW50byB0d28gcGFydHMsIGlmIHlvdSB3YW50IHRvIGRvIHdvcmsgYmV0d2VlbgotLy8gICAgdGhl
IHBhcnNpbmcgb2YgdGhlIGZsYWdzIGFuZCB0aGUgcHJpbnRpbmcgb2YgYW55IGhlbHAgb3V0cHV0
LgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIHVpbnQzMiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3NJ
bnRlcm5hbChpbnQqIGFyZ2MsIGNoYXIqKiogYXJndiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW1vdmVfZmxhZ3MsIGJvb2wgZG9fcmVwb3J0KSB7
Ci0gIFNldEFyZ3YoKmFyZ2MsIGNvbnN0X2Nhc3Q8Y29uc3QgY2hhcioqPigqYXJndikpOyAgICAv
LyBzYXZlIGl0IGZvciBsYXRlcgotCi0gIEZsYWdSZWdpc3RyeSogY29uc3QgcmVnaXN0cnkgPSBG
bGFnUmVnaXN0cnk6Okdsb2JhbFJlZ2lzdHJ5KCk7Ci0gIENvbW1hbmRMaW5lRmxhZ1BhcnNlciBw
YXJzZXIocmVnaXN0cnkpOwotCi0gIC8vIFdoZW4gd2UgcGFyc2UgdGhlIGNvbW1hbmRsaW5lIGZs
YWdzLCB3ZSdsbCBoYW5kbGUgLS1mbGFnZmlsZSwKLSAgLy8gLS10cnlmcm9tZW52LCBldGMuIGFz
IHdlIHNlZSB0aGVtIChzaW5jZSBmbGFnLWV2YWx1YXRpb24gb3JkZXIKLSAgLy8gbWF5IGJlIGlt
cG9ydGFudCkuICBCdXQgc29tZXRpbWVzIGFwcHMgc2V0IEZMQUdTX3RyeWZyb21lbnYvZXRjLgot
ICAvLyBtYW51YWxseSBiZWZvcmUgY2FsbGluZyBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MuICBXZSB3
YW50IHRvIGV2YWx1YXRlCi0gIC8vIHRob3NlIHRvbywgYXMgaWYgdGhleSB3ZXJlIHRoZSBmaXJz
dCBmbGFncyBvbiB0aGUgY29tbWFuZGxpbmUuCi0gIHJlZ2lzdHJ5LT5Mb2NrKCk7Ci0gIHBhcnNl
ci5Qcm9jZXNzRmxhZ2ZpbGVMb2NrZWQoRkxBR1NfZmxhZ2ZpbGUsIFNFVF9GTEFHU19WQUxVRSk7
Ci0gIC8vIExhc3QgYXJnIGhlcmUgaW5kaWNhdGVzIHdoZXRoZXIgZmxhZy1ub3QtZm91bmQgaXMg
YSBmYXRhbCBlcnJvciBvciBub3QKLSAgcGFyc2VyLlByb2Nlc3NGcm9tZW52TG9ja2VkKEZMQUdT
X2Zyb21lbnYsIFNFVF9GTEFHU19WQUxVRSwgdHJ1ZSk7Ci0gIHBhcnNlci5Qcm9jZXNzRnJvbWVu
dkxvY2tlZChGTEFHU190cnlmcm9tZW52LCBTRVRfRkxBR1NfVkFMVUUsIGZhbHNlKTsKLSAgcmVn
aXN0cnktPlVubG9jaygpOwotCi0gIC8vIE5vdyBnZXQgdGhlIGZsYWdzIHNwZWNpZmllZCBvbiB0
aGUgY29tbWFuZGxpbmUKLSAgY29uc3QgaW50IHIgPSBwYXJzZXIuUGFyc2VOZXdDb21tYW5kTGlu
ZUZsYWdzKGFyZ2MsIGFyZ3YsIHJlbW92ZV9mbGFncyk7Ci0KLSAgaWYgKGRvX3JlcG9ydCkKLSAg
ICBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpOyAgIC8vIG1heSBjYXVzZSB1cyB0byBleGl0
IG9uIC0taGVscCwgZXRjLgotCi0gIC8vIFNlZSBpZiBhbnkgb2YgdGhlIHVuc2V0IGZsYWdzIGZh
aWwgdGhlaXIgdmFsaWRhdGlvbiBjaGVja3MKLSAgcGFyc2VyLlZhbGlkYXRlQWxsRmxhZ3MoKTsK
LQotICBpZiAocGFyc2VyLlJlcG9ydEVycm9ycygpKSAgICAgICAgLy8gbWF5IGNhdXNlIHVzIHRv
IGV4aXQgb24gaWxsZWdhbCBmbGFncwotICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLSAgcmV0dXJu
IHI7Ci19Ci0KLXVpbnQzMiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoaW50KiBhcmdjLCBjaGFyKioq
IGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKSB7Ci0gIHJldHVybiBQYXJzZUNvbW1hbmRMaW5lRmxh
Z3NJbnRlcm5hbChhcmdjLCBhcmd2LCByZW1vdmVfZmxhZ3MsIHRydWUpOwotfQotCi11aW50MzIg
UGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncyhpbnQqIGFyZ2MsIGNoYXIqKiogYXJndiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVtb3ZlX2ZsYWdzKSB7Ci0g
IHJldHVybiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3NJbnRlcm5hbChhcmdjLCBhcmd2LCByZW1vdmVf
ZmxhZ3MsIGZhbHNlKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEFsbG93Q29tbWFuZExpbmVS
ZXBhcnNpbmcoKQotLy8gUmVwYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzKCkKLS8vICAgIFRo
aXMgaXMgbW9zdCB1c2VmdWwgZm9yIHNoYXJlZCBsaWJyYXJpZXMuICBUaGUgaWRlYSBpcyBpZgot
Ly8gICAgYSBmbGFnIGlzIGRlZmluZWQgaW4gYSBzaGFyZWQgbGlicmFyeSB0aGF0IGlzIGRsb3Bl
bidlZAotLy8gICAgc29tZXRpbWUgYWZ0ZXIgbWFpbigpLCB5b3UgY2FuIFBhcnNlQ29tbWFuZExp
bmVGbGFncyBiZWZvcmUKLS8vICAgIHRoZSBkbG9wZW4sIHRoZW4gUmVwYXJzZUNvbW1hbmRMaW5l
Tm9uSGVscEZsYWdzKCkgYWZ0ZXIgdGhlCi0vLyAgICBkbG9wZW4sIHRvIGdldCB0aGUgbmV3IGZs
YWdzLiAgQnV0IHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkKLS8vICAgIEFsbG93KCkgaXQ7IG90aGVy
d2lzZSwgeW91IGdldCB0aGUgbm9ybWFsIGRlZmF1bHQgYmVoYXZpb3IKLS8vICAgIG9mIHVucmVj
b2duaXplZCBmbGFncyBjYWxsaW5nIGEgZmF0YWwgZXJyb3IuCi0vLyBUT0RPKGNzaWx2ZXJzKTog
dGhpcyBpc24ndCB1c2VkLiAgSnVzdCBkZWxldGUgaXQ/Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12b2lk
IEFsbG93Q29tbWFuZExpbmVSZXBhcnNpbmcoKSB7Ci0gIGFsbG93X2NvbW1hbmRfbGluZV9yZXBh
cnNpbmcgPSB0cnVlOwotfQotCi12b2lkIFJlcGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncygp
IHsKLSAgLy8gV2UgbWFrZSBhIGNvcHkgb2YgYXJnYyBhbmQgYXJndiB0byBwYXNzIGluCi0gIGNv
bnN0IHZlY3RvcjxzdHJpbmc+JiBhcmd2cyA9IEdldEFyZ3ZzKCk7Ci0gIGludCB0bXBfYXJnYyA9
IHN0YXRpY19jYXN0PGludD4oYXJndnMuc2l6ZSgpKTsKLSAgY2hhcioqIHRtcF9hcmd2ID0gbmV3
IGNoYXIqIFt0bXBfYXJnYyArIDFdOwotICBmb3IgKGludCBpID0gMDsgaSA8IHRtcF9hcmdjOyAr
K2kpCi0gICAgdG1wX2FyZ3ZbaV0gPSBzdHJkdXAoYXJndnNbaV0uY19zdHIoKSk7ICAgLy8gVE9E
Tyhjc2lsdmVycyk6IGRvbid0IGR1cAotCi0gIFBhcnNlQ29tbWFuZExpbmVOb25IZWxwRmxhZ3Mo
JnRtcF9hcmdjLCAmdG1wX2FyZ3YsIGZhbHNlKTsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IHRt
cF9hcmdjOyArK2kpCi0gICAgZnJlZSh0bXBfYXJndltpXSk7Ci0gIGRlbGV0ZVtdIHRtcF9hcmd2
OwotfQotCi12b2lkIFNodXREb3duQ29tbWFuZExpbmVGbGFncygpIHsKLSAgRmxhZ1JlZ2lzdHJ5
OjpEZWxldGVHbG9iYWxSZWdpc3RyeSgpOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIEdGTEFHU19O
QU1FU1BBQ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzLmguaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFncy5oLmlu
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzI0ZDM5MDA4Y2QuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvc3JjL2dmbGFncy5oLmluCisrKyAvZGV2L251bGwKQEAgLTEsNTcyICswLDAgQEAK
LS8vIENvcHlyaWdodCAoYykgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0t
LQotLy8gUmV2YW1wZWQgYW5kIHJlb3JnYW5pemVkIGJ5IENyYWlnIFNpbHZlcnN0ZWluCi0vLwot
Ly8gVGhpcyBpcyB0aGUgZmlsZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBieSBhbnkgZmlsZSB3
aGljaCBkZWNsYXJlcwotLy8gb3IgZGVmaW5lcyBhIGNvbW1hbmQgbGluZSBmbGFnIG9yIHdhbnRz
IHRvIHBhcnNlIGNvbW1hbmQgbGluZSBmbGFncwotLy8gb3IgcHJpbnQgYSBwcm9ncmFtIHVzYWdl
IG1lc3NhZ2UgKHdoaWNoIHdpbGwgaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dAotLy8gZmxhZ3Mp
LiAgRXhlY3V0aXZlIHN1bW1hcnksIGluIHRoZSBmb3JtIG9mIGFuIGV4YW1wbGUgZm9vLmNjIGZp
bGU6Ci0vLwotLy8gICAgI2luY2x1ZGUgImZvby5oIiAgICAgICAgIC8vIGZvby5oIGhhcyBhIGxp
bmUgIkRFQ0xBUkVfaW50MzIoc3RhcnQpOyIKLS8vICAgICNpbmNsdWRlICJ2YWxpZGF0b3JzLmgi
ICAvLyBoeXBvdGhldGljYWwgZmlsZSBkZWZpbmluZyBWYWxpZGF0ZUlzRmlsZSgpCi0vLwotLy8g
ICAgREVGSU5FX2ludDMyKGVuZCwgMTAwMCwgIlRoZSBsYXN0IHJlY29yZCB0byByZWFkIik7Ci0v
LwotLy8gICAgREVGSU5FX3N0cmluZyhmaWxlbmFtZSwgIm15X2ZpbGUudHh0IiwgIlRoZSBmaWxl
IHRvIHJlYWQiKTsKLS8vICAgIC8vIENyYXNoIGlmIHRoZSBzcGVjaWZpZWQgZmlsZSBkb2VzIG5v
dCBleGlzdC4KLS8vICAgIHN0YXRpYyBib29sIGR1bW15ID0gUmVnaXN0ZXJGbGFnVmFsaWRhdG9y
KCZGTEFHU19maWxlbmFtZSwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZWYWxpZGF0ZUlzRmlsZSk7Ci0vLwotLy8gICAgREVDTEFSRV9ib29sKHZlcmJv
c2UpOyAvLyBzb21lIG90aGVyIGZpbGUgaGFzIGEgREVGSU5FX2Jvb2wodmVyYm9zZSwgLi4uKQot
Ly8KLS8vICAgIHZvaWQgTXlGdW5jKCkgewotLy8gICAgICBpZiAoRkxBR1NfdmVyYm9zZSkgcHJp
bnRmKCJSZWNvcmRzICVkLSVkXG4iLCBGTEFHU19zdGFydCwgRkxBR1NfZW5kKTsKLS8vICAgIH0K
LS8vCi0vLyAgICBUaGVuLCBhdCB0aGUgY29tbWFuZC1saW5lOgotLy8gICAgICAgLi9mb28gLS1u
b3ZlcmJvc2UgLS1zdGFydD01IC0tZW5kPTEwMAotLy8KLS8vIEZvciBtb3JlIGRldGFpbHMsIHNl
ZQotLy8gICAgZG9jL2dmbGFncy5odG1sCi0vLwotLy8gLS0tIEEgbm90ZSBhYm91dCB0aHJlYWQt
c2FmZXR5OgotLy8KLS8vIFdlIGRlc2NyaWJlIG1hbnkgZnVuY3Rpb25zIGluIHRoaXMgcm91dGlu
ZSBhcyBiZWluZyB0aHJlYWQtaG9zdGlsZSwKLS8vIHRocmVhZC1jb21wYXRpYmxlLCBvciB0aHJl
YWQtc2FmZS4gIEhlcmUgYXJlIHRoZSBtZWFuaW5ncyB3ZSB1c2U6Ci0vLwotLy8gdGhyZWFkLXNh
ZmU6IGl0IGlzIHNhZmUgZm9yIG11bHRpcGxlIHRocmVhZHMgdG8gY2FsbCB0aGlzIHJvdXRpbmUK
LS8vICAgKG9yLCB3aGVuIHJlZmVycmluZyB0byBhIGNsYXNzLCBtZXRob2RzIG9mIHRoaXMgY2xh
c3MpCi0vLyAgIGNvbmN1cnJlbnRseS4KLS8vIHRocmVhZC1ob3N0aWxlOiBpdCBpcyBub3Qgc2Fm
ZSBmb3IgbXVsdGlwbGUgdGhyZWFkcyB0byBjYWxsIHRoaXMKLS8vICAgcm91dGluZSAob3IgbWV0
aG9kcyBvZiB0aGlzIGNsYXNzKSBjb25jdXJyZW50bHkuICBJbiBnZmxhZ3MsCi0vLyAgIG1vc3Qg
dGhyZWFkLWhvc3RpbGUgcm91dGluZXMgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBlYXJseSBp
biwKLS8vICAgb3IgZXZlbiBiZWZvcmUsIG1haW4oKSAtLSB0aGF0IGlzLCBiZWZvcmUgdGhyZWFk
cyBhcmUgc3Bhd25lZC4KLS8vIHRocmVhZC1jb21wYXRpYmxlOiBpdCBpcyBzYWZlIGZvciBtdWx0
aXBsZSB0aHJlYWRzIHRvIHJlYWQgZnJvbQotLy8gICB0aGlzIHZhcmlhYmxlICh3aGVuIGFwcGxp
ZWQgdG8gdmFyaWFibGVzKSwgb3IgdG8gY2FsbCBjb25zdAotLy8gICBtZXRob2RzIG9mIHRoaXMg
Y2xhc3MgKHdoZW4gYXBwbGllZCB0byBjbGFzc2VzKSwgYXMgbG9uZyBhcyBubwotLy8gICBvdGhl
ciB0aHJlYWQgaXMgd3JpdGluZyB0byB0aGUgdmFyaWFibGUgb3IgY2FsbGluZyBub24tY29uc3QK
LS8vICAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgotCi0jaWZuZGVmIEdGTEFHU19HRkxBR1NfSF8K
LSNkZWZpbmUgR0ZMQUdTX0dGTEFHU19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHZlY3Rvcj4KLQotI2luY2x1ZGUgImdmbGFnc19kZWNsYXJlLmgiIC8vIElXWVUgcHJhZ21hOiBl
eHBvcnQKLQotCi0vLyBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgdmFyaWFibGVzIGRlZmluZWQg
aW4gdXNlciBjb2RlCi0jaWZuZGVmIEdGTEFHU19ETExfREVGSU5FX0ZMQUcKLSMgIGlmZGVmIF9N
U0NfVkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFRklORV9GTEFHIF9fZGVjbHNwZWMoZGxs
ZXhwb3J0KQotIyAgZWxzZQotIyAgICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwotIyAg
ZW5kaWYKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gVG8gYWN0dWFsbHkgZGVmaW5lIGEgZmxhZyBpbiBhIGZpbGUsIHVzZSBE
RUZJTkVfYm9vbCwKLS8vIERFRklORV9zdHJpbmcsIGV0Yy4gYXQgdGhlIGJvdHRvbSBvZiB0aGlz
IGZpbGUuICBZb3UgbWF5IGFsc28gZmluZAotLy8gaXQgdXNlZnVsIHRvIHJlZ2lzdGVyIGEgdmFs
aWRhdG9yIHdpdGggdGhlIGZsYWcuICBUaGlzIGVuc3VyZXMgdGhhdAotLy8gd2hlbiB0aGUgZmxh
ZyBpcyBwYXJzZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUsIG9yIGlzIGxhdGVyIHNldCB2aWEKLS8v
IFNldENvbW1hbmRMaW5lT3B0aW9uLCB3ZSBjYWxsIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uLiBJ
dCBpcyBfbm90XwotLy8gY2FsbGVkIHdoZW4geW91IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIGZs
YWcgZGlyZWN0bHkgdXNpbmcgdGhlID0gb3BlcmF0b3IuCi0vLwotLy8gVGhlIHZhbGlkYXRpb24g
ZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBmbGFnIHZhbHVlIGlzIHZhbGlkLCBh
bmQKLS8vIGZhbHNlIG90aGVyd2lzZS4gSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9y
IHRoZSBuZXcgc2V0dGluZyBvZiB0aGUKLS8vIGZsYWcsIHRoZSBmbGFnIHdpbGwgcmV0YWluIGl0
cyBjdXJyZW50IHZhbHVlLiBJZiBpdCByZXR1cm5zIGZhbHNlIGZvciB0aGUKLS8vIGRlZmF1bHQg
dmFsdWUsIFBhcnNlQ29tbWFuZExpbmVGbGFncygpIHdpbGwgZGllLgotLy8KLS8vIFRoaXMgZnVu
Y3Rpb24gaXMgc2FmZSB0byBjYWxsIGF0IGdsb2JhbCBjb25zdHJ1Y3QgdGltZSAoYXMgaW4gdGhl
Ci0vLyBleGFtcGxlIGJlbG93KS4KLS8vCi0vLyBFeGFtcGxlIHVzZToKLS8vICAgIHN0YXRpYyBi
b29sIFZhbGlkYXRlUG9ydChjb25zdCBjaGFyKiBmbGFnbmFtZSwgaW50MzIgdmFsdWUpIHsKLS8v
ICAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPCAzMjc2OCkgICAvLyB2YWx1ZSBpcyBvawot
Ly8gICAgICAgICByZXR1cm4gdHJ1ZTsKLS8vICAgICAgIHByaW50ZigiSW52YWxpZCB2YWx1ZSBm
b3IgLS0lczogJWRcbiIsIGZsYWduYW1lLCAoaW50KXZhbHVlKTsKLS8vICAgICAgIHJldHVybiBm
YWxzZTsKLS8vICAgIH0KLS8vICAgIERFRklORV9pbnQzMihwb3J0LCAwLCAiV2hhdCBwb3J0IHRv
IGxpc3RlbiBvbiIpOwotLy8gICAgc3RhdGljIGJvb2wgZHVtbXkgPSBSZWdpc3RlckZsYWdWYWxp
ZGF0b3IoJkZMQUdTX3BvcnQsICZWYWxpZGF0ZVBvcnQpOwotCi0vLyBSZXR1cm5zIHRydWUgaWYg
c3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQsIGZhbHNlIGlmIG5vdCAoYmVjYXVzZSB0aGUKLS8vIGZp
cnN0IGFyZ3VtZW50IGRvZXNuJ3QgcG9pbnQgdG8gYSBjb21tYW5kLWxpbmUgZmxhZywgb3IgYmVj
YXVzZSBhCi0vLyB2YWxpZGF0b3IgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB0aGlzIGZsYWcp
LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihjb25z
dCBib29sKiAgICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwgYm9v
bCkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcihj
b25zdCBpbnQzMiogICAgICAgZmxhZywgYm9vbCAoKnZhbGlkYXRlX2ZuKShjb25zdCBjaGFyKiwg
aW50MzIpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZsYWdWYWxpZGF0
b3IoY29uc3QgaW50NjQqICAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbikoY29uc3QgY2hh
ciosIGludDY0KSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVnaXN0ZXJGbGFnVmFs
aWRhdG9yKGNvbnN0IHVpbnQ2NCogICAgICBmbGFnLCBib29sICgqdmFsaWRhdGVfZm4pKGNvbnN0
IGNoYXIqLCB1aW50NjQpKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBSZWdpc3RlckZs
YWdWYWxpZGF0b3IoY29uc3QgZG91YmxlKiAgICAgIGZsYWcsIGJvb2wgKCp2YWxpZGF0ZV9mbiko
Y29uc3QgY2hhciosIGRvdWJsZSkpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIFJlZ2lz
dGVyRmxhZ1ZhbGlkYXRvcihjb25zdCBzdGQ6OnN0cmluZyogZmxhZywgYm9vbCAoKnZhbGlkYXRl
X2ZuKShjb25zdCBjaGFyKiwgY29uc3Qgc3RkOjpzdHJpbmcmKSk7Ci0KLS8vIENvbnZlbmllbmNl
IG1hY3JvIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgZmxhZyB2YWxpZGF0b3IKLSNkZWZpbmUg
REVGSU5FX3ZhbGlkYXRvcihuYW1lLCB2YWxpZGF0b3IpIFwKLSAgICBzdGF0aWMgY29uc3QgYm9v
bCBuYW1lIyNfdmFsaWRhdG9yX3JlZ2lzdGVyZWQgPSBcCi0gICAgICAgICAgICBHRkxBR1NfTkFN
RVNQQUNFOjpSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTXyMjbmFtZSwgdmFsaWRhdG9yKQot
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBUaGVzZSBtZXRob2RzIGFyZSB0aGUgYmVzdCB3YXkgdG8g
Z2V0IGFjY2VzcyB0byBpbmZvIGFib3V0IHRoZQotLy8gbGlzdCBvZiBjb21tYW5kbGluZSBmbGFn
cy4gIE5vdGUgdGhhdCB0aGVzZSByb3V0aW5lcyBhcmUgcHJldHR5IHNsb3cuCi0vLyAgIEdldEFs
bEZsYWdzOiBtb3N0bHktY29tcGxldGUgaW5mbyBhYm91dCB0aGUgbGlzdCwgc29ydGVkIGJ5IGZp
bGUuCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnczogcHJldHR5LXByaW50cyB0aGUgbGlzdCB0byBz
dGRvdXQgKHdoYXQgLS1oZWxwIGRvZXMpCi0vLyAgIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0
OiBsaW1pdCB0byBmaWxlbmFtZXMgd2l0aCByZXN0cmljdCBhcyBhIHN1YnN0cgotLy8KLS8vIElu
IGFkZGl0aW9uIHRvIGFjY2Vzc2luZyBmbGFncywgeW91IGNhbiBhbHNvIGFjY2VzcyBhcmd2WzBd
ICh0aGUgcHJvZ3JhbQotLy8gbmFtZSkgYW5kIGFyZ3YgKHRoZSBlbnRpcmUgY29tbWFuZGxpbmUp
LCB3aGljaCB3ZSBzb2NrIGF3YXkgYSBjb3B5IG9mLgotLy8gVGhlc2UgdmFyaWFibGVzIGFyZSBz
dGF0aWMsIHNvIHlvdSBzaG91bGQgb25seSBzZXQgdGhlbSBvbmNlLgotLy8KLS8vIE5vIG5lZWQg
dG8gZXhwb3J0IHRoaXMgZGF0YSBvbmx5IHN0cnVjdHVyZSBmcm9tIERMTCwgYXZvaWRpbmcgVlMg
d2FybmluZyA0MjUxLgotc3RydWN0IENvbW1hbmRMaW5lRmxhZ0luZm8gewotICBzdGQ6OnN0cmlu
ZyBuYW1lOyAgICAgICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5n
IHR5cGU7ICAgICAgICAgICAgLy8gdGhlIHR5cGUgb2YgdGhlIGZsYWc6IGludDMyLCBldGMKLSAg
c3RkOjpzdHJpbmcgZGVzY3JpcHRpb247ICAgICAvLyB0aGUgImhlbHAgdGV4dCIgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBmbGFnCi0gIHN0ZDo6c3RyaW5nIGN1cnJlbnRfdmFsdWU7ICAgLy8gdGhlIGN1
cnJlbnQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGRlZmF1bHRfdmFsdWU7ICAg
Ly8gdGhlIGRlZmF1bHQgdmFsdWUsIGFzIGEgc3RyaW5nCi0gIHN0ZDo6c3RyaW5nIGZpbGVuYW1l
OyAgICAgICAgLy8gJ2NsZWFuZWQnIHZlcnNpb24gb2YgZmlsZW5hbWUgaG9sZGluZyB0aGUgZmxh
ZwotICBib29sIGhhc192YWxpZGF0b3JfZm47ICAgICAgIC8vIHRydWUgaWYgUmVnaXN0ZXJGbGFn
VmFsaWRhdG9yIGNhbGxlZCBvbiB0aGlzIGZsYWcKLSAgYm9vbCBpc19kZWZhdWx0OyAgICAgICAg
ICAgICAvLyB0cnVlIGlmIHRoZSBmbGFnIGhhcyB0aGUgZGVmYXVsdCB2YWx1ZSBhbmQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkg
ZnJvbSB0aGUgY21kbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHZp
YSBTZXRDb21tYW5kTGluZU9wdGlvbgotICBjb25zdCB2b2lkKiBmbGFnX3B0cjsgICAgICAgIC8v
IHBvaW50ZXIgdG8gdGhlIGZsYWcncyBjdXJyZW50IHZhbHVlIChpLmUuIEZMQUdTX2ZvbykKLX07
Ci0KLS8vIFVzaW5nIHRoaXMgaW5zaWRlIG9mIGEgdmFsaWRhdG9yIGlzIGEgcmVjaXBlIGZvciBh
IGRlYWRsb2NrLgotLy8gVE9ETyh1c2VyKSBGaXggbG9ja2luZyB3aGVuIHZhbGlkYXRvcnMgYXJl
IHJ1bm5pbmcsIHRvIG1ha2UgaXQgc2FmZSB0bwotLy8gY2FsbCB2YWxpZGF0b3JzIGR1cmluZyBQ
YXJzZUFsbEZsYWdzLgotLy8gQWxzbyBtYWtlIHN1cmUgdGhlbiB0byB1bmNvbW1lbnQgdGhlIGNv
cnJlc3BvbmRpbmcgdW5pdCB0ZXN0IGluCi0vLyBnZmxhZ3NfdW5pdHRlc3Quc2gKLWV4dGVybiBH
RkxBR1NfRExMX0RFQ0wgdm9pZCBHZXRBbGxGbGFncyhzdGQ6OnZlY3RvcjxDb21tYW5kTGluZUZs
YWdJbmZvPiogT1VUUFVUKTsKLS8vIFRoZXNlIHR3byBhcmUgYWN0dWFsbHkgZGVmaW5lZCBpbiBn
ZmxhZ3NfcmVwb3J0aW5nLmNjLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIFNob3dVc2Fn
ZVdpdGhGbGFncyhjb25zdCBjaGFyICphcmd2MCk7ICAvLyB3aGF0IC0taGVscCBkb2VzCi1leHRl
cm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QoY29uc3Qg
Y2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKnJlc3RyaWN0KTsKLQotLy8gQ3JlYXRlIGEgZGVzY3Jp
cHRpdmUgc3RyaW5nIGZvciBhIGZsYWcuCi0vLyBHb2VzIHRvIHNvbWUgdHJvdWJsZSB0byBtYWtl
IHByZXR0eSBsaW5lIGJyZWFrcy4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgc3RkOjpzdHJpbmcg
RGVzY3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcpOwotCi0vLyBU
aHJlYWQtaG9zdGlsZTsgbWVhbnQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgdGhyZWFkcyBhcmUg
c3Bhd25lZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdm9pZCBTZXRBcmd2KGludCBhcmdjLCBj
b25zdCBjaGFyKiogYXJndik7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0aHJl
YWQtc2FmZSBhcyBsb25nIGFzIFNldEFyZ3YoKSBpcwotLy8gb25seSBjYWxsZWQgYmVmb3JlIGFu
eSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mIEdldEFyZ3ZzKCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0
IGNoYXIqIEdldEFyZ3YoKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIG9mIGFyZ3YgYXMg
YSBzdHJpbmcKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogR2V0QXJndjAoKTsg
ICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IGFyZ3YwCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNM
IHVpbnQzMiBHZXRBcmd2U3VtKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2ltcGxlIGNo
ZWNrc3VtIG9mIGFyZ3YKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3Jh
bUludm9jYXRpb25OYW1lKCk7ICAgICAgICAvLyBhcmd2MCwgb3IgIlVOS05PV04iIGlmIG5vdCBz
ZXQKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciogUHJvZ3JhbUludm9jYXRpb25T
aG9ydE5hbWUoKTsgICAvLyBiYXNlbmFtZShhcmd2MCkKLQotLy8gUHJvZ3JhbVVzYWdlKCkgaXMg
dGhyZWFkLXNhZmUgYXMgbG9uZyBhcyBTZXRVc2FnZU1lc3NhZ2UoKSBpcyBvbmx5Ci0vLyBjYWxs
ZWQgYmVmb3JlIGFueSB0aHJlYWRzIHN0YXJ0LgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25z
dCBjaGFyKiBQcm9ncmFtVXNhZ2UoKTsgICAgICAgICAgICAgICAgIC8vIHN0cmluZyBzZXQgYnkg
U2V0VXNhZ2VNZXNzYWdlKCkKLQotLy8gVmVyc2lvblN0cmluZygpIGlzIHRocmVhZC1zYWZlIGFz
IGxvbmcgYXMgU2V0VmVyc2lvblN0cmluZygpIGlzIG9ubHkKLS8vIGNhbGxlZCBiZWZvcmUgYW55
IHRocmVhZHMgc3RhcnQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGNvbnN0IGNoYXIqIFZlcnNp
b25TdHJpbmcoKTsgICAgICAgICAgICAgICAgLy8gc3RyaW5nIHNldCBieSBTZXRWZXJzaW9uU3Ry
aW5nKCkKLQotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOb3JtYWxseSB5b3UgYWNjZXNzIGNvbW1h
bmRsaW5lIGZsYWdzIGJ5IGp1c3Qgc2F5aW5nICJpZiAoRkxBR1NfZm9vKSIKLS8vIG9yIHdoYXRl
dmVyLCBhbmQgc2V0IHRoZW0gYnkgY2FsbGluZyAiRkxBR1NfZm9vID0gYmFyIiAob3IsIG1vcmUK
LS8vIGNvbW1vbmx5LCB2aWEgdGhlIERFRklORV9mb28gbWFjcm8pLiAgQnV0IGlmIHlvdSBuZWVk
IGEgYml0IG1vcmUKLS8vIGNvbnRyb2wsIHdlIGhhdmUgcHJvZ3JhbW1hdGljIHdheXMgdG8gZ2V0
L3NldCB0aGUgZmxhZ3MgYXMgd2VsbC4KLS8vIFRoZXNlIHByb2dyYW1tYXRpYyB3YXlzIHRvIGFj
Y2VzcyBmbGFncyBhcmUgdGhyZWFkLXNhZmUsIGJ1dCBkaXJlY3QKLS8vIGFjY2VzcyBpcyBvbmx5
IHRocmVhZC1jb21wYXRpYmxlLgotCi0vLyBSZXR1cm4gdHJ1ZSBpZmYgdGhlIGZsYWduYW1lIHdh
cyBmb3VuZC4KLS8vIE9VVFBVVCBpcyBzZXQgdG8gdGhlIGZsYWcncyB2YWx1ZSwgb3IgdW5jaGFu
Z2VkIGlmIHdlIHJldHVybiBmYWxzZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgYm9vbCBHZXRD
b21tYW5kTGluZU9wdGlvbihjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OnN0cmluZyogT1VUUFVUKTsK
LQotLy8gUmV0dXJuIHRydWUgaWZmIHRoZSBmbGFnbmFtZSB3YXMgZm91bmQuIE9VVFBVVCBpcyBz
ZXQgdG8gdGhlIGZsYWcncwotLy8gQ29tbWFuZExpbmVGbGFnSW5mbyBvciB1bmNoYW5nZWQgaWYg
d2UgcmV0dXJuIGZhbHNlLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBib29sIEdldENvbW1hbmRM
aW5lRmxhZ0luZm8oY29uc3QgY2hhciogbmFtZSwgQ29tbWFuZExpbmVGbGFnSW5mbyogT1VUUFVU
KTsKLQotLy8gUmV0dXJuIHRoZSBDb21tYW5kTGluZUZsYWdJbmZvIG9mIHRoZSBmbGFnbmFtZS4g
IGV4aXQoKSBpZiBuYW1lIG5vdCBmb3VuZC4KLS8vIEV4YW1wbGUgdXNhZ2UsIHRvIGNoZWNrIGlm
IGEgZmxhZydzIHZhbHVlIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCB2YWx1ZToKLS8vICAgaWYg
KEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgiZm9vIikuaXNfZGVmYXVsdCkgLi4uCi1leHRl
cm4gR0ZMQUdTX0RMTF9ERUNMIENvbW1hbmRMaW5lRmxhZ0luZm8gR2V0Q29tbWFuZExpbmVGbGFn
SW5mb09yRGllKGNvbnN0IGNoYXIqIG5hbWUpOwotCi1lbnVtIEdGTEFHU19ETExfREVDTCBGbGFn
U2V0dGluZ01vZGUgewotICAvLyB1cGRhdGUgdGhlIGZsYWcncyB2YWx1ZSAoY2FuIGNhbGwgdGhp
cyBtdWx0aXBsZSB0aW1lcykuCi0gIFNFVF9GTEFHU19WQUxVRSwKLSAgLy8gdXBkYXRlIHRoZSBm
bGFnJ3MgdmFsdWUsIGJ1dCAqb25seSBpZiogaXQgaGFzIG5vdCB5ZXQgYmVlbiB1cGRhdGVkCi0g
IC8vIHdpdGggU0VUX0ZMQUdTX1ZBTFVFLCBTRVRfRkxBR19JRl9ERUZBVUxULCBvciAiRkxBR1Nf
eHh4ID0gbm9uZGVmIi4KLSAgU0VUX0ZMQUdfSUZfREVGQVVMVCwKLSAgLy8gc2V0IHRoZSBmbGFn
J3MgZGVmYXVsdCB2YWx1ZSB0byB0aGlzLiAgSWYgdGhlIGZsYWcgaGFzIG5vdCB5ZXQgdXBkYXRl
ZAotICAvLyB5ZXQgKHZpYSBTRVRfRkxBR1NfVkFMVUUsIFNFVF9GTEFHX0lGX0RFRkFVTFQsIG9y
ICJGTEFHU194eHggPSBub25kZWYiKQotICAvLyBjaGFuZ2UgdGhlIGZsYWcncyBjdXJyZW50IHZh
bHVlIHRvIHRoZSBuZXcgZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsLgotICBTRVRfRkxBR1NfREVGQVVM
VAotfTsKLQotLy8gU2V0IGEgcGFydGljdWxhciBmbGFnICgiY29tbWFuZCBsaW5lIG9wdGlvbiIp
LiAgUmV0dXJucyBhIHN0cmluZwotLy8gZGVzY3JpYmluZyB0aGUgbmV3IHZhbHVlIHRoYXQgdGhl
IG9wdGlvbiBoYXMgYmVlbiBzZXQgdG8uICBUaGUKLS8vIHJldHVybiB2YWx1ZSBBUEkgaXMgbm90
IHdlbGwtc3BlY2lmaWVkLCBzbyBiYXNpY2FsbHkganVzdCBkZXBlbmQgb24KLS8vIGl0IHRvIGJl
IGVtcHR5IGlmIHRoZSBzZXR0aW5nIGZhaWxlZCBmb3Igc29tZSByZWFzb24gLS0gdGhlIG5hbWUg
aXMKLS8vIG5vdCBhIHZhbGlkIGZsYWcgbmFtZSwgb3IgdGhlIHZhbHVlIGlzIG5vdCBhIHZhbGlk
IHZhbHVlIC0tIGFuZAotLy8gbm9uLWVtcHR5IGVsc2UuCi0KLS8vIFNldENvbW1hbmRMaW5lT3B0
aW9uIHVzZXMgc2V0X21vZGUgPT0gU0VUX0ZMQUdTX1ZBTFVFICh0aGUgY29tbW9uIGNhc2UpCi1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uICAg
ICAgICAoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpOwotZXh0ZXJuIEdGTEFH
U19ETExfREVDTCBzdGQ6OnN0cmluZyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlLCBGbGFnU2V0dGluZ01vZGUgc2V0X21vZGUp
OwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTYXZlcyB0aGUgc3RhdGVzICh2YWx1ZSwgZGVmYXVs
dCB2YWx1ZSwgd2hldGhlciB0aGUgdXNlciBoYXMgc2V0Ci0vLyB0aGUgZmxhZywgcmVnaXN0ZXJl
ZCB2YWxpZGF0b3JzLCBldGMpIG9mIGFsbCBmbGFncywgYW5kIHJlc3RvcmVzCi0vLyB0aGVtIHdo
ZW4gdGhlIEZsYWdTYXZlciBpcyBkZXN0cm95ZWQuICBUaGlzIGlzIHZlcnkgdXNlZnVsIGluCi0v
LyB0ZXN0cywgc2F5LCB3aGVuIHlvdSB3YW50IHRvIGxldCB5b3VyIHRlc3RzIGNoYW5nZSB0aGUg
ZmxhZ3MsIGJ1dAotLy8gbWFrZSBzdXJlIHRoYXQgdGhleSBnZXQgcmV2ZXJ0ZWQgdG8gdGhlIG9y
aWdpbmFsIHN0YXRlcyB3aGVuIHlvdXIKLS8vIHRlc3QgaXMgY29tcGxldGUuCi0vLwotLy8gRXhh
bXBsZSB1c2FnZToKLS8vICAgdm9pZCBUZXN0Rm9vKCkgewotLy8gICAgIEZsYWdTYXZlciBzMTsK
LS8vICAgICBGTEFHX2ZvbyA9IGZhbHNlOwotLy8gICAgIEZMQUdfYmFyID0gInNvbWUgdmFsdWUi
OwotLy8KLS8vICAgICAvLyB0ZXN0IGhhcHBlbnMgaGVyZS4gIFlvdSBjYW4gcmV0dXJuIGF0IGFu
eSB0aW1lCi0vLyAgICAgLy8gd2l0aG91dCB3b3JyeWluZyBhYm91dCByZXN0b3JpbmcgdGhlIEZM
QUcgdmFsdWVzLgotLy8gICB9Ci0vLwotLy8gTm90ZTogVGhpcyBjbGFzcyBpcyBtYXJrZWQgd2l0
aCBHRkxBR1NfQVRUUklCVVRFX1VOVVNFRCBiZWNhdXNlIGFsbAotLy8gdGhlIHdvcmsgaXMgZG9u
ZSBpbiB0aGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIHNvIGluIHRoZSBzdGFuZGFyZAot
Ly8gdXNhZ2UgZXhhbXBsZSBhYm92ZSwgdGhlIGNvbXBpbGVyIHdvdWxkIGNvbXBsYWluIHRoYXQg
aXQncyBhbgotLy8gdW51c2VkIHZhcmlhYmxlLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgdGhyZWFk
LXNhZmUuICBIb3dldmVyLCBpdHMgZGVzdHJ1Y3RvciB3cml0ZXMgdG8KLS8vIGV4YWN0bHkgdGhl
IHNldCBvZiBmbGFncyB0aGF0IGhhdmUgY2hhbmdlZCB2YWx1ZSBkdXJpbmcgaXRzCi0vLyBsaWZl
dGltZSwgc28gY29uY3VycmVudCBfZGlyZWN0XyBhY2Nlc3MgdG8gdGhvc2UgZmxhZ3MKLS8vIChp
LmUuIEZMQUdTX2ZvbyBpbnN0ZWFkIG9mIHtHZXQsU2V0fUNvbW1hbmRMaW5lT3B0aW9uKCkpIGlz
IHVuc2FmZS4KLQotY2xhc3MgR0ZMQUdTX0RMTF9ERUNMIEZsYWdTYXZlciB7Ci0gcHVibGljOgot
ICBGbGFnU2F2ZXIoKTsKLSAgfkZsYWdTYXZlcigpOwotCi0gcHJpdmF0ZToKLSAgY2xhc3MgRmxh
Z1NhdmVySW1wbCogaW1wbF87ICAgLy8gd2UgdXNlIHBpbXBsIGhlcmUgdG8ga2VlcCBBUEkgc3Rl
YWR5Ci0KLSAgRmxhZ1NhdmVyKGNvbnN0IEZsYWdTYXZlciYpOyAgLy8gbm8gY29weWluZyEKLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgRmxhZ1NhdmVyJik7Ci19QEdGTEFHU19BVFRSSUJVVEVfVU5V
U0VEQDsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFNvbWUgZGVwcmVjYXRlZCBvciBob3BlZnVsbHkt
c29vbi10by1iZS1kZXByZWNhdGVkIGZ1bmN0aW9ucy4KLQotLy8gVGhpcyBpcyBvZnRlbiB1c2Vk
IGZvciBsb2dnaW5nLiAgVE9ETyhjc2lsdmVycyk6IGZpZ3VyZSBvdXQgYSBiZXR0ZXIgd2F5Ci1l
eHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHN0ZDo6c3RyaW5nIENvbW1hbmRsaW5lRmxhZ3NJbnRvU3Ry
aW5nKCk7Ci0vLyBVc3VhbGx5IHdoZXJlIHRoaXMgaXMgdXNlZCwgYSBGbGFnU2F2ZXIgc2hvdWxk
IGJlIHVzZWQgaW5zdGVhZC4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wKLWJvb2wgUmVhZEZsYWdz
RnJvbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgZmxhZ2ZpbGVjb250ZW50cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcm9nX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBlcnJvcnNfYXJlX2ZhdGFsKTsgIC8vIHVzZXMgU0VUX0ZMQUdTX1ZBTFVF
Ci0KLS8vIFRoZXNlIGxldCB5b3UgbWFudWFsbHkgaW1wbGVtZW50IC0tZmxhZ2ZpbGUgZnVuY3Rp
b25hbGl0eS4KLS8vIERFUFJFQ0FURUQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgQXBw
ZW5kRmxhZ3NJbnRvRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IGNoYXIq
IHByb2dfbmFtZSk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgUmVhZEZyb21GbGFnc0Zp
bGUoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBjaGFyKiBwcm9nX25hbWUsIGJv
b2wgZXJyb3JzX2FyZV9mYXRhbCk7ICAgLy8gdXNlcyBTRVRfRkxBR1NfVkFMVUUKLQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLy8gVXNlZnVsIHJvdXRpbmVzIGZvciBpbml0aWFsaXppbmcgZmxhZ3MgZnJv
bSB0aGUgZW52aXJvbm1lbnQuCi0vLyBJbiBlYWNoIGNhc2UsIGlmICd2YXJuYW1lJyBkb2VzIG5v
dCBleGlzdCBpbiB0aGUgZW52aXJvbm1lbnQKLS8vIHJldHVybiBkZWZ2YWwuICBJZiAndmFybmFt
ZScgZG9lcyBleGlzdCBidXQgaXMgbm90IHZhbGlkCi0vLyAoZS5nLiwgbm90IGEgbnVtYmVyIGZv
ciBhbiBpbnQzMiBmbGFnKSwgYWJvcnQgd2l0aCBhbiBlcnJvci4KLS8vIE90aGVyd2lzZSwgcmV0
dXJuIHRoZSB2YWx1ZS4gIE5PVEU6IGZvciBib29sZWFucywgZm9yIHRydWUgdXNlCi0vLyAndCcg
b3IgJ1QnIG9yICd0cnVlJyBvciAnMScsIGZvciBmYWxzZSAnZicgb3IgJ0YnIG9yICdmYWxzZScg
b3IgJzAnLgotCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgQm9vbEZyb21FbnYoY29uc3Qg
Y2hhciAqdmFybmFtZSwgYm9vbCBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBpbnQz
MiBJbnQzMkZyb21FbnYoY29uc3QgY2hhciAqdmFybmFtZSwgaW50MzIgZGVmdmFsKTsKLWV4dGVy
biBHRkxBR1NfRExMX0RFQ0wgaW50NjQgSW50NjRGcm9tRW52KGNvbnN0IGNoYXIgKnZhcm5hbWUs
IGludDY0IGRlZnZhbCk7Ci1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHVpbnQ2NCBVaW50NjRGcm9t
RW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIHVpbnQ2NCBkZWZ2YWwpOwotZXh0ZXJuIEdGTEFHU19E
TExfREVDTCBkb3VibGUgRG91YmxlRnJvbUVudihjb25zdCBjaGFyICp2YXJuYW1lLCBkb3VibGUg
ZGVmdmFsKTsKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgY29uc3QgY2hhciAqU3RyaW5nRnJvbUVu
dihjb25zdCBjaGFyICp2YXJuYW1lLCBjb25zdCBjaGFyICpkZWZ2YWwpOwotCi0KLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBUaGUgbmV4dCB0d28gZnVuY3Rpb25zIHBhcnNlIGdmbGFncyBmcm9tIG1haW4o
KToKLQotLy8gU2V0IHRoZSAidXNhZ2UiIG1lc3NhZ2UgZm9yIHRoaXMgcHJvZ3JhbS4gIEZvciBl
eGFtcGxlOgotLy8gICBzdHJpbmcgdXNhZ2UoIlRoaXMgcHJvZ3JhbSBkb2VzIG5vdGhpbmcuICBT
YW1wbGUgdXNhZ2U6XG4iKTsKLS8vICAgdXNhZ2UgKz0gYXJndlswXSArICIgPHVzZWxlc3Nhcmcx
PiA8dXNlbGVzc2FyZzI+IjsKLS8vICAgU2V0VXNhZ2VNZXNzYWdlKHVzYWdlKTsKLS8vIERvIG5v
dCBpbmNsdWRlIGNvbW1hbmRsaW5lIGZsYWdzIGluIHRoZSB1c2FnZTogd2UgZG8gdGhhdCBmb3Ig
eW91IQotLy8gVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRo
cmVhZHMgYXJlIHNwYXduZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgU2V0VXNhZ2VN
ZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2FnZSk7Ci0KLS8vIFNldHMgdGhlIHZlcnNpb24g
c3RyaW5nLCB3aGljaCBpcyBlbWl0dGVkIHdpdGggLS12ZXJzaW9uLgotLy8gRm9yIGluc3RhbmNl
OiBTZXRWZXJzaW9uU3RyaW5nKCIxLjMiKTsKLS8vIFRocmVhZC1ob3N0aWxlOyBtZWFudCB0byBi
ZSBjYWxsZWQgYmVmb3JlIGFueSB0aHJlYWRzIGFyZSBzcGF3bmVkLgotZXh0ZXJuIEdGTEFHU19E
TExfREVDTCB2b2lkIFNldFZlcnNpb25TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZlcnNpb24p
OwotCi0KLS8vIExvb2tzIGZvciBmbGFncyBpbiBhcmd2IGFuZCBwYXJzZXMgdGhlbS4gIFJlYXJy
YW5nZXMgYXJndiB0byBwdXQKLS8vIGZsYWdzIGZpcnN0LCBvciByZW1vdmVzIHRoZW0gZW50aXJl
bHkgaWYgcmVtb3ZlX2ZsYWdzIGlzIHRydWUuCi0vLyBJZiBhIGZsYWcgaXMgZGVmaW5lZCBtb3Jl
IHRoYW4gb25jZSBpbiB0aGUgY29tbWFuZCBsaW5lIG9yIGZsYWcKLS8vIGZpbGUsIHRoZSBsYXN0
IGRlZmluaXRpb24gaXMgdXNlZC4gIFJldHVybnMgdGhlIGluZGV4IChpbnRvIGFyZ3YpCi0vLyBv
ZiB0aGUgZmlyc3Qgbm9uLWZsYWcgYXJndW1lbnQuCi0vLyBTZWUgdG9wLW9mLWZpbGUgZm9yIG1v
cmUgZGV0YWlscyBvbiB0aGlzIGZ1bmN0aW9uLgotI2lmbmRlZiBTV0lHICAgLy8gSW4gc3dpZywg
dXNlIFBhcnNlQ29tbWFuZExpbmVGbGFnc1NjcmlwdCgpIGluc3RlYWQuCi1leHRlcm4gR0ZMQUdT
X0RMTF9ERUNMIHVpbnQzMiBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoaW50ICphcmdjLCBjaGFyKioq
IGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKTsKLSNlbmRpZgotCi0KLS8vIENhbGxzIHRvIFBhcnNl
Q29tbWFuZExpbmVOb25IZWxwRmxhZ3MgYW5kIHRoZW4gdG8KLS8vIEhhbmRsZUNvbW1hbmRMaW5l
SGVscEZsYWdzIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBjYWxsIHRvCi0vLyBQYXJzZUNvbW1h
bmRMaW5lRmxhZ3MgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBpbiBvcmRlciB0byBhbGxvdyBmb3IK
LS8vIGNoYW5naW5nIGRlZmF1bHQgdmFsdWVzIGZvciBzb21lIEZMQUdTICh2aWEKLS8vIGUuZy4g
U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSBjYWxscykgYmV0d2VlbiB0aGUgdGltZSBvZgot
Ly8gY29tbWFuZCBsaW5lIHBhcnNpbmcgYW5kIHRoZSB0aW1lIG9mIGR1bXBpbmcgaGVscCBpbmZv
cm1hdGlvbiBmb3IKLS8vIHRoZSBmbGFncyBhcyBhIHJlc3VsdCBvZiBjb21tYW5kIGxpbmUgcGFy
c2luZy4gIElmIGEgZmxhZyBpcwotLy8gZGVmaW5lZCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgY29t
bWFuZCBsaW5lIG9yIGZsYWcgZmlsZSwgdGhlIGxhc3QKLS8vIGRlZmluaXRpb24gaXMgdXNlZC4g
IFJldHVybnMgdGhlIGluZGV4IChpbnRvIGFyZ3YpIG9mIHRoZSBmaXJzdAotLy8gbm9uLWZsYWcg
YXJndW1lbnQuICAoSWYgcmVtb3ZlX2ZsYWdzIGlzIHRydWUsIHdpbGwgYWx3YXlzIHJldHVybiAx
LikKLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wgdWludDMyIFBhcnNlQ29tbWFuZExpbmVOb25IZWxw
RmxhZ3MoaW50ICphcmdjLCBjaGFyKioqIGFyZ3YsIGJvb2wgcmVtb3ZlX2ZsYWdzKTsKLQotLy8g
VGhpcyBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGdmbGFnc19yZXBvcnRpbmcuY2MuCi0vLyBUaGlz
IGZ1bmN0aW9uIGlzIG1pc25hbWVkIChpdCBhbHNvIGhhbmRsZXMgLS12ZXJzaW9uLCBldGMuKSwg
YnV0Ci0vLyBpdCdzIHRvbyBsYXRlIHRvIGNoYW5nZSB0aGF0IG5vdy4gOi0oCi1leHRlcm4gR0ZM
QUdTX0RMTF9ERUNMIHZvaWQgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKTsgICAvLyBpbiBn
ZmxhZ3NfcmVwb3J0aW5nLmNjCi0KLS8vIEFsbG93IGNvbW1hbmQgbGluZSByZXBhcnNpbmcuICBE
aXNhYmxlcyB0aGUgZXJyb3Igbm9ybWFsbHkKLS8vIGdlbmVyYXRlZCB3aGVuIGFuIHVua25vd24g
ZmxhZyBpcyBmb3VuZCwgc2luY2UgaXQgbWF5IGJlIGZvdW5kIGluIGEKLS8vIGxhdGVyIHBhcnNl
LiAgVGhyZWFkLWhvc3RpbGU7IG1lYW50IHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IHRocmVhZHMK
LS8vIGFyZSBzcGF3bmVkLgotZXh0ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkIEFsbG93Q29tbWFu
ZExpbmVSZXBhcnNpbmcoKTsKLQotLy8gUmVwYXJzZSB0aGUgZmxhZ3MgdGhhdCBoYXZlIG5vdCB5
ZXQgYmVlbiByZWNvZ25pemVkLiAgT25seSBmbGFncwotLy8gcmVnaXN0ZXJlZCBzaW5jZSB0aGUg
bGFzdCBwYXJzZSB3aWxsIGJlIHJlY29nbml6ZWQuICBBbnkgZmxhZyB2YWx1ZQotLy8gbXVzdCBi
ZSBwcm92aWRlZCBhcyBwYXJ0IG9mIHRoZSBhcmd1bWVudCB1c2luZyAiPSIsIG5vdCBhcyBhCi0v
LyBzZXBhcmF0ZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgdGhhdCBmb2xsb3dzIHRoZSBmbGFnIGFy
Z3VtZW50LgotLy8gSW50ZW5kZWQgZm9yIGhhbmRsaW5nIGZsYWdzIGZyb20gZHluYW1pY2FsbHkg
bG9hZGVkIGxpYnJhcmllcywKLS8vIHNpbmNlIHRoZWlyIGZsYWdzIGFyZSBub3QgcmVnaXN0ZXJl
ZCB1bnRpbCB0aGV5IGFyZSBsb2FkZWQuCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIHZvaWQgUmVw
YXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzKCk7Ci0KLS8vIENsZWFuIHVwIG1lbW9yeSBhbGxv
Y2F0ZWQgYnkgZmxhZ3MuICBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHJlZHVjZQotLy8gdGhlIHF1
YW50aXR5IG9mICJwb3RlbnRpYWxseSBsZWFrZWQiIHJlcG9ydHMgZW1pdHRlZCBieSBtZW1vcnkK
LS8vIGRlYnVnZ2luZyB0b29scyBzdWNoIGFzIHZhbGdyaW5kLiAgSXQgaXMgbm90IHJlcXVpcmVk
IGZvciBub3JtYWwKLS8vIG9wZXJhdGlvbiwgb3IgZm9yIHRoZSBnb29nbGUgcGVyZnRvb2xzIGhl
YXAtY2hlY2tlci4gIEl0IG11c3Qgb25seQotLy8gYmUgY2FsbGVkIHdoZW4gdGhlIHByb2Nlc3Mg
aXMgYWJvdXQgdG8gZXhpdCwgYW5kIGFsbCB0aHJlYWRzIHRoYXQKLS8vIG1pZ2h0IGFjY2VzcyBm
bGFncyBhcmUgcXVpZXNjZW50LiAgUmVmZXJlbmNpbmcgZmxhZ3MgYWZ0ZXIgdGhpcyBpcwotLy8g
Y2FsbGVkIHdpbGwgaGF2ZSB1bmV4cGVjdGVkIGNvbnNlcXVlbmNlcy4gIFRoaXMgaXMgbm90IHNh
ZmUgdG8gcnVuCi0vLyB3aGVuIG11bHRpcGxlIHRocmVhZHMgbWlnaHQgYmUgcnVubmluZzogdGhl
IGZ1bmN0aW9uIGlzCi0vLyB0aHJlYWQtaG9zdGlsZS4KLWV4dGVybiBHRkxBR1NfRExMX0RFQ0wg
dm9pZCBTaHV0RG93bkNvbW1hbmRMaW5lRmxhZ3MoKTsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
Tm93IGNvbWUgdGhlIGNvbW1hbmQgbGluZSBmbGFnIGRlY2xhcmF0aW9uL2RlZmluaXRpb24gbWFj
cm9zIHRoYXQKLS8vIHdpbGwgYWN0dWFsbHkgYmUgdXNlZC4gIFRoZXkncmUga2luZCBvZiBoYWly
eS4gIEEgbWFqb3IgcmVhc29uCi0vLyBmb3IgdGhpcyBpcyBpbml0aWFsaXphdGlvbjogd2Ugd2Fu
dCBwZW9wbGUgdG8gYmUgYWJsZSB0byBhY2Nlc3MKLS8vIHZhcmlhYmxlcyBpbiBnbG9iYWwgY29u
c3RydWN0b3JzIGFuZCBoYXZlIHRoYXQgbm90IGNyYXNoLCBldmVuIGlmCi0vLyB0aGVpciBnbG9i
YWwgY29uc3RydWN0b3IgcnVucyBiZWZvcmUgdGhlIGdsb2JhbCBjb25zdHJ1Y3RvciBoZXJlLgot
Ly8gKE9idmlvdXNseSwgd2UgY2FuJ3QgZ3VhcmFudGVlIHRoZSBmbGFncyB3aWxsIGhhdmUgdGhl
IGNvcnJlY3QKLS8vIGRlZmF1bHQgdmFsdWUgaW4gdGhhdCBjYXNlLCBidXQgYXQgbGVhc3QgYWNj
ZXNzaW5nIHRoZW0gaXMgc2FmZS4pCi0vLyBUaGUgb25seSB3YXkgdG8gZG8gdGhhdCBpcyBoYXZl
IGZsYWdzIHBvaW50IHRvIGEgc3RhdGljIGJ1ZmZlci4KLS8vIFNvIHdlIG1ha2Ugb25lLCB1c2lu
ZyBhIHVuaW9uIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50LCBhbmQKLS8vIHRoZW4gdXNlIHBs
YWNlbWVudC1uZXcgdG8gYWN0dWFsbHkgc2V0IHVwIHRoZSBmbGFnIHdpdGggdGhlCi0vLyBjb3Jy
ZWN0IGRlZmF1bHQgdmFsdWUuICBJbiB0aGUgc2FtZSB2ZWluLCB3ZSBoYXZlIHRvIHdvcnJ5IGFi
b3V0Ci0vLyBmbGFnIGFjY2VzcyBpbiBnbG9iYWwgZGVzdHJ1Y3RvcnMsIHNvIEZsYWdSZWdpc3Rl
cmVyIGhhcyB0byBiZQotLy8gY2FyZWZ1bCBuZXZlciB0byBkZXN0cm95IHRoZSBmbGFnLXZhbHVl
cyBpdCBjb25zdHJ1Y3RzLgotLy8KLS8vIE5vdGUgdGhhdCB3aGVuIHdlIGRlZmluZSBhIGZsYWcg
dmFyaWFibGUgRkxBR1NfPG5hbWU+LCB3ZSBhbHNvCi0vLyBwcmVlbXB0aXZlbHkgZGVmaW5lIGEg
anVuayB2YXJpYWJsZSwgRkxBR1Nfbm88bmFtZT4uICBUaGlzIGlzIHRvCi0vLyBjYXVzZSBhIGxp
bmstdGltZSBlcnJvciBpZiBzb21lb25lIHRyaWVzIHRvIGRlZmluZSAyIGZsYWdzIHdpdGgKLS8v
IG5hbWVzIGxpa2UgImxvZ2dpbmciIGFuZCAibm9sb2dnaW5nIi4gIFdlIGRvIHRoaXMgYmVjYXVz
ZSBhIGJvb2wKLS8vIGZsYWcgRkxBRyBjYW4gYmUgc2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSB0
byB0cnVlIHdpdGggYSAiLUZMQUciCi0vLyBhcmd1bWVudCwgYW5kIHRvIGZhbHNlIHdpdGggYSAi
LW5vRkxBRyIgYXJndW1lbnQsIGFuZCBzbyB0aGlzIGNhbgotLy8gcG90ZW50aWFsbHkgYXZlcnQg
Y29uZnVzaW9uLgotLy8KLS8vIFdlIGFsc28gcHV0IGZsYWdzIGludG8gdGhlaXIgb3duIG5hbWVz
cGFjZS4gIEl0IGlzIHB1cnBvc2VmdWxseQotLy8gbmFtZWQgaW4gYW4gb3BhcXVlIHdheSB0aGF0
IHBlb3BsZSBzaG91bGQgaGF2ZSB0cm91YmxlIHR5cGluZwotLy8gZGlyZWN0bHkuICBUaGUgaWRl
YSBpcyB0aGF0IERFRklORSBwdXRzIHRoZSBmbGFnIGluIHRoZSB3ZWlyZAotLy8gbmFtZXNwYWNl
LCBhbmQgREVDTEFSRSBpbXBvcnRzIHRoZSBmbGFnIGZyb20gdGhlcmUgaW50byB0aGUgY3VycmVu
dAotLy8gbmFtZXNwYWNlLiAgVGhlIG5ldCByZXN1bHQgaXMgdG8gZm9yY2UgcGVvcGxlIHRvIHVz
ZSBERUNMQVJFIHRvIGdldAotLy8gYWNjZXNzIHRvIGEgZmxhZywgcmF0aGVyIHRoYW4gc2F5aW5n
ICJleHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGJvb2wgRkxBR1Nfd2hhdGV2ZXI7IgotLy8gb3Igc29t
ZSBzdWNoIGluc3RlYWQuICBXZSB3YW50IHRoaXMgc28gd2UgY2FuIHB1dCBleHRyYQotLy8gZnVu
Y3Rpb25hbGl0eSAobGlrZSBzYW5pdHktY2hlY2tpbmcpIGluIERFQ0xBUkUgaWYgd2Ugd2FudCwg
YW5kCi0vLyBtYWtlIHN1cmUgaXQgaXMgcGlja2VkIHVwIGV2ZXJ5d2hlcmUuCi0vLwotLy8gV2Ug
YWxzbyBwdXQgdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGluIHRoZSBuYW1lc3BhY2UsIHNvIHRo
YXQKLS8vIHBlb3BsZSBjYW4ndCBERUNMQVJFX2ludDMyIHNvbWV0aGluZyB0aGF0IHRoZXkgREVG
SU5FX2Jvb2wnZAotLy8gZWxzZXdoZXJlLgotCi1jbGFzcyBHRkxBR1NfRExMX0RFQ0wgRmxhZ1Jl
Z2lzdGVyZXIgewotIHB1YmxpYzoKLSAgRmxhZ1JlZ2lzdGVyZXIoY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgY2hhciogdHlwZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogaGVscCwgY29u
c3QgY2hhciogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgIHZvaWQqIGN1cnJlbnRfc3RvcmFn
ZSwgdm9pZCogZGVmdmFsdWVfc3RvcmFnZSk7Ci19OwotCi0vLyBJZiB5b3VyIGFwcGxpY2F0aW9u
ICNkZWZpbmVzIFNUUklQX0ZMQUdfSEVMUCB0byBhIG5vbi16ZXJvIHZhbHVlCi0vLyBiZWZvcmUg
I2luY2x1ZGluZyB0aGlzIGZpbGUsIHdlIHJlbW92ZSB0aGUgaGVscCBtZXNzYWdlIGZyb20gdGhl
Ci0vLyBiaW5hcnkgZmlsZS4gVGhpcyBjYW4gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSByZXN1bHRp
bmcgYmluYXJ5Ci0vLyBzb21ld2hhdCwgYW5kIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igc2VjdXJp
dHkgcmVhc29ucy4KLQotZXh0ZXJuIEdGTEFHU19ETExfREVDTCBjb25zdCBjaGFyIGtTdHJpcHBl
ZEZsYWdIZWxwW107Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFDRQotCi0KLSNp
Zm5kZWYgU1dJRyAgLy8gSW4gc3dpZywgaWdub3JlIHRoZSBtYWluIGZsYWcgZGVjbGFyYXRpb25z
Ci0KLSNpZiBkZWZpbmVkKFNUUklQX0ZMQUdfSEVMUCkgJiYgU1RSSVBfRkxBR19IRUxQID4gMAot
Ly8gTmVlZCB0aGlzIGNvbnN0cnVjdCB0byBhdm9pZCB0aGUgJ2RlZmluZWQgYnV0IG5vdCB1c2Vk
JyB3YXJuaW5nLgotI2RlZmluZSBNQVlCRV9TVFJJUFBFRF9IRUxQKHR4dCkgXAotICAgKGZhbHNl
ID8gKHR4dCkgOiBHRkxBR1NfTkFNRVNQQUNFOjprU3RyaXBwZWRGbGFnSGVscCkKLSNlbHNlCi0j
ZGVmaW5lIE1BWUJFX1NUUklQUEVEX0hFTFAodHh0KSB0eHQKLSNlbmRpZgotCi0vLyBFYWNoIGNv
bW1hbmQtbGluZSBmbGFnIGhhcyB0d28gdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBpdDogb25l
Ci0vLyB3aXRoIHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgb25lIHdpdGggdGhlIGRlZmF1bHQgdmFs
dWUuICBIb3dldmVyLAotLy8gd2UgaGF2ZSBhIHRoaXJkIHZhcmlhYmxlLCB3aGljaCBpcyB3aGVy
ZSB2YWx1ZSBpcyBhc3NpZ25lZDsgaXQncyBhCi0vLyBjb25zdGFudC4gIFRoaXMgZ3VhcmFudGVl
cyB0aGF0IEZMQUdfIyN2YWx1ZSBpcyBpbml0aWFsaXplZCBhdAotLy8gc3RhdGljIGluaXRpYWxp
emF0aW9uIHRpbWUgKGUuZy4gYmVmb3JlIHByb2dyYW0tc3RhcnQpIHJhdGhlciB0aGFuCi0vLyB0
aGFuIGdsb2JhbCBjb25zdHJ1Y3Rpb24gdGltZSAod2hpY2ggaXMgYWZ0ZXIgcHJvZ3JhbS1zdGFy
dCBidXQKLS8vIGJlZm9yZSBtYWluKSwgYXQgbGVhc3Qgd2hlbiAndmFsdWUnIGlzIGEgY29tcGls
ZS10aW1lIGNvbnN0YW50LiAgV2UKLS8vIHVzZSBhIHNtYWxsIHRyaWNrIGZvciB0aGUgImRlZmF1
bHQgdmFsdWUiIHZhcmlhYmxlLCBhbmQgY2FsbCBpdAotLy8gRkxBR1Nfbm88bmFtZT4uICBUaGlz
IHNlcnZlcyB0aGUgc2Vjb25kIHB1cnBvc2Ugb2YgYXNzdXJpbmcgYQotLy8gY29tcGlsZSBlcnJv
ciBpZiBzb21lb25lIHRyaWVzIHRvIGRlZmluZSBhIGZsYWcgbmFtZWQgbm88bmFtZT4KLS8vIHdo
aWNoIGlzIGlsbGVnYWwgKC0tZm9vIGFuZCAtLW5vZm9vIGJvdGggYWZmZWN0IHRoZSAiZm9vIiBm
bGFnKS4KLSNkZWZpbmUgREVGSU5FX1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwgbmFtZSwgdmFs
dWUsIGhlbHApICAgICAgICAgICAgIFwKLSAgbmFtZXNwYWNlIGZMIyNzaG9ydHR5cGUgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgY29u
c3QgdHlwZSBGTEFHU19ub25vIyNuYW1lID0gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAvKiBXZSBhbHdheXMgd2FudCB0byBleHBvcnQgZGVmaW5lZCB2YXJpYWJsZXMsIGRs
bCBvciBubyAqLyAgICAgICAgIFwKLSAgICBHRkxBR1NfRExMX0RFRklORV9GTEFHIHR5cGUgRkxB
R1NfIyNuYW1lID0gRkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgIFwKLSAgICB0eXBlIEZMQUdTX25v
IyNuYW1lID0gRkxBR1Nfbm9ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBzdGF0aWMgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1JlZ2lzdGVyZXIgb18jI25hbWUoICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICNuYW1lLCAjdHlwZSwgTUFZQkVfU1RSSVBQRURfSEVM
UChoZWxwKSwgX19GSUxFX18sICAgICAgICAgICAgICAgIFwKLSAgICAgICZGTEFHU18jI25hbWUs
ICZGTEFHU19ubyMjbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgdXNpbmcgZkwjI3Nob3J0dHlwZTo6RkxBR1NfIyNuYW1lCi0KLS8v
IEZvciBERUZJTkVfYm9vbCwgd2Ugd2FudCB0byBkbyB0aGUgZXh0cmEgY2hlY2sgdGhhdCB0aGUg
cGFzc2VkLWluCi0vLyB2YWx1ZSBpcyBhY3R1YWxseSBhIGJvb2wsIGFuZCBub3QgYSBzdHJpbmcg
b3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlCi0vLyBjb2VyY2VkIHRvIGEgYm9vbC4gIFRoZXNlIGRl
Y2xhcmF0aW9ucyAobm8gZGVmaW5pdGlvbiBuZWVkZWQhKSB3aWxsCi0vLyBoZWxwIHVzIGRvIHRo
YXQsIGFuZCBuZXZlciBldmFsdWF0ZSBGcm9tLCB3aGljaCBpcyBpbXBvcnRhbnQuCi0vLyBXZSds
bCB1c2UgJ3NpemVvZihJc0Jvb2wodmFsKSknIHRvIGRpc3Rpbmd1aXNoLiBUaGlzIGNvZGUgcmVx
dWlyZXMKLS8vIHRoYXQgdGhlIGNvbXBpbGVyIGhhdmUgZGlmZmVyZW50IHNpemVzIGZvciBib29s
ICYgZG91YmxlLiBTaW5jZQotLy8gdGhpcyBpcyBub3QgZ3VhcmFudGVlZCBieSB0aGUgc3RhbmRh
cmQsIHdlIGNoZWNrIGl0IHdpdGggYQotLy8gQ09NUElMRV9BU1NFUlQuCi1uYW1lc3BhY2UgZkxC
IHsKLXN0cnVjdCBDb21waWxlQXNzZXJ0IHt9OwotdHlwZWRlZiBDb21waWxlQXNzZXJ0IGV4cGVj
dGVkX3NpemVvZl9kb3VibGVfbmVxX3NpemVvZl9ib29sWwotICAgICAgICAgICAgICAgICAgICAg
IChzaXplb2YoZG91YmxlKSAhPSBzaXplb2YoYm9vbCkpID8gMSA6IC0xXTsKLXRlbXBsYXRlPHR5
cGVuYW1lIEZyb20+IGRvdWJsZSBHRkxBR1NfRExMX0RFQ0wgSXNCb29sRmxhZyhjb25zdCBGcm9t
JiBmcm9tKTsKLUdGTEFHU19ETExfREVDTCBib29sIElzQm9vbEZsYWcoYm9vbCBmcm9tKTsKLX0g
IC8vIG5hbWVzcGFjZSBmTEIKLQotLy8gSGVyZSBhcmUgdGhlIGFjdHVhbCBERUZJTkVfKi1tYWNy
b3MuIFRoZSByZXNwZWN0aXZlIERFQ0xBUkVfKi1tYWNyb3MKLS8vIGFyZSBpbiBhIHNlcGFyYXRl
IGluY2x1ZGUsIGdmbGFnc19kZWNsYXJlLmgsIGZvciByZWR1Y2luZwotLy8gdGhlIHBoeXNpY2Fs
IHRyYW5zaXRpdmUgc2l6ZSBmb3IgREVDTEFSRSB1c2UuCi0jZGVmaW5lIERFRklORV9ib29sKG5h
bWUsIHZhbCwgdHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIG5h
bWVzcGFjZSBmTEIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdHlwZWRlZiA6OmZMQjo6Q29tcGlsZUFzc2VydCBGTEFHXyMjbmFt
ZSMjX3ZhbHVlX2lzX25vdF9hX2Jvb2xbICAgICBcCi0gICAgICAgICAgICAoc2l6ZW9mKDo6ZkxC
OjpJc0Jvb2xGbGFnKHZhbCkpICE9IHNpemVvZihkb3VibGUpKT8gMTogLTFdOyBcCi0gIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIERFRklORV9WQVJJQUJMRShib29sLCBCLCBuYW1lLCB2YWwsIHR4dCkKLQot
I2RlZmluZSBERUZJTkVfaW50MzIobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJM
RShHRkxBR1NfTkFNRVNQQUNFOjppbnQzMiwgSSwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUs
IHZhbCwgdHh0KQotCi0jZGVmaW5lIERFRklORV9pbnQ2NChuYW1lLCB2YWwsIHR4dCkgXAotICAg
REVGSU5FX1ZBUklBQkxFKEdGTEFHU19OQU1FU1BBQ0U6OmludDY0LCBJNjQsIFwKLSAgICAgICAg
ICAgICAgICAgICBuYW1lLCB2YWwsIHR4dCkKLQotI2RlZmluZSBERUZJTkVfdWludDY0KG5hbWUs
dmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJMRShHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQs
IFU2NCwgXAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhbCwgdHh0KQotCi0jZGVmaW5lIERF
RklORV9kb3VibGUobmFtZSwgdmFsLCB0eHQpIFwKLSAgIERFRklORV9WQVJJQUJMRShkb3VibGUs
IEQsIG5hbWUsIHZhbCwgdHh0KQotCi0vLyBTdHJpbmdzIGFyZSB0cmlja2llciwgYmVjYXVzZSB0
aGV5J3JlIG5vdCBhIFBPRCwgc28gd2UgY2FuJ3QKLS8vIGNvbnN0cnVjdCB0aGVtIGF0IHN0YXRp
Yy1pbml0aWFsaXphdGlvbiB0aW1lIChpbnN0ZWFkIHRoZXkgZ2V0Ci0vLyBjb25zdHJ1Y3RlZCBh
dCBnbG9iYWwtY29uc3RydWN0b3IgdGltZSwgd2hpY2ggaXMgbXVjaCBsYXRlcikuICBUbwotLy8g
dHJ5IHRvIGF2b2lkIGNyYXNoZXMgaW4gdGhhdCBjYXNlLCB3ZSB1c2UgYSBjaGFyIGJ1ZmZlciB0
byBzdG9yZQotLy8gdGhlIHN0cmluZywgd2hpY2ggd2UgY2FuIHN0YXRpYy1pbml0aWFsaXplLCBh
bmQgdGhlbiBwbGFjZW1lbnQtbmV3Ci0vLyBpbnRvIGl0IGxhdGVyLiAgSXQncyBub3QgcGVyZmVj
dCwgYnV0IHRoZSBiZXN0IHdlIGNhbiBkby4KLQotbmFtZXNwYWNlIGZMUyB7Ci0KLWlubGluZSBj
bHN0cmluZyogZG9udF9wYXNzMHRvREVGSU5FX3N0cmluZyhjaGFyICpzdHJpbmdzcG90LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVl
KSB7Ci0gIHJldHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFsdWUpOwotfQotaW5saW5l
IGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmluZ3Nwb3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xzdHJpbmcg
JnZhbHVlKSB7Ci0gIHJldHVybiBuZXcoc3RyaW5nc3BvdCkgY2xzdHJpbmcodmFsdWUpOwotfQot
aW5saW5lIGNsc3RyaW5nKiBkb250X3Bhc3MwdG9ERUZJTkVfc3RyaW5nKGNoYXIgKnN0cmluZ3Nw
b3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVl
KTsKLX0gIC8vIG5hbWVzcGFjZSBmTFMKLQotLy8gV2UgbmVlZCB0byBkZWZpbmUgYSB2YXIgbmFt
ZWQgRkxBR1Nfbm8jI25hbWUgc28gcGVvcGxlIGRvbid0IGRlZmluZQotLy8gLS1zdHJpbmcgYW5k
IC0tbm9zdHJpbmcuICBBbmQgd2UgbmVlZCBhIHRlbXBvcmFyeSBwbGFjZSB0byBwdXQgdmFsCi0v
LyBzbyB3ZSBkb24ndCBoYXZlIHRvIGV2YWx1YXRlIGl0IHR3aWNlLiAgVHdvIGdyZWF0IG5lZWRz
IHRoYXQgZ28KLS8vIGdyZWF0IHRvZ2V0aGVyIQotLy8gVGhlIHdlaXJkICd1c2luZycgKyAnZXh0
ZXJuJyBpbnNpZGUgdGhlIGZMUyBuYW1lc3BhY2UgaXMgdG8gd29yayBhcm91bmQKLS8vIGFuIHVu
a25vd24gY29tcGlsZXIgYnVnL2lzc3VlIHdpdGggdGhlIGdjYyA0LjIuMSBvbiBTVVNFIDEwLiAg
U2VlCi0vLyAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWdmbGFncy9pc3N1ZXMv
ZGV0YWlsP2lkPTIwCi0jZGVmaW5lIERFRklORV9zdHJpbmcobmFtZSwgdmFsLCB0eHQpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBuYW1lc3BhY2UgZkxTIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB1c2luZyA6OmZMUzo6Y2xzdHJpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHVuaW9uIHsgdm9pZCogYWxpZ247IGNo
YXIgc1tzaXplb2YoY2xzdHJpbmcpXTsgfSBzXyMjbmFtZVsyXTsgICAgXAotICAgIGNsc3RyaW5n
KiBjb25zdCBGTEFHU19ubyMjbmFtZSA9IDo6ZkxTOjogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9wYXNzMHRv
REVGSU5FX3N0cmluZyhzXyMjbmFtZVswXS5zLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsKTsgICAgICAgICAgXAotICAg
IHN0YXRpYyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnUmVnaXN0ZXJlciBvXyMjbmFtZSggICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgI25hbWUsICJzdHJpbmciLCBNQVlCRV9TVFJJUFBF
RF9IRUxQKHR4dCksIF9fRklMRV9fLCAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNfIyNuYW1l
WzBdLnMsIG5ldyAoc18jI25hbWVbMV0ucykgY2xzdHJpbmcoKkZMQUdTX25vIyNuYW1lKSk7ICAg
ICAgXAotICAgIGV4dGVybiBHRkxBR1NfRExMX0RFRklORV9GTEFHIGNsc3RyaW5nJiBGTEFHU18j
I25hbWU7ICAgICAgICAgICAgICAgICAgIFwKLSAgICB1c2luZyBmTFM6OkZMQUdTXyMjbmFtZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2xz
dHJpbmcmIEZMQUdTXyMjbmFtZSA9ICpGTEFHU19ubyMjbmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdXNpbmcgZkxTOjpGTEFHU18j
I25hbWUKLQotI2VuZGlmICAvLyBTV0lHCi0KLQotQElOQ0xVREVfR0ZMQUdTX05TX0hACi0KLQot
I2VuZGlmICAvLyBHRkxBR1NfR0ZMQUdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19jb21w
bGV0aW9ucy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25zLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNzA5N2NhZWVmNzMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFn
c19jb21wbGV0aW9ucy5jYworKysgL2Rldi9udWxsCkBAIC0xLDc3MSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIC0tLQotCi0v
LyBCYXNoLXN0eWxlIGNvbW1hbmQgbGluZSBmbGFnIGNvbXBsZXRpb24gZm9yIEMrKyBiaW5hcmll
cwotLy8KLS8vIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYmFzaC1zdHlsZSBjb21wbGV0aW9ucy4g
IEl0IGFjaGlldmVzIHRoaXMKLS8vIGdvYWwgaW4gdGhlIGZvbGxvd2luZyBicm9hZCBjaHVua3M6
Ci0vLwotLy8gIDEpIFRha2UgYSB0by1iZS1jb21wbGV0ZWQgd29yZCwgYW5kIGV4YW1pbmUgaXQg
Zm9yIHNlYXJjaCBoaW50cwotLy8gIDIpIElkZW50aWZ5IGFsbCBwb3RlbnRpYWxseSBtYXRjaGlu
ZyBmbGFncwotLy8gICAgIDJhKSBJZiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgZmxhZ3MsIGRvIG5v
dGhpbmcuCi0vLyAgICAgMmIpIElmIGFsbCBtYXRjaGluZyBmbGFncyBzaGFyZSBhIGNvbW1vbiBw
cmVmaXggbG9uZ2VyIHRoYW4gdGhlCi0vLyAgICAgICAgIGNvbXBsZXRpb24gd29yZCwgb3V0cHV0
IGp1c3QgdGhhdCBtYXRjaGluZyBwcmVmaXgKLS8vICAzKSBDYXRlZ29yaXplIHRob3NlIGZsYWdz
IHRvIHByb2R1Y2UgYSByb3VnaCBvcmRlcmluZyBvZiByZWxldmVuY2UuCi0vLyAgNCkgUG90ZW50
aWFsbHkgdHJpbSB0aGUgc2V0IG9mIGZsYWdzIHJldHVybmVkIHRvIGEgc21hbGxlciBudW1iZXIK
LS8vICAgICB0aGF0IGJhc2ggaXMgaGFwcGllciB3aXRoCi0vLyAgNSkgT3V0cHV0IHRoZSBtYXRj
aGluZyBmbGFncyBpbiBncm91cHMgb3JkZXJlZCBieSByZWxldmVuY2UuCi0vLyAgICAgNWEpIEZv
cmNlIGJhc2ggdG8gcGxhY2UgbW9zdC1yZWxldmVudCBncm91cHMgYXQgdGhlIHRvcCBvZiB0aGUg
bGlzdAotLy8gICAgIDViKSBUcmltIG1vc3QgZmxhZydzIGRlc2NyaXB0aW9ucyB0byBmaXQgb24g
YSBzaW5nbGUgdGVybWluYWwgbGluZQotCi0KLSNpbmNsdWRlICJnZmxhZ3NfY29tcGxldGlvbnMu
aCIKLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRl
IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4gICAvLyBmb3Igc3RybGVuCi0KLSNpbmNs
dWRlIDxzZXQ+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVk
ZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiZ2ZsYWdzLmgiCi0jaW5jbHVkZSAidXRpbC5oIgotCi11
c2luZyBzdGQ6OnNldDsKLXVzaW5nIHN0ZDo6c3RyaW5nOwotdXNpbmcgc3RkOjp2ZWN0b3I7Ci0K
LQotREVGSU5FX3N0cmluZyh0YWJfY29tcGxldGlvbl93b3JkLCAiIiwKLSAgICAgICAgICAgICAg
IklmIG5vbi1lbXB0eSwgSGFuZGxlQ29tbWFuZExpbmVDb21wbGV0aW9ucygpIHdpbGwgaGlqYWNr
IHRoZSAiCi0gICAgICAgICAgICAgICJwcm9jZXNzIGFuZCBhdHRlbXB0IHRvIGRvIGJhc2gtc3R5
bGUgY29tbWFuZCBsaW5lIGZsYWcgIgotICAgICAgICAgICAgICAiY29tcGxldGlvbiBvbiB0aGlz
IHZhbHVlLiIpOwotREVGSU5FX2ludDMyKHRhYl9jb21wbGV0aW9uX2NvbHVtbnMsIDgwLAotICAg
ICAgICAgICAgICJOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgaW4gb3V0cHV0IGZvciB0YWIgY29t
cGxldGlvbiIpOwotCi0KLW5hbWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotCi1uYW1lc3Bh
Y2UgewotLy8gRnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgVHlwZSBmb3J3YXJkIGRlY2xhcmF0aW9u
cy4gIENvZGUgbWF5IGJlCi0vLyBtb3JlIGVhc2lseSB1bmRlcnN0b29kIGlmIGl0IGlzIHJvdWdo
bHkgb3JkZXJlZCBhY2NvcmRpbmcgdG8KLS8vIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYnkg
QydzICJkZWNsYXJlIGJlZm9yZSB1c2UiIG9yZGVyaW5nCi1zdHJ1Y3QgQ29tcGxldGlvbk9wdGlv
bnM7Ci1zdHJ1Y3QgTm90YWJsZUZsYWdzOwotCi0vLyBUaGUgZW50cnkgcG9pbnQgaWYgZmxhZyBj
b21wbGV0aW9uIGlzIHRvIGJlIHVzZWQuCi1zdGF0aWMgdm9pZCBQcmludEZsYWdDb21wbGV0aW9u
SW5mbyh2b2lkKTsKLQotCi0vLyAxKSBFeGFtaW5lIHNlYXJjaCB3b3JkCi1zdGF0aWMgdm9pZCBD
YW5vbmljYWxpemVDdXJzb3JXb3JkQW5kU2VhcmNoT3B0aW9ucygKLSAgICBjb25zdCBzdHJpbmcg
JmN1cnNvcl93b3JkLAotICAgIHN0cmluZyAqY2Fub25pY2FsX3NlYXJjaF90b2tlbiwKLSAgICBD
b21wbGV0aW9uT3B0aW9ucyAqb3B0aW9ucyk7Ci0KLXN0YXRpYyBib29sIFJlbW92ZVRyYWlsaW5n
Q2hhcihzdHJpbmcgKnN0ciwgY2hhciBjKTsKLQotCi0vLyAyKSBGaW5kIGFsbCBtYXRjaGVzCi1z
dGF0aWMgdm9pZCBGaW5kTWF0Y2hpbmdGbGFncygKLSAgICBjb25zdCB2ZWN0b3I8Q29tbWFuZExp
bmVGbGFnSW5mbz4gJmFsbF9mbGFncywKLSAgICBjb25zdCBDb21wbGV0aW9uT3B0aW9ucyAmb3B0
aW9ucywKLSAgICBjb25zdCBzdHJpbmcgJm1hdGNoX3Rva2VuLAotICAgIHNldDxjb25zdCBDb21t
YW5kTGluZUZsYWdJbmZvICo+ICphbGxfbWF0Y2hlcywKLSAgICBzdHJpbmcgKmxvbmdlc3RfY29t
bW9uX3ByZWZpeCk7Ci0KLXN0YXRpYyBib29sIERvZXNTaW5nbGVGbGFnTWF0Y2goCi0gICAgY29u
c3QgQ29tbWFuZExpbmVGbGFnSW5mbyAmZmxhZywKLSAgICBjb25zdCBDb21wbGV0aW9uT3B0aW9u
cyAmb3B0aW9ucywKLSAgICBjb25zdCBzdHJpbmcgJm1hdGNoX3Rva2VuKTsKLQotCi0vLyAzKSBD
YXRlZ29yaXplIG1hdGNoZXMKLXN0YXRpYyB2b2lkIENhdGVnb3JpemVBbGxNYXRjaGluZ0ZsYWdz
KAotICAgIGNvbnN0IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICZhbGxfbWF0Y2hl
cywKLSAgICBjb25zdCBzdHJpbmcgJnNlYXJjaF90b2tlbiwKLSAgICBjb25zdCBzdHJpbmcgJm1v
ZHVsZSwKLSAgICBjb25zdCBzdHJpbmcgJnBhY2thZ2VfZGlyLAotICAgIE5vdGFibGVGbGFncyAq
bm90YWJsZV9mbGFncyk7Ci0KLXN0YXRpYyB2b2lkIFRyeUZpbmRNb2R1bGVBbmRQYWNrYWdlRGly
KAotICAgIGNvbnN0IHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBhbGxfZmxhZ3MsCi0gICAg
c3RyaW5nICptb2R1bGUsCi0gICAgc3RyaW5nICpwYWNrYWdlX2Rpcik7Ci0KLQotLy8gNCkgRGVj
aWRlIHdoaWNoIGZsYWdzIHRvIHVzZQotc3RhdGljIHZvaWQgRmluYWxpemVDb21wbGV0aW9uT3V0
cHV0KAotICAgIGNvbnN0IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICZtYXRjaGlu
Z19mbGFncywKLSAgICBDb21wbGV0aW9uT3B0aW9ucyAqb3B0aW9ucywKLSAgICBOb3RhYmxlRmxh
Z3MgKm5vdGFibGVfZmxhZ3MsCi0gICAgdmVjdG9yPHN0cmluZz4gKmNvbXBsZXRpb25zKTsKLQot
c3RhdGljIHZvaWQgUmV0cmlldmVVbnVzZWRGbGFncygKLSAgICBjb25zdCBzZXQ8Y29uc3QgQ29t
bWFuZExpbmVGbGFnSW5mbyAqPiAmbWF0Y2hpbmdfZmxhZ3MsCi0gICAgY29uc3QgTm90YWJsZUZs
YWdzICZub3RhYmxlX2ZsYWdzLAotICAgIHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+
ICp1bnVzZWRfZmxhZ3MpOwotCi0KLS8vIDUpIE91dHB1dCBtYXRjaGVzCi1zdGF0aWMgdm9pZCBP
dXRwdXRTaW5nbGVHcm91cFdpdGhMaW1pdCgKLSAgICBjb25zdCBzZXQ8Y29uc3QgQ29tbWFuZExp
bmVGbGFnSW5mbyAqPiAmZ3JvdXAsCi0gICAgY29uc3Qgc3RyaW5nICZsaW5lX2luZGVudGF0aW9u
LAotICAgIGNvbnN0IHN0cmluZyAmaGVhZGVyLAotICAgIGNvbnN0IHN0cmluZyAmZm9vdGVyLAot
ICAgIGJvb2wgbG9uZ19vdXRwdXRfZm9ybWF0LAotICAgIGludCAqcmVtYWluaW5nX2xpbmVfbGlt
aXQsCi0gICAgc2l6ZV90ICpjb21wbGV0aW9uX2VsZW1lbnRzX2FkZGVkLAotICAgIHZlY3Rvcjxz
dHJpbmc+ICpjb21wbGV0aW9ucyk7Ci0KLS8vIChoZWxwZXJzIGZvciAjNSkKLXN0YXRpYyBzdHJp
bmcgR2V0U2hvcnRGbGFnTGluZSgKLSAgICBjb25zdCBzdHJpbmcgJmxpbmVfaW5kZW50YXRpb24s
Ci0gICAgY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyAmaW5mbyk7Ci0KLXN0YXRpYyBzdHJpbmcg
R2V0TG9uZ0ZsYWdMaW5lKAotICAgIGNvbnN0IHN0cmluZyAmbGluZV9pbmRlbnRhdGlvbiwKLSAg
ICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICZpbmZvKTsKLQotCi0vLwotLy8gVXNlZnVsIHR5
cGVzCi0KLS8vIFRyeSB0byBkZWR1Y2UgdGhlIGludGVudGlvbnMgYmVoaW5kIHRoaXMgY29tcGxl
dGlvbiBhdHRlbXB0LiAgUmV0dXJuIHRoZQotLy8gY2Fub25pY2FsIHNlYXJjaCB0ZXJtIGluICdj
YW5vbmljYWxfc2VhcmNoX3Rva2VuJy4gIEJpbmFyeSBzZWFyY2ggb3B0aW9ucwotLy8gYXJlIHJl
dHVybmVkIGluIHRoZSB2YXJpb3VzIGJvb2xlYW5zLCB3aGljaCBzaG91bGQgYWxsIGhhdmUgaW50
dWl0aXZlCi0vLyBzZW1hbnRpY3MsIHBvc3NpYmx5IGV4Y2VwdDoKLS8vICAtIHJldHVybl9hbGxf
bWF0Y2hpbmdfZmxhZ3M6IEdlbmVyYWxseSwgd2UnbGwgdHJpbSB0aGUgbnVtYmVyIG9mCi0vLyAg
ICByZXR1cm5lZCBjYW5kaWRhdGVzIHRvIHNvbWUgc21hbGwgbnVtYmVyLCBzaG93aW5nIHRob3Nl
IHRoYXQgYXJlCi0vLyAgICBtb3N0IGxpa2VseSB0byBiZSB1c2VmdWwgZmlyc3QuICBJZiB0aGlz
IGlzIHNldCwgaG93ZXZlciwgdGhlIHVzZXIKLS8vICAgIHJlYWxseSBkb2VzIHdhbnQgdXMgdG8g
cmV0dXJuIGV2ZXJ5IHNpbmdsZSBmbGFnIGFzIGFuIG9wdGlvbi4KLS8vICAtIGZvcmNlX25vX3Vw
ZGF0ZTogQW55IHRpbWUgd2Ugb3V0cHV0IGxpbmVzLCBhbGwgb2Ygd2hpY2ggc2hhcmUgYQotLy8g
ICAgY29tbW9uIHByZWZpeCwgYmFzaCB3aWxsICdoZWxwZnVsbHknIG5vdCBldmVuIGJvdGhlciB0
byBzaG93IHRoZQotLy8gICAgb3V0cHV0LCBpbnN0ZWFkIGNoYW5naW5nIHRoZSBjdXJyZW50IHdv
cmQgdG8gYmUgdGhhdCBjb21tb24gcHJlZml4LgotLy8gICAgSWYgaXQncyBjbGVhciB0aGlzIHNo
b3VsZG4ndCBoYXBwZW4sIHdlJ2xsIHNldCB0aGlzIGJvb2xlYW4KLXN0cnVjdCBDb21wbGV0aW9u
T3B0aW9ucyB7Ci0gIGJvb2wgZmxhZ19uYW1lX3N1YnN0cmluZ19zZWFyY2g7Ci0gIGJvb2wgZmxh
Z19sb2NhdGlvbl9zdWJzdHJpbmdfc2VhcmNoOwotICBib29sIGZsYWdfZGVzY3JpcHRpb25fc3Vi
c3RyaW5nX3NlYXJjaDsKLSAgYm9vbCByZXR1cm5fYWxsX21hdGNoaW5nX2ZsYWdzOwotICBib29s
IGZvcmNlX25vX3VwZGF0ZTsKLX07Ci0KLS8vIE5vdGFibGUgZmxhZ3MgYXJlIGZsYWdzIHRoYXQg
YXJlIHNwZWNpYWwgb3IgcHJlZmVycmVkIGZvciBzb21lCi0vLyByZWFzb24uICBGb3IgZXhhbXBs
ZSwgZmxhZ3MgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgYmluYXJ5J3MgbW9kdWxlCi0vLyBhcmUg
ZXhwZWN0ZWQgdG8gYmUgbXVjaCBtb3JlIHJlbGV2ZW50IHRoYW4gZmxhZ3MgZGVmaW5lZCBpbiBz
b21lCi0vLyBvdGhlciByYW5kb20gbG9jYXRpb24uICBUaGVzZSBzZXRzIGFyZSBzcGVjaWZpZWQg
cm91Z2hseSBpbiBwcmVjZWRlbmNlCi0vLyBvcmRlci4gIE9uY2UgYSBmbGFnIGlzIHBsYWNlZCBp
biBvbmUgb2YgdGhlc2UgJ2hpZ2hlcicgc2V0cywgaXQgd29uJ3QKLS8vIGJlIHBsYWNlZCBpbiBh
bnkgb2YgdGhlICdsb3dlcicgc2V0cy4KLXN0cnVjdCBOb3RhYmxlRmxhZ3MgewotICB0eXBlZGVm
IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+IEZsYWdTZXQ7Ci0gIEZsYWdTZXQgcGVy
ZmVjdF9tYXRjaF9mbGFnOwotICBGbGFnU2V0IG1vZHVsZV9mbGFnczsgICAgICAgLy8gRm91bmQg
aW4gbW9kdWxlIGZpbGUKLSAgRmxhZ1NldCBwYWNrYWdlX2ZsYWdzOyAgICAgIC8vIEZvdW5kIGlu
IHNhbWUgZGlyZWN0b3J5IGFzIG1vZHVsZSBmaWxlCi0gIEZsYWdTZXQgbW9zdF9jb21tb25fZmxh
Z3M7ICAvLyBPbmUgb2YgdGhlIFhYWCBtb3N0IGNvbW1vbmx5IHN1cHBsaWVkIGZsYWdzCi0gIEZs
YWdTZXQgc3VicGFja2FnZV9mbGFnczsgICAvLyBGb3VuZCBpbiBzdWJkaXJlY3RvcmllcyBvZiBw
YWNrYWdlCi19OwotCi0KLS8vCi0vLyBUYWIgY29tcGxldGlvbiBpbXBsZW1lbnRhdGlvbiAtIGVu
dHJ5IHBvaW50Ci1zdGF0aWMgdm9pZCBQcmludEZsYWdDb21wbGV0aW9uSW5mbyh2b2lkKSB7Ci0g
IHN0cmluZyBjdXJzb3Jfd29yZCA9IEZMQUdTX3RhYl9jb21wbGV0aW9uX3dvcmQ7Ci0gIHN0cmlu
ZyBjYW5vbmljYWxfdG9rZW47Ci0gIENvbXBsZXRpb25PcHRpb25zIG9wdGlvbnMgPSB7IH07Ci0g
IENhbm9uaWNhbGl6ZUN1cnNvcldvcmRBbmRTZWFyY2hPcHRpb25zKAotICAgICAgY3Vyc29yX3dv
cmQsCi0gICAgICAmY2Fub25pY2FsX3Rva2VuLAotICAgICAgJm9wdGlvbnMpOwotCi0gIERWTE9H
KDEpIDw8ICJJZGVudGlmaWVkIGNhbm9uaWNhbF90b2tlbjogJyIgPDwgY2Fub25pY2FsX3Rva2Vu
IDw8ICInIjsKLQotICB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4gYWxsX2ZsYWdzOwotICBz
ZXQ8Y29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyAqPiBtYXRjaGluZ19mbGFnczsKLSAgR2V0QWxs
RmxhZ3MoJmFsbF9mbGFncyk7Ci0gIERWTE9HKDIpIDw8ICJGb3VuZCAiIDw8IGFsbF9mbGFncy5z
aXplKCkgPDwgIiBmbGFncyBvdmVyYWxsIjsKLQotICBzdHJpbmcgbG9uZ2VzdF9jb21tb25fcHJl
Zml4OwotICBGaW5kTWF0Y2hpbmdGbGFncygKLSAgICAgIGFsbF9mbGFncywKLSAgICAgIG9wdGlv
bnMsCi0gICAgICBjYW5vbmljYWxfdG9rZW4sCi0gICAgICAmbWF0Y2hpbmdfZmxhZ3MsCi0gICAg
ICAmbG9uZ2VzdF9jb21tb25fcHJlZml4KTsKLSAgRFZMT0coMSkgPDwgIklkZW50aWZpZWQgIiA8
PCBtYXRjaGluZ19mbGFncy5zaXplKCkgPDwgIiBtYXRjaGluZyBmbGFncyI7Ci0gIERWTE9HKDEp
IDw8ICJJZGVudGlmaWVkICIgPDwgbG9uZ2VzdF9jb21tb25fcHJlZml4Ci0gICAgICAgICAgPDwg
IiBhcyBsb25nZXN0IGNvbW1vbiBwcmVmaXguIjsKLSAgaWYgKGxvbmdlc3RfY29tbW9uX3ByZWZp
eC5zaXplKCkgPiBjYW5vbmljYWxfdG9rZW4uc2l6ZSgpKSB7Ci0gICAgLy8gVGhlcmUncyBhY3R1
YWxseSBhIHNoYXJlZCBjb21tb24gcHJlZml4IHRvIGFsbCBtYXRjaGluZyBmbGFncywKLSAgICAv
LyBzbyBtYXkgYXMgd2VsbCBvdXRwdXQgdGhhdCBhbmQgcXVpdCBxdWlja2x5LgotICAgIERWTE9H
KDEpIDw8ICJUaGUgY29tbW9uIHByZWZpeCAnIiA8PCBsb25nZXN0X2NvbW1vbl9wcmVmaXgKLSAg
ICAgICAgICAgIDw8ICInIHdhcyBsb25nZXIgdGhhbiB0aGUgdG9rZW4gJyIgPDwgY2Fub25pY2Fs
X3Rva2VuCi0gICAgICAgICAgICA8PCAiJy4gIFJldHVybmluZyBqdXN0IHRoaXMgcHJlZml4IGZv
ciBjb21wbGV0aW9uLiI7Ci0gICAgZnByaW50ZihzdGRvdXQsICItLSVzIiwgbG9uZ2VzdF9jb21t
b25fcHJlZml4LmNfc3RyKCkpOwotICAgIHJldHVybjsKLSAgfQotICBpZiAobWF0Y2hpbmdfZmxh
Z3MuZW1wdHkoKSkgewotICAgIFZMT0coMSkgPDwgIlRoZXJlIHdlcmUgbm8gbWF0Y2hpbmcgZmxh
Z3MsIHJldHVybmluZyBub3RoaW5nLiI7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc3RyaW5nIG1v
ZHVsZTsKLSAgc3RyaW5nIHBhY2thZ2VfZGlyOwotICBUcnlGaW5kTW9kdWxlQW5kUGFja2FnZURp
cihhbGxfZmxhZ3MsICZtb2R1bGUsICZwYWNrYWdlX2Rpcik7Ci0gIERWTE9HKDEpIDw8ICJJZGVu
dGlmaWVkIG1vZHVsZTogJyIgPDwgbW9kdWxlIDw8ICInIjsKLSAgRFZMT0coMSkgPDwgIklkZW50
aWZpZWQgcGFja2FnZV9kaXI6ICciIDw8IHBhY2thZ2VfZGlyIDw8ICInIjsKLQotICBOb3RhYmxl
RmxhZ3Mgbm90YWJsZV9mbGFnczsKLSAgQ2F0ZWdvcml6ZUFsbE1hdGNoaW5nRmxhZ3MoCi0gICAg
ICBtYXRjaGluZ19mbGFncywKLSAgICAgIGNhbm9uaWNhbF90b2tlbiwKLSAgICAgIG1vZHVsZSwK
LSAgICAgIHBhY2thZ2VfZGlyLAotICAgICAgJm5vdGFibGVfZmxhZ3MpOwotICBEVkxPRygyKSA8
PCAiQ2F0ZWdvcml6ZWQgbWF0Y2hpbmcgZmxhZ3M6IjsKLSAgRFZMT0coMikgPDwgIiBwZXJmZWN0
X21hdGNoOiAiIDw8IG5vdGFibGVfZmxhZ3MucGVyZmVjdF9tYXRjaF9mbGFnLnNpemUoKTsKLSAg
RFZMT0coMikgPDwgIiBtb2R1bGU6ICIgPDwgbm90YWJsZV9mbGFncy5tb2R1bGVfZmxhZ3Muc2l6
ZSgpOwotICBEVkxPRygyKSA8PCAiIHBhY2thZ2U6ICIgPDwgbm90YWJsZV9mbGFncy5wYWNrYWdl
X2ZsYWdzLnNpemUoKTsKLSAgRFZMT0coMikgPDwgIiBtb3N0IGNvbW1vbjogIiA8PCBub3RhYmxl
X2ZsYWdzLm1vc3RfY29tbW9uX2ZsYWdzLnNpemUoKTsKLSAgRFZMT0coMikgPDwgIiBzdWJwYWNr
YWdlOiAiIDw8IG5vdGFibGVfZmxhZ3Muc3VicGFja2FnZV9mbGFncy5zaXplKCk7Ci0KLSAgdmVj
dG9yPHN0cmluZz4gY29tcGxldGlvbnM7Ci0gIEZpbmFsaXplQ29tcGxldGlvbk91dHB1dCgKLSAg
ICAgIG1hdGNoaW5nX2ZsYWdzLAotICAgICAgJm9wdGlvbnMsCi0gICAgICAmbm90YWJsZV9mbGFn
cywKLSAgICAgICZjb21wbGV0aW9ucyk7Ci0KLSAgaWYgKG9wdGlvbnMuZm9yY2Vfbm9fdXBkYXRl
KQotICAgIGNvbXBsZXRpb25zLnB1c2hfYmFjaygifiIpOwotCi0gIERWTE9HKDEpIDw8ICJGaW5h
bGl6ZWQgd2l0aCAiIDw8IGNvbXBsZXRpb25zLnNpemUoKQotICAgICAgICAgIDw8ICIgY2hvc2Vu
IGNvbXBsZXRpb25zIjsKLQotICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGNvbXBsZXRpb25zLmJlZ2luKCk7Ci0gICAgICBpdCAhPSBjb21wbGV0aW9ucy5lbmQoKTsK
LSAgICAgICsraXQpIHsKLSAgICBEVkxPRyg5KSA8PCAiICBDb21wbGV0aW9uIGVudHJ5OiAnIiA8
PCAqaXQgPDwgIiciOwotICAgIGZwcmludGYoc3Rkb3V0LCAiJXNcbiIsIGl0LT5jX3N0cigpKTsK
LSAgfQotfQotCi0KLS8vIDEpIEV4YW1pbmUgc2VhcmNoIHdvcmQgKGFuZCBoZWxwZXIgbWV0aG9k
KQotc3RhdGljIHZvaWQgQ2Fub25pY2FsaXplQ3Vyc29yV29yZEFuZFNlYXJjaE9wdGlvbnMoCi0g
ICAgY29uc3Qgc3RyaW5nICZjdXJzb3Jfd29yZCwKLSAgICBzdHJpbmcgKmNhbm9uaWNhbF9zZWFy
Y2hfdG9rZW4sCi0gICAgQ29tcGxldGlvbk9wdGlvbnMgKm9wdGlvbnMpIHsKLSAgKmNhbm9uaWNh
bF9zZWFyY2hfdG9rZW4gPSBjdXJzb3Jfd29yZDsKLSAgaWYgKGNhbm9uaWNhbF9zZWFyY2hfdG9r
ZW4tPmVtcHR5KCkpIHJldHVybjsKLQotICAvLyBHZXQgcmlkIG9mIGxlYWRpbmcgcXVvdGVzIGFu
ZCBkYXNoZXMgaW4gdGhlIHNlYXJjaCB0ZXJtCi0gIGlmICgoKmNhbm9uaWNhbF9zZWFyY2hfdG9r
ZW4pWzBdID09ICciJykKLSAgICAqY2Fub25pY2FsX3NlYXJjaF90b2tlbiA9IGNhbm9uaWNhbF9z
ZWFyY2hfdG9rZW4tPnN1YnN0cigxKTsKLSAgd2hpbGUgKCgqY2Fub25pY2FsX3NlYXJjaF90b2tl
bilbMF0gPT0gJy0nKQotICAgICpjYW5vbmljYWxfc2VhcmNoX3Rva2VuID0gY2Fub25pY2FsX3Nl
YXJjaF90b2tlbi0+c3Vic3RyKDEpOwotCi0gIG9wdGlvbnMtPmZsYWdfbmFtZV9zdWJzdHJpbmdf
c2VhcmNoID0gZmFsc2U7Ci0gIG9wdGlvbnMtPmZsYWdfbG9jYXRpb25fc3Vic3RyaW5nX3NlYXJj
aCA9IGZhbHNlOwotICBvcHRpb25zLT5mbGFnX2Rlc2NyaXB0aW9uX3N1YnN0cmluZ19zZWFyY2gg
PSBmYWxzZTsKLSAgb3B0aW9ucy0+cmV0dXJuX2FsbF9tYXRjaGluZ19mbGFncyA9IGZhbHNlOwot
ICBvcHRpb25zLT5mb3JjZV9ub191cGRhdGUgPSBmYWxzZTsKLQotICAvLyBMb29rIGZvciBhbGwg
c2VhcmNoIG9wdGlvbnMgd2UgY2FuIGRlZHVjZSBub3cuICBEbyB0aGlzIGJ5IHdhbGtpbmcKLSAg
Ly8gYmFja3dhcmRzIHRocm91Z2ggdGhlIHRlcm0sIGxvb2tpbmcgZm9yIHVwIHRvIHRocmVlICc/
JyBhbmQgdXAgdG8KLSAgLy8gb25lICcrJyBhcyBzdWZmaXhlZCBjaGFyYWN0ZXJzLiAgQ29uc3Vt
ZSB0aGVtIGlmIGZvdW5kLCBhbmQgcmVtb3ZlCi0gIC8vIHRoZW0gZnJvbSB0aGUgY2Fub25pY2Fs
IHNlYXJjaCB0b2tlbi4KLSAgaW50IGZvdW5kX3F1ZXN0aW9uX21hcmtzID0gMDsKLSAgaW50IGZv
dW5kX3BsdXNzZXMgPSAwOwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChmb3VuZF9xdWVzdGlv
bl9tYXJrcyA8IDMgJiYKLSAgICAgICAgUmVtb3ZlVHJhaWxpbmdDaGFyKGNhbm9uaWNhbF9zZWFy
Y2hfdG9rZW4sICc/JykpIHsKLSAgICAgICsrZm91bmRfcXVlc3Rpb25fbWFya3M7Ci0gICAgICBj
b250aW51ZTsKLSAgICB9Ci0gICAgaWYgKGZvdW5kX3BsdXNzZXMgPCAxICYmCi0gICAgICAgIFJl
bW92ZVRyYWlsaW5nQ2hhcihjYW5vbmljYWxfc2VhcmNoX3Rva2VuLCAnKycpKSB7Ci0gICAgICAr
K2ZvdW5kX3BsdXNzZXM7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0K
LQotICBzd2l0Y2ggKGZvdW5kX3F1ZXN0aW9uX21hcmtzKSB7ICAvLyBhbGwgZmFsbHRocm91Z2hz
Ci0gICAgY2FzZSAzOiBvcHRpb25zLT5mbGFnX2Rlc2NyaXB0aW9uX3N1YnN0cmluZ19zZWFyY2gg
PSB0cnVlOwotICAgIGNhc2UgMjogb3B0aW9ucy0+ZmxhZ19sb2NhdGlvbl9zdWJzdHJpbmdfc2Vh
cmNoID0gdHJ1ZTsKLSAgICBjYXNlIDE6IG9wdGlvbnMtPmZsYWdfbmFtZV9zdWJzdHJpbmdfc2Vh
cmNoID0gdHJ1ZTsKLSAgfTsKLQotICBvcHRpb25zLT5yZXR1cm5fYWxsX21hdGNoaW5nX2ZsYWdz
ID0gKGZvdW5kX3BsdXNzZXMgPiAwKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIGEgY2hhciB3
YXMgcmVtb3ZlZAotc3RhdGljIGJvb2wgUmVtb3ZlVHJhaWxpbmdDaGFyKHN0cmluZyAqc3RyLCBj
aGFyIGMpIHsKLSAgaWYgKHN0ci0+ZW1wdHkoKSkgcmV0dXJuIGZhbHNlOwotICBpZiAoKCpzdHIp
W3N0ci0+c2l6ZSgpIC0gMV0gPT0gYykgewotICAgICpzdHIgPSBzdHItPnN1YnN0cigwLCBzdHIt
PnNpemUoKSAtIDEpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0K
LQotCi0vLyAyKSBGaW5kIGFsbCBtYXRjaGVzIChhbmQgaGVscGVyIG1ldGhvZHMpCi1zdGF0aWMg
dm9pZCBGaW5kTWF0Y2hpbmdGbGFncygKLSAgICBjb25zdCB2ZWN0b3I8Q29tbWFuZExpbmVGbGFn
SW5mbz4gJmFsbF9mbGFncywKLSAgICBjb25zdCBDb21wbGV0aW9uT3B0aW9ucyAmb3B0aW9ucywK
LSAgICBjb25zdCBzdHJpbmcgJm1hdGNoX3Rva2VuLAotICAgIHNldDxjb25zdCBDb21tYW5kTGlu
ZUZsYWdJbmZvICo+ICphbGxfbWF0Y2hlcywKLSAgICBzdHJpbmcgKmxvbmdlc3RfY29tbW9uX3By
ZWZpeCkgewotICBhbGxfbWF0Y2hlcy0+Y2xlYXIoKTsKLSAgYm9vbCBmaXJzdF9tYXRjaCA9IHRy
dWU7Ci0gIGZvciAodmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGFsbF9mbGFncy5iZWdpbigpOwotICAgICAgaXQgIT0gYWxsX2ZsYWdzLmVuZCgpOwotICAg
ICAgKytpdCkgewotICAgIGlmIChEb2VzU2luZ2xlRmxhZ01hdGNoKCppdCwgb3B0aW9ucywgbWF0
Y2hfdG9rZW4pKSB7Ci0gICAgICBhbGxfbWF0Y2hlcy0+aW5zZXJ0KCYqaXQpOwotICAgICAgaWYg
KGZpcnN0X21hdGNoKSB7Ci0gICAgICAgIGZpcnN0X21hdGNoID0gZmFsc2U7Ci0gICAgICAgICps
b25nZXN0X2NvbW1vbl9wcmVmaXggPSBpdC0+bmFtZTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChsb25nZXN0X2NvbW1vbl9wcmVmaXgtPmVtcHR5KCkgfHwgaXQtPm5hbWUuZW1wdHkoKSkg
ewotICAgICAgICAgIGxvbmdlc3RfY29tbW9uX3ByZWZpeC0+Y2xlYXIoKTsKLSAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSAwOwot
ICAgICAgICB3aGlsZSAocG9zIDwgbG9uZ2VzdF9jb21tb25fcHJlZml4LT5zaXplKCkgJiYKLSAg
ICAgICAgICAgIHBvcyA8IGl0LT5uYW1lLnNpemUoKSAmJgotICAgICAgICAgICAgKCpsb25nZXN0
X2NvbW1vbl9wcmVmaXgpW3Bvc10gPT0gaXQtPm5hbWVbcG9zXSkKLSAgICAgICAgICArK3BvczsK
LSAgICAgICAgbG9uZ2VzdF9jb21tb25fcHJlZml4LT5lcmFzZShwb3MpOwotICAgICAgfQotICAg
IH0KLSAgfQotfQotCi0vLyBHaXZlbiB0aGUgc2V0IG9mIGFsbCBmbGFncywgdGhlIHBhcnNlZCBt
YXRjaCBvcHRpb25zLCBhbmQgdGhlCi0vLyBjYW5vbmljYWwgc2VhcmNoIHRva2VuLCBwcm9kdWNl
IHRoZSBzZXQgb2YgYWxsIGNhbmRpZGF0ZSBtYXRjaGluZwotLy8gZmxhZ3MgZm9yIHN1YnNlcXVl
bnQgYW5hbHlzaXMgb3IgZmlsdGVyaW5nLgotc3RhdGljIGJvb2wgRG9lc1NpbmdsZUZsYWdNYXRj
aCgKLSAgICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICZmbGFnLAotICAgIGNvbnN0IENvbXBs
ZXRpb25PcHRpb25zICZvcHRpb25zLAotICAgIGNvbnN0IHN0cmluZyAmbWF0Y2hfdG9rZW4pIHsK
LSAgLy8gSXMgdGhlcmUgYSBwcmVmaXggbWF0Y2g/Ci0gIHN0cmluZzo6c2l6ZV90eXBlIHBvcyA9
IGZsYWcubmFtZS5maW5kKG1hdGNoX3Rva2VuKTsKLSAgaWYgKHBvcyA9PSAwKSByZXR1cm4gdHJ1
ZTsKLQotICAvLyBJcyB0aGVyZSBhIHN1YnN0cmluZyBtYXRjaCBpZiB3ZSB3YW50IGl0PwotICBp
ZiAob3B0aW9ucy5mbGFnX25hbWVfc3Vic3RyaW5nX3NlYXJjaCAmJgotICAgICAgcG9zICE9IHN0
cmluZzo6bnBvcykKLSAgICByZXR1cm4gdHJ1ZTsKLQotICAvLyBJcyB0aGVyZSBhIGxvY2F0aW9u
IG1hdGNoIGlmIHdlIHdhbnQgaXQ/Ci0gIGlmIChvcHRpb25zLmZsYWdfbG9jYXRpb25fc3Vic3Ry
aW5nX3NlYXJjaCAmJgotICAgICAgZmxhZy5maWxlbmFtZS5maW5kKG1hdGNoX3Rva2VuKSAhPSBz
dHJpbmc6Om5wb3MpCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgLy8gVE9ETyh1c2VyKTogQWxsIHNl
YXJjaGVzIHNob3VsZCBwcm9iYWJseSBiZSBjYXNlLWluc2Vuc2l0aXZlCi0gIC8vIChlc3BlY2lh
bGx5IHRoaXMgb25lLi4uKQotICBpZiAob3B0aW9ucy5mbGFnX2Rlc2NyaXB0aW9uX3N1YnN0cmlu
Z19zZWFyY2ggJiYKLSAgICAgIGZsYWcuZGVzY3JpcHRpb24uZmluZChtYXRjaF90b2tlbikgIT0g
c3RyaW5nOjpucG9zKQotICAgIHJldHVybiB0cnVlOwotCi0gIHJldHVybiBmYWxzZTsKLX0KLQot
Ly8gMykgQ2F0ZWdvcml6ZSBtYXRjaGVzIChhbmQgaGVscGVyIG1ldGhvZCkKLQotLy8gR2l2ZW4g
YSBzZXQgb2YgbWF0Y2hpbmcgZmxhZ3MsIGNhdGVnb3JpemUgdGhlbSBieQotLy8gbGlrZWx5IHJl
bGV2ZW5jZSB0byB0aGlzIHNwZWNpZmljIGJpbmFyeQotc3RhdGljIHZvaWQgQ2F0ZWdvcml6ZUFs
bE1hdGNoaW5nRmxhZ3MoCi0gICAgY29uc3Qgc2V0PGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8g
Kj4gJmFsbF9tYXRjaGVzLAotICAgIGNvbnN0IHN0cmluZyAmc2VhcmNoX3Rva2VuLAotICAgIGNv
bnN0IHN0cmluZyAmbW9kdWxlLCAgLy8gZW1wdHkgaWYgd2UgY291bGRuJ3QgZmluZCBhbnkKLSAg
ICBjb25zdCBzdHJpbmcgJnBhY2thZ2VfZGlyLCAgLy8gZW1wdHkgaWYgd2UgY291bGRuJ3QgZmlu
ZCBhbnkKLSAgICBOb3RhYmxlRmxhZ3MgKm5vdGFibGVfZmxhZ3MpIHsKLSAgbm90YWJsZV9mbGFn
cy0+cGVyZmVjdF9tYXRjaF9mbGFnLmNsZWFyKCk7Ci0gIG5vdGFibGVfZmxhZ3MtPm1vZHVsZV9m
bGFncy5jbGVhcigpOwotICBub3RhYmxlX2ZsYWdzLT5wYWNrYWdlX2ZsYWdzLmNsZWFyKCk7Ci0g
IG5vdGFibGVfZmxhZ3MtPm1vc3RfY29tbW9uX2ZsYWdzLmNsZWFyKCk7Ci0gIG5vdGFibGVfZmxh
Z3MtPnN1YnBhY2thZ2VfZmxhZ3MuY2xlYXIoKTsKLQotICBmb3IgKHNldDxjb25zdCBDb21tYW5k
TGluZUZsYWdJbmZvICo+Ojpjb25zdF9pdGVyYXRvciBpdCA9Ci0gICAgICAgIGFsbF9tYXRjaGVz
LmJlZ2luKCk7Ci0gICAgICBpdCAhPSBhbGxfbWF0Y2hlcy5lbmQoKTsKLSAgICAgICsraXQpIHsK
LSAgICBEVkxPRygyKSA8PCAiRXhhbWluaW5nIG1hdGNoICciIDw8ICgqaXQpLT5uYW1lIDw8ICIn
IjsKLSAgICBEVkxPRyg3KSA8PCAiICBmaWxlbmFtZTogJyIgPDwgKCppdCktPmZpbGVuYW1lIDw8
ICInIjsKLSAgICBzdHJpbmc6OnNpemVfdHlwZSBwb3MgPSBzdHJpbmc6Om5wb3M7Ci0gICAgaWYg
KCFwYWNrYWdlX2Rpci5lbXB0eSgpKQotICAgICAgcG9zID0gKCppdCktPmZpbGVuYW1lLmZpbmQo
cGFja2FnZV9kaXIpOwotICAgIHN0cmluZzo6c2l6ZV90eXBlIHNsYXNoID0gc3RyaW5nOjpucG9z
OwotICAgIGlmIChwb3MgIT0gc3RyaW5nOjpucG9zKSAgLy8gY2FuZGlkYXRlIGZvciBwYWNrYWdl
IG9yIHN1YnBhY2thZ2UgbWF0Y2gKLSAgICAgIHNsYXNoID0gKCppdCktPmZpbGVuYW1lLmZpbmQo
Ci0gICAgICAgICAgUEFUSF9TRVBBUkFUT1IsCi0gICAgICAgICAgcG9zICsgcGFja2FnZV9kaXIu
c2l6ZSgpICsgMSk7Ci0KLSAgICBpZiAoKCppdCktPm5hbWUgPT0gc2VhcmNoX3Rva2VuKSB7Ci0g
ICAgICAvLyBFeGFjdCBtYXRjaCBvbiBzb21lIGZsYWcncyBuYW1lCi0gICAgICBub3RhYmxlX2Zs
YWdzLT5wZXJmZWN0X21hdGNoX2ZsYWcuaW5zZXJ0KCppdCk7Ci0gICAgICBEVkxPRygzKSA8PCAi
UmVzdWx0OiBwZXJmZWN0IG1hdGNoIjsKLSAgICB9IGVsc2UgaWYgKCFtb2R1bGUuZW1wdHkoKSAm
JiAoKml0KS0+ZmlsZW5hbWUgPT0gbW9kdWxlKSB7Ci0gICAgICAvLyBFeGFjdCBtYXRjaCBvbiBt
b2R1bGUgZmlsZW5hbWUKLSAgICAgIG5vdGFibGVfZmxhZ3MtPm1vZHVsZV9mbGFncy5pbnNlcnQo
Kml0KTsKLSAgICAgIERWTE9HKDMpIDw8ICJSZXN1bHQ6IG1vZHVsZSBtYXRjaCI7Ci0gICAgfSBl
bHNlIGlmICghcGFja2FnZV9kaXIuZW1wdHkoKSAmJgotICAgICAgICBwb3MgIT0gc3RyaW5nOjpu
cG9zICYmIHNsYXNoID09IHN0cmluZzo6bnBvcykgewotICAgICAgLy8gSW4gdGhlIHBhY2thZ2Us
IHNpbmNlIHRoZXJlIHdhcyBubyBzbGFzaCBhZnRlciB0aGUgcGFja2FnZSBwb3J0aW9uCi0gICAg
ICBub3RhYmxlX2ZsYWdzLT5wYWNrYWdlX2ZsYWdzLmluc2VydCgqaXQpOwotICAgICAgRFZMT0co
MykgPDwgIlJlc3VsdDogcGFja2FnZSBtYXRjaCI7Ci0gICAgfSBlbHNlIGlmIChmYWxzZSkgewot
ICAgICAgLy8gSW4gdGhlIGxpc3Qgb2YgdGhlIFhYWCBtb3N0IGNvbW1vbmx5IHN1cHBsaWVkIGZs
YWdzIG92ZXJhbGwKLSAgICAgIC8vIFRPRE8odXNlcik6IENvbXBpbGUgdGhpcyBsaXN0LgotICAg
ICAgRFZMT0coMykgPDwgIlJlc3VsdDogbW9zdC1jb21tb24gbWF0Y2giOwotICAgIH0gZWxzZSBp
ZiAoIXBhY2thZ2VfZGlyLmVtcHR5KCkgJiYKLSAgICAgICAgcG9zICE9IHN0cmluZzo6bnBvcyAm
JiBzbGFzaCAhPSBzdHJpbmc6Om5wb3MpIHsKLSAgICAgIC8vIEluIGEgc3ViZGlyZWN0b3J5IG9m
IHRoZSBwYWNrYWdlCi0gICAgICBub3RhYmxlX2ZsYWdzLT5zdWJwYWNrYWdlX2ZsYWdzLmluc2Vy
dCgqaXQpOwotICAgICAgRFZMT0coMykgPDwgIlJlc3VsdDogc3VicGFja2FnZSBtYXRjaCI7Ci0g
ICAgfQotCi0gICAgRFZMT0coMykgPDwgIlJlc3VsdDogbm90IHNwZWNpYWwgbWF0Y2giOwotICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIFB1c2hOYW1lV2l0aFN1ZmZpeCh2ZWN0b3I8c3RyaW5nPiogc3Vm
Zml4ZXMsIGNvbnN0IGNoYXIqIHN1ZmZpeCkgewotICBzdWZmaXhlcy0+cHVzaF9iYWNrKAotICAg
ICAgU3RyaW5nUHJpbnRmKCIvJXMlcyIsIFByb2dyYW1JbnZvY2F0aW9uU2hvcnROYW1lKCksIHN1
ZmZpeCkpOwotfQotCi1zdGF0aWMgdm9pZCBUcnlGaW5kTW9kdWxlQW5kUGFja2FnZURpcigKLSAg
ICBjb25zdCB2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz4gYWxsX2ZsYWdzLAotICAgIHN0cmlu
ZyAqbW9kdWxlLAotICAgIHN0cmluZyAqcGFja2FnZV9kaXIpIHsKLSAgbW9kdWxlLT5jbGVhcigp
OwotICBwYWNrYWdlX2Rpci0+Y2xlYXIoKTsKLQotICB2ZWN0b3I8c3RyaW5nPiBzdWZmaXhlczsK
LSAgLy8gVE9ETyh1c2VyKTogVGhlcmUncyBzb21lIGluaGVyYW50IGFtYmlndWl0eSBoZXJlIC0g
bXVsdGlwbGUgZGlyZWN0b3JpZXMKLSAgLy8gY291bGQgc2hhcmUgdGhlIHNhbWUgdHJhaWxpbmcg
Zm9sZGVyIGFuZCBmaWxlIHN0cnVjdHVyZSAoYW5kIGV2ZW4gd29yc2UsCi0gIC8vIHNhbWUgZmls
ZSBuYW1lcyksIGNhdXNpbmcgdXMgdG8gYmUgdW5zdXJlIGFzIHRvIHdoaWNoIG9mIHRoZSB0d28g
aXMgdGhlCi0gIC8vIGFjdHVhbCBwYWNrYWdlIGZvciB0aGlzIGJpbmFyeS4gIEluIHRoaXMgY2Fz
ZSwgd2UnbGwgYXJiaXRyYXJpbHkgY2hvb3NlLgotICBQdXNoTmFtZVdpdGhTdWZmaXgoJnN1ZmZp
eGVzLCAiLiIpOwotICBQdXNoTmFtZVdpdGhTdWZmaXgoJnN1ZmZpeGVzLCAiLW1haW4uIik7Ci0g
IFB1c2hOYW1lV2l0aFN1ZmZpeCgmc3VmZml4ZXMsICJfbWFpbi4iKTsKLSAgLy8gVGhlc2UgZm91
ciBhcmUgbmV3IGJ1dCBwcm9iYWJseSBtZXJpdGVkPwotICBQdXNoTmFtZVdpdGhTdWZmaXgoJnN1
ZmZpeGVzLCAiLXRlc3QuIik7Ci0gIFB1c2hOYW1lV2l0aFN1ZmZpeCgmc3VmZml4ZXMsICJfdGVz
dC4iKTsKLSAgUHVzaE5hbWVXaXRoU3VmZml4KCZzdWZmaXhlcywgIi11bml0dGVzdC4iKTsKLSAg
UHVzaE5hbWVXaXRoU3VmZml4KCZzdWZmaXhlcywgIl91bml0dGVzdC4iKTsKLQotICBmb3IgKHZl
Y3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxfZmxhZ3Mu
YmVnaW4oKTsKLSAgICAgIGl0ICE9IGFsbF9mbGFncy5lbmQoKTsKLSAgICAgICsraXQpIHsKLSAg
ICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBzdWZmaXggPSBzdWZmaXhlcy5i
ZWdpbigpOwotICAgICAgICBzdWZmaXggIT0gc3VmZml4ZXMuZW5kKCk7Ci0gICAgICAgICsrc3Vm
Zml4KSB7Ci0gICAgICAvLyBUT0RPKHVzZXIpOiBNYWtlIHN1cmUgdGhlIG1hdGNoIGlzIG5lYXIg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nCi0gICAgICBpZiAoaXQtPmZpbGVuYW1lLmZpbmQoKnN1ZmZp
eCkgIT0gc3RyaW5nOjpucG9zKSB7Ci0gICAgICAgICptb2R1bGUgPSBpdC0+ZmlsZW5hbWU7Ci0g
ICAgICAgIHN0cmluZzo6c2l6ZV90eXBlIHNlcCA9IGl0LT5maWxlbmFtZS5yZmluZChQQVRIX1NF
UEFSQVRPUik7Ci0gICAgICAgICpwYWNrYWdlX2RpciA9IGl0LT5maWxlbmFtZS5zdWJzdHIoMCwg
KHNlcCA9PSBzdHJpbmc6Om5wb3MpID8gMCA6IHNlcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICAg
IH0KLSAgICB9Ci0gIH0KLX0KLQotLy8gQ2FuJ3Qgc3BlY2lhbGl6ZSB0ZW1wbGF0ZSB0eXBlIG9u
IGEgbG9jYWxseSBkZWZpbmVkIHR5cGUuICBTaWxseSBDKysuLi4KLXN0cnVjdCBEaXNwbGF5SW5m
b0dyb3VwIHsKLSAgY29uc3QgY2hhciogaGVhZGVyOwotICBjb25zdCBjaGFyKiBmb290ZXI7Ci0g
IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICpncm91cDsKLQotICBpbnQgU2l6ZUlu
TGluZXMoKSBjb25zdCB7Ci0gICAgaW50IHNpemVfaW5fbGluZXMgPSBzdGF0aWNfY2FzdDxpbnQ+
KGdyb3VwLT5zaXplKCkpICsgMTsKLSAgICBpZiAoc3RybGVuKGhlYWRlcikgPiAwKSB7Ci0gICAg
ICBzaXplX2luX2xpbmVzKys7Ci0gICAgfQotICAgIGlmIChzdHJsZW4oZm9vdGVyKSA+IDApIHsK
LSAgICAgIHNpemVfaW5fbGluZXMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHNpemVfaW5fbGluZXM7
Ci0gIH0KLX07Ci0KLS8vIDQpIEZpbmFsaXplIGFuZCB0cmltIG91dHB1dCBmbGFnIHNldAotc3Rh
dGljIHZvaWQgRmluYWxpemVDb21wbGV0aW9uT3V0cHV0KAotICAgIGNvbnN0IHNldDxjb25zdCBD
b21tYW5kTGluZUZsYWdJbmZvICo+ICZtYXRjaGluZ19mbGFncywKLSAgICBDb21wbGV0aW9uT3B0
aW9ucyAqb3B0aW9ucywKLSAgICBOb3RhYmxlRmxhZ3MgKm5vdGFibGVfZmxhZ3MsCi0gICAgdmVj
dG9yPHN0cmluZz4gKmNvbXBsZXRpb25zKSB7Ci0KLSAgLy8gV2Ugd2FudCB0byBvdXRwdXQgbGlu
ZXMgaW4gZ3JvdXBzLiAgRWFjaCBncm91cCBuZWVkcyB0byBiZSBpbmRlbnRlZAotICAvLyB0aGUg
c2FtZSB0byBrZWVwIGl0cyBsaW5lcyB0b2dldGhlci4gIFVubGVzcyBvdGhlcndpc2UgcmVxdWly
ZWQsCi0gIC8vIG9ubHkgOTkgbGluZXMgc2hvdWxkIGJlIG91dHB1dCB0byBwcmV2ZW50IGJhc2gg
ZnJvbSBoYXJhc3NpbmcgdGhlCi0gIC8vIHVzZXIuCi0KLSAgLy8gRmlyc3QsIGZpZ3VyZSBvdXQg
d2hpY2ggb3V0cHV0IGdyb3VwcyB3ZSdsbCBhY3R1YWxseSB1c2UuICBGb3IgZWFjaAotICAvLyBu
b25lbXB0eSBncm91cCwgdGhlcmUgd2lsbCBiZSB+MyBsaW5lcyBvZiBoZWFkZXIgJiBmb290ZXIs
IHBsdXMgYWxsCi0gIC8vIG91dHB1dCBsaW5lcyB0aGVtc2VsdmVzLgotICBpbnQgbWF4X2Rlc2ly
ZWRfbGluZXMgPSAgLy8gIjk5OTk5OSBmbGFncyBzaG91bGQgYmUgZW5vdWdoIGZvciBhbnlvbmUu
ICAtZGF2ZSIKLSAgICAob3B0aW9ucy0+cmV0dXJuX2FsbF9tYXRjaGluZ19mbGFncyA/IDk5OTk5
OSA6IDk4KTsKLSAgaW50IGxpbmVzX3NvX2ZhciA9IDA7Ci0KLSAgdmVjdG9yPERpc3BsYXlJbmZv
R3JvdXA+IG91dHB1dF9ncm91cHM7Ci0gIGJvb2wgcGVyZmVjdF9tYXRjaF9mb3VuZCA9IGZhbHNl
OwotICBpZiAobGluZXNfc29fZmFyIDwgbWF4X2Rlc2lyZWRfbGluZXMgJiYKLSAgICAgICFub3Rh
YmxlX2ZsYWdzLT5wZXJmZWN0X21hdGNoX2ZsYWcuZW1wdHkoKSkgewotICAgIHBlcmZlY3RfbWF0
Y2hfZm91bmQgPSB0cnVlOwotICAgIERpc3BsYXlJbmZvR3JvdXAgZ3JvdXAgPQotICAgICAgICB7
ICIiLAotICAgICAgICAgICI9PT09PT09PT09IiwKLSAgICAgICAgICAmbm90YWJsZV9mbGFncy0+
cGVyZmVjdF9tYXRjaF9mbGFnIH07Ci0gICAgbGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxp
bmVzKCk7Ci0gICAgb3V0cHV0X2dyb3Vwcy5wdXNoX2JhY2soZ3JvdXApOwotICB9Ci0gIGlmIChs
aW5lc19zb19mYXIgPCBtYXhfZGVzaXJlZF9saW5lcyAmJgotICAgICAgIW5vdGFibGVfZmxhZ3Mt
Pm1vZHVsZV9mbGFncy5lbXB0eSgpKSB7Ci0gICAgRGlzcGxheUluZm9Hcm91cCBncm91cCA9IHsK
LSAgICAgICAgIi0qIE1hdGNoaW5nIG1vZHVsZSBmbGFncyAqLSIsCi0gICAgICAgICI9PT09PT09
PT09PT09PT09PT09PT09PT09PT0iLAotICAgICAgICAmbm90YWJsZV9mbGFncy0+bW9kdWxlX2Zs
YWdzIH07Ci0gICAgbGluZXNfc29fZmFyICs9IGdyb3VwLlNpemVJbkxpbmVzKCk7Ci0gICAgb3V0
cHV0X2dyb3Vwcy5wdXNoX2JhY2soZ3JvdXApOwotICB9Ci0gIGlmIChsaW5lc19zb19mYXIgPCBt
YXhfZGVzaXJlZF9saW5lcyAmJgotICAgICAgIW5vdGFibGVfZmxhZ3MtPnBhY2thZ2VfZmxhZ3Mu
ZW1wdHkoKSkgewotICAgIERpc3BsYXlJbmZvR3JvdXAgZ3JvdXAgPSB7Ci0gICAgICAgICItKiBN
YXRjaGluZyBwYWNrYWdlIGZsYWdzICotIiwKLSAgICAgICAgIj09PT09PT09PT09PT09PT09PT09
PT09PT09PT0iLAotICAgICAgICAmbm90YWJsZV9mbGFncy0+cGFja2FnZV9mbGFncyB9OwotICAg
IGxpbmVzX3NvX2ZhciArPSBncm91cC5TaXplSW5MaW5lcygpOwotICAgIG91dHB1dF9ncm91cHMu
cHVzaF9iYWNrKGdyb3VwKTsKLSAgfQotICBpZiAobGluZXNfc29fZmFyIDwgbWF4X2Rlc2lyZWRf
bGluZXMgJiYKLSAgICAgICFub3RhYmxlX2ZsYWdzLT5tb3N0X2NvbW1vbl9mbGFncy5lbXB0eSgp
KSB7Ci0gICAgRGlzcGxheUluZm9Hcm91cCBncm91cCA9IHsKLSAgICAgICAgIi0qIENvbW1vbmx5
IHVzZWQgZmxhZ3MgKi0iLAotICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09PT09PSIsCi0g
ICAgICAgICZub3RhYmxlX2ZsYWdzLT5tb3N0X2NvbW1vbl9mbGFncyB9OwotICAgIGxpbmVzX3Nv
X2ZhciArPSBncm91cC5TaXplSW5MaW5lcygpOwotICAgIG91dHB1dF9ncm91cHMucHVzaF9iYWNr
KGdyb3VwKTsKLSAgfQotICBpZiAobGluZXNfc29fZmFyIDwgbWF4X2Rlc2lyZWRfbGluZXMgJiYK
LSAgICAgICFub3RhYmxlX2ZsYWdzLT5zdWJwYWNrYWdlX2ZsYWdzLmVtcHR5KCkpIHsKLSAgICBE
aXNwbGF5SW5mb0dyb3VwIGdyb3VwID0gewotICAgICAgICAiLSogTWF0Y2hpbmcgc3ViLXBhY2th
Z2UgZmxhZ3MgKi0iLAotICAgICAgICAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0i
LAotICAgICAgICAmbm90YWJsZV9mbGFncy0+c3VicGFja2FnZV9mbGFncyB9OwotICAgIGxpbmVz
X3NvX2ZhciArPSBncm91cC5TaXplSW5MaW5lcygpOwotICAgIG91dHB1dF9ncm91cHMucHVzaF9i
YWNrKGdyb3VwKTsKLSAgfQotCi0gIHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+IG9i
c2N1cmVfZmxhZ3M7ICAvLyBmbGFncyBub3Qgbm90YWJsZQotICBpZiAobGluZXNfc29fZmFyIDwg
bWF4X2Rlc2lyZWRfbGluZXMpIHsKLSAgICBSZXRyaWV2ZVVudXNlZEZsYWdzKG1hdGNoaW5nX2Zs
YWdzLCAqbm90YWJsZV9mbGFncywgJm9ic2N1cmVfZmxhZ3MpOwotICAgIGlmICghb2JzY3VyZV9m
bGFncy5lbXB0eSgpKSB7Ci0gICAgICBEaXNwbGF5SW5mb0dyb3VwIGdyb3VwID0gewotICAgICAg
ICAgICItKiBPdGhlciBmbGFncyAqLSIsCi0gICAgICAgICAgIiIsCi0gICAgICAgICAgJm9ic2N1
cmVfZmxhZ3MgfTsKLSAgICAgIGxpbmVzX3NvX2ZhciArPSBncm91cC5TaXplSW5MaW5lcygpOwot
ICAgICAgb3V0cHV0X2dyb3Vwcy5wdXNoX2JhY2soZ3JvdXApOwotICAgIH0KLSAgfQotCi0gIC8v
IFNlY29uZCwgZ28gdGhyb3VnaCBlYWNoIG9mIHRoZSBjaG9zZW4gb3V0cHV0IGdyb3VwcyBhbmQg
b3V0cHV0Ci0gIC8vIGFzIG1hbnkgb2YgdGhvc2UgZmxhZ3MgYXMgd2UgY2FuLCB3aGlsZSByZW1h
aW5pbmcgYmVsb3cgb3VyIGxpbWl0Ci0gIGludCByZW1haW5pbmdfbGluZXMgPSBtYXhfZGVzaXJl
ZF9saW5lczsKLSAgc2l6ZV90IGNvbXBsZXRpb25zX291dHB1dCA9IDA7Ci0gIGludCBpbmRlbnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KG91dHB1dF9ncm91cHMuc2l6ZSgpKSAtIDE7Ci0gIGZvciAodmVj
dG9yPERpc3BsYXlJbmZvR3JvdXA+Ojpjb25zdF9pdGVyYXRvciBpdCA9Ci0gICAgICAgIG91dHB1
dF9ncm91cHMuYmVnaW4oKTsKLSAgICAgIGl0ICE9IG91dHB1dF9ncm91cHMuZW5kKCk7Ci0gICAg
ICArK2l0LCAtLWluZGVudCkgewotICAgIE91dHB1dFNpbmdsZUdyb3VwV2l0aExpbWl0KAotICAg
ICAgICAqaXQtPmdyb3VwLCAgLy8gZ3JvdXAKLSAgICAgICAgc3RyaW5nKGluZGVudCwgJyAnKSwg
IC8vIGxpbmUgaW5kZW50YXRpb24KLSAgICAgICAgc3RyaW5nKGl0LT5oZWFkZXIpLCAgLy8gaGVh
ZGVyCi0gICAgICAgIHN0cmluZyhpdC0+Zm9vdGVyKSwgIC8vIGZvb3RlcgotICAgICAgICBwZXJm
ZWN0X21hdGNoX2ZvdW5kLCAgLy8gbG9uZyBmb3JtYXQKLSAgICAgICAgJnJlbWFpbmluZ19saW5l
cywgIC8vIGxpbmUgbGltaXQgLSByZWR1Y2VzIHRoaXMgYnkgbnVtYmVyIHByaW50ZWQKLSAgICAg
ICAgJmNvbXBsZXRpb25zX291dHB1dCwgIC8vIGNvbXBsZXRpb25zIChub3QgbGluZXMpIGFkZGVk
Ci0gICAgICAgIGNvbXBsZXRpb25zKTsgIC8vIHByb2R1Y2VkIGNvbXBsZXRpb25zCi0gICAgcGVy
ZmVjdF9tYXRjaF9mb3VuZCA9IGZhbHNlOwotICB9Ci0KLSAgaWYgKGNvbXBsZXRpb25zX291dHB1
dCAhPSBtYXRjaGluZ19mbGFncy5zaXplKCkpIHsKLSAgICBvcHRpb25zLT5mb3JjZV9ub191cGRh
dGUgPSBmYWxzZTsKLSAgICBjb21wbGV0aW9ucy0+cHVzaF9iYWNrKCJ+IChSZW1haW5pbmcgZmxh
Z3MgaGlkZGVuKSB+Iik7Ci0gIH0gZWxzZSB7Ci0gICAgb3B0aW9ucy0+Zm9yY2Vfbm9fdXBkYXRl
ID0gdHJ1ZTsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBSZXRyaWV2ZVVudXNlZEZsYWdzKAotICAg
IGNvbnN0IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICZtYXRjaGluZ19mbGFncywK
LSAgICBjb25zdCBOb3RhYmxlRmxhZ3MgJm5vdGFibGVfZmxhZ3MsCi0gICAgc2V0PGNvbnN0IENv
bW1hbmRMaW5lRmxhZ0luZm8gKj4gKnVudXNlZF9mbGFncykgewotICAvLyBSZW1vdmUgZnJvbSAn
bWF0Y2hpbmdfZmxhZ3MnIHNldCBhbGwgbWVtYmVycyBvZiB0aGUgc2V0cyBvZgotICAvLyBmbGFn
cyB3ZSd2ZSBhbHJlYWR5IHByaW50ZWQgKHNwZWNpZmljYWxseSwgdGhvc2UgaW4gbm90YWJsZV9m
bGFncykKLSAgZm9yIChzZXQ8Y29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyAqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPQotICAgICAgICBtYXRjaGluZ19mbGFncy5iZWdpbigpOwotICAgICAgaXQgIT0g
bWF0Y2hpbmdfZmxhZ3MuZW5kKCk7Ci0gICAgICArK2l0KSB7Ci0gICAgaWYgKG5vdGFibGVfZmxh
Z3MucGVyZmVjdF9tYXRjaF9mbGFnLmNvdW50KCppdCkgfHwKLSAgICAgICAgbm90YWJsZV9mbGFn
cy5tb2R1bGVfZmxhZ3MuY291bnQoKml0KSB8fAotICAgICAgICBub3RhYmxlX2ZsYWdzLnBhY2th
Z2VfZmxhZ3MuY291bnQoKml0KSB8fAotICAgICAgICBub3RhYmxlX2ZsYWdzLm1vc3RfY29tbW9u
X2ZsYWdzLmNvdW50KCppdCkgfHwKLSAgICAgICAgbm90YWJsZV9mbGFncy5zdWJwYWNrYWdlX2Zs
YWdzLmNvdW50KCppdCkpCi0gICAgICBjb250aW51ZTsKLSAgICB1bnVzZWRfZmxhZ3MtPmluc2Vy
dCgqaXQpOwotICB9Ci19Ci0KLS8vIDUpIE91dHB1dCBtYXRjaGVzIChhbmQgaGVscGVyIG1ldGhv
ZHMpCi0KLXN0YXRpYyB2b2lkIE91dHB1dFNpbmdsZUdyb3VwV2l0aExpbWl0KAotICAgIGNvbnN0
IHNldDxjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICo+ICZncm91cCwKLSAgICBjb25zdCBzdHJp
bmcgJmxpbmVfaW5kZW50YXRpb24sCi0gICAgY29uc3Qgc3RyaW5nICZoZWFkZXIsCi0gICAgY29u
c3Qgc3RyaW5nICZmb290ZXIsCi0gICAgYm9vbCBsb25nX291dHB1dF9mb3JtYXQsCi0gICAgaW50
ICpyZW1haW5pbmdfbGluZV9saW1pdCwKLSAgICBzaXplX3QgKmNvbXBsZXRpb25fZWxlbWVudHNf
b3V0cHV0LAotICAgIHZlY3RvcjxzdHJpbmc+ICpjb21wbGV0aW9ucykgewotICBpZiAoZ3JvdXAu
ZW1wdHkoKSkgcmV0dXJuOwotICBpZiAoIWhlYWRlci5lbXB0eSgpKSB7Ci0gICAgaWYgKCpyZW1h
aW5pbmdfbGluZV9saW1pdCA8IDIpIHJldHVybjsKLSAgICAqcmVtYWluaW5nX2xpbmVfbGltaXQg
LT0gMjsKLSAgICBjb21wbGV0aW9ucy0+cHVzaF9iYWNrKGxpbmVfaW5kZW50YXRpb24gKyBoZWFk
ZXIpOwotICAgIGNvbXBsZXRpb25zLT5wdXNoX2JhY2sobGluZV9pbmRlbnRhdGlvbiArIHN0cmlu
ZyhoZWFkZXIuc2l6ZSgpLCAnLScpKTsKLSAgfQotICBmb3IgKHNldDxjb25zdCBDb21tYW5kTGlu
ZUZsYWdJbmZvICo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGdyb3VwLmJlZ2luKCk7Ci0gICAgICBp
dCAhPSBncm91cC5lbmQoKSAmJiAqcmVtYWluaW5nX2xpbmVfbGltaXQgPiAwOwotICAgICAgKytp
dCkgewotICAgIC0tKnJlbWFpbmluZ19saW5lX2xpbWl0OwotICAgICsrKmNvbXBsZXRpb25fZWxl
bWVudHNfb3V0cHV0OwotICAgIGNvbXBsZXRpb25zLT5wdXNoX2JhY2soCi0gICAgICAgIChsb25n
X291dHB1dF9mb3JtYXQKLSAgICAgICAgICA/IEdldExvbmdGbGFnTGluZShsaW5lX2luZGVudGF0
aW9uLCAqKml0KQotICAgICAgICAgIDogR2V0U2hvcnRGbGFnTGluZShsaW5lX2luZGVudGF0aW9u
LCAqKml0KSkpOwotICB9Ci0gIGlmICghZm9vdGVyLmVtcHR5KCkpIHsKLSAgICBpZiAoKnJlbWFp
bmluZ19saW5lX2xpbWl0IDwgMSkgcmV0dXJuOwotICAgIC0tKnJlbWFpbmluZ19saW5lX2xpbWl0
OwotICAgIGNvbXBsZXRpb25zLT5wdXNoX2JhY2sobGluZV9pbmRlbnRhdGlvbiArIGZvb3Rlcik7
Ci0gIH0KLX0KLQotc3RhdGljIHN0cmluZyBHZXRTaG9ydEZsYWdMaW5lKAotICAgIGNvbnN0IHN0
cmluZyAmbGluZV9pbmRlbnRhdGlvbiwKLSAgICBjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvICZp
bmZvKSB7Ci0gIHN0cmluZyBwcmVmaXg7Ci0gIGJvb2wgaXNfc3RyaW5nID0gKGluZm8udHlwZSA9
PSAic3RyaW5nIik7Ci0gIFNTdHJpbmdQcmludGYoJnByZWZpeCwgIiVzLS0lcyBbJXMlcyVzXSAi
LAotICAgICAgICAgICAgICAgIGxpbmVfaW5kZW50YXRpb24uY19zdHIoKSwKLSAgICAgICAgICAg
ICAgICBpbmZvLm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAoaXNfc3RyaW5nID8gIici
IDogIiIpLAotICAgICAgICAgICAgICAgIGluZm8uZGVmYXVsdF92YWx1ZS5jX3N0cigpLAotICAg
ICAgICAgICAgICAgIChpc19zdHJpbmcgPyAiJyIgOiAiIikpOwotICBpbnQgcmVtYWluZGVyID0K
LSAgICAgIEZMQUdTX3RhYl9jb21wbGV0aW9uX2NvbHVtbnMgLSBzdGF0aWNfY2FzdDxpbnQ+KHBy
ZWZpeC5zaXplKCkpOwotICBzdHJpbmcgc3VmZml4OwotICBpZiAocmVtYWluZGVyID4gMCkKLSAg
ICBzdWZmaXggPQotICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihpbmZvLmRlc2NyaXB0aW9uLnNp
emUoKSkgPiByZW1haW5kZXIgPwotICAgICAgICAgKGluZm8uZGVzY3JpcHRpb24uc3Vic3RyKDAs
IHJlbWFpbmRlciAtIDMpICsgIi4uLiIpLmNfc3RyKCkgOgotICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbi5jX3N0cigpKTsKLSAgcmV0dXJuIHByZWZpeCArIHN1ZmZpeDsKLX0KLQotc3RhdGljIHN0
cmluZyBHZXRMb25nRmxhZ0xpbmUoCi0gICAgY29uc3Qgc3RyaW5nICZsaW5lX2luZGVudGF0aW9u
LAotICAgIGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8gJmluZm8pIHsKLQotICBzdHJpbmcgb3V0
cHV0ID0gRGVzY3JpYmVPbmVGbGFnKGluZm8pOwotCi0gIC8vIFJlcGxhY2UgJy0nIHdpdGggJy0t
JywgYW5kIHJlbW92ZSB0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSBhcHBlbmRpbmcKLSAgLy8gdGhl
IG1vZHVsZSBkZWZpbml0aW9uIGxvY2F0aW9uLgotICBzdHJpbmcgb2xkX2ZsYWduYW1lID0gIi0i
ICsgaW5mby5uYW1lOwotICBvdXRwdXQucmVwbGFjZSgKLSAgICAgIG91dHB1dC5maW5kKG9sZF9m
bGFnbmFtZSksCi0gICAgICBvbGRfZmxhZ25hbWUuc2l6ZSgpLAotICAgICAgIi0iICsgb2xkX2Zs
YWduYW1lKTsKLSAgLy8gU3RpY2sgYSBuZXdsaW5lIGFuZCBpbmRlbnRhdGlvbiBpbiBmcm9udCBv
ZiB0aGUgdHlwZSBhbmQgZGVmYXVsdAotICAvLyBwb3J0aW9ucyBvZiBEZXNjcmliZU9uZUZsYWco
KXMgZGVzY3JpcHRpb24KLSAgc3RhdGljIGNvbnN0IGNoYXIga05ld2xpbmVXaXRoSW5kZW50W10g
PSAiXG4gICAgIjsKLSAgb3V0cHV0LnJlcGxhY2Uob3V0cHV0LmZpbmQoIiB0eXBlOiIpLCAxLCBz
dHJpbmcoa05ld2xpbmVXaXRoSW5kZW50KSk7Ci0gIG91dHB1dC5yZXBsYWNlKG91dHB1dC5maW5k
KCIgZGVmYXVsdDoiKSwgMSwgc3RyaW5nKGtOZXdsaW5lV2l0aEluZGVudCkpOwotICBvdXRwdXQg
PSBTdHJpbmdQcmludGYoIiVzIERldGFpbHMgZm9yICctLSVzJzpcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICIlcyAgICBkZWZpbmVkOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
aW5lX2luZGVudGF0aW9uLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvLm5h
bWUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5jX3N0cigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mby5maWxlbmFtZS5jX3N0cigpKTsKLQotICAvLyBFbGlt
aW5hdGUgYW55IGRvdWJsZWQgbmV3bGluZXMgdGhhdCBjcmVwdCBpbi4gIFNwZWNpZmljYWxseSwg
aWYKLSAgLy8gRGVzY3JpYmVPbmVGbGFnKCkgZGVjaWRlZCB0byBicmVhayB0aGUgbGluZSBqdXN0
IGJlZm9yZSAidHlwZSIKLSAgLy8gb3IgImRlZmF1bHQiLCB3ZSBkb24ndCB3YW50IHRvIGludHJv
ZHVjZSBhbiBleHRyYSBibGFuayBsaW5lCi0gIHN0YXRpYyBjb25zdCBzdHJpbmcgbGluZV9vZl9z
cGFjZXMoRkxBR1NfdGFiX2NvbXBsZXRpb25fY29sdW1ucywgJyAnKTsKLSAgc3RhdGljIGNvbnN0
IGNoYXIga0RvdWJsZWROZXdsaW5lc1tdID0gIlxuICAgICBcbiI7Ci0gIGZvciAoc3RyaW5nOjpz
aXplX3R5cGUgbmV3bGluZXMgPSBvdXRwdXQuZmluZChrRG91YmxlZE5ld2xpbmVzKTsKLSAgICAg
IG5ld2xpbmVzICE9IHN0cmluZzo6bnBvczsKLSAgICAgIG5ld2xpbmVzID0gb3V0cHV0LmZpbmQo
a0RvdWJsZWROZXdsaW5lcykpCi0gICAgLy8gUmVwbGFjZSBlYWNoICdkb3VibGVkIG5ld2xpbmUn
IHdpdGggYSBzaW5nbGUgbmV3bGluZQotICAgIG91dHB1dC5yZXBsYWNlKG5ld2xpbmVzLCBzaXpl
b2Yoa0RvdWJsZWROZXdsaW5lcykgLSAxLCBzdHJpbmcoIlxuIikpOwotCi0gIGZvciAoc3RyaW5n
OjpzaXplX3R5cGUgbmV3bGluZSA9IG91dHB1dC5maW5kKCdcbicpOwotICAgICAgbmV3bGluZSAh
PSBzdHJpbmc6Om5wb3M7Ci0gICAgICBuZXdsaW5lID0gb3V0cHV0LmZpbmQoJ1xuJykpIHsKLSAg
ICBpbnQgbmV3bGluZV9wb3MgPSBzdGF0aWNfY2FzdDxpbnQ+KG5ld2xpbmUpICUgRkxBR1NfdGFi
X2NvbXBsZXRpb25fY29sdW1uczsKLSAgICBpbnQgbWlzc2luZ19zcGFjZXMgPSBGTEFHU190YWJf
Y29tcGxldGlvbl9jb2x1bW5zIC0gbmV3bGluZV9wb3M7Ci0gICAgb3V0cHV0LnJlcGxhY2UobmV3
bGluZSwgMSwgbGluZV9vZl9zcGFjZXMsIDEsIG1pc3Npbmdfc3BhY2VzKTsKLSAgfQotICByZXR1
cm4gb3V0cHV0OwotfQotfSAgLy8gYW5vbnltb3VzCi0KLXZvaWQgSGFuZGxlQ29tbWFuZExpbmVD
b21wbGV0aW9ucyh2b2lkKSB7Ci0gIGlmIChGTEFHU190YWJfY29tcGxldGlvbl93b3JkLmVtcHR5
KCkpIHJldHVybjsKLSAgUHJpbnRGbGFnQ29tcGxldGlvbkluZm8oKTsKLSAgZ2ZsYWdzX2V4aXRm
dW5jKDApOwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L3NyYy9zcmMvZ2ZsYWdzX2NvbXBsZXRpb25zLmguaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19jb21wbGV0aW9u
cy5oLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjdlNWZkYTExNDQuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19jb21wbGV0aW9ucy5oLmluCisrKyAvZGV2L251bGwK
QEAgLTEsMTIxICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gLS0tCi0KLS8vCi0vLyBJbXBsZW1lbnQgaGVscGZ1bCBiYXNoLXN0
eWxlIGNvbW1hbmQgbGluZSBmbGFnIGNvbXBsZXRpb25zCi0vLwotLy8gKiogRnVuY3Rpb25hbCBB
UEk6Ci0vLyBIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zKCkgc2hvdWxkIGJlIGNhbGxlZCBl
YXJseSBkdXJpbmcKLS8vIHByb2dyYW0gc3RhcnR1cCwgYnV0IGFmdGVyIGNvbW1hbmQgbGluZSBm
bGFnIGNvZGUgaGFzIGJlZW4KLS8vIGluaXRpYWxpemVkLCBzdWNoIGFzIHRoZSBiZWdpbm5pbmcg
b2YgSGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3MoKS4KLS8vIEl0IGNoZWNrcyB0aGUgdmFsdWUg
b2YgdGhlIGZsYWcgLS10YWJfY29tcGxldGlvbl93b3JkLiAgSWYgdGhpcwotLy8gZmxhZyBpcyBl
bXB0eSwgbm90aGluZyBoYXBwZW5zIGhlcmUuICBJZiBpdCBjb250YWlucyBhIHN0cmluZywKLS8v
IGhvd2V2ZXIsIHRoZW4gSGFuZGxlQ29tbWFuZExpbmVDb21wbGV0aW9ucygpIHdpbGwgaGlqYWNr
IHRoZQotLy8gcHJvY2VzcywgYXR0ZW1wdGluZyB0byBpZGVudGlmeSB0aGUgaW50ZW50aW9uIGJl
aGluZCB0aGlzCi0vLyBjb21wbGV0aW9uLiAgUmVnYXJkbGVzcyBvZiB0aGUgb3V0Y29tZSBvZiB0
aGlzIGRlZHVjdGlvbiwgdGhlCi0vLyBwcm9jZXNzIHdpbGwgYmUgdGVybWluYXRlZCwgc2ltaWxh
ciB0byAtLWhlbHBzaG9ydCBmbGFnCi0vLyBoYW5kbGluZy4KLS8vCi0vLyAqKiBPdmVydmlldyBv
ZiBCYXNoIGNvbXBsZXRpb25zOgotLy8gQmFzaCBjYW4gYmUgdG9sZCB0byBwcm9ncmFtYXRpY2Fs
bHkgZGV0ZXJtaW5lIGNvbXBsZXRpb25zIGZvciB0aGUKLS8vIGN1cnJlbnQgJ2N1cnNvciB3b3Jk
Jy4gIEl0IGRvZXMgdGhpcyBieSAoaW4gdGhpcyBjYXNlKSBpbnZva2luZyBhCi0vLyBjb21tYW5k
IHdpdGggc29tZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZGVudGlmeWluZyB0aGUgY29tbWFuZAot
Ly8gYmVpbmcgZXhlY3V0ZWQsIHRoZSB3b3JkIGJlaW5nIGNvbXBsZXRlZCwgYW5kIHRoZSBwcmV2
aW91cyB3b3JkCi0vLyAoaWYgYW55KS4gIEJhc2ggdGhlbiBleHBlY3RzIGEgc2VxdWVuY2Ugb2Yg
b3V0cHV0IGxpbmVzIHRvIGJlCi0vLyBwcmludGVkIHRvIHN0ZG91dC4gIElmIHRoZXNlIGxpbmVz
IGFsbCBjb250YWluIGEgY29tbW9uIHByZWZpeAotLy8gbG9uZ2VyIHRoYW4gdGhlIGN1cnNvciB3
b3JkLCBiYXNoIHdpbGwgcmVwbGFjZSB0aGUgY3Vyc29yIHdvcmQKLS8vIHdpdGggdGhhdCBjb21t
b24gcHJlZml4LCBhbmQgZGlzcGxheSBub3RoaW5nLiAgSWYgdGhlcmUgaXNuJ3Qgc3VjaAotLy8g
YSBjb21tb24gcHJlZml4LCBiYXNoIHdpbGwgZGlzcGxheSB0aGUgbGluZXMgaW4gcGFnZXMgdXNp
bmcgJ21vcmUnLgotLy8KLS8vICoqIFN0cmF0ZWd5IHRha2VuIGZvciBjb21tYW5kIGxpbmUgY29t
cGxldGlvbnM6Ci0vLyBJZiB3ZSBjYW4gZGVkdWNlIGVpdGhlciB0aGUgZXhhY3QgZmxhZyBpbnRl
bmRlZCwgb3IgYSBjb21tb24gZmxhZwotLy8gcHJlZml4LCB3ZSdsbCBvdXRwdXQgZXhhY3RseSB0
aGF0LiAgT3RoZXJ3aXNlLCBpZiBpbmZvcm1hdGlvbgotLy8gbXVzdCBiZSBkaXNwbGF5ZWQgdG8g
dGhlIHVzZXIsIHdlJ2xsIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIGFkZAotLy8gc29tZSBoZWxw
ZnVsIGluZm9ybWF0aW9uIGJleW9uZCBqdXN0IHRoZSBmbGFnIG5hbWUgKHNwZWNpZmljYWxseSwK
LS8vIHdlJ2xsIGluY2x1ZGUgdGhlIGRlZmF1bHQgZmxhZyB2YWx1ZSBhbmQgYXMgbXVjaCBvZiB0
aGUgZmxhZydzCi0vLyBkZXNjcmlwdGlvbiBhcyBjYW4gZml0IG9uIGEgc2luZ2xlIHRlcm1pbmFs
IGxpbmUgd2lkdGgsIGFzIHNwZWNpZmllZAotLy8gYnkgdGhlIGZsYWcgLS10YWJfY29tcGxldGlv
bl9jb2x1bW5zKS4gIEZ1cnRoZXJtb3JlLCB3ZSdsbCB0cnkgdG8KLS8vIG1ha2UgYmFzaCBvcmRl
ciB0aGUgb3V0cHV0IHN1Y2ggdGhhdCB0aGUgbW9zdCB1c2VmdWwgb3IgcmVsZXZlbnQKLS8vIGZs
YWdzIGFyZSB0aGUgbW9zdCBsaWtlbHkgdG8gYmUgc2hvd24gYXQgdGhlIHRvcC4KLS8vCi0vLyAq
KiBBZGRpdGlvbmFsIGZlYXR1cmVzOgotLy8gVG8gYXNzaXN0IGluIGZpbmRpbmcgdGhhdCBvbmUg
cmVhbGx5IHVzZWZ1bCBmbGFnLCBzdWJzdHJpbmcgbWF0Y2hpbmcKLS8vIHdhcyBpbXBsZW1lbnRl
ZC4gIEJlZm9yZSBwcmVzc2luZyBhIDxUQUI+IHRvIGdldCBjb21wbGV0aW9uIGZvciB0aGUKLS8v
IGN1cnJlbnQgd29yZCwgeW91IGNhbiBhcHBlbmQgb25lIG9yIG1vcmUgJz8nIHRvIHRoZSBmbGFn
IHRvIGRvCi0vLyBzdWJzdHJpbmcgbWF0Y2hpbmcuICBIZXJlJ3MgdGhlIHNlbWFudGljczoKLS8v
ICAgLS1mb288VEFCPiAgICAgU2hvdyBtZSBhbGwgZmxhZ3Mgd2l0aCBuYW1lcyBwcmVmaXhlZCBi
eSAnZm9vJwotLy8gICAtLWZvbz88VEFCPiAgICBTaG93IG1lIGFsbCBmbGFncyB3aXRoICdmb28n
IHNvbWV3aGVyZSBpbiB0aGUgbmFtZQotLy8gICAtLWZvbz8/PFRBQj4gICBTYW1lIGFzIHByaW9y
IGNhc2UsIGJ1dCBhbHNvIHNlYXJjaCBpbiBtb2R1bGUKLS8vICAgICAgICAgICAgICAgICAgZGVm
aW5pdGlvbiBwYXRoIGZvciAnZm9vJwotLy8gICAtLWZvbz8/PzxUQUI+ICBTYW1lIGFzIHByaW9y
IGNhc2UsIGJ1dCBhbHNvIHNlYXJjaCBpbiBmbGFnCi0vLyAgICAgICAgICAgICAgICAgIGRlc2Ny
aXB0aW9ucyBmb3IgJ2ZvbycKLS8vIEZpbmFsbHksIHdlJ2xsIHRyaW0gdGhlIG91dHB1dCB0byBh
IHJlbGF0aXZlbHkgc21hbGwgbnVtYmVyIG9mCi0vLyBmbGFncyB0byBrZWVwIGJhc2ggcXVpZXQg
YWJvdXQgdGhlIHZlcmJvc2l0eSBvZiBvdXRwdXQuICBJZiBvbmUKLS8vIHJlYWxseSB3YW50ZWQg
dG8gc2VlIGFsbCBwb3NzaWJsZSBtYXRjaGVzLCBhcHBlbmRpbmcgYSAnKycgdG8gdGhlCi0vLyBz
ZWFyY2ggd29yZCB3aWxsIGZvcmNlIHRoZSBleGhhdXN0aXZlIGxpc3Qgb2YgbWF0Y2hlcyB0byBi
ZSBwcmludGVkLgotLy8KLS8vICoqIEhvdyB0byBoYXZlIGJhc2ggYWNjZXB0IGNvbXBsZXRpb25z
IGZyb20gYSBiaW5hcnk6Ci0vLyBCYXNoIHJlcXVpcmVzIHRoYXQgaXQgYmUgaW5mb3JtZWQgYWJv
dXQgZWFjaCBjb21tYW5kIHRoYXQgcHJvZ3JhbW1hdGljCi0vLyBjb21wbGV0aW9uIHNob3VsZCBi
ZSBlbmFibGVkIGZvci4gIEV4YW1wbGUgYWRkaXRpb24gdG8gYSAuYmFzaHJjCi0vLyBmaWxlIHdv
dWxkIGJlICh5b3VyIHBhdGggdG8gZ2ZsYWdzX2NvbXBsZXRpb25zLnNoIGZpbGUgbWF5IGRpZmZl
cik6Ci0KLS8qCi0kIGNvbXBsZXRlIC1vIGJhc2hkZWZhdWx0IC1vIGRlZmF1bHQgLW8gbm9zcGFj
ZSAtQyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gJy9ob21lL2J1aWxkL2VuZy9iYXNo
L2Jhc2hfY29tcGxldGlvbnMuc2ggLS10YWJfY29tcGxldGlvbl9jb2x1bW5zICRDT0xVTU5TJyBc
Ci0gIHRpbWUgIGVudiAgYmluYXJ5X25hbWUgIGFub3RoZXJfYmluYXJ5ICBbLi4uXQotKi8KLQot
Ly8gVGhpcyB3b3VsZCBhbGxvdyB0aGUgZm9sbG93aW5nIHRvIHdvcms6Ci0vLyAgICQgL3BhdGgv
dG8vYmluYXJ5X25hbWUgLS12bW9kdWxlPFRBQj4KLS8vIE9yOgotLy8gICAkIC4vYmluL3BhdGgv
YW5vdGhlcl9iaW5hcnkgLS1nZnNfdTxUQUI+Ci0vLyAoZXRjKQotLy8KLS8vIFNhZGx5LCBpdCBh
cHBlYXJzIHRoYXQgYmFzaCBnaXZlcyBubyBlYXN5IHdheSB0byBmb3JjZSB0aGlzIGJlaGF2aW9y
IGZvcgotLy8gYWxsIGNvbW1hbmRzLiAgVGhhdCdzIHdoZXJlIHRoZSAidGltZSIgaW4gdGhlIGFi
b3ZlIGV4YW1wbGUgY29tZXMgaW4uCi0vLyBJZiB5b3UgaGF2ZW4ndCBzcGVjaWZpY2FsbHkgYWRk
ZWQgYSBjb21tYW5kIHRvIHRoZSBsaXN0IG9mIGNvbXBsZXRpb24KLS8vIHN1cHBvcnRlZCBjb21t
YW5kcywgeW91IGNhbiBzdGlsbCBnZXQgY29tcGxldGlvbnMgYnkgcHJlZml4aW5nIHRoZQotLy8g
ZW50aXJlIGNvbW1hbmQgd2l0aCAiZW52Ii4KLS8vICAgJCBlbnYgL3NvbWUvYnJhbmQvbmV3L2Jp
bmFyeSAtLXZtb2Q8VEFCPgotLy8gQXNzdW1pbmcgdGhhdCAiYmluYXJ5IiBpcyBhIG5ld2x5IGNv
bXBpbGVkIGJpbmFyeSwgdGhpcyBzaG91bGQgc3RpbGwKLS8vIHByb2R1Y2UgdGhlIGV4cGVjdGVk
IGNvbXBsZXRpb24gb3V0cHV0LgotCi0KLSNpZm5kZWYgR0ZMQUdTX0NPTVBMRVRJT05TX0hfCi0j
ZGVmaW5lIEdGTEFHU19DT01QTEVUSU9OU19IXwotCi1uYW1lc3BhY2UgQEdGTEFHU19OQU1FU1BB
Q0VAIHsKLQotZXh0ZXJuIHZvaWQgSGFuZGxlQ29tbWFuZExpbmVDb21wbGV0aW9ucyh2b2lkKTsK
LQotfQotCi0jZW5kaWYgIC8vIEdGTEFHU19DT01QTEVUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Ny
Yy9nZmxhZ3NfY29tcGxldGlvbnMuc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19jb21wbGV0aW9ucy5zaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzVmYjdlNmJjNTdiLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3NyYy9nZmxhZ3NfY29tcGxldGlvbnMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAs
MCBAQAotIyEvYmluL2Jhc2gKLQotIyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuCi0j
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIwotIyAtLS0KLSMgQXV0
aG9yOiBEYXZlIE5pY3BvbnNraQotIwotIyBUaGlzIHNjcmlwdCBpcyBpbnZva2VkIGJ5IGJhc2gg
aW4gcmVzcG9uc2UgdG8gYSBtYXRjaGluZyBjb21wc3BlYy4gIFdoZW4KLSMgdGhpcyBoYXBwZW5z
LCBiYXNoIGNhbGxzIHRoaXMgc2NyaXB0IHVzaW5nIHRoZSBjb21tYW5kIHNob3duIGluIHRoZSAt
QwotIyBibG9jayBvZiB0aGUgY29tcGxldGUgZW50cnksIGJ1dCBhbHNvIGFwcGVuZHMgMyBhcmd1
bWVudHMuICBUaGV5IGFyZToKLSMgICAtIFRoZSBjb21tYW5kIGJlaW5nIHVzZWQgZm9yIGNvbXBs
ZXRpb24KLSMgICAtIFRoZSB3b3JkIGJlaW5nIGNvbXBsZXRlZAotIyAgIC0gVGhlIHdvcmQgcHJl
Y2VkaW5nIHRoZSBjb21wbGV0aW9uIHdvcmQuCi0jCi0jIEhlcmUncyBhbiBleGFtcGxlIG9mIGhv
dyB5b3UgbWlnaHQgdXNlIHRoaXMgc2NyaXB0OgotIyAkIGNvbXBsZXRlIC1vIGJhc2hkZWZhdWx0
IC1vIGRlZmF1bHQgLW8gbm9zcGFjZSAtQyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0jICAg
Jy91c3IvbG9jYWwvYmluL2dmbGFnc19jb21wbGV0aW9ucy5zaCAtLXRhYl9jb21wbGV0aW9uX2Nv
bHVtbnMgJENPTFVNTlMnIFwKLSMgICB0aW1lICBlbnYgIGJpbmFyeV9uYW1lICBhbm90aGVyX2Jp
bmFyeSAgWy4uLl0KLQotIyBjb21wbGV0aW9uX3dvcmRfaW5kZXggZ2V0cyB0aGUgaW5kZXggb2Yg
dGhlIChOLTEpdGggYXJndW1lbnQgZm9yCi0jIHRoaXMgY29tbWFuZCBsaW5lLiAgY29tcGxldGlv
bl93b3JkIGdldHMgdGhlIGFjdHVhbCBhcmd1bWVudCBmcm9tCi0jIHRoaXMgY29tbWFuZCBsaW5l
IGF0IHRoZSAoTi0xKXRoIHBvc2l0aW9uCi1jb21wbGV0aW9uX3dvcmRfaW5kZXg9IiQoKCQjIC0g
MSkpIgotY29tcGxldGlvbl93b3JkPSIkeyFjb21wbGV0aW9uX3dvcmRfaW5kZXh9IgotCi0jIFRP
RE8odXNlcik6IFJlcGxhY2UgdGhpcyBvbmNlIGdmbGFnc19jb21wbGV0aW9ucy5jYyBoYXMKLSMg
YSBib29sIHBhcmFtZXRlciBpbmRpY2F0aW5nIHVuYW1iaWd1b3VzbHkgdG8gaGlqYWNrIHRoZSBw
cm9jZXNzIGZvcgotIyBjb21wbGV0aW9uIHB1cnBvc2VzLgotaWYgWyAteiAiJGNvbXBsZXRpb25f
d29yZCIgXTsgdGhlbgotICAjIFVudGlsIGFuIGVtcHR5IHZhbHVlIGZvciB0aGUgY29tcGxldGlv
biB3b3JkIHN0b3BzIGJlaW5nIG1pc3VuZGVyc3Rvb2QKLSAgIyBieSBiaW5hcmllcywgZG9uJ3Qg
YWN0dWFsbHkgZXhlY3V0ZSB0aGUgYmluYXJ5IG9yIHRoZSBwcm9jZXNzCi0gICMgd29uJ3QgYmUg
aGlqYWNrZWQhCi0gIGV4aXQgMAotZmkKLQotIyBiaW5hcnlfaW5kZXggZ2V0cyB0aGUgaW5kZXgg
b2YgdGhlIGNvbW1hbmQgYmVpbmcgY29tcGxldGVkICh3aGljaCBiYXNoCi0jIHBsYWNlcyBpbiB0
aGUgKE4tMiluZCBwb3NpdGlvbi4gIGJpbmFyeSBnZXRzIHRoZSBhY3R1YWwgY29tbWFuZCBmcm9t
Ci0jIHRoaXMgY29tbWFuZCBsaW5lIGF0IHRoYXQgKE4tMiluZCBwb3NpdGlvbgotYmluYXJ5X2lu
ZGV4PSIkKCgkIyAtIDIpKSIKLWJpbmFyeT0iJHshYmluYXJ5X2luZGV4fSIKLQotIyBGb3IgY29t
cGxldGlvbnMgdG8gYmUgdW5pdmVyc2FsLCB3ZSBtYXkgaGF2ZSBzZXR1cCB0aGUgY29tcHNwZWMg
dG8KLSMgdHJpZ2dlciBvbiAnaGFybWxlc3MgcGFzcy10aHJvdWdoJyBjb21tYW5kcywgbGlrZSAn
dGltZScgb3IgJ2VudicuCi0jIElmIHRoZSBjb21tYW5kIGJlaW5nIGNvbXBsZXRlZCBpcyBvbmUg
b2YgdGhvc2UgdHdvLCB3ZSdsbCBuZWVkIHRvCi0jIGlkZW50aWZ5IHRoZSBhY3R1YWwgY29tbWFu
ZCBiZWluZyBleGVjdXRlZC4gIFRvIGRvIHRoaXMsIHdlIG5lZWQKLSMgdGhlIGFjdHVhbCBjb21t
YW5kIGxpbmUgdGhhdCB0aGUgPFRBQj4gd2FzIHByZXNzZWQgb24uICBCYXNoIGhlbHBmdWxseQot
IyBwbGFjZXMgdGhpcyBpbiB0aGUgJENPTVBfTElORSB2YXJpYWJsZS4KLWlmIFsgIiRiaW5hcnki
ID09ICJ0aW1lIiBdIHx8IFsgIiRiaW5hcnkiID09ICJlbnYiIF07IHRoZW4KLSAgIyB3ZSdsbCBh
c3N1bWUgdGhhdCB0aGUgZmlyc3QgJ2FyZ3VtZW50JyBpcyBhY3R1YWxseSB0aGUKLSAgIyBiaW5h
cnkKLQotCi0gICMgVE9ETyh1c2VyKTogVGhpcyBpcyBub3QgcGVyZmVjdCAtIHRoZSAnZW52JyBj
b21tYW5kLCBmb3IgaW5zdGFuY2UsCi0gICMgICBpcyBhbGxvd2VkIHRvIGhhdmUgb3B0aW9ucyBi
ZXR3ZWVuIHRoZSAnZW52JyBhbmQgJ3RoZSBjb21tYW5kIHRvCi0gICMgICBiZSBleGVjdXRlZCcu
ICBGb3IgZXhhbXBsZSwgY29uc2lkZXI6Ci0gICMgJCBlbnYgRk9PPSJiYXIiICBiaW4vZG9fc29t
ZXRoaW5nICAtLWhlbHA8VEFCPgotICAjIEluIHRoaXMgY2FzZSwgd2UnbGwgbWlzdGFrZSB0aGUg
Rk9PPSJiYXIiIHBvcnRpb24gYXMgdGhlIGJpbmFyeS4KLSAgIyAgIFBlcmhhcHMgd2Ugc2hvdWxk
IGNvbnRpbnVpbmcgY29uc3VtaW5nIGxlYWRpbmcgd29yZHMgdW50aWwgd2UKLSAgIyAgIGVpdGhl
ciBydW4gb3V0IG9mIHdvcmRzLCBvciBmaW5kIGEgd29yZCB0aGF0IGlzIGEgdmFsaWQgZmlsZQot
ICAjICAgbWFya2VkIGFzIGV4ZWN1dGFibGUuICBJIGNhbid0IHRoaW5rIG9mIGFueSByZWFzb24g
dGhpcyB3b3VsZG4ndAotICAjICAgd29yay4KLQotICAjIEJyZWFrIHVwIHRoZSAnb3JpZ2luYWwg
Y29tbWFuZCBsaW5lJyAobm90IHRoaXMgc2NyaXB0J3MgY29tbWFuZCBsaW5lLAotICAjIHJhdGhl
ciB0aGUgb25lIHRoZSA8VEFCPiB3YXMgcHJlc3NlZCBvbikgYW5kIGZpbmQgdGhlIHNlY29uZCB3
b3JkLgotICBwYXJ0cz0oICR7Q09NUF9MSU5FfSApCi0gIGJpbmFyeT0ke3BhcnRzWzFdfQotZmkK
LQotIyBCdWlsZCB0aGUgY29tbWFuZCBsaW5lIHRvIHVzZSBmb3IgY29tcGxldGlvbi4gIEJhc2lj
YWxseSBpdCBpbnZvbHZlcwotIyBwYXNzaW5nIHRocm91Z2ggYWxsIHRoZSBhcmd1bWVudHMgZ2l2
ZW4gdG8gdGhpcyBzY3JpcHQgKGV4Y2VwdCB0aGUgMwotIyB0aGF0IGJhc2ggYWRkZWQpLCBhbmQg
YXBwZW5kaW5nIGEgJy0tdGFiX2NvbXBsZXRpb25fd29yZCAiV09SRCInIHRvCi0jIHRoZSBhcmd1
bWVudHMuCi1wYXJhbXM9IiIKLWZvciAoKGk9MTsgaTw9JCgoJCMgLSAzKSk7ICsraSkpOyBkbyAK
LSAgcGFyYW1zPSIkcGFyYW1zIFwiJHshaX1cIiI7Ci1kb25lCi1wYXJhbXM9IiRwYXJhbXMgLS10
YWJfY29tcGxldGlvbl93b3JkIFwiJGNvbXBsZXRpb25fd29yZFwiIgotCi0jIFRPRE8odXNlcik6
IFBlcmhhcHMgc3Rhc2ggdGhlIG91dHB1dCBpbiBhIHRlbXBvcmFyeSBmaWxlIHNvbWV3aGVyZQot
IyBpbiAvdG1wLCBhbmQgb25seSBjYXQgaXQgdG8gc3Rkb3V0IGlmIHRoZSBjb21tYW5kIHJldHVy
bmVkIGEgc3VjY2VzcwotIyBjb2RlLCB0byBwcmV2ZW50IGZhbHNlIHBvc2l0aXZlcwotCi0jIElm
IHdlIHRoaW5rIHdlIGhhdmUgYSByZWFzb25hYmxlIGNvbW1hbmQgdG8gZXhlY3V0ZSwgdGhlbiBl
eGVjdXRlIGl0Ci0jIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KLWNhbmRpZGF0ZT0kKHR5cGUgLXAg
IiRiaW5hcnkiKQotaWYgWyAhIC16ICIkY2FuZGlkYXRlIiBdOyB0aGVuCi0gIGV2YWwgIiRjYW5k
aWRhdGUgMj4vZGV2L251bGwgJHBhcmFtcyIKLWVsaWYgWyAtZiAiJGJpbmFyeSIgXSAmJiBbIC14
ICIkYmluYXJ5IiBdOyB0aGVuCi0gIGV2YWwgIiRiaW5hcnkgMj4vZGV2L251bGwgJHBhcmFtcyIK
LWZpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19kZWNsYXJlLmguaW4gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19k
ZWNsYXJlLmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRiMjQ1ZmZlYS4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX2RlY2xhcmUuaC5pbgorKysgL2Rldi9udWxs
CkBAIC0xLDE0MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDE5OTksIEdvb2dsZSBJbmMuCi0v
LyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0vLyAtLS0KLS8vCi0vLyBSZXZhbXBlZCBhbmQgcmVvcmdhbml6ZWQgYnkg
Q3JhaWcgU2lsdmVyc3RlaW4KLS8vCi0vLyBUaGlzIGlzIHRoZSBmaWxlIHRoYXQgc2hvdWxkIGJl
IGluY2x1ZGVkIGJ5IGFueSBmaWxlIHdoaWNoIGRlY2xhcmVzCi0vLyBjb21tYW5kIGxpbmUgZmxh
Zy4KLQotI2lmbmRlZiBHRkxBR1NfREVDTEFSRV9IXwotI2RlZmluZSBHRkxBR1NfREVDTEFSRV9I
XwotCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gTmFtZXNwYWNlIG9mIGdmbGFncyBsaWJy
YXJ5IHN5bWJvbHMuCi0jZGVmaW5lIEdGTEFHU19OQU1FU1BBQ0UgQEdGTEFHU19OQU1FU1BBQ0VA
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gV2luZG93cyBETEwgaW1wb3J0L2V4cG9ydC4K
LQotLy8gV2UgYWx3YXlzIHdhbnQgdG8gaW1wb3J0IHRoZSBzeW1ib2xzIG9mIHRoZSBnZmxhZ3Mg
bGlicmFyeQotI2lmbmRlZiBHRkxBR1NfRExMX0RFQ0wKLSMgIGlmIEBHRkxBR1NfSVNfQV9ETExA
ICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFQ0wgX19kZWNs
c3BlYyhkbGxpbXBvcnQpCi0jICBlbHNlCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFQ0wKLSMg
IGVuZGlmCi0jZW5kaWYKLQotLy8gV2UgYWx3YXlzIHdhbnQgdG8gaW1wb3J0IHZhcmlhYmxlcyBk
ZWNsYXJlZCBpbiB1c2VyIGNvZGUKLSNpZm5kZWYgR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcKLSMg
IGlmZGVmIF9NU0NfVkVSCi0jICAgIGRlZmluZSBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRyBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIEdGTEFHU19ETExfREVDTEFS
RV9GTEFHCi0jICBlbmRpZgotI2VuZGlmCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRmxh
ZyB0eXBlcwotI2luY2x1ZGUgPHN0cmluZz4KLSNpZiBASEFWRV9TVERJTlRfSEAKLSMgIGluY2x1
ZGUgPHN0ZGludC5oPiAgICAgICAgICAgICAgICAgICAvLyB0aGUgbm9ybWFsIHBsYWNlIHVpbnQz
Ml90IGlzIGRlZmluZWQKLSNlbGlmIEBIQVZFX1NZU19UWVBFU19IQAotIyAgaW5jbHVkZSA8c3lz
L3R5cGVzLmg+ICAgICAgICAgICAgICAgIC8vIHRoZSBub3JtYWwgcGxhY2UgdV9pbnQzMl90IGlz
IGRlZmluZWQKLSNlbGlmIEBIQVZFX0lOVFRZUEVTX0hACi0jICBpbmNsdWRlIDxpbnR0eXBlcy5o
PiAgICAgICAgICAgICAgICAgLy8gYSB0aGlyZCBwbGFjZSBmb3IgdWludDMyX3Qgb3IgdV9pbnQz
Ml90Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEdGTEFHU19OQU1FU1BBQ0UgewotCi0jaWYgQEdGTEFH
U19JTlRUWVBFU19GT1JNQVRfQzk5QCAvLyBDOTkKLXR5cGVkZWYgaW50MzJfdCAgICAgICAgICBp
bnQzMjsKLXR5cGVkZWYgdWludDMyX3QgICAgICAgICB1aW50MzI7Ci10eXBlZGVmIGludDY0X3Qg
ICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVpbnQ2NF90ICAgICAgICAgdWludDY0OwotI2VsaWYg
QEdGTEFHU19JTlRUWVBFU19GT1JNQVRfQlNEQCAvLyBCU0QKLXR5cGVkZWYgaW50MzJfdCAgICAg
ICAgICBpbnQzMjsKLXR5cGVkZWYgdV9pbnQzMl90ICAgICAgICB1aW50MzI7Ci10eXBlZGVmIGlu
dDY0X3QgICAgICAgICAgaW50NjQ7Ci10eXBlZGVmIHVfaW50NjRfdCAgICAgICAgdWludDY0Owot
I2VsaWYgQEdGTEFHU19JTlRUWVBFU19GT1JNQVRfVkM3QCAvLyBXaW5kb3dzCi10eXBlZGVmIF9f
aW50MzIgICAgICAgICAgaW50MzI7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWludDMyOwot
dHlwZWRlZiBfX2ludDY0ICAgICAgICAgIGludDY0OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0
IHVpbnQ2NDsKLSNlbHNlCi0jICBlcnJvciBEbyBub3Qga25vdyBob3cgdG8gZGVmaW5lIGEgMzIt
Yml0IGludGVnZXIgcXVhbnRpdHkgb24geW91ciBzeXN0ZW0KLSNlbmRpZgotCi19IC8vIG5hbWVz
cGFjZSBHRkxBR1NfTkFNRVNQQUNFCi0KLQotbmFtZXNwYWNlIGZMUyB7Ci0KLS8vIFRoZSBtZWFu
aW5nIG9mICJzdHJpbmciIG1pZ2h0IGJlIGRpZmZlcmVudCBiZXR3ZWVuIG5vdyBhbmQgd2hlbiB0
aGUKLS8vIG1hY3JvcyBiZWxvdyBnZXQgaW52b2tlZCAoZS5nLiwgaWYgc29tZW9uZSBpcyBleHBl
cmltZW50aW5nIHdpdGgKLS8vIG90aGVyIHN0cmluZyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBnZXQg
ZGVmaW5lZCBhZnRlciB0aGlzIGZpbGUgaXMKLS8vIGluY2x1ZGVkKS4gIFNhdmUgdGhlIGN1cnJl
bnQgbWVhbmluZyBub3cgYW5kIHVzZSBpdCBpbiB0aGUgbWFjcm9zLgotdHlwZWRlZiBzdGQ6OnN0
cmluZyBjbHN0cmluZzsKLQotfSAvLyBuYW1lc3BhY2UgZkxTCi0KLQotI2RlZmluZSBERUNMQVJF
X1ZBUklBQkxFKHR5cGUsIHNob3J0dHlwZSwgbmFtZSkgXAotICAvKiBXZSBhbHdheXMgd2FudCB0
byBpbXBvcnQgZGVjbGFyZWQgdmFyaWFibGVzLCBkbGwgb3Igbm8gKi8gXAotICBuYW1lc3BhY2Ug
ZkwjI3Nob3J0dHlwZSB7IGV4dGVybiBHRkxBR1NfRExMX0RFQ0xBUkVfRkxBRyB0eXBlIEZMQUdT
XyMjbmFtZTsgfSBcCi0gIHVzaW5nIGZMIyNzaG9ydHR5cGU6OkZMQUdTXyMjbmFtZQotCi0jZGVm
aW5lIERFQ0xBUkVfYm9vbChuYW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFCTEUoYm9vbCwgQiwgbmFt
ZSkKLQotI2RlZmluZSBERUNMQVJFX2ludDMyKG5hbWUpIFwKLSAgREVDTEFSRV9WQVJJQUJMRSg6
OkdGTEFHU19OQU1FU1BBQ0U6OmludDMyLCBJLCBuYW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfaW50
NjQobmFtZSkgXAotICBERUNMQVJFX1ZBUklBQkxFKDo6R0ZMQUdTX05BTUVTUEFDRTo6aW50NjQs
IEk2NCwgbmFtZSkKLQotI2RlZmluZSBERUNMQVJFX3VpbnQ2NChuYW1lKSBcCi0gIERFQ0xBUkVf
VkFSSUFCTEUoOjpHRkxBR1NfTkFNRVNQQUNFOjp1aW50NjQsIFU2NCwgbmFtZSkKLQotI2RlZmlu
ZSBERUNMQVJFX2RvdWJsZShuYW1lKSBcCi0gIERFQ0xBUkVfVkFSSUFCTEUoZG91YmxlLCBELCBu
YW1lKQotCi0jZGVmaW5lIERFQ0xBUkVfc3RyaW5nKG5hbWUpIFwKLSAgLyogV2UgYWx3YXlzIHdh
bnQgdG8gaW1wb3J0IGRlY2xhcmVkIHZhcmlhYmxlcywgZGxsIG9yIG5vICovIFwKLSAgbmFtZXNw
YWNlIGZMUyB7IFwKLSAgdXNpbmcgOjpmTFM6OmNsc3RyaW5nOyBcCi0gIGV4dGVybiBHRkxBR1Nf
RExMX0RFQ0xBUkVfRkxBRyA6OmZMUzo6Y2xzdHJpbmcmIEZMQUdTXyMjbmFtZTsgXAotICB9IFwK
LSAgdXNpbmcgZkxTOjpGTEFHU18jI25hbWUKLQotCi0jZW5kaWYgIC8vIEdGTEFHU19ERUNMQVJF
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dmbGFncy9zcmMvc3JjL2dmbGFnc19ucy5oLmluIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfbnMuaC5p
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY5MjY2NmNkYjQ2Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfbnMuaC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCww
IEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQsIEFuZHJlYXMgU2NodWgKLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBJbXBvcnRzIHRoZSBnZmxhZ3MgbGlicmFyeSBz
eW1ib2xzIGludG8gYW4gYWx0ZXJuYXRpdmUvZGVwcmVjYXRlZCBuYW1lc3BhY2UuCi0KLSNpZm5k
ZWYgR0ZMQUdTX0dGTEFHU19IXwotIyAgZXJyb3IgVGhlIGludGVybmFsIGhlYWRlciBnZmxhZ3Nf
QG5zQC5oIG1heSBvbmx5IGJlIGluY2x1ZGVkIGJ5IGdmbGFncy5oCi0jZW5kaWYKLQotI2lmbmRl
ZiBHRkxBR1NfTlNfQE5TQF9IXwotI2RlZmluZSBHRkxBR1NfTlNfQE5TQF9IXwotCi0KLW5hbWVz
cGFjZSBAbnNAIHsKLQotCi11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjppbnQzMjsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OnVpbnQzMjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OmludDY0Owot
dXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6dWludDY0OwotCi11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpSZWdpc3RlckZsYWdWYWxpZGF0b3I7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpDb21tYW5k
TGluZUZsYWdJbmZvOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6R2V0QWxsRmxhZ3M7Ci11c2lu
ZyBHRkxBR1NfTkFNRVNQQUNFOjpTaG93VXNhZ2VXaXRoRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpTaG93VXNhZ2VXaXRoRmxhZ3NSZXN0cmljdDsKLXVzaW5nIEdGTEFHU19OQU1FU1BB
Q0U6OkRlc2NyaWJlT25lRmxhZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldEFyZ3Y7Ci11
c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRBcmd2czsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6
OkdldEFyZ3Y7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRBcmd2MDsKLXVzaW5nIEdGTEFH
U19OQU1FU1BBQ0U6OkdldEFyZ3ZTdW07Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQcm9ncmFt
SW52b2NhdGlvbk5hbWU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpQcm9ncmFtSW52b2NhdGlv
blNob3J0TmFtZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlByb2dyYW1Vc2FnZTsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlZlcnNpb25TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNF
OjpHZXRDb21tYW5kTGluZU9wdGlvbjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkdldENvbW1h
bmRMaW5lRmxhZ0luZm87Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRDb21tYW5kTGluZUZs
YWdJbmZvT3JEaWU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnU2V0dGluZ01vZGU7Ci11
c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTRVRfRkxBR1NfVkFMVUU7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpTRVRfRkxBR19JRl9ERUZBVUxUOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U0VU
X0ZMQUdTX0RFRkFVTFQ7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpTZXRDb21tYW5kTGluZU9w
dGlvbjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1v
ZGU7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpGbGFnU2F2ZXI7Ci11c2luZyBHRkxBR1NfTkFN
RVNQQUNFOjpDb21tYW5kbGluZUZsYWdzSW50b1N0cmluZzsKLXVzaW5nIEdGTEFHU19OQU1FU1BB
Q0U6OlJlYWRGbGFnc0Zyb21TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpBcHBlbmRG
bGFnc0ludG9GaWxlOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVhZEZyb21GbGFnc0ZpbGU7
Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpCb29sRnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OkludDMyRnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkludDY0RnJvbUVu
djsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlVpbnQ2NEZyb21FbnY7Ci11c2luZyBHRkxBR1Nf
TkFNRVNQQUNFOjpEb3VibGVGcm9tRW52OwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U3RyaW5n
RnJvbUVudjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldFVzYWdlTWVzc2FnZTsKLXVzaW5n
IEdGTEFHU19OQU1FU1BBQ0U6OlNldFZlcnNpb25TdHJpbmc7Ci11c2luZyBHRkxBR1NfTkFNRVNQ
QUNFOjpQYXJzZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFD
RTo6SGFuZGxlQ29tbWFuZExpbmVIZWxwRmxhZ3M7Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpB
bGxvd0NvbW1hbmRMaW5lUmVwYXJzaW5nOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UmVwYXJz
ZUNvbW1hbmRMaW5lTm9uSGVscEZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U2h1dERv
d25Db21tYW5kTGluZUZsYWdzOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6RmxhZ1JlZ2lzdGVy
ZXI7Ci0KLSNpZm5kZWYgU1dJRwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6UGFyc2VDb21tYW5k
TGluZUZsYWdzOwotI2VuZGlmCi0KLQotfSAvLyBuYW1lc3BhY2UgQG5zQAotCi0KLSNlbmRpZiAg
Ly8gR0ZMQUdTX05TX0BOU0BfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvZ2ZsYWdzX3JlcG9ydGluZy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdz
L3NyYy9zcmMvZ2ZsYWdzX3JlcG9ydGluZy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOWNjNDFhNzQ4OGNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9nZmxhZ3NfcmVwb3J0aW5n
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDQxICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMTk5
OSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8KLS8vIFJldmFtcGVkIGFu
ZCByZW9yZ2FuaXplZCBieSBDcmFpZyBTaWx2ZXJzdGVpbgotLy8KLS8vIFRoaXMgZmlsZSBjb250
YWlucyBjb2RlIGZvciBoYW5kbGluZyB0aGUgJ3JlcG9ydGluZycgZmxhZ3MuICBUaGVzZQotLy8g
YXJlIGZsYWdzIHRoYXQsIHdoZW4gcHJlc2VudCwgY2F1c2UgdGhlIHByb2dyYW0gdG8gcmVwb3J0
IHNvbWUKLS8vIGluZm9ybWF0aW9uIGFuZCB0aGVuIGV4aXQuICAtLWhlbHAgYW5kIC0tdmVyc2lv
biBhcmUgdGhlIGNhbm9uaWNhbAotLy8gcmVwb3J0aW5nIGZsYWdzLCBidXQgd2UgYWxzbyBoYXZl
IGZsYWdzIGxpa2UgLS1oZWxweG1sLCBldGMuCi0vLwotLy8gVGhlcmUncyBvbmx5IG9uZSBmdW5j
dGlvbiB0aGF0J3MgbWVhbnQgdG8gYmUgY2FsbGVkIGV4dGVybmFsbHk6Ci0vLyBIYW5kbGVDb21t
YW5kTGluZUhlbHBGbGFncygpLiAgKFdlbGwsIGFjdHVhbGx5LCBTaG93VXNhZ2VXaXRoRmxhZ3Mo
KSwKLS8vIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0KCksIGFuZCBEZXNjcmliZU9uZUZsYWco
KSBjYW4gYmUgY2FsbGVkCi0vLyBleHRlcm5hbGx5IHRvbywgYnV0IHRoZXJlJ3MgbGl0dGxlIG5l
ZWQgZm9yIGl0LikgIFRoZXNlIGFyZSBhbGwKLS8vIGRlY2xhcmVkIGluIHRoZSBtYWluIGdmbGFn
cy5oIGhlYWRlciBmaWxlLgotLy8KLS8vIEhhbmRsZUNvbW1hbmRMaW5lSGVscEZsYWdzKCkgd2ls
bCBjaGVjayB3aGF0ICdyZXBvcnRpbmcnIGZsYWdzIGhhdmUKLS8vIGJlZW4gZGVmaW5lZCwgaWYg
YW55IC0tIHRoZSAiaGVscCIgcGFydCBvZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyBhCi0vLyBiaXQg
bWlzbGVhZGluZyAtLSBhbmQgZG8gdGhlIHJlbGV2YW50IHJlcG9ydGluZy4gIEl0IHNob3VsZCBi
ZQotLy8gY2FsbGVkIGFmdGVyIGFsbCBmbGFnLXZhbHVlcyBoYXZlIGJlZW4gYXNzaWduZWQsIHRo
YXQgaXMsIGFmdGVyCi0vLyBwYXJzaW5nIHRoZSBjb21tYW5kLWxpbmUuCi0KLSNpbmNsdWRlIDxz
dGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVk
ZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImdmbGFncy5oIgotI2luY2x1ZGUgImdmbGFnc19j
b21wbGV0aW9ucy5oIgotI2luY2x1ZGUgInV0aWwuaCIKLQotCi0vLyBUaGUgJ3JlcG9ydGluZycg
ZmxhZ3MuICBUaGV5IGFsbCBjYWxsIGdmbGFnc19leGl0ZnVuYygpLgotREVGSU5FX2Jvb2wgICho
ZWxwLCAgICAgICAgZmFsc2UsICJzaG93IGhlbHAgb24gYWxsIGZsYWdzIFt0aXA6IGFsbCBmbGFn
cyBjYW4gaGF2ZSB0d28gZGFzaGVzXSIpOwotREVGSU5FX2Jvb2wgIChoZWxwZnVsbCwgICAgZmFs
c2UsICJzaG93IGhlbHAgb24gYWxsIGZsYWdzIC0tIHNhbWUgYXMgLWhlbHAiKTsKLURFRklORV9i
b29sICAoaGVscHNob3J0LCAgIGZhbHNlLCAic2hvdyBoZWxwIG9uIG9ubHkgdGhlIG1haW4gbW9k
dWxlIGZvciB0aGlzIHByb2dyYW0iKTsKLURFRklORV9zdHJpbmcoaGVscG9uLCAgICAgICIiLCAg
ICAic2hvdyBoZWxwIG9uIHRoZSBtb2R1bGVzIG5hbWVkIGJ5IHRoaXMgZmxhZyB2YWx1ZSIpOwot
REVGSU5FX3N0cmluZyhoZWxwbWF0Y2gsICAgIiIsICAgICJzaG93IGhlbHAgb24gbW9kdWxlcyB3
aG9zZSBuYW1lIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgc3Vic3RyIik7Ci1ERUZJTkVfYm9vbCAg
KGhlbHBwYWNrYWdlLCBmYWxzZSwgInNob3cgaGVscCBvbiBhbGwgbW9kdWxlcyBpbiB0aGUgbWFp
biBwYWNrYWdlIik7Ci1ERUZJTkVfYm9vbCAgKGhlbHB4bWwsICAgICBmYWxzZSwgInByb2R1Y2Ug
YW4geG1sIHZlcnNpb24gb2YgaGVscCIpOwotREVGSU5FX2Jvb2wgICh2ZXJzaW9uLCAgICAgZmFs
c2UsICJzaG93IHZlcnNpb24gYW5kIGJ1aWxkIGluZm8gYW5kIGV4aXQiKTsKLQotCi1uYW1lc3Bh
Y2UgR0ZMQUdTX05BTUVTUEFDRSB7Ci0KLQotdXNpbmcgc3RkOjpzdHJpbmc7Ci11c2luZyBzdGQ6
OnZlY3RvcjsKLQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRGVzY3JpYmVPbmVGbGFnKCkKLS8vIERl
c2NyaWJlT25lRmxhZ0luWE1MKCkKLS8vICAgIFJvdXRpbmVzIHRoYXQgcHJldHR5LXByaW50IGlu
Zm8gYWJvdXQgYSBmbGFnLiAgVGhlc2UgdXNlCi0vLyAgICBhIENvbW1hbmRMaW5lRmxhZ0luZm8s
IHdoaWNoIGlzIHRoZSB3YXkgdGhlIGdmbGFncwotLy8gICAgQVBJIGV4cG9zZXMgc3RhdGljIGlu
Zm8gYWJvdXQgYSBmbGFnLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGNvbnN0IGludCBrTGlu
ZUxlbmd0aCA9IDgwOwotCi1zdGF0aWMgdm9pZCBBZGRTdHJpbmcoY29uc3Qgc3RyaW5nJiBzLAot
ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyogZmluYWxfc3RyaW5nLCBpbnQqIGNoYXJzX2lu
X2xpbmUpIHsKLSAgY29uc3QgaW50IHNsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHMubGVuZ3RoKCkp
OwotICBpZiAoKmNoYXJzX2luX2xpbmUgKyAxICsgc2xlbiA+PSBrTGluZUxlbmd0aCkgeyAgLy8g
PCA4MCBjaGFycy9saW5lCi0gICAgKmZpbmFsX3N0cmluZyArPSAiXG4gICAgICAiOwotICAgICpj
aGFyc19pbl9saW5lID0gNjsKLSAgfSBlbHNlIHsKLSAgICAqZmluYWxfc3RyaW5nICs9ICIgIjsK
LSAgICAqY2hhcnNfaW5fbGluZSArPSAxOwotICB9Ci0gICpmaW5hbF9zdHJpbmcgKz0gczsKLSAg
KmNoYXJzX2luX2xpbmUgKz0gc2xlbjsKLX0KLQotc3RhdGljIHN0cmluZyBQcmludFN0cmluZ0Zs
YWdzV2l0aFF1b3Rlcyhjb25zdCBDb21tYW5kTGluZUZsYWdJbmZvJiBmbGFnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIHRleHQsIGJvb2wg
Y3VycmVudCkgewotICBjb25zdCBjaGFyKiBjX3N0cmluZyA9IChjdXJyZW50ID8gZmxhZy5jdXJy
ZW50X3ZhbHVlLmNfc3RyKCkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnLmRlZmF1
bHRfdmFsdWUuY19zdHIoKSk7Ci0gIGlmIChzdHJjbXAoZmxhZy50eXBlLmNfc3RyKCksICJzdHJp
bmciKSA9PSAwKSB7ICAvLyBhZGQgcXVvdGVzIGZvciBzdHJpbmdzCi0gICAgcmV0dXJuIFN0cmlu
Z1ByaW50ZigiJXM6IFwiJXNcIiIsIHRleHQuY19zdHIoKSwgY19zdHJpbmcpOwotICB9IGVsc2Ug
ewotICAgIHJldHVybiBTdHJpbmdQcmludGYoIiVzOiAlcyIsIHRleHQuY19zdHIoKSwgY19zdHJp
bmcpOwotICB9Ci19Ci0KLS8vIENyZWF0ZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBmb3IgYSBmbGFn
LgotLy8gR29lcyB0byBzb21lIHRyb3VibGUgdG8gbWFrZSBwcmV0dHkgbGluZSBicmVha3MuCi1z
dHJpbmcgRGVzY3JpYmVPbmVGbGFnKGNvbnN0IENvbW1hbmRMaW5lRmxhZ0luZm8mIGZsYWcpIHsK
LSAgc3RyaW5nIG1haW5fcGFydDsKLSAgU1N0cmluZ1ByaW50ZigmbWFpbl9wYXJ0LCAiICAgIC0l
cyAoJXMpIiwKLSAgICAgICAgICAgICAgICBmbGFnLm5hbWUuY19zdHIoKSwKLSAgICAgICAgICAg
ICAgICBmbGFnLmRlc2NyaXB0aW9uLmNfc3RyKCkpOwotICBjb25zdCBjaGFyKiBjX3N0cmluZyA9
IG1haW5fcGFydC5jX3N0cigpOwotICBpbnQgY2hhcnNfbGVmdCA9IHN0YXRpY19jYXN0PGludD4o
bWFpbl9wYXJ0Lmxlbmd0aCgpKTsKLSAgc3RyaW5nIGZpbmFsX3N0cmluZyA9ICIiOwotICBpbnQg
Y2hhcnNfaW5fbGluZSA9IDA7ICAvLyBob3cgbWFueSBjaGFycyBpbiBjdXJyZW50IGxpbmUgc28g
ZmFyPwotICB3aGlsZSAoMSkgewotICAgIGFzc2VydChjaGFyc19sZWZ0ID09IHN0cmxlbihjX3N0
cmluZykpOyAgLy8gVW5sZXNzIHRoZXJlJ3MgYSBcMCBpbiB0aGVyZT8KLSAgICBjb25zdCBjaGFy
KiBuZXdsaW5lID0gc3RyY2hyKGNfc3RyaW5nLCAnXG4nKTsKLSAgICBpZiAobmV3bGluZSA9PSBO
VUxMICYmIGNoYXJzX2luX2xpbmUrY2hhcnNfbGVmdCA8IGtMaW5lTGVuZ3RoKSB7Ci0gICAgICAv
LyBUaGUgd2hvbGUgcmVtYWluZGVyIG9mIHRoZSBzdHJpbmcgZml0cyBvbiB0aGlzIGxpbmUKLSAg
ICAgIGZpbmFsX3N0cmluZyArPSBjX3N0cmluZzsKLSAgICAgIGNoYXJzX2luX2xpbmUgKz0gY2hh
cnNfbGVmdDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAobmV3bGluZSAhPSBOVUxMICYm
IG5ld2xpbmUgLSBjX3N0cmluZyA8IGtMaW5lTGVuZ3RoIC0gY2hhcnNfaW5fbGluZSkgewotICAg
ICAgaW50IG4gPSBzdGF0aWNfY2FzdDxpbnQ+KG5ld2xpbmUgLSBjX3N0cmluZyk7Ci0gICAgICBm
aW5hbF9zdHJpbmcuYXBwZW5kKGNfc3RyaW5nLCBuKTsKLSAgICAgIGNoYXJzX2xlZnQgLT0gbiAr
IDE7Ci0gICAgICBjX3N0cmluZyArPSBuICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgLy8gRmlu
ZCB0aGUgbGFzdCB3aGl0ZXNwYWNlIG9uIHRoaXMgODAtY2hhciBsaW5lCi0gICAgICBpbnQgd2hp
dGVzcGFjZSA9IGtMaW5lTGVuZ3RoLWNoYXJzX2luX2xpbmUtMTsgIC8vIDwgODAgY2hhcnMvbGlu
ZQotICAgICAgd2hpbGUgKCB3aGl0ZXNwYWNlID4gMCAmJiAhaXNzcGFjZShjX3N0cmluZ1t3aGl0
ZXNwYWNlXSkgKSB7Ci0gICAgICAgIC0td2hpdGVzcGFjZTsKLSAgICAgIH0KLSAgICAgIGlmICh3
aGl0ZXNwYWNlIDw9IDApIHsKLSAgICAgICAgLy8gQ291bGRuJ3QgZmluZCBhbnkgd2hpdGVzcGFj
ZSB0byBtYWtlIGEgbGluZSBicmVhay4gIEp1c3QgZHVtcCB0aGUKLSAgICAgICAgLy8gcmVzdCBv
dXQhCi0gICAgICAgIGZpbmFsX3N0cmluZyArPSBjX3N0cmluZzsKLSAgICAgICAgY2hhcnNfaW5f
bGluZSA9IGtMaW5lTGVuZ3RoOyAgLy8gbmV4dCBwYXJ0IGdldHMgaXRzIG93biBsaW5lIGZvciBz
dXJlIQotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGZpbmFsX3N0cmluZyArPSBzdHJp
bmcoY19zdHJpbmcsIHdoaXRlc3BhY2UpOwotICAgICAgY2hhcnNfaW5fbGluZSArPSB3aGl0ZXNw
YWNlOwotICAgICAgd2hpbGUgKGlzc3BhY2UoY19zdHJpbmdbd2hpdGVzcGFjZV0pKSAgKyt3aGl0
ZXNwYWNlOwotICAgICAgY19zdHJpbmcgKz0gd2hpdGVzcGFjZTsKLSAgICAgIGNoYXJzX2xlZnQg
LT0gd2hpdGVzcGFjZTsKLSAgICB9Ci0gICAgaWYgKCpjX3N0cmluZyA9PSAnXDAnKQotICAgICAg
YnJlYWs7Ci0gICAgU3RyaW5nQXBwZW5kRigmZmluYWxfc3RyaW5nLCAiXG4gICAgICAiKTsKLSAg
ICBjaGFyc19pbl9saW5lID0gNjsKLSAgfQotCi0gIC8vIEFwcGVuZCBkYXRhIHR5cGUKLSAgQWRk
U3RyaW5nKHN0cmluZygidHlwZTogIikgKyBmbGFnLnR5cGUsICZmaW5hbF9zdHJpbmcsICZjaGFy
c19pbl9saW5lKTsKLSAgLy8gVGhlIGxpc3RlZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdGhlIGFj
dHVhbCBkZWZhdWx0IGZyb20gdGhlIGZsYWcKLSAgLy8gZGVmaW5pdGlvbiBpbiB0aGUgb3JpZ2lu
YXRpbmcgc291cmNlIGZpbGUsIHVubGVzcyB0aGUgdmFsdWUgaGFzCi0gIC8vIHN1YnNlcXVlbnRs
eSBiZWVuIG1vZGlmaWVkIHVzaW5nIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoKSB3aXRo
IG1vZGUKLSAgLy8gU0VUX0ZMQUdTX0RFRkFVTFQsIG9yIGJ5IHNldHRpbmcgRkxBR1NfZm9vID0g
YmFyIGJlZm9yZSBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKS4KLSAgQWRkU3RyaW5nKFByaW50U3Ry
aW5nRmxhZ3NXaXRoUXVvdGVzKGZsYWcsICJkZWZhdWx0IiwgZmFsc2UpLCAmZmluYWxfc3RyaW5n
LAotICAgICAgICAgICAgJmNoYXJzX2luX2xpbmUpOwotICBpZiAoIWZsYWcuaXNfZGVmYXVsdCkg
ewotICAgIEFkZFN0cmluZyhQcmludFN0cmluZ0ZsYWdzV2l0aFF1b3RlcyhmbGFnLCAiY3VycmVu
dGx5IiwgdHJ1ZSksCi0gICAgICAgICAgICAgICZmaW5hbF9zdHJpbmcsICZjaGFyc19pbl9saW5l
KTsKLSAgfQotCi0gIFN0cmluZ0FwcGVuZEYoJmZpbmFsX3N0cmluZywgIlxuIik7Ci0gIHJldHVy
biBmaW5hbF9zdHJpbmc7Ci19Ci0KLS8vIFNpbXBsZSByb3V0aW5lIHRvIHhtbC1lc2NhcGUgYSBz
dHJpbmc6IGVzY2FwZSAmIGFuZCA8IG9ubHkuCi1zdGF0aWMgc3RyaW5nIFhNTFRleHQoY29uc3Qg
c3RyaW5nJiB0eHQpIHsKLSAgc3RyaW5nIGFucyA9IHR4dDsKLSAgZm9yIChzdHJpbmc6OnNpemVf
dHlwZSBwb3MgPSAwOyAocG9zID0gYW5zLmZpbmQoIiYiLCBwb3MpKSAhPSBzdHJpbmc6Om5wb3M7
ICkKLSAgICBhbnMucmVwbGFjZShwb3MrKywgMSwgIiZhbXA7Iik7Ci0gIGZvciAoc3RyaW5nOjpz
aXplX3R5cGUgcG9zID0gMDsgKHBvcyA9IGFucy5maW5kKCI8IiwgcG9zKSkgIT0gc3RyaW5nOjpu
cG9zOyApCi0gICAgYW5zLnJlcGxhY2UocG9zKyssIDEsICImbHQ7Iik7Ci0gIHJldHVybiBhbnM7
Ci19Ci0KLXN0YXRpYyB2b2lkIEFkZFhNTFRhZyhzdHJpbmcqIHIsIGNvbnN0IGNoYXIqIHRhZywg
Y29uc3Qgc3RyaW5nJiB0eHQpIHsKLSAgU3RyaW5nQXBwZW5kRihyLCAiPCVzPiVzPC8lcz4iLCB0
YWcsIFhNTFRleHQodHh0KS5jX3N0cigpLCB0YWcpOwotfQotCi0KLXN0YXRpYyBzdHJpbmcgRGVz
Y3JpYmVPbmVGbGFnSW5YTUwoY29uc3QgQ29tbWFuZExpbmVGbGFnSW5mbyYgZmxhZykgewotICAv
LyBUaGUgZmlsZSBhbmQgZmxhZ25hbWUgY291bGQgaGF2ZSBiZWVuIGF0dHJpYnV0ZXMsIGJ1dCBk
ZWZhdWx0Ci0gIC8vIGFuZCBtZWFuaW5nIG5lZWQgdG8gYXZvaWQgYXR0cmlidXRlIG5vcm1hbGl6
YXRpb24uICBUaGlzIHdheSBpdAotICAvLyBjYW4gYmUgcGFyc2VkIGJ5IHNpbXBsZSBwcm9ncmFt
cywgaW4gYWRkaXRpb24gdG8geG1sIHBhcnNlcnMuCi0gIHN0cmluZyByKCI8ZmxhZz4iKTsKLSAg
QWRkWE1MVGFnKCZyLCAiZmlsZSIsIGZsYWcuZmlsZW5hbWUpOwotICBBZGRYTUxUYWcoJnIsICJu
YW1lIiwgZmxhZy5uYW1lKTsKLSAgQWRkWE1MVGFnKCZyLCAibWVhbmluZyIsIGZsYWcuZGVzY3Jp
cHRpb24pOwotICBBZGRYTUxUYWcoJnIsICJkZWZhdWx0IiwgZmxhZy5kZWZhdWx0X3ZhbHVlKTsK
LSAgQWRkWE1MVGFnKCZyLCAiY3VycmVudCIsIGZsYWcuY3VycmVudF92YWx1ZSk7Ci0gIEFkZFhN
TFRhZygmciwgInR5cGUiLCBmbGFnLnR5cGUpOwotICByICs9ICI8L2ZsYWc+IjsKLSAgcmV0dXJu
IHI7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTaG93VXNhZ2VXaXRoRmxhZ3MoKQotLy8gU2hv
d1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QoKQotLy8gU2hvd1hNTE9mRmxhZ3MoKQotLy8gICAgVGhl
c2Ugcm91dGluZXMgdmFyaW91c2x5IGV4cG9zZSB0aGUgcmVnaXN0cnkncyBsaXN0IG9mIGZsYWcK
LS8vICAgIHZhbHVlcy4gIFNob3dVc2FnZSooKSBwcmludHMgdGhlIGZsYWctdmFsdWUgaW5mb3Jt
YXRpb24KLS8vICAgIHRvIHN0ZG91dCBpbiBhIHVzZXItcmVhZGFibGUgZm9ybWF0ICh0aGF0J3Mg
d2hhdCAtLWhlbHAgdXNlcykuCi0vLyAgICBUaGUgUmVzdHJpY3QoKSB2ZXJzaW9uIGxpbWl0cyB3
aGF0IGZsYWdzIGFyZSBzaG93bi4KLS8vICAgIFNob3dYTUxPZkZsYWdzKCkgcHJpbnRzIHRoZSBm
bGFnLXZhbHVlIGluZm9ybWF0aW9uIHRvIHN0ZG91dAotLy8gICAgaW4gYSBtYWNoaW5lLXJlYWRh
YmxlIGZvcm1hdC4gIEluIGFsbCBjYXNlcywgdGhlIGZsYWdzIGFyZQotLy8gICAgc29ydGVkOiBm
aXJzdCBieSBmaWxlbmFtZSB0aGV5IGFyZSBkZWZpbmVkIGluLCB0aGVuIGJ5IGZsYWduYW1lLgot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotc3RhdGljIGNvbnN0IGNoYXIqIEJhc2VuYW1lKGNvbnN0IGNoYXIq
IGZpbGVuYW1lKSB7Ci0gIGNvbnN0IGNoYXIqIHNlcCA9IHN0cnJjaHIoZmlsZW5hbWUsIFBBVEhf
U0VQQVJBVE9SKTsKLSAgcmV0dXJuIHNlcCA/IHNlcCArIDEgOiBmaWxlbmFtZTsKLX0KLQotc3Rh
dGljIHN0cmluZyBEaXJuYW1lKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUpIHsKLSAgc3RyaW5nOjpz
aXplX3R5cGUgc2VwID0gZmlsZW5hbWUucmZpbmQoUEFUSF9TRVBBUkFUT1IpOwotICByZXR1cm4g
ZmlsZW5hbWUuc3Vic3RyKDAsIChzZXAgPT0gc3RyaW5nOjpucG9zKSA/IDAgOiBzZXApOwotfQot
Ci0vLyBUZXN0IHdoZXRoZXIgYSBmaWxlbmFtZSBjb250YWlucyBhdCBsZWFzdCBvbmUgb2YgdGhl
IHN1YnN0cmluZ3MuCi1zdGF0aWMgYm9vbCBGaWxlTWF0Y2hlc1N1YnN0cmluZyhjb25zdCBzdHJp
bmcmIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVj
dG9yPHN0cmluZz4mIHN1YnN0cmluZ3MpIHsKLSAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgdGFyZ2V0ID0gc3Vic3RyaW5ncy5iZWdpbigpOwotICAgICAgIHRhcmdldCAhPSBz
dWJzdHJpbmdzLmVuZCgpOwotICAgICAgICsrdGFyZ2V0KSB7Ci0gICAgaWYgKHN0cnN0cihmaWxl
bmFtZS5jX3N0cigpLCB0YXJnZXQtPmNfc3RyKCkpICE9IE5VTEwpCi0gICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAvLyBJZiB0aGUgc3Vic3RyaW5nIHN0YXJ0cyB3aXRoIGEgJy8nLCB0aGF0IG1lYW5z
IHRoYXQgd2Ugd2FudAotICAgIC8vIHRoZSBzdHJpbmcgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBv
ZiBhIGRpcmVjdG9yeSBjb21wb25lbnQuCi0gICAgLy8gVGhhdCBzaG91bGQgbWF0Y2ggdGhlIGZp
cnN0IGRpcmVjdG9yeSBjb21wb25lbnQgYXMgd2VsbCwgc28KLSAgICAvLyB3ZSBhbGxvdyAnL2Zv
bycgdG8gbWF0Y2ggYSBmaWxlbmFtZSBvZiAnZm9vJy4KLSAgICBpZiAoIXRhcmdldC0+ZW1wdHko
KSAmJiAoKnRhcmdldClbMF0gPT0gUEFUSF9TRVBBUkFUT1IgJiYKLSAgICAgICAgc3RybmNtcChm
aWxlbmFtZS5jX3N0cigpLCB0YXJnZXQtPmNfc3RyKCkgKyAxLAotICAgICAgICAgICAgICAgIHN0
cmxlbih0YXJnZXQtPmNfc3RyKCkgKyAxKSkgPT0gMCkKLSAgICAgIHJldHVybiB0cnVlOwotICB9
Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotLy8gU2hvdyBoZWxwIGZvciBldmVyeSBmaWxlbmFtZSB3
aGljaCBtYXRjaGVzIGFueSBvZiB0aGUgdGFyZ2V0IHN1YnN0cmluZ3MuCi0vLyBJZiBzdWJzdHJp
bmdzIGlzIGVtcHR5LCBzaG93cyBoZWxwIGZvciBldmVyeSBmaWxlLiBJZiBhIGZsYWcncyBoZWxw
IG1lc3NhZ2UKLS8vIGhhcyBiZWVuIHN0cmlwcGVkIChlLmcuIGJ5IGFkZGluZyAnI2RlZmluZSBT
VFJJUF9GTEFHX0hFTFAgMScKLS8vIGJlZm9yZSBpbmNsdWRpbmcgZ2ZsYWdzL2dmbGFncy5oKSwg
dGhlbiB0aGlzIGZsYWcgd2lsbCBub3QgYmUgZGlzcGxheWVkCi0vLyBieSAnLS1oZWxwJyBhbmQg
aXRzIHZhcmlhbnRzLgotc3RhdGljIHZvaWQgU2hvd1VzYWdlV2l0aEZsYWdzTWF0Y2hpbmcoY29u
c3QgY2hhciAqYXJndjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2ZWN0b3I8c3RyaW5nPiAmc3Vic3RyaW5ncykgewotICBmcHJpbnRmKHN0ZG91dCwgIiVz
OiAlc1xuIiwgQmFzZW5hbWUoYXJndjApLCBQcm9ncmFtVXNhZ2UoKSk7Ci0KLSAgdmVjdG9yPENv
bW1hbmRMaW5lRmxhZ0luZm8+IGZsYWdzOwotICBHZXRBbGxGbGFncygmZmxhZ3MpOyAgICAgICAg
ICAgLy8gZmxhZ3MgYXJlIHNvcnRlZCBieSBmaWxlbmFtZSwgdGhlbiBmbGFnbmFtZQotCi0gIHN0
cmluZyBsYXN0X2ZpbGVuYW1lOyAgICAgICAgICAvLyBzbyB3ZSBrbm93IHdoZW4gd2UncmUgYXQg
YSBuZXcgZmlsZQotICBib29sIGZpcnN0X2RpcmVjdG9yeSA9IHRydWU7ICAgLy8gY29udHJvbHMg
YmxhbmsgbGluZXMgYmV0d2VlbiBkaXJzCi0gIGJvb2wgZm91bmRfbWF0Y2ggPSBmYWxzZTsgICAg
ICAvLyBzdGF5cyBmYWxzZSBpZmYgbm8gZGlyIG1hdGNoZXMgcmVzdHJpY3QKLSAgZm9yICh2ZWN0
b3I8Q29tbWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGZsYWcgPSBmbGFncy5iZWdp
bigpOwotICAgICAgIGZsYWcgIT0gZmxhZ3MuZW5kKCk7Ci0gICAgICAgKytmbGFnKSB7Ci0gICAg
aWYgKHN1YnN0cmluZ3MuZW1wdHkoKSB8fAotICAgICAgICBGaWxlTWF0Y2hlc1N1YnN0cmluZyhm
bGFnLT5maWxlbmFtZSwgc3Vic3RyaW5ncykpIHsKLSAgICAgIC8vIElmIHRoZSBmbGFnIGhhcyBi
ZWVuIHN0cmlwcGVkLCBwcmV0ZW5kIHRoYXQgaXQgZG9lc24ndCBleGlzdC4KLSAgICAgIGlmIChm
bGFnLT5kZXNjcmlwdGlvbiA9PSBrU3RyaXBwZWRGbGFnSGVscCkgY29udGludWU7Ci0gICAgICBm
b3VuZF9tYXRjaCA9IHRydWU7ICAgICAvLyB0aGlzIGZsYWcgcGFzc2VkIHRoZSBtYXRjaCEKLSAg
ICAgIGlmIChmbGFnLT5maWxlbmFtZSAhPSBsYXN0X2ZpbGVuYW1lKSB7ICAgICAgICAgICAgICAg
ICAgICAgIC8vIG5ldyBmaWxlCi0gICAgICAgIGlmIChEaXJuYW1lKGZsYWctPmZpbGVuYW1lKSAh
PSBEaXJuYW1lKGxhc3RfZmlsZW5hbWUpKSB7ICAvLyBuZXcgZGlyIQotICAgICAgICAgIGlmICgh
Zmlyc3RfZGlyZWN0b3J5KQotICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJcblxuIik7ICAg
Ly8gcHV0IGJsYW5rIGxpbmVzIGJldHdlZW4gZGlyZWN0b3JpZXMKLSAgICAgICAgICBmaXJzdF9k
aXJlY3RvcnkgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIlxu
ICBGbGFncyBmcm9tICVzOlxuIiwgZmxhZy0+ZmlsZW5hbWUuY19zdHIoKSk7Ci0gICAgICAgIGxh
c3RfZmlsZW5hbWUgPSBmbGFnLT5maWxlbmFtZTsKLSAgICAgIH0KLSAgICAgIC8vIE5vdyBwcmlu
dCB0aGlzIGZsYWcKLSAgICAgIGZwcmludGYoc3Rkb3V0LCAiJXMiLCBEZXNjcmliZU9uZUZsYWco
KmZsYWcpLmNfc3RyKCkpOwotICAgIH0KLSAgfQotICBpZiAoIWZvdW5kX21hdGNoICYmICFzdWJz
dHJpbmdzLmVtcHR5KCkpIHsKLSAgICBmcHJpbnRmKHN0ZG91dCwgIlxuICBObyBtb2R1bGVzIG1h
dGNoZWQ6IHVzZSAtaGVscFxuIik7Ci0gIH0KLX0KLQotdm9pZCBTaG93VXNhZ2VXaXRoRmxhZ3NS
ZXN0cmljdChjb25zdCBjaGFyICphcmd2MCwgY29uc3QgY2hhciAqcmVzdHJpY3QpIHsKLSAgdmVj
dG9yPHN0cmluZz4gc3Vic3RyaW5nczsKLSAgaWYgKHJlc3RyaWN0ICE9IE5VTEwgJiYgKnJlc3Ry
aWN0ICE9ICdcMCcpIHsKLSAgICBzdWJzdHJpbmdzLnB1c2hfYmFjayhyZXN0cmljdCk7Ci0gIH0K
LSAgU2hvd1VzYWdlV2l0aEZsYWdzTWF0Y2hpbmcoYXJndjAsIHN1YnN0cmluZ3MpOwotfQotCi12
b2lkIFNob3dVc2FnZVdpdGhGbGFncyhjb25zdCBjaGFyICphcmd2MCkgewotICBTaG93VXNhZ2VX
aXRoRmxhZ3NSZXN0cmljdChhcmd2MCwgIiIpOwotfQotCi0vLyBDb252ZXJ0IHRoZSBoZWxwLCBw
cm9ncmFtLCBhbmQgdXNhZ2UgdG8geG1sLgotc3RhdGljIHZvaWQgU2hvd1hNTE9mRmxhZ3MoY29u
c3QgY2hhciAqcHJvZ19uYW1lKSB7Ci0gIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBmbGFn
czsKLSAgR2V0QWxsRmxhZ3MoJmZsYWdzKTsgICAvLyBmbGFncyBhcmUgc29ydGVkOiBieSBmaWxl
bmFtZSwgdGhlbiBmbGFnbmFtZQotCi0gIC8vIFhNTC4gIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRp
bmcgc2NoZW1hIHlldAotICBmcHJpbnRmKHN0ZG91dCwgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+
XG4iKTsKLSAgLy8gVGhlIGRvY3VtZW50Ci0gIGZwcmludGYoc3Rkb3V0LCAiPEFsbEZsYWdzPlxu
Iik7Ci0gIC8vIHRoZSBwcm9ncmFtIG5hbWUgYW5kIHVzYWdlCi0gIGZwcmludGYoc3Rkb3V0LCAi
PHByb2dyYW0+JXM8L3Byb2dyYW0+XG4iLAotICAgICAgICAgIFhNTFRleHQoQmFzZW5hbWUocHJv
Z19uYW1lKSkuY19zdHIoKSk7Ci0gIGZwcmludGYoc3Rkb3V0LCAiPHVzYWdlPiVzPC91c2FnZT5c
biIsCi0gICAgICAgICAgWE1MVGV4dChQcm9ncmFtVXNhZ2UoKSkuY19zdHIoKSk7Ci0gIC8vIEFs
bCB0aGUgZmxhZ3MKLSAgZm9yICh2ZWN0b3I8Q29tbWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0
ZXJhdG9yIGZsYWcgPSBmbGFncy5iZWdpbigpOwotICAgICAgIGZsYWcgIT0gZmxhZ3MuZW5kKCk7
Ci0gICAgICAgKytmbGFnKSB7Ci0gICAgaWYgKGZsYWctPmRlc2NyaXB0aW9uICE9IGtTdHJpcHBl
ZEZsYWdIZWxwKQotICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgRGVzY3JpYmVPbmVGbGFn
SW5YTUwoKmZsYWcpLmNfc3RyKCkpOwotICB9Ci0gIC8vIFRoZSBlbmQgb2YgdGhlIGRvY3VtZW50
Ci0gIGZwcmludGYoc3Rkb3V0LCAiPC9BbGxGbGFncz5cbiIpOwotfQotCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gU2hvd1ZlcnNpb24oKQotLy8gICAgQ2FsbGVkIHVwb24gLS12ZXJzaW9uLiAgUHJpbnRz
IGJ1aWxkLXJlbGF0ZWQgaW5mby4KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXRpYyB2b2lkIFNob3dW
ZXJzaW9uKCkgewotICBjb25zdCBjaGFyKiB2ZXJzaW9uX3N0cmluZyA9IFZlcnNpb25TdHJpbmco
KTsKLSAgaWYgKHZlcnNpb25fc3RyaW5nICYmICp2ZXJzaW9uX3N0cmluZykgewotICAgIGZwcmlu
dGYoc3Rkb3V0LCAiJXMgdmVyc2lvbiAlc1xuIiwKLSAgICAgICAgICAgIFByb2dyYW1JbnZvY2F0
aW9uU2hvcnROYW1lKCksIHZlcnNpb25fc3RyaW5nKTsKLSAgfSBlbHNlIHsKLSAgICBmcHJpbnRm
KHN0ZG91dCwgIiVzXG4iLCBQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZSgpKTsKLSAgfQotIyBp
ZiAhZGVmaW5lZChOREVCVUcpCi0gIGZwcmludGYoc3Rkb3V0LCAiRGVidWcgYnVpbGQgKE5ERUJV
RyBub3QgI2RlZmluZWQpXG4iKTsKLSMgZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgQXBwZW5kUHJv
Z25hbWVTdHJpbmdzKHZlY3RvcjxzdHJpbmc+KiBzdWJzdHJpbmdzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByb2duYW1lKSB7Ci0gIHN0cmluZyByKCIi
KTsKLSAgciArPSBQQVRIX1NFUEFSQVRPUjsKLSAgciArPSBwcm9nbmFtZTsKLSAgc3Vic3RyaW5n
cy0+cHVzaF9iYWNrKHIgKyAiLiIpOwotICBzdWJzdHJpbmdzLT5wdXNoX2JhY2sociArICItbWFp
bi4iKTsKLSAgc3Vic3RyaW5ncy0+cHVzaF9iYWNrKHIgKyAiX21haW4uIik7Ci19Ci0KLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0vLyBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpCi0vLyAgICBDaGVja3Mg
YWxsIHRoZSAncmVwb3J0aW5nJyBjb21tYW5kbGluZSBmbGFncyB0byBzZWUgaWYgYW55Ci0vLyAg
ICBoYXZlIGJlZW4gc2V0LiAgSWYgc28sIGhhbmRsZXMgdGhlbSBhcHByb3ByaWF0ZWx5LiAgTm90
ZQotLy8gICAgdGhhdCBhbGwgb2YgdGhlbSwgYnkgZGVmaW5pdGlvbiwgY2F1c2UgdGhlIHByb2dy
YW0gdG8gZXhpdAotLy8gICAgaWYgdGhleSB0cmlnZ2VyLgotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9p
ZCBIYW5kbGVDb21tYW5kTGluZUhlbHBGbGFncygpIHsKLSAgY29uc3QgY2hhciogcHJvZ25hbWUg
PSBQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZSgpOwotCi0gIEhhbmRsZUNvbW1hbmRMaW5lQ29t
cGxldGlvbnMoKTsKLQotICB2ZWN0b3I8c3RyaW5nPiBzdWJzdHJpbmdzOwotICBBcHBlbmRQcm9n
bmFtZVN0cmluZ3MoJnN1YnN0cmluZ3MsIHByb2duYW1lKTsKLQotICBpZiAoRkxBR1NfaGVscHNo
b3J0KSB7Ci0gICAgLy8gc2hvdyBvbmx5IGZsYWdzIHJlbGF0ZWQgdG8gdGhpcyBiaW5hcnk6Ci0g
ICAgLy8gRS5nLiBmb3IgZmlsZXV0aWwuY2MsIHdhbnQgZmxhZ3MgY29udGFpbmluZyAgIC4uLiAi
L2ZpbGV1dGlsLiIgY2MKLSAgICBTaG93VXNhZ2VXaXRoRmxhZ3NNYXRjaGluZyhwcm9nbmFtZSwg
c3Vic3RyaW5ncyk7Ci0gICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAoRkxB
R1NfaGVscCB8fCBGTEFHU19oZWxwZnVsbCkgewotICAgIC8vIHNob3cgYWxsIG9wdGlvbnMKLSAg
ICBTaG93VXNhZ2VXaXRoRmxhZ3NSZXN0cmljdChwcm9nbmFtZSwgIiIpOyAgIC8vIGVtcHR5IHJl
c3RyaWN0Ci0gICAgZ2ZsYWdzX2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAoIUZMQUdTX2hl
bHBvbi5lbXB0eSgpKSB7Ci0gICAgc3RyaW5nIHJlc3RyaWN0ID0gUEFUSF9TRVBBUkFUT1IgKyBG
TEFHU19oZWxwb24gKyAiLiI7Ci0gICAgU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3QocHJvZ25h
bWUsIHJlc3RyaWN0LmNfc3RyKCkpOwotICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLQotICB9IGVs
c2UgaWYgKCFGTEFHU19oZWxwbWF0Y2guZW1wdHkoKSkgewotICAgIFNob3dVc2FnZVdpdGhGbGFn
c1Jlc3RyaWN0KHByb2duYW1lLCBGTEFHU19oZWxwbWF0Y2guY19zdHIoKSk7Ci0gICAgZ2ZsYWdz
X2V4aXRmdW5jKDEpOwotCi0gIH0gZWxzZSBpZiAoRkxBR1NfaGVscHBhY2thZ2UpIHsKLSAgICAv
LyBTaG93cyBoZWxwIGZvciBhbGwgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIG1haW4o
KS4gIFdlCi0gICAgLy8gZG9uJ3Qgd2FudCB0byByZXNvcnQgdG8gbG9va2luZyBhdCBkaXJuYW1l
KHByb2duYW1lKSwgYmVjYXVzZQotICAgIC8vIHRoZSB1c2VyIGNhbiBwaWNrIHByb2duYW1lLCBh
bmQgaXQgbWF5IG5vdCByZWxhdGUgdG8gdGhlIGZpbGUKLSAgICAvLyB3aGVyZSBtYWluKCkgcmVz
aWRlcy4gIFNvIGluc3RlYWQsIHdlIHNlYXJjaCB0aGUgZmxhZ3MgZm9yIGEKLSAgICAvLyBmaWxl
bmFtZSBsaWtlICIvcHJvZ25hbWUuY2MiLCBhbmQgdGFrZSB0aGUgZGlybmFtZSBvZiB0aGF0Lgot
ICAgIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBmbGFnczsKLSAgICBHZXRBbGxGbGFncygm
ZmxhZ3MpOwotICAgIHN0cmluZyBsYXN0X3BhY2thZ2U7Ci0gICAgZm9yICh2ZWN0b3I8Q29tbWFu
ZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGZsYWcgPSBmbGFncy5iZWdpbigpOwotICAg
ICAgICAgZmxhZyAhPSBmbGFncy5lbmQoKTsKLSAgICAgICAgICsrZmxhZykgewotICAgICAgaWYg
KCFGaWxlTWF0Y2hlc1N1YnN0cmluZyhmbGFnLT5maWxlbmFtZSwgc3Vic3RyaW5ncykpCi0gICAg
ICAgIGNvbnRpbnVlOwotICAgICAgY29uc3Qgc3RyaW5nIHBhY2thZ2UgPSBEaXJuYW1lKGZsYWct
PmZpbGVuYW1lKSArIFBBVEhfU0VQQVJBVE9SOwotICAgICAgaWYgKHBhY2thZ2UgIT0gbGFzdF9w
YWNrYWdlKSB7Ci0gICAgICAgIFNob3dVc2FnZVdpdGhGbGFnc1Jlc3RyaWN0KHByb2duYW1lLCBw
YWNrYWdlLmNfc3RyKCkpOwotICAgICAgICBWTE9HKDcpIDw8ICJGb3VuZCBwYWNrYWdlOiAiIDw8
IHBhY2thZ2U7Ci0gICAgICAgIGlmICghbGFzdF9wYWNrYWdlLmVtcHR5KCkpIHsgICAgICAvLyBt
ZWFucyB0aGlzIGlzbid0IG91ciBmaXJzdCBwa2cKLSAgICAgICAgICBMT0coV0FSTklORykgPDwg
Ik11bHRpcGxlIHBhY2thZ2VzIGNvbnRhaW4gYSBmaWxlPSIgPDwgcHJvZ25hbWU7Ci0gICAgICAg
IH0KLSAgICAgICAgbGFzdF9wYWNrYWdlID0gcGFja2FnZTsKLSAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKGxhc3RfcGFja2FnZS5lbXB0eSgpKSB7ICAgLy8gbmV2ZXIgZm91bmQgYSBwYWNrYWdlIHRv
IHByaW50Ci0gICAgICBMT0coV0FSTklORykgPDwgIlVuYWJsZSB0byBmaW5kIGEgcGFja2FnZSBm
b3IgZmlsZT0iIDw8IHByb2duYW1lOwotICAgIH0KLSAgICBnZmxhZ3NfZXhpdGZ1bmMoMSk7Ci0K
LSAgfSBlbHNlIGlmIChGTEFHU19oZWxweG1sKSB7Ci0gICAgU2hvd1hNTE9mRmxhZ3MocHJvZ25h
bWUpOwotICAgIGdmbGFnc19leGl0ZnVuYygxKTsKLQotICB9IGVsc2UgaWYgKEZMQUdTX3ZlcnNp
b24pIHsKLSAgICBTaG93VmVyc2lvbigpOwotICAgIC8vIFVubGlrZSBoZWxwLCB3ZSBtYXkgYmUg
YXNraW5nIGZvciB2ZXJzaW9uIGluIGEgc2NyaXB0LCBzbyByZXR1cm4gMAotICAgIGdmbGFnc19l
eGl0ZnVuYygwKTsKLQotICB9Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UgR0ZMQUdTX05BTUVTUEFD
RQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nZmxhZ3Mvc3JjL3NyYy9tdXRleC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy9tdXRleC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZjk2ZjJiNjdmN2UuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL211
dGV4LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAy
MDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIAotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLyAKLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vIAotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vIAotLy8gLS0tCi0vLwotLy8gQSBz
aW1wbGUgbXV0ZXggd3JhcHBlciwgc3VwcG9ydGluZyBsb2NrcyBhbmQgcmVhZC13cml0ZSBsb2Nr
cy4KLS8vIFlvdSBzaG91bGQgYXNzdW1lIHRoZSBsb2NrcyBhcmUgKm5vdCogcmUtZW50cmFudC4K
LS8vCi0vLyBUaGlzIGNsYXNzIGlzIG1lYW50IHRvIGJlIGludGVybmFsLW9ubHkgYW5kIHNob3Vs
ZCBiZSB3cmFwcGVkIGJ5IGFuCi0vLyBpbnRlcm5hbCBuYW1lc3BhY2UuICBCZWZvcmUgeW91IHVz
ZSB0aGlzIG1vZHVsZSwgcGxlYXNlIGdpdmUgdGhlCi0vLyBuYW1lIG9mIHlvdXIgaW50ZXJuYWwg
bmFtZXNwYWNlIGZvciB0aGlzIG1vZHVsZS4gIE9yLCBpZiB5b3Ugd2FudAotLy8gdG8gZXhwb3Nl
IGl0LCB5b3UnbGwgd2FudCB0byBtb3ZlIGl0IHRvIHRoZSBHb29nbGUgbmFtZXNwYWNlLiAgV2UK
LS8vIGNhbm5vdCBwdXQgdGhpcyBjbGFzcyBpbiBnbG9iYWwgbmFtZXNwYWNlIGJlY2F1c2UgdGhl
cmUgY2FuIGJlIHNvbWUKLS8vIHByb2JsZW1zIHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9u
cyBvZiBNdXRleCBpbiBlYWNoIHNoYXJlZCBvYmplY3QuCi0vLwotLy8gTk9URTogYnkgZGVmYXVs
dCwgd2UgaGF2ZSAjaWZkZWYnZWQgb3V0IHRoZSBUcnlMb2NrKCkgbWV0aG9kLgotLy8gICAgICAg
VGhpcyBpcyBmb3IgdHdvIHJlYXNvbnM6Ci0vLyAxKSBUcnlMb2NrKCkgdW5kZXIgV2luZG93cyBp
cyBhIGJpdCBhbm5veWluZyAoaXQgcmVxdWlyZXMgYQotLy8gICAgI2RlZmluZSB0byBiZSBkZWZp
bmVkIHZlcnkgZWFybHkpLgotLy8gMikgVHJ5TG9jaygpIGlzIGJyb2tlbiBmb3IgTk9fVEhSRUFE
UyBtb2RlLCBhdCBsZWFzdCBpbiBOREVCVUcKLS8vICAgIG1vZGUuCi0vLyBJZiB5b3UgbmVlZCBU
cnlMb2NrKCksIGFuZCBlaXRoZXIgdGhlc2UgdHdvIGNhdmVhdHMgYXJlIG5vdCBhCi0vLyBwcm9i
bGVtIGZvciB5b3UsIG9yIHlvdSdyZSB3aWxsaW5nIHRvIHdvcmsgYXJvdW5kIHRoZW0sIHRoZW4K
LS8vIGZlZWwgZnJlZSB0byAjZGVmaW5lIEdNVVRFWF9UUllMT0NLLCBvciB0byByZW1vdmUgdGhl
ICNpZmRlZnMKLS8vIGluIHRoZSBjb2RlIGJlbG93LgotLy8KLS8vIENZR1dJTiBOT1RFOiBDeWd3
aW4gc3VwcG9ydCBmb3Igcndsb2NrIHNlZW1zIHRvIGJlIGJ1Z2d5OgotLy8gICAgaHR0cDovL3d3
dy5jeWd3aW4uY29tL21sL2N5Z3dpbi8yMDA4LTEyL21zZzAwMDE3Lmh0bWwKLS8vIEJlY2F1c2Ug
b2YgdGhhdCwgd2UgbWlnaHQgYXMgd2VsbCB1c2Ugd2luZG93cyBsb2NrcyBmb3IKLS8vIGN5Z3dp
bi4gIFRoZXkgc2VlbSB0byBiZSBtb3JlIHJlbGlhYmxlIHRoYW4gdGhlIGN5Z3dpbiBwdGhyZWFk
cyBsYXllci4KLS8vCi0vLyBUUklDS1kgSU1QTEVNRU5UQVRJT04gTk9URToKLS8vIFRoaXMgY2xh
c3MgaXMgZGVzaWduZWQgdG8gYmUgc2FmZSB0byB1c2UgZHVyaW5nCi0vLyBkeW5hbWljLWluaXRp
YWxpemF0aW9uIC0tIHRoYXQgaXMsIGJ5IGdsb2JhbCBjb25zdHJ1Y3RvcnMgdGhhdCBhcmUKLS8v
IHJ1biBiZWZvcmUgbWFpbigpIHN0YXJ0cy4gIFRoZSBpc3N1ZSBpbiB0aGlzIGNhc2UgaXMgdGhh
dAotLy8gZHluYW1pYy1pbml0aWFsaXphdGlvbiBoYXBwZW5zIGluIGFuIHVucHJlZGljdGFibGUg
b3JkZXIsIGFuZCBpdAotLy8gY291bGQgYmUgdGhhdCBzb21lb25lIGVsc2UncyBkeW5hbWljIGlu
aXRpYWxpemVyIGNvdWxkIGNhbGwgYQotLy8gZnVuY3Rpb24gdGhhdCB0cmllcyB0byBhY3F1aXJl
IHRoaXMgbXV0ZXggLS0gYnV0IHRoYXQgYWxsIGhhcHBlbnMKLS8vIGJlZm9yZSB0aGlzIG11dGV4
J3MgY29uc3RydWN0b3IgaGFzIHJ1bi4gIChUaGlzIGNhbiBoYXBwZW4gZXZlbiBpZgotLy8gdGhl
IG11dGV4IGFuZCB0aGUgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZSBtdXRleCBhcmUgaW4gdGhlIHNh
bWUgLmNjCi0vLyBmaWxlLikgIEJhc2ljYWxseSwgYmVjYXVzZSBNdXRleCBkb2VzIG5vbi10cml2
aWFsIHdvcmsgaW4gaXRzCi0vLyBjb25zdHJ1Y3RvciwgaXQncyBub3QsIGluIHRoZSBuYWl2ZSBp
bXBsZW1lbnRhdGlvbiwgc2FmZSB0byB1c2UKLS8vIGJlZm9yZSBkeW5hbWljIGluaXRpYWxpemF0
aW9uIGhhcyBydW4gb24gaXQuCi0vLwotLy8gVGhlIHNvbHV0aW9uIHVzZWQgaGVyZSBpcyB0byBw
YWlyIHRoZSBhY3R1YWwgbXV0ZXggcHJpbWl0aXZlIHdpdGggYQotLy8gYm9vbCB0aGF0IGlzIHNl
dCB0byB0cnVlIHdoZW4gdGhlIG11dGV4IGlzIGR5bmFtaWNhbGx5IGluaXRpYWxpemVkLgotLy8g
KEJlZm9yZSB0aGF0IGl0J3MgZmFsc2UuKSAgVGhlbiB3ZSBtb2RpZnkgYWxsIG11dGV4IHJvdXRp
bmVzIHRvCi0vLyBsb29rIGF0IHRoZSBib29sLCBhbmQgbm90IHRyeSB0byBsb2NrL3VubG9jayB1
bnRpbCB0aGUgYm9vbCBtYWtlcwotLy8gaXQgdG8gdHJ1ZSAod2hpY2ggaGFwcGVucyBhZnRlciB0
aGUgTXV0ZXggY29uc3RydWN0b3IgaGFzIHJ1bi4pCi0vLwotLy8gVGhpcyB3b3JrcyBiZWNhdXNl
IGJlZm9yZSBtYWluKCkgc3RhcnRzIC0tIHBhcnRpY3VsYXJseSwgZHVyaW5nCi0vLyBkeW5hbWlj
IGluaXRpYWxpemF0aW9uIC0tIHRoZXJlIGFyZSBubyB0aHJlYWRzLCBzbyBhKSBpdCdzIG9rIHRo
YXQKLS8vIHRoZSBtdXRleCBvcGVyYXRpb25zIGFyZSBhIG5vLW9wLCBzaW5jZSB3ZSBkb24ndCBu
ZWVkIGxvY2tpbmcgdGhlbgotLy8gYW55d2F5OyBhbmQgYikgd2UgY2FuIGJlIHF1aXRlIGNvbmZp
ZGVudCBvdXIgYm9vbCB3b24ndCBjaGFuZ2UKLS8vIHN0YXRlIGJldHdlZW4gYSBjYWxsIHRvIExv
Y2soKSBhbmQgYSBjYWxsIHRvIFVubG9jaygpICh0aGF0IHdvdWxkCi0vLyByZXF1aXJlIGEgZ2xv
YmFsIGNvbnN0cnVjdG9yIGluIG9uZSB0cmFuc2xhdGlvbiB1bml0IHRvIGNhbGwgTG9jaygpCi0v
LyBhbmQgYW5vdGhlciBnbG9iYWwgY29uc3RydWN0b3IgaW4gYW5vdGhlciB0cmFuc2xhdGlvbiB1
bml0IHRvIGNhbGwKLS8vIFVubG9jaygpIGxhdGVyLCB3aGljaCBpcyBwcmV0dHkgcGVydmVyc2Up
LgotLy8KLS8vIFRoYXQgc2FpZCwgaXQncyB0cmlja3ksIGFuZCBjYW4gY29uY2VpdmFibHkgZmFp
bDsgaXQncyBzYWZlc3QgdG8KLS8vIGF2b2lkIHRyeWluZyB0byBhY3F1aXJlIGEgbXV0ZXggaW4g
YSBnbG9iYWwgY29uc3RydWN0b3IsIGlmIHlvdQotLy8gY2FuLiAgT25lIHdheSBpdCBjYW4gZmFp
bCBpcyB0aGF0IGEgcmVhbGx5IHNtYXJ0IGNvbXBpbGVyIG1pZ2h0Ci0vLyBpbml0aWFsaXplIHRo
ZSBib29sIHRvIHRydWUgYXQgc3RhdGljLWluaXRpYWxpemF0aW9uIHRpbWUgKHRvbwotLy8gZWFy
bHkpIHJhdGhlciB0aGFuIGF0IGR5bmFtaWMtaW5pdGlhbGl6YXRpb24gdGltZS4gIFRvIGRpc2Nv
dXJhZ2UKLS8vIHRoYXQsIHdlIHNldCBpc19zYWZlXyB0byB0cnVlIGluIGNvZGUgKG5vdCB0aGUg
Y29uc3RydWN0b3IKLS8vIGNvbG9uLWluaXRpYWxpemVyKSBhbmQgc2V0IGl0IHRvIHRydWUgdmlh
IGEgZnVuY3Rpb24gdGhhdCBhbHdheXMKLS8vIGV2YWx1YXRlcyB0byB0cnVlLCBidXQgdGhhdCB0
aGUgY29tcGlsZXIgY2FuJ3Qga25vdyBhbHdheXMKLS8vIGV2YWx1YXRlcyB0byB0cnVlLiAgVGhp
cyBzaG91bGQgYmUgZ29vZCBlbm91Z2guCi0vLwotLy8gQSByZWxhdGVkIGlzc3VlIGlzIGNvZGUg
dGhhdCBjb3VsZCB0cnkgdG8gYWNjZXNzIHRoZSBtdXRleAotLy8gYWZ0ZXIgaXQncyBiZWVuIGRl
c3Ryb3llZCBpbiB0aGUgZ2xvYmFsIGRlc3RydWN0b3JzIChiZWNhdXNlCi0vLyB0aGUgTXV0ZXgg
Z2xvYmFsIGRlc3RydWN0b3IgcnVucyBiZWZvcmUgc29tZSBvdGhlciBnbG9iYWwKLS8vIGRlc3Ry
dWN0b3IsIHRoYXQgdHJpZXMgdG8gYWNxdWlyZSB0aGUgbXV0ZXgpLiAgVGhlIHdheSB3ZQotLy8g
ZGVhbCB3aXRoIHRoaXMgaXMgYnkgdGFraW5nIGEgY29uc3RydWN0b3IgYXJnIHRoYXQgZ2xvYmFs
Ci0vLyBtdXRleGVzIHNob3VsZCBwYXNzIGluLCB0aGF0IGNhdXNlcyB0aGUgZGVzdHJ1Y3RvciB0
byBkbyBubwotLy8gd29yay4gIFdlIHN0aWxsIGRlcGVuZCBvbiB0aGUgY29tcGlsZXIgbm90IGRv
aW5nIGFueXRoaW5nCi0vLyB3ZWlyZCB0byBhIE11dGV4J3MgbWVtb3J5IGFmdGVyIGl0IGlzIGRl
c3Ryb3llZCwgYnV0IGZvciBhCi0vLyBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlLCB0aGF0J3MgcHJl
dHR5IHNhZmUuCi0KLSNpZm5kZWYgR0ZMQUdTX01VVEVYX0hfCi0jZGVmaW5lIEdGTEFHU19NVVRF
WF9IXwotCi0jaW5jbHVkZSAiZ2ZsYWdzX2RlY2xhcmUuaCIgICAgIC8vIHRvIGZpZ3VyZSBvdXQg
cHRocmVhZHMgc3VwcG9ydAotCi0jaWYgZGVmaW5lZChOT19USFJFQURTKQotICB0eXBlZGVmIGlu
dCBNdXRleFR5cGU7ICAgICAgICAvLyB0byBrZWVwIGEgbG9jay1jb3VudAotI2VsaWYgZGVmaW5l
ZChPU19XSU5ET1dTKQotIyBpZm5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAgIGRlZmluZSBX
SU4zMl9MRUFOX0FORF9NRUFOICAvLyBXZSBvbmx5IG5lZWQgbWluaW1hbCBpbmNsdWRlcwotIyBl
bmRpZgotIyBpZm5kZWYgTk9NSU5NQVgKLSMgICBkZWZpbmUgTk9NSU5NQVggICAgICAgICAgICAg
Ly8gRG9uJ3Qgd2FudCB3aW5kb3dzIHRvIG92ZXJyaWRlIG1pbigpL21heCgpCi0jIGVuZGlmCi0j
IGlmZGVmIEdNVVRFWF9UUllMT0NLCi0gIC8vIFdlIG5lZWQgV2luZG93cyBOVCBvciBsYXRlciBm
b3IgVHJ5RW50ZXJDcml0aWNhbFNlY3Rpb24oKS4gIElmIHlvdQotICAvLyBkb24ndCBuZWVkIHRo
YXQgZnVuY3Rpb25hbGl0eSwgeW91IGNhbiByZW1vdmUgdGhlc2UgX1dJTjMyX1dJTk5UCi0gIC8v
IGxpbmVzLCBhbmQgY2hhbmdlIFRyeUxvY2soKSB0byBhc3NlcnQoMCkgb3Igc29tZXRoaW5nLgot
IyAgIGlmbmRlZiBfV0lOMzJfV0lOTlQKLSMgICAgIGRlZmluZSBfV0lOMzJfV0lOTlQgMHgwNDAw
Ci0jICAgZW5kaWYKLSMgZW5kaWYKLSMgaW5jbHVkZSA8d2luZG93cy5oPgotICB0eXBlZGVmIENS
SVRJQ0FMX1NFQ1RJT04gTXV0ZXhUeXBlOwotI2VsaWYgZGVmaW5lZChIQVZFX1BUSFJFQUQpICYm
IGRlZmluZWQoSEFWRV9SV0xPQ0spCi0gIC8vIE5lZWRlZCBmb3IgcHRocmVhZF9yd2xvY2tfKi4g
IElmIGl0IGNhdXNlcyBwcm9ibGVtcywgeW91IGNvdWxkIHRha2UgaXQKLSAgLy8gb3V0LCBidXQg
dGhlbiB5b3UnZCBoYXZlIHRvIHVuc2V0IEhBVkVfUldMT0NLIChhdCBsZWFzdCBvbiBsaW51eCAt
LSBpdAotICAvLyAqZG9lcyogY2F1c2UgcHJvYmxlbXMgZm9yIEZyZWVCU0QsIG9yIE1hY09TWCwg
YnV0IGlzbid0IG5lZWRlZAotICAvLyBmb3IgbG9ja2luZyB0aGVyZS4pCi0jIGlmZGVmIF9fbGlu
dXhfXwotIyAgIGlmIF9YT1BFTl9TT1VSQ0UgPCA1MDAgICAgICAvLyBpbmNsdWRpbmcgbm90IGJl
aW5nIGRlZmluZWQgYXQgYWxsCi0jICAgICB1bmRlZiBfWE9QRU5fU09VUkNFCi0jICAgICBkZWZp
bmUgX1hPUEVOX1NPVVJDRSA1MDAgIC8vIG1heSBiZSBuZWVkZWQgdG8gZ2V0IHRoZSByd2xvY2sg
Y2FsbHMKLSMgICBlbmRpZgotIyBlbmRpZgotIyBpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gIHR5cGVk
ZWYgcHRocmVhZF9yd2xvY2tfdCBNdXRleFR5cGU7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfUFRIUkVB
RCkKLSMgaW5jbHVkZSA8cHRocmVhZC5oPgotICB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBNdXRl
eFR5cGU7Ci0jZWxzZQotIyBlcnJvciBOZWVkIHRvIGltcGxlbWVudCBtdXRleC5oIGZvciB5b3Vy
IGFyY2hpdGVjdHVyZSwgb3IgI2RlZmluZSBOT19USFJFQURTCi0jZW5kaWYKLQotI2luY2x1ZGUg
PGFzc2VydC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgIC8vIGZvciBhYm9ydCgpCi0KLSNk
ZWZpbmUgTVVURVhfTkFNRVNQQUNFIGdmbGFnc19tdXRleF9uYW1lc3BhY2UKLQotbmFtZXNwYWNl
IE1VVEVYX05BTUVTUEFDRSB7Ci0KLWNsYXNzIE11dGV4IHsKLSBwdWJsaWM6Ci0gIC8vIFRoaXMg
aXMgdXNlZCBmb3IgdGhlIHNpbmdsZS1hcmcgY29uc3RydWN0b3IKLSAgZW51bSBMaW5rZXJJbml0
aWFsaXplZCB7IExJTktFUl9JTklUSUFMSVpFRCB9OwotCi0gIC8vIENyZWF0ZSBhIE11dGV4IHRo
YXQgaXMgbm90IGhlbGQgYnkgYW55Ym9keS4gIFRoaXMgY29uc3RydWN0b3IgaXMKLSAgLy8gdHlw
aWNhbGx5IHVzZWQgZm9yIE11dGV4ZXMgYWxsb2NhdGVkIG9uIHRoZSBoZWFwIG9yIHRoZSBzdGFj
ay4KLSAgaW5saW5lIE11dGV4KCk7Ci0gIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGJlIHVz
ZWQgZm9yIGdsb2JhbCwgc3RhdGljIE11dGV4IG9iamVjdHMuCi0gIC8vIEl0IGluaGliaXRzIHdv
cmsgYmVpbmcgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvciwgd2hpY2ggbWFrZXMgaXQKLSAgLy8gc2Fm
ZXIgZm9yIGNvZGUgdGhhdCB0cmllcyB0byBhY3FpdXJlIHRoaXMgbXV0ZXggaW4gdGhlaXIgZ2xv
YmFsCi0gIC8vIGRlc3RydWN0b3IuCi0gIGlubGluZSBNdXRleChMaW5rZXJJbml0aWFsaXplZCk7
Ci0KLSAgLy8gRGVzdHJ1Y3RvcgotICBpbmxpbmUgfk11dGV4KCk7Ci0KLSAgaW5saW5lIHZvaWQg
TG9jaygpOyAgICAvLyBCbG9jayBpZiBuZWVkZWQgdW50aWwgZnJlZSB0aGVuIGFjcXVpcmUgZXhj
bHVzaXZlbHkKLSAgaW5saW5lIHZvaWQgVW5sb2NrKCk7ICAvLyBSZWxlYXNlIGEgbG9jayBhY3F1
aXJlZCB2aWEgTG9jaygpCi0jaWZkZWYgR01VVEVYX1RSWUxPQ0sKLSAgaW5saW5lIGJvb2wgVHJ5
TG9jaygpOyAvLyBJZiBmcmVlLCBMb2NrKCkgYW5kIHJldHVybiB0cnVlLCBlbHNlIHJldHVybiBm
YWxzZQotI2VuZGlmCi0gIC8vIE5vdGUgdGhhdCBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3Qgc3VwcG9y
dCByZWFkLXdyaXRlIGxvY2tzLCB0aGVzZSBtYXkKLSAgLy8gYmUgaW1wbGVtZW50ZWQgYXMgc3lu
b255bXMgdG8gTG9jaygpIGFuZCBVbmxvY2soKS4gIFNvIHlvdSBjYW4gdXNlCi0gIC8vIHRoZXNl
IGZvciBlZmZpY2llbmN5LCBidXQgZG9uJ3QgdXNlIHRoZW0gYW55cGxhY2Ugd2hlcmUgYmVpbmcg
YWJsZQotICAvLyB0byBkbyBzaGFyZWQgcmVhZHMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGRlYWRs
b2NrLgotICBpbmxpbmUgdm9pZCBSZWFkZXJMb2NrKCk7ICAgLy8gQmxvY2sgdW50aWwgZnJlZSBv
ciBzaGFyZWQgdGhlbiBhY3F1aXJlIGEgc2hhcmUKLSAgaW5saW5lIHZvaWQgUmVhZGVyVW5sb2Nr
KCk7IC8vIFJlbGVhc2UgYSByZWFkIHNoYXJlIG9mIHRoaXMgTXV0ZXgKLSAgaW5saW5lIHZvaWQg
V3JpdGVyTG9jaygpIHsgTG9jaygpOyB9ICAgICAvLyBBY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2Nr
Ci0gIGlubGluZSB2b2lkIFdyaXRlclVubG9jaygpIHsgVW5sb2NrKCk7IH0gLy8gUmVsZWFzZSBh
IGxvY2sgZnJvbSBXcml0ZXJMb2NrKCkKLQotIHByaXZhdGU6Ci0gIE11dGV4VHlwZSBtdXRleF87
Ci0gIC8vIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbXBpbGVyIHNldHMgaXNfc2Fm
ZV8gdG8gdHJ1ZSBvbmx5Ci0gIC8vIHdoZW4gd2UgdGVsbCBpdCB0bywgYW5kIG5ldmVyIG1ha2Vz
IGFzc3VtcHRpb25zIGlzX3NhZmVfIGlzCi0gIC8vIGFsd2F5cyB0cnVlLiAgdm9sYXRpbGUgaXMg
dGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGRvIHRoYXQuCi0gIHZvbGF0aWxlIGJvb2wgaXNfc2Fm
ZV87Ci0gIC8vIFRoaXMgaW5kaWNhdGVzIHdoaWNoIGNvbnN0cnVjdG9yIHdhcyBjYWxsZWQuCi0g
IGJvb2wgZGVzdHJveV87Ci0KLSAgaW5saW5lIHZvaWQgU2V0SXNTYWZlKCkgeyBpc19zYWZlXyA9
IHRydWU7IH0KLQotICAvLyBDYXRjaCB0aGUgZXJyb3Igb2Ygd3JpdGluZyBNdXRleCB3aGVuIGlu
dGVuZGluZyBNdXRleExvY2suCi0gIE11dGV4KE11dGV4KiAvKmlnbm9yZWQqLykge30KLSAgLy8g
RGlzYWxsb3cgImV2aWwiIGNvbnN0cnVjdG9ycwotICBNdXRleChjb25zdCBNdXRleCYpOwotICB2
b2lkIG9wZXJhdG9yPShjb25zdCBNdXRleCYpOwotfTsKLQotLy8gTm93IHRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBNdXRleCBmb3IgdmFyaW91cyBzeXN0ZW1zCi0jaWYgZGVmaW5lZChOT19USFJFQURT
KQotCi0vLyBXaGVuIHdlIGRvbid0IGhhdmUgdGhyZWFkcywgd2UgY2FuIGJlIGVpdGhlciByZWFk
aW5nIG9yIHdyaXRpbmcsCi0vLyBidXQgbm90IGJvdGguICBXZSBjYW4gaGF2ZSBsb3RzIG9mIHJl
YWRlcnMgYXQgb25jZSAoaW4gbm8tdGhyZWFkcwotLy8gbW9kZSwgdGhhdCdzIG1vc3QgbGlrZWx5
IHRvIGhhcHBlbiBpbiByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMpLAotLy8gYnV0IG9ubHkgb25l
IHdyaXRlci4gIFdlIHJlcHJlc2VudCB0aGlzIGJ5IGhhdmluZyBtdXRleF8gYmUgLTEgd2hlbgot
Ly8gd3JpdGluZyBhbmQgYSBudW1iZXIgPiAwIHdoZW4gcmVhZGluZyAoYW5kIDAgd2hlbiBubyBs
b2NrIGlzIGhlbGQpLgotLy8KLS8vIEluIGRlYnVnIG1vZGUsIHdlIGFzc2VydCB0aGVzZSBpbnZh
cmlhbnRzLCB3aGlsZSBpbiBub24tZGVidWcgbW9kZQotLy8gd2UgZG8gbm90aGluZywgZm9yIGVm
ZmljaWVuY3kuICBUaGF0J3Mgd2h5IGV2ZXJ5dGhpbmcgaXMgaW4gYW4KLS8vIGFzc2VydC4KLQot
TXV0ZXg6Ok11dGV4KCkgOiBtdXRleF8oMCkgeyB9Ci1NdXRleDo6TXV0ZXgoTXV0ZXg6Okxpbmtl
ckluaXRpYWxpemVkKSA6IG11dGV4XygwKSB7IH0KLU11dGV4Ojp+TXV0ZXgoKSAgICAgICAgICAg
IHsgYXNzZXJ0KG11dGV4XyA9PSAwKTsgfQotdm9pZCBNdXRleDo6TG9jaygpICAgICAgICAgeyBh
c3NlcnQoLS1tdXRleF8gPT0gLTEpOyB9Ci12b2lkIE11dGV4OjpVbmxvY2soKSAgICAgICB7IGFz
c2VydChtdXRleF8rKyA9PSAtMSk7IH0KLSNpZmRlZiBHTVVURVhfVFJZTE9DSwotYm9vbCBNdXRl
eDo6VHJ5TG9jaygpICAgICAgeyBpZiAobXV0ZXhfKSByZXR1cm4gZmFsc2U7IExvY2soKTsgcmV0
dXJuIHRydWU7IH0KLSNlbmRpZgotdm9pZCBNdXRleDo6UmVhZGVyTG9jaygpICAgeyBhc3NlcnQo
KyttdXRleF8gPiAwKTsgfQotdm9pZCBNdXRleDo6UmVhZGVyVW5sb2NrKCkgeyBhc3NlcnQobXV0
ZXhfLS0gPiAwKTsgfQotCi0jZWxpZiBkZWZpbmVkKE9TX1dJTkRPV1MpCi0KLU11dGV4OjpNdXRl
eCgpIDogZGVzdHJveV8odHJ1ZSkgewotICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZtdXRl
eF8pOwotICBTZXRJc1NhZmUoKTsKLX0KLU11dGV4OjpNdXRleChMaW5rZXJJbml0aWFsaXplZCkg
OiBkZXN0cm95XyhmYWxzZSkgewotICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZtdXRleF8p
OwotICBTZXRJc1NhZmUoKTsKLX0KLU11dGV4Ojp+TXV0ZXgoKSAgICAgICAgICAgIHsgaWYgKGRl
c3Ryb3lfKSBEZWxldGVDcml0aWNhbFNlY3Rpb24oJm11dGV4Xyk7IH0KLXZvaWQgTXV0ZXg6Okxv
Y2soKSAgICAgICAgIHsgaWYgKGlzX3NhZmVfKSBFbnRlckNyaXRpY2FsU2VjdGlvbigmbXV0ZXhf
KTsgfQotdm9pZCBNdXRleDo6VW5sb2NrKCkgICAgICAgeyBpZiAoaXNfc2FmZV8pIExlYXZlQ3Jp
dGljYWxTZWN0aW9uKCZtdXRleF8pOyB9Ci0jaWZkZWYgR01VVEVYX1RSWUxPQ0sKLWJvb2wgTXV0
ZXg6OlRyeUxvY2soKSAgICAgIHsgcmV0dXJuIGlzX3NhZmVfID8KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyeUVudGVyQ3JpdGljYWxTZWN0aW9uKCZtdXRleF8pICE9IDAgOiB0
cnVlOyB9Ci0jZW5kaWYKLXZvaWQgTXV0ZXg6OlJlYWRlckxvY2soKSAgIHsgTG9jaygpOyB9ICAg
ICAgLy8gd2UgZG9uJ3QgaGF2ZSByZWFkLXdyaXRlIGxvY2tzCi12b2lkIE11dGV4OjpSZWFkZXJV
bmxvY2soKSB7IFVubG9jaygpOyB9Ci0KLSNlbGlmIGRlZmluZWQoSEFWRV9QVEhSRUFEKSAmJiBk
ZWZpbmVkKEhBVkVfUldMT0NLKQotCi0jZGVmaW5lIFNBRkVfUFRIUkVBRChmbmNhbGwpICBkbyB7
ICAgLyogcnVuIGZuY2FsbCBpZiBpc19zYWZlXyBpcyB0cnVlICovICBcCi0gIGlmIChpc19zYWZl
XyAmJiBmbmNhbGwoJm11dGV4XykgIT0gMCkgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi19IHdoaWxlICgwKQotCi1NdXRleDo6TXV0ZXgoKSA6IGRlc3Ryb3lfKHRydWUpIHsK
LSAgU2V0SXNTYWZlKCk7Ci0gIGlmIChpc19zYWZlXyAmJiBwdGhyZWFkX3J3bG9ja19pbml0KCZt
dXRleF8sIE5VTEwpICE9IDApIGFib3J0KCk7Ci19Ci1NdXRleDo6TXV0ZXgoTXV0ZXg6Okxpbmtl
ckluaXRpYWxpemVkKSA6IGRlc3Ryb3lfKGZhbHNlKSB7Ci0gIFNldElzU2FmZSgpOwotICBpZiAo
aXNfc2FmZV8gJiYgcHRocmVhZF9yd2xvY2tfaW5pdCgmbXV0ZXhfLCBOVUxMKSAhPSAwKSBhYm9y
dCgpOwotfQotTXV0ZXg6On5NdXRleCgpICAgICAgIHsgaWYgKGRlc3Ryb3lfKSBTQUZFX1BUSFJF
QUQocHRocmVhZF9yd2xvY2tfZGVzdHJveSk7IH0KLXZvaWQgTXV0ZXg6OkxvY2soKSAgICAgICAg
IHsgU0FGRV9QVEhSRUFEKHB0aHJlYWRfcndsb2NrX3dybG9jayk7IH0KLXZvaWQgTXV0ZXg6OlVu
bG9jaygpICAgICAgIHsgU0FGRV9QVEhSRUFEKHB0aHJlYWRfcndsb2NrX3VubG9jayk7IH0KLSNp
ZmRlZiBHTVVURVhfVFJZTE9DSwotYm9vbCBNdXRleDo6VHJ5TG9jaygpICAgICAgeyByZXR1cm4g
aXNfc2FmZV8gPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfcndsb2Nr
X3RyeXdybG9jaygmbXV0ZXhfKSA9PSAwIDogdHJ1ZTsgfQotI2VuZGlmCi12b2lkIE11dGV4OjpS
ZWFkZXJMb2NrKCkgICB7IFNBRkVfUFRIUkVBRChwdGhyZWFkX3J3bG9ja19yZGxvY2spOyB9Ci12
b2lkIE11dGV4OjpSZWFkZXJVbmxvY2soKSB7IFNBRkVfUFRIUkVBRChwdGhyZWFkX3J3bG9ja191
bmxvY2spOyB9Ci0jdW5kZWYgU0FGRV9QVEhSRUFECi0KLSNlbGlmIGRlZmluZWQoSEFWRV9QVEhS
RUFEKQotCi0jZGVmaW5lIFNBRkVfUFRIUkVBRChmbmNhbGwpICBkbyB7ICAgLyogcnVuIGZuY2Fs
bCBpZiBpc19zYWZlXyBpcyB0cnVlICovICBcCi0gIGlmIChpc19zYWZlXyAmJiBmbmNhbGwoJm11
dGV4XykgIT0gMCkgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IHdoaWxl
ICgwKQotCi1NdXRleDo6TXV0ZXgoKSA6IGRlc3Ryb3lfKHRydWUpIHsKLSAgU2V0SXNTYWZlKCk7
Ci0gIGlmIChpc19zYWZlXyAmJiBwdGhyZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVMTCkgIT0g
MCkgYWJvcnQoKTsKLX0KLU11dGV4OjpNdXRleChNdXRleDo6TGlua2VySW5pdGlhbGl6ZWQpIDog
ZGVzdHJveV8oZmFsc2UpIHsKLSAgU2V0SXNTYWZlKCk7Ci0gIGlmIChpc19zYWZlXyAmJiBwdGhy
ZWFkX211dGV4X2luaXQoJm11dGV4XywgTlVMTCkgIT0gMCkgYWJvcnQoKTsKLX0KLU11dGV4Ojp+
TXV0ZXgoKSAgICAgICB7IGlmIChkZXN0cm95XykgU0FGRV9QVEhSRUFEKHB0aHJlYWRfbXV0ZXhf
ZGVzdHJveSk7IH0KLXZvaWQgTXV0ZXg6OkxvY2soKSAgICAgICAgIHsgU0FGRV9QVEhSRUFEKHB0
aHJlYWRfbXV0ZXhfbG9jayk7IH0KLXZvaWQgTXV0ZXg6OlVubG9jaygpICAgICAgIHsgU0FGRV9Q
VEhSRUFEKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKTsgfQotI2lmZGVmIEdNVVRFWF9UUllMT0NLCi1i
b29sIE11dGV4OjpUcnlMb2NrKCkgICAgICB7IHJldHVybiBpc19zYWZlXyA/Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3RyeWxvY2soJm11dGV4XykgPT0g
MCA6IHRydWU7IH0KLSNlbmRpZgotdm9pZCBNdXRleDo6UmVhZGVyTG9jaygpICAgeyBMb2NrKCk7
IH0KLXZvaWQgTXV0ZXg6OlJlYWRlclVubG9jaygpIHsgVW5sb2NrKCk7IH0KLSN1bmRlZiBTQUZF
X1BUSFJFQUQKLQotI2VuZGlmCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTb21lIGhlbHBl
ciBjbGFzc2VzCi0KLS8vIE11dGV4TG9jayhtdSkgYWNxdWlyZXMgbXUgd2hlbiBjb25zdHJ1Y3Rl
ZCBhbmQgcmVsZWFzZXMgaXQgd2hlbiBkZXN0cm95ZWQuCi1jbGFzcyBNdXRleExvY2sgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTXV0ZXhMb2NrKE11dGV4ICptdSkgOiBtdV8obXUpIHsgbXVfLT5M
b2NrKCk7IH0KLSAgfk11dGV4TG9jaygpIHsgbXVfLT5VbmxvY2soKTsgfQotIHByaXZhdGU6Ci0g
IE11dGV4ICogY29uc3QgbXVfOwotICAvLyBEaXNhbGxvdyAiZXZpbCIgY29uc3RydWN0b3JzCi0g
IE11dGV4TG9jayhjb25zdCBNdXRleExvY2smKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgTXV0
ZXhMb2NrJik7Ci19OwotCi0vLyBSZWFkZXJNdXRleExvY2sgYW5kIFdyaXRlck11dGV4TG9jayBk
byB0aGUgc2FtZSwgZm9yIHJ3bG9ja3MKLWNsYXNzIFJlYWRlck11dGV4TG9jayB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBSZWFkZXJNdXRleExvY2soTXV0ZXggKm11KSA6IG11XyhtdSkgeyBtdV8t
PlJlYWRlckxvY2soKTsgfQotICB+UmVhZGVyTXV0ZXhMb2NrKCkgeyBtdV8tPlJlYWRlclVubG9j
aygpOyB9Ci0gcHJpdmF0ZToKLSAgTXV0ZXggKiBjb25zdCBtdV87Ci0gIC8vIERpc2FsbG93ICJl
dmlsIiBjb25zdHJ1Y3RvcnMKLSAgUmVhZGVyTXV0ZXhMb2NrKGNvbnN0IFJlYWRlck11dGV4TG9j
ayYpOwotICB2b2lkIG9wZXJhdG9yPShjb25zdCBSZWFkZXJNdXRleExvY2smKTsKLX07Ci0KLWNs
YXNzIFdyaXRlck11dGV4TG9jayB7Ci0gcHVibGljOgotICBleHBsaWNpdCBXcml0ZXJNdXRleExv
Y2soTXV0ZXggKm11KSA6IG11XyhtdSkgeyBtdV8tPldyaXRlckxvY2soKTsgfQotICB+V3JpdGVy
TXV0ZXhMb2NrKCkgeyBtdV8tPldyaXRlclVubG9jaygpOyB9Ci0gcHJpdmF0ZToKLSAgTXV0ZXgg
KiBjb25zdCBtdV87Ci0gIC8vIERpc2FsbG93ICJldmlsIiBjb25zdHJ1Y3RvcnMKLSAgV3JpdGVy
TXV0ZXhMb2NrKGNvbnN0IFdyaXRlck11dGV4TG9jayYpOwotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBXcml0ZXJNdXRleExvY2smKTsKLX07Ci0KLS8vIENhdGNoIGJ1ZyB3aGVyZSB2YXJpYWJsZSBu
YW1lIGlzIG9taXR0ZWQsIGUuZy4gTXV0ZXhMb2NrICgmbXUpOwotI2RlZmluZSBNdXRleExvY2so
eCkgQ09NUElMRV9BU1NFUlQoMCwgbXV0ZXhfbG9ja19kZWNsX21pc3NpbmdfdmFyX25hbWUpCi0j
ZGVmaW5lIFJlYWRlck11dGV4TG9jayh4KSBDT01QSUxFX0FTU0VSVCgwLCBybXV0ZXhfbG9ja19k
ZWNsX21pc3NpbmdfdmFyX25hbWUpCi0jZGVmaW5lIFdyaXRlck11dGV4TG9jayh4KSBDT01QSUxF
X0FTU0VSVCgwLCB3bXV0ZXhfbG9ja19kZWNsX21pc3NpbmdfdmFyX25hbWUpCi0KLX0gIC8vIG5h
bWVzcGFjZSBNVVRFWF9OQU1FU1BBQ0UKLQotCi0jZW5kaWYgIC8qICNkZWZpbmUgR0ZMQUdTX01V
VEVYX0hfXyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3V0aWwuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI1OWIzOGRkYzRkLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L3NyYy91dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChjKSAyMDExLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vIC0tLQotLy8KLS8vIFNvbWUg
Z2VuZXJpY2FsbHkgdXNlZnVsIHV0aWxpdHkgcm91dGluZXMgdGhhdCBpbiBnb29nbGUtbGFuZCB3
b3VsZAotLy8gYmUgdGhlaXIgb3duIHByb2plY3RzLiAgV2UgbWFrZSBhIHNob3J0ZW5lZCB2ZXJz
aW9uIGhlcmUuCi0KLSNpZm5kZWYgR0ZMQUdTX1VUSUxfSF8KLSNkZWZpbmUgR0ZMQUdTX1VUSUxf
SF8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVk
ZSA8Y29uZmlnLmg+Ci0jaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0jICBpbmNsdWRlIDxpbnR0eXBl
cy5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RkYXJnLmg+ICAgICAvLyBmb3IgdmFfKgotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaWZkZWYgSEFWRV9TWVNfU1RB
VF9ICi0jICBpbmNsdWRlIDxzeXMvc3RhdC5oPiAvLyBmb3IgbWtkaXIKLSNlbmRpZgotCi0KLW5h
bWVzcGFjZSBHRkxBR1NfTkFNRVNQQUNFIHsKLQotCi0vLyBUaGlzIGlzIHVzZWQgZm9yIHVuaXR0
ZXN0cyBmb3IgZGVhdGgtdGVzdGluZy4gIEl0IGlzIGRlZmluZWQgaW4gZ2ZsYWdzLmNjLgotZXh0
ZXJuIEdGTEFHU19ETExfREVDTCB2b2lkICgqZ2ZsYWdzX2V4aXRmdW5jKShpbnQpOwotCi0vLyBX
b3JrIHByb3Blcmx5IGlmIGVpdGhlciBzdHJ0b2xsIG9yIHN0cnRvcSBpcyBvbiB0aGlzIHN5c3Rl
bS4KLSNpZiBkZWZpbmVkKHN0cnRvbGwpIHx8IGRlZmluZWQoSEFWRV9TVFJUT0xMKQotIyAgZGVm
aW5lIHN0cnRvNjQgIHN0cnRvbGwKLSMgIGRlZmluZSBzdHJ0b3U2NCBzdHJ0b3VsbAotI2VsaWYg
ZGVmaW5lZChIQVZFX1NUUlRPUSkKLSMgIGRlZmluZSBzdHJ0bzY0ICBzdHJ0b3EKLSMgIGRlZmlu
ZSBzdHJ0b3U2NCBzdHJ0b3VxCi0vLyBOZWl0aGVyIHN0cnRvbGwgbm9yIHN0cnRvcSBhcmUgZGVm
aW5lZC4gIEkgaG9wZSBzdHJ0b2wgd29ya3MhCi0jZWxzZQotIyAgZGVmaW5lIHN0cnRvNjQgIHN0
cnRvbAotIyAgZGVmaW5lIHN0cnRvdTY0IHN0cnRvdWwKLSNlbmRpZgotCi0vLyBJZiB3ZSBoYXZl
IGludHR5cGVzLmgsIGl0IHdpbGwgaGF2ZSBkZWZpbmVkIFBSSWQzMi9ldGMgZm9yIHVzLgotLy8g
SWYgbm90LCB0YWtlIG91ciBiZXN0IGd1ZXNzLgotI2lmbmRlZiBQUklkMzIKLSMgIGRlZmluZSBQ
UklkMzIgImQiCi0jZW5kaWYKLSNpZm5kZWYgUFJJZDY0Ci0jICBkZWZpbmUgUFJJZDY0ICJsbGQi
Ci0jZW5kaWYKLSNpZm5kZWYgUFJJdTY0Ci0jICBkZWZpbmUgUFJJdTY0ICJsbHUiCi0jZW5kaWYK
LQotdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4OwotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4
OwotCi0vLyAtLSB1dGlsaXR5IG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPGJvb2wgYj4gc3RydWN0IENv
bXBpbGVBc3NlcnQ7Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ29tcGlsZUFzc2VydDx0cnVlPiB7fTsK
LSNkZWZpbmUgQ09NUElMRV9BU1NFUlQoZXhwciwgbXNnKSBcCi0gIGVudW0geyBhc3NlcnRfIyNt
c2cgPSBzaXplb2YoQ29tcGlsZUFzc2VydDxib29sKGV4cHIpPikgfQotCi0vLyBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYW4gYXJyYXkuCi0jZGVmaW5lIGFycmF5c2l6ZShhcnIp
IChzaXplb2YoYXJyKS9zaXplb2YoKihhcnIpKSkKLQotCi0vLyAtLSBsb2dnaW5nIGFuZCB0ZXN0
aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci0vLyBGb3Igbm93LCB3ZSBpZ25vcmUgdGhlIGxldmVsIGZvciBsb2dnaW5nLCBhbmQgZG9uJ3Qg
c2hvdyAqVkxPRydzIGF0Ci0vLyBhbGwsIGV4Y2VwdCBieSBoYW5kLWVkaXRpbmcgdGhlIGxpbmVz
IGJlbG93Ci0jZGVmaW5lIExPRyhsZXZlbCkgICAgc3RkOjpjZXJyCi0jZGVmaW5lIFZMT0cobGV2
ZWwpICAgaWYgKHRydWUpIHt9IGVsc2Ugc3RkOjpjZXJyCi0jZGVmaW5lIERWTE9HKGxldmVsKSAg
aWYgKHRydWUpIHt9IGVsc2Ugc3RkOjpjZXJyCi0KLS8vIENIRUNLIGRpZXMgd2l0aCBhIGZhdGFs
IGVycm9yIGlmIGNvbmRpdGlvbiBpcyBub3QgdHJ1ZS4gIEl0IGlzICpub3QqCi0vLyBjb250cm9s
bGVkIGJ5IE5ERUJVRywgc28gdGhlIGNoZWNrIHdpbGwgYmUgZXhlY3V0ZWQgcmVnYXJkbGVzcyBv
ZgotLy8gY29tcGlsYXRpb24gbW9kZS4gIFRoZXJlZm9yZSwgaXQgaXMgc2FmZSB0byBkbyB0aGlu
Z3MgbGlrZToKLS8vICAgIENIRUNLKGZwLT5Xcml0ZSh4KSA9PSA0KQotLy8gV2UgYWxsb3cgc3Ry
ZWFtLWxpa2Ugb2JqZWN0cyBhZnRlciB0aGlzIGZvciBkZWJ1Z2dpbmcsIGJ1dCB0aGV5J3JlIGln
bm9yZWQuCi0jZGVmaW5lIEVYUEVDVF9UUlVFKGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICBpZiAodHJ1ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIShjb25kaXRpb24pKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkNoZWNrIGZhaWxlZDogJXNcbiIsICNjb25kaXRpb24pOyAgICAgICAgXAotICAgICAgZXhp
dCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIH0gZWxzZSBzdGQ6OmNlcnIgPDwgIiIKLQotI2RlZmluZSBFWFBFQ1RfT1Ao
b3AsIHZhbDEsIHZhbDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICBpZiAodHJ1ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIGlmICghKCh2YWwxKSBvcCAodmFsMikpKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgZnByaW50ZihzdGRlcnIs
ICJDaGVjayBmYWlsZWQ6ICVzICVzICVzXG4iLCAjdmFsMSwgI29wLCAjdmFsMik7ICAgXAotICAg
ICAgZXhpdCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9IGVsc2Ugc3RkOjpjZXJyIDw8ICIi
Ci0KLSNkZWZpbmUgRVhQRUNUX0VRKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCg9PSwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCghPSwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX0xFKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCg8PSwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX0xUKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCg8ICwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX0dFKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCg+PSwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIpIEVYUEVDVF9PUCg+ICwgdmFsMSwgdmFs
MikKLSNkZWZpbmUgRVhQRUNUX0ZBTFNFKGNvbmQpICAgIEVYUEVDVF9UUlVFKCEoY29uZCkpCi0K
LS8vIEM5OSBkZWNsYXJlcyBpc25hbiBhbmQgaXNpbmYgc2hvdWxkIGJlIG1hY3Jvcywgc28gdGhl
ICNpZmRlZiB0ZXN0Ci0vLyBzaG91bGQgYmUgcmVsaWFibGUgZXZlcnl3aGVyZS4gIE9mIGNvdXJz
ZSwgaXQncyBub3QsIGJ1dCB0aGVzZQotLy8gYXJlIHRlc3RpbmcgcGVydHR5IG1hcmdpbmFsIGZ1
bmN0aW9uYWxpdHkgYW55d2F5LCBzbyBpdCdzIG9rIHRvCi0vLyBub3QtcnVuIHRoZW0gZXZlbiBp
biBzaXR1YXRpb25zIHRoZXkgbWlnaHQsIHdpdGggZWZmb3J0LCBiZSBtYWRlIHRvIHdvcmsuCi0j
aWZkZWYgaXNuYW4gIC8vIFNvbWUgY29tcGlsZXJzLCBsaWtlIHN1bidzIGZvciBTb2xhcmlzIDEw
LCBkb24ndCBkZWZpbmUgdGhpcwotI2RlZmluZSBFWFBFQ1RfTkFOKGFyZykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKCFpc25hbihh
cmcpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ZnByaW50ZihzdGRlcnIsICJDaGVjayBmYWlsZWQ6IGlzbmFuKCVzKVxuIiwgI2FyZyk7ICAgICAg
IFwKLSAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICB9IHdoaWxlICgwKQotI2Vsc2UKLSNkZWZpbmUgRVhQ
RUNUX05BTihhcmcpCi0jZW5kaWYKLQotI2lmZGVmIGlzaW5mICAvLyBTb21lIGNvbXBpbGVycywg
bGlrZSBzdW4ncyBmb3IgU29sYXJpcyAxMCwgZG9uJ3QgZGVmaW5lIHRoaXMKLSNkZWZpbmUgRVhQ
RUNUX0lORihhcmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGlmICghaXNpbmYoYXJnKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2hlY2sgZmFpbGVkOiBp
c2luZiglcylcbiIsICNhcmcpOyAgICAgICBcCi0gICAgICBleGl0KDEpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSB3aGls
ZSAoMCkKLSNlbHNlCi0jZGVmaW5lIEVYUEVDVF9JTkYoYXJnKQotI2VuZGlmCi0KLSNkZWZpbmUg
RVhQRUNUX0RPVUJMRV9FUSh2YWwxLCB2YWwyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoKCh2YWwxKSA8ICh2YWwyKSAtIDAu
MDAxIHx8ICh2YWwxKSA+ICh2YWwyKSArIDAuMDAxKSkgeyAgICAgICAgIFwKLSAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiQ2hlY2sgZmFpbGVkOiAlcyA9PSAlc1xuIiwgI3ZhbDEsICN2YWwyKTsgICAg
ICAgIFwKLSAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSB3aGlsZSAoMCkK
LQotI2RlZmluZSBFWFBFQ1RfU1RSRVEodmFsMSwgdmFsMikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdHJjbXAoKHZh
bDEpLCAodmFsMikpICE9IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgZnByaW50ZihzdGRlcnIsICJDaGVjayBmYWlsZWQ6IHN0cmVxKCVzLCAlcylcbiIsICN2
YWwxLCAjdmFsMik7ICAgXAotICAgICAgZXhpdCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9
IHdoaWxlICgwKQotCi0vLyBDYWxsIHRoaXMgaW4gYSAuY2MgZmlsZSB3aGVyZSB5b3Ugd2lsbCBs
YXRlciBjYWxsIFJVTl9BTExfVEVTVFMgaW4gbWFpbigpLgotI2RlZmluZSBURVNUX0lOSVQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBz
dGF0aWMgc3RkOjp2ZWN0b3I8dm9pZCAoKikoKT4gZ190ZXN0bGlzdDsgIC8qIHRoZSB0ZXN0cyB0
byBydW4gKi8gICAgXAotICBzdGF0aWMgaW50IFJVTl9BTExfVEVTVFMoKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0ZDo6dmVjdG9yPHZvaWQgKCop
KCk+Ojpjb25zdF9pdGVyYXRvciBpdDsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZv
ciAoaXQgPSBnX3Rlc3RsaXN0LmJlZ2luKCk7IGl0ICE9IGdfdGVzdGxpc3QuZW5kKCk7ICsraXQp
IHsgICAgICAgXAotICAgICAgKCppdCkoKTsgICAvKiBUaGUgdGVzdCB3aWxsIGVycm9yLWV4aXQg
aWYgdGhlcmUncyBhIHByb2JsZW0uICovICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZwcmlu
dGYoc3RkZXJyLCAiXG5QYXNzZWQgJWQgdGVzdHNcblxuUEFTU1xuIiwgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihnX3Rlc3RsaXN0LnNpemUoKSkp
OyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0KLS8vIE5v
dGUgdGhhdCB0aGlzIG1hY3JvIHVzZXMgYSBGbGFnU2F2ZXIgdG8ga2VlcCB0ZXN0cyBpc29sYXRl
ZC4KLSNkZWZpbmUgVEVTVChhLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICBzdHJ1Y3QgVGVzdF8jI2EjI18jI2IgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgVGVzdF8jI2EjI18jI2IoKSB7IGdfdGVzdGxpc3QucHVzaF9iYWNrKCZSdW4p
OyB9ICAgIFwKLSAgICBzdGF0aWMgdm9pZCBSdW4oKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgRmxhZ1NhdmVyIGZzOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICBmcHJpbnRmKHN0ZGVyciwgIlJ1bm5pbmcgdGVzdCAlcy8lc1xu
IiwgI2EsICNiKTsgIFwKLSAgICAgIFJ1blRlc3QoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHZvaWQgUnVuVGVzdCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICBzdGF0aWMgVGVzdF8jI2EjI18jI2IgZ190ZXN0XyMj
YSMjXyMjYjsgICAgICAgICAgICAgICBcCi0gIHZvaWQgVGVzdF8jI2EjI18jI2I6OlJ1blRlc3Qo
KQotCi0vLyBUaGlzIGlzIGEgZHVtbXkgY2xhc3MgdGhhdCBlYXNlcyB0aGUgZ29vZ2xlLT5vcGVu
c291cmNlIHRyYW5zaXRpb24uCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1jbGFzcyBUZXN0IHt9Owot
fQotCi0vLyBDYWxsIHRoaXMgaW4gYSAuY2MgZmlsZSB3aGVyZSB5b3Ugd2lsbCBsYXRlciBjYWxs
IEVYUEVDVF9ERUFUSAotI2RlZmluZSBFWFBFQ1RfREVBVEhfSU5JVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gIHN0YXRpYyBib29sIGdfY2FsbGVkX2V4aXQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgc3RhdGljIHZvaWQgQ2FsbGVkRXhpdChpbnQpIHsgZ19jYWxs
ZWRfZXhpdCA9IHRydWU7IH0KLQotI2RlZmluZSBFWFBFQ1RfREVBVEgoZm4sIG1zZykgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIGdfY2FsbGVkX2V4aXQgPSBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIGdmbGFnc19leGl0ZnVuYyA9ICZDYWxsZWRFeGl0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZm47ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZ2ZsYWdzX2V4
aXRmdW5jID0gJmV4aXQ7ICAgIC8qIHNldCBiYWNrIHRvIGl0cyBkZWZhdWx0ICovIFwKLSAgICBp
ZiAoIWdfY2FsbGVkX2V4aXQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiRnVuY3Rpb24gZGlkbid0IGRpZSAo
JXMpOiAlc1xuIiwgbXNnLCAjZm4pOyAgICAgIFwKLSAgICAgIGV4aXQoMSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBHVEVTVF9IQVNfREVBVEhfVEVTVCAx
Ci0KLS8vIC0tIHBhdGggcm91dGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBUcmllcyB0byBjcmVhdGUgdGhlIGRpcmVj
dG9yeSBwYXRoIGFzIGEgdGVtcC1kaXIuICBJZiBpdCBmYWlscywKLS8vIGNoYW5nZXMgcGF0aCB0
byBzb21lIGRpcmVjdG9yeSBpdCAqY2FuKiBjcmVhdGUuCi0jaWYgZGVmaW5lZChfX01JTkdXMzJf
XykKLSNpbmNsdWRlIDxpby5oPgotaW5saW5lIHZvaWQgTWFrZVRtcGRpcihzdGQ6OnN0cmluZyog
cGF0aCkgewotICBpZiAoIXBhdGgtPmVtcHR5KCkpIHsKLQlwYXRoLT5hcHBlbmQoIi9nZmxhZ3Nf
dW5pdHRlc3RfdGVzdGRpciIpOwotCWludCBlcnIgPSBta2RpcihwYXRoLT5jX3N0cigpKTsKLQlp
ZiAoZXJyID09IDAgfHwgZXJybm8gPT0gRUVYSVNUKSByZXR1cm47Ci0gIH0KLSAgLy8gSSBoYWQg
dHJvdWJsZSBjcmVhdGluZyBhIGRpcmVjdG9yeSBpbiAvdG1wIGZyb20gbWluZ3cKLSAgKnBhdGgg
PSAiLi9nZmxhZ3NfdW5pdHRlc3QiOwotICBta2RpcihwYXRoLT5jX3N0cigpKTsKLX0KLSNlbGlm
IGRlZmluZWQoX01TQ19WRVIpCi0jaW5jbHVkZSA8ZGlyZWN0Lmg+Ci1pbmxpbmUgdm9pZCBNYWtl
VG1wZGlyKHN0ZDo6c3RyaW5nKiBwYXRoKSB7Ci0gIGlmICghcGF0aC0+ZW1wdHkoKSkgewotCWlu
dCBlcnIgPSBfbWtkaXIocGF0aC0+Y19zdHIoKSk7Ci0JaWYgKGVyciA9PSAwIHx8IGVycm5vID09
IEVFWElTVCkgcmV0dXJuOwotICB9Ci0gIGNoYXIgdG1wcGF0aF9idWZmZXJbMTAyNF07Ci0gIGlu
dCB0bXBwYXRoX2xlbiA9IEdldFRlbXBQYXRoQShzaXplb2YodG1wcGF0aF9idWZmZXIpLCB0bXBw
YXRoX2J1ZmZlcik7Ci0gIGFzc2VydCh0bXBwYXRoX2xlbiA+IDAgJiYgdG1wcGF0aF9sZW4gPCBz
aXplb2YodG1wcGF0aF9idWZmZXIpKTsKLSAgYXNzZXJ0KHRtcHBhdGhfYnVmZmVyW3RtcHBhdGhf
bGVuIC0gMV0gPT0gJ1xcJyk7ICAgLy8gQVBJIGd1YXJhbnRlZXMgaXQKLSAgKnBhdGggPSBzdGQ6
OnN0cmluZyh0bXBwYXRoX2J1ZmZlcikgKyAiZ2ZsYWdzX3VuaXR0ZXN0IjsKLSAgX21rZGlyKHBh
dGgtPmNfc3RyKCkpOwotfQotI2Vsc2UKLWlubGluZSB2b2lkIE1ha2VUbXBkaXIoc3RkOjpzdHJp
bmcqIHBhdGgpIHsKLSAgaWYgKCFwYXRoLT5lbXB0eSgpKSB7Ci0JaW50IGVyciA9IG1rZGlyKHBh
dGgtPmNfc3RyKCksIDA3NTUpOwotCWlmIChlcnIgPT0gMCB8fCBlcnJubyA9PSBFRVhJU1QpIHJl
dHVybjsKLSAgfQotICBta2RpcigiL3RtcC9nZmxhZ3NfdW5pdHRlc3QiLCAwNzU1KTsKLX0KLSNl
bmRpZgotCi0vLyAtLSBzdHJpbmcgcm91dGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotaW5saW5lIHZvaWQgSW50ZXJuYWxTdHJp
bmdQcmludGYoc3RkOjpzdHJpbmcqIG91dHB1dCwgY29uc3QgY2hhciogZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcCkgewotICBjaGFyIHNwYWNlWzEy
OF07ICAgIC8vIHRyeSBhIHNtYWxsIGJ1ZmZlciBhbmQgaG9wZSBpdCBmaXRzCi0KLSAgLy8gSXQn
cyBwb3NzaWJsZSBmb3IgbWV0aG9kcyB0aGF0IHVzZSBhIHZhX2xpc3QgdG8gaW52YWxpZGF0ZQot
ICAvLyB0aGUgZGF0YSBpbiBpdCB1cG9uIHVzZS4gIFRoZSBmaXggaXMgdG8gbWFrZSBhIGNvcHkK
LSAgLy8gb2YgdGhlIHN0cnVjdHVyZSBiZWZvcmUgdXNpbmcgaXQgYW5kIHVzZSB0aGF0IGNvcHkg
aW5zdGVhZC4KLSAgdmFfbGlzdCBiYWNrdXBfYXA7Ci0gIHZhX2NvcHkoYmFja3VwX2FwLCBhcCk7
Ci0gIGludCBieXRlc193cml0dGVuID0gdnNucHJpbnRmKHNwYWNlLCBzaXplb2Yoc3BhY2UpLCBm
b3JtYXQsIGJhY2t1cF9hcCk7Ci0gIHZhX2VuZChiYWNrdXBfYXApOwotCi0gIGlmICgoYnl0ZXNf
d3JpdHRlbiA+PSAwKSAmJiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc193cml0dGVuKSA8IHNp
emVvZihzcGFjZSkpKSB7Ci0gICAgb3V0cHV0LT5hcHBlbmQoc3BhY2UsIGJ5dGVzX3dyaXR0ZW4p
OwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIFJlcGVhdGVkbHkgaW5jcmVhc2UgYnVmZmVyIHNp
emUgdW50aWwgaXQgZml0cy4KLSAgaW50IGxlbmd0aCA9IHNpemVvZihzcGFjZSk7Ci0gIHdoaWxl
ICh0cnVlKSB7Ci0gICAgaWYgKGJ5dGVzX3dyaXR0ZW4gPCAwKSB7Ci0gICAgICAvLyBPbGRlciBz
bnByaW50ZigpIGJlaGF2aW9yLiA6LSggIEp1c3QgdHJ5IGRvdWJsaW5nIHRoZSBidWZmZXIgc2l6
ZQotICAgICAgbGVuZ3RoICo9IDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIFdlIG5lZWQgZXhh
Y3RseSAiYnl0ZXNfd3JpdHRlbisxIiBjaGFyYWN0ZXJzCi0gICAgICBsZW5ndGggPSBieXRlc193
cml0dGVuKzE7Ci0gICAgfQotICAgIGNoYXIqIGJ1ZiA9IG5ldyBjaGFyW2xlbmd0aF07Ci0KLSAg
ICAvLyBSZXN0b3JlIHRoZSB2YV9saXN0IGJlZm9yZSB3ZSB1c2UgaXQgYWdhaW4KLSAgICB2YV9j
b3B5KGJhY2t1cF9hcCwgYXApOwotICAgIGJ5dGVzX3dyaXR0ZW4gPSB2c25wcmludGYoYnVmLCBs
ZW5ndGgsIGZvcm1hdCwgYmFja3VwX2FwKTsKLSAgICB2YV9lbmQoYmFja3VwX2FwKTsKLQotICAg
IGlmICgoYnl0ZXNfd3JpdHRlbiA+PSAwKSAmJiAoYnl0ZXNfd3JpdHRlbiA8IGxlbmd0aCkpIHsK
LSAgICAgIG91dHB1dC0+YXBwZW5kKGJ1ZiwgYnl0ZXNfd3JpdHRlbik7Ci0gICAgICBkZWxldGVb
XSBidWY7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICAgIGRlbGV0ZVtdIGJ1ZjsKLSAgfQotfQot
Ci0vLyBDbGVhcnMgb3V0cHV0IGJlZm9yZSB3cml0aW5nIHRvIGl0LgotaW5saW5lIHZvaWQgU1N0
cmluZ1ByaW50ZihzdGQ6OnN0cmluZyogb3V0cHV0LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
ewotICB2YV9saXN0IGFwOwotICB2YV9zdGFydChhcCwgZm9ybWF0KTsKLSAgb3V0cHV0LT5jbGVh
cigpOwotICBJbnRlcm5hbFN0cmluZ1ByaW50ZihvdXRwdXQsIGZvcm1hdCwgYXApOwotICB2YV9l
bmQoYXApOwotfQotCi1pbmxpbmUgdm9pZCBTdHJpbmdBcHBlbmRGKHN0ZDo6c3RyaW5nKiBvdXRw
dXQsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0
KGFwLCBmb3JtYXQpOwotICBJbnRlcm5hbFN0cmluZ1ByaW50ZihvdXRwdXQsIGZvcm1hdCwgYXAp
OwotICB2YV9lbmQoYXApOwotfQotCi1pbmxpbmUgc3RkOjpzdHJpbmcgU3RyaW5nUHJpbnRmKGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKSB7Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0KGFwLCBm
b3JtYXQpOwotICBzdGQ6OnN0cmluZyBvdXRwdXQ7Ci0gIEludGVybmFsU3RyaW5nUHJpbnRmKCZv
dXRwdXQsIGZvcm1hdCwgYXApOwotICB2YV9lbmQoYXApOwotICByZXR1cm4gb3V0cHV0OwotfQot
Ci1pbmxpbmUgYm9vbCBTYWZlR2V0RW52KGNvbnN0IGNoYXIgKnZhcm5hbWUsIHN0ZDo6c3RyaW5n
ICZ2YWxzdHIpCi17Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAot
CWNoYXIgICp2YWw7Ci0Jc2l6ZV90IHN6OwotCWlmIChfZHVwZW52X3MoJnZhbCwgJnN6LCB2YXJu
YW1lKSAhPSAwIHx8ICF2YWwpIHJldHVybiBmYWxzZTsKLQl2YWxzdHIgPSB2YWw7Ci0JZnJlZSh2
YWwpOwotI2Vsc2UKLQljb25zdCBjaGFyICogY29uc3QgdmFsID0gZ2V0ZW52KHZhcm5hbWUpOwot
CWlmICghdmFsKSByZXR1cm4gZmFsc2U7Ci0JdmFsc3RyID0gdmFsOwotI2VuZGlmCi0JcmV0dXJu
IHRydWU7Ci19Ci0KLWlubGluZSBpbnQgU2FmZUZPcGVuKEZJTEUgKipmcCwgY29uc3QgY2hhciog
Zm5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCi17Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01T
Q19WRVIgPj0gMTQwMAotCXJldHVybiBmb3Blbl9zKGZwLCBmbmFtZSwgbW9kZSk7Ci0jZWxzZQot
CWFzc2VydChmcCAhPSBOVUxMKTsKLQkqZnAgPSBmb3BlbihmbmFtZSwgbW9kZSk7Ci0gICAgLy8g
ZXJybm8gb25seSBndWFyYW50ZWVkIHRvIGJlIHNldCBvbiBmYWlsdXJlCi0JcmV0dXJuICgoKmZw
ID09IE5VTEwpID8gZXJybm8gOiAwKTsKLSNlbmRpZgotfQotCi0KLX0gLy8gbmFtZXNwYWNlIEdG
TEFHU19OQU1FU1BBQ0UKLQotCi0jZW5kaWYgIC8vIEdGTEFHU19VVElMX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9z
cmMvc3JjL3dpbmRvd3NfcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy9zcmMvd2luZG93c19wb3J0LmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNWI3MTk0YzlhNDEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3Jj
L3dpbmRvd3NfcG9ydC5jYworKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLS8qIENvcHly
aWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKgotICogLS0tCi0g
KiBBdXRob3I6IENyYWlnIFNpbHZlcnN0ZWluCi0gKi8KLQotI2lmbmRlZiBfV0lOMzIKLSMgIGVy
cm9yIFlvdSBzaG91bGQgb25seSBiZSBpbmNsdWRpbmcgd2luZG93cy9wb3J0LmNjIGluIGEgd2lu
ZG93cyBlbnZpcm9ubWVudCEKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+ICAgIC8vIGZv
ciBzdHJsZW4oKSwgbWVtc2V0KCksIG1lbWNtcCgpCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5j
bHVkZSA8c3RkYXJnLmg+ICAgIC8vIGZvciB2YV9saXN0LCB2YV9zdGFydCwgdmFfZW5kCi0jaW5j
bHVkZSA8d2luZG93cy5oPgotCi0jaW5jbHVkZSAid2luZG93c19wb3J0LmgiCi0KLS8vIFRoZXNl
IGNhbGwgdGhlIHdpbmRvd3MgX3ZzbnByaW50ZiwgYnV0IGFsd2F5cyBOVUwtdGVybWluYXRlLgot
I2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAhZGVmaW5lZChfX01JTkdXNjRfXykgIC8qIG1p
bmd3IGFscmVhZHkgZGVmaW5lcyAqLwotI2lmICEoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19W
RVIgPj0gMTkwMCkgIC8qIG1zdmMgMjAxNSBhbHJlYWR5IGRlZmluZXMgKi8KLQotI2lmZGVmIF9N
U0NfVkVSCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDk5NikgLy8gaWdub3JlIF92c25wcmludGYgc2VjdXJpdHkgd2FybmluZwotI2VuZGlmCi1p
bnQgc2FmZV92c25wcmludGYoY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9y
bWF0LCB2YV9saXN0IGFwKSB7Ci0gIGlmIChzaXplID09IDApICAgICAgICAvLyBub3QgZXZlbiBy
b29tIGZvciBhIFwwPwotICAgIHJldHVybiAtMTsgICAgICAgICAgLy8gbm90IHdoYXQgQzk5IHNh
eXMgdG8gZG8sIGJ1dCB3aGF0IHdpbmRvd3MgZG9lcwotICBzdHJbc2l6ZS0xXSA9ICdcMCc7IAot
ICByZXR1cm4gX3ZzbnByaW50ZihzdHIsIHNpemUtMSwgZm9ybWF0LCBhcCk7Ci19Ci0jaWZkZWYg
X01TQ19WRVIKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1pbnQgc25wcmludGYo
Y2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHsKLSAgaW50
IHI7Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotICByID0gdnNucHJp
bnRmKHN0ciwgc2l6ZSwgZm9ybWF0LCBhcCk7Ci0gIHZhX2VuZChhcCk7Ci0gIHJldHVybiByOwot
fQotCi0jZW5kaWYgIC8qIGlmICEoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTkw
MCkgICovCi0jZW5kaWYgIC8qICNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmluZWQo
X19NSU5HVzY0X18pICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvc3JjL3dpbmRvd3NfcG9ydC5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy93
aW5kb3dzX3BvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0YjljOWMyY2Ew
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3NyYy93aW5kb3dzX3BvcnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDEyOSArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuCi0gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICoKLSAqIC0tLQotICogQXV0aG9yOiBDcmFpZyBTaWx2ZXJzdGVpbgotICoKLSAq
IFRoZXNlIGFyZSBzb21lIHBvcnRhYmlsaXR5IHR5cGVkZWZzIGFuZCBkZWZpbmVzIHRvIG1ha2Ug
aXQgYSBiaXQKLSAqIGVhc2llciB0byBjb21waWxlIHRoaXMgY29kZSB1bmRlciBWQysrLgotICoK
LSAqIFNldmVyYWwgb2YgdGhlc2UgYXJlIHRha2VuIGZyb20gZ2xpYjoKLSAqICAgIGh0dHA6Ly9k
ZXZlbG9wZXIuZ25vbWUub3JnL2RvYy9BUEkvZ2xpYi9nbGliLXdpbmRvd3MtY29tcGF0YWJpbGl0
eS1mdW5jdGlvbnMuaHRtbAotICovCi0KLSNpZm5kZWYgR0ZMQUdTX1dJTkRPV1NfUE9SVF9IXwot
I2RlZmluZSBHRkxBR1NfV0lORE9XU19QT1JUX0hfCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
Ly8gVGhpcyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIHRoZSB3aW5kb3dzLmggaXMgaW5jbHVkZWQu
Ci0vLyBJdCdzIG5lZWRlZCBmb3IgbXV0ZXguaCwgdG8gZ2l2ZSBhY2Nlc3MgdG8gdGhlIFRyeUxv
Y2sgbWV0aG9kLgotIyAgaWYgIWRlZmluZWQoX1dJTjMyX1dJTk5UKSAmJiAhKGRlZmluZWQoIF9f
TUlOR1czMl9fKSB8fCBkZWZpbmVkKF9fTUlOR1c2NF9fKSkKLSMgICAgZGVmaW5lIF9XSU4zMl9X
SU5OVCAweDA0MDAKLSMgIGVuZGlmCi0vLyBXZSBhbHdheXMgd2FudCBtaW5pbWFsIGluY2x1ZGVz
Ci0jaWZuZGVmIFdJTjMyX0xFQU5fQU5EX01FQU4KLSMgIGRlZmluZSBXSU4zMl9MRUFOX0FORF9N
RUFOCi0jZW5kaWYKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8ZGlyZWN0Lmg+ICAg
ICAgICAgIC8qIGZvciBta2RpciAqLwotI2luY2x1ZGUgPHN0ZGxpYi5oPiAgICAgICAgICAvKiBm
b3IgX3B1dGVudiwgZ2V0ZW52ICovCi0jaW5jbHVkZSA8c3RkaW8uaD4gICAgICAgICAgIC8qIG5l
ZWQgdGhpcyB0byBvdmVycmlkZSBzdGRpbydzIHNucHJpbnRmLCBhbHNvIGRlZmluZXMgX3VubGlu
ayB1c2VkIGJ5IHVuaXQgdGVzdHMgKi8KLSNpbmNsdWRlIDxzdGRhcmcuaD4gICAgICAgICAgLyog
dXRpbC5oIHVzZXMgdmFfY29weSAqLwotI2luY2x1ZGUgPHN0cmluZy5oPiAgICAgICAgICAvKiBm
b3IgX3N0cmljbXAgYW5kIF9zdHJkdXAgKi8KLQotLyogV2UgY2FuJ3QganVzdCB1c2UgX3ZzbnBy
aW50ZiBhbmQgX3NucHJpbnRmIGFzIGRyb3AtaW4tcmVwbGFjZW1lbnRzLAotICogYmVjYXVzZSB0
aGV5IGRvbid0IGFsd2F5cyBOVUwtdGVybWluYXRlLiA6LSggIFdlIGFsc28gY2FuJ3QgdXNlIHRo
ZQotICogbmFtZSB2c25wcmludGYsIHNpbmNlIHdpbmRvd3MgZGVmaW5lcyB0aGF0IChidXQgbm90
IHNucHJpbnRmICghKSkuCi0gKi8KLSNpZiAhZGVmaW5lZChfX01JTkdXMzJfXykgJiYgIWRlZmlu
ZWQoX19NSU5HVzY0X18pICAvKiBtaW5ndyBhbHJlYWR5IGRlZmluZXMgKi8KLSNpZiAhKGRlZmlu
ZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE5MDApICAvKiBtc3ZjIDIwMTUgYWxyZWFkeSBk
ZWZpbmVzICovCi1leHRlcm4gR0ZMQUdTX0RMTF9ERUNMIGludCBzbnByaW50ZihjaGFyICpzdHIs
IHNpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqZm9ybWF0LCAuLi4pOwotZXh0ZXJuIGludCBHRkxBR1NfRExMX0RFQ0wgc2FmZV92
c25wcmludGYoY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcCk7Ci0j
ZGVmaW5lIHZzbnByaW50ZihzdHIsIHNpemUsIGZvcm1hdCwgYXApICBzYWZlX3ZzbnByaW50Zihz
dHIsIHNpemUsIGZvcm1hdCwgYXApCi0jZGVmaW5lIHZhX2NvcHkoZHN0LCBzcmMpICAoZHN0KSA9
IChzcmMpCi0jZW5kaWYKLSNlbmRpZiAgLyogI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAmJiAh
ZGVmaW5lZChfX01JTkdXNjRfXykgKi8KLQotI2lmZGVmIF9NU0NfVkVSCi0jICBwcmFnbWEgd2Fy
bmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDk5NikgLy8gaWdub3JlIGdl
dGVudiBzZWN1cml0eSB3YXJuaW5nCi0jZW5kaWYKLWlubGluZSB2b2lkIHNldGVudihjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSwgaW50KSB7Ci0gIC8vIEluIHdpbmRvd3MsIGl0
J3MgaW1wb3NzaWJsZSB0byBzZXQgYSB2YXJpYWJsZSB0byB0aGUgZW1wdHkgc3RyaW5nLgotICAv
LyBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGl0IHRvICIwIiBhbmQgdGhlIE5VTC1pbmcgb3V0
IHRoZSBcMC4KLSAgLy8gVGhhdCBpcywgd2UgcHV0ZW52KCJGT089MCIpIGFuZCB0aGVuIGZpbmQg
b3V0IHdoZXJlIGluIG1lbW9yeSB0aGUKLSAgLy8gcHV0ZW52IHdyb3RlICJGT089MCIsIGFuZCBj
aGFuZ2UgaXQgaW4tcGxhY2UgdG8gIkZPTz1cMCIuCi0gIC8vIGMuZi4gaHR0cDovL3N2bi5hcGFj
aGUub3JnL3ZpZXd2Yy9zdGRjeHgvdHJ1bmsvdGVzdHMvc3JjL2Vudmlyb24uY3BwP3IxPTYxMTQ1
MSZyMj02Mzc1MDgmcGF0aHJldj02Mzc1MDgKLSAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtG
YWtlWmVybyA9ICIwIjsKLSAgaWYgKCp2YWx1ZSA9PSAnXDAnKQotICAgIHZhbHVlID0ga0Zha2Va
ZXJvOwotICAvLyBBcHBhcmVudGx5IHRoZSBzZW1hbnRpY3Mgb2YgcHV0ZW52KCkgaXMgdGhhdCB0
aGUgaW5wdXQKLSAgLy8gbXVzdCBsaXZlIGZvcmV2ZXIsIHNvIHdlIGxlYWsgbWVtb3J5IGhlcmUu
IDotKAotICBjb25zdCBzaXplX3QgbmFtZXZhbF9sZW4gPSBzdHJsZW4obmFtZSkgKyAxICsgc3Ry
bGVuKHZhbHVlKSArIDE7Ci0gIGNoYXIqIG5hbWV2YWwgPSByZWludGVycHJldF9jYXN0PGNoYXIq
PihtYWxsb2MobmFtZXZhbF9sZW4pKTsKLSAgc25wcmludGYobmFtZXZhbCwgbmFtZXZhbF9sZW4s
ICIlcz0lcyIsIG5hbWUsIHZhbHVlKTsKLSAgX3B1dGVudihuYW1ldmFsKTsKLSAgaWYgKHZhbHVl
ID09IGtGYWtlWmVybykgewotICAgIG5hbWV2YWxbbmFtZXZhbF9sZW4gLSAyXSA9ICdcMCc7ICAg
Ly8gd29ya3Mgd2hlbiBwdXRlbnYoKSBtYWtlcyBubyBjb3B5Ci0gICAgaWYgKCpnZXRlbnYobmFt
ZSkgIT0gJ1wwJykKLSAgICAgICpnZXRlbnYobmFtZSkgPSAnXDAnOyAgICAgICAgICAgIC8vIHdv
cmtzIHdoZW4gcHV0ZW52KCkgY29waWVzIG5hbWV2YWwKLSAgfQotfQotI2lmZGVmIF9NU0NfVkVS
Ci0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2RlZmluZSBzdHJjYXNlY21wIF9z
dHJpY21wCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNDAwCi0jZGVm
aW5lIHN0cmR1cCAgIF9zdHJkdXAKLSNkZWZpbmUgdW5saW5rICAgX3VubGluawotI2VuZGlmCi0K
LSNkZWZpbmUgUFJJZDMyICAiZCIKLSNkZWZpbmUgUFJJdTMyICAidSIKLSNkZWZpbmUgUFJJZDY0
ICAiSTY0ZCIKLSNkZWZpbmUgUFJJdTY0ICAiSTY0dSIKLQotI2lmICFkZWZpbmVkKF9fTUlOR1cz
Ml9fKSAmJiAhZGVmaW5lZChfX01JTkdXNjRfXykKLSNkZWZpbmUgc3RydG9xICAgX3N0cnRvaTY0
Ci0jZGVmaW5lIHN0cnRvdXEgIF9zdHJ0b3VpNjQKLSNkZWZpbmUgc3RydG9sbCAgX3N0cnRvaTY0
Ci0jZGVmaW5lIHN0cnRvdWxsIF9zdHJ0b3VpNjQKLSNkZWZpbmUgYXRvbGwgICAgX2F0b2k2NAot
I2VuZGlmCi0KLSNpZm5kZWYgUEFUSF9NQVgKLSNkZWZpbmUgUEFUSF9NQVggMTAyNAotI2VuZGlm
Ci0KLSNlbmRpZiAgLyogR0ZMQUdTX1dJTkRPV1NfUE9SVF9IXyAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rl
c3QvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzdiNTgyZmU2OThlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvQ01h
a2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotIyMgZ2ZsYWdzIHRl
c3RzCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBvdXRwdXQgZGlyZWN0b3JpZXMKLXNldCAo
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke1BST0pFQ1RfQklOQVJZX0RJUn0vYmlu
IikKLXNldCAoQ01BS0VfTElCUkFSWV9PVVRQVVRfRElSRUNUT1JZICIke1BST0pFQ1RfQklOQVJZ
X0RJUn0vbGliIikKLXNldCAoQ01BS0VfQVJDSElWRV9PVVRQVVRfRElSRUNUT1JZICIke1BST0pF
Q1RfQklOQVJZX0RJUn0vbGliIikKLQotIyBzZXQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGVzdCBj
b21tYW5kcwotc2V0IChHRkxBR1NfRkxBR0ZJTEVTX0RJUiAiJHtDTUFLRV9DVVJSRU5UX1NPVVJD
RV9ESVJ9IikKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGNvbW1vbiBpbmNsdWRlIGRpcmVj
dG9yaWVzIGFuZCBsaW5rIGxpYnJhcmllcwotaW5jbHVkZV9kaXJlY3RvcmllcyAoIiR7Q01BS0Vf
Q1VSUkVOVF9TT1VSQ0VfRElSfSIpCi1pbmNsdWRlX2RpcmVjdG9yaWVzICgiJHtnZmxhZ3NfU09V
UkNFX0RJUn0vc3JjIikKLWluY2x1ZGVfZGlyZWN0b3JpZXMgKCIke2dmbGFnc19CSU5BUllfRElS
fS9pbmNsdWRlIikKLWluY2x1ZGVfZGlyZWN0b3JpZXMgKCIke2dmbGFnc19CSU5BUllfRElSfS9p
bmNsdWRlL2dmbGFncyIpCi0KLWlmIChCVUlMRF9TSEFSRURfTElCUykKLSAgc2V0ICh0eXBlIHNo
YXJlZCkKLWVsc2UgKCkKLSAgc2V0ICh0eXBlIHN0YXRpYykKLWVuZGlmICgpCi1pZiAoQlVJTERf
Z2ZsYWdzX0xJQikKLSAgbGlua19saWJyYXJpZXMgKGdmbGFncy0ke3R5cGV9KQotZWxzZSAoKQot
ICBsaW5rX2xpYnJhcmllcyAoZ2ZsYWdzX25vdGhyZWFkcy0ke3R5cGV9KQotZW5kaWYgKCkKLQot
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNUUklQX0ZMQUdfSEVMUAotYWRkX2V4ZWN1dGFibGUg
KGdmbGFnc19zdHJpcF9mbGFnc190ZXN0IGdmbGFnc19zdHJpcF9mbGFnc190ZXN0LmNjKQotIyBN
YWtlIHN1cmUgdGhlIC0taGVscCBvdXRwdXQgZG9lc24ndCBwcmludCB0aGUgc3RyaXBwZWQgdGV4
dC4KLWFkZF9nZmxhZ3NfdGVzdCAoc3RyaXBfZmxhZ3NfaGVscCAxICIiICJUaGlzIHRleHQgc2hv
dWxkIGJlIHN0cmlwcGVkIG91dCIgZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QgLS1oZWxwKQotIyBN
YWtlIHN1cmUgdGhlIHN0cmlwcGVkIHRleHQgaXNuJ3QgaW4gdGhlIGJpbmFyeSBhdCBhbGwuCi1h
ZGRfdGVzdCAoCi0gIE5BTUUgc3RyaXBfZmxhZ3NfYmluYXJ5Ci0gIENPTU1BTkQgIiR7Q01BS0Vf
Q09NTUFORH0iICItREJJTkFSWT0kPFRBUkdFVF9GSUxFOmdmbGFnc19zdHJpcF9mbGFnc190ZXN0
PiIKLSAgICAgICAgICAtUCAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2dmbGFnc19zdHJp
cF9mbGFnc190ZXN0LmNtYWtlIgotKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdW5pdCB0
ZXN0cwotY29uZmlndXJlX2ZpbGUgKGdmbGFnc191bml0dGVzdC5jYyBnZmxhZ3NfdW5pdHRlc3Qt
bWFpbi5jYyBDT1BZT05MWSkKLWNvbmZpZ3VyZV9maWxlIChnZmxhZ3NfdW5pdHRlc3QuY2MgZ2Zs
YWdzX3VuaXR0ZXN0X21haW4uY2MgQ09QWU9OTFkpCi0KLWFkZF9leGVjdXRhYmxlIChnZmxhZ3Nf
dW5pdHRlc3QgICAgICBnZmxhZ3NfdW5pdHRlc3QuY2MpCi1hZGRfZXhlY3V0YWJsZSAoZ2ZsYWdz
X3VuaXR0ZXN0LW1haW4gZ2ZsYWdzX3VuaXR0ZXN0LW1haW4uY2MpCi1hZGRfZXhlY3V0YWJsZSAo
Z2ZsYWdzX3VuaXR0ZXN0X21haW4gZ2ZsYWdzX3VuaXR0ZXN0X21haW4uY2MpCi0KLWlmIChPU19X
SU5ET1dTKQotICBzZXQgKFNMQVNIICJcXFxcIikKLWVsc2UgKCkKLSAgc2V0IChTTEFTSCAiLyIp
Ci1lbmRpZiAoKQotCi0jIEZpcnN0LCBqdXN0IG1ha2Ugc3VyZSB0aGUgIGdmbGFnc191bml0dGVz
dCAgd29ya3MgYXMtaXMKLWFkZF9nZmxhZ3NfdGVzdCh1bml0dGVzdCAwICIiICIiIGdmbGFnc191
bml0dGVzdCkKLQotIyAtLWhlbHAgc2hvdWxkIHNob3cgYWxsIGZsYWdzLCBpbmNsdWRpbmcgZmxh
Z3MgZnJvbSBnZmxhZ3NfcmVwb3J0aW5nCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscC1yZXBvcnRpbmcg
MSAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0aW5nLmNjOiIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1o
ZWxwKQotCi0jIE1ha2Ugc3VyZSB0aGF0IC0taGVscCBwcmludHMgZXZlbiB2ZXJ5IGxvbmcgaGVs
cHN0cmluZ3MuCi1hZGRfZ2ZsYWdzX3Rlc3QobG9uZy1oZWxwc3RyaW5nIDEgImVuZCBvZiBhIGxv
bmcgaGVscHN0cmluZyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxwKQotCi0jIE1ha2Ugc3Vy
ZSAtLWhlbHAgcmVmbGVjdHMgZmxhZyBjaGFuZ2VzIG1hZGUgYmVmb3JlIGZsYWctcGFyc2luZwot
YWRkX2dmbGFnc190ZXN0KGNoYW5nZWRfYm9vbDEgMSAiLWNoYW5nZWRfYm9vbDEgKGNoYW5nZWQp
IHR5cGU6IGJvb2wgZGVmYXVsdDogdHJ1ZSIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxwKQot
YWRkX2dmbGFnc190ZXN0KGNoYW5nZWRfYm9vbDIgMSAiLWNoYW5nZWRfYm9vbDIgKGNoYW5nZWQp
IHR5cGU6IGJvb2wgZGVmYXVsdDogZmFsc2UgY3VycmVudGx5OiB0cnVlIiAiIiAgZ2ZsYWdzX3Vu
aXR0ZXN0ICAtLWhlbHApCi0jIEFuZCBvbiB0aGUgY29tbWFuZC1saW5lLCB0b28KLWFkZF9nZmxh
Z3NfdGVzdChjaGFuZ2VhYmxlX3N0cmluZ192YXIgMSAiLWNoYW5nZWFibGVfc3RyaW5nX3ZhciAo
KSB0eXBlOiBzdHJpbmcgZGVmYXVsdDogXCIxXCIgY3VycmVudGx5OiBcIjJcIiIgIiIgIGdmbGFn
c191bml0dGVzdCAgLS1jaGFuZ2VhYmxlX3N0cmluZ192YXIgMiAtLWhlbHApCi0KLSMgLS1ub2hl
bHAgYW5kIC0taGVscD1mYWxzZSBzaG91bGQgYmUgYXMgaWYgd2UgZGlkbid0IHNheSBhbnl0aGlu
ZwotYWRkX2dmbGFnc190ZXN0KG5vaGVscCAgICAgMCAiUEFTUyIgIiIgIGdmbGFnc191bml0dGVz
dCAgLS1ub2hlbHApCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscD1mYWxzZSAwICJQQVNTIiAiIiAgZ2Zs
YWdzX3VuaXR0ZXN0ICAtLWhlbHA9ZmFsc2UpCi0KLSMgLS1oZWxwZnVsbCBpcyB0aGUgc2FtZSBh
cyBoZWxwCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscGZ1bGwgMSAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0
aW5nLmNjOiIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxwZnVsbCkKLQotIyAtLWhlbHBzaG9y
dCBzaG91bGQgc2hvdyBvbmx5IGZsYWdzIGZyb20gdGhlICBnZmxhZ3NfdW5pdHRlc3QgIGl0c2Vs
ZgotYWRkX2dmbGFnc190ZXN0KGhlbHBzaG9ydCAxICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5j
YzoiICIke1NMQVNIfWdmbGFnc19yZXBvcnRpbmcuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWhl
bHBzaG9ydCkKLQotIyAtLWhlbHBzaG9ydCBzaG91bGQgc2hvdyB0aGUgdGxkZmxhZyB3ZSBjcmVh
dGVkIGluIHRoZSAgZ2ZsYWdzX3VuaXR0ZXN0ICBkaXIKLWFkZF9nZmxhZ3NfdGVzdChoZWxwc2hv
cnQtdGxkZmxhZzEgMSAidGxkZmxhZzEiICIke1NMQVNIfWdvb2dsZS5jYzoiICBnZmxhZ3NfdW5p
dHRlc3QgIC0taGVscHNob3J0KQotYWRkX2dmbGFnc190ZXN0KGhlbHBzaG9ydC10bGRmbGFnMiAx
ICJ0bGRmbGFnMiIgIiR7U0xBU0h9Z29vZ2xlLmNjOiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxw
c2hvcnQpCi0KLSMgLS1oZWxwc2hvcnQgc2hvdWxkIHdvcmsgaWYgdGhlIG1haW4gc291cmNlIGZp
bGUgaXMgc3VmZml4ZWQgd2l0aCBbXy1dbWFpbgotYWRkX2dmbGFnc190ZXN0KGhlbHBzaG9ydC1t
YWluIDEgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LW1haW4uY2M6IiAiJHtTTEFTSH1nZmxhZ3Nf
cmVwb3J0aW5nLmNjOiIgZ2ZsYWdzX3VuaXR0ZXN0LW1haW4gLS1oZWxwc2hvcnQpCi1hZGRfZ2Zs
YWdzX3Rlc3QoaGVscHNob3J0X21haW4gMSAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3RfbWFpbi5j
YzoiICIke1NMQVNIfWdmbGFnc19yZXBvcnRpbmcuY2M6IiBnZmxhZ3NfdW5pdHRlc3RfbWFpbiAt
LWhlbHBzaG9ydCkKLQotIyAtLWhlbHBvbiBuZWVkcyBhbiBhcmd1bWVudAotYWRkX2dmbGFnc190
ZXN0KGhlbHBvbiAxICInLS1oZWxwb24nIGlzIG1pc3NpbmcgaXRzIGFyZ3VtZW50OyBmbGFnIGRl
c2NyaXB0aW9uOiBzaG93IGhlbHAgb24iICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscG9uKQot
IyAtLWhlbHBvbiBhcmd1bWVudCBpbmRpY2F0ZXMgd2hhdCBmaWxlIHdlJ2xsIHNob3cgYXJncyBm
cm9tCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscG9uPWdmbGFncyAxICIke1NMQVNIfWdmbGFncy5jYzoi
ICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscG9u
PWdmbGFncykKLSMgYW5vdGhlciB3YXkgb2Ygc3BlY2lmeWluZyB0aGUgYXJndW1lbnQKLWFkZF9n
ZmxhZ3NfdGVzdChoZWxwb25fZ2ZsYWdzIDEgIiR7U0xBU0h9Z2ZsYWdzLmNjOiIgIiR7U0xBU0h9
Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxwb24gZ2ZsYWdzKQot
IyB0ZXN0IGFub3RoZXIgYXJndW1lbnQKLWFkZF9nZmxhZ3NfdGVzdChoZWxwb249Z2ZsYWdzX3Vu
aXR0ZXN0IDEgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIiR7U0xBU0h9Z2ZsYWdzLmNj
OiIgIGdmbGFnc191bml0dGVzdCAgLS1oZWxwb249Z2ZsYWdzX3VuaXR0ZXN0KQotCi0jIGhlbHBt
YXRjaCBpcyBsaWtlIGhlbHBvbiBidXQgdGFrZXMgc3Vic3RyaW5ncwotYWRkX2dmbGFnc190ZXN0
KGhlbHBtYXRjaF9yZXBvcnRpbmcgMSAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0aW5nLmNjOiIgIiR7
U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVzdCAgLWhlbHBtYXRjaCBy
ZXBvcnRpbmcpCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscG1hdGNoPXVuaXR0ZXN0ICAxICIke1NMQVNI
fWdmbGFnc191bml0dGVzdC5jYzoiICIke1NMQVNIfWdmbGFncy5jYzoiICBnZmxhZ3NfdW5pdHRl
c3QgIC1oZWxwbWF0Y2g9dW5pdHRlc3QpCi0KLSMgaWYgbm8gZmxhZ3MgYXJlIGZvdW5kIHdpdGgg
aGVscG1hdGNoIG9yIGhlbHBvbiwgc3VnZ2VzdCAtLWhlbHAKLWFkZF9nZmxhZ3NfdGVzdChoZWxw
bWF0Y2g9bm9zdWNoc3Vic3RyaW5nIDEgIk5vIG1vZHVsZXMgbWF0Y2hlZCIgIiR7U0xBU0h9Z2Zs
YWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVzdCAgLWhlbHBtYXRjaD1ub3N1Y2hzdWJz
dHJpbmcpCi1hZGRfZ2ZsYWdzX3Rlc3QoaGVscG9uPW5vc3VjaG1vZHVsZSAgICAgICAxICJObyBt
b2R1bGVzIG1hdGNoZWQiICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5p
dHRlc3QgIC1oZWxwb249bm9zdWNobW9kdWxlKQotCi0jIGhlbHBwYWNrYWdlIHNob3dzIGFsbCB0
aGUgZmxhZ3MgaW4gdGhlIHNhbWUgZGlyIGFzIHRoaXMgdW5pdHRlc3QKLSMgLS1oZWxwIHNob3Vs
ZCBzaG93IGFsbCBmbGFncywgaW5jbHVkaW5nIGZsYWdzIGZyb20gZ29vZ2xlLmNjCi1hZGRfZ2Zs
YWdzX3Rlc3QoaGVscHBhY2thZ2UgMSAiJHtTTEFTSH1nZmxhZ3NfcmVwb3J0aW5nLmNjOiIgIiIg
IGdmbGFnc191bml0dGVzdCAgLS1oZWxwcGFja2FnZSkKLQotIyB4bWwhCi1hZGRfZ2ZsYWdzX3Rl
c3QoaGVscHhtbCAxICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzwvZmlsZT4iICIke1NMQVNI
fWdmbGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0taGVscHhtbCkKLQotIyBq
dXN0IHByaW50IHRoZSB2ZXJzaW9uIGluZm8gYW5kIGV4aXQKLWFkZF9nZmxhZ3NfdGVzdCh2ZXJz
aW9uLTEgMCAiZ2ZsYWdzX3VuaXR0ZXN0IiAgICAgICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5j
YzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0tdmVyc2lvbikKLWFkZF9nZmxhZ3NfdGVzdCh2ZXJzaW9u
LTIgMCAidmVyc2lvbiB0ZXN0X3ZlcnNpb24iICIke1NMQVNIfWdmbGFnc191bml0dGVzdC5jYzoi
ICBnZmxhZ3NfdW5pdHRlc3QgIC0tdmVyc2lvbikKLQotIyAtLXVuZGVmb2sgaXMgYSBmdW4gZmxh
Zy4uLgotYWRkX2dmbGFnc190ZXN0KHVuZGVmb2stMSAxICJ1bmtub3duIGNvbW1hbmQgbGluZSBm
bGFnICdmb28nIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXVuZGVmb2s9IC0tZm9vIC0tdW51c2Vk
X2Jvb2wpCi1hZGRfZ2ZsYWdzX3Rlc3QodW5kZWZvay0yIDAgIlBBU1MiICIiICBnZmxhZ3NfdW5p
dHRlc3QgIC0tdW5kZWZvaz1mb28gLS1mb28gLS11bnVzZWRfYm9vbCkKLSMgSWYgeW91IHNheSBm
b28gaXMgb2sgdG8gYmUgdW5kZWZpbmVkLCB3ZSdsbCBhY2NlcHQgLS1ub2ZvbyBhcyB3ZWxsCi1h
ZGRfZ2ZsYWdzX3Rlc3QodW5kZWZvay0zIDAgIlBBU1MiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0t
dW5kZWZvaz1mb28gLS1ub2ZvbyAtLXVudXNlZF9ib29sKQotIyBJdCdzIG9rIGlmIHRoZSBmb28g
aXMgaW4gdGhlIG1pZGRsZQotYWRkX2dmbGFnc190ZXN0KHVuZGVmb2stNCAwICJQQVNTIiAiIiAg
Z2ZsYWdzX3VuaXR0ZXN0ICAtLXVuZGVmb2s9ZmVlLGZpLGZvbyxmdW0gLS1mb28gLS11bnVzZWRf
Ym9vbCkKLSMgQnV0IHRoZSBzcGVsbGluZyBoYXMgdG8gYmUganVzdCByaWdodC4uLgotYWRkX2dm
bGFnc190ZXN0KHVuZGVmb2stNSAxICJ1bmtub3duIGNvbW1hbmQgbGluZSBmbGFnICdmb28nIiAi
IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXVuZGVmb2s9Zm8gLS1mb28gLS11bnVzZWRfYm9vbCkKLWFk
ZF9nZmxhZ3NfdGVzdCh1bmRlZm9rLTYgMSAidW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyAnZm9v
JyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS11bmRlZm9rPWZvb3QgLS1mb28gLS11bnVzZWRfYm9v
bCkKLQotIyBTZWUgaWYgd2UgY2FuIHN1Y2Nlc3NmdWxseSBsb2FkIG91ciBmbGFncyBmcm9tIHRo
ZSBmbGFnZmlsZQotYWRkX2dmbGFnc190ZXN0KGZsYWdmaWxlLjEgMCAiZ2ZsYWdzX3VuaXR0ZXN0
IiAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3VuaXR0ZXN0ICAiLS1mbGFn
ZmlsZT1mbGFnZmlsZS4xIikKLWFkZF9nZmxhZ3NfdGVzdChmbGFnZmlsZS4yIDAgIlBBU1MiICIi
ICBnZmxhZ3NfdW5pdHRlc3QgICItLWZsYWdmaWxlPWZsYWdmaWxlLjIiKQotYWRkX2dmbGFnc190
ZXN0KGZsYWdmaWxlLjMgMCAiUEFTUyIgIiIgIGdmbGFnc191bml0dGVzdCAgIi0tZmxhZ2ZpbGU9
ZmxhZ2ZpbGUuMyIpCi0KLSMgQWxzbyB0cnkgdG8gbG9hZCBmbGFncyBmcm9tIHRoZSBlbnZpcm9u
bWVudAotYWRkX2dmbGFnc190ZXN0KGZyb21lbnY9dmVyc2lvbiAgICAgIDAgImdmbGFnc191bml0
dGVzdCIgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVzdCAgLS1m
cm9tZW52PXZlcnNpb24pCi1hZGRfZ2ZsYWdzX3Rlc3QodHJ5ZnJvbWVudj12ZXJzaW9uICAgMCAi
Z2ZsYWdzX3VuaXR0ZXN0IiAiJHtTTEFTSH1nZmxhZ3NfdW5pdHRlc3QuY2M6IiAgZ2ZsYWdzX3Vu
aXR0ZXN0ICAtLXRyeWZyb21lbnY9dmVyc2lvbikKLWFkZF9nZmxhZ3NfdGVzdChmcm9tZW52PWhl
bHAgICAgICAgICAwICJQQVNTIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLWZyb21lbnY9aGVscCkK
LWFkZF9nZmxhZ3NfdGVzdCh0cnlmcm9tZW52PWhlbHAgICAgICAwICJQQVNTIiAiIiAgZ2ZsYWdz
X3VuaXR0ZXN0ICAtLXRyeWZyb21lbnY9aGVscCkKLWFkZF9nZmxhZ3NfdGVzdChmcm9tZW52PWhl
bHBmdWxsICAgICAxICJoZWxwZnVsbCBub3QgZm91bmQgaW4gZW52aXJvbm1lbnQiICIiICBnZmxh
Z3NfdW5pdHRlc3QgIC0tZnJvbWVudj1oZWxwZnVsbCkKLWFkZF9nZmxhZ3NfdGVzdCh0cnlmcm9t
ZW52PWhlbHBmdWxsICAwICJQQVNTIiAiIiAgZ2ZsYWdzX3VuaXR0ZXN0ICAtLXRyeWZyb21lbnY9
aGVscGZ1bGwpCi1hZGRfZ2ZsYWdzX3Rlc3QodHJ5ZnJvbWVudj11bmRlZm9rICAgMCAiUEFTUyIg
IiIgIGdmbGFnc191bml0dGVzdCAgLS10cnlmcm9tZW52PXVuZGVmb2sgLS1mb28pCi1hZGRfZ2Zs
YWdzX3Rlc3QodHJ5ZnJvbWVudj13ZWlyZG8gICAgMSAidW5rbm93biBjb21tYW5kIGxpbmUgZmxh
ZyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS10cnlmcm9tZW52PXdlaXJkbykKLWFkZF9nZmxhZ3Nf
dGVzdCh0cnlmcm9tZW52LW11bHRpcGxlICAwICJnZmxhZ3NfdW5pdHRlc3QiICIke1NMQVNIfWdm
bGFnc191bml0dGVzdC5jYzoiICBnZmxhZ3NfdW5pdHRlc3QgIC0tdHJ5ZnJvbWVudj10ZXN0X2Jv
b2wsdmVyc2lvbix1bnVzZWRfYm9vbCkKLWFkZF9nZmxhZ3NfdGVzdChmcm9tZW52PXRlc3RfYm9v
bCAgICAxICJub3QgZm91bmQgaW4gZW52aXJvbm1lbnQiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0t
ZnJvbWVudj10ZXN0X2Jvb2wpCi1hZGRfZ2ZsYWdzX3Rlc3QoZnJvbWVudj10ZXN0X2Jvb2wtb2sg
MSAidW5rbm93biBjb21tYW5kIGxpbmUgZmxhZyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS1mcm9t
ZW52PXRlc3RfYm9vbCxvaykKLSMgSGVyZSwgdGhlIC0tdmVyc2lvbiBvdmVycmlkZXMgdGhlIGZy
b21lbnYKLWFkZF9nZmxhZ3NfdGVzdCh2ZXJzaW9uLW92ZXJyaWRlcy1mcm9tZW52IDAgImdmbGFn
c191bml0dGVzdCIgIiR7U0xBU0h9Z2ZsYWdzX3VuaXR0ZXN0LmNjOiIgIGdmbGFnc191bml0dGVz
dCAgLS1mcm9tZW52PXRlc3RfYm9vbCx2ZXJzaW9uLG9rKQotCi0jIE1ha2Ugc3VyZSAtLSBieSBp
dHNlbGYgc3RvcHMgYXJndiBwcm9jZXNzaW5nCi1hZGRfZ2ZsYWdzX3Rlc3QoZGFzaGRhc2ggMCAi
UEFTUyIgIiIgIGdmbGFnc191bml0dGVzdCAgLS0gLS1oZWxwKQotCi0jIEFuZCB3ZSBzaG91bGQg
ZGllIGlmIHRoZSBmbGFnIHZhbHVlIGRvZXNuJ3QgcGFzcyB0aGUgdmFsaWRhdG9yCi1hZGRfZ2Zs
YWdzX3Rlc3QoYWx3YXlzX2ZhaWwgMSAiRVJST1I6IGZhaWxlZCB2YWxpZGF0aW9uIG9mIG5ldyB2
YWx1ZSAndHJ1ZScgZm9yIGZsYWcgJ2Fsd2F5c19mYWlsJyIgIiIgIGdmbGFnc191bml0dGVzdCAg
LS1hbHdheXNfZmFpbCkKLQotIyBBbmQgaWYgbG9ja2luZyBpbiB2YWxpZGF0b3JzIGZhaWxzCi0j
IFRPRE8oYW5kcmVhcyk6IFdvcmtlZCBvbiBXaW5kb3dzIDcgUmVsZWFzZSBjb25maWd1cmF0aW9u
LCBidXQgY2F1c2VzCi0jICAgICAgICAgICAgICAgIGRlYnVnZ2VyIGFib3J0KCkgaW50ZXJ2ZW50
aW9uIGluIGNhc2Ugb2YgRGVidWcgY29uZmlndXJhdGlvbi4KLSNhZGRfZ2ZsYWdzX3Rlc3QoZGVh
ZGxvY2tfaWZfY2FudF9sb2NrIDAgIlBBU1MiICIiICBnZmxhZ3NfdW5pdHRlc3QgIC0tZGVhZGxv
Y2tfaWZfY2FudF9sb2NrKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdXNlIGdmbGFnc19k
ZWNsYXJlLmgKLWFkZF9leGVjdXRhYmxlIChnZmxhZ3NfZGVjbGFyZV90ZXN0IGdmbGFnc19kZWNs
YXJlX3Rlc3QuY2MgZ2ZsYWdzX2RlY2xhcmVfZmxhZ3MuY2MpCi0KLWFkZF90ZXN0KE5BTUUgZ2Zs
YWdzX2RlY2xhcmUgQ09NTUFORCBnZmxhZ3NfZGVjbGFyZV90ZXN0IC0tbWVzc2FnZSAiSGVsbG8g
Z2ZsYWdzISIpCi1zZXRfdGVzdHNfcHJvcGVydGllcyhnZmxhZ3NfZGVjbGFyZSBQUk9QRVJUSUVT
IFBBU1NfUkVHVUxBUl9FWFBSRVNTSU9OICJIZWxsbyBnZmxhZ3MhIikKLQotIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0jIGNvbmZpZ3VyZSBQeXRob24gc2NyaXB0IHdoaWNoIGNvbmZpZ3VyZXMgYW5k
IGJ1aWxkcyBhIHRlc3QgcHJvamVjdAotaWYgKEJVSUxEX05DX1RFU1RTIE9SIEJVSUxEX0NPTkZJ
R19URVNUUykKLSAgZmluZF9wYWNrYWdlIChQeXRob25JbnRlcnApCi0gIGlmIChOT1QgUFlUSE9O
X0VYRUNVVEFCTEUpCi0gICAgbWVzc2FnZSAoRkFUQUxfRVJST1IgIk5vIFB5dGhvbiBpbnN0YWxs
YXRpb24gZm91bmQhIEl0IGlzIHJlcXVpcmVkIGJ5IHRoZSAobmVnYXRpdmUpIGNvbXBpbGF0aW9u
IHRlc3RzLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIEVpdGhlciBpbnN0YWxsIFB5dGhv
biBvciBzZXQgQlVJTERfTkNfVEVTVFMgYW5kIEJVSUxEX0NPTkZJR19URVNUUyB0byBGQUxTRS4i
KQotICBlbmRpZiAoKQotICBzZXQgKFRNUERJUiAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L1Rlc3Rp
bmcvVGVtcG9yYXJ5IikKLSAgY29uZmlndXJlX2ZpbGUgKGdmbGFnc19idWlsZC5weS5pbiAiJHtD
TUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L2J1aWxkLnB5IiBAT05MWSkKLSAgZnVuY3Rp
b24gKGFkZF9nZmxhZ3NfYnVpbGRfdGVzdCBuYW1lIHNyY2RpciBleHBlY3RfZmFpbCkKLSAgICBz
ZXQgKHNyY2RpciAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9LyR7c3JjZGlyfSIpCi0gICAg
YWRkX3Rlc3QgKAotICAgICAgTkFNRSAgICAiJHtuYW1lfSIKLSAgICAgIENPTU1BTkQgIiR7UFlU
SE9OX0VYRUNVVEFCTEV9IiAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L2J1aWxk
LnB5IiAKLSAgICAgICAgICAgICAgICAgICAgJHtuYW1lfSAke3NyY2Rpcn0gJHtleHBlY3RfZmFp
bH0KLSAgICApCi0gIGVuZGZ1bmN0aW9uICgpCi1lbmRpZiAoKQotCi0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSMgbmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdHMKLW9wdGlvbiAoQlVJTERfTkNfVEVT
VFMgIlJlcXVlc3QgYWRkaXRpb24gb2YgbmVnYXRpdmUgY29tcGlsYXRpb24gdGVzdHMuIiBPRkYp
Ci1tYXJrX2FzX2FkdmFuY2VkIChCVUlMRF9OQ19URVNUUykKLWlmIChCVUlMRF9OQ19URVNUUykK
LSAgYWRkX2dmbGFnc19idWlsZF90ZXN0IChuY19zYW5pdHkgICAgICAgICAgICAgICBuYyAwKQot
ICBhZGRfZ2ZsYWdzX2J1aWxkX3Rlc3QgKG5jX3N3YXBwZWRfYXJncyAgICAgICAgIG5jIDEpCi0g
IGFkZF9nZmxhZ3NfYnVpbGRfdGVzdCAobmNfaW50X2luc3RlYWRfb2ZfYm9vbCAgbmMgMSkKLSAg
YWRkX2dmbGFnc19idWlsZF90ZXN0IChuY19ib29sX2luX3F1b3RlcyAgICAgICBuYyAxKQotICBh
ZGRfZ2ZsYWdzX2J1aWxkX3Rlc3QgKG5jX2RlZmluZV9zdHJpbmdfd2l0aF8wIG5jIDEpCi1lbmRp
ZiAoKQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgYnVpbGQgY29uZmlndXJhdGlvbiB0ZXN0
Ci1vcHRpb24gKEJVSUxEX0NPTkZJR19URVNUUyAiUmVxdWVzdCBhZGRpdGlvbiBvZiBwYWNrYWdl
IGNvbmZpZ3VyYXRpb24gdGVzdHMuIiBPRkYpCi1tYXJrX2FzX2FkdmFuY2VkIChCVUlMRF9DT05G
SUdfVEVTVFMpCi1pZiAoQlVJTERfQ09ORklHX1RFU1RTKQotICBhZGRfZ2ZsYWdzX2J1aWxkX3Rl
c3QgKGNtYWtlX2NvbmZpZyBjb25maWcgMCkKLWVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9j
b25maWcvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9jb25maWcvQ01ha2VMaXN0cy50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1YmMyODI5NmY0Zi4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy90ZXN0L2NvbmZpZy9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAg
QEAKLSMjIGdmbGFncyBwYWNrYWdlIGNvbmZpZ3VyYXRpb24gdGVzdHMKLQotY21ha2VfbWluaW11
bV9yZXF1aXJlZCAoVkVSU0lPTiAyLjgpCi0KLXByb2plY3QgKGdmbGFnc18ke1RFU1RfTkFNRX0p
Ci0KLWZpbmRfcGFja2FnZSAoZ2ZsYWdzIFJFUVVJUkVEKQotCi1hZGRfZXhlY3V0YWJsZSAoZm9v
IG1haW4uY2MpCi10YXJnZXRfbGlua19saWJyYXJpZXMgKGZvbyBnZmxhZ3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9z
cmMvdGVzdC9jb25maWcvbWFpbi5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2NvbmZpZy9tYWluLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5YjJiODk4YWQ5ZGEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9jb25maWcvbWFpbi5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSNpbmNsdWRl
IDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxnZmxhZ3MvZ2ZsYWdzLmg+Ci0KLURFRklORV9zdHJpbmco
bWVzc2FnZSwgIkhlbGxvIFdvcmxkISIsICJUaGUgbWVzc2FnZSB0byBwcmludCIpOwotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gIGdmbGFnczo6U2V0VXNhZ2VNZXNzYWdl
KCJUZXN0IENNYWtlIGNvbmZpZ3VyYXRpb24gb2YgZ2ZsYWdzIGxpYnJhcnkgKGdmbGFncy1jb25m
aWcuY21ha2UpIik7Ci0gIGdmbGFnczo6UGFyc2VDb21tYW5kTGluZUZsYWdzKCZhcmdjLCAmYXJn
diwgdHJ1ZSk7Ci0gIHN0ZDo6Y291dCA8PCBGTEFHU19tZXNzYWdlIDw8IHN0ZDo6ZW5kbDsKLSAg
cmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9jb25maWdfZm9yX3VuaXR0ZXN0cy5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3Jj
L3Rlc3QvY29uZmlnX2Zvcl91bml0dGVzdHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTE0NTcxYjM2Yjk5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvY29uZmlnX2Zvcl91bml0
dGVzdHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykg
MjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyAKLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8gCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLyAKLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIC0tLQotLy8gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLS8vCi0vLwotLy8gVGhpcyBmaWxlIGlzIG5lZWRlZCBmb3Igd2luZG93cyAt
LSB1bml0dGVzdHMgYXJlIG5vdCBwYXJ0IG9mIHRoZQotLy8gZ2ZsYWdzIGRsbCwgYnV0IHN0aWxs
IHdhbnQgdG8gaW5jbHVkZSBjb25maWcuaCBqdXN0IGxpa2UgdGhlCi0vLyBkbGwgZG9lcywgc28g
dGhleSBjYW4gdXNlIGludGVybmFsIHRvb2xzIGFuZCBBUElzIGZvciB0ZXN0aW5nLgotLy8KLS8v
IFRoZSBwcm9ibGVtIGlzIHRoYXQgY29uZmlnLmggZGVjbGFyZXMgR0ZMQUdTX0RMTF9ERUNMIHRv
IGJlCi0vLyBmb3IgZXhwb3J0aW5nIHN5bWJvbHMsIGJ1dCB0aGUgdW5pdHRlc3QgbmVlZHMgdG8g
KmltcG9ydCogc3ltYm9scwotLy8gKHNpbmNlIGl0J3Mgbm90IHRoZSBkbGwpLgotLy8KLS8vIFRo
ZSBzb2x1dGlvbiBpcyB0byBoYXZlIHRoaXMgZmlsZSwgd2hpY2ggaXMganVzdCBsaWtlIGNvbmZp
Zy5oIGJ1dAotLy8gc2V0cyBHRkxBR1NfRExMX0RFQ0wgdG8gZG8gYSBkbGxpbXBvcnQgaW5zdGVh
ZCBvZiBhIGRsbGV4cG9ydC4KLS8vCi0vLyBUaGUgcmVhc29uIHdlIG5lZWQgdGhpcyBleHRyYSBH
RkxBR1NfRExMX0RFQ0xfRk9SX1VOSVRURVNUUwotLy8gdmFyaWFibGUgaXMgaW4gY2FzZSBwZW9w
bGUgd2FudCB0byBzZXQgR0ZMQUdTX0RMTF9ERUNMIGV4cGxpY2l0bHkKLS8vIHRvIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIF9fZGVjbHNwZWMoZGxsZXhwb3J0KS4gIEluIHRoYXQgY2FzZSwgdGhleQot
Ly8gbWF5IHdhbnQgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KSBmb3IgdGhlCi0vLyB1bml0dGVzdCBjYXNlLiAgRm9yIHRoYXQsIHdlIGFsbG93IGZvbGtz
IHRvIGRlZmluZSBib3RoCi0vLyBHRkxBR1NfRExMX0RFQ0wgYW5kIEdGTEFHU19ETExfREVDTF9G
T1JfVU5JVFRFU1RTIGV4cGxpY2l0bHkuCi0vLwotLy8gTk9URTogVGhpcyBmaWxlIGlzIGVxdWl2
YWxlbnQgdG8gY29uZmlnLmggb24gbm9uLXdpbmRvd3Mgc3lzdGVtcywKLS8vIHdoaWNoIG5ldmVy
IGRlZmluZWQgR0ZMQUdTX0RMTF9ERUNMX0ZPUl9VTklUVEVTVFMgYW5kIGFsd2F5cwotLy8gZGVm
aW5lIEdGTEFHU19ETExfREVDTCB0byB0aGUgZW1wdHkgc3RyaW5nLgotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZmRlZiBHRkxBR1NfRExMX0RFQ0wKLSMgIHVuZGVmIEdGTEFHU19ETExfREVD
TAotI2VuZGlmCi0jaWZkZWYgR0ZMQUdTX0RMTF9ERUZJTkVfRkxBRwotIyAgdW5kZWYgR0ZMQUdT
X0RMTF9ERUZJTkVfRkxBRwotI2VuZGlmCi0jaWZkZWYgR0ZMQUdTX0RMTF9ERUNMQVJFX0ZMQUcK
LSMgIHVuZGVmIEdGTEFHU19ETExfREVDTEFSRV9GTEFHCi0jZW5kaWYKLQotI2lmZGVmIEdGTEFH
U19ETExfREVDTF9GT1JfVU5JVFRFU1RTCi0jICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNMICBHRkxB
R1NfRExMX0RFQ0xfRk9SX1VOSVRURVNUUwotI2Vsc2UKLSMgIGRlZmluZSBHRkxBR1NfRExMX0RF
Q0wgIC8vIGlmIERMTF9ERUNMX0ZPUl9VTklUVEVTVFMgaXNuJ3QgZGVmaW5lZCwgdXNlICIiCi0j
ZW5kaWYKLQotLy8gSW1wb3J0IGZsYWdzIGRlZmluZWQgYnkgZ2ZsYWdzLmNjCi0jaWYgR0ZMQUdT
X0lTX0FfRExMICYmIGRlZmluZWQoX01TQ19WRVIpCi0jICBkZWZpbmUgR0ZMQUdTX0RMTF9ERUNM
QVJFX0ZMQUcgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZWxzZQotIyAgZGVmaW5lIEdGTEFHU19E
TExfREVDTEFSRV9GTEFHCi0jZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvdGVzdC9mbGFnZmlsZS4xIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZmxhZ2ZpbGUuMQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTBmOTIxNzY5Y2YwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3Qv
ZmxhZ2ZpbGUuMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS0tdmVyc2lvbgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjIgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVz
dC9mbGFnZmlsZS4yCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjRmOGU4YTEzODUu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9mbGFnZmlsZS4yCisrKyAvZGV2L251bGwKQEAgLTEs
MiArMCwwIEBACi0tLWZvbz1iYXIKLS0tbm91bnVzZWRfYm9vbApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2ZsYWdmaWxlLjMgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9mbGFnZmlsZS4z
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmQ5MmJiMWUwZmMuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvdGVzdC9mbGFnZmlsZS4zCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLS1m
bGFnZmlsZT1mbGFnZmlsZS4yClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3Rlc3QvZ2ZsYWdzX2J1aWxkLnB5LmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2J1aWxkLnB5LmluCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGNiYTJiZjVjMDYuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFn
cy9zcmMvdGVzdC9nZmxhZ3NfYnVpbGQucHkuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBv
cnQgc3VicHJvY2VzcwotaW1wb3J0IHNodXRpbAotCi1DTUFLRSAgICAgICAgICAgID0gJ0BDTUFL
RV9DT01NQU5EQCcKLUNNQUtFX0JVSUxEX1RZUEUgPSAnQENNQUtFX0JVSUxEX1RZUEVAJwotVE1Q
RElSICAgICAgICAgICA9ICdAVE1QRElSQCcKLVNSQ0RJUiAgICAgICAgICAgPSAnQFNSQ0RJUkAn
Ci1HRkxBR1NfRElSICAgICAgID0gJ0BnZmxhZ3NfQklOQVJZX0RJUkAnCi0KLWlmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6Ci0gIGlmIGxlbihzeXMuYXJndikgIT0gNDoKLSAgICBzeXMuc3RkZXJy
LndyaXRlKCcgJy5qb2luKFsndXNhZ2U6Jywgc3lzLmFyZ3ZbMF0sICc8dGVzdF9uYW1lPiA8c3Jj
ZGlyPiA8ZXhwZWN0X2ZhaWw6MHwxPlxuJ10pKQotICAgIHN5cy5leGl0KDEpCi0gIHRlc3RfbmFt
ZSAgID0gc3lzLmFyZ3ZbMV0KLSAgc3JjZGlyICAgICAgPSBzeXMuYXJndlsyXQotICBleHBlY3Rf
ZmFpbCA9IChzeXMuYXJndlszXS5sb3dlcigpIGluIFsndHJ1ZScsICd5ZXMnLCAnb24nLCAnMSdd
KQotICBiaW5kaXIgICAgICA9IG9zLnBhdGguam9pbihUTVBESVIsIHRlc3RfbmFtZSkKLSAgaWYg
VE1QRElSID09ICcnOgotICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RlbXBvcmFyeSBkaXJlY3Rvcnkg
bm90IHNldCFcbicpCi0gICAgc3lzLmV4aXQoMSkKLSAgIyBjcmVhdGUgYnVpbGQgZGlyZWN0b3J5
Ci0gIGlmIG9zLnBhdGguaXNkaXIoYmluZGlyKTogc2h1dGlsLnJtdHJlZShiaW5kaXIpCi0gIG9z
Lm1ha2VkaXJzKGJpbmRpcikKLSAgIyBjb25maWd1cmUgdGhlIGJ1aWxkIHRyZWUKLSAgaWYgc3Vi
cHJvY2Vzcy5jYWxsKFtDTUFLRSwgJy1EQ01BS0VfQlVJTERfVFlQRTpTVFJJTkc9JytDTUFLRV9C
VUlMRF9UWVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURnZmxhZ3NfRElSOlBB
VEg9JytHRkxBR1NfRElSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURURVNUX05B
TUU6U1RSSU5HPScrdGVzdF9uYW1lLCBzcmNkaXJdLCBjd2Q9YmluZGlyKSAhPSAwOgotICAgIHN5
cy5zdGRlcnIud3JpdGUoJ0ZhaWxlZCB0byBjb25maWd1cmUgdGhlIGJ1aWxkIHRyZWUhXG4nKQot
ICAgIHN5cy5leGl0KDEpCi0gICMgYnVpbGQgdGhlIHRlc3QgcHJvamVjdAotICBleGl0X2NvZGUg
PSBzdWJwcm9jZXNzLmNhbGwoW0NNQUtFLCAnLS1idWlsZCcsIGJpbmRpciwgJy0tY29uZmlnJywg
Q01BS0VfQlVJTERfVFlQRV0sIGN3ZD1iaW5kaXIpCi0gIGlmIGV4cGVjdF9mYWlsID09IFRydWU6
Ci0gICAgaWYgZXhpdF9jb2RlID09IDA6Ci0gICAgICBzeXMuc3RkZXJyLndyaXRlKCdCdWlsZCBl
eHBlY3RlZCB0byBmYWlsLCBidXQgaXQgc3VjY2VlZGVkIVxuJykKLSAgICAgIHN5cy5leGl0KDEp
Ci0gICAgZWxzZToKLSAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0J1aWxkIGZhaWxlZCBhcyBleHBl
Y3RlZFxuJykKLSAgICAgIGV4aXRfY29kZSA9IDAKLSAgc3lzLmV4aXQoZXhpdF9jb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
ZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2RlY2xhcmVfZmxhZ3MuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3NfZGVj
bGFyZV9mbGFncy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ5MTY4NjFjYzY5
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2RlY2xhcmVfZmxhZ3MuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8
Z2ZsYWdzL2dmbGFnc19kZWNsYXJlLmg+Ci0KLURFQ0xBUkVfc3RyaW5nKG1lc3NhZ2UpOyAvLyBp
biBnZmxhZ3NfZGVsY2FyZV90ZXN0LmNjCi0KLXZvaWQgcHJpbnRfbWVzc2FnZSgpOwotdm9pZCBw
cmludF9tZXNzYWdlKCkKLXsKLSAgc3RkOjpjb3V0IDw8IEZMQUdTX21lc3NhZ2UgPDwgc3RkOjpl
bmRsOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX2RlY2xhcmVfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0
L2dmbGFnc19kZWNsYXJlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcw
N2JjYzA3ZDAzNC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19kZWNsYXJlX3Rlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jaW5jbHVkZSA8Z2ZsYWdzL2dmbGFn
cy5oPgotCi1ERUZJTkVfc3RyaW5nKG1lc3NhZ2UsICIiLCAiVGhlIG1lc3NhZ2UgdG8gcHJpbnQi
KTsKLXZvaWQgcHJpbnRfbWVzc2FnZSgpOyAvLyBpbiBnZmxhZ3NfZGVjbGFyZV9mbGFncy5jYwot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gIGdmbGFnczo6U2V0VXNhZ2VN
ZXNzYWdlKCJUZXN0IGNvbXBpbGF0aW9uIGFuZCB1c2Ugb2YgZ2ZsYWdzX2RlY2xhcmUuaCIpOwot
ICBnZmxhZ3M6OlBhcnNlQ29tbWFuZExpbmVGbGFncygmYXJnYywgJmFyZ3YsIHRydWUpOwotICBw
cmludF9tZXNzYWdlKCk7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdz
X3N0cmlwX2ZsYWdzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dmbGFncy9zcmMvdGVzdC9nZmxhZ3Nfc3RyaXBfZmxhZ3NfdGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVlZjUzYTViZDk1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxh
Z3Mvc3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSw2MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIC0tLQotLy8gQXV0aG9yOiBjc2lsdmVyc0Bnb29nbGUuY29tIChDcmFpZyBT
aWx2ZXJzdGVpbikKLS8vCi0vLyBBIHNpbXBsZSBwcm9ncmFtIHRoYXQgdXNlcyBTVFJJUF9GTEFH
X0hFTFAuICBXZSdsbCBoYXZlIGEgc2hlbGwKLS8vIHNjcmlwdCB0aGF0IHJ1bnMgJ3N0cmluZ3Mn
IG92ZXIgdGhpcyBwcm9ncmFtIGFuZCBtYWtlcyBzdXJlCi0vLyB0aGF0IHRoZSBoZWxwIHN0cmlu
ZyBpcyBub3QgaW4gdGhlcmUuCi0KLSNpbmNsdWRlICJjb25maWdfZm9yX3VuaXR0ZXN0cy5oIgot
I2RlZmluZSBTVFJJUF9GTEFHX0hFTFAgMQotI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3MuaD4KLQot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlNldFVzYWdlTWVz
c2FnZTsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OlBhcnNlQ29tbWFuZExpbmVGbGFnczsKLQot
Ci1ERUZJTkVfYm9vbCh0ZXN0LCB0cnVlLCAiVGhpcyB0ZXh0IHNob3VsZCBiZSBzdHJpcHBlZCBv
dXQiKTsKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIFNldFVzYWdlTWVz
c2FnZSgiVXNhZ2UgbWVzc2FnZSIpOwotICBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZh
cmd2LCBmYWxzZSk7Ci0KLSAgLy8gVW5mb3J0dW5hdGVseSwgZm9yIHVzLCBsaWJ0b29sIGNhbiBy
ZXBsYWNlIGV4ZWN1dGFibGVzIHdpdGggYSBzaGVsbAotICAvLyBzY3JpcHQgdGhhdCBkb2VzIHNv
bWUgd29yayBiZWZvcmUgY2FsbGluZyB0aGUgJ3JlYWwnIGV4ZWN1dGFibGUKLSAgLy8gdW5kZXIg
YSBkaWZmZXJlbnQgbmFtZS4gIFdlIG5lZWQgdGhlICdyZWFsJyBleGVjdXRhYmxlIG5hbWUgdG8g
cnVuCi0gIC8vICdzdHJpbmdzJyBvbiBpdCwgc28gd2UgY29uc3RydWN0IHRoaXMgYmluYXJ5IHRv
IHByaW50IHRoZSByZWFsCi0gIC8vIG5hbWUgKGFyZ3ZbMF0pIG9uIHN0ZG91dCB3aGVuIHJ1bi4K
LSAgcHV0cyhhcmd2WzBdKTsKLQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dm
bGFnc19zdHJpcF9mbGFnc190ZXN0LmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3N0cmlwX2ZsYWdzX3Rl
c3QuY21ha2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDE5YzRmMGY0Yi4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc19zdHJpcF9mbGFnc190ZXN0LmNtYWtlCisrKyAv
ZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pZiAoTk9UIEJJTkFSWSkKLSAgbWVzc2FnZSAoRkFU
QWxfRVJST1IgIkJJTkFSWSBmaWxlIHRvIGNoZWNrIG5vdCBzcGVjaWZpZWQhIikKLWVuZGlmICgp
Ci1maWxlIChTVFJJTkdTICIke0JJTkFSWX0iIHN0cmluZ3MgUkVHRVggIlRoaXMgdGV4dCBzaG91
bGQgYmUgc3RyaXBwZWQgb3V0IikKLWlmIChzdHJpbmdzKQotICBtZXNzYWdlIChGQVRBTF9FUlJP
UiAiVGV4dCBub3Qgc3RyaXBwZWQgZnJvbSBiaW5hcnkgbGlrZSBpdCBzaG91bGQgYmU6ICR7QklO
QVJZfSIpCi1lbmRpZiAoKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3Ny
Yy90ZXN0L2dmbGFnc191bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L2dmbGFnc191bml0dGVzdC5jYwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzMDQ5YmZhMTk4Li4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mv
c3JjL3Rlc3QvZ2ZsYWdzX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTUzNiArMCww
IEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
Ly8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0v
LyAtLS0KLS8vCi0vLyBGb3Igbm93LCB0aGlzIHVuaXQgdGVzdCBkb2VzIG5vdCBjb3ZlciBhbGwg
ZmVhdHVyZXMgb2YKLS8vIGdmbGFncy5jYwotCi0jaW5jbHVkZSAiY29uZmlnX2Zvcl91bml0dGVz
dHMuaCIKLSNpbmNsdWRlIDxnZmxhZ3MvZ2ZsYWdzLmg+Ci0KLSNpbmNsdWRlIDxtYXRoLmg+ICAg
ICAgIC8vIGZvciBpc2luZigpIGFuZCBpc25hbigpCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNs
dWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpZmRlZiBIQVZFX1VOSVNURF9I
Ci0jICBpbmNsdWRlIDx1bmlzdGQuaD4gICAvLyBmb3IgdW5saW5rKCkKLSNlbmRpZgotI2luY2x1
ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAidXRpbC5oIgotVEVTVF9J
TklUCi1FWFBFQ1RfREVBVEhfSU5JVAotCi0vLyBJIGRvbid0IGFjdHVhbGx5IHVzZSB0aGlzIGhl
YWRlciBmaWxlLCBidXQgI2luY2x1ZGUgaXQgdW5kZXIgdGhlCi0vLyBvbGQgbG9jYXRpb24gdG8g
bWFrZSBzdXJlIHRoYXQgdGhlIGluY2x1ZGUtaGVhZGVyLWZvcndhcmRpbmcKLS8vIHdvcmtzLiAg
QnV0IGRvbid0IGJvdGhlciBvbiB3aW5kb3dzOyB0aGUgd2luZG93cyBwb3J0IGlzIHNvIG5ldwot
Ly8gaXQgbmV2ZXIgaGFkIHRoZSBvbGQgbG9jYXRpb24tbmFtZXMuCi0jaWZuZGVmIF9NU0NfVkVS
Ci0jaW5jbHVkZSA8Z2ZsYWdzL2dmbGFnc19jb21wbGV0aW9ucy5oPgotdm9pZCAoKnVudXNlZF9m
bikoKSA9ICZHRkxBR1NfTkFNRVNQQUNFOjpIYW5kbGVDb21tYW5kTGluZUNvbXBsZXRpb25zOwot
I2VuZGlmCi0KLXVzaW5nIHN0ZDo6c3RyaW5nOwotdXNpbmcgc3RkOjp2ZWN0b3I7Ci11c2luZyBH
RkxBR1NfTkFNRVNQQUNFOjppbnQzMjsKLXVzaW5nIEdGTEFHU19OQU1FU1BBQ0U6OkZsYWdSZWdp
c3RlcmVyOwotdXNpbmcgR0ZMQUdTX05BTUVTUEFDRTo6U3RyaW5nRnJvbUVudjsKLXVzaW5nIEdG
TEFHU19OQU1FU1BBQ0U6OlJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcjsKLXVzaW5nIEdGTEFHU19OQU1F
U1BBQ0U6OkNvbW1hbmRMaW5lRmxhZ0luZm87Ci11c2luZyBHRkxBR1NfTkFNRVNQQUNFOjpHZXRB
bGxGbGFnczsKLQotREVGSU5FX3N0cmluZyh0ZXN0X3RtcGRpciwgIiIsICJEaXIgd2UgdXNlIGZv
ciB0ZW1wIGZpbGVzIik7Ci1ERUZJTkVfc3RyaW5nKHNyY2RpciwgU3RyaW5nRnJvbUVudigiU1JD
RElSIiwgIi4iKSwgIlNvdXJjZS1kaXIgcm9vdCwgbmVlZGVkIHRvIGZpbmQgZ2ZsYWdzX3VuaXR0
ZXN0X2ZsYWdmaWxlIik7Ci0KLURFQ0xBUkVfc3RyaW5nKHRyeWZyb21lbnYpOyAgIC8vIGluIGdm
bGFncy5jYwotCi1ERUZJTkVfYm9vbCh0ZXN0X2Jvb2wsIGZhbHNlLCAidGVzdHMgYm9vbC1uZXNz
Iik7Ci1ERUZJTkVfaW50MzIodGVzdF9pbnQzMiwgLTEsICIiKTsKLURFRklORV9pbnQ2NCh0ZXN0
X2ludDY0LCAtMiwgIiIpOwotREVGSU5FX3VpbnQ2NCh0ZXN0X3VpbnQ2NCwgMiwgIiIpOwotREVG
SU5FX2RvdWJsZSh0ZXN0X2RvdWJsZSwgLTEuMCwgIiIpOwotREVGSU5FX3N0cmluZyh0ZXN0X3N0
cmluZywgImluaXRpYWwiLCAiIik7Ci0KLS8vCi0vLyBUaGUgYmVsb3cgdWdsaW5lc3MgZ2V0cyBz
b21lIGFkZGl0aW9uYWwgY29kZSBjb3ZlcmFnZSBpbiB0aGUgLWhlbHB4bWwKLS8vIGFuZCAtaGVs
cG1hdGNoIHRlc3QgY2FzZXMgaGF2aW5nIHRvIGRvIHdpdGggc3RyaW5nIGxlbmd0aHMgYW5kIGZv
cm1hdHRpbmcKLS8vCi1ERUZJTkVfYm9vbCh0ZXN0X2Jvb2xfd2l0aF9xdWl0ZV9xdWl0ZV9xdWl0
ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9xdWl0ZV9x
dWl0ZV9xdWl0ZV9sb25nX25hbWUsCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICJl
eHRyZW1lbHlfZXh0cmVtZWx5X2V4dHJlbWVseV9leHRyZW1lbHlfZXh0cmVtZWx5X2V4dHJlbWVs
eV9leHRyZW1lbHlfZXh0cmVtZWx5X2xvbmdfbWVhbmluZyIpOwotCi1ERUZJTkVfc3RyaW5nKHRl
c3Rfc3RyMSwgImluaXRpYWwiLCAiIik7Ci1ERUZJTkVfc3RyaW5nKHRlc3Rfc3RyMiwgImluaXRp
YWwiLCAiIik7Ci1ERUZJTkVfc3RyaW5nKHRlc3Rfc3RyMywgImluaXRpYWwiLCAiIik7Ci0KLS8v
IFRoaXMgaXMgdXNlZCB0byB0ZXN0IHNldHRpbmcgdHJ5ZnJvbWVudiBtYW51YWxseQotREVGSU5F
X3N0cmluZyh0ZXN0X3RyeWZyb21lbnYsICJpbml0aWFsIiwgIiIpOwotCi0vLyBEb24ndCB0cnkg
dGhpcyBhdCBob21lIQotc3RhdGljIGludCBjaGFuZ2VhYmxlX3ZhciA9IDEyOwotREVGSU5FX2lu
dDMyKGNoYW5nZWFibGVfdmFyLCArK2NoYW5nZWFibGVfdmFyLCAiIik7Ci0KLXN0YXRpYyBpbnQg
Y2hhbmdlYWJsZV9ib29sX3ZhciA9IDgwMDg7Ci1ERUZJTkVfYm9vbChjaGFuZ2VhYmxlX2Jvb2xf
dmFyLCArK2NoYW5nZWFibGVfYm9vbF92YXIgPT0gODAwOSwgIiIpOwotCi1zdGF0aWMgaW50IGNo
YW5nZWFibGVfc3RyaW5nX3ZhciA9IDA7Ci1zdGF0aWMgc3RyaW5nIENoYW5nZWFibGVTdHJpbmco
KSB7Ci0gIGNoYXIgcltdID0ge3N0YXRpY19jYXN0PGNoYXI+KCcwJyArICsrY2hhbmdlYWJsZV9z
dHJpbmdfdmFyKSwgJ1wwJ307Ci0gIHJldHVybiByOwotfQotREVGSU5FX3N0cmluZyhjaGFuZ2Vh
YmxlX3N0cmluZ192YXIsIENoYW5nZWFibGVTdHJpbmcoKSwgIiIpOwotCi0vLyBUaGVzZSBhcmUg
bmV2ZXIgdXNlZCBpbiB0aGlzIHVuaXR0ZXN0LCBidXQgY2FuIGJlIHVzZWQgYnkKLS8vIGdmbGFn
c191bml0dGVzdC5zaCB3aGVuIGl0IG5lZWRzIHRvIHNwZWNpZnkgZmxhZ3MKLS8vIHRoYXQgYXJl
IGxlZ2FsIGZvciBnZmxhZ3NfdW5pdHRlc3QgYnV0IGRvbid0IG5lZWQgdG8KLS8vIGJlIGEgcGFy
dGljdWxhciB2YWx1ZS4KLURFRklORV9ib29sKHVudXNlZF9ib29sLCB0cnVlLCAidW51c2VkIGJv
b2wtbmVzcyIpOwotREVGSU5FX2ludDMyKHVudXNlZF9pbnQzMiwgLTEwMDEsICIiKTsKLURFRklO
RV9pbnQ2NCh1bnVzZWRfaW50NjQsIC0yMDAxLCAiIik7Ci1ERUZJTkVfdWludDY0KHVudXNlZF91
aW50NjQsIDIwMDAsICIiKTsKLURFRklORV9kb3VibGUodW51c2VkX2RvdWJsZSwgLTEwMDAuMCwg
IiIpOwotREVGSU5FX3N0cmluZyh1bnVzZWRfc3RyaW5nLCAidW51c2VkIiwgIiIpOwotCi0vLyBU
aGVzZSBmbGFncyBhcmUgdXNlZCBieSBnZmxhZ3NfdW5pdHRlc3Quc2gKLURFRklORV9ib29sKGNo
YW5nZWRfYm9vbDEsIGZhbHNlLCAiY2hhbmdlZCIpOwotREVGSU5FX2Jvb2woY2hhbmdlZF9ib29s
MiwgZmFsc2UsICJjaGFuZ2VkIik7Ci1ERUZJTkVfYm9vbChsb25nX2hlbHBzdHJpbmcsIGZhbHNl
LAotICAgICAgICAgICAgIlRoaXMgaGVscHN0cmluZyBnb2VzIG9uIGZvcmV2ZXIgYW5kIGV2ZXIg
YW5kIGV2ZXIgYW5kIGV2ZXIgYW5kICIKLSAgICAgICAgICAgICJldmVyIGFuZCBldmVyIGFuZCBl
dmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCAiCi0gICAgICAgICAg
ICAiZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQg
ZXZlciBhbmQgIgotICAgICAgICAgICAgImV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIg
YW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kICIKLSAgICAgICAgICAgICJldmVyIGFuZCBl
dmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCAiCi0g
ICAgICAgICAgICAiZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQg
ZXZlciBhbmQgZXZlciBhbmQgIgotICAgICAgICAgICAgImV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIg
YW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kICIKLSAgICAgICAgICAgICJl
dmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVyIGFuZCBldmVy
IGFuZCAiCi0gICAgICAgICAgICAiZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQg
ZXZlciBhbmQgZXZlciBhbmQgZXZlciBhbmQgIgotICAgICAgICAgICAgImV2ZXIgYW5kIGV2ZXIg
YW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kIGV2ZXIgYW5kICIKLSAgICAg
ICAgICAgICJldmVyLiAgVGhpcyBpcyB0aGUgZW5kIG9mIGEgbG9uZyBoZWxwc3RyaW5nIik7Ci0K
LQotc3RhdGljIGJvb2wgQWx3YXlzRmFpbChjb25zdCBjaGFyKiBmbGFnLCBib29sIHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA9PSBmYWxzZTsgfQotREVGSU5FX2Jvb2woYWx3YXlzX2ZhaWwsIGZhbHNl
LCAid2lsbCBmYWlsIHRvIHZhbGlkYXRlIHdoZW4geW91IHNldCBpdCIpOwotREVGSU5FX3ZhbGlk
YXRvcihhbHdheXNfZmFpbCwgQWx3YXlzRmFpbCk7Ci0KLS8vIFNlZSB0aGUgY29tbWVudCBieSBH
ZXRBbGxGbGFncyBpbiBnZmxhZ3MuaAotc3RhdGljIGJvb2wgRGVhZGxvY2tJZkNhbnRMb2NrSW5W
YWxpZGF0b3JzKGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgdmFsdWUpIHsKLSAgaWYgKCF2YWx1ZSkg
ewotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHZlY3RvcjxDb21tYW5kTGluZUZsYWdJbmZvPiBk
dW1teTsKLSAgR2V0QWxsRmxhZ3MoJmR1bW15KTsKLSAgcmV0dXJuIHRydWU7Ci19Ci1ERUZJTkVf
Ym9vbChkZWFkbG9ja19pZl9jYW50X2xvY2ssCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAg
ICAgICJ3aWxsIGRlYWRsb2NrIGlmIHNldCB0byB0cnVlIGFuZCAiCi0gICAgICAgICAgICAiaWYg
bG9ja2luZyBvZiByZWdpc3RyeSBpbiB2YWxpZGF0b3JzIGZhaWxzLiIpOwotREVGSU5FX3ZhbGlk
YXRvcihkZWFkbG9ja19pZl9jYW50X2xvY2ssIERlYWRsb2NrSWZDYW50TG9ja0luVmFsaWRhdG9y
cyk7Ci0KLSNkZWZpbmUgTUFLRUZMQUcoeCkgREVGSU5FX2ludDMyKHRlc3RfZmxhZ19udW0jI3gs
IHgsICJUZXN0IGZsYWciKQotCi0vLyBEZWZpbmUgMTAgZmxhZ3MKLSNkZWZpbmUgTUFLRUZMQUcx
MCh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjMCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjMSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjMik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjMyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgTUFLRUZMQUcoeCMjNSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
TUFLRUZMQUcoeCMjNik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZM
QUcoeCMjNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMj
OCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTUFLRUZMQUcoeCMjOSkKLQot
Ly8gRGVmaW5lIDEwMCBmbGFncwotI2RlZmluZSBNQUtFRkxBRzEwMCh4KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzApOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICBNQUtFRkxBRzEwKHgjIzIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBN
QUtFRkxBRzEwKHgjIzMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBNQUtFRkxB
RzEwKHgjIzQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgj
IzUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzYpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzcpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICBNQUtFRkxBRzEwKHgjIzkpCi0KLS8vIERlZmluZSBhIGJ1bmNo
IG9mIGNvbW1hbmQtbGluZSBmbGFncy4gIEVhY2ggb2NjdXJyZW5jZSBvZiB0aGUgTUFLRUZMQUcx
MDAKLS8vIG1hY3JvIGRlZmluZXMgMTAwIGludGVnZXIgZmxhZ3MuICBUaGlzIGxldHMgdXMgdGVz
dCB0aGUgZWZmZWN0IG9mIGhhdmluZwotLy8gbWFueSBmbGFncyBvbiBzdGFydHVwIHRpbWUuCi1N
QUtFRkxBRzEwMCgxKTsKLU1BS0VGTEFHMTAwKDIpOwotTUFLRUZMQUcxMDAoMyk7Ci1NQUtFRkxB
RzEwMCg0KTsKLU1BS0VGTEFHMTAwKDUpOwotTUFLRUZMQUcxMDAoNik7Ci1NQUtFRkxBRzEwMCg3
KTsKLU1BS0VGTEFHMTAwKDgpOwotTUFLRUZMQUcxMDAoOSk7Ci1NQUtFRkxBRzEwMCgxMCk7Ci1N
QUtFRkxBRzEwMCgxMSk7Ci1NQUtFRkxBRzEwMCgxMik7Ci1NQUtFRkxBRzEwMCgxMyk7Ci1NQUtF
RkxBRzEwMCgxNCk7Ci1NQUtFRkxBRzEwMCgxNSk7Ci0KLSN1bmRlZiBNQUtFRkxBRzEwMAotI3Vu
ZGVmIE1BS0VGTEFHMTAKLSN1bmRlZiBNQUtFRkxBRwotCi0vLyBUaGlzIGlzIGEgcHNldWRvLWZs
YWcgLS0gd2Ugd2FudCB0byByZWdpc3RlciBhIGZsYWcgd2l0aCBhIGZpbGVuYW1lCi0vLyBhdCB0
aGUgdG9wIGxldmVsLCBidXQgdGhlcmUgaXMgbm8gd2F5IHRvIGRvIHRoaXMgZXhjZXB0IGJ5IGZh
a2luZwotLy8gdGhlIGZpbGVuYW1lLgotbmFtZXNwYWNlIGZMSSB7Ci0gIHN0YXRpYyBjb25zdCBp
bnQzMiBGTEFHU19ub25vdGxkZmxhZzEgPSAxMjsKLSAgaW50MzIgRkxBR1NfdGxkZmxhZzEgPSBG
TEFHU19ub25vdGxkZmxhZzE7Ci0gIGludDMyIEZMQUdTX25vdGxkZmxhZzEgPSBGTEFHU19ub25v
dGxkZmxhZzE7Ci0gIHN0YXRpYyBGbGFnUmVnaXN0ZXJlciBvX3RsZGZsYWcxKAotICAgICJ0bGRm
bGFnMSIsICJpbnQzMiIsCi0gICAgInNob3VsZCBzaG93IHVwIGluIC0taGVscHNob3J0IiwgImdm
bGFnc191bml0dGVzdC5jYyIsCi0gICAgJkZMQUdTX3RsZGZsYWcxLCAmRkxBR1Nfbm90bGRmbGFn
MSk7Ci19Ci11c2luZyBmTEk6OkZMQUdTX3RsZGZsYWcxOwotCi1uYW1lc3BhY2UgZkxJIHsKLSAg
c3RhdGljIGNvbnN0IGludDMyIEZMQUdTX25vbm90bGRmbGFnMiA9IDIzOwotICBpbnQzMiBGTEFH
U190bGRmbGFnMiA9IEZMQUdTX25vbm90bGRmbGFnMjsKLSAgaW50MzIgRkxBR1Nfbm90bGRmbGFn
MiA9IEZMQUdTX25vbm90bGRmbGFnMjsKLSAgc3RhdGljIEZsYWdSZWdpc3RlcmVyIG9fdGxkZmxh
ZzIoCi0gICAgInRsZGZsYWcyIiwgImludDMyIiwKLSAgICAic2hvdWxkIHNob3cgdXAgaW4gLS1o
ZWxwc2hvcnQiLCAiZ2ZsYWdzX3VuaXR0ZXN0LiIsCi0gICAgJkZMQUdTX3RsZGZsYWcyLCAmRkxB
R1Nfbm90bGRmbGFnMik7Ci19Ci11c2luZyBmTEk6OkZMQUdTX3RsZGZsYWcyOwotCi1uYW1lc3Bh
Y2UgR0ZMQUdTX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSB7Ci0KLQotc3RhdGljIHN0cmluZyBU
bXBGaWxlKGNvbnN0IHN0cmluZyYgYmFzZW5hbWUpIHsKLSNpZmRlZiBfTVNDX1ZFUgotICByZXR1
cm4gRkxBR1NfdGVzdF90bXBkaXIgKyAiXFwiICsgYmFzZW5hbWU7Ci0jZWxzZQotICByZXR1cm4g
RkxBR1NfdGVzdF90bXBkaXIgKyAiLyIgKyBiYXNlbmFtZTsKLSNlbmRpZgotfQotCi0vLyBSZXR1
cm5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSAtLWZsYWdmaWxlIGZsYWcgdG8gYmUgdXNlZCBpbiB0
aGUgdGVzdHMuCi0vLyBNdXN0IGJlIGNhbGxlZCBhZnRlciBQYXJzZUNvbW1hbmRMaW5lRmxhZ3Mo
KS4KLXN0YXRpYyBjb25zdCBjaGFyKiBHZXRGbGFnRmlsZUZsYWcoKSB7Ci0jaWZkZWYgX01TQ19W
RVIKLSAgc3RhdGljIGNvbnN0IHN0cmluZyBmbGFnZmlsZSA9IEZMQUdTX3NyY2RpciArICJcXGdm
bGFnc191bml0dGVzdF9mbGFnZmlsZSI7Ci0jZWxzZQotICBzdGF0aWMgY29uc3Qgc3RyaW5nIGZs
YWdmaWxlID0gRkxBR1Nfc3JjZGlyICsgIi9nZmxhZ3NfdW5pdHRlc3RfZmxhZ2ZpbGUiOwotI2Vu
ZGlmCi0gIHN0YXRpYyBjb25zdCBzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9IHN0cmluZygiLS1mbGFn
ZmlsZT0iKSArIGZsYWdmaWxlOwotICByZXR1cm4gZmxhZ2ZpbGVfZmxhZy5jX3N0cigpOwotfQot
Ci0KLS8vIERlZmluaW5nIGEgdmFyaWFibGUgb2YgdHlwZSBDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDxUMSwgVDI+IHdpbGwgY2F1c2UgYQotLy8gY29tcGlsZXIgZXJyb3IgaWZmIFQxIGFuZCBUMiBh
cmUgZGlmZmVyZW50IHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
LXN0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VCwgVD4gewotfTsKLQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRXhwZWN0ZWQsIHR5cGVuYW1lIEFjdHVhbD4KLXZvaWQgQXNzZXJ0SXNUeXBl
KEFjdHVhbCYgeCkgewotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxFeHBlY3RlZCwgQWN0dWFs
PigpOwotfQotCi0vLyBWZXJpZnkgYWxsIHRoZSBmbGFncyBhcmUgdGhlIHJpZ2h0IHR5cGUuCi1U
RVNUKEZsYWdUeXBlcywgRmxhZ1R5cGVzKSB7Ci0gIEFzc2VydElzVHlwZTxib29sPihGTEFHU190
ZXN0X2Jvb2wpOwotICBBc3NlcnRJc1R5cGU8aW50MzI+KEZMQUdTX3Rlc3RfaW50MzIpOwotICBB
c3NlcnRJc1R5cGU8aW50NjQ+KEZMQUdTX3Rlc3RfaW50NjQpOwotICBBc3NlcnRJc1R5cGU8dWlu
dDY0PihGTEFHU190ZXN0X3VpbnQ2NCk7Ci0gIEFzc2VydElzVHlwZTxkb3VibGU+KEZMQUdTX3Rl
c3RfZG91YmxlKTsKLSAgQXNzZXJ0SXNUeXBlPHN0cmluZz4oRkxBR1NfdGVzdF9zdHJpbmcpOwot
fQotCi0jaWZkZWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLS8vIERlYXRoIHRlc3RzIGZvciAiaGVs
cCIgb3B0aW9ucy4KLS8vCi0vLyBUaGUgaGVscCBzeXN0ZW0gYXV0b21hdGljYWxseSBjYWxscyBn
ZmxhZ3NfZXhpdGZ1bmMoMSkgd2hlbiB5b3Ugc3BlY2lmeSBhbnkgb2YKLS8vIHRoZSBoZWxwLXJl
bGF0ZWQgZmxhZ3MgKCItaGVscG1hdGNoIiwgIi1oZWxweG1sIikgc28gd2UgY2FuJ3QgdGVzdAot
Ly8gdGhvc2UgbWFpbmxpbmUuCi0KLS8vIFRlc3RzIHRoYXQgIi1oZWxwbWF0Y2giIGNhdXNlcyB0
aGUgcHJvY2VzcyB0byBkaWUuCi1URVNUKFJlYWRGbGFnc0Zyb21TdHJpbmdEZWF0aFRlc3QsIEhl
bHBNYXRjaCkgewotICBFWFBFQ1RfREVBVEgoUmVhZEZsYWdzRnJvbVN0cmluZygiLWhlbHBtYXRj
aD1iYXNlIiwgR2V0QXJndjAoKSwgdHJ1ZSksCi0gICAgICAgICAgICAgICAiIik7Ci19Ci0KLQot
Ly8gVGVzdHMgdGhhdCAiLWhlbHB4bWwiIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUuCi1URVNU
KFJlYWRGbGFnc0Zyb21TdHJpbmdEZWF0aFRlc3QsIEhlbHBYbWwpIHsKLSAgRVhQRUNUX0RFQVRI
KFJlYWRGbGFnc0Zyb21TdHJpbmcoIi1oZWxweG1sIiwgR2V0QXJndjAoKSwgdHJ1ZSksCi0gICAg
ICAgICAgICAgICAiIik7Ci19Ci0jZW5kaWYKLQotCi0vLyBBIHN1YnJvdXRpbmUgbmVlZGVkIGZv
ciB0ZXN0aW5nIHJlYWRpbmcgZmxhZ3MgZnJvbSBhIHN0cmluZy4KLXZvaWQgVGVzdEZsYWdTdHJp
bmcoY29uc3Qgc3RyaW5nJiBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5n
JiBleHBlY3RlZF9zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0ZWRfYm9v
bCwKLSAgICAgICAgICAgICAgICAgICAgaW50MzIgZXhwZWN0ZWRfaW50MzIsCi0gICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBleHBlY3RlZF9kb3VibGUpIHsKLSAgRVhQRUNUX1RSVUUoUmVhZEZs
YWdzRnJvbVN0cmluZyhmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRBcmd2MCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVycm9ycyBh
cmUgZmF0YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSk7Ci0KLSAg
RVhQRUNUX0VRKGV4cGVjdGVkX3N0cmluZywgRkxBR1NfdGVzdF9zdHJpbmcpOwotICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRfYm9vbCwgRkxBR1NfdGVzdF9ib29sKTsKLSAgRVhQRUNUX0VRKGV4cGVjdGVk
X2ludDMyLCBGTEFHU190ZXN0X2ludDMyKTsKLSAgRVhQRUNUX0RPVUJMRV9FUShleHBlY3RlZF9k
b3VibGUsIEZMQUdTX3Rlc3RfZG91YmxlKTsKLX0KLQotCi0vLyBUZXN0cyByZWFkaW5nIGZsYWdz
IGZyb20gYSBzdHJpbmcuCi1URVNUKEZsYWdGaWxlVGVzdCwgUmVhZEZsYWdzRnJvbVN0cmluZykg
ewotICBUZXN0RmxhZ1N0cmluZygKLSAgICAgIC8vIEZsYWcgc3RyaW5nCi0gICAgICAiLXRlc3Rf
c3RyaW5nPWNvbnRpbnVlZFxuIgotICAgICAgIiMgc29tZSBjb21tZW50cyBhcmUgaW4gb3JkZXJc
biIKLSAgICAgICIjIHNvbWVcbiIKLSAgICAgICIgICMgY29tbWVudHNcbiIKLSAgICAgICIjYXJl
XG4iCi0gICAgICAiICAgICAgICAgICAgICAgICAgI3RyaWNraWVyXG4iCi0gICAgICAiIyB0aGFu
IG90aGVyc1xuIgotICAgICAgIi10ZXN0X2Jvb2w9dHJ1ZVxuIgotICAgICAgIiAgICAgLXRlc3Rf
aW50MzI9MVxuIgotICAgICAgIi10ZXN0X2RvdWJsZT0wLjBcbiIsCi0gICAgICAvLyBFeHBlY3Rl
ZCB2YWx1ZXMKLSAgICAgICJjb250aW51ZWQiLAotICAgICAgdHJ1ZSwKLSAgICAgIDEsCi0gICAg
ICAwLjApOwotCi0gIFRlc3RGbGFnU3RyaW5nKAotICAgICAgLy8gRmxhZyBzdHJpbmcKLSAgICAg
ICIjIGxldCdzIG1ha2Ugc3VyZSBpdCBjYW4gdXBkYXRlIHZhbHVlc1xuIgotICAgICAgIi10ZXN0
X3N0cmluZz1pbml0aWFsXG4iCi0gICAgICAiLXRlc3RfYm9vbD1mYWxzZVxuIgotICAgICAgIi10
ZXN0X2ludDMyPTEyM1xuIgotICAgICAgIi10ZXN0X2RvdWJsZT0xMjMuMFxuIiwKLSAgICAgIC8v
IEV4cGVjdGVkIHZhbHVlcwotICAgICAgImluaXRpYWwiLAotICAgICAgZmFsc2UsCi0gICAgICAx
MjMsCi0gICAgICAxMjMuMCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBmaWxlbmFtZSBwYXJ0IG9mIHRo
ZSBmbGFnZmlsZQotVEVTVChGbGFnRmlsZVRlc3QsIEZpbGVuYW1lc091cmZpbGVMYXN0KSB7Ci0g
IEZMQUdTX3Rlc3Rfc3RyaW5nID0gImluaXRpYWwiOwotICBGTEFHU190ZXN0X2Jvb2wgPSBmYWxz
ZTsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9IC0xOwotICBGTEFHU190ZXN0X2RvdWJsZSA9IC0xLjA7
Ci0gIFRlc3RGbGFnU3RyaW5nKAotICAgICAgLy8gRmxhZyBzdHJpbmcKLSAgICAgICItdGVzdF9z
dHJpbmc9Y29udGludWVkXG4iCi0gICAgICAiIyBzb21lIGNvbW1lbnRzIGFyZSBpbiBvcmRlclxu
IgotICAgICAgIiMgc29tZVxuIgotICAgICAgIiAgIyBjb21tZW50c1xuIgotICAgICAgIiNhcmVc
biIKLSAgICAgICIgICAgICAgICAgICAgICAgICAjdHJpY2tpZXJcbiIKLSAgICAgICIjIHRoYW4g
b3RoZXJzXG4iCi0gICAgICAibm90X291cl9maWxlbmFtZVxuIgotICAgICAgIi10ZXN0X2Jvb2w9
dHJ1ZVxuIgotICAgICAgIiAgICAgLXRlc3RfaW50MzI9MVxuIgotICAgICAgImdmbGFnc191bml0
dGVzdFxuIgotICAgICAgIi10ZXN0X2RvdWJsZT0xMDAwLjBcbiIsCi0gICAgICAvLyBFeHBlY3Rl
ZCB2YWx1ZXMKLSAgICAgICJjb250aW51ZWQiLAotICAgICAgZmFsc2UsCi0gICAgICAtMSwKLSAg
ICAgIDEwMDAuMCk7Ci19Ci0KLVRFU1QoRmxhZ0ZpbGVUZXN0LCBGaWxlbmFtZXNPdXJmaWxlRmly
c3QpIHsKLSAgRkxBR1NfdGVzdF9zdHJpbmcgPSAiaW5pdGlhbCI7Ci0gIEZMQUdTX3Rlc3RfYm9v
bCA9IGZhbHNlOwotICBGTEFHU190ZXN0X2ludDMyID0gLTE7Ci0gIEZMQUdTX3Rlc3RfZG91Ymxl
ID0gLTEuMDsKLSAgVGVzdEZsYWdTdHJpbmcoCi0gICAgICAvLyBGbGFnIHN0cmluZwotICAgICAg
Ii10ZXN0X3N0cmluZz1jb250aW51ZWRcbiIKLSAgICAgICIjIHNvbWUgY29tbWVudHMgYXJlIGlu
IG9yZGVyXG4iCi0gICAgICAiIyBzb21lXG4iCi0gICAgICAiICAjIGNvbW1lbnRzXG4iCi0gICAg
ICAiI2FyZVxuIgotICAgICAgIiAgICAgICAgICAgICAgICAgICN0cmlja2llclxuIgotICAgICAg
IiMgdGhhbiBvdGhlcnNcbiIKLSAgICAgICJnZmxhZ3NfdW5pdHRlc3RcbiIKLSAgICAgICItdGVz
dF9ib29sPXRydWVcbiIKLSAgICAgICIgICAgIC10ZXN0X2ludDMyPTFcbiIKLSAgICAgICJub3Rf
b3VyX2ZpbGVuYW1lXG4iCi0gICAgICAiLXRlc3RfZG91YmxlPTEwMDAuMFxuIiwKLSAgICAgIC8v
IEV4cGVjdGVkIHZhbHVlcwotICAgICAgImNvbnRpbnVlZCIsCi0gICAgICB0cnVlLAotICAgICAg
MSwKLSAgICAgIC0xLjApOwotfQotCi0jaWYgZGVmaW5lZChIQVZFX0ZOTUFUQ0hfSCkgfHwgZGVm
aW5lZChIQVZFX1NITFdBUElfSCkgIC8vIG90aGVyd2lzZSBnbG9iIGlzbid0IHN1cHBvcnRlZAot
VEVTVChGbGFnRmlsZVRlc3QsIEZpbGVuYW1lc091cmZpbGVHbG9iKSB7Ci0gIEZMQUdTX3Rlc3Rf
c3RyaW5nID0gImluaXRpYWwiOwotICBGTEFHU190ZXN0X2Jvb2wgPSBmYWxzZTsKLSAgRkxBR1Nf
dGVzdF9pbnQzMiA9IC0xOwotICBGTEFHU190ZXN0X2RvdWJsZSA9IC0xLjA7Ci0gIFRlc3RGbGFn
U3RyaW5nKAotICAgICAgLy8gRmxhZyBzdHJpbmcKLSAgICAgICItdGVzdF9zdHJpbmc9Y29udGlu
dWVkXG4iCi0gICAgICAiIyBzb21lIGNvbW1lbnRzIGFyZSBpbiBvcmRlclxuIgotICAgICAgIiMg
c29tZVxuIgotICAgICAgIiAgIyBjb21tZW50c1xuIgotICAgICAgIiNhcmVcbiIKLSAgICAgICIg
ICAgICAgICAgICAgICAgICAjdHJpY2tpZXJcbiIKLSAgICAgICIjIHRoYW4gb3RoZXJzXG4iCi0g
ICAgICAiKmZsYWdzKlxuIgotICAgICAgIi10ZXN0X2Jvb2w9dHJ1ZVxuIgotICAgICAgIiAgICAg
LXRlc3RfaW50MzI9MVxuIgotICAgICAgImZsYWdzXG4iCi0gICAgICAiLXRlc3RfZG91YmxlPTEw
MDAuMFxuIiwKLSAgICAgIC8vIEV4cGVjdGVkIHZhbHVlcwotICAgICAgImNvbnRpbnVlZCIsCi0g
ICAgICB0cnVlLAotICAgICAgMSwKLSAgICAgIC0xLjApOwotfQotCi1URVNUKEZsYWdGaWxlVGVz
dCwgRmlsZW5hbWVzT3VyZmlsZUluQmlnTGlzdCkgewotICBGTEFHU190ZXN0X3N0cmluZyA9ICJp
bml0aWFsIjsKLSAgRkxBR1NfdGVzdF9ib29sID0gZmFsc2U7Ci0gIEZMQUdTX3Rlc3RfaW50MzIg
PSAtMTsKLSAgRkxBR1NfdGVzdF9kb3VibGUgPSAtMS4wOwotICBUZXN0RmxhZ1N0cmluZygKLSAg
ICAgIC8vIEZsYWcgc3RyaW5nCi0gICAgICAiLXRlc3Rfc3RyaW5nPWNvbnRpbnVlZFxuIgotICAg
ICAgIiMgc29tZSBjb21tZW50cyBhcmUgaW4gb3JkZXJcbiIKLSAgICAgICIjIHNvbWVcbiIKLSAg
ICAgICIgICMgY29tbWVudHNcbiIKLSAgICAgICIjYXJlXG4iCi0gICAgICAiICAgICAgICAgICAg
ICAgICAgI3RyaWNraWVyXG4iCi0gICAgICAiIyB0aGFuIG90aGVyc1xuIgotICAgICAgIipmaXJz
dCogKmZsYWdzKiAqdGhpcmQqXG4iCi0gICAgICAiLXRlc3RfYm9vbD10cnVlXG4iCi0gICAgICAi
ICAgICAtdGVzdF9pbnQzMj0xXG4iCi0gICAgICAiZmxhZ3NcbiIKLSAgICAgICItdGVzdF9kb3Vi
bGU9MTAwMC4wXG4iLAotICAgICAgLy8gRXhwZWN0ZWQgdmFsdWVzCi0gICAgICAiY29udGludWVk
IiwKLSAgICAgIHRydWUsCi0gICAgICAxLAotICAgICAgLTEuMCk7Ci19Ci0jZW5kaWYgIC8vIGRl
ZmluZWQoSEFWRV9GTk1BVENIX0gpIHx8IGRlZmluZWQoSEFWRV9TSExXQVBJX0gpCi0KLS8vIFRl
c3RzIHRoYXQgYSBmYWlsZWQgZmxhZy1mcm9tLXN0cmluZyByZWFkIGtlZXBzIGZsYWdzIGF0IGRl
ZmF1bHQgdmFsdWVzCi1URVNUKEZsYWdGaWxlVGVzdCwgRmFpbFJlYWRGbGFnc0Zyb21TdHJpbmcp
IHsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9IDExOTsKLSAgc3RyaW5nIGZsYWdzKCIjIGxldCdzIG1h
a2Ugc3VyZSBpdCBjYW4gdXBkYXRlIHZhbHVlc1xuIgotICAgICAgICAgICAgICAgIi10ZXN0X3N0
cmluZz1ub25faW5pdGlhbFxuIgotICAgICAgICAgICAgICAgIi10ZXN0X2Jvb2w9ZmFsc2VcbiIK
LSAgICAgICAgICAgICAgICItdGVzdF9pbnQzMj0xMjNcbiIKLSAgICAgICAgICAgICAgICItdGVz
dF9kb3VibGU9aWxsZWdhbFxuIik7Ci0KLSAgRVhQRUNUX0ZBTFNFKFJlYWRGbGFnc0Zyb21TdHJp
bmcoZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEFyZ3YwKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVycm9ycyBhcmUgZmF0YWwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKTsKLQotICBFWFBFQ1Rf
RVEoMTE5LCBGTEFHU190ZXN0X2ludDMyKTsKLSAgRVhQRUNUX0VRKCJpbml0aWFsIiwgRkxBR1Nf
dGVzdF9zdHJpbmcpOwotfQotCi0vLyBUZXN0cyB0aGF0IGZsYWdzIGNhbiBiZSBzZXQgdG8gb3Jk
aW5hcnkgdmFsdWVzLgotVEVTVChTZXRGbGFnVmFsdWVUZXN0LCBPcmRpbmFyeVZhbHVlcykgewot
ICBFWFBFQ1RfRVEoImluaXRpYWwiLCBGTEFHU190ZXN0X3N0cjEpOwotCi0gIFNldENvbW1hbmRM
aW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMSIsICJzZWNvbmQiLCBTRVRfRkxBR19JRl9ERUZB
VUxUKTsKLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0X3N0cjEpOyAgLy8gc2V0OyB3
YXMgZGVmYXVsdAotCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMSIs
ICJ0aGlyZCIsIFNFVF9GTEFHX0lGX0RFRkFVTFQpOwotICBFWFBFQ1RfRVEoInNlY29uZCIsIEZM
QUdTX3Rlc3Rfc3RyMSk7ICAvLyBhbHJlYWR5IHNldCBvbmNlCi0KLSAgRkxBR1NfdGVzdF9zdHIx
ID0gImluaXRpYWwiOwotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjEi
LCAidGhpcmQiLCBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJpbml0aWFsIiwg
RkxBR1NfdGVzdF9zdHIxKTsgIC8vIHN0aWxsIGFscmVhZHkgc2V0IGJlZm9yZQotCi0gIFNldENv
bW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMSIsICJ0aGlyZCIsIFNFVF9GTEFHU19W
QUxVRSk7Ci0gIEVYUEVDVF9FUSgidGhpcmQiLCBGTEFHU190ZXN0X3N0cjEpOyAgLy8gY2hhbmdl
ZCB2YWx1ZQotCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMSIsICJm
b3VydGgiLCBTRVRfRkxBR1NfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgidGhpcmQiLCBGTEFHU190
ZXN0X3N0cjEpOwotICAvLyB2YWx1ZSBub3QgY2hhbmdlZCAoYWxyZWFkeSBzZXQgYmVmb3JlKQot
Ci0gIEVYUEVDVF9FUSgiaW5pdGlhbCIsIEZMQUdTX3Rlc3Rfc3RyMik7Ci0KLSAgU2V0Q29tbWFu
ZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIyIiwgInNlY29uZCIsIFNFVF9GTEFHU19ERUZB
VUxUKTsKLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0X3N0cjIpOyAgLy8gY2hhbmdl
ZCAod2FzIGRlZmF1bHQpCi0KLSAgRkxBR1NfdGVzdF9zdHIyID0gImV4dHJhIjsKLSAgRVhQRUNU
X0VRKCJleHRyYSIsIEZMQUdTX3Rlc3Rfc3RyMik7Ci0KLSAgRkxBR1NfdGVzdF9zdHIyID0gInNl
Y29uZCI7Ci0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMiIsICJ0aGly
ZCIsIFNFVF9GTEFHU19ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJ0aGlyZCIsIEZMQUdTX3Rlc3Rf
c3RyMik7ICAvLyBzdGlsbCBjaGFuZ2VkICh3YXMgZXF1YWwgdG8gZGVmYXVsdCkKLQotICBTZXRD
b21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjIiLCAiZm91cnRoIiwgU0VUX0ZMQUdf
SUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgiZm91cnRoIiwgRkxBR1NfdGVzdF9zdHIyKTsgIC8v
IGNoYW5nZWQgKHdhcyBkZWZhdWx0KQotCi0gIEVYUEVDVF9FUSgiaW5pdGlhbCIsIEZMQUdTX3Rl
c3Rfc3RyMyk7Ci0KLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9zdHIzIiwg
InNlY29uZCIsIFNFVF9GTEFHU19ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFH
U190ZXN0X3N0cjMpOyAgLy8gY2hhbmdlZAotCi0gIEZMQUdTX3Rlc3Rfc3RyMyA9ICJ0aGlyZCI7
Ci0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMyIsICJmb3VydGgiLCBT
RVRfRkxBR1NfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgidGhpcmQiLCBGTEFHU190ZXN0X3N0cjMp
OyAgLy8gbm90IGNoYW5nZWQgKHdhcyBzZXQpCi0KLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRo
TW9kZSgidGVzdF9zdHIzIiwgImZvdXJ0aCIsIFNFVF9GTEFHX0lGX0RFRkFVTFQpOwotICBFWFBF
Q1RfRVEoInRoaXJkIiwgRkxBR1NfdGVzdF9zdHIzKTsgIC8vIG5vdCBjaGFuZ2VkICh3YXMgc2V0
KQotCi0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMyIsICJmb3VydGgi
LCBTRVRfRkxBR1NfVkFMVUUpOwotICBFWFBFQ1RfRVEoImZvdXJ0aCIsIEZMQUdTX3Rlc3Rfc3Ry
Myk7ICAvLyBjaGFuZ2VkIHZhbHVlCi19Ci0KLQotLy8gVGVzdHMgdGhhdCBmbGFncyBjYW4gYmUg
c2V0IHRvIGV4Y2VwdGlvbmFsIHZhbHVlcy4KLS8vIE5vdGU6IGFwcGFyZW50bHkgTUlOR1cgZG9l
c24ndCBwYXJzZSBpbmYgYW5kIG5hbiBjb3JyZWN0bHk6Ci0vLyAgICBodHRwOi8vd3d3Lm1haWwt
YXJjaGl2ZS5jb20vYnVnLWdudWxpYkBnbnUub3JnL21zZzA5NTczLmh0bWwKLS8vIFRoaXMgdXJs
IHNheXMgRnJlZUJTRCBhbHNvIGhhcyBhIHByb2JsZW0sIGJ1dCBJIGRpZG4ndCBzZWUgdGhhdC4K
LVRFU1QoU2V0RmxhZ1ZhbHVlVGVzdCwgRXhjZXB0aW9uYWxWYWx1ZXMpIHsKLSNpZiBkZWZpbmVk
KGlzaW5mKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgRVhQRUNUX0VRKCJ0ZXN0X2RvdWJs
ZSBzZXQgdG8gaW5mXG4iLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3Rf
ZG91YmxlIiwgImluZiIpKTsKLSAgRVhQRUNUX0lORihGTEFHU190ZXN0X2RvdWJsZSk7Ci0KLSAg
RVhQRUNUX0VRKCJ0ZXN0X2RvdWJsZSBzZXQgdG8gaW5mXG4iLAotICAgICAgICAgICAgU2V0Q29t
bWFuZExpbmVPcHRpb24oInRlc3RfZG91YmxlIiwgIklORiIpKTsKLSAgRVhQRUNUX0lORihGTEFH
U190ZXN0X2RvdWJsZSk7Ci0jZW5kaWYKLQotICAvLyBzZXQgc29tZSBiYWQgdmFsdWVzCi0gIEVY
UEVDVF9FUSgiIiwKLSAgICAgICAgICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2RvdWJs
ZSIsICIwLjF4eHgiKSk7Ci0gIEVYUEVDVF9FUSgiIiwKLSAgICAgICAgICAgIFNldENvbW1hbmRM
aW5lT3B0aW9uKCJ0ZXN0X2RvdWJsZSIsICIgIikpOwotICBFWFBFQ1RfRVEoIiIsCi0gICAgICAg
ICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9kb3VibGUiLCAiIikpOwotI2lmIGRlZmlu
ZWQoaXNpbmYpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQotICBFWFBFQ1RfRVEoInRlc3RfZG91
YmxlIHNldCB0byAtaW5mXG4iLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRl
c3RfZG91YmxlIiwgIi1pbmYiKSk7Ci0gIEVYUEVDVF9JTkYoRkxBR1NfdGVzdF9kb3VibGUpOwot
ICBFWFBFQ1RfR1QoMCwgRkxBR1NfdGVzdF9kb3VibGUpOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVk
KGlzbmFuKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKLSAgRVhQRUNUX0VRKCJ0ZXN0X2RvdWJs
ZSBzZXQgdG8gbmFuXG4iLAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3Rf
ZG91YmxlIiwgIk5hTiIpKTsKLSAgRVhQRUNUX05BTihGTEFHU190ZXN0X2RvdWJsZSk7Ci0jZW5k
aWYKLX0KLQotLy8gVGVzdHMgdGhhdCBpbnRlZ2VyIGZsYWdzIGNhbiBiZSBzcGVjaWZpZWQgaW4g
bWFueSB3YXlzCi1URVNUKFNldEZsYWdWYWx1ZVRlc3QsIERpZmZlcmVudFJhZGljZXMpIHsKLSAg
RVhQRUNUX0VRKCJ0ZXN0X2ludDMyIHNldCB0byAxMlxuIiwKLSAgICAgICAgICAgIFNldENvbW1h
bmRMaW5lT3B0aW9uKCJ0ZXN0X2ludDMyIiwgIjEyIikpOwotCi0gIEVYUEVDVF9FUSgidGVzdF9p
bnQzMiBzZXQgdG8gMTZcbiIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVz
dF9pbnQzMiIsICIweDEwIikpOwotCi0gIEVYUEVDVF9FUSgidGVzdF9pbnQzMiBzZXQgdG8gMzRc
biIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICIwWDIy
IikpOwotCi0gIC8vIExlYWRpbmcgMCBpcyAqbm90KiBvY3RhbDsgaXQncyBzdGlsbCBkZWNpbWFs
Ci0gIEVYUEVDVF9FUSgidGVzdF9pbnQzMiBzZXQgdG8gMTBcbiIsCi0gICAgICAgICAgICBTZXRD
b21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICIwMTAiKSk7Ci19Ci0KLS8vIFRlc3RzIHdo
YXQgaGFwcGVucyB3aGVuIHlvdSB0cnkgdG8gc2V0IGEgZmxhZyB0byBhbiBpbGxlZ2FsIHZhbHVl
Ci1URVNUKFNldEZsYWdWYWx1ZVRlc3QsIElsbGVnYWxWYWx1ZXMpIHsKLSAgRkxBR1NfdGVzdF9i
b29sID0gdHJ1ZTsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9IDExOTsKLSAgRkxBR1NfdGVzdF9pbnQ2
NCA9IDExOTE7Ci0gIEZMQUdTX3Rlc3RfdWludDY0ID0gMTE5MTE7Ci0KLSAgRVhQRUNUX0VRKCIi
LAotICAgICAgICAgICAgU2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfYm9vbCIsICIxMiIpKTsK
LQotICBFWFBFQ1RfRVEoIiIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVz
dF9pbnQzMiIsICI3MDAwMDAwMDAwMDAwIikpOwotCi0gIEVYUEVDVF9FUSgiIiwKLSAgICAgICAg
ICAgIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X3VpbnQ2NCIsICItMSIpKTsKLQotICBFWFBF
Q1RfRVEoIiIsCi0gICAgICAgICAgICBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQ2NCIs
ICJub3QgYSBudW1iZXIhIikpOwotCi0gIC8vIFRlc3QgdGhlIGVtcHR5IHN0cmluZyB3aXRoIGVh
Y2ggdHlwZSBvZiBpbnB1dAotICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0
ZXN0X2Jvb2wiLCAiIikpOwotICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0
ZXN0X2ludDMyIiwgIiIpKTsKLSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigi
dGVzdF9pbnQ2NCIsICIiKSk7Ci0gIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExpbmVPcHRpb24o
InRlc3RfdWludDY0IiwgIiIpKTsKLSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlv
bigidGVzdF9kb3VibGUiLCAiIikpOwotICBFWFBFQ1RfRVEoInRlc3Rfc3RyaW5nIHNldCB0byBc
biIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X3N0cmluZyIsICIiKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoRkxBR1NfdGVzdF9ib29sKTsKLSAgRVhQRUNUX0VRKDExOSwgRkxBR1NfdGVzdF9pbnQz
Mik7Ci0gIEVYUEVDVF9FUSgxMTkxLCBGTEFHU190ZXN0X2ludDY0KTsKLSAgRVhQRUNUX0VRKDEx
OTExLCBGTEFHU190ZXN0X3VpbnQ2NCk7Ci19Ci0KLQotLy8gVGVzdHMgdGhhdCB3ZSBvbmx5IGV2
YWx1YXRlIG1hY3JvIGFyZ3Mgb25jZQotVEVTVChNYWNyb0FyZ3MsIEV2YWx1YXRlT25jZSkgewot
ICBFWFBFQ1RfRVEoMTMsIEZMQUdTX2NoYW5nZWFibGVfdmFyKTsKLSAgLy8gTWFrZSBzdXJlIHdl
IGRvbid0ICsrIHRoZSB2YWx1ZSBzb21laG93LCB3aGVuIGV2YWx1YXRpbmcgdGhlIGZsYWcuCi0g
IEVYUEVDVF9FUSgxMywgRkxBR1NfY2hhbmdlYWJsZV92YXIpOwotICAvLyBNYWtlIHN1cmUgdGhl
IG1hY3JvIG9ubHkgZXZhbHVhdGVkIHRoaXMgdmFyIG9uY2UuCi0gIEVYUEVDVF9FUSgxMywgY2hh
bmdlYWJsZV92YXIpOwotICAvLyBNYWtlIHN1cmUgdGhlIGFjdHVhbCB2YWx1ZSBhbmQgZGVmYXVs
dCB2YWx1ZSBhcmUgdGhlIHNhbWUKLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgiY2hh
bmdlYWJsZV92YXIiLCAiMjEiLCBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0VRKDIx
LCBGTEFHU19jaGFuZ2VhYmxlX3Zhcik7Ci19Ci0KLVRFU1QoTWFjcm9BcmdzLCBFdmFsdWF0ZU9u
Y2VCb29sKSB7Ci0gIEVYUEVDVF9UUlVFKEZMQUdTX2NoYW5nZWFibGVfYm9vbF92YXIpOwotICBF
WFBFQ1RfVFJVRShGTEFHU19jaGFuZ2VhYmxlX2Jvb2xfdmFyKTsKLSAgRVhQRUNUX0VRKDgwMDks
IGNoYW5nZWFibGVfYm9vbF92YXIpOwotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJj
aGFuZ2VhYmxlX2Jvb2xfdmFyIiwgImZhbHNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTRVRfRkxBR19JRl9ERUZBVUxUKTsKLSAgRVhQRUNUX0ZBTFNFKEZMQUdTX2NoYW5nZWFi
bGVfYm9vbF92YXIpOwotfQotCi1URVNUKE1hY3JvQXJncywgRXZhbHVhdGVPbmNlU3RyaW5ncykg
ewotICBFWFBFQ1RfRVEoIjEiLCBGTEFHU19jaGFuZ2VhYmxlX3N0cmluZ192YXIpOwotICBFWFBF
Q1RfRVEoIjEiLCBGTEFHU19jaGFuZ2VhYmxlX3N0cmluZ192YXIpOwotICBFWFBFQ1RfRVEoMSwg
Y2hhbmdlYWJsZV9zdHJpbmdfdmFyKTsKLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgi
Y2hhbmdlYWJsZV9zdHJpbmdfdmFyIiwgImRpZmZlcmVudCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0VUX0ZMQUdfSUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgiZGlmZmVyZW50
IiwgRkxBR1NfY2hhbmdlYWJsZV9zdHJpbmdfdmFyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUg
Rm9vRnJvbUVudiBkb2VzIHRoZSByaWdodCB0aGluZwotVEVTVChGcm9tRW52VGVzdCwgTGVnYWxW
YWx1ZXMpIHsKLSAgc2V0ZW52KCJCT09MX1ZBTDEiLCAidHJ1ZSIsIDEpOwotICBzZXRlbnYoIkJP
T0xfVkFMMiIsICJmYWxzZSIsIDEpOwotICBzZXRlbnYoIkJPT0xfVkFMMyIsICIxIiwgMSk7Ci0g
IHNldGVudigiQk9PTF9WQUw0IiwgIkYiLCAxKTsKLSAgRVhQRUNUX1RSVUUoQm9vbEZyb21FbnYo
IkJPT0xfVkFMMSIsIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxTRShCb29sRnJvbUVudigiQk9PTF9W
QUwyIiwgdHJ1ZSkpOwotICBFWFBFQ1RfVFJVRShCb29sRnJvbUVudigiQk9PTF9WQUwzIiwgZmFs
c2UpKTsKLSAgRVhQRUNUX0ZBTFNFKEJvb2xGcm9tRW52KCJCT09MX1ZBTDQiLCB0cnVlKSk7Ci0g
IEVYUEVDVF9UUlVFKEJvb2xGcm9tRW52KCJCT09MX1ZBTF9VTktOT1dOIiwgdHJ1ZSkpOwotICBF
WFBFQ1RfRkFMU0UoQm9vbEZyb21FbnYoIkJPT0xfVkFMX1VOS05PV04iLCBmYWxzZSkpOwotCi0g
IHNldGVudigiSU5UX1ZBTDEiLCAiMSIsIDEpOwotICBzZXRlbnYoIklOVF9WQUwyIiwgIi0xIiwg
MSk7Ci0gIEVYUEVDVF9FUSgxLCBJbnQzMkZyb21FbnYoIklOVF9WQUwxIiwgMTApKTsKLSAgRVhQ
RUNUX0VRKC0xLCBJbnQzMkZyb21FbnYoIklOVF9WQUwyIiwgMTApKTsKLSAgRVhQRUNUX0VRKDEw
LCBJbnQzMkZyb21FbnYoIklOVF9WQUxfVU5LTk9XTiIsIDEwKSk7Ci0KLSAgc2V0ZW52KCJJTlRf
VkFMMyIsICIxMDk5NTExNjI3Nzc2IiwgMSk7Ci0gIEVYUEVDVF9FUSgxLCBJbnQ2NEZyb21FbnYo
IklOVF9WQUwxIiwgMjApKTsKLSAgRVhQRUNUX0VRKC0xLCBJbnQ2NEZyb21FbnYoIklOVF9WQUwy
IiwgMjApKTsKLSAgRVhQRUNUX0VRKDEwOTk1MTE2Mjc3NzZMTCwgSW50NjRGcm9tRW52KCJJTlRf
VkFMMyIsIDIwKSk7Ci0gIEVYUEVDVF9FUSgyMCwgSW50NjRGcm9tRW52KCJJTlRfVkFMX1VOS05P
V04iLCAyMCkpOwotCi0gIEVYUEVDVF9FUSgxLCBVaW50NjRGcm9tRW52KCJJTlRfVkFMMSIsIDMw
KSk7Ci0gIEVYUEVDVF9FUSgxMDk5NTExNjI3Nzc2VUxMLCBVaW50NjRGcm9tRW52KCJJTlRfVkFM
MyIsIDMwKSk7Ci0gIEVYUEVDVF9FUSgzMCwgVWludDY0RnJvbUVudigiSU5UX1ZBTF9VTktOT1dO
IiwgMzApKTsKLQotICAvLyBJIHBpY2sgdmFsdWVzIGhlcmUgdGhhdCBjYW4gYmUgZWFzaWx5IHJl
cHJlc2VudGVkIGV4YWN0bHkgaW4gZmxvYXRpbmctcG9pbnQKLSAgc2V0ZW52KCJET1VCTEVfVkFM
MSIsICIwLjAiLCAxKTsKLSAgc2V0ZW52KCJET1VCTEVfVkFMMiIsICIxLjAiLCAxKTsKLSAgc2V0
ZW52KCJET1VCTEVfVkFMMyIsICItMS4wIiwgMSk7Ci0gIEVYUEVDVF9FUSgwLjAsIERvdWJsZUZy
b21FbnYoIkRPVUJMRV9WQUwxIiwgNDAuMCkpOwotICBFWFBFQ1RfRVEoMS4wLCBEb3VibGVGcm9t
RW52KCJET1VCTEVfVkFMMiIsIDQwLjApKTsKLSAgRVhQRUNUX0VRKC0xLjAsIERvdWJsZUZyb21F
bnYoIkRPVUJMRV9WQUwzIiwgNDAuMCkpOwotICBFWFBFQ1RfRVEoNDAuMCwgRG91YmxlRnJvbUVu
digiRE9VQkxFX1ZBTF9VTktOT1dOIiwgNDAuMCkpOwotCi0gIHNldGVudigiU1RSSU5HX1ZBTDEi
LCAiIiwgMSk7Ci0gIHNldGVudigiU1RSSU5HX1ZBTDIiLCAibXkgaGFwcHkgc3RyaW5nISIsIDEp
OwotICBFWFBFQ1RfU1RSRVEoIiIsIFN0cmluZ0Zyb21FbnYoIlNUUklOR19WQUwxIiwgInVua25v
d24iKSk7Ci0gIEVYUEVDVF9TVFJFUSgibXkgaGFwcHkgc3RyaW5nISIsIFN0cmluZ0Zyb21FbnYo
IlNUUklOR19WQUwyIiwgInVua25vd24iKSk7Ci0gIEVYUEVDVF9TVFJFUSgidW5rbm93biIsIFN0
cmluZ0Zyb21FbnYoIlNUUklOR19WQUxfVU5LTk9XTiIsICJ1bmtub3duIikpOwotfQotCi0jaWZk
ZWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLS8vIFRlc3RzIHRoYXQgdGhlIEZvb0Zyb21FbnYgZGll
cyBvbiBwYXJzZS1lcnJvcgotVEVTVChGcm9tRW52RGVhdGhUZXN0LCBJbGxlZ2FsVmFsdWVzKSB7
Ci0gIHNldGVudigiQk9PTF9CQUQxIiwgInNvIHRydWUhIiwgMSk7Ci0gIHNldGVudigiQk9PTF9C
QUQyIiwgIiIsIDEpOwotICBFWFBFQ1RfREVBVEgoQm9vbEZyb21FbnYoIkJPT0xfQkFEMSIsIGZh
bHNlKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFUSChCb29s
RnJvbUVudigiQk9PTF9CQUQyIiwgdHJ1ZSksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIp
OwotCi0gIHNldGVudigiSU5UX0JBRDEiLCAib25lIiwgMSk7Ci0gIHNldGVudigiSU5UX0JBRDIi
LCAiMTAwMDAwMDAwMDAwMDAwMDAwIiwgMSk7Ci0gIHNldGVudigiSU5UX0JBRDMiLCAiMHh4MTAi
LCAxKTsKLSAgc2V0ZW52KCJJTlRfQkFENCIsICIiLCAxKTsKLSAgRVhQRUNUX0RFQVRIKEludDMy
RnJvbUVudigiSU5UX0JBRDEiLCAxMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwot
ICBFWFBFQ1RfREVBVEgoSW50MzJGcm9tRW52KCJJTlRfQkFEMiIsIDEwKSwgImVycm9yIHBhcnNp
bmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFUSChJbnQzMkZyb21FbnYoIklOVF9CQUQz
IiwgMTApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLSAgRVhQRUNUX0RFQVRIKElu
dDMyRnJvbUVudigiSU5UX0JBRDQiLCAxMCksICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIp
OwotCi0gIHNldGVudigiQklHSU5UX0JBRDEiLCAiMTg0NDY3NDQwNzM3MDk1NTE2MTYwMDAiLCAx
KTsKLSAgRVhQRUNUX0RFQVRIKEludDY0RnJvbUVudigiSU5UX0JBRDEiLCAyMCksICJlcnJvciBw
YXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoSW50NjRGcm9tRW52KCJJTlRf
QkFEMyIsIDIwKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFU
SChJbnQ2NEZyb21FbnYoIklOVF9CQUQ0IiwgMjApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFi
bGUiKTsKLSAgRVhQRUNUX0RFQVRIKEludDY0RnJvbUVudigiQklHSU5UX0JBRDEiLCAyMDApLCAi
ZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLQotICBzZXRlbnYoIkJJR0lOVF9CQUQyIiwg
Ii0xIiwgMSk7Ci0gIEVYUEVDVF9ERUFUSChVaW50NjRGcm9tRW52KCJJTlRfQkFEMSIsIDMwKSwg
ImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFUSChVaW50NjRGcm9t
RW52KCJJTlRfQkFEMyIsIDMwKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIEVY
UEVDVF9ERUFUSChVaW50NjRGcm9tRW52KCJJTlRfQkFENCIsIDMwKSwgImVycm9yIHBhcnNpbmcg
ZW52IHZhcmlhYmxlIik7Ci0gIEVYUEVDVF9ERUFUSChVaW50NjRGcm9tRW52KCJCSUdJTlRfQkFE
MSIsIDMwKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7Ci0gIC8vIFRPRE8oY3NpbHZl
cnMpOiB1bmNvbW1lbnQgdGhpcyB3aGVuIHdlIGRpc2FsbG93IG5lZ2F0aXZlIG51bWJlcnMgZm9y
IHVpbnQ2NAotI2lmIDAKLSAgRVhQRUNUX0RFQVRIKFVpbnQ2NEZyb21FbnYoIkJJR0lOVF9CQUQy
IiwgMzApLCAiZXJyb3IgcGFyc2luZyBlbnYgdmFyaWFibGUiKTsKLSNlbmRpZgotCi0gIHNldGVu
digiRE9VQkxFX0JBRDEiLCAiMC4wLjAiLCAxKTsKLSAgc2V0ZW52KCJET1VCTEVfQkFEMiIsICIi
LCAxKTsKLSAgRVhQRUNUX0RFQVRIKERvdWJsZUZyb21FbnYoIkRPVUJMRV9CQUQxIiwgNDAuMCks
ICJlcnJvciBwYXJzaW5nIGVudiB2YXJpYWJsZSIpOwotICBFWFBFQ1RfREVBVEgoRG91YmxlRnJv
bUVudigiRE9VQkxFX0JBRDIiLCA0MC4wKSwgImVycm9yIHBhcnNpbmcgZW52IHZhcmlhYmxlIik7
Ci19Ci0jZW5kaWYKLQotCi0vLyBUZXN0cyB0aGF0IEZsYWdTYXZlciBjYW4gc2F2ZSB0aGUgc3Rh
dGVzIG9mIHN0cmluZyBmbGFncy4KLVRFU1QoRmxhZ1NhdmVyVGVzdCwgQ2FuU2F2ZVN0cmluZ0Zs
YWdTdGF0ZXMpIHsKLSAgLy8gMS4gSW5pdGlhbGl6ZXMgdGhlIGZsYWdzLgotCi0gIC8vIFN0YXRl
IG9mIGZsYWcgdGVzdF9zdHIxOgotICAvLyAgIGRlZmF1bHQgdmFsdWUgLSAiaW5pdGlhbCIKLSAg
Ly8gICBjdXJyZW50IHZhbHVlIC0gImluaXRpYWwiCi0gIC8vICAgbm90IHNldCAgICAgICAtIHRy
dWUKLQotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjIiLCAic2Vjb25k
IiwgU0VUX0ZMQUdTX1ZBTFVFKTsKLSAgLy8gU3RhdGUgb2YgZmxhZyB0ZXN0X3N0cjI6Ci0gIC8v
ICAgZGVmYXVsdCB2YWx1ZSAtICJpbml0aWFsIgotICAvLyAgIGN1cnJlbnQgdmFsdWUgLSAic2Vj
b25kIgotICAvLyAgIG5vdCBzZXQgICAgICAgLSBmYWxzZQotCi0gIFNldENvbW1hbmRMaW5lT3B0
aW9uV2l0aE1vZGUoInRlc3Rfc3RyMyIsICJzZWNvbmQiLCBTRVRfRkxBR1NfREVGQVVMVCk7Ci0g
IC8vIFN0YXRlIG9mIGZsYWcgdGVzdF9zdHIzOgotICAvLyAgIGRlZmF1bHQgdmFsdWUgLSAic2Vj
b25kIgotICAvLyAgIGN1cnJlbnQgdmFsdWUgLSAic2Vjb25kIgotICAvLyAgIG5vdCBzZXQgICAg
ICAgLSB0cnVlCi0KLSAgLy8gMi4gU2F2ZXMgdGhlIGZsYWcgc3RhdGVzLgotCi0gIHsKLSAgICBG
bGFnU2F2ZXIgZnM7Ci0KLSAgICAvLyAzLiBNb2RpZmllcyB0aGUgZmxhZyBzdGF0ZXMuCi0KLSAg
ICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjEiLCAic2Vjb25kIiwgU0VU
X0ZMQUdTX1ZBTFVFKTsKLSAgICBFWFBFQ1RfRVEoInNlY29uZCIsIEZMQUdTX3Rlc3Rfc3RyMSk7
Ci0gICAgLy8gU3RhdGUgb2YgZmxhZyB0ZXN0X3N0cjE6Ci0gICAgLy8gICBkZWZhdWx0IHZhbHVl
IC0gInNlY29uZCIKLSAgICAvLyAgIGN1cnJlbnQgdmFsdWUgLSAic2Vjb25kIgotICAgIC8vICAg
bm90IHNldCAgICAgICAtIHRydWUKLQotICAgIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUo
InRlc3Rfc3RyMiIsICJ0aGlyZCIsIFNFVF9GTEFHU19ERUZBVUxUKTsKLSAgICBFWFBFQ1RfRVEo
InNlY29uZCIsIEZMQUdTX3Rlc3Rfc3RyMik7Ci0gICAgLy8gU3RhdGUgb2YgZmxhZyB0ZXN0X3N0
cjI6Ci0gICAgLy8gICBkZWZhdWx0IHZhbHVlIC0gInRoaXJkIgotICAgIC8vICAgY3VycmVudCB2
YWx1ZSAtICJzZWNvbmQiCi0gICAgLy8gICBub3Qgc2V0ICAgICAgIC0gZmFsc2UKLQotICAgIFNl
dENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3Rfc3RyMyIsICJ0aGlyZCIsIFNFVF9GTEFH
U19WQUxVRSk7Ci0gICAgRVhQRUNUX0VRKCJ0aGlyZCIsIEZMQUdTX3Rlc3Rfc3RyMyk7Ci0gICAg
Ly8gU3RhdGUgb2YgZmxhZyB0ZXN0X3N0cjE6Ci0gICAgLy8gICBkZWZhdWx0IHZhbHVlIC0gInNl
Y29uZCIKLSAgICAvLyAgIGN1cnJlbnQgdmFsdWUgLSAidGhpcmQiCi0gICAgLy8gICBub3Qgc2V0
ICAgICAgIC0gZmFsc2UKLQotICAgIC8vIDQuIFJlc3RvcmVzIHRoZSBmbGFnIHN0YXRlcy4KLSAg
fQotCi0gIC8vIDUuIFZlcmlmaWVzIHRoYXQgdGhlIHN0YXRlcyB3ZXJlIHJlc3RvcmVkLgotCi0g
IC8vIFZlcmlmaWVzIHRoYXQgdGhlIHZhbHVlIG9mIHRlc3Rfc3RyMSB3YXMgcmVzdG9yZWQuCi0g
IEVYUEVDVF9FUSgiaW5pdGlhbCIsIEZMQUdTX3Rlc3Rfc3RyMSk7Ci0gIC8vIFZlcmlmaWVzIHRo
YXQgdGhlICJub3Qgc2V0IiBhdHRyaWJ1dGUgb2YgdGVzdF9zdHIxIHdhcyByZXN0b3JlZCB0byB0
cnVlLgotICBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X3N0cjEiLCAic2Vjb25k
IiwgU0VUX0ZMQUdfSUZfREVGQVVMVCk7Ci0gIEVYUEVDVF9FUSgic2Vjb25kIiwgRkxBR1NfdGVz
dF9zdHIxKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiB0ZXN0X3N0cjIgd2Fz
IHJlc3RvcmVkLgotICBFWFBFQ1RfRVEoInNlY29uZCIsIEZMQUdTX3Rlc3Rfc3RyMik7Ci0gIC8v
IFZlcmlmaWVzIHRoYXQgdGhlICJub3Qgc2V0IiBhdHRyaWJ1dGUgb2YgdGVzdF9zdHIyIHdhcyBy
ZXN0b3JlZCB0byBmYWxzZS4KLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9z
dHIyIiwgImZvdXJ0aCIsIFNFVF9GTEFHX0lGX0RFRkFVTFQpOwotICBFWFBFQ1RfRVEoInNlY29u
ZCIsIEZMQUdTX3Rlc3Rfc3RyMik7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgdmFsdWUgb2Yg
dGVzdF9zdHIzIHdhcyByZXN0b3JlZC4KLSAgRVhQRUNUX0VRKCJzZWNvbmQiLCBGTEFHU190ZXN0
X3N0cjMpOwotICAvLyBWZXJpZmllcyB0aGF0IHRoZSAibm90IHNldCIgYXR0cmlidXRlIG9mIHRl
c3Rfc3RyMyB3YXMgcmVzdG9yZWQgdG8gdHJ1ZS4KLSAgU2V0Q29tbWFuZExpbmVPcHRpb25XaXRo
TW9kZSgidGVzdF9zdHIzIiwgImZvdXJ0aCIsIFNFVF9GTEFHX0lGX0RFRkFVTFQpOwotICBFWFBF
Q1RfRVEoImZvdXJ0aCIsIEZMQUdTX3Rlc3Rfc3RyMyk7Ci19Ci0KLQotLy8gVGVzdHMgdGhhdCBG
bGFnU2F2ZXIgY2FuIHNhdmUgdGhlIHZhbHVlcyBvZiB2YXJpb3VzLXR5cGVkIGZsYWdzLgotVEVT
VChGbGFnU2F2ZXJUZXN0LCBDYW5TYXZlVmFyaW91c1R5cGVkRmxhZ1ZhbHVlcykgewotICAvLyBJ
bml0aWFsaXplcyB0aGUgZmxhZ3MuCi0gIEZMQUdTX3Rlc3RfYm9vbCA9IGZhbHNlOwotICBGTEFH
U190ZXN0X2ludDMyID0gLTE7Ci0gIEZMQUdTX3Rlc3RfaW50NjQgPSAtMjsKLSAgRkxBR1NfdGVz
dF91aW50NjQgPSAzOwotICBGTEFHU190ZXN0X2RvdWJsZSA9IDQuMDsKLSAgRkxBR1NfdGVzdF9z
dHJpbmcgPSAiZ29vZCI7Ci0KLSAgLy8gU2F2ZXMgdGhlIGZsYWcgc3RhdGVzLgotICB7Ci0gICAg
RmxhZ1NhdmVyIGZzOwotCi0gICAgLy8gTW9kaWZpZXMgdGhlIGZsYWdzLgotICAgIEZMQUdTX3Rl
c3RfYm9vbCA9IHRydWU7Ci0gICAgRkxBR1NfdGVzdF9pbnQzMiA9IC01OwotICAgIEZMQUdTX3Rl
c3RfaW50NjQgPSAtNjsKLSAgICBGTEFHU190ZXN0X3VpbnQ2NCA9IDc7Ci0gICAgRkxBR1NfdGVz
dF9kb3VibGUgPSA4LjA7Ci0gICAgRkxBR1NfdGVzdF9zdHJpbmcgPSAiYmFkIjsKLQotICAgIC8v
IFJlc3RvcmVzIHRoZSBmbGFnIHN0YXRlcy4KLSAgfQotCi0gIC8vIFZlcmlmaWVzIHRoZSBmbGFn
IHZhbHVlcyB3ZXJlIHJlc3RvcmVkLgotICBFWFBFQ1RfRkFMU0UoRkxBR1NfdGVzdF9ib29sKTsK
LSAgRVhQRUNUX0VRKC0xLCBGTEFHU190ZXN0X2ludDMyKTsKLSAgRVhQRUNUX0VRKC0yLCBGTEFH
U190ZXN0X2ludDY0KTsKLSAgRVhQRUNUX0VRKDMsIEZMQUdTX3Rlc3RfdWludDY0KTsKLSAgRVhQ
RUNUX0RPVUJMRV9FUSg0LjAsIEZMQUdTX3Rlc3RfZG91YmxlKTsKLSAgRVhQRUNUX0VRKCJnb29k
IiwgRkxBR1NfdGVzdF9zdHJpbmcpOwotfQotCi1URVNUKEdldEFsbEZsYWdzVGVzdCwgQmFzZVRl
c3QpIHsKLSAgdmVjdG9yPENvbW1hbmRMaW5lRmxhZ0luZm8+IGZsYWdzOwotICBHZXRBbGxGbGFn
cygmZmxhZ3MpOwotICBib29sIGZvdW5kX3Rlc3RfYm9vbCA9IGZhbHNlOwotICB2ZWN0b3I8Q29t
bWFuZExpbmVGbGFnSW5mbz46OmNvbnN0X2l0ZXJhdG9yIGk7Ci0gIGZvciAoaSA9IGZsYWdzLmJl
Z2luKCk7IGkgIT0gZmxhZ3MuZW5kKCk7ICsraSkgewotICAgIGlmIChpLT5uYW1lID09ICJ0ZXN0
X2Jvb2wiKSB7Ci0gICAgICBmb3VuZF90ZXN0X2Jvb2wgPSB0cnVlOwotICAgICAgRVhQRUNUX0VR
KGktPnR5cGUsICJib29sIik7Ci0gICAgICBFWFBFQ1RfRVEoaS0+ZGVmYXVsdF92YWx1ZSwgImZh
bHNlIik7Ci0gICAgICBFWFBFQ1RfRVEoaS0+ZmxhZ19wdHIsICZGTEFHU190ZXN0X2Jvb2wpOwot
ICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0gIEVYUEVDVF9UUlVFKGZvdW5kX3Rlc3RfYm9vbCk7
Ci19Ci0KLVRFU1QoU2hvd1VzYWdlV2l0aEZsYWdzVGVzdCwgQmFzZVRlc3QpIHsKLSAgLy8gVE9E
Tyhjc2lsdmVycyk6IHRlc3QgdGhpcyBieSBhbGxvd2luZyBvdXRwdXQgb3RoZXIgdGhhbiB0byBz
dGRvdXQuCi0gIC8vIE5vdCB1cmdlbnQgc2luY2UgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHRlc3Rl
ZCB2aWEKLSAgLy8gZ2ZsYWdzX3VuaXR0ZXN0LnNoLCB0aG91Z2ggb25seSB0aHJvdWdoIHVzZSBv
ZiAtLWhlbHAuCi19Ci0KLVRFU1QoU2hvd1VzYWdlV2l0aEZsYWdzUmVzdHJpY3RUZXN0LCBCYXNl
VGVzdCkgewotICAvLyBUT0RPKGNzaWx2ZXJzKTogdGVzdCB0aGlzIGJ5IGFsbG93aW5nIG91dHB1
dCBvdGhlciB0aGFuIHRvIHN0ZG91dC4KLSAgLy8gTm90IHVyZ2VudCBzaW5jZSB0aGlzIGZ1bmN0
aW9uYWxpdHkgaXMgdGVzdGVkIHZpYQotICAvLyBnZmxhZ3NfdW5pdHRlc3Quc2gsIHRob3VnaCBv
bmx5IHRocm91Z2ggdXNlIG9mIC0taGVscG1hdGNoLgotfQotCi0vLyBOb3RlOiBhbGwgdGhlc2Ug
YXJndi1iYXNlZCB0ZXN0cyBkZXBlbmQgb24gU2V0QXJndiBiZWluZyBjYWxsZWQKLS8vIGJlZm9y
ZSBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKSBpbiBtYWluKCksIGJlbG93LgotVEVTVChHZXRBcmd2
c1Rlc3QsIEJhc2VUZXN0KSB7Ci0gIHZlY3RvcjxzdHJpbmc+IGFyZ3ZzID0gR2V0QXJndnMoKTsK
LSAgRVhQRUNUX0VRKDQsIGFyZ3ZzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgiL3Rlc3QvYXJndi9m
b3IvZ2ZsYWdzX3VuaXR0ZXN0IiwgYXJndnNbMF0pOwotICBFWFBFQ1RfRVEoImFyZ3YgMiIsIGFy
Z3ZzWzFdKTsKLSAgRVhQRUNUX0VRKCIzcmQgYXJndiIsIGFyZ3ZzWzJdKTsKLSAgRVhQRUNUX0VR
KCJhcmd2ICM0IiwgYXJndnNbM10pOwotfQotCi1URVNUKEdldEFyZ3ZUZXN0LCBCYXNlVGVzdCkg
ewotICBFWFBFQ1RfU1RSRVEoIi90ZXN0L2FyZ3YvZm9yL2dmbGFnc191bml0dGVzdCAiCi0gICAg
ICAgICAgICAgICAiYXJndiAyIDNyZCBhcmd2IGFyZ3YgIzQiLCBHZXRBcmd2KCkpOwotfQotCi1U
RVNUKEdldEFyZ3YwVGVzdCwgQmFzZVRlc3QpIHsKLSAgRVhQRUNUX1NUUkVRKCIvdGVzdC9hcmd2
L2Zvci9nZmxhZ3NfdW5pdHRlc3QiLCBHZXRBcmd2MCgpKTsKLX0KLQotVEVTVChHZXRBcmd2U3Vt
VGVzdCwgQmFzZVRlc3QpIHsKLSAgLy8gVGhpcyBudW1iZXIgaXMganVzdCB0aGUgc3VtIG9mIHRo
ZSBBU0NJSSB2YWx1ZXMgb2YgYWxsIHRoZSBjaGFycwotICAvLyBpbiBHZXRBcmd2KCkuCi0gIEVY
UEVDVF9FUSg0OTA0LCBHZXRBcmd2U3VtKCkpOwotfQotCi1URVNUKFByb2dyYW1JbnZvY2F0aW9u
TmFtZVRlc3QsIEJhc2VUZXN0KSB7Ci0gIEVYUEVDVF9TVFJFUSgiL3Rlc3QvYXJndi9mb3IvZ2Zs
YWdzX3VuaXR0ZXN0IiwKLSAgICAgICAgICAgICAgIFByb2dyYW1JbnZvY2F0aW9uTmFtZSgpKTsK
LX0KLQotVEVTVChQcm9ncmFtSW52b2NhdGlvblNob3J0TmFtZVRlc3QsIEJhc2VUZXN0KSB7Ci0g
IEVYUEVDVF9TVFJFUSgiZ2ZsYWdzX3VuaXR0ZXN0IiwgUHJvZ3JhbUludm9jYXRpb25TaG9ydE5h
bWUoKSk7Ci19Ci0KLVRFU1QoUHJvZ3JhbVVzYWdlVGVzdCwgQmFzZVRlc3QpIHsgIC8vIERlcGVu
ZHMgb24gMXN0IGFyZyB0byBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKQotICBFWFBFQ1RfU1RSRVEo
Ii90ZXN0L2FyZ3YvZm9yL2dmbGFnc191bml0dGVzdDogIgotICAgICAgICAgICAgICAgIjx1c2Vs
ZXNzIGZsYWc+IFsuLi5dXG5Eb2VzIHNvbWV0aGluZyB1c2VsZXNzLlxuIiwKLSAgICAgICAgICAg
ICAgIFByb2dyYW1Vc2FnZSgpKTsKLX0KLQotVEVTVChHZXRDb21tYW5kTGluZU9wdGlvblRlc3Qs
IE5hbWVFeGlzdHNBbmRJc0RlZmF1bHQpIHsKLSAgc3RyaW5nIHZhbHVlKCJ3aWxsIGJlIGNoYW5n
ZWQiKTsKLSAgYm9vbCByID0gR2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfYm9vbCIsICZ2YWx1
ZSk7Ci0gIEVYUEVDVF9UUlVFKHIpOwotICBFWFBFQ1RfRVEoImZhbHNlIiwgdmFsdWUpOwotCi0g
IHIgPSBHZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICZ2YWx1ZSk7Ci0gIEVYUEVD
VF9UUlVFKHIpOwotICBFWFBFQ1RfRVEoIi0xIiwgdmFsdWUpOwotfQotCi1URVNUKEdldENvbW1h
bmRMaW5lT3B0aW9uVGVzdCwgTmFtZUV4aXN0c0FuZFdhc0Fzc2lnbmVkKSB7Ci0gIEZMQUdTX3Rl
c3RfaW50MzIgPSA0MDA7Ci0gIHN0cmluZyB2YWx1ZSgid2lsbCBiZSBjaGFuZ2VkIik7Ci0gIGNv
bnN0IGJvb2wgciA9IEdldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ludDMyIiwgJnZhbHVlKTsK
LSAgRVhQRUNUX1RSVUUocik7Ci0gIEVYUEVDVF9FUSgiNDAwIiwgdmFsdWUpOwotfQotCi1URVNU
KEdldENvbW1hbmRMaW5lT3B0aW9uVGVzdCwgTmFtZUV4aXN0c0FuZFdhc1NldCkgewotICBTZXRD
b21tYW5kTGluZU9wdGlvbigidGVzdF9pbnQzMiIsICI3MDAiKTsKLSAgc3RyaW5nIHZhbHVlKCJ3
aWxsIGJlIGNoYW5nZWQiKTsKLSAgY29uc3QgYm9vbCByID0gR2V0Q29tbWFuZExpbmVPcHRpb24o
InRlc3RfaW50MzIiLCAmdmFsdWUpOwotICBFWFBFQ1RfVFJVRShyKTsKLSAgRVhQRUNUX0VRKCI3
MDAiLCB2YWx1ZSk7Ci19Ci0KLVRFU1QoR2V0Q29tbWFuZExpbmVPcHRpb25UZXN0LCBOYW1lRXhp
c3RzQW5kV2FzTm90U2V0KSB7Ci0gIC8vIFRoaXMgZG9lc24ndCBzZXQgdGhlIGZsYWcncyB2YWx1
ZSwgYnV0IHJhdGhlciBpdHMgZGVmYXVsdCB2YWx1ZS4KLSAgLy8gaXNfZGVmYXVsdCBpcyBzdGls
bCB0cnVlLCBidXQgdGhlICdkZWZhdWx0JyB2YWx1ZSByZXR1cm5lZCBoYXMgY2hhbmdlZCEKLSAg
U2V0Q29tbWFuZExpbmVPcHRpb25XaXRoTW9kZSgidGVzdF9pbnQzMiIsICI4MDAiLCBTRVRfRkxB
R1NfREVGQVVMVCk7Ci0gIHN0cmluZyB2YWx1ZSgid2lsbCBiZSBjaGFuZ2VkIik7Ci0gIGNvbnN0
IGJvb2wgciA9IEdldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ludDMyIiwgJnZhbHVlKTsKLSAg
RVhQRUNUX1RSVUUocik7Ci0gIEVYUEVDVF9FUSgiODAwIiwgdmFsdWUpOwotICBFWFBFQ1RfVFJV
RShHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWUoInRlc3RfaW50MzIiKS5pc19kZWZhdWx0KTsK
LX0KLQotVEVTVChHZXRDb21tYW5kTGluZU9wdGlvblRlc3QsIE5hbWVFeGlzdHNBbmRXYXNDb25k
aXRpb25hbGx5U2V0KSB7Ci0gIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3RfaW50
MzIiLCAiOTAwIiwgU0VUX0ZMQUdfSUZfREVGQVVMVCk7Ci0gIHN0cmluZyB2YWx1ZSgid2lsbCBi
ZSBjaGFuZ2VkIik7Ci0gIGNvbnN0IGJvb2wgciA9IEdldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0
X2ludDMyIiwgJnZhbHVlKTsKLSAgRVhQRUNUX1RSVUUocik7Ci0gIEVYUEVDVF9FUSgiOTAwIiwg
dmFsdWUpOwotfQotCi1URVNUKEdldENvbW1hbmRMaW5lT3B0aW9uVGVzdCwgTmFtZURvZXNOb3RF
eGlzdCkgewotICBzdHJpbmcgdmFsdWUoIndpbGwgbm90IGJlIGNoYW5nZWQiKTsKLSAgY29uc3Qg
Ym9vbCByID0gR2V0Q29tbWFuZExpbmVPcHRpb24oInRlc3RfaW50MzIxMCIsICZ2YWx1ZSk7Ci0g
IEVYUEVDVF9GQUxTRShyKTsKLSAgRVhQRUNUX0VRKCJ3aWxsIG5vdCBiZSBjaGFuZ2VkIiwgdmFs
dWUpOwotfQotCi1URVNUKEdldENvbW1hbmRMaW5lRmxhZ0luZm9UZXN0LCBGbGFnRXhpc3RzKSB7
Ci0gIENvbW1hbmRMaW5lRmxhZ0luZm8gaW5mbzsKLSAgYm9vbCByID0gR2V0Q29tbWFuZExpbmVG
bGFnSW5mbygidGVzdF9pbnQzMiIsICZpbmZvKTsKLSAgRVhQRUNUX1RSVUUocik7Ci0gIEVYUEVD
VF9FUSgidGVzdF9pbnQzMiIsIGluZm8ubmFtZSk7Ci0gIEVYUEVDVF9FUSgiaW50MzIiLCBpbmZv
LnR5cGUpOwotICBFWFBFQ1RfRVEoIiIsIGluZm8uZGVzY3JpcHRpb24pOwotICBFWFBFQ1RfRVEo
Ii0xIiwgaW5mby5jdXJyZW50X3ZhbHVlKTsKLSAgRVhQRUNUX0VRKCItMSIsIGluZm8uZGVmYXVs
dF92YWx1ZSk7Ci0gIEVYUEVDVF9UUlVFKGluZm8uaXNfZGVmYXVsdCk7Ci0gIEVYUEVDVF9GQUxT
RShpbmZvLmhhc192YWxpZGF0b3JfZm4pOwotICBFWFBFQ1RfRVEoJkZMQUdTX3Rlc3RfaW50MzIs
IGluZm8uZmxhZ19wdHIpOwotCi0gIEZMQUdTX3Rlc3RfYm9vbCA9IHRydWU7Ci0gIHIgPSBHZXRD
b21tYW5kTGluZUZsYWdJbmZvKCJ0ZXN0X2Jvb2wiLCAmaW5mbyk7Ci0gIEVYUEVDVF9UUlVFKHIp
OwotICBFWFBFQ1RfRVEoInRlc3RfYm9vbCIsIGluZm8ubmFtZSk7Ci0gIEVYUEVDVF9FUSgiYm9v
bCIsIGluZm8udHlwZSk7Ci0gIEVYUEVDVF9FUSgidGVzdHMgYm9vbC1uZXNzIiwgaW5mby5kZXNj
cmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgidHJ1ZSIsIGluZm8uY3VycmVudF92YWx1ZSk7Ci0gIEVY
UEVDVF9FUSgiZmFsc2UiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwotICBFWFBFQ1RfRkFMU0UoaW5m
by5pc19kZWZhdWx0KTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaGFzX3ZhbGlkYXRvcl9mbik7Ci0g
IEVYUEVDVF9FUSgmRkxBR1NfdGVzdF9ib29sLCBpbmZvLmZsYWdfcHRyKTsKLQotICBGTEFHU190
ZXN0X2Jvb2wgPSBmYWxzZTsKLSAgciA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm8oInRlc3RfYm9v
bCIsICZpbmZvKTsKLSAgRVhQRUNUX1RSVUUocik7Ci0gIEVYUEVDVF9FUSgidGVzdF9ib29sIiwg
aW5mby5uYW1lKTsKLSAgRVhQRUNUX0VRKCJib29sIiwgaW5mby50eXBlKTsKLSAgRVhQRUNUX0VR
KCJ0ZXN0cyBib29sLW5lc3MiLCBpbmZvLmRlc2NyaXB0aW9uKTsKLSAgRVhQRUNUX0VRKCJmYWxz
ZSIsIGluZm8uY3VycmVudF92YWx1ZSk7Ci0gIEVYUEVDVF9FUSgiZmFsc2UiLCBpbmZvLmRlZmF1
bHRfdmFsdWUpOwotICBFWFBFQ1RfRkFMU0UoaW5mby5pc19kZWZhdWx0KTsgIC8vIHZhbHVlIGlz
IHNhbWUsIGJ1dCBmbGFnICp3YXMqIG1vZGlmaWVkCi0gIEVYUEVDVF9GQUxTRShpbmZvLmhhc192
YWxpZGF0b3JfZm4pOwotICBFWFBFQ1RfRVEoJkZMQUdTX3Rlc3RfYm9vbCwgaW5mby5mbGFnX3B0
cik7Ci19Ci0KLVRFU1QoR2V0Q29tbWFuZExpbmVGbGFnSW5mb1Rlc3QsIEZsYWdEb2VzTm90RXhp
c3QpIHsKLSAgQ29tbWFuZExpbmVGbGFnSW5mbyBpbmZvOwotICAvLyBTZXQgdG8gc29tZSByYW5k
b20gdmFsdWVzIHRoYXQgR2V0Q29tbWFuZExpbmVGbGFnSW5mbyBzaG91bGQgbm90IGNoYW5nZQot
ICBpbmZvLm5hbWUgPSAibmFtZSI7Ci0gIGluZm8udHlwZSA9ICJ0eXBlIjsKLSAgaW5mby5jdXJy
ZW50X3ZhbHVlID0gImN1cnIiOwotICBpbmZvLmRlZmF1bHRfdmFsdWUgPSAiZGVmIjsKLSAgaW5m
by5maWxlbmFtZSA9ICIvIjsKLSAgaW5mby5pc19kZWZhdWx0ID0gZmFsc2U7Ci0gIGluZm8uaGFz
X3ZhbGlkYXRvcl9mbiA9IHRydWU7Ci0gIGluZm8uZmxhZ19wdHIgPSBOVUxMOwotICBib29sIHIg
PSBHZXRDb21tYW5kTGluZUZsYWdJbmZvKCJ0ZXN0X2ludDMyMTAiLCAmaW5mbyk7Ci0gIEVYUEVD
VF9GQUxTRShyKTsKLSAgRVhQRUNUX0VRKCJuYW1lIiwgaW5mby5uYW1lKTsKLSAgRVhQRUNUX0VR
KCJ0eXBlIiwgaW5mby50eXBlKTsKLSAgRVhQRUNUX0VRKCIiLCBpbmZvLmRlc2NyaXB0aW9uKTsK
LSAgRVhQRUNUX0VRKCJjdXJyIiwgaW5mby5jdXJyZW50X3ZhbHVlKTsKLSAgRVhQRUNUX0VRKCJk
ZWYiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwotICBFWFBFQ1RfRVEoIi8iLCBpbmZvLmZpbGVuYW1l
KTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaXNfZGVmYXVsdCk7Ci0gIEVYUEVDVF9UUlVFKGluZm8u
aGFzX3ZhbGlkYXRvcl9mbik7Ci0gIEVYUEVDVF9FUShOVUxMLCBpbmZvLmZsYWdfcHRyKTsKLX0K
LQotVEVTVChHZXRDb21tYW5kTGluZUZsYWdJbmZvT3JEaWVUZXN0LCBGbGFnRXhpc3RzQW5kSXNE
ZWZhdWx0KSB7Ci0gIENvbW1hbmRMaW5lRmxhZ0luZm8gaW5mbzsKLSAgaW5mbyA9IEdldENvbW1h
bmRMaW5lRmxhZ0luZm9PckRpZSgidGVzdF9pbnQzMiIpOwotICBFWFBFQ1RfRVEoInRlc3RfaW50
MzIiLCBpbmZvLm5hbWUpOwotICBFWFBFQ1RfRVEoImludDMyIiwgaW5mby50eXBlKTsKLSAgRVhQ
RUNUX0VRKCIiLCBpbmZvLmRlc2NyaXB0aW9uKTsKLSAgRVhQRUNUX0VRKCItMSIsIGluZm8uY3Vy
cmVudF92YWx1ZSk7Ci0gIEVYUEVDVF9FUSgiLTEiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwotICBF
WFBFQ1RfVFJVRShpbmZvLmlzX2RlZmF1bHQpOwotICBFWFBFQ1RfRVEoJkZMQUdTX3Rlc3RfaW50
MzIsIGluZm8uZmxhZ19wdHIpOwotICBpbmZvID0gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGll
KCJ0ZXN0X2Jvb2wiKTsKLSAgRVhQRUNUX0VRKCJ0ZXN0X2Jvb2wiLCBpbmZvLm5hbWUpOwotICBF
WFBFQ1RfRVEoImJvb2wiLCBpbmZvLnR5cGUpOwotICBFWFBFQ1RfRVEoInRlc3RzIGJvb2wtbmVz
cyIsIGluZm8uZGVzY3JpcHRpb24pOwotICBFWFBFQ1RfRVEoImZhbHNlIiwgaW5mby5jdXJyZW50
X3ZhbHVlKTsKLSAgRVhQRUNUX0VRKCJmYWxzZSIsIGluZm8uZGVmYXVsdF92YWx1ZSk7Ci0gIEVY
UEVDVF9UUlVFKGluZm8uaXNfZGVmYXVsdCk7Ci0gIEVYUEVDVF9GQUxTRShpbmZvLmhhc192YWxp
ZGF0b3JfZm4pOwotICBFWFBFQ1RfRVEoJkZMQUdTX3Rlc3RfYm9vbCwgaW5mby5mbGFnX3B0cik7
Ci19Ci0KLVRFU1QoR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllVGVzdCwgRmxhZ0V4aXN0c0Fu
ZFdhc0Fzc2lnbmVkKSB7Ci0gIEZMQUdTX3Rlc3RfaW50MzIgPSA0MDA7Ci0gIENvbW1hbmRMaW5l
RmxhZ0luZm8gaW5mbzsKLSAgaW5mbyA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm9PckRpZSgidGVz
dF9pbnQzMiIpOwotICBFWFBFQ1RfRVEoInRlc3RfaW50MzIiLCBpbmZvLm5hbWUpOwotICBFWFBF
Q1RfRVEoImludDMyIiwgaW5mby50eXBlKTsKLSAgRVhQRUNUX0VRKCIiLCBpbmZvLmRlc2NyaXB0
aW9uKTsKLSAgRVhQRUNUX0VRKCI0MDAiLCBpbmZvLmN1cnJlbnRfdmFsdWUpOwotICBFWFBFQ1Rf
RVEoIi0xIiwgaW5mby5kZWZhdWx0X3ZhbHVlKTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaXNfZGVm
YXVsdCk7Ci0gIEVYUEVDVF9FUSgmRkxBR1NfdGVzdF9pbnQzMiwgaW5mby5mbGFnX3B0cik7Ci0g
IEZMQUdTX3Rlc3RfYm9vbCA9IHRydWU7Ci0gIGluZm8gPSBHZXRDb21tYW5kTGluZUZsYWdJbmZv
T3JEaWUoInRlc3RfYm9vbCIpOwotICBFWFBFQ1RfRVEoInRlc3RfYm9vbCIsIGluZm8ubmFtZSk7
Ci0gIEVYUEVDVF9FUSgiYm9vbCIsIGluZm8udHlwZSk7Ci0gIEVYUEVDVF9FUSgidGVzdHMgYm9v
bC1uZXNzIiwgaW5mby5kZXNjcmlwdGlvbik7Ci0gIEVYUEVDVF9FUSgidHJ1ZSIsIGluZm8uY3Vy
cmVudF92YWx1ZSk7Ci0gIEVYUEVDVF9FUSgiZmFsc2UiLCBpbmZvLmRlZmF1bHRfdmFsdWUpOwot
ICBFWFBFQ1RfRkFMU0UoaW5mby5pc19kZWZhdWx0KTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaGFz
X3ZhbGlkYXRvcl9mbik7Ci0gIEVYUEVDVF9FUSgmRkxBR1NfdGVzdF9ib29sLCBpbmZvLmZsYWdf
cHRyKTsKLX0KLQotI2lmZGVmIEdURVNUX0hBU19ERUFUSF9URVNUCi1URVNUKEdldENvbW1hbmRM
aW5lRmxhZ0luZm9PckRpZURlYXRoVGVzdCwgRmxhZ0RvZXNOb3RFeGlzdCkgewotICBFWFBFQ1Rf
REVBVEgoR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKCJ0ZXN0X2ludDMyMTAiKSwKLSAgICAg
ICAgICAgICAgICIuKjogZmxhZyB0ZXN0X2ludDMyMTAgZG9lcyBub3QgZXhpc3QiKTsKLX0KLSNl
bmRpZgotCi0KLS8vIFRoZXNlIGFyZSBsaWdodGx5IHRlc3RlZCBiZWNhdXNlIHRoZXkncmUgZGVw
cmVjYXRlZC4gIEJhc2ljYWxseSwKLS8vIHRoZSB0ZXN0cyBhcmUgbWVhbnQgdG8gY292ZXIgaG93
IGV4aXN0aW5nIHVzZXJzIHVzZSB0aGVzZSBmdW5jdGlvbnMsCi0vLyBidXQgbm90IG5lY2Vzc2Fy
aWx5IGhvdyBuZXcgdXNlcnMgY291bGQgdXNlIHRoZW0uCi1URVNUKERlcHJlY2F0ZWRGdW5jdGlv
bnNUZXN0LCBDb21tYW5kbGluZUZsYWdzSW50b1N0cmluZykgewotICBzdHJpbmcgcyA9IENvbW1h
bmRsaW5lRmxhZ3NJbnRvU3RyaW5nKCk7Ci0gIEVYUEVDVF9ORShzdHJpbmc6Om5wb3MsIHMuZmlu
ZCgiLS10ZXN0X2Jvb2w9IikpOwotfQotCi1URVNUKERlcHJlY2F0ZWRGdW5jdGlvbnNUZXN0LCBB
cHBlbmRGbGFnc0ludG9GaWxlKSB7Ci0gIEZMQUdTX3Rlc3RfaW50MzIgPSAxMDsgICAgIC8vIGp1
c3QgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIGludGVyZXN0aW5nCi0gIHN0cmluZyBmaWxlbmFtZShU
bXBGaWxlKCJmbGFnZmlsZSIpKTsKLSAgdW5saW5rKGZpbGVuYW1lLmNfc3RyKCkpOyAgLy8ganVz
dCB0byBiZSBzYWZlCi0gIGNvbnN0IGJvb2wgciA9IEFwcGVuZEZsYWdzSW50b0ZpbGUoZmlsZW5h
bWUsICJub3QgdGhlIHJlYWwgYXJndjAiKTsKLSAgRVhQRUNUX1RSVUUocik7Ci0KLSAgRklMRSog
ZnA7Ci0gIEVYUEVDVF9FUSgwLCBTYWZlRk9wZW4oJmZwLCBmaWxlbmFtZS5jX3N0cigpLCAiciIp
KTsKLSAgRVhQRUNUX1RSVUUoZnAgIT0gTlVMTCk7Ci0gIGNoYXIgbGluZVs4MTkyXTsKLSAgRVhQ
RUNUX1RSVUUoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLTEsIGZwKSAhPSBOVUxMKTsgIC8vIGdl
dCB0aGUgZmlyc3QgbGluZQotICAvLyBGaXJzdCBsaW5lIHNob3VsZCBiZSBwcm9nbmFtZS4KLSAg
RVhQRUNUX1NUUkVRKCJub3QgdGhlIHJlYWwgYXJndjBcbiIsIGxpbmUpOwotCi0gIGJvb2wgZm91
bmRfYm9vbCA9IGZhbHNlLCBmb3VuZF9pbnQzMiA9IGZhbHNlOwotICB3aGlsZSAoZmdldHMobGlu
ZSwgc2l6ZW9mKGxpbmUpLTEsIGZwKSkgewotICAgIGxpbmVbc2l6ZW9mKGxpbmUpLTFdID0gJ1ww
JzsgICAgLy8ganVzdCB0byBiZSBzYWZlCi0gICAgaWYgKHN0cmNtcChsaW5lLCAiLS10ZXN0X2Jv
b2w9ZmFsc2VcbiIpID09IDApCi0gICAgICBmb3VuZF9ib29sID0gdHJ1ZTsKLSAgICBpZiAoc3Ry
Y21wKGxpbmUsICItLXRlc3RfaW50MzI9MTBcbiIpID09IDApCi0gICAgICBmb3VuZF9pbnQzMiA9
IHRydWU7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoZm91bmRfaW50MzIpOwotICBFWFBFQ1RfVFJVRShm
b3VuZF9ib29sKTsKLSAgZmNsb3NlKGZwKTsKLX0KLQotVEVTVChEZXByZWNhdGVkRnVuY3Rpb25z
VGVzdCwgUmVhZEZyb21GbGFnc0ZpbGUpIHsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9IC0xMDsgICAg
Ly8ganVzdCB0byBtYWtlIHRoZSB0ZXN0IG1vcmUgaW50ZXJlc3RpbmcKLSAgc3RyaW5nIGZpbGVu
YW1lKFRtcEZpbGUoImZsYWdmaWxlMiIpKTsKLSAgdW5saW5rKGZpbGVuYW1lLmNfc3RyKCkpOyAg
Ly8ganVzdCB0byBiZSBzYWZlCi0gIGJvb2wgciA9IEFwcGVuZEZsYWdzSW50b0ZpbGUoZmlsZW5h
bWUsIEdldEFyZ3YwKCkpOwotICBFWFBFQ1RfVFJVRShyKTsKLQotICBGTEFHU190ZXN0X2ludDMy
ID0gLTExOwotICByID0gUmVhZEZyb21GbGFnc0ZpbGUoZmlsZW5hbWUsIEdldEFyZ3YwKCksIHRy
dWUpOwotICBFWFBFQ1RfVFJVRShyKTsKLSAgRVhQRUNUX0VRKC0xMCwgRkxBR1NfdGVzdF9pbnQz
Mik7Ci19ICAvLyB1bm5hbWVkIG5hbWVzcGFjZQotCi1URVNUKERlcHJlY2F0ZWRGdW5jdGlvbnNU
ZXN0LCBSZWFkRnJvbUZsYWdzRmlsZUZhaWx1cmUpIHsKLSAgRkxBR1NfdGVzdF9pbnQzMiA9IC0y
MDsKLSAgc3RyaW5nIGZpbGVuYW1lKFRtcEZpbGUoImZsYWdmaWxlMyIpKTsKLSAgRklMRSogZnA7
Ci0gIEVYUEVDVF9FUSgwLCBTYWZlRk9wZW4oJmZwLCBmaWxlbmFtZS5jX3N0cigpLCAidyIpKTsK
LSAgRVhQRUNUX1RSVUUoZnAgIT0gTlVMTCk7Ci0gIC8vIE5vdGUgdGhlIGVycm9yIGluIHRoZSBi
b29sIGFzc2lnbm1lbnQgYmVsb3cuLi4KLSAgZnByaW50ZihmcCwgIiVzXG4tLXRlc3RfaW50MzI9
LTIxXG4tLXRlc3RfYm9vbD1ub3RfYV9ib29sIVxuIiwgR2V0QXJndjAoKSk7Ci0gIGZjbG9zZShm
cCk7Ci0KLSAgRkxBR1NfdGVzdF9pbnQzMiA9IC0yMjsKLSAgY29uc3QgYm9vbCByID0gUmVhZEZy
b21GbGFnc0ZpbGUoZmlsZW5hbWUsIEdldEFyZ3YwKCksIGZhbHNlKTsKLSAgRVhQRUNUX0ZBTFNF
KHIpOwotICBFWFBFQ1RfRVEoLTIyLCBGTEFHU190ZXN0X2ludDMyKTsgICAvLyB0aGUgLTIxIGZy
b20gdGhlIGZsYWdzZmlsZSBkaWRuJ3QgdGFrZQotfQotCi1URVNUKEZsYWdzU2V0QmVmb3JlSW5p
dFRlc3QsIFRyeUZyb21FbnYpIHsKLSAgRVhQRUNUX0VRKCJwcmUtc2V0IiwgRkxBR1NfdGVzdF90
cnlmcm9tZW52KTsKLX0KLQotLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhh
dCBQYXJzZUNvbW1hbmRMaW5lRmxhZ3MoKSBhbmQKLS8vIFBhcnNlQ29tbWFuZExpbmVOb25IZWxw
RmxhZ3MoKSB1c2VzIHRoZSBsYXN0IGRlZmluaXRpb24gb2YgYSBmbGFnCi0vLyBpbiBjYXNlIGl0
J3MgZGVmaW5lZCBtb3JlIHRoYW4gb25jZS4KLQotREVGSU5FX2ludDMyKHRlc3RfZmxhZywgLTEs
ICJ1c2VkIGZvciB0ZXN0aW5nIGdmbGFncy5jYyIpOwotCi0vLyBQYXJzZXMgYW5kIHJldHVybnMg
dGhlIC0tdGVzdF9mbGFnIGZsYWcuCi0vLyBJZiB3aXRoX2hlbHAgaXMgdHJ1ZSwgY2FsbHMgUGFy
c2VDb21tYW5kTGluZUZsYWdzOyBvdGhlcndpc2UgY2FsbHMKLS8vIFBhcnNlQ29tbWFuZExpbmVO
b25IZWxwRmxhZ3MuCi1pbnQzMiBQYXJzZVRlc3RGbGFnKGJvb2wgd2l0aF9oZWxwLCBpbnQgYXJn
YywgY29uc3QgY2hhcioqIGNvbnN0X2FyZ3YpIHsKLSAgRmxhZ1NhdmVyIGZzOyAgLy8gUmVzdG9y
ZXMgdGhlIGZsYWdzIGJlZm9yZSByZXR1cm5pbmcuCi0KLSAgLy8gTWFrZXMgYSBjb3B5IG9mIHRo
ZSBpbnB1dCBhcnJheSBzLnQuIGl0IGNhbiBiZSByZXVzZWQKLSAgLy8gKFBhcnNlQ29tbWFuZExp
bmVGbGFncygpIHdpbGwgYWx0ZXIgdGhlIGFycmF5KS4KLSAgY2hhcioqIGNvbnN0IGFyZ3Zfc2F2
ZSA9IG5ldyBjaGFyKlthcmdjICsgMV07Ci0gIGNoYXIqKiBhcmd2ID0gYXJndl9zYXZlOwotICBt
ZW1jcHkoYXJndiwgY29uc3RfYXJndiwgc2l6ZW9mKCphcmd2KSooYXJnYyArIDEpKTsKLQotICBp
ZiAod2l0aF9oZWxwKSB7Ci0gICAgUGFyc2VDb21tYW5kTGluZUZsYWdzKCZhcmdjLCAmYXJndiwg
dHJ1ZSk7Ci0gIH0gZWxzZSB7Ci0gICAgUGFyc2VDb21tYW5kTGluZU5vbkhlbHBGbGFncygmYXJn
YywgJmFyZ3YsIHRydWUpOwotICB9Ci0KLSAgZGVsZXRlW10gYXJndl9zYXZlOwotICByZXR1cm4g
RkxBR1NfdGVzdF9mbGFnOwotfQotCi1URVNUKFBhcnNlQ29tbWFuZExpbmVGbGFnc1VzZXNMYXN0
RGVmaW5pdGlvblRlc3QsCi0gICAgIFdoZW5GbGFnSXNEZWZpbmVkVHdpY2VPbkNvbW1hbmRMaW5l
KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAibXlfdGVzdCIsCi0gICAgIi0tdGVz
dF9mbGFnPTEiLAotICAgICItLXRlc3RfZmxhZz0yIiwKLSAgICBOVUxMLAotICB9OwotCi0gIEVY
UEVDVF9FUSgyLCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3Yp
KTsKLSAgRVhQRUNUX0VRKDIsIFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6ZShhcmd2KSAt
IDEsIGFyZ3YpKTsKLX0KLQotVEVTVChQYXJzZUNvbW1hbmRMaW5lRmxhZ3NVc2VzTGFzdERlZmlu
aXRpb25UZXN0LAotICAgICBXaGVuRmxhZ0lzRGVmaW5lZFR3aWNlSW5GbGFnRmlsZSkgewotICBj
b25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgIEdldEZsYWdGaWxlRmxh
ZygpLAotICAgIE5VTEwsCi0gIH07Ci0KLSAgRVhQRUNUX0VRKDIsIFBhcnNlVGVzdEZsYWcodHJ1
ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotICBFWFBFQ1RfRVEoMiwgUGFyc2VUZXN0
RmxhZyhmYWxzZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotfQotCi1URVNUKFBhcnNl
Q29tbWFuZExpbmVGbGFnc1VzZXNMYXN0RGVmaW5pdGlvblRlc3QsCi0gICAgIFdoZW5GbGFnSXNE
ZWZpbmVkSW5Db21tYW5kTGluZUFuZFRoZW5GbGFnRmlsZSkgewotICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgICItLXRlc3RfZmxhZz0wIiwKLSAgICBHZXRGbGFn
RmlsZUZsYWcoKSwKLSAgICBOVUxMLAotICB9OwotCi0gIEVYUEVDVF9FUSgyLCBQYXJzZVRlc3RG
bGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLSAgRVhQRUNUX0VRKDIsIFBh
cnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFyZ3YpKTsKLX0KLQotVEVT
VChQYXJzZUNvbW1hbmRMaW5lRmxhZ3NVc2VzTGFzdERlZmluaXRpb25UZXN0LAotICAgICBXaGVu
RmxhZ0lzRGVmaW5lZEluRmxhZ0ZpbGVBbmRUaGVuQ29tbWFuZExpbmUpIHsKLSAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICBHZXRGbGFnRmlsZUZsYWcoKSwKLSAg
ICAiLS10ZXN0X2ZsYWc9MyIsCi0gICAgTlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfRVEoMywgUGFy
c2VUZXN0RmxhZyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci0gIEVYUEVDVF9F
USgzLCBQYXJzZVRlc3RGbGFnKGZhbHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci19
Ci0KLVRFU1QoUGFyc2VDb21tYW5kTGluZUZsYWdzVXNlc0xhc3REZWZpbml0aW9uVGVzdCwKLSAg
ICAgV2hlbkZsYWdJc0RlZmluZWRJbkNvbW1hbmRMaW5lQW5kRmxhZ0ZpbGVBbmRUaGVuQ29tbWFu
ZExpbmUpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICAi
LS10ZXN0X2ZsYWc9MCIsCi0gICAgR2V0RmxhZ0ZpbGVGbGFnKCksCi0gICAgIi0tdGVzdF9mbGFn
PTMiLAotICAgIE5VTEwsCi0gIH07Ci0KLSAgRVhQRUNUX0VRKDMsIFBhcnNlVGVzdEZsYWcodHJ1
ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotICBFWFBFQ1RfRVEoMywgUGFyc2VUZXN0
RmxhZyhmYWxzZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotfQotCi1URVNUKFBhcnNl
Q29tbWFuZExpbmVGbGFnc0FuZERhc2hBcmdzLCBUd29EYXNoQXJnRmlyc3QpIHsKLSAgY29uc3Qg
Y2hhciogYXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICAiLS0iLAotICAgICItLXRlc3Rf
ZmxhZz0wIiwKLSAgICBOVUxMLAotICB9OwotCi0gIEVYUEVDVF9FUSgtMSwgUGFyc2VUZXN0Rmxh
Zyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSk7Ci0gIEVYUEVDVF9FUSgtMSwgUGFy
c2VUZXN0RmxhZyhmYWxzZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwgYXJndikpOwotfQotCi1URVNU
KFBhcnNlQ29tbWFuZExpbmVGbGFnc0FuZERhc2hBcmdzLCBUd29EYXNoQXJnTWlkZGxlKSB7Ci0g
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAibXlfdGVzdCIsCi0gICAgIi0tdGVzdF9mbGFn
PTciLAotICAgICItLSIsCi0gICAgIi0tdGVzdF9mbGFnPTAiLAotICAgIE5VTEwsCi0gIH07Ci0K
LSAgRVhQRUNUX0VRKDcsIFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlzaXplKGFyZ3YpIC0gMSwg
YXJndikpOwotICBFWFBFQ1RfRVEoNywgUGFyc2VUZXN0RmxhZyhmYWxzZSwgYXJyYXlzaXplKGFy
Z3YpIC0gMSwgYXJndikpOwotfQotCi1URVNUKFBhcnNlQ29tbWFuZExpbmVGbGFnc0FuZERhc2hB
cmdzLCBPbmVEYXNoQXJnKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAibXlfdGVz
dCIsCi0gICAgIi0iLAotICAgICItLXRlc3RfZmxhZz0wIiwKLSAgICBOVUxMLAotICB9OwotCi0g
IEVYUEVDVF9FUSgwLCBQYXJzZVRlc3RGbGFnKHRydWUsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFy
Z3YpKTsKLSAgRVhQRUNUX0VRKDAsIFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6ZShhcmd2
KSAtIDEsIGFyZ3YpKTsKLX0KLQotI2lmZGVmIEdURVNUX0hBU19ERUFUSF9URVNUCi1URVNUKFBh
cnNlQ29tbWFuZExpbmVGbGFnc1Vua25vd25GbGFnRGVhdGhUZXN0LAotICAgICBGbGFnSXNDb21w
bGV0ZWx5VW5rbm93bikgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3Qi
LAotICAgICItLXRoaXNfZmxhZ19kb2VzX25vdF9leGlzdCIsCi0gICAgTlVMTCwKLSAgfTsKLQot
ICBFWFBFQ1RfREVBVEgoUGFyc2VUZXN0RmxhZyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBh
cmd2KSwKLSAgICAgICAgICAgICAgICJ1bmtub3duIGNvbW1hbmQgbGluZSBmbGFnLioiKTsKLSAg
RVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6ZShhcmd2KSAtIDEsIGFy
Z3YpLAotICAgICAgICAgICAgICAgInVua25vd24gY29tbWFuZCBsaW5lIGZsYWcuKiIpOwotfQot
Ci1URVNUKFBhcnNlQ29tbWFuZExpbmVGbGFnc1Vua25vd25GbGFnRGVhdGhUZXN0LAotICAgICBC
b29sRmxhZ0lzQ29tcGxldGVseVVua25vd24pIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewot
ICAgICJteV90ZXN0IiwKLSAgICAiLS1ub3RoaXNfZmxhZ19kb2VzX25vdF9leGlzdCIsCi0gICAg
TlVMTCwKLSAgfTsKLQotICBFWFBFQ1RfREVBVEgoUGFyc2VUZXN0RmxhZyh0cnVlLCBhcnJheXNp
emUoYXJndikgLSAxLCBhcmd2KSwKLSAgICAgICAgICAgICAgICJ1bmtub3duIGNvbW1hbmQgbGlu
ZSBmbGFnLioiKTsKLSAgRVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcoZmFsc2UsIGFycmF5c2l6
ZShhcmd2KSAtIDEsIGFyZ3YpLAotICAgICAgICAgICAgICAgInVua25vd24gY29tbWFuZCBsaW5l
IGZsYWcuKiIpOwotfQotCi1URVNUKFBhcnNlQ29tbWFuZExpbmVGbGFnc1Vua25vd25GbGFnRGVh
dGhUZXN0LAotICAgICBGbGFnSXNOb3RBQm9vbCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7
Ci0gICAgIm15X3Rlc3QiLAotICAgICItLW5vdGVzdF9zdHJpbmciLAotICAgIE5VTEwsCi0gIH07
Ci0KLSAgRVhQRUNUX0RFQVRIKFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlzaXplKGFyZ3YpIC0g
MSwgYXJndiksCi0gICAgICAgICAgICAgICAiYm9vbGVhbiB2YWx1ZSAuKiBzcGVjaWZpZWQgZm9y
IC4qIGNvbW1hbmQgbGluZSBmbGFnIik7Ci0gIEVYUEVDVF9ERUFUSChQYXJzZVRlc3RGbGFnKGZh
bHNlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSwKLSAgICAgICAgICAgICAgICJib29sZWFu
IHZhbHVlIC4qIHNwZWNpZmllZCBmb3IgLiogY29tbWFuZCBsaW5lIGZsYWciKTsKLX0KLSNlbmRp
ZgotCi1URVNUKFBhcnNlQ29tbWFuZExpbmVGbGFnc1dyb25nRmllbGRzLAotICAgICBEZXNjcmlw
dGlvbklzSW52YWxpZCkgewotICAvLyBUaGVzZSBtdXN0IG5vdCBiZSBhdXRvbWF0aWMgdmFyaWFi
bGVzLCBzaW5jZSBjb21tYW5kIGxpbmUgZmxhZ3MKLSAgLy8gYXJlbid0IHVucmVnaXN0ZXJlZCBh
bmQgZ1VuaXQgdXNlcyBGbGFnU2F2ZXIgdG8gc2F2ZSBhbmQgcmVzdG9yZQotICAvLyBjb21tYW5k
IGxpbmUgZmxhZ3MnIHZhbHVlcy4gIElmIHRoZXNlIGFyZSBvbiB0aGUgc3RhY2ssIHRoZW4gd2hl
bgotICAvLyBsYXRlciB0ZXN0cyBhdHRlbXB0IHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlaXIgdmFs
dWVzLCB0aGUgc3RhY2sKLSAgLy8gYWRkcmVzc2VzIG9mIHRoZXNlIHZhcmlhYmxlcyB3aWxsIGJl
IG92ZXJ3cml0dGVuLi4uICBTdGFjayBzbWFzaCEKLSAgc3RhdGljIGJvb2wgY3VycmVudF9zdG9y
YWdlOwotICBzdGF0aWMgYm9vbCBkZWZ2YWx1ZV9zdG9yYWdlOwotICBGbGFnUmVnaXN0ZXJlciBm
cigiZmxhZ19uYW1lIiwgImJvb2wiLCAwLCAiZmlsZW5hbWUiLAotICAgICAgICAgICAgICAgICAg
ICAmY3VycmVudF9zdG9yYWdlLCAmZGVmdmFsdWVfc3RvcmFnZSk7Ci0gIENvbW1hbmRMaW5lRmxh
Z0luZm8gZmk7Ci0gIEVYUEVDVF9UUlVFKEdldENvbW1hbmRMaW5lRmxhZ0luZm8oImZsYWdfbmFt
ZSIsICZmaSkpOwotICBFWFBFQ1RfRVEoIiIsIGZpLmRlc2NyaXB0aW9uKTsKLSAgRVhQRUNUX0VR
KCZjdXJyZW50X3N0b3JhZ2UsIGZpLmZsYWdfcHRyKTsKLX0KLQotc3RhdGljIGJvb2wgVmFsaWRh
dGVUZXN0RmxhZ0lzNShjb25zdCBjaGFyKiBmbGFnbmFtZSwgaW50MzIgZmxhZ3ZhbCkgewotICBp
ZiAoZmxhZ3ZhbCA9PSA1KQotICAgIHJldHVybiB0cnVlOwotICBwcmludGYoIiVzIGlzbid0IDUh
XG4iLCBmbGFnbmFtZSk7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGJvb2wgVmFsaWRh
dGVUZXN0RmxhZ0lzMTAoY29uc3QgY2hhciogZmxhZ25hbWUsIGludDMyIGZsYWd2YWwpIHsKLSAg
cmV0dXJuIGZsYWd2YWwgPT0gMTA7Ci19Ci0KLQotVEVTVChGbGFnc1ZhbGlkYXRvciwgVmFsaWRG
bGFnVmlhQXJndikgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAot
ICAgICItLXRlc3RfZmxhZz01IiwKLSAgICBOVUxMLAotICB9OwotICBFWFBFQ1RfVFJVRShSZWdp
c3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRlVGVzdEZsYWdJczUp
KTsKLSAgRVhQRUNUX0VRKDUsIFBhcnNlVGVzdEZsYWcodHJ1ZSwgYXJyYXlzaXplKGFyZ3YpIC0g
MSwgYXJndikpOwotICAvLyBVbmRvIHRoZSBmbGFnIHZhbGlkYXRvciBzZXR0aW5nCi0gIEVYUEVD
VF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCBOVUxMKSk7Ci19
Ci0KLVRFU1QoRmxhZ3NWYWxpZGF0b3IsIFZhbGlkRmxhZ1ZpYVNldERlZmF1bHQpIHsKLSAgRVhQ
RUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0
ZVRlc3RGbGFnSXM1KSk7Ci0gIC8vIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUgcmV0dXJu
cyB0aGUgZW1wdHkgc3RyaW5nIG9uIGVycm9yLgotICBFWFBFQ1RfTkUoIiIsIFNldENvbW1hbmRM
aW5lT3B0aW9uV2l0aE1vZGUoInRlc3RfZmxhZyIsICI1IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9GTEFHX0lGX0RFRkFVTFQpKTsKLSAgRVhQRUNU
X1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsIE5VTEwpKTsKLX0K
LQotVEVTVChGbGFnc1ZhbGlkYXRvciwgVmFsaWRGbGFnVmlhU2V0VmFsdWUpIHsKLSAgRVhQRUNU
X1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRl
c3RGbGFnSXM1KSk7Ci0gIEZMQUdTX3Rlc3RfZmxhZyA9IDEwMDsgICAvLyBkb2Vzbid0IHRyaWdn
ZXIgdGhlIHZhbGlkYXRvcgotICAvLyBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlIHJldHVy
bnMgdGhlIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KLSAgRVhQRUNUX05FKCIiLCBTZXRDb21tYW5k
TGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X2ZsYWciLCAiNSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRkxBR1NfVkFMVUUpKTsKLSAgRVhQRUNUX05F
KCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X2ZsYWciLCAiNSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRkxBR1NfREVGQVVM
VCkpOwotICBFWFBFQ1RfTkUoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ZsYWciLCAi
NSIpKTsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2Zs
YWcsIE5VTEwpKTsKLX0KLQotI2lmZGVmIEdURVNUX0hBU19ERUFUSF9URVNUCi1URVNUKEZsYWdz
VmFsaWRhdG9yRGVhdGhUZXN0LCBJbnZhbGlkRmxhZ1ZpYUFyZ3YpIHsKLSAgY29uc3QgY2hhciog
YXJndltdID0gewotICAgICJteV90ZXN0IiwKLSAgICAiLS10ZXN0X2ZsYWc9NTAiLAotICAgIE5V
TEwsCi0gIH07Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVz
dF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICBFWFBFQ1RfREVBVEgoUGFyc2VUZXN0
RmxhZyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSwKLSAgICAgICAgICAgICAgICJF
UlJPUjogZmFpbGVkIHZhbGlkYXRpb24gb2YgbmV3IHZhbHVlICc1MCcgZm9yIGZsYWcgJ3Rlc3Rf
ZmxhZyciKTsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0
X2ZsYWcsIE5VTEwpKTsKLX0KLSNlbmRpZgotCi1URVNUKEZsYWdzVmFsaWRhdG9yLCBJbnZhbGlk
RmxhZ1ZpYVNldERlZmF1bHQpIHsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRhdG9y
KCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7Ci0gIC8vIFNldENvbW1h
bmRMaW5lT3B0aW9uV2l0aE1vZGUgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nIG9uIGVycm9yLgot
ICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoInRlc3RfZmxhZyIs
ICI1MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRf
RkxBR19JRl9ERUZBVUxUKSk7Ci0gIEVYUEVDVF9FUSgtMSwgRkxBR1NfdGVzdF9mbGFnKTsgICAv
LyB0aGUgc2V0dGluZy10by01MCBzaG91bGQgaGF2ZSBmYWlsZWQKLSAgRVhQRUNUX1RSVUUoUmVn
aXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsIE5VTEwpKTsKLX0KLQotVEVTVChG
bGFnc1ZhbGlkYXRvciwgSW52YWxpZEZsYWdWaWFTZXRWYWx1ZSkgewotICBFWFBFQ1RfVFJVRShS
ZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgJlZhbGlkYXRlVGVzdEZsYWdJ
czUpKTsKLSAgRkxBR1NfdGVzdF9mbGFnID0gMTAwOyAgIC8vIGRvZXNuJ3QgdHJpZ2dlciB0aGUg
dmFsaWRhdG9yCi0gIC8vIFNldENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUgcmV0dXJucyB0aGUg
ZW1wdHkgc3RyaW5nIG9uIGVycm9yLgotICBFWFBFQ1RfRVEoIiIsIFNldENvbW1hbmRMaW5lT3B0
aW9uV2l0aE1vZGUoInRlc3RfZmxhZyIsICI1MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTRVRfRkxBR1NfVkFMVUUpKTsKLSAgRVhQRUNUX0VRKCIiLCBT
ZXRDb21tYW5kTGluZU9wdGlvbldpdGhNb2RlKCJ0ZXN0X2ZsYWciLCAiNTAiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZMQUdTX0RFRkFVTFQpKTsK
LSAgRVhQRUNUX0VRKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9mbGFnIiwgIjUwIikp
OwotICBFWFBFQ1RfRVEoMTAwLCBGTEFHU190ZXN0X2ZsYWcpOyAgIC8vIHRoZSBzZXR0aW5nLXRv
LTUwIHNob3VsZCBoYXZlIGZhaWxlZAotICBFWFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0
b3IoJkZMQUdTX3Rlc3RfZmxhZywgTlVMTCkpOwotfQotCi0jaWZkZWYgR1RFU1RfSEFTX0RFQVRI
X1RFU1QKLVRFU1QoRmxhZ3NWYWxpZGF0b3JEZWF0aFRlc3QsIEludmFsaWRGbGFnTmV2ZXJTZXQp
IHsKLSAgLy8gSWYgYSBmbGFnIGtlZXBzIGl0cyBkZWZhdWx0IHZhbHVlLCBhbmQgdGhhdCBkZWZh
dWx0IHZhbHVlIGlzCi0gIC8vIGludmFsaWQsIHdlIHNob3VsZCBkaWUgYXQgYXJndi1wYXJzZSB0
aW1lLgotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgIm15X3Rlc3QiLAotICAgIE5VTEws
Ci0gIH07Ci0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9m
bGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICBFWFBFQ1RfREVBVEgoUGFyc2VUZXN0Rmxh
Zyh0cnVlLCBhcnJheXNpemUoYXJndikgLSAxLCBhcmd2KSwKLSAgICAgICAgICAgICAgICJFUlJP
UjogLS10ZXN0X2ZsYWcgbXVzdCBiZSBzZXQgb24gdGhlIGNvbW1hbmRsaW5lIik7Ci19Ci0jZW5k
aWYKLQotVEVTVChGbGFnc1ZhbGlkYXRvciwgSW52YWxpZEZsYWdQdHIpIHsKLSAgaW50MzIgZHVt
bXk7Ci0gIEVYUEVDVF9GQUxTRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoTlVMTCwgJlZhbGlkYXRl
VGVzdEZsYWdJczUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmZHVt
bXksICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7Ci19Ci0KLVRFU1QoRmxhZ3NWYWxpZGF0b3IsIFJl
Z2lzdGVyVmFsaWRhdG9yVHdpY2UpIHsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRh
dG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXM1KSk7Ci0gIEVYUEVDVF9U
UlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0
RmxhZ0lzNSkpOwotICBFWFBFQ1RfRkFMU0UoUmVnaXN0ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190
ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXMxMCkpOwotICBFWFBFQ1RfRkFMU0UoUmVnaXN0
ZXJGbGFnVmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXMxMCkp
OwotICBFWFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywg
JlZhbGlkYXRlVGVzdEZsYWdJczUpKTsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFnVmFsaWRh
dG9yKCZGTEFHU190ZXN0X2ZsYWcsIE5VTEwpKTsKLSAgRVhQRUNUX1RSVUUoUmVnaXN0ZXJGbGFn
VmFsaWRhdG9yKCZGTEFHU190ZXN0X2ZsYWcsICZWYWxpZGF0ZVRlc3RGbGFnSXMxMCkpOwotICBF
WFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxhZywgTlVMTCkp
OwotfQotCi1URVNUKEZsYWdzVmFsaWRhdG9yLCBDb21tYW5kTGluZUZsYWdJbmZvKSB7Ci0gIENv
bW1hbmRMaW5lRmxhZ0luZm8gaW5mbzsKLSAgaW5mbyA9IEdldENvbW1hbmRMaW5lRmxhZ0luZm9P
ckRpZSgidGVzdF9mbGFnIik7Ci0gIEVYUEVDVF9GQUxTRShpbmZvLmhhc192YWxpZGF0b3JfZm4p
OwotCi0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFn
LCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICBpbmZvID0gR2V0Q29tbWFuZExpbmVGbGFnSW5m
b09yRGllKCJ0ZXN0X2ZsYWciKTsKLSAgRVhQRUNUX1RSVUUoaW5mby5oYXNfdmFsaWRhdG9yX2Zu
KTsKLQotICBFWFBFQ1RfVFJVRShSZWdpc3RlckZsYWdWYWxpZGF0b3IoJkZMQUdTX3Rlc3RfZmxh
ZywgTlVMTCkpOwotICBpbmZvID0gR2V0Q29tbWFuZExpbmVGbGFnSW5mb09yRGllKCJ0ZXN0X2Zs
YWciKTsKLSAgRVhQRUNUX0ZBTFNFKGluZm8uaGFzX3ZhbGlkYXRvcl9mbik7Ci19Ci0KLVRFU1Qo
RmxhZ3NWYWxpZGF0b3IsIEZsYWdTYXZlcikgewotICB7Ci0gICAgRmxhZ1NhdmVyIGZzOwotICAg
IEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVzdF9mbGFnLCAmVmFs
aWRhdGVUZXN0RmxhZ0lzNSkpOwotICAgIEVYUEVDVF9FUSgiIiwgU2V0Q29tbWFuZExpbmVPcHRp
b24oInRlc3RfZmxhZyIsICI1MCIpKTsgIC8vIGZhaWxzIHZhbGlkYXRpb24KLSAgfQotICBFWFBF
Q1RfTkUoIiIsIFNldENvbW1hbmRMaW5lT3B0aW9uKCJ0ZXN0X2ZsYWciLCAiNTAiKSk7ICAvLyB2
YWxpZGF0b3IgaXMgZ29uZQotCi0gIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigm
RkxBR1NfdGVzdF9mbGFnLCAmVmFsaWRhdGVUZXN0RmxhZ0lzNSkpOwotICB7Ci0gICAgRmxhZ1Nh
dmVyIGZzOwotICAgIEVYUEVDVF9UUlVFKFJlZ2lzdGVyRmxhZ1ZhbGlkYXRvcigmRkxBR1NfdGVz
dF9mbGFnLCBOVUxMKSk7Ci0gICAgRVhQRUNUX05FKCIiLCBTZXRDb21tYW5kTGluZU9wdGlvbigi
dGVzdF9mbGFnIiwgIjUwIikpOyAgLy8gbm8gdmFsaWRhdG9yCi0gIH0KLSAgRVhQRUNUX0VRKCIi
LCBTZXRDb21tYW5kTGluZU9wdGlvbigidGVzdF9mbGFnIiwgIjUwIikpOyAgLy8gdmFsaWRhdG9y
IGlzIGJhY2sKLX0KLQotCi19ICAvLyB1bm5hbWVkIG5hbWVzcGFjZQotCi1zdGF0aWMgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0KLSAgLy8gUnVuIHVuaXQgdGVzdHMgb25seSBp
ZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIG90aGVyd2lzZSB0aGlzIHByb2dyYW0KLSAgLy8g
aXMgdXNlZCBieSBhbiAiZXh0ZXJuYWwiIHVzYWdlIHRlc3QKLSAgY29uc3QgYm9vbCBydW5fdGVz
dHMgPSAoYXJnYyA9PSAxKTsKLQotICAvLyBXZSBuZWVkIHRvIGNhbGwgU2V0QXJndiBiZWZvcmUg
cGFyc2luZyBmbGFncywgc28gb3VyICJ0ZXN0IiBhcmd2IHdpbGwKLSAgLy8gd2luIG91dCBvdmVy
IHRoaXMgZXhlY3V0YWJsZSdzIHJlYWwgYXJndi4gIFRoYXQgbWFrZXMgcnVubmluZyB0aGlzCi0g
IC8vIHRlc3Qgd2l0aCBhIHJlYWwgLS1oZWxwIGZsYWcga2luZGEgYW5ub3lpbmcsIHVuZm9ydHVu
YXRlbHkuCi0gIGNvbnN0IGNoYXIqIHRlc3RfYXJndltdID0geyAiL3Rlc3QvYXJndi9mb3IvZ2Zs
YWdzX3VuaXR0ZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd2IDIiLCAi
M3JkIGFyZ3YiLCAiYXJndiAjNCIgfTsKLSAgU2V0QXJndihhcnJheXNpemUodGVzdF9hcmd2KSwg
dGVzdF9hcmd2KTsKLQotICAvLyBUaGUgZmlyc3QgYXJnIGlzIHRoZSB1c2FnZSBtZXNzYWdlLCBh
bHNvIGltcG9ydGFudCBmb3IgdGVzdGluZy4KLSAgc3RyaW5nIHVzYWdlX21lc3NhZ2UgPSAoc3Ry
aW5nKEdldEFyZ3YwKCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjogPHVzZWxlc3Mg
ZmxhZz4gWy4uLl1cbkRvZXMgc29tZXRoaW5nIHVzZWxlc3MuXG4iKTsKLQotICAvLyBXZSB0ZXN0
IHNldHRpbmcgdHJ5ZnJvbWVudiBtYW51YWxseSwgYW5kIG1ha2luZyBzdXJlCi0gIC8vIFBhcnNl
Q29tbWFuZExpbmVGbGFncyBzdGlsbCBldmFsdWF0ZXMgaXQuCi0gIEZMQUdTX3RyeWZyb21lbnYg
PSAidGVzdF90cnlmcm9tZW52IjsKLSAgc2V0ZW52KCJGTEFHU190ZXN0X3RyeWZyb21lbnYiLCAi
cHJlLXNldCIsIDEpOwotCi0gIC8vIE1vZGlmeSBmbGFnIHZhbHVlcyBmcm9tIGRlY2xhcmVkIGRl
ZmF1bHQgdmFsdWUgaW4gdHdvIHdheXMuCi0gIC8vIFRoZSByZWNvbW1lbmRlZCB3YXk6Ci0gIFNl
dENvbW1hbmRMaW5lT3B0aW9uV2l0aE1vZGUoImNoYW5nZWRfYm9vbDEiLCAidHJ1ZSIsIFNFVF9G
TEFHU19ERUZBVUxUKTsKLQotICAvLyBUaGUgbm9uLXJlY29tbWVuZGVkIHdheToKLSAgRkxBR1Nf
Y2hhbmdlZF9ib29sMiA9IHRydWU7Ci0KLSAgU2V0VXNhZ2VNZXNzYWdlKHVzYWdlX21lc3NhZ2Uu
Y19zdHIoKSk7Ci0gIFNldFZlcnNpb25TdHJpbmcoInRlc3RfdmVyc2lvbiIpOwotICBQYXJzZUNv
bW1hbmRMaW5lRmxhZ3MoJmFyZ2MsICZhcmd2LCB0cnVlKTsKLSAgTWFrZVRtcGRpcigmRkxBR1Nf
dGVzdF90bXBkaXIpOwotCi0gIGludCBleGl0X3N0YXR1cyA9IDA7Ci0gIGlmIChydW5fdGVzdHMp
IHsKLQkgIGZwcmludGYoc3Rkb3V0LCAiUnVubmluZyB0aGUgdW5pdCB0ZXN0cyBub3cuLi5cblxu
Iik7IGZmbHVzaChzdGRvdXQpOwotCSAgZXhpdF9zdGF0dXMgPSBSVU5fQUxMX1RFU1RTKCk7Ci0g
IH0gZWxzZSBmcHJpbnRmKHN0ZGVyciwgIlxuXG5QQVNTXG4iKTsKLSAgU2h1dERvd25Db21tYW5k
TGluZUZsYWdzKCk7Ci0gIHJldHVybiBleGl0X3N0YXR1czsKLX0KLQotfSAvLyBHRkxBR1NfTkFN
RVNQQUNFCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICByZXR1cm4gR0ZM
QUdTX05BTUVTUEFDRTo6bWFpbihhcmdjLCBhcmd2KTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3Qv
Z2ZsYWdzX3VuaXR0ZXN0X2ZsYWdmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvZ2ZsYWdzX3VuaXR0ZXN0X2ZsYWdmaWxl
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGZhMGM0ZDVjNWUuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dm
bGFncy9zcmMvdGVzdC9nZmxhZ3NfdW5pdHRlc3RfZmxhZ2ZpbGUKKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLS0tdGVzdF9mbGFnPTEKLS0tdGVzdF9mbGFnPTIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90
ZXN0L25jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvbmMvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MjVkOTFlYzgyYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90
ZXN0L25jL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyMg
Z2ZsYWdzIG5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3RzCi0KLWNtYWtlX21pbmltdW1fcmVxdWly
ZWQgKFZFUlNJT04gMi44KQotCi1pZiAoTk9UIFRFU1RfTkFNRSkKLSAgbWVzc2FnZSAoRkFUQUxf
RVJST1IgIk1pc3NpbmcgVEVTVF9OQU1FIENNYWtlIGZsYWciKQotZW5kaWYgKCkKLXN0cmluZyAo
VE9VUFBFUiAke1RFU1RfTkFNRX0gVEVTVF9OQU1FX1VQUEVSKQotCi1wcm9qZWN0IChnZmxhZ3Nf
JHtURVNUX05BTUV9KQotCi1maW5kX3BhY2thZ2UgKGdmbGFncyBSRVFVSVJFRCkKLWluY2x1ZGVf
ZGlyZWN0b3JpZXMgKCIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vLi4iKQotYWRkX2RlZmlu
aXRpb25zICgtRFRFU1RfJHtURVNUX05BTUVfVVBQRVJ9KQotYWRkX2V4ZWN1dGFibGUgKGdmbGFn
c18ke1RFU1RfTkFNRX0gZ2ZsYWdzX25jLmNjKQotdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdmbGFn
c18ke1RFU1RfTkFNRX0gJHtnZmxhZ3NfTElCUkFSSUVTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ2ZsYWdzL3NyYy90ZXN0L25j
L2dmbGFnc19uYy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ2ZsYWdzL3NyYy90ZXN0L25jL2dmbGFnc19uYy5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTk5MGMzMGE2YTkwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nZmxhZ3Mvc3JjL3Rlc3QvbmMvZ2Zs
YWdzX25jLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChj
KSAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8gLS0tCi0vLwotLy8gQSBuZWdh
dGl2ZSBjb21pcGxlIHRlc3QgZm9yIGdmbGFncy4KLQotI2luY2x1ZGUgPGdmbGFncy9nZmxhZ3Mu
aD4KLQotI2lmIGRlZmluZWQoVEVTVF9OQ19TV0FQUEVEX0FSR1MpCi0KLURFRklORV9ib29sKHNv
bWVfYm9vbF9mbGFnLAotICAgICAgICAgICAgInRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZCBnbyBo
ZXJlLCBub3QgdGhlIGRlc2NyaXB0aW9uIiwKLSAgICAgICAgICAgIGZhbHNlKTsKLQotCi0jZWxp
ZiBkZWZpbmVkKFRFU1RfTkNfSU5UX0lOU1RFQURfT0ZfQk9PTCkKLQotREVGSU5FX2Jvb2woc29t
ZV9ib29sX2ZsYWdfMiwKLSAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAic2hvdWxkIGhhdmUg
YmVlbiBhbiBpbnQzMiBmbGFnIGJ1dCBtaXN0YWtlbmx5IHVzZWQgYm9vbCBpbnN0ZWFkIik7Ci0K
LSNlbGlmIGRlZmluZWQoVEVTVF9OQ19CT09MX0lOX1FVT1RFUykKLQotCi1ERUZJTkVfYm9vbChz
b21lX2Jvb2xfZmxhZ18zLAotICAgICAgICAgICAgImZhbHNlIiwKLSAgICAgICAgICAgICJmYWxz
ZSBpbiBpbiBxdW90ZXMsIHdoaWNoIGlzIHdyb25nIik7Ci0KLSNlbGlmIGRlZmluZWQoVEVTVF9O
Q19TQU5JVFkpCi0KLURFRklORV9ib29sKHNvbWVfYm9vbF9mbGFnXzQsCi0gICAgICAgICAgICB0
cnVlLAotICAgICAgICAgICAgInRoaXMgaXMgdGhlIGNvcnJlY3QgdXNhZ2Ugb2YgREVGSU5FX2Jv
b2wiKTsKLQotI2VsaWYgZGVmaW5lZChURVNUX05DX0RFRklORV9TVFJJTkdfV0lUSF8wKQotCi1E
RUZJTkVfc3RyaW5nKHNvbWVfc3RyaW5nX2ZsYWcsCi0gICAgICAgICAgICAgIDAsCi0gICAgICAg
ICAgICAgICJUcnlpbmcgdG8gY29uc3RydWN0IGEgc3RyaW5nIGJ5IHBhc3NpbmcgMCB3b3VsZCBj
YXVzZSBhIGNyYXNoLiIpOwotCi0jZW5kaWYKLQotaW50IG1haW4oaW50LCBjaGFyICoqKQotewot
ICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Ly5naXRpZ25vcmUKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZTc0NjZhZDkzNS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIElnbm9yZSBD
SSBidWlsZCBkaXJlY3RvcnkKLWJ1aWxkLwoteGN1c2VyZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Ly50cmF2
aXMueW1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0Ly50cmF2aXMueW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjA0
ZGZhYzE3ZDcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvLnRyYXZpcy55bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0NiArMCwwIEBACi0jIEJ1aWxkIG1hdHJpeCAvIGVudmlyb25tZW50IHZhcmlhYmxlIGFy
ZSBleHBsYWluZWQgb246Ci0jIGh0dHA6Ly9hYm91dC50cmF2aXMtY2kub3JnL2RvY3MvdXNlci9i
dWlsZC1jb25maWd1cmF0aW9uLwotIyBUaGlzIGZpbGUgY2FuIGJlIHZhbGlkYXRlZCBvbjoKLSMg
aHR0cDovL2xpbnQudHJhdmlzLWNpLm9yZy8KLQotaW5zdGFsbDoKLSMgL3Vzci9iaW4vZ2NjIGlz
IDQuNiBhbHdheXMsIGJ1dCBnY2MtWC5ZIGlzIGF2YWlsYWJsZS4KLS0gaWYgWyAiJENYWCIgPSAi
ZysrIiBdOyB0aGVuIGV4cG9ydCBDWFg9ImcrKy00LjkiIENDPSJnY2MtNC45IjsgZmkKLSMgL3Vz
ci9iaW4vY2xhbmcgaXMgMy40LCBsZXRzIG92ZXJyaWRlIHdpdGggbW9kZXJuIG9uZS4KLS0gaWYg
WyAiJENYWCIgPSAiY2xhbmcrKyIgXSAmJiBbICIkVFJBVklTX09TX05BTUUiID0gImxpbnV4IiBd
OyB0aGVuIGV4cG9ydCBDWFg9ImNsYW5nKystMy43IiBDQz0iY2xhbmctMy43IjsgZmkKLS0gZWNo
byAke1BBVEh9Ci0tIGVjaG8gJHtDWFh9Ci0tICR7Q1hYfSAtLXZlcnNpb24KLS0gJHtDWFh9IC12
Ci1hZGRvbnM6Ci0gIGFwdDoKLSAgICAjIExpc3Qgb2Ygd2hpdGVsaXN0ZWQgaW4gdHJhdmlzIHBh
Y2thZ2VzIGZvciB1YnVudHUtcHJlY2lzZSBjYW4gYmUgZm91bmQgaGVyZToKLSAgICAjICAgaHR0
cHM6Ly9naXRodWIuY29tL3RyYXZpcy1jaS9hcHQtcGFja2FnZS13aGl0ZWxpc3QvYmxvYi9tYXN0
ZXIvdWJ1bnR1LXByZWNpc2UKLSAgICAjIExpc3Qgb2Ygd2hpdGVsaXN0ZWQgaW4gdHJhdmlzIGFw
dC1zb3VyY2VzOgotICAgICMgICBodHRwczovL2dpdGh1Yi5jb20vdHJhdmlzLWNpL2FwdC1zb3Vy
Y2Utd2hpdGVsaXN0L2Jsb2IvbWFzdGVyL3VidW50dS5qc29uCi0gICAgc291cmNlczoKLSAgICAt
IHVidW50dS10b29sY2hhaW4tci10ZXN0Ci0gICAgLSBsbHZtLXRvb2xjaGFpbi1wcmVjaXNlLTMu
NwotICAgIHBhY2thZ2VzOgotICAgIC0gZ2NjLTQuOQotICAgIC0gZysrLTQuOQotICAgIC0gY2xh
bmctMy43Ci0gICAgLSB2YWxncmluZAotb3M6Ci0gIC0gbGludXgKLSAgLSBvc3gKLWxhbmd1YWdl
OiBjcHAKLWNvbXBpbGVyOgotICAtIGdjYwotICAtIGNsYW5nCi1zY3JpcHQ6IC4vdHJhdmlzLnNo
Ci1lbnY6Ci0gIG1hdHJpeDoKLSAgICAtIEdURVNUX1RBUkdFVD1nb29nbGV0ZXN0IFNIQVJFRF9M
SUI9T0ZGIFNUQVRJQ19MSUI9T04gQ01BS0VfUEtHPU9GRiBCVUlMRF9UWVBFPWRlYnVnICAgVkVS
Qk9TRV9NQUtFPXRydWUgVkVSQk9TRQotICAgIC0gR1RFU1RfVEFSR0VUPWdvb2dsZW1vY2sgU0hB
UkVEX0xJQj1PRkYgU1RBVElDX0xJQj1PTiBDTUFLRV9QS0c9T0ZGIEJVSUxEX1RZUEU9ZGVidWcg
ICBWRVJCT1NFX01BS0U9dHJ1ZSBWRVJCT1NFCi0gICAgLSBHVEVTVF9UQVJHRVQ9Z29vZ2xlbW9j
ayBTSEFSRURfTElCPU9GRiBTVEFUSUNfTElCPU9OIENNQUtFX1BLRz1PRkYgQlVJTERfVFlQRT1k
ZWJ1ZyBDWFhfRkxBR1M9LXN0ZD1jKysxMSAgVkVSQk9TRV9NQUtFPXRydWUgVkVSQk9TRQotIyAg
ICAtIEdURVNUX1RBUkdFVD1nb29nbGV0ZXN0IFNIQVJFRF9MSUI9T04gIFNUQVRJQ19MSUI9T04g
Q01BS0VfUEtHPU9OICBCVUlMRF9UWVBFPXJlbGVhc2UgVkVSQk9TRV9NQUtFPWZhbHNlCi0jICAg
IC0gR1RFU1RfVEFSR0VUPWdvb2dsZW1vY2sgU0hBUkVEX0xJQj1PTiAgU1RBVElDX0xJQj1PTiBD
TUFLRV9QS0c9T04gIEJVSUxEX1RZUEU9cmVsZWFzZSBWRVJCT1NFX01BS0U9ZmFsc2UKLW5vdGlm
aWNhdGlvbnM6Ci0gIGVtYWlsOiBmYWxzZQotc3VkbzogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTc1NDk5MmU4Y2VmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L0NNYWtlTGlzdHMudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9O
IDIuNi40KQotCi1wcm9qZWN0KCBnb29nbGV0ZXN0LWRpc3RyaWJ1dGlvbiApCi0KLWVuYWJsZV90
ZXN0aW5nKCkKLQotb3B0aW9uKEJVSUxEX0dURVNUICJCdWlsZHMgdGhlIGdvb2dsZXRlc3Qgc3Vi
cHJvamVjdCIgT0ZGKQotCi0jTm90ZSB0aGF0IGdvb2dsZW1vY2sgdGFyZ2V0IGFscmVhZHkgYnVp
bGRzIGdvb2dsZXRlc3QKLW9wdGlvbihCVUlMRF9HTU9DSyAiQnVpbGRzIHRoZSBnb29nbGVtb2Nr
IHN1YnByb2plY3QiIE9OKQotCi1pZihCVUlMRF9HTU9DSykKLSAgYWRkX3N1YmRpcmVjdG9yeSgg
Z29vZ2xlbW9jayApCi1lbHNlaWYoQlVJTERfR1RFU1QpCi0gIGFkZF9zdWJkaXJlY3RvcnkoIGdv
b2dsZXRlc3QgKQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L1JFQURNRS5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9SRUFETUUubWQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NjQ4NGU0ZmFkOS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9SRUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0jIEdv
b2dsZSBUZXN0ICMKLQotWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvZ29v
Z2xlL2dvb2dsZXRlc3Quc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcv
Z29vZ2xlL2dvb2dsZXRlc3QpCi1bIVtCdWlsZCBzdGF0dXNdKGh0dHBzOi8vY2kuYXBwdmV5b3Iu
Y29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvNG8zOHBsdDB4Ym8xdWJjOC9icmFuY2gvbWFzdGVyP3N2
Zz10cnVlKV0oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9CaWxseURvbmFodWUvZ29v
Z2xldGVzdC9icmFuY2gvbWFzdGVyKQotCi1XZWxjb21lIHRvICoqR29vZ2xlIFRlc3QqKiwgR29v
Z2xlJ3MgQysrIHRlc3QgZnJhbWV3b3JrIQotCi1UaGlzIHJlcG9zaXRvcnkgaXMgYSBtZXJnZXIg
b2YgdGhlIGZvcm1lcmx5IHNlcGFyYXRlIEdvb2dsZVRlc3QgYW5kCi1Hb29nbGVNb2NrIHByb2pl
Y3RzLiBUaGVzZSB3ZXJlIHNvIGNsb3NlbHkgcmVsYXRlZCB0aGF0IGl0IG1ha2VzIHNlbnNlIHRv
Ci1tYWludGFpbiBhbmQgcmVsZWFzZSB0aGVtIHRvZ2V0aGVyLgotCi1QbGVhc2Ugc2VlIHRoZSBw
cm9qZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1h
aWxpbmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAg
VGhlcmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rl
c3QgYXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVzIQotCi1HZXR0aW5nIHN0YXJ0ZWQgaW5mb3Jt
YXRpb24gZm9yICoqR29vZ2xlIFRlc3QqKiBpcyBhdmFpbGFibGUgaW4gdGhlIAotW0dvb2dsZSBU
ZXN0IFByaW1lcl0oZ29vZ2xldGVzdC9kb2NzL1ByaW1lci5tZCkgZG9jdW1lbnRhdGlvbi4KLQot
KipHb29nbGUgTW9jayoqIGlzIGFuIGV4dGVuc2lvbiB0byBHb29nbGUgVGVzdCBmb3Igd3JpdGlu
ZyBhbmQgdXNpbmcgQysrIG1vY2sKLWNsYXNzZXMuICBTZWUgdGhlIHNlcGFyYXRlIFtHb29nbGUg
TW9jayBkb2N1bWVudGF0aW9uXShnb29nbGVtb2NrL1JFQURNRS5tZCkuCi0KLU1vcmUgZGV0YWls
ZWQgZG9jdW1lbnRhdGlvbiBmb3IgZ29vZ2xldGVzdCAoaW5jbHVkaW5nIGJ1aWxkIGluc3RydWN0
aW9ucykgYXJlCi1pbiBpdHMgaW50ZXJpb3IgW2dvb2dsZXRlc3QvUkVBRE1FLm1kXShnb29nbGV0
ZXN0L1JFQURNRS5tZCkgZmlsZS4KLQotIyMgRmVhdHVyZXMgIyMKLQotICAqIEFuIFtYVW5pdF0o
aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWFVuaXQpIHRlc3QgZnJhbWV3b3JrLgotICAq
IFRlc3QgZGlzY292ZXJ5LgotICAqIEEgcmljaCBzZXQgb2YgYXNzZXJ0aW9ucy4KLSAgKiBVc2Vy
LWRlZmluZWQgYXNzZXJ0aW9ucy4KLSAgKiBEZWF0aCB0ZXN0cy4KLSAgKiBGYXRhbCBhbmQgbm9u
LWZhdGFsIGZhaWx1cmVzLgotICAqIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICogVHlw
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotICAqIFZhcmlvdXMgb3B0aW9ucyBmb3IgcnVubmluZyB0
aGUgdGVzdHMuCi0gICogWE1MIHRlc3QgcmVwb3J0IGdlbmVyYXRpb24uCi0KLSMjIFBsYXRmb3Jt
cyAjIwotCi1Hb29nbGUgdGVzdCBoYXMgYmVlbiB1c2VkIG9uIGEgdmFyaWV0eSBvZiBwbGF0Zm9y
bXM6Ci0KLSAgKiBMaW51eAotICAqIE1hYyBPUyBYCi0gICogV2luZG93cwotICAqIEN5Z3dpbgot
ICAqIE1pbkdXCi0gICogV2luZG93cyBNb2JpbGUKLSAgKiBTeW1iaWFuCi0KLSMjIFdobyBJcyBV
c2luZyBHb29nbGUgVGVzdD8gIyMKLQotSW4gYWRkaXRpb24gdG8gbWFueSBpbnRlcm5hbCBwcm9q
ZWN0cyBhdCBHb29nbGUsIEdvb2dsZSBUZXN0IGlzIGFsc28gdXNlZCBieQotdGhlIGZvbGxvd2lu
ZyBub3RhYmxlIHByb2plY3RzOgotCi0gICogVGhlIFtDaHJvbWl1bSBwcm9qZWN0c10oaHR0cDov
L3d3dy5jaHJvbWl1bS5vcmcvKSAoYmVoaW5kIHRoZSBDaHJvbWUKLSAgICBicm93c2VyIGFuZCBD
aHJvbWUgT1MpLgotICAqIFRoZSBbTExWTV0oaHR0cDovL2xsdm0ub3JnLykgY29tcGlsZXIuCi0g
ICogW1Byb3RvY29sIEJ1ZmZlcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYp
LCBHb29nbGUncyBkYXRhCi0gICAgaW50ZXJjaGFuZ2UgZm9ybWF0LgotICAqIFRoZSBbT3BlbkNW
XShodHRwOi8vb3BlbmN2Lm9yZy8pIGNvbXB1dGVyIHZpc2lvbiBsaWJyYXJ5LgotCi0jIyBSZWxh
dGVkIE9wZW4gU291cmNlIFByb2plY3RzICMjCi0KLVtHb29nbGUgVGVzdCBVSV0oaHR0cHM6Ly9n
aXRodWIuY29tL29zcGVjdG9yL2d0ZXN0LWdiYXIpIGlzIHRlc3QgcnVubmVyIHRoYXQgcnVucwot
eW91ciB0ZXN0IGJpbmFyeSwgYWxsb3dzIHlvdSB0byB0cmFjayBpdHMgcHJvZ3Jlc3MgdmlhIGEg
cHJvZ3Jlc3MgYmFyLCBhbmQKLWRpc3BsYXlzIGEgbGlzdCBvZiB0ZXN0IGZhaWx1cmVzLiBDbGlj
a2luZyBvbiBvbmUgc2hvd3MgZmFpbHVyZSB0ZXh0LiBHb29nbGUKLVRlc3QgVUkgaXMgd3JpdHRl
biBpbiBDIy4KLQotW0dUZXN0IFRBUCBMaXN0ZW5lcl0oaHR0cHM6Ly9naXRodWIuY29tL2tpbm93
L2d0ZXN0LXRhcC1saXN0ZW5lcikgaXMgYW4gZXZlbnQKLWxpc3RlbmVyIGZvciBHb29nbGUgVGVz
dCB0aGF0IGltcGxlbWVudHMgdGhlCi1bVEFQIHByb3RvY29sXShodHRwczovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9UZXN0X0FueXRoaW5nX1Byb3RvY29sKSBmb3IgdGVzdAotcmVzdWx0IG91dHB1
dC4gSWYgeW91ciB0ZXN0IHJ1bm5lciB1bmRlcnN0YW5kcyBUQVAsIHlvdSBtYXkgZmluZCBpdCB1
c2VmdWwuCi0KLSMjIFJlcXVpcmVtZW50cyAjIwotCi1Hb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0
byBoYXZlIGZhaXJseSBtaW5pbWFsIHJlcXVpcmVtZW50cyB0byBidWlsZAotYW5kIHVzZSB3aXRo
IHlvdXIgcHJvamVjdHMsIGJ1dCB0aGVyZSBhcmUgc29tZS4gIEN1cnJlbnRseSwgd2Ugc3VwcG9y
dAotTGludXgsIFdpbmRvd3MsIE1hYyBPUyBYLCBhbmQgQ3lnd2luLiAgV2Ugd2lsbCBhbHNvIG1h
a2Ugb3VyIGJlc3QKLWVmZm9ydCB0byBzdXBwb3J0IG90aGVyIHBsYXRmb3JtcyAoZS5nLiBTb2xh
cmlzLCBBSVgsIGFuZCB6L09TKS4KLUhvd2V2ZXIsIHNpbmNlIGNvcmUgbWVtYmVycyBvZiB0aGUg
R29vZ2xlIFRlc3QgcHJvamVjdCBoYXZlIG5vIGFjY2VzcwotdG8gdGhlc2UgcGxhdGZvcm1zLCBH
b29nbGUgVGVzdCBtYXkgaGF2ZSBvdXRzdGFuZGluZyBpc3N1ZXMgdGhlcmUuICBJZgoteW91IG5v
dGljZSBhbnkgcHJvYmxlbXMgb24geW91ciBwbGF0Zm9ybSwgcGxlYXNlIG5vdGlmeQotPGdvb2ds
ZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbT4uIFBhdGNoZXMgZm9yIGZpeGluZyB0aGVt
IGFyZQotZXZlbiBtb3JlIHdlbGNvbWUhCi0KLSMjIyBMaW51eCBSZXF1aXJlbWVudHMgIyMjCi0K
LVRoZXNlIGFyZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgdG8gYnVpbGQgYW5kIHVzZSBHb29nbGUg
VGVzdCBmcm9tIGEgc291cmNlCi1wYWNrYWdlIChhcyBkZXNjcmliZWQgYmVsb3cpOgotCi0gICog
R05VLWNvbXBhdGlibGUgTWFrZSBvciBnbWFrZQotICAqIFBPU0lYLXN0YW5kYXJkIHNoZWxsCi0g
ICogUE9TSVgoLTIpIFJlZ3VsYXIgRXhwcmVzc2lvbnMgKHJlZ2V4LmgpCi0gICogQSBDKys5OC1z
dGFuZGFyZC1jb21wbGlhbnQgY29tcGlsZXIKLQotIyMjIFdpbmRvd3MgUmVxdWlyZW1lbnRzICMj
IwotCi0gICogTWljcm9zb2Z0IFZpc3VhbCBDKysgdjcuMSBvciBuZXdlcgotCi0jIyMgQ3lnd2lu
IFJlcXVpcmVtZW50cyAjIyMKLQotICAqIEN5Z3dpbiB2MS41LjI1LTE0IG9yIG5ld2VyCi0KLSMj
IyBNYWMgT1MgWCBSZXF1aXJlbWVudHMgIyMjCi0KLSAgKiBNYWMgT1MgWCB2MTAuNCBUaWdlciBv
ciBuZXdlcgotICAqIFhjb2RlIERldmVsb3BlciBUb29scwotCi0jIyMgUmVxdWlyZW1lbnRzIGZv
ciBDb250cmlidXRvcnMgIyMjCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4gIElmIHlvdSBwbGFuIHRv
IGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBp
dHMgb3duIHRlc3RzIGZyb20gYSBnaXQgY2hlY2tvdXQgKGRlc2NyaWJlZAotYmVsb3cpLCB3aGlj
aCBoYXMgZnVydGhlciByZXF1aXJlbWVudHM6Ci0KLSAgKiBbUHl0aG9uXShodHRwczovL3d3dy5w
eXRob24ub3JnLykgdjIuMyBvciBuZXdlciAoZm9yIHJ1bm5pbmcgc29tZSBvZgotICAgIHRoZSB0
ZXN0cyBhbmQgcmUtZ2VuZXJhdGluZyBjZXJ0YWluIHNvdXJjZSBmaWxlcyBmcm9tIHRlbXBsYXRl
cykKLSAgKiBbQ01ha2VdKGh0dHBzOi8vY21ha2Uub3JnLykgdjIuNi40IG9yIG5ld2VyCi0KLSMj
IFJlZ2VuZXJhdGluZyBTb3VyY2UgRmlsZXMgIyMKLQotU29tZSBvZiBHb29nbGUgVGVzdCdzIHNv
dXJjZSBmaWxlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGVtcGxhdGVzIChub3QKLWluIHRoZSBDKysg
c2Vuc2UpIHVzaW5nIGEgc2NyaXB0LgotRm9yIGV4YW1wbGUsIHRoZQotZmlsZSBpbmNsdWRlL2d0
ZXN0L2ludGVybmFsL2d0ZXN0LXR5cGUtdXRpbC5oLnB1bXAgaXMgdXNlZCB0byBnZW5lcmF0ZQot
Z3Rlc3QtdHlwZS11dGlsLmggaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotCi1Zb3UgZG9uJ3QgbmVl
ZCB0byB3b3JyeSBhYm91dCByZWdlbmVyYXRpbmcgdGhlIHNvdXJjZSBmaWxlcwotdW5sZXNzIHlv
dSBuZWVkIHRvIG1vZGlmeSB0aGVtLiAgWW91IHdvdWxkIHRoZW4gbW9kaWZ5IHRoZQotY29ycmVz
cG9uZGluZyBgLnB1bXBgIGZpbGVzIGFuZCBydW4gdGhlICdbcHVtcC5weV0oZ29vZ2xldGVzdC9z
Y3JpcHRzL3B1bXAucHkpJwotZ2VuZXJhdG9yIHNjcmlwdC4gIFNlZSB0aGUgW1B1bXAgTWFudWFs
XShnb29nbGV0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCkuCi0KLSMjIyBDb250cmlidXRpbmcgQ29k
ZSAjIyMKLQotV2Ugd2VsY29tZSBwYXRjaGVzLiAgUGxlYXNlIHJlYWQgdGhlCi1bRGV2ZWxvcGVy
J3MgR3VpZGVdKGdvb2dsZXRlc3QvZG9jcy9EZXZHdWlkZS5tZCkKLWZvciBob3cgeW91IGNhbiBj
b250cmlidXRlLiBJbiBwYXJ0aWN1bGFyLCBtYWtlIHN1cmUgeW91IGhhdmUgc2lnbmVkCi10aGUg
Q29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQsIG9yIHdlIHdvbid0IGJlIGFibGUgdG8gYWNj
ZXB0IHRoZQotcGF0Y2guCi0KLUhhcHB5IHRlc3RpbmchCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvYXBwdmV5b3Iu
eW1sIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2FwcHZleW9yLnltbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDYxM2Zk
NjAyNzgxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2FwcHZleW9yLnltbAorKysgL2Rldi9udWxsCkBA
IC0xLDcxICswLDAgQEAKLXZlcnNpb246ICd7YnVpbGR9JwotCi1vczogVmlzdWFsIFN0dWRpbyAy
MDE1Ci0KLWVudmlyb25tZW50OgotICBtYXRyaXg6Ci0gIC0gVG9vbHNldDogdjE0MAotICAtIFRv
b2xzZXQ6IHYxMjAKLSAgLSBUb29sc2V0OiB2MTEwCi0gIC0gVG9vbHNldDogdjEwMAotCi1wbGF0
Zm9ybToKLSAgLSBXaW4zMgotICAtIHg2NAotCi1jb25maWd1cmF0aW9uOgotIyAgLSBSZWxlYXNl
Ci0gIC0gRGVidWcKLQotYnVpbGQ6Ci0gIHZlcmJvc2l0eTogbWluaW1hbAotCi1hcnRpZmFjdHM6
Ci0gIC0gcGF0aDogJ19idWlsZC9UZXN0aW5nL1RlbXBvcmFyeS8qJwotICAgIG5hbWU6IHRlc3Rf
cmVzdWx0cwotCi1iZWZvcmVfYnVpbGQ6Ci0tIHBzOiB8Ci0gICAgV3JpdGUtT3V0cHV0ICJDb25m
aWd1cmF0aW9uOiAkZW52OkNPTkZJR1VSQVRJT04iCi0gICAgV3JpdGUtT3V0cHV0ICJQbGF0Zm9y
bTogJGVudjpQTEFURk9STSIKLSAgICAkZ2VuZXJhdG9yID0gc3dpdGNoICgkZW52OlRPT0xTRVQp
Ci0gICAgewotICAgICAgICAidjE0MCIgeyJWaXN1YWwgU3R1ZGlvIDE0IDIwMTUifQotICAgICAg
ICAidjEyMCIgeyJWaXN1YWwgU3R1ZGlvIDEyIDIwMTMifQotICAgICAgICAidjExMCIgeyJWaXN1
YWwgU3R1ZGlvIDExIDIwMTIifQotICAgICAgICAidjEwMCIgeyJWaXN1YWwgU3R1ZGlvIDEwIDIw
MTAifQotICAgIH0KLSAgICBpZiAoJGVudjpQTEFURk9STSAtZXEgIng2NCIpCi0gICAgewotICAg
ICAgICAkZ2VuZXJhdG9yID0gIiRnZW5lcmF0b3IgV2luNjQiCi0gICAgfQotCi1idWlsZF9zY3Jp
cHQ6Ci0tIHBzOiB8Ci0gICAgaWYgKCgkZW52OlRPT0xTRVQgLWVxICJ2MTAwIikgLWFuZCAoJGVu
djpQTEFURk9STSAtZXEgIng2NCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuCi0gICAgfQotICAg
IG1kIF9idWlsZCAtRm9yY2UgfCBPdXQtTnVsbAotICAgIGNkIF9idWlsZAotCi0gICAgJiBjbWFr
ZSAtRyAiJGdlbmVyYXRvciIgLURDTUFLRV9DT05GSUdVUkFUSU9OX1RZUEVTPSJEZWJ1ZztSZWxl
YXNlIiAtRGd0ZXN0X2J1aWxkX3Rlc3RzPU9OIC1EZ3Rlc3RfYnVpbGRfc2FtcGxlcz1PTiAtRGdt
b2NrX2J1aWxkX3Rlc3RzPU9OIC4uCi0gICAgaWYgKCRMYXN0RXhpdENvZGUgLW5lIDApIHsKLSAg
ICAgICAgdGhyb3cgIkV4ZWM6ICRFcnJvck1lc3NhZ2UiCi0gICAgfQotICAgICYgY21ha2UgLS1i
dWlsZCAuIC0tY29uZmlnICRlbnY6Q09ORklHVVJBVElPTgotICAgIGlmICgkTGFzdEV4aXRDb2Rl
IC1uZSAwKSB7Ci0gICAgICAgIHRocm93ICJFeGVjOiAkRXJyb3JNZXNzYWdlIgotICAgIH0KLQot
dGVzdF9zY3JpcHQ6Ci0tIHBzOiB8Ci0gICAgaWYgKCgkZW52OlRvb2xzZXQgLWVxICJ2MTAwIikg
LWFuZCAoJGVudjpQTEFURk9STSAtZXEgIng2NCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuCi0g
ICAgfQotCi0gICAgJiBjdGVzdCAtQyAkZW52OkNPTkZJR1VSQVRJT04gLS1vdXRwdXQtb24tZmFp
bHVyZQotICAgIGlmICgkTGFzdEV4aXRDb2RlIC1uZSAwKSB7Ci0gICAgICAgIHRocm93ICJFeGVj
OiAkRXJyb3JNZXNzYWdlIgotICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0NIQU5HRVMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9DSEFOR0VTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmYy
Zjc2MGUzNDIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DSEFOR0VTCisrKyAvZGV2
L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUNoYW5nZXMgZm9yIDEuNy4wOgotCi0qIEFsbCBuZXcg
aW1wcm92ZW1lbnRzIGluIEdvb2dsZSBUZXN0IDEuNy4wLgotKiBOZXcgZmVhdHVyZTogbWF0Y2hl
cnMgRG91YmxlTmVhcigpLCBGbG9hdE5lYXIoKSwKLSAgTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigp
LCBOYW5TZW5zaXRpdmVGbG9hdE5lYXIoKSwKLSAgVW5vcmRlcmVkRWxlbWVudHNBcmUoKSwgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSgpLCBXaGVuU29ydGVkKCksCi0gIFdoZW5Tb3J0ZWRCeSgp
LCBJc0VtcHR5KCksIGFuZCBTaXplSXMoKS4KLSogSW1wcm92ZW1lbnQ6IEdvb2dsZSBNb2NrIGNh
biBub3cgYmUgYnVpbHQgYXMgYSBETEwuCi0qIEltcHJvdmVtZW50OiB3aGVuIGNvbXBpbGVkIGJ5
IGEgQysrMTEgY29tcGlsZXIsIG1hdGNoZXJzIEFsbE9mKCkKLSAgYW5kIEFueU9mKCkgY2FuIGFj
Y2VwdCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIG1hdGNoZXJzLgotKiBJbXByb3ZlbWVudDogd2hl
biBjb21waWxlZCBieSBhIEMrKzExIGNvbXBpbGVyLCBtYXRjaGVycwotICBFbGVtZW50c0FyZUFy
cmF5KCkgY2FuIGFjY2VwdCBhbiBpbml0aWFsaXplciBsaXN0LgotKiBJbXByb3ZlbWVudDogd2hl
biBleGNlcHRpb25zIGFyZSBlbmFibGVkLCBhIG1vY2sgbWV0aG9kIHdpdGggbm8KLSAgZGVmYXVs
dCBhY3Rpb24gbm93IHRocm93cyBpbnN0ZWFkIGNyYXNoaW5nIHRoZSB0ZXN0LgotKiBJbXByb3Zl
bWVudDogYWRkZWQgY2xhc3MgdGVzdGluZzo6U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciB0byBh
aWQKLSAgZGVmaW5pdGlvbiBvZiBjb21wb3NpdGUgbWF0Y2hlcnMuCi0qIEltcHJvdmVtZW50OiBm
dW5jdGlvbiByZXR1cm4gdHlwZXMgdXNlZCBpbiBNT0NLX01FVEhPRCooKSBtYWNyb3MgY2FuCi0g
IG5vdyBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hcy4KLSogSW1wcm92ZW1lbnQgKHBvdGVudGlh
bGx5IGJyZWFraW5nKTogRVhQRUNUX1RIQVQoKSBhbmQgQVNTRVJUX1RIQVQoKQotICBhcmUgbm93
IG1vcmUgc3RyaWN0IGluIGVuc3VyaW5nIHRoYXQgdGhlIHZhbHVlIHR5cGUgYW5kIHRoZSBtYXRj
aGVyCi0gIHR5cGUgYXJlIGNvbXBhdGlibGUsIGNhdGNoaW5nIHBvdGVudGlhbCBidWdzIGluIHRl
c3RzLgotKiBJbXByb3ZlbWVudDogUG9pbnRlZSgpIG5vdyB3b3JrcyBvbiBhbiBvcHRpb25hbDxU
Pi4KLSogSW1wcm92ZW1lbnQ6IHRoZSBFbGVtZW50c0FyZUFycmF5KCkgbWF0Y2hlciBjYW4gbm93
IHRha2UgYSB2ZWN0b3Igb3IKLSAgaXRlcmF0b3IgcmFuZ2UgYXMgaW5wdXQsIGFuZCBtYWtlcyBh
IGNvcHkgb2YgaXRzIGlucHV0IGVsZW1lbnRzCi0gIGJlZm9yZSB0aGUgY29udmVyc2lvbiB0byBh
IE1hdGNoZXIuCi0qIEltcHJvdmVtZW50OiB0aGUgR29vZ2xlIE1vY2sgR2VuZXJhdG9yIGNhbiBu
b3cgZ2VuZXJhdGUgbW9ja3MgZm9yCi0gIHNvbWUgY2xhc3MgdGVtcGxhdGVzLgotKiBCdWcgZml4
OiBtb2NrIG9iamVjdCBkZXN0cnVjdGlvbiB0cmlnZ2VycmVkIGJ5IGFub3RoZXIgbW9jayBvYmpl
Y3QncwotICBkZXN0cnVjdGlvbiBubyBsb25nZXIgaGFuZ3MuCi0qIEltcHJvdmVtZW50OiBHb29n
bGUgTW9jayBEb2N0b3Igd29ya3MgYmV0dGVyIHdpdGggbmV3ZXIgQ2xhbmcgYW5kCi0gIEdDQyBu
b3cuCi0qIENvbXBhdGliaWxpdHkgZml4ZXMuCi0qIEJ1Zy93YXJuaW5nIGZpeGVzLgotCi1DaGFu
Z2VzIGZvciAxLjYuMDoKLQotKiBDb21waWxhdGlvbiBpcyBtdWNoIGZhc3RlciBhbmQgdXNlcyBt
dWNoIGxlc3MgbWVtb3J5LCBlc3BlY2lhbGx5Ci0gIHdoZW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBk
ZXN0cnVjdG9yIG9mIGEgbW9jayBjbGFzcyBhcmUgbW92ZWQgb3V0IG9mCi0gIHRoZSBjbGFzcyBi
b2R5LgotKiBOZXcgbWF0Y2hlcnM6IFBvaW50d2lzZSgpLCBFYWNoKCkuCi0qIE5ldyBhY3Rpb25z
OiBSZXR1cm5Qb2ludGVlKCkgYW5kIFJldHVyblJlZk9mQ29weSgpLgotKiBDTWFrZSBzdXBwb3J0
LgotKiBQcm9qZWN0IGZpbGVzIGZvciBWaXN1YWwgU3R1ZGlvIDIwMTAuCi0qIEFsbE9mKCkgYW5k
IEFueU9mKCkgY2FuIGhhbmRsZSB1cC10byAxMCBhcmd1bWVudHMgbm93LgotKiBHb29nbGUgTW9j
ayBkb2N0b3IgdW5kZXJzdGFuZHMgQ2xhbmcgZXJyb3IgbWVzc2FnZXMgbm93LgotKiBTZXRBcmdQ
b2ludGVlPD4gbm93IGFjY2VwdHMgc3RyaW5nIGxpdGVyYWxzLgotKiBnbW9ja19nZW4ucHkgaGFu
ZGxlcyBzdG9yYWdlIHNwZWNpZmllciBtYWNyb3MgYW5kIHRlbXBsYXRlIHJldHVybgotICB0eXBl
cyBub3cuCi0qIENvbXBhdGliaWxpdHkgZml4ZXMuCi0qIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50
YXRpb24gY2xlYW4tdXBzLgotKiBQb3RlbnRpYWxseSBpbmNvbXBhdGlibGUgY2hhbmdlczogZGlz
YWJsZXMgdGhlIGhhcm1mdWwgJ21ha2UgaW5zdGFsbCcKLSAgY29tbWFuZCBpbiBhdXRvdG9vbHMu
Ci0KLVBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZXM6Ci0KLSogVGhlIGRlc2NyaXB0aW9uIHN0
cmluZyBmb3IgTUFUQ0hFUiooKSBjaGFuZ2VzIGZyb20gUHl0aG9uLXN0eWxlCi0gIGludGVycG9s
YXRpb24gdG8gYW4gb3JkaW5hcnkgQysrIHN0cmluZyBleHByZXNzaW9uLgotKiBTZXRBcmd1bWVu
dFBvaW50ZWUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBTZXRBcmdQb2ludGVlLgotKiBTb21l
IG5vbi1lc3NlbnRpYWwgcHJvamVjdCBmaWxlcyBmb3IgVmlzdWFsIFN0dWRpbyAyMDA1IGFyZSBy
ZW1vdmVkLgotCi1DaGFuZ2VzIGZvciAxLjUuMDoKLQotICogTmV3IGZlYXR1cmU6IEdvb2dsZSBN
b2NrIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZCB0ZXN0cwotICAgb24gcGxh
dGZvcm1zIGhhdmluZyBwdGhyZWFkcy4KLSAqIE5ldyBmZWF0dXJlOiBmdW5jdGlvbiBmb3IgcHJp
bnRpbmcgYSB2YWx1ZSBvZiBhcmJpdHJhcnkgdHlwZS4KLSAqIE5ldyBmZWF0dXJlOiBmdW5jdGlv
biBFeHBsYWluTWF0Y2hSZXN1bHQoKSBmb3IgZWFzeSBkZWZpbml0aW9uIG9mCi0gICBjb21wb3Np
dGUgbWF0Y2hlcnMuCi0gKiBUaGUgbmV3IG1hdGNoZXIgQVBJIGxldHMgdXNlci1kZWZpbmVkIG1h
dGNoZXJzIGdlbmVyYXRlIGN1c3RvbQotICAgZXhwbGFuYXRpb25zIG1vcmUgZGlyZWN0bHkgYW5k
IGVmZmljaWVudGx5LgotICogQmV0dGVyIGZhaWx1cmUgbWVzc2FnZXMgYWxsIGFyb3VuZC4KLSAq
IE5vdE51bGwoKSBhbmQgSXNOdWxsKCkgbm93IHdvcmsgd2l0aCBzbWFydCBwb2ludGVycy4KLSAq
IEZpZWxkKCkgYW5kIFByb3BlcnR5KCkgbm93IHdvcmsgd2hlbiB0aGUgbWF0Y2hlciBhcmd1bWVu
dCBpcyBhIHBvaW50ZXIKLSAgIHBhc3NlZCBieSByZWZlcmVuY2UuCi0gKiBSZWd1bGFyIGV4cHJl
c3Npb24gbWF0Y2hlcnMgb24gYWxsIHBsYXRmb3Jtcy4KLSAqIEFkZGVkIEdDQyA0LjAgc3VwcG9y
dCBmb3IgR29vZ2xlIE1vY2sgRG9jdG9yLgotICogQWRkZWQgZ21vY2tfYWxsX3Rlc3QuY2MgZm9y
IGNvbXBpbGluZyBtb3N0IEdvb2dsZSBNb2NrIHRlc3RzCi0gICBpbiBhIHNpbmdsZSBmaWxlLgot
ICogU2lnbmlmaWNhbnRseSBjbGVhbmVkIHVwIGNvbXBpbGVyIHdhcm5pbmdzLgotICogQnVnIGZp
eGVzLCBiZXR0ZXIgdGVzdCBjb3ZlcmFnZSwgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4K
LQotIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZXM6Ci0KLSAqIEN1c3RvbSBtYXRjaGVycyBk
ZWZpbmVkIHVzaW5nIE1hdGNoZXJJbnRlcmZhY2Ugb3IgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigp
Ci0gICBuZWVkIHRvIGJlIHVwZGF0ZWQgYWZ0ZXIgdXBncmFkaW5nIHRvIEdvb2dsZSBNb2NrIDEu
NS4wOyBtYXRjaGVycyBkZWZpbmVkCi0gICB1c2luZyBNQVRDSEVSIG9yIE1BVENIRVJfUCogYXJl
bid0IGFmZmVjdGVkLgotICogRHJvcHBlZCBzdXBwb3J0IGZvciAnbWFrZSBpbnN0YWxsJy4KLQot
Q2hhbmdlcyBmb3IgMS40LjAgKHdlIHNraXBwZWQgMS4yLiogYW5kIDEuMy4qIHRvIG1hdGNoIHRo
ZSB2ZXJzaW9uIG9mCi1Hb29nbGUgVGVzdCk6Ci0KLSAqIFdvcmtzIGluIG1vcmUgZW52aXJvbm1l
bnRzOiBTeW1iaWFuIGFuZCBtaW5HVywgVmlzdWFsIEMrKyA3LjEuCi0gKiBMaWdodGVyIHdlaWdo
dDogY29tZXMgd2l0aCBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIFRSMSB0dXBsZSAobm8KLSAg
IG1vcmUgZGVwZW5kZW5jeSBvbiBCb29zdCEpLgotICogTmV3IGZlYXR1cmU6IC0tZ21vY2tfY2F0
Y2hfbGVha2VkX21vY2tzIGZvciBkZXRlY3RpbmcgbGVha2VkIG1vY2tzLgotICogTmV3IGZlYXR1
cmU6IEFDVElPTl9URU1QTEFURSBmb3IgZGVmaW5pbmcgdGVtcGxhdGl6ZWQgYWN0aW9ucy4KLSAq
IE5ldyBmZWF0dXJlOiB0aGUgLkFmdGVyKCkgY2xhdXNlIGZvciBzcGVjaWZ5aW5nIGV4cGVjdGF0
aW9uIG9yZGVyLgotICogTmV3IGZlYXR1cmU6IHRoZSAuV2l0aCgpIGNsYXVzZSBmb3IgZm9yIHNw
ZWNpZnlpbmcgaW50ZXItYXJndW1lbnQKLSAgIGNvbnN0cmFpbnRzLgotICogTmV3IGZlYXR1cmU6
IGFjdGlvbnMgUmV0dXJuQXJnPGs+KCksIFJldHVybk5ldzxUPiguLi4pLCBhbmQKLSAgIERlbGV0
ZUFyZzxrPigpLgotICogTmV3IGZlYXR1cmU6IG1hdGNoZXJzIEtleSgpLCBQYWlyKCksIEFyZ3M8
Li4uPigpLCBBbGxBcmdzKCksIElzTnVsbCgpLAotICAgYW5kIENvbnRhaW5zKCkuCi0gKiBOZXcg
ZmVhdHVyZTogdXRpbGl0eSBjbGFzcyBNb2NrRnVuY3Rpb248Rj4sIHVzZWZ1bCBmb3IgY2hlY2tw
b2ludHMsIGV0Yy4KLSAqIE5ldyBmZWF0dXJlOiBmdW5jdGlvbnMgVmFsdWUoeCwgbSkgYW5kIFNh
ZmVNYXRjaGVyQ2FzdDxUPihtKS4KLSAqIE5ldyBmZWF0dXJlOiBjb3B5aW5nIGEgbW9jayBvYmpl
Y3QgaXMgcmVqZWN0ZWQgYXQgY29tcGlsZSB0aW1lLgotICogTmV3IGZlYXR1cmU6IGEgc2NyaXB0
IGZvciBmdXNpbmcgYWxsIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdAotICAgc291cmNlIGZp
bGVzIGZvciBlYXN5IGRlcGxveW1lbnQuCi0gKiBJbXByb3ZlZCB0aGUgR29vZ2xlIE1vY2sgZG9j
dG9yIHRvIGRpYWdub3NlIG1vcmUgZGlzZWFzZXMuCi0gKiBJbXByb3ZlZCB0aGUgR29vZ2xlIE1v
Y2sgZ2VuZXJhdG9yIHNjcmlwdC4KLSAqIENvbXBhdGliaWxpdHkgZml4ZXMgZm9yIE1hYyBPUyBY
IGFuZCBnY2MuCi0gKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLQot
Q2hhbmdlcyBmb3IgMS4xLjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiBhYmlsaXR5IHRvIHVzZSBHb29n
bGUgTW9jayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1ld29yay4KLSAqIE5ldyBmZWF0dXJlOiBtYWNy
b3MgZm9yIGVhc2lseSBkZWZpbmluZyBuZXcgbWF0Y2hlcnMKLSAqIE5ldyBmZWF0dXJlOiBtYWNy
b3MgZm9yIGVhc2lseSBkZWZpbmluZyBuZXcgYWN0aW9ucy4KLSAqIE5ldyBmZWF0dXJlOiBtb3Jl
IGNvbnRhaW5lciBtYXRjaGVycy4KLSAqIE5ldyBmZWF0dXJlOiBhY3Rpb25zIGZvciBhY2Nlc3Np
bmcgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aHJvd2luZwotICAgZXhjZXB0aW9ucy4KLSAqIElt
cHJvdmVkIHRoZSBHb29nbGUgTW9jayBkb2N0b3Igc2NyaXB0IGZvciBkaWFnbm9zaW5nIGNvbXBp
bGVyIGVycm9ycy4KLSAqIEJ1ZyBmaXhlcyBhbmQgaW1wbGVtZW50YXRpb24gY2xlYW4tdXBzLgot
Ci1DaGFuZ2VzIGZvciAxLjAuMDoKLQotICogSW5pdGlhbCBPcGVuIFNvdXJjZSByZWxlYXNlIG9m
IEdvb2dsZSBNb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL0NNYWtlTGlzdHMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ZmI5NmE0YmY2OTguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DTWFrZUxpc3RzLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ01h
a2UgYnVpbGQgc2NyaXB0IGZvciBHb29nbGUgTW9jay4KLSMKLSMgVG8gcnVuIHRoZSB0ZXN0cyBm
b3IgR29vZ2xlIE1vY2sgaXRzZWxmIG9uIExpbnV4LCB1c2UgJ21ha2UgdGVzdCcgb3IKLSMgY3Rl
c3QuICBZb3UgY2FuIHNlbGVjdCB3aGljaCB0ZXN0cyB0byBydW4gdXNpbmcgJ2N0ZXN0IC1SIHJl
Z2V4Jy4KLSMgRm9yIG1vcmUgb3B0aW9ucywgcnVuICdjdGVzdCAtLWhlbHAnLgotCi0jIEJVSUxE
X1NIQVJFRF9MSUJTIGlzIGEgc3RhbmRhcmQgQ01ha2UgdmFyaWFibGUsIGJ1dCB3ZSBkZWNsYXJl
IGl0IGhlcmUgdG8KLSMgbWFrZSBpdCBwcm9taW5lbnQgaW4gdGhlIEdVSS4KLW9wdGlvbihCVUlM
RF9TSEFSRURfTElCUyAiQnVpbGQgc2hhcmVkIGxpYnJhcmllcyAoRExMcykuIiBPRkYpCi0KLW9w
dGlvbihnbW9ja19idWlsZF90ZXN0cyAiQnVpbGQgYWxsIG9mIEdvb2dsZSBNb2NrJ3Mgb3duIHRl
c3RzLiIgT0ZGKQotCi0jIEEgZGlyZWN0b3J5IHRvIGZpbmQgR29vZ2xlIFRlc3Qgc291cmNlcy4K
LWlmIChFWElTVFMgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9ndGVzdC9DTWFrZUxpc3Rz
LnR4dCIpCi0gIHNldChndGVzdF9kaXIgZ3Rlc3QpCi1lbHNlKCkKLSAgc2V0KGd0ZXN0X2RpciAu
Li9nb29nbGV0ZXN0KQotZW5kaWYoKQotCi0jIERlZmluZXMgcHJlX3Byb2plY3Rfc2V0X3VwX2hl
cm1ldGljX2J1aWxkKCkgYW5kIHNldF91cF9oZXJtZXRpY19idWlsZCgpLgotaW5jbHVkZSgiJHtn
dGVzdF9kaXJ9L2NtYWtlL2hlcm1ldGljX2J1aWxkLmNtYWtlIiBPUFRJT05BTCkKLQotaWYgKENP
TU1BTkQgcHJlX3Byb2plY3Rfc2V0X3VwX2hlcm1ldGljX2J1aWxkKQotICAjIEdvb2dsZSBUZXN0
IGFsc28gY2FsbHMgaGVybWV0aWMgc2V0dXAgZnVuY3Rpb25zIGZyb20gYWRkX3N1YmRpcmVjdG9y
eSwKLSAgIyBhbHRob3VnaCBpdHMgY2hhbmdlcyB3aWxsIG5vdCBhZmZlY3QgdGhpbmdzIGF0IHRo
ZSBjdXJyZW50IHNjb3BlLgotICBwcmVfcHJvamVjdF9zZXRfdXBfaGVybWV0aWNfYnVpbGQoKQot
ZW5kaWYoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgUHJvamVjdC13aWRlIHNldHRpbmdzCi0K
LSMgTmFtZSBvZiB0aGUgcHJvamVjdC4KLSMKLSMgQ01ha2UgZmlsZXMgaW4gdGhpcyBwcm9qZWN0
IGNhbiByZWZlciB0byB0aGUgcm9vdCBzb3VyY2UgZGlyZWN0b3J5Ci0jIGFzICR7Z21vY2tfU09V
UkNFX0RJUn0gYW5kIHRvIHRoZSByb290IGJpbmFyeSBkaXJlY3RvcnkgYXMKLSMgJHtnbW9ja19C
SU5BUllfRElSfS4KLSMgTGFuZ3VhZ2UgIkMiIGlzIHJlcXVpcmVkIGZvciBmaW5kX3BhY2thZ2Uo
VGhyZWFkcykuCi1wcm9qZWN0KGdtb2NrIENYWCBDKQotY21ha2VfbWluaW11bV9yZXF1aXJlZChW
RVJTSU9OIDIuNi40KQotCi1pZiAoQ09NTUFORCBzZXRfdXBfaGVybWV0aWNfYnVpbGQpCi0gIHNl
dF91cF9oZXJtZXRpY19idWlsZCgpCi1lbmRpZigpCi0KLSMgSW5zdHJ1Y3RzIENNYWtlIHRvIHBy
b2Nlc3MgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCBhbmQgYWRkIGl0cwotIyB0YXJnZXRz
IHRvIHRoZSBjdXJyZW50IHNjb3BlLiAgV2UgYXJlIHBsYWNpbmcgR29vZ2xlIFRlc3QncyBiaW5h
cnkKLSMgZGlyZWN0b3J5IGluIGEgc3ViZGlyZWN0b3J5IG9mIG91ciBvd24gYXMgVkMgY29tcGls
YXRpb24gbWF5IGJyZWFrCi0jIGlmIHRoZXkgYXJlIHRoZSBzYW1lICh0aGUgZGVmYXVsdCkuCi1h
ZGRfc3ViZGlyZWN0b3J5KCIke2d0ZXN0X2Rpcn0iICIke2dtb2NrX0JJTkFSWV9ESVJ9L2d0ZXN0
IikKLQotIyBBbHRob3VnaCBHb29nbGUgVGVzdCdzIENNYWtlTGlzdHMudHh0IGNhbGxzIHRoaXMg
ZnVuY3Rpb24sIHRoZQotIyBjaGFuZ2VzIHRoZXJlIGRvbid0IGFmZmVjdCB0aGUgY3VycmVudCBz
Y29wZS4gIFRoZXJlZm9yZSB3ZSBoYXZlIHRvCi0jIGNhbGwgaXQgYWdhaW4gaGVyZS4KLWNvbmZp
Z19jb21waWxlcl9hbmRfbGlua2VyKCkgICMgZnJvbSAke2d0ZXN0X2Rpcn0vY21ha2UvaW50ZXJu
YWxfdXRpbHMuY21ha2UKLQotIyBBZGRzIEdvb2dsZSBNb2NrJ3MgYW5kIEdvb2dsZSBUZXN0J3Mg
aGVhZGVyIGRpcmVjdG9yaWVzIHRvIHRoZSBzZWFyY2ggcGF0aC4KLWluY2x1ZGVfZGlyZWN0b3Jp
ZXMoIiR7Z21vY2tfU09VUkNFX0RJUn0vaW5jbHVkZSIKLSAgICAgICAgICAgICAgICAgICAgIiR7
Z21vY2tfU09VUkNFX0RJUn0iCi0gICAgICAgICAgICAgICAgICAgICIke2d0ZXN0X1NPVVJDRV9E
SVJ9L2luY2x1ZGUiCi0gICAgICAgICAgICAgICAgICAgICMgVGhpcyBkaXJlY3RvcnkgaXMgbmVl
ZGVkIHRvIGJ1aWxkIGRpcmVjdGx5IGZyb20gR29vZ2xlCi0gICAgICAgICAgICAgICAgICAgICMg
VGVzdCBzb3VyY2VzLgotICAgICAgICAgICAgICAgICAgICAiJHtndGVzdF9TT1VSQ0VfRElSfSIp
Ci0KLSMgU3VtbWFyeSBvZiB0dXBsZSBzdXBwb3J0IGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRp
bzoKLSMgQ29tcGlsZXIgICAgdmVyc2lvbihNUykgIHZlcnNpb24oY21ha2UpICBTdXBwb3J0Ci0j
IC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSMgPD0gVlMgMjAxMCAgPD0gMTAgICAgICAgIDw9IDE2MDAgICAgICAg
ICBVc2UgR29vZ2xlIFRlc3RzJ3Mgb3duIHR1cGxlLgotIyBWUyAyMDEyICAgICAxMSAgICAgICAg
ICAgMTcwMCAgICAgICAgICAgIHN0ZDo6dHIxOjp0dXBsZSArIF9WQVJJQURJQ19NQVg9MTAKLSMg
VlMgMjAxMyAgICAgMTIgICAgICAgICAgIDE4MDAgICAgICAgICAgICBzdGQ6OnRyMTo6dHVwbGUK
LWlmIChNU1ZDIEFORCBNU1ZDX1ZFUlNJT04gRVFVQUwgMTcwMCkKLSAgYWRkX2RlZmluaXRpb25z
KC9EIF9WQVJJQURJQ19NQVg9MTApCi1lbmRpZigpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBE
ZWZpbmVzIHRoZSBnbW9jayAmIGdtb2NrX21haW4gbGlicmFyaWVzLiAgVXNlciB0ZXN0cyBzaG91
bGQgbGluawotIyB3aXRoIG9uZSBvZiB0aGVtLgotCi0jIEdvb2dsZSBNb2NrIGxpYnJhcmllcy4g
IFdlIGJ1aWxkIHRoZW0gdXNpbmcgbW9yZSBzdHJpY3Qgd2FybmluZ3MgdGhhbiB3aGF0Ci0jIGFy
ZSB1c2VkIGZvciBvdGhlciB0YXJnZXRzLCB0byBlbnN1cmUgdGhhdCBHb29nbGUgTW9jayBjYW4g
YmUgY29tcGlsZWQgYnkKLSMgYSB1c2VyIGFnZ3Jlc3NpdmUgYWJvdXQgd2FybmluZ3MuCi1jeHhf
bGlicmFyeShnbW9jawotICAgICAgICAgICAgIiR7Y3h4X3N0cmljdH0iCi0gICAgICAgICAgICAi
JHtndGVzdF9kaXJ9L3NyYy9ndGVzdC1hbGwuY2MiCi0gICAgICAgICAgICBzcmMvZ21vY2stYWxs
LmNjKQotCi1jeHhfbGlicmFyeShnbW9ja19tYWluCi0gICAgICAgICAgICAiJHtjeHhfc3RyaWN0
fSIKLSAgICAgICAgICAgICIke2d0ZXN0X2Rpcn0vc3JjL2d0ZXN0LWFsbC5jYyIKLSAgICAgICAg
ICAgIHNyYy9nbW9jay1hbGwuY2MKLSAgICAgICAgICAgIHNyYy9nbW9ja19tYWluLmNjKQotCi0j
IElmIHRoZSBDTWFrZSB2ZXJzaW9uIHN1cHBvcnRzIGl0LCBhdHRhY2ggaGVhZGVyIGRpcmVjdG9y
eSBpbmZvcm1hdGlvbgotIyB0byB0aGUgdGFyZ2V0cyBmb3Igd2hlbiB3ZSBhcmUgcGFydCBvZiBh
IHBhcmVudCBidWlsZCAoaWUgYmVpbmcgcHVsbGVkCi0jIGluIHZpYSBhZGRfc3ViZGlyZWN0b3J5
KCkgcmF0aGVyIHRoYW4gYmVpbmcgYSBzdGFuZGFsb25lIGJ1aWxkKS4KLWlmIChERUZJTkVEIENN
QUtFX1ZFUlNJT04gQU5EIE5PVCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICIyLjgu
MTEiKQotICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhnbW9jayAgICAgIElOVEVSRkFDRSAi
JHtnbW9ja19TT1VSQ0VfRElSfS9pbmNsdWRlIikKLSAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3Jp
ZXMoZ21vY2tfbWFpbiBJTlRFUkZBQ0UgIiR7Z21vY2tfU09VUkNFX0RJUn0vaW5jbHVkZSIpCi1l
bmRpZigpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBJbnN0YWxsIHJ1bGVzCi1pbnN0YWxsKFRB
UkdFVFMgZ21vY2sgZ21vY2tfbWFpbgotICBERVNUSU5BVElPTiBsaWIpCi1pbnN0YWxsKERJUkVD
VE9SWSAke2dtb2NrX1NPVVJDRV9ESVJ9L2luY2x1ZGUvZ21vY2sKLSAgREVTVElOQVRJT04gaW5j
bHVkZSkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIEdvb2dsZSBNb2NrJ3Mgb3duIHRlc3RzLgot
IwotIyBZb3UgY2FuIHNraXAgdGhpcyBzZWN0aW9uIGlmIHlvdSBhcmVuJ3QgaW50ZXJlc3RlZCBp
biB0ZXN0aW5nCi0jIEdvb2dsZSBNb2NrIGl0c2VsZi4KLSMKLSMgVGhlIHRlc3RzIGFyZSBub3Qg
YnVpbHQgYnkgZGVmYXVsdC4gIFRvIGJ1aWxkIHRoZW0sIHNldCB0aGUKLSMgZ21vY2tfYnVpbGRf
dGVzdHMgb3B0aW9uIHRvIE9OLiAgWW91IGNhbiBkbyBpdCBieSBydW5uaW5nIGNjbWFrZQotIyBv
ciBzcGVjaWZ5aW5nIHRoZSAtRGdtb2NrX2J1aWxkX3Rlc3RzPU9OIGZsYWcgd2hlbiBydW5uaW5n
IGNtYWtlLgotCi1pZiAoZ21vY2tfYnVpbGRfdGVzdHMpCi0gICMgVGhpcyBtdXN0IGJlIHNldCBp
biB0aGUgcm9vdCBkaXJlY3RvcnkgZm9yIHRoZSB0ZXN0cyB0byBiZSBydW4gYnkKLSAgIyAnbWFr
ZSB0ZXN0JyBvciBjdGVzdC4KLSAgZW5hYmxlX3Rlc3RpbmcoKQotCi0gICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAjIEMrKyB0
ZXN0cyBidWlsdCB3aXRoIHN0YW5kYXJkIGNvbXBpbGVyIGZsYWdzLgotCi0gIGN4eF90ZXN0KGdt
b2NrLWFjdGlvbnNfdGVzdCBnbW9ja19tYWluKQotICBjeHhfdGVzdChnbW9jay1jYXJkaW5hbGl0
aWVzX3Rlc3QgZ21vY2tfbWFpbikKLSAgY3h4X3Rlc3QoZ21vY2tfZXhfdGVzdCBnbW9ja19tYWlu
KQotICBjeHhfdGVzdChnbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0IGdtb2NrX21haW4pCi0g
IGN4eF90ZXN0KGdtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QgZ21vY2tfbWFp
bikKLSAgY3h4X3Rlc3QoZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzX3Rlc3QgZ21vY2tf
bWFpbikKLSAgY3h4X3Rlc3QoZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QgZ21vY2tfbWFp
bikKLSAgY3h4X3Rlc3QoZ21vY2staW50ZXJuYWwtdXRpbHNfdGVzdCBnbW9ja19tYWluKQotICBj
eHhfdGVzdChnbW9jay1tYXRjaGVyc190ZXN0IGdtb2NrX21haW4pCi0gIGN4eF90ZXN0KGdtb2Nr
LW1vcmUtYWN0aW9uc190ZXN0IGdtb2NrX21haW4pCi0gIGN4eF90ZXN0KGdtb2NrLW5pY2Utc3Ry
aWN0X3Rlc3QgZ21vY2tfbWFpbikKLSAgY3h4X3Rlc3QoZ21vY2stcG9ydF90ZXN0IGdtb2NrX21h
aW4pCi0gIGN4eF90ZXN0KGdtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdCBnbW9ja19tYWluKQotICBj
eHhfdGVzdChnbW9ja19saW5rX3Rlc3QgZ21vY2tfbWFpbiB0ZXN0L2dtb2NrX2xpbmsyX3Rlc3Qu
Y2MpCi0gIGN4eF90ZXN0KGdtb2NrX3Rlc3QgZ21vY2tfbWFpbikKLQotICBpZiAoQ01BS0VfVVNF
X1BUSFJFQURTX0lOSVQpCi0gICAgY3h4X3Rlc3QoZ21vY2tfc3RyZXNzX3Rlc3QgZ21vY2spCi0g
IGVuZGlmKCkKLQotICAjIGdtb2NrX2FsbF90ZXN0IGlzIGNvbW1lbnRlZCB0byBzYXZlIHRpbWUg
YnVpbGRpbmcgYW5kIHJ1bm5pbmcgdGVzdHMuCi0gICMgVW5jb21tZW50IGlmIG5lY2Vzc2FyeS4K
LSAgIyBjeHhfdGVzdChnbW9ja19hbGxfdGVzdCBnbW9ja19tYWluKQotCi0gICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAjIEMr
KyB0ZXN0cyBidWlsdCB3aXRoIG5vbi1zdGFuZGFyZCBjb21waWxlciBmbGFncy4KLQotICBjeHhf
bGlicmFyeShnbW9ja19tYWluX25vX2V4Y2VwdGlvbiAiJHtjeHhfbm9fZXhjZXB0aW9ufSIKLSAg
ICAiJHtndGVzdF9kaXJ9L3NyYy9ndGVzdC1hbGwuY2MiIHNyYy9nbW9jay1hbGwuY2Mgc3JjL2dt
b2NrX21haW4uY2MpCi0KLSAgY3h4X2xpYnJhcnkoZ21vY2tfbWFpbl9ub19ydHRpICIke2N4eF9u
b19ydHRpfSIKLSAgICAiJHtndGVzdF9kaXJ9L3NyYy9ndGVzdC1hbGwuY2MiIHNyYy9nbW9jay1h
bGwuY2Mgc3JjL2dtb2NrX21haW4uY2MpCi0KLSAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lP
TiBMRVNTIDE2MDApICAjIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEwLgotICAgICMgVmlzdWFs
IFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBpbiBzdGQ6OnRyMSB0
aGF0Ci0gICAgIyBjb25mbGljdCB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRoZXJlZm9yZSB1
c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90Ci0gICAgIyB3b3JrIG9uIHRob3NlIGNvbXBpbGVy
cy4KLSAgICBjeHhfbGlicmFyeShnbW9ja19tYWluX3VzZV9vd25fdHVwbGUgIiR7Y3h4X3VzZV9v
d25fdHVwbGV9IgotICAgICAgIiR7Z3Rlc3RfZGlyfS9zcmMvZ3Rlc3QtYWxsLmNjIiBzcmMvZ21v
Y2stYWxsLmNjIHNyYy9nbW9ja19tYWluLmNjKQotCi0gICAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhn
bW9ja191c2Vfb3duX3R1cGxlX3Rlc3QgIiR7Y3h4X3VzZV9vd25fdHVwbGV9IgotICAgICAgZ21v
Y2tfbWFpbl91c2Vfb3duX3R1cGxlIHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjKQot
ICBlbmRpZigpCi0KLSAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhnbW9jay1tb3JlLWFjdGlvbnNfbm9f
ZXhjZXB0aW9uX3Rlc3QgIiR7Y3h4X25vX2V4Y2VwdGlvbn0iCi0gICAgZ21vY2tfbWFpbl9ub19l
eGNlcHRpb24gdGVzdC9nbW9jay1tb3JlLWFjdGlvbnNfdGVzdC5jYykKLQotICBjeHhfdGVzdF93
aXRoX2ZsYWdzKGdtb2NrX25vX3J0dGlfdGVzdCAiJHtjeHhfbm9fcnR0aX0iCi0gICAgZ21vY2tf
bWFpbl9ub19ydHRpIHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0LmNjKQotCi0gIGN4eF9z
aGFyZWRfbGlicmFyeShzaGFyZWRfZ21vY2tfbWFpbiAiJHtjeHhfZGVmYXVsdH0iCi0gICAgIiR7
Z3Rlc3RfZGlyfS9zcmMvZ3Rlc3QtYWxsLmNjIiBzcmMvZ21vY2stYWxsLmNjIHNyYy9nbW9ja19t
YWluLmNjKQotCi0gICMgVGVzdHMgdGhhdCBhIGJpbmFyeSBjYW4gYmUgYnVpbHQgd2l0aCBHb29n
bGUgTW9jayBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgT24KLSAgIyBzb21lIHN5c3RlbSBjb25maWd1
cmF0aW9ucywgaXQgbWF5IG5vdCBwb3NzaWJsZSB0byBydW4gdGhlIGJpbmFyeSB3aXRob3V0Ci0g
ICMga25vd2luZyBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9ucy4g
V2UgZG8gbm90IHRyeSB0byBydW4KLSAgIyB0aGlzIGJpbmFyeS4gVG8gZ2V0IGEgbW9yZSByb2J1
c3Qgc2hhcmVkIGxpYnJhcnkgY292ZXJhZ2UsIGNvbmZpZ3VyZSB3aXRoCi0gICMgLURCVUlMRF9T
SEFSRURfTElCUz1PTi4KLSAgY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncyhzaGFyZWRfZ21vY2tf
dGVzdF8gIiR7Y3h4X2RlZmF1bHR9IgotICAgIHNoYXJlZF9nbW9ja19tYWluIHRlc3QvZ21vY2st
c3BlYy1idWlsZGVyc190ZXN0LmNjKQotICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoc2hhcmVkX2dt
b2NrX3Rlc3RfCi0gICAgUFJPUEVSVElFUwotICAgIENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNU
X0xJTktFRF9BU19TSEFSRURfTElCUkFSWT0xIikKLQotICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgIyBQeXRob24gdGVzdHMu
Ci0KLSAgY3h4X2V4ZWN1dGFibGUoZ21vY2tfbGVha190ZXN0XyB0ZXN0IGdtb2NrX21haW4pCi0g
IHB5X3Rlc3QoZ21vY2tfbGVha190ZXN0KQotCi0gIGN4eF9leGVjdXRhYmxlKGdtb2NrX291dHB1
dF90ZXN0XyB0ZXN0IGdtb2NrKQotICBweV90ZXN0KGdtb2NrX291dHB1dF90ZXN0KQotZW5kaWYo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ09OVFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svQ09O
VFJJQlVUT1JTCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTlhZTM2MmI2MGMuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9DT05UUklCVVRPUlMKKysrIC9kZXYvbnVsbApA
QCAtMSw0MCArMCwwIEBACi0jIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgcGVvcGxlIHdo
byd2ZSBtYWRlIG5vbi10cml2aWFsCi0jIGNvbnRyaWJ1dGlvbiB0byB0aGUgR29vZ2xlIEMrKyBN
b2NraW5nIEZyYW1ld29yayBwcm9qZWN0LiAgUGVvcGxlCi0jIHdobyBjb21taXQgY29kZSB0byB0
aGUgcHJvamVjdCBhcmUgZW5jb3VyYWdlZCB0byBhZGQgdGhlaXIgbmFtZXMKLSMgaGVyZS4gIFBs
ZWFzZSBrZWVwIHRoZSBsaXN0IHNvcnRlZCBieSBmaXJzdCBuYW1lcy4KLQotQmVub2l0IFNpZ291
cmUgPHRzdW5hQGdvb2dsZS5jb20+Ci1Cb2dkYW4gUGlsb2NhIDxib29AZ29vZ2xlLmNvbT4KLUNo
YW5kbGVyIENhcnJ1dGggPGNoYW5kbGVyY0Bnb29nbGUuY29tPgotRGF2ZSBNYWNMYWNobGFuIDxk
bWFjbGFjaEBnbWFpbC5jb20+Ci1EYXZpZCBBbmRlcnNvbiA8ZGFuZGVyc29uQGdvb2dsZS5jb20+
Ci1EZWFuIFN0dXJ0ZXZhbnQKLUdlbmUgVm9sb3ZpY2ggPGd2QGNpdGUuY29tPgotSGFsIEJ1cmNo
IDxnbW9ja0BoYnVyY2guY29tPgotSmVmZnJleSBZYXNza2luIDxqeWFzc2tpbkBnb29nbGUuY29t
PgotSmltIEtlbGxlciA8amlta2VsbGVyQGdvb2dsZS5jb20+Ci1Kb2UgV2FsbmVzIDxqb2VAdHJ1
ZW1lc2guY29tPgotSm9uIFdyYXkgPGp3cmF5QGdvb2dsZS5jb20+Ci1LZWlyIE1pZXJsZSA8bWll
cmxlQGdtYWlsLmNvbT4KLUtlaXRoIFJheSA8a2VpdGgucmF5QGdtYWlsLmNvbT4KLUtvc3R5YSBT
ZXJlYnJ5YW55IDxrY2NAZ29vZ2xlLmNvbT4KLUxldiBNYWtobGlzCi1NYW51ZWwgS2xpbWVrIDxr
bGltZWtAZ29vZ2xlLmNvbT4KLU1hcmlvIFRhbmV2IDxyYWRpeEBnb29nbGUuY29tPgotTWFyayBQ
YXNraW4KLU1hcmt1cyBIZXVsZSA8bWFya3VzLmhldWxlQGdtYWlsLmNvbT4KLU1hdHRoZXcgU2lt
bW9ucyA8c2ltbW9ubXRAYWNtLm9yZz4KLU1pa2UgQmxhbmQgPG1ibGFuZEBnb29nbGUuY29tPgot
TmVhbCBOb3J3aXR6IDxubm9yd2l0ekBnbWFpbC5jb20+Ci1OZXJtaW4gT3praXJhbmFydGxpIDxu
ZXJtaW5AZ29vZ2xlLmNvbT4KLU93ZW4gQ2FybHNlbiA8b2NhcmxzZW5AZ29vZ2xlLmNvbT4KLVBh
bmVlbmRyYSBCYSA8cGFuZWVuZHJhQGdvb2dsZS5jb20+Ci1QYXVsIE1lbmFnZSA8bWVuYWdlQGdv
b2dsZS5jb20+Ci1QaW90ciBLYW1pbnNraSA8cGlvdHJrQGdvb2dsZS5jb20+Ci1SdXNzIFJ1ZmVy
IDxydXNzQHBlbnRhZC5jb20+Ci1TdmVycmUgU3VuZHNkYWwgPHN1bmRzZGFsQGdtYWlsLmNvbT4K
LVRha2VzaGkgWW9zaGlubyA8dHlvc2hpbm9AZ29vZ2xlLmNvbT4KLVZhZGltIEJlcm1hbiA8dmFk
aW1iQGdvb2dsZS5jb20+Ci1WbGFkIExvc2V2IDx2bGFkbEBnb29nbGUuY29tPgotV29sZmdhbmcg
S2xpZXIgPHdrbGllckBnb29nbGUuY29tPgotWmhhbnlvbmcgV2FuIDx3YW5AZ29vZ2xlLmNvbT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9MSUNFTlNFCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTQxYTExZjhjZTkuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9MSUNFTlNFCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAot
Q29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWFkYmM1MTYzZGQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svTWFrZWZpbGUuYW0K
KysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotIyBBdXRvbWFrZSBmaWxlCi0KLSMgTm9u
c3RhbmRhcmQgcGFja2FnZSBmaWxlcyBmb3IgZGlzdHJpYnV0aW9uLgotRVhUUkFfRElTVCA9IExJ
Q0VOU0UKLQotIyBXZSBtYXkgbmVlZCB0byBidWlsZCBvdXIgaW50ZXJuYWxseSBwYWNrYWdlZCBn
dGVzdC4gSWYgc28sIGl0IHdpbGwgYmUKLSMgaW5jbHVkZWQgaW4gdGhlICdzdWJkaXJzJyB2YXJp
YWJsZS4KLVNVQkRJUlMgPSAkKHN1YmRpcnMpCi0KLSMgVGhpcyBpcyBnZW5lcmF0ZWQgYnkgdGhl
IGNvbmZpZ3VyZSBzY3JpcHQsIHNvIGNsZWFuIGl0IGZvciBkaXN0cmlidXRpb24uCi1ESVNUQ0xF
QU5GSUxFUyA9IHNjcmlwdHMvZ21vY2stY29uZmlnCi0KLSMgV2UgZGVmaW5lIHRoZSBnbG9iYWwg
QU1fQ1BQRkxBR1MgYXMgZXZlcnl0aGluZyB3ZSBjb21waWxlIGluY2x1ZGVzIGZyb20gdGhlc2UK
LSMgZGlyZWN0b3JpZXMuCi1BTV9DUFBGTEFHUyA9ICQoR1RFU1RfQ1BQRkxBR1MpIC1JJChzcmNk
aXIpL2luY2x1ZGUKLQotIyBNb2RpZmllcyBjb21waWxlciBhbmQgbGlua2VyIGZsYWdzIGZvciBw
dGhyZWFkcyBjb21wYXRpYmlsaXR5LgotaWYgSEFWRV9QVEhSRUFEUwotICBBTV9DWFhGTEFHUyA9
IEBQVEhSRUFEX0NGTEFHU0AgLURHVEVTVF9IQVNfUFRIUkVBRD0xCi0gIEFNX0xJQlMgPSBAUFRI
UkVBRF9MSUJTQAotZW5kaWYKLQotIyBCdWlsZCBydWxlcyBmb3IgbGlicmFyaWVzLgotbGliX0xU
TElCUkFSSUVTID0gbGliL2xpYmdtb2NrLmxhIGxpYi9saWJnbW9ja19tYWluLmxhCi0KLWxpYl9s
aWJnbW9ja19sYV9TT1VSQ0VTID0gc3JjL2dtb2NrLWFsbC5jYwotCi1wa2dpbmNsdWRlX0hFQURF
UlMgPSBcCi0gIGluY2x1ZGUvZ21vY2svZ21vY2stYWN0aW9ucy5oIFwKLSAgaW5jbHVkZS9nbW9j
ay9nbW9jay1jYXJkaW5hbGl0aWVzLmggXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRl
ZC1hY3Rpb25zLmggXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1t
b2NrZXJzLmggXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVycy5oIFwK
LSAgaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaCBcCi0gIGluY2x1
ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMuaCBcCi0gIGluY2x1ZGUvZ21vY2svZ21vY2stbW9yZS1h
Y3Rpb25zLmggXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtbWF0Y2hlcnMuaCBcCi0gIGlu
Y2x1ZGUvZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5oIFwKLSAgaW5jbHVkZS9nbW9jay9nbW9j
ay5oCi0KLXBrZ2luY2x1ZGVfaW50ZXJuYWxkaXIgPSAkKHBrZ2luY2x1ZGVkaXIpL2ludGVybmFs
Ci1wa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMgPSBcCi0gIGluY2x1ZGUvZ21vY2svaW50ZXJu
YWwvZ21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmggXAotICBpbmNsdWRlL2dtb2NrL2lu
dGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmggXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFs
L2dtb2NrLXBvcnQuaCBcCi0gIGluY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdl
bmVyYXRlZC1hY3Rpb25zLmggXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9j
ay1tYXRjaGVycy5oIFwKLSAgaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stcG9y
dC5oCi0KLWxpYl9saWJnbW9ja19tYWluX2xhX1NPVVJDRVMgPSBzcmMvZ21vY2tfbWFpbi5jYwot
bGliX2xpYmdtb2NrX21haW5fbGFfTElCQUREID0gbGliL2xpYmdtb2NrLmxhCi0KLSMgQnVpbGQg
cnVsZXMgZm9yIHRlc3RzLiBBdXRvbWFrZSdzIG5hbWluZyBmb3Igc29tZSBvZiB0aGVzZSB2YXJp
YWJsZXMgaXNuJ3QKLSMgdGVycmlibHkgb2J2aW91cywgc28gdGhpcyBpcyBhIGJyaWVmIHJlZmVy
ZW5jZToKLSMKLSMgVEVTVFMgLS0gUHJvZ3JhbXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2Ug
Y2hlY2siCi0jIGNoZWNrX1BST0dSQU1TIC0tIFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNr
IiBidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bgotCi1URVNUUz0KLWNoZWNrX1BST0dSQU1TPQotQU1f
TERGTEFHUyA9ICQoR1RFU1RfTERGTEFHUykKLQotIyBUaGlzIGV4ZXJjaXNlcyBhbGwgbWFqb3Ig
Y29tcG9uZW50cyBvZiBHb29nbGUgTW9jay4gIEl0IGFsc28KLSMgdmVyaWZpZXMgdGhhdCBsaWJn
bW9jayB3b3Jrcy4KLVRFU1RTICs9IHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0Ci1jaGVj
a19QUk9HUkFNUyArPSB0ZXN0L2dtb2NrLXNwZWMtYnVpbGRlcnNfdGVzdAotdGVzdF9nbW9ja19z
cGVjX2J1aWxkZXJzX3Rlc3RfU09VUkNFUyA9IHRlc3QvZ21vY2stc3BlYy1idWlsZGVyc190ZXN0
LmNjCi10ZXN0X2dtb2NrX3NwZWNfYnVpbGRlcnNfdGVzdF9MREFERCA9ICQoR1RFU1RfTElCUykg
bGliL2xpYmdtb2NrLmxhCi0KLSMgVGhpcyB0ZXN0cyB1c2luZyBHb29nbGUgTW9jayBpbiBtdWx0
aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gIEl0IGFsc28KLSMgdmVyaWZpZXMgdGhhdCBsaWJnbW9j
a19tYWluIGFuZCBsaWJnbW9jayB3b3JrLgotVEVTVFMgKz0gdGVzdC9nbW9ja19saW5rX3Rlc3QK
LWNoZWNrX1BST0dSQU1TICs9IHRlc3QvZ21vY2tfbGlua190ZXN0Ci10ZXN0X2dtb2NrX2xpbmtf
dGVzdF9TT1VSQ0VTID0gXAotICB0ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MgXAotICB0ZXN0L2dt
b2NrX2xpbmtfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2tfbGlua190ZXN0LmgKLXRlc3RfZ21vY2tf
bGlua190ZXN0X0xEQUREID0gJChHVEVTVF9MSUJTKSBsaWIvbGliZ21vY2tfbWFpbi5sYSAgbGli
L2xpYmdtb2NrLmxhCi0KLWlmIEhBVkVfUFlUSE9OCi0gICMgVGVzdHMgdGhhdCBmdXNlZCBnbW9j
ayBmaWxlcyBjb21waWxlIGFuZCB3b3JrLgotICBURVNUUyArPSB0ZXN0L2dtb2NrX2Z1c2VkX3Rl
c3QKLSAgY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC9nbW9ja19mdXNlZF90ZXN0Ci0gIHRlc3RfZ21v
Y2tfZnVzZWRfdGVzdF9TT1VSQ0VTID0gXAotICAgIGZ1c2VkLXNyYy9nbW9jay1ndGVzdC1hbGwu
Y2MgXAotICAgIGZ1c2VkLXNyYy9nbW9jay9nbW9jay5oIFwKLSAgICBmdXNlZC1zcmMvZ21vY2tf
bWFpbi5jYyBcCi0gICAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LmggXAotICAgIHRlc3QvZ21vY2tf
dGVzdC5jYwotICB0ZXN0X2dtb2NrX2Z1c2VkX3Rlc3RfQ1BQRkxBR1MgPSAtSSIkKHNyY2Rpcikv
ZnVzZWQtc3JjIgotZW5kaWYKLQotIyBHb29nbGUgTW9jayBzb3VyY2UgZmlsZXMgdGhhdCB3ZSBk
b24ndCBjb21waWxlIGRpcmVjdGx5LgotR01PQ0tfU09VUkNFX0lOR0xVREVTID0gXAotICBzcmMv
Z21vY2stY2FyZGluYWxpdGllcy5jYyBcCi0gIHNyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYyBc
Ci0gIHNyYy9nbW9jay1tYXRjaGVycy5jYyBcCi0gIHNyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNj
IFwKLSAgc3JjL2dtb2NrLmNjCi0KLUVYVFJBX0RJU1QgKz0gJChHTU9DS19TT1VSQ0VfSU5HTFVE
RVMpCi0KLSMgQysrIHRlc3RzIHRoYXQgd2UgZG9uJ3QgY29tcGlsZSB1c2luZyBhdXRvdG9vbHMu
Ci1FWFRSQV9ESVNUICs9IFwKLSAgdGVzdC9nbW9jay1hY3Rpb25zX3Rlc3QuY2MgXAotICB0ZXN0
L2dtb2NrX2FsbF90ZXN0LmNjIFwKLSAgdGVzdC9nbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3QuY2Mg
XAotICB0ZXN0L2dtb2NrX2V4X3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLWdlbmVyYXRlZC1hY3Rp
b25zX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rl
c3QuY2MgXAotICB0ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjIFwK
LSAgdGVzdC9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnNfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2st
aW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBcCi0gIHRlc3QvZ21vY2stbWF0Y2hlcnNfdGVzdC5jYyBc
Ci0gIHRlc3QvZ21vY2stbW9yZS1hY3Rpb25zX3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLW5pY2Ut
c3RyaWN0X3Rlc3QuY2MgXAotICB0ZXN0L2dtb2NrLXBvcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ21v
Y2tfc3RyZXNzX3Rlc3QuY2MKLQotIyBQeXRob24gdGVzdHMsIHdoaWNoIHdlIGRvbid0IHJ1biB1
c2luZyBhdXRvdG9vbHMuCi1FWFRSQV9ESVNUICs9IFwKLSAgdGVzdC9nbW9ja19sZWFrX3Rlc3Qu
cHkgXAotICB0ZXN0L2dtb2NrX2xlYWtfdGVzdF8uY2MgXAotICB0ZXN0L2dtb2NrX291dHB1dF90
ZXN0LnB5IFwKLSAgdGVzdC9nbW9ja19vdXRwdXRfdGVzdF8uY2MgXAotICB0ZXN0L2dtb2NrX291
dHB1dF90ZXN0X2dvbGRlbi50eHQgXAotICB0ZXN0L2dtb2NrX3Rlc3RfdXRpbHMucHkKLQotIyBO
b25zdGFuZGFyZCBwYWNrYWdlIGZpbGVzIGZvciBkaXN0cmlidXRpb24uCi1FWFRSQV9ESVNUICs9
IFwKLSAgQ0hBTkdFUyBcCi0gIENPTlRSSUJVVE9SUyBcCi0gIG1ha2UvTWFrZWZpbGUKLQotIyBQ
dW1wIHNjcmlwdHMgZm9yIGdlbmVyYXRpbmcgR29vZ2xlIE1vY2sgaGVhZGVycy4KLSMgVE9ETyhj
aGFuZGxlcmNAZ29vZ2xlLmNvbSk6IGF1dG9tYXRlIHRoZSBnZW5lcmF0aW9uIG9mICouaCBmcm9t
ICouaC5wdW1wLgotRVhUUkFfRElTVCArPSBcCi0gIGluY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJh
dGVkLWFjdGlvbnMuaC5wdW1wIFwKLSAgaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVu
Y3Rpb24tbW9ja2Vycy5oLnB1bXAgXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1t
YXRjaGVycy5oLnB1bXAgXAotICBpbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0
cmljdC5oLnB1bXAgXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1p
bnRlcm5hbC11dGlscy5oLnB1bXAgXAotICBpbmNsdWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9n
bW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1bXAKLQotIyBTY3JpcHQgZm9yIGZ1c2luZyBHb29n
bGUgTW9jayBhbmQgR29vZ2xlIFRlc3Qgc291cmNlIGZpbGVzLgotRVhUUkFfRElTVCArPSBzY3Jp
cHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkKLQotIyBUaGUgR29vZ2xlIE1vY2sgR2VuZXJhdG9yIHRv
b2wgZnJvbSB0aGUgY3BwY2xlYW4gcHJvamVjdC4KLUVYVFJBX0RJU1QgKz0gXAotICBzY3JpcHRz
L2dlbmVyYXRvci9MSUNFTlNFIFwKLSAgc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FIFwKLSAgc2Ny
aXB0cy9nZW5lcmF0b3IvUkVBRE1FLmNwcGNsZWFuIFwKLSAgc2NyaXB0cy9nZW5lcmF0b3IvY3Bw
L19faW5pdF9fLnB5IFwKLSAgc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2FzdC5weSBcCi0gIHNjcmlw
dHMvZ2VuZXJhdG9yL2NwcC9nbW9ja19jbGFzcy5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2Nw
cC9rZXl3b3Jkcy5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC90b2tlbml6ZS5weSBcCi0g
IHNjcmlwdHMvZ2VuZXJhdG9yL2NwcC91dGlscy5weSBcCi0gIHNjcmlwdHMvZ2VuZXJhdG9yL2dt
b2NrX2dlbi5weQotCi0jIFNjcmlwdCBmb3IgZGlhZ25vc2luZyBjb21waWxlciBlcnJvcnMgaW4g
cHJvZ3JhbXMgdGhhdCB1c2UgR29vZ2xlCi0jIE1vY2suCi1FWFRSQV9ESVNUICs9IHNjcmlwdHMv
Z21vY2tfZG9jdG9yLnB5Ci0KLSMgQ01ha2Ugc2NyaXB0cy4KLUVYVFJBX0RJU1QgKz0gXAotICBD
TWFrZUxpc3RzLnR4dAotCi0jIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdHMu
Ci1FWFRSQV9ESVNUICs9IFwKLSAgbXN2Yy8yMDA1L2dtb2NrLnNsbiBcCi0gIG1zdmMvMjAwNS9n
bW9jay52Y3Byb2ogXAotICBtc3ZjLzIwMDUvZ21vY2tfY29uZmlnLnZzcHJvcHMgXAotICBtc3Zj
LzIwMDUvZ21vY2tfbWFpbi52Y3Byb2ogXAotICBtc3ZjLzIwMDUvZ21vY2tfdGVzdC52Y3Byb2oK
LQotIyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDEwIHByb2plY3RzLgotRVhUUkFfRElTVCAr
PSBcCi0gIG1zdmMvMjAxMC9nbW9jay5zbG4gXAotICBtc3ZjLzIwMTAvZ21vY2sudmN4cHJvaiBc
Ci0gIG1zdmMvMjAxMC9nbW9ja19jb25maWcucHJvcHMgXAotICBtc3ZjLzIwMTAvZ21vY2tfbWFp
bi52Y3hwcm9qIFwKLSAgbXN2Yy8yMDEwL2dtb2NrX3Rlc3QudmN4cHJvagotCi1pZiBIQVZFX1BZ
VEhPTgotIyBnbW9ja190ZXN0LmNjIGRvZXMgbm90IHJlYWxseSBkZXBlbmQgb24gZmlsZXMgZ2Vu
ZXJhdGVkIGJ5IHRoZQotIyBmdXNlZC1nbW9jay1pbnRlcm5hbCBydWxlLiAgSG93ZXZlciwgZ21v
Y2tfdGVzdC5vIGRvZXMsIGFuZCBpdCBpcwotIyBpbXBvcnRhbnQgdG8gaW5jbHVkZSB0ZXN0L2dt
b2NrX3Rlc3QuY2MgYXMgcGFydCBvZiB0aGlzIHJ1bGUgaW4gb3JkZXIgdG8KLSMgcHJldmVudCBj
b21waWxpbmcgZ21vY2tfdGVzdC5vIHVudGlsIGFsbCBkZXBlbmRlbnQgZmlsZXMgaGF2ZSBiZWVu
Ci0jIGdlbmVyYXRlZC4KLSQodGVzdF9nbW9ja19mdXNlZF90ZXN0X1NPVVJDRVMpOiBmdXNlZC1n
bW9jay1pbnRlcm5hbAotCi0jIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEZpbmQgYSB3YXkgdG8g
YWRkIEdvb2dsZSBUZXN0cydzIHNvdXJjZXMgaGVyZS4KLWZ1c2VkLWdtb2NrLWludGVybmFsOiAk
KHBrZ2luY2x1ZGVfSEVBREVSUykgJChwa2dpbmNsdWRlX2ludGVybmFsX0hFQURFUlMpIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAkKGxpYl9saWJnbW9ja19sYV9TT1VSQ0VTKSAkKEdNT0NLX1NP
VVJDRV9JTkdMVURFUykgXAotICAgICAgICAgICAgICAgICAgICAgICQobGliX2xpYmdtb2NrX21h
aW5fbGFfU09VUkNFUykgXAotICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMvZnVzZV9nbW9j
a19maWxlcy5weQotCW1rZGlyIC1wICIkKHNyY2RpcikvZnVzZWQtc3JjIgotCWNobW9kIC1SIHUr
dyAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQlybSAtZiAiJChzcmNkaXIpL2Z1c2VkLXNyYy9ndGVz
dC9ndGVzdC5oIgotCXJtIC1mICIkKHNyY2RpcikvZnVzZWQtc3JjL2dtb2NrL2dtb2NrLmgiCi0J
cm0gLWYgIiQoc3JjZGlyKS9mdXNlZC1zcmMvZ21vY2stZ3Rlc3QtYWxsLmNjIgotCSIkKHNyY2Rp
cikvc2NyaXB0cy9mdXNlX2dtb2NrX2ZpbGVzLnB5IiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIKLQlj
cCAtZiAiJChzcmNkaXIpL3NyYy9nbW9ja19tYWluLmNjIiAiJChzcmNkaXIpL2Z1c2VkLXNyYyIK
LQotbWFpbnRhaW5lci1jbGVhbi1sb2NhbDoKLQlybSAtcmYgIiQoc3JjZGlyKS9mdXNlZC1zcmMi
Ci1lbmRpZgotCi0jIERlYXRoIHRlc3RzIG1heSBwcm9kdWNlIGNvcmUgZHVtcHMgaW4gdGhlIGJ1
aWxkIGRpcmVjdG9yeS4gSW4gY2FzZQotIyB0aGlzIGhhcHBlbnMsIGNsZWFuIHRoZW0gdG8ga2Vl
cCBkaXN0Y2xlYW5jaGVjayBoYXBweS4KLUNMRUFORklMRVMgPSBjb3JlCi0KLSMgRGlzYWJsZXMg
J21ha2UgaW5zdGFsbCcgYXMgaW5zdGFsbGluZyBhIGNvbXBpbGVkIHZlcnNpb24gb2YgR29vZ2xl
Ci0jIE1vY2sgY2FuIGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGR1ZSB0byB2aW9sYXRpb24g
b2YgdGhlCi0jIE9uZS1EZWZpbml0aW9uIFJ1bGUuCi0KLWluc3RhbGwtZXhlYy1sb2NhbDoKLQll
Y2hvICInbWFrZSBpbnN0YWxsJyBpcyBkYW5nZXJvdXMgYW5kIG5vdCBzdXBwb3J0ZWQuIEluc3Rl
YWQsIHNlZSBSRUFETUUgZm9yIGhvdyB0byBpbnRlZ3JhdGUgR29vZ2xlIE1vY2sgaW50byB5b3Vy
IGJ1aWxkIHN5c3RlbS4iCi0JZmFsc2UKLQotaW5zdGFsbC1kYXRhLWxvY2FsOgotCWVjaG8gIidt
YWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgc2Vl
IFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29nbGUgTW9jayBpbnRvIHlvdXIgYnVpbGQg
c3lzdGVtLiIKLQlmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svUkVBRE1FLm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjEzYTZk
MzU3ZTMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9SRUFETUUubWQKKysrIC9kZXYv
bnVsbApAQCAtMSwzNDMgKzAsMCBAQAotIyMgR29vZ2xlIE1vY2sgIyMKLQotVGhlIEdvb2dsZSBD
KysgbW9ja2luZyBmcmFtZXdvcmsuCi0KLSMjIyBPdmVydmlldyAjIyMKLQotR29vZ2xlJ3MgZnJh
bWV3b3JrIGZvciB3cml0aW5nIGFuZCB1c2luZyBDKysgbW9jayBjbGFzc2VzLgotSXQgY2FuIGhl
bHAgeW91IGRlcml2ZSBiZXR0ZXIgZGVzaWducyBvZiB5b3VyIHN5c3RlbSBhbmQgd3JpdGUgYmV0
dGVyIHRlc3RzLgotCi1JdCBpcyBpbnNwaXJlZCBieToKLQotICAqIFtqTW9ja10oaHR0cDovL3d3
dy5qbW9jay5vcmcvKSwKLSAgKiBbRWFzeU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2sub3JnLyks
IGFuZAotICAqIFtIYW1jcmVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hhbWNyZXN0Lyks
Ci0KLWFuZCBkZXNpZ25lZCB3aXRoIEMrKydzIHNwZWNpZmljcyBpbiBtaW5kLgotCi1Hb29nbGUg
bW9jazoKLQotICAqIGxldHMgeW91IGNyZWF0ZSBtb2NrIGNsYXNzZXMgdHJpdmlhbGx5IHVzaW5n
IHNpbXBsZSBtYWNyb3MuCi0gICogc3VwcG9ydHMgYSByaWNoIHNldCBvZiBtYXRjaGVycyBhbmQg
YWN0aW9ucy4KLSAgKiBoYW5kbGVzIHVub3JkZXJlZCwgcGFydGlhbGx5IG9yZGVyZWQsIG9yIGNv
bXBsZXRlbHkgb3JkZXJlZCBleHBlY3RhdGlvbnMuCi0gICogaXMgZXh0ZW5zaWJsZSBieSB1c2Vy
cy4KLQotV2UgaG9wZSB5b3UgZmluZCBpdCB1c2VmdWwhCi0KLSMjIyBGZWF0dXJlcyAjIyMKLQot
ICAqIFByb3ZpZGVzIGEgZGVjbGFyYXRpdmUgc3ludGF4IGZvciBkZWZpbmluZyBtb2Nrcy4KLSAg
KiBDYW4gZWFzaWx5IGRlZmluZSBwYXJ0aWFsIChoeWJyaWQpIG1vY2tzLCB3aGljaCBhcmUgYSBj
cm9zcyBvZiByZWFsCi0gICAgYW5kIG1vY2sgb2JqZWN0cy4KLSAgKiBIYW5kbGVzIGZ1bmN0aW9u
cyBvZiBhcmJpdHJhcnkgdHlwZXMgYW5kIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgotICAqIENvbWVz
IHdpdGggYSByaWNoIHNldCBvZiBtYXRjaGVycyBmb3IgdmFsaWRhdGluZyBmdW5jdGlvbiBhcmd1
bWVudHMuCi0gICogVXNlcyBhbiBpbnR1aXRpdmUgc3ludGF4IGZvciBjb250cm9sbGluZyB0aGUg
YmVoYXZpb3Igb2YgYSBtb2NrLgotICAqIERvZXMgYXV0b21hdGljIHZlcmlmaWNhdGlvbiBvZiBl
eHBlY3RhdGlvbnMgKG5vIHJlY29yZC1hbmQtcmVwbGF5IG5lZWRlZCkuCi0gICogQWxsb3dzIGFy
Yml0cmFyeSAocGFydGlhbCkgb3JkZXJpbmcgY29uc3RyYWludHMgb24KLSAgICBmdW5jdGlvbiBj
YWxscyB0byBiZSBleHByZXNzZWQsLgotICAqIExldHMgYSB1c2VyIGV4dGVuZCBpdCBieSBkZWZp
bmluZyBuZXcgbWF0Y2hlcnMgYW5kIGFjdGlvbnMuCi0gICogRG9lcyBub3QgdXNlIGV4Y2VwdGlv
bnMuCi0gICogSXMgZWFzeSB0byBsZWFybiBhbmQgdXNlLgotCi1QbGVhc2Ugc2VlIHRoZSBwcm9q
ZWN0IHBhZ2UgYWJvdmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyB0aGUKLW1haWxp
bmcgbGlzdCBmb3IgcXVlc3Rpb25zLCBkaXNjdXNzaW9ucywgYW5kIGRldmVsb3BtZW50LiAgVGhl
cmUgaXMKLWFsc28gYW4gSVJDIGNoYW5uZWwgb24gT0ZUQyAoaXJjLm9mdGMubmV0KSAjZ3Rlc3Qg
YXZhaWxhYmxlLiAgUGxlYXNlCi1qb2luIHVzIQotCi1QbGVhc2Ugbm90ZSB0aGF0IGNvZGUgdW5k
ZXIgW3NjcmlwdHMvZ2VuZXJhdG9yXShzY3JpcHRzL2dlbmVyYXRvci8pIGlzCi1mcm9tIFtjcHBj
bGVhbl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLykgYW5kIHJlbGVhc2VkIHVu
ZGVyCi10aGUgQXBhY2hlIExpY2Vuc2UsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIEdvb2dsZSBN
b2NrJ3MgbGljZW5zZS4KLQotIyMgR2V0dGluZyBTdGFydGVkICMjCi0KLUlmIHlvdSBhcmUgbmV3
IHRvIHRoZSBwcm9qZWN0LCB3ZSBzdWdnZXN0IHRoYXQgeW91IHJlYWQgdGhlIHVzZXIKLWRvY3Vt
ZW50YXRpb24gaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKLQotICAqIExlYXJuIHRoZSBbYmFzaWNz
XSguLi8uLi9tYXN0ZXIvZ29vZ2xldGVzdC9kb2NzL1ByaW1lci5tZCkgb2YKLSAgICBHb29nbGUg
VGVzdCwgaWYgeW91IGNob29zZSB0byB1c2UgR29vZ2xlIE1vY2sgd2l0aCBpdCAocmVjb21tZW5k
ZWQpLgotICAqIFJlYWQgW0dvb2dsZSBNb2NrIGZvciBEdW1taWVzXSguLi8uLi9tYXN0ZXIvZ29v
Z2xlbW9jay9kb2NzL0ZvckR1bW1pZXMubWQpLgotICAqIFJlYWQgdGhlIGluc3RydWN0aW9ucyBi
ZWxvdyBvbiBob3cgdG8gYnVpbGQgR29vZ2xlIE1vY2suCi0KLVlvdSBjYW4gYWxzbyB3YXRjaCBa
aGFueW9uZydzIFt0YWxrXShodHRwOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9c1lwQ3lMSTQ3
ck0pIG9uIEdvb2dsZSBNb2NrJ3MgdXNhZ2UgYW5kIGltcGxlbWVudGF0aW9uLgotCi1PbmNlIHlv
dSB1bmRlcnN0YW5kIHRoZSBiYXNpY3MsIGNoZWNrIG91dCB0aGUgcmVzdCBvZiB0aGUgZG9jczoK
LQotICAqIFtDaGVhdFNoZWV0XSguLi8uLi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0NoZWF0U2hl
ZXQubWQpIC0gYWxsIHRoZSBjb21tb25seSB1c2VkIHN0dWZmCi0gICAgYXQgYSBnbGFuY2UuCi0g
ICogW0Nvb2tCb29rXSguLi8uLi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kKSAt
IHJlY2lwZXMgZm9yIGdldHRpbmcgdGhpbmdzIGRvbmUsCi0gICAgaW5jbHVkaW5nIGFkdmFuY2Vk
IHRlY2huaXF1ZXMuCi0KLUlmIHlvdSBuZWVkIGhlbHAsIHBsZWFzZSBjaGVjayB0aGUKLVtLbm93
bklzc3Vlc10oZG9jcy9Lbm93bklzc3Vlcy5tZCkgYW5kCi1bRnJlcXVlbnRseUFza2VkUXVlc3Rp
b25zXShkb2NzL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZCkgYmVmb3JlCi1wb3N0aW5nIGEg
cXVlc3Rpb24gb24gdGhlCi1bZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUu
Y29tL2dyb3VwL2dvb2dsZW1vY2spLgotCi0KLSMjIyBVc2luZyBHb29nbGUgTW9jayBXaXRob3V0
IEdvb2dsZSBUZXN0ICMjIwotCi1Hb29nbGUgTW9jayBpcyBub3QgYSB0ZXN0aW5nIGZyYW1ld29y
ayBpdHNlbGYuICBJbnN0ZWFkLCBpdCBuZWVkcyBhCi10ZXN0aW5nIGZyYW1ld29yayBmb3Igd3Jp
dGluZyB0ZXN0cy4gIEdvb2dsZSBNb2NrIHdvcmtzIHNlYW1sZXNzbHkKLXdpdGggW0dvb2dsZSBU
ZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pLCBidXQKLXlvdSBjYW4g
YWxzbyB1c2UgaXQgd2l0aCBbYW55IEMrKyB0ZXN0aW5nIGZyYW1ld29ya10oLi4vLi4vbWFzdGVy
L2dvb2dsZW1vY2svZG9jcy9Gb3JEdW1taWVzLm1kI3VzaW5nLWdvb2dsZS1tb2NrLXdpdGgtYW55
LXRlc3RpbmctZnJhbWV3b3JrKS4KLQotIyMjIFJlcXVpcmVtZW50cyBmb3IgRW5kIFVzZXJzICMj
IwotCi1Hb29nbGUgTW9jayBpcyBpbXBsZW1lbnRlZCBvbiB0b3Agb2YgW0dvb2dsZSBUZXN0XSgK
LWh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LyksIGFuZCBkZXBlbmRzIG9uIGl0
LgotWW91IG11c3QgdXNlIHRoZSBidW5kbGVkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3Qgd2hlbiB1
c2luZyBHb29nbGUgTW9jay4KLQotWW91IGNhbiBhbHNvIGVhc2lseSBjb25maWd1cmUgR29vZ2xl
IE1vY2sgdG8gd29yayB3aXRoIGFub3RoZXIgdGVzdGluZwotZnJhbWV3b3JrLCBhbHRob3VnaCBp
dCB3aWxsIHN0aWxsIG5lZWQgR29vZ2xlIFRlc3QuICBQbGVhc2UgcmVhZAotWyJVc2luZ19Hb29n
bGVfTW9ja193aXRoX0FueV9UZXN0aW5nX0ZyYW1ld29yayJdKAotICAgIC4uLy4uL21hc3Rlci9n
b29nbGVtb2NrL2RvY3MvRm9yRHVtbWllcy5tZCN1c2luZy1nb29nbGUtbW9jay13aXRoLWFueS10
ZXN0aW5nLWZyYW1ld29yaykKLWZvciBpbnN0cnVjdGlvbnMuCi0KLUdvb2dsZSBNb2NrIGRlcGVu
ZHMgb24gYWR2YW5jZWQgQysrIGZlYXR1cmVzIGFuZCB0aHVzIHJlcXVpcmVzIGEgbW9yZQotbW9k
ZXJuIGNvbXBpbGVyLiBUaGUgZm9sbG93aW5nIGFyZSBuZWVkZWQgdG8gdXNlIEdvb2dsZSBNb2Nr
OgotCi0jIyMjIExpbnV4IFJlcXVpcmVtZW50cyAjIyMjCi0KLSAgKiBHTlUtY29tcGF0aWJsZSBN
YWtlIG9yICJnbWFrZSIKLSAgKiBQT1NJWC1zdGFuZGFyZCBzaGVsbAotICAqIFBPU0lYKC0yKSBS
ZWd1bGFyIEV4cHJlc3Npb25zIChyZWdleC5oKQotICAqIEMrKzk4LXN0YW5kYXJkLWNvbXBsaWFu
dCBjb21waWxlciAoZS5nLiBHQ0MgMy40IG9yIG5ld2VyKQotCi0jIyMjIFdpbmRvd3MgUmVxdWly
ZW1lbnRzICMjIyMKLQotICAqIE1pY3Jvc29mdCBWaXN1YWwgQysrIDguMCBTUDEgb3IgbmV3ZXIK
LQotIyMjIyBNYWMgT1MgWCBSZXF1aXJlbWVudHMgIyMjIwotCi0gICogTWFjIE9TIFggMTAuNCBU
aWdlciBvciBuZXdlcgotICAqIERldmVsb3BlciBUb29scyBJbnN0YWxsZWQKLQotIyMjIFJlcXVp
cmVtZW50cyBmb3IgQ29udHJpYnV0b3JzICMjIwotCi1XZSB3ZWxjb21lIHBhdGNoZXMuIElmIHlv
dSBwbGFuIHRvIGNvbnRyaWJ1dGUgYSBwYXRjaCwgeW91IG5lZWQgdG8KLWJ1aWxkIEdvb2dsZSBN
b2NrIGFuZCBpdHMgdGVzdHMsIHdoaWNoIGhhcyBmdXJ0aGVyIHJlcXVpcmVtZW50czoKLQotICAq
IEF1dG9tYWtlIHZlcnNpb24gMS45IG9yIG5ld2VyCi0gICogQXV0b2NvbmYgdmVyc2lvbiAyLjU5
IG9yIG5ld2VyCi0gICogTGlidG9vbCAvIExpYnRvb2xpemUKLSAgKiBQeXRob24gdmVyc2lvbiAy
LjMgb3IgbmV3ZXIgKGZvciBydW5uaW5nIHNvbWUgb2YgdGhlIHRlc3RzIGFuZAotICAgIHJlLWdl
bmVyYXRpbmcgY2VydGFpbiBzb3VyY2UgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMpCi0KLSMjIyBCdWls
ZGluZyBHb29nbGUgTW9jayAjIyMKLQotSWYgeW91IGhhdmUgQ01ha2UgYXZhaWxhYmxlLCBpdCBp
cyByZWNvbW1lbmRlZCB0aGF0IHlvdSBmb2xsb3cgdGhlCi1bYnVpbGQgaW5zdHJ1Y3Rpb25zXVtn
dGVzdF9jbWFrZWJ1aWxkXQotYXMgZGVzY3JpYmVkIGZvciBHb29nbGUgVGVzdC4gSWYgYXJlIHVz
aW5nIEdvb2dsZSBNb2NrIHdpdGggYW4KLWV4aXN0aW5nIENNYWtlIHByb2plY3QsIHRoZSBzZWN0
aW9uCi1bSW5jb3Jwb3JhdGluZyBJbnRvIEFuIEV4aXN0aW5nIENNYWtlIFByb2plY3RdW2d0ZXN0
X2luY29ycGNtYWtlXQotbWF5IGJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIE90aGVyd2lzZSwg
dGhlIGZvbGxvd2luZyBzZWN0aW9ucwotZGV0YWlsIGhvdyB0byBidWlsZCBHb29nbGUgTW9jayB3
aXRob3V0IENNYWtlLgotCi0jIyMjIFByZXBhcmluZyB0byBCdWlsZCAoVW5peCBvbmx5KSAjIyMj
Ci0KLUlmIHlvdSBhcmUgdXNpbmcgYSBVbml4IHN5c3RlbSBhbmQgcGxhbiB0byB1c2UgdGhlIEdO
VSBBdXRvdG9vbHMgYnVpbGQKLXN5c3RlbSB0byBidWlsZCBHb29nbGUgTW9jayAoZGVzY3JpYmVk
IGJlbG93KSwgeW91J2xsIG5lZWQgdG8KLWNvbmZpZ3VyZSBpdCBub3cuCi0KLVRvIHByZXBhcmUg
dGhlIEF1dG90b29scyBidWlsZCBzeXN0ZW06Ci0KLSAgICBjZCBnb29nbGVtb2NrCi0gICAgYXV0
b3JlY29uZiAtZnZpCi0KLVRvIGJ1aWxkIEdvb2dsZSBNb2NrIGFuZCB5b3VyIHRlc3RzIHRoYXQg
dXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1aWxkIHN5c3RlbSB3aGVyZSB0byBmaW5k
IGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBUaGUgZXhhY3QKLXdheSB0byBkbyBpdCBk
ZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQgaXMgdXN1YWxseQotc3Ry
YWlnaHRmb3J3YXJkLgotCi1UaGlzIHNlY3Rpb24gc2hvd3MgaG93IHlvdSBjYW4gaW50ZWdyYXRl
IEdvb2dsZSBNb2NrIGludG8geW91cgotZXhpc3RpbmcgYnVpbGQgc3lzdGVtLgotCi1TdXBwb3Nl
IHlvdSBwdXQgR29vZ2xlIE1vY2sgaW4gZGlyZWN0b3J5IGAke0dNT0NLX0RJUn1gIGFuZCBHb29n
bGUgVGVzdAotaW4gYCR7R1RFU1RfRElSfWAgKHRoZSBsYXR0ZXIgaXMgYCR7R01PQ0tfRElSfS9n
dGVzdGAgYnkgZGVmYXVsdCkuICBUbwotYnVpbGQgR29vZ2xlIE1vY2ssIGNyZWF0ZSBhIGxpYnJh
cnkgYnVpbGQgdGFyZ2V0IChvciBhIHByb2plY3QgYXMKLWNhbGxlZCBieSBWaXN1YWwgU3R1ZGlv
IGFuZCBYY29kZSkgdG8gY29tcGlsZQotCi0gICAgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwu
Y2MgYW5kICR7R01PQ0tfRElSfS9zcmMvZ21vY2stYWxsLmNjCi0KLXdpdGgKLQotICAgICR7R1RF
U1RfRElSfS9pbmNsdWRlIGFuZCAke0dNT0NLX0RJUn0vaW5jbHVkZQotCi1pbiB0aGUgc3lzdGVt
IGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kCi0KLSAgICAke0dURVNUX0RJUn0gYW5kICR7R01PQ0tf
RElSfQotCi1pbiB0aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3VtaW5nIGEgTGlu
dXgtbGlrZSBzeXN0ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2ls
bCBkbzoKLQotICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1Rf
RElSfSBcCi0gICAgICAgIC1pc3lzdGVtICR7R01PQ0tfRElSfS9pbmNsdWRlIC1JJHtHTU9DS19E
SVJ9IFwKLSAgICAgICAgLXB0aHJlYWQgLWMgJHtHVEVTVF9ESVJ9L3NyYy9ndGVzdC1hbGwuY2MK
LSAgICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLUkke0dURVNUX0RJUn0gXAot
ICAgICAgICAtaXN5c3RlbSAke0dNT0NLX0RJUn0vaW5jbHVkZSAtSSR7R01PQ0tfRElSfSBcCi0g
ICAgICAgIC1wdGhyZWFkIC1jICR7R01PQ0tfRElSfS9zcmMvZ21vY2stYWxsLmNjCi0gICAgYXIg
LXJ2IGxpYmdtb2NrLmEgZ3Rlc3QtYWxsLm8gZ21vY2stYWxsLm8KLQotKFdlIG5lZWQgLXB0aHJl
YWQgYXMgR29vZ2xlIFRlc3QgYW5kIEdvb2dsZSBNb2NrIHVzZSB0aHJlYWRzLikKLQotTmV4dCwg
eW91IHNob3VsZCBjb21waWxlIHlvdXIgdGVzdCBzb3VyY2UgZmlsZSB3aXRoCi0ke0dURVNUXF9E
SVJ9L2luY2x1ZGUgYW5kICR7R01PQ0tcX0RJUn0vaW5jbHVkZSBpbiB0aGUgaGVhZGVyIHNlYXJj
aAotcGF0aCwgYW5kIGxpbmsgaXQgd2l0aCBnbW9jayBhbmQgYW55IG90aGVyIG5lY2Vzc2FyeSBs
aWJyYXJpZXM6Ci0KLSAgICBnKysgLWlzeXN0ZW0gJHtHVEVTVF9ESVJ9L2luY2x1ZGUgLWlzeXN0
ZW0gJHtHTU9DS19ESVJ9L2luY2x1ZGUgXAotICAgICAgICAtcHRocmVhZCBwYXRoL3RvL3lvdXJf
dGVzdC5jYyBsaWJnbW9jay5hIC1vIHlvdXJfdGVzdAotCi1BcyBhbiBleGFtcGxlLCB0aGUgbWFr
ZS8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgTWFrZWZpbGUgdGhhdCB5b3UgY2FuCi11c2UgdG8gYnVp
bGQgR29vZ2xlIE1vY2sgb24gc3lzdGVtcyB3aGVyZSBHTlUgbWFrZSBpcyBhdmFpbGFibGUKLShl
LmcuIExpbnV4LCBNYWMgT1MgWCwgYW5kIEN5Z3dpbikuICBJdCBkb2Vzbid0IHRyeSB0byBidWls
ZCBHb29nbGUKLU1vY2sncyBvd24gdGVzdHMuICBJbnN0ZWFkLCBpdCBqdXN0IGJ1aWxkcyB0aGUg
R29vZ2xlIE1vY2sgbGlicmFyeSBhbmQKLWEgc2FtcGxlIHRlc3QuICBZb3UgY2FuIHVzZSBpdCBh
cyBhIHN0YXJ0aW5nIHBvaW50IGZvciB5b3VyIG93biBidWlsZAotc2NyaXB0LgotCi1JZiB0aGUg
ZGVmYXVsdCBzZXR0aW5ncyBhcmUgY29ycmVjdCBmb3IgeW91ciBlbnZpcm9ubWVudCwgdGhlCi1m
b2xsb3dpbmcgY29tbWFuZHMgc2hvdWxkIHN1Y2NlZWQ6Ci0KLSAgICBjZCAke0dNT0NLX0RJUn0v
bWFrZQotICAgIG1ha2UKLSAgICAuL2dtb2NrX3Rlc3QKLQotSWYgeW91IHNlZSBlcnJvcnMsIHRy
eSB0byB0d2VhayB0aGUgY29udGVudHMgb2YKLVttYWtlL01ha2VmaWxlXShtYWtlL01ha2VmaWxl
KSB0byBtYWtlIHRoZW0gZ28gYXdheS4KLQotIyMjIFdpbmRvd3MgIyMjCi0KLVRoZSBtc3ZjLzIw
MDUgZGlyZWN0b3J5IGNvbnRhaW5zIFZDKysgMjAwNSBwcm9qZWN0cyBhbmQgdGhlIG1zdmMvMjAx
MAotZGlyZWN0b3J5IGNvbnRhaW5zIFZDKysgMjAxMCBwcm9qZWN0cyBmb3IgYnVpbGRpbmcgR29v
Z2xlIE1vY2sgYW5kCi1zZWxlY3RlZCB0ZXN0cy4KLQotQ2hhbmdlIHRvIHRoZSBhcHByb3ByaWF0
ZSBkaXJlY3RvcnkgYW5kIHJ1biAibXNidWlsZCBnbW9jay5zbG4iIHRvCi1idWlsZCB0aGUgbGli
cmFyeSBhbmQgdGVzdHMgKG9yIG9wZW4gdGhlIGdtb2NrLnNsbiBpbiB0aGUgTVNWQyBJREUpLgot
SWYgeW91IHdhbnQgdG8gY3JlYXRlIHlvdXIgb3duIHByb2plY3QgdG8gdXNlIHdpdGggR29vZ2xl
IE1vY2ssIHlvdSdsbAotaGF2ZSB0byBjb25maWd1cmUgaXQgdG8gdXNlIHRoZSBgZ21vY2tfY29u
ZmlnYCBwcm9wZXR5IHNoZWV0LiAgRm9yIHRoYXQ6Ci0KLSAqIE9wZW4gdGhlIFByb3BlcnR5IE1h
bmFnZXIgd2luZG93IChWaWV3IHwgT3RoZXIgV2luZG93cyB8IFByb3BlcnR5IE1hbmFnZXIpCi0g
KiBSaWdodC1jbGljayBvbiB5b3VyIHByb2plY3QgYW5kIHNlbGVjdCAiQWRkIEV4aXN0aW5nIFBy
b3BlcnR5IFNoZWV0Li4uIgotICogTmF2aWdhdGUgdG8gYGdtb2NrX2NvbmZpZy52c3Byb3BzYCBv
ciBgZ21vY2tfY29uZmlnLnByb3BzYCBhbmQgc2VsZWN0IGl0LgotICogSW4gUHJvamVjdCBQcm9w
ZXJ0aWVzIHwgQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzIHwgR2VuZXJhbCB8IEFkZGl0aW9uYWwK
LSAgIEluY2x1ZGUgRGlyZWN0b3JpZXMsIHR5cGUgPHBhdGggdG8gR29vZ2xlIE1vY2s+L2luY2x1
ZGUuCi0KLSMjIyBUd2Vha2luZyBHb29nbGUgTW9jayAjIyMKLQotR29vZ2xlIE1vY2sgY2FuIGJl
IHVzZWQgaW4gZGl2ZXJzZSBlbnZpcm9ubWVudHMuICBUaGUgZGVmYXVsdAotY29uZmlndXJhdGlv
biBtYXkgbm90IHdvcmsgKG9yIG1heSBub3Qgd29yayB3ZWxsKSBvdXQgb2YgdGhlIGJveCBpbgot
c29tZSBlbnZpcm9ubWVudHMuICBIb3dldmVyLCB5b3UgY2FuIGVhc2lseSB0d2VhayBHb29nbGUg
TW9jayBieQotZGVmaW5pbmcgY29udHJvbCBtYWNyb3Mgb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQg
bGluZS4gIEdlbmVyYWxseSwKLXRoZXNlIG1hY3JvcyBhcmUgbmFtZWQgbGlrZSBgR1RFU1RfWFla
YCBhbmQgeW91IGRlZmluZSB0aGVtIHRvIGVpdGhlciAxCi1vciAwIHRvIGVuYWJsZSBvciBkaXNh
YmxlIGEgY2VydGFpbiBmZWF0dXJlLgotCi1XZSBsaXN0IHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNl
ZCBtYWNyb3MgYmVsb3cuICBGb3IgYSBjb21wbGV0ZSBsaXN0LAotc2VlIGZpbGUgWyR7R1RFU1Rc
X0RJUn0vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKAotLi4vZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCkuCi0KLSMjIyBDaG9vc2luZyBh
IFRSMSBUdXBsZSBMaWJyYXJ5ICMjIwotCi1Hb29nbGUgTW9jayB1c2VzIHRoZSBDKysgVGVjaG5p
Y2FsIFJlcG9ydCAxIChUUjEpIHR1cGxlIGxpYnJhcnkKLWhlYXZpbHkuICBVbmZvcnR1bmF0ZWx5
IFRSMSB0dXBsZSBpcyBub3QgeWV0IHdpZGVseSBhdmFpbGFibGUgd2l0aCBhbGwKLWNvbXBpbGVy
cy4gIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBHb29nbGUgVGVzdCAxLjQuMCsgaW1wbGVtZW50cyBh
Ci1zdWJzZXQgb2YgVFIxIHR1cGxlIHRoYXQncyBlbm91Z2ggZm9yIEdvb2dsZSBNb2NrJ3MgbmVl
ZC4gIEdvb2dsZSBNb2NrCi13aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoYXQgaW1wbGVtZW50YXRp
b24gd2hlbiB0aGUgY29tcGlsZXIgZG9lc24ndAotcHJvdmlkZSBUUjEgdHVwbGUuCi0KLVVzdWFs
bHkgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB3aGljaCB0dXBsZSBsaWJyYXJ5IEdvb2ds
ZSBUZXN0Ci1hbmQgR29vZ2xlIE1vY2sgdXNlLiAgSG93ZXZlciwgaWYgeW91ciBwcm9qZWN0IGFs
cmVhZHkgdXNlcyBUUjEgdHVwbGUsCi15b3UgbmVlZCB0byB0ZWxsIEdvb2dsZSBUZXN0IGFuZCBH
b29nbGUgTW9jayB0byB1c2UgdGhlIHNhbWUgVFIxIHR1cGxlCi1saWJyYXJ5IHRoZSByZXN0IG9m
IHlvdXIgcHJvamVjdCB1c2VzLCBvciB0aGUgdHdvIHR1cGxlCi1pbXBsZW1lbnRhdGlvbnMgd2ls
bCBjbGFzaC4gIFRvIGRvIHRoYXQsIGFkZAotCi0gICAgLURHVEVTVF9VU0VfT1dOX1RSMV9UVVBM
RT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3aGlsZSBjb21waWxpbmcgR29vZ2xlIFRlc3Qs
IEdvb2dsZSBNb2NrLCBhbmQKLXlvdXIgdGVzdHMuICBJZiB5b3Ugd2FudCB0byBmb3JjZSBHb29n
bGUgVGVzdCBhbmQgR29vZ2xlIE1vY2sgdG8gdXNlCi10aGVpciBvd24gdHVwbGUgbGlicmFyeSwg
anVzdCBhZGQKLQotICAgIC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MQotCi10byB0aGUgY29t
cGlsZXIgZmxhZ3MgaW5zdGVhZC4KLQotSWYgeW91IHdhbnQgdG8gdXNlIEJvb3N0J3MgVFIxIHR1
cGxlIGxpYnJhcnkgd2l0aCBHb29nbGUgTW9jaywgcGxlYXNlCi1yZWZlciB0byB0aGUgQm9vc3Qg
d2Vic2l0ZSAoaHR0cDovL3d3dy5ib29zdC5vcmcvKSBmb3IgaG93IHRvIG9idGFpbgotaXQgYW5k
IHNldCBpdCB1cC4KLQotIyMjIEFzIGEgU2hhcmVkIExpYnJhcnkgKERMTCkgIyMjCi0KLUdvb2ds
ZSBNb2NrIGlzIGNvbXBhY3QsIHNvIG1vc3QgdXNlcnMgY2FuIGJ1aWxkIGFuZCBsaW5rIGl0IGFz
IGEgc3RhdGljCi1saWJyYXJ5IGZvciB0aGUgc2ltcGxpY2l0eS4gIEdvb2dsZSBNb2NrIGNhbiBi
ZSB1c2VkIGFzIGEgRExMLCBidXQgdGhlCi1zYW1lIERMTCBtdXN0IGNvbnRhaW4gR29vZ2xlIFRl
c3QgYXMgd2VsbC4gIFNlZQotW0dvb2dsZSBUZXN0J3MgUkVBRE1FXVtndGVzdF9yZWFkbWVdCi1m
b3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBzZXQgdXAgbmVjZXNzYXJ5IGNvbXBpbGVyIHNldHRp
bmdzLgotCi0jIyMgVHdlYWtpbmcgR29vZ2xlIE1vY2sgIyMjCi0KLU1vc3Qgb2YgR29vZ2xlIFRl
c3QncyBjb250cm9sIG1hY3JvcyBhcHBseSB0byBHb29nbGUgTW9jayBhcyB3ZWxsLgotUGxlYXNl
IHNlZSBbR29vZ2xlIFRlc3QncyBSRUFETUVdW2d0ZXN0X3JlYWRtZV0gZm9yIGhvdyB0byB0d2Vh
ayB0aGVtLgotCi0jIyMgVXBncmFkaW5nIGZyb20gYW4gRWFybGllciBWZXJzaW9uICMjIwotCi1X
ZSBzdHJpdmUgdG8ga2VlcCBHb29nbGUgTW9jayByZWxlYXNlcyBiYWNrd2FyZCBjb21wYXRpYmxl
LgotU29tZXRpbWVzLCB0aG91Z2gsIHdlIGhhdmUgdG8gbWFrZSBzb21lIGJyZWFraW5nIGNoYW5n
ZXMgZm9yIHRoZQotdXNlcnMnIGxvbmctdGVybSBiZW5lZml0cy4gIFRoaXMgc2VjdGlvbiBkZXNj
cmliZXMgd2hhdCB5b3UnbGwgbmVlZCB0bwotZG8gaWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBh
biBlYXJsaWVyIHZlcnNpb24gb2YgR29vZ2xlIE1vY2suCi0KLSMjIyMgVXBncmFkaW5nIGZyb20g
MS4xLjAgb3IgRWFybGllciAjIyMjCi0KLVlvdSBtYXkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJs
ZSBvciBkaXNhYmxlIEdvb2dsZSBUZXN0J3Mgb3duIFRSMQotdHVwbGUgbGlicmFyeS4gIFNlZSB0
aGUgaW5zdHJ1Y3Rpb25zIGluIHNlY3Rpb24gIltDaG9vc2luZyBhIFRSMSBUdXBsZQotTGlicmFy
eV0oLi4vZ29vZ2xldGVzdC8jY2hvb3NpbmctYS10cjEtdHVwbGUtbGlicmFyeSkiLgotCi0jIyMj
IFVwZ3JhZGluZyBmcm9tIDEuNC4wIG9yIEVhcmxpZXIgIyMjIwotCi1PbiBwbGF0Zm9ybXMgd2hl
cmUgdGhlIHB0aHJlYWQgbGlicmFyeSBpcyBhdmFpbGFibGUsIEdvb2dsZSBUZXN0IGFuZAotR29v
Z2xlIE1vY2sgdXNlIGl0IGluIG9yZGVyIHRvIGJlIHRocmVhZC1zYWZlLiAgRm9yIHRoaXMgdG8g
d29yaywgeW91Ci1tYXkgbmVlZCB0byB0d2VhayB5b3VyIGNvbXBpbGVyIGFuZC9vciBsaW5rZXIg
ZmxhZ3MuICBQbGVhc2Ugc2VlIHRoZQotIltNdWx0aS10aHJlYWRlZCBUZXN0c10oLi4vZ29vZ2xl
dGVzdCNtdWx0aS10aHJlYWRlZC10ZXN0cwotKSIgc2VjdGlvbiBpbiBmaWxlIEdvb2dsZSBUZXN0
J3MgUkVBRE1FIGZvciB3aGF0IHlvdSBtYXkgbmVlZCB0byBkby4KLQotSWYgeW91IGhhdmUgY3Vz
dG9tIG1hdGNoZXJzIGRlZmluZWQgdXNpbmcgYE1hdGNoZXJJbnRlcmZhY2VgIG9yCi1gTWFrZVBv
bHltb3JwaGljTWF0Y2hlcigpYCwgeW91J2xsIG5lZWQgdG8gdXBkYXRlIHRoZWlyIGRlZmluaXRp
b25zIHRvCi11c2UgdGhlIG5ldyBtYXRjaGVyIEFQSSAoCi1bbW9ub21vcnBoaWNdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvQ29va0Jvb2sjV3JpdGluZ19OZXdfTW9u
b21vcnBoaWNfTWF0Y2hlcnMpLAotW3BvbHltb3JwaGljXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rI1dyaXRpbmdfTmV3X1BvbHltb3JwaGljX01hdGNo
ZXJzKSkuCi1NYXRjaGVycyBkZWZpbmVkIHVzaW5nIGBNQVRDSEVSKClgIG9yIGBNQVRDSEVSX1Aq
KClgIGFyZW4ndCBhZmZlY3RlZC4KLQotIyMjIERldmVsb3BpbmcgR29vZ2xlIE1vY2sgIyMjCi0K
LVRoaXMgc2VjdGlvbiBkaXNjdXNzZXMgaG93IHRvIG1ha2UgeW91ciBvd24gY2hhbmdlcyB0byBH
b29nbGUgTW9jay4KLQotIyMjIyBUZXN0aW5nIEdvb2dsZSBNb2NrIEl0c2VsZiAjIyMjCi0KLVRv
IG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgd29yayBhcyBpbnRlbmRlZCBhbmQgZG9uJ3QgYnJlYWsg
ZXhpc3RpbmcKLWZ1bmN0aW9uYWxpdHksIHlvdSdsbCB3YW50IHRvIGNvbXBpbGUgYW5kIHJ1biBH
b29nbGUgVGVzdCdzIG93biB0ZXN0cy4KLUZvciB0aGF0IHlvdSdsbCBuZWVkIEF1dG90b29scy4g
IEZpcnN0LCBtYWtlIHN1cmUgeW91IGhhdmUgZm9sbG93ZWQKLXRoZSBpbnN0cnVjdGlvbnMgYWJv
dmUgdG8gY29uZmlndXJlIEdvb2dsZSBNb2NrLgotVGhlbiwgY3JlYXRlIGEgYnVpbGQgb3V0cHV0
IGRpcmVjdG9yeSBhbmQgZW50ZXIgaXQuICBOZXh0LAotCi0gICAgJHtHTU9DS19ESVJ9L2NvbmZp
Z3VyZSAgIyB0cnkgLS1oZWxwIGZvciBtb3JlIGluZm8KLQotT25jZSB5b3UgaGF2ZSBzdWNjZXNz
ZnVsbHkgY29uZmlndXJlZCBHb29nbGUgTW9jaywgdGhlIGJ1aWxkIHN0ZXBzIGFyZQotc3RhbmRh
cmQgZm9yIEdOVS1zdHlsZSBPU1MgcGFja2FnZXMuCi0KLSAgICBtYWtlICAgICAgICAjIFN0YW5k
YXJkIG1ha2VmaWxlIGZvbGxvd2luZyBHTlUgY29udmVudGlvbnMKLSAgICBtYWtlIGNoZWNrICAj
IEJ1aWxkcyBhbmQgcnVucyBhbGwgdGVzdHMgLSBhbGwgc2hvdWxkIHBhc3MuCi0KLU5vdGUgdGhh
dCB3aGVuIGJ1aWxkaW5nIHlvdXIgcHJvamVjdCBhZ2FpbnN0IEdvb2dsZSBNb2NrLCB5b3UgYXJl
IGJ1aWxkaW5nCi1hZ2FpbnN0IEdvb2dsZSBUZXN0IGFzIHdlbGwuICBUaGVyZSBpcyBubyBuZWVk
IHRvIGNvbmZpZ3VyZSBHb29nbGUgVGVzdAotc2VwYXJhdGVseS4KLQotIyMjIyBDb250cmlidXRp
bmcgYSBQYXRjaCAjIyMjCi0KLVdlIHdlbGNvbWUgcGF0Y2hlcy4KLVBsZWFzZSByZWFkIHRoZSBb
RGV2ZWxvcGVyJ3MgR3VpZGVdKGRvY3MvRGV2R3VpZGUubWQpCi1mb3IgaG93IHlvdSBjYW4gY29u
dHJpYnV0ZS4gSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHlvdSBoYXZlIHNpZ25lZAotdGhlIENv
bnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50LCBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGFjY2Vw
dCB0aGUKLXBhdGNoLgotCi1IYXBweSB0ZXN0aW5nIQotCi1bZ3Rlc3RfcmVhZG1lXTogLi4vZ29v
Z2xldGVzdC9SRUFETUUubWQgImdvb2dsZXRlc3QiCi1bZ3Rlc3RfY21ha2VidWlsZF06ICAuLi9n
b29nbGV0ZXN0L1JFQURNRS5tZCN1c2luZy1jbWFrZSAiVXNpbmcgQ01ha2UiCi1bZ3Rlc3RfaW5j
b3JwY21ha2VdOiAuLi9nb29nbGV0ZXN0L1JFQURNRS5tZCNpbmNvcnBvcmF0aW5nLWludG8tYW4t
ZXhpc3RpbmctY21ha2UtcHJvamVjdCAiSW5jb3Jwb3JhdGluZyBJbnRvIEFuIEV4aXN0aW5nIENN
YWtlIFByb2plY3QiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9jb25maWd1cmUuYWMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9jb25maWd1cmUuYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNzQw
ZjIwNWU1NS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2NvbmZpZ3VyZS5hYworKysg
L2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi1tNF9pbmNsdWRlKC4uL2dvb2dsZXRlc3QvbTQv
YWN4X3B0aHJlYWQubTQpCi0KLUFDX0lOSVQoW0dvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmtd
LAotICAgICAgICBbMS43LjBdLAotICAgICAgICBbZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29t
XSwKLSAgICAgICAgW2dtb2NrXSkKLQotIyBQcm92aWRlIHZhcmlvdXMgb3B0aW9ucyB0byBpbml0
aWFsaXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nlc3Nlcy4KLUFDX1BSRVJFUShb
Mi41OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VOU0VdKQotQUNfQ09ORklHX0FVWF9ESVIo
W2J1aWxkLWF1eF0pCi1BQ19DT05GSUdfSEVBREVSUyhbYnVpbGQtYXV4L2NvbmZpZy5oXSkKLUFD
X0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQotQUNfQ09ORklHX0ZJTEVTKFtzY3JpcHRzL2dtb2Nr
LWNvbmZpZ10sIFtjaG1vZCAreCBzY3JpcHRzL2dtb2NrLWNvbmZpZ10pCi0KLSMgSW5pdGlhbGl6
ZSBBdXRvbWFrZSB3aXRoIHZhcmlvdXMgb3B0aW9ucy4gV2UgcmVxdWlyZSBhdCBsZWFzdCB2MS45
LCBwcmV2ZW50Ci0jIHBlZGFudGljIGNvbXBsYWludHMgYWJvdXQgcGFja2FnZSBmaWxlcywgYW5k
IGVuYWJsZSB2YXJpb3VzIGRpc3RyaWJ1dGlvbgotIyB0YXJnZXRzLgotQU1fSU5JVF9BVVRPTUFL
RShbMS45IGRpc3QtYnppcDIgZGlzdC16aXAgZm9yZWlnbiBzdWJkaXItb2JqZWN0c10pCi0KLSMg
Q2hlY2sgZm9yIHByb2dyYW1zIHVzZWQgaW4gYnVpbGRpbmcgR29vZ2xlIFRlc3QuCi1BQ19QUk9H
X0NDCi1BQ19QUk9HX0NYWAotQUNfTEFORyhbQysrXSkKLUFDX1BST0dfTElCVE9PTAotCi0jIFRP
RE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBDdXJyZW50bHkgd2UgYXJlbid0IHJ1bm5pbmcgdGhl
IFB5dGhvbiB0ZXN0cwotIyBhZ2FpbnN0IHRoZSBpbnRlcnByZXRlciBkZXRlY3RlZCBieSBBTV9Q
QVRIX1BZVEhPTiwgYW5kIHNvIHdlIGNvbmRpdGlvbgotIyBIQVZFX1BZVEhPTiBieSByZXF1aXJp
bmcgInB5dGhvbiIgdG8gYmUgaW4gdGhlIFBBVEgsIGFuZCB0aGF0IGludGVycHJldGVyJ3MKLSMg
dmVyc2lvbiB0byBiZSA+PSAyLjMuIFRoaXMgd2lsbCBhbGxvdyB0aGUgc2NyaXB0cyB0byB1c2Ug
YSAiL3Vzci9iaW4vZW52IgotIyBoYXNoYmFuZy4KLVBZVEhPTj0gICMgV2UgKmRvIG5vdCogYWxs
b3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHB5dGhvbiBpbnRlcnByZXRlcgotQUNfUEFUSF9QUk9H
KFtQWVRIT05dLFtweXRob25dLFs6XSkKLUFTX0lGKFt0ZXN0ICIkUFlUSE9OIiAhPSAiOiJdLAot
ICAgICAgW0FNX1BZVEhPTl9DSEVDS19WRVJTSU9OKFskUFlUSE9OXSxbMi4zXSxbOl0sW1BZVEhP
Tj0iOiJdKV0pCi1BTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLFt0ZXN0ICIkUFlUSE9OIiAh
PSAiOiJdKQotCi0jIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pIENoZWNrIGZvciB0aGUgbmVj
ZXNzYXJ5IHN5c3RlbSBoZWFkZXJzLgotCi0jIENvbmZpZ3VyZSBwdGhyZWFkcy4KLUFDX0FSR19X
SVRIKFtwdGhyZWFkc10sCi0gICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wdGhy
ZWFkc10sCi0gICAgICAgICAgICAgICBbdXNlIHB0aHJlYWRzIChkZWZhdWx0IGlzIHllcyldKV0s
Ci0gICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz0kd2l0aHZhbF0sCi0gICAgICAgICAgICBbd2l0
aF9wdGhyZWFkcz1jaGVja10pCi0KLWhhdmVfcHRocmVhZHM9bm8KLUFTX0lGKFt0ZXN0ICJ4JHdp
dGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKLSAgICAgIFtBQ1hfUFRIUkVBRCgKLSAgICAgICAgW10s
Ci0gICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAhPSAieGNoZWNrIl0sCi0g
ICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoCi0gICAgICAgICAgICAgICAgIFstLXdpdGgt
cHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVuYWJsZSB0byBiZSB1c2VkXSldKV0pCi0gICAg
ICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFkX29rIl0pCi1BTV9DT05ESVRJT05BTChbSEFW
RV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPT0gInh5ZXMiXSkKLUFDX1NVQlNU
KFBUSFJFQURfQ0ZMQUdTKQotQUNfU1VCU1QoUFRIUkVBRF9MSUJTKQotCi0jIEdvb2dsZU1vY2sg
Y3VycmVudGx5IGhhcyBoYXJkIGRlcGVuZGVuY2llcyB1cG9uIEdvb2dsZVRlc3QgYWJvdmUgYW5k
IGJleW9uZAotIyBydW5uaW5nIGl0cyBvd24gdGVzdCBzdWl0ZSwgc28gd2UgYm90aCBwcm92aWRl
IG91ciBvd24gdmVyc2lvbiBpbgotIyBhIHN1YmRpcmVjdG9yeSBhbmQgcHJvdmlkZSBzb21lIGxv
Z2ljIHRvIHVzZSBhIGN1c3RvbSB2ZXJzaW9uIG9yIGEgc3lzdGVtCi0jIGluc3RhbGxlZCB2ZXJz
aW9uLgotQUNfQVJHX1dJVEgoW2d0ZXN0XSwKLSAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhb
LS13aXRoLWd0ZXN0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU3BlY2lmaWVzIGhv
dyB0byBmaW5kIHRoZSBndGVzdCBwYWNrYWdlLiBJZiBubwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBkZWZhdWx0IGJlaGF2aW9yLCBhCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGluc3RhbGxlZCBndGVzdCB3aWxsIGJlIHVz
ZWQgaWYgcHJlc2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW4gaW50ZXJu
YWwgdmVyc2lvbiBidWlsdCBvdGhlcndpc2UuIElmIGEKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXRoIGlzIHByb3ZpZGVkLCB0aGUgZ3Rlc3QgYnVpbHQgb3IgaW5zdGFsbGVkIGF0Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBwcmVmaXggd2lsbCBiZSB1c2VkLl0pXSwK
LSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfZ3Rlc3Q9eWVzXSkKLUFDX0FSR19F
TkFCTEUoW2V4dGVybmFsLWd0ZXN0XSwKLSAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFst
LWRpc2FibGUtZXh0ZXJuYWwtZ3Rlc3RdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W0Rpc2FibGVzIGFueSBkZXRlY3Rpb24gb3IgdXNlIG9mIGEgc3lzdGVtCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgb3IgdXNlciBwcm92aWRlZCBndGVzdC4gQW55IG9w
dGlvbiB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0td2l0aC1ndGVzdCcgaXMg
aWdub3JlZC4gKERlZmF1bHQgaXMgZW5hYmxlZC4pXSkKLSAgICAgICAgICAgICAgXSwgW10sIFtl
bmFibGVfZXh0ZXJuYWxfZ3Rlc3Q9eWVzXSkKLUFTX0lGKFt0ZXN0ICJ4JHdpdGhfZ3Rlc3QiID09
ICJ4bm8iXSwKLSAgICAgIFtBQ19NU0dfRVJST1IoW2RubAotU3VwcG9ydCBmb3IgR29vZ2xlVGVz
dCB3YXMgZXhwbGljaXRseSBkaXNhYmxlZC4gQ3VycmVudGx5IEdvb2dsZU1vY2sgaGFzIGEgaGFy
ZAotZGVwZW5kZW5jeSB1cG9uIEdvb2dsZVRlc3QgdG8gYnVpbGQsIHBsZWFzZSBwcm92aWRlIGEg
dmVyc2lvbiwgb3IgYWxsb3cKLUdvb2dsZU1vY2sgdG8gdXNlIGFueSBpbnN0YWxsZWQgdmVyc2lv
biBhbmQgZmFsbCBiYWNrIHVwb24gaXRzIGludGVybmFsCi12ZXJzaW9uLl0pXSkKLQotIyBTZXR1
cCB2YXJpb3VzIEdURVNUIHZhcmlhYmxlcy4gVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IFdo
ZW4gdGhlc2UgYXJlCi0jIHVzZWQgYmVsb3csIHRoZXkgc2hvdWxkIGJlIHVzZWQgc3VjaCB0aGF0
IGFueSBwcmUtZXhpc3RpbmcgdmFsdWVzIGFsd2F5cwotIyB0cnVtcCB2YWx1ZXMgd2Ugc2V0IHRo
ZW0gdG8sIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB0byBzZWxlY3RpdmVseSBvdmVycmlkZQot
IyBkZXRhaWxzIG9mIHRoZSBkZXRlY3Rpb24gcHJvY2Vzcy4KLUFDX0FSR19WQVIoW0dURVNUX0NP
TkZJR10sCi0gICAgICAgICAgIFtUaGUgZXhhY3QgcGF0aCBvZiBHb29nbGUgVGVzdCdzICdndGVz
dC1jb25maWcnIHNjcmlwdC5dKQotQUNfQVJHX1ZBUihbR1RFU1RfQ1BQRkxBR1NdLAotICAgICAg
ICAgICBbQy1saWtlIHByZXByb2Nlc3NvciBmbGFncyBmb3IgR29vZ2xlIFRlc3QuXSkKLUFDX0FS
R19WQVIoW0dURVNUX0NYWEZMQUdTXSwKLSAgICAgICAgICAgW0MrKyBjb21waWxlIGZsYWdzIGZv
ciBHb29nbGUgVGVzdC5dKQotQUNfQVJHX1ZBUihbR1RFU1RfTERGTEFHU10sCi0gICAgICAgICAg
IFtMaW5rZXIgcGF0aCBhbmQgb3B0aW9uIGZsYWdzIGZvciBHb29nbGUgVGVzdC5dKQotQUNfQVJH
X1ZBUihbR1RFU1RfTElCU10sCi0gICAgICAgICAgIFtMaWJyYXJ5IGxpbmtpbmcgZmxhZ3MgZm9y
IEdvb2dsZSBUZXN0Ll0pCi1BQ19BUkdfVkFSKFtHVEVTVF9WRVJTSU9OXSwKLSAgICAgICAgICAg
W1RoZSB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0IGF2YWlsYWJsZS5dKQotSEFWRV9CVUlMVF9HVEVT
VD0ibm8iCi0KLUdURVNUX01JTl9WRVJTSU9OPSIxLjcuMCIKLQotQVNfSUYoW3Rlc3QgIngke2Vu
YWJsZV9leHRlcm5hbF9ndGVzdH0iID0gInh5ZXMiXSwKLSAgICAgIFsjIEJlZ2luIGZpbGxpbmcg
aW4gdmFyaWFibGVzIGFzIHdlIGFyZSBhYmxlLgotICAgICAgQVNfSUYoW3Rlc3QgIngke3dpdGhf
Z3Rlc3R9IiAhPSAieHllcyJdLAotICAgICAgICAgICAgW0FTX0lGKFt0ZXN0IC14ICIke3dpdGhf
Z3Rlc3R9L3NjcmlwdHMvZ3Rlc3QtY29uZmlnIl0sCi0gICAgICAgICAgICAgICAgICAgW0dURVNU
X0NPTkZJRz0iJHt3aXRoX2d0ZXN0fS9zY3JpcHRzL2d0ZXN0LWNvbmZpZyJdLAotICAgICAgICAg
ICAgICAgICAgIFtHVEVTVF9DT05GSUc9IiR7d2l0aF9ndGVzdH0vYmluL2d0ZXN0LWNvbmZpZyJd
KQotICAgICAgICAgICAgQVNfSUYoW3Rlc3QgLXggIiR7R1RFU1RfQ09ORklHfSJdLCBbXSwKLSAg
ICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW2RubAotVW5hYmxlIHRvIGxvY2F0ZSBlaXRo
ZXIgYSBidWlsdCBvciBpbnN0YWxsZWQgR29vZ2xlIFRlc3QgYXQgJyR7d2l0aF9ndGVzdH0nLl0p
Ci0gICAgICAgICAgICAgICAgICBdKV0pCi0KLSAgICAgIEFTX0lGKFt0ZXN0IC14ICIke0dURVNU
X0NPTkZJR30iXSwgW10sCi0gICAgICAgICAgICBbQUNfUEFUSF9QUk9HKFtHVEVTVF9DT05GSUdd
LCBbZ3Rlc3QtY29uZmlnXSldKQotICAgICAgQVNfSUYoW3Rlc3QgLXggIiR7R1RFU1RfQ09ORklH
fSJdLAotICAgICAgICAgICAgW0FDX01TR19DSEVDS0lORyhbZm9yIEdvb2dsZSBUZXN0IHZlcnNp
b24gPj0gJHtHVEVTVF9NSU5fVkVSU0lPTn1dKQotICAgICAgICAgICAgQVNfSUYoWyR7R1RFU1Rf
Q09ORklHfSAtLW1pbi12ZXJzaW9uPSR7R1RFU1RfTUlOX1ZFUlNJT059XSwKLSAgICAgICAgICAg
ICAgICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICAgICAgICAgICAgICAgSEFWRV9CVUlM
VF9HVEVTVD0ieWVzIl0sCi0gICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0p
XSldKQotCi1BU19JRihbdGVzdCAieCR7SEFWRV9CVUlMVF9HVEVTVH0iID0gInh5ZXMiXSwKLSAg
ICAgIFtHVEVTVF9DUFBGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3BwZmxhZ3NgCi0gICAgICBH
VEVTVF9DWFhGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3h4ZmxhZ3NgCi0gICAgICBHVEVTVF9M
REZMQUdTPWAke0dURVNUX0NPTkZJR30gLS1sZGZsYWdzYAotICAgICAgR1RFU1RfTElCUz1gJHtH
VEVTVF9DT05GSUd9IC0tbGlic2AKLSAgICAgIEdURVNUX1ZFUlNJT049YCR7R1RFU1RfQ09ORklH
fSAtLXZlcnNpb25gXSwKLSAgICAgIFtBQ19DT05GSUdfU1VCRElSUyhbLi4vZ29vZ2xldGVzdF0p
Ci0gICAgICAjIEdURVNUX0NPTkZJRyBuZWVkcyB0byBiZSBleGVjdXRhYmxlIGJvdGggaW4gYSBN
YWtlZmlsZSBlbnZpcm9ubW9udCBhbmQKLSAgICAgICMgaW4gYSBzaGVsbCBzY3JpcHQgZW52aXJv
bm1lbnQsIHNvIHJlc29sdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgaXQgaGVyZS4KLSAgICAgIEdU
RVNUX0NPTkZJRz0iYHB3ZCAtUGAvLi4vZ29vZ2xldGVzdC9zY3JpcHRzL2d0ZXN0LWNvbmZpZyIK
LSAgICAgIEdURVNUX0NQUEZMQUdTPSctSSQodG9wX3NyY2RpcikvLi4vZ29vZ2xldGVzdC9pbmNs
dWRlJwotICAgICAgR1RFU1RfQ1hYRkxBR1M9Jy1nJwotICAgICAgR1RFU1RfTERGTEFHUz0nJwot
ICAgICAgR1RFU1RfTElCUz0nJCh0b3BfYnVpbGRkaXIpLy4uL2dvb2dsZXRlc3QvbGliL2xpYmd0
ZXN0LmxhJwotICAgICAgR1RFU1RfVkVSU0lPTj0iJHtHVEVTVF9NSU5fVkVSU0lPTn0iXSkKLQot
IyBUT0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKSBDaGVjayB0aGUgdHlwZXMsIHN0cnVjdHVyZXMs
IGFuZCBvdGhlciBjb21waWxlcgotIyBhbmQgYXJjaGl0ZWN0dXJlIGNoYXJhY3RlcmlzdGljcy4K
LQotIyBPdXRwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcy4gTm8gZnVydGhlciBhdXRvY29uZiBtYWNy
b3MgbWF5IGJlIHVzZWQuCi1BQ19PVVRQVVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
Q2hlYXRTaGVldC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvQ2hlYXRTaGVldC5tZApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWY0NDUxYjg3ODY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svZG9jcy9DaGVhdFNoZWV0Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsNTYyICswLDAg
QEAKLQotCi0jIERlZmluaW5nIGEgTW9jayBDbGFzcyAjCi0KLSMjIE1vY2tpbmcgYSBOb3JtYWwg
Q2xhc3MgIyMKLQotR2l2ZW4KLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgfkZv
bygpOwotICB2aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHN0cmlu
ZyBEZXNjcmliZShjb25zdCBjaGFyKiBuYW1lKSA9IDA7Ci0gIHZpcnR1YWwgc3RyaW5nIERlc2Ny
aWJlKGludCB0eXBlKSA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBQcm9jZXNzKEJhciBlbGVtLCBpbnQg
Y291bnQpID0gMDsKLX07Ci1gYGAKLShub3RlIHRoYXQgYH5Gb28oKWAgKiptdXN0KiogYmUgdmly
dHVhbCkgd2UgY2FuIGRlZmluZSBpdHMgbW9jayBhcwotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21v
Y2suaCIKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICBNT0NLX0NPTlNUX01FVEhP
RDAoR2V0U2l6ZSwgaW50KCkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmluZyhjb25z
dCBjaGFyKiBuYW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMShEZXNjcmliZSwgc3RyaW5nKGludCB0eXBl
KSk7Ci0gIE1PQ0tfTUVUSE9EMihQcm9jZXNzLCBib29sKEJhciBlbGVtLCBpbnQgY291bnQpKTsK
LX07Ci1gYGAKLQotVG8gY3JlYXRlIGEgIm5pY2UiIG1vY2sgb2JqZWN0IHdoaWNoIGlnbm9yZXMg
YWxsIHVuaW50ZXJlc3RpbmcgY2FsbHMsCi1vciBhICJzdHJpY3QiIG1vY2sgb2JqZWN0LCB3aGlj
aCB0cmVhdHMgdGhlbSBhcyBmYWlsdXJlczoKLWBgYAotTmljZU1vY2s8TW9ja0Zvbz4gbmljZV9m
b287ICAgICAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28uCi1TdHJpY3RNb2Nr
PE1vY2tGb28+IHN0cmljdF9mb287IC8vIFRoZSB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0Zv
by4KLWBgYAotCi0jIyBNb2NraW5nIGEgQ2xhc3MgVGVtcGxhdGUgIyMKLQotVG8gbW9jawotYGBg
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJs
aWM6Ci0gIC4uLgotICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgpOwotICB2aXJ0dWFsIGludCBH
ZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9
IDA7Ci19OwotYGBgCi0obm90ZSB0aGF0IGB+U3RhY2tJbnRlcmZhY2UoKWAgKiptdXN0KiogYmUg
dmlydHVhbCkganVzdCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotYGBgCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0lu
dGVyZmFjZTxFbGVtPiB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19DT05TVF9NRVRIT0QwX1Qo
R2V0U2l6ZSwgaW50KCkpOwotICBNT0NLX01FVEhPRDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0m
IHgpKTsKLX07Ci1gYGAKLQotIyMgU3BlY2lmeWluZyBDYWxsaW5nIENvbnZlbnRpb25zIGZvciBN
b2NrIEZ1bmN0aW9ucyAjIwotCi1JZiB5b3VyIG1vY2sgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhl
IGRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uLCB5b3UKLWNhbiBzcGVjaWZ5IGl0IGJ5IGFwcGVu
ZGluZyBgX1dJVEhfQ0FMTFRZUEVgIHRvIGFueSBvZiB0aGUgbWFjcm9zCi1kZXNjcmliZWQgaW4g
dGhlIHByZXZpb3VzIHR3byBzZWN0aW9ucyBhbmQgc3VwcGx5aW5nIHRoZSBjYWxsaW5nCi1jb252
ZW50aW9uIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWFjcm8uIEZvciBleGFtcGxlLAot
YGBgCi0gIE1PQ0tfTUVUSE9EXzFfV0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgRm9v
LCBib29sKGludCBuKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMl9XSVRIX0NBTExUWVBFKFNURE1F
VEhPRENBTExUWVBFLCBCYXIsIGludChkb3VibGUgeCwgZG91YmxlIHkpKTsKLWBgYAotd2hlcmUg
YFNURE1FVEhPRENBTExUWVBFYCBpcyBkZWZpbmVkIGJ5IGA8b2JqYmFzZS5oPmAgb24gV2luZG93
cy4KLQotIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCi0KLVRoZSB0eXBpY2FsIGZsb3cgaXM6Ci0g
IDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgeW91IG5lZWQgdG8gdXNlLiBBbGwgR29v
Z2xlIE1vY2sgbmFtZXMgYXJlIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlIHVubGVzcyB0aGV5
IGFyZSBtYWNyb3Mgb3Igb3RoZXJ3aXNlIG5vdGVkLgotICAxLiBDcmVhdGUgdGhlIG1vY2sgb2Jq
ZWN0cy4KLSAgMS4gT3B0aW9uYWxseSwgc2V0IHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1v
Y2sgb2JqZWN0cy4KLSAgMS4gU2V0IHlvdXIgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVj
dHMgKEhvdyB3aWxsIHRoZXkgYmUgY2FsbGVkPyBXaGF0IHdpbCB0aGV5IGRvPykuCi0gIDEuIEV4
ZXJjaXNlIGNvZGUgdGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHM7IGlmIG5lY2Vzc2FyeSwgY2hl
Y2sgdGhlIHJlc3VsdCB1c2luZyBbR29vZ2xlIFRlc3RdKC4uLy4uL2dvb2dsZXRlc3QvKSBhc3Nl
cnRpb25zLgotICAxLiBXaGVuIGEgbW9jayBvYmplY3RzIGlzIGRlc3RydWN0ZWQsIEdvb2dsZSBN
b2NrIGF1dG9tYXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhh
dmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhlcmUgaXMgYW4gZXhhbXBsZToKLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMxCi0KLVRFU1Qo
QmFyVGVzdCwgRG9lc1RoaXMpIHsKLSAgTW9ja0ZvbyBmb287ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gIzIKLQotICBPTl9DQUxMKGZvbywgR2V0U2l6ZSgpKSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyAjMwotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsK
LSAgLy8gLi4uIG90aGVyIGRlZmF1bHQgYWN0aW9ucyAuLi4KLQotICBFWFBFQ1RfQ0FMTChmb28s
IERlc2NyaWJlKDUpKSAgICAgICAgICAgICAgICAgICAvLyAjNAotICAgICAgLlRpbWVzKDMpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCJDYXRlZ29yeSA1IikpOwotICAvLyAuLi4gb3Ro
ZXIgZXhwZWN0YXRpb25zIC4uLgotCi0gIEVYUEVDVF9FUSgiZ29vZCIsIE15UHJvZHVjdGlvbkZ1
bmN0aW9uKCZmb28pKTsgIC8vICM1Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICM2Ci1gYGAKLQotIyBTZXR0aW5nIERlZmF1bHQgQWN0aW9ucyAj
Ci0KLUdvb2dsZSBNb2NrIGhhcyBhICoqYnVpbHQtaW4gZGVmYXVsdCBhY3Rpb24qKiBmb3IgYW55
IGZ1bmN0aW9uIHRoYXQKLXJldHVybnMgYHZvaWRgLCBgYm9vbGAsIGEgbnVtZXJpYyB2YWx1ZSwg
b3IgYSBwb2ludGVyLgotCi1UbyBjdXN0b21pemUgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBmdW5j
dGlvbnMgd2l0aCByZXR1cm4gdHlwZSBgVGAgZ2xvYmFsbHk6Ci1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6RGVmYXVsdFZhbHVlOwotCi0vLyBTZXRzIHRoZSBkZWZhdWx0IHZhbHVlIHRvIGJlIHJldHVy
bmVkLiBUIG11c3QgYmUgQ29weUNvbnN0cnVjdGlibGUuCi1EZWZhdWx0VmFsdWU8VD46OlNldCh2
YWx1ZSk7Ci0vLyBTZXRzIGEgZmFjdG9yeS4gV2lsbCBiZSBpbnZva2VkIG9uIGRlbWFuZC4gVCBt
dXN0IGJlIE1vdmVDb25zdHJ1Y3RpYmxlLgotLy8gICBUIE1ha2VUKCk7Ci1EZWZhdWx0VmFsdWU8
VD46OlNldEZhY3RvcnkoJk1ha2VUKTsKLS8vIC4uLiB1c2UgdGhlIG1vY2tzIC4uLgotLy8gUmVz
ZXRzIHRoZSBkZWZhdWx0IHZhbHVlLgotRGVmYXVsdFZhbHVlPFQ+OjpDbGVhcigpOwotYGBgCi0K
LVRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGEgcGFydGljdWxhciBtZXRob2Qs
IHVzZSBgT05fQ0FMTCgpYDoKLWBgYAotT05fQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNo
ZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPwotICAgIC5XaWxsQnlE
ZWZhdWx0KGFjdGlvbik7Ci1gYGAKLQotIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAjCi0KLWBFWFBF
Q1RfQ0FMTCgpYCBzZXRzICoqZXhwZWN0YXRpb25zKiogb24gYSBtb2NrIG1ldGhvZCAoSG93IHdp
bGwgaXQgYmUKLWNhbGxlZD8gV2hhdCB3aWxsIGl0IGRvPyk6Ci1gYGAKLUVYUEVDVF9DQUxMKG1v
Y2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQotICAgIC5XaXRoKG11bHRpX2FyZ3VtZW50X21h
dGNoZXIpICA/Ci0gICAgLlRpbWVzKGNhcmRpbmFsaXR5KSAgICAgICAgICAgID8KLSAgICAuSW5T
ZXF1ZW5jZShzZXF1ZW5jZXMpICAgICAgICAgKgotICAgIC5BZnRlcihleHBlY3RhdGlvbnMpICAg
ICAgICAgICAqCi0gICAgLldpbGxPbmNlKGFjdGlvbikgICAgICAgICAgICAgICoKLSAgICAuV2ls
bFJlcGVhdGVkbHkoYWN0aW9uKSAgICAgICAgPwotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
ICAgICAgICA/Ci1gYGAKLQotSWYgYFRpbWVzKClgIGlzIG9taXR0ZWQsIHRoZSBjYXJkaW5hbGl0
eSBpcyBhc3N1bWVkIHRvIGJlOgotCi0gICogYFRpbWVzKDEpYCB3aGVuIHRoZXJlIGlzIG5laXRo
ZXIgYFdpbGxPbmNlKClgIG5vciBgV2lsbFJlcGVhdGVkbHkoKWA7Ci0gICogYFRpbWVzKG4pYCB3
aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYnV0IG5vIGBXaWxsUmVwZWF0ZWRseSgpYCwg
d2hlcmUgYG5gID49IDE7IG9yCi0gICogYFRpbWVzKEF0TGVhc3QobikpYCB3aGVuIHRoZXJlIGFy
ZSBgbiBXaWxsT25jZSgpYHMgYW5kIGEgYFdpbGxSZXBlYXRlZGx5KClgLCB3aGVyZSBgbmAgPj0g
MC4KLQotQSBtZXRob2Qgd2l0aCBubyBgRVhQRUNUX0NBTEwoKWAgaXMgZnJlZSB0byBiZSBpbnZv
a2VkIF9hbnkgbnVtYmVyIG9mIHRpbWVzXywgYW5kIHRoZSBkZWZhdWx0IGFjdGlvbiB3aWxsIGJl
IHRha2VuIGVhY2ggdGltZS4KLQotIyBNYXRjaGVycyAjCi0KLUEgKiptYXRjaGVyKiogbWF0Y2hl
cyBhIF9zaW5nbGVfIGFyZ3VtZW50LiAgWW91IGNhbiB1c2UgaXQgaW5zaWRlCi1gT05fQ0FMTCgp
YCBvciBgRVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBpdCB0byB2YWxpZGF0ZSBhIHZhbHVlCi1kaXJl
Y3RseToKLQotfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCB8IEFzc2VydHMgdGhhdCBg
dmFsdWVgIG1hdGNoZXMgYG1hdGNoZXJgLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VS
VF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUgc2FtZSBhcyBgRVhQRUNUX1RIQVQodmFsdWUs
IG1hdGNoZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2VuZXJhdGVzIGEgKipmYXRhbCoqIGZhaWx1cmUu
IHwKLQotQnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJlIGBhcmd1bWVudGAgaXMgdGhlIGZ1bmN0aW9u
IGFyZ3VtZW50KSBhcmUKLWRpdmlkZWQgaW50byBzZXZlcmFsIGNhdGVnb3JpZXM6Ci0KLSMjIFdp
bGRjYXJkICMjCi18YF9gfGBhcmd1bWVudGAgY2FuIGJlIGFueSB2YWx1ZSBvZiB0aGUgY29ycmVj
dCB0eXBlLnwKLXw6LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfGBBPHR5cGU+KClgIG9yIGBBbjx0eXBlPigpYHxgYXJndW1lbnRgIGNhbiBiZSBh
bnkgdmFsdWUgb2YgdHlwZSBgdHlwZWAuICAgICB8Ci0KLSMjIEdlbmVyaWMgQ29tcGFyaXNvbiAj
IwotCi18YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxgYXJndW1lbnQgPT0gdmFsdWVgfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgR2UodmFsdWUpYCAgICAg
ICAgICAgfGBhcmd1bWVudCA+PSB2YWx1ZWB8Ci18YEd0KHZhbHVlKWAgICAgICAgICAgIHxgYXJn
dW1lbnQgPiB2YWx1ZWAgfAotfGBMZSh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50IDw9IHZh
bHVlYHwKLXxgTHQodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8IHZhbHVlYCB8Ci18YE5l
KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgIT0gdmFsdWVgfAotfGBJc051bGwoKWAgICAg
ICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxMYCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwK
LXxgTm90TnVsbCgpYCAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYSBub24tbnVsbCBwb2ludGVy
IChyYXcgb3Igc21hcnQpLnwKLXxgUmVmKHZhcmlhYmxlKWAgICAgICAgfGBhcmd1bWVudGAgaXMg
YSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC58Ci18YFR5cGVkRXE8dHlwZT4odmFsdWUpYHxgYXJn
dW1lbnRgIGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMgZXF1YWwgdG8gYHZhbHVlYC4gWW91IG1heSBu
ZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgYEVxKHZhbHVlKWAgd2hlbiB0aGUgbW9jayBmdW5j
dGlvbiBpcyBvdmVybG9hZGVkLnwKLQotRXhjZXB0IGBSZWYoKWAsIHRoZXNlIG1hdGNoZXJzIG1h
a2UgYSBfY29weV8gb2YgYHZhbHVlYCBpbiBjYXNlIGl0J3MKLW1vZGlmaWVkIG9yIGRlc3RydWN0
ZWQgbGF0ZXIuIElmIHRoZSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBgdmFsdWVgCi1kb2Vzbid0
IGhhdmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3RvciwgdHJ5IHdyYXAgaXQgaW4gYEJ5UmVmKClg
LAotZS5nLiBgRXEoQnlSZWYobm9uX2NvcHlhYmxlX3ZhbHVlKSlgLiBJZiB5b3UgZG8gdGhhdCwg
bWFrZSBzdXJlCi1gbm9uX2NvcHlhYmxlX3ZhbHVlYCBpcyBub3QgY2hhbmdlZCBhZnRlcndhcmRz
LCBvciB0aGUgbWVhbmluZyBvZiB5b3VyCi1tYXRjaGVyIHdpbGwgYmUgY2hhbmdlZC4KLQotIyMg
RmxvYXRpbmctUG9pbnQgTWF0Y2hlcnMgIyMKLQotfGBEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1
bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJs
ZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwufAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBGbG9hdEVxKGFfZmxv
YXQpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGFwcHJveGltYXRlbHkgZXF1YWwg
dG8gYGFfZmxvYXRgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLiAgfAotfGBOYW5TZW5z
aXRpdmVEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBh
cHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVx
dWFsLiAgfAotfGBOYW5TZW5zaXRpdmVGbG9hdEVxKGFfZmxvYXQpYHxgYXJndW1lbnRgIGlzIGEg
YGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcg
dHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKLQotVGhlIGFib3ZlIG1hdGNoZXJzIHVzZSBVTFAtYmFz
ZWQgY29tcGFyaXNvbiAodGhlIHNhbWUgYXMgdXNlZCBpbgotW0dvb2dsZSBUZXN0XSguLi8uLi9n
b29nbGV0ZXN0LykpLiBUaGV5Ci1hdXRvbWF0aWNhbGx5IHBpY2sgYSByZWFzb25hYmxlIGVycm9y
IGJvdW5kIGJhc2VkIG9uIHRoZSBhYnNvbHV0ZQotdmFsdWUgb2YgdGhlIGV4cGVjdGVkIHZhbHVl
LiAgYERvdWJsZUVxKClgIGFuZCBgRmxvYXRFcSgpYCBjb25mb3JtIHRvCi10aGUgSUVFRSBzdGFu
ZGFyZCwgd2hpY2ggcmVxdWlyZXMgY29tcGFyaW5nIHR3byBOYU5zIGZvciBlcXVhbGl0eSB0bwot
cmV0dXJuIGZhbHNlLiBUaGUgYE5hblNlbnNpdGl2ZSpgIHZlcnNpb24gaW5zdGVhZCB0cmVhdHMg
dHdvIE5hTnMgYXMKLWVxdWFsLCB3aGljaCBpcyBvZnRlbiB3aGF0IGEgdXNlciB3YW50cy4KLQot
fGBEb3VibGVOZWFyKGFfZG91YmxlLCBtYXhfYWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBk
b3VibGVgIHZhbHVlIGNsb3NlIHRvIGBhX2RvdWJsZWAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhf
YWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwufAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBGbG9hdE5lYXIoYV9mbG9hdCwgbWF4
X2Fic19lcnJvcilgICB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgY2xvc2UgdG8gYGFf
ZmxvYXRgIChhYnNvbHV0ZSBlcnJvciA8PSBgbWF4X2Fic19lcnJvcmApLCB0cmVhdGluZyB0d28g
TmFOcyBhcyB1bmVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVEb3VibGVOZWFyKGFfZG91YmxlLCBt
YXhfYWJzX2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBkb3VibGVgIHZhbHVlIGNsb3NlIHRvIGBh
X2RvdWJsZWAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3
byBOYU5zIGFzIGVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVGbG9hdE5lYXIoYV9mbG9hdCwgbWF4
X2Fic19lcnJvcilgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZhbHVlIGNsb3NlIHRvIGBhX2Zs
b2F0YCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9hYnNfZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5h
TnMgYXMgZXF1YWwuICAgIHwKLQotIyMgU3RyaW5nIE1hdGNoZXJzICMjCi0KLVRoZSBgYXJndW1l
bnRgIGNhbiBiZSBlaXRoZXIgYSBDIHN0cmluZyBvciBhIEMrKyBzdHJpbmcgb2JqZWN0OgotCi18
YENvbnRhaW5zUmVnZXgoc3RyaW5nKWB8YGFyZ3VtZW50YCBtYXRjaGVzIHRoZSBnaXZlbiByZWd1
bGFyIGV4cHJlc3Npb24ufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRW5kc1dpdGgoc3VmZml4KWAg
ICAgIHxgYXJndW1lbnRgIGVuZHMgd2l0aCBzdHJpbmcgYHN1ZmZpeGAuICAgICAgICAgICB8Ci18
YEhhc1N1YnN0cihzdHJpbmcpYCAgICB8YGFyZ3VtZW50YCBjb250YWlucyBgc3RyaW5nYCBhcyBh
IHN1Yi1zdHJpbmcuICAgfAotfGBNYXRjaGVzUmVnZXgoc3RyaW5nKWAgfGBhcmd1bWVudGAgbWF0
Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uIHdpdGggdGhlIG1hdGNoIHN0YXJ0aW5n
IGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGVuZGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIu
fAotfGBTdGFydHNXaXRoKHByZWZpeClgICAgfGBhcmd1bWVudGAgc3RhcnRzIHdpdGggc3RyaW5n
IGBwcmVmaXhgLiAgICAgICAgIHwKLXxgU3RyQ2FzZUVxKHN0cmluZylgICAgIHxgYXJndW1lbnRg
IGlzIGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmluZyBjYXNlLiB8Ci18YFN0ckNhc2VOZShzdHJp
bmcpYCAgICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5nIGNh
c2UufAotfGBTdHJFcShzdHJpbmcpYCAgICAgICAgfGBhcmd1bWVudGAgaXMgZXF1YWwgdG8gYHN0
cmluZ2AuICAgICAgICAgICAgICAgIHwKLXxgU3RyTmUoc3RyaW5nKWAgICAgICAgIHxgYXJndW1l
bnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYC4gICAgICAgICAgICB8Ci0KLWBDb250YWluc1Jl
Z2V4KClgIGFuZCBgTWF0Y2hlc1JlZ2V4KClgIHVzZSB0aGUgcmVndWxhciBleHByZXNzaW9uCi1z
eW50YXggZGVmaW5lZAotW2hlcmVdKC4uLy4uL2dvb2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRl
Lm1kI3JlZ3VsYXItZXhwcmVzc2lvbi1zeW50YXgpLgotYFN0ckNhc2VFcSgpYCwgYFN0ckNhc2VO
ZSgpYCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClgIHdvcmsgZm9yIHdpZGUKLXN0cmluZ3MgYXMg
d2VsbC4KLQotIyMgQ29udGFpbmVyIE1hdGNoZXJzICMjCi0KLU1vc3QgU1RMLXN0eWxlIGNvbnRh
aW5lcnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2FuIHVzZQotYEVxKGV4cGVjdGVkX2NvbnRhaW5l
cilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCi1jb250YWluZXIg
ZXhhY3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0ZSB0aGUgZWxlbWVudHMgaW4tbGluZSwKLW1h
dGNoIHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMs
IHlvdSBjYW4gdXNlOgotCi18IGBDb250YWluZXJFcShjb250YWluZXIpYCB8IFRoZSBzYW1lIGFz
IGBFcShjb250YWluZXIpYCBleGNlcHQgdGhhdCB0aGUgZmFpbHVyZSBtZXNzYWdlIGFsc28gaW5j
bHVkZXMgd2hpY2ggZWxlbWVudHMgYXJlIGluIG9uZSBjb250YWluZXIgYnV0IG5vdCB0aGUgb3Ro
ZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBg
Q29udGFpbnMoZSlgICAgICAgICAgICAgfCBgYXJndW1lbnRgIGNvbnRhaW5zIGFuIGVsZW1lbnQg
dGhhdCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hl
ci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBFYWNoKGUpYCAg
ICAgICAgICAgICAgICB8IGBhcmd1bWVudGAgaXMgYSBjb250YWluZXIgd2hlcmUgX2V2ZXJ5XyBl
bGVtZW50IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRj
aGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYEVsZW1lbnRzQXJlKGUwLCBlMSwg
Li4uLCBlbilgIHwgYGFyZ3VtZW50YCBoYXMgYG4gKyAxYCBlbGVtZW50cywgd2hlcmUgdGhlIGkt
dGggZWxlbWVudCBtYXRjaGVzIGBlaWAsIHdoaWNoIGNhbiBiZSBhIHZhbHVlIG9yIGEgbWF0Y2hl
ci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFsbG93ZWQuIHwKLXwgYEVsZW1lbnRzQXJlQXJyYXko
eyBlMCwgZTEsIC4uLiwgZW4gfSlgLCBgRWxlbWVudHNBcmVBcnJheShhcnJheSlgLCBvciBgRWxl
bWVudHNBcmVBcnJheShhcnJheSwgY291bnQpYCB8IFRoZSBzYW1lIGFzIGBFbGVtZW50c0FyZSgp
YCBleGNlcHQgdGhhdCB0aGUgZXhwZWN0ZWQgZWxlbWVudCB2YWx1ZXMvbWF0Y2hlcnMgY29tZSBm
cm9tIGFuIGluaXRpYWxpemVyIGxpc3QsIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIEMtc3R5bGUg
YXJyYXkuIHwKLXwgYElzRW1wdHkoKWAgICAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBpcyBhbiBl
bXB0eSBjb250YWluZXIgKGBjb250YWluZXIuZW1wdHkoKWApLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
fCBgUG9pbnR3aXNlKG0sIGNvbnRhaW5lcilgIHwgYGFyZ3VtZW50YCBjb250YWlucyB0aGUgc2Ft
ZSBudW1iZXIgb2YgZWxlbWVudHMgYXMgaW4gYGNvbnRhaW5lcmAsIGFuZCBmb3IgYWxsIGksICh0
aGUgaS10aCBlbGVtZW50IGluIGBhcmd1bWVudGAsIHRoZSBpLXRoIGVsZW1lbnQgaW4gYGNvbnRh
aW5lcmApIG1hdGNoIGBtYCwgd2hpY2ggaXMgYSBtYXRjaGVyIG9uIDItdHVwbGVzLiBFLmcuIGBQ
b2ludHdpc2UoTGUoKSwgdXBwZXJfYm91bmRzKWAgdmVyaWZpZXMgdGhhdCBlYWNoIGVsZW1lbnQg
aW4gYGFyZ3VtZW50YCBkb2Vzbid0IGV4Y2VlZCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGlu
IGB1cHBlcl9ib3VuZHNgLiBTZWUgbW9yZSBkZXRhaWwgYmVsb3cuIHwKLXwgYFNpemVJcyhtKWAg
ICAgICAgICAgICAgIHwgYGFyZ3VtZW50YCBpcyBhIGNvbnRhaW5lciB3aG9zZSBzaXplIG1hdGNo
ZXMgYG1gLiBFLmcuIGBTaXplSXMoMilgIG9yIGBTaXplSXMoTHQoMikpYC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgVW5vcmRlcmVkRWxlbWVudHNBcmUo
ZTAsIGUxLCAuLi4sIGVuKWAgfCBgYXJndW1lbnRgIGhhcyBgbiArIDFgIGVsZW1lbnRzLCBhbmQg
dW5kZXIgc29tZSBwZXJtdXRhdGlvbiBlYWNoIGVsZW1lbnQgbWF0Y2hlcyBhbiBgZWlgIChmb3Ig
YSBkaWZmZXJlbnQgYGlgKSwgd2hpY2ggY2FuIGJlIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAwIHRv
IDEwIGFyZ3VtZW50cyBhcmUgYWxsb3dlZC4gfAotfCBgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eSh7IGUwLCBlMSwgLi4uLCBlbiB9KWAsIGBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGFycmF5
KWAsIG9yIGBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGFycmF5LCBjb3VudClgIHwgVGhlIHNh
bWUgYXMgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIGV4Y2VwdCB0aGF0IHRoZSBleHBlY3RlZCBl
bGVtZW50IHZhbHVlcy9tYXRjaGVycyBjb21lIGZyb20gYW4gaW5pdGlhbGl6ZXIgbGlzdCwgU1RM
LXN0eWxlIGNvbnRhaW5lciwgb3IgQy1zdHlsZSBhcnJheS4gfAotfCBgV2hlblNvcnRlZChtKWAg
ICAgICAgICAgfCBXaGVuIGBhcmd1bWVudGAgaXMgc29ydGVkIHVzaW5nIHRoZSBgPGAgb3BlcmF0
b3IsIGl0IG1hdGNoZXMgY29udGFpbmVyIG1hdGNoZXIgYG1gLiBFLmcuIGBXaGVuU29ydGVkKFVu
b3JkZXJlZEVsZW1lbnRzQXJlKDEsIDIsIDMpKWAgdmVyaWZpZXMgdGhhdCBgYXJndW1lbnRgIGNv
bnRhaW5zIGVsZW1lbnRzIGAxYCwgYDJgLCBhbmQgYDNgLCBpZ25vcmluZyBvcmRlci4gfAotfCBg
V2hlblNvcnRlZEJ5KGNvbXBhcmF0b3IsIG0pYCB8IFRoZSBzYW1lIGFzIGBXaGVuU29ydGVkKG0p
YCwgZXhjZXB0IHRoYXQgdGhlIGdpdmVuIGNvbXBhcmF0b3IgaW5zdGVhZCBvZiBgPGAgaXMgdXNl
ZCB0byBzb3J0IGBhcmd1bWVudGAuIEUuZy4gYFdoZW5Tb3J0ZWRCeShzdGQ6OmdyZWF0ZXI8aW50
PigpLCBFbGVtZW50c0FyZSgzLCAyLCAxKSlgLiB8Ci0KLU5vdGVzOgotCi0gICogVGhlc2UgbWF0
Y2hlcnMgY2FuIGFsc28gbWF0Y2g6Ci0gICAgMS4gYSBuYXRpdmUgYXJyYXkgcGFzc2VkIGJ5IHJl
ZmVyZW5jZSAoZS5nLiBpbiBgRm9vKGNvbnN0IGludCAoJmEpWzVdKWApLCBhbmQKLSAgICAxLiBh
biBhcnJheSBwYXNzZWQgYXMgYSBwb2ludGVyIGFuZCBhIGNvdW50IChlLmcuIGluIGBCYXIoY29u
c3QgVCogYnVmZmVyLCBpbnQgbGVuKWAgLS0gc2VlIFtNdWx0aS1hcmd1bWVudCBNYXRjaGVyc10o
I011bHRpYXJndW1lbnRfTWF0Y2hlcnMubWQpKS4KLSAgKiBUaGUgYXJyYXkgYmVpbmcgbWF0Y2hl
ZCBtYXkgYmUgbXVsdGktZGltZW5zaW9uYWwgKGkuZS4gaXRzIGVsZW1lbnRzIGNhbiBiZSBhcnJh
eXMpLgotICAqIGBtYCBpbiBgUG9pbnR3aXNlKG0sIC4uLilgIHNob3VsZCBiZSBhIG1hdGNoZXIg
Zm9yIGA6OnRlc3Rpbmc6OnR1cGxlPFQsIFU+YCB3aGVyZSBgVGAgYW5kIGBVYCBhcmUgdGhlIGVs
ZW1lbnQgdHlwZSBvZiB0aGUgYWN0dWFsIGNvbnRhaW5lciBhbmQgdGhlIGV4cGVjdGVkIGNvbnRh
aW5lciwgcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZSwgdG8gY29tcGFyZSB0d28gYEZvb2AgY29u
dGFpbmVycyB3aGVyZSBgRm9vYCBkb2Vzbid0IHN1cHBvcnQgYG9wZXJhdG9yPT1gIGJ1dCBoYXMg
YW4gYEVxdWFscygpYCBtZXRob2QsIG9uZSBtaWdodCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6OmdldDsKLU1BVENIRVIoRm9vRXEsICIiKSB7Ci0gIHJldHVybiBnZXQ8MD4oYXJnKS5F
cXVhbHMoZ2V0PDE+KGFyZykpOwotfQotLi4uCi1FWFBFQ1RfVEhBVChhY3R1YWxfZm9vcywgUG9p
bnR3aXNlKEZvb0VxKCksIGV4cGVjdGVkX2Zvb3MpKTsKLWBgYAotCi0jIyBNZW1iZXIgTWF0Y2hl
cnMgIyMKLQotfGBGaWVsZCgmY2xhc3M6OmZpZWxkLCBtKWB8YGFyZ3VtZW50LmZpZWxkYCAob3Ig
YGFyZ3VtZW50LT5maWVsZGAgd2hlbiBgYXJndW1lbnRgIGlzIGEgcGxhaW4gcG9pbnRlcikgbWF0
Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGFyZ3VtZW50YCBpcyBhbiBvYmplY3Qgb2YgdHlwZSBf
Y2xhc3NfLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Ci18YEtleShlKWAgICAgICAgICAgICAgICAgIHxgYXJndW1lbnQuZmlyc3RgIG1h
dGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiBFLmcu
IGBDb250YWlucyhLZXkoTGUoNSkpKWAgY2FuIHZlcmlmeSB0aGF0IGEgYG1hcGAgY29udGFpbnMg
YSBrZXkgYDw9IDVgLnwKLXxgUGFpcihtMSwgbTIpYCAgICAgICAgICAgfGBhcmd1bWVudGAgaXMg
YW4gYHN0ZDo6cGFpcmAgd2hvc2UgYGZpcnN0YCBmaWVsZCBtYXRjaGVzIGBtMWAgYW5kIGBzZWNv
bmRgIGZpZWxkIG1hdGNoZXMgYG0yYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci18YFByb3BlcnR5KCZjbGFzczo6cHJvcGVydHksIG0pYHxgYXJndW1l
bnQucHJvcGVydHkoKWAgKG9yIGBhcmd1bWVudC0+cHJvcGVydHkoKWAgd2hlbiBgYXJndW1lbnRg
IGlzIGEgcGxhaW4gcG9pbnRlcikgbWF0Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGFyZ3VtZW50
YCBpcyBhbiBvYmplY3Qgb2YgdHlwZSBfY2xhc3NfLnwKLQotIyMgTWF0Y2hpbmcgdGhlIFJlc3Vs
dCBvZiBhIEZ1bmN0aW9uIG9yIEZ1bmN0b3IgIyMKLQotfGBSZXN1bHRPZihmLCBtKWB8YGYoYXJn
dW1lbnQpYCBtYXRjaGVzIG1hdGNoZXIgYG1gLCB3aGVyZSBgZmAgaXMgYSBmdW5jdGlvbiBvciBm
dW5jdG9yLnwKLXw6LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLSMjIFBvaW50ZXIg
TWF0Y2hlcnMgIyMKLQotfGBQb2ludGVlKG0pYHxgYXJndW1lbnRgIChlaXRoZXIgYSBzbWFydCBw
b2ludGVyIG9yIGEgcmF3IHBvaW50ZXIpIHBvaW50cyB0byBhIHZhbHVlIHRoYXQgbWF0Y2hlcyBt
YXRjaGVyIGBtYC58Ci18Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLXxgV2hlbkR5bmFtaWNDYXN0VG88VD4obSlgfCB3aGVuIGBhcmd1bWVudGAg
aXMgcGFzc2VkIHRocm91Z2ggYGR5bmFtaWNfY2FzdDxUPigpYCwgaXQgbWF0Y2hlcyBtYXRjaGVy
IGBtYC4gICAgICAgICAgICAgICAgIHwKLQotIyMgTXVsdGlhcmd1bWVudCBNYXRjaGVycyAjIwot
Ci1UZWNobmljYWxseSwgYWxsIG1hdGNoZXJzIG1hdGNoIGEgX3NpbmdsZV8gdmFsdWUuIEEgIm11
bHRpLWFyZ3VtZW50IgotbWF0Y2hlciBpcyBqdXN0IG9uZSB0aGF0IG1hdGNoZXMgYSBfdHVwbGVf
LiBUaGUgZm9sbG93aW5nIG1hdGNoZXJzIGNhbgotYmUgdXNlZCB0byBtYXRjaCBhIHR1cGxlIGAo
eCwgeSlgOgotCi18YEVxKClgfGB4ID09IHlgfAotfDotLS0tLXw6LS0tLS0tLXwKLXxgR2UoKWB8
YHggPj0geWB8Ci18YEd0KClgfGB4ID4geWAgfAotfGBMZSgpYHxgeCA8PSB5YHwKLXxgTHQoKWB8
YHggPCB5YCB8Ci18YE5lKClgfGB4ICE9IHlgfAotCi1Zb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5n
IHNlbGVjdG9ycyB0byBwaWNrIGEgc3Vic2V0IG9mIHRoZSBhcmd1bWVudHMKLShvciByZW9yZGVy
IHRoZW0pIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaGluZzoKLQotfGBBbGxBcmdzKG0pYHxF
cXVpdmFsZW50IHRvIGBtYC4gVXNlZnVsIGFzIHN5bnRhY3RpYyBzdWdhciBpbiBgLldpdGgoQWxs
QXJncyhtKSlgLnwKLXw6LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEFyZ3M8TjEsIE4yLCAu
Li4sIE5rPihtKWB8VGhlIHR1cGxlIG9mIHRoZSBga2Agc2VsZWN0ZWQgKHVzaW5nIDAtYmFzZWQg
aW5kaWNlcykgYXJndW1lbnRzIG1hdGNoZXMgYG1gLCBlLmcuIGBBcmdzPDEsIDI+KEVxKCkpYC58
Ci0KLSMjIENvbXBvc2l0ZSBNYXRjaGVycyAjIwotCi1Zb3UgY2FuIG1ha2UgYSBtYXRjaGVyIGZy
b20gb25lIG9yIG1vcmUgb3RoZXIgbWF0Y2hlcnM6Ci0KLXxgQWxsT2YobTEsIG0yLCAuLi4sIG1u
KWB8YGFyZ3VtZW50YCBtYXRjaGVzIGFsbCBvZiB0aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQW55T2YobTEsIG0yLCAuLi4sIG1uKWB8YGFyZ3Vt
ZW50YCBtYXRjaGVzIGF0IGxlYXN0IG9uZSBvZiB0aGUgbWF0Y2hlcnMgYG0xYCB0byBgbW5gLnwK
LXxgTm90KG0pYCAgICAgICAgICAgICAgICB8YGFyZ3VtZW50YCBkb2Vzbid0IG1hdGNoIG1hdGNo
ZXIgYG1gLiAgICAgICAgICAgICAgIHwKLQotIyMgQWRhcHRlcnMgZm9yIE1hdGNoZXJzICMjCi0K
LXxgTWF0Y2hlckNhc3Q8VD4obSlgfGNhc3RzIG1hdGNoZXIgYG1gIHRvIHR5cGUgYE1hdGNoZXI8
VD5gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLXxgU2FmZU1hdGNoZXJDYXN0PFQ+KG0pYHwgW3NhZmVseSBjYXN0c10oQ29v
a0Jvb2subWQjY2FzdGluZy1tYXRjaGVycykgbWF0Y2hlciBgbWAgdG8gdHlwZSBgTWF0Y2hlcjxU
PmAuIHwKLXxgVHJ1bHkocHJlZGljYXRlKWAgfGBwcmVkaWNhdGUoYXJndW1lbnQpYCByZXR1cm5z
IHNvbWV0aGluZyBjb25zaWRlcmVkIGJ5IEMrKyB0byBiZSB0cnVlLCB3aGVyZSBgcHJlZGljYXRl
YCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAotCi0jIyBNYXRjaGVycyBhcyBQcmVkaWNhdGVz
ICMjCi0KLXxgTWF0Y2hlcyhtKSh2YWx1ZSlgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVl
YCBtYXRjaGVzIGBtYC4gWW91IGNhbiB1c2UgYE1hdGNoZXMobSlgIGFsb25lIGFzIGEgdW5hcnkg
ZnVuY3Rvci58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfGBFeHBsYWluTWF0Y2hSZXN1bHQobSwgdmFsdWUsIHJlc3VsdF9saXN0
ZW5lcilgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYCwgZXhwbGFp
bmluZyB0aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlzdGVuZXJgLiAgICAgICB8Ci18YFZhbHVlKHZh
bHVlLCBtKWAgIHxldmFsdWF0ZXMgdG8gYHRydWVgIGlmIGB2YWx1ZWAgbWF0Y2hlcyBgbWAuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0jIyBE
ZWZpbmluZyBNYXRjaGVycyAjIwotCi18IGBNQVRDSEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChh
cmcgJSAyKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYXRjaGVyIGBJc0V2ZW4oKWAgdG8gbWF0Y2gg
YW4gZXZlbiBudW1iZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfCBgTUFUQ0hFUl9QKElzRGl2aXNpYmxlQnksIG4sICIiKSB7ICpyZXN1
bHRfbGlzdGVuZXIgPDwgIndoZXJlIHRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgbik7IHJl
dHVybiAoYXJnICUgbikgPT0gMDsgfWAgfCBEZWZpbmVzIGEgbWFjaGVyIGBJc0RpdmlzaWJsZUJ5
KG4pYCB0byBtYXRjaCBhIG51bWJlciBkaXZpc2libGUgYnkgYG5gLiB8Ci18IGBNQVRDSEVSX1Ay
KElzQmV0d2VlbiwgYSwgYiwgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikg
KyAiIGJldHdlZW4gIiArIFByaW50VG9TdHJpbmcoYSkgKyAiIGFuZCAiICsgUHJpbnRUb1N0cmlu
ZyhiKSkgeyByZXR1cm4gYSA8PSBhcmcgJiYgYXJnIDw9IGI7IH1gIHwgRGVmaW5lcyBhIG1hdGNo
ZXIgYElzQmV0d2VlbihhLCBiKWAgdG8gbWF0Y2ggYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2BhYCwg
YGJgXS4gfAotCi0qKk5vdGVzOioqCi0KLSAgMS4gVGhlIGBNQVRDSEVSKmAgbWFjcm9zIGNhbm5v
dCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotICAxLiBUaGUgbWF0Y2hlciBi
b2R5IG11c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5ub3QgaGF2ZSBhbnkg
c2lkZSBlZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBv
dGhlciB0aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hlciBwYXJhbWV0
ZXJzKS4KLSAgMS4gWW91IGNhbiB1c2UgYFByaW50VG9TdHJpbmcoeClgIHRvIGNvbnZlcnQgYSB2
YWx1ZSBgeGAgb2YgYW55IHR5cGUgdG8gYSBzdHJpbmcuCi0KLSMjIE1hdGNoZXJzIGFzIFRlc3Qg
QXNzZXJ0aW9ucyAjIwotCi18YEFTU0VSVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMg
YSBbZmF0YWwgZmFpbHVyZV0oLi4vLi4vZ29vZ2xldGVzdC9kb2NzL1ByaW1lci5tZCNhc3NlcnRp
b25zKSBpZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBg
bWAufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Ci18YEVYUEVDVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBub24t
ZmF0YWwgZmFpbHVyZSBpZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2gg
bWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLQotIyBBY3Rpb25zICMKLQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0
IGEgbW9jayBmdW5jdGlvbiBzaG91bGQgZG8gd2hlbiBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcg
YSBWYWx1ZSAjIwotCi18YFJldHVybigpYHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0
aW9uLnwKLXw6LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAot
fGBSZXR1cm4odmFsdWUpYHxSZXR1cm4gYHZhbHVlYC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBp
cyBkaWZmZXJlbnQgdG8gdGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBp
cyBjb252ZXJ0ZWQgdG8gdGhlIGxhdHRlciB0eXBlIDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3Rh
dGlvbiBpcyBzZXQ8L2k+LCBub3Qgd2hlbiB0aGUgYWN0aW9uIGlzIGV4ZWN1dGVkLnwKLXxgUmV0
dXJuQXJnPE4+KClgfFJldHVybiB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJl
dHVybk5ldzxUPihhMSwgLi4uLCBhaylgfFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBk
aWZmZXJlbnQgb2JqZWN0IGlzIGNyZWF0ZWQgZWFjaCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxS
ZXR1cm4gYSBudWxsIHBvaW50ZXIuICAgICAgICAgICAgIHwKLXxgUmV0dXJuUG9pbnRlZShwdHIp
YHxSZXR1cm4gdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYHB0cmAufAotfGBSZXR1cm5SZWYodmFy
aWFibGUpYHxSZXR1cm4gYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC4gIHwKLXxgUmV0dXJuUmVm
T2ZDb3B5KHZhbHVlKWB8UmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0
aGUgY29weSBsaXZlcyBhcyBsb25nIGFzIHRoZSBhY3Rpb24ufAotCi0jIyBTaWRlIEVmZmVjdHMg
IyMKLQotfGBBc3NpZ24oJnZhcmlhYmxlLCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlh
YmxlLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Ci18IGBEZWxldGVBcmc8Tj4oKWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgw
LWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIHBvaW50ZXIuIHwKLXwgYFNhdmVBcmc8
Tj4ocG9pbnRlcilgICAgIHwgU2F2ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBg
KnBvaW50ZXJgLiB8Ci18IGBTYXZlQXJnUG9pbnRlZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2
YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9p
bnRlcmAuIHwKLXwgYFNldEFyZ1JlZmVyZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0
aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4g
fAotfGBTZXRBcmdQb2ludGVlPE4+KHZhbHVlKWAgfEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJp
YWJsZSBwb2ludGVkIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LnwKLXxgU2V0QXJn
dW1lbnRQb2ludGVlPE4+KHZhbHVlKWB8U2FtZSBhcyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlg
LiBEZXByZWNhdGVkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjEuNy4wLnwKLXxgU2V0QXJyYXlBcmd1
bWVudDxOPihmaXJzdCwgbGFzdClgfENvcGllcyB0aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdl
IFtgZmlyc3RgLCBgbGFzdGApIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50LCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBp
dGVyYXRvci4gVGhlIGFjdGlvbiBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVu
dHMgaW4gdGhlIHNvdXJjZSByYW5nZS58Ci18YFNldEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1
ZSlgfFNldCBgZXJybm9gIHRvIGBlcnJvcmAgYW5kIHJldHVybiBgdmFsdWVgLnwKLXxgVGhyb3co
ZXhjZXB0aW9uKWAgICAgICAgIHxUaHJvd3MgdGhlIGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2Fu
IGJlIGFueSBjb3B5YWJsZSB2YWx1ZS4gQXZhaWxhYmxlIHNpbmNlIHYxLjEuMC58Ci0KLSMjIFVz
aW5nIGEgRnVuY3Rpb24gb3IgYSBGdW5jdG9yIGFzIGFuIEFjdGlvbiAjIwotCi18YEludm9rZShm
KWB8SW52b2tlIGBmYCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0
aW9uLCB3aGVyZSBgZmAgY2FuIGJlIGEgZ2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0
b3IufAotfDotLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgSW52b2tlKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1l
dGhvZClgfEludm9rZSB0aGUge21ldGhvZCBvbiB0aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50
cyBwYXNzZWQgdG8gdGhlIG1vY2sgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3MoZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBi
ZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5v
IGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mo
b2JqZWN0X3BvaW50ZXIsICZjbGFzczo6bWV0aG9kKWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhl
IG9iamVjdCwgd2hpY2ggdGFrZXMgbm8gYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBJbnZva2VBcmd1bWVudDxOPihh
cmcxLCBhcmcyLCAuLi4sIGFyZ2spYHxJbnZva2UgdGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50LCB3aGljaCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9y
LCB3aXRoIHRoZSBga2AgYXJndW1lbnRzLnwKLQotVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52
b2tlZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUKLW9mIHRoZSBhY3Rpb24u
Ci0KLVdoZW4gZGVmaW5pbmcgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBg
SW52b2tlKigpYCwgeW91IGNhbiBkZWNsYXJlIGFueSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51
c2VkYDoKLWBgYAotICBkb3VibGUgRGlzdGFuY2UoVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkp
IHsgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsgfQotICAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKCJIaSIsIF8sIF8pKS5XaWxsT25jZShJbnZva2UoRGlzdGFuY2UpKTsKLWBgYAotCi1JbiBg
SW52b2tlQXJndW1lbnQ8Tj4oLi4uKWAsIGlmIGFuIGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3Nl
ZCBieSByZWZlcmVuY2UsIHdyYXAgaXQgaW5zaWRlIGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCi1g
YGAKLSAgSW52b2tlQXJndW1lbnQ8Mj4oNSwgc3RyaW5nKCJIaSIpLCBCeVJlZihmb28pKQotYGBg
Ci1jYWxscyB0aGUgbW9jayBmdW5jdGlvbidzICMyIGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1
YCBhbmQgYHN0cmluZygiSGkiKWAgYnkgdmFsdWUsIGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCi0K
LSMjIERlZmF1bHQgQWN0aW9uICMjCi0KLXxgRG9EZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFj
dGlvbiAoc3BlY2lmaWVkIGJ5IGBPTl9DQUxMKClgIG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKLXw6
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotKipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwg
cmVhc29ucywgYERvRGVmYXVsdCgpYCBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRl
IGFjdGlvbiAtIHRyeWluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9y
LgotCi0jIyBDb21wb3NpdGUgQWN0aW9ucyAjIwotCi18YERvQWxsKGExLCBhMiwgLi4uLCBhbilg
fERvIGFsbCBhY3Rpb25zIGBhMWAgdG8gYGFuYCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFu
YCBpbiBlYWNoIGludm9jYXRpb24uIFRoZSBmaXJzdCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3Qg
cmV0dXJuIHZvaWQuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAot
fGBJZ25vcmVSZXN1bHQoYSlgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBp
dHMgcmVzdWx0LiBgYWAgbXVzdCBub3QgcmV0dXJuIHZvaWQuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFdpdGhBcmc8Tj4oYSlg
ICAgICAgICAgfFBhc3MgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKLXxgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8
UGFzcyB0aGUgc2VsZWN0ZWQgKDAtYmFzZWQpIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlv
biB0byBhY3Rpb24gYGFgIGFuZCBwZXJmb3JtIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotfGBXaXRob3V0QXJncyhhKWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBg
YWAgd2l0aG91dCBhbnkgYXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0K
LSMjIERlZmluaW5nIEFjdGlvbnMgIyMKLQotfCBgQUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCAr
IGFyZzE7IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24gYFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBv
ZiB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCAjMS4gfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAotfCBgQUNUSU9OX1AoUGx1cywgbikgeyByZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5l
cyBhbiBhY3Rpb24gYFBsdXMobilgIHRvIHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0
aW9uJ3MgYXJndW1lbnQgIzAgYW5kIGBuYC4gfAotfCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwg
cGspIHsgc3RhdGVtZW50czsgfWAgfCBEZWZpbmVzIGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZv
byhwMSwgLi4uLCBwaylgIHRvIGV4ZWN1dGUgdGhlIGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8Ci0K
LVRoZSBgQUNUSU9OKmAgbWFjcm9zIGNhbm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9y
IGNsYXNzLgotCi0jIENhcmRpbmFsaXRpZXMgIwotCi1UaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMo
KWAgdG8gc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxs
ZWQ6Ci0KLXxgQW55TnVtYmVyKClgfFRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1i
ZXIgb2YgdGltZXMufAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEF0TGVhc3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3Rl
ZCBhdCBsZWFzdCBgbmAgdGltZXMuICAgICAgIHwKLXxgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlz
IGV4cGVjdGVkIGF0IG1vc3QgYG5gIHRpbWVzLiAgICAgICAgfAotfGBCZXR3ZWVuKG0sIG4pYHxU
aGUgY2FsbCBpcyBleHBlY3RlZCBiZXR3ZWVuIGBtYCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVz
LnwKLXxgRXhhY3RseShuKSBvciBuYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0
aW1lcy4gSW4gcGFydGljdWxhciwgdGhlIGNhbGwgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBu
YCBpcyAwLnwKLQotIyBFeHBlY3RhdGlvbiBPcmRlciAjCi0KLUJ5IGRlZmF1bHQsIHRoZSBleHBl
Y3RhdGlvbnMgY2FuIGJlIG1hdGNoZWQgaW4gX2FueV8gb3JkZXIuICBJZiBzb21lCi1vciBhbGwg
ZXhwZWN0YXRpb25zIG11c3QgYmUgbWF0Y2hlZCBpbiBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUg
dHdvCi13YXlzIHRvIHNwZWNpZnkgaXQuICBUaGV5IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVu
ZGVudGx5IG9yCi10b2dldGhlci4KLQotIyMgVGhlIEFmdGVyIENsYXVzZSAjIwotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6RXhwZWN0YXRpb247Ci0uLi4KLUV4cGVjdGF0aW9uIGluaXRfeCA9IEVY
UEVDVF9DQUxMKGZvbywgSW5pdFgoKSk7Ci1FeHBlY3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FM
TChmb28sIEluaXRZKCkpOwotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoaW5p
dF94LCBpbml0X3kpOwotYGBgCi1zYXlzIHRoYXQgYEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkg
YWZ0ZXIgYm90aCBgSW5pdFgoKWAgYW5kCi1gSW5pdFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KLQot
SWYgeW91IGRvbid0IGtub3cgaG93IG1hbnkgcHJlLXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24g
aGFzIHdoZW4geW91Ci13cml0ZSBpdCwgeW91IGNhbiB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0
byBjb2xsZWN0IHRoZW06Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsK
LS4uLgotRXhwZWN0YXRpb25TZXQgYWxsX2luaXRzOwotZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVt
ZW50X2NvdW50OyBpKyspIHsKLSAgYWxsX2luaXRzICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVs
ZW1lbnQoaSkpOwotfQotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoYWxsX2lu
aXRzKTsKLWBgYAotc2F5cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFs
bCBlbGVtZW50cyBoYXZlIGJlZW4KLWluaXRpYWxpemVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91
dCB3aGljaCBlbGVtZW50cyBnZXQgaW5pdGlhbGl6ZWQKLWJlZm9yZSB0aGUgb3RoZXJzKS4KLQot
TW9kaWZ5aW5nIGFuIGBFeHBlY3RhdGlvblNldGAgYWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRl
cigpYCBkb2Vzbid0Ci1hZmZlY3QgdGhlIG1lYW5pbmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCi0KLSMj
IFNlcXVlbmNlcyAjIwotCi1XaGVuIHlvdSBoYXZlIGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFs
IGV4cGVjdGF0aW9ucywgaXQncyBlYXNpZXIgdG8KLXNwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoq
c2VxdWVuY2VzKiosIHdoaWNoIGRvbid0IHJlcXVpcmUgeW91IHRvIGdpdmVuCi1lYWNoIGV4cGVj
dGF0aW9uIGluIHRoZSBjaGFpbiBhIGRpZmZlcmVudCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJy
PgotY2FsbHM8L2k+IGluIHRoZSBzYW1lIHNlcXVlbmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVy
IHRoZXkgYXJlCi1zcGVjaWZpZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsK
LVNlcXVlbmNlIHMxLCBzMjsKLS4uLgotRVhQRUNUX0NBTEwoZm9vLCBSZXNldCgpKQotICAgIC5J
blNlcXVlbmNlKHMxLCBzMikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLUVYUEVDVF9D
QUxMKGZvbywgR2V0U2l6ZSgpKQotICAgIC5JblNlcXVlbmNlKHMxKQotICAgIC5XaWxsT25jZShS
ZXR1cm4oMSkpOwotRVhQRUNUX0NBTEwoZm9vLCBEZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkK
LSAgICAuSW5TZXF1ZW5jZShzMikKLSAgICAuV2lsbE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKLWBg
YAotc2F5cyB0aGF0IGBSZXNldCgpYCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRT
aXplKClgIF9hbmRfCi1gRGVzY3JpYmUoKWAsIGFuZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIg
aW4gYW55IG9yZGVyLgotCi1UbyBwdXQgbWFueSBleHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBj
b252ZW5pZW50bHk6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXsKLSAgSW5T
ZXF1ZW5jZSBkdW1teTsKLQotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICBFWFBFQ1RfQ0FMTCgu
Li4pLi4uOwotICAuLi4KLSAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKLX0KLWBgYAotc2F5cyB0aGF0
IGFsbCBleHBlY3RlZCBjYWxscyBpbiB0aGUgc2NvcGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGlu
Ci1zdHJpY3Qgb3JkZXIuIFRoZSBuYW1lIGBkdW1teWAgaXMgaXJyZWxldmFudC4pCi0KLSMgVmVy
aWZ5aW5nIGFuZCBSZXNldHRpbmcgYSBNb2NrICMKLQotR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkg
dGhlIGV4cGVjdGF0aW9ucyBvbiBhIG1vY2sgb2JqZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwg
b3IgeW91IGNhbiBkbyBpdCBlYXJsaWVyOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0u
Li4KLS8vIFZlcmlmaWVzIGFuZCByZW1vdmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7
Ci0vLyByZXR1cm5zIHRydWUgaWZmIHN1Y2Nlc3NmdWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygmbW9ja19vYmopOwotLi4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUg
ZXhwZWN0YXRpb25zIG9uIG1vY2tfb2JqOwotLy8gYWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFj
dGlvbnMgc2V0IGJ5IE9OX0NBTEwoKTsKLS8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4K
LU1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2NrX29iaik7Ci1gYGAKLQotWW91IGNhbiBhbHNvIHRl
bGwgR29vZ2xlIE1vY2sgdGhhdCBhIG1vY2sgb2JqZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNu
J3QKLW5lZWQgdG8gYmUgdmVyaWZpZWQ6Ci1gYGAKLU1vY2s6OkFsbG93TGVhaygmbW9ja19vYmop
OwotYGBgCi0KLSMgTW9jayBDbGFzc2VzICMKLQotR29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZl
bmllbnQgbW9jayBjbGFzcyB0ZW1wbGF0ZQotYGBgCi1jbGFzcyBNb2NrRnVuY3Rpb248UihBMSwg
Li4uLCBBbik+IHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFu
KSk7Ci19OwotYGBgCi1TZWUgdGhpcyBbcmVjaXBlXShDb29rQm9vay5tZCN1c2luZy1jaGVjay1w
b2ludHMpIGZvciBvbmUgYXBwbGljYXRpb24gb2YgaXQuCi0KLSMgRmxhZ3MgIwotCi18IGAtLWdt
b2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0wYCB8IERvbid0IHJlcG9ydCBsZWFrZWQgbW9jayBvYmpl
Y3RzIGFzIGZhaWx1cmVzLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGAtLWdtb2Nr
X3ZlcmJvc2U9TEVWRUxgICAgICAgICB8IFNldHMgdGhlIGRlZmF1bHQgdmVyYm9zaXR5IGxldmVs
IChgaW5mb2AsIGB3YXJuaW5nYCwgb3IgYGVycm9yYCkgb2YgR29vZ2xlIE1vY2sgbWVzc2FnZXMu
IHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvQ29va0Jvb2subWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9kb2NzL0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDYwZDM1
N2Y2ZGIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kCisr
KyAvZGV2L251bGwKQEAgLTEsMzY3NSArMCwwIEBACi0KLQotWW91IGNhbiBmaW5kIHJlY2lwZXMg
Zm9yIHVzaW5nIEdvb2dsZSBNb2NrIGhlcmUuIElmIHlvdSBoYXZlbid0IHlldCwKLXBsZWFzZSBy
ZWFkIHRoZSBbRm9yRHVtbWllc10oRm9yRHVtbWllcy5tZCkgZG9jdW1lbnQgZmlyc3QgdG8gbWFr
ZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi10aGUgYmFzaWNzLgotCi0qKk5vdGU6KiogR29vZ2xlIE1v
Y2sgbGl2ZXMgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lIHNwYWNlLiBGb3IKLXJlYWRhYmlsaXR5LCBp
dCBpcyByZWNvbW1lbmRlZCB0byB3cml0ZSBgdXNpbmcgOjp0ZXN0aW5nOjpGb287YCBvbmNlIGlu
Ci15b3VyIGZpbGUgYmVmb3JlIHVzaW5nIHRoZSBuYW1lIGBGb29gIGRlZmluZWQgYnkgR29vZ2xl
IE1vY2suIFdlIG9taXQKLXN1Y2ggYHVzaW5nYCBzdGF0ZW1lbnRzIGluIHRoaXMgcGFnZSBmb3Ig
YnJldml0eSwgYnV0IHlvdSBzaG91bGQgZG8gaXQKLWluIHlvdXIgb3duIGNvZGUuCi0KLSMgQ3Jl
YXRpbmcgTW9jayBDbGFzc2VzICMKLQotIyMgTW9ja2luZyBQcml2YXRlIG9yIFByb3RlY3RlZCBN
ZXRob2RzICMjCi0KLVlvdSBtdXN0IGFsd2F5cyBwdXQgYSBtb2NrIG1ldGhvZCBkZWZpbml0aW9u
IChgTU9DS19NRVRIT0QqYCkgaW4gYQotYHB1YmxpYzpgIHNlY3Rpb24gb2YgdGhlIG1vY2sgY2xh
c3MsIHJlZ2FyZGxlc3Mgb2YgdGhlIG1ldGhvZCBiZWluZwotbW9ja2VkIGJlaW5nIGBwdWJsaWNg
LCBgcHJvdGVjdGVkYCwgb3IgYHByaXZhdGVgIGluIHRoZSBiYXNlIGNsYXNzLgotVGhpcyBhbGxv
d3MgYE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgIHRvIHJlZmVyZW5jZSB0aGUgbW9jayBmdW5j
dGlvbgotZnJvbSBvdXRzaWRlIG9mIHRoZSBtb2NrIGNsYXNzLiAgKFllcywgQysrIGFsbG93cyBh
IHN1YmNsYXNzIHRvIGNoYW5nZQotdGhlIGFjY2VzcyBsZXZlbCBvZiBhIHZpcnR1YWwgZnVuY3Rp
b24gaW4gdGhlIGJhc2UgY2xhc3MuKSAgRXhhbXBsZToKLQotYGBgCi1jbGFzcyBGb28gewotIHB1
YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBUcmFuc2Zvcm0oR2FkZ2V0KiBnKSA9IDA7Ci0K
LSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBSZXN1bWUoKTsKLQotIHByaXZhdGU6Ci0gIHZp
cnR1YWwgaW50IEdldFRpbWVPdXQoKTsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9v
IHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoVHJhbnNmb3JtLCBib29sKEdhZGdl
dCogZykpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBiZSBpbiB0aGUgcHVibGljIHNlY3Rp
b24sIGV2ZW4gdGhvdWdoIHRoZQotICAvLyBtZXRob2RzIGFyZSBwcm90ZWN0ZWQgb3IgcHJpdmF0
ZSBpbiB0aGUgYmFzZSBjbGFzcy4KLSAgTU9DS19NRVRIT0QwKFJlc3VtZSwgdm9pZCgpKTsKLSAg
TU9DS19NRVRIT0QwKEdldFRpbWVPdXQsIGludCgpKTsKLX07Ci1gYGAKLQotIyMgTW9ja2luZyBP
dmVybG9hZGVkIE1ldGhvZHMgIyMKLQotWW91IGNhbiBtb2NrIG92ZXJsb2FkZWQgZnVuY3Rpb25z
IGFzIHVzdWFsLiBObyBzcGVjaWFsIGF0dGVudGlvbiBpcyByZXF1aXJlZDoKLQotYGBgCi1jbGFz
cyBGb28gewotICAuLi4KLQotICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwgaW5oZXJpdCBm
cm9tIEZvby4KLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgLy8gT3ZlcmxvYWRlZCBvbiB0aGUgdHlw
ZXMgYW5kL29yIG51bWJlcnMgb2YgYXJndW1lbnRzLgotICB2aXJ0dWFsIGludCBBZGQoRWxlbWVu
dCB4KTsKLSAgdmlydHVhbCBpbnQgQWRkKGludCB0aW1lcywgRWxlbWVudCB4KTsKLQotICAvLyBP
dmVybG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LgotICB2aXJ0dWFsIEJh
ciYgR2V0QmFyKCk7Ci0gIHZpcnR1YWwgY29uc3QgQmFyJiBHZXRCYXIoKSBjb25zdDsKLX07Ci0K
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShBZGQs
IGludChFbGVtZW50IHgpKTsKLSAgTU9DS19NRVRIT0QyKEFkZCwgaW50KGludCB0aW1lcywgRWxl
bWVudCB4KTsKLQotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOwotICBNT0NLX0NPTlNU
X01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsKLWBgYAotCi0qKk5vdGU6KiogaWYg
eW91IGRvbid0IG1vY2sgYWxsIHZlcnNpb25zIG9mIHRoZSBvdmVybG9hZGVkIG1ldGhvZCwgdGhl
Ci1jb21waWxlciB3aWxsIGdpdmUgeW91IGEgd2FybmluZyBhYm91dCBzb21lIG1ldGhvZHMgaW4g
dGhlIGJhc2UgY2xhc3MKLWJlaW5nIGhpZGRlbi4gVG8gZml4IHRoYXQsIHVzZSBgdXNpbmdgIHRv
IGJyaW5nIHRoZW0gaW4gc2NvcGU6Ci0KLWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28g
ewotICAuLi4KLSAgdXNpbmcgRm9vOjpBZGQ7Ci0gIE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVt
ZW50IHgpKTsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtb2NrIGludCBBZGQoaW50IHRpbWVzLCBF
bGVtZW50IHgpOwotICAuLi4KLX07Ci1gYGAKLQotIyMgTW9ja2luZyBDbGFzcyBUZW1wbGF0ZXMg
IyMKLQotVG8gbW9jayBhIGNsYXNzIHRlbXBsYXRlLCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tf
KmAgbWFjcm9zOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgotY2xhc3MgU3RhY2tJ
bnRlcmZhY2UgewotICAuLi4KLSAgLy8gTXVzdCBiZSB2aXJ0dWFsIGFzIHdlJ2xsIGluaGVyaXQg
ZnJvbSBTdGFja0ludGVyZmFjZS4KLSAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKLQotICB2
aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHZvaWQgUHVzaChjb25z
dCBFbGVtJiB4KSA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNzIE1v
Y2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7Ci0gIC4uLgotICBNT0NLX0NP
TlNUX01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9EMV9UKFB1c2gsIHZv
aWQoY29uc3QgRWxlbSYgeCkpOwotfTsKLWBgYAotCi0jIyBNb2NraW5nIE5vbnZpcnR1YWwgTWV0
aG9kcyAjIwotCi1Hb29nbGUgTW9jayBjYW4gbW9jayBub24tdmlydHVhbCBmdW5jdGlvbnMgdG8g
YmUgdXNlZCBpbiB3aGF0IHdlIGNhbGwgX2hpLXBlcmYKLWRlcGVuZGVuY3kgaW5qZWN0aW9uXy4K
LQotSW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIHNoYXJpbmcgYSBjb21tb24gYmFzZSBjbGFzcyB3
aXRoIHRoZSByZWFsCi1jbGFzcywgeW91ciBtb2NrIGNsYXNzIHdpbGwgYmUgX3VucmVsYXRlZF8g
dG8gdGhlIHJlYWwgY2xhc3MsIGJ1dAotY29udGFpbiBtZXRob2RzIHdpdGggdGhlIHNhbWUgc2ln
bmF0dXJlcy4gIFRoZSBzeW50YXggZm9yIG1vY2tpbmcKLW5vbi12aXJ0dWFsIG1ldGhvZHMgaXMg
dGhlIF9zYW1lXyBhcyBtb2NraW5nIHZpcnR1YWwgbWV0aG9kczoKLQotYGBgCi0vLyBBIHNpbXBs
ZSBwYWNrZXQgc3RyZWFtIGNsYXNzLiAgTm9uZSBvZiBpdHMgbWVtYmVycyBpcyB2aXJ0dWFsLgot
Y2xhc3MgQ29uY3JldGVQYWNrZXRTdHJlYW0gewotIHB1YmxpYzoKLSAgdm9pZCBBcHBlbmRQYWNr
ZXQoUGFja2V0KiBuZXdfcGFja2V0KTsKLSAgY29uc3QgUGFja2V0KiBHZXRQYWNrZXQoc2l6ZV90
IHBhY2tldF9udW1iZXIpIGNvbnN0OwotICBzaXplX3QgTnVtYmVyT2ZQYWNrZXRzKCkgY29uc3Q7
Ci0gIC4uLgotfTsKLQotLy8gQSBtb2NrIHBhY2tldCBzdHJlYW0gY2xhc3MuICBJdCBpbmhlcml0
cyBmcm9tIG5vIG90aGVyLCBidXQgZGVmaW5lcwotLy8gR2V0UGFja2V0KCkgYW5kIE51bWJlck9m
UGFja2V0cygpLgotY2xhc3MgTW9ja1BhY2tldFN0cmVhbSB7Ci0gcHVibGljOgotICBNT0NLX0NP
TlNUX01FVEhPRDEoR2V0UGFja2V0LCBjb25zdCBQYWNrZXQqKHNpemVfdCBwYWNrZXRfbnVtYmVy
KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChOdW1iZXJPZlBhY2tldHMsIHNpemVfdCgpKTsKLSAg
Li4uCi19OwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgbW9jayBjbGFzcyBkb2Vzbid0IGRlZmluZSBg
QXBwZW5kUGFja2V0KClgLCB1bmxpa2UgdGhlCi1yZWFsIGNsYXNzLiBUaGF0J3MgZmluZSBhcyBs
b25nIGFzIHRoZSB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjYWxsIGl0LgotCi1OZXh0LCB5b3UgbmVl
ZCBhIHdheSB0byBzYXkgdGhhdCB5b3Ugd2FudCB0byB1c2UKLWBDb25jcmV0ZVBhY2tldFN0cmVh
bWAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlIGBNb2NrUGFja2V0U3RyZWFtYAotaW4gdGVz
dHMuICBTaW5jZSB0aGUgZnVuY3Rpb25zIGFyZSBub3QgdmlydHVhbCBhbmQgdGhlIHR3byBjbGFz
c2VzIGFyZQotdW5yZWxhdGVkLCB5b3UgbXVzdCBzcGVjaWZ5IHlvdXIgY2hvaWNlIGF0IF9jb21w
aWxlIHRpbWVfIChhcyBvcHBvc2VkCi10byBydW4gdGltZSkuCi0KLU9uZSB3YXkgdG8gZG8gaXQg
aXMgdG8gdGVtcGxhdGl6ZSB5b3VyIGNvZGUgdGhhdCBuZWVkcyB0byB1c2UgYSBwYWNrZXQKLXN0
cmVhbS4gIE1vcmUgc3BlY2lmaWNhbGx5LCB5b3Ugd2lsbCBnaXZlIHlvdXIgY29kZSBhIHRlbXBs
YXRlIHR5cGUKLWFyZ3VtZW50IGZvciB0aGUgdHlwZSBvZiB0aGUgcGFja2V0IHN0cmVhbS4gIElu
IHByb2R1Y3Rpb24sIHlvdSB3aWxsCi1pbnN0YW50aWF0ZSB5b3VyIHRlbXBsYXRlIHdpdGggYENv
bmNyZXRlUGFja2V0U3RyZWFtYCBhcyB0aGUgdHlwZQotYXJndW1lbnQuICBJbiB0ZXN0cywgeW91
IHdpbGwgaW5zdGFudGlhdGUgdGhlIHNhbWUgdGVtcGxhdGUgd2l0aAotYE1vY2tQYWNrZXRTdHJl
YW1gLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd3JpdGU6Ci0KLWBgYAotdGVtcGxhdGUgPGNsYXNz
IFBhY2tldFN0cmVhbT4KLXZvaWQgQ3JlYXRlQ29ubmVjdGlvbihQYWNrZXRTdHJlYW0qIHN0cmVh
bSkgeyAuLi4gfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0U3RyZWFtPgotY2xhc3MgUGFja2V0
UmVhZGVyIHsKLSBwdWJsaWM6Ci0gIHZvaWQgUmVhZFBhY2tldHMoUGFja2V0U3RyZWFtKiBzdHJl
YW0sIHNpemVfdCBwYWNrZXRfbnVtKTsKLX07Ci1gYGAKLQotVGhlbiB5b3UgY2FuIHVzZSBgQ3Jl
YXRlQ29ubmVjdGlvbjxDb25jcmV0ZVBhY2tldFN0cmVhbT4oKWAgYW5kCi1gUGFja2V0UmVhZGVy
PENvbmNyZXRlUGFja2V0U3RyZWFtPmAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlCi1gQ3Jl
YXRlQ29ubmVjdGlvbjxNb2NrUGFja2V0U3RyZWFtPigpYCBhbmQKLWBQYWNrZXRSZWFkZXI8TW9j
a1BhY2tldFN0cmVhbT5gIGluIHRlc3RzLgotCi1gYGAKLSAgTW9ja1BhY2tldFN0cmVhbSBtb2Nr
X3N0cmVhbTsKLSAgRVhQRUNUX0NBTEwobW9ja19zdHJlYW0sIC4uLikuLi47Ci0gIC4uIHNldCBt
b3JlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX3N0cmVhbSAuLi4KLSAgUGFja2V0UmVhZGVyPE1vY2tQ
YWNrZXRTdHJlYW0+IHJlYWRlcigmbW9ja19zdHJlYW0pOwotICAuLi4gZXhlcmNpc2UgcmVhZGVy
IC4uLgotYGBgCi0KLSMjIE1vY2tpbmcgRnJlZSBGdW5jdGlvbnMgIyMKLQotSXQncyBwb3NzaWJs
ZSB0byB1c2UgR29vZ2xlIE1vY2sgdG8gbW9jayBhIGZyZWUgZnVuY3Rpb24gKGkuZS4gYQotQy1z
dHlsZSBmdW5jdGlvbiBvciBhIHN0YXRpYyBtZXRob2QpLiAgWW91IGp1c3QgbmVlZCB0byByZXdy
aXRlIHlvdXIKLWNvZGUgdG8gdXNlIGFuIGludGVyZmFjZSAoYWJzdHJhY3QgY2xhc3MpLgotCi1J
bnN0ZWFkIG9mIGNhbGxpbmcgYSBmcmVlIGZ1bmN0aW9uIChzYXksIGBPcGVuRmlsZWApIGRpcmVj
dGx5LAotaW50cm9kdWNlIGFuIGludGVyZmFjZSBmb3IgaXQgYW5kIGhhdmUgYSBjb25jcmV0ZSBz
dWJjbGFzcyB0aGF0IGNhbGxzCi10aGUgZnJlZSBmdW5jdGlvbjoKLQotYGBgCi1jbGFzcyBGaWxl
SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJvb2wgT3Blbihjb25zdCBj
aGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSA9IDA7Ci19OwotCi1jbGFzcyBGaWxlIDogcHVi
bGljIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBPcGVu
KGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsKLSAgICByZXR1cm4gT3BlbkZp
bGUocGF0aCwgbW9kZSk7Ci0gIH0KLX07Ci1gYGAKLQotWW91ciBjb2RlIHNob3VsZCB0YWxrIHRv
IGBGaWxlSW50ZXJmYWNlYCB0byBvcGVuIGEgZmlsZS4gIE5vdyBpdCdzCi1lYXN5IHRvIG1vY2sg
b3V0IHRoZSBmdW5jdGlvbi4KLQotVGhpcyBtYXkgc2VlbSBtdWNoIGhhc3NsZSwgYnV0IGluIHBy
YWN0aWNlIHlvdSBvZnRlbiBoYXZlIG11bHRpcGxlCi1yZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IHlv
dSBjYW4gcHV0IGluIHRoZSBzYW1lIGludGVyZmFjZSwgc28gdGhlCi1wZXItZnVuY3Rpb24gc3lu
dGFjdGljIG92ZXJoZWFkIHdpbGwgYmUgbXVjaCBsb3dlci4KLQotSWYgeW91IGFyZSBjb25jZXJu
ZWQgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIG92ZXJoZWFkIGluY3VycmVkIGJ5Ci12aXJ0dWFsIGZ1
bmN0aW9ucywgYW5kIHByb2ZpbGluZyBjb25maXJtcyB5b3VyIGNvbmNlcm4sIHlvdSBjYW4KLWNv
bWJpbmUgdGhpcyB3aXRoIHRoZSByZWNpcGUgZm9yIFttb2NraW5nIG5vbi12aXJ0dWFsIG1ldGhv
ZHNdKCNtb2NraW5nLW5vbnZpcnR1YWwtbWV0aG9kcykuCi0KLSMjIFRoZSBOaWNlLCB0aGUgU3Ry
aWN0LCBhbmQgdGhlIE5hZ2d5ICMjCi0KLUlmIGEgbW9jayBtZXRob2QgaGFzIG5vIGBFWFBFQ1Rf
Q0FMTGAgc3BlYyBidXQgaXMgY2FsbGVkLCBHb29nbGUgTW9jawotd2lsbCBwcmludCBhIHdhcm5p
bmcgYWJvdXQgdGhlICJ1bmludGVyZXN0aW5nIGNhbGwiLiBUaGUgcmF0aW9uYWxlIGlzOgotCi0g
ICogTmV3IG1ldGhvZHMgbWF5IGJlIGFkZGVkIHRvIGFuIGludGVyZmFjZSBhZnRlciBhIHRlc3Qg
aXMgd3JpdHRlbi4gV2Ugc2hvdWxkbid0IGZhaWwgYSB0ZXN0IGp1c3QgYmVjYXVzZSBhIG1ldGhv
ZCBpdCBkb2Vzbid0IGtub3cgYWJvdXQgaXMgY2FsbGVkLgotICAqIEhvd2V2ZXIsIHRoaXMgbWF5
IGFsc28gbWVhbiB0aGVyZSdzIGEgYnVnIGluIHRoZSB0ZXN0LCBzbyBHb29nbGUgTW9jayBzaG91
bGRuJ3QgYmUgc2lsZW50IGVpdGhlci4gSWYgdGhlIHVzZXIgYmVsaWV2ZXMgdGhlc2UgY2FsbHMg
YXJlIGhhcm1sZXNzLCBoZSBjYW4gYWRkIGFuIGBFWFBFQ1RfQ0FMTCgpYCB0byBzdXBwcmVzcyB0
aGUgd2FybmluZy4KLQotSG93ZXZlciwgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBzdXBwcmVz
cyBhbGwgInVuaW50ZXJlc3RpbmcgY2FsbCIKLXdhcm5pbmdzLCB3aGlsZSBzb21ldGltZXMgeW91
IG1heSB3YW50IHRoZSBvcHBvc2l0ZSwgaS5lLiB0byB0cmVhdCBhbGwKLW9mIHRoZW0gYXMgZXJy
b3JzLiBHb29nbGUgTW9jayBsZXRzIHlvdSBtYWtlIHRoZSBkZWNpc2lvbiBvbiBhCi1wZXItbW9j
ay1vYmplY3QgYmFzaXMuCi0KLVN1cHBvc2UgeW91ciB0ZXN0IHVzZXMgYSBtb2NrIGNsYXNzIGBN
b2NrRm9vYDoKLQotYGBgCi1URVNUKC4uLikgewotICBNb2NrRm9vIG1vY2tfZm9vOwotICBFWFBF
Q1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOwotICAuLi4gY29kZSB0aGF0IHVzZXMgbW9ja19m
b28gLi4uCi19Ci1gYGAKLQotSWYgYSBtZXRob2Qgb2YgYG1vY2tfZm9vYCBvdGhlciB0aGFuIGBE
b1RoaXMoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGJlCi1yZXBvcnRlZCBieSBHb29nbGUgTW9jayBh
cyBhIHdhcm5pbmcuIEhvd2V2ZXIsIGlmIHlvdSByZXdyaXRlIHlvdXIKLXRlc3QgdG8gdXNlIGBO
aWNlTW9jazxNb2NrRm9vPmAgaW5zdGVhZCwgdGhlIHdhcm5pbmcgd2lsbCBiZSBnb25lLAotcmVz
dWx0aW5nIGluIGEgY2xlYW5lciB0ZXN0IG91dHB1dDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2ZvbzsK
LSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1c2Vz
IG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLWBOaWNlTW9jazxNb2NrRm9vPmAgaXMgYSBzdWJjbGFz
cyBvZiBgTW9ja0Zvb2AsIHNvIGl0IGNhbiBiZSB1c2VkCi13aGVyZXZlciBgTW9ja0Zvb2AgaXMg
YWNjZXB0ZWQuCi0KLUl0IGFsc28gd29ya3MgaWYgYE1vY2tGb29gJ3MgY29uc3RydWN0b3IgdGFr
ZXMgc29tZSBhcmd1bWVudHMsIGFzCi1gTmljZU1vY2s8TW9ja0Zvbz5gICJpbmhlcml0cyIgYE1v
Y2tGb29gJ3MgY29uc3RydWN0b3JzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TmljZU1vY2s7
Ci0KLVRFU1QoLi4uKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG1vY2tfZm9vKDUsICJoaSIpOyAg
Ly8gQ2FsbHMgTW9ja0Zvbyg1LCAiaGkiKS4KLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhp
cygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLVRoZSB1
c2FnZSBvZiBgU3RyaWN0TW9ja2AgaXMgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgbWFrZXMgYWxs
Ci11bmludGVyZXN0aW5nIGNhbGxzIGZhaWx1cmVzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
U3RyaWN0TW9jazsKLQotVEVTVCguLi4pIHsKLSAgU3RyaWN0TW9jazxNb2NrRm9vPiBtb2NrX2Zv
bzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1
c2VzIG1vY2tfZm9vIC4uLgotCi0gIC8vIFRoZSB0ZXN0IHdpbGwgZmFpbCBpZiBhIG1ldGhvZCBv
ZiBtb2NrX2ZvbyBvdGhlciB0aGFuIERvVGhpcygpCi0gIC8vIGlzIGNhbGxlZC4KLX0KLWBgYAot
Ci1UaGVyZSBhcmUgc29tZSBjYXZlYXRzIHRob3VnaCAoSSBkb24ndCBsaWtlIHRoZW0ganVzdCBh
cyBtdWNoIGFzIHRoZQotbmV4dCBndXksIGJ1dCBzYWRseSB0aGV5IGFyZSBzaWRlIGVmZmVjdHMg
b2YgQysrJ3MgbGltaXRhdGlvbnMpOgotCi0gIDEuIGBOaWNlTW9jazxNb2NrRm9vPmAgYW5kIGBT
dHJpY3RNb2NrPE1vY2tGb28+YCBvbmx5IHdvcmsgZm9yIG1vY2sgbWV0aG9kcyBkZWZpbmVkIHVz
aW5nIHRoZSBgTU9DS19NRVRIT0QqYCBmYW1pbHkgb2YgbWFjcm9zICoqZGlyZWN0bHkqKiBpbiB0
aGUgYE1vY2tGb29gIGNsYXNzLiBJZiBhIG1vY2sgbWV0aG9kIGlzIGRlZmluZWQgaW4gYSAqKmJh
c2UgY2xhc3MqKiBvZiBgTW9ja0Zvb2AsIHRoZSAibmljZSIgb3IgInN0cmljdCIgbW9kaWZpZXIg
bWF5IG5vdCBhZmZlY3QgaXQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIuIEluIHBhcnRpY3Vs
YXIsIG5lc3RpbmcgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1vY2tgIChlLmcuIGBOaWNlTW9jazxT
dHJpY3RNb2NrPE1vY2tGb28+ID5gKSBpcyAqKm5vdCoqIHN1cHBvcnRlZC4KLSAgMS4gVGhlIGNv
bnN0cnVjdG9ycyBvZiB0aGUgYmFzZSBtb2NrIChgTW9ja0Zvb2ApIGNhbm5vdCBoYXZlIGFyZ3Vt
ZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2ggaGFwcGVucyB0byBiZSBi
YW5uZWQgYnkgdGhlIFtHb29nbGUgQysrIHN0eWxlIGd1aWRlXShodHRwOi8vZ29vZ2xlLXN0eWxl
Z3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCi0gIDEuIER1cmlu
ZyB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBvZiBgTW9ja0Zvb2AsIHRoZSBtb2NrIG9i
amVjdCBpcyBfbm90XyBuaWNlIG9yIHN0cmljdC4gIFRoaXMgbWF5IGNhdXNlIHN1cnByaXNlcyBp
ZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBjYWxscyBhIG1vY2sgbWV0aG9kIG9uIGB0
aGlzYCBvYmplY3QuIChUaGlzIGJlaGF2aW9yLCBob3dldmVyLCBpcyBjb25zaXN0ZW50IHdpdGgg
QysrJ3MgZ2VuZXJhbCBydWxlOiBpZiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMg
YSB2aXJ0dWFsIG1ldGhvZCBvZiBgdGhpc2Agb2JqZWN0LCB0aGF0IG1ldGhvZCBpcyB0cmVhdGVk
IGFzIG5vbi12aXJ0dWFsLiAgSW4gb3RoZXIgd29yZHMsIHRvIHRoZSBiYXNlIGNsYXNzJ3MgY29u
c3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgYHRoaXNgIG9iamVjdCBiZWhhdmVzIGxpa2UgYW4gaW5z
dGFuY2Ugb2YgdGhlIGJhc2UgY2xhc3MsIG5vdCB0aGUgZGVyaXZlZCBjbGFzcy4gIFRoaXMgcnVs
ZSBpcyByZXF1aXJlZCBmb3Igc2FmZXR5LiAgT3RoZXJ3aXNlIGEgYmFzZSBjb25zdHJ1Y3RvciBt
YXkgdXNlIG1lbWJlcnMgb2YgYSBkZXJpdmVkIGNsYXNzIGJlZm9yZSB0aGV5IGFyZSBpbml0aWFs
aXplZCwgb3IgYSBiYXNlIGRlc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBj
bGFzcyBhZnRlciB0aGV5IGhhdmUgYmVlbiBkZXN0cm95ZWQuKQotCi1GaW5hbGx5LCB5b3Ugc2hv
dWxkIGJlICoqdmVyeSBjYXV0aW91cyoqIGFib3V0IHdoZW4gdG8gdXNlIG5hZ2d5IG9yIHN0cmlj
dCBtb2NrcywgYXMgdGhleSB0ZW5kIHRvIG1ha2UgdGVzdHMgbW9yZSBicml0dGxlIGFuZCBoYXJk
ZXIgdG8gbWFpbnRhaW4uIFdoZW4geW91IHJlZmFjdG9yIHlvdXIgY29kZSB3aXRob3V0IGNoYW5n
aW5nIGl0cyBleHRlcm5hbGx5IHZpc2libGUgYmVoYXZpb3IsIGlkZWFsbHkgeW91IHNob3VsZCd0
IG5lZWQgdG8gdXBkYXRlIGFueSB0ZXN0cy4gSWYgeW91ciBjb2RlIGludGVyYWN0cyB3aXRoIGEg
bmFnZ3kgbW9jaywgaG93ZXZlciwgeW91IG1heSBzdGFydCB0byBnZXQgc3BhbW1lZCB3aXRoIHdh
cm5pbmdzIGFzIHRoZSByZXN1bHQgb2YgeW91ciBjaGFuZ2UuIFdvcnNlLCBpZiB5b3VyIGNvZGUg
aW50ZXJhY3RzIHdpdGggYSBzdHJpY3QgbW9jaywgeW91ciB0ZXN0cyBtYXkgc3RhcnQgdG8gZmFp
bCBhbmQgeW91J2xsIGJlIGZvcmNlZCB0byBmaXggdGhlbS4gT3VyIGdlbmVyYWwgcmVjb21tZW5k
YXRpb24gaXMgdG8gdXNlIG5pY2UgbW9ja3MgKG5vdCB5ZXQgdGhlIGRlZmF1bHQpIG1vc3Qgb2Yg
dGhlIHRpbWUsIHVzZSBuYWdneSBtb2NrcyAodGhlIGN1cnJlbnQgZGVmYXVsdCkgd2hlbiBkZXZl
bG9waW5nIG9yIGRlYnVnZ2luZyB0ZXN0cywgYW5kIHVzZSBzdHJpY3QgbW9ja3Mgb25seSBhcyB0
aGUgbGFzdCByZXNvcnQuCi0KLSMjIFNpbXBsaWZ5aW5nIHRoZSBJbnRlcmZhY2Ugd2l0aG91dCBC
cmVha2luZyBFeGlzdGluZyBDb2RlICMjCi0KLVNvbWV0aW1lcyBhIG1ldGhvZCBoYXMgYSBsb25n
IGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgaXMgbW9zdGx5Ci11bmludGVyZXN0aW5nLiBGb3IgZXhh
bXBsZSwKLQotYGBgCi1jbGFzcyBMb2dTaW5rIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFs
IHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxp
bmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0bSogdG1fdGltZSwKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSA9
IDA7Ci19OwotYGBgCi0KLVRoaXMgbWV0aG9kJ3MgYXJndW1lbnQgbGlzdCBpcyBsZW5ndGh5IGFu
ZCBoYXJkIHRvIHdvcmsgd2l0aCAobGV0J3MKLXNheSB0aGF0IHRoZSBgbWVzc2FnZWAgYXJndW1l
bnQgaXMgbm90IGV2ZW4gMC10ZXJtaW5hdGVkKS4gSWYgd2UgbW9jawotaXQgYXMgaXMsIHVzaW5n
IHRoZSBtb2NrIHdpbGwgYmUgYXdrd2FyZC4gSWYsIGhvd2V2ZXIsIHdlIHRyeSB0bwotc2ltcGxp
ZnkgdGhpcyBpbnRlcmZhY2UsIHdlJ2xsIG5lZWQgdG8gZml4IGFsbCBjbGllbnRzIGRlcGVuZGlu
ZyBvbgotaXQsIHdoaWNoIGlzIG9mdGVuIGluZmVhc2libGUuCi0KLVRoZSB0cmljayBpcyB0byBy
ZS1kaXNwYXRjaCB0aGUgbWV0aG9kIGluIHRoZSBtb2NrIGNsYXNzOgotCi1gYGAKLWNsYXNzIFNj
b3BlZE1vY2tMb2cgOiBwdWJsaWMgTG9nU2luayB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVh
bCB2b2lkIHNlbmQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIqIGZ1bGxfZmlsZW5h
bWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VfZmlsZW5hbWUsIGludCBs
aW5lLCBjb25zdCB0bSogdG1fdGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
bWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSB7Ci0gICAgLy8gV2UgYXJlIG9ubHkgaW50ZXJl
c3RlZCBpbiB0aGUgbG9nIHNldmVyaXR5LCBmdWxsIGZpbGUgbmFtZSwgYW5kCi0gICAgLy8gbG9n
IG1lc3NhZ2UuCi0gICAgTG9nKHNldmVyaXR5LCBmdWxsX2ZpbGVuYW1lLCBzdGQ6OnN0cmluZyht
ZXNzYWdlLCBtZXNzYWdlX2xlbikpOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgbW9jayBt
ZXRob2Q6Ci0gIC8vCi0gIC8vICAgdm9pZCBMb2coTG9nU2V2ZXJpdHkgc2V2ZXJpdHksCi0gIC8v
ICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgsCi0gIC8vICAgICAgICAgICAgY29u
c3Qgc3RyaW5nJiBtZXNzYWdlKTsKLSAgTU9DS19NRVRIT0QzKExvZywgdm9pZChMb2dTZXZlcml0
eSBzZXZlcml0eSwgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKSk7Ci19OwotYGBgCi0KLUJ5IGRlZmluaW5nIGEg
bmV3IG1vY2sgbWV0aG9kIHdpdGggYSB0cmltbWVkIGFyZ3VtZW50IGxpc3QsIHdlIG1ha2UKLXRo
ZSBtb2NrIGNsYXNzIG11Y2ggbW9yZSB1c2VyLWZyaWVuZGx5LgotCi0jIyBBbHRlcm5hdGl2ZSB0
byBNb2NraW5nIENvbmNyZXRlIENsYXNzZXMgIyMKLQotT2Z0ZW4geW91IG1heSBmaW5kIHlvdXJz
ZWxmIHVzaW5nIGNsYXNzZXMgdGhhdCBkb24ndCBpbXBsZW1lbnQKLWludGVyZmFjZXMuIEluIG9y
ZGVyIHRvIHRlc3QgeW91ciBjb2RlIHRoYXQgdXNlcyBzdWNoIGEgY2xhc3MgKGxldCdzCi1jYWxs
IGl0IGBDb25jcmV0ZWApLCB5b3UgbWF5IGJlIHRlbXB0ZWQgdG8gbWFrZSB0aGUgbWV0aG9kcyBv
ZgotYENvbmNyZXRlYCB2aXJ0dWFsIGFuZCB0aGVuIG1vY2sgaXQuCi0KLVRyeSBub3QgdG8gZG8g
dGhhdC4KLQotTWFraW5nIGEgbm9uLXZpcnR1YWwgZnVuY3Rpb24gdmlydHVhbCBpcyBhIGJpZyBk
ZWNpc2lvbi4gSXQgY3JlYXRlcyBhbgotZXh0ZW5zaW9uIHBvaW50IHdoZXJlIHN1YmNsYXNzZXMg
Y2FuIHR3ZWFrIHlvdXIgY2xhc3MnIGJlaGF2aW9yLiBUaGlzCi13ZWFrZW5zIHlvdXIgY29udHJv
bCBvbiB0aGUgY2xhc3MgYmVjYXVzZSBub3cgaXQncyBoYXJkZXIgdG8gbWFpbnRhaW4KLXRoZSBj
bGFzcycgaW52YXJpYW50cy4gWW91IHNob3VsZCBtYWtlIGEgZnVuY3Rpb24gdmlydHVhbCBvbmx5
IHdoZW4KLXRoZXJlIGlzIGEgdmFsaWQgcmVhc29uIGZvciBhIHN1YmNsYXNzIHRvIG92ZXJyaWRl
IGl0LgotCi1Nb2NraW5nIGNvbmNyZXRlIGNsYXNzZXMgZGlyZWN0bHkgaXMgcHJvYmxlbWF0aWMg
YXMgaXQgY3JlYXRlcyBhIHRpZ2h0Ci1jb3VwbGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBhbmQgdGhl
IHRlc3RzIC0gYW55IHNtYWxsIGNoYW5nZSBpbiB0aGUKLWNsYXNzIG1heSBpbnZhbGlkYXRlIHlv
dXIgdGVzdHMgYW5kIG1ha2UgdGVzdCBtYWludGVuYW5jZSBhIHBhaW4uCi0KLVRvIGF2b2lkIHN1
Y2ggcHJvYmxlbXMsIG1hbnkgcHJvZ3JhbW1lcnMgaGF2ZSBiZWVuIHByYWN0aWNpbmcgImNvZGlu
ZwotdG8gaW50ZXJmYWNlcyI6IGluc3RlYWQgb2YgdGFsa2luZyB0byB0aGUgYENvbmNyZXRlYCBj
bGFzcywgeW91ciBjb2RlCi13b3VsZCBkZWZpbmUgYW4gaW50ZXJmYWNlIGFuZCB0YWxrIHRvIGl0
LiBUaGVuIHlvdSBpbXBsZW1lbnQgdGhhdAotaW50ZXJmYWNlIGFzIGFuIGFkYXB0b3Igb24gdG9w
IG9mIGBDb25jcmV0ZWAuIEluIHRlc3RzLCB5b3UgY2FuIGVhc2lseQotbW9jayB0aGF0IGludGVy
ZmFjZSB0byBvYnNlcnZlIGhvdyB5b3VyIGNvZGUgaXMgZG9pbmcuCi0KLVRoaXMgdGVjaG5pcXVl
IGluY3VycyBzb21lIG92ZXJoZWFkOgotCi0gICogWW91IHBheSB0aGUgY29zdCBvZiB2aXJ0dWFs
IGZ1bmN0aW9uIGNhbGxzICh1c3VhbGx5IG5vdCBhIHByb2JsZW0pLgotICAqIFRoZXJlIGlzIG1v
cmUgYWJzdHJhY3Rpb24gZm9yIHRoZSBwcm9ncmFtbWVycyB0byBsZWFybi4KLQotSG93ZXZlciwg
aXQgY2FuIGFsc28gYnJpbmcgc2lnbmlmaWNhbnQgYmVuZWZpdHMgaW4gYWRkaXRpb24gdG8gYmV0
dGVyCi10ZXN0YWJpbGl0eToKLQotICAqIGBDb25jcmV0ZWAncyBBUEkgbWF5IG5vdCBmaXQgeW91
ciBwcm9ibGVtIGRvbWFpbiB2ZXJ5IHdlbGwsIGFzIHlvdSBtYXkgbm90IGJlIHRoZSBvbmx5IGNs
aWVudCBpdCB0cmllcyB0byBzZXJ2ZS4gQnkgZGVzaWduaW5nIHlvdXIgb3duIGludGVyZmFjZSwg
eW91IGhhdmUgYSBjaGFuY2UgdG8gdGFpbG9yIGl0IHRvIHlvdXIgbmVlZCAtIHlvdSBtYXkgYWRk
IGhpZ2hlci1sZXZlbCBmdW5jdGlvbmFsaXRpZXMsIHJlbmFtZSBzdHVmZiwgZXRjIGluc3RlYWQg
b2YganVzdCB0cmltbWluZyB0aGUgY2xhc3MuIFRoaXMgYWxsb3dzIHlvdSB0byB3cml0ZSB5b3Vy
IGNvZGUgKHVzZXIgb2YgdGhlIGludGVyZmFjZSkgaW4gYSBtb3JlIG5hdHVyYWwgd2F5LCB3aGlj
aCBtZWFucyBpdCB3aWxsIGJlIG1vcmUgcmVhZGFibGUsIG1vcmUgbWFpbnRhaW5hYmxlLCBhbmQg
eW91J2xsIGJlIG1vcmUgcHJvZHVjdGl2ZS4KLSAgKiBJZiBgQ29uY3JldGVgJ3MgaW1wbGVtZW50
YXRpb24gZXZlciBoYXMgdG8gY2hhbmdlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZXdyaXRlIGV2ZXJ5
d2hlcmUgaXQgaXMgdXNlZC4gSW5zdGVhZCwgeW91IGNhbiBhYnNvcmIgdGhlIGNoYW5nZSBpbiB5
b3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCB5b3VyIG90aGVyIGNvZGUg
YW5kIHRlc3RzIHdpbGwgYmUgaW5zdWxhdGVkIGZyb20gdGhpcyBjaGFuZ2UuCi0KLVNvbWUgcGVv
cGxlIHdvcnJ5IHRoYXQgaWYgZXZlcnlvbmUgaXMgcHJhY3RpY2luZyB0aGlzIHRlY2huaXF1ZSwg
dGhleQotd2lsbCBlbmQgdXAgd3JpdGluZyBsb3RzIG9mIHJlZHVuZGFudCBjb2RlLiBUaGlzIGNv
bmNlcm4gaXMgdG90YWxseQotdW5kZXJzdGFuZGFibGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSB0d28g
cmVhc29ucyB3aHkgaXQgbWF5IG5vdCBiZSB0aGUKLWNhc2U6Ci0KLSAgKiBEaWZmZXJlbnQgcHJv
amVjdHMgbWF5IG5lZWQgdG8gdXNlIGBDb25jcmV0ZWAgaW4gZGlmZmVyZW50IHdheXMsIHNvIHRo
ZSBiZXN0IGludGVyZmFjZXMgZm9yIHRoZW0gd2lsbCBiZSBkaWZmZXJlbnQuIFRoZXJlZm9yZSwg
ZWFjaCBvZiB0aGVtIHdpbGwgaGF2ZSBpdHMgb3duIGRvbWFpbi1zcGVjaWZpYyBpbnRlcmZhY2Ug
b24gdG9wIG9mIGBDb25jcmV0ZWAsIGFuZCB0aGV5IHdpbGwgbm90IGJlIHRoZSBzYW1lIGNvZGUu
Ci0gICogSWYgZW5vdWdoIHByb2plY3RzIHdhbnQgdG8gdXNlIHRoZSBzYW1lIGludGVyZmFjZSwg
dGhleSBjYW4gYWx3YXlzIHNoYXJlIGl0LCBqdXN0IGxpa2UgdGhleSBoYXZlIGJlZW4gc2hhcmlu
ZyBgQ29uY3JldGVgLiBZb3UgY2FuIGNoZWNrIGluIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBhZGFw
dG9yIHNvbWV3aGVyZSBuZWFyIGBDb25jcmV0ZWAgKHBlcmhhcHMgaW4gYSBgY29udHJpYmAgc3Vi
LWRpcmVjdG9yeSkgYW5kIGxldCBtYW55IHByb2plY3RzIHVzZSBpdC4KLQotWW91IG5lZWQgdG8g
d2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMgY2FyZWZ1bGx5IGZvciB5b3VyIHBhcnRpY3VsYXIKLXBy
b2JsZW0sIGJ1dCBJJ2QgbGlrZSB0byBhc3N1cmUgeW91IHRoYXQgdGhlIEphdmEgY29tbXVuaXR5
IGhhcyBiZWVuCi1wcmFjdGljaW5nIHRoaXMgZm9yIGEgbG9uZyB0aW1lIGFuZCBpdCdzIGEgcHJv
dmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUKLWFwcGxpY2FibGUgaW4gYSB3aWRlIHZhcmlldHkgb2Yg
c2l0dWF0aW9ucy4gOi0pCi0KLSMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBGYWtlICMjCi0KLVNv
bWUgdGltZXMgeW91IGhhdmUgYSBub24tdHJpdmlhbCBmYWtlIGltcGxlbWVudGF0aW9uIG9mIGFu
Ci1pbnRlcmZhY2UuIEZvciBleGFtcGxlOgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgot
ICB2aXJ0dWFsIH5Gb28oKSB7fQotICB2aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSA9IDA7Ci0g
IHZpcnR1YWwgdm9pZCBEb1RoYXQoY29uc3QgY2hhciogcywgaW50KiBwKSA9IDA7Ci19OwotCi1j
bGFzcyBGYWtlRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGNoYXIgRG9U
aGlzKGludCBuKSB7Ci0gICAgcmV0dXJuIChuID4gMCkgPyAnKycgOgotICAgICAgICAobiA8IDAp
ID8gJy0nIDogJzAnOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFyKiBz
LCBpbnQqIHApIHsKLSAgICAqcCA9IHN0cmxlbihzKTsKLSAgfQotfTsKLWBgYAotCi1Ob3cgeW91
IHdhbnQgdG8gbW9jayB0aGlzIGludGVyZmFjZSBzdWNoIHRoYXQgeW91IGNhbiBzZXQgZXhwZWN0
YXRpb25zCi1vbiBpdC4gSG93ZXZlciwgeW91IGFsc28gd2FudCB0byB1c2UgYEZha2VGb29gIGZv
ciB0aGUgZGVmYXVsdAotYmVoYXZpb3IsIGFzIGR1cGxpY2F0aW5nIGl0IGluIHRoZSBtb2NrIG9i
amVjdCBpcywgd2VsbCwgYSBsb3Qgb2YKLXdvcmsuCi0KLVdoZW4geW91IGRlZmluZSB0aGUgbW9j
ayBjbGFzcyB1c2luZyBHb29nbGUgTW9jaywgeW91IGNhbiBoYXZlIGl0Ci1kZWxlZ2F0ZSBpdHMg
ZGVmYXVsdCBhY3Rpb24gdG8gYSBmYWtlIGNsYXNzIHlvdSBhbHJlYWR5IGhhdmUsIHVzaW5nCi10
aGlzIHBhdHRlcm46Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5n
OjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8v
IE5vcm1hbCBtb2NrIG1ldGhvZCBkZWZpbml0aW9ucyB1c2luZyBHb29nbGUgTW9jay4KLSAgTU9D
S19NRVRIT0QxKERvVGhpcywgY2hhcihpbnQgbikpOwotICBNT0NLX01FVEhPRDIoRG9UaGF0LCB2
b2lkKGNvbnN0IGNoYXIqIHMsIGludCogcCkpOwotCi0gIC8vIERlbGVnYXRlcyB0aGUgZGVmYXVs
dCBhY3Rpb25zIG9mIHRoZSBtZXRob2RzIHRvIGEgRmFrZUZvbyBvYmplY3QuCi0gIC8vIFRoaXMg
bXVzdCBiZSBjYWxsZWQgKmJlZm9yZSogdGhlIGN1c3RvbSBPTl9DQUxMKCkgc3RhdGVtZW50cy4K
LSAgdm9pZCBEZWxlZ2F0ZVRvRmFrZSgpIHsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoXykp
Ci0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMp
KTsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoYXQoXywgXykpCi0gICAgICAgIC5XaWxsQnlEZWZh
dWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoYXQpKTsKLSAgfQotIHByaXZhdGU6Ci0g
IEZha2VGb28gZmFrZV87ICAvLyBLZWVwcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFrZSBpbiB0aGUg
bW9jay4KLX07Ci1gYGAKLQotV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBgTW9ja0Zvb2AgaW4geW91
ciB0ZXN0cyBhcyB1c3VhbC4gSnVzdCByZW1lbWJlcgotdGhhdCBpZiB5b3UgZG9uJ3QgZXhwbGlj
aXRseSBzZXQgYW4gYWN0aW9uIGluIGFuIGBPTl9DQUxMKClgIG9yCi1gRVhQRUNUX0NBTEwoKWAs
IHRoZSBmYWtlIHdpbGwgYmUgY2FsbGVkIHVwb24gdG8gZG8gaXQ6Ci0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpfOwotCi1URVNUKEFiY1Rlc3QsIFh5eikgewotICBNb2NrRm9vIGZvbzsKLSAgZm9v
LkRlbGVnYXRlVG9GYWtlKCk7IC8vIEVuYWJsZXMgdGhlIGZha2UgZm9yIGRlbGVnYXRpb24uCi0K
LSAgLy8gUHV0IHlvdXIgT05fQ0FMTChmb28sIC4uLilzIGhlcmUsIGlmIGFueS4KLQotICAvLyBO
byBhY3Rpb24gc3BlY2lmaWVkLCBtZWFuaW5nIHRvIHVzZSB0aGUgZGVmYXVsdCBhY3Rpb24uCi0g
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQo
XywgXykpOwotCi0gIGludCBuID0gMDsKLSAgRVhQRUNUX0VRKCcrJywgZm9vLkRvVGhpcyg1KSk7
ICAvLyBGYWtlRm9vOjpEb1RoaXMoKSBpcyBpbnZva2VkLgotICBmb28uRG9UaGF0KCJIaSIsICZu
KTsgICAgICAgICAgIC8vIEZha2VGb286OkRvVGhhdCgpIGlzIGludm9rZWQuCi0gIEVYUEVDVF9F
USgyLCBuKTsKLX0KLWBgYAotCi0qKlNvbWUgdGlwczoqKgotCi0gICogSWYgeW91IHdhbnQsIHlv
dSBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uIGJ5IHByb3ZpZGluZyB5b3Vy
IG93biBgT05fQ0FMTCgpYCBvciB1c2luZyBgLldpbGxPbmNlKClgIC8gYC5XaWxsUmVwZWF0ZWRs
eSgpYCBpbiBgRVhQRUNUX0NBTEwoKWAuCi0gICogSW4gYERlbGVnYXRlVG9GYWtlKClgLCB5b3Ug
b25seSBuZWVkIHRvIGRlbGVnYXRlIHRoZSBtZXRob2RzIHdob3NlIGZha2UgaW1wbGVtZW50YXRp
b24geW91IGludGVuZCB0byB1c2UuCi0gICogVGhlIGdlbmVyYWwgdGVjaG5pcXVlIGRpc2N1c3Nl
ZCBoZXJlIHdvcmtzIGZvciBvdmVybG9hZGVkIG1ldGhvZHMsIGJ1dCB5b3UnbGwgbmVlZCB0byB0
ZWxsIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHlvdSBtZWFuLiBUbyBkaXNhbWJpZ3VhdGUg
YSBtb2NrIGZ1bmN0aW9uICh0aGUgb25lIHlvdSBzcGVjaWZ5IGluc2lkZSB0aGUgcGFyZW50aGVz
ZXMgb2YgYE9OX0NBTEwoKWApLCBzZWUgdGhlICJTZWxlY3RpbmcgQmV0d2VlbiBPdmVybG9hZGVk
IEZ1bmN0aW9ucyIgc2VjdGlvbiBvbiB0aGlzIHBhZ2U7IHRvIGRpc2FtYmlndWF0ZSBhIGZha2Ug
ZnVuY3Rpb24gKHRoZSBvbmUgeW91IHBsYWNlIGluc2lkZSBgSW52b2tlKClgKSwgdXNlIGEgYHN0
YXRpY19jYXN0YCB0byBzcGVjaWZ5IHRoZSBmdW5jdGlvbidzIHR5cGUuIEZvciBpbnN0YW5jZSwg
aWYgY2xhc3MgYEZvb2AgaGFzIG1ldGhvZHMgYGNoYXIgRG9UaGlzKGludCBuKWAgYW5kIGBib29s
IERvVGhpcyhkb3VibGUgeCkgY29uc3RgLCBhbmQgeW91IHdhbnQgdG8gaW52b2tlIHRoZSBsYXR0
ZXIsIHlvdSBuZWVkIHRvIHdyaXRlIGBJbnZva2UoJmZha2VfLCBzdGF0aWNfY2FzdDxib29sIChG
YWtlRm9vOjoqKShkb3VibGUpIGNvbnN0PigmRmFrZUZvbzo6RG9UaGlzKSlgIGluc3RlYWQgb2Yg
YEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoaXMpYCAoVGhlIHN0cmFuZ2UtbG9va2luZyB0
aGluZyBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBvZiBgc3RhdGljX2Nhc3RgIGlzIHRoZSB0
eXBlIG9mIGEgZnVuY3Rpb24gcG9pbnRlciB0byB0aGUgc2Vjb25kIGBEb1RoaXMoKWAgbWV0aG9k
LikuCi0gICogSGF2aW5nIHRvIG1peCBhIG1vY2sgYW5kIGEgZmFrZSBpcyBvZnRlbiBhIHNpZ24g
b2Ygc29tZXRoaW5nIGdvbmUgd3JvbmcuIFBlcmhhcHMgeW91IGhhdmVuJ3QgZ290IHVzZWQgdG8g
dGhlIGludGVyYWN0aW9uLWJhc2VkIHdheSBvZiB0ZXN0aW5nIHlldC4gT3IgcGVyaGFwcyB5b3Vy
IGludGVyZmFjZSBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMgYW5kIHNob3VsZCBiZSBzcGxp
dCB1cC4gVGhlcmVmb3JlLCAqKmRvbid0IGFidXNlIHRoaXMqKi4gV2Ugd291bGQgb25seSByZWNv
bW1lbmQgdG8gZG8gaXQgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiB5b3UgYXJlIHJlZmFj
dG9yaW5nIHlvdXIgY29kZS4KLQotUmVnYXJkaW5nIHRoZSB0aXAgb24gbWl4aW5nIGEgbW9jayBh
bmQgYSBmYWtlLCBoZXJlJ3MgYW4gZXhhbXBsZSBvbgotd2h5IGl0IG1heSBiZSBhIGJhZCBzaWdu
OiBTdXBwb3NlIHlvdSBoYXZlIGEgY2xhc3MgYFN5c3RlbWAgZm9yCi1sb3ctbGV2ZWwgc3lzdGVt
IG9wZXJhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGRvZXMgZmlsZSBhbmQgSS9PCi1vcGVyYXRp
b25zLiBBbmQgc3VwcG9zZSB5b3Ugd2FudCB0byB0ZXN0IGhvdyB5b3VyIGNvZGUgdXNlcyBgU3lz
dGVtYAotdG8gZG8gSS9PLCBhbmQgeW91IGp1c3Qgd2FudCB0aGUgZmlsZSBvcGVyYXRpb25zIHRv
IHdvcmsgbm9ybWFsbHkuIElmCi15b3UgbW9jayBvdXQgdGhlIGVudGlyZSBgU3lzdGVtYCBjbGFz
cywgeW91J2xsIGhhdmUgdG8gcHJvdmlkZSBhIGZha2UKLWltcGxlbWVudGF0aW9uIGZvciB0aGUg
ZmlsZSBvcGVyYXRpb24gcGFydCwgd2hpY2ggc3VnZ2VzdHMgdGhhdAotYFN5c3RlbWAgaXMgdGFr
aW5nIG9uIHRvbyBtYW55IHJvbGVzLgotCi1JbnN0ZWFkLCB5b3UgY2FuIGRlZmluZSBhIGBGaWxl
T3BzYCBpbnRlcmZhY2UgYW5kIGFuIGBJT09wc2AgaW50ZXJmYWNlCi1hbmQgc3BsaXQgYFN5c3Rl
bWAncyBmdW5jdGlvbmFsaXRpZXMgaW50byB0aGUgdHdvLiBUaGVuIHlvdSBjYW4gbW9jawotYElP
T3BzYCB3aXRob3V0IG1vY2tpbmcgYEZpbGVPcHNgLgotCi0jIyBEZWxlZ2F0aW5nIENhbGxzIHRv
IGEgUmVhbCBPYmplY3QgIyMKLQotV2hlbiB1c2luZyB0ZXN0aW5nIGRvdWJsZXMgKG1vY2tzLCBm
YWtlcywgc3R1YnMsIGFuZCBldGMpLCBzb21ldGltZXMKLXRoZWlyIGJlaGF2aW9ycyB3aWxsIGRp
ZmZlciBmcm9tIHRob3NlIG9mIHRoZSByZWFsIG9iamVjdHMuIFRoaXMKLWRpZmZlcmVuY2UgY291
bGQgYmUgZWl0aGVyIGludGVudGlvbmFsIChhcyBpbiBzaW11bGF0aW5nIGFuIGVycm9yIHN1Y2gK
LXRoYXQgeW91IGNhbiB0ZXN0IHRoZSBlcnJvciBoYW5kbGluZyBjb2RlKSBvciB1bmludGVudGlv
bmFsLiBJZiB5b3VyCi1tb2NrcyBoYXZlIGRpZmZlcmVudCBiZWhhdmlvcnMgdGhhbiB0aGUgcmVh
bCBvYmplY3RzIGJ5IG1pc3Rha2UsIHlvdQotY291bGQgZW5kIHVwIHdpdGggY29kZSB0aGF0IHBh
c3NlcyB0aGUgdGVzdHMgYnV0IGZhaWxzIGluIHByb2R1Y3Rpb24uCi0KLVlvdSBjYW4gdXNlIHRo
ZSBfZGVsZWdhdGluZy10by1yZWFsXyB0ZWNobmlxdWUgdG8gZW5zdXJlIHRoYXQgeW91cgotbW9j
ayBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIHJlYWwgb2JqZWN0IHdoaWxlIHJldGFpbmlu
ZyB0aGUKLWFiaWxpdHkgdG8gdmFsaWRhdGUgY2FsbHMuIFRoaXMgdGVjaG5pcXVlIGlzIHZlcnkg
c2ltaWxhciB0byB0aGUKLWRlbGVnYXRpbmctdG8tZmFrZSB0ZWNobmlxdWUsIHRoZSBkaWZmZXJl
bmNlIGJlaW5nIHRoYXQgd2UgdXNlIGEgcmVhbAotb2JqZWN0IGluc3RlYWQgb2YgYSBmYWtlLiBI
ZXJlJ3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRl
c3Rpbmc6OkF0TGVhc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotY2xhc3MgTW9ja0Zv
byA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTW9ja0ZvbygpIHsKLSAgICAvLyBCeSBkZWZh
dWx0LCBhbGwgY2FsbHMgYXJlIGRlbGVnYXRlZCB0byB0aGUgcmVhbCBvYmplY3QuCi0gICAgT05f
Q0FMTCgqdGhpcywgRG9UaGlzKCkpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmcmVh
bF8sICZGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChfKSkKLSAgICAg
ICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZvbzo6RG9UaGF0KSk7Ci0gICAgLi4u
Ci0gIH0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgLi4uKTsKLSAgTU9DS19NRVRIT0QxKERvVGhh
dCwgLi4uKTsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgRm9vIHJlYWxfOwotfTsKLS4uLgotCi0gIE1v
Y2tGb28gbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoaXMoKSkKLSAgICAgIC5UaW1l
cygzKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGF0KCJIaSIpKQotICAgICAgLlRpbWVzKEF0
TGVhc3QoMSkpOwotICAuLi4gdXNlIG1vY2sgaW4gdGVzdCAuLi4KLWBgYAotCi1XaXRoIHRoaXMs
IEdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoYXQgeW91ciBjb2RlIG1hZGUgdGhlIHJpZ2h0IGNh
bGxzCi0od2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLCBpbiB0aGUgcmlnaHQgb3JkZXIsIGNhbGxl
ZCB0aGUgcmlnaHQgbnVtYmVyCi1vZiB0aW1lcywgZXRjKSwgYW5kIGEgcmVhbCBvYmplY3Qgd2ls
bCBhbnN3ZXIgdGhlIGNhbGxzIChzbyB0aGUKLWJlaGF2aW9yIHdpbGwgYmUgdGhlIHNhbWUgYXMg
aW4gcHJvZHVjdGlvbikuIFRoaXMgZ2l2ZXMgeW91IHRoZSBiZXN0Ci1vZiBib3RoIHdvcmxkcy4K
LQotIyMgRGVsZWdhdGluZyBDYWxscyB0byBhIFBhcmVudCBDbGFzcyAjIwotCi1JZGVhbGx5LCB5
b3Ugc2hvdWxkIGNvZGUgdG8gaW50ZXJmYWNlcywgd2hvc2UgbWV0aG9kcyBhcmUgYWxsIHB1cmUK
LXZpcnR1YWwuIEluIHJlYWxpdHksIHNvbWV0aW1lcyB5b3UgZG8gbmVlZCB0byBtb2NrIGEgdmly
dHVhbCBtZXRob2QKLXRoYXQgaXMgbm90IHB1cmUgKGkuZSwgaXQgYWxyZWFkeSBoYXMgYW4gaW1w
bGVtZW50YXRpb24pLiBGb3IgZXhhbXBsZToKLQotYGBgCi1jbGFzcyBGb28gewotIHB1YmxpYzoK
LSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgdmlydHVhbCB2b2lkIFB1cmUoaW50IG4pID0gMDsKLSAg
dmlydHVhbCBpbnQgQ29uY3JldGUoY29uc3QgY2hhciogc3RyKSB7IC4uLiB9Ci19OwotCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBt
ZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcg
YSBjb25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tf
TUVUSE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwotfTsKLWBgYAotCi1Tb21l
dGltZXMgeW91IG1heSB3YW50IHRvIGNhbGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zdGVhZCBvZgot
YE1vY2tGb286OkNvbmNyZXRlKClgLiBQZXJoYXBzIHlvdSB3YW50IHRvIGRvIGl0IGFzIHBhcnQg
b2YgYSBzdHViCi1hY3Rpb24sIG9yIHBlcmhhcHMgeW91ciB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBt
b2NrIGBDb25jcmV0ZSgpYCBhdCBhbGwKLShidXQgaXQgd291bGQgYmUgb2gtc28gcGFpbmZ1bCB0
byBoYXZlIHRvIGRlZmluZSBhIG5ldyBtb2NrIGNsYXNzCi13aGVuZXZlciB5b3UgZG9uJ3QgbmVl
ZCB0byBtb2NrIG9uZSBvZiBpdHMgbWV0aG9kcykuCi0KLVRoZSB0cmljayBpcyB0byBsZWF2ZSBh
IGJhY2sgZG9vciBpbiB5b3VyIG1vY2sgY2xhc3MgZm9yIGFjY2Vzc2luZyB0aGUKLXJlYWwgbWV0
aG9kcyBpbiB0aGUgYmFzZSBjbGFzczoKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZv
byB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCi0gIE1PQ0tfTUVUSE9E
MShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBG
b286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50
KGNvbnN0IGNoYXIqIHN0cikpOwotCi0gIC8vIFVzZSB0aGlzIHRvIGNhbGwgQ29uY3JldGUoKSBk
ZWZpbmVkIGluIEZvby4KLSAgaW50IEZvb0NvbmNyZXRlKGNvbnN0IGNoYXIqIHN0cikgeyByZXR1
cm4gRm9vOjpDb25jcmV0ZShzdHIpOyB9Ci19OwotYGBgCi0KLU5vdywgeW91IGNhbiBjYWxsIGBG
b286OkNvbmNyZXRlKClgIGluc2lkZSBhbiBhY3Rpb24gYnk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9v
LCBDb25jcmV0ZShfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoJmZvbywgJk1vY2tGb286OkZv
b0NvbmNyZXRlKSk7Ci1gYGAKLQotb3IgdGVsbCB0aGUgbW9jayBvYmplY3QgdGhhdCB5b3UgZG9u
J3Qgd2FudCB0byBtb2NrIGBDb25jcmV0ZSgpYDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Oklu
dm9rZTsKLS4uLgotICBPTl9DQUxMKGZvbywgQ29uY3JldGUoXykpCi0gICAgICAuV2lsbEJ5RGVm
YXVsdChJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Ci1gYGAKLQotKFdoeSBk
b24ndCB3ZSBqdXN0IHdyaXRlIGBJbnZva2UoJmZvbywgJkZvbzo6Q29uY3JldGUpYD8gSWYgeW91
IGRvCi10aGF0LCBgTW9ja0Zvbzo6Q29uY3JldGUoKWAgd2lsbCBiZSBjYWxsZWQgKGFuZCBjYXVz
ZSBhbiBpbmZpbml0ZQotcmVjdXJzaW9uKSBzaW5jZSBgRm9vOjpDb25jcmV0ZSgpYCBpcyB2aXJ0
dWFsLiBUaGF0J3MganVzdCBob3cgQysrCi13b3Jrcy4pCi0KLSMgVXNpbmcgTWF0Y2hlcnMgIwot
Ci0jIyBNYXRjaGluZyBBcmd1bWVudCBWYWx1ZXMgRXhhY3RseSAjIwotCi1Zb3UgY2FuIHNwZWNp
ZnkgZXhhY3RseSB3aGljaCBhcmd1bWVudHMgYSBtb2NrIG1ldGhvZCBpcyBleHBlY3Rpbmc6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBE
b1RoaXMoNSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhhdCgiSGVsbG8iLCBiYXIpKTsKLWBgYAotCi0jIyBVc2luZyBTaW1wbGUgTWF0Y2hl
cnMgIyMKLQotWW91IGNhbiB1c2UgbWF0Y2hlcnMgdG8gbWF0Y2ggYXJndW1lbnRzIHRoYXQgaGF2
ZSBhIGNlcnRhaW4gcHJvcGVydHk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5n
IDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIEVY
UEVDVF9DQUxMKGZvbywgRG9UaGlzKEdlKDUpKSkgIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlID49
IDUuCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwotICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhhdCgiSGVsbG8iLCBOb3ROdWxsKCkpKTsKLSAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0
IG5vdCBiZSBOVUxMLgotYGBgCi0KLUEgZnJlcXVlbnRseSB1c2VkIG1hdGNoZXIgaXMgYF9gLCB3
aGljaCBtYXRjaGVzIGFueXRoaW5nOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5n
IDo6dGVzdGluZzo6Tm90TnVsbDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBO
b3ROdWxsKCkpKTsKLWBgYAotCi0jIyBDb21iaW5pbmcgTWF0Y2hlcnMgIyMKLQotWW91IGNhbiBi
dWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gZXhpc3Rpbmcgb25lcyB1c2luZyBgQWxsT2YoKWAs
Ci1gQW55T2YoKWAsIGFuZCBgTm90KClgOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QWxsT2Y7
Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11c2lu
ZyA6OnRlc3Rpbmc6Ok5lOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3Q7Ci0uLi4KLSAgLy8gVGhlIGFy
Z3VtZW50IG11c3QgYmUgPiA1IGFuZCAhPSAxMC4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMo
QWxsT2YoR3QoNSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDEwKSkpKTsK
LQotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgY29udGFpbiBzdWItc3RyaW5nICJi
bGFoIi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoTm90KEhhc1N1YnN0cigiYmxhaCIpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwotYGBgCi0KLSMjIENhc3RpbmcgTWF0
Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIHN0YXRpY2FsbHkgdHlwZWQsIG1l
YW5pbmcgdGhhdCB0aGUgY29tcGlsZXIKLWNhbiBjYXRjaCB5b3VyIG1pc3Rha2UgaWYgeW91IHVz
ZSBhIG1hdGNoZXIgb2YgdGhlIHdyb25nIHR5cGUgKGZvcgotZXhhbXBsZSwgaWYgeW91IHVzZSBg
RXEoNSlgIHRvIG1hdGNoIGEgYHN0cmluZ2AgYXJndW1lbnQpLiBHb29kIGZvcgoteW91IQotCi1T
b21ldGltZXMsIGhvd2V2ZXIsIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nIGFuZCB3YW50IHRo
ZSBjb21waWxlcgotdG8gZ2l2ZSB5b3Ugc29tZSBzbGFjay4gT25lIGV4YW1wbGUgaXMgdGhhdCB5
b3UgaGF2ZSBhIG1hdGNoZXIgZm9yCi1gbG9uZ2AgYW5kIHRoZSBhcmd1bWVudCB5b3Ugd2FudCB0
byBtYXRjaCBpcyBgaW50YC4gV2hpbGUgdGhlIHR3bwotdHlwZXMgYXJlbid0IGV4YWN0bHkgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHdyb25nIHdpdGgKLXVzaW5nIGEgYE1hdGNo
ZXI8bG9uZz5gIHRvIG1hdGNoIGFuIGBpbnRgIC0gYWZ0ZXIgYWxsLCB3ZSBjYW4gZmlyc3QKLWNv
bnZlcnQgdGhlIGBpbnRgIGFyZ3VtZW50IHRvIGEgYGxvbmdgIGJlZm9yZSBnaXZpbmcgaXQgdG8g
dGhlCi1tYXRjaGVyLgotCi1UbyBzdXBwb3J0IHRoaXMgbmVlZCwgR29vZ2xlIE1vY2sgZ2l2ZXMg
eW91IHRoZQotYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgZnVuY3Rpb24uIEl0IGNhc3RzIGEgbWF0
Y2hlciBgbWAgdG8gdHlwZQotYE1hdGNoZXI8VD5gLiBUbyBlbnN1cmUgc2FmZXR5LCBHb29nbGUg
TW9jayBjaGVja3MgdGhhdCAobGV0IGBVYCBiZSB0aGUKLXR5cGUgYG1gIGFjY2VwdHMpOgotCi0g
IDEuIFR5cGUgYFRgIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gdHlwZSBgVWA7Ci0gIDEuIFdo
ZW4gYm90aCBgVGAgYW5kIGBVYCBhcmUgYnVpbHQtaW4gYXJpdGhtZXRpYyB0eXBlcyAoYGJvb2xg
LCBpbnRlZ2VycywgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMpLCB0aGUgY29udmVyc2lvbiBm
cm9tIGBUYCB0byBgVWAgaXMgbm90IGxvc3N5IChpbiBvdGhlciB3b3JkcywgYW55IHZhbHVlIHJl
cHJlc2VudGFibGUgYnkgYFRgIGNhbiBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IGBVYCk7IGFuZAot
ICAxLiBXaGVuIGBVYCBpcyBhIHJlZmVyZW5jZSwgYFRgIG11c3QgYWxzbyBiZSBhIHJlZmVyZW5j
ZSAoYXMgdGhlIHVuZGVybHlpbmcgbWF0Y2hlciBtYXkgYmUgaW50ZXJlc3RlZCBpbiB0aGUgYWRk
cmVzcyBvZiB0aGUgYFVgIHZhbHVlKS4KLQotVGhlIGNvZGUgd29uJ3QgY29tcGlsZSBpZiBhbnkg
b2YgdGhlc2UgY29uZGl0aW9ucyBpc24ndCBtZXQuCi0KLUhlcmUncyBvbmUgZXhhbXBsZToKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDsKLQotLy8gQSBiYXNlIGNsYXNz
IGFuZCBhIGNoaWxkIGNsYXNzLgotY2xhc3MgQmFzZSB7IC4uLiB9OwotY2xhc3MgRGVyaXZlZCA6
IHB1YmxpYyBCYXNlIHsgLi4uIH07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBw
dWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIHZvaWQoRGVyaXZlZCogZGVyaXZlZCkpOwot
fTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICAvLyBtIGlzIGEgTWF0Y2hlcjxCYXNlKj4gd2Ug
Z290IGZyb20gc29tZXdoZXJlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhTYWZlTWF0Y2hl
ckNhc3Q8RGVyaXZlZCo+KG0pKSk7Ci1gYGAKLQotSWYgeW91IGZpbmQgYFNhZmVNYXRjaGVyQ2Fz
dDxUPihtKWAgdG9vIGxpbWl0aW5nLCB5b3UgY2FuIHVzZSBhIHNpbWlsYXIKLWZ1bmN0aW9uIGBN
YXRjaGVyQ2FzdDxUPihtKWAuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgYE1hdGNoZXJDYXN0YCB3
b3JrcwotYXMgbG9uZyBhcyB5b3UgY2FuIGBzdGF0aWNfY2FzdGAgdHlwZSBgVGAgdG8gdHlwZSBg
VWAuCi0KLWBNYXRjaGVyQ2FzdGAgZXNzZW50aWFsbHkgbGV0cyB5b3UgYnlwYXNzIEMrKydzIHR5
cGUgc3lzdGVtCi0oYHN0YXRpY19jYXN0YCBpc24ndCBhbHdheXMgc2FmZSBhcyBpdCBjb3VsZCB0
aHJvdyBhd2F5IGluZm9ybWF0aW9uLAotZm9yIGV4YW1wbGUpLCBzbyBiZSBjYXJlZnVsIG5vdCB0
byBtaXN1c2UvYWJ1c2UgaXQuCi0KLSMjIFNlbGVjdGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVu
Y3Rpb25zICMjCi0KLUlmIHlvdSBleHBlY3QgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbiB0byBiZSBj
YWxsZWQsIHRoZSBjb21waWxlciBtYXkKLW5lZWQgc29tZSBoZWxwIG9uIHdoaWNoIG92ZXJsb2Fk
ZWQgdmVyc2lvbiBpdCBpcy4KLQotVG8gZGlzYW1iaWd1YXRlIGZ1bmN0aW9ucyBvdmVybG9hZGVk
IG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LAotdXNlIHRoZSBgQ29uc3QoKWAgYXJn
dW1lbnQgd3JhcHBlci4KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKLQotY2xh
c3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgTU9DS19NRVRIT0QwKEdldEJhciwg
QmFyJigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJhciwgY29uc3QgQmFyJigpKTsKLX07
Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjEsIGJhcjI7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgR2V0QmFyKCkpICAgICAgICAgLy8gVGhlIG5vbi1jb25zdCBHZXRCYXIoKS4KLSAgICAg
IC5XaWxsT25jZShSZXR1cm5SZWYoYmFyMSkpOwotICBFWFBFQ1RfQ0FMTChDb25zdChmb28pLCBH
ZXRCYXIoKSkgIC8vIFRoZSBjb25zdCBHZXRCYXIoKS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm5S
ZWYoYmFyMikpOwotYGBgCi0KLShgQ29uc3QoKWAgaXMgZGVmaW5lZCBieSBHb29nbGUgTW9jayBh
bmQgcmV0dXJucyBhIGBjb25zdGAgcmVmZXJlbmNlCi10byBpdHMgYXJndW1lbnQuKQotCi1UbyBk
aXNhbWJpZ3VhdGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2Yg
YXJndW1lbnRzCi1idXQgZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLCB5b3UgbWF5IG5lZWQgdG8g
c3BlY2lmeSB0aGUgZXhhY3QgdHlwZQotb2YgYSBtYXRjaGVyLCBlaXRoZXIgYnkgd3JhcHBpbmcg
eW91ciBtYXRjaGVyIGluIGBNYXRjaGVyPHR5cGU+KClgLCBvcgotdXNpbmcgYSBtYXRjaGVyIHdo
b3NlIHR5cGUgaXMgZml4ZWQgKGBUeXBlZEVxPHR5cGU+YCwgYEFuPHR5cGU+KClgLAotZXRjKToK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFuOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6VHlwZWRFcTsKLQotY2xhc3Mg
TW9ja1ByaW50ZXIgOiBwdWJsaWMgUHJpbnRlciB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEo
UHJpbnQsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0QxKFByaW50LCB2b2lkKGNoYXIgYykp
OwotfTsKLQotVEVTVChQcmludGVyVGVzdCwgUHJpbnQpIHsKLSAgTW9ja1ByaW50ZXIgcHJpbnRl
cjsKLQotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChBbjxpbnQ+KCkpKTsgICAgICAgICAg
ICAvLyB2b2lkIFByaW50KGludCk7Ci0gIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KE1hdGNo
ZXI8aW50PihMdCg1KSkpKTsgIC8vIHZvaWQgUHJpbnQoaW50KTsKLSAgRVhQRUNUX0NBTEwocHJp
bnRlciwgUHJpbnQoVHlwZWRFcTxjaGFyPignYScpKSk7ICAgLy8gdm9pZCBQcmludChjaGFyKTsK
LQotICBwcmludGVyLlByaW50KDMpOwotICBwcmludGVyLlByaW50KDYpOwotICBwcmludGVyLlBy
aW50KCdhJyk7Ci19Ci1gYGAKLQotIyMgUGVyZm9ybWluZyBEaWZmZXJlbnQgQWN0aW9ucyBCYXNl
ZCBvbiB0aGUgQXJndW1lbnRzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIHRo
ZSBfbGFzdF8gbWF0Y2hpbmcgZXhwZWN0YXRpb24gdGhhdCdzCi1zdGlsbCBhY3RpdmUgd2lsbCBi
ZSBzZWxlY3RlZCAodGhpbmsgIm5ld2VyIG92ZXJyaWRlcyBvbGRlciIpLiBTbywgeW91Ci1jYW4g
bWFrZSBhIG1ldGhvZCBkbyBkaWZmZXJlbnQgdGhpbmdzIGRlcGVuZGluZyBvbiBpdHMgYXJndW1l
bnQgdmFsdWVzCi1saWtlIHRoaXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcg
Ojp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIC8vIFRoZSBk
ZWZhdWx0IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8pKQotICAgICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybignYicpKTsKLQotICAvLyBUaGUgbW9yZSBzcGVjaWZpYyBjYXNlLgot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhMdCg1KSkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKCdhJykpOwotYGBgCi0KLU5vdywgaWYgYGZvby5Eb1RoaXMoKWAgaXMgY2FsbGVkIHdp
dGggYSB2YWx1ZSBsZXNzIHRoYW4gNSwgYCdhJ2Agd2lsbAotYmUgcmV0dXJuZWQ7IG90aGVyd2lz
ZSBgJ2InYCB3aWxsIGJlIHJldHVybmVkLgotCi0jIyBNYXRjaGluZyBNdWx0aXBsZSBBcmd1bWVu
dHMgYXMgYSBXaG9sZSAjIwotCi1Tb21ldGltZXMgaXQncyBub3QgZW5vdWdoIHRvIG1hdGNoIHRo
ZSBhcmd1bWVudHMgaW5kaXZpZHVhbGx5LiBGb3IKLWV4YW1wbGUsIHdlIG1heSB3YW50IHRvIHNh
eSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGxlc3MgdGhhbgotdGhlIHNlY29uZCBh
cmd1bWVudC4gVGhlIGBXaXRoKClgIGNsYXVzZSBhbGxvd3MgdXMgdG8gbWF0Y2gKLWFsbCBhcmd1
bWVudHMgb2YgYSBtb2NrIGZ1bmN0aW9uIGFzIGEgd2hvbGUuIEZvciBleGFtcGxlLAotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci11c2luZyA6OnRlc3Rp
bmc6Ok5lOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgSW5SYW5nZShOZSgwKSwgXykpCi0gICAg
ICAuV2l0aChMdCgpKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGBJ
blJhbmdlKClgIG11c3Qgbm90IGJlIDAsIGFuZCBtdXN0IGJlCi1sZXNzIHRoYW4gdGhlIHNlY29u
ZCBhcmd1bWVudC4KLQotVGhlIGV4cHJlc3Npb24gaW5zaWRlIGBXaXRoKClgIG11c3QgYmUgYSBt
YXRjaGVyIG9mIHR5cGUKLWBNYXRjaGVyPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCAuLi4sIEFuPiA+
YCwgd2hlcmUgYEExYCwgLi4uLCBgQW5gIGFyZSB0aGUKLXR5cGVzIG9mIHRoZSBmdW5jdGlvbiBh
cmd1bWVudHMuCi0KLVlvdSBjYW4gYWxzbyB3cml0ZSBgQWxsQXJncyhtKWAgaW5zdGVhZCBvZiBg
bWAgaW5zaWRlIGAuV2l0aCgpYC4gVGhlCi10d28gZm9ybXMgYXJlIGVxdWl2YWxlbnQsIGJ1dCBg
LldpdGgoQWxsQXJncyhMdCgpKSlgIGlzIG1vcmUgcmVhZGFibGUKLXRoYW4gYC5XaXRoKEx0KCkp
YC4KLQotWW91IGNhbiB1c2UgYEFyZ3M8azEsIC4uLiwga24+KG0pYCB0byBtYXRjaCB0aGUgYG5g
IHNlbGVjdGVkIGFyZ3VtZW50cwotKGFzIGEgdHVwbGUpIGFnYWluc3QgYG1gLiBGb3IgZXhhbXBs
ZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFsbE9mOwot
dXNpbmcgOjp0ZXN0aW5nOjpBcmdzOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLS4uLgotICBFWFBF
Q1RfQ0FMTChmb28sIEJsYWgoXywgXywgXykpCi0gICAgICAuV2l0aChBbGxPZihBcmdzPDAsIDE+
KEx0KCkpLCBBcmdzPDEsIDI+KEx0KCkpKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGBCbGFoKClgIHdp
bGwgYmUgY2FsbGVkIHdpdGggYXJndW1lbnRzIGB4YCwgYHlgLCBhbmQgYHpgIHdoZXJlCi1geCA8
IHkgPCB6YC4KLQotQXMgYSBjb252ZW5pZW5jZSBhbmQgZXhhbXBsZSwgR29vZ2xlIE1vY2sgcHJv
dmlkZXMgc29tZSBtYXRjaGVycyBmb3IKLTItdHVwbGVzLCBpbmNsdWRpbmcgdGhlIGBMdCgpYCBt
YXRjaGVyIGFib3ZlLiBTZWUgdGhlIFtDaGVhdFNoZWV0XShDaGVhdFNoZWV0Lm1kKSBmb3IKLXRo
ZSBjb21wbGV0ZSBsaXN0LgotCi1Ob3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcGFzcyB0aGUgYXJn
dW1lbnRzIHRvIGEgcHJlZGljYXRlIG9mIHlvdXIgb3duCi0oZS5nLiBgLldpdGgoQXJnczwwLCAx
PihUcnVseSgmTXlQcmVkaWNhdGUpKSlgKSwgdGhhdCBwcmVkaWNhdGUgTVVTVCBiZQotd3JpdHRl
biB0byB0YWtlIGEgYDo6dGVzdGluZzo6dHVwbGVgIGFzIGl0cyBhcmd1bWVudDsgR29vZ2xlIE1v
Y2sgd2lsbCBwYXNzIHRoZSBgbmAgc2VsZWN0ZWQgYXJndW1lbnRzIGFzIF9vbmVfIHNpbmdsZSB0
dXBsZSB0byB0aGUgcHJlZGljYXRlLgotCi0jIyBVc2luZyBNYXRjaGVycyBhcyBQcmVkaWNhdGVz
ICMjCi0KLUhhdmUgeW91IG5vdGljZWQgdGhhdCBhIG1hdGNoZXIgaXMganVzdCBhIGZhbmN5IHBy
ZWRpY2F0ZSB0aGF0IGFsc28KLWtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGY/IE1hbnkgZXhp
c3RpbmcgYWxnb3JpdGhtcyB0YWtlIHByZWRpY2F0ZXMKLWFzIGFyZ3VtZW50cyAoZS5nLiB0aG9z
ZSBkZWZpbmVkIGluIFNUTCdzIGA8YWxnb3JpdGhtPmAgaGVhZGVyKSwgYW5kCi1pdCB3b3VsZCBi
ZSBhIHNoYW1lIGlmIEdvb2dsZSBNb2NrIG1hdGNoZXJzIGFyZSBub3QgYWxsb3dlZCB0bwotcGFy
dGljaXBhdGUuCi0KLUx1Y2tpbHksIHlvdSBjYW4gdXNlIGEgbWF0Y2hlciB3aGVyZSBhIHVuYXJ5
IHByZWRpY2F0ZSBmdW5jdG9yIGlzCi1leHBlY3RlZCBieSB3cmFwcGluZyBpdCBpbnNpZGUgdGhl
IGBNYXRjaGVzKClgIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi0jaW5jbHVkZSA8YWxn
b3JpdGhtPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotc3RkOjp2ZWN0b3I8aW50PiB2OwotLi4uCi0v
LyBIb3cgbWFueSBlbGVtZW50cyBpbiB2IGFyZSA+PSAxMD8KLWNvbnN0IGludCBjb3VudCA9IGNv
dW50X2lmKHYuYmVnaW4oKSwgdi5lbmQoKSwgTWF0Y2hlcyhHZSgxMCkpKTsKLWBgYAotCi1TaW5j
ZSB5b3UgY2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBzaW1wbGVyIG9uZXMgZWFzaWx5
IHVzaW5nCi1Hb29nbGUgTW9jaywgdGhpcyBnaXZlcyB5b3UgYSB3YXkgdG8gY29udmVuaWVudGx5
IGNvbnN0cnVjdCBjb21wb3NpdGUKLXByZWRpY2F0ZXMgKGRvaW5nIHRoZSBzYW1lIHVzaW5nIFNU
TCdzIGA8ZnVuY3Rpb25hbD5gIGhlYWRlciBpcyBqdXN0Ci1wYWluZnVsKS4gRm9yIGV4YW1wbGUs
IGhlcmUncyBhIHByZWRpY2F0ZSB0aGF0J3Mgc2F0aXNmaWVkIGJ5IGFueQotbnVtYmVyIHRoYXQg
aXMgPj0gMCwgPD0gMTAwLCBhbmQgIT0gNTA6Ci0KLWBgYAotTWF0Y2hlcyhBbGxPZihHZSgwKSwg
TGUoMTAwKSwgTmUoNTApKSkKLWBgYAotCi0jIyBVc2luZyBNYXRjaGVycyBpbiBHb29nbGUgVGVz
dCBBc3NlcnRpb25zICMjCi0KLVNpbmNlIG1hdGNoZXJzIGFyZSBiYXNpY2FsbHkgcHJlZGljYXRl
cyB0aGF0IGFsc28ga25vdyBob3cgdG8gZGVzY3JpYmUKLXRoZW1zZWx2ZXMsIHRoZXJlIGlzIGEg
d2F5IHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZW0gaW4KLVtHb29nbGUgVGVzdF0oLi4vLi4vZ29v
Z2xldGVzdC8pIGFzc2VydGlvbnMuIEl0J3MKLWNhbGxlZCBgQVNTRVJUX1RIQVRgIGFuZCBgRVhQ
RUNUX1RIQVRgOgotCi1gYGAKLSAgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpOyAgLy8gQXNz
ZXJ0cyB0aGF0IHZhbHVlIG1hdGNoZXMgbWF0Y2hlci4KLSAgRVhQRUNUX1RIQVQodmFsdWUsIG1h
dGNoZXIpOyAgLy8gVGhlIG5vbi1mYXRhbCB2ZXJzaW9uLgotYGBgCi0KLUZvciBleGFtcGxlLCBp
biBhIEdvb2dsZSBUZXN0IHRlc3QgeW91IGNhbiB3cml0ZToKLQotYGBgCi0jaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIKLQotdXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6
R2U7Ci11c2luZyA6OnRlc3Rpbmc6OkxlOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVzUmVnZXg7
Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXJ0c1dpdGg7Ci0uLi4KLQotICBFWFBFQ1RfVEhBVChGb28o
KSwgU3RhcnRzV2l0aCgiSGVsbG8iKSk7Ci0gIEVYUEVDVF9USEFUKEJhcigpLCBNYXRjaGVzUmVn
ZXgoIkxpbmUgXFxkKyIpKTsKLSAgQVNTRVJUX1RIQVQoQmF6KCksIEFsbE9mKEdlKDUpLCBMZSgx
MCkpKTsKLWBgYAotCi13aGljaCAoYXMgeW91IGNhbiBwcm9iYWJseSBndWVzcykgZXhlY3V0ZXMg
YEZvbygpYCwgYEJhcigpYCwgYW5kCi1gQmF6KClgLCBhbmQgdmVyaWZpZXMgdGhhdDoKLQotICAq
IGBGb28oKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoIGAiSGVsbG8iYC4KLSAg
KiBgQmFyKClgIHJldHVybnMgYSBzdHJpbmcgdGhhdCBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lv
biBgIkxpbmUgXFxkKyJgLgotICAqIGBCYXooKWAgcmV0dXJucyBhIG51bWJlciBpbiB0aGUgcmFu
Z2UgWzUsIDEwXS4KLQotVGhlIG5pY2UgdGhpbmcgYWJvdXQgdGhlc2UgbWFjcm9zIGlzIHRoYXQg
X3RoZXkgcmVhZCBsaWtlCi1FbmdsaXNoXy4gVGhleSBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNz
YWdlcyB0b28uIEZvciBleGFtcGxlLCBpZiB0aGUKLWZpcnN0IGBFWFBFQ1RfVEhBVCgpYCBhYm92
ZSBmYWlscywgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi1WYWx1
ZSBvZjogRm9vKCkKLSAgQWN0dWFsOiAiSGksIHdvcmxkISIKLUV4cGVjdGVkOiBzdGFydHMgd2l0
aCAiSGVsbG8iCi1gYGAKLQotKipDcmVkaXQ6KiogVGhlIGlkZWEgb2YgYChBU1NFUlR8RVhQRUNU
KV9USEFUYCB3YXMgc3RvbGVuIGZyb20gdGhlCi1bSGFtY3Jlc3RdKGh0dHBzOi8vZ2l0aHViLmNv
bS9oYW1jcmVzdC8pIHByb2plY3QsIHdoaWNoIGFkZHMKLWBhc3NlcnRUaGF0KClgIHRvIEpVbml0
LgotCi0jIyBVc2luZyBQcmVkaWNhdGVzIGFzIE1hdGNoZXJzICMjCi0KLUdvb2dsZSBNb2NrIHBy
b3ZpZGVzIGEgYnVpbHQtaW4gc2V0IG9mIG1hdGNoZXJzLiBJbiBjYXNlIHlvdSBmaW5kIHRoZW0K
LWxhY2tpbmcsIHlvdSBjYW4gdXNlIGFuIGFyYml0cmF5IHVuYXJ5IHByZWRpY2F0ZSBmdW5jdGlv
biBvciBmdW5jdG9yCi1hcyBhIG1hdGNoZXIgLSBhcyBsb25nIGFzIHRoZSBwcmVkaWNhdGUgYWNj
ZXB0cyBhIHZhbHVlIG9mIHRoZSB0eXBlCi15b3Ugd2FudC4gWW91IGRvIHRoaXMgYnkgd3JhcHBp
bmcgdGhlIHByZWRpY2F0ZSBpbnNpZGUgdGhlIGBUcnVseSgpYAotZnVuY3Rpb24sIGZvciBleGFt
cGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6VHJ1bHk7Ci0KLWludCBJc0V2ZW4oaW50IG4p
IHsgcmV0dXJuIChuICUgMikgPT0gMCA/IDEgOiAwOyB9Ci0uLi4KLQotICAvLyBCYXIoKSBtdXN0
IGJlIGNhbGxlZCB3aXRoIGFuIGV2ZW4gbnVtYmVyLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihU
cnVseShJc0V2ZW4pKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24g
LyBmdW5jdG9yIGRvZXNuJ3QgaGF2ZSB0byByZXR1cm4KLWBib29sYC4gSXQgd29ya3MgYXMgbG9u
ZyBhcyB0aGUgcmV0dXJuIHZhbHVlIGNhbiBiZSB1c2VkIGFzIHRoZQotY29uZGl0aW9uIGluIHN0
YXRlbWVudCBgaWYgKGNvbmRpdGlvbikgLi4uYC4KLQotIyMgTWF0Y2hpbmcgQXJndW1lbnRzIHRo
YXQgQXJlIE5vdCBDb3B5YWJsZSAjIwotCi1XaGVuIHlvdSBkbyBhbiBgRVhQRUNUX0NBTEwobW9j
a19vYmosIEZvbyhiYXIpKWAsIEdvb2dsZSBNb2NrIHNhdmVzCi1hd2F5IGEgY29weSBvZiBgYmFy
YC4gV2hlbiBgRm9vKClgIGlzIGNhbGxlZCBsYXRlciwgR29vZ2xlIE1vY2sKLWNvbXBhcmVzIHRo
ZSBhcmd1bWVudCB0byBgRm9vKClgIHdpdGggdGhlIHNhdmVkIGNvcHkgb2YgYGJhcmAuIFRoaXMK
LXdheSwgeW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgYGJhcmAgYmVpbmcgbW9kaWZpZWQg
b3IgZGVzdHJveWVkCi1hZnRlciB0aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBUaGUg
c2FtZSBpcyB0cnVlIHdoZW4geW91IHVzZQotbWF0Y2hlcnMgbGlrZSBgRXEoYmFyKWAsIGBMZShi
YXIpYCwgYW5kIHNvIG9uLgotCi1CdXQgd2hhdCBpZiBgYmFyYCBjYW5ub3QgYmUgY29waWVkIChp
LmUuIGhhcyBubyBjb3B5IGNvbnN0cnVjdG9yKT8gWW91Ci1jb3VsZCBkZWZpbmUgeW91ciBvd24g
bWF0Y2hlciBmdW5jdGlvbiBhbmQgdXNlIGl0IHdpdGggYFRydWx5KClgLCBhcwotdGhlIHByZXZp
b3VzIGNvdXBsZSBvZiByZWNpcGVzIGhhdmUgc2hvd24uIE9yLCB5b3UgbWF5IGJlIGFibGUgdG8g
Z2V0Ci1hd2F5IGZyb20gaXQgaWYgeW91IGNhbiBndWFyYW50ZWUgdGhhdCBgYmFyYCB3b24ndCBi
ZSBjaGFuZ2VkIGFmdGVyCi10aGUgYEVYUEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLiBKdXN0IHRl
bGwgR29vZ2xlIE1vY2sgdGhhdCBpdCBzaG91bGQKLXNhdmUgYSByZWZlcmVuY2UgdG8gYGJhcmAs
IGluc3RlYWQgb2YgYSBjb3B5IG9mIGl0LiBIZXJlJ3MgaG93OgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6RXE7Ci11c2luZyA6OnRlc3Rpbmc6OkJ5UmVmOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsK
LS4uLgotICAvLyBFeHBlY3RzIHRoYXQgRm9vKCkncyBhcmd1bWVudCA9PSBiYXIuCi0gIEVYUEVD
VF9DQUxMKG1vY2tfb2JqLCBGb28oRXEoQnlSZWYoYmFyKSkpKTsKLQotICAvLyBFeHBlY3RzIHRo
YXQgRm9vKCkncyBhcmd1bWVudCA8IGJhci4KLSAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhM
dChCeVJlZihiYXIpKSkpOwotYGBgCi0KLVJlbWVtYmVyOiBpZiB5b3UgZG8gdGhpcywgZG9uJ3Qg
Y2hhbmdlIGBiYXJgIGFmdGVyIHRoZQotYEVYUEVDVF9DQUxMKClgLCBvciB0aGUgcmVzdWx0IGlz
IHVuZGVmaW5lZC4KLQotIyMgVmFsaWRhdGluZyBhIE1lbWJlciBvZiBhbiBPYmplY3QgIyMKLQot
T2Z0ZW4gYSBtb2NrIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIHRvIG9iamVjdCBhcyBhbiBh
cmd1bWVudC4gV2hlbgotbWF0Y2hpbmcgdGhlIGFyZ3VtZW50LCB5b3UgbWF5IG5vdCB3YW50IHRv
IGNvbXBhcmUgdGhlIGVudGlyZSBvYmplY3QKLWFnYWluc3QgYSBmaXhlZCBvYmplY3QsIGFzIHRo
YXQgbWF5IGJlIG92ZXItc3BlY2lmaWNhdGlvbi4gSW5zdGVhZCwKLXlvdSBtYXkgbmVlZCB0byB2
YWxpZGF0ZSBhIGNlcnRhaW4gbWVtYmVyIHZhcmlhYmxlIG9yIHRoZSByZXN1bHQgb2YgYQotY2Vy
dGFpbiBnZXR0ZXIgbWV0aG9kIG9mIHRoZSBvYmplY3QuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIGBG
aWVsZCgpYAotYW5kIGBQcm9wZXJ0eSgpYC4gTW9yZSBzcGVjaWZpY2FsbHksCi0KLWBgYAotRmll
bGQoJkZvbzo6YmFyLCBtKQotYGBgCi0KLWlzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBgRm9v
YCBvYmplY3Qgd2hvc2UgYGJhcmAgbWVtYmVyIHZhcmlhYmxlCi1zYXRpc2ZpZXMgbWF0Y2hlciBg
bWAuCi0KLWBgYAotUHJvcGVydHkoJkZvbzo6YmF6LCBtKQotYGBgCi0KLWlzIGEgbWF0Y2hlciB0
aGF0IG1hdGNoZXMgYSBgRm9vYCBvYmplY3Qgd2hvc2UgYGJheigpYCBtZXRob2QgcmV0dXJucwot
YSB2YWx1ZSB0aGF0IHNhdGlzZmllcyBtYXRjaGVyIGBtYC4KLQotRm9yIGV4YW1wbGU6Ci0KLT4g
fCBgRmllbGQoJkZvbzo6bnVtYmVyLCBHZSgzKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubnVt
YmVyID49IDNgLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLT4gfCBgUHJvcGVydHkoJkZvbzo6bmFtZSwgU3Rh
cnRzV2l0aCgiSm9obiAiKSlgIHwgTWF0Y2hlcyBgeGAgd2hlcmUgYHgubmFtZSgpYCBzdGFydHMg
d2l0aCBgIkpvaG4gImAuIHwKLQotTm90ZSB0aGF0IGluIGBQcm9wZXJ0eSgmRm9vOjpiYXosIC4u
LilgLCBtZXRob2QgYGJheigpYCBtdXN0IHRha2Ugbm8KLWFyZ3VtZW50IGFuZCBiZSBkZWNsYXJl
ZCBhcyBgY29uc3RgLgotCi1CVFcsIGBGaWVsZCgpYCBhbmQgYFByb3BlcnR5KClgIGNhbiBhbHNv
IG1hdGNoIHBsYWluIHBvaW50ZXJzIHRvCi1vYmplY3RzLiBGb3IgaW5zdGFuY2UsCi0KLWBgYAot
RmllbGQoJkZvbzo6bnVtYmVyLCBHZSgzKSkKLWBgYAotCi1tYXRjaGVzIGEgcGxhaW4gcG9pbnRl
ciBgcGAgd2hlcmUgYHAtPm51bWJlciA+PSAzYC4gSWYgYHBgIGlzIGBOVUxMYCwKLXRoZSBtYXRj
aCB3aWxsIGFsd2F5cyBmYWlsIHJlZ2FyZGxlc3Mgb2YgdGhlIGlubmVyIG1hdGNoZXIuCi0KLVdo
YXQgaWYgeW91IHdhbnQgdG8gdmFsaWRhdGUgbW9yZSB0aGFuIG9uZSBtZW1iZXJzIGF0IHRoZSBz
YW1lIHRpbWU/Ci1SZW1lbWJlciB0aGF0IHRoZXJlIGlzIGBBbGxPZigpYC4KLQotIyMgVmFsaWRh
dGluZyB0aGUgVmFsdWUgUG9pbnRlZCB0byBieSBhIFBvaW50ZXIgQXJndW1lbnQgIyMKLQotQysr
IGZ1bmN0aW9ucyBvZnRlbiB0YWtlIHBvaW50ZXJzIGFzIGFyZ3VtZW50cy4gWW91IGNhbiB1c2Ug
bWF0Y2hlcnMKLWxpa2UgYElzTnVsbCgpYCwgYE5vdE51bGwoKWAsIGFuZCBvdGhlciBjb21wYXJp
c29uIG1hdGNoZXJzIHRvIG1hdGNoIGEKLXBvaW50ZXIsIGJ1dCB3aGF0IGlmIHlvdSB3YW50IHRv
IG1ha2Ugc3VyZSB0aGUgdmFsdWUgX3BvaW50ZWQgdG9fIGJ5Ci10aGUgcG9pbnRlciwgaW5zdGVh
ZCBvZiB0aGUgcG9pbnRlciBpdHNlbGYsIGhhcyBhIGNlcnRhaW4gcHJvcGVydHk/Ci1XZWxsLCB5
b3UgY2FuIHVzZSB0aGUgYFBvaW50ZWUobSlgIG1hdGNoZXIuCi0KLWBQb2ludGVlKG0pYCBtYXRj
aGVzIGEgcG9pbnRlciBpZmYgYG1gIG1hdGNoZXMgdGhlIHZhbHVlIHRoZSBwb2ludGVyCi1wb2lu
dHMgdG8uIEZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6R2U7Ci11c2luZyA6
OnRlc3Rpbmc6OlBvaW50ZWU7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoUG9pbnRlZShH
ZSgzKSkpKTsKLWBgYAotCi1leHBlY3RzIGBmb28uQmFyKClgIHRvIGJlIGNhbGxlZCB3aXRoIGEg
cG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHZhbHVlCi1ncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
My4KLQotT25lIG5pY2UgdGhpbmcgYWJvdXQgYFBvaW50ZWUoKWAgaXMgdGhhdCBpdCB0cmVhdHMg
YSBgTlVMTGAgcG9pbnRlciBhcwotYSBtYXRjaCBmYWlsdXJlLCBzbyB5b3UgY2FuIHdyaXRlIGBQ
b2ludGVlKG0pYCBpbnN0ZWFkIG9mCi0KLWBgYAotICBBbGxPZihOb3ROdWxsKCksIFBvaW50ZWUo
bSkpCi1gYGAKLQotd2l0aG91dCB3b3JyeWluZyB0aGF0IGEgYE5VTExgIHBvaW50ZXIgd2lsbCBj
cmFzaCB5b3VyIHRlc3QuCi0KLUFsc28sIGRpZCB3ZSB0ZWxsIHlvdSB0aGF0IGBQb2ludGVlKClg
IHdvcmtzIHdpdGggYm90aCByYXcgcG9pbnRlcnMKLSoqYW5kKiogc21hcnQgcG9pbnRlcnMgKGBs
aW5rZWRfcHRyYCwgYHNoYXJlZF9wdHJgLCBgc2NvcGVkX3B0cmAsIGFuZAotZXRjKT8KLQotV2hh
dCBpZiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gcG9pbnRlcj8gWW91IGd1ZXNzZWQgaXQgLSB5b3Ug
Y2FuIHVzZQotbmVzdGVkIGBQb2ludGVlKClgIHRvIHByb2JlIGRlZXBlciBpbnNpZGUgdGhlIHZh
bHVlLiBGb3IgZXhhbXBsZSwKLWBQb2ludGVlKFBvaW50ZWUoTHQoMykpKWAgbWF0Y2hlcyBhIHBv
aW50ZXIgdGhhdCBwb2ludHMgdG8gYSBwb2ludGVyCi10aGF0IHBvaW50cyB0byBhIG51bWJlciBs
ZXNzIHRoYW4gMyAod2hhdCBhIG1vdXRoZnVsLi4uKS4KLQotIyMgVGVzdGluZyBhIENlcnRhaW4g
UHJvcGVydHkgb2YgYW4gT2JqZWN0ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBzcGVjaWZ5
IHRoYXQgYW4gb2JqZWN0IGFyZ3VtZW50IGhhcyBhIGNlcnRhaW4KLXByb3BlcnR5LCBidXQgdGhl
cmUgaXMgbm8gZXhpc3RpbmcgbWF0Y2hlciB0aGF0IGRvZXMgdGhpcy4gSWYgeW91IHdhbnQKLWdv
b2QgZXJyb3IgbWVzc2FnZXMsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Y2hlci4gSWYgeW91IHdh
bnQgdG8gZG8gaXQKLXF1aWNrIGFuZCBkaXJ0eSwgeW91IGNvdWxkIGdldCBhd2F5IHdpdGggd3Jp
dGluZyBhbiBvcmRpbmFyeSBmdW5jdGlvbi4KLQotTGV0J3Mgc2F5IHlvdSBoYXZlIGEgbW9jayBm
dW5jdGlvbiB0aGF0IHRha2VzIGFuIG9iamVjdCBvZiB0eXBlIGBGb29gLAotd2hpY2ggaGFzIGFu
IGBpbnQgYmFyKClgIG1ldGhvZCBhbmQgYW4gYGludCBiYXooKWAgbWV0aG9kLCBhbmQgeW91Ci13
YW50IHRvIGNvbnN0cmFpbiB0aGF0IHRoZSBhcmd1bWVudCdzIGBiYXIoKWAgdmFsdWUgcGx1cyBp
dHMgYGJheigpYAotdmFsdWUgaXMgYSBnaXZlbiBudW1iZXIuIEhlcmUncyBob3cgeW91IGNhbiBk
ZWZpbmUgYSBtYXRjaGVyIHRvIGRvIGl0OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hl
ckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLQotY2xh
c3MgQmFyUGx1c0JhekVxTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGNvbnN0IEZv
byY+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEJhclBsdXNCYXpFcU1hdGNoZXIoaW50IGV4cGVj
dGVkX3N1bSkKLSAgICAgIDogZXhwZWN0ZWRfc3VtXyhleHBlY3RlZF9zdW0pIHt9Ci0KLSAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBGb28mIGZvbywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qgewot
ICAgIHJldHVybiAoZm9vLmJhcigpICsgZm9vLmJheigpKSA9PSBleHBlY3RlZF9zdW1fOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7
Ci0gICAgKm9zIDw8ICJiYXIoKSArIGJheigpIGVxdWFscyAiIDw8IGV4cGVjdGVkX3N1bV87Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgewotICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBkb2VzIG5vdCBlcXVhbCAiIDw8
IGV4cGVjdGVkX3N1bV87Ci0gIH0KLSBwcml2YXRlOgotICBjb25zdCBpbnQgZXhwZWN0ZWRfc3Vt
XzsKLX07Ci0KLWlubGluZSBNYXRjaGVyPGNvbnN0IEZvbyY+IEJhclBsdXNCYXpFcShpbnQgZXhw
ZWN0ZWRfc3VtKSB7Ci0gIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgQmFyUGx1c0JhekVxTWF0Y2hl
cihleHBlY3RlZF9zdW0pKTsKLX0KLQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoLi4uLCBEb1RoaXMo
QmFyUGx1c0JhekVxKDUpKSkuLi47Ci1gYGAKLQotIyMgTWF0Y2hpbmcgQ29udGFpbmVycyAjIwot
Ci1Tb21ldGltZXMgYW4gU1RMIGNvbnRhaW5lciAoZS5nLiBsaXN0LCB2ZWN0b3IsIG1hcCwgLi4u
KSBpcyBwYXNzZWQgdG8KLWEgbW9jayBmdW5jdGlvbiBhbmQgeW91IG1heSB3YW50IHRvIHZhbGlk
YXRlIGl0LiBTaW5jZSBtb3N0IFNUTAotY29udGFpbmVycyBzdXBwb3J0IHRoZSBgPT1gIG9wZXJh
dG9yLCB5b3UgY2FuIHdyaXRlCi1gRXEoZXhwZWN0ZWRfY29udGFpbmVyKWAgb3Igc2ltcGx5IGBl
eHBlY3RlZF9jb250YWluZXJgIHRvIG1hdGNoIGEKLWNvbnRhaW5lciBleGFjdGx5LgotCi1Tb21l
dGltZXMsIHRob3VnaCwgeW91IG1heSB3YW50IHRvIGJlIG1vcmUgZmxleGlibGUgKGZvciBleGFt
cGxlLCB0aGUKLWZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBleGFjdCBtYXRjaCwgYnV0IHRoZSBz
ZWNvbmQgZWxlbWVudCBjYW4gYmUKLWFueSBwb3NpdGl2ZSBudW1iZXIsIGFuZCBzbyBvbikuIEFs
c28sIGNvbnRhaW5lcnMgdXNlZCBpbiB0ZXN0cyBvZnRlbgotaGF2ZSBhIHNtYWxsIG51bWJlciBv
ZiBlbGVtZW50cywgYW5kIGhhdmluZyB0byBkZWZpbmUgdGhlIGV4cGVjdGVkCi1jb250YWluZXIg
b3V0LW9mLWxpbmUgaXMgYSBiaXQgb2YgYSBoYXNzbGUuCi0KLVlvdSBjYW4gdXNlIHRoZSBgRWxl
bWVudHNBcmUoKWAgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4KLXN1Y2gg
Y2FzZXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpFbGVt
ZW50c0FyZTsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci0uLi4KLQotICBNT0NLX01FVEhPRDEoRm9v
LCB2b2lkKGNvbnN0IHZlY3RvcjxpbnQ+JiBudW1iZXJzKSk7Ci0uLi4KLQotICBFWFBFQ1RfQ0FM
TChtb2NrLCBGb28oRWxlbWVudHNBcmUoMSwgR3QoMCksIF8sIDUpKSk7Ci1gYGAKLQotVGhlIGFi
b3ZlIG1hdGNoZXIgc2F5cyB0aGF0IHRoZSBjb250YWluZXIgbXVzdCBoYXZlIDQgZWxlbWVudHMs
IHdoaWNoCi1tdXN0IGJlIDEsIGdyZWF0ZXIgdGhhbiAwLCBhbnl0aGluZywgYW5kIDUgcmVzcGVj
dGl2ZWx5LgotCi1JZiB5b3UgaW5zdGVhZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZTsKLS4uLgotCi0gIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQoY29uc3QgdmVjdG9yPGlu
dD4mIG51bWJlcnMpKTsKLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhVbm9yZGVyZWRF
bGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKLWBgYAotCi1JdCBtZWFucyB0aGF0IHRoZSBj
b250YWluZXIgbXVzdCBoYXZlIDQgZWxlbWVudHMsIHdoaWNoIHVuZGVyIHNvbWUKLXBlcm11dGF0
aW9uIG11c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZl
bHkuCi0KLWBFbGVtZW50c0FyZSgpYCBhbmQgYFVub3JkZXJlZEVsZW1lbnRzQXJlKClgIGFyZSBv
dmVybG9hZGVkIHRvIHRha2UgMAotdG8gMTAgYXJndW1lbnRzLiBJZiBtb3JlIGFyZSBuZWVkZWQs
IHlvdSBjYW4gcGxhY2UgdGhlbSBpbiBhIEMtc3R5bGUKLWFycmF5IGFuZCB1c2UgYEVsZW1lbnRz
QXJlQXJyYXkoKWAgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKWAKLWluc3RlYWQ6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwotLi4uCi0KLSAgLy8gRWxl
bWVudHNBcmVBcnJheSBhY2NlcHRzIGFuIGFycmF5IG9mIGVsZW1lbnQgdmFsdWVzLgotICBjb25z
dCBpbnQgZXhwZWN0ZWRfdmVjdG9yMVtdID0geyAxLCA1LCAyLCA0LCAuLi4gfTsKLSAgRVhQRUNU
X0NBTEwobW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMSkpKTsKLQot
ICAvLyBPciwgYW4gYXJyYXkgb2YgZWxlbWVudCBtYXRjaGVycy4KLSAgTWF0Y2hlcjxpbnQ+IGV4
cGVjdGVkX3ZlY3RvcjIgPSB7IDEsIEd0KDIpLCBfLCAzLCAuLi4gfTsKLSAgRVhQRUNUX0NBTEwo
bW9jaywgRm9vKEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMikpKTsKLWBgYAotCi1J
biBjYXNlIHRoZSBhcnJheSBuZWVkcyB0byBiZSBkeW5hbWljYWxseSBjcmVhdGVkIChhbmQgdGhl
cmVmb3JlIHRoZQotYXJyYXkgc2l6ZSBjYW5ub3QgYmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVy
KSwgeW91IGNhbiBnaXZlCi1gRWxlbWVudHNBcmVBcnJheSgpYCBhbiBhZGRpdGlvbmFsIGFyZ3Vt
ZW50IHRvIHNwZWNpZnkgdGhlIGFycmF5IHNpemU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpF
bGVtZW50c0FyZUFycmF5OwotLi4uCi0gIGludCogY29uc3QgZXhwZWN0ZWRfdmVjdG9yMyA9IG5l
dyBpbnRbY291bnRdOwotICAuLi4gZmlsbCBleHBlY3RlZF92ZWN0b3IzIHdpdGggdmFsdWVzIC4u
LgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0
b3IzLCBjb3VudCkpKTsKLWBgYAotCi0qKlRpcHM6KioKLQotICAqIGBFbGVtZW50c0FyZSooKWAg
Y2FuIGJlIHVzZWQgdG8gbWF0Y2ggX2FueV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0aGUg
U1RMIGl0ZXJhdG9yIHBhdHRlcm4gKGkuZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0eXBl
IGFuZCBzdXBwb3J0cyBgYmVnaW4oKS9lbmQoKWApLCBub3QganVzdCB0aGUgb25lcyBkZWZpbmVk
IGluIFNUTC4gSXQgd2lsbCBldmVuIHdvcmsgd2l0aCBjb250YWluZXIgdHlwZXMgeWV0IHRvIGJl
IHdyaXR0ZW4gLSBhcyBsb25nIGFzIHRoZXkgZm9sbG93cyB0aGUgYWJvdmUgcGF0dGVybi4KLSAg
KiBZb3UgY2FuIHVzZSBuZXN0ZWQgYEVsZW1lbnRzQXJlKigpYCB0byBtYXRjaCBuZXN0ZWQgKG11
bHRpLWRpbWVuc2lvbmFsKSBjb250YWluZXJzLgotICAqIElmIHRoZSBjb250YWluZXIgaXMgcGFz
c2VkIGJ5IHBvaW50ZXIgaW5zdGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBvaW50
ZWUoRWxlbWVudHNBcmUqKC4uLikpYC4KLSAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21hdHRl
cnNfIGZvciBgRWxlbWVudHNBcmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGggY29u
dGFpbmVycyB3aG9zZSBlbGVtZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9tYXBg
KS4KLQotIyMgU2hhcmluZyBNYXRjaGVycyAjIwotCi1VbmRlciB0aGUgaG9vZCwgYSBHb29nbGUg
TW9jayBtYXRjaGVyIG9iamVjdCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KLWEgcmVmLWNvdW50
ZWQgaW1wbGVtZW50YXRpb24gb2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQgYW5k
Ci12ZXJ5IGVmZmljaWVudCwgYXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4gdGhl
IGxhc3QgbWF0Y2hlcgotdGhhdCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3Qg
ZGllcywgdGhlIGltcGxlbWVudGF0aW9uCi1vYmplY3Qgd2lsbCBiZSBkZWxldGVkLgotCi1UaGVy
ZWZvcmUsIGlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQgdG8g
dXNlIGFnYWluCi1hbmQgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZlcnl0
aW1lLiBKdXN0IGFzc2lnbiBpdCB0byBhCi1tYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2
YXJpYWJsZSByZXBlYXRlZGx5ISBGb3IgZXhhbXBsZSwKLQotYGBgCi0gIE1hdGNoZXI8aW50PiBp
bl9yYW5nZSA9IEFsbE9mKEd0KDUpLCBMZSgxMCkpOwotICAuLi4gdXNlIGluX3JhbmdlIGFzIGEg
bWF0Y2hlciBpbiBtdWx0aXBsZSBFWFBFQ1RfQ0FMTHMgLi4uCi1gYGAKLQotIyBTZXR0aW5nIEV4
cGVjdGF0aW9ucyAjCi0KLSMjIEtub3dpbmcgV2hlbiB0byBFeHBlY3QgIyMKLQotYE9OX0NBTExg
IGlzIGxpa2VseSB0aGUgc2luZ2xlIG1vc3QgdW5kZXItdXRpbGl6ZWQgY29uc3RydWN0IGluIEdv
b2dsZSBNb2NrLgotCi1UaGVyZSBhcmUgYmFzaWNhbGx5IHR3byBjb25zdHJ1Y3RzIGZvciBkZWZp
bmluZyB0aGUgYmVoYXZpb3Igb2YgYSBtb2NrIG9iamVjdDogYE9OX0NBTExgIGFuZCBgRVhQRUNU
X0NBTExgLiBUaGUgZGlmZmVyZW5jZT8gYE9OX0NBTExgIGRlZmluZXMgd2hhdCBoYXBwZW5zIHdo
ZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGJ1dCBfZG9lc24ndCBpbXBseSBhbnkgZXhwZWN0
YXRpb24gb24gdGhlIG1ldGhvZCBiZWluZyBjYWxsZWQuXyBgRVhQRUNUX0NBTExgIG5vdCBvbmx5
IGRlZmluZXMgdGhlIGJlaGF2aW9yLCBidXQgYWxzbyBzZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQg
X3RoZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLCBmb3Ig
dGhlIGdpdmVuIG51bWJlciBvZiB0aW1lc18gKGFuZCBfaW4gdGhlIGdpdmVuIG9yZGVyXyB3aGVu
IHlvdSBzcGVjaWZ5IHRoZSBvcmRlciB0b28pLgotCi1TaW5jZSBgRVhQRUNUX0NBTExgIGRvZXMg
bW9yZSwgaXNuJ3QgaXQgYmV0dGVyIHRoYW4gYE9OX0NBTExgPyBOb3QgcmVhbGx5LiBFdmVyeSBg
RVhQRUNUX0NBTExgIGFkZHMgYSBjb25zdHJhaW50IG9uIHRoZSBiZWhhdmlvciBvZiB0aGUgY29k
ZSB1bmRlciB0ZXN0LiBIYXZpbmcgbW9yZSBjb25zdHJhaW50cyB0aGFuIG5lY2Vzc2FyeSBpcyBf
YmFhYWRfIC0gZXZlbiB3b3JzZSB0aGFuIG5vdCBoYXZpbmcgZW5vdWdoIGNvbnN0cmFpbnRzLgot
Ci1UaGlzIG1heSBiZSBjb3VudGVyLWludHVpdGl2ZS4gSG93IGNvdWxkIHRlc3RzIHRoYXQgdmVy
aWZ5IG1vcmUgYmUgd29yc2UgdGhhbiB0ZXN0cyB0aGF0IHZlcmlmeSBsZXNzPyBJc24ndCB2ZXJp
ZmljYXRpb24gdGhlIHdob2xlIHBvaW50IG9mIHRlc3RzPwotCi1UaGUgYW5zd2VyLCBsaWVzIGlu
IF93aGF0XyBhIHRlc3Qgc2hvdWxkIHZlcmlmeS4gKipBIGdvb2QgdGVzdCB2ZXJpZmllcyB0aGUg
Y29udHJhY3Qgb2YgdGhlIGNvZGUuKiogSWYgYSB0ZXN0IG92ZXItc3BlY2lmaWVzLCBpdCBkb2Vz
bid0IGxlYXZlIGVub3VnaCBmcmVlZG9tIHRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gQXMgYSByZXN1
bHQsIGNoYW5naW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IGJyZWFraW5nIHRoZSBjb250
cmFjdCAoZS5nLiByZWZhY3RvcmluZyBhbmQgb3B0aW1pemF0aW9uKSwgd2hpY2ggc2hvdWxkIGJl
IHBlcmZlY3RseSBmaW5lIHRvIGRvLCBjYW4gYnJlYWsgc3VjaCB0ZXN0cy4gVGhlbiB5b3UgaGF2
ZSB0byBzcGVuZCB0aW1lIGZpeGluZyB0aGVtLCBvbmx5IHRvIHNlZSB0aGVtIGJyb2tlbiBhZ2Fp
biB0aGUgbmV4dCB0aW1lIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkLgotCi1LZWVwIGlu
IG1pbmQgdGhhdCBvbmUgZG9lc24ndCBoYXZlIHRvIHZlcmlmeSBtb3JlIHRoYW4gb25lIHByb3Bl
cnR5IGluIG9uZSB0ZXN0LiBJbiBmYWN0LCAqKml0J3MgYSBnb29kIHN0eWxlIHRvIHZlcmlmeSBv
bmx5IG9uZSB0aGluZyBpbiBvbmUgdGVzdC4qKiBJZiB5b3UgZG8gdGhhdCwgYSBidWcgd2lsbCBs
aWtlbHkgYnJlYWsgb25seSBvbmUgb3IgdHdvIHRlc3RzIGluc3RlYWQgb2YgZG96ZW5zICh3aGlj
aCBjYXNlIHdvdWxkIHlvdSByYXRoZXIgZGVidWc/KS4gSWYgeW91IGFyZSBhbHNvIGluIHRoZSBo
YWJpdCBvZiBnaXZpbmcgdGVzdHMgZGVzY3JpcHRpdmUgbmFtZXMgdGhhdCB0ZWxsIHdoYXQgdGhl
eSB2ZXJpZnksIHlvdSBjYW4gb2Z0ZW4gZWFzaWx5IGd1ZXNzIHdoYXQncyB3cm9uZyBqdXN0IGZy
b20gdGhlIHRlc3QgbG9nIGl0c2VsZi4KLQotU28gdXNlIGBPTl9DQUxMYCBieSBkZWZhdWx0LCBh
bmQgb25seSB1c2UgYEVYUEVDVF9DQUxMYCB3aGVuIHlvdSBhY3R1YWxseSBpbnRlbmQgdG8gdmVy
aWZ5IHRoYXQgdGhlIGNhbGwgaXMgbWFkZS4gRm9yIGV4YW1wbGUsIHlvdSBtYXkgaGF2ZSBhIGJ1
bmNoIG9mIGBPTl9DQUxMYHMgaW4geW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0IHRoZSBjb21tb24g
bW9jayBiZWhhdmlvciBzaGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoZSBzYW1lIGdyb3VwLCBhbmQg
d3JpdGUgKHNjYXJjZWx5KSBkaWZmZXJlbnQgYEVYUEVDVF9DQUxMYHMgaW4gZGlmZmVyZW50IGBU
RVNUX0ZgcyB0byB2ZXJpZnkgZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlIGNvZGUncyBiZWhhdmlv
ci4gQ29tcGFyZWQgd2l0aCB0aGUgc3R5bGUgd2hlcmUgZWFjaCBgVEVTVGAgaGFzIG1hbnkgYEVY
UEVDVF9DQUxMYHMsIHRoaXMgbGVhZHMgdG8gdGVzdHMgdGhhdCBhcmUgbW9yZSByZXNpbGllbnQg
dG8gaW1wbGVtZW50YXRpb25hbCBjaGFuZ2VzIChhbmQgdGh1cyBsZXNzIGxpa2VseSB0byByZXF1
aXJlIG1haW50ZW5hbmNlKSBhbmQgbWFrZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdHMgbW9yZSBv
YnZpb3VzIChzbyB0aGV5IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4gd2hlbiB5b3UgZG8gbmVlZCB0
byBtYWludGFpbiB0aGVtKS4KLQotSWYgeW91IGFyZSBib3RoZXJlZCBieSB0aGUgIlVuaW50ZXJl
c3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIiBtZXNzYWdlIHByaW50ZWQgd2hlbiBhIG1vY2sgbWV0
aG9kIHdpdGhvdXQgYW4gYEVYUEVDVF9DQUxMYCBpcyBjYWxsZWQsIHlvdSBtYXkgdXNlIGEgYE5p
Y2VNb2NrYCBpbnN0ZWFkIHRvIHN1cHByZXNzIGFsbCBzdWNoIG1lc3NhZ2VzIGZvciB0aGUgbW9j
ayBvYmplY3QsIG9yIHN1cHByZXNzIHRoZSBtZXNzYWdlIGZvciBzcGVjaWZpYyBtZXRob2RzIGJ5
IGFkZGluZyBgRVhQRUNUX0NBTEwoLi4uKS5UaW1lcyhBbnlOdW1iZXIoKSlgLiBETyBOT1Qgc3Vw
cHJlc3MgaXQgYnkgYmxpbmRseSBhZGRpbmcgYW4gYEVYUEVDVF9DQUxMKC4uLilgLCBvciB5b3Un
bGwgaGF2ZSBhIHRlc3QgdGhhdCdzIGEgcGFpbiB0byBtYWludGFpbi4KLQotIyMgSWdub3Jpbmcg
VW5pbnRlcmVzdGluZyBDYWxscyAjIwotCi1JZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGhv
dyBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwganVzdCBkb24ndAotc2F5IGFueXRoaW5nIGFib3V0
IGl0LiBJbiB0aGlzIGNhc2UsIGlmIHRoZSBtZXRob2QgaXMgZXZlciBjYWxsZWQsCi1Hb29nbGUg
TW9jayB3aWxsIHBlcmZvcm0gaXRzIGRlZmF1bHQgYWN0aW9uIHRvIGFsbG93IHRoZSB0ZXN0IHBy
b2dyYW0KLXRvIGNvbnRpbnVlLiBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSBkZWZhdWx0
IGFjdGlvbiB0YWtlbiBieQotR29vZ2xlIE1vY2ssIHlvdSBjYW4gb3ZlcnJpZGUgaXQgdXNpbmcg
YERlZmF1bHRWYWx1ZTxUPjo6U2V0KClgCi0oZGVzY3JpYmVkIGxhdGVyIGluIHRoaXMgZG9jdW1l
bnQpIG9yIGBPTl9DQUxMKClgLgotCi1QbGVhc2Ugbm90ZSB0aGF0IG9uY2UgeW91IGV4cHJlc3Nl
ZCBpbnRlcmVzdCBpbiBhIHBhcnRpY3VsYXIgbW9jawotbWV0aG9kICh2aWEgYEVYUEVDVF9DQUxM
KClgKSwgYWxsIGludm9jYXRpb25zIHRvIGl0IG11c3QgbWF0Y2ggc29tZQotZXhwZWN0YXRpb24u
IElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ1dCB0aGUgYXJndW1lbnRzIGRvbid0IG1hdGNo
Ci1hbnkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQot
IyMgRGlzYWxsb3dpbmcgVW5leHBlY3RlZCBDYWxscyAjIwotCi1JZiBhIG1vY2sgbWV0aG9kIHNo
b3VsZG4ndCBiZSBjYWxsZWQgYXQgYWxsLCBleHBsaWNpdGx5IHNheSBzbzoKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCi0gICAgICAu
VGltZXMoMCk7Ci1gYGAKLQotSWYgc29tZSBjYWxscyB0byB0aGUgbWV0aG9kIGFyZSBhbGxvd2Vk
LCBidXQgdGhlIHJlc3QgYXJlIG5vdCwganVzdAotbGlzdCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxz
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpH
dDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcig1KSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywg
QmFyKEd0KDEwKSkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotYGBgCi0KLUEgY2FsbCB0
byBgZm9vLkJhcigpYCB0aGF0IGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSBgRVhQRUNUX0NBTEwo
KWAKLXN0YXRlbWVudHMgd2lsbCBiZSBhbiBlcnJvci4KLQotIyMgVW5kZXJzdGFuZGluZyBVbmlu
dGVyZXN0aW5nIHZzIFVuZXhwZWN0ZWQgQ2FsbHMgIyMKLQotX1VuaW50ZXJlc3RpbmdfIGNhbGxz
IGFuZCBfdW5leHBlY3RlZF8gY2FsbHMgYXJlIGRpZmZlcmVudCBjb25jZXB0cyBpbiBHb29nbGUg
TW9jay4gX1ZlcnlfIGRpZmZlcmVudC4KLQotQSBjYWxsIGB4LlkoLi4uKWAgaXMgKip1bmludGVy
ZXN0aW5nKiogaWYgdGhlcmUncyBfbm90IGV2ZW4gYSBzaW5nbGVfIGBFWFBFQ1RfQ0FMTCh4LCBZ
KC4uLikpYCBzZXQuIEluIG90aGVyIHdvcmRzLCB0aGUgdGVzdCBpc24ndCBpbnRlcmVzdGVkIGlu
IHRoZSBgeC5ZKClgIG1ldGhvZCBhdCBhbGwsIGFzIGV2aWRlbnQgaW4gdGhhdCB0aGUgdGVzdCBk
b2Vzbid0IGNhcmUgdG8gc2F5IGFueXRoaW5nIGFib3V0IGl0LgotCi1BIGNhbGwgYHguWSguLi4p
YCBpcyAqKnVuZXhwZWN0ZWQqKiBpZiB0aGVyZSBhcmUgc29tZSBgRVhQRUNUX0NBTEwoeCwgWSgu
Li4pKXNgIHNldCwgYnV0IG5vbmUgb2YgdGhlbSBtYXRjaGVzIHRoZSBjYWxsLiBQdXQgYW5vdGhl
ciB3YXksIHRoZSB0ZXN0IGlzIGludGVyZXN0ZWQgaW4gdGhlIGB4LlkoKWAgbWV0aG9kICh0aGVy
ZWZvcmUgaXQgX2V4cGxpY2l0bHlfIHNldHMgc29tZSBgRVhQRUNUX0NBTExgIHRvIHZlcmlmeSBo
b3cgaXQncyBjYWxsZWQpOyBob3dldmVyLCB0aGUgdmVyaWZpY2F0aW9uIGZhaWxzIGFzIHRoZSB0
ZXN0IGRvZXNuJ3QgZXhwZWN0IHRoaXMgcGFydGljdWxhciBjYWxsIHRvIGhhcHBlbi4KLQotKipB
biB1bmV4cGVjdGVkIGNhbGwgaXMgYWx3YXlzIGFuIGVycm9yLCoqIGFzIHRoZSBjb2RlIHVuZGVy
IHRlc3QgZG9lc24ndCBiZWhhdmUgdGhlIHdheSB0aGUgdGVzdCBleHBlY3RzIGl0IHRvIGJlaGF2
ZS4KLQotKipCeSBkZWZhdWx0LCBhbiB1bmludGVyZXN0aW5nIGNhbGwgaXMgbm90IGFuIGVycm9y
LCoqIGFzIGl0IHZpb2xhdGVzIG5vIGNvbnN0cmFpbnQgc3BlY2lmaWVkIGJ5IHRoZSB0ZXN0LiAo
R29vZ2xlIE1vY2sncyBwaGlsb3NvcGh5IGlzIHRoYXQgc2F5aW5nIG5vdGhpbmcgbWVhbnMgdGhl
cmUgaXMgbm8gY29uc3RyYWludC4pIEhvd2V2ZXIsIGl0IGxlYWRzIHRvIGEgd2FybmluZywgYXMg
aXQgX21pZ2h0XyBpbmRpY2F0ZSBhIHByb2JsZW0gKGUuZy4gdGhlIHRlc3QgYXV0aG9yIG1pZ2h0
IGhhdmUgZm9yZ290dGVuIHRvIHNwZWNpZnkgYSBjb25zdHJhaW50KS4KLQotSW4gR29vZ2xlIE1v
Y2ssIGBOaWNlTW9ja2AgYW5kIGBTdHJpY3RNb2NrYCBjYW4gYmUgdXNlZCB0byBtYWtlIGEgbW9j
ayBjbGFzcyAibmljZSIgb3IgInN0cmljdCIuIEhvdyBkb2VzIHRoaXMgYWZmZWN0IHVuaW50ZXJl
c3RpbmcgY2FsbHMgYW5kIHVuZXhwZWN0ZWQgY2FsbHM/Ci0KLUEgKipuaWNlIG1vY2sqKiBzdXBw
cmVzc2VzIHVuaW50ZXJlc3RpbmcgY2FsbCB3YXJuaW5ncy4gSXQgaXMgbGVzcyBjaGF0dHkgdGhh
biB0aGUgZGVmYXVsdCBtb2NrLCBidXQgb3RoZXJ3aXNlIGlzIHRoZSBzYW1lLiBJZiBhIHRlc3Qg
ZmFpbHMgd2l0aCBhIGRlZmF1bHQgbW9jaywgaXQgd2lsbCBhbHNvIGZhaWwgdXNpbmcgYSBuaWNl
IG1vY2sgaW5zdGVhZC4gQW5kIHZpY2UgdmVyc2EuIERvbid0IGV4cGVjdCBtYWtpbmcgYSBtb2Nr
IG5pY2UgdG8gY2hhbmdlIHRoZSB0ZXN0J3MgcmVzdWx0LgotCi1BICoqc3RyaWN0IG1vY2sqKiB0
dXJucyB1bmludGVyZXN0aW5nIGNhbGwgd2FybmluZ3MgaW50byBlcnJvcnMuIFNvIG1ha2luZyBh
IG1vY2sgc3RyaWN0IG1heSBjaGFuZ2UgdGhlIHRlc3QncyByZXN1bHQuCi0KLUxldCdzIGxvb2sg
YXQgYW4gZXhhbXBsZToKLQotYGBgCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRG9tYWlu
UmVnaXN0cnk+IG1vY2tfcmVnaXN0cnk7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfcmVnaXN0cnksIEdl
dERvbWFpbk93bmVyKCJnb29nbGUuY29tIikpCi0gICAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJl
dHVybigiTGFycnkgUGFnZSIpKTsKLQotICAvLyBVc2UgbW9ja19yZWdpc3RyeSBpbiBjb2RlIHVu
ZGVyIHRlc3QuCi0gIC4uLiAmbW9ja19yZWdpc3RyeSAuLi4KLX0KLWBgYAotCi1UaGUgc29sZSBg
RVhQRUNUX0NBTExgIGhlcmUgc2F5cyB0aGF0IGFsbCBjYWxscyB0byBgR2V0RG9tYWluT3duZXIo
KWAgbXVzdCBoYXZlIGAiZ29vZ2xlLmNvbSJgIGFzIHRoZSBhcmd1bWVudC4gSWYgYEdldERvbWFp
bk93bmVyKCJ5YWhvby5jb20iKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGJlIGFuIHVuZXhwZWN0ZWQg
Y2FsbCwgYW5kIHRodXMgYW4gZXJyb3IuIEhhdmluZyBhIG5pY2UgbW9jayBkb2Vzbid0IGNoYW5n
ZSB0aGUgc2V2ZXJpdHkgb2YgYW4gdW5leHBlY3RlZCBjYWxsLgotCi1TbyBob3cgZG8gd2UgdGVs
bCBHb29nbGUgTW9jayB0aGF0IGBHZXREb21haW5Pd25lcigpYCBjYW4gYmUgY2FsbGVkIHdpdGgg
c29tZSBvdGhlciBhcmd1bWVudHMgYXMgd2VsbD8gVGhlIHN0YW5kYXJkIHRlY2huaXF1ZSBpcyB0
byBhZGQgYSAiY2F0Y2ggYWxsIiBgRVhQRUNUX0NBTExgOgotCi1gYGAKLSAgRVhQRUNUX0NBTEwo
bW9ja19yZWdpc3RyeSwgR2V0RG9tYWluT3duZXIoXykpCi0gICAgICAgIC5UaW1lcyhBbnlOdW1i
ZXIoKSk7ICAvLyBjYXRjaGVzIGFsbCBvdGhlciBjYWxscyB0byB0aGlzIG1ldGhvZC4KLSAgRVhQ
RUNUX0NBTEwobW9ja19yZWdpc3RyeSwgR2V0RG9tYWluT3duZXIoImdvb2dsZS5jb20iKSkKLSAg
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigiTGFycnkgUGFnZSIpKTsKLWBgYAotCi1SZW1l
bWJlciB0aGF0IGBfYCBpcyB0aGUgd2lsZGNhcmQgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhp
bmcuIFdpdGggdGhpcywgaWYgYEdldERvbWFpbk93bmVyKCJnb29nbGUuY29tIilgIGlzIGNhbGxl
ZCwgaXQgd2lsbCBkbyB3aGF0IHRoZSBzZWNvbmQgYEVYUEVDVF9DQUxMYCBzYXlzOyBpZiBpdCBp
cyBjYWxsZWQgd2l0aCBhIGRpZmZlcmVudCBhcmd1bWVudCwgaXQgd2lsbCBkbyB3aGF0IHRoZSBm
aXJzdCBgRVhQRUNUX0NBTExgIHNheXMuCi0KLU5vdGUgdGhhdCB0aGUgb3JkZXIgb2YgdGhlIHR3
byBgRVhQRUNUX0NBTExzYCBpcyBpbXBvcnRhbnQsIGFzIGEgbmV3ZXIgYEVYUEVDVF9DQUxMYCB0
YWtlcyBwcmVjZWRlbmNlIG92ZXIgYW4gb2xkZXIgb25lLgotCi1Gb3IgbW9yZSBvbiB1bmludGVy
ZXN0aW5nIGNhbGxzLCBuaWNlIG1vY2tzLCBhbmQgc3RyaWN0IG1vY2tzLCByZWFkIFsiVGhlIE5p
Y2UsIHRoZSBTdHJpY3QsIGFuZCB0aGUgTmFnZ3kiXSgjdGhlLW5pY2UtdGhlLXN0cmljdC1hbmQt
dGhlLW5hZ2d5KS4KLQotIyMgRXhwZWN0aW5nIE9yZGVyZWQgQ2FsbHMgIyMKLQotQWx0aG91Z2gg
YW4gYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBkZWZpbmVkIGVhcmxpZXIgdGFrZXMgcHJlY2Vk
ZW5jZQotd2hlbiBHb29nbGUgTW9jayB0cmllcyB0byBtYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0
aCBhbiBleHBlY3RhdGlvbiwKLWJ5IGRlZmF1bHQgY2FsbHMgZG9uJ3QgaGF2ZSB0byBoYXBwZW4g
aW4gdGhlIG9yZGVyIGBFWFBFQ1RfQ0FMTCgpYAotc3RhdGVtZW50cyBhcmUgd3JpdHRlbi4gRm9y
IGV4YW1wbGUsIGlmIHRoZSBhcmd1bWVudHMgbWF0Y2ggdGhlCi1tYXRjaGVycyBpbiB0aGUgdGhp
cmQgYEVYUEVDVF9DQUxMKClgLCBidXQgbm90IHRob3NlIGluIHRoZSBmaXJzdCB0d28sCi10aGVu
IHRoZSB0aGlyZCBleHBlY3RhdGlvbiB3aWxsIGJlIHVzZWQuCi0KLUlmIHlvdSB3b3VsZCByYXRo
ZXIgaGF2ZSBhbGwgY2FsbHMgb2NjdXIgaW4gdGhlIG9yZGVyIG9mIHRoZQotZXhwZWN0YXRpb25z
LCBwdXQgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGluIGEgYmxvY2sgd2hlcmUgeW91
Ci1kZWZpbmUgYSB2YXJpYWJsZSBvZiB0eXBlIGBJblNlcXVlbmNlYDoKLQotYGBgCi0gIHVzaW5n
IDo6dGVzdGluZzo6XzsKLSAgdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotCi0gIHsKLSAg
ICBJblNlcXVlbmNlIHM7Ci0KLSAgICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSk7Ci0gICAg
RVhQRUNUX0NBTEwoYmFyLCBEb1RoYXQoXykpCi0gICAgICAgIC5UaW1lcygyKTsKLSAgICBFWFBF
Q1RfQ0FMTChmb28sIERvVGhpcyg2KSk7Ci0gIH0KLWBgYAotCi1JbiB0aGlzIGV4YW1wbGUsIHdl
IGV4cGVjdCBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNSlgLCBmb2xsb3dlZCBieSB0d28KLWNhbGxz
IHRvIGBiYXIuRG9UaGF0KClgIHdoZXJlIHRoZSBhcmd1bWVudCBjYW4gYmUgYW55dGhpbmcsIHdo
aWNoIGFyZQotaW4gdHVybiBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNilgLiBJ
ZiBhIGNhbGwgb2NjdXJyZWQKLW91dC1vZi1vcmRlciwgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQg
YW4gZXJyb3IuCi0KLSMjIEV4cGVjdGluZyBQYXJ0aWFsbHkgT3JkZXJlZCBDYWxscyAjIwotCi1T
b21ldGltZXMgcmVxdWlyaW5nIGV2ZXJ5dGhpbmcgdG8gb2NjdXIgaW4gYSBwcmVkZXRlcm1pbmVk
IG9yZGVyIGNhbgotbGVhZCB0byBicml0dGxlIHRlc3RzLiBGb3IgZXhhbXBsZSwgd2UgbWF5IGNh
cmUgYWJvdXQgYEFgIG9jY3VycmluZwotYmVmb3JlIGJvdGggYEJgIGFuZCBgQ2AsIGJ1dCBhcmVu
J3QgaW50ZXJlc3RlZCBpbiB0aGUgcmVsYXRpdmUgb3JkZXIKLW9mIGBCYCBhbmQgYENgLiBJbiB0
aGlzIGNhc2UsIHRoZSB0ZXN0IHNob3VsZCByZWZsZWN0IG91ciByZWFsIGludGVudCwKLWluc3Rl
YWQgb2YgYmVpbmcgb3Zlcmx5IGNvbnN0cmFpbmluZy4KLQotR29vZ2xlIE1vY2sgYWxsb3dzIHlv
dSB0byBpbXBvc2UgYW4gYXJiaXRyYXJ5IERBRyAoZGlyZWN0ZWQgYWN5Y2xpYwotZ3JhcGgpIG9u
IHRoZSBjYWxscy4gT25lIHdheSB0byBleHByZXNzIHRoZSBEQUcgaXMgdG8gdXNlIHRoZQotW0Fm
dGVyXShDaGVhdFNoZWV0Lm1kI3RoZS1hZnRlci1jbGF1c2UpIGNsYXVzZSBvZiBgRVhQRUNUX0NB
TExgLgotCi1Bbm90aGVyIHdheSBpcyB2aWEgdGhlIGBJblNlcXVlbmNlKClgIGNsYXVzZSAobm90
IHRoZSBzYW1lIGFzIHRoZQotYEluU2VxdWVuY2VgIGNsYXNzKSwgd2hpY2ggd2UgYm9ycm93ZWQg
ZnJvbSBqTW9jayAyLiBJdCdzIGxlc3MKLWZsZXhpYmxlIHRoYW4gYEFmdGVyKClgLCBidXQgbW9y
ZSBjb252ZW5pZW50IHdoZW4geW91IGhhdmUgbG9uZyBjaGFpbnMKLW9mIHNlcXVlbnRpYWwgY2Fs
bHMsIGFzIGl0IGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gY29tZSB1cCB3aXRoCi1kaWZmZXJlbnQg
bmFtZXMgZm9yIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlIGNoYWlucy4gIEhlcmUncyBob3cgaXQK
LXdvcmtzOgotCi1JZiB3ZSB2aWV3IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnRzIGFzIG5vZGVz
IGluIGEgZ3JhcGgsIGFuZCBhZGQgYW4KLWVkZ2UgZnJvbSBub2RlIEEgdG8gbm9kZSBCIHdoZXJl
dmVyIEEgbXVzdCBvY2N1ciBiZWZvcmUgQiwgd2UgY2FuIGdldAotYSBEQUcuIFdlIHVzZSB0aGUg
dGVybSAic2VxdWVuY2UiIHRvIG1lYW4gYSBkaXJlY3RlZCBwYXRoIGluIHRoaXMKLURBRy4gTm93
LCBpZiB3ZSBkZWNvbXBvc2UgdGhlIERBRyBpbnRvIHNlcXVlbmNlcywgd2UganVzdCBuZWVkIHRv
IGtub3cKLXdoaWNoIHNlcXVlbmNlcyBlYWNoIGBFWFBFQ1RfQ0FMTCgpYCBiZWxvbmdzIHRvIGlu
IG9yZGVyIHRvIGJlIGFibGUgdG8KLXJlY29uc3RydWN0IHRoZSBvcmdpbmFsIERBRy4KLQotU28s
IHRvIHNwZWNpZnkgdGhlIHBhcnRpYWwgb3JkZXIgb24gdGhlIGV4cGVjdGF0aW9ucyB3ZSBuZWVk
IHRvIGRvIHR3bwotdGhpbmdzOiBmaXJzdCB0byBkZWZpbmUgc29tZSBgU2VxdWVuY2VgIG9iamVj
dHMsIGFuZCB0aGVuIGZvciBlYWNoCi1gRVhQRUNUX0NBTEwoKWAgc2F5IHdoaWNoIGBTZXF1ZW5j
ZWAgb2JqZWN0cyBpdCBpcyBwYXJ0Ci1vZi4gRXhwZWN0YXRpb25zIGluIHRoZSBzYW1lIHNlcXVl
bmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi13cml0dGVuLiBGb3IgZXhhbXBs
ZSwKLQotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEs
IHMyOwotCi0gIEVYUEVDVF9DQUxMKGZvbywgQSgpKQotICAgICAgLkluU2VxdWVuY2UoczEsIHMy
KTsKLSAgRVhQRUNUX0NBTEwoYmFyLCBCKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSk7Ci0gIEVY
UEVDVF9DQUxMKGJhciwgQygpKQotICAgICAgLkluU2VxdWVuY2UoczIpOwotICBFWFBFQ1RfQ0FM
TChmb28sIEQoKSkKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLWBgYAotCi1zcGVjaWZpZXMgdGhl
IGZvbGxvd2luZyBEQUcgKHdoZXJlIGBzMWAgaXMgYEEgLT4gQmAsIGFuZCBgczJgIGlzIGBBIC0+
Ci1DIC0+IERgKToKLQotYGBgCi0gICAgICAgKy0tLT4gQgotICAgICAgIHwKLSAgQSAtLS18Ci0g
ICAgICAgfAotICAgICAgICstLS0+IEMgLS0tPiBECi1gYGAKLQotVGhpcyBtZWFucyB0aGF0IEEg
bXVzdCBvY2N1ciBiZWZvcmUgQiBhbmQgQywgYW5kIEMgbXVzdCBvY2N1ciBiZWZvcmUKLUQuIFRo
ZXJlJ3Mgbm8gcmVzdHJpY3Rpb24gYWJvdXQgdGhlIG9yZGVyIG90aGVyIHRoYW4gdGhlc2UuCi0K
LSMjIENvbnRyb2xsaW5nIFdoZW4gYW4gRXhwZWN0YXRpb24gUmV0aXJlcyAjIwotCi1XaGVuIGEg
bW9jayBtZXRob2QgaXMgY2FsbGVkLCBHb29nbGUgTW9jayBvbmx5IGNvbnNpZGVyIGV4cGVjdGF0
aW9ucwotdGhhdCBhcmUgc3RpbGwgYWN0aXZlLiBBbiBleHBlY3RhdGlvbiBpcyBhY3RpdmUgd2hl
biBjcmVhdGVkLCBhbmQKLWJlY29tZXMgaW5hY3RpdmUgKGFrYSBfcmV0aXJlc18pIHdoZW4gYSBj
YWxsIHRoYXQgaGFzIHRvIG9jY3VyIGxhdGVyCi1oYXMgb2NjdXJyZWQuIEZvciBleGFtcGxlLCBp
bgotCi1gYGAKLSAgdXNpbmcgOjp0ZXN0aW5nOjpfOwotICB1c2luZyA6OnRlc3Rpbmc6OlNlcXVl
bmNlOwotCi0gIFNlcXVlbmNlIHMxLCBzMjsKLQotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJO
SU5HLCBfLCAiRmlsZSB0b28gbGFyZ2UuIikpICAgICAvLyAjMQotICAgICAgLlRpbWVzKEFueU51
bWJlcigpKQotICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsKLSAgRVhQRUNUX0NBTEwobG9nLCBM
b2coV0FSTklORywgXywgIkRhdGEgc2V0IGlzIGVtcHR5LiIpKSAgLy8gIzIKLSAgICAgIC5JblNl
cXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIlVzZXIgbm90
IGZvdW5kLiIpKSAgICAgLy8gIzMKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLWBgYAotCi1hcyBz
b29uIGFzIGVpdGhlciAjMiBvciAjMyBpcyBtYXRjaGVkLCAjMSB3aWxsIHJldGlyZS4gSWYgYSB3
YXJuaW5nCi1gIkZpbGUgdG9vIGxhcmdlLiJgIGlzIGxvZ2dlZCBhZnRlciB0aGlzLCBpdCB3aWxs
IGJlIGFuIGVycm9yLgotCi1Ob3RlIHRoYXQgYW4gZXhwZWN0YXRpb24gZG9lc24ndCByZXRpcmUg
YXV0b21hdGljYWxseSB3aGVuIGl0J3MKLXNhdHVyYXRlZC4gRm9yIGV4YW1wbGUsCi0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcs
IF8sIF8pKTsgICAgICAgICAgICAgICAgICAvLyAjMQotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhX
QVJOSU5HLCBfLCAiRmlsZSB0b28gbGFyZ2UuIikpOyAgLy8gIzIKLWBgYAotCi1zYXlzIHRoYXQg
dGhlcmUgd2lsbCBiZSBleGFjdGx5IG9uZSB3YXJuaW5nIHdpdGggdGhlIG1lc3NhZ2UgYCJGaWxl
Ci10b28gbGFyZ2UuImAuIElmIHRoZSBzZWNvbmQgd2FybmluZyBjb250YWlucyB0aGlzIG1lc3Nh
Z2UgdG9vLCAjMiB3aWxsCi1tYXRjaCBhZ2FpbiBhbmQgcmVzdWx0IGluIGFuIHVwcGVyLWJvdW5k
LXZpb2xhdGVkIGVycm9yLgotCi1JZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCB5b3UgY2Fu
IGFzayBhbiBleHBlY3RhdGlvbiB0byByZXRpcmUgYXMKLXNvb24gYXMgaXQgYmVjb21lcyBzYXR1
cmF0ZWQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVDVF9DQUxMKGxv
ZywgTG9nKFdBUk5JTkcsIF8sIF8pKTsgICAgICAgICAgICAgICAgIC8vICMxCi0gIEVYUEVDVF9D
QUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgIC8vICMyCi0gICAg
ICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotYGBgCi0KLUhlcmUgIzIgY2FuIGJlIHVzZWQgb25s
eSBvbmNlLCBzbyBpZiB5b3UgaGF2ZSB0d28gd2FybmluZ3Mgd2l0aCB0aGUKLW1lc3NhZ2UgYCJG
aWxlIHRvbyBsYXJnZS4iYCwgdGhlIGZpcnN0IHdpbGwgbWF0Y2ggIzIgYW5kIHRoZSBzZWNvbmQK
LXdpbGwgbWF0Y2ggIzEgLSB0aGVyZSB3aWxsIGJlIG5vIGVycm9yLgotCi0jIFVzaW5nIEFjdGlv
bnMgIwotCi0jIyBSZXR1cm5pbmcgUmVmZXJlbmNlcyBmcm9tIE1vY2sgTWV0aG9kcyAjIwotCi1J
ZiBhIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IG5lZWQg
dG8gdXNlCi1gUmV0dXJuUmVmKClgIGluc3RlYWQgb2YgYFJldHVybigpYCB0byByZXR1cm4gYSBy
ZXN1bHQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm5SZWY7Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYo
KSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEJhciBiYXI7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgR2V0QmFyKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcikpOwotYGBgCi0K
LSMjIFJldHVybmluZyBMaXZlIFZhbHVlcyBmcm9tIE1vY2sgTWV0aG9kcyAjIwotCi1UaGUgYFJl
dHVybih4KWAgYWN0aW9uIHNhdmVzIGEgY29weSBvZiBgeGAgd2hlbiB0aGUgYWN0aW9uIGlzCi1f
Y3JlYXRlZF8sIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSB3aGVuZXZlciBpdCdz
Ci1leGVjdXRlZC4gU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBpbnN0ZWFkIHJldHVybiB0aGUg
X2xpdmVfIHZhbHVlIG9mCi1geGAgKGkuZS4gaXRzIHZhbHVlIGF0IHRoZSB0aW1lIHdoZW4gdGhl
IGFjdGlvbiBpcyBfZXhlY3V0ZWRfLikuCi0KLUlmIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJu
IHR5cGUgaXMgYSByZWZlcmVuY2UsIHlvdSBjYW4gZG8gaXQgdXNpbmcKLWBSZXR1cm5SZWYoeClg
LCBhcyBzaG93biBpbiB0aGUgcHJldmlvdXMgcmVjaXBlICgiUmV0dXJuaW5nIFJlZmVyZW5jZXMK
LWZyb20gTW9jayBNZXRob2RzIikuIEhvd2V2ZXIsIEdvb2dsZSBNb2NrIGRvZXNuJ3QgbGV0IHlv
dSB1c2UKLWBSZXR1cm5SZWYoKWAgaW4gYSBtb2NrIGZ1bmN0aW9uIHdob3NlIHJldHVybiB0eXBl
IGlzIG5vdCBhIHJlZmVyZW5jZSwKLWFzIGRvaW5nIHRoYXQgdXN1YWxseSBpbmRpY2F0ZXMgYSB1
c2VyIGVycm9yLiBTbywgd2hhdCBzaGFsbCB5b3UgZG8/Ci0KLVlvdSBtYXkgYmUgdGVtcHRlZCB0
byB0cnkgYEJ5UmVmKClgOgotCi1gYGAKLXVzaW5nIHRlc3Rpbmc6OkJ5UmVmOwotdXNpbmcgdGVz
dGluZzo6UmV0dXJuOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgot
ICBNT0NLX01FVEhPRDAoR2V0VmFsdWUsIGludCgpKTsKLX07Ci0uLi4KLSAgaW50IHggPSAwOwot
ICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRWYWx1ZSgpKQotICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybihCeVJlZih4KSkpOwotICB4ID0gNDI7Ci0gIEVYUEVDVF9FUSg0
MiwgZm9vLkdldFZhbHVlKCkpOwotYGBgCi0KLVVuZm9ydHVuYXRlbHksIGl0IGRvZXNuJ3Qgd29y
ayBoZXJlLiBUaGUgYWJvdmUgY29kZSB3aWxsIGZhaWwgd2l0aCBlcnJvcjoKLQotYGBgCi1WYWx1
ZSBvZjogZm9vLkdldFZhbHVlKCkKLSAgQWN0dWFsOiAwCi1FeHBlY3RlZDogNDIKLWBgYAotCi1U
aGUgcmVhc29uIGlzIHRoYXQgYFJldHVybih2YWx1ZSlgIGNvbnZlcnRzIGB2YWx1ZWAgdG8gdGhl
IGFjdHVhbAotcmV0dXJuIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXQgdGhlIHRpbWUgd2hl
biB0aGUgYWN0aW9uIGlzCi1fY3JlYXRlZF8sIG5vdCB3aGVuIGl0IGlzIF9leGVjdXRlZF8uIChU
aGlzIGJlaGF2aW9yIHdhcyBjaG9zZW4gZm9yCi10aGUgYWN0aW9uIHRvIGJlIHNhZmUgd2hlbiBg
dmFsdWVgIGlzIGEgcHJveHkgb2JqZWN0IHRoYXQgcmVmZXJlbmNlcwotc29tZSB0ZW1wb3Jhcnkg
b2JqZWN0cy4pIEFzIGEgcmVzdWx0LCBgQnlSZWYoeClgIGlzIGNvbnZlcnRlZCB0byBhbgotYGlu
dGAgdmFsdWUgKGluc3RlYWQgb2YgYSBgY29uc3QgaW50JmApIHdoZW4gdGhlIGV4cGVjdGF0aW9u
IGlzIHNldCwKLWFuZCBgUmV0dXJuKEJ5UmVmKHgpKWAgd2lsbCBhbHdheXMgcmV0dXJuIDAuCi0K
LWBSZXR1cm5Qb2ludGVlKHBvaW50ZXIpYCB3YXMgcHJvdmlkZWQgdG8gc29sdmUgdGhpcyBwcm9i
bGVtCi1zcGVjaWZpY2FsbHkuIEl0IHJldHVybnMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYHBv
aW50ZXJgIGF0IHRoZSB0aW1lCi10aGUgYWN0aW9uIGlzIF9leGVjdXRlZF86Ci0KLWBgYAotdXNp
bmcgdGVzdGluZzo6UmV0dXJuUG9pbnRlZTsKLS4uLgotICBpbnQgeCA9IDA7Ci0gIE1vY2tGb28g
Zm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIEdldFZhbHVlKCkpCi0gICAgICAuV2lsbFJlcGVhdGVk
bHkoUmV0dXJuUG9pbnRlZSgmeCkpOyAgLy8gTm90ZSB0aGUgJiBoZXJlLgotICB4ID0gNDI7Ci0g
IEVYUEVDVF9FUSg0MiwgZm9vLkdldFZhbHVlKCkpOyAgLy8gVGhpcyB3aWxsIHN1Y2NlZWQgbm93
LgotYGBgCi0KLSMjIENvbWJpbmluZyBBY3Rpb25zICMjCi0KLVdhbnQgdG8gZG8gbW9yZSB0aGFu
IG9uZSB0aGluZyB3aGVuIGEgZnVuY3Rpb24gaXMgY2FsbGVkPyBUaGF0J3MKLWZpbmUuIGBEb0Fs
bCgpYCBhbGxvdyB5b3UgdG8gZG8gc2VxdWVuY2Ugb2YgYWN0aW9ucyBldmVyeSB0aW1lLiBPbmx5
Ci10aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBsYXN0IGFjdGlvbiBpbiB0aGUgc2VxdWVuY2Ugd2ls
bCBiZSB1c2VkLgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RG9BbGw7Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShCYXIsIGJvb2woaW50
IG4pKTsKLX07Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5XaWxs
T25jZShEb0FsbChhY3Rpb25fMSwKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAuLi4KLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbikp
OwotYGBgCi0KLSMjIE1vY2tpbmcgU2lkZSBFZmZlY3RzICMjCi0KLVNvbWV0aW1lcyBhIG1ldGhv
ZCBleGhpYml0cyBpdHMgZWZmZWN0IG5vdCB2aWEgcmV0dXJuaW5nIGEgdmFsdWUgYnV0Ci12aWEg
c2lkZSBlZmZlY3RzLiBGb3IgZXhhbXBsZSwgaXQgbWF5IGNoYW5nZSBzb21lIGdsb2JhbCBzdGF0
ZSBvcgotbW9kaWZ5IGFuIG91dHB1dCBhcmd1bWVudC4gVG8gbW9jayBzaWRlIGVmZmVjdHMsIGlu
IGdlbmVyYWwgeW91IGNhbgotZGVmaW5lIHlvdXIgb3duIGFjdGlvbiBieSBpbXBsZW1lbnRpbmcg
YDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlYC4KLQotSWYgYWxsIHlvdSBuZWVkIHRvIGRvIGlz
IHRvIGNoYW5nZSBhbiBvdXRwdXQgYXJndW1lbnQsIHRoZSBidWlsdC1pbgotYFNldEFyZ1BvaW50
ZWUoKWAgYWN0aW9uIGlzIGNvbnZlbmllbnQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXRB
cmdQb2ludGVlOwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJs
aWM6Ci0gIE1PQ0tfTUVUSE9EMihNdXRhdGUsIHZvaWQoYm9vbCBtdXRhdGUsIGludCogdmFsdWUp
KTsKLSAgLi4uCi19OwotLi4uCi0KLSAgTW9ja011dGF0b3IgbXV0YXRvcjsKLSAgRVhQRUNUX0NB
TEwobXV0YXRvciwgTXV0YXRlKHRydWUsIF8pKQotICAgICAgLldpbGxPbmNlKFNldEFyZ1BvaW50
ZWU8MT4oNSkpOwotYGBgCi0KLUluIHRoaXMgZXhhbXBsZSwgd2hlbiBgbXV0YXRvci5NdXRhdGUo
KWAgaXMgY2FsbGVkLCB3ZSB3aWxsIGFzc2lnbiA1Ci10byB0aGUgYGludGAgdmFyaWFibGUgcG9p
bnRlZCB0byBieSBhcmd1bWVudCAjMQotKDAtYmFzZWQpLgotCi1gU2V0QXJnUG9pbnRlZSgpYCBj
b252ZW5pZW50bHkgbWFrZXMgYW4gaW50ZXJuYWwgY29weSBvZiB0aGUKLXZhbHVlIHlvdSBwYXNz
IHRvIGl0LCByZW1vdmluZyB0aGUgbmVlZCB0byBrZWVwIHRoZSB2YWx1ZSBpbiBzY29wZSBhbmQK
LWFsaXZlLiBUaGUgaW1wbGljYXRpb24gaG93ZXZlciBpcyB0aGF0IHRoZSB2YWx1ZSBtdXN0IGhh
dmUgYSBjb3B5Ci1jb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvci4KLQotSWYgdGhl
IG1vY2sgbWV0aG9kIGFsc28gbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUgYXMgd2VsbCwgeW91IGNh
biBjaGFpbgotYFNldEFyZ1BvaW50ZWUoKWAgd2l0aCBgUmV0dXJuKClgIHVzaW5nIGBEb0FsbCgp
YDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsK
LXVzaW5nIDo6dGVzdGluZzo6U2V0QXJnUG9pbnRlZTsKLQotY2xhc3MgTW9ja011dGF0b3IgOiBw
dWJsaWMgTXV0YXRvciB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19NRVRIT0QxKE11dGF0ZUlu
dCwgYm9vbChpbnQqIHZhbHVlKSk7Ci19OwotLi4uCi0KLSAgTW9ja011dGF0b3IgbXV0YXRvcjsK
LSAgRVhQRUNUX0NBTEwobXV0YXRvciwgTXV0YXRlSW50KF8pKQotICAgICAgLldpbGxPbmNlKERv
QWxsKFNldEFyZ1BvaW50ZWU8MD4oNSksCi0gICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKHRy
dWUpKSk7Ci1gYGAKLQotSWYgdGhlIG91dHB1dCBhcmd1bWVudCBpcyBhbiBhcnJheSwgdXNlIHRo
ZQotYFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYCBhY3Rpb24gaW5zdGVhZC4gSXQg
Y29waWVzIHRoZQotZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIGBbZmlyc3QsIGxhc3QpYCB0byB0
aGUgYXJyYXkgcG9pbnRlZCB0byBieQotdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQ6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpTZXRBcnJh
eUFyZ3VtZW50OwotCi1jbGFzcyBNb2NrQXJyYXlNdXRhdG9yIDogcHVibGljIEFycmF5TXV0YXRv
ciB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIoTXV0YXRlLCB2b2lkKGludCogdmFsdWVzLCBp
bnQgbnVtX3ZhbHVlcykpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2NrQXJyYXlNdXRhdG9yIG11
dGF0b3I7Ci0gIGludCB2YWx1ZXNbNV0gPSB7IDEsIDIsIDMsIDQsIDUgfTsKLSAgRVhQRUNUX0NB
TEwobXV0YXRvciwgTXV0YXRlKE5vdE51bGwoKSwgNSkpCi0gICAgICAuV2lsbE9uY2UoU2V0QXJy
YXlBcmd1bWVudDwwPih2YWx1ZXMsIHZhbHVlcyArIDUpKTsKLWBgYAotCi1UaGlzIGFsc28gd29y
a3Mgd2hlbiB0aGUgYXJndW1lbnQgaXMgYW4gb3V0cHV0IGl0ZXJhdG9yOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6U2VBcnJheUFyZ3VtZW50OwotCi1jbGFz
cyBNb2NrUm9sb2RleCA6IHB1YmxpYyBSb2xvZGV4IHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9E
MShHZXROYW1lcywgdm9pZChzdGQ6OmJhY2tfaW5zZXJ0X2l0ZXJhdG9yPHZlY3RvcjxzdHJpbmc+
ID4pKTsKLSAgLi4uCi19OwotLi4uCi0KLSAgTW9ja1JvbG9kZXggcm9sb2RleDsKLSAgdmVjdG9y
PHN0cmluZz4gbmFtZXM7Ci0gIG5hbWVzLnB1c2hfYmFjaygiR2VvcmdlIik7Ci0gIG5hbWVzLnB1
c2hfYmFjaygiSm9obiIpOwotICBuYW1lcy5wdXNoX2JhY2soIlRob21hcyIpOwotICBFWFBFQ1Rf
Q0FMTChyb2xvZGV4LCBHZXROYW1lcyhfKSkKLSAgICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3Vt
ZW50PDA+KG5hbWVzLmJlZ2luKCksIG5hbWVzLmVuZCgpKSk7Ci1gYGAKLQotIyMgQ2hhbmdpbmcg
YSBNb2NrIE9iamVjdCdzIEJlaGF2aW9yIEJhc2VkIG9uIHRoZSBTdGF0ZSAjIwotCi1JZiB5b3Ug
ZXhwZWN0IGEgY2FsbCB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGEgbW9jayBvYmplY3QsIHlv
dSBjYW4gdXNlIGA6OnRlc3Rpbmc6OkluU2VxdWVuY2VgIHRvIHNwZWNpZnkgZGlmZmVyZW50IGJl
aGF2aW9ycyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBjYWxsOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6SW5TZXF1ZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi0uLi4KLSAgewotICAg
IEluU2VxdWVuY2Ugc2VxOwotICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIElzRGlydHkoKSkKLSAg
ICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybih0cnVlKSk7Ci0gICAgRVhQRUNUX0NBTEwobXlf
bW9jaywgRmx1c2goKSk7Ci0gICAgRVhQRUNUX0NBTEwobXlfbW9jaywgSXNEaXJ0eSgpKQotICAg
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKGZhbHNlKSk7Ci0gIH0KLSAgbXlfbW9jay5GbHVz
aElmRGlydHkoKTsKLWBgYAotCi1UaGlzIG1ha2VzIGBteV9tb2NrLklzRGlydHkoKWAgcmV0dXJu
IGB0cnVlYCBiZWZvcmUgYG15X21vY2suRmx1c2goKWAgaXMgY2FsbGVkIGFuZCByZXR1cm4gYGZh
bHNlYCBhZnRlcndhcmRzLgotCi1JZiB0aGUgYmVoYXZpb3IgY2hhbmdlIGlzIG1vcmUgY29tcGxl
eCwgeW91IGNhbiBzdG9yZSB0aGUgZWZmZWN0cyBpbiBhIHZhcmlhYmxlIGFuZCBtYWtlIGEgbW9j
ayBtZXRob2QgZ2V0IGl0cyByZXR1cm4gdmFsdWUgZnJvbSB0aGF0IHZhcmlhYmxlOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6U2F2ZUFyZzsKLXVzaW5nIDo6
dGVzdGluZzo6UmV0dXJuOwotCi1BQ1RJT05fUChSZXR1cm5Qb2ludGVlLCBwKSB7IHJldHVybiAq
cDsgfQotLi4uCi0gIGludCBwcmV2aW91c192YWx1ZSA9IDA7Ci0gIEVYUEVDVF9DQUxMKG15X21v
Y2ssIEdldFByZXZWYWx1ZSgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVyblBvaW50ZWUo
JnByZXZpb3VzX3ZhbHVlKSk7Ci0gIEVYUEVDVF9DQUxMKG15X21vY2ssIFVwZGF0ZVZhbHVlKF8p
KQotICAgICAgLldpbGxSZXBlYXRlZGx5KFNhdmVBcmc8MD4oJnByZXZpb3VzX3ZhbHVlKSk7Ci0g
IG15X21vY2suRG9Tb21ldGhpbmdUb1VwZGF0ZVZhbHVlKCk7Ci1gYGAKLQotSGVyZSBgbXlfbW9j
ay5HZXRQcmV2VmFsdWUoKWAgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBhcmd1bWVudCBvZiB0aGUg
bGFzdCBgVXBkYXRlVmFsdWUoKWAgY2FsbC4KLQotIyMgU2V0dGluZyB0aGUgRGVmYXVsdCBWYWx1
ZSBmb3IgYSBSZXR1cm4gVHlwZSAjIwotCi1JZiBhIG1vY2sgbWV0aG9kJ3MgcmV0dXJuIHR5cGUg
aXMgYSBidWlsdC1pbiBDKysgdHlwZSBvciBwb2ludGVyLCBieQotZGVmYXVsdCBpdCB3aWxsIHJl
dHVybiAwIHdoZW4gaW52b2tlZC4gQWxzbywgaW4gQysrIDExIGFuZCBhYm92ZSwgYSBtb2NrCi1t
ZXRob2Qgd2hvc2UgcmV0dXJuIHR5cGUgaGFzIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciB3aWxsIHJl
dHVybiBhIGRlZmF1bHQtY29uc3RydWN0ZWQKLXZhbHVlIGJ5IGRlZmF1bHQuICBZb3Ugb25seSBu
ZWVkIHRvIHNwZWNpZnkgYW4KLWFjdGlvbiBpZiB0aGlzIGRlZmF1bHQgdmFsdWUgZG9lc24ndCB3
b3JrIGZvciB5b3UuCi0KLVNvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGRl
ZmF1bHQgdmFsdWUsIG9yIHlvdSBtYXkgd2FudAotdG8gc3BlY2lmeSBhIGRlZmF1bHQgdmFsdWUg
Zm9yIHR5cGVzIEdvb2dsZSBNb2NrIGRvZXNuJ3Qga25vdwotYWJvdXQuIFlvdSBjYW4gZG8gdGhp
cyB1c2luZyB0aGUgYDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlYCBjbGFzcwotdGVtcGxhdGU6Ci0K
LWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRI
T0QwKENhbGN1bGF0ZUJhciwgQmFyKCkpOwotfTsKLS4uLgotCi0gIEJhciBkZWZhdWx0X2JhcjsK
LSAgLy8gU2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIHR5cGUgQmFyLgotICBEZWZh
dWx0VmFsdWU8QmFyPjo6U2V0KGRlZmF1bHRfYmFyKTsKLQotICBNb2NrRm9vIGZvbzsKLQotICAv
LyBXZSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYW4gYWN0aW9uIGhlcmUsIGFzIHRoZSBkZWZhdWx0
Ci0gIC8vIHJldHVybiB2YWx1ZSB3b3JrcyBmb3IgdXMuCi0gIEVYUEVDVF9DQUxMKGZvbywgQ2Fs
Y3VsYXRlQmFyKCkpOwotCi0gIGZvby5DYWxjdWxhdGVCYXIoKTsgIC8vIFRoaXMgc2hvdWxkIHJl
dHVybiBkZWZhdWx0X2Jhci4KLQotICAvLyBVbnNldHMgdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVl
LgotICBEZWZhdWx0VmFsdWU8QmFyPjo6Q2xlYXIoKTsKLWBgYAotCi1QbGVhc2Ugbm90ZSB0aGF0
IGNoYW5naW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgY2FuIG1ha2UgeW91Ci10ZXN0
cyBoYXJkIHRvIHVuZGVyc3RhbmQuIFdlIHJlY29tbWVuZCB5b3UgdG8gdXNlIHRoaXMgZmVhdHVy
ZQotanVkaWNpb3VzbHkuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRo
ZSBgU2V0KClgIGFuZAotYENsZWFyKClgIGNhbGxzIGFyZSByaWdodCBuZXh0IHRvIHRoZSBjb2Rl
IHRoYXQgdXNlcyB5b3VyIG1vY2suCi0KLSMjIFNldHRpbmcgdGhlIERlZmF1bHQgQWN0aW9ucyBm
b3IgYSBNb2NrIE1ldGhvZCAjIwotCi1Zb3UndmUgbGVhcm5lZCBob3cgdG8gY2hhbmdlIHRoZSBk
ZWZhdWx0IHZhbHVlIG9mIGEgZ2l2ZW4KLXR5cGUuIEhvd2V2ZXIsIHRoaXMgbWF5IGJlIHRvbyBj
b2Fyc2UgZm9yIHlvdXIgcHVycG9zZTogcGVyaGFwcyB5b3UKLWhhdmUgdHdvIG1vY2sgbWV0aG9k
cyB3aXRoIHRoZSBzYW1lIHJldHVybiB0eXBlIGFuZCB5b3Ugd2FudCB0aGVtIHRvCi1oYXZlIGRp
ZmZlcmVudCBiZWhhdmlvcnMuIFRoZSBgT05fQ0FMTCgpYCBtYWNybyBhbGxvd3MgeW91IHRvCi1j
dXN0b21pemUgeW91ciBtb2NrJ3MgYmVoYXZpb3IgYXQgdGhlIG1ldGhvZCBsZXZlbDoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFueU51bWJlcjsKLXVzaW5n
IDo6dGVzdGluZzo6R3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotICBPTl9DQUxM
KGZvbywgU2lnbihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigtMSkpOwotICBPTl9D
QUxMKGZvbywgU2lnbigwKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigwKSk7Ci0gIE9O
X0NBTEwoZm9vLCBTaWduKEd0KDApKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7
Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBTaWduKF8pKQotICAgICAgLlRpbWVzKEFueU51bWJlcigp
KTsKLQotICBmb28uU2lnbig1KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMS4KLSAgZm9vLlNp
Z24oLTkpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIC0xLgotICBmb28uU2lnbigwKTsgICAvLyBU
aGlzIHNob3VsZCByZXR1cm4gMC4KLWBgYAotCi1BcyB5b3UgbWF5IGhhdmUgZ3Vlc3NlZCwgd2hl
biB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBgT05fQ0FMTCgpYAotc3RhdGVtZW50cywgdGhlIG5l
d3Mgb3JkZXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9sZGVyIG9uZXMuIEluCi1vdGhlciB3
b3JkcywgdGhlICoqbGFzdCoqIG9uZSB0aGF0IG1hdGNoZXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50
cyB3aWxsCi1iZSB1c2VkLiBUaGlzIG1hdGNoaW5nIG9yZGVyIGFsbG93cyB5b3UgdG8gc2V0IHVw
IHRoZSBjb21tb24gYmVoYXZpb3IKLWluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3RvciBvciB0
aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZAotc3BlY2lhbGl6ZSB0aGUgbW9jaydz
IGJlaGF2aW9yIGxhdGVyLgotCi0jIyBVc2luZyBGdW5jdGlvbnMvTWV0aG9kcy9GdW5jdG9ycyBh
cyBBY3Rpb25zICMjCi0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHN1aXQgeW91LCB5
b3UgY2FuIGVhc2lseSB1c2UgYW4gZXhpc3RpbmcKLWZ1bmN0aW9uLCBtZXRob2QsIG9yIGZ1bmN0
b3IgYXMgYW4gYWN0aW9uOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVz
dGluZzo6SW52b2tlOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgot
ICBNT0NLX01FVEhPRDIoU3VtLCBpbnQoaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfTUVUSE9EMShD
b21wbGV4Sm9iLCBib29sKGludCB4KSk7Ci19OwotCi1pbnQgQ2FsY3VsYXRlU3VtKGludCB4LCBp
bnQgeSkgeyByZXR1cm4geCArIHk7IH0KLQotY2xhc3MgSGVscGVyIHsKLSBwdWJsaWM6Ci0gIGJv
b2wgQ29tcGxleEpvYihpbnQgeCk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEhlbHBl
ciBoZWxwZXI7Ci0gIEVYUEVDVF9DQUxMKGZvbywgU3VtKF8sIF8pKQotICAgICAgLldpbGxPbmNl
KEludm9rZShDYWxjdWxhdGVTdW0pKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8p
KQotICAgICAgLldpbGxPbmNlKEludm9rZSgmaGVscGVyLCAmSGVscGVyOjpDb21wbGV4Sm9iKSk7
Ci0KLSAgZm9vLlN1bSg1LCA2KTsgICAgICAgLy8gSW52b2tlcyBDYWxjdWxhdGVTdW0oNSwgNiku
Ci0gIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgaGVscGVyLkNvbXBsZXhKb2IoMTAp
OwotYGBgCi0KLVRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIHR5cGUgb2YgdGhlIGZ1
bmN0aW9uLCBldGMgbXVzdCBiZQotX2NvbXBhdGlibGVfIHdpdGggdGhlIHNpZ25hdHVyZSBvZiB0
aGUgbW9jayBmdW5jdGlvbiwgbWVhbmluZyB0aGF0IHRoZQotbGF0dGVyJ3MgYXJndW1lbnRzIGNh
biBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZwotYXJndW1lbnRz
IG9mIHRoZSBmb3JtZXIsIGFuZCB0aGUgZm9ybWVyJ3MgcmV0dXJuIHR5cGUgY2FuIGJlCi1pbXBs
aWNpdGx5IGNvbnZlcnRlZCB0byB0aGF0IG9mIHRoZSBsYXR0ZXIuIFNvLCB5b3UgY2FuIGludm9r
ZQotc29tZXRoaW5nIHdob3NlIHR5cGUgaXMgX25vdF8gZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUg
bW9jayBmdW5jdGlvbiwKLWFzIGxvbmcgYXMgaXQncyBzYWZlIHRvIGRvIHNvIC0gbmljZSwgaHVo
PwotCi0jIyBJbnZva2luZyBhIEZ1bmN0aW9uL01ldGhvZC9GdW5jdG9yIFdpdGhvdXQgQXJndW1l
bnRzICMjCi0KLWBJbnZva2UoKWAgaXMgdmVyeSB1c2VmdWwgZm9yIGRvaW5nIGFjdGlvbnMgdGhh
dCBhcmUgbW9yZSBjb21wbGV4LiBJdAotcGFzc2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1l
bnRzIHRvIHRoZSBmdW5jdGlvbiBvciBmdW5jdG9yIGJlaW5nCi1pbnZva2VkIHN1Y2ggdGhhdCB0
aGUgY2FsbGVlIGhhcyB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBjYWxsIHRvIHdvcmsKLXdpdGgu
IElmIHRoZSBpbnZva2VkIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHNvbWUgb3IgYWxs
IG9mIHRoZQotYXJndW1lbnRzLCBpdCBjYW4gc2ltcGx5IGlnbm9yZSB0aGVtLgotCi1ZZXQsIGEg
Y29tbW9uIHBhdHRlcm4gaXMgdGhhdCBhIHRlc3QgYXV0aG9yIHdhbnRzIHRvIGludm9rZSBhIGZ1
bmN0aW9uCi13aXRob3V0IHRoZSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24uIGBJbnZv
a2UoKWAgYWxsb3dzIGhlciB0bwotZG8gdGhhdCB1c2luZyBhIHdyYXBwZXIgZnVuY3Rpb24gdGhh
dCB0aHJvd3MgYXdheSB0aGUgYXJndW1lbnRzIGJlZm9yZQotaW52b2tpbmcgYW4gdW5kZXJsaW5p
bmcgbnVsbGFyeSBmdW5jdGlvbi4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNhbiBiZQotdGVkaW91
cyBhbmQgb2JzY3VyZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdC4KLQotYEludm9rZVdpdGhvdXRB
cmdzKClgIHNvbHZlcyB0aGlzIHByb2JsZW0uIEl0J3MgbGlrZSBgSW52b2tlKClgIGV4Y2VwdAot
dGhhdCBpdCBkb2Vzbid0IHBhc3MgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhl
Ci1jYWxsZWUuIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LXVzaW5nIDo6dGVzdGluZzo6SW52b2tlV2l0aG91dEFyZ3M7Ci0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9iLCBib29sKGlu
dCBuKSk7Ci19OwotCi1ib29sIEpvYjEoKSB7IC4uLiB9Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsK
LSAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQotICAgICAgLldpbGxPbmNlKEludm9r
ZVdpdGhvdXRBcmdzKEpvYjEpKTsKLQotICBmb28uQ29tcGxleEpvYigxMCk7ICAvLyBJbnZva2Vz
IEpvYjEoKS4KLWBgYAotCi0jIyBJbnZva2luZyBhbiBBcmd1bWVudCBvZiB0aGUgTW9jayBGdW5j
dGlvbiAjIwotCi1Tb21ldGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBhIGZ1bmN0
aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yCi0oaW4gb3RoZXIgd29yZHMsIGEgImNhbGxhYmxlIikg
YXMgYW4gYXJndW1lbnQsIGUuZy4KLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7
Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIoRG9UaGlzLCBib29sKGludCBuLCBib29sICgqZnAp
KGludCkpKTsKLX07Ci1gYGAKLQotYW5kIHlvdSBtYXkgd2FudCB0byBpbnZva2UgdGhpcyBjYWxs
YWJsZSBhcmd1bWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgTW9ja0Zv
byBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAgLldpbGxPbmNl
KC4uLik7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhlCi0gIC8v
IHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAotCi1BcmdoaCwgeW91IG5l
ZWQgdG8gcmVmZXIgdG8gYSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50IGJ1dCBDKysgaGFzIG5vCi1s
YW1iZGEgKHlldCksIHNvIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIDotKCBP
ciBkbyB5b3UKLXJlYWxseT8KLQotV2VsbCwgR29vZ2xlIE1vY2sgaGFzIGFuIGFjdGlvbiB0byBz
b2x2ZSBfZXhhY3RseV8gdGhpcyBwcm9ibGVtOgotCi1gYGAKLSAgSW52b2tlQXJndW1lbnQ8Tj4o
YXJnXzEsIGFyZ18yLCAuLi4sIGFyZ19tKQotYGBgCi0KLXdpbGwgaW52b2tlIHRoZSBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50IHRoZSBtb2NrIGZ1bmN0aW9uIHJlY2VpdmVzLAotd2l0aCBgYXJn
XzFgLCBgYXJnXzJgLCAuLi4sIGFuZCBgYXJnX21gLiBObyBtYXR0ZXIgaWYgdGhlIGFyZ3VtZW50
IGlzCi1hIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yLCBHb29nbGUgTW9jayBoYW5kbGVz
IHRoZW0gYm90aC4KLQotV2l0aCB0aGF0LCB5b3UgY291bGQgd3JpdGU6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLS4uLgotICBF
WFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1
bWVudDwxPig1KSk7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhl
Ci0gIC8vIHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAotCi1XaGF0IGlm
IHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2U/IE5vIHByb2JsZW0g
LSBqdXN0Ci13cmFwIGl0IGluc2lkZSBgQnlSZWYoKWA6Ci0KLWBgYAotLi4uCi0gIE1PQ0tfTUVU
SE9EMShCYXIsIGJvb2woYm9vbCAoKmZwKShpbnQsIGNvbnN0IEhlbHBlciYpKSk7Ci0uLi4KLXVz
aW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QnlSZWY7Ci11c2luZyA6OnRlc3Rp
bmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEhlbHBlciBoZWxw
ZXI7Ci0gIC4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5XaWxsT25jZShJ
bnZva2VBcmd1bWVudDwwPig1LCBCeVJlZihoZWxwZXIpKSk7Ci0gIC8vIEJ5UmVmKGhlbHBlcikg
Z3VhcmFudGVlcyB0aGF0IGEgcmVmZXJlbmNlIHRvIGhlbHBlciwgbm90IGEgY29weSBvZiBpdCwK
LSAgLy8gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlLgotYGBgCi0KLVdoYXQgaWYgdGhl
IGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSBhbmQgd2UgZG8gKipub3Qq
Kgotd3JhcCB0aGUgYXJndW1lbnQgaW4gYEJ5UmVmKClgPyBUaGVuIGBJbnZva2VBcmd1bWVudCgp
YCB3aWxsIF9tYWtlIGEKLWNvcHlfIG9mIHRoZSBhcmd1bWVudCwgYW5kIHBhc3MgYSBfcmVmZXJl
bmNlIHRvIHRoZSBjb3B5XywgaW5zdGVhZCBvZgotYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFs
IHZhbHVlLCB0byB0aGUgY2FsbGFibGUuIFRoaXMgaXMgZXNwZWNpYWxseQotaGFuZHkgd2hlbiB0
aGUgYXJndW1lbnQgaXMgYSB0ZW1wb3JhcnkgdmFsdWU6Ci0KLWBgYAotLi4uCi0gIE1PQ0tfTUVU
SE9EMShEb1RoYXQsIGJvb2woYm9vbCAoKmYpKGNvbnN0IGRvdWJsZSYgeCwgY29uc3Qgc3RyaW5n
JiBzKSkpOwotLi4uCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZUFyZ3VtZW50OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIC4uLgotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhhdChfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwwPig1LjAsIHN0
cmluZygiSGkiKSkpOwotICAvLyBXaWxsIGV4ZWN1dGUgKCpmKSg1LjAsIHN0cmluZygiSGkiKSks
IHdoZXJlIGYgaXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKLSAgLy8gRG9UaGF0KCkgcmVjZWl2ZXMu
ICBOb3RlIHRoYXQgdGhlIHZhbHVlcyA1LjAgYW5kIHN0cmluZygiSGkiKSBhcmUKLSAgLy8gdGVt
cG9yYXJ5IGFuZCBkZWFkIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZpbmlzaGVz
LiAgWWV0Ci0gIC8vIGl0J3MgZmluZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uIGxhdGVyLCBzaW5j
ZSBhIGNvcHkgb2YgdGhlIHZhbHVlcwotICAvLyBhcmUga2VwdCBpbnNpZGUgdGhlIEludm9rZUFy
Z3VtZW50IGFjdGlvbi4KLWBgYAotCi0jIyBJZ25vcmluZyBhbiBBY3Rpb24ncyBSZXN1bHQgIyMK
LQotU29tZXRpbWVzIHlvdSBoYXZlIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgX3NvbWV0aGluZ18s
IGJ1dCB5b3UgbmVlZCBhbgotYWN0aW9uIHRoYXQgcmV0dXJucyBgdm9pZGAgKHBlcmhhcHMgeW91
IHdhbnQgdG8gdXNlIGl0IGluIGEgbW9jawotZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCwg
b3IgcGVyaGFwcyBpdCBuZWVkcyB0byBiZSB1c2VkIGluCi1gRG9BbGwoKWAgYW5kIGl0J3Mgbm90
IHRoZSBsYXN0IGluIHRoZSBsaXN0KS4gYElnbm9yZVJlc3VsdCgpYCBsZXRzCi15b3UgZG8gdGhh
dC4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0
aW5nOjpJbnZva2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotaW50IFByb2Nlc3MoY29u
c3QgTXlEYXRhJiBkYXRhKTsKLXN0cmluZyBEb1NvbWV0aGluZygpOwotCi1jbGFzcyBNb2NrRm9v
IDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEoQWJjLCB2b2lkKGNvbnN0
IE15RGF0YSYgZGF0YSkpOwotICBNT0NLX01FVEhPRDAoWHl6LCBib29sKCkpOwotfTsKLS4uLgot
Ci0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIEFiYyhfKSkKLSAgLy8gLldpbGxP
bmNlKEludm9rZShQcm9jZXNzKSk7Ci0gIC8vIFRoZSBhYm92ZSBsaW5lIHdvbid0IGNvbXBpbGUg
YXMgUHJvY2VzcygpIHJldHVybnMgaW50IGJ1dCBBYmMoKSBuZWVkcwotICAvLyB0byByZXR1cm4g
dm9pZC4KLSAgICAgIC5XaWxsT25jZShJZ25vcmVSZXN1bHQoSW52b2tlKFByb2Nlc3MpKSk7Ci0K
LSAgRVhQRUNUX0NBTEwoZm9vLCBYeXooKSkKLSAgICAgIC5XaWxsT25jZShEb0FsbChJZ25vcmVS
ZXN1bHQoSW52b2tlKERvU29tZXRoaW5nKSksCi0gICAgICAvLyBJZ25vcmVzIHRoZSBzdHJpbmcg
RG9Tb21ldGhpbmcoKSByZXR1cm5zLgotICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVl
KSkpOwotYGBgCi0KLU5vdGUgdGhhdCB5b3UgKipjYW5ub3QqKiB1c2UgYElnbm9yZVJlc3VsdCgp
YCBvbiBhbiBhY3Rpb24gdGhhdCBhbHJlYWR5Ci1yZXR1cm5zIGB2b2lkYC4gRG9pbmcgc28gd2ls
bCBsZWFkIHRvIHVnbHkgY29tcGlsZXIgZXJyb3JzLgotCi0jIyBTZWxlY3RpbmcgYW4gQWN0aW9u
J3MgQXJndW1lbnRzICMjCi0KLVNheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gYEZvbygpYCB0
aGF0IHRha2VzIHNldmVuIGFyZ3VtZW50cywgYW5kCi15b3UgaGF2ZSBhIGN1c3RvbSBhY3Rpb24g
dGhhdCB5b3Ugd2FudCB0byBpbnZva2Ugd2hlbiBgRm9vKClgIGlzCi1jYWxsZWQuIFRyb3VibGUg
aXMsIHRoZSBjdXN0b20gYWN0aW9uIG9ubHkgd2FudHMgdGhyZWUgYXJndW1lbnRzOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotLi4uCi0gIE1P
Q0tfTUVUSE9ENyhGb28sIGJvb2woYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGlu
dCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQs
IGludD4sIGRvdWJsZT4mIHdlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
bWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkpOwotLi4uCi0KLWJvb2wgSXNWaXNpYmxlSW5R
dWFkcmFudDEoYm9vbCB2aXNpYmxlLCBpbnQgeCwgaW50IHkpIHsKLSAgcmV0dXJuIHZpc2libGUg
JiYgeCA+PSAwICYmIHkgPj0gMDsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhf
LCBfLCBfLCBfLCBfLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoSXNWaXNpYmxlSW5R
dWFkcmFudDEpKTsgIC8vIFVoLCB3b24ndCBjb21waWxlLiA6LSgKLWBgYAotCi1UbyBwbGVhc2Ug
dGhlIGNvbXBpbGVyIEdvZCwgeW91IGNhbiB0byBkZWZpbmUgYW4gImFkYXB0b3IiIHRoYXQgaGFz
Ci10aGUgc2FtZSBzaWduYXR1cmUgYXMgYEZvbygpYCBhbmQgY2FsbHMgdGhlIGN1c3RvbSBhY3Rp
b24gd2l0aCB0aGUKLXJpZ2h0IGFyZ3VtZW50czoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87
Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotYm9vbCBNeUlzVmlzaWJsZUluUXVhZHJhbnQx
KGJvb2wgdmlzaWJsZSwgY29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBkb3VibGU+JiB3
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1pbl93ZWlnaHQsIGRv
dWJsZSBtYXhfd2lnaHQpIHsKLSAgcmV0dXJuIElzVmlzaWJsZUluUXVhZHJhbnQxKHZpc2libGUs
IHgsIHkpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8s
IF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShNeUlzVmlzaWJsZUluUXVhZHJhbnQxKSk7
ICAvLyBOb3cgaXQgd29ya3MuCi1gYGAKLQotQnV0IGlzbid0IHRoaXMgYXdrd2FyZD8KLQotR29v
Z2xlIE1vY2sgcHJvdmlkZXMgYSBnZW5lcmljIF9hY3Rpb24gYWRhcHRvcl8sIHNvIHlvdSBjYW4g
c3BlbmQgeW91cgotdGltZSBtaW5kaW5nIG1vcmUgaW1wb3J0YW50IGJ1c2luZXNzIHRoYW4gd3Jp
dGluZyB5b3VyIG93bgotYWRhcHRvcnMuIEhlcmUncyB0aGUgc3ludGF4OgotCi1gYGAKLSAgV2l0
aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhY3Rpb24pCi1gYGAKLQotY3JlYXRlcyBhbiBhY3Rpb24g
dGhhdCBwYXNzZXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhdAotdGhlIGdp
dmVuIGluZGljZXMgKDAtYmFzZWQpIHRvIHRoZSBpbm5lciBgYWN0aW9uYCBhbmQgcGVyZm9ybXMK
LWl0LiBVc2luZyBgV2l0aEFyZ3NgLCBvdXIgb3JpZ2luYWwgZXhhbXBsZSBjYW4gYmUgd3JpdHRl
biBhczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKLXVzaW5nIDo6dGVzdGluZzo6V2l0aEFyZ3M7Ci0uLi4KLSAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKFdpdGhBcmdzPDAsIDIs
IDM+KEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpKTsKLSAgICAgIC8vIE5vIG5lZWQgdG8g
ZGVmaW5lIHlvdXIgb3duIGFkYXB0b3IuCi1gYGAKLQotRm9yIGJldHRlciByZWFkYWJpbGl0eSwg
R29vZ2xlIE1vY2sgYWxzbyBnaXZlcyB5b3U6Ci0KLSAgKiBgV2l0aG91dEFyZ3MoYWN0aW9uKWAg
d2hlbiB0aGUgaW5uZXIgYGFjdGlvbmAgdGFrZXMgX25vXyBhcmd1bWVudCwgYW5kCi0gICogYFdp
dGhBcmc8Tj4oYWN0aW9uKWAgKG5vIGBzYCBhZnRlciBgQXJnYCkgd2hlbiB0aGUgaW5uZXIgYGFj
dGlvbmAgdGFrZXMgX29uZV8gYXJndW1lbnQuCi0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwg
YEludm9rZVdpdGhvdXRBcmdzKC4uLilgIGlzIGp1c3Qgc3ludGFjdGljCi1zdWdhciBmb3IgYFdp
dGhvdXRBcmdzKEludm9rZSguLi4pKWAuCi0KLUhlcmUgYXJlIG1vcmUgdGlwczoKLQotICAqIFRo
ZSBpbm5lciBhY3Rpb24gdXNlZCBpbiBgV2l0aEFyZ3NgIGFuZCBmcmllbmRzIGRvZXMgbm90IGhh
dmUgdG8gYmUgYEludm9rZSgpYCAtLSBpdCBjYW4gYmUgYW55dGhpbmcuCi0gICogWW91IGNhbiBy
ZXBlYXQgYW4gYXJndW1lbnQgaW4gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbmVjZXNzYXJ5LCBlLmcu
IGBXaXRoQXJnczwyLCAzLCAzLCA1PiguLi4pYC4KLSAgKiBZb3UgY2FuIGNoYW5nZSB0aGUgb3Jk
ZXIgb2YgdGhlIGFyZ3VtZW50cywgZS5nLiBgV2l0aEFyZ3M8MywgMiwgMT4oLi4uKWAuCi0gICog
VGhlIHR5cGVzIG9mIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgZG8gX25vdF8gaGF2ZSB0byBtYXRj
aCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBpbm5lciBhY3Rpb24gZXhhY3RseS4gSXQgd29ya3MgYXMg
bG9uZyBhcyB0aGV5IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9u
ZGluZyBhcmd1bWVudHMgb2YgdGhlIGlubmVyIGFjdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHRoZSA0
LXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGlzIGFuIGBpbnRgIGFuZCBgbXlfYWN0
aW9uYCB0YWtlcyBhIGBkb3VibGVgLCBgV2l0aEFyZzw0PihteV9hY3Rpb24pYCB3aWxsIHdvcmsu
Ci0KLSMjIElnbm9yaW5nIEFyZ3VtZW50cyBpbiBBY3Rpb24gRnVuY3Rpb25zICMjCi0KLVRoZSBz
ZWxlY3RpbmctYW4tYWN0aW9uJ3MtYXJndW1lbnRzIHJlY2lwZSBzaG93ZWQgdXMgb25lIHdheSB0
byBtYWtlIGEKLW1vY2sgZnVuY3Rpb24gYW5kIGFuIGFjdGlvbiB3aXRoIGluY29tcGF0aWJsZSBh
cmd1bWVudCBsaXN0cyBmaXQKLXRvZ2V0aGVyLiBUaGUgZG93bnNpZGUgaXMgdGhhdCB3cmFwcGlu
ZyB0aGUgYWN0aW9uIGluCi1gV2l0aEFyZ3M8Li4uPigpYCBjYW4gZ2V0IHRlZGlvdXMgZm9yIHBl
b3BsZSB3cml0aW5nIHRoZSB0ZXN0cy4KLQotSWYgeW91IGFyZSBkZWZpbmluZyBhIGZ1bmN0aW9u
LCBtZXRob2QsIG9yIGZ1bmN0b3IgdG8gYmUgdXNlZCB3aXRoCi1gSW52b2tlKigpYCwgYW5kIHlv
dSBhcmUgbm90IGludGVyZXN0ZWQgaW4gc29tZSBvZiBpdHMgYXJndW1lbnRzLCBhbgotYWx0ZXJu
YXRpdmUgdG8gYFdpdGhBcmdzYCBpcyB0byBkZWNsYXJlIHRoZSB1bmludGVyZXN0aW5nIGFyZ3Vt
ZW50cyBhcwotYFVudXNlZGAuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gbGVzcyBjbHV0dGVy
ZWQgYW5kIGxlc3MgZnJhZ2lsZSBpbgotY2FzZSB0aGUgdHlwZXMgb2YgdGhlIHVuaW50ZXJlc3Rp
bmcgYXJndW1lbnRzIGNoYW5nZS4gSXQgY291bGQgYWxzbwotaW5jcmVhc2UgdGhlIGNoYW5jZSB0
aGUgYWN0aW9uIGZ1bmN0aW9uIGNhbiBiZSByZXVzZWQuIEZvciBleGFtcGxlLAotZ2l2ZW4KLQot
YGBgCi0gIE1PQ0tfTUVUSE9EMyhGb28sIGRvdWJsZShjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3Vi
bGUgeCwgZG91YmxlIHkpKTsKLSAgTU9DS19NRVRIT0QzKEJhciwgZG91YmxlKGludCBpbmRleCwg
ZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci1gYGAKLQotaW5zdGVhZCBvZgotCi1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1kb3VibGUgRGlzdGFuY2VU
b09yaWdpbldpdGhMYWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91YmxlIHkp
IHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLX0KLQotZG91YmxlIERpc3RhbmNlVG9Pcmln
aW5XaXRoSW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNx
cnQoeCp4ICsgeSp5KTsKLX0KLS4uLgotCi0gIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwg
XywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoTGFiZWwp
KTsKLSAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQotICAgICAgLldpbGxPbmNlKElu
dm9rZShEaXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KSk7Ci1gYGAKLQoteW91IGNvdWxkIHdyaXRl
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci11
c2luZyA6OnRlc3Rpbmc6OlVudXNlZDsKLQotZG91YmxlIERpc3RhbmNlVG9PcmlnaW4oVW51c2Vk
LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLX0KLS4u
LgotCi0gIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCi0gICAgICAuV2lsbE9u
Y2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLSAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUs
IF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7Ci1gYGAK
LQotIyMgU2hhcmluZyBBY3Rpb25zICMjCi0KLUp1c3QgbGlrZSBtYXRjaGVycywgYSBHb29nbGUg
TW9jayBhY3Rpb24gb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlcgotdG8gYSByZWYtY291bnRl
ZCBpbXBsZW1lbnRhdGlvbiBvYmplY3QuIFRoZXJlZm9yZSBjb3B5aW5nIGFjdGlvbnMgaXMKLWFs
c28gYWxsb3dlZCBhbmQgdmVyeSBlZmZpY2llbnQuIFdoZW4gdGhlIGxhc3QgYWN0aW9uIHRoYXQg
cmVmZXJlbmNlcwotdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1wbGVtZW50
YXRpb24gb2JqZWN0IHdpbGwgYmUKLWRlbGV0ZWQuCi0KLUlmIHlvdSBoYXZlIHNvbWUgY29tcGxl
eCBhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4gYW5kIGFnYWluLAoteW91IG1heSBu
b3QgaGF2ZSB0byBidWlsZCBpdCBmcm9tIHNjcmF0Y2ggZXZlcnl0aW1lLiBJZiB0aGUgYWN0aW9u
Ci1kb2Vzbid0IGhhdmUgYW4gaW50ZXJuYWwgc3RhdGUgKGkuZS4gaWYgaXQgYWx3YXlzIGRvZXMg
dGhlIHNhbWUgdGhpbmcKLW5vIG1hdHRlciBob3cgbWFueSB0aW1lcyBpdCBoYXMgYmVlbiBjYWxs
ZWQpLCB5b3UgY2FuIGFzc2lnbiBpdCB0byBhbgotYWN0aW9uIHZhcmlhYmxlIGFuZCB1c2UgdGhh
dCB2YXJpYWJsZSByZXBlYXRlZGx5LiBGb3IgZXhhbXBsZToKLQotYGBgCi0gIEFjdGlvbjxib29s
KGludCopPiBzZXRfZmxhZyA9IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oNSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSk7Ci0gIC4uLiB1c2Ugc2V0
X2ZsYWcgaW4gLldpbGxPbmNlKCkgYW5kIC5XaWxsUmVwZWF0ZWRseSgpIC4uLgotYGBgCi0KLUhv
d2V2ZXIsIGlmIHRoZSBhY3Rpb24gaGFzIGl0cyBvd24gc3RhdGUsIHlvdSBtYXkgYmUgc3VycHJp
c2VkIGlmIHlvdQotc2hhcmUgdGhlIGFjdGlvbiBvYmplY3QuIFN1cHBvc2UgeW91IGhhdmUgYW4g
YWN0aW9uIGZhY3RvcnkKLWBJbmNyZW1lbnRDb3VudGVyKGluaXQpYCB3aGljaCBjcmVhdGVzIGFu
IGFjdGlvbiB0aGF0IGluY3JlbWVudHMgYW5kCi1yZXR1cm5zIGEgY291bnRlciB3aG9zZSBpbml0
aWFsIHZhbHVlIGlzIGBpbml0YCwgdXNpbmcgdHdvIGFjdGlvbnMKLWNyZWF0ZWQgZnJvbSB0aGUg
c2FtZSBleHByZXNzaW9uIGFuZCB1c2luZyBhIHNoYXJlZCBhY3Rpb24gd2lsbAotZXhpaGliaXQg
ZGlmZmVyZW50IGJlaGF2aW9ycy4gRXhhbXBsZToKLQotYGBgCi0gIEVYUEVDVF9DQUxMKGZvbywg
RG9UaGlzKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVtZW50Q291bnRlcigwKSk7Ci0g
IEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVt
ZW50Q291bnRlcigwKSk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4KLSAgZm9vLkRv
VGhpcygpOyAgLy8gUmV0dXJucyAyLgotICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1cm5zIDEgLSBC
bGFoKCkgdXNlcyBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAvLyBjb3VudGVyIHRoYW4g
QmFyKCkncy4KLWBgYAotCi12ZXJzdXMKLQotYGBgCi0gIEFjdGlvbjxpbnQoKT4gaW5jcmVtZW50
ID0gSW5jcmVtZW50Q291bnRlcigwKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcygpKQot
ICAgICAgLldpbGxSZXBlYXRlZGx5KGluY3JlbWVudCk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9U
aGF0KCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKLSAgZm9vLkRvVGhpcygp
OyAgLy8gUmV0dXJucyAxLgotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCi0gIGZvby5E
b1RoYXQoKTsgIC8vIFJldHVybnMgMyAtIHRoZSBjb3VudGVyIGlzIHNoYXJlZC4KLWBgYAotCi0j
IE1pc2MgUmVjaXBlcyBvbiBVc2luZyBHb29nbGUgTW9jayAjCi0KLSMjIE1vY2tpbmcgTWV0aG9k
cyBUaGF0IFVzZSBNb3ZlLU9ubHkgVHlwZXMgIyMKLQotQysrMTEgaW50cm9kdWNlZCA8ZW0+bW92
ZS1vbmx5IHR5cGVzPC9lbT4uICBBIG1vdmUtb25seS10eXBlZCB2YWx1ZSBjYW4gYmUgbW92ZWQg
ZnJvbSBvbmUgb2JqZWN0IHRvIGFub3RoZXIsIGJ1dCBjYW5ub3QgYmUgY29waWVkLiAgYHN0ZDo6
dW5pcXVlX3B0cjxUPmAgaXMgcHJvYmFibHkgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtb3ZlLW9u
bHkgdHlwZS4KLQotTW9ja2luZyBhIG1ldGhvZCB0aGF0IHRha2VzIGFuZC9vciByZXR1cm5zIG1v
dmUtb25seSB0eXBlcyBwcmVzZW50cyBzb21lIGNoYWxsZW5nZXMsIGJ1dCBub3RoaW5nIGluc3Vy
bW91bnRhYmxlLiAgVGhpcyByZWNpcGUgc2hvd3MgeW91IGhvdyB5b3UgY2FuIGRvIGl0LgotCi1M
ZXTigJlzIHNheSB3ZSBhcmUgd29ya2luZyBvbiBhIGZpY3Rpb25hbCBwcm9qZWN0IHRoYXQgbGV0
cyBvbmUgcG9zdCBhbmQgc2hhcmUgc25pcHBldHMgY2FsbGVkIOKAnGJ1enplc+KAnS4gIFlvdXIg
Y29kZSB1c2VzIHRoZXNlIHR5cGVzOgotCi1gYGAKLWVudW0gY2xhc3MgQWNjZXNzTGV2ZWwgeyBr
SW50ZXJuYWwsIGtQdWJsaWMgfTsKLQotY2xhc3MgQnV6eiB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBCdXp6KEFjY2Vzc0xldmVsIGFjY2VzcykgeyDigKYgfQotICAuLi4KLX07Ci0KLWNsYXNzIEJ1
enplciB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5CdXp6ZXIoKSB7fQotICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxCdXp6PiBNYWtlQnV6eihjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCkgPSAwOwot
ICB2aXJ0dWFsIGJvb2wgU2hhcmVCdXp6KHN0ZDo6dW5pcXVlX3B0cjxCdXp6PiBidXp6LCBUaW1l
IHRpbWVzdGFtcCkgPSAwOwotICAuLi4KLX07Ci1gYGAKLQotQSBgQnV6emAgb2JqZWN0IHJlcHJl
c2VudHMgYSBzbmlwcGV0IGJlaW5nIHBvc3RlZC4gIEEgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRo
ZSBgQnV6emVyYCBpbnRlcmZhY2UgaXMgY2FwYWJsZSBvZiBjcmVhdGluZyBhbmQgc2hhcmluZyBg
QnV6emAuICBNZXRob2RzIGluIGBCdXp6ZXJgIG1heSByZXR1cm4gYSBgdW5pcXVlX3B0cjxCdXp6
PmAgb3IgdGFrZSBhIGB1bmlxdWVfcHRyPEJ1eno+YC4gIE5vdyB3ZSBuZWVkIHRvIG1vY2sgYEJ1
enplcmAgaW4gb3VyIHRlc3RzLgotCi1UbyBtb2NrIGEgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG1v
dmUtb25seSB0eXBlLCB5b3UganVzdCB1c2UgdGhlIGZhbWlsaWFyIGBNT0NLX01FVEhPRGAgc3lu
dGF4IGFzIHVzdWFsOgotCi1gYGAKLWNsYXNzIE1vY2tCdXp6ZXIgOiBwdWJsaWMgQnV6emVyIHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShNYWtlQnV6eiwgc3RkOjp1bmlxdWVfcHRyPEJ1eno+
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KSk7Ci0gIOKApgotfTsKLWBgYAotCi1Ib3dldmVyLCBp
ZiB5b3UgYXR0ZW1wdCB0byB1c2UgdGhlIHNhbWUgYE1PQ0tfTUVUSE9EYCBwYXR0ZXJuIHRvIG1v
Y2sgYSBtZXRob2QgdGhhdCB0YWtlcyBhIG1vdmUtb25seSBwYXJhbWV0ZXIsIHlvdeKAmWxsIGdl
dCBhIGNvbXBpbGVyIGVycm9yIGN1cnJlbnRseToKLQotYGBgCi0gIC8vIERvZXMgTk9UIGNvbXBp
bGUhCi0gIE1PQ0tfTUVUSE9EMihTaGFyZUJ1enosIGJvb2woc3RkOjp1bmlxdWVfcHRyPEJ1eno+
IGJ1enosIFRpbWUgdGltZXN0YW1wKSk7Ci1gYGAKLQotV2hpbGUgaXTigJlzIGhpZ2hseSBkZXNp
cmFibGUgdG8gbWFrZSB0aGlzIHN5bnRheCBqdXN0IHdvcmssIGl04oCZcyBub3QgdHJpdmlhbCBh
bmQgdGhlIHdvcmsgaGFzbuKAmXQgYmVlbiBkb25lIHlldC4gIEZvcnR1bmF0ZWx5LCB0aGVyZSBp
cyBhIHRyaWNrIHlvdSBjYW4gYXBwbHkgdG9kYXkgdG8gZ2V0IHNvbWV0aGluZyB0aGF0IHdvcmtz
IG5lYXJseSBhcyB3ZWxsIGFzIHRoaXMuCi0KLVRoZSB0cmljaywgaXMgdG8gZGVsZWdhdGUgdGhl
IGBTaGFyZUJ1enooKWAgbWV0aG9kIHRvIGEgbW9jayBtZXRob2QgKGxldOKAmXMgY2FsbCBpdCBg
RG9TaGFyZUJ1enooKWApIHRoYXQgZG9lcyBub3QgdGFrZSBtb3ZlLW9ubHkgcGFyYW1ldGVyczoK
LQotYGBgCi1jbGFzcyBNb2NrQnV6emVyIDogcHVibGljIEJ1enplciB7Ci0gcHVibGljOgotICBN
T0NLX01FVEhPRDEoTWFrZUJ1enosIHN0ZDo6dW5pcXVlX3B0cjxCdXp6Pihjb25zdCBzdGQ6OnN0
cmluZyYgdGV4dCkpOwotICBNT0NLX01FVEhPRDIoRG9TaGFyZUJ1enosIGJvb2woQnV6eiogYnV6
eiwgVGltZSB0aW1lc3RhbXApKTsKLSAgYm9vbCBTaGFyZUJ1enooc3RkOjp1bmlxdWVfcHRyPEJ1
eno+IGJ1enosIFRpbWUgdGltZXN0YW1wKSB7Ci0gICAgcmV0dXJuIERvU2hhcmVCdXp6KGJ1enou
Z2V0KCksIHRpbWVzdGFtcCk7Ci0gIH0KLX07Ci1gYGAKLQotTm90ZSB0aGF0IHRoZXJlJ3Mgbm8g
bmVlZCB0byBkZWZpbmUgb3IgZGVjbGFyZSBgRG9TaGFyZUJ1enooKWAgaW4gYSBiYXNlIGNsYXNz
LiAgWW91IG9ubHkgbmVlZCB0byBkZWZpbmUgaXQgYXMgYSBgTU9DS19NRVRIT0RgIGluIHRoZSBt
b2NrIGNsYXNzLgotCi1Ob3cgdGhhdCB3ZSBoYXZlIHRoZSBtb2NrIGNsYXNzIGRlZmluZWQsIHdl
IGNhbiB1c2UgaXQgaW4gdGVzdHMuICBJbiB0aGUgZm9sbG93aW5nIGNvZGUgZXhhbXBsZXMsIHdl
IGFzc3VtZSB0aGF0IHdlIGhhdmUgZGVmaW5lZCBhIGBNb2NrQnV6emVyYCBvYmplY3QgbmFtZWQg
YG1vY2tfYnV6emVyX2A6Ci0KLWBgYAotICBNb2NrQnV6emVyIG1vY2tfYnV6emVyXzsKLWBgYAot
Ci1GaXJzdCBsZXTigJlzIHNlZSBob3cgd2UgY2FuIHNldCBleHBlY3RhdGlvbnMgb24gdGhlIGBN
YWtlQnV6eigpYCBtZXRob2QsIHdoaWNoIHJldHVybnMgYSBgdW5pcXVlX3B0cjxCdXp6PmAuCi0K
LUFzIHVzdWFsLCBpZiB5b3Ugc2V0IGFuIGV4cGVjdGF0aW9uIHdpdGhvdXQgYW4gYWN0aW9uIChp
LmUuIHRoZSBgLldpbGxPbmNlKClgIG9yIGAuV2lsbFJlcGVhdGVkKClgIGNsYXVzZSksIHdoZW4g
dGhhdCBleHBlY3RhdGlvbiBmaXJlcywgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGF0IG1ldGhv
ZCB3aWxsIGJlIHRha2VuLiAgU2luY2UgYHVuaXF1ZV9wdHI8PmAgaGFzIGEgZGVmYXVsdCBjb25z
dHJ1Y3RvciB0aGF0IHJldHVybnMgYSBudWxsIGB1bmlxdWVfcHRyYCwgdGhhdOKAmXMgd2hhdCB5
b3XigJlsbCBnZXQgaWYgeW91IGRvbuKAmXQgc3BlY2lmeSBhbiBhY3Rpb246Ci0KLWBgYAotICAv
LyBVc2UgdGhlIGRlZmF1bHQgYWN0aW9uLgotICBFWFBFQ1RfQ0FMTChtb2NrX2J1enplcl8sIE1h
a2VCdXp6KCJoZWxsbyIpKTsKLQotICAvLyBUcmlnZ2VycyB0aGUgcHJldmlvdXMgRVhQRUNUX0NB
TEwuCi0gIEVYUEVDVF9FUShudWxscHRyLCBtb2NrX2J1enplcl8uTWFrZUJ1enooImhlbGxvIikp
OwotYGBgCi0KLUlmIHlvdSBhcmUgbm90IGhhcHB5IHdpdGggdGhlIGRlZmF1bHQgYWN0aW9uLCB5
b3UgY2FuIHR3ZWFrIGl0LiAgRGVwZW5kaW5nIG9uIHdoYXQgeW91IG5lZWQsIHlvdSBtYXkgZWl0
aGVyIHR3ZWFrIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgYSBzcGVjaWZpYyAobW9jayBvYmplY3Qs
IG1vY2sgbWV0aG9kKSBjb21iaW5hdGlvbiB1c2luZyBgT05fQ0FMTCgpYCwgb3IgeW91IG1heSB0
d2VhayB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGFsbCBtb2NrIG1ldGhvZHMgdGhhdCByZXR1cm4g
YSBzcGVjaWZpYyB0eXBlLiAgVGhlIHVzYWdlIG9mIGBPTl9DQUxMKClgIGlzIHNpbWlsYXIgdG8g
YEVYUEVDVF9DQUxMKClgLCBzbyB3ZeKAmWxsIHNraXAgaXQgYW5kIGp1c3QgZXhwbGFpbiBob3cg
dG8gZG8gdGhlIGxhdHRlciAodHdlYWtpbmcgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHNwZWNp
ZmljIHJldHVybiB0eXBlKS4gIFlvdSBkbyB0aGlzIHZpYSB0aGUgYERlZmF1bHRWYWx1ZTw+OjpT
ZXRGYWN0b3J5KClgIGFuZCBgRGVmYXVsdFZhbHVlPD46OkNsZWFyKClgIEFQSToKLQotYGBgCi0g
IC8vIFNldHMgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciByZXR1cm4gdHlwZSBzdGQ6OnVuaXF1ZV9w
dHI8QnV6ej4gdG8KLSAgLy8gY3JlYXRpbmcgYSBuZXcgQnV6eiBldmVyeSB0aW1lLgotICBEZWZh
dWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPEJ1eno+Pjo6U2V0RmFjdG9yeSgKLSAgICAgIFtdIHsg
cmV0dXJuIE1ha2VVbmlxdWU8QnV6ej4oQWNjZXNzTGV2ZWw6OmtJbnRlcm5hbCk7IH0pOwotCi0g
IC8vIFdoZW4gdGhpcyBmaXJlcywgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIE1ha2VCdXp6KCkgd2ls
bCBydW4sIHdoaWNoCi0gIC8vIHdpbGwgcmV0dXJuIGEgbmV3IEJ1enogb2JqZWN0LgotICBFWFBF
Q1RfQ0FMTChtb2NrX2J1enplcl8sIE1ha2VCdXp6KCJoZWxsbyIpKS5UaW1lcyhBbnlOdW1iZXIo
KSk7Ci0KLSAgYXV0byBidXp6MSA9IG1vY2tfYnV6emVyXy5NYWtlQnV6eigiaGVsbG8iKTsKLSAg
YXV0byBidXp6MiA9IG1vY2tfYnV6emVyXy5NYWtlQnV6eigiaGVsbG8iKTsKLSAgRVhQRUNUX05F
KG51bGxwdHIsIGJ1enoxKTsKLSAgRVhQRUNUX05FKG51bGxwdHIsIGJ1enoyKTsKLSAgRVhQRUNU
X05FKGJ1enoxLCBidXp6Mik7Ci0KLSAgLy8gUmVzZXRzIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3Ig
cmV0dXJuIHR5cGUgc3RkOjp1bmlxdWVfcHRyPEJ1eno+LAotICAvLyB0byBhdm9pZCBpbnRlcmZl
cmUgd2l0aCBvdGhlciB0ZXN0cy4KLSAgRGVmYXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxCdXp6
Pj46OkNsZWFyKCk7Ci1gYGAKLQotV2hhdCBpZiB5b3Ugd2FudCB0aGUgbWV0aG9kIHRvIGRvIHNv
bWV0aGluZyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IGFjdGlvbj8gIElmIHlvdSBqdXN0IG5lZWQg
dG8gcmV0dXJuIGEgcHJlLWRlZmluZWQgbW92ZS1vbmx5IHZhbHVlLCB5b3UgY2FuIHVzZSB0aGUg
YFJldHVybihCeU1vdmUoLi4uKSlgIGFjdGlvbjoKLQotYGBgCi0gIC8vIFdoZW4gdGhpcyBmaXJl
cywgdGhlIHVuaXF1ZV9wdHI8PiBzcGVjaWZpZWQgYnkgQnlNb3ZlKC4uLikgd2lsbAotICAvLyBi
ZSByZXR1cm5lZC4KLSAgRVhQRUNUX0NBTEwobW9ja19idXp6ZXJfLCBNYWtlQnV6eigid29ybGQi
KSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oQnlNb3ZlKE1ha2VVbmlxdWU8QnV6ej4oQWNjZXNz
TGV2ZWw6OmtJbnRlcm5hbCkpKSk7Ci0KLSAgRVhQRUNUX05FKG51bGxwdHIsIG1vY2tfYnV6emVy
Xy5NYWtlQnV6eigid29ybGQiKSk7Ci1gYGAKLQotTm90ZSB0aGF0IGBCeU1vdmUoKWAgaXMgZXNz
ZW50aWFsIGhlcmUgLSBpZiB5b3UgZHJvcCBpdCwgdGhlIGNvZGUgd29u4oCZdCBjb21waWxlLgot
Ci1RdWl6IHRpbWUhICBXaGF0IGRvIHlvdSB0aGluayB3aWxsIGhhcHBlbiBpZiBhIGBSZXR1cm4o
QnlNb3ZlKC4uLikpYCBhY3Rpb24gaXMgcGVyZm9ybWVkIG1vcmUgdGhhbiBvbmNlIChlLmcuIHlv
dSB3cml0ZSBg4oCmLldpbGxSZXBlYXRlZGx5KFJldHVybihCeU1vdmUoLi4uKSkpO2ApPyAgQ29t
ZSB0aGluayBvZiBpdCwgYWZ0ZXIgdGhlIGZpcnN0IHRpbWUgdGhlIGFjdGlvbiBydW5zLCB0aGUg
c291cmNlIHZhbHVlIHdpbGwgYmUgY29uc3VtZWQgKHNpbmNlIGl04oCZcyBhIG1vdmUtb25seSB2
YWx1ZSksIHNvIHRoZSBuZXh0IHRpbWUgYXJvdW5kLCB0aGVyZeKAmXMgbm8gdmFsdWUgdG8gbW92
ZSBmcm9tIC0tIHlvdeKAmWxsIGdldCBhIHJ1bi10aW1lIGVycm9yIHRoYXQgYFJldHVybihCeU1v
dmUoLi4uKSlgIGNhbiBvbmx5IGJlIHJ1biBvbmNlLgotCi1JZiB5b3UgbmVlZCB5b3VyIG1vY2sg
bWV0aG9kIHRvIGRvIG1vcmUgdGhhbiBqdXN0IG1vdmluZyBhIHByZS1kZWZpbmVkIHZhbHVlLCBy
ZW1lbWJlciB0aGF0IHlvdSBjYW4gYWx3YXlzIHVzZSBgSW52b2tlKClgIHRvIGNhbGwgYSBsYW1i
ZGEgb3IgYSBjYWxsYWJsZSBvYmplY3QsIHdoaWNoIGNhbiBkbyBwcmV0dHkgbXVjaCBhbnl0aGlu
ZyB5b3Ugd2FudDoKLQotYGBgCi0gIEVYUEVDVF9DQUxMKG1vY2tfYnV6emVyXywgTWFrZUJ1enoo
IngiKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShJbnZva2UoW10oY29uc3Qgc3RkOjpzdHJpbmcm
IHRleHQpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QnV6ej4oQWNjZXNzTGV2
ZWw6OmtJbnRlcm5hbCk7Ci0gICAgICB9KSk7Ci0KLSAgRVhQRUNUX05FKG51bGxwdHIsIG1vY2tf
YnV6emVyXy5NYWtlQnV6eigieCIpKTsKLSAgRVhQRUNUX05FKG51bGxwdHIsIG1vY2tfYnV6emVy
Xy5NYWtlQnV6eigieCIpKTsKLWBgYAotCi1FdmVyeSB0aW1lIHRoaXMgYEVYUEVDVF9DQUxMYCBm
aXJlcywgYSBuZXcgYHVuaXF1ZV9wdHI8QnV6ej5gIHdpbGwgYmUgY3JlYXRlZCBhbmQgcmV0dXJu
ZWQuICBZb3UgY2Fubm90IGRvIHRoaXMgd2l0aCBgUmV0dXJuKEJ5TW92ZSguLi4pKWAuCi0KLU5v
dyB0aGVyZeKAmXMgb25lIHRvcGljIHdlIGhhdmVu4oCZdCBjb3ZlcmVkOiBob3cgZG8geW91IHNl
dCBleHBlY3RhdGlvbnMgb24gYFNoYXJlQnV6eigpYCwgd2hpY2ggdGFrZXMgYSBtb3ZlLW9ubHkt
dHlwZWQgcGFyYW1ldGVyPyAgVGhlIGFuc3dlciBpcyB5b3UgZG9u4oCZdC4gIEluc3RlYWQsIHlv
dSBzZXQgZXhwZWN0YXRpb25zIG9uIHRoZSBgRG9TaGFyZUJ1enooKWAgbW9jayBtZXRob2QgKHJl
bWVtYmVyIHRoYXQgd2UgZGVmaW5lZCBhIGBNT0NLX01FVEhPRGAgZm9yIGBEb1NoYXJlQnV6eigp
YCwgbm90IGBTaGFyZUJ1enooKWApOgotCi1gYGAKLSAgRVhQRUNUX0NBTEwobW9ja19idXp6ZXJf
LCBEb1NoYXJlQnV6eihOb3ROdWxsKCksIF8pKTsKLQotICAvLyBXaGVuIG9uZSBjYWxscyBTaGFy
ZUJ1enooKSBvbiB0aGUgTW9ja0J1enplciBsaWtlIHRoaXMsIHRoZSBjYWxsIGlzCi0gIC8vIGZv
cndhcmRlZCB0byBEb1NoYXJlQnV6eigpLCB3aGljaCBpcyBtb2NrZWQuICBUaGVyZWZvcmUgdGhp
cyBzdGF0ZW1lbnQKLSAgLy8gd2lsbCB0cmlnZ2VyIHRoZSBhYm92ZSBFWFBFQ1RfQ0FMTC4KLSAg
bW9ja19idXp6ZXJfLlNoYXJlQnV6eihNYWtlVW5pcXVlJmx0O0J1enomZ3Q7KEFjY2Vzc0xldmVs
OjprSW50ZXJuYWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgIDo6YmFzZTo6Tm93KCkpOwot
YGBgCi0KLVNvbWUgb2YgeW91IG1heSBoYXZlIHNwb3R0ZWQgb25lIHByb2JsZW0gd2l0aCB0aGlz
IGFwcHJvYWNoOiB0aGUgYERvU2hhcmVCdXp6KClgIG1vY2sgbWV0aG9kIGRpZmZlcnMgZnJvbSB0
aGUgcmVhbCBgU2hhcmVCdXp6KClgIG1ldGhvZCBpbiB0aGF0IGl0IGNhbm5vdCB0YWtlIG93bmVy
c2hpcCBvZiB0aGUgYnV6eiBwYXJhbWV0ZXIgLSBgU2hhcmVCdXp6KClgIHdpbGwgYWx3YXlzIGRl
bGV0ZSBidXp6IGFmdGVyIGBEb1NoYXJlQnV6eigpYCByZXR1cm5zLiAgV2hhdCBpZiB5b3UgbmVl
ZCB0byBzYXZlIHRoZSBidXp6IG9iamVjdCBzb21ld2hlcmUgZm9yIGxhdGVyIHVzZSB3aGVuIGBT
aGFyZUJ1enooKWAgaXMgY2FsbGVkPyAgSW5kZWVkLCB5b3UnZCBiZSBzdHVjay4KLQotQW5vdGhl
ciBwcm9ibGVtIHdpdGggdGhlIGBEb1NoYXJlQnV6eigpYCB3ZSBoYWQgaXMgdGhhdCBpdCBjYW4g
c3VycHJpc2UgcGVvcGxlIHJlYWRpbmcgb3IgbWFpbnRhaW5pbmcgdGhlIHRlc3QsIGFzIG9uZSB3
b3VsZCBleHBlY3QgdGhhdCBgRG9TaGFyZUJ1enooKWAgaGFzIChsb2dpY2FsbHkpIHRoZSBzYW1l
IGNvbnRyYWN0IGFzIGBTaGFyZUJ1enooKWAuCi0KLUZvcnR1bmF0ZWx5LCB0aGVzZSBwcm9ibGVt
cyBjYW4gYmUgZml4ZWQgd2l0aCBhIGJpdCBtb3JlIGNvZGUuICBMZXQncyB0cnkgdG8gZ2V0IGl0
IHJpZ2h0IHRoaXMgdGltZToKLQotYGBgCi1jbGFzcyBNb2NrQnV6emVyIDogcHVibGljIEJ1enpl
ciB7Ci0gcHVibGljOgotICBNb2NrQnV6emVyKCkgewotICAgIC8vIFNpbmNlIERvU2hhcmVCdXp6
KGJ1enosIHRpbWUpIGlzIHN1cHBvc2VkIHRvIHRha2Ugb3duZXJzaGlwIG9mCi0gICAgLy8gYnV6
eiwgZGVmaW5lIGEgZGVmYXVsdCBiZWhhdmlvciBmb3IgRG9TaGFyZUJ1enooYnV6eiwgdGltZSkg
dG8KLSAgICAvLyBkZWxldGUgYnV6ei4KLSAgICBPTl9DQUxMKCp0aGlzLCBEb1NoYXJlQnV6eihf
LCBfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKFtdKEJ1enoqIGJ1enosIFRpbWUg
dGltZXN0YW1wKSB7Ci0gICAgICAgICAgZGVsZXRlIGJ1eno7Ci0gICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0pKTsKLSAgfQotCi0gIE1PQ0tfTUVUSE9EMShNYWtlQnV6eiwgc3RkOjp1
bmlxdWVfcHRyPEJ1eno+KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXh0KSk7Ci0KLSAgLy8gVGFrZXMg
b3duZXJzaGlwIG9mIGJ1enouCi0gIE1PQ0tfTUVUSE9EMihEb1NoYXJlQnV6eiwgYm9vbChCdXp6
KiBidXp6LCBUaW1lIHRpbWVzdGFtcCkpOwotICBib29sIFNoYXJlQnV6eihzdGQ6OnVuaXF1ZV9w
dHI8QnV6ej4gYnV6eiwgVGltZSB0aW1lc3RhbXApIHsKLSAgICByZXR1cm4gRG9TaGFyZUJ1enoo
YnV6ei5yZWxlYXNlKCksIHRpbWVzdGFtcCk7Ci0gIH0KLX07Ci1gYGAKLQotTm93LCB0aGUgbW9j
ayBgRG9TaGFyZUJ1enooKWAgbWV0aG9kIGlzIGZyZWUgdG8gc2F2ZSB0aGUgYnV6eiBhcmd1bWVu
dCBmb3IgbGF0ZXIgdXNlIGlmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudDoKLQotYGBgCi0gIHN0ZDo6
dW5pcXVlX3B0cjxCdXp6PiBpbnRlcmNlcHRlZF9idXp6OwotICBFWFBFQ1RfQ0FMTChtb2NrX2J1
enplcl8sIERvU2hhcmVCdXp6KE5vdE51bGwoKSwgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tl
KFsmYW1wO2ludGVyY2VwdGVkX2J1enpdKEJ1enoqIGJ1enosIFRpbWUgdGltZXN0YW1wKSB7Ci0g
ICAgICAgIC8vIFNhdmUgYnV6eiBpbiBpbnRlcmNlcHRlZF9idXp6IGZvciBhbmFseXNpcyBsYXRl
ci4KLSAgICAgICAgaW50ZXJjZXB0ZWRfYnV6ei5yZXNldChidXp6KTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgfSkpOwotCi0gIG1vY2tfYnV6emVyXy5TaGFyZUJ1enooc3RkOjptYWtl
X3VuaXF1ZTxCdXp6PihBY2Nlc3NMZXZlbDo6a0ludGVybmFsKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBOb3coKSk7Ci0gIEVYUEVDVF9ORShudWxscHRyLCBpbnRlcmNlcHRlZF9idXp6KTsK
LWBgYAotCi1Vc2luZyB0aGUgdHJpY2tzIGNvdmVyZWQgaW4gdGhpcyByZWNpcGUsIHlvdSBhcmUg
bm93IGFibGUgdG8gbW9jayBtZXRob2RzIHRoYXQgdGFrZSBhbmQvb3IgcmV0dXJuIG1vdmUtb25s
eSB0eXBlcy4gIFB1dCB5b3VyIG5ld2x5LWFjcXVpcmVkIHBvd2VyIHRvIGdvb2QgdXNlIC0gd2hl
biB5b3UgZGVzaWduIGEgbmV3IEFQSSwgeW91IGNhbiBub3cgZmVlbCBjb21mb3J0YWJsZSB1c2lu
ZyBgdW5pcXVlX3B0cnNgIGFzIGFwcHJvcHJpYXRlLCB3aXRob3V0IGZlYXJpbmcgdGhhdCBkb2lu
ZyBzbyB3aWxsIGNvbXByb21pc2UgeW91ciB0ZXN0cy4KLQotIyMgTWFraW5nIHRoZSBDb21waWxh
dGlvbiBGYXN0ZXIgIyMKLQotQmVsaWV2ZSBpdCBvciBub3QsIHRoZSBfdmFzdCBtYWpvcml0eV8g
b2YgdGhlIHRpbWUgc3BlbnQgb24gY29tcGlsaW5nCi1hIG1vY2sgY2xhc3MgaXMgaW4gZ2VuZXJh
dGluZyBpdHMgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IsIGFzIHRoZXkKLXBlcmZvcm0gbm9u
LXRyaXZpYWwgdGFza3MgKGUuZy4gdmVyaWZpY2F0aW9uIG9mIHRoZQotZXhwZWN0YXRpb25zKS4g
V2hhdCdzIG1vcmUsIG1vY2sgbWV0aG9kcyB3aXRoIGRpZmZlcmVudCBzaWduYXR1cmVzCi1oYXZl
IGRpZmZlcmVudCB0eXBlcyBhbmQgdGh1cyB0aGVpciBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMg
bmVlZCB0bwotYmUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBzZXBhcmF0ZWx5LiBBcyBhIHJl
c3VsdCwgaWYgeW91IG1vY2sgbWFueQotZGlmZmVyZW50IHR5cGVzIG9mIG1ldGhvZHMsIGNvbXBp
bGluZyB5b3VyIG1vY2sgY2xhc3MgY2FuIGdldCByZWFsbHkKLXNsb3cuCi0KLUlmIHlvdSBhcmUg
ZXhwZXJpZW5jaW5nIHNsb3cgY29tcGlsYXRpb24sIHlvdSBjYW4gbW92ZSB0aGUgZGVmaW5pdGlv
bgotb2YgeW91ciBtb2NrIGNsYXNzJyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvdXQgb2Yg
dGhlIGNsYXNzIGJvZHkKLWFuZCBpbnRvIGEgYC5jcHBgIGZpbGUuIFRoaXMgd2F5LCBldmVuIGlm
IHlvdSBgI2luY2x1ZGVgIHlvdXIgbW9jawotY2xhc3MgaW4gTiBmaWxlcywgdGhlIGNvbXBpbGVy
IG9ubHkgbmVlZHMgdG8gZ2VuZXJhdGUgaXRzIGNvbnN0cnVjdG9yCi1hbmQgZGVzdHJ1Y3RvciBv
bmNlLCByZXN1bHRpbmcgaW4gYSBtdWNoIGZhc3RlciBjb21waWxhdGlvbi4KLQotTGV0J3MgaWxs
dXN0cmF0ZSB0aGUgaWRlYSB1c2luZyBhbiBleGFtcGxlLiBIZXJlJ3MgdGhlIGRlZmluaXRpb24g
b2YgYQotbW9jayBjbGFzcyBiZWZvcmUgYXBwbHlpbmcgdGhpcyByZWNpcGU6Ci0KLWBgYAotLy8g
RmlsZSBtb2NrX2Zvby5oLgotLi4uCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVi
bGljOgotICAvLyBTaW5jZSB3ZSBkb24ndCBkZWNsYXJlIHRoZSBjb25zdHJ1Y3RvciBvciB0aGUg
ZGVzdHJ1Y3RvciwKLSAgLy8gdGhlIGNvbXBpbGVyIHdpbGwgZ2VuZXJhdGUgdGhlbSBpbiBldmVy
eSB0cmFuc2xhdGlvbiB1bml0Ci0gIC8vIHdoZXJlIHRoaXMgbW9jayBjbGFzcyBpcyB1c2VkLgot
Ci0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERvVGhhdCwg
Ym9vbChjb25zdCBjaGFyKiBzdHIpKTsKLSAgLi4uIG1vcmUgbW9jayBtZXRob2RzIC4uLgotfTsK
LWBgYAotCi1BZnRlciB0aGUgY2hhbmdlLCBpdCB3b3VsZCBsb29rIGxpa2U6Ci0KLWBgYAotLy8g
RmlsZSBtb2NrX2Zvby5oLgotLi4uCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVi
bGljOgotICAvLyBUaGUgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgYXJlIGRlY2xhcmVkLCBi
dXQgbm90IGRlZmluZWQsIGhlcmUuCi0gIE1vY2tGb28oKTsKLSAgdmlydHVhbCB+TW9ja0Zvbygp
OwotCi0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERvVGhh
dCwgYm9vbChjb25zdCBjaGFyKiBzdHIpKTsKLSAgLi4uIG1vcmUgbW9jayBtZXRob2RzIC4uLgot
fTsKLWBgYAotYW5kCi1gYGAKLS8vIEZpbGUgbW9ja19mb28uY3BwLgotI2luY2x1ZGUgInBhdGgv
dG8vbW9ja19mb28uaCIKLQotLy8gVGhlIGRlZmluaXRpb25zIG1heSBhcHBlYXIgdHJpdmlhbCwg
YnV0IHRoZSBmdW5jdGlvbnMgYWN0dWFsbHkgZG8gYQotLy8gbG90IG9mIHRoaW5ncyB0aHJvdWdo
IHRoZSBjb25zdHJ1Y3RvcnMvZGVzdHJ1Y3RvcnMgb2YgdGhlIG1lbWJlcgotLy8gdmFyaWFibGVz
IHVzZWQgdG8gaW1wbGVtZW50IHRoZSBtb2NrIG1ldGhvZHMuCi1Nb2NrRm9vOjpNb2NrRm9vKCkg
e30KLU1vY2tGb286On5Nb2NrRm9vKCkge30KLWBgYAotCi0jIyBGb3JjaW5nIGEgVmVyaWZpY2F0
aW9uICMjCi0KLVdoZW4gaXQncyBiZWluZyBkZXN0b3llZCwgeW91ciBmcmllbmRseSBtb2NrIG9i
amVjdCB3aWxsIGF1dG9tYXRpY2FsbHkKLXZlcmlmeSB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24g
aXQgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHdpbGwKLWdlbmVyYXRlIFtHb29nbGUgVGVzdF0o
Li4vLi4vZ29vZ2xldGVzdC8pIGZhaWx1cmVzCi1pZiBub3QuIFRoaXMgaXMgY29udmVuaWVudCBh
cyBpdCBsZWF2ZXMgeW91IHdpdGggb25lIGxlc3MgdGhpbmcgdG8KLXdvcnJ5IGFib3V0LiBUaGF0
IGlzLCB1bmxlc3MgeW91IGFyZSBub3Qgc3VyZSBpZiB5b3VyIG1vY2sgb2JqZWN0IHdpbGwKLWJl
IGRlc3RveWVkLgotCi1Ib3cgY291bGQgaXQgYmUgdGhhdCB5b3VyIG1vY2sgb2JqZWN0IHdvbid0
IGV2ZW50dWFsbHkgYmUgZGVzdHJveWVkPwotV2VsbCwgaXQgbWlnaHQgYmUgY3JlYXRlZCBvbiB0
aGUgaGVhcCBhbmQgb3duZWQgYnkgdGhlIGNvZGUgeW91IGFyZQotdGVzdGluZy4gU3VwcG9zZSB0
aGVyZSdzIGEgYnVnIGluIHRoYXQgY29kZSBhbmQgaXQgZG9lc24ndCBkZWxldGUgdGhlCi1tb2Nr
IG9iamVjdCBwcm9wZXJseSAtIHlvdSBjb3VsZCBlbmQgdXAgd2l0aCBhIHBhc3NpbmcgdGVzdCB3
aGVuCi10aGVyZSdzIGFjdHVhbGx5IGEgYnVnLgotCi1Vc2luZyBhIGhlYXAgY2hlY2tlciBpcyBh
IGdvb2QgaWRlYSBhbmQgY2FuIGFsbGV2aWF0ZSB0aGUgY29uY2VybiwgYnV0Ci1pdHMgaW1wbGVt
ZW50YXRpb24gbWF5IG5vdCBiZSAxMDAlIHJlbGlhYmxlLiBTbywgc29tZXRpbWVzIHlvdSBkbyB3
YW50Ci10byBfZm9yY2VfIEdvb2dsZSBNb2NrIHRvIHZlcmlmeSBhIG1vY2sgb2JqZWN0IGJlZm9y
ZSBpdCBpcwotKGhvcGVmdWxseSkgZGVzdHJ1Y3RlZC4gWW91IGNhbiBkbyB0aGlzIHdpdGgKLWBN
b2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmplY3QpYDoKLQotYGBgCi1U
RVNUKE15U2VydmVyVGVzdCwgUHJvY2Vzc2VzUmVxdWVzdCkgewotICB1c2luZyA6OnRlc3Rpbmc6
Ok1vY2s7Ci0KLSAgTW9ja0ZvbyogY29uc3QgZm9vID0gbmV3IE1vY2tGb287Ci0gIEVYUEVDVF9D
QUxMKCpmb28sIC4uLikuLi47Ci0gIC8vIC4uLiBvdGhlciBleHBlY3RhdGlvbnMgLi4uCi0KLSAg
Ly8gc2VydmVyIG5vdyBvd25zIGZvby4KLSAgTXlTZXJ2ZXIgc2VydmVyKGZvbyk7Ci0gIHNlcnZl
ci5Qcm9jZXNzUmVxdWVzdCguLi4pOwotCi0gIC8vIEluIGNhc2UgdGhhdCBzZXJ2ZXIncyBkZXN0
cnVjdG9yIHdpbGwgZm9yZ2V0IHRvIGRlbGV0ZSBmb28sCi0gIC8vIHRoaXMgd2lsbCB2ZXJpZnkg
dGhlIGV4cGVjdGF0aW9ucyBhbnl3YXkuCi0gIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKGZvbyk7Ci19ICAvLyBzZXJ2ZXIgaXMgZGVzdHJveWVkIHdoZW4gaXQgZ29lcyBvdXQgb2Yg
c2NvcGUgaGVyZS4KLWBgYAotCi0qKlRpcDoqKiBUaGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKClgIGZ1bmN0aW9uIHJldHVybnMgYQotYGJvb2xgIHRvIGluZGljYXRlIHdoZXRo
ZXIgdGhlIHZlcmlmaWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAoYHRydWVgIGZvcgoteWVzKSwgc28g
eW91IGNhbiB3cmFwIHRoYXQgZnVuY3Rpb24gY2FsbCBpbnNpZGUgYSBgQVNTRVJUX1RSVUUoKWAg
aWYKLXRoZXJlIGlzIG5vIHBvaW50IGdvaW5nIGZ1cnRoZXIgd2hlbiB0aGUgdmVyaWZpY2F0aW9u
IGhhcyBmYWlsZWQuCi0KLSMjIFVzaW5nIENoZWNrIFBvaW50cyAjIwotCi1Tb21ldGltZXMgeW91
IG1heSB3YW50IHRvICJyZXNldCIgYSBtb2NrIG9iamVjdCBhdCB2YXJpb3VzIGNoZWNrCi1wb2lu
dHMgaW4geW91ciB0ZXN0OiBhdCBlYWNoIGNoZWNrIHBvaW50LCB5b3UgdmVyaWZ5IHRoYXQgYWxs
IGV4aXN0aW5nCi1leHBlY3RhdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGhhdmUgYmVlbiBzYXRp
c2ZpZWQsIGFuZCB0aGVuIHlvdSBzZXQKLXNvbWUgbmV3IGV4cGVjdGF0aW9ucyBvbiBpdCBhcyBp
ZiBpdCdzIG5ld2x5IGNyZWF0ZWQuIFRoaXMgYWxsb3dzIHlvdQotdG8gd29yayB3aXRoIGEgbW9j
ayBvYmplY3QgaW4gInBoYXNlcyIgd2hvc2Ugc2l6ZXMgYXJlIGVhY2gKLW1hbmFnZWFibGUuCi0K
LU9uZSBzdWNoIHNjZW5hcmlvIGlzIHRoYXQgaW4geW91ciB0ZXN0J3MgYFNldFVwKClgIGZ1bmN0
aW9uLCB5b3UgbWF5Ci13YW50IHRvIHB1dCB0aGUgb2JqZWN0IHlvdSBhcmUgdGVzdGluZyBpbnRv
IGEgY2VydGFpbiBzdGF0ZSwgd2l0aCB0aGUKLWhlbHAgZnJvbSBhIG1vY2sgb2JqZWN0LiBPbmNl
IGluIHRoZSBkZXNpcmVkIHN0YXRlLCB5b3Ugd2FudCB0byBjbGVhcgotYWxsIGV4cGVjdGF0aW9u
cyBvbiB0aGUgbW9jaywgc3VjaCB0aGF0IGluIHRoZSBgVEVTVF9GYCBib2R5IHlvdSBjYW4KLXNl
dCBmcmVzaCBleHBlY3RhdGlvbnMgb24gaXQuCi0KLUFzIHlvdSBtYXkgaGF2ZSBmaWd1cmVkIG91
dCwgdGhlIGBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpYAotZnVuY3Rpb24gd2Ug
c2F3IGluIHRoZSBwcmV2aW91cyByZWNpcGUgY2FuIGhlbHAgeW91IGhlcmUuIE9yLCBpZiB5b3UK
LWFyZSB1c2luZyBgT05fQ0FMTCgpYCB0byBzZXQgZGVmYXVsdCBhY3Rpb25zIG9uIHRoZSBtb2Nr
IG9iamVjdCBhbmQKLXdhbnQgdG8gY2xlYXIgdGhlIGRlZmF1bHQgYWN0aW9ucyBhcyB3ZWxsLCB1
c2UKLWBNb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9ja19vYmplY3QpYCBpbnN0ZWFkLiBUaGlzIGZ1
bmN0aW9uIGRvZXMgd2hhdAotYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2Nr
X29iamVjdClgIGRvZXMgYW5kIHJldHVybnMgdGhlCi1zYW1lIGBib29sYCwgKipwbHVzKiogaXQg
Y2xlYXJzIHRoZSBgT05fQ0FMTCgpYCBzdGF0ZW1lbnRzIG9uCi1gbW9ja19vYmplY3RgIHRvby4K
LQotQW5vdGhlciB0cmljayB5b3UgY2FuIHVzZSB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCBp
cyB0byBwdXQgdGhlCi1leHBlY3RhdGlvbnMgaW4gc2VxdWVuY2VzIGFuZCBpbnNlcnQgY2FsbHMg
dG8gYSBkdW1teSAiY2hlY2stcG9pbnQiCi1mdW5jdGlvbiBhdCBzcGVjaWZpYyBwbGFjZXMuIFRo
ZW4geW91IGNhbiB2ZXJpZnkgdGhhdCB0aGUgbW9jawotZnVuY3Rpb24gY2FsbHMgZG8gaGFwcGVu
IGF0IHRoZSByaWdodCB0aW1lLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZQotZXhlcmNpc2luZyBj
b2RlOgotCi1gYGAKLUZvbygxKTsKLUZvbygyKTsKLUZvbygzKTsKLWBgYAotCi1hbmQgd2FudCB0
byB2ZXJpZnkgdGhhdCBgRm9vKDEpYCBhbmQgYEZvbygzKWAgYm90aCBpbnZva2UKLWBtb2NrLkJh
cigiYSIpYCwgYnV0IGBGb28oMilgIGRvZXNuJ3QgaW52b2tlIGFueXRoaW5nLiBZb3UgY2FuIHdy
aXRlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TW9ja0Z1bmN0aW9uOwotCi1URVNUKEZvb1Rl
c3QsIEludm9rZXNCYXJDb3JyZWN0bHkpIHsKLSAgTXlNb2NrIG1vY2s7Ci0gIC8vIENsYXNzIE1v
Y2tGdW5jdGlvbjxGPiBoYXMgZXhhY3RseSBvbmUgbW9jayBtZXRob2QuICBJdCBpcyBuYW1lZAot
ICAvLyBDYWxsKCkgYW5kIGhhcyB0eXBlIEYuCi0gIE1vY2tGdW5jdGlvbjx2b2lkKHN0cmluZyBj
aGVja19wb2ludF9uYW1lKT4gY2hlY2s7Ci0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0KLSAgICBF
WFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0gICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwo
IjEiKSk7Ci0gICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwoIjIiKSk7Ci0gICAgRVhQRUNUX0NB
TEwobW9jaywgQmFyKCJhIikpOwotICB9Ci0gIEZvbygxKTsKLSAgY2hlY2suQ2FsbCgiMSIpOwot
ICBGb28oMik7Ci0gIGNoZWNrLkNhbGwoIjIiKTsKLSAgRm9vKDMpOwotfQotYGBgCi0KLVRoZSBl
eHBlY3RhdGlvbiBzcGVjIHNheXMgdGhhdCB0aGUgZmlyc3QgYEJhcigiYSIpYCBtdXN0IGhhcHBl
biBiZWZvcmUKLWNoZWNrIHBvaW50ICIxIiwgdGhlIHNlY29uZCBgQmFyKCJhIilgIG11c3QgaGFw
cGVuIGFmdGVyIGNoZWNrIHBvaW50ICIyIiwKLWFuZCBub3RoaW5nIHNob3VsZCBoYXBwZW4gYmV0
d2VlbiB0aGUgdHdvIGNoZWNrIHBvaW50cy4gVGhlIGV4cGxpY2l0Ci1jaGVjayBwb2ludHMgbWFr
ZSBpdCBlYXN5IHRvIHRlbGwgd2hpY2ggYEJhcigiYSIpYCBpcyBjYWxsZWQgYnkgd2hpY2gKLWNh
bGwgdG8gYEZvbygpYC4KLQotIyMgTW9ja2luZyBEZXN0cnVjdG9ycyAjIwotCi1Tb21ldGltZXMg
eW91IHdhbnQgdG8gbWFrZSBzdXJlIGEgbW9jayBvYmplY3QgaXMgZGVzdHJ1Y3RlZCBhdCB0aGUK
LXJpZ2h0IHRpbWUsIGUuZy4gYWZ0ZXIgYGJhci0+QSgpYCBpcyBjYWxsZWQgYnV0IGJlZm9yZSBg
YmFyLT5CKClgIGlzCi1jYWxsZWQuIFdlIGFscmVhZHkga25vdyB0aGF0IHlvdSBjYW4gc3BlY2lm
eSBjb25zdHJhaW50cyBvbiB0aGUgb3JkZXIKLW9mIG1vY2sgZnVuY3Rpb24gY2FsbHMsIHNvIGFs
bCB3ZSBuZWVkIHRvIGRvIGlzIHRvIG1vY2sgdGhlIGRlc3RydWN0b3IKLW9mIHRoZSBtb2NrIGZ1
bmN0aW9uLgotCi1UaGlzIHNvdW5kcyBzaW1wbGUsIGV4Y2VwdCBmb3Igb25lIHByb2JsZW06IGEg
ZGVzdHJ1Y3RvciBpcyBhIHNwZWNpYWwKLWZ1bmN0aW9uIHdpdGggc3BlY2lhbCBzeW50YXggYW5k
IHNwZWNpYWwgc2VtYW50aWNzLCBhbmQgdGhlCi1gTU9DS19NRVRIT0QwYCBtYWNybyBkb2Vzbid0
IHdvcmsgZm9yIGl0OgotCi1gYGAKLSAgTU9DS19NRVRIT0QwKH5Nb2NrRm9vLCB2b2lkKCkpOyAg
Ly8gV29uJ3QgY29tcGlsZSEKLWBgYAotCi1UaGUgZ29vZCBuZXdzIGlzIHRoYXQgeW91IGNhbiB1
c2UgYSBzaW1wbGUgcGF0dGVybiB0byBhY2hpZXZlIHRoZSBzYW1lCi1lZmZlY3QuIEZpcnN0LCBh
ZGQgYSBtb2NrIGZ1bmN0aW9uIGBEaWUoKWAgdG8geW91ciBtb2NrIGNsYXNzIGFuZCBjYWxsCi1p
dCBpbiB0aGUgZGVzdHJ1Y3RvciwgbGlrZSB0aGlzOgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSAgLi4uCi0gIC8vIEFkZCB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyB0byB0
aGUgbW9jayBjbGFzcy4KLSAgTU9DS19NRVRIT0QwKERpZSwgdm9pZCgpKTsKLSAgdmlydHVhbCB+
TW9ja0ZvbygpIHsgRGllKCk7IH0KLX07Ci1gYGAKLQotKElmIHRoZSBuYW1lIGBEaWUoKWAgY2xh
c2hlcyB3aXRoIGFuIGV4aXN0aW5nIHN5bWJvbCwgY2hvb3NlIGFub3RoZXIKLW5hbWUuKSBOb3cs
IHdlIGhhdmUgdHJhbnNsYXRlZCB0aGUgcHJvYmxlbSBvZiB0ZXN0aW5nIHdoZW4gYSBgTW9ja0Zv
b2AKLW9iamVjdCBkaWVzIHRvIHRlc3Rpbmcgd2hlbiBpdHMgYERpZSgpYCBtZXRob2QgaXMgY2Fs
bGVkOgotCi1gYGAKLSAgTW9ja0ZvbyogZm9vID0gbmV3IE1vY2tGb287Ci0gIE1vY2tCYXIqIGJh
ciA9IG5ldyBNb2NrQmFyOwotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgczsKLQotICAgIC8v
IEV4cGVjdHMgKmZvbyB0byBkaWUgYWZ0ZXIgYmFyLT5BKCkgYW5kIGJlZm9yZSBiYXItPkIoKS4K
LSAgICBFWFBFQ1RfQ0FMTCgqYmFyLCBBKCkpOwotICAgIEVYUEVDVF9DQUxMKCpmb28sIERpZSgp
KTsKLSAgICBFWFBFQ1RfQ0FMTCgqYmFyLCBCKCkpOwotICB9Ci1gYGAKLQotQW5kIHRoYXQncyB0
aGF0LgotCi0jIyBVc2luZyBHb29nbGUgTW9jayBhbmQgVGhyZWFkcyAjIwotCi0qKklNUE9SVEFO
VCBOT1RFOioqIFdoYXQgd2UgZGVzY3JpYmUgaW4gdGhpcyByZWNpcGUgaXMgKipPTkxZKiogdHJ1
ZSBvbgotcGxhdGZvcm1zIHdoZXJlIEdvb2dsZSBNb2NrIGlzIHRocmVhZC1zYWZlLiBDdXJyZW50
bHkgdGhlc2UgYXJlIG9ubHkKLXBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlIHB0aHJlYWRzIGxp
YnJhcnkgKHRoaXMgaW5jbHVkZXMgTGludXggYW5kIE1hYykuCi1UbyBtYWtlIGl0IHRocmVhZC1z
YWZlIG9uIG90aGVyIHBsYXRmb3JtcyB3ZSBvbmx5IG5lZWQgdG8gaW1wbGVtZW50Ci1zb21lIHN5
bmNocm9uaXphdGlvbiBvcGVyYXRpb25zIGluIGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5o
ImAuCi0KLUluIGEgKip1bml0KiogdGVzdCwgaXQncyBiZXN0IGlmIHlvdSBjb3VsZCBpc29sYXRl
IGFuZCB0ZXN0IGEgcGllY2Ugb2YKLWNvZGUgaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4g
VGhhdCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGFuZAotZGVhZCBsb2NrcywgYW5kIG1ha2VzIGRl
YnVnZ2luZyB5b3VyIHRlc3QgbXVjaCBlYXNpZXIuCi0KLVlldCBtYW55IHByb2dyYW1zIGFyZSBt
dWx0aS10aHJlYWRlZCwgYW5kIHNvbWV0aW1lcyB0byB0ZXN0IHNvbWV0aGluZwotd2UgbmVlZCB0
byBwb3VuZCBvbiBpdCBmcm9tIG1vcmUgdGhhbiBvbmUgdGhyZWFkLiBHb29nbGUgTW9jayB3b3Jr
cwotZm9yIHRoaXMgcHVycG9zZSB0b28uCi0KLVJlbWVtYmVyIHRoZSBzdGVwcyBmb3IgdXNpbmcg
YSBtb2NrOgotCi0gIDEuIENyZWF0ZSBhIG1vY2sgb2JqZWN0IGBmb29gLgotICAxLiBTZXQgaXRz
IGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIHVzaW5nIGBPTl9DQUxMKClgIGFuZCBg
RVhQRUNUX0NBTEwoKWAuCi0gIDEuIFRoZSBjb2RlIHVuZGVyIHRlc3QgY2FsbHMgbWV0aG9kcyBv
ZiBgZm9vYC4KLSAgMS4gT3B0aW9uYWxseSwgdmVyaWZ5IGFuZCByZXNldCB0aGUgbW9jay4KLSAg
MS4gRGVzdHJveSB0aGUgbW9jayB5b3Vyc2VsZiwgb3IgbGV0IHRoZSBjb2RlIHVuZGVyIHRlc3Qg
ZGVzdHJveSBpdC4gVGhlIGRlc3RydWN0b3Igd2lsbCBhdXRvbWF0aWNhbGx5IHZlcmlmeSBpdC4K
LQotSWYgeW91IGZvbGxvdyB0aGUgZm9sbG93aW5nIHNpbXBsZSBydWxlcywgeW91ciBtb2NrcyBh
bmQgdGhyZWFkcyBjYW4KLWxpdmUgaGFwcGlseSB0b2dldGhlcjoKLQotICAqIEV4ZWN1dGUgeW91
ciBfdGVzdCBjb2RlXyAoYXMgb3Bwb3NlZCB0byB0aGUgY29kZSBiZWluZyB0ZXN0ZWQpIGluIF9v
bmVfIHRocmVhZC4gVGhpcyBtYWtlcyB5b3VyIHRlc3QgZWFzeSB0byBmb2xsb3cuCi0gICogT2J2
aW91c2x5LCB5b3UgY2FuIGRvIHN0ZXAgIzEgd2l0aG91dCBsb2NraW5nLgotICAqIFdoZW4gZG9p
bmcgc3RlcCAjMiBhbmQgIzUsIG1ha2Ugc3VyZSBubyBvdGhlciB0aHJlYWQgaXMgYWNjZXNzaW5n
IGBmb29gLiBPYnZpb3VzIHRvbywgaHVoPwotICAqICMzIGFuZCAjNCBjYW4gYmUgZG9uZSBlaXRo
ZXIgaW4gb25lIHRocmVhZCBvciBpbiBtdWx0aXBsZSB0aHJlYWRzIC0gYW55d2F5IHlvdSB3YW50
LiBHb29nbGUgTW9jayB0YWtlcyBjYXJlIG9mIHRoZSBsb2NraW5nLCBzbyB5b3UgZG9uJ3QgaGF2
ZSB0byBkbyBhbnkgLSB1bmxlc3MgcmVxdWlyZWQgYnkgeW91ciB0ZXN0IGxvZ2ljLgotCi1JZiB5
b3UgdmlvbGF0ZSB0aGUgcnVsZXMgKGZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IGV4cGVjdGF0aW9u
cyBvbiBhCi1tb2NrIHdoaWxlIGFub3RoZXIgdGhyZWFkIGlzIGNhbGxpbmcgaXRzIG1ldGhvZHMp
LCB5b3UgZ2V0IHVuZGVmaW5lZAotYmVoYXZpb3IuIFRoYXQncyBub3QgZnVuLCBzbyBkb24ndCBk
byBpdC4KLQotR29vZ2xlIE1vY2sgZ3VhcmFudGVlcyB0aGF0IHRoZSBhY3Rpb24gZm9yIGEgbW9j
ayBmdW5jdGlvbiBpcyBkb25lIGluCi10aGUgc2FtZSB0aHJlYWQgdGhhdCBjYWxsZWQgdGhlIG1v
Y2sgZnVuY3Rpb24uIEZvciBleGFtcGxlLCBpbgotCi1gYGAKLSAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKDEpKQotICAgICAgLldpbGxPbmNlKGFjdGlvbjEpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBG
b28oMikpCi0gICAgICAuV2lsbE9uY2UoYWN0aW9uMik7Ci1gYGAKLQotaWYgYEZvbygxKWAgaXMg
Y2FsbGVkIGluIHRocmVhZCAxIGFuZCBgRm9vKDIpYCBpcyBjYWxsZWQgaW4gdGhyZWFkIDIsCi1H
b29nbGUgTW9jayB3aWxsIGV4ZWN1dGUgYGFjdGlvbjFgIGluIHRocmVhZCAxIGFuZCBgYWN0aW9u
MmAgaW4gdGhyZWFkCi0yLgotCi1Hb29nbGUgTW9jayBkb2VzIF9ub3RfIGltcG9zZSBhIHNlcXVl
bmNlIG9uIGFjdGlvbnMgcGVyZm9ybWVkIGluCi1kaWZmZXJlbnQgdGhyZWFkcyAoZG9pbmcgc28g
bWF5IGNyZWF0ZSBkZWFkbG9ja3MgYXMgdGhlIGFjdGlvbnMgbWF5Ci1uZWVkIHRvIGNvb3BlcmF0
ZSkuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhlY3V0aW9uIG9mIGBhY3Rpb24xYCBhbmQKLWBhY3Rp
b24yYCBpbiB0aGUgYWJvdmUgZXhhbXBsZSBfbWF5XyBpbnRlcmxlYXZlLiBJZiB0aGlzIGlzIGEg
cHJvYmxlbSwKLXlvdSBzaG91bGQgYWRkIHByb3BlciBzeW5jaHJvbml6YXRpb24gbG9naWMgdG8g
YGFjdGlvbjFgIGFuZCBgYWN0aW9uMmAKLXRvIG1ha2UgdGhlIHRlc3QgdGhyZWFkLXNhZmUuCi0K
LQotQWxzbywgcmVtZW1iZXIgdGhhdCBgRGVmYXVsdFZhbHVlPFQ+YCBpcyBhIGdsb2JhbCByZXNv
dXJjZSB0aGF0Ci1wb3RlbnRpYWxseSBhZmZlY3RzIF9hbGxfIGxpdmluZyBtb2NrIG9iamVjdHMg
aW4geW91cgotcHJvZ3JhbS4gTmF0dXJhbGx5LCB5b3Ugd29uJ3Qgd2FudCB0byBtZXNzIHdpdGgg
aXQgZnJvbSBtdWx0aXBsZQotdGhyZWFkcyBvciB3aGVuIHRoZXJlIHN0aWxsIGFyZSBtb2NrcyBp
biBhY3Rpb24uCi0KLSMjIENvbnRyb2xsaW5nIEhvdyBNdWNoIEluZm9ybWF0aW9uIEdvb2dsZSBN
b2NrIFByaW50cyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIHNlZXMgc29tZXRoaW5nIHRoYXQgaGFz
IHRoZSBwb3RlbnRpYWwgb2YgYmVpbmcgYW4KLWVycm9yIChlLmcuIGEgbW9jayBmdW5jdGlvbiB3
aXRoIG5vIGV4cGVjdGF0aW9uIGlzIGNhbGxlZCwgYS5rLmEuIGFuCi11bmludGVyZXN0aW5nIGNh
bGwsIHdoaWNoIGlzIGFsbG93ZWQgYnV0IHBlcmhhcHMgeW91IGZvcmdvdCB0bwotZXhwbGljaXRs
eSBiYW4gdGhlIGNhbGwpLCBpdCBwcmludHMgc29tZSB3YXJuaW5nIG1lc3NhZ2VzLCBpbmNsdWRp
bmcKLXRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uIGFuZCB0aGUgcmV0dXJuIHZhbHVlLiBI
b3BlZnVsbHkgdGhpcwotd2lsbCByZW1pbmQgeW91IHRvIHRha2UgYSBsb29rIGFuZCBzZWUgaWYg
dGhlcmUgaXMgaW5kZWVkIGEgcHJvYmxlbS4KLQotU29tZXRpbWVzIHlvdSBhcmUgY29uZmlkZW50
IHRoYXQgeW91ciB0ZXN0cyBhcmUgY29ycmVjdCBhbmQgbWF5IG5vdAotYXBwcmVjaWF0ZSBzdWNo
IGZyaWVuZGx5IG1lc3NhZ2VzLiBTb21lIG90aGVyIHRpbWVzLCB5b3UgYXJlIGRlYnVnZ2luZwot
eW91ciB0ZXN0cyBvciBsZWFybmluZyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUgeW91
IGFyZSB0ZXN0aW5nLAotYW5kIHdpc2ggeW91IGNvdWxkIG9ic2VydmUgZXZlcnkgbW9jayBjYWxs
IHRoYXQgaGFwcGVucyAoaW5jbHVkaW5nCi1hcmd1bWVudCB2YWx1ZXMgYW5kIHRoZSByZXR1cm4g
dmFsdWUpLiBDbGVhcmx5LCBvbmUgc2l6ZSBkb2Vzbid0IGZpdAotYWxsLgotCi1Zb3UgY2FuIGNv
bnRyb2wgaG93IG11Y2ggR29vZ2xlIE1vY2sgdGVsbHMgeW91IHVzaW5nIHRoZQotYC0tZ21vY2tf
dmVyYm9zZT1MRVZFTGAgY29tbWFuZC1saW5lIGZsYWcsIHdoZXJlIGBMRVZFTGAgaXMgYSBzdHJp
bmcKLXdpdGggdGhyZWUgcG9zc2libGUgdmFsdWVzOgotCi0gICogYGluZm9gOiBHb29nbGUgTW9j
ayB3aWxsIHByaW50IGFsbCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzLCB3YXJuaW5ncywgYW5kIGVy
cm9ycyAobW9zdCB2ZXJib3NlKS4gQXQgdGhpcyBzZXR0aW5nLCBHb29nbGUgTW9jayB3aWxsIGFs
c28gbG9nIGFueSBjYWxscyB0byB0aGUgYE9OX0NBTEwvRVhQRUNUX0NBTExgIG1hY3Jvcy4KLSAg
KiBgd2FybmluZ2A6IEdvb2dsZSBNb2NrIHdpbGwgcHJpbnQgYm90aCB3YXJuaW5ncyBhbmQgZXJy
b3JzIChsZXNzIHZlcmJvc2UpLiBUaGlzIGlzIHRoZSBkZWZhdWx0LgotICAqIGBlcnJvcmA6IEdv
b2dsZSBNb2NrIHdpbGwgcHJpbnQgZXJyb3JzIG9ubHkgKGxlYXN0IHZlcmJvc2UpLgotCi1BbHRl
cm5hdGl2ZWx5LCB5b3UgY2FuIGFkanVzdCB0aGUgdmFsdWUgb2YgdGhhdCBmbGFnIGZyb20gd2l0
aGluIHlvdXIKLXRlc3RzIGxpa2Ugc286Ci0KLWBgYAotICA6OnRlc3Rpbmc6OkZMQUdTX2dtb2Nr
X3ZlcmJvc2UgPSAiZXJyb3IiOwotYGBgCi0KLU5vdywganVkaWNpb3VzbHkgdXNlIHRoZSByaWdo
dCBmbGFnIHRvIGVuYWJsZSBHb29nbGUgTW9jayBzZXJ2ZSB5b3UgYmV0dGVyIQotCi0jIyBHYWlu
aW5nIFN1cGVyIFZpc2lvbiBpbnRvIE1vY2sgQ2FsbHMgIyMKLQotWW91IGhhdmUgYSB0ZXN0IHVz
aW5nIEdvb2dsZSBNb2NrLiBJdCBmYWlsczogR29vZ2xlIE1vY2sgdGVsbHMgeW91Ci10aGF0IHNv
bWUgZXhwZWN0YXRpb25zIGFyZW4ndCBzYXRpc2ZpZWQuIEhvd2V2ZXIsIHlvdSBhcmVuJ3Qgc3Vy
ZSB3aHk6Ci1JcyB0aGVyZSBhIHR5cG8gc29tZXdoZXJlIGluIHRoZSBtYXRjaGVycz8gRGlkIHlv
dSBtZXNzIHVwIHRoZSBvcmRlcgotb2YgdGhlIGBFWFBFQ1RfQ0FMTGBzPyBPciBpcyB0aGUgY29k
ZSB1bmRlciB0ZXN0IGRvaW5nIHNvbWV0aGluZwotd3Jvbmc/ICBIb3cgY2FuIHlvdSBmaW5kIG91
dCB0aGUgY2F1c2U/Ci0KLVdvbid0IGl0IGJlIG5pY2UgaWYgeW91IGhhdmUgWC1yYXkgdmlzaW9u
IGFuZCBjYW4gYWN0dWFsbHkgc2VlIHRoZQotdHJhY2Ugb2YgYWxsIGBFWFBFQ1RfQ0FMTGBzIGFu
ZCBtb2NrIG1ldGhvZCBjYWxscyBhcyB0aGV5IGFyZSBtYWRlPwotRm9yIGVhY2ggY2FsbCwgd291
bGQgeW91IGxpa2UgdG8gc2VlIGl0cyBhY3R1YWwgYXJndW1lbnQgdmFsdWVzIGFuZAotd2hpY2gg
YEVYUEVDVF9DQUxMYCBHb29nbGUgTW9jayB0aGlua3MgaXQgbWF0Y2hlcz8KLQotWW91IGNhbiB1
bmxvY2sgdGhpcyBwb3dlciBieSBydW5uaW5nIHlvdXIgdGVzdCB3aXRoIHRoZQotYC0tZ21vY2tf
dmVyYm9zZT1pbmZvYCBmbGFnLiBGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhlIHRlc3QgcHJvZ3JhbToK
LQotYGBgCi11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGluZzo6SGFzU3Vic3RyOwotdXNp
bmcgdGVzdGluZzo6UmV0dXJuOwotCi1jbGFzcyBNb2NrRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tf
TUVUSE9EMihGLCB2b2lkKGNvbnN0IHN0cmluZyYgeCwgY29uc3Qgc3RyaW5nJiB5KSk7Ci19Owot
Ci1URVNUKEZvbywgQmFyKSB7Ci0gIE1vY2tGb28gbW9jazsKLSAgRVhQRUNUX0NBTEwobW9jaywg
RihfLCBfKSkuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBG
KCJhIiwgImIiKSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEYoImMiLCBIYXNTdWJzdHIoImQiKSkp
OwotCi0gIG1vY2suRigiYSIsICJnb29kIik7Ci0gIG1vY2suRigiYSIsICJiIik7Ci19Ci1gYGAK
LQotaWYgeW91IHJ1biBpdCB3aXRoIGAtLWdtb2NrX3ZlcmJvc2U9aW5mb2AsIHlvdSB3aWxsIHNl
ZSB0aGlzIG91dHB1dDoKLQotYGBgCi1bIFJVTiAgICAgIF0gRm9vLkJhcgotCi1mb29fdGVzdC5j
YzoxNDogRVhQRUNUX0NBTEwobW9jaywgRihfLCBfKSkgaW52b2tlZAotZm9vX3Rlc3QuY2M6MTU6
IEVYUEVDVF9DQUxMKG1vY2ssIEYoImEiLCAiYiIpKSBpbnZva2VkCi1mb29fdGVzdC5jYzoxNjog
RVhQRUNUX0NBTEwobW9jaywgRigiYyIsIEhhc1N1YnN0cigiZCIpKSkgaW52b2tlZAotZm9vX3Rl
c3QuY2M6MTQ6IE1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKG1vY2ssIEYo
XywgXykpLi4uCi0gICAgRnVuY3Rpb24gY2FsbDogRihAMHg3ZmZmN2M4ZGFkNDAiYSIsIEAweDdm
ZmY3YzhkYWQxMCJnb29kIikKLWZvb190ZXN0LmNjOjE1OiBNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0
Y2hlcyBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJhIiwgImIiKSkuLi4KLSAgICBGdW5jdGlvbiBjYWxs
OiBGKEAweDdmZmY3YzhkYWRhMCJhIiwgQDB4N2ZmZjdjOGRhZDcwImIiKQotZm9vX3Rlc3QuY2M6
MTY6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQ
RUNUX0NBTEwobW9jaywgRigiYyIsIEhhc1N1YnN0cigiZCIpKSkuLi4KLSAgICAgICAgIEV4cGVj
dGVkOiB0byBiZSBjYWxsZWQgb25jZQotICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAt
IHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKLVsgIEZBSUxFRCAgXSBGb28uQmFyCi1gYGAKLQotU3Vw
cG9zZSB0aGUgYnVnIGlzIHRoYXQgdGhlIGAiYyJgIGluIHRoZSB0aGlyZCBgRVhQRUNUX0NBTExg
IGlzIGEgdHlwbwotYW5kIHNob3VsZCBhY3R1YWxseSBiZSBgImEiYC4gV2l0aCB0aGUgYWJvdmUg
bWVzc2FnZSwgeW91IHNob3VsZCBzZWUKLXRoYXQgdGhlIGFjdHVhbCBgRigiYSIsICJnb29kIilg
IGNhbGwgaXMgbWF0Y2hlZCBieSB0aGUgZmlyc3QKLWBFWFBFQ1RfQ0FMTGAsIG5vdCB0aGUgdGhp
cmQgYXMgeW91IHRob3VnaHQuIEZyb20gdGhhdCBpdCBzaG91bGQgYmUKLW9idmlvdXMgdGhhdCB0
aGUgdGhpcmQgYEVYUEVDVF9DQUxMYCBpcyB3cml0dGVuIHdyb25nLiBDYXNlIHNvbHZlZC4KLQot
IyMgUnVubmluZyBUZXN0cyBpbiBFbWFjcyAjIwotCi1JZiB5b3UgYnVpbGQgYW5kIHJ1biB5b3Vy
IHRlc3RzIGluIEVtYWNzLCB0aGUgc291cmNlIGZpbGUgbG9jYXRpb25zIG9mCi1Hb29nbGUgTW9j
ayBhbmQgW0dvb2dsZSBUZXN0XSguLi8uLi9nb29nbGV0ZXN0LykKLWVycm9ycyB3aWxsIGJlIGhp
Z2hsaWdodGVkLiBKdXN0IHByZXNzIGA8RW50ZXI+YCBvbiBvbmUgb2YgdGhlbSBhbmQKLXlvdSds
bCBiZSB0YWtlbiB0byB0aGUgb2ZmZW5kaW5nIGxpbmUuIE9yLCB5b3UgY2FuIGp1c3QgdHlwZSBg
Qy14IGBgCi10byBqdW1wIHRvIHRoZSBuZXh0IGVycm9yLgotCi1UbyBtYWtlIGl0IGV2ZW4gZWFz
aWVyLCB5b3UgY2FuIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIHlvdXIKLWB+Ly5lbWFjc2Ag
ZmlsZToKLQotYGBgCi0oZ2xvYmFsLXNldC1rZXkgIlxNLW0iICAgJ2NvbXBpbGUpICA7IG0gaXMg
Zm9yIG1ha2UKLShnbG9iYWwtc2V0LWtleSBbTS1kb3duXSAnbmV4dC1lcnJvcikKLShnbG9iYWwt
c2V0LWtleSBbTS11cF0gICAnKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChuZXh0LWVycm9yIC0x
KSkpCi1gYGAKLQotVGhlbiB5b3UgY2FuIHR5cGUgYE0tbWAgdG8gc3RhcnQgYSBidWlsZCwgb3Ig
YE0tdXBgL2BNLWRvd25gIHRvIG1vdmUKLWJhY2sgYW5kIGZvcnRoIGJldHdlZW4gZXJyb3JzLgot
Ci0jIyBGdXNpbmcgR29vZ2xlIE1vY2sgU291cmNlIEZpbGVzICMjCi0KLUdvb2dsZSBNb2NrJ3Mg
aW1wbGVtZW50YXRpb24gY29uc2lzdHMgb2YgZG96ZW5zIG9mIGZpbGVzIChleGNsdWRpbmcKLWl0
cyBvd24gdGVzdHMpLiAgU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2Vk
IHVwIGluCi1mZXdlciBmaWxlcyBpbnN0ZWFkLCBzdWNoIHRoYXQgeW91IGNhbiBlYXNpbHkgY29w
eSB0aGVtIHRvIGEgbmV3Ci1tYWNoaW5lIGFuZCBzdGFydCBoYWNraW5nIHRoZXJlLiAgRm9yIHRo
aXMgd2UgcHJvdmlkZSBhbiBleHBlcmltZW50YWwKLVB5dGhvbiBzY3JpcHQgYGZ1c2VfZ21vY2tf
ZmlsZXMucHlgIGluIHRoZSBgc2NyaXB0cy9gIGRpcmVjdG9yeQotKHN0YXJ0aW5nIHdpdGggcmVs
ZWFzZSAxLjIuMCkuICBBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi40IG9yIGFib3ZlCi1pbnN0
YWxsZWQgb24geW91ciBtYWNoaW5lLCBqdXN0IGdvIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCBydW4K
LWBgYAotcHl0aG9uIGZ1c2VfZ21vY2tfZmlsZXMucHkgT1VUUFVUX0RJUgotYGBgCi0KLWFuZCB5
b3Ugc2hvdWxkIHNlZSBhbiBgT1VUUFVUX0RJUmAgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQgd2l0
aCBmaWxlcwotYGd0ZXN0L2d0ZXN0LmhgLCBgZ21vY2svZ21vY2suaGAsIGFuZCBgZ21vY2stZ3Rl
c3QtYWxsLmNjYCBpbiBpdC4KLVRoZXNlIHRocmVlIGZpbGVzIGNvbnRhaW4gZXZlcnl0aGluZyB5
b3UgbmVlZCB0byB1c2UgR29vZ2xlIE1vY2sgKGFuZAotR29vZ2xlIFRlc3QpLiAgSnVzdCBjb3B5
IHRoZW0gdG8gYW55d2hlcmUgeW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkKLXRvIHdyaXRlIHRl
c3RzIGFuZCB1c2UgbW9ja3MuICBZb3UgY2FuIHVzZSB0aGUKLVtzY3JwdHMvdGVzdC9NYWtlZmls
ZV0oLi4vc2NyaXB0cy90ZXN0L01ha2VmaWxlKSBmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRv
IGNvbXBpbGUgeW91ciB0ZXN0cwotYWdhaW5zdCB0aGVtLgotCi0jIEV4dGVuZGluZyBHb29nbGUg
TW9jayAjCi0KLSMjIFdyaXRpbmcgTmV3IE1hdGNoZXJzIFF1aWNrbHkgIyMKLQotVGhlIGBNQVRD
SEVSKmAgZmFtaWx5IG9mIG1hY3JvcyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgY3VzdG9tIG1hdGNo
ZXJzCi1lYXNpbHkuICBUaGUgc3ludGF4OgotCi1gYGAKLU1BVENIRVIobmFtZSwgZGVzY3JpcHRp
b25fc3RyaW5nX2V4cHJlc3Npb24pIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLXdpbGwgZGVmaW5l
IGEgbWF0Y2hlciB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCi1zdGF0ZW1l
bnRzLCB3aGljaCBtdXN0IHJldHVybiBhIGBib29sYCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2gK
LXN1Y2NlZWRzLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2
YWx1ZSBiZWluZwotbWF0Y2hlZCBieSBgYXJnYCwgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5IGBh
cmdfdHlwZWAuCi0KLVRoZSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgYSBgc3RyaW5nYC10eXBlZCBl
eHByZXNzaW9uIHRoYXQgZG9jdW1lbnRzCi13aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1
c2VkIHRvIGdlbmVyYXRlIHRoZSBmYWlsdXJlIG1lc3NhZ2UKLXdoZW4gdGhlIG1hdGNoIGZhaWxz
LiAgSXQgY2FuIChhbmQgc2hvdWxkKSByZWZlcmVuY2UgdGhlIHNwZWNpYWwKLWBib29sYCB2YXJp
YWJsZSBgbmVnYXRpb25gLCBhbmQgc2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBv
ZgotdGhlIG1hdGNoZXIgd2hlbiBgbmVnYXRpb25gIGlzIGBmYWxzZWAsIG9yIHRoYXQgb2YgdGhl
IG1hdGNoZXIncwotbmVnYXRpb24gd2hlbiBgbmVnYXRpb25gIGlzIGB0cnVlYC4KLQotRm9yIGNv
bnZlbmllbmNlLCB3ZSBhbGxvdyB0aGUgZGVzY3JpcHRpb24gc3RyaW5nIHRvIGJlIGVtcHR5IChg
IiJgKSwKLWluIHdoaWNoIGNhc2UgR29vZ2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9m
IHdvcmRzIGluIHRoZQotbWF0Y2hlciBuYW1lIGFzIHRoZSBkZXNjcmlwdGlvbi4KLQotRm9yIGV4
YW1wbGU6Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUg
NykgPT0gMDsgfQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLSAgLy8gRXhwZWN0cyBt
b2NrX2Zvby5CYXIobikgdG8gYmUgY2FsbGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCi0g
IEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNEaXZpc2libGVCeTcoKSkpOwotYGBgCi1vciwK
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpOb3Q7Ci0uLi4KLSAgRVhQRUNUX1RIQVQoc29tZV9leHBy
ZXNzaW9uLCBJc0RpdmlzaWJsZUJ5NygpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9vdGhlcl9leHBy
ZXNzaW9uLCBOb3QoSXNEaXZpc2libGVCeTcoKSkpOwotYGBgCi1JZiB0aGUgYWJvdmUgYXNzZXJ0
aW9ucyBmYWlsLCB0aGV5IHdpbGwgcHJpbnQgc29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgVmFsdWUg
b2Y6IHNvbWVfZXhwcmVzc2lvbgotICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBB
Y3R1YWw6IDI3Ci0uLi4KLSAgVmFsdWUgb2Y6IHNvbWVfb3RoZXJfZXhwcmVzc2lvbgotICBFeHBl
Y3RlZDogbm90IChpcyBkaXZpc2libGUgYnkgNykKLSAgICBBY3R1YWw6IDIxCi1gYGAKLXdoZXJl
IHRoZSBkZXNjcmlwdGlvbnMgYCJpcyBkaXZpc2libGUgYnkgNyJgIGFuZCBgIm5vdCAoaXMgZGl2
aXNpYmxlCi1ieSA3KSJgIGFyZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWF0
Y2hlciBuYW1lCi1gSXNEaXZpc2libGVCeTdgLgotCi1BcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwg
dGhlIGF1dG8tZ2VuZXJhdGVkIGRlc2NyaXB0aW9ucyAoZXNwZWNpYWxseQotdGhvc2UgZm9yIHRo
ZSBuZWdhdGlvbikgbWF5IG5vdCBiZSBzbyBncmVhdC4gWW91IGNhbiBhbHdheXMgb3ZlcnJpZGUK
LXRoZW0gd2l0aCBhIHN0cmluZyBleHByZXNzaW9uIG9mIHlvdXIgb3duOgotYGBgCi1NQVRDSEVS
KElzRGl2aXNpYmxlQnk3LCBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiIGRpdmlzaWJsZSBieSA3IikgewotICByZXR1cm4g
KGFyZyAlIDcpID09IDA7Ci19Ci1gYGAKLQotT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiB0byBhIGhpZGRlbiBhcmd1bWVudAotbmFtZWQgYHJlc3VsdF9s
aXN0ZW5lcmAgdG8gZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQotYmV0
dGVyIGRlZmluaXRpb24gb2YgYElzRGl2aXNpYmxlQnk3YCBpczoKLWBgYAotTUFUQ0hFUihJc0Rp
dmlzaWJsZUJ5NywgIiIpIHsKLSAgaWYgKChhcmcgJSA3KSA9PSAwKQotICAgIHJldHVybiB0cnVl
OwotCi0gICpyZXN1bHRfbGlzdGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUg
Nyk7Ci0gIHJldHVybiBmYWxzZTsKLX0KLWBgYAotCi1XaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhl
IGFib3ZlIGFzc2VydGlvbiB3aWxsIGdpdmUgYSBiZXR0ZXIgbWVzc2FnZToKLWBgYAotICBWYWx1
ZSBvZjogc29tZV9leHByZXNzaW9uCi0gIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNwotICAg
IEFjdHVhbDogMjcgKHRoZSByZW1haW5kZXIgaXMgNikKLWBgYAotCi1Zb3Ugc2hvdWxkIGxldCBg
TWF0Y2hBbmRFeHBsYWluKClgIHByaW50IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KLXRo
YXQgY2FuIGhlbHAgYSB1c2VyIHVuZGVyc3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0
IGl0IHNob3VsZAotZXhwbGFpbiB3aHkgdGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBz
dWNjZXNzICh1bmxlc3MgaXQncwotb2J2aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBt
YXRjaGVyIGlzIHVzZWQgaW5zaWRlCi1gTm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50
IHRoZSBhcmd1bWVudCB2YWx1ZSBpdHNlbGYsIGFzCi1Hb29nbGUgTW9jayBhbHJlYWR5IHByaW50
cyBpdCBmb3IgeW91LgotCi0qKk5vdGVzOioqCi0KLSAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVl
IGJlaW5nIG1hdGNoZWQgKGBhcmdfdHlwZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQg
aW4gd2hpY2ggeW91IHVzZSB0aGUgbWF0Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRo
ZSBjb21waWxlciwgc28geW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0
IChub3IgY2FuIHlvdSkuICBUaGlzIGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhp
Yy4gIEZvciBleGFtcGxlLCBgSXNEaXZpc2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2gg
YW55IHR5cGUgd2hlcmUgdGhlIHZhbHVlIG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxp
Y2l0bHkgY29udmVydGVkIHRvIGEgYGJvb2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTco
KSlgIGV4YW1wbGUgYWJvdmUsIGlmIG1ldGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJn
X3R5cGVgIHdpbGwgYmUgYGludGA7IGlmIGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFy
Z190eXBlYCB3aWxsIGJlIGB1bnNpZ25lZCBsb25nYDsgYW5kIHNvIG9uLgotICAxLiBHb29nbGUg
TW9jayBkb2Vzbid0IGd1YXJhbnRlZSB3aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3
aWxsIGJlIGludm9rZWQuIFRoZXJlZm9yZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJl
bHkgZnVuY3Rpb25hbF8gKGkuZS4gaXQgY2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQg
dGhlIHJlc3VsdCBtdXN0IG5vdCBkZXBlbmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFs
dWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWly
ZW1lbnQgbXVzdCBiZSBzYXRpc2ZpZWQgbm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRj
aGVyIChlLmcuIHVzaW5nIG9uZSBvZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxv
d2luZyByZWNpcGVzKS4gSW4gcGFydGljdWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEg
bW9jayBmdW5jdGlvbiwgYXMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sg
b2JqZWN0IGFuZCBHb29nbGUgTW9jay4KLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBN
YXRjaGVycyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBt
YXRjaGVyIHRoYXQgaGFzIHBhcmFtZXRlcnMuICBGb3IgdGhhdCB5b3UKLWNhbiB1c2UgdGhlIG1h
Y3JvOgotYGBgCi1NQVRDSEVSX1AobmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5n
KSB7IHN0YXRlbWVudHM7IH0KLWBgYAotd2hlcmUgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyBjYW4g
YmUgZWl0aGVyIGAiImAgb3IgYSBzdHJpbmcgZXhwcmVzc2lvbgotdGhhdCByZWZlcmVuY2VzIGBu
ZWdhdGlvbmAgYW5kIGBwYXJhbV9uYW1lYC4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENIRVJf
UChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVl
OyB9Ci1gYGAKLXdpbGwgYWxsb3cgeW91IHRvIHdyaXRlOgotYGBgCi0gIEVYUEVDVF9USEFUKEJs
YWgoImEiKSwgSGFzQWJzb2x1dGVWYWx1ZShuKSk7Ci1gYGAKLXdoaWNoIG1heSBsZWFkIHRvIHRo
aXMgbWVzc2FnZSAoYXNzdW1pbmcgYG5gIGlzIDEwKToKLWBgYAotICBWYWx1ZSBvZjogQmxhaCgi
YSIpCi0gIEV4cGVjdGVkOiBoYXMgYWJzb2x1dGUgdmFsdWUgMTAKLSAgICBBY3R1YWw6IC05Ci1g
YGAKLQotTm90ZSB0aGF0IGJvdGggdGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJh
bWV0ZXIgYXJlCi1wcmludGVkLCBtYWtpbmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCi0K
LUluIHRoZSBtYXRjaGVyIGRlZmluaXRpb24gYm9keSwgeW91IGNhbiB3cml0ZSBgZm9vX3R5cGVg
IHRvCi1yZWZlcmVuY2UgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQgYGZvb2AuICBGb3Ig
ZXhhbXBsZSwgaW4gdGhlCi1ib2R5IG9mIGBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFs
dWUpYCBhYm92ZSwgeW91IGNhbiB3cml0ZQotYHZhbHVlX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0
eXBlIG9mIGB2YWx1ZWAuCi0KLUdvb2dsZSBNb2NrIGFsc28gcHJvdmlkZXMgYE1BVENIRVJfUDJg
LCBgTUFUQ0hFUl9QM2AsIC4uLiwgdXAgdG8KLWBNQVRDSEVSX1AxMGAgdG8gc3VwcG9ydCBtdWx0
aS1wYXJhbWV0ZXIgbWF0Y2hlcnM6Ci1gYGAKLU1BVENIRVJfUGsobmFtZSwgcGFyYW1fMSwgLi4u
LCBwYXJhbV9rLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLVBs
ZWFzZSBub3RlIHRoYXQgdGhlIGN1c3RvbSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFy
dGljdWxhcgotKippbnN0YW5jZSoqIG9mIHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVy
cyBoYXZlIGJlZW4gYm91bmQgdG8KLWFjdHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5
b3UnbGwgd2FudCB0aGUgcGFyYW1ldGVyIHZhbHVlcyB0bwotYmUgcGFydCBvZiB0aGUgZGVzY3Jp
cHRpb24uICBHb29nbGUgTW9jayBsZXRzIHlvdSBkbyB0aGF0IGJ5Ci1yZWZlcmVuY2luZyB0aGUg
bWF0Y2hlciBwYXJhbWV0ZXJzIGluIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcKLWV4cHJlc3Npb24u
Ci0KLUZvciBleGFtcGxlLAotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsK
LSAgTUFUQ0hFUl9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLAotICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKG5lZ2F0aW9uID8gImlzbid0IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCi0gICAg
ICAgICAgICAgUHJpbnRUb1N0cmluZyhsb3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsg
Il0iKSB7Ci0gICAgcmV0dXJuIGxvdyA8PSBhcmcgJiYgYXJnIDw9IGhpOwotICB9Ci0gIC4uLgot
ICBFWFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKLWBgYAotd291bGQgZ2VuZXJh
dGUgYSBmYWlsdXJlIHRoYXQgY29udGFpbnMgdGhlIG1lc3NhZ2U6Ci1gYGAKLSAgRXhwZWN0ZWQ6
IGlzIGluIHJhbmdlIFs0LCA2XQotYGBgCi0KLUlmIHlvdSBzcGVjaWZ5IGAiImAgYXMgdGhlIGRl
c2NyaXB0aW9uLCB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwKLWNvbnRhaW4gdGhlIHNlcXVlbmNl
IG9mIHdvcmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCi1wYXJhbWV0ZXIg
dmFsdWVzIHByaW50ZWQgYXMgYSB0dXBsZS4gIEZvciBleGFtcGxlLAotYGBgCi0gIE1BVENIRVJf
UDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwgIiIpIHsgLi4uIH0KLSAgLi4uCi0gIEVYUEVDVF9U
SEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOwotYGBgCi13b3VsZCBnZW5lcmF0ZSBhIGZhaWx1
cmUgdGhhdCBjb250YWlucyB0aGUgdGV4dDoKLWBgYAotICBFeHBlY3RlZDogaW4gY2xvc2VkIHJh
bmdlICg0LCA2KQotYGBgCi0KLUZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmll
dwotYGBgCi1NQVRDSEVSX1BrKEZvbywgcDEsIC4uLiwgcGssIGRlc2NyaXB0aW9uX3N0cmluZykg
eyAuLi4gfQotYGBgCi1hcyBzaG9ydGhhbmQgZm9yCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBw
MV90eXBlLCAuLi4sIHR5cGVuYW1lIHBrX3R5cGU+Ci1Gb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4u
LCBwa190eXBlPgotRm9vKHAxX3R5cGUgcDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotYGBg
Ci0KLVdoZW4geW91IHdyaXRlIGBGb28odjEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVy
cyB0aGUgdHlwZXMgb2YKLXRoZSBwYXJhbWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlv
dS4gIElmIHlvdSBhcmUgbm90IGhhcHB5IHdpdGgKLXRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5m
ZXJlbmNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHR5cGVzIGJ5Ci1leHBsaWNpdGx5IGluc3RhbnRp
YXRpbmcgdGhlIHRlbXBsYXRlLCBhcyBpbiBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCi1B
cyBzYWlkIGVhcmxpZXIsIHlvdSBkb24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLWBh
cmdfdHlwZWAgYXMgdGhhdCdzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhl
IG1hdGNoZXIKLWlzIHVzZWQuCi0KLVlvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVz
c2lvbiBgRm9vKHAxLCAuLi4sIHBrKWAgdG8gYQotdmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hl
clBrPHAxX3R5cGUsIC4uLiwgcGtfdHlwZT5gLiAgVGhpcyBjYW4gYmUKLXVzZWZ1bCB3aGVuIGNv
bXBvc2luZyBtYXRjaGVycy4gIE1hdGNoZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgot
b3IgaGF2ZSBvbmx5IG9uZSBwYXJhbWV0ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFz
c2lnbiBgRm9vKClgCi10byBhIGBGb29NYXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2ln
biBgRm9vKHApYCB0byBhCi1gRm9vTWF0Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCi0K
LVdoaWxlIHlvdSBjYW4gaW5zdGFudGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJl
bmNlIHR5cGVzLAotcGFzc2luZyB0aGUgcGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFr
ZXMgeW91ciBjb2RlIG1vcmUKLXJlYWRhYmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50
IHRvIHBhc3MgYSBwYXJhbWV0ZXIgYnkKLXJlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUg
ZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRlZCBieSB0aGUKLW1hdGNoZXIgeW91IHdpbGwgc2VlIHRo
ZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QgYnV0IG5vdCBpdHMKLWFkZHJlc3MuCi0K
LVlvdSBjYW4gb3ZlcmxvYWQgbWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJh
bWV0ZXJzOgotYGBgCi1NQVRDSEVSX1AoQmxhaCwgYSwgZGVzY3JpcHRpb25fc3RyaW5nXzEpIHsg
Li4uIH0KLU1BVENIRVJfUDIoQmxhaCwgYSwgYiwgZGVzY3JpcHRpb25fc3RyaW5nXzIpIHsgLi4u
IH0KLWBgYAotCi1XaGlsZSBpdCdzIHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIGBNQVRDSEVS
KmAgbWFjcm9zIHdoZW4gZGVmaW5pbmcKLWEgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBj
b25zaWRlciBpbXBsZW1lbnRpbmcKLWBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBv
bHltb3JwaGljTWF0Y2hlcigpYCBpbnN0ZWFkIChzZWUKLXRoZSByZWNpcGVzIHRoYXQgZm9sbG93
KSwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0byB1c2UgdGhlIG1hdGNoZXIgYQotbG90LiAgV2hp
bGUgdGhlc2UgYXBwcm9hY2hlcyByZXF1aXJlIG1vcmUgd29yaywgdGhleSBnaXZlIHlvdSBtb3Jl
Ci1jb250cm9sIG9uIHRoZSB0eXBlcyBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhl
IG1hdGNoZXIKLXBhcmFtZXRlcnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNv
bXBpbGVyIGVycm9yIG1lc3NhZ2VzCi10aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhl
eSBhbHNvIGFsbG93IG92ZXJsb2FkaW5nIG1hdGNoZXJzCi1iYXNlZCBvbiBwYXJhbWV0ZXIgdHlw
ZXMgKGFzIG9wcG9zZWQgdG8ganVzdCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCi1wYXJhbWV0ZXJz
KS4KLQotIyMgV3JpdGluZyBOZXcgTW9ub21vcnBoaWMgTWF0Y2hlcnMgIyMKLQotQSBtYXRjaGVy
IG9mIGFyZ3VtZW50IHR5cGUgYFRgIGltcGxlbWVudHMKLWA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRl
cmZhY2U8VD5gIGFuZCBkb2VzIHR3byB0aGluZ3M6IGl0IHRlc3RzIHdoZXRoZXIgYQotdmFsdWUg
b2YgdHlwZSBgVGAgbWF0Y2hlcyB0aGUgbWF0Y2hlciwgYW5kIGNhbiBkZXNjcmliZSB3aGF0IGtp
bmQgb2YKLXZhbHVlcyBpdCBtYXRjaGVzLiBUaGUgbGF0dGVyIGFiaWxpdHkgaXMgdXNlZCBmb3Ig
Z2VuZXJhdGluZyByZWFkYWJsZQotZXJyb3IgbWVzc2FnZXMgd2hlbiBleHBlY3RhdGlvbnMgYXJl
IHZpb2xhdGVkLgotCi1UaGUgaW50ZXJmYWNlIGxvb2tzIGxpa2UgdGhpczoKLQotYGBgCi1jbGFz
cyBNYXRjaFJlc3VsdExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICAvLyBTdHJlYW1zIHgg
dG8gdGhlIHVuZGVybHlpbmcgb3N0cmVhbTsgZG9lcyBub3RoaW5nIGlmIHRoZSBvc3RyZWFtCi0g
IC8vIGlzIE5VTEwuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBNYXRjaFJlc3VsdExpc3Rl
bmVyJiBvcGVyYXRvcjw8KGNvbnN0IFQmIHgpOwotCi0gIC8vIFJldHVybnMgdGhlIHVuZGVybHlp
bmcgb3N0cmVhbS4KLSAgOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSgpOwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBNYXRjaGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgfk1hdGNoZXJJbnRlcmZhY2UoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRj
aGVyIG1hdGNoZXMgeDsgYWxzbyBleHBsYWlucyB0aGUgbWF0Y2gKLSAgLy8gcmVzdWx0IHRvICds
aXN0ZW5lcicuCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyB0aGlzIG1h
dGNoZXIgdG8gYW4gb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCA9IDA7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0
aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRp
b25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0OwotfTsKLWBgYAotCi1JZiB5b3UgbmVlZCBh
IGN1c3RvbSBtYXRjaGVyIGJ1dCBgVHJ1bHkoKWAgaXMgbm90IGEgZ29vZCBvcHRpb24gKGZvcgot
ZXhhbXBsZSwgeW91IG1heSBub3QgYmUgaGFwcHkgd2l0aCB0aGUgd2F5IGBUcnVseShwcmVkaWNh
dGUpYAotZGVzY3JpYmVzIGl0c2VsZiwgb3IgeW91IG1heSB3YW50IHlvdXIgbWF0Y2hlciB0byBi
ZSBwb2x5bW9ycGhpYyBhcwotYEVxKHZhbHVlKWAgaXMpLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNo
ZXIgdG8gZG8gd2hhdGV2ZXIgeW91IHdhbnQgaW4KLXR3byBzdGVwczogZmlyc3QgaW1wbGVtZW50
IHRoZSBtYXRjaGVyIGludGVyZmFjZSwgYW5kIHRoZW4gZGVmaW5lIGEKLWZhY3RvcnkgZnVuY3Rp
b24gdG8gY3JlYXRlIGEgbWF0Y2hlciBpbnN0YW5jZS4gVGhlIHNlY29uZCBzdGVwIGlzIG5vdAot
c3RyaWN0bHkgbmVlZGVkIGJ1dCBpdCBtYWtlcyB0aGUgc3ludGF4IG9mIHVzaW5nIHRoZSBtYXRj
aGVyIG5pY2VyLgotCi1Gb3IgZXhhbXBsZSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIHRl
c3Qgd2hldGhlciBhbiBgaW50YCBpcwotZGl2aXNpYmxlIGJ5IDcgYW5kIHRoZW4gdXNlIGl0IGxp
a2UgdGhpczoKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlTWF0Y2hlcjsKLXVzaW5nIDo6dGVz
dGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLQotY2xhc3MgRGl2aXNpYmxlQnk3TWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgdmlydHVh
bCBib29sIE1hdGNoQW5kRXhwbGFpbihpbnQgbiwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVu
ZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gKG4gJSA3KSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJp
cyBkaXZpc2libGUgYnkgNyI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgbm90IGRpdmlz
aWJsZSBieSA3IjsKLSAgfQotfTsKLQotaW5saW5lIE1hdGNoZXI8aW50PiBEaXZpc2libGVCeTco
KSB7Ci0gIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgRGl2aXNpYmxlQnk3TWF0Y2hlcik7Ci19Ci0u
Li4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihEaXZpc2libGVCeTcoKSkpOwotYGBgCi0KLVlv
dSBtYXkgaW1wcm92ZSB0aGUgbWF0Y2hlciBtZXNzYWdlIGJ5IHN0cmVhbWluZyBhZGRpdGlvbmFs
Ci1pbmZvcm1hdGlvbiB0byB0aGUgYGxpc3RlbmVyYCBhcmd1bWVudCBpbiBgTWF0Y2hBbmRFeHBs
YWluKClgOgotCi1gYGAKLWNsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hl
ckludGVyZmFjZTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxh
aW4oaW50IG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0
ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICBjb25zdCBpbnQgcmVtYWluZGVyID0gbiAlIDc7
Ci0gICAgaWYgKHJlbWFpbmRlciAhPSAwKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgInRoZSByZW1h
aW5kZXIgaXMgIiA8PCByZW1haW5kZXI7Ci0gICAgfQotICAgIHJldHVybiByZW1haW5kZXIgPT0g
MDsKLSAgfQotICAuLi4KLX07Ci1gYGAKLQotVGhlbiwgYEVYUEVDVF9USEFUKHgsIERpdmlzaWJs
ZUJ5NygpKTtgIG1heSBnZW5lcmFsIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci1gYGAKLVZhbHVlIG9m
OiB4Ci1FeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgQWN0dWFsOiAyMyAodGhlIHJlbWFp
bmRlciBpcyAyKQotYGBgCi0KLSMjIFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIE1hdGNoZXJzICMj
Ci0KLVlvdSd2ZSBsZWFybmVkIGhvdyB0byB3cml0ZSB5b3VyIG93biBtYXRjaGVycyBpbiB0aGUg
cHJldmlvdXMKLXJlY2lwZS4gSnVzdCBvbmUgcHJvYmxlbTogYSBtYXRjaGVyIGNyZWF0ZWQgdXNp
bmcgYE1ha2VNYXRjaGVyKClgIG9ubHkKLXdvcmtzIGZvciBvbmUgcGFydGljdWxhciB0eXBlIG9m
IGFyZ3VtZW50cy4gSWYgeW91IHdhbnQgYQotX3BvbHltb3JwaGljXyBtYXRjaGVyIHRoYXQgd29y
a3Mgd2l0aCBhcmd1bWVudHMgb2Ygc2V2ZXJhbCB0eXBlcyAoZm9yCi1pbnN0YW5jZSwgYEVxKHgp
YCBjYW4gYmUgdXNlZCB0byBtYXRjaCBhIGB2YWx1ZWAgYXMgbG9uZyBhcyBgdmFsdWVgID09Ci1g
eGAgY29tcGlsZXMgLS0gYHZhbHVlYCBhbmQgYHhgIGRvbid0IGhhdmUgdG8gc2hhcmUgdGhlIHNh
bWUgdHlwZSksCi15b3UgY2FuIGxlYXJuIHRoZSB0cmljayBmcm9tIGAiZ21vY2svZ21vY2stbWF0
Y2hlcnMuaCJgIGJ1dCBpdCdzIGEgYml0Ci1pbnZvbHZlZC4KLQotRm9ydHVuYXRlbHksIG1vc3Qg
b2YgdGhlIHRpbWUgeW91IGNhbiBkZWZpbmUgYSBwb2x5bW9ycGhpYyBtYXRjaGVyCi1lYXNpbHkg
d2l0aCB0aGUgaGVscCBvZiBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYC4gSGVyZSdzIGhvdyB5
b3UgY2FuCi1kZWZpbmUgYE5vdE51bGwoKWAgYXMgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNo
UmVzdWx0TGlzdGVuZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Ci11c2luZyA6OnRlc3Rp
bmc6OlBvbHltb3JwaGljTWF0Y2hlcjsKLQotY2xhc3MgTm90TnVsbE1hdGNoZXIgewotIHB1Ymxp
YzoKLSAgLy8gVG8gaW1wbGVtZW50IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgZmlyc3QgZGVmaW5l
IGEgQ09QWUFCTEUgY2xhc3MKLSAgLy8gdGhhdCBoYXMgdGhyZWUgbWVtYmVycyBNYXRjaEFuZEV4
cGxhaW4oKSwgRGVzY3JpYmVUbygpLCBhbmQKLSAgLy8gRGVzY3JpYmVOZWdhdGlvblRvKCksIGxp
a2UgdGhlIGZvbGxvd2luZy4KLQotICAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gdXNl
IE5vdE51bGwoKSB3aXRoIGFueSBwb2ludGVyLCBzbwotICAvLyBNYXRjaEFuZEV4cGxhaW4oKSBh
Y2NlcHRzIGEgcG9pbnRlciBvZiBhbnkgdHlwZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuCi0gIC8v
IEluIGdlbmVyYWwsIHlvdSBjYW4gZGVmaW5lIE1hdGNoQW5kRXhwbGFpbigpIGFzIGFuIG9yZGlu
YXJ5IG1ldGhvZCBvcgotICAvLyBhIG1ldGhvZCB0ZW1wbGF0ZSwgb3IgZXZlbiBvdmVybG9hZCBp
dC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQqIHAs
Ci0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVy
ICovKSBjb25zdCB7Ci0gICAgcmV0dXJuIHAgIT0gTlVMTDsKLSAgfQotCi0gIC8vIERlc2NyaWJl
cyB0aGUgcHJvcGVydHkgb2YgYSB2YWx1ZSBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCi0gIHZvaWQg
RGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBub3QgTlVM
TCI7IH0KLQotICAvLyBEZXNjcmliZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgTk9UIG1hdGNo
aW5nIHRoaXMgbWF0Y2hlci4KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgTlVMTCI7IH0KLX07Ci0KLS8vIFRvIGNvbnN0cnVj
dCBhIHBvbHltb3JwaGljIG1hdGNoZXIsIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzCi0v
LyB0byBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKCkuICBOb3RlIHRoZSByZXR1cm4gdHlwZS4KLWlu
bGluZSBQb2x5bW9ycGhpY01hdGNoZXI8Tm90TnVsbE1hdGNoZXI+IE5vdE51bGwoKSB7Ci0gIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE5vdE51bGxNYXRjaGVyKCkpOwotfQotLi4uCi0K
LSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoTm90TnVsbCgpKSk7ICAvLyBUaGUgYXJndW1lbnQgbXVz
dCBiZSBhIG5vbi1OVUxMIHBvaW50ZXIuCi1gYGAKLQotKipOb3RlOioqIFlvdXIgcG9seW1vcnBo
aWMgbWF0Y2hlciBjbGFzcyBkb2VzICoqbm90KiogbmVlZCB0byBpbmhlcml0IGZyb20KLWBNYXRj
aGVySW50ZXJmYWNlYCBvciBhbnkgb3RoZXIgY2xhc3MsIGFuZCBpdHMgbWV0aG9kcyBkbyAqKm5v
dCoqIG5lZWQKLXRvIGJlIHZpcnR1YWwuCi0KLUxpa2UgaW4gYSBtb25vbW9ycGhpYyBtYXRjaGVy
LCB5b3UgbWF5IGV4cGxhaW4gdGhlIG1hdGNoIHJlc3VsdCBieQotc3RyZWFtaW5nIGFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gdG8gdGhlIGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4KLWBNYXRjaEFuZEV4
cGxhaW4oKWAuCi0KLSMjIFdyaXRpbmcgTmV3IENhcmRpbmFsaXRpZXMgIyMKLQotQSBjYXJkaW5h
bGl0eSBpcyB1c2VkIGluIGBUaW1lcygpYCB0byB0ZWxsIEdvb2dsZSBNb2NrIGhvdyBtYW55IHRp
bWVzCi15b3UgZXhwZWN0IGEgY2FsbCB0byBvY2N1ci4gSXQgZG9lc24ndCBoYXZlIHRvIGJlIGV4
YWN0LiBGb3IgZXhhbXBsZSwKLXlvdSBjYW4gc2F5IGBBdExlYXN0KDUpYCBvciBgQmV0d2Vlbigy
LCA0KWAuCi0KLUlmIHRoZSBidWlsdC1pbiBzZXQgb2YgY2FyZGluYWxpdGllcyBkb2Vzbid0IHN1
aXQgeW91LCB5b3UgYXJlIGZyZWUgdG8KLWRlZmluZSB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcg
dGhlIGZvbGxvd2luZyBpbnRlcmZhY2UgKGluIG5hbWVzcGFjZQotYHRlc3RpbmdgKToKLQotYGBg
Ci1jbGFzcyBDYXJkaW5hbGl0eUludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5DYXJk
aW5hbGl0eUludGVyZmFjZSgpOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBj
YWxscyB3aWxsIHNhdGlzZnkgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0
aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFs
aXR5LgotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3Vu
dCkgY29uc3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCi0gIHZp
cnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotfTsK
LWBgYAotCi1Gb3IgZXhhbXBsZSwgdG8gc3BlY2lmeSB0aGF0IGEgY2FsbCBtdXN0IG9jY3VyIGV2
ZW4gbnVtYmVyIG9mIHRpbWVzLAoteW91IGNhbiB3cml0ZQotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6Q2FyZGluYWxpdHk7Ci11c2luZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwot
dXNpbmcgOjp0ZXN0aW5nOjpNYWtlQ2FyZGluYWxpdHk7Ci0KLWNsYXNzIEV2ZW5OdW1iZXJDYXJk
aW5hbGl0eSA6IHB1YmxpYyBDYXJkaW5hbGl0eUludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0
dWFsIGJvb2wgSXNTYXRpc2ZpZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3Qgewot
ICAgIHJldHVybiAoY2FsbF9jb3VudCAlIDIpID09IDA7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wg
SXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgewotICAgICpvcyA8PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsK
LSAgfQotfTsKLQotQ2FyZGluYWxpdHkgRXZlbk51bWJlcigpIHsKLSAgcmV0dXJuIE1ha2VDYXJk
aW5hbGl0eShuZXcgRXZlbk51bWJlckNhcmRpbmFsaXR5KTsKLX0KLS4uLgotCi0gIEVYUEVDVF9D
QUxMKGZvbywgQmFyKDMpKQotICAgICAgLlRpbWVzKEV2ZW5OdW1iZXIoKSk7Ci1gYGAKLQotIyMg
V3JpdGluZyBOZXcgQWN0aW9ucyBRdWlja2x5ICMjCi0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25z
IGRvbid0IHdvcmsgZm9yIHlvdSwgYW5kIHlvdSBmaW5kIGl0Ci1pbmNvbnZlbmllbnQgdG8gdXNl
IGBJbnZva2UoKWAsIHlvdSBjYW4gdXNlIGEgbWFjcm8gZnJvbSB0aGUgYEFDVElPTipgCi1mYW1p
bHkgdG8gcXVpY2tseSBkZWZpbmUgYSBuZXcgYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91
ciBjb2RlIGFzCi1pZiBpdCdzIGEgYnVpbHQtaW4gYWN0aW9uLgotCi1CeSB3cml0aW5nCi1gYGAK
LUFDVElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotaW4gYSBuYW1lc3BhY2Ugc2NvcGUg
KGkuZS4gbm90IGluc2lkZSBhIGNsYXNzIG9yIGZ1bmN0aW9uKSwgeW91IHdpbGwKLWRlZmluZSBh
biBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRz
LgotVGhlIHZhbHVlIHJldHVybmVkIGJ5IGBzdGF0ZW1lbnRzYCB3aWxsIGJlIHVzZWQgYXMgdGhl
IHJldHVybiB2YWx1ZSBvZgotdGhlIGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91
IGNhbiByZWZlciB0byB0aGUgSy10aAotKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1
bmN0aW9uIGFzIGBhcmdLYC4gIEZvciBleGFtcGxlOgotYGBgCi1BQ1RJT04oSW5jcmVtZW50QXJn
MSkgeyByZXR1cm4gKysoKmFyZzEpOyB9Ci1gYGAKLWFsbG93cyB5b3UgdG8gd3JpdGUKLWBgYAot
Li4uIFdpbGxPbmNlKEluY3JlbWVudEFyZzEoKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSBkb24n
dCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCi1hcmd1bWVu
dHMuICBSZXN0IGFzc3VyZWQgdGhhdCB5b3VyIGNvZGUgaXMgdHlwZS1zYWZlIHRob3VnaDoKLXlv
dSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBpZiBgKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUg
YCsrYAotb3BlcmF0b3IsIG9yIGlmIHRoZSB0eXBlIG9mIGArKygqYXJnMSlgIGlzbid0IGNvbXBh
dGlibGUgd2l0aCB0aGUgbW9jawotZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KLQotQW5vdGhlciBl
eGFtcGxlOgotYGBgCi1BQ1RJT04oRm9vKSB7Ci0gICgqYXJnMikoNSk7Ci0gIEJsYWgoKTsKLSAg
KmFyZzEgPSAwOwotICByZXR1cm4gYXJnMDsKLX0KLWBgYAotZGVmaW5lcyBhbiBhY3Rpb24gYEZv
bygpYCB0aGF0IGludm9rZXMgYXJndW1lbnQgIzIgKGEgZnVuY3Rpb24gcG9pbnRlcikKLXdpdGgg
NSwgY2FsbHMgZnVuY3Rpb24gYEJsYWgoKWAsIHNldHMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkg
YXJndW1lbnQKLSMxIHRvIDAsIGFuZCByZXR1cm5zIGFyZ3VtZW50ICMwLgotCi1Gb3IgbW9yZSBj
b252ZW5pZW5jZSBhbmQgZmxleGliaWxpdHksIHlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2lu
ZwotcHJlLWRlZmluZWQgc3ltYm9scyBpbiB0aGUgYm9keSBvZiBgQUNUSU9OYDoKLQotfCBgYXJn
S190eXBlYCB8IFRoZSB0eXBlIG9mIHRoZSBLLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUg
bW9jayBmdW5jdGlvbiB8Ci18Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYGFyZ3NgICAgICAgfCBB
bGwgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgICAgICAgICAg
ICAgfAotfCBgYXJnc190eXBlYCB8IFRoZSB0eXBlIG9mIGFsbCBhcmd1bWVudHMgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gYXMgYSB0dXBsZSAgICB8Ci18IGByZXR1cm5fdHlwZWAgfCBUaGUgcmV0dXJu
IHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
ZnVuY3Rpb25fdHlwZWAgfCBUaGUgdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAotCi1Gb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBhbiBgQUNU
SU9OYCBhcyBhIHN0dWIgYWN0aW9uIGZvciBtb2NrIGZ1bmN0aW9uOgotYGBgCi1pbnQgRG9Tb21l
dGhpbmcoYm9vbCBmbGFnLCBpbnQqIHB0cik7Ci1gYGAKLXdlIGhhdmU6Ci18ICoqUHJlLWRlZmlu
ZWQgU3ltYm9sKiogfCAqKklzIEJvdW5kIFRvKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLXwKLXwgYGFyZzBgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1
ZSBvZiBgZmxhZ2AgfAotfCBgYXJnMF90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGJvb2xg
IHwKLXwgYGFyZzFgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgcHRyYCB8Ci18IGBh
cmcxX3R5cGVgICAgICAgICAgICAgfCB0aGUgdHlwZSBgaW50KmAgfAotfCBgYXJnc2AgICAgICAg
ICAgICAgICAgIHwgdGhlIHR1cGxlIGAoZmxhZywgcHRyKWAgfAotfCBgYXJnc190eXBlYCAgICAg
ICAgICAgIHwgdGhlIHR5cGUgYDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKLXwgYHJl
dHVybl90eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBpbnRgICB8Ci18IGBmdW5jdGlvbl90eXBl
YCAgICAgICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGludCopYCB8Ci0KLSMjIFdyaXRpbmcgTmV3
IFBhcmFtZXRlcml6ZWQgQWN0aW9ucyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3UnbGwgd2Fu
dCB0byBwYXJhbWV0ZXJpemUgYW4gYWN0aW9uIHlvdSBkZWZpbmUuICBGb3IgdGhhdAotd2UgaGF2
ZSBhbm90aGVyIG1hY3JvCi1gYGAKLUFDVElPTl9QKG5hbWUsIHBhcmFtKSB7IHN0YXRlbWVudHM7
IH0KLWBgYAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1AoQWRkLCBuKSB7IHJldHVybiBh
cmcwICsgbjsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0ZQotYGBgCi0vLyBSZXR1cm5z
IGFyZ3VtZW50ICMwICsgNS4KLS4uLiBXaWxsT25jZShBZGQoNSkpOwotYGBgCi0KLUZvciBjb252
ZW5pZW5jZSwgd2UgdXNlIHRoZSB0ZXJtIF9hcmd1bWVudHNfIGZvciB0aGUgdmFsdWVzIHVzZWQg
dG8KLWludm9rZSB0aGUgbW9jayBmdW5jdGlvbiwgYW5kIHRoZSB0ZXJtIF9wYXJhbWV0ZXJzXyBm
b3IgdGhlIHZhbHVlcwotdXNlZCB0byBpbnN0YW50aWF0ZSBhbiBhY3Rpb24uCi0KLU5vdGUgdGhh
dCB5b3UgZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgZWl0
aGVyLgotU3VwcG9zZSB0aGUgcGFyYW1ldGVyIGlzIG5hbWVkIGBwYXJhbWAsIHlvdSBjYW4gYWxz
byB1c2UgdGhlCi1Hb29nbGUtTW9jay1kZWZpbmVkIHN5bWJvbCBgcGFyYW1fdHlwZWAgdG8gcmVm
ZXIgdG8gdGhlIHR5cGUgb2YgdGhlCi1wYXJhbWV0ZXIgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbXBp
bGVyLiAgRm9yIGV4YW1wbGUsIGluIHRoZSBib2R5IG9mCi1gQUNUSU9OX1AoQWRkLCBuKWAgYWJv
dmUsIHlvdSBjYW4gd3JpdGUgYG5fdHlwZWAgZm9yIHRoZSB0eXBlIG9mIGBuYC4KLQotR29vZ2xl
IE1vY2sgYWxzbyBwcm92aWRlcyBgQUNUSU9OX1AyYCwgYEFDVElPTl9QM2AsIGFuZCBldGMgdG8g
c3VwcG9ydAotbXVsdGktcGFyYW1ldGVyIGFjdGlvbnMuICBGb3IgZXhhbXBsZSwKLWBgYAotQUNU
SU9OX1AyKFJldHVybkRpc3RhbmNlVG8sIHgsIHkpIHsKLSAgZG91YmxlIGR4ID0gYXJnMCAtIHg7
Ci0gIGRvdWJsZSBkeSA9IGFyZzEgLSB5OwotICByZXR1cm4gc3FydChkeCpkeCArIGR5KmR5KTsK
LX0KLWBgYAotbGV0cyB5b3Ugd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKFJldHVybkRpc3RhbmNl
VG8oNS4wLCAyNi41KSk7Ci1gYGAKLQotWW91IGNhbiB2aWV3IGBBQ1RJT05gIGFzIGEgZGVnZW5l
cmF0ZWQgcGFyYW1ldGVyaXplZCBhY3Rpb24gd2hlcmUgdGhlCi1udW1iZXIgb2YgcGFyYW1ldGVy
cyBpcyAwLgotCi1Zb3UgY2FuIGFsc28gZWFzaWx5IGRlZmluZSBhY3Rpb25zIG92ZXJsb2FkZWQg
b24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzOgotYGBgCi1BQ1RJT05fUChQbHVzLCBhKSB7IC4u
LiB9Ci1BQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQotYGBgCi0KLSMjIFJlc3RyaWN0aW5n
IHRoZSBUeXBlIG9mIGFuIEFyZ3VtZW50IG9yIFBhcmFtZXRlciBpbiBhbiBBQ1RJT04gIyMKLQot
Rm9yIG1heGltdW0gYnJldml0eSBhbmQgcmV1c2FiaWxpdHksIHRoZSBgQUNUSU9OKmAgbWFjcm9z
IGRvbid0IGFzawoteW91IHRvIHByb3ZpZGUgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9u
IGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlvbgotcGFyYW1ldGVycy4gIEluc3RlYWQsIHdlIGxldCB0
aGUgY29tcGlsZXIgaW5mZXIgdGhlIHR5cGVzIGZvciB1cy4KLQotU29tZXRpbWVzLCBob3dldmVy
LCB3ZSBtYXkgd2FudCB0byBiZSBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJl
IGFyZSBzZXZlcmFsIHRyaWNrcyB0byBkbyB0aGF0LiAgRm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElP
TihGb28pIHsKLSAgLy8gTWFrZXMgc3VyZSBhcmcwIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50Lgot
ICBpbnQgbiA9IGFyZzA7Ci0gIC4uLiB1c2UgbiBpbnN0ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0K
LQotQUNUSU9OX1AoQmFyLCBwYXJhbSkgewotICAvLyBNYWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFy
ZzEgaXMgY29uc3QgY2hhciouCi0gIDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0
IGNoYXIqLCBhcmcxX3R5cGU+KCk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29u
dmVydGVkIHRvIGJvb2wuCi0gIGJvb2wgZmxhZyA9IHBhcmFtOwotfQotYGBgCi13aGVyZSBgU3Rh
dGljQXNzZXJ0VHlwZUVxYCBpcyBhIGNvbXBpbGUtdGltZSBhc3NlcnRpb24gaW4gR29vZ2xlIFRl
c3QKLXRoYXQgdmVyaWZpZXMgdHdvIHR5cGVzIGFyZSB0aGUgc2FtZS4KLQotIyMgV3JpdGluZyBO
ZXcgQWN0aW9uIFRlbXBsYXRlcyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBn
aXZlIGFuIGFjdGlvbiBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKLWNhbm5vdCBi
ZSBpbmZlcnJlZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0ZXJzLiAgYEFDVElPTl9URU1QTEFURSgp
YAotc3VwcG9ydHMgdGhhdCBhbmQgY2FuIGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gYEFD
VElPTigpYCBhbmQKLWBBQ1RJT05fUCooKWAuCi0KLVRoZSBzeW50YXg6Ci1gYGAKLUFDVElPTl9U
RU1QTEFURShBY3Rpb25OYW1lLAotICAgICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFN
UyhraW5kMSwgbmFtZTEsIC4uLiwga2luZF9tLCBuYW1lX20pLAotICAgICAgICAgICAgICAgIEFO
RF9uX1ZBTFVFX1BBUkFNUyhwMSwgLi4uLCBwX24pKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1k
ZWZpbmVzIGFuIGFjdGlvbiB0ZW1wbGF0ZSB0aGF0IHRha2VzIF9tXyBleHBsaWNpdCB0ZW1wbGF0
ZSBwYXJhbWV0ZXJzCi1hbmQgX25fIHZhbHVlIHBhcmFtZXRlcnMsIHdoZXJlIF9tXyBpcyBiZXR3
ZWVuIDEgYW5kIDEwLCBhbmQgX25fIGlzCi1iZXR3ZWVuIDAgYW5kIDEwLiAgYG5hbWVfaWAgaXMg
dGhlIG5hbWUgb2YgdGhlIGktdGggdGVtcGxhdGUKLXBhcmFtZXRlciwgYW5kIGBraW5kX2lgIHNw
ZWNpZmllcyB3aGV0aGVyIGl0J3MgYSBgdHlwZW5hbWVgLCBhbgotaW50ZWdyYWwgY29uc3RhbnQs
IG9yIGEgdGVtcGxhdGUuICBgcF9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10aCB2YWx1ZQotcGFy
YW1ldGVyLgotCi1FeGFtcGxlOgotYGBgCi0vLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBj
b252ZXJ0cyB0aGUgay10aCBhcmd1bWVudCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24gdG8gdHlw
ZSBUIGFuZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KLUFDVElPTl9URU1QTEFURShEdXBsaWNhdGVB
cmcsCi0gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgY29tbWEgYmV0d2VlbiBpbnQgYW5kIGs6
Ci0gICAgICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUs
IFQpLAotICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0gICpv
dXRwdXQgPSBUKDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpKTsKLX0KLWBgYAotCi1UbyBjcmVhdGUg
YW4gaW5zdGFuY2Ugb2YgYW4gYWN0aW9uIHRlbXBsYXRlLCB3cml0ZToKLWBgYAotICBBY3Rpb25O
YW1lPHQxLCAuLi4sIHRfbT4odjEsIC4uLiwgdl9uKQotYGBgCi13aGVyZSB0aGUgYHRgcyBhcmUg
dGhlIHRlbXBsYXRlIGFyZ3VtZW50cyBhbmQgdGhlCi1gdmBzIGFyZSB0aGUgdmFsdWUgYXJndW1l
bnRzLiAgVGhlIHZhbHVlIGFyZ3VtZW50Ci10eXBlcyBhcmUgaW5mZXJyZWQgYnkgdGhlIGNvbXBp
bGVyLiAgRm9yIGV4YW1wbGU6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLS4uLgotICBpbnQg
bjsKLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8pKQotICAgICAgLldpbGxPbmNlKER1cGxp
Y2F0ZUFyZzwxLCB1bnNpZ25lZCBjaGFyPigmbikpOwotYGBgCi0KLUlmIHlvdSB3YW50IHRvIGV4
cGxpY2l0bHkgc3BlY2lmeSB0aGUgdmFsdWUgYXJndW1lbnQgdHlwZXMsIHlvdSBjYW4KLXByb3Zp
ZGUgYWRkaXRpb25hbCB0ZW1wbGF0ZSBhcmd1bWVudHM6Ci1gYGAKLSAgQWN0aW9uTmFtZTx0MSwg
Li4uLCB0X20sIHUxLCAuLi4sIHVfaz4odjEsIC4uLiwgdl9uKQotYGBgCi13aGVyZSBgdV9pYCBp
cyB0aGUgZGVzaXJlZCB0eXBlIG9mIGB2X2lgLgotCi1gQUNUSU9OX1RFTVBMQVRFYCBhbmQgYEFD
VElPTmAvYEFDVElPTl9QKmAgY2FuIGJlIG92ZXJsb2FkZWQgb24gdGhlCi1udW1iZXIgb2YgdmFs
dWUgcGFyYW1ldGVycywgYnV0IG5vdCBvbiB0aGUgbnVtYmVyIG9mIHRlbXBsYXRlCi1wYXJhbWV0
ZXJzLiAgV2l0aG91dCB0aGUgcmVzdHJpY3Rpb24sIHRoZSBtZWFuaW5nIG9mIHRoZSBmb2xsb3dp
bmcgaXMKLXVuY2xlYXI6Ci0KLWBgYAotICBPdmVybG9hZGVkQWN0aW9uPGludCwgYm9vbD4oeCk7
Ci1gYGAKLQotQXJlIHdlIHVzaW5nIGEgc2luZ2xlLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24g
d2hlcmUgYGJvb2xgIHJlZmVycyB0bwotdGhlIHR5cGUgb2YgYHhgLCBvciBhIHR3by10ZW1wbGF0
ZS1wYXJhbWV0ZXIgYWN0aW9uIHdoZXJlIHRoZSBjb21waWxlcgotaXMgYXNrZWQgdG8gaW5mZXIg
dGhlIHR5cGUgb2YgYHhgPwotCi0jIyBVc2luZyB0aGUgQUNUSU9OIE9iamVjdCdzIFR5cGUgIyMK
LQotSWYgeW91IGFyZSB3cml0aW5nIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGBBQ1RJT05g
IG9iamVjdCwgeW91J2xsCi1uZWVkIHRvIGtub3cgaXRzIHR5cGUuICBUaGUgdHlwZSBkZXBlbmRz
IG9uIHRoZSBtYWNybyB1c2VkIHRvIGRlZmluZQotdGhlIGFjdGlvbiBhbmQgdGhlIHBhcmFtZXRl
ciB0eXBlcy4gIFRoZSBydWxlIGlzIHJlbGF0aXZlbHkgc2ltcGxlOgotfCAqKkdpdmVuIERlZmlu
aXRpb24qKiB8ICoqRXhwcmVzc2lvbioqIHwgKipIYXMgVHlwZSoqIHwKLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBQ1RJT04oRm9v
KWAgICAgICAgIHwgYEZvbygpYCAgICAgICAgfCBgRm9vQWN0aW9uYCAgfAotfCBgQUNUSU9OX1RF
TVBMQVRFKEZvbywgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4uLiksIEFORF8wX1ZBTFVFX1BBUkFN
UygpKWAgfAlgRm9vPHQxLCAuLi4sIHRfbT4oKWAgfCBgRm9vQWN0aW9uPHQxLCAuLi4sIHRfbT5g
IHwKLXwgYEFDVElPTl9QKEJhciwgcGFyYW0pYCB8IGBCYXIoaW50X3ZhbHVlKWAgfCBgQmFyQWN0
aW9uUDxpbnQ+YCB8Ci18IGBBQ1RJT05fVEVNUExBVEUoQmFyLCBIQVNfbV9URU1QTEFURV9QQVJB
TVMoLi4uKSwgQU5EXzFfVkFMVUVfUEFSQU1TKHAxKSlgIHwgYEJhcjx0MSwgLi4uLCB0X20+KGlu
dF92YWx1ZSlgIHwgYEZvb0FjdGlvblA8dDEsIC4uLiwgdF9tLCBpbnQ+YCB8Ci18IGBBQ1RJT05f
UDIoQmF6LCBwMSwgcDIpYCB8IGBCYXooYm9vbF92YWx1ZSwgaW50X3ZhbHVlKWAgfCBgQmF6QWN0
aW9uUDI8Ym9vbCwgaW50PmAgfAotfCBgQUNUSU9OX1RFTVBMQVRFKEJheiwgSEFTX21fVEVNUExB
VEVfUEFSQU1TKC4uLiksIEFORF8yX1ZBTFVFX1BBUkFNUyhwMSwgcDIpKWAgfCBgQmF6PHQxLCAu
Li4sIHRfbT4oYm9vbF92YWx1ZSwgaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDI8dDEsIC4uLiwg
dF9tLCBib29sLCBpbnQ+YCB8Ci18IC4uLiAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAg
ICAgfCAuLi4gICAgICAgICAgfAotCi1Ob3RlIHRoYXQgd2UgaGF2ZSB0byBwaWNrIGRpZmZlcmVu
dCBzdWZmaXhlcyAoYEFjdGlvbmAsIGBBY3Rpb25QYCwKLWBBY3Rpb25QMmAsIGFuZCBldGMpIGZv
ciBhY3Rpb25zIHdpdGggZGlmZmVyZW50IG51bWJlcnMgb2YgdmFsdWUKLXBhcmFtZXRlcnMsIG9y
IHRoZSBhY3Rpb24gZGVmaW5pdGlvbnMgY2Fubm90IGJlIG92ZXJsb2FkZWQgb24gdGhlCi1udW1i
ZXIgb2YgdGhlbS4KLQotIyMgV3JpdGluZyBOZXcgTW9ub21vcnBoaWMgQWN0aW9ucyAjIwotCi1X
aGlsZSB0aGUgYEFDVElPTipgIG1hY3JvcyBhcmUgdmVyeSBjb252ZW5pZW50LCBzb21ldGltZXMg
dGhleSBhcmUKLWluYXBwcm9wcmlhdGUuICBGb3IgZXhhbXBsZSwgZGVzcGl0ZSB0aGUgdHJpY2tz
IHNob3duIGluIHRoZSBwcmV2aW91cwotcmVjaXBlcywgdGhleSBkb24ndCBsZXQgeW91IGRpcmVj
dGx5IHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBtb2NrCi1mdW5jdGlvbiBhcmd1bWVudHMgYW5k
IHRoZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcwotdG8gdW5vcHRp
bWl6ZWQgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmFmZmxlIHVuZmFtaWxpYXIK
LXVzZXJzLiAgVGhleSBhbHNvIGRvbid0IGFsbG93IG92ZXJsb2FkaW5nIGFjdGlvbnMgYmFzZWQg
b24gcGFyYW1ldGVyCi10eXBlcyB3aXRob3V0IGp1bXBpbmcgdGhyb3VnaCBzb21lIGhvb3BzLgot
Ci1BbiBhbHRlcm5hdGl2ZSB0byB0aGUgYEFDVElPTipgIG1hY3JvcyBpcyB0byBpbXBsZW1lbnQK
LWA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPmAsIHdoZXJlIGBGYCBpcyB0aGUgdHlwZSBv
ZiB0aGUgbW9jawotZnVuY3Rpb24gaW4gd2hpY2ggdGhlIGFjdGlvbiB3aWxsIGJlIHVzZWQuIEZv
ciBleGFtcGxlOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGPmNsYXNzIEFjdGlvbkludGVy
ZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5BY3Rpb25JbnRlcmZhY2UoKTsKLQotICAvLyBQ
ZXJmb3JtcyB0aGUgYWN0aW9uLiAgUmVzdWx0IGlzIHRoZSByZXR1cm4gdHlwZSBvZiBmdW5jdGlv
biB0eXBlCi0gIC8vIEYsIGFuZCBBcmd1bWVudFR1cGxlIGlzIHRoZSB0dXBsZSBvZiBhcmd1bWVu
dHMgb2YgRi4KLSAgLy8KLSAgLy8gRm9yIGV4YW1wbGUsIGlmIEYgaXMgaW50KGJvb2wsIGNvbnN0
IHN0cmluZyYpLCB0aGVuIFJlc3VsdCB3b3VsZAotICAvLyBiZSBpbnQsIGFuZCBBcmd1bWVudFR1
cGxlIHdvdWxkIGJlIDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgY29uc3Qgc3RyaW5nJj4uCi0gIHZp
cnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgPSAwOwotfTsK
LQotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpBY3Rpb247Ci11c2luZyA6
OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWFrZUFjdGlvbjsK
LQotdHlwZWRlZiBpbnQgSW5jcmVtZW50TWV0aG9kKGludCopOwotCi1jbGFzcyBJbmNyZW1lbnRB
cmd1bWVudEFjdGlvbiA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8SW5jcmVtZW50TWV0aG9kPiB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIGludCBQZXJmb3JtKGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8
aW50Kj4mIGFyZ3MpIHsKLSAgICBpbnQqIHAgPSA6OnRlc3Rpbmc6OmdldDwwPihhcmdzKTsgIC8v
IEdyYWJzIHRoZSBmaXJzdCBhcmd1bWVudC4KLSAgICByZXR1cm4gKnArKzsKLSAgfQotfTsKLQot
QWN0aW9uPEluY3JlbWVudE1ldGhvZD4gSW5jcmVtZW50QXJndW1lbnQoKSB7Ci0gIHJldHVybiBN
YWtlQWN0aW9uKG5ldyBJbmNyZW1lbnRBcmd1bWVudEFjdGlvbik7Ci19Ci0uLi4KLQotICBFWFBF
Q1RfQ0FMTChmb28sIEJheihfKSkKLSAgICAgIC5XaWxsT25jZShJbmNyZW1lbnRBcmd1bWVudCgp
KTsKLQotICBpbnQgbiA9IDU7Ci0gIGZvby5CYXooJm4pOyAgLy8gU2hvdWxkIHJldHVybiA1IGFu
ZCBjaGFuZ2UgbiB0byA2LgotYGBgCi0KLSMjIFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIEFjdGlv
bnMgIyMKLQotVGhlIHByZXZpb3VzIHJlY2lwZSBzaG93ZWQgeW91IGhvdyB0byBkZWZpbmUgeW91
ciBvd24gYWN0aW9uLiBUaGlzIGlzCi1hbGwgZ29vZCwgZXhjZXB0IHRoYXQgeW91IG5lZWQgdG8g
a25vdyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gaW4KLXdoaWNoIHRoZSBhY3Rpb24gd2lsbCBi
ZSB1c2VkLiBTb21ldGltZXMgdGhhdCBjYW4gYmUgYSBwcm9ibGVtLiBGb3IKLWV4YW1wbGUsIGlm
IHlvdSB3YW50IHRvIHVzZSB0aGUgYWN0aW9uIGluIGZ1bmN0aW9ucyB3aXRoIF9kaWZmZXJlbnRf
Ci10eXBlcyAoZS5nLiBsaWtlIGBSZXR1cm4oKWAgYW5kIGBTZXRBcmdQb2ludGVlKClgKS4KLQot
SWYgYW4gYWN0aW9uIGNhbiBiZSB1c2VkIGluIHNldmVyYWwgdHlwZXMgb2YgbW9jayBmdW5jdGlv
bnMsIHdlIHNheQotaXQncyBfcG9seW1vcnBoaWNfLiBUaGUgYE1ha2VQb2x5bW9ycGhpY0FjdGlv
bigpYCBmdW5jdGlvbiB0ZW1wbGF0ZQotbWFrZXMgaXQgZWFzeSB0byBkZWZpbmUgc3VjaCBhbiBh
Y3Rpb246Ci0KLWBgYAotbmFtZXNwYWNlIHRlc3RpbmcgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
SW1wbD4KLVBvbHltb3JwaGljQWN0aW9uPEltcGw+IE1ha2VQb2x5bW9ycGhpY0FjdGlvbihjb25z
dCBJbXBsJiBpbXBsKTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLWBgYAotCi1BcyBhbiBl
eGFtcGxlLCBsZXQncyBkZWZpbmUgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyB0aGUgc2Vjb25kIGFy
Z3VtZW50Ci1pbiB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50IGxpc3QuIFRoZSBmaXJzdCBz
dGVwIGlzIHRvIGRlZmluZSBhbgotaW1wbGVtZW50YXRpb24gY2xhc3M6Ci0KLWBgYAotY2xhc3Mg
UmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KLSAgUmVzdWx0IFBlcmZvcm0oY29u
c3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgewotICAgIC8vIFRvIGdldCB0aGUgaS10aCAo
MC1iYXNlZCkgYXJndW1lbnQsIHVzZSA6OnRlc3Rpbmc6OmdldDxpPihhcmdzKS4KLSAgICByZXR1
cm4gOjp0ZXN0aW5nOjpnZXQ8MT4oYXJncyk7Ci0gIH0KLX07Ci1gYGAKLQotVGhpcyBpbXBsZW1l
bnRhdGlvbiBjbGFzcyBkb2VzIF9ub3RfIG5lZWQgdG8gaW5oZXJpdCBmcm9tIGFueQotcGFydGlj
dWxhciBjbGFzcy4gV2hhdCBtYXR0ZXJzIGlzIHRoYXQgaXQgbXVzdCBoYXZlIGEgYFBlcmZvcm0o
KWAKLW1ldGhvZCB0ZW1wbGF0ZS4gVGhpcyBtZXRob2QgdGVtcGxhdGUgdGFrZXMgdGhlIG1vY2sg
ZnVuY3Rpb24ncwotYXJndW1lbnRzIGFzIGEgdHVwbGUgaW4gYSAqKnNpbmdsZSoqIGFyZ3VtZW50
LCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mCi10aGUgYWN0aW9uLiBJdCBjYW4gYmUgZWl0aGVy
IGBjb25zdGAgb3Igbm90LCBidXQgbXVzdCBiZSBpbnZva2FibGUKLXdpdGggZXhhY3RseSBvbmUg
dGVtcGxhdGUgYXJndW1lbnQsIHdoaWNoIGlzIHRoZSByZXN1bHQgdHlwZS4gSW4gb3RoZXIKLXdv
cmRzLCB5b3UgbXVzdCBiZSBhYmxlIHRvIGNhbGwgYFBlcmZvcm08Uj4oYXJncylgIHdoZXJlIGBS
YCBpcyB0aGUKLW1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBhbmQgYGFyZ3NgIGlzIGl0cyBh
cmd1bWVudHMgaW4gYSB0dXBsZS4KLQotTmV4dCwgd2UgdXNlIGBNYWtlUG9seW1vcnBoaWNBY3Rp
b24oKWAgdG8gdHVybiBhbiBpbnN0YW5jZSBvZiB0aGUKLWltcGxlbWVudGF0aW9uIGNsYXNzIGlu
dG8gdGhlIHBvbHltb3JwaGljIGFjdGlvbiB3ZSBuZWVkLiBJdCB3aWxsIGJlCi1jb252ZW5pZW50
IHRvIGhhdmUgYSB3cmFwcGVyIGZvciB0aGlzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWFr
ZVBvbHltb3JwaGljQWN0aW9uOwotdXNpbmcgOjp0ZXN0aW5nOjpQb2x5bW9ycGhpY0FjdGlvbjsK
LQotUG9seW1vcnBoaWNBY3Rpb248UmV0dXJuU2Vjb25kQXJndW1lbnRBY3Rpb24+IFJldHVyblNl
Y29uZEFyZ3VtZW50KCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKFJldHVyblNl
Y29uZEFyZ3VtZW50QWN0aW9uKCkpOwotfQotYGBgCi0KLU5vdywgeW91IGNhbiB1c2UgdGhpcyBw
b2x5bW9ycGhpYyBhY3Rpb24gdGhlIHNhbWUgd2F5IHlvdSB1c2UgdGhlCi1idWlsdC1pbiBvbmVz
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBG
b28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKERvVGhpcywgaW50KGJvb2wgZmxhZywgaW50
IG4pKTsKLSAgTU9DS19NRVRIT0QzKERvVGhhdCwgc3RyaW5nKGludCB4LCBjb25zdCBjaGFyKiBz
dHIxLCBjb25zdCBjaGFyKiBzdHIyKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEVY
UEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAgLldpbGxPbmNlKFJldHVyblNlY29u
ZEFyZ3VtZW50KCkpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBfLCBfKSkKLSAgICAg
IC5XaWxsT25jZShSZXR1cm5TZWNvbmRBcmd1bWVudCgpKTsKLSAgLi4uCi0gIGZvby5Eb1RoaXMo
dHJ1ZSwgNSk7ICAgICAgICAgLy8gV2lsbCByZXR1cm4gNS4KLSAgZm9vLkRvVGhhdCgxLCAiSGki
LCAiQnllIik7ICAvLyBXaWxsIHJldHVybiAiSGkiLgotYGBgCi0KLSMjIFRlYWNoaW5nIEdvb2ds
ZSBNb2NrIEhvdyB0byBQcmludCBZb3VyIFZhbHVlcyAjIwotCi1XaGVuIGFuIHVuaW50ZXJlc3Rp
bmcgb3IgdW5leHBlY3RlZCBjYWxsIG9jY3VycywgR29vZ2xlIE1vY2sgcHJpbnRzIHRoZQotYXJn
dW1lbnQgdmFsdWVzIGFuZCB0aGUgc3RhY2sgdHJhY2UgdG8gaGVscCB5b3UgZGVidWcuICBBc3Nl
cnRpb24KLW1hY3JvcyBsaWtlIGBFWFBFQ1RfVEhBVGAgYW5kIGBFWFBFQ1RfRVFgIGFsc28gcHJp
bnQgdGhlIHZhbHVlcyBpbgotcXVlc3Rpb24gd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzLiAgR29v
Z2xlIE1vY2sgYW5kIEdvb2dsZSBUZXN0IGRvIHRoaXMgdXNpbmcKLUdvb2dsZSBUZXN0J3MgdXNl
ci1leHRlbnNpYmxlIHZhbHVlIHByaW50ZXIuCi0KLVRoaXMgcHJpbnRlciBrbm93cyBob3cgdG8g
cHJpbnQgYnVpbHQtaW4gQysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKLWNvbnRhaW5lcnMs
IGFuZCBhbnkgdHlwZSB0aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAgRm9yIG90aGVy
Ci10eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0
aGF0IHlvdSB0aGUKLXVzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCi1bR29vZ2xlIFRlc3QncyBhZHZh
bmNlZCBndWlkZV0oLi4vLi4vZ29vZ2xldGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQjdGVhY2hp
bmctZ29vZ2xlLXRlc3QtaG93LXRvLXByaW50LXlvdXItdmFsdWVzKQotZXhwbGFpbnMgaG93IHRv
IGV4dGVuZCB0aGUgcHJpbnRlciB0byBkbyBhIGJldHRlciBqb2IgYXQKLXByaW50aW5nIHlvdXIg
cGFydGljdWxhciB0eXBlIHRoYW4gdG8gZHVtcCB0aGUgYnl0ZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9kb2NzL0Rlc2lnbkRvYy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRGVzaWduRG9jLm1k
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjUxNWMzYjZkZDYuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0Rlc2lnbkRvYy5tZAorKysgL2Rldi9udWxsCkBAIC0x
LDI4MCArMCwwIEBACi1UaGlzIHBhZ2UgZGlzY3Vzc2VzIHRoZSBkZXNpZ24gb2YgbmV3IEdvb2ds
ZSBNb2NrIGZlYXR1cmVzLgotCi0KLQotIyBNYWNyb3MgZm9yIERlZmluaW5nIEFjdGlvbnMgIwot
Ci0jIyBQcm9ibGVtICMjCi0KLUR1ZSB0byB0aGUgbGFjayBvZiBjbG9zdXJlcyBpbiBDKyssIGl0
IGN1cnJlbnRseSByZXF1aXJlcyBzb21lCi1ub24tdHJpdmlhbCBlZmZvcnQgdG8gZGVmaW5lIGEg
Y3VzdG9tIGFjdGlvbiBpbiBHb29nbGUgTW9jay4gIEZvcgotZXhhbXBsZSwgc3VwcG9zZSB5b3Ug
d2FudCB0byAiaW5jcmVtZW50IHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZQotc2Vjb25kIGFy
Z3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFuZCByZXR1cm4gaXQiLCB5b3UgY291bGQgd3Jp
dGU6Ci0KLWBgYAotaW50IEluY3JlbWVudEFyZzEoVW51c2VkLCBpbnQqIHAsIFVudXNlZCkgewot
ICByZXR1cm4gKysoKnApOwotfQotCi0uLi4gV2lsbE9uY2UoSW52b2tlKEluY3JlbWVudEFyZzEp
KTsKLWBgYAotCi1UaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdW5zYXRpc2ZhY3RvcnkgYWJvdXQg
dGhpcyBhcHByb2FjaDoKLQotICAqIEV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gb25seSBjYXJlcyBh
Ym91dCB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBpdHMgZGVmaW5p
dGlvbiBuZWVkcyB0byBsaXN0IG90aGVyIGFyZ3VtZW50cyBhcyBkdW1taWVzLiAgVGhpcyBpcyB0
ZWRpb3VzLgotICAqIFRoZSBkZWZpbmVkIGFjdGlvbiBpcyB1c2FibGUgb25seSBpbiBtb2NrIGZ1
bmN0aW9ucyB0aGF0IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgLSBhbiB1bm5lY2Vzc2FyeSBy
ZXN0cmljdGlvbi4KLSAgKiBUbyB1c2UgdGhlIGFjdGlvbiwgb25lIGhhcyB0byBzYXkgYEludm9r
ZShJbmNyZW1lbnRBcmcxKWAsIHdoaWNoIGlzbid0IGFzIG5pY2UgYXMgYEluY3JlbWVudEFyZzEo
KWAuCi0KLVRoZSBsYXR0ZXIgdHdvIHByb2JsZW1zIGNhbiBiZSBvdmVyY29tZSB1c2luZyBgTWFr
ZVBvbHltb3JwaGljQWN0aW9uKClgLAotYnV0IGl0IHJlcXVpcmVzIG11Y2ggbW9yZSBib2lsZXJw
bGF0ZSBjb2RlOgotCi1gYGAKLWNsYXNzIEluY3JlbWVudEFyZzFBY3Rpb24gewotIHB1YmxpYzoK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KLSAg
UmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgewotICAgIHJl
dHVybiArKygqdHIxOjpnZXQ8MT4oYXJncykpOwotICB9Ci19OwotCi1Qb2x5bW9ycGhpY0FjdGlv
bjxJbmNyZW1lbnRBcmcxQWN0aW9uPiBJbmNyZW1lbnRBcmcxKCkgewotICByZXR1cm4gTWFrZVBv
bHltb3JwaGljQWN0aW9uKEluY3JlbWVudEFyZzFBY3Rpb24oKSk7Ci19Ci0KLS4uLiBXaWxsT25j
ZShJbmNyZW1lbnRBcmcxKCkpOwotYGBgCi0KLU91ciBnb2FsIGlzIHRvIGFsbG93IGRlZmluaW5n
IGN1c3RvbSBhY3Rpb25zIHdpdGggdGhlIGxlYXN0IGFtb3VudCBvZgotYm9pbGVyLXBsYXRlIEMr
KyByZXF1aXJlcy4KLQotIyMgU29sdXRpb24gIyMKLQotV2UgcHJvcG9zZSB0byBpbnRyb2R1Y2Ug
YSBuZXcgbWFjcm86Ci1gYGAKLUFDVElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1V
c2luZyB0aGlzIGluIGEgbmFtZXNwYWNlIHNjb3BlIHdpbGwgZGVmaW5lIGFuIGFjdGlvbiB3aXRo
IHRoZSBnaXZlbgotbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLiAgSW5zaWRlIHRo
ZSBzdGF0ZW1lbnRzLCB5b3UgY2FuCi1yZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1l
bnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYGFyZ0tgLgotRm9yIGV4YW1wbGU6Ci1gYGAKLUFD
VElPTihJbmNyZW1lbnRBcmcxKSB7IHJldHVybiArKygqYXJnMSk7IH0KLWBgYAotYWxsb3dzIHlv
dSB0byB3cml0ZQotYGBgCi0uLi4gV2lsbE9uY2UoSW5jcmVtZW50QXJnMSgpKTsKLWBgYAotCi1O
b3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24KLWFyZ3VtZW50cywgYXMgYnJldml0eSBpcyBhIHRvcCBkZXNpZ24gZ29hbCBoZXJl
LiAgUmVzdCBhc3N1cmVkIHRoYXQKLXlvdXIgY29kZSBpcyBzdGlsbCB0eXBlLXNhZmUgdGhvdWdo
OiB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYKLWAqYXJnMWAgZG9lc24ndCBzdXBwb3J0
IHRoZSBgKytgIG9wZXJhdG9yLCBvciBpZiB0aGUgdHlwZSBvZgotYCsrKCphcmcxKWAgaXNuJ3Qg
Y29tcGF0aWJsZSB3aXRoIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0KLUFub3Ro
ZXIgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAoKmFyZzIpKDUpOwotICBCbGFoKCk7
Ci0gICphcmcxID0gMDsKLSAgcmV0dXJuIGFyZzA7Ci19Ci1gYGAKLWRlZmluZXMgYW4gYWN0aW9u
IGBGb28oKWAgdGhhdCBpbnZva2VzIGFyZ3VtZW50ICMyIChhIGZ1bmN0aW9uIHBvaW50ZXIpCi13
aXRoIDUsIGNhbGxzIGZ1bmN0aW9uIGBCbGFoKClgLCBzZXRzIHRoZSB2YWx1ZSBwb2ludGVkIHRv
IGJ5IGFyZ3VtZW50Ci0jMSB0byAwLCBhbmQgcmV0dXJucyBhcmd1bWVudCAjMC4KLQotRm9yIG1v
cmUgY29udmVuaWVuY2UgYW5kIGZsZXhpYmlsaXR5LCB5b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xs
b3dpbmcKLXByZS1kZWZpbmVkIHN5bWJvbHMgaW4gdGhlIGJvZHkgb2YgYEFDVElPTmA6Ci0KLXwg
YGFyZ0tfdHlwZWAgfCBUaGUgdHlwZSBvZiB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2Yg
dGhlIG1vY2sgZnVuY3Rpb24gfAotfDotLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBhcmdzYCAgICAg
IHwgQWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgICAgICAg
ICAgICAgIHwKLXwgYGFyZ3NfdHlwZWAgfCBUaGUgdHlwZSBvZiBhbGwgYXJndW1lbnRzIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgfAotfCBgcmV0dXJuX3R5cGVgIHwgVGhlIHJl
dHVybiB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LXwgYGZ1bmN0aW9uX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQotRm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgYW4g
YEFDVElPTmAgYXMgYSBzdHViIGFjdGlvbiBmb3IgbW9jayBmdW5jdGlvbjoKLWBgYAotaW50IERv
U29tZXRoaW5nKGJvb2wgZmxhZywgaW50KiBwdHIpOwotYGBgCi13ZSBoYXZlOgotfCAqKlByZS1k
ZWZpbmVkIFN5bWJvbCoqIHwgKipJcyBCb3VuZCBUbyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Ci18IGBhcmcwYCAgICAgICAgICAgICAgICAgfCB0aGUg
dmFsdWUgb2YgYGZsYWdgIHwKLXwgYGFyZzBfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBi
b29sYCB8Ci18IGBhcmcxYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYHB0cmAgfAot
fCBgYXJnMV90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGludCpgIHwKLXwgYGFyZ3NgICAg
ICAgICAgICAgICAgICB8IHRoZSB0dXBsZSBgKGZsYWcsIHB0cilgIHwKLXwgYGFyZ3NfdHlwZWAg
ICAgICAgICAgICB8IHRoZSB0eXBlIGBzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKLXwg
YHJldHVybl90eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBpbnRgICB8Ci18IGBmdW5jdGlvbl90
eXBlYCAgICAgICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGludCopYCB8Ci0KLSMjIFBhcmFtZXRl
cml6ZWQgYWN0aW9ucyAjIwotCi1Tb21ldGltZXMgeW91J2xsIHdhbnQgdG8gcGFyYW1ldGVyaXpl
IHRoZSBhY3Rpb24uICAgRm9yIHRoYXQgd2UgcHJvcG9zZQotYW5vdGhlciBtYWNybwotYGBgCi1B
Q1RJT05fUChuYW1lLCBwYXJhbSkgeyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLQotRm9yIGV4YW1wbGUs
Ci1gYGAKLUFDVElPTl9QKEFkZCwgbikgeyByZXR1cm4gYXJnMCArIG47IH0KLWBgYAotd2lsbCBh
bGxvdyB5b3UgdG8gd3JpdGUKLWBgYAotLy8gUmV0dXJucyBhcmd1bWVudCAjMCArIDUuCi0uLi4g
V2lsbE9uY2UoQWRkKDUpKTsKLWBgYAotCi1Gb3IgY29udmVuaWVuY2UsIHdlIHVzZSB0aGUgdGVy
bSBfYXJndW1lbnRzXyBmb3IgdGhlIHZhbHVlcyB1c2VkIHRvCi1pbnZva2UgdGhlIG1vY2sgZnVu
Y3Rpb24sIGFuZCB0aGUgdGVybSBfcGFyYW1ldGVyc18gZm9yIHRoZSB2YWx1ZXMKLXVzZWQgdG8g
aW5zdGFudGlhdGUgYW4gYWN0aW9uLgotCi1Ob3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gcHJv
dmlkZSB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGVpdGhlci4KLVN1cHBvc2UgdGhlIHBhcmFt
ZXRlciBpcyBuYW1lZCBgcGFyYW1gLCB5b3UgY2FuIGFsc28gdXNlIHRoZQotR29vZ2xlLU1vY2st
ZGVmaW5lZCBzeW1ib2wgYHBhcmFtX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mIHRoZQot
cGFyYW1ldGVyIGFzIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4KLQotV2Ugd2lsbCBhbHNvIHBy
b3ZpZGUgYEFDVElPTl9QMmAsIGBBQ1RJT05fUDNgLCBhbmQgZXRjIHRvIHN1cHBvcnQKLW11bHRp
LXBhcmFtZXRlciBhY3Rpb25zLiAgRm9yIGV4YW1wbGUsCi1gYGAKLUFDVElPTl9QMihSZXR1cm5E
aXN0YW5jZVRvLCB4LCB5KSB7Ci0gIGRvdWJsZSBkeCA9IGFyZzAgLSB4OwotICBkb3VibGUgZHkg
PSBhcmcxIC0geTsKLSAgcmV0dXJuIHNxcnQoZHgqZHggKyBkeSpkeSk7Ci19Ci1gYGAKLWxldHMg
eW91IHdyaXRlCi1gYGAKLS4uLiBXaWxsT25jZShSZXR1cm5EaXN0YW5jZVRvKDUuMCwgMjYuNSkp
OwotYGBgCi0KLVlvdSBjYW4gdmlldyBgQUNUSU9OYCBhcyBhIGRlZ2VuZXJhdGVkIHBhcmFtZXRl
cml6ZWQgYWN0aW9uIHdoZXJlIHRoZQotbnVtYmVyIG9mIHBhcmFtZXRlcnMgaXMgMC4KLQotIyMg
QWR2YW5jZWQgVXNhZ2VzICMjCi0KLSMjIyBPdmVybG9hZGluZyBBY3Rpb25zICMjIwotCi1Zb3Ug
Y2FuIGVhc2lseSBkZWZpbmUgYWN0aW9ucyBvdmVybG9hZGVkIG9uIHRoZSBudW1iZXIgb2YgcGFy
YW1ldGVyczoKLWBgYAotQUNUSU9OX1AoUGx1cywgYSkgeyAuLi4gfQotQUNUSU9OX1AyKFBsdXMs
IGEsIGIpIHsgLi4uIH0KLWBgYAotCi0jIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJn
dW1lbnQgb3IgUGFyYW1ldGVyICMjIwotCi1Gb3IgbWF4aW11bSBicmV2aXR5IGFuZCByZXVzYWJp
bGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgbGV0Ci15b3Ugc3BlY2lmeSB0aGUgdHlw
ZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uCi1wYXJhbWV0
ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0aGUgdHlwZXMgZm9yIHVz
LgotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJlIG1vcmUgZXhwbGljaXQg
YWJvdXQgdGhlIHR5cGVzLgotVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tzIHRvIGRvIHRoYXQuICBG
b3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAvLyBNYWtlcyBzdXJlIGFyZzAgY2Fu
IGJlIGNvbnZlcnRlZCB0byBpbnQuCi0gIGludCBuID0gYXJnMDsKLSAgLi4uIHVzZSBuIGluc3Rl
YWQgb2YgYXJnMCBoZXJlIC4uLgotfQotCi1BQ1RJT05fUChCYXIsIHBhcmFtKSB7Ci0gIC8vIE1h
a2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4KLSAgOjp0ZXN0aW5nOjpT
dGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4oKTsKLQotICAvLyBNYWtl
cyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KLSAgYm9vbCBmbGFnID0gcGFy
YW07Ci19Ci1gYGAKLXdoZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlzIGEgY29tcGlsZS10aW1l
IGFzc2VydGlvbiB3ZSBwbGFuIHRvIGFkZCB0bwotR29vZ2xlIFRlc3QgKHRoZSBuYW1lIGlzIGNo
b3NlbiB0byBtYXRjaCBgc3RhdGljX2Fzc2VydGAgaW4gQysrMHgpLgotCi0jIyMgVXNpbmcgdGhl
IEFDVElPTiBPYmplY3QncyBUeXBlICMjIwotCi1JZiB5b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0LCB5b3UnbGwKLW5lZWQgdG8ga25vdyBp
dHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVmaW5lCi10
aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVs
eSBzaW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiogfCAqKkhh
cyBUeXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAgICB8IGBG
b29BY3Rpb25gICB8Ci18IGBBQ1RJT05fUChCYXIsIHBhcmFtKWAgfCBgQmFyKGludF92YWx1ZSlg
IHwgYEJhckFjdGlvblA8aW50PmAgfAotfCBgQUNUSU9OX1AyKEJheiwgcDEsIHAyKWAgfCBgQmF6
KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAyPGJvb2wsIGludD5gIHwKLXwg
Li4uICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4uLiAgICAgICAgICB8Ci0K
LU5vdGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwg
YEFjdGlvblBgLAotYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJl
bnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzLAotb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBjYW5u
b3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mCi1wYXJhbWV0ZXJzLgotCi0jIyBXaGVu
IHRvIFVzZSAjIwotCi1XaGlsZSB0aGUgbmV3IG1hY3JvcyBhcmUgdmVyeSBjb252ZW5pZW50LCBw
bGVhc2UgYWxzbyBjb25zaWRlciBvdGhlcgotbWVhbnMgb2YgaW1wbGVtZW50aW5nIGFjdGlvbnMg
KGUuZy4gdmlhIGBBY3Rpb25JbnRlcmZhY2VgIG9yCi1gTWFrZVBvbHltb3JwaGljQWN0aW9uKClg
KSwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0byB1c2UgdGhlIGRlZmluZWQKLWFjdGlvbiBhIGxv
dC4gIFdoaWxlIHRoZSBvdGhlciBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLCB0aGV5IGdp
dmUKLXlvdSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFy
Z3VtZW50cyBhbmQgdGhlCi1hY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFk
cyB0byBiZXR0ZXIgY29tcGlsZXIgZXJyb3IKLW1lc3NhZ2VzIHRoYXQgcGF5IG9mZiBpbiB0aGUg
bG9uZyBydW4uICBUaGV5IGFsc28gYWxsb3cgb3ZlcmxvYWRpbmcKLWFjdGlvbnMgYmFzZWQgb24g
cGFyYW1ldGVyIHR5cGVzLCBhcyBvcHBvc2VkIHRvIGp1c3QgdGhlIG51bWJlciBvZgotcGFyYW1l
dGVycy4KLQotIyMgUmVsYXRlZCBXb3JrICMjCi0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwg
dGhlIGBBQ1RJT04qYCBtYWNyb3MgcmVzZW1ibGUgY2xvc3VyZXMgKGFsc28KLWtub3duIGFzIGxh
bWJkYSBleHByZXNzaW9ucyBvciBhbm9ueW1vdXMgZnVuY3Rpb25zKS4gIEluZGVlZCwgYm90aCBv
ZgotdGhlbSBzZWVrIHRvIGxvd2VyIHRoZSBzeW50YWN0aWMgb3ZlcmhlYWQgZm9yIGRlZmluaW5n
IGEgZnVuY3Rpb24uCi0KLUMrKzB4IHdpbGwgc3VwcG9ydCBsYW1iZGFzLCBidXQgdGhleSBhcmUg
bm90IHBhcnQgb2YgQysrIHJpZ2h0IG5vdy4KLVNvbWUgbm9uLXN0YW5kYXJkIGxpYnJhcmllcyAo
bW9zdCBub3RhYmx5IEJMTCBvciBCb29zdCBMYW1iZGEgTGlicmFyeSkKLXRyeSB0byBhbGxldmlh
dGUgdGhpcyBwcm9ibGVtLiAgSG93ZXZlciwgdGhleSBhcmUgbm90IGEgZ29vZCBjaG9pY2UKLWZv
ciBkZWZpbmluZyBhY3Rpb25zIGFzOgotCi0gICogVGhleSBhcmUgbm9uLXN0YW5kYXJkIGFuZCBu
b3Qgd2lkZWx5IGluc3RhbGxlZC4gIEdvb2dsZSBNb2NrIG9ubHkgZGVwZW5kcyBvbiBzdGFuZGFy
ZCBsaWJyYXJpZXMgYW5kIGB0cjE6OnR1cGxlYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV3IEMr
KyBzdGFuZGFyZCBhbmQgY29tZXMgd2l0aCBnY2MgNCsuICBXZSB3YW50IHRvIGtlZXAgaXQgdGhh
dCB3YXkuCi0gICogVGhleSBhcmUgbm90IHRyaXZpYWwgdG8gbGVhcm4uCi0gICogVGhleSB3aWxs
IGJlY29tZSBvYnNvbGV0ZSB3aGVuIEMrKzB4J3MgbGFtYmRhIGZlYXR1cmUgaXMgd2lkZWx5IHN1
cHBvcnRlZC4gIFdlIGRvbid0IHdhbnQgdG8gbWFrZSBvdXIgdXNlcnMgdXNlIGEgZHlpbmcgbGli
cmFyeS4KLSAgKiBTaW5jZSB0aGV5IGFyZSBiYXNlZCBvbiBvcGVyYXRvcnMsIHRoZXkgYXJlIHJh
dGhlciBhZCBob2M6IHlvdSBjYW5ub3QgdXNlIHN0YXRlbWVudHMsIGFuZCB5b3UgY2Fubm90IHBh
c3MgdGhlIGxhbWJkYSBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiwgZm9yIGV4YW1wbGUuCi0gICog
VGhleSBoYXZlIHN1YnRsZSBzZW1hbnRpY3MgdGhhdCBlYXNpbHkgY29uZnVzZXMgbmV3IHVzZXJz
LiAgRm9yIGV4YW1wbGUsIGluIGV4cHJlc3Npb24gYF8xKysgKyBmb28rK2AsIGBmb29gIHdpbGwg
YmUgaW5jcmVtZW50ZWQgb25seSBvbmNlIHdoZXJlIHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRl
ZCwgd2hpbGUgYF8xYCB3aWxsIGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgdGhlIHVubmFtZWQg
ZnVuY3Rpb24gaXMgaW52b2tlZC4gIFRoaXMgaXMgZmFyIGZyb20gaW50dWl0aXZlLgotCi1gQUNU
SU9OKmAgYXZvaWQgYWxsIHRoZXNlIHByb2JsZW1zLgotCi0jIyBGdXR1cmUgSW1wcm92ZW1lbnRz
ICMjCi0KLVRoZXJlIG1heSBiZSBhIG5lZWQgZm9yIGNvbXBvc2luZyBgQUNUSU9OKmAgZGVmaW5p
dGlvbnMgKGkuZS4gaW52b2tpbmcKLWFub3RoZXIgYEFDVElPTmAgaW5zaWRlIHRoZSBkZWZpbml0
aW9uIG9mIG9uZSBgQUNUSU9OKmApLiAgV2UgYXJlIG5vdAotc3VyZSB3ZSB3YW50IGl0IHlldCwg
YXMgb25lIGNhbiBnZXQgYSBzaW1pbGFyIGVmZmVjdCBieSBwdXR0aW5nCi1gQUNUSU9OYCBkZWZp
bml0aW9ucyBpbiBmdW5jdGlvbiB0ZW1wbGF0ZXMgYW5kIGNvbXBvc2luZyB0aGUgZnVuY3Rpb24K
LXRlbXBsYXRlcy4gIFdlJ2xsIHJldmlzaXQgdGhpcyBiYXNlZCBvbiB1c2VyIGZlZWRiYWNrLgot
Ci1UaGUgcmVhc29uIHdlIGRvbid0IGFsbG93IGBBQ1RJT04qKClgIGluc2lkZSBhIGZ1bmN0aW9u
IGJvZHkgaXMgdGhhdAotdGhlIGN1cnJlbnQgQysrIHN0YW5kYXJkIGRvZXNuJ3QgYWxsb3cgZnVu
Y3Rpb24tbG9jYWwgdHlwZXMgdG8gYmUgdXNlZAotdG8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAg
VGhlIHVwY29taW5nIEMrKzB4IHN0YW5kYXJkIHdpbGwgbGlmdCB0aGlzCi1yZXN0cmljdGlvbi4g
IE9uY2UgdGhpcyBmZWF0dXJlIGlzIHdpZGVseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXJzLCB3ZQot
Y2FuIHJldmlzaXQgdGhlIGltcGxlbWVudGF0aW9uIGFuZCBhZGQgc3VwcG9ydCBmb3IgdXNpbmcg
YEFDVElPTiooKWAKLWluc2lkZSBhIGZ1bmN0aW9uLgotCi1DKysweCB3aWxsIGFsc28gc3VwcG9y
dCBsYW1iZGEgZXhwcmVzc2lvbnMuICBXaGVuIHRoZXkgYmVjb21lCi1hdmFpbGFibGUsIHdlIG1h
eSB3YW50IHRvIHN1cHBvcnQgdXNpbmcgbGFtYmRhcyBhcyBhY3Rpb25zLgotCi0jIE1hY3JvcyBm
b3IgRGVmaW5pbmcgTWF0Y2hlcnMgIwotCi1PbmNlIHRoZSBtYWNyb3MgZm9yIGRlZmluaW5nIGFj
dGlvbnMgYXJlIGltcGxlbWVudGVkLCB3ZSBwbGFuIHRvIGRvCi10aGUgc2FtZSBmb3IgbWF0Y2hl
cnM6Ci0KLWBgYAotTUFUQ0hFUihuYW1lKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi13aGVyZSB5
b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFzIGBhcmdgLiAgRm9yIGV4
YW1wbGUsCi1naXZlbjoKLQotYGBgCi1NQVRDSEVSKElzUG9zaXRpdmUpIHsgcmV0dXJuIGFyZyA+
IDA7IH0KLWBgYAotCi15b3UgY2FuIHVzZSBgSXNQb3NpdGl2ZSgpYCBhcyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGEgdmFsdWUgaWZmIGl0IGlzCi1ncmVhdGVyIHRoYW4gMC4KLQotV2Ugd2lsbCBh
bHNvIGFkZCBgTUFUQ0hFUl9QYCwgYE1BVENIRVJfUDJgLCBhbmQgZXRjIGZvciBwYXJhbWV0ZXJp
emVkCi1tYXRjaGVycy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL0Rldkd1aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5t
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRiYWI3NWNhN2I5Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9EZXZHdWlkZS5tZAorKysgL2Rldi9udWxsCkBAIC0x
LDEzMiArMCwwIEBACi0KLQotSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHVuZGVyc3RhbmRpbmcg
dGhlIGludGVybmFscyBvZiBHb29nbGUgTW9jaywKLWJ1aWxkaW5nIGZyb20gc291cmNlLCBvciBj
b250cmlidXRpbmcgaWRlYXMgb3IgbW9kaWZpY2F0aW9ucyB0byB0aGUKLXByb2plY3QsIHRoZW4g
dGhpcyBkb2N1bWVudCBpcyBmb3IgeW91LgotCi0jIEludHJvZHVjdGlvbiAjCi0KLUZpcnN0LCBs
ZXQncyBnaXZlIHlvdSBzb21lIGJhY2tncm91bmQgb2YgdGhlIHByb2plY3QuCi0KLSMjIExpY2Vu
c2luZyAjIwotCi1BbGwgR29vZ2xlIE1vY2sgc291cmNlIGFuZCBwcmUtYnVpbHQgcGFja2FnZXMg
YXJlIHByb3ZpZGVkIHVuZGVyIHRoZSBbTmV3IEJTRCBMaWNlbnNlXShodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCkuCi0KLSMjIFRoZSBHb29nbGUgTW9j
ayBDb21tdW5pdHkgIyMKLQotVGhlIEdvb2dsZSBNb2NrIGNvbW11bml0eSBleGlzdHMgcHJpbWFy
aWx5IHRocm91Z2ggdGhlIFtkaXNjdXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5j
b20vZ3JvdXAvZ29vZ2xlbW9jayksIHRoZQotW2lzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvZ29vZ2xldGVzdC9pc3N1ZXMpIGFuZCwgdG8gYSBsZXNzZXIgZXh0ZW50LCB0
aGUgW3NvdXJjZSBjb250cm9sIHJlcG9zaXRvcnldKC4uLykuIFlvdSBhcmUgZGVmaW5pdGVseSBl
bmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gdGhlCi1kaXNjdXNzaW9uIGFuZCB5b3UgY2FuIGFs
c28gaGVscCB1cyB0byBrZWVwIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZQotZ3JvdXAgaGlnaCBi
eSBmb2xsb3dpbmcgYW5kIHByb21vdGluZyB0aGUgZ3VpZGVsaW5lcyBsaXN0ZWQgaGVyZS4KLQot
IyMjIFBsZWFzZSBCZSBGcmllbmRseSAjIyMKLQotU2hvd2luZyBjb3VydGVzeSBhbmQgcmVzcGVj
dCB0byBvdGhlcnMgaXMgYSB2aXRhbCBwYXJ0IG9mIHRoZSBHb29nbGUKLWN1bHR1cmUsIGFuZCB3
ZSBzdHJvbmdseSBlbmNvdXJhZ2UgZXZlcnlvbmUgcGFydGljaXBhdGluZyBpbiBHb29nbGUKLU1v
Y2sgZGV2ZWxvcG1lbnQgdG8gam9pbiB1cyBpbiBhY2NlcHRpbmcgbm90aGluZyBsZXNzLiBPZiBj
b3Vyc2UsCi1iZWluZyBjb3VydGVvdXMgaXMgbm90IHRoZSBzYW1lIGFzIGZhaWxpbmcgdG8gY29u
c3RydWN0aXZlbHkgZGlzYWdyZWUKLXdpdGggZWFjaCBvdGhlciwgYnV0IGl0IGRvZXMgbWVhbiB0
aGF0IHdlIHNob3VsZCBiZSByZXNwZWN0ZnVsIG9mIGVhY2gKLW90aGVyIHdoZW4gZW51bWVyYXRp
bmcgdGhlIDQyIHRlY2huaWNhbCByZWFzb25zIHRoYXQgYSBwYXJ0aWN1bGFyCi1wcm9wb3NhbCBt
YXkgbm90IGJlIHRoZSBiZXN0IGNob2ljZS4gVGhlcmUncyBuZXZlciBhIHJlYXNvbiB0byBiZQot
YW50YWdvbmlzdGljIG9yIGRpc21pc3NpdmUgdG93YXJkIGFueW9uZSB3aG8gaXMgc2luY2VyZWx5
IHRyeWluZyB0bwotY29udHJpYnV0ZSB0byBhIGRpc2N1c3Npb24uCi0KLVN1cmUsIEMrKyB0ZXN0
aW5nIGlzIHNlcmlvdXMgYnVzaW5lc3MgYW5kIGFsbCB0aGF0LCBidXQgaXQncyBhbHNvCi1hIGxv
dCBvZiBmdW4uIExldCdzIGtlZXAgaXQgdGhhdCB3YXkuIExldCdzIHN0cml2ZSB0byBiZSBvbmUg
b2YgdGhlCi1mcmllbmRsaWVzdCBjb21tdW5pdGllcyBpbiBhbGwgb2Ygb3BlbiBzb3VyY2UuCi0K
LSMjIyBXaGVyZSB0byBEaXNjdXNzIEdvb2dsZSBNb2NrICMjIwotCi1BcyBhbHdheXMsIGRpc2N1
c3MgR29vZ2xlIE1vY2sgaW4gdGhlIG9mZmljaWFsIFtHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3
b3JrIGRpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29n
bGVtb2NrKS4gIFlvdSBkb24ndCBoYXZlIHRvIGFjdHVhbGx5IHN1Ym1pdAotY29kZSBpbiBvcmRl
ciB0byBzaWduIHVwLiBZb3VyIHBhcnRpY2lwYXRpb24gaXRzZWxmIGlzIGEgdmFsdWFibGUKLWNv
bnRyaWJ1dGlvbi4KLQotIyBXb3JraW5nIHdpdGggdGhlIENvZGUgIwotCi1JZiB5b3Ugd2FudCB0
byBnZXQgeW91ciBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBjb2RlIGluc2lkZSBHb29nbGUgTW9jaywK
LXRoaXMgaXMgdGhlIHNlY3Rpb24gZm9yIHlvdS4KLQotIyMgQ2hlY2tpbmcgT3V0IHRoZSBTb3Vy
Y2UgZnJvbSBTdWJ2ZXJzaW9uICMjCi0KLUNoZWNraW5nIG91dCB0aGUgR29vZ2xlIE1vY2sgc291
cmNlIGlzIG1vc3QgdXNlZnVsIGlmIHlvdSBwbGFuIHRvCi10d2VhayBpdCB5b3Vyc2VsZi4gIFlv
dSBjaGVjayBvdXQgdGhlIHNvdXJjZSBmb3IgR29vZ2xlIE1vY2sgdXNpbmcgYQotW1N1YnZlcnNp
b25dKGh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcvKSBjbGllbnQgYXMgeW91IHdvdWxkIGZv
ciBhbnkKLW90aGVyIHByb2plY3QgaG9zdGVkIG9uIEdvb2dsZSBDb2RlLiAgUGxlYXNlIHNlZSB0
aGUgaW5zdHJ1Y3Rpb24gb24KLXRoZSBbc291cmNlIGNvZGUgYWNjZXNzIHBhZ2VdKC4uLykgZm9y
IGhvdyB0byBkbyBpdC4KLQotIyMgQ29tcGlsaW5nIGZyb20gU291cmNlICMjCi0KLU9uY2UgeW91
IGNoZWNrIG91dCB0aGUgY29kZSwgeW91IGNhbiBmaW5kIGluc3RydWN0aW9ucyBvbiBob3cgdG8K
LWNvbXBpbGUgaXQgaW4gdGhlIFtSRUFETUVdKC4uL1JFQURNRS5tZCkgZmlsZS4KLQotIyMgVGVz
dGluZyAjIwotCi1BIG1vY2tpbmcgZnJhbWV3b3JrIGlzIG9mIG5vIGdvb2QgaWYgaXRzZWxmIGlz
IG5vdCB0aG9yb3VnaGx5IHRlc3RlZC4KLVRlc3RzIHNob3VsZCBiZSB3cml0dGVuIGZvciBhbnkg
bmV3IGNvZGUsIGFuZCBjaGFuZ2VzIHNob3VsZCBiZQotdmVyaWZpZWQgdG8gbm90IGJyZWFrIGV4
aXN0aW5nIHRlc3RzIGJlZm9yZSB0aGV5IGFyZSBzdWJtaXR0ZWQgZm9yCi1yZXZpZXcuIFRvIHBl
cmZvcm0gdGhlIHRlc3RzLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiBbUkVBRE1FXShodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9zb3VyY2UvYnJvd3NlL3RydW5rL1JFQURN
RSkgYW5kCi12ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZmFpbHVyZXMuCi0KLSMgQ29udHJpYnV0
aW5nIENvZGUgIwotCi1XZSBhcmUgZXhjaXRlZCB0aGF0IEdvb2dsZSBNb2NrIGlzIG5vdyBvcGVu
IHNvdXJjZSwgYW5kIGhvcGUgdG8gZ2V0Ci1ncmVhdCBwYXRjaGVzIGZyb20gdGhlIGNvbW11bml0
eS4gQmVmb3JlIHlvdSBmaXJlIHVwIHlvdXIgZmF2b3JpdGUgSURFCi1hbmQgYmVnaW4gaGFtbWVy
aW5nIGF3YXkgYXQgdGhhdCBuZXcgZmVhdHVyZSwgdGhvdWdoLCBwbGVhc2UgdGFrZSB0aGUKLXRp
bWUgdG8gcmVhZCB0aGlzIHNlY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3MuIFdoaWxl
IGl0IHNlZW1zCi1yaWdvcm91cywgd2Ugd2FudCB0byBrZWVwIGEgaGlnaCBzdGFuZGFyZCBvZiBx
dWFsaXR5IGluIHRoZSBjb2RlCi1iYXNlLgotCi0jIyBDb250cmlidXRvciBMaWNlbnNlIEFncmVl
bWVudHMgIyMKLQotWW91IG11c3Qgc2lnbiBhIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50
IChDTEEpIGJlZm9yZSB3ZSBjYW4KLWFjY2VwdCBhbnkgY29kZS4gIFRoZSBDTEEgcHJvdGVjdHMg
eW91IGFuZCB1cy4KLQotICAqIElmIHlvdSBhcmUgYW4gaW5kaXZpZHVhbCB3cml0aW5nIG9yaWdp
bmFsIHNvdXJjZSBjb2RlIGFuZCB5b3UncmUgc3VyZSB5b3Ugb3duIHRoZSBpbnRlbGxlY3R1YWwg
cHJvcGVydHksIHRoZW4geW91J2xsIG5lZWQgdG8gc2lnbiBhbiBbaW5kaXZpZHVhbCBDTEFdKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vbGVnYWwvaW5kaXZpZHVhbC1jbGEtdjEuMC5odG1sKS4KLSAg
KiBJZiB5b3Ugd29yayBmb3IgYSBjb21wYW55IHRoYXQgd2FudHMgdG8gYWxsb3cgeW91IHRvIGNv
bnRyaWJ1dGUgeW91ciB3b3JrIHRvIEdvb2dsZSBNb2NrLCB0aGVuIHlvdSdsbCBuZWVkIHRvIHNp
Z24gYSBbY29ycG9yYXRlIENMQV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9jb3Jwb3Jh
dGUtY2xhLXYxLjAuaHRtbCkuCi0KLUZvbGxvdyBlaXRoZXIgb2YgdGhlIHR3byBsaW5rcyBhYm92
ZSB0byBhY2Nlc3MgdGhlIGFwcHJvcHJpYXRlIENMQSBhbmQKLWluc3RydWN0aW9ucyBmb3IgaG93
IHRvIHNpZ24gYW5kIHJldHVybiBpdC4KLQotIyMgQ29kaW5nIFN0eWxlICMjCi0KLVRvIGtlZXAg
dGhlIHNvdXJjZSBjb25zaXN0ZW50LCByZWFkYWJsZSwgZGlmZmFibGUgYW5kIGVhc3kgdG8gbWVy
Z2UsCi13ZSB1c2UgYSBmYWlybHkgcmlnaWQgY29kaW5nIHN0eWxlLCBhcyBkZWZpbmVkIGJ5IHRo
ZSBbZ29vZ2xlLXN0eWxlZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvc3R5bGVndWlk
ZSkgcHJvamVjdC4gIEFsbCBwYXRjaGVzIHdpbGwgYmUgZXhwZWN0ZWQKLXRvIGNvbmZvcm0gdG8g
dGhlIHN0eWxlIG91dGxpbmVkIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N0eWxl
Z3VpZGUvYmxvYi9naC1wYWdlcy9jcHBndWlkZS54bWwpLgotCi0jIyBTdWJtaXR0aW5nIFBhdGNo
ZXMgIyMKLQotUGxlYXNlIGRvIHN1Ym1pdCBjb2RlLiBIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBk
bzoKLQotICAxLiBOb3JtYWxseSB5b3Ugc2hvdWxkIG1ha2UgeW91ciBjaGFuZ2UgYWdhaW5zdCB0
aGUgU1ZOIHRydW5rIGluc3RlYWQgb2YgYSBicmFuY2ggb3IgYSB0YWcsIGFzIHRoZSBsYXR0ZXIg
dHdvIGFyZSBmb3IgcmVsZWFzZSBjb250cm9sIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBtb3N0bHkg
YXMgcmVhZC1vbmx5LgotICAxLiBEZWNpZGUgd2hpY2ggY29kZSB5b3Ugd2FudCB0byBzdWJtaXQu
IEEgc3VibWlzc2lvbiBzaG91bGQgYmUgYSBzZXQgb2YgY2hhbmdlcyB0aGF0IGFkZHJlc3NlcyBv
bmUgaXNzdWUgaW4gdGhlIFtHb29nbGUgTW9jayBpc3N1ZSB0cmFja2VyXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlzdCkuIFBsZWFzZSBkb24ndCBtaXggbW9y
ZSB0aGFuIG9uZSBsb2dpY2FsIGNoYW5nZSBwZXIgc3VibWl0dGFsLCBiZWNhdXNlIGl0IG1ha2Vz
IHRoZSBoaXN0b3J5IGhhcmQgdG8gZm9sbG93LiBJZiB5b3Ugd2FudCB0byBtYWtlIGEgY2hhbmdl
IHRoYXQgZG9lc24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBpc3N1ZSBpbiB0aGUgaXNzdWUgdHJh
Y2tlciwgcGxlYXNlIGNyZWF0ZSBvbmUuCi0gIDEuIEFsc28sIGNvb3JkaW5hdGUgd2l0aCB0ZWFt
IG1lbWJlcnMgdGhhdCBhcmUgbGlzdGVkIG9uIHRoZSBpc3N1ZSBpbiBxdWVzdGlvbi4gVGhpcyBl
bnN1cmVzIHRoYXQgd29yayBpc24ndCBiZWluZyBkdXBsaWNhdGVkIGFuZCBjb21tdW5pY2F0aW5n
IHlvdXIgcGxhbiBlYXJseSBhbHNvIGdlbmVyYWxseSBsZWFkcyB0byBiZXR0ZXIgcGF0Y2hlcy4K
LSAgMS4gRW5zdXJlIHRoYXQgeW91ciBjb2RlIGFkaGVyZXMgdG8gdGhlIFtHb29nbGUgTW9jayBz
b3VyY2UgY29kZSBzdHlsZV0oI0NvZGluZ19TdHlsZS5tZCkuCi0gIDEuIEVuc3VyZSB0aGF0IHRo
ZXJlIGFyZSB1bml0IHRlc3RzIGZvciB5b3VyIGNvZGUuCi0gIDEuIFNpZ24gYSBDb250cmlidXRv
ciBMaWNlbnNlIEFncmVlbWVudC4KLSAgMS4gQ3JlYXRlIGEgcGF0Y2ggZmlsZSB1c2luZyBgc3Zu
IGRpZmZgLgotICAxLiBXZSB1c2UgW1JpZXR2ZWxkXShodHRwOi8vY29kZXJldmlldy5hcHBzcG90
LmNvbS8pIHRvIGRvIHdlYi1iYXNlZCBjb2RlIHJldmlld3MuICBZb3UgY2FuIHJlYWQgYWJvdXQg
dGhlIHRvb2wgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaWV0dmVsZC1jb2RlcmV2aWV3L3Jp
ZXR2ZWxkL3dpa2kpLiAgV2hlbiB5b3UgYXJlIHJlYWR5LCB1cGxvYWQgeW91ciBwYXRjaCB2aWEg
UmlldHZlbGQgYW5kIG5vdGlmeSBgZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tYCB0byByZXZp
ZXcgaXQuICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIHVwbG9hZCB0aGUgcGF0Y2guICBXZSBy
ZWNvbW1lbmQgdXNpbmcgdGhlIFt1cGxvYWRcX2dtb2NrLnB5XSguLi9zY3JpcHRzL3VwbG9hZF9n
bW9jay5weSkgc2NyaXB0LCB3aGljaCB5b3UgY2FuIGZpbmQgaW4gdGhlIGBzY3JpcHRzL2AgZm9s
ZGVyIGluIHRoZSBTVk4gdHJ1bmsuCi0KLSMjIEdvb2dsZSBNb2NrIENvbW1pdHRlcnMgIyMKLQot
VGhlIGN1cnJlbnQgbWVtYmVycyBvZiB0aGUgR29vZ2xlIE1vY2sgZW5naW5lZXJpbmcgdGVhbSBh
cmUgdGhlIG9ubHkKLWNvbW1pdHRlcnMgYXQgcHJlc2VudC4gSW4gdGhlIGdyZWF0IHRyYWRpdGlv
biBvZiBlYXRpbmcgb25lJ3Mgb3duCi1kb2dmb29kLCB3ZSB3aWxsIGJlIHJlcXVpcmluZyBlYWNo
IG5ldyBHb29nbGUgTW9jayBlbmdpbmVlcmluZyB0ZWFtCi1tZW1iZXIgdG8gZWFybiB0aGUgcmln
aHQgdG8gYmVjb21lIGEgY29tbWl0dGVyIGJ5IGZvbGxvd2luZyB0aGUKLXByb2NlZHVyZXMgaW4g
dGhpcyBkb2N1bWVudCwgd3JpdGluZyBjb25zaXN0ZW50bHkgZ3JlYXQgY29kZSwgYW5kCi1kZW1v
bnN0cmF0aW5nIHJlcGVhdGVkbHkgdGhhdCBoZSBvciBzaGUgdHJ1bHkgZ2V0cyB0aGUgemVuIG9m
IEdvb2dsZQotTW9jay4KLQotIyBSZWxlYXNlIFByb2Nlc3MgIwotCi1XZSBmb2xsb3cgdGhlIHR5
cGljYWwgcmVsZWFzZSBwcm9jZXNzIGZvciBTdWJ2ZXJzaW9uLWJhc2VkIHByb2plY3RzOgotCi0g
IDEuIEEgcmVsZWFzZSBicmFuY2ggbmFtZWQgYHJlbGVhc2UtWC5ZYCBpcyBjcmVhdGVkLgotICAx
LiBCdWdzIGFyZSBmaXhlZCBhbmQgZmVhdHVyZXMgYXJlIGFkZGVkIGluIHRydW5rOyB0aG9zZSBp
bmRpdmlkdWFsIHBhdGNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZWxlYXNlIGJyYW5jaCB1bnRp
bCBpdCdzIHN0YWJsZS4KLSAgMS4gQW4gaW5kaXZpZHVhbCBwb2ludCByZWxlYXNlICh0aGUgYFpg
IGluIGBYLlkuWmApIGlzIG1hZGUgYnkgY3JlYXRpbmcgYSB0YWcgZnJvbSB0aGUgYnJhbmNoLgot
ICAxLiBSZXBlYXQgc3RlcHMgMiBhbmQgMyB0aHJvdWdob3V0IG9uZSByZWxlYXNlIGN5Y2xlIChh
cyBkZXRlcm1pbmVkIGJ5IGZlYXR1cmVzIG9yIHRpbWUpLgotICAxLiBHbyBiYWNrIHRvIHN0ZXAg
MSB0byBjcmVhdGUgYW5vdGhlciByZWxlYXNlIGJyYW5jaCBhbmQgc28gb24uCi0KLQotLS0tCi0K
LVRoaXMgcGFnZSBpcyBiYXNlZCBvbiB0aGUgW01ha2luZyBHV1QgQmV0dGVyXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3dlYnRvb2xraXQvbWFraW5nZ3d0YmV0dGVyLmh0bWwpIGd1aWRlIGZyb20g
dGhlIFtHb29nbGUgV2ViIFRvb2xraXRdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vd2VidG9vbGtp
dC8pIHByb2plY3QuICBFeGNlcHQgYXMgb3RoZXJ3aXNlIFtub3RlZF0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wb2xpY2llcy5odG1sI3Jlc3RyaWN0aW9ucyksIHRoZSBjb250ZW50IG9mIHRoaXMg
cGFnZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgW0NyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24g
Mi41IExpY2Vuc2VdKGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzIuNS8p
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svZG9jcy9Eb2N1bWVudGF0aW9uLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0NDQxNTFlZTllZDcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0RvY3Vt
ZW50YXRpb24ubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1UaGlzIHBhZ2UgbGlz
dHMgYWxsIGRvY3VtZW50YXRpb24gd2lraSBwYWdlcyBmb3IgR29vZ2xlIE1vY2sgKioodGhlIFNW
TiB0cnVuayB2ZXJzaW9uKSoqCi0tICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2Yg
R29vZ2xlIE1vY2ssIHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGF0IHNwZWNp
ZmljIHZlcnNpb24gaW5zdGVhZC4qKgotCi0gICogW0ZvckR1bW1pZXNdKEZvckR1bW1pZXMubWQp
IC0tIHN0YXJ0IGhlcmUgaWYgeW91IGFyZSBuZXcgdG8gR29vZ2xlIE1vY2suCi0gICogW0NoZWF0
U2hlZXRdKENoZWF0U2hlZXQubWQpIC0tIGEgcXVpY2sgcmVmZXJlbmNlLgotICAqIFtDb29rQm9v
a10oQ29va0Jvb2subWQpIC0tIHJlY2lwZXMgZm9yIGRvaW5nIHZhcmlvdXMgdGFza3MgdXNpbmcg
R29vZ2xlIE1vY2suCi0gICogW0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10oRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kKSAtLSBjaGVjayBoZXJlIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlvbiBv
biB0aGUgbWFpbGluZyBsaXN0LgotCi1UbyBjb250cmlidXRlIGNvZGUgdG8gR29vZ2xlIE1vY2ss
IHJlYWQ6Ci0KLSAgKiBbRGV2R3VpZGVdKERldkd1aWRlLm1kKSAtLSByZWFkIHRoaXMgX2JlZm9y
ZV8gd3JpdGluZyB5b3VyIGZpcnN0IHBhdGNoLgotICAqIFtQdW1wIE1hbnVhbF0oLi4vZ29vZ2xl
dGVzdC9kb2NzL1B1bXBNYW51YWwubWQpIC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2ds
ZSBNb2NrJ3Mgc291cmNlIGZpbGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Gb3JE
dW1taWVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9Gb3JEdW1taWVzLm1kCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwZGE0Y2JlMjdiOGQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9kb2NzL0ZvckR1bW1pZXMubWQKKysrIC9kZXYvbnVsbApAQCAtMSw0MzkgKzAsMCBAQAot
Ci0KLSgqKk5vdGU6KiogSWYgeW91IGdldCBjb21waWxlciBlcnJvcnMgdGhhdCB5b3UgZG9uJ3Qg
dW5kZXJzdGFuZCwgYmUgc3VyZSB0byBjb25zdWx0IFtHb29nbGUgTW9jayBEb2N0b3JdKEZyZXF1
ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZCNob3ctYW0taS1zdXBwb3NlZC10by1tYWtlLXNlbnNlLW9m
LXRoZXNlLWhvcnJpYmxlLXRlbXBsYXRlLWVycm9ycykuKQotCi0jIFdoYXQgSXMgR29vZ2xlIEMr
KyBNb2NraW5nIEZyYW1ld29yaz8gIwotV2hlbiB5b3Ugd3JpdGUgYSBwcm90b3R5cGUgb3IgdGVz
dCwgb2Z0ZW4gaXQncyBub3QgZmVhc2libGUgb3Igd2lzZSB0byByZWx5IG9uIHJlYWwgb2JqZWN0
cyBlbnRpcmVseS4gQSAqKm1vY2sgb2JqZWN0KiogaW1wbGVtZW50cyB0aGUgc2FtZSBpbnRlcmZh
Y2UgYXMgYSByZWFsIG9iamVjdCAoc28gaXQgY2FuIGJlIHVzZWQgYXMgb25lKSwgYnV0IGxldHMg
eW91IHNwZWNpZnkgYXQgcnVuIHRpbWUgaG93IGl0IHdpbGwgYmUgdXNlZCBhbmQgd2hhdCBpdCBz
aG91bGQgZG8gKHdoaWNoIG1ldGhvZHMgd2lsbCBiZSBjYWxsZWQ/IGluIHdoaWNoIG9yZGVyPyBo
b3cgbWFueSB0aW1lcz8gd2l0aCB3aGF0IGFyZ3VtZW50cz8gd2hhdCB3aWxsIHRoZXkgcmV0dXJu
PyBldGMpLgotCi0qKk5vdGU6KiogSXQgaXMgZWFzeSB0byBjb25mdXNlIHRoZSB0ZXJtIF9mYWtl
IG9iamVjdHNfIHdpdGggbW9jayBvYmplY3RzLiBGYWtlcyBhbmQgbW9ja3MgYWN0dWFsbHkgbWVh
biB2ZXJ5IGRpZmZlcmVudCB0aGluZ3MgaW4gdGhlIFRlc3QtRHJpdmVuIERldmVsb3BtZW50IChU
REQpIGNvbW11bml0eToKLQotICAqICoqRmFrZSoqIG9iamVjdHMgaGF2ZSB3b3JraW5nIGltcGxl
bWVudGF0aW9ucywgYnV0IHVzdWFsbHkgdGFrZSBzb21lIHNob3J0Y3V0IChwZXJoYXBzIHRvIG1h
a2UgdGhlIG9wZXJhdGlvbnMgbGVzcyBleHBlbnNpdmUpLCB3aGljaCBtYWtlcyB0aGVtIG5vdCBz
dWl0YWJsZSBmb3IgcHJvZHVjdGlvbi4gQW4gaW4tbWVtb3J5IGZpbGUgc3lzdGVtIHdvdWxkIGJl
IGFuIGV4YW1wbGUgb2YgYSBmYWtlLgotICAqICoqTW9ja3MqKiBhcmUgb2JqZWN0cyBwcmUtcHJv
Z3JhbW1lZCB3aXRoIF9leHBlY3RhdGlvbnNfLCB3aGljaCBmb3JtIGEgc3BlY2lmaWNhdGlvbiBv
ZiB0aGUgY2FsbHMgdGhleSBhcmUgZXhwZWN0ZWQgdG8gcmVjZWl2ZS4KLQotSWYgYWxsIHRoaXMg
c2VlbXMgdG9vIGFic3RyYWN0IGZvciB5b3UsIGRvbid0IHdvcnJ5IC0gdGhlIG1vc3QgaW1wb3J0
YW50IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgYSBtb2NrIGFsbG93cyB5b3UgdG8gY2hlY2sg
dGhlIF9pbnRlcmFjdGlvbl8gYmV0d2VlbiBpdHNlbGYgYW5kIGNvZGUgdGhhdCB1c2VzIGl0LiBU
aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGZha2VzIGFuZCBtb2NrcyB3aWxsIGJlY29tZSBtdWNoIGNs
ZWFyZXIgb25jZSB5b3Ugc3RhcnQgdG8gdXNlIG1vY2tzLgotCi0qKkdvb2dsZSBDKysgTW9ja2lu
ZyBGcmFtZXdvcmsqKiAob3IgKipHb29nbGUgTW9jayoqIGZvciBzaG9ydCkgaXMgYSBsaWJyYXJ5
IChzb21ldGltZXMgd2UgYWxzbyBjYWxsIGl0IGEgImZyYW1ld29yayIgdG8gbWFrZSBpdCBzb3Vu
ZCBjb29sKSBmb3IgY3JlYXRpbmcgbW9jayBjbGFzc2VzIGFuZCB1c2luZyB0aGVtLiBJdCBkb2Vz
IHRvIEMrKyB3aGF0IFtqTW9ja10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBhbmQgW0Vhc3lNb2Nr
XShodHRwOi8vd3d3LmVhc3ltb2NrLm9yZy8pIGRvIHRvIEphdmEuCi0KLVVzaW5nIEdvb2dsZSBN
b2NrIGludm9sdmVzIHRocmVlIGJhc2ljIHN0ZXBzOgotCi0gIDEuIFVzZSBzb21lIHNpbXBsZSBt
YWNyb3MgdG8gZGVzY3JpYmUgdGhlIGludGVyZmFjZSB5b3Ugd2FudCB0byBtb2NrLCBhbmQgdGhl
eSB3aWxsIGV4cGFuZCB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgeW91ciBtb2NrIGNsYXNzOwot
ICAxLiBDcmVhdGUgc29tZSBtb2NrIG9iamVjdHMgYW5kIHNwZWNpZnkgaXRzIGV4cGVjdGF0aW9u
cyBhbmQgYmVoYXZpb3IgdXNpbmcgYW4gaW50dWl0aXZlIHN5bnRheDsKLSAgMS4gRXhlcmNpc2Ug
Y29kZSB0aGF0IHVzZXMgdGhlIG1vY2sgb2JqZWN0cy4gR29vZ2xlIE1vY2sgd2lsbCBjYXRjaCBh
bnkgdmlvbGF0aW9uIG9mIHRoZSBleHBlY3RhdGlvbnMgYXMgc29vbiBhcyBpdCBhcmlzZXMuCi0K
LSMgV2h5IEdvb2dsZSBNb2NrPyAjCi1XaGlsZSBtb2NrIG9iamVjdHMgaGVscCB5b3UgcmVtb3Zl
IHVubmVjZXNzYXJ5IGRlcGVuZGVuY2llcyBpbiB0ZXN0cyBhbmQgbWFrZSB0aGVtIGZhc3QgYW5k
IHJlbGlhYmxlLCB1c2luZyBtb2NrcyBtYW51YWxseSBpbiBDKysgaXMgX2hhcmRfOgotCi0gICog
U29tZW9uZSBoYXMgdG8gaW1wbGVtZW50IHRoZSBtb2Nrcy4gVGhlIGpvYiBpcyB1c3VhbGx5IHRl
ZGlvdXMgYW5kIGVycm9yLXByb25lLiBObyB3b25kZXIgcGVvcGxlIGdvIGdyZWF0IGRpc3RhbmNl
IHRvIGF2b2lkIGl0LgotICAqIFRoZSBxdWFsaXR5IG9mIHRob3NlIG1hbnVhbGx5IHdyaXR0ZW4g
bW9ja3MgaXMgYSBiaXQsIHVoLCB1bnByZWRpY3RhYmxlLiBZb3UgbWF5IHNlZSBzb21lIHJlYWxs
eSBwb2xpc2hlZCBvbmVzLCBidXQgeW91IG1heSBhbHNvIHNlZSBzb21lIHRoYXQgd2VyZSBoYWNr
ZWQgdXAgaW4gYSBodXJyeSBhbmQgaGF2ZSBhbGwgc29ydHMgb2YgYWQgaG9jIHJlc3RyaWN0aW9u
cy4KLSAgKiBUaGUga25vd2xlZGdlIHlvdSBnYWluZWQgZnJvbSB1c2luZyBvbmUgbW9jayBkb2Vz
bid0IHRyYW5zZmVyIHRvIHRoZSBuZXh0LgotCi1JbiBjb250cmFzdCwgSmF2YSBhbmQgUHl0aG9u
IHByb2dyYW1tZXJzIGhhdmUgc29tZSBmaW5lIG1vY2sgZnJhbWV3b3Jrcywgd2hpY2ggYXV0b21h
dGUgdGhlIGNyZWF0aW9uIG9mIG1vY2tzLiBBcyBhIHJlc3VsdCwgbW9ja2luZyBpcyBhIHByb3Zl
biBlZmZlY3RpdmUgdGVjaG5pcXVlIGFuZCB3aWRlbHkgYWRvcHRlZCBwcmFjdGljZSBpbiB0aG9z
ZSBjb21tdW5pdGllcy4gSGF2aW5nIHRoZSByaWdodCB0b29sIGFic29sdXRlbHkgbWFrZXMgdGhl
IGRpZmZlcmVuY2UuCi0KLUdvb2dsZSBNb2NrIHdhcyBidWlsdCB0byBoZWxwIEMrKyBwcm9ncmFt
bWVycy4gSXQgd2FzIGluc3BpcmVkIGJ5IFtqTW9ja10oaHR0cDovL3d3dy5qbW9jay5vcmcvKSBh
bmQgW0Vhc3lNb2NrXShodHRwOi8vd3d3LmVhc3ltb2NrLm9yZy8pLCBidXQgZGVzaWduZWQgd2l0
aCBDKysncyBzcGVjaWZpY3MgaW4gbWluZC4gSXQgaXMgeW91ciBmcmllbmQgaWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgcHJvYmxlbXMgaXMgYm90aGVyaW5nIHlvdToKLQotICAqIFlvdSBhcmUgc3R1
Y2sgd2l0aCBhIHN1Yi1vcHRpbWFsIGRlc2lnbiBhbmQgd2lzaCB5b3UgaGFkIGRvbmUgbW9yZSBw
cm90b3R5cGluZyBiZWZvcmUgaXQgd2FzIHRvbyBsYXRlLCBidXQgcHJvdG90eXBpbmcgaW4gQysr
IGlzIGJ5IG5vIG1lYW5zICJyYXBpZCIuCi0gICogWW91ciB0ZXN0cyBhcmUgc2xvdyBhcyB0aGV5
IGRlcGVuZCBvbiB0b28gbWFueSBsaWJyYXJpZXMgb3IgdXNlIGV4cGVuc2l2ZSByZXNvdXJjZXMg
KGUuZy4gYSBkYXRhYmFzZSkuCi0gICogWW91ciB0ZXN0cyBhcmUgYnJpdHRsZSBhcyBzb21lIHJl
c291cmNlcyB0aGV5IHVzZSBhcmUgdW5yZWxpYWJsZSAoZS5nLiB0aGUgbmV0d29yaykuCi0gICog
WW91IHdhbnQgdG8gdGVzdCBob3cgeW91ciBjb2RlIGhhbmRsZXMgYSBmYWlsdXJlIChlLmcuIGEg
ZmlsZSBjaGVja3N1bSBlcnJvciksIGJ1dCBpdCdzIG5vdCBlYXN5IHRvIGNhdXNlIG9uZS4KLSAg
KiBZb3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB5b3VyIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCBv
dGhlciBtb2R1bGVzIGluIHRoZSByaWdodCB3YXksIGJ1dCBpdCdzIGhhcmQgdG8gb2JzZXJ2ZSB0
aGUgaW50ZXJhY3Rpb247IHRoZXJlZm9yZSB5b3UgcmVzb3J0IHRvIG9ic2VydmluZyB0aGUgc2lk
ZSBlZmZlY3RzIGF0IHRoZSBlbmQgb2YgdGhlIGFjdGlvbiwgd2hpY2ggaXMgYXdrd2FyZCBhdCBi
ZXN0LgotICAqIFlvdSB3YW50IHRvICJtb2NrIG91dCIgeW91ciBkZXBlbmRlbmNpZXMsIGV4Y2Vw
dCB0aGF0IHRoZXkgZG9uJ3QgaGF2ZSBtb2NrIGltcGxlbWVudGF0aW9ucyB5ZXQ7IGFuZCwgZnJh
bmtseSwgeW91IGFyZW4ndCB0aHJpbGxlZCBieSBzb21lIG9mIHRob3NlIGhhbmQtd3JpdHRlbiBt
b2Nrcy4KLQotV2UgZW5jb3VyYWdlIHlvdSB0byB1c2UgR29vZ2xlIE1vY2sgYXM6Ci0KLSAgKiBh
IF9kZXNpZ25fIHRvb2wsIGZvciBpdCBsZXRzIHlvdSBleHBlcmltZW50IHdpdGggeW91ciBpbnRl
cmZhY2UgZGVzaWduIGVhcmx5IGFuZCBvZnRlbi4gTW9yZSBpdGVyYXRpb25zIGxlYWQgdG8gYmV0
dGVyIGRlc2lnbnMhCi0gICogYSBfdGVzdGluZ18gdG9vbCB0byBjdXQgeW91ciB0ZXN0cycgb3V0
Ym91bmQgZGVwZW5kZW5jaWVzIGFuZCBwcm9iZSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB5b3Vy
IG1vZHVsZSBhbmQgaXRzIGNvbGxhYm9yYXRvcnMuCi0KLSMgR2V0dGluZyBTdGFydGVkICMKLVVz
aW5nIEdvb2dsZSBNb2NrIGlzIGVhc3khIEluc2lkZSB5b3VyIEMrKyBzb3VyY2UgZmlsZSwganVz
dCBgI2luY2x1ZGVgIGAiZ3Rlc3QvZ3Rlc3QuaCJgIGFuZCBgImdtb2NrL2dtb2NrLmgiYCwgYW5k
IHlvdSBhcmUgcmVhZHkgdG8gZ28uCi0KLSMgQSBDYXNlIGZvciBNb2NrIFR1cnRsZXMgIwotTGV0
J3MgbG9vayBhdCBhbiBleGFtcGxlLiBTdXBwb3NlIHlvdSBhcmUgZGV2ZWxvcGluZyBhIGdyYXBo
aWNzIHByb2dyYW0gdGhhdCByZWxpZXMgb24gYSBMT0dPLWxpa2UgQVBJIGZvciBkcmF3aW5nLiBI
b3cgd291bGQgeW91IHRlc3QgdGhhdCBpdCBkb2VzIHRoZSByaWdodCB0aGluZz8gV2VsbCwgeW91
IGNhbiBydW4gaXQgYW5kIGNvbXBhcmUgdGhlIHNjcmVlbiB3aXRoIGEgZ29sZGVuIHNjcmVlbiBz
bmFwc2hvdCwgYnV0IGxldCdzIGFkbWl0IGl0OiB0ZXN0cyBsaWtlIHRoaXMgYXJlIGV4cGVuc2l2
ZSB0byBydW4gYW5kIGZyYWdpbGUgKFdoYXQgaWYgeW91IGp1c3QgdXBncmFkZWQgdG8gYSBzaGlu
eSBuZXcgZ3JhcGhpY3MgY2FyZCB0aGF0IGhhcyBiZXR0ZXIgYW50aS1hbGlhc2luZz8gU3VkZGVu
bHkgeW91IGhhdmUgdG8gdXBkYXRlIGFsbCB5b3VyIGdvbGRlbiBpbWFnZXMuKS4gSXQgd291bGQg
YmUgdG9vIHBhaW5mdWwgaWYgYWxsIHlvdXIgdGVzdHMgYXJlIGxpa2UgdGhpcy4gRm9ydHVuYXRl
bHksIHlvdSBsZWFybmVkIGFib3V0IERlcGVuZGVuY3kgSW5qZWN0aW9uIGFuZCBrbm93IHRoZSBy
aWdodCB0aGluZyB0byBkbzogaW5zdGVhZCBvZiBoYXZpbmcgeW91ciBhcHBsaWNhdGlvbiB0YWxr
IHRvIHRoZSBkcmF3aW5nIEFQSSBkaXJlY3RseSwgd3JhcCB0aGUgQVBJIGluIGFuIGludGVyZmFj
ZSAoc2F5LCBgVHVydGxlYCkgYW5kIGNvZGUgdG8gdGhhdCBpbnRlcmZhY2U6Ci0KLWBgYAotY2xh
c3MgVHVydGxlIHsKLSAgLi4uCi0gIHZpcnR1YWwgflR1cnRsZSgpIHt9Ci0gIHZpcnR1YWwgdm9p
ZCBQZW5VcCgpID0gMDsKLSAgdmlydHVhbCB2b2lkIFBlbkRvd24oKSA9IDA7Ci0gIHZpcnR1YWwg
dm9pZCBGb3J3YXJkKGludCBkaXN0YW5jZSkgPSAwOwotICB2aXJ0dWFsIHZvaWQgVHVybihpbnQg
ZGVncmVlcykgPSAwOwotICB2aXJ0dWFsIHZvaWQgR29UbyhpbnQgeCwgaW50IHkpID0gMDsKLSAg
dmlydHVhbCBpbnQgR2V0WCgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCBpbnQgR2V0WSgpIGNvbnN0
ID0gMDsKLX07Ci1gYGAKLQotKE5vdGUgdGhhdCB0aGUgZGVzdHJ1Y3RvciBvZiBgVHVydGxlYCAq
Km11c3QqKiBiZSB2aXJ0dWFsLCBhcyBpcyB0aGUgY2FzZSBmb3IgKiphbGwqKiBjbGFzc2VzIHlv
dSBpbnRlbmQgdG8gaW5oZXJpdCBmcm9tIC0gb3RoZXJ3aXNlIHRoZSBkZXN0cnVjdG9yIG9mIHRo
ZSBkZXJpdmVkIGNsYXNzIHdpbGwgbm90IGJlIGNhbGxlZCB3aGVuIHlvdSBkZWxldGUgYW4gb2Jq
ZWN0IHRocm91Z2ggYSBiYXNlIHBvaW50ZXIsIGFuZCB5b3UnbGwgZ2V0IGNvcnJ1cHRlZCBwcm9n
cmFtIHN0YXRlcyBsaWtlIG1lbW9yeSBsZWFrcy4pCi0KLVlvdSBjYW4gY29udHJvbCB3aGV0aGVy
IHRoZSB0dXJ0bGUncyBtb3ZlbWVudCB3aWxsIGxlYXZlIGEgdHJhY2UgdXNpbmcgYFBlblVwKClg
IGFuZCBgUGVuRG93bigpYCwgYW5kIGNvbnRyb2wgaXRzIG1vdmVtZW50IHVzaW5nIGBGb3J3YXJk
KClgLCBgVHVybigpYCwgYW5kIGBHb1RvKClgLiBGaW5hbGx5LCBgR2V0WCgpYCBhbmQgYEdldFko
KWAgdGVsbCB5b3UgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHR1cnRsZS4KLQotWW91ciBw
cm9ncmFtIHdpbGwgbm9ybWFsbHkgdXNlIGEgcmVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGlu
dGVyZmFjZS4gSW4gdGVzdHMsIHlvdSBjYW4gdXNlIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBpbnN0
ZWFkLiBUaGlzIGFsbG93cyB5b3UgdG8gZWFzaWx5IGNoZWNrIHdoYXQgZHJhd2luZyBwcmltaXRp
dmVzIHlvdXIgcHJvZ3JhbSBpcyBjYWxsaW5nLCB3aXRoIHdoYXQgYXJndW1lbnRzLCBhbmQgaW4g
d2hpY2ggb3JkZXIuIFRlc3RzIHdyaXR0ZW4gdGhpcyB3YXkgYXJlIG11Y2ggbW9yZSByb2J1c3Qg
KHRoZXkgd29uJ3QgYnJlYWsgYmVjYXVzZSB5b3VyIG5ldyBtYWNoaW5lIGRvZXMgYW50aS1hbGlh
c2luZyBkaWZmZXJlbnRseSksIGVhc2llciB0byByZWFkIGFuZCBtYWludGFpbiAodGhlIGludGVu
dCBvZiBhIHRlc3QgaXMgZXhwcmVzc2VkIGluIHRoZSBjb2RlLCBub3QgaW4gc29tZSBiaW5hcnkg
aW1hZ2VzKSwgYW5kIHJ1biBfbXVjaCwgbXVjaCBmYXN0ZXJfLgotCi0jIFdyaXRpbmcgdGhlIE1v
Y2sgQ2xhc3MgIwotSWYgeW91IGFyZSBsdWNreSwgdGhlIG1vY2tzIHlvdSBuZWVkIHRvIHVzZSBo
YXZlIGFscmVhZHkgYmVlbiBpbXBsZW1lbnRlZCBieSBzb21lIG5pY2UgcGVvcGxlLiBJZiwgaG93
ZXZlciwgeW91IGZpbmQgeW91cnNlbGYgaW4gdGhlIHBvc2l0aW9uIHRvIHdyaXRlIGEgbW9jayBj
bGFzcywgcmVsYXggLSBHb29nbGUgTW9jayB0dXJucyB0aGlzIHRhc2sgaW50byBhIGZ1biBnYW1l
ISAoV2VsbCwgYWxtb3N0LikKLQotIyMgSG93IHRvIERlZmluZSBJdCAjIwotVXNpbmcgdGhlIGBU
dXJ0bGVgIGludGVyZmFjZSBhcyBleGFtcGxlLCBoZXJlIGFyZSB0aGUgc2ltcGxlIHN0ZXBzIHlv
dSBuZWVkIHRvIGZvbGxvdzoKLQotICAxLiBEZXJpdmUgYSBjbGFzcyBgTW9ja1R1cnRsZWAgZnJv
bSBgVHVydGxlYC4KLSAgMS4gVGFrZSBhIF92aXJ0dWFsXyBmdW5jdGlvbiBvZiBgVHVydGxlYCAo
d2hpbGUgaXQncyBwb3NzaWJsZSB0byBbbW9jayBub24tdmlydHVhbCBtZXRob2RzIHVzaW5nIHRl
bXBsYXRlc10oQ29va0Jvb2subWQjbW9ja2luZy1ub252aXJ0dWFsLW1ldGhvZHMpLCBpdCdzIG11
Y2ggbW9yZSBpbnZvbHZlZCkuIENvdW50IGhvdyBtYW55IGFyZ3VtZW50cyBpdCBoYXMuCi0gIDEu
IEluIHRoZSBgcHVibGljOmAgc2VjdGlvbiBvZiB0aGUgY2hpbGQgY2xhc3MsIHdyaXRlIGBNT0NL
X01FVEhPRG4oKTtgIChvciBgTU9DS19DT05TVF9NRVRIT0RuKCk7YCBpZiB5b3UgYXJlIG1vY2tp
bmcgYSBgY29uc3RgIG1ldGhvZCksIHdoZXJlIGBuYCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1
bWVudHM7IGlmIHlvdSBjb3VudGVkIHdyb25nLCBzaGFtZSBvbiB5b3UsIGFuZCBhIGNvbXBpbGVy
IGVycm9yIHdpbGwgdGVsbCB5b3Ugc28uCi0gIDEuIE5vdyBjb21lcyB0aGUgZnVuIHBhcnQ6IHlv
dSB0YWtlIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGN1dC1hbmQtcGFzdGUgdGhlIF9mdW5jdGlv
biBuYW1lXyBhcyB0aGUgX2ZpcnN0XyBhcmd1bWVudCB0byB0aGUgbWFjcm8sIGFuZCBsZWF2ZSB3
aGF0J3MgbGVmdCBhcyB0aGUgX3NlY29uZF8gYXJndW1lbnQgKGluIGNhc2UgeW91J3JlIGN1cmlv
dXMsIHRoaXMgaXMgdGhlIF90eXBlIG9mIHRoZSBmdW5jdGlvbl8pLgotICAxLiBSZXBlYXQgdW50
aWwgYWxsIHZpcnR1YWwgZnVuY3Rpb25zIHlvdSB3YW50IHRvIG1vY2sgYXJlIGRvbmUuCi0KLUFm
dGVyIHRoZSBwcm9jZXNzLCB5b3Ugc2hvdWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAot
I2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiICAvLyBCcmluZ3MgaW4gR29vZ2xlIE1vY2suCi1jbGFz
cyBNb2NrVHVydGxlIDogcHVibGljIFR1cnRsZSB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19N
RVRIT0QwKFBlblVwLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDAoUGVuRG93biwgdm9pZCgpKTsK
LSAgTU9DS19NRVRIT0QxKEZvcndhcmQsIHZvaWQoaW50IGRpc3RhbmNlKSk7Ci0gIE1PQ0tfTUVU
SE9EMShUdXJuLCB2b2lkKGludCBkZWdyZWVzKSk7Ci0gIE1PQ0tfTUVUSE9EMihHb1RvLCB2b2lk
KGludCB4LCBpbnQgeSkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0WCwgaW50KCkpOwotICBN
T0NLX0NPTlNUX01FVEhPRDAoR2V0WSwgaW50KCkpOwotfTsKLWBgYAotCi1Zb3UgZG9uJ3QgbmVl
ZCB0byBkZWZpbmUgdGhlc2UgbW9jayBtZXRob2RzIHNvbWV3aGVyZSBlbHNlIC0gdGhlIGBNT0NL
X01FVEhPRCpgIG1hY3JvcyB3aWxsIGdlbmVyYXRlIHRoZSBkZWZpbml0aW9ucyBmb3IgeW91LiBJ
dCdzIHRoYXQgc2ltcGxlISBPbmNlIHlvdSBnZXQgdGhlIGhhbmcgb2YgaXQsIHlvdSBjYW4gcHVt
cCBvdXQgbW9jayBjbGFzc2VzIGZhc3RlciB0aGFuIHlvdXIgc291cmNlLWNvbnRyb2wgc3lzdGVt
IGNhbiBoYW5kbGUgeW91ciBjaGVjay1pbnMuCi0KLSoqVGlwOioqIElmIGV2ZW4gdGhpcyBpcyB0
b28gbXVjaCB3b3JrIGZvciB5b3UsIHlvdSdsbCBmaW5kIHRoZQotYGdtb2NrX2dlbi5weWAgdG9v
bCBpbiBHb29nbGUgTW9jaydzIGBzY3JpcHRzL2dlbmVyYXRvci9gIGRpcmVjdG9yeSAoY291cnRl
c3kgb2YgdGhlIFtjcHBjbGVhbl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLykg
cHJvamVjdCkgdXNlZnVsLiAgVGhpcyBjb21tYW5kLWxpbmUKLXRvb2wgcmVxdWlyZXMgdGhhdCB5
b3UgaGF2ZSBQeXRob24gMi40IGluc3RhbGxlZC4gIFlvdSBnaXZlIGl0IGEgQysrIGZpbGUgYW5k
IHRoZSBuYW1lIG9mIGFuIGFic3RyYWN0IGNsYXNzIGRlZmluZWQgaW4gaXQsCi1hbmQgaXQgd2ls
bCBwcmludCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbW9jayBjbGFzcyBmb3IgeW91LiAgRHVlIHRv
IHRoZQotY29tcGxleGl0eSBvZiB0aGUgQysrIGxhbmd1YWdlLCB0aGlzIHNjcmlwdCBtYXkgbm90
IGFsd2F5cyB3b3JrLCBidXQKLWl0IGNhbiBiZSBxdWl0ZSBoYW5keSB3aGVuIGl0IGRvZXMuICBG
b3IgbW9yZSBkZXRhaWxzLCByZWFkIHRoZSBbdXNlciBkb2N1bWVudGF0aW9uXSguLi9zY3JpcHRz
L2dlbmVyYXRvci9SRUFETUUpLgotCi0jIyBXaGVyZSB0byBQdXQgSXQgIyMKLVdoZW4geW91IGRl
ZmluZSBhIG1vY2sgY2xhc3MsIHlvdSBuZWVkIHRvIGRlY2lkZSB3aGVyZSB0byBwdXQgaXRzIGRl
ZmluaXRpb24uIFNvbWUgcGVvcGxlIHB1dCBpdCBpbiBhIGAqX3Rlc3QuY2NgLiBUaGlzIGlzIGZp
bmUgd2hlbiB0aGUgaW50ZXJmYWNlIGJlaW5nIG1vY2tlZCAoc2F5LCBgRm9vYCkgaXMgb3duZWQg
YnkgdGhlIHNhbWUgcGVyc29uIG9yIHRlYW0uIE90aGVyd2lzZSwgd2hlbiB0aGUgb3duZXIgb2Yg
YEZvb2AgY2hhbmdlcyBpdCwgeW91ciB0ZXN0IGNvdWxkIGJyZWFrLiAoWW91IGNhbid0IHJlYWxs
eSBleHBlY3QgYEZvb2AncyBtYWludGFpbmVyIHRvIGZpeCBldmVyeSB0ZXN0IHRoYXQgdXNlcyBg
Rm9vYCwgY2FuIHlvdT8pCi0KLVNvLCB0aGUgcnVsZSBvZiB0aHVtYiBpczogaWYgeW91IG5lZWQg
dG8gbW9jayBgRm9vYCBhbmQgaXQncyBvd25lZCBieSBvdGhlcnMsIGRlZmluZSB0aGUgbW9jayBj
bGFzcyBpbiBgRm9vYCdzIHBhY2thZ2UgKGJldHRlciwgaW4gYSBgdGVzdGluZ2Agc3ViLXBhY2th
Z2Ugc3VjaCB0aGF0IHlvdSBjYW4gY2xlYXJseSBzZXBhcmF0ZSBwcm9kdWN0aW9uIGNvZGUgYW5k
IHRlc3RpbmcgdXRpbGl0aWVzKSwgYW5kIHB1dCBpdCBpbiBhIGBtb2NrX2Zvby5oYC4gVGhlbiBl
dmVyeW9uZSBjYW4gcmVmZXJlbmNlIGBtb2NrX2Zvby5oYCBmcm9tIHRoZWlyIHRlc3RzLiBJZiBg
Rm9vYCBldmVyIGNoYW5nZXMsIHRoZXJlIGlzIG9ubHkgb25lIGNvcHkgb2YgYE1vY2tGb29gIHRv
IGNoYW5nZSwgYW5kIG9ubHkgdGVzdHMgdGhhdCBkZXBlbmQgb24gdGhlIGNoYW5nZWQgbWV0aG9k
cyBuZWVkIHRvIGJlIGZpeGVkLgotCi1Bbm90aGVyIHdheSB0byBkbyBpdDogeW91IGNhbiBpbnRy
b2R1Y2UgYSB0aGluIGxheWVyIGBGb29BZGFwdG9yYCBvbiB0b3Agb2YgYEZvb2AgYW5kIGNvZGUg
dG8gdGhpcyBuZXcgaW50ZXJmYWNlLiBTaW5jZSB5b3Ugb3duIGBGb29BZGFwdG9yYCwgeW91IGNh
biBhYnNvcmIgY2hhbmdlcyBpbiBgRm9vYCBtdWNoIG1vcmUgZWFzaWx5LiBXaGlsZSB0aGlzIGlz
IG1vcmUgd29yayBpbml0aWFsbHksIGNhcmVmdWxseSBjaG9vc2luZyB0aGUgYWRhcHRvciBpbnRl
cmZhY2UgY2FuIG1ha2UgeW91ciBjb2RlIGVhc2llciB0byB3cml0ZSBhbmQgbW9yZSByZWFkYWJs
ZSAoYSBuZXQgd2luIGluIHRoZSBsb25nIHJ1biksIGFzIHlvdSBjYW4gY2hvb3NlIGBGb29BZGFw
dG9yYCB0byBmaXQgeW91ciBzcGVjaWZpYyBkb21haW4gbXVjaCBiZXR0ZXIgdGhhbiBgRm9vYCBk
b2VzLgotCi0jIFVzaW5nIE1vY2tzIGluIFRlc3RzICMKLU9uY2UgeW91IGhhdmUgYSBtb2NrIGNs
YXNzLCB1c2luZyBpdCBpcyBlYXN5LiBUaGUgdHlwaWNhbCB3b3JrIGZsb3cgaXM6Ci0KLSAgMS4g
SW1wb3J0IHRoZSBHb29nbGUgTW9jayBuYW1lcyBmcm9tIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNl
IHN1Y2ggdGhhdCB5b3UgY2FuIHVzZSB0aGVtIHVucXVhbGlmaWVkIChZb3Ugb25seSBoYXZlIHRv
IGRvIGl0IG9uY2UgcGVyIGZpbGUuIFJlbWVtYmVyIHRoYXQgbmFtZXNwYWNlcyBhcmUgYSBnb29k
IGlkZWEgYW5kIGdvb2QgZm9yIHlvdXIgaGVhbHRoLikuCi0gIDEuIENyZWF0ZSBzb21lIG1vY2sg
b2JqZWN0cy4KLSAgMS4gU3BlY2lmeSB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGVtIChIb3cgbWFu
eSB0aW1lcyB3aWxsIGEgbWV0aG9kIGJlIGNhbGxlZD8gV2l0aCB3aGF0IGFyZ3VtZW50cz8gV2hh
dCBzaG91bGQgaXQgZG8/IGV0Yy4pLgotICAxLiBFeGVyY2lzZSBzb21lIGNvZGUgdGhhdCB1c2Vz
IHRoZSBtb2Nrczsgb3B0aW9uYWxseSwgY2hlY2sgdGhlIHJlc3VsdCB1c2luZyBHb29nbGUgVGVz
dCBhc3NlcnRpb25zLiBJZiBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCBtb3JlIHRoYW4gZXhwZWN0
ZWQgb3Igd2l0aCB3cm9uZyBhcmd1bWVudHMsIHlvdSdsbCBnZXQgYW4gZXJyb3IgaW1tZWRpYXRl
bHkuCi0gIDEuIFdoZW4gYSBtb2NrIGlzIGRlc3RydWN0ZWQsIEdvb2dsZSBNb2NrIHdpbGwgYXV0
b21hdGljYWxseSBjaGVjayB3aGV0aGVyIGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVu
IHNhdGlzZmllZC4KLQotSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotI2luY2x1ZGUgInBhdGgv
dG8vbW9jay10dXJ0bGUuaCIKLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi11c2luZyA6OnRlc3Rpbmc6OkF0TGVhc3Q7ICAgICAgICAgICAgICAgICAg
ICAgLy8gIzEKLQotVEVTVChQYWludGVyVGVzdCwgQ2FuRHJhd1NvbWV0aGluZykgewotICBNb2Nr
VHVydGxlIHR1cnRsZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMyCi0gIEVYUEVDVF9D
QUxMKHR1cnRsZSwgUGVuRG93bigpKSAgICAgICAgICAgICAgLy8gIzMKLSAgICAgIC5UaW1lcyhB
dExlYXN0KDEpKTsKLQotICBQYWludGVyIHBhaW50ZXIoJnR1cnRsZSk7ICAgICAgICAgICAgICAg
ICAgIC8vICM0Ci0KLSAgRVhQRUNUX1RSVUUocGFpbnRlci5EcmF3Q2lyY2xlKDAsIDAsIDEwKSk7
Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzUKLQot
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgbGlu
ZSBtdXN0IGJlIGV4ZWN1dGVkIHRvIGluaXRpYWxpemUgR29vZ2xlIE1vY2sKLSAgLy8gKGFuZCBH
b29nbGUgVGVzdCkgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3RzLgotICA6OnRlc3Rpbmc6OkluaXRH
b29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBg
YAotCi1BcyB5b3UgbWlnaHQgaGF2ZSBndWVzc2VkLCB0aGlzIHRlc3QgY2hlY2tzIHRoYXQgYFBl
bkRvd24oKWAgaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBgcGFpbnRlcmAgb2JqZWN0
IGRpZG4ndCBjYWxsIHRoaXMgbWV0aG9kLCB5b3VyIHRlc3Qgd2lsbCBmYWlsIHdpdGggYSBtZXNz
YWdlIGxpa2UgdGhpczoKLQotYGBgCi1wYXRoL3RvL215X3Rlc3QuY2M6MTE5OiBGYWlsdXJlCi1B
Y3R1YWwgZnVuY3Rpb24gY2FsbCBjb3VudCBkb2Vzbid0IG1hdGNoIHRoaXMgZXhwZWN0YXRpb246
Ci1BY3R1YWxseTogbmV2ZXIgY2FsbGVkOwotRXhwZWN0ZWQ6IGNhbGxlZCBhdCBsZWFzdCBvbmNl
LgotYGBgCi0KLSoqVGlwIDE6KiogSWYgeW91IHJ1biB0aGUgdGVzdCBmcm9tIGFuIEVtYWNzIGJ1
ZmZlciwgeW91IGNhbiBoaXQgYDxFbnRlcj5gIG9uIHRoZSBsaW5lIG51bWJlciBkaXNwbGF5ZWQg
aW4gdGhlIGVycm9yIG1lc3NhZ2UgdG8ganVtcCByaWdodCB0byB0aGUgZmFpbGVkIGV4cGVjdGF0
aW9uLgotCi0qKlRpcCAyOioqIElmIHlvdXIgbW9jayBvYmplY3RzIGFyZSBuZXZlciBkZWxldGVk
LCB0aGUgZmluYWwgdmVyaWZpY2F0aW9uIHdvbid0IGhhcHBlbi4gVGhlcmVmb3JlIGl0J3MgYSBn
b29kIGlkZWEgdG8gdXNlIGEgaGVhcCBsZWFrIGNoZWNrZXIgaW4geW91ciB0ZXN0cyB3aGVuIHlv
dSBhbGxvY2F0ZSBtb2NrcyBvbiB0aGUgaGVhcC4KLQotKipJbXBvcnRhbnQgbm90ZToqKiBHb29n
bGUgTW9jayByZXF1aXJlcyBleHBlY3RhdGlvbnMgdG8gYmUgc2V0ICoqYmVmb3JlKiogdGhlIG1v
Y2sgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIG90aGVyd2lzZSB0aGUgYmVoYXZpb3IgaXMgKip1bmRl
ZmluZWQqKi4gSW4gcGFydGljdWxhciwgeW91IG11c3RuJ3QgaW50ZXJsZWF2ZSBgRVhQRUNUX0NB
TEwoKWBzIGFuZCBjYWxscyB0byB0aGUgbW9jayBmdW5jdGlvbnMuCi0KLVRoaXMgbWVhbnMgYEVY
UEVDVF9DQUxMKClgIHNob3VsZCBiZSByZWFkIGFzIGV4cGVjdGluZyB0aGF0IGEgY2FsbCB3aWxs
IG9jY3VyIF9pbiB0aGUgZnV0dXJlXywgbm90IHRoYXQgYSBjYWxsIGhhcyBvY2N1cnJlZC4gV2h5
IGRvZXMgR29vZ2xlIE1vY2sgd29yayBsaWtlIHRoYXQ/IFdlbGwsIHNwZWNpZnlpbmcgdGhlIGV4
cGVjdGF0aW9uIGJlZm9yZWhhbmQgYWxsb3dzIEdvb2dsZSBNb2NrIHRvIHJlcG9ydCBhIHZpb2xh
dGlvbiBhcyBzb29uIGFzIGl0IGFyaXNlcywgd2hlbiB0aGUgY29udGV4dCAoc3RhY2sgdHJhY2Us
IGV0YykgaXMgc3RpbGwgYXZhaWxhYmxlLiBUaGlzIG1ha2VzIGRlYnVnZ2luZyBtdWNoIGVhc2ll
ci4KLQotQWRtaXR0ZWRseSwgdGhpcyB0ZXN0IGlzIGNvbnRyaXZlZCBhbmQgZG9lc24ndCBkbyBt
dWNoLiBZb3UgY2FuIGVhc2lseSBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCB3aXRob3V0IHVzaW5n
IEdvb2dsZSBNb2NrLiBIb3dldmVyLCBhcyB3ZSBzaGFsbCByZXZlYWwgc29vbiwgR29vZ2xlIE1v
Y2sgYWxsb3dzIHlvdSB0byBkbyBfbXVjaCBtb3JlXyB3aXRoIHRoZSBtb2Nrcy4KLQotIyMgVXNp
bmcgR29vZ2xlIE1vY2sgd2l0aCBBbnkgVGVzdGluZyBGcmFtZXdvcmsgIyMKLUlmIHlvdSB3YW50
IHRvIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBHb29nbGUgVGVzdCAoZS5nLiBbQ3BwVW5pdF0o
aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9jcHB1bml0Lykgb3IKLVtDeHhUZXN0XSho
dHRwOi8vY3h4dGVzdC50aWdyaXMub3JnLykpIGFzIHlvdXIgdGVzdGluZyBmcmFtZXdvcmssIGp1
c3QgY2hhbmdlIHRoZSBgbWFpbigpYCBmdW5jdGlvbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiB0
bzoKLWBgYAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIC8vIFRoZSBmb2xs
b3dpbmcgbGluZSBjYXVzZXMgR29vZ2xlIE1vY2sgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGZh
aWx1cmUsCi0gIC8vIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgeW91ciB0ZXN0aW5nIGZy
YW1ld29yayBhcyBhIHRlc3QgZmFpbHVyZS4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93
X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywg
YXJndik7Ci0gIC4uLiB3aGF0ZXZlciB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVzIC4u
LgotfQotYGBgCi0KLVRoaXMgYXBwcm9hY2ggaGFzIGEgY2F0Y2g6IGl0IG1ha2VzIEdvb2dsZSBN
b2NrIHRocm93IGFuIGV4Y2VwdGlvbgotZnJvbSBhIG1vY2sgb2JqZWN0J3MgZGVzdHJ1Y3RvciBz
b21ldGltZXMuICBXaXRoIHNvbWUgY29tcGlsZXJzLCB0aGlzCi1zb21ldGltZXMgY2F1c2VzIHRo
ZSB0ZXN0IHByb2dyYW0gdG8gY3Jhc2guICBZb3UnbGwgc3RpbGwgYmUgYWJsZSB0bwotbm90aWNl
IHRoYXQgdGhlIHRlc3QgaGFzIGZhaWxlZCwgYnV0IGl0J3Mgbm90IGEgZ3JhY2VmdWwgZmFpbHVy
ZS4KLQotQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIEdvb2dsZSBUZXN0J3MKLVtldmVudCBs
aXN0ZW5lciBBUEldKC4uLy4uL2dvb2dsZXRlc3QvZG9jcy9BZHZhbmNlZEd1aWRlLm1kI2V4dGVu
ZGluZy1nb29nbGUtdGVzdC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykKLXRvIHJlcG9ydCBhIHRl
c3QgZmFpbHVyZSB0byB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3Blcmx5LiAgWW91J2xsIG5l
ZWQgdG8KLWltcGxlbWVudCB0aGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgbWV0aG9kIG9mIHRoZSBl
dmVudCBsaXN0ZW5lciBpbnRlcmZhY2UsIGJ1dCBpdAotc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2Fy
ZC4KLQotSWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgdG9vIG11Y2ggd29yaywgd2Ugc3VnZ2VzdCB0
aGF0IHlvdSBzdGljayB3aXRoCi1Hb29nbGUgVGVzdCwgd2hpY2ggd29ya3Mgd2l0aCBHb29nbGUg
TW9jayBzZWFtbGVzc2x5IChpbiBmYWN0LCBpdCBpcwotdGVjaG5pY2FsbHkgcGFydCBvZiBHb29n
bGUgTW9jay4pLiAgSWYgdGhlcmUgaXMgYSByZWFzb24gdGhhdCB5b3UKLWNhbm5vdCB1c2UgR29v
Z2xlIFRlc3QsIHBsZWFzZSBsZXQgdXMga25vdy4KLQotIyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAj
Ci1UaGUga2V5IHRvIHVzaW5nIGEgbW9jayBvYmplY3Qgc3VjY2Vzc2Z1bGx5IGlzIHRvIHNldCB0
aGUgX3JpZ2h0IGV4cGVjdGF0aW9uc18gb24gaXQuIElmIHlvdSBzZXQgdGhlIGV4cGVjdGF0aW9u
cyB0b28gc3RyaWN0LCB5b3VyIHRlc3Qgd2lsbCBmYWlsIGFzIHRoZSByZXN1bHQgb2YgdW5yZWxh
dGVkIGNoYW5nZXMuIElmIHlvdSBzZXQgdGhlbSB0b28gbG9vc2UsIGJ1Z3MgY2FuIHNsaXAgdGhy
b3VnaC4gWW91IHdhbnQgdG8gZG8gaXQganVzdCByaWdodCBzdWNoIHRoYXQgeW91ciB0ZXN0IGNh
biBjYXRjaCBleGFjdGx5IHRoZSBraW5kIG9mIGJ1Z3MgeW91IGludGVuZCBpdCB0byBjYXRjaC4g
R29vZ2xlIE1vY2sgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBtZWFucyBmb3IgeW91IHRvIGRvIGl0
ICJqdXN0IHJpZ2h0LiIKLQotIyMgR2VuZXJhbCBTeW50YXggIyMKLUluIEdvb2dsZSBNb2NrIHdl
IHVzZSB0aGUgYEVYUEVDVF9DQUxMKClgIG1hY3JvIHRvIHNldCBhbiBleHBlY3RhdGlvbiBvbiBh
IG1vY2sgbWV0aG9kLiBUaGUgZ2VuZXJhbCBzeW50YXggaXM6Ci0KLWBgYAotRVhQRUNUX0NBTEwo
bW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAgLlRpbWVzKGNhcmRpbmFsaXR5KQot
ICAgIC5XaWxsT25jZShhY3Rpb24pCi0gICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbik7Ci1gYGAK
LQotVGhlIG1hY3JvIGhhcyB0d28gYXJndW1lbnRzOiBmaXJzdCB0aGUgbW9jayBvYmplY3QsIGFu
ZCB0aGVuIHRoZSBtZXRob2QgYW5kIGl0cyBhcmd1bWVudHMuIE5vdGUgdGhhdCB0aGUgdHdvIGFy
ZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSAoYCxgKSwgbm90IGEgcGVyaW9kIChgLmApLiAoV2h5IHVz
aW5nIGEgY29tbWE/IFRoZSBhbnN3ZXIgaXMgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IGZvciB0ZWNo
bmljYWwgcmVhc29ucy4pCi0KLVRoZSBtYWNybyBjYW4gYmUgZm9sbG93ZWQgYnkgc29tZSBvcHRp
b25hbCBfY2xhdXNlc18gdGhhdCBwcm92aWRlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4
cGVjdGF0aW9uLiBXZSdsbCBkaXNjdXNzIGhvdyBlYWNoIGNsYXVzZSB3b3JrcyBpbiB0aGUgY29t
aW5nIHNlY3Rpb25zLgotCi1UaGlzIHN5bnRheCBpcyBkZXNpZ25lZCB0byBtYWtlIGFuIGV4cGVj
dGF0aW9uIHJlYWQgbGlrZSBFbmdsaXNoLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBwcm9iYWJseSBn
dWVzcyB0aGF0Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuVGltZXMoNSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
MCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxNTApKQotICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oMjAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IHRoZSBgdHVydGxlYCBvYmplY3QncyBgR2V0WCgp
YCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZml2ZSB0aW1lcywgaXQgd2lsbCByZXR1cm4gMTAwIHRo
ZSBmaXJzdCB0aW1lLCAxNTAgdGhlIHNlY29uZCB0aW1lLCBhbmQgdGhlbiAyMDAgZXZlcnkgdGlt
ZS4gU29tZSBwZW9wbGUgbGlrZSB0byBjYWxsIHRoaXMgc3R5bGUgb2Ygc3ludGF4IGEgRG9tYWlu
LVNwZWNpZmljIExhbmd1YWdlIChEU0wpLgotCi0qKk5vdGU6KiogV2h5IGRvIHdlIHVzZSBhIG1h
Y3JvIHRvIGRvIHRoaXM/IEl0IHNlcnZlcyB0d28gcHVycG9zZXM6IGZpcnN0IGl0IG1ha2VzIGV4
cGVjdGF0aW9ucyBlYXNpbHkgaWRlbnRpZmlhYmxlIChlaXRoZXIgYnkgYGdyZXBgIG9yIGJ5IGEg
aHVtYW4gcmVhZGVyKSwgYW5kIHNlY29uZCBpdCBhbGxvd3MgR29vZ2xlIE1vY2sgdG8gaW5jbHVk
ZSB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgYSBmYWlsZWQgZXhwZWN0YXRpb24gaW4gbWVz
c2FnZXMsIG1ha2luZyBkZWJ1Z2dpbmcgZWFzaWVyLgotCi0jIyBNYXRjaGVyczogV2hhdCBBcmd1
bWVudHMgRG8gV2UgRXhwZWN0PyAjIwotV2hlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYXJndW1l
bnRzLCB3ZSBtdXN0IHNwZWNpZnkgd2hhdCBhcmd1bWVudHMgd2UgYXJlIGV4cGVjdGluZzsgZm9y
IGV4YW1wbGU6Ci0KLWBgYAotLy8gRXhwZWN0cyB0aGUgdHVydGxlIHRvIG1vdmUgZm9yd2FyZCBi
eSAxMDAgdW5pdHMuCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoMTAwKSk7Ci1gYGAKLQot
U29tZXRpbWVzIHlvdSBtYXkgbm90IHdhbnQgdG8gYmUgdG9vIHNwZWNpZmljIChSZW1lbWJlciB0
aGF0IHRhbGsgYWJvdXQgdGVzdHMgYmVpbmcgdG9vIHJpZ2lkPyBPdmVyIHNwZWNpZmljYXRpb24g
bGVhZHMgdG8gYnJpdHRsZSB0ZXN0cyBhbmQgb2JzY3VyZXMgdGhlIGludGVudCBvZiB0ZXN0cy4g
VGhlcmVmb3JlIHdlIGVuY291cmFnZSB5b3UgdG8gc3BlY2lmeSBvbmx5IHdoYXQncyBuZWNlc3Nh
cnkgLSBubyBtb3JlLCBubyBsZXNzLikuIElmIHlvdSBjYXJlIHRvIGNoZWNrIHRoYXQgYEZvcndh
cmQoKWAgd2lsbCBiZSBjYWxsZWQgYnV0IGFyZW4ndCBpbnRlcmVzdGVkIGluIGl0cyBhY3R1YWwg
YXJndW1lbnQsIHdyaXRlIGBfYCBhcyB0aGUgYXJndW1lbnQsIHdoaWNoIG1lYW5zICJhbnl0aGlu
ZyBnb2VzIjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLS8vIEV4cGVjdHMgdGhl
IHR1cnRsZSB0byBtb3ZlIGZvcndhcmQuCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoXykp
OwotYGBgCi0KLWBfYCBpcyBhbiBpbnN0YW5jZSBvZiB3aGF0IHdlIGNhbGwgKiptYXRjaGVycyoq
LiBBIG1hdGNoZXIgaXMgbGlrZSBhIHByZWRpY2F0ZSBhbmQgY2FuIHRlc3Qgd2hldGhlciBhbiBh
cmd1bWVudCBpcyB3aGF0IHdlJ2QgZXhwZWN0LiBZb3UgY2FuIHVzZSBhIG1hdGNoZXIgaW5zaWRl
IGBFWFBFQ1RfQ0FMTCgpYCB3aGVyZXZlciBhIGZ1bmN0aW9uIGFyZ3VtZW50IGlzIGV4cGVjdGVk
LgotCi1BIGxpc3Qgb2YgYnVpbHQtaW4gbWF0Y2hlcnMgY2FuIGJlIGZvdW5kIGluIHRoZSBbQ2hl
YXRTaGVldF0oQ2hlYXRTaGVldC5tZCkuIEZvciBleGFtcGxlLCBoZXJlJ3MgdGhlIGBHZWAgKGdy
ZWF0ZXIgdGhhbiBvciBlcXVhbCkgbWF0Y2hlcjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Okdl
Oy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKEdlKDEwMCkpKTsKLWBgYAotCi1UaGlz
IGNoZWNrcyB0aGF0IHRoZSB0dXJ0bGUgd2lsbCBiZSB0b2xkIHRvIGdvIGZvcndhcmQgYnkgYXQg
bGVhc3QgMTAwIHVuaXRzLgotCi0jIyBDYXJkaW5hbGl0aWVzOiBIb3cgTWFueSBUaW1lcyBXaWxs
IEl0IEJlIENhbGxlZD8gIyMKLVRoZSBmaXJzdCBjbGF1c2Ugd2UgY2FuIHNwZWNpZnkgZm9sbG93
aW5nIGFuIGBFWFBFQ1RfQ0FMTCgpYCBpcyBgVGltZXMoKWAuIFdlIGNhbGwgaXRzIGFyZ3VtZW50
IGEgKipjYXJkaW5hbGl0eSoqIGFzIGl0IHRlbGxzIF9ob3cgbWFueSB0aW1lc18gdGhlIGNhbGwg
c2hvdWxkIG9jY3VyLiBJdCBhbGxvd3MgdXMgdG8gcmVwZWF0IGFuIGV4cGVjdGF0aW9uIG1hbnkg
dGltZXMgd2l0aG91dCBhY3R1YWxseSB3cml0aW5nIGl0IGFzIG1hbnkgdGltZXMuIE1vcmUgaW1w
b3J0YW50bHksIGEgY2FyZGluYWxpdHkgY2FuIGJlICJmdXp6eSIsIGp1c3QgbGlrZSBhIG1hdGNo
ZXIgY2FuIGJlLiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZXhwcmVzcyB0aGUgaW50ZW50IG9mIGEg
dGVzdCBleGFjdGx5LgotCi1BbiBpbnRlcmVzdGluZyBzcGVjaWFsIGNhc2UgaXMgd2hlbiB3ZSBz
YXkgYFRpbWVzKDApYC4gWW91IG1heSBoYXZlIGd1ZXNzZWQgLSBpdCBtZWFucyB0aGF0IHRoZSBm
dW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhdCBh
bGwsIGFuZCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhIEdvb2dsZSBUZXN0IGZhaWx1cmUgd2hl
bmV2ZXIgdGhlIGZ1bmN0aW9uIGlzICh3cm9uZ2Z1bGx5KSBjYWxsZWQuCi0KLVdlJ3ZlIHNlZW4g
YEF0TGVhc3QobilgIGFzIGFuIGV4YW1wbGUgb2YgZnV6enkgY2FyZGluYWxpdGllcyBlYXJsaWVy
LiBGb3IgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gY2FyZGluYWxpdGllcyB5b3UgY2FuIHVzZSwgc2Vl
IHRoZSBbQ2hlYXRTaGVldF0oQ2hlYXRTaGVldC5tZCkuCi0KLVRoZSBgVGltZXMoKWAgY2xhdXNl
IGNhbiBiZSBvbWl0dGVkLiAqKklmIHlvdSBvbWl0IGBUaW1lcygpYCwgR29vZ2xlIE1vY2sgd2ls
bCBpbmZlciB0aGUgY2FyZGluYWxpdHkgZm9yIHlvdS4qKiBUaGUgcnVsZXMgYXJlIGVhc3kgdG8g
cmVtZW1iZXI6Ci0KLSAgKiBJZiAqKm5laXRoZXIqKiBgV2lsbE9uY2UoKWAgKipub3IqKiBgV2ls
bFJlcGVhdGVkbHkoKWAgaXMgaW4gdGhlIGBFWFBFQ1RfQ0FMTCgpYCwgdGhlIGluZmVycmVkIGNh
cmRpbmFsaXR5IGlzIGBUaW1lcygxKWAuCi0gICogSWYgdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClg
J3MgYnV0ICoqbm8qKiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAxLCB0aGUgY2Fy
ZGluYWxpdHkgaXMgYFRpbWVzKG4pYC4KLSAgKiBJZiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWAn
cyBhbmQgKipvbmUqKiBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAwLCB0aGUgY2Fy
ZGluYWxpdHkgaXMgYFRpbWVzKEF0TGVhc3QobikpYC4KLQotKipRdWljayBxdWl6OioqIHdoYXQg
ZG8geW91IHRoaW5rIHdpbGwgaGFwcGVuIGlmIGEgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUg
Y2FsbGVkIHR3aWNlIGJ1dCBhY3R1YWxseSBjYWxsZWQgZm91ciB0aW1lcz8KLQotIyMgQWN0aW9u
czogV2hhdCBTaG91bGQgSXQgRG8/ICMjCi1SZW1lbWJlciB0aGF0IGEgbW9jayBvYmplY3QgZG9l
c24ndCByZWFsbHkgaGF2ZSBhIHdvcmtpbmcgaW1wbGVtZW50YXRpb24/IFdlIGFzIHVzZXJzIGhh
dmUgdG8gdGVsbCBpdCB3aGF0IHRvIGRvIHdoZW4gYSBtZXRob2QgaXMgaW52b2tlZC4gVGhpcyBp
cyBlYXN5IGluIEdvb2dsZSBNb2NrLgotCi1GaXJzdCwgaWYgdGhlIHJldHVybiB0eXBlIG9mIGEg
bW9jayBmdW5jdGlvbiBpcyBhIGJ1aWx0LWluIHR5cGUgb3IgYSBwb2ludGVyLCB0aGUgZnVuY3Rp
b24gaGFzIGEgKipkZWZhdWx0IGFjdGlvbioqIChhIGB2b2lkYCBmdW5jdGlvbiB3aWxsIGp1c3Qg
cmV0dXJuLCBhIGBib29sYCBmdW5jdGlvbiB3aWxsIHJldHVybiBgZmFsc2VgLCBhbmQgb3RoZXIg
ZnVuY3Rpb25zIHdpbGwgcmV0dXJuIDApLiBJbiBhZGRpdGlvbiwgaW4gQysrIDExIGFuZCBhYm92
ZSwgYSBtb2NrIGZ1bmN0aW9uIHdob3NlIHJldHVybiB0eXBlIGlzIGRlZmF1bHQtY29uc3RydWN0
aWJsZSAoaS5lLiBoYXMgYSBkZWZhdWx0IGNvbnN0cnVjdG9yKSBoYXMgYSBkZWZhdWx0IGFjdGlv
biBvZiByZXR1cm5pbmcgYSBkZWZhdWx0LWNvbnN0cnVjdGVkIHZhbHVlLiAgSWYgeW91IGRvbid0
IHNheSBhbnl0aGluZywgdGhpcyBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCi0KLVNlY29uZCwgaWYg
YSBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgYWN0aW9uLCBvciB0aGUgZGVm
YXVsdCBhY3Rpb24gZG9lc24ndCBzdWl0IHlvdSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBhY3Rpb24g
dG8gYmUgdGFrZW4gZWFjaCB0aW1lIHRoZSBleHBlY3RhdGlvbiBtYXRjaGVzIHVzaW5nIGEgc2Vy
aWVzIG9mIGBXaWxsT25jZSgpYCBjbGF1c2VzIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGBXaWxs
UmVwZWF0ZWRseSgpYC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJu
KDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxsT25jZShSZXR1cm4o
MzAwKSk7Ci1gYGAKLQotVGhpcyBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgYmUgY2Fs
bGVkIF9leGFjdGx5IHRocmVlIHRpbWVzXyAoR29vZ2xlIE1vY2sgaW5mZXJyZWQgdGhpcyBmcm9t
IGhvdyBtYW55IGBXaWxsT25jZSgpYCBjbGF1c2VzIHdlJ3ZlIHdyaXR0ZW4sIHNpbmNlIHdlIGRp
ZG4ndCBleHBsaWNpdGx5IHdyaXRlIGBUaW1lcygpYCksIGFuZCB3aWxsIHJldHVybiAxMDAsIDIw
MCwgYW5kIDMwMCByZXNwZWN0aXZlbHkuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47
Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
MCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1
cm4oMzAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3aWxsIGJlIGNhbGxl
ZCBfYXQgbGVhc3QgdHdpY2VfIChHb29nbGUgTW9jayBrbm93cyB0aGlzIGFzIHdlJ3ZlIHdyaXR0
ZW4gdHdvIGBXaWxsT25jZSgpYCBjbGF1c2VzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCB3aGls
ZSBoYXZpbmcgbm8gZXhwbGljaXQgYFRpbWVzKClgKSwgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJz
dCB0aW1lLCAyMDAgdGhlIHNlY29uZCB0aW1lLCBhbmQgMzAwIGZyb20gdGhlIHRoaXJkIHRpbWUg
b24uCi0KLU9mIGNvdXJzZSwgaWYgeW91IGV4cGxpY2l0bHkgd3JpdGUgYSBgVGltZXMoKWAsIEdv
b2dsZSBNb2NrIHdpbGwgbm90IHRyeSB0byBpbmZlciB0aGUgY2FyZGluYWxpdHkgaXRzZWxmLiBX
aGF0IGlmIHRoZSBudW1iZXIgeW91IHNwZWNpZmllZCBpcyBsYXJnZXIgdGhhbiB0aGVyZSBhcmUg
YFdpbGxPbmNlKClgIGNsYXVzZXM/IFdlbGwsIGFmdGVyIGFsbCBgV2lsbE9uY2UoKWBzIGFyZSB1
c2VkIHVwLCBHb29nbGUgTW9jayB3aWxsIGRvIHRoZSBfZGVmYXVsdF8gYWN0aW9uIGZvciB0aGUg
ZnVuY3Rpb24gZXZlcnkgdGltZSAodW5sZXNzLCBvZiBjb3Vyc2UsIHlvdSBoYXZlIGEgYFdpbGxS
ZXBlYXRlZGx5KClgLikuCi0KLVdoYXQgY2FuIHdlIGRvIGluc2lkZSBgV2lsbE9uY2UoKWAgYmVz
aWRlcyBgUmV0dXJuKClgPyBZb3UgY2FuIHJldHVybiBhIHJlZmVyZW5jZSB1c2luZyBgUmV0dXJu
UmVmKHZhcmlhYmxlKWAsIG9yIGludm9rZSBhIHByZS1kZWZpbmVkIGZ1bmN0aW9uLCBhbW9uZyBb
b3RoZXJzXShDaGVhdFNoZWV0Lm1kI2FjdGlvbnMpLgotCi0qKkltcG9ydGFudCBub3RlOioqIFRo
ZSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0aW9uIGNsYXVzZSBv
bmx5IG9uY2UsIGV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZvcm1lZCBtYW55IHRp
bWVzLiBUaGVyZWZvcmUgeW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRlIGVmZmVjdHMuIFRo
ZSBmb2xsb3dpbmcgbWF5IG5vdCBkbyB3aGF0IHlvdSB3YW50OgotCi1gYGAKLWludCBuID0gMTAw
OwotRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0uVGltZXMoNCkKLS5XaWxsUmVwZWF0ZWRs
eShSZXR1cm4obisrKSk7Ci1gYGAKLQotSW5zdGVhZCBvZiByZXR1cm5pbmcgMTAwLCAxMDEsIDEw
MiwgLi4uLCBjb25zZWN1dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0
dXJuIDEwMCBhcyBgbisrYCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1pbGFybHksIGBSZXR1
cm4obmV3IEZvbylgIHdpbGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3aGVuIHRoZSBgRVhQ
RUNUX0NBTEwoKWAgaXMgZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVy
IGV2ZXJ5IHRpbWUuIElmIHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBoYXBwZW4gZXZlcnkg
dGltZSwgeW91IG5lZWQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hpY2ggd2UnbGwgdGVh
Y2ggaW4gdGhlIFtDb29rQm9va10oQ29va0Jvb2subWQpLgotCi1UaW1lIGZvciBhbm90aGVyIHF1
aXohIFdoYXQgZG8geW91IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLS5UaW1l
cyg0KQotLldpbGxPbmNlKFJldHVybigxMDApKTsKLWBgYAotCi1PYnZpb3VzbHkgYHR1cnRsZS5H
ZXRZKClgIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQgaWYgeW91IHRo
aW5rIGl0IHdpbGwgcmV0dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEgUmVtZW1iZXIg
dGhhdCBvbmUgYFdpbGxPbmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVhY2ggdGltZSB0
aGUgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdpbGwgYmUgdGFr
ZW4gYWZ0ZXJ3YXJkcy4gU28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0bGUuR2V0WSgp
YCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAwIGZyb20gdGhl
IHNlY29uZCB0aW1lIG9uKiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0IGFjdGlvbiBm
b3IgYGludGAgZnVuY3Rpb25zLgotCi0jIyBVc2luZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMgIyMK
LVNvIGZhciB3ZSd2ZSBvbmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZlIGEgc2luZ2xl
IGV4cGVjdGF0aW9uLiBNb3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0byBzcGVjaWZ5
IGV4cGVjdGF0aW9ucyBvbiBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1heSBiZSBmcm9t
IG11bHRpcGxlIG1vY2sgb2JqZWN0cy4KLQotQnkgZGVmYXVsdCwgd2hlbiBhIG1vY2sgbWV0aG9k
IGlzIGludm9rZWQsIEdvb2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3RhdGlvbnMgaW4g
dGhlICoqcmV2ZXJzZSBvcmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9wIHdoZW4gYW4g
YWN0aXZlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlzIGZvdW5kICh5
b3UgY2FuIHRoaW5rIG9mIGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRlciBvbmVzLiIp
LiBJZiB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1vcmUgY2FsbHMs
IHlvdSB3aWxsIGdldCBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBIZXJlJ3MgYW4g
ZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0
bGUsIEZvcndhcmQoXykpOyAgLy8gIzEKLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMCkp
ICAvLyAjMgotICAgIC5UaW1lcygyKTsKLWBgYAotCi1JZiBgRm9yd2FyZCgxMClgIGlzIGNhbGxl
ZCB0aHJlZSB0aW1lcyBpbiBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBiZSBhbiBlcnJv
ciwgYXMgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVlbiBzYXR1cmF0
ZWQuIElmLCBob3dldmVyLCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlzIHJlcGxhY2Vk
IGJ5IGBGb3J3YXJkKDIwKWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAjMSB3aWxsIGJl
IHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbi4KLQotKipTaWRlIG5vdGU6KiogV2h5IGRvZXMgR29v
Z2xlIE1vY2sgc2VhcmNoIGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIgb2YgdGhl
IGV4cGVjdGF0aW9ucz8gVGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEgdXNlciB0byBz
ZXQgdXAgdGhlIGRlZmF1bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1
Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVuIGN1c3RvbWl6
ZSB0aGUgbW9jayBieSB3cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGluIHRoZSB0
ZXN0IGJvZHkuIFNvLCBpZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRoZSBzYW1lIG1l
dGhvZCwgeW91IHdhbnQgdG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmljIG1hdGNoZXJz
ICoqYWZ0ZXIqKiB0aGUgb3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUgd291bGQgYmUg
c2hhZG93ZWQgYnkgdGhlIG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRlciBpdC4KLQot
IyMgT3JkZXJlZCB2cyBVbm9yZGVyZWQgQ2FsbHMgIyMKLUJ5IGRlZmF1bHQsIGFuIGV4cGVjdGF0
aW9uIGNhbiBtYXRjaCBhIGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBlY3RhdGlvbiBo
YXNuJ3QgYmVlbiBzYXRpc2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMgZG9uJ3QgaGF2
ZSB0byBvY2N1ciBpbiB0aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3BlY2lmaWVkLgot
Ci1Tb21ldGltZXMsIHlvdSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzIHRvIG9jY3Vy
IGluIGEgc3RyaWN0IG9yZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBpcyBlYXN5Ogot
Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KLVRFU1QoRm9vVGVzdCwgRHJh
d3NMaW5lU2VnbWVudCkgewotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0KLSAg
ICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSk7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxl
LCBGb3J3YXJkKDEwMCkpOwotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAoKSk7Ci0gIH0K
LSAgRm9vKCk7Ci19Ci1gYGAKLQotQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5cGUgYEluU2Vx
dWVuY2VgLCBhbGwgZXhwZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGludG8gYSBfc2Vx
dWVuY2VfIGFuZCBoYXZlIHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3ZSBhcmUganVz
dCByZWx5aW5nIG9uIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0aGlzIG9iamVj
dCB0byBkbyB0aGUgYWN0dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJlbGV2YW50Lgot
Ci1JbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRoZSB0aHJlZSBl
eHBlY3RlZCBmdW5jdGlvbnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEgY2FsbCBpcyBt
YWRlIG91dC1vZi1vcmRlciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotKFdoYXQgaWYgeW91IGNh
cmUgYWJvdXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxzLCBidXQgbm90
IGFsbCBvZiB0aGVtPyBDYW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRpYWwgb3JkZXI/
IFRoZSBhbnN3ZXIgaXMgLi4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRoZSBkZXRhaWxz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgW0Nvb2tCb29rXShDb29rQm9vayNFeHBlY3RpbmdfUGFydGlh
bGx5X09yZGVyZWRfQ2FsbHMubWQpLikKLQotIyMgQWxsIEV4cGVjdGF0aW9ucyBBcmUgU3RpY2t5
IChVbmxlc3MgU2FpZCBPdGhlcndpc2UpICMjCi1Ob3cgbGV0J3MgZG8gYSBxdWljayBxdWl6IHRv
IHNlZSBob3cgd2VsbCB5b3UgY2FuIHVzZSB0aGlzIG1vY2sgc3R1ZmYgYWxyZWFkeS4gSG93IHdv
dWxkIHlvdSB0ZXN0IHRoYXQgdGhlIHR1cnRsZSBpcyBhc2tlZCB0byBnbyB0byB0aGUgb3JpZ2lu
IF9leGFjdGx5IHR3aWNlXyAoeW91IHdhbnQgdG8gaWdub3JlIGFueSBvdGhlciBpbnN0cnVjdGlv
bnMgaXQgcmVjZWl2ZXMpPwotCi1BZnRlciB5b3UndmUgY29tZSB1cCB3aXRoIHlvdXIgYW5zd2Vy
LCB0YWtlIGEgbG9vayBhdCBvdXJzIGFuZCBjb21wYXJlIG5vdGVzIChzb2x2ZSBpdCB5b3Vyc2Vs
ZiBmaXJzdCAtIGRvbid0IGNoZWF0ISk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOy4uLgot
RVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKF8sIF8pKSAgLy8gIzEKLSAgICAuVGltZXMoQW55TnVt
YmVyKCkpOwotRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKDAsIDApKSAgLy8gIzIKLSAgICAuVGlt
ZXMoMik7Ci1gYGAKLQotU3VwcG9zZSBgdHVydGxlLkdvVG8oMCwgMClgIGlzIGNhbGxlZCB0aHJl
ZSB0aW1lcy4gSW4gdGhlIHRoaXJkIHRpbWUsIEdvb2dsZSBNb2NrIHdpbGwgc2VlIHRoYXQgdGhl
IGFyZ3VtZW50cyBtYXRjaCBleHBlY3RhdGlvbiAjMiAocmVtZW1iZXIgdGhhdCB3ZSBhbHdheXMg
cGljayB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbikuIE5vdywgc2luY2Ugd2Ugc2FpZCB0
aGF0IHRoZXJlIHNob3VsZCBiZSBvbmx5IHR3byBzdWNoIGNhbGxzLCBHb29nbGUgTW9jayB3aWxs
IHJlcG9ydCBhbiBlcnJvciBpbW1lZGlhdGVseS4gVGhpcyBpcyBiYXNpY2FsbHkgd2hhdCB3ZSd2
ZSB0b2xkIHlvdSBpbiB0aGUgIlVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9ucyIgc2VjdGlvbiBh
Ym92ZS4KLQotVGhpcyBleGFtcGxlIHNob3dzIHRoYXQgKipleHBlY3RhdGlvbnMgaW4gR29vZ2xl
IE1vY2sgYXJlICJzdGlja3kiIGJ5IGRlZmF1bHQqKiwgaW4gdGhlIHNlbnNlIHRoYXQgdGhleSBy
ZW1haW4gYWN0aXZlIGV2ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFjaGVkIHRoZWlyIGludm9jYXRpb24g
dXBwZXIgYm91bmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBydWxlIHRvIHJlbWVtYmVyLCBhcyBp
dCBhZmZlY3RzIHRoZSBtZWFuaW5nIG9mIHRoZSBzcGVjLCBhbmQgaXMgKipkaWZmZXJlbnQqKiB0
byBob3cgaXQncyBkb25lIGluIG1hbnkgb3RoZXIgbW9ja2luZyBmcmFtZXdvcmtzIChXaHknZCB3
ZSBkbyB0aGF0PyBCZWNhdXNlIHdlIHRoaW5rIG91ciBydWxlIG1ha2VzIHRoZSBjb21tb24gY2Fz
ZXMgZWFzaWVyIHRvIGV4cHJlc3MgYW5kIHVuZGVyc3RhbmQuKS4KLQotU2ltcGxlPyBMZXQncyBz
ZWUgaWYgeW91J3ZlIHJlYWxseSB1bmRlcnN0b29kIGl0OiB3aGF0IGRvZXMgdGhlIGZvbGxvd2lu
ZyBjb2RlIHNheT8KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotZm9yIChp
bnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKTsKLX0KLWBgYAotCi1JZiB5b3UgdGhpbmsgaXQg
c2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBgbmAgdGltZXMgYW5kIHdp
bGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpbmsgdHdpY2UhIFRo
ZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHdlIHNhaWQsIGV4cGVjdGF0aW9ucyBhcmUgc3RpY2t5LiBT
bywgdGhlIHNlY29uZCB0aW1lIGB0dXJ0bGUuR2V0WCgpYCBpcyBjYWxsZWQsIHRoZSBsYXN0IChs
YXRlc3QpIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQgd2lsbCBtYXRjaCwgYW5kIHdpbGwgaW1t
ZWRpYXRlbHkgbGVhZCB0byBhbiAidXBwZXIgYm91bmQgZXhjZWVkZWQiIGVycm9yIC0gdGhpcyBw
aWVjZSBvZiBjb2RlIGlzIG5vdCB2ZXJ5IHVzZWZ1bCEKLQotT25lIGNvcnJlY3Qgd2F5IG9mIHNh
eWluZyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAuLi4sIGlz
IHRvIGV4cGxpY2l0bHkgc2F5IHRoYXQgdGhlIGV4cGVjdGF0aW9ucyBhcmUgX25vdF8gc3RpY2t5
LiBJbiBvdGhlciB3b3JkcywgdGhleSBzaG91bGQgX3JldGlyZV8gYXMgc29vbiBhcyB0aGV5IGFy
ZSBzYXR1cmF0ZWQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLWZvciAo
aW50IGkgPSBuOyBpID4gMDsgaS0tKSB7Ci0gIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQot
ICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsK
LX0KLWBgYAotCi1BbmQsIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0OiBpbiB0aGlzIGNh
c2UsIHdlIGV4cGVjdCB0aGUgY2FsbHMgdG8gb2NjdXIgaW4gYSBzcGVjaWZpYyBvcmRlciwgYW5k
IHdlIGxpbmUgdXAgdGhlIGFjdGlvbnMgdG8gbWF0Y2ggdGhlIG9yZGVyLiBTaW5jZSB0aGUgb3Jk
ZXIgaXMgaW1wb3J0YW50IGhlcmUsIHdlIHNob3VsZCBtYWtlIGl0IGV4cGxpY2l0IHVzaW5nIGEg
c2VxdWVuY2U6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLXsKLSAgSW5TZXF1ZW5jZSBzOwotCi0gIGZvciAoaW50IGkg
PSAxOyBpIDw9IG47IGkrKykgewotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAg
ICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlv
bigpOwotICB9Ci19Ci1gYGAKLQotQnkgdGhlIHdheSwgdGhlIG90aGVyIHNpdHVhdGlvbiB3aGVy
ZSBhbiBleHBlY3RhdGlvbiBtYXkgX25vdF8gYmUgc3RpY2t5IGlzIHdoZW4gaXQncyBpbiBhIHNl
cXVlbmNlIC0gYXMgc29vbiBhcyBhbm90aGVyIGV4cGVjdGF0aW9uIHRoYXQgY29tZXMgYWZ0ZXIg
aXQgaW4gdGhlIHNlcXVlbmNlIGhhcyBiZWVuIHVzZWQsIGl0IGF1dG9tYXRpY2FsbHkgcmV0aXJl
cyAoYW5kIHdpbGwgbmV2ZXIgYmUgdXNlZCB0byBtYXRjaCBhbnkgY2FsbCkuCi0KLSMjIFVuaW50
ZXJlc3RpbmcgQ2FsbHMgIyMKLUEgbW9jayBvYmplY3QgbWF5IGhhdmUgbWFueSBtZXRob2RzLCBh
bmQgbm90IGFsbCBvZiB0aGVtIGFyZSB0aGF0IGludGVyZXN0aW5nLiBGb3IgZXhhbXBsZSwgaW4g
c29tZSB0ZXN0cyB3ZSBtYXkgbm90IGNhcmUgYWJvdXQgaG93IG1hbnkgdGltZXMgYEdldFgoKWAg
YW5kIGBHZXRZKClgIGdldCBjYWxsZWQuCi0KLUluIEdvb2dsZSBNb2NrLCBpZiB5b3UgYXJlIG5v
dCBpbnRlcmVzdGVkIGluIGEgbWV0aG9kLCBqdXN0IGRvbid0IHNheSBhbnl0aGluZyBhYm91dCBp
dC4gSWYgYSBjYWxsIHRvIHRoaXMgbWV0aG9kIG9jY3VycywgeW91J2xsIHNlZSBhIHdhcm5pbmcg
aW4gdGhlIHRlc3Qgb3V0cHV0LCBidXQgaXQgd29uJ3QgYmUgYSBmYWlsdXJlLgotCi0jIFdoYXQg
Tm93PyAjCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFybmVkIGVub3VnaCBhYm91dCBHb29n
bGUgTW9jayB0byBzdGFydCB1c2luZyBpdC4gTm93LCB5b3UgbWlnaHQgd2FudCB0byBqb2luIHRo
ZSBbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2sp
IGRpc2N1c3Npb24gZ3JvdXAgYW5kIGFjdHVhbGx5IHdyaXRlIHNvbWUgdGVzdHMgdXNpbmcgR29v
Z2xlIE1vY2sgLSBpdCB3aWxsIGJlIGZ1bi4gSGV5LCBpdCBtYXkgZXZlbiBiZSBhZGRpY3RpdmUg
LSB5b3UndmUgYmVlbiB3YXJuZWQuCi0KLVRoZW4sIGlmIHlvdSBmZWVsIGxpa2UgaW5jcmVhc2lu
ZyB5b3VyIG1vY2sgcXVvdGllbnQsIHlvdSBzaG91bGQgbW92ZSBvbiB0byB0aGUgW0Nvb2tCb29r
XShDb29rQm9vay5tZCkuIFlvdSBjYW4gbGVhcm4gbWFueSBhZHZhbmNlZCBmZWF0dXJlcyBvZiBH
b29nbGUgTW9jayB0aGVyZSAtLSBhbmQgYWR2YW5jZSB5b3VyIGxldmVsIG9mIGVuam95bWVudCBh
bmQgdGVzdGluZyBibGlzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJlcXVlbnRs
eUFza2VkUXVlc3Rpb25zLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy9GcmVxdWVudGx5QXNrZWRRdWVz
dGlvbnMubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYWM4M2Y0Yjk4MC4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25z
Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsNjI4ICswLDAgQEAKLQotCi1QbGVhc2Ugc2VuZCB5b3Vy
IHF1ZXN0aW9ucyB0byB0aGUKLVtnb29nbGVtb2NrXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20v
Z3JvdXAvZ29vZ2xlbW9jaykgZGlzY3Vzc2lvbgotZ3JvdXAuIElmIHlvdSBuZWVkIGhlbHAgd2l0
aCBjb21waWxlciBlcnJvcnMsIG1ha2Ugc3VyZSB5b3UgaGF2ZQotdHJpZWQgW0dvb2dsZSBNb2Nr
IERvY3Rvcl0oI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vfb2ZfdGhlc2VfaG9ycmli
bGVfdGVtcGxhdGVfZXJyb3IubWQpIGZpcnN0LgotCi0jIyBXaGVuIEkgY2FsbCBhIG1ldGhvZCBv
biBteSBtb2NrIG9iamVjdCwgdGhlIG1ldGhvZCBmb3IgdGhlIHJlYWwgb2JqZWN0IGlzIGludm9r
ZWQgaW5zdGVhZC4gIFdoYXQncyB0aGUgcHJvYmxlbT8gIyMKLQotSW4gb3JkZXIgZm9yIGEgbWV0
aG9kIHRvIGJlIG1vY2tlZCwgaXQgbXVzdCBiZSBfdmlydHVhbF8sIHVubGVzcyB5b3UgdXNlIHRo
ZSBbaGlnaC1wZXJmIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHRlY2huaXF1ZV0oQ29va0Jvb2subWQj
bW9ja2luZy1ub252aXJ0dWFsLW1ldGhvZHMpLgotCi0jIyBJIHdyb3RlIHNvbWUgbWF0Y2hlcnMu
ICBBZnRlciBJIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlIE1vY2ssIHRoZXkg
bm8gbG9uZ2VyIGNvbXBpbGUuICBXaGF0J3MgZ29pbmcgb24/ICMjCi0KLUFmdGVyIHZlcnNpb24g
MS40LjAgb2YgR29vZ2xlIE1vY2sgd2FzIHJlbGVhc2VkLCB3ZSBoYWQgYW4gaWRlYSBvbiBob3cK
LXRvIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIG1hdGNoZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGlu
Zm9ybWF0aXZlCi1tZXNzYWdlcyBlZmZpY2llbnRseS4gIFdlIGV4cGVyaW1lbnRlZCB3aXRoIHRo
aXMgaWRlYSBhbmQgbGlrZWQgd2hhdAotd2Ugc2F3LiAgVGhlcmVmb3JlIHdlIGRlY2lkZWQgdG8g
aW1wbGVtZW50IGl0LgotCi1VbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRoYXQgaWYgeW91IGhh
dmUgZGVmaW5lZCB5b3VyIG93biBtYXRjaGVycwotYnkgaW1wbGVtZW50aW5nIGBNYXRjaGVySW50
ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYCwKLXlvdXIgZGVmaW5p
dGlvbnMgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIE1hdGNoZXJzIGRlZmluZWQgdXNpbmcgdGhl
Ci1gTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgYXJlIG5vdCBhZmZlY3RlZC4KLQotU29ycnkg
Zm9yIHRoZSBoYXNzbGUgaWYgeW91ciBtYXRjaGVycyBhcmUgYWZmZWN0ZWQuICBXZSBiZWxpZXZl
IGl0J3MKLWluIGV2ZXJ5b25lJ3MgbG9uZy10ZXJtIGludGVyZXN0IHRvIG1ha2UgdGhpcyBjaGFu
Z2Ugc29vbmVyIHRoYW4KLWxhdGVyLiAgRm9ydHVuYXRlbHksIGl0J3MgdXN1YWxseSBub3QgaGFy
ZCB0byBtaWdyYXRlIGFuIGV4aXN0aW5nCi1tYXRjaGVyIHRvIHRoZSBuZXcgQVBJLiAgSGVyZSdz
IHdoYXQgeW91IG5lZWQgdG8gZG86Ci0KLUlmIHlvdSB3cm90ZSB5b3VyIG1hdGNoZXIgbGlrZSB0
aGlzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdp
dGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJ
bnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVy
SW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBNYXRj
aGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBt
YXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19Owot
YGBgCi0KLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSBpdCB0bzoKLWBgYAotLy8gTmV3IG1hdGNoZXIg
ZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1
bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNo
ZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1h
dGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1Owot
ICB9Ci0gIC4uLgotfTsKLWBgYAotKGkuZS4gcmVuYW1lIGBNYXRjaGVzKClgIHRvIGBNYXRjaEFu
ZEV4cGxhaW4oKWAgYW5kIGdpdmUgaXQgYSBzZWNvbmQKLWFyZ3VtZW50IG9mIHR5cGUgYE1hdGNo
UmVzdWx0TGlzdGVuZXIqYC4pCi0KLUlmIHlvdSB3ZXJlIGFsc28gdXNpbmcgYEV4cGxhaW5NYXRj
aFJlc3VsdFRvKClgIHRvIGltcHJvdmUgdGhlIG1hdGNoZXIKLW1lc3NhZ2U6Ci1gYGAKLS8vIE9s
ZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGFzdGVzdAot
Ly8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4K
LWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlw
ZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1
ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJl
dHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRXhwbGFpbk1h
dGNoUmVzdWx0VG8oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgLy8gUHJpbnRzIHNvbWUgaGVs
cGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gICAgLy8gYSB1c2VyIHVuZGVyc3RhbmQg
d2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gpLgotICAgICpvcyA8PCAidGhlIEZv
byBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOwotICB9Ci0gIC4uLgotfTsKLWBgYAot
Ci15b3Ugc2hvdWxkIG1vdmUgdGhlIGxvZ2ljIG9mIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBp
bnRvCi1gTWF0Y2hBbmRFeHBsYWluKClgLCB1c2luZyB0aGUgYE1hdGNoUmVzdWx0TGlzdGVuZXJg
IGFyZ3VtZW50IHdoZXJlCi10aGUgYDo6c3RkOjpvc3RyZWFtYCB3YXMgdXNlZDoKLWBgYAotLy8g
TmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUg
TW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGlu
Zzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICAqbGlzdGVuZXIgPDwgInRo
ZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRGb28oKTsKLSAgICByZXR1cm4gdmFsdWUu
R2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotCi1JZiB5b3VyIG1hdGNoZXIgaXMg
ZGVmaW5lZCB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYDoKLWBgYAotLy8gT2xkIG1h
dGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXRlc3QKLS8vIEdv
b2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotLi4u
Ci1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaGVz
KE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRj
aGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4u
LiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLXlv
dSBzaG91bGQgcmVuYW1lIHRoZSBgTWF0Y2hlcygpYCBtZXRob2QgdG8gYE1hdGNoQW5kRXhwbGFp
bigpYCBhbmQKLWFkZCBhIGBNYXRjaFJlc3VsdExpc3RlbmVyKmAgYXJndW1lbnQgKHRoZSBzYW1l
IGFzIHdoYXQgeW91IG5lZWQgdG8gZG8KLWZvciBtYXRjaGVycyBkZWZpbmVkIGJ5IGltcGxlbWVu
dGluZyBgTWF0Y2hlckludGVyZmFjZWApOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5n
OjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExp
c3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwot
ICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVy
KCkpIC4uLgotYGBgCi0KLUlmIHlvdXIgcG9seW1vcnBoaWMgbWF0Y2hlciB1c2VzIGBFeHBsYWlu
TWF0Y2hSZXN1bHRUbygpYCBmb3IgYmV0dGVyCi1mYWlsdXJlIG1lc3NhZ2VzOgotYGBgCi0vLyBP
bGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAot
Ly8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7
Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1h
dGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVl
IG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19
Owotdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhjb25zdCBNeUdyZWF0TWF0Y2hlciYgbWF0Y2hl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgLy8gUHJpbnRzIHNvbWUgaGVs
cGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gIC8vIGEgdXNlciB1bmRlcnN0YW5kIHdo
eSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1hdGNoKS4KLSAgKm9zIDw8ICJ0aGUgQmFyIHBy
b3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7Ci19Ci0uLi4gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KLWBgYAotCi15b3UnbGwgbmVlZCB0byBtb3ZlIHRo
ZSBsb2dpYyBpbnNpZGUgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvCi1gTWF0Y2hBbmRFeHBs
YWluKClgOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0
aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNN
YXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFz
cyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxh
aW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRj
aGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEJhciBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdl
dEJhcigpOwotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsK
LS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0K
LUZvciBtb3JlIGluZm9ybWF0aW9uLCB5b3UgY2FuIHJlYWQgdGhlc2UKLVt0d29dKENvb2tCb29r
Lm1kI3dyaXRpbmctbmV3LW1vbm9tb3JwaGljLW1hdGNoZXJzKQotW3JlY2lwZXNdKENvb2tCb29r
Lm1kI3dyaXRpbmctbmV3LXBvbHltb3JwaGljLW1hdGNoZXJzKQotZnJvbSB0aGUgY29va2Jvb2su
ICBBcyBhbHdheXMsIHlvdQotYXJlIHdlbGNvbWUgdG8gcG9zdCBxdWVzdGlvbnMgb24gYGdvb2ds
ZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYgeW91Ci1uZWVkIGFueSBoZWxwLgotCi0jIyBXaGVu
IHVzaW5nIEdvb2dsZSBNb2NrLCBkbyBJIGhhdmUgdG8gdXNlIEdvb2dsZSBUZXN0IGFzIHRoZSB0
ZXN0aW5nIGZyYW1ld29yaz8gIEkgaGF2ZSBteSBmYXZvcml0ZSB0ZXN0aW5nIGZyYW1ld29yayBh
bmQgZG9uJ3Qgd2FudCB0byBzd2l0Y2guICMjCi0KLUdvb2dsZSBNb2NrIHdvcmtzIG91dCBvZiB0
aGUgYm94IHdpdGggR29vZ2xlIFRlc3QuICBIb3dldmVyLCBpdCdzIGVhc3kKLXRvIGNvbmZpZ3Vy
ZSBpdCB0byB3b3JrIHdpdGggYW55IHRlc3RpbmcgZnJhbWV3b3JrIG9mIHlvdXIgY2hvaWNlLgot
W0hlcmVdKEZvckR1bW1pZXMubWQjdXNpbmctZ29vZ2xlLW1vY2std2l0aC1hbnktdGVzdGluZy1m
cmFtZXdvcmspIGlzIGhvdy4KLQotIyMgSG93IGFtIEkgc3VwcG9zZWQgdG8gbWFrZSBzZW5zZSBv
ZiB0aGVzZSBob3JyaWJsZSB0ZW1wbGF0ZSBlcnJvcnM/ICMjCi0KLUlmIHlvdSBhcmUgY29uZnVz
ZWQgYnkgdGhlIGNvbXBpbGVyIGVycm9ycyBnY2MgdGhyZXcgYXQgeW91LAotdHJ5IGNvbnN1bHRp
bmcgdGhlIF9Hb29nbGUgTW9jayBEb2N0b3JfIHRvb2wgZmlyc3QuICBXaGF0IGl0IGRvZXMgaXMg
dG8KLXNjYW4gc3RkaW4gZm9yIGdjYyBlcnJvciBtZXNzYWdlcywgYW5kIHNwaXQgb3V0IGRpYWdu
b3NlcyBvbiB0aGUKLXByb2JsZW1zICh3ZSBjYWxsIHRoZW0gZGlzZWFzZXMpIHlvdXIgY29kZSBo
YXMuCi0KLVRvICJpbnN0YWxsIiwgcnVuIGNvbW1hbmQ6Ci1gYGAKLWFsaWFzIGdtZD0nPHBhdGgg
dG8gZ29vZ2xlbW9jaz4vc2NyaXB0cy9nbW9ja19kb2N0b3IucHknCi1gYGAKLQotVG8gdXNlIGl0
LCBkbzoKLWBgYAotPHlvdXItZmF2b3JpdGUtYnVpbGQtY29tbWFuZD4gPHlvdXItdGVzdD4gMj4m
MSB8IGdtZAotYGBgCi0KLUZvciBleGFtcGxlOgotYGBgCi1tYWtlIG15X3Rlc3QgMj4mMSB8IGdt
ZAotYGBgCi0KLU9yIHlvdSBjYW4gcnVuIGBnbWRgIGFuZCBjb3B5LW4tcGFzdGUgZ2NjJ3MgZXJy
b3IgbWVzc2FnZXMgdG8gaXQuCi0KLSMjIENhbiBJIG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbj8g
IyMKLQotWW91IGNhbm5vdCBtb2NrIGEgdmFyaWFkaWMgZnVuY3Rpb24gKGkuZS4gYSBmdW5jdGlv
biB0YWtpbmcgZWxsaXBzaXMKLShgLi4uYCkgYXJndW1lbnRzKSBkaXJlY3RseSBpbiBHb29nbGUg
TW9jay4KLQotVGhlIHByb2JsZW0gaXMgdGhhdCBpbiBnZW5lcmFsLCB0aGVyZSBpcyBfbm8gd2F5
XyBmb3IgYSBtb2NrIG9iamVjdCB0bwota25vdyBob3cgbWFueSBhcmd1bWVudHMgYXJlIHBhc3Nl
ZCB0byB0aGUgdmFyaWFkaWMgbWV0aG9kLCBhbmQgd2hhdAotdGhlIGFyZ3VtZW50cycgdHlwZXMg
YXJlLiAgT25seSB0aGUgX2F1dGhvciBvZiB0aGUgYmFzZSBjbGFzc18ga25vd3MKLXRoZSBwcm90
b2NvbCwgYW5kIHdlIGNhbm5vdCBsb29rIGludG8gaGlzIGhlYWQuCi0KLVRoZXJlZm9yZSwgdG8g
bW9jayBzdWNoIGEgZnVuY3Rpb24sIHRoZSBfdXNlcl8gbXVzdCB0ZWFjaCB0aGUgbW9jawotb2Jq
ZWN0IGhvdyB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aGVpciB0
eXBlcy4gIE9uZQotd2F5IHRvIGRvIGl0IGlzIHRvIHByb3ZpZGUgb3ZlcmxvYWRlZCB2ZXJzaW9u
cyBvZiB0aGUgZnVuY3Rpb24uCi0KLUVsbGlwc2lzIGFyZ3VtZW50cyBhcmUgaW5oZXJpdGVkIGZy
b20gQyBhbmQgbm90IHJlYWxseSBhIEMrKyBmZWF0dXJlLgotVGhleSBhcmUgdW5zYWZlIHRvIHVz
ZSBhbmQgZG9uJ3Qgd29yayB3aXRoIGFyZ3VtZW50cyB0aGF0IGhhdmUKLWNvbnN0cnVjdG9ycyBv
ciBkZXN0cnVjdG9ycy4gIFRoZXJlZm9yZSB3ZSByZWNvbW1lbmQgdG8gYXZvaWQgdGhlbSBpbgot
QysrIGFzIG11Y2ggYXMgcG9zc2libGUuCi0KLSMjIE1TVkMgZ2l2ZXMgbWUgd2FybmluZyBDNDMw
MSBvciBDNDM3MyB3aGVuIEkgZGVmaW5lIGEgbW9jayBtZXRob2Qgd2l0aCBhIGNvbnN0IHBhcmFt
ZXRlci4gIFdoeT8gIyMKLQotSWYgeW91IGNvbXBpbGUgdGhpcyB1c2luZyBNaWNyb3NvZnQgVmlz
dWFsIEMrKyAyMDA1IFNQMToKLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9p
ZCBCYXIoY29uc3QgaW50IGkpID0gMDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9v
IHsKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShCYXIsIHZvaWQoY29uc3QgaW50IGkpKTsKLX07Ci1g
YGAKLVlvdSBtYXkgZ2V0IHRoZSBmb2xsb3dpbmcgd2FybmluZzoKLWBgYAotd2FybmluZyBDNDMw
MTogJ01vY2tGb286OkJhcic6IG92ZXJyaWRpbmcgdmlydHVhbCBmdW5jdGlvbiBvbmx5IGRpZmZl
cnMgZnJvbSAnRm9vOjpCYXInIGJ5IGNvbnN0L3ZvbGF0aWxlIHF1YWxpZmllcgotYGBgCi0KLVRo
aXMgaXMgYSBNU1ZDIGJ1Zy4gIFRoZSBzYW1lIGNvZGUgY29tcGlsZXMgZmluZSB3aXRoIGdjYyAs
Zm9yCi1leGFtcGxlLiAgSWYgeW91IHVzZSBWaXN1YWwgQysrIDIwMDggU1AxLCB5b3Ugd291bGQg
Z2V0IHRoZSB3YXJuaW5nOgotYGBgCi13YXJuaW5nIEM0MzczOiAnTW9ja0Zvbzo6QmFyJzogdmly
dHVhbCBmdW5jdGlvbiBvdmVycmlkZXMgJ0Zvbzo6QmFyJywgcHJldmlvdXMgdmVyc2lvbnMgb2Yg
dGhlIGNvbXBpbGVyIGRpZCBub3Qgb3ZlcnJpZGUgd2hlbiBwYXJhbWV0ZXJzIG9ubHkgZGlmZmVy
ZWQgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVycwotYGBgCi0KLUluIEMrKywgaWYgeW91IF9k
ZWNsYXJlXyBhIGZ1bmN0aW9uIHdpdGggYSBgY29uc3RgIHBhcmFtZXRlciwgdGhlCi1gY29uc3Rg
IG1vZGlmaWVyIGlzIF9pZ25vcmVkXy4gIFRoZXJlZm9yZSwgdGhlIGBGb29gIGJhc2UgY2xhc3Mg
YWJvdmUKLWlzIGVxdWl2YWxlbnQgdG86Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0
dWFsIHZvaWQgQmFyKGludCBpKSA9IDA7ICAvLyBpbnQgb3IgY29uc3QgaW50PyAgTWFrZXMgbm8g
ZGlmZmVyZW5jZS4KLX07Ci1gYGAKLQotSW4gZmFjdCwgeW91IGNhbiBfZGVjbGFyZV8gQmFyKCkg
d2l0aCBhbiBgaW50YCBwYXJhbWV0ZXIsIGFuZCBfZGVmaW5lXwotaXQgd2l0aCBhIGBjb25zdCBp
bnRgIHBhcmFtZXRlci4gIFRoZSBjb21waWxlciB3aWxsIHN0aWxsIG1hdGNoIHRoZW0KLXVwLgot
Ci1TaW5jZSBtYWtpbmcgYSBwYXJhbWV0ZXIgYGNvbnN0YCBpcyBtZWFuaW5nbGVzcyBpbiB0aGUg
bWV0aG9kCi1fZGVjbGFyYXRpb25fLCB3ZSByZWNvbW1lbmQgdG8gcmVtb3ZlIGl0IGluIGJvdGgg
YEZvb2AgYW5kIGBNb2NrRm9vYC4KLVRoYXQgc2hvdWxkIHdvcmthcm91bmQgdGhlIFZDIGJ1Zy4K
LQotTm90ZSB0aGF0IHdlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBfdG9wLWxldmVsXyBgY29uc3Rg
IG1vZGlmaWVyIGhlcmUuCi1JZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIHBhc3NlZCBieSBw
b2ludGVyIG9yIHJlZmVyZW5jZSwgZGVjbGFyaW5nCi10aGUgX3BvaW50ZWVfIG9yIF9yZWZlcmVl
XyBhcyBgY29uc3RgIGlzIHN0aWxsIG1lYW5pbmdmdWwuICBGb3IKLWV4YW1wbGUsIHRoZSBmb2xs
b3dpbmcgdHdvIGRlY2xhcmF0aW9ucyBhcmUgX25vdF8gZXF1aXZhbGVudDoKLWBgYAotdm9pZCBC
YXIoaW50KiBwKTsgICAgICAgIC8vIE5laXRoZXIgcCBub3IgKnAgaXMgY29uc3QuCi12b2lkIEJh
cihjb25zdCBpbnQqIHApOyAgLy8gcCBpcyBub3QgY29uc3QsIGJ1dCAqcCBpcy4KLWBgYAotCi0j
IyBJIGhhdmUgYSBodWdlIG1vY2sgY2xhc3MsIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBydW5z
IG91dCBvZiBtZW1vcnkgd2hlbiBjb21waWxpbmcgaXQuICBXaGF0IGNhbiBJIGRvPyAjIwotCi1X
ZSd2ZSBub3RpY2VkIHRoYXQgd2hlbiB0aGUgYC9jbHJgIGNvbXBpbGVyIGZsYWcgaXMgdXNlZCwg
VmlzdWFsIEMrKwotdXNlcyA1fjYgdGltZXMgYXMgbXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcg
YSBtb2NrIGNsYXNzLiAgV2Ugc3VnZ2VzdAotdG8gYXZvaWQgYC9jbHJgIHdoZW4gY29tcGlsaW5n
IG5hdGl2ZSBDKysgbW9ja3MuCi0KLSMjIEkgY2FuJ3QgZmlndXJlIG91dCB3aHkgR29vZ2xlIE1v
Y2sgdGhpbmtzIG15IGV4cGVjdGF0aW9ucyBhcmUgbm90IHNhdGlzZmllZC4gIFdoYXQgc2hvdWxk
IEkgZG8/ICMjCi0KLVlvdSBtaWdodCB3YW50IHRvIHJ1biB5b3VyIHRlc3Qgd2l0aAotYC0tZ21v
Y2tfdmVyYm9zZT1pbmZvYC4gIFRoaXMgZmxhZyBsZXRzIEdvb2dsZSBNb2NrIHByaW50IGEgdHJh
Y2UKLW9mIGV2ZXJ5IG1vY2sgZnVuY3Rpb24gY2FsbCBpdCByZWNlaXZlcy4gIEJ5IHN0dWR5aW5n
IHRoZSB0cmFjZSwKLXlvdSdsbCBnYWluIGluc2lnaHRzIG9uIHdoeSB0aGUgZXhwZWN0YXRpb25z
IHlvdSBzZXQgYXJlIG5vdCBtZXQuCi0KLSMjIEhvdyBjYW4gSSBhc3NlcnQgdGhhdCBhIGZ1bmN0
aW9uIGlzIE5FVkVSIGNhbGxlZD8gIyMKLQotYGBgCi1FWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkK
LSAgICAuVGltZXMoMCk7Ci1gYGAKLQotIyMgSSBoYXZlIGEgZmFpbGVkIHRlc3Qgd2hlcmUgR29v
Z2xlIE1vY2sgdGVsbHMgbWUgVFdJQ0UgdGhhdCBhIHBhcnRpY3VsYXIgZXhwZWN0YXRpb24gaXMg
bm90IHNhdGlzZmllZC4gIElzbid0IHRoaXMgcmVkdW5kYW50PyAjIwotCi1XaGVuIEdvb2dsZSBN
b2NrIGRldGVjdHMgYSBmYWlsdXJlLCBpdCBwcmludHMgcmVsZXZhbnQgaW5mb3JtYXRpb24KLSh0
aGUgbW9jayBmdW5jdGlvbiBhcmd1bWVudHMsIHRoZSBzdGF0ZSBvZiByZWxldmFudCBleHBlY3Rh
dGlvbnMsIGFuZAotZXRjKSB0byBoZWxwIHRoZSB1c2VyIGRlYnVnLiAgSWYgYW5vdGhlciBmYWls
dXJlIGlzIGRldGVjdGVkLCBHb29nbGUKLU1vY2sgd2lsbCBkbyB0aGUgc2FtZSwgaW5jbHVkaW5n
IHByaW50aW5nIHRoZSBzdGF0ZSBvZiByZWxldmFudAotZXhwZWN0YXRpb25zLgotCi1Tb21ldGlt
ZXMgYW4gZXhwZWN0YXRpb24ncyBzdGF0ZSBkaWRuJ3QgY2hhbmdlIGJldHdlZW4gdHdvIGZhaWx1
cmVzLAotYW5kIHlvdSdsbCBzZWUgdGhlIHNhbWUgZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRlIHR3
aWNlLiAgVGhleSBhcmUKLWhvd2V2ZXIgX25vdF8gcmVkdW5kYW50LCBhcyB0aGV5IHJlZmVyIHRv
IF9kaWZmZXJlbnQgcG9pbnRzIGluIHRpbWVfLgotVGhlIGZhY3QgdGhleSBhcmUgdGhlIHNhbWUg
X2lzXyBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbi4KLQotIyMgSSBnZXQgYSBoZWFwIGNoZWNrIGZh
aWx1cmUgd2hlbiB1c2luZyBhIG1vY2sgb2JqZWN0LCBidXQgdXNpbmcgYSByZWFsIG9iamVjdCBp
cyBmaW5lLiAgV2hhdCBjYW4gYmUgd3Jvbmc/ICMjCi0KLURvZXMgdGhlIGNsYXNzIChob3BlZnVs
bHkgYSBwdXJlIGludGVyZmFjZSkgeW91IGFyZSBtb2NraW5nIGhhdmUgYQotdmlydHVhbCBkZXN0
cnVjdG9yPwotCi1XaGVuZXZlciB5b3UgZGVyaXZlIGZyb20gYSBiYXNlIGNsYXNzLCBtYWtlIHN1
cmUgaXRzIGRlc3RydWN0b3IgaXMKLXZpcnR1YWwuICBPdGhlcndpc2UgQmFkIFRoaW5ncyB3aWxs
IGhhcHBlbi4gIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcKLWNvZGU6Ci0KLWBgYAotY2xhc3MgQmFz
ZSB7Ci0gcHVibGljOgotICAvLyBOb3QgdmlydHVhbCwgYnV0IHNob3VsZCBiZS4KLSAgfkJhc2Uo
KSB7IC4uLiB9Ci0gIC4uLgotfTsKLQotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBw
dWJsaWM6Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLS4u
LgotICBCYXNlKiBwID0gbmV3IERlcml2ZWQ7Ci0gIC4uLgotICBkZWxldGUgcDsgIC8vIFN1cnBy
aXNlISB+QmFzZSgpIHdpbGwgYmUgY2FsbGVkLCBidXQgfkRlcml2ZWQoKSB3aWxsIG5vdAotICAg
ICAgICAgICAgIC8vIC0gdmFsdWVfIGlzIGxlYWtlZC4KLWBgYAotCi1CeSBjaGFuZ2luZyBgfkJh
c2UoKWAgdG8gdmlydHVhbCwgYH5EZXJpdmVkKClgIHdpbGwgYmUgY29ycmVjdGx5Ci1jYWxsZWQg
d2hlbiBgZGVsZXRlIHBgIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGhlYXAgY2hlY2tlcgotd2lsbCBi
ZSBoYXBweS4KLQotIyMgVGhlICJuZXdlciBleHBlY3RhdGlvbnMgb3ZlcnJpZGUgb2xkZXIgb25l
cyIgcnVsZSBtYWtlcyB3cml0aW5nIGV4cGVjdGF0aW9ucyBhd2t3YXJkLiAgV2h5IGRvZXMgR29v
Z2xlIE1vY2sgZG8gdGhhdD8gIyMKLQotV2hlbiBwZW9wbGUgY29tcGxhaW4gYWJvdXQgdGhpcywg
b2Z0ZW4gdGhleSBhcmUgcmVmZXJyaW5nIHRvIGNvZGUgbGlrZToKLQotYGBgCi0vLyBmb28uQmFy
KCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCBy
ZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgSG93ZXZlciwgSSBoYXZlIHRvIHdyaXRlIHRo
ZSBleHBlY3RhdGlvbnMgaW4gdGhlCi0vLyByZXZlcnNlIG9yZGVyLiAgVGhpcyBzdWNrcyBiaWcg
dGltZSEhIQotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIp
KQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQot
ICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBg
YAotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkgZGlkbid0IHBpY2sgdGhlICoqYmVzdCoqIHdh
eSB0byBleHByZXNzIHRoZSB0ZXN0J3MKLWludGVudC4KLQotQnkgZGVmYXVsdCwgZXhwZWN0YXRp
b25zIGRvbid0IGhhdmUgdG8gYmUgbWF0Y2hlZCBpbiBfYW55XyBwYXJ0aWN1bGFyCi1vcmRlci4g
IElmIHlvdSB3YW50IHRoZW0gdG8gbWF0Y2ggaW4gYSBjZXJ0YWluIG9yZGVyLCB5b3UgbmVlZCB0
byBiZQotZXhwbGljaXQuICBUaGlzIGlzIEdvb2dsZSBNb2NrJ3MgKGFuZCBqTW9jaydzKSBmdW5k
YW1lbnRhbCBwaGlsb3NvcGh5OiBpdCdzCi1lYXN5IHRvIGFjY2lkZW50YWxseSBvdmVyLXNwZWNp
ZnkgeW91ciB0ZXN0cywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdAotaGFyZGVyIHRvIGRvIHNvLgot
Ci1UaGVyZSBhcmUgdHdvIGJldHRlciB3YXlzIHRvIHdyaXRlIHRoZSB0ZXN0IHNwZWMuICBZb3Ug
Y291bGQgZWl0aGVyCi1wdXQgdGhlIGV4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZToKLQotYGBgCi0v
LyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRp
bWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgVXNpbmcgYSBzZXF1ZW5jZSwg
d2UgY2FuIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMKLS8vIGluIHRoZWlyIG5hdHVyYWwgb3JkZXIu
Ci17Ci0gIEluU2VxdWVuY2UgczsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAgIC5X
aWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBF
Q1RfQ0FMTChmb28sIEJhcigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSkKLSAgICAgIC5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotb3IgeW91IGNhbiBwdXQgdGhlIHNlcXVl
bmNlIG9mIGFjdGlvbnMgaW4gdGhlIHNhbWUgZXhwZWN0YXRpb246Ci0KLWBgYAotLy8gZm9vLkJh
cigpIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQg
cmV0dXJuCi0vLyAyIHRoZSBzZWNvbmQgdGltZS4KLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0g
ICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1gYGAKLQotQmFjayB0byB0aGUgb3JpZ2luYWwgcXVlc3Rp
b25zOiB3aHkgZG9lcyBHb29nbGUgTW9jayBzZWFyY2ggdGhlCi1leHBlY3RhdGlvbnMgKGFuZCBg
T05fQ0FMTGBzKSBmcm9tIGJhY2sgdG8gZnJvbnQ/ICBCZWNhdXNlIHRoaXMKLWFsbG93cyBhIHVz
ZXIgdG8gc2V0IHVwIGEgbW9jaydzIGJlaGF2aW9yIGZvciB0aGUgY29tbW9uIGNhc2UgZWFybHkK
LShlLmcuIGluIHRoZSBtb2NrJ3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNl
dC11cCBwaGFzZSkKLWFuZCBjdXN0b21pemUgaXQgd2l0aCBtb3JlIHNwZWNpZmljIHJ1bGVzIGxh
dGVyLiAgSWYgR29vZ2xlIE1vY2sKLXNlYXJjaGVzIGZyb20gZnJvbnQgdG8gYmFjaywgdGhpcyB2
ZXJ5IHVzZWZ1bCBwYXR0ZXJuIHdvbid0IGJlCi1wb3NzaWJsZS4KLQotIyMgR29vZ2xlIE1vY2sg
cHJpbnRzIGEgd2FybmluZyB3aGVuIGEgZnVuY3Rpb24gd2l0aG91dCBFWFBFQ1RcX0NBTEwgaXMg
Y2FsbGVkLCBldmVuIGlmIEkgaGF2ZSBzZXQgaXRzIGJlaGF2aW9yIHVzaW5nIE9OXF9DQUxMLiAg
V291bGQgaXQgYmUgcmVhc29uYWJsZSBub3QgdG8gc2hvdyB0aGUgd2FybmluZyBpbiB0aGlzIGNh
c2U/ICMjCi0KLVdoZW4gY2hvb3NpbmcgYmV0d2VlbiBiZWluZyBuZWF0IGFuZCBiZWluZyBzYWZl
LCB3ZSBsZWFuIHRvd2FyZCB0aGUKLWxhdHRlci4gIFNvIHRoZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0
aGluayBpdCdzIGJldHRlciB0byBzaG93IHRoZQotd2FybmluZy4KLQotT2Z0ZW4gcGVvcGxlIHdy
aXRlIGBPTl9DQUxMYHMgaW4gdGhlIG1vY2sgb2JqZWN0J3MKLWNvbnN0cnVjdG9yIG9yIGBTZXRV
cCgpYCwgYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgcmFyZWx5IGNoYW5nZXMgZnJvbQotdGVzdCB0
byB0ZXN0LiAgVGhlbiBpbiB0aGUgdGVzdCBib2R5IHRoZXkgc2V0IHRoZSBleHBlY3RhdGlvbnMs
IHdoaWNoCi1hcmUgb2Z0ZW4gZGlmZmVyZW50IGZvciBlYWNoIHRlc3QuICBIYXZpbmcgYW4gYE9O
X0NBTExgIGluIHRoZSBzZXQtdXAKLXBhcnQgb2YgYSB0ZXN0IGRvZXNuJ3QgbWVhbiB0aGF0IHRo
ZSBjYWxscyBhcmUgZXhwZWN0ZWQuICBJZiB0aGVyZSdzCi1ubyBgRVhQRUNUX0NBTExgIGFuZCB0
aGUgbWV0aG9kIGlzIGNhbGxlZCwgaXQncyBwb3NzaWJseSBhbiBlcnJvci4gIElmCi13ZSBxdWll
dGx5IGxldCB0aGUgY2FsbCBnbyB0aHJvdWdoIHdpdGhvdXQgbm90aWZ5aW5nIHRoZSB1c2VyLCBi
dWdzCi1tYXkgY3JlZXAgaW4gdW5ub3RpY2VkLgotCi1JZiwgaG93ZXZlciwgeW91IGFyZSBzdXJl
IHRoYXQgdGhlIGNhbGxzIGFyZSBPSywgeW91IGNhbiB3cml0ZQotCi1gYGAKLUVYUEVDVF9DQUxM
KGZvbywgQmFyKF8pKQotICAgIC5XaWxsUmVwZWF0ZWRseSguLi4pOwotYGBgCi0KLWluc3RlYWQg
b2YKLQotYGBgCi1PTl9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7
Ci1gYGAKLQotVGhpcyB0ZWxscyBHb29nbGUgTW9jayB0aGF0IHlvdSBkbyBleHBlY3QgdGhlIGNh
bGxzIGFuZCBubyB3YXJuaW5nIHNob3VsZCBiZQotcHJpbnRlZC4KLQotQWxzbywgeW91IGNhbiBj
b250cm9sIHRoZSB2ZXJib3NpdHkgdXNpbmcgdGhlIGAtLWdtb2NrX3ZlcmJvc2VgIGZsYWcuCi1J
ZiB5b3UgZmluZCB0aGUgb3V0cHV0IHRvbyBub2lzeSB3aGVuIGRlYnVnZ2luZywganVzdCBjaG9v
c2UgYSBsZXNzCi12ZXJib3NlIGxldmVsLgotCi0jIyBIb3cgY2FuIEkgZGVsZXRlIHRoZSBtb2Nr
IGZ1bmN0aW9uJ3MgYXJndW1lbnQgaW4gYW4gYWN0aW9uPyAjIwotCi1JZiB5b3UgZmluZCB5b3Vy
c2VsZiBuZWVkaW5nIHRvIHBlcmZvcm0gc29tZSBhY3Rpb24gdGhhdCdzIG5vdAotc3VwcG9ydGVk
IGJ5IEdvb2dsZSBNb2NrIGRpcmVjdGx5LCByZW1lbWJlciB0aGF0IHlvdSBjYW4gZGVmaW5lIHlv
dXIgb3duCi1hY3Rpb25zIHVzaW5nCi1bTWFrZUFjdGlvbigpXShDb29rQm9vay5tZCN3cml0aW5n
LW5ldy1hY3Rpb25zKSBvcgotW01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXShDb29rQm9vay5tZCN3
cml0aW5nX25ld19wb2x5bW9ycGhpY19hY3Rpb25zKSwKLW9yIHlvdSBjYW4gd3JpdGUgYSBzdHVi
IGZ1bmN0aW9uIGFuZCBpbnZva2UgaXQgdXNpbmcKLVtJbnZva2UoKV0oQ29va0Jvb2subWQjdXNp
bmctZnVuY3Rpb25zX21ldGhvZHNfZnVuY3RvcnMpLgotCi0jIyBNT0NLXF9NRVRIT0RuKCkncyBz
ZWNvbmQgYXJndW1lbnQgbG9va3MgZnVubnkuICBXaHkgZG9uJ3QgeW91IHVzZSB0aGUgTU9DS1xf
TUVUSE9EbihNZXRob2QsIHJldHVyblxfdHlwZSwgYXJnXF8xLCAuLi4sIGFyZ1xfbikgc3ludGF4
PyAjIwotCi1XaGF0PyEgIEkgdGhpbmsgaXQncyBiZWF1dGlmdWwuIDotKQotCi1XaGlsZSB3aGlj
aCBzeW50YXggbG9va3MgbW9yZSBuYXR1cmFsIGlzIGEgc3ViamVjdGl2ZSBtYXR0ZXIgdG8gc29t
ZQotZXh0ZW50LCBHb29nbGUgTW9jaydzIHN5bnRheCB3YXMgY2hvc2VuIGZvciBzZXZlcmFsIHBy
YWN0aWNhbCBhZHZhbnRhZ2VzIGl0Ci1oYXMuCi0KLVRyeSB0byBtb2NrIGEgZnVuY3Rpb24gdGhh
dCB0YWtlcyBhIG1hcCBhcyBhbiBhcmd1bWVudDoKLWBgYAotdmlydHVhbCBpbnQgR2V0U2l6ZShj
b25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLVVzaW5nIHRoZSBwcm9wb3Nl
ZCBzeW50YXgsIGl0IHdvdWxkIGJlOgotYGBgCi1NT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50LCBj
b25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLUd1ZXNzIHdoYXQ/ICBZb3Un
bGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgYXMgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0Ci1gY29u
c3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtYCBhcmUgKip0d28qKiwgbm90IG9uZSwgYXJndW1l
bnRzLiBUbyB3b3JrCi1hcm91bmQgdGhpcyB5b3UgY2FuIHVzZSBgdHlwZWRlZmAgdG8gZ2l2ZSB0
aGUgbWFwIHR5cGUgYSBuYW1lLCBidXQKLXRoYXQgZ2V0cyBpbiB0aGUgd2F5IG9mIHlvdXIgd29y
ay4gIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IGF2b2lkcyB0aGlzCi1wcm9ibGVtIGFzIHRoZSBmdW5j
dGlvbidzIGFyZ3VtZW50IHR5cGVzIGFyZSBwcm90ZWN0ZWQgaW5zaWRlIGEgcGFpcgotb2YgcGFy
ZW50aGVzZXM6Ci1gYGAKLS8vIFRoaXMgY29tcGlsZXMgZmluZS4KLU1PQ0tfTUVUSE9EMShHZXRT
aXplLCBpbnQoY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtKSk7Ci1gYGAKLQotWW91IHN0
aWxsIG5lZWQgYSBgdHlwZWRlZmAgaWYgdGhlIHJldHVybiB0eXBlIGNvbnRhaW5zIGFuIHVucHJv
dGVjdGVkCi1jb21tYSwgYnV0IHRoYXQncyBtdWNoIHJhcmVyLgotCi1PdGhlciBhZHZhbnRhZ2Vz
IGluY2x1ZGU6Ci0gIDEuIGBNT0NLX01FVEhPRDEoRm9vLCBpbnQsIGJvb2wpYCBjYW4gbGVhdmUg
YSByZWFkZXIgd29uZGVyIHdoZXRoZXIgdGhlIG1ldGhvZCByZXR1cm5zIGBpbnRgIG9yIGBib29s
YCwgd2hpbGUgdGhlcmUgd29uJ3QgYmUgc3VjaCBjb25mdXNpb24gdXNpbmcgR29vZ2xlIE1vY2sn
cyBzeW50YXguCi0gIDEuIFRoZSB3YXkgR29vZ2xlIE1vY2sgZGVzY3JpYmVzIGEgZnVuY3Rpb24g
dHlwZSBpcyBub3RoaW5nIG5ldywgYWx0aG91Z2ggbWFueSBwZW9wbGUgbWF5IG5vdCBiZSBmYW1p
bGlhciB3aXRoIGl0LiAgVGhlIHNhbWUgc3ludGF4IHdhcyB1c2VkIGluIEMsIGFuZCB0aGUgYGZ1
bmN0aW9uYCBsaWJyYXJ5IGluIGB0cjFgIHVzZXMgdGhpcyBzeW50YXggZXh0ZW5zaXZlbHkuICBT
aW5jZSBgdHIxYCB3aWxsIGJlY29tZSBhIHBhcnQgb2YgdGhlIG5ldyB2ZXJzaW9uIG9mIFNUTCwg
d2UgZmVlbCB2ZXJ5IGNvbWZvcnRhYmxlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBpdC4KLSAgMS4g
VGhlIGZ1bmN0aW9uIHR5cGUgc3ludGF4IGlzIGFsc28gdXNlZCBpbiBvdGhlciBwYXJ0cyBvZiBH
b29nbGUgTW9jaydzIEFQSSAoZS5nLiB0aGUgYWN0aW9uIGludGVyZmFjZSkgaW4gb3JkZXIgdG8g
bWFrZSB0aGUgaW1wbGVtZW50YXRpb24gdHJhY3RhYmxlLiBBIHVzZXIgbmVlZHMgdG8gbGVhcm4g
aXQgYW55d2F5IGluIG9yZGVyIHRvIHV0aWxpemUgR29vZ2xlIE1vY2sncyBtb3JlIGFkdmFuY2Vk
IGZlYXR1cmVzLiAgV2UnZCBhcyB3ZWxsIHN0aWNrIHRvIHRoZSBzYW1lIHN5bnRheCBpbiBgTU9D
S19NRVRIT0QqYCEKLQotIyMgTXkgY29kZSBjYWxscyBhIHN0YXRpYy9nbG9iYWwgZnVuY3Rpb24u
ICBDYW4gSSBtb2NrIGl0PyAjIwotCi1Zb3UgY2FuLCBidXQgeW91IG5lZWQgdG8gbWFrZSBzb21l
IGNoYW5nZXMuCi0KLUluIGdlbmVyYWwsIGlmIHlvdSBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8g
bW9jayBhIHN0YXRpYyBmdW5jdGlvbiwKLWl0J3MgYSBzaWduIHRoYXQgeW91ciBtb2R1bGVzIGFy
ZSB0b28gdGlnaHRseSBjb3VwbGVkIChhbmQgbGVzcwotZmxleGlibGUsIGxlc3MgcmV1c2FibGUs
IGxlc3MgdGVzdGFibGUsIGV0YykuICBZb3UgYXJlIHByb2JhYmx5IGJldHRlcgotb2ZmIGRlZmlu
aW5nIGEgc21hbGwgaW50ZXJmYWNlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiB0aHJvdWdoIHRoYXQK
LWludGVyZmFjZSwgd2hpY2ggdGhlbiBjYW4gYmUgZWFzaWx5IG1vY2tlZC4gIEl0J3MgYSBiaXQg
b2Ygd29yawotaW5pdGlhbGx5LCBidXQgdXN1YWxseSBwYXlzIGZvciBpdHNlbGYgcXVpY2tseS4K
LQotVGhpcyBHb29nbGUgVGVzdGluZyBCbG9nCi1bcG9zdF0oaHR0cDovL2dvb2dsZXRlc3Rpbmcu
YmxvZ3Nwb3QuY29tLzIwMDgvMDYvZGVmZWF0LXN0YXRpYy1jbGluZy5odG1sKQotc2F5cyBpdCBl
eGNlbGxlbnRseS4gIENoZWNrIGl0IG91dC4KLQotIyMgTXkgbW9jayBvYmplY3QgbmVlZHMgdG8g
ZG8gY29tcGxleCBzdHVmZi4gIEl0J3MgYSBsb3Qgb2YgcGFpbiB0byBzcGVjaWZ5IHRoZSBhY3Rp
b25zLiAgR29vZ2xlIE1vY2sgc3Vja3MhICMjCi0KLUkga25vdyBpdCdzIG5vdCBhIHF1ZXN0aW9u
LCBidXQgeW91IGdldCBhbiBhbnN3ZXIgZm9yIGZyZWUgYW55IHdheS4gOi0pCi0KLVdpdGggR29v
Z2xlIE1vY2ssIHlvdSBjYW4gY3JlYXRlIG1vY2tzIGluIEMrKyBlYXNpbHkuICBBbmQgcGVvcGxl
IG1pZ2h0IGJlCi10ZW1wdGVkIHRvIHVzZSB0aGVtIGV2ZXJ5d2hlcmUuIFNvbWV0aW1lcyB0aGV5
IHdvcmsgZ3JlYXQsIGFuZAotc29tZXRpbWVzIHlvdSBtYXkgZmluZCB0aGVtLCB3ZWxsLCBhIHBh
aW4gdG8gdXNlLiBTbywgd2hhdCdzIHdyb25nIGluCi10aGUgbGF0dGVyIGNhc2U/Ci0KLVdoZW4g
eW91IHdyaXRlIGEgdGVzdCB3aXRob3V0IHVzaW5nIG1vY2tzLCB5b3UgZXhlcmNpc2UgdGhlIGNv
ZGUgYW5kCi1hc3NlcnQgdGhhdCBpdCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlIG9yIHRoYXQg
dGhlIHN5c3RlbSBpcyBpbiBhbgotZXhwZWN0ZWQgc3RhdGUuICBUaGlzIGlzIHNvbWV0aW1lcyBj
YWxsZWQgInN0YXRlLWJhc2VkIHRlc3RpbmciLgotCi1Nb2NrcyBhcmUgZ3JlYXQgZm9yIHdoYXQg
c29tZSBjYWxsICJpbnRlcmFjdGlvbi1iYXNlZCIgdGVzdGluZzoKLWluc3RlYWQgb2YgY2hlY2tp
bmcgdGhlIHN5c3RlbSBzdGF0ZSBhdCB0aGUgdmVyeSBlbmQsIG1vY2sgb2JqZWN0cwotdmVyaWZ5
IHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aGUgcmlnaHQgd2F5IGFuZCByZXBvcnQgYW4gZXJyb3Ig
YXMgc29vbgotYXMgaXQgYXJpc2VzLCBnaXZpbmcgeW91IGEgaGFuZGxlIG9uIHRoZSBwcmVjaXNl
IGNvbnRleHQgaW4gd2hpY2ggdGhlCi1lcnJvciB3YXMgdHJpZ2dlcmVkLiAgVGhpcyBpcyBvZnRl
biBtb3JlIGVmZmVjdGl2ZSBhbmQgZWNvbm9taWNhbCB0bwotZG8gdGhhbiBzdGF0ZS1iYXNlZCB0
ZXN0aW5nLgotCi1JZiB5b3UgYXJlIGRvaW5nIHN0YXRlLWJhc2VkIHRlc3RpbmcgYW5kIHVzaW5n
IGEgdGVzdCBkb3VibGUganVzdCB0bwotc2ltdWxhdGUgdGhlIHJlYWwgb2JqZWN0LCB5b3UgYXJl
IHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgYSBmYWtlLgotVXNpbmcgYSBtb2NrIGluIHRoaXMg
Y2FzZSBjYXVzZXMgcGFpbiwgYXMgaXQncyBub3QgYSBzdHJvbmcgcG9pbnQgZm9yCi1tb2NrcyB0
byBwZXJmb3JtIGNvbXBsZXggYWN0aW9ucy4gIElmIHlvdSBleHBlcmllbmNlIHRoaXMgYW5kIHRo
aW5rCi10aGF0IG1vY2tzIHN1Y2ssIHlvdSBhcmUganVzdCBub3QgdXNpbmcgdGhlIHJpZ2h0IHRv
b2wgZm9yIHlvdXIKLXByb2JsZW0uIE9yLCB5b3UgbWlnaHQgYmUgdHJ5aW5nIHRvIHNvbHZlIHRo
ZSB3cm9uZyBwcm9ibGVtLiA6LSkKLQotIyMgSSBnb3QgYSB3YXJuaW5nICJVbmludGVyZXN0aW5n
IGZ1bmN0aW9uIGNhbGwgZW5jb3VudGVyZWQgLSBkZWZhdWx0IGFjdGlvbiB0YWtlbi4uIiAgU2hv
dWxkIEkgcGFuaWM/ICMjCi0KLUJ5IGFsbCBtZWFucywgTk8hICBJdCdzIGp1c3QgYW4gRllJLgot
Ci1XaGF0IGl0IG1lYW5zIGlzIHRoYXQgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uLCB5b3UgaGF2
ZW4ndCBzZXQgYW55Ci1leHBlY3RhdGlvbnMgb24gaXQgKGJ5IEdvb2dsZSBNb2NrJ3MgcnVsZSB0
aGlzIG1lYW5zIHRoYXQgeW91IGFyZSBub3QKLWludGVyZXN0ZWQgaW4gY2FsbHMgdG8gdGhpcyBm
dW5jdGlvbiBhbmQgdGhlcmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQKLWFueSBudW1iZXIgb2YgdGlt
ZXMpLCBhbmQgaXQgaXMgY2FsbGVkLiAgVGhhdCdzIE9LIC0geW91IGRpZG4ndCBzYXkKLWl0J3Mg
bm90IE9LIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIQotCi1XaGF0IGlmIHlvdSBhY3R1YWxseSBtZWFu
dCB0byBkaXNhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0Ci1mb3Jnb3QgdG8g
d3JpdGUgYEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpLlRpbWVzKDApYD8gIFdoaWxlCi1vbmUgY2Fu
IGFyZ3VlIHRoYXQgaXQncyB0aGUgdXNlcidzIGZhdWx0LCBHb29nbGUgTW9jayB0cmllcyB0byBi
ZSBuaWNlIGFuZAotcHJpbnRzIHlvdSBhIG5vdGUuCi0KLVNvLCB3aGVuIHlvdSBzZWUgdGhlIG1l
c3NhZ2UgYW5kIGJlbGlldmUgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55Ci11bmludGVyZXN0
aW5nIGNhbGxzLCB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHdoYXQncyBnb2luZyBvbi4gIFRvIG1h
a2UKLXlvdXIgbGlmZSBlYXNpZXIsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUgZnVuY3Rpb24gbmFt
ZSBhbmQgYXJndW1lbnRzCi13aGVuIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBlbmNvdW50ZXJl
ZC4KLQotIyMgSSB3YW50IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24uICBTaG91bGQgSSB1c2Ug
SW52b2tlKCkgb3IgaW1wbGVtZW50IHRoZSBhY3Rpb24gaW50ZXJmYWNlPyAjIwotCi1FaXRoZXIg
d2F5IGlzIGZpbmUgLSB5b3Ugd2FudCB0byBjaG9vc2UgdGhlIG9uZSB0aGF0J3MgbW9yZSBjb252
ZW5pZW50Ci1mb3IgeW91ciBjaXJjdW1zdGFuY2UuCi0KLVVzdWFsbHksIGlmIHlvdXIgYWN0aW9u
IGlzIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSwgZGVmaW5pbmcgaXQKLXVzaW5nIGBJ
bnZva2UoKWAgc2hvdWxkIGJlIGVhc2llcjsgaWYgeW91ciBhY3Rpb24gY2FuIGJlIHVzZWQgaW4K
LWZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4gaWYgeW91IGFyZSBkZWZpbmluZwot
YFJldHVybih2YWx1ZSlgKSwgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCBpcwotZWFzaWVzdC4g
IFNvbWV0aW1lcyB5b3Ugd2FudCBwcmVjaXNlIGNvbnRyb2wgb24gd2hhdCB0eXBlcyBvZgotZnVu
Y3Rpb25zIHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQgaW4sIGFuZCBpbXBsZW1lbnRpbmcKLWBBY3Rp
b25JbnRlcmZhY2VgIGlzIHRoZSB3YXkgdG8gZ28gaGVyZS4gU2VlIHRoZSBpbXBsZW1lbnRhdGlv
biBvZgotYFJldHVybigpYCBpbiBgaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25zLmhgIGZvciBh
biBleGFtcGxlLgotCi0jIyBJJ20gdXNpbmcgdGhlIHNldC1hcmd1bWVudC1wb2ludGVlIGFjdGlv
biwgYW5kIHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImNvbmZsaWN0aW5nIHJldHVybiB0
eXBlIHNwZWNpZmllZCIuICBXaGF0IGRvZXMgaXQgbWVhbj8gIyMKLQotWW91IGdvdCB0aGlzIGVy
cm9yIGFzIEdvb2dsZSBNb2NrIGhhcyBubyBpZGVhIHdoYXQgdmFsdWUgaXQgc2hvdWxkIHJldHVy
bgotd2hlbiB0aGUgbW9jayBtZXRob2QgaXMgY2FsbGVkLiAgYFNldEFyZ1BvaW50ZWUoKWAgc2F5
cyB3aGF0IHRoZQotc2lkZSBlZmZlY3QgaXMsIGJ1dCBkb2Vzbid0IHNheSB3aGF0IHRoZSByZXR1
cm4gdmFsdWUgc2hvdWxkIGJlLiAgWW91Ci1uZWVkIGBEb0FsbCgpYCB0byBjaGFpbiBhIGBTZXRB
cmdQb2ludGVlKClgIHdpdGggYSBgUmV0dXJuKClgLgotCi1TZWUgdGhpcyBbcmVjaXBlXShDb29r
Qm9vay5tZCNtb2NraW5nX3NpZGVfZWZmZWN0cykgZm9yIG1vcmUgZGV0YWlscyBhbmQgYW4gZXhh
bXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBGQVEhICMjCi0KLUlmIHlv
dSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRo
ZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6Ci0KLSAgMS4gcmVhZCBv
dGhlciBbZG9jdW1lbnRhdGlvbl0oRG9jdW1lbnRhdGlvbi5tZCksCi0gIDEuIHNlYXJjaCB0aGUg
bWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29v
Z2xlbW9jay90b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBz
LmNvbV0obWFpbHRvOmdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNvbWVvbmUgd2ls
bCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8gam9pbiB0aGUg
W2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVt
b2NrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFzZSBub3RlIHRoYXQgY3JlYXRpbmcg
YW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvb2ds
ZS9nb29nbGV0ZXN0L2lzc3VlcykgaXMgX25vdF8KLWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5z
d2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVt
YmVyIG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRv
IHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJs
ZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0
aW9uIGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lv
biBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1v
Y2sgeW91IHVzZSAoR29vZ2xlIE1vY2sgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBp
dCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVy
IHZlcnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQg
dmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUg
ZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGls
ZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiks
Ci0gICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUg
cHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL2RvY3MvS25vd25Jc3N1ZXMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0tub3du
SXNzdWVzLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGFkZjUxNDRiMWIuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL0tub3duSXNzdWVzLm1kCisrKyAvZGV2
L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQXMgYW55IG5vbi10cml2aWFsIHNvZnR3YXJlIHN5c3Rl
bSwgR29vZ2xlIE1vY2sgaGFzIHNvbWUga25vd24gbGltaXRhdGlvbnMgYW5kIHByb2JsZW1zLiAg
V2UgYXJlIHdvcmtpbmcgb24gaW1wcm92aW5nIGl0LCBhbmQgd2VsY29tZSB5b3VyIGhlbHAhICBU
aGUgZm9sbG93IGlzIGEgbGlzdCBvZiBpc3N1ZXMgd2Uga25vdyBhYm91dC4KLQotCi0KLSMjIFJF
QURNRSBjb250YWlucyBvdXRkYXRlZCBpbmZvcm1hdGlvbiBvbiBHb29nbGUgTW9jaydzIGNvbXBh
dGliaWxpdHkgd2l0aCBvdGhlciB0ZXN0aW5nIGZyYW1ld29ya3MgIyMKLQotVGhlIGBSRUFETUVg
IGZpbGUgaW4gcmVsZWFzZSAxLjEuMCBzdGlsbCBzYXlzIHRoYXQgR29vZ2xlIE1vY2sgb25seSB3
b3JrcyB3aXRoIEdvb2dsZSBUZXN0LiAgQWN0dWFsbHksIHlvdSBjYW4gY29uZmlndXJlIEdvb2ds
ZSBNb2NrIHRvIHdvcmsgd2l0aCBhbnkgdGVzdGluZyBmcmFtZXdvcmsgeW91IGNob29zZS4KLQot
IyMgVGVzdHMgZmFpbGluZyBvbiBtYWNoaW5lcyB1c2luZyBQb3dlciBQQyBDUFVzIChlLmcuIHNv
bWUgTWFjcykgIyMKLQotYGdtb2NrX291dHB1dF90ZXN0YCBhbmQgYGdtb2NrLXByaW50ZXJzX3Rl
c3RgIGFyZSBrbm93biB0byBmYWlsIHdpdGggUG93ZXIgUEMgQ1BVcy4gIFRoaXMgaXMgZHVlIHRv
IHBvcnRhYmlsaXR5IGlzc3VlcyB3aXRoIHRoZXNlIHRlc3RzLCBhbmQgaXMgbm90IGFuIGluZGlj
YXRpb24gb2YgcHJvYmxlbXMgaW4gR29vZ2xlIE1vY2sgaXRzZWxmLiAgWW91IGNhbiBzYWZlbHkg
aWdub3JlIHRoZW0uCi0KLSMjIEZhaWxlZCB0byByZXNvbHZlIGxpYmd0ZXN0LnNvLjAgaW4gdGVz
dHMgd2hlbiBidWlsdCBhZ2FpbnN0IGluc3RhbGxlZCBHb29nbGUgVGVzdCAjIwotCi1UaGlzIG9u
bHkgYXBwbGllcyBpZiB5b3UgbWFudWFsbHkgYnVpbHQgYW5kIGluc3RhbGxlZCBHb29nbGUgVGVz
dCwgYW5kIHRoZW4gYnVpbHQgYSBHb29nbGUgTW9jayBhZ2FpbnN0IGl0IChlaXRoZXIgZXhwbGlj
aXRseSwgb3IgYmVjYXVzZSBndGVzdC1jb25maWcgd2FzIGluIHlvdXIgcGF0aCBwb3N0LWluc3Rh
bGwpLiBJbiB0aGlzIHNpdHVhdGlvbiwgTGlidG9vbCBoYXMgYSBrbm93biBpc3N1ZSB3aXRoIGNl
cnRhaW4gc3lzdGVtcycgbGRjb25maWcgc2V0dXA6Ci0KLWh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9y
Zy9nbWFuZS5jb21wLnN5c3V0aWxzLmF1dG9tYWtlLmdlbmVyYWwvOTAyNQotCi1UaGlzIHJlcXVp
cmVzIGEgbWFudWFsIHJ1biBvZiAic3VkbyBsZGNvbmZpZyIgYWZ0ZXIgdGhlICJzdWRvIG1ha2Ug
aW5zdGFsbCIgZm9yIEdvb2dsZSBUZXN0IGJlZm9yZSBhbnkgYmluYXJpZXMgd2hpY2ggbGluayBh
Z2FpbnN0IGl0IGNhbiBiZSBleGVjdXRlZC4gVGhpcyBpc24ndCBhIGJ1ZyBpbiBvdXIgaW5zdGFs
bCwgYnV0IHdlIHNob3VsZCBhdCBsZWFzdCBoYXZlIGRvY3VtZW50ZWQgaXQgb3IgaGFja2VkIGEg
d29yay1hcm91bmQgaW50byBvdXIgaW5zdGFsbC4gV2Ugc2hvdWxkIGhhdmUgb25lIG9mIHRoZXNl
IHNvbHV0aW9ucyBpbiBvdXIgbmV4dCByZWxlYXNlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9DaGVhdFNoZWV0Lm1kIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svZG9jcy92MV81L0NoZWF0U2hlZXQubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNjN2JlZDRjNmZiZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNS9DaGVhdFNoZWV0Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsNTI1ICswLDAgQEAKLQotCi0j
IERlZmluaW5nIGEgTW9jayBDbGFzcyAjCi0KLSMjIE1vY2tpbmcgYSBOb3JtYWwgQ2xhc3MgIyMK
LQotR2l2ZW4KLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgfkZvbygpOwotICB2
aXJ0dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHN0cmluZyBEZXNjcmli
ZShjb25zdCBjaGFyKiBuYW1lKSA9IDA7Ci0gIHZpcnR1YWwgc3RyaW5nIERlc2NyaWJlKGludCB0
eXBlKSA9IDA7Ci0gIHZpcnR1YWwgYm9vbCBQcm9jZXNzKEJhciBlbGVtLCBpbnQgY291bnQpID0g
MDsKLX07Ci1gYGAKLShub3RlIHRoYXQgYH5Gb28oKWAgKiptdXN0KiogYmUgdmlydHVhbCkgd2Ug
Y2FuIGRlZmluZSBpdHMgbW9jayBhcwotYGBgCi0jaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KLQot
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0U2l6
ZSwgaW50KCkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmluZyhjb25zdCBjaGFyKiBu
YW1lKSk7Ci0gIE1PQ0tfTUVUSE9EMShEZXNjcmliZSwgc3RyaW5nKGludCB0eXBlKSk7Ci0gIE1P
Q0tfTUVUSE9EMihQcm9jZXNzLCBib29sKEJhciBlbGVtLCBpbnQgY291bnQpKTsKLX07Ci1gYGAK
LQotVG8gY3JlYXRlIGEgIm5pY2UiIG1vY2sgb2JqZWN0IHdoaWNoIGlnbm9yZXMgYWxsIHVuaW50
ZXJlc3RpbmcgY2FsbHMsCi1vciBhICJzdHJpY3QiIG1vY2sgb2JqZWN0LCB3aGljaCB0cmVhdHMg
dGhlbSBhcyBmYWlsdXJlczoKLWBgYAotTmljZU1vY2s8TW9ja0Zvbz4gbmljZV9mb287ICAgICAv
LyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28uCi1TdHJpY3RNb2NrPE1vY2tGb28+
IHN0cmljdF9mb287IC8vIFRoZSB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0Zvby4KLWBgYAot
Ci0jIyBNb2NraW5nIGEgQ2xhc3MgVGVtcGxhdGUgIyMKLQotVG8gbW9jawotYGBgCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4u
LgotICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgpOwotICB2aXJ0dWFsIGludCBHZXRTaXplKCkg
Y29uc3QgPSAwOwotICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBFbGVtJiB4KSA9IDA7Ci19Owot
YGBgCi0obm90ZSB0aGF0IGB+U3RhY2tJbnRlcmZhY2UoKWAgKiptdXN0KiogYmUgdmlydHVhbCkg
anVzdCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAgbWFjcm9zOgotYGBgCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgRWxlbT4KLWNsYXNzIE1vY2tTdGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxF
bGVtPiB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwg
aW50KCkpOwotICBNT0NLX01FVEhPRDFfVChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKLX07
Ci1gYGAKLQotIyMgU3BlY2lmeWluZyBDYWxsaW5nIENvbnZlbnRpb25zIGZvciBNb2NrIEZ1bmN0
aW9ucyAjIwotCi1JZiB5b3VyIG1vY2sgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIGRlZmF1bHQg
Y2FsbGluZyBjb252ZW50aW9uLCB5b3UKLWNhbiBzcGVjaWZ5IGl0IGJ5IGFwcGVuZGluZyBgX1dJ
VEhfQ0FMTFRZUEVgIHRvIGFueSBvZiB0aGUgbWFjcm9zCi1kZXNjcmliZWQgaW4gdGhlIHByZXZp
b3VzIHR3byBzZWN0aW9ucyBhbmQgc3VwcGx5aW5nIHRoZSBjYWxsaW5nCi1jb252ZW50aW9uIGFz
IHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWFjcm8uIEZvciBleGFtcGxlLAotYGBgCi0gIE1P
Q0tfTUVUSE9EXzFfV0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgRm9vLCBib29sKGlu
dCBuKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMl9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExU
WVBFLCBCYXIsIGludChkb3VibGUgeCwgZG91YmxlIHkpKTsKLWBgYAotd2hlcmUgYFNURE1FVEhP
RENBTExUWVBFYCBpcyBkZWZpbmVkIGJ5IGA8b2JqYmFzZS5oPmAgb24gV2luZG93cy4KLQotIyBV
c2luZyBNb2NrcyBpbiBUZXN0cyAjCi0KLVRoZSB0eXBpY2FsIGZsb3cgaXM6Ci0gIDEuIEltcG9y
dCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgeW91IG5lZWQgdG8gdXNlLiBBbGwgR29vZ2xlIE1vY2sg
bmFtZXMgYXJlIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlIHVubGVzcyB0aGV5IGFyZSBtYWNy
b3Mgb3Igb3RoZXJ3aXNlIG5vdGVkLgotICAxLiBDcmVhdGUgdGhlIG1vY2sgb2JqZWN0cy4KLSAg
MS4gT3B0aW9uYWxseSwgc2V0IHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1vY2sgb2JqZWN0
cy4KLSAgMS4gU2V0IHlvdXIgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdHMgKEhvdyB3
aWxsIHRoZXkgYmUgY2FsbGVkPyBXaGF0IHdpbCB0aGV5IGRvPykuCi0gIDEuIEV4ZXJjaXNlIGNv
ZGUgdGhhdCB1c2VzIHRoZSBtb2NrIG9iamVjdHM7IGlmIG5lY2Vzc2FyeSwgY2hlY2sgdGhlIHJl
c3VsdCB1c2luZyBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0
ZXN0LykgYXNzZXJ0aW9ucy4KLSAgMS4gV2hlbiBhIG1vY2sgb2JqZWN0cyBpcyBkZXN0cnVjdGVk
LCBHb29nbGUgTW9jayBhdXRvbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9u
cyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgotCi1IZXJlIGlzIGFuIGV4YW1wbGU6Ci1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAj
MQotCi1URVNUKEJhclRlc3QsIERvZXNUaGlzKSB7Ci0gIE1vY2tGb28gZm9vOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMyCi0KLSAgT05fQ0FMTChmb28sIEdldFNpemUo
KSkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzMKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJl
dHVybigxKSk7Ci0gIC8vIC4uLiBvdGhlciBkZWZhdWx0IGFjdGlvbnMgLi4uCi0KLSAgRVhQRUNU
X0NBTEwoZm9vLCBEZXNjcmliZSg1KSkgICAgICAgICAgICAgICAgICAgLy8gIzQKLSAgICAgIC5U
aW1lcygzKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigiQ2F0ZWdvcnkgNSIpKTsKLSAg
Ly8gLi4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4KLQotICBFWFBFQ1RfRVEoImdvb2QiLCBNeVBy
b2R1Y3Rpb25GdW5jdGlvbigmZm9vKSk7ICAvLyAjNQotfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjNgotYGBgCi0KLSMgU2V0dGluZyBEZWZhdWx0
IEFjdGlvbnMgIwotCi1Hb29nbGUgTW9jayBoYXMgYSAqKmJ1aWx0LWluIGRlZmF1bHQgYWN0aW9u
KiogZm9yIGFueSBmdW5jdGlvbiB0aGF0Ci1yZXR1cm5zIGB2b2lkYCwgYGJvb2xgLCBhIG51bWVy
aWMgdmFsdWUsIG9yIGEgcG9pbnRlci4KLQotVG8gY3VzdG9taXplIHRoZSBkZWZhdWx0IGFjdGlv
biBmb3IgZnVuY3Rpb25zIHdpdGggcmV0dXJuIHR5cGUgYFRgIGdsb2JhbGx5OgotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKLQotRGVmYXVsdFZhbHVlPFQ+OjpTZXQodmFsdWUp
OyAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSB0byBiZSByZXR1cm5lZC4KLS8vIC4uLiB1c2Ug
dGhlIG1vY2tzIC4uLgotRGVmYXVsdFZhbHVlPFQ+OjpDbGVhcigpOyAgICAgLy8gUmVzZXRzIHRo
ZSBkZWZhdWx0IHZhbHVlLgotYGBgCi0KLVRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24g
Zm9yIGEgcGFydGljdWxhciBtZXRob2QsIHVzZSBgT05fQ0FMTCgpYDoKLWBgYAotT05fQ0FMTCht
b2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9t
YXRjaGVyKSAgPwotICAgIC5XaWxsQnlEZWZhdWx0KGFjdGlvbik7Ci1gYGAKLQotIyBTZXR0aW5n
IEV4cGVjdGF0aW9ucyAjCi0KLWBFWFBFQ1RfQ0FMTCgpYCBzZXRzICoqZXhwZWN0YXRpb25zKiog
b24gYSBtb2NrIG1ldGhvZCAoSG93IHdpbGwgaXQgYmUKLWNhbGxlZD8gV2hhdCB3aWxsIGl0IGRv
Pyk6Ci1gYGAKLUVYUEVDVF9DQUxMKG1vY2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQotICAg
IC5XaXRoKG11bHRpX2FyZ3VtZW50X21hdGNoZXIpICA/Ci0gICAgLlRpbWVzKGNhcmRpbmFsaXR5
KSAgICAgICAgICAgID8KLSAgICAuSW5TZXF1ZW5jZShzZXF1ZW5jZXMpICAgICAgICAgKgotICAg
IC5BZnRlcihleHBlY3RhdGlvbnMpICAgICAgICAgICAqCi0gICAgLldpbGxPbmNlKGFjdGlvbikg
ICAgICAgICAgICAgICoKLSAgICAuV2lsbFJlcGVhdGVkbHkoYWN0aW9uKSAgICAgICAgPwotICAg
IC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7ICAgICAgICA/Ci1gYGAKLQotSWYgYFRpbWVzKClgIGlz
IG9taXR0ZWQsIHRoZSBjYXJkaW5hbGl0eSBpcyBhc3N1bWVkIHRvIGJlOgotCi0gICogYFRpbWVz
KDEpYCB3aGVuIHRoZXJlIGlzIG5laXRoZXIgYFdpbGxPbmNlKClgIG5vciBgV2lsbFJlcGVhdGVk
bHkoKWA7Ci0gICogYFRpbWVzKG4pYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYnV0
IG5vIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDE7IG9yCi0gICogYFRpbWVzKEF0
TGVhc3QobikpYCB3aGVuIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYHMgYW5kIGEgYFdpbGxSZXBl
YXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMC4KLQotQSBtZXRob2Qgd2l0aCBubyBgRVhQRUNUX0NB
TEwoKWAgaXMgZnJlZSB0byBiZSBpbnZva2VkIF9hbnkgbnVtYmVyIG9mIHRpbWVzXywgYW5kIHRo
ZSBkZWZhdWx0IGFjdGlvbiB3aWxsIGJlIHRha2VuIGVhY2ggdGltZS4KLQotIyBNYXRjaGVycyAj
Ci0KLUEgKiptYXRjaGVyKiogbWF0Y2hlcyBhIF9zaW5nbGVfIGFyZ3VtZW50LiAgWW91IGNhbiB1
c2UgaXQgaW5zaWRlCi1gT05fQ0FMTCgpYCBvciBgRVhQRUNUX0NBTEwoKWAsIG9yIHVzZSBpdCB0
byB2YWxpZGF0ZSBhIHZhbHVlCi1kaXJlY3RseToKLQotfCBgRVhQRUNUX1RIQVQodmFsdWUsIG1h
dGNoZXIpYCB8IEFzc2VydHMgdGhhdCBgdmFsdWVgIG1hdGNoZXMgYG1hdGNoZXJgLiB8Ci18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBUaGUgc2Ft
ZSBhcyBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIpYCwgZXhjZXB0IHRoYXQgaXQgZ2VuZXJh
dGVzIGEgKipmYXRhbCoqIGZhaWx1cmUuIHwKLQotQnVpbHQtaW4gbWF0Y2hlcnMgKHdoZXJlIGBh
cmd1bWVudGAgaXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50KSBhcmUKLWRpdmlkZWQgaW50byBzZXZl
cmFsIGNhdGVnb3JpZXM6Ci0KLSMjIFdpbGRjYXJkICMjCi18YF9gfGBhcmd1bWVudGAgY2FuIGJl
IGFueSB2YWx1ZSBvZiB0aGUgY29ycmVjdCB0eXBlLnwKLXw6LS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBPHR5cGU+KClgIG9yIGBBbjx0eXBl
PigpYHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdHlwZSBgdHlwZWAuICAgICB8Ci0K
LSMjIEdlbmVyaWMgQ29tcGFyaXNvbiAjIwotCi18YEVxKHZhbHVlKWAgb3IgYHZhbHVlYHxgYXJn
dW1lbnQgPT0gdmFsdWVgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLXwKLXxgR2UodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA+PSB2YWx1ZWB8Ci18YEd0
KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPiB2YWx1ZWAgfAotfGBMZSh2YWx1ZSlgICAg
ICAgICAgICB8YGFyZ3VtZW50IDw9IHZhbHVlYHwKLXxgTHQodmFsdWUpYCAgICAgICAgICAgfGBh
cmd1bWVudCA8IHZhbHVlYCB8Ci18YE5lKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgIT0g
dmFsdWVgfAotfGBJc051bGwoKWAgICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhIGBOVUxMYCBw
b2ludGVyIChyYXcgb3Igc21hcnQpLnwKLXxgTm90TnVsbCgpYCAgICAgICAgICAgfGBhcmd1bWVu
dGAgaXMgYSBub24tbnVsbCBwb2ludGVyIChyYXcgb3Igc21hcnQpLnwKLXxgUmVmKHZhcmlhYmxl
KWAgICAgICAgfGBhcmd1bWVudGAgaXMgYSByZWZlcmVuY2UgdG8gYHZhcmlhYmxlYC58Ci18YFR5
cGVkRXE8dHlwZT4odmFsdWUpYHxgYXJndW1lbnRgIGhhcyB0eXBlIGB0eXBlYCBhbmQgaXMgZXF1
YWwgdG8gYHZhbHVlYC4gWW91IG1heSBuZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2YgYEVxKHZh
bHVlKWAgd2hlbiB0aGUgbW9jayBmdW5jdGlvbiBpcyBvdmVybG9hZGVkLnwKLQotRXhjZXB0IGBS
ZWYoKWAsIHRoZXNlIG1hdGNoZXJzIG1ha2UgYSBfY29weV8gb2YgYHZhbHVlYCBpbiBjYXNlIGl0
J3MKLW1vZGlmaWVkIG9yIGRlc3RydWN0ZWQgbGF0ZXIuIElmIHRoZSBjb21waWxlciBjb21wbGFp
bnMgdGhhdCBgdmFsdWVgCi1kb2Vzbid0IGhhdmUgYSBwdWJsaWMgY29weSBjb25zdHJ1Y3Rvciwg
dHJ5IHdyYXAgaXQgaW4gYEJ5UmVmKClgLAotZS5nLiBgRXEoQnlSZWYobm9uX2NvcHlhYmxlX3Zh
bHVlKSlgLiBJZiB5b3UgZG8gdGhhdCwgbWFrZSBzdXJlCi1gbm9uX2NvcHlhYmxlX3ZhbHVlYCBp
cyBub3QgY2hhbmdlZCBhZnRlcndhcmRzLCBvciB0aGUgbWVhbmluZyBvZiB5b3VyCi1tYXRjaGVy
IHdpbGwgYmUgY2hhbmdlZC4KLQotIyMgRmxvYXRpbmctUG9pbnQgTWF0Y2hlcnMgIyMKLQotfGBE
b3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVudGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hp
bWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIHVuZXF1YWwu
fAotfDotLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfGBGbG9hdEVxKGFfZmxvYXQpYCAgfGBhcmd1bWVudGAgaXMgYSBgZmxvYXRgIHZh
bHVlIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gYGFfZmxvYXRgLCB0cmVhdGluZyB0d28gTmFOcyBh
cyB1bmVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVEb3VibGVFcShhX2RvdWJsZSlgfGBhcmd1bWVu
dGAgaXMgYSBgZG91YmxlYCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2RvdWJsZWAs
IHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgfAotfGBOYW5TZW5zaXRpdmVGbG9hdEVxKGFf
ZmxvYXQpYHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFs
IHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgZXF1YWwuICAgIHwKLQotVGhlIGFi
b3ZlIG1hdGNoZXJzIHVzZSBVTFAtYmFzZWQgY29tcGFyaXNvbiAodGhlIHNhbWUgYXMgdXNlZCBp
bgotW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pKS4g
VGhleQotYXV0b21hdGljYWxseSBwaWNrIGEgcmVhc29uYWJsZSBlcnJvciBib3VuZCBiYXNlZCBv
biB0aGUgYWJzb2x1dGUKLXZhbHVlIG9mIHRoZSBleHBlY3RlZCB2YWx1ZS4gIGBEb3VibGVFcSgp
YCBhbmQgYEZsb2F0RXEoKWAgY29uZm9ybSB0bwotdGhlIElFRUUgc3RhbmRhcmQsIHdoaWNoIHJl
cXVpcmVzIGNvbXBhcmluZyB0d28gTmFOcyBmb3IgZXF1YWxpdHkgdG8KLXJldHVybiBmYWxzZS4g
VGhlIGBOYW5TZW5zaXRpdmUqYCB2ZXJzaW9uIGluc3RlYWQgdHJlYXRzIHR3byBOYU5zIGFzCi1l
cXVhbCwgd2hpY2ggaXMgb2Z0ZW4gd2hhdCBhIHVzZXIgd2FudHMuCi0KLSMjIFN0cmluZyBNYXRj
aGVycyAjIwotCi1UaGUgYGFyZ3VtZW50YCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSBD
Kysgc3RyaW5nIG9iamVjdDoKLQotfGBDb250YWluc1JlZ2V4KHN0cmluZylgfGBhcmd1bWVudGAg
bWF0Y2hlcyB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLnwKLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Ci18YEVuZHNXaXRoKHN1ZmZpeClgICAgICB8YGFyZ3VtZW50YCBlbmRzIHdpdGggc3RyaW5nIGBz
dWZmaXhgLiAgICAgICAgICAgfAotfGBIYXNTdWJzdHIoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAg
Y29udGFpbnMgYHN0cmluZ2AgYXMgYSBzdWItc3RyaW5nLiAgIHwKLXxgTWF0Y2hlc1JlZ2V4KHN0
cmluZylgIHxgYXJndW1lbnRgIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiB3
aXRoIHRoZSBtYXRjaCBzdGFydGluZyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBlbmRpbmcg
YXQgdGhlIGxhc3QgY2hhcmFjdGVyLnwKLXxgU3RhcnRzV2l0aChwcmVmaXgpYCAgIHxgYXJndW1l
bnRgIHN0YXJ0cyB3aXRoIHN0cmluZyBgcHJlZml4YC4gICAgICAgICB8Ci18YFN0ckNhc2VFcShz
dHJpbmcpYCAgICB8YGFyZ3VtZW50YCBpcyBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2Fz
ZS4gfAotfGBTdHJDYXNlTmUoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgaXMgbm90IGVxdWFsIHRv
IGBzdHJpbmdgLCBpZ25vcmluZyBjYXNlLnwKLXxgU3RyRXEoc3RyaW5nKWAgICAgICAgIHxgYXJn
dW1lbnRgIGlzIGVxdWFsIHRvIGBzdHJpbmdgLiAgICAgICAgICAgICAgICB8Ci18YFN0ck5lKHN0
cmluZylgICAgICAgICB8YGFyZ3VtZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAg
ICAgICAgfAotCi1gU3RyQ2FzZUVxKClgLCBgU3RyQ2FzZU5lKClgLCBgU3RyRXEoKWAsIGFuZCBg
U3RyTmUoKWAgd29yayBmb3Igd2lkZQotc3RyaW5ncyBhcyB3ZWxsLgotCi0jIyBDb250YWluZXIg
TWF0Y2hlcnMgIyMKLQotTW9zdCBTVEwtc3R5bGUgY29udGFpbmVycyBzdXBwb3J0IGA9PWAsIHNv
IHlvdSBjYW4gdXNlCi1gRXEoZXhwZWN0ZWRfY29udGFpbmVyKWAgb3Igc2ltcGx5IGBleHBlY3Rl
ZF9jb250YWluZXJgIHRvIG1hdGNoIGEKLWNvbnRhaW5lciBleGFjdGx5LiAgIElmIHlvdSB3YW50
IHRvIHdyaXRlIHRoZSBlbGVtZW50cyBpbi1saW5lLAotbWF0Y2ggdGhlbSBtb3JlIGZsZXhpYmx5
LCBvciBnZXQgbW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlcywgeW91IGNhbiB1c2U6Ci0KLXwgYENv
bnRhaW5zKGUpYCB8IGBhcmd1bWVudGAgY29udGFpbnMgYW4gZWxlbWVudCB0aGF0IG1hdGNoZXMg
YGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiB8Ci18Oi0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFbGVtZW50
c0FyZShlMCwgZTEsIC4uLiwgZW4pYHxgYXJndW1lbnRgIGhhcyBgbiArIDFgIGVsZW1lbnRzLCB3
aGVyZSB0aGUgaS10aCBlbGVtZW50IG1hdGNoZXMgYGVpYCwgd2hpY2ggY2FuIGJlIGEgdmFsdWUg
b3IgYSBtYXRjaGVyLiAwIHRvIDEwIGFyZ3VtZW50cyBhcmUgYWxsb3dlZC58Ci18YEVsZW1lbnRz
QXJlQXJyYXkoYXJyYXkpYCBvciBgRWxlbWVudHNBcmVBcnJheShhcnJheSwgY291bnQpYHxUaGUg
c2FtZSBhcyBgRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhlIGV4cGVjdGVkIGVsZW1lbnQg
dmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhIEMtc3R5bGUgYXJyYXkufAotfCBgQ29udGFpbmVy
RXEoY29udGFpbmVyKWAgfCBUaGUgc2FtZSBhcyBgRXEoY29udGFpbmVyKWAgZXhjZXB0IHRoYXQg
dGhlIGZhaWx1cmUgbWVzc2FnZSBhbHNvIGluY2x1ZGVzIHdoaWNoIGVsZW1lbnRzIGFyZSBpbiBv
bmUgY29udGFpbmVyIGJ1dCBub3QgdGhlIG90aGVyLiB8Ci0KLVRoZXNlIG1hdGNoZXJzIGNhbiBh
bHNvIG1hdGNoOgotCi0gIDEuIGEgbmF0aXZlIGFycmF5IHBhc3NlZCBieSByZWZlcmVuY2UgKGUu
Zy4gaW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlgKSwgYW5kCi0gIDEuIGFuIGFycmF5IHBhc3Nl
ZCBhcyBhIHBvaW50ZXIgYW5kIGEgY291bnQgKGUuZy4gaW4gYEJhcihjb25zdCBUKiBidWZmZXIs
IGludCBsZW4pYCAtLSBzZWUgW011bHRpLWFyZ3VtZW50IE1hdGNoZXJzXSgjTXVsdGlhcmd1bWVu
dF9NYXRjaGVycy5tZCkpLgotCi13aGVyZSB0aGUgYXJyYXkgbWF5IGJlIG11bHRpLWRpbWVuc2lv
bmFsIChpLmUuIGl0cyBlbGVtZW50cyBjYW4gYmUgYXJyYXlzKS4KLQotIyMgTWVtYmVyIE1hdGNo
ZXJzICMjCi0KLXxgRmllbGQoJmNsYXNzOjpmaWVsZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9y
IGBhcmd1bWVudC0+ZmllbGRgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1h
dGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUg
X2NsYXNzXy58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfGBLZXkoZSlgICAgICAgICAgICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBt
YXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5n
LiBgQ29udGFpbnMoS2V5KExlKDUpKSlgIGNhbiB2ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5z
IGEga2V5IGA8PSA1YC58Ci18YFBhaXIobTEsIG0yKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlz
IGFuIGBzdGQ6OnBhaXJgIHdob3NlIGBmaXJzdGAgZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vj
b25kYCBmaWVsZCBtYXRjaGVzIGBtMmAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAotfGBQcm9wZXJ0eSgmY2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3Vt
ZW50LnByb3BlcnR5KClgIChvciBgYXJndW1lbnQtPnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50
YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVu
dGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Ci0KLSMjIE1hdGNoaW5nIHRoZSBSZXN1
bHQgb2YgYSBGdW5jdGlvbiBvciBGdW5jdG9yICMjCi0KLXxgUmVzdWx0T2YoZiwgbSlgfGBmKGFy
Z3VtZW50KWAgbWF0Y2hlcyBtYXRjaGVyIGBtYCwgd2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3Ig
ZnVuY3Rvci58Ci18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBQb2ludGVy
IE1hdGNoZXJzICMjCi0KLXxgUG9pbnRlZShtKWB8YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQg
cG9pbnRlciBvciBhIHJhdyBwb2ludGVyKSBwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMg
bWF0Y2hlciBgbWAufAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Ci0KLSMjIE11bHRpYXJndW1lbnQgTWF0Y2hlcnMgIyMKLQotVGhlc2UgYXJl
IG1hdGNoZXJzIG9uIHR1cGxlIHR5cGVzLiBUaGV5IGNhbiBiZSB1c2VkIGluCi1gLldpdGgoKWAu
IFRoZSBmb2xsb3dpbmcgY2FuIGJlIHVzZWQgb24gZnVuY3Rpb25zIHdpdGggPGk+dHdvPGJyPgot
YXJndW1lbnRzPC9pPiBgeGAgYW5kIGB5YDoKLQotfGBFcSgpYHxgeCA9PSB5YHwKLXw6LS0tLS18
Oi0tLS0tLS18Ci18YEdlKClgfGB4ID49IHlgfAotfGBHdCgpYHxgeCA+IHlgIHwKLXxgTGUoKWB8
YHggPD0geWB8Ci18YEx0KClgfGB4IDwgeWAgfAotfGBOZSgpYHxgeCAhPSB5YHwKLQotWW91IGNh
biB1c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGljayBhIHN1YnNldCBvZiB0aGUgYXJn
dW1lbnRzCi0ob3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2hpbmc6
Ci0KLXxgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAuIFVzZWZ1bCBhcyBzeW50YWN0aWMg
c3VnYXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58Ci18Oi0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotfGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSBga2Agc2VsZWN0ZWQgKHVzaW5nIDAt
YmFzZWQgaW5kaWNlcykgYXJndW1lbnRzIG1hdGNoIGBtYCwgZS5nLiBgQXJnczwxLCAyPihDb250
YWlucyg1KSlgLnwKLQotIyMgQ29tcG9zaXRlIE1hdGNoZXJzICMjCi0KLVlvdSBjYW4gbWFrZSBh
IG1hdGNoZXIgZnJvbSBvbmUgb3IgbW9yZSBvdGhlciBtYXRjaGVyczoKLQotfGBBbGxPZihtMSwg
bTIsIC4uLiwgbW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYWxsIG9mIHRoZSBtYXRjaGVycyBgbTFg
IHRvIGBtbmAufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBbnlPZihtMSwgbTIsIC4uLiwg
bW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXRjaGVycyBgbTFg
IHRvIGBtbmAufAotfGBOb3QobSlgICAgICAgICAgICAgICAgIHxgYXJndW1lbnRgIGRvZXNuJ3Qg
bWF0Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgfAotCi0jIyBBZGFwdGVycyBmb3IgTWF0
Y2hlcnMgIyMKLQotfGBNYXRjaGVyQ2FzdDxUPihtKWB8Y2FzdHMgbWF0Y2hlciBgbWAgdG8gdHlw
ZSBgTWF0Y2hlcjxUPmAufAotfDotLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBTYWZlTWF0Y2hlckNhc3Q8VD4obSlgfCBbc2FmZWx5
IGNhc3RzXShWMV81X0Nvb2tCb29rI0Nhc3RpbmdfTWF0Y2hlcnMubWQpIG1hdGNoZXIgYG1gIHRv
IHR5cGUgYE1hdGNoZXI8VD5gLiB8Ci18YFRydWx5KHByZWRpY2F0ZSlgIHxgcHJlZGljYXRlKGFy
Z3VtZW50KWAgcmV0dXJucyBzb21ldGhpbmcgY29uc2lkZXJlZCBieSBDKysgdG8gYmUgdHJ1ZSwg
d2hlcmUgYHByZWRpY2F0ZWAgaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yLnwKLQotIyMgTWF0Y2hl
cnMgYXMgUHJlZGljYXRlcyAjIwotCi18YE1hdGNoZXMobSlgfGEgdW5hcnkgZnVuY3RvciB0aGF0
IHJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudCBtYXRjaGVzIGBtYC58Ci18Oi0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Ci18YEV4cGxhaW5NYXRjaFJlc3VsdChtLCB2YWx1ZSwgcmVzdWx0X2xpc3Rl
bmVyKWB8cmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYCwgZXhwbGFpbmluZyB0
aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlzdGVuZXJgLnwKLXxgVmFsdWUoeCwgbSlgfHJldHVybnMg
YHRydWVgIGlmIHRoZSB2YWx1ZSBvZiBgeGAgbWF0Y2hlcyBgbWAuICAgICAgICAgICAgICAgICB8
Ci0KLSMjIERlZmluaW5nIE1hdGNoZXJzICMjCi0KLXwgYE1BVENIRVIoSXNFdmVuLCAiIikgeyBy
ZXR1cm4gKGFyZyAlIDIpID09IDA7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElzRXZlbigpYCB0
byBtYXRjaCBhbiBldmVuIG51bWJlci4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBNQVRDSEVSX1AoSXNEaXZpc2libGVCeSwgbiwgIiIp
IHsgKnJlc3VsdF9saXN0ZW5lciA8PCAid2hlcmUgdGhlIHJlbWFpbmRlciBpcyAiIDw8IChhcmcg
JSBuKTsgcmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYWNoZXIgYElzRGl2
aXNpYmxlQnkobilgIHRvIG1hdGNoIGEgbnVtYmVyIGRpdmlzaWJsZSBieSBgbmAuIHwKLXwgYE1B
VENIRVJfUDIoSXNCZXR3ZWVuLCBhLCBiLCAiaXMgYmV0d2VlbiAlKGEpcyBhbmQgJShiKXMiKSB7
IHJldHVybiBhIDw9IGFyZyAmJiBhcmcgPD0gYjsgfWAgfCBEZWZpbmVzIGEgbWF0Y2hlciBgSXNC
ZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBhIHZhbHVlIGluIHRoZSByYW5nZSBbYGFgLCBgYmBdLiB8
Ci0KLSoqTm90ZXM6KioKLQotICAxLiBUaGUgYE1BVENIRVIqYCBtYWNyb3MgY2Fubm90IGJlIHVz
ZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3MuCi0gIDEuIFRoZSBtYXRjaGVyIGJvZHkgbXVz
dCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUuIGl0IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVm
ZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3QgZGVwZW5kIG9uIGFueXRoaW5nIG90aGVyIHRo
YW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVyIHBhcmFtZXRlcnMpLgot
ICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRUb1N0cmluZyh4KWAgdG8gY29udmVydCBhIHZhbHVlIGB4
YCBvZiBhbnkgdHlwZSB0byBhIHN0cmluZy4KLQotIyMgTWF0Y2hlcnMgYXMgVGVzdCBBc3NlcnRp
b25zICMjCi0KLXxgQVNTRVJUX1RIQVQoZXhwcmVzc2lvbiwgbSlgfEdlbmVyYXRlcyBhIFtmYXRh
bCBmYWlsdXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2ds
ZVRlc3RQcmltZXIjQXNzZXJ0aW9ucykgaWYgdGhlIHZhbHVlIG9mIGBleHByZXNzaW9uYCBkb2Vz
bid0IG1hdGNoIG1hdGNoZXIgYG1gLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRVhQRUNUX1RIQVQoZXhw
cmVzc2lvbiwgbSlgfEdlbmVyYXRlcyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlmIHRoZSB2YWx1ZSBv
ZiBgZXhwcmVzc2lvbmAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQot
IyBBY3Rpb25zICMKLQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5jdGlvbiBz
aG91bGQgZG8gd2hlbiBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIwotCi18YFJl
dHVybigpYHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKLXw6LS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBSZXR1cm4odmFsdWUpYHxS
ZXR1cm4gYHZhbHVlYC4gICAgICAgICAgICAgICAgICAgIHwKLXxgUmV0dXJuQXJnPE4+KClgfFJl
dHVybiB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJldHVybk5ldzxUPihhMSwg
Li4uLCBhaylgfFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0
IGlzIGNyZWF0ZWQgZWFjaCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBv
aW50ZXIuICAgICAgICAgICAgIHwKLXxgUmV0dXJuUmVmKHZhcmlhYmxlKWB8UmV0dXJuIGEgcmVm
ZXJlbmNlIHRvIGB2YXJpYWJsZWAuICB8Ci0KLSMjIFNpZGUgRWZmZWN0cyAjIwotCi18YEFzc2ln
bigmdmFyaWFibGUsIHZhbHVlKWB8QXNzaWduIGB2YWx1ZWAgdG8gdmFyaWFibGUufAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYERl
bGV0ZUFyZzxOPigpYCAgICAgICAgIHwgRGVsZXRlIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3Vt
ZW50LCB3aGljaCBtdXN0IGJlIGEgcG9pbnRlci4gfAotfCBgU2F2ZUFyZzxOPihwb2ludGVyKWAg
ICAgfCBTYXZlIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwK
LXwgYFNldEFyZ1JlZmVyZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFi
bGUgcmVmZXJlbmNlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAotfGBTZXRB
cmd1bWVudFBvaW50ZWU8Tj4odmFsdWUpYHxBc3NpZ24gYHZhbHVlYCB0byB0aGUgdmFyaWFibGUg
cG9pbnRlZCBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFNldEFycmF5QXJn
dW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYHxDb3BpZXMgdGhlIGVsZW1lbnRzIGluIHNvdXJjZSByYW5n
ZSBbYGZpcnN0YCwgYGxhc3RgKSB0byB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSB0aGUgYE5gLXRo
ICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHBvaW50ZXIgb3IgYW4g
aXRlcmF0b3IuIFRoZSBhY3Rpb24gZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGVsZW1l
bnRzIGluIHRoZSBzb3VyY2UgcmFuZ2UufAotfGBTZXRFcnJub0FuZFJldHVybihlcnJvciwgdmFs
dWUpYHxTZXQgYGVycm5vYCB0byBgZXJyb3JgIGFuZCByZXR1cm4gYHZhbHVlYC58Ci18YFRocm93
KGV4Y2VwdGlvbilgICAgICAgICB8VGhyb3dzIHRoZSBnaXZlbiBleGNlcHRpb24sIHdoaWNoIGNh
biBiZSBhbnkgY29weWFibGUgdmFsdWUuIEF2YWlsYWJsZSBzaW5jZSB2MS4xLjAufAotCi0jIyBV
c2luZyBhIEZ1bmN0aW9uIG9yIGEgRnVuY3RvciBhcyBhbiBBY3Rpb24gIyMKLQotfGBJbnZva2Uo
ZilgfEludm9rZSBgZmAgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgbW9jayBmdW5j
dGlvbiwgd2hlcmUgYGZgIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rpb24gb3IgYSBmdW5j
dG9yLnwKLXw6LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEludm9rZShvYmplY3RfcG9pbnRlciwgJmNsYXNzOjpt
ZXRob2QpYHxJbnZva2UgdGhlIHttZXRob2Qgb24gdGhlIG9iamVjdCB3aXRoIHRoZSBhcmd1bWVu
dHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Ci18YEludm9rZVdpdGhvdXRBcmdzKGYpYHxJbnZva2UgYGZgLCB3aGljaCBjYW4g
YmUgYSBnbG9iYWwvc3RhdGljIGZ1bmN0aW9uIG9yIGEgZnVuY3Rvci4gYGZgIG11c3QgdGFrZSBu
byBhcmd1bWVudHMuICAgICAgICAgICAgICAgICAgICAgICB8Ci18YEludm9rZVdpdGhvdXRBcmdz
KG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUgbWV0aG9kIG9uIHRo
ZSBvYmplY3QsIHdoaWNoIHRha2VzIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlQXJndW1lbnQ8Tj4o
YXJnMSwgYXJnMiwgLi4uLCBhcmdrKWB8SW52b2tlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYE5gLXRo
ICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2ggbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGEgZnVuY3Rv
ciwgd2l0aCB0aGUgYGtgIGFyZ3VtZW50cy58Ci0KLVRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGlu
dm9rZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlCi1vZiB0aGUgYWN0aW9u
LgotCi1XaGVuIGRlZmluaW5nIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGgg
YEludm9rZSooKWAsIHlvdSBjYW4gZGVjbGFyZSBhbnkgdW51c2VkIHBhcmFtZXRlcnMgYXMgYFVu
dXNlZGA6Ci1gYGAKLSAgZG91YmxlIERpc3RhbmNlKFVudXNlZCwgZG91YmxlIHgsIGRvdWJsZSB5
KSB7IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7IH0KLSAgLi4uCi0gIEVYUEVDVF9DQUxMKG1vY2ss
IEZvbygiSGkiLCBfLCBfKSkuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlKSk7Ci1gYGAKLQotSW4g
YEludm9rZUFyZ3VtZW50PE4+KC4uLilgLCBpZiBhbiBhcmd1bWVudCBuZWVkcyB0byBiZSBwYXNz
ZWQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGluc2lkZSBgQnlSZWYoKWAuIEZvciBleGFtcGxlLAot
YGBgCi0gIEludm9rZUFyZ3VtZW50PDI+KDUsIHN0cmluZygiSGkiKSwgQnlSZWYoZm9vKSkKLWBg
YAotY2FsbHMgdGhlIG1vY2sgZnVuY3Rpb24ncyAjMiBhcmd1bWVudCwgcGFzc2luZyB0byBpdCBg
NWAgYW5kIGBzdHJpbmcoIkhpIilgIGJ5IHZhbHVlLCBhbmQgYGZvb2AgYnkgcmVmZXJlbmNlLgot
Ci0jIyBEZWZhdWx0IEFjdGlvbiAjIwotCi18YERvRGVmYXVsdCgpYHxEbyB0aGUgZGVmYXVsdCBh
Y3Rpb24gKHNwZWNpZmllZCBieSBgT05fQ0FMTCgpYCBvciB0aGUgYnVpbHQtaW4gb25lKS58Ci18
Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLSoqTm90ZToqKiBkdWUgdG8gdGVjaG5pY2Fs
IHJlYXNvbnMsIGBEb0RlZmF1bHQoKWAgY2Fubm90IGJlIHVzZWQgaW5zaWRlICBhIGNvbXBvc2l0
ZSBhY3Rpb24gLSB0cnlpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBydW4tdGltZSBlcnJv
ci4KLQotIyMgQ29tcG9zaXRlIEFjdGlvbnMgIyMKLQotfGBEb0FsbChhMSwgYTIsIC4uLiwgYW4p
YHxEbyBhbGwgYWN0aW9ucyBgYTFgIHRvIGBhbmAgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIGBh
bmAgaW4gZWFjaCBpbnZvY2F0aW9uLiBUaGUgZmlyc3QgYG4gLSAxYCBzdWItYWN0aW9ucyBtdXN0
IHJldHVybiB2b2lkLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
LXxgSWdub3JlUmVzdWx0KGEpYCAgICAgICB8UGVyZm9ybSBhY3Rpb24gYGFgIGFuZCBpZ25vcmUg
aXRzIHJlc3VsdC4gYGFgIG11c3Qgbm90IHJldHVybiB2b2lkLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBXaXRoQXJnPE4+KGEp
YCAgICAgICAgIHxQYXNzIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2Nr
IGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5kIHBlcmZvcm0gaXQuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8Ci18YFdpdGhBcmdzPE4xLCBOMiwgLi4uLCBOaz4oYSlg
fFBhc3MgdGhlIHNlbGVjdGVkICgwLWJhc2VkKSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rp
b24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLXxgV2l0aG91dEFyZ3MoYSlgICAgICAgICB8UGVyZm9ybSBhY3Rpb24g
YGFgIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
Ci0jIyBEZWZpbmluZyBBY3Rpb25zICMjCi0KLXwgYEFDVElPTihTdW0pIHsgcmV0dXJuIGFyZzAg
KyBhcmcxOyB9YCB8IERlZmluZXMgYW4gYWN0aW9uIGBTdW0oKWAgdG8gcmV0dXJuIHRoZSBzdW0g
b2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCAjMCBhbmQgIzEuIHwKLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXwgYEFDVElPTl9QKFBsdXMsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9YCB8IERlZmlu
ZXMgYW4gYWN0aW9uIGBQbHVzKG4pYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5j
dGlvbidzIGFyZ3VtZW50ICMwIGFuZCBgbmAuIHwKLXwgYEFDVElPTl9QayhGb28sIHAxLCAuLi4s
IHBrKSB7IHN0YXRlbWVudHM7IH1gIHwgRGVmaW5lcyBhIHBhcmFtZXRlcml6ZWQgYWN0aW9uIGBG
b28ocDEsIC4uLiwgcGspYCB0byBleGVjdXRlIHRoZSBnaXZlbiBgc3RhdGVtZW50c2AuICAgfAot
Ci1UaGUgYEFDVElPTipgIG1hY3JvcyBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgYSBmdW5jdGlvbiBv
ciBjbGFzcy4KLQotIyBDYXJkaW5hbGl0aWVzICMKLQotVGhlc2UgYXJlIHVzZWQgaW4gYFRpbWVz
KClgIHRvIHNwZWNpZnkgaG93IG1hbnkgdGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgYmUgY2Fs
bGVkOgotCi18YEFueU51bWJlcigpYHxUaGUgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBhbnkgbnVt
YmVyIG9mIHRpbWVzLnwKLXw6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBdExlYXN0KG4pYCB8VGhlIGNhbGwgaXMgZXhwZWN0
ZWQgYXQgbGVhc3QgYG5gIHRpbWVzLiAgICAgICB8Ci18YEF0TW9zdChuKWAgIHxUaGUgY2FsbCBp
cyBleHBlY3RlZCBhdCBtb3N0IGBuYCB0aW1lcy4gICAgICAgIHwKLXxgQmV0d2VlbihtLCBuKWB8
VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYmV0d2VlbiBgbWAgYW5kIGBuYCAoaW5jbHVzaXZlKSB0aW1l
cy58Ci18YEV4YWN0bHkobikgb3IgbmB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgZXhhY3RseSBgbmAg
dGltZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBjYWxsIHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBg
bmAgaXMgMC58Ci0KLSMgRXhwZWN0YXRpb24gT3JkZXIgIwotCi1CeSBkZWZhdWx0LCB0aGUgZXhw
ZWN0YXRpb25zIGNhbiBiZSBtYXRjaGVkIGluIF9hbnlfIG9yZGVyLiAgSWYgc29tZQotb3IgYWxs
IGV4cGVjdGF0aW9ucyBtdXN0IGJlIG1hdGNoZWQgaW4gYSBnaXZlbiBvcmRlciwgdGhlcmUgYXJl
IHR3bwotd2F5cyB0byBzcGVjaWZ5IGl0LiAgVGhleSBjYW4gYmUgdXNlZCBlaXRoZXIgaW5kZXBl
bmRlbnRseSBvcgotdG9nZXRoZXIuCi0KLSMjIFRoZSBBZnRlciBDbGF1c2UgIyMKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9uOwotLi4uCi1FeHBlY3RhdGlvbiBpbml0X3ggPSBF
WFBFQ1RfQ0FMTChmb28sIEluaXRYKCkpOwotRXhwZWN0YXRpb24gaW5pdF95ID0gRVhQRUNUX0NB
TEwoZm9vLCBJbml0WSgpKTsKLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLkFmdGVyKGlu
aXRfeCwgaW5pdF95KTsKLWBgYAotc2F5cyB0aGF0IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5
IGFmdGVyIGJvdGggYEluaXRYKClgIGFuZAotYEluaXRZKClgIGhhdmUgYmVlbiBjYWxsZWQuCi0K
LUlmIHlvdSBkb24ndCBrbm93IGhvdyBtYW55IHByZS1yZXF1aXNpdGVzIGFuIGV4cGVjdGF0aW9u
IGhhcyB3aGVuIHlvdQotd3JpdGUgaXQsIHlvdSBjYW4gdXNlIGFuIGBFeHBlY3RhdGlvblNldGAg
dG8gY29sbGVjdCB0aGVtOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RXhwZWN0YXRpb25TZXQ7
Ci0uLi4KLUV4cGVjdGF0aW9uU2V0IGFsbF9pbml0czsKLWZvciAoaW50IGkgPSAwOyBpIDwgZWxl
bWVudF9jb3VudDsgaSsrKSB7Ci0gIGFsbF9pbml0cyArPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRF
bGVtZW50KGkpKTsKLX0KLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLkFmdGVyKGFsbF9p
bml0cyk7Ci1gYGAKLXNheXMgdGhhdCBgQmFyKClgIGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBh
bGwgZWxlbWVudHMgaGF2ZSBiZWVuCi1pbml0aWFsaXplZCAoYnV0IHdlIGRvbid0IGNhcmUgYWJv
dXQgd2hpY2ggZWxlbWVudHMgZ2V0IGluaXRpYWxpemVkCi1iZWZvcmUgdGhlIG90aGVycykuCi0K
LU1vZGlmeWluZyBhbiBgRXhwZWN0YXRpb25TZXRgIGFmdGVyIHVzaW5nIGl0IGluIGFuIGAuQWZ0
ZXIoKWAgZG9lc24ndAotYWZmZWN0IHRoZSBtZWFuaW5nIG9mIHRoZSBgLkFmdGVyKClgLgotCi0j
IyBTZXF1ZW5jZXMgIyMKLQotV2hlbiB5b3UgaGF2ZSBhIGxvbmcgY2hhaW4gb2Ygc2VxdWVudGlh
bCBleHBlY3RhdGlvbnMsIGl0J3MgZWFzaWVyIHRvCi1zcGVjaWZ5IHRoZSBvcmRlciB1c2luZyAq
KnNlcXVlbmNlcyoqLCB3aGljaCBkb24ndCByZXF1aXJlIHlvdSB0byBnaXZlbgotZWFjaCBleHBl
Y3RhdGlvbiBpbiB0aGUgY2hhaW4gYSBkaWZmZXJlbnQgbmFtZS4gIDxpPkFsbCBleHBlY3RlZDxi
cj4KLWNhbGxzPC9pPiBpbiB0aGUgc2FtZSBzZXF1ZW5jZSBtdXN0IG9jY3VyIGluIHRoZSBvcmRl
ciB0aGV5IGFyZQotc3BlY2lmaWVkLgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7
Ci1TZXF1ZW5jZSBzMSwgczI7Ci0uLi4KLUVYUEVDVF9DQUxMKGZvbywgUmVzZXQoKSkKLSAgICAu
SW5TZXF1ZW5jZShzMSwgczIpCi0gICAgLldpbGxPbmNlKFJldHVybih0cnVlKSk7Ci1FWFBFQ1Rf
Q0FMTChmb28sIEdldFNpemUoKSkKLSAgICAuSW5TZXF1ZW5jZShzMSkKLSAgICAuV2lsbE9uY2Uo
UmV0dXJuKDEpKTsKLUVYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoQTxjb25zdCBjaGFyKj4oKSkp
Ci0gICAgLkluU2VxdWVuY2UoczIpCi0gICAgLldpbGxPbmNlKFJldHVybigiZHVtbXkiKSk7Ci1g
YGAKLXNheXMgdGhhdCBgUmVzZXQoKWAgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIF9ib3RoXyBgR2V0
U2l6ZSgpYCBfYW5kXwotYERlc2NyaWJlKClgLCBhbmQgdGhlIGxhdHRlciB0d28gY2FuIG9jY3Vy
IGluIGFueSBvcmRlci4KLQotVG8gcHV0IG1hbnkgZXhwZWN0YXRpb25zIGluIGEgc2VxdWVuY2Ug
Y29udmVuaWVudGx5OgotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci17Ci0gIElu
U2VxdWVuY2UgZHVtbXk7Ci0KLSAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKLSAgRVhQRUNUX0NBTEwo
Li4uKS4uLjsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKC4uLikuLi47Ci19Ci1gYGAKLXNheXMgdGhh
dCBhbGwgZXhwZWN0ZWQgY2FsbHMgaW4gdGhlIHNjb3BlIG9mIGBkdW1teWAgbXVzdCBvY2N1ciBp
bgotc3RyaWN0IG9yZGVyLiBUaGUgbmFtZSBgZHVtbXlgIGlzIGlycmVsZXZhbnQuKQotCi0jIFZl
cmlmeWluZyBhbmQgUmVzZXR0aW5nIGEgTW9jayAjCi0KLUdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5
IHRoZSBleHBlY3RhdGlvbnMgb24gYSBtb2NrIG9iamVjdCB3aGVuIGl0IGlzIGRlc3RydWN0ZWQs
IG9yIHlvdSBjYW4gZG8gaXQgZWFybGllcjoKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwot
Li4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2Jq
OwotLy8gcmV0dXJucyB0cnVlIGlmZiBzdWNjZXNzZnVsLgotTW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1vY2tfb2JqKTsKLS4uLgotLy8gVmVyaWZpZXMgYW5kIHJlbW92ZXMgdGhl
IGV4cGVjdGF0aW9ucyBvbiBtb2NrX29iajsKLS8vIGFsc28gcmVtb3ZlcyB0aGUgZGVmYXVsdCBh
Y3Rpb25zIHNldCBieSBPTl9DQUxMKCk7Ci0vLyByZXR1cm5zIHRydWUgaWZmIHN1Y2Nlc3NmdWwu
Ci1Nb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9ja19vYmopOwotYGBgCi0KLVlvdSBjYW4gYWxzbyB0
ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYSBtb2NrIG9iamVjdCBjYW4gYmUgbGVha2VkIGFuZCBkb2Vz
bid0Ci1uZWVkIHRvIGJlIHZlcmlmaWVkOgotYGBgCi1Nb2NrOjpBbGxvd0xlYWsoJm1vY2tfb2Jq
KTsKLWBgYAotCi0jIE1vY2sgQ2xhc3NlcyAjCi0KLUdvb2dsZSBNb2NrIGRlZmluZXMgYSBjb252
ZW5pZW50IG1vY2sgY2xhc3MgdGVtcGxhdGUKLWBgYAotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTEs
IC4uLiwgQW4pPiB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRG4oQ2FsbCwgUihBMSwgLi4uLCBB
bikpOwotfTsKLWBgYAotU2VlIHRoaXMgW3JlY2lwZV0oVjFfNV9Db29rQm9vayNVc2luZ19DaGVj
a19Qb2ludHMubWQpIGZvciBvbmUgYXBwbGljYXRpb24gb2YgaXQuCi0KLSMgRmxhZ3MgIwotCi18
IGAtLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2Nrcz0wYCB8IERvbid0IHJlcG9ydCBsZWFrZWQgbW9j
ayBvYmplY3RzIGFzIGZhaWx1cmVzLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGAt
LWdtb2NrX3ZlcmJvc2U9TEVWRUxgICAgICAgICB8IFNldHMgdGhlIGRlZmF1bHQgdmVyYm9zaXR5
IGxldmVsIChgaW5mb2AsIGB3YXJuaW5nYCwgb3IgYGVycm9yYCkgb2YgR29vZ2xlIE1vY2sgbWVz
c2FnZXMuIHwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9kb2NzL3YxXzUvQ29va0Jvb2subWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvQ29va0Jv
b2subWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZTE1M2M2YmE5ZS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9Db29rQm9vay5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyNTAgKzAsMCBAQAotCi0KLVlvdSBjYW4gZmluZCByZWNpcGVzIGZvciB1c2lu
ZyBHb29nbGUgTW9jayBoZXJlLiBJZiB5b3UgaGF2ZW4ndCB5ZXQsCi1wbGVhc2UgcmVhZCB0aGUg
W0ZvckR1bW1pZXNdKFYxXzVfRm9yRHVtbWllcy5tZCkgZG9jdW1lbnQgZmlyc3QgdG8gbWFrZSBz
dXJlIHlvdSB1bmRlcnN0YW5kCi10aGUgYmFzaWNzLgotCi0qKk5vdGU6KiogR29vZ2xlIE1vY2sg
bGl2ZXMgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lIHNwYWNlLiBGb3IKLXJlYWRhYmlsaXR5LCBpdCBp
cyByZWNvbW1lbmRlZCB0byB3cml0ZSBgdXNpbmcgOjp0ZXN0aW5nOjpGb287YCBvbmNlIGluCi15
b3VyIGZpbGUgYmVmb3JlIHVzaW5nIHRoZSBuYW1lIGBGb29gIGRlZmluZWQgYnkgR29vZ2xlIE1v
Y2suIFdlIG9taXQKLXN1Y2ggYHVzaW5nYCBzdGF0ZW1lbnRzIGluIHRoaXMgcGFnZSBmb3IgYnJl
dml0eSwgYnV0IHlvdSBzaG91bGQgZG8gaXQKLWluIHlvdXIgb3duIGNvZGUuCi0KLSMgQ3JlYXRp
bmcgTW9jayBDbGFzc2VzICMKLQotIyMgTW9ja2luZyBQcml2YXRlIG9yIFByb3RlY3RlZCBNZXRo
b2RzICMjCi0KLVlvdSBtdXN0IGFsd2F5cyBwdXQgYSBtb2NrIG1ldGhvZCBkZWZpbml0aW9uIChg
TU9DS19NRVRIT0QqYCkgaW4gYQotYHB1YmxpYzpgIHNlY3Rpb24gb2YgdGhlIG1vY2sgY2xhc3Ms
IHJlZ2FyZGxlc3Mgb2YgdGhlIG1ldGhvZCBiZWluZwotbW9ja2VkIGJlaW5nIGBwdWJsaWNgLCBg
cHJvdGVjdGVkYCwgb3IgYHByaXZhdGVgIGluIHRoZSBiYXNlIGNsYXNzLgotVGhpcyBhbGxvd3Mg
YE9OX0NBTExgIGFuZCBgRVhQRUNUX0NBTExgIHRvIHJlZmVyZW5jZSB0aGUgbW9jayBmdW5jdGlv
bgotZnJvbSBvdXRzaWRlIG9mIHRoZSBtb2NrIGNsYXNzLiAgKFllcywgQysrIGFsbG93cyBhIHN1
YmNsYXNzIHRvIGNoYW5nZQotdGhlIGFjY2VzcyBsZXZlbCBvZiBhIHZpcnR1YWwgZnVuY3Rpb24g
aW4gdGhlIGJhc2UgY2xhc3MuKSAgRXhhbXBsZToKLQotYGBgCi1jbGFzcyBGb28gewotIHB1Ymxp
YzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBUcmFuc2Zvcm0oR2FkZ2V0KiBnKSA9IDA7Ci0KLSBw
cm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBSZXN1bWUoKTsKLQotIHByaXZhdGU6Ci0gIHZpcnR1
YWwgaW50IEdldFRpbWVPdXQoKTsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
LSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoVHJhbnNmb3JtLCBib29sKEdhZGdldCog
ZykpOwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgbXVzdCBiZSBpbiB0aGUgcHVibGljIHNlY3Rpb24s
IGV2ZW4gdGhvdWdoIHRoZQotICAvLyBtZXRob2RzIGFyZSBwcm90ZWN0ZWQgb3IgcHJpdmF0ZSBp
biB0aGUgYmFzZSBjbGFzcy4KLSAgTU9DS19NRVRIT0QwKFJlc3VtZSwgdm9pZCgpKTsKLSAgTU9D
S19NRVRIT0QwKEdldFRpbWVPdXQsIGludCgpKTsKLX07Ci1gYGAKLQotIyMgTW9ja2luZyBPdmVy
bG9hZGVkIE1ldGhvZHMgIyMKLQotWW91IGNhbiBtb2NrIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGFz
IHVzdWFsLiBObyBzcGVjaWFsIGF0dGVudGlvbiBpcyByZXF1aXJlZDoKLQotYGBgCi1jbGFzcyBG
b28gewotICAuLi4KLQotICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwgaW5oZXJpdCBmcm9t
IEZvby4KLSAgdmlydHVhbCB+Rm9vKCk7Ci0KLSAgLy8gT3ZlcmxvYWRlZCBvbiB0aGUgdHlwZXMg
YW5kL29yIG51bWJlcnMgb2YgYXJndW1lbnRzLgotICB2aXJ0dWFsIGludCBBZGQoRWxlbWVudCB4
KTsKLSAgdmlydHVhbCBpbnQgQWRkKGludCB0aW1lcywgRWxlbWVudCB4KTsKLQotICAvLyBPdmVy
bG9hZGVkIG9uIHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LgotICB2aXJ0dWFsIEJhciYg
R2V0QmFyKCk7Ci0gIHZpcnR1YWwgY29uc3QgQmFyJiBHZXRCYXIoKSBjb25zdDsKLX07Ci0KLWNs
YXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShBZGQsIGlu
dChFbGVtZW50IHgpKTsKLSAgTU9DS19NRVRIT0QyKEFkZCwgaW50KGludCB0aW1lcywgRWxlbWVu
dCB4KTsKLQotICBNT0NLX01FVEhPRDAoR2V0QmFyLCBCYXImKCkpOwotICBNT0NLX0NPTlNUX01F
VEhPRDAoR2V0QmFyLCBjb25zdCBCYXImKCkpOwotfTsKLWBgYAotCi0qKk5vdGU6KiogaWYgeW91
IGRvbid0IG1vY2sgYWxsIHZlcnNpb25zIG9mIHRoZSBvdmVybG9hZGVkIG1ldGhvZCwgdGhlCi1j
b21waWxlciB3aWxsIGdpdmUgeW91IGEgd2FybmluZyBhYm91dCBzb21lIG1ldGhvZHMgaW4gdGhl
IGJhc2UgY2xhc3MKLWJlaW5nIGhpZGRlbi4gVG8gZml4IHRoYXQsIHVzZSBgdXNpbmdgIHRvIGJy
aW5nIHRoZW0gaW4gc2NvcGU6Ci0KLWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewot
ICAuLi4KLSAgdXNpbmcgRm9vOjpBZGQ7Ci0gIE1PQ0tfTUVUSE9EMShBZGQsIGludChFbGVtZW50
IHgpKTsKLSAgLy8gV2UgZG9uJ3Qgd2FudCB0byBtb2NrIGludCBBZGQoaW50IHRpbWVzLCBFbGVt
ZW50IHgpOwotICAuLi4KLX07Ci1gYGAKLQotIyMgTW9ja2luZyBDbGFzcyBUZW1wbGF0ZXMgIyMK
LQotVG8gbW9jayBhIGNsYXNzIHRlbXBsYXRlLCBhcHBlbmQgYF9UYCB0byB0aGUgYE1PQ0tfKmAg
bWFjcm9zOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgotY2xhc3MgU3RhY2tJbnRl
cmZhY2UgewotICAuLi4KLSAgLy8gTXVzdCBiZSB2aXJ0dWFsIGFzIHdlJ2xsIGluaGVyaXQgZnJv
bSBTdGFja0ludGVyZmFjZS4KLSAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKLQotICB2aXJ0
dWFsIGludCBHZXRTaXplKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIHZvaWQgUHVzaChjb25zdCBF
bGVtJiB4KSA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNsYXNzIE1vY2tT
dGFjayA6IHB1YmxpYyBTdGFja0ludGVyZmFjZTxFbGVtPiB7Ci0gIC4uLgotICBNT0NLX0NPTlNU
X01FVEhPRDBfVChHZXRTaXplLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9EMV9UKFB1c2gsIHZvaWQo
Y29uc3QgRWxlbSYgeCkpOwotfTsKLWBgYAotCi0jIyBNb2NraW5nIE5vbnZpcnR1YWwgTWV0aG9k
cyAjIwotCi1Hb29nbGUgTW9jayBjYW4gbW9jayBub24tdmlydHVhbCBmdW5jdGlvbnMgdG8gYmUg
dXNlZCBpbiB3aGF0IHdlIGNhbGwgX2hpLXBlcmYKLWRlcGVuZGVuY3kgaW5qZWN0aW9uXy4KLQot
SW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIHNoYXJpbmcgYSBjb21tb24gYmFzZSBjbGFzcyB3aXRo
IHRoZSByZWFsCi1jbGFzcywgeW91ciBtb2NrIGNsYXNzIHdpbGwgYmUgX3VucmVsYXRlZF8gdG8g
dGhlIHJlYWwgY2xhc3MsIGJ1dAotY29udGFpbiBtZXRob2RzIHdpdGggdGhlIHNhbWUgc2lnbmF0
dXJlcy4gIFRoZSBzeW50YXggZm9yIG1vY2tpbmcKLW5vbi12aXJ0dWFsIG1ldGhvZHMgaXMgdGhl
IF9zYW1lXyBhcyBtb2NraW5nIHZpcnR1YWwgbWV0aG9kczoKLQotYGBgCi0vLyBBIHNpbXBsZSBw
YWNrZXQgc3RyZWFtIGNsYXNzLiAgTm9uZSBvZiBpdHMgbWVtYmVycyBpcyB2aXJ0dWFsLgotY2xh
c3MgQ29uY3JldGVQYWNrZXRTdHJlYW0gewotIHB1YmxpYzoKLSAgdm9pZCBBcHBlbmRQYWNrZXQo
UGFja2V0KiBuZXdfcGFja2V0KTsKLSAgY29uc3QgUGFja2V0KiBHZXRQYWNrZXQoc2l6ZV90IHBh
Y2tldF9udW1iZXIpIGNvbnN0OwotICBzaXplX3QgTnVtYmVyT2ZQYWNrZXRzKCkgY29uc3Q7Ci0g
IC4uLgotfTsKLQotLy8gQSBtb2NrIHBhY2tldCBzdHJlYW0gY2xhc3MuICBJdCBpbmhlcml0cyBm
cm9tIG5vIG90aGVyLCBidXQgZGVmaW5lcwotLy8gR2V0UGFja2V0KCkgYW5kIE51bWJlck9mUGFj
a2V0cygpLgotY2xhc3MgTW9ja1BhY2tldFN0cmVhbSB7Ci0gcHVibGljOgotICBNT0NLX0NPTlNU
X01FVEhPRDEoR2V0UGFja2V0LCBjb25zdCBQYWNrZXQqKHNpemVfdCBwYWNrZXRfbnVtYmVyKSk7
Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChOdW1iZXJPZlBhY2tldHMsIHNpemVfdCgpKTsKLSAgLi4u
Ci19OwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgbW9jayBjbGFzcyBkb2Vzbid0IGRlZmluZSBgQXBw
ZW5kUGFja2V0KClgLCB1bmxpa2UgdGhlCi1yZWFsIGNsYXNzLiBUaGF0J3MgZmluZSBhcyBsb25n
IGFzIHRoZSB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBjYWxsIGl0LgotCi1OZXh0LCB5b3UgbmVlZCBh
IHdheSB0byBzYXkgdGhhdCB5b3Ugd2FudCB0byB1c2UKLWBDb25jcmV0ZVBhY2tldFN0cmVhbWAg
aW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlIGBNb2NrUGFja2V0U3RyZWFtYAotaW4gdGVzdHMu
ICBTaW5jZSB0aGUgZnVuY3Rpb25zIGFyZSBub3QgdmlydHVhbCBhbmQgdGhlIHR3byBjbGFzc2Vz
IGFyZQotdW5yZWxhdGVkLCB5b3UgbXVzdCBzcGVjaWZ5IHlvdXIgY2hvaWNlIGF0IF9jb21waWxl
IHRpbWVfIChhcyBvcHBvc2VkCi10byBydW4gdGltZSkuCi0KLU9uZSB3YXkgdG8gZG8gaXQgaXMg
dG8gdGVtcGxhdGl6ZSB5b3VyIGNvZGUgdGhhdCBuZWVkcyB0byB1c2UgYSBwYWNrZXQKLXN0cmVh
bS4gIE1vcmUgc3BlY2lmaWNhbGx5LCB5b3Ugd2lsbCBnaXZlIHlvdXIgY29kZSBhIHRlbXBsYXRl
IHR5cGUKLWFyZ3VtZW50IGZvciB0aGUgdHlwZSBvZiB0aGUgcGFja2V0IHN0cmVhbS4gIEluIHBy
b2R1Y3Rpb24sIHlvdSB3aWxsCi1pbnN0YW50aWF0ZSB5b3VyIHRlbXBsYXRlIHdpdGggYENvbmNy
ZXRlUGFja2V0U3RyZWFtYCBhcyB0aGUgdHlwZQotYXJndW1lbnQuICBJbiB0ZXN0cywgeW91IHdp
bGwgaW5zdGFudGlhdGUgdGhlIHNhbWUgdGVtcGxhdGUgd2l0aAotYE1vY2tQYWNrZXRTdHJlYW1g
LiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd3JpdGU6Ci0KLWBgYAotdGVtcGxhdGUgPGNsYXNzIFBh
Y2tldFN0cmVhbT4KLXZvaWQgQ3JlYXRlQ29ubmVjdGlvbihQYWNrZXRTdHJlYW0qIHN0cmVhbSkg
eyAuLi4gfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUGFja2V0U3RyZWFtPgotY2xhc3MgUGFja2V0UmVh
ZGVyIHsKLSBwdWJsaWM6Ci0gIHZvaWQgUmVhZFBhY2tldHMoUGFja2V0U3RyZWFtKiBzdHJlYW0s
IHNpemVfdCBwYWNrZXRfbnVtKTsKLX07Ci1gYGAKLQotVGhlbiB5b3UgY2FuIHVzZSBgQ3JlYXRl
Q29ubmVjdGlvbjxDb25jcmV0ZVBhY2tldFN0cmVhbT4oKWAgYW5kCi1gUGFja2V0UmVhZGVyPENv
bmNyZXRlUGFja2V0U3RyZWFtPmAgaW4gcHJvZHVjdGlvbiBjb2RlLCBhbmQgdXNlCi1gQ3JlYXRl
Q29ubmVjdGlvbjxNb2NrUGFja2V0U3RyZWFtPigpYCBhbmQKLWBQYWNrZXRSZWFkZXI8TW9ja1Bh
Y2tldFN0cmVhbT5gIGluIHRlc3RzLgotCi1gYGAKLSAgTW9ja1BhY2tldFN0cmVhbSBtb2NrX3N0
cmVhbTsKLSAgRVhQRUNUX0NBTEwobW9ja19zdHJlYW0sIC4uLikuLi47Ci0gIC4uIHNldCBtb3Jl
IGV4cGVjdGF0aW9ucyBvbiBtb2NrX3N0cmVhbSAuLi4KLSAgUGFja2V0UmVhZGVyPE1vY2tQYWNr
ZXRTdHJlYW0+IHJlYWRlcigmbW9ja19zdHJlYW0pOwotICAuLi4gZXhlcmNpc2UgcmVhZGVyIC4u
LgotYGBgCi0KLSMjIE1vY2tpbmcgRnJlZSBGdW5jdGlvbnMgIyMKLQotSXQncyBwb3NzaWJsZSB0
byB1c2UgR29vZ2xlIE1vY2sgdG8gbW9jayBhIGZyZWUgZnVuY3Rpb24gKGkuZS4gYQotQy1zdHls
ZSBmdW5jdGlvbiBvciBhIHN0YXRpYyBtZXRob2QpLiAgWW91IGp1c3QgbmVlZCB0byByZXdyaXRl
IHlvdXIKLWNvZGUgdG8gdXNlIGFuIGludGVyZmFjZSAoYWJzdHJhY3QgY2xhc3MpLgotCi1JbnN0
ZWFkIG9mIGNhbGxpbmcgYSBmcmVlIGZ1bmN0aW9uIChzYXksIGBPcGVuRmlsZWApIGRpcmVjdGx5
LAotaW50cm9kdWNlIGFuIGludGVyZmFjZSBmb3IgaXQgYW5kIGhhdmUgYSBjb25jcmV0ZSBzdWJj
bGFzcyB0aGF0IGNhbGxzCi10aGUgZnJlZSBmdW5jdGlvbjoKLQotYGBgCi1jbGFzcyBGaWxlSW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJvb2wgT3Blbihjb25zdCBjaGFy
KiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSA9IDA7Ci19OwotCi1jbGFzcyBGaWxlIDogcHVibGlj
IEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBPcGVuKGNv
bnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsKLSAgICByZXR1cm4gT3BlbkZpbGUo
cGF0aCwgbW9kZSk7Ci0gIH0KLX07Ci1gYGAKLQotWW91ciBjb2RlIHNob3VsZCB0YWxrIHRvIGBG
aWxlSW50ZXJmYWNlYCB0byBvcGVuIGEgZmlsZS4gIE5vdyBpdCdzCi1lYXN5IHRvIG1vY2sgb3V0
IHRoZSBmdW5jdGlvbi4KLQotVGhpcyBtYXkgc2VlbSBtdWNoIGhhc3NsZSwgYnV0IGluIHByYWN0
aWNlIHlvdSBvZnRlbiBoYXZlIG11bHRpcGxlCi1yZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IHlvdSBj
YW4gcHV0IGluIHRoZSBzYW1lIGludGVyZmFjZSwgc28gdGhlCi1wZXItZnVuY3Rpb24gc3ludGFj
dGljIG92ZXJoZWFkIHdpbGwgYmUgbXVjaCBsb3dlci4KLQotSWYgeW91IGFyZSBjb25jZXJuZWQg
YWJvdXQgdGhlIHBlcmZvcm1hbmNlIG92ZXJoZWFkIGluY3VycmVkIGJ5Ci12aXJ0dWFsIGZ1bmN0
aW9ucywgYW5kIHByb2ZpbGluZyBjb25maXJtcyB5b3VyIGNvbmNlcm4sIHlvdSBjYW4KLWNvbWJp
bmUgdGhpcyB3aXRoIHRoZSByZWNpcGUgZm9yIFttb2NraW5nIG5vbi12aXJ0dWFsIG1ldGhvZHNd
KCNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcy5tZCkuCi0KLSMjIE5pY2UgTW9ja3MgYW5kIFN0
cmljdCBNb2NrcyAjIwotCi1JZiBhIG1vY2sgbWV0aG9kIGhhcyBubyBgRVhQRUNUX0NBTExgIHNw
ZWMgYnV0IGlzIGNhbGxlZCwgR29vZ2xlIE1vY2sKLXdpbGwgcHJpbnQgYSB3YXJuaW5nIGFib3V0
IHRoZSAidW5pbnRlcmVzdGluZyBjYWxsIi4gVGhlIHJhdGlvbmFsZSBpczoKLQotICAqIE5ldyBt
ZXRob2RzIG1heSBiZSBhZGRlZCB0byBhbiBpbnRlcmZhY2UgYWZ0ZXIgYSB0ZXN0IGlzIHdyaXR0
ZW4uIFdlIHNob3VsZG4ndCBmYWlsIGEgdGVzdCBqdXN0IGJlY2F1c2UgYSBtZXRob2QgaXQgZG9l
c24ndCBrbm93IGFib3V0IGlzIGNhbGxlZC4KLSAgKiBIb3dldmVyLCB0aGlzIG1heSBhbHNvIG1l
YW4gdGhlcmUncyBhIGJ1ZyBpbiB0aGUgdGVzdCwgc28gR29vZ2xlIE1vY2sgc2hvdWxkbid0IGJl
IHNpbGVudCBlaXRoZXIuIElmIHRoZSB1c2VyIGJlbGlldmVzIHRoZXNlIGNhbGxzIGFyZSBoYXJt
bGVzcywgaGUgY2FuIGFkZCBhbiBgRVhQRUNUX0NBTEwoKWAgdG8gc3VwcHJlc3MgdGhlIHdhcm5p
bmcuCi0KLUhvd2V2ZXIsIHNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gc3VwcHJlc3MgYWxsICJ1
bmludGVyZXN0aW5nIGNhbGwiCi13YXJuaW5ncywgd2hpbGUgc29tZXRpbWVzIHlvdSBtYXkgd2Fu
dCB0aGUgb3Bwb3NpdGUsIGkuZS4gdG8gdHJlYXQgYWxsCi1vZiB0aGVtIGFzIGVycm9ycy4gR29v
Z2xlIE1vY2sgbGV0cyB5b3UgbWFrZSB0aGUgZGVjaXNpb24gb24gYQotcGVyLW1vY2stb2JqZWN0
IGJhc2lzLgotCi1TdXBwb3NlIHlvdXIgdGVzdCB1c2VzIGEgbW9jayBjbGFzcyBgTW9ja0Zvb2A6
Ci0KLWBgYAotVEVTVCguLi4pIHsKLSAgTW9ja0ZvbyBtb2NrX2ZvbzsKLSAgRVhQRUNUX0NBTEwo
bW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgot
fQotYGBgCi0KLUlmIGEgbWV0aG9kIG9mIGBtb2NrX2Zvb2Agb3RoZXIgdGhhbiBgRG9UaGlzKClg
IGlzIGNhbGxlZCwgaXQgd2lsbCBiZQotcmVwb3J0ZWQgYnkgR29vZ2xlIE1vY2sgYXMgYSB3YXJu
aW5nLiBIb3dldmVyLCBpZiB5b3UgcmV3cml0ZSB5b3VyCi10ZXN0IHRvIHVzZSBgTmljZU1vY2s8
TW9ja0Zvbz5gIGluc3RlYWQsIHRoZSB3YXJuaW5nIHdpbGwgYmUgZ29uZSwKLXJlc3VsdGluZyBp
biBhIGNsZWFuZXIgdGVzdCBvdXRwdXQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpOaWNlTW9j
azsKLQotVEVTVCguLi4pIHsKLSAgTmljZU1vY2s8TW9ja0Zvbz4gbW9ja19mb287Ci0gIEVYUEVD
VF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2Zv
byAuLi4KLX0KLWBgYAotCi1gTmljZU1vY2s8TW9ja0Zvbz5gIGlzIGEgc3ViY2xhc3Mgb2YgYE1v
Y2tGb29gLCBzbyBpdCBjYW4gYmUgdXNlZAotd2hlcmV2ZXIgYE1vY2tGb29gIGlzIGFjY2VwdGVk
LgotCi1JdCBhbHNvIHdvcmtzIGlmIGBNb2NrRm9vYCdzIGNvbnN0cnVjdG9yIHRha2VzIHNvbWUg
YXJndW1lbnRzLCBhcwotYE5pY2VNb2NrPE1vY2tGb28+YCAiaW5oZXJpdHMiIGBNb2NrRm9vYCdz
IGNvbnN0cnVjdG9yczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok5pY2VNb2NrOwotCi1URVNU
KC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2Zvbyg1LCAiaGkiKTsgIC8vIENhbGxz
IE1vY2tGb28oNSwgImhpIikuCi0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0g
IC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBgYAotCi1UaGUgdXNhZ2Ugb2Yg
YFN0cmljdE1vY2tgIGlzIHNpbWlsYXIsIGV4Y2VwdCB0aGF0IGl0IG1ha2VzIGFsbAotdW5pbnRl
cmVzdGluZyBjYWxscyBmYWlsdXJlczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlN0cmljdE1v
Y2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIFN0cmljdE1vY2s8TW9ja0Zvbz4gbW9ja19mb287Ci0gIEVY
UEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2RlIHRoYXQgdXNlcyBtb2Nr
X2ZvbyAuLi4KLQotICAvLyBUaGUgdGVzdCB3aWxsIGZhaWwgaWYgYSBtZXRob2Qgb2YgbW9ja19m
b28gb3RoZXIgdGhhbiBEb1RoaXMoKQotICAvLyBpcyBjYWxsZWQuCi19Ci1gYGAKLQotVGhlcmUg
YXJlIHNvbWUgY2F2ZWF0cyB0aG91Z2ggKEkgZG9uJ3QgbGlrZSB0aGVtIGp1c3QgYXMgbXVjaCBh
cyB0aGUKLW5leHQgZ3V5LCBidXQgc2FkbHkgdGhleSBhcmUgc2lkZSBlZmZlY3RzIG9mIEMrKydz
IGxpbWl0YXRpb25zKToKLQotICAxLiBgTmljZU1vY2s8TW9ja0Zvbz5gIGFuZCBgU3RyaWN0TW9j
azxNb2NrRm9vPmAgb25seSB3b3JrIGZvciBtb2NrIG1ldGhvZHMgZGVmaW5lZCB1c2luZyB0aGUg
YE1PQ0tfTUVUSE9EKmAgZmFtaWx5IG9mIG1hY3JvcyAqKmRpcmVjdGx5KiogaW4gdGhlIGBNb2Nr
Rm9vYCBjbGFzcy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBkZWZpbmVkIGluIGEgKipiYXNlIGNsYXNz
Kiogb2YgYE1vY2tGb29gLCB0aGUgIm5pY2UiIG9yICJzdHJpY3QiIG1vZGlmaWVyIG1heSBub3Qg
YWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyLiBJbiBwYXJ0aWN1bGFyLCBuZXN0
aW5nIGBOaWNlTW9ja2AgYW5kIGBTdHJpY3RNb2NrYCAoZS5nLiBgTmljZU1vY2s8U3RyaWN0TW9j
azxNb2NrRm9vPiA+YCkgaXMgKipub3QqKiBzdXBwb3J0ZWQuCi0gIDEuIFRoZSBjb25zdHJ1Y3Rv
cnMgb2YgdGhlIGJhc2UgbW9jayAoYE1vY2tGb29gKSBjYW5ub3QgaGF2ZSBhcmd1bWVudHMgcGFz
c2VkIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdoaWNoIGhhcHBlbnMgdG8gYmUgYmFubmVkIGJ5
IHRoZSBbR29vZ2xlIEMrKyBzdHlsZSBndWlkZV0oaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdv
b2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwpLgotICAxLiBEdXJpbmcgdGhlIGNv
bnN0cnVjdG9yIG9yIGRlc3RydWN0b3Igb2YgYE1vY2tGb29gLCB0aGUgbW9jayBvYmplY3QgaXMg
X25vdF8gbmljZSBvciBzdHJpY3QuICBUaGlzIG1heSBjYXVzZSBzdXJwcmlzZXMgaWYgdGhlIGNv
bnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMgYSBtb2NrIG1ldGhvZCBvbiBgdGhpc2Agb2Jq
ZWN0LiAoVGhpcyBiZWhhdmlvciwgaG93ZXZlciwgaXMgY29uc2lzdGVudCB3aXRoIEMrKydzIGdl
bmVyYWwgcnVsZTogaWYgYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIGNhbGxzIGEgdmlydHVh
bCBtZXRob2Qgb2YgYHRoaXNgIG9iamVjdCwgdGhhdCBtZXRob2QgaXMgdHJlYXRlZCBhcyBub24t
dmlydHVhbC4gIEluIG90aGVyIHdvcmRzLCB0byB0aGUgYmFzZSBjbGFzcydzIGNvbnN0cnVjdG9y
IG9yIGRlc3RydWN0b3IsIGB0aGlzYCBvYmplY3QgYmVoYXZlcyBsaWtlIGFuIGluc3RhbmNlIG9m
IHRoZSBiYXNlIGNsYXNzLCBub3QgdGhlIGRlcml2ZWQgY2xhc3MuICBUaGlzIHJ1bGUgaXMgcmVx
dWlyZWQgZm9yIHNhZmV0eS4gIE90aGVyd2lzZSBhIGJhc2UgY29uc3RydWN0b3IgbWF5IHVzZSBt
ZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBiZWZvcmUgdGhleSBhcmUgaW5pdGlhbGl6ZWQsIG9y
IGEgYmFzZSBkZXN0cnVjdG9yIG1heSB1c2UgbWVtYmVycyBvZiBhIGRlcml2ZWQgY2xhc3MgYWZ0
ZXIgdGhleSBoYXZlIGJlZW4gZGVzdHJveWVkLikKLQotRmluYWxseSwgeW91IHNob3VsZCBiZSAq
KnZlcnkgY2F1dGlvdXMqKiB3aGVuIHVzaW5nIHRoaXMgZmVhdHVyZSwgYXMgdGhlCi1kZWNpc2lv
biB5b3UgbWFrZSBhcHBsaWVzIHRvICoqYWxsKiogZnV0dXJlIGNoYW5nZXMgdG8gdGhlIG1vY2sK
LWNsYXNzLiBJZiBhbiBpbXBvcnRhbnQgY2hhbmdlIGlzIG1hZGUgaW4gdGhlIGludGVyZmFjZSB5
b3UgYXJlIG1vY2tpbmcKLShhbmQgdGh1cyBpbiB0aGUgbW9jayBjbGFzcyksIGl0IGNvdWxkIGJy
ZWFrIHlvdXIgdGVzdHMgKGlmIHlvdSB1c2UKLWBTdHJpY3RNb2NrYCkgb3IgbGV0IGJ1Z3MgcGFz
cyB0aHJvdWdoIHdpdGhvdXQgYSB3YXJuaW5nIChpZiB5b3UgdXNlCi1gTmljZU1vY2tgKS4gVGhl
cmVmb3JlLCB0cnkgdG8gc3BlY2lmeSB0aGUgbW9jaydzIGJlaGF2aW9yIHVzaW5nCi1leHBsaWNp
dCBgRVhQRUNUX0NBTExgIGZpcnN0LCBhbmQgb25seSB0dXJuIHRvIGBOaWNlTW9ja2Agb3IKLWBT
dHJpY3RNb2NrYCBhcyB0aGUgbGFzdCByZXNvcnQuCi0KLSMjIFNpbXBsaWZ5aW5nIHRoZSBJbnRl
cmZhY2Ugd2l0aG91dCBCcmVha2luZyBFeGlzdGluZyBDb2RlICMjCi0KLVNvbWV0aW1lcyBhIG1l
dGhvZCBoYXMgYSBsb25nIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQgaXMgbW9zdGx5Ci11bmludGVy
ZXN0aW5nLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1jbGFzcyBMb2dTaW5rIHsKLSBwdWJsaWM6Ci0g
IC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hh
ciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZV9m
aWxlbmFtZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0bSog
dG1fdGltZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90
IG1lc3NhZ2VfbGVuKSA9IDA7Ci19OwotYGBgCi0KLVRoaXMgbWV0aG9kJ3MgYXJndW1lbnQgbGlz
dCBpcyBsZW5ndGh5IGFuZCBoYXJkIHRvIHdvcmsgd2l0aCAobGV0J3MKLXNheSB0aGF0IHRoZSBg
bWVzc2FnZWAgYXJndW1lbnQgaXMgbm90IGV2ZW4gMC10ZXJtaW5hdGVkKS4gSWYgd2UgbW9jawot
aXQgYXMgaXMsIHVzaW5nIHRoZSBtb2NrIHdpbGwgYmUgYXdrd2FyZC4gSWYsIGhvd2V2ZXIsIHdl
IHRyeSB0bwotc2ltcGxpZnkgdGhpcyBpbnRlcmZhY2UsIHdlJ2xsIG5lZWQgdG8gZml4IGFsbCBj
bGllbnRzIGRlcGVuZGluZyBvbgotaXQsIHdoaWNoIGlzIG9mdGVuIGluZmVhc2libGUuCi0KLVRo
ZSB0cmljayBpcyB0byByZS1kaXNwYXRjaCB0aGUgbWV0aG9kIGluIHRoZSBtb2NrIGNsYXNzOgot
Ci1gYGAKLWNsYXNzIFNjb3BlZE1vY2tMb2cgOiBwdWJsaWMgTG9nU2luayB7Ci0gcHVibGljOgot
ICAuLi4KLSAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNo
YXIqIGZ1bGxfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2Vf
ZmlsZW5hbWUsIGludCBsaW5lLCBjb25zdCB0bSogdG1fdGltZSwKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuKSB7Ci0gICAgLy8gV2Ug
YXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbG9nIHNldmVyaXR5LCBmdWxsIGZpbGUgbmFtZSwg
YW5kCi0gICAgLy8gbG9nIG1lc3NhZ2UuCi0gICAgTG9nKHNldmVyaXR5LCBmdWxsX2ZpbGVuYW1l
LCBzdGQ6OnN0cmluZyhtZXNzYWdlLCBtZXNzYWdlX2xlbikpOwotICB9Ci0KLSAgLy8gSW1wbGVt
ZW50cyB0aGUgbW9jayBtZXRob2Q6Ci0gIC8vCi0gIC8vICAgdm9pZCBMb2coTG9nU2V2ZXJpdHkg
c2V2ZXJpdHksCi0gIC8vICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgsCi0gIC8v
ICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKTsKLSAgTU9DS19NRVRIT0QzKExvZywg
dm9pZChMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RyaW5nJiBmaWxlX3BhdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBtZXNzYWdlKSk7Ci19OwotYGBgCi0K
LUJ5IGRlZmluaW5nIGEgbmV3IG1vY2sgbWV0aG9kIHdpdGggYSB0cmltbWVkIGFyZ3VtZW50IGxp
c3QsIHdlIG1ha2UKLXRoZSBtb2NrIGNsYXNzIG11Y2ggbW9yZSB1c2VyLWZyaWVuZGx5LgotCi0j
IyBBbHRlcm5hdGl2ZSB0byBNb2NraW5nIENvbmNyZXRlIENsYXNzZXMgIyMKLQotT2Z0ZW4geW91
IG1heSBmaW5kIHlvdXJzZWxmIHVzaW5nIGNsYXNzZXMgdGhhdCBkb24ndCBpbXBsZW1lbnQKLWlu
dGVyZmFjZXMuIEluIG9yZGVyIHRvIHRlc3QgeW91ciBjb2RlIHRoYXQgdXNlcyBzdWNoIGEgY2xh
c3MgKGxldCdzCi1jYWxsIGl0IGBDb25jcmV0ZWApLCB5b3UgbWF5IGJlIHRlbXB0ZWQgdG8gbWFr
ZSB0aGUgbWV0aG9kcyBvZgotYENvbmNyZXRlYCB2aXJ0dWFsIGFuZCB0aGVuIG1vY2sgaXQuCi0K
LVRyeSBub3QgdG8gZG8gdGhhdC4KLQotTWFraW5nIGEgbm9uLXZpcnR1YWwgZnVuY3Rpb24gdmly
dHVhbCBpcyBhIGJpZyBkZWNpc2lvbi4gSXQgY3JlYXRlcyBhbgotZXh0ZW5zaW9uIHBvaW50IHdo
ZXJlIHN1YmNsYXNzZXMgY2FuIHR3ZWFrIHlvdXIgY2xhc3MnIGJlaGF2aW9yLiBUaGlzCi13ZWFr
ZW5zIHlvdXIgY29udHJvbCBvbiB0aGUgY2xhc3MgYmVjYXVzZSBub3cgaXQncyBoYXJkZXIgdG8g
bWFpbnRhaW4KLXRoZSBjbGFzcycgaW52YXJpYW50cy4gWW91IHNob3VsZCBtYWtlIGEgZnVuY3Rp
b24gdmlydHVhbCBvbmx5IHdoZW4KLXRoZXJlIGlzIGEgdmFsaWQgcmVhc29uIGZvciBhIHN1YmNs
YXNzIHRvIG92ZXJyaWRlIGl0LgotCi1Nb2NraW5nIGNvbmNyZXRlIGNsYXNzZXMgZGlyZWN0bHkg
aXMgcHJvYmxlbWF0aWMgYXMgaXQgY3JlYXRlcyBhIHRpZ2h0Ci1jb3VwbGluZyBiZXR3ZWVuIHRo
ZSBjbGFzcyBhbmQgdGhlIHRlc3RzIC0gYW55IHNtYWxsIGNoYW5nZSBpbiB0aGUKLWNsYXNzIG1h
eSBpbnZhbGlkYXRlIHlvdXIgdGVzdHMgYW5kIG1ha2UgdGVzdCBtYWludGVuYW5jZSBhIHBhaW4u
Ci0KLVRvIGF2b2lkIHN1Y2ggcHJvYmxlbXMsIG1hbnkgcHJvZ3JhbW1lcnMgaGF2ZSBiZWVuIHBy
YWN0aWNpbmcgImNvZGluZwotdG8gaW50ZXJmYWNlcyI6IGluc3RlYWQgb2YgdGFsa2luZyB0byB0
aGUgYENvbmNyZXRlYCBjbGFzcywgeW91ciBjb2RlCi13b3VsZCBkZWZpbmUgYW4gaW50ZXJmYWNl
IGFuZCB0YWxrIHRvIGl0LiBUaGVuIHlvdSBpbXBsZW1lbnQgdGhhdAotaW50ZXJmYWNlIGFzIGFu
IGFkYXB0b3Igb24gdG9wIG9mIGBDb25jcmV0ZWAuIEluIHRlc3RzLCB5b3UgY2FuIGVhc2lseQot
bW9jayB0aGF0IGludGVyZmFjZSB0byBvYnNlcnZlIGhvdyB5b3VyIGNvZGUgaXMgZG9pbmcuCi0K
LVRoaXMgdGVjaG5pcXVlIGluY3VycyBzb21lIG92ZXJoZWFkOgotCi0gICogWW91IHBheSB0aGUg
Y29zdCBvZiB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzICh1c3VhbGx5IG5vdCBhIHByb2JsZW0pLgot
ICAqIFRoZXJlIGlzIG1vcmUgYWJzdHJhY3Rpb24gZm9yIHRoZSBwcm9ncmFtbWVycyB0byBsZWFy
bi4KLQotSG93ZXZlciwgaXQgY2FuIGFsc28gYnJpbmcgc2lnbmlmaWNhbnQgYmVuZWZpdHMgaW4g
YWRkaXRpb24gdG8gYmV0dGVyCi10ZXN0YWJpbGl0eToKLQotICAqIGBDb25jcmV0ZWAncyBBUEkg
bWF5IG5vdCBmaXQgeW91ciBwcm9ibGVtIGRvbWFpbiB2ZXJ5IHdlbGwsIGFzIHlvdSBtYXkgbm90
IGJlIHRoZSBvbmx5IGNsaWVudCBpdCB0cmllcyB0byBzZXJ2ZS4gQnkgZGVzaWduaW5nIHlvdXIg
b3duIGludGVyZmFjZSwgeW91IGhhdmUgYSBjaGFuY2UgdG8gdGFpbG9yIGl0IHRvIHlvdXIgbmVl
ZCAtIHlvdSBtYXkgYWRkIGhpZ2hlci1sZXZlbCBmdW5jdGlvbmFsaXRpZXMsIHJlbmFtZSBzdHVm
ZiwgZXRjIGluc3RlYWQgb2YganVzdCB0cmltbWluZyB0aGUgY2xhc3MuIFRoaXMgYWxsb3dzIHlv
dSB0byB3cml0ZSB5b3VyIGNvZGUgKHVzZXIgb2YgdGhlIGludGVyZmFjZSkgaW4gYSBtb3JlIG5h
dHVyYWwgd2F5LCB3aGljaCBtZWFucyBpdCB3aWxsIGJlIG1vcmUgcmVhZGFibGUsIG1vcmUgbWFp
bnRhaW5hYmxlLCBhbmQgeW91J2xsIGJlIG1vcmUgcHJvZHVjdGl2ZS4KLSAgKiBJZiBgQ29uY3Jl
dGVgJ3MgaW1wbGVtZW50YXRpb24gZXZlciBoYXMgdG8gY2hhbmdlLCB5b3UgZG9uJ3QgaGF2ZSB0
byByZXdyaXRlIGV2ZXJ5d2hlcmUgaXQgaXMgdXNlZC4gSW5zdGVhZCwgeW91IGNhbiBhYnNvcmIg
dGhlIGNoYW5nZSBpbiB5b3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCB5
b3VyIG90aGVyIGNvZGUgYW5kIHRlc3RzIHdpbGwgYmUgaW5zdWxhdGVkIGZyb20gdGhpcyBjaGFu
Z2UuCi0KLVNvbWUgcGVvcGxlIHdvcnJ5IHRoYXQgaWYgZXZlcnlvbmUgaXMgcHJhY3RpY2luZyB0
aGlzIHRlY2huaXF1ZSwgdGhleQotd2lsbCBlbmQgdXAgd3JpdGluZyBsb3RzIG9mIHJlZHVuZGFu
dCBjb2RlLiBUaGlzIGNvbmNlcm4gaXMgdG90YWxseQotdW5kZXJzdGFuZGFibGUuIEhvd2V2ZXIs
IHRoZXJlIGFyZSB0d28gcmVhc29ucyB3aHkgaXQgbWF5IG5vdCBiZSB0aGUKLWNhc2U6Ci0KLSAg
KiBEaWZmZXJlbnQgcHJvamVjdHMgbWF5IG5lZWQgdG8gdXNlIGBDb25jcmV0ZWAgaW4gZGlmZmVy
ZW50IHdheXMsIHNvIHRoZSBiZXN0IGludGVyZmFjZXMgZm9yIHRoZW0gd2lsbCBiZSBkaWZmZXJl
bnQuIFRoZXJlZm9yZSwgZWFjaCBvZiB0aGVtIHdpbGwgaGF2ZSBpdHMgb3duIGRvbWFpbi1zcGVj
aWZpYyBpbnRlcmZhY2Ugb24gdG9wIG9mIGBDb25jcmV0ZWAsIGFuZCB0aGV5IHdpbGwgbm90IGJl
IHRoZSBzYW1lIGNvZGUuCi0gICogSWYgZW5vdWdoIHByb2plY3RzIHdhbnQgdG8gdXNlIHRoZSBz
YW1lIGludGVyZmFjZSwgdGhleSBjYW4gYWx3YXlzIHNoYXJlIGl0LCBqdXN0IGxpa2UgdGhleSBo
YXZlIGJlZW4gc2hhcmluZyBgQ29uY3JldGVgLiBZb3UgY2FuIGNoZWNrIGluIHRoZSBpbnRlcmZh
Y2UgYW5kIHRoZSBhZGFwdG9yIHNvbWV3aGVyZSBuZWFyIGBDb25jcmV0ZWAgKHBlcmhhcHMgaW4g
YSBgY29udHJpYmAgc3ViLWRpcmVjdG9yeSkgYW5kIGxldCBtYW55IHByb2plY3RzIHVzZSBpdC4K
LQotWW91IG5lZWQgdG8gd2VpZ2ggdGhlIHByb3MgYW5kIGNvbnMgY2FyZWZ1bGx5IGZvciB5b3Vy
IHBhcnRpY3VsYXIKLXByb2JsZW0sIGJ1dCBJJ2QgbGlrZSB0byBhc3N1cmUgeW91IHRoYXQgdGhl
IEphdmEgY29tbXVuaXR5IGhhcyBiZWVuCi1wcmFjdGljaW5nIHRoaXMgZm9yIGEgbG9uZyB0aW1l
IGFuZCBpdCdzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUKLWFwcGxpY2FibGUgaW4gYSB3
aWRlIHZhcmlldHkgb2Ygc2l0dWF0aW9ucy4gOi0pCi0KLSMjIERlbGVnYXRpbmcgQ2FsbHMgdG8g
YSBGYWtlICMjCi0KLVNvbWUgdGltZXMgeW91IGhhdmUgYSBub24tdHJpdmlhbCBmYWtlIGltcGxl
bWVudGF0aW9uIG9mIGFuCi1pbnRlcmZhY2UuIEZvciBleGFtcGxlOgotCi1gYGAKLWNsYXNzIEZv
byB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5Gb28oKSB7fQotICB2aXJ0dWFsIGNoYXIgRG9UaGlz
KGludCBuKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBEb1RoYXQoY29uc3QgY2hhciogcywgaW50KiBw
KSA9IDA7Ci19OwotCi1jbGFzcyBGYWtlRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIGNoYXIgRG9UaGlzKGludCBuKSB7Ci0gICAgcmV0dXJuIChuID4gMCkgPyAnKycgOgot
ICAgICAgICAobiA8IDApID8gJy0nIDogJzAnOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERvVGhh
dChjb25zdCBjaGFyKiBzLCBpbnQqIHApIHsKLSAgICAqcCA9IHN0cmxlbihzKTsKLSAgfQotfTsK
LWBgYAotCi1Ob3cgeW91IHdhbnQgdG8gbW9jayB0aGlzIGludGVyZmFjZSBzdWNoIHRoYXQgeW91
IGNhbiBzZXQgZXhwZWN0YXRpb25zCi1vbiBpdC4gSG93ZXZlciwgeW91IGFsc28gd2FudCB0byB1
c2UgYEZha2VGb29gIGZvciB0aGUgZGVmYXVsdAotYmVoYXZpb3IsIGFzIGR1cGxpY2F0aW5nIGl0
IGluIHRoZSBtb2NrIG9iamVjdCBpcywgd2VsbCwgYSBsb3Qgb2YKLXdvcmsuCi0KLVdoZW4geW91
IGRlZmluZSB0aGUgbW9jayBjbGFzcyB1c2luZyBHb29nbGUgTW9jaywgeW91IGNhbiBoYXZlIGl0
Ci1kZWxlZ2F0ZSBpdHMgZGVmYXVsdCBhY3Rpb24gdG8gYSBmYWtlIGNsYXNzIHlvdSBhbHJlYWR5
IGhhdmUsIHVzaW5nCi10aGlzIHBhdHRlcm46Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwot
dXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
LSBwdWJsaWM6Ci0gIC8vIE5vcm1hbCBtb2NrIG1ldGhvZCBkZWZpbml0aW9ucyB1c2luZyBHb29n
bGUgTW9jay4KLSAgTU9DS19NRVRIT0QxKERvVGhpcywgY2hhcihpbnQgbikpOwotICBNT0NLX01F
VEhPRDIoRG9UaGF0LCB2b2lkKGNvbnN0IGNoYXIqIHMsIGludCogcCkpOwotCi0gIC8vIERlbGVn
YXRlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtZXRob2RzIHRvIGEgRmFrZUZvbyBvYmpl
Y3QuCi0gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgKmJlZm9yZSogdGhlIGN1c3RvbSBPTl9DQUxM
KCkgc3RhdGVtZW50cy4KLSAgdm9pZCBEZWxlZ2F0ZVRvRmFrZSgpIHsKLSAgICBPTl9DQUxMKCp0
aGlzLCBEb1RoaXMoXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZG
YWtlRm9vOjpEb1RoaXMpKTsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoYXQoXywgXykpCi0gICAg
ICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmZmFrZV8sICZGYWtlRm9vOjpEb1RoYXQpKTsKLSAg
fQotIHByaXZhdGU6Ci0gIEZha2VGb28gZmFrZV87ICAvLyBLZWVwcyBhbiBpbnN0YW5jZSBvZiB0
aGUgZmFrZSBpbiB0aGUgbW9jay4KLX07Ci1gYGAKLQotV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBg
TW9ja0Zvb2AgaW4geW91ciB0ZXN0cyBhcyB1c3VhbC4gSnVzdCByZW1lbWJlcgotdGhhdCBpZiB5
b3UgZG9uJ3QgZXhwbGljaXRseSBzZXQgYW4gYWN0aW9uIGluIGFuIGBPTl9DQUxMKClgIG9yCi1g
RVhQRUNUX0NBTEwoKWAsIHRoZSBmYWtlIHdpbGwgYmUgY2FsbGVkIHVwb24gdG8gZG8gaXQ6Ci0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1URVNUKEFiY1Rlc3QsIFh5eikgewotICBNb2Nr
Rm9vIGZvbzsKLSAgZm9vLkRlbGVnYXRlVG9GYWtlKCk7IC8vIEVuYWJsZXMgdGhlIGZha2UgZm9y
IGRlbGVnYXRpb24uCi0KLSAgLy8gUHV0IHlvdXIgT05fQ0FMTChmb28sIC4uLilzIGhlcmUsIGlm
IGFueS4KLQotICAvLyBObyBhY3Rpb24gc3BlY2lmaWVkLCBtZWFuaW5nIHRvIHVzZSB0aGUgZGVm
YXVsdCBhY3Rpb24uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKDUpKTsKLSAgRVhQRUNUX0NB
TEwoZm9vLCBEb1RoYXQoXywgXykpOwotCi0gIGludCBuID0gMDsKLSAgRVhQRUNUX0VRKCcrJywg
Zm9vLkRvVGhpcyg1KSk7ICAvLyBGYWtlRm9vOjpEb1RoaXMoKSBpcyBpbnZva2VkLgotICBmb28u
RG9UaGF0KCJIaSIsICZuKTsgICAgICAgICAgIC8vIEZha2VGb286OkRvVGhhdCgpIGlzIGludm9r
ZWQuCi0gIEVYUEVDVF9FUSgyLCBuKTsKLX0KLWBgYAotCi0qKlNvbWUgdGlwczoqKgotCi0gICog
SWYgeW91IHdhbnQsIHlvdSBjYW4gc3RpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYWN0aW9uIGJ5
IHByb3ZpZGluZyB5b3VyIG93biBgT05fQ0FMTCgpYCBvciB1c2luZyBgLldpbGxPbmNlKClgIC8g
YC5XaWxsUmVwZWF0ZWRseSgpYCBpbiBgRVhQRUNUX0NBTEwoKWAuCi0gICogSW4gYERlbGVnYXRl
VG9GYWtlKClgLCB5b3Ugb25seSBuZWVkIHRvIGRlbGVnYXRlIHRoZSBtZXRob2RzIHdob3NlIGZh
a2UgaW1wbGVtZW50YXRpb24geW91IGludGVuZCB0byB1c2UuCi0gICogVGhlIGdlbmVyYWwgdGVj
aG5pcXVlIGRpc2N1c3NlZCBoZXJlIHdvcmtzIGZvciBvdmVybG9hZGVkIG1ldGhvZHMsIGJ1dCB5
b3UnbGwgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxlciB3aGljaCB2ZXJzaW9uIHlvdSBtZWFuLiBU
byBkaXNhbWJpZ3VhdGUgYSBtb2NrIGZ1bmN0aW9uICh0aGUgb25lIHlvdSBzcGVjaWZ5IGluc2lk
ZSB0aGUgcGFyZW50aGVzZXMgb2YgYE9OX0NBTEwoKWApLCBzZWUgdGhlICJTZWxlY3RpbmcgQmV0
d2VlbiBPdmVybG9hZGVkIEZ1bmN0aW9ucyIgc2VjdGlvbiBvbiB0aGlzIHBhZ2U7IHRvIGRpc2Ft
YmlndWF0ZSBhIGZha2UgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHBsYWNlIGluc2lkZSBgSW52b2tl
KClgKSwgdXNlIGEgYHN0YXRpY19jYXN0YCB0byBzcGVjaWZ5IHRoZSBmdW5jdGlvbidzIHR5cGUu
Ci0gICogSGF2aW5nIHRvIG1peCBhIG1vY2sgYW5kIGEgZmFrZSBpcyBvZnRlbiBhIHNpZ24gb2Yg
c29tZXRoaW5nIGdvbmUgd3JvbmcuIFBlcmhhcHMgeW91IGhhdmVuJ3QgZ290IHVzZWQgdG8gdGhl
IGludGVyYWN0aW9uLWJhc2VkIHdheSBvZiB0ZXN0aW5nIHlldC4gT3IgcGVyaGFwcyB5b3VyIGlu
dGVyZmFjZSBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMgYW5kIHNob3VsZCBiZSBzcGxpdCB1
cC4gVGhlcmVmb3JlLCAqKmRvbid0IGFidXNlIHRoaXMqKi4gV2Ugd291bGQgb25seSByZWNvbW1l
bmQgdG8gZG8gaXQgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiB5b3UgYXJlIHJlZmFjdG9y
aW5nIHlvdXIgY29kZS4KLQotUmVnYXJkaW5nIHRoZSB0aXAgb24gbWl4aW5nIGEgbW9jayBhbmQg
YSBmYWtlLCBoZXJlJ3MgYW4gZXhhbXBsZSBvbgotd2h5IGl0IG1heSBiZSBhIGJhZCBzaWduOiBT
dXBwb3NlIHlvdSBoYXZlIGEgY2xhc3MgYFN5c3RlbWAgZm9yCi1sb3ctbGV2ZWwgc3lzdGVtIG9w
ZXJhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGRvZXMgZmlsZSBhbmQgSS9PCi1vcGVyYXRpb25z
LiBBbmQgc3VwcG9zZSB5b3Ugd2FudCB0byB0ZXN0IGhvdyB5b3VyIGNvZGUgdXNlcyBgU3lzdGVt
YAotdG8gZG8gSS9PLCBhbmQgeW91IGp1c3Qgd2FudCB0aGUgZmlsZSBvcGVyYXRpb25zIHRvIHdv
cmsgbm9ybWFsbHkuIElmCi15b3UgbW9jayBvdXQgdGhlIGVudGlyZSBgU3lzdGVtYCBjbGFzcywg
eW91J2xsIGhhdmUgdG8gcHJvdmlkZSBhIGZha2UKLWltcGxlbWVudGF0aW9uIGZvciB0aGUgZmls
ZSBvcGVyYXRpb24gcGFydCwgd2hpY2ggc3VnZ2VzdHMgdGhhdAotYFN5c3RlbWAgaXMgdGFraW5n
IG9uIHRvbyBtYW55IHJvbGVzLgotCi1JbnN0ZWFkLCB5b3UgY2FuIGRlZmluZSBhIGBGaWxlT3Bz
YCBpbnRlcmZhY2UgYW5kIGFuIGBJT09wc2AgaW50ZXJmYWNlCi1hbmQgc3BsaXQgYFN5c3RlbWAn
cyBmdW5jdGlvbmFsaXRpZXMgaW50byB0aGUgdHdvLiBUaGVuIHlvdSBjYW4gbW9jawotYElPT3Bz
YCB3aXRob3V0IG1vY2tpbmcgYEZpbGVPcHNgLgotCi0jIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEg
UmVhbCBPYmplY3QgIyMKLQotV2hlbiB1c2luZyB0ZXN0aW5nIGRvdWJsZXMgKG1vY2tzLCBmYWtl
cywgc3R1YnMsIGFuZCBldGMpLCBzb21ldGltZXMKLXRoZWlyIGJlaGF2aW9ycyB3aWxsIGRpZmZl
ciBmcm9tIHRob3NlIG9mIHRoZSByZWFsIG9iamVjdHMuIFRoaXMKLWRpZmZlcmVuY2UgY291bGQg
YmUgZWl0aGVyIGludGVudGlvbmFsIChhcyBpbiBzaW11bGF0aW5nIGFuIGVycm9yIHN1Y2gKLXRo
YXQgeW91IGNhbiB0ZXN0IHRoZSBlcnJvciBoYW5kbGluZyBjb2RlKSBvciB1bmludGVudGlvbmFs
LiBJZiB5b3VyCi1tb2NrcyBoYXZlIGRpZmZlcmVudCBiZWhhdmlvcnMgdGhhbiB0aGUgcmVhbCBv
YmplY3RzIGJ5IG1pc3Rha2UsIHlvdQotY291bGQgZW5kIHVwIHdpdGggY29kZSB0aGF0IHBhc3Nl
cyB0aGUgdGVzdHMgYnV0IGZhaWxzIGluIHByb2R1Y3Rpb24uCi0KLVlvdSBjYW4gdXNlIHRoZSBf
ZGVsZWdhdGluZy10by1yZWFsXyB0ZWNobmlxdWUgdG8gZW5zdXJlIHRoYXQgeW91cgotbW9jayBo
YXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgdGhlIHJlYWwgb2JqZWN0IHdoaWxlIHJldGFpbmluZyB0
aGUKLWFiaWxpdHkgdG8gdmFsaWRhdGUgY2FsbHMuIFRoaXMgdGVjaG5pcXVlIGlzIHZlcnkgc2lt
aWxhciB0byB0aGUKLWRlbGVnYXRpbmctdG8tZmFrZSB0ZWNobmlxdWUsIHRoZSBkaWZmZXJlbmNl
IGJlaW5nIHRoYXQgd2UgdXNlIGEgcmVhbAotb2JqZWN0IGluc3RlYWQgb2YgYSBmYWtlLiBIZXJl
J3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6OkF0TGVhc3Q7Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6
IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTW9ja0ZvbygpIHsKLSAgICAvLyBCeSBkZWZhdWx0
LCBhbGwgY2FsbHMgYXJlIGRlbGVnYXRlZCB0byB0aGUgcmVhbCBvYmplY3QuCi0gICAgT05fQ0FM
TCgqdGhpcywgRG9UaGlzKCkpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmcmVhbF8s
ICZGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChfKSkKLSAgICAgICAg
LldpbGxCeURlZmF1bHQoSW52b2tlKCZyZWFsXywgJkZvbzo6RG9UaGF0KSk7Ci0gICAgLi4uCi0g
IH0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgLi4uKTsKLSAgTU9DS19NRVRIT0QxKERvVGhhdCwg
Li4uKTsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgRm9vIHJlYWxfOwotfTsKLS4uLgotCi0gIE1vY2tG
b28gbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoaXMoKSkKLSAgICAgIC5UaW1lcygz
KTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGF0KCJIaSIpKQotICAgICAgLlRpbWVzKEF0TGVh
c3QoMSkpOwotICAuLi4gdXNlIG1vY2sgaW4gdGVzdCAuLi4KLWBgYAotCi1XaXRoIHRoaXMsIEdv
b2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoYXQgeW91ciBjb2RlIG1hZGUgdGhlIHJpZ2h0IGNhbGxz
Ci0od2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLCBpbiB0aGUgcmlnaHQgb3JkZXIsIGNhbGxlZCB0
aGUgcmlnaHQgbnVtYmVyCi1vZiB0aW1lcywgZXRjKSwgYW5kIGEgcmVhbCBvYmplY3Qgd2lsbCBh
bnN3ZXIgdGhlIGNhbGxzIChzbyB0aGUKLWJlaGF2aW9yIHdpbGwgYmUgdGhlIHNhbWUgYXMgaW4g
cHJvZHVjdGlvbikuIFRoaXMgZ2l2ZXMgeW91IHRoZSBiZXN0Ci1vZiBib3RoIHdvcmxkcy4KLQot
IyMgRGVsZWdhdGluZyBDYWxscyB0byBhIFBhcmVudCBDbGFzcyAjIwotCi1JZGVhbGx5LCB5b3Ug
c2hvdWxkIGNvZGUgdG8gaW50ZXJmYWNlcywgd2hvc2UgbWV0aG9kcyBhcmUgYWxsIHB1cmUKLXZp
cnR1YWwuIEluIHJlYWxpdHksIHNvbWV0aW1lcyB5b3UgZG8gbmVlZCB0byBtb2NrIGEgdmlydHVh
bCBtZXRob2QKLXRoYXQgaXMgbm90IHB1cmUgKGkuZSwgaXQgYWxyZWFkeSBoYXMgYW4gaW1wbGVt
ZW50YXRpb24pLiBGb3IgZXhhbXBsZToKLQotYGBgCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAg
dmlydHVhbCB+Rm9vKCk7Ci0KLSAgdmlydHVhbCB2b2lkIFB1cmUoaW50IG4pID0gMDsKLSAgdmly
dHVhbCBpbnQgQ29uY3JldGUoY29uc3QgY2hhciogc3RyKSB7IC4uLiB9Ci19OwotCi1jbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBtZXRo
b2QuCi0gIE1PQ0tfTUVUSE9EMShQdXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBj
b25jcmV0ZSBtZXRob2QuICBGb286OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVU
SE9EMShDb25jcmV0ZSwgaW50KGNvbnN0IGNoYXIqIHN0cikpOwotfTsKLWBgYAotCi1Tb21ldGlt
ZXMgeW91IG1heSB3YW50IHRvIGNhbGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zdGVhZCBvZgotYE1v
Y2tGb286OkNvbmNyZXRlKClgLiBQZXJoYXBzIHlvdSB3YW50IHRvIGRvIGl0IGFzIHBhcnQgb2Yg
YSBzdHViCi1hY3Rpb24sIG9yIHBlcmhhcHMgeW91ciB0ZXN0IGRvZXNuJ3QgbmVlZCB0byBtb2Nr
IGBDb25jcmV0ZSgpYCBhdCBhbGwKLShidXQgaXQgd291bGQgYmUgb2gtc28gcGFpbmZ1bCB0byBo
YXZlIHRvIGRlZmluZSBhIG5ldyBtb2NrIGNsYXNzCi13aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0
byBtb2NrIG9uZSBvZiBpdHMgbWV0aG9kcykuCi0KLVRoZSB0cmljayBpcyB0byBsZWF2ZSBhIGJh
Y2sgZG9vciBpbiB5b3VyIG1vY2sgY2xhc3MgZm9yIGFjY2Vzc2luZyB0aGUKLXJlYWwgbWV0aG9k
cyBpbiB0aGUgYmFzZSBjbGFzczoKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7
Ci0gcHVibGljOgotICAvLyBNb2NraW5nIGEgcHVyZSBtZXRob2QuCi0gIE1PQ0tfTUVUSE9EMShQ
dXJlLCB2b2lkKGludCBuKSk7Ci0gIC8vIE1vY2tpbmcgYSBjb25jcmV0ZSBtZXRob2QuICBGb286
OkNvbmNyZXRlKCkgaXMgc2hhZG93ZWQuCi0gIE1PQ0tfTUVUSE9EMShDb25jcmV0ZSwgaW50KGNv
bnN0IGNoYXIqIHN0cikpOwotCi0gIC8vIFVzZSB0aGlzIHRvIGNhbGwgQ29uY3JldGUoKSBkZWZp
bmVkIGluIEZvby4KLSAgaW50IEZvb0NvbmNyZXRlKGNvbnN0IGNoYXIqIHN0cikgeyByZXR1cm4g
Rm9vOjpDb25jcmV0ZShzdHIpOyB9Ci19OwotYGBgCi0KLU5vdywgeW91IGNhbiBjYWxsIGBGb286
OkNvbmNyZXRlKClgIGluc2lkZSBhbiBhY3Rpb24gYnk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBD
b25jcmV0ZShfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0Nv
bmNyZXRlKSk7Ci1gYGAKLQotb3IgdGVsbCB0aGUgbW9jayBvYmplY3QgdGhhdCB5b3UgZG9uJ3Qg
d2FudCB0byBtb2NrIGBDb25jcmV0ZSgpYDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Okludm9r
ZTsKLS4uLgotICBPTl9DQUxMKGZvbywgQ29uY3JldGUoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVs
dChJbnZva2UoJmZvbywgJk1vY2tGb286OkZvb0NvbmNyZXRlKSk7Ci1gYGAKLQotKFdoeSBkb24n
dCB3ZSBqdXN0IHdyaXRlIGBJbnZva2UoJmZvbywgJkZvbzo6Q29uY3JldGUpYD8gSWYgeW91IGRv
Ci10aGF0LCBgTW9ja0Zvbzo6Q29uY3JldGUoKWAgd2lsbCBiZSBjYWxsZWQgKGFuZCBjYXVzZSBh
biBpbmZpbml0ZQotcmVjdXJzaW9uKSBzaW5jZSBgRm9vOjpDb25jcmV0ZSgpYCBpcyB2aXJ0dWFs
LiBUaGF0J3MganVzdCBob3cgQysrCi13b3Jrcy4pCi0KLSMgVXNpbmcgTWF0Y2hlcnMgIwotCi0j
IyBNYXRjaGluZyBBcmd1bWVudCBWYWx1ZXMgRXhhY3RseSAjIwotCi1Zb3UgY2FuIHNwZWNpZnkg
ZXhhY3RseSB3aGljaCBhcmd1bWVudHMgYSBtb2NrIG1ldGhvZCBpcyBleHBlY3Rpbmc6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1Ro
aXMoNSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwotICBFWFBFQ1RfQ0FMTChmb28s
IERvVGhhdCgiSGVsbG8iLCBiYXIpKTsKLWBgYAotCi0jIyBVc2luZyBTaW1wbGUgTWF0Y2hlcnMg
IyMKLQotWW91IGNhbiB1c2UgbWF0Y2hlcnMgdG8gbWF0Y2ggYXJndW1lbnRzIHRoYXQgaGF2ZSBh
IGNlcnRhaW4gcHJvcGVydHk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6
dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIEVYUEVD
VF9DQUxMKGZvbywgRG9UaGlzKEdlKDUpKSkgIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlID49IDUu
Ci0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCdhJykpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhh
dCgiSGVsbG8iLCBOb3ROdWxsKCkpKTsKLSAgLy8gVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IG5v
dCBiZSBOVUxMLgotYGBgCi0KLUEgZnJlcXVlbnRseSB1c2VkIG1hdGNoZXIgaXMgYF9gLCB3aGlj
aCBtYXRjaGVzIGFueXRoaW5nOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6
dGVzdGluZzo6Tm90TnVsbDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBOb3RO
dWxsKCkpKTsKLWBgYAotCi0jIyBDb21iaW5pbmcgTWF0Y2hlcnMgIyMKLQotWW91IGNhbiBidWls
ZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gZXhpc3Rpbmcgb25lcyB1c2luZyBgQWxsT2YoKWAsCi1g
QW55T2YoKWAsIGFuZCBgTm90KClgOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11
c2luZyA6OnRlc3Rpbmc6Okd0OwotdXNpbmcgOjp0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11c2luZyA6
OnRlc3Rpbmc6Ok5lOwotdXNpbmcgOjp0ZXN0aW5nOjpOb3Q7Ci0uLi4KLSAgLy8gVGhlIGFyZ3Vt
ZW50IG11c3QgYmUgPiA1IGFuZCAhPSAxMC4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoQWxs
T2YoR3QoNSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDEwKSkpKTsKLQot
ICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgY29udGFpbiBzdWItc3RyaW5nICJibGFo
Ii4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoTm90KEhhc1N1YnN0cigiYmxhaCIpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwotYGBgCi0KLSMjIENhc3RpbmcgTWF0Y2hl
cnMgIyMKLQotR29vZ2xlIE1vY2sgbWF0Y2hlcnMgYXJlIHN0YXRpY2FsbHkgdHlwZWQsIG1lYW5p
bmcgdGhhdCB0aGUgY29tcGlsZXIKLWNhbiBjYXRjaCB5b3VyIG1pc3Rha2UgaWYgeW91IHVzZSBh
IG1hdGNoZXIgb2YgdGhlIHdyb25nIHR5cGUgKGZvcgotZXhhbXBsZSwgaWYgeW91IHVzZSBgRXEo
NSlgIHRvIG1hdGNoIGEgYHN0cmluZ2AgYXJndW1lbnQpLiBHb29kIGZvcgoteW91IQotCi1Tb21l
dGltZXMsIGhvd2V2ZXIsIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nIGFuZCB3YW50IHRoZSBj
b21waWxlcgotdG8gZ2l2ZSB5b3Ugc29tZSBzbGFjay4gT25lIGV4YW1wbGUgaXMgdGhhdCB5b3Ug
aGF2ZSBhIG1hdGNoZXIgZm9yCi1gbG9uZ2AgYW5kIHRoZSBhcmd1bWVudCB5b3Ugd2FudCB0byBt
YXRjaCBpcyBgaW50YC4gV2hpbGUgdGhlIHR3bwotdHlwZXMgYXJlbid0IGV4YWN0bHkgdGhlIHNh
bWUsIHRoZXJlIGlzIG5vdGhpbmcgcmVhbGx5IHdyb25nIHdpdGgKLXVzaW5nIGEgYE1hdGNoZXI8
bG9uZz5gIHRvIG1hdGNoIGFuIGBpbnRgIC0gYWZ0ZXIgYWxsLCB3ZSBjYW4gZmlyc3QKLWNvbnZl
cnQgdGhlIGBpbnRgIGFyZ3VtZW50IHRvIGEgYGxvbmdgIGJlZm9yZSBnaXZpbmcgaXQgdG8gdGhl
Ci1tYXRjaGVyLgotCi1UbyBzdXBwb3J0IHRoaXMgbmVlZCwgR29vZ2xlIE1vY2sgZ2l2ZXMgeW91
IHRoZQotYFNhZmVNYXRjaGVyQ2FzdDxUPihtKWAgZnVuY3Rpb24uIEl0IGNhc3RzIGEgbWF0Y2hl
ciBgbWAgdG8gdHlwZQotYE1hdGNoZXI8VD5gLiBUbyBlbnN1cmUgc2FmZXR5LCBHb29nbGUgTW9j
ayBjaGVja3MgdGhhdCAobGV0IGBVYCBiZSB0aGUKLXR5cGUgYG1gIGFjY2VwdHMpOgotCi0gIDEu
IFR5cGUgYFRgIGNhbiBiZSBpbXBsaWNpdGx5IGNhc3QgdG8gdHlwZSBgVWA7Ci0gIDEuIFdoZW4g
Ym90aCBgVGAgYW5kIGBVYCBhcmUgYnVpbHQtaW4gYXJpdGhtZXRpYyB0eXBlcyAoYGJvb2xgLCBp
bnRlZ2VycywgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMpLCB0aGUgY29udmVyc2lvbiBmcm9t
IGBUYCB0byBgVWAgaXMgbm90IGxvc3N5IChpbiBvdGhlciB3b3JkcywgYW55IHZhbHVlIHJlcHJl
c2VudGFibGUgYnkgYFRgIGNhbiBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IGBVYCk7IGFuZAotICAx
LiBXaGVuIGBVYCBpcyBhIHJlZmVyZW5jZSwgYFRgIG11c3QgYWxzbyBiZSBhIHJlZmVyZW5jZSAo
YXMgdGhlIHVuZGVybHlpbmcgbWF0Y2hlciBtYXkgYmUgaW50ZXJlc3RlZCBpbiB0aGUgYWRkcmVz
cyBvZiB0aGUgYFVgIHZhbHVlKS4KLQotVGhlIGNvZGUgd29uJ3QgY29tcGlsZSBpZiBhbnkgb2Yg
dGhlc2UgY29uZGl0aW9ucyBpc24ndCBtZXQuCi0KLUhlcmUncyBvbmUgZXhhbXBsZToKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDsKLQotLy8gQSBiYXNlIGNsYXNzIGFu
ZCBhIGNoaWxkIGNsYXNzLgotY2xhc3MgQmFzZSB7IC4uLiB9OwotY2xhc3MgRGVyaXZlZCA6IHB1
YmxpYyBCYXNlIHsgLi4uIH07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJs
aWM6Ci0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIHZvaWQoRGVyaXZlZCogZGVyaXZlZCkpOwotfTsK
LS4uLgotCi0gIE1vY2tGb28gZm9vOwotICAvLyBtIGlzIGEgTWF0Y2hlcjxCYXNlKj4gd2UgZ290
IGZyb20gc29tZXdoZXJlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhTYWZlTWF0Y2hlckNh
c3Q8RGVyaXZlZCo+KG0pKSk7Ci1gYGAKLQotSWYgeW91IGZpbmQgYFNhZmVNYXRjaGVyQ2FzdDxU
PihtKWAgdG9vIGxpbWl0aW5nLCB5b3UgY2FuIHVzZSBhIHNpbWlsYXIKLWZ1bmN0aW9uIGBNYXRj
aGVyQ2FzdDxUPihtKWAuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgYE1hdGNoZXJDYXN0YCB3b3Jr
cwotYXMgbG9uZyBhcyB5b3UgY2FuIGBzdGF0aWNfY2FzdGAgdHlwZSBgVGAgdG8gdHlwZSBgVWAu
Ci0KLWBNYXRjaGVyQ2FzdGAgZXNzZW50aWFsbHkgbGV0cyB5b3UgYnlwYXNzIEMrKydzIHR5cGUg
c3lzdGVtCi0oYHN0YXRpY19jYXN0YCBpc24ndCBhbHdheXMgc2FmZSBhcyBpdCBjb3VsZCB0aHJv
dyBhd2F5IGluZm9ybWF0aW9uLAotZm9yIGV4YW1wbGUpLCBzbyBiZSBjYXJlZnVsIG5vdCB0byBt
aXN1c2UvYWJ1c2UgaXQuCi0KLSMjIFNlbGVjdGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rp
b25zICMjCi0KLUlmIHlvdSBleHBlY3QgYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbiB0byBiZSBjYWxs
ZWQsIHRoZSBjb21waWxlciBtYXkKLW5lZWQgc29tZSBoZWxwIG9uIHdoaWNoIG92ZXJsb2FkZWQg
dmVyc2lvbiBpdCBpcy4KLQotVG8gZGlzYW1iaWd1YXRlIGZ1bmN0aW9ucyBvdmVybG9hZGVkIG9u
IHRoZSBjb25zdC1uZXNzIG9mIHRoaXMgb2JqZWN0LAotdXNlIHRoZSBgQ29uc3QoKWAgYXJndW1l
bnQgd3JhcHBlci4KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsKLQotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFy
JigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldEJhciwgY29uc3QgQmFyJigpKTsKLX07Ci0u
Li4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjEsIGJhcjI7Ci0gIEVYUEVDVF9DQUxMKGZv
bywgR2V0QmFyKCkpICAgICAgICAgLy8gVGhlIG5vbi1jb25zdCBHZXRCYXIoKS4KLSAgICAgIC5X
aWxsT25jZShSZXR1cm5SZWYoYmFyMSkpOwotICBFWFBFQ1RfQ0FMTChDb25zdChmb28pLCBHZXRC
YXIoKSkgIC8vIFRoZSBjb25zdCBHZXRCYXIoKS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYo
YmFyMikpOwotYGBgCi0KLShgQ29uc3QoKWAgaXMgZGVmaW5lZCBieSBHb29nbGUgTW9jayBhbmQg
cmV0dXJucyBhIGBjb25zdGAgcmVmZXJlbmNlCi10byBpdHMgYXJndW1lbnQuKQotCi1UbyBkaXNh
bWJpZ3VhdGUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJn
dW1lbnRzCi1idXQgZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLCB5b3UgbWF5IG5lZWQgdG8gc3Bl
Y2lmeSB0aGUgZXhhY3QgdHlwZQotb2YgYSBtYXRjaGVyLCBlaXRoZXIgYnkgd3JhcHBpbmcgeW91
ciBtYXRjaGVyIGluIGBNYXRjaGVyPHR5cGU+KClgLCBvcgotdXNpbmcgYSBtYXRjaGVyIHdob3Nl
IHR5cGUgaXMgZml4ZWQgKGBUeXBlZEVxPHR5cGU+YCwgYEFuPHR5cGU+KClgLAotZXRjKToKLQot
YGBgCi11c2luZyA6OnRlc3Rpbmc6OkFuOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5nIDo6
dGVzdGluZzo6TWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6VHlwZWRFcTsKLQotY2xhc3MgTW9j
a1ByaW50ZXIgOiBwdWJsaWMgUHJpbnRlciB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEoUHJp
bnQsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0QxKFByaW50LCB2b2lkKGNoYXIgYykpOwot
fTsKLQotVEVTVChQcmludGVyVGVzdCwgUHJpbnQpIHsKLSAgTW9ja1ByaW50ZXIgcHJpbnRlcjsK
LQotICBFWFBFQ1RfQ0FMTChwcmludGVyLCBQcmludChBbjxpbnQ+KCkpKTsgICAgICAgICAgICAv
LyB2b2lkIFByaW50KGludCk7Ci0gIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KE1hdGNoZXI8
aW50PihMdCg1KSkpKTsgIC8vIHZvaWQgUHJpbnQoaW50KTsKLSAgRVhQRUNUX0NBTEwocHJpbnRl
ciwgUHJpbnQoVHlwZWRFcTxjaGFyPignYScpKSk7ICAgLy8gdm9pZCBQcmludChjaGFyKTsKLQot
ICBwcmludGVyLlByaW50KDMpOwotICBwcmludGVyLlByaW50KDYpOwotICBwcmludGVyLlByaW50
KCdhJyk7Ci19Ci1gYGAKLQotIyMgUGVyZm9ybWluZyBEaWZmZXJlbnQgQWN0aW9ucyBCYXNlZCBv
biB0aGUgQXJndW1lbnRzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIHRoZSBf
bGFzdF8gbWF0Y2hpbmcgZXhwZWN0YXRpb24gdGhhdCdzCi1zdGlsbCBhY3RpdmUgd2lsbCBiZSBz
ZWxlY3RlZCAodGhpbmsgIm5ld2VyIG92ZXJyaWRlcyBvbGRlciIpLiBTbywgeW91Ci1jYW4gbWFr
ZSBhIG1ldGhvZCBkbyBkaWZmZXJlbnQgdGhpbmdzIGRlcGVuZGluZyBvbiBpdHMgYXJndW1lbnQg
dmFsdWVzCi1saWtlIHRoaXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpMdDsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIC8vIFRoZSBkZWZh
dWx0IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8pKQotICAgICAgLldpbGxSZXBl
YXRlZGx5KFJldHVybignYicpKTsKLQotICAvLyBUaGUgbW9yZSBzcGVjaWZpYyBjYXNlLgotICBF
WFBFQ1RfQ0FMTChmb28sIERvVGhpcyhMdCg1KSkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0
dXJuKCdhJykpOwotYGBgCi0KLU5vdywgaWYgYGZvby5Eb1RoaXMoKWAgaXMgY2FsbGVkIHdpdGgg
YSB2YWx1ZSBsZXNzIHRoYW4gNSwgYCdhJ2Agd2lsbAotYmUgcmV0dXJuZWQ7IG90aGVyd2lzZSBg
J2InYCB3aWxsIGJlIHJldHVybmVkLgotCi0jIyBNYXRjaGluZyBNdWx0aXBsZSBBcmd1bWVudHMg
YXMgYSBXaG9sZSAjIwotCi1Tb21ldGltZXMgaXQncyBub3QgZW5vdWdoIHRvIG1hdGNoIHRoZSBh
cmd1bWVudHMgaW5kaXZpZHVhbGx5LiBGb3IKLWV4YW1wbGUsIHdlIG1heSB3YW50IHRvIHNheSB0
aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGxlc3MgdGhhbgotdGhlIHNlY29uZCBhcmd1
bWVudC4gVGhlIGBXaXRoKClgIGNsYXVzZSBhbGxvd3MgdXMgdG8gbWF0Y2gKLWFsbCBhcmd1bWVu
dHMgb2YgYSBtb2NrIGZ1bmN0aW9uIGFzIGEgd2hvbGUuIEZvciBleGFtcGxlLAotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci11c2luZyA6OnRlc3Rpbmc6
Ok5lOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgSW5SYW5nZShOZSgwKSwgXykpCi0gICAgICAu
V2l0aChMdCgpKTsKLWBgYAotCi1zYXlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGBJblJh
bmdlKClgIG11c3Qgbm90IGJlIDAsIGFuZCBtdXN0IGJlCi1sZXNzIHRoYW4gdGhlIHNlY29uZCBh
cmd1bWVudC4KLQotVGhlIGV4cHJlc3Npb24gaW5zaWRlIGBXaXRoKClgIG11c3QgYmUgYSBtYXRj
aGVyIG9mIHR5cGUKLWBNYXRjaGVyPHRyMTo6dHVwbGU8QTEsIC4uLiwgQW4+ID5gLCB3aGVyZSBg
QTFgLCAuLi4sIGBBbmAgYXJlIHRoZQotdHlwZXMgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cy4K
LQotWW91IGNhbiBhbHNvIHdyaXRlIGBBbGxBcmdzKG0pYCBpbnN0ZWFkIG9mIGBtYCBpbnNpZGUg
YC5XaXRoKClgLiBUaGUKLXR3byBmb3JtcyBhcmUgZXF1aXZhbGVudCwgYnV0IGAuV2l0aChBbGxB
cmdzKEx0KCkpKWAgaXMgbW9yZSByZWFkYWJsZQotdGhhbiBgLldpdGgoTHQoKSlgLgotCi1Zb3Ug
Y2FuIHVzZSBgQXJnczxrMSwgLi4uLCBrbj4obSlgIHRvIG1hdGNoIHRoZSBgbmAgc2VsZWN0ZWQg
YXJndW1lbnRzCi1hZ2FpbnN0IGBtYC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6QXJnczsK
LXVzaW5nIDo6dGVzdGluZzo6THQ7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCbGFoKF8sIF8s
IF8pKQotICAgICAgLldpdGgoQWxsT2YoQXJnczwwLCAxPihMdCgpKSwgQXJnczwxLCAyPihMdCgp
KSkpOwotYGBgCi0KLXNheXMgdGhhdCBgQmxhaCgpYCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFyZ3Vt
ZW50cyBgeGAsIGB5YCwgYW5kIGB6YCB3aGVyZQotYHggPCB5IDwgemAuCi0KLUFzIGEgY29udmVu
aWVuY2UgYW5kIGV4YW1wbGUsIEdvb2dsZSBNb2NrIHByb3ZpZGVzIHNvbWUgbWF0Y2hlcnMgZm9y
Ci0yLXR1cGxlcywgaW5jbHVkaW5nIHRoZSBgTHQoKWAgbWF0Y2hlciBhYm92ZS4gU2VlIHRoZSBb
Q2hlYXRTaGVldF0oVjFfNV9DaGVhdFNoZWV0Lm1kKSBmb3IKLXRoZSBjb21wbGV0ZSBsaXN0Lgot
Ci0jIyBVc2luZyBNYXRjaGVycyBhcyBQcmVkaWNhdGVzICMjCi0KLUhhdmUgeW91IG5vdGljZWQg
dGhhdCBhIG1hdGNoZXIgaXMganVzdCBhIGZhbmN5IHByZWRpY2F0ZSB0aGF0IGFsc28KLWtub3dz
IGhvdyB0byBkZXNjcmliZSBpdHNlbGY/IE1hbnkgZXhpc3RpbmcgYWxnb3JpdGhtcyB0YWtlIHBy
ZWRpY2F0ZXMKLWFzIGFyZ3VtZW50cyAoZS5nLiB0aG9zZSBkZWZpbmVkIGluIFNUTCdzIGA8YWxn
b3JpdGhtPmAgaGVhZGVyKSwgYW5kCi1pdCB3b3VsZCBiZSBhIHNoYW1lIGlmIEdvb2dsZSBNb2Nr
IG1hdGNoZXJzIGFyZSBub3QgYWxsb3dlZCB0bwotcGFydGljaXBhdGUuCi0KLUx1Y2tpbHksIHlv
dSBjYW4gdXNlIGEgbWF0Y2hlciB3aGVyZSBhIHVuYXJ5IHByZWRpY2F0ZSBmdW5jdG9yIGlzCi1l
eHBlY3RlZCBieSB3cmFwcGluZyBpdCBpbnNpZGUgdGhlIGBNYXRjaGVzKClgIGZ1bmN0aW9uLiBG
b3IgZXhhbXBsZSwKLQotYGBgCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotc3RkOjp2ZWN0b3I8aW50PiB2OwotLi4uCi0vLyBIb3cgbWFueSBlbGVtZW50cyBpbiB2
IGFyZSA+PSAxMD8KLWNvbnN0IGludCBjb3VudCA9IGNvdW50X2lmKHYuYmVnaW4oKSwgdi5lbmQo
KSwgTWF0Y2hlcyhHZSgxMCkpKTsKLWBgYAotCi1TaW5jZSB5b3UgY2FuIGJ1aWxkIGNvbXBsZXgg
bWF0Y2hlcnMgZnJvbSBzaW1wbGVyIG9uZXMgZWFzaWx5IHVzaW5nCi1Hb29nbGUgTW9jaywgdGhp
cyBnaXZlcyB5b3UgYSB3YXkgdG8gY29udmVuaWVudGx5IGNvbnN0cnVjdCBjb21wb3NpdGUKLXBy
ZWRpY2F0ZXMgKGRvaW5nIHRoZSBzYW1lIHVzaW5nIFNUTCdzIGA8ZnVuY3Rpb25hbD5gIGhlYWRl
ciBpcyBqdXN0Ci1wYWluZnVsKS4gRm9yIGV4YW1wbGUsIGhlcmUncyBhIHByZWRpY2F0ZSB0aGF0
J3Mgc2F0aXNmaWVkIGJ5IGFueQotbnVtYmVyIHRoYXQgaXMgPj0gMCwgPD0gMTAwLCBhbmQgIT0g
NTA6Ci0KLWBgYAotTWF0Y2hlcyhBbGxPZihHZSgwKSwgTGUoMTAwKSwgTmUoNTApKSkKLWBgYAot
Ci0jIyBVc2luZyBNYXRjaGVycyBpbiBHb29nbGUgVGVzdCBBc3NlcnRpb25zICMjCi0KLVNpbmNl
IG1hdGNoZXJzIGFyZSBiYXNpY2FsbHkgcHJlZGljYXRlcyB0aGF0IGFsc28ga25vdyBob3cgdG8g
ZGVzY3JpYmUKLXRoZW1zZWx2ZXMsIHRoZXJlIGlzIGEgd2F5IHRvIHRha2UgYWR2YW50YWdlIG9m
IHRoZW0gaW4KLVtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRl
c3QvKSBhc3NlcnRpb25zLiBJdCdzCi1jYWxsZWQgYEFTU0VSVF9USEFUYCBhbmQgYEVYUEVDVF9U
SEFUYDoKLQotYGBgCi0gIEFTU0VSVF9USEFUKHZhbHVlLCBtYXRjaGVyKTsgIC8vIEFzc2VydHMg
dGhhdCB2YWx1ZSBtYXRjaGVzIG1hdGNoZXIuCi0gIEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVy
KTsgIC8vIFRoZSBub24tZmF0YWwgdmVyc2lvbi4KLWBgYAotCi1Gb3IgZXhhbXBsZSwgaW4gYSBH
b29nbGUgVGVzdCB0ZXN0IHlvdSBjYW4gd3JpdGU6Ci0KLWBgYAotI2luY2x1ZGUgPGdtb2NrL2dt
b2NrLmg+Ci0KLXVzaW5nIDo6dGVzdGluZzo6QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6OkdlOwot
dXNpbmcgOjp0ZXN0aW5nOjpMZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlc1JlZ2V4OwotdXNp
bmcgOjp0ZXN0aW5nOjpTdGFydHNXaXRoOwotLi4uCi0KLSAgRVhQRUNUX1RIQVQoRm9vKCksIFN0
YXJ0c1dpdGgoIkhlbGxvIikpOwotICBFWFBFQ1RfVEhBVChCYXIoKSwgTWF0Y2hlc1JlZ2V4KCJM
aW5lIFxcZCsiKSk7Ci0gIEFTU0VSVF9USEFUKEJheigpLCBBbGxPZihHZSg1KSwgTGUoMTApKSk7
Ci1gYGAKLQotd2hpY2ggKGFzIHlvdSBjYW4gcHJvYmFibHkgZ3Vlc3MpIGV4ZWN1dGVzIGBGb28o
KWAsIGBCYXIoKWAsIGFuZAotYEJheigpYCwgYW5kIHZlcmlmaWVzIHRoYXQ6Ci0KLSAgKiBgRm9v
KClgIHJldHVybnMgYSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0aCBgIkhlbGxvImAuCi0gICogYEJh
cigpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb24gYCJM
aW5lIFxcZCsiYC4KLSAgKiBgQmF6KClgIHJldHVybnMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFs1
LCAxMF0uCi0KLVRoZSBuaWNlIHRoaW5nIGFib3V0IHRoZXNlIG1hY3JvcyBpcyB0aGF0IF90aGV5
IHJlYWQgbGlrZQotRW5nbGlzaF8uIFRoZXkgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXMg
dG9vLiBGb3IgZXhhbXBsZSwgaWYgdGhlCi1maXJzdCBgRVhQRUNUX1RIQVQoKWAgYWJvdmUgZmFp
bHMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotVmFsdWUgb2Y6
IEZvbygpCi0gIEFjdHVhbDogIkhpLCB3b3JsZCEiCi1FeHBlY3RlZDogc3RhcnRzIHdpdGggIkhl
bGxvIgotYGBgCi0KLSoqQ3JlZGl0OioqIFRoZSBpZGVhIG9mIGAoQVNTRVJUfEVYUEVDVClfVEhB
VGAgd2FzIHN0b2xlbiBmcm9tIHRoZQotW0hhbWNyZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvaGFtY3Jlc3QvKSBwcm9qZWN0LCB3aGljaCBhZGRzCi1gYXNzZXJ0VGhhdCgpYCB0byBKVW5p
dC4KLQotIyMgVXNpbmcgUHJlZGljYXRlcyBhcyBNYXRjaGVycyAjIwotCi1Hb29nbGUgTW9jayBw
cm92aWRlcyBhIGJ1aWx0LWluIHNldCBvZiBtYXRjaGVycy4gSW4gY2FzZSB5b3UgZmluZCB0aGVt
Ci1sYWNraW5nLCB5b3UgY2FuIHVzZSBhbiBhcmJpdHJheSB1bmFyeSBwcmVkaWNhdGUgZnVuY3Rp
b24gb3IgZnVuY3RvcgotYXMgYSBtYXRjaGVyIC0gYXMgbG9uZyBhcyB0aGUgcHJlZGljYXRlIGFj
Y2VwdHMgYSB2YWx1ZSBvZiB0aGUgdHlwZQoteW91IHdhbnQuIFlvdSBkbyB0aGlzIGJ5IHdyYXBw
aW5nIHRoZSBwcmVkaWNhdGUgaW5zaWRlIHRoZSBgVHJ1bHkoKWAKLWZ1bmN0aW9uLCBmb3IgZXhh
bXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlRydWx5OwotCi1pbnQgSXNFdmVuKGludCBu
KSB7IHJldHVybiAobiAlIDIpID09IDAgPyAxIDogMDsgfQotLi4uCi0KLSAgLy8gQmFyKCkgbXVz
dCBiZSBjYWxsZWQgd2l0aCBhbiBldmVuIG51bWJlci4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIo
VHJ1bHkoSXNFdmVuKSkpOwotYGBgCi0KLU5vdGUgdGhhdCB0aGUgcHJlZGljYXRlIGZ1bmN0aW9u
IC8gZnVuY3RvciBkb2Vzbid0IGhhdmUgdG8gcmV0dXJuCi1gYm9vbGAuIEl0IHdvcmtzIGFzIGxv
bmcgYXMgdGhlIHJldHVybiB2YWx1ZSBjYW4gYmUgdXNlZCBhcyB0aGUKLWNvbmRpdGlvbiBpbiBz
dGF0ZW1lbnQgYGlmIChjb25kaXRpb24pIC4uLmAuCi0KLSMjIE1hdGNoaW5nIEFyZ3VtZW50cyB0
aGF0IEFyZSBOb3QgQ29weWFibGUgIyMKLQotV2hlbiB5b3UgZG8gYW4gYEVYUEVDVF9DQUxMKG1v
Y2tfb2JqLCBGb28oYmFyKSlgLCBHb29nbGUgTW9jayBzYXZlcwotYXdheSBhIGNvcHkgb2YgYGJh
cmAuIFdoZW4gYEZvbygpYCBpcyBjYWxsZWQgbGF0ZXIsIEdvb2dsZSBNb2NrCi1jb21wYXJlcyB0
aGUgYXJndW1lbnQgdG8gYEZvbygpYCB3aXRoIHRoZSBzYXZlZCBjb3B5IG9mIGBiYXJgLiBUaGlz
Ci13YXksIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGBiYXJgIGJlaW5nIG1vZGlmaWVk
IG9yIGRlc3Ryb3llZAotYWZ0ZXIgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBpcyBleGVjdXRlZC4gVGhl
IHNhbWUgaXMgdHJ1ZSB3aGVuIHlvdSB1c2UKLW1hdGNoZXJzIGxpa2UgYEVxKGJhcilgLCBgTGUo
YmFyKWAsIGFuZCBzbyBvbi4KLQotQnV0IHdoYXQgaWYgYGJhcmAgY2Fubm90IGJlIGNvcGllZCAo
aS5lLiBoYXMgbm8gY29weSBjb25zdHJ1Y3Rvcik/IFlvdQotY291bGQgZGVmaW5lIHlvdXIgb3du
IG1hdGNoZXIgZnVuY3Rpb24gYW5kIHVzZSBpdCB3aXRoIGBUcnVseSgpYCwgYXMKLXRoZSBwcmV2
aW91cyBjb3VwbGUgb2YgcmVjaXBlcyBoYXZlIHNob3duLiBPciwgeW91IG1heSBiZSBhYmxlIHRv
IGdldAotYXdheSBmcm9tIGl0IGlmIHlvdSBjYW4gZ3VhcmFudGVlIHRoYXQgYGJhcmAgd29uJ3Qg
YmUgY2hhbmdlZCBhZnRlcgotdGhlIGBFWFBFQ1RfQ0FMTCgpYCBpcyBleGVjdXRlZC4gSnVzdCB0
ZWxsIEdvb2dsZSBNb2NrIHRoYXQgaXQgc2hvdWxkCi1zYXZlIGEgcmVmZXJlbmNlIHRvIGBiYXJg
LCBpbnN0ZWFkIG9mIGEgY29weSBvZiBpdC4gSGVyZSdzIGhvdzoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6OkVxOwotdXNpbmcgOjp0ZXN0aW5nOjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6THQ7
Ci0uLi4KLSAgLy8gRXhwZWN0cyB0aGF0IEZvbygpJ3MgYXJndW1lbnQgPT0gYmFyLgotICBFWFBF
Q1RfQ0FMTChtb2NrX29iaiwgRm9vKEVxKEJ5UmVmKGJhcikpKSk7Ci0KLSAgLy8gRXhwZWN0cyB0
aGF0IEZvbygpJ3MgYXJndW1lbnQgPCBiYXIuCi0gIEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBGb28o
THQoQnlSZWYoYmFyKSkpKTsKLWBgYAotCi1SZW1lbWJlcjogaWYgeW91IGRvIHRoaXMsIGRvbid0
IGNoYW5nZSBgYmFyYCBhZnRlciB0aGUKLWBFWFBFQ1RfQ0FMTCgpYCwgb3IgdGhlIHJlc3VsdCBp
cyB1bmRlZmluZWQuCi0KLSMjIFZhbGlkYXRpbmcgYSBNZW1iZXIgb2YgYW4gT2JqZWN0ICMjCi0K
LU9mdGVuIGEgbW9jayBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSB0byBvYmplY3QgYXMgYW4g
YXJndW1lbnQuIFdoZW4KLW1hdGNoaW5nIHRoZSBhcmd1bWVudCwgeW91IG1heSBub3Qgd2FudCB0
byBjb21wYXJlIHRoZSBlbnRpcmUgb2JqZWN0Ci1hZ2FpbnN0IGEgZml4ZWQgb2JqZWN0LCBhcyB0
aGF0IG1heSBiZSBvdmVyLXNwZWNpZmljYXRpb24uIEluc3RlYWQsCi15b3UgbWF5IG5lZWQgdG8g
dmFsaWRhdGUgYSBjZXJ0YWluIG1lbWJlciB2YXJpYWJsZSBvciB0aGUgcmVzdWx0IG9mIGEKLWNl
cnRhaW4gZ2V0dGVyIG1ldGhvZCBvZiB0aGUgb2JqZWN0LiBZb3UgY2FuIGRvIHRoaXMgd2l0aCBg
RmllbGQoKWAKLWFuZCBgUHJvcGVydHkoKWAuIE1vcmUgc3BlY2lmaWNhbGx5LAotCi1gYGAKLUZp
ZWxkKCZGb286OmJhciwgbSkKLWBgYAotCi1pcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgYEZv
b2Agb2JqZWN0IHdob3NlIGBiYXJgIG1lbWJlciB2YXJpYWJsZQotc2F0aXNmaWVzIG1hdGNoZXIg
YG1gLgotCi1gYGAKLVByb3BlcnR5KCZGb286OmJheiwgbSkKLWBgYAotCi1pcyBhIG1hdGNoZXIg
dGhhdCBtYXRjaGVzIGEgYEZvb2Agb2JqZWN0IHdob3NlIGBiYXooKWAgbWV0aG9kIHJldHVybnMK
LWEgdmFsdWUgdGhhdCBzYXRpc2ZpZXMgbWF0Y2hlciBgbWAuCi0KLUZvciBleGFtcGxlOgotCi0+
IHwgYEZpZWxkKCZGb286Om51bWJlciwgR2UoMykpYCB8IE1hdGNoZXMgYHhgIHdoZXJlIGB4Lm51
bWJlciA+PSAzYC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0+IHwgYFByb3BlcnR5KCZGb286Om5hbWUsIFN0
YXJ0c1dpdGgoIkpvaG4gIikpYCB8IE1hdGNoZXMgYHhgIHdoZXJlIGB4Lm5hbWUoKWAgc3RhcnRz
IHdpdGggYCJKb2huICJgLiB8Ci0KLU5vdGUgdGhhdCBpbiBgUHJvcGVydHkoJkZvbzo6YmF6LCAu
Li4pYCwgbWV0aG9kIGBiYXooKWAgbXVzdCB0YWtlIG5vCi1hcmd1bWVudCBhbmQgYmUgZGVjbGFy
ZWQgYXMgYGNvbnN0YC4KLQotQlRXLCBgRmllbGQoKWAgYW5kIGBQcm9wZXJ0eSgpYCBjYW4gYWxz
byBtYXRjaCBwbGFpbiBwb2ludGVycyB0bwotb2JqZWN0cy4gRm9yIGluc3RhbmNlLAotCi1gYGAK
LUZpZWxkKCZGb286Om51bWJlciwgR2UoMykpCi1gYGAKLQotbWF0Y2hlcyBhIHBsYWluIHBvaW50
ZXIgYHBgIHdoZXJlIGBwLT5udW1iZXIgPj0gM2AuIElmIGBwYCBpcyBgTlVMTGAsCi10aGUgbWF0
Y2ggd2lsbCBhbHdheXMgZmFpbCByZWdhcmRsZXNzIG9mIHRoZSBpbm5lciBtYXRjaGVyLgotCi1X
aGF0IGlmIHlvdSB3YW50IHRvIHZhbGlkYXRlIG1vcmUgdGhhbiBvbmUgbWVtYmVycyBhdCB0aGUg
c2FtZSB0aW1lPwotUmVtZW1iZXIgdGhhdCB0aGVyZSBpcyBgQWxsT2YoKWAuCi0KLSMjIFZhbGlk
YXRpbmcgdGhlIFZhbHVlIFBvaW50ZWQgdG8gYnkgYSBQb2ludGVyIEFyZ3VtZW50ICMjCi0KLUMr
KyBmdW5jdGlvbnMgb2Z0ZW4gdGFrZSBwb2ludGVycyBhcyBhcmd1bWVudHMuIFlvdSBjYW4gdXNl
IG1hdGNoZXJzCi1saWtlIGBOVUxMYCwgYE5vdE51bGwoKWAsIGFuZCBvdGhlciBjb21wYXJpc29u
IG1hdGNoZXJzIHRvIG1hdGNoIGEKLXBvaW50ZXIsIGJ1dCB3aGF0IGlmIHlvdSB3YW50IHRvIG1h
a2Ugc3VyZSB0aGUgdmFsdWUgX3BvaW50ZWQgdG9fIGJ5Ci10aGUgcG9pbnRlciwgaW5zdGVhZCBv
ZiB0aGUgcG9pbnRlciBpdHNlbGYsIGhhcyBhIGNlcnRhaW4gcHJvcGVydHk/Ci1XZWxsLCB5b3Ug
Y2FuIHVzZSB0aGUgYFBvaW50ZWUobSlgIG1hdGNoZXIuCi0KLWBQb2ludGVlKG0pYCBtYXRjaGVz
IGEgcG9pbnRlciBpZmYgYG1gIG1hdGNoZXMgdGhlIHZhbHVlIHRoZSBwb2ludGVyCi1wb2ludHMg
dG8uIEZvciBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6R2U7Ci11c2luZyA6OnRl
c3Rpbmc6OlBvaW50ZWU7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoUG9pbnRlZShHZSgz
KSkpKTsKLWBgYAotCi1leHBlY3RzIGBmb28uQmFyKClgIHRvIGJlIGNhbGxlZCB3aXRoIGEgcG9p
bnRlciB0aGF0IHBvaW50cyB0byBhIHZhbHVlCi1ncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMy4K
LQotT25lIG5pY2UgdGhpbmcgYWJvdXQgYFBvaW50ZWUoKWAgaXMgdGhhdCBpdCB0cmVhdHMgYSBg
TlVMTGAgcG9pbnRlciBhcwotYSBtYXRjaCBmYWlsdXJlLCBzbyB5b3UgY2FuIHdyaXRlIGBQb2lu
dGVlKG0pYCBpbnN0ZWFkIG9mCi0KLWBgYAotICBBbGxPZihOb3ROdWxsKCksIFBvaW50ZWUobSkp
Ci1gYGAKLQotd2l0aG91dCB3b3JyeWluZyB0aGF0IGEgYE5VTExgIHBvaW50ZXIgd2lsbCBjcmFz
aCB5b3VyIHRlc3QuCi0KLUFsc28sIGRpZCB3ZSB0ZWxsIHlvdSB0aGF0IGBQb2ludGVlKClgIHdv
cmtzIHdpdGggYm90aCByYXcgcG9pbnRlcnMKLSoqYW5kKiogc21hcnQgcG9pbnRlcnMgKGBsaW5r
ZWRfcHRyYCwgYHNoYXJlZF9wdHJgLCBgc2NvcGVkX3B0cmAsIGFuZAotZXRjKT8KLQotV2hhdCBp
ZiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gcG9pbnRlcj8gWW91IGd1ZXNzZWQgaXQgLSB5b3UgY2Fu
IHVzZQotbmVzdGVkIGBQb2ludGVlKClgIHRvIHByb2JlIGRlZXBlciBpbnNpZGUgdGhlIHZhbHVl
LiBGb3IgZXhhbXBsZSwKLWBQb2ludGVlKFBvaW50ZWUoTHQoMykpKWAgbWF0Y2hlcyBhIHBvaW50
ZXIgdGhhdCBwb2ludHMgdG8gYSBwb2ludGVyCi10aGF0IHBvaW50cyB0byBhIG51bWJlciBsZXNz
IHRoYW4gMyAod2hhdCBhIG1vdXRoZnVsLi4uKS4KLQotIyMgVGVzdGluZyBhIENlcnRhaW4gUHJv
cGVydHkgb2YgYW4gT2JqZWN0ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBzcGVjaWZ5IHRo
YXQgYW4gb2JqZWN0IGFyZ3VtZW50IGhhcyBhIGNlcnRhaW4KLXByb3BlcnR5LCBidXQgdGhlcmUg
aXMgbm8gZXhpc3RpbmcgbWF0Y2hlciB0aGF0IGRvZXMgdGhpcy4gSWYgeW91IHdhbnQKLWdvb2Qg
ZXJyb3IgbWVzc2FnZXMsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Y2hlci4gSWYgeW91IHdhbnQg
dG8gZG8gaXQKLXF1aWNrIGFuZCBkaXJ0eSwgeW91IGNvdWxkIGdldCBhd2F5IHdpdGggd3JpdGlu
ZyBhbiBvcmRpbmFyeSBmdW5jdGlvbi4KLQotTGV0J3Mgc2F5IHlvdSBoYXZlIGEgbW9jayBmdW5j
dGlvbiB0aGF0IHRha2VzIGFuIG9iamVjdCBvZiB0eXBlIGBGb29gLAotd2hpY2ggaGFzIGFuIGBp
bnQgYmFyKClgIG1ldGhvZCBhbmQgYW4gYGludCBiYXooKWAgbWV0aG9kLCBhbmQgeW91Ci13YW50
IHRvIGNvbnN0cmFpbiB0aGF0IHRoZSBhcmd1bWVudCdzIGBiYXIoKWAgdmFsdWUgcGx1cyBpdHMg
YGJheigpYAotdmFsdWUgaXMgYSBnaXZlbiBudW1iZXIuIEhlcmUncyBob3cgeW91IGNhbiBkZWZp
bmUgYSBtYXRjaGVyIHRvIGRvIGl0OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcklu
dGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLQotY2xhc3Mg
QmFyUGx1c0JhekVxTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGNvbnN0IEZvbyY+
IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEJhclBsdXNCYXpFcU1hdGNoZXIoaW50IGV4cGVjdGVk
X3N1bSkKLSAgICAgIDogZXhwZWN0ZWRfc3VtXyhleHBlY3RlZF9zdW0pIHt9Ci0KLSAgdmlydHVh
bCBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBGb28mIGZvbywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAg
IHJldHVybiAoZm9vLmJhcigpICsgZm9vLmJheigpKSA9PSBleHBlY3RlZF9zdW1fOwotICB9Ci0K
LSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0g
ICAgKm9zIDw8ICJiYXIoKSArIGJheigpIGVxdWFscyAiIDw8IGV4cGVjdGVkX3N1bV87Ci0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykg
Y29uc3QgewotICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBkb2VzIG5vdCBlcXVhbCAiIDw8IGV4
cGVjdGVkX3N1bV87Ci0gIH0KLSBwcml2YXRlOgotICBjb25zdCBpbnQgZXhwZWN0ZWRfc3VtXzsK
LX07Ci0KLWlubGluZSBNYXRjaGVyPGNvbnN0IEZvbyY+IEJhclBsdXNCYXpFcShpbnQgZXhwZWN0
ZWRfc3VtKSB7Ci0gIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgQmFyUGx1c0JhekVxTWF0Y2hlcihl
eHBlY3RlZF9zdW0pKTsKLX0KLQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoLi4uLCBEb1RoaXMoQmFy
UGx1c0JhekVxKDUpKSkuLi47Ci1gYGAKLQotIyMgTWF0Y2hpbmcgQ29udGFpbmVycyAjIwotCi1T
b21ldGltZXMgYW4gU1RMIGNvbnRhaW5lciAoZS5nLiBsaXN0LCB2ZWN0b3IsIG1hcCwgLi4uKSBp
cyBwYXNzZWQgdG8KLWEgbW9jayBmdW5jdGlvbiBhbmQgeW91IG1heSB3YW50IHRvIHZhbGlkYXRl
IGl0LiBTaW5jZSBtb3N0IFNUTAotY29udGFpbmVycyBzdXBwb3J0IHRoZSBgPT1gIG9wZXJhdG9y
LCB5b3UgY2FuIHdyaXRlCi1gRXEoZXhwZWN0ZWRfY29udGFpbmVyKWAgb3Igc2ltcGx5IGBleHBl
Y3RlZF9jb250YWluZXJgIHRvIG1hdGNoIGEKLWNvbnRhaW5lciBleGFjdGx5LgotCi1Tb21ldGlt
ZXMsIHRob3VnaCwgeW91IG1heSB3YW50IHRvIGJlIG1vcmUgZmxleGlibGUgKGZvciBleGFtcGxl
LCB0aGUKLWZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBleGFjdCBtYXRjaCwgYnV0IHRoZSBzZWNv
bmQgZWxlbWVudCBjYW4gYmUKLWFueSBwb3NpdGl2ZSBudW1iZXIsIGFuZCBzbyBvbikuIEFsc28s
IGNvbnRhaW5lcnMgdXNlZCBpbiB0ZXN0cyBvZnRlbgotaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBl
bGVtZW50cywgYW5kIGhhdmluZyB0byBkZWZpbmUgdGhlIGV4cGVjdGVkCi1jb250YWluZXIgb3V0
LW9mLWxpbmUgaXMgYSBiaXQgb2YgYSBoYXNzbGUuCi0KLVlvdSBjYW4gdXNlIHRoZSBgRWxlbWVu
dHNBcmUoKWAgbWF0Y2hlciBpbiBzdWNoIGNhc2VzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
XzsKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2luZyA6OnRlc3Rpbmc6Okd0Owot
Li4uCi0KLSAgTU9DS19NRVRIT0QxKEZvbywgdm9pZChjb25zdCB2ZWN0b3I8aW50PiYgbnVtYmVy
cykpOwotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRzQXJlKDEsIEd0KDAp
LCBfLCA1KSkpOwotYGBgCi0KLVRoZSBhYm92ZSBtYXRjaGVyIHNheXMgdGhhdCB0aGUgY29udGFp
bmVyIG11c3QgaGF2ZSA0IGVsZW1lbnRzLCB3aGljaAotbXVzdCBiZSAxLCBncmVhdGVyIHRoYW4g
MCwgYW55dGhpbmcsIGFuZCA1IHJlc3BlY3RpdmVseS4KLQotYEVsZW1lbnRzQXJlKClgIGlzIG92
ZXJsb2FkZWQgdG8gdGFrZSAwIHRvIDEwIGFyZ3VtZW50cy4gSWYgbW9yZSBhcmUKLW5lZWRlZCwg
eW91IGNhbiBwbGFjZSB0aGVtIGluIGEgQy1zdHlsZSBhcnJheSBhbmQgdXNlCi1gRWxlbWVudHNB
cmVBcnJheSgpYCBpbnN0ZWFkOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmVB
cnJheTsKLS4uLgotCi0gIC8vIEVsZW1lbnRzQXJlQXJyYXkgYWNjZXB0cyBhbiBhcnJheSBvZiBl
bGVtZW50IHZhbHVlcy4KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZlY3RvcjFbXSA9IHsgMSwgNSwg
MiwgNCwgLi4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4
cGVjdGVkX3ZlY3RvcjEpKSk7Ci0KLSAgLy8gT3IsIGFuIGFycmF5IG9mIGVsZW1lbnQgbWF0Y2hl
cnMuCi0gIE1hdGNoZXI8aW50PiBleHBlY3RlZF92ZWN0b3IyID0geyAxLCBHdCgyKSwgXywgMywg
Li4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVk
X3ZlY3RvcjIpKSk7Ci1gYGAKLQotSW4gY2FzZSB0aGUgYXJyYXkgbmVlZHMgdG8gYmUgZHluYW1p
Y2FsbHkgY3JlYXRlZCAoYW5kIHRoZXJlZm9yZSB0aGUKLWFycmF5IHNpemUgY2Fubm90IGJlIGlu
ZmVycmVkIGJ5IHRoZSBjb21waWxlciksIHlvdSBjYW4gZ2l2ZQotYEVsZW1lbnRzQXJlQXJyYXko
KWAgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoZSBhcnJheSBzaXplOgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKLS4uLgotICBpbnQqIGNvbnN0
IGV4cGVjdGVkX3ZlY3RvcjMgPSBuZXcgaW50W2NvdW50XTsKLSAgLi4uIGZpbGwgZXhwZWN0ZWRf
dmVjdG9yMyB3aXRoIHZhbHVlcyAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRz
QXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMywgY291bnQpKSk7Ci1gYGAKLQotKipUaXBzOioqCi0K
LSAgKiBgRWxlbWVudEFyZSooKWAgd29ya3Mgd2l0aCBfYW55XyBjb250YWluZXIgdGhhdCBpbXBs
ZW1lbnRzIHRoZSBTVEwgaXRlcmF0b3IgY29uY2VwdCAoaS5lLiBpdCBoYXMgYSBgY29uc3RfaXRl
cmF0b3JgIHR5cGUgYW5kIHN1cHBvcnRzIGBiZWdpbigpL2VuZCgpYCkgYW5kIHN1cHBvcnRzIGBz
aXplKClgLCBub3QganVzdCB0aGUgb25lcyBkZWZpbmVkIGluIFNUTC4gSXQgd2lsbCBldmVuIHdv
cmsgd2l0aCBjb250YWluZXIgdHlwZXMgeWV0IHRvIGJlIHdyaXR0ZW4gLSBhcyBsb25nIGFzIHRo
ZXkgZm9sbG93cyB0aGUgYWJvdmUgcGF0dGVybi4KLSAgKiBZb3UgY2FuIHVzZSBuZXN0ZWQgYEVs
ZW1lbnRBcmUqKClgIHRvIG1hdGNoIG5lc3RlZCAobXVsdGktZGltZW5zaW9uYWwpIGNvbnRhaW5l
cnMuCi0gICogSWYgdGhlIGNvbnRhaW5lciBpcyBwYXNzZWQgYnkgcG9pbnRlciBpbnN0ZWFkIG9m
IGJ5IHJlZmVyZW5jZSwganVzdCB3cml0ZSBgUG9pbnRlZShFbGVtZW50c0FyZSooLi4uKSlgLgot
ICAqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBfbWF0dGVyc18gZm9yIGBFbGVtZW50c0FyZSooKWAu
IFRoZXJlZm9yZSBkb24ndCB1c2UgaXQgd2l0aCBjb250YWluZXJzIHdob3NlIGVsZW1lbnQgb3Jk
ZXIgaXMgdW5kZWZpbmVkIChlLmcuIGBoYXNoX21hcGApLgotCi0jIyBTaGFyaW5nIE1hdGNoZXJz
ICMjCi0KLVVuZGVyIHRoZSBob29kLCBhIEdvb2dsZSBNb2NrIG1hdGNoZXIgb2JqZWN0IGNvbnNp
c3RzIG9mIGEgcG9pbnRlciB0bwotYSByZWYtY291bnRlZCBpbXBsZW1lbnRhdGlvbiBvYmplY3Qu
IENvcHlpbmcgbWF0Y2hlcnMgaXMgYWxsb3dlZCBhbmQKLXZlcnkgZWZmaWNpZW50LCBhcyBvbmx5
IHRoZSBwb2ludGVyIGlzIGNvcGllZC4gV2hlbiB0aGUgbGFzdCBtYXRjaGVyCi10aGF0IHJlZmVy
ZW5jZXMgdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1wbGVtZW50YXRpb24K
LW9iamVjdCB3aWxsIGJlIGRlbGV0ZWQuCi0KLVRoZXJlZm9yZSwgaWYgeW91IGhhdmUgc29tZSBj
b21wbGV4IG1hdGNoZXIgdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4KLWFuZCBhZ2FpbiwgdGhl
cmUgaXMgbm8gbmVlZCB0byBidWlsZCBpdCBldmVyeXRpbWUuIEp1c3QgYXNzaWduIGl0IHRvIGEK
LW1hdGNoZXIgdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkhIEZvciBl
eGFtcGxlLAotCi1gYGAKLSAgTWF0Y2hlcjxpbnQ+IGluX3JhbmdlID0gQWxsT2YoR3QoNSksIExl
KDEwKSk7Ci0gIC4uLiB1c2UgaW5fcmFuZ2UgYXMgYSBtYXRjaGVyIGluIG11bHRpcGxlIEVYUEVD
VF9DQUxMcyAuLi4KLWBgYAotCi0jIFNldHRpbmcgRXhwZWN0YXRpb25zICMKLQotIyMgSWdub3Jp
bmcgVW5pbnRlcmVzdGluZyBDYWxscyAjIwotCi1JZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGlu
IGhvdyBhIG1vY2sgbWV0aG9kIGlzIGNhbGxlZCwganVzdCBkb24ndAotc2F5IGFueXRoaW5nIGFi
b3V0IGl0LiBJbiB0aGlzIGNhc2UsIGlmIHRoZSBtZXRob2QgaXMgZXZlciBjYWxsZWQsCi1Hb29n
bGUgTW9jayB3aWxsIHBlcmZvcm0gaXRzIGRlZmF1bHQgYWN0aW9uIHRvIGFsbG93IHRoZSB0ZXN0
IHByb2dyYW0KLXRvIGNvbnRpbnVlLiBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSBkZWZh
dWx0IGFjdGlvbiB0YWtlbiBieQotR29vZ2xlIE1vY2ssIHlvdSBjYW4gb3ZlcnJpZGUgaXQgdXNp
bmcgYERlZmF1bHRWYWx1ZTxUPjo6U2V0KClgCi0oZGVzY3JpYmVkIGxhdGVyIGluIHRoaXMgZG9j
dW1lbnQpIG9yIGBPTl9DQUxMKClgLgotCi1QbGVhc2Ugbm90ZSB0aGF0IG9uY2UgeW91IGV4cHJl
c3NlZCBpbnRlcmVzdCBpbiBhIHBhcnRpY3VsYXIgbW9jawotbWV0aG9kICh2aWEgYEVYUEVDVF9D
QUxMKClgKSwgYWxsIGludm9jYXRpb25zIHRvIGl0IG11c3QgbWF0Y2ggc29tZQotZXhwZWN0YXRp
b24uIElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ1dCB0aGUgYXJndW1lbnRzIGRvbid0IG1h
dGNoCi1hbnkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBhbiBlcnJvci4K
LQotIyMgRGlzYWxsb3dpbmcgVW5leHBlY3RlZCBDYWxscyAjIwotCi1JZiBhIG1vY2sgbWV0aG9k
IHNob3VsZG4ndCBiZSBjYWxsZWQgYXQgYWxsLCBleHBsaWNpdGx5IHNheSBzbzoKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCi0gICAg
ICAuVGltZXMoMCk7Ci1gYGAKLQotSWYgc29tZSBjYWxscyB0byB0aGUgbWV0aG9kIGFyZSBhbGxv
d2VkLCBidXQgdGhlIHJlc3QgYXJlIG5vdCwganVzdAotbGlzdCBhbGwgdGhlIGV4cGVjdGVkIGNh
bGxzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0ZXN0aW5n
OjpHdDsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcig1KSk7Ci0gIEVYUEVDVF9DQUxMKGZv
bywgQmFyKEd0KDEwKSkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotYGBgCi0KLUEgY2Fs
bCB0byBgZm9vLkJhcigpYCB0aGF0IGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSBgRVhQRUNUX0NB
TEwoKWAKLXN0YXRlbWVudHMgd2lsbCBiZSBhbiBlcnJvci4KLQotIyMgRXhwZWN0aW5nIE9yZGVy
ZWQgQ2FsbHMgIyMKLQotQWx0aG91Z2ggYW4gYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBkZWZp
bmVkIGVhcmxpZXIgdGFrZXMgcHJlY2VkZW5jZQotd2hlbiBHb29nbGUgTW9jayB0cmllcyB0byBt
YXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBleHBlY3RhdGlvbiwKLWJ5IGRlZmF1bHQgY2Fs
bHMgZG9uJ3QgaGF2ZSB0byBoYXBwZW4gaW4gdGhlIG9yZGVyIGBFWFBFQ1RfQ0FMTCgpYAotc3Rh
dGVtZW50cyBhcmUgd3JpdHRlbi4gRm9yIGV4YW1wbGUsIGlmIHRoZSBhcmd1bWVudHMgbWF0Y2gg
dGhlCi1tYXRjaGVycyBpbiB0aGUgdGhpcmQgYEVYUEVDVF9DQUxMKClgLCBidXQgbm90IHRob3Nl
IGluIHRoZSBmaXJzdCB0d28sCi10aGVuIHRoZSB0aGlyZCBleHBlY3RhdGlvbiB3aWxsIGJlIHVz
ZWQuCi0KLUlmIHlvdSB3b3VsZCByYXRoZXIgaGF2ZSBhbGwgY2FsbHMgb2NjdXIgaW4gdGhlIG9y
ZGVyIG9mIHRoZQotZXhwZWN0YXRpb25zLCBwdXQgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1l
bnRzIGluIGEgYmxvY2sgd2hlcmUgeW91Ci1kZWZpbmUgYSB2YXJpYWJsZSBvZiB0eXBlIGBJblNl
cXVlbmNlYDoKLQotYGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6XzsKLSAgdXNpbmcgOjp0ZXN0aW5n
OjpJblNlcXVlbmNlOwotCi0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0KLSAgICBFWFBFQ1RfQ0FM
TChmb28sIERvVGhpcyg1KSk7Ci0gICAgRVhQRUNUX0NBTEwoYmFyLCBEb1RoYXQoXykpCi0gICAg
ICAgIC5UaW1lcygyKTsKLSAgICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg2KSk7Ci0gIH0KLWBg
YAotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIGV4cGVjdCBhIGNhbGwgdG8gYGZvby5Eb1RoaXMoNSlg
LCBmb2xsb3dlZCBieSB0d28KLWNhbGxzIHRvIGBiYXIuRG9UaGF0KClgIHdoZXJlIHRoZSBhcmd1
bWVudCBjYW4gYmUgYW55dGhpbmcsIHdoaWNoIGFyZQotaW4gdHVybiBmb2xsb3dlZCBieSBhIGNh
bGwgdG8gYGZvby5Eb1RoaXMoNilgLiBJZiBhIGNhbGwgb2NjdXJyZWQKLW91dC1vZi1vcmRlciwg
R29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IuCi0KLSMjIEV4cGVjdGluZyBQYXJ0aWFs
bHkgT3JkZXJlZCBDYWxscyAjIwotCi1Tb21ldGltZXMgcmVxdWlyaW5nIGV2ZXJ5dGhpbmcgdG8g
b2NjdXIgaW4gYSBwcmVkZXRlcm1pbmVkIG9yZGVyIGNhbgotbGVhZCB0byBicml0dGxlIHRlc3Rz
LiBGb3IgZXhhbXBsZSwgd2UgbWF5IGNhcmUgYWJvdXQgYEFgIG9jY3VycmluZwotYmVmb3JlIGJv
dGggYEJgIGFuZCBgQ2AsIGJ1dCBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0aGUgcmVsYXRpdmUgb3Jk
ZXIKLW9mIGBCYCBhbmQgYENgLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IHNob3VsZCByZWZsZWN0
IG91ciByZWFsIGludGVudCwKLWluc3RlYWQgb2YgYmVpbmcgb3Zlcmx5IGNvbnN0cmFpbmluZy4K
LQotR29vZ2xlIE1vY2sgYWxsb3dzIHlvdSB0byBpbXBvc2UgYW4gYXJiaXRyYXJ5IERBRyAoZGly
ZWN0ZWQgYWN5Y2xpYwotZ3JhcGgpIG9uIHRoZSBjYWxscy4gT25lIHdheSB0byBleHByZXNzIHRo
ZSBEQUcgaXMgdG8gdXNlIHRoZQotW0FmdGVyXShWMV81X0NoZWF0U2hlZXQjVGhlX0FmdGVyX0Ns
YXVzZS5tZCkgY2xhdXNlIG9mIGBFWFBFQ1RfQ0FMTGAuCi0KLUFub3RoZXIgd2F5IGlzIHZpYSB0
aGUgYEluU2VxdWVuY2UoKWAgY2xhdXNlIChub3QgdGhlIHNhbWUgYXMgdGhlCi1gSW5TZXF1ZW5j
ZWAgY2xhc3MpLCB3aGljaCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVzcwotZmxl
eGlibGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBs
b25nIGNoYWlucwotb2Ygc2VxdWVudGlhbCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1aXJlIHlv
dSB0byBjb21lIHVwIHdpdGgKLWRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0aW9ucyBp
biB0aGUgY2hhaW5zLiAgSGVyZSdzIGhvdyBpdAotd29ya3M6Ci0KLUlmIHdlIHZpZXcgYEVYUEVD
VF9DQUxMKClgIHN0YXRlbWVudHMgYXMgbm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBhbgotZWRn
ZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9yZSBCLCB3
ZSBjYW4gZ2V0Ci1hIERBRy4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVhbiBhIGRp
cmVjdGVkIHBhdGggaW4gdGhpcwotREFHLiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUgREFHIGlu
dG8gc2VxdWVuY2VzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdwotd2hpY2ggc2VxdWVuY2VzIGVhY2gg
YEVYUEVDVF9DQUxMKClgIGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bwotcmVjb25z
dHJ1Y3QgdGhlIG9yZ2luYWwgREFHLgotCi1TbywgdG8gc3BlY2lmeSB0aGUgcGFydGlhbCBvcmRl
ciBvbiB0aGUgZXhwZWN0YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdvCi10aGluZ3M6IGZpcnN0IHRv
IGRlZmluZSBzb21lIGBTZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gKLWBFWFBF
Q1RfQ0FMTCgpYCBzYXkgd2hpY2ggYFNlcXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQKLW9mLiBF
eHBlY3RhdGlvbnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUgb3JkZXIg
dGhleSBhcmUKLXdyaXR0ZW4uIEZvciBleGFtcGxlLAotCi1gYGAKLSAgdXNpbmcgOjp0ZXN0aW5n
OjpTZXF1ZW5jZTsKLQotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBB
KCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChiYXIsIEIoKSkK
LSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCi0gICAgICAu
SW5TZXF1ZW5jZShzMik7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRCgpKQotICAgICAgLkluU2VxdWVu
Y2UoczIpOwotYGBgCi0KLXNwZWNpZmllcyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUgYHMxYCBp
cyBgQSAtPiBCYCwgYW5kIGBzMmAgaXMgYEEgLT4KLUMgLT4gRGApOgotCi1gYGAKLSAgICAgICAr
LS0tPiBCCi0gICAgICAgfAotICBBIC0tLXwKLSAgICAgICB8Ci0gICAgICAgKy0tLT4gQyAtLS0+
IEQKLWBgYAotCi1UaGlzIG1lYW5zIHRoYXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFuZCBDLCBh
bmQgQyBtdXN0IG9jY3VyIGJlZm9yZQotRC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBhYm91dCB0
aGUgb3JkZXIgb3RoZXIgdGhhbiB0aGVzZS4KLQotIyMgQ29udHJvbGxpbmcgV2hlbiBhbiBFeHBl
Y3RhdGlvbiBSZXRpcmVzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIEdvb2ds
ZSBNb2NrIG9ubHkgY29uc2lkZXIgZXhwZWN0YXRpb25zCi10aGF0IGFyZSBzdGlsbCBhY3RpdmUu
IEFuIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQsIGFuZAotYmVjb21lcyBpbmFj
dGl2ZSAoYWthIF9yZXRpcmVzXykgd2hlbiBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIgbGF0ZXIK
LWhhcyBvY2N1cnJlZC4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6
Ol87Ci0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEsIHMyOwot
Ci0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkg
ICAgIC8vICMxCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5TZXF1ZW5jZShz
MSwgczIpOwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBzZXQgaXMg
ZW1wdHkuIikpICAvLyAjMgotICAgICAgLkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1RfQ0FMTChs
b2csIExvZyhXQVJOSU5HLCBfLCAiVXNlciBub3QgZm91bmQuIikpICAgICAvLyAjMwotICAgICAg
LkluU2VxdWVuY2UoczIpOwotYGBgCi0KLWFzIHNvb24gYXMgZWl0aGVyICMyIG9yICMzIGlzIG1h
dGNoZWQsICMxIHdpbGwgcmV0aXJlLiBJZiBhIHdhcm5pbmcKLWAiRmlsZSB0b28gbGFyZ2UuImAg
aXMgbG9nZ2VkIGFmdGVyIHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCi0KLU5vdGUgdGhhdCBh
biBleHBlY3RhdGlvbiBkb2Vzbid0IHJldGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQncwotc2F0
dXJhdGVkLiBGb3IgZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAg
RVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAgIC8v
ICMxCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4i
KSk7ICAvLyAjMgotYGBgCi0KLXNheXMgdGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25lIHdh
cm5pbmcgd2l0aCB0aGUgbWVzc2FnZSBgIkZpbGUKLXRvbyBsYXJnZS4iYC4gSWYgdGhlIHNlY29u
ZCB3YXJuaW5nIGNvbnRhaW5zIHRoaXMgbWVzc2FnZSB0b28sICMyIHdpbGwKLW1hdGNoIGFnYWlu
IGFuZCByZXN1bHQgaW4gYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZXJyb3IuCi0KLUlmIHRoaXMg
aXMgbm90IHdoYXQgeW91IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRvIHJldGly
ZSBhcwotc29vbiBhcyBpdCBiZWNvbWVzIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAg
ICAgICAgICAgICAgLy8gIzEKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZp
bGUgdG9vIGxhcmdlLiIpKSAgLy8gIzIKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1g
YGAKLQotSGVyZSAjMiBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZlIHR3byB3
YXJuaW5ncyB3aXRoIHRoZQotbWVzc2FnZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUgZmlyc3Qg
d2lsbCBtYXRjaCAjMiBhbmQgdGhlIHNlY29uZAotd2lsbCBtYXRjaCAjMSAtIHRoZXJlIHdpbGwg
YmUgbm8gZXJyb3IuCi0KLSMgVXNpbmcgQWN0aW9ucyAjCi0KLSMjIFJldHVybmluZyBSZWZlcmVu
Y2VzIGZyb20gTW9jayBNZXRob2RzICMjCi0KLUlmIGEgbW9jayBmdW5jdGlvbidzIHJldHVybiB0
eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3UgbmVlZCB0byB1c2UKLWBSZXR1cm5SZWYoKWAgaW5zdGVh
ZCBvZiBgUmV0dXJuKClgIHRvIHJldHVybiBhIHJlc3VsdDoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoK
LSAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZv
bzsKLSAgQmFyIGJhcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkKLSAgICAgIC5XaWxs
T25jZShSZXR1cm5SZWYoYmFyKSk7Ci1gYGAKLQotIyMgQ29tYmluaW5nIEFjdGlvbnMgIyMKLQot
V2FudCB0byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5jdGlvbiBpcyBjYWxsZWQ/
IFRoYXQncwotZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBzZXF1ZW5jZSBvZiBhY3Rp
b25zIGV2ZXJ5IHRpbWUuIE9ubHkKLXRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxhc3QgYWN0aW9u
IGluIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpE
b0FsbDsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19N
RVRIT0QxKEJhciwgYm9vbChpbnQgbikpOwotfTsKLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywg
QmFyKF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAotICAgICAgICAgICAgICAg
ICAgICAgIGFjdGlvbl8yLAotICAgICAgICAgICAgICAgICAgICAgIC4uLgotICAgICAgICAgICAg
ICAgICAgICAgIGFjdGlvbl9uKSk7Ci1gYGAKLQotIyMgTW9ja2luZyBTaWRlIEVmZmVjdHMgIyMK
LQotU29tZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qgbm90IHZpYSByZXR1cm5p
bmcgYSB2YWx1ZSBidXQKLXZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFtcGxlLCBpdCBtYXkgY2hh
bmdlIHNvbWUgZ2xvYmFsIHN0YXRlIG9yCi1tb2RpZnkgYW4gb3V0cHV0IGFyZ3VtZW50LiBUbyBt
b2NrIHNpZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCi1kZWZpbmUgeW91ciBvd24gYWN0
aW9uIGJ5IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2VgLgotCi1JZiBh
bGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBhcmd1bWVudCwgdGhlIGJ1
aWx0LWluCi1gU2V0QXJndW1lbnRQb2ludGVlKClgIGFjdGlvbiBpcyBjb252ZW5pZW50OgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6U2V0QXJndW1lbnRQb2ludGVlOwotCi1jbGFzcyBNb2NrTXV0
YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihNdXRhdGUs
IHZvaWQoYm9vbCBtdXRhdGUsIGludCogdmFsdWUpKTsKLSAgLi4uCi19OwotLi4uCi0KLSAgTW9j
a011dGF0b3IgbXV0YXRvcjsKLSAgRVhQRUNUX0NBTEwobXV0YXRvciwgTXV0YXRlKHRydWUsIF8p
KQotICAgICAgLldpbGxPbmNlKFNldEFyZ3VtZW50UG9pbnRlZTwxPig1KSk7Ci1gYGAKLQotSW4g
dGhpcyBleGFtcGxlLCB3aGVuIGBtdXRhdG9yLk11dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwg
YXNzaWduIDUKLXRvIHRoZSBgaW50YCB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMx
Ci0oMC1iYXNlZCkuCi0KLWBTZXRBcmd1bWVudFBvaW50ZWUoKWAgY29udmVuaWVudGx5IG1ha2Vz
IGFuIGludGVybmFsIGNvcHkgb2YgdGhlCi12YWx1ZSB5b3UgcGFzcyB0byBpdCwgcmVtb3Zpbmcg
dGhlIG5lZWQgdG8ga2VlcCB0aGUgdmFsdWUgaW4gc2NvcGUgYW5kCi1hbGl2ZS4gVGhlIGltcGxp
Y2F0aW9uIGhvd2V2ZXIgaXMgdGhhdCB0aGUgdmFsdWUgbXVzdCBoYXZlIGEgY29weQotY29uc3Ry
dWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0KLUlmIHRoZSBtb2NrIG1ldGhvZCBhbHNv
IG5lZWRzIHRvIHJldHVybiBhIHZhbHVlIGFzIHdlbGwsIHlvdSBjYW4gY2hhaW4KLWBTZXRBcmd1
bWVudFBvaW50ZWUoKWAgd2l0aCBgUmV0dXJuKClgIHVzaW5nIGBEb0FsbCgpYDoKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIDo6dGVz
dGluZzo6U2V0QXJndW1lbnRQb2ludGVlOwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBN
dXRhdG9yIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoTXV0YXRlSW50LCBib29s
KGludCogdmFsdWUpKTsKLX07Ci0uLi4KLQotICBNb2NrTXV0YXRvciBtdXRhdG9yOwotICBFWFBF
Q1RfQ0FMTChtdXRhdG9yLCBNdXRhdGVJbnQoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0
QXJndW1lbnRQb2ludGVlPDA+KDUpLAotICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVl
KSkpOwotYGBgCi0KLUlmIHRoZSBvdXRwdXQgYXJndW1lbnQgaXMgYW4gYXJyYXksIHVzZSB0aGUK
LWBTZXRBcnJheUFyZ3VtZW50PE4+KGZpcnN0LCBsYXN0KWAgYWN0aW9uIGluc3RlYWQuIEl0IGNv
cGllcyB0aGUKLWVsZW1lbnRzIGluIHNvdXJjZSByYW5nZSBgW2ZpcnN0LCBsYXN0KWAgdG8gdGhl
IGFycmF5IHBvaW50ZWQgdG8gYnkKLXRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50OgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6Tm90TnVsbDsKLXVzaW5nIDo6dGVzdGluZzo6U2V0QXJyYXlB
cmd1bWVudDsKLQotY2xhc3MgTW9ja0FycmF5TXV0YXRvciA6IHB1YmxpYyBBcnJheU11dGF0b3Ig
ewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9pZChpbnQqIHZhbHVlcywgaW50
IG51bV92YWx1ZXMpKTsKLSAgLi4uCi19OwotLi4uCi0KLSAgTW9ja0FycmF5TXV0YXRvciBtdXRh
dG9yOwotICBpbnQgdmFsdWVzWzVdID0geyAxLCAyLCAzLCA0LCA1IH07Ci0gIEVYUEVDVF9DQUxM
KG11dGF0b3IsIE11dGF0ZShOb3ROdWxsKCksIDUpKQotICAgICAgLldpbGxPbmNlKFNldEFycmF5
QXJndW1lbnQ8MD4odmFsdWVzLCB2YWx1ZXMgKyA1KSk7Ci1gYGAKLQotVGhpcyBhbHNvIHdvcmtz
IHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIG91dHB1dCBpdGVyYXRvcjoKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlNlQXJyYXlBcmd1bWVudDsKLQotY2xhc3Mg
TW9ja1JvbG9kZXggOiBwdWJsaWMgUm9sb2RleCB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEo
R2V0TmFtZXMsIHZvaWQoc3RkOjpiYWNrX2luc2VydF9pdGVyYXRvcjx2ZWN0b3I8c3RyaW5nPiA+
KSk7Ci0gIC4uLgotfTsKLS4uLgotCi0gIE1vY2tSb2xvZGV4IHJvbG9kZXg7Ci0gIHZlY3Rvcjxz
dHJpbmc+IG5hbWVzOwotICBuYW1lcy5wdXNoX2JhY2soIkdlb3JnZSIpOwotICBuYW1lcy5wdXNo
X2JhY2soIkpvaG4iKTsKLSAgbmFtZXMucHVzaF9iYWNrKCJUaG9tYXMiKTsKLSAgRVhQRUNUX0NB
TEwocm9sb2RleCwgR2V0TmFtZXMoXykpCi0gICAgICAuV2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVu
dDwwPihuYW1lcy5iZWdpbigpLCBuYW1lcy5lbmQoKSkpOwotYGBgCi0KLSMjIENoYW5naW5nIGEg
TW9jayBPYmplY3QncyBCZWhhdmlvciBCYXNlZCBvbiB0aGUgU3RhdGUgIyMKLQotSWYgeW91IGV4
cGVjdCBhIGNhbGwgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBhIG1vY2sgb2JqZWN0LCB5b3Ug
Y2FuIHVzZSBgOjp0ZXN0aW5nOjpJblNlcXVlbmNlYCB0byBzcGVjaWZ5IGRpZmZlcmVudCBiZWhh
dmlvcnMgYmVmb3JlIGFuZCBhZnRlciB0aGUgY2FsbDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OkluU2VxdWVuY2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotLi4uCi0gIHsKLSAgICBJ
blNlcXVlbmNlIHNlcTsKLSAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBJc0RpcnR5KCkpCi0gICAg
ICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4odHJ1ZSkpOwotICAgIEVYUEVDVF9DQUxMKG15X21v
Y2ssIEZsdXNoKCkpOwotICAgIEVYUEVDVF9DQUxMKG15X21vY2ssIElzRGlydHkoKSkKLSAgICAg
ICAgLldpbGxSZXBlYXRlZGx5KFJldHVybihmYWxzZSkpOwotICB9Ci0gIG15X21vY2suRmx1c2hJ
ZkRpcnR5KCk7Ci1gYGAKLQotVGhpcyBtYWtlcyBgbXlfbW9jay5Jc0RpcnR5KClgIHJldHVybiBg
dHJ1ZWAgYmVmb3JlIGBteV9tb2NrLkZsdXNoKClgIGlzIGNhbGxlZCBhbmQgcmV0dXJuIGBmYWxz
ZWAgYWZ0ZXJ3YXJkcy4KLQotSWYgdGhlIGJlaGF2aW9yIGNoYW5nZSBpcyBtb3JlIGNvbXBsZXgs
IHlvdSBjYW4gc3RvcmUgdGhlIGVmZmVjdHMgaW4gYSB2YXJpYWJsZSBhbmQgbWFrZSBhIG1vY2sg
bWV0aG9kIGdldCBpdHMgcmV0dXJuIHZhbHVlIGZyb20gdGhhdCB2YXJpYWJsZToKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OlNhdmVBcmc7Ci11c2luZyA6OnRl
c3Rpbmc6OlJldHVybjsKLQotQUNUSU9OX1AoUmV0dXJuUG9pbnRlZSwgcCkgeyByZXR1cm4gKnA7
IH0KLS4uLgotICBpbnQgcHJldmlvdXNfdmFsdWUgPSAwOwotICBFWFBFQ1RfQ0FMTChteV9tb2Nr
LCBHZXRQcmV2VmFsdWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZw
cmV2aW91c192YWx1ZSkpOwotICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBVcGRhdGVWYWx1ZShfKSkK
LSAgICAgIC5XaWxsUmVwZWF0ZWRseShTYXZlQXJnPDA+KCZwcmV2aW91c192YWx1ZSkpOwotICBt
eV9tb2NrLkRvU29tZXRoaW5nVG9VcGRhdGVWYWx1ZSgpOwotYGBgCi0KLUhlcmUgYG15X21vY2su
R2V0UHJldlZhbHVlKClgIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgYXJndW1lbnQgb2YgdGhlIGxh
c3QgYFVwZGF0ZVZhbHVlKClgIGNhbGwuCi0KLSMjIFNldHRpbmcgdGhlIERlZmF1bHQgVmFsdWUg
Zm9yIGEgUmV0dXJuIFR5cGUgIyMKLQotSWYgYSBtb2NrIG1ldGhvZCdzIHJldHVybiB0eXBlIGlz
IGEgYnVpbHQtaW4gQysrIHR5cGUgb3IgcG9pbnRlciwgYnkKLWRlZmF1bHQgaXQgd2lsbCByZXR1
cm4gMCB3aGVuIGludm9rZWQuIFlvdSBvbmx5IG5lZWQgdG8gc3BlY2lmeSBhbgotYWN0aW9uIGlm
IHRoaXMgZGVmYXVsdCB2YWx1ZSBkb2Vzbid0IHdvcmsgZm9yIHlvdS4KLQotU29tZXRpbWVzLCB5
b3UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgZGVmYXVsdCB2YWx1ZSwgb3IgeW91IG1heSB3YW50
Ci10byBzcGVjaWZ5IGEgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZXMgR29vZ2xlIE1vY2sgZG9lc24n
dCBrbm93Ci1hYm91dC4gWW91IGNhbiBkbyB0aGlzIHVzaW5nIHRoZSBgOjp0ZXN0aW5nOjpEZWZh
dWx0VmFsdWVgIGNsYXNzCi10ZW1wbGF0ZToKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGlj
IEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAoQ2FsY3VsYXRlQmFyLCBCYXIoKSk7Ci19
OwotLi4uCi0KLSAgQmFyIGRlZmF1bHRfYmFyOwotICAvLyBTZXRzIHRoZSBkZWZhdWx0IHJldHVy
biB2YWx1ZSBmb3IgdHlwZSBCYXIuCi0gIERlZmF1bHRWYWx1ZTxCYXI+OjpTZXQoZGVmYXVsdF9i
YXIpOwotCi0gIE1vY2tGb28gZm9vOwotCi0gIC8vIFdlIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBh
biBhY3Rpb24gaGVyZSwgYXMgdGhlIGRlZmF1bHQKLSAgLy8gcmV0dXJuIHZhbHVlIHdvcmtzIGZv
ciB1cy4KLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxjdWxhdGVCYXIoKSk7Ci0KLSAgZm9vLkNhbGN1
bGF0ZUJhcigpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIGRlZmF1bHRfYmFyLgotCi0gIC8vIFVu
c2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUuCi0gIERlZmF1bHRWYWx1ZTxCYXI+OjpDbGVh
cigpOwotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgY2hhbmdpbmcgdGhlIGRlZmF1bHQgdmFsdWUg
Zm9yIGEgdHlwZSBjYW4gbWFrZSB5b3UKLXRlc3RzIGhhcmQgdG8gdW5kZXJzdGFuZC4gV2UgcmVj
b21tZW5kIHlvdSB0byB1c2UgdGhpcyBmZWF0dXJlCi1qdWRpY2lvdXNseS4gRm9yIGV4YW1wbGUs
IHlvdSBtYXkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGBTZXQoKWAgYW5kCi1gQ2xlYXIoKWAgY2Fs
bHMgYXJlIHJpZ2h0IG5leHQgdG8gdGhlIGNvZGUgdGhhdCB1c2VzIHlvdXIgbW9jay4KLQotIyMg
U2V0dGluZyB0aGUgRGVmYXVsdCBBY3Rpb25zIGZvciBhIE1vY2sgTWV0aG9kICMjCi0KLVlvdSd2
ZSBsZWFybmVkIGhvdyB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBnaXZlbgotdHlw
ZS4gSG93ZXZlciwgdGhpcyBtYXkgYmUgdG9vIGNvYXJzZSBmb3IgeW91ciBwdXJwb3NlOiBwZXJo
YXBzIHlvdQotaGF2ZSB0d28gbW9jayBtZXRob2RzIHdpdGggdGhlIHNhbWUgcmV0dXJuIHR5cGUg
YW5kIHlvdSB3YW50IHRoZW0gdG8KLWhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycy4gVGhlIGBPTl9D
QUxMKClgIG1hY3JvIGFsbG93cyB5b3UgdG8KLWN1c3RvbWl6ZSB5b3VyIG1vY2sncyBiZWhhdmlv
ciBhdCB0aGUgbWV0aG9kIGxldmVsOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5n
IDo6dGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsKLXVzaW5nIDo6dGVz
dGluZzo6UmV0dXJuOwotLi4uCi0gIE9OX0NBTEwoZm9vLCBTaWduKF8pKQotICAgICAgLldpbGxC
eURlZmF1bHQoUmV0dXJuKC0xKSk7Ci0gIE9OX0NBTEwoZm9vLCBTaWduKDApKQotICAgICAgLldp
bGxCeURlZmF1bHQoUmV0dXJuKDApKTsKLSAgT05fQ0FMTChmb28sIFNpZ24oR3QoMCkpKQotICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIFNpZ24o
XykpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gIGZvby5TaWduKDUpOyAgIC8vIFRo
aXMgc2hvdWxkIHJldHVybiAxLgotICBmb28uU2lnbigtOSk7ICAvLyBUaGlzIHNob3VsZCByZXR1
cm4gLTEuCi0gIGZvby5TaWduKDApOyAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiAwLgotYGBgCi0K
LUFzIHlvdSBtYXkgaGF2ZSBndWVzc2VkLCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGBP
Tl9DQUxMKClgCi1zdGF0ZW1lbnRzLCB0aGUgbmV3cyBvcmRlciB0YWtlIHByZWNlZGVuY2Ugb3Zl
ciB0aGUgb2xkZXIgb25lcy4gSW4KLW90aGVyIHdvcmRzLCB0aGUgKipsYXN0Kiogb25lIHRoYXQg
bWF0Y2hlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHdpbGwKLWJlIHVzZWQuIFRoaXMgbWF0Y2hp
bmcgb3JkZXIgYWxsb3dzIHlvdSB0byBzZXQgdXAgdGhlIGNvbW1vbiBiZWhhdmlvcgotaW4gYSBt
b2NrIG9iamVjdCdzIGNvbnN0cnVjdG9yIG9yIHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhh
c2UgYW5kCi1zcGVjaWFsaXplIHRoZSBtb2NrJ3MgYmVoYXZpb3IgbGF0ZXIuCi0KLSMjIFVzaW5n
IEZ1bmN0aW9ucy9NZXRob2RzL0Z1bmN0b3JzIGFzIEFjdGlvbnMgIyMKLQotSWYgdGhlIGJ1aWx0
LWluIGFjdGlvbnMgZG9uJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gZWFzaWx5IHVzZSBhbiBleGlzdGlu
ZwotZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciBhcyBhbiBhY3Rpb246Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0KLWNsYXNzIE1vY2tG
b28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihTdW0sIGludChpbnQg
eCwgaW50IHkpKTsKLSAgTU9DS19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IHgpKTsKLX07
Ci0KLWludCBDYWxjdWxhdGVTdW0oaW50IHgsIGludCB5KSB7IHJldHVybiB4ICsgeTsgfQotCi1j
bGFzcyBIZWxwZXIgewotIHB1YmxpYzoKLSAgYm9vbCBDb21wbGV4Sm9iKGludCB4KTsKLX07Ci0u
Li4KLQotICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBTdW0oXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKENhbGN1bGF0ZVN1bSkpOwotICBF
WFBFQ1RfQ0FMTChmb28sIENvbXBsZXhKb2IoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKCZo
ZWxwZXIsICZIZWxwZXI6OkNvbXBsZXhKb2IpKTsKLQotICBmb28uU3VtKDUsIDYpOyAgICAgICAv
LyBJbnZva2VzIENhbGN1bGF0ZVN1bSg1LCA2KS4KLSAgZm9vLkNvbXBsZXhKb2IoMTApOyAgLy8g
SW52b2tlcyBoZWxwZXIuQ29tcGxleEpvYigxMCk7Ci1gYGAKLQotVGhlIG9ubHkgcmVxdWlyZW1l
bnQgaXMgdGhhdCB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGV0YyBtdXN0IGJlCi1fY29tcGF0
aWJsZV8gd2l0aCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uLCBtZWFuaW5nIHRo
YXQgdGhlCi1sYXR0ZXIncyBhcmd1bWVudHMgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRv
IHRoZSBjb3JyZXNwb25kaW5nCi1hcmd1bWVudHMgb2YgdGhlIGZvcm1lciwgYW5kIHRoZSBmb3Jt
ZXIncyByZXR1cm4gdHlwZSBjYW4gYmUKLWltcGxpY2l0bHkgY29udmVydGVkIHRvIHRoYXQgb2Yg
dGhlIGxhdHRlci4gU28sIHlvdSBjYW4gaW52b2tlCi1zb21ldGhpbmcgd2hvc2UgdHlwZSBpcyBf
bm90XyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBtb2NrIGZ1bmN0aW9uLAotYXMgbG9uZyBhcyBp
dCdzIHNhZmUgdG8gZG8gc28gLSBuaWNlLCBodWg/Ci0KLSMjIEludm9raW5nIGEgRnVuY3Rpb24v
TWV0aG9kL0Z1bmN0b3IgV2l0aG91dCBBcmd1bWVudHMgIyMKLQotYEludm9rZSgpYCBpcyB2ZXJ5
IHVzZWZ1bCBmb3IgZG9pbmcgYWN0aW9ucyB0aGF0IGFyZSBtb3JlIGNvbXBsZXguIEl0Ci1wYXNz
ZXMgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0aW9uIG9yIGZ1bmN0
b3IgYmVpbmcKLWludm9rZWQgc3VjaCB0aGF0IHRoZSBjYWxsZWUgaGFzIHRoZSBmdWxsIGNvbnRl
eHQgb2YgdGhlIGNhbGwgdG8gd29yawotd2l0aC4gSWYgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMg
bm90IGludGVyZXN0ZWQgaW4gc29tZSBvciBhbGwgb2YgdGhlCi1hcmd1bWVudHMsIGl0IGNhbiBz
aW1wbHkgaWdub3JlIHRoZW0uCi0KLVlldCwgYSBjb21tb24gcGF0dGVybiBpcyB0aGF0IGEgdGVz
dCBhdXRob3Igd2FudHMgdG8gaW52b2tlIGEgZnVuY3Rpb24KLXdpdGhvdXQgdGhlIGFyZ3VtZW50
cyBvZiB0aGUgbW9jayBmdW5jdGlvbi4gYEludm9rZSgpYCBhbGxvd3MgaGVyIHRvCi1kbyB0aGF0
IHVzaW5nIGEgd3JhcHBlciBmdW5jdGlvbiB0aGF0IHRocm93cyBhd2F5IHRoZSBhcmd1bWVudHMg
YmVmb3JlCi1pbnZva2luZyBhbiB1bmRlcmxpbmluZyBudWxsYXJ5IGZ1bmN0aW9uLiBOZWVkbGVz
cyB0byBzYXksIHRoaXMgY2FuIGJlCi10ZWRpb3VzIGFuZCBvYnNjdXJlcyB0aGUgaW50ZW50IG9m
IHRoZSB0ZXN0LgotCi1gSW52b2tlV2l0aG91dEFyZ3MoKWAgc29sdmVzIHRoaXMgcHJvYmxlbS4g
SXQncyBsaWtlIGBJbnZva2UoKWAgZXhjZXB0Ci10aGF0IGl0IGRvZXNuJ3QgcGFzcyB0aGUgbW9j
ayBmdW5jdGlvbidzIGFyZ3VtZW50cyB0byB0aGUKLWNhbGxlZS4gSGVyZSdzIGFuIGV4YW1wbGU6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VXaXRo
b3V0QXJnczsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9D
S19NRVRIT0QxKENvbXBsZXhKb2IsIGJvb2woaW50IG4pKTsKLX07Ci0KLWJvb2wgSm9iMSgpIHsg
Li4uIH0KLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIENvbXBsZXhK
b2IoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlV2l0aG91dEFyZ3MoSm9iMSkpOwotCi0gIGZv
by5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgSm9iMSgpLgotYGBgCi0KLSMjIEludm9raW5n
IGFuIEFyZ3VtZW50IG9mIHRoZSBNb2NrIEZ1bmN0aW9uICMjCi0KLVNvbWV0aW1lcyBhIG1vY2sg
ZnVuY3Rpb24gd2lsbCByZWNlaXZlIGEgZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3IKLShp
biBvdGhlciB3b3JkcywgYSAiY2FsbGFibGUiKSBhcyBhbiBhcmd1bWVudCwgZS5nLgotCi1gYGAK
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihE
b1RoaXMsIGJvb2woaW50IG4sIGJvb2wgKCpmcCkoaW50KSkpOwotfTsKLWBgYAotCi1hbmQgeW91
IG1heSB3YW50IHRvIGludm9rZSB0aGlzIGNhbGxhYmxlIGFyZ3VtZW50OgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6XzsKLS4uLgotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBE
b1RoaXMoXywgXykpCi0gICAgICAuV2lsbE9uY2UoLi4uKTsKLSAgLy8gV2lsbCBleGVjdXRlICgq
ZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhpcygpIHJl
Y2VpdmVzLgotYGBgCi0KLUFyZ2hoLCB5b3UgbmVlZCB0byByZWZlciB0byBhIG1vY2sgZnVuY3Rp
b24gYXJndW1lbnQgYnV0IEMrKyBoYXMgbm8KLWxhbWJkYSAoeWV0KSwgc28geW91IGhhdmUgdG8g
ZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gOi0oIE9yIGRvIHlvdQotcmVhbGx5PwotCi1XZWxsLCBH
b29nbGUgTW9jayBoYXMgYW4gYWN0aW9uIHRvIHNvbHZlIF9leGFjdGx5XyB0aGlzIHByb2JsZW06
Ci0KLWBgYAotICBJbnZva2VBcmd1bWVudDxOPihhcmdfMSwgYXJnXzIsIC4uLiwgYXJnX20pCi1g
YGAKLQotd2lsbCBpbnZva2UgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgdGhlIG1vY2sg
ZnVuY3Rpb24gcmVjZWl2ZXMsCi13aXRoIGBhcmdfMWAsIGBhcmdfMmAsIC4uLiwgYW5kIGBhcmdf
bWAuIE5vIG1hdHRlciBpZiB0aGUgYXJndW1lbnQgaXMKLWEgZnVuY3Rpb24gcG9pbnRlciBvciBh
IGZ1bmN0b3IsIEdvb2dsZSBNb2NrIGhhbmRsZXMgdGhlbSBib3RoLgotCi1XaXRoIHRoYXQsIHlv
dSBjb3VsZCB3cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8p
KQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDE+KDUpKTsKLSAgLy8gV2lsbCBleGVj
dXRlICgqZnApKDUpLCB3aGVyZSBmcCBpcyB0aGUKLSAgLy8gc2Vjb25kIGFyZ3VtZW50IERvVGhp
cygpIHJlY2VpdmVzLgotYGBgCi0KLVdoYXQgaWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3Vt
ZW50IGJ5IHJlZmVyZW5jZT8gTm8gcHJvYmxlbSAtIGp1c3QKLXdyYXAgaXQgaW5zaWRlIGBCeVJl
ZigpYDoKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChib29sICgqZnApKGlu
dCwgY29uc3QgSGVscGVyJikpKTsKLS4uLgotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0
ZXN0aW5nOjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7Ci0uLi4KLQot
ICBNb2NrRm9vIGZvbzsKLSAgSGVscGVyIGhlbHBlcjsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZv
bywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZUFyZ3VtZW50PDA+KDUsIEJ5UmVmKGhl
bHBlcikpKTsKLSAgLy8gQnlSZWYoaGVscGVyKSBndWFyYW50ZWVzIHRoYXQgYSByZWZlcmVuY2Ug
dG8gaGVscGVyLCBub3QgYSBjb3B5IG9mIGl0LAotICAvLyB3aWxsIGJlIHBhc3NlZCB0byB0aGUg
Y2FsbGFibGUuCi1gYGAKLQotV2hhdCBpZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQg
YnkgcmVmZXJlbmNlIGFuZCB3ZSBkbyAqKm5vdCoqCi13cmFwIHRoZSBhcmd1bWVudCBpbiBgQnlS
ZWYoKWA/IFRoZW4gYEludm9rZUFyZ3VtZW50KClgIHdpbGwgX21ha2UgYQotY29weV8gb2YgdGhl
IGFyZ3VtZW50LCBhbmQgcGFzcyBhIF9yZWZlcmVuY2UgdG8gdGhlIGNvcHlfLCBpbnN0ZWFkIG9m
Ci1hIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUsIHRvIHRoZSBjYWxsYWJsZS4gVGhp
cyBpcyBlc3BlY2lhbGx5Ci1oYW5keSB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHRlbXBvcmFyeSB2
YWx1ZToKLQotYGBgCi0uLi4KLSAgTU9DS19NRVRIT0QxKERvVGhhdCwgYm9vbChib29sICgqZiko
Y29uc3QgZG91YmxlJiB4LCBjb25zdCBzdHJpbmcmIHMpKSk7Ci0uLi4KLXVzaW5nIDo6dGVzdGlu
Zzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlQXJndW1lbnQ7Ci0uLi4KLQotICBNb2NrRm9v
IGZvbzsKLSAgLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8pKQotICAgICAgLldpbGxP
bmNlKEludm9rZUFyZ3VtZW50PDA+KDUuMCwgc3RyaW5nKCJIaSIpKSk7Ci0gIC8vIFdpbGwgZXhl
Y3V0ZSAoKmYpKDUuMCwgc3RyaW5nKCJIaSIpKSwgd2hlcmUgZiBpcyB0aGUgZnVuY3Rpb24gcG9p
bnRlcgotICAvLyBEb1RoYXQoKSByZWNlaXZlcy4gIE5vdGUgdGhhdCB0aGUgdmFsdWVzIDUuMCBh
bmQgc3RyaW5nKCJIaSIpIGFyZQotICAvLyB0ZW1wb3JhcnkgYW5kIGRlYWQgb25jZSB0aGUgRVhQ
RUNUX0NBTEwoKSBzdGF0ZW1lbnQgZmluaXNoZXMuICBZZXQKLSAgLy8gaXQncyBmaW5lIHRvIHBl
cmZvcm0gdGhpcyBhY3Rpb24gbGF0ZXIsIHNpbmNlIGEgY29weSBvZiB0aGUgdmFsdWVzCi0gIC8v
IGFyZSBrZXB0IGluc2lkZSB0aGUgSW52b2tlQXJndW1lbnQgYWN0aW9uLgotYGBgCi0KLSMjIEln
bm9yaW5nIGFuIEFjdGlvbidzIFJlc3VsdCAjIwotCi1Tb21ldGltZXMgeW91IGhhdmUgYW4gYWN0
aW9uIHRoYXQgcmV0dXJucyBfc29tZXRoaW5nXywgYnV0IHlvdSBuZWVkIGFuCi1hY3Rpb24gdGhh
dCByZXR1cm5zIGB2b2lkYCAocGVyaGFwcyB5b3Ugd2FudCB0byB1c2UgaXQgaW4gYSBtb2NrCi1m
dW5jdGlvbiB0aGF0IHJldHVybnMgYHZvaWRgLCBvciBwZXJoYXBzIGl0IG5lZWRzIHRvIGJlIHVz
ZWQgaW4KLWBEb0FsbCgpYCBhbmQgaXQncyBub3QgdGhlIGxhc3QgaW4gdGhlIGxpc3QpLiBgSWdu
b3JlUmVzdWx0KClgIGxldHMKLXlvdSBkbyB0aGF0LiBGb3IgZXhhbXBsZToKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6dGVzdGlu
Zzo6UmV0dXJuOwotCi1pbnQgUHJvY2Vzcyhjb25zdCBNeURhdGEmIGRhdGEpOwotc3RyaW5nIERv
U29tZXRoaW5nKCk7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0g
IE1PQ0tfTUVUSE9EMShBYmMsIHZvaWQoY29uc3QgTXlEYXRhJiBkYXRhKSk7Ci0gIE1PQ0tfTUVU
SE9EMChYeXosIGJvb2woKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9D
QUxMKGZvbywgQWJjKF8pKQotICAvLyAuV2lsbE9uY2UoSW52b2tlKFByb2Nlc3MpKTsKLSAgLy8g
VGhlIGFib3ZlIGxpbmUgd29uJ3QgY29tcGlsZSBhcyBQcm9jZXNzKCkgcmV0dXJucyBpbnQgYnV0
IEFiYygpIG5lZWRzCi0gIC8vIHRvIHJldHVybiB2b2lkLgotICAgICAgLldpbGxPbmNlKElnbm9y
ZVJlc3VsdChJbnZva2UoUHJvY2VzcykpKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIFh5eigpKQot
ICAgICAgLldpbGxPbmNlKERvQWxsKElnbm9yZVJlc3VsdChJbnZva2UoRG9Tb21ldGhpbmcpKSwK
LSAgICAgIC8vIElnbm9yZXMgdGhlIHN0cmluZyBEb1NvbWV0aGluZygpIHJldHVybnMuCi0gICAg
ICAgICAgICAgICAgICAgICAgUmV0dXJuKHRydWUpKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSAq
KmNhbm5vdCoqIHVzZSBgSWdub3JlUmVzdWx0KClgIG9uIGFuIGFjdGlvbiB0aGF0IGFscmVhZHkK
LXJldHVybnMgYHZvaWRgLiBEb2luZyBzbyB3aWxsIGxlYWQgdG8gdWdseSBjb21waWxlciBlcnJv
cnMuCi0KLSMjIFNlbGVjdGluZyBhbiBBY3Rpb24ncyBBcmd1bWVudHMgIyMKLQotU2F5IHlvdSBo
YXZlIGEgbW9jayBmdW5jdGlvbiBgRm9vKClgIHRoYXQgdGFrZXMgc2V2ZW4gYXJndW1lbnRzLCBh
bmQKLXlvdSBoYXZlIGEgY3VzdG9tIGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIGludm9rZSB3aGVu
IGBGb28oKWAgaXMKLWNhbGxlZC4gVHJvdWJsZSBpcywgdGhlIGN1c3RvbSBhY3Rpb24gb25seSB3
YW50cyB0aHJlZSBhcmd1bWVudHM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcg
Ojp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgTU9DS19NRVRIT0Q3KEZvbywgYm9vbChib29sIHZp
c2libGUsIGNvbnN0IHN0cmluZyYgbmFtZSwgaW50IHgsIGludCB5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IG1hcDxwYWlyPGludCwgaW50PiwgZG91YmxlPiYgd2VpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtaW5fd2VpZ2h0LCBkb3VibGUgbWF4X3dpZ2h0
KSk7Ci0uLi4KLQotYm9vbCBJc1Zpc2libGVJblF1YWRyYW50MShib29sIHZpc2libGUsIGludCB4
LCBpbnQgeSkgewotICByZXR1cm4gdmlzaWJsZSAmJiB4ID49IDAgJiYgeSA+PSAwOwotfQotLi4u
Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQotICAgICAg
LldpbGxPbmNlKEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpOyAgLy8gVWgsIHdvbid0IGNv
bXBpbGUuIDotKAotYGBgCi0KLVRvIHBsZWFzZSB0aGUgY29tcGlsZXIgR29kLCB5b3UgY2FuIHRv
IGRlZmluZSBhbiAiYWRhcHRvciIgdGhhdCBoYXMKLXRoZSBzYW1lIHNpZ25hdHVyZSBhcyBgRm9v
KClgIGFuZCBjYWxscyB0aGUgY3VzdG9tIGFjdGlvbiB3aXRoIHRoZQotcmlnaHQgYXJndW1lbnRz
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwot
Ci1ib29sIE15SXNWaXNpYmxlSW5RdWFkcmFudDEoYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcm
IG5hbWUsIGludCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBt
YXA8cGFpcjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkgewotICByZXR1cm4g
SXNWaXNpYmxlSW5RdWFkcmFudDEodmlzaWJsZSwgeCwgeSk7Ci19Ci0uLi4KLQotICBFWFBFQ1Rf
Q0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52
b2tlKE15SXNWaXNpYmxlSW5RdWFkcmFudDEpKTsgIC8vIE5vdyBpdCB3b3Jrcy4KLWBgYAotCi1C
dXQgaXNuJ3QgdGhpcyBhd2t3YXJkPwotCi1Hb29nbGUgTW9jayBwcm92aWRlcyBhIGdlbmVyaWMg
X2FjdGlvbiBhZGFwdG9yXywgc28geW91IGNhbiBzcGVuZCB5b3VyCi10aW1lIG1pbmRpbmcgbW9y
ZSBpbXBvcnRhbnQgYnVzaW5lc3MgdGhhbiB3cml0aW5nIHlvdXIgb3duCi1hZGFwdG9ycy4gSGVy
ZSdzIHRoZSBzeW50YXg6Ci0KLWBgYAotICBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFjdGlv
bikKLWBgYAotCi1jcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcyB0aGUgYXJndW1lbnRzIG9m
IHRoZSBtb2NrIGZ1bmN0aW9uIGF0Ci10aGUgZ2l2ZW4gaW5kaWNlcyAoMC1iYXNlZCkgdG8gdGhl
IGlubmVyIGBhY3Rpb25gIGFuZCBwZXJmb3JtcwotaXQuIFVzaW5nIGBXaXRoQXJnc2AsIG91ciBv
cmlnaW5hbCBleGFtcGxlIGNhbiBiZSB3cml0dGVuIGFzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotdXNpbmcgOjp0ZXN0aW5nOjpXaXRoQXJn
czsKLS4uLgotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXywgXywgXywgXywgXywgXykpCi0g
ICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8MCwgMiwgMz4oSW52b2tlKElzVmlzaWJsZUluUXVhZHJh
bnQxKSkpOwotICAgICAgLy8gTm8gbmVlZCB0byBkZWZpbmUgeW91ciBvd24gYWRhcHRvci4KLWBg
YAotCi1Gb3IgYmV0dGVyIHJlYWRhYmlsaXR5LCBHb29nbGUgTW9jayBhbHNvIGdpdmVzIHlvdToK
LQotICAqIGBXaXRob3V0QXJncyhhY3Rpb24pYCB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtl
cyBfbm9fIGFyZ3VtZW50LCBhbmQKLSAgKiBgV2l0aEFyZzxOPihhY3Rpb24pYCAobm8gYHNgIGFm
dGVyIGBBcmdgKSB3aGVuIHRoZSBpbm5lciBgYWN0aW9uYCB0YWtlcyBfb25lXyBhcmd1bWVudC4K
LQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBgSW52b2tlV2l0aG91dEFyZ3MoLi4uKWAgaXMg
anVzdCBzeW50YWN0aWMKLXN1Z2FyIGZvciBgV2l0aG91dEFyZ3MoSW5vdmtlKC4uLikpYC4KLQot
SGVyZSBhcmUgbW9yZSB0aXBzOgotCi0gICogVGhlIGlubmVyIGFjdGlvbiB1c2VkIGluIGBXaXRo
QXJnc2AgYW5kIGZyaWVuZHMgZG9lcyBub3QgaGF2ZSB0byBiZSBgSW52b2tlKClgIC0tIGl0IGNh
biBiZSBhbnl0aGluZy4KLSAgKiBZb3UgY2FuIHJlcGVhdCBhbiBhcmd1bWVudCBpbiB0aGUgYXJn
dW1lbnQgbGlzdCBpZiBuZWNlc3NhcnksIGUuZy4gYFdpdGhBcmdzPDIsIDMsIDMsIDU+KC4uLilg
LgotICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgYXJndW1lbnRzLCBlLmcuIGBX
aXRoQXJnczwzLCAyLCAxPiguLi4pYC4KLSAgKiBUaGUgdHlwZXMgb2YgdGhlIHNlbGVjdGVkIGFy
Z3VtZW50cyBkbyBfbm90XyBoYXZlIHRvIG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIGlubmVy
IGFjdGlvbiBleGFjdGx5LiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZXkgY2FuIGJlIGltcGxpY2l0
bHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50cyBvZiB0aGUgaW5uZXIg
YWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIDQtdGggYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24gaXMgYW4gYGludGAgYW5kIGBteV9hY3Rpb25gIHRha2VzIGEgYGRvdWJsZWAsIGBXaXRo
QXJnPDQ+KG15X2FjdGlvbilgIHdpbGwgd29yay4KLQotIyMgSWdub3JpbmcgQXJndW1lbnRzIGlu
IEFjdGlvbiBGdW5jdGlvbnMgIyMKLQotVGhlIHNlbGVjdGluZy1hbi1hY3Rpb24ncy1hcmd1bWVu
dHMgcmVjaXBlIHNob3dlZCB1cyBvbmUgd2F5IHRvIG1ha2UgYQotbW9jayBmdW5jdGlvbiBhbmQg
YW4gYWN0aW9uIHdpdGggaW5jb21wYXRpYmxlIGFyZ3VtZW50IGxpc3RzIGZpdAotdG9nZXRoZXIu
IFRoZSBkb3duc2lkZSBpcyB0aGF0IHdyYXBwaW5nIHRoZSBhY3Rpb24gaW4KLWBXaXRoQXJnczwu
Li4+KClgIGNhbiBnZXQgdGVkaW91cyBmb3IgcGVvcGxlIHdyaXRpbmcgdGhlIHRlc3RzLgotCi1J
ZiB5b3UgYXJlIGRlZmluaW5nIGEgZnVuY3Rpb24sIG1ldGhvZCwgb3IgZnVuY3RvciB0byBiZSB1
c2VkIHdpdGgKLWBJbnZva2UqKClgLCBhbmQgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBzb21l
IG9mIGl0cyBhcmd1bWVudHMsIGFuCi1hbHRlcm5hdGl2ZSB0byBgV2l0aEFyZ3NgIGlzIHRvIGRl
Y2xhcmUgdGhlIHVuaW50ZXJlc3RpbmcgYXJndW1lbnRzIGFzCi1gVW51c2VkYC4gVGhpcyBtYWtl
cyB0aGUgZGVmaW5pdGlvbiBsZXNzIGNsdXR0ZXJlZCBhbmQgbGVzcyBmcmFnaWxlIGluCi1jYXNl
IHRoZSB0eXBlcyBvZiB0aGUgdW5pbnRlcmVzdGluZyBhcmd1bWVudHMgY2hhbmdlLiBJdCBjb3Vs
ZCBhbHNvCi1pbmNyZWFzZSB0aGUgY2hhbmNlIHRoZSBhY3Rpb24gZnVuY3Rpb24gY2FuIGJlIHJl
dXNlZC4gRm9yIGV4YW1wbGUsCi1naXZlbgotCi1gYGAKLSAgTU9DS19NRVRIT0QzKEZvbywgZG91
YmxlKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkpOwotICBNT0NLX01F
VEhPRDMoQmFyLCBkb3VibGUoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpKTsKLWBgYAot
Ci1pbnN0ZWFkIG9mCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5n
OjpJbnZva2U7Ci0KLWRvdWJsZSBEaXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmlu
ZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5Knkp
OwotfQotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbldpdGhJbmRleChpbnQgaW5kZXgsIGRvdWJs
ZSB4LCBkb3VibGUgeSkgewotICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0KLSAg
RVhFUENUX0NBTEwobW9jaywgRm9vKCJhYmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZv
a2UoRGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbCkpOwotICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIo
NSwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoSW5k
ZXgpKTsKLWBgYAotCi15b3UgY291bGQgd3JpdGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87
Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6dGVzdGluZzo6VW51c2VkOwotCi1k
b3VibGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotICBy
ZXR1cm4gc3FydCh4KnggKyB5KnkpOwotfQotLi4uCi0KLSAgRVhFUENUX0NBTEwobW9jaywgRm9v
KCJhYmMiLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdpbikp
OwotICBFWEVQQ1RfQ0FMTChtb2NrLCBCYXIoNSwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52
b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLWBgYAotCi0jIyBTaGFyaW5nIEFjdGlvbnMgIyMKLQot
SnVzdCBsaWtlIG1hdGNoZXJzLCBhIEdvb2dsZSBNb2NrIGFjdGlvbiBvYmplY3QgY29uc2lzdHMg
b2YgYSBwb2ludGVyCi10byBhIHJlZi1jb3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4gVGhl
cmVmb3JlIGNvcHlpbmcgYWN0aW9ucyBpcwotYWxzbyBhbGxvd2VkIGFuZCB2ZXJ5IGVmZmljaWVu
dC4gV2hlbiB0aGUgbGFzdCBhY3Rpb24gdGhhdCByZWZlcmVuY2VzCi10aGUgaW1wbGVtZW50YXRp
b24gb2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3Qgd2lsbCBiZQotZGVsZXRl
ZC4KLQotSWYgeW91IGhhdmUgc29tZSBjb21wbGV4IGFjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHVz
ZSBhZ2FpbiBhbmQgYWdhaW4sCi15b3UgbWF5IG5vdCBoYXZlIHRvIGJ1aWxkIGl0IGZyb20gc2Ny
YXRjaCBldmVyeXRpbWUuIElmIHRoZSBhY3Rpb24KLWRvZXNuJ3QgaGF2ZSBhbiBpbnRlcm5hbCBz
dGF0ZSAoaS5lLiBpZiBpdCBhbHdheXMgZG9lcyB0aGUgc2FtZSB0aGluZwotbm8gbWF0dGVyIGhv
dyBtYW55IHRpbWVzIGl0IGhhcyBiZWVuIGNhbGxlZCksIHlvdSBjYW4gYXNzaWduIGl0IHRvIGFu
Ci1hY3Rpb24gdmFyaWFibGUgYW5kIHVzZSB0aGF0IHZhcmlhYmxlIHJlcGVhdGVkbHkuIEZvciBl
eGFtcGxlOgotCi1gYGAKLSAgQWN0aW9uPGJvb2woaW50Kik+IHNldF9mbGFnID0gRG9BbGwoU2V0
QXJndW1lbnRQb2ludGVlPDA+KDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXR1cm4odHJ1ZSkpOwotICAuLi4gdXNlIHNldF9mbGFnIGluIC5XaWxsT25jZSgpIGFu
ZCAuV2lsbFJlcGVhdGVkbHkoKSAuLi4KLWBgYAotCi1Ib3dldmVyLCBpZiB0aGUgYWN0aW9uIGhh
cyBpdHMgb3duIHN0YXRlLCB5b3UgbWF5IGJlIHN1cnByaXNlZCBpZiB5b3UKLXNoYXJlIHRoZSBh
Y3Rpb24gb2JqZWN0LiBTdXBwb3NlIHlvdSBoYXZlIGFuIGFjdGlvbiBmYWN0b3J5Ci1gSW5jcmVt
ZW50Q291bnRlcihpbml0KWAgd2hpY2ggY3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBpbmNyZW1lbnRz
IGFuZAotcmV0dXJucyBhIGNvdW50ZXIgd2hvc2UgaW5pdGlhbCB2YWx1ZSBpcyBgaW5pdGAsIHVz
aW5nIHR3byBhY3Rpb25zCi1jcmVhdGVkIGZyb20gdGhlIHNhbWUgZXhwcmVzc2lvbiBhbmQgdXNp
bmcgYSBzaGFyZWQgYWN0aW9uIHdpbGwKLWV4aWhpYml0IGRpZmZlcmVudCBiZWhhdmlvcnMuIEV4
YW1wbGU6Ci0KLWBgYAotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcygpKQotICAgICAgLldpbGxS
ZXBlYXRlZGx5KEluY3JlbWVudENvdW50ZXIoMCkpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhh
dCgpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KEluY3JlbWVudENvdW50ZXIoMCkpOwotICBmb28u
RG9UaGlzKCk7ICAvLyBSZXR1cm5zIDEuCi0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMi4K
LSAgZm9vLkRvVGhhdCgpOyAgLy8gUmV0dXJucyAxIC0gQmxhaCgpIHVzZXMgYSBkaWZmZXJlbnQK
LSAgICAgICAgICAgICAgICAgLy8gY291bnRlciB0aGFuIEJhcigpJ3MuCi1gYGAKLQotdmVyc3Vz
Ci0KLWBgYAotICBBY3Rpb248aW50KCk+IGluY3JlbWVudCA9IEluY3JlbWVudENvdW50ZXIoMCk7
Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShp
bmNyZW1lbnQpOwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdCgpKQotICAgICAgLldpbGxSZXBl
YXRlZGx5KGluY3JlbWVudCk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4KLSAgZm9v
LkRvVGhpcygpOyAgLy8gUmV0dXJucyAyLgotICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1cm5zIDMg
LSB0aGUgY291bnRlciBpcyBzaGFyZWQuCi1gYGAKLQotIyBNaXNjIFJlY2lwZXMgb24gVXNpbmcg
R29vZ2xlIE1vY2sgIwotCi0jIyBGb3JjaW5nIGEgVmVyaWZpY2F0aW9uICMjCi0KLVdoZW4gaXQn
cyBiZWluZyBkZXN0b3llZCwgeW91ciBmcmllbmRseSBtb2NrIG9iamVjdCB3aWxsIGF1dG9tYXRp
Y2FsbHkKLXZlcmlmeSB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlz
ZmllZCwgYW5kIHdpbGwKLWdlbmVyYXRlIFtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xl
LmNvbS9wL2dvb2dsZXRlc3QvKSBmYWlsdXJlcwotaWYgbm90LiBUaGlzIGlzIGNvbnZlbmllbnQg
YXMgaXQgbGVhdmVzIHlvdSB3aXRoIG9uZSBsZXNzIHRoaW5nIHRvCi13b3JyeSBhYm91dC4gVGhh
dCBpcywgdW5sZXNzIHlvdSBhcmUgbm90IHN1cmUgaWYgeW91ciBtb2NrIG9iamVjdCB3aWxsCi1i
ZSBkZXN0b3llZC4KLQotSG93IGNvdWxkIGl0IGJlIHRoYXQgeW91ciBtb2NrIG9iamVjdCB3b24n
dCBldmVudHVhbGx5IGJlIGRlc3Ryb3llZD8KLVdlbGwsIGl0IG1pZ2h0IGJlIGNyZWF0ZWQgb24g
dGhlIGhlYXAgYW5kIG93bmVkIGJ5IHRoZSBjb2RlIHlvdSBhcmUKLXRlc3RpbmcuIFN1cHBvc2Ug
dGhlcmUncyBhIGJ1ZyBpbiB0aGF0IGNvZGUgYW5kIGl0IGRvZXNuJ3QgZGVsZXRlIHRoZQotbW9j
ayBvYmplY3QgcHJvcGVybHkgLSB5b3UgY291bGQgZW5kIHVwIHdpdGggYSBwYXNzaW5nIHRlc3Qg
d2hlbgotdGhlcmUncyBhY3R1YWxseSBhIGJ1Zy4KLQotVXNpbmcgYSBoZWFwIGNoZWNrZXIgaXMg
YSBnb29kIGlkZWEgYW5kIGNhbiBhbGxldmlhdGUgdGhlIGNvbmNlcm4sIGJ1dAotaXRzIGltcGxl
bWVudGF0aW9uIG1heSBub3QgYmUgMTAwJSByZWxpYWJsZS4gU28sIHNvbWV0aW1lcyB5b3UgZG8g
d2FudAotdG8gX2ZvcmNlXyBHb29nbGUgTW9jayB0byB2ZXJpZnkgYSBtb2NrIG9iamVjdCBiZWZv
cmUgaXQgaXMKLShob3BlZnVsbHkpIGRlc3RydWN0ZWQuIFlvdSBjYW4gZG8gdGhpcyB3aXRoCi1g
TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWA6Ci0KLWBgYAot
VEVTVChNeVNlcnZlclRlc3QsIFByb2Nlc3Nlc1JlcXVlc3QpIHsKLSAgdXNpbmcgOjp0ZXN0aW5n
OjpNb2NrOwotCi0gIE1vY2tGb28qIGNvbnN0IGZvbyA9IG5ldyBNb2NrRm9vOwotICBFWFBFQ1Rf
Q0FMTCgqZm9vLCAuLi4pLi4uOwotICAvLyAuLi4gb3RoZXIgZXhwZWN0YXRpb25zIC4uLgotCi0g
IC8vIHNlcnZlciBub3cgb3ducyBmb28uCi0gIE15U2VydmVyIHNlcnZlcihmb28pOwotICBzZXJ2
ZXIuUHJvY2Vzc1JlcXVlc3QoLi4uKTsKLQotICAvLyBJbiBjYXNlIHRoYXQgc2VydmVyJ3MgZGVz
dHJ1Y3RvciB3aWxsIGZvcmdldCB0byBkZWxldGUgZm9vLAotICAvLyB0aGlzIHdpbGwgdmVyaWZ5
IHRoZSBleHBlY3RhdGlvbnMgYW55d2F5LgotICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucyhmb28pOwotfSAgLy8gc2VydmVyIGlzIGRlc3Ryb3llZCB3aGVuIGl0IGdvZXMgb3V0IG9m
IHNjb3BlIGhlcmUuCi1gYGAKLQotKipUaXA6KiogVGhlIGBNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygpYCBmdW5jdGlvbiByZXR1cm5zIGEKLWBib29sYCB0byBpbmRpY2F0ZSB3aGV0
aGVyIHRoZSB2ZXJpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKGB0cnVlYCBmb3IKLXllcyksIHNv
IHlvdSBjYW4gd3JhcCB0aGF0IGZ1bmN0aW9uIGNhbGwgaW5zaWRlIGEgYEFTU0VSVF9UUlVFKClg
IGlmCi10aGVyZSBpcyBubyBwb2ludCBnb2luZyBmdXJ0aGVyIHdoZW4gdGhlIHZlcmlmaWNhdGlv
biBoYXMgZmFpbGVkLgotCi0jIyBVc2luZyBDaGVjayBQb2ludHMgIyMKLQotU29tZXRpbWVzIHlv
dSBtYXkgd2FudCB0byAicmVzZXQiIGEgbW9jayBvYmplY3QgYXQgdmFyaW91cyBjaGVjawotcG9p
bnRzIGluIHlvdXIgdGVzdDogYXQgZWFjaCBjaGVjayBwb2ludCwgeW91IHZlcmlmeSB0aGF0IGFs
bCBleGlzdGluZwotZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrIG9iamVjdCBoYXZlIGJlZW4gc2F0
aXNmaWVkLCBhbmQgdGhlbiB5b3Ugc2V0Ci1zb21lIG5ldyBleHBlY3RhdGlvbnMgb24gaXQgYXMg
aWYgaXQncyBuZXdseSBjcmVhdGVkLiBUaGlzIGFsbG93cyB5b3UKLXRvIHdvcmsgd2l0aCBhIG1v
Y2sgb2JqZWN0IGluICJwaGFzZXMiIHdob3NlIHNpemVzIGFyZSBlYWNoCi1tYW5hZ2VhYmxlLgot
Ci1PbmUgc3VjaCBzY2VuYXJpbyBpcyB0aGF0IGluIHlvdXIgdGVzdCdzIGBTZXRVcCgpYCBmdW5j
dGlvbiwgeW91IG1heQotd2FudCB0byBwdXQgdGhlIG9iamVjdCB5b3UgYXJlIHRlc3RpbmcgaW50
byBhIGNlcnRhaW4gc3RhdGUsIHdpdGggdGhlCi1oZWxwIGZyb20gYSBtb2NrIG9iamVjdC4gT25j
ZSBpbiB0aGUgZGVzaXJlZCBzdGF0ZSwgeW91IHdhbnQgdG8gY2xlYXIKLWFsbCBleHBlY3RhdGlv
bnMgb24gdGhlIG1vY2ssIHN1Y2ggdGhhdCBpbiB0aGUgYFRFU1RfRmAgYm9keSB5b3UgY2FuCi1z
ZXQgZnJlc2ggZXhwZWN0YXRpb25zIG9uIGl0LgotCi1BcyB5b3UgbWF5IGhhdmUgZmlndXJlZCBv
dXQsIHRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAKLWZ1bmN0aW9uIHdl
IHNhdyBpbiB0aGUgcHJldmlvdXMgcmVjaXBlIGNhbiBoZWxwIHlvdSBoZXJlLiBPciwgaWYgeW91
Ci1hcmUgdXNpbmcgYE9OX0NBTEwoKWAgdG8gc2V0IGRlZmF1bHQgYWN0aW9ucyBvbiB0aGUgbW9j
ayBvYmplY3QgYW5kCi13YW50IHRvIGNsZWFyIHRoZSBkZWZhdWx0IGFjdGlvbnMgYXMgd2VsbCwg
dXNlCi1gTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJm1vY2tfb2JqZWN0KWAgaW5zdGVhZC4gVGhpcyBm
dW5jdGlvbiBkb2VzIHdoYXQKLWBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9j
a19vYmplY3QpYCBkb2VzIGFuZCByZXR1cm5zIHRoZQotc2FtZSBgYm9vbGAsICoqcGx1cyoqIGl0
IGNsZWFycyB0aGUgYE9OX0NBTEwoKWAgc3RhdGVtZW50cyBvbgotYG1vY2tfb2JqZWN0YCB0b28u
Ci0KLUFub3RoZXIgdHJpY2sgeW91IGNhbiB1c2UgdG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qg
aXMgdG8gcHV0IHRoZQotZXhwZWN0YXRpb25zIGluIHNlcXVlbmNlcyBhbmQgaW5zZXJ0IGNhbGxz
IHRvIGEgZHVtbXkgImNoZWNrLXBvaW50IgotZnVuY3Rpb24gYXQgc3BlY2lmaWMgcGxhY2VzLiBU
aGVuIHlvdSBjYW4gdmVyaWZ5IHRoYXQgdGhlIG1vY2sKLWZ1bmN0aW9uIGNhbGxzIGRvIGhhcHBl
biBhdCB0aGUgcmlnaHQgdGltZS4gRm9yIGV4YW1wbGUsIGlmIHlvdSBhcmUKLWV4ZXJjaXNpbmcg
Y29kZToKLQotYGBgCi1Gb28oMSk7Ci1Gb28oMik7Ci1Gb28oMyk7Ci1gYGAKLQotYW5kIHdhbnQg
dG8gdmVyaWZ5IHRoYXQgYEZvbygxKWAgYW5kIGBGb28oMylgIGJvdGggaW52b2tlCi1gbW9jay5C
YXIoImEiKWAsIGJ1dCBgRm9vKDIpYCBkb2Vzbid0IGludm9rZSBhbnl0aGluZy4gWW91IGNhbiB3
cml0ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2tGdW5jdGlvbjsKLQotVEVTVChGb29U
ZXN0LCBJbnZva2VzQmFyQ29ycmVjdGx5KSB7Ci0gIE15TW9jayBtb2NrOwotICAvLyBDbGFzcyBN
b2NrRnVuY3Rpb248Rj4gaGFzIGV4YWN0bHkgb25lIG1vY2sgbWV0aG9kLiAgSXQgaXMgbmFtZWQK
LSAgLy8gQ2FsbCgpIGFuZCBoYXMgdHlwZSBGLgotICBNb2NrRnVuY3Rpb248dm9pZChzdHJpbmcg
Y2hlY2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotICB7Ci0gICAgSW5TZXF1ZW5jZSBzOwotCi0gICAg
RVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxs
KCIxIikpOwotICAgIEVYUEVDVF9DQUxMKGNoZWNrLCBDYWxsKCIyIikpOwotICAgIEVYUEVDVF9D
QUxMKG1vY2ssIEJhcigiYSIpKTsKLSAgfQotICBGb28oMSk7Ci0gIGNoZWNrLkNhbGwoIjEiKTsK
LSAgRm9vKDIpOwotICBjaGVjay5DYWxsKCIyIik7Ci0gIEZvbygzKTsKLX0KLWBgYAotCi1UaGUg
ZXhwZWN0YXRpb24gc3BlYyBzYXlzIHRoYXQgdGhlIGZpcnN0IGBCYXIoImEiKWAgbXVzdCBoYXBw
ZW4gYmVmb3JlCi1jaGVjayBwb2ludCAiMSIsIHRoZSBzZWNvbmQgYEJhcigiYSIpYCBtdXN0IGhh
cHBlbiBhZnRlciBjaGVjayBwb2ludCAiMiIsCi1hbmQgbm90aGluZyBzaG91bGQgaGFwcGVuIGJl
dHdlZW4gdGhlIHR3byBjaGVjayBwb2ludHMuIFRoZSBleHBsaWNpdAotY2hlY2sgcG9pbnRzIG1h
a2UgaXQgZWFzeSB0byB0ZWxsIHdoaWNoIGBCYXIoImEiKWAgaXMgY2FsbGVkIGJ5IHdoaWNoCi1j
YWxsIHRvIGBGb28oKWAuCi0KLSMjIE1vY2tpbmcgRGVzdHJ1Y3RvcnMgIyMKLQotU29tZXRpbWVz
IHlvdSB3YW50IHRvIG1ha2Ugc3VyZSBhIG1vY2sgb2JqZWN0IGlzIGRlc3RydWN0ZWQgYXQgdGhl
Ci1yaWdodCB0aW1lLCBlLmcuIGFmdGVyIGBiYXItPkEoKWAgaXMgY2FsbGVkIGJ1dCBiZWZvcmUg
YGJhci0+QigpYCBpcwotY2FsbGVkLiBXZSBhbHJlYWR5IGtub3cgdGhhdCB5b3UgY2FuIHNwZWNp
ZnkgY29uc3RyYWludHMgb24gdGhlIG9yZGVyCi1vZiBtb2NrIGZ1bmN0aW9uIGNhbGxzLCBzbyBh
bGwgd2UgbmVlZCB0byBkbyBpcyB0byBtb2NrIHRoZSBkZXN0cnVjdG9yCi1vZiB0aGUgbW9jayBm
dW5jdGlvbi4KLQotVGhpcyBzb3VuZHMgc2ltcGxlLCBleGNlcHQgZm9yIG9uZSBwcm9ibGVtOiBh
IGRlc3RydWN0b3IgaXMgYSBzcGVjaWFsCi1mdW5jdGlvbiB3aXRoIHNwZWNpYWwgc3ludGF4IGFu
ZCBzcGVjaWFsIHNlbWFudGljcywgYW5kIHRoZQotYE1PQ0tfTUVUSE9EMGAgbWFjcm8gZG9lc24n
dCB3b3JrIGZvciBpdDoKLQotYGBgCi0gIE1PQ0tfTUVUSE9EMCh+TW9ja0Zvbywgdm9pZCgpKTsg
IC8vIFdvbid0IGNvbXBpbGUhCi1gYGAKLQotVGhlIGdvb2QgbmV3cyBpcyB0aGF0IHlvdSBjYW4g
dXNlIGEgc2ltcGxlIHBhdHRlcm4gdG8gYWNoaWV2ZSB0aGUgc2FtZQotZWZmZWN0LiBGaXJzdCwg
YWRkIGEgbW9jayBmdW5jdGlvbiBgRGllKClgIHRvIHlvdXIgbW9jayBjbGFzcyBhbmQgY2FsbAot
aXQgaW4gdGhlIGRlc3RydWN0b3IsIGxpa2UgdGhpczoKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDog
cHVibGljIEZvbyB7Ci0gIC4uLgotICAvLyBBZGQgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgdG8g
dGhlIG1vY2sgY2xhc3MuCi0gIE1PQ0tfTUVUSE9EMChEaWUsIHZvaWQoKSk7Ci0gIHZpcnR1YWwg
fk1vY2tGb28oKSB7IERpZSgpOyB9Ci19OwotYGBgCi0KLShJZiB0aGUgbmFtZSBgRGllKClgIGNs
YXNoZXMgd2l0aCBhbiBleGlzdGluZyBzeW1ib2wsIGNob29zZSBhbm90aGVyCi1uYW1lLikgTm93
LCB3ZSBoYXZlIHRyYW5zbGF0ZWQgdGhlIHByb2JsZW0gb2YgdGVzdGluZyB3aGVuIGEgYE1vY2tG
b29gCi1vYmplY3QgZGllcyB0byB0ZXN0aW5nIHdoZW4gaXRzIGBEaWUoKWAgbWV0aG9kIGlzIGNh
bGxlZDoKLQotYGBgCi0gIE1vY2tGb28qIGZvbyA9IG5ldyBNb2NrRm9vOwotICBNb2NrQmFyKiBi
YXIgPSBuZXcgTW9ja0JhcjsKLSAgLi4uCi0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0KLSAgICAv
LyBFeHBlY3RzICpmb28gdG8gZGllIGFmdGVyIGJhci0+QSgpIGFuZCBiZWZvcmUgYmFyLT5CKCku
Ci0gICAgRVhQRUNUX0NBTEwoKmJhciwgQSgpKTsKLSAgICBFWFBFQ1RfQ0FMTCgqZm9vLCBEaWUo
KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmJhciwgQigpKTsKLSAgfQotYGBgCi0KLUFuZCB0aGF0J3Mg
dGhhdC4KLQotIyMgVXNpbmcgR29vZ2xlIE1vY2sgYW5kIFRocmVhZHMgIyMKLQotKipJTVBPUlRB
TlQgTk9URToqKiBXaGF0IHdlIGRlc2NyaWJlIGluIHRoaXMgcmVjaXBlIGlzICoqTk9UKiogdHJ1
ZSB5ZXQsCi1hcyBHb29nbGUgTW9jayBpcyBub3QgY3VycmVudGx5IHRocmVhZC1zYWZlLiAgSG93
ZXZlciwgYWxsIHdlIG5lZWQgdG8KLW1ha2UgaXQgdGhyZWFkLXNhZmUgaXMgdG8gaW1wbGVtZW50
IHNvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4KLWA8Z3Rlc3QvaW50ZXJuYWwvZ3Rl
c3QtcG9ydC5oPmAgLSBhbmQgdGhlbiB0aGUgaW5mb3JtYXRpb24gYmVsb3cgd2lsbAotYmVjb21l
IHRydWUuCi0KLUluIGEgKip1bml0KiogdGVzdCwgaXQncyBiZXN0IGlmIHlvdSBjb3VsZCBpc29s
YXRlIGFuZCB0ZXN0IGEgcGllY2Ugb2YKLWNvZGUgaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4
dC4gVGhhdCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGFuZAotZGVhZCBsb2NrcywgYW5kIG1ha2Vz
IGRlYnVnZ2luZyB5b3VyIHRlc3QgbXVjaCBlYXNpZXIuCi0KLVlldCBtYW55IHByb2dyYW1zIGFy
ZSBtdWx0aS10aHJlYWRlZCwgYW5kIHNvbWV0aW1lcyB0byB0ZXN0IHNvbWV0aGluZwotd2UgbmVl
ZCB0byBwb3VuZCBvbiBpdCBmcm9tIG1vcmUgdGhhbiBvbmUgdGhyZWFkLiBHb29nbGUgTW9jayB3
b3JrcwotZm9yIHRoaXMgcHVycG9zZSB0b28uCi0KLVJlbWVtYmVyIHRoZSBzdGVwcyBmb3IgdXNp
bmcgYSBtb2NrOgotCi0gIDEuIENyZWF0ZSBhIG1vY2sgb2JqZWN0IGBmb29gLgotICAxLiBTZXQg
aXRzIGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIHVzaW5nIGBPTl9DQUxMKClgIGFu
ZCBgRVhQRUNUX0NBTEwoKWAuCi0gIDEuIFRoZSBjb2RlIHVuZGVyIHRlc3QgY2FsbHMgbWV0aG9k
cyBvZiBgZm9vYC4KLSAgMS4gT3B0aW9uYWxseSwgdmVyaWZ5IGFuZCByZXNldCB0aGUgbW9jay4K
LSAgMS4gRGVzdHJveSB0aGUgbW9jayB5b3Vyc2VsZiwgb3IgbGV0IHRoZSBjb2RlIHVuZGVyIHRl
c3QgZGVzdHJveSBpdC4gVGhlIGRlc3RydWN0b3Igd2lsbCBhdXRvbWF0aWNhbGx5IHZlcmlmeSBp
dC4KLQotSWYgeW91IGZvbGxvdyB0aGUgZm9sbG93aW5nIHNpbXBsZSBydWxlcywgeW91ciBtb2Nr
cyBhbmQgdGhyZWFkcyBjYW4KLWxpdmUgaGFwcGlseSB0b2dldGVyOgotCi0gICogRXhlY3V0ZSB5
b3VyIF90ZXN0IGNvZGVfIChhcyBvcHBvc2VkIHRvIHRoZSBjb2RlIGJlaW5nIHRlc3RlZCkgaW4g
X29uZV8gdGhyZWFkLiBUaGlzIG1ha2VzIHlvdXIgdGVzdCBlYXN5IHRvIGZvbGxvdy4KLSAgKiBP
YnZpb3VzbHksIHlvdSBjYW4gZG8gc3RlcCAjMSB3aXRob3V0IGxvY2tpbmcuCi0gICogV2hlbiBk
b2luZyBzdGVwICMyIGFuZCAjNSwgbWFrZSBzdXJlIG5vIG90aGVyIHRocmVhZCBpcyBhY2Nlc3Np
bmcgYGZvb2AuIE9idmlvdXMgdG9vLCBodWg/Ci0gICogIzMgYW5kICM0IGNhbiBiZSBkb25lIGVp
dGhlciBpbiBvbmUgdGhyZWFkIG9yIGluIG11bHRpcGxlIHRocmVhZHMgLSBhbnl3YXkgeW91IHdh
bnQuIEdvb2dsZSBNb2NrIHRha2VzIGNhcmUgb2YgdGhlIGxvY2tpbmcsIHNvIHlvdSBkb24ndCBo
YXZlIHRvIGRvIGFueSAtIHVubGVzcyByZXF1aXJlZCBieSB5b3VyIHRlc3QgbG9naWMuCi0KLUlm
IHlvdSB2aW9sYXRlIHRoZSBydWxlcyAoZm9yIGV4YW1wbGUsIGlmIHlvdSBzZXQgZXhwZWN0YXRp
b25zIG9uIGEKLW1vY2sgd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMgY2FsbGluZyBpdHMgbWV0aG9k
cyksIHlvdSBnZXQgdW5kZWZpbmVkCi1iZWhhdmlvci4gVGhhdCdzIG5vdCBmdW4sIHNvIGRvbid0
IGRvIGl0LgotCi1Hb29nbGUgTW9jayBndWFyYW50ZWVzIHRoYXQgdGhlIGFjdGlvbiBmb3IgYSBt
b2NrIGZ1bmN0aW9uIGlzIGRvbmUgaW4KLXRoZSBzYW1lIHRocmVhZCB0aGF0IGNhbGxlZCB0aGUg
bW9jayBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICBFWFBFQ1RfQ0FMTChtb2Nr
LCBGb28oMSkpCi0gICAgICAuV2lsbE9uY2UoYWN0aW9uMSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ss
IEZvbygyKSkKLSAgICAgIC5XaWxsT25jZShhY3Rpb24yKTsKLWBgYAotCi1pZiBgRm9vKDEpYCBp
cyBjYWxsZWQgaW4gdGhyZWFkIDEgYW5kIGBGb28oMilgIGlzIGNhbGxlZCBpbiB0aHJlYWQgMiwK
LUdvb2dsZSBNb2NrIHdpbGwgZXhlY3V0ZSBgYWN0aW9uMWAgaW4gdGhyZWFkIDEgYW5kIGBhY3Rp
b24yYCBpbiB0aHJlYWQKLTIuCi0KLUdvb2dsZSBNb2NrIGRvZXMgX25vdF8gaW1wb3NlIGEgc2Vx
dWVuY2Ugb24gYWN0aW9ucyBwZXJmb3JtZWQgaW4KLWRpZmZlcmVudCB0aHJlYWRzIChkb2luZyBz
byBtYXkgY3JlYXRlIGRlYWRsb2NrcyBhcyB0aGUgYWN0aW9ucyBtYXkKLW5lZWQgdG8gY29vcGVy
YXRlKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBleGVjdXRpb24gb2YgYGFjdGlvbjFgIGFuZAotYGFj
dGlvbjJgIGluIHRoZSBhYm92ZSBleGFtcGxlIF9tYXlfIGludGVybGVhdmUuIElmIHRoaXMgaXMg
YSBwcm9ibGVtLAoteW91IHNob3VsZCBhZGQgcHJvcGVyIHN5bmNocm9uaXphdGlvbiBsb2dpYyB0
byBgYWN0aW9uMWAgYW5kIGBhY3Rpb24yYAotdG8gbWFrZSB0aGUgdGVzdCB0aHJlYWQtc2FmZS4K
LQotCi1BbHNvLCByZW1lbWJlciB0aGF0IGBEZWZhdWx0VmFsdWU8VD5gIGlzIGEgZ2xvYmFsIHJl
c291cmNlIHRoYXQKLXBvdGVudGlhbGx5IGFmZmVjdHMgX2FsbF8gbGl2aW5nIG1vY2sgb2JqZWN0
cyBpbiB5b3VyCi1wcm9ncmFtLiBOYXR1cmFsbHksIHlvdSB3b24ndCB3YW50IHRvIG1lc3Mgd2l0
aCBpdCBmcm9tIG11bHRpcGxlCi10aHJlYWRzIG9yIHdoZW4gdGhlcmUgc3RpbGwgYXJlIG1vY2tz
IGluIGFjdGlvbi4KLQotIyMgQ29udHJvbGxpbmcgSG93IE11Y2ggSW5mb3JtYXRpb24gR29vZ2xl
IE1vY2sgUHJpbnRzICMjCi0KLVdoZW4gR29vZ2xlIE1vY2sgc2VlcyBzb21ldGhpbmcgdGhhdCBo
YXMgdGhlIHBvdGVudGlhbCBvZiBiZWluZyBhbgotZXJyb3IgKGUuZy4gYSBtb2NrIGZ1bmN0aW9u
IHdpdGggbm8gZXhwZWN0YXRpb24gaXMgY2FsbGVkLCBhLmsuYS4gYW4KLXVuaW50ZXJlc3Rpbmcg
Y2FsbCwgd2hpY2ggaXMgYWxsb3dlZCBidXQgcGVyaGFwcyB5b3UgZm9yZ290IHRvCi1leHBsaWNp
dGx5IGJhbiB0aGUgY2FsbCksIGl0IHByaW50cyBzb21lIHdhcm5pbmcgbWVzc2FnZXMsIGluY2x1
ZGluZwotdGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZSByZXR1cm4gdmFsdWUu
IEhvcGVmdWxseSB0aGlzCi13aWxsIHJlbWluZCB5b3UgdG8gdGFrZSBhIGxvb2sgYW5kIHNlZSBp
ZiB0aGVyZSBpcyBpbmRlZWQgYSBwcm9ibGVtLgotCi1Tb21ldGltZXMgeW91IGFyZSBjb25maWRl
bnQgdGhhdCB5b3VyIHRlc3RzIGFyZSBjb3JyZWN0IGFuZCBtYXkgbm90Ci1hcHByZWNpYXRlIHN1
Y2ggZnJpZW5kbHkgbWVzc2FnZXMuIFNvbWUgb3RoZXIgdGltZXMsIHlvdSBhcmUgZGVidWdnaW5n
Ci15b3VyIHRlc3RzIG9yIGxlYXJuaW5nIGFib3V0IHRoZSBiZWhhdmlvciBvZiB0aGUgY29kZSB5
b3UgYXJlIHRlc3RpbmcsCi1hbmQgd2lzaCB5b3UgY291bGQgb2JzZXJ2ZSBldmVyeSBtb2NrIGNh
bGwgdGhhdCBoYXBwZW5zIChpbmNsdWRpbmcKLWFyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHJldHVy
biB2YWx1ZSkuIENsZWFybHksIG9uZSBzaXplIGRvZXNuJ3QgZml0Ci1hbGwuCi0KLVlvdSBjYW4g
Y29udHJvbCBob3cgbXVjaCBHb29nbGUgTW9jayB0ZWxscyB5b3UgdXNpbmcgdGhlCi1gLS1nbW9j
a192ZXJib3NlPUxFVkVMYCBjb21tYW5kLWxpbmUgZmxhZywgd2hlcmUgYExFVkVMYCBpcyBhIHN0
cmluZwotd2l0aCB0aHJlZSBwb3NzaWJsZSB2YWx1ZXM6Ci0KLSAgKiBgaW5mb2A6IEdvb2dsZSBN
b2NrIHdpbGwgcHJpbnQgYWxsIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMsIHdhcm5pbmdzLCBhbmQg
ZXJyb3JzIChtb3N0IHZlcmJvc2UpLiBBdCB0aGlzIHNldHRpbmcsIEdvb2dsZSBNb2NrIHdpbGwg
YWxzbyBsb2cgYW55IGNhbGxzIHRvIHRoZSBgT05fQ0FMTC9FWFBFQ1RfQ0FMTGAgbWFjcm9zLgot
ICAqIGB3YXJuaW5nYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBib3RoIHdhcm5pbmdzIGFuZCBl
cnJvcnMgKGxlc3MgdmVyYm9zZSkuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCi0gICogYGVycm9yYDog
R29vZ2xlIE1vY2sgd2lsbCBwcmludCBlcnJvcnMgb25seSAobGVhc3QgdmVyYm9zZSkuCi0KLUFs
dGVybmF0aXZlbHksIHlvdSBjYW4gYWRqdXN0IHRoZSB2YWx1ZSBvZiB0aGF0IGZsYWcgZnJvbSB3
aXRoaW4geW91cgotdGVzdHMgbGlrZSBzbzoKLQotYGBgCi0gIDo6dGVzdGluZzo6RkxBR1NfZ21v
Y2tfdmVyYm9zZSA9ICJlcnJvciI7Ci1gYGAKLQotTm93LCBqdWRpY2lvdXNseSB1c2UgdGhlIHJp
Z2h0IGZsYWcgdG8gZW5hYmxlIEdvb2dsZSBNb2NrIHNlcnZlIHlvdSBiZXR0ZXIhCi0KLSMjIFJ1
bm5pbmcgVGVzdHMgaW4gRW1hY3MgIyMKLQotSWYgeW91IGJ1aWxkIGFuZCBydW4geW91ciB0ZXN0
cyBpbiBFbWFjcywgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBvZgotR29vZ2xlIE1vY2sgYW5k
IFtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKQotZXJy
b3JzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxFbnRlcj5gIG9uIG9uZSBvZiB0
aGVtIGFuZAoteW91J2xsIGJlIHRha2VuIHRvIHRoZSBvZmZlbmRpbmcgbGluZS4gT3IsIHlvdSBj
YW4ganVzdCB0eXBlIGBDLXggYGAKLXRvIGp1bXAgdG8gdGhlIG5leHQgZXJyb3IuCi0KLVRvIG1h
a2UgaXQgZXZlbiBlYXNpZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8geW91
cgotYH4vLmVtYWNzYCBmaWxlOgotCi1gYGAKLShnbG9iYWwtc2V0LWtleSAiXE0tbSIgICAnY29t
cGlsZSkgIDsgbSBpcyBmb3IgbWFrZQotKGdsb2JhbC1zZXQta2V5IFtNLWRvd25dICduZXh0LWVy
cm9yKQotKGdsb2JhbC1zZXQta2V5IFtNLXVwXSAgICcobGFtYmRhICgpIChpbnRlcmFjdGl2ZSkg
KG5leHQtZXJyb3IgLTEpKSkKLWBgYAotCi1UaGVuIHlvdSBjYW4gdHlwZSBgTS1tYCB0byBzdGFy
dCBhIGJ1aWxkLCBvciBgTS11cGAvYE0tZG93bmAgdG8gbW92ZQotYmFjayBhbmQgZm9ydGggYmV0
d2VlbiBlcnJvcnMuCi0KLSMjIEZ1c2luZyBHb29nbGUgTW9jayBTb3VyY2UgRmlsZXMgIyMKLQot
R29vZ2xlIE1vY2sncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBkb3plbnMgb2YgZmlsZXMg
KGV4Y2x1ZGluZwotaXRzIG93biB0ZXN0cykuICBTb21ldGltZXMgeW91IG1heSB3YW50IHRoZW0g
dG8gYmUgcGFja2FnZWQgdXAgaW4KLWZld2VyIGZpbGVzIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3Ug
Y2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcg
dGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAotUHl0aG9uIHNjcmlw
dCBgZnVzZV9nbW9ja19maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5Ci0oc3Rh
cnRpbmcgd2l0aCByZWxlYXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQg
b3IgYWJvdmUKLWluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3QgZ28gdG8gdGhhdCBkaXJl
Y3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9nbW9ja19maWxlcy5weSBPVVRQVVRfRElS
Ci1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVp
bmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAsIGBnbW9jay9nbW9jay5oYCwg
YW5kIGBnbW9jay1ndGVzdC1hbGwuY2NgIGluIGl0LgotVGhlc2UgdGhyZWUgZmlsZXMgY29udGFp
biBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jayAoYW5kCi1Hb29nbGUgVGVz
dCkuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZSB5b3Ugd2FudCBhbmQgeW91IGFyZSByZWFk
eQotdG8gd3JpdGUgdGVzdHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBjYW4gdXNlIHRoZQotW3NjcnB0
cy90ZXN0L01ha2VmaWxlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9zb3Vy
Y2UvYnJvd3NlL3RydW5rL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkgZmlsZSBhcyBhbiBleGFtcGxl
IG9uIGhvdyB0byBjb21waWxlIHlvdXIgdGVzdHMKLWFnYWluc3QgdGhlbS4KLQotIyBFeHRlbmRp
bmcgR29vZ2xlIE1vY2sgIwotCi0jIyBXcml0aW5nIE5ldyBNYXRjaGVycyBRdWlja2x5ICMjCi0K
LVRoZSBgTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGN1
c3RvbSBtYXRjaGVycwotZWFzaWx5LiAgVGhlIHN5bnRheDoKLQotYGBgCi1NQVRDSEVSKG5hbWUs
ICJkZXNjcmlwdGlvbiBzdHJpbmciKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi13aWxsIGRlZmlu
ZSBhIG1hdGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZQotc3RhdGVt
ZW50cywgd2hpY2ggbXVzdCByZXR1cm4gYSBgYm9vbGAgdG8gaW5kaWNhdGUgaWYgdGhlIG1hdGNo
Ci1zdWNjZWVkcy4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbiByZWZlciB0byB0aGUg
dmFsdWUgYmVpbmcKLW1hdGNoZWQgYnkgYGFyZ2AsIGFuZCByZWZlciB0byBpdHMgdHlwZSBieSBg
YXJnX3R5cGVgLgotCi1UaGUgZGVzY3JpcHRpb24gc3RyaW5nIGRvY3VtZW50cyB3aGF0IHRoZSBt
YXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkIHRvCi1nZW5lcmF0ZSB0aGUgZmFpbHVyZSBtZXNzYWdl
IHdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgU2luY2UgYQotYE1BVENIRVIoKWAgaXMgdXN1YWxseSBk
ZWZpbmVkIGluIGEgaGVhZGVyIGZpbGUgc2hhcmVkIGJ5IG11bHRpcGxlIEMrKwotc291cmNlIGZp
bGVzLCB3ZSByZXF1aXJlIHRoZSBkZXNjcmlwdGlvbiB0byBiZSBhIEMtc3RyaW5nIF9saXRlcmFs
XyB0bwotYXZvaWQgcG9zc2libGUgc2lkZSBlZmZlY3RzLiAgSXQgY2FuIGJlIGVtcHR5IChgIiJg
KSwgaW4gd2hpY2ggY2FzZQotR29vZ2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdv
cmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgYXMgdGhlCi1kZXNjcmlwdGlvbi4KLQotRm9yIGV4YW1w
bGU6Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUgNykg
PT0gMDsgfQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLSAgLy8gRXhwZWN0cyBtb2Nr
X2Zvby5CYXIobikgdG8gYmUgY2FsbGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCi0gIEVY
UEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNEaXZpc2libGVCeTcoKSkpOwotYGBgCi1vciwKLWBg
YAotICAvLyBWZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBzb21lX2V4cHJlc3Npb24gaXMgZGl2
aXNpYmxlIGJ5IDcuCi0gIEVYUEVDVF9USEFUKHNvbWVfZXhwcmVzc2lvbiwgSXNEaXZpc2libGVC
eTcoKSk7Ci1gYGAKLUlmIHRoZSBhYm92ZSBhc3NlcnRpb24gZmFpbHMsIGl0IHdpbGwgcHJpbnQg
c29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgotICBFeHBl
Y3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1YWw6IDI3Ci1gYGAKLXdoZXJlIHRoZSBk
ZXNjcmlwdGlvbiBgImlzIGRpdmlzaWJsZSBieSA3ImAgaXMgYXV0b21hdGljYWxseSBjYWxjdWxh
dGVkIGZyb20gdGhlCi1tYXRjaGVyIG5hbWUgYElzRGl2aXNpYmxlQnk3YC4KLQotT3B0aW9uYWxs
eSwgeW91IGNhbiBzdHJlYW0gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBhIGhpZGRlbiBhcmd1
bWVudAotbmFtZWQgYHJlc3VsdF9saXN0ZW5lcmAgdG8gZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0
LiBGb3IgZXhhbXBsZSwgYQotYmV0dGVyIGRlZmluaXRpb24gb2YgYElzRGl2aXNpYmxlQnk3YCBp
czoKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsKLSAgaWYgKChhcmcgJSA3KSA9
PSAwKQotICAgIHJldHVybiB0cnVlOwotCi0gICpyZXN1bHRfbGlzdGVuZXIgPDwgInRoZSByZW1h
aW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7Ci0gIHJldHVybiBmYWxzZTsKLX0KLWBgYAotCi1XaXRo
IHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFib3ZlIGFzc2VydGlvbiB3aWxsIGdpdmUgYSBiZXR0ZXIg
bWVzc2FnZToKLWBgYAotICBWYWx1ZSBvZjogc29tZV9leHByZXNzaW9uCi0gIEV4cGVjdGVkOiBp
cyBkaXZpc2libGUgYnkgNwotICAgIEFjdHVhbDogMjcgKHRoZSByZW1haW5kZXIgaXMgNikKLWBg
YAotCi1Zb3Ugc2hvdWxkIGxldCBgTWF0Y2hBbmRFeHBsYWluKClgIHByaW50IF9hbnkgYWRkaXRp
b25hbCBpbmZvcm1hdGlvbl8KLXRoYXQgY2FuIGhlbHAgYSB1c2VyIHVuZGVyc3RhbmQgdGhlIG1h
dGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0IHNob3VsZAotZXhwbGFpbiB3aHkgdGhlIG1hdGNoIHN1
Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNjZXNzICh1bmxlc3MgaXQncwotb2J2aW91cykgLSB0aGlz
IGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgaW5zaWRlCi1gTm90KClgLiBUaGVy
ZSBpcyBubyBuZWVkIHRvIHByaW50IHRoZSBhcmd1bWVudCB2YWx1ZSBpdHNlbGYsIGFzCi1Hb29n
bGUgTW9jayBhbHJlYWR5IHByaW50cyBpdCBmb3IgeW91LgotCi0qKk5vdGVzOioqCi0KLSAgMS4g
VGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgKGBhcmdfdHlwZWApIGlzIGRldGVy
bWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0aGUgbWF0Y2hlciBhbmQgaXMg
c3VwcGxpZWQgdG8geW91IGJ5IHRoZSBjb21waWxlciwgc28geW91IGRvbid0IG5lZWQgdG8gd29y
cnkgYWJvdXQgZGVjbGFyaW5nIGl0IChub3IgY2FuIHlvdSkuICBUaGlzIGFsbG93cyB0aGUgbWF0
Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBgSXNEaXZpc2libGVCeTcoKWAg
Y2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgd2hlcmUgdGhlIHZhbHVlIG9mIGAoYXJnICUg
NykgPT0gMGAgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgYGJvb2xgLiAgSW4gdGhl
IGBCYXIoSXNEaXZpc2libGVCeTcoKSlgIGV4YW1wbGUgYWJvdmUsIGlmIG1ldGhvZCBgQmFyKClg
IHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYGludGA7IGlmIGl0IHRha2VzIGFu
IGB1bnNpZ25lZCBsb25nYCwgYGFyZ190eXBlYCB3aWxsIGJlIGB1bnNpZ25lZCBsb25nYDsgYW5k
IHNvIG9uLgotICAxLiBHb29nbGUgTW9jayBkb2Vzbid0IGd1YXJhbnRlZSB3aGVuIG9yIGhvdyBt
YW55IHRpbWVzIGEgbWF0Y2hlciB3aWxsIGJlIGludm9rZWQuIFRoZXJlZm9yZSB0aGUgbWF0Y2hl
ciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGkuZS4gaXQgY2Fubm90IGhhdmUg
YW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5vdCBkZXBlbmQgb24gYW55dGhp
bmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIgcGFy
YW1ldGVycykuIFRoaXMgcmVxdWlyZW1lbnQgbXVzdCBiZSBzYXRpc2ZpZWQgbm8gbWF0dGVyIGhv
dyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVyIChlLmcuIHVzaW5nIG9uZSBvZiB0aGUgbWV0aG9kcyBk
ZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyByZWNpcGVzKS4gSW4gcGFydGljdWxhciwgYSBtYXRj
aGVyIGNhbiBuZXZlciBjYWxsIGEgbW9jayBmdW5jdGlvbiwgYXMgdGhhdCB3aWxsIGFmZmVjdCB0
aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2JqZWN0IGFuZCBHb29nbGUgTW9jay4KLQotIyMgV3JpdGlu
ZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRjaGVycyBRdWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3Un
bGwgd2FudCB0byBkZWZpbmUgYSBtYXRjaGVyIHRoYXQgaGFzIHBhcmFtZXRlcnMuICBGb3IgdGhh
dCB5b3UKLWNhbiB1c2UgdGhlIG1hY3JvOgotYGBgCi1NQVRDSEVSX1AobmFtZSwgcGFyYW1fbmFt
ZSwgImRlc2NyaXB0aW9uIHN0cmluZyIpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLUZvciBleGFt
cGxlOgotYGBgCi1NQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUsICIiKSB7IHJldHVy
biBhYnMoYXJnKSA9PSB2YWx1ZTsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0ZToKLWBg
YAotICBFWFBFQ1RfVEhBVChCbGFoKCJhIiksIEhhc0Fic29sdXRlVmFsdWUobikpOwotYGBgCi13
aGljaCBtYXkgbGVhZCB0byB0aGlzIG1lc3NhZ2UgKGFzc3VtaW5nIGBuYCBpcyAxMCk6Ci1gYGAK
LSAgVmFsdWUgb2Y6IEJsYWgoImEiKQotICBFeHBlY3RlZDogaGFzIGFic29sdXRlIHZhbHVlIDEw
Ci0gICAgQWN0dWFsOiAtOQotYGBgCi0KLU5vdGUgdGhhdCBib3RoIHRoZSBtYXRjaGVyIGRlc2Ny
aXB0aW9uIGFuZCBpdHMgcGFyYW1ldGVyIGFyZQotcHJpbnRlZCwgbWFraW5nIHRoZSBtZXNzYWdl
IGh1bWFuLWZyaWVuZGx5LgotCi1JbiB0aGUgbWF0Y2hlciBkZWZpbml0aW9uIGJvZHksIHlvdSBj
YW4gd3JpdGUgYGZvb190eXBlYCB0bwotcmVmZXJlbmNlIHRoZSB0eXBlIG9mIGEgcGFyYW1ldGVy
IG5hbWVkIGBmb29gLiAgRm9yIGV4YW1wbGUsIGluIHRoZQotYm9keSBvZiBgTUFUQ0hFUl9QKEhh
c0Fic29sdXRlVmFsdWUsIHZhbHVlKWAgYWJvdmUsIHlvdSBjYW4gd3JpdGUKLWB2YWx1ZV90eXBl
YCB0byByZWZlciB0byB0aGUgdHlwZSBvZiBgdmFsdWVgLgotCi1Hb29nbGUgTW9jayBhbHNvIHBy
b3ZpZGVzIGBNQVRDSEVSX1AyYCwgYE1BVENIRVJfUDNgLCAuLi4sIHVwIHRvCi1gTUFUQ0hFUl9Q
MTBgIHRvIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVyIG1hdGNoZXJzOgotYGBgCi1NQVRDSEVSX1Br
KG5hbWUsIHBhcmFtXzEsIC4uLiwgcGFyYW1faywgImRlc2NyaXB0aW9uIHN0cmluZyIpIHsgc3Rh
dGVtZW50czsgfQotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhlIGN1c3RvbSBkZXNjcmlwdGlv
biBzdHJpbmcgaXMgZm9yIGEgcGFydGljdWxhcgotKippbnN0YW5jZSoqIG9mIHRoZSBtYXRjaGVy
LCB3aGVyZSB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYm91bmQgdG8KLWFjdHVhbCB2YWx1ZXMu
ICBUaGVyZWZvcmUgdXN1YWxseSB5b3UnbGwgd2FudCB0aGUgcGFyYW1ldGVyIHZhbHVlcyB0bwot
YmUgcGFydCBvZiB0aGUgZGVzY3JpcHRpb24uICBHb29nbGUgTW9jayBsZXRzIHlvdSBkbyB0aGF0
IHVzaW5nCi1QeXRob24tc3R5bGUgaW50ZXJwb2xhdGlvbnMuICBUaGUgZm9sbG93aW5nIHN5bnRh
eGVzIGFyZSBzdXBwb3J0ZWQKLWN1cnJlbnRseToKLQotfCBgJSVgIHwgYSBzaW5nbGUgYCVgIGNo
YXJhY3RlciB8Ci18Oi0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYCUoKilzYCB8
IGFsbCBwYXJhbWV0ZXJzIG9mIHRoZSBtYXRjaGVyIHByaW50ZWQgYXMgYSB0dXBsZSB8Ci18IGAl
KGZvbylzYCB8IHZhbHVlIG9mIHRoZSBtYXRjaGVyIHBhcmFtZXRlciBuYW1lZCBgZm9vYCB8Ci0K
LUZvciBleGFtcGxlLAotYGBgCi0gIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwg
ImlzIGluIHJhbmdlIFslKGxvdylzLCAlKGhpKXNdIikgewotICAgIHJldHVybiBsb3cgPD0gYXJn
ICYmIGFyZyA8PSBoaTsKLSAgfQotICAuLi4KLSAgRVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5n
ZSg0LCA2KSk7Ci1gYGAKLXdvdWxkIGdlbmVyYXRlIGEgZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRo
ZSBtZXNzYWdlOgotYGBgCi0gIEV4cGVjdGVkOiBpcyBpbiByYW5nZSBbNCwgNl0KLWBgYAotCi1J
ZiB5b3Ugc3BlY2lmeSBgIiJgIGFzIHRoZSBkZXNjcmlwdGlvbiwgdGhlIGZhaWx1cmUgbWVzc2Fn
ZSB3aWxsCi1jb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1l
IGZvbGxvd2VkIGJ5IHRoZQotcGFyYW1ldGVyIHZhbHVlcyBwcmludGVkIGFzIGEgdHVwbGUuICBG
b3IgZXhhbXBsZSwKLWBgYAotICBNQVRDSEVSX1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksICIi
KSB7IC4uLiB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsK
LWBgYAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQgY29udGFpbnMgdGhlIHRleHQ6Ci1g
YGAKLSAgRXhwZWN0ZWQ6IGluIGNsb3NlZCByYW5nZSAoNCwgNikKLWBgYAotCi1Gb3IgdGhlIHB1
cnBvc2Ugb2YgdHlwaW5nLCB5b3UgY2FuIHZpZXcKLWBgYAotTUFUQ0hFUl9QayhGb28sIHAxLCAu
Li4sIHBrLCAiZGVzY3JpcHRpb24gc3RyaW5nIikgeyAuLi4gfQotYGBgCi1hcyBzaG9ydGhhbmQg
Zm9yCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVuYW1lIHBrX3R5
cGU+Ci1Gb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPgotRm9vKHAxX3R5cGUgcDEs
IC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotYGBgCi0KLVdoZW4geW91IHdyaXRlIGBGb28odjEs
IC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKLXRoZSBwYXJhbWV0
ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4gIElmIHlvdSBhcmUgbm90IGhhcHB5IHdp
dGgKLXRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5b3UgY2FuIHNwZWNpZnkgdGhl
IHR5cGVzIGJ5Ci1leHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhlIHRlbXBsYXRlLCBhcyBpbiBg
Rm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCi1BcyBzYWlkIGVhcmxpZXIsIHlvdSBkb24ndCBn
ZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLWBhcmdfdHlwZWAgYXMgdGhhdCdzIGRldGVybWlu
ZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKLWlzIHVzZWQuCi0KLVlvdSBj
YW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBgRm9vKHAxLCAuLi4sIHBrKWAgdG8g
YQotdmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtfdHlwZT5g
LiAgVGhpcyBjYW4gYmUKLXVzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRjaGVycy4gIE1hdGNoZXJz
IHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgotb3IgaGF2ZSBvbmx5IG9uZSBwYXJhbWV0ZXIg
aGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2lnbiBgRm9vKClgCi10byBhIGBGb29NYXRj
aGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBgRm9vKHApYCB0byBhCi1gRm9vTWF0Y2hl
clA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCi0KLVdoaWxlIHlvdSBjYW4gaW5zdGFudGlhdGUg
YSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzLAotcGFzc2luZyB0aGUgcGFy
YW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMgeW91ciBjb2RlIG1vcmUKLXJlYWRhYmxl
LiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3MgYSBwYXJhbWV0ZXIgYnkKLXJl
ZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlIGdlbmVyYXRlZCBi
eSB0aGUKLW1hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNlZCBv
YmplY3QgYnV0IG5vdCBpdHMKLWFkZHJlc3MuCi0KLVlvdSBjYW4gb3ZlcmxvYWQgbWF0Y2hlcnMg
d2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgotYGBgCi1NQVRDSEVSX1AoQmxh
aCwgYSwgImRlc2NyaXB0aW9uIHN0cmluZyAxIikgeyAuLi4gfQotTUFUQ0hFUl9QMihCbGFoLCBh
LCBiLCAiZGVzY3JpcHRpb24gc3RyaW5nIDIiKSB7IC4uLiB9Ci1gYGAKLQotV2hpbGUgaXQncyB0
ZW1wdGluZyB0byBhbHdheXMgdXNlIHRoZSBgTUFUQ0hFUipgIG1hY3JvcyB3aGVuIGRlZmluaW5n
Ci1hIG5ldyBtYXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50aW5nCi1g
TWF0Y2hlckludGVyZmFjZWAgb3IgdXNpbmcgYE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKWAgaW5z
dGVhZCAoc2VlCi10aGUgcmVjaXBlcyB0aGF0IGZvbGxvdyksIGVzcGVjaWFsbHkgaWYgeW91IG5l
ZWQgdG8gdXNlIHRoZSBtYXRjaGVyIGEKLWxvdC4gIFdoaWxlIHRoZXNlIGFwcHJvYWNoZXMgcmVx
dWlyZSBtb3JlIHdvcmssIHRoZXkgZ2l2ZSB5b3UgbW9yZQotY29udHJvbCBvbiB0aGUgdHlwZXMg
b2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVyCi1wYXJhbWV0ZXJzLCB3
aGljaCBpbiBnZW5lcmFsIGxlYWRzIHRvIGJldHRlciBjb21waWxlciBlcnJvciBtZXNzYWdlcwot
dGhhdCBwYXkgb2ZmIGluIHRoZSBsb25nIHJ1bi4gIFRoZXkgYWxzbyBhbGxvdyBvdmVybG9hZGlu
ZyBtYXRjaGVycwotYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkIHRvIGp1c3Qg
YmFzZWQgb24gdGhlIG51bWJlciBvZgotcGFyYW1ldGVycykuCi0KLSMjIFdyaXRpbmcgTmV3IE1v
bm9tb3JwaGljIE1hdGNoZXJzICMjCi0KLUEgbWF0Y2hlciBvZiBhcmd1bWVudCB0eXBlIGBUYCBp
bXBsZW1lbnRzCi1gOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPFQ+YCBhbmQgZG9lcyB0d28g
dGhpbmdzOiBpdCB0ZXN0cyB3aGV0aGVyIGEKLXZhbHVlIG9mIHR5cGUgYFRgIG1hdGNoZXMgdGhl
IG1hdGNoZXIsIGFuZCBjYW4gZGVzY3JpYmUgd2hhdCBraW5kIG9mCi12YWx1ZXMgaXQgbWF0Y2hl
cy4gVGhlIGxhdHRlciBhYmlsaXR5IGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgcmVhZGFibGUKLWVy
cm9yIG1lc3NhZ2VzIHdoZW4gZXhwZWN0YXRpb25zIGFyZSB2aW9sYXRlZC4KLQotVGhlIGludGVy
ZmFjZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYAotY2xhc3MgTWF0Y2hSZXN1bHRMaXN0ZW5lciB7
Ci0gcHVibGljOgotICAuLi4KLSAgLy8gU3RyZWFtcyB4IHRvIHRoZSB1bmRlcmx5aW5nIG9zdHJl
YW07IGRvZXMgbm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAvLyBpcyBOVUxMLgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5lciYgb3BlcmF0b3I8PChjb25zdCBU
JiB4KTsKLQotICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIG9zdHJlYW0uCi0gIDo6c3RkOjpv
c3RyZWFtKiBzdHJlYW0oKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTWF0
Y2hlckludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5NYXRjaGVySW50ZXJmYWNlKCk7
Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBtYXRjaGVzIHg7IGFsc28gZXhw
bGFpbnMgdGhlIG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlzdGVuZXInLgotICB2aXJ0dWFsIGJv
b2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNv
bnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMgdGhpcyBtYXRjaGVyIHRvIGFuIG9zdHJlYW0uCi0g
IHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwot
Ci0gIC8vIERlc2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIHRvIGFuIG9zdHJl
YW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9z
KSBjb25zdDsKLX07Ci1gYGAKLQotSWYgeW91IG5lZWQgYSBjdXN0b20gbWF0Y2hlciBidXQgYFRy
dWx5KClgIGlzIG5vdCBhIGdvb2Qgb3B0aW9uIChmb3IKLWV4YW1wbGUsIHlvdSBtYXkgbm90IGJl
IGhhcHB5IHdpdGggdGhlIHdheSBgVHJ1bHkocHJlZGljYXRlKWAKLWRlc2NyaWJlcyBpdHNlbGYs
IG9yIHlvdSBtYXkgd2FudCB5b3VyIG1hdGNoZXIgdG8gYmUgcG9seW1vcnBoaWMgYXMKLWBFcSh2
YWx1ZSlgIGlzKSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIGRvIHdoYXRldmVyIHlvdSB3
YW50IGluCi10d28gc3RlcHM6IGZpcnN0IGltcGxlbWVudCB0aGUgbWF0Y2hlciBpbnRlcmZhY2Us
IGFuZCB0aGVuIGRlZmluZSBhCi1mYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1hdGNoZXIg
aW5zdGFuY2UuIFRoZSBzZWNvbmQgc3RlcCBpcyBub3QKLXN0cmljdGx5IG5lZWRlZCBidXQgaXQg
bWFrZXMgdGhlIHN5bnRheCBvZiB1c2luZyB0aGUgbWF0Y2hlciBuaWNlci4KLQotRm9yIGV4YW1w
bGUsIHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byB0ZXN0IHdoZXRoZXIgYW4gYGludGAgaXMK
LWRpdmlzaWJsZSBieSA3IGFuZCB0aGVuIHVzZSBpdCBsaWtlIHRoaXM6Ci1gYGAKLXVzaW5nIDo6
dGVzdGluZzo6TWFrZU1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXI7Ci11c2luZyA6
OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0
TGlzdGVuZXI7Ci0KLWNsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlcklu
dGVyZmFjZTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
aW50IG4sIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IChuICUgNykgPT0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgZGl2aXNpYmxlIGJ5IDciOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIG5vdCBkaXZpc2libGUgYnkgNyI7Ci0gIH0KLX07Ci0K
LWlubGluZSBNYXRjaGVyPGludD4gRGl2aXNpYmxlQnk3KCkgewotICByZXR1cm4gTWFrZU1hdGNo
ZXIobmV3IERpdmlzaWJsZUJ5N01hdGNoZXIpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9v
LCBCYXIoRGl2aXNpYmxlQnk3KCkpKTsKLWBgYAotCi1Zb3UgbWF5IGltcHJvdmUgdGhlIG1hdGNo
ZXIgbWVzc2FnZSBieSBzdHJlYW1pbmcgYWRkaXRpb25hbAotaW5mb3JtYXRpb24gdG8gdGhlIGBs
aXN0ZW5lcmAgYXJndW1lbnQgaW4gYE1hdGNoQW5kRXhwbGFpbigpYDoKLQotYGBgCi1jbGFzcyBE
aXZpc2libGVCeTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7Ci0gcHVi
bGljOgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7
Ci0gICAgY29uc3QgaW50IHJlbWFpbmRlciA9IG4gJSA3OwotICAgIGlmIChyZW1haW5kZXIgIT0g
MCkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVyIGlzICIgPDwgcmVtYWluZGVy
OwotICAgIH0KLSAgICByZXR1cm4gcmVtYWluZGVyID09IDA7Ci0gIH0KLSAgLi4uCi19OwotYGBg
Ci0KLVRoZW4sIGBFWFBFQ1RfVEhBVCh4LCBEaXZpc2libGVCeTcoKSk7YCBtYXkgZ2VuZXJhbCBh
IG1lc3NhZ2UgbGlrZSB0aGlzOgotYGBgCi1WYWx1ZSBvZjogeAotRXhwZWN0ZWQ6IGlzIGRpdmlz
aWJsZSBieSA3Ci0gIEFjdHVhbDogMjMgKHRoZSByZW1haW5kZXIgaXMgMikKLWBgYAotCi0jIyBX
cml0aW5nIE5ldyBQb2x5bW9ycGhpYyBNYXRjaGVycyAjIwotCi1Zb3UndmUgbGVhcm5lZCBob3cg
dG8gd3JpdGUgeW91ciBvd24gbWF0Y2hlcnMgaW4gdGhlIHByZXZpb3VzCi1yZWNpcGUuIEp1c3Qg
b25lIHByb2JsZW06IGEgbWF0Y2hlciBjcmVhdGVkIHVzaW5nIGBNYWtlTWF0Y2hlcigpYCBvbmx5
Ci13b3JrcyBmb3Igb25lIHBhcnRpY3VsYXIgdHlwZSBvZiBhcmd1bWVudHMuIElmIHlvdSB3YW50
IGEKLV9wb2x5bW9ycGhpY18gbWF0Y2hlciB0aGF0IHdvcmtzIHdpdGggYXJndW1lbnRzIG9mIHNl
dmVyYWwgdHlwZXMgKGZvcgotaW5zdGFuY2UsIGBFcSh4KWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2gg
YSBgdmFsdWVgIGFzIGxvbmcgYXMgYHZhbHVlYCA9PQotYHhgIGNvbXBpbGVzIC0tIGB2YWx1ZWAg
YW5kIGB4YCBkb24ndCBoYXZlIHRvIHNoYXJlIHRoZSBzYW1lIHR5cGUpLAoteW91IGNhbiBsZWFy
biB0aGUgdHJpY2sgZnJvbSBgPGdtb2NrL2dtb2NrLW1hdGNoZXJzLmg+YCBidXQgaXQncyBhIGJp
dAotaW52b2x2ZWQuCi0KLUZvcnR1bmF0ZWx5LCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBjYW4gZGVm
aW5lIGEgcG9seW1vcnBoaWMgbWF0Y2hlcgotZWFzaWx5IHdpdGggdGhlIGhlbHAgb2YgYE1ha2VQ
b2x5bW9ycGhpY01hdGNoZXIoKWAuIEhlcmUncyBob3cgeW91IGNhbgotZGVmaW5lIGBOb3ROdWxs
KClgIGFzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBo
aWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotdXNpbmcg
Ojp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpQb2x5bW9ycGhpY01hdGNoZXI7
Ci0KLWNsYXNzIE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRvIGltcGxlbWVudCBh
IHBvbHltb3JwaGljIG1hdGNoZXIsIGZpcnN0IGRlZmluZSBhIENPUFlBQkxFIGNsYXNzCi0gIC8v
IHRoYXQgaGFzIHRocmVlIG1lbWJlcnMgTWF0Y2hBbmRFeHBsYWluKCksIERlc2NyaWJlVG8oKSwg
YW5kCi0gIC8vIERlc2NyaWJlTmVnYXRpb25UbygpLCBsaWtlIHRoZSBmb2xsb3dpbmcuCi0KLSAg
Ly8gSW4gdGhpcyBleGFtcGxlLCB3ZSB3YW50IHRvIHVzZSBOb3ROdWxsKCkgd2l0aCBhbnkgcG9p
bnRlciwgc28KLSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgYWNjZXB0cyBhIHBvaW50ZXIgb2YgYW55
IHR5cGUgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LgotICAvLyBJbiBnZW5lcmFsLCB5b3UgY2FuIGRl
ZmluZSBNYXRjaEFuZEV4cGxhaW4oKSBhcyBhbiBvcmRpbmFyeSBtZXRob2Qgb3IKLSAgLy8gYSBt
ZXRob2QgdGVtcGxhdGUsIG9yIGV2ZW4gb3ZlcmxvYWQgaXQuCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihUKiBwLAotICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIHJldHVy
biBwICE9IE5VTEw7Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFs
dWUgbWF0Y2hpbmcgdGhpcyBtYXRjaGVyLgotICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMgbm90IE5VTEwiOyB9Ci0KLSAgLy8gRGVzY3JpYmVz
IHRoZSBwcm9wZXJ0eSBvZiBhIHZhbHVlIE5PVCBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCi0gIHZv
aWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwg
ImlzIE5VTEwiOyB9Ci19OwotCi0vLyBUbyBjb25zdHJ1Y3QgYSBwb2x5bW9ycGhpYyBtYXRjaGVy
LCBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcwotLy8gdG8gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcigpLiAgTm90ZSB0aGUgcmV0dXJuIHR5cGUuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVy
PE5vdE51bGxNYXRjaGVyPiBOb3ROdWxsKCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcihOb3ROdWxsTWF0Y2hlcigpKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFy
KE5vdE51bGwoKSkpOyAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBub24tTlVMTCBwb2ludGVy
LgotYGBgCi0KLSoqTm90ZToqKiBZb3VyIHBvbHltb3JwaGljIG1hdGNoZXIgY2xhc3MgZG9lcyAq
Km5vdCoqIG5lZWQgdG8gaW5oZXJpdCBmcm9tCi1gTWF0Y2hlckludGVyZmFjZWAgb3IgYW55IG90
aGVyIGNsYXNzLCBhbmQgaXRzIG1ldGhvZHMgZG8gKipub3QqKiBuZWVkCi10byBiZSB2aXJ0dWFs
LgotCi1MaWtlIGluIGEgbW9ub21vcnBoaWMgbWF0Y2hlciwgeW91IG1heSBleHBsYWluIHRoZSBt
YXRjaCByZXN1bHQgYnkKLXN0cmVhbWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIHRoZSBg
bGlzdGVuZXJgIGFyZ3VtZW50IGluCi1gTWF0Y2hBbmRFeHBsYWluKClgLgotCi0jIyBXcml0aW5n
IE5ldyBDYXJkaW5hbGl0aWVzICMjCi0KLUEgY2FyZGluYWxpdHkgaXMgdXNlZCBpbiBgVGltZXMo
KWAgdG8gdGVsbCBHb29nbGUgTW9jayBob3cgbWFueSB0aW1lcwoteW91IGV4cGVjdCBhIGNhbGwg
dG8gb2NjdXIuIEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBleGFjdC4gRm9yIGV4YW1wbGUsCi15b3Ug
Y2FuIHNheSBgQXRMZWFzdCg1KWAgb3IgYEJldHdlZW4oMiwgNClgLgotCi1JZiB0aGUgYnVpbHQt
aW4gc2V0IG9mIGNhcmRpbmFsaXRpZXMgZG9lc24ndCBzdWl0IHlvdSwgeW91IGFyZSBmcmVlIHRv
Ci1kZWZpbmUgeW91ciBvd24gYnkgaW1wbGVtZW50aW5nIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNl
IChpbiBuYW1lc3BhY2UKLWB0ZXN0aW5nYCk6Ci0KLWBgYAotY2xhc3MgQ2FyZGluYWxpdHlJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Q2FyZGluYWxpdHlJbnRlcmZhY2UoKTsKLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXRpc2Z5IHRoaXMg
Y2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGludCBj
YWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50
IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElz
U2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAvLyBE
ZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci1gYGAKLQotRm9yIGV4YW1wbGUsIHRv
IHNwZWNpZnkgdGhhdCBhIGNhbGwgbXVzdCBvY2N1ciBldmVuIG51bWJlciBvZiB0aW1lcywKLXlv
dSBjYW4gd3JpdGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5OwotdXNpbmcg
Ojp0ZXN0aW5nOjpDYXJkaW5hbGl0eUludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWFrZUNh
cmRpbmFsaXR5OwotCi1jbGFzcyBFdmVuTnVtYmVyQ2FyZGluYWxpdHkgOiBwdWJsaWMgQ2FyZGlu
YWxpdHlJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlD
YWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gKGNhbGxfY291bnQg
JSAyKSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQo
aW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3Mg
PDwgImNhbGxlZCBldmVuIG51bWJlciBvZiB0aW1lcyI7Ci0gIH0KLX07Ci0KLUNhcmRpbmFsaXR5
IEV2ZW5OdW1iZXIoKSB7Ci0gIHJldHVybiBNYWtlQ2FyZGluYWxpdHkobmV3IEV2ZW5OdW1iZXJD
YXJkaW5hbGl0eSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigzKSkKLSAgICAg
IC5UaW1lcyhFdmVuTnVtYmVyKCkpOwotYGBgCi0KLSMjIFdyaXRpbmcgTmV3IEFjdGlvbnMgUXVp
Y2tseSAjIwotCi1JZiB0aGUgYnVpbHQtaW4gYWN0aW9ucyBkb24ndCB3b3JrIGZvciB5b3UsIGFu
ZCB5b3UgZmluZCBpdAotaW5jb252ZW5pZW50IHRvIHVzZSBgSW52b2tlKClgLCB5b3UgY2FuIHVz
ZSBhIG1hY3JvIGZyb20gdGhlIGBBQ1RJT04qYAotZmFtaWx5IHRvIHF1aWNrbHkgZGVmaW5lIGEg
bmV3IGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHlvdXIgY29kZSBhcwotaWYgaXQncyBhIGJ1
aWx0LWluIGFjdGlvbi4KLQotQnkgd3JpdGluZwotYGBgCi1BQ1RJT04obmFtZSkgeyBzdGF0ZW1l
bnRzOyB9Ci1gYGAKLWluIGEgbmFtZXNwYWNlIHNjb3BlIChpLmUuIG5vdCBpbnNpZGUgYSBjbGFz
cyBvciBmdW5jdGlvbiksIHlvdSB3aWxsCi1kZWZpbmUgYW4gYWN0aW9uIHdpdGggdGhlIGdpdmVu
IG5hbWUgdGhhdCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cy4KLVRoZSB2YWx1ZSByZXR1cm5lZCBi
eSBgc3RhdGVtZW50c2Agd2lsbCBiZSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YKLXRoZSBh
Y3Rpb24uICBJbnNpZGUgdGhlIHN0YXRlbWVudHMsIHlvdSBjYW4gcmVmZXIgdG8gdGhlIEstdGgK
LSgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBgYXJnS2AuICBGb3Ig
ZXhhbXBsZToKLWBgYAotQUNUSU9OKEluY3JlbWVudEFyZzEpIHsgcmV0dXJuICsrKCphcmcxKTsg
fQotYGBgCi1hbGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLS4uLiBXaWxsT25jZShJbmNyZW1lbnRB
cmcxKCkpOwotYGBgCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IHRoZSB0
eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbgotYXJndW1lbnRzLiAgUmVzdCBhc3N1cmVkIHRoYXQg
eW91ciBjb2RlIGlzIHR5cGUtc2FmZSB0aG91Z2g6Ci15b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJy
b3IgaWYgYCphcmcxYCBkb2Vzbid0IHN1cHBvcnQgdGhlIGArK2AKLW9wZXJhdG9yLCBvciBpZiB0
aGUgdHlwZSBvZiBgKysoKmFyZzEpYCBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlIG1vY2sKLWZ1
bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0KLUFub3RoZXIgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZv
bykgewotICAoKmFyZzIpKDUpOwotICBCbGFoKCk7Ci0gICphcmcxID0gMDsKLSAgcmV0dXJuIGFy
ZzA7Ci19Ci1gYGAKLWRlZmluZXMgYW4gYWN0aW9uIGBGb28oKWAgdGhhdCBpbnZva2VzIGFyZ3Vt
ZW50ICMyIChhIGZ1bmN0aW9uIHBvaW50ZXIpCi13aXRoIDUsIGNhbGxzIGZ1bmN0aW9uIGBCbGFo
KClgLCBzZXRzIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50Ci0jMSB0byAwLCBhbmQg
cmV0dXJucyBhcmd1bWVudCAjMC4KLQotRm9yIG1vcmUgY29udmVuaWVuY2UgYW5kIGZsZXhpYmls
aXR5LCB5b3UgY2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcKLXByZS1kZWZpbmVkIHN5bWJvbHMg
aW4gdGhlIGJvZHkgb2YgYEFDVElPTmA6Ci0KLXwgYGFyZ0tfdHlwZWAgfCBUaGUgdHlwZSBvZiB0
aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gfAotfDotLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Ci18IGBhcmdzYCAgICAgIHwgQWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9j
ayBmdW5jdGlvbiBhcyBhIHR1cGxlICAgICAgICAgICAgICAgIHwKLXwgYGFyZ3NfdHlwZWAgfCBU
aGUgdHlwZSBvZiBhbGwgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUg
ICAgfAotfCBgcmV0dXJuX3R5cGVgIHwgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0
aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGZ1bmN0aW9uX3R5cGVgIHwgVGhlIHR5
cGUgb2YgdGhlIG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LQotRm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgYW4gYEFDVElPTmAgYXMgYSBzdHViIGFjdGlvbiBm
b3IgbW9jayBmdW5jdGlvbjoKLWBgYAotaW50IERvU29tZXRoaW5nKGJvb2wgZmxhZywgaW50KiBw
dHIpOwotYGBgCi13ZSBoYXZlOgotfCAqKlByZS1kZWZpbmVkIFN5bWJvbCoqIHwgKipJcyBCb3Vu
ZCBUbyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Ci18
IGBhcmcwYCAgICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYGZsYWdgIHwKLXwgYGFyZzBf
dHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBib29sYCB8Ci18IGBhcmcxYCAgICAgICAgICAg
ICAgICAgfCB0aGUgdmFsdWUgb2YgYHB0cmAgfAotfCBgYXJnMV90eXBlYCAgICAgICAgICAgIHwg
dGhlIHR5cGUgYGludCpgIHwKLXwgYGFyZ3NgICAgICAgICAgICAgICAgICB8IHRoZSB0dXBsZSBg
KGZsYWcsIHB0cilgIHwKLXwgYGFyZ3NfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBzdGQ6
OnRyMTo6dHVwbGU8Ym9vbCwgaW50Kj5gIHwKLXwgYHJldHVybl90eXBlYCAgICAgICAgICB8IHRo
ZSB0eXBlIGBpbnRgICB8Ci18IGBmdW5jdGlvbl90eXBlYCAgICAgICAgfCB0aGUgdHlwZSBgaW50
KGJvb2wsIGludCopYCB8Ci0KLSMjIFdyaXRpbmcgTmV3IFBhcmFtZXRlcml6ZWQgQWN0aW9ucyBR
dWlja2x5ICMjCi0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBwYXJhbWV0ZXJpemUgYW4gYWN0
aW9uIHlvdSBkZWZpbmUuICBGb3IgdGhhdAotd2UgaGF2ZSBhbm90aGVyIG1hY3JvCi1gYGAKLUFD
VElPTl9QKG5hbWUsIHBhcmFtKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1Gb3IgZXhhbXBsZSwK
LWBgYAotQUNUSU9OX1AoQWRkLCBuKSB7IHJldHVybiBhcmcwICsgbjsgfQotYGBgCi13aWxsIGFs
bG93IHlvdSB0byB3cml0ZQotYGBgCi0vLyBSZXR1cm5zIGFyZ3VtZW50ICMwICsgNS4KLS4uLiBX
aWxsT25jZShBZGQoNSkpOwotYGBgCi0KLUZvciBjb252ZW5pZW5jZSwgd2UgdXNlIHRoZSB0ZXJt
IF9hcmd1bWVudHNfIGZvciB0aGUgdmFsdWVzIHVzZWQgdG8KLWludm9rZSB0aGUgbW9jayBmdW5j
dGlvbiwgYW5kIHRoZSB0ZXJtIF9wYXJhbWV0ZXJzXyBmb3IgdGhlIHZhbHVlcwotdXNlZCB0byBp
bnN0YW50aWF0ZSBhbiBhY3Rpb24uCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBwcm92
aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIgZWl0aGVyLgotU3VwcG9zZSB0aGUgcGFyYW1l
dGVyIGlzIG5hbWVkIGBwYXJhbWAsIHlvdSBjYW4gYWxzbyB1c2UgdGhlCi1Hb29nbGUtTW9jay1k
ZWZpbmVkIHN5bWJvbCBgcGFyYW1fdHlwZWAgdG8gcmVmZXIgdG8gdGhlIHR5cGUgb2YgdGhlCi1w
YXJhbWV0ZXIgYXMgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgRm9yIGV4YW1wbGUsIGluIHRo
ZSBib2R5IG9mCi1gQUNUSU9OX1AoQWRkLCBuKWAgYWJvdmUsIHlvdSBjYW4gd3JpdGUgYG5fdHlw
ZWAgZm9yIHRoZSB0eXBlIG9mIGBuYC4KLQotR29vZ2xlIE1vY2sgYWxzbyBwcm92aWRlcyBgQUNU
SU9OX1AyYCwgYEFDVElPTl9QM2AsIGFuZCBldGMgdG8gc3VwcG9ydAotbXVsdGktcGFyYW1ldGVy
IGFjdGlvbnMuICBGb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1AyKFJldHVybkRpc3RhbmNlVG8s
IHgsIHkpIHsKLSAgZG91YmxlIGR4ID0gYXJnMCAtIHg7Ci0gIGRvdWJsZSBkeSA9IGFyZzEgLSB5
OwotICByZXR1cm4gc3FydChkeCpkeCArIGR5KmR5KTsKLX0KLWBgYAotbGV0cyB5b3Ugd3JpdGUK
LWBgYAotLi4uIFdpbGxPbmNlKFJldHVybkRpc3RhbmNlVG8oNS4wLCAyNi41KSk7Ci1gYGAKLQot
WW91IGNhbiB2aWV3IGBBQ1RJT05gIGFzIGEgZGVnZW5lcmF0ZWQgcGFyYW1ldGVyaXplZCBhY3Rp
b24gd2hlcmUgdGhlCi1udW1iZXIgb2YgcGFyYW1ldGVycyBpcyAwLgotCi1Zb3UgY2FuIGFsc28g
ZWFzaWx5IGRlZmluZSBhY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0
ZXJzOgotYGBgCi1BQ1RJT05fUChQbHVzLCBhKSB7IC4uLiB9Ci1BQ1RJT05fUDIoUGx1cywgYSwg
YikgeyAuLi4gfQotYGBgCi0KLSMjIFJlc3RyaWN0aW5nIHRoZSBUeXBlIG9mIGFuIEFyZ3VtZW50
IG9yIFBhcmFtZXRlciBpbiBhbiBBQ1RJT04gIyMKLQotRm9yIG1heGltdW0gYnJldml0eSBhbmQg
cmV1c2FiaWxpdHksIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGRvbid0IGFzawoteW91IHRvIHByb3Zp
ZGUgdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlv
bgotcGFyYW1ldGVycy4gIEluc3RlYWQsIHdlIGxldCB0aGUgY29tcGlsZXIgaW5mZXIgdGhlIHR5
cGVzIGZvciB1cy4KLQotU29tZXRpbWVzLCBob3dldmVyLCB3ZSBtYXkgd2FudCB0byBiZSBtb3Jl
IGV4cGxpY2l0IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJlIGFyZSBzZXZlcmFsIHRyaWNrcyB0byBk
byB0aGF0LiAgRm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28pIHsKLSAgLy8gTWFrZXMgc3Vy
ZSBhcmcwIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50LgotICBpbnQgbiA9IGFyZzA7Ci0gIC4uLiB1
c2UgbiBpbnN0ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0KLQotQUNUSU9OX1AoQmFyLCBwYXJhbSkg
ewotICAvLyBNYWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFyZzEgaXMgY29uc3QgY2hhciouCi0gIDo6
dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIqLCBhcmcxX3R5cGU+KCk7Ci0K
LSAgLy8gTWFrZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29udmVydGVkIHRvIGJvb2wuCi0gIGJvb2wg
ZmxhZyA9IHBhcmFtOwotfQotYGBgCi13aGVyZSBgU3RhdGljQXNzZXJ0VHlwZUVxYCBpcyBhIGNv
bXBpbGUtdGltZSBhc3NlcnRpb24gaW4gR29vZ2xlIFRlc3QKLXRoYXQgdmVyaWZpZXMgdHdvIHR5
cGVzIGFyZSB0aGUgc2FtZS4KLQotIyMgV3JpdGluZyBOZXcgQWN0aW9uIFRlbXBsYXRlcyBRdWlj
a2x5ICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFuIGFjdGlvbiBleHBsaWNpdCB0
ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKLWNhbm5vdCBiZSBpbmZlcnJlZCBmcm9tIGl0cyB2YWx1
ZSBwYXJhbWV0ZXJzLiAgYEFDVElPTl9URU1QTEFURSgpYAotc3VwcG9ydHMgdGhhdCBhbmQgY2Fu
IGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gYEFDVElPTigpYCBhbmQKLWBBQ1RJT05fUCoo
KWAuCi0KLVRoZSBzeW50YXg6Ci1gYGAKLUFDVElPTl9URU1QTEFURShBY3Rpb25OYW1lLAotICAg
ICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5kMSwgbmFtZTEsIC4uLiwga2lu
ZF9tLCBuYW1lX20pLAotICAgICAgICAgICAgICAgIEFORF9uX1ZBTFVFX1BBUkFNUyhwMSwgLi4u
LCBwX24pKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1kZWZpbmVzIGFuIGFjdGlvbiB0ZW1wbGF0
ZSB0aGF0IHRha2VzIF9tXyBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCi1hbmQgX25fIHZh
bHVlIHBhcmFtZXRlcnMsIHdoZXJlIF9tXyBpcyBiZXR3ZWVuIDEgYW5kIDEwLCBhbmQgX25fIGlz
Ci1iZXR3ZWVuIDAgYW5kIDEwLiAgYG5hbWVfaWAgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGggdGVt
cGxhdGUKLXBhcmFtZXRlciwgYW5kIGBraW5kX2lgIHNwZWNpZmllcyB3aGV0aGVyIGl0J3MgYSBg
dHlwZW5hbWVgLCBhbgotaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEgdGVtcGxhdGUuICBgcF9pYCBp
cyB0aGUgbmFtZSBvZiB0aGUgaS10aCB2YWx1ZQotcGFyYW1ldGVyLgotCi1FeGFtcGxlOgotYGBg
Ci0vLyBEdXBsaWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0cyB0aGUgay10aCBhcmd1bWVu
dCBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24gdG8gdHlwZSBUIGFuZCBjb3BpZXMgaXQgdG8gKm91
dHB1dC4KLUFDVElPTl9URU1QTEFURShEdXBsaWNhdGVBcmcsCi0gICAgICAgICAgICAgICAgLy8g
Tm90ZSB0aGUgY29tbWEgYmV0d2VlbiBpbnQgYW5kIGs6Ci0gICAgICAgICAgICAgICAgSEFTXzJf
VEVNUExBVEVfUEFSQU1TKGludCwgaywgdHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFO
RF8xX1ZBTFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0gICpvdXRwdXQgPSBUKHN0ZDo6dHIxOjpnZXQ8
az4oYXJncykpOwotfQotYGBgCi0KLVRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBhY3Rpb24g
dGVtcGxhdGUsIHdyaXRlOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tPih2MSwgLi4u
LCB2X24pCi1gYGAKLXdoZXJlIHRoZSBgdGBzIGFyZSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzIGFu
ZCB0aGUKLWB2YHMgYXJlIHRoZSB2YWx1ZSBhcmd1bWVudHMuICBUaGUgdmFsdWUgYXJndW1lbnQK
LXR5cGVzIGFyZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZToKLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIGludCBuOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBG
b28oXywgXykpCi0gICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+
KCZuKSk7Ci1gYGAKLQotSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB2YWx1
ZSBhcmd1bWVudCB0eXBlcywgeW91IGNhbgotcHJvdmlkZSBhZGRpdGlvbmFsIHRlbXBsYXRlIGFy
Z3VtZW50czoKLWBgYAotICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2
MSwgLi4uLCB2X24pCi1gYGAKLXdoZXJlIGB1X2lgIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2YgYHZf
aWAuCi0KLWBBQ1RJT05fVEVNUExBVEVgIGFuZCBgQUNUSU9OYC9gQUNUSU9OX1AqYCBjYW4gYmUg
b3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9u
IHRoZSBudW1iZXIgb2YgdGVtcGxhdGUKLXBhcmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmlj
dGlvbiwgdGhlIG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZyBpcwotdW5jbGVhcjoKLQotYGBgCi0g
IE92ZXJsb2FkZWRBY3Rpb248aW50LCBib29sPih4KTsKLWBgYAotCi1BcmUgd2UgdXNpbmcgYSBz
aW5nbGUtdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSBgYm9vbGAgcmVmZXJzIHRvCi10
aGUgdHlwZSBvZiBgeGAsIG9yIGEgdHdvLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hlcmUg
dGhlIGNvbXBpbGVyCi1pcyBhc2tlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBgeGA/Ci0KLSMjIFVz
aW5nIHRoZSBBQ1RJT04gT2JqZWN0J3MgVHlwZSAjIwotCi1JZiB5b3UgYXJlIHdyaXRpbmcgYSBm
dW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0LCB5b3UnbGwKLW5lZWQgdG8g
a25vdyBpdHMgdHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVm
aW5lCi10aGUgYWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVs
YXRpdmVseSBzaW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiog
fCAqKkhhcyBUeXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAg
ICB8IGBGb29BY3Rpb25gICB8Ci18IGBBQ1RJT05fVEVNUExBVEUoRm9vLCBIQVNfbV9URU1QTEFU
RV9QQVJBTVMoLi4uKSwgQU5EXzBfVkFMVUVfUEFSQU1TKCkpYCB8CWBGb288dDEsIC4uLiwgdF9t
PigpYCB8IGBGb29BY3Rpb248dDEsIC4uLiwgdF9tPmAgfAotfCBgQUNUSU9OX1AoQmFyLCBwYXJh
bSlgIHwgYEJhcihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGludD5gIHwKLXwgYEFDVElPTl9U
RU1QTEFURShCYXIsIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMV9WQUxVRV9QQVJB
TVMocDEpKWAgfCBgQmFyPHQxLCAuLi4sIHRfbT4oaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDx0
MSwgLi4uLCB0X20sIGludD5gIHwKLXwgYEFDVElPTl9QMihCYXosIHAxLCBwMilgIHwgYEJheihi
b29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8IGBCYXpBY3Rpb25QMjxib29sLCBpbnQ+YCB8Ci18IGBB
Q1RJT05fVEVNUExBVEUoQmF6LCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzJfVkFM
VUVfUEFSQU1TKHAxLCBwMikpYCB8IGBCYXo8dDEsIC4uLiwgdF9tPihib29sX3ZhbHVlLCBpbnRf
dmFsdWUpYCB8IGBGb29BY3Rpb25QMjx0MSwgLi4uLCB0X20sIGJvb2wsIGludD5gIHwKLXwgLi4u
ICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4uLiAgICAgICAgICB8Ci0KLU5v
dGUgdGhhdCB3ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwgYEFj
dGlvblBgLAotYEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQg
bnVtYmVycyBvZiB2YWx1ZQotcGFyYW1ldGVycywgb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBj
YW5ub3QgYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB0aGVtLgotCi0jIyBXcml0aW5n
IE5ldyBNb25vbW9ycGhpYyBBY3Rpb25zICMjCi0KLVdoaWxlIHRoZSBgQUNUSU9OKmAgbWFjcm9z
IGFyZSB2ZXJ5IGNvbnZlbmllbnQsIHNvbWV0aW1lcyB0aGV5IGFyZQotaW5hcHByb3ByaWF0ZS4g
IEZvciBleGFtcGxlLCBkZXNwaXRlIHRoZSB0cmlja3Mgc2hvd24gaW4gdGhlIHByZXZpb3VzCi1y
ZWNpcGVzLCB0aGV5IGRvbid0IGxldCB5b3UgZGlyZWN0bHkgc3BlY2lmeSB0aGUgdHlwZXMgb2Yg
dGhlIG1vY2sKLWZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzLCB3
aGljaCBpbiBnZW5lcmFsIGxlYWRzCi10byB1bm9wdGltaXplZCBjb21waWxlciBlcnJvciBtZXNz
YWdlcyB0aGF0IGNhbiBiYWZmbGUgdW5mYW1pbGlhcgotdXNlcnMuICBUaGV5IGFsc28gZG9uJ3Qg
YWxsb3cgb3ZlcmxvYWRpbmcgYWN0aW9ucyBiYXNlZCBvbiBwYXJhbWV0ZXIKLXR5cGVzIHdpdGhv
dXQganVtcGluZyB0aHJvdWdoIHNvbWUgaG9vcHMuCi0KLUFuIGFsdGVybmF0aXZlIHRvIHRoZSBg
QUNUSU9OKmAgbWFjcm9zIGlzIHRvIGltcGxlbWVudAotYDo6dGVzdGluZzo6QWN0aW9uSW50ZXJm
YWNlPEY+YCwgd2hlcmUgYEZgIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2NrCi1mdW5jdGlvbiBpbiB3
aGljaCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdGVtcGxh
dGUgPHR5cGVuYW1lIEY+Y2xhc3MgQWN0aW9uSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgfkFjdGlvbkludGVyZmFjZSgpOwotCi0gIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBSZXN1
bHQgaXMgdGhlIHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUKLSAgLy8gRiwgYW5kIEFyZ3Vt
ZW50VHVwbGUgaXMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50cyBvZiBGLgotICAvLwotICAvLyBGb3Ig
ZXhhbXBsZSwgaWYgRiBpcyBpbnQoYm9vbCwgY29uc3Qgc3RyaW5nJiksIHRoZW4gUmVzdWx0IHdv
dWxkCi0gIC8vIGJlIGludCwgYW5kIEFyZ3VtZW50VHVwbGUgd291bGQgYmUgdHIxOjp0dXBsZTxi
b29sLCBjb25zdCBzdHJpbmcmPi4KLSAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSA9IDA7Ci19OwotCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6
OnRlc3Rpbmc6OkFjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwotdXNp
bmcgOjp0ZXN0aW5nOjpNYWtlQWN0aW9uOwotCi10eXBlZGVmIGludCBJbmNyZW1lbnRNZXRob2Qo
aW50Kik7Ci0KLWNsYXNzIEluY3JlbWVudEFyZ3VtZW50QWN0aW9uIDogcHVibGljIEFjdGlvbklu
dGVyZmFjZTxJbmNyZW1lbnRNZXRob2Q+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IFBlcmZv
cm0oY29uc3QgdHIxOjp0dXBsZTxpbnQqPiYgYXJncykgewotICAgIGludCogcCA9IHRyMTo6Z2V0
PDA+KGFyZ3MpOyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50LgotICAgIHJldHVybiAqcCsr
OwotICB9Ci19OwotCi1BY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJbmNyZW1lbnRBcmd1bWVudCgp
IHsKLSAgcmV0dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFyZ3VtZW50QWN0aW9uKTsKLX0K
LS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQotICAgICAgLldpbGxPbmNlKEluY3Jl
bWVudEFyZ3VtZW50KCkpOwotCi0gIGludCBuID0gNTsKLSAgZm9vLkJheigmbik7ICAvLyBTaG91
bGQgcmV0dXJuIDUgYW5kIGNoYW5nZSBuIHRvIDYuCi1gYGAKLQotIyMgV3JpdGluZyBOZXcgUG9s
eW1vcnBoaWMgQWN0aW9ucyAjIwotCi1UaGUgcHJldmlvdXMgcmVjaXBlIHNob3dlZCB5b3UgaG93
IHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKLWFsbCBnb29kLCBleGNlcHQgdGhh
dCB5b3UgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBpbgotd2hpY2ggdGhl
IGFjdGlvbiB3aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNhbiBiZSBhIHByb2JsZW0uIEZv
cgotZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rpb24gaW4gZnVuY3Rpb25zIHdp
dGggX2RpZmZlcmVudF8KLXR5cGVzIChlLmcuIGxpa2UgYFJldHVybigpYCBhbmQgYFNldEFyZ3Vt
ZW50UG9pbnRlZSgpYCkuCi0KLUlmIGFuIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIHR5
cGVzIG9mIG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKLWl0J3MgX3BvbHltb3JwaGljXy4gVGhlIGBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxhdGUKLW1ha2VzIGl0IGVhc3kg
dG8gZGVmaW5lIHN1Y2ggYW4gYWN0aW9uOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxJbXBsPiBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCi1gYGAKLQotQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5lIGFuIGFjdGlvbiB0aGF0IHJl
dHVybnMgdGhlIHNlY29uZCBhcmd1bWVudAotaW4gdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVu
dCBsaXN0LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4KLWltcGxlbWVudGF0aW9uIGNs
YXNzOgotCi1gYGAKLWNsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uIHsKLSBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0g
IFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLSAgICAv
LyBUbyBnZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1c2UgdHIxOjpnZXQ8aT4oYXJn
cykuCi0gICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOwotICB9Ci19OwotYGBgCi0KLVRoaXMg
aW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRvIGluaGVyaXQgZnJvbSBhbnkK
LXBhcnRpY3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0IGl0IG11c3QgaGF2ZSBhIGBQ
ZXJmb3JtKClgCi1tZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9kIHRlbXBsYXRlIHRha2VzIHRo
ZSBtb2NrIGZ1bmN0aW9uJ3MKLWFyZ3VtZW50cyBhcyBhIHR1cGxlIGluIGEgKipzaW5nbGUqKiBh
cmd1bWVudCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgotdGhlIGFjdGlvbi4gSXQgY2FuIGJl
IGVpdGhlciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52b2thYmxlCi13aXRoIGV4YWN0
bHkgb25lIHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgcmVzdWx0IHR5cGUuIEluIG90
aGVyCi13b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQZXJmb3JtPFI+KGFyZ3MpYCB3
aGVyZSBgUmAgaXMgdGhlCi1tb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgYW5kIGBhcmdzYCBp
cyBpdHMgYXJndW1lbnRzIGluIGEgdHVwbGUuCi0KLU5leHQsIHdlIHVzZSBgTWFrZVBvbHltb3Jw
aGljQWN0aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlCi1pbXBsZW1lbnRhdGlvbiBj
bGFzcyBpbnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVlZC4gSXQgd2lsbCBiZQotY29u
dmVuaWVudCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6UG9seW1vcnBoaWNB
Y3Rpb247Ci0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uPiBS
ZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihS
ZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLWBgYAotCi1Ob3csIHlvdSBjYW4gdXNl
IHRoaXMgcG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5b3UgdXNlIHRoZQotYnVpbHQt
aW4gb25lczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGludChib29sIGZs
YWcsIGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0cmluZyhpbnQgeCwgY29uc3Qg
Y2hhciogc3RyMSwgY29uc3QgY2hhciogc3RyMikpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9v
OwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm5TZWNvbmRBcmd1bWVudCgpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXywgXykp
Ci0gICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7Ci0gIC4uLgotICBmb28u
RG9UaGlzKHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJuIDUuCi0gIGZvby5Eb1RoYXQo
MSwgIkhpIiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4KLWBgYAotCi0jIyBUZWFjaGlu
ZyBHb29nbGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIyMKLQotV2hlbiBhbiB1bmlu
dGVyZXN0aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdvb2dsZSBNb2NrIHByaW50cwot
dGhlIGFyZ3VtZW50IHZhbHVlcyB0byBoZWxwIHlvdSBkZWJ1Zy4gIFRoZSBgRVhQRUNUX1RIQVRg
IGFuZAotYEFTU0VSVF9USEFUYCBhc3NlcnRpb25zIGFsc28gcHJpbnQgdGhlIHZhbHVlIGJlaW5n
IHZhbGlkYXRlZCB3aGVuIHRoZQotdGVzdCBmYWlscy4gIEdvb2dsZSBNb2NrIGRvZXMgdGhpcyB1
c2luZyB0aGUgdXNlci1leHRlbnNpYmxlIHZhbHVlCi1wcmludGVyIGRlZmluZWQgaW4gYDxnbW9j
ay9nbW9jay1wcmludGVycy5oPmAuCi0KLVRoaXMgcHJpbnRlciBrbm93cyBob3cgdG8gcHJpbnQg
dGhlIGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywKLVNUTCBjb250YWluZXJzLCBh
bmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gRm9yCi1vdGhlciB0
eXBlcywgaXQgcHJpbnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFuZCBob3BlIHlvdSB0
aGUKLXVzZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCi0KLURpZCBJIHNheSB0aGF0IHRoZSBwcmludGVy
IGlzIGBleHRlbnNpYmxlYD8gVGhhdCBtZWFucyB5b3UgY2FuIHRlYWNoCi1pdCB0byBkbyBhIGJl
dHRlciBqb2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUgdGhhbiB0byBkdW1wCi10
aGUgYnl0ZXMuIFRvIGRvIHRoYXQsIHlvdSBqdXN0IG5lZWQgdG8gZGVmaW5lIGA8PGAgZm9yIHlv
dXIgdHlwZToKLQotYGBgCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLW5hbWVzcGFjZSBmb28gewot
Ci1jbGFzcyBGb28geyAuLi4gfTsKLQotLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGUgPDwgb3Bl
cmF0b3IgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQotLy8gbmFtZXNwYWNlIHRoYXQgZGVmaW5lcyBG
b28uICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KLTo6c3RkOjpvc3RyZWFtJiBv
cGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgRm9vJiBmb28pIHsKLSAgcmV0dXJu
IG9zIDw8IGZvby5EZWJ1Z1N0cmluZygpOyAgLy8gV2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGZv
byB0byBvcy4KLX0KLQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBgCi0KLVNvbWV0aW1lcywgdGhp
cyBtaWdodCBub3QgYmUgYW4gb3B0aW9uLiBGb3IgZXhhbXBsZSwgeW91ciB0ZWFtIG1heQotY29u
c2lkZXIgaXQgZGFuZ2Vyb3VzIG9yIGJhZCBzdHlsZSB0byBoYXZlIGEgYDw8YCBvcGVyYXRvciBm
b3IgYEZvb2AsCi1vciBgRm9vYCBtYXkgYWxyZWFkeSBoYXZlIGEgYDw8YCBvcGVyYXRvciB0aGF0
IGRvZXNuJ3QgZG8gd2hhdCB5b3UKLXdhbnQgKGFuZCB5b3UgY2Fubm90IGNoYW5nZSBpdCkuIERv
bid0IGRlc3BhaXIgdGhvdWdoIC0gR29vZ2xlIE1vY2sKLWdpdmVzIHlvdSBhIHNlY29uZCBjaGFu
Y2UgdG8gZ2V0IGl0IHJpZ2h0LiBOYW1lbHksIHlvdSBjYW4gZGVmaW5lIGEKLWBQcmludFRvKClg
IGZ1bmN0aW9uIGxpa2UgdGhpczoKLQotYGBgCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLW5hbWVz
cGFjZSBmb28gewotCi1jbGFzcyBGb28geyAuLi4gfTsKLQotLy8gSXQncyBpbXBvcnRhbnQgdGhh
dCBQcmludFRvKCkgaXMgZGVmaW5lZCBpbiB0aGUgU0FNRQotLy8gbmFtZXNwYWNlIHRoYXQgZGVm
aW5lcyBGb28uICBDKysncyBsb29rLXVwIHJ1bGVzIHJlbHkgb24gdGhhdC4KLXZvaWQgUHJpbnRU
byhjb25zdCBGb28mIGZvbywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCBmb28uRGVi
dWdTdHJpbmcoKTsgIC8vIFdoYXRldmVyIG5lZWRlZCB0byBwcmludCBmb28gdG8gb3MuCi19Ci0K
LX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1XaGF0IGlmIHlvdSBoYXZlIGJvdGggYDw8YCBh
bmQgYFByaW50VG8oKWA/IEluIHRoaXMgY2FzZSwgdGhlIGxhdHRlcgotd2lsbCBvdmVycmlkZSB0
aGUgZm9ybWVyIHdoZW4gR29vZ2xlIE1vY2sgaXMgY29uY2VybmVkLiBUaGlzIGFsbG93cwoteW91
IHRvIGN1c3RvbWl6ZSBob3cgdGhlIHZhbHVlIHNob3VsZCBhcHBlYXIgaW4gR29vZ2xlIE1vY2sn
cyBvdXRwdXQKLXdpdGhvdXQgYWZmZWN0aW5nIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGJlaGF2
aW9yIG9mIGl0cyBgPDxgCi1vcGVyYXRvci4KLQotKipOb3RlOioqIFdoZW4gcHJpbnRpbmcgYSBw
b2ludGVyIG9mIHR5cGUgYFQqYCwgR29vZ2xlIE1vY2sgY2FsbHMKLWBQcmludFRvKFQqLCBzdGQ6
Om9zdHJlYW0qIG9zKWAgaW5zdGVhZCBvZiBgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBUKilg
LgotVGhlcmVmb3JlIHRoZSBvbmx5IHdheSB0byBhZmZlY3QgaG93IGEgcG9pbnRlciBpcyBwcmlu
dGVkIGJ5IEdvb2dsZQotTW9jayBpcyB0byBkZWZpbmUgYFByaW50VG8oKWAgZm9yIGl0LiBBbHNv
IG5vdGUgdGhhdCBgVCpgIGFuZCBgY29uc3QgVCpgCi1hcmUgZGlmZmVyZW50IHR5cGVzLCBzbyB5
b3UgbWF5IG5lZWQgdG8gZGVmaW5lIGBQcmludFRvKClgIGZvciBib3RoLgotCi1XaHkgZG9lcyBH
b29nbGUgTW9jayB0cmVhdCBwb2ludGVycyBzcGVjaWFsbHk/IFRoZXJlIGFyZSBzZXZlcmFsIHJl
YXNvbnM6Ci0KLSAgKiBXZSBjYW5ub3QgdXNlIGBvcGVyYXRvcjw8YCB0byBwcmludCBhIGBzaWdu
ZWQgY2hhcipgIG9yIGB1bnNpZ25lZCBjaGFyKmAsIHNpbmNlIGl0IHdpbGwgcHJpbnQgdGhlIHBv
aW50ZXIgYXMgYSBOVUwtdGVybWluYXRlZCBDIHN0cmluZywgd2hpY2ggbGlrZWx5IHdpbGwgY2F1
c2UgYW4gYWNjZXNzIHZpb2xhdGlvbi4KLSAgKiBXZSB3YW50IGBOVUxMYCBwb2ludGVycyB0byBi
ZSBwcmludGVkIGFzIGAiTlVMTCJgLCBidXQgYG9wZXJhdG9yPDxgIHByaW50cyBpdCBhcyBgIjAi
YCwgYCJudWxscHRyImAsIG9yIHNvbWV0aGluZyBlbHNlLCBkZXBlbmRpbmcgb24gdGhlIGNvbXBp
bGVyLgotICAqIFdpdGggc29tZSBjb21waWxlcnMsIHByaW50aW5nIGEgYE5VTExgIGBjaGFyKmAg
dXNpbmcgYG9wZXJhdG9yPDxgIHdpbGwgc2VnZmF1bHQuCi0gICogYG9wZXJhdG9yPDxgIHByaW50
cyBhIGZ1bmN0aW9uIHBvaW50ZXIgYXMgYSBgYm9vbGAgKGhlbmNlIGl0IGFsd2F5cyBwcmludHMg
YCIxImApLCB3aGljaCBpcyBub3QgdmVyeSB1c2VmdWwuClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0RvY3VtZW50YXRpb24ubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRG9jdW1lbnRhdGlvbi5tZApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzE1YjBhMjk4OWFkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svZG9jcy92MV81L0RvY3VtZW50YXRpb24ubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCww
IEBACi1UaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lraSBwYWdlcyBmb3IgR29v
Z2xlIE1vY2sgKip2ZXJzaW9uIDEuNS4wKiogLS0gKippZiB5b3UgdXNlIGEgZGlmZmVyZW50IHZl
cnNpb24gb2YgR29vZ2xlIE1vY2ssIHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0
aGF0IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgotCi0gICogW0ZvckR1bW1pZXNdKFYxXzVf
Rm9yRHVtbWllcy5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgTW9j
ay4KLSAgKiBbQ2hlYXRTaGVldF0oVjFfNV9DaGVhdFNoZWV0Lm1kKSAtLSBhIHF1aWNrIHJlZmVy
ZW5jZS4KLSAgKiBbQ29va0Jvb2tdKFYxXzVfQ29va0Jvb2subWQpIC0tIHJlY2lwZXMgZm9yIGRv
aW5nIHZhcmlvdXMgdGFza3MgdXNpbmcgR29vZ2xlIE1vY2suCi0gICogW0ZyZXF1ZW50bHlBc2tl
ZFF1ZXN0aW9uc10oVjFfNV9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQpIC0tIGNoZWNrIGhl
cmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCi0KLVRvIGNv
bnRyaWJ1dGUgY29kZSB0byBHb29nbGUgTW9jaywgcmVhZDoKLQotICAqIERldkd1aWRlIC0tIHJl
YWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICogW1B1bXAgTWFu
dWFsXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBNYW51YWwp
IC0tIGhvdyB3ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBNb2NrJ3Mgc291cmNlIGZpbGVzLgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNS9Gb3JEdW1taWVzLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV81L0ZvckR1bW1pZXMubWQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYzNiNTYxNzQ3MC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9Gb3JEdW1taWVzLm1kCisrKyAvZGV2L251bGwK
QEAgLTEsNDM5ICswLDAgQEAKLQotCi0oKipOb3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIgZXJy
b3JzIHRoYXQgeW91IGRvbid0IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29vZ2xl
IE1vY2sgRG9jdG9yXShWMV81X0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyNIb3dfYW1fSV9zdXBw
b3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1kKS4p
Ci0KLSMgV2hhdCBJcyBHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrPyAjCi1XaGVuIHlvdSB3
cml0ZSBhIHByb3RvdHlwZSBvciB0ZXN0LCBvZnRlbiBpdCdzIG5vdCBmZWFzaWJsZSBvciB3aXNl
IHRvIHJlbHkgb24gcmVhbCBvYmplY3RzIGVudGlyZWx5LiBBICoqbW9jayBvYmplY3QqKiBpbXBs
ZW1lbnRzIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhIHJlYWwgb2JqZWN0IChzbyBpdCBjYW4gYmUg
dXNlZCBhcyBvbmUpLCBidXQgbGV0cyB5b3Ugc3BlY2lmeSBhdCBydW4gdGltZSBob3cgaXQgd2ls
bCBiZSB1c2VkIGFuZCB3aGF0IGl0IHNob3VsZCBkbyAod2hpY2ggbWV0aG9kcyB3aWxsIGJlIGNh
bGxlZD8gaW4gd2hpY2ggb3JkZXI/IGhvdyBtYW55IHRpbWVzPyB3aXRoIHdoYXQgYXJndW1lbnRz
PyB3aGF0IHdpbGwgdGhleSByZXR1cm4/IGV0YykuCi0KLSoqTm90ZToqKiBJdCBpcyBlYXN5IHRv
IGNvbmZ1c2UgdGhlIHRlcm0gX2Zha2Ugb2JqZWN0c18gd2l0aCBtb2NrIG9iamVjdHMuIEZha2Vz
IGFuZCBtb2NrcyBhY3R1YWxseSBtZWFuIHZlcnkgZGlmZmVyZW50IHRoaW5ncyBpbiB0aGUgVGVz
dC1Ecml2ZW4gRGV2ZWxvcG1lbnQgKFRERCkgY29tbXVuaXR5OgotCi0gICogKipGYWtlKiogb2Jq
ZWN0cyBoYXZlIHdvcmtpbmcgaW1wbGVtZW50YXRpb25zLCBidXQgdXN1YWxseSB0YWtlIHNvbWUg
c2hvcnRjdXQgKHBlcmhhcHMgdG8gbWFrZSB0aGUgb3BlcmF0aW9ucyBsZXNzIGV4cGVuc2l2ZSks
IHdoaWNoIG1ha2VzIHRoZW0gbm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uLiBBbiBpbi1tZW1v
cnkgZmlsZSBzeXN0ZW0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBhIGZha2UuCi0gICogKipNb2Nr
cyoqIGFyZSBvYmplY3RzIHByZS1wcm9ncmFtbWVkIHdpdGggX2V4cGVjdGF0aW9uc18sIHdoaWNo
IGZvcm0gYSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBjYWxscyB0aGV5IGFyZSBleHBlY3RlZCB0byBy
ZWNlaXZlLgotCi1JZiBhbGwgdGhpcyBzZWVtcyB0b28gYWJzdHJhY3QgZm9yIHlvdSwgZG9uJ3Qg
d29ycnkgLSB0aGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBhIG1v
Y2sgYWxsb3dzIHlvdSB0byBjaGVjayB0aGUgX2ludGVyYWN0aW9uXyBiZXR3ZWVuIGl0c2VsZiBh
bmQgY29kZSB0aGF0IHVzZXMgaXQuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZmFrZXMgYW5kIG1v
Y2tzIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlciBvbmNlIHlvdSBzdGFydCB0byB1c2UgbW9ja3Mu
Ci0KLSoqR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29yayoqIChvciAqKkdvb2dsZSBNb2NrKiog
Zm9yIHNob3J0KSBpcyBhIGxpYnJhcnkgKHNvbWV0aW1lcyB3ZSBhbHNvIGNhbGwgaXQgYSAiZnJh
bWV3b3JrIiB0byBtYWtlIGl0IHNvdW5kIGNvb2wpIGZvciBjcmVhdGluZyBtb2NrIGNsYXNzZXMg
YW5kIHVzaW5nIHRoZW0uIEl0IGRvZXMgdG8gQysrIHdoYXQgW2pNb2NrXShodHRwOi8vd3d3Lmpt
b2NrLm9yZy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2sub3JnLykgZG8gdG8g
SmF2YS4KLQotVXNpbmcgR29vZ2xlIE1vY2sgaW52b2x2ZXMgdGhyZWUgYmFzaWMgc3RlcHM6Ci0K
LSAgMS4gVXNlIHNvbWUgc2ltcGxlIG1hY3JvcyB0byBkZXNjcmliZSB0aGUgaW50ZXJmYWNlIHlv
dSB3YW50IHRvIG1vY2ssIGFuZCB0aGV5IHdpbGwgZXhwYW5kIHRvIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiB5b3VyIG1vY2sgY2xhc3M7Ci0gIDEuIENyZWF0ZSBzb21lIG1vY2sgb2JqZWN0cyBhbmQg
c3BlY2lmeSBpdHMgZXhwZWN0YXRpb25zIGFuZCBiZWhhdmlvciB1c2luZyBhbiBpbnR1aXRpdmUg
c3ludGF4OwotICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzLiBH
b29nbGUgTW9jayB3aWxsIGNhdGNoIGFueSB2aW9sYXRpb24gb2YgdGhlIGV4cGVjdGF0aW9ucyBh
cyBzb29uIGFzIGl0IGFyaXNlcy4KLQotIyBXaHkgR29vZ2xlIE1vY2s/ICMKLVdoaWxlIG1vY2sg
b2JqZWN0cyBoZWxwIHlvdSByZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jaWVzIGluIHRlc3Rz
IGFuZCBtYWtlIHRoZW0gZmFzdCBhbmQgcmVsaWFibGUsIHVzaW5nIG1vY2tzIG1hbnVhbGx5IGlu
IEMrKyBpcyBfaGFyZF86Ci0KLSAgKiBTb21lb25lIGhhcyB0byBpbXBsZW1lbnQgdGhlIG1vY2tz
LiBUaGUgam9iIGlzIHVzdWFsbHkgdGVkaW91cyBhbmQgZXJyb3ItcHJvbmUuIE5vIHdvbmRlciBw
ZW9wbGUgZ28gZ3JlYXQgZGlzdGFuY2UgdG8gYXZvaWQgaXQuCi0gICogVGhlIHF1YWxpdHkgb2Yg
dGhvc2UgbWFudWFsbHkgd3JpdHRlbiBtb2NrcyBpcyBhIGJpdCwgdWgsIHVucHJlZGljdGFibGUu
IFlvdSBtYXkgc2VlIHNvbWUgcmVhbGx5IHBvbGlzaGVkIG9uZXMsIGJ1dCB5b3UgbWF5IGFsc28g
c2VlIHNvbWUgdGhhdCB3ZXJlIGhhY2tlZCB1cCBpbiBhIGh1cnJ5IGFuZCBoYXZlIGFsbCBzb3J0
cyBvZiBhZCBob2MgcmVzdHJpY3Rpb25zLgotICAqIFRoZSBrbm93bGVkZ2UgeW91IGdhaW5lZCBm
cm9tIHVzaW5nIG9uZSBtb2NrIGRvZXNuJ3QgdHJhbnNmZXIgdG8gdGhlIG5leHQuCi0KLUluIGNv
bnRyYXN0LCBKYXZhIGFuZCBQeXRob24gcHJvZ3JhbW1lcnMgaGF2ZSBzb21lIGZpbmUgbW9jayBm
cmFtZXdvcmtzLCB3aGljaCBhdXRvbWF0ZSB0aGUgY3JlYXRpb24gb2YgbW9ja3MuIEFzIGEgcmVz
dWx0LCBtb2NraW5nIGlzIGEgcHJvdmVuIGVmZmVjdGl2ZSB0ZWNobmlxdWUgYW5kIHdpZGVseSBh
ZG9wdGVkIHByYWN0aWNlIGluIHRob3NlIGNvbW11bml0aWVzLiBIYXZpbmcgdGhlIHJpZ2h0IHRv
b2wgYWJzb2x1dGVseSBtYWtlcyB0aGUgZGlmZmVyZW5jZS4KLQotR29vZ2xlIE1vY2sgd2FzIGJ1
aWx0IHRvIGhlbHAgQysrIHByb2dyYW1tZXJzLiBJdCB3YXMgaW5zcGlyZWQgYnkgW2pNb2NrXSho
dHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93d3cuZWFzeW1vY2su
b3JnLyksIGJ1dCBkZXNpZ25lZCB3aXRoIEMrKydzIHNwZWNpZmljcyBpbiBtaW5kLiBJdCBpcyB5
b3VyIGZyaWVuZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBwcm9ibGVtcyBpcyBib3RoZXJpbmcg
eW91OgotCi0gICogWW91IGFyZSBzdHVjayB3aXRoIGEgc3ViLW9wdGltYWwgZGVzaWduIGFuZCB3
aXNoIHlvdSBoYWQgZG9uZSBtb3JlIHByb3RvdHlwaW5nIGJlZm9yZSBpdCB3YXMgdG9vIGxhdGUs
IGJ1dCBwcm90b3R5cGluZyBpbiBDKysgaXMgYnkgbm8gbWVhbnMgInJhcGlkIi4KLSAgKiBZb3Vy
IHRlc3RzIGFyZSBzbG93IGFzIHRoZXkgZGVwZW5kIG9uIHRvbyBtYW55IGxpYnJhcmllcyBvciB1
c2UgZXhwZW5zaXZlIHJlc291cmNlcyAoZS5nLiBhIGRhdGFiYXNlKS4KLSAgKiBZb3VyIHRlc3Rz
IGFyZSBicml0dGxlIGFzIHNvbWUgcmVzb3VyY2VzIHRoZXkgdXNlIGFyZSB1bnJlbGlhYmxlIChl
LmcuIHRoZSBuZXR3b3JrKS4KLSAgKiBZb3Ugd2FudCB0byB0ZXN0IGhvdyB5b3VyIGNvZGUgaGFu
ZGxlcyBhIGZhaWx1cmUgKGUuZy4gYSBmaWxlIGNoZWNrc3VtIGVycm9yKSwgYnV0IGl0J3Mgbm90
IGVhc3kgdG8gY2F1c2Ugb25lLgotICAqIFlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdXIg
bW9kdWxlIGludGVyYWN0cyB3aXRoIG90aGVyIG1vZHVsZXMgaW4gdGhlIHJpZ2h0IHdheSwgYnV0
IGl0J3MgaGFyZCB0byBvYnNlcnZlIHRoZSBpbnRlcmFjdGlvbjsgdGhlcmVmb3JlIHlvdSByZXNv
cnQgdG8gb2JzZXJ2aW5nIHRoZSBzaWRlIGVmZmVjdHMgYXQgdGhlIGVuZCBvZiB0aGUgYWN0aW9u
LCB3aGljaCBpcyBhd2t3YXJkIGF0IGJlc3QuCi0gICogWW91IHdhbnQgdG8gIm1vY2sgb3V0IiB5
b3VyIGRlcGVuZGVuY2llcywgZXhjZXB0IHRoYXQgdGhleSBkb24ndCBoYXZlIG1vY2sgaW1wbGVt
ZW50YXRpb25zIHlldDsgYW5kLCBmcmFua2x5LCB5b3UgYXJlbid0IHRocmlsbGVkIGJ5IHNvbWUg
b2YgdGhvc2UgaGFuZC13cml0dGVuIG1vY2tzLgotCi1XZSBlbmNvdXJhZ2UgeW91IHRvIHVzZSBH
b29nbGUgTW9jayBhczoKLQotICAqIGEgX2Rlc2lnbl8gdG9vbCwgZm9yIGl0IGxldHMgeW91IGV4
cGVyaW1lbnQgd2l0aCB5b3VyIGludGVyZmFjZSBkZXNpZ24gZWFybHkgYW5kIG9mdGVuLiBNb3Jl
IGl0ZXJhdGlvbnMgbGVhZCB0byBiZXR0ZXIgZGVzaWducyEKLSAgKiBhIF90ZXN0aW5nXyB0b29s
IHRvIGN1dCB5b3VyIHRlc3RzJyBvdXRib3VuZCBkZXBlbmRlbmNpZXMgYW5kIHByb2JlIHRoZSBp
bnRlcmFjdGlvbiBiZXR3ZWVuIHlvdXIgbW9kdWxlIGFuZCBpdHMgY29sbGFib3JhdG9ycy4KLQot
IyBHZXR0aW5nIFN0YXJ0ZWQgIwotVXNpbmcgR29vZ2xlIE1vY2sgaXMgZWFzeSEgSW5zaWRlIHlv
dXIgQysrIHNvdXJjZSBmaWxlLCBqdXN0IGAjaW5jbHVkZWAgYDxndGVzdC9ndGVzdC5oPmAgYW5k
IGA8Z21vY2svZ21vY2suaD5gLCBhbmQgeW91IGFyZSByZWFkeSB0byBnby4KLQotIyBBIENhc2Ug
Zm9yIE1vY2sgVHVydGxlcyAjCi1MZXQncyBsb29rIGF0IGFuIGV4YW1wbGUuIFN1cHBvc2UgeW91
IGFyZSBkZXZlbG9waW5nIGEgZ3JhcGhpY3MgcHJvZ3JhbSB0aGF0IHJlbGllcyBvbiBhIExPR08t
bGlrZSBBUEkgZm9yIGRyYXdpbmcuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0IGl0IGRvZXMgdGhl
IHJpZ2h0IHRoaW5nPyBXZWxsLCB5b3UgY2FuIHJ1biBpdCBhbmQgY29tcGFyZSB0aGUgc2NyZWVu
IHdpdGggYSBnb2xkZW4gc2NyZWVuIHNuYXBzaG90LCBidXQgbGV0J3MgYWRtaXQgaXQ6IHRlc3Rz
IGxpa2UgdGhpcyBhcmUgZXhwZW5zaXZlIHRvIHJ1biBhbmQgZnJhZ2lsZSAoV2hhdCBpZiB5b3Ug
anVzdCB1cGdyYWRlZCB0byBhIHNoaW55IG5ldyBncmFwaGljcyBjYXJkIHRoYXQgaGFzIGJldHRl
ciBhbnRpLWFsaWFzaW5nPyBTdWRkZW5seSB5b3UgaGF2ZSB0byB1cGRhdGUgYWxsIHlvdXIgZ29s
ZGVuIGltYWdlcy4pLiBJdCB3b3VsZCBiZSB0b28gcGFpbmZ1bCBpZiBhbGwgeW91ciB0ZXN0cyBh
cmUgbGlrZSB0aGlzLiBGb3J0dW5hdGVseSwgeW91IGxlYXJuZWQgYWJvdXQgRGVwZW5kZW5jeSBJ
bmplY3Rpb24gYW5kIGtub3cgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvOiBpbnN0ZWFkIG9mIGhhdmlu
ZyB5b3VyIGFwcGxpY2F0aW9uIHRhbGsgdG8gdGhlIGRyYXdpbmcgQVBJIGRpcmVjdGx5LCB3cmFw
IHRoZSBBUEkgaW4gYW4gaW50ZXJmYWNlIChzYXksIGBUdXJ0bGVgKSBhbmQgY29kZSB0byB0aGF0
IGludGVyZmFjZToKLQotYGBgCi1jbGFzcyBUdXJ0bGUgewotICAuLi4KLSAgdmlydHVhbCB+VHVy
dGxlKCkge30KLSAgdmlydHVhbCB2b2lkIFBlblVwKCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgUGVu
RG93bigpID0gMDsKLSAgdmlydHVhbCB2b2lkIEZvcndhcmQoaW50IGRpc3RhbmNlKSA9IDA7Ci0g
IHZpcnR1YWwgdm9pZCBUdXJuKGludCBkZWdyZWVzKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBHb1Rv
KGludCB4LCBpbnQgeSkgPSAwOwotICB2aXJ0dWFsIGludCBHZXRYKCkgY29uc3QgPSAwOwotICB2
aXJ0dWFsIGludCBHZXRZKCkgY29uc3QgPSAwOwotfTsKLWBgYAotCi0oTm90ZSB0aGF0IHRoZSBk
ZXN0cnVjdG9yIG9mIGBUdXJ0bGVgICoqbXVzdCoqIGJlIHZpcnR1YWwsIGFzIGlzIHRoZSBjYXNl
IGZvciAqKmFsbCoqIGNsYXNzZXMgeW91IGludGVuZCB0byBpbmhlcml0IGZyb20gLSBvdGhlcndp
c2UgdGhlIGRlc3RydWN0b3Igb2YgdGhlIGRlcml2ZWQgY2xhc3Mgd2lsbCBub3QgYmUgY2FsbGVk
IHdoZW4geW91IGRlbGV0ZSBhbiBvYmplY3QgdGhyb3VnaCBhIGJhc2UgcG9pbnRlciwgYW5kIHlv
dSdsbCBnZXQgY29ycnVwdGVkIHByb2dyYW0gc3RhdGVzIGxpa2UgbWVtb3J5IGxlYWtzLikKLQot
WW91IGNhbiBjb250cm9sIHdoZXRoZXIgdGhlIHR1cnRsZSdzIG1vdmVtZW50IHdpbGwgbGVhdmUg
YSB0cmFjZSB1c2luZyBgUGVuVXAoKWAgYW5kIGBQZW5Eb3duKClgLCBhbmQgY29udHJvbCBpdHMg
bW92ZW1lbnQgdXNpbmcgYEZvcndhcmQoKWAsIGBUdXJuKClgLCBhbmQgYEdvVG8oKWAuIEZpbmFs
bHksIGBHZXRYKClgIGFuZCBgR2V0WSgpYCB0ZWxsIHlvdSB0aGUgY3VycmVudCBwb3NpdGlvbiBv
ZiB0aGUgdHVydGxlLgotCi1Zb3VyIHByb2dyYW0gd2lsbCBub3JtYWxseSB1c2UgYSByZWFsIGlt
cGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJbiB0ZXN0cywgeW91IGNhbiB1c2UgYSBt
b2NrIGltcGxlbWVudGF0aW9uIGluc3RlYWQuIFRoaXMgYWxsb3dzIHlvdSB0byBlYXNpbHkgY2hl
Y2sgd2hhdCBkcmF3aW5nIHByaW1pdGl2ZXMgeW91ciBwcm9ncmFtIGlzIGNhbGxpbmcsIHdpdGgg
d2hhdCBhcmd1bWVudHMsIGFuZCBpbiB3aGljaCBvcmRlci4gVGVzdHMgd3JpdHRlbiB0aGlzIHdh
eSBhcmUgbXVjaCBtb3JlIHJvYnVzdCAodGhleSB3b24ndCBicmVhayBiZWNhdXNlIHlvdXIgbmV3
IG1hY2hpbmUgZG9lcyBhbnRpLWFsaWFzaW5nIGRpZmZlcmVudGx5KSwgZWFzaWVyIHRvIHJlYWQg
YW5kIG1haW50YWluICh0aGUgaW50ZW50IG9mIGEgdGVzdCBpcyBleHByZXNzZWQgaW4gdGhlIGNv
ZGUsIG5vdCBpbiBzb21lIGJpbmFyeSBpbWFnZXMpLCBhbmQgcnVuIF9tdWNoLCBtdWNoIGZhc3Rl
cl8uCi0KLSMgV3JpdGluZyB0aGUgTW9jayBDbGFzcyAjCi1JZiB5b3UgYXJlIGx1Y2t5LCB0aGUg
bW9ja3MgeW91IG5lZWQgdG8gdXNlIGhhdmUgYWxyZWFkeSBiZWVuIGltcGxlbWVudGVkIGJ5IHNv
bWUgbmljZSBwZW9wbGUuIElmLCBob3dldmVyLCB5b3UgZmluZCB5b3Vyc2VsZiBpbiB0aGUgcG9z
aXRpb24gdG8gd3JpdGUgYSBtb2NrIGNsYXNzLCByZWxheCAtIEdvb2dsZSBNb2NrIHR1cm5zIHRo
aXMgdGFzayBpbnRvIGEgZnVuIGdhbWUhIChXZWxsLCBhbG1vc3QuKQotCi0jIyBIb3cgdG8gRGVm
aW5lIEl0ICMjCi1Vc2luZyB0aGUgYFR1cnRsZWAgaW50ZXJmYWNlIGFzIGV4YW1wbGUsIGhlcmUg
YXJlIHRoZSBzaW1wbGUgc3RlcHMgeW91IG5lZWQgdG8gZm9sbG93OgotCi0gIDEuIERlcml2ZSBh
IGNsYXNzIGBNb2NrVHVydGxlYCBmcm9tIGBUdXJ0bGVgLgotICAxLiBUYWtlIGEgdmlydHVhbCBm
dW5jdGlvbiBvZiBgVHVydGxlYC4gQ291bnQgaG93IG1hbnkgYXJndW1lbnRzIGl0IGhhcy4KLSAg
MS4gSW4gdGhlIGBwdWJsaWM6YCBzZWN0aW9uIG9mIHRoZSBjaGlsZCBjbGFzcywgd3JpdGUgYE1P
Q0tfTUVUSE9EbigpO2AgKG9yIGBNT0NLX0NPTlNUX01FVEhPRG4oKTtgIGlmIHlvdSBhcmUgbW9j
a2luZyBhIGBjb25zdGAgbWV0aG9kKSwgd2hlcmUgYG5gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGFy
Z3VtZW50czsgaWYgeW91IGNvdW50ZWQgd3JvbmcsIHNoYW1lIG9uIHlvdSwgYW5kIGEgY29tcGls
ZXIgZXJyb3Igd2lsbCB0ZWxsIHlvdSBzby4KLSAgMS4gTm93IGNvbWVzIHRoZSBmdW4gcGFydDog
eW91IHRha2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgY3V0LWFuZC1wYXN0ZSB0aGUgX2Z1bmN0
aW9uIG5hbWVfIGFzIHRoZSBfZmlyc3RfIGFyZ3VtZW50IHRvIHRoZSBtYWNybywgYW5kIGxlYXZl
IHdoYXQncyBsZWZ0IGFzIHRoZSBfc2Vjb25kXyBhcmd1bWVudCAoaW4gY2FzZSB5b3UncmUgY3Vy
aW91cywgdGhpcyBpcyB0aGUgX3R5cGUgb2YgdGhlIGZ1bmN0aW9uXykuCi0gIDEuIFJlcGVhdCB1
bnRpbCBhbGwgdmlydHVhbCBmdW5jdGlvbnMgeW91IHdhbnQgdG8gbW9jayBhcmUgZG9uZS4KLQot
QWZ0ZXIgdGhlIHByb2Nlc3MsIHlvdSBzaG91bGQgaGF2ZSBzb21ldGhpbmcgbGlrZToKLQotYGBg
Ci0jaW5jbHVkZSA8Z21vY2svZ21vY2suaD4gIC8vIEJyaW5ncyBpbiBHb29nbGUgTW9jay4KLWNs
YXNzIE1vY2tUdXJ0bGUgOiBwdWJsaWMgVHVydGxlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NL
X01FVEhPRDAoUGVuVXAsIHZvaWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMChQZW5Eb3duLCB2b2lkKCkp
OwotICBNT0NLX01FVEhPRDEoRm9yd2FyZCwgdm9pZChpbnQgZGlzdGFuY2UpKTsKLSAgTU9DS19N
RVRIT0QxKFR1cm4sIHZvaWQoaW50IGRlZ3JlZXMpKTsKLSAgTU9DS19NRVRIT0QyKEdvVG8sIHZv
aWQoaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRYLCBpbnQoKSk7Ci0g
IE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRZLCBpbnQoKSk7Ci19OwotYGBgCi0KLVlvdSBkb24ndCBu
ZWVkIHRvIGRlZmluZSB0aGVzZSBtb2NrIG1ldGhvZHMgc29tZXdoZXJlIGVsc2UgLSB0aGUgYE1P
Q0tfTUVUSE9EKmAgbWFjcm9zIHdpbGwgZ2VuZXJhdGUgdGhlIGRlZmluaXRpb25zIGZvciB5b3Uu
IEl0J3MgdGhhdCBzaW1wbGUhIE9uY2UgeW91IGdldCB0aGUgaGFuZyBvZiBpdCwgeW91IGNhbiBw
dW1wIG91dCBtb2NrIGNsYXNzZXMgZmFzdGVyIHRoYW4geW91ciBzb3VyY2UtY29udHJvbCBzeXN0
ZW0gY2FuIGhhbmRsZSB5b3VyIGNoZWNrLWlucy4KLQotKipUaXA6KiogSWYgZXZlbiB0aGlzIGlz
IHRvbyBtdWNoIHdvcmsgZm9yIHlvdSwgeW91J2xsIGZpbmQgdGhlCi1gZ21vY2tfZ2VuLnB5YCB0
b29sIGluIEdvb2dsZSBNb2NrJ3MgYHNjcmlwdHMvZ2VuZXJhdG9yL2AgZGlyZWN0b3J5IChjb3Vy
dGVzeSBvZiB0aGUgW2NwcGNsZWFuXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY3BwY2xlYW4v
KSBwcm9qZWN0KSB1c2VmdWwuICBUaGlzIGNvbW1hbmQtbGluZQotdG9vbCByZXF1aXJlcyB0aGF0
IHlvdSBoYXZlIFB5dGhvbiAyLjQgaW5zdGFsbGVkLiAgWW91IGdpdmUgaXQgYSBDKysgZmlsZSBh
bmQgdGhlIG5hbWUgb2YgYW4gYWJzdHJhY3QgY2xhc3MgZGVmaW5lZCBpbiBpdCwKLWFuZCBpdCB3
aWxsIHByaW50IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtb2NrIGNsYXNzIGZvciB5b3UuICBEdWUg
dG8gdGhlCi1jb21wbGV4aXR5IG9mIHRoZSBDKysgbGFuZ3VhZ2UsIHRoaXMgc2NyaXB0IG1heSBu
b3QgYWx3YXlzIHdvcmssIGJ1dAotaXQgY2FuIGJlIHF1aXRlIGhhbmR5IHdoZW4gaXQgZG9lcy4g
IEZvciBtb3JlIGRldGFpbHMsIHJlYWQgdGhlIFt1c2VyIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy9n
ZW5lcmF0b3IvUkVBRE1FKS4KLQotIyMgV2hlcmUgdG8gUHV0IEl0ICMjCi1XaGVuIHlvdSBkZWZp
bmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgd2hlcmUgdG8gcHV0IGl0cyBkZWZp
bml0aW9uLiBTb21lIHBlb3BsZSBwdXQgaXQgaW4gYSBgKl90ZXN0LmNjYC4gVGhpcyBpcyBmaW5l
IHdoZW4gdGhlIGludGVyZmFjZSBiZWluZyBtb2NrZWQgKHNheSwgYEZvb2ApIGlzIG93bmVkIGJ5
IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFtLiBPdGhlcndpc2UsIHdoZW4gdGhlIG93bmVyIG9mIGBG
b29gIGNoYW5nZXMgaXQsIHlvdXIgdGVzdCBjb3VsZCBicmVhay4gKFlvdSBjYW4ndCByZWFsbHkg
ZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5lciB0byBmaXggZXZlcnkgdGVzdCB0aGF0IHVzZXMgYEZv
b2AsIGNhbiB5b3U/KQotCi1TbywgdGhlIHJ1bGUgb2YgdGh1bWIgaXM6IGlmIHlvdSBuZWVkIHRv
IG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3duZWQgYnkgb3RoZXJzLCBkZWZpbmUgdGhlIG1vY2sgY2xh
c3MgaW4gYEZvb2AncyBwYWNrYWdlIChiZXR0ZXIsIGluIGEgYHRlc3RpbmdgIHN1Yi1wYWNrYWdl
IHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFybHkgc2VwYXJhdGUgcHJvZHVjdGlvbiBjb2RlIGFuZCB0
ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBwdXQgaXQgaW4gYSBgbW9ja19mb28uaGAuIFRoZW4gZXZl
cnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9ja19mb28uaGAgZnJvbSB0aGVpciB0ZXN0cy4gSWYgYEZv
b2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBpcyBvbmx5IG9uZSBjb3B5IG9mIGBNb2NrRm9vYCB0byBj
aGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRoYXQgZGVwZW5kIG9uIHRoZSBjaGFuZ2VkIG1ldGhvZHMg
bmVlZCB0byBiZSBmaXhlZC4KLQotQW5vdGhlciB3YXkgdG8gZG8gaXQ6IHlvdSBjYW4gaW50cm9k
dWNlIGEgdGhpbiBsYXllciBgRm9vQWRhcHRvcmAgb24gdG9wIG9mIGBGb29gIGFuZCBjb2RlIHRv
IHRoaXMgbmV3IGludGVyZmFjZS4gU2luY2UgeW91IG93biBgRm9vQWRhcHRvcmAsIHlvdSBjYW4g
YWJzb3JiIGNoYW5nZXMgaW4gYEZvb2AgbXVjaCBtb3JlIGVhc2lseS4gV2hpbGUgdGhpcyBpcyBt
b3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJlZnVsbHkgY2hvb3NpbmcgdGhlIGFkYXB0b3IgaW50ZXJm
YWNlIGNhbiBtYWtlIHlvdXIgY29kZSBlYXNpZXIgdG8gd3JpdGUgYW5kIG1vcmUgcmVhZGFibGUg
KGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBydW4pLCBhcyB5b3UgY2FuIGNob29zZSBgRm9vQWRhcHRv
cmAgdG8gZml0IHlvdXIgc3BlY2lmaWMgZG9tYWluIG11Y2ggYmV0dGVyIHRoYW4gYEZvb2AgZG9l
cy4KLQotIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAjCi1PbmNlIHlvdSBoYXZlIGEgbW9jayBjbGFz
cywgdXNpbmcgaXQgaXMgZWFzeS4gVGhlIHR5cGljYWwgd29yayBmbG93IGlzOgotCi0gIDEuIElt
cG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgZnJvbSB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSBz
dWNoIHRoYXQgeW91IGNhbiB1c2UgdGhlbSB1bnF1YWxpZmllZCAoWW91IG9ubHkgaGF2ZSB0byBk
byBpdCBvbmNlIHBlciBmaWxlLiBSZW1lbWJlciB0aGF0IG5hbWVzcGFjZXMgYXJlIGEgZ29vZCBp
ZGVhIGFuZCBnb29kIGZvciB5b3VyIGhlYWx0aC4pLgotICAxLiBDcmVhdGUgc29tZSBtb2NrIG9i
amVjdHMuCi0gIDEuIFNwZWNpZnkgeW91ciBleHBlY3RhdGlvbnMgb24gdGhlbSAoSG93IG1hbnkg
dGltZXMgd2lsbCBhIG1ldGhvZCBiZSBjYWxsZWQ/IFdpdGggd2hhdCBhcmd1bWVudHM/IFdoYXQg
c2hvdWxkIGl0IGRvPyBldGMuKS4KLSAgMS4gRXhlcmNpc2Ugc29tZSBjb2RlIHRoYXQgdXNlcyB0
aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIGV4cGVjdGVk
IG9yIHdpdGggd3JvbmcgYXJndW1lbnRzLCB5b3UnbGwgZ2V0IGFuIGVycm9yIGltbWVkaWF0ZWx5
LgotICAxLiBXaGVuIGEgbW9jayBpcyBkZXN0cnVjdGVkLCBHb29nbGUgTW9jayB3aWxsIGF1dG9t
YXRpY2FsbHkgY2hlY2sgd2hldGhlciBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBz
YXRpc2ZpZWQuCi0KLUhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLSNpbmNsdWRlICJwYXRoL3Rv
L21vY2stdHVydGxlLmgiCi0jaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KLSNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgotdXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OyAgICAgICAgICAgICAgICAgICAg
IC8vICMxCi0KLVRFU1QoUGFpbnRlclRlc3QsIENhbkRyYXdTb21ldGhpbmcpIHsKLSAgTW9ja1R1
cnRsZSB0dXJ0bGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgotICBFWFBFQ1RfQ0FM
TCh0dXJ0bGUsIFBlbkRvd24oKSkgICAgICAgICAgICAgIC8vICMzCi0gICAgICAuVGltZXMoQXRM
ZWFzdCgxKSk7Ci0KLSAgUGFpbnRlciBwYWludGVyKCZ0dXJ0bGUpOyAgICAgICAgICAgICAgICAg
ICAvLyAjNAotCi0gIEVYUEVDVF9UUlVFKHBhaW50ZXIuRHJhd0NpcmNsZSgwLCAwLCAxMCkpOwot
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICM1Ci0KLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmUg
bXVzdCBiZSBleGVjdXRlZCB0byBpbml0aWFsaXplIEdvb2dsZSBNb2NrCi0gIC8vIChhbmQgR29v
Z2xlIFRlc3QpIGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0cy4KLSAgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlTW9jaygmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAK
LQotQXMgeW91IG1pZ2h0IGhhdmUgZ3Vlc3NlZCwgdGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGBQZW5E
b3duKClgIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgYHBhaW50ZXJgIG9iamVjdCBk
aWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwgeW91ciB0ZXN0IHdpbGwgZmFpbCB3aXRoIGEgbWVzc2Fn
ZSBsaWtlIHRoaXM6Ci0KLWBgYAotcGF0aC90by9teV90ZXN0LmNjOjExOTogRmFpbHVyZQotQWN0
dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBtYXRjaCB0aGlzIGV4cGVjdGF0aW9uOgot
QWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsKLUV4cGVjdGVkOiBjYWxsZWQgYXQgbGVhc3Qgb25jZS4K
LWBgYAotCi0qKlRpcCAxOioqIElmIHlvdSBydW4gdGhlIHRlc3QgZnJvbSBhbiBFbWFjcyBidWZm
ZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+YCBvbiB0aGUgbGluZSBudW1iZXIgZGlzcGxheWVkIGlu
IHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1bXAgcmlnaHQgdG8gdGhlIGZhaWxlZCBleHBlY3RhdGlv
bi4KLQotKipUaXAgMjoqKiBJZiB5b3VyIG1vY2sgb2JqZWN0cyBhcmUgbmV2ZXIgZGVsZXRlZCwg
dGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3b24ndCBoYXBwZW4uIFRoZXJlZm9yZSBpdCdzIGEgZ29v
ZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVhayBjaGVja2VyIGluIHlvdXIgdGVzdHMgd2hlbiB5b3Ug
YWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhlYXAuCi0KLSoqSW1wb3J0YW50IG5vdGU6KiogR29vZ2xl
IE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRpb25zIHRvIGJlIHNldCAqKmJlZm9yZSoqIHRoZSBtb2Nr
IGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBvdGhlcndpc2UgdGhlIGJlaGF2aW9yIGlzICoqdW5kZWZp
bmVkKiouIEluIHBhcnRpY3VsYXIsIHlvdSBtdXN0bid0IGludGVybGVhdmUgYEVYUEVDVF9DQUxM
KClgcyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgZnVuY3Rpb25zLgotCi1UaGlzIG1lYW5zIGBFWFBF
Q1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVhZCBhcyBleHBlY3RpbmcgdGhhdCBhIGNhbGwgd2lsbCBv
Y2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5vdCB0aGF0IGEgY2FsbCBoYXMgb2NjdXJyZWQuIFdoeSBk
b2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlrZSB0aGF0PyBXZWxsLCBzcGVjaWZ5aW5nIHRoZSBleHBl
Y3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93cyBHb29nbGUgTW9jayB0byByZXBvcnQgYSB2aW9sYXRp
b24gYXMgc29vbiBhcyBpdCBhcmlzZXMsIHdoZW4gdGhlIGNvbnRleHQgKHN0YWNrIHRyYWNlLCBl
dGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBtYWtlcyBkZWJ1Z2dpbmcgbXVjaCBlYXNpZXIu
Ci0KLUFkbWl0dGVkbHksIHRoaXMgdGVzdCBpcyBjb250cml2ZWQgYW5kIGRvZXNuJ3QgZG8gbXVj
aC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0aG91dCB1c2luZyBH
b29nbGUgTW9jay4gSG93ZXZlciwgYXMgd2Ugc2hhbGwgcmV2ZWFsIHNvb24sIEdvb2dsZSBNb2Nr
IGFsbG93cyB5b3UgdG8gZG8gX211Y2ggbW9yZV8gd2l0aCB0aGUgbW9ja3MuCi0KLSMjIFVzaW5n
IEdvb2dsZSBNb2NrIHdpdGggQW55IFRlc3RpbmcgRnJhbWV3b3JrICMjCi1JZiB5b3Ugd2FudCB0
byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gR29vZ2xlIFRlc3QgKGUuZy4gW0NwcFVuaXRdKGh0
dHA6Ly9hcHBzLnNvdXJjZWZvcmdlLm5ldC9tZWRpYXdpa2kvY3BwdW5pdC9pbmRleC5waHA/dGl0
bGU9TWFpbl9QYWdlKSBvcgotW0N4eFRlc3RdKGh0dHA6Ly9jeHh0ZXN0LnRpZ3Jpcy5vcmcvKSkg
YXMgeW91ciB0ZXN0aW5nIGZyYW1ld29yaywganVzdCBjaGFuZ2UgdGhlIGBtYWluKClgIGZ1bmN0
aW9uIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHRvOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIGNhdXNlcyBHb29nbGUgTW9j
ayB0byB0aHJvdyBhbiBleGNlcHRpb24gb24gZmFpbHVyZSwKLSAgLy8gd2hpY2ggd2lsbCBiZSBp
bnRlcnByZXRlZCBieSB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIGFzIGEgdGVzdCBmYWlsdXJlLgot
ICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0cnVlOwotICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKLSAgLi4uIHdoYXRldmVyIHlvdXIg
dGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCi19Ci1gYGAKLQotVGhpcyBhcHByb2FjaCBo
YXMgYSBjYXRjaDogaXQgbWFrZXMgR29vZ2xlIE1vY2sgdGhyb3cgYW4gZXhjZXB0aW9uCi1mcm9t
IGEgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yIHNvbWV0aW1lcy4gIFdpdGggc29tZSBjb21waWxl
cnMsIHRoaXMKLXNvbWV0aW1lcyBjYXVzZXMgdGhlIHRlc3QgcHJvZ3JhbSB0byBjcmFzaC4gIFlv
dSdsbCBzdGlsbCBiZSBhYmxlIHRvCi1ub3RpY2UgdGhhdCB0aGUgdGVzdCBoYXMgZmFpbGVkLCBi
dXQgaXQncyBub3QgYSBncmFjZWZ1bCBmYWlsdXJlLgotCi1BIGJldHRlciBzb2x1dGlvbiBpcyB0
byB1c2UgR29vZ2xlIFRlc3QncwotW2V2ZW50IGxpc3RlbmVyIEFQSV0oaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlkZSNFeHRlbmRp
bmdfR29vZ2xlX1Rlc3RfYnlfSGFuZGxpbmdfVGVzdF9FdmVudHMpCi10byByZXBvcnQgYSB0ZXN0
IGZhaWx1cmUgdG8geW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm9wZXJseS4gIFlvdSdsbCBuZWVk
IHRvCi1pbXBsZW1lbnQgdGhlIGBPblRlc3RQYXJ0UmVzdWx0KClgIG1ldGhvZCBvZiB0aGUgZXZl
bnQgbGlzdGVuZXIgaW50ZXJmYWNlLCBidXQgaXQKLXNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQu
Ci0KLUlmIHRoaXMgdHVybnMgb3V0IHRvIGJlIHRvbyBtdWNoIHdvcmssIHdlIHN1Z2dlc3QgdGhh
dCB5b3Ugc3RpY2sgd2l0aAotR29vZ2xlIFRlc3QsIHdoaWNoIHdvcmtzIHdpdGggR29vZ2xlIE1v
Y2sgc2VhbWxlc3NseSAoaW4gZmFjdCwgaXQgaXMKLXRlY2huaWNhbGx5IHBhcnQgb2YgR29vZ2xl
IE1vY2suKS4gIElmIHRoZXJlIGlzIGEgcmVhc29uIHRoYXQgeW91Ci1jYW5ub3QgdXNlIEdvb2ds
ZSBUZXN0LCBwbGVhc2UgbGV0IHVzIGtub3cuCi0KLSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwot
VGhlIGtleSB0byB1c2luZyBhIG1vY2sgb2JqZWN0IHN1Y2Nlc3NmdWxseSBpcyB0byBzZXQgdGhl
IF9yaWdodCBleHBlY3RhdGlvbnNfIG9uIGl0LiBJZiB5b3Ugc2V0IHRoZSBleHBlY3RhdGlvbnMg
dG9vIHN0cmljdCwgeW91ciB0ZXN0IHdpbGwgZmFpbCBhcyB0aGUgcmVzdWx0IG9mIHVucmVsYXRl
ZCBjaGFuZ2VzLiBJZiB5b3Ugc2V0IHRoZW0gdG9vIGxvb3NlLCBidWdzIGNhbiBzbGlwIHRocm91
Z2guIFlvdSB3YW50IHRvIGRvIGl0IGp1c3QgcmlnaHQgc3VjaCB0aGF0IHlvdXIgdGVzdCBjYW4g
Y2F0Y2ggZXhhY3RseSB0aGUga2luZCBvZiBidWdzIHlvdSBpbnRlbmQgaXQgdG8gY2F0Y2guIEdv
b2dsZSBNb2NrIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVhbnMgZm9yIHlvdSB0byBkbyBpdCAi
anVzdCByaWdodC4iCi0KLSMjIEdlbmVyYWwgU3ludGF4ICMjCi1JbiBHb29nbGUgTW9jayB3ZSB1
c2UgdGhlIGBFWFBFQ1RfQ0FMTCgpYCBtYWNybyB0byBzZXQgYW4gZXhwZWN0YXRpb24gb24gYSBt
b2NrIG1ldGhvZC4gVGhlIGdlbmVyYWwgc3ludGF4IGlzOgotCi1gYGAKLUVYUEVDVF9DQUxMKG1v
Y2tfb2JqZWN0LCBtZXRob2QobWF0Y2hlcnMpKQotICAgIC5UaW1lcyhjYXJkaW5hbGl0eSkKLSAg
ICAuV2lsbE9uY2UoYWN0aW9uKQotICAgIC5XaWxsUmVwZWF0ZWRseShhY3Rpb24pOwotYGBgCi0K
LVRoZSBtYWNybyBoYXMgdHdvIGFyZ3VtZW50czogZmlyc3QgdGhlIG1vY2sgb2JqZWN0LCBhbmQg
dGhlbiB0aGUgbWV0aG9kIGFuZCBpdHMgYXJndW1lbnRzLiBOb3RlIHRoYXQgdGhlIHR3byBhcmUg
c2VwYXJhdGVkIGJ5IGEgY29tbWEgKGAsYCksIG5vdCBhIHBlcmlvZCAoYC5gKS4gKFdoeSB1c2lu
ZyBhIGNvbW1hPyBUaGUgYW5zd2VyIGlzIHRoYXQgaXQgd2FzIG5lY2Vzc2FyeSBmb3IgdGVjaG5p
Y2FsIHJlYXNvbnMuKQotCi1UaGUgbWFjcm8gY2FuIGJlIGZvbGxvd2VkIGJ5IHNvbWUgb3B0aW9u
YWwgX2NsYXVzZXNfIHRoYXQgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleHBl
Y3RhdGlvbi4gV2UnbGwgZGlzY3VzcyBob3cgZWFjaCBjbGF1c2Ugd29ya3MgaW4gdGhlIGNvbWlu
ZyBzZWN0aW9ucy4KLQotVGhpcyBzeW50YXggaXMgZGVzaWduZWQgdG8gbWFrZSBhbiBleHBlY3Rh
dGlvbiByZWFkIGxpa2UgRW5nbGlzaC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gcHJvYmFibHkgZ3Vl
c3MgdGhhdAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQRUNUX0NBTEwo
dHVydGxlLCBHZXRYKCkpCi0gICAgLlRpbWVzKDUpCi0gICAgLldpbGxPbmNlKFJldHVybigxMDAp
KQotICAgIC5XaWxsT25jZShSZXR1cm4oMTUwKSkKLSAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KDIwMCkpOwotYGBgCi0KLXNheXMgdGhhdCB0aGUgYHR1cnRsZWAgb2JqZWN0J3MgYEdldFgoKWAg
bWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZpdmUgdGltZXMsIGl0IHdpbGwgcmV0dXJuIDEwMCB0aGUg
Zmlyc3QgdGltZSwgMTUwIHRoZSBzZWNvbmQgdGltZSwgYW5kIHRoZW4gMjAwIGV2ZXJ5IHRpbWUu
IFNvbWUgcGVvcGxlIGxpa2UgdG8gY2FsbCB0aGlzIHN0eWxlIG9mIHN5bnRheCBhIERvbWFpbi1T
cGVjaWZpYyBMYW5ndWFnZSAoRFNMKS4KLQotKipOb3RlOioqIFdoeSBkbyB3ZSB1c2UgYSBtYWNy
byB0byBkbyB0aGlzPyBJdCBzZXJ2ZXMgdHdvIHB1cnBvc2VzOiBmaXJzdCBpdCBtYWtlcyBleHBl
Y3RhdGlvbnMgZWFzaWx5IGlkZW50aWZpYWJsZSAoZWl0aGVyIGJ5IGBncmVwYCBvciBieSBhIGh1
bWFuIHJlYWRlciksIGFuZCBzZWNvbmQgaXQgYWxsb3dzIEdvb2dsZSBNb2NrIHRvIGluY2x1ZGUg
dGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9uIG9mIGEgZmFpbGVkIGV4cGVjdGF0aW9uIGluIG1lc3Nh
Z2VzLCBtYWtpbmcgZGVidWdnaW5nIGVhc2llci4KLQotIyMgTWF0Y2hlcnM6IFdoYXQgQXJndW1l
bnRzIERvIFdlIEV4cGVjdD8gIyMKLVdoZW4gYSBtb2NrIGZ1bmN0aW9uIHRha2VzIGFyZ3VtZW50
cywgd2UgbXVzdCBzcGVjaWZ5IHdoYXQgYXJndW1lbnRzIHdlIGFyZSBleHBlY3Rpbmc7IGZvciBl
eGFtcGxlOgotCi1gYGAKLS8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3ZlIGZvcndhcmQgYnkg
MTAwIHVuaXRzLgotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKDEwMCkpOwotYGBgCi0KLVNv
bWV0aW1lcyB5b3UgbWF5IG5vdCB3YW50IHRvIGJlIHRvbyBzcGVjaWZpYyAoUmVtZW1iZXIgdGhh
dCB0YWxrIGFib3V0IHRlc3RzIGJlaW5nIHRvbyByaWdpZD8gT3ZlciBzcGVjaWZpY2F0aW9uIGxl
YWRzIHRvIGJyaXR0bGUgdGVzdHMgYW5kIG9ic2N1cmVzIHRoZSBpbnRlbnQgb2YgdGVzdHMuIFRo
ZXJlZm9yZSB3ZSBlbmNvdXJhZ2UgeW91IHRvIHNwZWNpZnkgb25seSB3aGF0J3MgbmVjZXNzYXJ5
IC0gbm8gbW9yZSwgbm8gbGVzcy4pLiBJZiB5b3UgY2FyZSB0byBjaGVjayB0aGF0IGBGb3J3YXJk
KClgIHdpbGwgYmUgY2FsbGVkIGJ1dCBhcmVuJ3QgaW50ZXJlc3RlZCBpbiBpdHMgYWN0dWFsIGFy
Z3VtZW50LCB3cml0ZSBgX2AgYXMgdGhlIGFyZ3VtZW50LCB3aGljaCBtZWFucyAiYW55dGhpbmcg
Z29lcyI6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0vLyBFeHBlY3RzIHRoZSB0
dXJ0bGUgdG8gbW92ZSBmb3J3YXJkLgotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKF8pKTsK
LWBgYAotCi1gX2AgaXMgYW4gaW5zdGFuY2Ugb2Ygd2hhdCB3ZSBjYWxsICoqbWF0Y2hlcnMqKi4g
QSBtYXRjaGVyIGlzIGxpa2UgYSBwcmVkaWNhdGUgYW5kIGNhbiB0ZXN0IHdoZXRoZXIgYW4gYXJn
dW1lbnQgaXMgd2hhdCB3ZSdkIGV4cGVjdC4gWW91IGNhbiB1c2UgYSBtYXRjaGVyIGluc2lkZSBg
RVhQRUNUX0NBTEwoKWAgd2hlcmV2ZXIgYSBmdW5jdGlvbiBhcmd1bWVudCBpcyBleHBlY3RlZC4K
LQotQSBsaXN0IG9mIGJ1aWx0LWluIG1hdGNoZXJzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0NoZWF0
U2hlZXRdKFYxXzVfQ2hlYXRTaGVldC5tZCkuIEZvciBleGFtcGxlLCBoZXJlJ3MgdGhlIGBHZWAg
KGdyZWF0ZXIgdGhhbiBvciBlcXVhbCkgbWF0Y2hlcjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OkdlOy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKEdlKDEwMCkpKTsKLWBgYAotCi1U
aGlzIGNoZWNrcyB0aGF0IHRoZSB0dXJ0bGUgd2lsbCBiZSB0b2xkIHRvIGdvIGZvcndhcmQgYnkg
YXQgbGVhc3QgMTAwIHVuaXRzLgotCi0jIyBDYXJkaW5hbGl0aWVzOiBIb3cgTWFueSBUaW1lcyBX
aWxsIEl0IEJlIENhbGxlZD8gIyMKLVRoZSBmaXJzdCBjbGF1c2Ugd2UgY2FuIHNwZWNpZnkgZm9s
bG93aW5nIGFuIGBFWFBFQ1RfQ0FMTCgpYCBpcyBgVGltZXMoKWAuIFdlIGNhbGwgaXRzIGFyZ3Vt
ZW50IGEgKipjYXJkaW5hbGl0eSoqIGFzIGl0IHRlbGxzIF9ob3cgbWFueSB0aW1lc18gdGhlIGNh
bGwgc2hvdWxkIG9jY3VyLiBJdCBhbGxvd3MgdXMgdG8gcmVwZWF0IGFuIGV4cGVjdGF0aW9uIG1h
bnkgdGltZXMgd2l0aG91dCBhY3R1YWxseSB3cml0aW5nIGl0IGFzIG1hbnkgdGltZXMuIE1vcmUg
aW1wb3J0YW50bHksIGEgY2FyZGluYWxpdHkgY2FuIGJlICJmdXp6eSIsIGp1c3QgbGlrZSBhIG1h
dGNoZXIgY2FuIGJlLiBUaGlzIGFsbG93cyBhIHVzZXIgdG8gZXhwcmVzcyB0aGUgaW50ZW50IG9m
IGEgdGVzdCBleGFjdGx5LgotCi1BbiBpbnRlcmVzdGluZyBzcGVjaWFsIGNhc2UgaXMgd2hlbiB3
ZSBzYXkgYFRpbWVzKDApYC4gWW91IG1heSBoYXZlIGd1ZXNzZWQgLSBpdCBtZWFucyB0aGF0IHRo
ZSBmdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBh
dCBhbGwsIGFuZCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhIEdvb2dsZSBUZXN0IGZhaWx1cmUg
d2hlbmV2ZXIgdGhlIGZ1bmN0aW9uIGlzICh3cm9uZ2Z1bGx5KSBjYWxsZWQuCi0KLVdlJ3ZlIHNl
ZW4gYEF0TGVhc3QobilgIGFzIGFuIGV4YW1wbGUgb2YgZnV6enkgY2FyZGluYWxpdGllcyBlYXJs
aWVyLiBGb3IgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gY2FyZGluYWxpdGllcyB5b3UgY2FuIHVzZSwg
c2VlIHRoZSBbQ2hlYXRTaGVldF0oVjFfNV9DaGVhdFNoZWV0Lm1kKS4KLQotVGhlIGBUaW1lcygp
YCBjbGF1c2UgY2FuIGJlIG9taXR0ZWQuICoqSWYgeW91IG9taXQgYFRpbWVzKClgLCBHb29nbGUg
TW9jayB3aWxsIGluZmVyIHRoZSBjYXJkaW5hbGl0eSBmb3IgeW91LioqIFRoZSBydWxlcyBhcmUg
ZWFzeSB0byByZW1lbWJlcjoKLQotICAqIElmICoqbmVpdGhlcioqIGBXaWxsT25jZSgpYCAqKm5v
cioqIGBXaWxsUmVwZWF0ZWRseSgpYCBpcyBpbiB0aGUgYEVYUEVDVF9DQUxMKClgLCB0aGUgaW5m
ZXJyZWQgY2FyZGluYWxpdHkgaXMgYFRpbWVzKDEpYC4KLSAgKiBJZiB0aGVyZSBhcmUgYG4gV2ls
bE9uY2UoKWAncyBidXQgKipubyoqIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDEs
IHRoZSBjYXJkaW5hbGl0eSBpcyBgVGltZXMobilgLgotICAqIElmIHRoZXJlIGFyZSBgbiBXaWxs
T25jZSgpYCdzIGFuZCAqKm9uZSoqIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDAs
IHRoZSBjYXJkaW5hbGl0eSBpcyBgVGltZXMoQXRMZWFzdChuKSlgLgotCi0qKlF1aWNrIHF1aXo6
Kiogd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBoYXBwZW4gaWYgYSBmdW5jdGlvbiBpcyBleHBlY3Rl
ZCB0byBiZSBjYWxsZWQgdHdpY2UgYnV0IGFjdHVhbGx5IGNhbGxlZCBmb3VyIHRpbWVzPwotCi0j
IyBBY3Rpb25zOiBXaGF0IFNob3VsZCBJdCBEbz8gIyMKLVJlbWVtYmVyIHRoYXQgYSBtb2NrIG9i
amVjdCBkb2Vzbid0IHJlYWxseSBoYXZlIGEgd29ya2luZyBpbXBsZW1lbnRhdGlvbj8gV2UgYXMg
dXNlcnMgaGF2ZSB0byB0ZWxsIGl0IHdoYXQgdG8gZG8gd2hlbiBhIG1ldGhvZCBpcyBpbnZva2Vk
LiBUaGlzIGlzIGVhc3kgaW4gR29vZ2xlIE1vY2suCi0KLUZpcnN0LCBpZiB0aGUgcmV0dXJuIHR5
cGUgb2YgYSBtb2NrIGZ1bmN0aW9uIGlzIGEgYnVpbHQtaW4gdHlwZSBvciBhIHBvaW50ZXIsIHRo
ZSBmdW5jdGlvbiBoYXMgYSAqKmRlZmF1bHQgYWN0aW9uKiogKGEgYHZvaWRgIGZ1bmN0aW9uIHdp
bGwganVzdCByZXR1cm4sIGEgYGJvb2xgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGBmYWxzZWAsIGFu
ZCBvdGhlciBmdW5jdGlvbnMgd2lsbCByZXR1cm4gMCkuIElmIHlvdSBkb24ndCBzYXkgYW55dGhp
bmcsIHRoaXMgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgotCi1TZWNvbmQsIGlmIGEgbW9jayBmdW5j
dGlvbiBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGFjdGlvbiwgb3IgdGhlIGRlZmF1bHQgYWN0aW9u
IGRvZXNuJ3Qgc3VpdCB5b3UsIHlvdSBjYW4gc3BlY2lmeSB0aGUgYWN0aW9uIHRvIGJlIHRha2Vu
IGVhY2ggdGltZSB0aGUgZXhwZWN0YXRpb24gbWF0Y2hlcyB1c2luZyBhIHNlcmllcyBvZiBgV2ls
bE9uY2UoKWAgY2xhdXNlcyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBgV2lsbFJlcGVhdGVkbHko
KWAuIEZvciBleGFtcGxlLAotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQ
RUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxMDApKQotICAg
IC5XaWxsT25jZShSZXR1cm4oMjAwKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDMwMCkpOwotYGBg
Ci0KLVRoaXMgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNhbGxlZCBfZXhhY3Rs
eSB0aHJlZSB0aW1lc18gKEdvb2dsZSBNb2NrIGluZmVycmVkIHRoaXMgZnJvbSBob3cgbWFueSBg
V2lsbE9uY2UoKWAgY2xhdXNlcyB3ZSd2ZSB3cml0dGVuLCBzaW5jZSB3ZSBkaWRuJ3QgZXhwbGlj
aXRseSB3cml0ZSBgVGltZXMoKWApLCBhbmQgd2lsbCByZXR1cm4gMTAwLCAyMDAsIGFuZCAzMDAg
cmVzcGVjdGl2ZWx5LgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOy4uLgotRVhQRUNU
X0NBTEwodHVydGxlLCBHZXRZKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxMDApKQotICAgIC5X
aWxsT25jZShSZXR1cm4oMjAwKSkKLSAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDMwMCkpOwot
YGBgCi0KLXNheXMgdGhhdCBgdHVydGxlLkdldFkoKWAgd2lsbCBiZSBjYWxsZWQgX2F0IGxlYXN0
IHR3aWNlXyAoR29vZ2xlIE1vY2sga25vd3MgdGhpcyBhcyB3ZSd2ZSB3cml0dGVuIHR3byBgV2ls
bE9uY2UoKWAgY2xhdXNlcyBhbmQgYSBgV2lsbFJlcGVhdGVkbHkoKWAgd2hpbGUgaGF2aW5nIG5v
IGV4cGxpY2l0IGBUaW1lcygpYCksIHdpbGwgcmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgMjAw
IHRoZSBzZWNvbmQgdGltZSwgYW5kIDMwMCBmcm9tIHRoZSB0aGlyZCB0aW1lIG9uLgotCi1PZiBj
b3Vyc2UsIGlmIHlvdSBleHBsaWNpdGx5IHdyaXRlIGEgYFRpbWVzKClgLCBHb29nbGUgTW9jayB3
aWxsIG5vdCB0cnkgdG8gaW5mZXIgdGhlIGNhcmRpbmFsaXR5IGl0c2VsZi4gV2hhdCBpZiB0aGUg
bnVtYmVyIHlvdSBzcGVjaWZpZWQgaXMgbGFyZ2VyIHRoYW4gdGhlcmUgYXJlIGBXaWxsT25jZSgp
YCBjbGF1c2VzPyBXZWxsLCBhZnRlciBhbGwgYFdpbGxPbmNlKClgcyBhcmUgdXNlZCB1cCwgR29v
Z2xlIE1vY2sgd2lsbCBkbyB0aGUgX2RlZmF1bHRfIGFjdGlvbiBmb3IgdGhlIGZ1bmN0aW9uIGV2
ZXJ5IHRpbWUgKHVubGVzcywgb2YgY291cnNlLCB5b3UgaGF2ZSBhIGBXaWxsUmVwZWF0ZWRseSgp
YC4pLgotCi1XaGF0IGNhbiB3ZSBkbyBpbnNpZGUgYFdpbGxPbmNlKClgIGJlc2lkZXMgYFJldHVy
bigpYD8gWW91IGNhbiByZXR1cm4gYSByZWZlcmVuY2UgdXNpbmcgYFJldHVyblJlZih2YXJpYWJs
ZSlgLCBvciBpbnZva2UgYSBwcmUtZGVmaW5lZCBmdW5jdGlvbiwgYW1vbmcgW290aGVyc10oVjFf
NV9DaGVhdFNoZWV0I0FjdGlvbnMubWQpLgotCi0qKkltcG9ydGFudCBub3RlOioqIFRoZSBgRVhQ
RUNUX0NBTEwoKWAgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgYWN0aW9uIGNsYXVzZSBvbmx5IG9u
Y2UsIGV2ZW4gdGhvdWdoIHRoZSBhY3Rpb24gbWF5IGJlIHBlcmZvcm1lZCBtYW55IHRpbWVzLiBU
aGVyZWZvcmUgeW91IG11c3QgYmUgY2FyZWZ1bCBhYm91dCBzaWRlIGVmZmVjdHMuIFRoZSBmb2xs
b3dpbmcgbWF5IG5vdCBkbyB3aGF0IHlvdSB3YW50OgotCi1gYGAKLWludCBuID0gMTAwOwotRVhQ
RUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0uVGltZXMoNCkKLS5XaWxsT25jZShSZXR1cm4obisr
KSk7Ci1gYGAKLQotSW5zdGVhZCBvZiByZXR1cm5pbmcgMTAwLCAxMDEsIDEwMiwgLi4uLCBjb25z
ZWN1dGl2ZWx5LCB0aGlzIG1vY2sgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIDEwMCBhcyBg
bisrYCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBTaW1pbGFybHksIGBSZXR1cm4obmV3IEZvbylg
IHdpbGwgY3JlYXRlIGEgbmV3IGBGb29gIG9iamVjdCB3aGVuIHRoZSBgRVhQRUNUX0NBTEwoKWAg
aXMgZXhlY3V0ZWQsIGFuZCB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVyIGV2ZXJ5IHRpbWUu
IElmIHlvdSB3YW50IHRoZSBzaWRlIGVmZmVjdCB0byBoYXBwZW4gZXZlcnkgdGltZSwgeW91IG5l
ZWQgdG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbiwgd2hpY2ggd2UnbGwgdGVhY2ggaW4gdGhlIFtD
b29rQm9va10oVjFfNV9Db29rQm9vay5tZCkuCi0KLVRpbWUgZm9yIGFub3RoZXIgcXVpeiEgV2hh
dCBkbyB5b3UgdGhpbmsgdGhlIGZvbGxvd2luZyBtZWFucz8KLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OlJldHVybjsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WSgpKQotLlRpbWVzKDQpCi0u
V2lsbE9uY2UoUmV0dXJuKDEwMCkpOwotYGBgCi0KLU9idmlvdXNseSBgdHVydGxlLkdldFkoKWAg
aXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZvdXIgdGltZXMuIEJ1dCBpZiB5b3UgdGhpbmsgaXQg
d2lsbCByZXR1cm4gMTAwIGV2ZXJ5IHRpbWUsIHRoaW5rIHR3aWNlISBSZW1lbWJlciB0aGF0IG9u
ZSBgV2lsbE9uY2UoKWAgY2xhdXNlIHdpbGwgYmUgY29uc3VtZWQgZWFjaCB0aW1lIHRoZSBmdW5j
dGlvbiBpcyBpbnZva2VkIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBiZSB0YWtlbiBhZnRl
cndhcmRzLiBTbyB0aGUgcmlnaHQgYW5zd2VyIGlzIHRoYXQgYHR1cnRsZS5HZXRZKClgIHdpbGwg
cmV0dXJuIDEwMCB0aGUgZmlyc3QgdGltZSwgYnV0ICoqcmV0dXJuIDAgZnJvbSB0aGUgc2Vjb25k
IHRpbWUgb24qKiwgYXMgcmV0dXJuaW5nIDAgaXMgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBgaW50
YCBmdW5jdGlvbnMuCi0KLSMjIFVzaW5nIE11bHRpcGxlIEV4cGVjdGF0aW9ucyAjIwotU28gZmFy
IHdlJ3ZlIG9ubHkgc2hvd24gZXhhbXBsZXMgd2hlcmUgeW91IGhhdmUgYSBzaW5nbGUgZXhwZWN0
YXRpb24uIE1vcmUgcmVhbGlzdGljYWxseSwgeW91J3JlIGdvaW5nIHRvIHNwZWNpZnkgZXhwZWN0
YXRpb25zIG9uIG11bHRpcGxlIG1vY2sgbWV0aG9kcywgd2hpY2ggbWF5IGJlIGZyb20gbXVsdGlw
bGUgbW9jayBvYmplY3RzLgotCi1CeSBkZWZhdWx0LCB3aGVuIGEgbW9jayBtZXRob2QgaXMgaW52
b2tlZCwgR29vZ2xlIE1vY2sgd2lsbCBzZWFyY2ggdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgKipy
ZXZlcnNlIG9yZGVyKiogdGhleSBhcmUgZGVmaW5lZCwgYW5kIHN0b3Agd2hlbiBhbiBhY3RpdmUg
ZXhwZWN0YXRpb24gdGhhdCBtYXRjaGVzIHRoZSBhcmd1bWVudHMgaXMgZm91bmQgKHlvdSBjYW4g
dGhpbmsgb2YgaXQgYXMgIm5ld2VyIHJ1bGVzIG92ZXJyaWRlIG9sZGVyIG9uZXMuIikuIElmIHRo
ZSBtYXRjaGluZyBleHBlY3RhdGlvbiBjYW5ub3QgdGFrZSBhbnkgbW9yZSBjYWxscywgeW91IHdp
bGwgZ2V0IGFuIHVwcGVyLWJvdW5kLXZpb2xhdGVkIGZhaWx1cmUuIEhlcmUncyBhbiBleGFtcGxl
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9y
d2FyZChfKSk7ICAvLyAjMQotRVhQRUNUX0NBTEwodHVydGxlLCBGb3J3YXJkKDEwKSkgIC8vICMy
Ci0gICAgLlRpbWVzKDIpOwotYGBgCi0KLUlmIGBGb3J3YXJkKDEwKWAgaXMgY2FsbGVkIHRocmVl
IHRpbWVzIGluIGEgcm93LCB0aGUgdGhpcmQgdGltZSBpdCB3aWxsIGJlIGFuIGVycm9yLCBhcyB0
aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiAoIzIpIGhhcyBiZWVuIHNhdHVyYXRlZC4gSWYs
IGhvd2V2ZXIsIHRoZSB0aGlyZCBgRm9yd2FyZCgxMClgIGNhbGwgaXMgcmVwbGFjZWQgYnkgYEZv
cndhcmQoMjApYCwgdGhlbiBpdCB3b3VsZCBiZSBPSywgYXMgbm93ICMxIHdpbGwgYmUgdGhlIG1h
dGNoaW5nIGV4cGVjdGF0aW9uLgotCi0qKlNpZGUgbm90ZToqKiBXaHkgZG9lcyBHb29nbGUgTW9j
ayBzZWFyY2ggZm9yIGEgbWF0Y2ggaW4gdGhlIF9yZXZlcnNlXyBvcmRlciBvZiB0aGUgZXhwZWN0
YXRpb25zPyBUaGUgcmVhc29uIGlzIHRoYXQgdGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNldCB1cCB0
aGUgZGVmYXVsdCBleHBlY3RhdGlvbnMgaW4gYSBtb2NrIG9iamVjdCdzIGNvbnN0cnVjdG9yIG9y
IHRoZSB0ZXN0IGZpeHR1cmUncyBzZXQtdXAgcGhhc2UgYW5kIHRoZW4gY3VzdG9taXplIHRoZSBt
b2NrIGJ5IHdyaXRpbmcgbW9yZSBzcGVjaWZpYyBleHBlY3RhdGlvbnMgaW4gdGhlIHRlc3QgYm9k
eS4gU28sIGlmIHlvdSBoYXZlIHR3byBleHBlY3RhdGlvbnMgb24gdGhlIHNhbWUgbWV0aG9kLCB5
b3Ugd2FudCB0byBwdXQgdGhlIG9uZSB3aXRoIG1vcmUgc3BlY2lmaWMgbWF0Y2hlcnMgKiphZnRl
cioqIHRoZSBvdGhlciwgb3IgdGhlIG1vcmUgc3BlY2lmaWMgcnVsZSB3b3VsZCBiZSBzaGFkb3dl
ZCBieSB0aGUgbW9yZSBnZW5lcmFsIG9uZSB0aGF0IGNvbWVzIGFmdGVyIGl0LgotCi0jIyBPcmRl
cmVkIHZzIFVub3JkZXJlZCBDYWxscyAjIwotQnkgZGVmYXVsdCwgYW4gZXhwZWN0YXRpb24gY2Fu
IG1hdGNoIGEgY2FsbCBldmVuIHRob3VnaCBhbiBlYXJsaWVyIGV4cGVjdGF0aW9uIGhhc24ndCBi
ZWVuIHNhdGlzZmllZC4gSW4gb3RoZXIgd29yZHMsIHRoZSBjYWxscyBkb24ndCBoYXZlIHRvIG9j
Y3VyIGluIHRoZSBvcmRlciB0aGUgZXhwZWN0YXRpb25zIGFyZSBzcGVjaWZpZWQuCi0KLVNvbWV0
aW1lcywgeW91IG1heSB3YW50IGFsbCB0aGUgZXhwZWN0ZWQgY2FsbHMgdG8gb2NjdXIgaW4gYSBz
dHJpY3Qgb3JkZXIuIFRvIHNheSB0aGlzIGluIEdvb2dsZSBNb2NrIGlzIGVhc3k6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOy4uLgotVEVTVChGb29UZXN0LCBEcmF3c0xpbmVT
ZWdtZW50KSB7Ci0gIC4uLgotICB7Ci0gICAgSW5TZXF1ZW5jZSBkdW1teTsKLQotICAgIEVYUEVD
VF9DQUxMKHR1cnRsZSwgUGVuRG93bigpKTsKLSAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndh
cmQoMTAwKSk7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5VcCgpKTsKLSAgfQotICBGb28o
KTsKLX0KLWBgYAotCi1CeSBjcmVhdGluZyBhbiBvYmplY3Qgb2YgdHlwZSBgSW5TZXF1ZW5jZWAs
IGFsbCBleHBlY3RhdGlvbnMgaW4gaXRzIHNjb3BlIGFyZSBwdXQgaW50byBhIF9zZXF1ZW5jZV8g
YW5kIGhhdmUgdG8gb2NjdXIgX3NlcXVlbnRpYWxseV8uIFNpbmNlIHdlIGFyZSBqdXN0IHJlbHlp
bmcgb24gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG9mIHRoaXMgb2JqZWN0IHRvIGRv
IHRoZSBhY3R1YWwgd29yaywgaXRzIG5hbWUgaXMgcmVhbGx5IGlycmVsZXZhbnQuCi0KLUluIHRo
aXMgZXhhbXBsZSwgd2UgdGVzdCB0aGF0IGBGb28oKWAgY2FsbHMgdGhlIHRocmVlIGV4cGVjdGVk
IGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgYXMgd3JpdHRlbi4gSWYgYSBjYWxsIGlzIG1hZGUgb3V0
LW9mLW9yZGVyLCBpdCB3aWxsIGJlIGFuIGVycm9yLgotCi0oV2hhdCBpZiB5b3UgY2FyZSBhYm91
dCB0aGUgcmVsYXRpdmUgb3JkZXIgb2Ygc29tZSBvZiB0aGUgY2FsbHMsIGJ1dCBub3QgYWxsIG9m
IHRoZW0/IENhbiB5b3Ugc3BlY2lmeSBhbiBhcmJpdHJhcnkgcGFydGlhbCBvcmRlcj8gVGhlIGFu
c3dlciBpcyAuLi4geWVzISBJZiB5b3UgYXJlIGltcGF0aWVudCwgdGhlIGRldGFpbHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBbQ29va0Jvb2tdKFYxXzVfQ29va0Jvb2subWQpLikKLQotIyMgQWxsIEV4
cGVjdGF0aW9ucyBBcmUgU3RpY2t5IChVbmxlc3MgU2FpZCBPdGhlcndpc2UpICMjCi1Ob3cgbGV0
J3MgZG8gYSBxdWljayBxdWl6IHRvIHNlZSBob3cgd2VsbCB5b3UgY2FuIHVzZSB0aGlzIG1vY2sg
c3R1ZmYgYWxyZWFkeS4gSG93IHdvdWxkIHlvdSB0ZXN0IHRoYXQgdGhlIHR1cnRsZSBpcyBhc2tl
ZCB0byBnbyB0byB0aGUgb3JpZ2luIF9leGFjdGx5IHR3aWNlXyAoeW91IHdhbnQgdG8gaWdub3Jl
IGFueSBvdGhlciBpbnN0cnVjdGlvbnMgaXQgcmVjZWl2ZXMpPwotCi1BZnRlciB5b3UndmUgY29t
ZSB1cCB3aXRoIHlvdXIgYW5zd2VyLCB0YWtlIGEgbG9vayBhdCBvdXJzIGFuZCBjb21wYXJlIG5v
dGVzIChzb2x2ZSBpdCB5b3Vyc2VsZiBmaXJzdCAtIGRvbid0IGNoZWF0ISk6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOy4uLgotRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKF8sIF8pKSAgLy8g
IzEKLSAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotRVhQRUNUX0NBTEwodHVydGxlLCBHb1RvKDAs
IDApKSAgLy8gIzIKLSAgICAuVGltZXMoMik7Ci1gYGAKLQotU3VwcG9zZSBgdHVydGxlLkdvVG8o
MCwgMClgIGlzIGNhbGxlZCB0aHJlZSB0aW1lcy4gSW4gdGhlIHRoaXJkIHRpbWUsIEdvb2dsZSBN
b2NrIHdpbGwgc2VlIHRoYXQgdGhlIGFyZ3VtZW50cyBtYXRjaCBleHBlY3RhdGlvbiAjMiAocmVt
ZW1iZXIgdGhhdCB3ZSBhbHdheXMgcGljayB0aGUgbGFzdCBtYXRjaGluZyBleHBlY3RhdGlvbiku
IE5vdywgc2luY2Ugd2Ugc2FpZCB0aGF0IHRoZXJlIHNob3VsZCBiZSBvbmx5IHR3byBzdWNoIGNh
bGxzLCBHb29nbGUgTW9jayB3aWxsIHJlcG9ydCBhbiBlcnJvciBpbW1lZGlhdGVseS4gVGhpcyBp
cyBiYXNpY2FsbHkgd2hhdCB3ZSd2ZSB0b2xkIHlvdSBpbiB0aGUgIlVzaW5nIE11bHRpcGxlIEV4
cGVjdGF0aW9ucyIgc2VjdGlvbiBhYm92ZS4KLQotVGhpcyBleGFtcGxlIHNob3dzIHRoYXQgKipl
eHBlY3RhdGlvbnMgaW4gR29vZ2xlIE1vY2sgYXJlICJzdGlja3kiIGJ5IGRlZmF1bHQqKiwgaW4g
dGhlIHNlbnNlIHRoYXQgdGhleSByZW1haW4gYWN0aXZlIGV2ZW4gYWZ0ZXIgd2UgaGF2ZSByZWFj
aGVkIHRoZWlyIGludm9jYXRpb24gdXBwZXIgYm91bmRzLiBUaGlzIGlzIGFuIGltcG9ydGFudCBy
dWxlIHRvIHJlbWVtYmVyLCBhcyBpdCBhZmZlY3RzIHRoZSBtZWFuaW5nIG9mIHRoZSBzcGVjLCBh
bmQgaXMgKipkaWZmZXJlbnQqKiB0byBob3cgaXQncyBkb25lIGluIG1hbnkgb3RoZXIgbW9ja2lu
ZyBmcmFtZXdvcmtzIChXaHknZCB3ZSBkbyB0aGF0PyBCZWNhdXNlIHdlIHRoaW5rIG91ciBydWxl
IG1ha2VzIHRoZSBjb21tb24gY2FzZXMgZWFzaWVyIHRvIGV4cHJlc3MgYW5kIHVuZGVyc3RhbmQu
KS4KLQotU2ltcGxlPyBMZXQncyBzZWUgaWYgeW91J3ZlIHJlYWxseSB1bmRlcnN0b29kIGl0OiB3
aGF0IGRvZXMgdGhlIGZvbGxvd2luZyBjb2RlIHNheT8KLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsKLS4uLgotZm9yIChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKLSAgRVhQRUNUX0NB
TEwodHVydGxlLCBHZXRYKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKTsKLX0KLWBg
YAotCi1JZiB5b3UgdGhpbmsgaXQgc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIGJlIGNh
bGxlZCBgbmAgdGltZXMgYW5kIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4uLiwgY29uc2VjdXRp
dmVseSwgdGhpbmsgdHdpY2UhIFRoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHdlIHNhaWQsIGV4cGVj
dGF0aW9ucyBhcmUgc3RpY2t5LiBTbywgdGhlIHNlY29uZCB0aW1lIGB0dXJ0bGUuR2V0WCgpYCBp
cyBjYWxsZWQsIHRoZSBsYXN0IChsYXRlc3QpIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQgd2ls
bCBtYXRjaCwgYW5kIHdpbGwgaW1tZWRpYXRlbHkgbGVhZCB0byBhbiAidXBwZXIgYm91bmQgZXhj
ZWVkZWQiIGVycm9yIC0gdGhpcyBwaWVjZSBvZiBjb2RlIGlzIG5vdCB2ZXJ5IHVzZWZ1bCEKLQot
T25lIGNvcnJlY3Qgd2F5IG9mIHNheWluZyB0aGF0IGB0dXJ0bGUuR2V0WCgpYCB3aWxsIHJldHVy
biAxMCwgMjAsIDMwLCAuLi4sIGlzIHRvIGV4cGxpY2l0bHkgc2F5IHRoYXQgdGhlIGV4cGVjdGF0
aW9ucyBhcmUgX25vdF8gc3RpY2t5LiBJbiBvdGhlciB3b3JkcywgdGhleSBzaG91bGQgX3JldGly
ZV8gYXMgc29vbiBhcyB0aGV5IGFyZSBzYXR1cmF0ZWQ6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Ci0uLi4KLWZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7Ci0gIEVYUEVDVF9D
QUxMKHR1cnRsZSwgR2V0WCgpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCi0gICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKLX0KLWBgYAotCi1BbmQsIHRoZXJlJ3MgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0OiBpbiB0aGlzIGNhc2UsIHdlIGV4cGVjdCB0aGUgY2FsbHMgdG8gb2NjdXIgaW4g
YSBzcGVjaWZpYyBvcmRlciwgYW5kIHdlIGxpbmUgdXAgdGhlIGFjdGlvbnMgdG8gbWF0Y2ggdGhl
IG9yZGVyLiBTaW5jZSB0aGUgb3JkZXIgaXMgaW1wb3J0YW50IGhlcmUsIHdlIHNob3VsZCBtYWtl
IGl0IGV4cGxpY2l0IHVzaW5nIGEgc2VxdWVuY2U6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJ
blNlcXVlbmNlOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLXsKLSAgSW5TZXF1ZW5j
ZSBzOwotCi0gIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewotICAgIEVYUEVDVF9DQUxM
KHR1cnRsZSwgR2V0WCgpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEwKmkpKQotICAgICAg
ICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICB9Ci19Ci1gYGAKLQotQnkgdGhlIHdheSwgdGhl
IG90aGVyIHNpdHVhdGlvbiB3aGVyZSBhbiBleHBlY3RhdGlvbiBtYXkgX25vdF8gYmUgc3RpY2t5
IGlzIHdoZW4gaXQncyBpbiBhIHNlcXVlbmNlIC0gYXMgc29vbiBhcyBhbm90aGVyIGV4cGVjdGF0
aW9uIHRoYXQgY29tZXMgYWZ0ZXIgaXQgaW4gdGhlIHNlcXVlbmNlIGhhcyBiZWVuIHVzZWQsIGl0
IGF1dG9tYXRpY2FsbHkgcmV0aXJlcyAoYW5kIHdpbGwgbmV2ZXIgYmUgdXNlZCB0byBtYXRjaCBh
bnkgY2FsbCkuCi0KLSMjIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKLUEgbW9jayBvYmplY3QgbWF5
IGhhdmUgbWFueSBtZXRob2RzLCBhbmQgbm90IGFsbCBvZiB0aGVtIGFyZSB0aGF0IGludGVyZXN0
aW5nLiBGb3IgZXhhbXBsZSwgaW4gc29tZSB0ZXN0cyB3ZSBtYXkgbm90IGNhcmUgYWJvdXQgaG93
IG1hbnkgdGltZXMgYEdldFgoKWAgYW5kIGBHZXRZKClgIGdldCBjYWxsZWQuCi0KLUluIEdvb2ds
ZSBNb2NrLCBpZiB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGEgbWV0aG9kLCBqdXN0IGRvbid0
IHNheSBhbnl0aGluZyBhYm91dCBpdC4gSWYgYSBjYWxsIHRvIHRoaXMgbWV0aG9kIG9jY3Vycywg
eW91J2xsIHNlZSBhIHdhcm5pbmcgaW4gdGhlIHRlc3Qgb3V0cHV0LCBidXQgaXQgd29uJ3QgYmUg
YSBmYWlsdXJlLgotCi0jIFdoYXQgTm93PyAjCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBsZWFy
bmVkIGVub3VnaCBhYm91dCBHb29nbGUgTW9jayB0byBzdGFydCB1c2luZyBpdC4gTm93LCB5b3Ug
bWlnaHQgd2FudCB0byBqb2luIHRoZSBbZ29vZ2xlbW9ja10oaHR0cDovL2dyb3Vwcy5nb29nbGUu
Y29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24gZ3JvdXAgYW5kIGFjdHVhbGx5IHdyaXRl
IHNvbWUgdGVzdHMgdXNpbmcgR29vZ2xlIE1vY2sgLSBpdCB3aWxsIGJlIGZ1bi4gSGV5LCBpdCBt
YXkgZXZlbiBiZSBhZGRpY3RpdmUgLSB5b3UndmUgYmVlbiB3YXJuZWQuCi0KLVRoZW4sIGlmIHlv
dSBmZWVsIGxpa2UgaW5jcmVhc2luZyB5b3VyIG1vY2sgcXVvdGllbnQsIHlvdSBzaG91bGQgbW92
ZSBvbiB0byB0aGUgW0Nvb2tCb29rXShWMV81X0Nvb2tCb29rLm1kKS4gWW91IGNhbiBsZWFybiBt
YW55IGFkdmFuY2VkIGZlYXR1cmVzIG9mIEdvb2dsZSBNb2NrIHRoZXJlIC0tIGFuZCBhZHZhbmNl
IHlvdXIgbGV2ZWwgb2YgZW5qb3ltZW50IGFuZCB0ZXN0aW5nIGJsaXNzLgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNS9GcmVxdWVu
dGx5QXNrZWRRdWVzdGlvbnMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTkzMjQzYzNh
ZjguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzUvRnJlcXVlbnRseUFz
a2VkUXVlc3Rpb25zLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNjI0ICswLDAgQEAKLQotCi1QbGVh
c2Ugc2VuZCB5b3VyIHF1ZXN0aW9ucyB0byB0aGUKLVtnb29nbGVtb2NrXShodHRwOi8vZ3JvdXBz
Lmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jaykgZGlzY3Vzc2lvbgotZ3JvdXAuIElmIHlvdSBu
ZWVkIGhlbHAgd2l0aCBjb21waWxlciBlcnJvcnMsIG1ha2Ugc3VyZSB5b3UgaGF2ZQotdHJpZWQg
W0dvb2dsZSBNb2NrIERvY3Rvcl0oI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vfb2Zf
dGhlc2VfaG9ycmlibGVfdGVtcGxhdGVfZXJyb3IubWQpIGZpcnN0LgotCi0jIyBJIHdyb3RlIHNv
bWUgbWF0Y2hlcnMuICBBZnRlciBJIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24gb2YgR29vZ2xl
IE1vY2ssIHRoZXkgbm8gbG9uZ2VyIGNvbXBpbGUuICBXaGF0J3MgZ29pbmcgb24/ICMjCi0KLUFm
dGVyIHZlcnNpb24gMS40LjAgb2YgR29vZ2xlIE1vY2sgd2FzIHJlbGVhc2VkLCB3ZSBoYWQgYW4g
aWRlYSBvbiBob3cKLXRvIG1ha2UgaXQgZWFzaWVyIHRvIHdyaXRlIG1hdGNoZXJzIHRoYXQgY2Fu
IGdlbmVyYXRlIGluZm9ybWF0aXZlCi1tZXNzYWdlcyBlZmZpY2llbnRseS4gIFdlIGV4cGVyaW1l
bnRlZCB3aXRoIHRoaXMgaWRlYSBhbmQgbGlrZWQgd2hhdAotd2Ugc2F3LiAgVGhlcmVmb3JlIHdl
IGRlY2lkZWQgdG8gaW1wbGVtZW50IGl0LgotCi1VbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRo
YXQgaWYgeW91IGhhdmUgZGVmaW5lZCB5b3VyIG93biBtYXRjaGVycwotYnkgaW1wbGVtZW50aW5n
IGBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYCwK
LXlvdXIgZGVmaW5pdGlvbnMgd2lsbCBubyBsb25nZXIgY29tcGlsZS4gIE1hdGNoZXJzIGRlZmlu
ZWQgdXNpbmcgdGhlCi1gTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgYXJlIG5vdCBhZmZlY3Rl
ZC4KLQotU29ycnkgZm9yIHRoZSBoYXNzbGUgaWYgeW91ciBtYXRjaGVycyBhcmUgYWZmZWN0ZWQu
ICBXZSBiZWxpZXZlIGl0J3MKLWluIGV2ZXJ5b25lJ3MgbG9uZy10ZXJtIGludGVyZXN0IHRvIG1h
a2UgdGhpcyBjaGFuZ2Ugc29vbmVyIHRoYW4KLWxhdGVyLiAgRm9ydHVuYXRlbHksIGl0J3MgdXN1
YWxseSBub3QgaGFyZCB0byBtaWdyYXRlIGFuIGV4aXN0aW5nCi1tYXRjaGVyIHRvIHRoZSBuZXcg
QVBJLiAgSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0KLUlmIHlvdSB3cm90ZSB5b3VyIG1h
dGNoZXIgbGlrZSB0aGlzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9l
c24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1
YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1
YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0K
LSAgLi4uCi19OwotYGBgCi0KLXlvdSdsbCBuZWVkIHRvIGNoYW5nZSBpdCB0bzoKLWBgYAotLy8g
TmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUg
TW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGlu
Zzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICByZXR1cm4gdmFsdWUuR2V0
Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotKGkuZS4gcmVuYW1lIGBNYXRjaGVzKClg
IHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kIGdpdmUgaXQgYSBzZWNvbmQKLWFyZ3VtZW50IG9m
IHR5cGUgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYC4pCi0KLUlmIHlvdSB3ZXJlIGFsc28gdXNpbmcg
YEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvIGltcHJvdmUgdGhlIG1hdGNoZXIKLW1lc3NhZ2U6
Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0
aGUgbGFzdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRl
cmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50
ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBNYXRjaGVz
KE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRj
aGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLQotICB2aXJ0dWFsIHZv
aWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgLy8gUHJp
bnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gICAgLy8gYSB1c2Vy
IHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gpLgotICAgICpv
cyA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOwotICB9Ci0gIC4u
LgotfTsKLWBgYAotCi15b3Ugc2hvdWxkIG1vdmUgdGhlIGxvZ2ljIG9mIGBFeHBsYWluTWF0Y2hS
ZXN1bHRUbygpYCBpbnRvCi1gTWF0Y2hBbmRFeHBsYWluKClgLCB1c2luZyB0aGUgYE1hdGNoUmVz
dWx0TGlzdGVuZXJgIGFyZ3VtZW50IHdoZXJlCi10aGUgYDo6c3RkOjpvc3RyZWFtYCB3YXMgdXNl
ZDoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtzIHdpdGggdGhlIGxh
dGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVz
aW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xhc3MgTXlXb25kZXJm
dWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgot
ICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICAqbGlz
dGVuZXIgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRGb28oKTsKLSAgICBy
ZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAotCi1JZiB5b3Vy
IG1hdGNoZXIgaXMgZGVmaW5lZCB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYDoKLWBg
YAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBs
YXRlc3QKLS8vIEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNN
YXRjaGVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAg
Ym9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0g
IC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4u
LgotYGBgCi0KLXlvdSBzaG91bGQgcmVuYW1lIHRoZSBgTWF0Y2hlcygpYCBtZXRob2QgdG8gYE1h
dGNoQW5kRXhwbGFpbigpYCBhbmQKLWFkZCBhIGBNYXRjaFJlc3VsdExpc3RlbmVyKmAgYXJndW1l
bnQgKHRoZSBzYW1lIGFzIHdoYXQgeW91IG5lZWQgdG8gZG8KLWZvciBtYXRjaGVycyBkZWZpbmVk
IGJ5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFjZWApOgotYGBgCi0vLyBOZXcgbWF0Y2hl
ciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNp
bmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpN
YXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGlj
OgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRC
YXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15
R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUlmIHlvdXIgcG9seW1vcnBoaWMgbWF0Y2hlciB1
c2VzIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBmb3IgYmV0dGVyCi1mYWlsdXJlIG1lc3NhZ2Vz
OgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGgg
dGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9y
cGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4u
LgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0
cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0g
IH0KLSAgLi4uCi19Owotdm9pZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhjb25zdCBNeUdyZWF0TWF0
Y2hlciYgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUeXBlIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgLy8gUHJp
bnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBvcyB0byBoZWxwCi0gIC8vIGEgdXNlciB1
bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBkb2Vzbid0IG1hdGNoKS4KLSAgKm9zIDw8
ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0QmFyKCk7Ci19Ci0uLi4gTWFrZVBv
bHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigpKSAuLi4KLWBgYAotCi15b3UnbGwgbmVl
ZCB0byBtb3ZlIHRoZSBsb2dpYyBpbnNpZGUgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvCi1g
TWF0Y2hBbmRFeHBsYWluKClgOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQg
d29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtl
UG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVy
OwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBN
YXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8PCAidGhlIEJhciBwcm9wZXJ0eSBpcyAi
IDw8IHZhbHVlLkdldEJhcigpOwotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9
Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkp
IC4uLgotYGBgCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uLCB5b3UgY2FuIHJlYWQgdGhlc2UKLVt0
d29dKFYxXzVfQ29va0Jvb2sjV3JpdGluZ19OZXdfTW9ub21vcnBoaWNfTWF0Y2hlcnMubWQpCi1b
cmVjaXBlc10oVjFfNV9Db29rQm9vayNXcml0aW5nX05ld19Qb2x5bW9ycGhpY19NYXRjaGVycy5t
ZCkKLWZyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UKLWFyZSB3ZWxjb21lIHRvIHBv
c3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdQotbmVl
ZCBhbnkgaGVscC4KLQotIyMgV2hlbiB1c2luZyBHb29nbGUgTW9jaywgZG8gSSBoYXZlIHRvIHVz
ZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/ICBJIGhhdmUgbXkgZmF2b3Jp
dGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8gc3dpdGNoLiAjIwotCi1Hb29n
bGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2dsZSBUZXN0LiAgSG93ZXZlciwg
aXQncyBlYXN5Ci10byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRoIGFueSB0ZXN0aW5nIGZyYW1l
d29yayBvZiB5b3VyIGNob2ljZS4KLVtIZXJlXShWMV81X0ZvckR1bW1pZXMjVXNpbmdfR29vZ2xl
X01vY2tfd2l0aF9BbnlfVGVzdGluZ19GcmFtZXdvcmsubWQpIGlzIGhvdy4KLQotIyMgSG93IGFt
IEkgc3VwcG9zZWQgdG8gbWFrZSBzZW5zZSBvZiB0aGVzZSBob3JyaWJsZSB0ZW1wbGF0ZSBlcnJv
cnM/ICMjCi0KLUlmIHlvdSBhcmUgY29uZnVzZWQgYnkgdGhlIGNvbXBpbGVyIGVycm9ycyBnY2Mg
dGhyZXcgYXQgeW91LAotdHJ5IGNvbnN1bHRpbmcgdGhlIF9Hb29nbGUgTW9jayBEb2N0b3JfIHRv
b2wgZmlyc3QuICBXaGF0IGl0IGRvZXMgaXMgdG8KLXNjYW4gc3RkaW4gZm9yIGdjYyBlcnJvciBt
ZXNzYWdlcywgYW5kIHNwaXQgb3V0IGRpYWdub3NlcyBvbiB0aGUKLXByb2JsZW1zICh3ZSBjYWxs
IHRoZW0gZGlzZWFzZXMpIHlvdXIgY29kZSBoYXMuCi0KLVRvICJpbnN0YWxsIiwgcnVuIGNvbW1h
bmQ6Ci1gYGAKLWFsaWFzIGdtZD0nPHBhdGggdG8gZ29vZ2xlbW9jaz4vc2NyaXB0cy9nbW9ja19k
b2N0b3IucHknCi1gYGAKLQotVG8gdXNlIGl0LCBkbzoKLWBgYAotPHlvdXItZmF2b3JpdGUtYnVp
bGQtY29tbWFuZD4gPHlvdXItdGVzdD4gMj4mMSB8IGdtZAotYGBgCi0KLUZvciBleGFtcGxlOgot
YGBgCi1tYWtlIG15X3Rlc3QgMj4mMSB8IGdtZAotYGBgCi0KLU9yIHlvdSBjYW4gcnVuIGBnbWRg
IGFuZCBjb3B5LW4tcGFzdGUgZ2NjJ3MgZXJyb3IgbWVzc2FnZXMgdG8gaXQuCi0KLSMjIENhbiBJ
IG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbj8gIyMKLQotWW91IGNhbm5vdCBtb2NrIGEgdmFyaWFk
aWMgZnVuY3Rpb24gKGkuZS4gYSBmdW5jdGlvbiB0YWtpbmcgZWxsaXBzaXMKLShgLi4uYCkgYXJn
dW1lbnRzKSBkaXJlY3RseSBpbiBHb29nbGUgTW9jay4KLQotVGhlIHByb2JsZW0gaXMgdGhhdCBp
biBnZW5lcmFsLCB0aGVyZSBpcyBfbm8gd2F5XyBmb3IgYSBtb2NrIG9iamVjdCB0bwota25vdyBo
b3cgbWFueSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdmFyaWFkaWMgbWV0aG9kLCBhbmQg
d2hhdAotdGhlIGFyZ3VtZW50cycgdHlwZXMgYXJlLiAgT25seSB0aGUgX2F1dGhvciBvZiB0aGUg
YmFzZSBjbGFzc18ga25vd3MKLXRoZSBwcm90b2NvbCwgYW5kIHdlIGNhbm5vdCBsb29rIGludG8g
aGlzIGhlYWQuCi0KLVRoZXJlZm9yZSwgdG8gbW9jayBzdWNoIGEgZnVuY3Rpb24sIHRoZSBfdXNl
cl8gbXVzdCB0ZWFjaCB0aGUgbW9jawotb2JqZWN0IGhvdyB0byBmaWd1cmUgb3V0IHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIGFuZCB0aGVpciB0eXBlcy4gIE9uZQotd2F5IHRvIGRvIGl0IGlzIHRv
IHByb3ZpZGUgb3ZlcmxvYWRlZCB2ZXJzaW9ucyBvZiB0aGUgZnVuY3Rpb24uCi0KLUVsbGlwc2lz
IGFyZ3VtZW50cyBhcmUgaW5oZXJpdGVkIGZyb20gQyBhbmQgbm90IHJlYWxseSBhIEMrKyBmZWF0
dXJlLgotVGhleSBhcmUgdW5zYWZlIHRvIHVzZSBhbmQgZG9uJ3Qgd29yayB3aXRoIGFyZ3VtZW50
cyB0aGF0IGhhdmUKLWNvbnN0cnVjdG9ycyBvciBkZXN0cnVjdG9ycy4gIFRoZXJlZm9yZSB3ZSBy
ZWNvbW1lbmQgdG8gYXZvaWQgdGhlbSBpbgotQysrIGFzIG11Y2ggYXMgcG9zc2libGUuCi0KLSMj
IE1TVkMgZ2l2ZXMgbWUgd2FybmluZyBDNDMwMSBvciBDNDM3MyB3aGVuIEkgZGVmaW5lIGEgbW9j
ayBtZXRob2Qgd2l0aCBhIGNvbnN0IHBhcmFtZXRlci4gIFdoeT8gIyMKLQotSWYgeW91IGNvbXBp
bGUgdGhpcyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDA1IFNQMToKLWBgYAotY2xhc3Mg
Rm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIoY29uc3QgaW50IGkpID0gMDsKLX07Ci0K
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShCYXIs
IHZvaWQoY29uc3QgaW50IGkpKTsKLX07Ci1gYGAKLVlvdSBtYXkgZ2V0IHRoZSBmb2xsb3dpbmcg
d2FybmluZzoKLWBgYAotd2FybmluZyBDNDMwMTogJ01vY2tGb286OkJhcic6IG92ZXJyaWRpbmcg
dmlydHVhbCBmdW5jdGlvbiBvbmx5IGRpZmZlcnMgZnJvbSAnRm9vOjpCYXInIGJ5IGNvbnN0L3Zv
bGF0aWxlIHF1YWxpZmllcgotYGBgCi0KLVRoaXMgaXMgYSBNU1ZDIGJ1Zy4gIFRoZSBzYW1lIGNv
ZGUgY29tcGlsZXMgZmluZSB3aXRoIGdjYyAsZm9yCi1leGFtcGxlLiAgSWYgeW91IHVzZSBWaXN1
YWwgQysrIDIwMDggU1AxLCB5b3Ugd291bGQgZ2V0IHRoZSB3YXJuaW5nOgotYGBgCi13YXJuaW5n
IEM0MzczOiAnTW9ja0Zvbzo6QmFyJzogdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZXMgJ0Zvbzo6
QmFyJywgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3ZlcnJpZGUg
d2hlbiBwYXJhbWV0ZXJzIG9ubHkgZGlmZmVyZWQgYnkgY29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVy
cwotYGBgCi0KLUluIEMrKywgaWYgeW91IF9kZWNsYXJlXyBhIGZ1bmN0aW9uIHdpdGggYSBgY29u
c3RgIHBhcmFtZXRlciwgdGhlCi1gY29uc3RgIG1vZGlmaWVyIGlzIF9pZ25vcmVkXy4gIFRoZXJl
Zm9yZSwgdGhlIGBGb29gIGJhc2UgY2xhc3MgYWJvdmUKLWlzIGVxdWl2YWxlbnQgdG86Ci1gYGAK
LWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgQmFyKGludCBpKSA9IDA7ICAvLyBp
bnQgb3IgY29uc3QgaW50PyAgTWFrZXMgbm8gZGlmZmVyZW5jZS4KLX07Ci1gYGAKLQotSW4gZmFj
dCwgeW91IGNhbiBfZGVjbGFyZV8gQmFyKCkgd2l0aCBhbiBgaW50YCBwYXJhbWV0ZXIsIGFuZCBf
ZGVmaW5lXwotaXQgd2l0aCBhIGBjb25zdCBpbnRgIHBhcmFtZXRlci4gIFRoZSBjb21waWxlciB3
aWxsIHN0aWxsIG1hdGNoIHRoZW0KLXVwLgotCi1TaW5jZSBtYWtpbmcgYSBwYXJhbWV0ZXIgYGNv
bnN0YCBpcyBtZWFuaW5nbGVzcyBpbiB0aGUgbWV0aG9kCi1fZGVjbGFyYXRpb25fLCB3ZSByZWNv
bW1lbmQgdG8gcmVtb3ZlIGl0IGluIGJvdGggYEZvb2AgYW5kIGBNb2NrRm9vYC4KLVRoYXQgc2hv
dWxkIHdvcmthcm91bmQgdGhlIFZDIGJ1Zy4KLQotTm90ZSB0aGF0IHdlIGFyZSB0YWxraW5nIGFi
b3V0IHRoZSBfdG9wLWxldmVsXyBgY29uc3RgIG1vZGlmaWVyIGhlcmUuCi1JZiB0aGUgZnVuY3Rp
b24gcGFyYW1ldGVyIGlzIHBhc3NlZCBieSBwb2ludGVyIG9yIHJlZmVyZW5jZSwgZGVjbGFyaW5n
Ci10aGUgX3BvaW50ZWVfIG9yIF9yZWZlcmVlXyBhcyBgY29uc3RgIGlzIHN0aWxsIG1lYW5pbmdm
dWwuICBGb3IKLWV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHdvIGRlY2xhcmF0aW9ucyBhcmUgX25v
dF8gZXF1aXZhbGVudDoKLWBgYAotdm9pZCBCYXIoaW50KiBwKTsgICAgICAgIC8vIE5laXRoZXIg
cCBub3IgKnAgaXMgY29uc3QuCi12b2lkIEJhcihjb25zdCBpbnQqIHApOyAgLy8gcCBpcyBub3Qg
Y29uc3QsIGJ1dCAqcCBpcy4KLWBgYAotCi0jIyBJIGhhdmUgYSBodWdlIG1vY2sgY2xhc3MsIGFu
ZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBydW5zIG91dCBvZiBtZW1vcnkgd2hlbiBjb21waWxpbmcg
aXQuICBXaGF0IGNhbiBJIGRvPyAjIwotCi1XZSd2ZSBub3RpY2VkIHRoYXQgd2hlbiB0aGUgYC9j
bHJgIGNvbXBpbGVyIGZsYWcgaXMgdXNlZCwgVmlzdWFsIEMrKwotdXNlcyA1fjYgdGltZXMgYXMg
bXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcgYSBtb2NrIGNsYXNzLiAgV2Ugc3VnZ2VzdAotdG8g
YXZvaWQgYC9jbHJgIHdoZW4gY29tcGlsaW5nIG5hdGl2ZSBDKysgbW9ja3MuCi0KLSMjIEkgY2Fu
J3QgZmlndXJlIG91dCB3aHkgR29vZ2xlIE1vY2sgdGhpbmtzIG15IGV4cGVjdGF0aW9ucyBhcmUg
bm90IHNhdGlzZmllZC4gIFdoYXQgc2hvdWxkIEkgZG8/ICMjCi0KLVlvdSBtaWdodCB3YW50IHRv
IHJ1biB5b3VyIHRlc3Qgd2l0aAotYC0tZ21vY2tfdmVyYm9zZT1pbmZvYC4gIFRoaXMgZmxhZyBs
ZXRzIEdvb2dsZSBNb2NrIHByaW50IGEgdHJhY2UKLW9mIGV2ZXJ5IG1vY2sgZnVuY3Rpb24gY2Fs
bCBpdCByZWNlaXZlcy4gIEJ5IHN0dWR5aW5nIHRoZSB0cmFjZSwKLXlvdSdsbCBnYWluIGluc2ln
aHRzIG9uIHdoeSB0aGUgZXhwZWN0YXRpb25zIHlvdSBzZXQgYXJlIG5vdCBtZXQuCi0KLSMjIEhv
dyBjYW4gSSBhc3NlcnQgdGhhdCBhIGZ1bmN0aW9uIGlzIE5FVkVSIGNhbGxlZD8gIyMKLQotYGBg
Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAuVGltZXMoMCk7Ci1gYGAKLQotIyMgSSBo
YXZlIGEgZmFpbGVkIHRlc3Qgd2hlcmUgR29vZ2xlIE1vY2sgdGVsbHMgbWUgVFdJQ0UgdGhhdCBh
IHBhcnRpY3VsYXIgZXhwZWN0YXRpb24gaXMgbm90IHNhdGlzZmllZC4gIElzbid0IHRoaXMgcmVk
dW5kYW50PyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIGRldGVjdHMgYSBmYWlsdXJlLCBpdCBwcmlu
dHMgcmVsZXZhbnQgaW5mb3JtYXRpb24KLSh0aGUgbW9jayBmdW5jdGlvbiBhcmd1bWVudHMsIHRo
ZSBzdGF0ZSBvZiByZWxldmFudCBleHBlY3RhdGlvbnMsIGFuZAotZXRjKSB0byBoZWxwIHRoZSB1
c2VyIGRlYnVnLiAgSWYgYW5vdGhlciBmYWlsdXJlIGlzIGRldGVjdGVkLCBHb29nbGUKLU1vY2sg
d2lsbCBkbyB0aGUgc2FtZSwgaW5jbHVkaW5nIHByaW50aW5nIHRoZSBzdGF0ZSBvZiByZWxldmFu
dAotZXhwZWN0YXRpb25zLgotCi1Tb21ldGltZXMgYW4gZXhwZWN0YXRpb24ncyBzdGF0ZSBkaWRu
J3QgY2hhbmdlIGJldHdlZW4gdHdvIGZhaWx1cmVzLAotYW5kIHlvdSdsbCBzZWUgdGhlIHNhbWUg
ZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRlIHR3aWNlLiAgVGhleSBhcmUKLWhvd2V2ZXIgX25vdF8g
cmVkdW5kYW50LCBhcyB0aGV5IHJlZmVyIHRvIF9kaWZmZXJlbnQgcG9pbnRzIGluIHRpbWVfLgot
VGhlIGZhY3QgdGhleSBhcmUgdGhlIHNhbWUgX2lzXyBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbi4K
LQotIyMgSSBnZXQgYSBoZWFwIGNoZWNrIGZhaWx1cmUgd2hlbiB1c2luZyBhIG1vY2sgb2JqZWN0
LCBidXQgdXNpbmcgYSByZWFsIG9iamVjdCBpcyBmaW5lLiAgV2hhdCBjYW4gYmUgd3Jvbmc/ICMj
Ci0KLURvZXMgdGhlIGNsYXNzIChob3BlZnVsbHkgYSBwdXJlIGludGVyZmFjZSkgeW91IGFyZSBt
b2NraW5nIGhhdmUgYQotdmlydHVhbCBkZXN0cnVjdG9yPwotCi1XaGVuZXZlciB5b3UgZGVyaXZl
IGZyb20gYSBiYXNlIGNsYXNzLCBtYWtlIHN1cmUgaXRzIGRlc3RydWN0b3IgaXMKLXZpcnR1YWwu
ICBPdGhlcndpc2UgQmFkIFRoaW5ncyB3aWxsIGhhcHBlbi4gIENvbnNpZGVyIHRoZSBmb2xsb3dp
bmcKLWNvZGU6Ci0KLWBgYAotY2xhc3MgQmFzZSB7Ci0gcHVibGljOgotICAvLyBOb3QgdmlydHVh
bCwgYnV0IHNob3VsZCBiZS4KLSAgfkJhc2UoKSB7IC4uLiB9Ci0gIC4uLgotfTsKLQotY2xhc3Mg
RGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0
ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLS4uLgotICBCYXNlKiBwID0gbmV3IERlcml2ZWQ7Ci0g
IC4uLgotICBkZWxldGUgcDsgIC8vIFN1cnByaXNlISB+QmFzZSgpIHdpbGwgYmUgY2FsbGVkLCBi
dXQgfkRlcml2ZWQoKSB3aWxsIG5vdAotICAgICAgICAgICAgIC8vIC0gdmFsdWVfIGlzIGxlYWtl
ZC4KLWBgYAotCi1CeSBjaGFuZ2luZyBgfkJhc2UoKWAgdG8gdmlydHVhbCwgYH5EZXJpdmVkKClg
IHdpbGwgYmUgY29ycmVjdGx5Ci1jYWxsZWQgd2hlbiBgZGVsZXRlIHBgIGlzIGV4ZWN1dGVkLCBh
bmQgdGhlIGhlYXAgY2hlY2tlcgotd2lsbCBiZSBoYXBweS4KLQotIyMgVGhlICJuZXdlciBleHBl
Y3RhdGlvbnMgb3ZlcnJpZGUgb2xkZXIgb25lcyIgcnVsZSBtYWtlcyB3cml0aW5nIGV4cGVjdGF0
aW9ucyBhd2t3YXJkLiAgV2h5IGRvZXMgR29vZ2xlIE1vY2sgZG8gdGhhdD8gIyMKLQotV2hlbiBw
ZW9wbGUgY29tcGxhaW4gYWJvdXQgdGhpcywgb2Z0ZW4gdGhleSBhcmUgcmVmZXJyaW5nIHRvIGNv
ZGUgbGlrZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0
dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLiAg
SG93ZXZlciwgSSBoYXZlIHRvIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhlCi0vLyByZXZl
cnNlIG9yZGVyLiAgVGhpcyBzdWNrcyBiaWcgdGltZSEhIQotRVhQRUNUX0NBTEwoZm9vLCBCYXIo
KSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAg
LlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkg
ZGlkbid0IHBpY2sgdGhlICoqYmVzdCoqIHdheSB0byBleHByZXNzIHRoZSB0ZXN0J3MKLWludGVu
dC4KLQotQnkgZGVmYXVsdCwgZXhwZWN0YXRpb25zIGRvbid0IGhhdmUgdG8gYmUgbWF0Y2hlZCBp
biBfYW55XyBwYXJ0aWN1bGFyCi1vcmRlci4gIElmIHlvdSB3YW50IHRoZW0gdG8gbWF0Y2ggaW4g
YSBjZXJ0YWluIG9yZGVyLCB5b3UgbmVlZCB0byBiZQotZXhwbGljaXQuICBUaGlzIGlzIEdvb2ds
ZSBNb2NrJ3MgKGFuZCBqTW9jaydzKSBmdW5kYW1lbnRhbCBwaGlsb3NvcGh5OiBpdCdzCi1lYXN5
IHRvIGFjY2lkZW50YWxseSBvdmVyLXNwZWNpZnkgeW91ciB0ZXN0cywgYW5kIHdlIHdhbnQgdG8g
bWFrZSBpdAotaGFyZGVyIHRvIGRvIHNvLgotCi1UaGVyZSBhcmUgdHdvIGJldHRlciB3YXlzIHRv
IHdyaXRlIHRoZSB0ZXN0IHNwZWMuICBZb3UgY291bGQgZWl0aGVyCi1wdXQgdGhlIGV4cGVjdGF0
aW9ucyBpbiBzZXF1ZW5jZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0
d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29u
ZCB0aW1lLiAgVXNpbmcgYSBzZXF1ZW5jZSwgd2UgY2FuIHdyaXRlIHRoZSBleHBlY3RhdGlvbnMK
LS8vIGluIHRoZWlyIG5hdHVyYWwgb3JkZXIuCi17Ci0gIEluU2VxdWVuY2UgczsKLSAgRVhQRUNU
X0NBTEwoZm9vLCBCYXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuUmV0
aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgICAgLldp
bGxPbmNlKFJldHVybigyKSkKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAK
LQotb3IgeW91IGNhbiBwdXQgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgaW4gdGhlIHNhbWUgZXhw
ZWN0YXRpb246Ci0KLWBgYAotLy8gZm9vLkJhcigpIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UsIHJl
dHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJuCi0vLyAyIHRoZSBzZWNvbmQgdGltZS4K
LUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAu
V2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1gYGAKLQot
QmFjayB0byB0aGUgb3JpZ2luYWwgcXVlc3Rpb25zOiB3aHkgZG9lcyBHb29nbGUgTW9jayBzZWFy
Y2ggdGhlCi1leHBlY3RhdGlvbnMgKGFuZCBgT05fQ0FMTGBzKSBmcm9tIGJhY2sgdG8gZnJvbnQ/
ICBCZWNhdXNlIHRoaXMKLWFsbG93cyBhIHVzZXIgdG8gc2V0IHVwIGEgbW9jaydzIGJlaGF2aW9y
IGZvciB0aGUgY29tbW9uIGNhc2UgZWFybHkKLShlLmcuIGluIHRoZSBtb2NrJ3MgY29uc3RydWN0
b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBwaGFzZSkKLWFuZCBjdXN0b21pemUgaXQg
d2l0aCBtb3JlIHNwZWNpZmljIHJ1bGVzIGxhdGVyLiAgSWYgR29vZ2xlIE1vY2sKLXNlYXJjaGVz
IGZyb20gZnJvbnQgdG8gYmFjaywgdGhpcyB2ZXJ5IHVzZWZ1bCBwYXR0ZXJuIHdvbid0IGJlCi1w
b3NzaWJsZS4KLQotIyMgR29vZ2xlIE1vY2sgcHJpbnRzIGEgd2FybmluZyB3aGVuIGEgZnVuY3Rp
b24gd2l0aG91dCBFWFBFQ1RcX0NBTEwgaXMgY2FsbGVkLCBldmVuIGlmIEkgaGF2ZSBzZXQgaXRz
IGJlaGF2aW9yIHVzaW5nIE9OXF9DQUxMLiAgV291bGQgaXQgYmUgcmVhc29uYWJsZSBub3QgdG8g
c2hvdyB0aGUgd2FybmluZyBpbiB0aGlzIGNhc2U/ICMjCi0KLVdoZW4gY2hvb3NpbmcgYmV0d2Vl
biBiZWluZyBuZWF0IGFuZCBiZWluZyBzYWZlLCB3ZSBsZWFuIHRvd2FyZCB0aGUKLWxhdHRlci4g
IFNvIHRoZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0aGluayBpdCdzIGJldHRlciB0byBzaG93IHRoZQot
d2FybmluZy4KLQotT2Z0ZW4gcGVvcGxlIHdyaXRlIGBPTl9DQUxMYHMgaW4gdGhlIG1vY2sgb2Jq
ZWN0J3MKLWNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCwgYXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Ig
cmFyZWx5IGNoYW5nZXMgZnJvbQotdGVzdCB0byB0ZXN0LiAgVGhlbiBpbiB0aGUgdGVzdCBib2R5
IHRoZXkgc2V0IHRoZSBleHBlY3RhdGlvbnMsIHdoaWNoCi1hcmUgb2Z0ZW4gZGlmZmVyZW50IGZv
ciBlYWNoIHRlc3QuICBIYXZpbmcgYW4gYE9OX0NBTExgIGluIHRoZSBzZXQtdXAKLXBhcnQgb2Yg
YSB0ZXN0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBjYWxscyBhcmUgZXhwZWN0ZWQuICBJZiB0aGVy
ZSdzCi1ubyBgRVhQRUNUX0NBTExgIGFuZCB0aGUgbWV0aG9kIGlzIGNhbGxlZCwgaXQncyBwb3Nz
aWJseSBhbiBlcnJvci4gIElmCi13ZSBxdWlldGx5IGxldCB0aGUgY2FsbCBnbyB0aHJvdWdoIHdp
dGhvdXQgbm90aWZ5aW5nIHRoZSB1c2VyLCBidWdzCi1tYXkgY3JlZXAgaW4gdW5ub3RpY2VkLgot
Ci1JZiwgaG93ZXZlciwgeW91IGFyZSBzdXJlIHRoYXQgdGhlIGNhbGxzIGFyZSBPSywgeW91IGNh
biB3cml0ZQotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5XaWxsUmVwZWF0
ZWRseSguLi4pOwotYGBgCi0KLWluc3RlYWQgb2YKLQotYGBgCi1PTl9DQUxMKGZvbywgQmFyKF8p
KQotICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7Ci1gYGAKLQotVGhpcyB0ZWxscyBHb29nbGUgTW9j
ayB0aGF0IHlvdSBkbyBleHBlY3QgdGhlIGNhbGxzIGFuZCBubyB3YXJuaW5nIHNob3VsZCBiZQot
cHJpbnRlZC4KLQotQWxzbywgeW91IGNhbiBjb250cm9sIHRoZSB2ZXJib3NpdHkgdXNpbmcgdGhl
IGAtLWdtb2NrX3ZlcmJvc2VgIGZsYWcuCi1JZiB5b3UgZmluZCB0aGUgb3V0cHV0IHRvbyBub2lz
eSB3aGVuIGRlYnVnZ2luZywganVzdCBjaG9vc2UgYSBsZXNzCi12ZXJib3NlIGxldmVsLgotCi0j
IyBIb3cgY2FuIEkgZGVsZXRlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgaW4gYW4gYWN0
aW9uPyAjIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHBlcmZvcm0gc29tZSBh
Y3Rpb24gdGhhdCdzIG5vdAotc3VwcG9ydGVkIGJ5IEdvb2dsZSBNb2NrIGRpcmVjdGx5LCByZW1l
bWJlciB0aGF0IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duCi1hY3Rpb25zIHVzaW5nCi1bTWFrZUFj
dGlvbigpXShWMV81X0Nvb2tCb29rI1dyaXRpbmdfTmV3X0FjdGlvbnMubWQpIG9yCi1bTWFrZVBv
bHltb3JwaGljQWN0aW9uKCldKFYxXzVfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBoaWNf
QWN0aW9ucy5tZCksCi1vciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBmdW5jdGlvbiBhbmQgaW52b2tl
IGl0IHVzaW5nCi1bSW52b2tlKCldKFYxXzVfQ29va0Jvb2sjVXNpbmdfRnVuY3Rpb25zX01ldGhv
ZHNfRnVuY3RvcnMubWQpLgotCi0jIyBNT0NLXF9NRVRIT0RuKCkncyBzZWNvbmQgYXJndW1lbnQg
bG9va3MgZnVubnkuICBXaHkgZG9uJ3QgeW91IHVzZSB0aGUgTU9DS1xfTUVUSE9EbihNZXRob2Qs
IHJldHVyblxfdHlwZSwgYXJnXF8xLCAuLi4sIGFyZ1xfbikgc3ludGF4PyAjIwotCi1XaGF0PyEg
IEkgdGhpbmsgaXQncyBiZWF1dGlmdWwuIDotKQotCi1XaGlsZSB3aGljaCBzeW50YXggbG9va3Mg
bW9yZSBuYXR1cmFsIGlzIGEgc3ViamVjdGl2ZSBtYXR0ZXIgdG8gc29tZQotZXh0ZW50LCBHb29n
bGUgTW9jaydzIHN5bnRheCB3YXMgY2hvc2VuIGZvciBzZXZlcmFsIHByYWN0aWNhbCBhZHZhbnRh
Z2VzIGl0Ci1oYXMuCi0KLVRyeSB0byBtb2NrIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIG1hcCBh
cyBhbiBhcmd1bWVudDoKLWBgYAotdmlydHVhbCBpbnQgR2V0U2l6ZShjb25zdCBtYXA8aW50LCBz
dGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLVVzaW5nIHRoZSBwcm9wb3NlZCBzeW50YXgsIGl0IHdv
dWxkIGJlOgotYGBgCi1NT0NLX01FVEhPRDEoR2V0U2l6ZSwgaW50LCBjb25zdCBtYXA8aW50LCBz
dGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLUd1ZXNzIHdoYXQ/ICBZb3UnbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IgYXMgdGhlIGNvbXBpbGVyIHRoaW5rcyB0aGF0Ci1gY29uc3QgbWFwPGludCwgc3Rk
OjpzdHJpbmc+JiBtYCBhcmUgKip0d28qKiwgbm90IG9uZSwgYXJndW1lbnRzLiBUbyB3b3JrCi1h
cm91bmQgdGhpcyB5b3UgY2FuIHVzZSBgdHlwZWRlZmAgdG8gZ2l2ZSB0aGUgbWFwIHR5cGUgYSBu
YW1lLCBidXQKLXRoYXQgZ2V0cyBpbiB0aGUgd2F5IG9mIHlvdXIgd29yay4gIEdvb2dsZSBNb2Nr
J3Mgc3ludGF4IGF2b2lkcyB0aGlzCi1wcm9ibGVtIGFzIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50
IHR5cGVzIGFyZSBwcm90ZWN0ZWQgaW5zaWRlIGEgcGFpcgotb2YgcGFyZW50aGVzZXM6Ci1gYGAK
LS8vIFRoaXMgY29tcGlsZXMgZmluZS4KLU1PQ0tfTUVUSE9EMShHZXRTaXplLCBpbnQoY29uc3Qg
bWFwPGludCwgc3RkOjpzdHJpbmc+JiBtKSk7Ci1gYGAKLQotWW91IHN0aWxsIG5lZWQgYSBgdHlw
ZWRlZmAgaWYgdGhlIHJldHVybiB0eXBlIGNvbnRhaW5zIGFuIHVucHJvdGVjdGVkCi1jb21tYSwg
YnV0IHRoYXQncyBtdWNoIHJhcmVyLgotCi1PdGhlciBhZHZhbnRhZ2VzIGluY2x1ZGU6Ci0gIDEu
IGBNT0NLX01FVEhPRDEoRm9vLCBpbnQsIGJvb2wpYCBjYW4gbGVhdmUgYSByZWFkZXIgd29uZGVy
IHdoZXRoZXIgdGhlIG1ldGhvZCByZXR1cm5zIGBpbnRgIG9yIGBib29sYCwgd2hpbGUgdGhlcmUg
d29uJ3QgYmUgc3VjaCBjb25mdXNpb24gdXNpbmcgR29vZ2xlIE1vY2sncyBzeW50YXguCi0gIDEu
IFRoZSB3YXkgR29vZ2xlIE1vY2sgZGVzY3JpYmVzIGEgZnVuY3Rpb24gdHlwZSBpcyBub3RoaW5n
IG5ldywgYWx0aG91Z2ggbWFueSBwZW9wbGUgbWF5IG5vdCBiZSBmYW1pbGlhciB3aXRoIGl0LiAg
VGhlIHNhbWUgc3ludGF4IHdhcyB1c2VkIGluIEMsIGFuZCB0aGUgYGZ1bmN0aW9uYCBsaWJyYXJ5
IGluIGB0cjFgIHVzZXMgdGhpcyBzeW50YXggZXh0ZW5zaXZlbHkuICBTaW5jZSBgdHIxYCB3aWxs
IGJlY29tZSBhIHBhcnQgb2YgdGhlIG5ldyB2ZXJzaW9uIG9mIFNUTCwgd2UgZmVlbCB2ZXJ5IGNv
bWZvcnRhYmxlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBpdC4KLSAgMS4gVGhlIGZ1bmN0aW9uIHR5
cGUgc3ludGF4IGlzIGFsc28gdXNlZCBpbiBvdGhlciBwYXJ0cyBvZiBHb29nbGUgTW9jaydzIEFQ
SSAoZS5nLiB0aGUgYWN0aW9uIGludGVyZmFjZSkgaW4gb3JkZXIgdG8gbWFrZSB0aGUgaW1wbGVt
ZW50YXRpb24gdHJhY3RhYmxlLiBBIHVzZXIgbmVlZHMgdG8gbGVhcm4gaXQgYW55d2F5IGluIG9y
ZGVyIHRvIHV0aWxpemUgR29vZ2xlIE1vY2sncyBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzLiAgV2Un
ZCBhcyB3ZWxsIHN0aWNrIHRvIHRoZSBzYW1lIHN5bnRheCBpbiBgTU9DS19NRVRIT0QqYCEKLQot
IyMgTXkgY29kZSBjYWxscyBhIHN0YXRpYy9nbG9iYWwgZnVuY3Rpb24uICBDYW4gSSBtb2NrIGl0
PyAjIwotCi1Zb3UgY2FuLCBidXQgeW91IG5lZWQgdG8gbWFrZSBzb21lIGNoYW5nZXMuCi0KLUlu
IGdlbmVyYWwsIGlmIHlvdSBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gbW9jayBhIHN0YXRpYyBm
dW5jdGlvbiwKLWl0J3MgYSBzaWduIHRoYXQgeW91ciBtb2R1bGVzIGFyZSB0b28gdGlnaHRseSBj
b3VwbGVkIChhbmQgbGVzcwotZmxleGlibGUsIGxlc3MgcmV1c2FibGUsIGxlc3MgdGVzdGFibGUs
IGV0YykuICBZb3UgYXJlIHByb2JhYmx5IGJldHRlcgotb2ZmIGRlZmluaW5nIGEgc21hbGwgaW50
ZXJmYWNlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiB0aHJvdWdoIHRoYXQKLWludGVyZmFjZSwgd2hp
Y2ggdGhlbiBjYW4gYmUgZWFzaWx5IG1vY2tlZC4gIEl0J3MgYSBiaXQgb2Ygd29yawotaW5pdGlh
bGx5LCBidXQgdXN1YWxseSBwYXlzIGZvciBpdHNlbGYgcXVpY2tseS4KLQotVGhpcyBHb29nbGUg
VGVzdGluZyBCbG9nCi1bcG9zdF0oaHR0cDovL2dvb2dsZXRlc3RpbmcuYmxvZ3Nwb3QuY29tLzIw
MDgvMDYvZGVmZWF0LXN0YXRpYy1jbGluZy5odG1sKQotc2F5cyBpdCBleGNlbGxlbnRseS4gIENo
ZWNrIGl0IG91dC4KLQotIyMgTXkgbW9jayBvYmplY3QgbmVlZHMgdG8gZG8gY29tcGxleCBzdHVm
Zi4gIEl0J3MgYSBsb3Qgb2YgcGFpbiB0byBzcGVjaWZ5IHRoZSBhY3Rpb25zLiAgR29vZ2xlIE1v
Y2sgc3Vja3MhICMjCi0KLUkga25vdyBpdCdzIG5vdCBhIHF1ZXN0aW9uLCBidXQgeW91IGdldCBh
biBhbnN3ZXIgZm9yIGZyZWUgYW55IHdheS4gOi0pCi0KLVdpdGggR29vZ2xlIE1vY2ssIHlvdSBj
YW4gY3JlYXRlIG1vY2tzIGluIEMrKyBlYXNpbHkuICBBbmQgcGVvcGxlIG1pZ2h0IGJlCi10ZW1w
dGVkIHRvIHVzZSB0aGVtIGV2ZXJ5d2hlcmUuIFNvbWV0aW1lcyB0aGV5IHdvcmsgZ3JlYXQsIGFu
ZAotc29tZXRpbWVzIHlvdSBtYXkgZmluZCB0aGVtLCB3ZWxsLCBhIHBhaW4gdG8gdXNlLiBTbywg
d2hhdCdzIHdyb25nIGluCi10aGUgbGF0dGVyIGNhc2U/Ci0KLVdoZW4geW91IHdyaXRlIGEgdGVz
dCB3aXRob3V0IHVzaW5nIG1vY2tzLCB5b3UgZXhlcmNpc2UgdGhlIGNvZGUgYW5kCi1hc3NlcnQg
dGhhdCBpdCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlIG9yIHRoYXQgdGhlIHN5c3RlbSBpcyBp
biBhbgotZXhwZWN0ZWQgc3RhdGUuICBUaGlzIGlzIHNvbWV0aW1lcyBjYWxsZWQgInN0YXRlLWJh
c2VkIHRlc3RpbmciLgotCi1Nb2NrcyBhcmUgZ3JlYXQgZm9yIHdoYXQgc29tZSBjYWxsICJpbnRl
cmFjdGlvbi1iYXNlZCIgdGVzdGluZzoKLWluc3RlYWQgb2YgY2hlY2tpbmcgdGhlIHN5c3RlbSBz
dGF0ZSBhdCB0aGUgdmVyeSBlbmQsIG1vY2sgb2JqZWN0cwotdmVyaWZ5IHRoYXQgdGhleSBhcmUg
aW52b2tlZCB0aGUgcmlnaHQgd2F5IGFuZCByZXBvcnQgYW4gZXJyb3IgYXMgc29vbgotYXMgaXQg
YXJpc2VzLCBnaXZpbmcgeW91IGEgaGFuZGxlIG9uIHRoZSBwcmVjaXNlIGNvbnRleHQgaW4gd2hp
Y2ggdGhlCi1lcnJvciB3YXMgdHJpZ2dlcmVkLiAgVGhpcyBpcyBvZnRlbiBtb3JlIGVmZmVjdGl2
ZSBhbmQgZWNvbm9taWNhbCB0bwotZG8gdGhhbiBzdGF0ZS1iYXNlZCB0ZXN0aW5nLgotCi1JZiB5
b3UgYXJlIGRvaW5nIHN0YXRlLWJhc2VkIHRlc3RpbmcgYW5kIHVzaW5nIGEgdGVzdCBkb3VibGUg
anVzdCB0bwotc2ltdWxhdGUgdGhlIHJlYWwgb2JqZWN0LCB5b3UgYXJlIHByb2JhYmx5IGJldHRl
ciBvZmYgdXNpbmcgYSBmYWtlLgotVXNpbmcgYSBtb2NrIGluIHRoaXMgY2FzZSBjYXVzZXMgcGFp
biwgYXMgaXQncyBub3QgYSBzdHJvbmcgcG9pbnQgZm9yCi1tb2NrcyB0byBwZXJmb3JtIGNvbXBs
ZXggYWN0aW9ucy4gIElmIHlvdSBleHBlcmllbmNlIHRoaXMgYW5kIHRoaW5rCi10aGF0IG1vY2tz
IHN1Y2ssIHlvdSBhcmUganVzdCBub3QgdXNpbmcgdGhlIHJpZ2h0IHRvb2wgZm9yIHlvdXIKLXBy
b2JsZW0uIE9yLCB5b3UgbWlnaHQgYmUgdHJ5aW5nIHRvIHNvbHZlIHRoZSB3cm9uZyBwcm9ibGVt
LiA6LSkKLQotIyMgSSBnb3QgYSB3YXJuaW5nICJVbmludGVyZXN0aW5nIGZ1bmN0aW9uIGNhbGwg
ZW5jb3VudGVyZWQgLSBkZWZhdWx0IGFjdGlvbiB0YWtlbi4uIiAgU2hvdWxkIEkgcGFuaWM/ICMj
Ci0KLUJ5IGFsbCBtZWFucywgTk8hICBJdCdzIGp1c3QgYW4gRllJLgotCi1XaGF0IGl0IG1lYW5z
IGlzIHRoYXQgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9uLCB5b3UgaGF2ZW4ndCBzZXQgYW55Ci1l
eHBlY3RhdGlvbnMgb24gaXQgKGJ5IEdvb2dsZSBNb2NrJ3MgcnVsZSB0aGlzIG1lYW5zIHRoYXQg
eW91IGFyZSBub3QKLWludGVyZXN0ZWQgaW4gY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBhbmQgdGhl
cmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQKLWFueSBudW1iZXIgb2YgdGltZXMpLCBhbmQgaXQgaXMg
Y2FsbGVkLiAgVGhhdCdzIE9LIC0geW91IGRpZG4ndCBzYXkKLWl0J3Mgbm90IE9LIHRvIGNhbGwg
dGhlIGZ1bmN0aW9uIQotCi1XaGF0IGlmIHlvdSBhY3R1YWxseSBtZWFudCB0byBkaXNhbGxvdyB0
aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0Ci1mb3Jnb3QgdG8gd3JpdGUgYEVYUEVDVF9D
QUxMKGZvbywgQmFyKCkpLlRpbWVzKDApYD8gIFdoaWxlCi1vbmUgY2FuIGFyZ3VlIHRoYXQgaXQn
cyB0aGUgdXNlcidzIGZhdWx0LCBHb29nbGUgTW9jayB0cmllcyB0byBiZSBuaWNlIGFuZAotcHJp
bnRzIHlvdSBhIG5vdGUuCi0KLVNvLCB3aGVuIHlvdSBzZWUgdGhlIG1lc3NhZ2UgYW5kIGJlbGll
dmUgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55Ci11bmludGVyZXN0aW5nIGNhbGxzLCB5b3Ug
c2hvdWxkIGludmVzdGlnYXRlIHdoYXQncyBnb2luZyBvbi4gIFRvIG1ha2UKLXlvdXIgbGlmZSBl
YXNpZXIsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgYXJndW1lbnRz
Ci13aGVuIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBlbmNvdW50ZXJlZC4KLQotIyMgSSB3YW50
IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24uICBTaG91bGQgSSB1c2UgSW52b2tlKCkgb3IgaW1w
bGVtZW50IHRoZSBhY3Rpb24gaW50ZXJmYWNlPyAjIwotCi1FaXRoZXIgd2F5IGlzIGZpbmUgLSB5
b3Ugd2FudCB0byBjaG9vc2UgdGhlIG9uZSB0aGF0J3MgbW9yZSBjb252ZW5pZW50Ci1mb3IgeW91
ciBjaXJjdW1zdGFuY2UuCi0KLVVzdWFsbHksIGlmIHlvdXIgYWN0aW9uIGlzIGZvciBhIHBhcnRp
Y3VsYXIgZnVuY3Rpb24gdHlwZSwgZGVmaW5pbmcgaXQKLXVzaW5nIGBJbnZva2UoKWAgc2hvdWxk
IGJlIGVhc2llcjsgaWYgeW91ciBhY3Rpb24gY2FuIGJlIHVzZWQgaW4KLWZ1bmN0aW9ucyBvZiBk
aWZmZXJlbnQgdHlwZXMgKGUuZy4gaWYgeW91IGFyZSBkZWZpbmluZwotYFJldHVybih2YWx1ZSlg
KSwgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCBpcwotZWFzaWVzdC4gIFNvbWV0aW1lcyB5b3Ug
d2FudCBwcmVjaXNlIGNvbnRyb2wgb24gd2hhdCB0eXBlcyBvZgotZnVuY3Rpb25zIHRoZSBhY3Rp
b24gY2FuIGJlIHVzZWQgaW4sIGFuZCBpbXBsZW1lbnRpbmcKLWBBY3Rpb25JbnRlcmZhY2VgIGlz
IHRoZSB3YXkgdG8gZ28gaGVyZS4gU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgotYFJldHVybigp
YCBpbiBgaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25zLmhgIGZvciBhbiBleGFtcGxlLgotCi0j
IyBJJ20gdXNpbmcgdGhlIHNldC1hcmd1bWVudC1wb2ludGVlIGFjdGlvbiwgYW5kIHRoZSBjb21w
aWxlciBjb21wbGFpbnMgYWJvdXQgImNvbmZsaWN0aW5nIHJldHVybiB0eXBlIHNwZWNpZmllZCIu
ICBXaGF0IGRvZXMgaXQgbWVhbj8gIyMKLQotWW91IGdvdCB0aGlzIGVycm9yIGFzIEdvb2dsZSBN
b2NrIGhhcyBubyBpZGVhIHdoYXQgdmFsdWUgaXQgc2hvdWxkIHJldHVybgotd2hlbiB0aGUgbW9j
ayBtZXRob2QgaXMgY2FsbGVkLiAgYFNldEFyZ3VtZW50UG9pbnRlZSgpYCBzYXlzIHdoYXQgdGhl
Ci1zaWRlIGVmZmVjdCBpcywgYnV0IGRvZXNuJ3Qgc2F5IHdoYXQgdGhlIHJldHVybiB2YWx1ZSBz
aG91bGQgYmUuICBZb3UKLW5lZWQgYERvQWxsKClgIHRvIGNoYWluIGEgYFNldEFyZ3VtZW50UG9p
bnRlZSgpYCB3aXRoIGEgYFJldHVybigpYC4KLQotU2VlIHRoaXMgW3JlY2lwZV0oVjFfNV9Db29r
Qm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cy5tZCkgZm9yIG1vcmUgZGV0YWlscyBhbmQgYW4gZXhh
bXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgaW4geW91ciBGQVEhICMjCi0KLUlmIHlv
dSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRo
ZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1c2U6Ci0KLSAgMS4gcmVhZCBv
dGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svdy9s
aXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91
cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrL3RvcGljcyksCi0gIDEuIGFzayBpdCBvbiBb
Z29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xlbW9ja0Bnb29nbGVncm91
cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSBy
ZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5n
b29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJlZm9yZSB5b3UgY2FuIHBvc3QuKS4KLQotUGxl
YXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKLVtpc3N1ZSB0cmFja2VyXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay9pc3N1ZXMvbGlzdCkgaXMgX25vdF8K
LWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVx
dWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcg
YSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxv
d2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0
aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICog
dGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9t
IFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sgeW91IHVzZSAoR29vZ2xlIE1vY2sgaXMgdW5k
ZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVt
IGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5n
IHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAq
IHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8geW91ciBjb21waWxl
ciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVz
dGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFs
bHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0g
eW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9kb2NzL3YxXzYvQ2hlYXRTaGVldC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFf
Ni9DaGVhdFNoZWV0Lm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWRlMWQyMTBl
NGQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvQ2hlYXRTaGVldC5t
ZAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLQotIyBEZWZpbmluZyBhIE1vY2sg
Q2xhc3MgIwotCi0jIyBNb2NraW5nIGEgTm9ybWFsIENsYXNzICMjCi0KLUdpdmVuCi1gYGAKLWNs
YXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIH5Gb28oKTsKLSAgdmlydHVhbCBpbnQgR2V0U2l6
ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCBzdHJpbmcgRGVzY3JpYmUoY29uc3QgY2hhciogbmFt
ZSkgPSAwOwotICB2aXJ0dWFsIHN0cmluZyBEZXNjcmliZShpbnQgdHlwZSkgPSAwOwotICB2aXJ0
dWFsIGJvb2wgUHJvY2VzcyhCYXIgZWxlbSwgaW50IGNvdW50KSA9IDA7Ci19OwotYGBgCi0obm90
ZSB0aGF0IGB+Rm9vKClgICoqbXVzdCoqIGJlIHZpcnR1YWwpIHdlIGNhbiBkZWZpbmUgaXRzIG1v
Y2sgYXMKLWBgYAotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSAgTU9DS19DT05TVF9NRVRIT0QwKEdldFNpemUsIGludCgpKTsKLSAgTU9D
S19NRVRIT0QxKERlc2NyaWJlLCBzdHJpbmcoY29uc3QgY2hhciogbmFtZSkpOwotICBNT0NLX01F
VEhPRDEoRGVzY3JpYmUsIHN0cmluZyhpbnQgdHlwZSkpOwotICBNT0NLX01FVEhPRDIoUHJvY2Vz
cywgYm9vbChCYXIgZWxlbSwgaW50IGNvdW50KSk7Ci19OwotYGBgCi0KLVRvIGNyZWF0ZSBhICJu
aWNlIiBtb2NrIG9iamVjdCB3aGljaCBpZ25vcmVzIGFsbCB1bmludGVyZXN0aW5nIGNhbGxzLAot
b3IgYSAic3RyaWN0IiBtb2NrIG9iamVjdCwgd2hpY2ggdHJlYXRzIHRoZW0gYXMgZmFpbHVyZXM6
Ci1gYGAKLU5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOyAgICAgLy8gVGhlIHR5cGUgaXMgYSBz
dWJjbGFzcyBvZiBNb2NrRm9vLgotU3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOyAvLyBU
aGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28uCi1gYGAKLQotIyMgTW9ja2luZyBhIENs
YXNzIFRlbXBsYXRlICMjCi0KLVRvIG1vY2sKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+
Ci1jbGFzcyBTdGFja0ludGVyZmFjZSB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCB+U3Rh
Y2tJbnRlcmZhY2UoKTsKLSAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmly
dHVhbCB2b2lkIFB1c2goY29uc3QgRWxlbSYgeCkgPSAwOwotfTsKLWBgYAotKG5vdGUgdGhhdCBg
flN0YWNrSW50ZXJmYWNlKClgICoqbXVzdCoqIGJlIHZpcnR1YWwpIGp1c3QgYXBwZW5kIGBfVGAg
dG8gdGhlIGBNT0NLXypgIG1hY3JvczoKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1j
bGFzcyBNb2NrU3RhY2sgOiBwdWJsaWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4gewotIHB1YmxpYzoK
LSAgLi4uCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19N
RVRIT0QxX1QoUHVzaCwgdm9pZChjb25zdCBFbGVtJiB4KSk7Ci19OwotYGBgCi0KLSMjIFNwZWNp
ZnlpbmcgQ2FsbGluZyBDb252ZW50aW9ucyBmb3IgTW9jayBGdW5jdGlvbnMgIyMKLQotSWYgeW91
ciBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRoZSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlv
biwgeW91Ci1jYW4gc3BlY2lmeSBpdCBieSBhcHBlbmRpbmcgYF9XSVRIX0NBTExUWVBFYCB0byBh
bnkgb2YgdGhlIG1hY3JvcwotZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMg
YW5kIHN1cHBseWluZyB0aGUgY2FsbGluZwotY29udmVudGlvbiBhcyB0aGUgZmlyc3QgYXJndW1l
bnQgdG8gdGhlIG1hY3JvLiBGb3IgZXhhbXBsZSwKLWBgYAotICBNT0NLX01FVEhPRF8xX1dJVEhf
Q0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIEZvbywgYm9vbChpbnQgbikpOwotICBNT0NLX0NP
TlNUX01FVEhPRDJfV0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQmFyLCBpbnQoZG91
YmxlIHgsIGRvdWJsZSB5KSk7Ci1gYGAKLXdoZXJlIGBTVERNRVRIT0RDQUxMVFlQRWAgaXMgZGVm
aW5lZCBieSBgPG9iamJhc2UuaD5gIG9uIFdpbmRvd3MuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVz
dHMgIwotCi1UaGUgdHlwaWNhbCBmbG93IGlzOgotICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2Nr
IG5hbWVzIHlvdSBuZWVkIHRvIHVzZS4gQWxsIEdvb2dsZSBNb2NrIG5hbWVzIGFyZSBpbiB0aGUg
YHRlc3RpbmdgIG5hbWVzcGFjZSB1bmxlc3MgdGhleSBhcmUgbWFjcm9zIG9yIG90aGVyd2lzZSBu
b3RlZC4KLSAgMS4gQ3JlYXRlIHRoZSBtb2NrIG9iamVjdHMuCi0gIDEuIE9wdGlvbmFsbHksIHNl
dCB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNldCB5b3Vy
IGV4cGVjdGF0aW9ucyBvbiB0aGUgbW9jayBvYmplY3RzIChIb3cgd2lsbCB0aGV5IGJlIGNhbGxl
ZD8gV2hhdCB3aWwgdGhleSBkbz8pLgotICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUg
bW9jayBvYmplY3RzOyBpZiBuZWNlc3NhcnksIGNoZWNrIHRoZSByZXN1bHQgdXNpbmcgW0dvb2ds
ZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMu
Ci0gIDEuIFdoZW4gYSBtb2NrIG9iamVjdHMgaXMgZGVzdHJ1Y3RlZCwgR29vZ2xlIE1vY2sgYXV0
b21hdGljYWxseSB2ZXJpZmllcyB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVu
IHNhdGlzZmllZC4KLQotSGVyZSBpcyBhbiBleGFtcGxlOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6
OlJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzEKLQotVEVTVChCYXJUZXN0
LCBEb2VzVGhpcykgewotICBNb2NrRm9vIGZvbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAjMgotCi0gIE9OX0NBTEwoZm9vLCBHZXRTaXplKCkpICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vICMzCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICAvLyAu
Li4gb3RoZXIgZGVmYXVsdCBhY3Rpb25zIC4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgRGVzY3Jp
YmUoNSkpICAgICAgICAgICAgICAgICAgIC8vICM0Ci0gICAgICAuVGltZXMoMykKLSAgICAgIC5X
aWxsUmVwZWF0ZWRseShSZXR1cm4oIkNhdGVnb3J5IDUiKSk7Ci0gIC8vIC4uLiBvdGhlciBleHBl
Y3RhdGlvbnMgLi4uCi0KLSAgRVhQRUNUX0VRKCJnb29kIiwgTXlQcm9kdWN0aW9uRnVuY3Rpb24o
JmZvbykpOyAgLy8gIzUKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gIzYKLWBgYAotCi0jIFNldHRpbmcgRGVmYXVsdCBBY3Rpb25zICMKLQotR29v
Z2xlIE1vY2sgaGFzIGEgKipidWlsdC1pbiBkZWZhdWx0IGFjdGlvbioqIGZvciBhbnkgZnVuY3Rp
b24gdGhhdAotcmV0dXJucyBgdm9pZGAsIGBib29sYCwgYSBudW1lcmljIHZhbHVlLCBvciBhIHBv
aW50ZXIuCi0KLVRvIGN1c3RvbWl6ZSB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGZ1bmN0aW9ucyB3
aXRoIHJldHVybiB0eXBlIGBUYCBnbG9iYWxseToKLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpEZWZh
dWx0VmFsdWU7Ci0KLURlZmF1bHRWYWx1ZTxUPjo6U2V0KHZhbHVlKTsgIC8vIFNldHMgdGhlIGRl
ZmF1bHQgdmFsdWUgdG8gYmUgcmV0dXJuZWQuCi0vLyAuLi4gdXNlIHRoZSBtb2NrcyAuLi4KLURl
ZmF1bHRWYWx1ZTxUPjo6Q2xlYXIoKTsgICAgIC8vIFJlc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4K
LWBgYAotCi1UbyBjdXN0b21pemUgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIg
bWV0aG9kLCB1c2UgYE9OX0NBTEwoKWA6Ci1gYGAKLU9OX0NBTEwobW9ja19vYmplY3QsIG1ldGhv
ZChtYXRjaGVycykpCi0gICAgLldpdGgobXVsdGlfYXJndW1lbnRfbWF0Y2hlcikgID8KLSAgICAu
V2lsbEJ5RGVmYXVsdChhY3Rpb24pOwotYGBgCi0KLSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwot
Ci1gRVhQRUNUX0NBTEwoKWAgc2V0cyAqKmV4cGVjdGF0aW9ucyoqIG9uIGEgbW9jayBtZXRob2Qg
KEhvdyB3aWxsIGl0IGJlCi1jYWxsZWQ/IFdoYXQgd2lsbCBpdCBkbz8pOgotYGBgCi1FWFBFQ1Rf
Q0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNoZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1
bWVudF9tYXRjaGVyKSAgPwotICAgIC5UaW1lcyhjYXJkaW5hbGl0eSkgICAgICAgICAgICA/Ci0g
ICAgLkluU2VxdWVuY2Uoc2VxdWVuY2VzKSAgICAgICAgICoKLSAgICAuQWZ0ZXIoZXhwZWN0YXRp
b25zKSAgICAgICAgICAgKgotICAgIC5XaWxsT25jZShhY3Rpb24pICAgICAgICAgICAgICAqCi0g
ICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbikgICAgICAgID8KLSAgICAuUmV0aXJlc09uU2F0dXJh
dGlvbigpOyAgICAgICAgPwotYGBgCi0KLUlmIGBUaW1lcygpYCBpcyBvbWl0dGVkLCB0aGUgY2Fy
ZGluYWxpdHkgaXMgYXNzdW1lZCB0byBiZToKLQotICAqIGBUaW1lcygxKWAgd2hlbiB0aGVyZSBp
cyBuZWl0aGVyIGBXaWxsT25jZSgpYCBub3IgYFdpbGxSZXBlYXRlZGx5KClgOwotICAqIGBUaW1l
cyhuKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWBzIGJ1dCBubyBgV2lsbFJlcGVhdGVk
bHkoKWAsIHdoZXJlIGBuYCA+PSAxOyBvcgotICAqIGBUaW1lcyhBdExlYXN0KG4pKWAgd2hlbiB0
aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWBzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUg
YG5gID49IDAuCi0KLUEgbWV0aG9kIHdpdGggbm8gYEVYUEVDVF9DQUxMKClgIGlzIGZyZWUgdG8g
YmUgaW52b2tlZCBfYW55IG51bWJlciBvZiB0aW1lc18sIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24g
d2lsbCBiZSB0YWtlbiBlYWNoIHRpbWUuCi0KLSMgTWF0Y2hlcnMgIwotCi1BICoqbWF0Y2hlcioq
IG1hdGNoZXMgYSBfc2luZ2xlXyBhcmd1bWVudC4gIFlvdSBjYW4gdXNlIGl0IGluc2lkZQotYE9O
X0NBTEwoKWAgb3IgYEVYUEVDVF9DQUxMKClgLCBvciB1c2UgaXQgdG8gdmFsaWRhdGUgYSB2YWx1
ZQotZGlyZWN0bHk6Ci0KLXwgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAgfCBBc3NlcnRz
IHRoYXQgYHZhbHVlYCBtYXRjaGVzIGBtYXRjaGVyYC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18
IGBBU1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcilgIHwgVGhlIHNhbWUgYXMgYEVYUEVDVF9USEFU
KHZhbHVlLCBtYXRjaGVyKWAsIGV4Y2VwdCB0aGF0IGl0IGdlbmVyYXRlcyBhICoqZmF0YWwqKiBm
YWlsdXJlLiB8Ci0KLUJ1aWx0LWluIG1hdGNoZXJzICh3aGVyZSBgYXJndW1lbnRgIGlzIHRoZSBm
dW5jdGlvbiBhcmd1bWVudCkgYXJlCi1kaXZpZGVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOgot
Ci0jIyBXaWxkY2FyZCAjIwotfGBfYHxgYXJndW1lbnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdGhl
IGNvcnJlY3QgdHlwZS58Ci18Oi0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwKLXxgQTx0eXBlPigpYCBvciBgQW48dHlwZT4oKWB8YGFyZ3VtZW50YCBj
YW4gYmUgYW55IHZhbHVlIG9mIHR5cGUgYHR5cGVgLiAgICAgfAotCi0jIyBHZW5lcmljIENvbXBh
cmlzb24gIyMKLQotfGBFcSh2YWx1ZSlgIG9yIGB2YWx1ZWB8YGFyZ3VtZW50ID09IHZhbHVlYHwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS18Ci18YEdlKHZhbHVl
KWAgICAgICAgICAgIHxgYXJndW1lbnQgPj0gdmFsdWVgfAotfGBHdCh2YWx1ZSlgICAgICAgICAg
ICB8YGFyZ3VtZW50ID4gdmFsdWVgIHwKLXxgTGUodmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVu
dCA8PSB2YWx1ZWB8Ci18YEx0KHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPCB2YWx1ZWAg
fAotfGBOZSh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ICE9IHZhbHVlYHwKLXxgSXNOdWxs
KClgICAgICAgICAgICAgfGBhcmd1bWVudGAgaXMgYSBgTlVMTGAgcG9pbnRlciAocmF3IG9yIHNt
YXJ0KS58Ci18YE5vdE51bGwoKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgbm9uLW51bGwg
cG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Ci18YFJlZih2YXJpYWJsZSlgICAgICAgIHxgYXJndW1l
bnRgIGlzIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJsZWAufAotfGBUeXBlZEVxPHR5cGU+KHZhbHVl
KWB8YGFyZ3VtZW50YCBoYXMgdHlwZSBgdHlwZWAgYW5kIGlzIGVxdWFsIHRvIGB2YWx1ZWAuIFlv
dSBtYXkgbmVlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mIGBFcSh2YWx1ZSlgIHdoZW4gdGhlIG1v
Y2sgZnVuY3Rpb24gaXMgb3ZlcmxvYWRlZC58Ci0KLUV4Y2VwdCBgUmVmKClgLCB0aGVzZSBtYXRj
aGVycyBtYWtlIGEgX2NvcHlfIG9mIGB2YWx1ZWAgaW4gY2FzZSBpdCdzCi1tb2RpZmllZCBvciBk
ZXN0cnVjdGVkIGxhdGVyLiBJZiB0aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgYHZhbHVlYAot
ZG9lc24ndCBoYXZlIGEgcHVibGljIGNvcHkgY29uc3RydWN0b3IsIHRyeSB3cmFwIGl0IGluIGBC
eVJlZigpYCwKLWUuZy4gYEVxKEJ5UmVmKG5vbl9jb3B5YWJsZV92YWx1ZSkpYC4gSWYgeW91IGRv
IHRoYXQsIG1ha2Ugc3VyZQotYG5vbl9jb3B5YWJsZV92YWx1ZWAgaXMgbm90IGNoYW5nZWQgYWZ0
ZXJ3YXJkcywgb3IgdGhlIG1lYW5pbmcgb2YgeW91cgotbWF0Y2hlciB3aWxsIGJlIGNoYW5nZWQu
Ci0KLSMjIEZsb2F0aW5nLVBvaW50IE1hdGNoZXJzICMjCi0KLXxgRG91YmxlRXEoYV9kb3VibGUp
YHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBg
YV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBhcyB1bmVxdWFsLnwKLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRmxvYXRF
cShhX2Zsb2F0KWAgIHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5
IGVxdWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwKLXxg
TmFuU2Vuc2l0aXZlRG91YmxlRXEoYV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAg
dmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFO
cyBhcyBlcXVhbC4gIHwKLXxgTmFuU2Vuc2l0aXZlRmxvYXRFcShhX2Zsb2F0KWB8YGFyZ3VtZW50
YCBpcyBhIGBmbG9hdGAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9mbG9hdGAsIHRy
ZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgICB8Ci0KLVRoZXNlIG1hdGNoZXJzIHVzZSBVTFAt
YmFzZWQgY29tcGFyaXNvbiAodGhlIHNhbWUgYXMgdXNlZCBpbgotW0dvb2dsZSBUZXN0XShodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC8pKS4gVGhleQotYXV0b21hdGljYWxseSBw
aWNrIGEgcmVhc29uYWJsZSBlcnJvciBib3VuZCBiYXNlZCBvbiB0aGUgYWJzb2x1dGUKLXZhbHVl
IG9mIHRoZSBleHBlY3RlZCB2YWx1ZS4gIGBEb3VibGVFcSgpYCBhbmQgYEZsb2F0RXEoKWAgY29u
Zm9ybSB0bwotdGhlIElFRUUgc3RhbmRhcmQsIHdoaWNoIHJlcXVpcmVzIGNvbXBhcmluZyB0d28g
TmFOcyBmb3IgZXF1YWxpdHkgdG8KLXJldHVybiBmYWxzZS4gVGhlIGBOYW5TZW5zaXRpdmUqYCB2
ZXJzaW9uIGluc3RlYWQgdHJlYXRzIHR3byBOYU5zIGFzCi1lcXVhbCwgd2hpY2ggaXMgb2Z0ZW4g
d2hhdCBhIHVzZXIgd2FudHMuCi0KLSMjIFN0cmluZyBNYXRjaGVycyAjIwotCi1UaGUgYGFyZ3Vt
ZW50YCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSBDKysgc3RyaW5nIG9iamVjdDoKLQot
fGBDb250YWluc1JlZ2V4KHN0cmluZylgfGBhcmd1bWVudGAgbWF0Y2hlcyB0aGUgZ2l2ZW4gcmVn
dWxhciBleHByZXNzaW9uLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEVuZHNXaXRoKHN1ZmZpeClg
ICAgICB8YGFyZ3VtZW50YCBlbmRzIHdpdGggc3RyaW5nIGBzdWZmaXhgLiAgICAgICAgICAgfAot
fGBIYXNTdWJzdHIoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgY29udGFpbnMgYHN0cmluZ2AgYXMg
YSBzdWItc3RyaW5nLiAgIHwKLXxgTWF0Y2hlc1JlZ2V4KHN0cmluZylgIHxgYXJndW1lbnRgIG1h
dGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIHRoZSBtYXRjaCBzdGFydGlu
ZyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFuZCBlbmRpbmcgYXQgdGhlIGxhc3QgY2hhcmFjdGVy
LnwKLXxgU3RhcnRzV2l0aChwcmVmaXgpYCAgIHxgYXJndW1lbnRgIHN0YXJ0cyB3aXRoIHN0cmlu
ZyBgcHJlZml4YC4gICAgICAgICB8Ci18YFN0ckNhc2VFcShzdHJpbmcpYCAgICB8YGFyZ3VtZW50
YCBpcyBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2FzZS4gfAotfGBTdHJDYXNlTmUoc3Ry
aW5nKWAgICAgfGBhcmd1bWVudGAgaXMgbm90IGVxdWFsIHRvIGBzdHJpbmdgLCBpZ25vcmluZyBj
YXNlLnwKLXxgU3RyRXEoc3RyaW5nKWAgICAgICAgIHxgYXJndW1lbnRgIGlzIGVxdWFsIHRvIGBz
dHJpbmdgLiAgICAgICAgICAgICAgICB8Ci18YFN0ck5lKHN0cmluZylgICAgICAgICB8YGFyZ3Vt
ZW50YCBpcyBub3QgZXF1YWwgdG8gYHN0cmluZ2AuICAgICAgICAgICAgfAotCi1gQ29udGFpbnNS
ZWdleCgpYCBhbmQgYE1hdGNoZXNSZWdleCgpYCB1c2UgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgot
c3ludGF4IGRlZmluZWQKLVtoZXJlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVz
dC93aWtpL1YxXzZfQWR2YW5jZWRHdWlkZSNSZWd1bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KLWBT
dHJDYXNlRXEoKWAsIGBTdHJDYXNlTmUoKWAsIGBTdHJFcSgpYCwgYW5kIGBTdHJOZSgpYCB3b3Jr
IGZvciB3aWRlCi1zdHJpbmdzIGFzIHdlbGwuCi0KLSMjIENvbnRhaW5lciBNYXRjaGVycyAjIwot
Ci1Nb3N0IFNUTC1zdHlsZSBjb250YWluZXJzIHN1cHBvcnQgYD09YCwgc28geW91IGNhbiB1c2UK
LWBFcShleHBlY3RlZF9jb250YWluZXIpYCBvciBzaW1wbHkgYGV4cGVjdGVkX2NvbnRhaW5lcmAg
dG8gbWF0Y2ggYQotY29udGFpbmVyIGV4YWN0bHkuICAgSWYgeW91IHdhbnQgdG8gd3JpdGUgdGhl
IGVsZW1lbnRzIGluLWxpbmUsCi1tYXRjaCB0aGVtIG1vcmUgZmxleGlibHksIG9yIGdldCBtb3Jl
IGluZm9ybWF0aXZlIG1lc3NhZ2VzLCB5b3UgY2FuIHVzZToKLQotfCBgQ29udGFpbnMoZSlgIHwg
YGFyZ3VtZW50YCBjb250YWlucyBhbiBlbGVtZW50IHRoYXQgbWF0Y2hlcyBgZWAsIHdoaWNoIGNh
biBiZSBlaXRoZXIgYSB2YWx1ZSBvciBhIG1hdGNoZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBFYWNoKGUpYCAgICAgfCBgYXJn
dW1lbnRgIGlzIGEgY29udGFpbmVyIHdoZXJlIF9ldmVyeV8gZWxlbWVudCBtYXRjaGVzIGBlYCwg
d2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gfAotfCBgRWxlbWVudHNB
cmUoZTAsIGUxLCAuLi4sIGVuKWAgfCBgYXJndW1lbnRgIGhhcyBgbiArIDFgIGVsZW1lbnRzLCB3
aGVyZSB0aGUgaS10aCBlbGVtZW50IG1hdGNoZXMgYGVpYCwgd2hpY2ggY2FuIGJlIGEgdmFsdWUg
b3IgYSBtYXRjaGVyLiAwIHRvIDEwIGFyZ3VtZW50cyBhcmUgYWxsb3dlZC4gfAotfCBgRWxlbWVu
dHNBcmVBcnJheShhcnJheSlgIG9yIGBFbGVtZW50c0FyZUFycmF5KGFycmF5LCBjb3VudClgIHwg
VGhlIHNhbWUgYXMgYEVsZW1lbnRzQXJlKClgIGV4Y2VwdCB0aGF0IHRoZSBleHBlY3RlZCBlbGVt
ZW50IHZhbHVlcy9tYXRjaGVycyBjb21lIGZyb20gYSBDLXN0eWxlIGFycmF5LiB8Ci18IGBDb250
YWluZXJFcShjb250YWluZXIpYCB8IFRoZSBzYW1lIGFzIGBFcShjb250YWluZXIpYCBleGNlcHQg
dGhhdCB0aGUgZmFpbHVyZSBtZXNzYWdlIGFsc28gaW5jbHVkZXMgd2hpY2ggZWxlbWVudHMgYXJl
IGluIG9uZSBjb250YWluZXIgYnV0IG5vdCB0aGUgb3RoZXIuIHwKLXwgYFBvaW50d2lzZShtLCBj
b250YWluZXIpYCB8IGBhcmd1bWVudGAgY29udGFpbnMgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1l
bnRzIGFzIGluIGBjb250YWluZXJgLCBhbmQgZm9yIGFsbCBpLCAodGhlIGktdGggZWxlbWVudCBp
biBgYXJndW1lbnRgLCB0aGUgaS10aCBlbGVtZW50IGluIGBjb250YWluZXJgKSBtYXRjaCBgbWAs
IHdoaWNoIGlzIGEgbWF0Y2hlciBvbiAyLXR1cGxlcy4gRS5nLiBgUG9pbnR3aXNlKExlKCksIHVw
cGVyX2JvdW5kcylgIHZlcmlmaWVzIHRoYXQgZWFjaCBlbGVtZW50IGluIGBhcmd1bWVudGAgZG9l
c24ndCBleGNlZWQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiBgdXBwZXJfYm91bmRzYC4g
fAotCi1UaGVzZSBtYXRjaGVycyBjYW4gYWxzbyBtYXRjaDoKLQotICAxLiBhIG5hdGl2ZSBhcnJh
eSBwYXNzZWQgYnkgcmVmZXJlbmNlIChlLmcuIGluIGBGb28oY29uc3QgaW50ICgmYSlbNV0pYCks
IGFuZAotICAxLiBhbiBhcnJheSBwYXNzZWQgYXMgYSBwb2ludGVyIGFuZCBhIGNvdW50IChlLmcu
IGluIGBCYXIoY29uc3QgVCogYnVmZmVyLCBpbnQgbGVuKWAgLS0gc2VlIFtNdWx0aS1hcmd1bWVu
dCBNYXRjaGVyc10oI011bHRpYXJndW1lbnRfTWF0Y2hlcnMubWQpKS4KLQotd2hlcmUgdGhlIGFy
cmF5IG1heSBiZSBtdWx0aS1kaW1lbnNpb25hbCAoaS5lLiBpdHMgZWxlbWVudHMgY2FuIGJlIGFy
cmF5cykuCi0KLSMjIE1lbWJlciBNYXRjaGVycyAjIwotCi18YEZpZWxkKCZjbGFzczo6ZmllbGQs
IG0pYHxgYXJndW1lbnQuZmllbGRgIChvciBgYXJndW1lbnQtPmZpZWxkYCB3aGVuIGBhcmd1bWVu
dGAgaXMgYSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1hdGNoZXIgYG1gLCB3aGVyZSBgYXJndW1l
bnRgIGlzIGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18ufAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgS2V5KGUpYCAgICAgICAgICAg
ICAgICAgfGBhcmd1bWVudC5maXJzdGAgbWF0Y2hlcyBgZWAsIHdoaWNoIGNhbiBiZSBlaXRoZXIg
YSB2YWx1ZSBvciBhIG1hdGNoZXIuIEUuZy4gYENvbnRhaW5zKEtleShMZSg1KSkpYCBjYW4gdmVy
aWZ5IHRoYXQgYSBgbWFwYCBjb250YWlucyBhIGtleSBgPD0gNWAufAotfGBQYWlyKG0xLCBtMilg
ICAgICAgICAgICB8YGFyZ3VtZW50YCBpcyBhbiBgc3RkOjpwYWlyYCB3aG9zZSBgZmlyc3RgIGZp
ZWxkIG1hdGNoZXMgYG0xYCBhbmQgYHNlY29uZGAgZmllbGQgbWF0Y2hlcyBgbTJgLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgUHJvcGVydHkoJmNs
YXNzOjpwcm9wZXJ0eSwgbSlgfGBhcmd1bWVudC5wcm9wZXJ0eSgpYCAob3IgYGFyZ3VtZW50LT5w
cm9wZXJ0eSgpYCB3aGVuIGBhcmd1bWVudGAgaXMgYSBwbGFpbiBwb2ludGVyKSBtYXRjaGVzIG1h
dGNoZXIgYG1gLCB3aGVyZSBgYXJndW1lbnRgIGlzIGFuIG9iamVjdCBvZiB0eXBlIF9jbGFzc18u
fAotCi0jIyBNYXRjaGluZyB0aGUgUmVzdWx0IG9mIGEgRnVuY3Rpb24gb3IgRnVuY3RvciAjIwot
Ci18YFJlc3VsdE9mKGYsIG0pYHxgZihhcmd1bWVudClgIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdo
ZXJlIGBmYCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAotfDotLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXwKLQotIyMgUG9pbnRlciBNYXRjaGVycyAjIwotCi18YFBvaW50ZWUobSlgfGBh
cmd1bWVudGAgKGVpdGhlciBhIHNtYXJ0IHBvaW50ZXIgb3IgYSByYXcgcG9pbnRlcikgcG9pbnRz
IHRvIGEgdmFsdWUgdGhhdCBtYXRjaGVzIG1hdGNoZXIgYG1gLnwKLXw6LS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBNdWx0aWFyZ3VtZW50
IE1hdGNoZXJzICMjCi0KLVRlY2huaWNhbGx5LCBhbGwgbWF0Y2hlcnMgbWF0Y2ggYSBfc2luZ2xl
XyB2YWx1ZS4gQSAibXVsdGktYXJndW1lbnQiCi1tYXRjaGVyIGlzIGp1c3Qgb25lIHRoYXQgbWF0
Y2hlcyBhIF90dXBsZV8uIFRoZSBmb2xsb3dpbmcgbWF0Y2hlcnMgY2FuCi1iZSB1c2VkIHRvIG1h
dGNoIGEgdHVwbGUgYCh4LCB5KWA6Ci0KLXxgRXEoKWB8YHggPT0geWB8Ci18Oi0tLS0tfDotLS0t
LS0tfAotfGBHZSgpYHxgeCA+PSB5YHwKLXxgR3QoKWB8YHggPiB5YCB8Ci18YExlKClgfGB4IDw9
IHlgfAotfGBMdCgpYHxgeCA8IHlgIHwKLXxgTmUoKWB8YHggIT0geWB8Ci0KLVlvdSBjYW4gdXNl
IHRoZSBmb2xsb3dpbmcgc2VsZWN0b3JzIHRvIHBpY2sgYSBzdWJzZXQgb2YgdGhlIGFyZ3VtZW50
cwotKG9yIHJlb3JkZXIgdGhlbSkgdG8gcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoaW5nOgotCi18
YEFsbEFyZ3MobSlgfEVxdWl2YWxlbnQgdG8gYG1gLiBVc2VmdWwgYXMgc3ludGFjdGljIHN1Z2Fy
IGluIGAuV2l0aChBbGxBcmdzKG0pKWAufAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxg
QXJnczxOMSwgTjIsIC4uLiwgTms+KG0pYHxUaGUgdHVwbGUgb2YgdGhlIGBrYCBzZWxlY3RlZCAo
dXNpbmcgMC1iYXNlZCBpbmRpY2VzKSBhcmd1bWVudHMgbWF0Y2hlcyBgbWAsIGUuZy4gYEFyZ3M8
MSwgMj4oRXEoKSlgLnwKLQotIyMgQ29tcG9zaXRlIE1hdGNoZXJzICMjCi0KLVlvdSBjYW4gbWFr
ZSBhIG1hdGNoZXIgZnJvbSBvbmUgb3IgbW9yZSBvdGhlciBtYXRjaGVyczoKLQotfGBBbGxPZiht
MSwgbTIsIC4uLiwgbW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYWxsIG9mIHRoZSBtYXRjaGVycyBg
bTFgIHRvIGBtbmAufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBBbnlPZihtMSwgbTIsIC4u
LiwgbW4pYHxgYXJndW1lbnRgIG1hdGNoZXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXRjaGVycyBg
bTFgIHRvIGBtbmAufAotfGBOb3QobSlgICAgICAgICAgICAgICAgIHxgYXJndW1lbnRgIGRvZXNu
J3QgbWF0Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAgICAgfAotCi0jIyBBZGFwdGVycyBmb3Ig
TWF0Y2hlcnMgIyMKLQotfGBNYXRjaGVyQ2FzdDxUPihtKWB8Y2FzdHMgbWF0Y2hlciBgbWAgdG8g
dHlwZSBgTWF0Y2hlcjxUPmAufAotfDotLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBTYWZlTWF0Y2hlckNhc3Q8VD4obSlgfCBbc2Fm
ZWx5IGNhc3RzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZf
Q29va0Jvb2sjQ2FzdGluZ19NYXRjaGVycykgbWF0Y2hlciBgbWAgdG8gdHlwZSBgTWF0Y2hlcjxU
PmAuIHwKLXxgVHJ1bHkocHJlZGljYXRlKWAgfGBwcmVkaWNhdGUoYXJndW1lbnQpYCByZXR1cm5z
IHNvbWV0aGluZyBjb25zaWRlcmVkIGJ5IEMrKyB0byBiZSB0cnVlLCB3aGVyZSBgcHJlZGljYXRl
YCBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0b3IufAotCi0jIyBNYXRjaGVycyBhcyBQcmVkaWNhdGVz
ICMjCi0KLXxgTWF0Y2hlcyhtKSh2YWx1ZSlgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVl
YCBtYXRjaGVzIGBtYC4gWW91IGNhbiB1c2UgYE1hdGNoZXMobSlgIGFsb25lIGFzIGEgdW5hcnkg
ZnVuY3Rvci58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfGBFeHBsYWluTWF0Y2hSZXN1bHQobSwgdmFsdWUsIHJlc3VsdF9saXN0
ZW5lcilgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVlYCBtYXRjaGVzIGBtYCwgZXhwbGFp
bmluZyB0aGUgcmVzdWx0IHRvIGByZXN1bHRfbGlzdGVuZXJgLiAgICAgICB8Ci18YFZhbHVlKHZh
bHVlLCBtKWAgIHxldmFsdWF0ZXMgdG8gYHRydWVgIGlmIGB2YWx1ZWAgbWF0Y2hlcyBgbWAuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0jIyBE
ZWZpbmluZyBNYXRjaGVycyAjIwotCi18IGBNQVRDSEVSKElzRXZlbiwgIiIpIHsgcmV0dXJuIChh
cmcgJSAyKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYXRjaGVyIGBJc0V2ZW4oKWAgdG8gbWF0Y2gg
YW4gZXZlbiBudW1iZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfCBgTUFUQ0hFUl9QKElzRGl2aXNpYmxlQnksIG4sICIiKSB7ICpyZXN1
bHRfbGlzdGVuZXIgPDwgIndoZXJlIHRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgbik7IHJl
dHVybiAoYXJnICUgbikgPT0gMDsgfWAgfCBEZWZpbmVzIGEgbWFjaGVyIGBJc0RpdmlzaWJsZUJ5
KG4pYCB0byBtYXRjaCBhIG51bWJlciBkaXZpc2libGUgYnkgYG5gLiB8Ci18IGBNQVRDSEVSX1Ay
KElzQmV0d2VlbiwgYSwgYiwgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiaXNuJ3QiIDogImlzIikg
KyAiIGJldHdlZW4gIiArIFByaW50VG9TdHJpbmcoYSkgKyAiIGFuZCAiICsgUHJpbnRUb1N0cmlu
ZyhiKSkgeyByZXR1cm4gYSA8PSBhcmcgJiYgYXJnIDw9IGI7IH1gIHwgRGVmaW5lcyBhIG1hdGNo
ZXIgYElzQmV0d2VlbihhLCBiKWAgdG8gbWF0Y2ggYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2BhYCwg
YGJgXS4gfAotCi0qKk5vdGVzOioqCi0KLSAgMS4gVGhlIGBNQVRDSEVSKmAgbWFjcm9zIGNhbm5v
dCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotICAxLiBUaGUgbWF0Y2hlciBi
b2R5IG11c3QgYmUgX3B1cmVseSBmdW5jdGlvbmFsXyAoaS5lLiBpdCBjYW5ub3QgaGF2ZSBhbnkg
c2lkZSBlZmZlY3QsIGFuZCB0aGUgcmVzdWx0IG11c3Qgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBv
dGhlciB0aGFuIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZCB0aGUgbWF0Y2hlciBwYXJhbWV0
ZXJzKS4KLSAgMS4gWW91IGNhbiB1c2UgYFByaW50VG9TdHJpbmcoeClgIHRvIGNvbnZlcnQgYSB2
YWx1ZSBgeGAgb2YgYW55IHR5cGUgdG8gYSBzdHJpbmcuCi0KLSMjIE1hdGNoZXJzIGFzIFRlc3Qg
QXNzZXJ0aW9ucyAjIwotCi18YEFTU0VSVF9USEFUKGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMg
YSBbZmF0YWwgZmFpbHVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lr
aS9WMV82X1ByaW1lciNBc3NlcnRpb25zKSBpZiB0aGUgdmFsdWUgb2YgYGV4cHJlc3Npb25gIGRv
ZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAufAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgRVhQRUNUX1RIQVQoZXhwcmVz
c2lvbiwgbSlgfEdlbmVyYXRlcyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlmIHRoZSB2YWx1ZSBvZiBg
ZXhwcmVzc2lvbmAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSMgQWN0aW9u
cyAjCi0KLSoqQWN0aW9ucyoqIHNwZWNpZnkgd2hhdCBhIG1vY2sgZnVuY3Rpb24gc2hvdWxkIGRv
IHdoZW4gaW52b2tlZC4KLQotIyMgUmV0dXJuaW5nIGEgVmFsdWUgIyMKLQotfGBSZXR1cm4oKWB8
UmV0dXJuIGZyb20gYSBgdm9pZGAgbW9jayBmdW5jdGlvbi58Ci18Oi0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgUmV0dXJuKHZhbHVlKWB8UmV0dXJuIGB2
YWx1ZWAuIElmIHRoZSB0eXBlIG9mIGB2YWx1ZWAgaXMgZGlmZmVyZW50IHRvIHRoZSBtb2NrIGZ1
bmN0aW9uJ3MgcmV0dXJuIHR5cGUsIGB2YWx1ZWAgaXMgY29udmVydGVkIHRvIHRoZSBsYXR0ZXIg
dHlwZSA8aT5hdCB0aGUgdGltZSB0aGUgZXhwZWN0YXRpb24gaXMgc2V0PC9pPiwgbm90IHdoZW4g
dGhlIGFjdGlvbiBpcyBleGVjdXRlZC58Ci18YFJldHVybkFyZzxOPigpYHxSZXR1cm4gdGhlIGBO
YC10aCAoMC1iYXNlZCkgYXJndW1lbnQufAotfGBSZXR1cm5OZXc8VD4oYTEsIC4uLiwgYWspYHxS
ZXR1cm4gYG5ldyBUKGExLCAuLi4sIGFrKWA7IGEgZGlmZmVyZW50IG9iamVjdCBpcyBjcmVhdGVk
IGVhY2ggdGltZS58Ci18YFJldHVybk51bGwoKWB8UmV0dXJuIGEgbnVsbCBwb2ludGVyLiAgICAg
ICAgICAgICB8Ci18YFJldHVyblBvaW50ZWUocHRyKWB8UmV0dXJuIHRoZSB2YWx1ZSBwb2ludGVk
IHRvIGJ5IGBwdHJgLnwKLXxgUmV0dXJuUmVmKHZhcmlhYmxlKWB8UmV0dXJuIGEgcmVmZXJlbmNl
IHRvIGB2YXJpYWJsZWAuICB8Ci18YFJldHVyblJlZk9mQ29weSh2YWx1ZSlgfFJldHVybiBhIHJl
ZmVyZW5jZSB0byBhIGNvcHkgb2YgYHZhbHVlYDsgdGhlIGNvcHkgbGl2ZXMgYXMgbG9uZyBhcyB0
aGUgYWN0aW9uLnwKLQotIyMgU2lkZSBFZmZlY3RzICMjCi0KLXxgQXNzaWduKCZ2YXJpYWJsZSwg
dmFsdWUpYHxBc3NpZ24gYHZhbHVlYCB0byB2YXJpYWJsZS58Ci18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgRGVsZXRlQXJnPE4+KClg
ICAgICAgICAgfCBEZWxldGUgdGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIG11
c3QgYmUgYSBwb2ludGVyLiB8Ci18IGBTYXZlQXJnPE4+KHBvaW50ZXIpYCAgICB8IFNhdmUgdGhl
IGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQgdG8gYCpwb2ludGVyYC4gfAotfCBgU2F2ZUFyZ1Bv
aW50ZWU8Tj4ocG9pbnRlcilgIHwgU2F2ZSB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSB0aGUgYE5g
LXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8Ci18IGBTZXRBcmdSZWZlcmVl
PE4+KHZhbHVlKWAgfAlBc3NpZ24gdmFsdWUgdG8gdGhlIHZhcmlhYmxlIHJlZmVyZW5jZWQgYnkg
dGhlIGBOYC10aCAoMC1iYXNlZCkgYXJndW1lbnQuIHwKLXxgU2V0QXJnUG9pbnRlZTxOPih2YWx1
ZSlgIHxBc3NpZ24gYHZhbHVlYCB0byB0aGUgdmFyaWFibGUgcG9pbnRlZCBieSB0aGUgYE5gLXRo
ICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFNldEFyZ3VtZW50UG9pbnRlZTxOPih2YWx1ZSlgfFNh
bWUgYXMgYFNldEFyZ1BvaW50ZWU8Tj4odmFsdWUpYC4gRGVwcmVjYXRlZC4gV2lsbCBiZSByZW1v
dmVkIGluIHYxLjcuMC58Ci18YFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpYHxDb3Bp
ZXMgdGhlIGVsZW1lbnRzIGluIHNvdXJjZSByYW5nZSBbYGZpcnN0YCwgYGxhc3RgKSB0byB0aGUg
YXJyYXkgcG9pbnRlZCB0byBieSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2gg
Y2FuIGJlIGVpdGhlciBhIHBvaW50ZXIgb3IgYW4gaXRlcmF0b3IuIFRoZSBhY3Rpb24gZG9lcyBu
b3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzb3VyY2UgcmFuZ2UufAot
fGBTZXRFcnJub0FuZFJldHVybihlcnJvciwgdmFsdWUpYHxTZXQgYGVycm5vYCB0byBgZXJyb3Jg
IGFuZCByZXR1cm4gYHZhbHVlYC58Ci18YFRocm93KGV4Y2VwdGlvbilgICAgICAgICB8VGhyb3dz
IHRoZSBnaXZlbiBleGNlcHRpb24sIHdoaWNoIGNhbiBiZSBhbnkgY29weWFibGUgdmFsdWUuIEF2
YWlsYWJsZSBzaW5jZSB2MS4xLjAufAotCi0jIyBVc2luZyBhIEZ1bmN0aW9uIG9yIGEgRnVuY3Rv
ciBhcyBhbiBBY3Rpb24gIyMKLQotfGBJbnZva2UoZilgfEludm9rZSBgZmAgd2l0aCB0aGUgYXJn
dW1lbnRzIHBhc3NlZCB0byB0aGUgbW9jayBmdW5jdGlvbiwgd2hlcmUgYGZgIGNhbiBiZSBhIGds
b2JhbC9zdGF0aWMgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLnwKLXw6LS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YElu
dm9rZShvYmplY3RfcG9pbnRlciwgJmNsYXNzOjptZXRob2QpYHxJbnZva2UgdGhlIHttZXRob2Qg
b24gdGhlIG9iamVjdCB3aXRoIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18YEludm9rZVdpdGhvdXRB
cmdzKGYpYHxJbnZva2UgYGZgLCB3aGljaCBjYW4gYmUgYSBnbG9iYWwvc3RhdGljIGZ1bmN0aW9u
IG9yIGEgZnVuY3Rvci4gYGZgIG11c3QgdGFrZSBubyBhcmd1bWVudHMuICAgICAgICAgICAgICAg
ICAgICAgICB8Ci18YEludm9rZVdpdGhvdXRBcmdzKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1l
dGhvZClgfEludm9rZSB0aGUgbWV0aG9kIG9uIHRoZSBvYmplY3QsIHdoaWNoIHRha2VzIG5vIGFy
Z3VtZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXxgSW52b2tlQXJndW1lbnQ8Tj4oYXJnMSwgYXJnMiwgLi4uLCBhcmdrKWB8SW52
b2tlIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2gg
bXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGEgZnVuY3Rvciwgd2l0aCB0aGUgYGtgIGFyZ3VtZW50cy58
Ci0KLVRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0
aGUgcmV0dXJuIHZhbHVlCi1vZiB0aGUgYWN0aW9uLgotCi1XaGVuIGRlZmluaW5nIGEgZnVuY3Rp
b24gb3IgZnVuY3RvciB0byBiZSB1c2VkIHdpdGggYEludm9rZSooKWAsIHlvdSBjYW4gZGVjbGFy
ZSBhbnkgdW51c2VkIHBhcmFtZXRlcnMgYXMgYFVudXNlZGA6Ci1gYGAKLSAgZG91YmxlIERpc3Rh
bmNlKFVudXNlZCwgZG91YmxlIHgsIGRvdWJsZSB5KSB7IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7
IH0KLSAgLi4uCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygiSGkiLCBfLCBfKSkuV2lsbE9uY2Uo
SW52b2tlKERpc3RhbmNlKSk7Ci1gYGAKLQotSW4gYEludm9rZUFyZ3VtZW50PE4+KC4uLilgLCBp
ZiBhbiBhcmd1bWVudCBuZWVkcyB0byBiZSBwYXNzZWQgYnkgcmVmZXJlbmNlLCB3cmFwIGl0IGlu
c2lkZSBgQnlSZWYoKWAuIEZvciBleGFtcGxlLAotYGBgCi0gIEludm9rZUFyZ3VtZW50PDI+KDUs
IHN0cmluZygiSGkiKSwgQnlSZWYoZm9vKSkKLWBgYAotY2FsbHMgdGhlIG1vY2sgZnVuY3Rpb24n
cyAjMiBhcmd1bWVudCwgcGFzc2luZyB0byBpdCBgNWAgYW5kIGBzdHJpbmcoIkhpIilgIGJ5IHZh
bHVlLCBhbmQgYGZvb2AgYnkgcmVmZXJlbmNlLgotCi0jIyBEZWZhdWx0IEFjdGlvbiAjIwotCi18
YERvRGVmYXVsdCgpYHxEbyB0aGUgZGVmYXVsdCBhY3Rpb24gKHNwZWNpZmllZCBieSBgT05fQ0FM
TCgpYCBvciB0aGUgYnVpbHQtaW4gb25lKS58Ci18Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Ci0KLSoqTm90ZToqKiBkdWUgdG8gdGVjaG5pY2FsIHJlYXNvbnMsIGBEb0RlZmF1bHQoKWAgY2Fu
bm90IGJlIHVzZWQgaW5zaWRlICBhIGNvbXBvc2l0ZSBhY3Rpb24gLSB0cnlpbmcgdG8gZG8gc28g
d2lsbCByZXN1bHQgaW4gYSBydW4tdGltZSBlcnJvci4KLQotIyMgQ29tcG9zaXRlIEFjdGlvbnMg
IyMKLQotfGBEb0FsbChhMSwgYTIsIC4uLiwgYW4pYHxEbyBhbGwgYWN0aW9ucyBgYTFgIHRvIGBh
bmAgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIGBhbmAgaW4gZWFjaCBpbnZvY2F0aW9uLiBUaGUg
Zmlyc3QgYG4gLSAxYCBzdWItYWN0aW9ucyBtdXN0IHJldHVybiB2b2lkLiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgSWdub3JlUmVzdWx0KGEpYCAgICAgICB8
UGVyZm9ybSBhY3Rpb24gYGFgIGFuZCBpZ25vcmUgaXRzIHJlc3VsdC4gYGFgIG11c3Qgbm90IHJl
dHVybiB2b2lkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotfGBXaXRoQXJnPE4+KGEpYCAgICAgICAgIHxQYXNzIHRoZSBgTmAtdGgg
KDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvIGFjdGlvbiBgYWAgYW5k
IHBlcmZvcm0gaXQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18
YFdpdGhBcmdzPE4xLCBOMiwgLi4uLCBOaz4oYSlgfFBhc3MgdGhlIHNlbGVjdGVkICgwLWJhc2Vk
KSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBhbmQgcGVyZm9y
bSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgV2l0aG91dEFy
Z3MoYSlgICAgICAgICB8UGVyZm9ybSBhY3Rpb24gYGFgIHdpdGhvdXQgYW55IGFyZ3VtZW50cy4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0jIyBEZWZpbmluZyBBY3Rpb25zICMjCi0K
LXwgYEFDVElPTihTdW0pIHsgcmV0dXJuIGFyZzAgKyBhcmcxOyB9YCB8IERlZmluZXMgYW4gYWN0
aW9uIGBTdW0oKWAgdG8gcmV0dXJuIHRoZSBzdW0gb2YgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1
bWVudCAjMCBhbmQgIzEuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYEFDVElPTl9QKFBsdXMsIG4p
IHsgcmV0dXJuIGFyZzAgKyBuOyB9YCB8IERlZmluZXMgYW4gYWN0aW9uIGBQbHVzKG4pYCB0byBy
ZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50ICMwIGFuZCBgbmAu
IHwKLXwgYEFDVElPTl9QayhGb28sIHAxLCAuLi4sIHBrKSB7IHN0YXRlbWVudHM7IH1gIHwgRGVm
aW5lcyBhIHBhcmFtZXRlcml6ZWQgYWN0aW9uIGBGb28ocDEsIC4uLiwgcGspYCB0byBleGVjdXRl
IHRoZSBnaXZlbiBgc3RhdGVtZW50c2AuICAgfAotCi1UaGUgYEFDVElPTipgIG1hY3JvcyBjYW5u
b3QgYmUgdXNlZCBpbnNpZGUgYSBmdW5jdGlvbiBvciBjbGFzcy4KLQotIyBDYXJkaW5hbGl0aWVz
ICMKLQotVGhlc2UgYXJlIHVzZWQgaW4gYFRpbWVzKClgIHRvIHNwZWNpZnkgaG93IG1hbnkgdGlt
ZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkOgotCi18YEFueU51bWJlcigpYHxUaGUg
ZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBhbnkgbnVtYmVyIG9mIHRpbWVzLnwKLXw6LS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBB
dExlYXN0KG4pYCB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYXQgbGVhc3QgYG5gIHRpbWVzLiAgICAg
ICB8Ci18YEF0TW9zdChuKWAgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBtb3N0IGBuYCB0aW1l
cy4gICAgICAgIHwKLXxgQmV0d2VlbihtLCBuKWB8VGhlIGNhbGwgaXMgZXhwZWN0ZWQgYmV0d2Vl
biBgbWAgYW5kIGBuYCAoaW5jbHVzaXZlKSB0aW1lcy58Ci18YEV4YWN0bHkobikgb3IgbmB8VGhl
IGNhbGwgaXMgZXhwZWN0ZWQgZXhhY3RseSBgbmAgdGltZXMuIEluIHBhcnRpY3VsYXIsIHRoZSBj
YWxsIHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBgbmAgaXMgMC58Ci0KLSMgRXhwZWN0YXRpb24g
T3JkZXIgIwotCi1CeSBkZWZhdWx0LCB0aGUgZXhwZWN0YXRpb25zIGNhbiBiZSBtYXRjaGVkIGlu
IF9hbnlfIG9yZGVyLiAgSWYgc29tZQotb3IgYWxsIGV4cGVjdGF0aW9ucyBtdXN0IGJlIG1hdGNo
ZWQgaW4gYSBnaXZlbiBvcmRlciwgdGhlcmUgYXJlIHR3bwotd2F5cyB0byBzcGVjaWZ5IGl0LiAg
VGhleSBjYW4gYmUgdXNlZCBlaXRoZXIgaW5kZXBlbmRlbnRseSBvcgotdG9nZXRoZXIuCi0KLSMj
IFRoZSBBZnRlciBDbGF1c2UgIyMKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9u
OwotLi4uCi1FeHBlY3RhdGlvbiBpbml0X3ggPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRYKCkpOwot
RXhwZWN0YXRpb24gaW5pdF95ID0gRVhQRUNUX0NBTEwoZm9vLCBJbml0WSgpKTsKLUVYUEVDVF9D
QUxMKGZvbywgQmFyKCkpCi0gICAgLkFmdGVyKGluaXRfeCwgaW5pdF95KTsKLWBgYAotc2F5cyB0
aGF0IGBCYXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGJvdGggYEluaXRYKClgIGFuZAot
YEluaXRZKClgIGhhdmUgYmVlbiBjYWxsZWQuCi0KLUlmIHlvdSBkb24ndCBrbm93IGhvdyBtYW55
IHByZS1yZXF1aXNpdGVzIGFuIGV4cGVjdGF0aW9uIGhhcyB3aGVuIHlvdQotd3JpdGUgaXQsIHlv
dSBjYW4gdXNlIGFuIGBFeHBlY3RhdGlvblNldGAgdG8gY29sbGVjdCB0aGVtOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6RXhwZWN0YXRpb25TZXQ7Ci0uLi4KLUV4cGVjdGF0aW9uU2V0IGFsbF9p
bml0czsKLWZvciAoaW50IGkgPSAwOyBpIDwgZWxlbWVudF9jb3VudDsgaSsrKSB7Ci0gIGFsbF9p
bml0cyArPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRFbGVtZW50KGkpKTsKLX0KLUVYUEVDVF9DQUxM
KGZvbywgQmFyKCkpCi0gICAgLkFmdGVyKGFsbF9pbml0cyk7Ci1gYGAKLXNheXMgdGhhdCBgQmFy
KClgIGNhbiBiZSBjYWxsZWQgb25seSBhZnRlciBhbGwgZWxlbWVudHMgaGF2ZSBiZWVuCi1pbml0
aWFsaXplZCAoYnV0IHdlIGRvbid0IGNhcmUgYWJvdXQgd2hpY2ggZWxlbWVudHMgZ2V0IGluaXRp
YWxpemVkCi1iZWZvcmUgdGhlIG90aGVycykuCi0KLU1vZGlmeWluZyBhbiBgRXhwZWN0YXRpb25T
ZXRgIGFmdGVyIHVzaW5nIGl0IGluIGFuIGAuQWZ0ZXIoKWAgZG9lc24ndAotYWZmZWN0IHRoZSBt
ZWFuaW5nIG9mIHRoZSBgLkFmdGVyKClgLgotCi0jIyBTZXF1ZW5jZXMgIyMKLQotV2hlbiB5b3Ug
aGF2ZSBhIGxvbmcgY2hhaW4gb2Ygc2VxdWVudGlhbCBleHBlY3RhdGlvbnMsIGl0J3MgZWFzaWVy
IHRvCi1zcGVjaWZ5IHRoZSBvcmRlciB1c2luZyAqKnNlcXVlbmNlcyoqLCB3aGljaCBkb24ndCBy
ZXF1aXJlIHlvdSB0byBnaXZlbgotZWFjaCBleHBlY3RhdGlvbiBpbiB0aGUgY2hhaW4gYSBkaWZm
ZXJlbnQgbmFtZS4gIDxpPkFsbCBleHBlY3RlZDxicj4KLWNhbGxzPC9pPiBpbiB0aGUgc2FtZSBz
ZXF1ZW5jZSBtdXN0IG9jY3VyIGluIHRoZSBvcmRlciB0aGV5IGFyZQotc3BlY2lmaWVkLgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci1TZXF1ZW5jZSBzMSwgczI7Ci0uLi4KLUVY
UEVDVF9DQUxMKGZvbywgUmVzZXQoKSkKLSAgICAuSW5TZXF1ZW5jZShzMSwgczIpCi0gICAgLldp
bGxPbmNlKFJldHVybih0cnVlKSk7Ci1FWFBFQ1RfQ0FMTChmb28sIEdldFNpemUoKSkKLSAgICAu
SW5TZXF1ZW5jZShzMSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKLUVYUEVDVF9DQUxMKGZv
bywgRGVzY3JpYmUoQTxjb25zdCBjaGFyKj4oKSkpCi0gICAgLkluU2VxdWVuY2UoczIpCi0gICAg
LldpbGxPbmNlKFJldHVybigiZHVtbXkiKSk7Ci1gYGAKLXNheXMgdGhhdCBgUmVzZXQoKWAgbXVz
dCBiZSBjYWxsZWQgYmVmb3JlIF9ib3RoXyBgR2V0U2l6ZSgpYCBfYW5kXwotYERlc2NyaWJlKClg
LCBhbmQgdGhlIGxhdHRlciB0d28gY2FuIG9jY3VyIGluIGFueSBvcmRlci4KLQotVG8gcHV0IG1h
bnkgZXhwZWN0YXRpb25zIGluIGEgc2VxdWVuY2UgY29udmVuaWVudGx5OgotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci17Ci0gIEluU2VxdWVuY2UgZHVtbXk7Ci0KLSAgRVhQRUNU
X0NBTEwoLi4uKS4uLjsKLSAgRVhQRUNUX0NBTEwoLi4uKS4uLjsKLSAgLi4uCi0gIEVYUEVDVF9D
QUxMKC4uLikuLi47Ci19Ci1gYGAKLXNheXMgdGhhdCBhbGwgZXhwZWN0ZWQgY2FsbHMgaW4gdGhl
IHNjb3BlIG9mIGBkdW1teWAgbXVzdCBvY2N1ciBpbgotc3RyaWN0IG9yZGVyLiBUaGUgbmFtZSBg
ZHVtbXlgIGlzIGlycmVsZXZhbnQuKQotCi0jIFZlcmlmeWluZyBhbmQgUmVzZXR0aW5nIGEgTW9j
ayAjCi0KLUdvb2dsZSBNb2NrIHdpbGwgdmVyaWZ5IHRoZSBleHBlY3RhdGlvbnMgb24gYSBtb2Nr
IG9iamVjdCB3aGVuIGl0IGlzIGRlc3RydWN0ZWQsIG9yIHlvdSBjYW4gZG8gaXQgZWFybGllcjoK
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwotLi4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3Zl
cyB0aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2JqOwotLy8gcmV0dXJucyB0cnVlIGlmZiBzdWNj
ZXNzZnVsLgotTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqKTsKLS4u
LgotLy8gVmVyaWZpZXMgYW5kIHJlbW92ZXMgdGhlIGV4cGVjdGF0aW9ucyBvbiBtb2NrX29iajsK
LS8vIGFsc28gcmVtb3ZlcyB0aGUgZGVmYXVsdCBhY3Rpb25zIHNldCBieSBPTl9DQUxMKCk7Ci0v
LyByZXR1cm5zIHRydWUgaWZmIHN1Y2Nlc3NmdWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhcigmbW9j
a19vYmopOwotYGBgCi0KLVlvdSBjYW4gYWxzbyB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgYSBtb2Nr
IG9iamVjdCBjYW4gYmUgbGVha2VkIGFuZCBkb2Vzbid0Ci1uZWVkIHRvIGJlIHZlcmlmaWVkOgot
YGBgCi1Nb2NrOjpBbGxvd0xlYWsoJm1vY2tfb2JqKTsKLWBgYAotCi0jIE1vY2sgQ2xhc3NlcyAj
Ci0KLUdvb2dsZSBNb2NrIGRlZmluZXMgYSBjb252ZW5pZW50IG1vY2sgY2xhc3MgdGVtcGxhdGUK
LWBgYAotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTEsIC4uLiwgQW4pPiB7Ci0gcHVibGljOgotICBN
T0NLX01FVEhPRG4oQ2FsbCwgUihBMSwgLi4uLCBBbikpOwotfTsKLWBgYAotU2VlIHRoaXMgW3Jl
Y2lwZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0Nvb2tC
b29rI1VzaW5nX0NoZWNrX1BvaW50cykgZm9yIG9uZSBhcHBsaWNhdGlvbiBvZiBpdC4KLQotIyBG
bGFncyAjCi0KLXwgYC0tZ21vY2tfY2F0Y2hfbGVha2VkX21vY2tzPTBgIHwgRG9uJ3QgcmVwb3J0
IGxlYWtlZCBtb2NrIG9iamVjdHMgYXMgZmFpbHVyZXMuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXwgYC0tZ21vY2tfdmVyYm9zZT1MRVZFTGAgICAgICAgIHwgU2V0cyB0aGUgZGVmYXVs
dCB2ZXJib3NpdHkgbGV2ZWwgKGBpbmZvYCwgYHdhcm5pbmdgLCBvciBgZXJyb3JgKSBvZiBHb29n
bGUgTW9jayBtZXNzYWdlcy4gfApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Db29rQm9vay5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3Mv
djFfNi9Db29rQm9vay5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5NzVhMDAz
NWMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82L0Nvb2tCb29rLm1k
CisrKyAvZGV2L251bGwKQEAgLTEsMzM0MiArMCwwIEBACi0KLQotWW91IGNhbiBmaW5kIHJlY2lw
ZXMgZm9yIHVzaW5nIEdvb2dsZSBNb2NrIGhlcmUuIElmIHlvdSBoYXZlbid0IHlldCwKLXBsZWFz
ZSByZWFkIHRoZSBbRm9yRHVtbWllc10oVjFfNl9Gb3JEdW1taWVzLm1kKSBkb2N1bWVudCBmaXJz
dCB0byBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKLXRoZSBiYXNpY3MuCi0KLSoqTm90ZToqKiBH
b29nbGUgTW9jayBsaXZlcyBpbiB0aGUgYHRlc3RpbmdgIG5hbWUgc3BhY2UuIEZvcgotcmVhZGFi
aWxpdHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHdyaXRlIGB1c2luZyA6OnRlc3Rpbmc6OkZvbztg
IG9uY2UgaW4KLXlvdXIgZmlsZSBiZWZvcmUgdXNpbmcgdGhlIG5hbWUgYEZvb2AgZGVmaW5lZCBi
eSBHb29nbGUgTW9jay4gV2Ugb21pdAotc3VjaCBgdXNpbmdgIHN0YXRlbWVudHMgaW4gdGhpcyBw
YWdlIGZvciBicmV2aXR5LCBidXQgeW91IHNob3VsZCBkbyBpdAotaW4geW91ciBvd24gY29kZS4K
LQotIyBDcmVhdGluZyBNb2NrIENsYXNzZXMgIwotCi0jIyBNb2NraW5nIFByaXZhdGUgb3IgUHJv
dGVjdGVkIE1ldGhvZHMgIyMKLQotWW91IG11c3QgYWx3YXlzIHB1dCBhIG1vY2sgbWV0aG9kIGRl
ZmluaXRpb24gKGBNT0NLX01FVEhPRCpgKSBpbiBhCi1gcHVibGljOmAgc2VjdGlvbiBvZiB0aGUg
bW9jayBjbGFzcywgcmVnYXJkbGVzcyBvZiB0aGUgbWV0aG9kIGJlaW5nCi1tb2NrZWQgYmVpbmcg
YHB1YmxpY2AsIGBwcm90ZWN0ZWRgLCBvciBgcHJpdmF0ZWAgaW4gdGhlIGJhc2UgY2xhc3MuCi1U
aGlzIGFsbG93cyBgT05fQ0FMTGAgYW5kIGBFWFBFQ1RfQ0FMTGAgdG8gcmVmZXJlbmNlIHRoZSBt
b2NrIGZ1bmN0aW9uCi1mcm9tIG91dHNpZGUgb2YgdGhlIG1vY2sgY2xhc3MuICAoWWVzLCBDKysg
YWxsb3dzIGEgc3ViY2xhc3MgdG8gY2hhbmdlCi10aGUgYWNjZXNzIGxldmVsIG9mIGEgdmlydHVh
bCBmdW5jdGlvbiBpbiB0aGUgYmFzZSBjbGFzcy4pICBFeGFtcGxlOgotCi1gYGAKLWNsYXNzIEZv
byB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIFRyYW5zZm9ybShHYWRnZXQqIGcp
ID0gMDsKLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFJlc3VtZSgpOwotCi0gcHJpdmF0
ZToKLSAgdmlydHVhbCBpbnQgR2V0VGltZU91dCgpOwotfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLi4uCi0gIE1PQ0tfTUVUSE9EMShUcmFuc2Zvcm0sIGJv
b2woR2FkZ2V0KiBnKSk7Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBtdXN0IGJlIGluIHRoZSBwdWJs
aWMgc2VjdGlvbiwgZXZlbiB0aG91Z2ggdGhlCi0gIC8vIG1ldGhvZHMgYXJlIHByb3RlY3RlZCBv
ciBwcml2YXRlIGluIHRoZSBiYXNlIGNsYXNzLgotICBNT0NLX01FVEhPRDAoUmVzdW1lLCB2b2lk
KCkpOwotICBNT0NLX01FVEhPRDAoR2V0VGltZU91dCwgaW50KCkpOwotfTsKLWBgYAotCi0jIyBN
b2NraW5nIE92ZXJsb2FkZWQgTWV0aG9kcyAjIwotCi1Zb3UgY2FuIG1vY2sgb3ZlcmxvYWRlZCBm
dW5jdGlvbnMgYXMgdXN1YWwuIE5vIHNwZWNpYWwgYXR0ZW50aW9uIGlzIHJlcXVpcmVkOgotCi1g
YGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotCi0gIC8vIE11c3QgYmUgdmlydHVhbCBhcyB3ZSdsbCBp
bmhlcml0IGZyb20gRm9vLgotICB2aXJ0dWFsIH5Gb28oKTsKLQotICAvLyBPdmVybG9hZGVkIG9u
IHRoZSB0eXBlcyBhbmQvb3IgbnVtYmVycyBvZiBhcmd1bWVudHMuCi0gIHZpcnR1YWwgaW50IEFk
ZChFbGVtZW50IHgpOwotICB2aXJ0dWFsIGludCBBZGQoaW50IHRpbWVzLCBFbGVtZW50IHgpOwot
Ci0gIC8vIE92ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QuCi0gIHZp
cnR1YWwgQmFyJiBHZXRCYXIoKTsKLSAgdmlydHVhbCBjb25zdCBCYXImIEdldEJhcigpIGNvbnN0
OwotfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgTU9DS19NRVRI
T0QxKEFkZCwgaW50KEVsZW1lbnQgeCkpOwotICBNT0NLX01FVEhPRDIoQWRkLCBpbnQoaW50IHRp
bWVzLCBFbGVtZW50IHgpOwotCi0gIE1PQ0tfTUVUSE9EMChHZXRCYXIsIEJhciYoKSk7Ci0gIE1P
Q0tfQ09OU1RfTUVUSE9EMChHZXRCYXIsIGNvbnN0IEJhciYoKSk7Ci19OwotYGBgCi0KLSoqTm90
ZToqKiBpZiB5b3UgZG9uJ3QgbW9jayBhbGwgdmVyc2lvbnMgb2YgdGhlIG92ZXJsb2FkZWQgbWV0
aG9kLCB0aGUKLWNvbXBpbGVyIHdpbGwgZ2l2ZSB5b3UgYSB3YXJuaW5nIGFib3V0IHNvbWUgbWV0
aG9kcyBpbiB0aGUgYmFzZSBjbGFzcwotYmVpbmcgaGlkZGVuLiBUbyBmaXggdGhhdCwgdXNlIGB1
c2luZ2AgdG8gYnJpbmcgdGhlbSBpbiBzY29wZToKLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7Ci0gIC4uLgotICB1c2luZyBGb286OkFkZDsKLSAgTU9DS19NRVRIT0QxKEFkZCwg
aW50KEVsZW1lbnQgeCkpOwotICAvLyBXZSBkb24ndCB3YW50IHRvIG1vY2sgaW50IEFkZChpbnQg
dGltZXMsIEVsZW1lbnQgeCk7Ci0gIC4uLgotfTsKLWBgYAotCi0jIyBNb2NraW5nIENsYXNzIFRl
bXBsYXRlcyAjIwotCi1UbyBtb2NrIGEgY2xhc3MgdGVtcGxhdGUsIGFwcGVuZCBgX1RgIHRvIHRo
ZSBgTU9DS18qYCBtYWNyb3M6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFz
cyBTdGFja0ludGVyZmFjZSB7Ci0gIC4uLgotICAvLyBNdXN0IGJlIHZpcnR1YWwgYXMgd2UnbGwg
aW5oZXJpdCBmcm9tIFN0YWNrSW50ZXJmYWNlLgotICB2aXJ0dWFsIH5TdGFja0ludGVyZmFjZSgp
OwotCi0gIHZpcnR1YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQ
dXNoKGNvbnN0IEVsZW0mIHgpID0gMDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtPgot
Y2xhc3MgTW9ja1N0YWNrIDogcHVibGljIFN0YWNrSW50ZXJmYWNlPEVsZW0+IHsKLSAgLi4uCi0g
IE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxX1Qo
UHVzaCwgdm9pZChjb25zdCBFbGVtJiB4KSk7Ci19OwotYGBgCi0KLSMjIE1vY2tpbmcgTm9udmly
dHVhbCBNZXRob2RzICMjCi0KLUdvb2dsZSBNb2NrIGNhbiBtb2NrIG5vbi12aXJ0dWFsIGZ1bmN0
aW9ucyB0byBiZSB1c2VkIGluIHdoYXQgd2UgY2FsbCBfaGktcGVyZgotZGVwZW5kZW5jeSBpbmpl
Y3Rpb25fLgotCi1JbiB0aGlzIGNhc2UsIGluc3RlYWQgb2Ygc2hhcmluZyBhIGNvbW1vbiBiYXNl
IGNsYXNzIHdpdGggdGhlIHJlYWwKLWNsYXNzLCB5b3VyIG1vY2sgY2xhc3Mgd2lsbCBiZSBfdW5y
ZWxhdGVkXyB0byB0aGUgcmVhbCBjbGFzcywgYnV0Ci1jb250YWluIG1ldGhvZHMgd2l0aCB0aGUg
c2FtZSBzaWduYXR1cmVzLiAgVGhlIHN5bnRheCBmb3IgbW9ja2luZwotbm9uLXZpcnR1YWwgbWV0
aG9kcyBpcyB0aGUgX3NhbWVfIGFzIG1vY2tpbmcgdmlydHVhbCBtZXRob2RzOgotCi1gYGAKLS8v
IEEgc2ltcGxlIHBhY2tldCBzdHJlYW0gY2xhc3MuICBOb25lIG9mIGl0cyBtZW1iZXJzIGlzIHZp
cnR1YWwuCi1jbGFzcyBDb25jcmV0ZVBhY2tldFN0cmVhbSB7Ci0gcHVibGljOgotICB2b2lkIEFw
cGVuZFBhY2tldChQYWNrZXQqIG5ld19wYWNrZXQpOwotICBjb25zdCBQYWNrZXQqIEdldFBhY2tl
dChzaXplX3QgcGFja2V0X251bWJlcikgY29uc3Q7Ci0gIHNpemVfdCBOdW1iZXJPZlBhY2tldHMo
KSBjb25zdDsKLSAgLi4uCi19OwotCi0vLyBBIG1vY2sgcGFja2V0IHN0cmVhbSBjbGFzcy4gIEl0
IGluaGVyaXRzIGZyb20gbm8gb3RoZXIsIGJ1dCBkZWZpbmVzCi0vLyBHZXRQYWNrZXQoKSBhbmQg
TnVtYmVyT2ZQYWNrZXRzKCkuCi1jbGFzcyBNb2NrUGFja2V0U3RyZWFtIHsKLSBwdWJsaWM6Ci0g
IE1PQ0tfQ09OU1RfTUVUSE9EMShHZXRQYWNrZXQsIGNvbnN0IFBhY2tldCooc2l6ZV90IHBhY2tl
dF9udW1iZXIpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwKE51bWJlck9mUGFja2V0cywgc2l6ZV90
KCkpOwotICAuLi4KLX07Ci1gYGAKLQotTm90ZSB0aGF0IHRoZSBtb2NrIGNsYXNzIGRvZXNuJ3Qg
ZGVmaW5lIGBBcHBlbmRQYWNrZXQoKWAsIHVubGlrZSB0aGUKLXJlYWwgY2xhc3MuIFRoYXQncyBm
aW5lIGFzIGxvbmcgYXMgdGhlIHRlc3QgZG9lc24ndCBuZWVkIHRvIGNhbGwgaXQuCi0KLU5leHQs
IHlvdSBuZWVkIGEgd2F5IHRvIHNheSB0aGF0IHlvdSB3YW50IHRvIHVzZQotYENvbmNyZXRlUGFj
a2V0U3RyZWFtYCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1c2UgYE1vY2tQYWNrZXRTdHJlYW1g
Ci1pbiB0ZXN0cy4gIFNpbmNlIHRoZSBmdW5jdGlvbnMgYXJlIG5vdCB2aXJ0dWFsIGFuZCB0aGUg
dHdvIGNsYXNzZXMgYXJlCi11bnJlbGF0ZWQsIHlvdSBtdXN0IHNwZWNpZnkgeW91ciBjaG9pY2Ug
YXQgX2NvbXBpbGUgdGltZV8gKGFzIG9wcG9zZWQKLXRvIHJ1biB0aW1lKS4KLQotT25lIHdheSB0
byBkbyBpdCBpcyB0byB0ZW1wbGF0aXplIHlvdXIgY29kZSB0aGF0IG5lZWRzIHRvIHVzZSBhIHBh
Y2tldAotc3RyZWFtLiAgTW9yZSBzcGVjaWZpY2FsbHksIHlvdSB3aWxsIGdpdmUgeW91ciBjb2Rl
IGEgdGVtcGxhdGUgdHlwZQotYXJndW1lbnQgZm9yIHRoZSB0eXBlIG9mIHRoZSBwYWNrZXQgc3Ry
ZWFtLiAgSW4gcHJvZHVjdGlvbiwgeW91IHdpbGwKLWluc3RhbnRpYXRlIHlvdXIgdGVtcGxhdGUg
d2l0aCBgQ29uY3JldGVQYWNrZXRTdHJlYW1gIGFzIHRoZSB0eXBlCi1hcmd1bWVudC4gIEluIHRl
c3RzLCB5b3Ugd2lsbCBpbnN0YW50aWF0ZSB0aGUgc2FtZSB0ZW1wbGF0ZSB3aXRoCi1gTW9ja1Bh
Y2tldFN0cmVhbWAuICBGb3IgZXhhbXBsZSwgeW91IG1heSB3cml0ZToKLQotYGBgCi10ZW1wbGF0
ZSA8Y2xhc3MgUGFja2V0U3RyZWFtPgotdm9pZCBDcmVhdGVDb25uZWN0aW9uKFBhY2tldFN0cmVh
bSogc3RyZWFtKSB7IC4uLiB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBQYWNrZXRTdHJlYW0+Ci1jbGFz
cyBQYWNrZXRSZWFkZXIgewotIHB1YmxpYzoKLSAgdm9pZCBSZWFkUGFja2V0cyhQYWNrZXRTdHJl
YW0qIHN0cmVhbSwgc2l6ZV90IHBhY2tldF9udW0pOwotfTsKLWBgYAotCi1UaGVuIHlvdSBjYW4g
dXNlIGBDcmVhdGVDb25uZWN0aW9uPENvbmNyZXRlUGFja2V0U3RyZWFtPigpYCBhbmQKLWBQYWNr
ZXRSZWFkZXI8Q29uY3JldGVQYWNrZXRTdHJlYW0+YCBpbiBwcm9kdWN0aW9uIGNvZGUsIGFuZCB1
c2UKLWBDcmVhdGVDb25uZWN0aW9uPE1vY2tQYWNrZXRTdHJlYW0+KClgIGFuZAotYFBhY2tldFJl
YWRlcjxNb2NrUGFja2V0U3RyZWFtPmAgaW4gdGVzdHMuCi0KLWBgYAotICBNb2NrUGFja2V0U3Ry
ZWFtIG1vY2tfc3RyZWFtOwotICBFWFBFQ1RfQ0FMTChtb2NrX3N0cmVhbSwgLi4uKS4uLjsKLSAg
Li4gc2V0IG1vcmUgZXhwZWN0YXRpb25zIG9uIG1vY2tfc3RyZWFtIC4uLgotICBQYWNrZXRSZWFk
ZXI8TW9ja1BhY2tldFN0cmVhbT4gcmVhZGVyKCZtb2NrX3N0cmVhbSk7Ci0gIC4uLiBleGVyY2lz
ZSByZWFkZXIgLi4uCi1gYGAKLQotIyMgTW9ja2luZyBGcmVlIEZ1bmN0aW9ucyAjIwotCi1JdCdz
IHBvc3NpYmxlIHRvIHVzZSBHb29nbGUgTW9jayB0byBtb2NrIGEgZnJlZSBmdW5jdGlvbiAoaS5l
LiBhCi1DLXN0eWxlIGZ1bmN0aW9uIG9yIGEgc3RhdGljIG1ldGhvZCkuICBZb3UganVzdCBuZWVk
IHRvIHJld3JpdGUgeW91cgotY29kZSB0byB1c2UgYW4gaW50ZXJmYWNlIChhYnN0cmFjdCBjbGFz
cykuCi0KLUluc3RlYWQgb2YgY2FsbGluZyBhIGZyZWUgZnVuY3Rpb24gKHNheSwgYE9wZW5GaWxl
YCkgZGlyZWN0bHksCi1pbnRyb2R1Y2UgYW4gaW50ZXJmYWNlIGZvciBpdCBhbmQgaGF2ZSBhIGNv
bmNyZXRlIHN1YmNsYXNzIHRoYXQgY2FsbHMKLXRoZSBmcmVlIGZ1bmN0aW9uOgotCi1gYGAKLWNs
YXNzIEZpbGVJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBPcGVu
KGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpID0gMDsKLX07Ci0KLWNsYXNzIEZp
bGUgOiBwdWJsaWMgRmlsZUludGVyZmFjZSB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBi
b29sIE9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgewotICAgIHJldHVy
biBPcGVuRmlsZShwYXRoLCBtb2RlKTsKLSAgfQotfTsKLWBgYAotCi1Zb3VyIGNvZGUgc2hvdWxk
IHRhbGsgdG8gYEZpbGVJbnRlcmZhY2VgIHRvIG9wZW4gYSBmaWxlLiAgTm93IGl0J3MKLWVhc3kg
dG8gbW9jayBvdXQgdGhlIGZ1bmN0aW9uLgotCi1UaGlzIG1heSBzZWVtIG11Y2ggaGFzc2xlLCBi
dXQgaW4gcHJhY3RpY2UgeW91IG9mdGVuIGhhdmUgbXVsdGlwbGUKLXJlbGF0ZWQgZnVuY3Rpb25z
IHRoYXQgeW91IGNhbiBwdXQgaW4gdGhlIHNhbWUgaW50ZXJmYWNlLCBzbyB0aGUKLXBlci1mdW5j
dGlvbiBzeW50YWN0aWMgb3ZlcmhlYWQgd2lsbCBiZSBtdWNoIGxvd2VyLgotCi1JZiB5b3UgYXJl
IGNvbmNlcm5lZCBhYm91dCB0aGUgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQgaW5jdXJyZWQgYnkKLXZp
cnR1YWwgZnVuY3Rpb25zLCBhbmQgcHJvZmlsaW5nIGNvbmZpcm1zIHlvdXIgY29uY2VybiwgeW91
IGNhbgotY29tYmluZSB0aGlzIHdpdGggdGhlIHJlY2lwZSBmb3IgW21vY2tpbmcgbm9uLXZpcnR1
YWwgbWV0aG9kc10oI01vY2tpbmdfTm9udmlydHVhbF9NZXRob2RzLm1kKS4KLQotIyMgTmljZSBN
b2NrcyBhbmQgU3RyaWN0IE1vY2tzICMjCi0KLUlmIGEgbW9jayBtZXRob2QgaGFzIG5vIGBFWFBF
Q1RfQ0FMTGAgc3BlYyBidXQgaXMgY2FsbGVkLCBHb29nbGUgTW9jawotd2lsbCBwcmludCBhIHdh
cm5pbmcgYWJvdXQgdGhlICJ1bmludGVyZXN0aW5nIGNhbGwiLiBUaGUgcmF0aW9uYWxlIGlzOgot
Ci0gICogTmV3IG1ldGhvZHMgbWF5IGJlIGFkZGVkIHRvIGFuIGludGVyZmFjZSBhZnRlciBhIHRl
c3QgaXMgd3JpdHRlbi4gV2Ugc2hvdWxkbid0IGZhaWwgYSB0ZXN0IGp1c3QgYmVjYXVzZSBhIG1l
dGhvZCBpdCBkb2Vzbid0IGtub3cgYWJvdXQgaXMgY2FsbGVkLgotICAqIEhvd2V2ZXIsIHRoaXMg
bWF5IGFsc28gbWVhbiB0aGVyZSdzIGEgYnVnIGluIHRoZSB0ZXN0LCBzbyBHb29nbGUgTW9jayBz
aG91bGRuJ3QgYmUgc2lsZW50IGVpdGhlci4gSWYgdGhlIHVzZXIgYmVsaWV2ZXMgdGhlc2UgY2Fs
bHMgYXJlIGhhcm1sZXNzLCBoZSBjYW4gYWRkIGFuIGBFWFBFQ1RfQ0FMTCgpYCB0byBzdXBwcmVz
cyB0aGUgd2FybmluZy4KLQotSG93ZXZlciwgc29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBzdXBw
cmVzcyBhbGwgInVuaW50ZXJlc3RpbmcgY2FsbCIKLXdhcm5pbmdzLCB3aGlsZSBzb21ldGltZXMg
eW91IG1heSB3YW50IHRoZSBvcHBvc2l0ZSwgaS5lLiB0byB0cmVhdCBhbGwKLW9mIHRoZW0gYXMg
ZXJyb3JzLiBHb29nbGUgTW9jayBsZXRzIHlvdSBtYWtlIHRoZSBkZWNpc2lvbiBvbiBhCi1wZXIt
bW9jay1vYmplY3QgYmFzaXMuCi0KLVN1cHBvc2UgeW91ciB0ZXN0IHVzZXMgYSBtb2NrIGNsYXNz
IGBNb2NrRm9vYDoKLQotYGBgCi1URVNUKC4uLikgewotICBNb2NrRm9vIG1vY2tfZm9vOwotICBF
WFBFQ1RfQ0FMTChtb2NrX2ZvbywgRG9UaGlzKCkpOwotICAuLi4gY29kZSB0aGF0IHVzZXMgbW9j
a19mb28gLi4uCi19Ci1gYGAKLQotSWYgYSBtZXRob2Qgb2YgYG1vY2tfZm9vYCBvdGhlciB0aGFu
IGBEb1RoaXMoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIGJlCi1yZXBvcnRlZCBieSBHb29nbGUgTW9j
ayBhcyBhIHdhcm5pbmcuIEhvd2V2ZXIsIGlmIHlvdSByZXdyaXRlIHlvdXIKLXRlc3QgdG8gdXNl
IGBOaWNlTW9jazxNb2NrRm9vPmAgaW5zdGVhZCwgdGhlIHdhcm5pbmcgd2lsbCBiZSBnb25lLAot
cmVzdWx0aW5nIGluIGEgY2xlYW5lciB0ZXN0IG91dHB1dDoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2Zv
bzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1
c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLWBOaWNlTW9jazxNb2NrRm9vPmAgaXMgYSBzdWJj
bGFzcyBvZiBgTW9ja0Zvb2AsIHNvIGl0IGNhbiBiZSB1c2VkCi13aGVyZXZlciBgTW9ja0Zvb2Ag
aXMgYWNjZXB0ZWQuCi0KLUl0IGFsc28gd29ya3MgaWYgYE1vY2tGb29gJ3MgY29uc3RydWN0b3Ig
dGFrZXMgc29tZSBhcmd1bWVudHMsIGFzCi1gTmljZU1vY2s8TW9ja0Zvbz5gICJpbmhlcml0cyIg
YE1vY2tGb29gJ3MgY29uc3RydWN0b3JzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6TmljZU1v
Y2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG1vY2tfZm9vKDUsICJoaSIp
OyAgLy8gQ2FsbHMgTW9ja0Zvbyg1LCAiaGkiKS4KLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERv
VGhpcygpKTsKLSAgLi4uIGNvZGUgdGhhdCB1c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLVRo
ZSB1c2FnZSBvZiBgU3RyaWN0TW9ja2AgaXMgc2ltaWxhciwgZXhjZXB0IHRoYXQgaXQgbWFrZXMg
YWxsCi11bmludGVyZXN0aW5nIGNhbGxzIGZhaWx1cmVzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6U3RyaWN0TW9jazsKLQotVEVTVCguLi4pIHsKLSAgU3RyaWN0TW9jazxNb2NrRm9vPiBtb2Nr
X2ZvbzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhh
dCB1c2VzIG1vY2tfZm9vIC4uLgotCi0gIC8vIFRoZSB0ZXN0IHdpbGwgZmFpbCBpZiBhIG1ldGhv
ZCBvZiBtb2NrX2ZvbyBvdGhlciB0aGFuIERvVGhpcygpCi0gIC8vIGlzIGNhbGxlZC4KLX0KLWBg
YAotCi1UaGVyZSBhcmUgc29tZSBjYXZlYXRzIHRob3VnaCAoSSBkb24ndCBsaWtlIHRoZW0ganVz
dCBhcyBtdWNoIGFzIHRoZQotbmV4dCBndXksIGJ1dCBzYWRseSB0aGV5IGFyZSBzaWRlIGVmZmVj
dHMgb2YgQysrJ3MgbGltaXRhdGlvbnMpOgotCi0gIDEuIGBOaWNlTW9jazxNb2NrRm9vPmAgYW5k
IGBTdHJpY3RNb2NrPE1vY2tGb28+YCBvbmx5IHdvcmsgZm9yIG1vY2sgbWV0aG9kcyBkZWZpbmVk
IHVzaW5nIHRoZSBgTU9DS19NRVRIT0QqYCBmYW1pbHkgb2YgbWFjcm9zICoqZGlyZWN0bHkqKiBp
biB0aGUgYE1vY2tGb29gIGNsYXNzLiBJZiBhIG1vY2sgbWV0aG9kIGlzIGRlZmluZWQgaW4gYSAq
KmJhc2UgY2xhc3MqKiBvZiBgTW9ja0Zvb2AsIHRoZSAibmljZSIgb3IgInN0cmljdCIgbW9kaWZp
ZXIgbWF5IG5vdCBhZmZlY3QgaXQsIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIuIEluIHBhcnRp
Y3VsYXIsIG5lc3RpbmcgYE5pY2VNb2NrYCBhbmQgYFN0cmljdE1vY2tgIChlLmcuIGBOaWNlTW9j
azxTdHJpY3RNb2NrPE1vY2tGb28+ID5gKSBpcyAqKm5vdCoqIHN1cHBvcnRlZC4KLSAgMS4gVGhl
IGNvbnN0cnVjdG9ycyBvZiB0aGUgYmFzZSBtb2NrIChgTW9ja0Zvb2ApIGNhbm5vdCBoYXZlIGFy
Z3VtZW50cyBwYXNzZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSwgd2hpY2ggaGFwcGVucyB0byBi
ZSBiYW5uZWQgYnkgdGhlIFtHb29nbGUgQysrIHN0eWxlIGd1aWRlXShodHRwOi8vZ29vZ2xlLXN0
eWxlZ3VpZGUuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCkuCi0gIDEuIER1
cmluZyB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBvZiBgTW9ja0Zvb2AsIHRoZSBtb2Nr
IG9iamVjdCBpcyBfbm90XyBuaWNlIG9yIHN0cmljdC4gIFRoaXMgbWF5IGNhdXNlIHN1cnByaXNl
cyBpZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciBjYWxscyBhIG1vY2sgbWV0aG9kIG9u
IGB0aGlzYCBvYmplY3QuIChUaGlzIGJlaGF2aW9yLCBob3dldmVyLCBpcyBjb25zaXN0ZW50IHdp
dGggQysrJ3MgZ2VuZXJhbCBydWxlOiBpZiBhIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2Fs
bHMgYSB2aXJ0dWFsIG1ldGhvZCBvZiBgdGhpc2Agb2JqZWN0LCB0aGF0IG1ldGhvZCBpcyB0cmVh
dGVkIGFzIG5vbi12aXJ0dWFsLiAgSW4gb3RoZXIgd29yZHMsIHRvIHRoZSBiYXNlIGNsYXNzJ3Mg
Y29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgYHRoaXNgIG9iamVjdCBiZWhhdmVzIGxpa2UgYW4g
aW5zdGFuY2Ugb2YgdGhlIGJhc2UgY2xhc3MsIG5vdCB0aGUgZGVyaXZlZCBjbGFzcy4gIFRoaXMg
cnVsZSBpcyByZXF1aXJlZCBmb3Igc2FmZXR5LiAgT3RoZXJ3aXNlIGEgYmFzZSBjb25zdHJ1Y3Rv
ciBtYXkgdXNlIG1lbWJlcnMgb2YgYSBkZXJpdmVkIGNsYXNzIGJlZm9yZSB0aGV5IGFyZSBpbml0
aWFsaXplZCwgb3IgYSBiYXNlIGRlc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZl
ZCBjbGFzcyBhZnRlciB0aGV5IGhhdmUgYmVlbiBkZXN0cm95ZWQuKQotCi1GaW5hbGx5LCB5b3Ug
c2hvdWxkIGJlICoqdmVyeSBjYXV0aW91cyoqIHdoZW4gdXNpbmcgdGhpcyBmZWF0dXJlLCBhcyB0
aGUKLWRlY2lzaW9uIHlvdSBtYWtlIGFwcGxpZXMgdG8gKiphbGwqKiBmdXR1cmUgY2hhbmdlcyB0
byB0aGUgbW9jawotY2xhc3MuIElmIGFuIGltcG9ydGFudCBjaGFuZ2UgaXMgbWFkZSBpbiB0aGUg
aW50ZXJmYWNlIHlvdSBhcmUgbW9ja2luZwotKGFuZCB0aHVzIGluIHRoZSBtb2NrIGNsYXNzKSwg
aXQgY291bGQgYnJlYWsgeW91ciB0ZXN0cyAoaWYgeW91IHVzZQotYFN0cmljdE1vY2tgKSBvciBs
ZXQgYnVncyBwYXNzIHRocm91Z2ggd2l0aG91dCBhIHdhcm5pbmcgKGlmIHlvdSB1c2UKLWBOaWNl
TW9ja2ApLiBUaGVyZWZvcmUsIHRyeSB0byBzcGVjaWZ5IHRoZSBtb2NrJ3MgYmVoYXZpb3IgdXNp
bmcKLWV4cGxpY2l0IGBFWFBFQ1RfQ0FMTGAgZmlyc3QsIGFuZCBvbmx5IHR1cm4gdG8gYE5pY2VN
b2NrYCBvcgotYFN0cmljdE1vY2tgIGFzIHRoZSBsYXN0IHJlc29ydC4KLQotIyMgU2ltcGxpZnlp
bmcgdGhlIEludGVyZmFjZSB3aXRob3V0IEJyZWFraW5nIEV4aXN0aW5nIENvZGUgIyMKLQotU29t
ZXRpbWVzIGEgbWV0aG9kIGhhcyBhIGxvbmcgbGlzdCBvZiBhcmd1bWVudHMgdGhhdCBpcyBtb3N0
bHkKLXVuaW50ZXJlc3RpbmcuIEZvciBleGFtcGxlLAotCi1gYGAKLWNsYXNzIExvZ1Npbmsgewot
IHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBzZW5kKExvZ1NldmVyaXR5IHNldmVyaXR5
LCBjb25zdCBjaGFyKiBmdWxsX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBiYXNlX2ZpbGVuYW1lLCBpbnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IHRtKiB0bV90aW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNz
YWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pID0gMDsKLX07Ci1gYGAKLQotVGhpcyBtZXRob2QncyBh
cmd1bWVudCBsaXN0IGlzIGxlbmd0aHkgYW5kIGhhcmQgdG8gd29yayB3aXRoIChsZXQncwotc2F5
IHRoYXQgdGhlIGBtZXNzYWdlYCBhcmd1bWVudCBpcyBub3QgZXZlbiAwLXRlcm1pbmF0ZWQpLiBJ
ZiB3ZSBtb2NrCi1pdCBhcyBpcywgdXNpbmcgdGhlIG1vY2sgd2lsbCBiZSBhd2t3YXJkLiBJZiwg
aG93ZXZlciwgd2UgdHJ5IHRvCi1zaW1wbGlmeSB0aGlzIGludGVyZmFjZSwgd2UnbGwgbmVlZCB0
byBmaXggYWxsIGNsaWVudHMgZGVwZW5kaW5nIG9uCi1pdCwgd2hpY2ggaXMgb2Z0ZW4gaW5mZWFz
aWJsZS4KLQotVGhlIHRyaWNrIGlzIHRvIHJlLWRpc3BhdGNoIHRoZSBtZXRob2QgaW4gdGhlIG1v
Y2sgY2xhc3M6Ci0KLWBgYAotY2xhc3MgU2NvcGVkTW9ja0xvZyA6IHB1YmxpYyBMb2dTaW5rIHsK
LSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIHZvaWQgc2VuZChMb2dTZXZlcml0eSBzZXZlcml0
eSwgY29uc3QgY2hhciogZnVsbF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYmFzZV9maWxlbmFtZSwgaW50IGxpbmUsIGNvbnN0IHRtKiB0bV90aW1lLAotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlLCBzaXplX3QgbWVzc2FnZV9sZW4pIHsK
LSAgICAvLyBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsb2cgc2V2ZXJpdHksIGZ1bGwg
ZmlsZSBuYW1lLCBhbmQKLSAgICAvLyBsb2cgbWVzc2FnZS4KLSAgICBMb2coc2V2ZXJpdHksIGZ1
bGxfZmlsZW5hbWUsIHN0ZDo6c3RyaW5nKG1lc3NhZ2UsIG1lc3NhZ2VfbGVuKSk7Ci0gIH0KLQot
ICAvLyBJbXBsZW1lbnRzIHRoZSBtb2NrIG1ldGhvZDoKLSAgLy8KLSAgLy8gICB2b2lkIExvZyhM
b2dTZXZlcml0eSBzZXZlcml0eSwKLSAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIGZpbGVf
cGF0aCwKLSAgLy8gICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpOwotICBNT0NLX01F
VEhPRDMoTG9nLCB2b2lkKExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBzdHJpbmcmIGZpbGVf
cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIG1lc3NhZ2UpKTsK
LX07Ci1gYGAKLQotQnkgZGVmaW5pbmcgYSBuZXcgbW9jayBtZXRob2Qgd2l0aCBhIHRyaW1tZWQg
YXJndW1lbnQgbGlzdCwgd2UgbWFrZQotdGhlIG1vY2sgY2xhc3MgbXVjaCBtb3JlIHVzZXItZnJp
ZW5kbHkuCi0KLSMjIEFsdGVybmF0aXZlIHRvIE1vY2tpbmcgQ29uY3JldGUgQ2xhc3NlcyAjIwot
Ci1PZnRlbiB5b3UgbWF5IGZpbmQgeW91cnNlbGYgdXNpbmcgY2xhc3NlcyB0aGF0IGRvbid0IGlt
cGxlbWVudAotaW50ZXJmYWNlcy4gSW4gb3JkZXIgdG8gdGVzdCB5b3VyIGNvZGUgdGhhdCB1c2Vz
IHN1Y2ggYSBjbGFzcyAobGV0J3MKLWNhbGwgaXQgYENvbmNyZXRlYCksIHlvdSBtYXkgYmUgdGVt
cHRlZCB0byBtYWtlIHRoZSBtZXRob2RzIG9mCi1gQ29uY3JldGVgIHZpcnR1YWwgYW5kIHRoZW4g
bW9jayBpdC4KLQotVHJ5IG5vdCB0byBkbyB0aGF0LgotCi1NYWtpbmcgYSBub24tdmlydHVhbCBm
dW5jdGlvbiB2aXJ0dWFsIGlzIGEgYmlnIGRlY2lzaW9uLiBJdCBjcmVhdGVzIGFuCi1leHRlbnNp
b24gcG9pbnQgd2hlcmUgc3ViY2xhc3NlcyBjYW4gdHdlYWsgeW91ciBjbGFzcycgYmVoYXZpb3Iu
IFRoaXMKLXdlYWtlbnMgeW91ciBjb250cm9sIG9uIHRoZSBjbGFzcyBiZWNhdXNlIG5vdyBpdCdz
IGhhcmRlciB0byBtYWludGFpbgotdGhlIGNsYXNzJyBpbnZhcmlhbnRzLiBZb3Ugc2hvdWxkIG1h
a2UgYSBmdW5jdGlvbiB2aXJ0dWFsIG9ubHkgd2hlbgotdGhlcmUgaXMgYSB2YWxpZCByZWFzb24g
Zm9yIGEgc3ViY2xhc3MgdG8gb3ZlcnJpZGUgaXQuCi0KLU1vY2tpbmcgY29uY3JldGUgY2xhc3Nl
cyBkaXJlY3RseSBpcyBwcm9ibGVtYXRpYyBhcyBpdCBjcmVhdGVzIGEgdGlnaHQKLWNvdXBsaW5n
IGJldHdlZW4gdGhlIGNsYXNzIGFuZCB0aGUgdGVzdHMgLSBhbnkgc21hbGwgY2hhbmdlIGluIHRo
ZQotY2xhc3MgbWF5IGludmFsaWRhdGUgeW91ciB0ZXN0cyBhbmQgbWFrZSB0ZXN0IG1haW50ZW5h
bmNlIGEgcGFpbi4KLQotVG8gYXZvaWQgc3VjaCBwcm9ibGVtcywgbWFueSBwcm9ncmFtbWVycyBo
YXZlIGJlZW4gcHJhY3RpY2luZyAiY29kaW5nCi10byBpbnRlcmZhY2VzIjogaW5zdGVhZCBvZiB0
YWxraW5nIHRvIHRoZSBgQ29uY3JldGVgIGNsYXNzLCB5b3VyIGNvZGUKLXdvdWxkIGRlZmluZSBh
biBpbnRlcmZhY2UgYW5kIHRhbGsgdG8gaXQuIFRoZW4geW91IGltcGxlbWVudCB0aGF0Ci1pbnRl
cmZhY2UgYXMgYW4gYWRhcHRvciBvbiB0b3Agb2YgYENvbmNyZXRlYC4gSW4gdGVzdHMsIHlvdSBj
YW4gZWFzaWx5Ci1tb2NrIHRoYXQgaW50ZXJmYWNlIHRvIG9ic2VydmUgaG93IHlvdXIgY29kZSBp
cyBkb2luZy4KLQotVGhpcyB0ZWNobmlxdWUgaW5jdXJzIHNvbWUgb3ZlcmhlYWQ6Ci0KLSAgKiBZ
b3UgcGF5IHRoZSBjb3N0IG9mIHZpcnR1YWwgZnVuY3Rpb24gY2FsbHMgKHVzdWFsbHkgbm90IGEg
cHJvYmxlbSkuCi0gICogVGhlcmUgaXMgbW9yZSBhYnN0cmFjdGlvbiBmb3IgdGhlIHByb2dyYW1t
ZXJzIHRvIGxlYXJuLgotCi1Ib3dldmVyLCBpdCBjYW4gYWxzbyBicmluZyBzaWduaWZpY2FudCBi
ZW5lZml0cyBpbiBhZGRpdGlvbiB0byBiZXR0ZXIKLXRlc3RhYmlsaXR5OgotCi0gICogYENvbmNy
ZXRlYCdzIEFQSSBtYXkgbm90IGZpdCB5b3VyIHByb2JsZW0gZG9tYWluIHZlcnkgd2VsbCwgYXMg
eW91IG1heSBub3QgYmUgdGhlIG9ubHkgY2xpZW50IGl0IHRyaWVzIHRvIHNlcnZlLiBCeSBkZXNp
Z25pbmcgeW91ciBvd24gaW50ZXJmYWNlLCB5b3UgaGF2ZSBhIGNoYW5jZSB0byB0YWlsb3IgaXQg
dG8geW91ciBuZWVkIC0geW91IG1heSBhZGQgaGlnaGVyLWxldmVsIGZ1bmN0aW9uYWxpdGllcywg
cmVuYW1lIHN0dWZmLCBldGMgaW5zdGVhZCBvZiBqdXN0IHRyaW1taW5nIHRoZSBjbGFzcy4gVGhp
cyBhbGxvd3MgeW91IHRvIHdyaXRlIHlvdXIgY29kZSAodXNlciBvZiB0aGUgaW50ZXJmYWNlKSBp
biBhIG1vcmUgbmF0dXJhbCB3YXksIHdoaWNoIG1lYW5zIGl0IHdpbGwgYmUgbW9yZSByZWFkYWJs
ZSwgbW9yZSBtYWludGFpbmFibGUsIGFuZCB5b3UnbGwgYmUgbW9yZSBwcm9kdWN0aXZlLgotICAq
IElmIGBDb25jcmV0ZWAncyBpbXBsZW1lbnRhdGlvbiBldmVyIGhhcyB0byBjaGFuZ2UsIHlvdSBk
b24ndCBoYXZlIHRvIHJld3JpdGUgZXZlcnl3aGVyZSBpdCBpcyB1c2VkLiBJbnN0ZWFkLCB5b3Ug
Y2FuIGFic29yYiB0aGUgY2hhbmdlIGluIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVy
ZmFjZSwgYW5kIHlvdXIgb3RoZXIgY29kZSBhbmQgdGVzdHMgd2lsbCBiZSBpbnN1bGF0ZWQgZnJv
bSB0aGlzIGNoYW5nZS4KLQotU29tZSBwZW9wbGUgd29ycnkgdGhhdCBpZiBldmVyeW9uZSBpcyBw
cmFjdGljaW5nIHRoaXMgdGVjaG5pcXVlLCB0aGV5Ci13aWxsIGVuZCB1cCB3cml0aW5nIGxvdHMg
b2YgcmVkdW5kYW50IGNvZGUuIFRoaXMgY29uY2VybiBpcyB0b3RhbGx5Ci11bmRlcnN0YW5kYWJs
ZS4gSG93ZXZlciwgdGhlcmUgYXJlIHR3byByZWFzb25zIHdoeSBpdCBtYXkgbm90IGJlIHRoZQot
Y2FzZToKLQotICAqIERpZmZlcmVudCBwcm9qZWN0cyBtYXkgbmVlZCB0byB1c2UgYENvbmNyZXRl
YCBpbiBkaWZmZXJlbnQgd2F5cywgc28gdGhlIGJlc3QgaW50ZXJmYWNlcyBmb3IgdGhlbSB3aWxs
IGJlIGRpZmZlcmVudC4gVGhlcmVmb3JlLCBlYWNoIG9mIHRoZW0gd2lsbCBoYXZlIGl0cyBvd24g
ZG9tYWluLXNwZWNpZmljIGludGVyZmFjZSBvbiB0b3Agb2YgYENvbmNyZXRlYCwgYW5kIHRoZXkg
d2lsbCBub3QgYmUgdGhlIHNhbWUgY29kZS4KLSAgKiBJZiBlbm91Z2ggcHJvamVjdHMgd2FudCB0
byB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlLCB0aGV5IGNhbiBhbHdheXMgc2hhcmUgaXQsIGp1c3Qg
bGlrZSB0aGV5IGhhdmUgYmVlbiBzaGFyaW5nIGBDb25jcmV0ZWAuIFlvdSBjYW4gY2hlY2sgaW4g
dGhlIGludGVyZmFjZSBhbmQgdGhlIGFkYXB0b3Igc29tZXdoZXJlIG5lYXIgYENvbmNyZXRlYCAo
cGVyaGFwcyBpbiBhIGBjb250cmliYCBzdWItZGlyZWN0b3J5KSBhbmQgbGV0IG1hbnkgcHJvamVj
dHMgdXNlIGl0LgotCi1Zb3UgbmVlZCB0byB3ZWlnaCB0aGUgcHJvcyBhbmQgY29ucyBjYXJlZnVs
bHkgZm9yIHlvdXIgcGFydGljdWxhcgotcHJvYmxlbSwgYnV0IEknZCBsaWtlIHRvIGFzc3VyZSB5
b3UgdGhhdCB0aGUgSmF2YSBjb21tdW5pdHkgaGFzIGJlZW4KLXByYWN0aWNpbmcgdGhpcyBmb3Ig
YSBsb25nIHRpbWUgYW5kIGl0J3MgYSBwcm92ZW4gZWZmZWN0aXZlIHRlY2huaXF1ZQotYXBwbGlj
YWJsZSBpbiBhIHdpZGUgdmFyaWV0eSBvZiBzaXR1YXRpb25zLiA6LSkKLQotIyMgRGVsZWdhdGlu
ZyBDYWxscyB0byBhIEZha2UgIyMKLQotU29tZSB0aW1lcyB5b3UgaGF2ZSBhIG5vbi10cml2aWFs
IGZha2UgaW1wbGVtZW50YXRpb24gb2YgYW4KLWludGVyZmFjZS4gRm9yIGV4YW1wbGU6Ci0KLWBg
YAotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZvbygpIHt9Ci0gIHZpcnR1YWwg
Y2hhciBEb1RoaXMoaW50IG4pID0gMDsKLSAgdmlydHVhbCB2b2lkIERvVGhhdChjb25zdCBjaGFy
KiBzLCBpbnQqIHApID0gMDsKLX07Ci0KLWNsYXNzIEZha2VGb28gOiBwdWJsaWMgRm9vIHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgY2hhciBEb1RoaXMoaW50IG4pIHsKLSAgICByZXR1cm4gKG4gPiAw
KSA/ICcrJyA6Ci0gICAgICAgIChuIDwgMCkgPyAnLScgOiAnMCc7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgRG9UaGF0KGNvbnN0IGNoYXIqIHMsIGludCogcCkgewotICAgICpwID0gc3RybGVuKHMp
OwotICB9Ci19OwotYGBgCi0KLU5vdyB5b3Ugd2FudCB0byBtb2NrIHRoaXMgaW50ZXJmYWNlIHN1
Y2ggdGhhdCB5b3UgY2FuIHNldCBleHBlY3RhdGlvbnMKLW9uIGl0LiBIb3dldmVyLCB5b3UgYWxz
byB3YW50IHRvIHVzZSBgRmFrZUZvb2AgZm9yIHRoZSBkZWZhdWx0Ci1iZWhhdmlvciwgYXMgZHVw
bGljYXRpbmcgaXQgaW4gdGhlIG1vY2sgb2JqZWN0IGlzLCB3ZWxsLCBhIGxvdCBvZgotd29yay4K
LQotV2hlbiB5b3UgZGVmaW5lIHRoZSBtb2NrIGNsYXNzIHVzaW5nIEdvb2dsZSBNb2NrLCB5b3Ug
Y2FuIGhhdmUgaXQKLWRlbGVnYXRlIGl0cyBkZWZhdWx0IGFjdGlvbiB0byBhIGZha2UgY2xhc3Mg
eW91IGFscmVhZHkgaGF2ZSwgdXNpbmcKLXRoaXMgcGF0dGVybjoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1
YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLy8gTm9ybWFsIG1vY2sgbWV0aG9kIGRlZmluaXRpb25z
IHVzaW5nIEdvb2dsZSBNb2NrLgotICBNT0NLX01FVEhPRDEoRG9UaGlzLCBjaGFyKGludCBuKSk7
Ci0gIE1PQ0tfTUVUSE9EMihEb1RoYXQsIHZvaWQoY29uc3QgY2hhciogcywgaW50KiBwKSk7Ci0K
LSAgLy8gRGVsZWdhdGVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgb2YgdGhlIG1ldGhvZHMgdG8gYSBG
YWtlRm9vIG9iamVjdC4KLSAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCAqYmVmb3JlKiB0aGUgY3Vz
dG9tIE9OX0NBTEwoKSBzdGF0ZW1lbnRzLgotICB2b2lkIERlbGVnYXRlVG9GYWtlKCkgewotICAg
IE9OX0NBTEwoKnRoaXMsIERvVGhpcyhfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tl
KCZmYWtlXywgJkZha2VGb286OkRvVGhpcykpOwotICAgIE9OX0NBTEwoKnRoaXMsIERvVGhhdChf
LCBfKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmYWtlXywgJkZha2VGb286OkRv
VGhhdCkpOwotICB9Ci0gcHJpdmF0ZToKLSAgRmFrZUZvbyBmYWtlXzsgIC8vIEtlZXBzIGFuIGlu
c3RhbmNlIG9mIHRoZSBmYWtlIGluIHRoZSBtb2NrLgotfTsKLWBgYAotCi1XaXRoIHRoYXQsIHlv
dSBjYW4gdXNlIGBNb2NrRm9vYCBpbiB5b3VyIHRlc3RzIGFzIHVzdWFsLiBKdXN0IHJlbWVtYmVy
Ci10aGF0IGlmIHlvdSBkb24ndCBleHBsaWNpdGx5IHNldCBhbiBhY3Rpb24gaW4gYW4gYE9OX0NB
TEwoKWAgb3IKLWBFWFBFQ1RfQ0FMTCgpYCwgdGhlIGZha2Ugd2lsbCBiZSBjYWxsZWQgdXBvbiB0
byBkbyBpdDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0KLVRFU1QoQWJjVGVzdCwgWHl6
KSB7Ci0gIE1vY2tGb28gZm9vOwotICBmb28uRGVsZWdhdGVUb0Zha2UoKTsgLy8gRW5hYmxlcyB0
aGUgZmFrZSBmb3IgZGVsZWdhdGlvbi4KLQotICAvLyBQdXQgeW91ciBPTl9DQUxMKGZvbywgLi4u
KXMgaGVyZSwgaWYgYW55LgotCi0gIC8vIE5vIGFjdGlvbiBzcGVjaWZpZWQsIG1lYW5pbmcgdG8g
dXNlIHRoZSBkZWZhdWx0IGFjdGlvbi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOwot
ICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChfLCBfKSk7Ci0KLSAgaW50IG4gPSAwOwotICBFWFBF
Q1RfRVEoJysnLCBmb28uRG9UaGlzKDUpKTsgIC8vIEZha2VGb286OkRvVGhpcygpIGlzIGludm9r
ZWQuCi0gIGZvby5Eb1RoYXQoIkhpIiwgJm4pOyAgICAgICAgICAgLy8gRmFrZUZvbzo6RG9UaGF0
KCkgaXMgaW52b2tlZC4KLSAgRVhQRUNUX0VRKDIsIG4pOwotfQotYGBgCi0KLSoqU29tZSB0aXBz
OioqCi0KLSAgKiBJZiB5b3Ugd2FudCwgeW91IGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgZGVmYXVs
dCBhY3Rpb24gYnkgcHJvdmlkaW5nIHlvdXIgb3duIGBPTl9DQUxMKClgIG9yIHVzaW5nIGAuV2ls
bE9uY2UoKWAgLyBgLldpbGxSZXBlYXRlZGx5KClgIGluIGBFWFBFQ1RfQ0FMTCgpYC4KLSAgKiBJ
biBgRGVsZWdhdGVUb0Zha2UoKWAsIHlvdSBvbmx5IG5lZWQgdG8gZGVsZWdhdGUgdGhlIG1ldGhv
ZHMgd2hvc2UgZmFrZSBpbXBsZW1lbnRhdGlvbiB5b3UgaW50ZW5kIHRvIHVzZS4KLSAgKiBUaGUg
Z2VuZXJhbCB0ZWNobmlxdWUgZGlzY3Vzc2VkIGhlcmUgd29ya3MgZm9yIG92ZXJsb2FkZWQgbWV0
aG9kcywgYnV0IHlvdSdsbCBuZWVkIHRvIHRlbGwgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24g
eW91IG1lYW4uIFRvIGRpc2FtYmlndWF0ZSBhIG1vY2sgZnVuY3Rpb24gKHRoZSBvbmUgeW91IHNw
ZWNpZnkgaW5zaWRlIHRoZSBwYXJlbnRoZXNlcyBvZiBgT05fQ0FMTCgpYCksIHNlZSB0aGUgIlNl
bGVjdGluZyBCZXR3ZWVuIE92ZXJsb2FkZWQgRnVuY3Rpb25zIiBzZWN0aW9uIG9uIHRoaXMgcGFn
ZTsgdG8gZGlzYW1iaWd1YXRlIGEgZmFrZSBmdW5jdGlvbiAodGhlIG9uZSB5b3UgcGxhY2UgaW5z
aWRlIGBJbnZva2UoKWApLCB1c2UgYSBgc3RhdGljX2Nhc3RgIHRvIHNwZWNpZnkgdGhlIGZ1bmN0
aW9uJ3MgdHlwZS4KLSAgKiBIYXZpbmcgdG8gbWl4IGEgbW9jayBhbmQgYSBmYWtlIGlzIG9mdGVu
IGEgc2lnbiBvZiBzb21ldGhpbmcgZ29uZSB3cm9uZy4gUGVyaGFwcyB5b3UgaGF2ZW4ndCBnb3Qg
dXNlZCB0byB0aGUgaW50ZXJhY3Rpb24tYmFzZWQgd2F5IG9mIHRlc3RpbmcgeWV0LiBPciBwZXJo
YXBzIHlvdXIgaW50ZXJmYWNlIGlzIHRha2luZyBvbiB0b28gbWFueSByb2xlcyBhbmQgc2hvdWxk
IGJlIHNwbGl0IHVwLiBUaGVyZWZvcmUsICoqZG9uJ3QgYWJ1c2UgdGhpcyoqLiBXZSB3b3VsZCBv
bmx5IHJlY29tbWVuZCB0byBkbyBpdCBhcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCB3aGVuIHlvdSBh
cmUgcmVmYWN0b3JpbmcgeW91ciBjb2RlLgotCi1SZWdhcmRpbmcgdGhlIHRpcCBvbiBtaXhpbmcg
YSBtb2NrIGFuZCBhIGZha2UsIGhlcmUncyBhbiBleGFtcGxlIG9uCi13aHkgaXQgbWF5IGJlIGEg
YmFkIHNpZ246IFN1cHBvc2UgeW91IGhhdmUgYSBjbGFzcyBgU3lzdGVtYCBmb3IKLWxvdy1sZXZl
bCBzeXN0ZW0gb3BlcmF0aW9ucy4gSW4gcGFydGljdWxhciwgaXQgZG9lcyBmaWxlIGFuZCBJL08K
LW9wZXJhdGlvbnMuIEFuZCBzdXBwb3NlIHlvdSB3YW50IHRvIHRlc3QgaG93IHlvdXIgY29kZSB1
c2VzIGBTeXN0ZW1gCi10byBkbyBJL08sIGFuZCB5b3UganVzdCB3YW50IHRoZSBmaWxlIG9wZXJh
dGlvbnMgdG8gd29yayBub3JtYWxseS4gSWYKLXlvdSBtb2NrIG91dCB0aGUgZW50aXJlIGBTeXN0
ZW1gIGNsYXNzLCB5b3UnbGwgaGF2ZSB0byBwcm92aWRlIGEgZmFrZQotaW1wbGVtZW50YXRpb24g
Zm9yIHRoZSBmaWxlIG9wZXJhdGlvbiBwYXJ0LCB3aGljaCBzdWdnZXN0cyB0aGF0Ci1gU3lzdGVt
YCBpcyB0YWtpbmcgb24gdG9vIG1hbnkgcm9sZXMuCi0KLUluc3RlYWQsIHlvdSBjYW4gZGVmaW5l
IGEgYEZpbGVPcHNgIGludGVyZmFjZSBhbmQgYW4gYElPT3BzYCBpbnRlcmZhY2UKLWFuZCBzcGxp
dCBgU3lzdGVtYCdzIGZ1bmN0aW9uYWxpdGllcyBpbnRvIHRoZSB0d28uIFRoZW4geW91IGNhbiBt
b2NrCi1gSU9PcHNgIHdpdGhvdXQgbW9ja2luZyBgRmlsZU9wc2AuCi0KLSMjIERlbGVnYXRpbmcg
Q2FsbHMgdG8gYSBSZWFsIE9iamVjdCAjIwotCi1XaGVuIHVzaW5nIHRlc3RpbmcgZG91YmxlcyAo
bW9ja3MsIGZha2VzLCBzdHVicywgYW5kIGV0YyksIHNvbWV0aW1lcwotdGhlaXIgYmVoYXZpb3Jz
IHdpbGwgZGlmZmVyIGZyb20gdGhvc2Ugb2YgdGhlIHJlYWwgb2JqZWN0cy4gVGhpcwotZGlmZmVy
ZW5jZSBjb3VsZCBiZSBlaXRoZXIgaW50ZW50aW9uYWwgKGFzIGluIHNpbXVsYXRpbmcgYW4gZXJy
b3Igc3VjaAotdGhhdCB5b3UgY2FuIHRlc3QgdGhlIGVycm9yIGhhbmRsaW5nIGNvZGUpIG9yIHVu
aW50ZW50aW9uYWwuIElmIHlvdXIKLW1vY2tzIGhhdmUgZGlmZmVyZW50IGJlaGF2aW9ycyB0aGFu
IHRoZSByZWFsIG9iamVjdHMgYnkgbWlzdGFrZSwgeW91Ci1jb3VsZCBlbmQgdXAgd2l0aCBjb2Rl
IHRoYXQgcGFzc2VzIHRoZSB0ZXN0cyBidXQgZmFpbHMgaW4gcHJvZHVjdGlvbi4KLQotWW91IGNh
biB1c2UgdGhlIF9kZWxlZ2F0aW5nLXRvLXJlYWxfIHRlY2huaXF1ZSB0byBlbnN1cmUgdGhhdCB5
b3VyCi1tb2NrIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyB0aGUgcmVhbCBvYmplY3Qgd2hpbGUg
cmV0YWluaW5nIHRoZQotYWJpbGl0eSB0byB2YWxpZGF0ZSBjYWxscy4gVGhpcyB0ZWNobmlxdWUg
aXMgdmVyeSBzaW1pbGFyIHRvIHRoZQotZGVsZWdhdGluZy10by1mYWtlIHRlY2huaXF1ZSwgdGhl
IGRpZmZlcmVuY2UgYmVpbmcgdGhhdCB3ZSB1c2UgYSByZWFsCi1vYmplY3QgaW5zdGVhZCBvZiBh
IGZha2UuIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVz
aW5nIDo6dGVzdGluZzo6QXRMZWFzdDsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNb2NrRm9vKCkgewotICAgIC8v
IEJ5IGRlZmF1bHQsIGFsbCBjYWxscyBhcmUgZGVsZWdhdGVkIHRvIHRoZSByZWFsIG9iamVjdC4K
LSAgICBPTl9DQUxMKCp0aGlzLCBEb1RoaXMoKSkKLSAgICAgICAgLldpbGxCeURlZmF1bHQoSW52
b2tlKCZyZWFsXywgJkZvbzo6RG9UaGlzKSk7Ci0gICAgT05fQ0FMTCgqdGhpcywgRG9UaGF0KF8p
KQotICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJnJlYWxfLCAmRm9vOjpEb1RoYXQpKTsK
LSAgICAuLi4KLSAgfQotICBNT0NLX01FVEhPRDAoRG9UaGlzLCAuLi4pOwotICBNT0NLX01FVEhP
RDEoRG9UaGF0LCAuLi4pOwotICAuLi4KLSBwcml2YXRlOgotICBGb28gcmVhbF87Ci19OwotLi4u
Ci0KLSAgTW9ja0ZvbyBtb2NrOwotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIERvVGhpcygpKQotICAg
ICAgLlRpbWVzKDMpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBEb1RoYXQoIkhpIikpCi0gICAgICAu
VGltZXMoQXRMZWFzdCgxKSk7Ci0gIC4uLiB1c2UgbW9jayBpbiB0ZXN0IC4uLgotYGBgCi0KLVdp
dGggdGhpcywgR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhhdCB5b3VyIGNvZGUgbWFkZSB0aGUg
cmlnaHQgY2FsbHMKLSh3aXRoIHRoZSByaWdodCBhcmd1bWVudHMsIGluIHRoZSByaWdodCBvcmRl
ciwgY2FsbGVkIHRoZSByaWdodCBudW1iZXIKLW9mIHRpbWVzLCBldGMpLCBhbmQgYSByZWFsIG9i
amVjdCB3aWxsIGFuc3dlciB0aGUgY2FsbHMgKHNvIHRoZQotYmVoYXZpb3Igd2lsbCBiZSB0aGUg
c2FtZSBhcyBpbiBwcm9kdWN0aW9uKS4gVGhpcyBnaXZlcyB5b3UgdGhlIGJlc3QKLW9mIGJvdGgg
d29ybGRzLgotCi0jIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEgUGFyZW50IENsYXNzICMjCi0KLUlk
ZWFsbHksIHlvdSBzaG91bGQgY29kZSB0byBpbnRlcmZhY2VzLCB3aG9zZSBtZXRob2RzIGFyZSBh
bGwgcHVyZQotdmlydHVhbC4gSW4gcmVhbGl0eSwgc29tZXRpbWVzIHlvdSBkbyBuZWVkIHRvIG1v
Y2sgYSB2aXJ0dWFsIG1ldGhvZAotdGhhdCBpcyBub3QgcHVyZSAoaS5lLCBpdCBhbHJlYWR5IGhh
cyBhbiBpbXBsZW1lbnRhdGlvbikuIEZvciBleGFtcGxlOgotCi1gYGAKLWNsYXNzIEZvbyB7Ci0g
cHVibGljOgotICB2aXJ0dWFsIH5Gb28oKTsKLQotICB2aXJ0dWFsIHZvaWQgUHVyZShpbnQgbikg
PSAwOwotICB2aXJ0dWFsIGludCBDb25jcmV0ZShjb25zdCBjaGFyKiBzdHIpIHsgLi4uIH0KLX07
Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE1vY2tpbmcg
YSBwdXJlIG1ldGhvZC4KLSAgTU9DS19NRVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKLSAgLy8g
TW9ja2luZyBhIGNvbmNyZXRlIG1ldGhvZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4K
LSAgTU9DS19NRVRIT0QxKENvbmNyZXRlLCBpbnQoY29uc3QgY2hhciogc3RyKSk7Ci19OwotYGBg
Ci0KLVNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gY2FsbCBgRm9vOjpDb25jcmV0ZSgpYCBpbnN0
ZWFkIG9mCi1gTW9ja0Zvbzo6Q29uY3JldGUoKWAuIFBlcmhhcHMgeW91IHdhbnQgdG8gZG8gaXQg
YXMgcGFydCBvZiBhIHN0dWIKLWFjdGlvbiwgb3IgcGVyaGFwcyB5b3VyIHRlc3QgZG9lc24ndCBu
ZWVkIHRvIG1vY2sgYENvbmNyZXRlKClgIGF0IGFsbAotKGJ1dCBpdCB3b3VsZCBiZSBvaC1zbyBw
YWluZnVsIHRvIGhhdmUgdG8gZGVmaW5lIGEgbmV3IG1vY2sgY2xhc3MKLXdoZW5ldmVyIHlvdSBk
b24ndCBuZWVkIHRvIG1vY2sgb25lIG9mIGl0cyBtZXRob2RzKS4KLQotVGhlIHRyaWNrIGlzIHRv
IGxlYXZlIGEgYmFjayBkb29yIGluIHlvdXIgbW9jayBjbGFzcyBmb3IgYWNjZXNzaW5nIHRoZQot
cmVhbCBtZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzOgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIC8vIE1vY2tpbmcgYSBwdXJlIG1ldGhvZC4KLSAgTU9D
S19NRVRIT0QxKFB1cmUsIHZvaWQoaW50IG4pKTsKLSAgLy8gTW9ja2luZyBhIGNvbmNyZXRlIG1l
dGhvZC4gIEZvbzo6Q29uY3JldGUoKSBpcyBzaGFkb3dlZC4KLSAgTU9DS19NRVRIT0QxKENvbmNy
ZXRlLCBpbnQoY29uc3QgY2hhciogc3RyKSk7Ci0KLSAgLy8gVXNlIHRoaXMgdG8gY2FsbCBDb25j
cmV0ZSgpIGRlZmluZWQgaW4gRm9vLgotICBpbnQgRm9vQ29uY3JldGUoY29uc3QgY2hhciogc3Ry
KSB7IHJldHVybiBGb286OkNvbmNyZXRlKHN0cik7IH0KLX07Ci1gYGAKLQotTm93LCB5b3UgY2Fu
IGNhbGwgYEZvbzo6Q29uY3JldGUoKWAgaW5zaWRlIGFuIGFjdGlvbiBieToKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLS4uLgotICBFWFBFQ1Rf
Q0FMTChmb28sIENvbmNyZXRlKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZSgmZm9vLCAmTW9j
a0Zvbzo6Rm9vQ29uY3JldGUpKTsKLWBgYAotCi1vciB0ZWxsIHRoZSBtb2NrIG9iamVjdCB0aGF0
IHlvdSBkb24ndCB3YW50IHRvIG1vY2sgYENvbmNyZXRlKClgOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6SW52b2tlOwotLi4uCi0gIE9OX0NBTEwoZm9vLCBDb25jcmV0ZShfKSkKLSAgICAgIC5X
aWxsQnlEZWZhdWx0KEludm9rZSgmZm9vLCAmTW9ja0Zvbzo6Rm9vQ29uY3JldGUpKTsKLWBgYAot
Ci0oV2h5IGRvbid0IHdlIGp1c3Qgd3JpdGUgYEludm9rZSgmZm9vLCAmRm9vOjpDb25jcmV0ZSlg
PyBJZiB5b3UgZG8KLXRoYXQsIGBNb2NrRm9vOjpDb25jcmV0ZSgpYCB3aWxsIGJlIGNhbGxlZCAo
YW5kIGNhdXNlIGFuIGluZmluaXRlCi1yZWN1cnNpb24pIHNpbmNlIGBGb286OkNvbmNyZXRlKClg
IGlzIHZpcnR1YWwuIFRoYXQncyBqdXN0IGhvdyBDKysKLXdvcmtzLikKLQotIyBVc2luZyBNYXRj
aGVycyAjCi0KLSMjIE1hdGNoaW5nIEFyZ3VtZW50IFZhbHVlcyBFeGFjdGx5ICMjCi0KLVlvdSBj
YW4gc3BlY2lmeSBleGFjdGx5IHdoaWNoIGFyZ3VtZW50cyBhIG1vY2sgbWV0aG9kIGlzIGV4cGVj
dGluZzoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotICBFWFBFQ1RfQ0FM
TChmb28sIERvVGhpcyg1KSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7Ci0gIEVYUEVD
VF9DQUxMKGZvbywgRG9UaGF0KCJIZWxsbyIsIGJhcikpOwotYGBgCi0KLSMjIFVzaW5nIFNpbXBs
ZSBNYXRjaGVycyAjIwotCi1Zb3UgY2FuIHVzZSBtYXRjaGVycyB0byBtYXRjaCBhcmd1bWVudHMg
dGhhdCBoYXZlIGEgY2VydGFpbiBwcm9wZXJ0eToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Okdl
OwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0u
Li4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoR2UoNSkpKSAgLy8gVGhlIGFyZ3VtZW50IG11
c3QgYmUgPj0gNS4KLSAgICAgIC5XaWxsT25jZShSZXR1cm4oJ2EnKSk7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGF0KCJIZWxsbyIsIE5vdE51bGwoKSkpOwotICAvLyBUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3Qgbm90IGJlIE5VTEwuCi1gYGAKLQotQSBmcmVxdWVudGx5IHVzZWQgbWF0Y2hlciBp
cyBgX2AsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmc6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
OwotdXNpbmcgOjp0ZXN0aW5nOjpOb3ROdWxsOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9U
aGF0KF8sIE5vdE51bGwoKSkpOwotYGBgCi0KLSMjIENvbWJpbmluZyBNYXRjaGVycyAjIwotCi1Z
b3UgY2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBleGlzdGluZyBvbmVzIHVzaW5nIGBB
bGxPZigpYCwKLWBBbnlPZigpYCwgYW5kIGBOb3QoKWA6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpBbGxPZjsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci11c2luZyA6OnRlc3Rpbmc6Okhhc1N1YnN0
cjsKLXVzaW5nIDo6dGVzdGluZzo6TmU7Ci11c2luZyA6OnRlc3Rpbmc6Ok5vdDsKLS4uLgotICAv
LyBUaGUgYXJndW1lbnQgbXVzdCBiZSA+IDUgYW5kICE9IDEwLgotICBFWFBFQ1RfQ0FMTChmb28s
IERvVGhpcyhBbGxPZihHdCg1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmUo
MTApKSkpOwotCi0gIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IG5vdCBjb250YWluIHN1Yi1z
dHJpbmcgImJsYWgiLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChOb3QoSGFzU3Vic3RyKCJi
bGFoIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7Ci1gYGAKLQotIyMgQ2Fz
dGluZyBNYXRjaGVycyAjIwotCi1Hb29nbGUgTW9jayBtYXRjaGVycyBhcmUgc3RhdGljYWxseSB0
eXBlZCwgbWVhbmluZyB0aGF0IHRoZSBjb21waWxlcgotY2FuIGNhdGNoIHlvdXIgbWlzdGFrZSBp
ZiB5b3UgdXNlIGEgbWF0Y2hlciBvZiB0aGUgd3JvbmcgdHlwZSAoZm9yCi1leGFtcGxlLCBpZiB5
b3UgdXNlIGBFcSg1KWAgdG8gbWF0Y2ggYSBgc3RyaW5nYCBhcmd1bWVudCkuIEdvb2QgZm9yCi15
b3UhCi0KLVNvbWV0aW1lcywgaG93ZXZlciwgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcgYW5k
IHdhbnQgdGhlIGNvbXBpbGVyCi10byBnaXZlIHlvdSBzb21lIHNsYWNrLiBPbmUgZXhhbXBsZSBp
cyB0aGF0IHlvdSBoYXZlIGEgbWF0Y2hlciBmb3IKLWBsb25nYCBhbmQgdGhlIGFyZ3VtZW50IHlv
dSB3YW50IHRvIG1hdGNoIGlzIGBpbnRgLiBXaGlsZSB0aGUgdHdvCi10eXBlcyBhcmVuJ3QgZXhh
Y3RseSB0aGUgc2FtZSwgdGhlcmUgaXMgbm90aGluZyByZWFsbHkgd3Jvbmcgd2l0aAotdXNpbmcg
YSBgTWF0Y2hlcjxsb25nPmAgdG8gbWF0Y2ggYW4gYGludGAgLSBhZnRlciBhbGwsIHdlIGNhbiBm
aXJzdAotY29udmVydCB0aGUgYGludGAgYXJndW1lbnQgdG8gYSBgbG9uZ2AgYmVmb3JlIGdpdmlu
ZyBpdCB0byB0aGUKLW1hdGNoZXIuCi0KLVRvIHN1cHBvcnQgdGhpcyBuZWVkLCBHb29nbGUgTW9j
ayBnaXZlcyB5b3UgdGhlCi1gU2FmZU1hdGNoZXJDYXN0PFQ+KG0pYCBmdW5jdGlvbi4gSXQgY2Fz
dHMgYSBtYXRjaGVyIGBtYCB0byB0eXBlCi1gTWF0Y2hlcjxUPmAuIFRvIGVuc3VyZSBzYWZldHks
IEdvb2dsZSBNb2NrIGNoZWNrcyB0aGF0IChsZXQgYFVgIGJlIHRoZQotdHlwZSBgbWAgYWNjZXB0
cyk6Ci0KLSAgMS4gVHlwZSBgVGAgY2FuIGJlIGltcGxpY2l0bHkgY2FzdCB0byB0eXBlIGBVYDsK
LSAgMS4gV2hlbiBib3RoIGBUYCBhbmQgYFVgIGFyZSBidWlsdC1pbiBhcml0aG1ldGljIHR5cGVz
IChgYm9vbGAsIGludGVnZXJzLCBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyksIHRoZSBjb252
ZXJzaW9uIGZyb20gYFRgIHRvIGBVYCBpcyBub3QgbG9zc3kgKGluIG90aGVyIHdvcmRzLCBhbnkg
dmFsdWUgcmVwcmVzZW50YWJsZSBieSBgVGAgY2FuIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgYFVg
KTsgYW5kCi0gIDEuIFdoZW4gYFVgIGlzIGEgcmVmZXJlbmNlLCBgVGAgbXVzdCBhbHNvIGJlIGEg
cmVmZXJlbmNlIChhcyB0aGUgdW5kZXJseWluZyBtYXRjaGVyIG1heSBiZSBpbnRlcmVzdGVkIGlu
IHRoZSBhZGRyZXNzIG9mIHRoZSBgVWAgdmFsdWUpLgotCi1UaGUgY29kZSB3b24ndCBjb21waWxl
IGlmIGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGlzbid0IG1ldC4KLQotSGVyZSdzIG9uZSBleGFt
cGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6U2FmZU1hdGNoZXJDYXN0OwotCi0vLyBBIGJh
c2UgY2xhc3MgYW5kIGEgY2hpbGQgY2xhc3MuCi1jbGFzcyBCYXNlIHsgLi4uIH07Ci1jbGFzcyBE
ZXJpdmVkIDogcHVibGljIEJhc2UgeyAuLi4gfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBG
b28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKERvVGhpcywgdm9pZChEZXJpdmVkKiBkZXJp
dmVkKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIC8vIG0gaXMgYSBNYXRjaGVyPEJh
c2UqPiB3ZSBnb3QgZnJvbSBzb21ld2hlcmUuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKFNh
ZmVNYXRjaGVyQ2FzdDxEZXJpdmVkKj4obSkpKTsKLWBgYAotCi1JZiB5b3UgZmluZCBgU2FmZU1h
dGNoZXJDYXN0PFQ+KG0pYCB0b28gbGltaXRpbmcsIHlvdSBjYW4gdXNlIGEgc2ltaWxhcgotZnVu
Y3Rpb24gYE1hdGNoZXJDYXN0PFQ+KG0pYC4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBgTWF0Y2hl
ckNhc3RgIHdvcmtzCi1hcyBsb25nIGFzIHlvdSBjYW4gYHN0YXRpY19jYXN0YCB0eXBlIGBUYCB0
byB0eXBlIGBVYC4KLQotYE1hdGNoZXJDYXN0YCBlc3NlbnRpYWxseSBsZXRzIHlvdSBieXBhc3Mg
QysrJ3MgdHlwZSBzeXN0ZW0KLShgc3RhdGljX2Nhc3RgIGlzbid0IGFsd2F5cyBzYWZlIGFzIGl0
IGNvdWxkIHRocm93IGF3YXkgaW5mb3JtYXRpb24sCi1mb3IgZXhhbXBsZSksIHNvIGJlIGNhcmVm
dWwgbm90IHRvIG1pc3VzZS9hYnVzZSBpdC4KLQotIyMgU2VsZWN0aW5nIEJldHdlZW4gT3Zlcmxv
YWRlZCBGdW5jdGlvbnMgIyMKLQotSWYgeW91IGV4cGVjdCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9u
IHRvIGJlIGNhbGxlZCwgdGhlIGNvbXBpbGVyIG1heQotbmVlZCBzb21lIGhlbHAgb24gd2hpY2gg
b3ZlcmxvYWRlZCB2ZXJzaW9uIGl0IGlzLgotCi1UbyBkaXNhbWJpZ3VhdGUgZnVuY3Rpb25zIG92
ZXJsb2FkZWQgb24gdGhlIGNvbnN0LW5lc3Mgb2YgdGhpcyBvYmplY3QsCi11c2UgdGhlIGBDb25z
dCgpYCBhcmd1bWVudCB3cmFwcGVyLgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuUmVm
OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4uLgotICBNT0NLX01FVEhPRDAo
R2V0QmFyLCBCYXImKCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0QmFyLCBjb25zdCBCYXIm
KCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBCYXIgYmFyMSwgYmFyMjsKLSAgRVhQ
RUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkgICAgICAgICAvLyBUaGUgbm9uLWNvbnN0IEdldEJhcigp
LgotICAgICAgLldpbGxPbmNlKFJldHVyblJlZihiYXIxKSk7Ci0gIEVYUEVDVF9DQUxMKENvbnN0
KGZvbyksIEdldEJhcigpKSAgLy8gVGhlIGNvbnN0IEdldEJhcigpLgotICAgICAgLldpbGxPbmNl
KFJldHVyblJlZihiYXIyKSk7Ci1gYGAKLQotKGBDb25zdCgpYCBpcyBkZWZpbmVkIGJ5IEdvb2ds
ZSBNb2NrIGFuZCByZXR1cm5zIGEgYGNvbnN0YCByZWZlcmVuY2UKLXRvIGl0cyBhcmd1bWVudC4p
Ci0KLVRvIGRpc2FtYmlndWF0ZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG51
bWJlciBvZiBhcmd1bWVudHMKLWJ1dCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMsIHlvdSBtYXkg
bmVlZCB0byBzcGVjaWZ5IHRoZSBleGFjdCB0eXBlCi1vZiBhIG1hdGNoZXIsIGVpdGhlciBieSB3
cmFwcGluZyB5b3VyIG1hdGNoZXIgaW4gYE1hdGNoZXI8dHlwZT4oKWAsIG9yCi11c2luZyBhIG1h
dGNoZXIgd2hvc2UgdHlwZSBpcyBmaXhlZCAoYFR5cGVkRXE8dHlwZT5gLCBgQW48dHlwZT4oKWAs
Ci1ldGMpOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6QW47Ci11c2luZyA6OnRlc3Rpbmc6Okx0
OwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpUeXBlZEVxOwot
Ci1jbGFzcyBNb2NrUHJpbnRlciA6IHB1YmxpYyBQcmludGVyIHsKLSBwdWJsaWM6Ci0gIE1PQ0tf
TUVUSE9EMShQcmludCwgdm9pZChpbnQgbikpOwotICBNT0NLX01FVEhPRDEoUHJpbnQsIHZvaWQo
Y2hhciBjKSk7Ci19OwotCi1URVNUKFByaW50ZXJUZXN0LCBQcmludCkgewotICBNb2NrUHJpbnRl
ciBwcmludGVyOwotCi0gIEVYUEVDVF9DQUxMKHByaW50ZXIsIFByaW50KEFuPGludD4oKSkpOyAg
ICAgICAgICAgIC8vIHZvaWQgUHJpbnQoaW50KTsKLSAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJp
bnQoTWF0Y2hlcjxpbnQ+KEx0KDUpKSkpOyAgLy8gdm9pZCBQcmludChpbnQpOwotICBFWFBFQ1Rf
Q0FMTChwcmludGVyLCBQcmludChUeXBlZEVxPGNoYXI+KCdhJykpKTsgICAvLyB2b2lkIFByaW50
KGNoYXIpOwotCi0gIHByaW50ZXIuUHJpbnQoMyk7Ci0gIHByaW50ZXIuUHJpbnQoNik7Ci0gIHBy
aW50ZXIuUHJpbnQoJ2EnKTsKLX0KLWBgYAotCi0jIyBQZXJmb3JtaW5nIERpZmZlcmVudCBBY3Rp
b25zIEJhc2VkIG9uIHRoZSBBcmd1bWVudHMgIyMKLQotV2hlbiBhIG1vY2sgbWV0aG9kIGlzIGNh
bGxlZCwgdGhlIF9sYXN0XyBtYXRjaGluZyBleHBlY3RhdGlvbiB0aGF0J3MKLXN0aWxsIGFjdGl2
ZSB3aWxsIGJlIHNlbGVjdGVkICh0aGluayAibmV3ZXIgb3ZlcnJpZGVzIG9sZGVyIikuIFNvLCB5
b3UKLWNhbiBtYWtlIGEgbWV0aG9kIGRvIGRpZmZlcmVudCB0aGluZ3MgZGVwZW5kaW5nIG9uIGl0
cyBhcmd1bWVudCB2YWx1ZXMKLWxpa2UgdGhpczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87
Ci11c2luZyA6OnRlc3Rpbmc6Okx0OwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLSAg
Ly8gVGhlIGRlZmF1bHQgY2FzZS4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoXykpCi0gICAg
ICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdiJykpOwotCi0gIC8vIFRoZSBtb3JlIHNwZWNpZmlj
IGNhc2UuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKEx0KDUpKSkKLSAgICAgIC5XaWxsUmVw
ZWF0ZWRseShSZXR1cm4oJ2EnKSk7Ci1gYGAKLQotTm93LCBpZiBgZm9vLkRvVGhpcygpYCBpcyBj
YWxsZWQgd2l0aCBhIHZhbHVlIGxlc3MgdGhhbiA1LCBgJ2EnYCB3aWxsCi1iZSByZXR1cm5lZDsg
b3RoZXJ3aXNlIGAnYidgIHdpbGwgYmUgcmV0dXJuZWQuCi0KLSMjIE1hdGNoaW5nIE11bHRpcGxl
IEFyZ3VtZW50cyBhcyBhIFdob2xlICMjCi0KLVNvbWV0aW1lcyBpdCdzIG5vdCBlbm91Z2ggdG8g
bWF0Y2ggdGhlIGFyZ3VtZW50cyBpbmRpdmlkdWFsbHkuIEZvcgotZXhhbXBsZSwgd2UgbWF5IHdh
bnQgdG8gc2F5IHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgbGVzcyB0aGFuCi10aGUg
c2Vjb25kIGFyZ3VtZW50LiBUaGUgYFdpdGgoKWAgY2xhdXNlIGFsbG93cyB1cyB0byBtYXRjaAot
YWxsIGFyZ3VtZW50cyBvZiBhIG1vY2sgZnVuY3Rpb24gYXMgYSB3aG9sZS4gRm9yIGV4YW1wbGUs
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLXVzaW5n
IDo6dGVzdGluZzo6TmU7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBJblJhbmdlKE5lKDApLCBf
KSkKLSAgICAgIC5XaXRoKEx0KCkpOwotYGBgCi0KLXNheXMgdGhhdCB0aGUgZmlyc3QgYXJndW1l
bnQgb2YgYEluUmFuZ2UoKWAgbXVzdCBub3QgYmUgMCwgYW5kIG11c3QgYmUKLWxlc3MgdGhhbiB0
aGUgc2Vjb25kIGFyZ3VtZW50LgotCi1UaGUgZXhwcmVzc2lvbiBpbnNpZGUgYFdpdGgoKWAgbXVz
dCBiZSBhIG1hdGNoZXIgb2YgdHlwZQotYE1hdGNoZXI8dHIxOjp0dXBsZTxBMSwgLi4uLCBBbj4g
PmAsIHdoZXJlIGBBMWAsIC4uLiwgYEFuYCBhcmUgdGhlCi10eXBlcyBvZiB0aGUgZnVuY3Rpb24g
YXJndW1lbnRzLgotCi1Zb3UgY2FuIGFsc28gd3JpdGUgYEFsbEFyZ3MobSlgIGluc3RlYWQgb2Yg
YG1gIGluc2lkZSBgLldpdGgoKWAuIFRoZQotdHdvIGZvcm1zIGFyZSBlcXVpdmFsZW50LCBidXQg
YC5XaXRoKEFsbEFyZ3MoTHQoKSkpYCBpcyBtb3JlIHJlYWRhYmxlCi10aGFuIGAuV2l0aChMdCgp
KWAuCi0KLVlvdSBjYW4gdXNlIGBBcmdzPGsxLCAuLi4sIGtuPihtKWAgdG8gbWF0Y2ggdGhlIGBu
YCBzZWxlY3RlZCBhcmd1bWVudHMKLShhcyBhIHR1cGxlKSBhZ2FpbnN0IGBtYC4gRm9yIGV4YW1w
bGUsCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpBbGxPZjsK
LXVzaW5nIDo6dGVzdGluZzo6QXJnczsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci0uLi4KLSAgRVhQ
RUNUX0NBTEwoZm9vLCBCbGFoKF8sIF8sIF8pKQotICAgICAgLldpdGgoQWxsT2YoQXJnczwwLCAx
PihMdCgpKSwgQXJnczwxLCAyPihMdCgpKSkpOwotYGBgCi0KLXNheXMgdGhhdCBgQmxhaCgpYCB3
aWxsIGJlIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBgeGAsIGB5YCwgYW5kIGB6YCB3aGVyZQotYHgg
PCB5IDwgemAuCi0KLUFzIGEgY29udmVuaWVuY2UgYW5kIGV4YW1wbGUsIEdvb2dsZSBNb2NrIHBy
b3ZpZGVzIHNvbWUgbWF0Y2hlcnMgZm9yCi0yLXR1cGxlcywgaW5jbHVkaW5nIHRoZSBgTHQoKWAg
bWF0Y2hlciBhYm92ZS4gU2VlIHRoZSBbQ2hlYXRTaGVldF0oVjFfNl9DaGVhdFNoZWV0Lm1kKSBm
b3IKLXRoZSBjb21wbGV0ZSBsaXN0LgotCi1Ob3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gcGFzcyB0
aGUgYXJndW1lbnRzIHRvIGEgcHJlZGljYXRlIG9mIHlvdXIgb3duCi0oZS5nLiBgLldpdGgoQXJn
czwwLCAxPihUcnVseSgmTXlQcmVkaWNhdGUpKSlgKSwgdGhhdCBwcmVkaWNhdGUgTVVTVCBiZQot
d3JpdHRlbiB0byB0YWtlIGEgYHRyMTo6dHVwbGVgIGFzIGl0cyBhcmd1bWVudDsgR29vZ2xlIE1v
Y2sgd2lsbCBwYXNzIHRoZSBgbmAKLXNlbGVjdGVkIGFyZ3VtZW50cyBhcyBfb25lXyBzaW5nbGUg
dHVwbGUgdG8gdGhlIHByZWRpY2F0ZS4KLQotIyMgVXNpbmcgTWF0Y2hlcnMgYXMgUHJlZGljYXRl
cyAjIwotCi1IYXZlIHlvdSBub3RpY2VkIHRoYXQgYSBtYXRjaGVyIGlzIGp1c3QgYSBmYW5jeSBw
cmVkaWNhdGUgdGhhdCBhbHNvCi1rbm93cyBob3cgdG8gZGVzY3JpYmUgaXRzZWxmPyBNYW55IGV4
aXN0aW5nIGFsZ29yaXRobXMgdGFrZSBwcmVkaWNhdGVzCi1hcyBhcmd1bWVudHMgKGUuZy4gdGhv
c2UgZGVmaW5lZCBpbiBTVEwncyBgPGFsZ29yaXRobT5gIGhlYWRlciksIGFuZAotaXQgd291bGQg
YmUgYSBzaGFtZSBpZiBHb29nbGUgTW9jayBtYXRjaGVycyBhcmUgbm90IGFsbG93ZWQgdG8KLXBh
cnRpY2lwYXRlLgotCi1MdWNraWx5LCB5b3UgY2FuIHVzZSBhIG1hdGNoZXIgd2hlcmUgYSB1bmFy
eSBwcmVkaWNhdGUgZnVuY3RvciBpcwotZXhwZWN0ZWQgYnkgd3JhcHBpbmcgaXQgaW5zaWRlIHRo
ZSBgTWF0Y2hlcygpYCBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsCi0KLWBgYAotI2luY2x1ZGUgPGFs
Z29yaXRobT4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLXN0ZDo6dmVjdG9yPGludD4gdjsKLS4uLgot
Ly8gSG93IG1hbnkgZWxlbWVudHMgaW4gdiBhcmUgPj0gMTA/Ci1jb25zdCBpbnQgY291bnQgPSBj
b3VudF9pZih2LmJlZ2luKCksIHYuZW5kKCksIE1hdGNoZXMoR2UoMTApKSk7Ci1gYGAKLQotU2lu
Y2UgeW91IGNhbiBidWlsZCBjb21wbGV4IG1hdGNoZXJzIGZyb20gc2ltcGxlciBvbmVzIGVhc2ls
eSB1c2luZwotR29vZ2xlIE1vY2ssIHRoaXMgZ2l2ZXMgeW91IGEgd2F5IHRvIGNvbnZlbmllbnRs
eSBjb25zdHJ1Y3QgY29tcG9zaXRlCi1wcmVkaWNhdGVzIChkb2luZyB0aGUgc2FtZSB1c2luZyBT
VEwncyBgPGZ1bmN0aW9uYWw+YCBoZWFkZXIgaXMganVzdAotcGFpbmZ1bCkuIEZvciBleGFtcGxl
LCBoZXJlJ3MgYSBwcmVkaWNhdGUgdGhhdCdzIHNhdGlzZmllZCBieSBhbnkKLW51bWJlciB0aGF0
IGlzID49IDAsIDw9IDEwMCwgYW5kICE9IDUwOgotCi1gYGAKLU1hdGNoZXMoQWxsT2YoR2UoMCks
IExlKDEwMCksIE5lKDUwKSkpCi1gYGAKLQotIyMgVXNpbmcgTWF0Y2hlcnMgaW4gR29vZ2xlIFRl
c3QgQXNzZXJ0aW9ucyAjIwotCi1TaW5jZSBtYXRjaGVycyBhcmUgYmFzaWNhbGx5IHByZWRpY2F0
ZXMgdGhhdCBhbHNvIGtub3cgaG93IHRvIGRlc2NyaWJlCi10aGVtc2VsdmVzLCB0aGVyZSBpcyBh
IHdheSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVtIGluCi1bR29vZ2xlIFRlc3RdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgYXNzZXJ0aW9ucy4gSXQncwotY2FsbGVkIGBB
U1NFUlRfVEhBVGAgYW5kIGBFWFBFQ1RfVEhBVGA6Ci0KLWBgYAotICBBU1NFUlRfVEhBVCh2YWx1
ZSwgbWF0Y2hlcik7ICAvLyBBc3NlcnRzIHRoYXQgdmFsdWUgbWF0Y2hlcyBtYXRjaGVyLgotICBF
WFBFQ1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcik7ICAvLyBUaGUgbm9uLWZhdGFsIHZlcnNpb24uCi1g
YGAKLQotRm9yIGV4YW1wbGUsIGluIGEgR29vZ2xlIFRlc3QgdGVzdCB5b3UgY2FuIHdyaXRlOgot
Ci1gYGAKLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotCi11c2luZyA6OnRlc3Rpbmc6OkFsbE9m
OwotdXNpbmcgOjp0ZXN0aW5nOjpHZTsKLXVzaW5nIDo6dGVzdGluZzo6TGU7Ci11c2luZyA6OnRl
c3Rpbmc6Ok1hdGNoZXNSZWdleDsKLXVzaW5nIDo6dGVzdGluZzo6U3RhcnRzV2l0aDsKLS4uLgot
Ci0gIEVYUEVDVF9USEFUKEZvbygpLCBTdGFydHNXaXRoKCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RI
QVQoQmFyKCksIE1hdGNoZXNSZWdleCgiTGluZSBcXGQrIikpOwotICBBU1NFUlRfVEhBVChCYXoo
KSwgQWxsT2YoR2UoNSksIExlKDEwKSkpOwotYGBgCi0KLXdoaWNoIChhcyB5b3UgY2FuIHByb2Jh
Ymx5IGd1ZXNzKSBleGVjdXRlcyBgRm9vKClgLCBgQmFyKClgLCBhbmQKLWBCYXooKWAsIGFuZCB2
ZXJpZmllcyB0aGF0OgotCi0gICogYEZvbygpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgc3RhcnRz
IHdpdGggYCJIZWxsbyJgLgotICAqIGBCYXIoKWAgcmV0dXJucyBhIHN0cmluZyB0aGF0IG1hdGNo
ZXMgcmVndWxhciBleHByZXNzaW9uIGAiTGluZSBcXGQrImAuCi0gICogYEJheigpYCByZXR1cm5z
IGEgbnVtYmVyIGluIHRoZSByYW5nZSBbNSwgMTBdLgotCi1UaGUgbmljZSB0aGluZyBhYm91dCB0
aGVzZSBtYWNyb3MgaXMgdGhhdCBfdGhleSByZWFkIGxpa2UKLUVuZ2xpc2hfLiBUaGV5IGdlbmVy
YXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzIHRvby4gRm9yIGV4YW1wbGUsIGlmIHRoZQotZmlyc3Qg
YEVYUEVDVF9USEFUKClgIGFib3ZlIGZhaWxzLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNvbWV0aGlu
ZyBsaWtlOgotCi1gYGAKLVZhbHVlIG9mOiBGb28oKQotICBBY3R1YWw6ICJIaSwgd29ybGQhIgot
RXhwZWN0ZWQ6IHN0YXJ0cyB3aXRoICJIZWxsbyIKLWBgYAotCi0qKkNyZWRpdDoqKiBUaGUgaWRl
YSBvZiBgKEFTU0VSVHxFWFBFQ1QpX1RIQVRgIHdhcyBzdG9sZW4gZnJvbSB0aGUKLVtIYW1jcmVz
dF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2hhbWNyZXN0LykgcHJvamVjdCwgd2hpY2ggYWRk
cwotYGFzc2VydFRoYXQoKWAgdG8gSlVuaXQuCi0KLSMjIFVzaW5nIFByZWRpY2F0ZXMgYXMgTWF0
Y2hlcnMgIyMKLQotR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBidWlsdC1pbiBzZXQgb2YgbWF0Y2hl
cnMuIEluIGNhc2UgeW91IGZpbmQgdGhlbQotbGFja2luZywgeW91IGNhbiB1c2UgYW4gYXJiaXRy
YXkgdW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uIG9yIGZ1bmN0b3IKLWFzIGEgbWF0Y2hlciAtIGFz
IGxvbmcgYXMgdGhlIHByZWRpY2F0ZSBhY2NlcHRzIGEgdmFsdWUgb2YgdGhlIHR5cGUKLXlvdSB3
YW50LiBZb3UgZG8gdGhpcyBieSB3cmFwcGluZyB0aGUgcHJlZGljYXRlIGluc2lkZSB0aGUgYFRy
dWx5KClgCi1mdW5jdGlvbiwgZm9yIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpU
cnVseTsKLQotaW50IElzRXZlbihpbnQgbikgeyByZXR1cm4gKG4gJSAyKSA9PSAwID8gMSA6IDA7
IH0KLS4uLgotCi0gIC8vIEJhcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYW4gZXZlbiBudW1iZXIu
Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKFRydWx5KElzRXZlbikpKTsKLWBgYAotCi1Ob3RlIHRo
YXQgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiAvIGZ1bmN0b3IgZG9lc24ndCBoYXZlIHRvIHJldHVy
bgotYGJvb2xgLiBJdCB3b3JrcyBhcyBsb25nIGFzIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIHVz
ZWQgYXMgdGhlCi1jb25kaXRpb24gaW4gc3RhdGVtZW50IGBpZiAoY29uZGl0aW9uKSAuLi5gLgot
Ci0jIyBNYXRjaGluZyBBcmd1bWVudHMgdGhhdCBBcmUgTm90IENvcHlhYmxlICMjCi0KLVdoZW4g
eW91IGRvIGFuIGBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKGJhcikpYCwgR29vZ2xlIE1vY2sg
c2F2ZXMKLWF3YXkgYSBjb3B5IG9mIGBiYXJgLiBXaGVuIGBGb28oKWAgaXMgY2FsbGVkIGxhdGVy
LCBHb29nbGUgTW9jawotY29tcGFyZXMgdGhlIGFyZ3VtZW50IHRvIGBGb28oKWAgd2l0aCB0aGUg
c2F2ZWQgY29weSBvZiBgYmFyYC4gVGhpcwotd2F5LCB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh
Ym91dCBgYmFyYCBiZWluZyBtb2RpZmllZCBvciBkZXN0cm95ZWQKLWFmdGVyIHRoZSBgRVhQRUNU
X0NBTEwoKWAgaXMgZXhlY3V0ZWQuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB5b3UgdXNlCi1tYXRj
aGVycyBsaWtlIGBFcShiYXIpYCwgYExlKGJhcilgLCBhbmQgc28gb24uCi0KLUJ1dCB3aGF0IGlm
IGBiYXJgIGNhbm5vdCBiZSBjb3BpZWQgKGkuZS4gaGFzIG5vIGNvcHkgY29uc3RydWN0b3IpPyBZ
b3UKLWNvdWxkIGRlZmluZSB5b3VyIG93biBtYXRjaGVyIGZ1bmN0aW9uIGFuZCB1c2UgaXQgd2l0
aCBgVHJ1bHkoKWAsIGFzCi10aGUgcHJldmlvdXMgY291cGxlIG9mIHJlY2lwZXMgaGF2ZSBzaG93
bi4gT3IsIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQKLWF3YXkgZnJvbSBpdCBpZiB5b3UgY2FuIGd1
YXJhbnRlZSB0aGF0IGBiYXJgIHdvbid0IGJlIGNoYW5nZWQgYWZ0ZXIKLXRoZSBgRVhQRUNUX0NB
TEwoKWAgaXMgZXhlY3V0ZWQuIEp1c3QgdGVsbCBHb29nbGUgTW9jayB0aGF0IGl0IHNob3VsZAot
c2F2ZSBhIHJlZmVyZW5jZSB0byBgYmFyYCwgaW5zdGVhZCBvZiBhIGNvcHkgb2YgaXQuIEhlcmUn
cyBob3c6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpFcTsKLXVzaW5nIDo6dGVzdGluZzo6QnlS
ZWY7Ci11c2luZyA6OnRlc3Rpbmc6Okx0OwotLi4uCi0gIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdz
IGFyZ3VtZW50ID09IGJhci4KLSAgRVhQRUNUX0NBTEwobW9ja19vYmosIEZvbyhFcShCeVJlZihi
YXIpKSkpOwotCi0gIC8vIEV4cGVjdHMgdGhhdCBGb28oKSdzIGFyZ3VtZW50IDwgYmFyLgotICBF
WFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKEx0KEJ5UmVmKGJhcikpKSk7Ci1gYGAKLQotUmVtZW1i
ZXI6IGlmIHlvdSBkbyB0aGlzLCBkb24ndCBjaGFuZ2UgYGJhcmAgYWZ0ZXIgdGhlCi1gRVhQRUNU
X0NBTEwoKWAsIG9yIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotCi0jIyBWYWxpZGF0aW5nIGEg
TWVtYmVyIG9mIGFuIE9iamVjdCAjIwotCi1PZnRlbiBhIG1vY2sgZnVuY3Rpb24gdGFrZXMgYSBy
ZWZlcmVuY2UgdG8gb2JqZWN0IGFzIGFuIGFyZ3VtZW50LiBXaGVuCi1tYXRjaGluZyB0aGUgYXJn
dW1lbnQsIHlvdSBtYXkgbm90IHdhbnQgdG8gY29tcGFyZSB0aGUgZW50aXJlIG9iamVjdAotYWdh
aW5zdCBhIGZpeGVkIG9iamVjdCwgYXMgdGhhdCBtYXkgYmUgb3Zlci1zcGVjaWZpY2F0aW9uLiBJ
bnN0ZWFkLAoteW91IG1heSBuZWVkIHRvIHZhbGlkYXRlIGEgY2VydGFpbiBtZW1iZXIgdmFyaWFi
bGUgb3IgdGhlIHJlc3VsdCBvZiBhCi1jZXJ0YWluIGdldHRlciBtZXRob2Qgb2YgdGhlIG9iamVj
dC4gWW91IGNhbiBkbyB0aGlzIHdpdGggYEZpZWxkKClgCi1hbmQgYFByb3BlcnR5KClgLiBNb3Jl
IHNwZWNpZmljYWxseSwKLQotYGBgCi1GaWVsZCgmRm9vOjpiYXIsIG0pCi1gYGAKLQotaXMgYSBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9zZSBgYmFyYCBtZW1iZXIgdmFy
aWFibGUKLXNhdGlzZmllcyBtYXRjaGVyIGBtYC4KLQotYGBgCi1Qcm9wZXJ0eSgmRm9vOjpiYXos
IG0pCi1gYGAKLQotaXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGBGb29gIG9iamVjdCB3aG9z
ZSBgYmF6KClgIG1ldGhvZCByZXR1cm5zCi1hIHZhbHVlIHRoYXQgc2F0aXNmaWVzIG1hdGNoZXIg
YG1gLgotCi1Gb3IgZXhhbXBsZToKLQotPiB8IGBGaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKWAg
fCBNYXRjaGVzIGB4YCB3aGVyZSBgeC5udW1iZXIgPj0gM2AuIHwKLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotPiB8
IGBQcm9wZXJ0eSgmRm9vOjpuYW1lLCBTdGFydHNXaXRoKCJKb2huICIpKWAgfCBNYXRjaGVzIGB4
YCB3aGVyZSBgeC5uYW1lKClgIHN0YXJ0cyB3aXRoIGAiSm9obiAiYC4gfAotCi1Ob3RlIHRoYXQg
aW4gYFByb3BlcnR5KCZGb286OmJheiwgLi4uKWAsIG1ldGhvZCBgYmF6KClgIG11c3QgdGFrZSBu
bwotYXJndW1lbnQgYW5kIGJlIGRlY2xhcmVkIGFzIGBjb25zdGAuCi0KLUJUVywgYEZpZWxkKClg
IGFuZCBgUHJvcGVydHkoKWAgY2FuIGFsc28gbWF0Y2ggcGxhaW4gcG9pbnRlcnMgdG8KLW9iamVj
dHMuIEZvciBpbnN0YW5jZSwKLQotYGBgCi1GaWVsZCgmRm9vOjpudW1iZXIsIEdlKDMpKQotYGBg
Ci0KLW1hdGNoZXMgYSBwbGFpbiBwb2ludGVyIGBwYCB3aGVyZSBgcC0+bnVtYmVyID49IDNgLiBJ
ZiBgcGAgaXMgYE5VTExgLAotdGhlIG1hdGNoIHdpbGwgYWx3YXlzIGZhaWwgcmVnYXJkbGVzcyBv
ZiB0aGUgaW5uZXIgbWF0Y2hlci4KLQotV2hhdCBpZiB5b3Ugd2FudCB0byB2YWxpZGF0ZSBtb3Jl
IHRoYW4gb25lIG1lbWJlcnMgYXQgdGhlIHNhbWUgdGltZT8KLVJlbWVtYmVyIHRoYXQgdGhlcmUg
aXMgYEFsbE9mKClgLgotCi0jIyBWYWxpZGF0aW5nIHRoZSBWYWx1ZSBQb2ludGVkIHRvIGJ5IGEg
UG9pbnRlciBBcmd1bWVudCAjIwotCi1DKysgZnVuY3Rpb25zIG9mdGVuIHRha2UgcG9pbnRlcnMg
YXMgYXJndW1lbnRzLiBZb3UgY2FuIHVzZSBtYXRjaGVycwotbGlrZSBgTlVMTGAsIGBOb3ROdWxs
KClgLCBhbmQgb3RoZXIgY29tcGFyaXNvbiBtYXRjaGVycyB0byBtYXRjaCBhCi1wb2ludGVyLCBi
dXQgd2hhdCBpZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIF9wb2ludGVkIHRvXyBi
eQotdGhlIHBvaW50ZXIsIGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgaXRzZWxmLCBoYXMgYSBjZXJ0
YWluIHByb3BlcnR5PwotV2VsbCwgeW91IGNhbiB1c2UgdGhlIGBQb2ludGVlKG0pYCBtYXRjaGVy
LgotCi1gUG9pbnRlZShtKWAgbWF0Y2hlcyBhIHBvaW50ZXIgaWZmIGBtYCBtYXRjaGVzIHRoZSB2
YWx1ZSB0aGUgcG9pbnRlcgotcG9pbnRzIHRvLiBGb3IgZXhhbXBsZToKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OkdlOwotdXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOwotLi4uCi0gIEVYUEVDVF9D
QUxMKGZvbywgQmFyKFBvaW50ZWUoR2UoMykpKSk7Ci1gYGAKLQotZXhwZWN0cyBgZm9vLkJhcigp
YCB0byBiZSBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSB2YWx1ZQotZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIDMuCi0KLU9uZSBuaWNlIHRoaW5nIGFib3V0IGBQb2ludGVl
KClgIGlzIHRoYXQgaXQgdHJlYXRzIGEgYE5VTExgIHBvaW50ZXIgYXMKLWEgbWF0Y2ggZmFpbHVy
ZSwgc28geW91IGNhbiB3cml0ZSBgUG9pbnRlZShtKWAgaW5zdGVhZCBvZgotCi1gYGAKLSAgQWxs
T2YoTm90TnVsbCgpLCBQb2ludGVlKG0pKQotYGBgCi0KLXdpdGhvdXQgd29ycnlpbmcgdGhhdCBh
IGBOVUxMYCBwb2ludGVyIHdpbGwgY3Jhc2ggeW91ciB0ZXN0LgotCi1BbHNvLCBkaWQgd2UgdGVs
bCB5b3UgdGhhdCBgUG9pbnRlZSgpYCB3b3JrcyB3aXRoIGJvdGggcmF3IHBvaW50ZXJzCi0qKmFu
ZCoqIHNtYXJ0IHBvaW50ZXJzIChgbGlua2VkX3B0cmAsIGBzaGFyZWRfcHRyYCwgYHNjb3BlZF9w
dHJgLCBhbmQKLWV0Yyk/Ci0KLVdoYXQgaWYgeW91IGhhdmUgYSBwb2ludGVyIHRvIHBvaW50ZXI/
IFlvdSBndWVzc2VkIGl0IC0geW91IGNhbiB1c2UKLW5lc3RlZCBgUG9pbnRlZSgpYCB0byBwcm9i
ZSBkZWVwZXIgaW5zaWRlIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsCi1gUG9pbnRlZShQb2ludGVl
KEx0KDMpKSlgIG1hdGNoZXMgYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgcG9pbnRlcgotdGhh
dCBwb2ludHMgdG8gYSBudW1iZXIgbGVzcyB0aGFuIDMgKHdoYXQgYSBtb3V0aGZ1bC4uLikuCi0K
LSMjIFRlc3RpbmcgYSBDZXJ0YWluIFByb3BlcnR5IG9mIGFuIE9iamVjdCAjIwotCi1Tb21ldGlt
ZXMgeW91IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuIG9iamVjdCBhcmd1bWVudCBoYXMgYSBjZXJ0
YWluCi1wcm9wZXJ0eSwgYnV0IHRoZXJlIGlzIG5vIGV4aXN0aW5nIG1hdGNoZXIgdGhhdCBkb2Vz
IHRoaXMuIElmIHlvdSB3YW50Ci1nb29kIGVycm9yIG1lc3NhZ2VzLCB5b3Ugc2hvdWxkIGRlZmlu
ZSBhIG1hdGNoZXIuIElmIHlvdSB3YW50IHRvIGRvIGl0Ci1xdWljayBhbmQgZGlydHksIHlvdSBj
b3VsZCBnZXQgYXdheSB3aXRoIHdyaXRpbmcgYW4gb3JkaW5hcnkgZnVuY3Rpb24uCi0KLUxldCdz
IHNheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmplY3Qgb2YgdHlw
ZSBgRm9vYCwKLXdoaWNoIGhhcyBhbiBgaW50IGJhcigpYCBtZXRob2QgYW5kIGFuIGBpbnQgYmF6
KClgIG1ldGhvZCwgYW5kIHlvdQotd2FudCB0byBjb25zdHJhaW4gdGhhdCB0aGUgYXJndW1lbnQn
cyBgYmFyKClgIHZhbHVlIHBsdXMgaXRzIGBiYXooKWAKLXZhbHVlIGlzIGEgZ2l2ZW4gbnVtYmVy
LiBIZXJlJ3MgaG93IHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byBkbyBpdDoKLQotYGBgCi11
c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNo
UmVzdWx0TGlzdGVuZXI7Ci0KLWNsYXNzIEJhclBsdXNCYXpFcU1hdGNoZXIgOiBwdWJsaWMgTWF0
Y2hlckludGVyZmFjZTxjb25zdCBGb28mPiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBCYXJQbHVz
QmF6RXFNYXRjaGVyKGludCBleHBlY3RlZF9zdW0pCi0gICAgICA6IGV4cGVjdGVkX3N1bV8oZXhw
ZWN0ZWRfc3VtKSB7fQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgRm9v
JiBmb28sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gKGZvby5iYXIoKSArIGZvby5iYXooKSkg
PT0gZXhwZWN0ZWRfc3VtXzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiYmFyKCkgKyBiYXooKSBlcXVhbHMg
IiA8PCBleHBlY3RlZF9zdW1fOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRp
b25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImJhcigpICsgYmF6
KCkgZG9lcyBub3QgZXF1YWwgIiA8PCBleHBlY3RlZF9zdW1fOwotICB9Ci0gcHJpdmF0ZToKLSAg
Y29uc3QgaW50IGV4cGVjdGVkX3N1bV87Ci19OwotCi1pbmxpbmUgTWF0Y2hlcjxjb25zdCBGb28m
PiBCYXJQbHVzQmF6RXEoaW50IGV4cGVjdGVkX3N1bSkgewotICByZXR1cm4gTWFrZU1hdGNoZXIo
bmV3IEJhclBsdXNCYXpFcU1hdGNoZXIoZXhwZWN0ZWRfc3VtKSk7Ci19Ci0KLS4uLgotCi0gIEVY
UEVDVF9DQUxMKC4uLiwgRG9UaGlzKEJhclBsdXNCYXpFcSg1KSkpLi4uOwotYGBgCi0KLSMjIE1h
dGNoaW5nIENvbnRhaW5lcnMgIyMKLQotU29tZXRpbWVzIGFuIFNUTCBjb250YWluZXIgKGUuZy4g
bGlzdCwgdmVjdG9yLCBtYXAsIC4uLikgaXMgcGFzc2VkIHRvCi1hIG1vY2sgZnVuY3Rpb24gYW5k
IHlvdSBtYXkgd2FudCB0byB2YWxpZGF0ZSBpdC4gU2luY2UgbW9zdCBTVEwKLWNvbnRhaW5lcnMg
c3VwcG9ydCB0aGUgYD09YCBvcGVyYXRvciwgeW91IGNhbiB3cml0ZQotYEVxKGV4cGVjdGVkX2Nv
bnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBhCi1jb250
YWluZXIgZXhhY3RseS4KLQotU29tZXRpbWVzLCB0aG91Z2gsIHlvdSBtYXkgd2FudCB0byBiZSBt
b3JlIGZsZXhpYmxlIChmb3IgZXhhbXBsZSwgdGhlCi1maXJzdCBlbGVtZW50IG11c3QgYmUgYW4g
ZXhhY3QgbWF0Y2gsIGJ1dCB0aGUgc2Vjb25kIGVsZW1lbnQgY2FuIGJlCi1hbnkgcG9zaXRpdmUg
bnVtYmVyLCBhbmQgc28gb24pLiBBbHNvLCBjb250YWluZXJzIHVzZWQgaW4gdGVzdHMgb2Z0ZW4K
LWhhdmUgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMsIGFuZCBoYXZpbmcgdG8gZGVmaW5lIHRo
ZSBleHBlY3RlZAotY29udGFpbmVyIG91dC1vZi1saW5lIGlzIGEgYml0IG9mIGEgaGFzc2xlLgot
Ci1Zb3UgY2FuIHVzZSB0aGUgYEVsZW1lbnRzQXJlKClgIG1hdGNoZXIgaW4gc3VjaCBjYXNlczoK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJl
OwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsKLS4uLgotCi0gIE1PQ0tfTUVUSE9EMShGb28sIHZvaWQo
Y29uc3QgdmVjdG9yPGludD4mIG51bWJlcnMpKTsKLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1vY2ss
IEZvbyhFbGVtZW50c0FyZSgxLCBHdCgwKSwgXywgNSkpKTsKLWBgYAotCi1UaGUgYWJvdmUgbWF0
Y2hlciBzYXlzIHRoYXQgdGhlIGNvbnRhaW5lciBtdXN0IGhhdmUgNCBlbGVtZW50cywgd2hpY2gK
LW11c3QgYmUgMSwgZ3JlYXRlciB0aGFuIDAsIGFueXRoaW5nLCBhbmQgNSByZXNwZWN0aXZlbHku
Ci0KLWBFbGVtZW50c0FyZSgpYCBpcyBvdmVybG9hZGVkIHRvIHRha2UgMCB0byAxMCBhcmd1bWVu
dHMuIElmIG1vcmUgYXJlCi1uZWVkZWQsIHlvdSBjYW4gcGxhY2UgdGhlbSBpbiBhIEMtc3R5bGUg
YXJyYXkgYW5kIHVzZQotYEVsZW1lbnRzQXJlQXJyYXkoKWAgaW5zdGVhZDoKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7Ci0uLi4KLQotICAvLyBFbGVtZW50c0FyZUFy
cmF5IGFjY2VwdHMgYW4gYXJyYXkgb2YgZWxlbWVudCB2YWx1ZXMuCi0gIGNvbnN0IGludCBleHBl
Y3RlZF92ZWN0b3IxW10gPSB7IDEsIDUsIDIsIDQsIC4uLiB9OwotICBFWFBFQ1RfQ0FMTChtb2Nr
LCBGb28oRWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IxKSkpOwotCi0gIC8vIE9yLCBh
biBhcnJheSBvZiBlbGVtZW50IG1hdGNoZXJzLgotICBNYXRjaGVyPGludD4gZXhwZWN0ZWRfdmVj
dG9yMiA9IHsgMSwgR3QoMiksIF8sIDMsIC4uLiB9OwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28o
RWxlbWVudHNBcmVBcnJheShleHBlY3RlZF92ZWN0b3IyKSkpOwotYGBgCi0KLUluIGNhc2UgdGhl
IGFycmF5IG5lZWRzIHRvIGJlIGR5bmFtaWNhbGx5IGNyZWF0ZWQgKGFuZCB0aGVyZWZvcmUgdGhl
Ci1hcnJheSBzaXplIGNhbm5vdCBiZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIpLCB5b3UgY2Fu
IGdpdmUKLWBFbGVtZW50c0FyZUFycmF5KClgIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gc3Bl
Y2lmeSB0aGUgYXJyYXkgc2l6ZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkVsZW1lbnRzQXJl
QXJyYXk7Ci0uLi4KLSAgaW50KiBjb25zdCBleHBlY3RlZF92ZWN0b3IzID0gbmV3IGludFtjb3Vu
dF07Ci0gIC4uLiBmaWxsIGV4cGVjdGVkX3ZlY3RvcjMgd2l0aCB2YWx1ZXMgLi4uCi0gIEVYUEVD
VF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjMsIGNvdW50
KSkpOwotYGBgCi0KLSoqVGlwczoqKgotCi0gICogYEVsZW1lbnRBcmUqKClgIHdvcmtzIHdpdGgg
X2FueV8gY29udGFpbmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgU1RMIGl0ZXJhdG9yIGNvbmNlcHQg
KGkuZS4gaXQgaGFzIGEgYGNvbnN0X2l0ZXJhdG9yYCB0eXBlIGFuZCBzdXBwb3J0cyBgYmVnaW4o
KS9lbmQoKWApIGFuZCBzdXBwb3J0cyBgc2l6ZSgpYCwgbm90IGp1c3QgdGhlIG9uZXMgZGVmaW5l
ZCBpbiBTVEwuIEl0IHdpbGwgZXZlbiB3b3JrIHdpdGggY29udGFpbmVyIHR5cGVzIHlldCB0byBi
ZSB3cml0dGVuIC0gYXMgbG9uZyBhcyB0aGV5IGZvbGxvd3MgdGhlIGFib3ZlIHBhdHRlcm4uCi0g
ICogWW91IGNhbiB1c2UgbmVzdGVkIGBFbGVtZW50QXJlKigpYCB0byBtYXRjaCBuZXN0ZWQgKG11
bHRpLWRpbWVuc2lvbmFsKSBjb250YWluZXJzLgotICAqIElmIHRoZSBjb250YWluZXIgaXMgcGFz
c2VkIGJ5IHBvaW50ZXIgaW5zdGVhZCBvZiBieSByZWZlcmVuY2UsIGp1c3Qgd3JpdGUgYFBvaW50
ZWUoRWxlbWVudHNBcmUqKC4uLikpYC4KLSAgKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgX21hdHRl
cnNfIGZvciBgRWxlbWVudHNBcmUqKClgLiBUaGVyZWZvcmUgZG9uJ3QgdXNlIGl0IHdpdGggY29u
dGFpbmVycyB3aG9zZSBlbGVtZW50IG9yZGVyIGlzIHVuZGVmaW5lZCAoZS5nLiBgaGFzaF9tYXBg
KS4KLQotIyMgU2hhcmluZyBNYXRjaGVycyAjIwotCi1VbmRlciB0aGUgaG9vZCwgYSBHb29nbGUg
TW9jayBtYXRjaGVyIG9iamVjdCBjb25zaXN0cyBvZiBhIHBvaW50ZXIgdG8KLWEgcmVmLWNvdW50
ZWQgaW1wbGVtZW50YXRpb24gb2JqZWN0LiBDb3B5aW5nIG1hdGNoZXJzIGlzIGFsbG93ZWQgYW5k
Ci12ZXJ5IGVmZmljaWVudCwgYXMgb25seSB0aGUgcG9pbnRlciBpcyBjb3BpZWQuIFdoZW4gdGhl
IGxhc3QgbWF0Y2hlcgotdGhhdCByZWZlcmVuY2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3Qg
ZGllcywgdGhlIGltcGxlbWVudGF0aW9uCi1vYmplY3Qgd2lsbCBiZSBkZWxldGVkLgotCi1UaGVy
ZWZvcmUsIGlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBtYXRjaGVyIHRoYXQgeW91IHdhbnQgdG8g
dXNlIGFnYWluCi1hbmQgYWdhaW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gYnVpbGQgaXQgZXZlcnl0
aW1lLiBKdXN0IGFzc2lnbiBpdCB0byBhCi1tYXRjaGVyIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2
YXJpYWJsZSByZXBlYXRlZGx5ISBGb3IgZXhhbXBsZSwKLQotYGBgCi0gIE1hdGNoZXI8aW50PiBp
bl9yYW5nZSA9IEFsbE9mKEd0KDUpLCBMZSgxMCkpOwotICAuLi4gdXNlIGluX3JhbmdlIGFzIGEg
bWF0Y2hlciBpbiBtdWx0aXBsZSBFWFBFQ1RfQ0FMTHMgLi4uCi1gYGAKLQotIyBTZXR0aW5nIEV4
cGVjdGF0aW9ucyAjCi0KLSMjIElnbm9yaW5nIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKLQotSWYg
eW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBob3cgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGp1
c3QgZG9uJ3QKLXNheSBhbnl0aGluZyBhYm91dCBpdC4gSW4gdGhpcyBjYXNlLCBpZiB0aGUgbWV0
aG9kIGlzIGV2ZXIgY2FsbGVkLAotR29vZ2xlIE1vY2sgd2lsbCBwZXJmb3JtIGl0cyBkZWZhdWx0
IGFjdGlvbiB0byBhbGxvdyB0aGUgdGVzdCBwcm9ncmFtCi10byBjb250aW51ZS4gSWYgeW91IGFy
ZSBub3QgaGFwcHkgd2l0aCB0aGUgZGVmYXVsdCBhY3Rpb24gdGFrZW4gYnkKLUdvb2dsZSBNb2Nr
LCB5b3UgY2FuIG92ZXJyaWRlIGl0IHVzaW5nIGBEZWZhdWx0VmFsdWU8VD46OlNldCgpYAotKGRl
c2NyaWJlZCBsYXRlciBpbiB0aGlzIGRvY3VtZW50KSBvciBgT05fQ0FMTCgpYC4KLQotUGxlYXNl
IG5vdGUgdGhhdCBvbmNlIHlvdSBleHByZXNzZWQgaW50ZXJlc3QgaW4gYSBwYXJ0aWN1bGFyIG1v
Y2sKLW1ldGhvZCAodmlhIGBFWFBFQ1RfQ0FMTCgpYCksIGFsbCBpbnZvY2F0aW9ucyB0byBpdCBt
dXN0IG1hdGNoIHNvbWUKLWV4cGVjdGF0aW9uLiBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBi
dXQgdGhlIGFyZ3VtZW50cyBkb24ndCBtYXRjaAotYW55IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1l
bnQsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCi0KLSMjIERpc2FsbG93aW5nIFVuZXhwZWN0ZWQgQ2Fs
bHMgIyMKLQotSWYgYSBtb2NrIG1ldGhvZCBzaG91bGRuJ3QgYmUgY2FsbGVkIGF0IGFsbCwgZXhw
bGljaXRseSBzYXkgc286Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVD
VF9DQUxMKGZvbywgQmFyKF8pKQotICAgICAgLlRpbWVzKDApOwotYGBgCi0KLUlmIHNvbWUgY2Fs
bHMgdG8gdGhlIG1ldGhvZCBhcmUgYWxsb3dlZCwgYnV0IHRoZSByZXN0IGFyZSBub3QsIGp1c3QK
LWxpc3QgYWxsIHRoZSBleHBlY3RlZCBjYWxsczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFu
eU51bWJlcjsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBC
YXIoNSkpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihHdCgxMCkpKQotICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKTsKLWBgYAotCi1BIGNhbGwgdG8gYGZvby5CYXIoKWAgdGhhdCBkb2Vzbid0IG1h
dGNoIGFueSBvZiB0aGUgYEVYUEVDVF9DQUxMKClgCi1zdGF0ZW1lbnRzIHdpbGwgYmUgYW4gZXJy
b3IuCi0KLSMjIEV4cGVjdGluZyBPcmRlcmVkIENhbGxzICMjCi0KLUFsdGhvdWdoIGFuIGBFWFBF
Q1RfQ0FMTCgpYCBzdGF0ZW1lbnQgZGVmaW5lZCBlYXJsaWVyIHRha2VzIHByZWNlZGVuY2UKLXdo
ZW4gR29vZ2xlIE1vY2sgdHJpZXMgdG8gbWF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZXhw
ZWN0YXRpb24sCi1ieSBkZWZhdWx0IGNhbGxzIGRvbid0IGhhdmUgdG8gaGFwcGVuIGluIHRoZSBv
cmRlciBgRVhQRUNUX0NBTEwoKWAKLXN0YXRlbWVudHMgYXJlIHdyaXR0ZW4uIEZvciBleGFtcGxl
LCBpZiB0aGUgYXJndW1lbnRzIG1hdGNoIHRoZQotbWF0Y2hlcnMgaW4gdGhlIHRoaXJkIGBFWFBF
Q1RfQ0FMTCgpYCwgYnV0IG5vdCB0aG9zZSBpbiB0aGUgZmlyc3QgdHdvLAotdGhlbiB0aGUgdGhp
cmQgZXhwZWN0YXRpb24gd2lsbCBiZSB1c2VkLgotCi1JZiB5b3Ugd291bGQgcmF0aGVyIGhhdmUg
YWxsIGNhbGxzIG9jY3VyIGluIHRoZSBvcmRlciBvZiB0aGUKLWV4cGVjdGF0aW9ucywgcHV0IHRo
ZSBgRVhQRUNUX0NBTEwoKWAgc3RhdGVtZW50cyBpbiBhIGJsb2NrIHdoZXJlIHlvdQotZGVmaW5l
IGEgdmFyaWFibGUgb2YgdHlwZSBgSW5TZXF1ZW5jZWA6Ci0KLWBgYAotICB1c2luZyA6OnRlc3Rp
bmc6Ol87Ci0gIHVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLQotICB7Ci0gICAgSW5TZXF1
ZW5jZSBzOwotCi0gICAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNSkpOwotICAgIEVYUEVDVF9D
QUxMKGJhciwgRG9UaGF0KF8pKQotICAgICAgICAuVGltZXMoMik7Ci0gICAgRVhQRUNUX0NBTEwo
Zm9vLCBEb1RoaXMoNikpOwotICB9Ci1gYGAKLQotSW4gdGhpcyBleGFtcGxlLCB3ZSBleHBlY3Qg
YSBjYWxsIHRvIGBmb28uRG9UaGlzKDUpYCwgZm9sbG93ZWQgYnkgdHdvCi1jYWxscyB0byBgYmFy
LkRvVGhhdCgpYCB3aGVyZSB0aGUgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nLCB3aGljaCBhcmUK
LWluIHR1cm4gZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGBmb28uRG9UaGlzKDYpYC4gSWYgYSBjYWxs
IG9jY3VycmVkCi1vdXQtb2Ytb3JkZXIsIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0IGFuIGVycm9y
LgotCi0jIyBFeHBlY3RpbmcgUGFydGlhbGx5IE9yZGVyZWQgQ2FsbHMgIyMKLQotU29tZXRpbWVz
IHJlcXVpcmluZyBldmVyeXRoaW5nIHRvIG9jY3VyIGluIGEgcHJlZGV0ZXJtaW5lZCBvcmRlciBj
YW4KLWxlYWQgdG8gYnJpdHRsZSB0ZXN0cy4gRm9yIGV4YW1wbGUsIHdlIG1heSBjYXJlIGFib3V0
IGBBYCBvY2N1cnJpbmcKLWJlZm9yZSBib3RoIGBCYCBhbmQgYENgLCBidXQgYXJlbid0IGludGVy
ZXN0ZWQgaW4gdGhlIHJlbGF0aXZlIG9yZGVyCi1vZiBgQmAgYW5kIGBDYC4gSW4gdGhpcyBjYXNl
LCB0aGUgdGVzdCBzaG91bGQgcmVmbGVjdCBvdXIgcmVhbCBpbnRlbnQsCi1pbnN0ZWFkIG9mIGJl
aW5nIG92ZXJseSBjb25zdHJhaW5pbmcuCi0KLUdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gaW1w
b3NlIGFuIGFyYml0cmFyeSBEQUcgKGRpcmVjdGVkIGFjeWNsaWMKLWdyYXBoKSBvbiB0aGUgY2Fs
bHMuIE9uZSB3YXkgdG8gZXhwcmVzcyB0aGUgREFHIGlzIHRvIHVzZSB0aGUKLVtBZnRlcl0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0NoZWF0U2hlZXQjVGhl
X0FmdGVyX0NsYXVzZSkgY2xhdXNlIG9mIGBFWFBFQ1RfQ0FMTGAuCi0KLUFub3RoZXIgd2F5IGlz
IHZpYSB0aGUgYEluU2VxdWVuY2UoKWAgY2xhdXNlIChub3QgdGhlIHNhbWUgYXMgdGhlCi1gSW5T
ZXF1ZW5jZWAgY2xhc3MpLCB3aGljaCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVz
cwotZmxleGlibGUgdGhhbiBgQWZ0ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3Ug
aGF2ZSBsb25nIGNoYWlucwotb2Ygc2VxdWVudGlhbCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1
aXJlIHlvdSB0byBjb21lIHVwIHdpdGgKLWRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0
aW9ucyBpbiB0aGUgY2hhaW5zLiAgSGVyZSdzIGhvdyBpdAotd29ya3M6Ci0KLUlmIHdlIHZpZXcg
YEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudHMgYXMgbm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBh
bgotZWRnZSBmcm9tIG5vZGUgQSB0byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9y
ZSBCLCB3ZSBjYW4gZ2V0Ci1hIERBRy4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVh
biBhIGRpcmVjdGVkIHBhdGggaW4gdGhpcwotREFHLiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUg
REFHIGludG8gc2VxdWVuY2VzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdwotd2hpY2ggc2VxdWVuY2Vz
IGVhY2ggYEVYUEVDVF9DQUxMKClgIGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bwot
cmVjb25zdHJ1Y3QgdGhlIG9yZ2luYWwgREFHLgotCi1TbywgdG8gc3BlY2lmeSB0aGUgcGFydGlh
bCBvcmRlciBvbiB0aGUgZXhwZWN0YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdvCi10aGluZ3M6IGZp
cnN0IHRvIGRlZmluZSBzb21lIGBTZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gK
LWBFWFBFQ1RfQ0FMTCgpYCBzYXkgd2hpY2ggYFNlcXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQK
LW9mLiBFeHBlY3RhdGlvbnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUg
b3JkZXIgdGhleSBhcmUKLXdyaXR0ZW4uIEZvciBleGFtcGxlLAotCi1gYGAKLSAgdXNpbmcgOjp0
ZXN0aW5nOjpTZXF1ZW5jZTsKLQotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgRVhQRUNUX0NBTEwo
Zm9vLCBBKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChiYXIs
IEIoKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCi0g
ICAgICAuSW5TZXF1ZW5jZShzMik7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRCgpKQotICAgICAgLklu
U2VxdWVuY2UoczIpOwotYGBgCi0KLXNwZWNpZmllcyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUg
YHMxYCBpcyBgQSAtPiBCYCwgYW5kIGBzMmAgaXMgYEEgLT4KLUMgLT4gRGApOgotCi1gYGAKLSAg
ICAgICArLS0tPiBCCi0gICAgICAgfAotICBBIC0tLXwKLSAgICAgICB8Ci0gICAgICAgKy0tLT4g
QyAtLS0+IEQKLWBgYAotCi1UaGlzIG1lYW5zIHRoYXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFu
ZCBDLCBhbmQgQyBtdXN0IG9jY3VyIGJlZm9yZQotRC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBh
Ym91dCB0aGUgb3JkZXIgb3RoZXIgdGhhbiB0aGVzZS4KLQotIyMgQ29udHJvbGxpbmcgV2hlbiBh
biBFeHBlY3RhdGlvbiBSZXRpcmVzICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQs
IEdvb2dsZSBNb2NrIG9ubHkgY29uc2lkZXIgZXhwZWN0YXRpb25zCi10aGF0IGFyZSBzdGlsbCBh
Y3RpdmUuIEFuIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQsIGFuZAotYmVjb21l
cyBpbmFjdGl2ZSAoYWthIF9yZXRpcmVzXykgd2hlbiBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIg
bGF0ZXIKLWhhcyBvY2N1cnJlZC4gRm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICB1c2luZyA6OnRl
c3Rpbmc6Ol87Ci0gIHVzaW5nIDo6dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEs
IHMyOwotCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJn
ZS4iKSkgICAgIC8vICMxCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5TZXF1
ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBz
ZXQgaXMgZW1wdHkuIikpICAvLyAjMgotICAgICAgLkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1Rf
Q0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiVXNlciBub3QgZm91bmQuIikpICAgICAvLyAjMwot
ICAgICAgLkluU2VxdWVuY2UoczIpOwotYGBgCi0KLWFzIHNvb24gYXMgZWl0aGVyICMyIG9yICMz
IGlzIG1hdGNoZWQsICMxIHdpbGwgcmV0aXJlLiBJZiBhIHdhcm5pbmcKLWAiRmlsZSB0b28gbGFy
Z2UuImAgaXMgbG9nZ2VkIGFmdGVyIHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCi0KLU5vdGUg
dGhhdCBhbiBleHBlY3RhdGlvbiBkb2Vzbid0IHJldGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQn
cwotc2F0dXJhdGVkLiBGb3IgZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0u
Li4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAg
ICAgIC8vICMxCi0gIEVYUEVDVF9DQUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBs
YXJnZS4iKSk7ICAvLyAjMgotYGBgCi0KLXNheXMgdGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkg
b25lIHdhcm5pbmcgd2l0aCB0aGUgbWVzc2FnZSBgIkZpbGUKLXRvbyBsYXJnZS4iYC4gSWYgdGhl
IHNlY29uZCB3YXJuaW5nIGNvbnRhaW5zIHRoaXMgbWVzc2FnZSB0b28sICMyIHdpbGwKLW1hdGNo
IGFnYWluIGFuZCByZXN1bHQgaW4gYW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZXJyb3IuCi0KLUlm
IHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRv
IHJldGlyZSBhcwotc29vbiBhcyBpdCBiZWNvbWVzIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykp
OyAgICAgICAgICAgICAgICAgLy8gIzEKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywg
XywgIkZpbGUgdG9vIGxhcmdlLiIpKSAgLy8gIzIKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9u
KCk7Ci1gYGAKLQotSGVyZSAjMiBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZl
IHR3byB3YXJuaW5ncyB3aXRoIHRoZQotbWVzc2FnZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUg
Zmlyc3Qgd2lsbCBtYXRjaCAjMiBhbmQgdGhlIHNlY29uZAotd2lsbCBtYXRjaCAjMSAtIHRoZXJl
IHdpbGwgYmUgbm8gZXJyb3IuCi0KLSMgVXNpbmcgQWN0aW9ucyAjCi0KLSMjIFJldHVybmluZyBS
ZWZlcmVuY2VzIGZyb20gTW9jayBNZXRob2RzICMjCi0KLUlmIGEgbW9jayBmdW5jdGlvbidzIHJl
dHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLCB5b3UgbmVlZCB0byB1c2UKLWBSZXR1cm5SZWYoKWAg
aW5zdGVhZCBvZiBgUmV0dXJuKClgIHRvIHJldHVybiBhIHJlc3VsdDoKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OlJldHVyblJlZjsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1
YmxpYzoKLSAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2Nr
Rm9vIGZvbzsKLSAgQmFyIGJhcjsKLSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkKLSAgICAg
IC5XaWxsT25jZShSZXR1cm5SZWYoYmFyKSk7Ci1gYGAKLQotIyMgUmV0dXJuaW5nIExpdmUgVmFs
dWVzIGZyb20gTW9jayBNZXRob2RzICMjCi0KLVRoZSBgUmV0dXJuKHgpYCBhY3Rpb24gc2F2ZXMg
YSBjb3B5IG9mIGB4YCB3aGVuIHRoZSBhY3Rpb24gaXMKLV9jcmVhdGVkXywgYW5kIGFsd2F5cyBy
ZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHdoZW5ldmVyIGl0J3MKLWV4ZWN1dGVkLiBTb21ldGltZXMg
eW91IG1heSB3YW50IHRvIGluc3RlYWQgcmV0dXJuIHRoZSBfbGl2ZV8gdmFsdWUgb2YKLWB4YCAo
aS5lLiBpdHMgdmFsdWUgYXQgdGhlIHRpbWUgd2hlbiB0aGUgYWN0aW9uIGlzIF9leGVjdXRlZF8u
KS4KLQotSWYgdGhlIG1vY2sgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwg
eW91IGNhbiBkbyBpdCB1c2luZwotYFJldHVyblJlZih4KWAsIGFzIHNob3duIGluIHRoZSBwcmV2
aW91cyByZWNpcGUgKCJSZXR1cm5pbmcgUmVmZXJlbmNlcwotZnJvbSBNb2NrIE1ldGhvZHMiKS4g
SG93ZXZlciwgR29vZ2xlIE1vY2sgZG9lc24ndCBsZXQgeW91IHVzZQotYFJldHVyblJlZigpYCBp
biBhIG1vY2sgZnVuY3Rpb24gd2hvc2UgcmV0dXJuIHR5cGUgaXMgbm90IGEgcmVmZXJlbmNlLAot
YXMgZG9pbmcgdGhhdCB1c3VhbGx5IGluZGljYXRlcyBhIHVzZXIgZXJyb3IuIFNvLCB3aGF0IHNo
YWxsIHlvdSBkbz8KLQotWW91IG1heSBiZSB0ZW1wdGVkIHRvIHRyeSBgQnlSZWYoKWA6Ci0KLWBg
YAotdXNpbmcgdGVzdGluZzo6QnlSZWY7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci0KLWNsYXNz
IE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChHZXRWYWx1
ZSwgaW50KCkpOwotfTsKLS4uLgotICBpbnQgeCA9IDA7Ci0gIE1vY2tGb28gZm9vOwotICBFWFBF
Q1RfQ0FMTChmb28sIEdldFZhbHVlKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5
UmVmKHgpKSk7Ci0gIHggPSA0MjsKLSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7Ci1g
YGAKLQotVW5mb3J0dW5hdGVseSwgaXQgZG9lc24ndCB3b3JrIGhlcmUuIFRoZSBhYm92ZSBjb2Rl
IHdpbGwgZmFpbCB3aXRoIGVycm9yOgotCi1gYGAKLVZhbHVlIG9mOiBmb28uR2V0VmFsdWUoKQot
ICBBY3R1YWw6IDAKLUV4cGVjdGVkOiA0MgotYGBgCi0KLVRoZSByZWFzb24gaXMgdGhhdCBgUmV0
dXJuKHZhbHVlKWAgY29udmVydHMgYHZhbHVlYCB0byB0aGUgYWN0dWFsCi1yZXR1cm4gdHlwZSBv
ZiB0aGUgbW9jayBmdW5jdGlvbiBhdCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMKLV9jcmVh
dGVkXywgbm90IHdoZW4gaXQgaXMgX2V4ZWN1dGVkXy4gKFRoaXMgYmVoYXZpb3Igd2FzIGNob3Nl
biBmb3IKLXRoZSBhY3Rpb24gdG8gYmUgc2FmZSB3aGVuIGB2YWx1ZWAgaXMgYSBwcm94eSBvYmpl
Y3QgdGhhdCByZWZlcmVuY2VzCi1zb21lIHRlbXBvcmFyeSBvYmplY3RzLikgQXMgYSByZXN1bHQs
IGBCeVJlZih4KWAgaXMgY29udmVydGVkIHRvIGFuCi1gaW50YCB2YWx1ZSAoaW5zdGVhZCBvZiBh
IGBjb25zdCBpbnQmYCkgd2hlbiB0aGUgZXhwZWN0YXRpb24gaXMgc2V0LAotYW5kIGBSZXR1cm4o
QnlSZWYoeCkpYCB3aWxsIGFsd2F5cyByZXR1cm4gMC4KLQotYFJldHVyblBvaW50ZWUocG9pbnRl
cilgIHdhcyBwcm92aWRlZCB0byBzb2x2ZSB0aGlzIHByb2JsZW0KLXNwZWNpZmljYWxseS4gSXQg
cmV0dXJucyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBgcG9pbnRlcmAgYXQgdGhlIHRpbWUKLXRo
ZSBhY3Rpb24gaXMgX2V4ZWN1dGVkXzoKLQotYGBgCi11c2luZyB0ZXN0aW5nOjpSZXR1cm5Qb2lu
dGVlOwotLi4uCi0gIGludCB4ID0gMDsKLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZv
bywgR2V0VmFsdWUoKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZ4KSk7
ICAvLyBOb3RlIHRoZSAmIGhlcmUuCi0gIHggPSA0MjsKLSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0
VmFsdWUoKSk7ICAvLyBUaGlzIHdpbGwgc3VjY2VlZCBub3cuCi1gYGAKLQotIyMgQ29tYmluaW5n
IEFjdGlvbnMgIyMKLQotV2FudCB0byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5j
dGlvbiBpcyBjYWxsZWQ/IFRoYXQncwotZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBz
ZXF1ZW5jZSBvZiBhY3Rpb25zIGV2ZXJ5IHRpbWUuIE9ubHkKLXRoZSByZXR1cm4gdmFsdWUgb2Yg
dGhlIGxhc3QgYWN0aW9uIGluIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCi0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpEb0FsbDsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1
YmxpYzoKLSAgTU9DS19NRVRIT0QxKEJhciwgYm9vbChpbnQgbikpOwotfTsKLS4uLgotCi0gIEVY
UEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAot
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl8yLAotICAgICAgICAgICAgICAgICAgICAgIC4u
LgotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9uKSk7Ci1gYGAKLQotIyMgTW9ja2luZyBT
aWRlIEVmZmVjdHMgIyMKLQotU29tZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qg
bm90IHZpYSByZXR1cm5pbmcgYSB2YWx1ZSBidXQKLXZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFt
cGxlLCBpdCBtYXkgY2hhbmdlIHNvbWUgZ2xvYmFsIHN0YXRlIG9yCi1tb2RpZnkgYW4gb3V0cHV0
IGFyZ3VtZW50LiBUbyBtb2NrIHNpZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCi1kZWZp
bmUgeW91ciBvd24gYWN0aW9uIGJ5IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRl
cmZhY2VgLgotCi1JZiBhbGwgeW91IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBh
cmd1bWVudCwgdGhlIGJ1aWx0LWluCi1gU2V0QXJnUG9pbnRlZSgpYCBhY3Rpb24gaXMgY29udmVu
aWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci0KLWNsYXNzIE1v
Y2tNdXRhdG9yIDogcHVibGljIE11dGF0b3IgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11
dGF0ZSwgdm9pZChib29sIG11dGF0ZSwgaW50KiB2YWx1ZSkpOwotICAuLi4KLX07Ci0uLi4KLQot
ICBNb2NrTXV0YXRvciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUodHJ1
ZSwgXykpCi0gICAgICAuV2lsbE9uY2UoU2V0QXJnUG9pbnRlZTwxPig1KSk7Ci1gYGAKLQotSW4g
dGhpcyBleGFtcGxlLCB3aGVuIGBtdXRhdG9yLk11dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwg
YXNzaWduIDUKLXRvIHRoZSBgaW50YCB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMx
Ci0oMC1iYXNlZCkuCi0KLWBTZXRBcmdQb2ludGVlKClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBp
bnRlcm5hbCBjb3B5IG9mIHRoZQotdmFsdWUgeW91IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBu
ZWVkIHRvIGtlZXAgdGhlIHZhbHVlIGluIHNjb3BlIGFuZAotYWxpdmUuIFRoZSBpbXBsaWNhdGlv
biBob3dldmVyIGlzIHRoYXQgdGhlIHZhbHVlIG11c3QgaGF2ZSBhIGNvcHkKLWNvbnN0cnVjdG9y
IGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yLgotCi1JZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVk
cyB0byByZXR1cm4gYSB2YWx1ZSBhcyB3ZWxsLCB5b3UgY2FuIGNoYWluCi1gU2V0QXJnUG9pbnRl
ZSgpYCB3aXRoIGBSZXR1cm4oKWAgdXNpbmcgYERvQWxsKClgOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotdXNpbmcgOjp0ZXN0aW5nOjpTZXRB
cmdQb2ludGVlOwotCi1jbGFzcyBNb2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJs
aWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDEoTXV0YXRlSW50LCBib29sKGludCogdmFsdWUpKTsK
LX07Ci0uLi4KLQotICBNb2NrTXV0YXRvciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9y
LCBNdXRhdGVJbnQoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1
KSwKLSAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4odHJ1ZSkpKTsKLWBgYAotCi1JZiB0aGUg
b3V0cHV0IGFyZ3VtZW50IGlzIGFuIGFycmF5LCB1c2UgdGhlCi1gU2V0QXJyYXlBcmd1bWVudDxO
PihmaXJzdCwgbGFzdClgIGFjdGlvbiBpbnN0ZWFkLiBJdCBjb3BpZXMgdGhlCi1lbGVtZW50cyBp
biBzb3VyY2UgcmFuZ2UgYFtmaXJzdCwgbGFzdClgIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5
Ci10aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ok5vdE51bGw7Ci11c2luZyA6OnRlc3Rpbmc6OlNldEFycmF5QXJndW1lbnQ7Ci0KLWNsYXNzIE1v
Y2tBcnJheU11dGF0b3IgOiBwdWJsaWMgQXJyYXlNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1PQ0tf
TUVUSE9EMihNdXRhdGUsIHZvaWQoaW50KiB2YWx1ZXMsIGludCBudW1fdmFsdWVzKSk7Ci0gIC4u
LgotfTsKLS4uLgotCi0gIE1vY2tBcnJheU11dGF0b3IgbXV0YXRvcjsKLSAgaW50IHZhbHVlc1s1
XSA9IHsgMSwgMiwgMywgNCwgNSB9OwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90
TnVsbCgpLCA1KSkKLSAgICAgIC5XaWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywg
dmFsdWVzICsgNSkpOwotYGBgCi0KLVRoaXMgYWxzbyB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBp
cyBhbiBvdXRwdXQgaXRlcmF0b3I6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcg
Ojp0ZXN0aW5nOjpTZUFycmF5QXJndW1lbnQ7Ci0KLWNsYXNzIE1vY2tSb2xvZGV4IDogcHVibGlj
IFJvbG9kZXggewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6
YmFja19pbnNlcnRfaXRlcmF0b3I8dmVjdG9yPHN0cmluZz4gPikpOwotICAuLi4KLX07Ci0uLi4K
LQotICBNb2NrUm9sb2RleCByb2xvZGV4OwotICB2ZWN0b3I8c3RyaW5nPiBuYW1lczsKLSAgbmFt
ZXMucHVzaF9iYWNrKCJHZW9yZ2UiKTsKLSAgbmFtZXMucHVzaF9iYWNrKCJKb2huIik7Ci0gIG5h
bWVzLnB1c2hfYmFjaygiVGhvbWFzIik7Ci0gIEVYUEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVz
KF8pKQotICAgICAgLldpbGxPbmNlKFNldEFycmF5QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwg
bmFtZXMuZW5kKCkpKTsKLWBgYAotCi0jIyBDaGFuZ2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZp
b3IgQmFzZWQgb24gdGhlIFN0YXRlICMjCi0KLUlmIHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5n
ZSB0aGUgYmVoYXZpb3Igb2YgYSBtb2NrIG9iamVjdCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6
SW5TZXF1ZW5jZWAgdG8gc3BlY2lmeSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0
ZXIgdGhlIGNhbGw6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcg
Ojp0ZXN0aW5nOjpSZXR1cm47Ci0KLS4uLgotICB7Ci0gICAgSW5TZXF1ZW5jZSBzZXE7Ci0gICAg
RVhQRUNUX0NBTEwobXlfbW9jaywgSXNEaXJ0eSgpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuKHRydWUpKTsKLSAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBGbHVzaCgpKTsKLSAgICBF
WFBFQ1RfQ0FMTChteV9tb2NrLCBJc0RpcnR5KCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oZmFsc2UpKTsKLSAgfQotICBteV9tb2NrLkZsdXNoSWZEaXJ0eSgpOwotYGBgCi0KLVRo
aXMgbWFrZXMgYG15X21vY2suSXNEaXJ0eSgpYCByZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9j
ay5GbHVzaCgpYCBpcyBjYWxsZWQgYW5kIHJldHVybiBgZmFsc2VgIGFmdGVyd2FyZHMuCi0KLUlm
IHRoZSBiZWhhdmlvciBjaGFuZ2UgaXMgbW9yZSBjb21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBl
ZmZlY3RzIGluIGEgdmFyaWFibGUgYW5kIG1ha2UgYSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVy
biB2YWx1ZSBmcm9tIHRoYXQgdmFyaWFibGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwot
dXNpbmcgOjp0ZXN0aW5nOjpTYXZlQXJnOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0KLUFD
VElPTl9QKFJldHVyblBvaW50ZWUsIHApIHsgcmV0dXJuICpwOyB9Ci0uLi4KLSAgaW50IHByZXZp
b3VzX3ZhbHVlID0gMDsKLSAgRVhQRUNUX0NBTEwobXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuUG9pbnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKLSAg
RVhQRUNUX0NBTEwobXlfbW9jaywgVXBkYXRlVmFsdWUoXykpCi0gICAgICAuV2lsbFJlcGVhdGVk
bHkoU2F2ZUFyZzwwPigmcHJldmlvdXNfdmFsdWUpKTsKLSAgbXlfbW9jay5Eb1NvbWV0aGluZ1Rv
VXBkYXRlVmFsdWUoKTsKLWBgYAotCi1IZXJlIGBteV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxs
IGFsd2F5cyByZXR1cm4gdGhlIGFyZ3VtZW50IG9mIHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBj
YWxsLgotCi0jIyBTZXR0aW5nIHRoZSBEZWZhdWx0IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMj
Ci0KLUlmIGEgbW9jayBtZXRob2QncyByZXR1cm4gdHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBl
IG9yIHBvaW50ZXIsIGJ5Ci1kZWZhdWx0IGl0IHdpbGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBZ
b3Ugb25seSBuZWVkIHRvIHNwZWNpZnkgYW4KLWFjdGlvbiBpZiB0aGlzIGRlZmF1bHQgdmFsdWUg
ZG9lc24ndCB3b3JrIGZvciB5b3UuCi0KLVNvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIGNoYW5n
ZSB0aGlzIGRlZmF1bHQgdmFsdWUsIG9yIHlvdSBtYXkgd2FudAotdG8gc3BlY2lmeSBhIGRlZmF1
bHQgdmFsdWUgZm9yIHR5cGVzIEdvb2dsZSBNb2NrIGRvZXNuJ3Qga25vdwotYWJvdXQuIFlvdSBj
YW4gZG8gdGhpcyB1c2luZyB0aGUgYDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlYCBjbGFzcwotdGVt
cGxhdGU6Ci0KLWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAg
TU9DS19NRVRIT0QwKENhbGN1bGF0ZUJhciwgQmFyKCkpOwotfTsKLS4uLgotCi0gIEJhciBkZWZh
dWx0X2JhcjsKLSAgLy8gU2V0cyB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIHR5cGUgQmFy
LgotICBEZWZhdWx0VmFsdWU8QmFyPjo6U2V0KGRlZmF1bHRfYmFyKTsKLQotICBNb2NrRm9vIGZv
bzsKLQotICAvLyBXZSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYW4gYWN0aW9uIGhlcmUsIGFzIHRo
ZSBkZWZhdWx0Ci0gIC8vIHJldHVybiB2YWx1ZSB3b3JrcyBmb3IgdXMuCi0gIEVYUEVDVF9DQUxM
KGZvbywgQ2FsY3VsYXRlQmFyKCkpOwotCi0gIGZvby5DYWxjdWxhdGVCYXIoKTsgIC8vIFRoaXMg
c2hvdWxkIHJldHVybiBkZWZhdWx0X2Jhci4KLQotICAvLyBVbnNldHMgdGhlIGRlZmF1bHQgcmV0
dXJuIHZhbHVlLgotICBEZWZhdWx0VmFsdWU8QmFyPjo6Q2xlYXIoKTsKLWBgYAotCi1QbGVhc2Ug
bm90ZSB0aGF0IGNoYW5naW5nIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgY2FuIG1ha2Ug
eW91Ci10ZXN0cyBoYXJkIHRvIHVuZGVyc3RhbmQuIFdlIHJlY29tbWVuZCB5b3UgdG8gdXNlIHRo
aXMgZmVhdHVyZQotanVkaWNpb3VzbHkuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gbWFr
ZSBzdXJlIHRoZSBgU2V0KClgIGFuZAotYENsZWFyKClgIGNhbGxzIGFyZSByaWdodCBuZXh0IHRv
IHRoZSBjb2RlIHRoYXQgdXNlcyB5b3VyIG1vY2suCi0KLSMjIFNldHRpbmcgdGhlIERlZmF1bHQg
QWN0aW9ucyBmb3IgYSBNb2NrIE1ldGhvZCAjIwotCi1Zb3UndmUgbGVhcm5lZCBob3cgdG8gY2hh
bmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgZ2l2ZW4KLXR5cGUuIEhvd2V2ZXIsIHRoaXMgbWF5
IGJlIHRvbyBjb2Fyc2UgZm9yIHlvdXIgcHVycG9zZTogcGVyaGFwcyB5b3UKLWhhdmUgdHdvIG1v
Y2sgbWV0aG9kcyB3aXRoIHRoZSBzYW1lIHJldHVybiB0eXBlIGFuZCB5b3Ugd2FudCB0aGVtIHRv
Ci1oYXZlIGRpZmZlcmVudCBiZWhhdmlvcnMuIFRoZSBgT05fQ0FMTCgpYCBtYWNybyBhbGxvd3Mg
eW91IHRvCi1jdXN0b21pemUgeW91ciBtb2NrJ3MgYmVoYXZpb3IgYXQgdGhlIG1ldGhvZCBsZXZl
bDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFueU51bWJl
cjsKLXVzaW5nIDo6dGVzdGluZzo6R3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgot
ICBPTl9DQUxMKGZvbywgU2lnbihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigtMSkp
OwotICBPTl9DQUxMKGZvbywgU2lnbigwKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigw
KSk7Ci0gIE9OX0NBTEwoZm9vLCBTaWduKEd0KDApKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJl
dHVybigxKSk7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBTaWduKF8pKQotICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKTsKLQotICBmb28uU2lnbig1KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMS4K
LSAgZm9vLlNpZ24oLTkpOyAgLy8gVGhpcyBzaG91bGQgcmV0dXJuIC0xLgotICBmb28uU2lnbigw
KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMC4KLWBgYAotCi1BcyB5b3UgbWF5IGhhdmUgZ3Vl
c3NlZCwgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBgT05fQ0FMTCgpYAotc3RhdGVtZW50
cywgdGhlIG5ld3Mgb3JkZXIgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9sZGVyIG9uZXMuIElu
Ci1vdGhlciB3b3JkcywgdGhlICoqbGFzdCoqIG9uZSB0aGF0IG1hdGNoZXMgdGhlIGZ1bmN0aW9u
IGFyZ3VtZW50cyB3aWxsCi1iZSB1c2VkLiBUaGlzIG1hdGNoaW5nIG9yZGVyIGFsbG93cyB5b3Ug
dG8gc2V0IHVwIHRoZSBjb21tb24gYmVoYXZpb3IKLWluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1
Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZAotc3BlY2lhbGl6ZSB0
aGUgbW9jaydzIGJlaGF2aW9yIGxhdGVyLgotCi0jIyBVc2luZyBGdW5jdGlvbnMvTWV0aG9kcy9G
dW5jdG9ycyBhcyBBY3Rpb25zICMjCi0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHN1
aXQgeW91LCB5b3UgY2FuIGVhc2lseSB1c2UgYW4gZXhpc3RpbmcKLWZ1bmN0aW9uLCBtZXRob2Qs
IG9yIGZ1bmN0b3IgYXMgYW4gYWN0aW9uOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVz
aW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0g
cHVibGljOgotICBNT0NLX01FVEhPRDIoU3VtLCBpbnQoaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tf
TUVUSE9EMShDb21wbGV4Sm9iLCBib29sKGludCB4KSk7Ci19OwotCi1pbnQgQ2FsY3VsYXRlU3Vt
KGludCB4LCBpbnQgeSkgeyByZXR1cm4geCArIHk7IH0KLQotY2xhc3MgSGVscGVyIHsKLSBwdWJs
aWM6Ci0gIGJvb2wgQ29tcGxleEpvYihpbnQgeCk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287
Ci0gIEhlbHBlciBoZWxwZXI7Ci0gIEVYUEVDVF9DQUxMKGZvbywgU3VtKF8sIF8pKQotICAgICAg
LldpbGxPbmNlKEludm9rZShDYWxjdWxhdGVTdW0pKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDb21w
bGV4Sm9iKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZSgmaGVscGVyLCAmSGVscGVyOjpDb21w
bGV4Sm9iKSk7Ci0KLSAgZm9vLlN1bSg1LCA2KTsgICAgICAgLy8gSW52b2tlcyBDYWxjdWxhdGVT
dW0oNSwgNikuCi0gIGZvby5Db21wbGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgaGVscGVyLkNvbXBs
ZXhKb2IoMTApOwotYGBgCi0KLVRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIHR5cGUg
b2YgdGhlIGZ1bmN0aW9uLCBldGMgbXVzdCBiZQotX2NvbXBhdGlibGVfIHdpdGggdGhlIHNpZ25h
dHVyZSBvZiB0aGUgbW9jayBmdW5jdGlvbiwgbWVhbmluZyB0aGF0IHRoZQotbGF0dGVyJ3MgYXJn
dW1lbnRzIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZwot
YXJndW1lbnRzIG9mIHRoZSBmb3JtZXIsIGFuZCB0aGUgZm9ybWVyJ3MgcmV0dXJuIHR5cGUgY2Fu
IGJlCi1pbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGF0IG9mIHRoZSBsYXR0ZXIuIFNvLCB5b3Ug
Y2FuIGludm9rZQotc29tZXRoaW5nIHdob3NlIHR5cGUgaXMgX25vdF8gZXhhY3RseSB0aGUgc2Ft
ZSBhcyB0aGUgbW9jayBmdW5jdGlvbiwKLWFzIGxvbmcgYXMgaXQncyBzYWZlIHRvIGRvIHNvIC0g
bmljZSwgaHVoPwotCi0jIyBJbnZva2luZyBhIEZ1bmN0aW9uL01ldGhvZC9GdW5jdG9yIFdpdGhv
dXQgQXJndW1lbnRzICMjCi0KLWBJbnZva2UoKWAgaXMgdmVyeSB1c2VmdWwgZm9yIGRvaW5nIGFj
dGlvbnMgdGhhdCBhcmUgbW9yZSBjb21wbGV4LiBJdAotcGFzc2VzIHRoZSBtb2NrIGZ1bmN0aW9u
J3MgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBvciBmdW5jdG9yIGJlaW5nCi1pbnZva2VkIHN1
Y2ggdGhhdCB0aGUgY2FsbGVlIGhhcyB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBjYWxsIHRvIHdv
cmsKLXdpdGguIElmIHRoZSBpbnZva2VkIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHNv
bWUgb3IgYWxsIG9mIHRoZQotYXJndW1lbnRzLCBpdCBjYW4gc2ltcGx5IGlnbm9yZSB0aGVtLgot
Ci1ZZXQsIGEgY29tbW9uIHBhdHRlcm4gaXMgdGhhdCBhIHRlc3QgYXV0aG9yIHdhbnRzIHRvIGlu
dm9rZSBhIGZ1bmN0aW9uCi13aXRob3V0IHRoZSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rp
b24uIGBJbnZva2UoKWAgYWxsb3dzIGhlciB0bwotZG8gdGhhdCB1c2luZyBhIHdyYXBwZXIgZnVu
Y3Rpb24gdGhhdCB0aHJvd3MgYXdheSB0aGUgYXJndW1lbnRzIGJlZm9yZQotaW52b2tpbmcgYW4g
dW5kZXJsaW5pbmcgbnVsbGFyeSBmdW5jdGlvbi4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNhbiBi
ZQotdGVkaW91cyBhbmQgb2JzY3VyZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdC4KLQotYEludm9r
ZVdpdGhvdXRBcmdzKClgIHNvbHZlcyB0aGlzIHByb2JsZW0uIEl0J3MgbGlrZSBgSW52b2tlKClg
IGV4Y2VwdAotdGhhdCBpdCBkb2Vzbid0IHBhc3MgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVu
dHMgdG8gdGhlCi1jYWxsZWUuIEhlcmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlV2l0aG91dEFyZ3M7Ci0KLWNsYXNzIE1v
Y2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9i
LCBib29sKGludCBuKSk7Ci19OwotCi1ib29sIEpvYjEoKSB7IC4uLiB9Ci0uLi4KLQotICBNb2Nr
Rm9vIGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQotICAgICAgLldpbGxP
bmNlKEludm9rZVdpdGhvdXRBcmdzKEpvYjEpKTsKLQotICBmb28uQ29tcGxleEpvYigxMCk7ICAv
LyBJbnZva2VzIEpvYjEoKS4KLWBgYAotCi0jIyBJbnZva2luZyBhbiBBcmd1bWVudCBvZiB0aGUg
TW9jayBGdW5jdGlvbiAjIwotCi1Tb21ldGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgcmVjZWl2
ZSBhIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yCi0oaW4gb3RoZXIgd29yZHMsIGEgImNh
bGxhYmxlIikgYXMgYW4gYXJndW1lbnQsIGUuZy4KLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDIoRG9UaGlzLCBib29sKGludCBuLCBi
b29sICgqZnApKGludCkpKTsKLX07Ci1gYGAKLQotYW5kIHlvdSBtYXkgd2FudCB0byBpbnZva2Ug
dGhpcyBjYWxsYWJsZSBhcmd1bWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4K
LSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAg
LldpbGxPbmNlKC4uLik7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMg
dGhlCi0gIC8vIHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAotCi1Bcmdo
aCwgeW91IG5lZWQgdG8gcmVmZXIgdG8gYSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50IGJ1dCBDKysg
aGFzIG5vCi1sYW1iZGEgKHlldCksIHNvIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93biBhY3Rp
b24uIDotKCBPciBkbyB5b3UKLXJlYWxseT8KLQotV2VsbCwgR29vZ2xlIE1vY2sgaGFzIGFuIGFj
dGlvbiB0byBzb2x2ZSBfZXhhY3RseV8gdGhpcyBwcm9ibGVtOgotCi1gYGAKLSAgSW52b2tlQXJn
dW1lbnQ8Tj4oYXJnXzEsIGFyZ18yLCAuLi4sIGFyZ19tKQotYGBgCi0KLXdpbGwgaW52b2tlIHRo
ZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRoZSBtb2NrIGZ1bmN0aW9uIHJlY2VpdmVzLAot
d2l0aCBgYXJnXzFgLCBgYXJnXzJgLCAuLi4sIGFuZCBgYXJnX21gLiBObyBtYXR0ZXIgaWYgdGhl
IGFyZ3VtZW50IGlzCi1hIGZ1bmN0aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yLCBHb29nbGUgTW9j
ayBoYW5kbGVzIHRoZW0gYm90aC4KLQotV2l0aCB0aGF0LCB5b3UgY291bGQgd3JpdGU6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsK
LS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJ
bnZva2VBcmd1bWVudDwxPig1KSk7Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUg
ZnAgaXMgdGhlCi0gIC8vIHNlY29uZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAot
Ci1XaGF0IGlmIHRoZSBjYWxsYWJsZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2U/IE5v
IHByb2JsZW0gLSBqdXN0Ci13cmFwIGl0IGluc2lkZSBgQnlSZWYoKWA6Ci0KLWBgYAotLi4uCi0g
IE1PQ0tfTUVUSE9EMShCYXIsIGJvb2woYm9vbCAoKmZwKShpbnQsIGNvbnN0IEhlbHBlciYpKSk7
Ci0uLi4KLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QnlSZWY7Ci11c2lu
ZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEhl
bHBlciBoZWxwZXI7Ci0gIC4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5X
aWxsT25jZShJbnZva2VBcmd1bWVudDwwPig1LCBCeVJlZihoZWxwZXIpKSk7Ci0gIC8vIEJ5UmVm
KGhlbHBlcikgZ3VhcmFudGVlcyB0aGF0IGEgcmVmZXJlbmNlIHRvIGhlbHBlciwgbm90IGEgY29w
eSBvZiBpdCwKLSAgLy8gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlLgotYGBgCi0KLVdo
YXQgaWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSBhbmQgd2Ug
ZG8gKipub3QqKgotd3JhcCB0aGUgYXJndW1lbnQgaW4gYEJ5UmVmKClgPyBUaGVuIGBJbnZva2VB
cmd1bWVudCgpYCB3aWxsIF9tYWtlIGEKLWNvcHlfIG9mIHRoZSBhcmd1bWVudCwgYW5kIHBhc3Mg
YSBfcmVmZXJlbmNlIHRvIHRoZSBjb3B5XywgaW5zdGVhZCBvZgotYSByZWZlcmVuY2UgdG8gdGhl
IG9yaWdpbmFsIHZhbHVlLCB0byB0aGUgY2FsbGFibGUuIFRoaXMgaXMgZXNwZWNpYWxseQotaGFu
ZHkgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSB0ZW1wb3JhcnkgdmFsdWU6Ci0KLWBgYAotLi4uCi0g
IE1PQ0tfTUVUSE9EMShEb1RoYXQsIGJvb2woYm9vbCAoKmYpKGNvbnN0IGRvdWJsZSYgeCwgY29u
c3Qgc3RyaW5nJiBzKSkpOwotLi4uCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6Okludm9rZUFyZ3VtZW50OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIC4uLgotICBFWFBF
Q1RfQ0FMTChmb28sIERvVGhhdChfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDww
Pig1LjAsIHN0cmluZygiSGkiKSkpOwotICAvLyBXaWxsIGV4ZWN1dGUgKCpmKSg1LjAsIHN0cmlu
ZygiSGkiKSksIHdoZXJlIGYgaXMgdGhlIGZ1bmN0aW9uIHBvaW50ZXIKLSAgLy8gRG9UaGF0KCkg
cmVjZWl2ZXMuICBOb3RlIHRoYXQgdGhlIHZhbHVlcyA1LjAgYW5kIHN0cmluZygiSGkiKSBhcmUK
LSAgLy8gdGVtcG9yYXJ5IGFuZCBkZWFkIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50
IGZpbmlzaGVzLiAgWWV0Ci0gIC8vIGl0J3MgZmluZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uIGxh
dGVyLCBzaW5jZSBhIGNvcHkgb2YgdGhlIHZhbHVlcwotICAvLyBhcmUga2VwdCBpbnNpZGUgdGhl
IEludm9rZUFyZ3VtZW50IGFjdGlvbi4KLWBgYAotCi0jIyBJZ25vcmluZyBhbiBBY3Rpb24ncyBS
ZXN1bHQgIyMKLQotU29tZXRpbWVzIHlvdSBoYXZlIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgX3Nv
bWV0aGluZ18sIGJ1dCB5b3UgbmVlZCBhbgotYWN0aW9uIHRoYXQgcmV0dXJucyBgdm9pZGAgKHBl
cmhhcHMgeW91IHdhbnQgdG8gdXNlIGl0IGluIGEgbW9jawotZnVuY3Rpb24gdGhhdCByZXR1cm5z
IGB2b2lkYCwgb3IgcGVyaGFwcyBpdCBuZWVkcyB0byBiZSB1c2VkIGluCi1gRG9BbGwoKWAgYW5k
IGl0J3Mgbm90IHRoZSBsYXN0IGluIHRoZSBsaXN0KS4gYElnbm9yZVJlc3VsdCgpYCBsZXRzCi15
b3UgZG8gdGhhdC4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNp
bmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotaW50IFBy
b2Nlc3MoY29uc3QgTXlEYXRhJiBkYXRhKTsKLXN0cmluZyBEb1NvbWV0aGluZygpOwotCi1jbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEoQWJjLCB2
b2lkKGNvbnN0IE15RGF0YSYgZGF0YSkpOwotICBNT0NLX01FVEhPRDAoWHl6LCBib29sKCkpOwot
fTsKLS4uLgotCi0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIEFiYyhfKSkKLSAg
Ly8gLldpbGxPbmNlKEludm9rZShQcm9jZXNzKSk7Ci0gIC8vIFRoZSBhYm92ZSBsaW5lIHdvbid0
IGNvbXBpbGUgYXMgUHJvY2VzcygpIHJldHVybnMgaW50IGJ1dCBBYmMoKSBuZWVkcwotICAvLyB0
byByZXR1cm4gdm9pZC4KLSAgICAgIC5XaWxsT25jZShJZ25vcmVSZXN1bHQoSW52b2tlKFByb2Nl
c3MpKSk7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBYeXooKSkKLSAgICAgIC5XaWxsT25jZShEb0Fs
bChJZ25vcmVSZXN1bHQoSW52b2tlKERvU29tZXRoaW5nKSksCi0gICAgICAvLyBJZ25vcmVzIHRo
ZSBzdHJpbmcgRG9Tb21ldGhpbmcoKSByZXR1cm5zLgotICAgICAgICAgICAgICAgICAgICAgIFJl
dHVybih0cnVlKSkpOwotYGBgCi0KLU5vdGUgdGhhdCB5b3UgKipjYW5ub3QqKiB1c2UgYElnbm9y
ZVJlc3VsdCgpYCBvbiBhbiBhY3Rpb24gdGhhdCBhbHJlYWR5Ci1yZXR1cm5zIGB2b2lkYC4gRG9p
bmcgc28gd2lsbCBsZWFkIHRvIHVnbHkgY29tcGlsZXIgZXJyb3JzLgotCi0jIyBTZWxlY3Rpbmcg
YW4gQWN0aW9uJ3MgQXJndW1lbnRzICMjCi0KLVNheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24g
YEZvbygpYCB0aGF0IHRha2VzIHNldmVuIGFyZ3VtZW50cywgYW5kCi15b3UgaGF2ZSBhIGN1c3Rv
bSBhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byBpbnZva2Ugd2hlbiBgRm9vKClgIGlzCi1jYWxsZWQu
IFRyb3VibGUgaXMsIHRoZSBjdXN0b20gYWN0aW9uIG9ubHkgd2FudHMgdGhyZWUgYXJndW1lbnRz
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwot
Li4uCi0gIE1PQ0tfTUVUSE9ENyhGb28sIGJvb2woYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcm
IG5hbWUsIGludCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8
cGFpcjxpbnQsIGludD4sIGRvdWJsZT4mIHdlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgbWluX3dlaWdodCwgZG91YmxlIG1heF93aWdodCkpOwotLi4uCi0KLWJvb2wgSXNW
aXNpYmxlSW5RdWFkcmFudDEoYm9vbCB2aXNpYmxlLCBpbnQgeCwgaW50IHkpIHsKLSAgcmV0dXJu
IHZpc2libGUgJiYgeCA+PSAwICYmIHkgPj0gMDsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1v
Y2ssIEZvbyhfLCBfLCBfLCBfLCBfLCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoSXNW
aXNpYmxlSW5RdWFkcmFudDEpKTsgIC8vIFVoLCB3b24ndCBjb21waWxlLiA6LSgKLWBgYAotCi1U
byBwbGVhc2UgdGhlIGNvbXBpbGVyIEdvZCwgeW91IGNhbiB0byBkZWZpbmUgYW4gImFkYXB0b3Ii
IHRoYXQgaGFzCi10aGUgc2FtZSBzaWduYXR1cmUgYXMgYEZvbygpYCBhbmQgY2FsbHMgdGhlIGN1
c3RvbSBhY3Rpb24gd2l0aCB0aGUKLXJpZ2h0IGFyZ3VtZW50czoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLQotYm9vbCBNeUlzVmlzaWJsZUlu
UXVhZHJhbnQxKGJvb2wgdmlzaWJsZSwgY29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBk
b3VibGU+JiB3ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1pbl93
ZWlnaHQsIGRvdWJsZSBtYXhfd2lnaHQpIHsKLSAgcmV0dXJuIElzVmlzaWJsZUluUXVhZHJhbnQx
KHZpc2libGUsIHgsIHkpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8s
IF8sIF8sIF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShNeUlzVmlzaWJsZUluUXVh
ZHJhbnQxKSk7ICAvLyBOb3cgaXQgd29ya3MuCi1gYGAKLQotQnV0IGlzbid0IHRoaXMgYXdrd2Fy
ZD8KLQotR29vZ2xlIE1vY2sgcHJvdmlkZXMgYSBnZW5lcmljIF9hY3Rpb24gYWRhcHRvcl8sIHNv
IHlvdSBjYW4gc3BlbmQgeW91cgotdGltZSBtaW5kaW5nIG1vcmUgaW1wb3J0YW50IGJ1c2luZXNz
IHRoYW4gd3JpdGluZyB5b3VyIG93bgotYWRhcHRvcnMuIEhlcmUncyB0aGUgc3ludGF4OgotCi1g
YGAKLSAgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhY3Rpb24pCi1gYGAKLQotY3JlYXRlcyBh
biBhY3Rpb24gdGhhdCBwYXNzZXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBh
dAotdGhlIGdpdmVuIGluZGljZXMgKDAtYmFzZWQpIHRvIHRoZSBpbm5lciBgYWN0aW9uYCBhbmQg
cGVyZm9ybXMKLWl0LiBVc2luZyBgV2l0aEFyZ3NgLCBvdXIgb3JpZ2luYWwgZXhhbXBsZSBjYW4g
YmUgd3JpdHRlbiBhczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rp
bmc6Okludm9rZTsKLXVzaW5nIDo6dGVzdGluZzo6V2l0aEFyZ3M7Ci0uLi4KLSAgRVhQRUNUX0NB
TEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKFdpdGhB
cmdzPDAsIDIsIDM+KEludm9rZShJc1Zpc2libGVJblF1YWRyYW50MSkpKTsKLSAgICAgIC8vIE5v
IG5lZWQgdG8gZGVmaW5lIHlvdXIgb3duIGFkYXB0b3IuCi1gYGAKLQotRm9yIGJldHRlciByZWFk
YWJpbGl0eSwgR29vZ2xlIE1vY2sgYWxzbyBnaXZlcyB5b3U6Ci0KLSAgKiBgV2l0aG91dEFyZ3Mo
YWN0aW9uKWAgd2hlbiB0aGUgaW5uZXIgYGFjdGlvbmAgdGFrZXMgX25vXyBhcmd1bWVudCwgYW5k
Ci0gICogYFdpdGhBcmc8Tj4oYWN0aW9uKWAgKG5vIGBzYCBhZnRlciBgQXJnYCkgd2hlbiB0aGUg
aW5uZXIgYGFjdGlvbmAgdGFrZXMgX29uZV8gYXJndW1lbnQuCi0KLUFzIHlvdSBtYXkgaGF2ZSBy
ZWFsaXplZCwgYEludm9rZVdpdGhvdXRBcmdzKC4uLilgIGlzIGp1c3Qgc3ludGFjdGljCi1zdWdh
ciBmb3IgYFdpdGhvdXRBcmdzKElub3ZrZSguLi4pKWAuCi0KLUhlcmUgYXJlIG1vcmUgdGlwczoK
LQotICAqIFRoZSBpbm5lciBhY3Rpb24gdXNlZCBpbiBgV2l0aEFyZ3NgIGFuZCBmcmllbmRzIGRv
ZXMgbm90IGhhdmUgdG8gYmUgYEludm9rZSgpYCAtLSBpdCBjYW4gYmUgYW55dGhpbmcuCi0gICog
WW91IGNhbiByZXBlYXQgYW4gYXJndW1lbnQgaW4gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbmVjZXNz
YXJ5LCBlLmcuIGBXaXRoQXJnczwyLCAzLCAzLCA1PiguLi4pYC4KLSAgKiBZb3UgY2FuIGNoYW5n
ZSB0aGUgb3JkZXIgb2YgdGhlIGFyZ3VtZW50cywgZS5nLiBgV2l0aEFyZ3M8MywgMiwgMT4oLi4u
KWAuCi0gICogVGhlIHR5cGVzIG9mIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgZG8gX25vdF8gaGF2
ZSB0byBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBpbm5lciBhY3Rpb24gZXhhY3RseS4gSXQg
d29ya3MgYXMgbG9uZyBhcyB0aGV5IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUg
Y29ycmVzcG9uZGluZyBhcmd1bWVudHMgb2YgdGhlIGlubmVyIGFjdGlvbi4gRm9yIGV4YW1wbGUs
IGlmIHRoZSA0LXRoIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGlzIGFuIGBpbnRgIGFu
ZCBgbXlfYWN0aW9uYCB0YWtlcyBhIGBkb3VibGVgLCBgV2l0aEFyZzw0PihteV9hY3Rpb24pYCB3
aWxsIHdvcmsuCi0KLSMjIElnbm9yaW5nIEFyZ3VtZW50cyBpbiBBY3Rpb24gRnVuY3Rpb25zICMj
Ci0KLVRoZSBzZWxlY3RpbmctYW4tYWN0aW9uJ3MtYXJndW1lbnRzIHJlY2lwZSBzaG93ZWQgdXMg
b25lIHdheSB0byBtYWtlIGEKLW1vY2sgZnVuY3Rpb24gYW5kIGFuIGFjdGlvbiB3aXRoIGluY29t
cGF0aWJsZSBhcmd1bWVudCBsaXN0cyBmaXQKLXRvZ2V0aGVyLiBUaGUgZG93bnNpZGUgaXMgdGhh
dCB3cmFwcGluZyB0aGUgYWN0aW9uIGluCi1gV2l0aEFyZ3M8Li4uPigpYCBjYW4gZ2V0IHRlZGlv
dXMgZm9yIHBlb3BsZSB3cml0aW5nIHRoZSB0ZXN0cy4KLQotSWYgeW91IGFyZSBkZWZpbmluZyBh
IGZ1bmN0aW9uLCBtZXRob2QsIG9yIGZ1bmN0b3IgdG8gYmUgdXNlZCB3aXRoCi1gSW52b2tlKigp
YCwgYW5kIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gc29tZSBvZiBpdHMgYXJndW1lbnRzLCBh
bgotYWx0ZXJuYXRpdmUgdG8gYFdpdGhBcmdzYCBpcyB0byBkZWNsYXJlIHRoZSB1bmludGVyZXN0
aW5nIGFyZ3VtZW50cyBhcwotYFVudXNlZGAuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gbGVz
cyBjbHV0dGVyZWQgYW5kIGxlc3MgZnJhZ2lsZSBpbgotY2FzZSB0aGUgdHlwZXMgb2YgdGhlIHVu
aW50ZXJlc3RpbmcgYXJndW1lbnRzIGNoYW5nZS4gSXQgY291bGQgYWxzbwotaW5jcmVhc2UgdGhl
IGNoYW5jZSB0aGUgYWN0aW9uIGZ1bmN0aW9uIGNhbiBiZSByZXVzZWQuIEZvciBleGFtcGxlLAot
Z2l2ZW4KLQotYGBgCi0gIE1PQ0tfTUVUSE9EMyhGb28sIGRvdWJsZShjb25zdCBzdHJpbmcmIGxh
YmVsLCBkb3VibGUgeCwgZG91YmxlIHkpKTsKLSAgTU9DS19NRVRIT0QzKEJhciwgZG91YmxlKGlu
dCBpbmRleCwgZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci1gYGAKLQotaW5zdGVhZCBvZgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1kb3VibGUg
RGlzdGFuY2VUb09yaWdpbldpdGhMYWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwg
ZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLX0KLQotZG91YmxlIERpc3Rh
bmNlVG9PcmlnaW5XaXRoSW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAg
cmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLX0KLS4uLgotCi0gIEVYRVBDVF9DQUxMKG1vY2ssIEZv
bygiYWJjIiwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5X
aXRoTGFiZWwpKTsKLSAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQotICAgICAgLldp
bGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luV2l0aEluZGV4KSk7Ci1gYGAKLQoteW91IGNv
dWxkIHdyaXRlCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJ
bnZva2U7Ci11c2luZyA6OnRlc3Rpbmc6OlVudXNlZDsKLQotZG91YmxlIERpc3RhbmNlVG9Pcmln
aW4oVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5
KTsKLX0KLS4uLgotCi0gIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCi0gICAg
ICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLSAgRVhFUENUX0NBTEwobW9j
aywgQmFyKDUsIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2lu
KSk7Ci1gYGAKLQotIyMgU2hhcmluZyBBY3Rpb25zICMjCi0KLUp1c3QgbGlrZSBtYXRjaGVycywg
YSBHb29nbGUgTW9jayBhY3Rpb24gb2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlcgotdG8gYSBy
ZWYtY291bnRlZCBpbXBsZW1lbnRhdGlvbiBvYmplY3QuIFRoZXJlZm9yZSBjb3B5aW5nIGFjdGlv
bnMgaXMKLWFsc28gYWxsb3dlZCBhbmQgdmVyeSBlZmZpY2llbnQuIFdoZW4gdGhlIGxhc3QgYWN0
aW9uIHRoYXQgcmVmZXJlbmNlcwotdGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUg
aW1wbGVtZW50YXRpb24gb2JqZWN0IHdpbGwgYmUKLWRlbGV0ZWQuCi0KLUlmIHlvdSBoYXZlIHNv
bWUgY29tcGxleCBhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byB1c2UgYWdhaW4gYW5kIGFnYWluLAot
eW91IG1heSBub3QgaGF2ZSB0byBidWlsZCBpdCBmcm9tIHNjcmF0Y2ggZXZlcnl0aW1lLiBJZiB0
aGUgYWN0aW9uCi1kb2Vzbid0IGhhdmUgYW4gaW50ZXJuYWwgc3RhdGUgKGkuZS4gaWYgaXQgYWx3
YXlzIGRvZXMgdGhlIHNhbWUgdGhpbmcKLW5vIG1hdHRlciBob3cgbWFueSB0aW1lcyBpdCBoYXMg
YmVlbiBjYWxsZWQpLCB5b3UgY2FuIGFzc2lnbiBpdCB0byBhbgotYWN0aW9uIHZhcmlhYmxlIGFu
ZCB1c2UgdGhhdCB2YXJpYWJsZSByZXBlYXRlZGx5LiBGb3IgZXhhbXBsZToKLQotYGBgCi0gIEFj
dGlvbjxib29sKGludCopPiBzZXRfZmxhZyA9IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oNSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSk7Ci0gIC4u
LiB1c2Ugc2V0X2ZsYWcgaW4gLldpbGxPbmNlKCkgYW5kIC5XaWxsUmVwZWF0ZWRseSgpIC4uLgot
YGBgCi0KLUhvd2V2ZXIsIGlmIHRoZSBhY3Rpb24gaGFzIGl0cyBvd24gc3RhdGUsIHlvdSBtYXkg
YmUgc3VycHJpc2VkIGlmIHlvdQotc2hhcmUgdGhlIGFjdGlvbiBvYmplY3QuIFN1cHBvc2UgeW91
IGhhdmUgYW4gYWN0aW9uIGZhY3RvcnkKLWBJbmNyZW1lbnRDb3VudGVyKGluaXQpYCB3aGljaCBj
cmVhdGVzIGFuIGFjdGlvbiB0aGF0IGluY3JlbWVudHMgYW5kCi1yZXR1cm5zIGEgY291bnRlciB3
aG9zZSBpbml0aWFsIHZhbHVlIGlzIGBpbml0YCwgdXNpbmcgdHdvIGFjdGlvbnMKLWNyZWF0ZWQg
ZnJvbSB0aGUgc2FtZSBleHByZXNzaW9uIGFuZCB1c2luZyBhIHNoYXJlZCBhY3Rpb24gd2lsbAot
ZXhpaGliaXQgZGlmZmVyZW50IGJlaGF2aW9ycy4gRXhhbXBsZToKLQotYGBgCi0gIEVYUEVDVF9D
QUxMKGZvbywgRG9UaGlzKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVtZW50Q291bnRl
cigwKSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCkpCi0gICAgICAuV2lsbFJlcGVhdGVk
bHkoSW5jcmVtZW50Q291bnRlcigwKSk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4K
LSAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJucyAyLgotICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1
cm5zIDEgLSBCbGFoKCkgdXNlcyBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAvLyBjb3Vu
dGVyIHRoYW4gQmFyKCkncy4KLWBgYAotCi12ZXJzdXMKLQotYGBgCi0gIEFjdGlvbjxpbnQoKT4g
aW5jcmVtZW50ID0gSW5jcmVtZW50Q291bnRlcigwKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIERv
VGhpcygpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KGluY3JlbWVudCk7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGF0KCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKLSAgZm9v
LkRvVGhpcygpOyAgLy8gUmV0dXJucyAxLgotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIu
Ci0gIGZvby5Eb1RoYXQoKTsgIC8vIFJldHVybnMgMyAtIHRoZSBjb3VudGVyIGlzIHNoYXJlZC4K
LWBgYAotCi0jIE1pc2MgUmVjaXBlcyBvbiBVc2luZyBHb29nbGUgTW9jayAjCi0KLSMjIE1ha2lu
ZyB0aGUgQ29tcGlsYXRpb24gRmFzdGVyICMjCi0KLUJlbGlldmUgaXQgb3Igbm90LCB0aGUgX3Zh
c3QgbWFqb3JpdHlfIG9mIHRoZSB0aW1lIHNwZW50IG9uIGNvbXBpbGluZwotYSBtb2NrIGNsYXNz
IGlzIGluIGdlbmVyYXRpbmcgaXRzIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLCBhcyB0aGV5
Ci1wZXJmb3JtIG5vbi10cml2aWFsIHRhc2tzIChlLmcuIHZlcmlmaWNhdGlvbiBvZiB0aGUKLWV4
cGVjdGF0aW9ucykuIFdoYXQncyBtb3JlLCBtb2NrIG1ldGhvZHMgd2l0aCBkaWZmZXJlbnQgc2ln
bmF0dXJlcwotaGF2ZSBkaWZmZXJlbnQgdHlwZXMgYW5kIHRodXMgdGhlaXIgY29uc3RydWN0b3Jz
L2Rlc3RydWN0b3JzIG5lZWQgdG8KLWJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgc2VwYXJh
dGVseS4gQXMgYSByZXN1bHQsIGlmIHlvdSBtb2NrIG1hbnkKLWRpZmZlcmVudCB0eXBlcyBvZiBt
ZXRob2RzLCBjb21waWxpbmcgeW91ciBtb2NrIGNsYXNzIGNhbiBnZXQgcmVhbGx5Ci1zbG93Lgot
Ci1JZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBzbG93IGNvbXBpbGF0aW9uLCB5b3UgY2FuIG1vdmUg
dGhlIGRlZmluaXRpb24KLW9mIHlvdXIgbW9jayBjbGFzcycgY29uc3RydWN0b3IgYW5kIGRlc3Ry
dWN0b3Igb3V0IG9mIHRoZSBjbGFzcyBib2R5Ci1hbmQgaW50byBhIGAuY3BwYCBmaWxlLiBUaGlz
IHdheSwgZXZlbiBpZiB5b3UgYCNpbmNsdWRlYCB5b3VyIG1vY2sKLWNsYXNzIGluIE4gZmlsZXMs
IHRoZSBjb21waWxlciBvbmx5IG5lZWRzIHRvIGdlbmVyYXRlIGl0cyBjb25zdHJ1Y3RvcgotYW5k
IGRlc3RydWN0b3Igb25jZSwgcmVzdWx0aW5nIGluIGEgbXVjaCBmYXN0ZXIgY29tcGlsYXRpb24u
Ci0KLUxldCdzIGlsbHVzdHJhdGUgdGhlIGlkZWEgdXNpbmcgYW4gZXhhbXBsZS4gSGVyZSdzIHRo
ZSBkZWZpbml0aW9uIG9mIGEKLW1vY2sgY2xhc3MgYmVmb3JlIGFwcGx5aW5nIHRoaXMgcmVjaXBl
OgotCi1gYGAKLS8vIEZpbGUgbW9ja19mb28uaC4KLS4uLgotY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28gewotIHB1YmxpYzoKLSAgLy8gU2luY2Ugd2UgZG9uJ3QgZGVjbGFyZSB0aGUgY29uc3Ry
dWN0b3Igb3IgdGhlIGRlc3RydWN0b3IsCi0gIC8vIHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRl
IHRoZW0gaW4gZXZlcnkgdHJhbnNsYXRpb24gdW5pdAotICAvLyB3aGVyZSB0aGlzIG1vY2sgY2xh
c3MgaXMgdXNlZC4KLQotICBNT0NLX01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7Ci0gIE1PQ0tfTUVU
SE9EMShEb1RoYXQsIGJvb2woY29uc3QgY2hhciogc3RyKSk7Ci0gIC4uLiBtb3JlIG1vY2sgbWV0
aG9kcyAuLi4KLX07Ci1gYGAKLQotQWZ0ZXIgdGhlIGNoYW5nZSwgaXQgd291bGQgbG9vayBsaWtl
OgotCi1gYGAKLS8vIEZpbGUgbW9ja19mb28uaC4KLS4uLgotY2xhc3MgTW9ja0ZvbyA6IHB1Ymxp
YyBGb28gewotIHB1YmxpYzoKLSAgLy8gVGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFy
ZSBkZWNsYXJlZCwgYnV0IG5vdCBkZWZpbmVkLCBoZXJlLgotICBNb2NrRm9vKCk7Ci0gIHZpcnR1
YWwgfk1vY2tGb28oKTsKLQotICBNT0NLX01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7Ci0gIE1PQ0tf
TUVUSE9EMShEb1RoYXQsIGJvb2woY29uc3QgY2hhciogc3RyKSk7Ci0gIC4uLiBtb3JlIG1vY2sg
bWV0aG9kcyAuLi4KLX07Ci1gYGAKLWFuZAotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmNwcC4KLSNp
bmNsdWRlICJwYXRoL3RvL21vY2tfZm9vLmgiCi0KLS8vIFRoZSBkZWZpbml0aW9ucyBtYXkgYXBw
ZWFyIHRyaXZpYWwsIGJ1dCB0aGUgZnVuY3Rpb25zIGFjdHVhbGx5IGRvIGEKLS8vIGxvdCBvZiB0
aGluZ3MgdGhyb3VnaCB0aGUgY29uc3RydWN0b3JzL2Rlc3RydWN0b3JzIG9mIHRoZSBtZW1iZXIK
LS8vIHZhcmlhYmxlcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgbW9jayBtZXRob2RzLgotTW9ja0Zv
bzo6TW9ja0ZvbygpIHt9Ci1Nb2NrRm9vOjp+TW9ja0ZvbygpIHt9Ci1gYGAKLQotIyMgRm9yY2lu
ZyBhIFZlcmlmaWNhdGlvbiAjIwotCi1XaGVuIGl0J3MgYmVpbmcgZGVzdG95ZWQsIHlvdXIgZnJp
ZW5kbHkgbW9jayBvYmplY3Qgd2lsbCBhdXRvbWF0aWNhbGx5Ci12ZXJpZnkgdGhhdCBhbGwgZXhw
ZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQsIGFuZCB3aWxsCi1nZW5lcmF0ZSBb
R29vZ2xlIFRlc3RdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgZmFpbHVy
ZXMKLWlmIG5vdC4gVGhpcyBpcyBjb252ZW5pZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUg
bGVzcyB0aGluZyB0bwotd29ycnkgYWJvdXQuIFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBz
dXJlIGlmIHlvdXIgbW9jayBvYmplY3Qgd2lsbAotYmUgZGVzdG95ZWQuCi0KLUhvdyBjb3VsZCBp
dCBiZSB0aGF0IHlvdXIgbW9jayBvYmplY3Qgd29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/
Ci1XZWxsLCBpdCBtaWdodCBiZSBjcmVhdGVkIG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUg
Y29kZSB5b3UgYXJlCi10ZXN0aW5nLiBTdXBwb3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2Rl
IGFuZCBpdCBkb2Vzbid0IGRlbGV0ZSB0aGUKLW1vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNv
dWxkIGVuZCB1cCB3aXRoIGEgcGFzc2luZyB0ZXN0IHdoZW4KLXRoZXJlJ3MgYWN0dWFsbHkgYSBi
dWcuCi0KLVVzaW5nIGEgaGVhcCBjaGVja2VyIGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZp
YXRlIHRoZSBjb25jZXJuLCBidXQKLWl0cyBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUg
cmVsaWFibGUuIFNvLCBzb21ldGltZXMgeW91IGRvIHdhbnQKLXRvIF9mb3JjZV8gR29vZ2xlIE1v
Y2sgdG8gdmVyaWZ5IGEgbW9jayBvYmplY3QgYmVmb3JlIGl0IGlzCi0oaG9wZWZ1bGx5KSBkZXN0
cnVjdGVkLiBZb3UgY2FuIGRvIHRoaXMgd2l0aAotYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtb2NrX29iamVjdClgOgotCi1gYGAKLVRFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNz
ZXNSZXF1ZXN0KSB7Ci0gIHVzaW5nIDo6dGVzdGluZzo6TW9jazsKLQotICBNb2NrRm9vKiBjb25z
dCBmb28gPSBuZXcgTW9ja0ZvbzsKLSAgRVhQRUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKLSAgLy8g
Li4uIG90aGVyIGV4cGVjdGF0aW9ucyAuLi4KLQotICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgot
ICBNeVNlcnZlciBzZXJ2ZXIoZm9vKTsKLSAgc2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7Ci0K
LSAgLy8gSW4gY2FzZSB0aGF0IHNlcnZlcidzIGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVs
ZXRlIGZvbywKLSAgLy8gdGhpcyB3aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4K
LSAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoZm9vKTsKLX0gIC8vIHNlcnZlciBp
cyBkZXN0cm95ZWQgd2hlbiBpdCBnb2VzIG91dCBvZiBzY29wZSBoZXJlLgotYGBgCi0KLSoqVGlw
OioqIFRoZSBgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0
dXJucyBhCi1gYm9vbGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBz
dWNjZXNzZnVsIChgdHJ1ZWAgZm9yCi15ZXMpLCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlv
biBjYWxsIGluc2lkZSBhIGBBU1NFUlRfVFJVRSgpYCBpZgotdGhlcmUgaXMgbm8gcG9pbnQgZ29p
bmcgZnVydGhlciB3aGVuIHRoZSB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4KLQotIyMgVXNpbmcg
Q2hlY2sgUG9pbnRzICMjCi0KLVNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1v
Y2sgb2JqZWN0IGF0IHZhcmlvdXMgY2hlY2sKLXBvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2gg
Y2hlY2sgcG9pbnQsIHlvdSB2ZXJpZnkgdGhhdCBhbGwgZXhpc3RpbmcKLWV4cGVjdGF0aW9ucyBv
biB0aGUgbW9jayBvYmplY3QgaGF2ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAot
c29tZSBuZXcgZXhwZWN0YXRpb25zIG9uIGl0IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhp
cyBhbGxvd3MgeW91Ci10byB3b3JrIHdpdGggYSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9z
ZSBzaXplcyBhcmUgZWFjaAotbWFuYWdlYWJsZS4KLQotT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhh
dCBpbiB5b3VyIHRlc3QncyBgU2V0VXAoKWAgZnVuY3Rpb24sIHlvdSBtYXkKLXdhbnQgdG8gcHV0
IHRoZSBvYmplY3QgeW91IGFyZSB0ZXN0aW5nIGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRo
ZQotaGVscCBmcm9tIGEgbW9jayBvYmplY3QuIE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlv
dSB3YW50IHRvIGNsZWFyCi1hbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQg
aW4gdGhlIGBURVNUX0ZgIGJvZHkgeW91IGNhbgotc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBp
dC4KLQotQXMgeW91IG1heSBoYXZlIGZpZ3VyZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKClgCi1mdW5jdGlvbiB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lw
ZSBjYW4gaGVscCB5b3UgaGVyZS4gT3IsIGlmIHlvdQotYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRv
IHNldCBkZWZhdWx0IGFjdGlvbnMgb24gdGhlIG1vY2sgb2JqZWN0IGFuZAotd2FudCB0byBjbGVh
ciB0aGUgZGVmYXVsdCBhY3Rpb25zIGFzIHdlbGwsIHVzZQotYE1vY2s6OlZlcmlmeUFuZENsZWFy
KCZtb2NrX29iamVjdClgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gZG9lcyB3aGF0Ci1gTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJu
cyB0aGUKLXNhbWUgYGJvb2xgLCAqKnBsdXMqKiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0
YXRlbWVudHMgb24KLWBtb2NrX29iamVjdGAgdG9vLgotCi1Bbm90aGVyIHRyaWNrIHlvdSBjYW4g
dXNlIHRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0IGlzIHRvIHB1dCB0aGUKLWV4cGVjdGF0aW9u
cyBpbiBzZXF1ZW5jZXMgYW5kIGluc2VydCBjYWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIK
LWZ1bmN0aW9uIGF0IHNwZWNpZmljIHBsYWNlcy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRo
ZSBtb2NrCi1mdW5jdGlvbiBjYWxscyBkbyBoYXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBl
eGFtcGxlLCBpZiB5b3UgYXJlCi1leGVyY2lzaW5nIGNvZGU6Ci0KLWBgYAotRm9vKDEpOwotRm9v
KDIpOwotRm9vKDMpOwotYGBgCi0KLWFuZCB3YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFu
ZCBgRm9vKDMpYCBib3RoIGludm9rZQotYG1vY2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9l
c24ndCBpbnZva2UgYW55dGhpbmcuIFlvdSBjYW4gd3JpdGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpNb2NrRnVuY3Rpb247Ci0KLVRFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkg
ewotICBNeU1vY2sgbW9jazsKLSAgLy8gQ2xhc3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5
IG9uZSBtb2NrIG1ldGhvZC4gIEl0IGlzIG5hbWVkCi0gIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUg
Ri4KLSAgTW9ja0Z1bmN0aW9uPHZvaWQoc3RyaW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsK
LSAgewotICAgIEluU2VxdWVuY2UgczsKLQotICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIp
KTsKLSAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMSIpKTsKLSAgICBFWFBFQ1RfQ0FMTChj
aGVjaywgQ2FsbCgiMiIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0gIH0K
LSAgRm9vKDEpOwotICBjaGVjay5DYWxsKCIxIik7Ci0gIEZvbygyKTsKLSAgY2hlY2suQ2FsbCgi
MiIpOwotICBGb28oMyk7Ci19Ci1gYGAKLQotVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0
IHRoZSBmaXJzdCBgQmFyKCJhIilgIG11c3QgaGFwcGVuIGJlZm9yZQotY2hlY2sgcG9pbnQgIjEi
LCB0aGUgc2Vjb25kIGBCYXIoImEiKWAgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIi
LAotYW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRz
LiBUaGUgZXhwbGljaXQKLWNoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBg
QmFyKCJhIilgIGlzIGNhbGxlZCBieSB3aGljaAotY2FsbCB0byBgRm9vKClgLgotCi0jIyBNb2Nr
aW5nIERlc3RydWN0b3JzICMjCi0KLVNvbWV0aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBt
b2NrIG9iamVjdCBpcyBkZXN0cnVjdGVkIGF0IHRoZQotcmlnaHQgdGltZSwgZS5nLiBhZnRlciBg
YmFyLT5BKClgIGlzIGNhbGxlZCBidXQgYmVmb3JlIGBiYXItPkIoKWAgaXMKLWNhbGxlZC4gV2Ug
YWxyZWFkeSBrbm93IHRoYXQgeW91IGNhbiBzcGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRl
cgotb2YgbW9jayBmdW5jdGlvbiBjYWxscywgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9j
ayB0aGUgZGVzdHJ1Y3Rvcgotb2YgdGhlIG1vY2sgZnVuY3Rpb24uCi0KLVRoaXMgc291bmRzIHNp
bXBsZSwgZXhjZXB0IGZvciBvbmUgcHJvYmxlbTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAot
ZnVuY3Rpb24gd2l0aCBzcGVjaWFsIHN5bnRheCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0
aGUKLWBNT0NLX01FVEhPRDBgIG1hY3JvIGRvZXNuJ3Qgd29yayBmb3IgaXQ6Ci0KLWBgYAotICBN
T0NLX01FVEhPRDAofk1vY2tGb28sIHZvaWQoKSk7ICAvLyBXb24ndCBjb21waWxlIQotYGBgCi0K
LVRoZSBnb29kIG5ld3MgaXMgdGhhdCB5b3UgY2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFj
aGlldmUgdGhlIHNhbWUKLWVmZmVjdC4gRmlyc3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgp
YCB0byB5b3VyIG1vY2sgY2xhc3MgYW5kIGNhbGwKLWl0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtl
IHRoaXM6Ci0KLWBgYAotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgLy8g
QWRkIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHRvIHRoZSBtb2NrIGNsYXNzLgotICBNT0NLX01F
VEhPRDAoRGllLCB2b2lkKCkpOwotICB2aXJ0dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQotfTsK
LWBgYAotCi0oSWYgdGhlIG5hbWUgYERpZSgpYCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3lt
Ym9sLCBjaG9vc2UgYW5vdGhlcgotbmFtZS4pIE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBw
cm9ibGVtIG9mIHRlc3Rpbmcgd2hlbiBhIGBNb2NrRm9vYAotb2JqZWN0IGRpZXMgdG8gdGVzdGlu
ZyB3aGVuIGl0cyBgRGllKClgIG1ldGhvZCBpcyBjYWxsZWQ6Ci0KLWBgYAotICBNb2NrRm9vKiBm
b28gPSBuZXcgTW9ja0ZvbzsKLSAgTW9ja0JhciogYmFyID0gbmV3IE1vY2tCYXI7Ci0gIC4uLgot
ICB7Ci0gICAgSW5TZXF1ZW5jZSBzOwotCi0gICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRl
ciBiYXItPkEoKSBhbmQgYmVmb3JlIGJhci0+QigpLgotICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEo
KSk7Ci0gICAgRVhQRUNUX0NBTEwoKmZvbywgRGllKCkpOwotICAgIEVYUEVDVF9DQUxMKCpiYXIs
IEIoKSk7Ci0gIH0KLWBgYAotCi1BbmQgdGhhdCdzIHRoYXQuCi0KLSMjIFVzaW5nIEdvb2dsZSBN
b2NrIGFuZCBUaHJlYWRzICMjCi0KLSoqSU1QT1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmli
ZSBpbiB0aGlzIHJlY2lwZSBpcyAqKk9OTFkqKiB0cnVlIG9uCi1wbGF0Zm9ybXMgd2hlcmUgR29v
Z2xlIE1vY2sgaXMgdGhyZWFkLXNhZmUuIEN1cnJlbnRseSB0aGVzZSBhcmUgb25seQotcGxhdGZv
cm1zIHRoYXQgc3VwcG9ydCB0aGUgcHRocmVhZHMgbGlicmFyeSAodGhpcyBpbmNsdWRlcyBMaW51
eCBhbmQgTWFjKS4KLVRvIG1ha2UgaXQgdGhyZWFkLXNhZmUgb24gb3RoZXIgcGxhdGZvcm1zIHdl
IG9ubHkgbmVlZCB0byBpbXBsZW1lbnQKLXNvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMg
aW4gYCJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYC4KLQotSW4gYSAqKnVuaXQqKiB0ZXN0
LCBpdCdzIGJlc3QgaWYgeW91IGNvdWxkIGlzb2xhdGUgYW5kIHRlc3QgYSBwaWVjZSBvZgotY29k
ZSBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBUaGF0IGF2b2lkcyByYWNlIGNvbmRpdGlv
bnMgYW5kCi1kZWFkIGxvY2tzLCBhbmQgbWFrZXMgZGVidWdnaW5nIHlvdXIgdGVzdCBtdWNoIGVh
c2llci4KLQotWWV0IG1hbnkgcHJvZ3JhbXMgYXJlIG11bHRpLXRocmVhZGVkLCBhbmQgc29tZXRp
bWVzIHRvIHRlc3Qgc29tZXRoaW5nCi13ZSBuZWVkIHRvIHBvdW5kIG9uIGl0IGZyb20gbW9yZSB0
aGFuIG9uZSB0aHJlYWQuIEdvb2dsZSBNb2NrIHdvcmtzCi1mb3IgdGhpcyBwdXJwb3NlIHRvby4K
LQotUmVtZW1iZXIgdGhlIHN0ZXBzIGZvciB1c2luZyBhIG1vY2s6Ci0KLSAgMS4gQ3JlYXRlIGEg
bW9jayBvYmplY3QgYGZvb2AuCi0gIDEuIFNldCBpdHMgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBl
Y3RhdGlvbnMgdXNpbmcgYE9OX0NBTEwoKWAgYW5kIGBFWFBFQ1RfQ0FMTCgpYC4KLSAgMS4gVGhl
IGNvZGUgdW5kZXIgdGVzdCBjYWxscyBtZXRob2RzIG9mIGBmb29gLgotICAxLiBPcHRpb25hbGx5
LCB2ZXJpZnkgYW5kIHJlc2V0IHRoZSBtb2NrLgotICAxLiBEZXN0cm95IHRoZSBtb2NrIHlvdXJz
ZWxmLCBvciBsZXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBkZXN0cm95IGl0LiBUaGUgZGVzdHJ1Y3Rv
ciB3aWxsIGF1dG9tYXRpY2FsbHkgdmVyaWZ5IGl0LgotCi1JZiB5b3UgZm9sbG93IHRoZSBmb2xs
b3dpbmcgc2ltcGxlIHJ1bGVzLCB5b3VyIG1vY2tzIGFuZCB0aHJlYWRzIGNhbgotbGl2ZSBoYXBw
aWx5IHRvZ2V0ZXI6Ci0KLSAgKiBFeGVjdXRlIHlvdXIgX3Rlc3QgY29kZV8gKGFzIG9wcG9zZWQg
dG8gdGhlIGNvZGUgYmVpbmcgdGVzdGVkKSBpbiBfb25lXyB0aHJlYWQuIFRoaXMgbWFrZXMgeW91
ciB0ZXN0IGVhc3kgdG8gZm9sbG93LgotICAqIE9idmlvdXNseSwgeW91IGNhbiBkbyBzdGVwICMx
IHdpdGhvdXQgbG9ja2luZy4KLSAgKiBXaGVuIGRvaW5nIHN0ZXAgIzIgYW5kICM1LCBtYWtlIHN1
cmUgbm8gb3RoZXIgdGhyZWFkIGlzIGFjY2Vzc2luZyBgZm9vYC4gT2J2aW91cyB0b28sIGh1aD8K
LSAgKiAjMyBhbmQgIzQgY2FuIGJlIGRvbmUgZWl0aGVyIGluIG9uZSB0aHJlYWQgb3IgaW4gbXVs
dGlwbGUgdGhyZWFkcyAtIGFueXdheSB5b3Ugd2FudC4gR29vZ2xlIE1vY2sgdGFrZXMgY2FyZSBv
ZiB0aGUgbG9ja2luZywgc28geW91IGRvbid0IGhhdmUgdG8gZG8gYW55IC0gdW5sZXNzIHJlcXVp
cmVkIGJ5IHlvdXIgdGVzdCBsb2dpYy4KLQotSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGVzIChmb3Ig
ZXhhbXBsZSwgaWYgeW91IHNldCBleHBlY3RhdGlvbnMgb24gYQotbW9jayB3aGlsZSBhbm90aGVy
IHRocmVhZCBpcyBjYWxsaW5nIGl0cyBtZXRob2RzKSwgeW91IGdldCB1bmRlZmluZWQKLWJlaGF2
aW9yLiBUaGF0J3Mgbm90IGZ1biwgc28gZG9uJ3QgZG8gaXQuCi0KLUdvb2dsZSBNb2NrIGd1YXJh
bnRlZXMgdGhhdCB0aGUgYWN0aW9uIGZvciBhIG1vY2sgZnVuY3Rpb24gaXMgZG9uZSBpbgotdGhl
IHNhbWUgdGhyZWFkIHRoYXQgY2FsbGVkIHRoZSBtb2NrIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwg
aW4KLQotYGBgCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbygxKSkKLSAgICAgIC5XaWxsT25jZShh
Y3Rpb24xKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKDIpKQotICAgICAgLldpbGxPbmNlKGFj
dGlvbjIpOwotYGBgCi0KLWlmIGBGb28oMSlgIGlzIGNhbGxlZCBpbiB0aHJlYWQgMSBhbmQgYEZv
bygyKWAgaXMgY2FsbGVkIGluIHRocmVhZCAyLAotR29vZ2xlIE1vY2sgd2lsbCBleGVjdXRlIGBh
Y3Rpb24xYCBpbiB0aHJlYWQgMSBhbmQgYGFjdGlvbjJgIGluIHRocmVhZAotMi4KLQotR29vZ2xl
IE1vY2sgZG9lcyBfbm90XyBpbXBvc2UgYSBzZXF1ZW5jZSBvbiBhY3Rpb25zIHBlcmZvcm1lZCBp
bgotZGlmZmVyZW50IHRocmVhZHMgKGRvaW5nIHNvIG1heSBjcmVhdGUgZGVhZGxvY2tzIGFzIHRo
ZSBhY3Rpb25zIG1heQotbmVlZCB0byBjb29wZXJhdGUpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4
ZWN1dGlvbiBvZiBgYWN0aW9uMWAgYW5kCi1gYWN0aW9uMmAgaW4gdGhlIGFib3ZlIGV4YW1wbGUg
X21heV8gaW50ZXJsZWF2ZS4gSWYgdGhpcyBpcyBhIHByb2JsZW0sCi15b3Ugc2hvdWxkIGFkZCBw
cm9wZXIgc3luY2hyb25pemF0aW9uIGxvZ2ljIHRvIGBhY3Rpb24xYCBhbmQgYGFjdGlvbjJgCi10
byBtYWtlIHRoZSB0ZXN0IHRocmVhZC1zYWZlLgotCi0KLUFsc28sIHJlbWVtYmVyIHRoYXQgYERl
ZmF1bHRWYWx1ZTxUPmAgaXMgYSBnbG9iYWwgcmVzb3VyY2UgdGhhdAotcG90ZW50aWFsbHkgYWZm
ZWN0cyBfYWxsXyBsaXZpbmcgbW9jayBvYmplY3RzIGluIHlvdXIKLXByb2dyYW0uIE5hdHVyYWxs
eSwgeW91IHdvbid0IHdhbnQgdG8gbWVzcyB3aXRoIGl0IGZyb20gbXVsdGlwbGUKLXRocmVhZHMg
b3Igd2hlbiB0aGVyZSBzdGlsbCBhcmUgbW9ja3MgaW4gYWN0aW9uLgotCi0jIyBDb250cm9sbGlu
ZyBIb3cgTXVjaCBJbmZvcm1hdGlvbiBHb29nbGUgTW9jayBQcmludHMgIyMKLQotV2hlbiBHb29n
bGUgTW9jayBzZWVzIHNvbWV0aGluZyB0aGF0IGhhcyB0aGUgcG90ZW50aWFsIG9mIGJlaW5nIGFu
Ci1lcnJvciAoZS5nLiBhIG1vY2sgZnVuY3Rpb24gd2l0aCBubyBleHBlY3RhdGlvbiBpcyBjYWxs
ZWQsIGEuay5hLiBhbgotdW5pbnRlcmVzdGluZyBjYWxsLCB3aGljaCBpcyBhbGxvd2VkIGJ1dCBw
ZXJoYXBzIHlvdSBmb3Jnb3QgdG8KLWV4cGxpY2l0bHkgYmFuIHRoZSBjYWxsKSwgaXQgcHJpbnRz
IHNvbWUgd2FybmluZyBtZXNzYWdlcywgaW5jbHVkaW5nCi10aGUgYXJndW1lbnRzIG9mIHRoZSBm
dW5jdGlvbiBhbmQgdGhlIHJldHVybiB2YWx1ZS4gSG9wZWZ1bGx5IHRoaXMKLXdpbGwgcmVtaW5k
IHlvdSB0byB0YWtlIGEgbG9vayBhbmQgc2VlIGlmIHRoZXJlIGlzIGluZGVlZCBhIHByb2JsZW0u
Ci0KLVNvbWV0aW1lcyB5b3UgYXJlIGNvbmZpZGVudCB0aGF0IHlvdXIgdGVzdHMgYXJlIGNvcnJl
Y3QgYW5kIG1heSBub3QKLWFwcHJlY2lhdGUgc3VjaCBmcmllbmRseSBtZXNzYWdlcy4gU29tZSBv
dGhlciB0aW1lcywgeW91IGFyZSBkZWJ1Z2dpbmcKLXlvdXIgdGVzdHMgb3IgbGVhcm5pbmcgYWJv
dXQgdGhlIGJlaGF2aW9yIG9mIHRoZSBjb2RlIHlvdSBhcmUgdGVzdGluZywKLWFuZCB3aXNoIHlv
dSBjb3VsZCBvYnNlcnZlIGV2ZXJ5IG1vY2sgY2FsbCB0aGF0IGhhcHBlbnMgKGluY2x1ZGluZwot
YXJndW1lbnQgdmFsdWVzIGFuZCB0aGUgcmV0dXJuIHZhbHVlKS4gQ2xlYXJseSwgb25lIHNpemUg
ZG9lc24ndCBmaXQKLWFsbC4KLQotWW91IGNhbiBjb250cm9sIGhvdyBtdWNoIEdvb2dsZSBNb2Nr
IHRlbGxzIHlvdSB1c2luZyB0aGUKLWAtLWdtb2NrX3ZlcmJvc2U9TEVWRUxgIGNvbW1hbmQtbGlu
ZSBmbGFnLCB3aGVyZSBgTEVWRUxgIGlzIGEgc3RyaW5nCi13aXRoIHRocmVlIHBvc3NpYmxlIHZh
bHVlczoKLQotICAqIGBpbmZvYDogR29vZ2xlIE1vY2sgd2lsbCBwcmludCBhbGwgaW5mb3JtYXRp
b25hbCBtZXNzYWdlcywgd2FybmluZ3MsIGFuZCBlcnJvcnMgKG1vc3QgdmVyYm9zZSkuIEF0IHRo
aXMgc2V0dGluZywgR29vZ2xlIE1vY2sgd2lsbCBhbHNvIGxvZyBhbnkgY2FsbHMgdG8gdGhlIGBP
Tl9DQUxML0VYUEVDVF9DQUxMYCBtYWNyb3MuCi0gICogYHdhcm5pbmdgOiBHb29nbGUgTW9jayB3
aWxsIHByaW50IGJvdGggd2FybmluZ3MgYW5kIGVycm9ycyAobGVzcyB2ZXJib3NlKS4gVGhpcyBp
cyB0aGUgZGVmYXVsdC4KLSAgKiBgZXJyb3JgOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGVycm9y
cyBvbmx5IChsZWFzdCB2ZXJib3NlKS4KLQotQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhZGp1c3Qg
dGhlIHZhbHVlIG9mIHRoYXQgZmxhZyBmcm9tIHdpdGhpbiB5b3VyCi10ZXN0cyBsaWtlIHNvOgot
Ci1gYGAKLSAgOjp0ZXN0aW5nOjpGTEFHU19nbW9ja192ZXJib3NlID0gImVycm9yIjsKLWBgYAot
Ci1Ob3csIGp1ZGljaW91c2x5IHVzZSB0aGUgcmlnaHQgZmxhZyB0byBlbmFibGUgR29vZ2xlIE1v
Y2sgc2VydmUgeW91IGJldHRlciEKLQotIyMgUnVubmluZyBUZXN0cyBpbiBFbWFjcyAjIwotCi1J
ZiB5b3UgYnVpbGQgYW5kIHJ1biB5b3VyIHRlc3RzIGluIEVtYWNzLCB0aGUgc291cmNlIGZpbGUg
bG9jYXRpb25zIG9mCi1Hb29nbGUgTW9jayBhbmQgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC8pCi1lcnJvcnMgd2lsbCBiZSBoaWdobGlnaHRlZC4gSnVz
dCBwcmVzcyBgPEVudGVyPmAgb24gb25lIG9mIHRoZW0gYW5kCi15b3UnbGwgYmUgdGFrZW4gdG8g
dGhlIG9mZmVuZGluZyBsaW5lLiBPciwgeW91IGNhbiBqdXN0IHR5cGUgYEMteCBgYAotdG8ganVt
cCB0byB0aGUgbmV4dCBlcnJvci4KLQotVG8gbWFrZSBpdCBldmVuIGVhc2llciwgeW91IGNhbiBh
ZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB5b3VyCi1gfi8uZW1hY3NgIGZpbGU6Ci0KLWBgYAot
KGdsb2JhbC1zZXQta2V5ICJcTS1tIiAgICdjb21waWxlKSAgOyBtIGlzIGZvciBtYWtlCi0oZ2xv
YmFsLXNldC1rZXkgW00tZG93bl0gJ25leHQtZXJyb3IpCi0oZ2xvYmFsLXNldC1rZXkgW00tdXBd
ICAgJyhsYW1iZGEgKCkgKGludGVyYWN0aXZlKSAobmV4dC1lcnJvciAtMSkpKQotYGBgCi0KLVRo
ZW4geW91IGNhbiB0eXBlIGBNLW1gIHRvIHN0YXJ0IGEgYnVpbGQsIG9yIGBNLXVwYC9gTS1kb3du
YCB0byBtb3ZlCi1iYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGVycm9ycy4KLQotIyMgRnVzaW5nIEdv
b2dsZSBNb2NrIFNvdXJjZSBGaWxlcyAjIwotCi1Hb29nbGUgTW9jaydzIGltcGxlbWVudGF0aW9u
IGNvbnNpc3RzIG9mIGRvemVucyBvZiBmaWxlcyAoZXhjbHVkaW5nCi1pdHMgb3duIHRlc3RzKS4g
IFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbgotZmV3ZXIg
ZmlsZXMgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNvcHkgdGhlbSB0byBhIG5l
dwotbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0aGlzIHdlIHByb3ZpZGUg
YW4gZXhwZXJpbWVudGFsCi1QeXRob24gc2NyaXB0IGBmdXNlX2dtb2NrX2ZpbGVzLnB5YCBpbiB0
aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkKLShzdGFydGluZyB3aXRoIHJlbGVhc2UgMS4yLjApLiAg
QXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZQotaW5zdGFsbGVkIG9uIHlvdXIg
bWFjaGluZSwganVzdCBnbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCi1gYGAKLXB5dGhvbiBm
dXNlX2dtb2NrX2ZpbGVzLnB5IE9VVFBVVF9ESVIKLWBgYAotCi1hbmQgeW91IHNob3VsZCBzZWUg
YW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMKLWBndGVz
dC9ndGVzdC5oYCwgYGdtb2NrL2dtb2NrLmhgLCBhbmQgYGdtb2NrLWd0ZXN0LWFsbC5jY2AgaW4g
aXQuCi1UaGVzZSB0aHJlZSBmaWxlcyBjb250YWluIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNl
IEdvb2dsZSBNb2NrIChhbmQKLUdvb2dsZSBUZXN0KS4gIEp1c3QgY29weSB0aGVtIHRvIGFueXdo
ZXJlIHlvdSB3YW50IGFuZCB5b3UgYXJlIHJlYWR5Ci10byB3cml0ZSB0ZXN0cyBhbmQgdXNlIG1v
Y2tzLiAgWW91IGNhbiB1c2UgdGhlCi1bc2NycHRzL3Rlc3QvTWFrZWZpbGVdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3NvdXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy90ZXN0
L01ha2VmaWxlKSBmaWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBpbGUgeW91ciB0ZXN0
cwotYWdhaW5zdCB0aGVtLgotCi0jIEV4dGVuZGluZyBHb29nbGUgTW9jayAjCi0KLSMjIFdyaXRp
bmcgTmV3IE1hdGNoZXJzIFF1aWNrbHkgIyMKLQotVGhlIGBNQVRDSEVSKmAgZmFtaWx5IG9mIG1h
Y3JvcyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgY3VzdG9tIG1hdGNoZXJzCi1lYXNpbHkuICBUaGUg
c3ludGF4OgotCi1gYGAKLU1BVENIRVIobmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nX2V4cHJlc3Np
b24pIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLXdpbGwgZGVmaW5lIGEgbWF0Y2hlciB3aXRoIHRo
ZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCi1zdGF0ZW1lbnRzLCB3aGljaCBtdXN0IHJl
dHVybiBhIGBib29sYCB0byBpbmRpY2F0ZSBpZiB0aGUgbWF0Y2gKLXN1Y2NlZWRzLiAgSW5zaWRl
IHRoZSBzdGF0ZW1lbnRzLCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZwotbWF0Y2hl
ZCBieSBgYXJnYCwgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5IGBhcmdfdHlwZWAuCi0KLVRoZSBk
ZXNjcmlwdGlvbiBzdHJpbmcgaXMgYSBgc3RyaW5nYC10eXBlZCBleHByZXNzaW9uIHRoYXQgZG9j
dW1lbnRzCi13aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRo
ZSBmYWlsdXJlIG1lc3NhZ2UKLXdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgSXQgY2FuIChhbmQgc2hv
dWxkKSByZWZlcmVuY2UgdGhlIHNwZWNpYWwKLWBib29sYCB2YXJpYWJsZSBgbmVnYXRpb25gLCBh
bmQgc2hvdWxkIGV2YWx1YXRlIHRvIHRoZSBkZXNjcmlwdGlvbiBvZgotdGhlIG1hdGNoZXIgd2hl
biBgbmVnYXRpb25gIGlzIGBmYWxzZWAsIG9yIHRoYXQgb2YgdGhlIG1hdGNoZXIncwotbmVnYXRp
b24gd2hlbiBgbmVnYXRpb25gIGlzIGB0cnVlYC4KLQotRm9yIGNvbnZlbmllbmNlLCB3ZSBhbGxv
dyB0aGUgZGVzY3JpcHRpb24gc3RyaW5nIHRvIGJlIGVtcHR5IChgIiJgKSwKLWluIHdoaWNoIGNh
c2UgR29vZ2xlIE1vY2sgd2lsbCB1c2UgdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZQotbWF0
Y2hlciBuYW1lIGFzIHRoZSBkZXNjcmlwdGlvbi4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENI
RVIoSXNEaXZpc2libGVCeTcsICIiKSB7IHJldHVybiAoYXJnICUgNykgPT0gMDsgfQotYGBgCi1h
bGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLSAgLy8gRXhwZWN0cyBtb2NrX2Zvby5CYXIobikgdG8g
YmUgY2FsbGVkIHdoZXJlIG4gaXMgZGl2aXNpYmxlIGJ5IDcuCi0gIEVYUEVDVF9DQUxMKG1vY2tf
Zm9vLCBCYXIoSXNEaXZpc2libGVCeTcoKSkpOwotYGBgCi1vciwKLWBgYAotdXNpbmcgOjp0ZXN0
aW5nOjpOb3Q7Ci0uLi4KLSAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJc0RpdmlzaWJs
ZUJ5NygpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9vdGhlcl9leHByZXNzaW9uLCBOb3QoSXNEaXZp
c2libGVCeTcoKSkpOwotYGBgCi1JZiB0aGUgYWJvdmUgYXNzZXJ0aW9ucyBmYWlsLCB0aGV5IHdp
bGwgcHJpbnQgc29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lv
bgotICBFeHBlY3RlZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1YWw6IDI3Ci0uLi4KLSAg
VmFsdWUgb2Y6IHNvbWVfb3RoZXJfZXhwcmVzc2lvbgotICBFeHBlY3RlZDogbm90IChpcyBkaXZp
c2libGUgYnkgNykKLSAgICBBY3R1YWw6IDIxCi1gYGAKLXdoZXJlIHRoZSBkZXNjcmlwdGlvbnMg
YCJpcyBkaXZpc2libGUgYnkgNyJgIGFuZCBgIm5vdCAoaXMgZGl2aXNpYmxlCi1ieSA3KSJgIGFy
ZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWF0Y2hlciBuYW1lCi1gSXNEaXZp
c2libGVCeTdgLgotCi1BcyB5b3UgbWF5IGhhdmUgbm90aWNlZCwgdGhlIGF1dG8tZ2VuZXJhdGVk
IGRlc2NyaXB0aW9ucyAoZXNwZWNpYWxseQotdGhvc2UgZm9yIHRoZSBuZWdhdGlvbikgbWF5IG5v
dCBiZSBzbyBncmVhdC4gWW91IGNhbiBhbHdheXMgb3ZlcnJpZGUKLXRoZW0gd2l0aCBhIHN0cmlu
ZyBleHByZXNzaW9uIG9mIHlvdXIgb3duOgotYGBgCi1NQVRDSEVSKElzRGl2aXNpYmxlQnk3LCBz
dGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMiKSArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiIGRpdmlzaWJsZSBieSA3IikgewotICByZXR1cm4gKGFyZyAlIDcpID09IDA7Ci19
Ci1gYGAKLQotT3B0aW9uYWxseSwgeW91IGNhbiBzdHJlYW0gYWRkaXRpb25hbCBpbmZvcm1hdGlv
biB0byBhIGhpZGRlbiBhcmd1bWVudAotbmFtZWQgYHJlc3VsdF9saXN0ZW5lcmAgdG8gZXhwbGFp
biB0aGUgbWF0Y2ggcmVzdWx0LiBGb3IgZXhhbXBsZSwgYQotYmV0dGVyIGRlZmluaXRpb24gb2Yg
YElzRGl2aXNpYmxlQnk3YCBpczoKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJsZUJ5NywgIiIpIHsK
LSAgaWYgKChhcmcgJSA3KSA9PSAwKQotICAgIHJldHVybiB0cnVlOwotCi0gICpyZXN1bHRfbGlz
dGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCAoYXJnICUgNyk7Ci0gIHJldHVybiBmYWxz
ZTsKLX0KLWBgYAotCi1XaXRoIHRoaXMgZGVmaW5pdGlvbiwgdGhlIGFib3ZlIGFzc2VydGlvbiB3
aWxsIGdpdmUgYSBiZXR0ZXIgbWVzc2FnZToKLWBgYAotICBWYWx1ZSBvZjogc29tZV9leHByZXNz
aW9uCi0gIEV4cGVjdGVkOiBpcyBkaXZpc2libGUgYnkgNwotICAgIEFjdHVhbDogMjcgKHRoZSBy
ZW1haW5kZXIgaXMgNikKLWBgYAotCi1Zb3Ugc2hvdWxkIGxldCBgTWF0Y2hBbmRFeHBsYWluKClg
IHByaW50IF9hbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbl8KLXRoYXQgY2FuIGhlbHAgYSB1c2Vy
IHVuZGVyc3RhbmQgdGhlIG1hdGNoIHJlc3VsdC4gTm90ZSB0aGF0IGl0IHNob3VsZAotZXhwbGFp
biB3aHkgdGhlIG1hdGNoIHN1Y2NlZWRzIGluIGNhc2Ugb2YgYSBzdWNjZXNzICh1bmxlc3MgaXQn
cwotb2J2aW91cykgLSB0aGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgaW5z
aWRlCi1gTm90KClgLiBUaGVyZSBpcyBubyBuZWVkIHRvIHByaW50IHRoZSBhcmd1bWVudCB2YWx1
ZSBpdHNlbGYsIGFzCi1Hb29nbGUgTW9jayBhbHJlYWR5IHByaW50cyBpdCBmb3IgeW91LgotCi0q
Kk5vdGVzOioqCi0KLSAgMS4gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgKGBh
cmdfdHlwZWApIGlzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggeW91IHVzZSB0
aGUgbWF0Y2hlciBhbmQgaXMgc3VwcGxpZWQgdG8geW91IGJ5IHRoZSBjb21waWxlciwgc28geW91
IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVjbGFyaW5nIGl0IChub3IgY2FuIHlvdSkuICBU
aGlzIGFsbG93cyB0aGUgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBg
SXNEaXZpc2libGVCeTcoKWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYW55IHR5cGUgd2hlcmUgdGhl
IHZhbHVlIG9mIGAoYXJnICUgNykgPT0gMGAgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRv
IGEgYGJvb2xgLiAgSW4gdGhlIGBCYXIoSXNEaXZpc2libGVCeTcoKSlgIGV4YW1wbGUgYWJvdmUs
IGlmIG1ldGhvZCBgQmFyKClgIHRha2VzIGFuIGBpbnRgLCBgYXJnX3R5cGVgIHdpbGwgYmUgYGlu
dGA7IGlmIGl0IHRha2VzIGFuIGB1bnNpZ25lZCBsb25nYCwgYGFyZ190eXBlYCB3aWxsIGJlIGB1
bnNpZ25lZCBsb25nYDsgYW5kIHNvIG9uLgotICAxLiBHb29nbGUgTW9jayBkb2Vzbid0IGd1YXJh
bnRlZSB3aGVuIG9yIGhvdyBtYW55IHRpbWVzIGEgbWF0Y2hlciB3aWxsIGJlIGludm9rZWQuIFRo
ZXJlZm9yZSB0aGUgbWF0Y2hlciBsb2dpYyBtdXN0IGJlIF9wdXJlbHkgZnVuY3Rpb25hbF8gKGku
ZS4gaXQgY2Fubm90IGhhdmUgYW55IHNpZGUgZWZmZWN0LCBhbmQgdGhlIHJlc3VsdCBtdXN0IG5v
dCBkZXBlbmQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBh
bmQgdGhlIG1hdGNoZXIgcGFyYW1ldGVycykuIFRoaXMgcmVxdWlyZW1lbnQgbXVzdCBiZSBzYXRp
c2ZpZWQgbm8gbWF0dGVyIGhvdyB5b3UgZGVmaW5lIHRoZSBtYXRjaGVyIChlLmcuIHVzaW5nIG9u
ZSBvZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyByZWNpcGVzKS4gSW4g
cGFydGljdWxhciwgYSBtYXRjaGVyIGNhbiBuZXZlciBjYWxsIGEgbW9jayBmdW5jdGlvbiwgYXMg
dGhhdCB3aWxsIGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIG1vY2sgb2JqZWN0IGFuZCBHb29nbGUg
TW9jay4KLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBNYXRjaGVycyBRdWlja2x5ICMj
Ci0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBkZWZpbmUgYSBtYXRjaGVyIHRoYXQgaGFzIHBh
cmFtZXRlcnMuICBGb3IgdGhhdCB5b3UKLWNhbiB1c2UgdGhlIG1hY3JvOgotYGBgCi1NQVRDSEVS
X1AobmFtZSwgcGFyYW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0K
LWBgYAotd2hlcmUgdGhlIGRlc2NyaXB0aW9uIHN0cmluZyBjYW4gYmUgZWl0aGVyIGAiImAgb3Ig
YSBzdHJpbmcgZXhwcmVzc2lvbgotdGhhdCByZWZlcmVuY2VzIGBuZWdhdGlvbmAgYW5kIGBwYXJh
bV9uYW1lYC4KLQotRm9yIGV4YW1wbGU6Ci1gYGAKLU1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVl
LCB2YWx1ZSwgIiIpIHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVlOyB9Ci1gYGAKLXdpbGwgYWxs
b3cgeW91IHRvIHdyaXRlOgotYGBgCi0gIEVYUEVDVF9USEFUKEJsYWgoImEiKSwgSGFzQWJzb2x1
dGVWYWx1ZShuKSk7Ci1gYGAKLXdoaWNoIG1heSBsZWFkIHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1p
bmcgYG5gIGlzIDEwKToKLWBgYAotICBWYWx1ZSBvZjogQmxhaCgiYSIpCi0gIEV4cGVjdGVkOiBo
YXMgYWJzb2x1dGUgdmFsdWUgMTAKLSAgICBBY3R1YWw6IC05Ci1gYGAKLQotTm90ZSB0aGF0IGJv
dGggdGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJhbWV0ZXIgYXJlCi1wcmludGVk
LCBtYWtpbmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCi0KLUluIHRoZSBtYXRjaGVyIGRl
ZmluaXRpb24gYm9keSwgeW91IGNhbiB3cml0ZSBgZm9vX3R5cGVgIHRvCi1yZWZlcmVuY2UgdGhl
IHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFtZWQgYGZvb2AuICBGb3IgZXhhbXBsZSwgaW4gdGhlCi1i
b2R5IG9mIGBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUpYCBhYm92ZSwgeW91IGNh
biB3cml0ZQotYHZhbHVlX3R5cGVgIHRvIHJlZmVyIHRvIHRoZSB0eXBlIG9mIGB2YWx1ZWAuCi0K
LUdvb2dsZSBNb2NrIGFsc28gcHJvdmlkZXMgYE1BVENIRVJfUDJgLCBgTUFUQ0hFUl9QM2AsIC4u
LiwgdXAgdG8KLWBNQVRDSEVSX1AxMGAgdG8gc3VwcG9ydCBtdWx0aS1wYXJhbWV0ZXIgbWF0Y2hl
cnM6Ci1gYGAKLU1BVENIRVJfUGsobmFtZSwgcGFyYW1fMSwgLi4uLCBwYXJhbV9rLCBkZXNjcmlw
dGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLVBsZWFzZSBub3RlIHRoYXQgdGhl
IGN1c3RvbSBkZXNjcmlwdGlvbiBzdHJpbmcgaXMgZm9yIGEgcGFydGljdWxhcgotKippbnN0YW5j
ZSoqIG9mIHRoZSBtYXRjaGVyLCB3aGVyZSB0aGUgcGFyYW1ldGVycyBoYXZlIGJlZW4gYm91bmQg
dG8KLWFjdHVhbCB2YWx1ZXMuICBUaGVyZWZvcmUgdXN1YWxseSB5b3UnbGwgd2FudCB0aGUgcGFy
YW1ldGVyIHZhbHVlcyB0bwotYmUgcGFydCBvZiB0aGUgZGVzY3JpcHRpb24uICBHb29nbGUgTW9j
ayBsZXRzIHlvdSBkbyB0aGF0IGJ5Ci1yZWZlcmVuY2luZyB0aGUgbWF0Y2hlciBwYXJhbWV0ZXJz
IGluIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcKLWV4cHJlc3Npb24uCi0KLUZvciBleGFtcGxlLAot
YGBgCi0gIHVzaW5nIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZzsKLSAgTUFUQ0hFUl9QMihJbkNs
b3NlZFJhbmdlLCBsb3csIGhpLAotICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKG5lZ2F0aW9uID8g
Imlzbid0IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCi0gICAgICAgICAgICAgUHJpbnRUb1N0
cmluZyhsb3cpICsgIiwgIiArIFByaW50VG9TdHJpbmcoaGkpICsgIl0iKSB7Ci0gICAgcmV0dXJu
IGxvdyA8PSBhcmcgJiYgYXJnIDw9IGhpOwotICB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgzLCBJ
bkNsb3NlZFJhbmdlKDQsIDYpKTsKLWBgYAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQg
Y29udGFpbnMgdGhlIG1lc3NhZ2U6Ci1gYGAKLSAgRXhwZWN0ZWQ6IGlzIGluIHJhbmdlIFs0LCA2
XQotYGBgCi0KLUlmIHlvdSBzcGVjaWZ5IGAiImAgYXMgdGhlIGRlc2NyaXB0aW9uLCB0aGUgZmFp
bHVyZSBtZXNzYWdlIHdpbGwKLWNvbnRhaW4gdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZSBt
YXRjaGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCi1wYXJhbWV0ZXIgdmFsdWVzIHByaW50ZWQgYXMg
YSB0dXBsZS4gIEZvciBleGFtcGxlLAotYGBgCi0gIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwg
bG93LCBoaSwgIiIpIHsgLi4uIH0KLSAgLi4uCi0gIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFu
Z2UoNCwgNikpOwotYGBgCi13b3VsZCBnZW5lcmF0ZSBhIGZhaWx1cmUgdGhhdCBjb250YWlucyB0
aGUgdGV4dDoKLWBgYAotICBFeHBlY3RlZDogaW4gY2xvc2VkIHJhbmdlICg0LCA2KQotYGBgCi0K
LUZvciB0aGUgcHVycG9zZSBvZiB0eXBpbmcsIHlvdSBjYW4gdmlldwotYGBgCi1NQVRDSEVSX1Br
KEZvbywgcDEsIC4uLiwgcGssIGRlc2NyaXB0aW9uX3N0cmluZykgeyAuLi4gfQotYGBgCi1hcyBz
aG9ydGhhbmQgZm9yCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVu
YW1lIHBrX3R5cGU+Ci1Gb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPgotRm9vKHAx
X3R5cGUgcDEsIC4uLiwgcGtfdHlwZSBwaykgeyAuLi4gfQotYGBgCi0KLVdoZW4geW91IHdyaXRl
IGBGb28odjEsIC4uLiwgdmspYCwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKLXRo
ZSBwYXJhbWV0ZXJzIGB2MWAsIC4uLiwgYW5kIGB2a2AgZm9yIHlvdS4gIElmIHlvdSBhcmUgbm90
IGhhcHB5IHdpdGgKLXRoZSByZXN1bHQgb2YgdGhlIHR5cGUgaW5mZXJlbmNlLCB5b3UgY2FuIHNw
ZWNpZnkgdGhlIHR5cGVzIGJ5Ci1leHBsaWNpdGx5IGluc3RhbnRpYXRpbmcgdGhlIHRlbXBsYXRl
LCBhcyBpbiBgRm9vPGxvbmcsIGJvb2w+KDUsIGZhbHNlKWAuCi1BcyBzYWlkIGVhcmxpZXIsIHlv
dSBkb24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLWBhcmdfdHlwZWAgYXMgdGhhdCdz
IGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKLWlzIHVzZWQu
Ci0KLVlvdSBjYW4gYXNzaWduIHRoZSByZXN1bHQgb2YgZXhwcmVzc2lvbiBgRm9vKHAxLCAuLi4s
IHBrKWAgdG8gYQotdmFyaWFibGUgb2YgdHlwZSBgRm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwg
cGtfdHlwZT5gLiAgVGhpcyBjYW4gYmUKLXVzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRjaGVycy4g
IE1hdGNoZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIHBhcmFtZXRlcgotb3IgaGF2ZSBvbmx5IG9uZSBw
YXJhbWV0ZXIgaGF2ZSBzcGVjaWFsIHR5cGVzOiB5b3UgY2FuIGFzc2lnbiBgRm9vKClgCi10byBh
IGBGb29NYXRjaGVyYC10eXBlZCB2YXJpYWJsZSwgYW5kIGFzc2lnbiBgRm9vKHApYCB0byBhCi1g
Rm9vTWF0Y2hlclA8cF90eXBlPmAtdHlwZWQgdmFyaWFibGUuCi0KLVdoaWxlIHlvdSBjYW4gaW5z
dGFudGlhdGUgYSBtYXRjaGVyIHRlbXBsYXRlIHdpdGggcmVmZXJlbmNlIHR5cGVzLAotcGFzc2lu
ZyB0aGUgcGFyYW1ldGVycyBieSBwb2ludGVyIHVzdWFsbHkgbWFrZXMgeW91ciBjb2RlIG1vcmUK
LXJlYWRhYmxlLiAgSWYsIGhvd2V2ZXIsIHlvdSBzdGlsbCB3YW50IHRvIHBhc3MgYSBwYXJhbWV0
ZXIgYnkKLXJlZmVyZW5jZSwgYmUgYXdhcmUgdGhhdCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlIGdl
bmVyYXRlZCBieSB0aGUKLW1hdGNoZXIgeW91IHdpbGwgc2VlIHRoZSB2YWx1ZSBvZiB0aGUgcmVm
ZXJlbmNlZCBvYmplY3QgYnV0IG5vdCBpdHMKLWFkZHJlc3MuCi0KLVlvdSBjYW4gb3ZlcmxvYWQg
bWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBvZiBwYXJhbWV0ZXJzOgotYGBgCi1NQVRD
SEVSX1AoQmxhaCwgYSwgZGVzY3JpcHRpb25fc3RyaW5nXzEpIHsgLi4uIH0KLU1BVENIRVJfUDIo
QmxhaCwgYSwgYiwgZGVzY3JpcHRpb25fc3RyaW5nXzIpIHsgLi4uIH0KLWBgYAotCi1XaGlsZSBp
dCdzIHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIGBNQVRDSEVSKmAgbWFjcm9zIHdoZW4gZGVm
aW5pbmcKLWEgbmV3IG1hdGNoZXIsIHlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBpbXBsZW1lbnRp
bmcKLWBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFrZVBvbHltb3JwaGljTWF0Y2hlcigp
YCBpbnN0ZWFkIChzZWUKLXRoZSByZWNpcGVzIHRoYXQgZm9sbG93KSwgZXNwZWNpYWxseSBpZiB5
b3UgbmVlZCB0byB1c2UgdGhlIG1hdGNoZXIgYQotbG90LiAgV2hpbGUgdGhlc2UgYXBwcm9hY2hl
cyByZXF1aXJlIG1vcmUgd29yaywgdGhleSBnaXZlIHlvdSBtb3JlCi1jb250cm9sIG9uIHRoZSB0
eXBlcyBvZiB0aGUgdmFsdWUgYmVpbmcgbWF0Y2hlZCBhbmQgdGhlIG1hdGNoZXIKLXBhcmFtZXRl
cnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3Nh
Z2VzCi10aGF0IHBheSBvZmYgaW4gdGhlIGxvbmcgcnVuLiAgVGhleSBhbHNvIGFsbG93IG92ZXJs
b2FkaW5nIG1hdGNoZXJzCi1iYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9zZWQgdG8g
anVzdCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mCi1wYXJhbWV0ZXJzKS4KLQotIyMgV3JpdGluZyBO
ZXcgTW9ub21vcnBoaWMgTWF0Y2hlcnMgIyMKLQotQSBtYXRjaGVyIG9mIGFyZ3VtZW50IHR5cGUg
YFRgIGltcGxlbWVudHMKLWA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8VD5gIGFuZCBkb2Vz
IHR3byB0aGluZ3M6IGl0IHRlc3RzIHdoZXRoZXIgYQotdmFsdWUgb2YgdHlwZSBgVGAgbWF0Y2hl
cyB0aGUgbWF0Y2hlciwgYW5kIGNhbiBkZXNjcmliZSB3aGF0IGtpbmQgb2YKLXZhbHVlcyBpdCBt
YXRjaGVzLiBUaGUgbGF0dGVyIGFiaWxpdHkgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyByZWFkYWJs
ZQotZXJyb3IgbWVzc2FnZXMgd2hlbiBleHBlY3RhdGlvbnMgYXJlIHZpb2xhdGVkLgotCi1UaGUg
aW50ZXJmYWNlIGxvb2tzIGxpa2UgdGhpczoKLQotYGBgCi1jbGFzcyBNYXRjaFJlc3VsdExpc3Rl
bmVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICAvLyBTdHJlYW1zIHggdG8gdGhlIHVuZGVybHlpbmcg
b3N0cmVhbTsgZG9lcyBub3RoaW5nIGlmIHRoZSBvc3RyZWFtCi0gIC8vIGlzIE5VTEwuCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBNYXRjaFJlc3VsdExpc3RlbmVyJiBvcGVyYXRvcjw8KGNv
bnN0IFQmIHgpOwotCi0gIC8vIFJldHVybnMgdGhlIHVuZGVybHlpbmcgb3N0cmVhbS4KLSAgOjpz
dGQ6Om9zdHJlYW0qIHN0cmVhbSgpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBNYXRjaGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfk1hdGNoZXJJbnRlcmZh
Y2UoKTsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBtYXRjaGVyIG1hdGNoZXMgeDsgYWxz
byBleHBsYWlucyB0aGUgbWF0Y2gKLSAgLy8gcmVzdWx0IHRvICdsaXN0ZW5lcicuCi0gIHZpcnR1
YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5l
cikgY29uc3QgPSAwOwotCi0gIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVh
bS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCA9
IDA7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgdG8gYW4g
b3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0OwotfTsKLWBgYAotCi1JZiB5b3UgbmVlZCBhIGN1c3RvbSBtYXRjaGVyIGJ1
dCBgVHJ1bHkoKWAgaXMgbm90IGEgZ29vZCBvcHRpb24gKGZvcgotZXhhbXBsZSwgeW91IG1heSBu
b3QgYmUgaGFwcHkgd2l0aCB0aGUgd2F5IGBUcnVseShwcmVkaWNhdGUpYAotZGVzY3JpYmVzIGl0
c2VsZiwgb3IgeW91IG1heSB3YW50IHlvdXIgbWF0Y2hlciB0byBiZSBwb2x5bW9ycGhpYyBhcwot
YEVxKHZhbHVlKWAgaXMpLCB5b3UgY2FuIGRlZmluZSBhIG1hdGNoZXIgdG8gZG8gd2hhdGV2ZXIg
eW91IHdhbnQgaW4KLXR3byBzdGVwczogZmlyc3QgaW1wbGVtZW50IHRoZSBtYXRjaGVyIGludGVy
ZmFjZSwgYW5kIHRoZW4gZGVmaW5lIGEKLWZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbWF0
Y2hlciBpbnN0YW5jZS4gVGhlIHNlY29uZCBzdGVwIGlzIG5vdAotc3RyaWN0bHkgbmVlZGVkIGJ1
dCBpdCBtYWtlcyB0aGUgc3ludGF4IG9mIHVzaW5nIHRoZSBtYXRjaGVyIG5pY2VyLgotCi1Gb3Ig
ZXhhbXBsZSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIHRlc3Qgd2hldGhlciBhbiBgaW50
YCBpcwotZGl2aXNpYmxlIGJ5IDcgYW5kIHRoZW4gdXNlIGl0IGxpa2UgdGhpczoKLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpNYWtlTWF0Y2hlcjsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcjsKLXVz
aW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hS
ZXN1bHRMaXN0ZW5lcjsKLQotY2xhc3MgRGl2aXNpYmxlQnk3TWF0Y2hlciA6IHB1YmxpYyBNYXRj
aGVySW50ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhw
bGFpbihpbnQgbiwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gKG4gJSA3KSA9PSAwOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBkaXZpc2libGUgYnkgNyI7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgbm90IGRpdmlzaWJsZSBieSA3IjsKLSAgfQot
fTsKLQotaW5saW5lIE1hdGNoZXI8aW50PiBEaXZpc2libGVCeTcoKSB7Ci0gIHJldHVybiBNYWtl
TWF0Y2hlcihuZXcgRGl2aXNpYmxlQnk3TWF0Y2hlcik7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FM
TChmb28sIEJhcihEaXZpc2libGVCeTcoKSkpOwotYGBgCi0KLVlvdSBtYXkgaW1wcm92ZSB0aGUg
bWF0Y2hlciBtZXNzYWdlIGJ5IHN0cmVhbWluZyBhZGRpdGlvbmFsCi1pbmZvcm1hdGlvbiB0byB0
aGUgYGxpc3RlbmVyYCBhcmd1bWVudCBpbiBgTWF0Y2hBbmRFeHBsYWluKClgOgotCi1gYGAKLWNs
YXNzIERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxpbnQ+IHsK
LSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNv
bnN0IHsKLSAgICBjb25zdCBpbnQgcmVtYWluZGVyID0gbiAlIDc7Ci0gICAgaWYgKHJlbWFpbmRl
ciAhPSAwKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgInRoZSByZW1haW5kZXIgaXMgIiA8PCByZW1h
aW5kZXI7Ci0gICAgfQotICAgIHJldHVybiByZW1haW5kZXIgPT0gMDsKLSAgfQotICAuLi4KLX07
Ci1gYGAKLQotVGhlbiwgYEVYUEVDVF9USEFUKHgsIERpdmlzaWJsZUJ5NygpKTtgIG1heSBnZW5l
cmFsIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci1gYGAKLVZhbHVlIG9mOiB4Ci1FeHBlY3RlZDogaXMg
ZGl2aXNpYmxlIGJ5IDcKLSAgQWN0dWFsOiAyMyAodGhlIHJlbWFpbmRlciBpcyAyKQotYGBgCi0K
LSMjIFdyaXRpbmcgTmV3IFBvbHltb3JwaGljIE1hdGNoZXJzICMjCi0KLVlvdSd2ZSBsZWFybmVk
IGhvdyB0byB3cml0ZSB5b3VyIG93biBtYXRjaGVycyBpbiB0aGUgcHJldmlvdXMKLXJlY2lwZS4g
SnVzdCBvbmUgcHJvYmxlbTogYSBtYXRjaGVyIGNyZWF0ZWQgdXNpbmcgYE1ha2VNYXRjaGVyKClg
IG9ubHkKLXdvcmtzIGZvciBvbmUgcGFydGljdWxhciB0eXBlIG9mIGFyZ3VtZW50cy4gSWYgeW91
IHdhbnQgYQotX3BvbHltb3JwaGljXyBtYXRjaGVyIHRoYXQgd29ya3Mgd2l0aCBhcmd1bWVudHMg
b2Ygc2V2ZXJhbCB0eXBlcyAoZm9yCi1pbnN0YW5jZSwgYEVxKHgpYCBjYW4gYmUgdXNlZCB0byBt
YXRjaCBhIGB2YWx1ZWAgYXMgbG9uZyBhcyBgdmFsdWVgID09Ci1geGAgY29tcGlsZXMgLS0gYHZh
bHVlYCBhbmQgYHhgIGRvbid0IGhhdmUgdG8gc2hhcmUgdGhlIHNhbWUgdHlwZSksCi15b3UgY2Fu
IGxlYXJuIHRoZSB0cmljayBmcm9tIGAiZ21vY2svZ21vY2stbWF0Y2hlcnMuaCJgIGJ1dCBpdCdz
IGEgYml0Ci1pbnZvbHZlZC4KLQotRm9ydHVuYXRlbHksIG1vc3Qgb2YgdGhlIHRpbWUgeW91IGNh
biBkZWZpbmUgYSBwb2x5bW9ycGhpYyBtYXRjaGVyCi1lYXNpbHkgd2l0aCB0aGUgaGVscCBvZiBg
TWFrZVBvbHltb3JwaGljTWF0Y2hlcigpYC4gSGVyZSdzIGhvdyB5b3UgY2FuCi1kZWZpbmUgYE5v
dE51bGwoKWAgYXMgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5
bW9ycGhpY01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci11
c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Ci11c2luZyA6OnRlc3Rpbmc6OlBvbHltb3JwaGljTWF0
Y2hlcjsKLQotY2xhc3MgTm90TnVsbE1hdGNoZXIgewotIHB1YmxpYzoKLSAgLy8gVG8gaW1wbGVt
ZW50IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgZmlyc3QgZGVmaW5lIGEgQ09QWUFCTEUgY2xhc3MK
LSAgLy8gdGhhdCBoYXMgdGhyZWUgbWVtYmVycyBNYXRjaEFuZEV4cGxhaW4oKSwgRGVzY3JpYmVU
bygpLCBhbmQKLSAgLy8gRGVzY3JpYmVOZWdhdGlvblRvKCksIGxpa2UgdGhlIGZvbGxvd2luZy4K
LQotICAvLyBJbiB0aGlzIGV4YW1wbGUsIHdlIHdhbnQgdG8gdXNlIE5vdE51bGwoKSB3aXRoIGFu
eSBwb2ludGVyLCBzbwotICAvLyBNYXRjaEFuZEV4cGxhaW4oKSBhY2NlcHRzIGEgcG9pbnRlciBv
ZiBhbnkgdHlwZSBhcyBpdHMgZmlyc3QgYXJndW1lbnQuCi0gIC8vIEluIGdlbmVyYWwsIHlvdSBj
YW4gZGVmaW5lIE1hdGNoQW5kRXhwbGFpbigpIGFzIGFuIG9yZGluYXJ5IG1ldGhvZCBvcgotICAv
LyBhIG1ldGhvZCB0ZW1wbGF0ZSwgb3IgZXZlbiBvdmVybG9hZCBpdC4KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQqIHAsCi0gICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAg
cmV0dXJuIHAgIT0gTlVMTDsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB0aGUgcHJvcGVydHkgb2Yg
YSB2YWx1ZSBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsgKm9zIDw8ICJpcyBub3QgTlVMTCI7IH0KLQotICAvLyBEZXNj
cmliZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgTk9UIG1hdGNoaW5nIHRoaXMgbWF0Y2hlci4K
LSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpv
cyA8PCAiaXMgTlVMTCI7IH0KLX07Ci0KLS8vIFRvIGNvbnN0cnVjdCBhIHBvbHltb3JwaGljIG1h
dGNoZXIsIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzCi0vLyB0byBNYWtlUG9seW1vcnBo
aWNNYXRjaGVyKCkuICBOb3RlIHRoZSByZXR1cm4gdHlwZS4KLWlubGluZSBQb2x5bW9ycGhpY01h
dGNoZXI8Tm90TnVsbE1hdGNoZXI+IE5vdE51bGwoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBo
aWNNYXRjaGVyKE5vdE51bGxNYXRjaGVyKCkpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9v
LCBCYXIoTm90TnVsbCgpKSk7ICAvLyBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG5vbi1OVUxMIHBv
aW50ZXIuCi1gYGAKLQotKipOb3RlOioqIFlvdXIgcG9seW1vcnBoaWMgbWF0Y2hlciBjbGFzcyBk
b2VzICoqbm90KiogbmVlZCB0byBpbmhlcml0IGZyb20KLWBNYXRjaGVySW50ZXJmYWNlYCBvciBh
bnkgb3RoZXIgY2xhc3MsIGFuZCBpdHMgbWV0aG9kcyBkbyAqKm5vdCoqIG5lZWQKLXRvIGJlIHZp
cnR1YWwuCi0KLUxpa2UgaW4gYSBtb25vbW9ycGhpYyBtYXRjaGVyLCB5b3UgbWF5IGV4cGxhaW4g
dGhlIG1hdGNoIHJlc3VsdCBieQotc3RyZWFtaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8g
dGhlIGBsaXN0ZW5lcmAgYXJndW1lbnQgaW4KLWBNYXRjaEFuZEV4cGxhaW4oKWAuCi0KLSMjIFdy
aXRpbmcgTmV3IENhcmRpbmFsaXRpZXMgIyMKLQotQSBjYXJkaW5hbGl0eSBpcyB1c2VkIGluIGBU
aW1lcygpYCB0byB0ZWxsIEdvb2dsZSBNb2NrIGhvdyBtYW55IHRpbWVzCi15b3UgZXhwZWN0IGEg
Y2FsbCB0byBvY2N1ci4gSXQgZG9lc24ndCBoYXZlIHRvIGJlIGV4YWN0LiBGb3IgZXhhbXBsZSwK
LXlvdSBjYW4gc2F5IGBBdExlYXN0KDUpYCBvciBgQmV0d2VlbigyLCA0KWAuCi0KLUlmIHRoZSBi
dWlsdC1pbiBzZXQgb2YgY2FyZGluYWxpdGllcyBkb2Vzbid0IHN1aXQgeW91LCB5b3UgYXJlIGZy
ZWUgdG8KLWRlZmluZSB5b3VyIG93biBieSBpbXBsZW1lbnRpbmcgdGhlIGZvbGxvd2luZyBpbnRl
cmZhY2UgKGluIG5hbWVzcGFjZQotYHRlc3RpbmdgKToKLQotYGBgCi1jbGFzcyBDYXJkaW5hbGl0
eUludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5DYXJkaW5hbGl0eUludGVyZmFjZSgp
OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlzZnkg
dGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQo
aW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxf
Y291bnQgY2FsbHMgd2lsbCBzYXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgotICB2aXJ0dWFsIGJv
b2wgSXNTYXR1cmF0ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgPSAwOwotCi0g
IC8vIERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotfTsKLWBgYAotCi1Gb3IgZXhhbXBs
ZSwgdG8gc3BlY2lmeSB0aGF0IGEgY2FsbCBtdXN0IG9jY3VyIGV2ZW4gbnVtYmVyIG9mIHRpbWVz
LAoteW91IGNhbiB3cml0ZQotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6Q2FyZGluYWxpdHk7Ci11
c2luZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5SW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5nOjpN
YWtlQ2FyZGluYWxpdHk7Ci0KLWNsYXNzIEV2ZW5OdW1iZXJDYXJkaW5hbGl0eSA6IHB1YmxpYyBD
YXJkaW5hbGl0eUludGVyZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGJvb2wgSXNTYXRpc2Zp
ZWRCeUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiAoY2FsbF9j
b3VudCAlIDIpID09IDA7Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRCeUNhbGxD
b3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0g
IHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAg
ICpvcyA8PCAiY2FsbGVkIGV2ZW4gbnVtYmVyIG9mIHRpbWVzIjsKLSAgfQotfTsKLQotQ2FyZGlu
YWxpdHkgRXZlbk51bWJlcigpIHsKLSAgcmV0dXJuIE1ha2VDYXJkaW5hbGl0eShuZXcgRXZlbk51
bWJlckNhcmRpbmFsaXR5KTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKDMpKQot
ICAgICAgLlRpbWVzKEV2ZW5OdW1iZXIoKSk7Ci1gYGAKLQotIyMgV3JpdGluZyBOZXcgQWN0aW9u
cyBRdWlja2x5ICMjCi0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHdvcmsgZm9yIHlv
dSwgYW5kIHlvdSBmaW5kIGl0Ci1pbmNvbnZlbmllbnQgdG8gdXNlIGBJbnZva2UoKWAsIHlvdSBj
YW4gdXNlIGEgbWFjcm8gZnJvbSB0aGUgYEFDVElPTipgCi1mYW1pbHkgdG8gcXVpY2tseSBkZWZp
bmUgYSBuZXcgYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91ciBjb2RlIGFzCi1pZiBpdCdz
IGEgYnVpbHQtaW4gYWN0aW9uLgotCi1CeSB3cml0aW5nCi1gYGAKLUFDVElPTihuYW1lKSB7IHN0
YXRlbWVudHM7IH0KLWBgYAotaW4gYSBuYW1lc3BhY2Ugc2NvcGUgKGkuZS4gbm90IGluc2lkZSBh
IGNsYXNzIG9yIGZ1bmN0aW9uKSwgeW91IHdpbGwKLWRlZmluZSBhbiBhY3Rpb24gd2l0aCB0aGUg
Z2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZSBzdGF0ZW1lbnRzLgotVGhlIHZhbHVlIHJldHVy
bmVkIGJ5IGBzdGF0ZW1lbnRzYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZgot
dGhlIGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVtZW50cywgeW91IGNhbiByZWZlciB0byB0aGUg
Sy10aAotKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGBhcmdLYC4g
IEZvciBleGFtcGxlOgotYGBgCi1BQ1RJT04oSW5jcmVtZW50QXJnMSkgeyByZXR1cm4gKysoKmFy
ZzEpOyB9Ci1gYGAKLWFsbG93cyB5b3UgdG8gd3JpdGUKLWBgYAotLi4uIFdpbGxPbmNlKEluY3Jl
bWVudEFyZzEoKSk7Ci1gYGAKLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkg
dGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCi1hcmd1bWVudHMuICBSZXN0IGFzc3VyZWQg
dGhhdCB5b3VyIGNvZGUgaXMgdHlwZS1zYWZlIHRob3VnaDoKLXlvdSdsbCBnZXQgYSBjb21waWxl
ciBlcnJvciBpZiBgKmFyZzFgIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYCsrYAotb3BlcmF0b3IsIG9y
IGlmIHRoZSB0eXBlIG9mIGArKygqYXJnMSlgIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUgbW9j
awotZnVuY3Rpb24ncyByZXR1cm4gdHlwZS4KLQotQW5vdGhlciBleGFtcGxlOgotYGBgCi1BQ1RJ
T04oRm9vKSB7Ci0gICgqYXJnMikoNSk7Ci0gIEJsYWgoKTsKLSAgKmFyZzEgPSAwOwotICByZXR1
cm4gYXJnMDsKLX0KLWBgYAotZGVmaW5lcyBhbiBhY3Rpb24gYEZvbygpYCB0aGF0IGludm9rZXMg
YXJndW1lbnQgIzIgKGEgZnVuY3Rpb24gcG9pbnRlcikKLXdpdGggNSwgY2FsbHMgZnVuY3Rpb24g
YEJsYWgoKWAsIHNldHMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgYXJndW1lbnQKLSMxIHRvIDAs
IGFuZCByZXR1cm5zIGFyZ3VtZW50ICMwLgotCi1Gb3IgbW9yZSBjb252ZW5pZW5jZSBhbmQgZmxl
eGliaWxpdHksIHlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZwotcHJlLWRlZmluZWQgc3lt
Ym9scyBpbiB0aGUgYm9keSBvZiBgQUNUSU9OYDoKLQotfCBgYXJnS190eXBlYCB8IFRoZSB0eXBl
IG9mIHRoZSBLLXRoICgwLWJhc2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB8Ci18
Oi0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYGFyZ3NgICAgICAgfCBBbGwgYXJndW1lbnRzIG9mIHRo
ZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgICAgICAgICAgICAgfAotfCBgYXJnc190eXBl
YCB8IFRoZSB0eXBlIG9mIGFsbCBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXMgYSB0
dXBsZSAgICB8Ci18IGByZXR1cm5fdHlwZWAgfCBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgZnVuY3Rpb25fdHlwZWAgfCBU
aGUgdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAotCi1Gb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBhbiBgQUNUSU9OYCBhcyBhIHN0dWIgYWN0
aW9uIGZvciBtb2NrIGZ1bmN0aW9uOgotYGBgCi1pbnQgRG9Tb21ldGhpbmcoYm9vbCBmbGFnLCBp
bnQqIHB0cik7Ci1gYGAKLXdlIGhhdmU6Ci18ICoqUHJlLWRlZmluZWQgU3ltYm9sKiogfCAqKklz
IEJvdW5kIFRvKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LXwKLXwgYGFyZzBgICAgICAgICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgZmxhZ2AgfAotfCBg
YXJnMF90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUgYGJvb2xgIHwKLXwgYGFyZzFgICAgICAg
ICAgICAgICAgICB8IHRoZSB2YWx1ZSBvZiBgcHRyYCB8Ci18IGBhcmcxX3R5cGVgICAgICAgICAg
ICAgfCB0aGUgdHlwZSBgaW50KmAgfAotfCBgYXJnc2AgICAgICAgICAgICAgICAgIHwgdGhlIHR1
cGxlIGAoZmxhZywgcHRyKWAgfAotfCBgYXJnc190eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUg
YHN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQqPmAgfAotfCBgcmV0dXJuX3R5cGVgICAgICAgICAg
IHwgdGhlIHR5cGUgYGludGAgIHwKLXwgYGZ1bmN0aW9uX3R5cGVgICAgICAgICB8IHRoZSB0eXBl
IGBpbnQoYm9vbCwgaW50KilgIHwKLQotIyMgV3JpdGluZyBOZXcgUGFyYW1ldGVyaXplZCBBY3Rp
b25zIFF1aWNrbHkgIyMKLQotU29tZXRpbWVzIHlvdSdsbCB3YW50IHRvIHBhcmFtZXRlcml6ZSBh
biBhY3Rpb24geW91IGRlZmluZS4gIEZvciB0aGF0Ci13ZSBoYXZlIGFub3RoZXIgbWFjcm8KLWBg
YAotQUNUSU9OX1AobmFtZSwgcGFyYW0pIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLUZvciBleGFt
cGxlLAotYGBgCi1BQ1RJT05fUChBZGQsIG4pIHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci1gYGAKLXdp
bGwgYWxsb3cgeW91IHRvIHdyaXRlCi1gYGAKLS8vIFJldHVybnMgYXJndW1lbnQgIzAgKyA1Lgot
Li4uIFdpbGxPbmNlKEFkZCg1KSk7Ci1gYGAKLQotRm9yIGNvbnZlbmllbmNlLCB3ZSB1c2UgdGhl
IHRlcm0gX2FyZ3VtZW50c18gZm9yIHRoZSB2YWx1ZXMgdXNlZCB0bwotaW52b2tlIHRoZSBtb2Nr
IGZ1bmN0aW9uLCBhbmQgdGhlIHRlcm0gX3BhcmFtZXRlcnNfIGZvciB0aGUgdmFsdWVzCi11c2Vk
IHRvIGluc3RhbnRpYXRlIGFuIGFjdGlvbi4KLQotTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRv
IHByb3ZpZGUgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlciBlaXRoZXIuCi1TdXBwb3NlIHRoZSBw
YXJhbWV0ZXIgaXMgbmFtZWQgYHBhcmFtYCwgeW91IGNhbiBhbHNvIHVzZSB0aGUKLUdvb2dsZS1N
b2NrLWRlZmluZWQgc3ltYm9sIGBwYXJhbV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiB0
aGUKLXBhcmFtZXRlciBhcyBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZSwg
aW4gdGhlIGJvZHkgb2YKLWBBQ1RJT05fUChBZGQsIG4pYCBhYm92ZSwgeW91IGNhbiB3cml0ZSBg
bl90eXBlYCBmb3IgdGhlIHR5cGUgb2YgYG5gLgotCi1Hb29nbGUgTW9jayBhbHNvIHByb3ZpZGVz
IGBBQ1RJT05fUDJgLCBgQUNUSU9OX1AzYCwgYW5kIGV0YyB0byBzdXBwb3J0Ci1tdWx0aS1wYXJh
bWV0ZXIgYWN0aW9ucy4gIEZvciBleGFtcGxlLAotYGBgCi1BQ1RJT05fUDIoUmV0dXJuRGlzdGFu
Y2VUbywgeCwgeSkgewotICBkb3VibGUgZHggPSBhcmcwIC0geDsKLSAgZG91YmxlIGR5ID0gYXJn
MSAtIHk7Ci0gIHJldHVybiBzcXJ0KGR4KmR4ICsgZHkqZHkpOwotfQotYGBgCi1sZXRzIHlvdSB3
cml0ZQotYGBgCi0uLi4gV2lsbE9uY2UoUmV0dXJuRGlzdGFuY2VUbyg1LjAsIDI2LjUpKTsKLWBg
YAotCi1Zb3UgY2FuIHZpZXcgYEFDVElPTmAgYXMgYSBkZWdlbmVyYXRlZCBwYXJhbWV0ZXJpemVk
IGFjdGlvbiB3aGVyZSB0aGUKLW51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIDAuCi0KLVlvdSBjYW4g
YWxzbyBlYXNpbHkgZGVmaW5lIGFjdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUgbnVtYmVyIG9mIHBh
cmFtZXRlcnM6Ci1gYGAKLUFDVElPTl9QKFBsdXMsIGEpIHsgLi4uIH0KLUFDVElPTl9QMihQbHVz
LCBhLCBiKSB7IC4uLiB9Ci1gYGAKLQotIyMgUmVzdHJpY3RpbmcgdGhlIFR5cGUgb2YgYW4gQXJn
dW1lbnQgb3IgUGFyYW1ldGVyIGluIGFuIEFDVElPTiAjIwotCi1Gb3IgbWF4aW11bSBicmV2aXR5
IGFuZCByZXVzYWJpbGl0eSwgdGhlIGBBQ1RJT04qYCBtYWNyb3MgZG9uJ3QgYXNrCi15b3UgdG8g
cHJvdmlkZSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUg
YWN0aW9uCi1wYXJhbWV0ZXJzLiAgSW5zdGVhZCwgd2UgbGV0IHRoZSBjb21waWxlciBpbmZlciB0
aGUgdHlwZXMgZm9yIHVzLgotCi1Tb21ldGltZXMsIGhvd2V2ZXIsIHdlIG1heSB3YW50IHRvIGJl
IG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIHR5cGVzLgotVGhlcmUgYXJlIHNldmVyYWwgdHJpY2tz
IHRvIGRvIHRoYXQuICBGb3IgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAvLyBNYWtl
cyBzdXJlIGFyZzAgY2FuIGJlIGNvbnZlcnRlZCB0byBpbnQuCi0gIGludCBuID0gYXJnMDsKLSAg
Li4uIHVzZSBuIGluc3RlYWQgb2YgYXJnMCBoZXJlIC4uLgotfQotCi1BQ1RJT05fUChCYXIsIHBh
cmFtKSB7Ci0gIC8vIE1ha2VzIHN1cmUgdGhlIHR5cGUgb2YgYXJnMSBpcyBjb25zdCBjaGFyKi4K
LSAgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgY2hhciosIGFyZzFfdHlwZT4o
KTsKLQotICAvLyBNYWtlcyBzdXJlIHBhcmFtIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYm9vbC4KLSAg
Ym9vbCBmbGFnID0gcGFyYW07Ci19Ci1gYGAKLXdoZXJlIGBTdGF0aWNBc3NlcnRUeXBlRXFgIGlz
IGEgY29tcGlsZS10aW1lIGFzc2VydGlvbiBpbiBHb29nbGUgVGVzdAotdGhhdCB2ZXJpZmllcyB0
d28gdHlwZXMgYXJlIHRoZSBzYW1lLgotCi0jIyBXcml0aW5nIE5ldyBBY3Rpb24gVGVtcGxhdGVz
IFF1aWNrbHkgIyMKLQotU29tZXRpbWVzIHlvdSB3YW50IHRvIGdpdmUgYW4gYWN0aW9uIGV4cGxp
Y2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMgdGhhdAotY2Fubm90IGJlIGluZmVycmVkIGZyb20gaXRz
IHZhbHVlIHBhcmFtZXRlcnMuICBgQUNUSU9OX1RFTVBMQVRFKClgCi1zdXBwb3J0cyB0aGF0IGFu
ZCBjYW4gYmUgdmlld2VkIGFzIGFuIGV4dGVuc2lvbiB0byBgQUNUSU9OKClgIGFuZAotYEFDVElP
Tl9QKigpYC4KLQotVGhlIHN5bnRheDoKLWBgYAotQUNUSU9OX1RFTVBMQVRFKEFjdGlvbk5hbWUs
Ci0gICAgICAgICAgICAgICAgSEFTX21fVEVNUExBVEVfUEFSQU1TKGtpbmQxLCBuYW1lMSwgLi4u
LCBraW5kX20sIG5hbWVfbSksCi0gICAgICAgICAgICAgICAgQU5EX25fVkFMVUVfUEFSQU1TKHAx
LCAuLi4sIHBfbikpIHsgc3RhdGVtZW50czsgfQotYGBgCi0KLWRlZmluZXMgYW4gYWN0aW9uIHRl
bXBsYXRlIHRoYXQgdGFrZXMgX21fIGV4cGxpY2l0IHRlbXBsYXRlIHBhcmFtZXRlcnMKLWFuZCBf
bl8gdmFsdWUgcGFyYW1ldGVycywgd2hlcmUgX21fIGlzIGJldHdlZW4gMSBhbmQgMTAsIGFuZCBf
bl8gaXMKLWJldHdlZW4gMCBhbmQgMTAuICBgbmFtZV9pYCBpcyB0aGUgbmFtZSBvZiB0aGUgaS10
aCB0ZW1wbGF0ZQotcGFyYW1ldGVyLCBhbmQgYGtpbmRfaWAgc3BlY2lmaWVzIHdoZXRoZXIgaXQn
cyBhIGB0eXBlbmFtZWAsIGFuCi1pbnRlZ3JhbCBjb25zdGFudCwgb3IgYSB0ZW1wbGF0ZS4gIGBw
X2lgIGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoIHZhbHVlCi1wYXJhbWV0ZXIuCi0KLUV4YW1wbGU6
Ci1gYGAKLS8vIER1cGxpY2F0ZUFyZzxrLCBUPihvdXRwdXQpIGNvbnZlcnRzIHRoZSBrLXRoIGFy
Z3VtZW50IG9mIHRoZSBtb2NrCi0vLyBmdW5jdGlvbiB0byB0eXBlIFQgYW5kIGNvcGllcyBpdCB0
byAqb3V0cHV0LgotQUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywKLSAgICAgICAgICAgICAg
ICAvLyBOb3RlIHRoZSBjb21tYSBiZXR3ZWVuIGludCBhbmQgazoKLSAgICAgICAgICAgICAgICBI
QVNfMl9URU1QTEFURV9QQVJBTVMoaW50LCBrLCB0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAg
ICAgQU5EXzFfVkFMVUVfUEFSQU1TKG91dHB1dCkpIHsKLSAgKm91dHB1dCA9IFQoc3RkOjp0cjE6
OmdldDxrPihhcmdzKSk7Ci19Ci1gYGAKLQotVG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIGFj
dGlvbiB0ZW1wbGF0ZSwgd3JpdGU6Ci1gYGAKLSAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20+KHYx
LCAuLi4sIHZfbikKLWBgYAotd2hlcmUgdGhlIGB0YHMgYXJlIHRoZSB0ZW1wbGF0ZSBhcmd1bWVu
dHMgYW5kIHRoZQotYHZgcyBhcmUgdGhlIHZhbHVlIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBhcmd1
bWVudAotdHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIEZvciBleGFtcGxlOgot
YGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgaW50IG47Ci0gIEVYUEVDVF9DQUxMKG1v
Y2ssIEZvbyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShEdXBsaWNhdGVBcmc8MSwgdW5zaWduZWQg
Y2hhcj4oJm4pKTsKLWBgYAotCi1JZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhl
IHZhbHVlIGFyZ3VtZW50IHR5cGVzLCB5b3UgY2FuCi1wcm92aWRlIGFkZGl0aW9uYWwgdGVtcGxh
dGUgYXJndW1lbnRzOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tLCB1MSwgLi4uLCB1
X2s+KHYxLCAuLi4sIHZfbikKLWBgYAotd2hlcmUgYHVfaWAgaXMgdGhlIGRlc2lyZWQgdHlwZSBv
ZiBgdl9pYC4KLQotYEFDVElPTl9URU1QTEFURWAgYW5kIGBBQ1RJT05gL2BBQ1RJT05fUCpgIGNh
biBiZSBvdmVybG9hZGVkIG9uIHRoZQotbnVtYmVyIG9mIHZhbHVlIHBhcmFtZXRlcnMsIGJ1dCBu
b3Qgb24gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZQotcGFyYW1ldGVycy4gIFdpdGhvdXQgdGhlIHJl
c3RyaWN0aW9uLCB0aGUgbWVhbmluZyBvZiB0aGUgZm9sbG93aW5nIGlzCi11bmNsZWFyOgotCi1g
YGAKLSAgT3ZlcmxvYWRlZEFjdGlvbjxpbnQsIGJvb2w+KHgpOwotYGBgCi0KLUFyZSB3ZSB1c2lu
ZyBhIHNpbmdsZS10ZW1wbGF0ZS1wYXJhbWV0ZXIgYWN0aW9uIHdoZXJlIGBib29sYCByZWZlcnMg
dG8KLXRoZSB0eXBlIG9mIGB4YCwgb3IgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3
aGVyZSB0aGUgY29tcGlsZXIKLWlzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIGB4YD8KLQot
IyMgVXNpbmcgdGhlIEFDVElPTiBPYmplY3QncyBUeXBlICMjCi0KLUlmIHlvdSBhcmUgd3JpdGlu
ZyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBgQUNUSU9OYCBvYmplY3QsIHlvdSdsbAotbmVl
ZCB0byBrbm93IGl0cyB0eXBlLiAgVGhlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbWFjcm8gdXNlZCB0
byBkZWZpbmUKLXRoZSBhY3Rpb24gYW5kIHRoZSBwYXJhbWV0ZXIgdHlwZXMuICBUaGUgcnVsZSBp
cyByZWxhdGl2ZWx5IHNpbXBsZToKLXwgKipHaXZlbiBEZWZpbml0aW9uKiogfCAqKkV4cHJlc3Np
b24qKiB8ICoqSGFzIFR5cGUqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQUNUSU9OKEZvbylgICAgICAgICB8IGBGb28oKWAg
ICAgICAgIHwgYEZvb0FjdGlvbmAgIHwKLXwgYEFDVElPTl9URU1QTEFURShGb28sIEhBU19tX1RF
TVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMF9WQUxVRV9QQVJBTVMoKSlgIHwJYEZvbzx0MSwgLi4u
LCB0X20+KClgIHwgYEZvb0FjdGlvbjx0MSwgLi4uLCB0X20+YCB8Ci18IGBBQ1RJT05fUChCYXIs
IHBhcmFtKWAgfCBgQmFyKGludF92YWx1ZSlgIHwgYEJhckFjdGlvblA8aW50PmAgfAotfCBgQUNU
SU9OX1RFTVBMQVRFKEJhciwgSEFTX21fVEVNUExBVEVfUEFSQU1TKC4uLiksIEFORF8xX1ZBTFVF
X1BBUkFNUyhwMSkpYCB8IGBCYXI8dDEsIC4uLiwgdF9tPihpbnRfdmFsdWUpYCB8IGBGb29BY3Rp
b25QPHQxLCAuLi4sIHRfbSwgaW50PmAgfAotfCBgQUNUSU9OX1AyKEJheiwgcDEsIHAyKWAgfCBg
QmF6KGJvb2xfdmFsdWUsIGludF92YWx1ZSlgIHwgYEJhekFjdGlvblAyPGJvb2wsIGludD5gIHwK
LXwgYEFDVElPTl9URU1QTEFURShCYXosIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRf
Ml9WQUxVRV9QQVJBTVMocDEsIHAyKSlgIHwgYEJhejx0MSwgLi4uLCB0X20+KGJvb2xfdmFsdWUs
IGludF92YWx1ZSlgIHwgYEZvb0FjdGlvblAyPHQxLCAuLi4sIHRfbSwgYm9vbCwgaW50PmAgfAot
fCAuLi4gICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICAgIHwgLi4uICAgICAgICAgIHwK
LQotTm90ZSB0aGF0IHdlIGhhdmUgdG8gcGljayBkaWZmZXJlbnQgc3VmZml4ZXMgKGBBY3Rpb25g
LCBgQWN0aW9uUGAsCi1gQWN0aW9uUDJgLCBhbmQgZXRjKSBmb3IgYWN0aW9ucyB3aXRoIGRpZmZl
cmVudCBudW1iZXJzIG9mIHZhbHVlCi1wYXJhbWV0ZXJzLCBvciB0aGUgYWN0aW9uIGRlZmluaXRp
b25zIGNhbm5vdCBiZSBvdmVybG9hZGVkIG9uIHRoZQotbnVtYmVyIG9mIHRoZW0uCi0KLSMjIFdy
aXRpbmcgTmV3IE1vbm9tb3JwaGljIEFjdGlvbnMgIyMKLQotV2hpbGUgdGhlIGBBQ1RJT04qYCBt
YWNyb3MgYXJlIHZlcnkgY29udmVuaWVudCwgc29tZXRpbWVzIHRoZXkgYXJlCi1pbmFwcHJvcHJp
YXRlLiAgRm9yIGV4YW1wbGUsIGRlc3BpdGUgdGhlIHRyaWNrcyBzaG93biBpbiB0aGUgcHJldmlv
dXMKLXJlY2lwZXMsIHRoZXkgZG9uJ3QgbGV0IHlvdSBkaXJlY3RseSBzcGVjaWZ5IHRoZSB0eXBl
cyBvZiB0aGUgbW9jawotZnVuY3Rpb24gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uIHBhcmFtZXRl
cnMsIHdoaWNoIGluIGdlbmVyYWwgbGVhZHMKLXRvIHVub3B0aW1pemVkIGNvbXBpbGVyIGVycm9y
IG1lc3NhZ2VzIHRoYXQgY2FuIGJhZmZsZSB1bmZhbWlsaWFyCi11c2Vycy4gIFRoZXkgYWxzbyBk
b24ndCBhbGxvdyBvdmVybG9hZGluZyBhY3Rpb25zIGJhc2VkIG9uIHBhcmFtZXRlcgotdHlwZXMg
d2l0aG91dCBqdW1waW5nIHRocm91Z2ggc29tZSBob29wcy4KLQotQW4gYWx0ZXJuYXRpdmUgdG8g
dGhlIGBBQ1RJT04qYCBtYWNyb3MgaXMgdG8gaW1wbGVtZW50Ci1gOjp0ZXN0aW5nOjpBY3Rpb25J
bnRlcmZhY2U8Rj5gLCB3aGVyZSBgRmAgaXMgdGhlIHR5cGUgb2YgdGhlIG1vY2sKLWZ1bmN0aW9u
IGluIHdoaWNoIHRoZSBhY3Rpb24gd2lsbCBiZSB1c2VkLiBGb3IgZXhhbXBsZToKLQotYGBgCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRj5jbGFzcyBBY3Rpb25JbnRlcmZhY2UgewotIHB1YmxpYzoKLSAg
dmlydHVhbCB+QWN0aW9uSW50ZXJmYWNlKCk7Ci0KLSAgLy8gUGVyZm9ybXMgdGhlIGFjdGlvbi4g
IFJlc3VsdCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgZnVuY3Rpb24gdHlwZQotICAvLyBGLCBhbmQg
QXJndW1lbnRUdXBsZSBpcyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIG9mIEYuCi0gIC8vCi0gIC8v
IEZvciBleGFtcGxlLCBpZiBGIGlzIGludChib29sLCBjb25zdCBzdHJpbmcmKSwgdGhlbiBSZXN1
bHQgd291bGQKLSAgLy8gYmUgaW50LCBhbmQgQXJndW1lbnRUdXBsZSB3b3VsZCBiZSB0cjE6OnR1
cGxlPGJvb2wsIGNvbnN0IHN0cmluZyY+LgotICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0
IEFyZ3VtZW50VHVwbGUmIGFyZ3MpID0gMDsKLX07Ci0KLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVz
aW5nIDo6dGVzdGluZzo6QWN0aW9uOwotdXNpbmcgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7
Ci11c2luZyA6OnRlc3Rpbmc6Ok1ha2VBY3Rpb247Ci0KLXR5cGVkZWYgaW50IEluY3JlbWVudE1l
dGhvZChpbnQqKTsKLQotY2xhc3MgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24gOiBwdWJsaWMgQWN0
aW9uSW50ZXJmYWNlPEluY3JlbWVudE1ldGhvZD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBpbnQg
UGVyZm9ybShjb25zdCB0cjE6OnR1cGxlPGludCo+JiBhcmdzKSB7Ci0gICAgaW50KiBwID0gdHIx
OjpnZXQ8MD4oYXJncyk7ICAvLyBHcmFicyB0aGUgZmlyc3QgYXJndW1lbnQuCi0gICAgcmV0dXJu
ICpwKys7Ci0gIH0KLX07Ci0KLUFjdGlvbjxJbmNyZW1lbnRNZXRob2Q+IEluY3JlbWVudEFyZ3Vt
ZW50KCkgewotICByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW5jcmVtZW50QXJndW1lbnRBY3Rpb24p
OwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXooXykpCi0gICAgICAuV2lsbE9uY2Uo
SW5jcmVtZW50QXJndW1lbnQoKSk7Ci0KLSAgaW50IG4gPSA1OwotICBmb28uQmF6KCZuKTsgIC8v
IFNob3VsZCByZXR1cm4gNSBhbmQgY2hhbmdlIG4gdG8gNi4KLWBgYAotCi0jIyBXcml0aW5nIE5l
dyBQb2x5bW9ycGhpYyBBY3Rpb25zICMjCi0KLVRoZSBwcmV2aW91cyByZWNpcGUgc2hvd2VkIHlv
dSBob3cgdG8gZGVmaW5lIHlvdXIgb3duIGFjdGlvbi4gVGhpcyBpcwotYWxsIGdvb2QsIGV4Y2Vw
dCB0aGF0IHlvdSBuZWVkIHRvIGtub3cgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGluCi13aGlj
aCB0aGUgYWN0aW9uIHdpbGwgYmUgdXNlZC4gU29tZXRpbWVzIHRoYXQgY2FuIGJlIGEgcHJvYmxl
bS4gRm9yCi1leGFtcGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGFjdGlvbiBpbiBmdW5jdGlv
bnMgd2l0aCBfZGlmZmVyZW50XwotdHlwZXMgKGUuZy4gbGlrZSBgUmV0dXJuKClgIGFuZCBgU2V0
QXJnUG9pbnRlZSgpYCkuCi0KLUlmIGFuIGFjdGlvbiBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIHR5
cGVzIG9mIG1vY2sgZnVuY3Rpb25zLCB3ZSBzYXkKLWl0J3MgX3BvbHltb3JwaGljXy4gVGhlIGBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKWAgZnVuY3Rpb24gdGVtcGxhdGUKLW1ha2VzIGl0IGVhc3kg
dG8gZGVmaW5lIHN1Y2ggYW4gYWN0aW9uOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxJbXBsPiBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oY29uc3QgSW1wbCYgaW1wbCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCi1gYGAKLQotQXMgYW4gZXhhbXBsZSwgbGV0J3MgZGVmaW5lIGFuIGFjdGlvbiB0aGF0IHJl
dHVybnMgdGhlIHNlY29uZCBhcmd1bWVudAotaW4gdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVu
dCBsaXN0LiBUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWZpbmUgYW4KLWltcGxlbWVudGF0aW9uIGNs
YXNzOgotCi1gYGAKLWNsYXNzIFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uIHsKLSBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0g
IFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0IHsKLSAgICAv
LyBUbyBnZXQgdGhlIGktdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB1c2UgdHIxOjpnZXQ8aT4oYXJn
cykuCi0gICAgcmV0dXJuIHRyMTo6Z2V0PDE+KGFyZ3MpOwotICB9Ci19OwotYGBgCi0KLVRoaXMg
aW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBfbm90XyBuZWVkIHRvIGluaGVyaXQgZnJvbSBhbnkK
LXBhcnRpY3VsYXIgY2xhc3MuIFdoYXQgbWF0dGVycyBpcyB0aGF0IGl0IG11c3QgaGF2ZSBhIGBQ
ZXJmb3JtKClgCi1tZXRob2QgdGVtcGxhdGUuIFRoaXMgbWV0aG9kIHRlbXBsYXRlIHRha2VzIHRo
ZSBtb2NrIGZ1bmN0aW9uJ3MKLWFyZ3VtZW50cyBhcyBhIHR1cGxlIGluIGEgKipzaW5nbGUqKiBh
cmd1bWVudCwgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZgotdGhlIGFjdGlvbi4gSXQgY2FuIGJl
IGVpdGhlciBgY29uc3RgIG9yIG5vdCwgYnV0IG11c3QgYmUgaW52b2thYmxlCi13aXRoIGV4YWN0
bHkgb25lIHRlbXBsYXRlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgcmVzdWx0IHR5cGUuIEluIG90
aGVyCi13b3JkcywgeW91IG11c3QgYmUgYWJsZSB0byBjYWxsIGBQZXJmb3JtPFI+KGFyZ3MpYCB3
aGVyZSBgUmAgaXMgdGhlCi1tb2NrIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgYW5kIGBhcmdzYCBp
cyBpdHMgYXJndW1lbnRzIGluIGEgdHVwbGUuCi0KLU5leHQsIHdlIHVzZSBgTWFrZVBvbHltb3Jw
aGljQWN0aW9uKClgIHRvIHR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlCi1pbXBsZW1lbnRhdGlvbiBj
bGFzcyBpbnRvIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gd2UgbmVlZC4gSXQgd2lsbCBiZQotY29u
dmVuaWVudCB0byBoYXZlIGEgd3JhcHBlciBmb3IgdGhpczoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ok1ha2VQb2x5bW9ycGhpY0FjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6UG9seW1vcnBoaWNB
Y3Rpb247Ci0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50QWN0aW9uPiBS
ZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihS
ZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLWBgYAotCi1Ob3csIHlvdSBjYW4gdXNl
IHRoaXMgcG9seW1vcnBoaWMgYWN0aW9uIHRoZSBzYW1lIHdheSB5b3UgdXNlIHRoZQotYnVpbHQt
aW4gb25lczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0KLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihEb1RoaXMsIGludChib29sIGZs
YWcsIGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMyhEb1RoYXQsIHN0cmluZyhpbnQgeCwgY29uc3Qg
Y2hhciogc3RyMSwgY29uc3QgY2hhciogc3RyMikpOwotfTsKLS4uLgotCi0gIE1vY2tGb28gZm9v
OwotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm5TZWNvbmRBcmd1bWVudCgpKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoXywgXywgXykp
Ci0gICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1lbnQoKSk7Ci0gIC4uLgotICBmb28u
RG9UaGlzKHRydWUsIDUpOyAgICAgICAgIC8vIFdpbGwgcmV0dXJuIDUuCi0gIGZvby5Eb1RoYXQo
MSwgIkhpIiwgIkJ5ZSIpOyAgLy8gV2lsbCByZXR1cm4gIkhpIi4KLWBgYAotCi0jIyBUZWFjaGlu
ZyBHb29nbGUgTW9jayBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIyMKLQotV2hlbiBhbiB1bmlu
dGVyZXN0aW5nIG9yIHVuZXhwZWN0ZWQgY2FsbCBvY2N1cnMsIEdvb2dsZSBNb2NrIHByaW50cyB0
aGUKLWFyZ3VtZW50IHZhbHVlcyBhbmQgdGhlIHN0YWNrIHRyYWNlIHRvIGhlbHAgeW91IGRlYnVn
LiAgQXNzZXJ0aW9uCi1tYWNyb3MgbGlrZSBgRVhQRUNUX1RIQVRgIGFuZCBgRVhQRUNUX0VRYCBh
bHNvIHByaW50IHRoZSB2YWx1ZXMgaW4KLXF1ZXN0aW9uIHdoZW4gdGhlIGFzc2VydGlvbiBmYWls
cy4gIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBkbyB0aGlzIHVzaW5nCi1Hb29nbGUgVGVz
dCdzIHVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgotCi1UaGlzIHByaW50ZXIga25vd3Mg
aG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCi1jb250
YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZv
ciBvdGhlcgotdHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQg
aG9wZXMgdGhhdCB5b3UgdGhlCi11c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgotW0dvb2dsZSBUZXN0
J3MgYWR2YW5jZWQgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dp
a2kvVjFfNl9BZHZhbmNlZEd1aWRlI1RlYWNoaW5nX0dvb2dsZV9UZXN0X0hvd190b19QcmludF9Z
b3VyX1ZhbHVlcykKLWV4cGxhaW5zIGhvdyB0byBleHRlbmQgdGhlIHByaW50ZXIgdG8gZG8gYSBi
ZXR0ZXIgam9iIGF0Ci1wcmludGluZyB5b3VyIHBhcnRpY3VsYXIgdHlwZSB0aGFuIHRvIGR1bXAg
dGhlIGJ5dGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2RvY3MvdjFfNi9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82
L0RvY3VtZW50YXRpb24ubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYzkxNTZj
MmExMi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Eb2N1bWVudGF0
aW9uLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyBwYWdlIGxpc3RzIGFs
bCBkb2N1bWVudGF0aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBNb2NrICoqMS42KioKLS0gKipp
ZiB5b3UgdXNlIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBHb29nbGUgTW9jaywgcGxlYXNlIHJlYWQg
dGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCi0K
LSAgKiBbRm9yRHVtbWllc10oVjFfNl9Gb3JEdW1taWVzLm1kKSAtLSBzdGFydCBoZXJlIGlmIHlv
dSBhcmUgbmV3IHRvIEdvb2dsZSBNb2NrLgotICAqIFtDaGVhdFNoZWV0XShWMV82X0NoZWF0U2hl
ZXQubWQpIC0tIGEgcXVpY2sgcmVmZXJlbmNlLgotICAqIFtDb29rQm9va10oVjFfNl9Db29rQm9v
ay5tZCkgLS0gcmVjaXBlcyBmb3IgZG9pbmcgdmFyaW91cyB0YXNrcyB1c2luZyBHb29nbGUgTW9j
ay4KLSAgKiBbRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zXShWMV82X0ZyZXF1ZW50bHlBc2tlZFF1
ZXN0aW9ucy5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rpb24gb24gdGhl
IG1haWxpbmcgbGlzdC4KLQotVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBNb2NrLCByZWFk
OgotCi0gICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlzIF9iZWZvcmVfIHdy
aXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KLSAgKiBbUHVtcCBNYW51YWxdKGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kvVjFfNl9QdW1wTWFudWFsKSAtLSBob3cgd2UgZ2Vu
ZXJhdGUgc29tZSBvZiBHb29nbGUgTW9jaydzIHNvdXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzYvRm9yRHVtbWll
cy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNi9Gb3JEdW1taWVzLm1kCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxOWVlNjNhYjBjMjguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9kb2NzL3YxXzYvRm9yRHVtbWllcy5tZAorKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCww
IEBACi0KLQotKCoqTm90ZToqKiBJZiB5b3UgZ2V0IGNvbXBpbGVyIGVycm9ycyB0aGF0IHlvdSBk
b24ndCB1bmRlcnN0YW5kLCBiZSBzdXJlIHRvIGNvbnN1bHQgW0dvb2dsZSBNb2NrIERvY3Rvcl0o
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0ZyZXF1ZW50bHlB
c2tlZFF1ZXN0aW9ucyNIb3dfYW1fSV9zdXBwb3NlZF90b19tYWtlX3NlbnNlX29mX3RoZXNlX2hv
cnJpYmxlX3RlbXBsYXRlX2Vycm9yKS4pCi0KLSMgV2hhdCBJcyBHb29nbGUgQysrIE1vY2tpbmcg
RnJhbWV3b3JrPyAjCi1XaGVuIHlvdSB3cml0ZSBhIHByb3RvdHlwZSBvciB0ZXN0LCBvZnRlbiBp
dCdzIG5vdCBmZWFzaWJsZSBvciB3aXNlIHRvIHJlbHkgb24gcmVhbCBvYmplY3RzIGVudGlyZWx5
LiBBICoqbW9jayBvYmplY3QqKiBpbXBsZW1lbnRzIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhIHJl
YWwgb2JqZWN0IChzbyBpdCBjYW4gYmUgdXNlZCBhcyBvbmUpLCBidXQgbGV0cyB5b3Ugc3BlY2lm
eSBhdCBydW4gdGltZSBob3cgaXQgd2lsbCBiZSB1c2VkIGFuZCB3aGF0IGl0IHNob3VsZCBkbyAo
d2hpY2ggbWV0aG9kcyB3aWxsIGJlIGNhbGxlZD8gaW4gd2hpY2ggb3JkZXI/IGhvdyBtYW55IHRp
bWVzPyB3aXRoIHdoYXQgYXJndW1lbnRzPyB3aGF0IHdpbGwgdGhleSByZXR1cm4/IGV0YykuCi0K
LSoqTm90ZToqKiBJdCBpcyBlYXN5IHRvIGNvbmZ1c2UgdGhlIHRlcm0gX2Zha2Ugb2JqZWN0c18g
d2l0aCBtb2NrIG9iamVjdHMuIEZha2VzIGFuZCBtb2NrcyBhY3R1YWxseSBtZWFuIHZlcnkgZGlm
ZmVyZW50IHRoaW5ncyBpbiB0aGUgVGVzdC1Ecml2ZW4gRGV2ZWxvcG1lbnQgKFRERCkgY29tbXVu
aXR5OgotCi0gICogKipGYWtlKiogb2JqZWN0cyBoYXZlIHdvcmtpbmcgaW1wbGVtZW50YXRpb25z
LCBidXQgdXN1YWxseSB0YWtlIHNvbWUgc2hvcnRjdXQgKHBlcmhhcHMgdG8gbWFrZSB0aGUgb3Bl
cmF0aW9ucyBsZXNzIGV4cGVuc2l2ZSksIHdoaWNoIG1ha2VzIHRoZW0gbm90IHN1aXRhYmxlIGZv
ciBwcm9kdWN0aW9uLiBBbiBpbi1tZW1vcnkgZmlsZSBzeXN0ZW0gd291bGQgYmUgYW4gZXhhbXBs
ZSBvZiBhIGZha2UuCi0gICogKipNb2NrcyoqIGFyZSBvYmplY3RzIHByZS1wcm9ncmFtbWVkIHdp
dGggX2V4cGVjdGF0aW9uc18sIHdoaWNoIGZvcm0gYSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBjYWxs
cyB0aGV5IGFyZSBleHBlY3RlZCB0byByZWNlaXZlLgotCi1JZiBhbGwgdGhpcyBzZWVtcyB0b28g
YWJzdHJhY3QgZm9yIHlvdSwgZG9uJ3Qgd29ycnkgLSB0aGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcg
dG8gcmVtZW1iZXIgaXMgdGhhdCBhIG1vY2sgYWxsb3dzIHlvdSB0byBjaGVjayB0aGUgX2ludGVy
YWN0aW9uXyBiZXR3ZWVuIGl0c2VsZiBhbmQgY29kZSB0aGF0IHVzZXMgaXQuIFRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gZmFrZXMgYW5kIG1vY2tzIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlciBvbmNl
IHlvdSBzdGFydCB0byB1c2UgbW9ja3MuCi0KLSoqR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29y
ayoqIChvciAqKkdvb2dsZSBNb2NrKiogZm9yIHNob3J0KSBpcyBhIGxpYnJhcnkgKHNvbWV0aW1l
cyB3ZSBhbHNvIGNhbGwgaXQgYSAiZnJhbWV3b3JrIiB0byBtYWtlIGl0IHNvdW5kIGNvb2wpIGZv
ciBjcmVhdGluZyBtb2NrIGNsYXNzZXMgYW5kIHVzaW5nIHRoZW0uIEl0IGRvZXMgdG8gQysrIHdo
YXQgW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFzeU1vY2tdKGh0dHA6Ly93
d3cuZWFzeW1vY2sub3JnLykgZG8gdG8gSmF2YS4KLQotVXNpbmcgR29vZ2xlIE1vY2sgaW52b2x2
ZXMgdGhyZWUgYmFzaWMgc3RlcHM6Ci0KLSAgMS4gVXNlIHNvbWUgc2ltcGxlIG1hY3JvcyB0byBk
ZXNjcmliZSB0aGUgaW50ZXJmYWNlIHlvdSB3YW50IHRvIG1vY2ssIGFuZCB0aGV5IHdpbGwgZXhw
YW5kIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIG1vY2sgY2xhc3M7Ci0gIDEuIENyZWF0
ZSBzb21lIG1vY2sgb2JqZWN0cyBhbmQgc3BlY2lmeSBpdHMgZXhwZWN0YXRpb25zIGFuZCBiZWhh
dmlvciB1c2luZyBhbiBpbnR1aXRpdmUgc3ludGF4OwotICAxLiBFeGVyY2lzZSBjb2RlIHRoYXQg
dXNlcyB0aGUgbW9jayBvYmplY3RzLiBHb29nbGUgTW9jayB3aWxsIGNhdGNoIGFueSB2aW9sYXRp
b24gb2YgdGhlIGV4cGVjdGF0aW9ucyBhcyBzb29uIGFzIGl0IGFyaXNlcy4KLQotIyBXaHkgR29v
Z2xlIE1vY2s/ICMKLVdoaWxlIG1vY2sgb2JqZWN0cyBoZWxwIHlvdSByZW1vdmUgdW5uZWNlc3Nh
cnkgZGVwZW5kZW5jaWVzIGluIHRlc3RzIGFuZCBtYWtlIHRoZW0gZmFzdCBhbmQgcmVsaWFibGUs
IHVzaW5nIG1vY2tzIG1hbnVhbGx5IGluIEMrKyBpcyBfaGFyZF86Ci0KLSAgKiBTb21lb25lIGhh
cyB0byBpbXBsZW1lbnQgdGhlIG1vY2tzLiBUaGUgam9iIGlzIHVzdWFsbHkgdGVkaW91cyBhbmQg
ZXJyb3ItcHJvbmUuIE5vIHdvbmRlciBwZW9wbGUgZ28gZ3JlYXQgZGlzdGFuY2UgdG8gYXZvaWQg
aXQuCi0gICogVGhlIHF1YWxpdHkgb2YgdGhvc2UgbWFudWFsbHkgd3JpdHRlbiBtb2NrcyBpcyBh
IGJpdCwgdWgsIHVucHJlZGljdGFibGUuIFlvdSBtYXkgc2VlIHNvbWUgcmVhbGx5IHBvbGlzaGVk
IG9uZXMsIGJ1dCB5b3UgbWF5IGFsc28gc2VlIHNvbWUgdGhhdCB3ZXJlIGhhY2tlZCB1cCBpbiBh
IGh1cnJ5IGFuZCBoYXZlIGFsbCBzb3J0cyBvZiBhZCBob2MgcmVzdHJpY3Rpb25zLgotICAqIFRo
ZSBrbm93bGVkZ2UgeW91IGdhaW5lZCBmcm9tIHVzaW5nIG9uZSBtb2NrIGRvZXNuJ3QgdHJhbnNm
ZXIgdG8gdGhlIG5leHQuCi0KLUluIGNvbnRyYXN0LCBKYXZhIGFuZCBQeXRob24gcHJvZ3JhbW1l
cnMgaGF2ZSBzb21lIGZpbmUgbW9jayBmcmFtZXdvcmtzLCB3aGljaCBhdXRvbWF0ZSB0aGUgY3Jl
YXRpb24gb2YgbW9ja3MuIEFzIGEgcmVzdWx0LCBtb2NraW5nIGlzIGEgcHJvdmVuIGVmZmVjdGl2
ZSB0ZWNobmlxdWUgYW5kIHdpZGVseSBhZG9wdGVkIHByYWN0aWNlIGluIHRob3NlIGNvbW11bml0
aWVzLiBIYXZpbmcgdGhlIHJpZ2h0IHRvb2wgYWJzb2x1dGVseSBtYWtlcyB0aGUgZGlmZmVyZW5j
ZS4KLQotR29vZ2xlIE1vY2sgd2FzIGJ1aWx0IHRvIGhlbHAgQysrIHByb2dyYW1tZXJzLiBJdCB3
YXMgaW5zcGlyZWQgYnkgW2pNb2NrXShodHRwOi8vd3d3Lmptb2NrLm9yZy8pIGFuZCBbRWFzeU1v
Y2tdKGh0dHA6Ly93d3cuZWFzeW1vY2sub3JnLyksIGJ1dCBkZXNpZ25lZCB3aXRoIEMrKydzIHNw
ZWNpZmljcyBpbiBtaW5kLiBJdCBpcyB5b3VyIGZyaWVuZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2lu
ZyBwcm9ibGVtcyBpcyBib3RoZXJpbmcgeW91OgotCi0gICogWW91IGFyZSBzdHVjayB3aXRoIGEg
c3ViLW9wdGltYWwgZGVzaWduIGFuZCB3aXNoIHlvdSBoYWQgZG9uZSBtb3JlIHByb3RvdHlwaW5n
IGJlZm9yZSBpdCB3YXMgdG9vIGxhdGUsIGJ1dCBwcm90b3R5cGluZyBpbiBDKysgaXMgYnkgbm8g
bWVhbnMgInJhcGlkIi4KLSAgKiBZb3VyIHRlc3RzIGFyZSBzbG93IGFzIHRoZXkgZGVwZW5kIG9u
IHRvbyBtYW55IGxpYnJhcmllcyBvciB1c2UgZXhwZW5zaXZlIHJlc291cmNlcyAoZS5nLiBhIGRh
dGFiYXNlKS4KLSAgKiBZb3VyIHRlc3RzIGFyZSBicml0dGxlIGFzIHNvbWUgcmVzb3VyY2VzIHRo
ZXkgdXNlIGFyZSB1bnJlbGlhYmxlIChlLmcuIHRoZSBuZXR3b3JrKS4KLSAgKiBZb3Ugd2FudCB0
byB0ZXN0IGhvdyB5b3VyIGNvZGUgaGFuZGxlcyBhIGZhaWx1cmUgKGUuZy4gYSBmaWxlIGNoZWNr
c3VtIGVycm9yKSwgYnV0IGl0J3Mgbm90IGVhc3kgdG8gY2F1c2Ugb25lLgotICAqIFlvdSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHlvdXIgbW9kdWxlIGludGVyYWN0cyB3aXRoIG90aGVyIG1vZHVs
ZXMgaW4gdGhlIHJpZ2h0IHdheSwgYnV0IGl0J3MgaGFyZCB0byBvYnNlcnZlIHRoZSBpbnRlcmFj
dGlvbjsgdGhlcmVmb3JlIHlvdSByZXNvcnQgdG8gb2JzZXJ2aW5nIHRoZSBzaWRlIGVmZmVjdHMg
YXQgdGhlIGVuZCBvZiB0aGUgYWN0aW9uLCB3aGljaCBpcyBhd2t3YXJkIGF0IGJlc3QuCi0gICog
WW91IHdhbnQgdG8gIm1vY2sgb3V0IiB5b3VyIGRlcGVuZGVuY2llcywgZXhjZXB0IHRoYXQgdGhl
eSBkb24ndCBoYXZlIG1vY2sgaW1wbGVtZW50YXRpb25zIHlldDsgYW5kLCBmcmFua2x5LCB5b3Ug
YXJlbid0IHRocmlsbGVkIGJ5IHNvbWUgb2YgdGhvc2UgaGFuZC13cml0dGVuIG1vY2tzLgotCi1X
ZSBlbmNvdXJhZ2UgeW91IHRvIHVzZSBHb29nbGUgTW9jayBhczoKLQotICAqIGEgX2Rlc2lnbl8g
dG9vbCwgZm9yIGl0IGxldHMgeW91IGV4cGVyaW1lbnQgd2l0aCB5b3VyIGludGVyZmFjZSBkZXNp
Z24gZWFybHkgYW5kIG9mdGVuLiBNb3JlIGl0ZXJhdGlvbnMgbGVhZCB0byBiZXR0ZXIgZGVzaWdu
cyEKLSAgKiBhIF90ZXN0aW5nXyB0b29sIHRvIGN1dCB5b3VyIHRlc3RzJyBvdXRib3VuZCBkZXBl
bmRlbmNpZXMgYW5kIHByb2JlIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHlvdXIgbW9kdWxlIGFu
ZCBpdHMgY29sbGFib3JhdG9ycy4KLQotIyBHZXR0aW5nIFN0YXJ0ZWQgIwotVXNpbmcgR29vZ2xl
IE1vY2sgaXMgZWFzeSEgSW5zaWRlIHlvdXIgQysrIHNvdXJjZSBmaWxlLCBqdXN0IGAjaW5jbHVk
ZWAgYCJndGVzdC9ndGVzdC5oImAgYW5kIGAiZ21vY2svZ21vY2suaCJgLCBhbmQgeW91IGFyZSBy
ZWFkeSB0byBnby4KLQotIyBBIENhc2UgZm9yIE1vY2sgVHVydGxlcyAjCi1MZXQncyBsb29rIGF0
IGFuIGV4YW1wbGUuIFN1cHBvc2UgeW91IGFyZSBkZXZlbG9waW5nIGEgZ3JhcGhpY3MgcHJvZ3Jh
bSB0aGF0IHJlbGllcyBvbiBhIExPR08tbGlrZSBBUEkgZm9yIGRyYXdpbmcuIEhvdyB3b3VsZCB5
b3UgdGVzdCB0aGF0IGl0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nPyBXZWxsLCB5b3UgY2FuIHJ1biBp
dCBhbmQgY29tcGFyZSB0aGUgc2NyZWVuIHdpdGggYSBnb2xkZW4gc2NyZWVuIHNuYXBzaG90LCBi
dXQgbGV0J3MgYWRtaXQgaXQ6IHRlc3RzIGxpa2UgdGhpcyBhcmUgZXhwZW5zaXZlIHRvIHJ1biBh
bmQgZnJhZ2lsZSAoV2hhdCBpZiB5b3UganVzdCB1cGdyYWRlZCB0byBhIHNoaW55IG5ldyBncmFw
aGljcyBjYXJkIHRoYXQgaGFzIGJldHRlciBhbnRpLWFsaWFzaW5nPyBTdWRkZW5seSB5b3UgaGF2
ZSB0byB1cGRhdGUgYWxsIHlvdXIgZ29sZGVuIGltYWdlcy4pLiBJdCB3b3VsZCBiZSB0b28gcGFp
bmZ1bCBpZiBhbGwgeW91ciB0ZXN0cyBhcmUgbGlrZSB0aGlzLiBGb3J0dW5hdGVseSwgeW91IGxl
YXJuZWQgYWJvdXQgRGVwZW5kZW5jeSBJbmplY3Rpb24gYW5kIGtub3cgdGhlIHJpZ2h0IHRoaW5n
IHRvIGRvOiBpbnN0ZWFkIG9mIGhhdmluZyB5b3VyIGFwcGxpY2F0aW9uIHRhbGsgdG8gdGhlIGRy
YXdpbmcgQVBJIGRpcmVjdGx5LCB3cmFwIHRoZSBBUEkgaW4gYW4gaW50ZXJmYWNlIChzYXksIGBU
dXJ0bGVgKSBhbmQgY29kZSB0byB0aGF0IGludGVyZmFjZToKLQotYGBgCi1jbGFzcyBUdXJ0bGUg
ewotICAuLi4KLSAgdmlydHVhbCB+VHVydGxlKCkge30KLSAgdmlydHVhbCB2b2lkIFBlblVwKCkg
PSAwOwotICB2aXJ0dWFsIHZvaWQgUGVuRG93bigpID0gMDsKLSAgdmlydHVhbCB2b2lkIEZvcndh
cmQoaW50IGRpc3RhbmNlKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBUdXJuKGludCBkZWdyZWVzKSA9
IDA7Ci0gIHZpcnR1YWwgdm9pZCBHb1RvKGludCB4LCBpbnQgeSkgPSAwOwotICB2aXJ0dWFsIGlu
dCBHZXRYKCkgY29uc3QgPSAwOwotICB2aXJ0dWFsIGludCBHZXRZKCkgY29uc3QgPSAwOwotfTsK
LWBgYAotCi0oTm90ZSB0aGF0IHRoZSBkZXN0cnVjdG9yIG9mIGBUdXJ0bGVgICoqbXVzdCoqIGJl
IHZpcnR1YWwsIGFzIGlzIHRoZSBjYXNlIGZvciAqKmFsbCoqIGNsYXNzZXMgeW91IGludGVuZCB0
byBpbmhlcml0IGZyb20gLSBvdGhlcndpc2UgdGhlIGRlc3RydWN0b3Igb2YgdGhlIGRlcml2ZWQg
Y2xhc3Mgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4geW91IGRlbGV0ZSBhbiBvYmplY3QgdGhyb3Vn
aCBhIGJhc2UgcG9pbnRlciwgYW5kIHlvdSdsbCBnZXQgY29ycnVwdGVkIHByb2dyYW0gc3RhdGVz
IGxpa2UgbWVtb3J5IGxlYWtzLikKLQotWW91IGNhbiBjb250cm9sIHdoZXRoZXIgdGhlIHR1cnRs
ZSdzIG1vdmVtZW50IHdpbGwgbGVhdmUgYSB0cmFjZSB1c2luZyBgUGVuVXAoKWAgYW5kIGBQZW5E
b3duKClgLCBhbmQgY29udHJvbCBpdHMgbW92ZW1lbnQgdXNpbmcgYEZvcndhcmQoKWAsIGBUdXJu
KClgLCBhbmQgYEdvVG8oKWAuIEZpbmFsbHksIGBHZXRYKClgIGFuZCBgR2V0WSgpYCB0ZWxsIHlv
dSB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgdHVydGxlLgotCi1Zb3VyIHByb2dyYW0gd2ls
bCBub3JtYWxseSB1c2UgYSByZWFsIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgaW50ZXJmYWNlLiBJ
biB0ZXN0cywgeW91IGNhbiB1c2UgYSBtb2NrIGltcGxlbWVudGF0aW9uIGluc3RlYWQuIFRoaXMg
YWxsb3dzIHlvdSB0byBlYXNpbHkgY2hlY2sgd2hhdCBkcmF3aW5nIHByaW1pdGl2ZXMgeW91ciBw
cm9ncmFtIGlzIGNhbGxpbmcsIHdpdGggd2hhdCBhcmd1bWVudHMsIGFuZCBpbiB3aGljaCBvcmRl
ci4gVGVzdHMgd3JpdHRlbiB0aGlzIHdheSBhcmUgbXVjaCBtb3JlIHJvYnVzdCAodGhleSB3b24n
dCBicmVhayBiZWNhdXNlIHlvdXIgbmV3IG1hY2hpbmUgZG9lcyBhbnRpLWFsaWFzaW5nIGRpZmZl
cmVudGx5KSwgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluICh0aGUgaW50ZW50IG9mIGEgdGVz
dCBpcyBleHByZXNzZWQgaW4gdGhlIGNvZGUsIG5vdCBpbiBzb21lIGJpbmFyeSBpbWFnZXMpLCBh
bmQgcnVuIF9tdWNoLCBtdWNoIGZhc3Rlcl8uCi0KLSMgV3JpdGluZyB0aGUgTW9jayBDbGFzcyAj
Ci1JZiB5b3UgYXJlIGx1Y2t5LCB0aGUgbW9ja3MgeW91IG5lZWQgdG8gdXNlIGhhdmUgYWxyZWFk
eSBiZWVuIGltcGxlbWVudGVkIGJ5IHNvbWUgbmljZSBwZW9wbGUuIElmLCBob3dldmVyLCB5b3Ug
ZmluZCB5b3Vyc2VsZiBpbiB0aGUgcG9zaXRpb24gdG8gd3JpdGUgYSBtb2NrIGNsYXNzLCByZWxh
eCAtIEdvb2dsZSBNb2NrIHR1cm5zIHRoaXMgdGFzayBpbnRvIGEgZnVuIGdhbWUhIChXZWxsLCBh
bG1vc3QuKQotCi0jIyBIb3cgdG8gRGVmaW5lIEl0ICMjCi1Vc2luZyB0aGUgYFR1cnRsZWAgaW50
ZXJmYWNlIGFzIGV4YW1wbGUsIGhlcmUgYXJlIHRoZSBzaW1wbGUgc3RlcHMgeW91IG5lZWQgdG8g
Zm9sbG93OgotCi0gIDEuIERlcml2ZSBhIGNsYXNzIGBNb2NrVHVydGxlYCBmcm9tIGBUdXJ0bGVg
LgotICAxLiBUYWtlIGEgX3ZpcnR1YWxfIGZ1bmN0aW9uIG9mIGBUdXJ0bGVgICh3aGlsZSBpdCdz
IHBvc3NpYmxlIHRvIFttb2NrIG5vbi12aXJ0dWFsIG1ldGhvZHMgdXNpbmcgdGVtcGxhdGVzXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjTW9j
a2luZ19Ob252aXJ0dWFsX01ldGhvZHMpLCBpdCdzIG11Y2ggbW9yZSBpbnZvbHZlZCkuIENvdW50
IGhvdyBtYW55IGFyZ3VtZW50cyBpdCBoYXMuCi0gIDEuIEluIHRoZSBgcHVibGljOmAgc2VjdGlv
biBvZiB0aGUgY2hpbGQgY2xhc3MsIHdyaXRlIGBNT0NLX01FVEhPRG4oKTtgIChvciBgTU9DS19D
T05TVF9NRVRIT0RuKCk7YCBpZiB5b3UgYXJlIG1vY2tpbmcgYSBgY29uc3RgIG1ldGhvZCksIHdo
ZXJlIGBuYCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudHM7IGlmIHlvdSBjb3VudGVkIHdy
b25nLCBzaGFtZSBvbiB5b3UsIGFuZCBhIGNvbXBpbGVyIGVycm9yIHdpbGwgdGVsbCB5b3Ugc28u
Ci0gIDEuIE5vdyBjb21lcyB0aGUgZnVuIHBhcnQ6IHlvdSB0YWtlIHRoZSBmdW5jdGlvbiBzaWdu
YXR1cmUsIGN1dC1hbmQtcGFzdGUgdGhlIF9mdW5jdGlvbiBuYW1lXyBhcyB0aGUgX2ZpcnN0XyBh
cmd1bWVudCB0byB0aGUgbWFjcm8sIGFuZCBsZWF2ZSB3aGF0J3MgbGVmdCBhcyB0aGUgX3NlY29u
ZF8gYXJndW1lbnQgKGluIGNhc2UgeW91J3JlIGN1cmlvdXMsIHRoaXMgaXMgdGhlIF90eXBlIG9m
IHRoZSBmdW5jdGlvbl8pLgotICAxLiBSZXBlYXQgdW50aWwgYWxsIHZpcnR1YWwgZnVuY3Rpb25z
IHlvdSB3YW50IHRvIG1vY2sgYXJlIGRvbmUuCi0KLUFmdGVyIHRoZSBwcm9jZXNzLCB5b3Ugc2hv
dWxkIGhhdmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgi
ICAvLyBCcmluZ3MgaW4gR29vZ2xlIE1vY2suCi1jbGFzcyBNb2NrVHVydGxlIDogcHVibGljIFR1
cnRsZSB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19NRVRIT0QwKFBlblVwLCB2b2lkKCkpOwot
ICBNT0NLX01FVEhPRDAoUGVuRG93biwgdm9pZCgpKTsKLSAgTU9DS19NRVRIT0QxKEZvcndhcmQs
IHZvaWQoaW50IGRpc3RhbmNlKSk7Ci0gIE1PQ0tfTUVUSE9EMShUdXJuLCB2b2lkKGludCBkZWdy
ZWVzKSk7Ci0gIE1PQ0tfTUVUSE9EMihHb1RvLCB2b2lkKGludCB4LCBpbnQgeSkpOwotICBNT0NL
X0NPTlNUX01FVEhPRDAoR2V0WCwgaW50KCkpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoR2V0WSwg
aW50KCkpOwotfTsKLWBgYAotCi1Zb3UgZG9uJ3QgbmVlZCB0byBkZWZpbmUgdGhlc2UgbW9jayBt
ZXRob2RzIHNvbWV3aGVyZSBlbHNlIC0gdGhlIGBNT0NLX01FVEhPRCpgIG1hY3JvcyB3aWxsIGdl
bmVyYXRlIHRoZSBkZWZpbml0aW9ucyBmb3IgeW91LiBJdCdzIHRoYXQgc2ltcGxlISBPbmNlIHlv
dSBnZXQgdGhlIGhhbmcgb2YgaXQsIHlvdSBjYW4gcHVtcCBvdXQgbW9jayBjbGFzc2VzIGZhc3Rl
ciB0aGFuIHlvdXIgc291cmNlLWNvbnRyb2wgc3lzdGVtIGNhbiBoYW5kbGUgeW91ciBjaGVjay1p
bnMuCi0KLSoqVGlwOioqIElmIGV2ZW4gdGhpcyBpcyB0b28gbXVjaCB3b3JrIGZvciB5b3UsIHlv
dSdsbCBmaW5kIHRoZQotYGdtb2NrX2dlbi5weWAgdG9vbCBpbiBHb29nbGUgTW9jaydzIGBzY3Jp
cHRzL2dlbmVyYXRvci9gIGRpcmVjdG9yeSAoY291cnRlc3kgb2YgdGhlIFtjcHBjbGVhbl0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLykgcHJvamVjdCkgdXNlZnVsLiAgVGhpcyBj
b21tYW5kLWxpbmUKLXRvb2wgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBQeXRob24gMi40IGluc3Rh
bGxlZC4gIFlvdSBnaXZlIGl0IGEgQysrIGZpbGUgYW5kIHRoZSBuYW1lIG9mIGFuIGFic3RyYWN0
IGNsYXNzIGRlZmluZWQgaW4gaXQsCi1hbmQgaXQgd2lsbCBwcmludCB0aGUgZGVmaW5pdGlvbiBv
ZiB0aGUgbW9jayBjbGFzcyBmb3IgeW91LiAgRHVlIHRvIHRoZQotY29tcGxleGl0eSBvZiB0aGUg
QysrIGxhbmd1YWdlLCB0aGlzIHNjcmlwdCBtYXkgbm90IGFsd2F5cyB3b3JrLCBidXQKLWl0IGNh
biBiZSBxdWl0ZSBoYW5keSB3aGVuIGl0IGRvZXMuICBGb3IgbW9yZSBkZXRhaWxzLCByZWFkIHRo
ZSBbdXNlciBkb2N1bWVudGF0aW9uXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9j
ay9zb3VyY2UvYnJvd3NlL3RydW5rL3NjcmlwdHMvZ2VuZXJhdG9yL1JFQURNRSkuCi0KLSMjIFdo
ZXJlIHRvIFB1dCBJdCAjIwotV2hlbiB5b3UgZGVmaW5lIGEgbW9jayBjbGFzcywgeW91IG5lZWQg
dG8gZGVjaWRlIHdoZXJlIHRvIHB1dCBpdHMgZGVmaW5pdGlvbi4gU29tZSBwZW9wbGUgcHV0IGl0
IGluIGEgYCpfdGVzdC5jY2AuIFRoaXMgaXMgZmluZSB3aGVuIHRoZSBpbnRlcmZhY2UgYmVpbmcg
bW9ja2VkIChzYXksIGBGb29gKSBpcyBvd25lZCBieSB0aGUgc2FtZSBwZXJzb24gb3IgdGVhbS4g
T3RoZXJ3aXNlLCB3aGVuIHRoZSBvd25lciBvZiBgRm9vYCBjaGFuZ2VzIGl0LCB5b3VyIHRlc3Qg
Y291bGQgYnJlYWsuIChZb3UgY2FuJ3QgcmVhbGx5IGV4cGVjdCBgRm9vYCdzIG1haW50YWluZXIg
dG8gZml4IGV2ZXJ5IHRlc3QgdGhhdCB1c2VzIGBGb29gLCBjYW4geW91PykKLQotU28sIHRoZSBy
dWxlIG9mIHRodW1iIGlzOiBpZiB5b3UgbmVlZCB0byBtb2NrIGBGb29gIGFuZCBpdCdzIG93bmVk
IGJ5IG90aGVycywgZGVmaW5lIHRoZSBtb2NrIGNsYXNzIGluIGBGb29gJ3MgcGFja2FnZSAoYmV0
dGVyLCBpbiBhIGB0ZXN0aW5nYCBzdWItcGFja2FnZSBzdWNoIHRoYXQgeW91IGNhbiBjbGVhcmx5
IHNlcGFyYXRlIHByb2R1Y3Rpb24gY29kZSBhbmQgdGVzdGluZyB1dGlsaXRpZXMpLCBhbmQgcHV0
IGl0IGluIGEgYG1vY2tfZm9vLmhgLiBUaGVuIGV2ZXJ5b25lIGNhbiByZWZlcmVuY2UgYG1vY2tf
Zm9vLmhgIGZyb20gdGhlaXIgdGVzdHMuIElmIGBGb29gIGV2ZXIgY2hhbmdlcywgdGhlcmUgaXMg
b25seSBvbmUgY29weSBvZiBgTW9ja0Zvb2AgdG8gY2hhbmdlLCBhbmQgb25seSB0ZXN0cyB0aGF0
IGRlcGVuZCBvbiB0aGUgY2hhbmdlZCBtZXRob2RzIG5lZWQgdG8gYmUgZml4ZWQuCi0KLUFub3Ro
ZXIgd2F5IHRvIGRvIGl0OiB5b3UgY2FuIGludHJvZHVjZSBhIHRoaW4gbGF5ZXIgYEZvb0FkYXB0
b3JgIG9uIHRvcCBvZiBgRm9vYCBhbmQgY29kZSB0byB0aGlzIG5ldyBpbnRlcmZhY2UuIFNpbmNl
IHlvdSBvd24gYEZvb0FkYXB0b3JgLCB5b3UgY2FuIGFic29yYiBjaGFuZ2VzIGluIGBGb29gIG11
Y2ggbW9yZSBlYXNpbHkuIFdoaWxlIHRoaXMgaXMgbW9yZSB3b3JrIGluaXRpYWxseSwgY2FyZWZ1
bGx5IGNob29zaW5nIHRoZSBhZGFwdG9yIGludGVyZmFjZSBjYW4gbWFrZSB5b3VyIGNvZGUgZWFz
aWVyIHRvIHdyaXRlIGFuZCBtb3JlIHJlYWRhYmxlIChhIG5ldCB3aW4gaW4gdGhlIGxvbmcgcnVu
KSwgYXMgeW91IGNhbiBjaG9vc2UgYEZvb0FkYXB0b3JgIHRvIGZpdCB5b3VyIHNwZWNpZmljIGRv
bWFpbiBtdWNoIGJldHRlciB0aGFuIGBGb29gIGRvZXMuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVz
dHMgIwotT25jZSB5b3UgaGF2ZSBhIG1vY2sgY2xhc3MsIHVzaW5nIGl0IGlzIGVhc3kuIFRoZSB0
eXBpY2FsIHdvcmsgZmxvdyBpczoKLQotICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVz
IGZyb20gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2Ugc3VjaCB0aGF0IHlvdSBjYW4gdXNlIHRoZW0g
dW5xdWFsaWZpZWQgKFlvdSBvbmx5IGhhdmUgdG8gZG8gaXQgb25jZSBwZXIgZmlsZS4gUmVtZW1i
ZXIgdGhhdCBuYW1lc3BhY2VzIGFyZSBhIGdvb2QgaWRlYSBhbmQgZ29vZCBmb3IgeW91ciBoZWFs
dGguKS4KLSAgMS4gQ3JlYXRlIHNvbWUgbW9jayBvYmplY3RzLgotICAxLiBTcGVjaWZ5IHlvdXIg
ZXhwZWN0YXRpb25zIG9uIHRoZW0gKEhvdyBtYW55IHRpbWVzIHdpbGwgYSBtZXRob2QgYmUgY2Fs
bGVkPyBXaXRoIHdoYXQgYXJndW1lbnRzPyBXaGF0IHNob3VsZCBpdCBkbz8gZXRjLikuCi0gIDEu
IEV4ZXJjaXNlIHNvbWUgY29kZSB0aGF0IHVzZXMgdGhlIG1vY2tzOyBvcHRpb25hbGx5LCBjaGVj
ayB0aGUgcmVzdWx0IHVzaW5nIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMuIElmIGEgbW9jayBtZXRo
b2QgaXMgY2FsbGVkIG1vcmUgdGhhbiBleHBlY3RlZCBvciB3aXRoIHdyb25nIGFyZ3VtZW50cywg
eW91J2xsIGdldCBhbiBlcnJvciBpbW1lZGlhdGVseS4KLSAgMS4gV2hlbiBhIG1vY2sgaXMgZGVz
dHJ1Y3RlZCwgR29vZ2xlIE1vY2sgd2lsbCBhdXRvbWF0aWNhbGx5IGNoZWNrIHdoZXRoZXIgYWxs
IGV4cGVjdGF0aW9ucyBvbiBpdCBoYXZlIGJlZW4gc2F0aXNmaWVkLgotCi1IZXJlJ3MgYW4gZXhh
bXBsZToKLQotYGBgCi0jaW5jbHVkZSAicGF0aC90by9tb2NrLXR1cnRsZS5oIgotI2luY2x1ZGUg
Imdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLXVzaW5nIDo6dGVzdGlu
Zzo6QXRMZWFzdDsgICAgICAgICAgICAgICAgICAgICAvLyAjMQotCi1URVNUKFBhaW50ZXJUZXN0
LCBDYW5EcmF3U29tZXRoaW5nKSB7Ci0gIE1vY2tUdXJ0bGUgdHVydGxlOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gIzIKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBQZW5Eb3duKCkpICAgICAg
ICAgICAgICAvLyAjMwotICAgICAgLlRpbWVzKEF0TGVhc3QoMSkpOwotCi0gIFBhaW50ZXIgcGFp
bnRlcigmdHVydGxlKTsgICAgICAgICAgICAgICAgICAgLy8gIzQKLQotICBFWFBFQ1RfVFJVRShw
YWludGVyLkRyYXdDaXJjbGUoMCwgMCwgMTApKTsKLX0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAjNQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKLSAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIG11c3QgYmUgZXhlY3V0ZWQgdG8gaW5pdGlh
bGl6ZSBHb29nbGUgTW9jawotICAvLyAoYW5kIEdvb2dsZSBUZXN0KSBiZWZvcmUgcnVubmluZyB0
aGUgdGVzdHMuCi0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGFyZ3YpOwotICBy
ZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotYGBgCi0KLUFzIHlvdSBtaWdodCBoYXZlIGd1ZXNz
ZWQsIHRoaXMgdGVzdCBjaGVja3MgdGhhdCBgUGVuRG93bigpYCBpcyBjYWxsZWQgYXQgbGVhc3Qg
b25jZS4gSWYgdGhlIGBwYWludGVyYCBvYmplY3QgZGlkbid0IGNhbGwgdGhpcyBtZXRob2QsIHlv
dXIgdGVzdCB3aWxsIGZhaWwgd2l0aCBhIG1lc3NhZ2UgbGlrZSB0aGlzOgotCi1gYGAKLXBhdGgv
dG8vbXlfdGVzdC5jYzoxMTk6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRv
ZXNuJ3QgbWF0Y2ggdGhpcyBleHBlY3RhdGlvbjoKLUFjdHVhbGx5OiBuZXZlciBjYWxsZWQ7Ci1F
eHBlY3RlZDogY2FsbGVkIGF0IGxlYXN0IG9uY2UuCi1gYGAKLQotKipUaXAgMToqKiBJZiB5b3Ug
cnVuIHRoZSB0ZXN0IGZyb20gYW4gRW1hY3MgYnVmZmVyLCB5b3UgY2FuIGhpdCBgPEVudGVyPmAg
b24gdGhlIGxpbmUgbnVtYmVyIGRpc3BsYXllZCBpbiB0aGUgZXJyb3IgbWVzc2FnZSB0byBqdW1w
IHJpZ2h0IHRvIHRoZSBmYWlsZWQgZXhwZWN0YXRpb24uCi0KLSoqVGlwIDI6KiogSWYgeW91ciBt
b2NrIG9iamVjdHMgYXJlIG5ldmVyIGRlbGV0ZWQsIHRoZSBmaW5hbCB2ZXJpZmljYXRpb24gd29u
J3QgaGFwcGVuLiBUaGVyZWZvcmUgaXQncyBhIGdvb2QgaWRlYSB0byB1c2UgYSBoZWFwIGxlYWsg
Y2hlY2tlciBpbiB5b3VyIHRlc3RzIHdoZW4geW91IGFsbG9jYXRlIG1vY2tzIG9uIHRoZSBoZWFw
LgotCi0qKkltcG9ydGFudCBub3RlOioqIEdvb2dsZSBNb2NrIHJlcXVpcmVzIGV4cGVjdGF0aW9u
cyB0byBiZSBzZXQgKipiZWZvcmUqKiB0aGUgbW9jayBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgb3Ro
ZXJ3aXNlIHRoZSBiZWhhdmlvciBpcyAqKnVuZGVmaW5lZCoqLiBJbiBwYXJ0aWN1bGFyLCB5b3Ug
bXVzdG4ndCBpbnRlcmxlYXZlIGBFWFBFQ1RfQ0FMTCgpYHMgYW5kIGNhbGxzIHRvIHRoZSBtb2Nr
IGZ1bmN0aW9ucy4KLQotVGhpcyBtZWFucyBgRVhQRUNUX0NBTEwoKWAgc2hvdWxkIGJlIHJlYWQg
YXMgZXhwZWN0aW5nIHRoYXQgYSBjYWxsIHdpbGwgb2NjdXIgX2luIHRoZSBmdXR1cmVfLCBub3Qg
dGhhdCBhIGNhbGwgaGFzIG9jY3VycmVkLiBXaHkgZG9lcyBHb29nbGUgTW9jayB3b3JrIGxpa2Ug
dGhhdD8gV2VsbCwgc3BlY2lmeWluZyB0aGUgZXhwZWN0YXRpb24gYmVmb3JlaGFuZCBhbGxvd3Mg
R29vZ2xlIE1vY2sgdG8gcmVwb3J0IGEgdmlvbGF0aW9uIGFzIHNvb24gYXMgaXQgYXJpc2VzLCB3
aGVuIHRoZSBjb250ZXh0IChzdGFjayB0cmFjZSwgZXRjKSBpcyBzdGlsbCBhdmFpbGFibGUuIFRo
aXMgbWFrZXMgZGVidWdnaW5nIG11Y2ggZWFzaWVyLgotCi1BZG1pdHRlZGx5LCB0aGlzIHRlc3Qg
aXMgY29udHJpdmVkIGFuZCBkb2Vzbid0IGRvIG11Y2guIFlvdSBjYW4gZWFzaWx5IGFjaGlldmUg
dGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgdXNpbmcgR29vZ2xlIE1vY2suIEhvd2V2ZXIsIGFzIHdl
IHNoYWxsIHJldmVhbCBzb29uLCBHb29nbGUgTW9jayBhbGxvd3MgeW91IHRvIGRvIF9tdWNoIG1v
cmVfIHdpdGggdGhlIG1vY2tzLgotCi0jIyBVc2luZyBHb29nbGUgTW9jayB3aXRoIEFueSBUZXN0
aW5nIEZyYW1ld29yayAjIwotSWYgeW91IHdhbnQgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFu
IEdvb2dsZSBUZXN0IChlLmcuIFtDcHBVbml0XShodHRwOi8vYXBwcy5zb3VyY2Vmb3JnZS5uZXQv
bWVkaWF3aWtpL2NwcHVuaXQvaW5kZXgucGhwP3RpdGxlPU1haW5fUGFnZSkgb3IKLVtDeHhUZXN0
XShodHRwOi8vY3h4dGVzdC50aWdyaXMub3JnLykpIGFzIHlvdXIgdGVzdGluZyBmcmFtZXdvcmss
IGp1c3QgY2hhbmdlIHRoZSBgbWFpbigpYCBmdW5jdGlvbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlv
biB0bzoKLWBgYAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIC8vIFRoZSBm
b2xsb3dpbmcgbGluZSBjYXVzZXMgR29vZ2xlIE1vY2sgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIG9u
IGZhaWx1cmUsCi0gIC8vIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgeW91ciB0ZXN0aW5n
IGZyYW1ld29yayBhcyBhIHRlc3QgZmFpbHVyZS4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRo
cm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJn
YywgYXJndik7Ci0gIC4uLiB3aGF0ZXZlciB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHJlcXVpcmVz
IC4uLgotfQotYGBgCi0KLVRoaXMgYXBwcm9hY2ggaGFzIGEgY2F0Y2g6IGl0IG1ha2VzIEdvb2ds
ZSBNb2NrIHRocm93IGFuIGV4Y2VwdGlvbgotZnJvbSBhIG1vY2sgb2JqZWN0J3MgZGVzdHJ1Y3Rv
ciBzb21ldGltZXMuICBXaXRoIHNvbWUgY29tcGlsZXJzLCB0aGlzCi1zb21ldGltZXMgY2F1c2Vz
IHRoZSB0ZXN0IHByb2dyYW0gdG8gY3Jhc2guICBZb3UnbGwgc3RpbGwgYmUgYWJsZSB0bwotbm90
aWNlIHRoYXQgdGhlIHRlc3QgaGFzIGZhaWxlZCwgYnV0IGl0J3Mgbm90IGEgZ3JhY2VmdWwgZmFp
bHVyZS4KLQotQSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gdXNlIEdvb2dsZSBUZXN0J3MKLVtldmVu
dCBsaXN0ZW5lciBBUEldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3dpa2kv
VjFfNl9BZHZhbmNlZEd1aWRlI0V4dGVuZGluZ19Hb29nbGVfVGVzdF9ieV9IYW5kbGluZ19UZXN0
X0V2ZW50cykKLXRvIHJlcG9ydCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3RpbmcgZnJhbWV3
b3JrIHByb3Blcmx5LiAgWW91J2xsIG5lZWQgdG8KLWltcGxlbWVudCB0aGUgYE9uVGVzdFBhcnRS
ZXN1bHQoKWAgbWV0aG9kIG9mIHRoZSBldmVudCBsaXN0ZW5lciBpbnRlcmZhY2UsIGJ1dCBpdAot
c2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4KLQotSWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgdG9v
IG11Y2ggd29yaywgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGljayB3aXRoCi1Hb29nbGUgVGVzdCwg
d2hpY2ggd29ya3Mgd2l0aCBHb29nbGUgTW9jayBzZWFtbGVzc2x5IChpbiBmYWN0LCBpdCBpcwot
dGVjaG5pY2FsbHkgcGFydCBvZiBHb29nbGUgTW9jay4pLiAgSWYgdGhlcmUgaXMgYSByZWFzb24g
dGhhdCB5b3UKLWNhbm5vdCB1c2UgR29vZ2xlIFRlc3QsIHBsZWFzZSBsZXQgdXMga25vdy4KLQot
IyBTZXR0aW5nIEV4cGVjdGF0aW9ucyAjCi1UaGUga2V5IHRvIHVzaW5nIGEgbW9jayBvYmplY3Qg
c3VjY2Vzc2Z1bGx5IGlzIHRvIHNldCB0aGUgX3JpZ2h0IGV4cGVjdGF0aW9uc18gb24gaXQuIElm
IHlvdSBzZXQgdGhlIGV4cGVjdGF0aW9ucyB0b28gc3RyaWN0LCB5b3VyIHRlc3Qgd2lsbCBmYWls
IGFzIHRoZSByZXN1bHQgb2YgdW5yZWxhdGVkIGNoYW5nZXMuIElmIHlvdSBzZXQgdGhlbSB0b28g
bG9vc2UsIGJ1Z3MgY2FuIHNsaXAgdGhyb3VnaC4gWW91IHdhbnQgdG8gZG8gaXQganVzdCByaWdo
dCBzdWNoIHRoYXQgeW91ciB0ZXN0IGNhbiBjYXRjaCBleGFjdGx5IHRoZSBraW5kIG9mIGJ1Z3Mg
eW91IGludGVuZCBpdCB0byBjYXRjaC4gR29vZ2xlIE1vY2sgcHJvdmlkZXMgdGhlIG5lY2Vzc2Fy
eSBtZWFucyBmb3IgeW91IHRvIGRvIGl0ICJqdXN0IHJpZ2h0LiIKLQotIyMgR2VuZXJhbCBTeW50
YXggIyMKLUluIEdvb2dsZSBNb2NrIHdlIHVzZSB0aGUgYEVYUEVDVF9DQUxMKClgIG1hY3JvIHRv
IHNldCBhbiBleHBlY3RhdGlvbiBvbiBhIG1vY2sgbWV0aG9kLiBUaGUgZ2VuZXJhbCBzeW50YXgg
aXM6Ci0KLWBgYAotRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0g
ICAgLlRpbWVzKGNhcmRpbmFsaXR5KQotICAgIC5XaWxsT25jZShhY3Rpb24pCi0gICAgLldpbGxS
ZXBlYXRlZGx5KGFjdGlvbik7Ci1gYGAKLQotVGhlIG1hY3JvIGhhcyB0d28gYXJndW1lbnRzOiBm
aXJzdCB0aGUgbW9jayBvYmplY3QsIGFuZCB0aGVuIHRoZSBtZXRob2QgYW5kIGl0cyBhcmd1bWVu
dHMuIE5vdGUgdGhhdCB0aGUgdHdvIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSAoYCxgKSwgbm90
IGEgcGVyaW9kIChgLmApLiAoV2h5IHVzaW5nIGEgY29tbWE/IFRoZSBhbnN3ZXIgaXMgdGhhdCBp
dCB3YXMgbmVjZXNzYXJ5IGZvciB0ZWNobmljYWwgcmVhc29ucy4pCi0KLVRoZSBtYWNybyBjYW4g
YmUgZm9sbG93ZWQgYnkgc29tZSBvcHRpb25hbCBfY2xhdXNlc18gdGhhdCBwcm92aWRlIG1vcmUg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4cGVjdGF0aW9uLiBXZSdsbCBkaXNjdXNzIGhvdyBlYWNo
IGNsYXVzZSB3b3JrcyBpbiB0aGUgY29taW5nIHNlY3Rpb25zLgotCi1UaGlzIHN5bnRheCBpcyBk
ZXNpZ25lZCB0byBtYWtlIGFuIGV4cGVjdGF0aW9uIHJlYWQgbGlrZSBFbmdsaXNoLiBGb3IgZXhh
bXBsZSwgeW91IGNhbiBwcm9iYWJseSBndWVzcyB0aGF0Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuVGltZXMoNSkK
LSAgICAuV2lsbE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxNTApKQot
ICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMjAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IHRoZSBg
dHVydGxlYCBvYmplY3QncyBgR2V0WCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZml2ZSB0aW1l
cywgaXQgd2lsbCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAxNTAgdGhlIHNlY29uZCB0aW1l
LCBhbmQgdGhlbiAyMDAgZXZlcnkgdGltZS4gU29tZSBwZW9wbGUgbGlrZSB0byBjYWxsIHRoaXMg
c3R5bGUgb2Ygc3ludGF4IGEgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlIChEU0wpLgotCi0qKk5v
dGU6KiogV2h5IGRvIHdlIHVzZSBhIG1hY3JvIHRvIGRvIHRoaXM/IEl0IHNlcnZlcyB0d28gcHVy
cG9zZXM6IGZpcnN0IGl0IG1ha2VzIGV4cGVjdGF0aW9ucyBlYXNpbHkgaWRlbnRpZmlhYmxlIChl
aXRoZXIgYnkgYGdyZXBgIG9yIGJ5IGEgaHVtYW4gcmVhZGVyKSwgYW5kIHNlY29uZCBpdCBhbGxv
d3MgR29vZ2xlIE1vY2sgdG8gaW5jbHVkZSB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgYSBm
YWlsZWQgZXhwZWN0YXRpb24gaW4gbWVzc2FnZXMsIG1ha2luZyBkZWJ1Z2dpbmcgZWFzaWVyLgot
Ci0jIyBNYXRjaGVyczogV2hhdCBBcmd1bWVudHMgRG8gV2UgRXhwZWN0PyAjIwotV2hlbiBhIG1v
Y2sgZnVuY3Rpb24gdGFrZXMgYXJndW1lbnRzLCB3ZSBtdXN0IHNwZWNpZnkgd2hhdCBhcmd1bWVu
dHMgd2UgYXJlIGV4cGVjdGluZzsgZm9yIGV4YW1wbGU6Ci0KLWBgYAotLy8gRXhwZWN0cyB0aGUg
dHVydGxlIHRvIG1vdmUgZm9yd2FyZCBieSAxMDAgdW5pdHMuCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUs
IEZvcndhcmQoMTAwKSk7Ci1gYGAKLQotU29tZXRpbWVzIHlvdSBtYXkgbm90IHdhbnQgdG8gYmUg
dG9vIHNwZWNpZmljIChSZW1lbWJlciB0aGF0IHRhbGsgYWJvdXQgdGVzdHMgYmVpbmcgdG9vIHJp
Z2lkPyBPdmVyIHNwZWNpZmljYXRpb24gbGVhZHMgdG8gYnJpdHRsZSB0ZXN0cyBhbmQgb2JzY3Vy
ZXMgdGhlIGludGVudCBvZiB0ZXN0cy4gVGhlcmVmb3JlIHdlIGVuY291cmFnZSB5b3UgdG8gc3Bl
Y2lmeSBvbmx5IHdoYXQncyBuZWNlc3NhcnkgLSBubyBtb3JlLCBubyBsZXNzLikuIElmIHlvdSBj
YXJlIHRvIGNoZWNrIHRoYXQgYEZvcndhcmQoKWAgd2lsbCBiZSBjYWxsZWQgYnV0IGFyZW4ndCBp
bnRlcmVzdGVkIGluIGl0cyBhY3R1YWwgYXJndW1lbnQsIHdyaXRlIGBfYCBhcyB0aGUgYXJndW1l
bnQsIHdoaWNoIG1lYW5zICJhbnl0aGluZyBnb2VzIjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6
Ol87Ci0uLi4KLS8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3ZlIGZvcndhcmQuCi1FWFBFQ1Rf
Q0FMTCh0dXJ0bGUsIEZvcndhcmQoXykpOwotYGBgCi0KLWBfYCBpcyBhbiBpbnN0YW5jZSBvZiB3
aGF0IHdlIGNhbGwgKiptYXRjaGVycyoqLiBBIG1hdGNoZXIgaXMgbGlrZSBhIHByZWRpY2F0ZSBh
bmQgY2FuIHRlc3Qgd2hldGhlciBhbiBhcmd1bWVudCBpcyB3aGF0IHdlJ2QgZXhwZWN0LiBZb3Ug
Y2FuIHVzZSBhIG1hdGNoZXIgaW5zaWRlIGBFWFBFQ1RfQ0FMTCgpYCB3aGVyZXZlciBhIGZ1bmN0
aW9uIGFyZ3VtZW50IGlzIGV4cGVjdGVkLgotCi1BIGxpc3Qgb2YgYnVpbHQtaW4gbWF0Y2hlcnMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBbQ2hlYXRTaGVldF0oVjFfNl9DaGVhdFNoZWV0Lm1kKS4gRm9y
IGV4YW1wbGUsIGhlcmUncyB0aGUgYEdlYCAoZ3JlYXRlciB0aGFuIG9yIGVxdWFsKSBtYXRjaGVy
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6R2U7Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZv
cndhcmQoR2UoMTAwKSkpOwotYGBgCi0KLVRoaXMgY2hlY2tzIHRoYXQgdGhlIHR1cnRsZSB3aWxs
IGJlIHRvbGQgdG8gZ28gZm9yd2FyZCBieSBhdCBsZWFzdCAxMDAgdW5pdHMuCi0KLSMjIENhcmRp
bmFsaXRpZXM6IEhvdyBNYW55IFRpbWVzIFdpbGwgSXQgQmUgQ2FsbGVkPyAjIwotVGhlIGZpcnN0
IGNsYXVzZSB3ZSBjYW4gc3BlY2lmeSBmb2xsb3dpbmcgYW4gYEVYUEVDVF9DQUxMKClgIGlzIGBU
aW1lcygpYC4gV2UgY2FsbCBpdHMgYXJndW1lbnQgYSAqKmNhcmRpbmFsaXR5KiogYXMgaXQgdGVs
bHMgX2hvdyBtYW55IHRpbWVzXyB0aGUgY2FsbCBzaG91bGQgb2NjdXIuIEl0IGFsbG93cyB1cyB0
byByZXBlYXQgYW4gZXhwZWN0YXRpb24gbWFueSB0aW1lcyB3aXRob3V0IGFjdHVhbGx5IHdyaXRp
bmcgaXQgYXMgbWFueSB0aW1lcy4gTW9yZSBpbXBvcnRhbnRseSwgYSBjYXJkaW5hbGl0eSBjYW4g
YmUgImZ1enp5IiwganVzdCBsaWtlIGEgbWF0Y2hlciBjYW4gYmUuIFRoaXMgYWxsb3dzIGEgdXNl
ciB0byBleHByZXNzIHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGV4YWN0bHkuCi0KLUFuIGludGVyZXN0
aW5nIHNwZWNpYWwgY2FzZSBpcyB3aGVuIHdlIHNheSBgVGltZXMoMClgLiBZb3UgbWF5IGhhdmUg
Z3Vlc3NlZCAtIGl0IG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQg
d2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGF0IGFsbCwgYW5kIEdvb2dsZSBNb2NrIHdpbGwgcmVw
b3J0IGEgR29vZ2xlIFRlc3QgZmFpbHVyZSB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgKHdyb25n
ZnVsbHkpIGNhbGxlZC4KLQotV2UndmUgc2VlbiBgQXRMZWFzdChuKWAgYXMgYW4gZXhhbXBsZSBv
ZiBmdXp6eSBjYXJkaW5hbGl0aWVzIGVhcmxpZXIuIEZvciB0aGUgbGlzdCBvZiBidWlsdC1pbiBj
YXJkaW5hbGl0aWVzIHlvdSBjYW4gdXNlLCBzZWUgdGhlIFtDaGVhdFNoZWV0XShWMV82X0NoZWF0
U2hlZXQubWQpLgotCi1UaGUgYFRpbWVzKClgIGNsYXVzZSBjYW4gYmUgb21pdHRlZC4gKipJZiB5
b3Ugb21pdCBgVGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgaW5mZXIgdGhlIGNhcmRpbmFsaXR5
IGZvciB5b3UuKiogVGhlIHJ1bGVzIGFyZSBlYXN5IHRvIHJlbWVtYmVyOgotCi0gICogSWYgKipu
ZWl0aGVyKiogYFdpbGxPbmNlKClgICoqbm9yKiogYFdpbGxSZXBlYXRlZGx5KClgIGlzIGluIHRo
ZSBgRVhQRUNUX0NBTEwoKWAsIHRoZSBpbmZlcnJlZCBjYXJkaW5hbGl0eSBpcyBgVGltZXMoMSlg
LgotICAqIElmIHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYCdzIGJ1dCAqKm5vKiogYFdpbGxSZXBl
YXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMSwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhuKWAu
Ci0gICogSWYgdGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYW5kICoqb25lKiogYFdpbGxSZXBl
YXRlZGx5KClgLCB3aGVyZSBgbmAgPj0gMCwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhBdExl
YXN0KG4pKWAuCi0KLSoqUXVpY2sgcXVpejoqKiB3aGF0IGRvIHlvdSB0aGluayB3aWxsIGhhcHBl
biBpZiBhIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQgYWN0dWFs
bHkgY2FsbGVkIGZvdXIgdGltZXM/Ci0KLSMjIEFjdGlvbnM6IFdoYXQgU2hvdWxkIEl0IERvPyAj
IwotUmVtZW1iZXIgdGhhdCBhIG1vY2sgb2JqZWN0IGRvZXNuJ3QgcmVhbGx5IGhhdmUgYSB3b3Jr
aW5nIGltcGxlbWVudGF0aW9uPyBXZSBhcyB1c2VycyBoYXZlIHRvIHRlbGwgaXQgd2hhdCB0byBk
byB3aGVuIGEgbWV0aG9kIGlzIGludm9rZWQuIFRoaXMgaXMgZWFzeSBpbiBHb29nbGUgTW9jay4K
LQotRmlyc3QsIGlmIHRoZSByZXR1cm4gdHlwZSBvZiBhIG1vY2sgZnVuY3Rpb24gaXMgYSBidWls
dC1pbiB0eXBlIG9yIGEgcG9pbnRlciwgdGhlIGZ1bmN0aW9uIGhhcyBhICoqZGVmYXVsdCBhY3Rp
b24qKiAoYSBgdm9pZGAgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgYSBgYm9vbGAgZnVuY3Rp
b24gd2lsbCByZXR1cm4gYGZhbHNlYCwgYW5kIG90aGVyIGZ1bmN0aW9ucyB3aWxsIHJldHVybiAw
KS4gSWYgeW91IGRvbid0IHNheSBhbnl0aGluZywgdGhpcyBiZWhhdmlvciB3aWxsIGJlIHVzZWQu
Ci0KLVNlY29uZCwgaWYgYSBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgYWN0
aW9uLCBvciB0aGUgZGVmYXVsdCBhY3Rpb24gZG9lc24ndCBzdWl0IHlvdSwgeW91IGNhbiBzcGVj
aWZ5IHRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gZWFjaCB0aW1lIHRoZSBleHBlY3RhdGlvbiBtYXRj
aGVzIHVzaW5nIGEgc2VyaWVzIG9mIGBXaWxsT25jZSgpYCBjbGF1c2VzIGZvbGxvd2VkIGJ5IGFu
IG9wdGlvbmFsIGBXaWxsUmVwZWF0ZWRseSgpYC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAu
V2lsbE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5X
aWxsT25jZShSZXR1cm4oMzAwKSk7Ci1gYGAKLQotVGhpcyBzYXlzIHRoYXQgYHR1cnRsZS5HZXRY
KClgIHdpbGwgYmUgY2FsbGVkIF9leGFjdGx5IHRocmVlIHRpbWVzXyAoR29vZ2xlIE1vY2sgaW5m
ZXJyZWQgdGhpcyBmcm9tIGhvdyBtYW55IGBXaWxsT25jZSgpYCBjbGF1c2VzIHdlJ3ZlIHdyaXR0
ZW4sIHNpbmNlIHdlIGRpZG4ndCBleHBsaWNpdGx5IHdyaXRlIGBUaW1lcygpYCksIGFuZCB3aWxs
IHJldHVybiAxMDAsIDIwMCwgYW5kIDMwMCByZXNwZWN0aXZlbHkuCi0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLSAgICAuV2ls
bE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxs
UmVwZWF0ZWRseShSZXR1cm4oMzAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WSgp
YCB3aWxsIGJlIGNhbGxlZCBfYXQgbGVhc3QgdHdpY2VfIChHb29nbGUgTW9jayBrbm93cyB0aGlz
IGFzIHdlJ3ZlIHdyaXR0ZW4gdHdvIGBXaWxsT25jZSgpYCBjbGF1c2VzIGFuZCBhIGBXaWxsUmVw
ZWF0ZWRseSgpYCB3aGlsZSBoYXZpbmcgbm8gZXhwbGljaXQgYFRpbWVzKClgKSwgd2lsbCByZXR1
cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAyMDAgdGhlIHNlY29uZCB0aW1lLCBhbmQgMzAwIGZyb20g
dGhlIHRoaXJkIHRpbWUgb24uCi0KLU9mIGNvdXJzZSwgaWYgeW91IGV4cGxpY2l0bHkgd3JpdGUg
YSBgVGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgbm90IHRyeSB0byBpbmZlciB0aGUgY2FyZGlu
YWxpdHkgaXRzZWxmLiBXaGF0IGlmIHRoZSBudW1iZXIgeW91IHNwZWNpZmllZCBpcyBsYXJnZXIg
dGhhbiB0aGVyZSBhcmUgYFdpbGxPbmNlKClgIGNsYXVzZXM/IFdlbGwsIGFmdGVyIGFsbCBgV2ls
bE9uY2UoKWBzIGFyZSB1c2VkIHVwLCBHb29nbGUgTW9jayB3aWxsIGRvIHRoZSBfZGVmYXVsdF8g
YWN0aW9uIGZvciB0aGUgZnVuY3Rpb24gZXZlcnkgdGltZSAodW5sZXNzLCBvZiBjb3Vyc2UsIHlv
dSBoYXZlIGEgYFdpbGxSZXBlYXRlZGx5KClgLikuCi0KLVdoYXQgY2FuIHdlIGRvIGluc2lkZSBg
V2lsbE9uY2UoKWAgYmVzaWRlcyBgUmV0dXJuKClgPyBZb3UgY2FuIHJldHVybiBhIHJlZmVyZW5j
ZSB1c2luZyBgUmV0dXJuUmVmKHZhcmlhYmxlKWAsIG9yIGludm9rZSBhIHByZS1kZWZpbmVkIGZ1
bmN0aW9uLCBhbW9uZyBbb3RoZXJzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9j
ay93aWtpL1YxXzZfQ2hlYXRTaGVldCNBY3Rpb25zKS4KLQotKipJbXBvcnRhbnQgbm90ZToqKiBU
aGUgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGFjdGlvbiBjbGF1c2Ug
b25seSBvbmNlLCBldmVuIHRob3VnaCB0aGUgYWN0aW9uIG1heSBiZSBwZXJmb3JtZWQgbWFueSB0
aW1lcy4gVGhlcmVmb3JlIHlvdSBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgc2lkZSBlZmZlY3RzLiBU
aGUgZm9sbG93aW5nIG1heSBub3QgZG8gd2hhdCB5b3Ugd2FudDoKLQotYGBgCi1pbnQgbiA9IDEw
MDsKLUVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotLlRpbWVzKDQpCi0uV2lsbFJlcGVhdGVk
bHkoUmV0dXJuKG4rKykpOwotYGBgCi0KLUluc3RlYWQgb2YgcmV0dXJuaW5nIDEwMCwgMTAxLCAx
MDIsIC4uLiwgY29uc2VjdXRpdmVseSwgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJl
dHVybiAxMDAgYXMgYG4rK2AgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gU2ltaWxhcmx5LCBgUmV0
dXJuKG5ldyBGb28pYCB3aWxsIGNyZWF0ZSBhIG5ldyBgRm9vYCBvYmplY3Qgd2hlbiB0aGUgYEVY
UEVDVF9DQUxMKClgIGlzIGV4ZWN1dGVkLCBhbmQgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRl
ciBldmVyeSB0aW1lLiBJZiB5b3Ugd2FudCB0aGUgc2lkZSBlZmZlY3QgdG8gaGFwcGVuIGV2ZXJ5
IHRpbWUsIHlvdSBuZWVkIHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24sIHdoaWNoIHdlJ2xsIHRl
YWNoIGluIHRoZSBbQ29va0Jvb2tdKFYxXzZfQ29va0Jvb2subWQpLgotCi1UaW1lIGZvciBhbm90
aGVyIHF1aXohIFdoYXQgZG8geW91IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkK
LS5UaW1lcyg0KQotLldpbGxPbmNlKFJldHVybigxMDApKTsKLWBgYAotCi1PYnZpb3VzbHkgYHR1
cnRsZS5HZXRZKClgIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQgaWYg
eW91IHRoaW5rIGl0IHdpbGwgcmV0dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEgUmVt
ZW1iZXIgdGhhdCBvbmUgYFdpbGxPbmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVhY2gg
dGltZSB0aGUgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdpbGwg
YmUgdGFrZW4gYWZ0ZXJ3YXJkcy4gU28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0bGUu
R2V0WSgpYCB3aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAwIGZy
b20gdGhlIHNlY29uZCB0aW1lIG9uKiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0IGFj
dGlvbiBmb3IgYGludGAgZnVuY3Rpb25zLgotCi0jIyBVc2luZyBNdWx0aXBsZSBFeHBlY3RhdGlv
bnMgIyMKLVNvIGZhciB3ZSd2ZSBvbmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZlIGEg
c2luZ2xlIGV4cGVjdGF0aW9uLiBNb3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0byBz
cGVjaWZ5IGV4cGVjdGF0aW9ucyBvbiBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1heSBi
ZSBmcm9tIG11bHRpcGxlIG1vY2sgb2JqZWN0cy4KLQotQnkgZGVmYXVsdCwgd2hlbiBhIG1vY2sg
bWV0aG9kIGlzIGludm9rZWQsIEdvb2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3RhdGlv
bnMgaW4gdGhlICoqcmV2ZXJzZSBvcmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9wIHdo
ZW4gYW4gYWN0aXZlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlzIGZv
dW5kICh5b3UgY2FuIHRoaW5rIG9mIGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRlciBv
bmVzLiIpLiBJZiB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1vcmUg
Y2FsbHMsIHlvdSB3aWxsIGdldCBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBIZXJl
J3MgYW4gZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4uCi1FWFBFQ1RfQ0FM
TCh0dXJ0bGUsIEZvcndhcmQoXykpOyAgLy8gIzEKLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2Fy
ZCgxMCkpICAvLyAjMgotICAgIC5UaW1lcygyKTsKLWBgYAotCi1JZiBgRm9yd2FyZCgxMClgIGlz
IGNhbGxlZCB0aHJlZSB0aW1lcyBpbiBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBiZSBh
biBlcnJvciwgYXMgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVlbiBz
YXR1cmF0ZWQuIElmLCBob3dldmVyLCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlzIHJl
cGxhY2VkIGJ5IGBGb3J3YXJkKDIwKWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAjMSB3
aWxsIGJlIHRoZSBtYXRjaGluZyBleHBlY3RhdGlvbi4KLQotKipTaWRlIG5vdGU6KiogV2h5IGRv
ZXMgR29vZ2xlIE1vY2sgc2VhcmNoIGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIg
b2YgdGhlIGV4cGVjdGF0aW9ucz8gVGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEgdXNl
ciB0byBzZXQgdXAgdGhlIGRlZmF1bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3QncyBj
b25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVuIGN1
c3RvbWl6ZSB0aGUgbW9jayBieSB3cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGlu
IHRoZSB0ZXN0IGJvZHkuIFNvLCBpZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRoZSBz
YW1lIG1ldGhvZCwgeW91IHdhbnQgdG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmljIG1h
dGNoZXJzICoqYWZ0ZXIqKiB0aGUgb3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUgd291
bGQgYmUgc2hhZG93ZWQgYnkgdGhlIG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRlciBp
dC4KLQotIyMgT3JkZXJlZCB2cyBVbm9yZGVyZWQgQ2FsbHMgIyMKLUJ5IGRlZmF1bHQsIGFuIGV4
cGVjdGF0aW9uIGNhbiBtYXRjaCBhIGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBlY3Rh
dGlvbiBoYXNuJ3QgYmVlbiBzYXRpc2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMgZG9u
J3QgaGF2ZSB0byBvY2N1ciBpbiB0aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3BlY2lm
aWVkLgotCi1Tb21ldGltZXMsIHlvdSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzIHRv
IG9jY3VyIGluIGEgc3RyaWN0IG9yZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBpcyBl
YXN5OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KLVRFU1QoRm9vVGVz
dCwgRHJhd3NMaW5lU2VnbWVudCkgewotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7
Ci0KLSAgICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSk7Ci0gICAgRVhQRUNUX0NBTEwo
dHVydGxlLCBGb3J3YXJkKDEwMCkpOwotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAoKSk7
Ci0gIH0KLSAgRm9vKCk7Ci19Ci1gYGAKLQotQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5cGUg
YEluU2VxdWVuY2VgLCBhbGwgZXhwZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGludG8g
YSBfc2VxdWVuY2VfIGFuZCBoYXZlIHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3ZSBh
cmUganVzdCByZWx5aW5nIG9uIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0aGlz
IG9iamVjdCB0byBkbyB0aGUgYWN0dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJlbGV2
YW50LgotCi1JbiB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRoZSB0
aHJlZSBleHBlY3RlZCBmdW5jdGlvbnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEgY2Fs
bCBpcyBtYWRlIG91dC1vZi1vcmRlciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotKFdoYXQgaWYg
eW91IGNhcmUgYWJvdXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxzLCBi
dXQgbm90IGFsbCBvZiB0aGVtPyBDYW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRpYWwg
b3JkZXI/IFRoZSBhbnN3ZXIgaXMgLi4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRoZSBk
ZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0Nvb2tCb29rXShWMV82X0Nvb2tCb29rLm1kKS4p
Ci0KLSMjIEFsbCBFeHBlY3RhdGlvbnMgQXJlIFN0aWNreSAoVW5sZXNzIFNhaWQgT3RoZXJ3aXNl
KSAjIwotTm93IGxldCdzIGRvIGEgcXVpY2sgcXVpeiB0byBzZWUgaG93IHdlbGwgeW91IGNhbiB1
c2UgdGhpcyBtb2NrIHN0dWZmIGFscmVhZHkuIEhvdyB3b3VsZCB5b3UgdGVzdCB0aGF0IHRoZSB0
dXJ0bGUgaXMgYXNrZWQgdG8gZ28gdG8gdGhlIG9yaWdpbiBfZXhhY3RseSB0d2ljZV8gKHlvdSB3
YW50IHRvIGlnbm9yZSBhbnkgb3RoZXIgaW5zdHJ1Y3Rpb25zIGl0IHJlY2VpdmVzKT8KLQotQWZ0
ZXIgeW91J3ZlIGNvbWUgdXAgd2l0aCB5b3VyIGFuc3dlciwgdGFrZSBhIGxvb2sgYXQgb3VycyBh
bmQgY29tcGFyZSBub3RlcyAoc29sdmUgaXQgeW91cnNlbGYgZmlyc3QgLSBkb24ndCBjaGVhdCEp
OgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsuLi4KLUVYUEVDVF9DQUxMKHR1cnRsZSwgR29U
byhfLCBfKSkgIC8vICMxCi0gICAgLlRpbWVzKEFueU51bWJlcigpKTsKLUVYUEVDVF9DQUxMKHR1
cnRsZSwgR29UbygwLCAwKSkgIC8vICMyCi0gICAgLlRpbWVzKDIpOwotYGBgCi0KLVN1cHBvc2Ug
YHR1cnRsZS5Hb1RvKDAsIDApYCBpcyBjYWxsZWQgdGhyZWUgdGltZXMuIEluIHRoZSB0aGlyZCB0
aW1lLCBHb29nbGUgTW9jayB3aWxsIHNlZSB0aGF0IHRoZSBhcmd1bWVudHMgbWF0Y2ggZXhwZWN0
YXRpb24gIzIgKHJlbWVtYmVyIHRoYXQgd2UgYWx3YXlzIHBpY2sgdGhlIGxhc3QgbWF0Y2hpbmcg
ZXhwZWN0YXRpb24pLiBOb3csIHNpbmNlIHdlIHNhaWQgdGhhdCB0aGVyZSBzaG91bGQgYmUgb25s
eSB0d28gc3VjaCBjYWxscywgR29vZ2xlIE1vY2sgd2lsbCByZXBvcnQgYW4gZXJyb3IgaW1tZWRp
YXRlbHkuIFRoaXMgaXMgYmFzaWNhbGx5IHdoYXQgd2UndmUgdG9sZCB5b3UgaW4gdGhlICJVc2lu
ZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMiIHNlY3Rpb24gYWJvdmUuCi0KLVRoaXMgZXhhbXBsZSBz
aG93cyB0aGF0ICoqZXhwZWN0YXRpb25zIGluIEdvb2dsZSBNb2NrIGFyZSAic3RpY2t5IiBieSBk
ZWZhdWx0KiosIGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgcmVtYWluIGFjdGl2ZSBldmVuIGFmdGVy
IHdlIGhhdmUgcmVhY2hlZCB0aGVpciBpbnZvY2F0aW9uIHVwcGVyIGJvdW5kcy4gVGhpcyBpcyBh
biBpbXBvcnRhbnQgcnVsZSB0byByZW1lbWJlciwgYXMgaXQgYWZmZWN0cyB0aGUgbWVhbmluZyBv
ZiB0aGUgc3BlYywgYW5kIGlzICoqZGlmZmVyZW50KiogdG8gaG93IGl0J3MgZG9uZSBpbiBtYW55
IG90aGVyIG1vY2tpbmcgZnJhbWV3b3JrcyAoV2h5J2Qgd2UgZG8gdGhhdD8gQmVjYXVzZSB3ZSB0
aGluayBvdXIgcnVsZSBtYWtlcyB0aGUgY29tbW9uIGNhc2VzIGVhc2llciB0byBleHByZXNzIGFu
ZCB1bmRlcnN0YW5kLikuCi0KLVNpbXBsZT8gTGV0J3Mgc2VlIGlmIHlvdSd2ZSByZWFsbHkgdW5k
ZXJzdG9vZCBpdDogd2hhdCBkb2VzIHRoZSBmb2xsb3dpbmcgY29kZSBzYXk/Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0uLi4KLWZvciAoaW50IGkgPSBuOyBpID4gMDsgaS0tKSB7
Ci0gIEVYUEVDVF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigx
MCppKSk7Ci19Ci1gYGAKLQotSWYgeW91IHRoaW5rIGl0IHNheXMgdGhhdCBgdHVydGxlLkdldFgo
KWAgd2lsbCBiZSBjYWxsZWQgYG5gIHRpbWVzIGFuZCB3aWxsIHJldHVybiAxMCwgMjAsIDMwLCAu
Li4sIGNvbnNlY3V0aXZlbHksIHRoaW5rIHR3aWNlISBUaGUgcHJvYmxlbSBpcyB0aGF0LCBhcyB3
ZSBzYWlkLCBleHBlY3RhdGlvbnMgYXJlIHN0aWNreS4gU28sIHRoZSBzZWNvbmQgdGltZSBgdHVy
dGxlLkdldFgoKWAgaXMgY2FsbGVkLCB0aGUgbGFzdCAobGF0ZXN0KSBgRVhQRUNUX0NBTEwoKWAg
c3RhdGVtZW50IHdpbGwgbWF0Y2gsIGFuZCB3aWxsIGltbWVkaWF0ZWx5IGxlYWQgdG8gYW4gInVw
cGVyIGJvdW5kIGV4Y2VlZGVkIiBlcnJvciAtIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBub3QgdmVy
eSB1c2VmdWwhCi0KLU9uZSBjb3JyZWN0IHdheSBvZiBzYXlpbmcgdGhhdCBgdHVydGxlLkdldFgo
KWAgd2lsbCByZXR1cm4gMTAsIDIwLCAzMCwgLi4uLCBpcyB0byBleHBsaWNpdGx5IHNheSB0aGF0
IHRoZSBleHBlY3RhdGlvbnMgYXJlIF9ub3RfIHN0aWNreS4gSW4gb3RoZXIgd29yZHMsIHRoZXkg
c2hvdWxkIF9yZXRpcmVfIGFzIHNvb24gYXMgdGhleSBhcmUgc2F0dXJhdGVkOgotCi1gYGAKLXVz
aW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi1mb3IgKGludCBpID0gbjsgaSA+IDA7IGktLSkg
ewotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEw
KmkpKQotICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotQW5kLCB0aGVyZSdz
IGEgYmV0dGVyIHdheSB0byBkbyBpdDogaW4gdGhpcyBjYXNlLCB3ZSBleHBlY3QgdGhlIGNhbGxz
IHRvIG9jY3VyIGluIGEgc3BlY2lmaWMgb3JkZXIsIGFuZCB3ZSBsaW5lIHVwIHRoZSBhY3Rpb25z
IHRvIG1hdGNoIHRoZSBvcmRlci4gU2luY2UgdGhlIG9yZGVyIGlzIGltcG9ydGFudCBoZXJlLCB3
ZSBzaG91bGQgbWFrZSBpdCBleHBsaWNpdCB1c2luZyBhIHNlcXVlbmNlOgotCi1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi17
Ci0gIEluU2VxdWVuY2UgczsKLQotICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKLSAg
ICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigx
MCppKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgfQotfQotYGBgCi0KLUJ5
IHRoZSB3YXksIHRoZSBvdGhlciBzaXR1YXRpb24gd2hlcmUgYW4gZXhwZWN0YXRpb24gbWF5IF9u
b3RfIGJlIHN0aWNreSBpcyB3aGVuIGl0J3MgaW4gYSBzZXF1ZW5jZSAtIGFzIHNvb24gYXMgYW5v
dGhlciBleHBlY3RhdGlvbiB0aGF0IGNvbWVzIGFmdGVyIGl0IGluIHRoZSBzZXF1ZW5jZSBoYXMg
YmVlbiB1c2VkLCBpdCBhdXRvbWF0aWNhbGx5IHJldGlyZXMgKGFuZCB3aWxsIG5ldmVyIGJlIHVz
ZWQgdG8gbWF0Y2ggYW55IGNhbGwpLgotCi0jIyBVbmludGVyZXN0aW5nIENhbGxzICMjCi1BIG1v
Y2sgb2JqZWN0IG1heSBoYXZlIG1hbnkgbWV0aG9kcywgYW5kIG5vdCBhbGwgb2YgdGhlbSBhcmUg
dGhhdCBpbnRlcmVzdGluZy4gRm9yIGV4YW1wbGUsIGluIHNvbWUgdGVzdHMgd2UgbWF5IG5vdCBj
YXJlIGFib3V0IGhvdyBtYW55IHRpbWVzIGBHZXRYKClgIGFuZCBgR2V0WSgpYCBnZXQgY2FsbGVk
LgotCi1JbiBHb29nbGUgTW9jaywgaWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBhIG1ldGhv
ZCwganVzdCBkb24ndCBzYXkgYW55dGhpbmcgYWJvdXQgaXQuIElmIGEgY2FsbCB0byB0aGlzIG1l
dGhvZCBvY2N1cnMsIHlvdSdsbCBzZWUgYSB3YXJuaW5nIGluIHRoZSB0ZXN0IG91dHB1dCwgYnV0
IGl0IHdvbid0IGJlIGEgZmFpbHVyZS4KLQotIyBXaGF0IE5vdz8gIwotQ29uZ3JhdHVsYXRpb25z
ISBZb3UndmUgbGVhcm5lZCBlbm91Z2ggYWJvdXQgR29vZ2xlIE1vY2sgdG8gc3RhcnQgdXNpbmcg
aXQuIE5vdywgeW91IG1pZ2h0IHdhbnQgdG8gam9pbiB0aGUgW2dvb2dsZW1vY2tdKGh0dHA6Ly9n
cm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2NrKSBkaXNjdXNzaW9uIGdyb3VwIGFuZCBh
Y3R1YWxseSB3cml0ZSBzb21lIHRlc3RzIHVzaW5nIEdvb2dsZSBNb2NrIC0gaXQgd2lsbCBiZSBm
dW4uIEhleSwgaXQgbWF5IGV2ZW4gYmUgYWRkaWN0aXZlIC0geW91J3ZlIGJlZW4gd2FybmVkLgot
Ci1UaGVuLCBpZiB5b3UgZmVlbCBsaWtlIGluY3JlYXNpbmcgeW91ciBtb2NrIHF1b3RpZW50LCB5
b3Ugc2hvdWxkIG1vdmUgb24gdG8gdGhlIFtDb29rQm9va10oVjFfNl9Db29rQm9vay5tZCkuIFlv
dSBjYW4gbGVhcm4gbWFueSBhZHZhbmNlZCBmZWF0dXJlcyBvZiBHb29nbGUgTW9jayB0aGVyZSAt
LSBhbmQgYWR2YW5jZSB5b3VyIGxldmVsIG9mIGVuam95bWVudCBhbmQgdGVzdGluZyBibGlzcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2Nz
L3YxXzYvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82
L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjc0NzE1ZDJlMzdmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV82
L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5tZAorKysgL2Rldi9udWxsCkBAIC0xLDYyOCArMCww
IEBACi0KLQotUGxlYXNlIHNlbmQgeW91ciBxdWVzdGlvbnMgdG8gdGhlCi1bZ29vZ2xlbW9ja10o
aHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGRpc2N1c3Npb24KLWdy
b3VwLiBJZiB5b3UgbmVlZCBoZWxwIHdpdGggY29tcGlsZXIgZXJyb3JzLCBtYWtlIHN1cmUgeW91
IGhhdmUKLXRyaWVkIFtHb29nbGUgTW9jayBEb2N0b3JdKCNIb3dfYW1fSV9zdXBwb3NlZF90b19t
YWtlX3NlbnNlX29mX3RoZXNlX2hvcnJpYmxlX3RlbXBsYXRlX2Vycm9yLm1kKSBmaXJzdC4KLQot
IyMgV2hlbiBJIGNhbGwgYSBtZXRob2Qgb24gbXkgbW9jayBvYmplY3QsIHRoZSBtZXRob2QgZm9y
IHRoZSByZWFsIG9iamVjdCBpcyBpbnZva2VkIGluc3RlYWQuICBXaGF0J3MgdGhlIHByb2JsZW0/
ICMjCi0KLUluIG9yZGVyIGZvciBhIG1ldGhvZCB0byBiZSBtb2NrZWQsIGl0IG11c3QgYmUgX3Zp
cnR1YWxfLCB1bmxlc3MgeW91IHVzZSB0aGUgW2hpZ2gtcGVyZiBkZXBlbmRlbmN5IGluamVjdGlv
biB0ZWNobmlxdWVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFf
Nl9Db29rQm9vayNNb2NraW5nX05vbnZpcnR1YWxfTWV0aG9kcykuCi0KLSMjIEkgd3JvdGUgc29t
ZSBtYXRjaGVycy4gIEFmdGVyIEkgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUg
TW9jaywgdGhleSBubyBsb25nZXIgY29tcGlsZS4gIFdoYXQncyBnb2luZyBvbj8gIyMKLQotQWZ0
ZXIgdmVyc2lvbiAxLjQuMCBvZiBHb29nbGUgTW9jayB3YXMgcmVsZWFzZWQsIHdlIGhhZCBhbiBp
ZGVhIG9uIGhvdwotdG8gbWFrZSBpdCBlYXNpZXIgdG8gd3JpdGUgbWF0Y2hlcnMgdGhhdCBjYW4g
Z2VuZXJhdGUgaW5mb3JtYXRpdmUKLW1lc3NhZ2VzIGVmZmljaWVudGx5LiAgV2UgZXhwZXJpbWVu
dGVkIHdpdGggdGhpcyBpZGVhIGFuZCBsaWtlZCB3aGF0Ci13ZSBzYXcuICBUaGVyZWZvcmUgd2Ug
ZGVjaWRlZCB0byBpbXBsZW1lbnQgaXQuCi0KLVVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhh
dCBpZiB5b3UgaGF2ZSBkZWZpbmVkIHlvdXIgb3duIG1hdGNoZXJzCi1ieSBpbXBsZW1lbnRpbmcg
YE1hdGNoZXJJbnRlcmZhY2VgIG9yIHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgLAot
eW91ciBkZWZpbml0aW9ucyB3aWxsIG5vIGxvbmdlciBjb21waWxlLiAgTWF0Y2hlcnMgZGVmaW5l
ZCB1c2luZyB0aGUKLWBNQVRDSEVSKmAgZmFtaWx5IG9mIG1hY3JvcyBhcmUgbm90IGFmZmVjdGVk
LgotCi1Tb3JyeSBmb3IgdGhlIGhhc3NsZSBpZiB5b3VyIG1hdGNoZXJzIGFyZSBhZmZlY3RlZC4g
IFdlIGJlbGlldmUgaXQncwotaW4gZXZlcnlvbmUncyBsb25nLXRlcm0gaW50ZXJlc3QgdG8gbWFr
ZSB0aGlzIGNoYW5nZSBzb29uZXIgdGhhbgotbGF0ZXIuICBGb3J0dW5hdGVseSwgaXQncyB1c3Vh
bGx5IG5vdCBoYXJkIHRvIG1pZ3JhdGUgYW4gZXhpc3RpbmcKLW1hdGNoZXIgdG8gdGhlIG5ldyBB
UEkuICBIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBkbzoKLQotSWYgeW91IHdyb3RlIHlvdXIgbWF0
Y2hlciBsaWtlIHRoaXM6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vz
bid0IHdvcmsgd2l0aCB0aGUgbGF0ZXN0Ci0vLyBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGlu
Zzo6TWF0Y2hlckludGVyZmFjZTsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVi
bGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVh
bCBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVl
IGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKLSAgfQot
ICAuLi4KLX07Ci1gYGAKLQoteW91J2xsIG5lZWQgdG8gY2hhbmdlIGl0IHRvOgotYGBgCi0vLyBO
ZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBN
b2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0aW5n
OjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeVdvbmRlcmZ1bE1hdGNoZXIgOiBw
dWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0
dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRG
b28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0oaS5lLiByZW5hbWUgYE1hdGNoZXMoKWAg
dG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQgZ2l2ZSBpdCBhIHNlY29uZAotYXJndW1lbnQgb2Yg
dHlwZSBgTWF0Y2hSZXN1bHRMaXN0ZW5lcipgLikKLQotSWYgeW91IHdlcmUgYWxzbyB1c2luZyBg
RXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8gaW1wcm92ZSB0aGUgbWF0Y2hlcgotbWVzc2FnZToK
LWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3Qgd29yayB3aXRoIHRo
ZSBsYXN0ZXN0Ci0vLyBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRl
cmZhY2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoZXMo
TXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNo
ZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEZvbygpID4gNTsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBFeHBsYWluTWF0Y2hSZXN1bHRUbyhNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAvLyBQcmlu
dHMgc29tZSBoZWxwZnVsIGluZm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKLSAgICAvLyBhIHVzZXIg
dW5kZXJzdGFuZCB3aHkgdmFsdWUgbWF0Y2hlcyAob3IgZG9lc24ndCBtYXRjaCkuCi0gICAgKm9z
IDw8ICJ0aGUgRm9vIHByb3BlcnR5IGlzICIgPDwgdmFsdWUuR2V0Rm9vKCk7Ci0gIH0KLSAgLi4u
Ci19OwotYGBgCi0KLXlvdSBzaG91bGQgbW92ZSB0aGUgbG9naWMgb2YgYEV4cGxhaW5NYXRjaFJl
c3VsdFRvKClgIGludG8KLWBNYXRjaEFuZEV4cGxhaW4oKWAsIHVzaW5nIHRoZSBgTWF0Y2hSZXN1
bHRMaXN0ZW5lcmAgYXJndW1lbnQgd2hlcmUKLXRoZSBgOjpzdGQ6Om9zdHJlYW1gIHdhcyB1c2Vk
OgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0
ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlOwotdXNp
bmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeVdvbmRlcmZ1
bE1hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxNeVR5cGU+IHsKLSBwdWJsaWM6Ci0g
IC4uLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKE15VHlwZSB2YWx1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikg
Y29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0
ZW5lciA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEZvbygpOwotICAgIHJl
dHVybiB2YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLUlmIHlvdXIg
bWF0Y2hlciBpcyBkZWZpbmVkIHVzaW5nIGBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKClgOgotYGBg
Ci0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxh
dGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01h
dGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBi
b29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAg
Li4uCi19OwotLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkgLi4u
Ci1gYGAKLQoteW91IHNob3VsZCByZW5hbWUgdGhlIGBNYXRjaGVzKClgIG1ldGhvZCB0byBgTWF0
Y2hBbmRFeHBsYWluKClgIGFuZAotYWRkIGEgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYCBhcmd1bWVu
dCAodGhlIHNhbWUgYXMgd2hhdCB5b3UgbmVlZCB0byBkbwotZm9yIG1hdGNoZXJzIGRlZmluZWQg
YnkgaW1wbGVtZW50aW5nIGBNYXRjaGVySW50ZXJmYWNlYCk6Ci1gYGAKLS8vIE5ldyBtYXRjaGVy
IGRlZmluaXRpb24gdGhhdCB3b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1h
dGNoUmVzdWx0TGlzdGVuZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6
Ci0gIC4uLgotICBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJuIHZhbHVlLkdldEJh
cigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19OwotLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlH
cmVhdE1hdGNoZXIoKSkgLi4uCi1gYGAKLQotSWYgeW91ciBwb2x5bW9ycGhpYyBtYXRjaGVyIHVz
ZXMgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIGZvciBiZXR0ZXIKLWZhaWx1cmUgbWVzc2FnZXM6
Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0
aGUgbGF0ZXN0Ci0vLyBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWFrZVBvbHltb3Jw
aGljTWF0Y2hlcjsKLS4uLgotY2xhc3MgTXlHcmVhdE1hdGNoZXIgewotIHB1YmxpYzoKLSAgLi4u
Ci0gIGJvb2wgTWF0Y2hlcyhNeVR5cGUgdmFsdWUpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdmFsdWUgbWF0Y2hlcy4KLSAgICByZXR1cm4gdmFsdWUuR2V0QmFyKCkgPCA0MjsKLSAg
fQotICAuLi4KLX07Ci12b2lkIEV4cGxhaW5NYXRjaFJlc3VsdFRvKGNvbnN0IE15R3JlYXRNYXRj
aGVyJiBtYXRjaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBNeVR5cGUgdmFsdWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAvLyBQcmlu
dHMgc29tZSBoZWxwZnVsIGluZm9ybWF0aW9uIHRvIG9zIHRvIGhlbHAKLSAgLy8gYSB1c2VyIHVu
ZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9yIGRvZXNuJ3QgbWF0Y2gpLgotICAqb3MgPDwg
InRoZSBCYXIgcHJvcGVydHkgaXMgIiA8PCB2YWx1ZS5HZXRCYXIoKTsKLX0KLS4uLiBNYWtlUG9s
eW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLXlvdSdsbCBuZWVk
IHRvIG1vdmUgdGhlIGxvZ2ljIGluc2lkZSBgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKWAgdG8KLWBN
YXRjaEFuZEV4cGxhaW4oKWA6Ci1gYGAKLS8vIE5ldyBtYXRjaGVyIGRlZmluaXRpb24gdGhhdCB3
b3JrcyB3aXRoIHRoZSBsYXRlc3QgR29vZ2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1ha2VQ
b2x5bW9ycGhpY01hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7
Ci0uLi4KLWNsYXNzIE15R3JlYXRNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1h
dGNoQW5kRXhwbGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhbHVlIG1hdGNoZXMuCi0gICAgKmxpc3RlbmVyIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIg
PDwgdmFsdWUuR2V0QmFyKCk7Ci0gICAgcmV0dXJuIHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0K
LSAgLi4uCi19OwotLi4uIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoTXlHcmVhdE1hdGNoZXIoKSkg
Li4uCi1gYGAKLQotRm9yIG1vcmUgaW5mb3JtYXRpb24sIHlvdSBjYW4gcmVhZCB0aGVzZQotW3R3
b10oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9WMV82X0Nvb2tCb29r
I1dyaXRpbmdfTmV3X01vbm9tb3JwaGljX01hdGNoZXJzKQotW3JlY2lwZXNdKGh0dHA6Ly9jb2Rl
Lmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNXcml0aW5nX05ld19Q
b2x5bW9ycGhpY19NYXRjaGVycykKLWZyb20gdGhlIGNvb2tib29rLiAgQXMgYWx3YXlzLCB5b3UK
LWFyZSB3ZWxjb21lIHRvIHBvc3QgcXVlc3Rpb25zIG9uIGBnb29nbGVtb2NrQGdvb2dsZWdyb3Vw
cy5jb21gIGlmIHlvdQotbmVlZCBhbnkgaGVscC4KLQotIyMgV2hlbiB1c2luZyBHb29nbGUgTW9j
aywgZG8gSSBoYXZlIHRvIHVzZSBHb29nbGUgVGVzdCBhcyB0aGUgdGVzdGluZyBmcmFtZXdvcms/
ICBJIGhhdmUgbXkgZmF2b3JpdGUgdGVzdGluZyBmcmFtZXdvcmsgYW5kIGRvbid0IHdhbnQgdG8g
c3dpdGNoLiAjIwotCi1Hb29nbGUgTW9jayB3b3JrcyBvdXQgb2YgdGhlIGJveCB3aXRoIEdvb2ds
ZSBUZXN0LiAgSG93ZXZlciwgaXQncyBlYXN5Ci10byBjb25maWd1cmUgaXQgdG8gd29yayB3aXRo
IGFueSB0ZXN0aW5nIGZyYW1ld29yayBvZiB5b3VyIGNob2ljZS4KLVtIZXJlXShodHRwOi8vY29k
ZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfRm9yRHVtbWllcyNVc2luZ19Hb29n
bGVfTW9ja193aXRoX0FueV9UZXN0aW5nX0ZyYW1ld29yaykgaXMgaG93LgotCi0jIyBIb3cgYW0g
SSBzdXBwb3NlZCB0byBtYWtlIHNlbnNlIG9mIHRoZXNlIGhvcnJpYmxlIHRlbXBsYXRlIGVycm9y
cz8gIyMKLQotSWYgeW91IGFyZSBjb25mdXNlZCBieSB0aGUgY29tcGlsZXIgZXJyb3JzIGdjYyB0
aHJldyBhdCB5b3UsCi10cnkgY29uc3VsdGluZyB0aGUgX0dvb2dsZSBNb2NrIERvY3Rvcl8gdG9v
bCBmaXJzdC4gIFdoYXQgaXQgZG9lcyBpcyB0bwotc2NhbiBzdGRpbiBmb3IgZ2NjIGVycm9yIG1l
c3NhZ2VzLCBhbmQgc3BpdCBvdXQgZGlhZ25vc2VzIG9uIHRoZQotcHJvYmxlbXMgKHdlIGNhbGwg
dGhlbSBkaXNlYXNlcykgeW91ciBjb2RlIGhhcy4KLQotVG8gImluc3RhbGwiLCBydW4gY29tbWFu
ZDoKLWBgYAotYWxpYXMgZ21kPSc8cGF0aCB0byBnb29nbGVtb2NrPi9zY3JpcHRzL2dtb2NrX2Rv
Y3Rvci5weScKLWBgYAotCi1UbyB1c2UgaXQsIGRvOgotYGBgCi08eW91ci1mYXZvcml0ZS1idWls
ZC1jb21tYW5kPiA8eW91ci10ZXN0PiAyPiYxIHwgZ21kCi1gYGAKLQotRm9yIGV4YW1wbGU6Ci1g
YGAKLW1ha2UgbXlfdGVzdCAyPiYxIHwgZ21kCi1gYGAKLQotT3IgeW91IGNhbiBydW4gYGdtZGAg
YW5kIGNvcHktbi1wYXN0ZSBnY2MncyBlcnJvciBtZXNzYWdlcyB0byBpdC4KLQotIyMgQ2FuIEkg
bW9jayBhIHZhcmlhZGljIGZ1bmN0aW9uPyAjIwotCi1Zb3UgY2Fubm90IG1vY2sgYSB2YXJpYWRp
YyBmdW5jdGlvbiAoaS5lLiBhIGZ1bmN0aW9uIHRha2luZyBlbGxpcHNpcwotKGAuLi5gKSBhcmd1
bWVudHMpIGRpcmVjdGx5IGluIEdvb2dsZSBNb2NrLgotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IGlu
IGdlbmVyYWwsIHRoZXJlIGlzIF9ubyB3YXlfIGZvciBhIG1vY2sgb2JqZWN0IHRvCi1rbm93IGhv
dyBtYW55IGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB2YXJpYWRpYyBtZXRob2QsIGFuZCB3
aGF0Ci10aGUgYXJndW1lbnRzJyB0eXBlcyBhcmUuICBPbmx5IHRoZSBfYXV0aG9yIG9mIHRoZSBi
YXNlIGNsYXNzXyBrbm93cwotdGhlIHByb3RvY29sLCBhbmQgd2UgY2Fubm90IGxvb2sgaW50byBo
aXMgaGVhZC4KLQotVGhlcmVmb3JlLCB0byBtb2NrIHN1Y2ggYSBmdW5jdGlvbiwgdGhlIF91c2Vy
XyBtdXN0IHRlYWNoIHRoZSBtb2NrCi1vYmplY3QgaG93IHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJl
ciBvZiBhcmd1bWVudHMgYW5kIHRoZWlyIHR5cGVzLiAgT25lCi13YXkgdG8gZG8gaXQgaXMgdG8g
cHJvdmlkZSBvdmVybG9hZGVkIHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbi4KLQotRWxsaXBzaXMg
YXJndW1lbnRzIGFyZSBpbmhlcml0ZWQgZnJvbSBDIGFuZCBub3QgcmVhbGx5IGEgQysrIGZlYXR1
cmUuCi1UaGV5IGFyZSB1bnNhZmUgdG8gdXNlIGFuZCBkb24ndCB3b3JrIHdpdGggYXJndW1lbnRz
IHRoYXQgaGF2ZQotY29uc3RydWN0b3JzIG9yIGRlc3RydWN0b3JzLiAgVGhlcmVmb3JlIHdlIHJl
Y29tbWVuZCB0byBhdm9pZCB0aGVtIGluCi1DKysgYXMgbXVjaCBhcyBwb3NzaWJsZS4KLQotIyMg
TVNWQyBnaXZlcyBtZSB3YXJuaW5nIEM0MzAxIG9yIEM0MzczIHdoZW4gSSBkZWZpbmUgYSBtb2Nr
IG1ldGhvZCB3aXRoIGEgY29uc3QgcGFyYW1ldGVyLiAgV2h5PyAjIwotCi1JZiB5b3UgY29tcGls
ZSB0aGlzIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrIDIwMDUgU1AxOgotYGBgCi1jbGFzcyBG
b28gewotICAuLi4KLSAgdmlydHVhbCB2b2lkIEJhcihjb25zdCBpbnQgaSkgPSAwOwotfTsKLQot
Y2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgTU9DS19NRVRIT0QxKEJhciwg
dm9pZChjb25zdCBpbnQgaSkpOwotfTsKLWBgYAotWW91IG1heSBnZXQgdGhlIGZvbGxvd2luZyB3
YXJuaW5nOgotYGBgCi13YXJuaW5nIEM0MzAxOiAnTW9ja0Zvbzo6QmFyJzogb3ZlcnJpZGluZyB2
aXJ0dWFsIGZ1bmN0aW9uIG9ubHkgZGlmZmVycyBmcm9tICdGb286OkJhcicgYnkgY29uc3Qvdm9s
YXRpbGUgcXVhbGlmaWVyCi1gYGAKLQotVGhpcyBpcyBhIE1TVkMgYnVnLiAgVGhlIHNhbWUgY29k
ZSBjb21waWxlcyBmaW5lIHdpdGggZ2NjICxmb3IKLWV4YW1wbGUuICBJZiB5b3UgdXNlIFZpc3Vh
bCBDKysgMjAwOCBTUDEsIHlvdSB3b3VsZCBnZXQgdGhlIHdhcm5pbmc6Ci1gYGAKLXdhcm5pbmcg
QzQzNzM6ICdNb2NrRm9vOjpCYXInOiB2aXJ0dWFsIGZ1bmN0aW9uIG92ZXJyaWRlcyAnRm9vOjpC
YXInLCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgY29tcGlsZXIgZGlkIG5vdCBvdmVycmlkZSB3
aGVuIHBhcmFtZXRlcnMgb25seSBkaWZmZXJlZCBieSBjb25zdC92b2xhdGlsZSBxdWFsaWZpZXJz
Ci1gYGAKLQotSW4gQysrLCBpZiB5b3UgX2RlY2xhcmVfIGEgZnVuY3Rpb24gd2l0aCBhIGBjb25z
dGAgcGFyYW1ldGVyLCB0aGUKLWBjb25zdGAgbW9kaWZpZXIgaXMgX2lnbm9yZWRfLiAgVGhlcmVm
b3JlLCB0aGUgYEZvb2AgYmFzZSBjbGFzcyBhYm92ZQotaXMgZXF1aXZhbGVudCB0bzoKLWBgYAot
Y2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIoaW50IGkpID0gMDsgIC8vIGlu
dCBvciBjb25zdCBpbnQ/ICBNYWtlcyBubyBkaWZmZXJlbmNlLgotfTsKLWBgYAotCi1JbiBmYWN0
LCB5b3UgY2FuIF9kZWNsYXJlXyBCYXIoKSB3aXRoIGFuIGBpbnRgIHBhcmFtZXRlciwgYW5kIF9k
ZWZpbmVfCi1pdCB3aXRoIGEgYGNvbnN0IGludGAgcGFyYW1ldGVyLiAgVGhlIGNvbXBpbGVyIHdp
bGwgc3RpbGwgbWF0Y2ggdGhlbQotdXAuCi0KLVNpbmNlIG1ha2luZyBhIHBhcmFtZXRlciBgY29u
c3RgIGlzIG1lYW5pbmdsZXNzIGluIHRoZSBtZXRob2QKLV9kZWNsYXJhdGlvbl8sIHdlIHJlY29t
bWVuZCB0byByZW1vdmUgaXQgaW4gYm90aCBgRm9vYCBhbmQgYE1vY2tGb29gLgotVGhhdCBzaG91
bGQgd29ya2Fyb3VuZCB0aGUgVkMgYnVnLgotCi1Ob3RlIHRoYXQgd2UgYXJlIHRhbGtpbmcgYWJv
dXQgdGhlIF90b3AtbGV2ZWxfIGBjb25zdGAgbW9kaWZpZXIgaGVyZS4KLUlmIHRoZSBmdW5jdGlv
biBwYXJhbWV0ZXIgaXMgcGFzc2VkIGJ5IHBvaW50ZXIgb3IgcmVmZXJlbmNlLCBkZWNsYXJpbmcK
LXRoZSBfcG9pbnRlZV8gb3IgX3JlZmVyZWVfIGFzIGBjb25zdGAgaXMgc3RpbGwgbWVhbmluZ2Z1
bC4gIEZvcgotZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0d28gZGVjbGFyYXRpb25zIGFyZSBfbm90
XyBlcXVpdmFsZW50OgotYGBgCi12b2lkIEJhcihpbnQqIHApOyAgICAgICAgLy8gTmVpdGhlciBw
IG5vciAqcCBpcyBjb25zdC4KLXZvaWQgQmFyKGNvbnN0IGludCogcCk7ICAvLyBwIGlzIG5vdCBj
b25zdCwgYnV0ICpwIGlzLgotYGBgCi0KLSMjIEkgaGF2ZSBhIGh1Z2UgbW9jayBjbGFzcywgYW5k
IE1pY3Jvc29mdCBWaXN1YWwgQysrIHJ1bnMgb3V0IG9mIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBp
dC4gIFdoYXQgY2FuIEkgZG8/ICMjCi0KLVdlJ3ZlIG5vdGljZWQgdGhhdCB3aGVuIHRoZSBgL2Ns
cmAgY29tcGlsZXIgZmxhZyBpcyB1c2VkLCBWaXN1YWwgQysrCi11c2VzIDV+NiB0aW1lcyBhcyBt
dWNoIG1lbW9yeSB3aGVuIGNvbXBpbGluZyBhIG1vY2sgY2xhc3MuICBXZSBzdWdnZXN0Ci10byBh
dm9pZCBgL2NscmAgd2hlbiBjb21waWxpbmcgbmF0aXZlIEMrKyBtb2Nrcy4KLQotIyMgSSBjYW4n
dCBmaWd1cmUgb3V0IHdoeSBHb29nbGUgTW9jayB0aGlua3MgbXkgZXhwZWN0YXRpb25zIGFyZSBu
b3Qgc2F0aXNmaWVkLiAgV2hhdCBzaG91bGQgSSBkbz8gIyMKLQotWW91IG1pZ2h0IHdhbnQgdG8g
cnVuIHlvdXIgdGVzdCB3aXRoCi1gLS1nbW9ja192ZXJib3NlPWluZm9gLiAgVGhpcyBmbGFnIGxl
dHMgR29vZ2xlIE1vY2sgcHJpbnQgYSB0cmFjZQotb2YgZXZlcnkgbW9jayBmdW5jdGlvbiBjYWxs
IGl0IHJlY2VpdmVzLiAgQnkgc3R1ZHlpbmcgdGhlIHRyYWNlLAoteW91J2xsIGdhaW4gaW5zaWdo
dHMgb24gd2h5IHRoZSBleHBlY3RhdGlvbnMgeW91IHNldCBhcmUgbm90IG1ldC4KLQotIyMgSG93
IGNhbiBJIGFzc2VydCB0aGF0IGEgZnVuY3Rpb24gaXMgTkVWRVIgY2FsbGVkPyAjIwotCi1gYGAK
LUVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5UaW1lcygwKTsKLWBgYAotCi0jIyBJIGhh
dmUgYSBmYWlsZWQgdGVzdCB3aGVyZSBHb29nbGUgTW9jayB0ZWxscyBtZSBUV0lDRSB0aGF0IGEg
cGFydGljdWxhciBleHBlY3RhdGlvbiBpcyBub3Qgc2F0aXNmaWVkLiAgSXNuJ3QgdGhpcyByZWR1
bmRhbnQ/ICMjCi0KLVdoZW4gR29vZ2xlIE1vY2sgZGV0ZWN0cyBhIGZhaWx1cmUsIGl0IHByaW50
cyByZWxldmFudCBpbmZvcm1hdGlvbgotKHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cywgdGhl
IHN0YXRlIG9mIHJlbGV2YW50IGV4cGVjdGF0aW9ucywgYW5kCi1ldGMpIHRvIGhlbHAgdGhlIHVz
ZXIgZGVidWcuICBJZiBhbm90aGVyIGZhaWx1cmUgaXMgZGV0ZWN0ZWQsIEdvb2dsZQotTW9jayB3
aWxsIGRvIHRoZSBzYW1lLCBpbmNsdWRpbmcgcHJpbnRpbmcgdGhlIHN0YXRlIG9mIHJlbGV2YW50
Ci1leHBlY3RhdGlvbnMuCi0KLVNvbWV0aW1lcyBhbiBleHBlY3RhdGlvbidzIHN0YXRlIGRpZG4n
dCBjaGFuZ2UgYmV0d2VlbiB0d28gZmFpbHVyZXMsCi1hbmQgeW91J2xsIHNlZSB0aGUgc2FtZSBk
ZXNjcmlwdGlvbiBvZiB0aGUgc3RhdGUgdHdpY2UuICBUaGV5IGFyZQotaG93ZXZlciBfbm90XyBy
ZWR1bmRhbnQsIGFzIHRoZXkgcmVmZXIgdG8gX2RpZmZlcmVudCBwb2ludHMgaW4gdGltZV8uCi1U
aGUgZmFjdCB0aGV5IGFyZSB0aGUgc2FtZSBfaXNfIGludGVyZXN0aW5nIGluZm9ybWF0aW9uLgot
Ci0jIyBJIGdldCBhIGhlYXAgY2hlY2sgZmFpbHVyZSB3aGVuIHVzaW5nIGEgbW9jayBvYmplY3Qs
IGJ1dCB1c2luZyBhIHJlYWwgb2JqZWN0IGlzIGZpbmUuICBXaGF0IGNhbiBiZSB3cm9uZz8gIyMK
LQotRG9lcyB0aGUgY2xhc3MgKGhvcGVmdWxseSBhIHB1cmUgaW50ZXJmYWNlKSB5b3UgYXJlIG1v
Y2tpbmcgaGF2ZSBhCi12aXJ0dWFsIGRlc3RydWN0b3I/Ci0KLVdoZW5ldmVyIHlvdSBkZXJpdmUg
ZnJvbSBhIGJhc2UgY2xhc3MsIG1ha2Ugc3VyZSBpdHMgZGVzdHJ1Y3RvciBpcwotdmlydHVhbC4g
IE90aGVyd2lzZSBCYWQgVGhpbmdzIHdpbGwgaGFwcGVuLiAgQ29uc2lkZXIgdGhlIGZvbGxvd2lu
ZwotY29kZToKLQotYGBgCi1jbGFzcyBCYXNlIHsKLSBwdWJsaWM6Ci0gIC8vIE5vdCB2aXJ0dWFs
LCBidXQgc2hvdWxkIGJlLgotICB+QmFzZSgpIHsgLi4uIH0KLSAgLi4uCi19OwotCi1jbGFzcyBE
ZXJpdmVkIDogcHVibGljIEJhc2UgewotIHB1YmxpYzoKLSAgLi4uCi0gcHJpdmF0ZToKLSAgc3Rk
OjpzdHJpbmcgdmFsdWVfOwotfTsKLQotLi4uCi0gIEJhc2UqIHAgPSBuZXcgRGVyaXZlZDsKLSAg
Li4uCi0gIGRlbGV0ZSBwOyAgLy8gU3VycHJpc2UhIH5CYXNlKCkgd2lsbCBiZSBjYWxsZWQsIGJ1
dCB+RGVyaXZlZCgpIHdpbGwgbm90Ci0gICAgICAgICAgICAgLy8gLSB2YWx1ZV8gaXMgbGVha2Vk
LgotYGBgCi0KLUJ5IGNoYW5naW5nIGB+QmFzZSgpYCB0byB2aXJ0dWFsLCBgfkRlcml2ZWQoKWAg
d2lsbCBiZSBjb3JyZWN0bHkKLWNhbGxlZCB3aGVuIGBkZWxldGUgcGAgaXMgZXhlY3V0ZWQsIGFu
ZCB0aGUgaGVhcCBjaGVja2VyCi13aWxsIGJlIGhhcHB5LgotCi0jIyBUaGUgIm5ld2VyIGV4cGVj
dGF0aW9ucyBvdmVycmlkZSBvbGRlciBvbmVzIiBydWxlIG1ha2VzIHdyaXRpbmcgZXhwZWN0YXRp
b25zIGF3a3dhcmQuICBXaHkgZG9lcyBHb29nbGUgTW9jayBkbyB0aGF0PyAjIwotCi1XaGVuIHBl
b3BsZSBjb21wbGFpbiBhYm91dCB0aGlzLCBvZnRlbiB0aGV5IGFyZSByZWZlcnJpbmcgdG8gY29k
ZSBsaWtlOgotCi1gYGAKLS8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3aWNlLCByZXR1
cm4gMSB0aGUgZmlyc3QgdGltZSwgYW5kIHJldHVybgotLy8gMiB0aGUgc2Vjb25kIHRpbWUuICBI
b3dldmVyLCBJIGhhdmUgdG8gd3JpdGUgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUKLS8vIHJldmVy
c2Ugb3JkZXIuICBUaGlzIHN1Y2tzIGJpZyB0aW1lISEhCi1FWFBFQ1RfQ0FMTChmb28sIEJhcigp
KQotICAgIC5XaWxsT25jZShSZXR1cm4oMikpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsK
LUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAu
UmV0aXJlc09uU2F0dXJhdGlvbigpOwotYGBgCi0KLVRoZSBwcm9ibGVtIGlzIHRoYXQgdGhleSBk
aWRuJ3QgcGljayB0aGUgKipiZXN0Kiogd2F5IHRvIGV4cHJlc3MgdGhlIHRlc3QncwotaW50ZW50
LgotCi1CeSBkZWZhdWx0LCBleHBlY3RhdGlvbnMgZG9uJ3QgaGF2ZSB0byBiZSBtYXRjaGVkIGlu
IF9hbnlfIHBhcnRpY3VsYXIKLW9yZGVyLiAgSWYgeW91IHdhbnQgdGhlbSB0byBtYXRjaCBpbiBh
IGNlcnRhaW4gb3JkZXIsIHlvdSBuZWVkIHRvIGJlCi1leHBsaWNpdC4gIFRoaXMgaXMgR29vZ2xl
IE1vY2sncyAoYW5kIGpNb2NrJ3MpIGZ1bmRhbWVudGFsIHBoaWxvc29waHk6IGl0J3MKLWVhc3kg
dG8gYWNjaWRlbnRhbGx5IG92ZXItc3BlY2lmeSB5b3VyIHRlc3RzLCBhbmQgd2Ugd2FudCB0byBt
YWtlIGl0Ci1oYXJkZXIgdG8gZG8gc28uCi0KLVRoZXJlIGFyZSB0d28gYmV0dGVyIHdheXMgdG8g
d3JpdGUgdGhlIHRlc3Qgc3BlYy4gIFlvdSBjb3VsZCBlaXRoZXIKLXB1dCB0aGUgZXhwZWN0YXRp
b25zIGluIHNlcXVlbmNlOgotCi1gYGAKLS8vIGZvby5CYXIoKSBzaG91bGQgYmUgY2FsbGVkIHR3
aWNlLCByZXR1cm4gMSB0aGUgZmlyc3QgdGltZSwgYW5kIHJldHVybgotLy8gMiB0aGUgc2Vjb25k
IHRpbWUuICBVc2luZyBhIHNlcXVlbmNlLCB3ZSBjYW4gd3JpdGUgdGhlIGV4cGVjdGF0aW9ucwot
Ly8gaW4gdGhlaXIgbmF0dXJhbCBvcmRlci4KLXsKLSAgSW5TZXF1ZW5jZSBzOwotICBFWFBFQ1Rf
Q0FMTChmb28sIEJhcigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgIC5SZXRp
cmVzT25TYXR1cmF0aW9uKCk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgICAuV2ls
bE9uY2UoUmV0dXJuKDIpKQotICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLX0KLWBgYAot
Ci1vciB5b3UgY2FuIHB1dCB0aGUgc2VxdWVuY2Ugb2YgYWN0aW9ucyBpbiB0aGUgc2FtZSBleHBl
Y3RhdGlvbjoKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0
dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLgot
RVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgIC5X
aWxsT25jZShSZXR1cm4oMikpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1C
YWNrIHRvIHRoZSBvcmlnaW5hbCBxdWVzdGlvbnM6IHdoeSBkb2VzIEdvb2dsZSBNb2NrIHNlYXJj
aCB0aGUKLWV4cGVjdGF0aW9ucyAoYW5kIGBPTl9DQUxMYHMpIGZyb20gYmFjayB0byBmcm9udD8g
IEJlY2F1c2UgdGhpcwotYWxsb3dzIGEgdXNlciB0byBzZXQgdXAgYSBtb2NrJ3MgYmVoYXZpb3Ig
Zm9yIHRoZSBjb21tb24gY2FzZSBlYXJseQotKGUuZy4gaW4gdGhlIG1vY2sncyBjb25zdHJ1Y3Rv
ciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlKQotYW5kIGN1c3RvbWl6ZSBpdCB3
aXRoIG1vcmUgc3BlY2lmaWMgcnVsZXMgbGF0ZXIuICBJZiBHb29nbGUgTW9jawotc2VhcmNoZXMg
ZnJvbSBmcm9udCB0byBiYWNrLCB0aGlzIHZlcnkgdXNlZnVsIHBhdHRlcm4gd29uJ3QgYmUKLXBv
c3NpYmxlLgotCi0jIyBHb29nbGUgTW9jayBwcmludHMgYSB3YXJuaW5nIHdoZW4gYSBmdW5jdGlv
biB3aXRob3V0IEVYUEVDVFxfQ0FMTCBpcyBjYWxsZWQsIGV2ZW4gaWYgSSBoYXZlIHNldCBpdHMg
YmVoYXZpb3IgdXNpbmcgT05cX0NBTEwuICBXb3VsZCBpdCBiZSByZWFzb25hYmxlIG5vdCB0byBz
aG93IHRoZSB3YXJuaW5nIGluIHRoaXMgY2FzZT8gIyMKLQotV2hlbiBjaG9vc2luZyBiZXR3ZWVu
IGJlaW5nIG5lYXQgYW5kIGJlaW5nIHNhZmUsIHdlIGxlYW4gdG93YXJkIHRoZQotbGF0dGVyLiAg
U28gdGhlIGFuc3dlciBpcyB0aGF0IHdlIHRoaW5rIGl0J3MgYmV0dGVyIHRvIHNob3cgdGhlCi13
YXJuaW5nLgotCi1PZnRlbiBwZW9wbGUgd3JpdGUgYE9OX0NBTExgcyBpbiB0aGUgbW9jayBvYmpl
Y3QncwotY29uc3RydWN0b3Igb3IgYFNldFVwKClgLCBhcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBy
YXJlbHkgY2hhbmdlcyBmcm9tCi10ZXN0IHRvIHRlc3QuICBUaGVuIGluIHRoZSB0ZXN0IGJvZHkg
dGhleSBzZXQgdGhlIGV4cGVjdGF0aW9ucywgd2hpY2gKLWFyZSBvZnRlbiBkaWZmZXJlbnQgZm9y
IGVhY2ggdGVzdC4gIEhhdmluZyBhbiBgT05fQ0FMTGAgaW4gdGhlIHNldC11cAotcGFydCBvZiBh
IHRlc3QgZG9lc24ndCBtZWFuIHRoYXQgdGhlIGNhbGxzIGFyZSBleHBlY3RlZC4gIElmIHRoZXJl
J3MKLW5vIGBFWFBFQ1RfQ0FMTGAgYW5kIHRoZSBtZXRob2QgaXMgY2FsbGVkLCBpdCdzIHBvc3Np
Ymx5IGFuIGVycm9yLiAgSWYKLXdlIHF1aWV0bHkgbGV0IHRoZSBjYWxsIGdvIHRocm91Z2ggd2l0
aG91dCBub3RpZnlpbmcgdGhlIHVzZXIsIGJ1Z3MKLW1heSBjcmVlcCBpbiB1bm5vdGljZWQuCi0K
LUlmLCBob3dldmVyLCB5b3UgYXJlIHN1cmUgdGhhdCB0aGUgY2FsbHMgYXJlIE9LLCB5b3UgY2Fu
IHdyaXRlCi0KLWBgYAotRVhQRUNUX0NBTEwoZm9vLCBCYXIoXykpCi0gICAgLldpbGxSZXBlYXRl
ZGx5KC4uLik7Ci1gYGAKLQotaW5zdGVhZCBvZgotCi1gYGAKLU9OX0NBTEwoZm9vLCBCYXIoXykp
Ci0gICAgLldpbGxCeURlZmF1bHQoLi4uKTsKLWBgYAotCi1UaGlzIHRlbGxzIEdvb2dsZSBNb2Nr
IHRoYXQgeW91IGRvIGV4cGVjdCB0aGUgY2FsbHMgYW5kIG5vIHdhcm5pbmcgc2hvdWxkIGJlCi1w
cmludGVkLgotCi1BbHNvLCB5b3UgY2FuIGNvbnRyb2wgdGhlIHZlcmJvc2l0eSB1c2luZyB0aGUg
YC0tZ21vY2tfdmVyYm9zZWAgZmxhZy4KLUlmIHlvdSBmaW5kIHRoZSBvdXRwdXQgdG9vIG5vaXN5
IHdoZW4gZGVidWdnaW5nLCBqdXN0IGNob29zZSBhIGxlc3MKLXZlcmJvc2UgbGV2ZWwuCi0KLSMj
IEhvdyBjYW4gSSBkZWxldGUgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudCBpbiBhbiBhY3Rp
b24/ICMjCi0KLUlmIHlvdSBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gcGVyZm9ybSBzb21lIGFj
dGlvbiB0aGF0J3Mgbm90Ci1zdXBwb3J0ZWQgYnkgR29vZ2xlIE1vY2sgZGlyZWN0bHksIHJlbWVt
YmVyIHRoYXQgeW91IGNhbiBkZWZpbmUgeW91ciBvd24KLWFjdGlvbnMgdXNpbmcKLVtNYWtlQWN0
aW9uKCldKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29r
Qm9vayNXcml0aW5nX05ld19BY3Rpb25zKSBvcgotW01ha2VQb2x5bW9ycGhpY0FjdGlvbigpXSho
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzZfQ29va0Jvb2sjV3Jp
dGluZ19OZXdfUG9seW1vcnBoaWNfQWN0aW9ucyksCi1vciB5b3UgY2FuIHdyaXRlIGEgc3R1YiBm
dW5jdGlvbiBhbmQgaW52b2tlIGl0IHVzaW5nCi1bSW52b2tlKCldKGh0dHA6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNVc2luZ19GdW5jdGlvbnNfTWV0
aG9kc19GdW5jdG9ycykuCi0KLSMjIE1PQ0tcX01FVEhPRG4oKSdzIHNlY29uZCBhcmd1bWVudCBs
b29rcyBmdW5ueS4gIFdoeSBkb24ndCB5b3UgdXNlIHRoZSBNT0NLXF9NRVRIT0RuKE1ldGhvZCwg
cmV0dXJuXF90eXBlLCBhcmdcXzEsIC4uLiwgYXJnXF9uKSBzeW50YXg/ICMjCi0KLVdoYXQ/ISAg
SSB0aGluayBpdCdzIGJlYXV0aWZ1bC4gOi0pCi0KLVdoaWxlIHdoaWNoIHN5bnRheCBsb29rcyBt
b3JlIG5hdHVyYWwgaXMgYSBzdWJqZWN0aXZlIG1hdHRlciB0byBzb21lCi1leHRlbnQsIEdvb2ds
ZSBNb2NrJ3Mgc3ludGF4IHdhcyBjaG9zZW4gZm9yIHNldmVyYWwgcHJhY3RpY2FsIGFkdmFudGFn
ZXMgaXQKLWhhcy4KLQotVHJ5IHRvIG1vY2sgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbWFwIGFz
IGFuIGFyZ3VtZW50OgotYGBgCi12aXJ0dWFsIGludCBHZXRTaXplKGNvbnN0IG1hcDxpbnQsIHN0
ZDo6c3RyaW5nPiYgbSk7Ci1gYGAKLQotVXNpbmcgdGhlIHByb3Bvc2VkIHN5bnRheCwgaXQgd291
bGQgYmU6Ci1gYGAKLU1PQ0tfTUVUSE9EMShHZXRTaXplLCBpbnQsIGNvbnN0IG1hcDxpbnQsIHN0
ZDo6c3RyaW5nPiYgbSk7Ci1gYGAKLQotR3Vlc3Mgd2hhdD8gIFlvdSdsbCBnZXQgYSBjb21waWxl
ciBlcnJvciBhcyB0aGUgY29tcGlsZXIgdGhpbmtzIHRoYXQKLWBjb25zdCBtYXA8aW50LCBzdGQ6
OnN0cmluZz4mIG1gIGFyZSAqKnR3byoqLCBub3Qgb25lLCBhcmd1bWVudHMuIFRvIHdvcmsKLWFy
b3VuZCB0aGlzIHlvdSBjYW4gdXNlIGB0eXBlZGVmYCB0byBnaXZlIHRoZSBtYXAgdHlwZSBhIG5h
bWUsIGJ1dAotdGhhdCBnZXRzIGluIHRoZSB3YXkgb2YgeW91ciB3b3JrLiAgR29vZ2xlIE1vY2sn
cyBzeW50YXggYXZvaWRzIHRoaXMKLXByb2JsZW0gYXMgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQg
dHlwZXMgYXJlIHByb3RlY3RlZCBpbnNpZGUgYSBwYWlyCi1vZiBwYXJlbnRoZXNlczoKLWBgYAot
Ly8gVGhpcyBjb21waWxlcyBmaW5lLgotTU9DS19NRVRIT0QxKEdldFNpemUsIGludChjb25zdCBt
YXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pKTsKLWBgYAotCi1Zb3Ugc3RpbGwgbmVlZCBhIGB0eXBl
ZGVmYCBpZiB0aGUgcmV0dXJuIHR5cGUgY29udGFpbnMgYW4gdW5wcm90ZWN0ZWQKLWNvbW1hLCBi
dXQgdGhhdCdzIG11Y2ggcmFyZXIuCi0KLU90aGVyIGFkdmFudGFnZXMgaW5jbHVkZToKLSAgMS4g
YE1PQ0tfTUVUSE9EMShGb28sIGludCwgYm9vbClgIGNhbiBsZWF2ZSBhIHJlYWRlciB3b25kZXIg
d2hldGhlciB0aGUgbWV0aG9kIHJldHVybnMgYGludGAgb3IgYGJvb2xgLCB3aGlsZSB0aGVyZSB3
b24ndCBiZSBzdWNoIGNvbmZ1c2lvbiB1c2luZyBHb29nbGUgTW9jaydzIHN5bnRheC4KLSAgMS4g
VGhlIHdheSBHb29nbGUgTW9jayBkZXNjcmliZXMgYSBmdW5jdGlvbiB0eXBlIGlzIG5vdGhpbmcg
bmV3LCBhbHRob3VnaCBtYW55IHBlb3BsZSBtYXkgbm90IGJlIGZhbWlsaWFyIHdpdGggaXQuICBU
aGUgc2FtZSBzeW50YXggd2FzIHVzZWQgaW4gQywgYW5kIHRoZSBgZnVuY3Rpb25gIGxpYnJhcnkg
aW4gYHRyMWAgdXNlcyB0aGlzIHN5bnRheCBleHRlbnNpdmVseS4gIFNpbmNlIGB0cjFgIHdpbGwg
YmVjb21lIGEgcGFydCBvZiB0aGUgbmV3IHZlcnNpb24gb2YgU1RMLCB3ZSBmZWVsIHZlcnkgY29t
Zm9ydGFibGUgdG8gYmUgY29uc2lzdGVudCB3aXRoIGl0LgotICAxLiBUaGUgZnVuY3Rpb24gdHlw
ZSBzeW50YXggaXMgYWxzbyB1c2VkIGluIG90aGVyIHBhcnRzIG9mIEdvb2dsZSBNb2NrJ3MgQVBJ
IChlLmcuIHRoZSBhY3Rpb24gaW50ZXJmYWNlKSBpbiBvcmRlciB0byBtYWtlIHRoZSBpbXBsZW1l
bnRhdGlvbiB0cmFjdGFibGUuIEEgdXNlciBuZWVkcyB0byBsZWFybiBpdCBhbnl3YXkgaW4gb3Jk
ZXIgdG8gdXRpbGl6ZSBHb29nbGUgTW9jaydzIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMuICBXZSdk
IGFzIHdlbGwgc3RpY2sgdG8gdGhlIHNhbWUgc3ludGF4IGluIGBNT0NLX01FVEhPRCpgIQotCi0j
IyBNeSBjb2RlIGNhbGxzIGEgc3RhdGljL2dsb2JhbCBmdW5jdGlvbi4gIENhbiBJIG1vY2sgaXQ/
ICMjCi0KLVlvdSBjYW4sIGJ1dCB5b3UgbmVlZCB0byBtYWtlIHNvbWUgY2hhbmdlcy4KLQotSW4g
Z2VuZXJhbCwgaWYgeW91IGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byBtb2NrIGEgc3RhdGljIGZ1
bmN0aW9uLAotaXQncyBhIHNpZ24gdGhhdCB5b3VyIG1vZHVsZXMgYXJlIHRvbyB0aWdodGx5IGNv
dXBsZWQgKGFuZCBsZXNzCi1mbGV4aWJsZSwgbGVzcyByZXVzYWJsZSwgbGVzcyB0ZXN0YWJsZSwg
ZXRjKS4gIFlvdSBhcmUgcHJvYmFibHkgYmV0dGVyCi1vZmYgZGVmaW5pbmcgYSBzbWFsbCBpbnRl
cmZhY2UgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uIHRocm91Z2ggdGhhdAotaW50ZXJmYWNlLCB3aGlj
aCB0aGVuIGNhbiBiZSBlYXNpbHkgbW9ja2VkLiAgSXQncyBhIGJpdCBvZiB3b3JrCi1pbml0aWFs
bHksIGJ1dCB1c3VhbGx5IHBheXMgZm9yIGl0c2VsZiBxdWlja2x5LgotCi1UaGlzIEdvb2dsZSBU
ZXN0aW5nIEJsb2cKLVtwb3N0XShodHRwOi8vZ29vZ2xldGVzdGluZy5ibG9nc3BvdC5jb20vMjAw
OC8wNi9kZWZlYXQtc3RhdGljLWNsaW5nLmh0bWwpCi1zYXlzIGl0IGV4Y2VsbGVudGx5LiAgQ2hl
Y2sgaXQgb3V0LgotCi0jIyBNeSBtb2NrIG9iamVjdCBuZWVkcyB0byBkbyBjb21wbGV4IHN0dWZm
LiAgSXQncyBhIGxvdCBvZiBwYWluIHRvIHNwZWNpZnkgdGhlIGFjdGlvbnMuICBHb29nbGUgTW9j
ayBzdWNrcyEgIyMKLQotSSBrbm93IGl0J3Mgbm90IGEgcXVlc3Rpb24sIGJ1dCB5b3UgZ2V0IGFu
IGFuc3dlciBmb3IgZnJlZSBhbnkgd2F5LiA6LSkKLQotV2l0aCBHb29nbGUgTW9jaywgeW91IGNh
biBjcmVhdGUgbW9ja3MgaW4gQysrIGVhc2lseS4gIEFuZCBwZW9wbGUgbWlnaHQgYmUKLXRlbXB0
ZWQgdG8gdXNlIHRoZW0gZXZlcnl3aGVyZS4gU29tZXRpbWVzIHRoZXkgd29yayBncmVhdCwgYW5k
Ci1zb21ldGltZXMgeW91IG1heSBmaW5kIHRoZW0sIHdlbGwsIGEgcGFpbiB0byB1c2UuIFNvLCB3
aGF0J3Mgd3JvbmcgaW4KLXRoZSBsYXR0ZXIgY2FzZT8KLQotV2hlbiB5b3Ugd3JpdGUgYSB0ZXN0
IHdpdGhvdXQgdXNpbmcgbW9ja3MsIHlvdSBleGVyY2lzZSB0aGUgY29kZSBhbmQKLWFzc2VydCB0
aGF0IGl0IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgb3IgdGhhdCB0aGUgc3lzdGVtIGlzIGlu
IGFuCi1leHBlY3RlZCBzdGF0ZS4gIFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCAic3RhdGUtYmFz
ZWQgdGVzdGluZyIuCi0KLU1vY2tzIGFyZSBncmVhdCBmb3Igd2hhdCBzb21lIGNhbGwgImludGVy
YWN0aW9uLWJhc2VkIiB0ZXN0aW5nOgotaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc3lzdGVtIHN0
YXRlIGF0IHRoZSB2ZXJ5IGVuZCwgbW9jayBvYmplY3RzCi12ZXJpZnkgdGhhdCB0aGV5IGFyZSBp
bnZva2VkIHRoZSByaWdodCB3YXkgYW5kIHJlcG9ydCBhbiBlcnJvciBhcyBzb29uCi1hcyBpdCBh
cmlzZXMsIGdpdmluZyB5b3UgYSBoYW5kbGUgb24gdGhlIHByZWNpc2UgY29udGV4dCBpbiB3aGlj
aCB0aGUKLWVycm9yIHdhcyB0cmlnZ2VyZWQuICBUaGlzIGlzIG9mdGVuIG1vcmUgZWZmZWN0aXZl
IGFuZCBlY29ub21pY2FsIHRvCi1kbyB0aGFuIHN0YXRlLWJhc2VkIHRlc3RpbmcuCi0KLUlmIHlv
dSBhcmUgZG9pbmcgc3RhdGUtYmFzZWQgdGVzdGluZyBhbmQgdXNpbmcgYSB0ZXN0IGRvdWJsZSBq
dXN0IHRvCi1zaW11bGF0ZSB0aGUgcmVhbCBvYmplY3QsIHlvdSBhcmUgcHJvYmFibHkgYmV0dGVy
IG9mZiB1c2luZyBhIGZha2UuCi1Vc2luZyBhIG1vY2sgaW4gdGhpcyBjYXNlIGNhdXNlcyBwYWlu
LCBhcyBpdCdzIG5vdCBhIHN0cm9uZyBwb2ludCBmb3IKLW1vY2tzIHRvIHBlcmZvcm0gY29tcGxl
eCBhY3Rpb25zLiAgSWYgeW91IGV4cGVyaWVuY2UgdGhpcyBhbmQgdGhpbmsKLXRoYXQgbW9ja3Mg
c3VjaywgeW91IGFyZSBqdXN0IG5vdCB1c2luZyB0aGUgcmlnaHQgdG9vbCBmb3IgeW91cgotcHJv
YmxlbS4gT3IsIHlvdSBtaWdodCBiZSB0cnlpbmcgdG8gc29sdmUgdGhlIHdyb25nIHByb2JsZW0u
IDotKQotCi0jIyBJIGdvdCBhIHdhcm5pbmcgIlVuaW50ZXJlc3RpbmcgZnVuY3Rpb24gY2FsbCBl
bmNvdW50ZXJlZCAtIGRlZmF1bHQgYWN0aW9uIHRha2VuLi4iICBTaG91bGQgSSBwYW5pYz8gIyMK
LQotQnkgYWxsIG1lYW5zLCBOTyEgIEl0J3MganVzdCBhbiBGWUkuCi0KLVdoYXQgaXQgbWVhbnMg
aXMgdGhhdCB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24sIHlvdSBoYXZlbid0IHNldCBhbnkKLWV4
cGVjdGF0aW9ucyBvbiBpdCAoYnkgR29vZ2xlIE1vY2sncyBydWxlIHRoaXMgbWVhbnMgdGhhdCB5
b3UgYXJlIG5vdAotaW50ZXJlc3RlZCBpbiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGFuZCB0aGVy
ZWZvcmUgaXQgY2FuIGJlIGNhbGxlZAotYW55IG51bWJlciBvZiB0aW1lcyksIGFuZCBpdCBpcyBj
YWxsZWQuICBUaGF0J3MgT0sgLSB5b3UgZGlkbid0IHNheQotaXQncyBub3QgT0sgdG8gY2FsbCB0
aGUgZnVuY3Rpb24hCi0KLVdoYXQgaWYgeW91IGFjdHVhbGx5IG1lYW50IHRvIGRpc2FsbG93IHRo
aXMgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLCBidXQKLWZvcmdvdCB0byB3cml0ZSBgRVhQRUNUX0NB
TEwoZm9vLCBCYXIoKSkuVGltZXMoMClgPyAgV2hpbGUKLW9uZSBjYW4gYXJndWUgdGhhdCBpdCdz
IHRoZSB1c2VyJ3MgZmF1bHQsIEdvb2dsZSBNb2NrIHRyaWVzIHRvIGJlIG5pY2UgYW5kCi1wcmlu
dHMgeW91IGEgbm90ZS4KLQotU28sIHdoZW4geW91IHNlZSB0aGUgbWVzc2FnZSBhbmQgYmVsaWV2
ZSB0aGF0IHRoZXJlIHNob3VsZG4ndCBiZSBhbnkKLXVuaW50ZXJlc3RpbmcgY2FsbHMsIHlvdSBz
aG91bGQgaW52ZXN0aWdhdGUgd2hhdCdzIGdvaW5nIG9uLiAgVG8gbWFrZQoteW91ciBsaWZlIGVh
c2llciwgR29vZ2xlIE1vY2sgcHJpbnRzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBhcmd1bWVudHMK
LXdoZW4gYW4gdW5pbnRlcmVzdGluZyBjYWxsIGlzIGVuY291bnRlcmVkLgotCi0jIyBJIHdhbnQg
dG8gZGVmaW5lIGEgY3VzdG9tIGFjdGlvbi4gIFNob3VsZCBJIHVzZSBJbnZva2UoKSBvciBpbXBs
ZW1lbnQgdGhlIGFjdGlvbiBpbnRlcmZhY2U/ICMjCi0KLUVpdGhlciB3YXkgaXMgZmluZSAtIHlv
dSB3YW50IHRvIGNob29zZSB0aGUgb25lIHRoYXQncyBtb3JlIGNvbnZlbmllbnQKLWZvciB5b3Vy
IGNpcmN1bXN0YW5jZS4KLQotVXN1YWxseSwgaWYgeW91ciBhY3Rpb24gaXMgZm9yIGEgcGFydGlj
dWxhciBmdW5jdGlvbiB0eXBlLCBkZWZpbmluZyBpdAotdXNpbmcgYEludm9rZSgpYCBzaG91bGQg
YmUgZWFzaWVyOyBpZiB5b3VyIGFjdGlvbiBjYW4gYmUgdXNlZCBpbgotZnVuY3Rpb25zIG9mIGRp
ZmZlcmVudCB0eXBlcyAoZS5nLiBpZiB5b3UgYXJlIGRlZmluaW5nCi1gUmV0dXJuKHZhbHVlKWAp
LCBgTWFrZVBvbHltb3JwaGljQWN0aW9uKClgIGlzCi1lYXNpZXN0LiAgU29tZXRpbWVzIHlvdSB3
YW50IHByZWNpc2UgY29udHJvbCBvbiB3aGF0IHR5cGVzIG9mCi1mdW5jdGlvbnMgdGhlIGFjdGlv
biBjYW4gYmUgdXNlZCBpbiwgYW5kIGltcGxlbWVudGluZwotYEFjdGlvbkludGVyZmFjZWAgaXMg
dGhlIHdheSB0byBnbyBoZXJlLiBTZWUgdGhlIGltcGxlbWVudGF0aW9uIG9mCi1gUmV0dXJuKClg
IGluIGBpbmNsdWRlL2dtb2NrL2dtb2NrLWFjdGlvbnMuaGAgZm9yIGFuIGV4YW1wbGUuCi0KLSMj
IEknbSB1c2luZyB0aGUgc2V0LWFyZ3VtZW50LXBvaW50ZWUgYWN0aW9uLCBhbmQgdGhlIGNvbXBp
bGVyIGNvbXBsYWlucyBhYm91dCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgc3BlY2lmaWVkIi4g
IFdoYXQgZG9lcyBpdCBtZWFuPyAjIwotCi1Zb3UgZ290IHRoaXMgZXJyb3IgYXMgR29vZ2xlIE1v
Y2sgaGFzIG5vIGlkZWEgd2hhdCB2YWx1ZSBpdCBzaG91bGQgcmV0dXJuCi13aGVuIHRoZSBtb2Nr
IG1ldGhvZCBpcyBjYWxsZWQuICBgU2V0QXJnUG9pbnRlZSgpYCBzYXlzIHdoYXQgdGhlCi1zaWRl
IGVmZmVjdCBpcywgYnV0IGRvZXNuJ3Qgc2F5IHdoYXQgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQg
YmUuICBZb3UKLW5lZWQgYERvQWxsKClgIHRvIGNoYWluIGEgYFNldEFyZ1BvaW50ZWUoKWAgd2l0
aCBhIGBSZXR1cm4oKWAuCi0KLVNlZSB0aGlzIFtyZWNpcGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGVtb2NrL3dpa2kvVjFfNl9Db29rQm9vayNNb2NraW5nX1NpZGVfRWZmZWN0cykg
Zm9yIG1vcmUgZGV0YWlscyBhbmQgYW4gZXhhbXBsZS4KLQotCi0jIyBNeSBxdWVzdGlvbiBpcyBu
b3QgaW4geW91ciBGQVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlv
dXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMg
eW91IGNhbiB1c2U6Ci0KLSAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDovL2NvZGUu
Z29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svdy9saXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBtYWlsaW5n
IGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29nbGVtb2Nr
L3RvcGljcyksCi0gIDEuIGFzayBpdCBvbiBbZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tXSht
YWlsdG86Z29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dl
ciBpdCAodG8gcHJldmVudCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vz
c2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZW1vY2spIGJl
Zm9yZSB5b3UgY2FuIHBvc3QuKS4KLQotUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1
ZSBpbiB0aGUKLVtpc3N1ZSB0cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xl
bW9jay9pc3N1ZXMvbGlzdCkgaXMgX25vdF8KLWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2Vy
LCBhcyBpdCBpcyBtb25pdG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVy
IG9mIHBlb3BsZS4KLQotV2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHBy
b3ZpZGUgYXMgbXVjaCBvZiB0aGUKLWZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAo
cGVvcGxlIGNhbm5vdCBoZWxwIHlvdSBpZiB0aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9u
IGluIHlvdXIgcXVlc3Rpb24pOgotCi0gICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBu
dW1iZXIgaWYgeW91IGNoZWNrIG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIE1vY2sg
eW91IHVzZSAoR29vZ2xlIE1vY2sgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdz
IHBvc3NpYmxlIHRoYXQgeW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZl
cnNpb24pLAotICAqIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVy
c2lvbiBvZiB5b3VyIGNvbXBpbGVyLAotICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxh
Z3MgeW91IGdpdmUgdG8geW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIg
ZXJyb3IgbWVzc2FnZXMgKGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0g
ICogdGhlIF9hY3R1YWxfIGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJv
Z3JhbSkgdGhhdCBoYXMgdGhlIHByb2JsZW0geW91IGVuY291bnRlci4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvQ2hlYXRTaGVl
dC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9DaGVhdFNoZWV0Lm1kCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkYjQyMWU1MWJlNjUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9kb2NzL3YxXzcvQ2hlYXRTaGVldC5tZAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCww
IEBACi0KLQotIyBEZWZpbmluZyBhIE1vY2sgQ2xhc3MgIwotCi0jIyBNb2NraW5nIGEgTm9ybWFs
IENsYXNzICMjCi0KLUdpdmVuCi1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIH5G
b28oKTsKLSAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCBzdHJp
bmcgRGVzY3JpYmUoY29uc3QgY2hhciogbmFtZSkgPSAwOwotICB2aXJ0dWFsIHN0cmluZyBEZXNj
cmliZShpbnQgdHlwZSkgPSAwOwotICB2aXJ0dWFsIGJvb2wgUHJvY2VzcyhCYXIgZWxlbSwgaW50
IGNvdW50KSA9IDA7Ci19OwotYGBgCi0obm90ZSB0aGF0IGB+Rm9vKClgICoqbXVzdCoqIGJlIHZp
cnR1YWwpIHdlIGNhbiBkZWZpbmUgaXRzIG1vY2sgYXMKLWBgYAotI2luY2x1ZGUgImdtb2NrL2dt
b2NrLmgiCi0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgTU9DS19DT05TVF9NRVRI
T0QwKEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxKERlc2NyaWJlLCBzdHJpbmcoY29u
c3QgY2hhciogbmFtZSkpOwotICBNT0NLX01FVEhPRDEoRGVzY3JpYmUsIHN0cmluZyhpbnQgdHlw
ZSkpOwotICBNT0NLX01FVEhPRDIoUHJvY2VzcywgYm9vbChCYXIgZWxlbSwgaW50IGNvdW50KSk7
Ci19OwotYGBgCi0KLVRvIGNyZWF0ZSBhICJuaWNlIiBtb2NrIG9iamVjdCB3aGljaCBpZ25vcmVz
IGFsbCB1bmludGVyZXN0aW5nIGNhbGxzLAotb3IgYSAic3RyaWN0IiBtb2NrIG9iamVjdCwgd2hp
Y2ggdHJlYXRzIHRoZW0gYXMgZmFpbHVyZXM6Ci1gYGAKLU5pY2VNb2NrPE1vY2tGb28+IG5pY2Vf
Zm9vOyAgICAgLy8gVGhlIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vLgotU3RyaWN0TW9j
azxNb2NrRm9vPiBzdHJpY3RfZm9vOyAvLyBUaGUgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIE1vY2tG
b28uCi1gYGAKLQotIyMgTW9ja2luZyBhIENsYXNzIFRlbXBsYXRlICMjCi0KLVRvIG1vY2sKLWBg
YAotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBTdGFja0ludGVyZmFjZSB7Ci0gcHVi
bGljOgotICAuLi4KLSAgdmlydHVhbCB+U3RhY2tJbnRlcmZhY2UoKTsKLSAgdmlydHVhbCBpbnQg
R2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCB2b2lkIFB1c2goY29uc3QgRWxlbSYgeCkg
PSAwOwotfTsKLWBgYAotKG5vdGUgdGhhdCBgflN0YWNrSW50ZXJmYWNlKClgICoqbXVzdCoqIGJl
IHZpcnR1YWwpIGp1c3QgYXBwZW5kIGBfVGAgdG8gdGhlIGBNT0NLXypgIG1hY3JvczoKLWBgYAot
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+Ci1jbGFzcyBNb2NrU3RhY2sgOiBwdWJsaWMgU3RhY2tJ
bnRlcmZhY2U8RWxlbT4gewotIHB1YmxpYzoKLSAgLi4uCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMF9U
KEdldFNpemUsIGludCgpKTsKLSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChjb25zdCBFbGVt
JiB4KSk7Ci19OwotYGBgCi0KLSMjIFNwZWNpZnlpbmcgQ2FsbGluZyBDb252ZW50aW9ucyBmb3Ig
TW9jayBGdW5jdGlvbnMgIyMKLQotSWYgeW91ciBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRo
ZSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbiwgeW91Ci1jYW4gc3BlY2lmeSBpdCBieSBhcHBl
bmRpbmcgYF9XSVRIX0NBTExUWVBFYCB0byBhbnkgb2YgdGhlIG1hY3JvcwotZGVzY3JpYmVkIGlu
IHRoZSBwcmV2aW91cyB0d28gc2VjdGlvbnMgYW5kIHN1cHBseWluZyB0aGUgY2FsbGluZwotY29u
dmVudGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1hY3JvLiBGb3IgZXhhbXBsZSwK
LWBgYAotICBNT0NLX01FVEhPRF8xX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIEZv
bywgYm9vbChpbnQgbikpOwotICBNT0NLX0NPTlNUX01FVEhPRDJfV0lUSF9DQUxMVFlQRShTVERN
RVRIT0RDQUxMVFlQRSwgQmFyLCBpbnQoZG91YmxlIHgsIGRvdWJsZSB5KSk7Ci1gYGAKLXdoZXJl
IGBTVERNRVRIT0RDQUxMVFlQRWAgaXMgZGVmaW5lZCBieSBgPG9iamJhc2UuaD5gIG9uIFdpbmRv
d3MuCi0KLSMgVXNpbmcgTW9ja3MgaW4gVGVzdHMgIwotCi1UaGUgdHlwaWNhbCBmbG93IGlzOgot
ICAxLiBJbXBvcnQgdGhlIEdvb2dsZSBNb2NrIG5hbWVzIHlvdSBuZWVkIHRvIHVzZS4gQWxsIEdv
b2dsZSBNb2NrIG5hbWVzIGFyZSBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSB1bmxlc3MgdGhl
eSBhcmUgbWFjcm9zIG9yIG90aGVyd2lzZSBub3RlZC4KLSAgMS4gQ3JlYXRlIHRoZSBtb2NrIG9i
amVjdHMuCi0gIDEuIE9wdGlvbmFsbHksIHNldCB0aGUgZGVmYXVsdCBhY3Rpb25zIG9mIHRoZSBt
b2NrIG9iamVjdHMuCi0gIDEuIFNldCB5b3VyIGV4cGVjdGF0aW9ucyBvbiB0aGUgbW9jayBvYmpl
Y3RzIChIb3cgd2lsbCB0aGV5IGJlIGNhbGxlZD8gV2hhdCB3aWwgdGhleSBkbz8pLgotICAxLiBF
eGVyY2lzZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9jayBvYmplY3RzOyBpZiBuZWNlc3NhcnksIGNo
ZWNrIHRoZSByZXN1bHQgdXNpbmcgW0dvb2dsZSBUZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdC8pIGFzc2VydGlvbnMuCi0gIDEuIFdoZW4gYSBtb2NrIG9iamVjdHMgaXMg
ZGVzdHJ1Y3RlZCwgR29vZ2xlIE1vY2sgYXV0b21hdGljYWxseSB2ZXJpZmllcyB0aGF0IGFsbCBl
eHBlY3RhdGlvbnMgb24gaXQgaGF2ZSBiZWVuIHNhdGlzZmllZC4KLQotSGVyZSBpcyBhbiBleGFt
cGxlOgotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gIzEKLQotVEVTVChCYXJUZXN0LCBEb2VzVGhpcykgewotICBNb2NrRm9vIGZvbzsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjMgotCi0gIE9OX0NBTEwoZm9v
LCBHZXRTaXplKCkpICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMzCi0gICAgICAuV2lsbEJ5
RGVmYXVsdChSZXR1cm4oMSkpOwotICAvLyAuLi4gb3RoZXIgZGVmYXVsdCBhY3Rpb25zIC4uLgot
Ci0gIEVYUEVDVF9DQUxMKGZvbywgRGVzY3JpYmUoNSkpICAgICAgICAgICAgICAgICAgIC8vICM0
Ci0gICAgICAuVGltZXMoMykKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oIkNhdGVnb3J5
IDUiKSk7Ci0gIC8vIC4uLiBvdGhlciBleHBlY3RhdGlvbnMgLi4uCi0KLSAgRVhQRUNUX0VRKCJn
b29kIiwgTXlQcm9kdWN0aW9uRnVuY3Rpb24oJmZvbykpOyAgLy8gIzUKLX0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIzYKLWBgYAotCi0jIFNldHRp
bmcgRGVmYXVsdCBBY3Rpb25zICMKLQotR29vZ2xlIE1vY2sgaGFzIGEgKipidWlsdC1pbiBkZWZh
dWx0IGFjdGlvbioqIGZvciBhbnkgZnVuY3Rpb24gdGhhdAotcmV0dXJucyBgdm9pZGAsIGBib29s
YCwgYSBudW1lcmljIHZhbHVlLCBvciBhIHBvaW50ZXIuCi0KLVRvIGN1c3RvbWl6ZSB0aGUgZGVm
YXVsdCBhY3Rpb24gZm9yIGZ1bmN0aW9ucyB3aXRoIHJldHVybiB0eXBlIGBUYCBnbG9iYWxseToK
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpEZWZhdWx0VmFsdWU7Ci0KLURlZmF1bHRWYWx1ZTxUPjo6
U2V0KHZhbHVlKTsgIC8vIFNldHMgdGhlIGRlZmF1bHQgdmFsdWUgdG8gYmUgcmV0dXJuZWQuCi0v
LyAuLi4gdXNlIHRoZSBtb2NrcyAuLi4KLURlZmF1bHRWYWx1ZTxUPjo6Q2xlYXIoKTsgICAgIC8v
IFJlc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZS4KLWBgYAotCi1UbyBjdXN0b21pemUgdGhlIGRlZmF1
bHQgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgbWV0aG9kLCB1c2UgYE9OX0NBTEwoKWA6Ci1gYGAK
LU9OX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAgLldpdGgobXVsdGlf
YXJndW1lbnRfbWF0Y2hlcikgID8KLSAgICAuV2lsbEJ5RGVmYXVsdChhY3Rpb24pOwotYGBgCi0K
LSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwotCi1gRVhQRUNUX0NBTEwoKWAgc2V0cyAqKmV4cGVj
dGF0aW9ucyoqIG9uIGEgbW9jayBtZXRob2QgKEhvdyB3aWxsIGl0IGJlCi1jYWxsZWQ/IFdoYXQg
d2lsbCBpdCBkbz8pOgotYGBgCi1FWFBFQ1RfQ0FMTChtb2NrX29iamVjdCwgbWV0aG9kKG1hdGNo
ZXJzKSkKLSAgICAuV2l0aChtdWx0aV9hcmd1bWVudF9tYXRjaGVyKSAgPwotICAgIC5UaW1lcyhj
YXJkaW5hbGl0eSkgICAgICAgICAgICA/Ci0gICAgLkluU2VxdWVuY2Uoc2VxdWVuY2VzKSAgICAg
ICAgICoKLSAgICAuQWZ0ZXIoZXhwZWN0YXRpb25zKSAgICAgICAgICAgKgotICAgIC5XaWxsT25j
ZShhY3Rpb24pICAgICAgICAgICAgICAqCi0gICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbikgICAg
ICAgID8KLSAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOyAgICAgICAgPwotYGBgCi0KLUlmIGBU
aW1lcygpYCBpcyBvbWl0dGVkLCB0aGUgY2FyZGluYWxpdHkgaXMgYXNzdW1lZCB0byBiZToKLQot
ICAqIGBUaW1lcygxKWAgd2hlbiB0aGVyZSBpcyBuZWl0aGVyIGBXaWxsT25jZSgpYCBub3IgYFdp
bGxSZXBlYXRlZGx5KClgOwotICAqIGBUaW1lcyhuKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9u
Y2UoKWBzIGJ1dCBubyBgV2lsbFJlcGVhdGVkbHkoKWAsIHdoZXJlIGBuYCA+PSAxOyBvcgotICAq
IGBUaW1lcyhBdExlYXN0KG4pKWAgd2hlbiB0aGVyZSBhcmUgYG4gV2lsbE9uY2UoKWBzIGFuZCBh
IGBXaWxsUmVwZWF0ZWRseSgpYCwgd2hlcmUgYG5gID49IDAuCi0KLUEgbWV0aG9kIHdpdGggbm8g
YEVYUEVDVF9DQUxMKClgIGlzIGZyZWUgdG8gYmUgaW52b2tlZCBfYW55IG51bWJlciBvZiB0aW1l
c18sIGFuZCB0aGUgZGVmYXVsdCBhY3Rpb24gd2lsbCBiZSB0YWtlbiBlYWNoIHRpbWUuCi0KLSMg
TWF0Y2hlcnMgIwotCi1BICoqbWF0Y2hlcioqIG1hdGNoZXMgYSBfc2luZ2xlXyBhcmd1bWVudC4g
IFlvdSBjYW4gdXNlIGl0IGluc2lkZQotYE9OX0NBTEwoKWAgb3IgYEVYUEVDVF9DQUxMKClgLCBv
ciB1c2UgaXQgdG8gdmFsaWRhdGUgYSB2YWx1ZQotZGlyZWN0bHk6Ci0KLXwgYEVYUEVDVF9USEFU
KHZhbHVlLCBtYXRjaGVyKWAgfCBBc3NlcnRzIHRoYXQgYHZhbHVlYCBtYXRjaGVzIGBtYXRjaGVy
YC4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVEhBVCh2YWx1ZSwgbWF0Y2hlcilg
IHwgVGhlIHNhbWUgYXMgYEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKWAsIGV4Y2VwdCB0aGF0
IGl0IGdlbmVyYXRlcyBhICoqZmF0YWwqKiBmYWlsdXJlLiB8Ci0KLUJ1aWx0LWluIG1hdGNoZXJz
ICh3aGVyZSBgYXJndW1lbnRgIGlzIHRoZSBmdW5jdGlvbiBhcmd1bWVudCkgYXJlCi1kaXZpZGVk
IGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOgotCi0jIyBXaWxkY2FyZCAjIwotfGBfYHxgYXJndW1l
bnRgIGNhbiBiZSBhbnkgdmFsdWUgb2YgdGhlIGNvcnJlY3QgdHlwZS58Ci18Oi0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxgQTx0eXBlPigpYCBv
ciBgQW48dHlwZT4oKWB8YGFyZ3VtZW50YCBjYW4gYmUgYW55IHZhbHVlIG9mIHR5cGUgYHR5cGVg
LiAgICAgfAotCi0jIyBHZW5lcmljIENvbXBhcmlzb24gIyMKLQotfGBFcSh2YWx1ZSlgIG9yIGB2
YWx1ZWB8YGFyZ3VtZW50ID09IHZhbHVlYHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS18Ci18YEdlKHZhbHVlKWAgICAgICAgICAgIHxgYXJndW1lbnQgPj0gdmFs
dWVgfAotfGBHdCh2YWx1ZSlgICAgICAgICAgICB8YGFyZ3VtZW50ID4gdmFsdWVgIHwKLXxgTGUo
dmFsdWUpYCAgICAgICAgICAgfGBhcmd1bWVudCA8PSB2YWx1ZWB8Ci18YEx0KHZhbHVlKWAgICAg
ICAgICAgIHxgYXJndW1lbnQgPCB2YWx1ZWAgfAotfGBOZSh2YWx1ZSlgICAgICAgICAgICB8YGFy
Z3VtZW50ICE9IHZhbHVlYHwKLXxgSXNOdWxsKClgICAgICAgICAgICAgfGBhcmd1bWVudGAgaXMg
YSBgTlVMTGAgcG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Ci18YE5vdE51bGwoKWAgICAgICAgICAg
IHxgYXJndW1lbnRgIGlzIGEgbm9uLW51bGwgcG9pbnRlciAocmF3IG9yIHNtYXJ0KS58Ci18YFJl
Zih2YXJpYWJsZSlgICAgICAgIHxgYXJndW1lbnRgIGlzIGEgcmVmZXJlbmNlIHRvIGB2YXJpYWJs
ZWAufAotfGBUeXBlZEVxPHR5cGU+KHZhbHVlKWB8YGFyZ3VtZW50YCBoYXMgdHlwZSBgdHlwZWAg
YW5kIGlzIGVxdWFsIHRvIGB2YWx1ZWAuIFlvdSBtYXkgbmVlZCB0byB1c2UgdGhpcyBpbnN0ZWFk
IG9mIGBFcSh2YWx1ZSlgIHdoZW4gdGhlIG1vY2sgZnVuY3Rpb24gaXMgb3ZlcmxvYWRlZC58Ci0K
LUV4Y2VwdCBgUmVmKClgLCB0aGVzZSBtYXRjaGVycyBtYWtlIGEgX2NvcHlfIG9mIGB2YWx1ZWAg
aW4gY2FzZSBpdCdzCi1tb2RpZmllZCBvciBkZXN0cnVjdGVkIGxhdGVyLiBJZiB0aGUgY29tcGls
ZXIgY29tcGxhaW5zIHRoYXQgYHZhbHVlYAotZG9lc24ndCBoYXZlIGEgcHVibGljIGNvcHkgY29u
c3RydWN0b3IsIHRyeSB3cmFwIGl0IGluIGBCeVJlZigpYCwKLWUuZy4gYEVxKEJ5UmVmKG5vbl9j
b3B5YWJsZV92YWx1ZSkpYC4gSWYgeW91IGRvIHRoYXQsIG1ha2Ugc3VyZQotYG5vbl9jb3B5YWJs
ZV92YWx1ZWAgaXMgbm90IGNoYW5nZWQgYWZ0ZXJ3YXJkcywgb3IgdGhlIG1lYW5pbmcgb2YgeW91
cgotbWF0Y2hlciB3aWxsIGJlIGNoYW5nZWQuCi0KLSMjIEZsb2F0aW5nLVBvaW50IE1hdGNoZXJz
ICMjCi0KLXxgRG91YmxlRXEoYV9kb3VibGUpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFs
dWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBgYV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBh
cyB1bmVxdWFsLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKLXxgRmxvYXRFcShhX2Zsb2F0KWAgIHxgYXJndW1lbnRgIGlzIGEg
YGZsb2F0YCB2YWx1ZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGBhX2Zsb2F0YCwgdHJlYXRpbmcg
dHdvIE5hTnMgYXMgdW5lcXVhbC4gIHwKLXxgTmFuU2Vuc2l0aXZlRG91YmxlRXEoYV9kb3VibGUp
YHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byBg
YV9kb3VibGVgLCB0cmVhdGluZyB0d28gTmFOcyBhcyBlcXVhbC4gIHwKLXxgTmFuU2Vuc2l0aXZl
RmxvYXRFcShhX2Zsb2F0KWB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgYXBwcm94aW1h
dGVseSBlcXVhbCB0byBgYV9mbG9hdGAsIHRyZWF0aW5nIHR3byBOYU5zIGFzIGVxdWFsLiAgICB8
Ci0KLVRoZSBhYm92ZSBtYXRjaGVycyB1c2UgVUxQLWJhc2VkIGNvbXBhcmlzb24gKHRoZSBzYW1l
IGFzIHVzZWQgaW4KLVtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZXRlc3QvKSkuIFRoZXkKLWF1dG9tYXRpY2FsbHkgcGljayBhIHJlYXNvbmFibGUgZXJyb3IgYm91
bmQgYmFzZWQgb24gdGhlIGFic29sdXRlCi12YWx1ZSBvZiB0aGUgZXhwZWN0ZWQgdmFsdWUuICBg
RG91YmxlRXEoKWAgYW5kIGBGbG9hdEVxKClgIGNvbmZvcm0gdG8KLXRoZSBJRUVFIHN0YW5kYXJk
LCB3aGljaCByZXF1aXJlcyBjb21wYXJpbmcgdHdvIE5hTnMgZm9yIGVxdWFsaXR5IHRvCi1yZXR1
cm4gZmFsc2UuIFRoZSBgTmFuU2Vuc2l0aXZlKmAgdmVyc2lvbiBpbnN0ZWFkIHRyZWF0cyB0d28g
TmFOcyBhcwotZXF1YWwsIHdoaWNoIGlzIG9mdGVuIHdoYXQgYSB1c2VyIHdhbnRzLgotCi18YERv
dWJsZU5lYXIoYV9kb3VibGUsIG1heF9hYnNfZXJyb3IpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJs
ZWAgdmFsdWUgY2xvc2UgdG8gYGFfZG91YmxlYCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9hYnNf
ZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5hTnMgYXMgdW5lcXVhbC58Ci18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEZsb2F0TmVhcihhX2Zsb2F0LCBtYXhfYWJz
X2Vycm9yKWAgIHxgYXJndW1lbnRgIGlzIGEgYGZsb2F0YCB2YWx1ZSBjbG9zZSB0byBgYV9mbG9h
dGAgKGFic29sdXRlIGVycm9yIDw9IGBtYXhfYWJzX2Vycm9yYCksIHRyZWF0aW5nIHR3byBOYU5z
IGFzIHVuZXF1YWwuICB8Ci18YE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoYV9kb3VibGUsIG1heF9h
YnNfZXJyb3IpYHxgYXJndW1lbnRgIGlzIGEgYGRvdWJsZWAgdmFsdWUgY2xvc2UgdG8gYGFfZG91
YmxlYCAoYWJzb2x1dGUgZXJyb3IgPD0gYG1heF9hYnNfZXJyb3JgKSwgdHJlYXRpbmcgdHdvIE5h
TnMgYXMgZXF1YWwuICB8Ci18YE5hblNlbnNpdGl2ZUZsb2F0TmVhcihhX2Zsb2F0LCBtYXhfYWJz
X2Vycm9yKWB8YGFyZ3VtZW50YCBpcyBhIGBmbG9hdGAgdmFsdWUgY2xvc2UgdG8gYGFfZmxvYXRg
IChhYnNvbHV0ZSBlcnJvciA8PSBgbWF4X2Fic19lcnJvcmApLCB0cmVhdGluZyB0d28gTmFOcyBh
cyBlcXVhbC4gICAgfAotCi0jIyBTdHJpbmcgTWF0Y2hlcnMgIyMKLQotVGhlIGBhcmd1bWVudGAg
Y2FuIGJlIGVpdGhlciBhIEMgc3RyaW5nIG9yIGEgQysrIHN0cmluZyBvYmplY3Q6Ci0KLXxgQ29u
dGFpbnNSZWdleChzdHJpbmcpYHxgYXJndW1lbnRgIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIg
ZXhwcmVzc2lvbi58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBFbmRzV2l0aChzdWZmaXgpYCAgICAg
fGBhcmd1bWVudGAgZW5kcyB3aXRoIHN0cmluZyBgc3VmZml4YC4gICAgICAgICAgIHwKLXxgSGFz
U3Vic3RyKHN0cmluZylgICAgIHxgYXJndW1lbnRgIGNvbnRhaW5zIGBzdHJpbmdgIGFzIGEgc3Vi
LXN0cmluZy4gICB8Ci18YE1hdGNoZXNSZWdleChzdHJpbmcpYCB8YGFyZ3VtZW50YCBtYXRjaGVz
IHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24gd2l0aCB0aGUgbWF0Y2ggc3RhcnRpbmcgYXQg
dGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgZW5kaW5nIGF0IHRoZSBsYXN0IGNoYXJhY3Rlci58Ci18
YFN0YXJ0c1dpdGgocHJlZml4KWAgICB8YGFyZ3VtZW50YCBzdGFydHMgd2l0aCBzdHJpbmcgYHBy
ZWZpeGAuICAgICAgICAgfAotfGBTdHJDYXNlRXEoc3RyaW5nKWAgICAgfGBhcmd1bWVudGAgaXMg
ZXF1YWwgdG8gYHN0cmluZ2AsIGlnbm9yaW5nIGNhc2UuIHwKLXxgU3RyQ2FzZU5lKHN0cmluZylg
ICAgIHxgYXJndW1lbnRgIGlzIG5vdCBlcXVhbCB0byBgc3RyaW5nYCwgaWdub3JpbmcgY2FzZS58
Ci18YFN0ckVxKHN0cmluZylgICAgICAgICB8YGFyZ3VtZW50YCBpcyBlcXVhbCB0byBgc3RyaW5n
YC4gICAgICAgICAgICAgICAgfAotfGBTdHJOZShzdHJpbmcpYCAgICAgICAgfGBhcmd1bWVudGAg
aXMgbm90IGVxdWFsIHRvIGBzdHJpbmdgLiAgICAgICAgICAgIHwKLQotYENvbnRhaW5zUmVnZXgo
KWAgYW5kIGBNYXRjaGVzUmVnZXgoKWAgdXNlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KLXN5bnRh
eCBkZWZpbmVkCi1baGVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lr
aS9BZHZhbmNlZEd1aWRlI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgotYFN0ckNhc2VFcSgp
YCwgYFN0ckNhc2VOZSgpYCwgYFN0ckVxKClgLCBhbmQgYFN0ck5lKClgIHdvcmsgZm9yIHdpZGUK
LXN0cmluZ3MgYXMgd2VsbC4KLQotIyMgQ29udGFpbmVyIE1hdGNoZXJzICMjCi0KLU1vc3QgU1RM
LXN0eWxlIGNvbnRhaW5lcnMgc3VwcG9ydCBgPT1gLCBzbyB5b3UgY2FuIHVzZQotYEVxKGV4cGVj
dGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRjaCBh
Ci1jb250YWluZXIgZXhhY3RseS4gICBJZiB5b3Ugd2FudCB0byB3cml0ZSB0aGUgZWxlbWVudHMg
aW4tbGluZSwKLW1hdGNoIHRoZW0gbW9yZSBmbGV4aWJseSwgb3IgZ2V0IG1vcmUgaW5mb3JtYXRp
dmUgbWVzc2FnZXMsIHlvdSBjYW4gdXNlOgotCi18IGBDb250YWluZXJFcShjb250YWluZXIpYCB8
IFRoZSBzYW1lIGFzIGBFcShjb250YWluZXIpYCBleGNlcHQgdGhhdCB0aGUgZmFpbHVyZSBtZXNz
YWdlIGFsc28gaW5jbHVkZXMgd2hpY2ggZWxlbWVudHMgYXJlIGluIG9uZSBjb250YWluZXIgYnV0
IG5vdCB0aGUgb3RoZXIuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfCBgQ29udGFpbnMoZSlgICAgICAgICAgICAgfCBgYXJndW1lbnRgIGNvbnRhaW5z
IGFuIGVsZW1lbnQgdGhhdCBtYXRjaGVzIGBlYCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVl
IG9yIGEgbWF0Y2hlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18
IGBFYWNoKGUpYCAgICAgICAgICAgICAgICB8IGBhcmd1bWVudGAgaXMgYSBjb250YWluZXIgd2hl
cmUgX2V2ZXJ5XyBlbGVtZW50IG1hdGNoZXMgYGVgLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgdmFs
dWUgb3IgYSBtYXRjaGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYEVsZW1lbnRz
QXJlKGUwLCBlMSwgLi4uLCBlbilgIHwgYGFyZ3VtZW50YCBoYXMgYG4gKyAxYCBlbGVtZW50cywg
d2hlcmUgdGhlIGktdGggZWxlbWVudCBtYXRjaGVzIGBlaWAsIHdoaWNoIGNhbiBiZSBhIHZhbHVl
IG9yIGEgbWF0Y2hlci4gMCB0byAxMCBhcmd1bWVudHMgYXJlIGFsbG93ZWQuIHwKLXwgYEVsZW1l
bnRzQXJlQXJyYXkoeyBlMCwgZTEsIC4uLiwgZW4gfSlgLCBgRWxlbWVudHNBcmVBcnJheShhcnJh
eSlgLCBvciBgRWxlbWVudHNBcmVBcnJheShhcnJheSwgY291bnQpYCB8IFRoZSBzYW1lIGFzIGBF
bGVtZW50c0FyZSgpYCBleGNlcHQgdGhhdCB0aGUgZXhwZWN0ZWQgZWxlbWVudCB2YWx1ZXMvbWF0
Y2hlcnMgY29tZSBmcm9tIGFuIGluaXRpYWxpemVyIGxpc3QsIHZlY3Rvciwgb3IgQy1zdHlsZSBh
cnJheS4gfAotfCBgSXNFbXB0eSgpYCAgICAgICAgICAgICAgfCBgYXJndW1lbnRgIGlzIGFuIGVt
cHR5IGNvbnRhaW5lciAoYGNvbnRhaW5lci5lbXB0eSgpYCkuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18
IGBQb2ludHdpc2UobSwgY29udGFpbmVyKWAgfCBgYXJndW1lbnRgIGNvbnRhaW5zIHRoZSBzYW1l
IG51bWJlciBvZiBlbGVtZW50cyBhcyBpbiBgY29udGFpbmVyYCwgYW5kIGZvciBhbGwgaSwgKHRo
ZSBpLXRoIGVsZW1lbnQgaW4gYGFyZ3VtZW50YCwgdGhlIGktdGggZWxlbWVudCBpbiBgY29udGFp
bmVyYCkgbWF0Y2ggYG1gLCB3aGljaCBpcyBhIG1hdGNoZXIgb24gMi10dXBsZXMuIEUuZy4gYFBv
aW50d2lzZShMZSgpLCB1cHBlcl9ib3VuZHMpYCB2ZXJpZmllcyB0aGF0IGVhY2ggZWxlbWVudCBp
biBgYXJndW1lbnRgIGRvZXNuJ3QgZXhjZWVkIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgaW4g
YHVwcGVyX2JvdW5kc2AuIFNlZSBtb3JlIGRldGFpbCBiZWxvdy4gfAotfCBgU2l6ZUlzKG0pYCAg
ICAgICAgICAgICAgfCBgYXJndW1lbnRgIGlzIGEgY29udGFpbmVyIHdob3NlIHNpemUgbWF0Y2hl
cyBgbWAuIEUuZy4gYFNpemVJcygyKWAgb3IgYFNpemVJcyhMdCgyKSlgLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBVbm9yZGVyZWRFbGVtZW50c0FyZShl
MCwgZTEsIC4uLiwgZW4pYCB8IGBhcmd1bWVudGAgaGFzIGBuICsgMWAgZWxlbWVudHMsIGFuZCB1
bmRlciBzb21lIHBlcm11dGF0aW9uIGVhY2ggZWxlbWVudCBtYXRjaGVzIGFuIGBlaWAgKGZvciBh
IGRpZmZlcmVudCBgaWApLCB3aGljaCBjYW4gYmUgYSB2YWx1ZSBvciBhIG1hdGNoZXIuIDAgdG8g
MTAgYXJndW1lbnRzIGFyZSBhbGxvd2VkLiB8Ci18IGBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KHsgZTAsIGUxLCAuLi4sIGVuIH0pYCwgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkp
YCwgb3IgYFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoYXJyYXksIGNvdW50KWAgfCBUaGUgc2Ft
ZSBhcyBgVW5vcmRlcmVkRWxlbWVudHNBcmUoKWAgZXhjZXB0IHRoYXQgdGhlIGV4cGVjdGVkIGVs
ZW1lbnQgdmFsdWVzL21hdGNoZXJzIGNvbWUgZnJvbSBhbiBpbml0aWFsaXplciBsaXN0LCB2ZWN0
b3IsIG9yIEMtc3R5bGUgYXJyYXkuIHwKLXwgYFdoZW5Tb3J0ZWQobSlgICAgICAgICAgIHwgV2hl
biBgYXJndW1lbnRgIGlzIHNvcnRlZCB1c2luZyB0aGUgYDxgIG9wZXJhdG9yLCBpdCBtYXRjaGVz
IGNvbnRhaW5lciBtYXRjaGVyIGBtYC4gRS5nLiBgV2hlblNvcnRlZChVbm9yZGVyZWRFbGVtZW50
c0FyZSgxLCAyLCAzKSlgIHZlcmlmaWVzIHRoYXQgYGFyZ3VtZW50YCBjb250YWlucyBlbGVtZW50
cyBgMWAsIGAyYCwgYW5kIGAzYCwgaWdub3Jpbmcgb3JkZXIuIHwKLXwgYFdoZW5Tb3J0ZWRCeShj
b21wYXJhdG9yLCBtKWAgfCBUaGUgc2FtZSBhcyBgV2hlblNvcnRlZChtKWAsIGV4Y2VwdCB0aGF0
IHRoZSBnaXZlbiBjb21wYXJhdG9yIGluc3RlYWQgb2YgYDxgIGlzIHVzZWQgdG8gc29ydCBgYXJn
dW1lbnRgLiBFLmcuIGBXaGVuU29ydGVkQnkoc3RkOjpncmVhdGVyPGludD4oKSwgRWxlbWVudHNB
cmUoMywgMiwgMSkpYC4gfAotCi1Ob3RlczoKLQotICAqIFRoZXNlIG1hdGNoZXJzIGNhbiBhbHNv
IG1hdGNoOgotICAgIDEuIGEgbmF0aXZlIGFycmF5IHBhc3NlZCBieSByZWZlcmVuY2UgKGUuZy4g
aW4gYEZvbyhjb25zdCBpbnQgKCZhKVs1XSlgKSwgYW5kCi0gICAgMS4gYW4gYXJyYXkgcGFzc2Vk
IGFzIGEgcG9pbnRlciBhbmQgYSBjb3VudCAoZS5nLiBpbiBgQmFyKGNvbnN0IFQqIGJ1ZmZlciwg
aW50IGxlbilgIC0tIHNlZSBbTXVsdGktYXJndW1lbnQgTWF0Y2hlcnNdKCNNdWx0aWFyZ3VtZW50
X01hdGNoZXJzLm1kKSkuCi0gICogVGhlIGFycmF5IGJlaW5nIG1hdGNoZWQgbWF5IGJlIG11bHRp
LWRpbWVuc2lvbmFsIChpLmUuIGl0cyBlbGVtZW50cyBjYW4gYmUgYXJyYXlzKS4KLSAgKiBgbWAg
aW4gYFBvaW50d2lzZShtLCAuLi4pYCBzaG91bGQgYmUgYSBtYXRjaGVyIGZvciBgc3RkOjp0cjE6
OnR1cGxlPFQsIFU+YCB3aGVyZSBgVGAgYW5kIGBVYCBhcmUgdGhlIGVsZW1lbnQgdHlwZSBvZiB0
aGUgYWN0dWFsIGNvbnRhaW5lciBhbmQgdGhlIGV4cGVjdGVkIGNvbnRhaW5lciwgcmVzcGVjdGl2
ZWx5LiBGb3IgZXhhbXBsZSwgdG8gY29tcGFyZSB0d28gYEZvb2AgY29udGFpbmVycyB3aGVyZSBg
Rm9vYCBkb2Vzbid0IHN1cHBvcnQgYG9wZXJhdG9yPT1gIGJ1dCBoYXMgYW4gYEVxdWFscygpYCBt
ZXRob2QsIG9uZSBtaWdodCB3cml0ZToKLQotYGBgCi11c2luZyA6OnN0ZDo6dHIxOjpnZXQ7Ci1N
QVRDSEVSKEZvb0VxLCAiIikgewotICByZXR1cm4gZ2V0PDA+KGFyZykuRXF1YWxzKGdldDwxPihh
cmcpKTsKLX0KLS4uLgotRVhQRUNUX1RIQVQoYWN0dWFsX2Zvb3MsIFBvaW50d2lzZShGb29FcSgp
LCBleHBlY3RlZF9mb29zKSk7Ci1gYGAKLQotIyMgTWVtYmVyIE1hdGNoZXJzICMjCi0KLXxgRmll
bGQoJmNsYXNzOjpmaWVsZCwgbSlgfGBhcmd1bWVudC5maWVsZGAgKG9yIGBhcmd1bWVudC0+Zmll
bGRgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBvaW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBg
bWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0IG9mIHR5cGUgX2NsYXNzXy58Ci18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBL
ZXkoZSlgICAgICAgICAgICAgICAgICB8YGFyZ3VtZW50LmZpcnN0YCBtYXRjaGVzIGBlYCwgd2hp
Y2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hlci4gRS5nLiBgQ29udGFpbnMoS2V5
KExlKDUpKSlgIGNhbiB2ZXJpZnkgdGhhdCBhIGBtYXBgIGNvbnRhaW5zIGEga2V5IGA8PSA1YC58
Ci18YFBhaXIobTEsIG0yKWAgICAgICAgICAgIHxgYXJndW1lbnRgIGlzIGFuIGBzdGQ6OnBhaXJg
IHdob3NlIGBmaXJzdGAgZmllbGQgbWF0Y2hlcyBgbTFgIGFuZCBgc2Vjb25kYCBmaWVsZCBtYXRj
aGVzIGBtMmAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAotfGBQcm9wZXJ0eSgmY2xhc3M6OnByb3BlcnR5LCBtKWB8YGFyZ3VtZW50LnByb3BlcnR5KClg
IChvciBgYXJndW1lbnQtPnByb3BlcnR5KClgIHdoZW4gYGFyZ3VtZW50YCBpcyBhIHBsYWluIHBv
aW50ZXIpIG1hdGNoZXMgbWF0Y2hlciBgbWAsIHdoZXJlIGBhcmd1bWVudGAgaXMgYW4gb2JqZWN0
IG9mIHR5cGUgX2NsYXNzXy58Ci0KLSMjIE1hdGNoaW5nIHRoZSBSZXN1bHQgb2YgYSBGdW5jdGlv
biBvciBGdW5jdG9yICMjCi0KLXxgUmVzdWx0T2YoZiwgbSlgfGBmKGFyZ3VtZW50KWAgbWF0Y2hl
cyBtYXRjaGVyIGBtYCwgd2hlcmUgYGZgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Ci18Oi0t
LS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi0jIyBQb2ludGVyIE1hdGNoZXJzICMjCi0K
LXxgUG9pbnRlZShtKWB8YGFyZ3VtZW50YCAoZWl0aGVyIGEgc21hcnQgcG9pbnRlciBvciBhIHJh
dyBwb2ludGVyKSBwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgbWF0Y2hlciBgbWAufAot
fDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0K
LSMjIE11bHRpYXJndW1lbnQgTWF0Y2hlcnMgIyMKLQotVGVjaG5pY2FsbHksIGFsbCBtYXRjaGVy
cyBtYXRjaCBhIF9zaW5nbGVfIHZhbHVlLiBBICJtdWx0aS1hcmd1bWVudCIKLW1hdGNoZXIgaXMg
anVzdCBvbmUgdGhhdCBtYXRjaGVzIGEgX3R1cGxlXy4gVGhlIGZvbGxvd2luZyBtYXRjaGVycyBj
YW4KLWJlIHVzZWQgdG8gbWF0Y2ggYSB0dXBsZSBgKHgsIHkpYDoKLQotfGBFcSgpYHxgeCA9PSB5
YHwKLXw6LS0tLS18Oi0tLS0tLS18Ci18YEdlKClgfGB4ID49IHlgfAotfGBHdCgpYHxgeCA+IHlg
IHwKLXxgTGUoKWB8YHggPD0geWB8Ci18YEx0KClgfGB4IDwgeWAgfAotfGBOZSgpYHxgeCAhPSB5
YHwKLQotWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgdG8gcGljayBhIHN1YnNl
dCBvZiB0aGUgYXJndW1lbnRzCi0ob3IgcmVvcmRlciB0aGVtKSB0byBwYXJ0aWNpcGF0ZSBpbiB0
aGUgbWF0Y2hpbmc6Ci0KLXxgQWxsQXJncyhtKWB8RXF1aXZhbGVudCB0byBgbWAuIFVzZWZ1bCBh
cyBzeW50YWN0aWMgc3VnYXIgaW4gYC5XaXRoKEFsbEFyZ3MobSkpYC58Ci18Oi0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotfGBBcmdzPE4xLCBOMiwgLi4uLCBOaz4obSlgfFRoZSB0dXBsZSBvZiB0
aGUgYGtgIHNlbGVjdGVkICh1c2luZyAwLWJhc2VkIGluZGljZXMpIGFyZ3VtZW50cyBtYXRjaGVz
IGBtYCwgZS5nLiBgQXJnczwxLCAyPihFcSgpKWAufAotCi0jIyBDb21wb3NpdGUgTWF0Y2hlcnMg
IyMKLQotWW91IGNhbiBtYWtlIGEgbWF0Y2hlciBmcm9tIG9uZSBvciBtb3JlIG90aGVyIG1hdGNo
ZXJzOgotCi18YEFsbE9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhbGwg
b2YgdGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18
YEFueU9mKG0xLCBtMiwgLi4uLCBtbilgfGBhcmd1bWVudGAgbWF0Y2hlcyBhdCBsZWFzdCBvbmUg
b2YgdGhlIG1hdGNoZXJzIGBtMWAgdG8gYG1uYC58Ci18YE5vdChtKWAgICAgICAgICAgICAgICAg
fGBhcmd1bWVudGAgZG9lc24ndCBtYXRjaCBtYXRjaGVyIGBtYC4gICAgICAgICAgICAgICB8Ci0K
LSMjIEFkYXB0ZXJzIGZvciBNYXRjaGVycyAjIwotCi18YE1hdGNoZXJDYXN0PFQ+KG0pYHxjYXN0
cyBtYXRjaGVyIGBtYCB0byB0eXBlIGBNYXRjaGVyPFQ+YC58Ci18Oi0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YFNhZmVNYXRjaGVy
Q2FzdDxUPihtKWB8IFtzYWZlbHkgY2FzdHNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNDYXN0aW5nX01hdGNoZXJzKSBtYXRjaGVyIGBtYCB0
byB0eXBlIGBNYXRjaGVyPFQ+YC4gfAotfGBUcnVseShwcmVkaWNhdGUpYCB8YHByZWRpY2F0ZShh
cmd1bWVudClgIHJldHVybnMgc29tZXRoaW5nIGNvbnNpZGVyZWQgYnkgQysrIHRvIGJlIHRydWUs
IHdoZXJlIGBwcmVkaWNhdGVgIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rvci58Ci0KLSMjIE1hdGNo
ZXJzIGFzIFByZWRpY2F0ZXMgIyMKLQotfGBNYXRjaGVzKG0pKHZhbHVlKWB8ZXZhbHVhdGVzIHRv
IGB0cnVlYCBpZiBgdmFsdWVgIG1hdGNoZXMgYG1gLiBZb3UgY2FuIHVzZSBgTWF0Y2hlcyhtKWAg
YWxvbmUgYXMgYSB1bmFyeSBmdW5jdG9yLnwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEV4cGxhaW5NYXRjaFJlc3VsdChtLCB2
YWx1ZSwgcmVzdWx0X2xpc3RlbmVyKWB8ZXZhbHVhdGVzIHRvIGB0cnVlYCBpZiBgdmFsdWVgIG1h
dGNoZXMgYG1gLCBleHBsYWluaW5nIHRoZSByZXN1bHQgdG8gYHJlc3VsdF9saXN0ZW5lcmAuICAg
ICAgIHwKLXxgVmFsdWUodmFsdWUsIG0pYCAgfGV2YWx1YXRlcyB0byBgdHJ1ZWAgaWYgYHZhbHVl
YCBtYXRjaGVzIGBtYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8Ci0KLSMjIERlZmluaW5nIE1hdGNoZXJzICMjCi0KLXwgYE1BVENIRVIoSXNFdmVu
LCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH1gIHwgRGVmaW5lcyBhIG1hdGNoZXIgYElz
RXZlbigpYCB0byBtYXRjaCBhbiBldmVuIG51bWJlci4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBNQVRDSEVSX1AoSXNEaXZpc2libGVC
eSwgbiwgIiIpIHsgKnJlc3VsdF9saXN0ZW5lciA8PCAid2hlcmUgdGhlIHJlbWFpbmRlciBpcyAi
IDw8IChhcmcgJSBuKTsgcmV0dXJuIChhcmcgJSBuKSA9PSAwOyB9YCB8IERlZmluZXMgYSBtYWNo
ZXIgYElzRGl2aXNpYmxlQnkobilgIHRvIG1hdGNoIGEgbnVtYmVyIGRpdmlzaWJsZSBieSBgbmAu
IHwKLXwgYE1BVENIRVJfUDIoSXNCZXR3ZWVuLCBhLCBiLCBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/
ICJpc24ndCIgOiAiaXMiKSArICIgYmV0d2VlbiAiICsgUHJpbnRUb1N0cmluZyhhKSArICIgYW5k
ICIgKyBQcmludFRvU3RyaW5nKGIpKSB7IHJldHVybiBhIDw9IGFyZyAmJiBhcmcgPD0gYjsgfWAg
fCBEZWZpbmVzIGEgbWF0Y2hlciBgSXNCZXR3ZWVuKGEsIGIpYCB0byBtYXRjaCBhIHZhbHVlIGlu
IHRoZSByYW5nZSBbYGFgLCBgYmBdLiB8Ci0KLSoqTm90ZXM6KioKLQotICAxLiBUaGUgYE1BVENI
RVIqYCBtYWNyb3MgY2Fubm90IGJlIHVzZWQgaW5zaWRlIGEgZnVuY3Rpb24gb3IgY2xhc3MuCi0g
IDEuIFRoZSBtYXRjaGVyIGJvZHkgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUuIGl0
IGNhbm5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3QgZGVw
ZW5kIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRo
ZSBtYXRjaGVyIHBhcmFtZXRlcnMpLgotICAxLiBZb3UgY2FuIHVzZSBgUHJpbnRUb1N0cmluZyh4
KWAgdG8gY29udmVydCBhIHZhbHVlIGB4YCBvZiBhbnkgdHlwZSB0byBhIHN0cmluZy4KLQotIyMg
TWF0Y2hlcnMgYXMgVGVzdCBBc3NlcnRpb25zICMjCi0KLXxgQVNTRVJUX1RIQVQoZXhwcmVzc2lv
biwgbSlgfEdlbmVyYXRlcyBhIFtmYXRhbCBmYWlsdXJlXShodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvZ29vZ2xldGVzdC93aWtpL1ByaW1lciNBc3NlcnRpb25zKSBpZiB0aGUgdmFsdWUgb2YgYGV4
cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAufAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18YEVYUEVDVF9USEFU
KGV4cHJlc3Npb24sIG0pYHxHZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFpbHVyZSBpZiB0aGUgdmFs
dWUgb2YgYGV4cHJlc3Npb25gIGRvZXNuJ3QgbWF0Y2ggbWF0Y2hlciBgbWAuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQotIyBBY3Rp
b25zICMKLQotKipBY3Rpb25zKiogc3BlY2lmeSB3aGF0IGEgbW9jayBmdW5jdGlvbiBzaG91bGQg
ZG8gd2hlbiBpbnZva2VkLgotCi0jIyBSZXR1cm5pbmcgYSBWYWx1ZSAjIwotCi18YFJldHVybigp
YHxSZXR1cm4gZnJvbSBhIGB2b2lkYCBtb2NrIGZ1bmN0aW9uLnwKLXw6LS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBSZXR1cm4odmFsdWUpYHxSZXR1cm4g
YHZhbHVlYC4gSWYgdGhlIHR5cGUgb2YgYHZhbHVlYCBpcyBkaWZmZXJlbnQgdG8gdGhlIG1vY2sg
ZnVuY3Rpb24ncyByZXR1cm4gdHlwZSwgYHZhbHVlYCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxhdHRl
ciB0eXBlIDxpPmF0IHRoZSB0aW1lIHRoZSBleHBlY3RhdGlvbiBpcyBzZXQ8L2k+LCBub3Qgd2hl
biB0aGUgYWN0aW9uIGlzIGV4ZWN1dGVkLnwKLXxgUmV0dXJuQXJnPE4+KClgfFJldHVybiB0aGUg
YE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC58Ci18YFJldHVybk5ldzxUPihhMSwgLi4uLCBhaylg
fFJldHVybiBgbmV3IFQoYTEsIC4uLiwgYWspYDsgYSBkaWZmZXJlbnQgb2JqZWN0IGlzIGNyZWF0
ZWQgZWFjaCB0aW1lLnwKLXxgUmV0dXJuTnVsbCgpYHxSZXR1cm4gYSBudWxsIHBvaW50ZXIuICAg
ICAgICAgICAgIHwKLXxgUmV0dXJuUG9pbnRlZShwdHIpYHxSZXR1cm4gdGhlIHZhbHVlIHBvaW50
ZWQgdG8gYnkgYHB0cmAufAotfGBSZXR1cm5SZWYodmFyaWFibGUpYHxSZXR1cm4gYSByZWZlcmVu
Y2UgdG8gYHZhcmlhYmxlYC4gIHwKLXxgUmV0dXJuUmVmT2ZDb3B5KHZhbHVlKWB8UmV0dXJuIGEg
cmVmZXJlbmNlIHRvIGEgY29weSBvZiBgdmFsdWVgOyB0aGUgY29weSBsaXZlcyBhcyBsb25nIGFz
IHRoZSBhY3Rpb24ufAotCi0jIyBTaWRlIEVmZmVjdHMgIyMKLQotfGBBc3NpZ24oJnZhcmlhYmxl
LCB2YWx1ZSlgfEFzc2lnbiBgdmFsdWVgIHRvIHZhcmlhYmxlLnwKLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBEZWxldGVBcmc8Tj4o
KWAgICAgICAgICB8IERlbGV0ZSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCwgd2hpY2gg
bXVzdCBiZSBhIHBvaW50ZXIuIHwKLXwgYFNhdmVBcmc8Tj4ocG9pbnRlcilgICAgIHwgU2F2ZSB0
aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBgKnBvaW50ZXJgLiB8Ci18IGBTYXZlQXJn
UG9pbnRlZTxOPihwb2ludGVyKWAgfCBTYXZlIHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSBg
TmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50IHRvIGAqcG9pbnRlcmAuIHwKLXwgYFNldEFyZ1JlZmVy
ZWU8Tj4odmFsdWUpYCB8CUFzc2lnbiB2YWx1ZSB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlZCBi
eSB0aGUgYE5gLXRoICgwLWJhc2VkKSBhcmd1bWVudC4gfAotfGBTZXRBcmdQb2ludGVlPE4+KHZh
bHVlKWAgfEFzc2lnbiBgdmFsdWVgIHRvIHRoZSB2YXJpYWJsZSBwb2ludGVkIGJ5IHRoZSBgTmAt
dGggKDAtYmFzZWQpIGFyZ3VtZW50LnwKLXxgU2V0QXJndW1lbnRQb2ludGVlPE4+KHZhbHVlKWB8
U2FtZSBhcyBgU2V0QXJnUG9pbnRlZTxOPih2YWx1ZSlgLiBEZXByZWNhdGVkLiBXaWxsIGJlIHJl
bW92ZWQgaW4gdjEuNy4wLnwKLXxgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClgfENv
cGllcyB0aGUgZWxlbWVudHMgaW4gc291cmNlIHJhbmdlIFtgZmlyc3RgLCBgbGFzdGApIHRvIHRo
ZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGlj
aCBjYW4gYmUgZWl0aGVyIGEgcG9pbnRlciBvciBhbiBpdGVyYXRvci4gVGhlIGFjdGlvbiBkb2Vz
IG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNvdXJjZSByYW5nZS58
Ci18YFNldEVycm5vQW5kUmV0dXJuKGVycm9yLCB2YWx1ZSlgfFNldCBgZXJybm9gIHRvIGBlcnJv
cmAgYW5kIHJldHVybiBgdmFsdWVgLnwKLXxgVGhyb3coZXhjZXB0aW9uKWAgICAgICAgIHxUaHJv
d3MgdGhlIGdpdmVuIGV4Y2VwdGlvbiwgd2hpY2ggY2FuIGJlIGFueSBjb3B5YWJsZSB2YWx1ZS4g
QXZhaWxhYmxlIHNpbmNlIHYxLjEuMC58Ci0KLSMjIFVzaW5nIGEgRnVuY3Rpb24gb3IgYSBGdW5j
dG9yIGFzIGFuIEFjdGlvbiAjIwotCi18YEludm9rZShmKWB8SW52b2tlIGBmYCB3aXRoIHRoZSBh
cmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtb2NrIGZ1bmN0aW9uLCB3aGVyZSBgZmAgY2FuIGJlIGEg
Z2xvYmFsL3N0YXRpYyBmdW5jdGlvbiBvciBhIGZ1bmN0b3IufAotfDotLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXxg
SW52b2tlKG9iamVjdF9wb2ludGVyLCAmY2xhc3M6Om1ldGhvZClgfEludm9rZSB0aGUge21ldGhv
ZCBvbiB0aGUgb2JqZWN0IHdpdGggdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG1vY2sgZnVu
Y3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91
dEFyZ3MoZilgfEludm9rZSBgZmAsIHdoaWNoIGNhbiBiZSBhIGdsb2JhbC9zdGF0aWMgZnVuY3Rp
b24gb3IgYSBmdW5jdG9yLiBgZmAgbXVzdCB0YWtlIG5vIGFyZ3VtZW50cy4gICAgICAgICAgICAg
ICAgICAgICAgIHwKLXxgSW52b2tlV2l0aG91dEFyZ3Mob2JqZWN0X3BvaW50ZXIsICZjbGFzczo6
bWV0aG9kKWB8SW52b2tlIHRoZSBtZXRob2Qgb24gdGhlIG9iamVjdCwgd2hpY2ggdGFrZXMgbm8g
YXJndW1lbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAotfGBJbnZva2VBcmd1bWVudDxOPihhcmcxLCBhcmcyLCAuLi4sIGFyZ2spYHxJ
bnZva2UgdGhlIG1vY2sgZnVuY3Rpb24ncyBgTmAtdGggKDAtYmFzZWQpIGFyZ3VtZW50LCB3aGlj
aCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yLCB3aXRoIHRoZSBga2AgYXJndW1lbnRz
LnwKLQotVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbiBpcyB1c2VkIGFz
IHRoZSByZXR1cm4gdmFsdWUKLW9mIHRoZSBhY3Rpb24uCi0KLVdoZW4gZGVmaW5pbmcgYSBmdW5j
dGlvbiBvciBmdW5jdG9yIHRvIGJlIHVzZWQgd2l0aCBgSW52b2tlKigpYCwgeW91IGNhbiBkZWNs
YXJlIGFueSB1bnVzZWQgcGFyYW1ldGVycyBhcyBgVW51c2VkYDoKLWBgYAotICBkb3VibGUgRGlz
dGFuY2UoVW51c2VkLCBkb3VibGUgeCwgZG91YmxlIHkpIHsgcmV0dXJuIHNxcnQoeCp4ICsgeSp5
KTsgfQotICAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKCJIaSIsIF8sIF8pKS5XaWxsT25j
ZShJbnZva2UoRGlzdGFuY2UpKTsKLWBgYAotCi1JbiBgSW52b2tlQXJndW1lbnQ8Tj4oLi4uKWAs
IGlmIGFuIGFyZ3VtZW50IG5lZWRzIHRvIGJlIHBhc3NlZCBieSByZWZlcmVuY2UsIHdyYXAgaXQg
aW5zaWRlIGBCeVJlZigpYC4gRm9yIGV4YW1wbGUsCi1gYGAKLSAgSW52b2tlQXJndW1lbnQ8Mj4o
NSwgc3RyaW5nKCJIaSIpLCBCeVJlZihmb28pKQotYGBgCi1jYWxscyB0aGUgbW9jayBmdW5jdGlv
bidzICMyIGFyZ3VtZW50LCBwYXNzaW5nIHRvIGl0IGA1YCBhbmQgYHN0cmluZygiSGkiKWAgYnkg
dmFsdWUsIGFuZCBgZm9vYCBieSByZWZlcmVuY2UuCi0KLSMjIERlZmF1bHQgQWN0aW9uICMjCi0K
LXxgRG9EZWZhdWx0KClgfERvIHRoZSBkZWZhdWx0IGFjdGlvbiAoc3BlY2lmaWVkIGJ5IGBPTl9D
QUxMKClgIG9yIHRoZSBidWlsdC1pbiBvbmUpLnwKLXw6LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwKLQotKipOb3RlOioqIGR1ZSB0byB0ZWNobmljYWwgcmVhc29ucywgYERvRGVmYXVsdCgpYCBj
YW5ub3QgYmUgdXNlZCBpbnNpZGUgIGEgY29tcG9zaXRlIGFjdGlvbiAtIHRyeWluZyB0byBkbyBz
byB3aWxsIHJlc3VsdCBpbiBhIHJ1bi10aW1lIGVycm9yLgotCi0jIyBDb21wb3NpdGUgQWN0aW9u
cyAjIwotCi18YERvQWxsKGExLCBhMiwgLi4uLCBhbilgfERvIGFsbCBhY3Rpb25zIGBhMWAgdG8g
YGFuYCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgYGFuYCBpbiBlYWNoIGludm9jYXRpb24uIFRo
ZSBmaXJzdCBgbiAtIDFgIHN1Yi1hY3Rpb25zIG11c3QgcmV0dXJuIHZvaWQuIHwKLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfGBJZ25vcmVSZXN1bHQoYSlgICAgICAg
IHxQZXJmb3JtIGFjdGlvbiBgYWAgYW5kIGlnbm9yZSBpdHMgcmVzdWx0LiBgYWAgbXVzdCBub3Qg
cmV0dXJuIHZvaWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci18YFdpdGhBcmc8Tj4oYSlgICAgICAgICAgfFBhc3MgdGhlIGBOYC10
aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gdG8gYWN0aW9uIGBhYCBh
bmQgcGVyZm9ybSBpdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LXxgV2l0aEFyZ3M8TjEsIE4yLCAuLi4sIE5rPihhKWB8UGFzcyB0aGUgc2VsZWN0ZWQgKDAtYmFz
ZWQpIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhY3Rpb24gYGFgIGFuZCBwZXJm
b3JtIGl0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfGBXaXRob3V0
QXJncyhhKWAgICAgICAgIHxQZXJmb3JtIGFjdGlvbiBgYWAgd2l0aG91dCBhbnkgYXJndW1lbnRz
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSMjIERlZmluaW5nIEFjdGlvbnMgIyMK
LQotfCBgQUNUSU9OKFN1bSkgeyByZXR1cm4gYXJnMCArIGFyZzE7IH1gIHwgRGVmaW5lcyBhbiBh
Y3Rpb24gYFN1bSgpYCB0byByZXR1cm4gdGhlIHN1bSBvZiB0aGUgbW9jayBmdW5jdGlvbidzIGFy
Z3VtZW50ICMwIGFuZCAjMS4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgQUNUSU9OX1AoUGx1cywg
bikgeyByZXR1cm4gYXJnMCArIG47IH1gIHwgRGVmaW5lcyBhbiBhY3Rpb24gYFBsdXMobilgIHRv
IHJldHVybiB0aGUgc3VtIG9mIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgIzAgYW5kIGBu
YC4gfAotfCBgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsgc3RhdGVtZW50czsgfWAgfCBE
ZWZpbmVzIGEgcGFyYW1ldGVyaXplZCBhY3Rpb24gYEZvbyhwMSwgLi4uLCBwaylgIHRvIGV4ZWN1
dGUgdGhlIGdpdmVuIGBzdGF0ZW1lbnRzYC4gICB8Ci0KLVRoZSBgQUNUSU9OKmAgbWFjcm9zIGNh
bm5vdCBiZSB1c2VkIGluc2lkZSBhIGZ1bmN0aW9uIG9yIGNsYXNzLgotCi0jIENhcmRpbmFsaXRp
ZXMgIwotCi1UaGVzZSBhcmUgdXNlZCBpbiBgVGltZXMoKWAgdG8gc3BlY2lmeSBob3cgbWFueSB0
aW1lcyBhIG1vY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQ6Ci0KLXxgQW55TnVtYmVyKClgfFRo
ZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMufAotfDotLS0tLS0t
LS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18
YEF0TGVhc3QobilgIHxUaGUgY2FsbCBpcyBleHBlY3RlZCBhdCBsZWFzdCBgbmAgdGltZXMuICAg
ICAgIHwKLXxgQXRNb3N0KG4pYCAgfFRoZSBjYWxsIGlzIGV4cGVjdGVkIGF0IG1vc3QgYG5gIHRp
bWVzLiAgICAgICAgfAotfGBCZXR3ZWVuKG0sIG4pYHxUaGUgY2FsbCBpcyBleHBlY3RlZCBiZXR3
ZWVuIGBtYCBhbmQgYG5gIChpbmNsdXNpdmUpIHRpbWVzLnwKLXxgRXhhY3RseShuKSBvciBuYHxU
aGUgY2FsbCBpcyBleHBlY3RlZCBleGFjdGx5IGBuYCB0aW1lcy4gSW4gcGFydGljdWxhciwgdGhl
IGNhbGwgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGBuYCBpcyAwLnwKLQotIyBFeHBlY3RhdGlv
biBPcmRlciAjCi0KLUJ5IGRlZmF1bHQsIHRoZSBleHBlY3RhdGlvbnMgY2FuIGJlIG1hdGNoZWQg
aW4gX2FueV8gb3JkZXIuICBJZiBzb21lCi1vciBhbGwgZXhwZWN0YXRpb25zIG11c3QgYmUgbWF0
Y2hlZCBpbiBhIGdpdmVuIG9yZGVyLCB0aGVyZSBhcmUgdHdvCi13YXlzIHRvIHNwZWNpZnkgaXQu
ICBUaGV5IGNhbiBiZSB1c2VkIGVpdGhlciBpbmRlcGVuZGVudGx5IG9yCi10b2dldGhlci4KLQot
IyMgVGhlIEFmdGVyIENsYXVzZSAjIwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RXhwZWN0YXRp
b247Ci0uLi4KLUV4cGVjdGF0aW9uIGluaXRfeCA9IEVYUEVDVF9DQUxMKGZvbywgSW5pdFgoKSk7
Ci1FeHBlY3RhdGlvbiBpbml0X3kgPSBFWFBFQ1RfQ0FMTChmb28sIEluaXRZKCkpOwotRVhQRUNU
X0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoaW5pdF94LCBpbml0X3kpOwotYGBgCi1zYXlz
IHRoYXQgYEJhcigpYCBjYW4gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgYm90aCBgSW5pdFgoKWAgYW5k
Ci1gSW5pdFkoKWAgaGF2ZSBiZWVuIGNhbGxlZC4KLQotSWYgeW91IGRvbid0IGtub3cgaG93IG1h
bnkgcHJlLXJlcXVpc2l0ZXMgYW4gZXhwZWN0YXRpb24gaGFzIHdoZW4geW91Ci13cml0ZSBpdCwg
eW91IGNhbiB1c2UgYW4gYEV4cGVjdGF0aW9uU2V0YCB0byBjb2xsZWN0IHRoZW06Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKLS4uLgotRXhwZWN0YXRpb25TZXQgYWxs
X2luaXRzOwotZm9yIChpbnQgaSA9IDA7IGkgPCBlbGVtZW50X2NvdW50OyBpKyspIHsKLSAgYWxs
X2luaXRzICs9IEVYUEVDVF9DQUxMKGZvbywgSW5pdEVsZW1lbnQoaSkpOwotfQotRVhQRUNUX0NB
TEwoZm9vLCBCYXIoKSkKLSAgICAuQWZ0ZXIoYWxsX2luaXRzKTsKLWBgYAotc2F5cyB0aGF0IGBC
YXIoKWAgY2FuIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGFsbCBlbGVtZW50cyBoYXZlIGJlZW4KLWlu
aXRpYWxpemVkIChidXQgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGljaCBlbGVtZW50cyBnZXQgaW5p
dGlhbGl6ZWQKLWJlZm9yZSB0aGUgb3RoZXJzKS4KLQotTW9kaWZ5aW5nIGFuIGBFeHBlY3RhdGlv
blNldGAgYWZ0ZXIgdXNpbmcgaXQgaW4gYW4gYC5BZnRlcigpYCBkb2Vzbid0Ci1hZmZlY3QgdGhl
IG1lYW5pbmcgb2YgdGhlIGAuQWZ0ZXIoKWAuCi0KLSMjIFNlcXVlbmNlcyAjIwotCi1XaGVuIHlv
dSBoYXZlIGEgbG9uZyBjaGFpbiBvZiBzZXF1ZW50aWFsIGV4cGVjdGF0aW9ucywgaXQncyBlYXNp
ZXIgdG8KLXNwZWNpZnkgdGhlIG9yZGVyIHVzaW5nICoqc2VxdWVuY2VzKiosIHdoaWNoIGRvbid0
IHJlcXVpcmUgeW91IHRvIGdpdmVuCi1lYWNoIGV4cGVjdGF0aW9uIGluIHRoZSBjaGFpbiBhIGRp
ZmZlcmVudCBuYW1lLiAgPGk+QWxsIGV4cGVjdGVkPGJyPgotY2FsbHM8L2k+IGluIHRoZSBzYW1l
IHNlcXVlbmNlIG11c3Qgb2NjdXIgaW4gdGhlIG9yZGVyIHRoZXkgYXJlCi1zcGVjaWZpZWQuCi0K
LWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLVNlcXVlbmNlIHMxLCBzMjsKLS4uLgot
RVhQRUNUX0NBTEwoZm9vLCBSZXNldCgpKQotICAgIC5JblNlcXVlbmNlKHMxLCBzMikKLSAgICAu
V2lsbE9uY2UoUmV0dXJuKHRydWUpKTsKLUVYUEVDVF9DQUxMKGZvbywgR2V0U2l6ZSgpKQotICAg
IC5JblNlcXVlbmNlKHMxKQotICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotRVhQRUNUX0NBTEwo
Zm9vLCBEZXNjcmliZShBPGNvbnN0IGNoYXIqPigpKSkKLSAgICAuSW5TZXF1ZW5jZShzMikKLSAg
ICAuV2lsbE9uY2UoUmV0dXJuKCJkdW1teSIpKTsKLWBgYAotc2F5cyB0aGF0IGBSZXNldCgpYCBt
dXN0IGJlIGNhbGxlZCBiZWZvcmUgX2JvdGhfIGBHZXRTaXplKClgIF9hbmRfCi1gRGVzY3JpYmUo
KWAsIGFuZCB0aGUgbGF0dGVyIHR3byBjYW4gb2NjdXIgaW4gYW55IG9yZGVyLgotCi1UbyBwdXQg
bWFueSBleHBlY3RhdGlvbnMgaW4gYSBzZXF1ZW5jZSBjb252ZW5pZW50bHk6Ci1gYGAKLXVzaW5n
IDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsKLXsKLSAgSW5TZXF1ZW5jZSBkdW1teTsKLQotICBFWFBF
Q1RfQ0FMTCguLi4pLi4uOwotICBFWFBFQ1RfQ0FMTCguLi4pLi4uOwotICAuLi4KLSAgRVhQRUNU
X0NBTEwoLi4uKS4uLjsKLX0KLWBgYAotc2F5cyB0aGF0IGFsbCBleHBlY3RlZCBjYWxscyBpbiB0
aGUgc2NvcGUgb2YgYGR1bW15YCBtdXN0IG9jY3VyIGluCi1zdHJpY3Qgb3JkZXIuIFRoZSBuYW1l
IGBkdW1teWAgaXMgaXJyZWxldmFudC4pCi0KLSMgVmVyaWZ5aW5nIGFuZCBSZXNldHRpbmcgYSBN
b2NrICMKLQotR29vZ2xlIE1vY2sgd2lsbCB2ZXJpZnkgdGhlIGV4cGVjdGF0aW9ucyBvbiBhIG1v
Y2sgb2JqZWN0IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZCwgb3IgeW91IGNhbiBkbyBpdCBlYXJsaWVy
OgotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1vY2s7Ci0uLi4KLS8vIFZlcmlmaWVzIGFuZCByZW1v
dmVzIHRoZSBleHBlY3RhdGlvbnMgb24gbW9ja19vYmo7Ci0vLyByZXR1cm5zIHRydWUgaWZmIHN1
Y2Nlc3NmdWwuCi1Nb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbW9ja19vYmopOwot
Li4uCi0vLyBWZXJpZmllcyBhbmQgcmVtb3ZlcyB0aGUgZXhwZWN0YXRpb25zIG9uIG1vY2tfb2Jq
OwotLy8gYWxzbyByZW1vdmVzIHRoZSBkZWZhdWx0IGFjdGlvbnMgc2V0IGJ5IE9OX0NBTEwoKTsK
LS8vIHJldHVybnMgdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLU1vY2s6OlZlcmlmeUFuZENsZWFyKCZt
b2NrX29iaik7Ci1gYGAKLQotWW91IGNhbiBhbHNvIHRlbGwgR29vZ2xlIE1vY2sgdGhhdCBhIG1v
Y2sgb2JqZWN0IGNhbiBiZSBsZWFrZWQgYW5kIGRvZXNuJ3QKLW5lZWQgdG8gYmUgdmVyaWZpZWQ6
Ci1gYGAKLU1vY2s6OkFsbG93TGVhaygmbW9ja19vYmopOwotYGBgCi0KLSMgTW9jayBDbGFzc2Vz
ICMKLQotR29vZ2xlIE1vY2sgZGVmaW5lcyBhIGNvbnZlbmllbnQgbW9jayBjbGFzcyB0ZW1wbGF0
ZQotYGBgCi1jbGFzcyBNb2NrRnVuY3Rpb248UihBMSwgLi4uLCBBbik+IHsKLSBwdWJsaWM6Ci0g
IE1PQ0tfTUVUSE9EbihDYWxsLCBSKEExLCAuLi4sIEFuKSk7Ci19OwotYGBgCi1TZWUgdGhpcyBb
cmVjaXBlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29v
a0Jvb2sjVXNpbmdfQ2hlY2tfUG9pbnRzKSBmb3Igb25lIGFwcGxpY2F0aW9uIG9mIGl0LgotCi0j
IEZsYWdzICMKLQotfCBgLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MGAgfCBEb24ndCByZXBv
cnQgbGVha2VkIG1vY2sgb2JqZWN0cyBhcyBmYWlsdXJlcy4gfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotfCBgLS1nbW9ja192ZXJib3NlPUxFVkVMYCAgICAgICAgfCBTZXRzIHRoZSBkZWZh
dWx0IHZlcmJvc2l0eSBsZXZlbCAoYGluZm9gLCBgd2FybmluZ2AsIG9yIGBlcnJvcmApIG9mIEdv
b2dsZSBNb2NrIG1lc3NhZ2VzLiB8ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0Nvb2tCb29rLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9j
cy92MV83L0Nvb2tCb29rLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTlhMDAx
MDcxMjUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvQ29va0Jvb2su
bWQKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMyICswLDAgQEAKLQotCi1Zb3UgY2FuIGZpbmQgcmVj
aXBlcyBmb3IgdXNpbmcgR29vZ2xlIE1vY2sgaGVyZS4gSWYgeW91IGhhdmVuJ3QgeWV0LAotcGxl
YXNlIHJlYWQgdGhlIFtGb3JEdW1taWVzXShWMV83X0ZvckR1bW1pZXMubWQpIGRvY3VtZW50IGZp
cnN0IHRvIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZAotdGhlIGJhc2ljcy4KLQotKipOb3RlOioq
IEdvb2dsZSBNb2NrIGxpdmVzIGluIHRoZSBgdGVzdGluZ2AgbmFtZSBzcGFjZS4gRm9yCi1yZWFk
YWJpbGl0eSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gd3JpdGUgYHVzaW5nIDo6dGVzdGluZzo6Rm9v
O2Agb25jZSBpbgoteW91ciBmaWxlIGJlZm9yZSB1c2luZyB0aGUgbmFtZSBgRm9vYCBkZWZpbmVk
IGJ5IEdvb2dsZSBNb2NrLiBXZSBvbWl0Ci1zdWNoIGB1c2luZ2Agc3RhdGVtZW50cyBpbiB0aGlz
IHBhZ2UgZm9yIGJyZXZpdHksIGJ1dCB5b3Ugc2hvdWxkIGRvIGl0Ci1pbiB5b3VyIG93biBjb2Rl
LgotCi0jIENyZWF0aW5nIE1vY2sgQ2xhc3NlcyAjCi0KLSMjIE1vY2tpbmcgUHJpdmF0ZSBvciBQ
cm90ZWN0ZWQgTWV0aG9kcyAjIwotCi1Zb3UgbXVzdCBhbHdheXMgcHV0IGEgbW9jayBtZXRob2Qg
ZGVmaW5pdGlvbiAoYE1PQ0tfTUVUSE9EKmApIGluIGEKLWBwdWJsaWM6YCBzZWN0aW9uIG9mIHRo
ZSBtb2NrIGNsYXNzLCByZWdhcmRsZXNzIG9mIHRoZSBtZXRob2QgYmVpbmcKLW1vY2tlZCBiZWlu
ZyBgcHVibGljYCwgYHByb3RlY3RlZGAsIG9yIGBwcml2YXRlYCBpbiB0aGUgYmFzZSBjbGFzcy4K
LVRoaXMgYWxsb3dzIGBPTl9DQUxMYCBhbmQgYEVYUEVDVF9DQUxMYCB0byByZWZlcmVuY2UgdGhl
IG1vY2sgZnVuY3Rpb24KLWZyb20gb3V0c2lkZSBvZiB0aGUgbW9jayBjbGFzcy4gIChZZXMsIEMr
KyBhbGxvd3MgYSBzdWJjbGFzcyB0byBjaGFuZ2UKLXRoZSBhY2Nlc3MgbGV2ZWwgb2YgYSB2aXJ0
dWFsIGZ1bmN0aW9uIGluIHRoZSBiYXNlIGNsYXNzLikgIEV4YW1wbGU6Ci0KLWBgYAotY2xhc3Mg
Rm9vIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFsIGJvb2wgVHJhbnNmb3JtKEdhZGdldCog
ZykgPSAwOwotCi0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgUmVzdW1lKCk7Ci0KLSBwcml2
YXRlOgotICB2aXJ0dWFsIGludCBHZXRUaW1lT3V0KCk7Ci19OwotCi1jbGFzcyBNb2NrRm9vIDog
cHVibGljIEZvbyB7Ci0gcHVibGljOgotICAuLi4KLSAgTU9DS19NRVRIT0QxKFRyYW5zZm9ybSwg
Ym9vbChHYWRnZXQqIGcpKTsKLQotICAvLyBUaGUgZm9sbG93aW5nIG11c3QgYmUgaW4gdGhlIHB1
YmxpYyBzZWN0aW9uLCBldmVuIHRob3VnaCB0aGUKLSAgLy8gbWV0aG9kcyBhcmUgcHJvdGVjdGVk
IG9yIHByaXZhdGUgaW4gdGhlIGJhc2UgY2xhc3MuCi0gIE1PQ0tfTUVUSE9EMChSZXN1bWUsIHZv
aWQoKSk7Ci0gIE1PQ0tfTUVUSE9EMChHZXRUaW1lT3V0LCBpbnQoKSk7Ci19OwotYGBgCi0KLSMj
IE1vY2tpbmcgT3ZlcmxvYWRlZCBNZXRob2RzICMjCi0KLVlvdSBjYW4gbW9jayBvdmVybG9hZGVk
IGZ1bmN0aW9ucyBhcyB1c3VhbC4gTm8gc3BlY2lhbCBhdHRlbnRpb24gaXMgcmVxdWlyZWQ6Ci0K
LWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0KLSAgLy8gTXVzdCBiZSB2aXJ0dWFsIGFzIHdlJ2xs
IGluaGVyaXQgZnJvbSBGb28uCi0gIHZpcnR1YWwgfkZvbygpOwotCi0gIC8vIE92ZXJsb2FkZWQg
b24gdGhlIHR5cGVzIGFuZC9vciBudW1iZXJzIG9mIGFyZ3VtZW50cy4KLSAgdmlydHVhbCBpbnQg
QWRkKEVsZW1lbnQgeCk7Ci0gIHZpcnR1YWwgaW50IEFkZChpbnQgdGltZXMsIEVsZW1lbnQgeCk7
Ci0KLSAgLy8gT3ZlcmxvYWRlZCBvbiB0aGUgY29uc3QtbmVzcyBvZiB0aGlzIG9iamVjdC4KLSAg
dmlydHVhbCBCYXImIEdldEJhcigpOwotICB2aXJ0dWFsIGNvbnN0IEJhciYgR2V0QmFyKCkgY29u
c3Q7Ci19OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC4uLgotICBNT0NLX01F
VEhPRDEoQWRkLCBpbnQoRWxlbWVudCB4KSk7Ci0gIE1PQ0tfTUVUSE9EMihBZGQsIGludChpbnQg
dGltZXMsIEVsZW1lbnQgeCk7Ci0KLSAgTU9DS19NRVRIT0QwKEdldEJhciwgQmFyJigpKTsKLSAg
TU9DS19DT05TVF9NRVRIT0QwKEdldEJhciwgY29uc3QgQmFyJigpKTsKLX07Ci1gYGAKLQotKipO
b3RlOioqIGlmIHlvdSBkb24ndCBtb2NrIGFsbCB2ZXJzaW9ucyBvZiB0aGUgb3ZlcmxvYWRlZCBt
ZXRob2QsIHRoZQotY29tcGlsZXIgd2lsbCBnaXZlIHlvdSBhIHdhcm5pbmcgYWJvdXQgc29tZSBt
ZXRob2RzIGluIHRoZSBiYXNlIGNsYXNzCi1iZWluZyBoaWRkZW4uIFRvIGZpeCB0aGF0LCB1c2Ug
YHVzaW5nYCB0byBicmluZyB0aGVtIGluIHNjb3BlOgotCi1gYGAKLWNsYXNzIE1vY2tGb28gOiBw
dWJsaWMgRm9vIHsKLSAgLi4uCi0gIHVzaW5nIEZvbzo6QWRkOwotICBNT0NLX01FVEhPRDEoQWRk
LCBpbnQoRWxlbWVudCB4KSk7Ci0gIC8vIFdlIGRvbid0IHdhbnQgdG8gbW9jayBpbnQgQWRkKGlu
dCB0aW1lcywgRWxlbWVudCB4KTsKLSAgLi4uCi19OwotYGBgCi0KLSMjIE1vY2tpbmcgQ2xhc3Mg
VGVtcGxhdGVzICMjCi0KLVRvIG1vY2sgYSBjbGFzcyB0ZW1wbGF0ZSwgYXBwZW5kIGBfVGAgdG8g
dGhlIGBNT0NLXypgIG1hY3JvczoKLQotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbT4KLWNs
YXNzIFN0YWNrSW50ZXJmYWNlIHsKLSAgLi4uCi0gIC8vIE11c3QgYmUgdmlydHVhbCBhcyB3ZSds
bCBpbmhlcml0IGZyb20gU3RhY2tJbnRlcmZhY2UuCi0gIHZpcnR1YWwgflN0YWNrSW50ZXJmYWNl
KCk7Ci0KLSAgdmlydHVhbCBpbnQgR2V0U2l6ZSgpIGNvbnN0ID0gMDsKLSAgdmlydHVhbCB2b2lk
IFB1c2goY29uc3QgRWxlbSYgeCkgPSAwOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW0+
Ci1jbGFzcyBNb2NrU3RhY2sgOiBwdWJsaWMgU3RhY2tJbnRlcmZhY2U8RWxlbT4gewotICAuLi4K
LSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwgaW50KCkpOwotICBNT0NLX01FVEhPRDFf
VChQdXNoLCB2b2lkKGNvbnN0IEVsZW0mIHgpKTsKLX07Ci1gYGAKLQotIyMgTW9ja2luZyBOb252
aXJ0dWFsIE1ldGhvZHMgIyMKLQotR29vZ2xlIE1vY2sgY2FuIG1vY2sgbm9uLXZpcnR1YWwgZnVu
Y3Rpb25zIHRvIGJlIHVzZWQgaW4gd2hhdCB3ZSBjYWxsIF9oaS1wZXJmCi1kZXBlbmRlbmN5IGlu
amVjdGlvbl8uCi0KLUluIHRoaXMgY2FzZSwgaW5zdGVhZCBvZiBzaGFyaW5nIGEgY29tbW9uIGJh
c2UgY2xhc3Mgd2l0aCB0aGUgcmVhbAotY2xhc3MsIHlvdXIgbW9jayBjbGFzcyB3aWxsIGJlIF91
bnJlbGF0ZWRfIHRvIHRoZSByZWFsIGNsYXNzLCBidXQKLWNvbnRhaW4gbWV0aG9kcyB3aXRoIHRo
ZSBzYW1lIHNpZ25hdHVyZXMuICBUaGUgc3ludGF4IGZvciBtb2NraW5nCi1ub24tdmlydHVhbCBt
ZXRob2RzIGlzIHRoZSBfc2FtZV8gYXMgbW9ja2luZyB2aXJ0dWFsIG1ldGhvZHM6Ci0KLWBgYAot
Ly8gQSBzaW1wbGUgcGFja2V0IHN0cmVhbSBjbGFzcy4gIE5vbmUgb2YgaXRzIG1lbWJlcnMgaXMg
dmlydHVhbC4KLWNsYXNzIENvbmNyZXRlUGFja2V0U3RyZWFtIHsKLSBwdWJsaWM6Ci0gIHZvaWQg
QXBwZW5kUGFja2V0KFBhY2tldCogbmV3X3BhY2tldCk7Ci0gIGNvbnN0IFBhY2tldCogR2V0UGFj
a2V0KHNpemVfdCBwYWNrZXRfbnVtYmVyKSBjb25zdDsKLSAgc2l6ZV90IE51bWJlck9mUGFja2V0
cygpIGNvbnN0OwotICAuLi4KLX07Ci0KLS8vIEEgbW9jayBwYWNrZXQgc3RyZWFtIGNsYXNzLiAg
SXQgaW5oZXJpdHMgZnJvbSBubyBvdGhlciwgYnV0IGRlZmluZXMKLS8vIEdldFBhY2tldCgpIGFu
ZCBOdW1iZXJPZlBhY2tldHMoKS4KLWNsYXNzIE1vY2tQYWNrZXRTdHJlYW0gewotIHB1YmxpYzoK
LSAgTU9DS19DT05TVF9NRVRIT0QxKEdldFBhY2tldCwgY29uc3QgUGFja2V0KihzaXplX3QgcGFj
a2V0X251bWJlcikpOwotICBNT0NLX0NPTlNUX01FVEhPRDAoTnVtYmVyT2ZQYWNrZXRzLCBzaXpl
X3QoKSk7Ci0gIC4uLgotfTsKLWBgYAotCi1Ob3RlIHRoYXQgdGhlIG1vY2sgY2xhc3MgZG9lc24n
dCBkZWZpbmUgYEFwcGVuZFBhY2tldCgpYCwgdW5saWtlIHRoZQotcmVhbCBjbGFzcy4gVGhhdCdz
IGZpbmUgYXMgbG9uZyBhcyB0aGUgdGVzdCBkb2Vzbid0IG5lZWQgdG8gY2FsbCBpdC4KLQotTmV4
dCwgeW91IG5lZWQgYSB3YXkgdG8gc2F5IHRoYXQgeW91IHdhbnQgdG8gdXNlCi1gQ29uY3JldGVQ
YWNrZXRTdHJlYW1gIGluIHByb2R1Y3Rpb24gY29kZSwgYW5kIHVzZSBgTW9ja1BhY2tldFN0cmVh
bWAKLWluIHRlc3RzLiAgU2luY2UgdGhlIGZ1bmN0aW9ucyBhcmUgbm90IHZpcnR1YWwgYW5kIHRo
ZSB0d28gY2xhc3NlcyBhcmUKLXVucmVsYXRlZCwgeW91IG11c3Qgc3BlY2lmeSB5b3VyIGNob2lj
ZSBhdCBfY29tcGlsZSB0aW1lXyAoYXMgb3Bwb3NlZAotdG8gcnVuIHRpbWUpLgotCi1PbmUgd2F5
IHRvIGRvIGl0IGlzIHRvIHRlbXBsYXRpemUgeW91ciBjb2RlIHRoYXQgbmVlZHMgdG8gdXNlIGEg
cGFja2V0Ci1zdHJlYW0uICBNb3JlIHNwZWNpZmljYWxseSwgeW91IHdpbGwgZ2l2ZSB5b3VyIGNv
ZGUgYSB0ZW1wbGF0ZSB0eXBlCi1hcmd1bWVudCBmb3IgdGhlIHR5cGUgb2YgdGhlIHBhY2tldCBz
dHJlYW0uICBJbiBwcm9kdWN0aW9uLCB5b3Ugd2lsbAotaW5zdGFudGlhdGUgeW91ciB0ZW1wbGF0
ZSB3aXRoIGBDb25jcmV0ZVBhY2tldFN0cmVhbWAgYXMgdGhlIHR5cGUKLWFyZ3VtZW50LiAgSW4g
dGVzdHMsIHlvdSB3aWxsIGluc3RhbnRpYXRlIHRoZSBzYW1lIHRlbXBsYXRlIHdpdGgKLWBNb2Nr
UGFja2V0U3RyZWFtYC4gIEZvciBleGFtcGxlLCB5b3UgbWF5IHdyaXRlOgotCi1gYGAKLXRlbXBs
YXRlIDxjbGFzcyBQYWNrZXRTdHJlYW0+Ci12b2lkIENyZWF0ZUNvbm5lY3Rpb24oUGFja2V0U3Ry
ZWFtKiBzdHJlYW0pIHsgLi4uIH0KLQotdGVtcGxhdGUgPGNsYXNzIFBhY2tldFN0cmVhbT4KLWNs
YXNzIFBhY2tldFJlYWRlciB7Ci0gcHVibGljOgotICB2b2lkIFJlYWRQYWNrZXRzKFBhY2tldFN0
cmVhbSogc3RyZWFtLCBzaXplX3QgcGFja2V0X251bSk7Ci19OwotYGBgCi0KLVRoZW4geW91IGNh
biB1c2UgYENyZWF0ZUNvbm5lY3Rpb248Q29uY3JldGVQYWNrZXRTdHJlYW0+KClgIGFuZAotYFBh
Y2tldFJlYWRlcjxDb25jcmV0ZVBhY2tldFN0cmVhbT5gIGluIHByb2R1Y3Rpb24gY29kZSwgYW5k
IHVzZQotYENyZWF0ZUNvbm5lY3Rpb248TW9ja1BhY2tldFN0cmVhbT4oKWAgYW5kCi1gUGFja2V0
UmVhZGVyPE1vY2tQYWNrZXRTdHJlYW0+YCBpbiB0ZXN0cy4KLQotYGBgCi0gIE1vY2tQYWNrZXRT
dHJlYW0gbW9ja19zdHJlYW07Ci0gIEVYUEVDVF9DQUxMKG1vY2tfc3RyZWFtLCAuLi4pLi4uOwot
ICAuLiBzZXQgbW9yZSBleHBlY3RhdGlvbnMgb24gbW9ja19zdHJlYW0gLi4uCi0gIFBhY2tldFJl
YWRlcjxNb2NrUGFja2V0U3RyZWFtPiByZWFkZXIoJm1vY2tfc3RyZWFtKTsKLSAgLi4uIGV4ZXJj
aXNlIHJlYWRlciAuLi4KLWBgYAotCi0jIyBNb2NraW5nIEZyZWUgRnVuY3Rpb25zICMjCi0KLUl0
J3MgcG9zc2libGUgdG8gdXNlIEdvb2dsZSBNb2NrIHRvIG1vY2sgYSBmcmVlIGZ1bmN0aW9uIChp
LmUuIGEKLUMtc3R5bGUgZnVuY3Rpb24gb3IgYSBzdGF0aWMgbWV0aG9kKS4gIFlvdSBqdXN0IG5l
ZWQgdG8gcmV3cml0ZSB5b3VyCi1jb2RlIHRvIHVzZSBhbiBpbnRlcmZhY2UgKGFic3RyYWN0IGNs
YXNzKS4KLQotSW5zdGVhZCBvZiBjYWxsaW5nIGEgZnJlZSBmdW5jdGlvbiAoc2F5LCBgT3BlbkZp
bGVgKSBkaXJlY3RseSwKLWludHJvZHVjZSBhbiBpbnRlcmZhY2UgZm9yIGl0IGFuZCBoYXZlIGEg
Y29uY3JldGUgc3ViY2xhc3MgdGhhdCBjYWxscwotdGhlIGZyZWUgZnVuY3Rpb246Ci0KLWBgYAot
Y2xhc3MgRmlsZUludGVyZmFjZSB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE9w
ZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSkgPSAwOwotfTsKLQotY2xhc3Mg
RmlsZSA6IHB1YmxpYyBGaWxlSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC4uLgotICB2aXJ0dWFs
IGJvb2wgT3Blbihjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBtb2RlKSB7Ci0gICAgcmV0
dXJuIE9wZW5GaWxlKHBhdGgsIG1vZGUpOwotICB9Ci19OwotYGBgCi0KLVlvdXIgY29kZSBzaG91
bGQgdGFsayB0byBgRmlsZUludGVyZmFjZWAgdG8gb3BlbiBhIGZpbGUuICBOb3cgaXQncwotZWFz
eSB0byBtb2NrIG91dCB0aGUgZnVuY3Rpb24uCi0KLVRoaXMgbWF5IHNlZW0gbXVjaCBoYXNzbGUs
IGJ1dCBpbiBwcmFjdGljZSB5b3Ugb2Z0ZW4gaGF2ZSBtdWx0aXBsZQotcmVsYXRlZCBmdW5jdGlv
bnMgdGhhdCB5b3UgY2FuIHB1dCBpbiB0aGUgc2FtZSBpbnRlcmZhY2UsIHNvIHRoZQotcGVyLWZ1
bmN0aW9uIHN5bnRhY3RpYyBvdmVyaGVhZCB3aWxsIGJlIG11Y2ggbG93ZXIuCi0KLUlmIHlvdSBh
cmUgY29uY2VybmVkIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBvdmVyaGVhZCBpbmN1cnJlZCBieQot
dmlydHVhbCBmdW5jdGlvbnMsIGFuZCBwcm9maWxpbmcgY29uZmlybXMgeW91ciBjb25jZXJuLCB5
b3UgY2FuCi1jb21iaW5lIHRoaXMgd2l0aCB0aGUgcmVjaXBlIGZvciBbbW9ja2luZyBub24tdmly
dHVhbCBtZXRob2RzXSgjTW9ja2luZ19Ob252aXJ0dWFsX01ldGhvZHMubWQpLgotCi0jIyBUaGUg
TmljZSwgdGhlIFN0cmljdCwgYW5kIHRoZSBOYWdneSAjIwotCi1JZiBhIG1vY2sgbWV0aG9kIGhh
cyBubyBgRVhQRUNUX0NBTExgIHNwZWMgYnV0IGlzIGNhbGxlZCwgR29vZ2xlIE1vY2sKLXdpbGwg
cHJpbnQgYSB3YXJuaW5nIGFib3V0IHRoZSAidW5pbnRlcmVzdGluZyBjYWxsIi4gVGhlIHJhdGlv
bmFsZSBpczoKLQotICAqIE5ldyBtZXRob2RzIG1heSBiZSBhZGRlZCB0byBhbiBpbnRlcmZhY2Ug
YWZ0ZXIgYSB0ZXN0IGlzIHdyaXR0ZW4uIFdlIHNob3VsZG4ndCBmYWlsIGEgdGVzdCBqdXN0IGJl
Y2F1c2UgYSBtZXRob2QgaXQgZG9lc24ndCBrbm93IGFib3V0IGlzIGNhbGxlZC4KLSAgKiBIb3dl
dmVyLCB0aGlzIG1heSBhbHNvIG1lYW4gdGhlcmUncyBhIGJ1ZyBpbiB0aGUgdGVzdCwgc28gR29v
Z2xlIE1vY2sgc2hvdWxkbid0IGJlIHNpbGVudCBlaXRoZXIuIElmIHRoZSB1c2VyIGJlbGlldmVz
IHRoZXNlIGNhbGxzIGFyZSBoYXJtbGVzcywgaGUgY2FuIGFkZCBhbiBgRVhQRUNUX0NBTEwoKWAg
dG8gc3VwcHJlc3MgdGhlIHdhcm5pbmcuCi0KLUhvd2V2ZXIsIHNvbWV0aW1lcyB5b3UgbWF5IHdh
bnQgdG8gc3VwcHJlc3MgYWxsICJ1bmludGVyZXN0aW5nIGNhbGwiCi13YXJuaW5ncywgd2hpbGUg
c29tZXRpbWVzIHlvdSBtYXkgd2FudCB0aGUgb3Bwb3NpdGUsIGkuZS4gdG8gdHJlYXQgYWxsCi1v
ZiB0aGVtIGFzIGVycm9ycy4gR29vZ2xlIE1vY2sgbGV0cyB5b3UgbWFrZSB0aGUgZGVjaXNpb24g
b24gYQotcGVyLW1vY2stb2JqZWN0IGJhc2lzLgotCi1TdXBwb3NlIHlvdXIgdGVzdCB1c2VzIGEg
bW9jayBjbGFzcyBgTW9ja0Zvb2A6Ci0KLWBgYAotVEVTVCguLi4pIHsKLSAgTW9ja0ZvbyBtb2Nr
X2ZvbzsKLSAgRVhQRUNUX0NBTEwobW9ja19mb28sIERvVGhpcygpKTsKLSAgLi4uIGNvZGUgdGhh
dCB1c2VzIG1vY2tfZm9vIC4uLgotfQotYGBgCi0KLUlmIGEgbWV0aG9kIG9mIGBtb2NrX2Zvb2Ag
b3RoZXIgdGhhbiBgRG9UaGlzKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBiZQotcmVwb3J0ZWQgYnkg
R29vZ2xlIE1vY2sgYXMgYSB3YXJuaW5nLiBIb3dldmVyLCBpZiB5b3UgcmV3cml0ZSB5b3VyCi10
ZXN0IHRvIHVzZSBgTmljZU1vY2s8TW9ja0Zvbz5gIGluc3RlYWQsIHRoZSB3YXJuaW5nIHdpbGwg
YmUgZ29uZSwKLXJlc3VsdGluZyBpbiBhIGNsZWFuZXIgdGVzdCBvdXRwdXQ6Ci0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpOaWNlTW9jazsKLQotVEVTVCguLi4pIHsKLSAgTmljZU1vY2s8TW9ja0Zv
bz4gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBj
b2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0KLWBgYAotCi1gTmljZU1vY2s8TW9ja0Zvbz5g
IGlzIGEgc3ViY2xhc3Mgb2YgYE1vY2tGb29gLCBzbyBpdCBjYW4gYmUgdXNlZAotd2hlcmV2ZXIg
YE1vY2tGb29gIGlzIGFjY2VwdGVkLgotCi1JdCBhbHNvIHdvcmtzIGlmIGBNb2NrRm9vYCdzIGNv
bnN0cnVjdG9yIHRha2VzIHNvbWUgYXJndW1lbnRzLCBhcwotYE5pY2VNb2NrPE1vY2tGb28+YCAi
aW5oZXJpdHMiIGBNb2NrRm9vYCdzIGNvbnN0cnVjdG9yczoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ok5pY2VNb2NrOwotCi1URVNUKC4uLikgewotICBOaWNlTW9jazxNb2NrRm9vPiBtb2NrX2Zv
byg1LCAiaGkiKTsgIC8vIENhbGxzIE1vY2tGb28oNSwgImhpIikuCi0gIEVYUEVDVF9DQUxMKG1v
Y2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4uLiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLX0K
LWBgYAotCi1UaGUgdXNhZ2Ugb2YgYFN0cmljdE1vY2tgIGlzIHNpbWlsYXIsIGV4Y2VwdCB0aGF0
IGl0IG1ha2VzIGFsbAotdW5pbnRlcmVzdGluZyBjYWxscyBmYWlsdXJlczoKLQotYGBgCi11c2lu
ZyA6OnRlc3Rpbmc6OlN0cmljdE1vY2s7Ci0KLVRFU1QoLi4uKSB7Ci0gIFN0cmljdE1vY2s8TW9j
a0Zvbz4gbW9ja19mb287Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBEb1RoaXMoKSk7Ci0gIC4u
LiBjb2RlIHRoYXQgdXNlcyBtb2NrX2ZvbyAuLi4KLQotICAvLyBUaGUgdGVzdCB3aWxsIGZhaWwg
aWYgYSBtZXRob2Qgb2YgbW9ja19mb28gb3RoZXIgdGhhbiBEb1RoaXMoKQotICAvLyBpcyBjYWxs
ZWQuCi19Ci1gYGAKLQotVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB0aG91Z2ggKEkgZG9uJ3QgbGlr
ZSB0aGVtIGp1c3QgYXMgbXVjaCBhcyB0aGUKLW5leHQgZ3V5LCBidXQgc2FkbHkgdGhleSBhcmUg
c2lkZSBlZmZlY3RzIG9mIEMrKydzIGxpbWl0YXRpb25zKToKLQotICAxLiBgTmljZU1vY2s8TW9j
a0Zvbz5gIGFuZCBgU3RyaWN0TW9jazxNb2NrRm9vPmAgb25seSB3b3JrIGZvciBtb2NrIG1ldGhv
ZHMgZGVmaW5lZCB1c2luZyB0aGUgYE1PQ0tfTUVUSE9EKmAgZmFtaWx5IG9mIG1hY3JvcyAqKmRp
cmVjdGx5KiogaW4gdGhlIGBNb2NrRm9vYCBjbGFzcy4gSWYgYSBtb2NrIG1ldGhvZCBpcyBkZWZp
bmVkIGluIGEgKipiYXNlIGNsYXNzKiogb2YgYE1vY2tGb29gLCB0aGUgIm5pY2UiIG9yICJzdHJp
Y3QiIG1vZGlmaWVyIG1heSBub3QgYWZmZWN0IGl0LCBkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVy
LiBJbiBwYXJ0aWN1bGFyLCBuZXN0aW5nIGBOaWNlTW9ja2AgYW5kIGBTdHJpY3RNb2NrYCAoZS5n
LiBgTmljZU1vY2s8U3RyaWN0TW9jazxNb2NrRm9vPiA+YCkgaXMgKipub3QqKiBzdXBwb3J0ZWQu
Ci0gIDEuIFRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIGJhc2UgbW9jayAoYE1vY2tGb29gKSBjYW5u
b3QgaGF2ZSBhcmd1bWVudHMgcGFzc2VkIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdoaWNoIGhh
cHBlbnMgdG8gYmUgYmFubmVkIGJ5IHRoZSBbR29vZ2xlIEMrKyBzdHlsZSBndWlkZV0oaHR0cDov
L2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwp
LgotICAxLiBEdXJpbmcgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3Igb2YgYE1vY2tGb29g
LCB0aGUgbW9jayBvYmplY3QgaXMgX25vdF8gbmljZSBvciBzdHJpY3QuICBUaGlzIG1heSBjYXVz
ZSBzdXJwcmlzZXMgaWYgdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgY2FsbHMgYSBtb2Nr
IG1ldGhvZCBvbiBgdGhpc2Agb2JqZWN0LiAoVGhpcyBiZWhhdmlvciwgaG93ZXZlciwgaXMgY29u
c2lzdGVudCB3aXRoIEMrKydzIGdlbmVyYWwgcnVsZTogaWYgYSBjb25zdHJ1Y3RvciBvciBkZXN0
cnVjdG9yIGNhbGxzIGEgdmlydHVhbCBtZXRob2Qgb2YgYHRoaXNgIG9iamVjdCwgdGhhdCBtZXRo
b2QgaXMgdHJlYXRlZCBhcyBub24tdmlydHVhbC4gIEluIG90aGVyIHdvcmRzLCB0byB0aGUgYmFz
ZSBjbGFzcydzIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IsIGB0aGlzYCBvYmplY3QgYmVoYXZl
cyBsaWtlIGFuIGluc3RhbmNlIG9mIHRoZSBiYXNlIGNsYXNzLCBub3QgdGhlIGRlcml2ZWQgY2xh
c3MuICBUaGlzIHJ1bGUgaXMgcmVxdWlyZWQgZm9yIHNhZmV0eS4gIE90aGVyd2lzZSBhIGJhc2Ug
Y29uc3RydWN0b3IgbWF5IHVzZSBtZW1iZXJzIG9mIGEgZGVyaXZlZCBjbGFzcyBiZWZvcmUgdGhl
eSBhcmUgaW5pdGlhbGl6ZWQsIG9yIGEgYmFzZSBkZXN0cnVjdG9yIG1heSB1c2UgbWVtYmVycyBv
ZiBhIGRlcml2ZWQgY2xhc3MgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZGVzdHJveWVkLikKLQotRmlu
YWxseSwgeW91IHNob3VsZCBiZSAqKnZlcnkgY2F1dGlvdXMqKiBhYm91dCB3aGVuIHRvIHVzZSBu
YWdneSBvciBzdHJpY3QgbW9ja3MsIGFzIHRoZXkgdGVuZCB0byBtYWtlIHRlc3RzIG1vcmUgYnJp
dHRsZSBhbmQgaGFyZGVyIHRvIG1haW50YWluLiBXaGVuIHlvdSByZWZhY3RvciB5b3VyIGNvZGUg
d2l0aG91dCBjaGFuZ2luZyBpdHMgZXh0ZXJuYWxseSB2aXNpYmxlIGJlaGF2aW9yLCBpZGVhbGx5
IHlvdSBzaG91bGQndCBuZWVkIHRvIHVwZGF0ZSBhbnkgdGVzdHMuIElmIHlvdXIgY29kZSBpbnRl
cmFjdHMgd2l0aCBhIG5hZ2d5IG1vY2ssIGhvd2V2ZXIsIHlvdSBtYXkgc3RhcnQgdG8gZ2V0IHNw
YW1tZWQgd2l0aCB3YXJuaW5ncyBhcyB0aGUgcmVzdWx0IG9mIHlvdXIgY2hhbmdlLiBXb3JzZSwg
aWYgeW91ciBjb2RlIGludGVyYWN0cyB3aXRoIGEgc3RyaWN0IG1vY2ssIHlvdXIgdGVzdHMgbWF5
IHN0YXJ0IHRvIGZhaWwgYW5kIHlvdSdsbCBiZSBmb3JjZWQgdG8gZml4IHRoZW0uIE91ciBnZW5l
cmFsIHJlY29tbWVuZGF0aW9uIGlzIHRvIHVzZSBuaWNlIG1vY2tzIChub3QgeWV0IHRoZSBkZWZh
dWx0KSBtb3N0IG9mIHRoZSB0aW1lLCB1c2UgbmFnZ3kgbW9ja3MgKHRoZSBjdXJyZW50IGRlZmF1
bHQpIHdoZW4gZGV2ZWxvcGluZyBvciBkZWJ1Z2dpbmcgdGVzdHMsIGFuZCB1c2Ugc3RyaWN0IG1v
Y2tzIG9ubHkgYXMgdGhlIGxhc3QgcmVzb3J0LgotCi0jIyBTaW1wbGlmeWluZyB0aGUgSW50ZXJm
YWNlIHdpdGhvdXQgQnJlYWtpbmcgRXhpc3RpbmcgQ29kZSAjIwotCi1Tb21ldGltZXMgYSBtZXRo
b2QgaGFzIGEgbG9uZyBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IGlzIG1vc3RseQotdW5pbnRlcmVz
dGluZy4gRm9yIGV4YW1wbGUsCi0KLWBgYAotY2xhc3MgTG9nU2luayB7Ci0gcHVibGljOgotICAu
Li4KLSAgdmlydHVhbCB2b2lkIHNlbmQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIq
IGZ1bGxfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VfZmls
ZW5hbWUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdG0qIHRt
X3RpbWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHNpemVfdCBt
ZXNzYWdlX2xlbikgPSAwOwotfTsKLWBgYAotCi1UaGlzIG1ldGhvZCdzIGFyZ3VtZW50IGxpc3Qg
aXMgbGVuZ3RoeSBhbmQgaGFyZCB0byB3b3JrIHdpdGggKGxldCdzCi1zYXkgdGhhdCB0aGUgYG1l
c3NhZ2VgIGFyZ3VtZW50IGlzIG5vdCBldmVuIDAtdGVybWluYXRlZCkuIElmIHdlIG1vY2sKLWl0
IGFzIGlzLCB1c2luZyB0aGUgbW9jayB3aWxsIGJlIGF3a3dhcmQuIElmLCBob3dldmVyLCB3ZSB0
cnkgdG8KLXNpbXBsaWZ5IHRoaXMgaW50ZXJmYWNlLCB3ZSdsbCBuZWVkIHRvIGZpeCBhbGwgY2xp
ZW50cyBkZXBlbmRpbmcgb24KLWl0LCB3aGljaCBpcyBvZnRlbiBpbmZlYXNpYmxlLgotCi1UaGUg
dHJpY2sgaXMgdG8gcmUtZGlzcGF0Y2ggdGhlIG1ldGhvZCBpbiB0aGUgbW9jayBjbGFzczoKLQot
YGBgCi1jbGFzcyBTY29wZWRNb2NrTG9nIDogcHVibGljIExvZ1NpbmsgewotIHB1YmxpYzoKLSAg
Li4uCi0gIHZpcnR1YWwgdm9pZCBzZW5kKExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBjaGFy
KiBmdWxsX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlX2Zp
bGVuYW1lLCBpbnQgbGluZSwgY29uc3QgdG0qIHRtX3RpbWUsCi0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xlbikgewotICAgIC8vIFdlIGFy
ZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxvZyBzZXZlcml0eSwgZnVsbCBmaWxlIG5hbWUsIGFu
ZAotICAgIC8vIGxvZyBtZXNzYWdlLgotICAgIExvZyhzZXZlcml0eSwgZnVsbF9maWxlbmFtZSwg
c3RkOjpzdHJpbmcobWVzc2FnZSwgbWVzc2FnZV9sZW4pKTsKLSAgfQotCi0gIC8vIEltcGxlbWVu
dHMgdGhlIG1vY2sgbWV0aG9kOgotICAvLwotICAvLyAgIHZvaWQgTG9nKExvZ1NldmVyaXR5IHNl
dmVyaXR5LAotICAvLyAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgZmlsZV9wYXRoLAotICAvLyAg
ICAgICAgICAgIGNvbnN0IHN0cmluZyYgbWVzc2FnZSk7Ci0gIE1PQ0tfTUVUSE9EMyhMb2csIHZv
aWQoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IHN0cmluZyYgZmlsZV9wYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZyYgbWVzc2FnZSkpOwotfTsKLWBgYAotCi1C
eSBkZWZpbmluZyBhIG5ldyBtb2NrIG1ldGhvZCB3aXRoIGEgdHJpbW1lZCBhcmd1bWVudCBsaXN0
LCB3ZSBtYWtlCi10aGUgbW9jayBjbGFzcyBtdWNoIG1vcmUgdXNlci1mcmllbmRseS4KLQotIyMg
QWx0ZXJuYXRpdmUgdG8gTW9ja2luZyBDb25jcmV0ZSBDbGFzc2VzICMjCi0KLU9mdGVuIHlvdSBt
YXkgZmluZCB5b3Vyc2VsZiB1c2luZyBjbGFzc2VzIHRoYXQgZG9uJ3QgaW1wbGVtZW50Ci1pbnRl
cmZhY2VzLiBJbiBvcmRlciB0byB0ZXN0IHlvdXIgY29kZSB0aGF0IHVzZXMgc3VjaCBhIGNsYXNz
IChsZXQncwotY2FsbCBpdCBgQ29uY3JldGVgKSwgeW91IG1heSBiZSB0ZW1wdGVkIHRvIG1ha2Ug
dGhlIG1ldGhvZHMgb2YKLWBDb25jcmV0ZWAgdmlydHVhbCBhbmQgdGhlbiBtb2NrIGl0LgotCi1U
cnkgbm90IHRvIGRvIHRoYXQuCi0KLU1ha2luZyBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uIHZpcnR1
YWwgaXMgYSBiaWcgZGVjaXNpb24uIEl0IGNyZWF0ZXMgYW4KLWV4dGVuc2lvbiBwb2ludCB3aGVy
ZSBzdWJjbGFzc2VzIGNhbiB0d2VhayB5b3VyIGNsYXNzJyBiZWhhdmlvci4gVGhpcwotd2Vha2Vu
cyB5b3VyIGNvbnRyb2wgb24gdGhlIGNsYXNzIGJlY2F1c2Ugbm93IGl0J3MgaGFyZGVyIHRvIG1h
aW50YWluCi10aGUgY2xhc3MnIGludmFyaWFudHMuIFlvdSBzaG91bGQgbWFrZSBhIGZ1bmN0aW9u
IHZpcnR1YWwgb25seSB3aGVuCi10aGVyZSBpcyBhIHZhbGlkIHJlYXNvbiBmb3IgYSBzdWJjbGFz
cyB0byBvdmVycmlkZSBpdC4KLQotTW9ja2luZyBjb25jcmV0ZSBjbGFzc2VzIGRpcmVjdGx5IGlz
IHByb2JsZW1hdGljIGFzIGl0IGNyZWF0ZXMgYSB0aWdodAotY291cGxpbmcgYmV0d2VlbiB0aGUg
Y2xhc3MgYW5kIHRoZSB0ZXN0cyAtIGFueSBzbWFsbCBjaGFuZ2UgaW4gdGhlCi1jbGFzcyBtYXkg
aW52YWxpZGF0ZSB5b3VyIHRlc3RzIGFuZCBtYWtlIHRlc3QgbWFpbnRlbmFuY2UgYSBwYWluLgot
Ci1UbyBhdm9pZCBzdWNoIHByb2JsZW1zLCBtYW55IHByb2dyYW1tZXJzIGhhdmUgYmVlbiBwcmFj
dGljaW5nICJjb2RpbmcKLXRvIGludGVyZmFjZXMiOiBpbnN0ZWFkIG9mIHRhbGtpbmcgdG8gdGhl
IGBDb25jcmV0ZWAgY2xhc3MsIHlvdXIgY29kZQotd291bGQgZGVmaW5lIGFuIGludGVyZmFjZSBh
bmQgdGFsayB0byBpdC4gVGhlbiB5b3UgaW1wbGVtZW50IHRoYXQKLWludGVyZmFjZSBhcyBhbiBh
ZGFwdG9yIG9uIHRvcCBvZiBgQ29uY3JldGVgLiBJbiB0ZXN0cywgeW91IGNhbiBlYXNpbHkKLW1v
Y2sgdGhhdCBpbnRlcmZhY2UgdG8gb2JzZXJ2ZSBob3cgeW91ciBjb2RlIGlzIGRvaW5nLgotCi1U
aGlzIHRlY2huaXF1ZSBpbmN1cnMgc29tZSBvdmVyaGVhZDoKLQotICAqIFlvdSBwYXkgdGhlIGNv
c3Qgb2YgdmlydHVhbCBmdW5jdGlvbiBjYWxscyAodXN1YWxseSBub3QgYSBwcm9ibGVtKS4KLSAg
KiBUaGVyZSBpcyBtb3JlIGFic3RyYWN0aW9uIGZvciB0aGUgcHJvZ3JhbW1lcnMgdG8gbGVhcm4u
Ci0KLUhvd2V2ZXIsIGl0IGNhbiBhbHNvIGJyaW5nIHNpZ25pZmljYW50IGJlbmVmaXRzIGluIGFk
ZGl0aW9uIHRvIGJldHRlcgotdGVzdGFiaWxpdHk6Ci0KLSAgKiBgQ29uY3JldGVgJ3MgQVBJIG1h
eSBub3QgZml0IHlvdXIgcHJvYmxlbSBkb21haW4gdmVyeSB3ZWxsLCBhcyB5b3UgbWF5IG5vdCBi
ZSB0aGUgb25seSBjbGllbnQgaXQgdHJpZXMgdG8gc2VydmUuIEJ5IGRlc2lnbmluZyB5b3VyIG93
biBpbnRlcmZhY2UsIHlvdSBoYXZlIGEgY2hhbmNlIHRvIHRhaWxvciBpdCB0byB5b3VyIG5lZWQg
LSB5b3UgbWF5IGFkZCBoaWdoZXItbGV2ZWwgZnVuY3Rpb25hbGl0aWVzLCByZW5hbWUgc3R1ZmYs
IGV0YyBpbnN0ZWFkIG9mIGp1c3QgdHJpbW1pbmcgdGhlIGNsYXNzLiBUaGlzIGFsbG93cyB5b3Ug
dG8gd3JpdGUgeW91ciBjb2RlICh1c2VyIG9mIHRoZSBpbnRlcmZhY2UpIGluIGEgbW9yZSBuYXR1
cmFsIHdheSwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBtb3JlIHJlYWRhYmxlLCBtb3JlIG1haW50
YWluYWJsZSwgYW5kIHlvdSdsbCBiZSBtb3JlIHByb2R1Y3RpdmUuCi0gICogSWYgYENvbmNyZXRl
YCdzIGltcGxlbWVudGF0aW9uIGV2ZXIgaGFzIHRvIGNoYW5nZSwgeW91IGRvbid0IGhhdmUgdG8g
cmV3cml0ZSBldmVyeXdoZXJlIGl0IGlzIHVzZWQuIEluc3RlYWQsIHlvdSBjYW4gYWJzb3JiIHRo
ZSBjaGFuZ2UgaW4geW91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlLCBhbmQgeW91
ciBvdGhlciBjb2RlIGFuZCB0ZXN0cyB3aWxsIGJlIGluc3VsYXRlZCBmcm9tIHRoaXMgY2hhbmdl
LgotCi1Tb21lIHBlb3BsZSB3b3JyeSB0aGF0IGlmIGV2ZXJ5b25lIGlzIHByYWN0aWNpbmcgdGhp
cyB0ZWNobmlxdWUsIHRoZXkKLXdpbGwgZW5kIHVwIHdyaXRpbmcgbG90cyBvZiByZWR1bmRhbnQg
Y29kZS4gVGhpcyBjb25jZXJuIGlzIHRvdGFsbHkKLXVuZGVyc3RhbmRhYmxlLiBIb3dldmVyLCB0
aGVyZSBhcmUgdHdvIHJlYXNvbnMgd2h5IGl0IG1heSBub3QgYmUgdGhlCi1jYXNlOgotCi0gICog
RGlmZmVyZW50IHByb2plY3RzIG1heSBuZWVkIHRvIHVzZSBgQ29uY3JldGVgIGluIGRpZmZlcmVu
dCB3YXlzLCBzbyB0aGUgYmVzdCBpbnRlcmZhY2VzIGZvciB0aGVtIHdpbGwgYmUgZGlmZmVyZW50
LiBUaGVyZWZvcmUsIGVhY2ggb2YgdGhlbSB3aWxsIGhhdmUgaXRzIG93biBkb21haW4tc3BlY2lm
aWMgaW50ZXJmYWNlIG9uIHRvcCBvZiBgQ29uY3JldGVgLCBhbmQgdGhleSB3aWxsIG5vdCBiZSB0
aGUgc2FtZSBjb2RlLgotICAqIElmIGVub3VnaCBwcm9qZWN0cyB3YW50IHRvIHVzZSB0aGUgc2Ft
ZSBpbnRlcmZhY2UsIHRoZXkgY2FuIGFsd2F5cyBzaGFyZSBpdCwganVzdCBsaWtlIHRoZXkgaGF2
ZSBiZWVuIHNoYXJpbmcgYENvbmNyZXRlYC4gWW91IGNhbiBjaGVjayBpbiB0aGUgaW50ZXJmYWNl
IGFuZCB0aGUgYWRhcHRvciBzb21ld2hlcmUgbmVhciBgQ29uY3JldGVgIChwZXJoYXBzIGluIGEg
YGNvbnRyaWJgIHN1Yi1kaXJlY3RvcnkpIGFuZCBsZXQgbWFueSBwcm9qZWN0cyB1c2UgaXQuCi0K
LVlvdSBuZWVkIHRvIHdlaWdoIHRoZSBwcm9zIGFuZCBjb25zIGNhcmVmdWxseSBmb3IgeW91ciBw
YXJ0aWN1bGFyCi1wcm9ibGVtLCBidXQgSSdkIGxpa2UgdG8gYXNzdXJlIHlvdSB0aGF0IHRoZSBK
YXZhIGNvbW11bml0eSBoYXMgYmVlbgotcHJhY3RpY2luZyB0aGlzIGZvciBhIGxvbmcgdGltZSBh
bmQgaXQncyBhIHByb3ZlbiBlZmZlY3RpdmUgdGVjaG5pcXVlCi1hcHBsaWNhYmxlIGluIGEgd2lk
ZSB2YXJpZXR5IG9mIHNpdHVhdGlvbnMuIDotKQotCi0jIyBEZWxlZ2F0aW5nIENhbGxzIHRvIGEg
RmFrZSAjIwotCi1Tb21lIHRpbWVzIHlvdSBoYXZlIGEgbm9uLXRyaXZpYWwgZmFrZSBpbXBsZW1l
bnRhdGlvbiBvZiBhbgotaW50ZXJmYWNlLiBGb3IgZXhhbXBsZToKLQotYGBgCi1jbGFzcyBGb28g
ewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vKCkge30KLSAgdmlydHVhbCBjaGFyIERvVGhpcyhp
bnQgbikgPSAwOwotICB2aXJ0dWFsIHZvaWQgRG9UaGF0KGNvbnN0IGNoYXIqIHMsIGludCogcCkg
PSAwOwotfTsKLQotY2xhc3MgRmFrZUZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgdmly
dHVhbCBjaGFyIERvVGhpcyhpbnQgbikgewotICAgIHJldHVybiAobiA+IDApID8gJysnIDoKLSAg
ICAgICAgKG4gPCAwKSA/ICctJyA6ICcwJzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEb1RoYXQo
Y29uc3QgY2hhciogcywgaW50KiBwKSB7Ci0gICAgKnAgPSBzdHJsZW4ocyk7Ci0gIH0KLX07Ci1g
YGAKLQotTm93IHlvdSB3YW50IHRvIG1vY2sgdGhpcyBpbnRlcmZhY2Ugc3VjaCB0aGF0IHlvdSBj
YW4gc2V0IGV4cGVjdGF0aW9ucwotb24gaXQuIEhvd2V2ZXIsIHlvdSBhbHNvIHdhbnQgdG8gdXNl
IGBGYWtlRm9vYCBmb3IgdGhlIGRlZmF1bHQKLWJlaGF2aW9yLCBhcyBkdXBsaWNhdGluZyBpdCBp
biB0aGUgbW9jayBvYmplY3QgaXMsIHdlbGwsIGEgbG90IG9mCi13b3JrLgotCi1XaGVuIHlvdSBk
ZWZpbmUgdGhlIG1vY2sgY2xhc3MgdXNpbmcgR29vZ2xlIE1vY2ssIHlvdSBjYW4gaGF2ZSBpdAot
ZGVsZWdhdGUgaXRzIGRlZmF1bHQgYWN0aW9uIHRvIGEgZmFrZSBjbGFzcyB5b3UgYWxyZWFkeSBo
YXZlLCB1c2luZwotdGhpcyBwYXR0ZXJuOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVz
aW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0g
cHVibGljOgotICAvLyBOb3JtYWwgbW9jayBtZXRob2QgZGVmaW5pdGlvbnMgdXNpbmcgR29vZ2xl
IE1vY2suCi0gIE1PQ0tfTUVUSE9EMShEb1RoaXMsIGNoYXIoaW50IG4pKTsKLSAgTU9DS19NRVRI
T0QyKERvVGhhdCwgdm9pZChjb25zdCBjaGFyKiBzLCBpbnQqIHApKTsKLQotICAvLyBEZWxlZ2F0
ZXMgdGhlIGRlZmF1bHQgYWN0aW9ucyBvZiB0aGUgbWV0aG9kcyB0byBhIEZha2VGb28gb2JqZWN0
LgotICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkICpiZWZvcmUqIHRoZSBjdXN0b20gT05fQ0FMTCgp
IHN0YXRlbWVudHMuCi0gIHZvaWQgRGVsZWdhdGVUb0Zha2UoKSB7Ci0gICAgT05fQ0FMTCgqdGhp
cywgRG9UaGlzKF8pKQotICAgICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZha2VfLCAmRmFr
ZUZvbzo6RG9UaGlzKSk7Ci0gICAgT05fQ0FMTCgqdGhpcywgRG9UaGF0KF8sIF8pKQotICAgICAg
ICAuV2lsbEJ5RGVmYXVsdChJbnZva2UoJmZha2VfLCAmRmFrZUZvbzo6RG9UaGF0KSk7Ci0gIH0K
LSBwcml2YXRlOgotICBGYWtlRm9vIGZha2VfOyAgLy8gS2VlcHMgYW4gaW5zdGFuY2Ugb2YgdGhl
IGZha2UgaW4gdGhlIG1vY2suCi19OwotYGBgCi0KLVdpdGggdGhhdCwgeW91IGNhbiB1c2UgYE1v
Y2tGb29gIGluIHlvdXIgdGVzdHMgYXMgdXN1YWwuIEp1c3QgcmVtZW1iZXIKLXRoYXQgaWYgeW91
IGRvbid0IGV4cGxpY2l0bHkgc2V0IGFuIGFjdGlvbiBpbiBhbiBgT05fQ0FMTCgpYCBvcgotYEVY
UEVDVF9DQUxMKClgLCB0aGUgZmFrZSB3aWxsIGJlIGNhbGxlZCB1cG9uIHRvIGRvIGl0OgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLQotVEVTVChBYmNUZXN0LCBYeXopIHsKLSAgTW9ja0Zv
byBmb287Ci0gIGZvby5EZWxlZ2F0ZVRvRmFrZSgpOyAvLyBFbmFibGVzIHRoZSBmYWtlIGZvciBk
ZWxlZ2F0aW9uLgotCi0gIC8vIFB1dCB5b3VyIE9OX0NBTEwoZm9vLCAuLi4pcyBoZXJlLCBpZiBh
bnkuCi0KLSAgLy8gTm8gYWN0aW9uIHNwZWNpZmllZCwgbWVhbmluZyB0byB1c2UgdGhlIGRlZmF1
bHQgYWN0aW9uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyg1KSk7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGF0KF8sIF8pKTsKLQotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9FUSgnKycsIGZv
by5Eb1RoaXMoNSkpOyAgLy8gRmFrZUZvbzo6RG9UaGlzKCkgaXMgaW52b2tlZC4KLSAgZm9vLkRv
VGhhdCgiSGkiLCAmbik7ICAgICAgICAgICAvLyBGYWtlRm9vOjpEb1RoYXQoKSBpcyBpbnZva2Vk
LgotICBFWFBFQ1RfRVEoMiwgbik7Ci19Ci1gYGAKLQotKipTb21lIHRpcHM6KioKLQotICAqIElm
IHlvdSB3YW50LCB5b3UgY2FuIHN0aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGFjdGlvbiBieSBw
cm92aWRpbmcgeW91ciBvd24gYE9OX0NBTEwoKWAgb3IgdXNpbmcgYC5XaWxsT25jZSgpYCAvIGAu
V2lsbFJlcGVhdGVkbHkoKWAgaW4gYEVYUEVDVF9DQUxMKClgLgotICAqIEluIGBEZWxlZ2F0ZVRv
RmFrZSgpYCwgeW91IG9ubHkgbmVlZCB0byBkZWxlZ2F0ZSB0aGUgbWV0aG9kcyB3aG9zZSBmYWtl
IGltcGxlbWVudGF0aW9uIHlvdSBpbnRlbmQgdG8gdXNlLgotICAqIFRoZSBnZW5lcmFsIHRlY2hu
aXF1ZSBkaXNjdXNzZWQgaGVyZSB3b3JrcyBmb3Igb3ZlcmxvYWRlZCBtZXRob2RzLCBidXQgeW91
J2xsIG5lZWQgdG8gdGVsbCB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB5b3UgbWVhbi4gVG8g
ZGlzYW1iaWd1YXRlIGEgbW9jayBmdW5jdGlvbiAodGhlIG9uZSB5b3Ugc3BlY2lmeSBpbnNpZGUg
dGhlIHBhcmVudGhlc2VzIG9mIGBPTl9DQUxMKClgKSwgc2VlIHRoZSAiU2VsZWN0aW5nIEJldHdl
ZW4gT3ZlcmxvYWRlZCBGdW5jdGlvbnMiIHNlY3Rpb24gb24gdGhpcyBwYWdlOyB0byBkaXNhbWJp
Z3VhdGUgYSBmYWtlIGZ1bmN0aW9uICh0aGUgb25lIHlvdSBwbGFjZSBpbnNpZGUgYEludm9rZSgp
YCksIHVzZSBhIGBzdGF0aWNfY2FzdGAgdG8gc3BlY2lmeSB0aGUgZnVuY3Rpb24ncyB0eXBlLiBG
b3IgaW5zdGFuY2UsIGlmIGNsYXNzIGBGb29gIGhhcyBtZXRob2RzIGBjaGFyIERvVGhpcyhpbnQg
bilgIGFuZCBgYm9vbCBEb1RoaXMoZG91YmxlIHgpIGNvbnN0YCwgYW5kIHlvdSB3YW50IHRvIGlu
dm9rZSB0aGUgbGF0dGVyLCB5b3UgbmVlZCB0byB3cml0ZSBgSW52b2tlKCZmYWtlXywgc3RhdGlj
X2Nhc3Q8Ym9vbCAoRmFrZUZvbzo6KikoZG91YmxlKSBjb25zdD4oJkZha2VGb286OkRvVGhpcykp
YCBpbnN0ZWFkIG9mIGBJbnZva2UoJmZha2VfLCAmRmFrZUZvbzo6RG9UaGlzKWAgKFRoZSBzdHJh
bmdlLWxvb2tpbmcgdGhpbmcgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgb2YgYHN0YXRpY19j
YXN0YCBpcyB0aGUgdHlwZSBvZiBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gdGhlIHNlY29uZCBgRG9U
aGlzKClgIG1ldGhvZC4pLgotICAqIEhhdmluZyB0byBtaXggYSBtb2NrIGFuZCBhIGZha2UgaXMg
b2Z0ZW4gYSBzaWduIG9mIHNvbWV0aGluZyBnb25lIHdyb25nLiBQZXJoYXBzIHlvdSBoYXZlbid0
IGdvdCB1c2VkIHRvIHRoZSBpbnRlcmFjdGlvbi1iYXNlZCB3YXkgb2YgdGVzdGluZyB5ZXQuIE9y
IHBlcmhhcHMgeW91ciBpbnRlcmZhY2UgaXMgdGFraW5nIG9uIHRvbyBtYW55IHJvbGVzIGFuZCBz
aG91bGQgYmUgc3BsaXQgdXAuIFRoZXJlZm9yZSwgKipkb24ndCBhYnVzZSB0aGlzKiouIFdlIHdv
dWxkIG9ubHkgcmVjb21tZW5kIHRvIGRvIGl0IGFzIGFuIGludGVybWVkaWF0ZSBzdGVwIHdoZW4g
eW91IGFyZSByZWZhY3RvcmluZyB5b3VyIGNvZGUuCi0KLVJlZ2FyZGluZyB0aGUgdGlwIG9uIG1p
eGluZyBhIG1vY2sgYW5kIGEgZmFrZSwgaGVyZSdzIGFuIGV4YW1wbGUgb24KLXdoeSBpdCBtYXkg
YmUgYSBiYWQgc2lnbjogU3VwcG9zZSB5b3UgaGF2ZSBhIGNsYXNzIGBTeXN0ZW1gIGZvcgotbG93
LWxldmVsIHN5c3RlbSBvcGVyYXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2VzIGZpbGUgYW5k
IEkvTwotb3BlcmF0aW9ucy4gQW5kIHN1cHBvc2UgeW91IHdhbnQgdG8gdGVzdCBob3cgeW91ciBj
b2RlIHVzZXMgYFN5c3RlbWAKLXRvIGRvIEkvTywgYW5kIHlvdSBqdXN0IHdhbnQgdGhlIGZpbGUg
b3BlcmF0aW9ucyB0byB3b3JrIG5vcm1hbGx5LiBJZgoteW91IG1vY2sgb3V0IHRoZSBlbnRpcmUg
YFN5c3RlbWAgY2xhc3MsIHlvdSdsbCBoYXZlIHRvIHByb3ZpZGUgYSBmYWtlCi1pbXBsZW1lbnRh
dGlvbiBmb3IgdGhlIGZpbGUgb3BlcmF0aW9uIHBhcnQsIHdoaWNoIHN1Z2dlc3RzIHRoYXQKLWBT
eXN0ZW1gIGlzIHRha2luZyBvbiB0b28gbWFueSByb2xlcy4KLQotSW5zdGVhZCwgeW91IGNhbiBk
ZWZpbmUgYSBgRmlsZU9wc2AgaW50ZXJmYWNlIGFuZCBhbiBgSU9PcHNgIGludGVyZmFjZQotYW5k
IHNwbGl0IGBTeXN0ZW1gJ3MgZnVuY3Rpb25hbGl0aWVzIGludG8gdGhlIHR3by4gVGhlbiB5b3Ug
Y2FuIG1vY2sKLWBJT09wc2Agd2l0aG91dCBtb2NraW5nIGBGaWxlT3BzYC4KLQotIyMgRGVsZWdh
dGluZyBDYWxscyB0byBhIFJlYWwgT2JqZWN0ICMjCi0KLVdoZW4gdXNpbmcgdGVzdGluZyBkb3Vi
bGVzIChtb2NrcywgZmFrZXMsIHN0dWJzLCBhbmQgZXRjKSwgc29tZXRpbWVzCi10aGVpciBiZWhh
dmlvcnMgd2lsbCBkaWZmZXIgZnJvbSB0aG9zZSBvZiB0aGUgcmVhbCBvYmplY3RzLiBUaGlzCi1k
aWZmZXJlbmNlIGNvdWxkIGJlIGVpdGhlciBpbnRlbnRpb25hbCAoYXMgaW4gc2ltdWxhdGluZyBh
biBlcnJvciBzdWNoCi10aGF0IHlvdSBjYW4gdGVzdCB0aGUgZXJyb3IgaGFuZGxpbmcgY29kZSkg
b3IgdW5pbnRlbnRpb25hbC4gSWYgeW91cgotbW9ja3MgaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3Jz
IHRoYW4gdGhlIHJlYWwgb2JqZWN0cyBieSBtaXN0YWtlLCB5b3UKLWNvdWxkIGVuZCB1cCB3aXRo
IGNvZGUgdGhhdCBwYXNzZXMgdGhlIHRlc3RzIGJ1dCBmYWlscyBpbiBwcm9kdWN0aW9uLgotCi1Z
b3UgY2FuIHVzZSB0aGUgX2RlbGVnYXRpbmctdG8tcmVhbF8gdGVjaG5pcXVlIHRvIGVuc3VyZSB0
aGF0IHlvdXIKLW1vY2sgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSByZWFsIG9iamVjdCB3
aGlsZSByZXRhaW5pbmcgdGhlCi1hYmlsaXR5IHRvIHZhbGlkYXRlIGNhbGxzLiBUaGlzIHRlY2hu
aXF1ZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlCi1kZWxlZ2F0aW5nLXRvLWZha2UgdGVjaG5pcXVl
LCB0aGUgZGlmZmVyZW5jZSBiZWluZyB0aGF0IHdlIHVzZSBhIHJlYWwKLW9iamVjdCBpbnN0ZWFk
IG9mIGEgZmFrZS4gSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
OwotdXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci0K
LWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSBwdWJsaWM6Ci0gIE1vY2tGb28oKSB7Ci0g
ICAgLy8gQnkgZGVmYXVsdCwgYWxsIGNhbGxzIGFyZSBkZWxlZ2F0ZWQgdG8gdGhlIHJlYWwgb2Jq
ZWN0LgotICAgIE9OX0NBTEwoKnRoaXMsIERvVGhpcygpKQotICAgICAgICAuV2lsbEJ5RGVmYXVs
dChJbnZva2UoJnJlYWxfLCAmRm9vOjpEb1RoaXMpKTsKLSAgICBPTl9DQUxMKCp0aGlzLCBEb1Ro
YXQoXykpCi0gICAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZSgmcmVhbF8sICZGb286OkRvVGhh
dCkpOwotICAgIC4uLgotICB9Ci0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIC4uLik7Ci0gIE1PQ0tf
TUVUSE9EMShEb1RoYXQsIC4uLik7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIEZvbyByZWFsXzsKLX07
Ci0uLi4KLQotICBNb2NrRm9vIG1vY2s7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgRG9UaGlzKCkp
Ci0gICAgICAuVGltZXMoMyk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIERvVGhhdCgiSGkiKSkKLSAg
ICAgIC5UaW1lcyhBdExlYXN0KDEpKTsKLSAgLi4uIHVzZSBtb2NrIGluIHRlc3QgLi4uCi1gYGAK
LQotV2l0aCB0aGlzLCBHb29nbGUgTW9jayB3aWxsIHZlcmlmeSB0aGF0IHlvdXIgY29kZSBtYWRl
IHRoZSByaWdodCBjYWxscwotKHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cywgaW4gdGhlIHJpZ2h0
IG9yZGVyLCBjYWxsZWQgdGhlIHJpZ2h0IG51bWJlcgotb2YgdGltZXMsIGV0YyksIGFuZCBhIHJl
YWwgb2JqZWN0IHdpbGwgYW5zd2VyIHRoZSBjYWxscyAoc28gdGhlCi1iZWhhdmlvciB3aWxsIGJl
IHRoZSBzYW1lIGFzIGluIHByb2R1Y3Rpb24pLiBUaGlzIGdpdmVzIHlvdSB0aGUgYmVzdAotb2Yg
Ym90aCB3b3JsZHMuCi0KLSMjIERlbGVnYXRpbmcgQ2FsbHMgdG8gYSBQYXJlbnQgQ2xhc3MgIyMK
LQotSWRlYWxseSwgeW91IHNob3VsZCBjb2RlIHRvIGludGVyZmFjZXMsIHdob3NlIG1ldGhvZHMg
YXJlIGFsbCBwdXJlCi12aXJ0dWFsLiBJbiByZWFsaXR5LCBzb21ldGltZXMgeW91IGRvIG5lZWQg
dG8gbW9jayBhIHZpcnR1YWwgbWV0aG9kCi10aGF0IGlzIG5vdCBwdXJlIChpLmUsIGl0IGFscmVh
ZHkgaGFzIGFuIGltcGxlbWVudGF0aW9uKS4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotY2xhc3MgRm9v
IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZvbygpOwotCi0gIHZpcnR1YWwgdm9pZCBQdXJlKGlu
dCBuKSA9IDA7Ci0gIHZpcnR1YWwgaW50IENvbmNyZXRlKGNvbnN0IGNoYXIqIHN0cikgeyAuLi4g
fQotfTsKLQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLy8gTW9j
a2luZyBhIHB1cmUgbWV0aG9kLgotICBNT0NLX01FVEhPRDEoUHVyZSwgdm9pZChpbnQgbikpOwot
ICAvLyBNb2NraW5nIGEgY29uY3JldGUgbWV0aG9kLiAgRm9vOjpDb25jcmV0ZSgpIGlzIHNoYWRv
d2VkLgotICBNT0NLX01FVEhPRDEoQ29uY3JldGUsIGludChjb25zdCBjaGFyKiBzdHIpKTsKLX07
Ci1gYGAKLQotU29tZXRpbWVzIHlvdSBtYXkgd2FudCB0byBjYWxsIGBGb286OkNvbmNyZXRlKClg
IGluc3RlYWQgb2YKLWBNb2NrRm9vOjpDb25jcmV0ZSgpYC4gUGVyaGFwcyB5b3Ugd2FudCB0byBk
byBpdCBhcyBwYXJ0IG9mIGEgc3R1YgotYWN0aW9uLCBvciBwZXJoYXBzIHlvdXIgdGVzdCBkb2Vz
bid0IG5lZWQgdG8gbW9jayBgQ29uY3JldGUoKWAgYXQgYWxsCi0oYnV0IGl0IHdvdWxkIGJlIG9o
LXNvIHBhaW5mdWwgdG8gaGF2ZSB0byBkZWZpbmUgYSBuZXcgbW9jayBjbGFzcwotd2hlbmV2ZXIg
eW91IGRvbid0IG5lZWQgdG8gbW9jayBvbmUgb2YgaXRzIG1ldGhvZHMpLgotCi1UaGUgdHJpY2sg
aXMgdG8gbGVhdmUgYSBiYWNrIGRvb3IgaW4geW91ciBtb2NrIGNsYXNzIGZvciBhY2Nlc3Npbmcg
dGhlCi1yZWFsIG1ldGhvZHMgaW4gdGhlIGJhc2UgY2xhc3M6Ci0KLWBgYAotY2xhc3MgTW9ja0Zv
byA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgLy8gTW9ja2luZyBhIHB1cmUgbWV0aG9kLgot
ICBNT0NLX01FVEhPRDEoUHVyZSwgdm9pZChpbnQgbikpOwotICAvLyBNb2NraW5nIGEgY29uY3Jl
dGUgbWV0aG9kLiAgRm9vOjpDb25jcmV0ZSgpIGlzIHNoYWRvd2VkLgotICBNT0NLX01FVEhPRDEo
Q29uY3JldGUsIGludChjb25zdCBjaGFyKiBzdHIpKTsKLQotICAvLyBVc2UgdGhpcyB0byBjYWxs
IENvbmNyZXRlKCkgZGVmaW5lZCBpbiBGb28uCi0gIGludCBGb29Db25jcmV0ZShjb25zdCBjaGFy
KiBzdHIpIHsgcmV0dXJuIEZvbzo6Q29uY3JldGUoc3RyKTsgfQotfTsKLWBgYAotCi1Ob3csIHlv
dSBjYW4gY2FsbCBgRm9vOjpDb25jcmV0ZSgpYCBpbnNpZGUgYW4gYWN0aW9uIGJ5OgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotLi4uCi0gIEVY
UEVDVF9DQUxMKGZvbywgQ29uY3JldGUoXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKCZmb28s
ICZNb2NrRm9vOjpGb29Db25jcmV0ZSkpOwotYGBgCi0KLW9yIHRlbGwgdGhlIG1vY2sgb2JqZWN0
IHRoYXQgeW91IGRvbid0IHdhbnQgdG8gbW9jayBgQ29uY3JldGUoKWA6Ci0KLWBgYAotdXNpbmcg
Ojp0ZXN0aW5nOjpJbnZva2U7Ci0uLi4KLSAgT05fQ0FMTChmb28sIENvbmNyZXRlKF8pKQotICAg
ICAgLldpbGxCeURlZmF1bHQoSW52b2tlKCZmb28sICZNb2NrRm9vOjpGb29Db25jcmV0ZSkpOwot
YGBgCi0KLShXaHkgZG9uJ3Qgd2UganVzdCB3cml0ZSBgSW52b2tlKCZmb28sICZGb286OkNvbmNy
ZXRlKWA/IElmIHlvdSBkbwotdGhhdCwgYE1vY2tGb286OkNvbmNyZXRlKClgIHdpbGwgYmUgY2Fs
bGVkIChhbmQgY2F1c2UgYW4gaW5maW5pdGUKLXJlY3Vyc2lvbikgc2luY2UgYEZvbzo6Q29uY3Jl
dGUoKWAgaXMgdmlydHVhbC4gVGhhdCdzIGp1c3QgaG93IEMrKwotd29ya3MuKQotCi0jIFVzaW5n
IE1hdGNoZXJzICMKLQotIyMgTWF0Y2hpbmcgQXJndW1lbnQgVmFsdWVzIEV4YWN0bHkgIyMKLQot
WW91IGNhbiBzcGVjaWZ5IGV4YWN0bHkgd2hpY2ggYXJndW1lbnRzIGEgbW9jayBtZXRob2QgaXMg
ZXhwZWN0aW5nOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi0gIEVYUEVD
VF9DQUxMKGZvbywgRG9UaGlzKDUpKQotICAgICAgLldpbGxPbmNlKFJldHVybignYScpKTsKLSAg
RVhQRUNUX0NBTEwoZm9vLCBEb1RoYXQoIkhlbGxvIiwgYmFyKSk7Ci1gYGAKLQotIyMgVXNpbmcg
U2ltcGxlIE1hdGNoZXJzICMjCi0KLVlvdSBjYW4gdXNlIG1hdGNoZXJzIHRvIG1hdGNoIGFyZ3Vt
ZW50cyB0aGF0IGhhdmUgYSBjZXJ0YWluIHByb3BlcnR5OgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6R2U7Ci11c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVy
bjsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhHZSg1KSkpICAvLyBUaGUgYXJndW1l
bnQgbXVzdCBiZSA+PSA1LgotICAgICAgLldpbGxPbmNlKFJldHVybignYScpKTsKLSAgRVhQRUNU
X0NBTEwoZm9vLCBEb1RoYXQoIkhlbGxvIiwgTm90TnVsbCgpKSk7Ci0gIC8vIFRoZSBzZWNvbmQg
YXJndW1lbnQgbXVzdCBub3QgYmUgTlVMTC4KLWBgYAotCi1BIGZyZXF1ZW50bHkgdXNlZCBtYXRj
aGVyIGlzIGBfYCwgd2hpY2ggbWF0Y2hlcyBhbnl0aGluZzoKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9v
LCBEb1RoYXQoXywgTm90TnVsbCgpKSk7Ci1gYGAKLQotIyMgQ29tYmluaW5nIE1hdGNoZXJzICMj
Ci0KLVlvdSBjYW4gYnVpbGQgY29tcGxleCBtYXRjaGVycyBmcm9tIGV4aXN0aW5nIG9uZXMgdXNp
bmcgYEFsbE9mKClgLAotYEFueU9mKClgLCBhbmQgYE5vdCgpYDoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6OkFsbE9mOwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsKLXVzaW5nIDo6dGVzdGluZzo6SGFz
U3Vic3RyOwotdXNpbmcgOjp0ZXN0aW5nOjpOZTsKLXVzaW5nIDo6dGVzdGluZzo6Tm90OwotLi4u
Ci0gIC8vIFRoZSBhcmd1bWVudCBtdXN0IGJlID4gNSBhbmQgIT0gMTAuCi0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGlzKEFsbE9mKEd0KDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZSgxMCkpKSk7Ci0KLSAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGNvbnRhaW4g
c3ViLXN0cmluZyAiYmxhaCIuCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KE5vdChIYXNTdWJz
dHIoImJsYWgiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKLWBgYAotCi0j
IyBDYXN0aW5nIE1hdGNoZXJzICMjCi0KLUdvb2dsZSBNb2NrIG1hdGNoZXJzIGFyZSBzdGF0aWNh
bGx5IHR5cGVkLCBtZWFuaW5nIHRoYXQgdGhlIGNvbXBpbGVyCi1jYW4gY2F0Y2ggeW91ciBtaXN0
YWtlIGlmIHlvdSB1c2UgYSBtYXRjaGVyIG9mIHRoZSB3cm9uZyB0eXBlIChmb3IKLWV4YW1wbGUs
IGlmIHlvdSB1c2UgYEVxKDUpYCB0byBtYXRjaCBhIGBzdHJpbmdgIGFyZ3VtZW50KS4gR29vZCBm
b3IKLXlvdSEKLQotU29tZXRpbWVzLCBob3dldmVyLCB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2lu
ZyBhbmQgd2FudCB0aGUgY29tcGlsZXIKLXRvIGdpdmUgeW91IHNvbWUgc2xhY2suIE9uZSBleGFt
cGxlIGlzIHRoYXQgeW91IGhhdmUgYSBtYXRjaGVyIGZvcgotYGxvbmdgIGFuZCB0aGUgYXJndW1l
bnQgeW91IHdhbnQgdG8gbWF0Y2ggaXMgYGludGAuIFdoaWxlIHRoZSB0d28KLXR5cGVzIGFyZW4n
dCBleGFjdGx5IHRoZSBzYW1lLCB0aGVyZSBpcyBub3RoaW5nIHJlYWxseSB3cm9uZyB3aXRoCi11
c2luZyBhIGBNYXRjaGVyPGxvbmc+YCB0byBtYXRjaCBhbiBgaW50YCAtIGFmdGVyIGFsbCwgd2Ug
Y2FuIGZpcnN0Ci1jb252ZXJ0IHRoZSBgaW50YCBhcmd1bWVudCB0byBhIGBsb25nYCBiZWZvcmUg
Z2l2aW5nIGl0IHRvIHRoZQotbWF0Y2hlci4KLQotVG8gc3VwcG9ydCB0aGlzIG5lZWQsIEdvb2ds
ZSBNb2NrIGdpdmVzIHlvdSB0aGUKLWBTYWZlTWF0Y2hlckNhc3Q8VD4obSlgIGZ1bmN0aW9uLiBJ
dCBjYXN0cyBhIG1hdGNoZXIgYG1gIHRvIHR5cGUKLWBNYXRjaGVyPFQ+YC4gVG8gZW5zdXJlIHNh
ZmV0eSwgR29vZ2xlIE1vY2sgY2hlY2tzIHRoYXQgKGxldCBgVWAgYmUgdGhlCi10eXBlIGBtYCBh
Y2NlcHRzKToKLQotICAxLiBUeXBlIGBUYCBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRvIHR5cGUg
YFVgOwotICAxLiBXaGVuIGJvdGggYFRgIGFuZCBgVWAgYXJlIGJ1aWx0LWluIGFyaXRobWV0aWMg
dHlwZXMgKGBib29sYCwgaW50ZWdlcnMsIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzKSwgdGhl
IGNvbnZlcnNpb24gZnJvbSBgVGAgdG8gYFVgIGlzIG5vdCBsb3NzeSAoaW4gb3RoZXIgd29yZHMs
IGFueSB2YWx1ZSByZXByZXNlbnRhYmxlIGJ5IGBUYCBjYW4gYWxzbyBiZSByZXByZXNlbnRlZCBi
eSBgVWApOyBhbmQKLSAgMS4gV2hlbiBgVWAgaXMgYSByZWZlcmVuY2UsIGBUYCBtdXN0IGFsc28g
YmUgYSByZWZlcmVuY2UgKGFzIHRoZSB1bmRlcmx5aW5nIG1hdGNoZXIgbWF5IGJlIGludGVyZXN0
ZWQgaW4gdGhlIGFkZHJlc3Mgb2YgdGhlIGBVYCB2YWx1ZSkuCi0KLVRoZSBjb2RlIHdvbid0IGNv
bXBpbGUgaWYgYW55IG9mIHRoZXNlIGNvbmRpdGlvbnMgaXNuJ3QgbWV0LgotCi1IZXJlJ3Mgb25l
IGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpTYWZlTWF0Y2hlckNhc3Q7Ci0KLS8v
IEEgYmFzZSBjbGFzcyBhbmQgYSBjaGlsZCBjbGFzcy4KLWNsYXNzIEJhc2UgeyAuLi4gfTsKLWNs
YXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7IC4uLiB9OwotCi1jbGFzcyBNb2NrRm9vIDogcHVi
bGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEoRG9UaGlzLCB2b2lkKERlcml2ZWQq
IGRlcml2ZWQpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgLy8gbSBpcyBhIE1hdGNo
ZXI8QmFzZSo+IHdlIGdvdCBmcm9tIHNvbWV3aGVyZS4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1Ro
aXMoU2FmZU1hdGNoZXJDYXN0PERlcml2ZWQqPihtKSkpOwotYGBgCi0KLUlmIHlvdSBmaW5kIGBT
YWZlTWF0Y2hlckNhc3Q8VD4obSlgIHRvbyBsaW1pdGluZywgeW91IGNhbiB1c2UgYSBzaW1pbGFy
Ci1mdW5jdGlvbiBgTWF0Y2hlckNhc3Q8VD4obSlgLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IGBN
YXRjaGVyQ2FzdGAgd29ya3MKLWFzIGxvbmcgYXMgeW91IGNhbiBgc3RhdGljX2Nhc3RgIHR5cGUg
YFRgIHRvIHR5cGUgYFVgLgotCi1gTWF0Y2hlckNhc3RgIGVzc2VudGlhbGx5IGxldHMgeW91IGJ5
cGFzcyBDKysncyB0eXBlIHN5c3RlbQotKGBzdGF0aWNfY2FzdGAgaXNuJ3QgYWx3YXlzIHNhZmUg
YXMgaXQgY291bGQgdGhyb3cgYXdheSBpbmZvcm1hdGlvbiwKLWZvciBleGFtcGxlKSwgc28gYmUg
Y2FyZWZ1bCBub3QgdG8gbWlzdXNlL2FidXNlIGl0LgotCi0jIyBTZWxlY3RpbmcgQmV0d2VlbiBP
dmVybG9hZGVkIEZ1bmN0aW9ucyAjIwotCi1JZiB5b3UgZXhwZWN0IGFuIG92ZXJsb2FkZWQgZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkLCB0aGUgY29tcGlsZXIgbWF5Ci1uZWVkIHNvbWUgaGVscCBvbiB3
aGljaCBvdmVybG9hZGVkIHZlcnNpb24gaXQgaXMuCi0KLVRvIGRpc2FtYmlndWF0ZSBmdW5jdGlv
bnMgb3ZlcmxvYWRlZCBvbiB0aGUgY29uc3QtbmVzcyBvZiB0aGlzIG9iamVjdCwKLXVzZSB0aGUg
YENvbnN0KClgIGFyZ3VtZW50IHdyYXBwZXIuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1
cm5SZWY7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAgLi4uCi0gIE1PQ0tfTUVU
SE9EMChHZXRCYXIsIEJhciYoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRCYXIsIGNvbnN0
IEJhciYoKSk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEJhciBiYXIxLCBiYXIyOwot
ICBFWFBFQ1RfQ0FMTChmb28sIEdldEJhcigpKSAgICAgICAgIC8vIFRoZSBub24tY29uc3QgR2V0
QmFyKCkuCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKGJhcjEpKTsKLSAgRVhQRUNUX0NBTEwo
Q29uc3QoZm9vKSwgR2V0QmFyKCkpICAvLyBUaGUgY29uc3QgR2V0QmFyKCkuCi0gICAgICAuV2ls
bE9uY2UoUmV0dXJuUmVmKGJhcjIpKTsKLWBgYAotCi0oYENvbnN0KClgIGlzIGRlZmluZWQgYnkg
R29vZ2xlIE1vY2sgYW5kIHJldHVybnMgYSBgY29uc3RgIHJlZmVyZW5jZQotdG8gaXRzIGFyZ3Vt
ZW50LikKLQotVG8gZGlzYW1iaWd1YXRlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdGhlIHNh
bWUgbnVtYmVyIG9mIGFyZ3VtZW50cwotYnV0IGRpZmZlcmVudCBhcmd1bWVudCB0eXBlcywgeW91
IG1heSBuZWVkIHRvIHNwZWNpZnkgdGhlIGV4YWN0IHR5cGUKLW9mIGEgbWF0Y2hlciwgZWl0aGVy
IGJ5IHdyYXBwaW5nIHlvdXIgbWF0Y2hlciBpbiBgTWF0Y2hlcjx0eXBlPigpYCwgb3IKLXVzaW5n
IGEgbWF0Y2hlciB3aG9zZSB0eXBlIGlzIGZpeGVkIChgVHlwZWRFcTx0eXBlPmAsIGBBbjx0eXBl
PigpYCwKLWV0Yyk6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpBbjsKLXVzaW5nIDo6dGVzdGlu
Zzo6THQ7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6OlR5cGVk
RXE7Ci0KLWNsYXNzIE1vY2tQcmludGVyIDogcHVibGljIFByaW50ZXIgewotIHB1YmxpYzoKLSAg
TU9DS19NRVRIT0QxKFByaW50LCB2b2lkKGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMShQcmludCwg
dm9pZChjaGFyIGMpKTsKLX07Ci0KLVRFU1QoUHJpbnRlclRlc3QsIFByaW50KSB7Ci0gIE1vY2tQ
cmludGVyIHByaW50ZXI7Ci0KLSAgRVhQRUNUX0NBTEwocHJpbnRlciwgUHJpbnQoQW48aW50Pigp
KSk7ICAgICAgICAgICAgLy8gdm9pZCBQcmludChpbnQpOwotICBFWFBFQ1RfQ0FMTChwcmludGVy
LCBQcmludChNYXRjaGVyPGludD4oTHQoNSkpKSk7ICAvLyB2b2lkIFByaW50KGludCk7Ci0gIEVY
UEVDVF9DQUxMKHByaW50ZXIsIFByaW50KFR5cGVkRXE8Y2hhcj4oJ2EnKSkpOyAgIC8vIHZvaWQg
UHJpbnQoY2hhcik7Ci0KLSAgcHJpbnRlci5QcmludCgzKTsKLSAgcHJpbnRlci5QcmludCg2KTsK
LSAgcHJpbnRlci5QcmludCgnYScpOwotfQotYGBgCi0KLSMjIFBlcmZvcm1pbmcgRGlmZmVyZW50
IEFjdGlvbnMgQmFzZWQgb24gdGhlIEFyZ3VtZW50cyAjIwotCi1XaGVuIGEgbW9jayBtZXRob2Qg
aXMgY2FsbGVkLCB0aGUgX2xhc3RfIG1hdGNoaW5nIGV4cGVjdGF0aW9uIHRoYXQncwotc3RpbGwg
YWN0aXZlIHdpbGwgYmUgc2VsZWN0ZWQgKHRoaW5rICJuZXdlciBvdmVycmlkZXMgb2xkZXIiKS4g
U28sIHlvdQotY2FuIG1ha2UgYSBtZXRob2QgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcg
b24gaXRzIGFyZ3VtZW50IHZhbHVlcwotbGlrZSB0aGlzOgotCi1gYGAKLXVzaW5nIDo6dGVzdGlu
Zzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4u
LgotICAvLyBUaGUgZGVmYXVsdCBjYXNlLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcyhfKSkK
LSAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oJ2InKSk7Ci0KLSAgLy8gVGhlIG1vcmUgc3Bl
Y2lmaWMgY2FzZS4KLSAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoTHQoNSkpKQotICAgICAgLldp
bGxSZXBlYXRlZGx5KFJldHVybignYScpKTsKLWBgYAotCi1Ob3csIGlmIGBmb28uRG9UaGlzKClg
IGlzIGNhbGxlZCB3aXRoIGEgdmFsdWUgbGVzcyB0aGFuIDUsIGAnYSdgIHdpbGwKLWJlIHJldHVy
bmVkOyBvdGhlcndpc2UgYCdiJ2Agd2lsbCBiZSByZXR1cm5lZC4KLQotIyMgTWF0Y2hpbmcgTXVs
dGlwbGUgQXJndW1lbnRzIGFzIGEgV2hvbGUgIyMKLQotU29tZXRpbWVzIGl0J3Mgbm90IGVub3Vn
aCB0byBtYXRjaCB0aGUgYXJndW1lbnRzIGluZGl2aWR1YWxseS4gRm9yCi1leGFtcGxlLCB3ZSBt
YXkgd2FudCB0byBzYXkgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBsZXNzIHRoYW4K
LXRoZSBzZWNvbmQgYXJndW1lbnQuIFRoZSBgV2l0aCgpYCBjbGF1c2UgYWxsb3dzIHVzIHRvIG1h
dGNoCi1hbGwgYXJndW1lbnRzIG9mIGEgbW9jayBmdW5jdGlvbiBhcyBhIHdob2xlLiBGb3IgZXhh
bXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okx0Owot
dXNpbmcgOjp0ZXN0aW5nOjpOZTsKLS4uLgotICBFWFBFQ1RfQ0FMTChmb28sIEluUmFuZ2UoTmUo
MCksIF8pKQotICAgICAgLldpdGgoTHQoKSk7Ci1gYGAKLQotc2F5cyB0aGF0IHRoZSBmaXJzdCBh
cmd1bWVudCBvZiBgSW5SYW5nZSgpYCBtdXN0IG5vdCBiZSAwLCBhbmQgbXVzdCBiZQotbGVzcyB0
aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQuCi0KLVRoZSBleHByZXNzaW9uIGluc2lkZSBgV2l0aCgp
YCBtdXN0IGJlIGEgbWF0Y2hlciBvZiB0eXBlCi1gTWF0Y2hlcjx0cjE6OnR1cGxlPEExLCAuLi4s
IEFuPiA+YCwgd2hlcmUgYEExYCwgLi4uLCBgQW5gIGFyZSB0aGUKLXR5cGVzIG9mIHRoZSBmdW5j
dGlvbiBhcmd1bWVudHMuCi0KLVlvdSBjYW4gYWxzbyB3cml0ZSBgQWxsQXJncyhtKWAgaW5zdGVh
ZCBvZiBgbWAgaW5zaWRlIGAuV2l0aCgpYC4gVGhlCi10d28gZm9ybXMgYXJlIGVxdWl2YWxlbnQs
IGJ1dCBgLldpdGgoQWxsQXJncyhMdCgpKSlgIGlzIG1vcmUgcmVhZGFibGUKLXRoYW4gYC5XaXRo
KEx0KCkpYC4KLQotWW91IGNhbiB1c2UgYEFyZ3M8azEsIC4uLiwga24+KG0pYCB0byBtYXRjaCB0
aGUgYG5gIHNlbGVjdGVkIGFyZ3VtZW50cwotKGFzIGEgdHVwbGUpIGFnYWluc3QgYG1gLiBGb3Ig
ZXhhbXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFs
bE9mOwotdXNpbmcgOjp0ZXN0aW5nOjpBcmdzOwotdXNpbmcgOjp0ZXN0aW5nOjpMdDsKLS4uLgot
ICBFWFBFQ1RfQ0FMTChmb28sIEJsYWgoXywgXywgXykpCi0gICAgICAuV2l0aChBbGxPZihBcmdz
PDAsIDE+KEx0KCkpLCBBcmdzPDEsIDI+KEx0KCkpKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGBCbGFo
KClgIHdpbGwgYmUgY2FsbGVkIHdpdGggYXJndW1lbnRzIGB4YCwgYHlgLCBhbmQgYHpgIHdoZXJl
Ci1geCA8IHkgPCB6YC4KLQotQXMgYSBjb252ZW5pZW5jZSBhbmQgZXhhbXBsZSwgR29vZ2xlIE1v
Y2sgcHJvdmlkZXMgc29tZSBtYXRjaGVycyBmb3IKLTItdHVwbGVzLCBpbmNsdWRpbmcgdGhlIGBM
dCgpYCBtYXRjaGVyIGFib3ZlLiBTZWUgdGhlIFtDaGVhdFNoZWV0XShWMV83X0NoZWF0U2hlZXQu
bWQpIGZvcgotdGhlIGNvbXBsZXRlIGxpc3QuCi0KLU5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBw
YXNzIHRoZSBhcmd1bWVudHMgdG8gYSBwcmVkaWNhdGUgb2YgeW91ciBvd24KLShlLmcuIGAuV2l0
aChBcmdzPDAsIDE+KFRydWx5KCZNeVByZWRpY2F0ZSkpKWApLCB0aGF0IHByZWRpY2F0ZSBNVVNU
IGJlCi13cml0dGVuIHRvIHRha2UgYSBgdHIxOjp0dXBsZWAgYXMgaXRzIGFyZ3VtZW50OyBHb29n
bGUgTW9jayB3aWxsIHBhc3MgdGhlIGBuYAotc2VsZWN0ZWQgYXJndW1lbnRzIGFzIF9vbmVfIHNp
bmdsZSB0dXBsZSB0byB0aGUgcHJlZGljYXRlLgotCi0jIyBVc2luZyBNYXRjaGVycyBhcyBQcmVk
aWNhdGVzICMjCi0KLUhhdmUgeW91IG5vdGljZWQgdGhhdCBhIG1hdGNoZXIgaXMganVzdCBhIGZh
bmN5IHByZWRpY2F0ZSB0aGF0IGFsc28KLWtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGY/IE1h
bnkgZXhpc3RpbmcgYWxnb3JpdGhtcyB0YWtlIHByZWRpY2F0ZXMKLWFzIGFyZ3VtZW50cyAoZS5n
LiB0aG9zZSBkZWZpbmVkIGluIFNUTCdzIGA8YWxnb3JpdGhtPmAgaGVhZGVyKSwgYW5kCi1pdCB3
b3VsZCBiZSBhIHNoYW1lIGlmIEdvb2dsZSBNb2NrIG1hdGNoZXJzIGFyZSBub3QgYWxsb3dlZCB0
bwotcGFydGljaXBhdGUuCi0KLUx1Y2tpbHksIHlvdSBjYW4gdXNlIGEgbWF0Y2hlciB3aGVyZSBh
IHVuYXJ5IHByZWRpY2F0ZSBmdW5jdG9yIGlzCi1leHBlY3RlZCBieSB3cmFwcGluZyBpdCBpbnNp
ZGUgdGhlIGBNYXRjaGVzKClgIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotc3RkOjp2ZWN0b3I8aW50PiB2Owot
Li4uCi0vLyBIb3cgbWFueSBlbGVtZW50cyBpbiB2IGFyZSA+PSAxMD8KLWNvbnN0IGludCBjb3Vu
dCA9IGNvdW50X2lmKHYuYmVnaW4oKSwgdi5lbmQoKSwgTWF0Y2hlcyhHZSgxMCkpKTsKLWBgYAot
Ci1TaW5jZSB5b3UgY2FuIGJ1aWxkIGNvbXBsZXggbWF0Y2hlcnMgZnJvbSBzaW1wbGVyIG9uZXMg
ZWFzaWx5IHVzaW5nCi1Hb29nbGUgTW9jaywgdGhpcyBnaXZlcyB5b3UgYSB3YXkgdG8gY29udmVu
aWVudGx5IGNvbnN0cnVjdCBjb21wb3NpdGUKLXByZWRpY2F0ZXMgKGRvaW5nIHRoZSBzYW1lIHVz
aW5nIFNUTCdzIGA8ZnVuY3Rpb25hbD5gIGhlYWRlciBpcyBqdXN0Ci1wYWluZnVsKS4gRm9yIGV4
YW1wbGUsIGhlcmUncyBhIHByZWRpY2F0ZSB0aGF0J3Mgc2F0aXNmaWVkIGJ5IGFueQotbnVtYmVy
IHRoYXQgaXMgPj0gMCwgPD0gMTAwLCBhbmQgIT0gNTA6Ci0KLWBgYAotTWF0Y2hlcyhBbGxPZihH
ZSgwKSwgTGUoMTAwKSwgTmUoNTApKSkKLWBgYAotCi0jIyBVc2luZyBNYXRjaGVycyBpbiBHb29n
bGUgVGVzdCBBc3NlcnRpb25zICMjCi0KLVNpbmNlIG1hdGNoZXJzIGFyZSBiYXNpY2FsbHkgcHJl
ZGljYXRlcyB0aGF0IGFsc28ga25vdyBob3cgdG8gZGVzY3JpYmUKLXRoZW1zZWx2ZXMsIHRoZXJl
IGlzIGEgd2F5IHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZW0gaW4KLVtHb29nbGUgVGVzdF0oaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvKSBhc3NlcnRpb25zLiBJdCdzCi1jYWxs
ZWQgYEFTU0VSVF9USEFUYCBhbmQgYEVYUEVDVF9USEFUYDoKLQotYGBgCi0gIEFTU0VSVF9USEFU
KHZhbHVlLCBtYXRjaGVyKTsgIC8vIEFzc2VydHMgdGhhdCB2YWx1ZSBtYXRjaGVzIG1hdGNoZXIu
Ci0gIEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKTsgIC8vIFRoZSBub24tZmF0YWwgdmVyc2lv
bi4KLWBgYAotCi1Gb3IgZXhhbXBsZSwgaW4gYSBHb29nbGUgVGVzdCB0ZXN0IHlvdSBjYW4gd3Jp
dGU6Ci0KLWBgYAotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0KLXVzaW5nIDo6dGVzdGluZzo6
QWxsT2Y7Ci11c2luZyA6OnRlc3Rpbmc6OkdlOwotdXNpbmcgOjp0ZXN0aW5nOjpMZTsKLXVzaW5n
IDo6dGVzdGluZzo6TWF0Y2hlc1JlZ2V4OwotdXNpbmcgOjp0ZXN0aW5nOjpTdGFydHNXaXRoOwot
Li4uCi0KLSAgRVhQRUNUX1RIQVQoRm9vKCksIFN0YXJ0c1dpdGgoIkhlbGxvIikpOwotICBFWFBF
Q1RfVEhBVChCYXIoKSwgTWF0Y2hlc1JlZ2V4KCJMaW5lIFxcZCsiKSk7Ci0gIEFTU0VSVF9USEFU
KEJheigpLCBBbGxPZihHZSg1KSwgTGUoMTApKSk7Ci1gYGAKLQotd2hpY2ggKGFzIHlvdSBjYW4g
cHJvYmFibHkgZ3Vlc3MpIGV4ZWN1dGVzIGBGb28oKWAsIGBCYXIoKWAsIGFuZAotYEJheigpYCwg
YW5kIHZlcmlmaWVzIHRoYXQ6Ci0KLSAgKiBgRm9vKClgIHJldHVybnMgYSBzdHJpbmcgdGhhdCBz
dGFydHMgd2l0aCBgIkhlbGxvImAuCi0gICogYEJhcigpYCByZXR1cm5zIGEgc3RyaW5nIHRoYXQg
bWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb24gYCJMaW5lIFxcZCsiYC4KLSAgKiBgQmF6KClgIHJl
dHVybnMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFs1LCAxMF0uCi0KLVRoZSBuaWNlIHRoaW5nIGFi
b3V0IHRoZXNlIG1hY3JvcyBpcyB0aGF0IF90aGV5IHJlYWQgbGlrZQotRW5nbGlzaF8uIFRoZXkg
Z2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXMgdG9vLiBGb3IgZXhhbXBsZSwgaWYgdGhlCi1m
aXJzdCBgRVhQRUNUX1RIQVQoKWAgYWJvdmUgZmFpbHMsIHRoZSBtZXNzYWdlIHdpbGwgYmUgc29t
ZXRoaW5nIGxpa2U6Ci0KLWBgYAotVmFsdWUgb2Y6IEZvbygpCi0gIEFjdHVhbDogIkhpLCB3b3Js
ZCEiCi1FeHBlY3RlZDogc3RhcnRzIHdpdGggIkhlbGxvIgotYGBgCi0KLSoqQ3JlZGl0OioqIFRo
ZSBpZGVhIG9mIGAoQVNTRVJUfEVYUEVDVClfVEhBVGAgd2FzIHN0b2xlbiBmcm9tIHRoZQotW0hh
bWNyZXN0XShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaGFtY3Jlc3QvKSBwcm9qZWN0LCB3aGlj
aCBhZGRzCi1gYXNzZXJ0VGhhdCgpYCB0byBKVW5pdC4KLQotIyMgVXNpbmcgUHJlZGljYXRlcyBh
cyBNYXRjaGVycyAjIwotCi1Hb29nbGUgTW9jayBwcm92aWRlcyBhIGJ1aWx0LWluIHNldCBvZiBt
YXRjaGVycy4gSW4gY2FzZSB5b3UgZmluZCB0aGVtCi1sYWNraW5nLCB5b3UgY2FuIHVzZSBhbiBh
cmJpdHJheSB1bmFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3RvcgotYXMgYSBtYXRjaGVy
IC0gYXMgbG9uZyBhcyB0aGUgcHJlZGljYXRlIGFjY2VwdHMgYSB2YWx1ZSBvZiB0aGUgdHlwZQot
eW91IHdhbnQuIFlvdSBkbyB0aGlzIGJ5IHdyYXBwaW5nIHRoZSBwcmVkaWNhdGUgaW5zaWRlIHRo
ZSBgVHJ1bHkoKWAKLWZ1bmN0aW9uLCBmb3IgZXhhbXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rp
bmc6OlRydWx5OwotCi1pbnQgSXNFdmVuKGludCBuKSB7IHJldHVybiAobiAlIDIpID09IDAgPyAx
IDogMDsgfQotLi4uCi0KLSAgLy8gQmFyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhbiBldmVuIG51
bWJlci4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoVHJ1bHkoSXNFdmVuKSkpOwotYGBgCi0KLU5v
dGUgdGhhdCB0aGUgcHJlZGljYXRlIGZ1bmN0aW9uIC8gZnVuY3RvciBkb2Vzbid0IGhhdmUgdG8g
cmV0dXJuCi1gYm9vbGAuIEl0IHdvcmtzIGFzIGxvbmcgYXMgdGhlIHJldHVybiB2YWx1ZSBjYW4g
YmUgdXNlZCBhcyB0aGUKLWNvbmRpdGlvbiBpbiBzdGF0ZW1lbnQgYGlmIChjb25kaXRpb24pIC4u
LmAuCi0KLSMjIE1hdGNoaW5nIEFyZ3VtZW50cyB0aGF0IEFyZSBOb3QgQ29weWFibGUgIyMKLQot
V2hlbiB5b3UgZG8gYW4gYEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBGb28oYmFyKSlgLCBHb29nbGUg
TW9jayBzYXZlcwotYXdheSBhIGNvcHkgb2YgYGJhcmAuIFdoZW4gYEZvbygpYCBpcyBjYWxsZWQg
bGF0ZXIsIEdvb2dsZSBNb2NrCi1jb21wYXJlcyB0aGUgYXJndW1lbnQgdG8gYEZvbygpYCB3aXRo
IHRoZSBzYXZlZCBjb3B5IG9mIGBiYXJgLiBUaGlzCi13YXksIHlvdSBkb24ndCBuZWVkIHRvIHdv
cnJ5IGFib3V0IGBiYXJgIGJlaW5nIG1vZGlmaWVkIG9yIGRlc3Ryb3llZAotYWZ0ZXIgdGhlIGBF
WFBFQ1RfQ0FMTCgpYCBpcyBleGVjdXRlZC4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHlvdSB1c2UK
LW1hdGNoZXJzIGxpa2UgYEVxKGJhcilgLCBgTGUoYmFyKWAsIGFuZCBzbyBvbi4KLQotQnV0IHdo
YXQgaWYgYGJhcmAgY2Fubm90IGJlIGNvcGllZCAoaS5lLiBoYXMgbm8gY29weSBjb25zdHJ1Y3Rv
cik/IFlvdQotY291bGQgZGVmaW5lIHlvdXIgb3duIG1hdGNoZXIgZnVuY3Rpb24gYW5kIHVzZSBp
dCB3aXRoIGBUcnVseSgpYCwgYXMKLXRoZSBwcmV2aW91cyBjb3VwbGUgb2YgcmVjaXBlcyBoYXZl
IHNob3duLiBPciwgeW91IG1heSBiZSBhYmxlIHRvIGdldAotYXdheSBmcm9tIGl0IGlmIHlvdSBj
YW4gZ3VhcmFudGVlIHRoYXQgYGJhcmAgd29uJ3QgYmUgY2hhbmdlZCBhZnRlcgotdGhlIGBFWFBF
Q1RfQ0FMTCgpYCBpcyBleGVjdXRlZC4gSnVzdCB0ZWxsIEdvb2dsZSBNb2NrIHRoYXQgaXQgc2hv
dWxkCi1zYXZlIGEgcmVmZXJlbmNlIHRvIGBiYXJgLCBpbnN0ZWFkIG9mIGEgY29weSBvZiBpdC4g
SGVyZSdzIGhvdzoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkVxOwotdXNpbmcgOjp0ZXN0aW5n
OjpCeVJlZjsKLXVzaW5nIDo6dGVzdGluZzo6THQ7Ci0uLi4KLSAgLy8gRXhwZWN0cyB0aGF0IEZv
bygpJ3MgYXJndW1lbnQgPT0gYmFyLgotICBFWFBFQ1RfQ0FMTChtb2NrX29iaiwgRm9vKEVxKEJ5
UmVmKGJhcikpKSk7Ci0KLSAgLy8gRXhwZWN0cyB0aGF0IEZvbygpJ3MgYXJndW1lbnQgPCBiYXIu
Ci0gIEVYUEVDVF9DQUxMKG1vY2tfb2JqLCBGb28oTHQoQnlSZWYoYmFyKSkpKTsKLWBgYAotCi1S
ZW1lbWJlcjogaWYgeW91IGRvIHRoaXMsIGRvbid0IGNoYW5nZSBgYmFyYCBhZnRlciB0aGUKLWBF
WFBFQ1RfQ0FMTCgpYCwgb3IgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuCi0KLSMjIFZhbGlkYXRp
bmcgYSBNZW1iZXIgb2YgYW4gT2JqZWN0ICMjCi0KLU9mdGVuIGEgbW9jayBmdW5jdGlvbiB0YWtl
cyBhIHJlZmVyZW5jZSB0byBvYmplY3QgYXMgYW4gYXJndW1lbnQuIFdoZW4KLW1hdGNoaW5nIHRo
ZSBhcmd1bWVudCwgeW91IG1heSBub3Qgd2FudCB0byBjb21wYXJlIHRoZSBlbnRpcmUgb2JqZWN0
Ci1hZ2FpbnN0IGEgZml4ZWQgb2JqZWN0LCBhcyB0aGF0IG1heSBiZSBvdmVyLXNwZWNpZmljYXRp
b24uIEluc3RlYWQsCi15b3UgbWF5IG5lZWQgdG8gdmFsaWRhdGUgYSBjZXJ0YWluIG1lbWJlciB2
YXJpYWJsZSBvciB0aGUgcmVzdWx0IG9mIGEKLWNlcnRhaW4gZ2V0dGVyIG1ldGhvZCBvZiB0aGUg
b2JqZWN0LiBZb3UgY2FuIGRvIHRoaXMgd2l0aCBgRmllbGQoKWAKLWFuZCBgUHJvcGVydHkoKWAu
IE1vcmUgc3BlY2lmaWNhbGx5LAotCi1gYGAKLUZpZWxkKCZGb286OmJhciwgbSkKLWBgYAotCi1p
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgYEZvb2Agb2JqZWN0IHdob3NlIGBiYXJgIG1lbWJl
ciB2YXJpYWJsZQotc2F0aXNmaWVzIG1hdGNoZXIgYG1gLgotCi1gYGAKLVByb3BlcnR5KCZGb286
OmJheiwgbSkKLWBgYAotCi1pcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgYEZvb2Agb2JqZWN0
IHdob3NlIGBiYXooKWAgbWV0aG9kIHJldHVybnMKLWEgdmFsdWUgdGhhdCBzYXRpc2ZpZXMgbWF0
Y2hlciBgbWAuCi0KLUZvciBleGFtcGxlOgotCi0+IHwgYEZpZWxkKCZGb286Om51bWJlciwgR2Uo
MykpYCB8IE1hdGNoZXMgYHhgIHdoZXJlIGB4Lm51bWJlciA+PSAzYC4gfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Ci0+IHwgYFByb3BlcnR5KCZGb286Om5hbWUsIFN0YXJ0c1dpdGgoIkpvaG4gIikpYCB8IE1hdGNo
ZXMgYHhgIHdoZXJlIGB4Lm5hbWUoKWAgc3RhcnRzIHdpdGggYCJKb2huICJgLiB8Ci0KLU5vdGUg
dGhhdCBpbiBgUHJvcGVydHkoJkZvbzo6YmF6LCAuLi4pYCwgbWV0aG9kIGBiYXooKWAgbXVzdCB0
YWtlIG5vCi1hcmd1bWVudCBhbmQgYmUgZGVjbGFyZWQgYXMgYGNvbnN0YC4KLQotQlRXLCBgRmll
bGQoKWAgYW5kIGBQcm9wZXJ0eSgpYCBjYW4gYWxzbyBtYXRjaCBwbGFpbiBwb2ludGVycyB0bwot
b2JqZWN0cy4gRm9yIGluc3RhbmNlLAotCi1gYGAKLUZpZWxkKCZGb286Om51bWJlciwgR2UoMykp
Ci1gYGAKLQotbWF0Y2hlcyBhIHBsYWluIHBvaW50ZXIgYHBgIHdoZXJlIGBwLT5udW1iZXIgPj0g
M2AuIElmIGBwYCBpcyBgTlVMTGAsCi10aGUgbWF0Y2ggd2lsbCBhbHdheXMgZmFpbCByZWdhcmRs
ZXNzIG9mIHRoZSBpbm5lciBtYXRjaGVyLgotCi1XaGF0IGlmIHlvdSB3YW50IHRvIHZhbGlkYXRl
IG1vcmUgdGhhbiBvbmUgbWVtYmVycyBhdCB0aGUgc2FtZSB0aW1lPwotUmVtZW1iZXIgdGhhdCB0
aGVyZSBpcyBgQWxsT2YoKWAuCi0KLSMjIFZhbGlkYXRpbmcgdGhlIFZhbHVlIFBvaW50ZWQgdG8g
YnkgYSBQb2ludGVyIEFyZ3VtZW50ICMjCi0KLUMrKyBmdW5jdGlvbnMgb2Z0ZW4gdGFrZSBwb2lu
dGVycyBhcyBhcmd1bWVudHMuIFlvdSBjYW4gdXNlIG1hdGNoZXJzCi1saWtlIGBJc051bGwoKWAs
IGBOb3ROdWxsKClgLCBhbmQgb3RoZXIgY29tcGFyaXNvbiBtYXRjaGVycyB0byBtYXRjaCBhCi1w
b2ludGVyLCBidXQgd2hhdCBpZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhlIHZhbHVlIF9wb2lu
dGVkIHRvXyBieQotdGhlIHBvaW50ZXIsIGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgaXRzZWxmLCBo
YXMgYSBjZXJ0YWluIHByb3BlcnR5PwotV2VsbCwgeW91IGNhbiB1c2UgdGhlIGBQb2ludGVlKG0p
YCBtYXRjaGVyLgotCi1gUG9pbnRlZShtKWAgbWF0Y2hlcyBhIHBvaW50ZXIgaWZmIGBtYCBtYXRj
aGVzIHRoZSB2YWx1ZSB0aGUgcG9pbnRlcgotcG9pbnRzIHRvLiBGb3IgZXhhbXBsZToKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6OkdlOwotdXNpbmcgOjp0ZXN0aW5nOjpQb2ludGVlOwotLi4uCi0g
IEVYUEVDVF9DQUxMKGZvbywgQmFyKFBvaW50ZWUoR2UoMykpKSk7Ci1gYGAKLQotZXhwZWN0cyBg
Zm9vLkJhcigpYCB0byBiZSBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdGhhdCBwb2ludHMgdG8gYSB2
YWx1ZQotZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDMuCi0KLU9uZSBuaWNlIHRoaW5nIGFib3V0
IGBQb2ludGVlKClgIGlzIHRoYXQgaXQgdHJlYXRzIGEgYE5VTExgIHBvaW50ZXIgYXMKLWEgbWF0
Y2ggZmFpbHVyZSwgc28geW91IGNhbiB3cml0ZSBgUG9pbnRlZShtKWAgaW5zdGVhZCBvZgotCi1g
YGAKLSAgQWxsT2YoTm90TnVsbCgpLCBQb2ludGVlKG0pKQotYGBgCi0KLXdpdGhvdXQgd29ycnlp
bmcgdGhhdCBhIGBOVUxMYCBwb2ludGVyIHdpbGwgY3Jhc2ggeW91ciB0ZXN0LgotCi1BbHNvLCBk
aWQgd2UgdGVsbCB5b3UgdGhhdCBgUG9pbnRlZSgpYCB3b3JrcyB3aXRoIGJvdGggcmF3IHBvaW50
ZXJzCi0qKmFuZCoqIHNtYXJ0IHBvaW50ZXJzIChgbGlua2VkX3B0cmAsIGBzaGFyZWRfcHRyYCwg
YHNjb3BlZF9wdHJgLCBhbmQKLWV0Yyk/Ci0KLVdoYXQgaWYgeW91IGhhdmUgYSBwb2ludGVyIHRv
IHBvaW50ZXI/IFlvdSBndWVzc2VkIGl0IC0geW91IGNhbiB1c2UKLW5lc3RlZCBgUG9pbnRlZSgp
YCB0byBwcm9iZSBkZWVwZXIgaW5zaWRlIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGUsCi1gUG9pbnRl
ZShQb2ludGVlKEx0KDMpKSlgIG1hdGNoZXMgYSBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIGEgcG9p
bnRlcgotdGhhdCBwb2ludHMgdG8gYSBudW1iZXIgbGVzcyB0aGFuIDMgKHdoYXQgYSBtb3V0aGZ1
bC4uLikuCi0KLSMjIFRlc3RpbmcgYSBDZXJ0YWluIFByb3BlcnR5IG9mIGFuIE9iamVjdCAjIwot
Ci1Tb21ldGltZXMgeW91IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuIG9iamVjdCBhcmd1bWVudCBo
YXMgYSBjZXJ0YWluCi1wcm9wZXJ0eSwgYnV0IHRoZXJlIGlzIG5vIGV4aXN0aW5nIG1hdGNoZXIg
dGhhdCBkb2VzIHRoaXMuIElmIHlvdSB3YW50Ci1nb29kIGVycm9yIG1lc3NhZ2VzLCB5b3Ugc2hv
dWxkIGRlZmluZSBhIG1hdGNoZXIuIElmIHlvdSB3YW50IHRvIGRvIGl0Ci1xdWljayBhbmQgZGly
dHksIHlvdSBjb3VsZCBnZXQgYXdheSB3aXRoIHdyaXRpbmcgYW4gb3JkaW5hcnkgZnVuY3Rpb24u
Ci0KLUxldCdzIHNheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBvYmpl
Y3Qgb2YgdHlwZSBgRm9vYCwKLXdoaWNoIGhhcyBhbiBgaW50IGJhcigpYCBtZXRob2QgYW5kIGFu
IGBpbnQgYmF6KClgIG1ldGhvZCwgYW5kIHlvdQotd2FudCB0byBjb25zdHJhaW4gdGhhdCB0aGUg
YXJndW1lbnQncyBgYmFyKClgIHZhbHVlIHBsdXMgaXRzIGBiYXooKWAKLXZhbHVlIGlzIGEgZ2l2
ZW4gbnVtYmVyLiBIZXJlJ3MgaG93IHlvdSBjYW4gZGVmaW5lIGEgbWF0Y2hlciB0byBkbyBpdDoK
LQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRlc3Rp
bmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci0KLWNsYXNzIEJhclBsdXNCYXpFcU1hdGNoZXIgOiBw
dWJsaWMgTWF0Y2hlckludGVyZmFjZTxjb25zdCBGb28mPiB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBCYXJQbHVzQmF6RXFNYXRjaGVyKGludCBleHBlY3RlZF9zdW0pCi0gICAgICA6IGV4cGVjdGVk
X3N1bV8oZXhwZWN0ZWRfc3VtKSB7fQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
Y29uc3QgRm9vJiBmb28sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gKGZvby5iYXIoKSArIGZv
by5iYXooKSkgPT0gZXhwZWN0ZWRfc3VtXzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiYmFyKCkgKyBiYXoo
KSBlcXVhbHMgIiA8PCBleHBlY3RlZF9zdW1fOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImJh
cigpICsgYmF6KCkgZG9lcyBub3QgZXF1YWwgIiA8PCBleHBlY3RlZF9zdW1fOwotICB9Ci0gcHJp
dmF0ZToKLSAgY29uc3QgaW50IGV4cGVjdGVkX3N1bV87Ci19OwotCi1pbmxpbmUgTWF0Y2hlcjxj
b25zdCBGb28mPiBCYXJQbHVzQmF6RXEoaW50IGV4cGVjdGVkX3N1bSkgewotICByZXR1cm4gTWFr
ZU1hdGNoZXIobmV3IEJhclBsdXNCYXpFcU1hdGNoZXIoZXhwZWN0ZWRfc3VtKSk7Ci19Ci0KLS4u
LgotCi0gIEVYUEVDVF9DQUxMKC4uLiwgRG9UaGlzKEJhclBsdXNCYXpFcSg1KSkpLi4uOwotYGBg
Ci0KLSMjIE1hdGNoaW5nIENvbnRhaW5lcnMgIyMKLQotU29tZXRpbWVzIGFuIFNUTCBjb250YWlu
ZXIgKGUuZy4gbGlzdCwgdmVjdG9yLCBtYXAsIC4uLikgaXMgcGFzc2VkIHRvCi1hIG1vY2sgZnVu
Y3Rpb24gYW5kIHlvdSBtYXkgd2FudCB0byB2YWxpZGF0ZSBpdC4gU2luY2UgbW9zdCBTVEwKLWNv
bnRhaW5lcnMgc3VwcG9ydCB0aGUgYD09YCBvcGVyYXRvciwgeW91IGNhbiB3cml0ZQotYEVxKGV4
cGVjdGVkX2NvbnRhaW5lcilgIG9yIHNpbXBseSBgZXhwZWN0ZWRfY29udGFpbmVyYCB0byBtYXRj
aCBhCi1jb250YWluZXIgZXhhY3RseS4KLQotU29tZXRpbWVzLCB0aG91Z2gsIHlvdSBtYXkgd2Fu
dCB0byBiZSBtb3JlIGZsZXhpYmxlIChmb3IgZXhhbXBsZSwgdGhlCi1maXJzdCBlbGVtZW50IG11
c3QgYmUgYW4gZXhhY3QgbWF0Y2gsIGJ1dCB0aGUgc2Vjb25kIGVsZW1lbnQgY2FuIGJlCi1hbnkg
cG9zaXRpdmUgbnVtYmVyLCBhbmQgc28gb24pLiBBbHNvLCBjb250YWluZXJzIHVzZWQgaW4gdGVz
dHMgb2Z0ZW4KLWhhdmUgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMsIGFuZCBoYXZpbmcgdG8g
ZGVmaW5lIHRoZSBleHBlY3RlZAotY29udGFpbmVyIG91dC1vZi1saW5lIGlzIGEgYml0IG9mIGEg
aGFzc2xlLgotCi1Zb3UgY2FuIHVzZSB0aGUgYEVsZW1lbnRzQXJlKClgIG9yIGBVbm9yZGVyZWRF
bGVtZW50c0FyZSgpYCBtYXRjaGVyIGluCi1zdWNoIGNhc2VzOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2luZyA6OnRlc3Rpbmc6
Okd0OwotLi4uCi0KLSAgTU9DS19NRVRIT0QxKEZvbywgdm9pZChjb25zdCB2ZWN0b3I8aW50PiYg
bnVtYmVycykpOwotLi4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKEVsZW1lbnRzQXJlKDEs
IEd0KDApLCBfLCA1KSkpOwotYGBgCi0KLVRoZSBhYm92ZSBtYXRjaGVyIHNheXMgdGhhdCB0aGUg
Y29udGFpbmVyIG11c3QgaGF2ZSA0IGVsZW1lbnRzLCB3aGljaAotbXVzdCBiZSAxLCBncmVhdGVy
IHRoYW4gMCwgYW55dGhpbmcsIGFuZCA1IHJlc3BlY3RpdmVseS4KLQotSWYgeW91IGluc3RlYWQg
d3JpdGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpHdDsK
LXVzaW5nIDo6dGVzdGluZzo6VW5vcmRlcmVkRWxlbWVudHNBcmU7Ci0uLi4KLQotICBNT0NLX01F
VEhPRDEoRm9vLCB2b2lkKGNvbnN0IHZlY3RvcjxpbnQ+JiBudW1iZXJzKSk7Ci0uLi4KLQotICBF
WFBFQ1RfQ0FMTChtb2NrLCBGb28oVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgR3QoMCksIF8sIDUp
KSk7Ci1gYGAKLQotSXQgbWVhbnMgdGhhdCB0aGUgY29udGFpbmVyIG11c3QgaGF2ZSA0IGVsZW1l
bnRzLCB3aGljaCB1bmRlciBzb21lCi1wZXJtdXRhdGlvbiBtdXN0IGJlIDEsIGdyZWF0ZXIgdGhh
biAwLCBhbnl0aGluZywgYW5kIDUgcmVzcGVjdGl2ZWx5LgotCi1gRWxlbWVudHNBcmUoKWAgYW5k
IGBVbm9yZGVyZWRFbGVtZW50c0FyZSgpYCBhcmUgb3ZlcmxvYWRlZCB0byB0YWtlIDAKLXRvIDEw
IGFyZ3VtZW50cy4gSWYgbW9yZSBhcmUgbmVlZGVkLCB5b3UgY2FuIHBsYWNlIHRoZW0gaW4gYSBD
LXN0eWxlCi1hcnJheSBhbmQgdXNlIGBFbGVtZW50c0FyZUFycmF5KClgIG9yIGBVbm9yZGVyZWRF
bGVtZW50c0FyZUFycmF5KClgCi1pbnN0ZWFkOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RWxl
bWVudHNBcmVBcnJheTsKLS4uLgotCi0gIC8vIEVsZW1lbnRzQXJlQXJyYXkgYWNjZXB0cyBhbiBh
cnJheSBvZiBlbGVtZW50IHZhbHVlcy4KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZlY3RvcjFbXSA9
IHsgMSwgNSwgMiwgNCwgLi4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0Fy
ZUFycmF5KGV4cGVjdGVkX3ZlY3RvcjEpKSk7Ci0KLSAgLy8gT3IsIGFuIGFycmF5IG9mIGVsZW1l
bnQgbWF0Y2hlcnMuCi0gIE1hdGNoZXI8aW50PiBleHBlY3RlZF92ZWN0b3IyID0geyAxLCBHdCgy
KSwgXywgMywgLi4uIH07Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhFbGVtZW50c0FyZUFycmF5
KGV4cGVjdGVkX3ZlY3RvcjIpKSk7Ci1gYGAKLQotSW4gY2FzZSB0aGUgYXJyYXkgbmVlZHMgdG8g
YmUgZHluYW1pY2FsbHkgY3JlYXRlZCAoYW5kIHRoZXJlZm9yZSB0aGUKLWFycmF5IHNpemUgY2Fu
bm90IGJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlciksIHlvdSBjYW4gZ2l2ZQotYEVsZW1lbnRz
QXJlQXJyYXkoKWAgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoZSBhcnJheSBz
aXplOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6RWxlbWVudHNBcmVBcnJheTsKLS4uLgotICBp
bnQqIGNvbnN0IGV4cGVjdGVkX3ZlY3RvcjMgPSBuZXcgaW50W2NvdW50XTsKLSAgLi4uIGZpbGwg
ZXhwZWN0ZWRfdmVjdG9yMyB3aXRoIHZhbHVlcyAuLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9v
KEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWRfdmVjdG9yMywgY291bnQpKSk7Ci1gYGAKLQotKipU
aXBzOioqCi0KLSAgKiBgRWxlbWVudHNBcmUqKClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIF9hbnlf
IGNvbnRhaW5lciB0aGF0IGltcGxlbWVudHMgdGhlIFNUTCBpdGVyYXRvciBwYXR0ZXJuIChpLmUu
IGl0IGhhcyBhIGBjb25zdF9pdGVyYXRvcmAgdHlwZSBhbmQgc3VwcG9ydHMgYGJlZ2luKCkvZW5k
KClgKSwgbm90IGp1c3QgdGhlIG9uZXMgZGVmaW5lZCBpbiBTVEwuIEl0IHdpbGwgZXZlbiB3b3Jr
IHdpdGggY29udGFpbmVyIHR5cGVzIHlldCB0byBiZSB3cml0dGVuIC0gYXMgbG9uZyBhcyB0aGV5
IGZvbGxvd3MgdGhlIGFib3ZlIHBhdHRlcm4uCi0gICogWW91IGNhbiB1c2UgbmVzdGVkIGBFbGVt
ZW50c0FyZSooKWAgdG8gbWF0Y2ggbmVzdGVkIChtdWx0aS1kaW1lbnNpb25hbCkgY29udGFpbmVy
cy4KLSAgKiBJZiB0aGUgY29udGFpbmVyIGlzIHBhc3NlZCBieSBwb2ludGVyIGluc3RlYWQgb2Yg
YnkgcmVmZXJlbmNlLCBqdXN0IHdyaXRlIGBQb2ludGVlKEVsZW1lbnRzQXJlKiguLi4pKWAuCi0g
ICogVGhlIG9yZGVyIG9mIGVsZW1lbnRzIF9tYXR0ZXJzXyBmb3IgYEVsZW1lbnRzQXJlKigpYC4g
VGhlcmVmb3JlIGRvbid0IHVzZSBpdCB3aXRoIGNvbnRhaW5lcnMgd2hvc2UgZWxlbWVudCBvcmRl
ciBpcyB1bmRlZmluZWQgKGUuZy4gYGhhc2hfbWFwYCkuCi0KLSMjIFNoYXJpbmcgTWF0Y2hlcnMg
IyMKLQotVW5kZXIgdGhlIGhvb2QsIGEgR29vZ2xlIE1vY2sgbWF0Y2hlciBvYmplY3QgY29uc2lz
dHMgb2YgYSBwb2ludGVyIHRvCi1hIHJlZi1jb3VudGVkIGltcGxlbWVudGF0aW9uIG9iamVjdC4g
Q29weWluZyBtYXRjaGVycyBpcyBhbGxvd2VkIGFuZAotdmVyeSBlZmZpY2llbnQsIGFzIG9ubHkg
dGhlIHBvaW50ZXIgaXMgY29waWVkLiBXaGVuIHRoZSBsYXN0IG1hdGNoZXIKLXRoYXQgcmVmZXJl
bmNlcyB0aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0IGRpZXMsIHRoZSBpbXBsZW1lbnRhdGlvbgot
b2JqZWN0IHdpbGwgYmUgZGVsZXRlZC4KLQotVGhlcmVmb3JlLCBpZiB5b3UgaGF2ZSBzb21lIGNv
bXBsZXggbWF0Y2hlciB0aGF0IHlvdSB3YW50IHRvIHVzZSBhZ2FpbgotYW5kIGFnYWluLCB0aGVy
ZSBpcyBubyBuZWVkIHRvIGJ1aWxkIGl0IGV2ZXJ5dGltZS4gSnVzdCBhc3NpZ24gaXQgdG8gYQot
bWF0Y2hlciB2YXJpYWJsZSBhbmQgdXNlIHRoYXQgdmFyaWFibGUgcmVwZWF0ZWRseSEgRm9yIGV4
YW1wbGUsCi0KLWBgYAotICBNYXRjaGVyPGludD4gaW5fcmFuZ2UgPSBBbGxPZihHdCg1KSwgTGUo
MTApKTsKLSAgLi4uIHVzZSBpbl9yYW5nZSBhcyBhIG1hdGNoZXIgaW4gbXVsdGlwbGUgRVhQRUNU
X0NBTExzIC4uLgotYGBgCi0KLSMgU2V0dGluZyBFeHBlY3RhdGlvbnMgIwotCi0jIyBLbm93aW5n
IFdoZW4gdG8gRXhwZWN0ICMjCi0KLWBPTl9DQUxMYCBpcyBsaWtlbHkgdGhlIHNpbmdsZSBtb3N0
IHVuZGVyLXV0aWxpemVkIGNvbnN0cnVjdCBpbiBHb29nbGUgTW9jay4KLQotVGhlcmUgYXJlIGJh
c2ljYWxseSB0d28gY29uc3RydWN0cyBmb3IgZGVmaW5pbmcgdGhlIGJlaGF2aW9yIG9mIGEgbW9j
ayBvYmplY3Q6IGBPTl9DQUxMYCBhbmQgYEVYUEVDVF9DQUxMYC4gVGhlIGRpZmZlcmVuY2U/IGBP
Tl9DQUxMYCBkZWZpbmVzIHdoYXQgaGFwcGVucyB3aGVuIGEgbW9jayBtZXRob2QgaXMgY2FsbGVk
LCBidXQgX2RvZXNuJ3QgaW1wbHkgYW55IGV4cGVjdGF0aW9uIG9uIHRoZSBtZXRob2QgYmVpbmcg
Y2FsbGVkLl8gYEVYUEVDVF9DQUxMYCBub3Qgb25seSBkZWZpbmVzIHRoZSBiZWhhdmlvciwgYnV0
IGFsc28gc2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IF90aGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVk
IHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cywgZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgdGltZXNf
IChhbmQgX2luIHRoZSBnaXZlbiBvcmRlcl8gd2hlbiB5b3Ugc3BlY2lmeSB0aGUgb3JkZXIgdG9v
KS4KLQotU2luY2UgYEVYUEVDVF9DQUxMYCBkb2VzIG1vcmUsIGlzbid0IGl0IGJldHRlciB0aGFu
IGBPTl9DQUxMYD8gTm90IHJlYWxseS4gRXZlcnkgYEVYUEVDVF9DQUxMYCBhZGRzIGEgY29uc3Ry
YWludCBvbiB0aGUgYmVoYXZpb3Igb2YgdGhlIGNvZGUgdW5kZXIgdGVzdC4gSGF2aW5nIG1vcmUg
Y29uc3RyYWludHMgdGhhbiBuZWNlc3NhcnkgaXMgX2JhYWFkXyAtIGV2ZW4gd29yc2UgdGhhbiBu
b3QgaGF2aW5nIGVub3VnaCBjb25zdHJhaW50cy4KLQotVGhpcyBtYXkgYmUgY291bnRlci1pbnR1
aXRpdmUuIEhvdyBjb3VsZCB0ZXN0cyB0aGF0IHZlcmlmeSBtb3JlIGJlIHdvcnNlIHRoYW4gdGVz
dHMgdGhhdCB2ZXJpZnkgbGVzcz8gSXNuJ3QgdmVyaWZpY2F0aW9uIHRoZSB3aG9sZSBwb2ludCBv
ZiB0ZXN0cz8KLQotVGhlIGFuc3dlciwgbGllcyBpbiBfd2hhdF8gYSB0ZXN0IHNob3VsZCB2ZXJp
ZnkuICoqQSBnb29kIHRlc3QgdmVyaWZpZXMgdGhlIGNvbnRyYWN0IG9mIHRoZSBjb2RlLioqIElm
IGEgdGVzdCBvdmVyLXNwZWNpZmllcywgaXQgZG9lc24ndCBsZWF2ZSBlbm91Z2ggZnJlZWRvbSB0
byB0aGUgaW1wbGVtZW50YXRpb24uIEFzIGEgcmVzdWx0LCBjaGFuZ2luZyB0aGUgaW1wbGVtZW50
YXRpb24gd2l0aG91dCBicmVha2luZyB0aGUgY29udHJhY3QgKGUuZy4gcmVmYWN0b3JpbmcgYW5k
IG9wdGltaXphdGlvbiksIHdoaWNoIHNob3VsZCBiZSBwZXJmZWN0bHkgZmluZSB0byBkbywgY2Fu
IGJyZWFrIHN1Y2ggdGVzdHMuIFRoZW4geW91IGhhdmUgdG8gc3BlbmQgdGltZSBmaXhpbmcgdGhl
bSwgb25seSB0byBzZWUgdGhlbSBicm9rZW4gYWdhaW4gdGhlIG5leHQgdGltZSB0aGUgaW1wbGVt
ZW50YXRpb24gaXMgY2hhbmdlZC4KLQotS2VlcCBpbiBtaW5kIHRoYXQgb25lIGRvZXNuJ3QgaGF2
ZSB0byB2ZXJpZnkgbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eSBpbiBvbmUgdGVzdC4gSW4gZmFjdCwg
KippdCdzIGEgZ29vZCBzdHlsZSB0byB2ZXJpZnkgb25seSBvbmUgdGhpbmcgaW4gb25lIHRlc3Qu
KiogSWYgeW91IGRvIHRoYXQsIGEgYnVnIHdpbGwgbGlrZWx5IGJyZWFrIG9ubHkgb25lIG9yIHR3
byB0ZXN0cyBpbnN0ZWFkIG9mIGRvemVucyAod2hpY2ggY2FzZSB3b3VsZCB5b3UgcmF0aGVyIGRl
YnVnPykuIElmIHlvdSBhcmUgYWxzbyBpbiB0aGUgaGFiaXQgb2YgZ2l2aW5nIHRlc3RzIGRlc2Ny
aXB0aXZlIG5hbWVzIHRoYXQgdGVsbCB3aGF0IHRoZXkgdmVyaWZ5LCB5b3UgY2FuIG9mdGVuIGVh
c2lseSBndWVzcyB3aGF0J3Mgd3JvbmcganVzdCBmcm9tIHRoZSB0ZXN0IGxvZyBpdHNlbGYuCi0K
LVNvIHVzZSBgT05fQ0FMTGAgYnkgZGVmYXVsdCwgYW5kIG9ubHkgdXNlIGBFWFBFQ1RfQ0FMTGAg
d2hlbiB5b3UgYWN0dWFsbHkgaW50ZW5kIHRvIHZlcmlmeSB0aGF0IHRoZSBjYWxsIGlzIG1hZGUu
IEZvciBleGFtcGxlLCB5b3UgbWF5IGhhdmUgYSBidW5jaCBvZiBgT05fQ0FMTGBzIGluIHlvdXIg
dGVzdCBmaXh0dXJlIHRvIHNldCB0aGUgY29tbW9uIG1vY2sgYmVoYXZpb3Igc2hhcmVkIGJ5IGFs
bCB0ZXN0cyBpbiB0aGUgc2FtZSBncm91cCwgYW5kIHdyaXRlIChzY2FyY2VseSkgZGlmZmVyZW50
IGBFWFBFQ1RfQ0FMTGBzIGluIGRpZmZlcmVudCBgVEVTVF9GYHMgdG8gdmVyaWZ5IGRpZmZlcmVu
dCBhc3BlY3RzIG9mIHRoZSBjb2RlJ3MgYmVoYXZpb3IuIENvbXBhcmVkIHdpdGggdGhlIHN0eWxl
IHdoZXJlIGVhY2ggYFRFU1RgIGhhcyBtYW55IGBFWFBFQ1RfQ0FMTGBzLCB0aGlzIGxlYWRzIHRv
IHRlc3RzIHRoYXQgYXJlIG1vcmUgcmVzaWxpZW50IHRvIGltcGxlbWVudGF0aW9uYWwgY2hhbmdl
cyAoYW5kIHRodXMgbGVzcyBsaWtlbHkgdG8gcmVxdWlyZSBtYWludGVuYW5jZSkgYW5kIG1ha2Vz
IHRoZSBpbnRlbnQgb2YgdGhlIHRlc3RzIG1vcmUgb2J2aW91cyAoc28gdGhleSBhcmUgZWFzaWVy
IHRvIG1haW50YWluIHdoZW4geW91IGRvIG5lZWQgdG8gbWFpbnRhaW4gdGhlbSkuCi0KLSMjIEln
bm9yaW5nIFVuaW50ZXJlc3RpbmcgQ2FsbHMgIyMKLQotSWYgeW91IGFyZSBub3QgaW50ZXJlc3Rl
ZCBpbiBob3cgYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIGp1c3QgZG9uJ3QKLXNheSBhbnl0aGlu
ZyBhYm91dCBpdC4gSW4gdGhpcyBjYXNlLCBpZiB0aGUgbWV0aG9kIGlzIGV2ZXIgY2FsbGVkLAot
R29vZ2xlIE1vY2sgd2lsbCBwZXJmb3JtIGl0cyBkZWZhdWx0IGFjdGlvbiB0byBhbGxvdyB0aGUg
dGVzdCBwcm9ncmFtCi10byBjb250aW51ZS4gSWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aCB0aGUg
ZGVmYXVsdCBhY3Rpb24gdGFrZW4gYnkKLUdvb2dsZSBNb2NrLCB5b3UgY2FuIG92ZXJyaWRlIGl0
IHVzaW5nIGBEZWZhdWx0VmFsdWU8VD46OlNldCgpYAotKGRlc2NyaWJlZCBsYXRlciBpbiB0aGlz
IGRvY3VtZW50KSBvciBgT05fQ0FMTCgpYC4KLQotUGxlYXNlIG5vdGUgdGhhdCBvbmNlIHlvdSBl
eHByZXNzZWQgaW50ZXJlc3QgaW4gYSBwYXJ0aWN1bGFyIG1vY2sKLW1ldGhvZCAodmlhIGBFWFBF
Q1RfQ0FMTCgpYCksIGFsbCBpbnZvY2F0aW9ucyB0byBpdCBtdXN0IG1hdGNoIHNvbWUKLWV4cGVj
dGF0aW9uLiBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBidXQgdGhlIGFyZ3VtZW50cyBkb24n
dCBtYXRjaAotYW55IGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgYW4gZXJy
b3IuCi0KLSMjIERpc2FsbG93aW5nIFVuZXhwZWN0ZWQgQ2FsbHMgIyMKLQotSWYgYSBtb2NrIG1l
dGhvZCBzaG91bGRuJ3QgYmUgY2FsbGVkIGF0IGFsbCwgZXhwbGljaXRseSBzYXkgc286Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotLi4uCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8pKQot
ICAgICAgLlRpbWVzKDApOwotYGBgCi0KLUlmIHNvbWUgY2FsbHMgdG8gdGhlIG1ldGhvZCBhcmUg
YWxsb3dlZCwgYnV0IHRoZSByZXN0IGFyZSBub3QsIGp1c3QKLWxpc3QgYWxsIHRoZSBleHBlY3Rl
ZCBjYWxsczoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkFueU51bWJlcjsKLXVzaW5nIDo6dGVz
dGluZzo6R3Q7Ci0uLi4KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoNSkpOwotICBFWFBFQ1RfQ0FM
TChmb28sIEJhcihHdCgxMCkpKQotICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsKLWBgYAotCi1B
IGNhbGwgdG8gYGZvby5CYXIoKWAgdGhhdCBkb2Vzbid0IG1hdGNoIGFueSBvZiB0aGUgYEVYUEVD
VF9DQUxMKClgCi1zdGF0ZW1lbnRzIHdpbGwgYmUgYW4gZXJyb3IuCi0KLSMjIEV4cGVjdGluZyBP
cmRlcmVkIENhbGxzICMjCi0KLUFsdGhvdWdoIGFuIGBFWFBFQ1RfQ0FMTCgpYCBzdGF0ZW1lbnQg
ZGVmaW5lZCBlYXJsaWVyIHRha2VzIHByZWNlZGVuY2UKLXdoZW4gR29vZ2xlIE1vY2sgdHJpZXMg
dG8gbWF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZXhwZWN0YXRpb24sCi1ieSBkZWZhdWx0
IGNhbGxzIGRvbid0IGhhdmUgdG8gaGFwcGVuIGluIHRoZSBvcmRlciBgRVhQRUNUX0NBTEwoKWAK
LXN0YXRlbWVudHMgYXJlIHdyaXR0ZW4uIEZvciBleGFtcGxlLCBpZiB0aGUgYXJndW1lbnRzIG1h
dGNoIHRoZQotbWF0Y2hlcnMgaW4gdGhlIHRoaXJkIGBFWFBFQ1RfQ0FMTCgpYCwgYnV0IG5vdCB0
aG9zZSBpbiB0aGUgZmlyc3QgdHdvLAotdGhlbiB0aGUgdGhpcmQgZXhwZWN0YXRpb24gd2lsbCBi
ZSB1c2VkLgotCi1JZiB5b3Ugd291bGQgcmF0aGVyIGhhdmUgYWxsIGNhbGxzIG9jY3VyIGluIHRo
ZSBvcmRlciBvZiB0aGUKLWV4cGVjdGF0aW9ucywgcHV0IHRoZSBgRVhQRUNUX0NBTEwoKWAgc3Rh
dGVtZW50cyBpbiBhIGJsb2NrIHdoZXJlIHlvdQotZGVmaW5lIGEgdmFyaWFibGUgb2YgdHlwZSBg
SW5TZXF1ZW5jZWA6Ci0KLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6Ol87Ci0gIHVzaW5nIDo6dGVz
dGluZzo6SW5TZXF1ZW5jZTsKLQotICB7Ci0gICAgSW5TZXF1ZW5jZSBzOwotCi0gICAgRVhQRUNU
X0NBTEwoZm9vLCBEb1RoaXMoNSkpOwotICAgIEVYUEVDVF9DQUxMKGJhciwgRG9UaGF0KF8pKQot
ICAgICAgICAuVGltZXMoMik7Ci0gICAgRVhQRUNUX0NBTEwoZm9vLCBEb1RoaXMoNikpOwotICB9
Ci1gYGAKLQotSW4gdGhpcyBleGFtcGxlLCB3ZSBleHBlY3QgYSBjYWxsIHRvIGBmb28uRG9UaGlz
KDUpYCwgZm9sbG93ZWQgYnkgdHdvCi1jYWxscyB0byBgYmFyLkRvVGhhdCgpYCB3aGVyZSB0aGUg
YXJndW1lbnQgY2FuIGJlIGFueXRoaW5nLCB3aGljaCBhcmUKLWluIHR1cm4gZm9sbG93ZWQgYnkg
YSBjYWxsIHRvIGBmb28uRG9UaGlzKDYpYC4gSWYgYSBjYWxsIG9jY3VycmVkCi1vdXQtb2Ytb3Jk
ZXIsIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0IGFuIGVycm9yLgotCi0jIyBFeHBlY3RpbmcgUGFy
dGlhbGx5IE9yZGVyZWQgQ2FsbHMgIyMKLQotU29tZXRpbWVzIHJlcXVpcmluZyBldmVyeXRoaW5n
IHRvIG9jY3VyIGluIGEgcHJlZGV0ZXJtaW5lZCBvcmRlciBjYW4KLWxlYWQgdG8gYnJpdHRsZSB0
ZXN0cy4gRm9yIGV4YW1wbGUsIHdlIG1heSBjYXJlIGFib3V0IGBBYCBvY2N1cnJpbmcKLWJlZm9y
ZSBib3RoIGBCYCBhbmQgYENgLCBidXQgYXJlbid0IGludGVyZXN0ZWQgaW4gdGhlIHJlbGF0aXZl
IG9yZGVyCi1vZiBgQmAgYW5kIGBDYC4gSW4gdGhpcyBjYXNlLCB0aGUgdGVzdCBzaG91bGQgcmVm
bGVjdCBvdXIgcmVhbCBpbnRlbnQsCi1pbnN0ZWFkIG9mIGJlaW5nIG92ZXJseSBjb25zdHJhaW5p
bmcuCi0KLUdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gaW1wb3NlIGFuIGFyYml0cmFyeSBEQUcg
KGRpcmVjdGVkIGFjeWNsaWMKLWdyYXBoKSBvbiB0aGUgY2FsbHMuIE9uZSB3YXkgdG8gZXhwcmVz
cyB0aGUgREFHIGlzIHRvIHVzZSB0aGUKLVtBZnRlcl0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZW1vY2svd2lraS9WMV83X0NoZWF0U2hlZXQjVGhlX0FmdGVyX0NsYXVzZSkgY2xhdXNl
IG9mIGBFWFBFQ1RfQ0FMTGAuCi0KLUFub3RoZXIgd2F5IGlzIHZpYSB0aGUgYEluU2VxdWVuY2Uo
KWAgY2xhdXNlIChub3QgdGhlIHNhbWUgYXMgdGhlCi1gSW5TZXF1ZW5jZWAgY2xhc3MpLCB3aGlj
aCB3ZSBib3Jyb3dlZCBmcm9tIGpNb2NrIDIuIEl0J3MgbGVzcwotZmxleGlibGUgdGhhbiBgQWZ0
ZXIoKWAsIGJ1dCBtb3JlIGNvbnZlbmllbnQgd2hlbiB5b3UgaGF2ZSBsb25nIGNoYWlucwotb2Yg
c2VxdWVudGlhbCBjYWxscywgYXMgaXQgZG9lc24ndCByZXF1aXJlIHlvdSB0byBjb21lIHVwIHdp
dGgKLWRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIGV4cGVjdGF0aW9ucyBpbiB0aGUgY2hhaW5zLiAg
SGVyZSdzIGhvdyBpdAotd29ya3M6Ci0KLUlmIHdlIHZpZXcgYEVYUEVDVF9DQUxMKClgIHN0YXRl
bWVudHMgYXMgbm9kZXMgaW4gYSBncmFwaCwgYW5kIGFkZCBhbgotZWRnZSBmcm9tIG5vZGUgQSB0
byBub2RlIEIgd2hlcmV2ZXIgQSBtdXN0IG9jY3VyIGJlZm9yZSBCLCB3ZSBjYW4gZ2V0Ci1hIERB
Ry4gV2UgdXNlIHRoZSB0ZXJtICJzZXF1ZW5jZSIgdG8gbWVhbiBhIGRpcmVjdGVkIHBhdGggaW4g
dGhpcwotREFHLiBOb3csIGlmIHdlIGRlY29tcG9zZSB0aGUgREFHIGludG8gc2VxdWVuY2VzLCB3
ZSBqdXN0IG5lZWQgdG8ga25vdwotd2hpY2ggc2VxdWVuY2VzIGVhY2ggYEVYUEVDVF9DQUxMKClg
IGJlbG9uZ3MgdG8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0bwotcmVjb25zdHJ1Y3QgdGhlIG9yZ2lu
YWwgREFHLgotCi1TbywgdG8gc3BlY2lmeSB0aGUgcGFydGlhbCBvcmRlciBvbiB0aGUgZXhwZWN0
YXRpb25zIHdlIG5lZWQgdG8gZG8gdHdvCi10aGluZ3M6IGZpcnN0IHRvIGRlZmluZSBzb21lIGBT
ZXF1ZW5jZWAgb2JqZWN0cywgYW5kIHRoZW4gZm9yIGVhY2gKLWBFWFBFQ1RfQ0FMTCgpYCBzYXkg
d2hpY2ggYFNlcXVlbmNlYCBvYmplY3RzIGl0IGlzIHBhcnQKLW9mLiBFeHBlY3RhdGlvbnMgaW4g
dGhlIHNhbWUgc2VxdWVuY2UgbXVzdCBvY2N1ciBpbiB0aGUgb3JkZXIgdGhleSBhcmUKLXdyaXR0
ZW4uIEZvciBleGFtcGxlLAotCi1gYGAKLSAgdXNpbmcgOjp0ZXN0aW5nOjpTZXF1ZW5jZTsKLQot
ICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgRVhQRUNUX0NBTEwoZm9vLCBBKCkpCi0gICAgICAuSW5T
ZXF1ZW5jZShzMSwgczIpOwotICBFWFBFQ1RfQ0FMTChiYXIsIEIoKSkKLSAgICAgIC5JblNlcXVl
bmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoYmFyLCBDKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMik7
Ci0gIEVYUEVDVF9DQUxMKGZvbywgRCgpKQotICAgICAgLkluU2VxdWVuY2UoczIpOwotYGBgCi0K
LXNwZWNpZmllcyB0aGUgZm9sbG93aW5nIERBRyAod2hlcmUgYHMxYCBpcyBgQSAtPiBCYCwgYW5k
IGBzMmAgaXMgYEEgLT4KLUMgLT4gRGApOgotCi1gYGAKLSAgICAgICArLS0tPiBCCi0gICAgICAg
fAotICBBIC0tLXwKLSAgICAgICB8Ci0gICAgICAgKy0tLT4gQyAtLS0+IEQKLWBgYAotCi1UaGlz
IG1lYW5zIHRoYXQgQSBtdXN0IG9jY3VyIGJlZm9yZSBCIGFuZCBDLCBhbmQgQyBtdXN0IG9jY3Vy
IGJlZm9yZQotRC4gVGhlcmUncyBubyByZXN0cmljdGlvbiBhYm91dCB0aGUgb3JkZXIgb3RoZXIg
dGhhbiB0aGVzZS4KLQotIyMgQ29udHJvbGxpbmcgV2hlbiBhbiBFeHBlY3RhdGlvbiBSZXRpcmVz
ICMjCi0KLVdoZW4gYSBtb2NrIG1ldGhvZCBpcyBjYWxsZWQsIEdvb2dsZSBNb2NrIG9ubHkgY29u
c2lkZXIgZXhwZWN0YXRpb25zCi10aGF0IGFyZSBzdGlsbCBhY3RpdmUuIEFuIGV4cGVjdGF0aW9u
IGlzIGFjdGl2ZSB3aGVuIGNyZWF0ZWQsIGFuZAotYmVjb21lcyBpbmFjdGl2ZSAoYWthIF9yZXRp
cmVzXykgd2hlbiBhIGNhbGwgdGhhdCBoYXMgdG8gb2NjdXIgbGF0ZXIKLWhhcyBvY2N1cnJlZC4g
Rm9yIGV4YW1wbGUsIGluCi0KLWBgYAotICB1c2luZyA6OnRlc3Rpbmc6Ol87Ci0gIHVzaW5nIDo6
dGVzdGluZzo6U2VxdWVuY2U7Ci0KLSAgU2VxdWVuY2UgczEsIHMyOwotCi0gIEVYUEVDVF9DQUxM
KGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSkgICAgIC8vICMxCi0gICAg
ICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICBFWFBF
Q1RfQ0FMTChsb2csIExvZyhXQVJOSU5HLCBfLCAiRGF0YSBzZXQgaXMgZW1wdHkuIikpICAvLyAj
MgotICAgICAgLkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1RfQ0FMTChsb2csIExvZyhXQVJOSU5H
LCBfLCAiVXNlciBub3QgZm91bmQuIikpICAgICAvLyAjMwotICAgICAgLkluU2VxdWVuY2UoczIp
OwotYGBgCi0KLWFzIHNvb24gYXMgZWl0aGVyICMyIG9yICMzIGlzIG1hdGNoZWQsICMxIHdpbGwg
cmV0aXJlLiBJZiBhIHdhcm5pbmcKLWAiRmlsZSB0b28gbGFyZ2UuImAgaXMgbG9nZ2VkIGFmdGVy
IHRoaXMsIGl0IHdpbGwgYmUgYW4gZXJyb3IuCi0KLU5vdGUgdGhhdCBhbiBleHBlY3RhdGlvbiBk
b2Vzbid0IHJldGlyZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQncwotc2F0dXJhdGVkLiBGb3IgZXhh
bXBsZSwKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgRVhQRUNUX0NBTEwobG9n
LCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAgIC8vICMxCi0gIEVYUEVDVF9D
QUxMKGxvZywgTG9nKFdBUk5JTkcsIF8sICJGaWxlIHRvbyBsYXJnZS4iKSk7ICAvLyAjMgotYGBg
Ci0KLXNheXMgdGhhdCB0aGVyZSB3aWxsIGJlIGV4YWN0bHkgb25lIHdhcm5pbmcgd2l0aCB0aGUg
bWVzc2FnZSBgIkZpbGUKLXRvbyBsYXJnZS4iYC4gSWYgdGhlIHNlY29uZCB3YXJuaW5nIGNvbnRh
aW5zIHRoaXMgbWVzc2FnZSB0b28sICMyIHdpbGwKLW1hdGNoIGFnYWluIGFuZCByZXN1bHQgaW4g
YW4gdXBwZXItYm91bmQtdmlvbGF0ZWQgZXJyb3IuCi0KLUlmIHRoaXMgaXMgbm90IHdoYXQgeW91
IHdhbnQsIHlvdSBjYW4gYXNrIGFuIGV4cGVjdGF0aW9uIHRvIHJldGlyZSBhcwotc29vbiBhcyBp
dCBiZWNvbWVzIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAg
RVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgXykpOyAgICAgICAgICAgICAgICAgLy8g
IzEKLSAgRVhQRUNUX0NBTEwobG9nLCBMb2coV0FSTklORywgXywgIkZpbGUgdG9vIGxhcmdlLiIp
KSAgLy8gIzIKLSAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1gYGAKLQotSGVyZSAjMiBj
YW4gYmUgdXNlZCBvbmx5IG9uY2UsIHNvIGlmIHlvdSBoYXZlIHR3byB3YXJuaW5ncyB3aXRoIHRo
ZQotbWVzc2FnZSBgIkZpbGUgdG9vIGxhcmdlLiJgLCB0aGUgZmlyc3Qgd2lsbCBtYXRjaCAjMiBh
bmQgdGhlIHNlY29uZAotd2lsbCBtYXRjaCAjMSAtIHRoZXJlIHdpbGwgYmUgbm8gZXJyb3IuCi0K
LSMgVXNpbmcgQWN0aW9ucyAjCi0KLSMjIFJldHVybmluZyBSZWZlcmVuY2VzIGZyb20gTW9jayBN
ZXRob2RzICMjCi0KLUlmIGEgbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlzIGEgcmVmZXJl
bmNlLCB5b3UgbmVlZCB0byB1c2UKLWBSZXR1cm5SZWYoKWAgaW5zdGVhZCBvZiBgUmV0dXJuKClg
IHRvIHJldHVybiBhIHJlc3VsdDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVyblJlZjsK
LQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0Qw
KEdldEJhciwgQmFyJigpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgQmFyIGJhcjsK
LSAgRVhQRUNUX0NBTEwoZm9vLCBHZXRCYXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYo
YmFyKSk7Ci1gYGAKLQotIyMgUmV0dXJuaW5nIExpdmUgVmFsdWVzIGZyb20gTW9jayBNZXRob2Rz
ICMjCi0KLVRoZSBgUmV0dXJuKHgpYCBhY3Rpb24gc2F2ZXMgYSBjb3B5IG9mIGB4YCB3aGVuIHRo
ZSBhY3Rpb24gaXMKLV9jcmVhdGVkXywgYW5kIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHZhbHVl
IHdoZW5ldmVyIGl0J3MKLWV4ZWN1dGVkLiBTb21ldGltZXMgeW91IG1heSB3YW50IHRvIGluc3Rl
YWQgcmV0dXJuIHRoZSBfbGl2ZV8gdmFsdWUgb2YKLWB4YCAoaS5lLiBpdHMgdmFsdWUgYXQgdGhl
IHRpbWUgd2hlbiB0aGUgYWN0aW9uIGlzIF9leGVjdXRlZF8uKS4KLQotSWYgdGhlIG1vY2sgZnVu
Y3Rpb24ncyByZXR1cm4gdHlwZSBpcyBhIHJlZmVyZW5jZSwgeW91IGNhbiBkbyBpdCB1c2luZwot
YFJldHVyblJlZih4KWAsIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyByZWNpcGUgKCJSZXR1cm5p
bmcgUmVmZXJlbmNlcwotZnJvbSBNb2NrIE1ldGhvZHMiKS4gSG93ZXZlciwgR29vZ2xlIE1vY2sg
ZG9lc24ndCBsZXQgeW91IHVzZQotYFJldHVyblJlZigpYCBpbiBhIG1vY2sgZnVuY3Rpb24gd2hv
c2UgcmV0dXJuIHR5cGUgaXMgbm90IGEgcmVmZXJlbmNlLAotYXMgZG9pbmcgdGhhdCB1c3VhbGx5
IGluZGljYXRlcyBhIHVzZXIgZXJyb3IuIFNvLCB3aGF0IHNoYWxsIHlvdSBkbz8KLQotWW91IG1h
eSBiZSB0ZW1wdGVkIHRvIHRyeSBgQnlSZWYoKWA6Ci0KLWBgYAotdXNpbmcgdGVzdGluZzo6QnlS
ZWY7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9v
IHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMChHZXRWYWx1ZSwgaW50KCkpOwotfTsKLS4uLgot
ICBpbnQgeCA9IDA7Ci0gIE1vY2tGb28gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIEdldFZhbHVl
KCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKEJ5UmVmKHgpKSk7Ci0gIHggPSA0MjsK
LSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7Ci1gYGAKLQotVW5mb3J0dW5hdGVseSwg
aXQgZG9lc24ndCB3b3JrIGhlcmUuIFRoZSBhYm92ZSBjb2RlIHdpbGwgZmFpbCB3aXRoIGVycm9y
OgotCi1gYGAKLVZhbHVlIG9mOiBmb28uR2V0VmFsdWUoKQotICBBY3R1YWw6IDAKLUV4cGVjdGVk
OiA0MgotYGBgCi0KLVRoZSByZWFzb24gaXMgdGhhdCBgUmV0dXJuKHZhbHVlKWAgY29udmVydHMg
YHZhbHVlYCB0byB0aGUgYWN0dWFsCi1yZXR1cm4gdHlwZSBvZiB0aGUgbW9jayBmdW5jdGlvbiBh
dCB0aGUgdGltZSB3aGVuIHRoZSBhY3Rpb24gaXMKLV9jcmVhdGVkXywgbm90IHdoZW4gaXQgaXMg
X2V4ZWN1dGVkXy4gKFRoaXMgYmVoYXZpb3Igd2FzIGNob3NlbiBmb3IKLXRoZSBhY3Rpb24gdG8g
YmUgc2FmZSB3aGVuIGB2YWx1ZWAgaXMgYSBwcm94eSBvYmplY3QgdGhhdCByZWZlcmVuY2VzCi1z
b21lIHRlbXBvcmFyeSBvYmplY3RzLikgQXMgYSByZXN1bHQsIGBCeVJlZih4KWAgaXMgY29udmVy
dGVkIHRvIGFuCi1gaW50YCB2YWx1ZSAoaW5zdGVhZCBvZiBhIGBjb25zdCBpbnQmYCkgd2hlbiB0
aGUgZXhwZWN0YXRpb24gaXMgc2V0LAotYW5kIGBSZXR1cm4oQnlSZWYoeCkpYCB3aWxsIGFsd2F5
cyByZXR1cm4gMC4KLQotYFJldHVyblBvaW50ZWUocG9pbnRlcilgIHdhcyBwcm92aWRlZCB0byBz
b2x2ZSB0aGlzIHByb2JsZW0KLXNwZWNpZmljYWxseS4gSXQgcmV0dXJucyB0aGUgdmFsdWUgcG9p
bnRlZCB0byBieSBgcG9pbnRlcmAgYXQgdGhlIHRpbWUKLXRoZSBhY3Rpb24gaXMgX2V4ZWN1dGVk
XzoKLQotYGBgCi11c2luZyB0ZXN0aW5nOjpSZXR1cm5Qb2ludGVlOwotLi4uCi0gIGludCB4ID0g
MDsKLSAgTW9ja0ZvbyBmb287Ci0gIEVYUEVDVF9DQUxMKGZvbywgR2V0VmFsdWUoKSkKLSAgICAg
IC5XaWxsUmVwZWF0ZWRseShSZXR1cm5Qb2ludGVlKCZ4KSk7ICAvLyBOb3RlIHRoZSAmIGhlcmUu
Ci0gIHggPSA0MjsKLSAgRVhQRUNUX0VRKDQyLCBmb28uR2V0VmFsdWUoKSk7ICAvLyBUaGlzIHdp
bGwgc3VjY2VlZCBub3cuCi1gYGAKLQotIyMgQ29tYmluaW5nIEFjdGlvbnMgIyMKLQotV2FudCB0
byBkbyBtb3JlIHRoYW4gb25lIHRoaW5nIHdoZW4gYSBmdW5jdGlvbiBpcyBjYWxsZWQ/IFRoYXQn
cwotZmluZS4gYERvQWxsKClgIGFsbG93IHlvdSB0byBkbyBzZXF1ZW5jZSBvZiBhY3Rpb25zIGV2
ZXJ5IHRpbWUuIE9ubHkKLXRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGxhc3QgYWN0aW9uIGluIHRo
ZSBzZXF1ZW5jZSB3aWxsIGJlIHVzZWQuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpEb0FsbDsK
LQotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0Qx
KEJhciwgYm9vbChpbnQgbikpOwotfTsKLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKF8p
KQotICAgICAgLldpbGxPbmNlKERvQWxsKGFjdGlvbl8xLAotICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbl8yLAotICAgICAgICAgICAgICAgICAgICAgIC4uLgotICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbl9uKSk7Ci1gYGAKLQotIyMgTW9ja2luZyBTaWRlIEVmZmVjdHMgIyMKLQotU29t
ZXRpbWVzIGEgbWV0aG9kIGV4aGliaXRzIGl0cyBlZmZlY3Qgbm90IHZpYSByZXR1cm5pbmcgYSB2
YWx1ZSBidXQKLXZpYSBzaWRlIGVmZmVjdHMuIEZvciBleGFtcGxlLCBpdCBtYXkgY2hhbmdlIHNv
bWUgZ2xvYmFsIHN0YXRlIG9yCi1tb2RpZnkgYW4gb3V0cHV0IGFyZ3VtZW50LiBUbyBtb2NrIHNp
ZGUgZWZmZWN0cywgaW4gZ2VuZXJhbCB5b3UgY2FuCi1kZWZpbmUgeW91ciBvd24gYWN0aW9uIGJ5
IGltcGxlbWVudGluZyBgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2VgLgotCi1JZiBhbGwgeW91
IG5lZWQgdG8gZG8gaXMgdG8gY2hhbmdlIGFuIG91dHB1dCBhcmd1bWVudCwgdGhlIGJ1aWx0LWlu
Ci1gU2V0QXJnUG9pbnRlZSgpYCBhY3Rpb24gaXMgY29udmVuaWVudDoKLQotYGBgCi11c2luZyA6
OnRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci0KLWNsYXNzIE1vY2tNdXRhdG9yIDogcHVibGljIE11
dGF0b3IgewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QyKE11dGF0ZSwgdm9pZChib29sIG11dGF0
ZSwgaW50KiB2YWx1ZSkpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2NrTXV0YXRvciBtdXRhdG9y
OwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUodHJ1ZSwgXykpCi0gICAgICAuV2lsbE9u
Y2UoU2V0QXJnUG9pbnRlZTwxPig1KSk7Ci1gYGAKLQotSW4gdGhpcyBleGFtcGxlLCB3aGVuIGBt
dXRhdG9yLk11dGF0ZSgpYCBpcyBjYWxsZWQsIHdlIHdpbGwgYXNzaWduIDUKLXRvIHRoZSBgaW50
YCB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50ICMxCi0oMC1iYXNlZCkuCi0KLWBTZXRB
cmdQb2ludGVlKClgIGNvbnZlbmllbnRseSBtYWtlcyBhbiBpbnRlcm5hbCBjb3B5IG9mIHRoZQot
dmFsdWUgeW91IHBhc3MgdG8gaXQsIHJlbW92aW5nIHRoZSBuZWVkIHRvIGtlZXAgdGhlIHZhbHVl
IGluIHNjb3BlIGFuZAotYWxpdmUuIFRoZSBpbXBsaWNhdGlvbiBob3dldmVyIGlzIHRoYXQgdGhl
IHZhbHVlIG11c3QgaGF2ZSBhIGNvcHkKLWNvbnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJh
dG9yLgotCi1JZiB0aGUgbW9jayBtZXRob2QgYWxzbyBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZSBh
cyB3ZWxsLCB5b3UgY2FuIGNoYWluCi1gU2V0QXJnUG9pbnRlZSgpYCB3aXRoIGBSZXR1cm4oKWAg
dXNpbmcgYERvQWxsKClgOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVz
dGluZzo6UmV0dXJuOwotdXNpbmcgOjp0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOwotCi1jbGFzcyBN
b2NrTXV0YXRvciA6IHB1YmxpYyBNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01F
VEhPRDEoTXV0YXRlSW50LCBib29sKGludCogdmFsdWUpKTsKLX07Ci0uLi4KLQotICBNb2NrTXV0
YXRvciBtdXRhdG9yOwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGVJbnQoXykpCi0gICAg
ICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9pbnRlZTwwPig1KSwKLSAgICAgICAgICAgICAgICAg
ICAgICBSZXR1cm4odHJ1ZSkpKTsKLWBgYAotCi1JZiB0aGUgb3V0cHV0IGFyZ3VtZW50IGlzIGFu
IGFycmF5LCB1c2UgdGhlCi1gU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdClgIGFjdGlv
biBpbnN0ZWFkLiBJdCBjb3BpZXMgdGhlCi1lbGVtZW50cyBpbiBzb3VyY2UgcmFuZ2UgYFtmaXJz
dCwgbGFzdClgIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5Ci10aGUgYE5gLXRoICgwLWJhc2Vk
KSBhcmd1bWVudDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ok5vdE51bGw7Ci11c2luZyA6OnRl
c3Rpbmc6OlNldEFycmF5QXJndW1lbnQ7Ci0KLWNsYXNzIE1vY2tBcnJheU11dGF0b3IgOiBwdWJs
aWMgQXJyYXlNdXRhdG9yIHsKLSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMihNdXRhdGUsIHZvaWQo
aW50KiB2YWx1ZXMsIGludCBudW1fdmFsdWVzKSk7Ci0gIC4uLgotfTsKLS4uLgotCi0gIE1vY2tB
cnJheU11dGF0b3IgbXV0YXRvcjsKLSAgaW50IHZhbHVlc1s1XSA9IHsgMSwgMiwgMywgNCwgNSB9
OwotICBFWFBFQ1RfQ0FMTChtdXRhdG9yLCBNdXRhdGUoTm90TnVsbCgpLCA1KSkKLSAgICAgIC5X
aWxsT25jZShTZXRBcnJheUFyZ3VtZW50PDA+KHZhbHVlcywgdmFsdWVzICsgNSkpOwotYGBgCi0K
LVRoaXMgYWxzbyB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBvdXRwdXQgaXRlcmF0b3I6
Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpTZUFycmF5QXJn
dW1lbnQ7Ci0KLWNsYXNzIE1vY2tSb2xvZGV4IDogcHVibGljIFJvbG9kZXggewotIHB1YmxpYzoK
LSAgTU9DS19NRVRIT0QxKEdldE5hbWVzLCB2b2lkKHN0ZDo6YmFja19pbnNlcnRfaXRlcmF0b3I8
dmVjdG9yPHN0cmluZz4gPikpOwotICAuLi4KLX07Ci0uLi4KLQotICBNb2NrUm9sb2RleCByb2xv
ZGV4OwotICB2ZWN0b3I8c3RyaW5nPiBuYW1lczsKLSAgbmFtZXMucHVzaF9iYWNrKCJHZW9yZ2Ui
KTsKLSAgbmFtZXMucHVzaF9iYWNrKCJKb2huIik7Ci0gIG5hbWVzLnB1c2hfYmFjaygiVGhvbWFz
Iik7Ci0gIEVYUEVDVF9DQUxMKHJvbG9kZXgsIEdldE5hbWVzKF8pKQotICAgICAgLldpbGxPbmNl
KFNldEFycmF5QXJndW1lbnQ8MD4obmFtZXMuYmVnaW4oKSwgbmFtZXMuZW5kKCkpKTsKLWBgYAot
Ci0jIyBDaGFuZ2luZyBhIE1vY2sgT2JqZWN0J3MgQmVoYXZpb3IgQmFzZWQgb24gdGhlIFN0YXRl
ICMjCi0KLUlmIHlvdSBleHBlY3QgYSBjYWxsIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgYSBt
b2NrIG9iamVjdCwgeW91IGNhbiB1c2UgYDo6dGVzdGluZzo6SW5TZXF1ZW5jZWAgdG8gc3BlY2lm
eSBkaWZmZXJlbnQgYmVoYXZpb3JzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGNhbGw6Ci0KLWBgYAot
dXNpbmcgOjp0ZXN0aW5nOjpJblNlcXVlbmNlOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0K
LS4uLgotICB7Ci0gICAgSW5TZXF1ZW5jZSBzZXE7Ci0gICAgRVhQRUNUX0NBTEwobXlfbW9jaywg
SXNEaXJ0eSgpKQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKHRydWUpKTsKLSAgICBF
WFBFQ1RfQ0FMTChteV9tb2NrLCBGbHVzaCgpKTsKLSAgICBFWFBFQ1RfQ0FMTChteV9tb2NrLCBJ
c0RpcnR5KCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oZmFsc2UpKTsKLSAgfQot
ICBteV9tb2NrLkZsdXNoSWZEaXJ0eSgpOwotYGBgCi0KLVRoaXMgbWFrZXMgYG15X21vY2suSXNE
aXJ0eSgpYCByZXR1cm4gYHRydWVgIGJlZm9yZSBgbXlfbW9jay5GbHVzaCgpYCBpcyBjYWxsZWQg
YW5kIHJldHVybiBgZmFsc2VgIGFmdGVyd2FyZHMuCi0KLUlmIHRoZSBiZWhhdmlvciBjaGFuZ2Ug
aXMgbW9yZSBjb21wbGV4LCB5b3UgY2FuIHN0b3JlIHRoZSBlZmZlY3RzIGluIGEgdmFyaWFibGUg
YW5kIG1ha2UgYSBtb2NrIG1ldGhvZCBnZXQgaXRzIHJldHVybiB2YWx1ZSBmcm9tIHRoYXQgdmFy
aWFibGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpTYXZl
QXJnOwotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47Ci0KLUFDVElPTl9QKFJldHVyblBvaW50ZWUs
IHApIHsgcmV0dXJuICpwOyB9Ci0uLi4KLSAgaW50IHByZXZpb3VzX3ZhbHVlID0gMDsKLSAgRVhQ
RUNUX0NBTEwobXlfbW9jaywgR2V0UHJldlZhbHVlKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHko
UmV0dXJuUG9pbnRlZSgmcHJldmlvdXNfdmFsdWUpKTsKLSAgRVhQRUNUX0NBTEwobXlfbW9jaywg
VXBkYXRlVmFsdWUoXykpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoU2F2ZUFyZzwwPigmcHJldmlv
dXNfdmFsdWUpKTsKLSAgbXlfbW9jay5Eb1NvbWV0aGluZ1RvVXBkYXRlVmFsdWUoKTsKLWBgYAot
Ci1IZXJlIGBteV9tb2NrLkdldFByZXZWYWx1ZSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGFy
Z3VtZW50IG9mIHRoZSBsYXN0IGBVcGRhdGVWYWx1ZSgpYCBjYWxsLgotCi0jIyBTZXR0aW5nIHRo
ZSBEZWZhdWx0IFZhbHVlIGZvciBhIFJldHVybiBUeXBlICMjCi0KLUlmIGEgbW9jayBtZXRob2Qn
cyByZXR1cm4gdHlwZSBpcyBhIGJ1aWx0LWluIEMrKyB0eXBlIG9yIHBvaW50ZXIsIGJ5Ci1kZWZh
dWx0IGl0IHdpbGwgcmV0dXJuIDAgd2hlbiBpbnZva2VkLiBZb3Ugb25seSBuZWVkIHRvIHNwZWNp
ZnkgYW4KLWFjdGlvbiBpZiB0aGlzIGRlZmF1bHQgdmFsdWUgZG9lc24ndCB3b3JrIGZvciB5b3Uu
Ci0KLVNvbWV0aW1lcywgeW91IG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGRlZmF1bHQgdmFsdWUs
IG9yIHlvdSBtYXkgd2FudAotdG8gc3BlY2lmeSBhIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGVzIEdv
b2dsZSBNb2NrIGRvZXNuJ3Qga25vdwotYWJvdXQuIFlvdSBjYW4gZG8gdGhpcyB1c2luZyB0aGUg
YDo6dGVzdGluZzo6RGVmYXVsdFZhbHVlYCBjbGFzcwotdGVtcGxhdGU6Ci0KLWBgYAotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QwKENhbGN1bGF0
ZUJhciwgQmFyKCkpOwotfTsKLS4uLgotCi0gIEJhciBkZWZhdWx0X2JhcjsKLSAgLy8gU2V0cyB0
aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgZm9yIHR5cGUgQmFyLgotICBEZWZhdWx0VmFsdWU8QmFy
Pjo6U2V0KGRlZmF1bHRfYmFyKTsKLQotICBNb2NrRm9vIGZvbzsKLQotICAvLyBXZSBkb24ndCBu
ZWVkIHRvIHNwZWNpZnkgYW4gYWN0aW9uIGhlcmUsIGFzIHRoZSBkZWZhdWx0Ci0gIC8vIHJldHVy
biB2YWx1ZSB3b3JrcyBmb3IgdXMuCi0gIEVYUEVDVF9DQUxMKGZvbywgQ2FsY3VsYXRlQmFyKCkp
OwotCi0gIGZvby5DYWxjdWxhdGVCYXIoKTsgIC8vIFRoaXMgc2hvdWxkIHJldHVybiBkZWZhdWx0
X2Jhci4KLQotICAvLyBVbnNldHMgdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlLgotICBEZWZhdWx0
VmFsdWU8QmFyPjo6Q2xlYXIoKTsKLWBgYAotCi1QbGVhc2Ugbm90ZSB0aGF0IGNoYW5naW5nIHRo
ZSBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgY2FuIG1ha2UgeW91Ci10ZXN0cyBoYXJkIHRvIHVu
ZGVyc3RhbmQuIFdlIHJlY29tbWVuZCB5b3UgdG8gdXNlIHRoaXMgZmVhdHVyZQotanVkaWNpb3Vz
bHkuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBgU2V0KClgIGFu
ZAotYENsZWFyKClgIGNhbGxzIGFyZSByaWdodCBuZXh0IHRvIHRoZSBjb2RlIHRoYXQgdXNlcyB5
b3VyIG1vY2suCi0KLSMjIFNldHRpbmcgdGhlIERlZmF1bHQgQWN0aW9ucyBmb3IgYSBNb2NrIE1l
dGhvZCAjIwotCi1Zb3UndmUgbGVhcm5lZCBob3cgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVl
IG9mIGEgZ2l2ZW4KLXR5cGUuIEhvd2V2ZXIsIHRoaXMgbWF5IGJlIHRvbyBjb2Fyc2UgZm9yIHlv
dXIgcHVycG9zZTogcGVyaGFwcyB5b3UKLWhhdmUgdHdvIG1vY2sgbWV0aG9kcyB3aXRoIHRoZSBz
YW1lIHJldHVybiB0eXBlIGFuZCB5b3Ugd2FudCB0aGVtIHRvCi1oYXZlIGRpZmZlcmVudCBiZWhh
dmlvcnMuIFRoZSBgT05fQ0FMTCgpYCBtYWNybyBhbGxvd3MgeW91IHRvCi1jdXN0b21pemUgeW91
ciBtb2NrJ3MgYmVoYXZpb3IgYXQgdGhlIG1ldGhvZCBsZXZlbDoKLQotYGBgCi11c2luZyA6OnRl
c3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6OkFueU51bWJlcjsKLXVzaW5nIDo6dGVzdGluZzo6
R3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotICBPTl9DQUxMKGZvbywgU2lnbihf
KSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigtMSkpOwotICBPTl9DQUxMKGZvbywgU2ln
bigwKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigwKSk7Ci0gIE9OX0NBTEwoZm9vLCBT
aWduKEd0KDApKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0KLSAgRVhQRUNU
X0NBTEwoZm9vLCBTaWduKF8pKQotICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsKLQotICBmb28u
U2lnbig1KTsgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gMS4KLSAgZm9vLlNpZ24oLTkpOyAgLy8g
VGhpcyBzaG91bGQgcmV0dXJuIC0xLgotICBmb28uU2lnbigwKTsgICAvLyBUaGlzIHNob3VsZCBy
ZXR1cm4gMC4KLWBgYAotCi1BcyB5b3UgbWF5IGhhdmUgZ3Vlc3NlZCwgd2hlbiB0aGVyZSBhcmUg
bW9yZSB0aGFuIG9uZSBgT05fQ0FMTCgpYAotc3RhdGVtZW50cywgdGhlIG5ld3Mgb3JkZXIgdGFr
ZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9sZGVyIG9uZXMuIEluCi1vdGhlciB3b3JkcywgdGhlICoq
bGFzdCoqIG9uZSB0aGF0IG1hdGNoZXMgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyB3aWxsCi1iZSB1
c2VkLiBUaGlzIG1hdGNoaW5nIG9yZGVyIGFsbG93cyB5b3UgdG8gc2V0IHVwIHRoZSBjb21tb24g
YmVoYXZpb3IKLWluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3RvciBvciB0aGUgdGVzdCBmaXh0
dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZAotc3BlY2lhbGl6ZSB0aGUgbW9jaydzIGJlaGF2aW9yIGxh
dGVyLgotCi0jIyBVc2luZyBGdW5jdGlvbnMvTWV0aG9kcy9GdW5jdG9ycyBhcyBBY3Rpb25zICMj
Ci0KLUlmIHRoZSBidWlsdC1pbiBhY3Rpb25zIGRvbid0IHN1aXQgeW91LCB5b3UgY2FuIGVhc2ls
eSB1c2UgYW4gZXhpc3RpbmcKLWZ1bmN0aW9uLCBtZXRob2QsIG9yIGZ1bmN0b3IgYXMgYW4gYWN0
aW9uOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tl
OwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNT0NLX01FVEhP
RDIoU3VtLCBpbnQoaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9iLCBi
b29sKGludCB4KSk7Ci19OwotCi1pbnQgQ2FsY3VsYXRlU3VtKGludCB4LCBpbnQgeSkgeyByZXR1
cm4geCArIHk7IH0KLQotY2xhc3MgSGVscGVyIHsKLSBwdWJsaWM6Ci0gIGJvb2wgQ29tcGxleEpv
YihpbnQgeCk7Ci19OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEhlbHBlciBoZWxwZXI7Ci0g
IEVYUEVDVF9DQUxMKGZvbywgU3VtKF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShDYWxj
dWxhdGVTdW0pKTsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDb21wbGV4Sm9iKF8pKQotICAgICAgLldp
bGxPbmNlKEludm9rZSgmaGVscGVyLCAmSGVscGVyOjpDb21wbGV4Sm9iKSk7Ci0KLSAgZm9vLlN1
bSg1LCA2KTsgICAgICAgLy8gSW52b2tlcyBDYWxjdWxhdGVTdW0oNSwgNikuCi0gIGZvby5Db21w
bGV4Sm9iKDEwKTsgIC8vIEludm9rZXMgaGVscGVyLkNvbXBsZXhKb2IoMTApOwotYGBgCi0KLVRo
ZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLCBldGMg
bXVzdCBiZQotX2NvbXBhdGlibGVfIHdpdGggdGhlIHNpZ25hdHVyZSBvZiB0aGUgbW9jayBmdW5j
dGlvbiwgbWVhbmluZyB0aGF0IHRoZQotbGF0dGVyJ3MgYXJndW1lbnRzIGNhbiBiZSBpbXBsaWNp
dGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZwotYXJndW1lbnRzIG9mIHRoZSBmb3Jt
ZXIsIGFuZCB0aGUgZm9ybWVyJ3MgcmV0dXJuIHR5cGUgY2FuIGJlCi1pbXBsaWNpdGx5IGNvbnZl
cnRlZCB0byB0aGF0IG9mIHRoZSBsYXR0ZXIuIFNvLCB5b3UgY2FuIGludm9rZQotc29tZXRoaW5n
IHdob3NlIHR5cGUgaXMgX25vdF8gZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgbW9jayBmdW5jdGlv
biwKLWFzIGxvbmcgYXMgaXQncyBzYWZlIHRvIGRvIHNvIC0gbmljZSwgaHVoPwotCi0jIyBJbnZv
a2luZyBhIEZ1bmN0aW9uL01ldGhvZC9GdW5jdG9yIFdpdGhvdXQgQXJndW1lbnRzICMjCi0KLWBJ
bnZva2UoKWAgaXMgdmVyeSB1c2VmdWwgZm9yIGRvaW5nIGFjdGlvbnMgdGhhdCBhcmUgbW9yZSBj
b21wbGV4LiBJdAotcGFzc2VzIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnRzIHRvIHRoZSBm
dW5jdGlvbiBvciBmdW5jdG9yIGJlaW5nCi1pbnZva2VkIHN1Y2ggdGhhdCB0aGUgY2FsbGVlIGhh
cyB0aGUgZnVsbCBjb250ZXh0IG9mIHRoZSBjYWxsIHRvIHdvcmsKLXdpdGguIElmIHRoZSBpbnZv
a2VkIGZ1bmN0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHNvbWUgb3IgYWxsIG9mIHRoZQotYXJn
dW1lbnRzLCBpdCBjYW4gc2ltcGx5IGlnbm9yZSB0aGVtLgotCi1ZZXQsIGEgY29tbW9uIHBhdHRl
cm4gaXMgdGhhdCBhIHRlc3QgYXV0aG9yIHdhbnRzIHRvIGludm9rZSBhIGZ1bmN0aW9uCi13aXRo
b3V0IHRoZSBhcmd1bWVudHMgb2YgdGhlIG1vY2sgZnVuY3Rpb24uIGBJbnZva2UoKWAgYWxsb3dz
IGhlciB0bwotZG8gdGhhdCB1c2luZyBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCB0aHJvd3MgYXdh
eSB0aGUgYXJndW1lbnRzIGJlZm9yZQotaW52b2tpbmcgYW4gdW5kZXJsaW5pbmcgbnVsbGFyeSBm
dW5jdGlvbi4gTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNhbiBiZQotdGVkaW91cyBhbmQgb2JzY3Vy
ZXMgdGhlIGludGVudCBvZiB0aGUgdGVzdC4KLQotYEludm9rZVdpdGhvdXRBcmdzKClgIHNvbHZl
cyB0aGlzIHByb2JsZW0uIEl0J3MgbGlrZSBgSW52b2tlKClgIGV4Y2VwdAotdGhhdCBpdCBkb2Vz
bid0IHBhc3MgdGhlIG1vY2sgZnVuY3Rpb24ncyBhcmd1bWVudHMgdG8gdGhlCi1jYWxsZWUuIEhl
cmUncyBhbiBleGFtcGxlOgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsKLXVzaW5nIDo6dGVz
dGluZzo6SW52b2tlV2l0aG91dEFyZ3M7Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsK
LSBwdWJsaWM6Ci0gIE1PQ0tfTUVUSE9EMShDb21wbGV4Sm9iLCBib29sKGludCBuKSk7Ci19Owot
Ci1ib29sIEpvYjEoKSB7IC4uLiB9Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NB
TEwoZm9vLCBDb21wbGV4Sm9iKF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZVdpdGhvdXRBcmdz
KEpvYjEpKTsKLQotICBmb28uQ29tcGxleEpvYigxMCk7ICAvLyBJbnZva2VzIEpvYjEoKS4KLWBg
YAotCi0jIyBJbnZva2luZyBhbiBBcmd1bWVudCBvZiB0aGUgTW9jayBGdW5jdGlvbiAjIwotCi1T
b21ldGltZXMgYSBtb2NrIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZSBhIGZ1bmN0aW9uIHBvaW50ZXIg
b3IgYSBmdW5jdG9yCi0oaW4gb3RoZXIgd29yZHMsIGEgImNhbGxhYmxlIikgYXMgYW4gYXJndW1l
bnQsIGUuZy4KLQotYGBgCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgot
ICBNT0NLX01FVEhPRDIoRG9UaGlzLCBib29sKGludCBuLCBib29sICgqZnApKGludCkpKTsKLX07
Ci1gYGAKLQotYW5kIHlvdSBtYXkgd2FudCB0byBpbnZva2UgdGhpcyBjYWxsYWJsZSBhcmd1bWVu
dDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4KLSAgTW9ja0ZvbyBmb287Ci0gIEVY
UEVDVF9DQUxMKGZvbywgRG9UaGlzKF8sIF8pKQotICAgICAgLldpbGxPbmNlKC4uLik7Ci0gIC8v
IFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhlCi0gIC8vIHNlY29uZCBhcmd1
bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAotCi1BcmdoaCwgeW91IG5lZWQgdG8gcmVmZXIg
dG8gYSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50IGJ1dCBDKysgaGFzIG5vCi1sYW1iZGEgKHlldCks
IHNvIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93biBhY3Rpb24uIDotKCBPciBkbyB5b3UKLXJl
YWxseT8KLQotV2VsbCwgR29vZ2xlIE1vY2sgaGFzIGFuIGFjdGlvbiB0byBzb2x2ZSBfZXhhY3Rs
eV8gdGhpcyBwcm9ibGVtOgotCi1gYGAKLSAgSW52b2tlQXJndW1lbnQ8Tj4oYXJnXzEsIGFyZ18y
LCAuLi4sIGFyZ19tKQotYGBgCi0KLXdpbGwgaW52b2tlIHRoZSBgTmAtdGggKDAtYmFzZWQpIGFy
Z3VtZW50IHRoZSBtb2NrIGZ1bmN0aW9uIHJlY2VpdmVzLAotd2l0aCBgYXJnXzFgLCBgYXJnXzJg
LCAuLi4sIGFuZCBgYXJnX21gLiBObyBtYXR0ZXIgaWYgdGhlIGFyZ3VtZW50IGlzCi1hIGZ1bmN0
aW9uIHBvaW50ZXIgb3IgYSBmdW5jdG9yLCBHb29nbGUgTW9jayBoYW5kbGVzIHRoZW0gYm90aC4K
LQotV2l0aCB0aGF0LCB5b3UgY291bGQgd3JpdGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpf
OwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLS4uLgotICBFWFBFQ1RfQ0FMTChm
b28sIERvVGhpcyhfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwxPig1KSk7
Ci0gIC8vIFdpbGwgZXhlY3V0ZSAoKmZwKSg1KSwgd2hlcmUgZnAgaXMgdGhlCi0gIC8vIHNlY29u
ZCBhcmd1bWVudCBEb1RoaXMoKSByZWNlaXZlcy4KLWBgYAotCi1XaGF0IGlmIHRoZSBjYWxsYWJs
ZSB0YWtlcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2U/IE5vIHByb2JsZW0gLSBqdXN0Ci13cmFw
IGl0IGluc2lkZSBgQnlSZWYoKWA6Ci0KLWBgYAotLi4uCi0gIE1PQ0tfTUVUSE9EMShCYXIsIGJv
b2woYm9vbCAoKmZwKShpbnQsIGNvbnN0IEhlbHBlciYpKSk7Ci0uLi4KLXVzaW5nIDo6dGVzdGlu
Zzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6QnlSZWY7Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZUFy
Z3VtZW50OwotLi4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIEhlbHBlciBoZWxwZXI7Ci0gIC4uLgot
ICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVu
dDwwPig1LCBCeVJlZihoZWxwZXIpKSk7Ci0gIC8vIEJ5UmVmKGhlbHBlcikgZ3VhcmFudGVlcyB0
aGF0IGEgcmVmZXJlbmNlIHRvIGhlbHBlciwgbm90IGEgY29weSBvZiBpdCwKLSAgLy8gd2lsbCBi
ZSBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlLgotYGBgCi0KLVdoYXQgaWYgdGhlIGNhbGxhYmxlIHRh
a2VzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSBhbmQgd2UgZG8gKipub3QqKgotd3JhcCB0aGUg
YXJndW1lbnQgaW4gYEJ5UmVmKClgPyBUaGVuIGBJbnZva2VBcmd1bWVudCgpYCB3aWxsIF9tYWtl
IGEKLWNvcHlfIG9mIHRoZSBhcmd1bWVudCwgYW5kIHBhc3MgYSBfcmVmZXJlbmNlIHRvIHRoZSBj
b3B5XywgaW5zdGVhZCBvZgotYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIHZhbHVlLCB0byB0
aGUgY2FsbGFibGUuIFRoaXMgaXMgZXNwZWNpYWxseQotaGFuZHkgd2hlbiB0aGUgYXJndW1lbnQg
aXMgYSB0ZW1wb3JhcnkgdmFsdWU6Ci0KLWBgYAotLi4uCi0gIE1PQ0tfTUVUSE9EMShEb1RoYXQs
IGJvb2woYm9vbCAoKmYpKGNvbnN0IGRvdWJsZSYgeCwgY29uc3Qgc3RyaW5nJiBzKSkpOwotLi4u
Ci11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZUFyZ3VtZW50Owot
Li4uCi0KLSAgTW9ja0ZvbyBmb287Ci0gIC4uLgotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhhdChf
KSkKLSAgICAgIC5XaWxsT25jZShJbnZva2VBcmd1bWVudDwwPig1LjAsIHN0cmluZygiSGkiKSkp
OwotICAvLyBXaWxsIGV4ZWN1dGUgKCpmKSg1LjAsIHN0cmluZygiSGkiKSksIHdoZXJlIGYgaXMg
dGhlIGZ1bmN0aW9uIHBvaW50ZXIKLSAgLy8gRG9UaGF0KCkgcmVjZWl2ZXMuICBOb3RlIHRoYXQg
dGhlIHZhbHVlcyA1LjAgYW5kIHN0cmluZygiSGkiKSBhcmUKLSAgLy8gdGVtcG9yYXJ5IGFuZCBk
ZWFkIG9uY2UgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZpbmlzaGVzLiAgWWV0Ci0gIC8v
IGl0J3MgZmluZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uIGxhdGVyLCBzaW5jZSBhIGNvcHkgb2Yg
dGhlIHZhbHVlcwotICAvLyBhcmUga2VwdCBpbnNpZGUgdGhlIEludm9rZUFyZ3VtZW50IGFjdGlv
bi4KLWBgYAotCi0jIyBJZ25vcmluZyBhbiBBY3Rpb24ncyBSZXN1bHQgIyMKLQotU29tZXRpbWVz
IHlvdSBoYXZlIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgX3NvbWV0aGluZ18sIGJ1dCB5b3UgbmVl
ZCBhbgotYWN0aW9uIHRoYXQgcmV0dXJucyBgdm9pZGAgKHBlcmhhcHMgeW91IHdhbnQgdG8gdXNl
IGl0IGluIGEgbW9jawotZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2b2lkYCwgb3IgcGVyaGFwcyBp
dCBuZWVkcyB0byBiZSB1c2VkIGluCi1gRG9BbGwoKWAgYW5kIGl0J3Mgbm90IHRoZSBsYXN0IGlu
IHRoZSBsaXN0KS4gYElnbm9yZVJlc3VsdCgpYCBsZXRzCi15b3UgZG8gdGhhdC4gRm9yIGV4YW1w
bGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7
Ci11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLQotaW50IFByb2Nlc3MoY29uc3QgTXlEYXRhJiBk
YXRhKTsKLXN0cmluZyBEb1NvbWV0aGluZygpOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZv
byB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDEoQWJjLCB2b2lkKGNvbnN0IE15RGF0YSYgZGF0
YSkpOwotICBNT0NLX01FVEhPRDAoWHl6LCBib29sKCkpOwotfTsKLS4uLgotCi0gIE1vY2tGb28g
Zm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIEFiYyhfKSkKLSAgLy8gLldpbGxPbmNlKEludm9rZShQ
cm9jZXNzKSk7Ci0gIC8vIFRoZSBhYm92ZSBsaW5lIHdvbid0IGNvbXBpbGUgYXMgUHJvY2Vzcygp
IHJldHVybnMgaW50IGJ1dCBBYmMoKSBuZWVkcwotICAvLyB0byByZXR1cm4gdm9pZC4KLSAgICAg
IC5XaWxsT25jZShJZ25vcmVSZXN1bHQoSW52b2tlKFByb2Nlc3MpKSk7Ci0KLSAgRVhQRUNUX0NB
TEwoZm9vLCBYeXooKSkKLSAgICAgIC5XaWxsT25jZShEb0FsbChJZ25vcmVSZXN1bHQoSW52b2tl
KERvU29tZXRoaW5nKSksCi0gICAgICAvLyBJZ25vcmVzIHRoZSBzdHJpbmcgRG9Tb21ldGhpbmco
KSByZXR1cm5zLgotICAgICAgICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSkpOwotYGBgCi0K
LU5vdGUgdGhhdCB5b3UgKipjYW5ub3QqKiB1c2UgYElnbm9yZVJlc3VsdCgpYCBvbiBhbiBhY3Rp
b24gdGhhdCBhbHJlYWR5Ci1yZXR1cm5zIGB2b2lkYC4gRG9pbmcgc28gd2lsbCBsZWFkIHRvIHVn
bHkgY29tcGlsZXIgZXJyb3JzLgotCi0jIyBTZWxlY3RpbmcgYW4gQWN0aW9uJ3MgQXJndW1lbnRz
ICMjCi0KLVNheSB5b3UgaGF2ZSBhIG1vY2sgZnVuY3Rpb24gYEZvbygpYCB0aGF0IHRha2VzIHNl
dmVuIGFyZ3VtZW50cywgYW5kCi15b3UgaGF2ZSBhIGN1c3RvbSBhY3Rpb24gdGhhdCB5b3Ugd2Fu
dCB0byBpbnZva2Ugd2hlbiBgRm9vKClgIGlzCi1jYWxsZWQuIFRyb3VibGUgaXMsIHRoZSBjdXN0
b20gYWN0aW9uIG9ubHkgd2FudHMgdGhyZWUgYXJndW1lbnRzOgotCi1gYGAKLXVzaW5nIDo6dGVz
dGluZzo6XzsKLXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotLi4uCi0gIE1PQ0tfTUVUSE9ENyhG
b28sIGJvb2woYm9vbCB2aXNpYmxlLCBjb25zdCBzdHJpbmcmIG5hbWUsIGludCB4LCBpbnQgeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8cGFpcjxpbnQsIGludD4sIGRvdWJs
ZT4mIHdlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbWluX3dlaWdodCwg
ZG91YmxlIG1heF93aWdodCkpOwotLi4uCi0KLWJvb2wgSXNWaXNpYmxlSW5RdWFkcmFudDEoYm9v
bCB2aXNpYmxlLCBpbnQgeCwgaW50IHkpIHsKLSAgcmV0dXJuIHZpc2libGUgJiYgeCA+PSAwICYm
IHkgPj0gMDsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhfLCBfLCBfLCBfLCBf
LCBfLCBfKSkKLSAgICAgIC5XaWxsT25jZShJbnZva2UoSXNWaXNpYmxlSW5RdWFkcmFudDEpKTsg
IC8vIFVoLCB3b24ndCBjb21waWxlLiA6LSgKLWBgYAotCi1UbyBwbGVhc2UgdGhlIGNvbXBpbGVy
IEdvZCwgeW91IGNhbiB0byBkZWZpbmUgYW4gImFkYXB0b3IiIHRoYXQgaGFzCi10aGUgc2FtZSBz
aWduYXR1cmUgYXMgYEZvbygpYCBhbmQgY2FsbHMgdGhlIGN1c3RvbSBhY3Rpb24gd2l0aCB0aGUK
LXJpZ2h0IGFyZ3VtZW50czoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRl
c3Rpbmc6Okludm9rZTsKLQotYm9vbCBNeUlzVmlzaWJsZUluUXVhZHJhbnQxKGJvb2wgdmlzaWJs
ZSwgY29uc3Qgc3RyaW5nJiBuYW1lLCBpbnQgeCwgaW50IHksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbWFwPHBhaXI8aW50LCBpbnQ+LCBkb3VibGU+JiB3ZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG1pbl93ZWlnaHQsIGRvdWJsZSBtYXhfd2ln
aHQpIHsKLSAgcmV0dXJuIElzVmlzaWJsZUluUXVhZHJhbnQxKHZpc2libGUsIHgsIHkpOwotfQot
Li4uCi0KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8sIF8sIF8sIF8sIF8pKQotICAg
ICAgLldpbGxPbmNlKEludm9rZShNeUlzVmlzaWJsZUluUXVhZHJhbnQxKSk7ICAvLyBOb3cgaXQg
d29ya3MuCi1gYGAKLQotQnV0IGlzbid0IHRoaXMgYXdrd2FyZD8KLQotR29vZ2xlIE1vY2sgcHJv
dmlkZXMgYSBnZW5lcmljIF9hY3Rpb24gYWRhcHRvcl8sIHNvIHlvdSBjYW4gc3BlbmQgeW91cgot
dGltZSBtaW5kaW5nIG1vcmUgaW1wb3J0YW50IGJ1c2luZXNzIHRoYW4gd3JpdGluZyB5b3VyIG93
bgotYWRhcHRvcnMuIEhlcmUncyB0aGUgc3ludGF4OgotCi1gYGAKLSAgV2l0aEFyZ3M8TjEsIE4y
LCAuLi4sIE5rPihhY3Rpb24pCi1gYGAKLQotY3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBwYXNzZXMg
dGhlIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiBhdAotdGhlIGdpdmVuIGluZGljZXMg
KDAtYmFzZWQpIHRvIHRoZSBpbm5lciBgYWN0aW9uYCBhbmQgcGVyZm9ybXMKLWl0LiBVc2luZyBg
V2l0aEFyZ3NgLCBvdXIgb3JpZ2luYWwgZXhhbXBsZSBjYW4gYmUgd3JpdHRlbiBhczoKLQotYGBg
Ci11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6Okludm9rZTsKLXVzaW5nIDo6
dGVzdGluZzo6V2l0aEFyZ3M7Ci0uLi4KLSAgRVhQRUNUX0NBTEwobW9jaywgRm9vKF8sIF8sIF8s
IF8sIF8sIF8sIF8pKQotICAgICAgLldpbGxPbmNlKFdpdGhBcmdzPDAsIDIsIDM+KEludm9rZShJ
c1Zpc2libGVJblF1YWRyYW50MSkpKTsKLSAgICAgIC8vIE5vIG5lZWQgdG8gZGVmaW5lIHlvdXIg
b3duIGFkYXB0b3IuCi1gYGAKLQotRm9yIGJldHRlciByZWFkYWJpbGl0eSwgR29vZ2xlIE1vY2sg
YWxzbyBnaXZlcyB5b3U6Ci0KLSAgKiBgV2l0aG91dEFyZ3MoYWN0aW9uKWAgd2hlbiB0aGUgaW5u
ZXIgYGFjdGlvbmAgdGFrZXMgX25vXyBhcmd1bWVudCwgYW5kCi0gICogYFdpdGhBcmc8Tj4oYWN0
aW9uKWAgKG5vIGBzYCBhZnRlciBgQXJnYCkgd2hlbiB0aGUgaW5uZXIgYGFjdGlvbmAgdGFrZXMg
X29uZV8gYXJndW1lbnQuCi0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgYEludm9rZVdpdGhv
dXRBcmdzKC4uLilgIGlzIGp1c3Qgc3ludGFjdGljCi1zdWdhciBmb3IgYFdpdGhvdXRBcmdzKElu
b3ZrZSguLi4pKWAuCi0KLUhlcmUgYXJlIG1vcmUgdGlwczoKLQotICAqIFRoZSBpbm5lciBhY3Rp
b24gdXNlZCBpbiBgV2l0aEFyZ3NgIGFuZCBmcmllbmRzIGRvZXMgbm90IGhhdmUgdG8gYmUgYElu
dm9rZSgpYCAtLSBpdCBjYW4gYmUgYW55dGhpbmcuCi0gICogWW91IGNhbiByZXBlYXQgYW4gYXJn
dW1lbnQgaW4gdGhlIGFyZ3VtZW50IGxpc3QgaWYgbmVjZXNzYXJ5LCBlLmcuIGBXaXRoQXJnczwy
LCAzLCAzLCA1PiguLi4pYC4KLSAgKiBZb3UgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGFy
Z3VtZW50cywgZS5nLiBgV2l0aEFyZ3M8MywgMiwgMT4oLi4uKWAuCi0gICogVGhlIHR5cGVzIG9m
IHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgZG8gX25vdF8gaGF2ZSB0byBtYXRjaCB0aGUgc2lnbmF0
dXJlIG9mIHRoZSBpbm5lciBhY3Rpb24gZXhhY3RseS4gSXQgd29ya3MgYXMgbG9uZyBhcyB0aGV5
IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVu
dHMgb2YgdGhlIGlubmVyIGFjdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHRoZSA0LXRoIGFyZ3VtZW50
IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGlzIGFuIGBpbnRgIGFuZCBgbXlfYWN0aW9uYCB0YWtlcyBh
IGBkb3VibGVgLCBgV2l0aEFyZzw0PihteV9hY3Rpb24pYCB3aWxsIHdvcmsuCi0KLSMjIElnbm9y
aW5nIEFyZ3VtZW50cyBpbiBBY3Rpb24gRnVuY3Rpb25zICMjCi0KLVRoZSBzZWxlY3RpbmctYW4t
YWN0aW9uJ3MtYXJndW1lbnRzIHJlY2lwZSBzaG93ZWQgdXMgb25lIHdheSB0byBtYWtlIGEKLW1v
Y2sgZnVuY3Rpb24gYW5kIGFuIGFjdGlvbiB3aXRoIGluY29tcGF0aWJsZSBhcmd1bWVudCBsaXN0
cyBmaXQKLXRvZ2V0aGVyLiBUaGUgZG93bnNpZGUgaXMgdGhhdCB3cmFwcGluZyB0aGUgYWN0aW9u
IGluCi1gV2l0aEFyZ3M8Li4uPigpYCBjYW4gZ2V0IHRlZGlvdXMgZm9yIHBlb3BsZSB3cml0aW5n
IHRoZSB0ZXN0cy4KLQotSWYgeW91IGFyZSBkZWZpbmluZyBhIGZ1bmN0aW9uLCBtZXRob2QsIG9y
IGZ1bmN0b3IgdG8gYmUgdXNlZCB3aXRoCi1gSW52b2tlKigpYCwgYW5kIHlvdSBhcmUgbm90IGlu
dGVyZXN0ZWQgaW4gc29tZSBvZiBpdHMgYXJndW1lbnRzLCBhbgotYWx0ZXJuYXRpdmUgdG8gYFdp
dGhBcmdzYCBpcyB0byBkZWNsYXJlIHRoZSB1bmludGVyZXN0aW5nIGFyZ3VtZW50cyBhcwotYFVu
dXNlZGAuIFRoaXMgbWFrZXMgdGhlIGRlZmluaXRpb24gbGVzcyBjbHV0dGVyZWQgYW5kIGxlc3Mg
ZnJhZ2lsZSBpbgotY2FzZSB0aGUgdHlwZXMgb2YgdGhlIHVuaW50ZXJlc3RpbmcgYXJndW1lbnRz
IGNoYW5nZS4gSXQgY291bGQgYWxzbwotaW5jcmVhc2UgdGhlIGNoYW5jZSB0aGUgYWN0aW9uIGZ1
bmN0aW9uIGNhbiBiZSByZXVzZWQuIEZvciBleGFtcGxlLAotZ2l2ZW4KLQotYGBgCi0gIE1PQ0tf
TUVUSE9EMyhGb28sIGRvdWJsZShjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91Ymxl
IHkpKTsKLSAgTU9DS19NRVRIT0QzKEJhciwgZG91YmxlKGludCBpbmRleCwgZG91YmxlIHgsIGRv
dWJsZSB5KSk7Ci1gYGAKLQotaW5zdGVhZCBvZgotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6XzsK
LXVzaW5nIDo6dGVzdGluZzo6SW52b2tlOwotCi1kb3VibGUgRGlzdGFuY2VUb09yaWdpbldpdGhM
YWJlbChjb25zdCBzdHJpbmcmIGxhYmVsLCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAgcmV0dXJu
IHNxcnQoeCp4ICsgeSp5KTsKLX0KLQotZG91YmxlIERpc3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgo
aW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5
KTsKLX0KLS4uLgotCi0gIEVYRVBDVF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCi0gICAg
ICAuV2lsbE9uY2UoSW52b2tlKERpc3RhbmNlVG9PcmlnaW5XaXRoTGFiZWwpKTsKLSAgRVhFUENU
X0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQotICAgICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5j
ZVRvT3JpZ2luV2l0aEluZGV4KSk7Ci1gYGAKLQoteW91IGNvdWxkIHdyaXRlCi0KLWBgYAotdXNp
bmcgOjp0ZXN0aW5nOjpfOwotdXNpbmcgOjp0ZXN0aW5nOjpJbnZva2U7Ci11c2luZyA6OnRlc3Rp
bmc6OlVudXNlZDsKLQotZG91YmxlIERpc3RhbmNlVG9PcmlnaW4oVW51c2VkLCBkb3VibGUgeCwg
ZG91YmxlIHkpIHsKLSAgcmV0dXJuIHNxcnQoeCp4ICsgeSp5KTsKLX0KLS4uLgotCi0gIEVYRVBD
VF9DQUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKERp
c3RhbmNlVG9PcmlnaW4pKTsKLSAgRVhFUENUX0NBTEwobW9jaywgQmFyKDUsIF8sIF8pKQotICAg
ICAgLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3JpZ2luKSk7Ci1gYGAKLQotIyMgU2hhcmlu
ZyBBY3Rpb25zICMjCi0KLUp1c3QgbGlrZSBtYXRjaGVycywgYSBHb29nbGUgTW9jayBhY3Rpb24g
b2JqZWN0IGNvbnNpc3RzIG9mIGEgcG9pbnRlcgotdG8gYSByZWYtY291bnRlZCBpbXBsZW1lbnRh
dGlvbiBvYmplY3QuIFRoZXJlZm9yZSBjb3B5aW5nIGFjdGlvbnMgaXMKLWFsc28gYWxsb3dlZCBh
bmQgdmVyeSBlZmZpY2llbnQuIFdoZW4gdGhlIGxhc3QgYWN0aW9uIHRoYXQgcmVmZXJlbmNlcwot
dGhlIGltcGxlbWVudGF0aW9uIG9iamVjdCBkaWVzLCB0aGUgaW1wbGVtZW50YXRpb24gb2JqZWN0
IHdpbGwgYmUKLWRlbGV0ZWQuCi0KLUlmIHlvdSBoYXZlIHNvbWUgY29tcGxleCBhY3Rpb24gdGhh
dCB5b3Ugd2FudCB0byB1c2UgYWdhaW4gYW5kIGFnYWluLAoteW91IG1heSBub3QgaGF2ZSB0byBi
dWlsZCBpdCBmcm9tIHNjcmF0Y2ggZXZlcnl0aW1lLiBJZiB0aGUgYWN0aW9uCi1kb2Vzbid0IGhh
dmUgYW4gaW50ZXJuYWwgc3RhdGUgKGkuZS4gaWYgaXQgYWx3YXlzIGRvZXMgdGhlIHNhbWUgdGhp
bmcKLW5vIG1hdHRlciBob3cgbWFueSB0aW1lcyBpdCBoYXMgYmVlbiBjYWxsZWQpLCB5b3UgY2Fu
IGFzc2lnbiBpdCB0byBhbgotYWN0aW9uIHZhcmlhYmxlIGFuZCB1c2UgdGhhdCB2YXJpYWJsZSBy
ZXBlYXRlZGx5LiBGb3IgZXhhbXBsZToKLQotYGBgCi0gIEFjdGlvbjxib29sKGludCopPiBzZXRf
ZmxhZyA9IERvQWxsKFNldEFyZ1BvaW50ZWU8MD4oNSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJldHVybih0cnVlKSk7Ci0gIC4uLiB1c2Ugc2V0X2ZsYWcgaW4gLldp
bGxPbmNlKCkgYW5kIC5XaWxsUmVwZWF0ZWRseSgpIC4uLgotYGBgCi0KLUhvd2V2ZXIsIGlmIHRo
ZSBhY3Rpb24gaGFzIGl0cyBvd24gc3RhdGUsIHlvdSBtYXkgYmUgc3VycHJpc2VkIGlmIHlvdQot
c2hhcmUgdGhlIGFjdGlvbiBvYmplY3QuIFN1cHBvc2UgeW91IGhhdmUgYW4gYWN0aW9uIGZhY3Rv
cnkKLWBJbmNyZW1lbnRDb3VudGVyKGluaXQpYCB3aGljaCBjcmVhdGVzIGFuIGFjdGlvbiB0aGF0
IGluY3JlbWVudHMgYW5kCi1yZXR1cm5zIGEgY291bnRlciB3aG9zZSBpbml0aWFsIHZhbHVlIGlz
IGBpbml0YCwgdXNpbmcgdHdvIGFjdGlvbnMKLWNyZWF0ZWQgZnJvbSB0aGUgc2FtZSBleHByZXNz
aW9uIGFuZCB1c2luZyBhIHNoYXJlZCBhY3Rpb24gd2lsbAotZXhpaGliaXQgZGlmZmVyZW50IGJl
aGF2aW9ycy4gRXhhbXBsZToKLQotYGBgCi0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGlzKCkpCi0g
ICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVtZW50Q291bnRlcigwKSk7Ci0gIEVYUEVDVF9DQUxM
KGZvbywgRG9UaGF0KCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoSW5jcmVtZW50Q291bnRlcigw
KSk7Ci0gIGZvby5Eb1RoaXMoKTsgIC8vIFJldHVybnMgMS4KLSAgZm9vLkRvVGhpcygpOyAgLy8g
UmV0dXJucyAyLgotICBmb28uRG9UaGF0KCk7ICAvLyBSZXR1cm5zIDEgLSBCbGFoKCkgdXNlcyBh
IGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAvLyBjb3VudGVyIHRoYW4gQmFyKCkncy4KLWBg
YAotCi12ZXJzdXMKLQotYGBgCi0gIEFjdGlvbjxpbnQoKT4gaW5jcmVtZW50ID0gSW5jcmVtZW50
Q291bnRlcigwKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIERvVGhpcygpKQotICAgICAgLldpbGxS
ZXBlYXRlZGx5KGluY3JlbWVudCk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KCkpCi0gICAg
ICAuV2lsbFJlcGVhdGVkbHkoaW5jcmVtZW50KTsKLSAgZm9vLkRvVGhpcygpOyAgLy8gUmV0dXJu
cyAxLgotICBmb28uRG9UaGlzKCk7ICAvLyBSZXR1cm5zIDIuCi0gIGZvby5Eb1RoYXQoKTsgIC8v
IFJldHVybnMgMyAtIHRoZSBjb3VudGVyIGlzIHNoYXJlZC4KLWBgYAotCi0jIE1pc2MgUmVjaXBl
cyBvbiBVc2luZyBHb29nbGUgTW9jayAjCi0KLSMjIE1ha2luZyB0aGUgQ29tcGlsYXRpb24gRmFz
dGVyICMjCi0KLUJlbGlldmUgaXQgb3Igbm90LCB0aGUgX3Zhc3QgbWFqb3JpdHlfIG9mIHRoZSB0
aW1lIHNwZW50IG9uIGNvbXBpbGluZwotYSBtb2NrIGNsYXNzIGlzIGluIGdlbmVyYXRpbmcgaXRz
IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yLCBhcyB0aGV5Ci1wZXJmb3JtIG5vbi10cml2aWFs
IHRhc2tzIChlLmcuIHZlcmlmaWNhdGlvbiBvZiB0aGUKLWV4cGVjdGF0aW9ucykuIFdoYXQncyBt
b3JlLCBtb2NrIG1ldGhvZHMgd2l0aCBkaWZmZXJlbnQgc2lnbmF0dXJlcwotaGF2ZSBkaWZmZXJl
bnQgdHlwZXMgYW5kIHRodXMgdGhlaXIgY29uc3RydWN0b3JzL2Rlc3RydWN0b3JzIG5lZWQgdG8K
LWJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgc2VwYXJhdGVseS4gQXMgYSByZXN1bHQsIGlm
IHlvdSBtb2NrIG1hbnkKLWRpZmZlcmVudCB0eXBlcyBvZiBtZXRob2RzLCBjb21waWxpbmcgeW91
ciBtb2NrIGNsYXNzIGNhbiBnZXQgcmVhbGx5Ci1zbG93LgotCi1JZiB5b3UgYXJlIGV4cGVyaWVu
Y2luZyBzbG93IGNvbXBpbGF0aW9uLCB5b3UgY2FuIG1vdmUgdGhlIGRlZmluaXRpb24KLW9mIHlv
dXIgbW9jayBjbGFzcycgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3Igb3V0IG9mIHRoZSBjbGFz
cyBib2R5Ci1hbmQgaW50byBhIGAuY3BwYCBmaWxlLiBUaGlzIHdheSwgZXZlbiBpZiB5b3UgYCNp
bmNsdWRlYCB5b3VyIG1vY2sKLWNsYXNzIGluIE4gZmlsZXMsIHRoZSBjb21waWxlciBvbmx5IG5l
ZWRzIHRvIGdlbmVyYXRlIGl0cyBjb25zdHJ1Y3RvcgotYW5kIGRlc3RydWN0b3Igb25jZSwgcmVz
dWx0aW5nIGluIGEgbXVjaCBmYXN0ZXIgY29tcGlsYXRpb24uCi0KLUxldCdzIGlsbHVzdHJhdGUg
dGhlIGlkZWEgdXNpbmcgYW4gZXhhbXBsZS4gSGVyZSdzIHRoZSBkZWZpbml0aW9uIG9mIGEKLW1v
Y2sgY2xhc3MgYmVmb3JlIGFwcGx5aW5nIHRoaXMgcmVjaXBlOgotCi1gYGAKLS8vIEZpbGUgbW9j
a19mb28uaC4KLS4uLgotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAg
Ly8gU2luY2Ugd2UgZG9uJ3QgZGVjbGFyZSB0aGUgY29uc3RydWN0b3Igb3IgdGhlIGRlc3RydWN0
b3IsCi0gIC8vIHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRlIHRoZW0gaW4gZXZlcnkgdHJhbnNs
YXRpb24gdW5pdAotICAvLyB3aGVyZSB0aGlzIG1vY2sgY2xhc3MgaXMgdXNlZC4KLQotICBNT0NL
X01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShEb1RoYXQsIGJvb2woY29u
c3QgY2hhciogc3RyKSk7Ci0gIC4uLiBtb3JlIG1vY2sgbWV0aG9kcyAuLi4KLX07Ci1gYGAKLQot
QWZ0ZXIgdGhlIGNoYW5nZSwgaXQgd291bGQgbG9vayBsaWtlOgotCi1gYGAKLS8vIEZpbGUgbW9j
a19mb28uaC4KLS4uLgotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb28gewotIHB1YmxpYzoKLSAg
Ly8gVGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBkZWNsYXJlZCwgYnV0IG5vdCBk
ZWZpbmVkLCBoZXJlLgotICBNb2NrRm9vKCk7Ci0gIHZpcnR1YWwgfk1vY2tGb28oKTsKLQotICBN
T0NLX01FVEhPRDAoRG9UaGlzLCBpbnQoKSk7Ci0gIE1PQ0tfTUVUSE9EMShEb1RoYXQsIGJvb2wo
Y29uc3QgY2hhciogc3RyKSk7Ci0gIC4uLiBtb3JlIG1vY2sgbWV0aG9kcyAuLi4KLX07Ci1gYGAK
LWFuZAotYGBgCi0vLyBGaWxlIG1vY2tfZm9vLmNwcC4KLSNpbmNsdWRlICJwYXRoL3RvL21vY2tf
Zm9vLmgiCi0KLS8vIFRoZSBkZWZpbml0aW9ucyBtYXkgYXBwZWFyIHRyaXZpYWwsIGJ1dCB0aGUg
ZnVuY3Rpb25zIGFjdHVhbGx5IGRvIGEKLS8vIGxvdCBvZiB0aGluZ3MgdGhyb3VnaCB0aGUgY29u
c3RydWN0b3JzL2Rlc3RydWN0b3JzIG9mIHRoZSBtZW1iZXIKLS8vIHZhcmlhYmxlcyB1c2VkIHRv
IGltcGxlbWVudCB0aGUgbW9jayBtZXRob2RzLgotTW9ja0Zvbzo6TW9ja0ZvbygpIHt9Ci1Nb2Nr
Rm9vOjp+TW9ja0ZvbygpIHt9Ci1gYGAKLQotIyMgRm9yY2luZyBhIFZlcmlmaWNhdGlvbiAjIwot
Ci1XaGVuIGl0J3MgYmVpbmcgZGVzdG95ZWQsIHlvdXIgZnJpZW5kbHkgbW9jayBvYmplY3Qgd2ls
bCBhdXRvbWF0aWNhbGx5Ci12ZXJpZnkgdGhhdCBhbGwgZXhwZWN0YXRpb25zIG9uIGl0IGhhdmUg
YmVlbiBzYXRpc2ZpZWQsIGFuZCB3aWxsCi1nZW5lcmF0ZSBbR29vZ2xlIFRlc3RdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0LykgZmFpbHVyZXMKLWlmIG5vdC4gVGhpcyBpcyBj
b252ZW5pZW50IGFzIGl0IGxlYXZlcyB5b3Ugd2l0aCBvbmUgbGVzcyB0aGluZyB0bwotd29ycnkg
YWJvdXQuIFRoYXQgaXMsIHVubGVzcyB5b3UgYXJlIG5vdCBzdXJlIGlmIHlvdXIgbW9jayBvYmpl
Y3Qgd2lsbAotYmUgZGVzdG95ZWQuCi0KLUhvdyBjb3VsZCBpdCBiZSB0aGF0IHlvdXIgbW9jayBv
YmplY3Qgd29uJ3QgZXZlbnR1YWxseSBiZSBkZXN0cm95ZWQ/Ci1XZWxsLCBpdCBtaWdodCBiZSBj
cmVhdGVkIG9uIHRoZSBoZWFwIGFuZCBvd25lZCBieSB0aGUgY29kZSB5b3UgYXJlCi10ZXN0aW5n
LiBTdXBwb3NlIHRoZXJlJ3MgYSBidWcgaW4gdGhhdCBjb2RlIGFuZCBpdCBkb2Vzbid0IGRlbGV0
ZSB0aGUKLW1vY2sgb2JqZWN0IHByb3Blcmx5IC0geW91IGNvdWxkIGVuZCB1cCB3aXRoIGEgcGFz
c2luZyB0ZXN0IHdoZW4KLXRoZXJlJ3MgYWN0dWFsbHkgYSBidWcuCi0KLVVzaW5nIGEgaGVhcCBj
aGVja2VyIGlzIGEgZ29vZCBpZGVhIGFuZCBjYW4gYWxsZXZpYXRlIHRoZSBjb25jZXJuLCBidXQK
LWl0cyBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IGJlIDEwMCUgcmVsaWFibGUuIFNvLCBzb21ldGlt
ZXMgeW91IGRvIHdhbnQKLXRvIF9mb3JjZV8gR29vZ2xlIE1vY2sgdG8gdmVyaWZ5IGEgbW9jayBv
YmplY3QgYmVmb3JlIGl0IGlzCi0oaG9wZWZ1bGx5KSBkZXN0cnVjdGVkLiBZb3UgY2FuIGRvIHRo
aXMgd2l0aAotYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrX29iamVjdClg
OgotCi1gYGAKLVRFU1QoTXlTZXJ2ZXJUZXN0LCBQcm9jZXNzZXNSZXF1ZXN0KSB7Ci0gIHVzaW5n
IDo6dGVzdGluZzo6TW9jazsKLQotICBNb2NrRm9vKiBjb25zdCBmb28gPSBuZXcgTW9ja0ZvbzsK
LSAgRVhQRUNUX0NBTEwoKmZvbywgLi4uKS4uLjsKLSAgLy8gLi4uIG90aGVyIGV4cGVjdGF0aW9u
cyAuLi4KLQotICAvLyBzZXJ2ZXIgbm93IG93bnMgZm9vLgotICBNeVNlcnZlciBzZXJ2ZXIoZm9v
KTsKLSAgc2VydmVyLlByb2Nlc3NSZXF1ZXN0KC4uLik7Ci0KLSAgLy8gSW4gY2FzZSB0aGF0IHNl
cnZlcidzIGRlc3RydWN0b3Igd2lsbCBmb3JnZXQgdG8gZGVsZXRlIGZvbywKLSAgLy8gdGhpcyB3
aWxsIHZlcmlmeSB0aGUgZXhwZWN0YXRpb25zIGFueXdheS4KLSAgTW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoZm9vKTsKLX0gIC8vIHNlcnZlciBpcyBkZXN0cm95ZWQgd2hlbiBpdCBn
b2VzIG91dCBvZiBzY29wZSBoZXJlLgotYGBgCi0KLSoqVGlwOioqIFRoZSBgTW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoKWAgZnVuY3Rpb24gcmV0dXJucyBhCi1gYm9vbGAgdG8gaW5k
aWNhdGUgd2hldGhlciB0aGUgdmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNzZnVsIChgdHJ1ZWAgZm9y
Ci15ZXMpLCBzbyB5b3UgY2FuIHdyYXAgdGhhdCBmdW5jdGlvbiBjYWxsIGluc2lkZSBhIGBBU1NF
UlRfVFJVRSgpYCBpZgotdGhlcmUgaXMgbm8gcG9pbnQgZ29pbmcgZnVydGhlciB3aGVuIHRoZSB2
ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4KLQotIyMgVXNpbmcgQ2hlY2sgUG9pbnRzICMjCi0KLVNv
bWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gInJlc2V0IiBhIG1vY2sgb2JqZWN0IGF0IHZhcmlvdXMg
Y2hlY2sKLXBvaW50cyBpbiB5b3VyIHRlc3Q6IGF0IGVhY2ggY2hlY2sgcG9pbnQsIHlvdSB2ZXJp
ZnkgdGhhdCBhbGwgZXhpc3RpbmcKLWV4cGVjdGF0aW9ucyBvbiB0aGUgbW9jayBvYmplY3QgaGF2
ZSBiZWVuIHNhdGlzZmllZCwgYW5kIHRoZW4geW91IHNldAotc29tZSBuZXcgZXhwZWN0YXRpb25z
IG9uIGl0IGFzIGlmIGl0J3MgbmV3bHkgY3JlYXRlZC4gVGhpcyBhbGxvd3MgeW91Ci10byB3b3Jr
IHdpdGggYSBtb2NrIG9iamVjdCBpbiAicGhhc2VzIiB3aG9zZSBzaXplcyBhcmUgZWFjaAotbWFu
YWdlYWJsZS4KLQotT25lIHN1Y2ggc2NlbmFyaW8gaXMgdGhhdCBpbiB5b3VyIHRlc3QncyBgU2V0
VXAoKWAgZnVuY3Rpb24sIHlvdSBtYXkKLXdhbnQgdG8gcHV0IHRoZSBvYmplY3QgeW91IGFyZSB0
ZXN0aW5nIGludG8gYSBjZXJ0YWluIHN0YXRlLCB3aXRoIHRoZQotaGVscCBmcm9tIGEgbW9jayBv
YmplY3QuIE9uY2UgaW4gdGhlIGRlc2lyZWQgc3RhdGUsIHlvdSB3YW50IHRvIGNsZWFyCi1hbGwg
ZXhwZWN0YXRpb25zIG9uIHRoZSBtb2NrLCBzdWNoIHRoYXQgaW4gdGhlIGBURVNUX0ZgIGJvZHkg
eW91IGNhbgotc2V0IGZyZXNoIGV4cGVjdGF0aW9ucyBvbiBpdC4KLQotQXMgeW91IG1heSBoYXZl
IGZpZ3VyZWQgb3V0LCB0aGUgYE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKClgCi1m
dW5jdGlvbiB3ZSBzYXcgaW4gdGhlIHByZXZpb3VzIHJlY2lwZSBjYW4gaGVscCB5b3UgaGVyZS4g
T3IsIGlmIHlvdQotYXJlIHVzaW5nIGBPTl9DQUxMKClgIHRvIHNldCBkZWZhdWx0IGFjdGlvbnMg
b24gdGhlIG1vY2sgb2JqZWN0IGFuZAotd2FudCB0byBjbGVhciB0aGUgZGVmYXVsdCBhY3Rpb25z
IGFzIHdlbGwsIHVzZQotYE1vY2s6OlZlcmlmeUFuZENsZWFyKCZtb2NrX29iamVjdClgIGluc3Rl
YWQuIFRoaXMgZnVuY3Rpb24gZG9lcyB3aGF0Ci1gTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1vY2tfb2JqZWN0KWAgZG9lcyBhbmQgcmV0dXJucyB0aGUKLXNhbWUgYGJvb2xgLCAq
KnBsdXMqKiBpdCBjbGVhcnMgdGhlIGBPTl9DQUxMKClgIHN0YXRlbWVudHMgb24KLWBtb2NrX29i
amVjdGAgdG9vLgotCi1Bbm90aGVyIHRyaWNrIHlvdSBjYW4gdXNlIHRvIGFjaGlldmUgdGhlIHNh
bWUgZWZmZWN0IGlzIHRvIHB1dCB0aGUKLWV4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZXMgYW5kIGlu
c2VydCBjYWxscyB0byBhIGR1bW15ICJjaGVjay1wb2ludCIKLWZ1bmN0aW9uIGF0IHNwZWNpZmlj
IHBsYWNlcy4gVGhlbiB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBtb2NrCi1mdW5jdGlvbiBjYWxs
cyBkbyBoYXBwZW4gYXQgdGhlIHJpZ2h0IHRpbWUuIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlCi1l
eGVyY2lzaW5nIGNvZGU6Ci0KLWBgYAotRm9vKDEpOwotRm9vKDIpOwotRm9vKDMpOwotYGBgCi0K
LWFuZCB3YW50IHRvIHZlcmlmeSB0aGF0IGBGb28oMSlgIGFuZCBgRm9vKDMpYCBib3RoIGludm9r
ZQotYG1vY2suQmFyKCJhIilgLCBidXQgYEZvbygyKWAgZG9lc24ndCBpbnZva2UgYW55dGhpbmcu
IFlvdSBjYW4gd3JpdGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNb2NrRnVuY3Rpb247Ci0K
LVRFU1QoRm9vVGVzdCwgSW52b2tlc0JhckNvcnJlY3RseSkgewotICBNeU1vY2sgbW9jazsKLSAg
Ly8gQ2xhc3MgTW9ja0Z1bmN0aW9uPEY+IGhhcyBleGFjdGx5IG9uZSBtb2NrIG1ldGhvZC4gIEl0
IGlzIG5hbWVkCi0gIC8vIENhbGwoKSBhbmQgaGFzIHR5cGUgRi4KLSAgTW9ja0Z1bmN0aW9uPHZv
aWQoc3RyaW5nIGNoZWNrX3BvaW50X25hbWUpPiBjaGVjazsKLSAgewotICAgIEluU2VxdWVuY2Ug
czsKLQotICAgIEVYUEVDVF9DQUxMKG1vY2ssIEJhcigiYSIpKTsKLSAgICBFWFBFQ1RfQ0FMTChj
aGVjaywgQ2FsbCgiMSIpKTsKLSAgICBFWFBFQ1RfQ0FMTChjaGVjaywgQ2FsbCgiMiIpKTsKLSAg
ICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0gIH0KLSAgRm9vKDEpOwotICBjaGVjay5D
YWxsKCIxIik7Ci0gIEZvbygyKTsKLSAgY2hlY2suQ2FsbCgiMiIpOwotICBGb28oMyk7Ci19Ci1g
YGAKLQotVGhlIGV4cGVjdGF0aW9uIHNwZWMgc2F5cyB0aGF0IHRoZSBmaXJzdCBgQmFyKCJhIilg
IG11c3QgaGFwcGVuIGJlZm9yZQotY2hlY2sgcG9pbnQgIjEiLCB0aGUgc2Vjb25kIGBCYXIoImEi
KWAgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sgcG9pbnQgIjIiLAotYW5kIG5vdGhpbmcgc2hvdWxk
IGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hlY2sgcG9pbnRzLiBUaGUgZXhwbGljaXQKLWNoZWNr
IHBvaW50cyBtYWtlIGl0IGVhc3kgdG8gdGVsbCB3aGljaCBgQmFyKCJhIilgIGlzIGNhbGxlZCBi
eSB3aGljaAotY2FsbCB0byBgRm9vKClgLgotCi0jIyBNb2NraW5nIERlc3RydWN0b3JzICMjCi0K
LVNvbWV0aW1lcyB5b3Ugd2FudCB0byBtYWtlIHN1cmUgYSBtb2NrIG9iamVjdCBpcyBkZXN0cnVj
dGVkIGF0IHRoZQotcmlnaHQgdGltZSwgZS5nLiBhZnRlciBgYmFyLT5BKClgIGlzIGNhbGxlZCBi
dXQgYmVmb3JlIGBiYXItPkIoKWAgaXMKLWNhbGxlZC4gV2UgYWxyZWFkeSBrbm93IHRoYXQgeW91
IGNhbiBzcGVjaWZ5IGNvbnN0cmFpbnRzIG9uIHRoZSBvcmRlcgotb2YgbW9jayBmdW5jdGlvbiBj
YWxscywgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gbW9jayB0aGUgZGVzdHJ1Y3Rvcgotb2Yg
dGhlIG1vY2sgZnVuY3Rpb24uCi0KLVRoaXMgc291bmRzIHNpbXBsZSwgZXhjZXB0IGZvciBvbmUg
cHJvYmxlbTogYSBkZXN0cnVjdG9yIGlzIGEgc3BlY2lhbAotZnVuY3Rpb24gd2l0aCBzcGVjaWFs
IHN5bnRheCBhbmQgc3BlY2lhbCBzZW1hbnRpY3MsIGFuZCB0aGUKLWBNT0NLX01FVEhPRDBgIG1h
Y3JvIGRvZXNuJ3Qgd29yayBmb3IgaXQ6Ci0KLWBgYAotICBNT0NLX01FVEhPRDAofk1vY2tGb28s
IHZvaWQoKSk7ICAvLyBXb24ndCBjb21waWxlIQotYGBgCi0KLVRoZSBnb29kIG5ld3MgaXMgdGhh
dCB5b3UgY2FuIHVzZSBhIHNpbXBsZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhlIHNhbWUKLWVmZmVj
dC4gRmlyc3QsIGFkZCBhIG1vY2sgZnVuY3Rpb24gYERpZSgpYCB0byB5b3VyIG1vY2sgY2xhc3Mg
YW5kIGNhbGwKLWl0IGluIHRoZSBkZXN0cnVjdG9yLCBsaWtlIHRoaXM6Ci0KLWBgYAotY2xhc3Mg
TW9ja0ZvbyA6IHB1YmxpYyBGb28gewotICAuLi4KLSAgLy8gQWRkIHRoZSBmb2xsb3dpbmcgdHdv
IGxpbmVzIHRvIHRoZSBtb2NrIGNsYXNzLgotICBNT0NLX01FVEhPRDAoRGllLCB2b2lkKCkpOwot
ICB2aXJ0dWFsIH5Nb2NrRm9vKCkgeyBEaWUoKTsgfQotfTsKLWBgYAotCi0oSWYgdGhlIG5hbWUg
YERpZSgpYCBjbGFzaGVzIHdpdGggYW4gZXhpc3Rpbmcgc3ltYm9sLCBjaG9vc2UgYW5vdGhlcgot
bmFtZS4pIE5vdywgd2UgaGF2ZSB0cmFuc2xhdGVkIHRoZSBwcm9ibGVtIG9mIHRlc3Rpbmcgd2hl
biBhIGBNb2NrRm9vYAotb2JqZWN0IGRpZXMgdG8gdGVzdGluZyB3aGVuIGl0cyBgRGllKClgIG1l
dGhvZCBpcyBjYWxsZWQ6Ci0KLWBgYAotICBNb2NrRm9vKiBmb28gPSBuZXcgTW9ja0ZvbzsKLSAg
TW9ja0JhciogYmFyID0gbmV3IE1vY2tCYXI7Ci0gIC4uLgotICB7Ci0gICAgSW5TZXF1ZW5jZSBz
OwotCi0gICAgLy8gRXhwZWN0cyAqZm9vIHRvIGRpZSBhZnRlciBiYXItPkEoKSBhbmQgYmVmb3Jl
IGJhci0+QigpLgotICAgIEVYUEVDVF9DQUxMKCpiYXIsIEEoKSk7Ci0gICAgRVhQRUNUX0NBTEwo
KmZvbywgRGllKCkpOwotICAgIEVYUEVDVF9DQUxMKCpiYXIsIEIoKSk7Ci0gIH0KLWBgYAotCi1B
bmQgdGhhdCdzIHRoYXQuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIGFuZCBUaHJlYWRzICMjCi0K
LSoqSU1QT1JUQU5UIE5PVEU6KiogV2hhdCB3ZSBkZXNjcmliZSBpbiB0aGlzIHJlY2lwZSBpcyAq
Kk9OTFkqKiB0cnVlIG9uCi1wbGF0Zm9ybXMgd2hlcmUgR29vZ2xlIE1vY2sgaXMgdGhyZWFkLXNh
ZmUuIEN1cnJlbnRseSB0aGVzZSBhcmUgb25seQotcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGUg
cHRocmVhZHMgbGlicmFyeSAodGhpcyBpbmNsdWRlcyBMaW51eCBhbmQgTWFjKS4KLVRvIG1ha2Ug
aXQgdGhyZWFkLXNhZmUgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG9ubHkgbmVlZCB0byBpbXBsZW1l
bnQKLXNvbWUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvbnMgaW4gYCJndGVzdC9pbnRlcm5hbC9n
dGVzdC1wb3J0LmgiYC4KLQotSW4gYSAqKnVuaXQqKiB0ZXN0LCBpdCdzIGJlc3QgaWYgeW91IGNv
dWxkIGlzb2xhdGUgYW5kIHRlc3QgYSBwaWVjZSBvZgotY29kZSBpbiBhIHNpbmdsZS10aHJlYWRl
ZCBjb250ZXh0LiBUaGF0IGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgYW5kCi1kZWFkIGxvY2tzLCBh
bmQgbWFrZXMgZGVidWdnaW5nIHlvdXIgdGVzdCBtdWNoIGVhc2llci4KLQotWWV0IG1hbnkgcHJv
Z3JhbXMgYXJlIG11bHRpLXRocmVhZGVkLCBhbmQgc29tZXRpbWVzIHRvIHRlc3Qgc29tZXRoaW5n
Ci13ZSBuZWVkIHRvIHBvdW5kIG9uIGl0IGZyb20gbW9yZSB0aGFuIG9uZSB0aHJlYWQuIEdvb2ds
ZSBNb2NrIHdvcmtzCi1mb3IgdGhpcyBwdXJwb3NlIHRvby4KLQotUmVtZW1iZXIgdGhlIHN0ZXBz
IGZvciB1c2luZyBhIG1vY2s6Ci0KLSAgMS4gQ3JlYXRlIGEgbW9jayBvYmplY3QgYGZvb2AuCi0g
IDEuIFNldCBpdHMgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlvbnMgdXNpbmcgYE9OX0NB
TEwoKWAgYW5kIGBFWFBFQ1RfQ0FMTCgpYC4KLSAgMS4gVGhlIGNvZGUgdW5kZXIgdGVzdCBjYWxs
cyBtZXRob2RzIG9mIGBmb29gLgotICAxLiBPcHRpb25hbGx5LCB2ZXJpZnkgYW5kIHJlc2V0IHRo
ZSBtb2NrLgotICAxLiBEZXN0cm95IHRoZSBtb2NrIHlvdXJzZWxmLCBvciBsZXQgdGhlIGNvZGUg
dW5kZXIgdGVzdCBkZXN0cm95IGl0LiBUaGUgZGVzdHJ1Y3RvciB3aWxsIGF1dG9tYXRpY2FsbHkg
dmVyaWZ5IGl0LgotCi1JZiB5b3UgZm9sbG93IHRoZSBmb2xsb3dpbmcgc2ltcGxlIHJ1bGVzLCB5
b3VyIG1vY2tzIGFuZCB0aHJlYWRzIGNhbgotbGl2ZSBoYXBwaWx5IHRvZ2V0ZXI6Ci0KLSAgKiBF
eGVjdXRlIHlvdXIgX3Rlc3QgY29kZV8gKGFzIG9wcG9zZWQgdG8gdGhlIGNvZGUgYmVpbmcgdGVz
dGVkKSBpbiBfb25lXyB0aHJlYWQuIFRoaXMgbWFrZXMgeW91ciB0ZXN0IGVhc3kgdG8gZm9sbG93
LgotICAqIE9idmlvdXNseSwgeW91IGNhbiBkbyBzdGVwICMxIHdpdGhvdXQgbG9ja2luZy4KLSAg
KiBXaGVuIGRvaW5nIHN0ZXAgIzIgYW5kICM1LCBtYWtlIHN1cmUgbm8gb3RoZXIgdGhyZWFkIGlz
IGFjY2Vzc2luZyBgZm9vYC4gT2J2aW91cyB0b28sIGh1aD8KLSAgKiAjMyBhbmQgIzQgY2FuIGJl
IGRvbmUgZWl0aGVyIGluIG9uZSB0aHJlYWQgb3IgaW4gbXVsdGlwbGUgdGhyZWFkcyAtIGFueXdh
eSB5b3Ugd2FudC4gR29vZ2xlIE1vY2sgdGFrZXMgY2FyZSBvZiB0aGUgbG9ja2luZywgc28geW91
IGRvbid0IGhhdmUgdG8gZG8gYW55IC0gdW5sZXNzIHJlcXVpcmVkIGJ5IHlvdXIgdGVzdCBsb2dp
Yy4KLQotSWYgeW91IHZpb2xhdGUgdGhlIHJ1bGVzIChmb3IgZXhhbXBsZSwgaWYgeW91IHNldCBl
eHBlY3RhdGlvbnMgb24gYQotbW9jayB3aGlsZSBhbm90aGVyIHRocmVhZCBpcyBjYWxsaW5nIGl0
cyBtZXRob2RzKSwgeW91IGdldCB1bmRlZmluZWQKLWJlaGF2aW9yLiBUaGF0J3Mgbm90IGZ1biwg
c28gZG9uJ3QgZG8gaXQuCi0KLUdvb2dsZSBNb2NrIGd1YXJhbnRlZXMgdGhhdCB0aGUgYWN0aW9u
IGZvciBhIG1vY2sgZnVuY3Rpb24gaXMgZG9uZSBpbgotdGhlIHNhbWUgdGhyZWFkIHRoYXQgY2Fs
bGVkIHRoZSBtb2NrIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwgaW4KLQotYGBgCi0gIEVYUEVDVF9D
QUxMKG1vY2ssIEZvbygxKSkKLSAgICAgIC5XaWxsT25jZShhY3Rpb24xKTsKLSAgRVhQRUNUX0NB
TEwobW9jaywgRm9vKDIpKQotICAgICAgLldpbGxPbmNlKGFjdGlvbjIpOwotYGBgCi0KLWlmIGBG
b28oMSlgIGlzIGNhbGxlZCBpbiB0aHJlYWQgMSBhbmQgYEZvbygyKWAgaXMgY2FsbGVkIGluIHRo
cmVhZCAyLAotR29vZ2xlIE1vY2sgd2lsbCBleGVjdXRlIGBhY3Rpb24xYCBpbiB0aHJlYWQgMSBh
bmQgYGFjdGlvbjJgIGluIHRocmVhZAotMi4KLQotR29vZ2xlIE1vY2sgZG9lcyBfbm90XyBpbXBv
c2UgYSBzZXF1ZW5jZSBvbiBhY3Rpb25zIHBlcmZvcm1lZCBpbgotZGlmZmVyZW50IHRocmVhZHMg
KGRvaW5nIHNvIG1heSBjcmVhdGUgZGVhZGxvY2tzIGFzIHRoZSBhY3Rpb25zIG1heQotbmVlZCB0
byBjb29wZXJhdGUpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4ZWN1dGlvbiBvZiBgYWN0aW9uMWAg
YW5kCi1gYWN0aW9uMmAgaW4gdGhlIGFib3ZlIGV4YW1wbGUgX21heV8gaW50ZXJsZWF2ZS4gSWYg
dGhpcyBpcyBhIHByb2JsZW0sCi15b3Ugc2hvdWxkIGFkZCBwcm9wZXIgc3luY2hyb25pemF0aW9u
IGxvZ2ljIHRvIGBhY3Rpb24xYCBhbmQgYGFjdGlvbjJgCi10byBtYWtlIHRoZSB0ZXN0IHRocmVh
ZC1zYWZlLgotCi0KLUFsc28sIHJlbWVtYmVyIHRoYXQgYERlZmF1bHRWYWx1ZTxUPmAgaXMgYSBn
bG9iYWwgcmVzb3VyY2UgdGhhdAotcG90ZW50aWFsbHkgYWZmZWN0cyBfYWxsXyBsaXZpbmcgbW9j
ayBvYmplY3RzIGluIHlvdXIKLXByb2dyYW0uIE5hdHVyYWxseSwgeW91IHdvbid0IHdhbnQgdG8g
bWVzcyB3aXRoIGl0IGZyb20gbXVsdGlwbGUKLXRocmVhZHMgb3Igd2hlbiB0aGVyZSBzdGlsbCBh
cmUgbW9ja3MgaW4gYWN0aW9uLgotCi0jIyBDb250cm9sbGluZyBIb3cgTXVjaCBJbmZvcm1hdGlv
biBHb29nbGUgTW9jayBQcmludHMgIyMKLQotV2hlbiBHb29nbGUgTW9jayBzZWVzIHNvbWV0aGlu
ZyB0aGF0IGhhcyB0aGUgcG90ZW50aWFsIG9mIGJlaW5nIGFuCi1lcnJvciAoZS5nLiBhIG1vY2sg
ZnVuY3Rpb24gd2l0aCBubyBleHBlY3RhdGlvbiBpcyBjYWxsZWQsIGEuay5hLiBhbgotdW5pbnRl
cmVzdGluZyBjYWxsLCB3aGljaCBpcyBhbGxvd2VkIGJ1dCBwZXJoYXBzIHlvdSBmb3Jnb3QgdG8K
LWV4cGxpY2l0bHkgYmFuIHRoZSBjYWxsKSwgaXQgcHJpbnRzIHNvbWUgd2FybmluZyBtZXNzYWdl
cywgaW5jbHVkaW5nCi10aGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIHJldHVy
biB2YWx1ZS4gSG9wZWZ1bGx5IHRoaXMKLXdpbGwgcmVtaW5kIHlvdSB0byB0YWtlIGEgbG9vayBh
bmQgc2VlIGlmIHRoZXJlIGlzIGluZGVlZCBhIHByb2JsZW0uCi0KLVNvbWV0aW1lcyB5b3UgYXJl
IGNvbmZpZGVudCB0aGF0IHlvdXIgdGVzdHMgYXJlIGNvcnJlY3QgYW5kIG1heSBub3QKLWFwcHJl
Y2lhdGUgc3VjaCBmcmllbmRseSBtZXNzYWdlcy4gU29tZSBvdGhlciB0aW1lcywgeW91IGFyZSBk
ZWJ1Z2dpbmcKLXlvdXIgdGVzdHMgb3IgbGVhcm5pbmcgYWJvdXQgdGhlIGJlaGF2aW9yIG9mIHRo
ZSBjb2RlIHlvdSBhcmUgdGVzdGluZywKLWFuZCB3aXNoIHlvdSBjb3VsZCBvYnNlcnZlIGV2ZXJ5
IG1vY2sgY2FsbCB0aGF0IGhhcHBlbnMgKGluY2x1ZGluZwotYXJndW1lbnQgdmFsdWVzIGFuZCB0
aGUgcmV0dXJuIHZhbHVlKS4gQ2xlYXJseSwgb25lIHNpemUgZG9lc24ndCBmaXQKLWFsbC4KLQot
WW91IGNhbiBjb250cm9sIGhvdyBtdWNoIEdvb2dsZSBNb2NrIHRlbGxzIHlvdSB1c2luZyB0aGUK
LWAtLWdtb2NrX3ZlcmJvc2U9TEVWRUxgIGNvbW1hbmQtbGluZSBmbGFnLCB3aGVyZSBgTEVWRUxg
IGlzIGEgc3RyaW5nCi13aXRoIHRocmVlIHBvc3NpYmxlIHZhbHVlczoKLQotICAqIGBpbmZvYDog
R29vZ2xlIE1vY2sgd2lsbCBwcmludCBhbGwgaW5mb3JtYXRpb25hbCBtZXNzYWdlcywgd2Fybmlu
Z3MsIGFuZCBlcnJvcnMgKG1vc3QgdmVyYm9zZSkuIEF0IHRoaXMgc2V0dGluZywgR29vZ2xlIE1v
Y2sgd2lsbCBhbHNvIGxvZyBhbnkgY2FsbHMgdG8gdGhlIGBPTl9DQUxML0VYUEVDVF9DQUxMYCBt
YWNyb3MuCi0gICogYHdhcm5pbmdgOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGJvdGggd2Fybmlu
Z3MgYW5kIGVycm9ycyAobGVzcyB2ZXJib3NlKS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KLSAgKiBg
ZXJyb3JgOiBHb29nbGUgTW9jayB3aWxsIHByaW50IGVycm9ycyBvbmx5IChsZWFzdCB2ZXJib3Nl
KS4KLQotQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhZGp1c3QgdGhlIHZhbHVlIG9mIHRoYXQgZmxh
ZyBmcm9tIHdpdGhpbiB5b3VyCi10ZXN0cyBsaWtlIHNvOgotCi1gYGAKLSAgOjp0ZXN0aW5nOjpG
TEFHU19nbW9ja192ZXJib3NlID0gImVycm9yIjsKLWBgYAotCi1Ob3csIGp1ZGljaW91c2x5IHVz
ZSB0aGUgcmlnaHQgZmxhZyB0byBlbmFibGUgR29vZ2xlIE1vY2sgc2VydmUgeW91IGJldHRlciEK
LQotIyMgR2FpbmluZyBTdXBlciBWaXNpb24gaW50byBNb2NrIENhbGxzICMjCi0KLVlvdSBoYXZl
IGEgdGVzdCB1c2luZyBHb29nbGUgTW9jay4gSXQgZmFpbHM6IEdvb2dsZSBNb2NrIHRlbGxzIHlv
dQotdGhhdCBzb21lIGV4cGVjdGF0aW9ucyBhcmVuJ3Qgc2F0aXNmaWVkLiBIb3dldmVyLCB5b3Ug
YXJlbid0IHN1cmUgd2h5OgotSXMgdGhlcmUgYSB0eXBvIHNvbWV3aGVyZSBpbiB0aGUgbWF0Y2hl
cnM/IERpZCB5b3UgbWVzcyB1cCB0aGUgb3JkZXIKLW9mIHRoZSBgRVhQRUNUX0NBTExgcz8gT3Ig
aXMgdGhlIGNvZGUgdW5kZXIgdGVzdCBkb2luZyBzb21ldGhpbmcKLXdyb25nPyAgSG93IGNhbiB5
b3UgZmluZCBvdXQgdGhlIGNhdXNlPwotCi1Xb24ndCBpdCBiZSBuaWNlIGlmIHlvdSBoYXZlIFgt
cmF5IHZpc2lvbiBhbmQgY2FuIGFjdHVhbGx5IHNlZSB0aGUKLXRyYWNlIG9mIGFsbCBgRVhQRUNU
X0NBTExgcyBhbmQgbW9jayBtZXRob2QgY2FsbHMgYXMgdGhleSBhcmUgbWFkZT8KLUZvciBlYWNo
IGNhbGwsIHdvdWxkIHlvdSBsaWtlIHRvIHNlZSBpdHMgYWN0dWFsIGFyZ3VtZW50IHZhbHVlcyBh
bmQKLXdoaWNoIGBFWFBFQ1RfQ0FMTGAgR29vZ2xlIE1vY2sgdGhpbmtzIGl0IG1hdGNoZXM/Ci0K
LVlvdSBjYW4gdW5sb2NrIHRoaXMgcG93ZXIgYnkgcnVubmluZyB5b3VyIHRlc3Qgd2l0aCB0aGUK
LWAtLWdtb2NrX3ZlcmJvc2U9aW5mb2AgZmxhZy4gRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSB0ZXN0
IHByb2dyYW06Ci0KLWBgYAotdXNpbmcgdGVzdGluZzo6XzsKLXVzaW5nIHRlc3Rpbmc6Okhhc1N1
YnN0cjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLQotY2xhc3MgTW9ja0ZvbyB7Ci0gcHVibGlj
OgotICBNT0NLX01FVEhPRDIoRiwgdm9pZChjb25zdCBzdHJpbmcmIHgsIGNvbnN0IHN0cmluZyYg
eSkpOwotfTsKLQotVEVTVChGb28sIEJhcikgewotICBNb2NrRm9vIG1vY2s7Ci0gIEVYUEVDVF9D
QUxMKG1vY2ssIEYoXywgXykpLldpbGxSZXBlYXRlZGx5KFJldHVybigpKTsKLSAgRVhQRUNUX0NB
TEwobW9jaywgRigiYSIsICJiIikpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJjIiwgSGFzU3Vi
c3RyKCJkIikpKTsKLQotICBtb2NrLkYoImEiLCAiZ29vZCIpOwotICBtb2NrLkYoImEiLCAiYiIp
OwotfQotYGBgCi0KLWlmIHlvdSBydW4gaXQgd2l0aCBgLS1nbW9ja192ZXJib3NlPWluZm9gLCB5
b3Ugd2lsbCBzZWUgdGhpcyBvdXRwdXQ6Ci0KLWBgYAotWyBSVU4gICAgICBdIEZvby5CYXIKLQot
Zm9vX3Rlc3QuY2M6MTQ6IEVYUEVDVF9DQUxMKG1vY2ssIEYoXywgXykpIGludm9rZWQKLWZvb190
ZXN0LmNjOjE1OiBFWFBFQ1RfQ0FMTChtb2NrLCBGKCJhIiwgImIiKSkgaW52b2tlZAotZm9vX3Rl
c3QuY2M6MTY6IEVYUEVDVF9DQUxMKG1vY2ssIEYoImMiLCBIYXNTdWJzdHIoImQiKSkpIGludm9r
ZWQKLWZvb190ZXN0LmNjOjE0OiBNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FM
TChtb2NrLCBGKF8sIF8pKS4uLgotICAgIEZ1bmN0aW9uIGNhbGw6IEYoQDB4N2ZmZjdjOGRhZDQw
ImEiLCBAMHg3ZmZmN2M4ZGFkMTAiZ29vZCIpCi1mb29fdGVzdC5jYzoxNTogTW9jayBmdW5jdGlv
biBjYWxsIG1hdGNoZXMgRVhQRUNUX0NBTEwobW9jaywgRigiYSIsICJiIikpLi4uCi0gICAgRnVu
Y3Rpb24gY2FsbDogRihAMHg3ZmZmN2M4ZGFkYTAiYSIsIEAweDdmZmY3YzhkYWQ3MCJiIikKLWZv
b190ZXN0LmNjOjE2OiBGYWlsdXJlCi1BY3R1YWwgZnVuY3Rpb24gY2FsbCBjb3VudCBkb2Vzbid0
IG1hdGNoIEVYUEVDVF9DQUxMKG1vY2ssIEYoImMiLCBIYXNTdWJzdHIoImQiKSkpLi4uCi0gICAg
ICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBuZXZl
ciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gRm9vLkJhcgot
YGBgCi0KLVN1cHBvc2UgdGhlIGJ1ZyBpcyB0aGF0IHRoZSBgImMiYCBpbiB0aGUgdGhpcmQgYEVY
UEVDVF9DQUxMYCBpcyBhIHR5cG8KLWFuZCBzaG91bGQgYWN0dWFsbHkgYmUgYCJhImAuIFdpdGgg
dGhlIGFib3ZlIG1lc3NhZ2UsIHlvdSBzaG91bGQgc2VlCi10aGF0IHRoZSBhY3R1YWwgYEYoImEi
LCAiZ29vZCIpYCBjYWxsIGlzIG1hdGNoZWQgYnkgdGhlIGZpcnN0Ci1gRVhQRUNUX0NBTExgLCBu
b3QgdGhlIHRoaXJkIGFzIHlvdSB0aG91Z2h0LiBGcm9tIHRoYXQgaXQgc2hvdWxkIGJlCi1vYnZp
b3VzIHRoYXQgdGhlIHRoaXJkIGBFWFBFQ1RfQ0FMTGAgaXMgd3JpdHRlbiB3cm9uZy4gQ2FzZSBz
b2x2ZWQuCi0KLSMjIFJ1bm5pbmcgVGVzdHMgaW4gRW1hY3MgIyMKLQotSWYgeW91IGJ1aWxkIGFu
ZCBydW4geW91ciB0ZXN0cyBpbiBFbWFjcywgdGhlIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBvZgot
R29vZ2xlIE1vY2sgYW5kIFtHb29nbGUgVGVzdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dv
b2dsZXRlc3QvKQotZXJyb3JzIHdpbGwgYmUgaGlnaGxpZ2h0ZWQuIEp1c3QgcHJlc3MgYDxFbnRl
cj5gIG9uIG9uZSBvZiB0aGVtIGFuZAoteW91J2xsIGJlIHRha2VuIHRvIHRoZSBvZmZlbmRpbmcg
bGluZS4gT3IsIHlvdSBjYW4ganVzdCB0eXBlIGBDLXggYGAKLXRvIGp1bXAgdG8gdGhlIG5leHQg
ZXJyb3IuCi0KLVRvIG1ha2UgaXQgZXZlbiBlYXNpZXIsIHlvdSBjYW4gYWRkIHRoZSBmb2xsb3dp
bmcgbGluZXMgdG8geW91cgotYH4vLmVtYWNzYCBmaWxlOgotCi1gYGAKLShnbG9iYWwtc2V0LWtl
eSAiXE0tbSIgICAnY29tcGlsZSkgIDsgbSBpcyBmb3IgbWFrZQotKGdsb2JhbC1zZXQta2V5IFtN
LWRvd25dICduZXh0LWVycm9yKQotKGdsb2JhbC1zZXQta2V5IFtNLXVwXSAgICcobGFtYmRhICgp
IChpbnRlcmFjdGl2ZSkgKG5leHQtZXJyb3IgLTEpKSkKLWBgYAotCi1UaGVuIHlvdSBjYW4gdHlw
ZSBgTS1tYCB0byBzdGFydCBhIGJ1aWxkLCBvciBgTS11cGAvYE0tZG93bmAgdG8gbW92ZQotYmFj
ayBhbmQgZm9ydGggYmV0d2VlbiBlcnJvcnMuCi0KLSMjIEZ1c2luZyBHb29nbGUgTW9jayBTb3Vy
Y2UgRmlsZXMgIyMKLQotR29vZ2xlIE1vY2sncyBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBk
b3plbnMgb2YgZmlsZXMgKGV4Y2x1ZGluZwotaXRzIG93biB0ZXN0cykuICBTb21ldGltZXMgeW91
IG1heSB3YW50IHRoZW0gdG8gYmUgcGFja2FnZWQgdXAgaW4KLWZld2VyIGZpbGVzIGluc3RlYWQs
IHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5k
IHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRh
bAotUHl0aG9uIHNjcmlwdCBgZnVzZV9nbW9ja19maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2Ag
ZGlyZWN0b3J5Ci0oc3RhcnRpbmcgd2l0aCByZWxlYXNlIDEuMi4wKS4gIEFzc3VtaW5nIHlvdSBo
YXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUKLWluc3RhbGxlZCBvbiB5b3VyIG1hY2hpbmUsIGp1c3Qg
Z28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9nbW9ja19maWxl
cy5weSBPVVRQVVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElS
YCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAsIGBn
bW9jay9nbW9jay5oYCwgYW5kIGBnbW9jay1ndGVzdC1hbGwuY2NgIGluIGl0LgotVGhlc2UgdGhy
ZWUgZmlsZXMgY29udGFpbiBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jayAo
YW5kCi1Hb29nbGUgVGVzdCkuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZSB5b3Ugd2FudCBh
bmQgeW91IGFyZSByZWFkeQotdG8gd3JpdGUgdGVzdHMgYW5kIHVzZSBtb2Nrcy4gIFlvdSBjYW4g
dXNlIHRoZQotW3NjcnB0cy90ZXN0L01ha2VmaWxlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlbW9jay9zb3VyY2UvYnJvd3NlL3RydW5rL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkgZmls
ZSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBjb21waWxlIHlvdXIgdGVzdHMKLWFnYWluc3QgdGhl
bS4KLQotIyBFeHRlbmRpbmcgR29vZ2xlIE1vY2sgIwotCi0jIyBXcml0aW5nIE5ldyBNYXRjaGVy
cyBRdWlja2x5ICMjCi0KLVRoZSBgTUFUQ0hFUipgIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVz
ZWQgdG8gZGVmaW5lIGN1c3RvbSBtYXRjaGVycwotZWFzaWx5LiAgVGhlIHN5bnRheDoKLQotYGBg
Ci1NQVRDSEVSKG5hbWUsIGRlc2NyaXB0aW9uX3N0cmluZ19leHByZXNzaW9uKSB7IHN0YXRlbWVu
dHM7IH0KLWBgYAotCi13aWxsIGRlZmluZSBhIG1hdGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0
aGF0IGV4ZWN1dGVzIHRoZQotc3RhdGVtZW50cywgd2hpY2ggbXVzdCByZXR1cm4gYSBgYm9vbGAg
dG8gaW5kaWNhdGUgaWYgdGhlIG1hdGNoCi1zdWNjZWVkcy4gIEluc2lkZSB0aGUgc3RhdGVtZW50
cywgeW91IGNhbiByZWZlciB0byB0aGUgdmFsdWUgYmVpbmcKLW1hdGNoZWQgYnkgYGFyZ2AsIGFu
ZCByZWZlciB0byBpdHMgdHlwZSBieSBgYXJnX3R5cGVgLgotCi1UaGUgZGVzY3JpcHRpb24gc3Ry
aW5nIGlzIGEgYHN0cmluZ2AtdHlwZWQgZXhwcmVzc2lvbiB0aGF0IGRvY3VtZW50cwotd2hhdCB0
aGUgbWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZmFpbHVyZSBtZXNz
YWdlCi13aGVuIHRoZSBtYXRjaCBmYWlscy4gIEl0IGNhbiAoYW5kIHNob3VsZCkgcmVmZXJlbmNl
IHRoZSBzcGVjaWFsCi1gYm9vbGAgdmFyaWFibGUgYG5lZ2F0aW9uYCwgYW5kIHNob3VsZCBldmFs
dWF0ZSB0byB0aGUgZGVzY3JpcHRpb24gb2YKLXRoZSBtYXRjaGVyIHdoZW4gYG5lZ2F0aW9uYCBp
cyBgZmFsc2VgLCBvciB0aGF0IG9mIHRoZSBtYXRjaGVyJ3MKLW5lZ2F0aW9uIHdoZW4gYG5lZ2F0
aW9uYCBpcyBgdHJ1ZWAuCi0KLUZvciBjb252ZW5pZW5jZSwgd2UgYWxsb3cgdGhlIGRlc2NyaXB0
aW9uIHN0cmluZyB0byBiZSBlbXB0eSAoYCIiYCksCi1pbiB3aGljaCBjYXNlIEdvb2dsZSBNb2Nr
IHdpbGwgdXNlIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUKLW1hdGNoZXIgbmFtZSBhcyB0
aGUgZGVzY3JpcHRpb24uCi0KLUZvciBleGFtcGxlOgotYGBgCi1NQVRDSEVSKElzRGl2aXNpYmxl
Qnk3LCAiIikgeyByZXR1cm4gKGFyZyAlIDcpID09IDA7IH0KLWBgYAotYWxsb3dzIHlvdSB0byB3
cml0ZQotYGBgCi0gIC8vIEV4cGVjdHMgbW9ja19mb28uQmFyKG4pIHRvIGJlIGNhbGxlZCB3aGVy
ZSBuIGlzIGRpdmlzaWJsZSBieSA3LgotICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgQmFyKElzRGl2
aXNpYmxlQnk3KCkpKTsKLWBgYAotb3IsCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6Tm90OwotLi4u
Ci0gIEVYUEVDVF9USEFUKHNvbWVfZXhwcmVzc2lvbiwgSXNEaXZpc2libGVCeTcoKSk7Ci0gIEVY
UEVDVF9USEFUKHNvbWVfb3RoZXJfZXhwcmVzc2lvbiwgTm90KElzRGl2aXNpYmxlQnk3KCkpKTsK
LWBgYAotSWYgdGhlIGFib3ZlIGFzc2VydGlvbnMgZmFpbCwgdGhleSB3aWxsIHByaW50IHNvbWV0
aGluZyBsaWtlOgotYGBgCi0gIFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24KLSAgRXhwZWN0ZWQ6
IGlzIGRpdmlzaWJsZSBieSA3Ci0gICAgQWN0dWFsOiAyNwotLi4uCi0gIFZhbHVlIG9mOiBzb21l
X290aGVyX2V4cHJlc3Npb24KLSAgRXhwZWN0ZWQ6IG5vdCAoaXMgZGl2aXNpYmxlIGJ5IDcpCi0g
ICAgQWN0dWFsOiAyMQotYGBgCi13aGVyZSB0aGUgZGVzY3JpcHRpb25zIGAiaXMgZGl2aXNpYmxl
IGJ5IDciYCBhbmQgYCJub3QgKGlzIGRpdmlzaWJsZQotYnkgNykiYCBhcmUgYXV0b21hdGljYWxs
eSBjYWxjdWxhdGVkIGZyb20gdGhlIG1hdGNoZXIgbmFtZQotYElzRGl2aXNpYmxlQnk3YC4KLQot
QXMgeW91IG1heSBoYXZlIG5vdGljZWQsIHRoZSBhdXRvLWdlbmVyYXRlZCBkZXNjcmlwdGlvbnMg
KGVzcGVjaWFsbHkKLXRob3NlIGZvciB0aGUgbmVnYXRpb24pIG1heSBub3QgYmUgc28gZ3JlYXQu
IFlvdSBjYW4gYWx3YXlzIG92ZXJyaWRlCi10aGVtIHdpdGggYSBzdHJpbmcgZXhwcmVzc2lvbiBv
ZiB5b3VyIG93bjoKLWBgYAotTUFUQ0hFUihJc0RpdmlzaWJsZUJ5Nywgc3RkOjpzdHJpbmcobmVn
YXRpb24gPyAiaXNuJ3QiIDogImlzIikgKwotICAgICAgICAgICAgICAgICAgICAgICAgIiBkaXZp
c2libGUgYnkgNyIpIHsKLSAgcmV0dXJuIChhcmcgJSA3KSA9PSAwOwotfQotYGBgCi0KLU9wdGlv
bmFsbHksIHlvdSBjYW4gc3RyZWFtIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYSBoaWRkZW4g
YXJndW1lbnQKLW5hbWVkIGByZXN1bHRfbGlzdGVuZXJgIHRvIGV4cGxhaW4gdGhlIG1hdGNoIHJl
c3VsdC4gRm9yIGV4YW1wbGUsIGEKLWJldHRlciBkZWZpbml0aW9uIG9mIGBJc0RpdmlzaWJsZUJ5
N2AgaXM6Ci1gYGAKLU1BVENIRVIoSXNEaXZpc2libGVCeTcsICIiKSB7Ci0gIGlmICgoYXJnICUg
NykgPT0gMCkKLSAgICByZXR1cm4gdHJ1ZTsKLQotICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJ0aGUg
cmVtYWluZGVyIGlzICIgPDwgKGFyZyAlIDcpOwotICByZXR1cm4gZmFsc2U7Ci19Ci1gYGAKLQot
V2l0aCB0aGlzIGRlZmluaXRpb24sIHRoZSBhYm92ZSBhc3NlcnRpb24gd2lsbCBnaXZlIGEgYmV0
dGVyIG1lc3NhZ2U6Ci1gYGAKLSAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgotICBFeHBlY3Rl
ZDogaXMgZGl2aXNpYmxlIGJ5IDcKLSAgICBBY3R1YWw6IDI3ICh0aGUgcmVtYWluZGVyIGlzIDYp
Ci1gYGAKLQotWW91IHNob3VsZCBsZXQgYE1hdGNoQW5kRXhwbGFpbigpYCBwcmludCBfYW55IGFk
ZGl0aW9uYWwgaW5mb3JtYXRpb25fCi10aGF0IGNhbiBoZWxwIGEgdXNlciB1bmRlcnN0YW5kIHRo
ZSBtYXRjaCByZXN1bHQuIE5vdGUgdGhhdCBpdCBzaG91bGQKLWV4cGxhaW4gd2h5IHRoZSBtYXRj
aCBzdWNjZWVkcyBpbiBjYXNlIG9mIGEgc3VjY2VzcyAodW5sZXNzIGl0J3MKLW9idmlvdXMpIC0g
dGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgbWF0Y2hlciBpcyB1c2VkIGluc2lkZQotYE5vdCgpYC4g
VGhlcmUgaXMgbm8gbmVlZCB0byBwcmludCB0aGUgYXJndW1lbnQgdmFsdWUgaXRzZWxmLCBhcwot
R29vZ2xlIE1vY2sgYWxyZWFkeSBwcmludHMgaXQgZm9yIHlvdS4KLQotKipOb3RlczoqKgotCi0g
IDEuIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIChgYXJnX3R5cGVgKSBpcyBk
ZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdoaWNoIHlvdSB1c2UgdGhlIG1hdGNoZXIgYW5k
IGlzIHN1cHBsaWVkIHRvIHlvdSBieSB0aGUgY29tcGlsZXIsIHNvIHlvdSBkb24ndCBuZWVkIHRv
IHdvcnJ5IGFib3V0IGRlY2xhcmluZyBpdCAobm9yIGNhbiB5b3UpLiAgVGhpcyBhbGxvd3MgdGhl
IG1hdGNoZXIgdG8gYmUgcG9seW1vcnBoaWMuICBGb3IgZXhhbXBsZSwgYElzRGl2aXNpYmxlQnk3
KClgIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFueSB0eXBlIHdoZXJlIHRoZSB2YWx1ZSBvZiBgKGFy
ZyAlIDcpID09IDBgIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhIGBib29sYC4gIElu
IHRoZSBgQmFyKElzRGl2aXNpYmxlQnk3KCkpYCBleGFtcGxlIGFib3ZlLCBpZiBtZXRob2QgYEJh
cigpYCB0YWtlcyBhbiBgaW50YCwgYGFyZ190eXBlYCB3aWxsIGJlIGBpbnRgOyBpZiBpdCB0YWtl
cyBhbiBgdW5zaWduZWQgbG9uZ2AsIGBhcmdfdHlwZWAgd2lsbCBiZSBgdW5zaWduZWQgbG9uZ2A7
IGFuZCBzbyBvbi4KLSAgMS4gR29vZ2xlIE1vY2sgZG9lc24ndCBndWFyYW50ZWUgd2hlbiBvciBo
b3cgbWFueSB0aW1lcyBhIG1hdGNoZXIgd2lsbCBiZSBpbnZva2VkLiBUaGVyZWZvcmUgdGhlIG1h
dGNoZXIgbG9naWMgbXVzdCBiZSBfcHVyZWx5IGZ1bmN0aW9uYWxfIChpLmUuIGl0IGNhbm5vdCBo
YXZlIGFueSBzaWRlIGVmZmVjdCwgYW5kIHRoZSByZXN1bHQgbXVzdCBub3QgZGVwZW5kIG9uIGFu
eXRoaW5nIG90aGVyIHRoYW4gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVy
IHBhcmFtZXRlcnMpLiBUaGlzIHJlcXVpcmVtZW50IG11c3QgYmUgc2F0aXNmaWVkIG5vIG1hdHRl
ciBob3cgeW91IGRlZmluZSB0aGUgbWF0Y2hlciAoZS5nLiB1c2luZyBvbmUgb2YgdGhlIG1ldGhv
ZHMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgcmVjaXBlcykuIEluIHBhcnRpY3VsYXIsIGEg
bWF0Y2hlciBjYW4gbmV2ZXIgY2FsbCBhIG1vY2sgZnVuY3Rpb24sIGFzIHRoYXQgd2lsbCBhZmZl
Y3QgdGhlIHN0YXRlIG9mIHRoZSBtb2NrIG9iamVjdCBhbmQgR29vZ2xlIE1vY2suCi0KLSMjIFdy
aXRpbmcgTmV3IFBhcmFtZXRlcml6ZWQgTWF0Y2hlcnMgUXVpY2tseSAjIwotCi1Tb21ldGltZXMg
eW91J2xsIHdhbnQgdG8gZGVmaW5lIGEgbWF0Y2hlciB0aGF0IGhhcyBwYXJhbWV0ZXJzLiAgRm9y
IHRoYXQgeW91Ci1jYW4gdXNlIHRoZSBtYWNybzoKLWBgYAotTUFUQ0hFUl9QKG5hbWUsIHBhcmFt
X25hbWUsIGRlc2NyaXB0aW9uX3N0cmluZykgeyBzdGF0ZW1lbnRzOyB9Ci1gYGAKLXdoZXJlIHRo
ZSBkZXNjcmlwdGlvbiBzdHJpbmcgY2FuIGJlIGVpdGhlciBgIiJgIG9yIGEgc3RyaW5nIGV4cHJl
c3Npb24KLXRoYXQgcmVmZXJlbmNlcyBgbmVnYXRpb25gIGFuZCBgcGFyYW1fbmFtZWAuCi0KLUZv
ciBleGFtcGxlOgotYGBgCi1NQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUsICIiKSB7
IHJldHVybiBhYnMoYXJnKSA9PSB2YWx1ZTsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0byB3cml0
ZToKLWBgYAotICBFWFBFQ1RfVEhBVChCbGFoKCJhIiksIEhhc0Fic29sdXRlVmFsdWUobikpOwot
YGBgCi13aGljaCBtYXkgbGVhZCB0byB0aGlzIG1lc3NhZ2UgKGFzc3VtaW5nIGBuYCBpcyAxMCk6
Ci1gYGAKLSAgVmFsdWUgb2Y6IEJsYWgoImEiKQotICBFeHBlY3RlZDogaGFzIGFic29sdXRlIHZh
bHVlIDEwCi0gICAgQWN0dWFsOiAtOQotYGBgCi0KLU5vdGUgdGhhdCBib3RoIHRoZSBtYXRjaGVy
IGRlc2NyaXB0aW9uIGFuZCBpdHMgcGFyYW1ldGVyIGFyZQotcHJpbnRlZCwgbWFraW5nIHRoZSBt
ZXNzYWdlIGh1bWFuLWZyaWVuZGx5LgotCi1JbiB0aGUgbWF0Y2hlciBkZWZpbml0aW9uIGJvZHks
IHlvdSBjYW4gd3JpdGUgYGZvb190eXBlYCB0bwotcmVmZXJlbmNlIHRoZSB0eXBlIG9mIGEgcGFy
YW1ldGVyIG5hbWVkIGBmb29gLiAgRm9yIGV4YW1wbGUsIGluIHRoZQotYm9keSBvZiBgTUFUQ0hF
Ul9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKWAgYWJvdmUsIHlvdSBjYW4gd3JpdGUKLWB2YWx1
ZV90eXBlYCB0byByZWZlciB0byB0aGUgdHlwZSBvZiBgdmFsdWVgLgotCi1Hb29nbGUgTW9jayBh
bHNvIHByb3ZpZGVzIGBNQVRDSEVSX1AyYCwgYE1BVENIRVJfUDNgLCAuLi4sIHVwIHRvCi1gTUFU
Q0hFUl9QMTBgIHRvIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVyIG1hdGNoZXJzOgotYGBgCi1NQVRD
SEVSX1BrKG5hbWUsIHBhcmFtXzEsIC4uLiwgcGFyYW1faywgZGVzY3JpcHRpb25fc3RyaW5nKSB7
IHN0YXRlbWVudHM7IH0KLWBgYAotCi1QbGVhc2Ugbm90ZSB0aGF0IHRoZSBjdXN0b20gZGVzY3Jp
cHRpb24gc3RyaW5nIGlzIGZvciBhIHBhcnRpY3VsYXIKLSoqaW5zdGFuY2UqKiBvZiB0aGUgbWF0
Y2hlciwgd2hlcmUgdGhlIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGJvdW5kIHRvCi1hY3R1YWwgdmFs
dWVzLiAgVGhlcmVmb3JlIHVzdWFsbHkgeW91J2xsIHdhbnQgdGhlIHBhcmFtZXRlciB2YWx1ZXMg
dG8KLWJlIHBhcnQgb2YgdGhlIGRlc2NyaXB0aW9uLiAgR29vZ2xlIE1vY2sgbGV0cyB5b3UgZG8g
dGhhdCBieQotcmVmZXJlbmNpbmcgdGhlIG1hdGNoZXIgcGFyYW1ldGVycyBpbiB0aGUgZGVzY3Jp
cHRpb24gc3RyaW5nCi1leHByZXNzaW9uLgotCi1Gb3IgZXhhbXBsZSwKLWBgYAotICB1c2luZyA6
OnRlc3Rpbmc6OlByaW50VG9TdHJpbmc7Ci0gIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93
LCBoaSwKLSAgICAgICAgICAgICBzdGQ6OnN0cmluZyhuZWdhdGlvbiA/ICJpc24ndCIgOiAiaXMi
KSArICIgaW4gcmFuZ2UgWyIgKwotICAgICAgICAgICAgIFByaW50VG9TdHJpbmcobG93KSArICIs
ICIgKyBQcmludFRvU3RyaW5nKGhpKSArICJdIikgewotICAgIHJldHVybiBsb3cgPD0gYXJnICYm
IGFyZyA8PSBoaTsKLSAgfQotICAuLi4KLSAgRVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0
LCA2KSk7Ci1gYGAKLXdvdWxkIGdlbmVyYXRlIGEgZmFpbHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBt
ZXNzYWdlOgotYGBgCi0gIEV4cGVjdGVkOiBpcyBpbiByYW5nZSBbNCwgNl0KLWBgYAotCi1JZiB5
b3Ugc3BlY2lmeSBgIiJgIGFzIHRoZSBkZXNjcmlwdGlvbiwgdGhlIGZhaWx1cmUgbWVzc2FnZSB3
aWxsCi1jb250YWluIHRoZSBzZXF1ZW5jZSBvZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1lIGZv
bGxvd2VkIGJ5IHRoZQotcGFyYW1ldGVyIHZhbHVlcyBwcmludGVkIGFzIGEgdHVwbGUuICBGb3Ig
ZXhhbXBsZSwKLWBgYAotICBNQVRDSEVSX1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksICIiKSB7
IC4uLiB9Ci0gIC4uLgotICBFWFBFQ1RfVEhBVCgzLCBJbkNsb3NlZFJhbmdlKDQsIDYpKTsKLWBg
YAotd291bGQgZ2VuZXJhdGUgYSBmYWlsdXJlIHRoYXQgY29udGFpbnMgdGhlIHRleHQ6Ci1gYGAK
LSAgRXhwZWN0ZWQ6IGluIGNsb3NlZCByYW5nZSAoNCwgNikKLWBgYAotCi1Gb3IgdGhlIHB1cnBv
c2Ugb2YgdHlwaW5nLCB5b3UgY2FuIHZpZXcKLWBgYAotTUFUQ0hFUl9QayhGb28sIHAxLCAuLi4s
IHBrLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgLi4uIH0KLWBgYAotYXMgc2hvcnRoYW5kIGZvcgot
YGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgot
Rm9vTWF0Y2hlclBrPHAxX3R5cGUsIC4uLiwgcGtfdHlwZT4KLUZvbyhwMV90eXBlIHAxLCAuLi4s
IHBrX3R5cGUgcGspIHsgLi4uIH0KLWBgYAotCi1XaGVuIHlvdSB3cml0ZSBgRm9vKHYxLCAuLi4s
IHZrKWAsIHRoZSBjb21waWxlciBpbmZlcnMgdGhlIHR5cGVzIG9mCi10aGUgcGFyYW1ldGVycyBg
djFgLCAuLi4sIGFuZCBgdmtgIGZvciB5b3UuICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoCi10
aGUgcmVzdWx0IG9mIHRoZSB0eXBlIGluZmVyZW5jZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSB0eXBl
cyBieQotZXhwbGljaXRseSBpbnN0YW50aWF0aW5nIHRoZSB0ZW1wbGF0ZSwgYXMgaW4gYEZvbzxs
b25nLCBib29sPig1LCBmYWxzZSlgLgotQXMgc2FpZCBlYXJsaWVyLCB5b3UgZG9uJ3QgZ2V0IHRv
IChvciBuZWVkIHRvKSBzcGVjaWZ5Ci1gYXJnX3R5cGVgIGFzIHRoYXQncyBkZXRlcm1pbmVkIGJ5
IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBtYXRjaGVyCi1pcyB1c2VkLgotCi1Zb3UgY2FuIGFz
c2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24gYEZvbyhwMSwgLi4uLCBwaylgIHRvIGEKLXZh
cmlhYmxlIG9mIHR5cGUgYEZvb01hdGNoZXJQazxwMV90eXBlLCAuLi4sIHBrX3R5cGU+YC4gIFRo
aXMgY2FuIGJlCi11c2VmdWwgd2hlbiBjb21wb3NpbmcgbWF0Y2hlcnMuICBNYXRjaGVycyB0aGF0
IGRvbid0IGhhdmUgYSBwYXJhbWV0ZXIKLW9yIGhhdmUgb25seSBvbmUgcGFyYW1ldGVyIGhhdmUg
c3BlY2lhbCB0eXBlczogeW91IGNhbiBhc3NpZ24gYEZvbygpYAotdG8gYSBgRm9vTWF0Y2hlcmAt
dHlwZWQgdmFyaWFibGUsIGFuZCBhc3NpZ24gYEZvbyhwKWAgdG8gYQotYEZvb01hdGNoZXJQPHBf
dHlwZT5gLXR5cGVkIHZhcmlhYmxlLgotCi1XaGlsZSB5b3UgY2FuIGluc3RhbnRpYXRlIGEgbWF0
Y2hlciB0ZW1wbGF0ZSB3aXRoIHJlZmVyZW5jZSB0eXBlcywKLXBhc3NpbmcgdGhlIHBhcmFtZXRl
cnMgYnkgcG9pbnRlciB1c3VhbGx5IG1ha2VzIHlvdXIgY29kZSBtb3JlCi1yZWFkYWJsZS4gIElm
LCBob3dldmVyLCB5b3Ugc3RpbGwgd2FudCB0byBwYXNzIGEgcGFyYW1ldGVyIGJ5Ci1yZWZlcmVu
Y2UsIGJlIGF3YXJlIHRoYXQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgdGhl
Ci1tYXRjaGVyIHlvdSB3aWxsIHNlZSB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0
IGJ1dCBub3QgaXRzCi1hZGRyZXNzLgotCi1Zb3UgY2FuIG92ZXJsb2FkIG1hdGNoZXJzIHdpdGgg
ZGlmZmVyZW50IG51bWJlcnMgb2YgcGFyYW1ldGVyczoKLWBgYAotTUFUQ0hFUl9QKEJsYWgsIGEs
IGRlc2NyaXB0aW9uX3N0cmluZ18xKSB7IC4uLiB9Ci1NQVRDSEVSX1AyKEJsYWgsIGEsIGIsIGRl
c2NyaXB0aW9uX3N0cmluZ18yKSB7IC4uLiB9Ci1gYGAKLQotV2hpbGUgaXQncyB0ZW1wdGluZyB0
byBhbHdheXMgdXNlIHRoZSBgTUFUQ0hFUipgIG1hY3JvcyB3aGVuIGRlZmluaW5nCi1hIG5ldyBt
YXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50aW5nCi1gTWF0Y2hlcklu
dGVyZmFjZWAgb3IgdXNpbmcgYE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoKWAgaW5zdGVhZCAoc2Vl
Ci10aGUgcmVjaXBlcyB0aGF0IGZvbGxvdyksIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gdXNl
IHRoZSBtYXRjaGVyIGEKLWxvdC4gIFdoaWxlIHRoZXNlIGFwcHJvYWNoZXMgcmVxdWlyZSBtb3Jl
IHdvcmssIHRoZXkgZ2l2ZSB5b3UgbW9yZQotY29udHJvbCBvbiB0aGUgdHlwZXMgb2YgdGhlIHZh
bHVlIGJlaW5nIG1hdGNoZWQgYW5kIHRoZSBtYXRjaGVyCi1wYXJhbWV0ZXJzLCB3aGljaCBpbiBn
ZW5lcmFsIGxlYWRzIHRvIGJldHRlciBjb21waWxlciBlcnJvciBtZXNzYWdlcwotdGhhdCBwYXkg
b2ZmIGluIHRoZSBsb25nIHJ1bi4gIFRoZXkgYWxzbyBhbGxvdyBvdmVybG9hZGluZyBtYXRjaGVy
cwotYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkIHRvIGp1c3QgYmFzZWQgb24g
dGhlIG51bWJlciBvZgotcGFyYW1ldGVycykuCi0KLSMjIFdyaXRpbmcgTmV3IE1vbm9tb3JwaGlj
IE1hdGNoZXJzICMjCi0KLUEgbWF0Y2hlciBvZiBhcmd1bWVudCB0eXBlIGBUYCBpbXBsZW1lbnRz
Ci1gOjp0ZXN0aW5nOjpNYXRjaGVySW50ZXJmYWNlPFQ+YCBhbmQgZG9lcyB0d28gdGhpbmdzOiBp
dCB0ZXN0cyB3aGV0aGVyIGEKLXZhbHVlIG9mIHR5cGUgYFRgIG1hdGNoZXMgdGhlIG1hdGNoZXIs
IGFuZCBjYW4gZGVzY3JpYmUgd2hhdCBraW5kIG9mCi12YWx1ZXMgaXQgbWF0Y2hlcy4gVGhlIGxh
dHRlciBhYmlsaXR5IGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgcmVhZGFibGUKLWVycm9yIG1lc3Nh
Z2VzIHdoZW4gZXhwZWN0YXRpb25zIGFyZSB2aW9sYXRlZC4KLQotVGhlIGludGVyZmFjZSBsb29r
cyBsaWtlIHRoaXM6Ci0KLWBgYAotY2xhc3MgTWF0Y2hSZXN1bHRMaXN0ZW5lciB7Ci0gcHVibGlj
OgotICAuLi4KLSAgLy8gU3RyZWFtcyB4IHRvIHRoZSB1bmRlcmx5aW5nIG9zdHJlYW07IGRvZXMg
bm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAvLyBpcyBOVUxMLgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5lciYgb3BlcmF0b3I8PChjb25zdCBUJiB4KTsKLQot
ICAvLyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIG9zdHJlYW0uCi0gIDo6c3RkOjpvc3RyZWFtKiBz
dHJlYW0oKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTWF0Y2hlckludGVy
ZmFjZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5NYXRjaGVySW50ZXJmYWNlKCk7Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hlciBtYXRjaGVzIHg7IGFsc28gZXhwbGFpbnMgdGhl
IG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlzdGVuZXInLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hB
bmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0ID0gMDsK
LQotICAvLyBEZXNjcmliZXMgdGhpcyBtYXRjaGVyIHRvIGFuIG9zdHJlYW0uCi0gIHZpcnR1YWwg
dm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotCi0gIC8vIERl
c2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIHRvIGFuIG9zdHJlYW0uCi0gIHZp
cnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsK
LX07Ci1gYGAKLQotSWYgeW91IG5lZWQgYSBjdXN0b20gbWF0Y2hlciBidXQgYFRydWx5KClgIGlz
IG5vdCBhIGdvb2Qgb3B0aW9uIChmb3IKLWV4YW1wbGUsIHlvdSBtYXkgbm90IGJlIGhhcHB5IHdp
dGggdGhlIHdheSBgVHJ1bHkocHJlZGljYXRlKWAKLWRlc2NyaWJlcyBpdHNlbGYsIG9yIHlvdSBt
YXkgd2FudCB5b3VyIG1hdGNoZXIgdG8gYmUgcG9seW1vcnBoaWMgYXMKLWBFcSh2YWx1ZSlgIGlz
KSwgeW91IGNhbiBkZWZpbmUgYSBtYXRjaGVyIHRvIGRvIHdoYXRldmVyIHlvdSB3YW50IGluCi10
d28gc3RlcHM6IGZpcnN0IGltcGxlbWVudCB0aGUgbWF0Y2hlciBpbnRlcmZhY2UsIGFuZCB0aGVu
IGRlZmluZSBhCi1mYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1hdGNoZXIgaW5zdGFuY2Uu
IFRoZSBzZWNvbmQgc3RlcCBpcyBub3QKLXN0cmljdGx5IG5lZWRlZCBidXQgaXQgbWFrZXMgdGhl
IHN5bnRheCBvZiB1c2luZyB0aGUgbWF0Y2hlciBuaWNlci4KLQotRm9yIGV4YW1wbGUsIHlvdSBj
YW4gZGVmaW5lIGEgbWF0Y2hlciB0byB0ZXN0IHdoZXRoZXIgYW4gYGludGAgaXMKLWRpdmlzaWJs
ZSBieSA3IGFuZCB0aGVuIHVzZSBpdCBsaWtlIHRoaXM6Ci1gYGAKLXVzaW5nIDo6dGVzdGluZzo6
TWFrZU1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6
Ok1hdGNoZXJJbnRlcmZhY2U7Ci11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7
Ci0KLWNsYXNzIERpdmlzaWJsZUJ5N01hdGNoZXIgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxp
bnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IG4sIE1h
dGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIChuICUgNykg
PT0gMDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgewotICAgICpvcyA8PCAiaXMgZGl2aXNpYmxlIGJ5IDciOwotICB9Ci0KLSAgdmly
dHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
LSAgICAqb3MgPDwgImlzIG5vdCBkaXZpc2libGUgYnkgNyI7Ci0gIH0KLX07Ci0KLWlubGluZSBN
YXRjaGVyPGludD4gRGl2aXNpYmxlQnk3KCkgewotICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IERp
dmlzaWJsZUJ5N01hdGNoZXIpOwotfQotLi4uCi0KLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoRGl2
aXNpYmxlQnk3KCkpKTsKLWBgYAotCi1Zb3UgbWF5IGltcHJvdmUgdGhlIG1hdGNoZXIgbWVzc2Fn
ZSBieSBzdHJlYW1pbmcgYWRkaXRpb25hbAotaW5mb3JtYXRpb24gdG8gdGhlIGBsaXN0ZW5lcmAg
YXJndW1lbnQgaW4gYE1hdGNoQW5kRXhwbGFpbigpYDoKLQotYGBgCi1jbGFzcyBEaXZpc2libGVC
eTdNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8aW50PiB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGludCBuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgY29u
c3QgaW50IHJlbWFpbmRlciA9IG4gJSA3OwotICAgIGlmIChyZW1haW5kZXIgIT0gMCkgewotICAg
ICAgKmxpc3RlbmVyIDw8ICJ0aGUgcmVtYWluZGVyIGlzICIgPDwgcmVtYWluZGVyOwotICAgIH0K
LSAgICByZXR1cm4gcmVtYWluZGVyID09IDA7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLVRoZW4s
IGBFWFBFQ1RfVEhBVCh4LCBEaXZpc2libGVCeTcoKSk7YCBtYXkgZ2VuZXJhbCBhIG1lc3NhZ2Ug
bGlrZSB0aGlzOgotYGBgCi1WYWx1ZSBvZjogeAotRXhwZWN0ZWQ6IGlzIGRpdmlzaWJsZSBieSA3
Ci0gIEFjdHVhbDogMjMgKHRoZSByZW1haW5kZXIgaXMgMikKLWBgYAotCi0jIyBXcml0aW5nIE5l
dyBQb2x5bW9ycGhpYyBNYXRjaGVycyAjIwotCi1Zb3UndmUgbGVhcm5lZCBob3cgdG8gd3JpdGUg
eW91ciBvd24gbWF0Y2hlcnMgaW4gdGhlIHByZXZpb3VzCi1yZWNpcGUuIEp1c3Qgb25lIHByb2Js
ZW06IGEgbWF0Y2hlciBjcmVhdGVkIHVzaW5nIGBNYWtlTWF0Y2hlcigpYCBvbmx5Ci13b3JrcyBm
b3Igb25lIHBhcnRpY3VsYXIgdHlwZSBvZiBhcmd1bWVudHMuIElmIHlvdSB3YW50IGEKLV9wb2x5
bW9ycGhpY18gbWF0Y2hlciB0aGF0IHdvcmtzIHdpdGggYXJndW1lbnRzIG9mIHNldmVyYWwgdHlw
ZXMgKGZvcgotaW5zdGFuY2UsIGBFcSh4KWAgY2FuIGJlIHVzZWQgdG8gbWF0Y2ggYSBgdmFsdWVg
IGFzIGxvbmcgYXMgYHZhbHVlYCA9PQotYHhgIGNvbXBpbGVzIC0tIGB2YWx1ZWAgYW5kIGB4YCBk
b24ndCBoYXZlIHRvIHNoYXJlIHRoZSBzYW1lIHR5cGUpLAoteW91IGNhbiBsZWFybiB0aGUgdHJp
Y2sgZnJvbSBgImdtb2NrL2dtb2NrLW1hdGNoZXJzLmgiYCBidXQgaXQncyBhIGJpdAotaW52b2x2
ZWQuCi0KLUZvcnR1bmF0ZWx5LCBtb3N0IG9mIHRoZSB0aW1lIHlvdSBjYW4gZGVmaW5lIGEgcG9s
eW1vcnBoaWMgbWF0Y2hlcgotZWFzaWx5IHdpdGggdGhlIGhlbHAgb2YgYE1ha2VQb2x5bW9ycGhp
Y01hdGNoZXIoKWAuIEhlcmUncyBob3cgeW91IGNhbgotZGVmaW5lIGBOb3ROdWxsKClgIGFzIGFu
IGV4YW1wbGU6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVy
OwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5n
OjpOb3ROdWxsOwotdXNpbmcgOjp0ZXN0aW5nOjpQb2x5bW9ycGhpY01hdGNoZXI7Ci0KLWNsYXNz
IE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRvIGltcGxlbWVudCBhIHBvbHltb3Jw
aGljIG1hdGNoZXIsIGZpcnN0IGRlZmluZSBhIENPUFlBQkxFIGNsYXNzCi0gIC8vIHRoYXQgaGFz
IHRocmVlIG1lbWJlcnMgTWF0Y2hBbmRFeHBsYWluKCksIERlc2NyaWJlVG8oKSwgYW5kCi0gIC8v
IERlc2NyaWJlTmVnYXRpb25UbygpLCBsaWtlIHRoZSBmb2xsb3dpbmcuCi0KLSAgLy8gSW4gdGhp
cyBleGFtcGxlLCB3ZSB3YW50IHRvIHVzZSBOb3ROdWxsKCkgd2l0aCBhbnkgcG9pbnRlciwgc28K
LSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgYWNjZXB0cyBhIHBvaW50ZXIgb2YgYW55IHR5cGUgYXMg
aXRzIGZpcnN0IGFyZ3VtZW50LgotICAvLyBJbiBnZW5lcmFsLCB5b3UgY2FuIGRlZmluZSBNYXRj
aEFuZEV4cGxhaW4oKSBhcyBhbiBvcmRpbmFyeSBtZXRob2Qgb3IKLSAgLy8gYSBtZXRob2QgdGVt
cGxhdGUsIG9yIGV2ZW4gb3ZlcmxvYWQgaXQuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBi
b29sIE1hdGNoQW5kRXhwbGFpbihUKiBwLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJl
c3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIHJldHVybiBwICE9IE5V
TEw7Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgdGhlIHByb3BlcnR5IG9mIGEgdmFsdWUgbWF0Y2hp
bmcgdGhpcyBtYXRjaGVyLgotICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7ICpvcyA8PCAiaXMgbm90IE5VTEwiOyB9Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBwcm9w
ZXJ0eSBvZiBhIHZhbHVlIE5PVCBtYXRjaGluZyB0aGlzIG1hdGNoZXIuCi0gIHZvaWQgRGVzY3Jp
YmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIE5VTEwi
OyB9Ci19OwotCi0vLyBUbyBjb25zdHJ1Y3QgYSBwb2x5bW9ycGhpYyBtYXRjaGVyLCBwYXNzIGFu
IGluc3RhbmNlIG9mIHRoZSBjbGFzcwotLy8gdG8gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpLiAg
Tm90ZSB0aGUgcmV0dXJuIHR5cGUuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPE5vdE51bGxN
YXRjaGVyPiBOb3ROdWxsKCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihOb3RO
dWxsTWF0Y2hlcigpKTsKLX0KLS4uLgotCi0gIEVYUEVDVF9DQUxMKGZvbywgQmFyKE5vdE51bGwo
KSkpOyAgLy8gVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBub24tTlVMTCBwb2ludGVyLgotYGBgCi0K
LSoqTm90ZToqKiBZb3VyIHBvbHltb3JwaGljIG1hdGNoZXIgY2xhc3MgZG9lcyAqKm5vdCoqIG5l
ZWQgdG8gaW5oZXJpdCBmcm9tCi1gTWF0Y2hlckludGVyZmFjZWAgb3IgYW55IG90aGVyIGNsYXNz
LCBhbmQgaXRzIG1ldGhvZHMgZG8gKipub3QqKiBuZWVkCi10byBiZSB2aXJ0dWFsLgotCi1MaWtl
IGluIGEgbW9ub21vcnBoaWMgbWF0Y2hlciwgeW91IG1heSBleHBsYWluIHRoZSBtYXRjaCByZXN1
bHQgYnkKLXN0cmVhbWluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIHRoZSBgbGlzdGVuZXJg
IGFyZ3VtZW50IGluCi1gTWF0Y2hBbmRFeHBsYWluKClgLgotCi0jIyBXcml0aW5nIE5ldyBDYXJk
aW5hbGl0aWVzICMjCi0KLUEgY2FyZGluYWxpdHkgaXMgdXNlZCBpbiBgVGltZXMoKWAgdG8gdGVs
bCBHb29nbGUgTW9jayBob3cgbWFueSB0aW1lcwoteW91IGV4cGVjdCBhIGNhbGwgdG8gb2NjdXIu
IEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBleGFjdC4gRm9yIGV4YW1wbGUsCi15b3UgY2FuIHNheSBg
QXRMZWFzdCg1KWAgb3IgYEJldHdlZW4oMiwgNClgLgotCi1JZiB0aGUgYnVpbHQtaW4gc2V0IG9m
IGNhcmRpbmFsaXRpZXMgZG9lc24ndCBzdWl0IHlvdSwgeW91IGFyZSBmcmVlIHRvCi1kZWZpbmUg
eW91ciBvd24gYnkgaW1wbGVtZW50aW5nIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlIChpbiBuYW1l
c3BhY2UKLWB0ZXN0aW5nYCk6Ci0KLWBgYAotY2xhc3MgQ2FyZGluYWxpdHlJbnRlcmZhY2Ugewot
IHB1YmxpYzoKLSAgdmlydHVhbCB+Q2FyZGluYWxpdHlJbnRlcmZhY2UoKTsKLQotICAvLyBSZXR1
cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXRpc2Z5IHRoaXMgY2FyZGluYWxp
dHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50
KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdp
bGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVk
QnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAvLyBEZXNjcmliZXMg
c2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0
cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci1gYGAKLQotRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkg
dGhhdCBhIGNhbGwgbXVzdCBvY2N1ciBldmVuIG51bWJlciBvZiB0aW1lcywKLXlvdSBjYW4gd3Jp
dGUKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkNhcmRpbmFsaXR5OwotdXNpbmcgOjp0ZXN0aW5n
OjpDYXJkaW5hbGl0eUludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWFrZUNhcmRpbmFsaXR5
OwotCi1jbGFzcyBFdmVuTnVtYmVyQ2FyZGluYWxpdHkgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQo
aW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gKGNhbGxfY291bnQgJSAyKSA9PSAw
OwotICB9Ci0KLSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxf
Y291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
RGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImNhbGxl
ZCBldmVuIG51bWJlciBvZiB0aW1lcyI7Ci0gIH0KLX07Ci0KLUNhcmRpbmFsaXR5IEV2ZW5OdW1i
ZXIoKSB7Ci0gIHJldHVybiBNYWtlQ2FyZGluYWxpdHkobmV3IEV2ZW5OdW1iZXJDYXJkaW5hbGl0
eSk7Ci19Ci0uLi4KLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigzKSkKLSAgICAgIC5UaW1lcyhF
dmVuTnVtYmVyKCkpOwotYGBgCi0KLSMjIFdyaXRpbmcgTmV3IEFjdGlvbnMgUXVpY2tseSAjIwot
Ci1JZiB0aGUgYnVpbHQtaW4gYWN0aW9ucyBkb24ndCB3b3JrIGZvciB5b3UsIGFuZCB5b3UgZmlu
ZCBpdAotaW5jb252ZW5pZW50IHRvIHVzZSBgSW52b2tlKClgLCB5b3UgY2FuIHVzZSBhIG1hY3Jv
IGZyb20gdGhlIGBBQ1RJT04qYAotZmFtaWx5IHRvIHF1aWNrbHkgZGVmaW5lIGEgbmV3IGFjdGlv
biB0aGF0IGNhbiBiZSB1c2VkIGluIHlvdXIgY29kZSBhcwotaWYgaXQncyBhIGJ1aWx0LWluIGFj
dGlvbi4KLQotQnkgd3JpdGluZwotYGBgCi1BQ1RJT04obmFtZSkgeyBzdGF0ZW1lbnRzOyB9Ci1g
YGAKLWluIGEgbmFtZXNwYWNlIHNjb3BlIChpLmUuIG5vdCBpbnNpZGUgYSBjbGFzcyBvciBmdW5j
dGlvbiksIHlvdSB3aWxsCi1kZWZpbmUgYW4gYWN0aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhh
dCBleGVjdXRlcyB0aGUgc3RhdGVtZW50cy4KLVRoZSB2YWx1ZSByZXR1cm5lZCBieSBgc3RhdGVt
ZW50c2Agd2lsbCBiZSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YKLXRoZSBhY3Rpb24uICBJ
bnNpZGUgdGhlIHN0YXRlbWVudHMsIHlvdSBjYW4gcmVmZXIgdG8gdGhlIEstdGgKLSgwLWJhc2Vk
KSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiBhcyBgYXJnS2AuICBGb3IgZXhhbXBsZToK
LWBgYAotQUNUSU9OKEluY3JlbWVudEFyZzEpIHsgcmV0dXJuICsrKCphcmcxKTsgfQotYGBgCi1h
bGxvd3MgeW91IHRvIHdyaXRlCi1gYGAKLS4uLiBXaWxsT25jZShJbmNyZW1lbnRBcmcxKCkpOwot
YGBgCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IHRoZSB0eXBlcyBvZiB0
aGUgbW9jayBmdW5jdGlvbgotYXJndW1lbnRzLiAgUmVzdCBhc3N1cmVkIHRoYXQgeW91ciBjb2Rl
IGlzIHR5cGUtc2FmZSB0aG91Z2g6Ci15b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgaWYgYCph
cmcxYCBkb2Vzbid0IHN1cHBvcnQgdGhlIGArK2AKLW9wZXJhdG9yLCBvciBpZiB0aGUgdHlwZSBv
ZiBgKysoKmFyZzEpYCBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlIG1vY2sKLWZ1bmN0aW9uJ3Mg
cmV0dXJuIHR5cGUuCi0KLUFub3RoZXIgZXhhbXBsZToKLWBgYAotQUNUSU9OKEZvbykgewotICAo
KmFyZzIpKDUpOwotICBCbGFoKCk7Ci0gICphcmcxID0gMDsKLSAgcmV0dXJuIGFyZzA7Ci19Ci1g
YGAKLWRlZmluZXMgYW4gYWN0aW9uIGBGb28oKWAgdGhhdCBpbnZva2VzIGFyZ3VtZW50ICMyIChh
IGZ1bmN0aW9uIHBvaW50ZXIpCi13aXRoIDUsIGNhbGxzIGZ1bmN0aW9uIGBCbGFoKClgLCBzZXRz
IHRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IGFyZ3VtZW50Ci0jMSB0byAwLCBhbmQgcmV0dXJucyBh
cmd1bWVudCAjMC4KLQotRm9yIG1vcmUgY29udmVuaWVuY2UgYW5kIGZsZXhpYmlsaXR5LCB5b3Ug
Y2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcKLXByZS1kZWZpbmVkIHN5bWJvbHMgaW4gdGhlIGJv
ZHkgb2YgYEFDVElPTmA6Ci0KLXwgYGFyZ0tfdHlwZWAgfCBUaGUgdHlwZSBvZiB0aGUgSy10aCAo
MC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sgZnVuY3Rpb24gfAotfDotLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18Ci18IGBhcmdzYCAgICAgIHwgQWxsIGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlv
biBhcyBhIHR1cGxlICAgICAgICAgICAgICAgIHwKLXwgYGFyZ3NfdHlwZWAgfCBUaGUgdHlwZSBv
ZiBhbGwgYXJndW1lbnRzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFzIGEgdHVwbGUgICAgfAotfCBg
cmV0dXJuX3R5cGVgIHwgVGhlIHJldHVybiB0eXBlIG9mIHRoZSBtb2NrIGZ1bmN0aW9uICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKLXwgYGZ1bmN0aW9uX3R5cGVgIHwgVGhlIHR5cGUgb2YgdGhl
IG1vY2sgZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQotRm9yIGV4
YW1wbGUsIHdoZW4gdXNpbmcgYW4gYEFDVElPTmAgYXMgYSBzdHViIGFjdGlvbiBmb3IgbW9jayBm
dW5jdGlvbjoKLWBgYAotaW50IERvU29tZXRoaW5nKGJvb2wgZmxhZywgaW50KiBwdHIpOwotYGBg
Ci13ZSBoYXZlOgotfCAqKlByZS1kZWZpbmVkIFN5bWJvbCoqIHwgKipJcyBCb3VuZCBUbyoqIHwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS18Ci18IGBhcmcwYCAg
ICAgICAgICAgICAgICAgfCB0aGUgdmFsdWUgb2YgYGZsYWdgIHwKLXwgYGFyZzBfdHlwZWAgICAg
ICAgICAgICB8IHRoZSB0eXBlIGBib29sYCB8Ci18IGBhcmcxYCAgICAgICAgICAgICAgICAgfCB0
aGUgdmFsdWUgb2YgYHB0cmAgfAotfCBgYXJnMV90eXBlYCAgICAgICAgICAgIHwgdGhlIHR5cGUg
YGludCpgIHwKLXwgYGFyZ3NgICAgICAgICAgICAgICAgICB8IHRoZSB0dXBsZSBgKGZsYWcsIHB0
cilgIHwKLXwgYGFyZ3NfdHlwZWAgICAgICAgICAgICB8IHRoZSB0eXBlIGBzdGQ6OnRyMTo6dHVw
bGU8Ym9vbCwgaW50Kj5gIHwKLXwgYHJldHVybl90eXBlYCAgICAgICAgICB8IHRoZSB0eXBlIGBp
bnRgICB8Ci18IGBmdW5jdGlvbl90eXBlYCAgICAgICAgfCB0aGUgdHlwZSBgaW50KGJvb2wsIGlu
dCopYCB8Ci0KLSMjIFdyaXRpbmcgTmV3IFBhcmFtZXRlcml6ZWQgQWN0aW9ucyBRdWlja2x5ICMj
Ci0KLVNvbWV0aW1lcyB5b3UnbGwgd2FudCB0byBwYXJhbWV0ZXJpemUgYW4gYWN0aW9uIHlvdSBk
ZWZpbmUuICBGb3IgdGhhdAotd2UgaGF2ZSBhbm90aGVyIG1hY3JvCi1gYGAKLUFDVElPTl9QKG5h
bWUsIHBhcmFtKSB7IHN0YXRlbWVudHM7IH0KLWBgYAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotQUNU
SU9OX1AoQWRkLCBuKSB7IHJldHVybiBhcmcwICsgbjsgfQotYGBgCi13aWxsIGFsbG93IHlvdSB0
byB3cml0ZQotYGBgCi0vLyBSZXR1cm5zIGFyZ3VtZW50ICMwICsgNS4KLS4uLiBXaWxsT25jZShB
ZGQoNSkpOwotYGBgCi0KLUZvciBjb252ZW5pZW5jZSwgd2UgdXNlIHRoZSB0ZXJtIF9hcmd1bWVu
dHNfIGZvciB0aGUgdmFsdWVzIHVzZWQgdG8KLWludm9rZSB0aGUgbW9jayBmdW5jdGlvbiwgYW5k
IHRoZSB0ZXJtIF9wYXJhbWV0ZXJzXyBmb3IgdGhlIHZhbHVlcwotdXNlZCB0byBpbnN0YW50aWF0
ZSBhbiBhY3Rpb24uCi0KLU5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBwcm92aWRlIHRoZSB0
eXBlIG9mIHRoZSBwYXJhbWV0ZXIgZWl0aGVyLgotU3VwcG9zZSB0aGUgcGFyYW1ldGVyIGlzIG5h
bWVkIGBwYXJhbWAsIHlvdSBjYW4gYWxzbyB1c2UgdGhlCi1Hb29nbGUtTW9jay1kZWZpbmVkIHN5
bWJvbCBgcGFyYW1fdHlwZWAgdG8gcmVmZXIgdG8gdGhlIHR5cGUgb2YgdGhlCi1wYXJhbWV0ZXIg
YXMgaW5mZXJyZWQgYnkgdGhlIGNvbXBpbGVyLiAgRm9yIGV4YW1wbGUsIGluIHRoZSBib2R5IG9m
Ci1gQUNUSU9OX1AoQWRkLCBuKWAgYWJvdmUsIHlvdSBjYW4gd3JpdGUgYG5fdHlwZWAgZm9yIHRo
ZSB0eXBlIG9mIGBuYC4KLQotR29vZ2xlIE1vY2sgYWxzbyBwcm92aWRlcyBgQUNUSU9OX1AyYCwg
YEFDVElPTl9QM2AsIGFuZCBldGMgdG8gc3VwcG9ydAotbXVsdGktcGFyYW1ldGVyIGFjdGlvbnMu
ICBGb3IgZXhhbXBsZSwKLWBgYAotQUNUSU9OX1AyKFJldHVybkRpc3RhbmNlVG8sIHgsIHkpIHsK
LSAgZG91YmxlIGR4ID0gYXJnMCAtIHg7Ci0gIGRvdWJsZSBkeSA9IGFyZzEgLSB5OwotICByZXR1
cm4gc3FydChkeCpkeCArIGR5KmR5KTsKLX0KLWBgYAotbGV0cyB5b3Ugd3JpdGUKLWBgYAotLi4u
IFdpbGxPbmNlKFJldHVybkRpc3RhbmNlVG8oNS4wLCAyNi41KSk7Ci1gYGAKLQotWW91IGNhbiB2
aWV3IGBBQ1RJT05gIGFzIGEgZGVnZW5lcmF0ZWQgcGFyYW1ldGVyaXplZCBhY3Rpb24gd2hlcmUg
dGhlCi1udW1iZXIgb2YgcGFyYW1ldGVycyBpcyAwLgotCi1Zb3UgY2FuIGFsc28gZWFzaWx5IGRl
ZmluZSBhY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzOgotYGBg
Ci1BQ1RJT05fUChQbHVzLCBhKSB7IC4uLiB9Ci1BQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4g
fQotYGBgCi0KLSMjIFJlc3RyaWN0aW5nIHRoZSBUeXBlIG9mIGFuIEFyZ3VtZW50IG9yIFBhcmFt
ZXRlciBpbiBhbiBBQ1RJT04gIyMKLQotRm9yIG1heGltdW0gYnJldml0eSBhbmQgcmV1c2FiaWxp
dHksIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGRvbid0IGFzawoteW91IHRvIHByb3ZpZGUgdGhlIHR5
cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlvbgotcGFyYW1l
dGVycy4gIEluc3RlYWQsIHdlIGxldCB0aGUgY29tcGlsZXIgaW5mZXIgdGhlIHR5cGVzIGZvciB1
cy4KLQotU29tZXRpbWVzLCBob3dldmVyLCB3ZSBtYXkgd2FudCB0byBiZSBtb3JlIGV4cGxpY2l0
IGFib3V0IHRoZSB0eXBlcy4KLVRoZXJlIGFyZSBzZXZlcmFsIHRyaWNrcyB0byBkbyB0aGF0LiAg
Rm9yIGV4YW1wbGU6Ci1gYGAKLUFDVElPTihGb28pIHsKLSAgLy8gTWFrZXMgc3VyZSBhcmcwIGNh
biBiZSBjb252ZXJ0ZWQgdG8gaW50LgotICBpbnQgbiA9IGFyZzA7Ci0gIC4uLiB1c2UgbiBpbnN0
ZWFkIG9mIGFyZzAgaGVyZSAuLi4KLX0KLQotQUNUSU9OX1AoQmFyLCBwYXJhbSkgewotICAvLyBN
YWtlcyBzdXJlIHRoZSB0eXBlIG9mIGFyZzEgaXMgY29uc3QgY2hhciouCi0gIDo6dGVzdGluZzo6
U3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IGNoYXIqLCBhcmcxX3R5cGU+KCk7Ci0KLSAgLy8gTWFr
ZXMgc3VyZSBwYXJhbSBjYW4gYmUgY29udmVydGVkIHRvIGJvb2wuCi0gIGJvb2wgZmxhZyA9IHBh
cmFtOwotfQotYGBgCi13aGVyZSBgU3RhdGljQXNzZXJ0VHlwZUVxYCBpcyBhIGNvbXBpbGUtdGlt
ZSBhc3NlcnRpb24gaW4gR29vZ2xlIFRlc3QKLXRoYXQgdmVyaWZpZXMgdHdvIHR5cGVzIGFyZSB0
aGUgc2FtZS4KLQotIyMgV3JpdGluZyBOZXcgQWN0aW9uIFRlbXBsYXRlcyBRdWlja2x5ICMjCi0K
LVNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFuIGFjdGlvbiBleHBsaWNpdCB0ZW1wbGF0ZSBw
YXJhbWV0ZXJzIHRoYXQKLWNhbm5vdCBiZSBpbmZlcnJlZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0
ZXJzLiAgYEFDVElPTl9URU1QTEFURSgpYAotc3VwcG9ydHMgdGhhdCBhbmQgY2FuIGJlIHZpZXdl
ZCBhcyBhbiBleHRlbnNpb24gdG8gYEFDVElPTigpYCBhbmQKLWBBQ1RJT05fUCooKWAuCi0KLVRo
ZSBzeW50YXg6Ci1gYGAKLUFDVElPTl9URU1QTEFURShBY3Rpb25OYW1lLAotICAgICAgICAgICAg
ICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5kMSwgbmFtZTEsIC4uLiwga2luZF9tLCBuYW1l
X20pLAotICAgICAgICAgICAgICAgIEFORF9uX1ZBTFVFX1BBUkFNUyhwMSwgLi4uLCBwX24pKSB7
IHN0YXRlbWVudHM7IH0KLWBgYAotCi1kZWZpbmVzIGFuIGFjdGlvbiB0ZW1wbGF0ZSB0aGF0IHRh
a2VzIF9tXyBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCi1hbmQgX25fIHZhbHVlIHBhcmFt
ZXRlcnMsIHdoZXJlIF9tXyBpcyBiZXR3ZWVuIDEgYW5kIDEwLCBhbmQgX25fIGlzCi1iZXR3ZWVu
IDAgYW5kIDEwLiAgYG5hbWVfaWAgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGggdGVtcGxhdGUKLXBh
cmFtZXRlciwgYW5kIGBraW5kX2lgIHNwZWNpZmllcyB3aGV0aGVyIGl0J3MgYSBgdHlwZW5hbWVg
LCBhbgotaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEgdGVtcGxhdGUuICBgcF9pYCBpcyB0aGUgbmFt
ZSBvZiB0aGUgaS10aCB2YWx1ZQotcGFyYW1ldGVyLgotCi1FeGFtcGxlOgotYGBgCi0vLyBEdXBs
aWNhdGVBcmc8aywgVD4ob3V0cHV0KSBjb252ZXJ0cyB0aGUgay10aCBhcmd1bWVudCBvZiB0aGUg
bW9jawotLy8gZnVuY3Rpb24gdG8gdHlwZSBUIGFuZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KLUFD
VElPTl9URU1QTEFURShEdXBsaWNhdGVBcmcsCi0gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUg
Y29tbWEgYmV0d2VlbiBpbnQgYW5kIGs6Ci0gICAgICAgICAgICAgICAgSEFTXzJfVEVNUExBVEVf
UEFSQU1TKGludCwgaywgdHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVF
X1BBUkFNUyhvdXRwdXQpKSB7Ci0gICpvdXRwdXQgPSBUKHN0ZDo6dHIxOjpnZXQ8az4oYXJncykp
OwotfQotYGBgCi0KLVRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxhdGUs
IHdyaXRlOgotYGBgCi0gIEFjdGlvbk5hbWU8dDEsIC4uLiwgdF9tPih2MSwgLi4uLCB2X24pCi1g
YGAKLXdoZXJlIHRoZSBgdGBzIGFyZSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzIGFuZCB0aGUKLWB2
YHMgYXJlIHRoZSB2YWx1ZSBhcmd1bWVudHMuICBUaGUgdmFsdWUgYXJndW1lbnQKLXR5cGVzIGFy
ZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBGb3IgZXhhbXBsZToKLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpfOwotLi4uCi0gIGludCBuOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBGb28oXywgXykp
Ci0gICAgICAuV2lsbE9uY2UoRHVwbGljYXRlQXJnPDEsIHVuc2lnbmVkIGNoYXI+KCZuKSk7Ci1g
YGAKLQotSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB2YWx1ZSBhcmd1bWVu
dCB0eXBlcywgeW91IGNhbgotcHJvdmlkZSBhZGRpdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50czoK
LWBgYAotICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2
X24pCi1gYGAKLXdoZXJlIGB1X2lgIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2YgYHZfaWAuCi0KLWBB
Q1RJT05fVEVNUExBVEVgIGFuZCBgQUNUSU9OYC9gQUNUSU9OX1AqYCBjYW4gYmUgb3ZlcmxvYWRl
ZCBvbiB0aGUKLW51bWJlciBvZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1i
ZXIgb2YgdGVtcGxhdGUKLXBhcmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhl
IG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZyBpcwotdW5jbGVhcjoKLQotYGBgCi0gIE92ZXJsb2Fk
ZWRBY3Rpb248aW50LCBib29sPih4KTsKLWBgYAotCi1BcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVt
cGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSBgYm9vbGAgcmVmZXJzIHRvCi10aGUgdHlwZSBv
ZiBgeGAsIG9yIGEgdHdvLXRlbXBsYXRlLXBhcmFtZXRlciBhY3Rpb24gd2hlcmUgdGhlIGNvbXBp
bGVyCi1pcyBhc2tlZCB0byBpbmZlciB0aGUgdHlwZSBvZiBgeGA/Ci0KLSMjIFVzaW5nIHRoZSBB
Q1RJT04gT2JqZWN0J3MgVHlwZSAjIwotCi1JZiB5b3UgYXJlIHdyaXRpbmcgYSBmdW5jdGlvbiB0
aGF0IHJldHVybnMgYW4gYEFDVElPTmAgb2JqZWN0LCB5b3UnbGwKLW5lZWQgdG8ga25vdyBpdHMg
dHlwZS4gIFRoZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1hY3JvIHVzZWQgdG8gZGVmaW5lCi10aGUg
YWN0aW9uIGFuZCB0aGUgcGFyYW1ldGVyIHR5cGVzLiAgVGhlIHJ1bGUgaXMgcmVsYXRpdmVseSBz
aW1wbGU6Ci18ICoqR2l2ZW4gRGVmaW5pdGlvbioqIHwgKipFeHByZXNzaW9uKiogfCAqKkhhcyBU
eXBlKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLXwKLXwgYEFDVElPTihGb28pYCAgICAgICAgfCBgRm9vKClgICAgICAgICB8IGBGb29B
Y3Rpb25gICB8Ci18IGBBQ1RJT05fVEVNUExBVEUoRm9vLCBIQVNfbV9URU1QTEFURV9QQVJBTVMo
Li4uKSwgQU5EXzBfVkFMVUVfUEFSQU1TKCkpYCB8CWBGb288dDEsIC4uLiwgdF9tPigpYCB8IGBG
b29BY3Rpb248dDEsIC4uLiwgdF9tPmAgfAotfCBgQUNUSU9OX1AoQmFyLCBwYXJhbSlgIHwgYEJh
cihpbnRfdmFsdWUpYCB8IGBCYXJBY3Rpb25QPGludD5gIHwKLXwgYEFDVElPTl9URU1QTEFURShC
YXIsIEhBU19tX1RFTVBMQVRFX1BBUkFNUyguLi4pLCBBTkRfMV9WQUxVRV9QQVJBTVMocDEpKWAg
fCBgQmFyPHQxLCAuLi4sIHRfbT4oaW50X3ZhbHVlKWAgfCBgRm9vQWN0aW9uUDx0MSwgLi4uLCB0
X20sIGludD5gIHwKLXwgYEFDVElPTl9QMihCYXosIHAxLCBwMilgIHwgYEJheihib29sX3ZhbHVl
LCBpbnRfdmFsdWUpYCB8IGBCYXpBY3Rpb25QMjxib29sLCBpbnQ+YCB8Ci18IGBBQ1RJT05fVEVN
UExBVEUoQmF6LCBIQVNfbV9URU1QTEFURV9QQVJBTVMoLi4uKSwgQU5EXzJfVkFMVUVfUEFSQU1T
KHAxLCBwMikpYCB8IGBCYXo8dDEsIC4uLiwgdF9tPihib29sX3ZhbHVlLCBpbnRfdmFsdWUpYCB8
IGBGb29BY3Rpb25QMjx0MSwgLi4uLCB0X20sIGJvb2wsIGludD5gIHwKLXwgLi4uICAgICAgICAg
ICAgICAgICAgfCAuLi4gICAgICAgICAgICB8IC4uLiAgICAgICAgICB8Ci0KLU5vdGUgdGhhdCB3
ZSBoYXZlIHRvIHBpY2sgZGlmZmVyZW50IHN1ZmZpeGVzIChgQWN0aW9uYCwgYEFjdGlvblBgLAot
YEFjdGlvblAyYCwgYW5kIGV0YykgZm9yIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVycyBv
ZiB2YWx1ZQotcGFyYW1ldGVycywgb3IgdGhlIGFjdGlvbiBkZWZpbml0aW9ucyBjYW5ub3QgYmUg
b3ZlcmxvYWRlZCBvbiB0aGUKLW51bWJlciBvZiB0aGVtLgotCi0jIyBXcml0aW5nIE5ldyBNb25v
bW9ycGhpYyBBY3Rpb25zICMjCi0KLVdoaWxlIHRoZSBgQUNUSU9OKmAgbWFjcm9zIGFyZSB2ZXJ5
IGNvbnZlbmllbnQsIHNvbWV0aW1lcyB0aGV5IGFyZQotaW5hcHByb3ByaWF0ZS4gIEZvciBleGFt
cGxlLCBkZXNwaXRlIHRoZSB0cmlja3Mgc2hvd24gaW4gdGhlIHByZXZpb3VzCi1yZWNpcGVzLCB0
aGV5IGRvbid0IGxldCB5b3UgZGlyZWN0bHkgc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sK
LWZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgdGhlIGFjdGlvbiBwYXJhbWV0ZXJzLCB3aGljaCBpbiBn
ZW5lcmFsIGxlYWRzCi10byB1bm9wdGltaXplZCBjb21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0
IGNhbiBiYWZmbGUgdW5mYW1pbGlhcgotdXNlcnMuICBUaGV5IGFsc28gZG9uJ3QgYWxsb3cgb3Zl
cmxvYWRpbmcgYWN0aW9ucyBiYXNlZCBvbiBwYXJhbWV0ZXIKLXR5cGVzIHdpdGhvdXQganVtcGlu
ZyB0aHJvdWdoIHNvbWUgaG9vcHMuCi0KLUFuIGFsdGVybmF0aXZlIHRvIHRoZSBgQUNUSU9OKmAg
bWFjcm9zIGlzIHRvIGltcGxlbWVudAotYDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+YCwg
d2hlcmUgYEZgIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2NrCi1mdW5jdGlvbiBpbiB3aGljaCB0aGUg
YWN0aW9uIHdpbGwgYmUgdXNlZC4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVu
YW1lIEY+Y2xhc3MgQWN0aW9uSW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkFjdGlv
bkludGVyZmFjZSgpOwotCi0gIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBSZXN1bHQgaXMgdGhl
IHJldHVybiB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUKLSAgLy8gRiwgYW5kIEFyZ3VtZW50VHVwbGUg
aXMgdGhlIHR1cGxlIG9mIGFyZ3VtZW50cyBvZiBGLgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwg
aWYgRiBpcyBpbnQoYm9vbCwgY29uc3Qgc3RyaW5nJiksIHRoZW4gUmVzdWx0IHdvdWxkCi0gIC8v
IGJlIGludCwgYW5kIEFyZ3VtZW50VHVwbGUgd291bGQgYmUgdHIxOjp0dXBsZTxib29sLCBjb25z
dCBzdHJpbmcmPi4KLSAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzKSA9IDA7Ci19OwotCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci11c2luZyA6OnRlc3Rpbmc6
OkFjdGlvbjsKLXVzaW5nIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlOwotdXNpbmcgOjp0ZXN0
aW5nOjpNYWtlQWN0aW9uOwotCi10eXBlZGVmIGludCBJbmNyZW1lbnRNZXRob2QoaW50Kik7Ci0K
LWNsYXNzIEluY3JlbWVudEFyZ3VtZW50QWN0aW9uIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxJ
bmNyZW1lbnRNZXRob2Q+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3Qg
dHIxOjp0dXBsZTxpbnQqPiYgYXJncykgewotICAgIGludCogcCA9IHRyMTo6Z2V0PDA+KGFyZ3Mp
OyAgLy8gR3JhYnMgdGhlIGZpcnN0IGFyZ3VtZW50LgotICAgIHJldHVybiAqcCsrOwotICB9Ci19
OwotCi1BY3Rpb248SW5jcmVtZW50TWV0aG9kPiBJbmNyZW1lbnRBcmd1bWVudCgpIHsKLSAgcmV0
dXJuIE1ha2VBY3Rpb24obmV3IEluY3JlbWVudEFyZ3VtZW50QWN0aW9uKTsKLX0KLS4uLgotCi0g
IEVYUEVDVF9DQUxMKGZvbywgQmF6KF8pKQotICAgICAgLldpbGxPbmNlKEluY3JlbWVudEFyZ3Vt
ZW50KCkpOwotCi0gIGludCBuID0gNTsKLSAgZm9vLkJheigmbik7ICAvLyBTaG91bGQgcmV0dXJu
IDUgYW5kIGNoYW5nZSBuIHRvIDYuCi1gYGAKLQotIyMgV3JpdGluZyBOZXcgUG9seW1vcnBoaWMg
QWN0aW9ucyAjIwotCi1UaGUgcHJldmlvdXMgcmVjaXBlIHNob3dlZCB5b3UgaG93IHRvIGRlZmlu
ZSB5b3VyIG93biBhY3Rpb24uIFRoaXMgaXMKLWFsbCBnb29kLCBleGNlcHQgdGhhdCB5b3UgbmVl
ZCB0byBrbm93IHRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiBpbgotd2hpY2ggdGhlIGFjdGlvbiB3
aWxsIGJlIHVzZWQuIFNvbWV0aW1lcyB0aGF0IGNhbiBiZSBhIHByb2JsZW0uIEZvcgotZXhhbXBs
ZSwgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBhY3Rpb24gaW4gZnVuY3Rpb25zIHdpdGggX2RpZmZl
cmVudF8KLXR5cGVzIChlLmcuIGxpa2UgYFJldHVybigpYCBhbmQgYFNldEFyZ1BvaW50ZWUoKWAp
LgotCi1JZiBhbiBhY3Rpb24gY2FuIGJlIHVzZWQgaW4gc2V2ZXJhbCB0eXBlcyBvZiBtb2NrIGZ1
bmN0aW9ucywgd2Ugc2F5Ci1pdCdzIF9wb2x5bW9ycGhpY18uIFRoZSBgTWFrZVBvbHltb3JwaGlj
QWN0aW9uKClgIGZ1bmN0aW9uIHRlbXBsYXRlCi1tYWtlcyBpdCBlYXN5IHRvIGRlZmluZSBzdWNo
IGFuIGFjdGlvbjoKLQotYGBgCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBJbXBsPgotUG9seW1vcnBoaWNBY3Rpb248SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9u
KGNvbnN0IEltcGwmIGltcGwpOwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotYGBgCi0KLUFz
IGFuIGV4YW1wbGUsIGxldCdzIGRlZmluZSBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNv
bmQgYXJndW1lbnQKLWluIHRoZSBtb2NrIGZ1bmN0aW9uJ3MgYXJndW1lbnQgbGlzdC4gVGhlIGZp
cnN0IHN0ZXAgaXMgdG8gZGVmaW5lIGFuCi1pbXBsZW1lbnRhdGlvbiBjbGFzczoKLQotYGBgCi1j
bGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotICBSZXN1bHQgUGVyZm9y
bShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7Ci0gICAgLy8gVG8gZ2V0IHRoZSBp
LXRoICgwLWJhc2VkKSBhcmd1bWVudCwgdXNlIHRyMTo6Z2V0PGk+KGFyZ3MpLgotICAgIHJldHVy
biB0cjE6OmdldDwxPihhcmdzKTsKLSAgfQotfTsKLWBgYAotCi1UaGlzIGltcGxlbWVudGF0aW9u
IGNsYXNzIGRvZXMgX25vdF8gbmVlZCB0byBpbmhlcml0IGZyb20gYW55Ci1wYXJ0aWN1bGFyIGNs
YXNzLiBXaGF0IG1hdHRlcnMgaXMgdGhhdCBpdCBtdXN0IGhhdmUgYSBgUGVyZm9ybSgpYAotbWV0
aG9kIHRlbXBsYXRlLiBUaGlzIG1ldGhvZCB0ZW1wbGF0ZSB0YWtlcyB0aGUgbW9jayBmdW5jdGlv
bidzCi1hcmd1bWVudHMgYXMgYSB0dXBsZSBpbiBhICoqc2luZ2xlKiogYXJndW1lbnQsIGFuZCBy
ZXR1cm5zIHRoZSByZXN1bHQgb2YKLXRoZSBhY3Rpb24uIEl0IGNhbiBiZSBlaXRoZXIgYGNvbnN0
YCBvciBub3QsIGJ1dCBtdXN0IGJlIGludm9rYWJsZQotd2l0aCBleGFjdGx5IG9uZSB0ZW1wbGF0
ZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlIHJlc3VsdCB0eXBlLiBJbiBvdGhlcgotd29yZHMsIHlv
dSBtdXN0IGJlIGFibGUgdG8gY2FsbCBgUGVyZm9ybTxSPihhcmdzKWAgd2hlcmUgYFJgIGlzIHRo
ZQotbW9jayBmdW5jdGlvbidzIHJldHVybiB0eXBlIGFuZCBgYXJnc2AgaXMgaXRzIGFyZ3VtZW50
cyBpbiBhIHR1cGxlLgotCi1OZXh0LCB3ZSB1c2UgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCB0
byB0dXJuIGFuIGluc3RhbmNlIG9mIHRoZQotaW1wbGVtZW50YXRpb24gY2xhc3MgaW50byB0aGUg
cG9seW1vcnBoaWMgYWN0aW9uIHdlIG5lZWQuIEl0IHdpbGwgYmUKLWNvbnZlbmllbnQgdG8gaGF2
ZSBhIHdyYXBwZXIgZm9yIHRoaXM6Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1v
cnBoaWNBY3Rpb247Ci11c2luZyA6OnRlc3Rpbmc6OlBvbHltb3JwaGljQWN0aW9uOwotCi1Qb2x5
bW9ycGhpY0FjdGlvbjxSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbj4gUmV0dXJuU2Vjb25kQXJn
dW1lbnQoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oUmV0dXJuU2Vjb25kQXJn
dW1lbnRBY3Rpb24oKSk7Ci19Ci1gYGAKLQotTm93LCB5b3UgY2FuIHVzZSB0aGlzIHBvbHltb3Jw
aGljIGFjdGlvbiB0aGUgc2FtZSB3YXkgeW91IHVzZSB0aGUKLWJ1aWx0LWluIG9uZXM6Ci0KLWBg
YAotdXNpbmcgOjp0ZXN0aW5nOjpfOwotCi1jbGFzcyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0g
cHVibGljOgotICBNT0NLX01FVEhPRDIoRG9UaGlzLCBpbnQoYm9vbCBmbGFnLCBpbnQgbikpOwot
ICBNT0NLX01FVEhPRDMoRG9UaGF0LCBzdHJpbmcoaW50IHgsIGNvbnN0IGNoYXIqIHN0cjEsIGNv
bnN0IGNoYXIqIHN0cjIpKTsKLX07Ci0uLi4KLQotICBNb2NrRm9vIGZvbzsKLSAgRVhQRUNUX0NB
TEwoZm9vLCBEb1RoaXMoXywgXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuU2Vjb25kQXJndW1l
bnQoKSk7Ci0gIEVYUEVDVF9DQUxMKGZvbywgRG9UaGF0KF8sIF8sIF8pKQotICAgICAgLldpbGxP
bmNlKFJldHVyblNlY29uZEFyZ3VtZW50KCkpOwotICAuLi4KLSAgZm9vLkRvVGhpcyh0cnVlLCA1
KTsgICAgICAgICAvLyBXaWxsIHJldHVybiA1LgotICBmb28uRG9UaGF0KDEsICJIaSIsICJCeWUi
KTsgIC8vIFdpbGwgcmV0dXJuICJIaSIuCi1gYGAKLQotIyMgVGVhY2hpbmcgR29vZ2xlIE1vY2sg
SG93IHRvIFByaW50IFlvdXIgVmFsdWVzICMjCi0KLVdoZW4gYW4gdW5pbnRlcmVzdGluZyBvciB1
bmV4cGVjdGVkIGNhbGwgb2NjdXJzLCBHb29nbGUgTW9jayBwcmludHMgdGhlCi1hcmd1bWVudCB2
YWx1ZXMgYW5kIHRoZSBzdGFjayB0cmFjZSB0byBoZWxwIHlvdSBkZWJ1Zy4gIEFzc2VydGlvbgot
bWFjcm9zIGxpa2UgYEVYUEVDVF9USEFUYCBhbmQgYEVYUEVDVF9FUWAgYWxzbyBwcmludCB0aGUg
dmFsdWVzIGluCi1xdWVzdGlvbiB3aGVuIHRoZSBhc3NlcnRpb24gZmFpbHMuICBHb29nbGUgTW9j
ayBhbmQgR29vZ2xlIFRlc3QgZG8gdGhpcyB1c2luZwotR29vZ2xlIFRlc3QncyB1c2VyLWV4dGVu
c2libGUgdmFsdWUgcHJpbnRlci4KLQotVGhpcyBwcmludGVyIGtub3dzIGhvdyB0byBwcmludCBi
dWlsdC1pbiBDKysgdHlwZXMsIG5hdGl2ZSBhcnJheXMsIFNUTAotY29udGFpbmVycywgYW5kIGFu
eSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGA8PGAgb3BlcmF0b3IuICBGb3Igb3RoZXIKLXR5cGVz
LCBpdCBwcmludHMgdGhlIHJhdyBieXRlcyBpbiB0aGUgdmFsdWUgYW5kIGhvcGVzIHRoYXQgeW91
IHRoZQotdXNlciBjYW4gZmlndXJlIGl0IG91dC4KLVtHb29nbGUgVGVzdCdzIGFkdmFuY2VkIGd1
aWRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0FkdmFuY2VkR3Vp
ZGUjVGVhY2hpbmdfR29vZ2xlX1Rlc3RfSG93X3RvX1ByaW50X1lvdXJfVmFsdWVzKQotZXhwbGFp
bnMgaG93IHRvIGV4dGVuZCB0aGUgcHJpbnRlciB0byBkbyBhIGJldHRlciBqb2IgYXQKLXByaW50
aW5nIHlvdXIgcGFydGljdWxhciB0eXBlIHRoYW4gdG8gZHVtcCB0aGUgYnl0ZXMuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0Rv
Y3VtZW50YXRpb24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9kb2NzL3YxXzcvRG9jdW1lbnRhdGlvbi5tZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkxODFmMjhlMTBjLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0RvY3VtZW50YXRpb24ubWQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMiArMCwwIEBACi1UaGlzIHBhZ2UgbGlzdHMgYWxsIGRvY3VtZW50YXRpb24gd2lr
aSBwYWdlcyBmb3IgR29vZ2xlIE1vY2sgKioodGhlIFNWTiB0cnVuayB2ZXJzaW9uKSoqCi0tICoq
aWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIE1vY2ssIHBsZWFzZSByZWFk
IHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGF0IHNwZWNpZmljIHZlcnNpb24gaW5zdGVhZC4qKgot
Ci0gICogW0ZvckR1bW1pZXNdKFYxXzdfRm9yRHVtbWllcy5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5
b3UgYXJlIG5ldyB0byBHb29nbGUgTW9jay4KLSAgKiBbQ2hlYXRTaGVldF0oVjFfN19DaGVhdFNo
ZWV0Lm1kKSAtLSBhIHF1aWNrIHJlZmVyZW5jZS4KLSAgKiBbQ29va0Jvb2tdKFYxXzdfQ29va0Jv
b2subWQpIC0tIHJlY2lwZXMgZm9yIGRvaW5nIHZhcmlvdXMgdGFza3MgdXNpbmcgR29vZ2xlIE1v
Y2suCi0gICogW0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc10oVjFfN19GcmVxdWVudGx5QXNrZWRR
dWVzdGlvbnMubWQpIC0tIGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRo
ZSBtYWlsaW5nIGxpc3QuCi0KLVRvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgTW9jaywgcmVh
ZDoKLQotICAqIFtEZXZHdWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3
cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICogW1B1bXAgTWFudWFsXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL1B1bXBNYW51YWwpIC0tIGhvdyB3ZSBnZW5lcmF0
ZSBzb21lIG9mIEdvb2dsZSBNb2NrJ3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1k
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0ZvckR1bW1pZXMubWQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVlMDNjNWI5ODkwOC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L2RvY3MvdjFfNy9Gb3JEdW1taWVzLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNDM5ICswLDAgQEAK
LQotCi0oKipOb3RlOioqIElmIHlvdSBnZXQgY29tcGlsZXIgZXJyb3JzIHRoYXQgeW91IGRvbid0
IHVuZGVyc3RhbmQsIGJlIHN1cmUgdG8gY29uc3VsdCBbR29vZ2xlIE1vY2sgRG9jdG9yXShodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfRnJlcXVlbnRseUFza2Vk
UXVlc3Rpb25zI0hvd19hbV9JX3N1cHBvc2VkX3RvX21ha2Vfc2Vuc2Vfb2ZfdGhlc2VfaG9ycmli
bGVfdGVtcGxhdGVfZXJyb3IpLikKLQotIyBXaGF0IElzIEdvb2dsZSBDKysgTW9ja2luZyBGcmFt
ZXdvcms/ICMKLVdoZW4geW91IHdyaXRlIGEgcHJvdG90eXBlIG9yIHRlc3QsIG9mdGVuIGl0J3Mg
bm90IGZlYXNpYmxlIG9yIHdpc2UgdG8gcmVseSBvbiByZWFsIG9iamVjdHMgZW50aXJlbHkuIEEg
Kiptb2NrIG9iamVjdCoqIGltcGxlbWVudHMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGEgcmVhbCBv
YmplY3QgKHNvIGl0IGNhbiBiZSB1c2VkIGFzIG9uZSksIGJ1dCBsZXRzIHlvdSBzcGVjaWZ5IGF0
IHJ1biB0aW1lIGhvdyBpdCB3aWxsIGJlIHVzZWQgYW5kIHdoYXQgaXQgc2hvdWxkIGRvICh3aGlj
aCBtZXRob2RzIHdpbGwgYmUgY2FsbGVkPyBpbiB3aGljaCBvcmRlcj8gaG93IG1hbnkgdGltZXM/
IHdpdGggd2hhdCBhcmd1bWVudHM/IHdoYXQgd2lsbCB0aGV5IHJldHVybj8gZXRjKS4KLQotKipO
b3RlOioqIEl0IGlzIGVhc3kgdG8gY29uZnVzZSB0aGUgdGVybSBfZmFrZSBvYmplY3RzXyB3aXRo
IG1vY2sgb2JqZWN0cy4gRmFrZXMgYW5kIG1vY2tzIGFjdHVhbGx5IG1lYW4gdmVyeSBkaWZmZXJl
bnQgdGhpbmdzIGluIHRoZSBUZXN0LURyaXZlbiBEZXZlbG9wbWVudCAoVEREKSBjb21tdW5pdHk6
Ci0KLSAgKiAqKkZha2UqKiBvYmplY3RzIGhhdmUgd29ya2luZyBpbXBsZW1lbnRhdGlvbnMsIGJ1
dCB1c3VhbGx5IHRha2Ugc29tZSBzaG9ydGN1dCAocGVyaGFwcyB0byBtYWtlIHRoZSBvcGVyYXRp
b25zIGxlc3MgZXhwZW5zaXZlKSwgd2hpY2ggbWFrZXMgdGhlbSBub3Qgc3VpdGFibGUgZm9yIHBy
b2R1Y3Rpb24uIEFuIGluLW1lbW9yeSBmaWxlIHN5c3RlbSB3b3VsZCBiZSBhbiBleGFtcGxlIG9m
IGEgZmFrZS4KLSAgKiAqKk1vY2tzKiogYXJlIG9iamVjdHMgcHJlLXByb2dyYW1tZWQgd2l0aCBf
ZXhwZWN0YXRpb25zXywgd2hpY2ggZm9ybSBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGNhbGxzIHRo
ZXkgYXJlIGV4cGVjdGVkIHRvIHJlY2VpdmUuCi0KLUlmIGFsbCB0aGlzIHNlZW1zIHRvbyBhYnN0
cmFjdCBmb3IgeW91LCBkb24ndCB3b3JyeSAtIHRoZSBtb3N0IGltcG9ydGFudCB0aGluZyB0byBy
ZW1lbWJlciBpcyB0aGF0IGEgbW9jayBhbGxvd3MgeW91IHRvIGNoZWNrIHRoZSBfaW50ZXJhY3Rp
b25fIGJldHdlZW4gaXRzZWxmIGFuZCBjb2RlIHRoYXQgdXNlcyBpdC4gVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiBmYWtlcyBhbmQgbW9ja3Mgd2lsbCBiZWNvbWUgbXVjaCBjbGVhcmVyIG9uY2UgeW91
IHN0YXJ0IHRvIHVzZSBtb2Nrcy4KLQotKipHb29nbGUgQysrIE1vY2tpbmcgRnJhbWV3b3JrKiog
KG9yICoqR29vZ2xlIE1vY2sqKiBmb3Igc2hvcnQpIGlzIGEgbGlicmFyeSAoc29tZXRpbWVzIHdl
IGFsc28gY2FsbCBpdCBhICJmcmFtZXdvcmsiIHRvIG1ha2UgaXQgc291bmQgY29vbCkgZm9yIGNy
ZWF0aW5nIG1vY2sgY2xhc3NlcyBhbmQgdXNpbmcgdGhlbS4gSXQgZG9lcyB0byBDKysgd2hhdCBb
ak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10oaHR0cDovL3d3dy5l
YXN5bW9jay5vcmcvKSBkbyB0byBKYXZhLgotCi1Vc2luZyBHb29nbGUgTW9jayBpbnZvbHZlcyB0
aHJlZSBiYXNpYyBzdGVwczoKLQotICAxLiBVc2Ugc29tZSBzaW1wbGUgbWFjcm9zIHRvIGRlc2Ny
aWJlIHRoZSBpbnRlcmZhY2UgeW91IHdhbnQgdG8gbW9jaywgYW5kIHRoZXkgd2lsbCBleHBhbmQg
dG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9jayBjbGFzczsKLSAgMS4gQ3JlYXRlIHNv
bWUgbW9jayBvYmplY3RzIGFuZCBzcGVjaWZ5IGl0cyBleHBlY3RhdGlvbnMgYW5kIGJlaGF2aW9y
IHVzaW5nIGFuIGludHVpdGl2ZSBzeW50YXg7Ci0gIDEuIEV4ZXJjaXNlIGNvZGUgdGhhdCB1c2Vz
IHRoZSBtb2NrIG9iamVjdHMuIEdvb2dsZSBNb2NrIHdpbGwgY2F0Y2ggYW55IHZpb2xhdGlvbiBv
ZiB0aGUgZXhwZWN0YXRpb25zIGFzIHNvb24gYXMgaXQgYXJpc2VzLgotCi0jIFdoeSBHb29nbGUg
TW9jaz8gIwotV2hpbGUgbW9jayBvYmplY3RzIGhlbHAgeW91IHJlbW92ZSB1bm5lY2Vzc2FyeSBk
ZXBlbmRlbmNpZXMgaW4gdGVzdHMgYW5kIG1ha2UgdGhlbSBmYXN0IGFuZCByZWxpYWJsZSwgdXNp
bmcgbW9ja3MgbWFudWFsbHkgaW4gQysrIGlzIF9oYXJkXzoKLQotICAqIFNvbWVvbmUgaGFzIHRv
IGltcGxlbWVudCB0aGUgbW9ja3MuIFRoZSBqb2IgaXMgdXN1YWxseSB0ZWRpb3VzIGFuZCBlcnJv
ci1wcm9uZS4gTm8gd29uZGVyIHBlb3BsZSBnbyBncmVhdCBkaXN0YW5jZSB0byBhdm9pZCBpdC4K
LSAgKiBUaGUgcXVhbGl0eSBvZiB0aG9zZSBtYW51YWxseSB3cml0dGVuIG1vY2tzIGlzIGEgYml0
LCB1aCwgdW5wcmVkaWN0YWJsZS4gWW91IG1heSBzZWUgc29tZSByZWFsbHkgcG9saXNoZWQgb25l
cywgYnV0IHlvdSBtYXkgYWxzbyBzZWUgc29tZSB0aGF0IHdlcmUgaGFja2VkIHVwIGluIGEgaHVy
cnkgYW5kIGhhdmUgYWxsIHNvcnRzIG9mIGFkIGhvYyByZXN0cmljdGlvbnMuCi0gICogVGhlIGtu
b3dsZWRnZSB5b3UgZ2FpbmVkIGZyb20gdXNpbmcgb25lIG1vY2sgZG9lc24ndCB0cmFuc2ZlciB0
byB0aGUgbmV4dC4KLQotSW4gY29udHJhc3QsIEphdmEgYW5kIFB5dGhvbiBwcm9ncmFtbWVycyBo
YXZlIHNvbWUgZmluZSBtb2NrIGZyYW1ld29ya3MsIHdoaWNoIGF1dG9tYXRlIHRoZSBjcmVhdGlv
biBvZiBtb2Nrcy4gQXMgYSByZXN1bHQsIG1vY2tpbmcgaXMgYSBwcm92ZW4gZWZmZWN0aXZlIHRl
Y2huaXF1ZSBhbmQgd2lkZWx5IGFkb3B0ZWQgcHJhY3RpY2UgaW4gdGhvc2UgY29tbXVuaXRpZXMu
IEhhdmluZyB0aGUgcmlnaHQgdG9vbCBhYnNvbHV0ZWx5IG1ha2VzIHRoZSBkaWZmZXJlbmNlLgot
Ci1Hb29nbGUgTW9jayB3YXMgYnVpbHQgdG8gaGVscCBDKysgcHJvZ3JhbW1lcnMuIEl0IHdhcyBp
bnNwaXJlZCBieSBbak1vY2tdKGh0dHA6Ly93d3cuam1vY2sub3JnLykgYW5kIFtFYXN5TW9ja10o
aHR0cDovL3d3dy5lYXN5bW9jay5vcmcvKSwgYnV0IGRlc2lnbmVkIHdpdGggQysrJ3Mgc3BlY2lm
aWNzIGluIG1pbmQuIEl0IGlzIHlvdXIgZnJpZW5kIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIHBy
b2JsZW1zIGlzIGJvdGhlcmluZyB5b3U6Ci0KLSAgKiBZb3UgYXJlIHN0dWNrIHdpdGggYSBzdWIt
b3B0aW1hbCBkZXNpZ24gYW5kIHdpc2ggeW91IGhhZCBkb25lIG1vcmUgcHJvdG90eXBpbmcgYmVm
b3JlIGl0IHdhcyB0b28gbGF0ZSwgYnV0IHByb3RvdHlwaW5nIGluIEMrKyBpcyBieSBubyBtZWFu
cyAicmFwaWQiLgotICAqIFlvdXIgdGVzdHMgYXJlIHNsb3cgYXMgdGhleSBkZXBlbmQgb24gdG9v
IG1hbnkgbGlicmFyaWVzIG9yIHVzZSBleHBlbnNpdmUgcmVzb3VyY2VzIChlLmcuIGEgZGF0YWJh
c2UpLgotICAqIFlvdXIgdGVzdHMgYXJlIGJyaXR0bGUgYXMgc29tZSByZXNvdXJjZXMgdGhleSB1
c2UgYXJlIHVucmVsaWFibGUgKGUuZy4gdGhlIG5ldHdvcmspLgotICAqIFlvdSB3YW50IHRvIHRl
c3QgaG93IHlvdXIgY29kZSBoYW5kbGVzIGEgZmFpbHVyZSAoZS5nLiBhIGZpbGUgY2hlY2tzdW0g
ZXJyb3IpLCBidXQgaXQncyBub3QgZWFzeSB0byBjYXVzZSBvbmUuCi0gICogWW91IG5lZWQgdG8g
bWFrZSBzdXJlIHRoYXQgeW91ciBtb2R1bGUgaW50ZXJhY3RzIHdpdGggb3RoZXIgbW9kdWxlcyBp
biB0aGUgcmlnaHQgd2F5LCBidXQgaXQncyBoYXJkIHRvIG9ic2VydmUgdGhlIGludGVyYWN0aW9u
OyB0aGVyZWZvcmUgeW91IHJlc29ydCB0byBvYnNlcnZpbmcgdGhlIHNpZGUgZWZmZWN0cyBhdCB0
aGUgZW5kIG9mIHRoZSBhY3Rpb24sIHdoaWNoIGlzIGF3a3dhcmQgYXQgYmVzdC4KLSAgKiBZb3Ug
d2FudCB0byAibW9jayBvdXQiIHlvdXIgZGVwZW5kZW5jaWVzLCBleGNlcHQgdGhhdCB0aGV5IGRv
bid0IGhhdmUgbW9jayBpbXBsZW1lbnRhdGlvbnMgeWV0OyBhbmQsIGZyYW5rbHksIHlvdSBhcmVu
J3QgdGhyaWxsZWQgYnkgc29tZSBvZiB0aG9zZSBoYW5kLXdyaXR0ZW4gbW9ja3MuCi0KLVdlIGVu
Y291cmFnZSB5b3UgdG8gdXNlIEdvb2dsZSBNb2NrIGFzOgotCi0gICogYSBfZGVzaWduXyB0b29s
LCBmb3IgaXQgbGV0cyB5b3UgZXhwZXJpbWVudCB3aXRoIHlvdXIgaW50ZXJmYWNlIGRlc2lnbiBl
YXJseSBhbmQgb2Z0ZW4uIE1vcmUgaXRlcmF0aW9ucyBsZWFkIHRvIGJldHRlciBkZXNpZ25zIQot
ICAqIGEgX3Rlc3RpbmdfIHRvb2wgdG8gY3V0IHlvdXIgdGVzdHMnIG91dGJvdW5kIGRlcGVuZGVu
Y2llcyBhbmQgcHJvYmUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4geW91ciBtb2R1bGUgYW5kIGl0
cyBjb2xsYWJvcmF0b3JzLgotCi0jIEdldHRpbmcgU3RhcnRlZCAjCi1Vc2luZyBHb29nbGUgTW9j
ayBpcyBlYXN5ISBJbnNpZGUgeW91ciBDKysgc291cmNlIGZpbGUsIGp1c3QgYCNpbmNsdWRlYCBg
Imd0ZXN0L2d0ZXN0LmgiYCBhbmQgYCJnbW9jay9nbW9jay5oImAsIGFuZCB5b3UgYXJlIHJlYWR5
IHRvIGdvLgotCi0jIEEgQ2FzZSBmb3IgTW9jayBUdXJ0bGVzICMKLUxldCdzIGxvb2sgYXQgYW4g
ZXhhbXBsZS4gU3VwcG9zZSB5b3UgYXJlIGRldmVsb3BpbmcgYSBncmFwaGljcyBwcm9ncmFtIHRo
YXQgcmVsaWVzIG9uIGEgTE9HTy1saWtlIEFQSSBmb3IgZHJhd2luZy4gSG93IHdvdWxkIHlvdSB0
ZXN0IHRoYXQgaXQgZG9lcyB0aGUgcmlnaHQgdGhpbmc/IFdlbGwsIHlvdSBjYW4gcnVuIGl0IGFu
ZCBjb21wYXJlIHRoZSBzY3JlZW4gd2l0aCBhIGdvbGRlbiBzY3JlZW4gc25hcHNob3QsIGJ1dCBs
ZXQncyBhZG1pdCBpdDogdGVzdHMgbGlrZSB0aGlzIGFyZSBleHBlbnNpdmUgdG8gcnVuIGFuZCBm
cmFnaWxlIChXaGF0IGlmIHlvdSBqdXN0IHVwZ3JhZGVkIHRvIGEgc2hpbnkgbmV3IGdyYXBoaWNz
IGNhcmQgdGhhdCBoYXMgYmV0dGVyIGFudGktYWxpYXNpbmc/IFN1ZGRlbmx5IHlvdSBoYXZlIHRv
IHVwZGF0ZSBhbGwgeW91ciBnb2xkZW4gaW1hZ2VzLikuIEl0IHdvdWxkIGJlIHRvbyBwYWluZnVs
IGlmIGFsbCB5b3VyIHRlc3RzIGFyZSBsaWtlIHRoaXMuIEZvcnR1bmF0ZWx5LCB5b3UgbGVhcm5l
ZCBhYm91dCBEZXBlbmRlbmN5IEluamVjdGlvbiBhbmQga25vdyB0aGUgcmlnaHQgdGhpbmcgdG8g
ZG86IGluc3RlYWQgb2YgaGF2aW5nIHlvdXIgYXBwbGljYXRpb24gdGFsayB0byB0aGUgZHJhd2lu
ZyBBUEkgZGlyZWN0bHksIHdyYXAgdGhlIEFQSSBpbiBhbiBpbnRlcmZhY2UgKHNheSwgYFR1cnRs
ZWApIGFuZCBjb2RlIHRvIHRoYXQgaW50ZXJmYWNlOgotCi1gYGAKLWNsYXNzIFR1cnRsZSB7Ci0g
IC4uLgotICB2aXJ0dWFsIH5UdXJ0bGUoKSB7fQotICB2aXJ0dWFsIHZvaWQgUGVuVXAoKSA9IDA7
Ci0gIHZpcnR1YWwgdm9pZCBQZW5Eb3duKCkgPSAwOwotICB2aXJ0dWFsIHZvaWQgRm9yd2FyZChp
bnQgZGlzdGFuY2UpID0gMDsKLSAgdmlydHVhbCB2b2lkIFR1cm4oaW50IGRlZ3JlZXMpID0gMDsK
LSAgdmlydHVhbCB2b2lkIEdvVG8oaW50IHgsIGludCB5KSA9IDA7Ci0gIHZpcnR1YWwgaW50IEdl
dFgoKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgaW50IEdldFkoKSBjb25zdCA9IDA7Ci19OwotYGBg
Ci0KLShOb3RlIHRoYXQgdGhlIGRlc3RydWN0b3Igb2YgYFR1cnRsZWAgKiptdXN0KiogYmUgdmly
dHVhbCwgYXMgaXMgdGhlIGNhc2UgZm9yICoqYWxsKiogY2xhc3NlcyB5b3UgaW50ZW5kIHRvIGlu
aGVyaXQgZnJvbSAtIG90aGVyd2lzZSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgZGVyaXZlZCBjbGFz
cyB3aWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIGFuIG9iamVjdCB0aHJvdWdoIGEg
YmFzZSBwb2ludGVyLCBhbmQgeW91J2xsIGdldCBjb3JydXB0ZWQgcHJvZ3JhbSBzdGF0ZXMgbGlr
ZSBtZW1vcnkgbGVha3MuKQotCi1Zb3UgY2FuIGNvbnRyb2wgd2hldGhlciB0aGUgdHVydGxlJ3Mg
bW92ZW1lbnQgd2lsbCBsZWF2ZSBhIHRyYWNlIHVzaW5nIGBQZW5VcCgpYCBhbmQgYFBlbkRvd24o
KWAsIGFuZCBjb250cm9sIGl0cyBtb3ZlbWVudCB1c2luZyBgRm9yd2FyZCgpYCwgYFR1cm4oKWAs
IGFuZCBgR29UbygpYC4gRmluYWxseSwgYEdldFgoKWAgYW5kIGBHZXRZKClgIHRlbGwgeW91IHRo
ZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSB0dXJ0bGUuCi0KLVlvdXIgcHJvZ3JhbSB3aWxsIG5v
cm1hbGx5IHVzZSBhIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuIEluIHRl
c3RzLCB5b3UgY2FuIHVzZSBhIG1vY2sgaW1wbGVtZW50YXRpb24gaW5zdGVhZC4gVGhpcyBhbGxv
d3MgeW91IHRvIGVhc2lseSBjaGVjayB3aGF0IGRyYXdpbmcgcHJpbWl0aXZlcyB5b3VyIHByb2dy
YW0gaXMgY2FsbGluZywgd2l0aCB3aGF0IGFyZ3VtZW50cywgYW5kIGluIHdoaWNoIG9yZGVyLiBU
ZXN0cyB3cml0dGVuIHRoaXMgd2F5IGFyZSBtdWNoIG1vcmUgcm9idXN0ICh0aGV5IHdvbid0IGJy
ZWFrIGJlY2F1c2UgeW91ciBuZXcgbWFjaGluZSBkb2VzIGFudGktYWxpYXNpbmcgZGlmZmVyZW50
bHkpLCBlYXNpZXIgdG8gcmVhZCBhbmQgbWFpbnRhaW4gKHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGlz
IGV4cHJlc3NlZCBpbiB0aGUgY29kZSwgbm90IGluIHNvbWUgYmluYXJ5IGltYWdlcyksIGFuZCBy
dW4gX211Y2gsIG11Y2ggZmFzdGVyXy4KLQotIyBXcml0aW5nIHRoZSBNb2NrIENsYXNzICMKLUlm
IHlvdSBhcmUgbHVja3ksIHRoZSBtb2NrcyB5b3UgbmVlZCB0byB1c2UgaGF2ZSBhbHJlYWR5IGJl
ZW4gaW1wbGVtZW50ZWQgYnkgc29tZSBuaWNlIHBlb3BsZS4gSWYsIGhvd2V2ZXIsIHlvdSBmaW5k
IHlvdXJzZWxmIGluIHRoZSBwb3NpdGlvbiB0byB3cml0ZSBhIG1vY2sgY2xhc3MsIHJlbGF4IC0g
R29vZ2xlIE1vY2sgdHVybnMgdGhpcyB0YXNrIGludG8gYSBmdW4gZ2FtZSEgKFdlbGwsIGFsbW9z
dC4pCi0KLSMjIEhvdyB0byBEZWZpbmUgSXQgIyMKLVVzaW5nIHRoZSBgVHVydGxlYCBpbnRlcmZh
Y2UgYXMgZXhhbXBsZSwgaGVyZSBhcmUgdGhlIHNpbXBsZSBzdGVwcyB5b3UgbmVlZCB0byBmb2xs
b3c6Ci0KLSAgMS4gRGVyaXZlIGEgY2xhc3MgYE1vY2tUdXJ0bGVgIGZyb20gYFR1cnRsZWAuCi0g
IDEuIFRha2UgYSBfdmlydHVhbF8gZnVuY3Rpb24gb2YgYFR1cnRsZWAgKHdoaWxlIGl0J3MgcG9z
c2libGUgdG8gW21vY2sgbm9uLXZpcnR1YWwgbWV0aG9kcyB1c2luZyB0ZW1wbGF0ZXNdKGh0dHA6
Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNNb2NraW5n
X05vbnZpcnR1YWxfTWV0aG9kcyksIGl0J3MgbXVjaCBtb3JlIGludm9sdmVkKS4gQ291bnQgaG93
IG1hbnkgYXJndW1lbnRzIGl0IGhhcy4KLSAgMS4gSW4gdGhlIGBwdWJsaWM6YCBzZWN0aW9uIG9m
IHRoZSBjaGlsZCBjbGFzcywgd3JpdGUgYE1PQ0tfTUVUSE9EbigpO2AgKG9yIGBNT0NLX0NPTlNU
X01FVEhPRG4oKTtgIGlmIHlvdSBhcmUgbW9ja2luZyBhIGBjb25zdGAgbWV0aG9kKSwgd2hlcmUg
YG5gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGFyZ3VtZW50czsgaWYgeW91IGNvdW50ZWQgd3Jvbmcs
IHNoYW1lIG9uIHlvdSwgYW5kIGEgY29tcGlsZXIgZXJyb3Igd2lsbCB0ZWxsIHlvdSBzby4KLSAg
MS4gTm93IGNvbWVzIHRoZSBmdW4gcGFydDogeW91IHRha2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVy
ZSwgY3V0LWFuZC1wYXN0ZSB0aGUgX2Z1bmN0aW9uIG5hbWVfIGFzIHRoZSBfZmlyc3RfIGFyZ3Vt
ZW50IHRvIHRoZSBtYWNybywgYW5kIGxlYXZlIHdoYXQncyBsZWZ0IGFzIHRoZSBfc2Vjb25kXyBh
cmd1bWVudCAoaW4gY2FzZSB5b3UncmUgY3VyaW91cywgdGhpcyBpcyB0aGUgX3R5cGUgb2YgdGhl
IGZ1bmN0aW9uXykuCi0gIDEuIFJlcGVhdCB1bnRpbCBhbGwgdmlydHVhbCBmdW5jdGlvbnMgeW91
IHdhbnQgdG8gbW9jayBhcmUgZG9uZS4KLQotQWZ0ZXIgdGhlIHByb2Nlc3MsIHlvdSBzaG91bGQg
aGF2ZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIgIC8v
IEJyaW5ncyBpbiBHb29nbGUgTW9jay4KLWNsYXNzIE1vY2tUdXJ0bGUgOiBwdWJsaWMgVHVydGxl
IHsKLSBwdWJsaWM6Ci0gIC4uLgotICBNT0NLX01FVEhPRDAoUGVuVXAsIHZvaWQoKSk7Ci0gIE1P
Q0tfTUVUSE9EMChQZW5Eb3duLCB2b2lkKCkpOwotICBNT0NLX01FVEhPRDEoRm9yd2FyZCwgdm9p
ZChpbnQgZGlzdGFuY2UpKTsKLSAgTU9DS19NRVRIT0QxKFR1cm4sIHZvaWQoaW50IGRlZ3JlZXMp
KTsKLSAgTU9DS19NRVRIT0QyKEdvVG8sIHZvaWQoaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfQ09O
U1RfTUVUSE9EMChHZXRYLCBpbnQoKSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChHZXRZLCBpbnQo
KSk7Ci19OwotYGBgCi0KLVlvdSBkb24ndCBuZWVkIHRvIGRlZmluZSB0aGVzZSBtb2NrIG1ldGhv
ZHMgc29tZXdoZXJlIGVsc2UgLSB0aGUgYE1PQ0tfTUVUSE9EKmAgbWFjcm9zIHdpbGwgZ2VuZXJh
dGUgdGhlIGRlZmluaXRpb25zIGZvciB5b3UuIEl0J3MgdGhhdCBzaW1wbGUhIE9uY2UgeW91IGdl
dCB0aGUgaGFuZyBvZiBpdCwgeW91IGNhbiBwdW1wIG91dCBtb2NrIGNsYXNzZXMgZmFzdGVyIHRo
YW4geW91ciBzb3VyY2UtY29udHJvbCBzeXN0ZW0gY2FuIGhhbmRsZSB5b3VyIGNoZWNrLWlucy4K
LQotKipUaXA6KiogSWYgZXZlbiB0aGlzIGlzIHRvbyBtdWNoIHdvcmsgZm9yIHlvdSwgeW91J2xs
IGZpbmQgdGhlCi1gZ21vY2tfZ2VuLnB5YCB0b29sIGluIEdvb2dsZSBNb2NrJ3MgYHNjcmlwdHMv
Z2VuZXJhdG9yL2AgZGlyZWN0b3J5IChjb3VydGVzeSBvZiB0aGUgW2NwcGNsZWFuXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvY3BwY2xlYW4vKSBwcm9qZWN0KSB1c2VmdWwuICBUaGlzIGNvbW1h
bmQtbGluZQotdG9vbCByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIFB5dGhvbiAyLjQgaW5zdGFsbGVk
LiAgWW91IGdpdmUgaXQgYSBDKysgZmlsZSBhbmQgdGhlIG5hbWUgb2YgYW4gYWJzdHJhY3QgY2xh
c3MgZGVmaW5lZCBpbiBpdCwKLWFuZCBpdCB3aWxsIHByaW50IHRoZSBkZWZpbml0aW9uIG9mIHRo
ZSBtb2NrIGNsYXNzIGZvciB5b3UuICBEdWUgdG8gdGhlCi1jb21wbGV4aXR5IG9mIHRoZSBDKysg
bGFuZ3VhZ2UsIHRoaXMgc2NyaXB0IG1heSBub3QgYWx3YXlzIHdvcmssIGJ1dAotaXQgY2FuIGJl
IHF1aXRlIGhhbmR5IHdoZW4gaXQgZG9lcy4gIEZvciBtb3JlIGRldGFpbHMsIHJlYWQgdGhlIFt1
c2VyIGRvY3VtZW50YXRpb25dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3Nv
dXJjZS9icm93c2UvdHJ1bmsvc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FKS4KLQotIyMgV2hlcmUg
dG8gUHV0IEl0ICMjCi1XaGVuIHlvdSBkZWZpbmUgYSBtb2NrIGNsYXNzLCB5b3UgbmVlZCB0byBk
ZWNpZGUgd2hlcmUgdG8gcHV0IGl0cyBkZWZpbml0aW9uLiBTb21lIHBlb3BsZSBwdXQgaXQgaW4g
YSBgKl90ZXN0LmNjYC4gVGhpcyBpcyBmaW5lIHdoZW4gdGhlIGludGVyZmFjZSBiZWluZyBtb2Nr
ZWQgKHNheSwgYEZvb2ApIGlzIG93bmVkIGJ5IHRoZSBzYW1lIHBlcnNvbiBvciB0ZWFtLiBPdGhl
cndpc2UsIHdoZW4gdGhlIG93bmVyIG9mIGBGb29gIGNoYW5nZXMgaXQsIHlvdXIgdGVzdCBjb3Vs
ZCBicmVhay4gKFlvdSBjYW4ndCByZWFsbHkgZXhwZWN0IGBGb29gJ3MgbWFpbnRhaW5lciB0byBm
aXggZXZlcnkgdGVzdCB0aGF0IHVzZXMgYEZvb2AsIGNhbiB5b3U/KQotCi1TbywgdGhlIHJ1bGUg
b2YgdGh1bWIgaXM6IGlmIHlvdSBuZWVkIHRvIG1vY2sgYEZvb2AgYW5kIGl0J3Mgb3duZWQgYnkg
b3RoZXJzLCBkZWZpbmUgdGhlIG1vY2sgY2xhc3MgaW4gYEZvb2AncyBwYWNrYWdlIChiZXR0ZXIs
IGluIGEgYHRlc3RpbmdgIHN1Yi1wYWNrYWdlIHN1Y2ggdGhhdCB5b3UgY2FuIGNsZWFybHkgc2Vw
YXJhdGUgcHJvZHVjdGlvbiBjb2RlIGFuZCB0ZXN0aW5nIHV0aWxpdGllcyksIGFuZCBwdXQgaXQg
aW4gYSBgbW9ja19mb28uaGAuIFRoZW4gZXZlcnlvbmUgY2FuIHJlZmVyZW5jZSBgbW9ja19mb28u
aGAgZnJvbSB0aGVpciB0ZXN0cy4gSWYgYEZvb2AgZXZlciBjaGFuZ2VzLCB0aGVyZSBpcyBvbmx5
IG9uZSBjb3B5IG9mIGBNb2NrRm9vYCB0byBjaGFuZ2UsIGFuZCBvbmx5IHRlc3RzIHRoYXQgZGVw
ZW5kIG9uIHRoZSBjaGFuZ2VkIG1ldGhvZHMgbmVlZCB0byBiZSBmaXhlZC4KLQotQW5vdGhlciB3
YXkgdG8gZG8gaXQ6IHlvdSBjYW4gaW50cm9kdWNlIGEgdGhpbiBsYXllciBgRm9vQWRhcHRvcmAg
b24gdG9wIG9mIGBGb29gIGFuZCBjb2RlIHRvIHRoaXMgbmV3IGludGVyZmFjZS4gU2luY2UgeW91
IG93biBgRm9vQWRhcHRvcmAsIHlvdSBjYW4gYWJzb3JiIGNoYW5nZXMgaW4gYEZvb2AgbXVjaCBt
b3JlIGVhc2lseS4gV2hpbGUgdGhpcyBpcyBtb3JlIHdvcmsgaW5pdGlhbGx5LCBjYXJlZnVsbHkg
Y2hvb3NpbmcgdGhlIGFkYXB0b3IgaW50ZXJmYWNlIGNhbiBtYWtlIHlvdXIgY29kZSBlYXNpZXIg
dG8gd3JpdGUgYW5kIG1vcmUgcmVhZGFibGUgKGEgbmV0IHdpbiBpbiB0aGUgbG9uZyBydW4pLCBh
cyB5b3UgY2FuIGNob29zZSBgRm9vQWRhcHRvcmAgdG8gZml0IHlvdXIgc3BlY2lmaWMgZG9tYWlu
IG11Y2ggYmV0dGVyIHRoYW4gYEZvb2AgZG9lcy4KLQotIyBVc2luZyBNb2NrcyBpbiBUZXN0cyAj
Ci1PbmNlIHlvdSBoYXZlIGEgbW9jayBjbGFzcywgdXNpbmcgaXQgaXMgZWFzeS4gVGhlIHR5cGlj
YWwgd29yayBmbG93IGlzOgotCi0gIDEuIEltcG9ydCB0aGUgR29vZ2xlIE1vY2sgbmFtZXMgZnJv
bSB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZSBzdWNoIHRoYXQgeW91IGNhbiB1c2UgdGhlbSB1bnF1
YWxpZmllZCAoWW91IG9ubHkgaGF2ZSB0byBkbyBpdCBvbmNlIHBlciBmaWxlLiBSZW1lbWJlciB0
aGF0IG5hbWVzcGFjZXMgYXJlIGEgZ29vZCBpZGVhIGFuZCBnb29kIGZvciB5b3VyIGhlYWx0aC4p
LgotICAxLiBDcmVhdGUgc29tZSBtb2NrIG9iamVjdHMuCi0gIDEuIFNwZWNpZnkgeW91ciBleHBl
Y3RhdGlvbnMgb24gdGhlbSAoSG93IG1hbnkgdGltZXMgd2lsbCBhIG1ldGhvZCBiZSBjYWxsZWQ/
IFdpdGggd2hhdCBhcmd1bWVudHM/IFdoYXQgc2hvdWxkIGl0IGRvPyBldGMuKS4KLSAgMS4gRXhl
cmNpc2Ugc29tZSBjb2RlIHRoYXQgdXNlcyB0aGUgbW9ja3M7IG9wdGlvbmFsbHksIGNoZWNrIHRo
ZSByZXN1bHQgdXNpbmcgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucy4gSWYgYSBtb2NrIG1ldGhvZCBp
cyBjYWxsZWQgbW9yZSB0aGFuIGV4cGVjdGVkIG9yIHdpdGggd3JvbmcgYXJndW1lbnRzLCB5b3Un
bGwgZ2V0IGFuIGVycm9yIGltbWVkaWF0ZWx5LgotICAxLiBXaGVuIGEgbW9jayBpcyBkZXN0cnVj
dGVkLCBHb29nbGUgTW9jayB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgd2hldGhlciBhbGwgZXhw
ZWN0YXRpb25zIG9uIGl0IGhhdmUgYmVlbiBzYXRpc2ZpZWQuCi0KLUhlcmUncyBhbiBleGFtcGxl
OgotCi1gYGAKLSNpbmNsdWRlICJwYXRoL3RvL21vY2stdHVydGxlLmgiCi0jaW5jbHVkZSAiZ21v
Y2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotdXNpbmcgOjp0ZXN0aW5nOjpB
dExlYXN0OyAgICAgICAgICAgICAgICAgICAgIC8vICMxCi0KLVRFU1QoUGFpbnRlclRlc3QsIENh
bkRyYXdTb21ldGhpbmcpIHsKLSAgTW9ja1R1cnRsZSB0dXJ0bGU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAjMgotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSkgICAgICAgICAg
ICAgIC8vICMzCi0gICAgICAuVGltZXMoQXRMZWFzdCgxKSk7Ci0KLSAgUGFpbnRlciBwYWludGVy
KCZ0dXJ0bGUpOyAgICAgICAgICAgICAgICAgICAvLyAjNAotCi0gIEVYUEVDVF9UUlVFKHBhaW50
ZXIuRHJhd0NpcmNsZSgwLCAwLCAxMCkpOwotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vICM1Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikg
ewotICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgbXVzdCBiZSBleGVjdXRlZCB0byBpbml0aWFsaXpl
IEdvb2dsZSBNb2NrCi0gIC8vIChhbmQgR29vZ2xlIFRlc3QpIGJlZm9yZSBydW5uaW5nIHRoZSB0
ZXN0cy4KLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0gIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotQXMgeW91IG1pZ2h0IGhhdmUgZ3Vlc3NlZCwg
dGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGBQZW5Eb3duKClgIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmNl
LiBJZiB0aGUgYHBhaW50ZXJgIG9iamVjdCBkaWRuJ3QgY2FsbCB0aGlzIG1ldGhvZCwgeW91ciB0
ZXN0IHdpbGwgZmFpbCB3aXRoIGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0KLWBgYAotcGF0aC90by9t
eV90ZXN0LmNjOjExOTogRmFpbHVyZQotQWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24n
dCBtYXRjaCB0aGlzIGV4cGVjdGF0aW9uOgotQWN0dWFsbHk6IG5ldmVyIGNhbGxlZDsKLUV4cGVj
dGVkOiBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KLWBgYAotCi0qKlRpcCAxOioqIElmIHlvdSBydW4g
dGhlIHRlc3QgZnJvbSBhbiBFbWFjcyBidWZmZXIsIHlvdSBjYW4gaGl0IGA8RW50ZXI+YCBvbiB0
aGUgbGluZSBudW1iZXIgZGlzcGxheWVkIGluIHRoZSBlcnJvciBtZXNzYWdlIHRvIGp1bXAgcmln
aHQgdG8gdGhlIGZhaWxlZCBleHBlY3RhdGlvbi4KLQotKipUaXAgMjoqKiBJZiB5b3VyIG1vY2sg
b2JqZWN0cyBhcmUgbmV2ZXIgZGVsZXRlZCwgdGhlIGZpbmFsIHZlcmlmaWNhdGlvbiB3b24ndCBo
YXBwZW4uIFRoZXJlZm9yZSBpdCdzIGEgZ29vZCBpZGVhIHRvIHVzZSBhIGhlYXAgbGVhayBjaGVj
a2VyIGluIHlvdXIgdGVzdHMgd2hlbiB5b3UgYWxsb2NhdGUgbW9ja3Mgb24gdGhlIGhlYXAuCi0K
LSoqSW1wb3J0YW50IG5vdGU6KiogR29vZ2xlIE1vY2sgcmVxdWlyZXMgZXhwZWN0YXRpb25zIHRv
IGJlIHNldCAqKmJlZm9yZSoqIHRoZSBtb2NrIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCBvdGhlcndp
c2UgdGhlIGJlaGF2aW9yIGlzICoqdW5kZWZpbmVkKiouIEluIHBhcnRpY3VsYXIsIHlvdSBtdXN0
bid0IGludGVybGVhdmUgYEVYUEVDVF9DQUxMKClgcyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgZnVu
Y3Rpb25zLgotCi1UaGlzIG1lYW5zIGBFWFBFQ1RfQ0FMTCgpYCBzaG91bGQgYmUgcmVhZCBhcyBl
eHBlY3RpbmcgdGhhdCBhIGNhbGwgd2lsbCBvY2N1ciBfaW4gdGhlIGZ1dHVyZV8sIG5vdCB0aGF0
IGEgY2FsbCBoYXMgb2NjdXJyZWQuIFdoeSBkb2VzIEdvb2dsZSBNb2NrIHdvcmsgbGlrZSB0aGF0
PyBXZWxsLCBzcGVjaWZ5aW5nIHRoZSBleHBlY3RhdGlvbiBiZWZvcmVoYW5kIGFsbG93cyBHb29n
bGUgTW9jayB0byByZXBvcnQgYSB2aW9sYXRpb24gYXMgc29vbiBhcyBpdCBhcmlzZXMsIHdoZW4g
dGhlIGNvbnRleHQgKHN0YWNrIHRyYWNlLCBldGMpIGlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBt
YWtlcyBkZWJ1Z2dpbmcgbXVjaCBlYXNpZXIuCi0KLUFkbWl0dGVkbHksIHRoaXMgdGVzdCBpcyBj
b250cml2ZWQgYW5kIGRvZXNuJ3QgZG8gbXVjaC4gWW91IGNhbiBlYXNpbHkgYWNoaWV2ZSB0aGUg
c2FtZSBlZmZlY3Qgd2l0aG91dCB1c2luZyBHb29nbGUgTW9jay4gSG93ZXZlciwgYXMgd2Ugc2hh
bGwgcmV2ZWFsIHNvb24sIEdvb2dsZSBNb2NrIGFsbG93cyB5b3UgdG8gZG8gX211Y2ggbW9yZV8g
d2l0aCB0aGUgbW9ja3MuCi0KLSMjIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggQW55IFRlc3Rpbmcg
RnJhbWV3b3JrICMjCi1JZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gR29v
Z2xlIFRlc3QgKGUuZy4gW0NwcFVuaXRdKGh0dHA6Ly9hcHBzLnNvdXJjZWZvcmdlLm5ldC9tZWRp
YXdpa2kvY3BwdW5pdC9pbmRleC5waHA/dGl0bGU9TWFpbl9QYWdlKSBvcgotW0N4eFRlc3RdKGh0
dHA6Ly9jeHh0ZXN0LnRpZ3Jpcy5vcmcvKSkgYXMgeW91ciB0ZXN0aW5nIGZyYW1ld29yaywganVz
dCBjaGFuZ2UgdGhlIGBtYWluKClgIGZ1bmN0aW9uIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHRv
OgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgLy8gVGhlIGZvbGxv
d2luZyBsaW5lIGNhdXNlcyBHb29nbGUgTW9jayB0byB0aHJvdyBhbiBleGNlcHRpb24gb24gZmFp
bHVyZSwKLSAgLy8gd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBieSB5b3VyIHRlc3RpbmcgZnJh
bWV3b3JrIGFzIGEgdGVzdCBmYWlsdXJlLgotICA6OnRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3df
b25fZmFpbHVyZSkgPSB0cnVlOwotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVNb2NrKCZhcmdjLCBh
cmd2KTsKLSAgLi4uIHdoYXRldmVyIHlvdXIgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4u
Ci19Ci1gYGAKLQotVGhpcyBhcHByb2FjaCBoYXMgYSBjYXRjaDogaXQgbWFrZXMgR29vZ2xlIE1v
Y2sgdGhyb3cgYW4gZXhjZXB0aW9uCi1mcm9tIGEgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yIHNv
bWV0aW1lcy4gIFdpdGggc29tZSBjb21waWxlcnMsIHRoaXMKLXNvbWV0aW1lcyBjYXVzZXMgdGhl
IHRlc3QgcHJvZ3JhbSB0byBjcmFzaC4gIFlvdSdsbCBzdGlsbCBiZSBhYmxlIHRvCi1ub3RpY2Ug
dGhhdCB0aGUgdGVzdCBoYXMgZmFpbGVkLCBidXQgaXQncyBub3QgYSBncmFjZWZ1bCBmYWlsdXJl
LgotCi1BIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgR29vZ2xlIFRlc3QncwotW2V2ZW50IGxp
c3RlbmVyIEFQSV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvd2lraS9BZHZh
bmNlZEd1aWRlI0V4dGVuZGluZ19Hb29nbGVfVGVzdF9ieV9IYW5kbGluZ19UZXN0X0V2ZW50cykK
LXRvIHJlcG9ydCBhIHRlc3QgZmFpbHVyZSB0byB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3Bl
cmx5LiAgWW91J2xsIG5lZWQgdG8KLWltcGxlbWVudCB0aGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAg
bWV0aG9kIG9mIHRoZSBldmVudCBsaXN0ZW5lciBpbnRlcmZhY2UsIGJ1dCBpdAotc2hvdWxkIGJl
IHN0cmFpZ2h0Zm9yd2FyZC4KLQotSWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgdG9vIG11Y2ggd29y
aywgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGljayB3aXRoCi1Hb29nbGUgVGVzdCwgd2hpY2ggd29y
a3Mgd2l0aCBHb29nbGUgTW9jayBzZWFtbGVzc2x5IChpbiBmYWN0LCBpdCBpcwotdGVjaG5pY2Fs
bHkgcGFydCBvZiBHb29nbGUgTW9jay4pLiAgSWYgdGhlcmUgaXMgYSByZWFzb24gdGhhdCB5b3UK
LWNhbm5vdCB1c2UgR29vZ2xlIFRlc3QsIHBsZWFzZSBsZXQgdXMga25vdy4KLQotIyBTZXR0aW5n
IEV4cGVjdGF0aW9ucyAjCi1UaGUga2V5IHRvIHVzaW5nIGEgbW9jayBvYmplY3Qgc3VjY2Vzc2Z1
bGx5IGlzIHRvIHNldCB0aGUgX3JpZ2h0IGV4cGVjdGF0aW9uc18gb24gaXQuIElmIHlvdSBzZXQg
dGhlIGV4cGVjdGF0aW9ucyB0b28gc3RyaWN0LCB5b3VyIHRlc3Qgd2lsbCBmYWlsIGFzIHRoZSBy
ZXN1bHQgb2YgdW5yZWxhdGVkIGNoYW5nZXMuIElmIHlvdSBzZXQgdGhlbSB0b28gbG9vc2UsIGJ1
Z3MgY2FuIHNsaXAgdGhyb3VnaC4gWW91IHdhbnQgdG8gZG8gaXQganVzdCByaWdodCBzdWNoIHRo
YXQgeW91ciB0ZXN0IGNhbiBjYXRjaCBleGFjdGx5IHRoZSBraW5kIG9mIGJ1Z3MgeW91IGludGVu
ZCBpdCB0byBjYXRjaC4gR29vZ2xlIE1vY2sgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBtZWFucyBm
b3IgeW91IHRvIGRvIGl0ICJqdXN0IHJpZ2h0LiIKLQotIyMgR2VuZXJhbCBTeW50YXggIyMKLUlu
IEdvb2dsZSBNb2NrIHdlIHVzZSB0aGUgYEVYUEVDVF9DQUxMKClgIG1hY3JvIHRvIHNldCBhbiBl
eHBlY3RhdGlvbiBvbiBhIG1vY2sgbWV0aG9kLiBUaGUgZ2VuZXJhbCBzeW50YXggaXM6Ci0KLWBg
YAotRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIG1ldGhvZChtYXRjaGVycykpCi0gICAgLlRpbWVz
KGNhcmRpbmFsaXR5KQotICAgIC5XaWxsT25jZShhY3Rpb24pCi0gICAgLldpbGxSZXBlYXRlZGx5
KGFjdGlvbik7Ci1gYGAKLQotVGhlIG1hY3JvIGhhcyB0d28gYXJndW1lbnRzOiBmaXJzdCB0aGUg
bW9jayBvYmplY3QsIGFuZCB0aGVuIHRoZSBtZXRob2QgYW5kIGl0cyBhcmd1bWVudHMuIE5vdGUg
dGhhdCB0aGUgdHdvIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSAoYCxgKSwgbm90IGEgcGVyaW9k
IChgLmApLiAoV2h5IHVzaW5nIGEgY29tbWE/IFRoZSBhbnN3ZXIgaXMgdGhhdCBpdCB3YXMgbmVj
ZXNzYXJ5IGZvciB0ZWNobmljYWwgcmVhc29ucy4pCi0KLVRoZSBtYWNybyBjYW4gYmUgZm9sbG93
ZWQgYnkgc29tZSBvcHRpb25hbCBfY2xhdXNlc18gdGhhdCBwcm92aWRlIG1vcmUgaW5mb3JtYXRp
b24gYWJvdXQgdGhlIGV4cGVjdGF0aW9uLiBXZSdsbCBkaXNjdXNzIGhvdyBlYWNoIGNsYXVzZSB3
b3JrcyBpbiB0aGUgY29taW5nIHNlY3Rpb25zLgotCi1UaGlzIHN5bnRheCBpcyBkZXNpZ25lZCB0
byBtYWtlIGFuIGV4cGVjdGF0aW9uIHJlYWQgbGlrZSBFbmdsaXNoLiBGb3IgZXhhbXBsZSwgeW91
IGNhbiBwcm9iYWJseSBndWVzcyB0aGF0Ci0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47
Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuVGltZXMoNSkKLSAgICAuV2ls
bE9uY2UoUmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigxNTApKQotICAgIC5XaWxs
UmVwZWF0ZWRseShSZXR1cm4oMjAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IHRoZSBgdHVydGxlYCBv
YmplY3QncyBgR2V0WCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZml2ZSB0aW1lcywgaXQgd2ls
bCByZXR1cm4gMTAwIHRoZSBmaXJzdCB0aW1lLCAxNTAgdGhlIHNlY29uZCB0aW1lLCBhbmQgdGhl
biAyMDAgZXZlcnkgdGltZS4gU29tZSBwZW9wbGUgbGlrZSB0byBjYWxsIHRoaXMgc3R5bGUgb2Yg
c3ludGF4IGEgRG9tYWluLVNwZWNpZmljIExhbmd1YWdlIChEU0wpLgotCi0qKk5vdGU6KiogV2h5
IGRvIHdlIHVzZSBhIG1hY3JvIHRvIGRvIHRoaXM/IEl0IHNlcnZlcyB0d28gcHVycG9zZXM6IGZp
cnN0IGl0IG1ha2VzIGV4cGVjdGF0aW9ucyBlYXNpbHkgaWRlbnRpZmlhYmxlIChlaXRoZXIgYnkg
YGdyZXBgIG9yIGJ5IGEgaHVtYW4gcmVhZGVyKSwgYW5kIHNlY29uZCBpdCBhbGxvd3MgR29vZ2xl
IE1vY2sgdG8gaW5jbHVkZSB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgYSBmYWlsZWQgZXhw
ZWN0YXRpb24gaW4gbWVzc2FnZXMsIG1ha2luZyBkZWJ1Z2dpbmcgZWFzaWVyLgotCi0jIyBNYXRj
aGVyczogV2hhdCBBcmd1bWVudHMgRG8gV2UgRXhwZWN0PyAjIwotV2hlbiBhIG1vY2sgZnVuY3Rp
b24gdGFrZXMgYXJndW1lbnRzLCB3ZSBtdXN0IHNwZWNpZnkgd2hhdCBhcmd1bWVudHMgd2UgYXJl
IGV4cGVjdGluZzsgZm9yIGV4YW1wbGU6Ci0KLWBgYAotLy8gRXhwZWN0cyB0aGUgdHVydGxlIHRv
IG1vdmUgZm9yd2FyZCBieSAxMDAgdW5pdHMuCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQo
MTAwKSk7Ci1gYGAKLQotU29tZXRpbWVzIHlvdSBtYXkgbm90IHdhbnQgdG8gYmUgdG9vIHNwZWNp
ZmljIChSZW1lbWJlciB0aGF0IHRhbGsgYWJvdXQgdGVzdHMgYmVpbmcgdG9vIHJpZ2lkPyBPdmVy
IHNwZWNpZmljYXRpb24gbGVhZHMgdG8gYnJpdHRsZSB0ZXN0cyBhbmQgb2JzY3VyZXMgdGhlIGlu
dGVudCBvZiB0ZXN0cy4gVGhlcmVmb3JlIHdlIGVuY291cmFnZSB5b3UgdG8gc3BlY2lmeSBvbmx5
IHdoYXQncyBuZWNlc3NhcnkgLSBubyBtb3JlLCBubyBsZXNzLikuIElmIHlvdSBjYXJlIHRvIGNo
ZWNrIHRoYXQgYEZvcndhcmQoKWAgd2lsbCBiZSBjYWxsZWQgYnV0IGFyZW4ndCBpbnRlcmVzdGVk
IGluIGl0cyBhY3R1YWwgYXJndW1lbnQsIHdyaXRlIGBfYCBhcyB0aGUgYXJndW1lbnQsIHdoaWNo
IG1lYW5zICJhbnl0aGluZyBnb2VzIjoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Ci0uLi4K
LS8vIEV4cGVjdHMgdGhlIHR1cnRsZSB0byBtb3ZlIGZvcndhcmQuCi1FWFBFQ1RfQ0FMTCh0dXJ0
bGUsIEZvcndhcmQoXykpOwotYGBgCi0KLWBfYCBpcyBhbiBpbnN0YW5jZSBvZiB3aGF0IHdlIGNh
bGwgKiptYXRjaGVycyoqLiBBIG1hdGNoZXIgaXMgbGlrZSBhIHByZWRpY2F0ZSBhbmQgY2FuIHRl
c3Qgd2hldGhlciBhbiBhcmd1bWVudCBpcyB3aGF0IHdlJ2QgZXhwZWN0LiBZb3UgY2FuIHVzZSBh
IG1hdGNoZXIgaW5zaWRlIGBFWFBFQ1RfQ0FMTCgpYCB3aGVyZXZlciBhIGZ1bmN0aW9uIGFyZ3Vt
ZW50IGlzIGV4cGVjdGVkLgotCi1BIGxpc3Qgb2YgYnVpbHQtaW4gbWF0Y2hlcnMgY2FuIGJlIGZv
dW5kIGluIHRoZSBbQ2hlYXRTaGVldF0oVjFfN19DaGVhdFNoZWV0Lm1kKS4gRm9yIGV4YW1wbGUs
IGhlcmUncyB0aGUgYEdlYCAoZ3JlYXRlciB0aGFuIG9yIGVxdWFsKSBtYXRjaGVyOgotCi1gYGAK
LXVzaW5nIDo6dGVzdGluZzo6R2U7Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEZvcndhcmQoR2Uo
MTAwKSkpOwotYGBgCi0KLVRoaXMgY2hlY2tzIHRoYXQgdGhlIHR1cnRsZSB3aWxsIGJlIHRvbGQg
dG8gZ28gZm9yd2FyZCBieSBhdCBsZWFzdCAxMDAgdW5pdHMuCi0KLSMjIENhcmRpbmFsaXRpZXM6
IEhvdyBNYW55IFRpbWVzIFdpbGwgSXQgQmUgQ2FsbGVkPyAjIwotVGhlIGZpcnN0IGNsYXVzZSB3
ZSBjYW4gc3BlY2lmeSBmb2xsb3dpbmcgYW4gYEVYUEVDVF9DQUxMKClgIGlzIGBUaW1lcygpYC4g
V2UgY2FsbCBpdHMgYXJndW1lbnQgYSAqKmNhcmRpbmFsaXR5KiogYXMgaXQgdGVsbHMgX2hvdyBt
YW55IHRpbWVzXyB0aGUgY2FsbCBzaG91bGQgb2NjdXIuIEl0IGFsbG93cyB1cyB0byByZXBlYXQg
YW4gZXhwZWN0YXRpb24gbWFueSB0aW1lcyB3aXRob3V0IGFjdHVhbGx5IHdyaXRpbmcgaXQgYXMg
bWFueSB0aW1lcy4gTW9yZSBpbXBvcnRhbnRseSwgYSBjYXJkaW5hbGl0eSBjYW4gYmUgImZ1enp5
IiwganVzdCBsaWtlIGEgbWF0Y2hlciBjYW4gYmUuIFRoaXMgYWxsb3dzIGEgdXNlciB0byBleHBy
ZXNzIHRoZSBpbnRlbnQgb2YgYSB0ZXN0IGV4YWN0bHkuCi0KLUFuIGludGVyZXN0aW5nIHNwZWNp
YWwgY2FzZSBpcyB3aGVuIHdlIHNheSBgVGltZXMoMClgLiBZb3UgbWF5IGhhdmUgZ3Vlc3NlZCAt
IGl0IG1lYW5zIHRoYXQgdGhlIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCB0aGUg
Z2l2ZW4gYXJndW1lbnRzIGF0IGFsbCwgYW5kIEdvb2dsZSBNb2NrIHdpbGwgcmVwb3J0IGEgR29v
Z2xlIFRlc3QgZmFpbHVyZSB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgKHdyb25nZnVsbHkpIGNh
bGxlZC4KLQotV2UndmUgc2VlbiBgQXRMZWFzdChuKWAgYXMgYW4gZXhhbXBsZSBvZiBmdXp6eSBj
YXJkaW5hbGl0aWVzIGVhcmxpZXIuIEZvciB0aGUgbGlzdCBvZiBidWlsdC1pbiBjYXJkaW5hbGl0
aWVzIHlvdSBjYW4gdXNlLCBzZWUgdGhlIFtDaGVhdFNoZWV0XShWMV83X0NoZWF0U2hlZXQubWQp
LgotCi1UaGUgYFRpbWVzKClgIGNsYXVzZSBjYW4gYmUgb21pdHRlZC4gKipJZiB5b3Ugb21pdCBg
VGltZXMoKWAsIEdvb2dsZSBNb2NrIHdpbGwgaW5mZXIgdGhlIGNhcmRpbmFsaXR5IGZvciB5b3Uu
KiogVGhlIHJ1bGVzIGFyZSBlYXN5IHRvIHJlbWVtYmVyOgotCi0gICogSWYgKipuZWl0aGVyKiog
YFdpbGxPbmNlKClgICoqbm9yKiogYFdpbGxSZXBlYXRlZGx5KClgIGlzIGluIHRoZSBgRVhQRUNU
X0NBTEwoKWAsIHRoZSBpbmZlcnJlZCBjYXJkaW5hbGl0eSBpcyBgVGltZXMoMSlgLgotICAqIElm
IHRoZXJlIGFyZSBgbiBXaWxsT25jZSgpYCdzIGJ1dCAqKm5vKiogYFdpbGxSZXBlYXRlZGx5KClg
LCB3aGVyZSBgbmAgPj0gMSwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhuKWAuCi0gICogSWYg
dGhlcmUgYXJlIGBuIFdpbGxPbmNlKClgJ3MgYW5kICoqb25lKiogYFdpbGxSZXBlYXRlZGx5KClg
LCB3aGVyZSBgbmAgPj0gMCwgdGhlIGNhcmRpbmFsaXR5IGlzIGBUaW1lcyhBdExlYXN0KG4pKWAu
Ci0KLSoqUXVpY2sgcXVpejoqKiB3aGF0IGRvIHlvdSB0aGluayB3aWxsIGhhcHBlbiBpZiBhIGZ1
bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSBidXQgYWN0dWFsbHkgY2FsbGVk
IGZvdXIgdGltZXM/Ci0KLSMjIEFjdGlvbnM6IFdoYXQgU2hvdWxkIEl0IERvPyAjIwotUmVtZW1i
ZXIgdGhhdCBhIG1vY2sgb2JqZWN0IGRvZXNuJ3QgcmVhbGx5IGhhdmUgYSB3b3JraW5nIGltcGxl
bWVudGF0aW9uPyBXZSBhcyB1c2VycyBoYXZlIHRvIHRlbGwgaXQgd2hhdCB0byBkbyB3aGVuIGEg
bWV0aG9kIGlzIGludm9rZWQuIFRoaXMgaXMgZWFzeSBpbiBHb29nbGUgTW9jay4KLQotRmlyc3Qs
IGlmIHRoZSByZXR1cm4gdHlwZSBvZiBhIG1vY2sgZnVuY3Rpb24gaXMgYSBidWlsdC1pbiB0eXBl
IG9yIGEgcG9pbnRlciwgdGhlIGZ1bmN0aW9uIGhhcyBhICoqZGVmYXVsdCBhY3Rpb24qKiAoYSBg
dm9pZGAgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgYSBgYm9vbGAgZnVuY3Rpb24gd2lsbCBy
ZXR1cm4gYGZhbHNlYCwgYW5kIG90aGVyIGZ1bmN0aW9ucyB3aWxsIHJldHVybiAwKS4gSWYgeW91
IGRvbid0IHNheSBhbnl0aGluZywgdGhpcyBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCi0KLVNlY29u
ZCwgaWYgYSBtb2NrIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgYWN0aW9uLCBvciB0
aGUgZGVmYXVsdCBhY3Rpb24gZG9lc24ndCBzdWl0IHlvdSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBh
Y3Rpb24gdG8gYmUgdGFrZW4gZWFjaCB0aW1lIHRoZSBleHBlY3RhdGlvbiBtYXRjaGVzIHVzaW5n
IGEgc2VyaWVzIG9mIGBXaWxsT25jZSgpYCBjbGF1c2VzIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFs
IGBXaWxsUmVwZWF0ZWRseSgpYC4gRm9yIGV4YW1wbGUsCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5n
OjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkKLSAgICAuV2lsbE9uY2Uo
UmV0dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxsT25jZShS
ZXR1cm4oMzAwKSk7Ci1gYGAKLQotVGhpcyBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwg
YmUgY2FsbGVkIF9leGFjdGx5IHRocmVlIHRpbWVzXyAoR29vZ2xlIE1vY2sgaW5mZXJyZWQgdGhp
cyBmcm9tIGhvdyBtYW55IGBXaWxsT25jZSgpYCBjbGF1c2VzIHdlJ3ZlIHdyaXR0ZW4sIHNpbmNl
IHdlIGRpZG4ndCBleHBsaWNpdGx5IHdyaXRlIGBUaW1lcygpYCksIGFuZCB3aWxsIHJldHVybiAx
MDAsIDIwMCwgYW5kIDMwMCByZXNwZWN0aXZlbHkuCi0KLWBgYAotdXNpbmcgOjp0ZXN0aW5nOjpS
ZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLSAgICAuV2lsbE9uY2UoUmV0
dXJuKDEwMCkpCi0gICAgLldpbGxPbmNlKFJldHVybigyMDApKQotICAgIC5XaWxsUmVwZWF0ZWRs
eShSZXR1cm4oMzAwKSk7Ci1gYGAKLQotc2F5cyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3aWxsIGJl
IGNhbGxlZCBfYXQgbGVhc3QgdHdpY2VfIChHb29nbGUgTW9jayBrbm93cyB0aGlzIGFzIHdlJ3Zl
IHdyaXR0ZW4gdHdvIGBXaWxsT25jZSgpYCBjbGF1c2VzIGFuZCBhIGBXaWxsUmVwZWF0ZWRseSgp
YCB3aGlsZSBoYXZpbmcgbm8gZXhwbGljaXQgYFRpbWVzKClgKSwgd2lsbCByZXR1cm4gMTAwIHRo
ZSBmaXJzdCB0aW1lLCAyMDAgdGhlIHNlY29uZCB0aW1lLCBhbmQgMzAwIGZyb20gdGhlIHRoaXJk
IHRpbWUgb24uCi0KLU9mIGNvdXJzZSwgaWYgeW91IGV4cGxpY2l0bHkgd3JpdGUgYSBgVGltZXMo
KWAsIEdvb2dsZSBNb2NrIHdpbGwgbm90IHRyeSB0byBpbmZlciB0aGUgY2FyZGluYWxpdHkgaXRz
ZWxmLiBXaGF0IGlmIHRoZSBudW1iZXIgeW91IHNwZWNpZmllZCBpcyBsYXJnZXIgdGhhbiB0aGVy
ZSBhcmUgYFdpbGxPbmNlKClgIGNsYXVzZXM/IFdlbGwsIGFmdGVyIGFsbCBgV2lsbE9uY2UoKWBz
IGFyZSB1c2VkIHVwLCBHb29nbGUgTW9jayB3aWxsIGRvIHRoZSBfZGVmYXVsdF8gYWN0aW9uIGZv
ciB0aGUgZnVuY3Rpb24gZXZlcnkgdGltZSAodW5sZXNzLCBvZiBjb3Vyc2UsIHlvdSBoYXZlIGEg
YFdpbGxSZXBlYXRlZGx5KClgLikuCi0KLVdoYXQgY2FuIHdlIGRvIGluc2lkZSBgV2lsbE9uY2Uo
KWAgYmVzaWRlcyBgUmV0dXJuKClgPyBZb3UgY2FuIHJldHVybiBhIHJlZmVyZW5jZSB1c2luZyBg
UmV0dXJuUmVmKHZhcmlhYmxlKWAsIG9yIGludm9rZSBhIHByZS1kZWZpbmVkIGZ1bmN0aW9uLCBh
bW9uZyBbb3RoZXJzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1Yx
XzdfQ2hlYXRTaGVldCNBY3Rpb25zKS4KLQotKipJbXBvcnRhbnQgbm90ZToqKiBUaGUgYEVYUEVD
VF9DQUxMKClgIHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGFjdGlvbiBjbGF1c2Ugb25seSBvbmNl
LCBldmVuIHRob3VnaCB0aGUgYWN0aW9uIG1heSBiZSBwZXJmb3JtZWQgbWFueSB0aW1lcy4gVGhl
cmVmb3JlIHlvdSBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgc2lkZSBlZmZlY3RzLiBUaGUgZm9sbG93
aW5nIG1heSBub3QgZG8gd2hhdCB5b3Ugd2FudDoKLQotYGBgCi1pbnQgbiA9IDEwMDsKLUVYUEVD
VF9DQUxMKHR1cnRsZSwgR2V0WCgpKQotLlRpbWVzKDQpCi0uV2lsbFJlcGVhdGVkbHkoUmV0dXJu
KG4rKykpOwotYGBgCi0KLUluc3RlYWQgb2YgcmV0dXJuaW5nIDEwMCwgMTAxLCAxMDIsIC4uLiwg
Y29uc2VjdXRpdmVseSwgdGhpcyBtb2NrIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAxMDAg
YXMgYG4rK2AgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gU2ltaWxhcmx5LCBgUmV0dXJuKG5ldyBG
b28pYCB3aWxsIGNyZWF0ZSBhIG5ldyBgRm9vYCBvYmplY3Qgd2hlbiB0aGUgYEVYUEVDVF9DQUxM
KClgIGlzIGV4ZWN1dGVkLCBhbmQgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciBldmVyeSB0
aW1lLiBJZiB5b3Ugd2FudCB0aGUgc2lkZSBlZmZlY3QgdG8gaGFwcGVuIGV2ZXJ5IHRpbWUsIHlv
dSBuZWVkIHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24sIHdoaWNoIHdlJ2xsIHRlYWNoIGluIHRo
ZSBbQ29va0Jvb2tdKFYxXzdfQ29va0Jvb2subWQpLgotCi1UaW1lIGZvciBhbm90aGVyIHF1aXoh
IFdoYXQgZG8geW91IHRoaW5rIHRoZSBmb2xsb3dpbmcgbWVhbnM/Ci0KLWBgYAotdXNpbmcgOjp0
ZXN0aW5nOjpSZXR1cm47Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFkoKSkKLS5UaW1lcyg0
KQotLldpbGxPbmNlKFJldHVybigxMDApKTsKLWBgYAotCi1PYnZpb3VzbHkgYHR1cnRsZS5HZXRZ
KClgIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmb3VyIHRpbWVzLiBCdXQgaWYgeW91IHRoaW5r
IGl0IHdpbGwgcmV0dXJuIDEwMCBldmVyeSB0aW1lLCB0aGluayB0d2ljZSEgUmVtZW1iZXIgdGhh
dCBvbmUgYFdpbGxPbmNlKClgIGNsYXVzZSB3aWxsIGJlIGNvbnN1bWVkIGVhY2ggdGltZSB0aGUg
ZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlIGRlZmF1bHQgYWN0aW9uIHdpbGwgYmUgdGFrZW4g
YWZ0ZXJ3YXJkcy4gU28gdGhlIHJpZ2h0IGFuc3dlciBpcyB0aGF0IGB0dXJ0bGUuR2V0WSgpYCB3
aWxsIHJldHVybiAxMDAgdGhlIGZpcnN0IHRpbWUsIGJ1dCAqKnJldHVybiAwIGZyb20gdGhlIHNl
Y29uZCB0aW1lIG9uKiosIGFzIHJldHVybmluZyAwIGlzIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3Ig
YGludGAgZnVuY3Rpb25zLgotCi0jIyBVc2luZyBNdWx0aXBsZSBFeHBlY3RhdGlvbnMgIyMKLVNv
IGZhciB3ZSd2ZSBvbmx5IHNob3duIGV4YW1wbGVzIHdoZXJlIHlvdSBoYXZlIGEgc2luZ2xlIGV4
cGVjdGF0aW9uLiBNb3JlIHJlYWxpc3RpY2FsbHksIHlvdSdyZSBnb2luZyB0byBzcGVjaWZ5IGV4
cGVjdGF0aW9ucyBvbiBtdWx0aXBsZSBtb2NrIG1ldGhvZHMsIHdoaWNoIG1heSBiZSBmcm9tIG11
bHRpcGxlIG1vY2sgb2JqZWN0cy4KLQotQnkgZGVmYXVsdCwgd2hlbiBhIG1vY2sgbWV0aG9kIGlz
IGludm9rZWQsIEdvb2dsZSBNb2NrIHdpbGwgc2VhcmNoIHRoZSBleHBlY3RhdGlvbnMgaW4gdGhl
ICoqcmV2ZXJzZSBvcmRlcioqIHRoZXkgYXJlIGRlZmluZWQsIGFuZCBzdG9wIHdoZW4gYW4gYWN0
aXZlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIGlzIGZvdW5kICh5b3Ug
Y2FuIHRoaW5rIG9mIGl0IGFzICJuZXdlciBydWxlcyBvdmVycmlkZSBvbGRlciBvbmVzLiIpLiBJ
ZiB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gY2Fubm90IHRha2UgYW55IG1vcmUgY2FsbHMsIHlv
dSB3aWxsIGdldCBhbiB1cHBlci1ib3VuZC12aW9sYXRlZCBmYWlsdXJlLiBIZXJlJ3MgYW4gZXhh
bXBsZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4uCi1FWFBFQ1RfQ0FMTCh0dXJ0bGUs
IEZvcndhcmQoXykpOyAgLy8gIzEKLUVYUEVDVF9DQUxMKHR1cnRsZSwgRm9yd2FyZCgxMCkpICAv
LyAjMgotICAgIC5UaW1lcygyKTsKLWBgYAotCi1JZiBgRm9yd2FyZCgxMClgIGlzIGNhbGxlZCB0
aHJlZSB0aW1lcyBpbiBhIHJvdywgdGhlIHRoaXJkIHRpbWUgaXQgd2lsbCBiZSBhbiBlcnJvciwg
YXMgdGhlIGxhc3QgbWF0Y2hpbmcgZXhwZWN0YXRpb24gKCMyKSBoYXMgYmVlbiBzYXR1cmF0ZWQu
IElmLCBob3dldmVyLCB0aGUgdGhpcmQgYEZvcndhcmQoMTApYCBjYWxsIGlzIHJlcGxhY2VkIGJ5
IGBGb3J3YXJkKDIwKWAsIHRoZW4gaXQgd291bGQgYmUgT0ssIGFzIG5vdyAjMSB3aWxsIGJlIHRo
ZSBtYXRjaGluZyBleHBlY3RhdGlvbi4KLQotKipTaWRlIG5vdGU6KiogV2h5IGRvZXMgR29vZ2xl
IE1vY2sgc2VhcmNoIGZvciBhIG1hdGNoIGluIHRoZSBfcmV2ZXJzZV8gb3JkZXIgb2YgdGhlIGV4
cGVjdGF0aW9ucz8gVGhlIHJlYXNvbiBpcyB0aGF0IHRoaXMgYWxsb3dzIGEgdXNlciB0byBzZXQg
dXAgdGhlIGRlZmF1bHQgZXhwZWN0YXRpb25zIGluIGEgbW9jayBvYmplY3QncyBjb25zdHJ1Y3Rv
ciBvciB0aGUgdGVzdCBmaXh0dXJlJ3Mgc2V0LXVwIHBoYXNlIGFuZCB0aGVuIGN1c3RvbWl6ZSB0
aGUgbW9jayBieSB3cml0aW5nIG1vcmUgc3BlY2lmaWMgZXhwZWN0YXRpb25zIGluIHRoZSB0ZXN0
IGJvZHkuIFNvLCBpZiB5b3UgaGF2ZSB0d28gZXhwZWN0YXRpb25zIG9uIHRoZSBzYW1lIG1ldGhv
ZCwgeW91IHdhbnQgdG8gcHV0IHRoZSBvbmUgd2l0aCBtb3JlIHNwZWNpZmljIG1hdGNoZXJzICoq
YWZ0ZXIqKiB0aGUgb3RoZXIsIG9yIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGUgd291bGQgYmUgc2hh
ZG93ZWQgYnkgdGhlIG1vcmUgZ2VuZXJhbCBvbmUgdGhhdCBjb21lcyBhZnRlciBpdC4KLQotIyMg
T3JkZXJlZCB2cyBVbm9yZGVyZWQgQ2FsbHMgIyMKLUJ5IGRlZmF1bHQsIGFuIGV4cGVjdGF0aW9u
IGNhbiBtYXRjaCBhIGNhbGwgZXZlbiB0aG91Z2ggYW4gZWFybGllciBleHBlY3RhdGlvbiBoYXNu
J3QgYmVlbiBzYXRpc2ZpZWQuIEluIG90aGVyIHdvcmRzLCB0aGUgY2FsbHMgZG9uJ3QgaGF2ZSB0
byBvY2N1ciBpbiB0aGUgb3JkZXIgdGhlIGV4cGVjdGF0aW9ucyBhcmUgc3BlY2lmaWVkLgotCi1T
b21ldGltZXMsIHlvdSBtYXkgd2FudCBhbGwgdGhlIGV4cGVjdGVkIGNhbGxzIHRvIG9jY3VyIGlu
IGEgc3RyaWN0IG9yZGVyLiBUbyBzYXkgdGhpcyBpbiBHb29nbGUgTW9jayBpcyBlYXN5OgotCi1g
YGAKLXVzaW5nIDo6dGVzdGluZzo6SW5TZXF1ZW5jZTsuLi4KLVRFU1QoRm9vVGVzdCwgRHJhd3NM
aW5lU2VnbWVudCkgewotICAuLi4KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0KLSAgICBF
WFBFQ1RfQ0FMTCh0dXJ0bGUsIFBlbkRvd24oKSk7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxlLCBG
b3J3YXJkKDEwMCkpOwotICAgIEVYUEVDVF9DQUxMKHR1cnRsZSwgUGVuVXAoKSk7Ci0gIH0KLSAg
Rm9vKCk7Ci19Ci1gYGAKLQotQnkgY3JlYXRpbmcgYW4gb2JqZWN0IG9mIHR5cGUgYEluU2VxdWVu
Y2VgLCBhbGwgZXhwZWN0YXRpb25zIGluIGl0cyBzY29wZSBhcmUgcHV0IGludG8gYSBfc2VxdWVu
Y2VfIGFuZCBoYXZlIHRvIG9jY3VyIF9zZXF1ZW50aWFsbHlfLiBTaW5jZSB3ZSBhcmUganVzdCBy
ZWx5aW5nIG9uIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBvZiB0aGlzIG9iamVjdCB0
byBkbyB0aGUgYWN0dWFsIHdvcmssIGl0cyBuYW1lIGlzIHJlYWxseSBpcnJlbGV2YW50LgotCi1J
biB0aGlzIGV4YW1wbGUsIHdlIHRlc3QgdGhhdCBgRm9vKClgIGNhbGxzIHRoZSB0aHJlZSBleHBl
Y3RlZCBmdW5jdGlvbnMgaW4gdGhlIG9yZGVyIGFzIHdyaXR0ZW4uIElmIGEgY2FsbCBpcyBtYWRl
IG91dC1vZi1vcmRlciwgaXQgd2lsbCBiZSBhbiBlcnJvci4KLQotKFdoYXQgaWYgeW91IGNhcmUg
YWJvdXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHNvbWUgb2YgdGhlIGNhbGxzLCBidXQgbm90IGFs
bCBvZiB0aGVtPyBDYW4geW91IHNwZWNpZnkgYW4gYXJiaXRyYXJ5IHBhcnRpYWwgb3JkZXI/IFRo
ZSBhbnN3ZXIgaXMgLi4uIHllcyEgSWYgeW91IGFyZSBpbXBhdGllbnQsIHRoZSBkZXRhaWxzIGNh
biBiZSBmb3VuZCBpbiB0aGUgW0Nvb2tCb29rXShWMV83X0Nvb2tCb29rI0V4cGVjdGluZ19QYXJ0
aWFsbHlfT3JkZXJlZF9DYWxscy5tZCkuKQotCi0jIyBBbGwgRXhwZWN0YXRpb25zIEFyZSBTdGlj
a3kgKFVubGVzcyBTYWlkIE90aGVyd2lzZSkgIyMKLU5vdyBsZXQncyBkbyBhIHF1aWNrIHF1aXog
dG8gc2VlIGhvdyB3ZWxsIHlvdSBjYW4gdXNlIHRoaXMgbW9jayBzdHVmZiBhbHJlYWR5LiBIb3cg
d291bGQgeW91IHRlc3QgdGhhdCB0aGUgdHVydGxlIGlzIGFza2VkIHRvIGdvIHRvIHRoZSBvcmln
aW4gX2V4YWN0bHkgdHdpY2VfICh5b3Ugd2FudCB0byBpZ25vcmUgYW55IG90aGVyIGluc3RydWN0
aW9ucyBpdCByZWNlaXZlcyk/Ci0KLUFmdGVyIHlvdSd2ZSBjb21lIHVwIHdpdGggeW91ciBhbnN3
ZXIsIHRha2UgYSBsb29rIGF0IG91cnMgYW5kIGNvbXBhcmUgbm90ZXMgKHNvbHZlIGl0IHlvdXJz
ZWxmIGZpcnN0IC0gZG9uJ3QgY2hlYXQhKToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6Ol87Li4u
Ci1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdvVG8oXywgXykpICAvLyAjMQotICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci1FWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdvVG8oMCwgMCkpICAvLyAjMgotICAgIC5U
aW1lcygyKTsKLWBgYAotCi1TdXBwb3NlIGB0dXJ0bGUuR29UbygwLCAwKWAgaXMgY2FsbGVkIHRo
cmVlIHRpbWVzLiBJbiB0aGUgdGhpcmQgdGltZSwgR29vZ2xlIE1vY2sgd2lsbCBzZWUgdGhhdCB0
aGUgYXJndW1lbnRzIG1hdGNoIGV4cGVjdGF0aW9uICMyIChyZW1lbWJlciB0aGF0IHdlIGFsd2F5
cyBwaWNrIHRoZSBsYXN0IG1hdGNoaW5nIGV4cGVjdGF0aW9uKS4gTm93LCBzaW5jZSB3ZSBzYWlk
IHRoYXQgdGhlcmUgc2hvdWxkIGJlIG9ubHkgdHdvIHN1Y2ggY2FsbHMsIEdvb2dsZSBNb2NrIHdp
bGwgcmVwb3J0IGFuIGVycm9yIGltbWVkaWF0ZWx5LiBUaGlzIGlzIGJhc2ljYWxseSB3aGF0IHdl
J3ZlIHRvbGQgeW91IGluIHRoZSAiVXNpbmcgTXVsdGlwbGUgRXhwZWN0YXRpb25zIiBzZWN0aW9u
IGFib3ZlLgotCi1UaGlzIGV4YW1wbGUgc2hvd3MgdGhhdCAqKmV4cGVjdGF0aW9ucyBpbiBHb29n
bGUgTW9jayBhcmUgInN0aWNreSIgYnkgZGVmYXVsdCoqLCBpbiB0aGUgc2Vuc2UgdGhhdCB0aGV5
IHJlbWFpbiBhY3RpdmUgZXZlbiBhZnRlciB3ZSBoYXZlIHJlYWNoZWQgdGhlaXIgaW52b2NhdGlv
biB1cHBlciBib3VuZHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHJ1bGUgdG8gcmVtZW1iZXIsIGFz
IGl0IGFmZmVjdHMgdGhlIG1lYW5pbmcgb2YgdGhlIHNwZWMsIGFuZCBpcyAqKmRpZmZlcmVudCoq
IHRvIGhvdyBpdCdzIGRvbmUgaW4gbWFueSBvdGhlciBtb2NraW5nIGZyYW1ld29ya3MgKFdoeSdk
IHdlIGRvIHRoYXQ/IEJlY2F1c2Ugd2UgdGhpbmsgb3VyIHJ1bGUgbWFrZXMgdGhlIGNvbW1vbiBj
YXNlcyBlYXNpZXIgdG8gZXhwcmVzcyBhbmQgdW5kZXJzdGFuZC4pLgotCi1TaW1wbGU/IExldCdz
IHNlZSBpZiB5b3UndmUgcmVhbGx5IHVuZGVyc3Rvb2QgaXQ6IHdoYXQgZG9lcyB0aGUgZm9sbG93
aW5nIGNvZGUgc2F5PwotCi1gYGAKLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotLi4uCi1mb3Ig
KGludCBpID0gbjsgaSA+IDA7IGktLSkgewotICBFWFBFQ1RfQ0FMTCh0dXJ0bGUsIEdldFgoKSkK
LSAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpOwotfQotYGBgCi0KLUlmIHlvdSB0aGluayBp
dCBzYXlzIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgYmUgY2FsbGVkIGBuYCB0aW1lcyBhbmQg
d2lsbCByZXR1cm4gMTAsIDIwLCAzMCwgLi4uLCBjb25zZWN1dGl2ZWx5LCB0aGluayB0d2ljZSEg
VGhlIHByb2JsZW0gaXMgdGhhdCwgYXMgd2Ugc2FpZCwgZXhwZWN0YXRpb25zIGFyZSBzdGlja3ku
IFNvLCB0aGUgc2Vjb25kIHRpbWUgYHR1cnRsZS5HZXRYKClgIGlzIGNhbGxlZCwgdGhlIGxhc3Qg
KGxhdGVzdCkgYEVYUEVDVF9DQUxMKClgIHN0YXRlbWVudCB3aWxsIG1hdGNoLCBhbmQgd2lsbCBp
bW1lZGlhdGVseSBsZWFkIHRvIGFuICJ1cHBlciBib3VuZCBleGNlZWRlZCIgZXJyb3IgLSB0aGlz
IHBpZWNlIG9mIGNvZGUgaXMgbm90IHZlcnkgdXNlZnVsIQotCi1PbmUgY29ycmVjdCB3YXkgb2Yg
c2F5aW5nIHRoYXQgYHR1cnRsZS5HZXRYKClgIHdpbGwgcmV0dXJuIDEwLCAyMCwgMzAsIC4uLiwg
aXMgdG8gZXhwbGljaXRseSBzYXkgdGhhdCB0aGUgZXhwZWN0YXRpb25zIGFyZSBfbm90XyBzdGlj
a3kuIEluIG90aGVyIHdvcmRzLCB0aGV5IHNob3VsZCBfcmV0aXJlXyBhcyBzb29uIGFzIHRoZXkg
YXJlIHNhdHVyYXRlZDoKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotZm9y
IChpbnQgaSA9IG47IGkgPiAwOyBpLS0pIHsKLSAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkp
Ci0gICAgLldpbGxPbmNlKFJldHVybigxMCppKSkKLSAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigp
OwotfQotYGBgCi0KLUFuZCwgdGhlcmUncyBhIGJldHRlciB3YXkgdG8gZG8gaXQ6IGluIHRoaXMg
Y2FzZSwgd2UgZXhwZWN0IHRoZSBjYWxscyB0byBvY2N1ciBpbiBhIHNwZWNpZmljIG9yZGVyLCBh
bmQgd2UgbGluZSB1cCB0aGUgYWN0aW9ucyB0byBtYXRjaCB0aGUgb3JkZXIuIFNpbmNlIHRoZSBv
cmRlciBpcyBpbXBvcnRhbnQgaGVyZSwgd2Ugc2hvdWxkIG1ha2UgaXQgZXhwbGljaXQgdXNpbmcg
YSBzZXF1ZW5jZToKLQotYGBgCi11c2luZyA6OnRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11c2luZyA6
OnRlc3Rpbmc6OlJldHVybjsKLS4uLgotewotICBJblNlcXVlbmNlIHM7Ci0KLSAgZm9yIChpbnQg
aSA9IDE7IGkgPD0gbjsgaSsrKSB7Ci0gICAgRVhQRUNUX0NBTEwodHVydGxlLCBHZXRYKCkpCi0g
ICAgICAgIC5XaWxsT25jZShSZXR1cm4oMTAqaSkpCi0gICAgICAgIC5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7Ci0gIH0KLX0KLWBgYAotCi1CeSB0aGUgd2F5LCB0aGUgb3RoZXIgc2l0dWF0aW9uIHdo
ZXJlIGFuIGV4cGVjdGF0aW9uIG1heSBfbm90XyBiZSBzdGlja3kgaXMgd2hlbiBpdCdzIGluIGEg
c2VxdWVuY2UgLSBhcyBzb29uIGFzIGFub3RoZXIgZXhwZWN0YXRpb24gdGhhdCBjb21lcyBhZnRl
ciBpdCBpbiB0aGUgc2VxdWVuY2UgaGFzIGJlZW4gdXNlZCwgaXQgYXV0b21hdGljYWxseSByZXRp
cmVzIChhbmQgd2lsbCBuZXZlciBiZSB1c2VkIHRvIG1hdGNoIGFueSBjYWxsKS4KLQotIyMgVW5p
bnRlcmVzdGluZyBDYWxscyAjIwotQSBtb2NrIG9iamVjdCBtYXkgaGF2ZSBtYW55IG1ldGhvZHMs
IGFuZCBub3QgYWxsIG9mIHRoZW0gYXJlIHRoYXQgaW50ZXJlc3RpbmcuIEZvciBleGFtcGxlLCBp
biBzb21lIHRlc3RzIHdlIG1heSBub3QgY2FyZSBhYm91dCBob3cgbWFueSB0aW1lcyBgR2V0WCgp
YCBhbmQgYEdldFkoKWAgZ2V0IGNhbGxlZC4KLQotSW4gR29vZ2xlIE1vY2ssIGlmIHlvdSBhcmUg
bm90IGludGVyZXN0ZWQgaW4gYSBtZXRob2QsIGp1c3QgZG9uJ3Qgc2F5IGFueXRoaW5nIGFib3V0
IGl0LiBJZiBhIGNhbGwgdG8gdGhpcyBtZXRob2Qgb2NjdXJzLCB5b3UnbGwgc2VlIGEgd2Fybmlu
ZyBpbiB0aGUgdGVzdCBvdXRwdXQsIGJ1dCBpdCB3b24ndCBiZSBhIGZhaWx1cmUuCi0KLSMgV2hh
dCBOb3c/ICMKLUNvbmdyYXR1bGF0aW9ucyEgWW91J3ZlIGxlYXJuZWQgZW5vdWdoIGFib3V0IEdv
b2dsZSBNb2NrIHRvIHN0YXJ0IHVzaW5nIGl0LiBOb3csIHlvdSBtaWdodCB3YW50IHRvIGpvaW4g
dGhlIFtnb29nbGVtb2NrXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9j
aykgZGlzY3Vzc2lvbiBncm91cCBhbmQgYWN0dWFsbHkgd3JpdGUgc29tZSB0ZXN0cyB1c2luZyBH
b29nbGUgTW9jayAtIGl0IHdpbGwgYmUgZnVuLiBIZXksIGl0IG1heSBldmVuIGJlIGFkZGljdGl2
ZSAtIHlvdSd2ZSBiZWVuIHdhcm5lZC4KLQotVGhlbiwgaWYgeW91IGZlZWwgbGlrZSBpbmNyZWFz
aW5nIHlvdXIgbW9jayBxdW90aWVudCwgeW91IHNob3VsZCBtb3ZlIG9uIHRvIHRoZSBbQ29va0Jv
b2tdKFYxXzdfQ29va0Jvb2subWQpLiBZb3UgY2FuIGxlYXJuIG1hbnkgYWR2YW5jZWQgZmVhdHVy
ZXMgb2YgR29vZ2xlIE1vY2sgdGhlcmUgLS0gYW5kIGFkdmFuY2UgeW91ciBsZXZlbCBvZiBlbmpv
eW1lbnQgYW5kIHRlc3RpbmcgYmxpc3MuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svZG9jcy92MV83L0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5t
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjEyMzNhYTI1NS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2RvY3MvdjFfNy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMubWQKKysr
IC9kZXYvbnVsbApAQCAtMSw2MjggKzAsMCBAQAotCi0KLVBsZWFzZSBzZW5kIHlvdXIgcXVlc3Rp
b25zIHRvIHRoZQotW2dvb2dsZW1vY2tdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9n
b29nbGVtb2NrKSBkaXNjdXNzaW9uCi1ncm91cC4gSWYgeW91IG5lZWQgaGVscCB3aXRoIGNvbXBp
bGVyIGVycm9ycywgbWFrZSBzdXJlIHlvdSBoYXZlCi10cmllZCBbR29vZ2xlIE1vY2sgRG9jdG9y
XSgjSG93X2FtX0lfc3VwcG9zZWRfdG9fbWFrZV9zZW5zZV9vZl90aGVzZV9ob3JyaWJsZV90ZW1w
bGF0ZV9lcnJvci5tZCkgZmlyc3QuCi0KLSMjIFdoZW4gSSBjYWxsIGEgbWV0aG9kIG9uIG15IG1v
Y2sgb2JqZWN0LCB0aGUgbWV0aG9kIGZvciB0aGUgcmVhbCBvYmplY3QgaXMgaW52b2tlZCBpbnN0
ZWFkLiAgV2hhdCdzIHRoZSBwcm9ibGVtPyAjIwotCi1JbiBvcmRlciBmb3IgYSBtZXRob2QgdG8g
YmUgbW9ja2VkLCBpdCBtdXN0IGJlIF92aXJ0dWFsXywgdW5sZXNzIHlvdSB1c2UgdGhlIFtoaWdo
LXBlcmYgZGVwZW5kZW5jeSBpbmplY3Rpb24gdGVjaG5pcXVlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29va0Jvb2sjTW9ja2luZ19Ob252aXJ0dWFsX01l
dGhvZHMpLgotCi0jIyBJIHdyb3RlIHNvbWUgbWF0Y2hlcnMuICBBZnRlciBJIHVwZ3JhZGVkIHRv
IGEgbmV3IHZlcnNpb24gb2YgR29vZ2xlIE1vY2ssIHRoZXkgbm8gbG9uZ2VyIGNvbXBpbGUuICBX
aGF0J3MgZ29pbmcgb24/ICMjCi0KLUFmdGVyIHZlcnNpb24gMS40LjAgb2YgR29vZ2xlIE1vY2sg
d2FzIHJlbGVhc2VkLCB3ZSBoYWQgYW4gaWRlYSBvbiBob3cKLXRvIG1ha2UgaXQgZWFzaWVyIHRv
IHdyaXRlIG1hdGNoZXJzIHRoYXQgY2FuIGdlbmVyYXRlIGluZm9ybWF0aXZlCi1tZXNzYWdlcyBl
ZmZpY2llbnRseS4gIFdlIGV4cGVyaW1lbnRlZCB3aXRoIHRoaXMgaWRlYSBhbmQgbGlrZWQgd2hh
dAotd2Ugc2F3LiAgVGhlcmVmb3JlIHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGl0LgotCi1VbmZv
cnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRoYXQgaWYgeW91IGhhdmUgZGVmaW5lZCB5b3VyIG93biBt
YXRjaGVycwotYnkgaW1wbGVtZW50aW5nIGBNYXRjaGVySW50ZXJmYWNlYCBvciB1c2luZyBgTWFr
ZVBvbHltb3JwaGljTWF0Y2hlcigpYCwKLXlvdXIgZGVmaW5pdGlvbnMgd2lsbCBubyBsb25nZXIg
Y29tcGlsZS4gIE1hdGNoZXJzIGRlZmluZWQgdXNpbmcgdGhlCi1gTUFUQ0hFUipgIGZhbWlseSBv
ZiBtYWNyb3MgYXJlIG5vdCBhZmZlY3RlZC4KLQotU29ycnkgZm9yIHRoZSBoYXNzbGUgaWYgeW91
ciBtYXRjaGVycyBhcmUgYWZmZWN0ZWQuICBXZSBiZWxpZXZlIGl0J3MKLWluIGV2ZXJ5b25lJ3Mg
bG9uZy10ZXJtIGludGVyZXN0IHRvIG1ha2UgdGhpcyBjaGFuZ2Ugc29vbmVyIHRoYW4KLWxhdGVy
LiAgRm9ydHVuYXRlbHksIGl0J3MgdXN1YWxseSBub3QgaGFyZCB0byBtaWdyYXRlIGFuIGV4aXN0
aW5nCi1tYXRjaGVyIHRvIHRoZSBuZXcgQVBJLiAgSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86
Ci0KLUlmIHlvdSB3cm90ZSB5b3VyIG1hdGNoZXIgbGlrZSB0aGlzOgotYGBgCi0vLyBPbGQgbWF0
Y2hlciBkZWZpbml0aW9uIHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29v
Z2xlIE1vY2suCi11c2luZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNz
IE15V29uZGVyZnVsTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewot
IHB1YmxpYzoKLSAgLi4uCi0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29u
c3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2
YWx1ZS5HZXRGb28oKSA+IDU7Ci0gIH0KLSAgLi4uCi19OwotYGBgCi0KLXlvdSdsbCBuZWVkIHRv
IGNoYW5nZSBpdCB0bzoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0IHdvcmtz
IHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hlcklu
dGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lcjsKLS4uLgotY2xh
c3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8TXlUeXBlPiB7
Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihNeVR5cGUg
dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFsdWUgbWF0Y2hl
cy4KLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0gIC4uLgotfTsKLWBgYAot
KGkuZS4gcmVuYW1lIGBNYXRjaGVzKClgIHRvIGBNYXRjaEFuZEV4cGxhaW4oKWAgYW5kIGdpdmUg
aXQgYSBzZWNvbmQKLWFyZ3VtZW50IG9mIHR5cGUgYE1hdGNoUmVzdWx0TGlzdGVuZXIqYC4pCi0K
LUlmIHlvdSB3ZXJlIGFsc28gdXNpbmcgYEV4cGxhaW5NYXRjaFJlc3VsdFRvKClgIHRvIGltcHJv
dmUgdGhlIG1hdGNoZXIKLW1lc3NhZ2U6Ci1gYGAKLS8vIE9sZCBtYXRjaGVyIGRlZmluaXRpb24g
dGhhdCBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgbGFzdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U7Ci0uLi4KLWNsYXNzIE15V29uZGVyZnVsTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPE15VHlwZT4gewotIHB1YmxpYzoKLSAgLi4u
Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3QgewotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1ZS5HZXRGb28oKSA+
IDU7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRXhwbGFpbk1hdGNoUmVzdWx0VG8oTXlUeXBlIHZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7Ci0gICAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBv
cyB0byBoZWxwCi0gICAgLy8gYSB1c2VyIHVuZGVyc3RhbmQgd2h5IHZhbHVlIG1hdGNoZXMgKG9y
IGRvZXNuJ3QgbWF0Y2gpLgotICAgICpvcyA8PCAidGhlIEZvbyBwcm9wZXJ0eSBpcyAiIDw8IHZh
bHVlLkdldEZvbygpOwotICB9Ci0gIC4uLgotfTsKLWBgYAotCi15b3Ugc2hvdWxkIG1vdmUgdGhl
IGxvZ2ljIG9mIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBpbnRvCi1gTWF0Y2hBbmRFeHBsYWlu
KClgLCB1c2luZyB0aGUgYE1hdGNoUmVzdWx0TGlzdGVuZXJgIGFyZ3VtZW50IHdoZXJlCi10aGUg
YDo6c3RkOjpvc3RyZWFtYCB3YXMgdXNlZDoKLWBgYAotLy8gTmV3IG1hdGNoZXIgZGVmaW5pdGlv
biB0aGF0IHdvcmtzIHdpdGggdGhlIGxhdGVzdCBHb29nbGUgTW9jay4KLXVzaW5nIDo6dGVzdGlu
Zzo6TWF0Y2hlckludGVyZmFjZTsKLXVzaW5nIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5l
cjsKLS4uLgotY2xhc3MgTXlXb25kZXJmdWxNYXRjaGVyIDogcHVibGljIE1hdGNoZXJJbnRlcmZh
Y2U8TXlUeXBlPiB7Ci0gcHVibGljOgotICAuLi4KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhw
bGFpbihNeVR5cGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dmFsdWUgbWF0Y2hlcy4KLSAgICAqbGlzdGVuZXIgPDwgInRoZSBGb28gcHJvcGVydHkgaXMgIiA8
PCB2YWx1ZS5HZXRGb28oKTsKLSAgICByZXR1cm4gdmFsdWUuR2V0Rm9vKCkgPiA1OwotICB9Ci0g
IC4uLgotfTsKLWBgYAotCi1JZiB5b3VyIG1hdGNoZXIgaXMgZGVmaW5lZCB1c2luZyBgTWFrZVBv
bHltb3JwaGljTWF0Y2hlcigpYDoKLWBgYAotLy8gT2xkIG1hdGNoZXIgZGVmaW5pdGlvbiB0aGF0
IGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBsYXRlc3QKLS8vIEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0
ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hl
ciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaGVzKE15VHlwZSB2YWx1ZSkgY29uc3Qg
ewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgIHJldHVybiB2YWx1
ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNNYXRj
aGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLXlvdSBzaG91bGQgcmVuYW1lIHRoZSBg
TWF0Y2hlcygpYCBtZXRob2QgdG8gYE1hdGNoQW5kRXhwbGFpbigpYCBhbmQKLWFkZCBhIGBNYXRj
aFJlc3VsdExpc3RlbmVyKmAgYXJndW1lbnQgKHRoZSBzYW1lIGFzIHdoYXQgeW91IG5lZWQgdG8g
ZG8KLWZvciBtYXRjaGVycyBkZWZpbmVkIGJ5IGltcGxlbWVudGluZyBgTWF0Y2hlckludGVyZmFj
ZWApOgotYGBgCi0vLyBOZXcgbWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUg
bGF0ZXN0IEdvb2dsZSBNb2NrLgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRj
aGVyOwotdXNpbmcgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBN
eUdyZWF0TWF0Y2hlciB7Ci0gcHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
TXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVy
KiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVz
LgotICAgIHJldHVybiB2YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBN
YWtlUG9seW1vcnBoaWNNYXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUlmIHlv
dXIgcG9seW1vcnBoaWMgbWF0Y2hlciB1c2VzIGBFeHBsYWluTWF0Y2hSZXN1bHRUbygpYCBmb3Ig
YmV0dGVyCi1mYWlsdXJlIG1lc3NhZ2VzOgotYGBgCi0vLyBPbGQgbWF0Y2hlciBkZWZpbml0aW9u
IHRoYXQgZG9lc24ndCB3b3JrIHdpdGggdGhlIGxhdGVzdAotLy8gR29vZ2xlIE1vY2suCi11c2lu
ZyA6OnRlc3Rpbmc6Ok1ha2VQb2x5bW9ycGhpY01hdGNoZXI7Ci0uLi4KLWNsYXNzIE15R3JlYXRN
YXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC4uLgotICBib29sIE1hdGNoZXMoTXlUeXBlIHZhbHVlKSBj
b25zdCB7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhbHVlIG1hdGNoZXMuCi0gICAgcmV0dXJu
IHZhbHVlLkdldEJhcigpIDwgNDI7Ci0gIH0KLSAgLi4uCi19Owotdm9pZCBFeHBsYWluTWF0Y2hS
ZXN1bHRUbyhjb25zdCBNeUdyZWF0TWF0Y2hlciYgbWF0Y2hlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgTXlUeXBlIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKLSAgLy8gUHJpbnRzIHNvbWUgaGVscGZ1bCBpbmZvcm1hdGlvbiB0byBv
cyB0byBoZWxwCi0gIC8vIGEgdXNlciB1bmRlcnN0YW5kIHdoeSB2YWx1ZSBtYXRjaGVzIChvciBk
b2Vzbid0IG1hdGNoKS4KLSAgKm9zIDw8ICJ0aGUgQmFyIHByb3BlcnR5IGlzICIgPDwgdmFsdWUu
R2V0QmFyKCk7Ci19Ci0uLi4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihNeUdyZWF0TWF0Y2hlcigp
KSAuLi4KLWBgYAotCi15b3UnbGwgbmVlZCB0byBtb3ZlIHRoZSBsb2dpYyBpbnNpZGUgYEV4cGxh
aW5NYXRjaFJlc3VsdFRvKClgIHRvCi1gTWF0Y2hBbmRFeHBsYWluKClgOgotYGBgCi0vLyBOZXcg
bWF0Y2hlciBkZWZpbml0aW9uIHRoYXQgd29ya3Mgd2l0aCB0aGUgbGF0ZXN0IEdvb2dsZSBNb2Nr
LgotdXNpbmcgOjp0ZXN0aW5nOjpNYWtlUG9seW1vcnBoaWNNYXRjaGVyOwotdXNpbmcgOjp0ZXN0
aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyOwotLi4uCi1jbGFzcyBNeUdyZWF0TWF0Y2hlciB7Ci0g
cHVibGljOgotICAuLi4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oTXlUeXBlIHZhbHVlLAotICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qg
ewotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB2YWx1ZSBtYXRjaGVzLgotICAgICpsaXN0ZW5lciA8
PCAidGhlIEJhciBwcm9wZXJ0eSBpcyAiIDw8IHZhbHVlLkdldEJhcigpOwotICAgIHJldHVybiB2
YWx1ZS5HZXRCYXIoKSA8IDQyOwotICB9Ci0gIC4uLgotfTsKLS4uLiBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKE15R3JlYXRNYXRjaGVyKCkpIC4uLgotYGBgCi0KLUZvciBtb3JlIGluZm9ybWF0aW9u
LCB5b3UgY2FuIHJlYWQgdGhlc2UKLVt0d29dKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29n
bGVtb2NrL3dpa2kvVjFfN19Db29rQm9vayNXcml0aW5nX05ld19Nb25vbW9ycGhpY19NYXRjaGVy
cykKLVtyZWNpcGVzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1Yx
XzdfQ29va0Jvb2sjV3JpdGluZ19OZXdfUG9seW1vcnBoaWNfTWF0Y2hlcnMpCi1mcm9tIHRoZSBj
b29rYm9vay4gIEFzIGFsd2F5cywgeW91Ci1hcmUgd2VsY29tZSB0byBwb3N0IHF1ZXN0aW9ucyBv
biBgZ29vZ2xlbW9ja0Bnb29nbGVncm91cHMuY29tYCBpZiB5b3UKLW5lZWQgYW55IGhlbHAuCi0K
LSMjIFdoZW4gdXNpbmcgR29vZ2xlIE1vY2ssIGRvIEkgaGF2ZSB0byB1c2UgR29vZ2xlIFRlc3Qg
YXMgdGhlIHRlc3RpbmcgZnJhbWV3b3JrPyAgSSBoYXZlIG15IGZhdm9yaXRlIHRlc3RpbmcgZnJh
bWV3b3JrIGFuZCBkb24ndCB3YW50IHRvIHN3aXRjaC4gIyMKLQotR29vZ2xlIE1vY2sgd29ya3Mg
b3V0IG9mIHRoZSBib3ggd2l0aCBHb29nbGUgVGVzdC4gIEhvd2V2ZXIsIGl0J3MgZWFzeQotdG8g
Y29uZmlndXJlIGl0IHRvIHdvcmsgd2l0aCBhbnkgdGVzdGluZyBmcmFtZXdvcmsgb2YgeW91ciBj
aG9pY2UuCi1bSGVyZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9W
MV83X0ZvckR1bW1pZXMjVXNpbmdfR29vZ2xlX01vY2tfd2l0aF9BbnlfVGVzdGluZ19GcmFtZXdv
cmspIGlzIGhvdy4KLQotIyMgSG93IGFtIEkgc3VwcG9zZWQgdG8gbWFrZSBzZW5zZSBvZiB0aGVz
ZSBob3JyaWJsZSB0ZW1wbGF0ZSBlcnJvcnM/ICMjCi0KLUlmIHlvdSBhcmUgY29uZnVzZWQgYnkg
dGhlIGNvbXBpbGVyIGVycm9ycyBnY2MgdGhyZXcgYXQgeW91LAotdHJ5IGNvbnN1bHRpbmcgdGhl
IF9Hb29nbGUgTW9jayBEb2N0b3JfIHRvb2wgZmlyc3QuICBXaGF0IGl0IGRvZXMgaXMgdG8KLXNj
YW4gc3RkaW4gZm9yIGdjYyBlcnJvciBtZXNzYWdlcywgYW5kIHNwaXQgb3V0IGRpYWdub3NlcyBv
biB0aGUKLXByb2JsZW1zICh3ZSBjYWxsIHRoZW0gZGlzZWFzZXMpIHlvdXIgY29kZSBoYXMuCi0K
LVRvICJpbnN0YWxsIiwgcnVuIGNvbW1hbmQ6Ci1gYGAKLWFsaWFzIGdtZD0nPHBhdGggdG8gZ29v
Z2xlbW9jaz4vc2NyaXB0cy9nbW9ja19kb2N0b3IucHknCi1gYGAKLQotVG8gdXNlIGl0LCBkbzoK
LWBgYAotPHlvdXItZmF2b3JpdGUtYnVpbGQtY29tbWFuZD4gPHlvdXItdGVzdD4gMj4mMSB8IGdt
ZAotYGBgCi0KLUZvciBleGFtcGxlOgotYGBgCi1tYWtlIG15X3Rlc3QgMj4mMSB8IGdtZAotYGBg
Ci0KLU9yIHlvdSBjYW4gcnVuIGBnbWRgIGFuZCBjb3B5LW4tcGFzdGUgZ2NjJ3MgZXJyb3IgbWVz
c2FnZXMgdG8gaXQuCi0KLSMjIENhbiBJIG1vY2sgYSB2YXJpYWRpYyBmdW5jdGlvbj8gIyMKLQot
WW91IGNhbm5vdCBtb2NrIGEgdmFyaWFkaWMgZnVuY3Rpb24gKGkuZS4gYSBmdW5jdGlvbiB0YWtp
bmcgZWxsaXBzaXMKLShgLi4uYCkgYXJndW1lbnRzKSBkaXJlY3RseSBpbiBHb29nbGUgTW9jay4K
LQotVGhlIHByb2JsZW0gaXMgdGhhdCBpbiBnZW5lcmFsLCB0aGVyZSBpcyBfbm8gd2F5XyBmb3Ig
YSBtb2NrIG9iamVjdCB0bwota25vdyBob3cgbWFueSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0
aGUgdmFyaWFkaWMgbWV0aG9kLCBhbmQgd2hhdAotdGhlIGFyZ3VtZW50cycgdHlwZXMgYXJlLiAg
T25seSB0aGUgX2F1dGhvciBvZiB0aGUgYmFzZSBjbGFzc18ga25vd3MKLXRoZSBwcm90b2NvbCwg
YW5kIHdlIGNhbm5vdCBsb29rIGludG8gaGlzIGhlYWQuCi0KLVRoZXJlZm9yZSwgdG8gbW9jayBz
dWNoIGEgZnVuY3Rpb24sIHRoZSBfdXNlcl8gbXVzdCB0ZWFjaCB0aGUgbW9jawotb2JqZWN0IGhv
dyB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCB0aGVpciB0eXBlcy4g
IE9uZQotd2F5IHRvIGRvIGl0IGlzIHRvIHByb3ZpZGUgb3ZlcmxvYWRlZCB2ZXJzaW9ucyBvZiB0
aGUgZnVuY3Rpb24uCi0KLUVsbGlwc2lzIGFyZ3VtZW50cyBhcmUgaW5oZXJpdGVkIGZyb20gQyBh
bmQgbm90IHJlYWxseSBhIEMrKyBmZWF0dXJlLgotVGhleSBhcmUgdW5zYWZlIHRvIHVzZSBhbmQg
ZG9uJ3Qgd29yayB3aXRoIGFyZ3VtZW50cyB0aGF0IGhhdmUKLWNvbnN0cnVjdG9ycyBvciBkZXN0
cnVjdG9ycy4gIFRoZXJlZm9yZSB3ZSByZWNvbW1lbmQgdG8gYXZvaWQgdGhlbSBpbgotQysrIGFz
IG11Y2ggYXMgcG9zc2libGUuCi0KLSMjIE1TVkMgZ2l2ZXMgbWUgd2FybmluZyBDNDMwMSBvciBD
NDM3MyB3aGVuIEkgZGVmaW5lIGEgbW9jayBtZXRob2Qgd2l0aCBhIGNvbnN0IHBhcmFtZXRlci4g
IFdoeT8gIyMKLQotSWYgeW91IGNvbXBpbGUgdGhpcyB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMr
KyAyMDA1IFNQMToKLWBgYAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gIHZpcnR1YWwgdm9pZCBCYXIo
Y29uc3QgaW50IGkpID0gMDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vIHsKLSAg
Li4uCi0gIE1PQ0tfTUVUSE9EMShCYXIsIHZvaWQoY29uc3QgaW50IGkpKTsKLX07Ci1gYGAKLVlv
dSBtYXkgZ2V0IHRoZSBmb2xsb3dpbmcgd2FybmluZzoKLWBgYAotd2FybmluZyBDNDMwMTogJ01v
Y2tGb286OkJhcic6IG92ZXJyaWRpbmcgdmlydHVhbCBmdW5jdGlvbiBvbmx5IGRpZmZlcnMgZnJv
bSAnRm9vOjpCYXInIGJ5IGNvbnN0L3ZvbGF0aWxlIHF1YWxpZmllcgotYGBgCi0KLVRoaXMgaXMg
YSBNU1ZDIGJ1Zy4gIFRoZSBzYW1lIGNvZGUgY29tcGlsZXMgZmluZSB3aXRoIGdjYyAsZm9yCi1l
eGFtcGxlLiAgSWYgeW91IHVzZSBWaXN1YWwgQysrIDIwMDggU1AxLCB5b3Ugd291bGQgZ2V0IHRo
ZSB3YXJuaW5nOgotYGBgCi13YXJuaW5nIEM0MzczOiAnTW9ja0Zvbzo6QmFyJzogdmlydHVhbCBm
dW5jdGlvbiBvdmVycmlkZXMgJ0Zvbzo6QmFyJywgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGNv
bXBpbGVyIGRpZCBub3Qgb3ZlcnJpZGUgd2hlbiBwYXJhbWV0ZXJzIG9ubHkgZGlmZmVyZWQgYnkg
Y29uc3Qvdm9sYXRpbGUgcXVhbGlmaWVycwotYGBgCi0KLUluIEMrKywgaWYgeW91IF9kZWNsYXJl
XyBhIGZ1bmN0aW9uIHdpdGggYSBgY29uc3RgIHBhcmFtZXRlciwgdGhlCi1gY29uc3RgIG1vZGlm
aWVyIGlzIF9pZ25vcmVkXy4gIFRoZXJlZm9yZSwgdGhlIGBGb29gIGJhc2UgY2xhc3MgYWJvdmUK
LWlzIGVxdWl2YWxlbnQgdG86Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICB2aXJ0dWFsIHZv
aWQgQmFyKGludCBpKSA9IDA7ICAvLyBpbnQgb3IgY29uc3QgaW50PyAgTWFrZXMgbm8gZGlmZmVy
ZW5jZS4KLX07Ci1gYGAKLQotSW4gZmFjdCwgeW91IGNhbiBfZGVjbGFyZV8gQmFyKCkgd2l0aCBh
biBgaW50YCBwYXJhbWV0ZXIsIGFuZCBfZGVmaW5lXwotaXQgd2l0aCBhIGBjb25zdCBpbnRgIHBh
cmFtZXRlci4gIFRoZSBjb21waWxlciB3aWxsIHN0aWxsIG1hdGNoIHRoZW0KLXVwLgotCi1TaW5j
ZSBtYWtpbmcgYSBwYXJhbWV0ZXIgYGNvbnN0YCBpcyBtZWFuaW5nbGVzcyBpbiB0aGUgbWV0aG9k
Ci1fZGVjbGFyYXRpb25fLCB3ZSByZWNvbW1lbmQgdG8gcmVtb3ZlIGl0IGluIGJvdGggYEZvb2Ag
YW5kIGBNb2NrRm9vYC4KLVRoYXQgc2hvdWxkIHdvcmthcm91bmQgdGhlIFZDIGJ1Zy4KLQotTm90
ZSB0aGF0IHdlIGFyZSB0YWxraW5nIGFib3V0IHRoZSBfdG9wLWxldmVsXyBgY29uc3RgIG1vZGlm
aWVyIGhlcmUuCi1JZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIHBhc3NlZCBieSBwb2ludGVy
IG9yIHJlZmVyZW5jZSwgZGVjbGFyaW5nCi10aGUgX3BvaW50ZWVfIG9yIF9yZWZlcmVlXyBhcyBg
Y29uc3RgIGlzIHN0aWxsIG1lYW5pbmdmdWwuICBGb3IKLWV4YW1wbGUsIHRoZSBmb2xsb3dpbmcg
dHdvIGRlY2xhcmF0aW9ucyBhcmUgX25vdF8gZXF1aXZhbGVudDoKLWBgYAotdm9pZCBCYXIoaW50
KiBwKTsgICAgICAgIC8vIE5laXRoZXIgcCBub3IgKnAgaXMgY29uc3QuCi12b2lkIEJhcihjb25z
dCBpbnQqIHApOyAgLy8gcCBpcyBub3QgY29uc3QsIGJ1dCAqcCBpcy4KLWBgYAotCi0jIyBJIGhh
dmUgYSBodWdlIG1vY2sgY2xhc3MsIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBydW5zIG91dCBv
ZiBtZW1vcnkgd2hlbiBjb21waWxpbmcgaXQuICBXaGF0IGNhbiBJIGRvPyAjIwotCi1XZSd2ZSBu
b3RpY2VkIHRoYXQgd2hlbiB0aGUgYC9jbHJgIGNvbXBpbGVyIGZsYWcgaXMgdXNlZCwgVmlzdWFs
IEMrKwotdXNlcyA1fjYgdGltZXMgYXMgbXVjaCBtZW1vcnkgd2hlbiBjb21waWxpbmcgYSBtb2Nr
IGNsYXNzLiAgV2Ugc3VnZ2VzdAotdG8gYXZvaWQgYC9jbHJgIHdoZW4gY29tcGlsaW5nIG5hdGl2
ZSBDKysgbW9ja3MuCi0KLSMjIEkgY2FuJ3QgZmlndXJlIG91dCB3aHkgR29vZ2xlIE1vY2sgdGhp
bmtzIG15IGV4cGVjdGF0aW9ucyBhcmUgbm90IHNhdGlzZmllZC4gIFdoYXQgc2hvdWxkIEkgZG8/
ICMjCi0KLVlvdSBtaWdodCB3YW50IHRvIHJ1biB5b3VyIHRlc3Qgd2l0aAotYC0tZ21vY2tfdmVy
Ym9zZT1pbmZvYC4gIFRoaXMgZmxhZyBsZXRzIEdvb2dsZSBNb2NrIHByaW50IGEgdHJhY2UKLW9m
IGV2ZXJ5IG1vY2sgZnVuY3Rpb24gY2FsbCBpdCByZWNlaXZlcy4gIEJ5IHN0dWR5aW5nIHRoZSB0
cmFjZSwKLXlvdSdsbCBnYWluIGluc2lnaHRzIG9uIHdoeSB0aGUgZXhwZWN0YXRpb25zIHlvdSBz
ZXQgYXJlIG5vdCBtZXQuCi0KLSMjIEhvdyBjYW4gSSBhc3NlcnQgdGhhdCBhIGZ1bmN0aW9uIGlz
IE5FVkVSIGNhbGxlZD8gIyMKLQotYGBgCi1FWFBFQ1RfQ0FMTChmb28sIEJhcihfKSkKLSAgICAu
VGltZXMoMCk7Ci1gYGAKLQotIyMgSSBoYXZlIGEgZmFpbGVkIHRlc3Qgd2hlcmUgR29vZ2xlIE1v
Y2sgdGVsbHMgbWUgVFdJQ0UgdGhhdCBhIHBhcnRpY3VsYXIgZXhwZWN0YXRpb24gaXMgbm90IHNh
dGlzZmllZC4gIElzbid0IHRoaXMgcmVkdW5kYW50PyAjIwotCi1XaGVuIEdvb2dsZSBNb2NrIGRl
dGVjdHMgYSBmYWlsdXJlLCBpdCBwcmludHMgcmVsZXZhbnQgaW5mb3JtYXRpb24KLSh0aGUgbW9j
ayBmdW5jdGlvbiBhcmd1bWVudHMsIHRoZSBzdGF0ZSBvZiByZWxldmFudCBleHBlY3RhdGlvbnMs
IGFuZAotZXRjKSB0byBoZWxwIHRoZSB1c2VyIGRlYnVnLiAgSWYgYW5vdGhlciBmYWlsdXJlIGlz
IGRldGVjdGVkLCBHb29nbGUKLU1vY2sgd2lsbCBkbyB0aGUgc2FtZSwgaW5jbHVkaW5nIHByaW50
aW5nIHRoZSBzdGF0ZSBvZiByZWxldmFudAotZXhwZWN0YXRpb25zLgotCi1Tb21ldGltZXMgYW4g
ZXhwZWN0YXRpb24ncyBzdGF0ZSBkaWRuJ3QgY2hhbmdlIGJldHdlZW4gdHdvIGZhaWx1cmVzLAot
YW5kIHlvdSdsbCBzZWUgdGhlIHNhbWUgZGVzY3JpcHRpb24gb2YgdGhlIHN0YXRlIHR3aWNlLiAg
VGhleSBhcmUKLWhvd2V2ZXIgX25vdF8gcmVkdW5kYW50LCBhcyB0aGV5IHJlZmVyIHRvIF9kaWZm
ZXJlbnQgcG9pbnRzIGluIHRpbWVfLgotVGhlIGZhY3QgdGhleSBhcmUgdGhlIHNhbWUgX2lzXyBp
bnRlcmVzdGluZyBpbmZvcm1hdGlvbi4KLQotIyMgSSBnZXQgYSBoZWFwIGNoZWNrIGZhaWx1cmUg
d2hlbiB1c2luZyBhIG1vY2sgb2JqZWN0LCBidXQgdXNpbmcgYSByZWFsIG9iamVjdCBpcyBmaW5l
LiAgV2hhdCBjYW4gYmUgd3Jvbmc/ICMjCi0KLURvZXMgdGhlIGNsYXNzIChob3BlZnVsbHkgYSBw
dXJlIGludGVyZmFjZSkgeW91IGFyZSBtb2NraW5nIGhhdmUgYQotdmlydHVhbCBkZXN0cnVjdG9y
PwotCi1XaGVuZXZlciB5b3UgZGVyaXZlIGZyb20gYSBiYXNlIGNsYXNzLCBtYWtlIHN1cmUgaXRz
IGRlc3RydWN0b3IgaXMKLXZpcnR1YWwuICBPdGhlcndpc2UgQmFkIFRoaW5ncyB3aWxsIGhhcHBl
bi4gIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcKLWNvZGU6Ci0KLWBgYAotY2xhc3MgQmFzZSB7Ci0g
cHVibGljOgotICAvLyBOb3QgdmlydHVhbCwgYnV0IHNob3VsZCBiZS4KLSAgfkJhc2UoKSB7IC4u
LiB9Ci0gIC4uLgotfTsKLQotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6
Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLS4uLgotICBC
YXNlKiBwID0gbmV3IERlcml2ZWQ7Ci0gIC4uLgotICBkZWxldGUgcDsgIC8vIFN1cnByaXNlISB+
QmFzZSgpIHdpbGwgYmUgY2FsbGVkLCBidXQgfkRlcml2ZWQoKSB3aWxsIG5vdAotICAgICAgICAg
ICAgIC8vIC0gdmFsdWVfIGlzIGxlYWtlZC4KLWBgYAotCi1CeSBjaGFuZ2luZyBgfkJhc2UoKWAg
dG8gdmlydHVhbCwgYH5EZXJpdmVkKClgIHdpbGwgYmUgY29ycmVjdGx5Ci1jYWxsZWQgd2hlbiBg
ZGVsZXRlIHBgIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGhlYXAgY2hlY2tlcgotd2lsbCBiZSBoYXBw
eS4KLQotIyMgVGhlICJuZXdlciBleHBlY3RhdGlvbnMgb3ZlcnJpZGUgb2xkZXIgb25lcyIgcnVs
ZSBtYWtlcyB3cml0aW5nIGV4cGVjdGF0aW9ucyBhd2t3YXJkLiAgV2h5IGRvZXMgR29vZ2xlIE1v
Y2sgZG8gdGhhdD8gIyMKLQotV2hlbiBwZW9wbGUgY29tcGxhaW4gYWJvdXQgdGhpcywgb2Z0ZW4g
dGhleSBhcmUgcmVmZXJyaW5nIHRvIGNvZGUgbGlrZToKLQotYGBgCi0vLyBmb28uQmFyKCkgc2hv
dWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFuZCByZXR1cm4K
LS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgSG93ZXZlciwgSSBoYXZlIHRvIHdyaXRlIHRoZSBleHBl
Y3RhdGlvbnMgaW4gdGhlCi0vLyByZXZlcnNlIG9yZGVyLiAgVGhpcyBzdWNrcyBiaWcgdGltZSEh
IQotRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAg
IC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci1FWFBFQ1RfQ0FMTChmb28sIEJhcigpKQotICAgIC5X
aWxsT25jZShSZXR1cm4oMSkpCi0gICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLWBgYAotCi1U
aGUgcHJvYmxlbSBpcyB0aGF0IHRoZXkgZGlkbid0IHBpY2sgdGhlICoqYmVzdCoqIHdheSB0byBl
eHByZXNzIHRoZSB0ZXN0J3MKLWludGVudC4KLQotQnkgZGVmYXVsdCwgZXhwZWN0YXRpb25zIGRv
bid0IGhhdmUgdG8gYmUgbWF0Y2hlZCBpbiBfYW55XyBwYXJ0aWN1bGFyCi1vcmRlci4gIElmIHlv
dSB3YW50IHRoZW0gdG8gbWF0Y2ggaW4gYSBjZXJ0YWluIG9yZGVyLCB5b3UgbmVlZCB0byBiZQot
ZXhwbGljaXQuICBUaGlzIGlzIEdvb2dsZSBNb2NrJ3MgKGFuZCBqTW9jaydzKSBmdW5kYW1lbnRh
bCBwaGlsb3NvcGh5OiBpdCdzCi1lYXN5IHRvIGFjY2lkZW50YWxseSBvdmVyLXNwZWNpZnkgeW91
ciB0ZXN0cywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdAotaGFyZGVyIHRvIGRvIHNvLgotCi1UaGVy
ZSBhcmUgdHdvIGJldHRlciB3YXlzIHRvIHdyaXRlIHRoZSB0ZXN0IHNwZWMuICBZb3UgY291bGQg
ZWl0aGVyCi1wdXQgdGhlIGV4cGVjdGF0aW9ucyBpbiBzZXF1ZW5jZToKLQotYGBgCi0vLyBmb28u
QmFyKCkgc2hvdWxkIGJlIGNhbGxlZCB0d2ljZSwgcmV0dXJuIDEgdGhlIGZpcnN0IHRpbWUsIGFu
ZCByZXR1cm4KLS8vIDIgdGhlIHNlY29uZCB0aW1lLiAgVXNpbmcgYSBzZXF1ZW5jZSwgd2UgY2Fu
IHdyaXRlIHRoZSBleHBlY3RhdGlvbnMKLS8vIGluIHRoZWlyIG5hdHVyYWwgb3JkZXIuCi17Ci0g
IEluU2VxdWVuY2UgczsKLSAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoKSkKLSAgICAgIC5XaWxsT25j
ZShSZXR1cm4oMSkpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FM
TChmb28sIEJhcigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSkKLSAgICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7Ci19Ci1gYGAKLQotb3IgeW91IGNhbiBwdXQgdGhlIHNlcXVlbmNlIG9m
IGFjdGlvbnMgaW4gdGhlIHNhbWUgZXhwZWN0YXRpb246Ci0KLWBgYAotLy8gZm9vLkJhcigpIHNo
b3VsZCBiZSBjYWxsZWQgdHdpY2UsIHJldHVybiAxIHRoZSBmaXJzdCB0aW1lLCBhbmQgcmV0dXJu
Ci0vLyAyIHRoZSBzZWNvbmQgdGltZS4KLUVYUEVDVF9DQUxMKGZvbywgQmFyKCkpCi0gICAgLldp
bGxPbmNlKFJldHVybigxKSkKLSAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKQotICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7Ci1gYGAKLQotQmFjayB0byB0aGUgb3JpZ2luYWwgcXVlc3Rpb25zOiB3
aHkgZG9lcyBHb29nbGUgTW9jayBzZWFyY2ggdGhlCi1leHBlY3RhdGlvbnMgKGFuZCBgT05fQ0FM
TGBzKSBmcm9tIGJhY2sgdG8gZnJvbnQ/ICBCZWNhdXNlIHRoaXMKLWFsbG93cyBhIHVzZXIgdG8g
c2V0IHVwIGEgbW9jaydzIGJlaGF2aW9yIGZvciB0aGUgY29tbW9uIGNhc2UgZWFybHkKLShlLmcu
IGluIHRoZSBtb2NrJ3MgY29uc3RydWN0b3Igb3IgdGhlIHRlc3QgZml4dHVyZSdzIHNldC11cCBw
aGFzZSkKLWFuZCBjdXN0b21pemUgaXQgd2l0aCBtb3JlIHNwZWNpZmljIHJ1bGVzIGxhdGVyLiAg
SWYgR29vZ2xlIE1vY2sKLXNlYXJjaGVzIGZyb20gZnJvbnQgdG8gYmFjaywgdGhpcyB2ZXJ5IHVz
ZWZ1bCBwYXR0ZXJuIHdvbid0IGJlCi1wb3NzaWJsZS4KLQotIyMgR29vZ2xlIE1vY2sgcHJpbnRz
IGEgd2FybmluZyB3aGVuIGEgZnVuY3Rpb24gd2l0aG91dCBFWFBFQ1RcX0NBTEwgaXMgY2FsbGVk
LCBldmVuIGlmIEkgaGF2ZSBzZXQgaXRzIGJlaGF2aW9yIHVzaW5nIE9OXF9DQUxMLiAgV291bGQg
aXQgYmUgcmVhc29uYWJsZSBub3QgdG8gc2hvdyB0aGUgd2FybmluZyBpbiB0aGlzIGNhc2U/ICMj
Ci0KLVdoZW4gY2hvb3NpbmcgYmV0d2VlbiBiZWluZyBuZWF0IGFuZCBiZWluZyBzYWZlLCB3ZSBs
ZWFuIHRvd2FyZCB0aGUKLWxhdHRlci4gIFNvIHRoZSBhbnN3ZXIgaXMgdGhhdCB3ZSB0aGluayBp
dCdzIGJldHRlciB0byBzaG93IHRoZQotd2FybmluZy4KLQotT2Z0ZW4gcGVvcGxlIHdyaXRlIGBP
Tl9DQUxMYHMgaW4gdGhlIG1vY2sgb2JqZWN0J3MKLWNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCwg
YXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgcmFyZWx5IGNoYW5nZXMgZnJvbQotdGVzdCB0byB0ZXN0
LiAgVGhlbiBpbiB0aGUgdGVzdCBib2R5IHRoZXkgc2V0IHRoZSBleHBlY3RhdGlvbnMsIHdoaWNo
Ci1hcmUgb2Z0ZW4gZGlmZmVyZW50IGZvciBlYWNoIHRlc3QuICBIYXZpbmcgYW4gYE9OX0NBTExg
IGluIHRoZSBzZXQtdXAKLXBhcnQgb2YgYSB0ZXN0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZSBjYWxs
cyBhcmUgZXhwZWN0ZWQuICBJZiB0aGVyZSdzCi1ubyBgRVhQRUNUX0NBTExgIGFuZCB0aGUgbWV0
aG9kIGlzIGNhbGxlZCwgaXQncyBwb3NzaWJseSBhbiBlcnJvci4gIElmCi13ZSBxdWlldGx5IGxl
dCB0aGUgY2FsbCBnbyB0aHJvdWdoIHdpdGhvdXQgbm90aWZ5aW5nIHRoZSB1c2VyLCBidWdzCi1t
YXkgY3JlZXAgaW4gdW5ub3RpY2VkLgotCi1JZiwgaG93ZXZlciwgeW91IGFyZSBzdXJlIHRoYXQg
dGhlIGNhbGxzIGFyZSBPSywgeW91IGNhbiB3cml0ZQotCi1gYGAKLUVYUEVDVF9DQUxMKGZvbywg
QmFyKF8pKQotICAgIC5XaWxsUmVwZWF0ZWRseSguLi4pOwotYGBgCi0KLWluc3RlYWQgb2YKLQot
YGBgCi1PTl9DQUxMKGZvbywgQmFyKF8pKQotICAgIC5XaWxsQnlEZWZhdWx0KC4uLik7Ci1gYGAK
LQotVGhpcyB0ZWxscyBHb29nbGUgTW9jayB0aGF0IHlvdSBkbyBleHBlY3QgdGhlIGNhbGxzIGFu
ZCBubyB3YXJuaW5nIHNob3VsZCBiZQotcHJpbnRlZC4KLQotQWxzbywgeW91IGNhbiBjb250cm9s
IHRoZSB2ZXJib3NpdHkgdXNpbmcgdGhlIGAtLWdtb2NrX3ZlcmJvc2VgIGZsYWcuCi1JZiB5b3Ug
ZmluZCB0aGUgb3V0cHV0IHRvbyBub2lzeSB3aGVuIGRlYnVnZ2luZywganVzdCBjaG9vc2UgYSBs
ZXNzCi12ZXJib3NlIGxldmVsLgotCi0jIyBIb3cgY2FuIEkgZGVsZXRlIHRoZSBtb2NrIGZ1bmN0
aW9uJ3MgYXJndW1lbnQgaW4gYW4gYWN0aW9uPyAjIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiBu
ZWVkaW5nIHRvIHBlcmZvcm0gc29tZSBhY3Rpb24gdGhhdCdzIG5vdAotc3VwcG9ydGVkIGJ5IEdv
b2dsZSBNb2NrIGRpcmVjdGx5LCByZW1lbWJlciB0aGF0IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3du
Ci1hY3Rpb25zIHVzaW5nCi1bTWFrZUFjdGlvbigpXShodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlbW9jay93aWtpL1YxXzdfQ29va0Jvb2sjV3JpdGluZ19OZXdfQWN0aW9ucykgb3IKLVtN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1v
Y2svd2lraS9WMV83X0Nvb2tCb29rI1dyaXRpbmdfTmV3X1BvbHltb3JwaGljX0FjdGlvbnMpLAot
b3IgeW91IGNhbiB3cml0ZSBhIHN0dWIgZnVuY3Rpb24gYW5kIGludm9rZSBpdCB1c2luZwotW0lu
dm9rZSgpXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29v
a0Jvb2sjVXNpbmdfRnVuY3Rpb25zX01ldGhvZHNfRnVuY3RvcnMpLgotCi0jIyBNT0NLXF9NRVRI
T0RuKCkncyBzZWNvbmQgYXJndW1lbnQgbG9va3MgZnVubnkuICBXaHkgZG9uJ3QgeW91IHVzZSB0
aGUgTU9DS1xfTUVUSE9EbihNZXRob2QsIHJldHVyblxfdHlwZSwgYXJnXF8xLCAuLi4sIGFyZ1xf
bikgc3ludGF4PyAjIwotCi1XaGF0PyEgIEkgdGhpbmsgaXQncyBiZWF1dGlmdWwuIDotKQotCi1X
aGlsZSB3aGljaCBzeW50YXggbG9va3MgbW9yZSBuYXR1cmFsIGlzIGEgc3ViamVjdGl2ZSBtYXR0
ZXIgdG8gc29tZQotZXh0ZW50LCBHb29nbGUgTW9jaydzIHN5bnRheCB3YXMgY2hvc2VuIGZvciBz
ZXZlcmFsIHByYWN0aWNhbCBhZHZhbnRhZ2VzIGl0Ci1oYXMuCi0KLVRyeSB0byBtb2NrIGEgZnVu
Y3Rpb24gdGhhdCB0YWtlcyBhIG1hcCBhcyBhbiBhcmd1bWVudDoKLWBgYAotdmlydHVhbCBpbnQg
R2V0U2l6ZShjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLVVzaW5nIHRo
ZSBwcm9wb3NlZCBzeW50YXgsIGl0IHdvdWxkIGJlOgotYGBgCi1NT0NLX01FVEhPRDEoR2V0U2l6
ZSwgaW50LCBjb25zdCBtYXA8aW50LCBzdGQ6OnN0cmluZz4mIG0pOwotYGBgCi0KLUd1ZXNzIHdo
YXQ/ICBZb3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IgYXMgdGhlIGNvbXBpbGVyIHRoaW5rcyB0
aGF0Ci1gY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtYCBhcmUgKip0d28qKiwgbm90IG9u
ZSwgYXJndW1lbnRzLiBUbyB3b3JrCi1hcm91bmQgdGhpcyB5b3UgY2FuIHVzZSBgdHlwZWRlZmAg
dG8gZ2l2ZSB0aGUgbWFwIHR5cGUgYSBuYW1lLCBidXQKLXRoYXQgZ2V0cyBpbiB0aGUgd2F5IG9m
IHlvdXIgd29yay4gIEdvb2dsZSBNb2NrJ3Mgc3ludGF4IGF2b2lkcyB0aGlzCi1wcm9ibGVtIGFz
IHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IHR5cGVzIGFyZSBwcm90ZWN0ZWQgaW5zaWRlIGEgcGFp
cgotb2YgcGFyZW50aGVzZXM6Ci1gYGAKLS8vIFRoaXMgY29tcGlsZXMgZmluZS4KLU1PQ0tfTUVU
SE9EMShHZXRTaXplLCBpbnQoY29uc3QgbWFwPGludCwgc3RkOjpzdHJpbmc+JiBtKSk7Ci1gYGAK
LQotWW91IHN0aWxsIG5lZWQgYSBgdHlwZWRlZmAgaWYgdGhlIHJldHVybiB0eXBlIGNvbnRhaW5z
IGFuIHVucHJvdGVjdGVkCi1jb21tYSwgYnV0IHRoYXQncyBtdWNoIHJhcmVyLgotCi1PdGhlciBh
ZHZhbnRhZ2VzIGluY2x1ZGU6Ci0gIDEuIGBNT0NLX01FVEhPRDEoRm9vLCBpbnQsIGJvb2wpYCBj
YW4gbGVhdmUgYSByZWFkZXIgd29uZGVyIHdoZXRoZXIgdGhlIG1ldGhvZCByZXR1cm5zIGBpbnRg
IG9yIGBib29sYCwgd2hpbGUgdGhlcmUgd29uJ3QgYmUgc3VjaCBjb25mdXNpb24gdXNpbmcgR29v
Z2xlIE1vY2sncyBzeW50YXguCi0gIDEuIFRoZSB3YXkgR29vZ2xlIE1vY2sgZGVzY3JpYmVzIGEg
ZnVuY3Rpb24gdHlwZSBpcyBub3RoaW5nIG5ldywgYWx0aG91Z2ggbWFueSBwZW9wbGUgbWF5IG5v
dCBiZSBmYW1pbGlhciB3aXRoIGl0LiAgVGhlIHNhbWUgc3ludGF4IHdhcyB1c2VkIGluIEMsIGFu
ZCB0aGUgYGZ1bmN0aW9uYCBsaWJyYXJ5IGluIGB0cjFgIHVzZXMgdGhpcyBzeW50YXggZXh0ZW5z
aXZlbHkuICBTaW5jZSBgdHIxYCB3aWxsIGJlY29tZSBhIHBhcnQgb2YgdGhlIG5ldyB2ZXJzaW9u
IG9mIFNUTCwgd2UgZmVlbCB2ZXJ5IGNvbWZvcnRhYmxlIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBp
dC4KLSAgMS4gVGhlIGZ1bmN0aW9uIHR5cGUgc3ludGF4IGlzIGFsc28gdXNlZCBpbiBvdGhlciBw
YXJ0cyBvZiBHb29nbGUgTW9jaydzIEFQSSAoZS5nLiB0aGUgYWN0aW9uIGludGVyZmFjZSkgaW4g
b3JkZXIgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gdHJhY3RhYmxlLiBBIHVzZXIgbmVlZHMg
dG8gbGVhcm4gaXQgYW55d2F5IGluIG9yZGVyIHRvIHV0aWxpemUgR29vZ2xlIE1vY2sncyBtb3Jl
IGFkdmFuY2VkIGZlYXR1cmVzLiAgV2UnZCBhcyB3ZWxsIHN0aWNrIHRvIHRoZSBzYW1lIHN5bnRh
eCBpbiBgTU9DS19NRVRIT0QqYCEKLQotIyMgTXkgY29kZSBjYWxscyBhIHN0YXRpYy9nbG9iYWwg
ZnVuY3Rpb24uICBDYW4gSSBtb2NrIGl0PyAjIwotCi1Zb3UgY2FuLCBidXQgeW91IG5lZWQgdG8g
bWFrZSBzb21lIGNoYW5nZXMuCi0KLUluIGdlbmVyYWwsIGlmIHlvdSBmaW5kIHlvdXJzZWxmIG5l
ZWRpbmcgdG8gbW9jayBhIHN0YXRpYyBmdW5jdGlvbiwKLWl0J3MgYSBzaWduIHRoYXQgeW91ciBt
b2R1bGVzIGFyZSB0b28gdGlnaHRseSBjb3VwbGVkIChhbmQgbGVzcwotZmxleGlibGUsIGxlc3Mg
cmV1c2FibGUsIGxlc3MgdGVzdGFibGUsIGV0YykuICBZb3UgYXJlIHByb2JhYmx5IGJldHRlcgot
b2ZmIGRlZmluaW5nIGEgc21hbGwgaW50ZXJmYWNlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbiB0aHJv
dWdoIHRoYXQKLWludGVyZmFjZSwgd2hpY2ggdGhlbiBjYW4gYmUgZWFzaWx5IG1vY2tlZC4gIEl0
J3MgYSBiaXQgb2Ygd29yawotaW5pdGlhbGx5LCBidXQgdXN1YWxseSBwYXlzIGZvciBpdHNlbGYg
cXVpY2tseS4KLQotVGhpcyBHb29nbGUgVGVzdGluZyBCbG9nCi1bcG9zdF0oaHR0cDovL2dvb2ds
ZXRlc3RpbmcuYmxvZ3Nwb3QuY29tLzIwMDgvMDYvZGVmZWF0LXN0YXRpYy1jbGluZy5odG1sKQot
c2F5cyBpdCBleGNlbGxlbnRseS4gIENoZWNrIGl0IG91dC4KLQotIyMgTXkgbW9jayBvYmplY3Qg
bmVlZHMgdG8gZG8gY29tcGxleCBzdHVmZi4gIEl0J3MgYSBsb3Qgb2YgcGFpbiB0byBzcGVjaWZ5
IHRoZSBhY3Rpb25zLiAgR29vZ2xlIE1vY2sgc3Vja3MhICMjCi0KLUkga25vdyBpdCdzIG5vdCBh
IHF1ZXN0aW9uLCBidXQgeW91IGdldCBhbiBhbnN3ZXIgZm9yIGZyZWUgYW55IHdheS4gOi0pCi0K
LVdpdGggR29vZ2xlIE1vY2ssIHlvdSBjYW4gY3JlYXRlIG1vY2tzIGluIEMrKyBlYXNpbHkuICBB
bmQgcGVvcGxlIG1pZ2h0IGJlCi10ZW1wdGVkIHRvIHVzZSB0aGVtIGV2ZXJ5d2hlcmUuIFNvbWV0
aW1lcyB0aGV5IHdvcmsgZ3JlYXQsIGFuZAotc29tZXRpbWVzIHlvdSBtYXkgZmluZCB0aGVtLCB3
ZWxsLCBhIHBhaW4gdG8gdXNlLiBTbywgd2hhdCdzIHdyb25nIGluCi10aGUgbGF0dGVyIGNhc2U/
Ci0KLVdoZW4geW91IHdyaXRlIGEgdGVzdCB3aXRob3V0IHVzaW5nIG1vY2tzLCB5b3UgZXhlcmNp
c2UgdGhlIGNvZGUgYW5kCi1hc3NlcnQgdGhhdCBpdCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVl
IG9yIHRoYXQgdGhlIHN5c3RlbSBpcyBpbiBhbgotZXhwZWN0ZWQgc3RhdGUuICBUaGlzIGlzIHNv
bWV0aW1lcyBjYWxsZWQgInN0YXRlLWJhc2VkIHRlc3RpbmciLgotCi1Nb2NrcyBhcmUgZ3JlYXQg
Zm9yIHdoYXQgc29tZSBjYWxsICJpbnRlcmFjdGlvbi1iYXNlZCIgdGVzdGluZzoKLWluc3RlYWQg
b2YgY2hlY2tpbmcgdGhlIHN5c3RlbSBzdGF0ZSBhdCB0aGUgdmVyeSBlbmQsIG1vY2sgb2JqZWN0
cwotdmVyaWZ5IHRoYXQgdGhleSBhcmUgaW52b2tlZCB0aGUgcmlnaHQgd2F5IGFuZCByZXBvcnQg
YW4gZXJyb3IgYXMgc29vbgotYXMgaXQgYXJpc2VzLCBnaXZpbmcgeW91IGEgaGFuZGxlIG9uIHRo
ZSBwcmVjaXNlIGNvbnRleHQgaW4gd2hpY2ggdGhlCi1lcnJvciB3YXMgdHJpZ2dlcmVkLiAgVGhp
cyBpcyBvZnRlbiBtb3JlIGVmZmVjdGl2ZSBhbmQgZWNvbm9taWNhbCB0bwotZG8gdGhhbiBzdGF0
ZS1iYXNlZCB0ZXN0aW5nLgotCi1JZiB5b3UgYXJlIGRvaW5nIHN0YXRlLWJhc2VkIHRlc3Rpbmcg
YW5kIHVzaW5nIGEgdGVzdCBkb3VibGUganVzdCB0bwotc2ltdWxhdGUgdGhlIHJlYWwgb2JqZWN0
LCB5b3UgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgYSBmYWtlLgotVXNpbmcgYSBtb2Nr
IGluIHRoaXMgY2FzZSBjYXVzZXMgcGFpbiwgYXMgaXQncyBub3QgYSBzdHJvbmcgcG9pbnQgZm9y
Ci1tb2NrcyB0byBwZXJmb3JtIGNvbXBsZXggYWN0aW9ucy4gIElmIHlvdSBleHBlcmllbmNlIHRo
aXMgYW5kIHRoaW5rCi10aGF0IG1vY2tzIHN1Y2ssIHlvdSBhcmUganVzdCBub3QgdXNpbmcgdGhl
IHJpZ2h0IHRvb2wgZm9yIHlvdXIKLXByb2JsZW0uIE9yLCB5b3UgbWlnaHQgYmUgdHJ5aW5nIHRv
IHNvbHZlIHRoZSB3cm9uZyBwcm9ibGVtLiA6LSkKLQotIyMgSSBnb3QgYSB3YXJuaW5nICJVbmlu
dGVyZXN0aW5nIGZ1bmN0aW9uIGNhbGwgZW5jb3VudGVyZWQgLSBkZWZhdWx0IGFjdGlvbiB0YWtl
bi4uIiAgU2hvdWxkIEkgcGFuaWM/ICMjCi0KLUJ5IGFsbCBtZWFucywgTk8hICBJdCdzIGp1c3Qg
YW4gRllJLgotCi1XaGF0IGl0IG1lYW5zIGlzIHRoYXQgeW91IGhhdmUgYSBtb2NrIGZ1bmN0aW9u
LCB5b3UgaGF2ZW4ndCBzZXQgYW55Ci1leHBlY3RhdGlvbnMgb24gaXQgKGJ5IEdvb2dsZSBNb2Nr
J3MgcnVsZSB0aGlzIG1lYW5zIHRoYXQgeW91IGFyZSBub3QKLWludGVyZXN0ZWQgaW4gY2FsbHMg
dG8gdGhpcyBmdW5jdGlvbiBhbmQgdGhlcmVmb3JlIGl0IGNhbiBiZSBjYWxsZWQKLWFueSBudW1i
ZXIgb2YgdGltZXMpLCBhbmQgaXQgaXMgY2FsbGVkLiAgVGhhdCdzIE9LIC0geW91IGRpZG4ndCBz
YXkKLWl0J3Mgbm90IE9LIHRvIGNhbGwgdGhlIGZ1bmN0aW9uIQotCi1XaGF0IGlmIHlvdSBhY3R1
YWxseSBtZWFudCB0byBkaXNhbGxvdyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0Ci1m
b3Jnb3QgdG8gd3JpdGUgYEVYUEVDVF9DQUxMKGZvbywgQmFyKCkpLlRpbWVzKDApYD8gIFdoaWxl
Ci1vbmUgY2FuIGFyZ3VlIHRoYXQgaXQncyB0aGUgdXNlcidzIGZhdWx0LCBHb29nbGUgTW9jayB0
cmllcyB0byBiZSBuaWNlIGFuZAotcHJpbnRzIHlvdSBhIG5vdGUuCi0KLVNvLCB3aGVuIHlvdSBz
ZWUgdGhlIG1lc3NhZ2UgYW5kIGJlbGlldmUgdGhhdCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55Ci11
bmludGVyZXN0aW5nIGNhbGxzLCB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHdoYXQncyBnb2luZyBv
bi4gIFRvIG1ha2UKLXlvdXIgbGlmZSBlYXNpZXIsIEdvb2dsZSBNb2NrIHByaW50cyB0aGUgZnVu
Y3Rpb24gbmFtZSBhbmQgYXJndW1lbnRzCi13aGVuIGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBpcyBl
bmNvdW50ZXJlZC4KLQotIyMgSSB3YW50IHRvIGRlZmluZSBhIGN1c3RvbSBhY3Rpb24uICBTaG91
bGQgSSB1c2UgSW52b2tlKCkgb3IgaW1wbGVtZW50IHRoZSBhY3Rpb24gaW50ZXJmYWNlPyAjIwot
Ci1FaXRoZXIgd2F5IGlzIGZpbmUgLSB5b3Ugd2FudCB0byBjaG9vc2UgdGhlIG9uZSB0aGF0J3Mg
bW9yZSBjb252ZW5pZW50Ci1mb3IgeW91ciBjaXJjdW1zdGFuY2UuCi0KLVVzdWFsbHksIGlmIHlv
dXIgYWN0aW9uIGlzIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSwgZGVmaW5pbmcgaXQK
LXVzaW5nIGBJbnZva2UoKWAgc2hvdWxkIGJlIGVhc2llcjsgaWYgeW91ciBhY3Rpb24gY2FuIGJl
IHVzZWQgaW4KLWZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgKGUuZy4gaWYgeW91IGFyZSBk
ZWZpbmluZwotYFJldHVybih2YWx1ZSlgKSwgYE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpYCBpcwot
ZWFzaWVzdC4gIFNvbWV0aW1lcyB5b3Ugd2FudCBwcmVjaXNlIGNvbnRyb2wgb24gd2hhdCB0eXBl
cyBvZgotZnVuY3Rpb25zIHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQgaW4sIGFuZCBpbXBsZW1lbnRp
bmcKLWBBY3Rpb25JbnRlcmZhY2VgIGlzIHRoZSB3YXkgdG8gZ28gaGVyZS4gU2VlIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZgotYFJldHVybigpYCBpbiBgaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25z
LmhgIGZvciBhbiBleGFtcGxlLgotCi0jIyBJJ20gdXNpbmcgdGhlIHNldC1hcmd1bWVudC1wb2lu
dGVlIGFjdGlvbiwgYW5kIHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImNvbmZsaWN0aW5n
IHJldHVybiB0eXBlIHNwZWNpZmllZCIuICBXaGF0IGRvZXMgaXQgbWVhbj8gIyMKLQotWW91IGdv
dCB0aGlzIGVycm9yIGFzIEdvb2dsZSBNb2NrIGhhcyBubyBpZGVhIHdoYXQgdmFsdWUgaXQgc2hv
dWxkIHJldHVybgotd2hlbiB0aGUgbW9jayBtZXRob2QgaXMgY2FsbGVkLiAgYFNldEFyZ1BvaW50
ZWUoKWAgc2F5cyB3aGF0IHRoZQotc2lkZSBlZmZlY3QgaXMsIGJ1dCBkb2Vzbid0IHNheSB3aGF0
IHRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlLiAgWW91Ci1uZWVkIGBEb0FsbCgpYCB0byBjaGFp
biBhIGBTZXRBcmdQb2ludGVlKClgIHdpdGggYSBgUmV0dXJuKClgLgotCi1TZWUgdGhpcyBbcmVj
aXBlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL1YxXzdfQ29va0Jv
b2sjTW9ja2luZ19TaWRlX0VmZmVjdHMpIGZvciBtb3JlIGRldGFpbHMgYW5kIGFuIGV4YW1wbGUu
Ci0KLQotIyMgTXkgcXVlc3Rpb24gaXMgbm90IGluIHlvdXIgRkFRISAjIwotCi1JZiB5b3UgY2Fu
bm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uIGluIHRoaXMgRkFRLCB0aGVyZSBh
cmUKLXNvbWUgb3RoZXIgcmVzb3VyY2VzIHlvdSBjYW4gdXNlOgotCi0gIDEuIHJlYWQgb3RoZXIg
W3dpa2kgcGFnZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2NrL3cvbGlzdCks
Ci0gIDEuIHNlYXJjaCB0aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRwOi8vZ3JvdXBzLmdv
b2dsZS5jb20vZ3JvdXAvZ29vZ2xlbW9jay90b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dvb2ds
ZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbV0obWFpbHRvOmdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNv
bSkgYW5kIHNvbWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWly
ZSB5b3UgdG8gam9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xl
LmNvbS9ncm91cC9nb29nbGVtb2NrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFzZSBu
b3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svaXNzdWVzL2xpc3QpIGlzIF9ub3RfCi1hIGdv
b2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVkIGluZnJlcXVlbnRs
eSBieSBhCi12ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4gYXNraW5nIGEgcXVl
c3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlCi1mb2xsb3dpbmcg
aW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5b3UgaWYgdGhlcmUn
cwotbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToKLQotICAqIHRoZSB2
ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBvdXQgZnJvbSBTVk4g
ZGlyZWN0bHkpIG9mIEdvb2dsZSBNb2NrIHlvdSB1c2UgKEdvb2dsZSBNb2NrIGlzIHVuZGVyIGFj
dGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIgcHJvYmxlbSBoYXMg
YmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5b3VyIG9wZXJhdGluZyBzeXN0
ZW0sCi0gICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxlciwKLSAgKiB0aGUg
Y29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIgY29tcGlsZXIsCi0g
ICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0aGUgcXVlc3Rpb24g
aXMgYWJvdXQgY29tcGlsYXRpb24pLAotICAqIHRoZSBfYWN0dWFsXyBjb2RlIChpZGVhbGx5LCBh
IG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBwcm9ibGVtIHlvdSBl
bmNvdW50ZXIuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1hY3Rpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2dtb2NrLWFjdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNm
NjU0YWYzNDhkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay1hY3Rpb25zLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjA1ICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsg
Zm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50
cyBzb21lIGNvbW1vbmx5IHVzZWQgYWN0aW9ucy4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dN
T0NLX0dNT0NLX0FDVElPTlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19B
Q1RJT05TX0hfCi0KLSNpZm5kZWYgX1dJTjMyX1dDRQotIyBpbmNsdWRlIDxlcnJuby5oPgotI2Vu
ZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVk
ZSAiZ21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRlICJnbW9j
ay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0KLSNpZiBHVEVTVF9IQVNfU1REX1RZUEVfVFJBSVRT
XyAgLy8gRGVmaW5lZCBieSBndGVzdC1wb3J0LmggdmlhIGdtb2NrLXBvcnQuaC4KLSNpbmNsdWRl
IDx0eXBlX3RyYWl0cz4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRvIGlt
cGxlbWVudCBhbiBhY3Rpb24gRm9vLCBkZWZpbmU6Ci0vLyAgIDEuIGEgY2xhc3MgRm9vQWN0aW9u
IHRoYXQgaW1wbGVtZW50cyB0aGUgQWN0aW9uSW50ZXJmYWNlIGludGVyZmFjZSwgYW5kCi0vLyAg
IDIuIGEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYW4gQWN0aW9uIG9iamVjdCBmcm9t
IGEKLS8vICAgICAgY29uc3QgRm9vQWN0aW9uKi4KLS8vCi0vLyBUaGUgdHdvLWxldmVsIGRlbGVn
YXRpb24gZGVzaWduIGZvbGxvd3MgdGhhdCBvZiBNYXRjaGVyLCBwcm92aWRpbmcKLS8vIGNvbnNp
c3RlbmN5IGZvciBleHRlbnNpb24gZGV2ZWxvcGVycy4gIEl0IGFsc28gZWFzZXMgb3duZXJzaGlw
Ci0vLyBtYW5hZ2VtZW50IGFzIEFjdGlvbiBvYmplY3RzIGNhbiBub3cgYmUgY29waWVkIGxpa2Ug
cGxhaW4gdmFsdWVzLgotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRjEsIHR5cGVuYW1lIEYyPgotY2xhc3MgQWN0aW9uQWRhcHRvcjsKLQotLy8gQnVpbHRJbkRl
ZmF1bHRWYWx1ZUdldHRlcjxULCB0cnVlPjo6R2V0KCkgcmV0dXJucyBhCi0vLyBkZWZhdWx0LWNv
bnN0cnVjdGVkIFQgdmFsdWUuICBCdWlsdEluRGVmYXVsdFZhbHVlR2V0dGVyPFQsCi0vLyBmYWxz
ZT46OkdldCgpIGNyYXNoZXMgd2l0aCBhbiBlcnJvci4KLS8vCi0vLyBUaGlzIHByaW1hcnkgdGVt
cGxhdGUgaXMgdXNlZCB3aGVuIGtEZWZhdWx0Q29uc3RydWN0aWJsZSBpcyB0cnVlLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIGJvb2wga0RlZmF1bHRDb25zdHJ1Y3RpYmxlPgotc3RydWN0IEJ1aWx0
SW5EZWZhdWx0VmFsdWVHZXR0ZXIgewotICBzdGF0aWMgVCBHZXQoKSB7IHJldHVybiBUKCk7IH0K
LX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBCdWlsdEluRGVmYXVsdFZhbHVlR2V0
dGVyPFQsIGZhbHNlPiB7Ci0gIHN0YXRpYyBUIEdldCgpIHsKLSAgICBBc3NlcnQoZmFsc2UsIF9f
RklMRV9fLCBfX0xJTkVfXywKLSAgICAgICAgICAgIkRlZmF1bHQgYWN0aW9uIHVuZGVmaW5lZCBm
b3IgdGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlLiIpOwotICAgIHJldHVybiBpbnRlcm5hbDo6SW52
YWxpZDxUPigpOwotICAgIC8vIFRoZSBhYm92ZSBzdGF0ZW1lbnQgd2lsbCBuZXZlciBiZSByZWFj
aGVkLCBidXQgaXMgcmVxdWlyZWQgaW4KLSAgICAvLyBvcmRlciBmb3IgdGhpcyBmdW5jdGlvbiB0
byBjb21waWxlLgotICB9Ci19OwotCi0vLyBCdWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKSBy
ZXR1cm5zIHRoZSAiYnVpbHQtaW4iIGRlZmF1bHQgdmFsdWUKLS8vIGZvciB0eXBlIFQsIHdoaWNo
IGlzIE5VTEwgd2hlbiBUIGlzIGEgcmF3IHBvaW50ZXIgdHlwZSwgMCB3aGVuIFQgaXMKLS8vIGEg
bnVtZXJpYyB0eXBlLCBmYWxzZSB3aGVuIFQgaXMgYm9vbCwgb3IgIiIgd2hlbiBUIGlzIHN0cmlu
ZyBvcgotLy8gc3RkOjpzdHJpbmcuICBJbiBhZGRpdGlvbiwgaW4gQysrMTEgYW5kIGFib3ZlLCBp
dCB0dXJucyBhCi0vLyBkZWZhdWx0LWNvbnN0cnVjdGVkIFQgdmFsdWUgaWYgVCBpcyBkZWZhdWx0
IGNvbnN0cnVjdGlibGUuICBGb3IgYW55Ci0vLyBvdGhlciB0eXBlIFQsIHRoZSBidWlsdC1pbiBk
ZWZhdWx0IFQgdmFsdWUgaXMgdW5kZWZpbmVkLCBhbmQgdGhlCi0vLyBmdW5jdGlvbiB3aWxsIGFi
b3J0IHRoZSBwcm9jZXNzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBCdWlsdEluRGVm
YXVsdFZhbHVlIHsKLSBwdWJsaWM6Ci0jaWYgR1RFU1RfSEFTX1NURF9UWVBFX1RSQUlUU18KLSAg
Ly8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWZmIHR5cGUgVCBoYXMgYSBidWlsdC1pbiBk
ZWZhdWx0IHZhbHVlLgotICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7Ci0gICAgcmV0dXJuIDo6c3Rk
Ojppc19kZWZhdWx0X2NvbnN0cnVjdGlibGU8VD46OnZhbHVlOwotICB9Ci0KLSAgc3RhdGljIFQg
R2V0KCkgewotICAgIHJldHVybiBCdWlsdEluRGVmYXVsdFZhbHVlR2V0dGVyPAotICAgICAgICBU
LCA6OnN0ZDo6aXNfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZT46OkdldCgpOwotICB9
Ci0KLSNlbHNlICAvLyBHVEVTVF9IQVNfU1REX1RZUEVfVFJBSVRTXwotICAvLyBUaGlzIGZ1bmN0
aW9uIHJldHVybnMgdHJ1ZSBpZmYgdHlwZSBUIGhhcyBhIGJ1aWx0LWluIGRlZmF1bHQgdmFsdWUu
Ci0gIHN0YXRpYyBib29sIEV4aXN0cygpIHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBz
dGF0aWMgVCBHZXQoKSB7Ci0gICAgcmV0dXJuIEJ1aWx0SW5EZWZhdWx0VmFsdWVHZXR0ZXI8VCwg
ZmFsc2U+OjpHZXQoKTsKLSAgfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfVFlQRV9UUkFJ
VFNfCi19OwotCi0vLyBUaGlzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc2F5cyB0aGF0IHdlIHVz
ZSB0aGUgc2FtZSBidWlsdC1pbgotLy8gZGVmYXVsdCB2YWx1ZSBmb3IgVCBhbmQgY29uc3QgVC4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQnVpbHRJbkRlZmF1bHRWYWx1ZTxjb25zdCBU
PiB7Ci0gcHVibGljOgotICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7IHJldHVybiBCdWlsdEluRGVm
YXVsdFZhbHVlPFQ+OjpFeGlzdHMoKTsgfQotICBzdGF0aWMgVCBHZXQoKSB7IHJldHVybiBCdWls
dEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKTsgfQotfTsKLQotLy8gVGhpcyBwYXJ0aWFsIHNwZWNp
YWxpemF0aW9uIGRlZmluZXMgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBwb2ludGVyCi0vLyB0eXBl
cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUKj4g
ewotIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgRXhpc3RzKCkgeyByZXR1cm4gdHJ1ZTsgfQotICBz
dGF0aWMgVCogR2V0KCkgeyByZXR1cm4gTlVMTDsgfQotfTsKLQotLy8gVGhlIGZvbGxvd2luZyBz
cGVjaWFsaXphdGlvbnMgZGVmaW5lIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IKLS8vIHNwZWNpZmlj
IHR5cGVzIHdlIGNhcmUgYWJvdXQuCi0jZGVmaW5lIEdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElP
Tl9GT1JfUkVUVVJOX1RZUEVfKHR5cGUsIHZhbHVlKSBcCi0gIHRlbXBsYXRlIDw+IFwKLSAgY2xh
c3MgQnVpbHRJbkRlZmF1bHRWYWx1ZTx0eXBlPiB7IFwKLSAgIHB1YmxpYzogXAotICAgIHN0YXRp
YyBib29sIEV4aXN0cygpIHsgcmV0dXJuIHRydWU7IH0gXAotICAgIHN0YXRpYyB0eXBlIEdldCgp
IHsgcmV0dXJuIHZhbHVlOyB9IFwKLSAgfQotCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05f
Rk9SX1JFVFVSTl9UWVBFXyh2b2lkLCApOyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKDo6
c3RyaW5nLCAiIik7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HCi1HTU9DS19E
RUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyg6OnN0ZDo6c3RyaW5nLCAiIik7
Ci1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhib29sLCBmYWxz
ZSk7Ci1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyh1bnNpZ25l
ZCBjaGFyLCAnXDAnKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZ
UEVfKHNpZ25lZCBjaGFyLCAnXDAnKTsKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1Jf
UkVUVVJOX1RZUEVfKGNoYXIsICdcMCcpOwotCi0vLyBUaGVyZSdzIG5vIG5lZWQgZm9yIGEgZGVm
YXVsdCBhY3Rpb24gZm9yIHNpZ25lZCB3Y2hhcl90LCBhcyB0aGF0Ci0vLyB0eXBlIGlzIHRoZSBz
YW1lIGFzIHdjaGFyX3QgZm9yIGdjYywgYW5kIGludmFsaWQgZm9yIE1TVkMuCi0vLwotLy8gVGhl
cmUncyBhbHNvIG5vIG5lZWQgZm9yIGEgZGVmYXVsdCBhY3Rpb24gZm9yIHVuc2lnbmVkIHdjaGFy
X3QsIGFzCi0vLyB0aGF0IHR5cGUgaXMgdGhlIHNhbWUgYXMgdW5zaWduZWQgaW50IGZvciBnY2Ms
IGFuZCBpbnZhbGlkIGZvcgotLy8gTVNWQy4KLSNpZiBHTU9DS19XQ0hBUl9UX0lTX05BVElWRV8K
LUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHdjaGFyX3QsIDBV
KTsgIC8vIE5PTElOVAotI2VuZGlmCi0KLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1Jf
UkVUVVJOX1RZUEVfKHVuc2lnbmVkIHNob3J0LCAwVSk7ICAvLyBOT0xJTlQKLUdNT0NLX0RFRklO
RV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHNpZ25lZCBzaG9ydCwgMCk7ICAgICAv
LyBOT0xJTlQKLUdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJOX1RZUEVfKHVu
c2lnbmVkIGludCwgMFUpOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5f
VFlQRV8oc2lnbmVkIGludCwgMCk7Ci1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JF
VFVSTl9UWVBFXyh1bnNpZ25lZCBsb25nLCAwVUwpOyAgLy8gTk9MSU5UCi1HTU9DS19ERUZJTkVf
REVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhzaWduZWQgbG9uZywgMEwpOyAgICAgLy8g
Tk9MSU5UCi1HTU9DS19ERUZJTkVfREVGQVVMVF9BQ1RJT05fRk9SX1JFVFVSTl9UWVBFXyhVSW50
NjQsIDApOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oSW50
NjQsIDApOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oZmxv
YXQsIDApOwotR01PQ0tfREVGSU5FX0RFRkFVTFRfQUNUSU9OX0ZPUl9SRVRVUk5fVFlQRV8oZG91
YmxlLCAwKTsKLQotI3VuZGVmIEdNT0NLX0RFRklORV9ERUZBVUxUX0FDVElPTl9GT1JfUkVUVVJO
X1RZUEVfCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBXaGVuIGFuIHVuZXhwZWN0
ZWQgZnVuY3Rpb24gY2FsbCBpcyBlbmNvdW50ZXJlZCwgR29vZ2xlIE1vY2sgd2lsbAotLy8gbGV0
IGl0IHJldHVybiBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBvbmUg
Zm9yIGl0cwotLy8gcmV0dXJuIHR5cGUsIG9yIGlmIHRoZSByZXR1cm4gdHlwZSBoYXMgYSBidWls
dC1pbiBkZWZhdWx0IHZhbHVlOwotLy8gb3RoZXJ3aXNlIEdvb2dsZSBNb2NrIHdvbid0IGtub3cg
d2hhdCB2YWx1ZSB0byByZXR1cm4gYW5kIHdpbGwgaGF2ZQotLy8gdG8gYWJvcnQgdGhlIHByb2Nl
c3MuCi0vLwotLy8gVGhlIERlZmF1bHRWYWx1ZTxUPiBjbGFzcyBhbGxvd3MgYSB1c2VyIHRvIHNw
ZWNpZnkgdGhlCi0vLyBkZWZhdWx0IHZhbHVlIGZvciBhIHR5cGUgVCB0aGF0IGlzIGJvdGggY29w
eWFibGUgYW5kIHB1YmxpY2x5Ci0vLyBkZXN0cnVjdGlibGUgKGkuZS4gYW55dGhpbmcgdGhhdCBj
YW4gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIHJldHVybgotLy8gdHlwZSkuICBUaGUgdXNhZ2UgaXM6
Ci0vLwotLy8gICAvLyBTZXRzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0eXBlIFQgdG8gYmUgZm9v
LgotLy8gICBEZWZhdWx0VmFsdWU8VD46OlNldChmb28pOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBEZWZhdWx0VmFsdWUgewotIHB1YmxpYzoKLSAgLy8gU2V0cyB0aGUgZGVmYXVsdCB2
YWx1ZSBmb3IgdHlwZSBUOyByZXF1aXJlcyBUIHRvIGJlCi0gIC8vIGNvcHktY29uc3RydWN0YWJs
ZSBhbmQgaGF2ZSBhIHB1YmxpYyBkZXN0cnVjdG9yLgotICBzdGF0aWMgdm9pZCBTZXQoVCB4KSB7
Ci0gICAgZGVsZXRlIHByb2R1Y2VyXzsKLSAgICBwcm9kdWNlcl8gPSBuZXcgRml4ZWRWYWx1ZVBy
b2R1Y2VyKHgpOwotICB9Ci0KLSAgLy8gUHJvdmlkZXMgYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGJl
IGNhbGxlZCB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgLy8gVGhpcyBtZXRob2Qg
Y2FuIGJlIHVzZWQgZXZlbiBpZiBUIGlzIG9ubHkgbW92ZS1jb25zdHJ1Y3RpYmxlLCBidXQgaXQg
aXMgbm90Ci0gIC8vIGxpbWl0ZWQgdG8gdGhhdCBjYXNlLgotICB0eXBlZGVmIFQgKCpGYWN0b3J5
RnVuY3Rpb24pKCk7Ci0gIHN0YXRpYyB2b2lkIFNldEZhY3RvcnkoRmFjdG9yeUZ1bmN0aW9uIGZh
Y3RvcnkpIHsKLSAgICBkZWxldGUgcHJvZHVjZXJfOwotICAgIHByb2R1Y2VyXyA9IG5ldyBGYWN0
b3J5VmFsdWVQcm9kdWNlcihmYWN0b3J5KTsKLSAgfQotCi0gIC8vIFVuc2V0cyB0aGUgZGVmYXVs
dCB2YWx1ZSBmb3IgdHlwZSBULgotICBzdGF0aWMgdm9pZCBDbGVhcigpIHsKLSAgICBkZWxldGUg
cHJvZHVjZXJfOwotICAgIHByb2R1Y2VyXyA9IE5VTEw7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRy
dWUgaWZmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVC4KLSAg
c3RhdGljIGJvb2wgSXNTZXQoKSB7IHJldHVybiBwcm9kdWNlcl8gIT0gTlVMTDsgfQotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZiBUIGhhcyBhIGRlZmF1bHQgcmV0dXJuIHZhbHVlIHNldCBieSB0aGUg
dXNlciBvciB0aGVyZQotICAvLyBleGlzdHMgYSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlLgotICBz
dGF0aWMgYm9vbCBFeGlzdHMoKSB7Ci0gICAgcmV0dXJuIElzU2V0KCkgfHwgaW50ZXJuYWw6OkJ1
aWx0SW5EZWZhdWx0VmFsdWU8VD46OkV4aXN0cygpOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUg
ZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBUIGlmIHRoZSB1c2VyIGhhcyBzZXQgb25lOwotICAvLyBv
dGhlcndpc2UgcmV0dXJucyB0aGUgYnVpbHQtaW4gZGVmYXVsdCB2YWx1ZS4gUmVxdWlyZXMgdGhh
dCBFeGlzdHMoKQotICAvLyBpcyB0cnVlLCB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIHJldHVybiB2
YWx1ZSBpcyB3ZWxsLWRlZmluZWQuCi0gIHN0YXRpYyBUIEdldCgpIHsKLSAgICByZXR1cm4gcHJv
ZHVjZXJfID09IE5VTEwgPwotICAgICAgICBpbnRlcm5hbDo6QnVpbHRJbkRlZmF1bHRWYWx1ZTxU
Pjo6R2V0KCkgOiBwcm9kdWNlcl8tPlByb2R1Y2UoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY2xh
c3MgVmFsdWVQcm9kdWNlciB7Ci0gICBwdWJsaWM6Ci0gICAgdmlydHVhbCB+VmFsdWVQcm9kdWNl
cigpIHt9Ci0gICAgdmlydHVhbCBUIFByb2R1Y2UoKSA9IDA7Ci0gIH07Ci0KLSAgY2xhc3MgRml4
ZWRWYWx1ZVByb2R1Y2VyIDogcHVibGljIFZhbHVlUHJvZHVjZXIgewotICAgcHVibGljOgotICAg
IGV4cGxpY2l0IEZpeGVkVmFsdWVQcm9kdWNlcihUIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30K
LSAgICB2aXJ0dWFsIFQgUHJvZHVjZSgpIHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gICBwcml2YXRl
OgotICAgIGNvbnN0IFQgdmFsdWVfOwotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oRml4ZWRWYWx1ZVByb2R1Y2VyKTsKLSAgfTsKLQotICBjbGFzcyBGYWN0b3J5VmFsdWVQcm9k
dWNlciA6IHB1YmxpYyBWYWx1ZVByb2R1Y2VyIHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBG
YWN0b3J5VmFsdWVQcm9kdWNlcihGYWN0b3J5RnVuY3Rpb24gZmFjdG9yeSkKLSAgICAgICAgOiBm
YWN0b3J5XyhmYWN0b3J5KSB7fQotICAgIHZpcnR1YWwgVCBQcm9kdWNlKCkgeyByZXR1cm4gZmFj
dG9yeV8oKTsgfQotCi0gICBwcml2YXRlOgotICAgIGNvbnN0IEZhY3RvcnlGdW5jdGlvbiBmYWN0
b3J5XzsKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEZhY3RvcnlWYWx1ZVBy
b2R1Y2VyKTsKLSAgfTsKLQotICBzdGF0aWMgVmFsdWVQcm9kdWNlciogcHJvZHVjZXJfOwotfTsK
LQotLy8gVGhpcyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGFsbG93cyBhIHVzZXIgdG8gc2V0IGRl
ZmF1bHQgdmFsdWVzIGZvcgotLy8gcmVmZXJlbmNlIHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBEZWZhdWx0VmFsdWU8VCY+IHsKLSBwdWJsaWM6Ci0gIC8vIFNldHMgdGhlIGRl
ZmF1bHQgdmFsdWUgZm9yIHR5cGUgVCYuCi0gIHN0YXRpYyB2b2lkIFNldChUJiB4KSB7ICAvLyBO
T0xJTlQKLSAgICBhZGRyZXNzXyA9ICZ4OwotICB9Ci0KLSAgLy8gVW5zZXRzIHRoZSBkZWZhdWx0
IHZhbHVlIGZvciB0eXBlIFQmLgotICBzdGF0aWMgdm9pZCBDbGVhcigpIHsKLSAgICBhZGRyZXNz
XyA9IE5VTEw7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1c2VyIGhhcyBzZXQg
dGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUgVCYuCi0gIHN0YXRpYyBib29sIElzU2V0KCkgeyBy
ZXR1cm4gYWRkcmVzc18gIT0gTlVMTDsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBUIGhhcyBh
IGRlZmF1bHQgcmV0dXJuIHZhbHVlIHNldCBieSB0aGUgdXNlciBvciB0aGVyZQotICAvLyBleGlz
dHMgYSBidWlsdC1pbiBkZWZhdWx0IHZhbHVlLgotICBzdGF0aWMgYm9vbCBFeGlzdHMoKSB7Ci0g
ICAgcmV0dXJuIElzU2V0KCkgfHwgaW50ZXJuYWw6OkJ1aWx0SW5EZWZhdWx0VmFsdWU8VCY+OjpF
eGlzdHMoKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHR5cGUg
VCYgaWYgdGhlIHVzZXIgaGFzIHNldCBvbmU7Ci0gIC8vIG90aGVyd2lzZSByZXR1cm5zIHRoZSBi
dWlsdC1pbiBkZWZhdWx0IHZhbHVlIGlmIHRoZXJlIGlzIG9uZTsKLSAgLy8gb3RoZXJ3aXNlIGFi
b3J0cyB0aGUgcHJvY2Vzcy4KLSAgc3RhdGljIFQmIEdldCgpIHsKLSAgICByZXR1cm4gYWRkcmVz
c18gPT0gTlVMTCA/Ci0gICAgICAgIGludGVybmFsOjpCdWlsdEluRGVmYXVsdFZhbHVlPFQmPjo6
R2V0KCkgOiAqYWRkcmVzc187Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBUKiBhZGRyZXNz
XzsKLX07Ci0KLS8vIFRoaXMgc3BlY2lhbGl6YXRpb24gYWxsb3dzIERlZmF1bHRWYWx1ZTx2b2lk
Pjo6R2V0KCkgdG8KLS8vIGNvbXBpbGUuCi10ZW1wbGF0ZSA8PgotY2xhc3MgRGVmYXVsdFZhbHVl
PHZvaWQ+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIEV4aXN0cygpIHsgcmV0dXJuIHRydWU7
IH0KLSAgc3RhdGljIHZvaWQgR2V0KCkge30KLX07Ci0KLS8vIFBvaW50cyB0byB0aGUgdXNlci1z
ZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdHlwZSBULgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBl
bmFtZSBEZWZhdWx0VmFsdWU8VD46OlZhbHVlUHJvZHVjZXIqIERlZmF1bHRWYWx1ZTxUPjo6cHJv
ZHVjZXJfID0gTlVMTDsKLQotLy8gUG9pbnRzIHRvIHRoZSB1c2VyLXNldCBkZWZhdWx0IHZhbHVl
IGZvciB0eXBlIFQmLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1UKiBEZWZhdWx0VmFsdWU8VCY+
OjphZGRyZXNzXyA9IE5VTEw7Ci0KLS8vIEltcGxlbWVudCB0aGlzIGludGVyZmFjZSB0byBkZWZp
bmUgYW4gYWN0aW9uIGZvciBmdW5jdGlvbiB0eXBlIEYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
LWNsYXNzIEFjdGlvbkludGVyZmFjZSB7Ci0gcHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1lIGlu
dGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBB
Y3Rpb25JbnRlcmZhY2UoKSB7fQotICB2aXJ0dWFsIH5BY3Rpb25JbnRlcmZhY2UoKSB7fQotCi0g
IC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBUaGlzIG1ldGhvZCBpcyBub3QgY29uc3QsIGFzIGlu
IGdlbmVyYWwgYW4KLSAgLy8gYWN0aW9uIGNhbiBoYXZlIHNpZGUgZWZmZWN0cyBhbmQgYmUgc3Rh
dGVmdWwuICBGb3IgZXhhbXBsZSwgYQotICAvLyBnZXQtdGhlLW5leHQtZWxlbWVudC1mcm9tLXRo
ZS1jb2xsZWN0aW9uIGFjdGlvbiB3aWxsIG5lZWQgdG8KLSAgLy8gcmVtZW1iZXIgdGhlIGN1cnJl
bnQgZWxlbWVudC4KLSAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzKSA9IDA7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKEFjdGlvbkludGVyZmFjZSk7Ci19OwotCi0vLyBBbiBBY3Rpb248Rj4gaXMgYSBjb3B5YWJs
ZSBhbmQgSU1NVVRBQkxFIChleGNlcHQgYnkgYXNzaWdubWVudCkKLS8vIG9iamVjdCB0aGF0IHJl
cHJlc2VudHMgYW4gYWN0aW9uIHRvIGJlIHRha2VuIHdoZW4gYSBtb2NrIGZ1bmN0aW9uCi0vLyBv
ZiB0eXBlIEYgaXMgY2FsbGVkLiAgVGhlIGltcGxlbWVudGF0aW9uIG9mIEFjdGlvbjxUPiBpcyBq
dXN0IGEKLS8vIGxpbmtlZF9wdHIgdG8gY29uc3QgQWN0aW9uSW50ZXJmYWNlPFQ+LCBzbyBjb3B5
aW5nIGlzIGZhaXJseSBjaGVhcC4KLS8vIERvbid0IGluaGVyaXQgZnJvbSBBY3Rpb24hCi0vLwot
Ly8gWW91IGNhbiB2aWV3IGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgQWN0aW9uSW50ZXJmYWNlPEY+
IGFzIGEKLS8vIGNvbmNyZXRlIGFjdGlvbiAoaW5jbHVkaW5nIGl0cyBjdXJyZW50IHN0YXRlKSwg
YW5kIGFuIEFjdGlvbjxGPgotLy8gb2JqZWN0IGFzIGEgaGFuZGxlIHRvIGl0LgotdGVtcGxhdGUg
PHR5cGVuYW1lIEY+Ci1jbGFzcyBBY3Rpb24gewotIHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0gIHR5cGVkZWYgdHlwZW5h
bWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0K
LSAgLy8gQ29uc3RydWN0cyBhIG51bGwgQWN0aW9uLiAgTmVlZGVkIGZvciBzdG9yaW5nIEFjdGlv
biBvYmplY3RzIGluCi0gIC8vIFNUTCBjb250YWluZXJzLgotICBBY3Rpb24oKSA6IGltcGxfKE5V
TEwpIHt9Ci0KLSAgLy8gQ29uc3RydWN0cyBhbiBBY3Rpb24gZnJvbSBpdHMgaW1wbGVtZW50YXRp
b24uICBBIE5VTEwgaW1wbCBpcwotICAvLyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgImRvLWRlZmF1
bHQiIGFjdGlvbi4KLSAgZXhwbGljaXQgQWN0aW9uKEFjdGlvbkludGVyZmFjZTxGPiogaW1wbCkg
OiBpbXBsXyhpbXBsKSB7fQotCi0gIC8vIENvcHkgY29uc3RydWN0b3IuCi0gIEFjdGlvbihjb25z
dCBBY3Rpb24mIGFjdGlvbikgOiBpbXBsXyhhY3Rpb24uaW1wbF8pIHt9Ci0KLSAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBhbGxvd3MgdXMgdG8gdHVybiBhbiBBY3Rpb248RnVuYz4gb2JqZWN0IGludG8g
YW4KLSAgLy8gQWN0aW9uPEY+LCBhcyBsb25nIGFzIEYncyBhcmd1bWVudHMgY2FuIGJlIGltcGxp
Y2l0bHkgY29udmVydGVkCi0gIC8vIHRvIEZ1bmMncyBhbmQgRnVuYydzIHJldHVybiB0eXBlIGNh
biBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bwotICAvLyBGJ3MuCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jPgotICBleHBsaWNpdCBBY3Rpb24oY29uc3QgQWN0aW9uPEZ1bmM+JiBhY3Rpb24p
OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBpcyB0aGUgRG9EZWZhdWx0KCkgYWN0aW9u
LgotICBib29sIElzRG9EZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gaW1wbF8uZ2V0KCkgPT0gTlVM
TDsgfQotCi0gIC8vIFBlcmZvcm1zIHRoZSBhY3Rpb24uICBOb3RlIHRoYXQgdGhpcyBtZXRob2Qg
aXMgY29uc3QgZXZlbiB0aG91Z2gKLSAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kIGluIEFj
dGlvbkludGVyZmFjZSBpcyBub3QuICBUaGUgcmVhc29uCi0gIC8vIGlzIHRoYXQgYSBjb25zdCBB
Y3Rpb248Rj4gbWVhbnMgdGhhdCBpdCBjYW5ub3QgYmUgcmUtYm91bmQgdG8KLSAgLy8gYW5vdGhl
ciBjb25jcmV0ZSBhY3Rpb24sIG5vdCB0aGF0IHRoZSBjb25jcmV0ZSBhY3Rpb24gaXQgYmluZHMg
dG8KLSAgLy8gY2Fubm90IGNoYW5nZSBzdGF0ZS4gIChUaGluayBvZiB0aGUgZGlmZmVyZW5jZSBi
ZXR3ZWVuIGEgY29uc3QKLSAgLy8gcG9pbnRlciBhbmQgYSBwb2ludGVyIHRvIGNvbnN0LikKLSAg
UmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgewotICAgIGlu
dGVybmFsOjpBc3NlcnQoCi0gICAgICAgICFJc0RvRGVmYXVsdCgpLCBfX0ZJTEVfXywgX19MSU5F
X18sCi0gICAgICAgICJZb3UgYXJlIHVzaW5nIERvRGVmYXVsdCgpIGluc2lkZSBhIGNvbXBvc2l0
ZSBhY3Rpb24gbGlrZSAiCi0gICAgICAgICJEb0FsbCgpIG9yIFdpdGhBcmdzKCkuICBUaGlzIGlz
IG5vdCBzdXBwb3J0ZWQgZm9yIHRlY2huaWNhbCAiCi0gICAgICAgICJyZWFzb25zLiAgUGxlYXNl
IGluc3RlYWQgc3BlbGwgb3V0IHRoZSBkZWZhdWx0IGFjdGlvbiwgb3IgIgotICAgICAgICAiYXNz
aWduIHRoZSBkZWZhdWx0IGFjdGlvbiB0byBhbiBBY3Rpb24gdmFyaWFibGUgYW5kIHVzZSAiCi0g
ICAgICAgICJ0aGUgdmFyaWFibGUgaW4gdmFyaW91cyBwbGFjZXMuIik7Ci0gICAgcmV0dXJuIGlt
cGxfLT5QZXJmb3JtKGFyZ3MpOwotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRjEsIHR5cGVuYW1lIEYyPgotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFjdGlvbkFkYXB0
b3I7Ci0KLSAgaW50ZXJuYWw6OmxpbmtlZF9wdHI8QWN0aW9uSW50ZXJmYWNlPEY+ID4gaW1wbF87
Ci19OwotCi0vLyBUaGUgUG9seW1vcnBoaWNBY3Rpb24gY2xhc3MgdGVtcGxhdGUgbWFrZXMgaXQg
ZWFzeSB0byBpbXBsZW1lbnQgYQotLy8gcG9seW1vcnBoaWMgYWN0aW9uIChpLmUuIGFuIGFjdGlv
biB0aGF0IGNhbiBiZSB1c2VkIGluIG1vY2sKLS8vIGZ1bmN0aW9ucyBvZiB0aGFuIG9uZSB0eXBl
LCBlLmcuIFJldHVybigpKS4KLS8vCi0vLyBUbyBkZWZpbmUgYSBwb2x5bW9ycGhpYyBhY3Rpb24s
IGEgdXNlciBmaXJzdCBwcm92aWRlcyBhIENPUFlBQkxFCi0vLyBpbXBsZW1lbnRhdGlvbiBjbGFz
cyB0aGF0IGhhcyBhIFBlcmZvcm0oKSBtZXRob2QgdGVtcGxhdGU6Ci0vLwotLy8gICBjbGFzcyBG
b29BY3Rpb24gewotLy8gICAgcHVibGljOgotLy8gICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0vLyAgICAgUmVzdWx0IFBlcmZvcm0oY29uc3Qg
QXJndW1lbnRUdXBsZSYgYXJncykgY29uc3QgewotLy8gICAgICAgLy8gUHJvY2Vzc2VzIHRoZSBh
cmd1bWVudHMgYW5kIHJldHVybnMgYSByZXN1bHQsIHVzaW5nCi0vLyAgICAgICAvLyB0cjE6Omdl
dDxOPihhcmdzKSB0byBnZXQgdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50IGluIHRoZSB0dXBs
ZS4KLS8vICAgICB9Ci0vLyAgICAgLi4uCi0vLyAgIH07Ci0vLwotLy8gVGhlbiB0aGUgdXNlciBj
cmVhdGVzIHRoZSBwb2x5bW9ycGhpYyBhY3Rpb24gdXNpbmcKLS8vIE1ha2VQb2x5bW9ycGhpY0Fj
dGlvbihvYmplY3QpIHdoZXJlIG9iamVjdCBoYXMgdHlwZSBGb29BY3Rpb24uICBTZWUKLS8vIHRo
ZSBkZWZpbml0aW9uIG9mIFJldHVybih2b2lkKSBhbmQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHZh
bHVlKSBmb3IKLS8vIGNvbXBsZXRlIGV4YW1wbGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+
Ci1jbGFzcyBQb2x5bW9ycGhpY0FjdGlvbiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBQb2x5bW9y
cGhpY0FjdGlvbihjb25zdCBJbXBsJiBpbXBsKSA6IGltcGxfKGltcGwpIHt9Ci0KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIEY+Ci0gIG9wZXJhdG9yIEFjdGlvbjxGPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gQWN0aW9uPEY+KG5ldyBNb25vbW9ycGhpY0ltcGw8Rj4oaW1wbF8pKTsKLSAgfQotCi0gcHJp
dmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGNsYXNzIE1vbm9tb3JwaGljSW1wbCA6
IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICAgIHR5cGVkZWYg
dHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVw
bGU7Ci0KLSAgICBleHBsaWNpdCBNb25vbW9ycGhpY0ltcGwoY29uc3QgSW1wbCYgaW1wbCkgOiBp
bXBsXyhpbXBsKSB7fQotCi0gICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVu
dFR1cGxlJiBhcmdzKSB7Ci0gICAgICByZXR1cm4gaW1wbF8udGVtcGxhdGUgUGVyZm9ybTxSZXN1
bHQ+KGFyZ3MpOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJbXBsIGltcGxfOwotCi0gICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhNb25vbW9ycGhpY0ltcGwpOwotICB9OwotCi0gIEltcGwg
aW1wbF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQb2x5bW9ycGhpY0FjdGlvbik7Ci19
OwotCi0vLyBDcmVhdGVzIGFuIEFjdGlvbiBmcm9tIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgcmV0
dXJucyBpdC4gIFRoZQotLy8gY3JlYXRlZCBBY3Rpb24gb2JqZWN0IG93bnMgdGhlIGltcGxlbWVu
dGF0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1BY3Rpb248Rj4gTWFrZUFjdGlvbihBY3Rp
b25JbnRlcmZhY2U8Rj4qIGltcGwpIHsKLSAgcmV0dXJuIEFjdGlvbjxGPihpbXBsKTsKLX0KLQot
Ly8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIGFjdGlvbiBmcm9tIGl0cyBpbXBsZW1lbnRhdGlvbi4g
IFRoaXMgaXMKLS8vIGVhc2llciB0byB1c2UgdGhhbiB0aGUgUG9seW1vcnBoaWNBY3Rpb248SW1w
bD4gY29uc3RydWN0b3IgYXMgaXQKLS8vIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZXhwbGljaXRs
eSB3cml0ZSB0aGUgdGVtcGxhdGUgYXJndW1lbnQsIGUuZy4KLS8vCi0vLyAgIE1ha2VQb2x5bW9y
cGhpY0FjdGlvbihmb28pOwotLy8gdnMKLS8vICAgUG9seW1vcnBoaWNBY3Rpb248VHlwZU9mRm9v
Pihmb28pOwotdGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+Ci1pbmxpbmUgUG9seW1vcnBoaWNBY3Rp
b248SW1wbD4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGNvbnN0IEltcGwmIGltcGwpIHsKLSAgcmV0
dXJuIFBvbHltb3JwaGljQWN0aW9uPEltcGw+KGltcGwpOwotfQotCi1uYW1lc3BhY2UgaW50ZXJu
YWwgewotCi0vLyBBbGxvd3MgYW4gQWN0aW9uPEYyPiBvYmplY3QgdG8gcG9zZSBhcyBhbiBBY3Rp
b248RjE+LCBhcyBsb25nIGFzIEYyCi0vLyBhbmQgRjEgYXJlIGNvbXBhdGlibGUuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgRjEsIHR5cGVuYW1lIEYyPgotY2xhc3MgQWN0aW9uQWRhcHRvciA6IHB1Ymxp
YyBBY3Rpb25JbnRlcmZhY2U8RjE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEYxPjo6UmVzdWx0IFJlc3VsdDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBp
bnRlcm5hbDo6RnVuY3Rpb248RjE+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAg
ZXhwbGljaXQgQWN0aW9uQWRhcHRvcihjb25zdCBBY3Rpb248RjI+JiBmcm9tKSA6IGltcGxfKGZy
b20uaW1wbF8pIHt9Ci0KLSAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1
cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIGltcGxfLT5QZXJmb3JtKGFyZ3MpOwotICB9Ci0KLSBw
cml2YXRlOgotICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxBY3Rpb25JbnRlcmZhY2U8RjI+
ID4gaW1wbF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBY3Rpb25BZGFwdG9yKTsKLX07
Ci0KLS8vIEhlbHBlciBzdHJ1Y3QgdG8gc3BlY2lhbGl6ZSBSZXR1cm5BY3Rpb24gdG8gZXhlY3V0
ZSBhIG1vdmUgaW5zdGVhZCBvZiBhIGNvcHkKLS8vIG9uIHJldHVybi4gVXNlZnVsIGZvciBtb3Zl
LW9ubHkgdHlwZXMsIGJ1dCBjb3VsZCBiZSB1c2VkIG9uIGFueSB0eXBlLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1zdHJ1Y3QgQnlNb3ZlV3JhcHBlciB7Ci0gIGV4cGxpY2l0IEJ5TW92ZVdyYXBw
ZXIoVCB2YWx1ZSkgOiBwYXlsb2FkKGludGVybmFsOjptb3ZlKHZhbHVlKSkge30KLSAgVCBwYXls
b2FkOwotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgUmV0dXJuKHgpIGFjdGlv
biwgd2hpY2ggY2FuIGJlIHVzZWQgaW4KLS8vIGFueSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhl
IHR5cGUgb2YgeCwgcmVnYXJkbGVzcyBvZiB0aGUgYXJndW1lbnQKLS8vIHR5cGVzLgotLy8KLS8v
IE5vdGU6IFRoZSB2YWx1ZSBwYXNzZWQgaW50byBSZXR1cm4gbXVzdCBiZSBjb252ZXJ0ZWQgaW50
bwotLy8gRnVuY3Rpb248Rj46OlJlc3VsdCB3aGVuIHRoaXMgYWN0aW9uIGlzIGNhc3QgdG8gQWN0
aW9uPEY+IHJhdGhlciB0aGFuCi0vLyB3aGVuIHRoYXQgYWN0aW9uIGlzIHBlcmZvcm1lZC4gVGhp
cyBpcyBpbXBvcnRhbnQgaW4gc2NlbmFyaW9zIGxpa2UKLS8vCi0vLyBNT0NLX01FVEhPRDEoTWV0
aG9kLCBUKFUpKTsKLS8vIC4uLgotLy8gewotLy8gICBGb28gZm9vOwotLy8gICBYIHgoJmZvbyk7
Ci0vLyAgIEVYUEVDVF9DQUxMKG1vY2ssIE1ldGhvZChfKSkuV2lsbE9uY2UoUmV0dXJuKHgpKTsK
LS8vIH0KLS8vCi0vLyBJbiB0aGUgZXhhbXBsZSBhYm92ZSB0aGUgdmFyaWFibGUgeCBob2xkcyBy
ZWZlcmVuY2UgdG8gZm9vIHdoaWNoIGxlYXZlcwotLy8gc2NvcGUgYW5kIGdldHMgZGVzdHJveWVk
LiAgSWYgY29weWluZyBYIGp1c3QgY29waWVzIGEgcmVmZXJlbmNlIHRvIGZvbywKLS8vIHRoYXQg
Y29weSB3aWxsIGJlIGxlZnQgd2l0aCBhIGhhbmdpbmcgcmVmZXJlbmNlLiAgSWYgY29udmVyc2lv
biB0byBUCi0vLyBtYWtlcyBhIGNvcHkgb2YgZm9vLCB0aGUgYWJvdmUgY29kZSBpcyBzYWZlLiBU
byBzdXBwb3J0IHRoYXQgc2NlbmFyaW8sIHdlCi0vLyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRo
ZSB0eXBlIGNvbnZlcnNpb24gaGFwcGVucyBpbnNpZGUgdGhlIEVYUEVDVF9DQUxMCi0vLyBzdGF0
ZW1lbnQsIGFuZCBjb252ZXJzaW9uIG9mIHRoZSByZXN1bHQgb2YgUmV0dXJuIHRvIEFjdGlvbjxU
KFUpPiBpcyBhCi0vLyBnb29kIHBsYWNlIGZvciB0aGF0LgotLy8KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSPgotY2xhc3MgUmV0dXJuQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMgYSBS
ZXR1cm5BY3Rpb24gb2JqZWN0IGZyb20gdGhlIHZhbHVlIHRvIGJlIHJldHVybmVkLgotICAvLyAn
dmFsdWUnIGlzIHBhc3NlZCBieSB2YWx1ZSBpbnN0ZWFkIG9mIGJ5IGNvbnN0IHJlZmVyZW5jZSBp
biBvcmRlcgotICAvLyB0byBhbGxvdyBSZXR1cm4oInN0cmluZyBsaXRlcmFsIikgdG8gY29tcGls
ZS4KLSAgZXhwbGljaXQgUmV0dXJuQWN0aW9uKFIgdmFsdWUpIDogdmFsdWVfKG5ldyBSKGludGVy
bmFsOjptb3ZlKHZhbHVlKSkpIHt9Ci0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNp
b24gb3BlcmF0b3IgYWxsb3dzIFJldHVybih4KSB0byBiZQotICAvLyB1c2VkIGluIEFOWSBmdW5j
dGlvbiB0aGF0IHJldHVybnMgeCdzIHR5cGUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBv
cGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7Ci0gICAgLy8gQXNzZXJ0IHN0YXRlbWVudCBiZWxv
bmdzIGhlcmUgYmVjYXVzZSB0aGlzIGlzIHRoZSBiZXN0IHBsYWNlIHRvIHZlcmlmeQotICAgIC8v
IGNvbmRpdGlvbnMgb24gRi4gSXQgcHJvZHVjZXMgdGhlIGNsZWFyZXN0IGVycm9yIG1lc3NhZ2Vz
Ci0gICAgLy8gaW4gbW9zdCBjb21waWxlcnMuCi0gICAgLy8gSW1wbCByZWFsbHkgYmVsb25ncyBp
biB0aGlzIHNjb3BlIGFzIGEgbG9jYWwgY2xhc3MgYnV0IGNhbid0Ci0gICAgLy8gYmVjYXVzZSBN
U1ZDIHByb2R1Y2VzIGR1cGxpY2F0ZSBzeW1ib2xzIGluIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1
bml0cwotICAgIC8vIGluIHRoaXMgY2FzZS4gVW50aWwgTVMgZml4ZXMgdGhhdCBidWcgd2UgcHV0
IEltcGwgaW50byB0aGUgY2xhc3Mgc2NvcGUKLSAgICAvLyBhbmQgcHV0IHRoZSB0eXBlZGVmIGJv
dGggaGVyZSAoZm9yIHVzZSBpbiBhc3NlcnQgc3RhdGVtZW50KSBhbmQKLSAgICAvLyBpbiB0aGUg
SW1wbCBjbGFzcy4gQnV0IGJvdGggZGVmaW5pdGlvbnMgbXVzdCBiZSB0aGUgc2FtZS4KLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICAgIEdURVNUX0NP
TVBJTEVfQVNTRVJUXygKLSAgICAgICAgIWlzX3JlZmVyZW5jZTxSZXN1bHQ+Ojp2YWx1ZSwKLSAg
ICAgICAgdXNlX1JldHVyblJlZl9pbnN0ZWFkX29mX1JldHVybl90b19yZXR1cm5fYV9yZWZlcmVu
Y2UpOwotICAgIHJldHVybiBBY3Rpb248Rj4obmV3IEltcGw8UiwgRj4odmFsdWVfKSk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIC8vIEltcGxlbWVudHMgdGhlIFJldHVybih4KSBhY3Rpb24gZm9yIGEg
cGFydGljdWxhciBmdW5jdGlvbiB0eXBlIEYuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSXywgdHlw
ZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAg
cHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVu
dFR1cGxlOwotCi0gICAgLy8gVGhlIGltcGxpY2l0IGNhc3QgaXMgbmVjZXNzYXJ5IHdoZW4gUmVz
dWx0IGhhcyBtb3JlIHRoYW4gb25lCi0gICAgLy8gc2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9y
IChlLmcuIFJlc3VsdCBpcyBzdGQ6OnZlY3RvcjxpbnQ+KSBhbmQgUgotICAgIC8vIGhhcyBhIHR5
cGUgY29udmVyc2lvbiBvcGVyYXRvciB0ZW1wbGF0ZS4gIEluIHRoYXQgY2FzZSwgdmFsdWVfKHZh
bHVlKQotICAgIC8vIHdvbid0IGNvbXBpbGUgYXMgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qga25vd24g
d2hpY2ggY29uc3RydWN0b3Igb2YKLSAgICAvLyBSZXN1bHQgdG8gY2FsbC4gIEltcGxpY2l0Q2Fz
dF8gZm9yY2VzIHRoZSBjb21waWxlciB0byBjb252ZXJ0IFIgdG8KLSAgICAvLyBSZXN1bHQgd2l0
aG91dCBjb25zaWRlcmluZyBleHBsaWNpdCBjb25zdHJ1Y3RvcnMsIHRodXMgcmVzb2x2aW5nIHRo
ZQotICAgIC8vIGFtYmlndWl0eS4gdmFsdWVfIGlzIHRoZW4gaW5pdGlhbGl6ZWQgdXNpbmcgaXRz
IGNvcHkgY29uc3RydWN0b3IuCi0gICAgZXhwbGljaXQgSW1wbChjb25zdCBsaW5rZWRfcHRyPFI+
JiB2YWx1ZSkKLSAgICAgICAgOiB2YWx1ZV9iZWZvcmVfY2FzdF8oKnZhbHVlKSwKLSAgICAgICAg
ICB2YWx1ZV8oSW1wbGljaXRDYXN0XzxSZXN1bHQ+KHZhbHVlX2JlZm9yZV9jYXN0XykpIHt9Ci0K
LSAgICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmKSB7IHJldHVy
biB2YWx1ZV87IH0KLQotICAgcHJpdmF0ZToKLSAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oIWlz
X3JlZmVyZW5jZTxSZXN1bHQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUmVz
dWx0X2Nhbm5vdF9iZV9hX3JlZmVyZW5jZV90eXBlKTsKLSAgICAvLyBXZSBzYXZlIHRoZSB2YWx1
ZSBiZWZvcmUgY2FzdGluZyBqdXN0IGluIGNhc2UgaXQgaXMgYmVpbmcgY2FzdCB0byBhCi0gICAg
Ly8gd3JhcHBlciB0eXBlLgotICAgIFIgdmFsdWVfYmVmb3JlX2Nhc3RfOwotICAgIFJlc3VsdCB2
YWx1ZV87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEltcGwpOwotICB9
OwotCi0gIC8vIFBhcnRpYWxseSBzcGVjaWFsaXplIGZvciBCeU1vdmVXcmFwcGVyLiBUaGlzIHZl
cnNpb24gb2YgUmV0dXJuQWN0aW9uIHdpbGwKLSAgLy8gbW92ZSBpdHMgY29udGVudHMgaW5zdGVh
ZC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJfLCB0eXBlbmFtZSBGPgotICBjbGFzcyBJbXBsPEJ5
TW92ZVdyYXBwZXI8Ul8+LCBGPiA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAgcHVi
bGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1
cGxlOwotCi0gICAgZXhwbGljaXQgSW1wbChjb25zdCBsaW5rZWRfcHRyPFI+JiB3cmFwcGVyKQot
ICAgICAgICA6IHBlcmZvcm1lZF8oZmFsc2UpLCB3cmFwcGVyXyh3cmFwcGVyKSB7fQotCi0gICAg
dmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJikgewotICAgICAgR1RF
U1RfQ0hFQ0tfKCFwZXJmb3JtZWRfKQotICAgICAgICAgIDw8ICJBIEJ5TW92ZSgpIGFjdGlvbiBz
aG91bGQgb25seSBiZSBwZXJmb3JtZWQgb25jZS4iOwotICAgICAgcGVyZm9ybWVkXyA9IHRydWU7
Ci0gICAgICByZXR1cm4gaW50ZXJuYWw6Om1vdmUod3JhcHBlcl8tPnBheWxvYWQpOwotICAgIH0K
LQotICAgcHJpdmF0ZToKLSAgICBib29sIHBlcmZvcm1lZF87Ci0gICAgY29uc3QgbGlua2VkX3B0
cjxSPiB3cmFwcGVyXzsKLQotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7Ci0gIH07
Ci0KLSAgY29uc3QgbGlua2VkX3B0cjxSPiB2YWx1ZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXyhSZXR1cm5BY3Rpb24pOwotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgUmV0dXJuTnVsbCgp
IGFjdGlvbi4KLWNsYXNzIFJldHVybk51bGxBY3Rpb24gewotIHB1YmxpYzoKLSAgLy8gQWxsb3dz
IFJldHVybk51bGwoKSB0byBiZSB1c2VkIGluIGFueSBwb2ludGVyLXJldHVybmluZyBmdW5jdGlv
bi4gSW4gQysrMTEKLSAgLy8gdGhpcyBpcyBlbmZvcmNlZCBieSByZXR1cm5pbmcgbnVsbHB0ciwg
YW5kIGluIG5vbi1DKysxMSBieSBhc3NlcnRpbmcgYQotICAvLyBwb2ludGVyIHR5cGUgb24gY29t
cGlsZSB0aW1lLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVu
dFR1cGxlPgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYpIHsK
LSNpZiBHVEVTVF9MQU5HX0NYWDExCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZWxzZQotICAgIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXyhpbnRlcm5hbDo6aXNfcG9pbnRlcjxSZXN1bHQ+Ojp2YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuTnVsbF9jYW5fYmVfdXNlZF90b19yZXR1
cm5fYV9wb2ludGVyX29ubHkpOwotICAgIHJldHVybiBOVUxMOwotI2VuZGlmICAvLyBHVEVTVF9M
QU5HX0NYWDExCi0gIH0KLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFJldHVybigpIGFjdGlvbi4K
LWNsYXNzIFJldHVyblZvaWRBY3Rpb24gewotIHB1YmxpYzoKLSAgLy8gQWxsb3dzIFJldHVybigp
IHRvIGJlIHVzZWQgaW4gYW55IHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9uLgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotICBzdGF0aWMgdm9pZCBQ
ZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmKSB7Ci0gICAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8dm9pZCwgUmVzdWx0PigpOwotICB9Ci19OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9y
cGhpYyBSZXR1cm5SZWYoeCkgYWN0aW9uLCB3aGljaCBjYW4gYmUgdXNlZAotLy8gaW4gYW55IGZ1
bmN0aW9uIHRoYXQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdHlwZSBvZiB4LAotLy8gcmVn
YXJkbGVzcyBvZiB0aGUgYXJndW1lbnQgdHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFJldHVyblJlZkFjdGlvbiB7Ci0gcHVibGljOgotICAvLyBDb25zdHJ1Y3RzIGEgUmV0dXJu
UmVmQWN0aW9uIG9iamVjdCBmcm9tIHRoZSByZWZlcmVuY2UgdG8gYmUgcmV0dXJuZWQuCi0gIGV4
cGxpY2l0IFJldHVyblJlZkFjdGlvbihUJiByZWYpIDogcmVmXyhyZWYpIHt9ICAvLyBOT0xJTlQK
LQotICAvLyBUaGlzIHRlbXBsYXRlIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciBhbGxvd3MgUmV0
dXJuUmVmKHgpIHRvIGJlCi0gIC8vIHVzZWQgaW4gQU5ZIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBh
IHJlZmVyZW5jZSB0byB4J3MgdHlwZS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIG9wZXJh
dG9yIEFjdGlvbjxGPigpIGNvbnN0IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+
OjpSZXN1bHQgUmVzdWx0OwotICAgIC8vIEFzc2VydHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJu
IHR5cGUgaXMgYSByZWZlcmVuY2UuICBUaGlzCi0gICAgLy8gY2F0Y2hlcyB0aGUgdXNlciBlcnJv
ciBvZiB1c2luZyBSZXR1cm5SZWYoeCkgd2hlbiBSZXR1cm4oeCkKLSAgICAvLyBzaG91bGQgYmUg
dXNlZCwgYW5kIGdlbmVyYXRlcyBzb21lIGhlbHBmdWwgZXJyb3IgbWVzc2FnZS4KLSAgICBHVEVT
VF9DT01QSUxFX0FTU0VSVF8oaW50ZXJuYWw6OmlzX3JlZmVyZW5jZTxSZXN1bHQ+Ojp2YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX1JldHVybl9pbnN0ZWFkX29mX1JldHVyblJl
Zl90b19yZXR1cm5fYV92YWx1ZSk7Ci0gICAgcmV0dXJuIEFjdGlvbjxGPihuZXcgSW1wbDxGPihy
ZWZfKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIEltcGxlbWVudHMgdGhlIFJldHVyblJlZih4
KSBhY3Rpb24gZm9yIGEgcGFydGljdWxhciBmdW5jdGlvbiB0eXBlIEYuCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBGPgotICBjbGFzcyBJbXBsIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxGPiB7Ci0g
ICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3Vs
dDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3Vt
ZW50VHVwbGU7Ci0KLSAgICBleHBsaWNpdCBJbXBsKFQmIHJlZikgOiByZWZfKHJlZikge30gIC8v
IE5PTElOVAotCi0gICAgdmlydHVhbCBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxl
JikgewotICAgICAgcmV0dXJuIHJlZl87Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIFQmIHJl
Zl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OwotCi0gIFQmIHJl
Zl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSZXR1cm5SZWZBY3Rpb24pOwotfTsKLQot
Ly8gSW1wbGVtZW50cyB0aGUgcG9seW1vcnBoaWMgUmV0dXJuUmVmT2ZDb3B5KHgpIGFjdGlvbiwg
d2hpY2ggY2FuIGJlCi0vLyB1c2VkIGluIGFueSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSByZWZl
cmVuY2UgdG8gdGhlIHR5cGUgb2YgeCwKLS8vIHJlZ2FyZGxlc3Mgb2YgdGhlIGFyZ3VtZW50IHR5
cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZXR1cm5SZWZPZkNvcHlBY3Rpb24g
ewotIHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0cyBhIFJldHVyblJlZk9mQ29weUFjdGlvbiBvYmpl
Y3QgZnJvbSB0aGUgcmVmZXJlbmNlIHRvCi0gIC8vIGJlIHJldHVybmVkLgotICBleHBsaWNpdCBS
ZXR1cm5SZWZPZkNvcHlBY3Rpb24oY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fSAg
Ly8gTk9MSU5UCi0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3Ig
YWxsb3dzIFJldHVyblJlZk9mQ29weSh4KSB0byBiZQotICAvLyB1c2VkIGluIEFOWSBmdW5jdGlv
biB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8geCdzIHR5cGUuCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGPgotICBvcGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICAvLyBBc3NlcnRzIHRoYXQgdGhl
IGZ1bmN0aW9uIHJldHVybiB0eXBlIGlzIGEgcmVmZXJlbmNlLiAgVGhpcwotICAgIC8vIGNhdGNo
ZXMgdGhlIHVzZXIgZXJyb3Igb2YgdXNpbmcgUmV0dXJuUmVmT2ZDb3B5KHgpIHdoZW4gUmV0dXJu
KHgpCi0gICAgLy8gc2hvdWxkIGJlIHVzZWQsIGFuZCBnZW5lcmF0ZXMgc29tZSBoZWxwZnVsIGVy
cm9yIG1lc3NhZ2UuCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKAotICAgICAgICBpbnRlcm5h
bDo6aXNfcmVmZXJlbmNlPFJlc3VsdD46OnZhbHVlLAotICAgICAgICB1c2VfUmV0dXJuX2luc3Rl
YWRfb2ZfUmV0dXJuUmVmT2ZDb3B5X3RvX3JldHVybl9hX3ZhbHVlKTsKLSAgICByZXR1cm4gQWN0
aW9uPEY+KG5ldyBJbXBsPEY+KHZhbHVlXykpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBJbXBs
ZW1lbnRzIHRoZSBSZXR1cm5SZWZPZkNvcHkoeCkgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgZnVu
Y3Rpb24gdHlwZSBGLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1
YmxpYyBBY3Rpb25JbnRlcmZhY2U8Rj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5h
bWUgRnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5j
dGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0gICAgZXhwbGljaXQgSW1w
bChjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9ICAvLyBOT0xJTlQKLQotICAgIHZp
cnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYpIHsKLSAgICAgIHJldHVy
biB2YWx1ZV87Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIFQgdmFsdWVfOwotCi0gICAgR1RF
U1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKLSAgfTsKLQotICBjb25zdCBUIHZhbHVlXzsKLQot
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFJldHVyblJlZk9mQ29weUFjdGlvbik7Ci19OwotCi0v
LyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBEb0RlZmF1bHQoKSBhY3Rpb24uCi1jbGFzcyBE
b0RlZmF1bHRBY3Rpb24gewotIHB1YmxpYzoKLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZl
cnNpb24gb3BlcmF0b3IgYWxsb3dzIERvRGVmYXVsdCgpIHRvIGJlCi0gIC8vIHVzZWQgaW4gYW55
IGZ1bmN0aW9uLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgb3BlcmF0b3IgQWN0aW9uPEY+
KCkgY29uc3QgeyByZXR1cm4gQWN0aW9uPEY+KE5VTEwpOyB9Ci19OwotCi0vLyBJbXBsZW1lbnRz
IHRoZSBBc3NpZ24gYWN0aW9uIHRvIHNldCBhIGdpdmVuIHBvaW50ZXIgcmVmZXJlbnQgdG8gYQot
Ly8gcGFydGljdWxhciB2YWx1ZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
Ci1jbGFzcyBBc3NpZ25BY3Rpb24gewotIHB1YmxpYzoKLSAgQXNzaWduQWN0aW9uKFQxKiBwdHIs
IFQyIHZhbHVlKSA6IHB0cl8ocHRyKSwgdmFsdWVfKHZhbHVlKSB7fQotCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIHZvaWQgUGVyZm9ybShj
b25zdCBBcmd1bWVudFR1cGxlJiAvKiBhcmdzICovKSBjb25zdCB7Ci0gICAgKnB0cl8gPSB2YWx1
ZV87Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFQxKiBjb25zdCBwdHJfOwotICBjb25zdCBUMiB2YWx1
ZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBc3NpZ25BY3Rpb24pOwotfTsKLQotI2lm
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBJbXBsZW1lbnRzIHRoZSBTZXRFcnJub0Fu
ZFJldHVybiBhY3Rpb24gdG8gc2ltdWxhdGUgcmV0dXJuIGZyb20KLS8vIHZhcmlvdXMgc3lzdGVt
IGNhbGxzIGFuZCBsaWJjIGZ1bmN0aW9ucy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
U2V0RXJybm9BbmRSZXR1cm5BY3Rpb24gewotIHB1YmxpYzoKLSAgU2V0RXJybm9BbmRSZXR1cm5B
Y3Rpb24oaW50IGVycm5vX3ZhbHVlLCBUIHJlc3VsdCkKLSAgICAgIDogZXJybm9fKGVycm5vX3Zh
bHVlKSwKLSAgICAgICAgcmVzdWx0XyhyZXN1bHQpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBS
ZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFy
Z3VtZW50VHVwbGUmIC8qIGFyZ3MgKi8pIGNvbnN0IHsKLSAgICBlcnJubyA9IGVycm5vXzsKLSAg
ICByZXR1cm4gcmVzdWx0XzsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgaW50IGVycm5vXzsK
LSAgY29uc3QgVCByZXN1bHRfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU2V0RXJybm9B
bmRSZXR1cm5BY3Rpb24pOwotfTsKLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19NT0JJ
TEUKLQotLy8gSW1wbGVtZW50cyB0aGUgU2V0QXJndW1lbnRQb2ludGVlPE4+KHgpIGFjdGlvbiBm
b3IgYW55IGZ1bmN0aW9uCi0vLyB3aG9zZSBOLXRoIGFyZ3VtZW50ICgwLWJhc2VkKSBpcyBhIHBv
aW50ZXIgdG8geCdzIHR5cGUuICBUaGUKLS8vIHRlbXBsYXRlIHBhcmFtZXRlciBrSXNQcm90byBp
cyB0cnVlIGlmZiB0eXBlIEEgaXMgUHJvdG9jb2xNZXNzYWdlLAotLy8gcHJvdG8yOjpNZXNzYWdl
LCBvciBhIHN1Yi1jbGFzcyBvZiB0aG9zZS4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUg
QSwgYm9vbCBrSXNQcm90bz4KLWNsYXNzIFNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbiB7Ci0gcHVi
bGljOgotICAvLyBDb25zdHJ1Y3RzIGFuIGFjdGlvbiB0aGF0IHNldHMgdGhlIHZhcmlhYmxlIHBv
aW50ZWQgdG8gYnkgdGhlCi0gIC8vIE4tdGggZnVuY3Rpb24gYXJndW1lbnQgdG8gJ3ZhbHVlJy4K
LSAgZXhwbGljaXQgU2V0QXJndW1lbnRQb2ludGVlQWN0aW9uKGNvbnN0IEEmIHZhbHVlKSA6IHZh
bHVlXyh2YWx1ZSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBB
cmd1bWVudFR1cGxlPgotICB2b2lkIFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykg
Y29uc3QgewotICAgIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIFJlc3VsdD4oKTsKLSAg
ICAqOjp0ZXN0aW5nOjpnZXQ8Tj4oYXJncykgPSB2YWx1ZV87Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IGNvbnN0IEEgdmFsdWVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU2V0QXJndW1lbnRQ
b2ludGVlQWN0aW9uKTsKLX07Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgUHJvdG8+
Ci1jbGFzcyBTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248TiwgUHJvdG8sIHRydWU+IHsKLSBwdWJs
aWM6Ci0gIC8vIENvbnN0cnVjdHMgYW4gYWN0aW9uIHRoYXQgc2V0cyB0aGUgdmFyaWFibGUgcG9p
bnRlZCB0byBieSB0aGUKLSAgLy8gTi10aCBmdW5jdGlvbiBhcmd1bWVudCB0byAncHJvdG8nLiAg
Qm90aCBQcm90b2NvbE1lc3NhZ2UgYW5kCi0gIC8vIHByb3RvMjo6TWVzc2FnZSBoYXZlIHRoZSBD
b3B5RnJvbSgpIG1ldGhvZCwgc28gdGhlIHNhbWUKLSAgLy8gaW1wbGVtZW50YXRpb24gd29ya3Mg
Zm9yIGJvdGguCi0gIGV4cGxpY2l0IFNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbihjb25zdCBQcm90
byYgcHJvdG8pIDogcHJvdG9fKG5ldyBQcm90bykgewotICAgIHByb3RvXy0+Q29weUZyb20ocHJv
dG8pOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1l
bnRUdXBsZT4KLSAgdm9pZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0
IHsKLSAgICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBSZXN1bHQ+KCk7Ci0gICAgOjp0
ZXN0aW5nOjpnZXQ8Tj4oYXJncyktPkNvcHlGcm9tKCpwcm90b18pOwotICB9Ci0KLSBwcml2YXRl
OgotICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxQcm90bz4gcHJvdG9fOwotCi0gIEdURVNU
X0RJU0FMTE9XX0FTU0lHTl8oU2V0QXJndW1lbnRQb2ludGVlQWN0aW9uKTsKLX07Ci0KLS8vIElt
cGxlbWVudHMgdGhlIEludm9rZVdpdGhvdXRBcmdzKGYpIGFjdGlvbi4gIFRoZSB0ZW1wbGF0ZSBh
cmd1bWVudAotLy8gRnVuY3Rpb25JbXBsIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiB0eXBlIG9mIGYs
IHdoaWNoIGNhbiBiZSBlaXRoZXIgYQotLy8gZnVuY3Rpb24gcG9pbnRlciBvciBhIGZ1bmN0b3Iu
ICBJbnZva2VXaXRob3V0QXJncyhmKSBjYW4gYmUgdXNlZCBhcyBhbgotLy8gQWN0aW9uPEY+IGFz
IGxvbmcgYXMgZidzIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIEYgKGkuZS4gZiBjYW4gYmUKLS8v
IGFzc2lnbmVkIHRvIGEgdHIxOjpmdW5jdGlvbjxGPikuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rpb25JbXBsPgotY2xhc3MgSW52b2tlV2l0aG91dEFyZ3NBY3Rpb24gewotIHB1YmxpYzoKLSAg
Ly8gVGhlIGMndG9yIG1ha2VzIGEgY29weSBvZiBmdW5jdGlvbl9pbXBsIChlaXRoZXIgYSBmdW5j
dGlvbgotICAvLyBwb2ludGVyIG9yIGEgZnVuY3RvcikuCi0gIGV4cGxpY2l0IEludm9rZVdpdGhv
dXRBcmdzQWN0aW9uKEZ1bmN0aW9uSW1wbCBmdW5jdGlvbl9pbXBsKQotICAgICAgOiBmdW5jdGlv
bl9pbXBsXyhmdW5jdGlvbl9pbXBsKSB7fQotCi0gIC8vIEFsbG93cyBJbnZva2VXaXRob3V0QXJn
cyhmKSB0byBiZSB1c2VkIGFzIGFueSBhY3Rpb24gd2hvc2UgdHlwZSBpcwotICAvLyBjb21wYXRp
YmxlIHdpdGggZi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1l
bnRUdXBsZT4KLSAgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYpIHsgcmV0dXJu
IGZ1bmN0aW9uX2ltcGxfKCk7IH0KLQotIHByaXZhdGU6Ci0gIEZ1bmN0aW9uSW1wbCBmdW5jdGlv
bl9pbXBsXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEludm9rZVdpdGhvdXRBcmdzQWN0
aW9uKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIEludm9rZVdpdGhvdXRBcmdzKG9iamVjdF9w
dHIsICZDbGFzczo6TWV0aG9kKSBhY3Rpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVu
YW1lIE1ldGhvZFB0cj4KLWNsYXNzIEludm9rZU1ldGhvZFdpdGhvdXRBcmdzQWN0aW9uIHsKLSBw
dWJsaWM6Ci0gIEludm9rZU1ldGhvZFdpdGhvdXRBcmdzQWN0aW9uKENsYXNzKiBvYmpfcHRyLCBN
ZXRob2RQdHIgbWV0aG9kX3B0cikKLSAgICAgIDogb2JqX3B0cl8ob2JqX3B0ciksIG1ldGhvZF9w
dHJfKG1ldGhvZF9wdHIpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5h
bWUgQXJndW1lbnRUdXBsZT4KLSAgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJndW1lbnRUdXBsZSYp
IGNvbnN0IHsKLSAgICByZXR1cm4gKG9ial9wdHJfLT4qbWV0aG9kX3B0cl8pKCk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIENsYXNzKiBjb25zdCBvYmpfcHRyXzsKLSAgY29uc3QgTWV0aG9kUHRyIG1l
dGhvZF9wdHJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW52b2tlTWV0aG9kV2l0aG91
dEFyZ3NBY3Rpb24pOwotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgSWdub3JlUmVzdWx0KGFjdGlv
bikgYWN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIEE+Ci1jbGFzcyBJZ25vcmVSZXN1bHRBY3Rp
b24gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSWdub3JlUmVzdWx0QWN0aW9uKGNvbnN0IEEmIGFj
dGlvbikgOiBhY3Rpb25fKGFjdGlvbikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAg
b3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgewotICAgIC8vIEFzc2VydCBzdGF0ZW1lbnQgYmVs
b25ncyBoZXJlIGJlY2F1c2UgdGhpcyBpcyB0aGUgYmVzdCBwbGFjZSB0byB2ZXJpZnkKLSAgICAv
LyBjb25kaXRpb25zIG9uIEYuIEl0IHByb2R1Y2VzIHRoZSBjbGVhcmVzdCBlcnJvciBtZXNzYWdl
cwotICAgIC8vIGluIG1vc3QgY29tcGlsZXJzLgotICAgIC8vIEltcGwgcmVhbGx5IGJlbG9uZ3Mg
aW4gdGhpcyBzY29wZSBhcyBhIGxvY2FsIGNsYXNzIGJ1dCBjYW4ndAotICAgIC8vIGJlY2F1c2Ug
TVNWQyBwcm9kdWNlcyBkdXBsaWNhdGUgc3ltYm9scyBpbiBkaWZmZXJlbnQgdHJhbnNsYXRpb24g
dW5pdHMKLSAgICAvLyBpbiB0aGlzIGNhc2UuIFVudGlsIE1TIGZpeGVzIHRoYXQgYnVnIHdlIHB1
dCBJbXBsIGludG8gdGhlIGNsYXNzIHNjb3BlCi0gICAgLy8gYW5kIHB1dCB0aGUgdHlwZWRlZiBi
b3RoIGhlcmUgKGZvciB1c2UgaW4gYXNzZXJ0IHN0YXRlbWVudCkgYW5kCi0gICAgLy8gaW4gdGhl
IEltcGwgY2xhc3MuIEJ1dCBib3RoIGRlZmluaXRpb25zIG11c3QgYmUgdGhlIHNhbWUuCi0gICAg
dHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBSZXN1bHQ7Ci0K
LSAgICAvLyBBc3NlcnRzIGF0IGNvbXBpbGUgdGltZSB0aGF0IEYgcmV0dXJucyB2b2lkLgotICAg
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHZvaWQsIFJlc3VsdD4oKTsKLQotICAgIHJldHVybiBB
Y3Rpb248Rj4obmV3IEltcGw8Rj4oYWN0aW9uXykpOwotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRlcmZhY2U8
Rj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9u
PEY+OjpSZXN1bHQgUmVzdWx0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0
aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgICBleHBsaWNpdCBJbXBs
KGNvbnN0IEEmIGFjdGlvbikgOiBhY3Rpb25fKGFjdGlvbikge30KLQotICAgIHZpcnR1YWwgdm9p
ZCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICAgIC8vIFBlcmZvcm1z
IHRoZSBhY3Rpb24gYW5kIGlnbm9yZXMgaXRzIHJlc3VsdC4KLSAgICAgIGFjdGlvbl8uUGVyZm9y
bShhcmdzKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgLy8gVHlwZSBPcmlnaW5hbEZ1bmN0
aW9uIGlzIHRoZSBzYW1lIGFzIEYgZXhjZXB0IHRoYXQgaXRzIHJldHVybgotICAgIC8vIHR5cGUg
aXMgSWdub3JlZFZhbHVlLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9u
PEY+OjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlCi0gICAgICAgIE9yaWdpbmFsRnVuY3Rpb247Ci0K
LSAgICBjb25zdCBBY3Rpb248T3JpZ2luYWxGdW5jdGlvbj4gYWN0aW9uXzsKLQotICAgIEdURVNU
X0RJU0FMTE9XX0FTU0lHTl8oSW1wbCk7Ci0gIH07Ci0KLSAgY29uc3QgQSBhY3Rpb25fOwotCi0g
IEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSWdub3JlUmVzdWx0QWN0aW9uKTsKLX07Ci0KLS8vIEEg
UmVmZXJlbmNlV3JhcHBlcjxUPiBvYmplY3QgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0eXBl
IFQsCi0vLyB3aGljaCBjYW4gYmUgZWl0aGVyIGNvbnN0IG9yIG5vdC4gIEl0IGNhbiBiZSBleHBs
aWNpdGx5IGNvbnZlcnRlZAotLy8gZnJvbSwgYW5kIGltcGxpY2l0bHkgY29udmVydGVkIHRvLCBh
IFQmLiAgVW5saWtlIGEgcmVmZXJlbmNlLAotLy8gUmVmZXJlbmNlV3JhcHBlcjxUPiBjYW4gYmUg
Y29waWVkIGFuZCBjYW4gc3Vydml2ZSB0ZW1wbGF0ZSB0eXBlCi0vLyBpbmZlcmVuY2UuICBUaGlz
IGlzIHVzZWQgdG8gc3VwcG9ydCBieS1yZWZlcmVuY2UgYXJndW1lbnRzIGluIHRoZQotLy8gSW52
b2tlQXJndW1lbnQ8Tj4oLi4uKSBhY3Rpb24uICBUaGUgaWRlYSB3YXMgZnJvbSAicmVmZXJlbmNl
Ci0vLyB3cmFwcGVycyIgaW4gdHIxLCB3aGljaCB3ZSBkb24ndCBoYXZlIGluIG91ciBzb3VyY2Ug
dHJlZSB5ZXQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFJlZmVyZW5jZVdyYXBwZXIg
ewotIHB1YmxpYzoKLSAgLy8gQ29uc3RydWN0cyBhIFJlZmVyZW5jZVdyYXBwZXI8VD4gb2JqZWN0
IGZyb20gYSBUJi4KLSAgZXhwbGljaXQgUmVmZXJlbmNlV3JhcHBlcihUJiBsX3ZhbHVlKSA6IHBv
aW50ZXJfKCZsX3ZhbHVlKSB7fSAgLy8gTk9MSU5UCi0KLSAgLy8gQWxsb3dzIGEgUmVmZXJlbmNl
V3JhcHBlcjxUPiBvYmplY3QgdG8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8KLSAgLy8gYSBU
Ji4KLSAgb3BlcmF0b3IgVCYoKSBjb25zdCB7IHJldHVybiAqcG9pbnRlcl87IH0KLSBwcml2YXRl
OgotICBUKiBwb2ludGVyXzsKLX07Ci0KLS8vIEFsbG93cyB0aGUgZXhwcmVzc2lvbiBCeVJlZih4
KSB0byBiZSBwcmludGVkIGFzIGEgcmVmZXJlbmNlIHRvIHguCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXZvaWQgUHJpbnRUbyhjb25zdCBSZWZlcmVuY2VXcmFwcGVyPFQ+JiByZWYsIDo6c3RkOjpv
c3RyZWFtKiBvcykgewotICBUJiB2YWx1ZSA9IHJlZjsKLSAgVW5pdmVyc2FsUHJpbnRlcjxUJj46
OlByaW50KHZhbHVlLCBvcyk7Ci19Ci0KLS8vIERvZXMgdHdvIGFjdGlvbnMgc2VxdWVudGlhbGx5
LiAgVXNlZCBmb3IgaW1wbGVtZW50aW5nIHRoZSBEb0FsbChhMSwKLS8vIGEyLCAuLi4pIGFjdGlv
bi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yPgotY2xhc3Mg
RG9Cb3RoQWN0aW9uIHsKLSBwdWJsaWM6Ci0gIERvQm90aEFjdGlvbihBY3Rpb24xIGFjdGlvbjEs
IEFjdGlvbjIgYWN0aW9uMikKLSAgICAgIDogYWN0aW9uMV8oYWN0aW9uMSksIGFjdGlvbjJfKGFj
dGlvbjIpIHt9Ci0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3Ig
YWxsb3dzIERvQWxsKGExLCAuLi4sIGFfbikKLSAgLy8gdG8gYmUgdXNlZCBpbiBBTlkgZnVuY3Rp
b24gb2YgY29tcGF0aWJsZSB0eXBlLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgb3BlcmF0
b3IgQWN0aW9uPEY+KCkgY29uc3QgewotICAgIHJldHVybiBBY3Rpb248Rj4obmV3IEltcGw8Rj4o
YWN0aW9uMV8sIGFjdGlvbjJfKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIEltcGxlbWVudHMg
dGhlIERvQWxsKC4uLikgYWN0aW9uIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gdHlwZSBGLgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBBY3Rpb25JbnRl
cmZhY2U8Rj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46
OlJlc3VsdCBSZXN1bHQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1l
bnRUdXBsZSBBcmd1bWVudFR1cGxlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46
Ok1ha2VSZXN1bHRWb2lkIFZvaWRSZXN1bHQ7Ci0KLSAgICBJbXBsKGNvbnN0IEFjdGlvbjxWb2lk
UmVzdWx0PiYgYWN0aW9uMSwgY29uc3QgQWN0aW9uPEY+JiBhY3Rpb24yKQotICAgICAgICA6IGFj
dGlvbjFfKGFjdGlvbjEpLCBhY3Rpb24yXyhhY3Rpb24yKSB7fQotCi0gICAgdmlydHVhbCBSZXN1
bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgICBhY3Rpb24xXy5Q
ZXJmb3JtKGFyZ3MpOwotICAgICAgcmV0dXJuIGFjdGlvbjJfLlBlcmZvcm0oYXJncyk7Ci0gICAg
fQotCi0gICBwcml2YXRlOgotICAgIGNvbnN0IEFjdGlvbjxWb2lkUmVzdWx0PiBhY3Rpb24xXzsK
LSAgICBjb25zdCBBY3Rpb248Rj4gYWN0aW9uMl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKEltcGwpOwotICB9OwotCi0gIEFjdGlvbjEgYWN0aW9uMV87Ci0gIEFjdGlvbjIgYWN0aW9u
Ml87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhEb0JvdGhBY3Rpb24pOwotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIEFuIFVudXNlZCBvYmplY3QgY2FuIGJlIGltcGxp
Y2l0bHkgY29uc3RydWN0ZWQgZnJvbSBBTlkgdmFsdWUuCi0vLyBUaGlzIGlzIGhhbmR5IHdoZW4g
ZGVmaW5pbmcgYWN0aW9ucyB0aGF0IGlnbm9yZSBzb21lIG9yIGFsbCBvZiB0aGUKLS8vIG1vY2sg
ZnVuY3Rpb24gYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGdpdmVuCi0vLwotLy8gICBNT0NLX01F
VEhPRDMoRm9vLCBkb3VibGUoY29uc3Qgc3RyaW5nJiBsYWJlbCwgZG91YmxlIHgsIGRvdWJsZSB5
KSk7Ci0vLyAgIE1PQ0tfTUVUSE9EMyhCYXIsIGRvdWJsZShpbnQgaW5kZXgsIGRvdWJsZSB4LCBk
b3VibGUgeSkpOwotLy8KLS8vIGluc3RlYWQgb2YKLS8vCi0vLyAgIGRvdWJsZSBEaXN0YW5jZVRv
T3JpZ2luV2l0aExhYmVsKGNvbnN0IHN0cmluZyYgbGFiZWwsIGRvdWJsZSB4LCBkb3VibGUgeSkg
ewotLy8gICAgIHJldHVybiBzcXJ0KHgqeCArIHkqeSk7Ci0vLyAgIH0KLS8vICAgZG91YmxlIERp
c3RhbmNlVG9PcmlnaW5XaXRoSW5kZXgoaW50IGluZGV4LCBkb3VibGUgeCwgZG91YmxlIHkpIHsK
LS8vICAgICByZXR1cm4gc3FydCh4KnggKyB5KnkpOwotLy8gICB9Ci0vLyAgIC4uLgotLy8gICBF
WEVQQ1RfQ0FMTChtb2NrLCBGb28oImFiYyIsIF8sIF8pKQotLy8gICAgICAgLldpbGxPbmNlKElu
dm9rZShEaXN0YW5jZVRvT3JpZ2luV2l0aExhYmVsKSk7Ci0vLyAgIEVYRVBDVF9DQUxMKG1vY2ss
IEJhcig1LCBfLCBfKSkKLS8vICAgICAgIC5XaWxsT25jZShJbnZva2UoRGlzdGFuY2VUb09yaWdp
bldpdGhJbmRleCkpOwotLy8KLS8vIHlvdSBjb3VsZCB3cml0ZQotLy8KLS8vICAgLy8gV2UgY2Fu
IGRlY2xhcmUgYW55IHVuaW50ZXJlc3RpbmcgYXJndW1lbnQgYXMgVW51c2VkLgotLy8gICBkb3Vi
bGUgRGlzdGFuY2VUb09yaWdpbihVbnVzZWQsIGRvdWJsZSB4LCBkb3VibGUgeSkgewotLy8gICAg
IHJldHVybiBzcXJ0KHgqeCArIHkqeSk7Ci0vLyAgIH0KLS8vICAgLi4uCi0vLyAgIEVYRVBDVF9D
QUxMKG1vY2ssIEZvbygiYWJjIiwgXywgXykpLldpbGxPbmNlKEludm9rZShEaXN0YW5jZVRvT3Jp
Z2luKSk7Ci0vLyAgIEVYRVBDVF9DQUxMKG1vY2ssIEJhcig1LCBfLCBfKSkuV2lsbE9uY2UoSW52
b2tlKERpc3RhbmNlVG9PcmlnaW4pKTsKLXR5cGVkZWYgaW50ZXJuYWw6Oklnbm9yZWRWYWx1ZSBV
bnVzZWQ7Ci0KLS8vIFRoaXMgY29uc3RydWN0b3IgYWxsb3dzIHVzIHRvIHR1cm4gYW4gQWN0aW9u
PEZyb20+IG9iamVjdCBpbnRvIGFuCi0vLyBBY3Rpb248VG8+LCBhcyBsb25nIGFzIFRvJ3MgYXJn
dW1lbnRzIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZAotLy8gdG8gRnJvbSdzIGFuZCBGcm9t
J3MgcmV0dXJuIHR5cGUgY2FubiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bwotLy8gVG8ncy4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUbz4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tPgotQWN0aW9u
PFRvPjo6QWN0aW9uKGNvbnN0IEFjdGlvbjxGcm9tPiYgZnJvbSkKLSAgICA6IGltcGxfKG5ldyBp
bnRlcm5hbDo6QWN0aW9uQWRhcHRvcjxUbywgRnJvbT4oZnJvbSkpIHt9Ci0KLS8vIENyZWF0ZXMg
YW4gYWN0aW9uIHRoYXQgcmV0dXJucyAndmFsdWUnLiAgJ3ZhbHVlJyBpcyBwYXNzZWQgYnkgdmFs
dWUKLS8vIGluc3RlYWQgb2YgY29uc3QgcmVmZXJlbmNlIC0gb3RoZXJ3aXNlIFJldHVybigic3Ry
aW5nIGxpdGVyYWwiKQotLy8gd2lsbCB0cmlnZ2VyIGEgY29tcGlsZXIgZXJyb3IgYWJvdXQgdXNp
bmcgYXJyYXkgYXMgaW5pdGlhbGl6ZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLWludGVybmFs
OjpSZXR1cm5BY3Rpb248Uj4gUmV0dXJuKFIgdmFsdWUpIHsKLSAgcmV0dXJuIGludGVybmFsOjpS
ZXR1cm5BY3Rpb248Uj4oaW50ZXJuYWw6Om1vdmUodmFsdWUpKTsKLX0KLQotLy8gQ3JlYXRlcyBh
biBhY3Rpb24gdGhhdCByZXR1cm5zIE5VTEwuCi1pbmxpbmUgUG9seW1vcnBoaWNBY3Rpb248aW50
ZXJuYWw6OlJldHVybk51bGxBY3Rpb24+IFJldHVybk51bGwoKSB7Ci0gIHJldHVybiBNYWtlUG9s
eW1vcnBoaWNBY3Rpb24oaW50ZXJuYWw6OlJldHVybk51bGxBY3Rpb24oKSk7Ci19Ci0KLS8vIENy
ZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBmcm9tIGEgdm9pZCBmdW5jdGlvbi4KLWlubGlu
ZSBQb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6UmV0dXJuVm9pZEFjdGlvbj4gUmV0dXJuKCkg
ewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpSZXR1cm5Wb2lkQWN0
aW9uKCkpOwotfQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlZmVy
ZW5jZSB0byBhIHZhcmlhYmxlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFI+Ci1pbmxpbmUgaW50ZXJu
YWw6OlJldHVyblJlZkFjdGlvbjxSPiBSZXR1cm5SZWYoUiYgeCkgeyAgLy8gTk9MSU5UCi0gIHJl
dHVybiBpbnRlcm5hbDo6UmV0dXJuUmVmQWN0aW9uPFI+KHgpOwotfQotCi0vLyBDcmVhdGVzIGFu
IGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlZmVyZW5jZSB0byBhIGNvcHkgb2YgdGhlCi0vLyBh
cmd1bWVudC4gIFRoZSBjb3B5IGlzIGNyZWF0ZWQgd2hlbiB0aGUgYWN0aW9uIGlzIGNvbnN0cnVj
dGVkIGFuZAotLy8gbGl2ZXMgYXMgbG9uZyBhcyB0aGUgYWN0aW9uLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFI+Ci1pbmxpbmUgaW50ZXJuYWw6OlJldHVyblJlZk9mQ29weUFjdGlvbjxSPiBSZXR1cm5S
ZWZPZkNvcHkoY29uc3QgUiYgeCkgewotICByZXR1cm4gaW50ZXJuYWw6OlJldHVyblJlZk9mQ29w
eUFjdGlvbjxSPih4KTsKLX0KLQotLy8gTW9kaWZpZXMgdGhlIHBhcmVudCBhY3Rpb24gKGEgUmV0
dXJuKCkgYWN0aW9uKSB0byBwZXJmb3JtIGEgbW92ZSBvZiB0aGUKLS8vIGFyZ3VtZW50IGluc3Rl
YWQgb2YgYSBjb3B5LgotLy8gUmV0dXJuKEJ5TW92ZSgpKSBhY3Rpb25zIGNhbiBvbmx5IGJlIGV4
ZWN1dGVkIG9uY2UgYW5kIHdpbGwgYXNzZXJ0IHRoaXMKLS8vIGludmFyaWFudC4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBSPgotaW50ZXJuYWw6OkJ5TW92ZVdyYXBwZXI8Uj4gQnlNb3ZlKFIgeCkgewot
ICByZXR1cm4gaW50ZXJuYWw6OkJ5TW92ZVdyYXBwZXI8Uj4oaW50ZXJuYWw6Om1vdmUoeCkpOwot
fQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGRvZXMgdGhlIGRlZmF1bHQgYWN0aW9uIGZv
ciB0aGUgZ2l2ZSBtb2NrIGZ1bmN0aW9uLgotaW5saW5lIGludGVybmFsOjpEb0RlZmF1bHRBY3Rp
b24gRG9EZWZhdWx0KCkgewotICByZXR1cm4gaW50ZXJuYWw6OkRvRGVmYXVsdEFjdGlvbigpOwot
fQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHNldHMgdGhlIHZhcmlhYmxlIHBvaW50ZWQg
YnkgdGhlIE4tdGgKLS8vICgwLWJhc2VkKSBmdW5jdGlvbiBhcmd1bWVudCB0byAndmFsdWUnLgot
dGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotUG9seW1vcnBoaWNBY3Rpb248Ci0gIGlu
dGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248Ci0gICAgTiwgVCwgaW50ZXJuYWw6Oklz
QVByb3RvY29sTWVzc2FnZTxUPjo6dmFsdWU+ID4KLVNldEFyZ1BvaW50ZWUoY29uc3QgVCYgeCkg
ewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpTZXRBcmd1bWVudFBv
aW50ZWVBY3Rpb248Ci0gICAgICBOLCBULCBpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+
Ojp2YWx1ZT4oeCkpOwotfQotCi0jaWYgISgoR1RFU1RfR0NDX1ZFUl8gJiYgR1RFU1RfR0NDX1ZF
Ul8gPCA0MDAwMCkgfHwgR1RFU1RfT1NfU1lNQklBTikKLS8vIFRoaXMgb3ZlcmxvYWQgYWxsb3dz
IFNldEFyZ1BvaW50ZWUoKSB0byBhY2NlcHQgYSBzdHJpbmcgbGl0ZXJhbC4KLS8vIEdDQyBwcmlv
ciB0byB0aGUgdmVyc2lvbiA0LjAgYW5kIFN5bWJpYW4gQysrIGNvbXBpbGVyIGNhbm5vdCBkaXN0
aW5ndWlzaAotLy8gdGhpcyBvdmVybG9hZCBmcm9tIHRoZSB0ZW1wbGF0ZWQgdmVyc2lvbiBhbmQg
ZW1pdCBhIGNvbXBpbGUgZXJyb3IuCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1Qb2x5bW9ycGhpY0Fj
dGlvbjwKLSAgaW50ZXJuYWw6OlNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbjxOLCBjb25zdCBjaGFy
KiwgZmFsc2U+ID4KLVNldEFyZ1BvaW50ZWUoY29uc3QgY2hhciogcCkgewotICByZXR1cm4gTWFr
ZVBvbHltb3JwaGljQWN0aW9uKGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rpb248Ci0g
ICAgICBOLCBjb25zdCBjaGFyKiwgZmFsc2U+KHApKTsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBO
PgotUG9seW1vcnBoaWNBY3Rpb248Ci0gIGludGVybmFsOjpTZXRBcmd1bWVudFBvaW50ZWVBY3Rp
b248TiwgY29uc3Qgd2NoYXJfdCosIGZhbHNlPiA+Ci1TZXRBcmdQb2ludGVlKGNvbnN0IHdjaGFy
X3QqIHApIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6U2V0QXJn
dW1lbnRQb2ludGVlQWN0aW9uPAotICAgICAgTiwgY29uc3Qgd2NoYXJfdCosIGZhbHNlPihwKSk7
Ci19Ci0jZW5kaWYKLQotLy8gVGhlIGZvbGxvd2luZyB2ZXJzaW9uIGlzIERFUFJFQ0FURUQuCi10
ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1Qb2x5bW9ycGhpY0FjdGlvbjwKLSAgaW50
ZXJuYWw6OlNldEFyZ3VtZW50UG9pbnRlZUFjdGlvbjwKLSAgICBOLCBULCBpbnRlcm5hbDo6SXNB
UHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZT4gPgotU2V0QXJndW1lbnRQb2ludGVlKGNvbnN0IFQm
IHgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihpbnRlcm5hbDo6U2V0QXJndW1l
bnRQb2ludGVlQWN0aW9uPAotICAgICAgTiwgVCwgaW50ZXJuYWw6OklzQVByb3RvY29sTWVzc2Fn
ZTxUPjo6dmFsdWU+KHgpKTsKLX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBzZXRzIGEg
cG9pbnRlciByZWZlcmVudCB0byBhIGdpdmVuIHZhbHVlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KLVBvbHltb3JwaGljQWN0aW9uPGludGVybmFsOjpBc3NpZ25BY3Rpb248
VDEsIFQyPiA+IEFzc2lnbihUMSogcHRyLCBUMiB2YWwpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9y
cGhpY0FjdGlvbihpbnRlcm5hbDo6QXNzaWduQWN0aW9uPFQxLCBUMj4ocHRyLCB2YWwpKTsKLX0K
LQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0
aGF0IHNldHMgZXJybm8gYW5kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIGVycm9yLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1Qb2x5bW9ycGhpY0FjdGlvbjxpbnRlcm5hbDo6U2V0RXJybm9BbmRS
ZXR1cm5BY3Rpb248VD4gPgotU2V0RXJybm9BbmRSZXR1cm4oaW50IGVycnZhbCwgVCByZXN1bHQp
IHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigKLSAgICAgIGludGVybmFsOjpTZXRF
cnJub0FuZFJldHVybkFjdGlvbjxUPihlcnJ2YWwsIHJlc3VsdCkpOwotfQotCi0jZW5kaWYgIC8v
ICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3IgSW52
b2tlV2l0aG91dEFyZ3MoKS4KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBpbnZva2VzICdm
dW5jdGlvbl9pbXBsJyB3aXRoIG5vIGFyZ3VtZW50LgotdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
aW9uSW1wbD4KLVBvbHltb3JwaGljQWN0aW9uPGludGVybmFsOjpJbnZva2VXaXRob3V0QXJnc0Fj
dGlvbjxGdW5jdGlvbkltcGw+ID4KLUludm9rZVdpdGhvdXRBcmdzKEZ1bmN0aW9uSW1wbCBmdW5j
dGlvbl9pbXBsKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNBY3Rpb24oCi0gICAgICBpbnRl
cm5hbDo6SW52b2tlV2l0aG91dEFyZ3NBY3Rpb248RnVuY3Rpb25JbXBsPihmdW5jdGlvbl9pbXBs
KSk7Ci19Ci0KLS8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgaW52b2tlcyB0aGUgZ2l2ZW4gbWV0
aG9kIG9uIHRoZSBnaXZlbiBvYmplY3QKLS8vIHdpdGggbm8gYXJndW1lbnQuCi10ZW1wbGF0ZSA8
Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLVBvbHltb3JwaGljQWN0aW9uPGludGVy
bmFsOjpJbnZva2VNZXRob2RXaXRob3V0QXJnc0FjdGlvbjxDbGFzcywgTWV0aG9kUHRyPiA+Ci1J
bnZva2VXaXRob3V0QXJncyhDbGFzcyogb2JqX3B0ciwgTWV0aG9kUHRyIG1ldGhvZF9wdHIpIHsK
LSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigKLSAgICAgIGludGVybmFsOjpJbnZva2VN
ZXRob2RXaXRob3V0QXJnc0FjdGlvbjxDbGFzcywgTWV0aG9kUHRyPigKLSAgICAgICAgICBvYmpf
cHRyLCBtZXRob2RfcHRyKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYW4gYWN0aW9uIHRoYXQgcGVyZm9y
bXMgYW5fYWN0aW9uIGFuZCB0aHJvd3MgYXdheSBpdHMKLS8vIHJlc3VsdC4gIEluIG90aGVyIHdv
cmRzLCBpdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSBvZiBhbl9hY3Rpb24gdG8KLS8vIHZvaWQu
ICBhbl9hY3Rpb24gTVVTVCBOT1QgcmV0dXJuIHZvaWQsIG9yIHRoZSBjb2RlIHdvbid0IGNvbXBp
bGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQT4KLWlubGluZSBpbnRlcm5hbDo6SWdub3JlUmVzdWx0
QWN0aW9uPEE+IElnbm9yZVJlc3VsdChjb25zdCBBJiBhbl9hY3Rpb24pIHsKLSAgcmV0dXJuIGlu
dGVybmFsOjpJZ25vcmVSZXN1bHRBY3Rpb248QT4oYW5fYWN0aW9uKTsKLX0KLQotLy8gQ3JlYXRl
cyBhIHJlZmVyZW5jZSB3cmFwcGVyIGZvciB0aGUgZ2l2ZW4gTC12YWx1ZS4gIElmIG5lY2Vzc2Fy
eSwKLS8vIHlvdSBjYW4gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSB0eXBlIG9mIHRoZSByZWZlcmVu
Y2UuICBGb3IgZXhhbXBsZSwKLS8vIHN1cHBvc2UgJ2Rlcml2ZWQnIGlzIGFuIG9iamVjdCBvZiB0
eXBlIERlcml2ZWQsIEJ5UmVmKGRlcml2ZWQpCi0vLyB3b3VsZCB3cmFwIGEgRGVyaXZlZCYuICBJ
ZiB5b3Ugd2FudCB0byB3cmFwIGEgY29uc3QgQmFzZSYgaW5zdGVhZCwKLS8vIHdoZXJlIEJhc2Ug
aXMgYSBiYXNlIGNsYXNzIG9mIERlcml2ZWQsIGp1c3Qgd3JpdGU6Ci0vLwotLy8gICBCeVJlZjxj
b25zdCBCYXNlPihkZXJpdmVkKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50ZXJu
YWw6OlJlZmVyZW5jZVdyYXBwZXI8VD4gQnlSZWYoVCYgbF92YWx1ZSkgeyAgLy8gTk9MSU5UCi0g
IHJldHVybiBpbnRlcm5hbDo6UmVmZXJlbmNlV3JhcHBlcjxUPihsX3ZhbHVlKTsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dN
T0NLX0FDVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21v
Y2stY2FyZGluYWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1jYXJk
aW5hbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzE1ZjkyYWI1Yi4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stY2FyZGlu
YWxpdGllcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8vIENvcHlyaWdodCAy
MDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdy
aXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21l
IGNvbW1vbmx5IHVzZWQgY2FyZGluYWxpdGllcy4gIE1vcmUKLS8vIGNhcmRpbmFsaXRpZXMgY2Fu
IGJlIGRlZmluZWQgYnkgdGhlIHVzZXIgaW1wbGVtZW50aW5nIHRoZQotLy8gQ2FyZGluYWxpdHlJ
bnRlcmZhY2UgaW50ZXJmYWNlIGlmIG5lY2Vzc2FyeS4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURF
X0dNT0NLX0dNT0NLX0NBUkRJTkFMSVRJRVNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19DQVJESU5BTElUSUVTX0hfCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRl
IDxvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9y
dC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQot
Ly8gVG8gaW1wbGVtZW50IGEgY2FyZGluYWxpdHkgRm9vLCBkZWZpbmU6Ci0vLyAgIDEuIGEgY2xh
c3MgRm9vQ2FyZGluYWxpdHkgdGhhdCBpbXBsZW1lbnRzIHRoZQotLy8gICAgICBDYXJkaW5hbGl0
eUludGVyZmFjZSBpbnRlcmZhY2UsIGFuZAotLy8gICAyLiBhIGZhY3RvcnkgZnVuY3Rpb24gdGhh
dCBjcmVhdGVzIGEgQ2FyZGluYWxpdHkgb2JqZWN0IGZyb20gYQotLy8gICAgICBjb25zdCBGb29D
YXJkaW5hbGl0eSouCi0vLwotLy8gVGhlIHR3by1sZXZlbCBkZWxlZ2F0aW9uIGRlc2lnbiBmb2xs
b3dzIHRoYXQgb2YgTWF0Y2hlciwgcHJvdmlkaW5nCi0vLyBjb25zaXN0ZW5jeSBmb3IgZXh0ZW5z
aW9uIGRldmVsb3BlcnMuICBJdCBhbHNvIGVhc2VzIG93bmVyc2hpcAotLy8gbWFuYWdlbWVudCBh
cyBDYXJkaW5hbGl0eSBvYmplY3RzIGNhbiBub3cgYmUgY29waWVkIGxpa2UgcGxhaW4gdmFsdWVz
LgotCi0vLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgYSBjYXJkaW5hbGl0eS4KLWNsYXNzIENhcmRp
bmFsaXR5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkNhcmRpbmFsaXR5SW50ZXJm
YWNlKCkge30KLQotICAvLyBDb25zZXJ2YXRpdmUgZXN0aW1hdGUgb24gdGhlIGxvd2VyL3VwcGVy
IGJvdW5kIG9mIHRoZSBudW1iZXIgb2YKLSAgLy8gY2FsbHMgYWxsb3dlZC4KLSAgdmlydHVhbCBp
bnQgQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgdmlydHVh
bCBpbnQgQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIElOVF9NQVg7IH0K
LQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBzYXRpc2Z5IHRo
aXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50KGlu
dCBjYWxsX2NvdW50KSBjb25zdCA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2Nv
dW50IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29s
IElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0ID0gMDsKLQotICAv
LyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLX07Ci0KLS8vIEEgQ2FyZGluYWxpdHkg
aXMgYSBjb3B5YWJsZSBhbmQgSU1NVVRBQkxFIChleGNlcHQgYnkgYXNzaWdubWVudCkKLS8vIG9i
amVjdCB0aGF0IHNwZWNpZmllcyBob3cgbWFueSB0aW1lcyBhIG1vY2sgZnVuY3Rpb24gaXMgZXhw
ZWN0ZWQgdG8KLS8vIGJlIGNhbGxlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDYXJkaW5hbGl0
eSBpcyBqdXN0IGEgbGlua2VkX3B0cgotLy8gdG8gY29uc3QgQ2FyZGluYWxpdHlJbnRlcmZhY2Us
IHNvIGNvcHlpbmcgaXMgZmFpcmx5IGNoZWFwLgotLy8gRG9uJ3QgaW5oZXJpdCBmcm9tIENhcmRp
bmFsaXR5IQotY2xhc3MgR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSB7Ci0gcHVibGljOgotICAvLyBD
b25zdHJ1Y3RzIGEgbnVsbCBjYXJkaW5hbGl0eS4gIE5lZWRlZCBmb3Igc3RvcmluZyBDYXJkaW5h
bGl0eQotICAvLyBvYmplY3RzIGluIFNUTCBjb250YWluZXJzLgotICBDYXJkaW5hbGl0eSgpIHt9
Ci0KLSAgLy8gQ29uc3RydWN0cyBhIENhcmRpbmFsaXR5IGZyb20gaXRzIGltcGxlbWVudGF0aW9u
LgotICBleHBsaWNpdCBDYXJkaW5hbGl0eShjb25zdCBDYXJkaW5hbGl0eUludGVyZmFjZSogaW1w
bCkgOiBpbXBsXyhpbXBsKSB7fQotCi0gIC8vIENvbnNlcnZhdGl2ZSBlc3RpbWF0ZSBvbiB0aGUg
bG93ZXIvdXBwZXIgYm91bmQgb2YgdGhlIG51bWJlciBvZgotICAvLyBjYWxscyBhbGxvd2VkLgot
ICBpbnQgQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5Db25z
ZXJ2YXRpdmVMb3dlckJvdW5kKCk7IH0KLSAgaW50IENvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKSBj
b25zdCB7IHJldHVybiBpbXBsXy0+Q29uc2VydmF0aXZlVXBwZXJCb3VuZCgpOyB9Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0aXNmeSB0aGlzIGNhcmRp
bmFsaXR5LgotICBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNv
bnN0IHsKLSAgICByZXR1cm4gaW1wbF8tPklzU2F0aXNmaWVkQnlDYWxsQ291bnQoY2FsbF9jb3Vu
dCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxfY291bnQgY2FsbHMgd2lsbCBz
YXR1cmF0ZSB0aGlzIGNhcmRpbmFsaXR5LgotICBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQo
aW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbF8tPklzU2F0dXJhdGVkQnlD
YWxsQ291bnQoY2FsbF9jb3VudCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIGNhbGxf
Y291bnQgY2FsbHMgd2lsbCBvdmVyLXNhdHVyYXRlIHRoaXMKLSAgLy8gY2FyZGluYWxpdHksIGku
ZS4gZXhjZWVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNhbGxzLgotICBib29sIElz
T3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAgcmV0
dXJuIGltcGxfLT5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KGNhbGxfY291bnQpICYmCi0gICAgICAg
ICFpbXBsXy0+SXNTYXRpc2ZpZWRCeUNhbGxDb3VudChjYWxsX2NvdW50KTsKLSAgfQotCi0gIC8v
IERlc2NyaWJlcyBzZWxmIHRvIGFuIG9zdHJlYW0KLSAgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgeyBpbXBsXy0+RGVzY3JpYmVUbyhvcyk7IH0KLQotICAvLyBEZXNj
cmliZXMgdGhlIGdpdmVuIGFjdHVhbCBjYWxsIGNvdW50IHRvIGFuIG9zdHJlYW0uCi0gIHN0YXRp
YyB2b2lkIERlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oaW50IGFjdHVhbF9jYWxsX2NvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpvc3RyZWFtKiBv
cyk7Ci0KLSBwcml2YXRlOgotICBpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBDYXJkaW5hbGl0
eUludGVyZmFjZT4gaW1wbF87Ci19OwotCi0vLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgdGhhdCBh
bGxvd3MgYXQgbGVhc3QgbiBjYWxscy4KLUdURVNUX0FQSV8gQ2FyZGluYWxpdHkgQXRMZWFzdChp
bnQgbik7Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhdCBtb3N0IG4g
Y2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5IEF0TW9zdChpbnQgbik7Ci0KLS8vIENyZWF0
ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhbnkgbnVtYmVyIG9mIGNhbGxzLgotR1RFU1Rf
QVBJXyBDYXJkaW5hbGl0eSBBbnlOdW1iZXIoKTsKLQotLy8gQ3JlYXRlcyBhIGNhcmRpbmFsaXR5
IHRoYXQgYWxsb3dzIGJldHdlZW4gbWluIGFuZCBtYXggY2FsbHMuCi1HVEVTVF9BUElfIENhcmRp
bmFsaXR5IEJldHdlZW4oaW50IG1pbiwgaW50IG1heCk7Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5h
bGl0eSB0aGF0IGFsbG93cyBleGFjdGx5IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5
IEV4YWN0bHkoaW50IG4pOwotCi0vLyBDcmVhdGVzIGEgY2FyZGluYWxpdHkgZnJvbSBpdHMgaW1w
bGVtZW50YXRpb24uCi1pbmxpbmUgQ2FyZGluYWxpdHkgTWFrZUNhcmRpbmFsaXR5KGNvbnN0IENh
cmRpbmFsaXR5SW50ZXJmYWNlKiBjKSB7Ci0gIHJldHVybiBDYXJkaW5hbGl0eShjKTsKLX0KLQot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NL
X0dNT0NLX0NBUkRJTkFMSVRJRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21v
Y2svZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjVhODg5YzBjM2E0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9n
bW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjM3NyAr
MCwwIEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBhIHNjcmlwdC4gIERPIE5PVCBF
RElUIEJZIEhBTkQhISEKLQotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8g
R29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgot
Ly8KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHNvbWUgY29tbW9ubHkgdXNlZCB2YXJpYWRpYyBh
Y3Rpb25zLgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX0FD
VElPTlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfQUNU
SU9OU19IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stYWN0aW9ucy5oIgotI2luY2x1ZGUgImdt
b2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNw
YWNlIGludGVybmFsIHsKLQotLy8gSW52b2tlSGVscGVyPEY+IGtub3dzIGhvdyB0byB1bnBhY2sg
YW4gTi10dXBsZSBhbmQgaW52b2tlIGFuIE4tYXJ5Ci0vLyBmdW5jdGlvbiBvciBtZXRob2Qgd2l0
aCB0aGUgdW5wYWNrZWQgdmFsdWVzLCB3aGVyZSBGIGlzIGEgZnVuY3Rpb24KLS8vIHR5cGUgdGhh
dCB0YWtlcyBOIGFyZ3VtZW50cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1l
IEFyZ3VtZW50VHVwbGU+Ci1jbGFzcyBJbnZva2VIZWxwZXI7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSPgotY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8PiA+IHsKLSBwdWJs
aWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1
bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPD4mKSB7Ci0gICAgICAgICAg
IHJldHVybiBmdW5jdGlvbigpOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENsYXNzLCB0eXBl
bmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9rZU1ldGhvZChDbGFzcyogb2JqX3B0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRob2RfcHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTw+JikgewotICAgICAgICAgICBy
ZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRyKSgpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUiwgdHlwZW5hbWUgQTE+Ci1jbGFzcyBJbnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0
dXBsZTxBMT4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0g
IHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgOjp0ZXN0aW5nOjp0dXBs
ZTxBMT4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGdldDwwPihhcmdzKSk7
Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAg
c3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCA6OnRlc3Rpbmc6OnR1cGxlPEExPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9w
dHItPiptZXRob2RfcHRyKShnZXQ8MD4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotY2xhc3MgSW52b2tlSGVscGVyPFIs
IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyPiA+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25z
dCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMj4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDxj
bGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRob2Qo
Q2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0aG9k
X3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRyKShn
ZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotY2xhc3MgSW52b2tl
SGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMz4gPiB7Ci0gcHVibGljOgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0gIHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBm
dW5jdGlvbiwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiYgYXJncykgewotICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwy
PihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhv
ZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTM+JiBhcmdzKSB7Ci0gICAgICAg
ICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFy
Z3MpLAotICAgICAgICAgICAgICAgZ2V0PDI+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVu
YW1lIEE0PgotY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBB
MywgQTQ+ID4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBz
dGF0aWMgUiBJbnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8
QTEsIEEyLCBBMywKLSAgICAgIEE0PiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwKLSAgICAgICAgICAg
ICAgIGdldDwzPihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVu
YW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9kKENsYXNzKiBvYmpfcHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhvZF9wdHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0PiYgYXJn
cykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRob2RfcHRyKShnZXQ8MD4oYXJn
cyksIGdldDwxPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwyPihhcmdzKSwgZ2V0PDM+KGFy
Z3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBl
bmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1PgotY2xh
c3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1PiA+
IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIg
SW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwg
QTMsIEE0LAotICAgICAgQTU+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBmdW5jdGlvbihn
ZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAgICAgICAgICAg
Z2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENs
YXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9rZU1ldGhvZChDbGFzcyog
b2JqX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRob2RfcHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEz
LCBBNCwgQTU+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9w
dHIpKGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDI+KGFy
Z3MpLCBnZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBNCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTY+Ci1jbGFzcyBJbnZva2VIZWxwZXI8
UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2PiA+IHsKLSBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52b2tlKEZ1bmN0
aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwK
LSAgICAgIEE2PiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFy
Z3MpLCBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwzPihh
cmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPGNs
YXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9rZU1ldGhvZChD
bGFzcyogb2JqX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0ciBtZXRob2Rf
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwg
QTIsIEEzLCBBNCwgQTUsIEE2PiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHIt
PiptZXRob2RfcHRyKShnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwKLSAgICAgICAgICAgICAg
IGdldDwyPihhcmdzKSwgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSk7
Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUg
QTYsIHR5cGVuYW1lIEE3PgotY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8
QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+ID4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0aW9uPgotICBzdGF0aWMgUiBJbnZva2UoRnVuY3Rpb24gZnVuY3Rpb24sIGNv
bnN0IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LAotICAgICAgQTYsIEE3PiYg
YXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4o
YXJncyksIGdldDwyPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwzPihhcmdzKSwgZ2V0PDQ+
KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8
Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9k
KENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhv
ZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQTc+JiBh
cmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdldDwwPihh
cmdzKSwgZ2V0PDE+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4o
YXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDY+
KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0
eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgotY2xhc3MgSW52b2tlSGVscGVy
PFIsIDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4PiA+IHsK
LSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3RhdGljIFIgSW52
b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwgQTMs
IEE0LCBBNSwKLSAgICAgIEE2LCBBNywgQTg+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiBm
dW5jdGlvbihnZXQ8MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLAotICAgICAg
ICAgICAgICAgZ2V0PDM+KGFyZ3MpLCBnZXQ8ND4oYXJncyksIGdldDw1PihhcmdzKSwgZ2V0PDY+
KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDc+KGFyZ3MpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJbnZva2VNZXRo
b2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNZXRob2RQdHIgbWV0
aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8
QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
QTg+JiBhcmdzKSB7Ci0gICAgICAgICAgIHJldHVybiAob2JqX3B0ci0+Km1ldGhvZF9wdHIpKGdl
dDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLAotICAgICAgICAgICAgICAgZ2V0PDI+KGFyZ3MpLCBn
ZXQ8Mz4oYXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLAotICAgICAgICAgICAgICAg
Z2V0PDY+KGFyZ3MpLCBnZXQ8Nz4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQs
Ci0gICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgs
IHR5cGVuYW1lIEE5PgotY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Ci0gIHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlv
biwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsCi0gICAgICBBNiwg
QTcsIEE4LCBBOT4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGdldDwwPihh
cmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mz4o
YXJncyksIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLCBnZXQ8Nj4oYXJncyksCi0gICAgICAg
ICAgICAgICBnZXQ8Nz4oYXJncyksIGdldDw4PihhcmdzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8
Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0cj4KLSAgc3RhdGljIFIgSW52b2tlTWV0aG9k
KENsYXNzKiBvYmpfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgTWV0aG9kUHRyIG1ldGhv
ZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBOT4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4qbWV0aG9kX3B0ciko
Z2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCi0gICAgICAgICAgICAgICBnZXQ8Mj4oYXJncyks
IGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCi0gICAgICAgICAgICAg
ICBnZXQ8Nj4oYXJncyksIGdldDw3PihhcmdzKSwgZ2V0PDg+KGFyZ3MpKTsKLSAgfQotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUg
QTMsIHR5cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUg
QTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOSwKLSAgICB0eXBlbmFtZSBBMTA+Ci1jbGFzcyBJ
bnZva2VIZWxwZXI8UiwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBB
NywgQTgsIEE5LAotICAgIEExMD4gPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rpb24+Ci0gIHN0YXRpYyBSIEludm9rZShGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgOjp0
ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsCi0gICAgICBBNiwgQTcsIEE4LCBBOSwg
QTEwPiYgYXJncykgewotICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oZ2V0PDA+KGFyZ3MpLCBn
ZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwKLSAgICAgICAgICAgICAgIGdldDwzPihhcmdzKSwg
Z2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwKLSAgICAgICAgICAgICAg
IGdldDw3PihhcmdzKSwgZ2V0PDg+KGFyZ3MpLCBnZXQ8OT4oYXJncykpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPGNsYXNzIENsYXNzLCB0eXBlbmFtZSBNZXRob2RQdHI+Ci0gIHN0YXRpYyBSIEludm9r
ZU1ldGhvZChDbGFzcyogb2JqX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFB0
ciBtZXRob2RfcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjp0
dXBsZTxBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQTksIEExMD4mIGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIChvYmpfcHRyLT4q
bWV0aG9kX3B0cikoZ2V0PDA+KGFyZ3MpLCBnZXQ8MT4oYXJncyksCi0gICAgICAgICAgICAgICBn
ZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksCi0g
ICAgICAgICAgICAgICBnZXQ8Nj4oYXJncyksIGdldDw3PihhcmdzKSwgZ2V0PDg+KGFyZ3MpLCBn
ZXQ8OT4oYXJncykpOwotICB9Ci19OwotCi0vLyBBbiBJTlRFUk5BTCBtYWNybyBmb3IgZXh0cmFj
dGluZyB0aGUgdHlwZSBvZiBhIHR1cGxlIGZpZWxkLiAgSXQncwotLy8gc3ViamVjdCB0byBjaGFu
Z2Ugd2l0aG91dCBub3RpY2UgLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERSEKLSNkZWZpbmUgR01P
Q0tfRklFTERfKFR1cGxlLCBOKSBcCi0gICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjp0dXBsZV9lbGVt
ZW50PE4sIFR1cGxlPjo6dHlwZQotCi0vLyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBs
ZSwgazEsIGsyLCAuLi4sIGtfbj46OnR5cGUgaXMgdGhlCi0vLyB0eXBlIG9mIGFuIG4tYXJ5IGZ1
bmN0aW9uIHdob3NlIGktdGggKDEtYmFzZWQpIGFyZ3VtZW50IHR5cGUgaXMgdGhlCi0vLyBre2l9
LXRoICgwLWJhc2VkKSBmaWVsZCBvZiBBcmd1bWVudFR1cGxlLCB3aGljaCBtdXN0IGJlIGEgdHVw
bGUKLS8vIHR5cGUsIGFuZCB3aG9zZSByZXR1cm4gdHlwZSBpcyBSZXN1bHQuICBGb3IgZXhhbXBs
ZSwKLS8vICAgU2VsZWN0QXJnczxpbnQsIDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgY2hhciwgZG91
YmxlLCBsb25nPiwgMCwgMz46OnR5cGUKLS8vIGlzIGludChib29sLCBsb25nKS4KLS8vCi0vLyBT
ZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwgazEsIGsyLCAuLi4sIGtfbj46OlNlbGVj
dChhcmdzKQotLy8gcmV0dXJucyB0aGUgc2VsZWN0ZWQgZmllbGRzIChrMSwgazIsIC4uLiwga19u
KSBvZiBhcmdzIGFzIGEgdHVwbGUuCi0vLyBGb3IgZXhhbXBsZSwKLS8vICAgU2VsZWN0QXJnczxp
bnQsIHR1cGxlPGJvb2wsIGNoYXIsIGRvdWJsZT4sIDIsIDA+OjpTZWxlY3QoCi0vLyAgICAgICA6
OnRlc3Rpbmc6Om1ha2VfdHVwbGUodHJ1ZSwgJ2EnLCAyLjUpKQotLy8gcmV0dXJucyB0dXBsZSAo
Mi41LCB0cnVlKS4KLS8vCi0vLyBUaGUgbnVtYmVycyBpbiBsaXN0IGsxLCBrMiwgLi4uLCBrX24g
bXVzdCBiZSA+PSAwLCB3aGVyZSBuIGNhbiBiZQotLy8gaW4gdGhlIHJhbmdlIFswLCAxMF0uICBE
dXBsaWNhdGVzIGFyZSBhbGxvd2VkIGFuZCB0aGV5IGRvbid0IGhhdmUKLS8vIHRvIGJlIGluIGFu
IGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
dWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwgaW50IGszLAotICAg
IGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywgaW50IGs4LCBpbnQgazksIGludCBrMTA+
Ci1jbGFzcyBTZWxlY3RBcmdzIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01P
Q0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsxKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVu
dFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCi0gICAgICBHTU9D
S19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwg
azUpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs2KSwgR01PQ0tfRklFTERf
KEFyZ3VtZW50VHVwbGUsIGs3KSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBr
OCksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrOSksCi0gICAgICBHTU9DS19GSUVMRF8o
QXJndW1lbnRUdXBsZSwgazEwKSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46
OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVj
dChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhn
ZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAotICAgICAgICBnZXQ8
azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBnZXQ8azc+KGFyZ3MpLAot
ICAgICAgICBnZXQ8azg+KGFyZ3MpLCBnZXQ8azk+KGFyZ3MpLCBnZXQ8azEwPihhcmdzKSk7Ci0g
IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVw
bGU+Ci1jbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwKLSAgICAgICAgICAg
ICAgICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJsaWM6
Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0
eXBlPjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3Mg
U2VsZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIC8qIGFyZ3MgKi8pIHsKLSAgICByZXR1cm4gU2Vs
ZWN0ZWRBcmdzKCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVu
YW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMT4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1
bWVudFR1cGxlLAotICAgICAgICAgICAgICAgICBrMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg
LTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVM
RF8oQXJndW1lbnRUdXBsZSwgazEpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBl
Pjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2Vs
ZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdz
KGdldDxrMT4oYXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0
eXBlbmFtZSBBcmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMj4KLWNsYXNzIFNlbGVjdEFyZ3M8
UmVzdWx0LCBBcmd1bWVudFR1cGxlLAotICAgICAgICAgICAgICAgICBrMSwgazIsIC0xLCAtMSwg
LTEsIC0xLCAtMSwgLTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlw
ZShHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEpLAotICAgICAgR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGsyKSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFy
Z3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChj
b25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8
azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIsIGludCBrMz4K
LWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAotICAgICAgICAgICAgICAg
ICBrMSwgazIsIGszLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMT4gewotIHB1YmxpYzoKLSAg
dHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEpLAotICAg
ICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsyKSwgR01PQ0tfRklFTERfKEFyZ3VtZW50
VHVwbGUsIGszKSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50
VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBB
cmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFy
Z3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIs
IGludCBrMywKLSAgICBpbnQgazQ+Ci1jbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRU
dXBsZSwKLSAgICAgICAgICAgICAgICAgazEsIGsyLCBrMywgazQsIC0xLCAtMSwgLTEsIC0xLCAt
MSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGsxKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMiks
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMyksCi0gICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazQpKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJn
dW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNv
bnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gU2VsZWN0ZWRBcmdzKGdldDxr
MT4oYXJncyksIGdldDxrMj4oYXJncyksIGdldDxrMz4oYXJncyksCi0gICAgICAgIGdldDxrND4o
YXJncykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBB
cmd1bWVudFR1cGxlLCBpbnQgazEsIGludCBrMiwgaW50IGszLAotICAgIGludCBrNCwgaW50IGs1
PgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsCi0gICAgICAgICAgICAg
ICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgLTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgot
ICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCi0g
ICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8oQXJndW1l
bnRUdXBsZSwgazMpLAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs0KSwgR01P
Q0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs1KSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rp
b248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRB
cmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVj
dGVkQXJncyhnZXQ8azE+KGFyZ3MpLCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAotICAg
ICAgICBnZXQ8azQ+KGFyZ3MpLCBnZXQ8azU+KGFyZ3MpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgaW50IGsxLCBpbnQgazIs
IGludCBrMywKLSAgICBpbnQgazQsIGludCBrNSwgaW50IGs2PgotY2xhc3MgU2VsZWN0QXJnczxS
ZXN1bHQsIEFyZ3VtZW50VHVwbGUsCi0gICAgICAgICAgICAgICAgIGsxLCBrMiwgazMsIGs0LCBr
NSwgazYsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFJlc3VsdCB0eXBl
KEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMSksCi0gICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazIpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazMpLAotICAgICAg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs0KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVw
bGUsIGs1KSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNikpOwotICB0eXBl
ZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsK
LSAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxlY3QoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykg
ewotICAgIHJldHVybiBTZWxlY3RlZEFyZ3MoZ2V0PGsxPihhcmdzKSwgZ2V0PGsyPihhcmdzKSwg
Z2V0PGszPihhcmdzKSwKLSAgICAgICAgZ2V0PGs0PihhcmdzKSwgZ2V0PGs1PihhcmdzKSwgZ2V0
PGs2PihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVu
YW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsyLCBpbnQgazMsCi0gICAgaW50IGs0LCBp
bnQgazUsIGludCBrNiwgaW50IGs3PgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50
VHVwbGUsCi0gICAgICAgICAgICAgICAgIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCAtMSwg
LTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFJlc3VsdCB0eXBlKEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrMSksCi0gICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazIp
LCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazMpLAotICAgICAgR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGs0KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs1KSwKLSAgICAg
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNiksIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1
cGxlLCBrNykpOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPHR5cGU+OjpBcmd1bWVudFR1
cGxlIFNlbGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVjdGVkQXJncyBTZWxlY3QoY29uc3QgQXJn
dW1lbnRUdXBsZSYgYXJncykgewotICAgIHJldHVybiBTZWxlY3RlZEFyZ3MoZ2V0PGsxPihhcmdz
KSwgZ2V0PGsyPihhcmdzKSwgZ2V0PGszPihhcmdzKSwKLSAgICAgICAgZ2V0PGs0PihhcmdzKSwg
Z2V0PGs1PihhcmdzKSwgZ2V0PGs2PihhcmdzKSwgZ2V0PGs3PihhcmdzKSk7Ci0gIH0KLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBr
MSwgaW50IGsyLCBpbnQgazMsCi0gICAgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBp
bnQgazg+Ci1jbGFzcyBTZWxlY3RBcmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwKLSAgICAgICAg
ICAgICAgICAgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIGs4LCAtMSwgLTE+IHsKLSBwdWJs
aWM6Ci0gIHR5cGVkZWYgUmVzdWx0IHR5cGUoR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsx
KSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrMiksIEdNT0NLX0ZJRUxEXyhB
cmd1bWVudFR1cGxlLCBrMyksCi0gICAgICBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazQp
LCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazUpLAotICAgICAgR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGs2KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs3KSwKLSAgICAg
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrOCkpOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1
bmN0aW9uPHR5cGU+OjpBcmd1bWVudFR1cGxlIFNlbGVjdGVkQXJnczsKLSAgc3RhdGljIFNlbGVj
dGVkQXJncyBTZWxlY3QoY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncykgewotICAgIHJldHVybiBT
ZWxlY3RlZEFyZ3MoZ2V0PGsxPihhcmdzKSwgZ2V0PGsyPihhcmdzKSwgZ2V0PGszPihhcmdzKSwK
LSAgICAgICAgZ2V0PGs0PihhcmdzKSwgZ2V0PGs1PihhcmdzKSwgZ2V0PGs2PihhcmdzKSwgZ2V0
PGs3PihhcmdzKSwKLSAgICAgICAgZ2V0PGs4PihhcmdzKSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBSZXN1bHQsIHR5cGVuYW1lIEFyZ3VtZW50VHVwbGUsIGludCBrMSwgaW50IGsy
LCBpbnQgazMsCi0gICAgaW50IGs0LCBpbnQgazUsIGludCBrNiwgaW50IGs3LCBpbnQgazgsIGlu
dCBrOT4KLWNsYXNzIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxlLAotICAgICAgICAg
ICAgICAgICBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIGs5LCAtMT4gewotIHB1Ymxp
YzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZShHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazEp
LAotICAgICAgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGsyKSwgR01PQ0tfRklFTERfKEFy
Z3VtZW50VHVwbGUsIGszKSwKLSAgICAgIEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNCks
IEdNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrNSksCi0gICAgICBHTU9DS19GSUVMRF8oQXJn
dW1lbnRUdXBsZSwgazYpLCBHTU9DS19GSUVMRF8oQXJndW1lbnRUdXBsZSwgazcpLAotICAgICAg
R01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGs4KSwgR01PQ0tfRklFTERfKEFyZ3VtZW50VHVw
bGUsIGs5KSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVw
bGUgU2VsZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncyhnZXQ8azE+KGFyZ3Mp
LCBnZXQ8azI+KGFyZ3MpLCBnZXQ8azM+KGFyZ3MpLAotICAgICAgICBnZXQ8azQ+KGFyZ3MpLCBn
ZXQ8azU+KGFyZ3MpLCBnZXQ8azY+KGFyZ3MpLCBnZXQ8azc+KGFyZ3MpLAotICAgICAgICBnZXQ8
azg+KGFyZ3MpLCBnZXQ8azk+KGFyZ3MpKTsKLSAgfQotfTsKLQotI3VuZGVmIEdNT0NLX0ZJRUxE
XwotCi0vLyBJbXBsZW1lbnRzIHRoZSBXaXRoQXJncyBhY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgSW5uZXJBY3Rpb24sIGludCBrMSA9IC0xLCBpbnQgazIgPSAtMSwgaW50IGszID0gLTEsCi0g
ICAgaW50IGs0ID0gLTEsIGludCBrNSA9IC0xLCBpbnQgazYgPSAtMSwgaW50IGs3ID0gLTEsIGlu
dCBrOCA9IC0xLAotICAgIGludCBrOSA9IC0xLCBpbnQgazEwID0gLTE+Ci1jbGFzcyBXaXRoQXJn
c0FjdGlvbiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBXaXRoQXJnc0FjdGlvbihjb25zdCBJbm5l
ckFjdGlvbiYgYWN0aW9uKSA6IGFjdGlvbl8oYWN0aW9uKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGPgotICBvcGVyYXRvciBBY3Rpb248Rj4oKSBjb25zdCB7IHJldHVybiBNYWtlQWN0aW9u
KG5ldyBJbXBsPEY+KGFjdGlvbl8pKTsgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIEY+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgQWN0aW9uSW50ZXJmYWNlPEY+IHsKLSAgIHB1
YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0Owot
ICAgIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRU
dXBsZTsKLQotICAgIGV4cGxpY2l0IEltcGwoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgOiBh
Y3Rpb25fKGFjdGlvbikge30KLQotICAgIHZpcnR1YWwgUmVzdWx0IFBlcmZvcm0oY29uc3QgQXJn
dW1lbnRUdXBsZSYgYXJncykgewotICAgICAgcmV0dXJuIGFjdGlvbl8uUGVyZm9ybShTZWxlY3RB
cmdzPFJlc3VsdCwgQXJndW1lbnRUdXBsZSwgazEsIGsyLCBrMywgazQsCi0gICAgICAgICAgazUs
IGs2LCBrNywgazgsIGs5LCBrMTA+OjpTZWxlY3QoYXJncykpOwotICAgIH0KLQotICAgcHJpdmF0
ZToKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlbGVjdEFyZ3M8UmVzdWx0LCBBcmd1bWVudFR1cGxl
LAotICAgICAgICBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIGs5LCBrMTA+Ojp0eXBl
IElubmVyRnVuY3Rpb25UeXBlOwotCi0gICAgQWN0aW9uPElubmVyRnVuY3Rpb25UeXBlPiBhY3Rp
b25fOwotICB9OwotCi0gIGNvbnN0IElubmVyQWN0aW9uIGFjdGlvbl87Ci0KLSAgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyhXaXRoQXJnc0FjdGlvbik7Ci19OwotCi0vLyBBIG1hY3JvIGZyb20gdGhl
IEFDVElPTiogZmFtaWx5IChkZWZpbmVkIGxhdGVyIGluIHRoaXMgZmlsZSkKLS8vIGRlZmluZXMg
YW4gYWN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgaW4gYSBtb2NrIGZ1bmN0aW9uLiAgVHlwaWNhbGx5
LAotLy8gdGhlc2UgYWN0aW9ucyBvbmx5IGNhcmUgYWJvdXQgYSBzdWJzZXQgb2YgdGhlIGFyZ3Vt
ZW50cyBvZiB0aGUgbW9jawotLy8gZnVuY3Rpb24uICBGb3IgZXhhbXBsZSwgaWYgc3VjaCBhbiBh
Y3Rpb24gb25seSB1c2VzIHRoZSBzZWNvbmQKLS8vIGFyZ3VtZW50LCBpdCBjYW4gYmUgdXNlZCBp
biBhbnkgbW9jayBmdW5jdGlvbiB0aGF0IHRha2VzID49IDIKLS8vIGFyZ3VtZW50cyB3aGVyZSB0
aGUgdHlwZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGNvbXBhdGlibGUuCi0vLwotLy8gVGhl
cmVmb3JlLCB0aGUgYWN0aW9uIGltcGxlbWVudGF0aW9uIG11c3QgYmUgcHJlcGFyZWQgdG8gdGFr
ZSBtb3JlCi0vLyBhcmd1bWVudHMgdGhhbiBpdCBuZWVkcy4gIFRoZSBFeGNlc3NpdmVBcmcgdHlw
ZSBpcyB1c2VkIHRvCi0vLyByZXByZXNlbnQgdGhvc2UgZXhjZXNzaXZlIGFyZ3VtZW50cy4gIElu
IG9yZGVyIHRvIGtlZXAgdGhlIGNvbXBpbGVyCi0vLyBlcnJvciBtZXNzYWdlcyB0cmFjdGFibGUs
IHdlIGRlZmluZSBpdCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2UKLS8vIGluc3RlYWQgb2YgdGVz
dGluZzo6aW50ZXJuYWwuICBIb3dldmVyLCB0aGlzIGlzIGFuIElOVEVSTkFMIFRZUEUKLS8vIGFu
ZCBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZSwgc28gYSB1c2VyIE1VU1QgTk9UIFVT
RSBUSElTCi0vLyBUWVBFIERJUkVDVExZLgotc3RydWN0IEV4Y2Vzc2l2ZUFyZyB7fTsKLQotLy8g
QSBoZWxwZXIgY2xhc3MgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgdGhlIEFDVElPTiogbWFjcm9z
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgY2xhc3MgSW1wbD4KLWNsYXNzIEFjdGlvbkhl
bHBlciB7Ci0gcHVibGljOgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29u
c3QgOjp0ZXN0aW5nOjp0dXBsZTw+JiBhcmdzKSB7Ci0gICAgcmV0dXJuIGltcGwtPnRlbXBsYXRl
IGdtb2NrX1BlcmZvcm1JbXBsPD4oYXJncywgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vz
c2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygp
LAotICAgICAgICBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygp
LCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEEwPgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwg
Y29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMD4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVt
cGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTA+KGFyZ3MsIGdldDwwPihhcmdzKSwKLSAgICAgICAg
RXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZl
QXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZl
QXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVBcmcoKSk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICBzdGF0aWMgUmVzdWx0IFBl
cmZvcm0oSW1wbCogaW1wbCwgY29uc3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTE+JiBhcmdzKSB7
Ci0gICAgcmV0dXJuIGltcGwtPnRlbXBsYXRlIGdtb2NrX1BlcmZvcm1JbXBsPEEwLCBBMT4oYXJn
cywgZ2V0PDA+KGFyZ3MpLAotICAgICAgICBnZXQ8MT4oYXJncyksIEV4Y2Vzc2l2ZUFyZygpLCBF
eGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpLCBF
eGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBF
eGNlc3NpdmVBcmcoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMj4KLSAgc3RhdGljIFJlc3VsdCBQZXJmb3JtKEltcGwqIGltcGwsIGNv
bnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMj4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1w
bC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExLCBBMj4oYXJncywgZ2V0PDA+KGFy
Z3MpLAotICAgICAgICBnZXQ8MT4oYXJncyksIGdldDwyPihhcmdzKSwgRXhjZXNzaXZlQXJnKCks
IEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVBcmcoKSwgRXhjZXNzaXZlQXJnKCks
IEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCkp
OwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzPgotICBzdGF0aWMgUmVzdWx0IFBlcmZvcm0oSW1wbCogaW1wbCwgY29u
c3QgOjp0ZXN0aW5nOjp0dXBsZTxBMCwgQTEsIEEyLAotICAgICAgQTM+JiBhcmdzKSB7Ci0gICAg
cmV0dXJuIGltcGwtPnRlbXBsYXRlIGdtb2NrX1BlcmZvcm1JbXBsPEEwLCBBMSwgQTIsIEEzPihh
cmdzLCBnZXQ8MD4oYXJncyksCi0gICAgICAgIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLCBn
ZXQ8Mz4oYXJncyksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVBcmcoKSwgRXhj
ZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmcoKSwKLSAgICAgICAgRXhj
ZXNzaXZlQXJnKCkpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBND4KLSAgc3RhdGljIFJlc3Vs
dCBQZXJmb3JtKEltcGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwg
QTMsCi0gICAgICBBND4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tf
UGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTMsIEE0PihhcmdzLAotICAgICAgICBnZXQ8MD4oYXJn
cyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4oYXJncyksIGdldDw0Pihhcmdz
KSwKLSAgICAgICAgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmco
KSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCi0gICAgICB0eXBlbmFtZSBBNT4KLSAgc3RhdGljIFJlc3VsdCBQZXJm
b3JtKEltcGwqIGltcGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwgQTMsIEE0
LAotICAgICAgQTU+JiBhcmdzKSB7Ci0gICAgcmV0dXJuIGltcGwtPnRlbXBsYXRlIGdtb2NrX1Bl
cmZvcm1JbXBsPEEwLCBBMSwgQTIsIEEzLCBBNCwgQTU+KGFyZ3MsCi0gICAgICAgIGdldDwwPihh
cmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwgZ2V0PDQ+KGFy
Z3MpLAotICAgICAgICBnZXQ8NT4oYXJncyksIEV4Y2Vzc2l2ZUFyZygpLCBFeGNlc3NpdmVBcmco
KSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCi0gICAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTY+Ci0gIHN0YXRp
YyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBB
MSwgQTIsIEEzLCBBNCwKLSAgICAgIEE1LCBBNj4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+
dGVtcGxhdGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTY+KGFy
Z3MsCi0gICAgICAgIGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdl
dDwzPihhcmdzKSwgZ2V0PDQ+KGFyZ3MpLAotICAgICAgICBnZXQ8NT4oYXJncyksIGdldDw2Pihh
cmdzKSwgRXhjZXNzaXZlQXJnKCksIEV4Y2Vzc2l2ZUFyZygpLAotICAgICAgICBFeGNlc3NpdmVB
cmcoKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBl
bmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgICAgdHlwZW5hbWUgQTUsIHR5
cGVuYW1lIEE2LCB0eXBlbmFtZSBBNz4KLSAgc3RhdGljIFJlc3VsdCBQZXJmb3JtKEltcGwqIGlt
cGwsIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwgQTMsIEE0LAotICAgICAgQTUs
IEE2LCBBNz4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tfUGVyZm9y
bUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsCi0gICAgICAgIEE3PihhcmdzLCBnZXQ8
MD4oYXJncyksIGdldDwxPihhcmdzKSwgZ2V0PDI+KGFyZ3MpLCBnZXQ8Mz4oYXJncyksCi0gICAg
ICAgIGdldDw0PihhcmdzKSwgZ2V0PDU+KGFyZ3MpLCBnZXQ8Nj4oYXJncyksIGdldDw3Pihhcmdz
KSwgRXhjZXNzaXZlQXJnKCksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCi0gICAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1l
IEE3LCB0eXBlbmFtZSBBOD4KLSAgc3RhdGljIFJlc3VsdCBQZXJmb3JtKEltcGwqIGltcGwsIGNv
bnN0IDo6dGVzdGluZzo6dHVwbGU8QTAsIEExLCBBMiwgQTMsIEE0LAotICAgICAgQTUsIEE2LCBB
NywgQTg+JiBhcmdzKSB7Ci0gICAgcmV0dXJuIGltcGwtPnRlbXBsYXRlIGdtb2NrX1BlcmZvcm1J
bXBsPEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywKLSAgICAgICAgQTg+KGFyZ3MsIGdl
dDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJncyksIGdldDwzPihhcmdzKSwKLSAg
ICAgICAgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdldDw2PihhcmdzKSwgZ2V0PDc+KGFy
Z3MpLCBnZXQ8OD4oYXJncyksCi0gICAgICAgIEV4Y2Vzc2l2ZUFyZygpKTsKLSAgfQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsCi0gICAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1l
IEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+Ci0gIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJ
bXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPEEwLCBBMSwgQTIsIEEzLCBBNCwKLSAg
ICAgIEE1LCBBNiwgQTcsIEE4LCBBOT4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxh
dGUgZ21vY2tfUGVyZm9ybUltcGw8QTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwK
LSAgICAgICAgQTk+KGFyZ3MsIGdldDwwPihhcmdzKSwgZ2V0PDE+KGFyZ3MpLCBnZXQ8Mj4oYXJn
cyksIGdldDwzPihhcmdzKSwKLSAgICAgICAgZ2V0PDQ+KGFyZ3MpLCBnZXQ8NT4oYXJncyksIGdl
dDw2PihhcmdzKSwgZ2V0PDc+KGFyZ3MpLCBnZXQ8OD4oYXJncyksCi0gICAgICAgIGdldDw5Pihh
cmdzKSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBWYXJpb3Vz
IG92ZXJsb2FkcyBmb3IgSW52b2tlKCkuCi0KLS8vIFdpdGhBcmdzPE4xLCBOMiwgLi4uLCBOaz4o
YW5fYWN0aW9uKSBjcmVhdGVzIGFuIGFjdGlvbiB0aGF0IHBhc3NlcwotLy8gdGhlIHNlbGVjdGVk
IGFyZ3VtZW50cyBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhbl9hY3Rpb24gYW5kCi0vLyBwZXJm
b3JtcyBpdC4gIEl0IHNlcnZlcyBhcyBhbiBhZGFwdG9yIGJldHdlZW4gYWN0aW9ucyB3aXRoCi0v
LyBkaWZmZXJlbnQgYXJndW1lbnQgbGlzdHMuICBDKysgZG9lc24ndCBzdXBwb3J0IGRlZmF1bHQg
YXJndW1lbnRzIGZvcgotLy8gZnVuY3Rpb24gdGVtcGxhdGVzLCBzbyB3ZSBoYXZlIHRvIG92ZXJs
b2FkIGl0LgotdGVtcGxhdGUgPGludCBrMSwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUg
aW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMT4KLVdpdGhBcmdzKGNvbnN0
IElubmVyQWN0aW9uJiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlv
bjxJbm5lckFjdGlvbiwgazE+KGFjdGlvbik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBr
MiwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9u
PElubmVyQWN0aW9uLCBrMSwgazI+Ci1XaXRoQXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9u
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBr
Mj4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIHR5cGVu
YW1lIElubmVyQWN0aW9uPgotaW5saW5lIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFj
dGlvbiwgazEsIGsyLCBrMz4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIHsK
LSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBr
Mz4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBr
NCwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9u
PElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrND4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9u
JiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlv
biwgazEsIGsyLCBrMywgazQ+KGFjdGlvbik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBr
MiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUg
aW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazU+
Ci1XaXRoQXJncyhjb25zdCBJbm5lckFjdGlvbiYgYWN0aW9uKSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNT4oYWN0aW9u
KTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1
LCBpbnQgazYsIHR5cGVuYW1lIElubmVyQWN0aW9uPgotaW5saW5lIGludGVybmFsOjpXaXRoQXJn
c0FjdGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1LCBrNj4KLVdpdGhBcmdzKGNv
bnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0Fj
dGlvbjxJbm5lckFjdGlvbiwgazEsIGsyLCBrMywgazQsIGs1LCBrNj4oYWN0aW9uKTsKLX0KLQot
dGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYs
IGludCBrNywKLSAgICB0eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGluZSBpbnRlcm5hbDo6V2l0
aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3PgotV2l0
aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6Oldp
dGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LAotICAgICAg
azc+KGFjdGlvbik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQg
azQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwKLSAgICB0eXBlbmFtZSBJbm5lckFj
dGlvbj4KLWlubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGsxLCBr
MiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOD4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9uJiBh
Y3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlvbiwg
azEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsCi0gICAgICBrOD4oYWN0aW9uKTsKLX0KLQotdGVt
cGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGlu
dCBrNywgaW50IGs4LAotICAgIGludCBrOSwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxpbmUg
aW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwgazUs
IGs2LCBrNywgazgsIGs5PgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewot
ICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGsz
LCBrNCwgazUsIGs2LCBrNywgazgsCi0gICAgICBrOT4oYWN0aW9uKTsKLX0KLQotdGVtcGxhdGUg
PGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywg
aW50IGs4LAotICAgIGludCBrOSwgaW50IGsxMCwgdHlwZW5hbWUgSW5uZXJBY3Rpb24+Ci1pbmxp
bmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uLCBrMSwgazIsIGszLCBrNCwg
azUsIGs2LCBrNywgazgsCi0gICAgazksIGsxMD4KLVdpdGhBcmdzKGNvbnN0IElubmVyQWN0aW9u
JiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRoQXJnc0FjdGlvbjxJbm5lckFjdGlv
biwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazcsIGs4LAotICAgICAgazksIGsxMD4oYWN0aW9u
KTsKLX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBkb2VzIGFjdGlvbnMgYTEsIGEyLCAu
Li4sIHNlcXVlbnRpYWxseSBpbgotLy8gZWFjaCBpbnZvY2F0aW9uLgotdGVtcGxhdGUgPHR5cGVu
YW1lIEFjdGlvbjEsIHR5cGVuYW1lIEFjdGlvbjI+Ci1pbmxpbmUgaW50ZXJuYWw6OkRvQm90aEFj
dGlvbjxBY3Rpb24xLCBBY3Rpb24yPgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMikgewot
ICByZXR1cm4gaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBBY3Rpb24yPihhMSwgYTIp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0aW9uMiwgdHlw
ZW5hbWUgQWN0aW9uMz4KLWlubGluZSBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjEsIGlu
dGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMiwKLSAgICBBY3Rpb24zPiA+Ci1Eb0FsbChBY3Rp
b24xIGExLCBBY3Rpb24yIGEyLCBBY3Rpb24zIGEzKSB7Ci0gIHJldHVybiBEb0FsbChhMSwgRG9B
bGwoYTIsIGEzKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBB
Y3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAotICAgIHR5cGVuYW1lIEFjdGlvbjQ+Ci1pbmxpbmUg
aW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFj
dGlvbjIsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBBY3Rpb240PiA+ID4K
LURvQWxsKEFjdGlvbjEgYTEsIEFjdGlvbjIgYTIsIEFjdGlvbjMgYTMsIEFjdGlvbjQgYTQpIHsK
LSAgcmV0dXJuIERvQWxsKGExLCBEb0FsbChhMiwgYTMsIGE0KSk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBBY3Rpb24xLCB0eXBlbmFtZSBBY3Rpb24yLCB0eXBlbmFtZSBBY3Rpb24zLAotICAg
IHR5cGVuYW1lIEFjdGlvbjQsIHR5cGVuYW1lIEFjdGlvbjU+Ci1pbmxpbmUgaW50ZXJuYWw6OkRv
Qm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIsCi0gICAg
aW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFj
dGlvbjQsCi0gICAgQWN0aW9uNT4gPiA+ID4KLURvQWxsKEFjdGlvbjEgYTEsIEFjdGlvbjIgYTIs
IEFjdGlvbjMgYTMsIEFjdGlvbjQgYTQsIEFjdGlvbjUgYTUpIHsKLSAgcmV0dXJuIERvQWxsKGEx
LCBEb0FsbChhMiwgYTMsIGE0LCBhNSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9u
MSwgdHlwZW5hbWUgQWN0aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKLSAgICB0eXBlbmFtZSBBY3Rp
b240LCB0eXBlbmFtZSBBY3Rpb241LCB0eXBlbmFtZSBBY3Rpb242PgotaW5saW5lIGludGVybmFs
OjpEb0JvdGhBY3Rpb248QWN0aW9uMSwgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24yLAot
ICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMywgaW50ZXJuYWw6OkRvQm90aEFjdGlv
bjxBY3Rpb240LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uNSwgQWN0aW9uNj4g
PiA+ID4gPgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9u
NCBhNCwgQWN0aW9uNSBhNSwgQWN0aW9uNiBhNikgewotICByZXR1cm4gRG9BbGwoYTEsIERvQWxs
KGEyLCBhMywgYTQsIGE1LCBhNikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwg
dHlwZW5hbWUgQWN0aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKLSAgICB0eXBlbmFtZSBBY3Rpb240
LCB0eXBlbmFtZSBBY3Rpb241LCB0eXBlbmFtZSBBY3Rpb242LCB0eXBlbmFtZSBBY3Rpb243Pgot
aW5saW5lIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMSwgaW50ZXJuYWw6OkRvQm90aEFj
dGlvbjxBY3Rpb24yLAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMywgaW50ZXJu
YWw6OkRvQm90aEFjdGlvbjxBY3Rpb240LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0
aW9uNSwgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb242LAotICAgIEFjdGlvbjc+ID4gPiA+
ID4gPgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBh
NCwgQWN0aW9uNSBhNSwgQWN0aW9uNiBhNiwKLSAgICBBY3Rpb243IGE3KSB7Ci0gIHJldHVybiBE
b0FsbChhMSwgRG9BbGwoYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykpOwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKLSAg
ICB0eXBlbmFtZSBBY3Rpb240LCB0eXBlbmFtZSBBY3Rpb241LCB0eXBlbmFtZSBBY3Rpb242LCB0
eXBlbmFtZSBBY3Rpb243LAotICAgIHR5cGVuYW1lIEFjdGlvbjg+Ci1pbmxpbmUgaW50ZXJuYWw6
OkRvQm90aEFjdGlvbjxBY3Rpb24xLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9uPEFjdGlvbjIsCi0g
ICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24zLCBpbnRlcm5hbDo6RG9Cb3RoQWN0aW9u
PEFjdGlvbjQsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb241LCBpbnRlcm5hbDo6
RG9Cb3RoQWN0aW9uPEFjdGlvbjYsCi0gICAgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb243
LCBBY3Rpb244PiA+ID4gPiA+ID4gPgotRG9BbGwoQWN0aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0
aW9uMyBhMywgQWN0aW9uNCBhNCwgQWN0aW9uNSBhNSwgQWN0aW9uNiBhNiwKLSAgICBBY3Rpb243
IGE3LCBBY3Rpb244IGE4KSB7Ci0gIHJldHVybiBEb0FsbChhMSwgRG9BbGwoYTIsIGEzLCBhNCwg
YTUsIGE2LCBhNywgYTgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEFjdGlvbjEsIHR5cGVu
YW1lIEFjdGlvbjIsIHR5cGVuYW1lIEFjdGlvbjMsCi0gICAgdHlwZW5hbWUgQWN0aW9uNCwgdHlw
ZW5hbWUgQWN0aW9uNSwgdHlwZW5hbWUgQWN0aW9uNiwgdHlwZW5hbWUgQWN0aW9uNywKLSAgICB0
eXBlbmFtZSBBY3Rpb244LCB0eXBlbmFtZSBBY3Rpb245PgotaW5saW5lIGludGVybmFsOjpEb0Jv
dGhBY3Rpb248QWN0aW9uMSwgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb24yLAotICAgIGlu
dGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMywgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rp
b240LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uNSwgaW50ZXJuYWw6OkRvQm90
aEFjdGlvbjxBY3Rpb242LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uNywgaW50
ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb244LAotICAgIEFjdGlvbjk+ID4gPiA+ID4gPiA+ID4K
LURvQWxsKEFjdGlvbjEgYTEsIEFjdGlvbjIgYTIsIEFjdGlvbjMgYTMsIEFjdGlvbjQgYTQsIEFj
dGlvbjUgYTUsIEFjdGlvbjYgYTYsCi0gICAgQWN0aW9uNyBhNywgQWN0aW9uOCBhOCwgQWN0aW9u
OSBhOSkgewotICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKGEyLCBhMywgYTQsIGE1LCBhNiwgYTcs
IGE4LCBhOSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWN0aW9uMSwgdHlwZW5hbWUgQWN0
aW9uMiwgdHlwZW5hbWUgQWN0aW9uMywKLSAgICB0eXBlbmFtZSBBY3Rpb240LCB0eXBlbmFtZSBB
Y3Rpb241LCB0eXBlbmFtZSBBY3Rpb242LCB0eXBlbmFtZSBBY3Rpb243LAotICAgIHR5cGVuYW1l
IEFjdGlvbjgsIHR5cGVuYW1lIEFjdGlvbjksIHR5cGVuYW1lIEFjdGlvbjEwPgotaW5saW5lIGlu
dGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMSwgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rp
b24yLAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uMywgaW50ZXJuYWw6OkRvQm90
aEFjdGlvbjxBY3Rpb240LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248QWN0aW9uNSwgaW50
ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb242LAotICAgIGludGVybmFsOjpEb0JvdGhBY3Rpb248
QWN0aW9uNywgaW50ZXJuYWw6OkRvQm90aEFjdGlvbjxBY3Rpb244LAotICAgIGludGVybmFsOjpE
b0JvdGhBY3Rpb248QWN0aW9uOSwgQWN0aW9uMTA+ID4gPiA+ID4gPiA+ID4gPgotRG9BbGwoQWN0
aW9uMSBhMSwgQWN0aW9uMiBhMiwgQWN0aW9uMyBhMywgQWN0aW9uNCBhNCwgQWN0aW9uNSBhNSwg
QWN0aW9uNiBhNiwKLSAgICBBY3Rpb243IGE3LCBBY3Rpb244IGE4LCBBY3Rpb245IGE5LCBBY3Rp
b24xMCBhMTApIHsKLSAgcmV0dXJuIERvQWxsKGExLCBEb0FsbChhMiwgYTMsIGE0LCBhNSwgYTYs
IGE3LCBhOCwgYTksIGExMCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0vLyBU
aGUgQUNUSU9OKiBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNj
b3BlIHRvCi0vLyBkZWZpbmUgY3VzdG9tIGFjdGlvbnMgZWFzaWx5LiAgVGhlIHN5bnRheDoKLS8v
Ci0vLyAgIEFDVElPTihuYW1lKSB7IHN0YXRlbWVudHM7IH0KLS8vCi0vLyB3aWxsIGRlZmluZSBh
biBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1dGVzIHRoZQotLy8gc3RhdGVt
ZW50cy4gIFRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgc3RhdGVtZW50cyB3aWxsIGJlIHVzZWQg
YXMKLS8vIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGFjdGlvbi4gIEluc2lkZSB0aGUgc3RhdGVt
ZW50cywgeW91IGNhbgotLy8gcmVmZXIgdG8gdGhlIEstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9m
IHRoZSBtb2NrIGZ1bmN0aW9uIGJ5Ci0vLyAnYXJnSycsIGFuZCByZWZlciB0byBpdHMgdHlwZSBi
eSAnYXJnS190eXBlJy4gIEZvciBleGFtcGxlOgotLy8KLS8vICAgQUNUSU9OKEluY3JlbWVudEFy
ZzEpIHsKLS8vICAgICBhcmcxX3R5cGUgdGVtcCA9IGFyZzE7Ci0vLyAgICAgcmV0dXJuICsrKCp0
ZW1wKTsKLS8vICAgfQotLy8KLS8vIGFsbG93cyB5b3UgdG8gd3JpdGUKLS8vCi0vLyAgIC4uLldp
bGxPbmNlKEluY3JlbWVudEFyZzEoKSk7Ci0vLwotLy8gWW91IGNhbiBhbHNvIHJlZmVyIHRvIHRo
ZSBlbnRpcmUgYXJndW1lbnQgdHVwbGUgYW5kIGl0cyB0eXBlIGJ5Ci0vLyAnYXJncycgYW5kICdh
cmdzX3R5cGUnLCBhbmQgcmVmZXIgdG8gdGhlIG1vY2sgZnVuY3Rpb24gdHlwZSBhbmQgaXRzCi0v
LyByZXR1cm4gdHlwZSBieSAnZnVuY3Rpb25fdHlwZScgYW5kICdyZXR1cm5fdHlwZScuCi0vLwot
Ly8gTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR5cGVzIG9mIHRoZSBt
b2NrIGZ1bmN0aW9uCi0vLyBhcmd1bWVudHMuICBIb3dldmVyIHJlc3QgYXNzdXJlZCB0aGF0IHlv
dXIgY29kZSBpcyBzdGlsbCB0eXBlLXNhZmU6Ci0vLyB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJy
b3IgaWYgKmFyZzEgZG9lc24ndCBzdXBwb3J0IHRoZSArKwotLy8gb3BlcmF0b3IsIG9yIGlmIHRo
ZSB0eXBlIG9mICsrKCphcmcxKSBpc24ndCBjb21wYXRpYmxlIHdpdGggdGhlCi0vLyBtb2NrIGZ1
bmN0aW9uJ3MgcmV0dXJuIHR5cGUsIGZvciBleGFtcGxlLgotLy8KLS8vIFNvbWV0aW1lcyB5b3Un
bGwgd2FudCB0byBwYXJhbWV0ZXJpemUgdGhlIGFjdGlvbi4gICBGb3IgdGhhdCB5b3UgY2FuIHVz
ZQotLy8gYW5vdGhlciBtYWNybzoKLS8vCi0vLyAgIEFDVElPTl9QKG5hbWUsIHBhcmFtX25hbWUp
IHsgc3RhdGVtZW50czsgfQotLy8KLS8vIEZvciBleGFtcGxlOgotLy8KLS8vICAgQUNUSU9OX1Ao
QWRkLCBuKSB7IHJldHVybiBhcmcwICsgbjsgfQotLy8KLS8vIHdpbGwgYWxsb3cgeW91IHRvIHdy
aXRlOgotLy8KLS8vICAgLi4uV2lsbE9uY2UoQWRkKDUpKTsKLS8vCi0vLyBOb3RlIHRoYXQgeW91
IGRvbid0IG5lZWQgdG8gcHJvdmlkZSB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCi0vLyBlaXRo
ZXIuICBJZiB5b3UgbmVlZCB0byByZWZlcmVuY2UgdGhlIHR5cGUgb2YgYSBwYXJhbWV0ZXIgbmFt
ZWQKLS8vICdmb28nLCB5b3UgY2FuIHdyaXRlICdmb29fdHlwZScuICBGb3IgZXhhbXBsZSwgaW4g
dGhlIGJvZHkgb2YKLS8vIEFDVElPTl9QKEFkZCwgbikgYWJvdmUsIHlvdSBjYW4gd3JpdGUgJ25f
dHlwZScgdG8gcmVmZXIgdG8gdGhlIHR5cGUKLS8vIG9mICduJy4KLS8vCi0vLyBXZSBhbHNvIHBy
b3ZpZGUgQUNUSU9OX1AyLCBBQ1RJT05fUDMsIC4uLiwgdXAgdG8gQUNUSU9OX1AxMCB0byBzdXBw
b3J0Ci0vLyBtdWx0aS1wYXJhbWV0ZXIgYWN0aW9ucy4KLS8vCi0vLyBGb3IgdGhlIHB1cnBvc2Ug
b2YgdHlwaW5nLCB5b3UgY2FuIHZpZXcKLS8vCi0vLyAgIEFDVElPTl9QayhGb28sIHAxLCAuLi4s
IHBrKSB7IC4uLiB9Ci0vLwotLy8gYXMgc2hvcnRoYW5kIGZvcgotLy8KLS8vICAgdGVtcGxhdGUg
PHR5cGVuYW1lIHAxX3R5cGUsIC4uLiwgdHlwZW5hbWUgcGtfdHlwZT4KLS8vICAgRm9vQWN0aW9u
UGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPiBGb28ocDFfdHlwZSBwMSwgLi4uLCBwa190eXBlIHBr
KSB7IC4uLiB9Ci0vLwotLy8gSW4gcGFydGljdWxhciwgeW91IGNhbiBwcm92aWRlIHRoZSB0ZW1w
bGF0ZSB0eXBlIGFyZ3VtZW50cwotLy8gZXhwbGljaXRseSB3aGVuIGludm9raW5nIEZvbygpLCBh
cyBpbiBGb288bG9uZywgYm9vbD4oNSwgZmFsc2UpOwotLy8gYWx0aG91Z2ggdXN1YWxseSB5b3Ug
Y2FuIHJlbHkgb24gdGhlIGNvbXBpbGVyIHRvIGluZmVyIHRoZSB0eXBlcwotLy8gZm9yIHlvdSBh
dXRvbWF0aWNhbGx5LiAgWW91IGNhbiBhc3NpZ24gdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uCi0v
LyBGb28ocDEsIC4uLiwgcGspIHRvIGEgdmFyaWFibGUgb2YgdHlwZSBGb29BY3Rpb25QazxwMV90
eXBlLCAuLi4sCi0vLyBwa190eXBlPi4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGNvbXBvc2lu
ZyBhY3Rpb25zLgotLy8KLS8vIFlvdSBjYW4gYWxzbyBvdmVybG9hZCBhY3Rpb25zIHdpdGggZGlm
ZmVyZW50IG51bWJlcnMgb2YgcGFyYW1ldGVyczoKLS8vCi0vLyAgIEFDVElPTl9QKFBsdXMsIGEp
IHsgLi4uIH0KLS8vICAgQUNUSU9OX1AyKFBsdXMsIGEsIGIpIHsgLi4uIH0KLS8vCi0vLyBXaGls
ZSBpdCdzIHRlbXB0aW5nIHRvIGFsd2F5cyB1c2UgdGhlIEFDVElPTiogbWFjcm9zIHdoZW4gZGVm
aW5pbmcKLS8vIGEgbmV3IGFjdGlvbiwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxlbWVu
dGluZyBBY3Rpb25JbnRlcmZhY2UKLS8vIG9yIHVzaW5nIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigp
IGluc3RlYWQsIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8KLS8vIHVzZSB0aGUgYWN0aW9uIGEg
bG90LiAgV2hpbGUgdGhlc2UgYXBwcm9hY2hlcyByZXF1aXJlIG1vcmUgd29yaywKLS8vIHRoZXkg
Z2l2ZSB5b3UgbW9yZSBjb250cm9sIG9uIHRoZSB0eXBlcyBvZiB0aGUgbW9jayBmdW5jdGlvbgot
Ly8gYXJndW1lbnRzIGFuZCB0aGUgYWN0aW9uIHBhcmFtZXRlcnMsIHdoaWNoIGluIGdlbmVyYWwg
bGVhZHMgdG8KLS8vIGJldHRlciBjb21waWxlciBlcnJvciBtZXNzYWdlcyB0aGF0IHBheSBvZmYg
aW4gdGhlIGxvbmcgcnVuLiAgVGhleQotLy8gYWxzbyBhbGxvdyBvdmVybG9hZGluZyBhY3Rpb25z
IGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlcyAoYXMgb3Bwb3NlZAotLy8gdG8ganVzdCBiYXNlZCBv
biB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMpLgotLy8KLS8vIENBVkVBVDoKLS8vCi0vLyBBQ1RJ
T04qKCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZS4gIFRoZSByZWFzb24g
aXMKLS8vIHRoYXQgQysrIGRvZXNuJ3QgeWV0IGFsbG93IGZ1bmN0aW9uLWxvY2FsIHR5cGVzIHRv
IGJlIHVzZWQgdG8KLS8vIGluc3RhbnRpYXRlIHRlbXBsYXRlcy4gIFRoZSB1cC1jb21pbmcgQysr
MHggc3RhbmRhcmQgd2lsbCBmaXggdGhpcy4KLS8vIE9uY2UgdGhhdCdzIGRvbmUsIHdlJ2xsIGNv
bnNpZGVyIHN1cHBvcnRpbmcgdXNpbmcgQUNUSU9OKigpIGluc2lkZQotLy8gYSBmdW5jdGlvbi4K
LS8vCi0vLyBNT1JFIElORk9STUFUSU9OOgotLy8KLS8vIFRvIGxlYXJuIG1vcmUgYWJvdXQgdXNp
bmcgdGhlc2UgbWFjcm9zLCBwbGVhc2Ugc2VhcmNoIGZvciAnQUNUSU9OJwotLy8gb24gaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9Db29rQm9vay4KLQotLy8gQW4gaW50
ZXJuYWwgbWFjcm8gbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcgQUNUSU9OKigpLgotI2RlZmluZSBH
TU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1FU19VTlVTRURfXAotICAgIGNvbnN0IGFyZ3Nf
dHlwZSYgYXJncyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXywgXAotICAgIGFyZzBfdHlwZSBhcmcw
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCi0gICAgYXJnMV90eXBlIGFyZzEgR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF8sIFwKLSAgICBhcmcyX3R5cGUgYXJnMiBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXywgXAotICAgIGFyZzNfdHlwZSBhcmczIEdURVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCi0g
ICAgYXJnNF90eXBlIGFyZzQgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8sIFwKLSAgICBhcmc1X3R5
cGUgYXJnNSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXywgXAotICAgIGFyZzZfdHlwZSBhcmc2IEdU
RVNUX0FUVFJJQlVURV9VTlVTRURfLCBcCi0gICAgYXJnN190eXBlIGFyZzcgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF8sIFwKLSAgICBhcmc4X3R5cGUgYXJnOCBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XywgXAotICAgIGFyZzlfdHlwZSBhcmc5IEdURVNUX0FUVFJJQlVURV9VTlVTRURfCi0KLS8vIFNv
bWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFuIGFjdGlvbiBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJh
bWV0ZXJzCi0vLyB0aGF0IGNhbm5vdCBiZSBpbmZlcnJlZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0
ZXJzLiAgQUNUSU9OKCkgYW5kCi0vLyBBQ1RJT05fUCooKSBkb24ndCBzdXBwb3J0IHRoYXQuICBB
Q1RJT05fVEVNUExBVEUoKSByZW1lZGllcyB0aGF0Ci0vLyBhbmQgY2FuIGJlIHZpZXdlZCBhcyBh
biBleHRlbnNpb24gdG8gQUNUSU9OKCkgYW5kIEFDVElPTl9QKigpLgotLy8KLS8vIFRoZSBzeW50
YXg6Ci0vLwotLy8gICBBQ1RJT05fVEVNUExBVEUoQWN0aW9uTmFtZSwKLS8vICAgICAgICAgICAg
ICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5kMSwgbmFtZTEsIC4uLiwga2luZF9tLCBu
YW1lX20pLAotLy8gICAgICAgICAgICAgICAgICAgQU5EX25fVkFMVUVfUEFSQU1TKHAxLCAuLi4s
IHBfbikpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIGRlZmluZXMgYW4gYWN0aW9uIHRlbXBsYXRl
IHRoYXQgdGFrZXMgbSBleHBsaWNpdCB0ZW1wbGF0ZQotLy8gcGFyYW1ldGVycyBhbmQgbiB2YWx1
ZSBwYXJhbWV0ZXJzLiAgbmFtZV9pIGlzIHRoZSBuYW1lIG9mIHRoZSBpLXRoCi0vLyB0ZW1wbGF0
ZSBwYXJhbWV0ZXIsIGFuZCBraW5kX2kgc3BlY2lmaWVzIHdoZXRoZXIgaXQncyBhIHR5cGVuYW1l
LAotLy8gYW4gaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEgdGVtcGxhdGUuICBwX2kgaXMgdGhlIG5h
bWUgb2YgdGhlIGktdGgKLS8vIHZhbHVlIHBhcmFtZXRlci4KLS8vCi0vLyBFeGFtcGxlOgotLy8K
LS8vICAgLy8gRHVwbGljYXRlQXJnPGssIFQ+KG91dHB1dCkgY29udmVydHMgdGhlIGstdGggYXJn
dW1lbnQgb2YgdGhlIG1vY2sKLS8vICAgLy8gZnVuY3Rpb24gdG8gdHlwZSBUIGFuZCBjb3BpZXMg
aXQgdG8gKm91dHB1dC4KLS8vICAgQUNUSU9OX1RFTVBMQVRFKER1cGxpY2F0ZUFyZywKLS8vICAg
ICAgICAgICAgICAgICAgIEhBU18yX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGssIHR5cGVuYW1lLCBU
KSwKLS8vICAgICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0v
LyAgICAgKm91dHB1dCA9IFQoOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykpOwotLy8gICB9Ci0vLyAg
IC4uLgotLy8gICAgIGludCBuOwotLy8gICAgIEVYUEVDVF9DQUxMKG1vY2ssIEZvbyhfLCBfKSkK
LS8vICAgICAgICAgLldpbGxPbmNlKER1cGxpY2F0ZUFyZzwxLCB1bnNpZ25lZCBjaGFyPigmbikp
OwotLy8KLS8vIFRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBhbiBhY3Rpb24gdGVtcGxhdGUsIHdy
aXRlOgotLy8KLS8vICAgQWN0aW9uTmFtZTx0MSwgLi4uLCB0X20+KHYxLCAuLi4sIHZfbikKLS8v
Ci0vLyB3aGVyZSB0aGUgdHMgYXJlIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudHMgYW5kIHRoZSB2cyBh
cmUgdGhlIHZhbHVlCi0vLyBhcmd1bWVudHMuICBUaGUgdmFsdWUgYXJndW1lbnQgdHlwZXMgYXJl
IGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4KLS8vIElmIHlvdSB3YW50IHRvIGV4cGxpY2l0bHkg
c3BlY2lmeSB0aGUgdmFsdWUgYXJndW1lbnQgdHlwZXMsIHlvdSBjYW4KLS8vIHByb3ZpZGUgYWRk
aXRpb25hbCB0ZW1wbGF0ZSBhcmd1bWVudHM6Ci0vLwotLy8gICBBY3Rpb25OYW1lPHQxLCAuLi4s
IHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24pCi0vLwotLy8gd2hlcmUgdV9pIGlzIHRo
ZSBkZXNpcmVkIHR5cGUgb2Ygdl9pLgotLy8KLS8vIEFDVElPTl9URU1QTEFURSBhbmQgQUNUSU9O
L0FDVElPTl9QKiBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0aGUKLS8vIG51bWJlciBvZiB2YWx1ZSBw
YXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIgb2YgdGVtcGxhdGUKLS8vIHBhcmFtZXRl
cnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhlIG1lYW5pbmcgb2YgdGhlIGZvbGxvd2lu
ZwotLy8gaXMgdW5jbGVhcjoKLS8vCi0vLyAgIE92ZXJsb2FkZWRBY3Rpb248aW50LCBib29sPih4
KTsKLS8vCi0vLyBBcmUgd2UgdXNpbmcgYSBzaW5nbGUtdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlv
biB3aGVyZSAnYm9vbCcgcmVmZXJzCi0vLyB0byB0aGUgdHlwZSBvZiB4LCBvciBhcmUgd2UgdXNp
bmcgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbgotLy8gd2hlcmUgdGhlIGNvbXBpbGVy
IGlzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIHg/Ci0vLwotLy8gSW1wbGVtZW50YXRpb24g
bm90ZXM6Ci0vLwotLy8gR01PQ0tfSU5URVJOQUxfKl9IQVNfbV9URU1QTEFURV9QQVJBTVMgYW5k
Ci0vLyBHTU9DS19JTlRFUk5BTF8qX0FORF9uX1ZBTFVFX1BBUkFNUyBhcmUgaW50ZXJuYWwgbWFj
cm9zIGZvcgotLy8gaW1wbGVtZW50aW5nIEFDVElPTl9URU1QTEFURS4gIFRoZSBtYWluIHRyaWNr
IHdlIHVzZSBpcyB0byBjcmVhdGUKLS8vIG5ldyBtYWNybyBpbnZvY2F0aW9ucyB3aGVuIGV4cGFu
ZGluZyBhIG1hY3JvLiAgRm9yIGV4YW1wbGUsIHdlIGhhdmUKLS8vCi0vLyAgICNkZWZpbmUgQUNU
SU9OX1RFTVBMQVRFKG5hbWUsIHRlbXBsYXRlX3BhcmFtcywgdmFsdWVfcGFyYW1zKQotLy8gICAg
ICAgLi4uIEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9wYXJhbXMgLi4uCi0vLwotLy8g
d2hpY2ggY2F1c2VzIEFDVElPTl9URU1QTEFURSguLi4sIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0
eXBlbmFtZSwgVCksIC4uLikKLS8vIHRvIGV4cGFuZCB0bwotLy8KLS8vICAgICAgIC4uLiBHTU9D
S19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCkgLi4uCi0v
LwotLy8gU2luY2UgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfMV9URU1QTEFURV9QQVJBTVMgaXMg
YSBtYWNybywgdGhlCi0vLyBwcmVwcm9jZXNzb3Igd2lsbCBjb250aW51ZSB0byBleHBhbmQgaXQg
dG8KLS8vCi0vLyAgICAgICAuLi4gdHlwZW5hbWUgVCAuLi4KLS8vCi0vLyBUaGlzIHRlY2huaXF1
ZSBjb25mb3JtcyB0byB0aGUgQysrIHN0YW5kYXJkIGFuZCBpcyBwb3J0YWJsZS4gIEl0Ci0vLyBh
bGxvd3MgdXMgdG8gaW1wbGVtZW50IGFjdGlvbiB0ZW1wbGF0ZXMgdXNpbmcgTyhOKSBjb2RlLCB3
aGVyZSBOIGlzCi0vLyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGVtcGxhdGUvdmFsdWUgcGFyYW1l
dGVycyBzdXBwb3J0ZWQuICBXaXRob3V0Ci0vLyB1c2luZyBpdCwgd2UnZCBoYXZlIHRvIGRldm90
ZSBPKE5eMikgYW1vdW50IG9mIGNvZGUgdG8gaW1wbGVtZW50IGFsbAotLy8gY29tYmluYXRpb25z
IG9mIG0gYW5kIG4uCi0KLS8vIERlY2xhcmVzIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgotI2Rl
ZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFt
ZTApIGtpbmQwIG5hbWUwCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzJfVEVNUExB
VEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIFwKLSAgICBuYW1lMSkga2luZDAgbmFtZTAs
IGtpbmQxIG5hbWUxCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzNfVEVNUExBVEVf
UEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5hbWUxLCBcCi0gICAga2luZDIsIG5hbWUyKSBr
aW5kMCBuYW1lMCwga2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyCi0jZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0RFQ0xfSEFTXzRfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5hbWUx
LCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMpIGtpbmQwIG5hbWUwLCBraW5kMSBu
YW1lMSwga2luZDIgbmFtZTIsIFwKLSAgICBraW5kMyBuYW1lMwotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9ERUNMX0hBU181X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBuYW1l
MSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQpIGtpbmQw
IG5hbWUwLCBraW5kMSBuYW1lMSwgXAotICAgIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywga2lu
ZDQgbmFtZTQKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9IQVNfNl9URU1QTEFURV9QQVJB
TVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQz
LCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUpIGtpbmQwIG5hbWUwLCBcCi0gICAg
a2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywga2luZDQgbmFtZTQsIGtpbmQ1
IG5hbWU1Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfSEFTXzdfVEVNUExBVEVfUEFSQU1T
KGtpbmQwLCBuYW1lMCwga2luZDEsIG5hbWUxLCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywg
bmFtZTMsIGtpbmQ0LCBuYW1lNCwga2luZDUsIG5hbWU1LCBraW5kNiwgXAotICAgIG5hbWU2KSBr
aW5kMCBuYW1lMCwga2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywga2luZDQg
bmFtZTQsIFwKLSAgICBraW5kNSBuYW1lNSwga2luZDYgbmFtZTYKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfREVDTF9IQVNfOF9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFt
ZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5k
NSwgbmFtZTUsIGtpbmQ2LCBuYW1lNiwgXAotICAgIGtpbmQ3LCBuYW1lNykga2luZDAgbmFtZTAs
IGtpbmQxIG5hbWUxLCBraW5kMiBuYW1lMiwga2luZDMgbmFtZTMsIFwKLSAgICBraW5kNCBuYW1l
NCwga2luZDUgbmFtZTUsIGtpbmQ2IG5hbWU2LCBraW5kNyBuYW1lNwotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9ERUNMX0hBU185X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwgbmFtZTAsIGtpbmQxLCBu
YW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBraW5kNCwgbmFtZTQsIGtp
bmQ1LCBuYW1lNSwga2luZDYsIG5hbWU2LCBcCi0gICAga2luZDcsIG5hbWU3LCBraW5kOCwgbmFt
ZTgpIGtpbmQwIG5hbWUwLCBraW5kMSBuYW1lMSwga2luZDIgbmFtZTIsIFwKLSAgICBraW5kMyBu
YW1lMywga2luZDQgbmFtZTQsIGtpbmQ1IG5hbWU1LCBraW5kNiBuYW1lNiwga2luZDcgbmFtZTcs
IFwKLSAgICBraW5kOCBuYW1lOAotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xMF9U
RU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAotICAgIG5hbWUxLCBraW5kMiwg
bmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5kNSwgbmFtZTUsIGtpbmQ2LCBc
Ci0gICAgbmFtZTYsIGtpbmQ3LCBuYW1lNywga2luZDgsIG5hbWU4LCBraW5kOSwgbmFtZTkpIGtp
bmQwIG5hbWUwLCBcCi0gICAga2luZDEgbmFtZTEsIGtpbmQyIG5hbWUyLCBraW5kMyBuYW1lMywg
a2luZDQgbmFtZTQsIGtpbmQ1IG5hbWU1LCBcCi0gICAga2luZDYgbmFtZTYsIGtpbmQ3IG5hbWU3
LCBraW5kOCBuYW1lOCwga2luZDkgbmFtZTkKLQotLy8gTGlzdHMgdGhlIHRlbXBsYXRlIHBhcmFt
ZXRlcnMuCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfSEFTXzFfVEVNUExBVEVfUEFSQU1T
KGtpbmQwLCBuYW1lMCkgbmFtZTAKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfMl9U
RU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgXAotICAgIG5hbWUxKSBuYW1lMCwg
bmFtZTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfM19URU1QTEFURV9QQVJBTVMo
a2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIpIG5hbWUwLCBu
YW1lMSwgbmFtZTIKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfNF9URU1QTEFURV9Q
QVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFtZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtp
bmQzLCBuYW1lMykgbmFtZTAsIG5hbWUxLCBuYW1lMiwgbmFtZTMKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfTElTVF9IQVNfNV9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFt
ZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0KSBuYW1l
MCwgbmFtZTEsIG5hbWUyLCBuYW1lMywgXAotICAgIG5hbWU0Ci0jZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0xJU1RfSEFTXzZfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIG5hbWUx
LCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCwga2luZDUs
IG5hbWU1KSBuYW1lMCwgbmFtZTEsIFwKLSAgICBuYW1lMiwgbmFtZTMsIG5hbWU0LCBuYW1lNQot
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0hBU183X1RFTVBMQVRFX1BBUkFNUyhraW5kMCwg
bmFtZTAsIGtpbmQxLCBuYW1lMSwgXAotICAgIGtpbmQyLCBuYW1lMiwga2luZDMsIG5hbWUzLCBr
aW5kNCwgbmFtZTQsIGtpbmQ1LCBuYW1lNSwga2luZDYsIFwKLSAgICBuYW1lNikgbmFtZTAsIG5h
bWUxLCBuYW1lMiwgbmFtZTMsIG5hbWU0LCBuYW1lNSwgbmFtZTYKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfTElTVF9IQVNfOF9URU1QTEFURV9QQVJBTVMoa2luZDAsIG5hbWUwLCBraW5kMSwgbmFt
ZTEsIFwKLSAgICBraW5kMiwgbmFtZTIsIGtpbmQzLCBuYW1lMywga2luZDQsIG5hbWU0LCBraW5k
NSwgbmFtZTUsIGtpbmQ2LCBuYW1lNiwgXAotICAgIGtpbmQ3LCBuYW1lNykgbmFtZTAsIG5hbWUx
LCBuYW1lMiwgbmFtZTMsIG5hbWU0LCBuYW1lNSwgbmFtZTYsIG5hbWU3Ci0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0xJU1RfSEFTXzlfVEVNUExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEs
IG5hbWUxLCBcCi0gICAga2luZDIsIG5hbWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCwg
a2luZDUsIG5hbWU1LCBraW5kNiwgbmFtZTYsIFwKLSAgICBraW5kNywgbmFtZTcsIGtpbmQ4LCBu
YW1lOCkgbmFtZTAsIG5hbWUxLCBuYW1lMiwgbmFtZTMsIG5hbWU0LCBuYW1lNSwgXAotICAgIG5h
bWU2LCBuYW1lNywgbmFtZTgKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNfMTBfVEVN
UExBVEVfUEFSQU1TKGtpbmQwLCBuYW1lMCwga2luZDEsIFwKLSAgICBuYW1lMSwga2luZDIsIG5h
bWUyLCBraW5kMywgbmFtZTMsIGtpbmQ0LCBuYW1lNCwga2luZDUsIG5hbWU1LCBraW5kNiwgXAot
ICAgIG5hbWU2LCBraW5kNywgbmFtZTcsIGtpbmQ4LCBuYW1lOCwga2luZDksIG5hbWU5KSBuYW1l
MCwgbmFtZTEsIG5hbWUyLCBcCi0gICAgbmFtZTMsIG5hbWU0LCBuYW1lNSwgbmFtZTYsIG5hbWU3
LCBuYW1lOCwgbmFtZTkKLQotLy8gRGVjbGFyZXMgdGhlIHR5cGVzIG9mIHZhbHVlIHBhcmFtZXRl
cnMuCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfMF9WQUxVRV9QQVJBTVMo
KQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfQU5EXzFfVkFMVUVfUEFSQU1TKHAw
KSAsIHR5cGVuYW1lIHAwIyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVf
QU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgLCBcCi0gICAgdHlwZW5hbWUgcDAjI190eXBlLCB0
eXBlbmFtZSBwMSMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFX0FORF8z
X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyKSAsIFwKLSAgICB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0RFQ0xfVFlQRV9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMpICwgXAotICAg
IHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5
cGUsIFwKLSAgICB0eXBlbmFtZSBwMyMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVD
TF9UWVBFX0FORF81X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQpICwgXAotICAgIHR5
cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUs
IFwKLSAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZQotI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfQU5EXzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUpICwgXAotICAgIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBl
LCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1l
IHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RF
Q0xfVFlQRV9BTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAg
IHA2KSAsIHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBw
MiMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwg
dHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgdHlwZW5hbWUgcDYjI190eXBlCi0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV9BTkRfOF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMs
IHA0LCBwNSwgXAotICAgIHA2LCBwNykgLCB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAx
IyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgdHlwZW5hbWUgcDMjI190eXBlLCB0
eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHA2
IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xf
VFlQRV9BTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAgIHA2
LCBwNywgcDgpICwgdHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAotICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190
eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVu
YW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFM
X0RFQ0xfVFlQRV9BTkRfMTBfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwK
LSAgICBwNiwgcDcsIHA4LCBwOSkgLCB0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNf
dHlwZSwgXAotICAgIHR5cGVuYW1lIHAyIyNfdHlwZSwgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBl
bmFtZSBwNCMjX3R5cGUsIFwKLSAgICB0eXBlbmFtZSBwNSMjX3R5cGUsIHR5cGVuYW1lIHA2IyNf
dHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCBcCi0gICAgdHlwZW5hbWUgcDgjI190eXBlLCB0eXBl
bmFtZSBwOSMjX3R5cGUKLQotLy8gSW5pdGlhbGl6ZXMgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCi0j
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzBfVkFMVUVfUEFSQU1TKClcCi0gICAgKCkK
LSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfSU5JVF9BTkRfMV9WQUxVRV9QQVJBTVMocDApXAotICAg
IChwMCMjX3R5cGUgZ21vY2tfcDApIDogcDAoZ21vY2tfcDApCi0jZGVmaW5lIEdNT0NLX0lOVEVS
TkFMX0lOSVRfQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSlcCi0gICAgKHAwIyNfdHlwZSBnbW9j
a19wMCwgcDEjI190eXBlIGdtb2NrX3AxKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpCi0j
ZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIp
XAotICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAotICAgICAg
ICBwMiMjX3R5cGUgZ21vY2tfcDIpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdt
b2NrX3AyKQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF80X1ZBTFVFX1BBUkFNUyhw
MCwgcDEsIHAyLCBwMylcCi0gICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2Nr
X3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzKSA6
IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAgcDMo
Z21vY2tfcDMpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5EXzVfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIsIHAzLCBwNClcCi0gICAgKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBl
IGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgcDMjI190eXBlIGdtb2Nr
X3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIFwK
LSAgICAgICAgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KQotI2RlZmlu
ZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF82X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywg
cDQsIHA1KVwKLSAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAy
IyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlw
ZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21vY2tfcDAp
LCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19wMyksIHA0
KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0lOSVRfQU5E
XzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KVwKLSAgICAocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAot
ICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBl
IGdtb2NrX3A1LCBcCi0gICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNikgOiBwMChnbW9ja19wMCks
IHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgIHAzKGdtb2NrX3AzKSwgcDQo
Z21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KQotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9JTklUX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwg
cDcpXAotICAgIChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190
eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdt
b2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKLSAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2
LCBwNyMjX3R5cGUgZ21vY2tfcDcpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIFwKLSAg
ICAgICAgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tf
cDUpLCBwNihnbW9ja19wNiksIFwKLSAgICAgICAgcDcoZ21vY2tfcDcpCi0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0lOSVRfQU5EXzlfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBcCi0gICAgcDcsIHA4KVwKLSAgICAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUg
Z21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICBwMyMjX3R5cGUgZ21vY2tf
cDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAgICAgIHA2
IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBcCi0gICAgICAgIHA4IyNfdHlw
ZSBnbW9ja19wOCkgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBc
Ci0gICAgICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdt
b2NrX3A2KSwgcDcoZ21vY2tfcDcpLCBcCi0gICAgICAgIHA4KGdtb2NrX3A4KQotI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9JTklUX0FORF8xMF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0
LCBwNSwgcDYsIFwKLSAgICBwNywgcDgsIHA5KVwKLSAgICAocDAjI190eXBlIGdtb2NrX3AwLCBw
MSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICBwMyMjX3R5
cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0g
ICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBwOCMjX3R5cGUg
Z21vY2tfcDgsIFwKLSAgICAgICAgcDkjI190eXBlIGdtb2NrX3A5KSA6IHAwKGdtb2NrX3AwKSwg
cDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChn
bW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBwNyhnbW9ja19wNyksIFwKLSAg
ICAgICAgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19wOSkKLQotLy8gRGVjbGFyZXMgdGhlIGZpZWxk
cyBmb3Igc3RvcmluZyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KLSNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfREVGTl9BTkRfMF9WQUxVRV9QQVJBTVMoKQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUZO
X0FORF8xX1ZBTFVFX1BBUkFNUyhwMCkgcDAjI190eXBlIHAwOwotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9ERUZOX0FORF8yX1ZBTFVFX1BBUkFNUyhwMCwgcDEpIHAwIyNfdHlwZSBwMDsgXAotICAg
IHAxIyNfdHlwZSBwMTsKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfM19WQUxVRV9Q
QVJBTVMocDAsIHAxLCBwMikgcDAjI190eXBlIHAwOyBcCi0gICAgcDEjI190eXBlIHAxOyBwMiMj
X3R5cGUgcDI7Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5EXzRfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIsIHAzKSBwMCMjX3R5cGUgcDA7IFwKLSAgICBwMSMjX3R5cGUgcDE7IHAyIyNf
dHlwZSBwMjsgcDMjI190eXBlIHAzOwotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF81
X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgXAotICAgIHA0KSBwMCMjX3R5cGUgcDA7IHAx
IyNfdHlwZSBwMTsgcDIjI190eXBlIHAyOyBwMyMjX3R5cGUgcDM7IHA0IyNfdHlwZSBwNDsKLSNk
ZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRfNl9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMsIHA0LCBcCi0gICAgcDUpIHAwIyNfdHlwZSBwMDsgcDEjI190eXBlIHAxOyBwMiMjX3R5cGUg
cDI7IHAzIyNfdHlwZSBwMzsgcDQjI190eXBlIHA0OyBcCi0gICAgcDUjI190eXBlIHA1OwotI2Rl
ZmluZSBHTU9DS19JTlRFUk5BTF9ERUZOX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBcCi0gICAgcDYpIHAwIyNfdHlwZSBwMDsgcDEjI190eXBlIHAxOyBwMiMjX3R5
cGUgcDI7IHAzIyNfdHlwZSBwMzsgcDQjI190eXBlIHA0OyBcCi0gICAgcDUjI190eXBlIHA1OyBw
NiMjX3R5cGUgcDY7Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFRk5fQU5EXzhfVkFMVUVfUEFS
QU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBcCi0gICAgcDcpIHAwIyNfdHlwZSBwMDsg
cDEjI190eXBlIHAxOyBwMiMjX3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgcDQjI190eXBlIHA0OyBc
Ci0gICAgcDUjI190eXBlIHA1OyBwNiMjX3R5cGUgcDY7IHA3IyNfdHlwZSBwNzsKLSNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfREVGTl9BTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0
LCBwNSwgcDYsIFwKLSAgICBwNywgcDgpIHAwIyNfdHlwZSBwMDsgcDEjI190eXBlIHAxOyBwMiMj
X3R5cGUgcDI7IHAzIyNfdHlwZSBwMzsgXAotICAgIHA0IyNfdHlwZSBwNDsgcDUjI190eXBlIHA1
OyBwNiMjX3R5cGUgcDY7IHA3IyNfdHlwZSBwNzsgcDgjI190eXBlIHA4OwotI2RlZmluZSBHTU9D
S19JTlRFUk5BTF9ERUZOX0FORF8xMF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYsIFwKLSAgICBwNywgcDgsIHA5KSBwMCMjX3R5cGUgcDA7IHAxIyNfdHlwZSBwMTsgcDIj
I190eXBlIHAyOyBwMyMjX3R5cGUgcDM7IFwKLSAgICBwNCMjX3R5cGUgcDQ7IHA1IyNfdHlwZSBw
NTsgcDYjI190eXBlIHA2OyBwNyMjX3R5cGUgcDc7IHA4IyNfdHlwZSBwODsgXAotICAgIHA5IyNf
dHlwZSBwOTsKLQotLy8gTGlzdHMgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCi0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0xJU1RfQU5EXzBfVkFMVUVfUEFSQU1TKCkKLSNkZWZpbmUgR01PQ0tfSU5URVJO
QUxfTElTVF9BTkRfMV9WQUxVRV9QQVJBTVMocDApIHAwCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFM
X0xJU1RfQU5EXzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkgcDAsIHAxCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0xJU1RfQU5EXzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpIHAwLCBwMSwgcDIKLSNk
ZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMpIHAwLCBwMSwgcDIsIHAzCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5EXzVfVkFM
VUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCkgcDAsIHAxLCBcCi0gICAgcDIsIHAzLCBwNAot
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0FORF82X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAy
LCBwMywgcDQsIHA1KSBwMCwgXAotICAgIHAxLCBwMiwgcDMsIHA0LCBwNQotI2RlZmluZSBHTU9D
S19JTlRFUk5BTF9MSVNUX0FORF83X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBcCi0gICAgcDYpIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2Ci0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0xJU1RfQU5EXzhfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
LCBcCi0gICAgcDcpIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNwotI2RlZmluZSBHTU9D
S19JTlRFUk5BTF9MSVNUX0FORF85X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1
LCBwNiwgXAotICAgIHA3LCBwOCkgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOAot
I2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX0FORF8xMF9WQUxVRV9QQVJBTVMocDAsIHAxLCBw
MiwgcDMsIHA0LCBwNSwgcDYsIFwKLSAgICBwNywgcDgsIHA5KSBwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgcDcsIHA4LCBwOQotCi0vLyBMaXN0cyB0aGUgdmFsdWUgcGFyYW1ldGVyIHR5cGVz
LgotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzBfVkFMVUVfUEFSQU1TKCkK
LSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF8xX1ZBTFVFX1BBUkFNUyhwMCkg
LCBwMCMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF8yX1ZBTFVF
X1BBUkFNUyhwMCwgcDEpICwgcDAjI190eXBlLCBcCi0gICAgcDEjI190eXBlCi0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfM19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMikgLCBw
MCMjX3R5cGUsIFwKLSAgICBwMSMjX3R5cGUsIHAyIyNfdHlwZQotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9MSVNUX1RZUEVfQU5EXzRfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzKSAsIFwKLSAg
ICBwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUKLSNkZWZpbmUgR01P
Q0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF81X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywg
cDQpICwgXAotICAgIHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwg
cDQjI190eXBlCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfNl9WQUxVRV9Q
QVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSkgLCBcCi0gICAgcDAjI190eXBlLCBwMSMjX3R5
cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUsIHA1IyNfdHlwZQotI2RlZmluZSBH
TU9DS19JTlRFUk5BTF9MSVNUX1RZUEVfQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUsIFwKLSAgICBwNikgLCBwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBw
MyMjX3R5cGUsIHA0IyNfdHlwZSwgcDUjI190eXBlLCBcCi0gICAgcDYjI190eXBlCi0jZGVmaW5l
IEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRfOF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSwgXAotICAgIHA2LCBwNykgLCBwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190
eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBw
NyMjX3R5cGUKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9UWVBFX0FORF85X1ZBTFVFX1BB
UkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0gICAgcDYsIHA3LCBwOCkgLCBwMCMjX3R5
cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgIHA1
IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZQotI2RlZmluZSBHTU9DS19J
TlRFUk5BTF9MSVNUX1RZUEVfQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBcCi0gICAgcDYsIHA3LCBwOCwgcDkpICwgcDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNf
dHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUsIFwKLSAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZSwg
cDcjI190eXBlLCBwOCMjX3R5cGUsIHA5IyNfdHlwZQotCi0vLyBEZWNsYXJlcyB0aGUgdmFsdWUg
cGFyYW1ldGVycy4KLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRfMF9WQUxVRV9QQVJB
TVMoKQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0FORF8xX1ZBTFVFX1BBUkFNUyhwMCkg
cDAjI190eXBlIHAwCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzJfVkFMVUVfUEFS
QU1TKHAwLCBwMSkgcDAjI190eXBlIHAwLCBcCi0gICAgcDEjI190eXBlIHAxCi0jZGVmaW5lIEdN
T0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzNfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIpIHAwIyNfdHlw
ZSBwMCwgXAotICAgIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0RFQ0xfQU5EXzRfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzKSBwMCMjX3R5cGUg
cDAsIFwKLSAgICBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzCi0jZGVm
aW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzVfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAz
LCBcCi0gICAgcDQpIHAwIyNfdHlwZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAz
IyNfdHlwZSBwMywgcDQjI190eXBlIHA0Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5E
XzZfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgXAotICAgIHA1KSBwMCMjX3R5cGUg
cDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBw
NCwgXAotICAgIHA1IyNfdHlwZSBwNQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0FORF83
X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBcCi0gICAgcDYpIHAwIyNfdHlw
ZSBwMCwgcDEjI190eXBlIHAxLCBwMiMjX3R5cGUgcDIsIHAzIyNfdHlwZSBwMywgcDQjI190eXBl
IHA0LCBcCi0gICAgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYKLSNkZWZpbmUgR01PQ0tfSU5U
RVJOQUxfREVDTF9BTkRfOF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYs
IFwKLSAgICBwNykgcDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMj
I190eXBlIHAzLCBwNCMjX3R5cGUgcDQsIFwKLSAgICBwNSMjX3R5cGUgcDUsIHA2IyNfdHlwZSBw
NiwgcDcjI190eXBlIHA3Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0RFQ0xfQU5EXzlfVkFMVUVf
UEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBcCi0gICAgcDcsIHA4KSBwMCMjX3R5
cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICBw
NCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIHA4
IyNfdHlwZSBwOAotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0FORF8xMF9WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKLSAgICBwNywgcDgsIHA5KSBwMCMjX3R5
cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICBw
NCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIHA4
IyNfdHlwZSBwOCwgXAotICAgIHA5IyNfdHlwZSBwOQotCi0vLyBUaGUgc3VmZml4IG9mIHRoZSBj
bGFzcyB0ZW1wbGF0ZSBpbXBsZW1lbnRpbmcgdGhlIGFjdGlvbiB0ZW1wbGF0ZS4KLSNkZWZpbmUg
R01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXzBfVkFMVUVfUEFSQU1TKCkKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfQ09VTlRfQU5EXzFfVkFMVUVfUEFSQU1TKHAwKSBQCi0jZGVmaW5lIEdNT0NLX0lO
VEVSTkFMX0NPVU5UX0FORF8yX1ZBTFVFX1BBUkFNUyhwMCwgcDEpIFAyCi0jZGVmaW5lIEdNT0NL
X0lOVEVSTkFMX0NPVU5UX0FORF8zX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyKSBQMwotI2RlZmlu
ZSBHTU9DS19JTlRFUk5BTF9DT1VOVF9BTkRfNF9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMp
IFA0Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF81X1ZBTFVFX1BBUkFNUyhwMCwg
cDEsIHAyLCBwMywgcDQpIFA1Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF82X1ZB
TFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSBQNgotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9DT1VOVF9BTkRfN19WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYp
IFA3Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF84X1ZBTFVFX1BBUkFNUyhwMCwg
cDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgXAotICAgIHA3KSBQOAotI2RlZmluZSBHTU9DS19JTlRF
Uk5BTF9DT1VOVF9BTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYs
IFwKLSAgICBwNywgcDgpIFA5Ci0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0NPVU5UX0FORF8xMF9W
QUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIFwKLSAgICBwNywgcDgsIHA5
KSBQMTAKLQotLy8gVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRlbXBsYXRlIGltcGxlbWVudGluZyB0
aGUgYWN0aW9uIHRlbXBsYXRlLgotI2RlZmluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZh
bHVlX3BhcmFtcylcCi0gICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhuYW1lIyNBY3Rpb24sIEdNT0NL
X0lOVEVSTkFMX0NPVU5UXyMjdmFsdWVfcGFyYW1zKQotCi0jZGVmaW5lIEFDVElPTl9URU1QTEFU
RShuYW1lLCB0ZW1wbGF0ZV9wYXJhbXMsIHZhbHVlX3BhcmFtcylcCi0gIHRlbXBsYXRlIDxHTU9D
S19JTlRFUk5BTF9ERUNMXyMjdGVtcGxhdGVfcGFyYW1zXAotICAgICAgICAgICAgR01PQ0tfSU5U
RVJOQUxfREVDTF9UWVBFXyMjdmFsdWVfcGFyYW1zPlwKLSAgY2xhc3MgR01PQ0tfQUNUSU9OX0NM
QVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpIHtcCi0gICBwdWJsaWM6XAotICAgIGV4cGxpY2l0IEdN
T0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKVwKLSAgICAgICAgR01PQ0tfSU5U
RVJOQUxfSU5JVF8jI3ZhbHVlX3BhcmFtcyB7fVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5c
Ci0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFj
ZTxGPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAot
ICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6
UmVzdWx0IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCi0gICAgICAgICAgYXJnc190eXBl
O1wKLSAgICAgIGV4cGxpY2l0IGdtb2NrX0ltcGwgR01PQ0tfSU5URVJOQUxfSU5JVF8jI3ZhbHVl
X3BhcmFtcyB7fVwKLSAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdz
X3R5cGUmIGFyZ3MpIHtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rp
b25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCi0gICAgICAgICAgICBQZXJmb3Jt
KHRoaXMsIGFyZ3MpO1wKLSAgICAgIH1cCi0gICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90
eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgICAg
IHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5
cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwg
dHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAg
ICAgIHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywg
YXJnMF90eXBlIGFyZzAsIFwKLSAgICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFy
ZzIsIGFyZzNfdHlwZSBhcmczLCBhcmc0X3R5cGUgYXJnNCwgXAotICAgICAgICAgIGFyZzVfdHlw
ZSBhcmc1LCBhcmc2X3R5cGUgYXJnNiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBc
Ci0gICAgICAgICAgYXJnOV90eXBlIGFyZzkpIGNvbnN0O1wKLSAgICAgIEdNT0NLX0lOVEVSTkFM
X0RFRk5fIyN2YWx1ZV9wYXJhbXNcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OkFjdGlvbjxGPihcCi0gICAgICAgICAgbmV3IGdtb2NrX0ltcGw8Rj4oR01P
Q0tfSU5URVJOQUxfTElTVF8jI3ZhbHVlX3BhcmFtcykpO1wKLSAgICB9XAotICAgIEdNT0NLX0lO
VEVSTkFMX0RFRk5fIyN2YWx1ZV9wYXJhbXNcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKSk7XAot
ICB9O1wKLSAgdGVtcGxhdGUgPEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1wbGF0ZV9wYXJhbXNc
Ci0gICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9ERUNMX1RZUEVfIyN2YWx1ZV9wYXJhbXM+XAot
ICBpbmxpbmUgR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpPFwKLSAgICAg
IEdNT0NLX0lOVEVSTkFMX0xJU1RfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICBHTU9DS19JTlRF
Uk5BTF9MSVNUX1RZUEVfIyN2YWx1ZV9wYXJhbXM+IG5hbWUoXAotICAgICAgICAgIEdNT0NLX0lO
VEVSTkFMX0RFQ0xfIyN2YWx1ZV9wYXJhbXMpIHtcCi0gICAgcmV0dXJuIEdNT0NLX0FDVElPTl9D
TEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCi0gICAgICAgIEdNT0NLX0lOVEVSTkFMX0xJU1Rf
IyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICAgIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV8jI3Zh
bHVlX3BhcmFtcz4oXAotICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF8jI3ZhbHVlX3Bh
cmFtcyk7XAotICB9XAotICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRl
X3BhcmFtc1wKLSAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3Bh
cmFtcz5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
ZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAg
IHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5
cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBl
bmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gIHR5cGVuYW1l
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAgICBHTU9DS19B
Q1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8XAotICAgICAgICAgIEdNT0NLX0lOVEVS
TkFMX0xJU1RfIyN0ZW1wbGF0ZV9wYXJhbXNcCi0gICAgICAgICAgR01PQ0tfSU5URVJOQUxfTElT
VF9UWVBFXyMjdmFsdWVfcGFyYW1zPjo6Z21vY2tfSW1wbDxGPjo6XAotICAgICAgICAgICAgICBn
bW9ja19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRf
TkFNRVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT04obmFtZSlcCi0gIGNsYXNzIG5h
bWUjI0FjdGlvbiB7XAotICAgcHVibGljOlwKLSAgICBuYW1lIyNBY3Rpb24oKSB7fVwKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRl
ZiBGIGZ1bmN0aW9uX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVc
Ci0gICAgICAgICAgYXJnc190eXBlO1wKLSAgICAgIGdtb2NrX0ltcGwoKSB7fVwKLSAgICAgIHZp
cnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9ybShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCi0gICAg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUs
IGdtb2NrX0ltcGw+OjpcCi0gICAgICAgICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKLSAgICAg
IH1cCi0gICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5
cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwg
dHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgICAgICB0eXBl
bmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBc
Ci0gICAgICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgICAgIHJldHVybl90eXBlIGdtb2Nr
X1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJncywgYXJnMF90eXBlIGFyZzAsIFwKLSAg
ICAgICAgICBhcmcxX3R5cGUgYXJnMSwgYXJnMl90eXBlIGFyZzIsIGFyZzNfdHlwZSBhcmczLCBh
cmc0X3R5cGUgYXJnNCwgXAotICAgICAgICAgIGFyZzVfdHlwZSBhcmc1LCBhcmc2X3R5cGUgYXJn
NiwgYXJnN190eXBlIGFyZzcsIGFyZzhfdHlwZSBhcmc4LCBcCi0gICAgICAgICAgYXJnOV90eXBl
IGFyZzkpIGNvbnN0O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3Bl
cmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVz
dGluZzo6QWN0aW9uPEY+KG5ldyBnbW9ja19JbXBsPEY+KCkpO1wKLSAgICB9XAotICAgcHJpdmF0
ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNBY3Rpb24pO1wKLSAgfTtcCi0g
IGlubGluZSBuYW1lIyNBY3Rpb24gbmFtZSgpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvbigp
O1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUj
I0FjdGlvbjo6Z21vY2tfSW1wbDxGPjo6Z21vY2tfUGVyZm9ybUltcGwoXAotICAgICAgICAgIEdN
T0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUg
QUNUSU9OX1AobmFtZSwgcDApXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlPlwKLSAg
Y2xhc3MgbmFtZSMjQWN0aW9uUCB7XAotICAgcHVibGljOlwKLSAgICBleHBsaWNpdCBuYW1lIyNB
Y3Rpb25QKHAwIyNfdHlwZSBnbW9ja19wMCkgOiBwMChnbW9ja19wMCkge31cCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBm
dW5jdGlvbl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVu
YW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAg
ICAgICAgIGFyZ3NfdHlwZTtcCi0gICAgICBleHBsaWNpdCBnbW9ja19JbXBsKHAwIyNfdHlwZSBn
bW9ja19wMCkgOiBwMChnbW9ja19wMCkge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBl
cmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAg
ICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5
cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwg
dHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBl
bmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1l
IGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBh
cmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJnMV90eXBlIGFy
ZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKLSAg
ICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBh
cmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCi0gICAg
ICBwMCMjX3R5cGUgcDA7XAotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FT
U0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBv
cGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDApKTtcCi0gICAgfVwKLSAgICBw
MCMjX3R5cGUgcDA7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhu
YW1lIyNBY3Rpb25QKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlPlwK
LSAgaW5saW5lIG5hbWUjI0FjdGlvblA8cDAjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCkge1wK
LSAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDxwMCMjX3R5cGU+KHAwKTtcCi0gIH1cCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBwMCMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUg
YXJnMl90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlw
ZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVu
YW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5
X3R5cGU+XAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVz
dWx0XAotICAgICAgbmFtZSMjQWN0aW9uUDxwMCMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9j
a19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFN
RVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDIobmFtZSwgcDAsIHAxKVwKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlPlwKLSAgY2xh
c3MgbmFtZSMjQWN0aW9uUDIge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDIocDAj
I190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEpIDogcDAoZ21vY2tfcDApLCBcCi0g
ICAgICAgIHAxKGdtb2NrX3AxKSB7fVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gICAg
Y2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPiB7
XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAotICAgICAg
dHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0
IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5h
bDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCi0gICAgICAgICAgYXJnc190eXBlO1wKLSAg
ICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEpIDog
cDAoZ21vY2tfcDApLCBcCi0gICAgICAgICAgcDEoZ21vY2tfcDEpIHt9XAotICAgICAgdmlydHVh
bCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAgICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21v
Y2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAotICAgICAgfVwK
LSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwg
dHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBl
bmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1l
IGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAg
ICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICAgICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVy
Zm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAotICAgICAg
ICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMsIGFyZzRf
dHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBh
cmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwKLSAgICAgICAgICBhcmc5X3R5cGUgYXJn
OSkgY29uc3Q7XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAgIHAxIyNfdHlwZSBwMTtcCi0g
ICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtc
Ci0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJhdG9yIDo6dGVzdGluZzo6
QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFjdGlvbjxGPihu
ZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEpKTtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAot
ICAgIHAxIyNfdHlwZSBwMTtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKG5hbWUjI0FjdGlvblAyKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190
eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDI8cDAjI190
eXBlLCBwMSMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBcCi0gICAgICBwMSMjX3R5cGUgcDEp
IHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblAyPHAwIyNfdHlwZSwgcDEjI190eXBlPihwMCwg
cDEpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEj
I190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAg
ICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVf
dHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5h
bWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUj
I0FjdGlvblAyPHAwIyNfdHlwZSwgcDEjI190eXBlPjo6Z21vY2tfSW1wbDxGPjo6Z21vY2tfUGVy
Zm9ybUltcGwoXAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VO
VVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUgQUNUSU9OX1AzKG5hbWUsIHAwLCBwMSwgcDIpXAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1l
IHAyIyNfdHlwZT5cCi0gIGNsYXNzIG5hbWUjI0FjdGlvblAzIHtcCi0gICBwdWJsaWM6XAotICAg
IG5hbWUjI0FjdGlvblAzKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBc
Ci0gICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3Ax
KSwgcDIoZ21vY2tfcDIpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFz
cyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0g
ICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBl
ZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0
dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpG
dW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAotICAgICAg
Z21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAotICAg
ICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwg
cDIoZ21vY2tfcDIpIHt9XAotICAgICAgdmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0
IGFyZ3NfdHlwZSYgYXJncykge1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBl
cmZvcm0odGhpcywgYXJncyk7XAotICAgICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBh
cmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAg
ICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFy
ZzVfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190
eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+
XAotICAgICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBh
cmdzLCBhcmcwX3R5cGUgYXJnMCwgXAotICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5
cGUgYXJnMiwgYXJnM190eXBlIGFyZzMsIGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJn
NV90eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFy
ZzgsIFwKLSAgICAgICAgICBhcmc5X3R5cGUgYXJnOSkgY29uc3Q7XAotICAgICAgcDAjI190eXBl
IHAwO1wKLSAgICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICBw
cml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAg
IH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlv
bjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdt
b2NrX0ltcGw8Rj4ocDAsIHAxLCBwMikpO1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0g
ICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUgcDI7XAotICAgcHJpdmF0ZTpcCi0gICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNBY3Rpb25QMyk7XAotICB9O1wKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMj
X3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDM8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAy
IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKLSAgICAgIHAxIyNfdHlwZSBwMSwgcDIjI190
eXBlIHAyKSB7XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QMzxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlPihwMCwgcDEsIHAyKTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBw
MCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlPlwKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBlLCB0eXBl
bmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJn
M190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAg
dHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlw
ZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5hbWUgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUjI0FjdGlvblAzPHAwIyNf
dHlwZSwgcDEjI190eXBlLCBcCi0gICAgICAgICAgcDIjI190eXBlPjo6Z21vY2tfSW1wbDxGPjo6
Z21vY2tfUGVyZm9ybUltcGwoXAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5E
X05BTUVTX1VOVVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUgQUNUSU9OX1A0KG5hbWUsIHAwLCBwMSwg
cDIsIHAzKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190
eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZT5cCi0g
IGNsYXNzIG5hbWUjI0FjdGlvblA0IHtcCi0gICBwdWJsaWM6XAotICAgIG5hbWUjI0FjdGlvblA0
KHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNf
dHlwZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21v
Y2tfcDEpLCBcCi0gICAgICAgIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpIHt9XAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVz
dGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVm
IEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0
eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwK
LSAgICAgICAgICBhcmdzX3R5cGU7XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tf
cDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAg
cDMjI190eXBlIGdtb2NrX3AzKSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9j
a19wMiksIFwKLSAgICAgICAgICBwMyhnbW9ja19wMykge31cCi0gICAgICB2aXJ0dWFsIHJldHVy
bl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBs
Pjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFt
ZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFy
ZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90
eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAg
IHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1w
bChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJn
MV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFy
ZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlw
ZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25z
dDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAy
IyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICBwcml2YXRlOlwKLSAgICAg
IEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtc
Ci0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDAs
IHAxLCBwMiwgcDMpKTtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlw
ZSBwMTtcCi0gICAgcDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgcHJpdmF0
ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNBY3Rpb25QNCk7XAotICB9O1wK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBl
bmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZT5cCi0gIGlubGluZSBu
YW1lIyNBY3Rpb25QNDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBcCi0gICAgICBw
MyMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwg
XAotICAgICAgcDMjI190eXBlIHAzKSB7XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QNDxwMCMj
X3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGU+KHAwLCBwMSwgXAotICAgICAg
ICBwMiwgcDMpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
ZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAg
IHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5
cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBl
bmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gIHR5cGVuYW1l
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAgICBuYW1lIyNB
Y3Rpb25QNDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBcCi0gICAgICAgICAgcDMj
I190eXBlPjo6Z21vY2tfSW1wbDxGPjo6Z21vY2tfUGVyZm9ybUltcGwoXAotICAgICAgICAgIEdN
T0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUg
QUNUSU9OX1A1KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNClcCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0g
ICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZT5cCi0gIGNsYXNzIG5h
bWUjI0FjdGlvblA1IHtcCi0gICBwdWJsaWM6XAotICAgIG5hbWUjI0FjdGlvblA1KHAwIyNfdHlw
ZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlwZSBnbW9j
a19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBcCi0gICAgICAgIHA0IyNfdHlwZSBnbW9ja19wNCkg
OiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgIHAz
KGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwK
LSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNl
PEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0g
ICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpS
ZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7
XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19w
MSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBw
NCMjX3R5cGUgZ21vY2tfcDQpIDogcDAoZ21vY2tfcDApLCBcCi0gICAgICAgICAgcDEoZ21vY2tf
cDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpIHt9XAotICAgICAg
dmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAg
ICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlw
ZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAotICAg
ICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFf
dHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBl
LCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAgICAgIHR5
cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUs
IFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICAgICAgcmV0dXJuX3R5cGUgZ21v
Y2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAot
ICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMs
IGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBh
cmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwKLSAgICAgICAgICBhcmc5X3R5
cGUgYXJnOSkgY29uc3Q7XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAgIHAxIyNfdHlwZSBw
MTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICAgcDMjI190eXBlIHAzO1wKLSAgICAgIHA0
IyNfdHlwZSBwNDtcCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdO
XyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+IG9wZXJh
dG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rp
bmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPihwMCwgcDEsIHAyLCBwMywgcDQpKTtcCi0g
ICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190
eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICBwcml2
YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblA1KTtcCi0gIH07
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5
cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBw
NCMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDU8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGU+IG5hbWUocDAjI190eXBl
IHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBcCi0gICAgICBw
NCMjX3R5cGUgcDQpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblA1PHAwIyNfdHlwZSwgcDEj
I190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGU+KHAwLCBw
MSwgcDIsIHAzLCBwNCk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0
eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUg
cDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5c
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlw
ZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFy
ZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUs
IHR5cGVuYW1lIGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBhcmc5X3R5cGU+XAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxG
Pjo6UmVzdWx0XAotICAgICAgbmFtZSMjQWN0aW9uUDU8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAy
IyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgICAgcDQjI190eXBlPjo6Z21vY2tfSW1wbDxG
Pjo6Z21vY2tfUGVyZm9ybUltcGwoXAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNf
QU5EX05BTUVTX1VOVVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUgQUNUSU9OX1A2KG5hbWUsIHAwLCBw
MSwgcDIsIHAzLCBwNCwgcDUpXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZT5cCi0gIGNsYXNz
IG5hbWUjI0FjdGlvblA2IHtcCi0gICBwdWJsaWM6XAotICAgIG5hbWUjI0FjdGlvblA2KHAwIyNf
dHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlwZSBn
bW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwKLSAgICAg
ICAgcDUjI190eXBlIGdtb2NrX3A1KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihn
bW9ja19wMiksIFwKLSAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2Nr
X3A1KSB7fVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gICAgY2xhc3MgZ21vY2tfSW1w
bCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTxGPiB7XAotICAgICBwdWJsaWM6
XAotICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFt
ZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0IHJldHVybl90eXBlO1wK
LSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46
OkFyZ3VtZW50VHVwbGVcCi0gICAgICAgICAgYXJnc190eXBlO1wKLSAgICAgIGdtb2NrX0ltcGwo
cDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19w
MiwgXAotICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBc
Ci0gICAgICAgICAgcDUjI190eXBlIGdtb2NrX3A1KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tf
cDEpLCBwMihnbW9ja19wMiksIFwKLSAgICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0
KSwgcDUoZ21vY2tfcDUpIHt9XAotICAgICAgdmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNv
bnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAg
IFBlcmZvcm0odGhpcywgYXJncyk7XAotICAgICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0g
ICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1l
IGFyZzVfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJn
N190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5
cGU+XAotICAgICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBl
JiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAotICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcy
X3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMsIGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAg
YXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBl
IGFyZzgsIFwKLSAgICAgICAgICBhcmc5X3R5cGUgYXJnOSkgY29uc3Q7XAotICAgICAgcDAjI190
eXBlIHAwO1wKLSAgICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAg
ICAgcDMjI190eXBlIHAzO1wKLSAgICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgICBwNSMjX3R5cGUg
cDU7XAotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tf
SW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRl
c3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rp
b248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSkpO1wKLSAgICB9
XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUg
cDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICAgcDQjI190eXBlIHA0O1wKLSAgICBwNSMjX3R5
cGUgcDU7XAotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNB
Y3Rpb25QNik7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGU+XAotICBpbmxpbmUg
bmFtZSMjQWN0aW9uUDY8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBl
LCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNf
dHlwZSBwMSwgcDIjI190eXBlIHAyLCBcCi0gICAgICBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBw
NCwgcDUjI190eXBlIHA1KSB7XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QNjxwMCMjX3R5cGUs
IHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgcDQjI190eXBlLCBw
NSMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUs
IFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFt
ZSBwNSMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUg
YXJnNV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1lIGFyZzdfdHlw
ZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICB0
eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0XAotICAgICAg
bmFtZSMjQWN0aW9uUDY8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBl
LCBwNCMjX3R5cGUsIFwKLSAgICAgICAgICBwNSMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9j
a19QZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFN
RVNfVU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDcobmFtZSwgcDAsIHAxLCBwMiwg
cDMsIHA0LCBwNSwgcDYpXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFt
ZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190
eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlw
ZW5hbWUgcDYjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjQWN0aW9uUDcge1wKLSAgIHB1YmxpYzpc
Ci0gICAgbmFtZSMjQWN0aW9uUDcocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tf
cDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0
IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlw
ZSBnbW9ja19wNikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAotICAgICAgICBwMihn
bW9ja19wMiksIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIFwKLSAg
ICAgICAgcDYoZ21vY2tfcDYpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgICBj
bGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtc
Ci0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQg
cmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFs
OjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5cGU7XAotICAg
ICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIj
I190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5
cGUgZ21vY2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwgXAotICAgICAgICAgIHA2IyNfdHlwZSBn
bW9ja19wNikgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0g
ICAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21v
Y2tfcDYpIHt9XAotICAgICAgdmlydHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3Nf
dHlwZSYgYXJncykge1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlv
bkhlbHBlcjxyZXR1cm5fdHlwZSwgZ21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0o
dGhpcywgYXJncyk7XAotICAgICAgfVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5
cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAgICAg
dHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlw
ZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0
eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICAg
ICAgcmV0dXJuX3R5cGUgZ21vY2tfUGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBh
cmcwX3R5cGUgYXJnMCwgXAotICAgICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJn
MiwgYXJnM190eXBlIGFyZzMsIGFyZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90eXBl
IGFyZzUsIGFyZzZfdHlwZSBhcmc2LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwK
LSAgICAgICAgICBhcmc5X3R5cGUgYXJnOSkgY29uc3Q7XAotICAgICAgcDAjI190eXBlIHAwO1wK
LSAgICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICAgcDMjI190
eXBlIHAzO1wKLSAgICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgICBwNSMjX3R5cGUgcDU7XAotICAg
ICAgcDYjI190eXBlIHA2O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4g
b3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6
dGVzdGluZzo6QWN0aW9uPEY+KG5ldyBnbW9ja19JbXBsPEY+KHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIFwKLSAgICAgICAgICBwNikpO1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAg
cDEjI190eXBlIHAxO1wKLSAgICBwMiMjX3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0g
ICAgcDQjI190eXBlIHA0O1wKLSAgICBwNSMjX3R5cGUgcDU7XAotICAgIHA2IyNfdHlwZSBwNjtc
Ci0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblA3
KTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMj
X3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0
eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUg
cDYjI190eXBlPlwKLSAgaW5saW5lIG5hbWUjI0FjdGlvblA3PHAwIyNfdHlwZSwgcDEjI190eXBl
LCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2
IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgXAotICAgICAgcDIjI190
eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBcCi0gICAg
ICBwNiMjX3R5cGUgcDYpIHtcCi0gICAgcmV0dXJuIG5hbWUjI0FjdGlvblA3PHAwIyNfdHlwZSwg
cDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUsIHA1
IyNfdHlwZSwgcDYjI190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNik7XAotICB9XAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMj
X3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlPlwK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnMF90eXBl
LCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwgXAotICAgICAgdHlwZW5h
bWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAot
ICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFy
ZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAgIG5hbWUjI0FjdGlvblA3
PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBc
Ci0gICAgICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19Q
ZXJmb3JtSW1wbChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNf
VU5VU0VEXykgY29uc3QKLQotI2RlZmluZSBBQ1RJT05fUDgobmFtZSwgcDAsIHAxLCBwMiwgcDMs
IHA0LCBwNSwgcDYsIHA3KVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5h
bWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNf
dHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5
cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjQWN0
aW9uUDgge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDgocDAjI190eXBlIGdtb2Nr
X3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBw
MyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5
cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgXAotICAgICAgICBwNyMjX3R5cGUgZ21v
Y2tfcDcpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAg
ICAgICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19w
NiksIFwKLSAgICAgICAgcDcoZ21vY2tfcDcpIHt9XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
PlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6QWN0aW9uSW50ZXJm
YWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYgZnVuY3Rpb25fdHlwZTtc
Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+
OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6
OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAgICAgICAgICBhcmdzX3R5
cGU7XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9j
a19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3Az
LCBwNCMjX3R5cGUgZ21vY2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwgXAotICAgICAgICAgIHA2
IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3KSA6IHAwKGdtb2NrX3AwKSwgXAot
ICAgICAgICAgIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMyksIHA0KGdt
b2NrX3A0KSwgXAotICAgICAgICAgIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBwNyhnbW9j
a19wNykge31cCi0gICAgICB2aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190
eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9u
SGVscGVyPHJldHVybl90eXBlLCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0
aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlw
ZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0
eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBl
LCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5
cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAg
ICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFy
ZzBfdHlwZSBhcmcwLCBcCi0gICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcy
LCBhcmczX3R5cGUgYXJnMywgYXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUg
YXJnNSwgYXJnNl90eXBlIGFyZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAot
ICAgICAgICAgIGFyZzlfdHlwZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAot
ICAgICAgcDEjI190eXBlIHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5
cGUgcDM7XAotICAgICAgcDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAg
ICBwNiMjX3R5cGUgcDY7XAotICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgcHJpdmF0ZTpcCi0g
ICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25z
dCB7XAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+KG5ldyBnbW9ja19JbXBsPEY+
KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKLSAgICAgICAgICBwNiwgcDcpKTtcCi0gICAgfVwK
LSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAy
O1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUjI190eXBl
IHA1O1wKLSAgICBwNiMjX3R5cGUgcDY7XAotICAgIHA3IyNfdHlwZSBwNztcCi0gICBwcml2YXRl
OlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI0FjdGlvblA4KTtcCi0gIH07XAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVu
YW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMj
X3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYjI190eXBlLCB0
eXBlbmFtZSBwNyMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjQWN0aW9uUDg8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNf
dHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBcCi0gICAgICBw
MSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBwNCMjX3R5cGUgcDQsIHA1
IyNfdHlwZSBwNSwgXAotICAgICAgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcpIHtcCi0gICAg
cmV0dXJuIG5hbWUjI0FjdGlvblA4PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAz
IyNfdHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMj
X3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIFwKLSAgICAgICAgcDYsIHA3KTtcCi0gIH1c
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlw
ZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0
IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUs
IHR5cGVuYW1lIHA3IyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcy
X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0
eXBlbmFtZSBhcmc1X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUg
YXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlw
ZT5cCi0gIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRc
Ci0gICAgICBuYW1lIyNBY3Rpb25QODxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBw
MyMjX3R5cGUsIHA0IyNfdHlwZSwgXAotICAgICAgICAgIHA1IyNfdHlwZSwgcDYjI190eXBlLCBc
Ci0gICAgICAgICAgcDcjI190eXBlPjo6Z21vY2tfSW1wbDxGPjo6Z21vY2tfUGVyZm9ybUltcGwo
XAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVTX1VOVVNFRF8pIGNv
bnN0Ci0KLSNkZWZpbmUgQUNUSU9OX1A5KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
LCBwNywgcDgpXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMj
X3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0
eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUg
cDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZT5cCi0gIGNs
YXNzIG5hbWUjI0FjdGlvblA5IHtcCi0gICBwdWJsaWM6XAotICAgIG5hbWUjI0FjdGlvblA5KHAw
IyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlw
ZSBnbW9ja19wMiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwKLSAg
ICAgICAgcDUjI190eXBlIGdtb2NrX3A1LCBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNfdHlwZSBn
bW9ja19wNywgXAotICAgICAgICBwOCMjX3R5cGUgZ21vY2tfcDgpIDogcDAoZ21vY2tfcDApLCBw
MShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19wMyksIHA0KGdt
b2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiksIHA3KGdtb2NrX3A3KSwgXAotICAg
ICAgICBwOChnbW9ja19wOCkge31cCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICAgIGNs
YXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wK
LSAgICAgcHVibGljOlwKLSAgICAgIHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKLSAgICAgIHR5
cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCBy
ZXR1cm5fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlXAotICAgICAgICAgIGFyZ3NfdHlwZTtcCi0gICAg
ICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMj
X3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlw
ZSBnbW9ja19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAgICAgICAgcDYjI190eXBlIGdt
b2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIFwKLSAgICAgICAgICBwOCMjX3R5cGUgZ21vY2tf
cDgpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAg
ICAgIHAzKGdtb2NrX3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2
KSwgXAotICAgICAgICAgIHA3KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpIHt9XAotICAgICAgdmly
dHVhbCByZXR1cm5fdHlwZSBQZXJmb3JtKGNvbnN0IGFyZ3NfdHlwZSYgYXJncykge1wKLSAgICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkFjdGlvbkhlbHBlcjxyZXR1cm5fdHlwZSwg
Z21vY2tfSW1wbD46OlwKLSAgICAgICAgICAgIFBlcmZvcm0odGhpcywgYXJncyk7XAotICAgICAg
fVwKLSAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlw
ZSwgdHlwZW5hbWUgYXJnMl90eXBlLCBcCi0gICAgICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0
eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1lIGFyZzVfdHlwZSwgXAotICAgICAgICAgIHR5cGVu
YW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBhcmc4X3R5cGUsIFwK
LSAgICAgICAgICB0eXBlbmFtZSBhcmc5X3R5cGU+XAotICAgICAgcmV0dXJuX3R5cGUgZ21vY2tf
UGVyZm9ybUltcGwoY29uc3QgYXJnc190eXBlJiBhcmdzLCBhcmcwX3R5cGUgYXJnMCwgXAotICAg
ICAgICAgIGFyZzFfdHlwZSBhcmcxLCBhcmcyX3R5cGUgYXJnMiwgYXJnM190eXBlIGFyZzMsIGFy
ZzRfdHlwZSBhcmc0LCBcCi0gICAgICAgICAgYXJnNV90eXBlIGFyZzUsIGFyZzZfdHlwZSBhcmc2
LCBhcmc3X3R5cGUgYXJnNywgYXJnOF90eXBlIGFyZzgsIFwKLSAgICAgICAgICBhcmc5X3R5cGUg
YXJnOSkgY29uc3Q7XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAgIHAxIyNfdHlwZSBwMTtc
Ci0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICAgcDMjI190eXBlIHAzO1wKLSAgICAgIHA0IyNf
dHlwZSBwNDtcCi0gICAgICBwNSMjX3R5cGUgcDU7XAotICAgICAgcDYjI190eXBlIHA2O1wKLSAg
ICAgIHA3IyNfdHlwZSBwNztcCi0gICAgICBwOCMjX3R5cGUgcDg7XAotICAgICBwcml2YXRlOlwK
LSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21vY2tfSW1wbCk7XAotICAgIH07XAotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNv
bnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBY3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8
Rj4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAgICAgICAgIHA2LCBwNywgcDgpKTtcCi0g
ICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190
eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUj
I190eXBlIHA1O1wKLSAgICBwNiMjX3R5cGUgcDY7XAotICAgIHA3IyNfdHlwZSBwNztcCi0gICAg
cDgjI190eXBlIHA4O1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
bmFtZSMjQWN0aW9uUDkpO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUs
IHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFt
ZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0g
ICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgj
I190eXBlPlwKLSAgaW5saW5lIG5hbWUjI0FjdGlvblA5PHAwIyNfdHlwZSwgcDEjI190eXBlLCBw
MiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNf
dHlwZSwgcDcjI190eXBlLCBcCi0gICAgICBwOCMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBw
MSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBcCi0gICAgICBwNCMjX3R5
cGUgcDQsIHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIFwKLSAgICAg
IHA4IyNfdHlwZSBwOCkge1wKLSAgICByZXR1cm4gbmFtZSMjQWN0aW9uUDk8cDAjI190eXBlLCBw
MSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUj
I190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlPihwMCwgcDEsIHAyLCBcCi0g
ICAgICAgIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwK
LSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBw
NSMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBl
LCB0eXBlbmFtZSBwOCMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBhcmcwX3R5cGUsIHR5cGVuYW1lIGFyZzFfdHlwZSwgdHlwZW5hbWUgYXJn
Ml90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmczX3R5cGUsIHR5cGVuYW1lIGFyZzRfdHlwZSwg
dHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc2X3R5cGUsIHR5cGVuYW1l
IGFyZzdfdHlwZSwgdHlwZW5hbWUgYXJnOF90eXBlLCBcCi0gICAgICB0eXBlbmFtZSBhcmc5X3R5
cGU+XAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6UmVzdWx0
XAotICAgICAgbmFtZSMjQWN0aW9uUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwg
cDMjI190eXBlLCBwNCMjX3R5cGUsIFwKLSAgICAgICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZSwg
cDcjI190eXBlLCBcCi0gICAgICAgICAgcDgjI190eXBlPjo6Z21vY2tfSW1wbDxGPjo6Z21vY2tf
UGVyZm9ybUltcGwoXAotICAgICAgICAgIEdNT0NLX0FDVElPTl9BUkdfVFlQRVNfQU5EX05BTUVT
X1VOVVNFRF8pIGNvbnN0Ci0KLSNkZWZpbmUgQUNUSU9OX1AxMChuYW1lLCBwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSlcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBl
bmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUg
cDgjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNB
Y3Rpb25QMTAge1wKLSAgIHB1YmxpYzpcCi0gICAgbmFtZSMjQWN0aW9uUDEwKHAwIyNfdHlwZSBn
bW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlwZSBnbW9ja19w
MiwgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIFwKLSAgICAgICAgcDUj
I190eXBlIGdtb2NrX3A1LCBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNfdHlwZSBnbW9ja19wNywg
XAotICAgICAgICBwOCMjX3R5cGUgZ21vY2tfcDgsIHA5IyNfdHlwZSBnbW9ja19wOSkgOiBwMChn
bW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAotICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2Nr
X3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgXAotICAgICAg
ICBwNyhnbW9ja19wNyksIHA4KGdtb2NrX3A4KSwgcDkoZ21vY2tfcDkpIHt9XAotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBGPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGlu
Zzo6QWN0aW9uSW50ZXJmYWNlPEY+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICB0eXBlZGVmIEYg
ZnVuY3Rpb25fdHlwZTtcCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHQgcmV0dXJuX3R5cGU7XAotICAgICAgdHlwZWRlZiB0eXBl
bmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZVwKLSAg
ICAgICAgICBhcmdzX3R5cGU7XAotICAgICAgZ21vY2tfSW1wbChwMCMjX3R5cGUgZ21vY2tfcDAs
IHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2NrX3AyLCBcCi0gICAgICAgICAgcDMj
I190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQsIHA1IyNfdHlwZSBnbW9ja19wNSwg
XAotICAgICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcjI190eXBlIGdtb2NrX3A3LCBwOCMj
X3R5cGUgZ21vY2tfcDgsIFwKLSAgICAgICAgICBwOSMjX3R5cGUgZ21vY2tfcDkpIDogcDAoZ21v
Y2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICAgIHAzKGdtb2Nr
X3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgXAotICAgICAg
ICAgIHA3KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19wOSkge31cCi0gICAgICB2
aXJ0dWFsIHJldHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAg
ICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBl
LCBnbW9ja19JbXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAg
ICB9XAotICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlwZSwgdHlwZW5hbWUgYXJnMV90
eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgICAgICB0eXBlbmFtZSBhcmczX3R5cGUs
IHR5cGVuYW1lIGFyZzRfdHlwZSwgdHlwZW5hbWUgYXJnNV90eXBlLCBcCi0gICAgICAgICAgdHlw
ZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwg
XAotICAgICAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9j
a19QZXJmb3JtSW1wbChjb25zdCBhcmdzX3R5cGUmIGFyZ3MsIGFyZzBfdHlwZSBhcmcwLCBcCi0g
ICAgICAgICAgYXJnMV90eXBlIGFyZzEsIGFyZzJfdHlwZSBhcmcyLCBhcmczX3R5cGUgYXJnMywg
YXJnNF90eXBlIGFyZzQsIFwKLSAgICAgICAgICBhcmc1X3R5cGUgYXJnNSwgYXJnNl90eXBlIGFy
ZzYsIGFyZzdfdHlwZSBhcmc3LCBhcmc4X3R5cGUgYXJnOCwgXAotICAgICAgICAgIGFyZzlfdHlw
ZSBhcmc5KSBjb25zdDtcCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBlIHAx
O1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAgcDQj
I190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgICBwNiMjX3R5cGUgcDY7XAot
ICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgIHA4IyNfdHlwZSBwODtcCi0gICAgICBwOSMjX3R5
cGUgcDk7XAotICAgICBwcml2YXRlOlwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21v
Y2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGPiBvcGVyYXRvciA6
OnRlc3Rpbmc6OkFjdGlvbjxGPigpIGNvbnN0IHtcCi0gICAgICByZXR1cm4gOjp0ZXN0aW5nOjpB
Y3Rpb248Rj4obmV3IGdtb2NrX0ltcGw8Rj4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAg
ICAgICAgIHA2LCBwNywgcDgsIHA5KSk7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAg
ICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wK
LSAgICBwNCMjX3R5cGUgcDQ7XAotICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgcDYjI190eXBlIHA2
O1wKLSAgICBwNyMjX3R5cGUgcDc7XAotICAgIHA4IyNfdHlwZSBwODtcCi0gICAgcDkjI190eXBl
IHA5O1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjQWN0
aW9uUDEwKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFt
ZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190
eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlw
ZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZSwg
XAotICAgICAgdHlwZW5hbWUgcDkjI190eXBlPlwKLSAgaW5saW5lIG5hbWUjI0FjdGlvblAxMDxw
MCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0IyNf
dHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlLCBcCi0gICAg
ICBwOSMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBw
MiwgcDMjI190eXBlIHAzLCBcCi0gICAgICBwNCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgcDYj
I190eXBlIHA2LCBwNyMjX3R5cGUgcDcsIHA4IyNfdHlwZSBwOCwgXAotICAgICAgcDkjI190eXBl
IHA5KSB7XAotICAgIHJldHVybiBuYW1lIyNBY3Rpb25QMTA8cDAjI190eXBlLCBwMSMjX3R5cGUs
IHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBw
NiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlLCBwOSMjX3R5cGU+KHAwLCBcCi0gICAgICAg
IHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDkpO1wKLSAgfVwKLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5
cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBl
bmFtZSBwNSMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcj
I190eXBlLCB0eXBlbmFtZSBwOCMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA5IyNfdHlwZT5c
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZzBfdHlw
ZSwgdHlwZW5hbWUgYXJnMV90eXBlLCB0eXBlbmFtZSBhcmcyX3R5cGUsIFwKLSAgICAgIHR5cGVu
YW1lIGFyZzNfdHlwZSwgdHlwZW5hbWUgYXJnNF90eXBlLCB0eXBlbmFtZSBhcmc1X3R5cGUsIFwK
LSAgICAgIHR5cGVuYW1lIGFyZzZfdHlwZSwgdHlwZW5hbWUgYXJnN190eXBlLCB0eXBlbmFtZSBh
cmc4X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIGFyZzlfdHlwZT5cCi0gIHR5cGVuYW1lIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpSZXN1bHRcCi0gICAgICBuYW1lIyNBY3Rpb25Q
MTA8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUs
IFwKLSAgICAgICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBwOCMjX3R5cGUs
IFwKLSAgICAgICAgICBwOSMjX3R5cGU+OjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1w
bChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykg
Y29uc3QKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0KLS8vIFRoZSBBQ1RJT04qKCkgbWFjcm9z
IHRyaWdnZXIgd2FybmluZyBDNDEwMCAodW5yZWZlcmVuY2VkIGZvcm1hbAotLy8gcGFyYW1ldGVy
KSBpbiBNU1ZDIHdpdGggLVc0LiAgVW5mb3J0dW5hdGVseSB0aGV5IGNhbm5vdCBiZSBmaXhlZCBp
bgotLy8gdGhlIG1hY3JvIGRlZmluaXRpb24sIGFzIHRoZSB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVk
IHdoZW4gdGhlIG1hY3JvCi0vLyBpcyBleHBhbmRlZCBhbmQgbWFjcm8gZXhwYW5zaW9uIGNhbm5v
dCBjb250YWluICNwcmFnbWEuICBUaGVyZWZvcmUKLS8vIHdlIHN1cHByZXNzIHRoZW0gaGVyZS4K
LSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYKLQotLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIEludm9r
ZUFyZ3VtZW50PE4+KCkuCi0vLwotLy8gVGhlIEludm9rZUFyZ3VtZW50PE4+KGExLCBhMiwgLi4u
LCBhX2spIGFjdGlvbiBpbnZva2VzIHRoZSBOLXRoCi0vLyAoMC1iYXNlZCkgYXJndW1lbnQsIHdo
aWNoIG11c3QgYmUgYSBrLWFyeSBjYWxsYWJsZSwgb2YgdGhlIG1vY2sKLS8vIGZ1bmN0aW9uLCB3
aXRoIGFyZ3VtZW50cyBhMSwgYTIsIC4uLiwgYV9rLgotLy8KLS8vIE5vdGVzOgotLy8KLS8vICAg
MS4gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGJ5IHZhbHVlIGJ5IGRlZmF1bHQuICBJZiB5b3Ug
bmVlZCB0bwotLy8gICBwYXNzIGFuIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSwgd3JhcCBpdCBpbnNp
ZGUgQnlSZWYoKS4gIEZvcgotLy8gICBleGFtcGxlLAotLy8KLS8vICAgICBJbnZva2VBcmd1bWVu
dDwxPig1LCBzdHJpbmcoIkhlbGxvIiksIEJ5UmVmKGZvbykpCi0vLwotLy8gICBwYXNzZXMgNSBh
bmQgc3RyaW5nKCJIZWxsbyIpIGJ5IHZhbHVlLCBhbmQgcGFzc2VzIGZvbyBieQotLy8gICByZWZl
cmVuY2UuCi0vLwotLy8gICAyLiBJZiB0aGUgY2FsbGFibGUgdGFrZXMgYW4gYXJndW1lbnQgYnkg
cmVmZXJlbmNlIGJ1dCBCeVJlZigpIGlzCi0vLyAgIG5vdCB1c2VkLCBpdCB3aWxsIHJlY2VpdmUg
dGhlIHJlZmVyZW5jZSB0byBhIGNvcHkgb2YgdGhlIHZhbHVlLAotLy8gICBpbnN0ZWFkIG9mIHRo
ZSBvcmlnaW5hbCB2YWx1ZS4gIEZvciBleGFtcGxlLCB3aGVuIHRoZSAwLXRoCi0vLyAgIGFyZ3Vt
ZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRha2VzIGEgY29uc3Qgc3RyaW5nJiwgdGhlIGFjdGlv
bgotLy8KLS8vICAgICBJbnZva2VBcmd1bWVudDwwPihzdHJpbmcoIkhlbGxvIikpCi0vLwotLy8g
ICBtYWtlcyBhIGNvcHkgb2YgdGhlIHRlbXBvcmFyeSBzdHJpbmcoIkhlbGxvIikgb2JqZWN0IGFu
ZCBwYXNzZXMgYQotLy8gICByZWZlcmVuY2Ugb2YgdGhlIGNvcHksIGluc3RlYWQgb2YgdGhlIG9y
aWdpbmFsIHRlbXBvcmFyeSBvYmplY3QsCi0vLyAgIHRvIHRoZSBjYWxsYWJsZS4gIFRoaXMgbWFr
ZXMgaXQgZWFzeSBmb3IgYSB1c2VyIHRvIGRlZmluZSBhbgotLy8gICBJbnZva2VBcmd1bWVudCBh
Y3Rpb24gZnJvbSB0ZW1wb3JhcnkgdmFsdWVzIGFuZCBoYXZlIGl0IHBlcmZvcm1lZAotLy8gICBs
YXRlci4KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVzcGFjZSBpbnZva2VfYXJndW1lbnQg
ewotCi0vLyBBcHBlYXJzIGluIEludm9rZUFyZ3VtZW50QWRsJ3MgYXJndW1lbnQgbGlzdCB0byBo
ZWxwIGF2b2lkCi0vLyBhY2NpZGVudGFsIGNhbGxzIHRvIHVzZXIgZnVuY3Rpb25zIG9mIHRoZSBz
YW1lIG5hbWUuCi1zdHJ1Y3QgQWRsVGFnIHt9OwotCi0vLyBJbnZva2VBcmd1bWVudEFkbCAtIGEg
aGVscGVyIGZvciBJbnZva2VBcmd1bWVudC4KLS8vIFRoZSBiYXNpYyBvdmVybG9hZHMgYXJlIHBy
b3ZpZGVkIGhlcmUgZm9yIGdlbmVyaWMgZnVuY3RvcnMuCi0vLyBPdmVybG9hZHMgZm9yIG90aGVy
IGN1c3RvbS1jYWxsYWJsZXMgYXJlIHByb3ZpZGVkIGluIHRoZQotLy8gaW50ZXJuYWwvY3VzdG9t
L2NhbGxiYWNrLWFjdGlvbnMuaCBoZWFkZXIuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBGPgotUiBJbnZva2VBcmd1bWVudEFkbChBZGxUYWcsIEYgZikgewotICByZXR1cm4gZigp
OwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEExPgotUiBJ
bnZva2VBcmd1bWVudEFkbChBZGxUYWcsIEYgZiwgQTEgYTEpIHsKLSAgcmV0dXJuIGYoYTEpOwot
fQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEExLCB0eXBlbmFt
ZSBBMj4KLVIgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMikgewot
ICByZXR1cm4gZihhMSwgYTIpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYs
IHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+Ci1SIEludm9rZUFyZ3VtZW50
QWRsKEFkbFRhZywgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzKSB7Ci0gIHJldHVybiBmKGExLCBh
MiwgYTMpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5hbWUgQTQ+Ci1SIEludm9rZUFy
Z3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCkgewotICBy
ZXR1cm4gZihhMSwgYTIsIGEzLCBhNCk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgRiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBlbmFt
ZSBBNCwgdHlwZW5hbWUgQTU+Ci1SIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBh
MSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUpIHsKLSAgcmV0dXJuIGYoYTEsIGEyLCBhMywg
YTQsIGE1KTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBB
NSwgdHlwZW5hbWUgQTY+Ci1SIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBhMSwg
QTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2KSB7Ci0gIHJldHVybiBmKGExLCBhMiwg
YTMsIGE0LCBhNSwgYTYpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEYsIHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5hbWUgQTQsIHR5
cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+Ci1SIEludm9rZUFyZ3VtZW50QWRs
KEFkbFRhZywgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LAot
ICAgIEE3IGE3KSB7Ci0gIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLX0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUg
QTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwgdHlwZW5hbWUg
QTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOD4KLVIgSW52b2tlQXJndW1lbnRBZGwoQWRsVGFn
LCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYgYTYsCi0gICAgQTcg
YTcsIEE4IGE4KSB7Ci0gIHJldHVybiBmKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7
Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVu
YW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsCi0gICAgdHlwZW5hbWUgQTk+Ci1SIElu
dm9rZUFyZ3VtZW50QWRsKEFkbFRhZywgRiBmLCBBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwg
QTUgYTUsIEE2IGE2LAotICAgIEE3IGE3LCBBOCBhOCwgQTkgYTkpIHsKLSAgcmV0dXJuIGYoYTEs
IGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
UiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAg
ICB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlw
ZW5hbWUgQTgsCi0gICAgdHlwZW5hbWUgQTksIHR5cGVuYW1lIEExMD4KLVIgSW52b2tlQXJndW1l
bnRBZGwoQWRsVGFnLCBGIGYsIEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwgQTYg
YTYsCi0gICAgQTcgYTcsIEE4IGE4LCBBOSBhOSwgQTEwIGExMCkgewotICByZXR1cm4gZihhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTApOwotfQotfSAgLy8gbmFtZXNwYWNl
IGludm9rZV9hcmd1bWVudAotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLUFDVElPTl9URU1Q
TEFURShJbnZva2VBcmd1bWVudCwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJB
TVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJBTVMoKSkgewotICB1
c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFkbDsKLSAgcmV0
dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVybmFsOjppbnZv
a2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykpOwot
fQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAgICAgSEFT
XzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVf
UEFSQU1TKHAwKSkgewotICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VB
cmd1bWVudEFkbDsKLSAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAg
ICAgIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5n
OjpnZXQ8az4oYXJncyksIHAwKTsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKEludm9rZUFyZ3VtZW50
LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGspLAotICAgICAg
ICAgICAgICAgIEFORF8yX1ZBTFVFX1BBUkFNUyhwMCwgcDEpKSB7Ci0gIHVzaW5nIGludGVybmFs
OjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICByZXR1cm4gSW52b2tlQXJn
dW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6
QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAsIHAxKTsKLX0KLQot
QUNUSU9OX1RFTVBMQVRFKEludm9rZUFyZ3VtZW50LAotICAgICAgICAgICAgICAgIEhBU18xX1RF
TVBMQVRFX1BBUkFNUyhpbnQsIGspLAotICAgICAgICAgICAgICAgIEFORF8zX1ZBTFVFX1BBUkFN
UyhwMCwgcDEsIHAyKSkgewotICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZv
a2VBcmd1bWVudEFkbDsKLSAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigK
LSAgICAgIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0
aW5nOjpnZXQ8az4oYXJncyksIHAwLCBwMSwgcDIpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52
b2tlQXJndW1lbnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwg
ayksCi0gICAgICAgICAgICAgICAgQU5EXzRfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzKSkg
ewotICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFkbDsK
LSAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVybmFs
OjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJn
cyksIHAwLCBwMSwgcDIsIHAzKTsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKEludm9rZUFyZ3VtZW50
LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGspLAotICAgICAg
ICAgICAgICAgIEFORF81X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQpKSB7Ci0gIHVz
aW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICByZXR1
cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omludm9r
ZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAs
IHAxLCBwMiwgcDMsIHA0KTsKLX0KLQotQUNUSU9OX1RFTVBMQVRFKEludm9rZUFyZ3VtZW50LAot
ICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGspLAotICAgICAgICAg
ICAgICAgIEFORF82X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1KSkgewotICB1
c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFkbDsKLSAgcmV0
dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVybmFsOjppbnZv
a2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncyksIHAw
LCBwMSwgcDIsIHAzLCBwNCwgcDUpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tlQXJndW1l
bnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAg
ICAgICAgICAgICAgQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
KSkgewotICB1c2luZyBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFk
bDsKLSAgcmV0dXJuIEludm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVy
bmFsOjppbnZva2VfYXJndW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4o
YXJncyksIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KTsKLX0KLQotQUNUSU9OX1RFTVBMQVRF
KEludm9rZUFyZ3VtZW50LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhp
bnQsIGspLAotICAgICAgICAgICAgICAgIEFORF84X1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBw
MywgcDQsIHA1LCBwNiwgcDcpKSB7Ci0gIHVzaW5nIGludGVybmFsOjppbnZva2VfYXJndW1lbnQ6
Okludm9rZUFyZ3VtZW50QWRsOwotICByZXR1cm4gSW52b2tlQXJndW1lbnRBZGw8cmV0dXJuX3R5
cGU+KAotICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRsVGFnKCksCi0gICAgICA6
OnRlc3Rpbmc6OmdldDxrPihhcmdzKSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3KTsK
LX0KLQotQUNUSU9OX1RFTVBMQVRFKEludm9rZUFyZ3VtZW50LAotICAgICAgICAgICAgICAgIEhB
U18xX1RFTVBMQVRFX1BBUkFNUyhpbnQsIGspLAotICAgICAgICAgICAgICAgIEFORF85X1ZBTFVF
X1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4KSkgewotICB1c2luZyBp
bnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpJbnZva2VBcmd1bWVudEFkbDsKLSAgcmV0dXJuIElu
dm9rZUFyZ3VtZW50QWRsPHJldHVybl90eXBlPigKLSAgICAgIGludGVybmFsOjppbnZva2VfYXJn
dW1lbnQ6OkFkbFRhZygpLAotICAgICAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncyksIHAwLCBwMSwg
cDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoSW52b2tl
QXJndW1lbnQsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayks
Ci0gICAgICAgICAgICAgICAgQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQs
IHA1LCBwNiwgcDcsIHA4LCBwOSkpIHsKLSAgdXNpbmcgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVu
dDo6SW52b2tlQXJndW1lbnRBZGw7Ci0gIHJldHVybiBJbnZva2VBcmd1bWVudEFkbDxyZXR1cm5f
dHlwZT4oCi0gICAgICBpbnRlcm5hbDo6aW52b2tlX2FyZ3VtZW50OjpBZGxUYWcoKSwKLSAgICAg
IDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcs
IHA4LCBwOSk7Ci19Ci0KLS8vIFZhcmlvdXMgb3ZlcmxvYWRzIGZvciBSZXR1cm5OZXc8VD4oKS4K
LS8vCi0vLyBUaGUgUmV0dXJuTmV3PFQ+KGExLCBhMiwgLi4uLCBhX2spIGFjdGlvbiByZXR1cm5z
IGEgcG9pbnRlciB0byBhIG5ldwotLy8gaW5zdGFuY2Ugb2YgdHlwZSBULCBjb25zdHJ1Y3RlZCBv
biB0aGUgaGVhcCB3aXRoIGNvbnN0cnVjdG9yIGFyZ3VtZW50cwotLy8gYTEsIGEyLCAuLi4sIGFu
ZCBhX2suIFRoZSBjYWxsZXIgYXNzdW1lcyBvd25lcnNoaXAgb2YgdGhlIHJldHVybmVkIHZhbHVl
LgotQUNUSU9OX1RFTVBMQVRFKFJldHVybk5ldywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1Q
TEFURV9QQVJBTVModHlwZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BB
UkFNUygpKSB7Ci0gIHJldHVybiBuZXcgVCgpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJu
TmV3LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCks
Ci0gICAgICAgICAgICAgICAgQU5EXzFfVkFMVUVfUEFSQU1TKHAwKSkgewotICByZXR1cm4gbmV3
IFQocDApOwotfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAgICAg
IEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5E
XzJfVkFMVUVfUEFSQU1TKHAwLCBwMSkpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBwMSk7Ci19Ci0K
LUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExB
VEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfM19WQUxVRV9QQVJB
TVMocDAsIHAxLCBwMikpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBwMSwgcDIpOwotfQotCi1BQ1RJ
T05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BB
UkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzRfVkFMVUVfUEFSQU1TKHAw
LCBwMSwgcDIsIHAzKSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMpOwotfQotCi1B
Q1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRF
X1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzVfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIsIHAzLCBwNCkpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBwMSwgcDIsIHAzLCBw
NCk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5OZXcsCi0gICAgICAgICAgICAgICAgSEFT
XzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRfNl9W
QUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSkpIHsKLSAgcmV0dXJuIG5ldyBUKHAw
LCBwMSwgcDIsIHAzLCBwNCwgcDUpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAot
ICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAg
ICAgICAgICAgICAgQU5EXzdfVkFMVUVfUEFSQU1TKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
KSkgewotICByZXR1cm4gbmV3IFQocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpOwotfQotCi1B
Q1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRF
X1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAgQU5EXzhfVkFMVUVfUEFSQU1T
KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNykpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBw
MSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNyk7Ci19Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5O
ZXcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwK
LSAgICAgICAgICAgICAgICBBTkRfOV9WQUxVRV9QQVJBTVMocDAsIHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYsIHA3LCBwOCkpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBwNywgcDgpOwotfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAg
ICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAg
ICAgQU5EXzEwX1ZBTFVFX1BBUkFNUyhwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4
LCBwOSkpIHsKLSAgcmV0dXJuIG5ldyBUKHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywg
cDgsIHA5KTsKLX0KLQotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNl
bmRpZgotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0vLyBJbmNsdWRlIGFueSBjdXN0b20g
YWN0aW9ucyBhZGRlZCBieSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgotLy8gV2UgbXVzdCBpbmNs
dWRlIHRoaXMgaGVhZGVyIGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhlCi0v
LyBkZWNsYXJhdGlvbnMgZnJvbSB0aGlzIGZpbGUuCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwv
Y3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgiCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5D
TFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1bXAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZkOWY5ZDU1MWIxLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLnB1
bXAKKysrIC9kZXYvbnVsbApAQCAtMSw3OTQgKzAsMCBAQAotJCQgLSotIG1vZGU6IGMrKzsgLSot
Ci0kJCBUaGlzIGlzIGEgUHVtcCBzb3VyY2UgZmlsZS4gIFBsZWFzZSB1c2UgUHVtcCB0byBjb252
ZXJ0IGl0IHRvCi0kJCBnbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oLgotJCQKLSR2YXIgbiA9IDEw
ICAkJCBUaGUgbWF4aW11bSBhcml0eSB3ZSBzdXBwb3J0LgotJCR9fSBUaGlzIG1ldGEgY29tbWVu
dCBmaXhlcyBhdXRvLWluZGVudGF0aW9uIGluIGVkaXRvcnMuCi0vLyBDb3B5cmlnaHQgMjAwNywg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAo
WmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5n
IEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBjb21t
b25seSB1c2VkIHZhcmlhZGljIGFjdGlvbnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NL
X0dNT0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rp
b25zLmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotCi1uYW1lc3Bh
Y2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBJbnZva2VIZWxwZXI8Rj4g
a25vd3MgaG93IHRvIHVucGFjayBhbiBOLXR1cGxlIGFuZCBpbnZva2UgYW4gTi1hcnkKLS8vIGZ1
bmN0aW9uIG9yIG1ldGhvZCB3aXRoIHRoZSB1bnBhY2tlZCB2YWx1ZXMsIHdoZXJlIEYgaXMgYSBm
dW5jdGlvbgotLy8gdHlwZSB0aGF0IHRha2VzIE4gYXJndW1lbnRzLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZT4KLWNsYXNzIEludm9rZUhlbHBlcjsK
LQotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSR2YXIgdHlwZXMg
PSBbWyRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV1dXQotJHZhciBhcyA9IFtbJGZvciBqLCBbW0Ek
al1dXV0KLSR2YXIgYXJncyA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWyBhcmdzXV1dXQotJHZh
ciBnZXRzID0gW1skZm9yIGosIFtbZ2V0PCQoaiAtIDEpPihhcmdzKV1dXV0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSJHR5cGVzPgotY2xhc3MgSW52b2tlSGVscGVyPFIsIDo6dGVzdGluZzo6dHVwbGU8
JGFzPiA+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgc3Rh
dGljIFIgSW52b2tlKEZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPCRh
cz4mJGFyZ3MpIHsKLSAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCRnZXRzKTsKLSAgfQotCi0g
IHRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotICBzdGF0aWMgUiBJ
bnZva2VNZXRob2QoQ2xhc3MqIG9ial9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNZXRo
b2RQdHIgbWV0aG9kX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVzdGlu
Zzo6dHVwbGU8JGFzPiYkYXJncykgewotICAgICAgICAgICByZXR1cm4gKG9ial9wdHItPiptZXRo
b2RfcHRyKSgkZ2V0cyk7Ci0gIH0KLX07Ci0KLQotXV0KLS8vIEFuIElOVEVSTkFMIG1hY3JvIGZv
ciBleHRyYWN0aW5nIHRoZSB0eXBlIG9mIGEgdHVwbGUgZmllbGQuICBJdCdzCi0vLyBzdWJqZWN0
IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZSAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFIQotI2Rl
ZmluZSBHTU9DS19GSUVMRF8oVHVwbGUsIE4pIFwKLSAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OnR1
cGxlX2VsZW1lbnQ8TiwgVHVwbGU+Ojp0eXBlCi0KLSRyYW5nZSBpIDEuLm4KLQotLy8gU2VsZWN0
QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUsIGsxLCBrMiwgLi4uLCBrX24+Ojp0eXBlIGlzIHRo
ZQotLy8gdHlwZSBvZiBhbiBuLWFyeSBmdW5jdGlvbiB3aG9zZSBpLXRoICgxLWJhc2VkKSBhcmd1
bWVudCB0eXBlIGlzIHRoZQotLy8ga3tpfS10aCAoMC1iYXNlZCkgZmllbGQgb2YgQXJndW1lbnRU
dXBsZSwgd2hpY2ggbXVzdCBiZSBhIHR1cGxlCi0vLyB0eXBlLCBhbmQgd2hvc2UgcmV0dXJuIHR5
cGUgaXMgUmVzdWx0LiAgRm9yIGV4YW1wbGUsCi0vLyAgIFNlbGVjdEFyZ3M8aW50LCA6OnRlc3Rp
bmc6OnR1cGxlPGJvb2wsIGNoYXIsIGRvdWJsZSwgbG9uZz4sIDAsIDM+Ojp0eXBlCi0vLyBpcyBp
bnQoYm9vbCwgbG9uZykuCi0vLwotLy8gU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVwbGUs
IGsxLCBrMiwgLi4uLCBrX24+OjpTZWxlY3QoYXJncykKLS8vIHJldHVybnMgdGhlIHNlbGVjdGVk
IGZpZWxkcyAoazEsIGsyLCAuLi4sIGtfbikgb2YgYXJncyBhcyBhIHR1cGxlLgotLy8gRm9yIGV4
YW1wbGUsCi0vLyAgIFNlbGVjdEFyZ3M8aW50LCB0dXBsZTxib29sLCBjaGFyLCBkb3VibGU+LCAy
LCAwPjo6U2VsZWN0KAotLy8gICAgICAgOjp0ZXN0aW5nOjptYWtlX3R1cGxlKHRydWUsICdhJywg
Mi41KSkKLS8vIHJldHVybnMgdHVwbGUgKDIuNSwgdHJ1ZSkuCi0vLwotLy8gVGhlIG51bWJlcnMg
aW4gbGlzdCBrMSwgazIsIC4uLiwga19uIG11c3QgYmUgPj0gMCwgd2hlcmUgbiBjYW4gYmUKLS8v
IGluIHRoZSByYW5nZSBbMCwgJG5dLiAgRHVwbGljYXRlcyBhcmUgYWxsb3dlZCBhbmQgdGhleSBk
b24ndCBoYXZlCi0vLyB0byBiZSBpbiBhbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlci4K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdCwgdHlwZW5hbWUgQXJndW1lbnRUdXBsZSwgJGZv
ciBpLCBbW2ludCBrJGldXT4KLWNsYXNzIFNlbGVjdEFyZ3MgewotIHB1YmxpYzoKLSAgdHlwZWRl
ZiBSZXN1bHQgdHlwZSgkZm9yIGksIFtbR01PQ0tfRklFTERfKEFyZ3VtZW50VHVwbGUsIGskaSld
XSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb248dHlwZT46OkFyZ3VtZW50VHVwbGUgU2Vs
ZWN0ZWRBcmdzOwotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIFNlbGVjdChjb25zdCBBcmd1bWVudFR1
cGxlJiBhcmdzKSB7Ci0gICAgcmV0dXJuIFNlbGVjdGVkQXJncygkZm9yIGksIFtbZ2V0PGskaT4o
YXJncyldXSk7Ci0gIH0KLX07Ci0KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5uCi0kcmFuZ2Ug
ajEgMS4uaS0xCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1
cGxlJGZvciBqMVtbLCBpbnQgayRqMV1dPgotY2xhc3MgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3Vt
ZW50VHVwbGUsCi0gICAgICAgICAgICAgICAgICRmb3IgaiwgW1skaWYgaiA8PSBpLTEgW1trJGpd
XSAkZWxzZSBbWy0xXV1dXT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSZXN1bHQgdHlwZSgkZm9y
IGoxLCBbW0dNT0NLX0ZJRUxEXyhBcmd1bWVudFR1cGxlLCBrJGoxKV1dKTsKLSAgdHlwZWRlZiB0
eXBlbmFtZSBGdW5jdGlvbjx0eXBlPjo6QXJndW1lbnRUdXBsZSBTZWxlY3RlZEFyZ3M7Ci0gIHN0
YXRpYyBTZWxlY3RlZEFyZ3MgU2VsZWN0KGNvbnN0IEFyZ3VtZW50VHVwbGUmIFtbXV0KLSRpZiBp
ID09IDEgW1svKiBhcmdzICovXV0gJGVsc2UgW1thcmdzXV0pIHsKLSAgICByZXR1cm4gU2VsZWN0
ZWRBcmdzKCRmb3IgajEsIFtbZ2V0PGskajE+KGFyZ3MpXV0pOwotICB9Ci19OwotCi0KLV1dCi0j
dW5kZWYgR01PQ0tfRklFTERfCi0KLSR2YXIga3MgPSBbWyRmb3IgaSwgW1trJGldXV1dCi0KLS8v
IEltcGxlbWVudHMgdGhlIFdpdGhBcmdzIGFjdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbm5l
ckFjdGlvbiwgJGZvciBpLCBbW2ludCBrJGkgPSAtMV1dPgotY2xhc3MgV2l0aEFyZ3NBY3Rpb24g
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgV2l0aEFyZ3NBY3Rpb24oY29uc3QgSW5uZXJBY3Rpb24m
IGFjdGlvbikgOiBhY3Rpb25fKGFjdGlvbikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4K
LSAgb3BlcmF0b3IgQWN0aW9uPEY+KCkgY29uc3QgeyByZXR1cm4gTWFrZUFjdGlvbihuZXcgSW1w
bDxGPihhY3Rpb25fKSk7IH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgot
ICBjbGFzcyBJbXBsIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxGPiB7Ci0gICBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0K
LSAgICBleHBsaWNpdCBJbXBsKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIDogYWN0aW9uXyhh
Y3Rpb24pIHt9Ci0KLSAgICB2aXJ0dWFsIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVw
bGUmIGFyZ3MpIHsKLSAgICAgIHJldHVybiBhY3Rpb25fLlBlcmZvcm0oU2VsZWN0QXJnczxSZXN1
bHQsIEFyZ3VtZW50VHVwbGUsICRrcz46OlNlbGVjdChhcmdzKSk7Ci0gICAgfQotCi0gICBwcml2
YXRlOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VsZWN0QXJnczxSZXN1bHQsIEFyZ3VtZW50VHVw
bGUsCi0gICAgICAgICRrcz46OnR5cGUgSW5uZXJGdW5jdGlvblR5cGU7Ci0KLSAgICBBY3Rpb248
SW5uZXJGdW5jdGlvblR5cGU+IGFjdGlvbl87Ci0gIH07Ci0KLSAgY29uc3QgSW5uZXJBY3Rpb24g
YWN0aW9uXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFdpdGhBcmdzQWN0aW9uKTsKLX07
Ci0KLS8vIEEgbWFjcm8gZnJvbSB0aGUgQUNUSU9OKiBmYW1pbHkgKGRlZmluZWQgbGF0ZXIgaW4g
dGhpcyBmaWxlKQotLy8gZGVmaW5lcyBhbiBhY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBpbiBhIG1v
Y2sgZnVuY3Rpb24uICBUeXBpY2FsbHksCi0vLyB0aGVzZSBhY3Rpb25zIG9ubHkgY2FyZSBhYm91
dCBhIHN1YnNldCBvZiB0aGUgYXJndW1lbnRzIG9mIHRoZSBtb2NrCi0vLyBmdW5jdGlvbi4gIEZv
ciBleGFtcGxlLCBpZiBzdWNoIGFuIGFjdGlvbiBvbmx5IHVzZXMgdGhlIHNlY29uZAotLy8gYXJn
dW1lbnQsIGl0IGNhbiBiZSB1c2VkIGluIGFueSBtb2NrIGZ1bmN0aW9uIHRoYXQgdGFrZXMgPj0g
MgotLy8gYXJndW1lbnRzIHdoZXJlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMg
Y29tcGF0aWJsZS4KLS8vCi0vLyBUaGVyZWZvcmUsIHRoZSBhY3Rpb24gaW1wbGVtZW50YXRpb24g
bXVzdCBiZSBwcmVwYXJlZCB0byB0YWtlIG1vcmUKLS8vIGFyZ3VtZW50cyB0aGFuIGl0IG5lZWRz
LiAgVGhlIEV4Y2Vzc2l2ZUFyZyB0eXBlIGlzIHVzZWQgdG8KLS8vIHJlcHJlc2VudCB0aG9zZSBl
eGNlc3NpdmUgYXJndW1lbnRzLiAgSW4gb3JkZXIgdG8ga2VlcCB0aGUgY29tcGlsZXIKLS8vIGVy
cm9yIG1lc3NhZ2VzIHRyYWN0YWJsZSwgd2UgZGVmaW5lIGl0IGluIHRoZSB0ZXN0aW5nIG5hbWVz
cGFjZQotLy8gaW5zdGVhZCBvZiB0ZXN0aW5nOjppbnRlcm5hbC4gIEhvd2V2ZXIsIHRoaXMgaXMg
YW4gSU5URVJOQUwgVFlQRQotLy8gYW5kIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNl
LCBzbyBhIHVzZXIgTVVTVCBOT1QgVVNFIFRISVMKLS8vIFRZUEUgRElSRUNUTFkuCi1zdHJ1Y3Qg
RXhjZXNzaXZlQXJnIHt9OwotCi0vLyBBIGhlbHBlciBjbGFzcyBuZWVkZWQgZm9yIGltcGxlbWVu
dGluZyB0aGUgQUNUSU9OKiBtYWNyb3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCBjbGFz
cyBJbXBsPgotY2xhc3MgQWN0aW9uSGVscGVyIHsKLSBwdWJsaWM6Ci0kcmFuZ2UgaSAwLi5uCi0k
Zm9yIGkKLQotW1sKLSR2YXIgdGVtcGxhdGUgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sKLSRy
YW5nZSBqIDAuLmktMQotICB0ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIEEkal1dPgotXV1d
XQotJHJhbmdlIGogMC4uaS0xCi0kdmFyIEFzID0gW1skZm9yIGosIFtbQSRqXV1dXQotJHZhciBh
cyA9IFtbJGZvciBqLCBbW2dldDwkaj4oYXJncyldXV1dCi0kcmFuZ2UgayAxLi5uLWkKLSR2YXIg
ZWFzID0gW1skZm9yIGssIFtbRXhjZXNzaXZlQXJnKCldXV1dCi0kdmFyIGFyZ19saXN0ID0gW1sk
aWYgKGk9PTApIHwgKGk9PW4pIFtbJGFzJGVhc11dICRlbHNlIFtbJGFzLCAkZWFzXV1dXQotJHRl
bXBsYXRlCi0gIHN0YXRpYyBSZXN1bHQgUGVyZm9ybShJbXBsKiBpbXBsLCBjb25zdCA6OnRlc3Rp
bmc6OnR1cGxlPCRBcz4mIGFyZ3MpIHsKLSAgICByZXR1cm4gaW1wbC0+dGVtcGxhdGUgZ21vY2tf
UGVyZm9ybUltcGw8JEFzPihhcmdzLCAkYXJnX2xpc3QpOwotICB9Ci0KLV1dCi19OwotCi19ICAv
LyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gVmFyaW91cyBvdmVybG9hZHMgZm9yIEludm9rZSgp
LgotCi0vLyBXaXRoQXJnczxOMSwgTjIsIC4uLiwgTms+KGFuX2FjdGlvbikgY3JlYXRlcyBhbiBh
Y3Rpb24gdGhhdCBwYXNzZXMKLS8vIHRoZSBzZWxlY3RlZCBhcmd1bWVudHMgb2YgdGhlIG1vY2sg
ZnVuY3Rpb24gdG8gYW5fYWN0aW9uIGFuZAotLy8gcGVyZm9ybXMgaXQuICBJdCBzZXJ2ZXMgYXMg
YW4gYWRhcHRvciBiZXR3ZWVuIGFjdGlvbnMgd2l0aAotLy8gZGlmZmVyZW50IGFyZ3VtZW50IGxp
c3RzLiAgQysrIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0IGFyZ3VtZW50cyBmb3IKLS8vIGZ1bmN0
aW9uIHRlbXBsYXRlcywgc28gd2UgaGF2ZSB0byBvdmVybG9hZCBpdC4KLQotJHJhbmdlIGkgMS4u
bgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi10ZW1wbGF0ZSA8JGZvciBqIFtbaW50IGskaiwg
XV10eXBlbmFtZSBJbm5lckFjdGlvbj4KLWlubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248
SW5uZXJBY3Rpb24kZm9yIGogW1ssIGskal1dPgotV2l0aEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24m
IGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9u
JGZvciBqIFtbLCBrJGpdXT4oYWN0aW9uKTsKLX0KLQotCi1dXQotLy8gQ3JlYXRlcyBhbiBhY3Rp
b24gdGhhdCBkb2VzIGFjdGlvbnMgYTEsIGEyLCAuLi4sIHNlcXVlbnRpYWxseSBpbgotLy8gZWFj
aCBpbnZvY2F0aW9uLgotJHJhbmdlIGkgMi4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAyLi5pCi0k
dmFyIHR5cGVzID0gW1skZm9yIGosIFtbdHlwZW5hbWUgQWN0aW9uJGpdXV1dCi0kdmFyIEFhcyA9
IFtbJGZvciBqIFtbLCBBY3Rpb24kaiBhJGpdXV1dCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBY3Rp
b24xLCAkdHlwZXM+Ci0kcmFuZ2UgayAxLi5pLTEKLQotaW5saW5lICRmb3IgayBbW2ludGVybmFs
OjpEb0JvdGhBY3Rpb248QWN0aW9uJGssIF1dQWN0aW9uJGkkZm9yIGsgIFtbPl1dCi0KLURvQWxs
KEFjdGlvbjEgYTEkQWFzKSB7Ci0kaWYgaT09MiBbWwotCi0gIHJldHVybiBpbnRlcm5hbDo6RG9C
b3RoQWN0aW9uPEFjdGlvbjEsIEFjdGlvbjI+KGExLCBhMik7Ci1dXSAkZWxzZSBbWwotJHJhbmdl
IGoyIDIuLmkKLQotICByZXR1cm4gRG9BbGwoYTEsIERvQWxsKCRmb3IgajIsIFtbYSRqMl1dKSk7
Ci1dXQotCi19Ci0KLV1dCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8vIFRoZSBBQ1RJ
T04qIGZhbWlseSBvZiBtYWNyb3MgY2FuIGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ugc2NvcGUgdG8K
LS8vIGRlZmluZSBjdXN0b20gYWN0aW9ucyBlYXNpbHkuICBUaGUgc3ludGF4OgotLy8KLS8vICAg
QUNUSU9OKG5hbWUpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIHdpbGwgZGVmaW5lIGFuIGFjdGlv
biB3aXRoIHRoZSBnaXZlbiBuYW1lIHRoYXQgZXhlY3V0ZXMgdGhlCi0vLyBzdGF0ZW1lbnRzLiAg
VGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBzdGF0ZW1lbnRzIHdpbGwgYmUgdXNlZCBhcwotLy8g
dGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYWN0aW9uLiAgSW5zaWRlIHRoZSBzdGF0ZW1lbnRzLCB5
b3UgY2FuCi0vLyByZWZlciB0byB0aGUgSy10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1v
Y2sgZnVuY3Rpb24gYnkKLS8vICdhcmdLJywgYW5kIHJlZmVyIHRvIGl0cyB0eXBlIGJ5ICdhcmdL
X3R5cGUnLiAgRm9yIGV4YW1wbGU6Ci0vLwotLy8gICBBQ1RJT04oSW5jcmVtZW50QXJnMSkgewot
Ly8gICAgIGFyZzFfdHlwZSB0ZW1wID0gYXJnMTsKLS8vICAgICByZXR1cm4gKysoKnRlbXApOwot
Ly8gICB9Ci0vLwotLy8gYWxsb3dzIHlvdSB0byB3cml0ZQotLy8KLS8vICAgLi4uV2lsbE9uY2Uo
SW5jcmVtZW50QXJnMSgpKTsKLS8vCi0vLyBZb3UgY2FuIGFsc28gcmVmZXIgdG8gdGhlIGVudGly
ZSBhcmd1bWVudCB0dXBsZSBhbmQgaXRzIHR5cGUgYnkKLS8vICdhcmdzJyBhbmQgJ2FyZ3NfdHlw
ZScsIGFuZCByZWZlciB0byB0aGUgbW9jayBmdW5jdGlvbiB0eXBlIGFuZCBpdHMKLS8vIHJldHVy
biB0eXBlIGJ5ICdmdW5jdGlvbl90eXBlJyBhbmQgJ3JldHVybl90eXBlJy4KLS8vCi0vLyBOb3Rl
IHRoYXQgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgdGhlIG1vY2sgZnVu
Y3Rpb24KLS8vIGFyZ3VtZW50cy4gIEhvd2V2ZXIgcmVzdCBhc3N1cmVkIHRoYXQgeW91ciBjb2Rl
IGlzIHN0aWxsIHR5cGUtc2FmZToKLS8vIHlvdSdsbCBnZXQgYSBjb21waWxlciBlcnJvciBpZiAq
YXJnMSBkb2Vzbid0IHN1cHBvcnQgdGhlICsrCi0vLyBvcGVyYXRvciwgb3IgaWYgdGhlIHR5cGUg
b2YgKysoKmFyZzEpIGlzbid0IGNvbXBhdGlibGUgd2l0aCB0aGUKLS8vIG1vY2sgZnVuY3Rpb24n
cyByZXR1cm4gdHlwZSwgZm9yIGV4YW1wbGUuCi0vLwotLy8gU29tZXRpbWVzIHlvdSdsbCB3YW50
IHRvIHBhcmFtZXRlcml6ZSB0aGUgYWN0aW9uLiAgIEZvciB0aGF0IHlvdSBjYW4gdXNlCi0vLyBh
bm90aGVyIG1hY3JvOgotLy8KLS8vICAgQUNUSU9OX1AobmFtZSwgcGFyYW1fbmFtZSkgeyBzdGF0
ZW1lbnRzOyB9Ci0vLwotLy8gRm9yIGV4YW1wbGU6Ci0vLwotLy8gICBBQ1RJT05fUChBZGQsIG4p
IHsgcmV0dXJuIGFyZzAgKyBuOyB9Ci0vLwotLy8gd2lsbCBhbGxvdyB5b3UgdG8gd3JpdGU6Ci0v
LwotLy8gICAuLi5XaWxsT25jZShBZGQoNSkpOwotLy8KLS8vIE5vdGUgdGhhdCB5b3UgZG9uJ3Qg
bmVlZCB0byBwcm92aWRlIHRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIKLS8vIGVpdGhlci4gIElm
IHlvdSBuZWVkIHRvIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1lZAotLy8g
J2ZvbycsIHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJy4gIEZvciBleGFtcGxlLCBpbiB0aGUgYm9k
eSBvZgotLy8gQUNUSU9OX1AoQWRkLCBuKSBhYm92ZSwgeW91IGNhbiB3cml0ZSAnbl90eXBlJyB0
byByZWZlciB0byB0aGUgdHlwZQotLy8gb2YgJ24nLgotLy8KLS8vIFdlIGFsc28gcHJvdmlkZSBB
Q1RJT05fUDIsIEFDVElPTl9QMywgLi4uLCB1cCB0byBBQ1RJT05fUCRuIHRvIHN1cHBvcnQKLS8v
IG11bHRpLXBhcmFtZXRlciBhY3Rpb25zLgotLy8KLS8vIEZvciB0aGUgcHVycG9zZSBvZiB0eXBp
bmcsIHlvdSBjYW4gdmlldwotLy8KLS8vICAgQUNUSU9OX1BrKEZvbywgcDEsIC4uLiwgcGspIHsg
Li4uIH0KLS8vCi0vLyBhcyBzaG9ydGhhbmQgZm9yCi0vLwotLy8gICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgotLy8gICBGb29BY3Rpb25QazxwMV90
eXBlLCAuLi4sIHBrX3R5cGU+IEZvbyhwMV90eXBlIHAxLCAuLi4sIHBrX3R5cGUgcGspIHsgLi4u
IH0KLS8vCi0vLyBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHRlbXBsYXRlIHR5
cGUgYXJndW1lbnRzCi0vLyBleHBsaWNpdGx5IHdoZW4gaW52b2tpbmcgRm9vKCksIGFzIGluIEZv
bzxsb25nLCBib29sPig1LCBmYWxzZSk7Ci0vLyBhbHRob3VnaCB1c3VhbGx5IHlvdSBjYW4gcmVs
eSBvbiB0aGUgY29tcGlsZXIgdG8gaW5mZXIgdGhlIHR5cGVzCi0vLyBmb3IgeW91IGF1dG9tYXRp
Y2FsbHkuICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24KLS8vIEZvbyhw
MSwgLi4uLCBwaykgdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb0FjdGlvblBrPHAxX3R5cGUsIC4u
LiwKLS8vIHBrX3R5cGU+LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY29tcG9zaW5nIGFjdGlv
bnMuCi0vLwotLy8gWW91IGNhbiBhbHNvIG92ZXJsb2FkIGFjdGlvbnMgd2l0aCBkaWZmZXJlbnQg
bnVtYmVycyBvZiBwYXJhbWV0ZXJzOgotLy8KLS8vICAgQUNUSU9OX1AoUGx1cywgYSkgeyAuLi4g
fQotLy8gICBBQ1RJT05fUDIoUGx1cywgYSwgYikgeyAuLi4gfQotLy8KLS8vIFdoaWxlIGl0J3Mg
dGVtcHRpbmcgdG8gYWx3YXlzIHVzZSB0aGUgQUNUSU9OKiBtYWNyb3Mgd2hlbiBkZWZpbmluZwot
Ly8gYSBuZXcgYWN0aW9uLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVtZW50aW5nIEFj
dGlvbkludGVyZmFjZQotLy8gb3IgdXNpbmcgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkgaW5zdGVh
ZCwgZXNwZWNpYWxseSBpZiB5b3UgbmVlZCB0bwotLy8gdXNlIHRoZSBhY3Rpb24gYSBsb3QuICBX
aGlsZSB0aGVzZSBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrLAotLy8gdGhleSBnaXZlIHlv
dSBtb3JlIGNvbnRyb2wgb24gdGhlIHR5cGVzIG9mIHRoZSBtb2NrIGZ1bmN0aW9uCi0vLyBhcmd1
bWVudHMgYW5kIHRoZSBhY3Rpb24gcGFyYW1ldGVycywgd2hpY2ggaW4gZ2VuZXJhbCBsZWFkcyB0
bwotLy8gYmV0dGVyIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIHRoYXQgcGF5IG9mZiBpbiB0aGUg
bG9uZyBydW4uICBUaGV5Ci0vLyBhbHNvIGFsbG93IG92ZXJsb2FkaW5nIGFjdGlvbnMgYmFzZWQg
b24gcGFyYW1ldGVyIHR5cGVzIChhcyBvcHBvc2VkCi0vLyB0byBqdXN0IGJhc2VkIG9uIHRoZSBu
dW1iZXIgb2YgcGFyYW1ldGVycykuCi0vLwotLy8gQ0FWRUFUOgotLy8KLS8vIEFDVElPTiooKSBj
YW4gb25seSBiZSB1c2VkIGluIGEgbmFtZXNwYWNlIHNjb3BlLiAgVGhlIHJlYXNvbiBpcwotLy8g
dGhhdCBDKysgZG9lc24ndCB5ZXQgYWxsb3cgZnVuY3Rpb24tbG9jYWwgdHlwZXMgdG8gYmUgdXNl
ZCB0bwotLy8gaW5zdGFudGlhdGUgdGVtcGxhdGVzLiAgVGhlIHVwLWNvbWluZyBDKysweCBzdGFu
ZGFyZCB3aWxsIGZpeCB0aGlzLgotLy8gT25jZSB0aGF0J3MgZG9uZSwgd2UnbGwgY29uc2lkZXIg
c3VwcG9ydGluZyB1c2luZyBBQ1RJT04qKCkgaW5zaWRlCi0vLyBhIGZ1bmN0aW9uLgotLy8KLS8v
IE1PUkUgSU5GT1JNQVRJT046Ci0vLwotLy8gVG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGVz
ZSBtYWNyb3MsIHBsZWFzZSBzZWFyY2ggZm9yICdBQ1RJT04nCi0vLyBvbiBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlbW9jay93aWtpL0Nvb2tCb29rLgotCi0kcmFuZ2UgaSAwLi5uCi0k
cmFuZ2UgayAwLi5uLTEKLQotLy8gQW4gaW50ZXJuYWwgbWFjcm8gbmVlZGVkIGZvciBpbXBsZW1l
bnRpbmcgQUNUSU9OKigpLgotI2RlZmluZSBHTU9DS19BQ1RJT05fQVJHX1RZUEVTX0FORF9OQU1F
U19VTlVTRURfXAotICAgIGNvbnN0IGFyZ3NfdHlwZSYgYXJncyBHVEVTVF9BVFRSSUJVVEVfVU5V
U0VEXwotJGZvciBrIFtbLCBcCi0gICAgYXJnJGtbW11dX3R5cGUgYXJnJGsgR1RFU1RfQVRUUklC
VVRFX1VOVVNFRF9dXQotCi0KLS8vIFNvbWV0aW1lcyB5b3Ugd2FudCB0byBnaXZlIGFuIGFjdGlv
biBleHBsaWNpdCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCi0vLyB0aGF0IGNhbm5vdCBiZSBpbmZlcnJl
ZCBmcm9tIGl0cyB2YWx1ZSBwYXJhbWV0ZXJzLiAgQUNUSU9OKCkgYW5kCi0vLyBBQ1RJT05fUCoo
KSBkb24ndCBzdXBwb3J0IHRoYXQuICBBQ1RJT05fVEVNUExBVEUoKSByZW1lZGllcyB0aGF0Ci0v
LyBhbmQgY2FuIGJlIHZpZXdlZCBhcyBhbiBleHRlbnNpb24gdG8gQUNUSU9OKCkgYW5kIEFDVElP
Tl9QKigpLgotLy8KLS8vIFRoZSBzeW50YXg6Ci0vLwotLy8gICBBQ1RJT05fVEVNUExBVEUoQWN0
aW9uTmFtZSwKLS8vICAgICAgICAgICAgICAgICAgIEhBU19tX1RFTVBMQVRFX1BBUkFNUyhraW5k
MSwgbmFtZTEsIC4uLiwga2luZF9tLCBuYW1lX20pLAotLy8gICAgICAgICAgICAgICAgICAgQU5E
X25fVkFMVUVfUEFSQU1TKHAxLCAuLi4sIHBfbikpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIGRl
ZmluZXMgYW4gYWN0aW9uIHRlbXBsYXRlIHRoYXQgdGFrZXMgbSBleHBsaWNpdCB0ZW1wbGF0ZQot
Ly8gcGFyYW1ldGVycyBhbmQgbiB2YWx1ZSBwYXJhbWV0ZXJzLiAgbmFtZV9pIGlzIHRoZSBuYW1l
IG9mIHRoZSBpLXRoCi0vLyB0ZW1wbGF0ZSBwYXJhbWV0ZXIsIGFuZCBraW5kX2kgc3BlY2lmaWVz
IHdoZXRoZXIgaXQncyBhIHR5cGVuYW1lLAotLy8gYW4gaW50ZWdyYWwgY29uc3RhbnQsIG9yIGEg
dGVtcGxhdGUuICBwX2kgaXMgdGhlIG5hbWUgb2YgdGhlIGktdGgKLS8vIHZhbHVlIHBhcmFtZXRl
ci4KLS8vCi0vLyBFeGFtcGxlOgotLy8KLS8vICAgLy8gRHVwbGljYXRlQXJnPGssIFQ+KG91dHB1
dCkgY29udmVydHMgdGhlIGstdGggYXJndW1lbnQgb2YgdGhlIG1vY2sKLS8vICAgLy8gZnVuY3Rp
b24gdG8gdHlwZSBUIGFuZCBjb3BpZXMgaXQgdG8gKm91dHB1dC4KLS8vICAgQUNUSU9OX1RFTVBM
QVRFKER1cGxpY2F0ZUFyZywKLS8vICAgICAgICAgICAgICAgICAgIEhBU18yX1RFTVBMQVRFX1BB
UkFNUyhpbnQsIGssIHR5cGVuYW1lLCBUKSwKLS8vICAgICAgICAgICAgICAgICAgIEFORF8xX1ZB
TFVFX1BBUkFNUyhvdXRwdXQpKSB7Ci0vLyAgICAgKm91dHB1dCA9IFQoOjp0ZXN0aW5nOjpnZXQ8
az4oYXJncykpOwotLy8gICB9Ci0vLyAgIC4uLgotLy8gICAgIGludCBuOwotLy8gICAgIEVYUEVD
VF9DQUxMKG1vY2ssIEZvbyhfLCBfKSkKLS8vICAgICAgICAgLldpbGxPbmNlKER1cGxpY2F0ZUFy
ZzwxLCB1bnNpZ25lZCBjaGFyPigmbikpOwotLy8KLS8vIFRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBv
ZiBhbiBhY3Rpb24gdGVtcGxhdGUsIHdyaXRlOgotLy8KLS8vICAgQWN0aW9uTmFtZTx0MSwgLi4u
LCB0X20+KHYxLCAuLi4sIHZfbikKLS8vCi0vLyB3aGVyZSB0aGUgdHMgYXJlIHRoZSB0ZW1wbGF0
ZSBhcmd1bWVudHMgYW5kIHRoZSB2cyBhcmUgdGhlIHZhbHVlCi0vLyBhcmd1bWVudHMuICBUaGUg
dmFsdWUgYXJndW1lbnQgdHlwZXMgYXJlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4KLS8vIElm
IHlvdSB3YW50IHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdmFsdWUgYXJndW1lbnQgdHlwZXMs
IHlvdSBjYW4KLS8vIHByb3ZpZGUgYWRkaXRpb25hbCB0ZW1wbGF0ZSBhcmd1bWVudHM6Ci0vLwot
Ly8gICBBY3Rpb25OYW1lPHQxLCAuLi4sIHRfbSwgdTEsIC4uLiwgdV9rPih2MSwgLi4uLCB2X24p
Ci0vLwotLy8gd2hlcmUgdV9pIGlzIHRoZSBkZXNpcmVkIHR5cGUgb2Ygdl9pLgotLy8KLS8vIEFD
VElPTl9URU1QTEFURSBhbmQgQUNUSU9OL0FDVElPTl9QKiBjYW4gYmUgb3ZlcmxvYWRlZCBvbiB0
aGUKLS8vIG51bWJlciBvZiB2YWx1ZSBwYXJhbWV0ZXJzLCBidXQgbm90IG9uIHRoZSBudW1iZXIg
b2YgdGVtcGxhdGUKLS8vIHBhcmFtZXRlcnMuICBXaXRob3V0IHRoZSByZXN0cmljdGlvbiwgdGhl
IG1lYW5pbmcgb2YgdGhlIGZvbGxvd2luZwotLy8gaXMgdW5jbGVhcjoKLS8vCi0vLyAgIE92ZXJs
b2FkZWRBY3Rpb248aW50LCBib29sPih4KTsKLS8vCi0vLyBBcmUgd2UgdXNpbmcgYSBzaW5nbGUt
dGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlvbiB3aGVyZSAnYm9vbCcgcmVmZXJzCi0vLyB0byB0aGUg
dHlwZSBvZiB4LCBvciBhcmUgd2UgdXNpbmcgYSB0d28tdGVtcGxhdGUtcGFyYW1ldGVyIGFjdGlv
bgotLy8gd2hlcmUgdGhlIGNvbXBpbGVyIGlzIGFza2VkIHRvIGluZmVyIHRoZSB0eXBlIG9mIHg/
Ci0vLwotLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6Ci0vLwotLy8gR01PQ0tfSU5URVJOQUxfKl9I
QVNfbV9URU1QTEFURV9QQVJBTVMgYW5kCi0vLyBHTU9DS19JTlRFUk5BTF8qX0FORF9uX1ZBTFVF
X1BBUkFNUyBhcmUgaW50ZXJuYWwgbWFjcm9zIGZvcgotLy8gaW1wbGVtZW50aW5nIEFDVElPTl9U
RU1QTEFURS4gIFRoZSBtYWluIHRyaWNrIHdlIHVzZSBpcyB0byBjcmVhdGUKLS8vIG5ldyBtYWNy
byBpbnZvY2F0aW9ucyB3aGVuIGV4cGFuZGluZyBhIG1hY3JvLiAgRm9yIGV4YW1wbGUsIHdlIGhh
dmUKLS8vCi0vLyAgICNkZWZpbmUgQUNUSU9OX1RFTVBMQVRFKG5hbWUsIHRlbXBsYXRlX3BhcmFt
cywgdmFsdWVfcGFyYW1zKQotLy8gICAgICAgLi4uIEdNT0NLX0lOVEVSTkFMX0RFQ0xfIyN0ZW1w
bGF0ZV9wYXJhbXMgLi4uCi0vLwotLy8gd2hpY2ggY2F1c2VzIEFDVElPTl9URU1QTEFURSguLi4s
IEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksIC4uLikKLS8vIHRvIGV4cGFuZCB0
bwotLy8KLS8vICAgICAgIC4uLiBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18xX1RFTVBMQVRFX1BB
UkFNUyh0eXBlbmFtZSwgVCkgLi4uCi0vLwotLy8gU2luY2UgR01PQ0tfSU5URVJOQUxfREVDTF9I
QVNfMV9URU1QTEFURV9QQVJBTVMgaXMgYSBtYWNybywgdGhlCi0vLyBwcmVwcm9jZXNzb3Igd2ls
bCBjb250aW51ZSB0byBleHBhbmQgaXQgdG8KLS8vCi0vLyAgICAgICAuLi4gdHlwZW5hbWUgVCAu
Li4KLS8vCi0vLyBUaGlzIHRlY2huaXF1ZSBjb25mb3JtcyB0byB0aGUgQysrIHN0YW5kYXJkIGFu
ZCBpcyBwb3J0YWJsZS4gIEl0Ci0vLyBhbGxvd3MgdXMgdG8gaW1wbGVtZW50IGFjdGlvbiB0ZW1w
bGF0ZXMgdXNpbmcgTyhOKSBjb2RlLCB3aGVyZSBOIGlzCi0vLyB0aGUgbWF4aW11bSBudW1iZXIg
b2YgdGVtcGxhdGUvdmFsdWUgcGFyYW1ldGVycyBzdXBwb3J0ZWQuICBXaXRob3V0Ci0vLyB1c2lu
ZyBpdCwgd2UnZCBoYXZlIHRvIGRldm90ZSBPKE5eMikgYW1vdW50IG9mIGNvZGUgdG8gaW1wbGVt
ZW50IGFsbAotLy8gY29tYmluYXRpb25zIG9mIG0gYW5kIG4uCi0KLS8vIERlY2xhcmVzIHRoZSB0
ZW1wbGF0ZSBwYXJhbWV0ZXJzLgotCi0kcmFuZ2UgaiAxLi5uCi0kZm9yIGogW1sKLSRyYW5nZSBt
IDAuLmotMQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9ERUNMX0hBU18kaltbXV0KLV9URU1QTEFU
RV9QQVJBTVMoJGZvciBtLCBbW2tpbmQkbSwgbmFtZSRtXV0pICRmb3IgbSwgW1traW5kJG0gbmFt
ZSRtXV0KLQotCi1dXQotCi0vLyBMaXN0cyB0aGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KLQotJGZv
ciBqIFtbCi0kcmFuZ2UgbSAwLi5qLTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfTElTVF9IQVNf
JGpbW11dCi1fVEVNUExBVEVfUEFSQU1TKCRmb3IgbSwgW1traW5kJG0sIG5hbWUkbV1dKSAkZm9y
IG0sIFtbbmFtZSRtXV0KLQotCi1dXQotCi0vLyBEZWNsYXJlcyB0aGUgdHlwZXMgb2YgdmFsdWUg
cGFyYW1ldGVycy4KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAwLi5pLTEKLSNkZWZpbmUgR01PQ0tf
SU5URVJOQUxfREVDTF9UWVBFX0FORF8kaVtbXV0KLV9WQUxVRV9QQVJBTVMoJGZvciBqLCBbW3Ak
al1dKSAkZm9yIGogW1ssIHR5cGVuYW1lIHAkaiMjX3R5cGVdXQotCi0KLV1dCi0KLS8vIEluaXRp
YWxpemVzIHRoZSB2YWx1ZSBwYXJhbWV0ZXJzLgotCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDAuLmkt
MQotI2RlZmluZSBHTU9DS19JTlRFUk5BTF9JTklUX0FORF8kaVtbXV1fVkFMVUVfUEFSQU1TKCRm
b3IgaiwgW1twJGpdXSlcCi0gICAgKCRmb3IgaiwgW1twJGojI190eXBlIGdtb2NrX3Akal1dKSRp
ZiBpPjAgW1sgOiBdXSRmb3IgaiwgW1twJGooZ21vY2tfcCRqKV1dCi0KLQotXV0KLQotLy8gRGVj
bGFyZXMgdGhlIGZpZWxkcyBmb3Igc3RvcmluZyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KLQotJGZv
ciBpIFtbCi0kcmFuZ2UgaiAwLi5pLTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVGTl9BTkRf
JGlbW11dCi1fVkFMVUVfUEFSQU1TKCRmb3IgaiwgW1twJGpdXSkgJGZvciBqIFtbcCRqIyNfdHlw
ZSBwJGo7IF1dCi0KLQotXV0KLQotLy8gTGlzdHMgdGhlIHZhbHVlIHBhcmFtZXRlcnMuCi0KLSRm
b3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfQU5E
XyRpW1tdXQotX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pICRmb3IgaiwgW1twJGpdXQot
Ci0KLV1dCi0KLS8vIExpc3RzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIgdHlwZXMuCi0KLSRmb3IgaSBb
WwotJHJhbmdlIGogMC4uaS0xCi0jZGVmaW5lIEdNT0NLX0lOVEVSTkFMX0xJU1RfVFlQRV9BTkRf
JGlbW11dCi1fVkFMVUVfUEFSQU1TKCRmb3IgaiwgW1twJGpdXSkgJGZvciBqIFtbLCBwJGojI190
eXBlXV0KLQotCi1dXQotCi0vLyBEZWNsYXJlcyB0aGUgdmFsdWUgcGFyYW1ldGVycy4KLQotJGZv
ciBpIFtbCi0kcmFuZ2UgaiAwLi5pLTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfREVDTF9BTkRf
JGlbW11dX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pIFtbXV0KLSRmb3IgaiwgW1twJGoj
I190eXBlIHAkal1dCi0KLQotXV0KLQotLy8gVGhlIHN1ZmZpeCBvZiB0aGUgY2xhc3MgdGVtcGxh
dGUgaW1wbGVtZW50aW5nIHRoZSBhY3Rpb24gdGVtcGxhdGUuCi0kZm9yIGkgW1sKLQotCi0kcmFu
Z2UgaiAwLi5pLTEKLSNkZWZpbmUgR01PQ0tfSU5URVJOQUxfQ09VTlRfQU5EXyRpW1tdXV9WQUxV
RV9QQVJBTVMoJGZvciBqLCBbW3Akal1dKSBbW11dCi0kaWYgaT09MSBbW1BdXSAkZWxpZiBpPj0y
IFtbUCRpXV0KLV1dCi0KLQotLy8gVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRlbXBsYXRlIGltcGxl
bWVudGluZyB0aGUgYWN0aW9uIHRlbXBsYXRlLgotI2RlZmluZSBHTU9DS19BQ1RJT05fQ0xBU1Nf
KG5hbWUsIHZhbHVlX3BhcmFtcylcCi0gICAgR1RFU1RfQ09OQ0FUX1RPS0VOXyhuYW1lIyNBY3Rp
b24sIEdNT0NLX0lOVEVSTkFMX0NPVU5UXyMjdmFsdWVfcGFyYW1zKQotCi0kcmFuZ2UgayAwLi5u
LTEKLQotI2RlZmluZSBBQ1RJT05fVEVNUExBVEUobmFtZSwgdGVtcGxhdGVfcGFyYW1zLCB2YWx1
ZV9wYXJhbXMpXAotICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRlX3Bh
cmFtc1wKLSAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3BhcmFt
cz5cCi0gIGNsYXNzIEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKSB7XAot
ICAgcHVibGljOlwKLSAgICBleHBsaWNpdCBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVl
X3BhcmFtcylcCi0gICAgICAgIEdNT0NLX0lOVEVSTkFMX0lOSVRfIyN2YWx1ZV9wYXJhbXMge31c
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U8Rj4ge1wKLSAgICAgcHVibGljOlwKLSAgICAg
IHR5cGVkZWYgRiBmdW5jdGlvbl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdCByZXR1cm5fdHlwZTtcCi0gICAgICB0
eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVu
dFR1cGxlXAotICAgICAgICAgIGFyZ3NfdHlwZTtcCi0gICAgICBleHBsaWNpdCBnbW9ja19JbXBs
IEdNT0NLX0lOVEVSTkFMX0lOSVRfIyN2YWx1ZV9wYXJhbXMge31cCi0gICAgICB2aXJ0dWFsIHJl
dHVybl90eXBlIFBlcmZvcm0oY29uc3QgYXJnc190eXBlJiBhcmdzKSB7XAotICAgICAgICByZXR1
cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWN0aW9uSGVscGVyPHJldHVybl90eXBlLCBnbW9ja19J
bXBsPjo6XAotICAgICAgICAgICAgUGVyZm9ybSh0aGlzLCBhcmdzKTtcCi0gICAgICB9XAotICAg
ICAgdGVtcGxhdGUgPCRmb3IgaywgW1t0eXBlbmFtZSBhcmcka1tbXV1fdHlwZV1dPlwKLSAgICAg
IHJldHVybl90eXBlIGdtb2NrX1BlcmZvcm1JbXBsKGNvbnN0IGFyZ3NfdHlwZSYgYXJnc1tbXV0K
LSRmb3IgayBbWywgYXJnJGtbW11dX3R5cGUgYXJnJGtdXSkgY29uc3Q7XAotICAgICAgR01PQ0tf
SU5URVJOQUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICBHVEVT
VF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRj4gb3BlcmF0b3IgOjp0ZXN0aW5nOjpBY3Rpb248Rj4oKSBjb25zdCB7XAotICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6QWN0aW9uPEY+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1w
bDxGPihHTU9DS19JTlRFUk5BTF9MSVNUXyMjdmFsdWVfcGFyYW1zKSk7XAotICAgIH1cCi0gICAg
R01PQ0tfSU5URVJOQUxfREVGTl8jI3ZhbHVlX3BhcmFtc1wKLSAgIHByaXZhdGU6XAotICAgIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oR01PQ0tfQUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJh
bXMpKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8R01PQ0tfSU5URVJOQUxfREVDTF8jI3RlbXBsYXRl
X3BhcmFtc1wKLSAgICAgICAgICAgIEdNT0NLX0lOVEVSTkFMX0RFQ0xfVFlQRV8jI3ZhbHVlX3Bh
cmFtcz5cCi0gIGlubGluZSBHTU9DS19BQ1RJT05fQ0xBU1NfKG5hbWUsIHZhbHVlX3BhcmFtcyk8
XAotICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgIEdN
T0NLX0lOVEVSTkFMX0xJU1RfVFlQRV8jI3ZhbHVlX3BhcmFtcz4gbmFtZShcCi0gICAgICAgICAg
R01PQ0tfSU5URVJOQUxfREVDTF8jI3ZhbHVlX3BhcmFtcykge1wKLSAgICByZXR1cm4gR01PQ0tf
QUNUSU9OX0NMQVNTXyhuYW1lLCB2YWx1ZV9wYXJhbXMpPFwKLSAgICAgICAgR01PQ0tfSU5URVJO
QUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgICAgR01PQ0tfSU5URVJOQUxfTElTVF9U
WVBFXyMjdmFsdWVfcGFyYW1zPihcCi0gICAgICAgICAgICBHTU9DS19JTlRFUk5BTF9MSVNUXyMj
dmFsdWVfcGFyYW1zKTtcCi0gIH1cCi0gIHRlbXBsYXRlIDxHTU9DS19JTlRFUk5BTF9ERUNMXyMj
dGVtcGxhdGVfcGFyYW1zXAotICAgICAgICAgICAgR01PQ0tfSU5URVJOQUxfREVDTF9UWVBFXyMj
dmFsdWVfcGFyYW1zPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+XAotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgYXJnMF90eXBlLCB0eXBlbmFtZSBhcmcxX3R5cGUsIHR5cGVuYW1lIGFyZzJfdHlwZSwg
XAotICAgICAgdHlwZW5hbWUgYXJnM190eXBlLCB0eXBlbmFtZSBhcmc0X3R5cGUsIHR5cGVuYW1l
IGFyZzVfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnNl90eXBlLCB0eXBlbmFtZSBhcmc3X3R5
cGUsIHR5cGVuYW1lIGFyZzhfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgYXJnOV90eXBlPlwKLSAg
dHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAg
IEdNT0NLX0FDVElPTl9DTEFTU18obmFtZSwgdmFsdWVfcGFyYW1zKTxcCi0gICAgICAgICAgR01P
Q0tfSU5URVJOQUxfTElTVF8jI3RlbXBsYXRlX3BhcmFtc1wKLSAgICAgICAgICBHTU9DS19JTlRF
Uk5BTF9MSVNUX1RZUEVfIyN2YWx1ZV9wYXJhbXM+OjpnbW9ja19JbXBsPEY+OjpcCi0gICAgICAg
ICAgICAgIGdtb2NrX1BlcmZvcm1JbXBsKFwKLSAgICAgICAgICBHTU9DS19BQ1RJT05fQVJHX1RZ
UEVTX0FORF9OQU1FU19VTlVTRURfKSBjb25zdAotCi0kZm9yIGkKLQotW1sKLSR2YXIgdGVtcGxh
dGUgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sKLSRyYW5nZSBqIDAuLmktMQotCi0gIHRlbXBs
YXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgcCRqIyNfdHlwZV1dPlwKLV1dXV0KLSR2YXIgY2xhc3Nf
bmFtZSA9IFtbbmFtZSMjQWN0aW9uW1skaWYgaT09MCBbW11dICRlbGlmIGk9PTEgW1tQXV0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlIFtbUCRp
XV1dXV1dCi0kcmFuZ2UgaiAwLi5pLTEKLSR2YXIgY3Rvcl9wYXJhbV9saXN0ID0gW1skZm9yIGos
IFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXV1dCi0kdmFyIHBhcmFtX3R5cGVzX2FuZF9uYW1lcyA9
IFtbJGZvciBqLCBbW3AkaiMjX3R5cGUgcCRqXV1dXQotJHZhciBpbml0cyA9IFtbJGlmIGk9PTAg
W1tdXSAkZWxzZSBbWyA6ICRmb3IgaiwgW1twJGooZ21vY2tfcCRqKV1dXV1dXQotJHZhciBwYXJh
bV9maWVsZF9kZWNscyA9IFtbJGZvciBqCi1bWwotCi0gICAgICBwJGojI190eXBlIHAkajtcCi1d
XV1dCi0kdmFyIHBhcmFtX2ZpZWxkX2RlY2xzMiA9IFtbJGZvciBqCi1bWwotCi0gICAgcCRqIyNf
dHlwZSBwJGo7XAotXV1dXQotJHZhciBwYXJhbXMgPSBbWyRmb3IgaiwgW1twJGpdXV1dCi0kdmFy
IHBhcmFtX3R5cGVzID0gW1skaWYgaT09MCBbW11dICRlbHNlIFtbPCRmb3IgaiwgW1twJGojI190
eXBlXV0+XV1dXQotJHZhciB0eXBlbmFtZV9hcmdfdHlwZXMgPSBbWyRmb3IgaywgW1t0eXBlbmFt
ZSBhcmcka1tbXV1fdHlwZV1dXV0KLSR2YXIgYXJnX3R5cGVzX2FuZF9uYW1lcyA9IFtbJGZvciBr
LCBbW2FyZyRrW1tdXV90eXBlIGFyZyRrXV1dXQotJHZhciBtYWNyb19uYW1lID0gW1skaWYgaT09
MCBbW0FDVElPTl1dICRlbGlmIGk9PTEgW1tBQ1RJT05fUF1dCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGVsc2UgW1tBQ1RJT05fUCRpXV1dXQotCi0jZGVmaW5lICRt
YWNyb19uYW1lKG5hbWUkZm9yIGogW1ssIHAkal1dKVwkdGVtcGxhdGUKLSAgY2xhc3MgJGNsYXNz
X25hbWUge1wKLSAgIHB1YmxpYzpcCi0gICAgW1skaWYgaT09MSBbW2V4cGxpY2l0IF1dXV0kY2xh
c3NfbmFtZSgkY3Rvcl9wYXJhbV9saXN0KSRpbml0cyB7fVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRj5cCi0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkFjdGlvbklu
dGVyZmFjZTxGPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgdHlwZWRlZiBGIGZ1bmN0aW9uX3R5
cGU7XAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlv
bjxGPjo6UmVzdWx0IHJldHVybl90eXBlO1wKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGVcCi0gICAgICAgICAgYXJn
c190eXBlO1wKLSAgICAgIFtbJGlmIGk9PTEgW1tleHBsaWNpdCBdXV1dZ21vY2tfSW1wbCgkY3Rv
cl9wYXJhbV9saXN0KSRpbml0cyB7fVwKLSAgICAgIHZpcnR1YWwgcmV0dXJuX3R5cGUgUGVyZm9y
bShjb25zdCBhcmdzX3R5cGUmIGFyZ3MpIHtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpBY3Rpb25IZWxwZXI8cmV0dXJuX3R5cGUsIGdtb2NrX0ltcGw+OjpcCi0gICAgICAg
ICAgICBQZXJmb3JtKHRoaXMsIGFyZ3MpO1wKLSAgICAgIH1cCi0gICAgICB0ZW1wbGF0ZSA8JHR5
cGVuYW1lX2FyZ190eXBlcz5cCi0gICAgICByZXR1cm5fdHlwZSBnbW9ja19QZXJmb3JtSW1wbChj
b25zdCBhcmdzX3R5cGUmIGFyZ3MsIFtbXV0KLSRhcmdfdHlwZXNfYW5kX25hbWVzKSBjb25zdDtc
JHBhcmFtX2ZpZWxkX2RlY2xzCi0gICAgIHByaXZhdGU6XAotICAgICAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+
IG9wZXJhdG9yIDo6dGVzdGluZzo6QWN0aW9uPEY+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFjdGlvbjxGPihuZXcgZ21vY2tfSW1wbDxGPigkcGFyYW1zKSk7XAotICAgIH1c
JHBhcmFtX2ZpZWxkX2RlY2xzMgotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXygkY2xhc3NfbmFtZSk7XAotICB9O1wkdGVtcGxhdGUKLSAgaW5saW5lICRjbGFzc19uYW1l
JHBhcmFtX3R5cGVzIG5hbWUoJHBhcmFtX3R5cGVzX2FuZF9uYW1lcykge1wKLSAgICByZXR1cm4g
JGNsYXNzX25hbWUkcGFyYW1fdHlwZXMoJHBhcmFtcyk7XAotICB9XCR0ZW1wbGF0ZQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRj5cCi0gIHRlbXBsYXRlIDwkdHlwZW5hbWVfYXJnX3R5cGVzPlwKLSAg
dHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248Rj46OlJlc3VsdFwKLSAgICAg
ICRjbGFzc19uYW1lJHBhcmFtX3R5cGVzOjpnbW9ja19JbXBsPEY+OjpnbW9ja19QZXJmb3JtSW1w
bChcCi0gICAgICAgICAgR01PQ0tfQUNUSU9OX0FSR19UWVBFU19BTkRfTkFNRVNfVU5VU0VEXykg
Y29uc3QKLV1dCi0kJCB9ICAvLyBUaGlzIG1ldGEgY29tbWVudCBmaXhlcyBhdXRvLWluZGVudGF0
aW9uIGluIEVtYWNzLiAgSXQgd29uJ3QKLSQkICAgIC8vIHNob3cgdXAgaW4gdGhlIGdlbmVyYXRl
ZCBjb2RlLgotCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotCi0vLyBUaGUgQUNUSU9OKigpIG1h
Y3JvcyB0cmlnZ2VyIHdhcm5pbmcgQzQxMDAgKHVucmVmZXJlbmNlZCBmb3JtYWwKLS8vIHBhcmFt
ZXRlcikgaW4gTVNWQyB3aXRoIC1XNC4gIFVuZm9ydHVuYXRlbHkgdGhleSBjYW5ub3QgYmUgZml4
ZWQgaW4KLS8vIHRoZSBtYWNybyBkZWZpbml0aW9uLCBhcyB0aGUgd2FybmluZ3MgYXJlIGdlbmVy
YXRlZCB3aGVuIHRoZSBtYWNybwotLy8gaXMgZXhwYW5kZWQgYW5kIG1hY3JvIGV4cGFuc2lvbiBj
YW5ub3QgY29udGFpbiAjcHJhZ21hLiAgVGhlcmVmb3JlCi0vLyB3ZSBzdXBwcmVzcyB0aGVtIGhl
cmUuCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTo0MTAwKQotI2VuZGlmCi0KLS8vIFZhcmlvdXMgb3ZlcmxvYWRzIGZvciBJ
bnZva2VBcmd1bWVudDxOPigpLgotLy8KLS8vIFRoZSBJbnZva2VBcmd1bWVudDxOPihhMSwgYTIs
IC4uLiwgYV9rKSBhY3Rpb24gaW52b2tlcyB0aGUgTi10aAotLy8gKDAtYmFzZWQpIGFyZ3VtZW50
LCB3aGljaCBtdXN0IGJlIGEgay1hcnkgY2FsbGFibGUsIG9mIHRoZSBtb2NrCi0vLyBmdW5jdGlv
biwgd2l0aCBhcmd1bWVudHMgYTEsIGEyLCAuLi4sIGFfay4KLS8vCi0vLyBOb3RlczoKLS8vCi0v
LyAgIDEuIFRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCBieSB2YWx1ZSBieSBkZWZhdWx0LiAgSWYg
eW91IG5lZWQgdG8KLS8vICAgcGFzcyBhbiBhcmd1bWVudCBieSByZWZlcmVuY2UsIHdyYXAgaXQg
aW5zaWRlIEJ5UmVmKCkuICBGb3IKLS8vICAgZXhhbXBsZSwKLS8vCi0vLyAgICAgSW52b2tlQXJn
dW1lbnQ8MT4oNSwgc3RyaW5nKCJIZWxsbyIpLCBCeVJlZihmb28pKQotLy8KLS8vICAgcGFzc2Vz
IDUgYW5kIHN0cmluZygiSGVsbG8iKSBieSB2YWx1ZSwgYW5kIHBhc3NlcyBmb28gYnkKLS8vICAg
cmVmZXJlbmNlLgotLy8KLS8vICAgMi4gSWYgdGhlIGNhbGxhYmxlIHRha2VzIGFuIGFyZ3VtZW50
IGJ5IHJlZmVyZW5jZSBidXQgQnlSZWYoKSBpcwotLy8gICBub3QgdXNlZCwgaXQgd2lsbCByZWNl
aXZlIHRoZSByZWZlcmVuY2UgdG8gYSBjb3B5IG9mIHRoZSB2YWx1ZSwKLS8vICAgaW5zdGVhZCBv
ZiB0aGUgb3JpZ2luYWwgdmFsdWUuICBGb3IgZXhhbXBsZSwgd2hlbiB0aGUgMC10aAotLy8gICBh
cmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB0YWtlcyBhIGNvbnN0IHN0cmluZyYsIHRoZSBh
Y3Rpb24KLS8vCi0vLyAgICAgSW52b2tlQXJndW1lbnQ8MD4oc3RyaW5nKCJIZWxsbyIpKQotLy8K
LS8vICAgbWFrZXMgYSBjb3B5IG9mIHRoZSB0ZW1wb3Jhcnkgc3RyaW5nKCJIZWxsbyIpIG9iamVj
dCBhbmQgcGFzc2VzIGEKLS8vICAgcmVmZXJlbmNlIG9mIHRoZSBjb3B5LCBpbnN0ZWFkIG9mIHRo
ZSBvcmlnaW5hbCB0ZW1wb3Jhcnkgb2JqZWN0LAotLy8gICB0byB0aGUgY2FsbGFibGUuICBUaGlz
IG1ha2VzIGl0IGVhc3kgZm9yIGEgdXNlciB0byBkZWZpbmUgYW4KLS8vICAgSW52b2tlQXJndW1l
bnQgYWN0aW9uIGZyb20gdGVtcG9yYXJ5IHZhbHVlcyBhbmQgaGF2ZSBpdCBwZXJmb3JtZWQKLS8v
ICAgbGF0ZXIuCi0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1uYW1lc3BhY2UgaW52b2tlX2FyZ3Vt
ZW50IHsKLQotLy8gQXBwZWFycyBpbiBJbnZva2VBcmd1bWVudEFkbCdzIGFyZ3VtZW50IGxpc3Qg
dG8gaGVscCBhdm9pZAotLy8gYWNjaWRlbnRhbCBjYWxscyB0byB1c2VyIGZ1bmN0aW9ucyBvZiB0
aGUgc2FtZSBuYW1lLgotc3RydWN0IEFkbFRhZyB7fTsKLQotLy8gSW52b2tlQXJndW1lbnRBZGwg
LSBhIGhlbHBlciBmb3IgSW52b2tlQXJndW1lbnQuCi0vLyBUaGUgYmFzaWMgb3ZlcmxvYWRzIGFy
ZSBwcm92aWRlZCBoZXJlIGZvciBnZW5lcmljIGZ1bmN0b3JzLgotLy8gT3ZlcmxvYWRzIGZvciBv
dGhlciBjdXN0b20tY2FsbGFibGVzIGFyZSBwcm92aWRlZCBpbiB0aGUKLS8vIGludGVybmFsL2N1
c3RvbS9jYWxsYmFjay1hY3Rpb25zLmggaGVhZGVyLgotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkK
LVtbCi0kcmFuZ2UgaiAxLi5pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGW1sk
Zm9yIGogW1ssIHR5cGVuYW1lIEEkal1dXV0+Ci1SIEludm9rZUFyZ3VtZW50QWRsKEFkbFRhZywg
RiBmW1skZm9yIGogW1ssIEEkaiBhJGpdXV1dKSB7Ci0gIHJldHVybiBmKFtbJGZvciBqLCBbW2Ek
al1dXV0pOwotfQotXV0KLQotfSAgLy8gbmFtZXNwYWNlIGludm9rZV9hcmd1bWVudAotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCi0KLSRyYW5nZSBpIDAuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGog
MC4uaS0xCi0KLUFDVElPTl9URU1QTEFURShJbnZva2VBcmd1bWVudCwKLSAgICAgICAgICAgICAg
ICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfJGlb
W11dX1ZBTFVFX1BBUkFNUygkZm9yIGosIFtbcCRqXV0pKSB7Ci0gIHVzaW5nIGludGVybmFsOjpp
bnZva2VfYXJndW1lbnQ6Okludm9rZUFyZ3VtZW50QWRsOwotICByZXR1cm4gSW52b2tlQXJndW1l
bnRBZGw8cmV0dXJuX3R5cGU+KAotICAgICAgaW50ZXJuYWw6Omludm9rZV9hcmd1bWVudDo6QWRs
VGFnKCksCi0gICAgICA6OnRlc3Rpbmc6OmdldDxrPihhcmdzKSRmb3IgaiBbWywgcCRqXV0pOwot
fQotCi1dXQotCi0vLyBWYXJpb3VzIG92ZXJsb2FkcyBmb3IgUmV0dXJuTmV3PFQ+KCkuCi0vLwot
Ly8gVGhlIFJldHVybk5ldzxUPihhMSwgYTIsIC4uLiwgYV9rKSBhY3Rpb24gcmV0dXJucyBhIHBv
aW50ZXIgdG8gYSBuZXcKLS8vIGluc3RhbmNlIG9mIHR5cGUgVCwgY29uc3RydWN0ZWQgb24gdGhl
IGhlYXAgd2l0aCBjb25zdHJ1Y3RvciBhcmd1bWVudHMKLS8vIGExLCBhMiwgLi4uLCBhbmQgYV9r
LiBUaGUgY2FsbGVyIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KLSRy
YW5nZSBpIDAuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0kdmFyIHBzID0gW1skZm9y
IGosIFtbcCRqXV1dXQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJuTmV3LAotICAgICAgICAgICAg
ICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgVCksCi0gICAgICAgICAgICAgICAg
QU5EXyRpW1tdXV9WQUxVRV9QQVJBTVMoJHBzKSkgewotICByZXR1cm4gbmV3IFQoJHBzKTsKLX0K
LQotXV0KLQotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgot
Ci19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0vLyBJbmNsdWRlIGFueSBjdXN0b20gY2FsbGJh
Y2sgYWN0aW9ucyBhZGRlZCBieSB0aGUgbG9jYWwgaW5zdGFsbGF0aW9uLgotLy8gV2UgbXVzdCBp
bmNsdWRlIHRoaXMgaGVhZGVyIGF0IHRoZSBlbmQgdG8gbWFrZSBzdXJlIGl0IGNhbiB1c2UgdGhl
Ci0vLyBkZWNsYXJhdGlvbnMgZnJvbSB0aGlzIGZpbGUuCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJu
YWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgiCi0KLSNlbmRpZiAgLy8gR01PQ0tf
SU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9j
a2Vycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmE1Y2E5NDg0OWYuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1m
dW5jdGlvbi1tb2NrZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDk1ICswLDAgQEAKLS8vIFRo
aXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBnbW9jay1n
ZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oLnB1bXAKLS8vIERPIE5PVCBFRElUIEJZIEhBTkQh
ISEKLQotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sg
LSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMg
ZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9uIG1vY2tlcnMgb2YgdmFyaW91cyBhcml0aWVzLgotCi0j
aWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX0ZVTkNUSU9OX01PQ0tF
UlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfRlVOQ1RJ
T05fTU9DS0VSU19IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5oIgot
I2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFsLXV0aWxzLmgiCi0KLSNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotIyBpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2VuZGlmCi0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGPgotY2xhc3MgRnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0vLyBOb3RlOiBjbGFzcyBG
dW5jdGlvbk1vY2tlciByZWFsbHkgYmVsb25ncyB0byB0aGUgOjp0ZXN0aW5nCi0vLyBuYW1lc3Bh
Y2UuICBIb3dldmVyIGlmIHdlIGRlZmluZSBpdCBpbiA6OnRlc3RpbmcsIE1TVkMgd2lsbAotLy8g
Y29tcGxhaW4gd2hlbiBjbGFzc2VzIGluIDo6dGVzdGluZzo6aW50ZXJuYWwgZGVjbGFyZSBpdCBh
cyBhCi0vLyBmcmllbmQgY2xhc3MgdGVtcGxhdGUuICBUbyB3b3JrYXJvdW5kIHRoaXMgY29tcGls
ZXIgYnVnLCB3ZSBkZWZpbmUKLS8vIEZ1bmN0aW9uTW9ja2VyIGluIDo6dGVzdGluZzo6aW50ZXJu
YWwgYW5kIGltcG9ydCBpdCBpbnRvIDo6dGVzdGluZy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgot
Y2xhc3MgRnVuY3Rpb25Nb2NrZXI7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotY2xhc3MgRnVu
Y3Rpb25Nb2NrZXI8UigpPiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJh
c2U8UigpPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIFIgRigpOwotICB0eXBlZGVmIHR5cGVuYW1l
IGludGVybmFsOjpGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0g
IE1vY2tTcGVjPEY+JiBXaXRoKCkgewotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsK
LSAgfQotCi0gIFIgSW52b2tlKCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBk
b24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysg
c3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8v
IGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBi
ZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJl
dHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoKSk7Ci0gIH0KLX07Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMT4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEp
PiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSk+IHsKLSBw
dWJsaWM6Ci0gIHR5cGVkZWYgUiBGKEExKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxG
PiYgV2l0aChjb25zdCBNYXRjaGVyPEExPiYgbTEpIHsKLSAgICB0aGlzLT5jdXJyZW50X3NwZWMo
KS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2VfdHVwbGUobTEpKTsKLSAgICByZXR1cm4gdGhp
cy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9rZShBMSBhMSkgewotICAgIC8vIEV2
ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1
aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJh
c2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1l
bnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2
aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVw
bGUoYTEpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0
eXBlbmFtZSBBMj4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyKT4gOiBwdWJsaWMKLSAg
ICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyKT4gewotIHB1YmxpYzoKLSAg
dHlwZWRlZiBSIEYoQTEsIEEyKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rp
b248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0
aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMikgewotICAgIHRo
aXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwg
bTIpKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9r
ZShBMSBhMSwgQTIgYTIpIHsKLSAgICAvLyBFdmVuIHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3Qg
ZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWlyZWQKLSAgICAvLyBieSB0aGUgQysrIHN0YW5k
YXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNlIGNsYXNzIHR5cGUgaXMKLSAgICAvLyBkZXBl
bmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKLSAg
ICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmluZyBJbnZva2VXaXRoKS4KLSAgICByZXR1cm4g
dGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxlKGExLCBhMikpOwotICB9Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4K
LWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMyk+IDogcHVibGljCi0gICAgaW50ZXJu
YWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMpPiB7Ci0gcHVibGljOgotICB0eXBl
ZGVmIFIgRihBMSwgQTIsIEEzKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rp
b248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0
aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAgICAgIGNv
bnN0IE1hdGNoZXI8QTM+JiBtMykgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNo
ZXJzKDo6dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zKSk7Ci0gICAgcmV0dXJuIHRoaXMt
PmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJbnZva2UoQTEgYTEsIEEyIGEyLCBBMyBhMykg
ewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhp
cy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVy
ZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVt
cGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRv
IHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRo
KEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMykpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQ+
Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0KT4gOiBwdWJsaWMKLSAgICBp
bnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyLCBBMywgQTQpPiB7Ci0gcHVibGlj
OgotICB0eXBlZGVmIFIgRihBMSwgQTIsIEEzLCBBNCk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9j
a1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYg
bTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCkg
ewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVzdGluZzo6bWFrZV90
dXBsZShtMSwgbTIsIG0zLCBtNCkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsK
LSAgfQotCi0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0KSB7Ci0gICAgLy8g
RXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVuZm9yY2UgaXQsICd0aGlzLT4nIGlzIHJl
cXVpcmVkCi0gICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFyZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUg
YmFzZSBjbGFzcyB0eXBlIGlzCi0gICAgLy8gZGVwZW5kZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1
bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCi0gICAgLy8gbG9va2VkIGludG8gd2hlbiByZXNv
bHZpbmcgSW52b2tlV2l0aCkuCi0gICAgcmV0dXJuIHRoaXMtPkludm9rZVdpdGgoQXJndW1lbnRU
dXBsZShhMSwgYTIsIGEzLCBhNCkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwg
dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAg
dHlwZW5hbWUgQTU+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSk+
IDogcHVibGljCi0gICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEExLCBBMiwgQTMs
IEE0LCBBNSk+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUiBGKEExLCBBMiwgQTMsIEE0LCBBNSk7
Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxl
IEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9ja1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4m
IG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMs
IGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwgY29uc3QgTWF0Y2hlcjxBNT4mIG01KSB7Ci0gICAgdGhp
cy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0xLCBt
MiwgbTMsIG00LCBtNSkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMoKTsKLSAgfQot
Ci0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSkgewotICAgIC8v
IEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyBy
ZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhl
IGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJn
dW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVz
b2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50
VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwK
LSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYpPiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1v
Y2tlckJhc2U8UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2KT4gewotIHB1YmxpYzoKLSAgdHlwZWRl
ZiBSIEYoQTEsIEEyLCBBMywgQTQsIEE1LCBBNik7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJu
YWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9ja1Nw
ZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYgbTIs
Ci0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwgY29u
c3QgTWF0Y2hlcjxBNT4mIG01LAotICAgICAgY29uc3QgTWF0Y2hlcjxBNj4mIG02KSB7Ci0gICAg
dGhpcy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0x
LCBtMiwgbTMsIG00LCBtNSwKLSAgICAgICAgbTYpKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVu
dF9zcGVjKCk7Ci0gIH0KLQotICBSIEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwg
QTUgYTUsIEE2IGE2KSB7Ci0gICAgLy8gRXZlbiB0aG91Z2ggZ2NjIGFuZCBNU1ZDIGRvbid0IGVu
Zm9yY2UgaXQsICd0aGlzLT4nIGlzIHJlcXVpcmVkCi0gICAgLy8gYnkgdGhlIEMrKyBzdGFuZGFy
ZCBbMTQuNi40XSBoZXJlLCBhcyB0aGUgYmFzZSBjbGFzcyB0eXBlIGlzCi0gICAgLy8gZGVwZW5k
ZW50IG9uIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCAoYW5kIHRodXMgc2hvdWxkbid0IGJlCi0gICAg
Ly8gbG9va2VkIGludG8gd2hlbiByZXNvbHZpbmcgSW52b2tlV2l0aCkuCi0gICAgcmV0dXJuIHRo
aXMtPkludm9rZVdpdGgoQXJndW1lbnRUdXBsZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSk7Ci0g
IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIs
IHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYs
IHR5cGVuYW1lIEE3PgotY2xhc3MgRnVuY3Rpb25Nb2NrZXI8UihBMSwgQTIsIEEzLCBBNCwgQTUs
IEE2LCBBNyk+IDogcHVibGljCi0gICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpOwotICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpG
dW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1bWVudFR1cGxlOwotCi0gIE1vY2tTcGVjPEY+
JiBXaXRoKGNvbnN0IE1hdGNoZXI8QTE+JiBtMSwgY29uc3QgTWF0Y2hlcjxBMj4mIG0yLAotICAg
ICAgY29uc3QgTWF0Y2hlcjxBMz4mIG0zLCBjb25zdCBNYXRjaGVyPEE0PiYgbTQsIGNvbnN0IE1h
dGNoZXI8QTU+JiBtNSwKLSAgICAgIGNvbnN0IE1hdGNoZXI8QTY+JiBtNiwgY29uc3QgTWF0Y2hl
cjxBNz4mIG03KSB7Ci0gICAgdGhpcy0+Y3VycmVudF9zcGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0
aW5nOjptYWtlX3R1cGxlKG0xLCBtMiwgbTMsIG00LCBtNSwKLSAgICAgICAgbTYsIG03KSk7Ci0g
ICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJbnZva2UoQTEgYTEs
IEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcpIHsKLSAgICAvLyBFdmVu
IHRob3VnaCBnY2MgYW5kIE1TVkMgZG9uJ3QgZW5mb3JjZSBpdCwgJ3RoaXMtPicgaXMgcmVxdWly
ZWQKLSAgICAvLyBieSB0aGUgQysrIHN0YW5kYXJkIFsxNC42LjRdIGhlcmUsIGFzIHRoZSBiYXNl
IGNsYXNzIHR5cGUgaXMKLSAgICAvLyBkZXBlbmRlbnQgb24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50
IChhbmQgdGh1cyBzaG91bGRuJ3QgYmUKLSAgICAvLyBsb29rZWQgaW50byB3aGVuIHJlc29sdmlu
ZyBJbnZva2VXaXRoKS4KLSAgICByZXR1cm4gdGhpcy0+SW52b2tlV2l0aChBcmd1bWVudFR1cGxl
KGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwKLSAgICB0eXBlbmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBB
OD4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
KT4gOiBwdWJsaWMKLSAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlPFIoQTEsIEEyLCBB
MywgQTQsIEE1LCBBNiwgQTcsIEE4KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEsIEEy
LCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6
RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxG
PiYgV2l0aChjb25zdCBNYXRjaGVyPEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAg
ICAgIGNvbnN0IE1hdGNoZXI8QTM+JiBtMywgY29uc3QgTWF0Y2hlcjxBND4mIG00LCBjb25zdCBN
YXRjaGVyPEE1PiYgbTUsCi0gICAgICBjb25zdCBNYXRjaGVyPEE2PiYgbTYsIGNvbnN0IE1hdGNo
ZXI8QTc+JiBtNywgY29uc3QgTWF0Y2hlcjxBOD4mIG04KSB7Ci0gICAgdGhpcy0+Y3VycmVudF9z
cGVjKCkuU2V0TWF0Y2hlcnMoOjp0ZXN0aW5nOjptYWtlX3R1cGxlKG0xLCBtMiwgbTMsIG00LCBt
NSwKLSAgICAgICAgbTYsIG03LCBtOCkpOwotICAgIHJldHVybiB0aGlzLT5jdXJyZW50X3NwZWMo
KTsKLSAgfQotCi0gIFIgSW52b2tlKEExIGExLCBBMiBhMiwgQTMgYTMsIEE0IGE0LCBBNSBhNSwg
QTYgYTYsIEE3IGE3LCBBOCBhOCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBk
b24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysg
c3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8v
IGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBi
ZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJl
dHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcsIGE4KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBlbmFtZSBB
NSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOCwgdHlwZW5hbWUgQTk+Ci1j
bGFzcyBGdW5jdGlvbk1vY2tlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkp
PiA6IHB1YmxpYwotICAgIGludGVybmFsOjpGdW5jdGlvbk1vY2tlckJhc2U8UihBMSwgQTIsIEEz
LCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5KT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50
ZXJuYWw6OkZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9j
a1NwZWM8Rj4mIFdpdGgoY29uc3QgTWF0Y2hlcjxBMT4mIG0xLCBjb25zdCBNYXRjaGVyPEEyPiYg
bTIsCi0gICAgICBjb25zdCBNYXRjaGVyPEEzPiYgbTMsIGNvbnN0IE1hdGNoZXI8QTQ+JiBtNCwg
Y29uc3QgTWF0Y2hlcjxBNT4mIG01LAotICAgICAgY29uc3QgTWF0Y2hlcjxBNj4mIG02LCBjb25z
dCBNYXRjaGVyPEE3PiYgbTcsIGNvbnN0IE1hdGNoZXI8QTg+JiBtOCwKLSAgICAgIGNvbnN0IE1h
dGNoZXI8QTk+JiBtOSkgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6
dGVzdGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCi0gICAgICAgIG02LCBtNywg
bTgsIG05KSk7Ci0gICAgcmV0dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJ
bnZva2UoQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsIEE4
IGE4LCBBOSBhOSkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZv
cmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQg
WzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVu
dCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8v
IGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlz
LT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4
LCBhOSkpOwotICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5
cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LAotICAgIHR5
cGVuYW1lIEExMD4KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBB
NiwgQTcsIEE4LCBBOSwgQTEwKT4gOiBwdWJsaWMKLSAgICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2Nr
ZXJCYXNlPFIoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwgQTEwKT4gewotIHB1
YmxpYzoKLSAgdHlwZWRlZiBSIEYoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSwg
QTEwKTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50
VHVwbGUgQXJndW1lbnRUdXBsZTsKLQotICBNb2NrU3BlYzxGPiYgV2l0aChjb25zdCBNYXRjaGVy
PEExPiYgbTEsIGNvbnN0IE1hdGNoZXI8QTI+JiBtMiwKLSAgICAgIGNvbnN0IE1hdGNoZXI8QTM+
JiBtMywgY29uc3QgTWF0Y2hlcjxBND4mIG00LCBjb25zdCBNYXRjaGVyPEE1PiYgbTUsCi0gICAg
ICBjb25zdCBNYXRjaGVyPEE2PiYgbTYsIGNvbnN0IE1hdGNoZXI8QTc+JiBtNywgY29uc3QgTWF0
Y2hlcjxBOD4mIG04LAotICAgICAgY29uc3QgTWF0Y2hlcjxBOT4mIG05LCBjb25zdCBNYXRjaGVy
PEExMD4mIG0xMCkgewotICAgIHRoaXMtPmN1cnJlbnRfc3BlYygpLlNldE1hdGNoZXJzKDo6dGVz
dGluZzo6bWFrZV90dXBsZShtMSwgbTIsIG0zLCBtNCwgbTUsCi0gICAgICAgIG02LCBtNywgbTgs
IG05LCBtMTApKTsKLSAgICByZXR1cm4gdGhpcy0+Y3VycmVudF9zcGVjKCk7Ci0gIH0KLQotICBS
IEludm9rZShBMSBhMSwgQTIgYTIsIEEzIGEzLCBBNCBhNCwgQTUgYTUsIEE2IGE2LCBBNyBhNywg
QTggYTgsIEE5IGE5LAotICAgICAgQTEwIGExMCkgewotICAgIC8vIEV2ZW4gdGhvdWdoIGdjYyBh
bmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBpcyByZXF1aXJlZAotICAgIC8vIGJ5
IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMgdGhlIGJhc2UgY2xhc3MgdHlwZSBp
cwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUgYXJndW1lbnQgKGFuZCB0aHVzIHNo
b3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4gcmVzb2x2aW5nIEludm9rZVdpdGgp
LgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3VtZW50VHVwbGUoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwKLSAgICAgICAgYTEwKSk7Ci0gIH0KLX07Ci0KLX0gIC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBUaGUgc3R5bGUgZ3VpZGUgcHJvaGliaXRzICJ1c2lu
ZyIgc3RhdGVtZW50cyBpbiBhIG5hbWVzcGFjZSBzY29wZQotLy8gaW5zaWRlIGEgaGVhZGVyIGZp
bGUuICBIb3dldmVyLCB0aGUgRnVuY3Rpb25Nb2NrZXIgY2xhc3MgdGVtcGxhdGUKLS8vIGlzIG1l
YW50IHRvIGJlIGRlZmluZWQgaW4gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuICBUaGUgZm9sbG93
aW5nCi0vLyBsaW5lIGlzIGp1c3QgYSB0cmljayBmb3Igd29ya2luZyBhcm91bmQgYSBidWcgaW4g
TVNWQyA4LjAsIHdoaWNoCi0vLyBjYW5ub3QgaGFuZGxlIGl0IGlmIHdlIGRlZmluZSBGdW5jdGlv
bk1vY2tlciBpbiA6OnRlc3RpbmcuCi11c2luZyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXI7Ci0K
LS8vIEdNT0NLX1JFU1VMVF8odG4sIEYpIGV4cGFuZHMgdG8gdGhlIHJlc3VsdCB0eXBlIG9mIGZ1
bmN0aW9uIHR5cGUgRi4KLS8vIFdlIGRlZmluZSB0aGlzIGFzIGEgdmFyaWFkaWMgbWFjcm8gaW4g
Y2FzZSBGIGNvbnRhaW5zIHVucHJvdGVjdGVkCi0vLyBjb21tYXMgKHRoZSBzYW1lIHJlYXNvbiB0
aGF0IHdlIHVzZSB2YXJpYWRpYyBtYWNyb3MgaW4gb3RoZXIgcGxhY2VzCi0vLyBpbiB0aGlzIGZp
bGUpLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RF
ISEhCi0jZGVmaW5lIEdNT0NLX1JFU1VMVF8odG4sIC4uLikgXAotICAgIHRuIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6UmVzdWx0Ci0KLS8vIFRoZSB0eXBlIG9m
IGFyZ3VtZW50IE4gb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIHR5cGUuCi0vLyBJTlRFUk5BTCBJTVBM
RU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfQVJH
Xyh0biwgTiwgLi4uKSBcCi0gICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19W
QV9BUkdTX18+OjpBcmd1bWVudCMjTgotCi0vLyBUaGUgbWF0Y2hlciB0eXBlIGZvciBhcmd1bWVu
dCBOIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiB0eXBlLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01BVENIRVJfKHRu
LCBOLCAuLi4pIFwKLSAgICBjb25zdCA6OnRlc3Rpbmc6Ok1hdGNoZXI8R01PQ0tfQVJHXyh0biwg
TiwgX19WQV9BUkdTX18pPiYKLQotLy8gVGhlIHZhcmlhYmxlIGZvciBtb2NraW5nIHRoZSBnaXZl
biBtZXRob2QuCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VS
IENPREUhISEKLSNkZWZpbmUgR01PQ0tfTU9DS0VSXyhhcml0eSwgY29uc3RuZXNzLCBNZXRob2Qp
IFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGdtb2NrIyNjb25zdG5lc3MjI2FyaXR5IyNfIyNN
ZXRob2QjI18sIF9fTElORV9fKQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidU
IFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUVUSE9EMF8odG4sIGNvbnN0bmVz
cywgY3QsIE1ldGhvZCwgLi4uKSBcCi0gIEdNT0NLX1JFU1VMVF8odG4sIF9fVkFfQVJHU19fKSBj
dCBNZXRob2QoIFwKLSAgICAgICkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNT
RVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFy
Z3VtZW50VHVwbGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSAwKSwgXAotICAgICAgICB0aGlz
X21ldGhvZF9kb2VzX25vdF90YWtlXzBfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8o
MCwgY29uc3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAot
ICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDAsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoKTsg
XAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKLSAgICAgIGdt
b2NrXyMjTWV0aG9kKCkgY29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tFUl8oMCwgY29uc3Ru
ZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9D
S0VSXygwLCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aCgpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6
dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oMCwgY29u
c3RuZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0g
RE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0QxXyh0biwgY29u
c3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdT
X18pIGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdt
b2NrX2ExKSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rp
bmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46
OnZhbHVlIFwKLSAgICAgICAgICAgID09IDEpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNf
bm90X3Rha2VfMV9hcmd1bWVudCk7IFwKLSAgICBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywg
TWV0aG9kKS5TZXRPd25lckFuZE5hbWUodGhpcywgI01ldGhvZCk7IFwKLSAgICByZXR1cm4gR01P
Q0tfTU9DS0VSXygxLCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExKTsgXAotICB9
IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMj
TWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEpIGNvbnN0
bmVzcyB7IFwKLSAgICBHTU9DS19NT0NLRVJfKDEsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rl
ck93bmVyKHRoaXMpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oMSwgY29uc3RuZXNzLCBN
ZXRob2QpLldpdGgoZ21vY2tfYTEpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6dGVzdGluZzo6RnVu
Y3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oMSwgY29uc3RuZXNzLCBcCi0g
ICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9OJ1QgVVNFIElO
IFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0QyXyh0biwgY29uc3RuZXNzLCBjdCwg
TWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18pIGN0IE1ldGhv
ZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0g
ICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIpIGNvbnN0bmVzcyB7
IFwKLSAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKDo6dGVzdGluZzo6dHVwbGVfc2l6ZTwgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVudFR1cGxlPjo6dmFsdWUgXAotICAgICAgICAg
ICAgPT0gMiksIFwKLSAgICAgICAgdGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV8yX2FyZ3VtZW50
cyk7IFwKLSAgICBHTU9DS19NT0NLRVJfKDIsIGNvbnN0bmVzcywgTWV0aG9kKS5TZXRPd25lckFu
ZE5hbWUodGhpcywgI01ldGhvZCk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygyLCBjb25z
dG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2ExLCBnbW9ja19hMik7IFwKLSAgfSBcCi0gIDo6
dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCi0gICAgICBnbW9ja18jI01ldGhvZChH
TU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0gICAgICAgICAg
ICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyKSBj
b25zdG5lc3MgeyBcCi0gICAgR01PQ0tfTU9DS0VSXygyLCBjb25zdG5lc3MsIE1ldGhvZCkuUmVn
aXN0ZXJPd25lcih0aGlzKTsgXAotICAgIHJldHVybiBHTU9DS19NT0NLRVJfKDIsIGNvbnN0bmVz
cywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBnbW9ja19hMik7IFwKLSAgfSBcCi0gIG11dGFibGUg
Ojp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXygyLCBj
b25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDNfKHRuLCBj
b25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FS
R1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19h
MiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzKSBjb25z
dG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3Np
emU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVzdGluZzo6aW50
ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlIFwKLSAg
ICAgICAgICAgID09IDMpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfM19h
cmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXygzLCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0
T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8o
MywgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAg
ICAgZ21vY2tfYTMpOyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19f
PiYgXAotICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJH
U19fKSBnbW9ja19hMSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMykgY29uc3RuZXNzIHsgXAotICAg
IEdNT0NLX01PQ0tFUl8oMywgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhpcyk7
IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygzLCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0aChn
bW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMpOyBcCi0gIH0gXAotICBtdXRh
YmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8o
MywgY29uc3RuZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE9OJ1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0Q0Xyh0
biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19W
QV9BUkdTX18pIGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdT
X18pIGdtb2NrX2ExLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21v
Y2tfYTIsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywg
XAotICAgICAgR01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0KSBjb25zdG5l
c3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZhbHVlIFwKLSAgICAg
ICAgICAgID09IDQpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90X3Rha2VfNF9hcmd1
bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg0LCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3du
ZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNCwg
Y29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAg
Z21vY2tfYTMsIGdtb2NrX2E0KTsgXAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZB
X0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKLSAgICAgICAgICAgICAgICAgICAg
IEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQp
IGNvbnN0bmVzcyB7IFwKLSAgICBHTU9DS19NT0NLRVJfKDQsIGNvbnN0bmVzcywgTWV0aG9kKS5S
ZWdpc3Rlck93bmVyKHRoaXMpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNCwgY29uc3Ru
ZXNzLCBNZXRob2QpLldpdGgoZ21vY2tfYTEsIGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2Ez
LCBnbW9ja19hNCk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tl
cjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg0LCBjb25zdG5lc3MsIFwKLSAgICAgIE1ldGhv
ZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RF
ISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDVfKHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4u
LikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAg
ICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NL
X0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0
biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJH
U19fKSBnbW9ja19hNSkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygo
Ojp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50
VHVwbGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSA1KSwgXAotICAgICAgICB0aGlzX21ldGhv
ZF9kb2VzX25vdF90YWtlXzVfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8oNSwgY29u
c3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJl
dHVybiBHTU9DS19NT0NLRVJfKDUsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEs
IGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUpOyBcCi0g
IH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAgZ21vY2tf
IyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAot
ICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDMsIF9f
VkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hF
Ul8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSkgY29uc3RuZXNzIHsg
XAotICAgIEdNT0NLX01PQ0tFUl8oNSwgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIo
dGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg1LCBjb25zdG5lc3MsIE1ldGhvZCku
V2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBn
bW9ja19hNSk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxf
X1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg1LCBjb25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkK
LQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEh
Ci0jZGVmaW5lIEdNT0NLX01FVEhPRDZfKHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikg
XAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBH
TU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FS
R18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwg
MywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZB
X0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19f
KSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2Nr
X2E2KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRlc3Rpbmc6
OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRuIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBsZT46OnZh
bHVlIFwKLSAgICAgICAgICAgID09IDYpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2RvZXNfbm90
X3Rha2VfNl9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg2LCBjb25zdG5lc3MsIE1l
dGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NL
X01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21vY2tfYTIs
IFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYpOyBcCi0g
IH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAgZ21vY2tf
IyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19hMSwgXAot
ICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDMsIF9f
VkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hF
Ul8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAgICAgICAg
R01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgICAg
ICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNikg
Y29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tFUl8oNiwgY29uc3RuZXNzLCBNZXRob2QpLlJl
Z2lzdGVyT3duZXIodGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg2LCBjb25zdG5l
c3MsIE1ldGhvZCkuV2l0aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMs
IGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYpOyBcCi0gIH0gXAotICBtdXRhYmxlIDo6dGVz
dGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+IEdNT0NLX01PQ0tFUl8oNiwgY29uc3Ru
ZXNzLCBcCi0gICAgICBNZXRob2QpCi0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE9O
J1QgVVNFIElOIFVTRVIgQ09ERSEhIQotI2RlZmluZSBHTU9DS19NRVRIT0Q3Xyh0biwgY29uc3Ru
ZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19WQV9BUkdTX18p
IGN0IE1ldGhvZCggXAotICAgICAgR01PQ0tfQVJHXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2Nr
X2ExLCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwK
LSAgICAgIEdNT0NLX0FSR18odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAg
R01PQ0tfQVJHXyh0biwgNCwgX19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCi0gICAgICBHTU9DS19B
UkdfKHRuLCA1LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTUsIFwKLSAgICAgIEdNT0NLX0FSR18odG4s
IDYsIF9fVkFfQVJHU19fKSBnbW9ja19hNiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNywgX19W
QV9BUkdTX18pIGdtb2NrX2E3KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NF
UlRfKCg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJn
dW1lbnRUdXBsZT46OnZhbHVlIFwKLSAgICAgICAgICAgID09IDcpLCBcCi0gICAgICAgIHRoaXNf
bWV0aG9kX2RvZXNfbm90X3Rha2VfN19hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg3
LCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0g
ICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9j
a19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwg
Z21vY2tfYTYsIGdtb2NrX2E3KTsgXAotICB9IFwKLSAgOjp0ZXN0aW5nOjpNb2NrU3BlYzxfX1ZB
X0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMjTWV0aG9kKEdNT0NLX01BVENIRVJfKHRuLCAxLCBf
X1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENI
RVJfKHRuLCAyLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTIsIFwKLSAgICAgICAgICAgICAgICAgICAg
IEdNT0NLX01BVENIRVJfKHRuLCAzLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTMsIFwKLSAgICAgICAg
ICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQs
IFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA1LCBfX1ZBX0FSR1Nf
XykgZ21vY2tfYTUsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01BVENIRVJfKHRuLCA2
LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTYsIFwKLSAgICAgICAgICAgICAgICAgICAgIEdNT0NLX01B
VENIRVJfKHRuLCA3LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcpIGNvbnN0bmVzcyB7IFwKLSAgICBH
TU9DS19NT0NLRVJfKDcsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBc
Ci0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oNywgY29uc3RuZXNzLCBNZXRob2QpLldpdGgoZ21v
Y2tfYTEsIGdtb2NrX2EyLCBcCi0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUs
IGdtb2NrX2E2LCBnbW9ja19hNyk7IFwKLSAgfSBcCi0gIG11dGFibGUgOjp0ZXN0aW5nOjpGdW5j
dGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg3LCBjb25zdG5lc3MsIFwKLSAg
ICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4g
VVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDhfKHRuLCBjb25zdG5lc3MsIGN0LCBN
ZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FSR1NfXykgY3QgTWV0aG9k
KCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykgZ21vY2tfYTEsIFwKLSAg
ICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgR01P
Q0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0gICAgICBHTU9DS19BUkdf
KHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDUs
IF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgNiwgX19WQV9B
UkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA3LCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19h
OCkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0
dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0biA6OnRlc3Rp
bmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1
ZSBcCi0gICAgICAgICAgICA9PSA4KSwgXAotICAgICAgICB0aGlzX21ldGhvZF9kb2VzX25vdF90
YWtlXzhfYXJndW1lbnRzKTsgXAotICAgIEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBNZXRo
b2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJldHVybiBHTU9DS19N
T0NLRVJfKDgsIGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoZ21vY2tfYTEsIGdtb2NrX2EyLCBc
Ci0gICAgICAgIGdtb2NrX2EzLCBnbW9ja19hNCwgZ21vY2tfYTUsIGdtb2NrX2E2LCBnbW9ja19h
NywgZ21vY2tfYTgpOyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19f
PiYgXAotICAgICAgZ21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJH
U19fKSBnbW9ja19hMSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDIsIF9fVkFfQVJHU19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAg
ICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAg
ICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9j
a19hNSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFf
QVJHU19fKSBnbW9ja19hNiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8o
dG4sIDcsIF9fVkFfQVJHU19fKSBnbW9ja19hNywgXAotICAgICAgICAgICAgICAgICAgICAgR01P
Q0tfTUFUQ0hFUl8odG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19hOCkgY29uc3RuZXNzIHsgXAot
ICAgIEdNT0NLX01PQ0tFUl8oOCwgY29uc3RuZXNzLCBNZXRob2QpLlJlZ2lzdGVyT3duZXIodGhp
cyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXyg4LCBjb25zdG5lc3MsIE1ldGhvZCkuV2l0
aChnbW9ja19hMSwgZ21vY2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9j
a19hNSwgZ21vY2tfYTYsIGdtb2NrX2E3LCBnbW9ja19hOCk7IFwKLSAgfSBcCi0gIG11dGFibGUg
Ojp0ZXN0aW5nOjpGdW5jdGlvbk1vY2tlcjxfX1ZBX0FSR1NfXz4gR01PQ0tfTU9DS0VSXyg4LCBj
b25zdG5lc3MsIFwKLSAgICAgIE1ldGhvZCkKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04g
LSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01FVEhPRDlfKHRuLCBj
b25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBfX1ZBX0FS
R1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FSR1NfXykg
Z21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBnbW9ja19h
MiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2EzLCBcCi0g
ICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAgICAgIEdN
T0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01PQ0tfQVJH
Xyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA3
LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgsIF9fVkFf
QVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgOSwgX19WQV9BUkdTX18p
IGdtb2NrX2E5KSBjb25zdG5lc3MgeyBcCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKCg6OnRl
c3Rpbmc6OnR1cGxlX3NpemU8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRu
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uPF9fVkFfQVJHU19fPjo6QXJndW1lbnRUdXBs
ZT46OnZhbHVlIFwKLSAgICAgICAgICAgID09IDkpLCBcCi0gICAgICAgIHRoaXNfbWV0aG9kX2Rv
ZXNfbm90X3Rha2VfOV9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXyg5LCBjb25zdG5l
c3MsIE1ldGhvZCkuU2V0T3duZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJu
IEdNT0NLX01PQ0tFUl8oOSwgY29uc3RuZXNzLCBNZXRob2QpLkludm9rZShnbW9ja19hMSwgZ21v
Y2tfYTIsIFwKLSAgICAgICAgZ21vY2tfYTMsIGdtb2NrX2E0LCBnbW9ja19hNSwgZ21vY2tfYTYs
IGdtb2NrX2E3LCBnbW9ja19hOCwgXAotICAgICAgICBnbW9ja19hOSk7IFwKLSAgfSBcCi0gIDo6
dGVzdGluZzo6TW9ja1NwZWM8X19WQV9BUkdTX18+JiBcCi0gICAgICBnbW9ja18jI01ldGhvZChH
TU9DS19NQVRDSEVSXyh0biwgMSwgX19WQV9BUkdTX18pIGdtb2NrX2ExLCBcCi0gICAgICAgICAg
ICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMiwgX19WQV9BUkdTX18pIGdtb2NrX2EyLCBc
Ci0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgMywgX19WQV9BUkdTX18p
IGdtb2NrX2EzLCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNCwg
X19WQV9BUkdTX18pIGdtb2NrX2E0LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRD
SEVSXyh0biwgNSwgX19WQV9BUkdTX18pIGdtb2NrX2E1LCBcCi0gICAgICAgICAgICAgICAgICAg
ICBHTU9DS19NQVRDSEVSXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICAg
ICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgNywgX19WQV9BUkdTX18pIGdtb2NrX2E3
LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwgOCwgX19WQV9BUkdT
X18pIGdtb2NrX2E4LCBcCi0gICAgICAgICAgICAgICAgICAgICBHTU9DS19NQVRDSEVSXyh0biwg
OSwgX19WQV9BUkdTX18pIGdtb2NrX2E5KSBjb25zdG5lc3MgeyBcCi0gICAgR01PQ0tfTU9DS0VS
Xyg5LCBjb25zdG5lc3MsIE1ldGhvZCkuUmVnaXN0ZXJPd25lcih0aGlzKTsgXAotICAgIHJldHVy
biBHTU9DS19NT0NLRVJfKDksIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBnbW9j
a19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19hNiwg
Z21vY2tfYTcsIGdtb2NrX2E4LCBcCi0gICAgICAgIGdtb2NrX2E5KTsgXAotICB9IFwKLSAgbXV0
YWJsZSA6OnRlc3Rpbmc6OkZ1bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJf
KDksIGNvbnN0bmVzcywgXAotICAgICAgTWV0aG9kKQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRB
VElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUVUSE9EMTBf
KHRuLCBjb25zdG5lc3MsIGN0LCBNZXRob2QsIC4uLikgXAotICBHTU9DS19SRVNVTFRfKHRuLCBf
X1ZBX0FSR1NfXykgY3QgTWV0aG9kKCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxLCBfX1ZBX0FS
R1NfXykgZ21vY2tfYTEsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDIsIF9fVkFfQVJHU19fKSBn
bW9ja19hMiwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgMywgX19WQV9BUkdTX18pIGdtb2NrX2Ez
LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCA0LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTQsIFwKLSAg
ICAgIEdNT0NLX0FSR18odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAgICAgR01P
Q0tfQVJHXyh0biwgNiwgX19WQV9BUkdTX18pIGdtb2NrX2E2LCBcCi0gICAgICBHTU9DS19BUkdf
KHRuLCA3LCBfX1ZBX0FSR1NfXykgZ21vY2tfYTcsIFwKLSAgICAgIEdNT0NLX0FSR18odG4sIDgs
IF9fVkFfQVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgR01PQ0tfQVJHXyh0biwgOSwgX19WQV9B
UkdTX18pIGdtb2NrX2E5LCBcCi0gICAgICBHTU9DS19BUkdfKHRuLCAxMCwgX19WQV9BUkdTX18p
IGdtb2NrX2ExMCkgY29uc3RuZXNzIHsgXAotICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0
ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0
biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVw
bGU+Ojp2YWx1ZSBcCi0gICAgICAgICAgICA9PSAxMCksIFwKLSAgICAgICAgdGhpc19tZXRob2Rf
ZG9lc19ub3RfdGFrZV8xMF9hcmd1bWVudHMpOyBcCi0gICAgR01PQ0tfTU9DS0VSXygxMCwgY29u
c3RuZXNzLCBNZXRob2QpLlNldE93bmVyQW5kTmFtZSh0aGlzLCAjTWV0aG9kKTsgXAotICAgIHJl
dHVybiBHTU9DS19NT0NLRVJfKDEwLCBjb25zdG5lc3MsIE1ldGhvZCkuSW52b2tlKGdtb2NrX2Ex
LCBnbW9ja19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9j
a19hNiwgZ21vY2tfYTcsIGdtb2NrX2E4LCBnbW9ja19hOSwgXAotICAgICAgICBnbW9ja19hMTAp
OyBcCi0gIH0gXAotICA6OnRlc3Rpbmc6Ok1vY2tTcGVjPF9fVkFfQVJHU19fPiYgXAotICAgICAg
Z21vY2tfIyNNZXRob2QoR01PQ0tfTUFUQ0hFUl8odG4sIDEsIF9fVkFfQVJHU19fKSBnbW9ja19h
MSwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDIsIF9fVkFfQVJH
U19fKSBnbW9ja19hMiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4s
IDMsIF9fVkFfQVJHU19fKSBnbW9ja19hMywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tf
TUFUQ0hFUl8odG4sIDQsIF9fVkFfQVJHU19fKSBnbW9ja19hNCwgXAotICAgICAgICAgICAgICAg
ICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDUsIF9fVkFfQVJHU19fKSBnbW9ja19hNSwgXAotICAg
ICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDYsIF9fVkFfQVJHU19fKSBnbW9j
a19hNiwgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDcsIF9fVkFf
QVJHU19fKSBnbW9ja19hNywgXAotICAgICAgICAgICAgICAgICAgICAgR01PQ0tfTUFUQ0hFUl8o
dG4sIDgsIF9fVkFfQVJHU19fKSBnbW9ja19hOCwgXAotICAgICAgICAgICAgICAgICAgICAgR01P
Q0tfTUFUQ0hFUl8odG4sIDksIF9fVkFfQVJHU19fKSBnbW9ja19hOSwgXAotICAgICAgICAgICAg
ICAgICAgICAgR01PQ0tfTUFUQ0hFUl8odG4sIDEwLCBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgX19WQV9BUkdTX18pIGdtb2NrX2ExMCkgY29uc3RuZXNzIHsgXAotICAgIEdNT0NLX01PQ0tF
Ul8oMTAsIGNvbnN0bmVzcywgTWV0aG9kKS5SZWdpc3Rlck93bmVyKHRoaXMpOyBcCi0gICAgcmV0
dXJuIEdNT0NLX01PQ0tFUl8oMTAsIGNvbnN0bmVzcywgTWV0aG9kKS5XaXRoKGdtb2NrX2ExLCBn
bW9ja19hMiwgXAotICAgICAgICBnbW9ja19hMywgZ21vY2tfYTQsIGdtb2NrX2E1LCBnbW9ja19h
NiwgZ21vY2tfYTcsIGdtb2NrX2E4LCBnbW9ja19hOSwgXAotICAgICAgICBnbW9ja19hMTApOyBc
Ci0gIH0gXAotICBtdXRhYmxlIDo6dGVzdGluZzo6RnVuY3Rpb25Nb2NrZXI8X19WQV9BUkdTX18+
IEdNT0NLX01PQ0tFUl8oMTAsIGNvbnN0bmVzcywgXAotICAgICAgTWV0aG9kKQotCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EMChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKCwgLCAsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX01FVEhPRDEobSwgLi4uKSBHTU9DS19NRVRIT0QxXygsICwgLCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QyKG0sIC4uLikgR01PQ0tfTUVUSE9EMl8o
LCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMyhtLCAuLi4pIEdNT0NL
X01FVEhPRDNfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDQobSwg
Li4uKSBHTU9DS19NRVRIT0Q0XygsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19N
RVRIT0Q1KG0sIC4uLikgR01PQ0tfTUVUSE9ENV8oLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfTUVUSE9ENihtLCAuLi4pIEdNT0NLX01FVEhPRDZfKCwgLCAsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX01FVEhPRDcobSwgLi4uKSBHTU9DS19NRVRIT0Q3XygsICwgLCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q4KG0sIC4uLikgR01PQ0tfTUVUSE9E
OF8oLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EOShtLCAuLi4pIEdN
T0NLX01FVEhPRDlfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDEw
KG0sIC4uLikgR01PQ0tfTUVUSE9EMTBfKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVmaW5l
IE1PQ0tfQ09OU1RfTUVUSE9EMChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKCwgY29uc3QsICwgbSwg
X19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMShtLCAuLi4pIEdNT0NLX01F
VEhPRDFfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVU
SE9EMihtLCAuLi4pIEdNT0NLX01FVEhPRDJfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0j
ZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMyhtLCAuLi4pIEdNT0NLX01FVEhPRDNfKCwgY29uc3Qs
ICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENChtLCAuLi4pIEdN
T0NLX01FVEhPRDRfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09O
U1RfTUVUSE9ENShtLCAuLi4pIEdNT0NLX01FVEhPRDVfKCwgY29uc3QsICwgbSwgX19WQV9BUkdT
X18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENihtLCAuLi4pIEdNT0NLX01FVEhPRDZfKCwg
Y29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENyhtLCAu
Li4pIEdNT0NLX01FVEhPRDdfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfQ09OU1RfTUVUSE9EOChtLCAuLi4pIEdNT0NLX01FVEhPRDhfKCwgY29uc3QsICwgbSwgX19W
QV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EOShtLCAuLi4pIEdNT0NLX01FVEhP
RDlfKCwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9E
MTAobSwgLi4uKSBHTU9DS19NRVRIT0QxMF8oLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLQot
I2RlZmluZSBNT0NLX01FVEhPRDBfVChtLCAuLi4pIEdNT0NLX01FVEhPRDBfKHR5cGVuYW1lLCAs
ICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMV9UKG0sIC4uLikgR01PQ0tf
TUVUSE9EMV8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRI
T0QyX1QobSwgLi4uKSBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX01FVEhPRDNfVChtLCAuLi4pIEdNT0NLX01FVEhPRDNfKHR5cGVuYW1l
LCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9ENF9UKG0sIC4uLikgR01P
Q0tfTUVUSE9ENF8odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19N
RVRIT0Q1X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX01FVEhPRDZfVChtLCAuLi4pIEdNT0NLX01FVEhPRDZfKHR5cGVu
YW1lLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EN19UKG0sIC4uLikg
R01PQ0tfTUVUSE9EN18odHlwZW5hbWUsICwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9D
S19NRVRIT0Q4X1QobSwgLi4uKSBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFf
QVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDlfVChtLCAuLi4pIEdNT0NLX01FVEhPRDlfKHR5
cGVuYW1lLCAsICwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EMTBfVChtLCAu
Li4pIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0QxX1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMV8odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDJfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EM19UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q0X1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENF8odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDVfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9ENl9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDZfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q3X1QobSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EN18odHlwZW5hbWUsIGNvbnN0LCAsIG0s
IF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDhfVChtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgY29uc3QsICwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfQ09OU1RfTUVUSE9EOV9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDlfKHR5
cGVuYW1lLCBjb25zdCwgLCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0QxMF9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgY29uc3QsICwg
bSwgX19WQV9BUkdTX18pCi0KLSNkZWZpbmUgTU9DS19NRVRIT0QwX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0j
ZGVmaW5lIE1PQ0tfTUVUSE9EMV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9D
S19NRVRIT0QxXygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDJf
V0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMl8oLCAsIGN0LCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QzX1dJVEhfQ0FMTFRZUEUoY3QsIG0s
IC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVm
aW5lIE1PQ0tfTUVUSE9ENF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19N
RVRIT0Q0XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDVfV0lU
SF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENV8oLCAsIGN0LCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q2X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDZfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EN19XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRI
T0Q3XygsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDhfV0lUSF9D
QUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EOF8oLCAsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q5X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDlfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfTUVUSE9EMTBfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9E
MTBfKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0KLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Qw
X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDBfKCwgY29uc3Qs
IGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QxX1dJVEhfQ0FM
TFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDFfKCwgY29uc3QsIGN0LCBtLCBf
X1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QyX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDJfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QzX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDNfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZp
bmUgTU9DS19DT05TVF9NRVRIT0Q0X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdN
T0NLX01FVEhPRDRfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19D
T05TVF9NRVRIT0Q1X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhP
RDVfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRI
T0Q2X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDZfKCwgY29u
c3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q3X1dJVEhf
Q0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDdfKCwgY29uc3QsIGN0LCBt
LCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q4X1dJVEhfQ0FMTFRZUEUo
Y3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDhfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q5X1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDlfKCwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNk
ZWZpbmUgTU9DS19DT05TVF9NRVRIT0QxMF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAg
ICBHTU9DS19NRVRIT0QxMF8oLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19fKQotCi0jZGVmaW5l
IE1PQ0tfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01F
VEhPRDBfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRI
T0QxX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EMV8odHlw
ZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDJfVF9XSVRI
X0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgLCBj
dCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EM19UX1dJVEhfQ0FMTFRZUEUo
Y3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDNfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q0X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4u
KSBcCi0gICAgR01PQ0tfTUVUSE9ENF8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQot
I2RlZmluZSBNT0NLX01FVEhPRDVfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBH
TU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1P
Q0tfTUVUSE9ENl9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhP
RDZfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0Q3
X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EN18odHlwZW5h
bWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotI2RlZmluZSBNT0NLX01FVEhPRDhfVF9XSVRIX0NB
TExUWVBFKGN0LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgLCBjdCwg
bSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfTUVUSE9EOV9UX1dJVEhfQ0FMTFRZUEUoY3Qs
IG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRDlfKHR5cGVuYW1lLCAsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19NRVRIT0QxMF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDEwXyh0eXBlbmFtZSwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0K
LSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QwX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4uKSBc
Ci0gICAgR01PQ0tfTUVUSE9EMF8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdTX18p
Ci0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMV9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikg
XAotICAgIEdNT0NLX01FVEhPRDFfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDJfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4p
IFwKLSAgICBHTU9DS19NRVRIT0QyXyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0QzX1RfV0lUSF9DQUxMVFlQRShjdCwgbSwgLi4u
KSBcCi0gICAgR01PQ0tfTUVUSE9EM18odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9BUkdT
X18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9ENF9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4u
LikgXAotICAgIEdNT0NLX01FVEhPRDRfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFfQVJH
U19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDVfVF9XSVRIX0NBTExUWVBFKGN0LCBtLCAu
Li4pIFwKLSAgICBHTU9DS19NRVRIT0Q1Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZBX0FS
R1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q2X1RfV0lUSF9DQUxMVFlQRShjdCwgbSwg
Li4uKSBcCi0gICAgR01PQ0tfTUVUSE9ENl8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19WQV9B
UkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EN19UX1dJVEhfQ0FMTFRZUEUoY3QsIG0s
IC4uLikgXAotICAgIEdNT0NLX01FVEhPRDdfKHR5cGVuYW1lLCBjb25zdCwgY3QsIG0sIF9fVkFf
QVJHU19fKQotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRDhfVF9XSVRIX0NBTExUWVBFKGN0LCBt
LCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0Q4Xyh0eXBlbmFtZSwgY29uc3QsIGN0LCBtLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgTU9DS19DT05TVF9NRVRIT0Q5X1RfV0lUSF9DQUxMVFlQRShjdCwg
bSwgLi4uKSBcCi0gICAgR01PQ0tfTUVUSE9EOV8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwgX19W
QV9BUkdTX18pCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EMTBfVF9XSVRIX0NBTExUWVBFKGN0
LCBtLCAuLi4pIFwKLSAgICBHTU9DS19NRVRIT0QxMF8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwg
X19WQV9BUkdTX18pCi0KLS8vIEEgTW9ja0Z1bmN0aW9uPEY+IGNsYXNzIGhhcyBvbmUgbW9jayBt
ZXRob2Qgd2hvc2UgdHlwZSBpcyBGLiAgSXQgaXMKLS8vIHVzZWZ1bCB3aGVuIHlvdSBqdXN0IHdh
bnQgeW91ciB0ZXN0IGNvZGUgdG8gZW1pdCBzb21lIG1lc3NhZ2VzIGFuZAotLy8gaGF2ZSBHb29n
bGUgTW9jayB2ZXJpZnkgdGhlIHJpZ2h0IG1lc3NhZ2VzIGFyZSBzZW50IChhbmQgcGVyaGFwcyBh
dAotLy8gdGhlIHJpZ2h0IHRpbWVzKS4gIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIGV4ZXJjaXNp
bmcgY29kZToKLS8vCi0vLyAgIEZvbygxKTsKLS8vICAgRm9vKDIpOwotLy8gICBGb28oMyk7Ci0v
LwotLy8gYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgRm9vKDEpIGFuZCBGb28oMykgYm90aCBpbnZv
a2UKLS8vIG1vY2suQmFyKCJhIiksIGJ1dCBGb28oMikgZG9lc24ndCBpbnZva2UgYW55dGhpbmcs
IHlvdSBjYW4gd3JpdGU6Ci0vLwotLy8gVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29ycmVjdGx5
KSB7Ci0vLyAgIE15TW9jayBtb2NrOwotLy8gICBNb2NrRnVuY3Rpb248dm9pZChzdHJpbmcgY2hl
Y2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotLy8gICB7Ci0vLyAgICAgSW5TZXF1ZW5jZSBzOwotLy8K
LS8vICAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwo
Y2hlY2ssIENhbGwoIjEiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwoIjIiKSk7
Ci0vLyAgICAgRVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotLy8gICB9Ci0vLyAgIEZvbygx
KTsKLS8vICAgY2hlY2suQ2FsbCgiMSIpOwotLy8gICBGb28oMik7Ci0vLyAgIGNoZWNrLkNhbGwo
IjIiKTsKLS8vICAgRm9vKDMpOwotLy8gfQotLy8KLS8vIFRoZSBleHBlY3RhdGlvbiBzcGVjIHNh
eXMgdGhhdCB0aGUgZmlyc3QgQmFyKCJhIikgbXVzdCBoYXBwZW4KLS8vIGJlZm9yZSBjaGVjayBw
b2ludCAiMSIsIHRoZSBzZWNvbmQgQmFyKCJhIikgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hlY2sKLS8v
IHBvaW50ICIyIiwgYW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0d28gY2hl
Y2sKLS8vIHBvaW50cy4gVGhlIGV4cGxpY2l0IGNoZWNrIHBvaW50cyBtYWtlIGl0IGVhc3kgdG8g
dGVsbCB3aGljaAotLy8gQmFyKCJhIikgaXMgY2FsbGVkIGJ5IHdoaWNoIGNhbGwgdG8gRm9vKCku
Ci0vLwotLy8gTW9ja0Z1bmN0aW9uPEY+IGNhbiBhbHNvIGJlIHVzZWQgdG8gZXhlcmNpc2UgY29k
ZSB0aGF0IGFjY2VwdHMKLS8vIHN0ZDo6ZnVuY3Rpb248Rj4gY2FsbGJhY2tzLiBUbyBkbyBzbywg
dXNlIEFzU3RkRnVuY3Rpb24oKSBtZXRob2QKLS8vIHRvIGNyZWF0ZSBzdGQ6OmZ1bmN0aW9uIHBy
b3h5IGZvcndhcmRpbmcgdG8gb3JpZ2luYWwgb2JqZWN0J3MgQ2FsbC4KLS8vIEV4YW1wbGU6Ci0v
LwotLy8gVEVTVChGb29UZXN0LCBSdW5zQ2FsbGJhY2tXaXRoQmFyQXJndW1lbnQpIHsKLS8vICAg
TW9ja0Z1bmN0aW9uPGludChzdHJpbmcpPiBjYWxsYmFjazsKLS8vICAgRVhQRUNUX0NBTEwoY2Fs
bGJhY2ssIENhbGwoImJhciIpKS5XaWxsT25jZShSZXR1cm4oMSkpOwotLy8gICBGb28oY2FsbGJh
Y2suQXNTdGRGdW5jdGlvbigpKTsKLS8vIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgotY2xhc3Mg
TW9ja0Z1bmN0aW9uOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUj4KLWNsYXNzIE1vY2tGdW5jdGlv
bjxSKCk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0Qw
X1QoQ2FsbCwgUigpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVu
Y3Rpb248UigpPiBBc1N0ZEZ1bmN0aW9uKCkgewotICAgIHJldHVybiBbdGhpc10oKSAtPiBSIHsK
LSAgICAgIHJldHVybiB0aGlzLT5DYWxsKCk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEEwPgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTApPiB7Ci0gcHVibGljOgotICBNb2Nr
RnVuY3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9EMV9UKENhbGwsIFIoQTApKTsKLQotI2lmIEdU
RVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCk+IEFzU3RkRnVuY3Rp
b24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCkgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhp
cy0+Q2FsbChhMCk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBl
bmFtZSBBMT4KLWNsYXNzIE1vY2tGdW5jdGlvbjxSKEEwLCBBMSk+IHsKLSBwdWJsaWM6Ci0gIE1v
Y2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0QyX1QoQ2FsbCwgUihBMCwgQTEpKTsKLQot
I2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEpPiBB
c1N0ZEZ1bmN0aW9uKCkgewotICAgIHJldHVybiBbdGhpc10oQTAgYTAsIEExIGExKSAtPiBSIHsK
LSAgICAgIHJldHVybiB0aGlzLT5DYWxsKGEwLCBhMSk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci1jbGFzcyBNb2NrRnVu
Y3Rpb248UihBMCwgQTEsIEEyKT4gewotIHB1YmxpYzoKLSAgTW9ja0Z1bmN0aW9uKCkge30KLQot
ICBNT0NLX01FVEhPRDNfVChDYWxsLCBSKEEwLCBBMSwgQTIpKTsKLQotI2lmIEdURVNUX0hBU19T
VERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwgQTEsIEEyKT4gQXNTdGRGdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gW3RoaXNdKEEwIGEwLCBBMSBhMSwgQTIgYTIpIC0+IFIgewotICAg
ICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBhMik7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhNb2NrRnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgot
Y2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMpPiB7Ci0gcHVibGljOgotICBNb2Nr
RnVuY3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9ENF9UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMp
KTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rpb248UihBMCwg
QTEsIEEyLCBBMyk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwg
QTEgYTEsIEEyIGEyLCBBMyBhMykgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwg
YTEsIGEyLCBhMyk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0PgotY2xh
c3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0KT4gewotIHB1YmxpYzoKLSAgTW9j
a0Z1bmN0aW9uKCkge30KLQotICBNT0NLX01FVEhPRDVfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEz
LCBBNCkpOwotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLSAgc3RkOjpmdW5jdGlvbjxS
KEEwLCBBMSwgQTIsIEEzLCBBNCk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlz
XShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQpIC0+IFIgewotICAgICAgcmV0dXJu
IHRoaXMtPkNhbGwoYTAsIGExLCBhMiwgYTMsIGE0KTsKLSAgICB9OwotICB9Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19D
T1BZX0FORF9BU1NJR05fKE1vY2tGdW5jdGlvbik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
UiwgdHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0g
ICAgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEEx
LCBBMiwgQTMsIEE0LCBBNSk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAg
TU9DS19NRVRIT0Q2X1QoQ2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQsIEE1KSk7Ci0KLSNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMs
IEE0LCBBNSk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEg
YTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1KSAtPiBSIHsKLSAgICAgIHJldHVybiB0aGlz
LT5DYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpOwotICAgIH07Ci0gIH0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAg
ICB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2PgotY2xhc3MgTW9ja0Z1bmN0
aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpPiB7Ci0gcHVibGljOgotICBNb2NrRnVu
Y3Rpb24oKSB7fQotCi0gIE1PQ0tfTUVUSE9EN19UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6ZnVuY3Rp
b248UihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNik+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAg
cmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBB
NiBhNikgLT4gUiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwgYTEsIGEyLCBhMywgYTQs
IGE1LCBhNik7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNUSU9O
XwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRnVu
Y3Rpb24pOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEwLCB0eXBlbmFt
ZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLAotICAgIHR5cGVuYW1lIEE0LCB0eXBlbmFt
ZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAs
IEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3KT4gewotIHB1YmxpYzoKLSAgTW9ja0Z1bmN0aW9u
KCkge30KLQotICBNT0NLX01FVEhPRDhfVChDYWxsLCBSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUs
IEE2LCBBNykpOwotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLSAgc3RkOjpmdW5jdGlv
bjxSKEEwLCBBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0g
ICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1
LCBBNiBhNiwgQTcgYTcpIC0+IFIgewotICAgICAgcmV0dXJuIHRoaXMtPkNhbGwoYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAgICB9OwotICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfRlVOQ1RJT05fCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKE1vY2tGdW5jdGlvbik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5h
bWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsCi0gICAgdHlwZW5h
bWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4
PgotY2xhc3MgTW9ja0Z1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBB
OCk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigpIHt9Ci0KLSAgTU9DS19NRVRIT0Q5X1Qo
Q2FsbCwgUihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4KSk7Ci0KLSNpZiBHVEVT
VF9IQVNfU1REX0ZVTkNUSU9OXwotICBzdGQ6OmZ1bmN0aW9uPFIoQTAsIEExLCBBMiwgQTMsIEE0
LCBBNSwgQTYsIEE3LCBBOCk+IEFzU3RkRnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShB
MCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBhMywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsCi0g
ICAgICAgIEE4IGE4KSAtPiBSIHsKLSAgICAgIHJldHVybiB0aGlzLT5DYWxsKGEwLCBhMSwgYTIs
IGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOwotICAgIH07Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9GVU5DVElPTl8KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywKLSAgICB0eXBl
bmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUg
QTgsCi0gICAgdHlwZW5hbWUgQTk+Ci1jbGFzcyBNb2NrRnVuY3Rpb248UihBMCwgQTEsIEEyLCBB
MywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IHsKLSBwdWJsaWM6Ci0gIE1vY2tGdW5jdGlvbigp
IHt9Ci0KLSAgTU9DS19NRVRIT0QxMF9UKENhbGwsIFIoQTAsIEExLCBBMiwgQTMsIEE0LCBBNSwg
QTYsIEE3LCBBOCwgQTkpKTsKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0gIHN0ZDo6
ZnVuY3Rpb248UihBMCwgQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOSk+IEFzU3Rk
RnVuY3Rpb24oKSB7Ci0gICAgcmV0dXJuIFt0aGlzXShBMCBhMCwgQTEgYTEsIEEyIGEyLCBBMyBh
MywgQTQgYTQsIEE1IGE1LCBBNiBhNiwgQTcgYTcsCi0gICAgICAgIEE4IGE4LCBBOSBhOSkgLT4g
UiB7Ci0gICAgICByZXR1cm4gdGhpcy0+Q2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcsIGE4LCBhOSk7Ci0gICAgfTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZVTkNU
SU9OXwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2Nr
RnVuY3Rpb24pOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5j
dGlvbi1tb2NrZXJzLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2Vu
ZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4MTE1MDJkMGNlMDMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmgucHVtcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5MSArMCwwIEBACi0kJCAtKi0gbW9kZTogYysrOyAtKi0KLSQkIFRoaXMgaXMg
YSBQdW1wIHNvdXJjZSBmaWxlLiAgUGxlYXNlIHVzZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KLSQk
IGdtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmguCi0kJAotJHZhciBuID0gMTAgICQk
IFRoZSBtYXhpbXVtIGFyaXR5IHdlIHN1cHBvcnQuCi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlv
bmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBt
b2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgZnVuY3Rpb24gbW9ja2Vy
cyBvZiB2YXJpb3VzIGFyaXRpZXMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9D
S19HRU5FUkFURURfRlVOQ1RJT05fTU9DS0VSU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dN
T0NLX0dNT0NLX0dFTkVSQVRFRF9GVU5DVElPTl9NT0NLRVJTX0hfCi0KLSNpbmNsdWRlICJnbW9j
ay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2st
aW50ZXJuYWwtdXRpbHMuaCIKLQotI2lmIEdURVNUX0hBU19TVERfRlVOQ1RJT05fCi0jIGluY2x1
ZGUgPGZ1bmN0aW9uYWw+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tl
ckJhc2U7Ci0KLS8vIE5vdGU6IGNsYXNzIEZ1bmN0aW9uTW9ja2VyIHJlYWxseSBiZWxvbmdzIHRv
IHRoZSA6OnRlc3RpbmcKLS8vIG5hbWVzcGFjZS4gIEhvd2V2ZXIgaWYgd2UgZGVmaW5lIGl0IGlu
IDo6dGVzdGluZywgTVNWQyB3aWxsCi0vLyBjb21wbGFpbiB3aGVuIGNsYXNzZXMgaW4gOjp0ZXN0
aW5nOjppbnRlcm5hbCBkZWNsYXJlIGl0IGFzIGEKLS8vIGZyaWVuZCBjbGFzcyB0ZW1wbGF0ZS4g
IFRvIHdvcmthcm91bmQgdGhpcyBjb21waWxlciBidWcsIHdlIGRlZmluZQotLy8gRnVuY3Rpb25N
b2NrZXIgaW4gOjp0ZXN0aW5nOjppbnRlcm5hbCBhbmQgaW1wb3J0IGl0IGludG8gOjp0ZXN0aW5n
LgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjsKLQotCi0kcmFu
Z2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSR2YXIgdHlwZW5hbWVfQXMgPSBb
WyRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV1dXQotJHZhciBBcyA9IFtbJGZvciBqLCBbW0Ekal1d
XV0KLSR2YXIgYXMgPSBbWyRmb3IgaiwgW1thJGpdXV1dCi0kdmFyIEFhcyA9IFtbJGZvciBqLCBb
W0EkaiBhJGpdXV1dCi0kdmFyIG1zID0gW1skZm9yIGosIFtbbSRqXV1dXQotJHZhciBtYXRjaGVy
cyA9IFtbJGZvciBqLCBbW2NvbnN0IE1hdGNoZXI8QSRqPiYgbSRqXV1dXQotdGVtcGxhdGUgPHR5
cGVuYW1lIFIkdHlwZW5hbWVfQXM+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlcjxSKCRBcyk+IDogcHVi
bGljCi0gICAgaW50ZXJuYWw6OkZ1bmN0aW9uTW9ja2VyQmFzZTxSKCRBcyk+IHsKLSBwdWJsaWM6
Ci0gIHR5cGVkZWYgUiBGKCRBcyk7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0
aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0KLSAgTW9ja1NwZWM8Rj4mIFdp
dGgoJG1hdGNoZXJzKSB7Ci0KLSRpZiBpID49IDEgW1sKLSAgICB0aGlzLT5jdXJyZW50X3NwZWMo
KS5TZXRNYXRjaGVycyg6OnRlc3Rpbmc6Om1ha2VfdHVwbGUoJG1zKSk7Ci0KLV1dCi0gICAgcmV0
dXJuIHRoaXMtPmN1cnJlbnRfc3BlYygpOwotICB9Ci0KLSAgUiBJbnZva2UoJEFhcykgewotICAg
IC8vIEV2ZW4gdGhvdWdoIGdjYyBhbmQgTVNWQyBkb24ndCBlbmZvcmNlIGl0LCAndGhpcy0+JyBp
cyByZXF1aXJlZAotICAgIC8vIGJ5IHRoZSBDKysgc3RhbmRhcmQgWzE0LjYuNF0gaGVyZSwgYXMg
dGhlIGJhc2UgY2xhc3MgdHlwZSBpcwotICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgdGVtcGxhdGUg
YXJndW1lbnQgKGFuZCB0aHVzIHNob3VsZG4ndCBiZQotICAgIC8vIGxvb2tlZCBpbnRvIHdoZW4g
cmVzb2x2aW5nIEludm9rZVdpdGgpLgotICAgIHJldHVybiB0aGlzLT5JbnZva2VXaXRoKEFyZ3Vt
ZW50VHVwbGUoJGFzKSk7Ci0gIH0KLX07Ci0KLQotXV0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotCi0vLyBUaGUgc3R5bGUgZ3VpZGUgcHJvaGliaXRzICJ1c2luZyIgc3RhdGVtZW50cyBpbiBh
IG5hbWVzcGFjZSBzY29wZQotLy8gaW5zaWRlIGEgaGVhZGVyIGZpbGUuICBIb3dldmVyLCB0aGUg
RnVuY3Rpb25Nb2NrZXIgY2xhc3MgdGVtcGxhdGUKLS8vIGlzIG1lYW50IHRvIGJlIGRlZmluZWQg
aW4gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuICBUaGUgZm9sbG93aW5nCi0vLyBsaW5lIGlzIGp1
c3QgYSB0cmljayBmb3Igd29ya2luZyBhcm91bmQgYSBidWcgaW4gTVNWQyA4LjAsIHdoaWNoCi0v
LyBjYW5ub3QgaGFuZGxlIGl0IGlmIHdlIGRlZmluZSBGdW5jdGlvbk1vY2tlciBpbiA6OnRlc3Rp
bmcuCi11c2luZyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXI7Ci0KLS8vIEdNT0NLX1JFU1VMVF8o
dG4sIEYpIGV4cGFuZHMgdG8gdGhlIHJlc3VsdCB0eXBlIG9mIGZ1bmN0aW9uIHR5cGUgRi4KLS8v
IFdlIGRlZmluZSB0aGlzIGFzIGEgdmFyaWFkaWMgbWFjcm8gaW4gY2FzZSBGIGNvbnRhaW5zIHVu
cHJvdGVjdGVkCi0vLyBjb21tYXMgKHRoZSBzYW1lIHJlYXNvbiB0aGF0IHdlIHVzZSB2YXJpYWRp
YyBtYWNyb3MgaW4gb3RoZXIgcGxhY2VzCi0vLyBpbiB0aGlzIGZpbGUpLgotLy8gSU5URVJOQUwg
SU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4gVVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NL
X1JFU1VMVF8odG4sIC4uLikgXAotICAgIHRuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9u
PF9fVkFfQVJHU19fPjo6UmVzdWx0Ci0KLS8vIFRoZSB0eXBlIG9mIGFyZ3VtZW50IE4gb2YgdGhl
IGdpdmVuIGZ1bmN0aW9uIHR5cGUuCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidU
IFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfQVJHXyh0biwgTiwgLi4uKSBcCi0g
ICAgdG4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb248X19WQV9BUkdTX18+OjpBcmd1bWVu
dCMjTgotCi0vLyBUaGUgbWF0Y2hlciB0eXBlIGZvciBhcmd1bWVudCBOIG9mIHRoZSBnaXZlbiBm
dW5jdGlvbiB0eXBlLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBET04nVCBVU0UgSU4g
VVNFUiBDT0RFISEhCi0jZGVmaW5lIEdNT0NLX01BVENIRVJfKHRuLCBOLCAuLi4pIFwKLSAgICBj
b25zdCA6OnRlc3Rpbmc6Ok1hdGNoZXI8R01PQ0tfQVJHXyh0biwgTiwgX19WQV9BUkdTX18pPiYK
LQotLy8gVGhlIHZhcmlhYmxlIGZvciBtb2NraW5nIHRoZSBnaXZlbiBtZXRob2QuCi0vLyBJTlRF
Uk5BTCBJTVBMRU1FTlRBVElPTiAtIERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUg
R01PQ0tfTU9DS0VSXyhhcml0eSwgY29uc3RuZXNzLCBNZXRob2QpIFwKLSAgICBHVEVTVF9DT05D
QVRfVE9LRU5fKGdtb2NrIyNjb25zdG5lc3MjI2FyaXR5IyNfIyNNZXRob2QjI18sIF9fTElORV9f
KQotCi0KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHZhciBhcmdfYXMgPSBbWyRmb3Igaiwg
XAotICAgICAgW1tHTU9DS19BUkdfKHRuLCAkaiwgX19WQV9BUkdTX18pIGdtb2NrX2Ekal1dXV0K
LSR2YXIgYXMgPSBbWyRmb3IgaiwgW1tnbW9ja19hJGpdXV1dCi0kdmFyIG1hdGNoZXJfYXMgPSBb
WyRmb3IgaiwgXAotICAgICAgICAgICAgICAgICAgICAgW1tHTU9DS19NQVRDSEVSXyh0biwgJGos
IF9fVkFfQVJHU19fKSBnbW9ja19hJGpdXV1dCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAt
IERPTidUIFVTRSBJTiBVU0VSIENPREUhISEKLSNkZWZpbmUgR01PQ0tfTUVUSE9EJGlbW11dXyh0
biwgY29uc3RuZXNzLCBjdCwgTWV0aG9kLCAuLi4pIFwKLSAgR01PQ0tfUkVTVUxUXyh0biwgX19W
QV9BUkdTX18pIGN0IE1ldGhvZCggXAotICAgICAgJGFyZ19hcykgY29uc3RuZXNzIHsgXAotICAg
IEdURVNUX0NPTVBJTEVfQVNTRVJUXygoOjp0ZXN0aW5nOjp0dXBsZV9zaXplPCAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICB0biA6OnRlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlv
bjxfX1ZBX0FSR1NfXz46OkFyZ3VtZW50VHVwbGU+Ojp2YWx1ZSA9PSAkaSksIFwKLSAgICAgICAg
dGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV8kaVtbXV1fYXJndW1lbnRbWyRpZiBpICE9IDEgW1tz
XV1dXSk7IFwKLSAgICBHTU9DS19NT0NLRVJfKCRpLCBjb25zdG5lc3MsIE1ldGhvZCkuU2V0T3du
ZXJBbmROYW1lKHRoaXMsICNNZXRob2QpOyBcCi0gICAgcmV0dXJuIEdNT0NLX01PQ0tFUl8oJGks
IGNvbnN0bmVzcywgTWV0aG9kKS5JbnZva2UoJGFzKTsgXAotICB9IFwKLSAgOjp0ZXN0aW5nOjpN
b2NrU3BlYzxfX1ZBX0FSR1NfXz4mIFwKLSAgICAgIGdtb2NrXyMjTWV0aG9kKCRtYXRjaGVyX2Fz
KSBjb25zdG5lc3MgeyBcCi0gICAgR01PQ0tfTU9DS0VSXygkaSwgY29uc3RuZXNzLCBNZXRob2Qp
LlJlZ2lzdGVyT3duZXIodGhpcyk7IFwKLSAgICByZXR1cm4gR01PQ0tfTU9DS0VSXygkaSwgY29u
c3RuZXNzLCBNZXRob2QpLldpdGgoJGFzKTsgXAotICB9IFwKLSAgbXV0YWJsZSA6OnRlc3Rpbmc6
OkZ1bmN0aW9uTW9ja2VyPF9fVkFfQVJHU19fPiBHTU9DS19NT0NLRVJfKCRpLCBjb25zdG5lc3Ms
IE1ldGhvZCkKLQotCi1dXQotJGZvciBpIFtbCi0jZGVmaW5lIE1PQ0tfTUVUSE9EJGkobSwgLi4u
KSBHTU9DS19NRVRIT0QkaVtbXV1fKCwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRm
b3IgaSBbWwotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRCRpKG0sIC4uLikgR01PQ0tfTUVUSE9E
JGlbW11dXygsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRmb3IgaSBbWwot
I2RlZmluZSBNT0NLX01FVEhPRCRpW1tdXV9UKG0sIC4uLikgR01PQ0tfTUVUSE9EJGlbW11dXyh0
eXBlbmFtZSwgLCAsIG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRmb3IgaSBbWwotI2RlZmlu
ZSBNT0NLX0NPTlNUX01FVEhPRCRpW1tdXV9UKG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRCRp
W1tdXV8odHlwZW5hbWUsIGNvbnN0LCAsIG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRmb3Ig
aSBbWwotI2RlZmluZSBNT0NLX01FVEhPRCRpW1tdXV9XSVRIX0NBTExUWVBFKGN0LCBtLCAuLi4p
IFwKLSAgICBHTU9DS19NRVRIT0QkaVtbXV1fKCwgLCBjdCwgbSwgX19WQV9BUkdTX18pCi0KLV1d
Ci0KLQotJGZvciBpIFtbCi0jZGVmaW5lIE1PQ0tfQ09OU1RfTUVUSE9EJGlbW11dX1dJVEhfQ0FM
TFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRCRpW1tdXV8oLCBjb25zdCwgY3Qs
IG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRmb3IgaSBbWwotI2RlZmluZSBNT0NLX01FVEhP
RCRpW1tdXV9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0sIC4uLikgXAotICAgIEdNT0NLX01FVEhPRCRp
W1tdXV8odHlwZW5hbWUsICwgY3QsIG0sIF9fVkFfQVJHU19fKQotCi1dXQotCi0KLSRmb3IgaSBb
WwotI2RlZmluZSBNT0NLX0NPTlNUX01FVEhPRCRpW1tdXV9UX1dJVEhfQ0FMTFRZUEUoY3QsIG0s
IC4uLikgXAotICAgIEdNT0NLX01FVEhPRCRpW1tdXV8odHlwZW5hbWUsIGNvbnN0LCBjdCwgbSwg
X19WQV9BUkdTX18pCi0KLV1dCi0KLS8vIEEgTW9ja0Z1bmN0aW9uPEY+IGNsYXNzIGhhcyBvbmUg
bW9jayBtZXRob2Qgd2hvc2UgdHlwZSBpcyBGLiAgSXQgaXMKLS8vIHVzZWZ1bCB3aGVuIHlvdSBq
dXN0IHdhbnQgeW91ciB0ZXN0IGNvZGUgdG8gZW1pdCBzb21lIG1lc3NhZ2VzIGFuZAotLy8gaGF2
ZSBHb29nbGUgTW9jayB2ZXJpZnkgdGhlIHJpZ2h0IG1lc3NhZ2VzIGFyZSBzZW50IChhbmQgcGVy
aGFwcyBhdAotLy8gdGhlIHJpZ2h0IHRpbWVzKS4gIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIGV4
ZXJjaXNpbmcgY29kZToKLS8vCi0vLyAgIEZvbygxKTsKLS8vICAgRm9vKDIpOwotLy8gICBGb28o
Myk7Ci0vLwotLy8gYW5kIHdhbnQgdG8gdmVyaWZ5IHRoYXQgRm9vKDEpIGFuZCBGb28oMykgYm90
aCBpbnZva2UKLS8vIG1vY2suQmFyKCJhIiksIGJ1dCBGb28oMikgZG9lc24ndCBpbnZva2UgYW55
dGhpbmcsIHlvdSBjYW4gd3JpdGU6Ci0vLwotLy8gVEVTVChGb29UZXN0LCBJbnZva2VzQmFyQ29y
cmVjdGx5KSB7Ci0vLyAgIE15TW9jayBtb2NrOwotLy8gICBNb2NrRnVuY3Rpb248dm9pZChzdHJp
bmcgY2hlY2tfcG9pbnRfbmFtZSk+IGNoZWNrOwotLy8gICB7Ci0vLyAgICAgSW5TZXF1ZW5jZSBz
OwotLy8KLS8vICAgICBFWFBFQ1RfQ0FMTChtb2NrLCBCYXIoImEiKSk7Ci0vLyAgICAgRVhQRUNU
X0NBTEwoY2hlY2ssIENhbGwoIjEiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwoY2hlY2ssIENhbGwo
IjIiKSk7Ci0vLyAgICAgRVhQRUNUX0NBTEwobW9jaywgQmFyKCJhIikpOwotLy8gICB9Ci0vLyAg
IEZvbygxKTsKLS8vICAgY2hlY2suQ2FsbCgiMSIpOwotLy8gICBGb28oMik7Ci0vLyAgIGNoZWNr
LkNhbGwoIjIiKTsKLS8vICAgRm9vKDMpOwotLy8gfQotLy8KLS8vIFRoZSBleHBlY3RhdGlvbiBz
cGVjIHNheXMgdGhhdCB0aGUgZmlyc3QgQmFyKCJhIikgbXVzdCBoYXBwZW4KLS8vIGJlZm9yZSBj
aGVjayBwb2ludCAiMSIsIHRoZSBzZWNvbmQgQmFyKCJhIikgbXVzdCBoYXBwZW4gYWZ0ZXIgY2hl
Y2sKLS8vIHBvaW50ICIyIiwgYW5kIG5vdGhpbmcgc2hvdWxkIGhhcHBlbiBiZXR3ZWVuIHRoZSB0
d28gY2hlY2sKLS8vIHBvaW50cy4gVGhlIGV4cGxpY2l0IGNoZWNrIHBvaW50cyBtYWtlIGl0IGVh
c3kgdG8gdGVsbCB3aGljaAotLy8gQmFyKCJhIikgaXMgY2FsbGVkIGJ5IHdoaWNoIGNhbGwgdG8g
Rm9vKCkuCi0vLwotLy8gTW9ja0Z1bmN0aW9uPEY+IGNhbiBhbHNvIGJlIHVzZWQgdG8gZXhlcmNp
c2UgY29kZSB0aGF0IGFjY2VwdHMKLS8vIHN0ZDo6ZnVuY3Rpb248Rj4gY2FsbGJhY2tzLiBUbyBk
byBzbywgdXNlIEFzU3RkRnVuY3Rpb24oKSBtZXRob2QKLS8vIHRvIGNyZWF0ZSBzdGQ6OmZ1bmN0
aW9uIHByb3h5IGZvcndhcmRpbmcgdG8gb3JpZ2luYWwgb2JqZWN0J3MgQ2FsbC4KLS8vIEV4YW1w
bGU6Ci0vLwotLy8gVEVTVChGb29UZXN0LCBSdW5zQ2FsbGJhY2tXaXRoQmFyQXJndW1lbnQpIHsK
LS8vICAgTW9ja0Z1bmN0aW9uPGludChzdHJpbmcpPiBjYWxsYmFjazsKLS8vICAgRVhQRUNUX0NB
TEwoY2FsbGJhY2ssIENhbGwoImJhciIpKS5XaWxsT25jZShSZXR1cm4oMSkpOwotLy8gICBGb28o
Y2FsbGJhY2suQXNTdGRGdW5jdGlvbigpKTsKLS8vIH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGPgot
Y2xhc3MgTW9ja0Z1bmN0aW9uOwotCi0KLSRmb3IgaSBbWwotJHJhbmdlIGogMC4uaS0xCi0kdmFy
IEFyZ1R5cGVzID0gW1skZm9yIGosIFtbQSRqXV1dXQotJHZhciBBcmdOYW1lcyA9IFtbJGZvciBq
LCBbW2Ekal1dXV0KLSR2YXIgQXJnRGVjbHMgPSBbWyRmb3IgaiwgW1tBJGogYSRqXV1dXQotdGVt
cGxhdGUgPHR5cGVuYW1lIFIkZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dPgotY2xhc3MgTW9ja0Z1
bmN0aW9uPFIoJEFyZ1R5cGVzKT4gewotIHB1YmxpYzoKLSAgTW9ja0Z1bmN0aW9uKCkge30KLQot
ICBNT0NLX01FVEhPRCRpW1tdXV9UKENhbGwsIFIoJEFyZ1R5cGVzKSk7Ci0KLSNpZiBHVEVTVF9I
QVNfU1REX0ZVTkNUSU9OXwotICBzdGQ6OmZ1bmN0aW9uPFIoJEFyZ1R5cGVzKT4gQXNTdGRGdW5j
dGlvbigpIHsKLSAgICByZXR1cm4gW3RoaXNdKCRBcmdEZWNscykgLT4gUiB7Ci0gICAgICByZXR1
cm4gdGhpcy0+Q2FsbCgkQXJnTmFtZXMpOwotICAgIH07Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1NURF9GVU5DVElPTl8KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oTW9ja0Z1bmN0aW9uKTsKLX07Ci0KLQotXV0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfRlVO
Q1RJT05fTU9DS0VSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21v
Y2stZ2VuZXJhdGVkLW1hdGNoZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3
MDU2ZmQ5MWQyMi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2sv
Z21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTc5ICswLDAg
QEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5w
eSBnbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaC5wdW1wCi0vLyBETyBOT1QgRURJVCBCWSBIQU5E
ISEhCi0KLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8g
R29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgot
Ly8KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHNvbWUgY29tbW9ubHkgdXNlZCB2YXJpYWRpYyBt
YXRjaGVycy4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9N
QVRDSEVSU19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9N
QVRDSEVSU19IXwotCi0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNp
bmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LW1hdGNoZXJzLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0KLS8vIFRoZSB0eXBlIG9mIHRoZSBpLXRoICgwLWJhc2VkKSBmaWVsZCBvZiBUdXBsZS4KLSNk
ZWZpbmUgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGkpIFwKLSAgICB0eXBlbmFtZSA6OnRlc3Rp
bmc6OnR1cGxlX2VsZW1lbnQ8aSwgVHVwbGU+Ojp0eXBlCi0KLS8vIFR1cGxlRmllbGRzPFR1cGxl
LCBrMCwgLi4uLCBrbj4gaXMgZm9yIHNlbGVjdGluZyBmaWVsZHMgZnJvbSBhCi0vLyB0dXBsZSBv
ZiB0eXBlIFR1cGxlLiAgSXQgaGFzIHR3byBtZW1iZXJzOgotLy8KLS8vICAgdHlwZTogYSB0dXBs
ZSB0eXBlIHdob3NlIGktdGggZmllbGQgaXMgdGhlIGtpLXRoIGZpZWxkIG9mIFR1cGxlLgotLy8g
ICBHZXRTZWxlY3RlZEZpZWxkcyh0KTogcmV0dXJucyBmaWVsZHMgazAsIC4uLiwgYW5kIGtuIG9m
IHQgYXMgYSB0dXBsZS4KLS8vCi0vLyBGb3IgZXhhbXBsZSwgaW4gY2xhc3MgVHVwbGVGaWVsZHM8
dHVwbGU8Ym9vbCwgY2hhciwgaW50PiwgMiwgMD4sIHdlIGhhdmU6Ci0vLwotLy8gICB0eXBlIGlz
IHR1cGxlPGludCwgYm9vbD4sIGFuZAotLy8gICBHZXRTZWxlY3RlZEZpZWxkcyhtYWtlX3R1cGxl
KHRydWUsICdhJywgNDIpKSBpcyAoNDIsIHRydWUpLgotCi10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUs
IGludCBrMCA9IC0xLCBpbnQgazEgPSAtMSwgaW50IGsyID0gLTEsIGludCBrMyA9IC0xLAotICAg
IGludCBrNCA9IC0xLCBpbnQgazUgPSAtMSwgaW50IGs2ID0gLTEsIGludCBrNyA9IC0xLCBpbnQg
azggPSAtMSwKLSAgICBpbnQgazkgPSAtMT4KLWNsYXNzIFR1cGxlRmllbGRzOwotCi0vLyBUaGlz
IGdlbmVyaWMgdmVyc2lvbiBpcyB1c2VkIHdoZW4gdGhlcmUgYXJlIDEwIHNlbGVjdG9ycy4KLXRl
bXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQg
azQsIGludCBrNSwgaW50IGs2LAotICAgIGludCBrNywgaW50IGs4LCBpbnQgazk+Ci1jbGFzcyBU
dXBsZUZpZWxkcyB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tf
RklFTERfVFlQRV8oVHVwbGUsIGswKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBr
MSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiksCi0gICAgICBHTU9DS19GSUVMRF9UWVBF
XyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpLAotICAgICAgR01PQ0tf
RklFTERfVFlQRV8oVHVwbGUsIGs1KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2KSwKLSAg
ICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNyksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxl
LCBrOCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazkpPiB0eXBlOwotICBzdGF0
aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkgewotICAgIHJldHVybiB0
eXBlKGdldDxrMD4odCksIGdldDxrMT4odCksIGdldDxrMj4odCksIGdldDxrMz4odCksIGdldDxr
ND4odCksCi0gICAgICAgIGdldDxrNT4odCksIGdldDxrNj4odCksIGdldDxrNz4odCksIGdldDxr
OD4odCksIGdldDxrOT4odCkpOwotICB9Ci19OwotCi0vLyBUaGUgZm9sbG93aW5nIHNwZWNpYWxp
emF0aW9uIGlzIHVzZWQgZm9yIDAgfiA5IHNlbGVjdG9ycy4KLQotdGVtcGxhdGUgPGNsYXNzIFR1
cGxlPgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x
LCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8PiB0
eXBlOwotICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgLyogdCAq
LykgewotICAgIHJldHVybiB0eXBlKCk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBs
ZSwgaW50IGswPgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCAtMSwgLTEsIC0xLCAtMSwg
LTEsIC0xLCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKT4gdHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0
U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICByZXR1cm4gdHlwZShnZXQ8azA+
KHQpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQgazAsIGludCBrMT4K
LWNsYXNzIFR1cGxlRmllbGRzPFR1cGxlLCBrMCwgazEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEs
IC0xLCAtMT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrMCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazEp
PiB0eXBlOwotICBzdGF0aWMgdHlwZSBHZXRTZWxlY3RlZEZpZWxkcyhjb25zdCBUdXBsZSYgdCkg
ewotICAgIHJldHVybiB0eXBlKGdldDxrMD4odCksIGdldDxrMT4odCkpOwotICB9Ci19OwotCi10
ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUsIGludCBrMCwgaW50IGsxLCBpbnQgazI+Ci1jbGFzcyBUdXBs
ZUZpZWxkczxUdXBsZSwgazAsIGsxLCBrMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsK
LSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVMRF9UWVBFXyhU
dXBsZSwgazApLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKSwgR01PQ0tfRklF
TERfVFlQRV8oVHVwbGUsIGsyKT4gdHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVs
ZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpLCBnZXQ8azE+
KHQpLCBnZXQ8azI+KHQpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQg
azAsIGludCBrMSwgaW50IGsyLCBpbnQgazM+Ci1jbGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgazAs
IGsxLCBrMiwgazMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgOjp0ZXN0aW5nOjp0dXBsZTxHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazApLAotICAgICAg
R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsxKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsy
KSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMyk+IHR5cGU7Ci0gIHN0YXRpYyB0
eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUo
Z2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSk7Ci0gIH0KLX07
Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGsz
LCBpbnQgazQ+Ci1jbGFzcyBUdXBsZUZpZWxkczxUdXBsZSwgazAsIGsxLCBrMiwgazMsIGs0LCAt
MSwgLTEsIC0xLCAtMSwgLTE+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazApLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8o
VHVwbGUsIGsxKSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGsyKSwKLSAgICAgIEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrMyksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNCk+IHR5cGU7
Ci0gIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAg
cmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0
KSwgZ2V0PGs0Pih0KSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGsw
LCBpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNT4KLWNsYXNzIFR1cGxlRmll
bGRzPFR1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LCAtMSwgLTEsIC0xLCAtMT4gewotIHB1
YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxl
LCBrMCksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazEpLCBHTU9DS19GSUVMRF9U
WVBFXyhUdXBsZSwgazIpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGszKSwgR01P
Q0tfRklFTERfVFlQRV8oVHVwbGUsIGs0KSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxl
LCBrNSk+IHR5cGU7Ci0gIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxl
JiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0
KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0KSwKLSAgICAgICAgZ2V0PGs1Pih0KSk7Ci0gIH0KLX07
Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGsz
LCBpbnQgazQsIGludCBrNSwgaW50IGs2PgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBr
MSwgazIsIGszLCBrNCwgazUsIGs2LCAtMSwgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVm
IDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKLSAgICAgIEdN
T0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiks
Ci0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhU
dXBsZSwgazQpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs1KSwgR01PQ0tfRklF
TERfVFlQRV8oVHVwbGUsIGs2KT4gdHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVs
ZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICByZXR1cm4gdHlwZShnZXQ8azA+KHQpLCBnZXQ8azE+
KHQpLCBnZXQ8azI+KHQpLCBnZXQ8azM+KHQpLCBnZXQ8azQ+KHQpLAotICAgICAgICBnZXQ8azU+
KHQpLCBnZXQ8azY+KHQpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFR1cGxlLCBpbnQg
azAsIGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsCi0gICAg
aW50IGs3PgotY2xhc3MgVHVwbGVGaWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUs
IGs2LCBrNywgLTEsIC0xPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGswKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1
cGxlLCBrMSksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMiksCi0gICAgICBHTU9DS19GSUVM
RF9UWVBFXyhUdXBsZSwgazMpLCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpLAotICAgICAg
R01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs1KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2
KSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrNyk+IHR5cGU7Ci0gIHN0YXRpYyB0
eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAgcmV0dXJuIHR5cGUo
Z2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0KSwgZ2V0PGs0Pih0
KSwKLSAgICAgICAgZ2V0PGs1Pih0KSwgZ2V0PGs2Pih0KSwgZ2V0PGs3Pih0KSk7Ci0gIH0KLX07
Ci0KLXRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgaW50IGswLCBpbnQgazEsIGludCBrMiwgaW50IGsz
LCBpbnQgazQsIGludCBrNSwgaW50IGs2LAotICAgIGludCBrNywgaW50IGs4PgotY2xhc3MgVHVw
bGVGaWVsZHM8VHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIC0xPiB7
Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8R01PQ0tfRklFTERfVFlQRV8o
VHVwbGUsIGswKSwKLSAgICAgIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrMSksIEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrMiksCi0gICAgICBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazMp
LCBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgazQpLAotICAgICAgR01PQ0tfRklFTERfVFlQRV8o
VHVwbGUsIGs1KSwgR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGs2KSwKLSAgICAgIEdNT0NLX0ZJ
RUxEX1RZUEVfKFR1cGxlLCBrNyksIEdNT0NLX0ZJRUxEX1RZUEVfKFR1cGxlLCBrOCk+IHR5cGU7
Ci0gIHN0YXRpYyB0eXBlIEdldFNlbGVjdGVkRmllbGRzKGNvbnN0IFR1cGxlJiB0KSB7Ci0gICAg
cmV0dXJuIHR5cGUoZ2V0PGswPih0KSwgZ2V0PGsxPih0KSwgZ2V0PGsyPih0KSwgZ2V0PGszPih0
KSwgZ2V0PGs0Pih0KSwKLSAgICAgICAgZ2V0PGs1Pih0KSwgZ2V0PGs2Pih0KSwgZ2V0PGs3Pih0
KSwgZ2V0PGs4Pih0KSk7Ci0gIH0KLX07Ci0KLSN1bmRlZiBHTU9DS19GSUVMRF9UWVBFXwotCi0v
LyBJbXBsZW1lbnRzIHRoZSBBcmdzKCkgbWF0Y2hlci4KLXRlbXBsYXRlIDxjbGFzcyBBcmdzVHVw
bGUsIGludCBrMCA9IC0xLCBpbnQgazEgPSAtMSwgaW50IGsyID0gLTEsIGludCBrMyA9IC0xLAot
ICAgIGludCBrNCA9IC0xLCBpbnQgazUgPSAtMSwgaW50IGs2ID0gLTEsIGludCBrNyA9IC0xLCBp
bnQgazggPSAtMSwKLSAgICBpbnQgazkgPSAtMT4KLWNsYXNzIEFyZ3NNYXRjaGVySW1wbCA6IHB1
YmxpYyBNYXRjaGVySW50ZXJmYWNlPEFyZ3NUdXBsZT4gewotIHB1YmxpYzoKLSAgLy8gQXJnc1R1
cGxlIG1heSBoYXZlIHRvcC1sZXZlbCBjb25zdCBvciByZWZlcmVuY2UgbW9kaWZpZXJzLgotICB0
eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhBcmdzVHVwbGUpIFJhd0Fy
Z3NUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6VHVwbGVGaWVsZHM8UmF3QXJn
c1R1cGxlLCBrMCwgazEsIGsyLCBrMywgazQsIGs1LAotICAgICAgazYsIGs3LCBrOCwgazk+Ojp0
eXBlIFNlbGVjdGVkQXJnczsKLSAgdHlwZWRlZiBNYXRjaGVyPGNvbnN0IFNlbGVjdGVkQXJncyY+
IE1vbm9tb3JwaGljSW5uZXJNYXRjaGVyOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJbm5lck1h
dGNoZXI+Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVySW1wbChjb25zdCBJbm5lck1hdGNoZXImIGlu
bmVyX21hdGNoZXIpCi0gICAgICA6IGlubmVyX21hdGNoZXJfKFNhZmVNYXRjaGVyQ2FzdDxjb25z
dCBTZWxlY3RlZEFyZ3MmPihpbm5lcl9tYXRjaGVyKSkge30KLQotICB2aXJ0dWFsIGJvb2wgTWF0
Y2hBbmRFeHBsYWluKEFyZ3NUdXBsZSBhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgY29uc3QgU2Vs
ZWN0ZWRBcmdzJiBzZWxlY3RlZF9hcmdzID0gR2V0U2VsZWN0ZWRBcmdzKGFyZ3MpOwotICAgIGlm
ICghbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKQotICAgICAgcmV0dXJuIGlubmVyX21hdGNoZXJf
Lk1hdGNoZXMoc2VsZWN0ZWRfYXJncyk7Ci0KLSAgICBQcmludEluZGljZXMobGlzdGVuZXItPnN0
cmVhbSgpKTsKLSAgICAqbGlzdGVuZXIgPDwgImFyZSAiIDw8IFByaW50VG9TdHJpbmcoc2VsZWN0
ZWRfYXJncyk7Ci0KLSAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVy
OwotICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSBpbm5lcl9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4o
c2VsZWN0ZWRfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZpbm5lcl9saXN0ZW5lcik7Ci0gICAgUHJpbnRJZk5vdEVtcHR5KGlubmVy
X2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotICAgIHJldHVybiBtYXRjaDsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgewotICAgICpvcyA8PCAiYXJlIGEgdHVwbGUgIjsKLSAgICBQcmludEluZGljZXMob3MpOwot
ICAgIGlubmVyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3Mg
PDwgImFyZSBhIHR1cGxlICI7Ci0gICAgUHJpbnRJbmRpY2VzKG9zKTsKLSAgICBpbm5lcl9tYXRj
aGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMg
U2VsZWN0ZWRBcmdzIEdldFNlbGVjdGVkQXJncyhBcmdzVHVwbGUgYXJncykgewotICAgIHJldHVy
biBUdXBsZUZpZWxkczxSYXdBcmdzVHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBr
NywgazgsCi0gICAgICAgIGs5Pjo6R2V0U2VsZWN0ZWRGaWVsZHMoYXJncyk7Ci0gIH0KLQotICAv
LyBQcmludHMgdGhlIGluZGljZXMgb2YgdGhlIHNlbGVjdGVkIGZpZWxkcy4KLSAgc3RhdGljIHZv
aWQgUHJpbnRJbmRpY2VzKDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAgICpvcyA8PCAid2hvc2Ug
ZmllbGRzICgiOwotICAgIGNvbnN0IGludCBpbmRpY2VzWzEwXSA9IHsgazAsIGsxLCBrMiwgazMs
IGs0LCBrNSwgazYsIGs3LCBrOCwgazkgfTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBp
KyspIHsKLSAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCkKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAg
IGlmIChpID49IDEpCi0gICAgICAgICpvcyA8PCAiLCAiOwotCi0gICAgICAqb3MgPDwgIiMiIDw8
IGluZGljZXNbaV07Ci0gICAgfQotICAgICpvcyA8PCAiKSAiOwotICB9Ci0KLSAgY29uc3QgTW9u
b21vcnBoaWNJbm5lck1hdGNoZXIgaW5uZXJfbWF0Y2hlcl87Ci0KLSAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhBcmdzTWF0Y2hlckltcGwpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIElubmVyTWF0
Y2hlciwgaW50IGswID0gLTEsIGludCBrMSA9IC0xLCBpbnQgazIgPSAtMSwKLSAgICBpbnQgazMg
PSAtMSwgaW50IGs0ID0gLTEsIGludCBrNSA9IC0xLCBpbnQgazYgPSAtMSwgaW50IGs3ID0gLTEs
Ci0gICAgaW50IGs4ID0gLTEsIGludCBrOSA9IC0xPgotY2xhc3MgQXJnc01hdGNoZXIgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgQXJnc01hdGNoZXIoY29uc3QgSW5uZXJNYXRjaGVyJiBpbm5lcl9t
YXRjaGVyKQotICAgICAgOiBpbm5lcl9tYXRjaGVyXyhpbm5lcl9tYXRjaGVyKSB7fQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBBcmdzVHVwbGU+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8QXJnc1R1cGxl
PigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEFyZ3NNYXRjaGVySW1wbDxB
cmdzVHVwbGUsIGswLCBrMSwgazIsIGszLCBrNCwgazUsCi0gICAgICAgIGs2LCBrNywgazgsIGs5
Pihpbm5lcl9tYXRjaGVyXykpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBJbm5lck1hdGNo
ZXIgaW5uZXJfbWF0Y2hlcl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBcmdzTWF0Y2hl
cik7Ci19OwotCi0vLyBBIHNldCBvZiBtZXRhZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgdGhlIHJl
c3VsdCB0eXBlIG9mIEFsbE9mLgotLy8gQWxsT2YobTEsIC4uLiwgbU4pIHJldHVybnMKLS8vIEFs
bE9mUmVzdWx0TjxkZWNsdHlwZShtMSksIC4uLiwgZGVjbHR5cGUobU4pPjo6dHlwZS4KLQotLy8g
QWx0aG91Z2ggQWxsT2YgaXNuJ3QgZGVmaW5lZCBmb3Igb25lIGFyZ3VtZW50LCBBbGxPZlJlc3Vs
dDEgaXMgZGVmaW5lZAotLy8gdG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgotdGVtcGxh
dGUgPHR5cGVuYW1lIE0xPgotc3RydWN0IEFsbE9mUmVzdWx0MSB7Ci0gIHR5cGVkZWYgTTEgdHlw
ZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTI+Ci1zdHJ1Y3QgQWxs
T2ZSZXN1bHQyIHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQWxs
T2ZSZXN1bHQxPE0xPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0MTxNMj46OnR5
cGUKLSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwg
dHlwZW5hbWUgTTM+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQzIHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRj
aGVyPAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQxPE0xPjo6dHlwZSwKLSAgICAgIHR5cGVu
YW1lIEFsbE9mUmVzdWx0MjxNMiwgTTM+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNND4KLXN0
cnVjdCBBbGxPZlJlc3VsdDQgewotICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8Ci0gICAgICB0eXBl
bmFtZSBBbGxPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFsbE9mUmVz
dWx0MjxNMywgTTQ+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBN
MSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+Ci1z
dHJ1Y3QgQWxsT2ZSZXN1bHQ1IHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAgICAgdHlw
ZW5hbWUgQWxsT2ZSZXN1bHQyPE0xLCBNMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBBbGxPZlJl
c3VsdDM8TTMsIE00LCBNNT46OnR5cGUKLSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBN
NSwKLSAgICB0eXBlbmFtZSBNNj4KLXN0cnVjdCBBbGxPZlJlc3VsdDYgewotICB0eXBlZGVmIEJv
dGhPZk1hdGNoZXI8Ci0gICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDM8TTEsIE0yLCBNMz46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDM8TTQsIE01LCBNNj46OnR5cGUKLSAgPiB0
eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUg
TTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUg
TTc+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQ3IHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAg
ICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlLAotICAgICAgdHlwZW5h
bWUgQWxsT2ZSZXN1bHQ0PE00LCBNNSwgTTYsIE03Pjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUg
TTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUg
TTg+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQ4IHsKLSAgdHlwZWRlZiBCb3RoT2ZNYXRjaGVyPAotICAg
ICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQ0PE0xLCBNMiwgTTMsIE00Pjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIEFsbE9mUmVzdWx0NDxNNSwgTTYsIE03LCBNOD46OnR5cGUKLSAgPiB0eXBlOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVu
YW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVu
YW1lIE04LCB0eXBlbmFtZSBNOT4KLXN0cnVjdCBBbGxPZlJlc3VsdDkgewotICB0eXBlZGVmIEJv
dGhPZk1hdGNoZXI8Ci0gICAgICB0eXBlbmFtZSBBbGxPZlJlc3VsdDQ8TTEsIE0yLCBNMywgTTQ+
Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgQWxsT2ZSZXN1bHQ1PE01LCBNNiwgTTcsIE04LCBNOT46
OnR5cGUKLSAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBN
MiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBN
NiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOSwgdHlwZW5hbWUgTTEwPgot
c3RydWN0IEFsbE9mUmVzdWx0MTAgewotICB0eXBlZGVmIEJvdGhPZk1hdGNoZXI8Ci0gICAgICB0
eXBlbmFtZSBBbGxPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIEFsbE9mUmVzdWx0NTxNNiwgTTcsIE04LCBNOSwgTTEwPjo6dHlwZQotICA+IHR5cGU7
Ci19OwotCi0vLyBBIHNldCBvZiBtZXRhZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgdGhlIHJlc3Vs
dCB0eXBlIG9mIEFueU9mLgotLy8gQW55T2YobTEsIC4uLiwgbU4pIHJldHVybnMKLS8vIEFueU9m
UmVzdWx0TjxkZWNsdHlwZShtMSksIC4uLiwgZGVjbHR5cGUobU4pPjo6dHlwZS4KLQotLy8gQWx0
aG91Z2ggQW55T2YgaXNuJ3QgZGVmaW5lZCBmb3Igb25lIGFyZ3VtZW50LCBBbnlPZlJlc3VsdDEg
aXMgZGVmaW5lZAotLy8gdG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLgotdGVtcGxhdGUg
PHR5cGVuYW1lIE0xPgotc3RydWN0IEFueU9mUmVzdWx0MSB7Ci0gIHR5cGVkZWYgTTEgdHlwZTsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTI+Ci1zdHJ1Y3QgQW55T2ZS
ZXN1bHQyIHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8Ci0gICAgICB0eXBlbmFtZSBBbnlP
ZlJlc3VsdDE8TTE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQxPE0yPjo6dHlw
ZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0
eXBlbmFtZSBNMz4KLXN0cnVjdCBBbnlPZlJlc3VsdDMgewotICB0eXBlZGVmIEVpdGhlck9mTWF0
Y2hlcjwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0MTxNMT46OnR5cGUsCi0gICAgICB0eXBl
bmFtZSBBbnlPZlJlc3VsdDI8TTIsIE0zPjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQ+Ci1z
dHJ1Y3QgQW55T2ZSZXN1bHQ0IHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8Ci0gICAgICB0
eXBlbmFtZSBBbnlPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFueU9m
UmVzdWx0MjxNMywgTTQ+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+
Ci1zdHJ1Y3QgQW55T2ZSZXN1bHQ1IHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8Ci0gICAg
ICB0eXBlbmFtZSBBbnlPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFu
eU9mUmVzdWx0MzxNMywgTTQsIE01Pjo6dHlwZQotICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVu
YW1lIE01LAotICAgIHR5cGVuYW1lIE02Pgotc3RydWN0IEFueU9mUmVzdWx0NiB7Ci0gIHR5cGVk
ZWYgRWl0aGVyT2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQzPE0xLCBNMiwg
TTM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQzPE00LCBNNSwgTTY+Ojp0eXBl
Ci0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5
cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5
cGVuYW1lIE03Pgotc3RydWN0IEFueU9mUmVzdWx0NyB7Ci0gIHR5cGVkZWYgRWl0aGVyT2ZNYXRj
aGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlLAotICAg
ICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ0PE00LCBNNSwgTTYsIE03Pjo6dHlwZQotICA+IHR5cGU7
Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywg
dHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywg
dHlwZW5hbWUgTTg+Ci1zdHJ1Y3QgQW55T2ZSZXN1bHQ4IHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1h
dGNoZXI8Ci0gICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDQ8TTEsIE0yLCBNMywgTTQ+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ0PE01LCBNNiwgTTcsIE04Pjo6dHlwZQotICA+
IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFt
ZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFt
ZSBNNywgdHlwZW5hbWUgTTgsIHR5cGVuYW1lIE05Pgotc3RydWN0IEFueU9mUmVzdWx0OSB7Ci0g
IHR5cGVkZWYgRWl0aGVyT2ZNYXRjaGVyPAotICAgICAgdHlwZW5hbWUgQW55T2ZSZXN1bHQ0PE0x
LCBNMiwgTTMsIE00Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0NTxNNSwgTTYs
IE03LCBNOCwgTTk+Ojp0eXBlCi0gID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBN
MSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTUsCi0g
ICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03LCB0eXBlbmFtZSBNOCwgdHlwZW5hbWUgTTksIHR5
cGVuYW1lIE0xMD4KLXN0cnVjdCBBbnlPZlJlc3VsdDEwIHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1h
dGNoZXI8Ci0gICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIEFueU9mUmVzdWx0NTxNNiwgTTcsIE04LCBNOSwgTTEwPjo6
dHlwZQotICA+IHR5cGU7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gQXJn
czxOMSwgTjIsIC4uLiwgTms+KGFfbWF0Y2hlcikgbWF0Y2hlcyBhIHR1cGxlIGlmIHRoZSBzZWxl
Y3RlZAotLy8gZmllbGRzIG9mIGl0IG1hdGNoZXMgYV9tYXRjaGVyLiAgQysrIGRvZXNuJ3Qgc3Vw
cG9ydCBkZWZhdWx0Ci0vLyBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uIHRlbXBsYXRlcywgc28gd2Ug
aGF2ZSB0byBvdmVybG9hZCBpdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1p
bmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlcj4KLUFyZ3MoY29uc3QgSW5u
ZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5u
ZXJNYXRjaGVyPihtYXRjaGVyKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgdHlwZW5hbWUgSW5u
ZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsx
PgotQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxPihtYXRjaGVyKTsKLX0KLQotdGVtcGxhdGUg
PGludCBrMSwgaW50IGsyLCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6
OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyPgotQXJncyhjb25zdCBJbm5lck1hdGNo
ZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNo
ZXIsIGsxLCBrMj4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50
IGszLCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVy
PElubmVyTWF0Y2hlciwgazEsIGsyLCBrMz4KLUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRj
aGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwg
azIsIGszPihtYXRjaGVyKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMs
IGludCBrNCwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdzTWF0
Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0PgotQXJncyhjb25zdCBJbm5lck1hdGNo
ZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNo
ZXIsIGsxLCBrMiwgazMsIGs0PihtYXRjaGVyKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50
IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxp
bmUgaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1
PgotQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNT4obWF0Y2hlcik7
Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEsIGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwg
aW50IGs2LCB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRj
aGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNj4KLUFyZ3MoY29uc3QgSW5u
ZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5u
ZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2PihtYXRjaGVyKTsKLX0KLQotdGVtcGxh
dGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBr
NywKLSAgICB0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OkFyZ3NNYXRj
aGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwgazc+Ci1BcmdzKGNvbnN0
IElubmVyTWF0Y2hlciYgbWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVy
PElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQsIGs1LCBrNiwKLSAgICAgIGs3PihtYXRjaGVy
KTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBpbnQgazMsIGludCBrNCwgaW50IGs1
LCBpbnQgazYsIGludCBrNywgaW50IGs4LAotICAgIHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KLWlu
bGluZSBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwg
azUsIGs2LCBrNywgazg+Ci1BcmdzKGNvbnN0IElubmVyTWF0Y2hlciYgbWF0Y2hlcikgewotICBy
ZXR1cm4gaW50ZXJuYWw6OkFyZ3NNYXRjaGVyPElubmVyTWF0Y2hlciwgazEsIGsyLCBrMywgazQs
IGs1LCBrNiwgazcsCi0gICAgICBrOD4obWF0Y2hlcik7Ci19Ci0KLXRlbXBsYXRlIDxpbnQgazEs
IGludCBrMiwgaW50IGszLCBpbnQgazQsIGludCBrNSwgaW50IGs2LCBpbnQgazcsIGludCBrOCwK
LSAgICBpbnQgazksIHR5cGVuYW1lIElubmVyTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6QXJn
c01hdGNoZXI8SW5uZXJNYXRjaGVyLCBrMSwgazIsIGszLCBrNCwgazUsIGs2LCBrNywgazgsIGs5
PgotQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBr
OCwKLSAgICAgIGs5PihtYXRjaGVyKTsKLX0KLQotdGVtcGxhdGUgPGludCBrMSwgaW50IGsyLCBp
bnQgazMsIGludCBrNCwgaW50IGs1LCBpbnQgazYsIGludCBrNywgaW50IGs4LAotICAgIGludCBr
OSwgaW50IGsxMCwgdHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpBcmdz
TWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwgazYsIGs3LCBrOCwgazks
Ci0gICAgazEwPgotQXJncyhjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpIHsKLSAgcmV0dXJu
IGludGVybmFsOjpBcmdzTWF0Y2hlcjxJbm5lck1hdGNoZXIsIGsxLCBrMiwgazMsIGs0LCBrNSwg
azYsIGs3LCBrOCwKLSAgICAgIGs5LCBrMTA+KG1hdGNoZXIpOwotfQotCi0vLyBFbGVtZW50c0Fy
ZShlXzEsIGVfMiwgLi4uIGVfbikgbWF0Y2hlcyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHdpdGgK
LS8vIG4gZWxlbWVudHMsIHdoZXJlIHRoZSBpLXRoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lciBt
dXN0Ci0vLyBtYXRjaCB0aGUgaS10aCBhcmd1bWVudCBpbiB0aGUgbGlzdC4gIEVhY2ggYXJndW1l
bnQgb2YKLS8vIEVsZW1lbnRzQXJlKCkgY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9yIGEgbWF0Y2hl
ci4gIFdlIHN1cHBvcnQgdXAgdG8KLS8vIDEwIGFyZ3VtZW50cy4KLS8vCi0vLyBUaGUgdXNlIG9m
IERlY2F5QXJyYXkgaW4gdGhlIGltcGxlbWVudGF0aW9uIGFsbG93cyBFbGVtZW50c0FyZSgpCi0v
LyB0byBhY2NlcHQgc3RyaW5nIGxpdGVyYWxzLCB3aG9zZSB0eXBlIGlzIGNvbnN0IGNoYXJbTl0s
IGJ1dCB3ZQotLy8gd2FudCB0byB0cmVhdCB0aGVtIGFzIGNvbnN0IGNoYXIqLgotLy8KLS8vIE5P
VEU6IFNpbmNlIEVsZW1lbnRzQXJlKCkgY2FyZXMgYWJvdXQgdGhlIG9yZGVyIG9mIHRoZSBlbGVt
ZW50cywgaXQKLS8vIG11c3Qgbm90IGJlIHVzZWQgd2l0aCBjb250YWluZXJzIHdob3NlIGVsZW1l
bnRzJ3Mgb3JkZXIgaXMKLS8vIHVuZGVmaW5lZCAoZS5nLiBoYXNoX21hcCkuCi0KLWlubGluZSBp
bnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8PiA+Ci1F
bGVtZW50c0FyZSgpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPD4gQXJnczsKLSAgcmV0
dXJuIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncygpKTsKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxPgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8
Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDE+Ojp0eXBlPiA+Ci1FbGVtZW50c0FyZShjb25zdCBUMSYgZTEpIHsKLSAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDE+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxB
cmdzPihBcmdzKGUxKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+
Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1
cGxlPAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0g
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZT4gPgotRWxlbWVu
dHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlPiBBcmdzOwotICBy
ZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMikpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLWlu
bGluZSBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8
Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGU+ID4KLUVsZW1lbnRzQXJlKGNvbnN0
IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMpIHsKLSAgdHlwZWRlZiA6OnRlc3Rp
bmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4g
aW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMpKTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0PgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0
aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0
eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0g
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlPiA+Ci1FbGVtZW50c0FyZShj
b25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQpIHsK
LSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDI+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlPiBBcmdzOwot
ICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwg
ZTMsIGU0KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1l
bnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
ND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlw
ZT4gPgotRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBl
MywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBlNSkgewotICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUs
Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUNT46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNB
cmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQsIGU1KSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDY+Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJl
TWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5
cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlPiA+Ci1FbGVtZW50
c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYg
ZTQsCi0gICAgY29uc3QgVDUmIGU1LCBjb25zdCBUNiYgZTYpIHsKLSAgdHlwZWRlZiA6OnRlc3Rp
bmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDY+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hl
cjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpKTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci1pbmxpbmUgaW50ZXJuYWw6OkVs
ZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6
dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAot
ICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGU+ID4KLUVsZW1l
bnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBjb25zdCBUMyYgZTMsIGNvbnN0IFQ0
JiBlNCwKLSAgICBjb25zdCBUNSYgZTUsIGNvbnN0IFQ2JiBlNiwgY29uc3QgVDcmIGU3KSB7Ci0g
IHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQy
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQ3Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpFbGVtZW50c0Fy
ZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDg+Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6
OnR1cGxlPAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUs
Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBl
bmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlB
cnJheTxUNz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4
Pjo6dHlwZT4gPgotRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0
IFQzJiBlMywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBj
b25zdCBUNyYgZTcsIGNvbnN0IFQ4JiBlOCkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
Ci0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUNT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCi0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGU+IEFyZ3M7Ci0gIHJldHVy
biBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQs
IGU1LCBlNiwgZTcsCi0gICAgICBlOCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotaW5saW5l
IGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAg
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUNT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ2Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0
eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGUsCi0g
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gPgotRWxlbWVu
dHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQm
IGU0LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYgZTcsIGNvbnN0
IFQ4JiBlOCwgY29uc3QgVDkmIGU5KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZSwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpF
bGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywK
LSAgICAgIGU4LCBlOSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci1p
bmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxl
PAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDY+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
Nz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlw
ZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMTA+Ojp0eXBlPiA+Ci1FbGVtZW50
c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYg
ZTQsCi0gICAgY29uc3QgVDUmIGU1LCBjb25zdCBUNiYgZTYsIGNvbnN0IFQ3JiBlNywgY29uc3Qg
VDgmIGU4LCBjb25zdCBUOSYgZTksCi0gICAgY29uc3QgVDEwJiBlMTApIHsKLSAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+
Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRl
Y2F5QXJyYXk8VDY+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDc+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDEwPjo6dHlwZT4gQXJnczsKLSAgcmV0dXJu
IGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwg
ZTUsIGU2LCBlNywKLSAgICAgIGU4LCBlOSwgZTEwKSk7Ci19Ci0KLS8vIFVub3JkZXJlZEVsZW1l
bnRzQXJlKGVfMSwgZV8yLCAuLi4sIGVfbikgaXMgYW4gRWxlbWVudHNBcmUgZXh0ZW5zaW9uCi0v
LyB0aGF0IG1hdGNoZXMgbiBlbGVtZW50cyBpbiBhbnkgb3JkZXIuICBXZSBzdXBwb3J0IHVwIHRv
IG49MTAgYXJndW1lbnRzLgotCi1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJl
TWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPD4gPgotVW5vcmRlcmVkRWxlbWVudHNBcmUo
KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTw+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5h
bDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoKSk7Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMT4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVN
YXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQxPjo6dHlwZT4gPgotVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEm
IGUxKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSkpOwotfQotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMj46OnR5cGU+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQx
JiBlMSwgY29uc3QgVDImIGUyKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFs
OjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIpKTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1pbmxpbmUg
aW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1
cGxlPAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0g
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlPiA+Ci1Vbm9yZGVyZWRFbGVt
ZW50c0FyZShjb25zdCBUMSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzKSB7Ci0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZT4gQXJn
czsKLSAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4o
QXJncyhlMSwgZTIsIGUzKSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVk
RWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFy
cmF5PFQ0Pjo6dHlwZT4gPgotVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25z
dCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0
aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlw
ZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFs
OjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotaW5saW5lIGludGVybmFsOjpVbm9yZGVyZWRFbGVt
ZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5
cGU+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKGNvbnN0IFQxJiBlMSwgY29uc3QgVDImIGUyLCBj
b25zdCBUMyYgZTMsIGNvbnN0IFQ0JiBlNCwKLSAgICBjb25zdCBUNSYgZTUpIHsKLSAgdHlwZWRl
ZiA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBl
LAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAg
dHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJuYWw6
OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0LCBl
NSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2PgotaW5saW5lIGlu
dGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0dXBs
ZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ2Pjo6dHlwZT4gPgotVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBj
b25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBl
NSwgY29uc3QgVDYmIGU2KSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGlu
dGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlw
ZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ2Pjo6dHlwZT4gQXJnczsK
LSAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJn
cyhlMSwgZTIsIGUzLCBlNCwgZTUsCi0gICAgICBlNikpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRl
cmVkRWxlbWVudHNBcmVNYXRjaGVyPAotICAgIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8
VDU+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5
cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3Pjo6dHlwZT4gPgot
VW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQz
JiBlMywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25z
dCBUNyYgZTcpIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6
OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0
eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDU+Ojp0eXBlLAotICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAotICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlPiBBcmdzOwotICByZXR1cm4gaW50ZXJu
YWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjxBcmdzPihBcmdzKGUxLCBlMiwgZTMsIGU0
LCBlNSwKLSAgICAgIGU2LCBlNykpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3Jk
ZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1l
IGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVj
YXlBcnJheTxUND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5
PFQ1Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0
eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCi0g
ICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZT4gPgotVW5vcmRl
cmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0IFQzJiBlMywg
Y29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBjb25zdCBUNyYg
ZTcsIGNvbnN0IFQ4JiBlOCkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0gICAgICB0
eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6
RGVjYXlBcnJheTxUMz46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUND46OnR5cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNT46OnR5
cGUsCi0gICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNj46OnR5cGUsCi0gICAg
ICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCi0gICAgICB0eXBlbmFt
ZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46OnR5cGU+IEFyZ3M7Ci0gIHJldHVybiBpbnRlcm5h
bDo6VW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoZTEsIGUyLCBlMywgZTQs
IGU1LAotICAgICAgZTYsIGU3LCBlOCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotaW5saW5l
IGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0
dXBsZTwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAot
ICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUMj46OnR5cGUsCi0gICAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRl
cm5hbDo6RGVjYXlBcnJheTxUNT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpE
ZWNheUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJy
YXk8VDc+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUOD46
OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4g
PgotVW5vcmRlcmVkRWxlbWVudHNBcmUoY29uc3QgVDEmIGUxLCBjb25zdCBUMiYgZTIsIGNvbnN0
IFQzJiBlMywgY29uc3QgVDQmIGU0LAotICAgIGNvbnN0IFQ1JiBlNSwgY29uc3QgVDYmIGU2LCBj
b25zdCBUNyYgZTcsIGNvbnN0IFQ4JiBlOCwgY29uc3QgVDkmIGU5KSB7Ci0gIHR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQxPjo6
dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAg
ICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQzPjo6dHlwZSwKLSAgICAgIHR5cGVu
YW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ0Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVy
bmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNh
eUFycmF5PFQ2Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ3
Pjo6dHlwZSwKLSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwK
LSAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ5Pjo6dHlwZT4gQXJnczsKLSAg
cmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhl
MSwgZTIsIGUzLCBlNCwgZTUsCi0gICAgICBlNiwgZTcsIGU4LCBlOSkpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1l
bnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxlPAotICAgICAgICB0eXBlbmFtZSBp
bnRlcm5hbDo6RGVjYXlBcnJheTxUMT46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFs
OjpEZWNheUFycmF5PFQyPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxU
ND46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ1Pjo6dHlw
ZSwKLSAgICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+Ojp0eXBlLAotICAg
ICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJheTxUNz46OnR5cGUsCi0gICAgICAgIHR5
cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQ4Pjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUg
aW50ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAotICAgICAgICB0eXBlbmFtZSBpbnRlcm5h
bDo6RGVjYXlBcnJheTxUMTA+Ojp0eXBlPiA+Ci1Vbm9yZGVyZWRFbGVtZW50c0FyZShjb25zdCBU
MSYgZTEsIGNvbnN0IFQyJiBlMiwgY29uc3QgVDMmIGUzLCBjb25zdCBUNCYgZTQsCi0gICAgY29u
c3QgVDUmIGU1LCBjb25zdCBUNiYgZTYsIGNvbnN0IFQ3JiBlNywgY29uc3QgVDgmIGU4LCBjb25z
dCBUOSYgZTksCi0gICAgY29uc3QgVDEwJiBlMTApIHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1
cGxlPAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDE+Ojp0eXBlLAotICAg
ICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDI+Ojp0eXBlLAotICAgICAgdHlwZW5h
bWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDM+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJu
YWw6OkRlY2F5QXJyYXk8VDQ+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5
QXJyYXk8VDU+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDY+
Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDc+Ojp0eXBlLAot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDg+Ojp0eXBlLAotICAgICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VDk+Ojp0eXBlLAotICAgICAgdHlwZW5hbWUgaW50
ZXJuYWw6OkRlY2F5QXJyYXk8VDEwPjo6dHlwZT4gQXJnczsKLSAgcmV0dXJuIGludGVybmFsOjpV
bm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4oQXJncyhlMSwgZTIsIGUzLCBlNCwgZTUs
Ci0gICAgICBlNiwgZTcsIGU4LCBlOSwgZTEwKSk7Ci19Ci0KLS8vIEFsbE9mKG0xLCBtMiwgLi4u
LCBtaykgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRjaGVzIGFsbCBvZiB0aGUgZ2l2ZW4KLS8v
IHN1Yi1tYXRjaGVycy4gIEFsbE9mIGlzIGNhbGxlZCBmdWxseSBxdWFsaWZpZWQgdG8gcHJldmVu
dCBBREwgZnJvbSBmaXJpbmcuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5hbWUgTTI+
Ci1pbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0MjxNMSwgTTI+Ojp0eXBlCi1B
bGxPZihNMSBtMSwgTTIgbTIpIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJl
c3VsdDI8TTEsIE0yPjo6dHlwZSgKLSAgICAgIG0xLAotICAgICAgbTIpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMz4KLWlubGluZSB0eXBlbmFt
ZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQzPE0xLCBNMiwgTTM+Ojp0eXBlCi1BbGxPZihNMSBtMSwg
TTIgbTIsIE0zIG0zKSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQz
PE0xLCBNMiwgTTM+Ojp0eXBlKAotICAgICAgbTEsCi0gICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0y
LCBtMykpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFt
ZSBNMywgdHlwZW5hbWUgTTQ+Ci1pbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0
NDxNMSwgTTIsIE0zLCBNND46OnR5cGUKLUFsbE9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00
KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQ0PE0xLCBNMiwgTTMs
IE00Pjo6dHlwZSgKLSAgICAgIDo6dGVzdGluZzo6QWxsT2YobTEsIG0yKSwKLSAgICAgIDo6dGVz
dGluZzo6QWxsT2YobTMsIG00KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSwgdHlwZW5h
bWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUgTTU+Ci1pbmxpbmUgdHlw
ZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0NTxNMSwgTTIsIE0zLCBNNCwgTTU+Ojp0eXBlCi1B
bGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUpIHsKLSAgcmV0dXJuIHR5cGVu
YW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZSgKLSAg
ICAgIDo6dGVzdGluZzo6QWxsT2YobTEsIG0yKSwKLSAgICAgIDo6dGVzdGluZzo6QWxsT2YobTMs
IG00LCBtNSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBl
bmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02PgotaW5s
aW5lIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDY8TTEsIE0yLCBNMywgTTQsIE01LCBN
Nj46OnR5cGUKLUFsbE9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYp
IHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdDY8TTEsIE0yLCBNMywg
TTQsIE01LCBNNj46OnR5cGUoCi0gICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiwgbTMpLAot
ICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtNCwgbTUsIG02KSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBNMSwgdHlwZW5hbWUgTTIsIHR5cGVuYW1lIE0zLCB0eXBlbmFtZSBNNCwgdHlwZW5hbWUg
TTUsCi0gICAgdHlwZW5hbWUgTTYsIHR5cGVuYW1lIE03PgotaW5saW5lIHR5cGVuYW1lIGludGVy
bmFsOjpBbGxPZlJlc3VsdDc8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTc+Ojp0eXBlCi1BbGxP
ZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBtNykgewotICBy
ZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0NzxNMSwgTTIsIE0zLCBNNCwgTTUs
IE02LCBNNz46OnR5cGUoCi0gICAgICA6OnRlc3Rpbmc6OkFsbE9mKG0xLCBtMiwgbTMpLAotICAg
ICAgOjp0ZXN0aW5nOjpBbGxPZihtNCwgbTUsIG02LCBtNykpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1l
IE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTg+Ci1pbmxpbmUg
dHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0ODxNMSwgTTIsIE0zLCBNNCwgTTUsIE02LCBN
NywgTTg+Ojp0eXBlCi1BbGxPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02
IG02LCBNNyBtNywgTTggbTgpIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJl
c3VsdDg8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04Pjo6dHlwZSgKLSAgICAgIDo6dGVz
dGluZzo6QWxsT2YobTEsIG0yLCBtMywgbTQpLAotICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtNSwg
bTYsIG03LCBtOCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0
eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAgIHR5cGVuYW1lIE02LCB0
eXBlbmFtZSBNNywgdHlwZW5hbWUgTTgsIHR5cGVuYW1lIE05PgotaW5saW5lIHR5cGVuYW1lIGlu
dGVybmFsOjpBbGxPZlJlc3VsdDk8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04LCBNOT46
OnR5cGUKLUFsbE9mKE0xIG0xLCBNMiBtMiwgTTMgbTMsIE00IG00LCBNNSBtNSwgTTYgbTYsIE03
IG03LCBNOCBtOCwgTTkgbTkpIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJl
c3VsdDk8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04LAotICAgICAgTTk+Ojp0eXBlKAot
ICAgICAgOjp0ZXN0aW5nOjpBbGxPZihtMSwgbTIsIG0zLCBtNCksCi0gICAgICA6OnRlc3Rpbmc6
OkFsbE9mKG01LCBtNiwgbTcsIG04LCBtOSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEs
IHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01LAotICAg
IHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNywgdHlwZW5hbWUgTTgsIHR5cGVuYW1lIE05LCB0eXBl
bmFtZSBNMTA+Ci1pbmxpbmUgdHlwZW5hbWUgaW50ZXJuYWw6OkFsbE9mUmVzdWx0MTA8TTEsIE0y
LCBNMywgTTQsIE01LCBNNiwgTTcsIE04LCBNOSwKLSAgICBNMTA+Ojp0eXBlCi1BbGxPZihNMSBt
MSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBNNyBtNywgTTggbTgsIE05IG05
LCBNMTAgbTEwKSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QWxsT2ZSZXN1bHQxMDxN
MSwgTTIsIE0zLCBNNCwgTTUsIE02LCBNNywgTTgsIE05LAotICAgICAgTTEwPjo6dHlwZSgKLSAg
ICAgIDo6dGVzdGluZzo6QWxsT2YobTEsIG0yLCBtMywgbTQsIG01KSwKLSAgICAgIDo6dGVzdGlu
Zzo6QWxsT2YobTYsIG03LCBtOCwgbTksIG0xMCkpOwotfQotCi0vLyBBbnlPZihtMSwgbTIsIC4u
LiwgbWspIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgbWF0Y2hlcyBhbnkgb2YgdGhlIGdpdmVuCi0v
LyBzdWItbWF0Y2hlcnMuICBBbnlPZiBpcyBjYWxsZWQgZnVsbHkgcXVhbGlmaWVkIHRvIHByZXZl
bnQgQURMIGZyb20gZmlyaW5nLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVuYW1lIE0y
PgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDI8TTEsIE0yPjo6dHlwZQot
QW55T2YoTTEgbTEsIE0yIG0yKSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZS
ZXN1bHQyPE0xLCBNMj46OnR5cGUoCi0gICAgICBtMSwKLSAgICAgIG0yKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTM+Ci1pbmxpbmUgdHlwZW5h
bWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0MzxNMSwgTTIsIE0zPjo6dHlwZQotQW55T2YoTTEgbTEs
IE0yIG0yLCBNMyBtMykgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0
MzxNMSwgTTIsIE0zPjo6dHlwZSgKLSAgICAgIG0xLAotICAgICAgOjp0ZXN0aW5nOjpBbnlPZiht
MiwgbTMpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5h
bWUgTTMsIHR5cGVuYW1lIE00PgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3Vs
dDQ8TTEsIE0yLCBNMywgTTQ+Ojp0eXBlCi1BbnlPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBt
NCkgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0NDxNMSwgTTIsIE0z
LCBNND46OnR5cGUoCi0gICAgICA6OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiksCi0gICAgICA6OnRl
c3Rpbmc6OkFueU9mKG0zLCBtNCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTEsIHR5cGVu
YW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1lIE01PgotaW5saW5lIHR5
cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDU8TTEsIE0yLCBNMywgTTQsIE01Pjo6dHlwZQot
QW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01KSB7Ci0gIHJldHVybiB0eXBl
bmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ1PE0xLCBNMiwgTTMsIE00LCBNNT46OnR5cGUoCi0g
ICAgICA6OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiksCi0gICAgICA6OnRlc3Rpbmc6OkFueU9mKG0z
LCBtNCwgbTUpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlw
ZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNj4KLWlu
bGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ2PE0xLCBNMiwgTTMsIE00LCBNNSwg
TTY+Ojp0eXBlCi1BbnlPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02
KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQ2PE0xLCBNMiwgTTMs
IE00LCBNNSwgTTY+Ojp0eXBlKAotICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIsIG0zKSwK
LSAgICAgIDo6dGVzdGluZzo6QW55T2YobTQsIG01LCBtNikpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTTEsIHR5cGVuYW1lIE0yLCB0eXBlbmFtZSBNMywgdHlwZW5hbWUgTTQsIHR5cGVuYW1l
IE01LAotICAgIHR5cGVuYW1lIE02LCB0eXBlbmFtZSBNNz4KLWlubGluZSB0eXBlbmFtZSBpbnRl
cm5hbDo6QW55T2ZSZXN1bHQ3PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03Pjo6dHlwZQotQW55
T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcpIHsKLSAg
cmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDc8TTEsIE0yLCBNMywgTTQsIE01
LCBNNiwgTTc+Ojp0eXBlKAotICAgICAgOjp0ZXN0aW5nOjpBbnlPZihtMSwgbTIsIG0zKSwKLSAg
ICAgIDo6dGVzdGluZzo6QW55T2YobTQsIG01LCBtNiwgbTcpKTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFt
ZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04PgotaW5saW5l
IHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDg8TTEsIE0yLCBNMywgTTQsIE01LCBNNiwg
TTcsIE04Pjo6dHlwZQotQW55T2YoTTEgbTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBN
NiBtNiwgTTcgbTcsIE04IG04KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZS
ZXN1bHQ4PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOD46OnR5cGUoCi0gICAgICA6OnRl
c3Rpbmc6OkFueU9mKG0xLCBtMiwgbTMsIG00KSwKLSAgICAgIDo6dGVzdGluZzo6QW55T2YobTUs
IG02LCBtNywgbTgpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xLCB0eXBlbmFtZSBNMiwg
dHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAgICB0eXBlbmFtZSBNNiwg
dHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOT4KLWlubGluZSB0eXBlbmFtZSBp
bnRlcm5hbDo6QW55T2ZSZXN1bHQ5PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTk+
Ojp0eXBlCi1BbnlPZihNMSBtMSwgTTIgbTIsIE0zIG0zLCBNNCBtNCwgTTUgbTUsIE02IG02LCBN
NyBtNywgTTggbTgsIE05IG05KSB7Ci0gIHJldHVybiB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZS
ZXN1bHQ5PE0xLCBNMiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwKLSAgICAgIE05Pjo6dHlwZSgK
LSAgICAgIDo6dGVzdGluZzo6QW55T2YobTEsIG0yLCBtMywgbTQpLAotICAgICAgOjp0ZXN0aW5n
OjpBbnlPZihtNSwgbTYsIG03LCBtOCwgbTkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0x
LCB0eXBlbmFtZSBNMiwgdHlwZW5hbWUgTTMsIHR5cGVuYW1lIE00LCB0eXBlbmFtZSBNNSwKLSAg
ICB0eXBlbmFtZSBNNiwgdHlwZW5hbWUgTTcsIHR5cGVuYW1lIE04LCB0eXBlbmFtZSBNOSwgdHlw
ZW5hbWUgTTEwPgotaW5saW5lIHR5cGVuYW1lIGludGVybmFsOjpBbnlPZlJlc3VsdDEwPE0xLCBN
MiwgTTMsIE00LCBNNSwgTTYsIE03LCBNOCwgTTksCi0gICAgTTEwPjo6dHlwZQotQW55T2YoTTEg
bTEsIE0yIG0yLCBNMyBtMywgTTQgbTQsIE01IG01LCBNNiBtNiwgTTcgbTcsIE04IG04LCBNOSBt
OSwgTTEwIG0xMCkgewotICByZXR1cm4gdHlwZW5hbWUgaW50ZXJuYWw6OkFueU9mUmVzdWx0MTA8
TTEsIE0yLCBNMywgTTQsIE01LCBNNiwgTTcsIE04LCBNOSwKLSAgICAgIE0xMD46OnR5cGUoCi0g
ICAgICA6OnRlc3Rpbmc6OkFueU9mKG0xLCBtMiwgbTMsIG00LCBtNSksCi0gICAgICA6OnRlc3Rp
bmc6OkFueU9mKG02LCBtNywgbTgsIG05LCBtMTApKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKLQotCi0vLyBUaGUgTUFUQ0hFUiogZmFtaWx5IG9mIG1hY3JvcyBjYW4gYmUgdXNlZCBp
biBhIG5hbWVzcGFjZSBzY29wZSB0bwotLy8gZGVmaW5lIGN1c3RvbSBtYXRjaGVycyBlYXNpbHku
Ci0vLwotLy8gQmFzaWMgVXNhZ2UKLS8vID09PT09PT09PT09Ci0vLwotLy8gVGhlIHN5bnRheAot
Ly8KLS8vICAgTUFUQ0hFUihuYW1lLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsg
fQotLy8KLS8vIGRlZmluZXMgYSBtYXRjaGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgdGhhdCBleGVj
dXRlcyB0aGUgc3RhdGVtZW50cywKLS8vIHdoaWNoIG11c3QgcmV0dXJuIGEgYm9vbCB0byBpbmRp
Y2F0ZSBpZiB0aGUgbWF0Y2ggc3VjY2VlZHMuICBJbnNpZGUKLS8vIHRoZSBzdGF0ZW1lbnRzLCB5
b3UgY2FuIHJlZmVyIHRvIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGJ5ICdhcmcnLAotLy8gYW5k
IHJlZmVyIHRvIGl0cyB0eXBlIGJ5ICdhcmdfdHlwZScuCi0vLwotLy8gVGhlIGRlc2NyaXB0aW9u
IHN0cmluZyBkb2N1bWVudHMgd2hhdCB0aGUgbWF0Y2hlciBkb2VzLCBhbmQgaXMgdXNlZAotLy8g
dG8gZ2VuZXJhdGUgdGhlIGZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZSBtYXRjaCBmYWlscy4gIFNp
bmNlIGEKLS8vIE1BVENIRVIoKSBpcyB1c3VhbGx5IGRlZmluZWQgaW4gYSBoZWFkZXIgZmlsZSBz
aGFyZWQgYnkgbXVsdGlwbGUKLS8vIEMrKyBzb3VyY2UgZmlsZXMsIHdlIHJlcXVpcmUgdGhlIGRl
c2NyaXB0aW9uIHRvIGJlIGEgQy1zdHJpbmcKLS8vIGxpdGVyYWwgdG8gYXZvaWQgcG9zc2libGUg
c2lkZSBlZmZlY3RzLiAgSXQgY2FuIGJlIGVtcHR5LCBpbiB3aGljaAotLy8gY2FzZSB3ZSdsbCB1
c2UgdGhlIHNlcXVlbmNlIG9mIHdvcmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgYXMgdGhlCi0vLyBk
ZXNjcmlwdGlvbi4KLS8vCi0vLyBGb3IgZXhhbXBsZToKLS8vCi0vLyAgIE1BVENIRVIoSXNFdmVu
LCAiIikgeyByZXR1cm4gKGFyZyAlIDIpID09IDA7IH0KLS8vCi0vLyBhbGxvd3MgeW91IHRvIHdy
aXRlCi0vLwotLy8gICAvLyBFeHBlY3RzIG1vY2tfZm9vLkJhcihuKSB0byBiZSBjYWxsZWQgd2hl
cmUgbiBpcyBldmVuLgotLy8gICBFWFBFQ1RfQ0FMTChtb2NrX2ZvbywgQmFyKElzRXZlbigpKSk7
Ci0vLwotLy8gb3IsCi0vLwotLy8gICAvLyBWZXJpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBzb21l
X2V4cHJlc3Npb24gaXMgZXZlbi4KLS8vICAgRVhQRUNUX1RIQVQoc29tZV9leHByZXNzaW9uLCBJ
c0V2ZW4oKSk7Ci0vLwotLy8gSWYgdGhlIGFib3ZlIGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBw
cmludCBzb21ldGhpbmcgbGlrZToKLS8vCi0vLyAgIFZhbHVlIG9mOiBzb21lX2V4cHJlc3Npb24K
LS8vICAgRXhwZWN0ZWQ6IGlzIGV2ZW4KLS8vICAgICBBY3R1YWw6IDcKLS8vCi0vLyB3aGVyZSB0
aGUgZGVzY3JpcHRpb24gImlzIGV2ZW4iIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmcm9t
IHRoZQotLy8gbWF0Y2hlciBuYW1lIElzRXZlbi4KLS8vCi0vLyBBcmd1bWVudCBUeXBlCi0vLyA9
PT09PT09PT09PT09Ci0vLwotLy8gTm90ZSB0aGF0IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWlu
ZyBtYXRjaGVkIChhcmdfdHlwZSkgaXMKLS8vIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4g
d2hpY2ggeW91IHVzZSB0aGUgbWF0Y2hlciBhbmQgaXMKLS8vIHN1cHBsaWVkIHRvIHlvdSBieSB0
aGUgY29tcGlsZXIsIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0vLyBkZWNsYXJp
bmcgaXQgKG5vciBjYW4geW91KS4gIFRoaXMgYWxsb3dzIHRoZSBtYXRjaGVyIHRvIGJlCi0vLyBw
b2x5bW9ycGhpYy4gIEZvciBleGFtcGxlLCBJc0V2ZW4oKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBh
bnkgdHlwZQotLy8gd2hlcmUgdGhlIHZhbHVlIG9mICIoYXJnICUgMikgPT0gMCIgY2FuIGJlIGlt
cGxpY2l0bHkgY29udmVydGVkIHRvCi0vLyBhIGJvb2wuICBJbiB0aGUgIkJhcihJc0V2ZW4oKSki
IGV4YW1wbGUgYWJvdmUsIGlmIG1ldGhvZCBCYXIoKQotLy8gdGFrZXMgYW4gaW50LCAnYXJnX3R5
cGUnIHdpbGwgYmUgaW50OyBpZiBpdCB0YWtlcyBhbiB1bnNpZ25lZCBsb25nLAotLy8gJ2FyZ190
eXBlJyB3aWxsIGJlIHVuc2lnbmVkIGxvbmc7IGFuZCBzbyBvbi4KLS8vCi0vLyBQYXJhbWV0ZXJp
emluZyBNYXRjaGVycwotLy8gPT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBTb21ldGlt
ZXMgeW91J2xsIHdhbnQgdG8gcGFyYW1ldGVyaXplIHRoZSBtYXRjaGVyLiAgRm9yIHRoYXQgeW91
Ci0vLyBjYW4gdXNlIGFub3RoZXIgbWFjcm86Ci0vLwotLy8gICBNQVRDSEVSX1AobmFtZSwgcGFy
YW1fbmFtZSwgZGVzY3JpcHRpb25fc3RyaW5nKSB7IHN0YXRlbWVudHM7IH0KLS8vCi0vLyBGb3Ig
ZXhhbXBsZToKLS8vCi0vLyAgIE1BVENIRVJfUChIYXNBYnNvbHV0ZVZhbHVlLCB2YWx1ZSwgIiIp
IHsgcmV0dXJuIGFicyhhcmcpID09IHZhbHVlOyB9Ci0vLwotLy8gd2lsbCBhbGxvdyB5b3UgdG8g
d3JpdGU6Ci0vLwotLy8gICBFWFBFQ1RfVEhBVChCbGFoKCJhIiksIEhhc0Fic29sdXRlVmFsdWUo
bikpOwotLy8KLS8vIHdoaWNoIG1heSBsZWFkIHRvIHRoaXMgbWVzc2FnZSAoYXNzdW1pbmcgbiBp
cyAxMCk6Ci0vLwotLy8gICBWYWx1ZSBvZjogQmxhaCgiYSIpCi0vLyAgIEV4cGVjdGVkOiBoYXMg
YWJzb2x1dGUgdmFsdWUgMTAKLS8vICAgICBBY3R1YWw6IC05Ci0vLwotLy8gTm90ZSB0aGF0IGJv
dGggdGhlIG1hdGNoZXIgZGVzY3JpcHRpb24gYW5kIGl0cyBwYXJhbWV0ZXIgYXJlCi0vLyBwcmlu
dGVkLCBtYWtpbmcgdGhlIG1lc3NhZ2UgaHVtYW4tZnJpZW5kbHkuCi0vLwotLy8gSW4gdGhlIG1h
dGNoZXIgZGVmaW5pdGlvbiBib2R5LCB5b3UgY2FuIHdyaXRlICdmb29fdHlwZScgdG8KLS8vIHJl
ZmVyZW5jZSB0aGUgdHlwZSBvZiBhIHBhcmFtZXRlciBuYW1lZCAnZm9vJy4gIEZvciBleGFtcGxl
LCBpbiB0aGUKLS8vIGJvZHkgb2YgTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlKSBh
Ym92ZSwgeW91IGNhbiB3cml0ZQotLy8gJ3ZhbHVlX3R5cGUnIHRvIHJlZmVyIHRvIHRoZSB0eXBl
IG9mICd2YWx1ZScuCi0vLwotLy8gV2UgYWxzbyBwcm92aWRlIE1BVENIRVJfUDIsIE1BVENIRVJf
UDMsIC4uLiwgdXAgdG8gTUFUQ0hFUl9QMTAgdG8KLS8vIHN1cHBvcnQgbXVsdGktcGFyYW1ldGVy
IG1hdGNoZXJzLgotLy8KLS8vIERlc2NyaWJpbmcgUGFyYW1ldGVyaXplZCBNYXRjaGVycwotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gVGhlIGxhc3QgYXJndW1l
bnQgdG8gTUFUQ0hFUiooKSBpcyBhIHN0cmluZy10eXBlZCBleHByZXNzaW9uLiAgVGhlCi0vLyBl
eHByZXNzaW9uIGNhbiByZWZlcmVuY2UgYWxsIG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycyBh
bmQgYQotLy8gc3BlY2lhbCBib29sLXR5cGVkIHZhcmlhYmxlIG5hbWVkICduZWdhdGlvbicuICBX
aGVuICduZWdhdGlvbicgaXMKLS8vIGZhbHNlLCB0aGUgZXhwcmVzc2lvbiBzaG91bGQgZXZhbHVh
dGUgdG8gdGhlIG1hdGNoZXIncyBkZXNjcmlwdGlvbjsKLS8vIG90aGVyd2lzZSBpdCBzaG91bGQg
ZXZhbHVhdGUgdG8gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZWdhdGlvbiBvZgotLy8gdGhlIG1h
dGNoZXIuICBGb3IgZXhhbXBsZSwKLS8vCi0vLyAgIHVzaW5nIHRlc3Rpbmc6OlByaW50VG9TdHJp
bmc7Ci0vLwotLy8gICBNQVRDSEVSX1AyKEluQ2xvc2VkUmFuZ2UsIGxvdywgaGksCi0vLyAgICAg
ICBzdHJpbmcobmVnYXRpb24gPyAiaXMgbm90IiA6ICJpcyIpICsgIiBpbiByYW5nZSBbIiArCi0v
LyAgICAgICBQcmludFRvU3RyaW5nKGxvdykgKyAiLCAiICsgUHJpbnRUb1N0cmluZyhoaSkgKyAi
XSIpIHsKLS8vICAgICByZXR1cm4gbG93IDw9IGFyZyAmJiBhcmcgPD0gaGk7Ci0vLyAgIH0KLS8v
ICAgLi4uCi0vLyAgIEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOwotLy8gICBF
WFBFQ1RfVEhBVCgzLCBOb3QoSW5DbG9zZWRSYW5nZSgyLCA0KSkpOwotLy8KLS8vIHdvdWxkIGdl
bmVyYXRlIHR3byBmYWlsdXJlcyB0aGF0IGNvbnRhaW4gdGhlIHRleHQ6Ci0vLwotLy8gICBFeHBl
Y3RlZDogaXMgaW4gcmFuZ2UgWzQsIDZdCi0vLyAgIC4uLgotLy8gICBFeHBlY3RlZDogaXMgbm90
IGluIHJhbmdlIFsyLCA0XQotLy8KLS8vIElmIHlvdSBzcGVjaWZ5ICIiIGFzIHRoZSBkZXNjcmlw
dGlvbiwgdGhlIGZhaWx1cmUgbWVzc2FnZSB3aWxsCi0vLyBjb250YWluIHRoZSBzZXF1ZW5jZSBv
ZiB3b3JkcyBpbiB0aGUgbWF0Y2hlciBuYW1lIGZvbGxvd2VkIGJ5IHRoZQotLy8gcGFyYW1ldGVy
IHZhbHVlcyBwcmludGVkIGFzIGEgdHVwbGUuICBGb3IgZXhhbXBsZSwKLS8vCi0vLyAgIE1BVENI
RVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwgIiIpIHsgLi4uIH0KLS8vICAgLi4uCi0vLyAg
IEVYUEVDVF9USEFUKDMsIEluQ2xvc2VkUmFuZ2UoNCwgNikpOwotLy8gICBFWFBFQ1RfVEhBVCgz
LCBOb3QoSW5DbG9zZWRSYW5nZSgyLCA0KSkpOwotLy8KLS8vIHdvdWxkIGdlbmVyYXRlIHR3byBm
YWlsdXJlcyB0aGF0IGNvbnRhaW4gdGhlIHRleHQ6Ci0vLwotLy8gICBFeHBlY3RlZDogaW4gY2xv
c2VkIHJhbmdlICg0LCA2KQotLy8gICAuLi4KLS8vICAgRXhwZWN0ZWQ6IG5vdCAoaW4gY2xvc2Vk
IHJhbmdlICgyLCA0KSkKLS8vCi0vLyBUeXBlcyBvZiBNYXRjaGVyIFBhcmFtZXRlcnMKLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIEZvciB0aGUgcHVycG9zZSBvZiB0eXBp
bmcsIHlvdSBjYW4gdmlldwotLy8KLS8vICAgTUFUQ0hFUl9QayhGb28sIHAxLCAuLi4sIHBrLCBk
ZXNjcmlwdGlvbl9zdHJpbmcpIHsgLi4uIH0KLS8vCi0vLyBhcyBzaG9ydGhhbmQgZm9yCi0vLwot
Ly8gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDFfdHlwZSwgLi4uLCB0eXBlbmFtZSBwa190eXBlPgot
Ly8gICBGb29NYXRjaGVyUGs8cDFfdHlwZSwgLi4uLCBwa190eXBlPgotLy8gICBGb28ocDFfdHlw
ZSBwMSwgLi4uLCBwa190eXBlIHBrKSB7IC4uLiB9Ci0vLwotLy8gV2hlbiB5b3Ugd3JpdGUgRm9v
KHYxLCAuLi4sIHZrKSwgdGhlIGNvbXBpbGVyIGluZmVycyB0aGUgdHlwZXMgb2YKLS8vIHRoZSBw
YXJhbWV0ZXJzIHYxLCAuLi4sIGFuZCB2ayBmb3IgeW91LiAgSWYgeW91IGFyZSBub3QgaGFwcHkg
d2l0aAotLy8gdGhlIHJlc3VsdCBvZiB0aGUgdHlwZSBpbmZlcmVuY2UsIHlvdSBjYW4gc3BlY2lm
eSB0aGUgdHlwZXMgYnkKLS8vIGV4cGxpY2l0bHkgaW5zdGFudGlhdGluZyB0aGUgdGVtcGxhdGUs
IGFzIGluIEZvbzxsb25nLCBib29sPig1LAotLy8gZmFsc2UpLiAgQXMgc2FpZCBlYXJsaWVyLCB5
b3UgZG9uJ3QgZ2V0IHRvIChvciBuZWVkIHRvKSBzcGVjaWZ5Ci0vLyAnYXJnX3R5cGUnIGFzIHRo
YXQncyBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBtYXRjaGVyCi0vLyBp
cyB1c2VkLiAgWW91IGNhbiBhc3NpZ24gdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uIEZvbyhwMSwg
Li4uLCBwaykKLS8vIHRvIGEgdmFyaWFibGUgb2YgdHlwZSBGb29NYXRjaGVyUGs8cDFfdHlwZSwg
Li4uLCBwa190eXBlPi4gIFRoaXMKLS8vIGNhbiBiZSB1c2VmdWwgd2hlbiBjb21wb3NpbmcgbWF0
Y2hlcnMuCi0vLwotLy8gV2hpbGUgeW91IGNhbiBpbnN0YW50aWF0ZSBhIG1hdGNoZXIgdGVtcGxh
dGUgd2l0aCByZWZlcmVuY2UgdHlwZXMsCi0vLyBwYXNzaW5nIHRoZSBwYXJhbWV0ZXJzIGJ5IHBv
aW50ZXIgdXN1YWxseSBtYWtlcyB5b3VyIGNvZGUgbW9yZQotLy8gcmVhZGFibGUuICBJZiwgaG93
ZXZlciwgeW91IHN0aWxsIHdhbnQgdG8gcGFzcyBhIHBhcmFtZXRlciBieQotLy8gcmVmZXJlbmNl
LCBiZSBhd2FyZSB0aGF0IGluIHRoZSBmYWlsdXJlIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IHRoZQot
Ly8gbWF0Y2hlciB5b3Ugd2lsbCBzZWUgdGhlIHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIG9iamVj
dCBidXQgbm90IGl0cwotLy8gYWRkcmVzcy4KLS8vCi0vLyBFeHBsYWluaW5nIE1hdGNoIFJlc3Vs
dHMKLS8vID09PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFNvbWV0aW1lcyB0aGUgbWF0
Y2hlciBkZXNjcmlwdGlvbiBhbG9uZSBpc24ndCBlbm91Z2ggdG8gZXhwbGFpbiB3aHkKLS8vIHRo
ZSBtYXRjaCBoYXMgZmFpbGVkIG9yIHN1Y2NlZWRlZC4gIEZvciBleGFtcGxlLCB3aGVuIGV4cGVj
dGluZyBhCi0vLyBsb25nIHN0cmluZywgaXQgY2FuIGJlIHZlcnkgaGVscGZ1bCB0byBhbHNvIHBy
aW50IHRoZSBkaWZmIGJldHdlZW4KLS8vIHRoZSBleHBlY3RlZCBzdHJpbmcgYW5kIHRoZSBhY3R1
YWwgb25lLiAgVG8gYWNoaWV2ZSB0aGF0LCB5b3UgY2FuCi0vLyBvcHRpb25hbGx5IHN0cmVhbSBh
ZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGEgc3BlY2lhbCB2YXJpYWJsZQotLy8gbmFtZWQgcmVz
dWx0X2xpc3RlbmVyLCB3aG9zZSB0eXBlIGlzIGEgcG9pbnRlciB0byBjbGFzcwotLy8gTWF0Y2hS
ZXN1bHRMaXN0ZW5lcjoKLS8vCi0vLyAgIE1BVENIRVJfUChFcXVhbHNMb25nU3RyaW5nLCBzdHIs
ICIiKSB7Ci0vLyAgICAgaWYgKGFyZyA9PSBzdHIpIHJldHVybiB0cnVlOwotLy8KLS8vICAgICAq
cmVzdWx0X2xpc3RlbmVyIDw8ICJ0aGUgZGlmZmVyZW5jZTogIgotLy8vICAgICAgICAgICAgICAg
ICAgICAgPDwgRGlmZlN0cmluZ3Moc3RyLCBhcmcpOwotLy8gICAgIHJldHVybiBmYWxzZTsKLS8v
ICAgfQotLy8KLS8vIE92ZXJsb2FkaW5nIE1hdGNoZXJzCi0vLyA9PT09PT09PT09PT09PT09PT09
PQotLy8KLS8vIFlvdSBjYW4gb3ZlcmxvYWQgbWF0Y2hlcnMgd2l0aCBkaWZmZXJlbnQgbnVtYmVy
cyBvZiBwYXJhbWV0ZXJzOgotLy8KLS8vICAgTUFUQ0hFUl9QKEJsYWgsIGEsIGRlc2NyaXB0aW9u
X3N0cmluZzEpIHsgLi4uIH0KLS8vICAgTUFUQ0hFUl9QMihCbGFoLCBhLCBiLCBkZXNjcmlwdGlv
bl9zdHJpbmcyKSB7IC4uLiB9Ci0vLwotLy8gQ2F2ZWF0cwotLy8gPT09PT09PQotLy8KLS8vIFdo
ZW4gZGVmaW5pbmcgYSBuZXcgbWF0Y2hlciwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIGltcGxl
bWVudGluZwotLy8gTWF0Y2hlckludGVyZmFjZSBvciB1c2luZyBNYWtlUG9seW1vcnBoaWNNYXRj
aGVyKCkuICBUaGVzZQotLy8gYXBwcm9hY2hlcyByZXF1aXJlIG1vcmUgd29yayB0aGFuIHRoZSBN
QVRDSEVSKiBtYWNyb3MsIGJ1dCBhbHNvCi0vLyBnaXZlIHlvdSBtb3JlIGNvbnRyb2wgb24gdGhl
IHR5cGVzIG9mIHRoZSB2YWx1ZSBiZWluZyBtYXRjaGVkIGFuZAotLy8gdGhlIG1hdGNoZXIgcGFy
YW1ldGVycywgd2hpY2ggbWF5IGxlYWRzIHRvIGJldHRlciBjb21waWxlciBlcnJvcgotLy8gbWVz
c2FnZXMgd2hlbiB0aGUgbWF0Y2hlciBpcyB1c2VkIHdyb25nLiAgVGhleSBhbHNvIGFsbG93Ci0v
LyBvdmVybG9hZGluZyBtYXRjaGVycyBiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZXMgKGFzIG9wcG9z
ZWQgdG8ganVzdAotLy8gYmFzZWQgb24gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzKS4KLS8vCi0v
LyBNQVRDSEVSKigpIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBuYW1lc3BhY2Ugc2NvcGUuICBUaGUg
cmVhc29uIGlzCi0vLyB0aGF0IEMrKyBkb2Vzbid0IHlldCBhbGxvdyBmdW5jdGlvbi1sb2NhbCB0
eXBlcyB0byBiZSB1c2VkIHRvCi0vLyBpbnN0YW50aWF0ZSB0ZW1wbGF0ZXMuICBUaGUgdXAtY29t
aW5nIEMrKzB4IHN0YW5kYXJkIHdpbGwgZml4IHRoaXMuCi0vLyBPbmNlIHRoYXQncyBkb25lLCB3
ZSdsbCBjb25zaWRlciBzdXBwb3J0aW5nIHVzaW5nIE1BVENIRVIqKCkgaW5zaWRlCi0vLyBhIGZ1
bmN0aW9uLgotLy8KLS8vIE1vcmUgSW5mb3JtYXRpb24KLS8vID09PT09PT09PT09PT09PT0KLS8v
Ci0vLyBUbyBsZWFybiBtb3JlIGFib3V0IHVzaW5nIHRoZXNlIG1hY3JvcywgcGxlYXNlIHNlYXJj
aCBmb3IgJ01BVENIRVInCi0vLyBvbiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlbW9j
ay93aWtpL0Nvb2tCb29rLgotCi0jZGVmaW5lIE1BVENIRVIobmFtZSwgZGVzY3JpcHRpb24pXAot
ICBjbGFzcyBuYW1lIyNNYXRjaGVyIHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBhcmdfdHlwZT5cCi0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6
Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9j
a19JbXBsKClcCi0gICAgICAgICAgIHt9XAotICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhw
bGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlz
dGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tf
b3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qg
e1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAg
IH1cCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIEZv
cm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0gICAgICAgIGNvbnN0IDo6
dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlwdGlv
bik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAotICAgICAgICAg
IHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAgICAgICAgbmVnYXRpb24s
ICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJz
ZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6
dHVwbGU8PigpKSk7XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oZ21v
Y2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0g
ICAgb3BlcmF0b3IgOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0gICAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3IGdt
b2NrX0ltcGw8YXJnX3R5cGU+KCkpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNoZXIoKSB7XAot
ICAgIH1cCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01h
dGNoZXIpO1wKLSAgfTtcCi0gIGlubGluZSBuYW1lIyNNYXRjaGVyIG5hbWUoKSB7XAotICAgIHJl
dHVybiBuYW1lIyNNYXRjaGVyKCk7XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5
cGU+XAotICBib29sIG5hbWUjI01hdGNoZXI6Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFu
ZEV4cGxhaW4oXAotICAgICAgYXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNo
UmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylc
Ci0gICAgICAgICAgY29uc3QKLQotI2RlZmluZSBNQVRDSEVSX1AobmFtZSwgcDAsIGRlc2NyaXB0
aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZT5cCi0gIGNsYXNzIG5hbWUjI01h
dGNoZXJQIHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5c
Ci0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZh
Y2U8YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBleHBsaWNpdCBnbW9ja19JbXBs
KHAwIyNfdHlwZSBnbW9ja19wMClcCi0gICAgICAgICAgIDogcDAoZ21vY2tfcDApIHt9XAotICAg
ICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJn
LCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7
XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29z
KSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2Up
O1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3Rk
Ojpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1h
dERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAg
ICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNj
cmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKLSAg
ICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAgICAgICAgICByZXR1cm4g
Z21vY2tfZGVzY3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwg
XAotICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAw
IyNfdHlwZT4ocDApKSk7XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
Z21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5c
Ci0gICAgb3BlcmF0b3IgOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0g
ICAgICByZXR1cm4gOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3
IGdtb2NrX0ltcGw8YXJnX3R5cGU+KHAwKSk7XAotICAgIH1cCi0gICAgZXhwbGljaXQgbmFtZSMj
TWF0Y2hlclAocDAjI190eXBlIGdtb2NrX3AwKSA6IHAwKGdtb2NrX3AwKSB7XAotICAgIH1cCi0g
ICAgcDAjI190eXBlIHAwO1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8obmFtZSMjTWF0Y2hlclApO1wKLSAgfTtcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGU+XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlclA8cDAjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBw
MCkge1wKLSAgICByZXR1cm4gbmFtZSMjTWF0Y2hlclA8cDAjI190eXBlPihwMCk7XAotICB9XAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlPlwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFy
Z190eXBlPlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVyUDxwMCMjX3R5cGU+OjpnbW9ja19JbXBsPGFy
Z190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgIGFyZ190eXBlIGFyZywgXAotICAgICAg
Ojp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF8pXAotICAgICAgICAgIGNvbnN0Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QMihu
YW1lLCBwMCwgcDEsIGRlc2NyaXB0aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlw
ZSwgdHlwZW5hbWUgcDEjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0Y2hlclAyIHtcCi0gICBw
dWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgY2xhc3MgZ21v
Y2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtc
Ci0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEj
I190eXBlIGdtb2NrX3AxKVwKLSAgICAgICAgICAgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3Ax
KSB7fVwKLSAgICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgICAgIGFy
Z190eXBlIGFyZywgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVu
ZXIpIGNvbnN0O1wKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBnbW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0
aW9uKGZhbHNlKTtcCi0gICAgICB9XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRp
b25Ubyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19v
cyA8PCBGb3JtYXREZXNjcmlwdGlvbih0cnVlKTtcCi0gICAgICB9XAotICAgICAgcDAjI190eXBl
IHAwO1wKLSAgICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0
aW5nOjppbnRlcm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNv
bnN0IHtcCi0gICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19k
ZXNjcmlwdGlvbiA9IChkZXNjcmlwdGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0
aW9uLmVtcHR5KCkpXAotICAgICAgICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAg
ICAgIHJldHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24o
XAotICAgICAgICAgICAgbmVnYXRpb24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6dHVwbGU8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAwLCBw
MSkpKTtcCi0gICAgICB9XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBs
KTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVy
YXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVy
biA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1w
bDxhcmdfdHlwZT4ocDAsIHAxKSk7XAotICAgIH1cCi0gICAgbmFtZSMjTWF0Y2hlclAyKHAwIyNf
dHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxKSA6IHAwKGdtb2NrX3AwKSwgXAotICAg
ICAgICBwMShnbW9ja19wMSkge1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEj
I190eXBlIHAxO1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFt
ZSMjTWF0Y2hlclAyKTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0
eXBlbmFtZSBwMSMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlclAyPHAwIyNfdHlwZSwg
cDEjI190eXBlPiBuYW1lKHAwIyNfdHlwZSBwMCwgXAotICAgICAgcDEjI190eXBlIHAxKSB7XAot
ICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDI8cDAjI190eXBlLCBwMSMjX3R5cGU+KHAwLCBwMSk7
XAotICB9XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5
cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBib29sIG5hbWUjI01hdGNo
ZXJQMjxwMCMjX3R5cGUsIFwKLSAgICAgIHAxIyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+
OjpNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgYXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rp
bmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVf
VU5VU0VEXylcCi0gICAgICAgICAgY29uc3QKLQotI2RlZmluZSBNQVRDSEVSX1AzKG5hbWUsIHAw
LCBwMSwgcDIsIGRlc2NyaXB0aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwg
dHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNN
YXRjaGVyUDMge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBl
PlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMilcCi0g
ICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSB7fVwK
LSAgICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgICAgIGFyZ190eXBl
IGFyZywgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNv
bnN0O1wKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9j
a19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZh
bHNlKTtcCi0gICAgICB9XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6
OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBG
b3JtYXREZXNjcmlwdGlvbih0cnVlKTtcCi0gICAgICB9XAotICAgICAgcDAjI190eXBlIHAwO1wK
LSAgICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICBwcml2YXRl
OlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihi
b29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFs
OjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKLSAgICAgICAgaWYg
KCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAgICAgICAgICByZXR1cm4gZ21vY2tfZGVz
Y3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0
Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAotICAgICAg
ICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRz
VG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwg
cDEjI190eXBlLCBwMiMjX3R5cGU+KHAwLCBwMSwgXAotICAgICAgICAgICAgICAgICAgICBwMikp
KTtcCi0gICAgICB9XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtc
Ci0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVyYXRv
ciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6
OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxh
cmdfdHlwZT4ocDAsIHAxLCBwMikpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNoZXJQMyhwMCMj
X3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgXAotICAgICAgICBwMiMjX3R5cGUg
Z21vY2tfcDIpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSB7XAot
ICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAgICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNf
dHlwZSBwMjtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUj
I01hdGNoZXJQMyk7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlw
ZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjTWF0
Y2hlclAzPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAw
LCBcCi0gICAgICBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMikge1wKLSAgICByZXR1cm4gbmFt
ZSMjTWF0Y2hlclAzPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGU+KHAwLCBwMSwgcDIp
O1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190
eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+
XAotICBib29sIG5hbWUjI01hdGNoZXJQMzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgXAotICAgICAg
cDIjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCi0gICAg
ICBhcmdfdHlwZSBhcmcsIFwKLSAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciog
cmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKLSAgICAgICAgICBjb25z
dAotCi0jZGVmaW5lIE1BVENIRVJfUDQobmFtZSwgcDAsIHAxLCBwMiwgcDMsIGRlc2NyaXB0aW9u
KVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0
eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZT5cCi0gIGNsYXNz
IG5hbWUjI01hdGNoZXJQNCB7XAotICAgcHVibGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRj
aGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgZ21vY2tfSW1w
bChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2Nr
X3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzKVwKLSAgICAgICAgICAgOiBwMChn
bW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBwMyhnbW9ja19wMykge31cCi0g
ICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdfdHlwZSBh
cmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25z
dDtcCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tf
b3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxz
ZSk7XAotICAgICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpz
dGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9y
bWF0RGVzY3JpcHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0g
ICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlw
ZSBwMztcCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5n
IEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtcCi0gICAgICAgIGNvbnN0
IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlwdGlvbiA9IChkZXNjcmlw
dGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVtcHR5KCkpXAotICAgICAg
ICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJldHVybiA6OnRlc3Rpbmc6
OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAgICAgICAgICAgbmVnYXRp
b24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxU
ZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAgICAgICAgIDo6dGVzdGlu
Zzo6dHVwbGU8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgXAotICAgICAgICAgICAg
ICAgICAgICBwMyMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzKSkpO1wKLSAgICAgIH1cCi0gICAgICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxh
cmdfdHlwZT4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdf
dHlwZT4oXAotICAgICAgICAgIG5ldyBnbW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAyLCBw
MykpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNoZXJQNChwMCMjX3R5cGUgZ21vY2tfcDAsIHAx
IyNfdHlwZSBnbW9ja19wMSwgXAotICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlw
ZSBnbW9ja19wMykgOiBwMChnbW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAotICAgICAgICBwMihn
bW9ja19wMiksIHAzKGdtb2NrX3AzKSB7XAotICAgIH1cCi0gICAgcDAjI190eXBlIHAwO1wKLSAg
ICBwMSMjX3R5cGUgcDE7XAotICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgcDMjI190eXBlIHAzO1wK
LSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA0
KTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMj
X3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlPlwK
LSAgaW5saW5lIG5hbWUjI01hdGNoZXJQNDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBl
LCBcCi0gICAgICBwMyMjX3R5cGU+IG5hbWUocDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAy
IyNfdHlwZSBwMiwgXAotICAgICAgcDMjI190eXBlIHAzKSB7XAotICAgIHJldHVybiBuYW1lIyNN
YXRjaGVyUDQ8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlPihwMCwg
XAotICAgICAgICBwMSwgcDIsIHAzKTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMj
X3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0
eXBlbmFtZSBwMyMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBi
b29sIG5hbWUjI01hdGNoZXJQNDxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBcCi0g
ICAgICBwMyMjX3R5cGU+OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwK
LSAgICAgIGFyZ190eXBlIGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3Rl
bmVyKiByZXN1bHRfbGlzdGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAg
IGNvbnN0Ci0KLSNkZWZpbmUgTUFUQ0hFUl9QNShuYW1lLCBwMCwgcDEsIHAyLCBwMywgcDQsIGRl
c2NyaXB0aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEj
I190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwg
dHlwZW5hbWUgcDQjI190eXBlPlwKLSAgY2xhc3MgbmFtZSMjTWF0Y2hlclA1IHtcCi0gICBwdWJs
aWM6XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gICAgY2xhc3MgZ21vY2tf
SW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCi0g
ICAgIHB1YmxpYzpcCi0gICAgICBnbW9ja19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190
eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUgZ21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUg
Z21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNClcCi0gICAgICAgICAgIDogcDAoZ21vY2tfcDAp
LCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBcCi0gICAgICAgICAg
ICAgICBwNChnbW9ja19wNCkge31cCi0gICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
KFwKLSAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5l
ciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8
PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAotICAgICAgfVwKLSAgICAgIHZpcnR1YWwgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAot
ICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAotICAgICAgfVwK
LSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAgcDIjI190
eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0gICAgICBwNCMjX3R5cGUgcDQ7XAotICAg
ICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNj
cmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6
OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKLSAg
ICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAgICAgICAgICByZXR1cm4g
Z21vY2tfZGVzY3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6
Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwg
XAotICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1
cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAw
IyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICAgICAg
ICAgICAgICBwNCMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCkpKTtcCi0gICAgICB9XAotICAg
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtcCi0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNo
ZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8
YXJnX3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBw
MiwgcDMsIHA0KSk7XAotICAgIH1cCi0gICAgbmFtZSMjTWF0Y2hlclA1KHAwIyNfdHlwZSBnbW9j
a19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBcCi0gICAgICAgIHAyIyNfdHlwZSBnbW9ja19wMiwg
cDMjI190eXBlIGdtb2NrX3AzLCBcCi0gICAgICAgIHA0IyNfdHlwZSBnbW9ja19wNCkgOiBwMChn
bW9ja19wMCksIHAxKGdtb2NrX3AxKSwgcDIoZ21vY2tfcDIpLCBcCi0gICAgICAgIHAzKGdtb2Nr
X3AzKSwgcDQoZ21vY2tfcDQpIHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAx
IyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAg
IHA0IyNfdHlwZSBwNDtcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KG5hbWUjI01hdGNoZXJQNSk7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlw
ZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVu
YW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlPlwKLSAgaW5saW5lIG5hbWUjI01hdGNo
ZXJQNTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAg
IHA0IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190eXBlIHAy
LCBwMyMjX3R5cGUgcDMsIFwKLSAgICAgIHA0IyNfdHlwZSBwNCkge1wKLSAgICByZXR1cm4gbmFt
ZSMjTWF0Y2hlclA1PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwg
XAotICAgICAgICBwNCMjX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCk7XAotICB9XAotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAy
IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGU+
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBib29sIG5hbWUjI01hdGNoZXJQ
NTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0
IyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAotICAgICAg
YXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJl
c3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAgICAgY29uc3QK
LQotI2RlZmluZSBNQVRDSEVSX1A2KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIGRlc2Ny
aXB0aW9uKVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190
eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlw
ZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNNYXRj
aGVyUDYge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwK
LSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFj
ZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwocDAjI190eXBl
IGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAg
ICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUg
Z21vY2tfcDUpXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihn
bW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAgICAgICAgICAgICAgcDQoZ21vY2tfcDQpLCBw
NShnbW9ja19wNSkge31cCi0gICAgICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAg
ICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVz
dWx0X2xpc3RlbmVyKSBjb25zdDtcCi0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0
ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3Jt
YXREZXNjcmlwdGlvbihmYWxzZSk7XAotICAgICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNj
cmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAg
ICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAg
IHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMjX3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAy
O1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0gICAgICBwNCMjX3R5cGUgcDQ7XAotICAgICAgcDUj
I190eXBlIHA1O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpz
dHJpbmcgRm9ybWF0RGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRl
c2NyaXB0aW9uKTtcCi0gICAgICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0g
ICAgICAgICAgcmV0dXJuIGdtb2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBu
ZWdhdGlvbiwgI25hbWUsIFwKLSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZl
cnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUs
IFwKLSAgICAgICAgICAgICAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGU+KHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUpKSk7XAotICAgICAgfVwKLSAgICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8o
Z21vY2tfSW1wbCk7XAotICAgIH07XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5c
Ci0gICAgb3BlcmF0b3IgOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPigpIGNvbnN0IHtcCi0g
ICAgICByZXR1cm4gOjp0ZXN0aW5nOjpNYXRjaGVyPGFyZ190eXBlPihcCi0gICAgICAgICAgbmV3
IGdtb2NrX0ltcGw8YXJnX3R5cGU+KHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUpKTtcCi0gICAgfVwK
LSAgICBuYW1lIyNNYXRjaGVyUDYocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tf
cDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0
IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUpIDogcDAoZ21v
Y2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAgICBwMyhnbW9ja19w
MyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpIHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUg
cDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5
cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUjI190eXBlIHA1O1wKLSAgIHByaXZh
dGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMjTWF0Y2hlclA2KTtcCi0gIH07
XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5cGUsIHR5
cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBlbmFtZSBw
NCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZT5cCi0gIGlubGluZSBuYW1lIyNNYXRjaGVyUDY8
cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMj
X3R5cGUsIHA1IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgcDIjI190
eXBlIHAyLCBcCi0gICAgICBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1
KSB7XAotICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDY8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAy
IyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlPihwMCwg
cDEsIHAyLCBwMywgcDQsIHA1KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBl
bmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlPlwK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgYm9vbCBuYW1lIyNNYXRjaGVyUDY8
cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBwNCMjX3R5cGUsIFwK
LSAgICAgIHA1IyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4o
XAotICAgICAgYXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlz
dGVuZXIqIHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAg
ICAgY29uc3QKLQotI2RlZmluZSBNQVRDSEVSX1A3KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBkZXNjcmlwdGlvbilcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5
cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBw
MyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAg
ICB0eXBlbmFtZSBwNiMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNNYXRjaGVyUDcge1wKLSAgIHB1
YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBjbGFzcyBnbW9j
a19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wK
LSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwocDAjI190eXBlIGdtb2NrX3AwLCBwMSMj
X3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAotICAgICAgICAgIHAzIyNfdHlw
ZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5cGUgZ21vY2tfcDUsIFwKLSAg
ICAgICAgICBwNiMjX3R5cGUgZ21vY2tfcDYpXAotICAgICAgICAgICA6IHAwKGdtb2NrX3AwKSwg
cDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAgICAgICAgICAg
ICAgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSB7fVwKLSAgICAgIHZp
cnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oXAotICAgICAgICAgIGFyZ190eXBlIGFyZywgOjp0
ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlzdGVuZXIpIGNvbnN0O1wKLSAg
ICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29u
c3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKGZhbHNlKTtcCi0g
ICAgICB9XAotICAgICAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0
cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNj
cmlwdGlvbih0cnVlKTtcCi0gICAgICB9XAotICAgICAgcDAjI190eXBlIHAwO1wKLSAgICAgIHAx
IyNfdHlwZSBwMTtcCi0gICAgICBwMiMjX3R5cGUgcDI7XAotICAgICAgcDMjI190eXBlIHAzO1wK
LSAgICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgICBwNSMjX3R5cGUgcDU7XAotICAgICAgcDYjI190
eXBlIHA2O1wKLSAgICAgcHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJp
bmcgRm9ybWF0RGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29u
c3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2Ny
aXB0aW9uKTtcCi0gICAgICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAg
ICAgICAgcmV0dXJuIGdtb2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdh
dGlvbiwgI25hbWUsIFwKLSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNh
bFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0
aW5nOjp0dXBsZTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwK
LSAgICAgICAgICAgICAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZT4ocDAs
IHAxLCBwMiwgcDMsIHA0LCBwNSwgXAotICAgICAgICAgICAgICAgICAgICBwNikpKTtcCi0gICAg
ICB9XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19JbXBsKTtcCi0gICAgfTtc
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBvcGVyYXRvciA6OnRlc3Rp
bmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJldHVybiA6OnRlc3Rpbmc6
Ok1hdGNoZXI8YXJnX3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tfSW1wbDxhcmdfdHlwZT4o
cDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpKTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVy
UDcocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIj
I190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwg
XAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNikgOiBwMChn
bW9ja19wMCksIHAxKGdtb2NrX3AxKSwgXAotICAgICAgICBwMihnbW9ja19wMiksIHAzKGdtb2Nr
X3AzKSwgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIFwKLSAgICAgICAgcDYoZ21vY2tfcDYp
IHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAg
cDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0g
ICAgcDUjI190eXBlIHA1O1wKLSAgICBwNiMjX3R5cGUgcDY7XAotICAgcHJpdmF0ZTpcCi0gICAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhuYW1lIyNNYXRjaGVyUDcpO1wKLSAgfTtcCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIj
I190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwg
dHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGU+XAotICBpbmxp
bmUgbmFtZSMjTWF0Y2hlclA3PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNf
dHlwZSwgXAotICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZT4gbmFtZShwMCMj
X3R5cGUgcDAsIHAxIyNfdHlwZSBwMSwgXAotICAgICAgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUg
cDMsIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBcCi0gICAgICBwNiMjX3R5cGUgcDYpIHtc
Ci0gICAgcmV0dXJuIG5hbWUjI01hdGNoZXJQNzxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190
eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlw
ZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwK
LSAgICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBw
NSMjX3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZT5cCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBhcmdfdHlwZT5cCi0gIGJvb2wgbmFtZSMjTWF0Y2hlclA3PHAwIyNfdHlwZSwgcDEjI190
eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBlLCBcCi0gICAgICBwNSMjX3R5cGUs
IHA2IyNfdHlwZT46Omdtb2NrX0ltcGw8YXJnX3R5cGU+OjpNYXRjaEFuZEV4cGxhaW4oXAotICAg
ICAgYXJnX3R5cGUgYXJnLCBcCi0gICAgICA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXIq
IHJlc3VsdF9saXN0ZW5lciBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXylcCi0gICAgICAgICAgY29u
c3QKLQotI2RlZmluZSBNQVRDSEVSX1A4KG5hbWUsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2
LCBwNywgZGVzY3JpcHRpb24pXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAg
dHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGU+XAotICBjbGFzcyBuYW1lIyNN
YXRjaGVyUDgge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBl
PlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6TWF0Y2hlckludGVy
ZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIGdtb2NrX0ltcGwocDAjI190
eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIHAyIyNfdHlwZSBnbW9ja19wMiwgXAot
ICAgICAgICAgIHAzIyNfdHlwZSBnbW9ja19wMywgcDQjI190eXBlIGdtb2NrX3A0LCBwNSMjX3R5
cGUgZ21vY2tfcDUsIFwKLSAgICAgICAgICBwNiMjX3R5cGUgZ21vY2tfcDYsIHA3IyNfdHlwZSBn
bW9ja19wNylcCi0gICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdt
b2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBcCi0gICAgICAgICAgICAgICBwNChnbW9ja19wNCksIHA1
KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBwNyhnbW9ja19wNykge31cCi0gICAgICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVzdGlu
Zzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCi0gICAgICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0IHtc
Ci0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAotICAgICAg
fVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRp
b24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMjX3R5
cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0gICAg
ICBwNCMjX3R5cGUgcDQ7XAotICAgICAgcDUjI190eXBlIHA1O1wKLSAgICAgIHA2IyNfdHlwZSBw
NjtcCi0gICAgICBwNyMjX3R5cGUgcDc7XAotICAgICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OnN0cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25z
dCB7XAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVz
Y3JpcHRpb24gPSAoZGVzY3JpcHRpb24pO1wKLSAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlv
bi5lbXB0eSgpKVwKLSAgICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAotICAgICAg
ICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwK
LSAgICAgICAgICAgIG5lZ2F0aW9uLCAjbmFtZSwgXAotICAgICAgICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAg
ICAgICAgICAgICA6OnRlc3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5
cGUsIHAzIyNfdHlwZSwgXAotICAgICAgICAgICAgICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlw
ZSwgcDYjI190eXBlLCBwNyMjX3R5cGU+KHAwLCBwMSwgcDIsIFwKLSAgICAgICAgICAgICAgICAg
ICAgcDMsIHA0LCBwNSwgcDYsIHA3KSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExP
V19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnX3R5cGU+XAotICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBj
b25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAg
ICAgICAgIG5ldyBnbW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBw
NiwgcDcpKTtcCi0gICAgfVwKLSAgICBuYW1lIyNNYXRjaGVyUDgocDAjI190eXBlIGdtb2NrX3Aw
LCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAgcDIjI190eXBlIGdtb2NrX3AyLCBwMyMj
X3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19wNCwgXAotICAgICAgICBwNSMjX3R5cGUg
Z21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgXAotICAgICAgICBwNyMjX3R5cGUgZ21vY2tf
cDcpIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19wMSksIHAyKGdtb2NrX3AyKSwgXAotICAgICAg
ICBwMyhnbW9ja19wMyksIHA0KGdtb2NrX3A0KSwgcDUoZ21vY2tfcDUpLCBwNihnbW9ja19wNiks
IFwKLSAgICAgICAgcDcoZ21vY2tfcDcpIHtcCi0gICAgfVwKLSAgICBwMCMjX3R5cGUgcDA7XAot
ICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAyO1wKLSAgICBwMyMjX3R5cGUgcDM7
XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUjI190eXBlIHA1O1wKLSAgICBwNiMjX3R5cGUg
cDY7XAotICAgIHA3IyNfdHlwZSBwNztcCi0gICBwcml2YXRlOlwKLSAgICBHVEVTVF9ESVNBTExP
V19BU1NJR05fKG5hbWUjI01hdGNoZXJQOCk7XAotICB9O1wKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAg
ICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMj
X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlPlwK
LSAgaW5saW5lIG5hbWUjI01hdGNoZXJQODxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBl
LCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3
IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIFwKLSAgICAgIHAxIyNfdHlwZSBwMSwgcDIjI190
eXBlIHAyLCBwMyMjX3R5cGUgcDMsIHA0IyNfdHlwZSBwNCwgcDUjI190eXBlIHA1LCBcCi0gICAg
ICBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNykge1wKLSAgICByZXR1cm4gbmFtZSMjTWF0Y2hl
clA4PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgXAotICAgICAg
ICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5cGU+KHAwLCBwMSwgcDIs
IHAzLCBwNCwgcDUsIFwKLSAgICAgICAgcDYsIHA3KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUg
cDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlw
ZT5cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBhcmdfdHlwZT5cCi0gIGJvb2wgbmFtZSMjTWF0Y2hl
clA4PHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwgcDQjI190eXBl
LCBcCi0gICAgICBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgXAotICAgICAgcDcjI190eXBlPjo6Z21v
Y2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCi0gICAgICBhcmdfdHlwZSBhcmcs
IFwKLSAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVy
IEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKLSAgICAgICAgICBjb25zdAotCi0jZGVmaW5lIE1B
VENIRVJfUDkobmFtZSwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgZGVzY3Jp
cHRpb24pXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBlbmFtZSBwMSMjX3R5
cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMjI190eXBlLCB0eXBl
bmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDYj
I190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlwZT5cCi0gIGNsYXNz
IG5hbWUjI01hdGNoZXJQOSB7XAotICAgcHVibGljOlwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
YXJnX3R5cGU+XAotICAgIGNsYXNzIGdtb2NrX0ltcGwgOiBwdWJsaWMgOjp0ZXN0aW5nOjpNYXRj
aGVySW50ZXJmYWNlPGFyZ190eXBlPiB7XAotICAgICBwdWJsaWM6XAotICAgICAgZ21vY2tfSW1w
bChwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBnbW9ja19wMSwgcDIjI190eXBlIGdtb2Nr
X3AyLCBcCi0gICAgICAgICAgcDMjI190eXBlIGdtb2NrX3AzLCBwNCMjX3R5cGUgZ21vY2tfcDQs
IHA1IyNfdHlwZSBnbW9ja19wNSwgXAotICAgICAgICAgIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcj
I190eXBlIGdtb2NrX3A3LCBwOCMjX3R5cGUgZ21vY2tfcDgpXAotICAgICAgICAgICA6IHAwKGdt
b2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIHAzKGdtb2NrX3AzKSwgXAotICAg
ICAgICAgICAgICAgcDQoZ21vY2tfcDQpLCBwNShnbW9ja19wNSksIHA2KGdtb2NrX3A2KSwgcDco
Z21vY2tfcDcpLCBcCi0gICAgICAgICAgICAgICBwOChnbW9ja19wOCkge31cCi0gICAgICB2aXJ0
dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgICAgICBhcmdfdHlwZSBhcmcsIDo6dGVz
dGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyKSBjb25zdDtcCi0gICAg
ICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogZ21vY2tfb3MpIGNvbnN0
IHtcCi0gICAgICAgICpnbW9ja19vcyA8PCBGb3JtYXREZXNjcmlwdGlvbihmYWxzZSk7XAotICAg
ICAgfVwKLSAgICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJl
YW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3Jp
cHRpb24odHJ1ZSk7XAotICAgICAgfVwKLSAgICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgICBwMSMj
X3R5cGUgcDE7XAotICAgICAgcDIjI190eXBlIHAyO1wKLSAgICAgIHAzIyNfdHlwZSBwMztcCi0g
ICAgICBwNCMjX3R5cGUgcDQ7XAotICAgICAgcDUjI190eXBlIHA1O1wKLSAgICAgIHA2IyNfdHlw
ZSBwNjtcCi0gICAgICBwNyMjX3R5cGUgcDc7XAotICAgICAgcDgjI190eXBlIHA4O1wKLSAgICAg
cHJpdmF0ZTpcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgRm9ybWF0RGVzY3Jp
cHRpb24oYm9vbCBuZWdhdGlvbikgY29uc3Qge1wKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6c3RyaW5nIGdtb2NrX2Rlc2NyaXB0aW9uID0gKGRlc2NyaXB0aW9uKTtcCi0gICAg
ICAgIGlmICghZ21vY2tfZGVzY3JpcHRpb24uZW1wdHkoKSlcCi0gICAgICAgICAgcmV0dXJuIGdt
b2NrX2Rlc2NyaXB0aW9uO1wKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6OkZv
cm1hdE1hdGNoZXJEZXNjcmlwdGlvbihcCi0gICAgICAgICAgICBuZWdhdGlvbiwgI25hbWUsIFwK
LSAgICAgICAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXZlcnNhbFRlcnNlUHJpbnRUdXBs
ZUZpZWxkc1RvU3RyaW5ncyhcCi0gICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjp0dXBsZTxwMCMj
X3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgICAgICAgICAg
ICAgICAgcDQjI190eXBlLCBwNSMjX3R5cGUsIHA2IyNfdHlwZSwgcDcjI190eXBlLCBcCi0gICAg
ICAgICAgICAgICAgICAgIHA4IyNfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3
LCBwOCkpKTtcCi0gICAgICB9XAotICAgICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhnbW9ja19J
bXBsKTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIGFyZ190eXBlPlwKLSAgICBv
cGVyYXRvciA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KCkgY29uc3Qge1wKLSAgICAgIHJl
dHVybiA6OnRlc3Rpbmc6Ok1hdGNoZXI8YXJnX3R5cGU+KFwKLSAgICAgICAgICBuZXcgZ21vY2tf
SW1wbDxhcmdfdHlwZT4ocDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCkpO1wKLSAg
ICB9XAotICAgIG5hbWUjI01hdGNoZXJQOShwMCMjX3R5cGUgZ21vY2tfcDAsIHAxIyNfdHlwZSBn
bW9ja19wMSwgXAotICAgICAgICBwMiMjX3R5cGUgZ21vY2tfcDIsIHAzIyNfdHlwZSBnbW9ja19w
MywgcDQjI190eXBlIGdtb2NrX3A0LCBcCi0gICAgICAgIHA1IyNfdHlwZSBnbW9ja19wNSwgcDYj
I190eXBlIGdtb2NrX3A2LCBwNyMjX3R5cGUgZ21vY2tfcDcsIFwKLSAgICAgICAgcDgjI190eXBl
IGdtb2NrX3A4KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBwMihnbW9ja19wMiksIFwK
LSAgICAgICAgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21v
Y2tfcDYpLCBwNyhnbW9ja19wNyksIFwKLSAgICAgICAgcDgoZ21vY2tfcDgpIHtcCi0gICAgfVwK
LSAgICBwMCMjX3R5cGUgcDA7XAotICAgIHAxIyNfdHlwZSBwMTtcCi0gICAgcDIjI190eXBlIHAy
O1wKLSAgICBwMyMjX3R5cGUgcDM7XAotICAgIHA0IyNfdHlwZSBwNDtcCi0gICAgcDUjI190eXBl
IHA1O1wKLSAgICBwNiMjX3R5cGUgcDY7XAotICAgIHA3IyNfdHlwZSBwNztcCi0gICAgcDgjI190
eXBlIHA4O1wKLSAgIHByaXZhdGU6XAotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8obmFtZSMj
TWF0Y2hlclA5KTtcCi0gIH07XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgcDAjI190eXBlLCB0eXBl
bmFtZSBwMSMjX3R5cGUsIHR5cGVuYW1lIHAyIyNfdHlwZSwgXAotICAgICAgdHlwZW5hbWUgcDMj
I190eXBlLCB0eXBlbmFtZSBwNCMjX3R5cGUsIHR5cGVuYW1lIHA1IyNfdHlwZSwgXAotICAgICAg
dHlwZW5hbWUgcDYjI190eXBlLCB0eXBlbmFtZSBwNyMjX3R5cGUsIHR5cGVuYW1lIHA4IyNfdHlw
ZT5cCi0gIGlubGluZSBuYW1lIyNNYXRjaGVyUDk8cDAjI190eXBlLCBwMSMjX3R5cGUsIHAyIyNf
dHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBl
LCBwNyMjX3R5cGUsIFwKLSAgICAgIHA4IyNfdHlwZT4gbmFtZShwMCMjX3R5cGUgcDAsIHAxIyNf
dHlwZSBwMSwgcDIjI190eXBlIHAyLCBwMyMjX3R5cGUgcDMsIFwKLSAgICAgIHA0IyNfdHlwZSBw
NCwgcDUjI190eXBlIHA1LCBwNiMjX3R5cGUgcDYsIHA3IyNfdHlwZSBwNywgXAotICAgICAgcDgj
I190eXBlIHA4KSB7XAotICAgIHJldHVybiBuYW1lIyNNYXRjaGVyUDk8cDAjI190eXBlLCBwMSMj
X3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICAgIHA0IyNfdHlwZSwgcDUjI190
eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlPihwMCwgcDEsIHAyLCBcCi0gICAg
ICAgIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgpO1wKLSAgfVwKLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IHAwIyNfdHlwZSwgdHlwZW5hbWUgcDEjI190eXBlLCB0eXBlbmFtZSBwMiMjX3R5cGUsIFwKLSAg
ICAgIHR5cGVuYW1lIHAzIyNfdHlwZSwgdHlwZW5hbWUgcDQjI190eXBlLCB0eXBlbmFtZSBwNSMj
X3R5cGUsIFwKLSAgICAgIHR5cGVuYW1lIHA2IyNfdHlwZSwgdHlwZW5hbWUgcDcjI190eXBlLCB0
eXBlbmFtZSBwOCMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBi
b29sIG5hbWUjI01hdGNoZXJQOTxwMCMjX3R5cGUsIHAxIyNfdHlwZSwgcDIjI190eXBlLCBwMyMj
X3R5cGUsIHA0IyNfdHlwZSwgXAotICAgICAgcDUjI190eXBlLCBwNiMjX3R5cGUsIHA3IyNfdHlw
ZSwgXAotICAgICAgcDgjI190eXBlPjo6Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhw
bGFpbihcCi0gICAgICBhcmdfdHlwZSBhcmcsIFwKLSAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1
bHRMaXN0ZW5lciogcmVzdWx0X2xpc3RlbmVyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKLSAg
ICAgICAgICBjb25zdAotCi0jZGVmaW5lIE1BVENIRVJfUDEwKG5hbWUsIHAwLCBwMSwgcDIsIHAz
LCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBkZXNjcmlwdGlvbilcCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUg
cDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlw
ZSwgdHlwZW5hbWUgcDgjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAotICBj
bGFzcyBuYW1lIyNNYXRjaGVyUDEwIHtcCi0gICBwdWJsaWM6XAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBhcmdfdHlwZT5cCi0gICAgY2xhc3MgZ21vY2tfSW1wbCA6IHB1YmxpYyA6OnRlc3Rpbmc6
Ok1hdGNoZXJJbnRlcmZhY2U8YXJnX3R5cGU+IHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBnbW9j
a19JbXBsKHAwIyNfdHlwZSBnbW9ja19wMCwgcDEjI190eXBlIGdtb2NrX3AxLCBwMiMjX3R5cGUg
Z21vY2tfcDIsIFwKLSAgICAgICAgICBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9j
a19wNCwgcDUjI190eXBlIGdtb2NrX3A1LCBcCi0gICAgICAgICAgcDYjI190eXBlIGdtb2NrX3A2
LCBwNyMjX3R5cGUgZ21vY2tfcDcsIHA4IyNfdHlwZSBnbW9ja19wOCwgXAotICAgICAgICAgIHA5
IyNfdHlwZSBnbW9ja19wOSlcCi0gICAgICAgICAgIDogcDAoZ21vY2tfcDApLCBwMShnbW9ja19w
MSksIHAyKGdtb2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBcCi0gICAgICAgICAgICAgICBwNChnbW9j
a19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21vY2tfcDYpLCBwNyhnbW9ja19wNyksIFwKLSAgICAg
ICAgICAgICAgIHA4KGdtb2NrX3A4KSwgcDkoZ21vY2tfcDkpIHt9XAotICAgICAgdmlydHVhbCBi
b29sIE1hdGNoQW5kRXhwbGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6
Ok1hdGNoUmVzdWx0TGlzdGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmly
dHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAot
ICAgICAgICAqZ21vY2tfb3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1c
Ci0gICAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBn
bW9ja19vcykgY29uc3Qge1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9u
KHRydWUpO1wKLSAgICAgIH1cCi0gICAgICBwMCMjX3R5cGUgcDA7XAotICAgICAgcDEjI190eXBl
IHAxO1wKLSAgICAgIHAyIyNfdHlwZSBwMjtcCi0gICAgICBwMyMjX3R5cGUgcDM7XAotICAgICAg
cDQjI190eXBlIHA0O1wKLSAgICAgIHA1IyNfdHlwZSBwNTtcCi0gICAgICBwNiMjX3R5cGUgcDY7
XAotICAgICAgcDcjI190eXBlIHA3O1wKLSAgICAgIHA4IyNfdHlwZSBwODtcCi0gICAgICBwOSMj
X3R5cGUgcDk7XAotICAgICBwcml2YXRlOlwKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0
cmluZyBGb3JtYXREZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uKSBjb25zdCB7XAotICAgICAgICBj
b25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmcgZ21vY2tfZGVzY3JpcHRpb24gPSAoZGVz
Y3JpcHRpb24pO1wKLSAgICAgICAgaWYgKCFnbW9ja19kZXNjcmlwdGlvbi5lbXB0eSgpKVwKLSAg
ICAgICAgICByZXR1cm4gZ21vY2tfZGVzY3JpcHRpb247XAotICAgICAgICByZXR1cm4gOjp0ZXN0
aW5nOjppbnRlcm5hbDo6Rm9ybWF0TWF0Y2hlckRlc2NyaXB0aW9uKFwKLSAgICAgICAgICAgIG5l
Z2F0aW9uLCAjbmFtZSwgXAotICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKFwKLSAgICAgICAgICAgICAgICA6OnRl
c3Rpbmc6OnR1cGxlPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNfdHlwZSwg
XAotICAgICAgICAgICAgICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBw
NyMjX3R5cGUsIHA4IyNfdHlwZSwgXAotICAgICAgICAgICAgICAgICAgICBwOSMjX3R5cGU+KHAw
LCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5KSkpO1wKLSAgICAgIH1cCi0gICAg
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2NrX0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAgIG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hl
cjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxh
cmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBnbW9ja19JbXBsPGFyZ190eXBlPihwMCwgcDEsIHAy
LCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSkpO1wKLSAgICB9XAotICAgIG5hbWUjI01hdGNo
ZXJQMTAocDAjI190eXBlIGdtb2NrX3AwLCBwMSMjX3R5cGUgZ21vY2tfcDEsIFwKLSAgICAgICAg
cDIjI190eXBlIGdtb2NrX3AyLCBwMyMjX3R5cGUgZ21vY2tfcDMsIHA0IyNfdHlwZSBnbW9ja19w
NCwgXAotICAgICAgICBwNSMjX3R5cGUgZ21vY2tfcDUsIHA2IyNfdHlwZSBnbW9ja19wNiwgcDcj
I190eXBlIGdtb2NrX3A3LCBcCi0gICAgICAgIHA4IyNfdHlwZSBnbW9ja19wOCwgcDkjI190eXBl
IGdtb2NrX3A5KSA6IHAwKGdtb2NrX3AwKSwgcDEoZ21vY2tfcDEpLCBcCi0gICAgICAgIHAyKGdt
b2NrX3AyKSwgcDMoZ21vY2tfcDMpLCBwNChnbW9ja19wNCksIHA1KGdtb2NrX3A1KSwgcDYoZ21v
Y2tfcDYpLCBcCi0gICAgICAgIHA3KGdtb2NrX3A3KSwgcDgoZ21vY2tfcDgpLCBwOShnbW9ja19w
OSkge1wKLSAgICB9XAotICAgIHAwIyNfdHlwZSBwMDtcCi0gICAgcDEjI190eXBlIHAxO1wKLSAg
ICBwMiMjX3R5cGUgcDI7XAotICAgIHAzIyNfdHlwZSBwMztcCi0gICAgcDQjI190eXBlIHA0O1wK
LSAgICBwNSMjX3R5cGUgcDU7XAotICAgIHA2IyNfdHlwZSBwNjtcCi0gICAgcDcjI190eXBlIHA3
O1wKLSAgICBwOCMjX3R5cGUgcDg7XAotICAgIHA5IyNfdHlwZSBwOTtcCi0gICBwcml2YXRlOlwK
LSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKG5hbWUjI01hdGNoZXJQMTApO1wKLSAgfTtcCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5h
bWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNf
dHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5
cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUgcDgjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBw
OSMjX3R5cGU+XAotICBpbmxpbmUgbmFtZSMjTWF0Y2hlclAxMDxwMCMjX3R5cGUsIHAxIyNfdHlw
ZSwgcDIjI190eXBlLCBwMyMjX3R5cGUsIFwKLSAgICAgIHA0IyNfdHlwZSwgcDUjI190eXBlLCBw
NiMjX3R5cGUsIHA3IyNfdHlwZSwgcDgjI190eXBlLCBcCi0gICAgICBwOSMjX3R5cGU+IG5hbWUo
cDAjI190eXBlIHAwLCBwMSMjX3R5cGUgcDEsIHAyIyNfdHlwZSBwMiwgcDMjI190eXBlIHAzLCBc
Ci0gICAgICBwNCMjX3R5cGUgcDQsIHA1IyNfdHlwZSBwNSwgcDYjI190eXBlIHA2LCBwNyMjX3R5
cGUgcDcsIHA4IyNfdHlwZSBwOCwgXAotICAgICAgcDkjI190eXBlIHA5KSB7XAotICAgIHJldHVy
biBuYW1lIyNNYXRjaGVyUDEwPHAwIyNfdHlwZSwgcDEjI190eXBlLCBwMiMjX3R5cGUsIHAzIyNf
dHlwZSwgXAotICAgICAgICBwNCMjX3R5cGUsIHA1IyNfdHlwZSwgcDYjI190eXBlLCBwNyMjX3R5
cGUsIHA4IyNfdHlwZSwgcDkjI190eXBlPihwMCwgXAotICAgICAgICBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBwNywgcDgsIHA5KTtcCi0gIH1cCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBwMCMjX3R5
cGUsIHR5cGVuYW1lIHAxIyNfdHlwZSwgdHlwZW5hbWUgcDIjI190eXBlLCBcCi0gICAgICB0eXBl
bmFtZSBwMyMjX3R5cGUsIHR5cGVuYW1lIHA0IyNfdHlwZSwgdHlwZW5hbWUgcDUjI190eXBlLCBc
Ci0gICAgICB0eXBlbmFtZSBwNiMjX3R5cGUsIHR5cGVuYW1lIHA3IyNfdHlwZSwgdHlwZW5hbWUg
cDgjI190eXBlLCBcCi0gICAgICB0eXBlbmFtZSBwOSMjX3R5cGU+XAotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgYXJnX3R5cGU+XAotICBib29sIG5hbWUjI01hdGNoZXJQMTA8cDAjI190eXBlLCBwMSMj
X3R5cGUsIHAyIyNfdHlwZSwgcDMjI190eXBlLCBcCi0gICAgICBwNCMjX3R5cGUsIHA1IyNfdHlw
ZSwgcDYjI190eXBlLCBwNyMjX3R5cGUsIHA4IyNfdHlwZSwgXAotICAgICAgcDkjI190eXBlPjo6
Z21vY2tfSW1wbDxhcmdfdHlwZT46Ok1hdGNoQW5kRXhwbGFpbihcCi0gICAgICBhcmdfdHlwZSBh
cmcsIFwKLSAgICAgIDo6dGVzdGluZzo6TWF0Y2hSZXN1bHRMaXN0ZW5lciogcmVzdWx0X2xpc3Rl
bmVyIEdURVNUX0FUVFJJQlVURV9VTlVTRURfKVwKLSAgICAgICAgICBjb25zdAotCi0jZW5kaWYg
IC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tfR0VORVJBVEVEX01BVENIRVJTX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVy
cy5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRj
aGVycy5oLnB1bXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMzBjMmM5MmJhYy4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJh
dGVkLW1hdGNoZXJzLmgucHVtcAorKysgL2Rldi9udWxsCkBAIC0xLDY3MiArMCwwIEBACi0kJCAt
Ki0gbW9kZTogYysrOyAtKi0KLSQkIFRoaXMgaXMgYSBQdW1wIHNvdXJjZSBmaWxlLiAgUGxlYXNl
IHVzZSBQdW1wIHRvIGNvbnZlcnQgaXQgdG8KLSQkIGdtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgu
Ci0kJAotJHZhciBuID0gMTAgICQkIFRoZSBtYXhpbXVtIGFyaXR5IHdlIHN1cHBvcnQuCi0kJCB9
fSBUaGlzIGxpbmUgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvZGUg
aW4gRW1hY3MuCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nl
cy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIGNvbW1vbmx5IHVzZWQgdmFyaWFk
aWMgbWF0Y2hlcnMuCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFU
RURfTUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFU
RURfTUFUQ0hFUlNfSF8KLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotI2luY2x1ZGUgPHNzdHJlYW0+
Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJnbW9jay9n
bW9jay1tYXRjaGVycy5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJu
YWwgewotCi0kcmFuZ2UgaSAwLi5uLTEKLQotLy8gVGhlIHR5cGUgb2YgdGhlIGktdGggKDAtYmFz
ZWQpIGZpZWxkIG9mIFR1cGxlLgotI2RlZmluZSBHTU9DS19GSUVMRF9UWVBFXyhUdXBsZSwgaSkg
XAotICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6dHVwbGVfZWxlbWVudDxpLCBUdXBsZT46OnR5cGUK
LQotLy8gVHVwbGVGaWVsZHM8VHVwbGUsIGswLCAuLi4sIGtuPiBpcyBmb3Igc2VsZWN0aW5nIGZp
ZWxkcyBmcm9tIGEKLS8vIHR1cGxlIG9mIHR5cGUgVHVwbGUuICBJdCBoYXMgdHdvIG1lbWJlcnM6
Ci0vLwotLy8gICB0eXBlOiBhIHR1cGxlIHR5cGUgd2hvc2UgaS10aCBmaWVsZCBpcyB0aGUga2kt
dGggZmllbGQgb2YgVHVwbGUuCi0vLyAgIEdldFNlbGVjdGVkRmllbGRzKHQpOiByZXR1cm5zIGZp
ZWxkcyBrMCwgLi4uLCBhbmQga24gb2YgdCBhcyBhIHR1cGxlLgotLy8KLS8vIEZvciBleGFtcGxl
LCBpbiBjbGFzcyBUdXBsZUZpZWxkczx0dXBsZTxib29sLCBjaGFyLCBpbnQ+LCAyLCAwPiwgd2Ug
aGF2ZToKLS8vCi0vLyAgIHR5cGUgaXMgdHVwbGU8aW50LCBib29sPiwgYW5kCi0vLyAgIEdldFNl
bGVjdGVkRmllbGRzKG1ha2VfdHVwbGUodHJ1ZSwgJ2EnLCA0MikpIGlzICg0MiwgdHJ1ZSkuCi0K
LXRlbXBsYXRlIDxjbGFzcyBUdXBsZSRmb3IgaSBbWywgaW50IGskaSA9IC0xXV0+Ci1jbGFzcyBU
dXBsZUZpZWxkczsKLQotLy8gVGhpcyBnZW5lcmljIHZlcnNpb24gaXMgdXNlZCB3aGVuIHRoZXJl
IGFyZSAkbiBzZWxlY3RvcnMuCi10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUkZm9yIGkgW1ssIGludCBr
JGldXT4KLWNsYXNzIFR1cGxlRmllbGRzIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5n
Ojp0dXBsZTwkZm9yIGksIFtbR01PQ0tfRklFTERfVFlQRV8oVHVwbGUsIGskaSldXT4gdHlwZTsK
LSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0ZWRGaWVsZHMoY29uc3QgVHVwbGUmIHQpIHsKLSAgICBy
ZXR1cm4gdHlwZSgkZm9yIGksIFtbZ2V0PGskaT4odCldXSk7Ci0gIH0KLX07Ci0KLS8vIFRoZSBm
b2xsb3dpbmcgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCBmb3IgMCB+ICQobi0xKSBzZWxlY3RvcnMu
Ci0KLSRmb3IgaSBbWwotJCQgfX19Ci0kcmFuZ2UgaiAwLi5pLTEKLSRyYW5nZSBrIDAuLm4tMQot
Ci10ZW1wbGF0ZSA8Y2xhc3MgVHVwbGUkZm9yIGogW1ssIGludCBrJGpdXT4KLWNsYXNzIFR1cGxl
RmllbGRzPFR1cGxlLCAkZm9yIGssIFtbJGlmIGsgPCBpIFtbayRrXV0gJGVsc2UgW1stMV1dXV0+
IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGosIFtbR01PQ0tf
RklFTERfVFlQRV8oVHVwbGUsIGskaildXT4gdHlwZTsKLSAgc3RhdGljIHR5cGUgR2V0U2VsZWN0
ZWRGaWVsZHMoY29uc3QgVHVwbGUmICRpZiBpPT0wIFtbLyogdCAqL11dICRlbHNlIFtbdF1dKSB7
Ci0gICAgcmV0dXJuIHR5cGUoJGZvciBqLCBbW2dldDxrJGo+KHQpXV0pOwotICB9Ci19OwotCi1d
XQotCi0jdW5kZWYgR01PQ0tfRklFTERfVFlQRV8KLQotLy8gSW1wbGVtZW50cyB0aGUgQXJncygp
IG1hdGNoZXIuCi0KLSR2YXIga3MgPSBbWyRmb3IgaSwgW1trJGldXV1dCi10ZW1wbGF0ZSA8Y2xh
c3MgQXJnc1R1cGxlJGZvciBpIFtbLCBpbnQgayRpID0gLTFdXT4KLWNsYXNzIEFyZ3NNYXRjaGVy
SW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPEFyZ3NUdXBsZT4gewotIHB1YmxpYzoKLSAg
Ly8gQXJnc1R1cGxlIG1heSBoYXZlIHRvcC1sZXZlbCBjb25zdCBvciByZWZlcmVuY2UgbW9kaWZp
ZXJzLgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhBcmdzVHVw
bGUpIFJhd0FyZ3NUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6VHVwbGVGaWVs
ZHM8UmF3QXJnc1R1cGxlLCAka3M+Ojp0eXBlIFNlbGVjdGVkQXJnczsKLSAgdHlwZWRlZiBNYXRj
aGVyPGNvbnN0IFNlbGVjdGVkQXJncyY+IE1vbm9tb3JwaGljSW5uZXJNYXRjaGVyOwotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVySW1w
bChjb25zdCBJbm5lck1hdGNoZXImIGlubmVyX21hdGNoZXIpCi0gICAgICA6IGlubmVyX21hdGNo
ZXJfKFNhZmVNYXRjaGVyQ2FzdDxjb25zdCBTZWxlY3RlZEFyZ3MmPihpbm5lcl9tYXRjaGVyKSkg
e30KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKEFyZ3NUdXBsZSBhcmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVy
KSBjb25zdCB7Ci0gICAgY29uc3QgU2VsZWN0ZWRBcmdzJiBzZWxlY3RlZF9hcmdzID0gR2V0U2Vs
ZWN0ZWRBcmdzKGFyZ3MpOwotICAgIGlmICghbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKQotICAg
ICAgcmV0dXJuIGlubmVyX21hdGNoZXJfLk1hdGNoZXMoc2VsZWN0ZWRfYXJncyk7Ci0KLSAgICBQ
cmludEluZGljZXMobGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAqbGlzdGVuZXIgPDwgImFyZSAi
IDw8IFByaW50VG9TdHJpbmcoc2VsZWN0ZWRfYXJncyk7Ci0KLSAgICBTdHJpbmdNYXRjaFJlc3Vs
dExpc3RlbmVyIGlubmVyX2xpc3RlbmVyOwotICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSBpbm5lcl9t
YXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oc2VsZWN0ZWRfYXJncywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbm5lcl9saXN0ZW5lcik7Ci0g
ICAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFt
KCkpOwotICAgIHJldHVybiBtYXRjaDsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRv
KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiYXJlIGEgdHVwbGUgIjsK
LSAgICBQcmludEluZGljZXMob3MpOwotICAgIGlubmVyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3Mp
OwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImFyZSBhIHR1cGxlICI7Ci0gICAgUHJpbnRJbmRp
Y2VzKG9zKTsKLSAgICBpbm5lcl9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9
Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgU2VsZWN0ZWRBcmdzIEdldFNlbGVjdGVkQXJncyhBcmdz
VHVwbGUgYXJncykgewotICAgIHJldHVybiBUdXBsZUZpZWxkczxSYXdBcmdzVHVwbGUsICRrcz46
OkdldFNlbGVjdGVkRmllbGRzKGFyZ3MpOwotICB9Ci0KLSAgLy8gUHJpbnRzIHRoZSBpbmRpY2Vz
IG9mIHRoZSBzZWxlY3RlZCBmaWVsZHMuCi0gIHN0YXRpYyB2b2lkIFByaW50SW5kaWNlcyg6OnN0
ZDo6b3N0cmVhbSogb3MpIHsKLSAgICAqb3MgPDwgIndob3NlIGZpZWxkcyAoIjsKLSAgICBjb25z
dCBpbnQgaW5kaWNlc1skbl0gPSB7ICRrcyB9OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgJG47
IGkrKykgewotICAgICAgaWYgKGluZGljZXNbaV0gPCAwKQotICAgICAgICBicmVhazsKLQotICAg
ICAgaWYgKGkgPj0gMSkKLSAgICAgICAgKm9zIDw8ICIsICI7Ci0KLSAgICAgICpvcyA8PCAiIyIg
PDwgaW5kaWNlc1tpXTsKLSAgICB9Ci0gICAgKm9zIDw8ICIpICI7Ci0gIH0KLQotICBjb25zdCBN
b25vbW9ycGhpY0lubmVyTWF0Y2hlciBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExP
V19BU1NJR05fKEFyZ3NNYXRjaGVySW1wbCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5uZXJN
YXRjaGVyJGZvciBpIFtbLCBpbnQgayRpID0gLTFdXT4KLWNsYXNzIEFyZ3NNYXRjaGVyIHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IEFyZ3NNYXRjaGVyKGNvbnN0IElubmVyTWF0Y2hlciYgaW5uZXJf
bWF0Y2hlcikKLSAgICAgIDogaW5uZXJfbWF0Y2hlcl8oaW5uZXJfbWF0Y2hlcikge30KLQotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnc1R1cGxlPgotICBvcGVyYXRvciBNYXRjaGVyPEFyZ3NUdXBs
ZT4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBBcmdzTWF0Y2hlckltcGw8
QXJnc1R1cGxlLCAka3M+KGlubmVyX21hdGNoZXJfKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IElubmVyTWF0Y2hlciBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKEFyZ3NNYXRjaGVyKTsKLX07Ci0KLS8vIEEgc2V0IG9mIG1ldGFmdW5jdGlvbnMgZm9yIGNv
bXB1dGluZyB0aGUgcmVzdWx0IHR5cGUgb2YgQWxsT2YuCi0vLyBBbGxPZihtMSwgLi4uLCBtTikg
cmV0dXJucwotLy8gQWxsT2ZSZXN1bHROPGRlY2x0eXBlKG0xKSwgLi4uLCBkZWNsdHlwZShtTik+
Ojp0eXBlLgotCi0vLyBBbHRob3VnaCBBbGxPZiBpc24ndCBkZWZpbmVkIGZvciBvbmUgYXJndW1l
bnQsIEFsbE9mUmVzdWx0MSBpcyBkZWZpbmVkCi0vLyB0byBzaW1wbGlmeSB0aGUgaW1wbGVtZW50
YXRpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTTE+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQxIHsKLSAg
dHlwZWRlZiBNMSB0eXBlOwotfTsKLQotJHJhbmdlIGkgMS4ubgotCi0kcmFuZ2UgaSAyLi5uCi0k
Zm9yIGkgW1sKLSRyYW5nZSBqIDIuLmkKLSR2YXIgbSA9IGkvMgotJHJhbmdlIGsgMS4ubQotJHJh
bmdlIHQgbSsxLi5pCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMSRmb3IgaiBbWywgdHlwZW5hbWUg
TSRqXV0+Ci1zdHJ1Y3QgQWxsT2ZSZXN1bHQkaSB7Ci0gIHR5cGVkZWYgQm90aE9mTWF0Y2hlcjwK
LSAgICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0JG08JGZvciBrLCBbW00ka11dPjo6dHlwZSwKLSAg
ICAgIHR5cGVuYW1lIEFsbE9mUmVzdWx0JChpLW0pPCRmb3IgdCwgW1tNJHRdXT46OnR5cGUKLSAg
PiB0eXBlOwotfTsKLQotXV0KLQotLy8gQSBzZXQgb2YgbWV0YWZ1bmN0aW9ucyBmb3IgY29tcHV0
aW5nIHRoZSByZXN1bHQgdHlwZSBvZiBBbnlPZi4KLS8vIEFueU9mKG0xLCAuLi4sIG1OKSByZXR1
cm5zCi0vLyBBbnlPZlJlc3VsdE48ZGVjbHR5cGUobTEpLCAuLi4sIGRlY2x0eXBlKG1OKT46OnR5
cGUuCi0KLS8vIEFsdGhvdWdoIEFueU9mIGlzbid0IGRlZmluZWQgZm9yIG9uZSBhcmd1bWVudCwg
QW55T2ZSZXN1bHQxIGlzIGRlZmluZWQKLS8vIHRvIHNpbXBsaWZ5IHRoZSBpbXBsZW1lbnRhdGlv
bi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNMT4KLXN0cnVjdCBBbnlPZlJlc3VsdDEgewotICB0eXBl
ZGVmIE0xIHR5cGU7Ci19OwotCi0kcmFuZ2UgaSAxLi5uCi0KLSRyYW5nZSBpIDIuLm4KLSRmb3Ig
aSBbWwotJHJhbmdlIGogMi4uaQotJHZhciBtID0gaS8yCi0kcmFuZ2UgayAxLi5tCi0kcmFuZ2Ug
dCBtKzEuLmkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE0xJGZvciBqIFtbLCB0eXBlbmFtZSBNJGpd
XT4KLXN0cnVjdCBBbnlPZlJlc3VsdCRpIHsKLSAgdHlwZWRlZiBFaXRoZXJPZk1hdGNoZXI8Ci0g
ICAgICB0eXBlbmFtZSBBbnlPZlJlc3VsdCRtPCRmb3IgaywgW1tNJGtdXT46OnR5cGUsCi0gICAg
ICB0eXBlbmFtZSBBbnlPZlJlc3VsdCQoaS1tKTwkZm9yIHQsIFtbTSR0XV0+Ojp0eXBlCi0gID4g
dHlwZTsKLX07Ci0KLV1dCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBBcmdzPE4x
LCBOMiwgLi4uLCBOaz4oYV9tYXRjaGVyKSBtYXRjaGVzIGEgdHVwbGUgaWYgdGhlIHNlbGVjdGVk
Ci0vLyBmaWVsZHMgb2YgaXQgbWF0Y2hlcyBhX21hdGNoZXIuICBDKysgZG9lc24ndCBzdXBwb3J0
IGRlZmF1bHQKLS8vIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gdGVtcGxhdGVzLCBzbyB3ZSBoYXZl
IHRvIG92ZXJsb2FkIGl0LgotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEu
LmkKLXRlbXBsYXRlIDwkZm9yIGogW1tpbnQgayRqLCBdXXR5cGVuYW1lIElubmVyTWF0Y2hlcj4K
LWlubGluZSBpbnRlcm5hbDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyJGZvciBqIFtbLCBrJGpd
XT4KLUFyZ3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6QXJnc01hdGNoZXI8SW5uZXJNYXRjaGVyJGZvciBqIFtbLCBrJGpdXT4obWF0Y2hlcik7Ci19
Ci0KLQotXV0KLS8vIEVsZW1lbnRzQXJlKGVfMSwgZV8yLCAuLi4gZV9uKSBtYXRjaGVzIGFuIFNU
TC1zdHlsZSBjb250YWluZXIgd2l0aAotLy8gbiBlbGVtZW50cywgd2hlcmUgdGhlIGktdGggZWxl
bWVudCBpbiB0aGUgY29udGFpbmVyIG11c3QKLS8vIG1hdGNoIHRoZSBpLXRoIGFyZ3VtZW50IGlu
IHRoZSBsaXN0LiAgRWFjaCBhcmd1bWVudCBvZgotLy8gRWxlbWVudHNBcmUoKSBjYW4gYmUgZWl0
aGVyIGEgdmFsdWUgb3IgYSBtYXRjaGVyLiAgV2Ugc3VwcG9ydCB1cCB0bwotLy8gJG4gYXJndW1l
bnRzLgotLy8KLS8vIFRoZSB1c2Ugb2YgRGVjYXlBcnJheSBpbiB0aGUgaW1wbGVtZW50YXRpb24g
YWxsb3dzIEVsZW1lbnRzQXJlKCkKLS8vIHRvIGFjY2VwdCBzdHJpbmcgbGl0ZXJhbHMsIHdob3Nl
IHR5cGUgaXMgY29uc3QgY2hhcltOXSwgYnV0IHdlCi0vLyB3YW50IHRvIHRyZWF0IHRoZW0gYXMg
Y29uc3QgY2hhciouCi0vLwotLy8gTk9URTogU2luY2UgRWxlbWVudHNBcmUoKSBjYXJlcyBhYm91
dCB0aGUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzLCBpdAotLy8gbXVzdCBub3QgYmUgdXNlZCB3aXRo
IGNvbnRhaW5lcnMgd2hvc2UgZWxlbWVudHMncyBvcmRlciBpcwotLy8gdW5kZWZpbmVkIChlLmcu
IGhhc2hfbWFwKS4KLQotJHJhbmdlIGkgMC4ubgotJGZvciBpIFtbCi0KLSRyYW5nZSBqIDEuLmkK
LQotJGlmIGk+MCBbWwotCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgotXV0K
LQotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZU1hdGNoZXI8Ci0gICAgOjp0ZXN0aW5nOjp0
dXBsZTwKLSRmb3IgaiwgW1sKLQotICAgICAgICB0eXBlbmFtZSBpbnRlcm5hbDo6RGVjYXlBcnJh
eTxUJGpbW11dPjo6dHlwZV1dPiA+Ci1FbGVtZW50c0FyZSgkZm9yIGosIFtbY29uc3QgVCRqJiBl
JGpdXSkgewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8Ci0kZm9yIGosIFtbCi0KLSAgICAg
IHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQkaltbXV0+Ojp0eXBlXV0+IEFyZ3M7Ci0g
IHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNBcmVNYXRjaGVyPEFyZ3M+KEFyZ3MoJGZvciBqLCBb
W2Ukal1dKSk7Ci19Ci0KLV1dCi0KLS8vIFVub3JkZXJlZEVsZW1lbnRzQXJlKGVfMSwgZV8yLCAu
Li4sIGVfbikgaXMgYW4gRWxlbWVudHNBcmUgZXh0ZW5zaW9uCi0vLyB0aGF0IG1hdGNoZXMgbiBl
bGVtZW50cyBpbiBhbnkgb3JkZXIuICBXZSBzdXBwb3J0IHVwIHRvIG49JG4gYXJndW1lbnRzLgot
Ci0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLQotJHJhbmdlIGogMS4uaQotCi0kaWYgaT4wIFtb
Ci0KLXRlbXBsYXRlIDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+Ci1dXQotCi1pbmxpbmUgaW50
ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcjwKLSAgICA6OnRlc3Rpbmc6OnR1cGxl
PAotJGZvciBqLCBbWwotCi0gICAgICAgIHR5cGVuYW1lIGludGVybmFsOjpEZWNheUFycmF5PFQk
altbXV0+Ojp0eXBlXV0+ID4KLVVub3JkZXJlZEVsZW1lbnRzQXJlKCRmb3IgaiwgW1tjb25zdCBU
JGomIGUkal1dKSB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwKLSRmb3IgaiwgW1sKLQot
ICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkRlY2F5QXJyYXk8VCRqW1tdXT46OnR5cGVdXT4gQXJn
czsKLSAgcmV0dXJuIGludGVybmFsOjpVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXI8QXJncz4o
QXJncygkZm9yIGosIFtbZSRqXV0pKTsKLX0KLQotXV0KLQotLy8gQWxsT2YobTEsIG0yLCAuLi4s
IG1rKSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IG1hdGNoZXMgYWxsIG9mIHRoZSBnaXZlbgotLy8g
c3ViLW1hdGNoZXJzLiAgQWxsT2YgaXMgY2FsbGVkIGZ1bGx5IHF1YWxpZmllZCB0byBwcmV2ZW50
IEFETCBmcm9tIGZpcmluZy4KLQotJHJhbmdlIGkgMi4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAx
Li5pCi0kdmFyIG0gPSBpLzIKLSRyYW5nZSBrIDEuLm0KLSRyYW5nZSB0IG0rMS4uaQotCi10ZW1w
bGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIE0kal1dPgotaW5saW5lIHR5cGVuYW1lIGludGVybmFs
OjpBbGxPZlJlc3VsdCRpPCRmb3IgaiwgW1tNJGpdXT46OnR5cGUKLUFsbE9mKCRmb3IgaiwgW1tN
JGogbSRqXV0pIHsKLSAgcmV0dXJuIHR5cGVuYW1lIGludGVybmFsOjpBbGxPZlJlc3VsdCRpPCRm
b3IgaiwgW1tNJGpdXT46OnR5cGUoCi0gICAgICAkaWYgbSA9PSAxIFtbbTFdXSAkZWxzZSBbWzo6
dGVzdGluZzo6QWxsT2YoJGZvciBrLCBbW20ka11dKV1dLAotICAgICAgJGlmIG0rMSA9PSBpIFtb
bSRpXV0gJGVsc2UgW1s6OnRlc3Rpbmc6OkFsbE9mKCRmb3IgdCwgW1ttJHRdXSldXSk7Ci19Ci0K
LV1dCi0KLS8vIEFueU9mKG0xLCBtMiwgLi4uLCBtaykgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBt
YXRjaGVzIGFueSBvZiB0aGUgZ2l2ZW4KLS8vIHN1Yi1tYXRjaGVycy4gIEFueU9mIGlzIGNhbGxl
ZCBmdWxseSBxdWFsaWZpZWQgdG8gcHJldmVudCBBREwgZnJvbSBmaXJpbmcuCi0KLSRyYW5nZSBp
IDIuLm4KLSRmb3IgaSBbWwotJHJhbmdlIGogMS4uaQotJHZhciBtID0gaS8yCi0kcmFuZ2UgayAx
Li5tCi0kcmFuZ2UgdCBtKzEuLmkKLQotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBNJGpd
XT4KLWlubGluZSB0eXBlbmFtZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQkaTwkZm9yIGosIFtbTSRq
XV0+Ojp0eXBlCi1BbnlPZigkZm9yIGosIFtbTSRqIG0kal1dKSB7Ci0gIHJldHVybiB0eXBlbmFt
ZSBpbnRlcm5hbDo6QW55T2ZSZXN1bHQkaTwkZm9yIGosIFtbTSRqXV0+Ojp0eXBlKAotICAgICAg
JGlmIG0gPT0gMSBbW20xXV0gJGVsc2UgW1s6OnRlc3Rpbmc6OkFueU9mKCRmb3IgaywgW1ttJGtd
XSldXSwKLSAgICAgICRpZiBtKzEgPT0gaSBbW20kaV1dICRlbHNlIFtbOjp0ZXN0aW5nOjpBbnlP
ZigkZm9yIHQsIFtbbSR0XV0pXV0pOwotfQotCi1dXQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGlu
ZwotJCQgfSAvLyBUaGlzIFB1bXAgbWV0YSBjb21tZW50IGZpeGVzIGF1dG8taW5kZW50YXRpb24g
aW4gRW1hY3MuIEl0IHdpbGwgbm90Ci0kJCAgIC8vIHNob3cgdXAgaW4gdGhlIGdlbmVyYXRlZCBj
b2RlLgotCi0KLS8vIFRoZSBNQVRDSEVSKiBmYW1pbHkgb2YgbWFjcm9zIGNhbiBiZSB1c2VkIGlu
IGEgbmFtZXNwYWNlIHNjb3BlIHRvCi0vLyBkZWZpbmUgY3VzdG9tIG1hdGNoZXJzIGVhc2lseS4K
LS8vCi0vLyBCYXNpYyBVc2FnZQotLy8gPT09PT09PT09PT0KLS8vCi0vLyBUaGUgc3ludGF4Ci0v
LwotLy8gICBNQVRDSEVSKG5hbWUsIGRlc2NyaXB0aW9uX3N0cmluZykgeyBzdGF0ZW1lbnRzOyB9
Ci0vLwotLy8gZGVmaW5lcyBhIG1hdGNoZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGV4ZWN1
dGVzIHRoZSBzdGF0ZW1lbnRzLAotLy8gd2hpY2ggbXVzdCByZXR1cm4gYSBib29sIHRvIGluZGlj
YXRlIGlmIHRoZSBtYXRjaCBzdWNjZWVkcy4gIEluc2lkZQotLy8gdGhlIHN0YXRlbWVudHMsIHlv
dSBjYW4gcmVmZXIgdG8gdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYnkgJ2FyZycsCi0vLyBhbmQg
cmVmZXIgdG8gaXRzIHR5cGUgYnkgJ2FyZ190eXBlJy4KLS8vCi0vLyBUaGUgZGVzY3JpcHRpb24g
c3RyaW5nIGRvY3VtZW50cyB3aGF0IHRoZSBtYXRjaGVyIGRvZXMsIGFuZCBpcyB1c2VkCi0vLyB0
byBnZW5lcmF0ZSB0aGUgZmFpbHVyZSBtZXNzYWdlIHdoZW4gdGhlIG1hdGNoIGZhaWxzLiAgU2lu
Y2UgYQotLy8gTUFUQ0hFUigpIGlzIHVzdWFsbHkgZGVmaW5lZCBpbiBhIGhlYWRlciBmaWxlIHNo
YXJlZCBieSBtdWx0aXBsZQotLy8gQysrIHNvdXJjZSBmaWxlcywgd2UgcmVxdWlyZSB0aGUgZGVz
Y3JpcHRpb24gdG8gYmUgYSBDLXN0cmluZwotLy8gbGl0ZXJhbCB0byBhdm9pZCBwb3NzaWJsZSBz
aWRlIGVmZmVjdHMuICBJdCBjYW4gYmUgZW1wdHksIGluIHdoaWNoCi0vLyBjYXNlIHdlJ2xsIHVz
ZSB0aGUgc2VxdWVuY2Ugb2Ygd29yZHMgaW4gdGhlIG1hdGNoZXIgbmFtZSBhcyB0aGUKLS8vIGRl
c2NyaXB0aW9uLgotLy8KLS8vIEZvciBleGFtcGxlOgotLy8KLS8vICAgTUFUQ0hFUihJc0V2ZW4s
ICIiKSB7IHJldHVybiAoYXJnICUgMikgPT0gMDsgfQotLy8KLS8vIGFsbG93cyB5b3UgdG8gd3Jp
dGUKLS8vCi0vLyAgIC8vIEV4cGVjdHMgbW9ja19mb28uQmFyKG4pIHRvIGJlIGNhbGxlZCB3aGVy
ZSBuIGlzIGV2ZW4uCi0vLyAgIEVYUEVDVF9DQUxMKG1vY2tfZm9vLCBCYXIoSXNFdmVuKCkpKTsK
LS8vCi0vLyBvciwKLS8vCi0vLyAgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIHZhbHVlIG9mIHNvbWVf
ZXhwcmVzc2lvbiBpcyBldmVuLgotLy8gICBFWFBFQ1RfVEhBVChzb21lX2V4cHJlc3Npb24sIElz
RXZlbigpKTsKLS8vCi0vLyBJZiB0aGUgYWJvdmUgYXNzZXJ0aW9uIGZhaWxzLCBpdCB3aWxsIHBy
aW50IHNvbWV0aGluZyBsaWtlOgotLy8KLS8vICAgVmFsdWUgb2Y6IHNvbWVfZXhwcmVzc2lvbgot
Ly8gICBFeHBlY3RlZDogaXMgZXZlbgotLy8gICAgIEFjdHVhbDogNwotLy8KLS8vIHdoZXJlIHRo
ZSBkZXNjcmlwdGlvbiAiaXMgZXZlbiIgaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZyb20g
dGhlCi0vLyBtYXRjaGVyIG5hbWUgSXNFdmVuLgotLy8KLS8vIEFyZ3VtZW50IFR5cGUKLS8vID09
PT09PT09PT09PT0KLS8vCi0vLyBOb3RlIHRoYXQgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5n
IG1hdGNoZWQgKGFyZ190eXBlKSBpcwotLy8gZGV0ZXJtaW5lZCBieSB0aGUgY29udGV4dCBpbiB3
aGljaCB5b3UgdXNlIHRoZSBtYXRjaGVyIGFuZCBpcwotLy8gc3VwcGxpZWQgdG8geW91IGJ5IHRo
ZSBjb21waWxlciwgc28geW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQKLS8vIGRlY2xhcmlu
ZyBpdCAobm9yIGNhbiB5b3UpLiAgVGhpcyBhbGxvd3MgdGhlIG1hdGNoZXIgdG8gYmUKLS8vIHBv
bHltb3JwaGljLiAgRm9yIGV4YW1wbGUsIElzRXZlbigpIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFu
eSB0eXBlCi0vLyB3aGVyZSB0aGUgdmFsdWUgb2YgIihhcmcgJSAyKSA9PSAwIiBjYW4gYmUgaW1w
bGljaXRseSBjb252ZXJ0ZWQgdG8KLS8vIGEgYm9vbC4gIEluIHRoZSAiQmFyKElzRXZlbigpKSIg
ZXhhbXBsZSBhYm92ZSwgaWYgbWV0aG9kIEJhcigpCi0vLyB0YWtlcyBhbiBpbnQsICdhcmdfdHlw
ZScgd2lsbCBiZSBpbnQ7IGlmIGl0IHRha2VzIGFuIHVuc2lnbmVkIGxvbmcsCi0vLyAnYXJnX3R5
cGUnIHdpbGwgYmUgdW5zaWduZWQgbG9uZzsgYW5kIHNvIG9uLgotLy8KLS8vIFBhcmFtZXRlcml6
aW5nIE1hdGNoZXJzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PQotLy8KLS8vIFNvbWV0aW1l
cyB5b3UnbGwgd2FudCB0byBwYXJhbWV0ZXJpemUgdGhlIG1hdGNoZXIuICBGb3IgdGhhdCB5b3UK
LS8vIGNhbiB1c2UgYW5vdGhlciBtYWNybzoKLS8vCi0vLyAgIE1BVENIRVJfUChuYW1lLCBwYXJh
bV9uYW1lLCBkZXNjcmlwdGlvbl9zdHJpbmcpIHsgc3RhdGVtZW50czsgfQotLy8KLS8vIEZvciBl
eGFtcGxlOgotLy8KLS8vICAgTUFUQ0hFUl9QKEhhc0Fic29sdXRlVmFsdWUsIHZhbHVlLCAiIikg
eyByZXR1cm4gYWJzKGFyZykgPT0gdmFsdWU7IH0KLS8vCi0vLyB3aWxsIGFsbG93IHlvdSB0byB3
cml0ZToKLS8vCi0vLyAgIEVYUEVDVF9USEFUKEJsYWgoImEiKSwgSGFzQWJzb2x1dGVWYWx1ZShu
KSk7Ci0vLwotLy8gd2hpY2ggbWF5IGxlYWQgdG8gdGhpcyBtZXNzYWdlIChhc3N1bWluZyBuIGlz
IDEwKToKLS8vCi0vLyAgIFZhbHVlIG9mOiBCbGFoKCJhIikKLS8vICAgRXhwZWN0ZWQ6IGhhcyBh
YnNvbHV0ZSB2YWx1ZSAxMAotLy8gICAgIEFjdHVhbDogLTkKLS8vCi0vLyBOb3RlIHRoYXQgYm90
aCB0aGUgbWF0Y2hlciBkZXNjcmlwdGlvbiBhbmQgaXRzIHBhcmFtZXRlciBhcmUKLS8vIHByaW50
ZWQsIG1ha2luZyB0aGUgbWVzc2FnZSBodW1hbi1mcmllbmRseS4KLS8vCi0vLyBJbiB0aGUgbWF0
Y2hlciBkZWZpbml0aW9uIGJvZHksIHlvdSBjYW4gd3JpdGUgJ2Zvb190eXBlJyB0bwotLy8gcmVm
ZXJlbmNlIHRoZSB0eXBlIG9mIGEgcGFyYW1ldGVyIG5hbWVkICdmb28nLiAgRm9yIGV4YW1wbGUs
IGluIHRoZQotLy8gYm9keSBvZiBNQVRDSEVSX1AoSGFzQWJzb2x1dGVWYWx1ZSwgdmFsdWUpIGFi
b3ZlLCB5b3UgY2FuIHdyaXRlCi0vLyAndmFsdWVfdHlwZScgdG8gcmVmZXIgdG8gdGhlIHR5cGUg
b2YgJ3ZhbHVlJy4KLS8vCi0vLyBXZSBhbHNvIHByb3ZpZGUgTUFUQ0hFUl9QMiwgTUFUQ0hFUl9Q
MywgLi4uLCB1cCB0byBNQVRDSEVSX1AkbiB0bwotLy8gc3VwcG9ydCBtdWx0aS1wYXJhbWV0ZXIg
bWF0Y2hlcnMuCi0vLwotLy8gRGVzY3JpYmluZyBQYXJhbWV0ZXJpemVkIE1hdGNoZXJzCi0vLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBUaGUgbGFzdCBhcmd1bWVu
dCB0byBNQVRDSEVSKigpIGlzIGEgc3RyaW5nLXR5cGVkIGV4cHJlc3Npb24uICBUaGUKLS8vIGV4
cHJlc3Npb24gY2FuIHJlZmVyZW5jZSBhbGwgb2YgdGhlIG1hdGNoZXIncyBwYXJhbWV0ZXJzIGFu
ZCBhCi0vLyBzcGVjaWFsIGJvb2wtdHlwZWQgdmFyaWFibGUgbmFtZWQgJ25lZ2F0aW9uJy4gIFdo
ZW4gJ25lZ2F0aW9uJyBpcwotLy8gZmFsc2UsIHRoZSBleHByZXNzaW9uIHNob3VsZCBldmFsdWF0
ZSB0byB0aGUgbWF0Y2hlcidzIGRlc2NyaXB0aW9uOwotLy8gb3RoZXJ3aXNlIGl0IHNob3VsZCBl
dmFsdWF0ZSB0byB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIG5lZ2F0aW9uIG9mCi0vLyB0aGUgbWF0
Y2hlci4gIEZvciBleGFtcGxlLAotLy8KLS8vICAgdXNpbmcgdGVzdGluZzo6UHJpbnRUb1N0cmlu
ZzsKLS8vCi0vLyAgIE1BVENIRVJfUDIoSW5DbG9zZWRSYW5nZSwgbG93LCBoaSwKLS8vICAgICAg
IHN0cmluZyhuZWdhdGlvbiA/ICJpcyBub3QiIDogImlzIikgKyAiIGluIHJhbmdlIFsiICsKLS8v
ICAgICAgIFByaW50VG9TdHJpbmcobG93KSArICIsICIgKyBQcmludFRvU3RyaW5nKGhpKSArICJd
IikgewotLy8gICAgIHJldHVybiBsb3cgPD0gYXJnICYmIGFyZyA8PSBoaTsKLS8vICAgfQotLy8g
ICAuLi4KLS8vICAgRVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci0vLyAgIEVY
UEVDVF9USEFUKDMsIE5vdChJbkNsb3NlZFJhbmdlKDIsIDQpKSk7Ci0vLwotLy8gd291bGQgZ2Vu
ZXJhdGUgdHdvIGZhaWx1cmVzIHRoYXQgY29udGFpbiB0aGUgdGV4dDoKLS8vCi0vLyAgIEV4cGVj
dGVkOiBpcyBpbiByYW5nZSBbNCwgNl0KLS8vICAgLi4uCi0vLyAgIEV4cGVjdGVkOiBpcyBub3Qg
aW4gcmFuZ2UgWzIsIDRdCi0vLwotLy8gSWYgeW91IHNwZWNpZnkgIiIgYXMgdGhlIGRlc2NyaXB0
aW9uLCB0aGUgZmFpbHVyZSBtZXNzYWdlIHdpbGwKLS8vIGNvbnRhaW4gdGhlIHNlcXVlbmNlIG9m
IHdvcmRzIGluIHRoZSBtYXRjaGVyIG5hbWUgZm9sbG93ZWQgYnkgdGhlCi0vLyBwYXJhbWV0ZXIg
dmFsdWVzIHByaW50ZWQgYXMgYSB0dXBsZS4gIEZvciBleGFtcGxlLAotLy8KLS8vICAgTUFUQ0hF
Ul9QMihJbkNsb3NlZFJhbmdlLCBsb3csIGhpLCAiIikgeyAuLi4gfQotLy8gICAuLi4KLS8vICAg
RVhQRUNUX1RIQVQoMywgSW5DbG9zZWRSYW5nZSg0LCA2KSk7Ci0vLyAgIEVYUEVDVF9USEFUKDMs
IE5vdChJbkNsb3NlZFJhbmdlKDIsIDQpKSk7Ci0vLwotLy8gd291bGQgZ2VuZXJhdGUgdHdvIGZh
aWx1cmVzIHRoYXQgY29udGFpbiB0aGUgdGV4dDoKLS8vCi0vLyAgIEV4cGVjdGVkOiBpbiBjbG9z
ZWQgcmFuZ2UgKDQsIDYpCi0vLyAgIC4uLgotLy8gICBFeHBlY3RlZDogbm90IChpbiBjbG9zZWQg
cmFuZ2UgKDIsIDQpKQotLy8KLS8vIFR5cGVzIG9mIE1hdGNoZXIgUGFyYW1ldGVycwotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gRm9yIHRoZSBwdXJwb3NlIG9mIHR5cGlu
ZywgeW91IGNhbiB2aWV3Ci0vLwotLy8gICBNQVRDSEVSX1BrKEZvbywgcDEsIC4uLiwgcGssIGRl
c2NyaXB0aW9uX3N0cmluZykgeyAuLi4gfQotLy8KLS8vIGFzIHNob3J0aGFuZCBmb3IKLS8vCi0v
LyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBwMV90eXBlLCAuLi4sIHR5cGVuYW1lIHBrX3R5cGU+Ci0v
LyAgIEZvb01hdGNoZXJQazxwMV90eXBlLCAuLi4sIHBrX3R5cGU+Ci0vLyAgIEZvbyhwMV90eXBl
IHAxLCAuLi4sIHBrX3R5cGUgcGspIHsgLi4uIH0KLS8vCi0vLyBXaGVuIHlvdSB3cml0ZSBGb28o
djEsIC4uLiwgdmspLCB0aGUgY29tcGlsZXIgaW5mZXJzIHRoZSB0eXBlcyBvZgotLy8gdGhlIHBh
cmFtZXRlcnMgdjEsIC4uLiwgYW5kIHZrIGZvciB5b3UuICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3
aXRoCi0vLyB0aGUgcmVzdWx0IG9mIHRoZSB0eXBlIGluZmVyZW5jZSwgeW91IGNhbiBzcGVjaWZ5
IHRoZSB0eXBlcyBieQotLy8gZXhwbGljaXRseSBpbnN0YW50aWF0aW5nIHRoZSB0ZW1wbGF0ZSwg
YXMgaW4gRm9vPGxvbmcsIGJvb2w+KDUsCi0vLyBmYWxzZSkuICBBcyBzYWlkIGVhcmxpZXIsIHlv
dSBkb24ndCBnZXQgdG8gKG9yIG5lZWQgdG8pIHNwZWNpZnkKLS8vICdhcmdfdHlwZScgYXMgdGhh
dCdzIGRldGVybWluZWQgYnkgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG1hdGNoZXIKLS8vIGlz
IHVzZWQuICBZb3UgY2FuIGFzc2lnbiB0aGUgcmVzdWx0IG9mIGV4cHJlc3Npb24gRm9vKHAxLCAu
Li4sIHBrKQotLy8gdG8gYSB2YXJpYWJsZSBvZiB0eXBlIEZvb01hdGNoZXJQazxwMV90eXBlLCAu
Li4sIHBrX3R5cGU+LiAgVGhpcwotLy8gY2FuIGJlIHVzZWZ1bCB3aGVuIGNvbXBvc2luZyBtYXRj
aGVycy4KLS8vCi0vLyBXaGlsZSB5b3UgY2FuIGluc3RhbnRpYXRlIGEgbWF0Y2hlciB0ZW1wbGF0
ZSB3aXRoIHJlZmVyZW5jZSB0eXBlcywKLS8vIHBhc3NpbmcgdGhlIHBhcmFtZXRlcnMgYnkgcG9p
bnRlciB1c3VhbGx5IG1ha2VzIHlvdXIgY29kZSBtb3JlCi0vLyByZWFkYWJsZS4gIElmLCBob3dl
dmVyLCB5b3Ugc3RpbGwgd2FudCB0byBwYXNzIGEgcGFyYW1ldGVyIGJ5Ci0vLyByZWZlcmVuY2Us
IGJlIGF3YXJlIHRoYXQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgdGhlCi0v
LyBtYXRjaGVyIHlvdSB3aWxsIHNlZSB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0
IGJ1dCBub3QgaXRzCi0vLyBhZGRyZXNzLgotLy8KLS8vIEV4cGxhaW5pbmcgTWF0Y2ggUmVzdWx0
cwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09Ci0vLwotLy8gU29tZXRpbWVzIHRoZSBtYXRj
aGVyIGRlc2NyaXB0aW9uIGFsb25lIGlzbid0IGVub3VnaCB0byBleHBsYWluIHdoeQotLy8gdGhl
IG1hdGNoIGhhcyBmYWlsZWQgb3Igc3VjY2VlZGVkLiAgRm9yIGV4YW1wbGUsIHdoZW4gZXhwZWN0
aW5nIGEKLS8vIGxvbmcgc3RyaW5nLCBpdCBjYW4gYmUgdmVyeSBoZWxwZnVsIHRvIGFsc28gcHJp
bnQgdGhlIGRpZmYgYmV0d2VlbgotLy8gdGhlIGV4cGVjdGVkIHN0cmluZyBhbmQgdGhlIGFjdHVh
bCBvbmUuICBUbyBhY2hpZXZlIHRoYXQsIHlvdSBjYW4KLS8vIG9wdGlvbmFsbHkgc3RyZWFtIGFk
ZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYSBzcGVjaWFsIHZhcmlhYmxlCi0vLyBuYW1lZCByZXN1
bHRfbGlzdGVuZXIsIHdob3NlIHR5cGUgaXMgYSBwb2ludGVyIHRvIGNsYXNzCi0vLyBNYXRjaFJl
c3VsdExpc3RlbmVyOgotLy8KLS8vICAgTUFUQ0hFUl9QKEVxdWFsc0xvbmdTdHJpbmcsIHN0ciwg
IiIpIHsKLS8vICAgICBpZiAoYXJnID09IHN0cikgcmV0dXJuIHRydWU7Ci0vLwotLy8gICAgICpy
ZXN1bHRfbGlzdGVuZXIgPDwgInRoZSBkaWZmZXJlbmNlOiAiCi0vLy8gICAgICAgICAgICAgICAg
ICAgICA8PCBEaWZmU3RyaW5ncyhzdHIsIGFyZyk7Ci0vLyAgICAgcmV0dXJuIGZhbHNlOwotLy8g
ICB9Ci0vLwotLy8gT3ZlcmxvYWRpbmcgTWF0Y2hlcnMKLS8vID09PT09PT09PT09PT09PT09PT09
Ci0vLwotLy8gWW91IGNhbiBvdmVybG9hZCBtYXRjaGVycyB3aXRoIGRpZmZlcmVudCBudW1iZXJz
IG9mIHBhcmFtZXRlcnM6Ci0vLwotLy8gICBNQVRDSEVSX1AoQmxhaCwgYSwgZGVzY3JpcHRpb25f
c3RyaW5nMSkgeyAuLi4gfQotLy8gICBNQVRDSEVSX1AyKEJsYWgsIGEsIGIsIGRlc2NyaXB0aW9u
X3N0cmluZzIpIHsgLi4uIH0KLS8vCi0vLyBDYXZlYXRzCi0vLyA9PT09PT09Ci0vLwotLy8gV2hl
biBkZWZpbmluZyBhIG5ldyBtYXRjaGVyLCB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgaW1wbGVt
ZW50aW5nCi0vLyBNYXRjaGVySW50ZXJmYWNlIG9yIHVzaW5nIE1ha2VQb2x5bW9ycGhpY01hdGNo
ZXIoKS4gIFRoZXNlCi0vLyBhcHByb2FjaGVzIHJlcXVpcmUgbW9yZSB3b3JrIHRoYW4gdGhlIE1B
VENIRVIqIG1hY3JvcywgYnV0IGFsc28KLS8vIGdpdmUgeW91IG1vcmUgY29udHJvbCBvbiB0aGUg
dHlwZXMgb2YgdGhlIHZhbHVlIGJlaW5nIG1hdGNoZWQgYW5kCi0vLyB0aGUgbWF0Y2hlciBwYXJh
bWV0ZXJzLCB3aGljaCBtYXkgbGVhZHMgdG8gYmV0dGVyIGNvbXBpbGVyIGVycm9yCi0vLyBtZXNz
YWdlcyB3aGVuIHRoZSBtYXRjaGVyIGlzIHVzZWQgd3JvbmcuICBUaGV5IGFsc28gYWxsb3cKLS8v
IG92ZXJsb2FkaW5nIG1hdGNoZXJzIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlcyAoYXMgb3Bwb3Nl
ZCB0byBqdXN0Ci0vLyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMpLgotLy8KLS8v
IE1BVENIRVIqKCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIG5hbWVzcGFjZSBzY29wZS4gIFRoZSBy
ZWFzb24gaXMKLS8vIHRoYXQgQysrIGRvZXNuJ3QgeWV0IGFsbG93IGZ1bmN0aW9uLWxvY2FsIHR5
cGVzIHRvIGJlIHVzZWQgdG8KLS8vIGluc3RhbnRpYXRlIHRlbXBsYXRlcy4gIFRoZSB1cC1jb21p
bmcgQysrMHggc3RhbmRhcmQgd2lsbCBmaXggdGhpcy4KLS8vIE9uY2UgdGhhdCdzIGRvbmUsIHdl
J2xsIGNvbnNpZGVyIHN1cHBvcnRpbmcgdXNpbmcgTUFUQ0hFUiooKSBpbnNpZGUKLS8vIGEgZnVu
Y3Rpb24uCi0vLwotLy8gTW9yZSBJbmZvcm1hdGlvbgotLy8gPT09PT09PT09PT09PT09PQotLy8K
LS8vIFRvIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgdGhlc2UgbWFjcm9zLCBwbGVhc2Ugc2VhcmNo
IGZvciAnTUFUQ0hFUicKLS8vIG9uIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGVtb2Nr
L3dpa2kvQ29va0Jvb2suCi0KLSRyYW5nZSBpIDAuLm4KLSRmb3IgaQotCi1bWwotJHZhciBtYWNy
b19uYW1lID0gW1skaWYgaT09MCBbW01BVENIRVJdXSAkZWxpZiBpPT0xIFtbTUFUQ0hFUl9QXV0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVsc2UgW1tNQVRDSEVS
X1AkaV1dXV0KLSR2YXIgY2xhc3NfbmFtZSA9IFtbbmFtZSMjTWF0Y2hlcltbJGlmIGk9PTAgW1td
XSAkZWxpZiBpPT0xIFtbUF1dCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGVsc2UgW1tQJGldXV1dXV0KLSRyYW5nZSBqIDAuLmktMQotJHZhciB0ZW1w
bGF0ZSA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWwotCi0gIHRlbXBsYXRlIDwkZm9yIGosIFtb
dHlwZW5hbWUgcCRqIyNfdHlwZV1dPlwKLV1dXV0KLSR2YXIgY3Rvcl9wYXJhbV9saXN0ID0gW1sk
Zm9yIGosIFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXV1dCi0kdmFyIGltcGxfY3Rvcl9wYXJhbV9s
aXN0ID0gW1skZm9yIGosIFtbcCRqIyNfdHlwZSBnbW9ja19wJGpdXV1dCi0kdmFyIGltcGxfaW5p
dHMgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sgOiAkZm9yIGosIFtbcCRqKGdtb2NrX3Akaild
XV1dXV0KLSR2YXIgaW5pdHMgPSBbWyRpZiBpPT0wIFtbXV0gJGVsc2UgW1sgOiAkZm9yIGosIFtb
cCRqKGdtb2NrX3AkaildXV1dXV0KLSR2YXIgcGFyYW1zID0gW1skZm9yIGosIFtbcCRqXV1dXQot
JHZhciBwYXJhbV90eXBlcyA9IFtbJGlmIGk9PTAgW1tdXSAkZWxzZSBbWzwkZm9yIGosIFtbcCRq
IyNfdHlwZV1dPl1dXV0KLSR2YXIgcGFyYW1fdHlwZXNfYW5kX25hbWVzID0gW1skZm9yIGosIFtb
cCRqIyNfdHlwZSBwJGpdXV1dCi0kdmFyIHBhcmFtX2ZpZWxkX2RlY2xzID0gW1skZm9yIGoKLVtb
Ci0KLSAgICAgIHAkaiMjX3R5cGUgcCRqO1wKLV1dXV0KLSR2YXIgcGFyYW1fZmllbGRfZGVjbHMy
ID0gW1skZm9yIGoKLVtbCi0KLSAgICBwJGojI190eXBlIHAkajtcCi1dXV1dCi0KLSNkZWZpbmUg
JG1hY3JvX25hbWUobmFtZSRmb3IgaiBbWywgcCRqXV0sIGRlc2NyaXB0aW9uKVwkdGVtcGxhdGUK
LSAgY2xhc3MgJGNsYXNzX25hbWUge1wKLSAgIHB1YmxpYzpcCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIGFyZ190eXBlPlwKLSAgICBjbGFzcyBnbW9ja19JbXBsIDogcHVibGljIDo6dGVzdGluZzo6
TWF0Y2hlckludGVyZmFjZTxhcmdfdHlwZT4ge1wKLSAgICAgcHVibGljOlwKLSAgICAgIFtbJGlm
IGk9PTEgW1tleHBsaWNpdCBdXV1dZ21vY2tfSW1wbCgkaW1wbF9jdG9yX3BhcmFtX2xpc3QpXAot
ICAgICAgICAgICRpbXBsX2luaXRzIHt9XAotICAgICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhw
bGFpbihcCi0gICAgICAgICAgYXJnX3R5cGUgYXJnLCA6OnRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlz
dGVuZXIqIHJlc3VsdF9saXN0ZW5lcikgY29uc3Q7XAotICAgICAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIGdtb2NrX29zKSBjb25zdCB7XAotICAgICAgICAqZ21vY2tf
b3MgPDwgRm9ybWF0RGVzY3JpcHRpb24oZmFsc2UpO1wKLSAgICAgIH1cCi0gICAgICB2aXJ0dWFs
IHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBnbW9ja19vcykgY29uc3Qg
e1wKLSAgICAgICAgKmdtb2NrX29zIDw8IEZvcm1hdERlc2NyaXB0aW9uKHRydWUpO1wKLSAgICAg
IH1cJHBhcmFtX2ZpZWxkX2RlY2xzCi0gICAgIHByaXZhdGU6XAotICAgICAgOjp0ZXN0aW5nOjpp
bnRlcm5hbDo6c3RyaW5nIEZvcm1hdERlc2NyaXB0aW9uKGJvb2wgbmVnYXRpb24pIGNvbnN0IHtc
Ci0gICAgICAgIGNvbnN0IDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZyBnbW9ja19kZXNjcmlw
dGlvbiA9IChkZXNjcmlwdGlvbik7XAotICAgICAgICBpZiAoIWdtb2NrX2Rlc2NyaXB0aW9uLmVt
cHR5KCkpXAotICAgICAgICAgIHJldHVybiBnbW9ja19kZXNjcmlwdGlvbjtcCi0gICAgICAgIHJl
dHVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oXAotICAg
ICAgICAgICAgbmVnYXRpb24sICNuYW1lLCBcCi0gICAgICAgICAgICA6OnRlc3Rpbmc6OmludGVy
bmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoXAotICAgICAgICAg
ICAgICAgIDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW3AkaiMjX3R5cGVdXT4oJGZvciBqLCBb
W3Akal1dKSkpO1wKLSAgICAgIH1cCi0gICAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKGdtb2Nr
X0ltcGwpO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICAg
IG9wZXJhdG9yIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oKSBjb25zdCB7XAotICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6TWF0Y2hlcjxhcmdfdHlwZT4oXAotICAgICAgICAgIG5ldyBnbW9j
a19JbXBsPGFyZ190eXBlPigkcGFyYW1zKSk7XAotICAgIH1cCi0gICAgW1skaWYgaT09MSBbW2V4
cGxpY2l0IF1dXV0kY2xhc3NfbmFtZSgkY3Rvcl9wYXJhbV9saXN0KSRpbml0cyB7XAotICAgIH1c
JHBhcmFtX2ZpZWxkX2RlY2xzMgotICAgcHJpdmF0ZTpcCi0gICAgR1RFU1RfRElTQUxMT1dfQVNT
SUdOXygkY2xhc3NfbmFtZSk7XAotICB9O1wkdGVtcGxhdGUKLSAgaW5saW5lICRjbGFzc19uYW1l
JHBhcmFtX3R5cGVzIG5hbWUoJHBhcmFtX3R5cGVzX2FuZF9uYW1lcykge1wKLSAgICByZXR1cm4g
JGNsYXNzX25hbWUkcGFyYW1fdHlwZXMoJHBhcmFtcyk7XAotICB9XCR0ZW1wbGF0ZQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgYXJnX3R5cGU+XAotICBib29sICRjbGFzc19uYW1lJHBhcmFtX3R5cGVz
OjpnbW9ja19JbXBsPGFyZ190eXBlPjo6TWF0Y2hBbmRFeHBsYWluKFwKLSAgICAgIGFyZ190eXBl
IGFyZywgXAotICAgICAgOjp0ZXN0aW5nOjpNYXRjaFJlc3VsdExpc3RlbmVyKiByZXN1bHRfbGlz
dGVuZXIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8pXAotICAgICAgICAgIGNvbnN0Ci1dXQotCi0K
LSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTUFUQ0hFUlNf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVk
LW5pY2Utc3RyaWN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdlbmVyYXRl
ZC1uaWNlLXN0cmljdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDk1ZjRkNWJj
N2YuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLWdl
bmVyYXRlZC1uaWNlLXN0cmljdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzk3ICswLDAgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBnbW9j
ay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaC5wdW1wCi0vLyBETyBOT1QgRURJVCBCWSBIQU5EISEh
Ci0KLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEltcGxlbWVudHMgY2xh
c3MgdGVtcGxhdGVzIE5pY2VNb2NrLCBOYWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrLgotLy8KLS8v
IEdpdmVuIGEgbW9jayBjbGFzcyBNb2NrRm9vIHRoYXQgaXMgY3JlYXRlZCB1c2luZyBHb29nbGUg
TW9jaywKLS8vIE5pY2VNb2NrPE1vY2tGb28+IGlzIGEgc3ViY2xhc3Mgb2YgTW9ja0ZvbyB0aGF0
IGFsbG93cwotLy8gdW5pbnRlcmVzdGluZyBjYWxscyAoaS5lLiBjYWxscyB0byBtb2NrIG1ldGhv
ZHMgdGhhdCBoYXZlIG5vCi0vLyBFWFBFQ1RfQ0FMTCBzcGVjcyksIE5hZ2d5TW9jazxNb2NrRm9v
PiBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28KLS8vIHRoYXQgcHJpbnRzIGEgd2FybmluZyB3aGVu
IGFuIHVuaW50ZXJlc3RpbmcgY2FsbCBvY2N1cnMsIGFuZAotLy8gU3RyaWN0TW9jazxNb2NrRm9v
PiBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28gdGhhdCB0cmVhdHMgYWxsCi0vLyB1bmludGVyZXN0
aW5nIGNhbGxzIGFzIGVycm9ycy4KLS8vCi0vLyBDdXJyZW50bHkgYSBtb2NrIGlzIG5hZ2d5IGJ5
IGRlZmF1bHQsIHNvIE1vY2tGb28gYW5kCi0vLyBOYWdneU1vY2s8TW9ja0Zvbz4gYmVoYXZlIGxp
a2UgdGhlIHNhbWUuICBIb3dldmVyLCB3ZSB3aWxsIHNvb24KLS8vIHN3aXRjaCB0aGUgZGVmYXVs
dCBiZWhhdmlvciBvZiBtb2NrcyB0byBiZSBuaWNlLCBhcyB0aGF0IGluIGdlbmVyYWwKLS8vIGxl
YWRzIHRvIG1vcmUgbWFpbnRhaW5hYmxlIHRlc3RzLiAgV2hlbiB0aGF0IGhhcHBlbnMsIE1vY2tG
b28gd2lsbAotLy8gc3RvcCBiZWhhdmluZyBsaWtlIE5hZ2d5TW9jazxNb2NrRm9vPiBhbmQgc3Rh
cnQgYmVoYXZpbmcgbGlrZQotLy8gTmljZU1vY2s8TW9ja0Zvbz4uCi0vLwotLy8gTmljZU1vY2ss
IE5hZ2d5TW9jaywgYW5kIFN0cmljdE1vY2sgImluaGVyaXQiIHRoZSBjb25zdHJ1Y3RvcnMgb2YK
LS8vIHRoZWlyIHJlc3BlY3RpdmUgYmFzZSBjbGFzcywgd2l0aCB1cC10byAxMCBhcmd1bWVudHMu
ICBUaGVyZWZvcmUKLS8vIHlvdSBjYW4gd3JpdGUgTmljZU1vY2s8TW9ja0Zvbz4oNSwgImEiKSB0
byBjb25zdHJ1Y3QgYSBuaWNlIG1vY2sKLS8vIHdoZXJlIE1vY2tGb28gaGFzIGEgY29uc3RydWN0
b3IgdGhhdCBhY2NlcHRzIChpbnQsIGNvbnN0IGNoYXIqKSwKLS8vIGZvciBleGFtcGxlLgotLy8K
LS8vIEEga25vd24gbGltaXRhdGlvbiBpcyB0aGF0IE5pY2VNb2NrPE1vY2tGb28+LCBOYWdneU1v
Y2s8TW9ja0Zvbz4sCi0vLyBhbmQgU3RyaWN0TW9jazxNb2NrRm9vPiBvbmx5IHdvcmtzIGZvciBt
b2NrIG1ldGhvZHMgZGVmaW5lZCB1c2luZwotLy8gdGhlIE1PQ0tfTUVUSE9EKiBmYW1pbHkgb2Yg
bWFjcm9zIERJUkVDVExZIGluIHRoZSBNb2NrRm9vIGNsYXNzLgotLy8gSWYgYSBtb2NrIG1ldGhv
ZCBpcyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcyBvZiBNb2NrRm9vLCB0aGUgIm5pY2UiCi0vLyBv
ciAic3RyaWN0IiBtb2RpZmllciBtYXkgbm90IGFmZmVjdCBpdCwgZGVwZW5kaW5nIG9uIHRoZSBj
b21waWxlci4KLS8vIEluIHBhcnRpY3VsYXIsIG5lc3RpbmcgTmljZU1vY2ssIE5hZ2d5TW9jaywg
YW5kIFN0cmljdE1vY2sgaXMgTk9UCi0vLyBzdXBwb3J0ZWQuCi0vLwotLy8gQW5vdGhlciBrbm93
biBsaW1pdGF0aW9uIGlzIHRoYXQgdGhlIGNvbnN0cnVjdG9ycyBvZiB0aGUgYmFzZSBtb2NrCi0v
LyBjYW5ub3QgaGF2ZSBhcmd1bWVudHMgcGFzc2VkIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdo
aWNoIGFyZQotLy8gYmFubmVkIGJ5IHRoZSBHb29nbGUgQysrIHN0eWxlIGd1aWRlIGFueXdheS4K
LQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9OSUNFX1NUUklD
VF9IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0dFTkVSQVRFRF9OSUNFX1NU
UklDVF9IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stc3BlYy1idWlsZGVycy5oIgotI2luY2x1
ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3Rpbmcgewot
Ci10ZW1wbGF0ZSA8Y2xhc3MgTW9ja0NsYXNzPgotY2xhc3MgTmljZU1vY2sgOiBwdWJsaWMgTW9j
a0NsYXNzIHsKLSBwdWJsaWM6Ci0gIC8vIFdlIGRvbid0IGZhY3RvciBvdXQgdGhlIGNvbnN0cnVj
dG9yIGJvZHkgdG8gYSBjb21tb24gbWV0aG9kLCBhcwotICAvLyB3ZSBoYXZlIHRvIGF2b2lkIGEg
cG9zc2libGUgY2xhc2ggd2l0aCBtZW1iZXJzIG9mIE1vY2tDbGFzcy4KLSAgTmljZU1vY2soKSB7
Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgLy8g
QysrIGRvZXNuJ3QgKHlldCkgYWxsb3cgaW5oZXJpdGFuY2Ugb2YgY29uc3RydWN0b3JzLCBzbyB3
ZSBoYXZlCi0gIC8vIHRvIGRlZmluZSBpdCBmb3IgZWFjaCBhcml0eS4KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIEExPgotICBleHBsaWNpdCBOaWNlTW9jayhjb25zdCBBMSYgYTEpIDogTW9ja0NsYXNz
KGExKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJlc3RpbmdDYWxscygKLSAg
ICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gIE5pY2VNb2NrKGNvbnN0IEEx
JiBhMSwgY29uc3QgQTImIGEyKSA6IE1vY2tDbGFzcyhhMSwgYTIpIHsKLSAgICA6OnRlc3Rpbmc6
Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGlj
aXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4KLSAgTmljZU1vY2soY29uc3QgQTEmIGExLCBj
b25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMykgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMykgewotICAg
IDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVy
bmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBND4KLSAg
TmljZU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywKLSAgICAg
IGNvbnN0IEE0JiBhNCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQpIHsKLSAgICA6OnRlc3Rp
bmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1w
bGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1
PgotICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBj
b25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMs
IGE0LCBhNSkgewotICAgIDo6dGVzdGluZzo6TW9jazo6QWxsb3dVbmludGVyZXN0aW5nQ2FsbHMo
Ci0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAg
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0
eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNj4KLSAgTmljZU1vY2so
Y29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAot
ICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMs
IGE0LCBhNSwgYTYpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0Nh
bGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7
Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1l
IEE3PgotICBOaWNlTW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEz
LCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3Qg
QTcmIGE3KSA6IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsCi0gICAgICBhNiwgYTcpIHsK
LSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBp
bnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQs
IHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBB
OD4KLSAgTmljZU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywg
Y29uc3QgQTQmIGE0LAotICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3
JiBhNywgY29uc3QgQTgmIGE4KSA6IE1vY2tDbGFzcyhhMSwKLSAgICAgIGEyLCBhMywgYTQsIGE1
LCBhNiwgYTcsIGE4KSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxvd1VuaW50ZXJlc3RpbmdD
YWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykp
OwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUg
QTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFt
ZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5PgotICBOaWNlTW9jayhjb25zdCBBMSYgYTEs
IGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBB
NSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgsCi0gICAgICBj
b25zdCBBOSYgYTkpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwg
YTkpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkFsbG93VW5pbnRlcmVzdGluZ0NhbGxzKAotICAg
ICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5h
bWUgQTQsIHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBl
bmFtZSBBOCwgdHlwZW5hbWUgQTksIHR5cGVuYW1lIEExMD4KLSAgTmljZU1vY2soY29uc3QgQTEm
IGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAotICAgICAgY29u
c3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywgY29uc3QgQTgmIGE4LCBjb25z
dCBBOSYgYTksCi0gICAgICBjb25zdCBBMTAmIGExMCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpBbGxv
d1VuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9j
a0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdmlydHVhbCB+TmljZU1vY2soKSB7Ci0gICAgOjp0
ZXN0aW5nOjpNb2NrOjpVbnJlZ2lzdGVyQ2FsbFJlYWN0aW9uKAotICAgICAgICBpbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTmljZU1vY2spOwotfTsKLQotdGVtcGxhdGUg
PGNsYXNzIE1vY2tDbGFzcz4KLWNsYXNzIE5hZ2d5TW9jayA6IHB1YmxpYyBNb2NrQ2xhc3Mgewot
IHB1YmxpYzoKLSAgLy8gV2UgZG9uJ3QgZmFjdG9yIG91dCB0aGUgY29uc3RydWN0b3IgYm9keSB0
byBhIGNvbW1vbiBtZXRob2QsIGFzCi0gIC8vIHdlIGhhdmUgdG8gYXZvaWQgYSBwb3NzaWJsZSBj
bGFzaCB3aXRoIG1lbWJlcnMgb2YgTW9ja0NsYXNzLgotICBOYWdneU1vY2soKSB7Ci0gICAgOjp0
ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICAvLyBDKysgZG9lc24n
dCAoeWV0KSBhbGxvdyBpbmhlcml0YW5jZSBvZiBjb25zdHJ1Y3RvcnMsIHNvIHdlIGhhdmUKLSAg
Ly8gdG8gZGVmaW5lIGl0IGZvciBlYWNoIGFyaXR5LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTE+
Ci0gIGV4cGxpY2l0IE5hZ2d5TW9jayhjb25zdCBBMSYgYTEpIDogTW9ja0NsYXNzKGExKSB7Ci0g
ICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRl
cm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgTmFnZ3lNb2NrKGNvbnN0IEExJiBhMSwgY29u
c3QgQTImIGEyKSA6IE1vY2tDbGFzcyhhMSwgYTIpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldh
cm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1v
Y2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzPgotICBOYWdneU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYg
YTIsIGNvbnN0IEEzJiBhMykgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMykgewotICAgIDo6dGVzdGlu
Zzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxp
Y2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgotICBOYWdneU1vY2so
Y29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywKLSAgICAgIGNvbnN0IEE0
JiBhNCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6
Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3Rf
PE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTU+Ci0gIE5hZ2d5
TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYg
YTQsCi0gICAgICBjb25zdCBBNSYgYTUpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSkg
ewotICAgIDo6dGVzdGluZzo6TW9jazo6V2FyblVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAg
aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNSwKLSAgICAgIHR5cGVuYW1lIEE2PgotICBOYWdneU1vY2soY29uc3QgQTEm
IGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAotICAgICAgY29u
c3QgQTUmIGE1LCBjb25zdCBBNiYgYTYpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwg
YTYpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAg
ICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBNCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+Ci0gIE5h
Z2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBB
NCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3KSA6
IE1vY2tDbGFzcyhhMSwgYTIsIGEzLCBhNCwgYTUsCi0gICAgICBhNiwgYTcpIHsKLSAgICA6OnRl
c3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVybmFsOjpJ
bXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUg
QTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PgotICBOYWdn
eU1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQm
IGE0LAotICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywgY29u
c3QgQTgmIGE4KSA6IE1vY2tDbGFzcyhhMSwKLSAgICAgIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcs
IGE4KSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKAotICAg
ICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5h
bWUgQTQsIHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBl
bmFtZSBBOCwgdHlwZW5hbWUgQTk+Ci0gIE5hZ2d5TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEy
JiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNv
bnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgsCi0gICAgICBjb25zdCBBOSYg
YTkpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIHsKLSAg
ICA6OnRlc3Rpbmc6Ok1vY2s6Oldhcm5VbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGludGVy
bmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlw
ZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0
eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgotICBOYWdneU1vY2soY29uc3QgQTEmIGExLCBjb25z
dCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAotICAgICAgY29uc3QgQTUmIGE1
LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNywgY29uc3QgQTgmIGE4LCBjb25zdCBBOSYgYTks
Ci0gICAgICBjb25zdCBBMTAmIGExMCkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LCBh
NiwgYTcsIGE4LCBhOSwgYTEwKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpXYXJuVW5pbnRlcmVz
dGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0
aGlzKSk7Ci0gIH0KLQotICB2aXJ0dWFsIH5OYWdneU1vY2soKSB7Ci0gICAgOjp0ZXN0aW5nOjpN
b2NrOjpVbnJlZ2lzdGVyQ2FsbFJlYWN0aW9uKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRD
YXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oTmFnZ3lNb2NrKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBN
b2NrQ2xhc3M+Ci1jbGFzcyBTdHJpY3RNb2NrIDogcHVibGljIE1vY2tDbGFzcyB7Ci0gcHVibGlj
OgotICAvLyBXZSBkb24ndCBmYWN0b3Igb3V0IHRoZSBjb25zdHJ1Y3RvciBib2R5IHRvIGEgY29t
bW9uIG1ldGhvZCwgYXMKLSAgLy8gd2UgaGF2ZSB0byBhdm9pZCBhIHBvc3NpYmxlIGNsYXNoIHdp
dGggbWVtYmVycyBvZiBNb2NrQ2xhc3MuCi0gIFN0cmljdE1vY2soKSB7Ci0gICAgOjp0ZXN0aW5n
OjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGlj
aXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICAvLyBDKysgZG9lc24ndCAoeWV0
KSBhbGxvdyBpbmhlcml0YW5jZSBvZiBjb25zdHJ1Y3RvcnMsIHNvIHdlIGhhdmUKLSAgLy8gdG8g
ZGVmaW5lIGl0IGZvciBlYWNoIGFyaXR5LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTE+Ci0gIGV4
cGxpY2l0IFN0cmljdE1vY2soY29uc3QgQTEmIGExKSA6IE1vY2tDbGFzcyhhMSkgewotICAgIDo6
dGVzdGluZzo6TW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6
OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gIFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBB
MiYgYTIpIDogTW9ja0NsYXNzKGExLCBhMikgewotICAgIDo6dGVzdGluZzo6TW9jazo6RmFpbFVu
aW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0Ns
YXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBB
MiwgdHlwZW5hbWUgQTM+Ci0gIFN0cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIs
IGNvbnN0IEEzJiBhMykgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMykgewotICAgIDo6dGVzdGluZzo6
TW9jazo6RmFpbFVuaW50ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0
Q2FzdF88TW9ja0NsYXNzKj4odGhpcykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0PgotICBTdHJpY3RNb2NrKGNv
bnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsCi0gICAgICBjb25zdCBBNCYg
YTQpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0KSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpG
YWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxN
b2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVu
YW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1PgotICBTdHJpY3RN
b2NrKGNvbnN0IEExJiBhMSwgY29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBh
NCwKLSAgICAgIGNvbnN0IEE1JiBhNSkgOiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1KSB7
Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBp
bnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQs
IHR5cGVuYW1lIEE1LAotICAgICAgdHlwZW5hbWUgQTY+Ci0gIFN0cmljdE1vY2soY29uc3QgQTEm
IGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3QgQTQmIGE0LAotICAgICAgY29u
c3QgQTUmIGE1LCBjb25zdCBBNiYgYTYpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwg
YTYpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAg
ICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBNCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTc+Ci0gIFN0
cmljdE1vY2soY29uc3QgQTEmIGExLCBjb25zdCBBMiYgYTIsIGNvbnN0IEEzJiBhMywgY29uc3Qg
QTQmIGE0LAotICAgICAgY29uc3QgQTUmIGE1LCBjb25zdCBBNiYgYTYsIGNvbnN0IEE3JiBhNykg
OiBNb2NrQ2xhc3MoYTEsIGEyLCBhMywgYTQsIGE1LAotICAgICAgYTYsIGE3KSB7Ci0gICAgOjp0
ZXN0aW5nOjpNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgICBpbnRlcm5hbDo6
SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1l
IEE1LAotICAgICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBBOD4KLSAgU3Ry
aWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBB
NCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUsIGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBj
b25zdCBBOCYgYTgpIDogTW9ja0NsYXNzKGExLAotICAgICAgYTIsIGEzLCBhNCwgYTUsIGE2LCBh
NywgYTgpIHsKLSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0g
ICAgICAgIGludGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBl
bmFtZSBBNCwgdHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5
cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4KLSAgU3RyaWN0TW9jayhjb25zdCBBMSYgYTEsIGNvbnN0
IEEyJiBhMiwgY29uc3QgQTMmIGEzLCBjb25zdCBBNCYgYTQsCi0gICAgICBjb25zdCBBNSYgYTUs
IGNvbnN0IEE2JiBhNiwgY29uc3QgQTcmIGE3LCBjb25zdCBBOCYgYTgsCi0gICAgICBjb25zdCBB
OSYgYTkpIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIHsK
LSAgICA6OnRlc3Rpbmc6Ok1vY2s6OkZhaWxVbmludGVyZXN0aW5nQ2FsbHMoCi0gICAgICAgIGlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwg
dHlwZW5hbWUgQTUsCi0gICAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4
LCB0eXBlbmFtZSBBOSwgdHlwZW5hbWUgQTEwPgotICBTdHJpY3RNb2NrKGNvbnN0IEExJiBhMSwg
Y29uc3QgQTImIGEyLCBjb25zdCBBMyYgYTMsIGNvbnN0IEE0JiBhNCwKLSAgICAgIGNvbnN0IEE1
JiBhNSwgY29uc3QgQTYmIGE2LCBjb25zdCBBNyYgYTcsIGNvbnN0IEE4JiBhOCwgY29uc3QgQTkm
IGE5LAotICAgICAgY29uc3QgQTEwJiBhMTApIDogTW9ja0NsYXNzKGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhOCwgYTksIGExMCkgewotICAgIDo6dGVzdGluZzo6TW9jazo6RmFpbFVuaW50
ZXJlc3RpbmdDYWxscygKLSAgICAgICAgaW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88TW9ja0NsYXNz
Kj4odGhpcykpOwotICB9Ci0KLSAgdmlydHVhbCB+U3RyaWN0TW9jaygpIHsKLSAgICA6OnRlc3Rp
bmc6Ok1vY2s6OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24oCi0gICAgICAgIGludGVybmFsOjpJbXBs
aWNpdENhc3RfPE1vY2tDbGFzcyo+KHRoaXMpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJpY3RNb2NrKTsKLX07Ci0KLS8vIFRoZSBmb2xs
b3dpbmcgc3BlY2lhbGl6YXRpb25zIGNhdGNoIHNvbWUgKHJlbGF0aXZlbHkgbW9yZSBjb21tb24p
Ci0vLyB1c2VyIGVycm9ycyBvZiBuZXN0aW5nIG5pY2UgYW5kIHN0cmljdCBtb2Nrcy4gIFRoZXkg
ZG8gTk9UIGNhdGNoCi0vLyBhbGwgcG9zc2libGUgZXJyb3JzLgotCi0vLyBUaGVzZSBzcGVjaWFs
aXphdGlvbnMgYXJlIGRlY2xhcmVkIGJ1dCBub3QgZGVmaW5lZCwgYXMgTmljZU1vY2ssCi0vLyBO
YWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrIGNhbm5vdCBiZSBuZXN0ZWQuCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOaWNlTW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmljZU1vY2s8TmFnZ3lNb2Nr
PE1vY2tDbGFzcz4gPjsKLXRlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOaWNl
TW9jazxTdHJpY3RNb2NrPE1vY2tDbGFzcz4gPjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tD
bGFzcz4KLWNsYXNzIE5hZ2d5TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmFnZ3lNb2NrPE5hZ2d5TW9jazxNb2NrQ2xhc3M+
ID47Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmFnZ3lNb2NrPFN0cmlj
dE1vY2s8TW9ja0NsYXNzPiA+OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xh
c3MgU3RyaWN0TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
TW9ja0NsYXNzPgotY2xhc3MgU3RyaWN0TW9jazxOYWdneU1vY2s8TW9ja0NsYXNzPiA+OwotdGVt
cGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIFN0cmljdE1vY2s8U3RyaWN0TW9jazxN
b2NrQ2xhc3M+ID47Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR01P
Q0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTklDRV9TVFJJQ1RfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLW5pY2Utc3RyaWN0
LmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stZ2VuZXJhdGVkLW5pY2Ut
c3RyaWN0LmgucHVtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VlMWNlN2YzMDk1
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1nZW5l
cmF0ZWQtbmljZS1zdHJpY3QuaC5wdW1wCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAK
LSQkIC0qLSBtb2RlOiBjKys7IC0qLQotJCQgVGhpcyBpcyBhIFB1bXAgc291cmNlIGZpbGUuICBQ
bGVhc2UgdXNlIFB1bXAgdG8gY29udmVydCBpdCB0bwotJCQgZ21vY2stZ2VuZXJhdGVkLW5pY2Ut
c3RyaWN0LmguCi0kJAotJHZhciBuID0gMTAgICQkIFRoZSBtYXhpbXVtIGFyaXR5IHdlIHN1cHBv
cnQuCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBJbXBsZW1lbnRzIGNs
YXNzIHRlbXBsYXRlcyBOaWNlTW9jaywgTmFnZ3lNb2NrLCBhbmQgU3RyaWN0TW9jay4KLS8vCi0v
LyBHaXZlbiBhIG1vY2sgY2xhc3MgTW9ja0ZvbyB0aGF0IGlzIGNyZWF0ZWQgdXNpbmcgR29vZ2xl
IE1vY2ssCi0vLyBOaWNlTW9jazxNb2NrRm9vPiBpcyBhIHN1YmNsYXNzIG9mIE1vY2tGb28gdGhh
dCBhbGxvd3MKLS8vIHVuaW50ZXJlc3RpbmcgY2FsbHMgKGkuZS4gY2FsbHMgdG8gbW9jayBtZXRo
b2RzIHRoYXQgaGF2ZSBubwotLy8gRVhQRUNUX0NBTEwgc3BlY3MpLCBOYWdneU1vY2s8TW9ja0Zv
bz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vCi0vLyB0aGF0IHByaW50cyBhIHdhcm5pbmcgd2hl
biBhbiB1bmludGVyZXN0aW5nIGNhbGwgb2NjdXJzLCBhbmQKLS8vIFN0cmljdE1vY2s8TW9ja0Zv
bz4gaXMgYSBzdWJjbGFzcyBvZiBNb2NrRm9vIHRoYXQgdHJlYXRzIGFsbAotLy8gdW5pbnRlcmVz
dGluZyBjYWxscyBhcyBlcnJvcnMuCi0vLwotLy8gQ3VycmVudGx5IGEgbW9jayBpcyBuYWdneSBi
eSBkZWZhdWx0LCBzbyBNb2NrRm9vIGFuZAotLy8gTmFnZ3lNb2NrPE1vY2tGb28+IGJlaGF2ZSBs
aWtlIHRoZSBzYW1lLiAgSG93ZXZlciwgd2Ugd2lsbCBzb29uCi0vLyBzd2l0Y2ggdGhlIGRlZmF1
bHQgYmVoYXZpb3Igb2YgbW9ja3MgdG8gYmUgbmljZSwgYXMgdGhhdCBpbiBnZW5lcmFsCi0vLyBs
ZWFkcyB0byBtb3JlIG1haW50YWluYWJsZSB0ZXN0cy4gIFdoZW4gdGhhdCBoYXBwZW5zLCBNb2Nr
Rm9vIHdpbGwKLS8vIHN0b3AgYmVoYXZpbmcgbGlrZSBOYWdneU1vY2s8TW9ja0Zvbz4gYW5kIHN0
YXJ0IGJlaGF2aW5nIGxpa2UKLS8vIE5pY2VNb2NrPE1vY2tGb28+LgotLy8KLS8vIE5pY2VNb2Nr
LCBOYWdneU1vY2ssIGFuZCBTdHJpY3RNb2NrICJpbmhlcml0IiB0aGUgY29uc3RydWN0b3JzIG9m
Ci0vLyB0aGVpciByZXNwZWN0aXZlIGJhc2UgY2xhc3MsIHdpdGggdXAtdG8gJG4gYXJndW1lbnRz
LiAgVGhlcmVmb3JlCi0vLyB5b3UgY2FuIHdyaXRlIE5pY2VNb2NrPE1vY2tGb28+KDUsICJhIikg
dG8gY29uc3RydWN0IGEgbmljZSBtb2NrCi0vLyB3aGVyZSBNb2NrRm9vIGhhcyBhIGNvbnN0cnVj
dG9yIHRoYXQgYWNjZXB0cyAoaW50LCBjb25zdCBjaGFyKiksCi0vLyBmb3IgZXhhbXBsZS4KLS8v
Ci0vLyBBIGtub3duIGxpbWl0YXRpb24gaXMgdGhhdCBOaWNlTW9jazxNb2NrRm9vPiwgTmFnZ3lN
b2NrPE1vY2tGb28+LAotLy8gYW5kIFN0cmljdE1vY2s8TW9ja0Zvbz4gb25seSB3b3JrcyBmb3Ig
bW9jayBtZXRob2RzIGRlZmluZWQgdXNpbmcKLS8vIHRoZSBNT0NLX01FVEhPRCogZmFtaWx5IG9m
IG1hY3JvcyBESVJFQ1RMWSBpbiB0aGUgTW9ja0ZvbyBjbGFzcy4KLS8vIElmIGEgbW9jayBtZXRo
b2QgaXMgZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3Mgb2YgTW9ja0ZvbywgdGhlICJuaWNlIgotLy8g
b3IgInN0cmljdCIgbW9kaWZpZXIgbWF5IG5vdCBhZmZlY3QgaXQsIGRlcGVuZGluZyBvbiB0aGUg
Y29tcGlsZXIuCi0vLyBJbiBwYXJ0aWN1bGFyLCBuZXN0aW5nIE5pY2VNb2NrLCBOYWdneU1vY2ss
IGFuZCBTdHJpY3RNb2NrIGlzIE5PVAotLy8gc3VwcG9ydGVkLgotLy8KLS8vIEFub3RoZXIga25v
d24gbGltaXRhdGlvbiBpcyB0aGF0IHRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIGJhc2UgbW9jawot
Ly8gY2Fubm90IGhhdmUgYXJndW1lbnRzIHBhc3NlZCBieSBub24tY29uc3QgcmVmZXJlbmNlLCB3
aGljaCBhcmUKLS8vIGJhbm5lZCBieSB0aGUgR29vZ2xlIEMrKyBzdHlsZSBndWlkZSBhbnl3YXku
Ci0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTklDRV9TVFJJ
Q1RfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19HRU5FUkFURURfTklDRV9T
VFJJQ1RfSF8KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaCIKLSNpbmNs
dWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsK
LQotJHJhbmdlIGtpbmQgMC4uMgotJGZvciBraW5kIFtbCi0KLSR2YXIgY2xheno9W1skaWYga2lu
ZD09MCBbW05pY2VNb2NrXV0KLSAgICAgICAgICAgICAkZWxpZiBraW5kPT0xIFtbTmFnZ3lNb2Nr
XV0KLSAgICAgICAgICAgICAkZWxzZSBbW1N0cmljdE1vY2tdXV1dCi0KLSR2YXIgbWV0aG9kPVtb
JGlmIGtpbmQ9PTAgW1tBbGxvd1VuaW50ZXJlc3RpbmdDYWxsc11dCi0gICAgICAgICAgICAgJGVs
aWYga2luZD09MSBbW1dhcm5VbmludGVyZXN0aW5nQ2FsbHNdXQotICAgICAgICAgICAgICRlbHNl
IFtbRmFpbFVuaW50ZXJlc3RpbmdDYWxsc11dXV0KLQotdGVtcGxhdGUgPGNsYXNzIE1vY2tDbGFz
cz4KLWNsYXNzICRjbGF6eiA6IHB1YmxpYyBNb2NrQ2xhc3MgewotIHB1YmxpYzoKLSAgLy8gV2Ug
ZG9uJ3QgZmFjdG9yIG91dCB0aGUgY29uc3RydWN0b3IgYm9keSB0byBhIGNvbW1vbiBtZXRob2Qs
IGFzCi0gIC8vIHdlIGhhdmUgdG8gYXZvaWQgYSBwb3NzaWJsZSBjbGFzaCB3aXRoIG1lbWJlcnMg
b2YgTW9ja0NsYXNzLgotICAkY2xhenooKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjokbWV0aG9k
KAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0g
IH0KLQotICAvLyBDKysgZG9lc24ndCAoeWV0KSBhbGxvdyBpbmhlcml0YW5jZSBvZiBjb25zdHJ1
Y3RvcnMsIHNvIHdlIGhhdmUKLSAgLy8gdG8gZGVmaW5lIGl0IGZvciBlYWNoIGFyaXR5LgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQTE+Ci0gIGV4cGxpY2l0ICRjbGF6eihjb25zdCBBMSYgYTEpIDog
TW9ja0NsYXNzKGExKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjokbWV0aG9kKAotICAgICAgICBp
bnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotJHJhbmdl
IGkgMi4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0gIHRlbXBsYXRlIDwkZm9yIGosIFtb
dHlwZW5hbWUgQSRqXV0+Ci0gICRjbGF6eigkZm9yIGosIFtbY29uc3QgQSRqJiBhJGpdXSkgOiBN
b2NrQ2xhc3MoJGZvciBqLCBbW2Ekal1dKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjokbWV0aG9k
KAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxNb2NrQ2xhc3MqPih0aGlzKSk7Ci0g
IH0KLQotCi1dXQotICB2aXJ0dWFsIH4kY2xhenooKSB7Ci0gICAgOjp0ZXN0aW5nOjpNb2NrOjpV
bnJlZ2lzdGVyQ2FsbFJlYWN0aW9uKAotICAgICAgICBpbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxN
b2NrQ2xhc3MqPih0aGlzKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NP
UFlfQU5EX0FTU0lHTl8oJGNsYXp6KTsKLX07Ci0KLV1dCi0KLS8vIFRoZSBmb2xsb3dpbmcgc3Bl
Y2lhbGl6YXRpb25zIGNhdGNoIHNvbWUgKHJlbGF0aXZlbHkgbW9yZSBjb21tb24pCi0vLyB1c2Vy
IGVycm9ycyBvZiBuZXN0aW5nIG5pY2UgYW5kIHN0cmljdCBtb2Nrcy4gIFRoZXkgZG8gTk9UIGNh
dGNoCi0vLyBhbGwgcG9zc2libGUgZXJyb3JzLgotCi0vLyBUaGVzZSBzcGVjaWFsaXphdGlvbnMg
YXJlIGRlY2xhcmVkIGJ1dCBub3QgZGVmaW5lZCwgYXMgTmljZU1vY2ssCi0vLyBOYWdneU1vY2ss
IGFuZCBTdHJpY3RNb2NrIGNhbm5vdCBiZSBuZXN0ZWQuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBN
b2NrQ2xhc3M+Ci1jbGFzcyBOaWNlTW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmljZU1vY2s8TmFnZ3lNb2NrPE1vY2tDbGFz
cz4gPjsKLXRlbXBsYXRlIDx0eXBlbmFtZSBNb2NrQ2xhc3M+Ci1jbGFzcyBOaWNlTW9jazxTdHJp
Y3RNb2NrPE1vY2tDbGFzcz4gPjsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE1vY2tDbGFzcz4KLWNs
YXNzIE5hZ2d5TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0ZSA8dHlwZW5hbWUg
TW9ja0NsYXNzPgotY2xhc3MgTmFnZ3lNb2NrPE5hZ2d5TW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgTmFnZ3lNb2NrPFN0cmljdE1vY2s8TW9j
a0NsYXNzPiA+OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNzPgotY2xhc3MgU3RyaWN0
TW9jazxOaWNlTW9jazxNb2NrQ2xhc3M+ID47Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgTW9ja0NsYXNz
PgotY2xhc3MgU3RyaWN0TW9jazxOYWdneU1vY2s8TW9ja0NsYXNzPiA+OwotdGVtcGxhdGUgPHR5
cGVuYW1lIE1vY2tDbGFzcz4KLWNsYXNzIFN0cmljdE1vY2s8U3RyaWN0TW9jazxNb2NrQ2xhc3M+
ID47Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVE
RV9HTU9DS19HTU9DS19HRU5FUkFURURfTklDRV9TVFJJQ1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1
ZGUvZ21vY2svZ21vY2stbWF0Y2hlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWFkZTViNjQ4OGY5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9j
ay9nbW9jay1tYXRjaGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDM5NyArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxl
bWVudHMgc29tZSBjb21tb25seSB1c2VkIGFyZ3VtZW50IG1hdGNoZXJzLiAgTW9yZQotLy8gbWF0
Y2hlcnMgY2FuIGJlIGRlZmluZWQgYnkgdGhlIHVzZXIgaW1wbGVtZW50aW5nIHRoZQotLy8gTWF0
Y2hlckludGVyZmFjZTxUPiBpbnRlcmZhY2UgaWYgbmVjZXNzYXJ5LgotCi0jaWZuZGVmIEdNT0NL
X0lOQ0xVREVfR01PQ0tfR01PQ0tfTUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9H
TU9DS19HTU9DS19NQVRDSEVSU19IXwotCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPGFs
Z29yaXRobT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVk
ZSA8b3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3Ry
aW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAi
Z21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRlICJnbW9jay9p
bnRlcm5hbC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdU
RVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KLSMgaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlz
dD4gIC8vIE5PTElOVCAtLSBtdXN0IGJlIGFmdGVyIGd0ZXN0LmgKLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgdGVzdGluZyB7Ci0KLS8vIFRvIGltcGxlbWVudCBhIG1hdGNoZXIgRm9vIGZvciB0eXBlIFQs
IGRlZmluZToKLS8vICAgMS4gYSBjbGFzcyBGb29NYXRjaGVySW1wbCB0aGF0IGltcGxlbWVudHMg
dGhlCi0vLyAgICAgIE1hdGNoZXJJbnRlcmZhY2U8VD4gaW50ZXJmYWNlLCBhbmQKLS8vICAgMi4g
YSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIE1hdGNoZXI8VD4gb2JqZWN0IGZyb20g
YQotLy8gICAgICBGb29NYXRjaGVySW1wbCouCi0vLwotLy8gVGhlIHR3by1sZXZlbCBkZWxlZ2F0
aW9uIGRlc2lnbiBtYWtlcyBpdCBwb3NzaWJsZSB0byBhbGxvdyBhIHVzZXIKLS8vIHRvIHdyaXRl
ICJ2IiBpbnN0ZWFkIG9mICJFcSh2KSIgd2hlcmUgYSBNYXRjaGVyIGlzIGV4cGVjdGVkLCB3aGlj
aAotLy8gaXMgaW1wb3NzaWJsZSBpZiB3ZSBwYXNzIG1hdGNoZXJzIGJ5IHBvaW50ZXJzLiAgSXQg
YWxzbyBlYXNlcwotLy8gb3duZXJzaGlwIG1hbmFnZW1lbnQgYXMgTWF0Y2hlciBvYmplY3RzIGNh
biBub3cgYmUgY29waWVkIGxpa2UKLS8vIHBsYWluIHZhbHVlcy4KLQotLy8gTWF0Y2hSZXN1bHRM
aXN0ZW5lciBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gIEl0cyA8PCBvcGVyYXRvciBjYW4gYmUKLS8v
IHVzZWQgYnkgYSBtYXRjaGVyIHRvIGV4cGxhaW4gd2h5IGEgdmFsdWUgbWF0Y2hlcyBvciBkb2Vz
bid0IG1hdGNoLgotLy8KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBhZGQgbWV0aG9kCi0vLyAg
IGJvb2wgSW50ZXJlc3RlZEluV2h5KGJvb2wgcmVzdWx0KSBjb25zdDsKLS8vIHRvIGluZGljYXRl
IHdoZXRoZXIgdGhlIGxpc3RlbmVyIGlzIGludGVyZXN0ZWQgaW4gd2h5IHRoZSBtYXRjaAotLy8g
cmVzdWx0IGlzICdyZXN1bHQnLgotY2xhc3MgTWF0Y2hSZXN1bHRMaXN0ZW5lciB7Ci0gcHVibGlj
OgotICAvLyBDcmVhdGVzIGEgbGlzdGVuZXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHVuZGVybHlp
bmcgb3N0cmVhbS4gIFRoZQotICAvLyBsaXN0ZW5lciBkb2VzIG5vdCBvd24gdGhlIG9zdHJlYW0s
IGFuZCBkb2VzIG5vdCBkZXJlZmVyZW5jZSBpdAotICAvLyBpbiB0aGUgY29uc3RydWN0b3Igb3Ig
ZGVzdHJ1Y3Rvci4KLSAgZXhwbGljaXQgTWF0Y2hSZXN1bHRMaXN0ZW5lcig6OnN0ZDo6b3N0cmVh
bSogb3MpIDogc3RyZWFtXyhvcykge30KLSAgdmlydHVhbCB+TWF0Y2hSZXN1bHRMaXN0ZW5lcigp
ID0gMDsgIC8vIE1ha2VzIHRoaXMgY2xhc3MgYWJzdHJhY3QuCi0KLSAgLy8gU3RyZWFtcyB4IHRv
IHRoZSB1bmRlcmx5aW5nIG9zdHJlYW07IGRvZXMgbm90aGluZyBpZiB0aGUgb3N0cmVhbQotICAv
LyBpcyBOVUxMLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgTWF0Y2hSZXN1bHRMaXN0ZW5l
ciYgb3BlcmF0b3I8PChjb25zdCBUJiB4KSB7Ci0gICAgaWYgKHN0cmVhbV8gIT0gTlVMTCkKLSAg
ICAgICpzdHJlYW1fIDw8IHg7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgdW5kZXJseWluZyBvc3RyZWFtLgotICA6OnN0ZDo6b3N0cmVhbSogc3RyZWFtKCkgeyBy
ZXR1cm4gc3RyZWFtXzsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGxpc3RlbmVyIGlz
IGludGVyZXN0ZWQgaW4gYW4gZXhwbGFuYXRpb24gb2YKLSAgLy8gdGhlIG1hdGNoIHJlc3VsdC4g
IEEgbWF0Y2hlcidzIE1hdGNoQW5kRXhwbGFpbigpIG1ldGhvZCBjYW4gdXNlCi0gIC8vIHRoaXMg
aW5mb3JtYXRpb24gdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgZXhwbGFuYXRpb24gd2hlbiBubyBv
bmUKLSAgLy8gaW50ZW5kcyB0byBoZWFyIGl0LgotICBib29sIElzSW50ZXJlc3RlZCgpIGNvbnN0
IHsgcmV0dXJuIHN0cmVhbV8gIT0gTlVMTDsgfQotCi0gcHJpdmF0ZToKLSAgOjpzdGQ6Om9zdHJl
YW0qIGNvbnN0IHN0cmVhbV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhN
YXRjaFJlc3VsdExpc3RlbmVyKTsKLX07Ci0KLWlubGluZSBNYXRjaFJlc3VsdExpc3RlbmVyOjp+
TWF0Y2hSZXN1bHRMaXN0ZW5lcigpIHsKLX0KLQotLy8gQW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFz
cyBvZiB0aGlzIGtub3dzIGhvdyB0byBkZXNjcmliZSBpdHNlbGYgYXMgYQotLy8gbWF0Y2hlci4K
LWNsYXNzIE1hdGNoZXJEZXNjcmliZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+
TWF0Y2hlckRlc2NyaWJlckludGVyZmFjZSgpIHt9Ci0KLSAgLy8gRGVzY3JpYmVzIHRoaXMgbWF0
Y2hlciB0byBhbiBvc3RyZWFtLiAgVGhlIGZ1bmN0aW9uIHNob3VsZCBwcmludAotICAvLyBhIHZl
cmIgcGhyYXNlIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm9wZXJ0eSBhIHZhbHVlIG1hdGNoaW5nIHRo
aXMKLSAgLy8gbWF0Y2hlciBzaG91bGQgaGF2ZS4gIFRoZSBzdWJqZWN0IG9mIHRoZSB2ZXJiIHBo
cmFzZSBpcyB0aGUgdmFsdWUKLSAgLy8gYmVpbmcgbWF0Y2hlZC4gIEZvciBleGFtcGxlLCB0aGUg
RGVzY3JpYmVUbygpIG1ldGhvZCBvZiB0aGUgR3QoNykKLSAgLy8gbWF0Y2hlciBwcmludHMgImlz
IGdyZWF0ZXIgdGhhbiA3Ii4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCA9IDA7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoZSBuZWdhdGlvbiBvZiB0aGlz
IG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4gIEZvcgotICAvLyBleGFtcGxlLCBpZiB0aGUgZGVzY3Jp
cHRpb24gb2YgdGhpcyBtYXRjaGVyIGlzICJpcyBncmVhdGVyIHRoYW4KLSAgLy8gNyIsIHRoZSBu
ZWdhdGVkIGRlc2NyaXB0aW9uIGNvdWxkIGJlICJpcyBub3QgZ3JlYXRlciB0aGFuIDciLgotICAv
LyBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBvdmVycmlkZSB0aGlzIHdoZW4gaW1wbGVtZW50aW5n
Ci0gIC8vIE1hdGNoZXJJbnRlcmZhY2UsIGJ1dCBpdCBpcyBoaWdobHkgYWR2aXNlZCBzbyB0aGF0
IHlvdXIgbWF0Y2hlcgotICAvLyBjYW4gcHJvZHVjZSBnb29kIGVycm9yIG1lc3NhZ2VzLgotICB2
aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qg
ewotICAgICpvcyA8PCAibm90ICgiOwotICAgIERlc2NyaWJlVG8ob3MpOwotICAgICpvcyA8PCAi
KSI7Ci0gIH0KLX07Ci0KLS8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIG1hdGNoZXIuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXJJbnRlcmZhY2UgOiBwdWJsaWMgTWF0Y2hl
ckRlc2NyaWJlckludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRo
ZSBtYXRjaGVyIG1hdGNoZXMgeDsgYWxzbyBleHBsYWlucyB0aGUgbWF0Y2gKLSAgLy8gcmVzdWx0
IHRvICdsaXN0ZW5lcicgaWYgbmVjZXNzYXJ5IChzZWUgdGhlIG5leHQgcGFyYWdyYXBoKSwgaW4K
LSAgLy8gdGhlIGZvcm0gb2YgYSBub24tcmVzdHJpY3RpdmUgcmVsYXRpdmUgY2xhdXNlICgid2hp
Y2ggLi4uIiwKLSAgLy8gIndob3NlIC4uLiIsIGV0YykgdGhhdCBkZXNjcmliZXMgeC4gIEZvciBl
eGFtcGxlLCB0aGUKLSAgLy8gTWF0Y2hBbmRFeHBsYWluKCkgbWV0aG9kIG9mIHRoZSBQb2ludGVl
KC4uLikgbWF0Y2hlciBzaG91bGQKLSAgLy8gZ2VuZXJhdGUgYW4gZXhwbGFuYXRpb24gbGlrZSAi
d2hpY2ggcG9pbnRzIHRvIC4uLiIuCi0gIC8vCi0gIC8vIEltcGxlbWVudGF0aW9ucyBvZiBNYXRj
aEFuZEV4cGxhaW4oKSBzaG91bGQgYWRkIGFuIGV4cGxhbmF0aW9uIG9mCi0gIC8vIHRoZSBtYXRj
aCByZXN1bHQgKmlmIGFuZCBvbmx5IGlmKiB0aGV5IGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKLSAg
Ly8gaW5mb3JtYXRpb24gdGhhdCdzIG5vdCBhbHJlYWR5IHByZXNlbnQgKG9yIG5vdCBvYnZpb3Vz
KSBpbiB0aGUKLSAgLy8gcHJpbnQtb3V0IG9mIHggYW5kIHRoZSBtYXRjaGVyJ3MgZGVzY3JpcHRp
b24uICBXaGV0aGVyIHRoZSBtYXRjaAotICAvLyBzdWNjZWVkcyBpcyBub3QgYSBmYWN0b3IgaW4g
ZGVjaWRpbmcgd2hldGhlciBhbiBleHBsYW5hdGlvbiBpcwotICAvLyBuZWVkZWQsIGFzIHNvbWV0
aW1lcyB0aGUgY2FsbGVyIG5lZWRzIHRvIHByaW50IGEgZmFpbHVyZSBtZXNzYWdlCi0gIC8vIHdo
ZW4gdGhlIG1hdGNoIHN1Y2NlZWRzIChlLmcuIHdoZW4gdGhlIG1hdGNoZXIgaXMgdXNlZCBpbnNp
ZGUKLSAgLy8gTm90KCkpLgotICAvLwotICAvLyBGb3IgZXhhbXBsZSwgYSAiaGFzIGF0IGxlYXN0
IDEwIGVsZW1lbnRzIiBtYXRjaGVyIHNob3VsZCBleHBsYWluCi0gIC8vIHdoYXQgdGhlIGFjdHVh
bCBlbGVtZW50IGNvdW50IGlzLCByZWdhcmRsZXNzIG9mIHRoZSBtYXRjaCByZXN1bHQsCi0gIC8v
IGFzIGl0IGlzIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB0aGUgcmVhZGVyOyBvbiB0aGUgb3RoZXIg
aGFuZCwgYW4KLSAgLy8gImlzIGVtcHR5IiBtYXRjaGVyIHByb2JhYmx5IG9ubHkgbmVlZHMgdG8g
ZXhwbGFpbiB3aGF0IHRoZSBhY3R1YWwKLSAgLy8gc2l6ZSBpcyB3aGVuIHRoZSBtYXRjaCBmYWls
cywgYXMgaXQncyByZWR1bmRhbnQgdG8gc2F5IHRoYXQgdGhlCi0gIC8vIHNpemUgaXMgMCB3aGVu
IHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGJlIGVtcHR5LgotICAvLwotICAvLyBZb3Ug
c2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHdoZW4gZGVmaW5pbmcgYSBuZXcgbWF0Y2hlci4K
LSAgLy8KLSAgLy8gSXQncyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciAoR29vZ2xl
IE1vY2spIHRvIGd1YXJhbnRlZQotICAvLyB0aGF0ICdsaXN0ZW5lcicgaXMgbm90IE5VTEwuICBU
aGlzIGhlbHBzIHRvIHNpbXBsaWZ5IGEgbWF0Y2hlcidzCi0gIC8vIGltcGxlbWVudGF0aW9uIHdo
ZW4gaXQgZG9lc24ndCBjYXJlIGFib3V0IHRoZSBwZXJmb3JtYW5jZSwgYXMgaXQKLSAgLy8gY2Fu
IHRhbGsgdG8gJ2xpc3RlbmVyJyB3aXRob3V0IGNoZWNraW5nIGl0cyB2YWxpZGl0eSBmaXJzdC4K
LSAgLy8gSG93ZXZlciwgaW4gb3JkZXIgdG8gaW1wbGVtZW50IGR1bW15IGxpc3RlbmVycyBlZmZp
Y2llbnRseSwKLSAgLy8gbGlzdGVuZXItPnN0cmVhbSgpIG1heSBiZSBOVUxMLgotICB2aXJ0dWFs
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0ID0gMDsKLQotICAvLyBJbmhlcml0cyB0aGVzZSBtZXRob2RzIGZyb20gTWF0Y2hlckRl
c2NyaWJlckludGVyZmFjZToKLSAgLy8gICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLSAgLy8gICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdh
dGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Q7Ci19OwotCi0vLyBBIG1hdGNoIHJlc3Vs
dCBsaXN0ZW5lciB0aGF0IHN0b3JlcyB0aGUgZXhwbGFuYXRpb24gaW4gYSBzdHJpbmcuCi1jbGFz
cyBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIDogcHVibGljIE1hdGNoUmVzdWx0TGlzdGVuZXIg
ewotIHB1YmxpYzoKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lcigpIDogTWF0Y2hSZXN1bHRM
aXN0ZW5lcigmc3NfKSB7fQotCi0gIC8vIFJldHVybnMgdGhlIGV4cGxhbmF0aW9uIGFjY3VtdWxh
dGVkIHNvIGZhci4KLSAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QgeyByZXR1cm4gc3NfLnN0cigp
OyB9Ci0KLSAgLy8gQ2xlYXJzIHRoZSBleHBsYW5hdGlvbiBhY2N1bXVsYXRlZCBzbyBmYXIuCi0g
IHZvaWQgQ2xlYXIoKSB7IHNzXy5zdHIoIiIpOyB9Ci0KLSBwcml2YXRlOgotICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHNzXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFN0cmlu
Z01hdGNoUmVzdWx0TGlzdGVuZXIpOwotfTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotc3Ry
dWN0IEFueUVxIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7IHJldHVybiBhID09IGI7
IH0KLX07Ci1zdHJ1Y3QgQW55TmUgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUg
Qj4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsgcmV0
dXJuIGEgIT0gYjsgfQotfTsKLXN0cnVjdCBBbnlMdCB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBB
LCB0eXBlbmFtZSBCPgotICBib29sIG9wZXJhdG9yKCkoY29uc3QgQSYgYSwgY29uc3QgQiYgYikg
Y29uc3QgeyByZXR1cm4gYSA8IGI7IH0KLX07Ci1zdHJ1Y3QgQW55R3QgewotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KLSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEEmIGEsIGNv
bnN0IEImIGIpIGNvbnN0IHsgcmV0dXJuIGEgPiBiOyB9Ci19Owotc3RydWN0IEFueUxlIHsKLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25z
dCBBJiBhLCBjb25zdCBCJiBiKSBjb25zdCB7IHJldHVybiBhIDw9IGI7IH0KLX07Ci1zdHJ1Y3Qg
QW55R2UgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4KLSAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IEEmIGEsIGNvbnN0IEImIGIpIGNvbnN0IHsgcmV0dXJuIGEgPj0gYjsgfQot
fTsKLQotLy8gQSBtYXRjaCByZXN1bHQgbGlzdGVuZXIgdGhhdCBpZ25vcmVzIHRoZSBleHBsYW5h
dGlvbi4KLWNsYXNzIER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lciA6IHB1YmxpYyBNYXRjaFJlc3Vs
dExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIER1bW15TWF0Y2hSZXN1bHRMaXN0ZW5lcigpIDogTWF0
Y2hSZXN1bHRMaXN0ZW5lcihOVUxMKSB7fQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhEdW1teU1hdGNoUmVzdWx0TGlzdGVuZXIpOwotfTsKLQotLy8gQSBt
YXRjaCByZXN1bHQgbGlzdGVuZXIgdGhhdCBmb3J3YXJkcyB0aGUgZXhwbGFuYXRpb24gdG8gYSBn
aXZlbgotLy8gb3N0cmVhbS4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgTWF0Y2hS
ZXN1bHRMaXN0ZW5lciBpcwotLy8gdGhhdCB0aGUgZm9ybWVyIGlzIGNvbmNyZXRlLgotY2xhc3Mg
U3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lciA6IHB1YmxpYyBNYXRjaFJlc3VsdExpc3RlbmVyIHsK
LSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIoOjpzdGQ6Om9z
dHJlYW0qIG9zKQotICAgICAgOiBNYXRjaFJlc3VsdExpc3RlbmVyKG9zKSB7fQotCi0gcHJpdmF0
ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1NYXRjaFJlc3VsdExp
c3RlbmVyKTsKLX07Ci0KLS8vIEFuIGludGVybmFsIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgTWF0
Y2hlcjxUPiwgd2hpY2ggd2lsbCBkZXJpdmUKLS8vIGZyb20gaXQuICBXZSBwdXQgZnVuY3Rpb25h
bGl0aWVzIGNvbW1vbiB0byBhbGwgTWF0Y2hlcjxUPgotLy8gc3BlY2lhbGl6YXRpb25zIGhlcmUg
dG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3Mg
TWF0Y2hlckJhc2UgewotIHB1YmxpYzoKLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgbWF0Y2hl
ciBtYXRjaGVzIHg7IGFsc28gZXhwbGFpbnMgdGhlIG1hdGNoCi0gIC8vIHJlc3VsdCB0byAnbGlz
dGVuZXInLgotICBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIq
IGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIGltcGxfLT5NYXRjaEFuZEV4cGxhaW4oeCwg
bGlzdGVuZXIpOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIG1hdGNoZXIgbWF0
Y2hlcyB4LgotICBib29sIE1hdGNoZXMoVCB4KSBjb25zdCB7Ci0gICAgRHVtbXlNYXRjaFJlc3Vs
dExpc3RlbmVyIGR1bW15OwotICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW4oeCwgJmR1bW15KTsK
LSAgfQotCi0gIC8vIERlc2NyaWJlcyB0aGlzIG1hdGNoZXIgdG8gYW4gb3N0cmVhbS4KLSAgdm9p
ZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgeyBpbXBsXy0+RGVzY3JpYmVU
byhvcyk7IH0KLQotICAvLyBEZXNjcmliZXMgdGhlIG5lZ2F0aW9uIG9mIHRoaXMgbWF0Y2hlciB0
byBhbiBvc3RyZWFtLgotICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0IHsKLSAgICBpbXBsXy0+RGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgfQotCi0g
IC8vIEV4cGxhaW5zIHdoeSB4IG1hdGNoZXMsIG9yIGRvZXNuJ3QgbWF0Y2gsIHRoZSBtYXRjaGVy
LgotICB2b2lkIEV4cGxhaW5NYXRjaFJlc3VsdFRvKFQgeCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSBj
b25zdCB7Ci0gICAgU3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcihvcyk7Ci0gICAg
TWF0Y2hBbmRFeHBsYWluKHgsICZsaXN0ZW5lcik7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBk
ZXNjcmliZXIgZm9yIHRoaXMgbWF0Y2hlciBvYmplY3Q7IHJldGFpbnMgb3duZXJzaGlwCi0gIC8v
IG9mIHRoZSBkZXNjcmliZXIsIHdoaWNoIGlzIG9ubHkgZ3VhcmFudGVlZCB0byBiZSBhbGl2ZSB3
aGVuCi0gIC8vIHRoaXMgbWF0Y2hlciBvYmplY3QgaXMgYWxpdmUuCi0gIGNvbnN0IE1hdGNoZXJE
ZXNjcmliZXJJbnRlcmZhY2UqIEdldERlc2NyaWJlcigpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1w
bF8uZ2V0KCk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgTWF0Y2hlckJhc2UoKSB7fQotCi0gIC8v
IENvbnN0cnVjdHMgYSBtYXRjaGVyIGZyb20gaXRzIGltcGxlbWVudGF0aW9uLgotICBleHBsaWNp
dCBNYXRjaGVyQmFzZShjb25zdCBNYXRjaGVySW50ZXJmYWNlPFQ+KiBpbXBsKQotICAgICAgOiBp
bXBsXyhpbXBsKSB7fQotCi0gIHZpcnR1YWwgfk1hdGNoZXJCYXNlKCkge30KLQotIHByaXZhdGU6
Ci0gIC8vIHNoYXJlZF9wdHIgKHV0aWwvZ3RsL3NoYXJlZF9wdHIuaCkgYW5kIGxpbmtlZF9wdHIg
aGF2ZSBzaW1pbGFyCi0gIC8vIGludGVyZmFjZXMuICBUaGUgZm9ybWVyIGR5bmFtaWNhbGx5IGFs
bG9jYXRlcyBhIGNodW5rIG9mIG1lbW9yeQotICAvLyB0byBob2xkIHRoZSByZWZlcmVuY2UgY291
bnQsIHdoaWxlIHRoZSBsYXR0ZXIgdHJhY2tzIGFsbAotICAvLyByZWZlcmVuY2VzIHVzaW5nIGEg
Y2lyY3VsYXIgbGlua2VkIGxpc3Qgd2l0aG91dCBhbGxvY2F0aW5nCi0gIC8vIG1lbW9yeS4gIEl0
IGhhcyBiZWVuIG9ic2VydmVkIHRoYXQgbGlua2VkX3B0ciBwZXJmb3JtcyBiZXR0ZXIgaW4KLSAg
Ly8gdHlwaWNhbCBzY2VuYXJpb3MuICBIb3dldmVyLCBzaGFyZWRfcHRyIGNhbiBvdXQtcGVyZm9y
bQotICAvLyBsaW5rZWRfcHRyIHdoZW4gdGhlcmUgYXJlIG1hbnkgbW9yZSB1c2VzIG9mIHRoZSBj
b3B5IGNvbnN0cnVjdG9yCi0gIC8vIHRoYW4gdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCi0gIC8v
Ci0gIC8vIElmIHBlcmZvcm1hbmNlIGJlY29tZXMgYSBwcm9ibGVtLCB3ZSBzaG91bGQgc2VlIGlm
IHVzaW5nCi0gIC8vIHNoYXJlZF9wdHIgaGVscHMuCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6Omxp
bmtlZF9wdHI8Y29uc3QgTWF0Y2hlckludGVyZmFjZTxUPiA+IGltcGxfOwotfTsKLQotfSAgLy8g
bmFtZXNwYWNlIGludGVybmFsCi0KLS8vIEEgTWF0Y2hlcjxUPiBpcyBhIGNvcHlhYmxlIGFuZCBJ
TU1VVEFCTEUgKGV4Y2VwdCBieSBhc3NpZ25tZW50KQotLy8gb2JqZWN0IHRoYXQgY2FuIGNoZWNr
IHdoZXRoZXIgYSB2YWx1ZSBvZiB0eXBlIFQgbWF0Y2hlcy4gIFRoZQotLy8gaW1wbGVtZW50YXRp
b24gb2YgTWF0Y2hlcjxUPiBpcyBqdXN0IGEgbGlua2VkX3B0ciB0byBjb25zdAotLy8gTWF0Y2hl
ckludGVyZmFjZTxUPiwgc28gY29weWluZyBpcyBmYWlybHkgY2hlYXAuICBEb24ndCBpbmhlcml0
Ci0vLyBmcm9tIE1hdGNoZXIhCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXIg
OiBwdWJsaWMgaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFQ+IHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0
cnVjdHMgYSBudWxsIG1hdGNoZXIuICBOZWVkZWQgZm9yIHN0b3JpbmcgTWF0Y2hlciBvYmplY3Rz
IGluIFNUTAotICAvLyBjb250YWluZXJzLiAgQSBkZWZhdWx0LWNvbnN0cnVjdGVkIG1hdGNoZXIg
aXMgbm90IHlldCBpbml0aWFsaXplZC4gIFlvdQotICAvLyBjYW5ub3QgdXNlIGl0IHVudGlsIGEg
dmFsaWQgdmFsdWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gaXQuCi0gIGV4cGxpY2l0IE1hdGNoZXIo
KSB7fSAgLy8gTk9MSU5UCi0KLSAgLy8gQ29uc3RydWN0cyBhIG1hdGNoZXIgZnJvbSBpdHMgaW1w
bGVtZW50YXRpb24uCi0gIGV4cGxpY2l0IE1hdGNoZXIoY29uc3QgTWF0Y2hlckludGVyZmFjZTxU
PiogaW1wbCkKLSAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFQ+KGltcGwpIHt9Ci0KLSAg
Ly8gSW1wbGljaXQgY29uc3RydWN0b3IgaGVyZSBhbGxvd3MgcGVvcGxlIHRvIHdyaXRlCi0gIC8v
IEVYUEVDVF9DQUxMKGZvbywgQmFyKDUpKSBpbnN0ZWFkIG9mIEVYUEVDVF9DQUxMKGZvbywgQmFy
KEVxKDUpKSkgc29tZXRpbWVzCi0gIE1hdGNoZXIoVCB2YWx1ZSk7ICAvLyBOT0xJTlQKLX07Ci0K
LS8vIFRoZSBmb2xsb3dpbmcgdHdvIHNwZWNpYWxpemF0aW9ucyBhbGxvdyB0aGUgdXNlciB0byB3
cml0ZSBzdHIKLS8vIGluc3RlYWQgb2YgRXEoc3RyKSBhbmQgImZvbyIgaW5zdGVhZCBvZiBFcSgi
Zm9vIikgd2hlbiBhIHN0cmluZwotLy8gbWF0Y2hlciBpcyBleHBlY3RlZC4KLXRlbXBsYXRlIDw+
Ci1jbGFzcyBHVEVTVF9BUElfIE1hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+Ci0gICAg
OiBwdWJsaWMgaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IGludGVybmFsOjpzdHJpbmcmPiB7
Ci0gcHVibGljOgotICBNYXRjaGVyKCkge30KLQotICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1h
dGNoZXJJbnRlcmZhY2U8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+KiBpbXBsKQotICAgICAgOiBp
bnRlcm5hbDo6TWF0Y2hlckJhc2U8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+KGltcGwpIHt9Ci0K
LSAgLy8gQWxsb3dzIHRoZSB1c2VyIHRvIHdyaXRlIHN0ciBpbnN0ZWFkIG9mIEVxKHN0cikgc29t
ZXRpbWVzLCB3aGVyZQotICAvLyBzdHIgaXMgYSBzdHJpbmcgb2JqZWN0LgotICBNYXRjaGVyKGNv
bnN0IGludGVybmFsOjpzdHJpbmcmIHMpOyAgLy8gTk9MSU5UCi0KLSAgLy8gQWxsb3dzIHRoZSB1
c2VyIHRvIHdyaXRlICJmb28iIGluc3RlYWQgb2YgRXEoImZvbyIpIHNvbWV0aW1lcy4KLSAgTWF0
Y2hlcihjb25zdCBjaGFyKiBzKTsgIC8vIE5PTElOVAotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNz
IEdURVNUX0FQSV8gTWF0Y2hlcjxpbnRlcm5hbDo6c3RyaW5nPgotICAgIDogcHVibGljIGludGVy
bmFsOjpNYXRjaGVyQmFzZTxpbnRlcm5hbDo6c3RyaW5nPiB7Ci0gcHVibGljOgotICBNYXRjaGVy
KCkge30KLQotICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8aW50ZXJu
YWw6OnN0cmluZz4qIGltcGwpCi0gICAgICA6IGludGVybmFsOjpNYXRjaGVyQmFzZTxpbnRlcm5h
bDo6c3RyaW5nPihpbXBsKSB7fQotCi0gIC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSBzdHIg
aW5zdGVhZCBvZiBFcShzdHIpIHNvbWV0aW1lcywgd2hlcmUKLSAgLy8gc3RyIGlzIGEgc3RyaW5n
IG9iamVjdC4KLSAgTWF0Y2hlcihjb25zdCBpbnRlcm5hbDo6c3RyaW5nJiBzKTsgIC8vIE5PTElO
VAotCi0gIC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJm
b28iKSBzb21ldGltZXMuCi0gIE1hdGNoZXIoY29uc3QgY2hhciogcyk7ICAvLyBOT0xJTlQKLX07
Ci0KLSNpZiBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXwotLy8gVGhlIGZvbGxvd2luZyB0d28gc3Bl
Y2lhbGl6YXRpb25zIGFsbG93IHRoZSB1c2VyIHRvIHdyaXRlIHN0cgotLy8gaW5zdGVhZCBvZiBF
cShzdHIpIGFuZCAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSB3aGVuIGEgU3RyaW5nUGllY2UK
LS8vIG1hdGNoZXIgaXMgZXhwZWN0ZWQuCi10ZW1wbGF0ZSA8PgotY2xhc3MgR1RFU1RfQVBJXyBN
YXRjaGVyPGNvbnN0IFN0cmluZ1BpZWNlJj4KLSAgICA6IHB1YmxpYyBpbnRlcm5hbDo6TWF0Y2hl
ckJhc2U8Y29uc3QgU3RyaW5nUGllY2UmPiB7Ci0gcHVibGljOgotICBNYXRjaGVyKCkge30KLQot
ICBleHBsaWNpdCBNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8Y29uc3QgU3RyaW5nUGll
Y2UmPiogaW1wbCkKLSAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPGNvbnN0IFN0cmluZ1Bp
ZWNlJj4oaW1wbCkge30KLQotICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgc3RyIGluc3Rl
YWQgb2YgRXEoc3RyKSBzb21ldGltZXMsIHdoZXJlCi0gIC8vIHN0ciBpcyBhIHN0cmluZyBvYmpl
Y3QuCi0gIE1hdGNoZXIoY29uc3QgaW50ZXJuYWw6OnN0cmluZyYgcyk7ICAvLyBOT0xJTlQKLQot
ICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gd3JpdGUgImZvbyIgaW5zdGVhZCBvZiBFcSgiZm9vIikg
c29tZXRpbWVzLgotICBNYXRjaGVyKGNvbnN0IGNoYXIqIHMpOyAgLy8gTk9MSU5UCi0KLSAgLy8g
QWxsb3dzIHRoZSB1c2VyIHRvIHBhc3MgU3RyaW5nUGllY2VzIGRpcmVjdGx5LgotICBNYXRjaGVy
KFN0cmluZ1BpZWNlIHMpOyAgLy8gTk9MSU5UCi19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR1RF
U1RfQVBJXyBNYXRjaGVyPFN0cmluZ1BpZWNlPgotICAgIDogcHVibGljIGludGVybmFsOjpNYXRj
aGVyQmFzZTxTdHJpbmdQaWVjZT4gewotIHB1YmxpYzoKLSAgTWF0Y2hlcigpIHt9Ci0KLSAgZXhw
bGljaXQgTWF0Y2hlcihjb25zdCBNYXRjaGVySW50ZXJmYWNlPFN0cmluZ1BpZWNlPiogaW1wbCkK
LSAgICAgIDogaW50ZXJuYWw6Ok1hdGNoZXJCYXNlPFN0cmluZ1BpZWNlPihpbXBsKSB7fQotCi0g
IC8vIEFsbG93cyB0aGUgdXNlciB0byB3cml0ZSBzdHIgaW5zdGVhZCBvZiBFcShzdHIpIHNvbWV0
aW1lcywgd2hlcmUKLSAgLy8gc3RyIGlzIGEgc3RyaW5nIG9iamVjdC4KLSAgTWF0Y2hlcihjb25z
dCBpbnRlcm5hbDo6c3RyaW5nJiBzKTsgIC8vIE5PTElOVAotCi0gIC8vIEFsbG93cyB0aGUgdXNl
ciB0byB3cml0ZSAiZm9vIiBpbnN0ZWFkIG9mIEVxKCJmb28iKSBzb21ldGltZXMuCi0gIE1hdGNo
ZXIoY29uc3QgY2hhciogcyk7ICAvLyBOT0xJTlQKLQotICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8g
cGFzcyBTdHJpbmdQaWVjZXMgZGlyZWN0bHkuCi0gIE1hdGNoZXIoU3RyaW5nUGllY2Ugcyk7ICAv
LyBOT0xJTlQKLX07Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCi0KLS8vIFRo
ZSBQb2x5bW9ycGhpY01hdGNoZXIgY2xhc3MgdGVtcGxhdGUgbWFrZXMgaXQgZWFzeSB0byBpbXBs
ZW1lbnQgYQotLy8gcG9seW1vcnBoaWMgbWF0Y2hlciAoaS5lLiBhIG1hdGNoZXIgdGhhdCBjYW4g
bWF0Y2ggdmFsdWVzIG9mIG1vcmUKLS8vIHRoYW4gb25lIHR5cGUsIGUuZy4gRXEobikgYW5kIE5v
dE51bGwoKSkuCi0vLwotLy8gVG8gZGVmaW5lIGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgYSB1c2Vy
IHNob3VsZCBwcm92aWRlIGFuIEltcGwKLS8vIGNsYXNzIHRoYXQgaGFzIGEgRGVzY3JpYmVUbygp
IG1ldGhvZCBhbmQgYSBEZXNjcmliZU5lZ2F0aW9uVG8oKQotLy8gbWV0aG9kLCBhbmQgZGVmaW5l
IGEgbWVtYmVyIGZ1bmN0aW9uIChvciBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGUpCi0vLwotLy8g
ICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBWYWx1ZSYgdmFsdWUsCi0vLyAgICAgICAgICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdDsKLS8vCi0v
LyBTZWUgdGhlIGRlZmluaXRpb24gb2YgTm90TnVsbCgpIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUu
Ci10ZW1wbGF0ZSA8Y2xhc3MgSW1wbD4KLWNsYXNzIFBvbHltb3JwaGljTWF0Y2hlciB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBQb2x5bW9ycGhpY01hdGNoZXIoY29uc3QgSW1wbCYgYW5faW1wbCkg
OiBpbXBsXyhhbl9pbXBsKSB7fQotCi0gIC8vIFJldHVybnMgYSBtdXRhYmxlIHJlZmVyZW5jZSB0
byB0aGUgdW5kZXJseWluZyBtYXRjaGVyCi0gIC8vIGltcGxlbWVudGF0aW9uIG9iamVjdC4KLSAg
SW1wbCYgbXV0YWJsZV9pbXBsKCkgeyByZXR1cm4gaW1wbF87IH0KLQotICAvLyBSZXR1cm5zIGFu
IGltbXV0YWJsZSByZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgbWF0Y2hlcgotICAvLyBpbXBs
ZW1lbnRhdGlvbiBvYmplY3QuCi0gIGNvbnN0IEltcGwmIGltcGwoKSBjb25zdCB7IHJldHVybiBp
bXBsXzsgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+
KCkgY29uc3QgewotICAgIHJldHVybiBNYXRjaGVyPFQ+KG5ldyBNb25vbW9ycGhpY0ltcGw8VD4o
aW1wbF8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGNs
YXNzIE1vbm9tb3JwaGljSW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPFQ+IHsKLSAgIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBNb25vbW9ycGhpY0ltcGwoY29uc3QgSW1wbCYgaW1wbCkgOiBp
bXBsXyhpbXBsKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7Ci0gICAgICBpbXBsXy5EZXNjcmliZVRvKG9zKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29u
c3QgewotICAgICAgaW1wbF8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlz
dGVuZXIpIGNvbnN0IHsKLSAgICAgIHJldHVybiBpbXBsXy5NYXRjaEFuZEV4cGxhaW4oeCwgbGlz
dGVuZXIpOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBJbXBsIGltcGxfOwotCi0g
ICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhNb25vbW9ycGhpY0ltcGwpOwotICB9OwotCi0gIElt
cGwgaW1wbF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhQb2x5bW9ycGhpY01hdGNoZXIp
OwotfTsKLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgZnJvbSBpdHMgaW1wbGVtZW50YXRpb24uICBU
aGlzIGlzIGVhc2llciB0byB1c2UKLS8vIHRoYW4gdGhlIE1hdGNoZXI8VD4gY29uc3RydWN0b3Ig
YXMgaXQgZG9lc24ndCByZXF1aXJlIHlvdSB0bwotLy8gZXhwbGljaXRseSB3cml0ZSB0aGUgdGVt
cGxhdGUgYXJndW1lbnQsIGUuZy4KLS8vCi0vLyAgIE1ha2VNYXRjaGVyKGZvbyk7Ci0vLyB2cwot
Ly8gICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+KGZvbyk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LWlubGluZSBNYXRjaGVyPFQ+IE1ha2VNYXRjaGVyKGNvbnN0IE1hdGNoZXJJbnRlcmZhY2U8VD4q
IGltcGwpIHsKLSAgcmV0dXJuIE1hdGNoZXI8VD4oaW1wbCk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyIGZyb20gaXRzIGltcGxlbWVudGF0aW9uLiAgVGhpcyBpcwotLy8g
ZWFzaWVyIHRvIHVzZSB0aGFuIHRoZSBQb2x5bW9ycGhpY01hdGNoZXI8SW1wbD4gY29uc3RydWN0
b3IgYXMgaXQKLS8vIGRvZXNuJ3QgcmVxdWlyZSB5b3UgdG8gZXhwbGljaXRseSB3cml0ZSB0aGUg
dGVtcGxhdGUgYXJndW1lbnQsIGUuZy4KLS8vCi0vLyAgIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIo
Zm9vKTsKLS8vIHZzCi0vLyAgIFBvbHltb3JwaGljTWF0Y2hlcjxUeXBlT2ZGb28+KGZvbyk7Ci10
ZW1wbGF0ZSA8Y2xhc3MgSW1wbD4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8SW1wbD4gTWFr
ZVBvbHltb3JwaGljTWF0Y2hlcihjb25zdCBJbXBsJiBpbXBsKSB7Ci0gIHJldHVybiBQb2x5bW9y
cGhpY01hdGNoZXI8SW1wbD4oaW1wbCk7Ci19Ci0KLS8vIEFueXRoaW5nIGluc2lkZSB0aGUgJ2lu
dGVybmFsJyBuYW1lc3BhY2UgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04KLS8vIGFuZCBNVVNU
IE5PVCBCRSBVU0VEIElOIFVTRVIgQ09ERSEhIQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8g
VGhlIE1hdGNoZXJDYXN0SW1wbCBjbGFzcyB0ZW1wbGF0ZSBpcyBhIGhlbHBlciBmb3IgaW1wbGVt
ZW50aW5nCi0vLyBNYXRjaGVyQ2FzdCgpLiAgV2UgbmVlZCB0aGlzIGhlbHBlciBpbiBvcmRlciB0
byBwYXJ0aWFsbHkKLS8vIHNwZWNpYWxpemUgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1hdGNoZXJD
YXN0KCkgKEMrKyBhbGxvd3MKLS8vIGNsYXNzL3N0cnVjdCB0ZW1wbGF0ZXMgdG8gYmUgcGFydGlh
bGx5IHNwZWNpYWxpemVkLCBidXQgbm90Ci0vLyBmdW5jdGlvbiB0ZW1wbGF0ZXMuKS4KLQotLy8g
VGhpcyBnZW5lcmFsIHZlcnNpb24gaXMgdXNlZCB3aGVuIE1hdGNoZXJDYXN0KCkncyBhcmd1bWVu
dCBpcyBhCi0vLyBwb2x5bW9ycGhpYyBtYXRjaGVyIChpLmUuIHNvbWV0aGluZyB0aGF0IGNhbiBi
ZSBjb252ZXJ0ZWQgdG8gYQotLy8gTWF0Y2hlciBidXQgaXMgbm90IG9uZSB5ZXQ7IGZvciBleGFt
cGxlLCBFcSh2YWx1ZSkpIG9yIGEgdmFsdWUgKGZvcgotLy8gZXhhbXBsZSwgImhlbGxvIikuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTT4KLWNsYXNzIE1hdGNoZXJDYXN0SW1wbCB7
Ci0gcHVibGljOgotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0KGNvbnN0IE0mIHBvbHltb3JwaGlj
X21hdGNoZXJfb3JfdmFsdWUpIHsKLSAgICAvLyBNIGNhbiBiZSBhIHBvbHltb3JoaWMgbWF0Y2hl
ciwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIHVzZQotICAgIC8vIGl0cyBjb252ZXJzaW9uIG9w
ZXJhdG9yIHRvIGNyZWF0ZSBNYXRjaGVyPFQ+LiAgT3IgaXQgY2FuIGJlIGEgdmFsdWUKLSAgICAv
LyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIE1hdGNoZXI8VD4ncyBjb25zdHJ1Y3Rvci4K
LSAgICAvLwotICAgIC8vIFdlIGNhbid0IGNhbGwgTWF0Y2hlcjxUPihwb2x5bW9ycGhpY19tYXRj
aGVyX29yX3ZhbHVlKSB3aGVuIE0gaXMgYQotICAgIC8vIHBvbHltb3JwaGljIG1hdGNoZXIgYmVj
YXVzZSBpdCdsbCBiZSBhbWJpZ3VvdXMgaWYgVCBoYXMgYW4gaW1wbGljaXQKLSAgICAvLyBjb25z
dHJ1Y3RvciBmcm9tIE0gKHRoaXMgdXN1YWxseSBoYXBwZW5zIHdoZW4gVCBoYXMgYW4gaW1wbGlj
aXQKLSAgICAvLyBjb25zdHJ1Y3RvciBmcm9tIGFueSB0eXBlKS4KLSAgICAvLwotICAgIC8vIEl0
IHdvbid0IHdvcmsgdG8gdW5jb25kaXRpb25hbGx5IGltcGxpY3RfY2FzdAotICAgIC8vIHBvbHlt
b3JwaGljX21hdGNoZXJfb3JfdmFsdWUgdG8gTWF0Y2hlcjxUPiBiZWNhdXNlIGl0IHdvbid0IHRy
aWdnZXIKLSAgICAvLyBhIHVzZXItZGVmaW5lZCBjb252ZXJzaW9uIGZyb20gTSB0byBUIGlmIG9u
ZSBleGlzdHMgKGFzc3VtaW5nIE0gaXMKLSAgICAvLyBhIHZhbHVlKS4KLSAgICByZXR1cm4gQ2Fz
dEltcGwoCi0gICAgICAgIHBvbHltb3JwaGljX21hdGNoZXJfb3JfdmFsdWUsCi0gICAgICAgIEJv
b2xlYW5Db25zdGFudDwKLSAgICAgICAgICAgIGludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGli
bGU8TSwgTWF0Y2hlcjxUPiA+Ojp2YWx1ZT4oKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRp
YyBNYXRjaGVyPFQ+IENhc3RJbXBsKGNvbnN0IE0mIHZhbHVlLCBCb29sZWFuQ29uc3RhbnQ8ZmFs
c2U+KSB7Ci0gICAgLy8gTSBjYW4ndCBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBNYXRjaGVy
PFQ+LCBzbyBNIGlzbid0IGEgcG9seW1vcnBoaWMKLSAgICAvLyBtYXRjaGVyLiAgSXQgbXVzdCBi
ZSBhIHZhbHVlIHRoZW4uICBVc2UgZGlyZWN0IGluaXRpYWxpemF0aW9uIHRvIGNyZWF0ZQotICAg
IC8vIGEgbWF0Y2hlci4KLSAgICByZXR1cm4gTWF0Y2hlcjxUPihJbXBsaWNpdENhc3RfPFQ+KHZh
bHVlKSk7Ci0gIH0KLQotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0SW1wbChjb25zdCBNJiBwb2x5
bW9ycGhpY19tYXRjaGVyX29yX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
b29sZWFuQ29uc3RhbnQ8dHJ1ZT4pIHsKLSAgICAvLyBNIGlzIGltcGxpY2l0bHkgY29udmVydGli
bGUgdG8gTWF0Y2hlcjxUPiwgd2hpY2ggbWVhbnMgdGhhdCBlaXRoZXIKLSAgICAvLyBNIGlzIGEg
cG9seW1vcmhwaWMgbWF0Y2hlciBvciBNYXRjaGVyPFQ+IGhhcyBhbiBpbXBsaWNpdCBjb25zdHJ1
Y3RvcgotICAgIC8vIGZyb20gTS4gIEluIGJvdGggY2FzZXMgdXNpbmcgdGhlIGltcGxpY2l0IGNv
bnZlcnNpb24gd2lsbCBwcm9kdWNlIGEKLSAgICAvLyBtYXRjaGVyLgotICAgIC8vCi0gICAgLy8g
RXZlbiBpZiBUIGhhcyBhbiBpbXBsaWNpdCBjb25zdHJ1Y3RvciBmcm9tIE0sIGl0IHdvbid0IGJl
IGNhbGxlZCBiZWNhdXNlCi0gICAgLy8gY3JlYXRpbmcgTWF0Y2hlcjxUPiB3b3VsZCByZXF1aXJl
IGEgY2hhaW4gb2YgdHdvIHVzZXItZGVmaW5lZCBjb252ZXJzaW9ucwotICAgIC8vIChmaXJzdCB0
byBjcmVhdGUgVCBmcm9tIE0gYW5kIHRoZW4gdG8gY3JlYXRlIE1hdGNoZXI8VD4gZnJvbSBUKS4K
LSAgICByZXR1cm4gcG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZTsKLSAgfQotfTsKLQotLy8g
VGhpcyBtb3JlIHNwZWNpYWxpemVkIHZlcnNpb24gaXMgdXNlZCB3aGVuIE1hdGNoZXJDYXN0KCkn
cyBhcmd1bWVudAotLy8gaXMgYWxyZWFkeSBhIE1hdGNoZXIuICBUaGlzIG9ubHkgY29tcGlsZXMg
d2hlbiB0eXBlIFQgY2FuIGJlCi0vLyBzdGF0aWNhbGx5IGNvbnZlcnRlZCB0byB0eXBlIFUuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWNsYXNzIE1hdGNoZXJDYXN0SW1wbDxU
LCBNYXRjaGVyPFU+ID4gewotIHB1YmxpYzoKLSAgc3RhdGljIE1hdGNoZXI8VD4gQ2FzdChjb25z
dCBNYXRjaGVyPFU+JiBzb3VyY2VfbWF0Y2hlcikgewotICAgIHJldHVybiBNYXRjaGVyPFQ+KG5l
dyBJbXBsKHNvdXJjZV9tYXRjaGVyKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEltcGwg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
SW1wbChjb25zdCBNYXRjaGVyPFU+JiBzb3VyY2VfbWF0Y2hlcikKLSAgICAgICAgOiBzb3VyY2Vf
bWF0Y2hlcl8oc291cmNlX21hdGNoZXIpIHt9Ci0KLSAgICAvLyBXZSBkZWxlZ2F0ZSB0aGUgbWF0
Y2hpbmcgbG9naWMgdG8gdGhlIHNvdXJjZSBtYXRjaGVyLgotICAgIHZpcnR1YWwgYm9vbCBNYXRj
aEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qgewot
ICAgICAgcmV0dXJuIHNvdXJjZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oc3RhdGljX2Nhc3Q8
VT4oeCksIGxpc3RlbmVyKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgIHNvdXJjZV9tYXRjaGVyXy5EZXNjcmli
ZVRvKG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgc291cmNlX21hdGNoZXJfLkRlc2NyaWJl
TmVnYXRpb25Ubyhvcyk7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIGNvbnN0IE1hdGNoZXI8
VT4gc291cmNlX21hdGNoZXJfOwotCi0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsK
LSAgfTsKLX07Ci0KLS8vIFRoaXMgZXZlbiBtb3JlIHNwZWNpYWxpemVkIHZlcnNpb24gaXMgdXNl
ZCBmb3IgZWZmaWNpZW50bHkgY2FzdGluZwotLy8gYSBtYXRjaGVyIHRvIGl0cyBvd24gdHlwZS4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTWF0Y2hlckNhc3RJbXBsPFQsIE1hdGNoZXI8
VD4gPiB7Ci0gcHVibGljOgotICBzdGF0aWMgTWF0Y2hlcjxUPiBDYXN0KGNvbnN0IE1hdGNoZXI8
VD4mIG1hdGNoZXIpIHsgcmV0dXJuIG1hdGNoZXI7IH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotCi0vLyBJbiBvcmRlciB0byBiZSBzYWZlIGFuZCBjbGVhciwgY2FzdGluZyBiZXR3
ZWVuIGRpZmZlcmVudCBtYXRjaGVyCi0vLyB0eXBlcyBpcyBkb25lIGV4cGxpY2l0bHkgdmlhIE1h
dGNoZXJDYXN0PFQ+KG0pLCB3aGljaCB0YWtlcyBhCi0vLyBtYXRjaGVyIG0gYW5kIHJldHVybnMg
YSBNYXRjaGVyPFQ+LiAgSXQgY29tcGlsZXMgb25seSB3aGVuIFQgY2FuIGJlCi0vLyBzdGF0aWNh
bGx5IGNvbnZlcnRlZCB0byB0aGUgYXJndW1lbnQgdHlwZSBvZiBtLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIE0+Ci1pbmxpbmUgTWF0Y2hlcjxUPiBNYXRjaGVyQ2FzdChjb25zdCBN
JiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TWF0Y2hlckNhc3RJbXBsPFQsIE0+OjpD
YXN0KG1hdGNoZXIpOwotfQotCi0vLyBJbXBsZW1lbnRzIFNhZmVNYXRjaGVyQ2FzdCgpLgotLy8K
LS8vIFdlIHVzZSBhbiBpbnRlcm1lZGlhdGUgY2xhc3MgdG8gZG8gdGhlIGFjdHVhbCBzYWZlIGNh
c3RpbmcgYXMgTm9raWEncwotLy8gU3ltYmlhbiBjb21waWxlciBjYW5ub3QgZGVjaWRlIGJldHdl
ZW4KLS8vIHRlbXBsYXRlIDxULCBNPiAuLi4gKE0pIGFuZAotLy8gdGVtcGxhdGUgPFQsIFU+IC4u
LiAoY29uc3QgTWF0Y2hlcjxVPiYpCi0vLyBmb3IgZnVuY3Rpb24gdGVtcGxhdGVzIGJ1dCBjYW4g
Zm9yIG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFNhZmVNYXRjaGVyQ2FzdEltcGwgewotIHB1YmxpYzoKLSAgLy8gVGhpcyBvdmVybG9hZCBo
YW5kbGVzIHBvbHltb3JwaGljIG1hdGNoZXJzIGFuZCB2YWx1ZXMgb25seSBzaW5jZQotICAvLyBt
b25vbW9ycGhpYyBtYXRjaGVycyBhcmUgaGFuZGxlZCBieSB0aGUgbmV4dCBvbmUuCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBNPgotICBzdGF0aWMgaW5saW5lIE1hdGNoZXI8VD4gQ2FzdChjb25zdCBN
JiBwb2x5bW9ycGhpY19tYXRjaGVyX29yX3ZhbHVlKSB7Ci0gICAgcmV0dXJuIGludGVybmFsOjpN
YXRjaGVyQ2FzdEltcGw8VCwgTT46OkNhc3QocG9seW1vcnBoaWNfbWF0Y2hlcl9vcl92YWx1ZSk7
Ci0gIH0KLQotICAvLyBUaGlzIG92ZXJsb2FkIGhhbmRsZXMgbW9ub21vcnBoaWMgbWF0Y2hlcnMu
Ci0gIC8vCi0gIC8vIEluIGdlbmVyYWwsIGlmIHR5cGUgVCBjYW4gYmUgaW1wbGljaXRseSBjb252
ZXJ0ZWQgdG8gdHlwZSBVLCB3ZSBjYW4KLSAgLy8gc2FmZWx5IGNvbnZlcnQgYSBNYXRjaGVyPFU+
IHRvIGEgTWF0Y2hlcjxUPiAoaS5lLiBNYXRjaGVyIGlzCi0gIC8vIGNvbnRyYXZhcmlhbnQpOiBq
dXN0IGtlZXAgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBNYXRjaGVyPFU+LCBjb252ZXJ0IHRoZQot
ICAvLyBhcmd1bWVudCBmcm9tIHR5cGUgVCB0byBVLCBhbmQgdGhlbiBwYXNzIGl0IHRvIHRoZSB1
bmRlcmx5aW5nIE1hdGNoZXI8VT4uCi0gIC8vIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuIFUg
aXMgYSByZWZlcmVuY2UgYW5kIFQgaXMgbm90LCBhcyB0aGUKLSAgLy8gdW5kZXJseWluZyBNYXRj
aGVyPFU+IG1heSBiZSBpbnRlcmVzdGVkIGluIHRoZSBhcmd1bWVudCdzIGFkZHJlc3MsIHdoaWNo
Ci0gIC8vIGlzIG5vdCBwcmVzZXJ2ZWQgaW4gdGhlIGNvbnZlcnNpb24gZnJvbSBUIHRvIFUuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBVPgotICBzdGF0aWMgaW5saW5lIE1hdGNoZXI8VD4gQ2FzdChj
b25zdCBNYXRjaGVyPFU+JiBtYXRjaGVyKSB7Ci0gICAgLy8gRW5mb3JjZSB0aGF0IFQgY2FuIGJl
IGltcGxpY2l0bHkgY29udmVydGVkIHRvIFUuCi0gICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKChp
bnRlcm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIFU+Ojp2YWx1ZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIFRfbXVzdF9iZV9pbXBsaWNpdGx5X2NvbnZlcnRpYmxlX3RvX1UpOwot
ICAgIC8vIEVuZm9yY2UgdGhhdCB3ZSBhcmUgbm90IGNvbnZlcnRpbmcgYSBub24tcmVmZXJlbmNl
IHR5cGUgVCB0byBhIHJlZmVyZW5jZQotICAgIC8vIHR5cGUgVS4KLSAgICBHVEVTVF9DT01QSUxF
X0FTU0VSVF8oCi0gICAgICAgIGludGVybmFsOjppc19yZWZlcmVuY2U8VD46OnZhbHVlIHx8ICFp
bnRlcm5hbDo6aXNfcmVmZXJlbmNlPFU+Ojp2YWx1ZSwKLSAgICAgICAgY2Fubm90X2NvbnZlcnRf
bm9uX3JlZmVyZW50Y2VfYXJnX3RvX3JlZmVyZW5jZSk7Ci0gICAgLy8gSW4gY2FzZSBib3RoIFQg
YW5kIFUgYXJlIGFyaXRobWV0aWMgdHlwZXMsIGVuZm9yY2UgdGhhdCB0aGUKLSAgICAvLyBjb252
ZXJzaW9uIGlzIG5vdCBsb3NzeS4KLSAgICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0Vf
QU5EX0NPTlNUXyhUKSBSYXdUOwotICAgIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9B
TkRfQ09OU1RfKFUpIFJhd1U7Ci0gICAgY29uc3QgYm9vbCBrVElzT3RoZXIgPSBHTU9DS19LSU5E
X09GXyhSYXdUKSA9PSBpbnRlcm5hbDo6a090aGVyOwotICAgIGNvbnN0IGJvb2wga1VJc090aGVy
ID0gR01PQ0tfS0lORF9PRl8oUmF3VSkgPT0gaW50ZXJuYWw6OmtPdGhlcjsKLSAgICBHVEVTVF9D
T01QSUxFX0FTU0VSVF8oCi0gICAgICAgIGtUSXNPdGhlciB8fCBrVUlzT3RoZXIgfHwKLSAgICAg
ICAgKGludGVybmFsOjpMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxSYXdULCBSYXdVPjo6
dmFsdWUpLAotICAgICAgICBjb252ZXJzaW9uX29mX2FyaXRobWV0aWNfdHlwZXNfbXVzdF9iZV9s
b3NzbGVzcyk7Ci0gICAgcmV0dXJuIE1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIpOwotICB9Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTT4KLWlubGluZSBNYXRjaGVyPFQ+IFNh
ZmVNYXRjaGVyQ2FzdChjb25zdCBNJiBwb2x5bW9ycGhpY19tYXRjaGVyKSB7Ci0gIHJldHVybiBT
YWZlTWF0Y2hlckNhc3RJbXBsPFQ+OjpDYXN0KHBvbHltb3JwaGljX21hdGNoZXIpOwotfQotCi0v
LyBBPFQ+KCkgcmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB2YWx1ZSBvZiB0eXBl
IFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLU1hdGNoZXI8VD4gQSgpOwotCi0vLyBBbnl0aGlu
ZyBpbnNpZGUgdGhlICdpbnRlcm5hbCcgbmFtZXNwYWNlIElTIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OCi0vLyBhbmQgTVVTVCBOT1QgQkUgVVNFRCBJTiBVU0VSIENPREUhISEKLW5hbWVzcGFjZSBp
bnRlcm5hbCB7Ci0KLS8vIElmIHRoZSBleHBsYW5hdGlvbiBpcyBub3QgZW1wdHksIHByaW50cyBp
dCB0byB0aGUgb3N0cmVhbS4KLWlubGluZSB2b2lkIFByaW50SWZOb3RFbXB0eShjb25zdCBzdGQ6
OnN0cmluZyYgZXhwbGFuYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7Ci0gIGlmIChleHBsYW5hdGlvbiAhPSAiIiAmJiBvcyAhPSBOVUxMKSB7
Ci0gICAgKm9zIDw8ICIsICIgPDwgZXhwbGFuYXRpb247Ci0gIH0KLX0KLQotLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBnaXZlbiB0eXBlIG5hbWUgaXMgZWFzeSB0byByZWFkIGJ5IGEgaHVtYW4uCi0v
LyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgcHJpbnRpbmcgdGhlIHR5cGUgb2YgYSB2
YWx1ZSBtaWdodAotLy8gYmUgaGVscGZ1bC4KLWlubGluZSBib29sIElzUmVhZGFibGVUeXBlTmFt
ZShjb25zdCBzdGQ6OnN0cmluZyYgdHlwZV9uYW1lKSB7Ci0gIC8vIFdlIGNvbnNpZGVyIGEgdHlw
ZSBuYW1lIHJlYWRhYmxlIGlmIGl0J3Mgc2hvcnQgb3IgZG9lc24ndCBjb250YWluCi0gIC8vIGEg
dGVtcGxhdGUgb3IgZnVuY3Rpb24gdHlwZS4KLSAgcmV0dXJuICh0eXBlX25hbWUubGVuZ3RoKCkg
PD0gMjAgfHwKLSAgICAgICAgICB0eXBlX25hbWUuZmluZF9maXJzdF9vZigiPCgiKSA9PSBzdGQ6
OnN0cmluZzo6bnBvcyk7Ci19Ci0KLS8vIE1hdGNoZXMgdGhlIHZhbHVlIGFnYWluc3QgdGhlIGdp
dmVuIG1hdGNoZXIsIHByaW50cyB0aGUgdmFsdWUgYW5kIGV4cGxhaW5zCi0vLyB0aGUgbWF0Y2gg
cmVzdWx0IHRvIHRoZSBsaXN0ZW5lci4gUmV0dXJucyB0aGUgbWF0Y2ggcmVzdWx0LgotLy8gJ2xp
c3RlbmVyJyBtdXN0IG5vdCBiZSBOVUxMLgotLy8gVmFsdWUgY2Fubm90IGJlIHBhc3NlZCBieSBj
b25zdCByZWZlcmVuY2UsIGJlY2F1c2Ugc29tZSBtYXRjaGVycyB0YWtlIGEKLS8vIG5vbi1jb25z
dCBhcmd1bWVudC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgVD4KLWJvb2wg
TWF0Y2hQcmludEFuZEV4cGxhaW4oVmFsdWUmIHZhbHVlLCBjb25zdCBNYXRjaGVyPFQ+JiBtYXRj
aGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0
ZW5lcikgewotICBpZiAoIWxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgewotICAgIC8vIElmIHRo
ZSBsaXN0ZW5lciBpcyBub3QgaW50ZXJlc3RlZCwgd2UgZG8gbm90IG5lZWQgdG8gY29uc3RydWN0
IHRoZQotICAgIC8vIGlubmVyIGV4cGxhbmF0aW9uLgotICAgIHJldHVybiBtYXRjaGVyLk1hdGNo
ZXModmFsdWUpOwotICB9Ci0KLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5lcl9saXN0
ZW5lcjsKLSAgY29uc3QgYm9vbCBtYXRjaCA9IG1hdGNoZXIuTWF0Y2hBbmRFeHBsYWluKHZhbHVl
LCAmaW5uZXJfbGlzdGVuZXIpOwotCi0gIFVuaXZlcnNhbFByaW50KHZhbHVlLCBsaXN0ZW5lci0+
c3RyZWFtKCkpOwotI2lmIEdURVNUX0hBU19SVFRJCi0gIGNvbnN0IHN0ZDo6c3RyaW5nJiB0eXBl
X25hbWUgPSBHZXRUeXBlTmFtZTxWYWx1ZT4oKTsKLSAgaWYgKElzUmVhZGFibGVUeXBlTmFtZSh0
eXBlX25hbWUpKQotICAgICpsaXN0ZW5lci0+c3RyZWFtKCkgPDwgIiAob2YgdHlwZSAiIDw8IHR5
cGVfbmFtZSA8PCAiKSI7Ci0jZW5kaWYKLSAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVy
LnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotCi0gIHJldHVybiBtYXRjaDsKLX0KLQotLy8g
QW4gaW50ZXJuYWwgaGVscGVyIGNsYXNzIGZvciBkb2luZyBjb21waWxlLXRpbWUgbG9vcCBvbiBh
IHR1cGxlJ3MKLS8vIGZpZWxkcy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNsYXNzIFR1cGxlUHJl
Zml4IHsKLSBwdWJsaWM6Ci0gIC8vIFR1cGxlUHJlZml4PE4+OjpNYXRjaGVzKG1hdGNoZXJfdHVw
bGUsIHZhbHVlX3R1cGxlKSByZXR1cm5zIHRydWUKLSAgLy8gaWZmIHRoZSBmaXJzdCBOIGZpZWxk
cyBvZiBtYXRjaGVyX3R1cGxlIG1hdGNoZXMgdGhlIGZpcnN0IE4KLSAgLy8gZmllbGRzIG9mIHZh
bHVlX3R1cGxlLCByZXNwZWN0aXZlbHkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVw
bGUsIHR5cGVuYW1lIFZhbHVlVHVwbGU+Ci0gIHN0YXRpYyBib29sIE1hdGNoZXMoY29uc3QgTWF0
Y2hlclR1cGxlJiBtYXRjaGVyX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZh
bHVlVHVwbGUmIHZhbHVlX3R1cGxlKSB7Ci0gICAgcmV0dXJuIFR1cGxlUHJlZml4PE4gLSAxPjo6
TWF0Y2hlcyhtYXRjaGVyX3R1cGxlLCB2YWx1ZV90dXBsZSkKLSAgICAgICAgJiYgZ2V0PE4gLSAx
PihtYXRjaGVyX3R1cGxlKS5NYXRjaGVzKGdldDxOIC0gMT4odmFsdWVfdHVwbGUpKTsKLSAgfQot
Ci0gIC8vIFR1cGxlUHJlZml4PE4+OjpFeHBsYWluTWF0Y2hGYWlsdXJlc1RvKG1hdGNoZXJzLCB2
YWx1ZXMsIG9zKQotICAvLyBkZXNjcmliZXMgZmFpbHVyZXMgaW4gbWF0Y2hpbmcgdGhlIGZpcnN0
IE4gZmllbGRzIG9mIG1hdGNoZXJzCi0gIC8vIGFnYWluc3QgdGhlIGZpcnN0IE4gZmllbGRzIG9m
IHZhbHVlcy4gIElmIHRoZXJlIGlzIG5vIGZhaWx1cmUsCi0gIC8vIG5vdGhpbmcgd2lsbCBiZSBz
dHJlYW1lZCB0byBvcy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZSwgdHlwZW5h
bWUgVmFsdWVUdXBsZT4KLSAgc3RhdGljIHZvaWQgRXhwbGFpbk1hdGNoRmFpbHVyZXNUbyhjb25z
dCBNYXRjaGVyVHVwbGUmIG1hdGNoZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZhbHVlVHVwbGUmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICAvLyBGaXJzdCwgZGVzY3Jp
YmVzIGZhaWx1cmVzIGluIHRoZSBmaXJzdCBOIC0gMSBmaWVsZHMuCi0gICAgVHVwbGVQcmVmaXg8
TiAtIDE+OjpFeHBsYWluTWF0Y2hGYWlsdXJlc1RvKG1hdGNoZXJzLCB2YWx1ZXMsIG9zKTsKLQot
ICAgIC8vIFRoZW4gZGVzY3JpYmVzIHRoZSBmYWlsdXJlIChpZiBhbnkpIGluIHRoZSAoTiAtIDEp
LXRoICgwLWJhc2VkKQotICAgIC8vIGZpZWxkLgotICAgIHR5cGVuYW1lIHR1cGxlX2VsZW1lbnQ8
TiAtIDEsIE1hdGNoZXJUdXBsZT46OnR5cGUgbWF0Y2hlciA9Ci0gICAgICAgIGdldDxOIC0gMT4o
bWF0Y2hlcnMpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfZWxlbWVudDxOIC0gMSwgVmFs
dWVUdXBsZT46OnR5cGUgVmFsdWU7Ci0gICAgVmFsdWUgdmFsdWUgPSBnZXQ8TiAtIDE+KHZhbHVl
cyk7Ci0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgICBpZiAoIW1h
dGNoZXIuTWF0Y2hBbmRFeHBsYWluKHZhbHVlLCAmbGlzdGVuZXIpKSB7Ci0gICAgICAvLyBUT0RP
KHdhbik6IGluY2x1ZGUgaW4gdGhlIG1lc3NhZ2UgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlcgot
ICAgICAgLy8gYXMgdXNlZCBpbiBNT0NLX01FVEhPRCooKSB3aGVuIHBvc3NpYmxlLgotICAgICAg
Km9zIDw8ICIgIEV4cGVjdGVkIGFyZyAjIiA8PCBOIC0gMSA8PCAiOiAiOwotICAgICAgZ2V0PE4g
LSAxPihtYXRjaGVycykuRGVzY3JpYmVUbyhvcyk7Ci0gICAgICAqb3MgPDwgIlxuICAgICAgICAg
ICBBY3R1YWw6ICI7Ci0gICAgICAvLyBXZSByZW1vdmUgdGhlIHJlZmVyZW5jZSBpbiB0eXBlIFZh
bHVlIHRvIHByZXZlbnQgdGhlCi0gICAgICAvLyB1bml2ZXJzYWwgcHJpbnRlciBmcm9tIHByaW50
aW5nIHRoZSBhZGRyZXNzIG9mIHZhbHVlLCB3aGljaAotICAgICAgLy8gaXNuJ3QgaW50ZXJlc3Rp
bmcgdG8gdGhlIHVzZXIgbW9zdCBvZiB0aGUgdGltZS4gIFRoZQotICAgICAgLy8gbWF0Y2hlcidz
IE1hdGNoQW5kRXhwbGFpbigpIG1ldGhvZCBoYW5kbGVzIHRoZSBjYXNlIHdoZW4KLSAgICAgIC8v
IHRoZSBhZGRyZXNzIGlzIGludGVyZXN0aW5nLgotICAgICAgaW50ZXJuYWw6OlVuaXZlcnNhbFBy
aW50KHZhbHVlLCBvcyk7Ci0gICAgICBQcmludElmTm90RW1wdHkobGlzdGVuZXIuc3RyKCksIG9z
KTsKLSAgICAgICpvcyA8PCAiXG4iOwotICAgIH0KLSAgfQotfTsKLQotLy8gVGhlIGJhc2UgY2Fz
ZS4KLXRlbXBsYXRlIDw+Ci1jbGFzcyBUdXBsZVByZWZpeDwwPiB7Ci0gcHVibGljOgotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWF0Y2hlclR1cGxlLCB0eXBlbmFtZSBWYWx1ZVR1cGxlPgotICBzdGF0
aWMgYm9vbCBNYXRjaGVzKGNvbnN0IE1hdGNoZXJUdXBsZSYgLyogbWF0Y2hlcl90dXBsZSAqLywK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZVR1cGxlJiAvKiB2YWx1ZV90dXBsZSAq
LykgewotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNo
ZXJUdXBsZSwgdHlwZW5hbWUgVmFsdWVUdXBsZT4KLSAgc3RhdGljIHZvaWQgRXhwbGFpbk1hdGNo
RmFpbHVyZXNUbyhjb25zdCBNYXRjaGVyVHVwbGUmIC8qIG1hdGNoZXJzICovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlVHVwbGUmIC8qIHZhbHVlcyAq
LywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSog
Lyogb3MgKi8pIHt9Ci19OwotCi0vLyBUdXBsZU1hdGNoZXMobWF0Y2hlcl90dXBsZSwgdmFsdWVf
dHVwbGUpIHJldHVybnMgdHJ1ZSBpZmYgYWxsCi0vLyBtYXRjaGVycyBpbiBtYXRjaGVyX3R1cGxl
IG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbgotLy8gdmFsdWVfdHVwbGUuICBJdCBp
cyBhIGNvbXBpbGVyIGVycm9yIGlmIG1hdGNoZXJfdHVwbGUgYW5kCi0vLyB2YWx1ZV90dXBsZSBo
YXZlIGRpZmZlcmVudCBudW1iZXIgb2YgZmllbGRzIG9yIGluY29tcGF0aWJsZSBmaWVsZAotLy8g
dHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlclR1cGxlLCB0eXBlbmFtZSBWYWx1ZVR1
cGxlPgotYm9vbCBUdXBsZU1hdGNoZXMoY29uc3QgTWF0Y2hlclR1cGxlJiBtYXRjaGVyX3R1cGxl
LAotICAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWVUdXBsZSYgdmFsdWVfdHVwbGUpIHsKLSAg
Ly8gTWFrZXMgc3VyZSB0aGF0IG1hdGNoZXJfdHVwbGUgYW5kIHZhbHVlX3R1cGxlIGhhdmUgdGhl
IHNhbWUKLSAgLy8gbnVtYmVyIG9mIGZpZWxkcy4KLSAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKHR1
cGxlX3NpemU8TWF0Y2hlclR1cGxlPjo6dmFsdWUgPT0KLSAgICAgICAgICAgICAgICAgICAgICAg
IHR1cGxlX3NpemU8VmFsdWVUdXBsZT46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlcl9hbmRfdmFsdWVfaGF2ZV9kaWZmZXJlbnRfbnVtYmVyc19vZl9maWVsZHMpOwotICBy
ZXR1cm4gVHVwbGVQcmVmaXg8dHVwbGVfc2l6ZTxWYWx1ZVR1cGxlPjo6dmFsdWU+OjoKLSAgICAg
IE1hdGNoZXMobWF0Y2hlcl90dXBsZSwgdmFsdWVfdHVwbGUpOwotfQotCi0vLyBEZXNjcmliZXMg
ZmFpbHVyZXMgaW4gbWF0Y2hpbmcgbWF0Y2hlcnMgYWdhaW5zdCB2YWx1ZXMuICBJZiB0aGVyZQot
Ly8gaXMgbm8gZmFpbHVyZSwgbm90aGluZyB3aWxsIGJlIHN0cmVhbWVkIHRvIG9zLgotdGVtcGxh
dGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZSwgdHlwZW5hbWUgVmFsdWVUdXBsZT4KLXZvaWQgRXhw
bGFpbk1hdGNoRmFpbHVyZVR1cGxlVG8oY29uc3QgTWF0Y2hlclR1cGxlJiBtYXRjaGVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWVUdXBsZSYgdmFsdWVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
VHVwbGVQcmVmaXg8dHVwbGVfc2l6ZTxNYXRjaGVyVHVwbGU+Ojp2YWx1ZT46OkV4cGxhaW5NYXRj
aEZhaWx1cmVzVG8oCi0gICAgICBtYXRjaGVycywgdmFsdWVzLCBvcyk7Ci19Ci0KLS8vIFRyYW5z
Zm9ybVR1cGxlVmFsdWVzIGFuZCBpdHMgaGVscGVyLgotLy8KLS8vIFRyYW5zZm9ybVR1cGxlVmFs
dWVzSGVscGVyIGhpZGVzIHRoZSBpbnRlcm5hbCBtYWNoaW5lcnkgdGhhdAotLy8gVHJhbnNmb3Jt
VHVwbGVWYWx1ZXMgdXNlcyB0byBpbXBsZW1lbnQgYSB0dXBsZSB0cmF2ZXJzYWwuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVHVwbGUsIHR5cGVuYW1lIEZ1bmMsIHR5cGVuYW1lIE91dEl0ZXI+Ci1jbGFz
cyBUcmFuc2Zvcm1UdXBsZVZhbHVlc0hlbHBlciB7Ci0gcHJpdmF0ZToKLSAgdHlwZWRlZiA6OnRl
c3Rpbmc6OnR1cGxlX3NpemU8VHVwbGU+IFR1cGxlU2l6ZTsKLQotIHB1YmxpYzoKLSAgLy8gRm9y
IGVhY2ggbWVtYmVyIG9mIHR1cGxlICd0JywgdGFrZW4gaW4gb3JkZXIsIGV2YWx1YXRlcyAnKm91
dCsrID0gZih0KScuCi0gIC8vIFJldHVybnMgdGhlIGZpbmFsIHZhbHVlIG9mICdvdXQnIGluIGNh
c2UgdGhlIGNhbGxlciBuZWVkcyBpdC4KLSAgc3RhdGljIE91dEl0ZXIgUnVuKEZ1bmMgZiwgY29u
c3QgVHVwbGUmIHQsIE91dEl0ZXIgb3V0KSB7Ci0gICAgcmV0dXJuIEl0ZXJhdGVPdmVyVHVwbGU8
VHVwbGUsIFR1cGxlU2l6ZTo6dmFsdWU+KCkoZiwgdCwgb3V0KTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cCwgc2l6ZV90IGtSZW1haW5pbmdTaXplPgotICBzdHJ1
Y3QgSXRlcmF0ZU92ZXJUdXBsZSB7Ci0gICAgT3V0SXRlciBvcGVyYXRvcigpIChGdW5jIGYsIGNv
bnN0IFR1cCYgdCwgT3V0SXRlciBvdXQpIGNvbnN0IHsKLSAgICAgICpvdXQrKyA9IGYoOjp0ZXN0
aW5nOjpnZXQ8VHVwbGVTaXplOjp2YWx1ZSAtIGtSZW1haW5pbmdTaXplPih0KSk7Ci0gICAgICBy
ZXR1cm4gSXRlcmF0ZU92ZXJUdXBsZTxUdXAsIGtSZW1haW5pbmdTaXplIC0gMT4oKShmLCB0LCBv
dXQpOwotICAgIH0KLSAgfTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFR1cD4KLSAgc3RydWN0IEl0
ZXJhdGVPdmVyVHVwbGU8VHVwLCAwPiB7Ci0gICAgT3V0SXRlciBvcGVyYXRvcigpIChGdW5jIC8q
IGYgKi8sIGNvbnN0IFR1cCYgLyogdCAqLywgT3V0SXRlciBvdXQpIGNvbnN0IHsKLSAgICAgIHJl
dHVybiBvdXQ7Ci0gICAgfQotICB9OwotfTsKLQotLy8gU3VjY2Vzc2l2ZWx5IGludm9rZXMgJ2Yo
ZWxlbWVudCknIG9uIGVhY2ggZWxlbWVudCBvZiB0aGUgdHVwbGUgJ3QnLAotLy8gYXBwZW5kaW5n
IGVhY2ggcmVzdWx0IHRvIHRoZSAnb3V0JyBpdGVyYXRvci4gUmV0dXJucyB0aGUgZmluYWwgdmFs
dWUKLS8vIG9mICdvdXQnLgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlLCB0eXBlbmFtZSBGdW5j
LCB0eXBlbmFtZSBPdXRJdGVyPgotT3V0SXRlciBUcmFuc2Zvcm1UdXBsZVZhbHVlcyhGdW5jIGYs
IGNvbnN0IFR1cGxlJiB0LCBPdXRJdGVyIG91dCkgewotICByZXR1cm4gVHJhbnNmb3JtVHVwbGVW
YWx1ZXNIZWxwZXI8VHVwbGUsIEZ1bmMsIE91dEl0ZXI+OjpSdW4oZiwgdCwgb3V0KTsKLX0KLQot
Ly8gSW1wbGVtZW50cyBBPFQ+KCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFueU1h
dGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoKLSAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbigKLSAgICAgIFQgLyogeCAqLywgTWF0Y2hSZXN1bHRM
aXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgdmlydHVh
bCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAiaXMg
YW55dGhpbmciOyB9Ci0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9z
dHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgLy8gVGhpcyBpcyBtb3N0bHkgZm9yIGNvbXBsZXRlbmVz
cycgc2FmZSwgYXMgaXQncyBub3QgdmVyeSB1c2VmdWwKLSAgICAvLyB0byB3cml0ZSBOb3QoQTxi
b29sPigpKS4gIEhvd2V2ZXIgd2UgY2Fubm90IGNvbXBsZXRlbHkgcnVsZSBvdXQKLSAgICAvLyBz
dWNoIGEgcG9zc2liaWxpdHksIGFuZCBpdCBkb2Vzbid0IGh1cnQgdG8gYmUgcHJlcGFyZWQuCi0g
ICAgKm9zIDw8ICJuZXZlciBtYXRjaGVzIjsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyBfLCBh
IG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB2YWx1ZSBvZiBhbnkKLS8vIHR5cGUuICBUaGlzIGlz
IGEgcG9seW1vcnBoaWMgbWF0Y2hlciwgc28gd2UgbmVlZCBhIHRlbXBsYXRlIHR5cGUKLS8vIGNv
bnZlcnNpb24gb3BlcmF0b3IgdG8gbWFrZSBpdCBhcHBlYXJpbmcgYXMgYSBNYXRjaGVyPFQ+IGZv
ciBhbnkKLS8vIHR5cGUgVC4KLWNsYXNzIEFueXRoaW5nTWF0Y2hlciB7Ci0gcHVibGljOgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxUPigpIGNvbnN0IHsgcmV0
dXJuIEE8VD4oKTsgfQotfTsKLQotLy8gSW1wbGVtZW50cyBhIG1hdGNoZXIgdGhhdCBjb21wYXJl
cyBhIGdpdmVuIHZhbHVlIHdpdGggYQotLy8gcHJlLXN1cHBsaWVkIHZhbHVlIHVzaW5nIG9uZSBv
ZiB0aGUgPT0sIDw9LCA8LCBldGMsIG9wZXJhdG9ycy4gIFRoZQotLy8gdHdvIHZhbHVlcyBiZWlu
ZyBjb21wYXJlZCBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgdHlwZS4KLS8vCi0vLyBUaGUg
bWF0Y2hlciBkZWZpbmVkIGhlcmUgaXMgcG9seW1vcnBoaWMgKGZvciBleGFtcGxlLCBFcSg1KSBj
YW4gYmUKLS8vIHVzZWQgdG8gbWF0Y2ggYW4gaW50LCBhIHNob3J0LCBhIGRvdWJsZSwgZXRjKS4g
IFRoZXJlZm9yZSB3ZSB1c2UKLS8vIGEgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9y
IGluIHRoZSBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBUaGUgZm9sbG93aW5nIHRlbXBsYXRlIGRl
ZmluaXRpb24gYXNzdW1lcyB0aGF0IHRoZSBSaHMgcGFyYW1ldGVyIGlzCi0vLyBhICJiYXJlIiB0
eXBlIChpLmUuIG5laXRoZXIgJ2NvbnN0IFQnIG5vciAnVCYnKS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBELCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIE9wPgotY2xhc3MgQ29tcGFyaXNvbkJhc2Ugewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgQ29tcGFyaXNvbkJhc2UoY29uc3QgUmhzJiByaHMpIDogcmhz
XyhyaHMpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHM+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8
TGhzPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8TGhzPihyaHNf
KSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHM+Ci0gIGNsYXNz
IEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxMaHM+IHsKLSAgIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBJbXBsKGNvbnN0IFJocyYgcmhzKSA6IHJoc18ocmhzKSB7fQotICAgIHZpcnR1YWwg
Ym9vbCBNYXRjaEFuZEV4cGxhaW4oCi0gICAgICAgIExocyBsaHMsIE1hdGNoUmVzdWx0TGlzdGVu
ZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAgICByZXR1cm4gT3AoKShsaHMsIHJoc18p
OwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3Mp
IGNvbnN0IHsKLSAgICAgICpvcyA8PCBEOjpEZXNjKCkgPDwgIiAiOwotICAgICAgVW5pdmVyc2Fs
UHJpbnQocmhzXywgb3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8IEQ6Ok5lZ2F0ZWRE
ZXNjKCkgPDwgICIgIjsKLSAgICAgIFVuaXZlcnNhbFByaW50KHJoc18sIG9zKTsKLSAgICB9Ci0g
ICBwcml2YXRlOgotICAgIFJocyByaHNfOwotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSW1w
bCk7Ci0gIH07Ci0gIFJocyByaHNfOwotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKENvbXBhcmlz
b25CYXNlKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1jbGFzcyBFcU1hdGNoZXIg
OiBwdWJsaWMgQ29tcGFyaXNvbkJhc2U8RXFNYXRjaGVyPFJocz4sIFJocywgQW55RXE+IHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IEVxTWF0Y2hlcihjb25zdCBSaHMmIHJocykKLSAgICAgIDogQ29t
cGFyaXNvbkJhc2U8RXFNYXRjaGVyPFJocz4sIFJocywgQW55RXE+KHJocykgeyB9Ci0gIHN0YXRp
YyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImlzIGVxdWFsIHRvIjsgfQotICBzdGF0aWMg
Y29uc3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgZXF1YWwgdG8iOyB9Ci19
OwotdGVtcGxhdGUgPHR5cGVuYW1lIFJocz4KLWNsYXNzIE5lTWF0Y2hlciA6IHB1YmxpYyBDb21w
YXJpc29uQmFzZTxOZU1hdGNoZXI8UmhzPiwgUmhzLCBBbnlOZT4gewotIHB1YmxpYzoKLSAgZXhw
bGljaXQgTmVNYXRjaGVyKGNvbnN0IFJocyYgcmhzKQotICAgICAgOiBDb21wYXJpc29uQmFzZTxO
ZU1hdGNoZXI8UmhzPiwgUmhzLCBBbnlOZT4ocmhzKSB7IH0KLSAgc3RhdGljIGNvbnN0IGNoYXIq
IERlc2MoKSB7IHJldHVybiAiaXNuJ3QgZXF1YWwgdG8iOyB9Ci0gIHN0YXRpYyBjb25zdCBjaGFy
KiBOZWdhdGVkRGVzYygpIHsgcmV0dXJuICJpcyBlcXVhbCB0byI7IH0KLX07Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgUmhzPgotY2xhc3MgTHRNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPEx0
TWF0Y2hlcjxSaHM+LCBSaHMsIEFueUx0PiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBMdE1hdGNo
ZXIoY29uc3QgUmhzJiByaHMpCi0gICAgICA6IENvbXBhcmlzb25CYXNlPEx0TWF0Y2hlcjxSaHM+
LCBSaHMsIEFueUx0PihyaHMpIHsgfQotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0
dXJuICJpcyA8IjsgfQotICBzdGF0aWMgY29uc3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVy
biAiaXNuJ3QgPCI7IH0KLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgotY2xhc3MgR3RNYXRj
aGVyIDogcHVibGljIENvbXBhcmlzb25CYXNlPEd0TWF0Y2hlcjxSaHM+LCBSaHMsIEFueUd0PiB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBHdE1hdGNoZXIoY29uc3QgUmhzJiByaHMpCi0gICAgICA6
IENvbXBhcmlzb25CYXNlPEd0TWF0Y2hlcjxSaHM+LCBSaHMsIEFueUd0PihyaHMpIHsgfQotICBz
dGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJpcyA+IjsgfQotICBzdGF0aWMgY29u
c3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgPiI7IH0KLX07Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgUmhzPgotY2xhc3MgTGVNYXRjaGVyIDogcHVibGljIENvbXBhcmlzb25CYXNl
PExlTWF0Y2hlcjxSaHM+LCBSaHMsIEFueUxlPiB7Ci0gcHVibGljOgotICBleHBsaWNpdCBMZU1h
dGNoZXIoY29uc3QgUmhzJiByaHMpCi0gICAgICA6IENvbXBhcmlzb25CYXNlPExlTWF0Y2hlcjxS
aHM+LCBSaHMsIEFueUxlPihyaHMpIHsgfQotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsg
cmV0dXJuICJpcyA8PSI7IH0KLSAgc3RhdGljIGNvbnN0IGNoYXIqIE5lZ2F0ZWREZXNjKCkgeyBy
ZXR1cm4gImlzbid0IDw9IjsgfQotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1jbGFzcyBH
ZU1hdGNoZXIgOiBwdWJsaWMgQ29tcGFyaXNvbkJhc2U8R2VNYXRjaGVyPFJocz4sIFJocywgQW55
R2U+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEdlTWF0Y2hlcihjb25zdCBSaHMmIHJocykKLSAg
ICAgIDogQ29tcGFyaXNvbkJhc2U8R2VNYXRjaGVyPFJocz4sIFJocywgQW55R2U+KHJocykgeyB9
Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImlzID49IjsgfQotICBzdGF0
aWMgY29uc3QgY2hhciogTmVnYXRlZERlc2MoKSB7IHJldHVybiAiaXNuJ3QgPj0iOyB9Ci19Owot
Ci0vLyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBJc051bGwoKSBtYXRjaGVyLCB3aGljaCBt
YXRjaGVzIGFueSByYXcgb3Igc21hcnQKLS8vIHBvaW50ZXIgdGhhdCBpcyBOVUxMLgotY2xhc3Mg
SXNOdWxsTWF0Y2hlciB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4K
LSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgUG9pbnRlciYgcCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsKLSNp
ZiBHVEVTVF9MQU5HX0NYWDExCi0gICAgcmV0dXJuIHAgPT0gbnVsbHB0cjsKLSNlbHNlICAvLyBH
VEVTVF9MQU5HX0NYWDExCi0gICAgcmV0dXJuIEdldFJhd1BvaW50ZXIocCkgPT0gTlVMTDsKLSNl
bmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQotICB9Ci0KLSAgdm9pZCBEZXNjcmliZVRvKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIE5VTEwiOyB9Ci0gIHZvaWQgRGVzY3Jp
YmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXNu
J3QgTlVMTCI7Ci0gIH0KLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIE5vdE51
bGwoKSBtYXRjaGVyLCB3aGljaCBtYXRjaGVzIGFueSByYXcgb3Igc21hcnQKLS8vIHBvaW50ZXIg
dGhhdCBpcyBub3QgTlVMTC4KLWNsYXNzIE5vdE51bGxNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBQb2ludGVyPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBQ
b2ludGVyJiBwLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAv
KiBsaXN0ZW5lciAqLykgY29uc3QgewotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLSAgICByZXR1cm4g
cCAhPSBudWxscHRyOwotI2Vsc2UgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLSAgICByZXR1cm4gR2V0
UmF3UG9pbnRlcihwKSAhPSBOVUxMOwotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0gIH0K
LQotICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8PCAi
aXNuJ3QgTlVMTCI7IH0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBOVUxMIjsKLSAgfQotfTsKLQotLy8gUmVmKHZh
cmlhYmxlKSBtYXRjaGVzIGFueSBhcmd1bWVudCB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvCi0vLyAn
dmFyaWFibGUnLiAgVGhpcyBtYXRjaGVyIGlzIHBvbHltb3JwaGljIGFzIGl0IGNhbiBtYXRjaCBh
bnkKLS8vIHN1cGVyIHR5cGUgb2YgdGhlIHR5cGUgb2YgJ3ZhcmlhYmxlJy4KLS8vCi0vLyBUaGUg
UmVmTWF0Y2hlciB0ZW1wbGF0ZSBjbGFzcyBpbXBsZW1lbnRzIFJlZih2YXJpYWJsZSkuICBJdCBj
YW4KLS8vIG9ubHkgYmUgaW5zdGFudGlhdGVkIHdpdGggYSByZWZlcmVuY2UgdHlwZS4gIFRoaXMg
cHJldmVudHMgYSB1c2VyCi0vLyBmcm9tIG1pc3Rha2VubHkgdXNpbmcgUmVmKHgpIHRvIG1hdGNo
IGEgbm9uLXJlZmVyZW5jZSBmdW5jdGlvbgotLy8gYXJndW1lbnQuICBGb3IgZXhhbXBsZSwgdGhl
IGZvbGxvd2luZyB3aWxsIHJpZ2h0ZW91c2x5IGNhdXNlIGEKLS8vIGNvbXBpbGVyIGVycm9yOgot
Ly8KLS8vICAgaW50IG47Ci0vLyAgIE1hdGNoZXI8aW50PiBtMSA9IFJlZihuKTsgICAvLyBUaGlz
IHdvbid0IGNvbXBpbGUuCi0vLyAgIE1hdGNoZXI8aW50Jj4gbTIgPSBSZWYobik7ICAvLyBUaGlz
IHdpbGwgY29tcGlsZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgUmVmTWF0Y2hlcjsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZWZNYXRjaGVyPFQmPiB7Ci0gIC8vIEdv
b2dsZSBNb2NrIGlzIGEgZ2VuZXJpYyBmcmFtZXdvcmsgYW5kIHRodXMgbmVlZHMgdG8gc3VwcG9y
dAotICAvLyBtb2NraW5nIGFueSBmdW5jdGlvbiB0eXBlcywgaW5jbHVkaW5nIHRob3NlIHRoYXQg
dGFrZSBub24tY29uc3QKLSAgLy8gcmVmZXJlbmNlIGFyZ3VtZW50cy4gIFRoZXJlZm9yZSB0aGUg
dGVtcGxhdGUgcGFyYW1ldGVyIFQgKGFuZAotICAvLyBTdXBlciBiZWxvdykgY2FuIGJlIGluc3Rh
bnRpYXRlZCB0byBlaXRoZXIgYSBjb25zdCB0eXBlIG9yIGEKLSAgLy8gbm9uLWNvbnN0IHR5cGUu
Ci0gcHVibGljOgotICAvLyBSZWZNYXRjaGVyKCkgdGFrZXMgYSBUJiBpbnN0ZWFkIG9mIGNvbnN0
IFQmLCBhcyB3ZSB3YW50IHRoZQotICAvLyBjb21waWxlciB0byBjYXRjaCB1c2luZyBSZWYoY29u
c3RfdmFsdWUpIGFzIGEgbWF0Y2hlciBmb3IgYQotICAvLyBub24tY29uc3QgcmVmZXJlbmNlLgot
ICBleHBsaWNpdCBSZWZNYXRjaGVyKFQmIHgpIDogb2JqZWN0Xyh4KSB7fSAgLy8gTk9MSU5UCi0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFN1cGVyPgotICBvcGVyYXRvciBNYXRjaGVyPFN1cGVyJj4o
KSBjb25zdCB7Ci0gICAgLy8gQnkgcGFzc2luZyBvYmplY3RfICh0eXBlIFQmKSB0byBJbXBsKCks
IHdoaWNoIGV4cGVjdHMgYSBTdXBlciYsCi0gICAgLy8gd2UgbWFrZSBzdXJlIHRoYXQgU3VwZXIg
aXMgYSBzdXBlciB0eXBlIG9mIFQuICBJbiBwYXJ0aWN1bGFyLAotICAgIC8vIHRoaXMgY2F0Y2hl
cyB1c2luZyBSZWYoY29uc3RfdmFsdWUpIGFzIGEgbWF0Y2hlciBmb3IgYQotICAgIC8vIG5vbi1j
b25zdCByZWZlcmVuY2UsIGFzIHlvdSBjYW5ub3QgaW1wbGljaXRseSBjb252ZXJ0IGEgY29uc3QK
LSAgICAvLyByZWZlcmVuY2UgdG8gYSBub24tY29uc3QgcmVmZXJlbmNlLgotICAgIHJldHVybiBN
YWtlTWF0Y2hlcihuZXcgSW1wbDxTdXBlcj4ob2JqZWN0XykpOwotICB9Ci0KLSBwcml2YXRlOgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3VwZXI+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hl
ckludGVyZmFjZTxTdXBlciY+IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbXBsKFN1cGVy
JiB4KSA6IG9iamVjdF8oeCkge30gIC8vIE5PTElOVAotCi0gICAgLy8gTWF0Y2hBbmRFeHBsYWlu
KCkgdGFrZXMgYSBTdXBlciYgKGFzIG9wcG9zZWQgdG8gY29uc3QgU3VwZXImKQotICAgIC8vIGlu
IG9yZGVyIHRvIG1hdGNoIHRoZSBpbnRlcmZhY2UgTWF0Y2hlckludGVyZmFjZTxTdXBlciY+Lgot
ICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oCi0gICAgICAgIFN1cGVyJiB4LCBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3
aGljaCBpcyBsb2NhdGVkIEAiIDw8IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPigmeCk7Ci0gICAg
ICByZXR1cm4gJnggPT0gJm9iamVjdF87Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIERlc2Ny
aWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgInJlZmVyZW5j
ZXMgdGhlIHZhcmlhYmxlICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVyPFN1cGVyJj46OlByaW50
KG9iamVjdF8sIG9zKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJkb2VzIG5vdCBy
ZWZlcmVuY2UgdGhlIHZhcmlhYmxlICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVyPFN1cGVyJj46
OlByaW50KG9iamVjdF8sIG9zKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgU3Vw
ZXImIG9iamVjdF87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9Owot
Ci0gIFQmIG9iamVjdF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSZWZNYXRjaGVyKTsK
LX07Ci0KLS8vIFBvbHltb3JwaGljIGhlbHBlciBmdW5jdGlvbnMgZm9yIG5hcnJvdyBhbmQgd2lk
ZSBzdHJpbmcgbWF0Y2hlcnMuCi1pbmxpbmUgYm9vbCBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1
YWxzKGNvbnN0IGNoYXIqIGxocywgY29uc3QgY2hhciogcmhzKSB7Ci0gIHJldHVybiBTdHJpbmc6
OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMobGhzLCByaHMpOwotfQotCi1pbmxpbmUgYm9v
bCBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7
Ci0gIHJldHVybiBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGxocywg
cmhzKTsKLX0KLQotLy8gU3RyaW5nIGNvbXBhcmlzb24gZm9yIG5hcnJvdyBvciB3aWRlIHN0cmlu
Z3MgdGhhdCBjYW4gaGF2ZSBlbWJlZGRlZCBOVUwKLS8vIGNoYXJhY3RlcnMuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgU3RyaW5nVHlwZT4KLWJvb2wgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nRXF1YWxzKGNv
bnN0IFN0cmluZ1R5cGUmIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nVHlwZSYgczIpIHsKLSAgLy8gQXJlIHRoZSBoZWFkcyBlcXVhbD8KLSAgaWYgKCFD
YXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHMxLmNfc3RyKCksIHMyLmNfc3RyKCkpKSB7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLy8gU2tpcCB0aGUgZXF1YWwgaGVhZHMuCi0gIGNv
bnN0IHR5cGVuYW1lIFN0cmluZ1R5cGU6OnZhbHVlX3R5cGUgbnVsID0gMDsKLSAgY29uc3Qgc2l6
ZV90IGkxID0gczEuZmluZChudWwpLCBpMiA9IHMyLmZpbmQobnVsKTsKLQotICAvLyBBcmUgd2Ug
YXQgdGhlIGVuZCBvZiBlaXRoZXIgczEgb3IgczI/Ci0gIGlmIChpMSA9PSBTdHJpbmdUeXBlOjpu
cG9zIHx8IGkyID09IFN0cmluZ1R5cGU6Om5wb3MpIHsKLSAgICByZXR1cm4gaTEgPT0gaTI7Ci0g
IH0KLQotICAvLyBBcmUgdGhlIHRhaWxzIGVxdWFsPwotICByZXR1cm4gQ2FzZUluc2Vuc2l0aXZl
U3RyaW5nRXF1YWxzKHMxLnN1YnN0cihpMSArIDEpLCBzMi5zdWJzdHIoaTIgKyAxKSk7Ci19Ci0K
LS8vIFN0cmluZyBtYXRjaGVycy4KLQotLy8gSW1wbGVtZW50cyBlcXVhbGl0eS1iYXNlZCBzdHJp
bmcgbWF0Y2hlcnMgbGlrZSBTdHJFcSwgU3RyQ2FzZU5lLCBhbmQgZXRjLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cmluZ1R5cGU+Ci1jbGFzcyBTdHJFcXVhbGl0eU1hdGNoZXIgewotIHB1YmxpYzoK
LSAgU3RyRXF1YWxpdHlNYXRjaGVyKGNvbnN0IFN0cmluZ1R5cGUmIHN0ciwgYm9vbCBleHBlY3Rf
ZXEsCi0gICAgICAgICAgICAgICAgICAgICBib29sIGNhc2Vfc2Vuc2l0aXZlKQotICAgICAgOiBz
dHJpbmdfKHN0ciksIGV4cGVjdF9lcV8oZXhwZWN0X2VxKSwgY2FzZV9zZW5zaXRpdmVfKGNhc2Vf
c2Vuc2l0aXZlKSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFydGljdWxhcmx5
OgotICAvLyAgIGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25zdCB3Y2hhcl90
KgotICAvLyAgIHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7Ci0gICAgaWYgKHMgPT0gTlVMTCkgewotICAgICAgcmV0dXJuICFleHBlY3Rf
ZXFfOwotICAgIH0KLSAgICByZXR1cm4gTWF0Y2hBbmRFeHBsYWluKFN0cmluZ1R5cGUocyksIGxp
c3RlbmVyKTsKLSAgfQotCi0gIC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29udmVydCB0
byBTdHJpbmdUeXBlLgotICAvLwotICAvLyBUaGlzIGlzIGEgdGVtcGxhdGUsIG5vdCBqdXN0IGEg
cGxhaW4gZnVuY3Rpb24gd2l0aCBjb25zdCBTdHJpbmdUeXBlJiwKLSAgLy8gYmVjYXVzZSBTdHJp
bmdQaWVjZSBoYXMgc29tZSBpbnRlcmZlcmluZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlZVN0cmluZ1R5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRF
eHBsYWluKGNvbnN0IE1hdGNoZWVTdHJpbmdUeXBlJiBzLAotICAgICAgICAgICAgICAgICAgICAg
ICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIGNvbnN0
IFN0cmluZ1R5cGUmIHMyKHMpOwotICAgIGNvbnN0IGJvb2wgZXEgPSBjYXNlX3NlbnNpdGl2ZV8g
PyBzMiA9PSBzdHJpbmdfIDoKLSAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nRXF1YWxzKHMy
LCBzdHJpbmdfKTsKLSAgICByZXR1cm4gZXhwZWN0X2VxXyA9PSBlcTsKLSAgfQotCi0gIHZvaWQg
RGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBEZXNjcmliZVRvSGVs
cGVyKGV4cGVjdF9lcV8sIG9zKTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgIERlc2NyaWJlVG9IZWxwZXIoIWV4cGVjdF9l
cV8sIG9zKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdm9pZCBEZXNjcmliZVRvSGVscGVyKGJvb2wg
ZXhwZWN0X2VxLCA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgKGV4cGVj
dF9lcSA/ICJpcyAiIDogImlzbid0ICIpOwotICAgICpvcyA8PCAiZXF1YWwgdG8gIjsKLSAgICBp
ZiAoIWNhc2Vfc2Vuc2l0aXZlXykgewotICAgICAgKm9zIDw8ICIoaWdub3JpbmcgY2FzZSkgIjsK
LSAgICB9Ci0gICAgVW5pdmVyc2FsUHJpbnQoc3RyaW5nXywgb3MpOwotICB9Ci0KLSAgY29uc3Qg
U3RyaW5nVHlwZSBzdHJpbmdfOwotICBjb25zdCBib29sIGV4cGVjdF9lcV87Ci0gIGNvbnN0IGJv
b2wgY2FzZV9zZW5zaXRpdmVfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oU3RyRXF1YWxp
dHlNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIEhhc1N1YnN0
cihzdWJzdHJpbmcpIG1hdGNoZXIsIHdoaWNoCi0vLyBjYW4gYmUgdXNlZCBhcyBhIE1hdGNoZXI8
VD4gYXMgbG9uZyBhcyBUIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQotLy8gc3RyaW5nLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Ci1jbGFzcyBIYXNTdWJzdHJNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IEhhc1N1YnN0ck1hdGNoZXIoY29uc3QgU3RyaW5nVHlwZSYgc3Vic3Ry
aW5nKQotICAgICAgOiBzdWJzdHJpbmdfKHN1YnN0cmluZykge30KLQotICAvLyBBY2NlcHRzIHBv
aW50ZXIgdHlwZXMsIHBhcnRpY3VsYXJseToKLSAgLy8gICBjb25zdCBjaGFyKgotICAvLyAgIGNo
YXIqCi0gIC8vICAgY29uc3Qgd2NoYXJfdCoKLSAgLy8gICB3Y2hhcl90KgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhclR5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENoYXJUeXBlKiBzLCBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiBzICE9IE5V
TEwgJiYgTWF0Y2hBbmRFeHBsYWluKFN0cmluZ1R5cGUocyksIGxpc3RlbmVyKTsKLSAgfQotCi0g
IC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBjYW4gY29udmVydCB0byBTdHJpbmdUeXBlLgotICAv
LwotICAvLyBUaGlzIGlzIGEgdGVtcGxhdGUsIG5vdCBqdXN0IGEgcGxhaW4gZnVuY3Rpb24gd2l0
aCBjb25zdCBTdHJpbmdUeXBlJiwKLSAgLy8gYmVjYXVzZSBTdHJpbmdQaWVjZSBoYXMgc29tZSBp
bnRlcmZlcmluZyBub24tZXhwbGljaXQgY29uc3RydWN0b3JzLgotICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTWF0Y2hlZVN0cmluZ1R5cGU+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IE1hdGNo
ZWVTdHJpbmdUeXBlJiBzLAotICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3QgewotICAgIGNvbnN0IFN0cmluZ1R5cGUmIHMyKHMp
OwotICAgIHJldHVybiBzMi5maW5kKHN1YnN0cmluZ18pICE9IFN0cmluZ1R5cGU6Om5wb3M7Ci0g
IH0KLQotICAvLyBEZXNjcmliZXMgd2hhdCB0aGlzIG1hdGNoZXIgbWF0Y2hlcy4KLSAgdm9pZCBE
ZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaGFzIHN1
YnN0cmluZyAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1YnN0cmluZ18sIG9zKTsKLSAgfQotCi0g
IHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAg
ICpvcyA8PCAiaGFzIG5vIHN1YnN0cmluZyAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1YnN0cmlu
Z18sIG9zKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgU3RyaW5nVHlwZSBzdWJzdHJpbmdf
OwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oSGFzU3Vic3RyTWF0Y2hlcik7Ci19OwotCi0v
LyBJbXBsZW1lbnRzIHRoZSBwb2x5bW9ycGhpYyBTdGFydHNXaXRoKHN1YnN0cmluZykgbWF0Y2hl
ciwgd2hpY2gKLS8vIGNhbiBiZSB1c2VkIGFzIGEgTWF0Y2hlcjxUPiBhcyBsb25nIGFzIFQgY2Fu
IGJlIGNvbnZlcnRlZCB0byBhCi0vLyBzdHJpbmcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5n
VHlwZT4KLWNsYXNzIFN0YXJ0c1dpdGhNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFN0
YXJ0c1dpdGhNYXRjaGVyKGNvbnN0IFN0cmluZ1R5cGUmIHByZWZpeCkgOiBwcmVmaXhfKHByZWZp
eCkgewotICB9Ci0KLSAgLy8gQWNjZXB0cyBwb2ludGVyIHR5cGVzLCBwYXJ0aWN1bGFybHk6Ci0g
IC8vICAgY29uc3QgY2hhcioKLSAgLy8gICBjaGFyKgotICAvLyAgIGNvbnN0IHdjaGFyX3QqCi0g
IC8vICAgd2NoYXJfdCoKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICBib29sIE1h
dGNoQW5kRXhwbGFpbihDaGFyVHlwZSogcywgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICByZXR1cm4gcyAhPSBOVUxMICYmIE1hdGNoQW5kRXhwbGFpbihTdHJpbmdU
eXBlKHMpLCBsaXN0ZW5lcik7Ci0gIH0KLQotICAvLyBNYXRjaGVzIGFueXRoaW5nIHRoYXQgY2Fu
IGNvbnZlcnQgdG8gU3RyaW5nVHlwZS4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIHRlbXBsYXRlLCBu
b3QganVzdCBhIHBsYWluIGZ1bmN0aW9uIHdpdGggY29uc3QgU3RyaW5nVHlwZSYsCi0gIC8vIGJl
Y2F1c2UgU3RyaW5nUGllY2UgaGFzIHNvbWUgaW50ZXJmZXJpbmcgbm9uLWV4cGxpY2l0IGNvbnN0
cnVjdG9ycy4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZWVTdHJpbmdUeXBlPgotICBib29s
IE1hdGNoQW5kRXhwbGFpbihjb25zdCBNYXRjaGVlU3RyaW5nVHlwZSYgcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlzdGVuZXIgKi8pIGNvbnN0IHsK
LSAgICBjb25zdCBTdHJpbmdUeXBlJiBzMihzKTsKLSAgICByZXR1cm4gczIubGVuZ3RoKCkgPj0g
cHJlZml4Xy5sZW5ndGgoKSAmJgotICAgICAgICBzMi5zdWJzdHIoMCwgcHJlZml4Xy5sZW5ndGgo
KSkgPT0gcHJlZml4XzsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgInN0YXJ0cyB3aXRoICI7Ci0gICAgVW5pdmVyc2FsUHJp
bnQocHJlZml4Xywgb3MpOwotICB9Ci0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJkb2Vzbid0IHN0YXJ0IHdpdGggIjsK
LSAgICBVbml2ZXJzYWxQcmludChwcmVmaXhfLCBvcyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNv
bnN0IFN0cmluZ1R5cGUgcHJlZml4XzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFN0YXJ0
c1dpdGhNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIEVuZHNX
aXRoKHN1YnN0cmluZykgbWF0Y2hlciwgd2hpY2gKLS8vIGNhbiBiZSB1c2VkIGFzIGEgTWF0Y2hl
cjxUPiBhcyBsb25nIGFzIFQgY2FuIGJlIGNvbnZlcnRlZCB0byBhCi0vLyBzdHJpbmcuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgU3RyaW5nVHlwZT4KLWNsYXNzIEVuZHNXaXRoTWF0Y2hlciB7Ci0gcHVi
bGljOgotICBleHBsaWNpdCBFbmRzV2l0aE1hdGNoZXIoY29uc3QgU3RyaW5nVHlwZSYgc3VmZml4
KSA6IHN1ZmZpeF8oc3VmZml4KSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFy
dGljdWxhcmx5OgotICAvLyAgIGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25z
dCB3Y2hhcl90KgotICAvLyAgIHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVu
ZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHMgIT0gTlVMTCAmJiBNYXRjaEFuZEV4
cGxhaW4oU3RyaW5nVHlwZShzKSwgbGlzdGVuZXIpOwotICB9Ci0KLSAgLy8gTWF0Y2hlcyBhbnl0
aGluZyB0aGF0IGNhbiBjb252ZXJ0IHRvIFN0cmluZ1R5cGUuCi0gIC8vCi0gIC8vIFRoaXMgaXMg
YSB0ZW1wbGF0ZSwgbm90IGp1c3QgYSBwbGFpbiBmdW5jdGlvbiB3aXRoIGNvbnN0IFN0cmluZ1R5
cGUmLAotICAvLyBiZWNhdXNlIFN0cmluZ1BpZWNlIGhhcyBzb21lIGludGVyZmVyaW5nIG5vbi1l
eHBsaWNpdCBjb25zdHJ1Y3RvcnMuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVlU3RyaW5n
VHlwZT4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgTWF0Y2hlZVN0cmluZ1R5cGUmIHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVy
ICovKSBjb25zdCB7Ci0gICAgY29uc3QgU3RyaW5nVHlwZSYgczIocyk7Ci0gICAgcmV0dXJuIHMy
Lmxlbmd0aCgpID49IHN1ZmZpeF8ubGVuZ3RoKCkgJiYKLSAgICAgICAgczIuc3Vic3RyKHMyLmxl
bmd0aCgpIC0gc3VmZml4Xy5sZW5ndGgoKSkgPT0gc3VmZml4XzsKLSAgfQotCi0gIHZvaWQgRGVz
Y3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImVuZHMgd2l0
aCAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1ZmZpeF8sIG9zKTsKLSAgfQotCi0gIHZvaWQgRGVz
Y3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAi
ZG9lc24ndCBlbmQgd2l0aCAiOwotICAgIFVuaXZlcnNhbFByaW50KHN1ZmZpeF8sIG9zKTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgY29uc3QgU3RyaW5nVHlwZSBzdWZmaXhfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oRW5kc1dpdGhNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgcG9s
eW1vcnBoaWMgbWF0Y2hlcnMgTWF0Y2hlc1JlZ2V4KHJlZ2V4KSBhbmQKLS8vIENvbnRhaW5zUmVn
ZXgocmVnZXgpLCB3aGljaCBjYW4gYmUgdXNlZCBhcyBhIE1hdGNoZXI8VD4gYXMgbG9uZyBhcwot
Ly8gVCBjYW4gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nLgotY2xhc3MgTWF0Y2hlc1JlZ2V4TWF0
Y2hlciB7Ci0gcHVibGljOgotICBNYXRjaGVzUmVnZXhNYXRjaGVyKGNvbnN0IFJFKiByZWdleCwg
Ym9vbCBmdWxsX21hdGNoKQotICAgICAgOiByZWdleF8ocmVnZXgpLCBmdWxsX21hdGNoXyhmdWxs
X21hdGNoKSB7fQotCi0gIC8vIEFjY2VwdHMgcG9pbnRlciB0eXBlcywgcGFydGljdWxhcmx5Ogot
ICAvLyAgIGNvbnN0IGNoYXIqCi0gIC8vICAgY2hhcioKLSAgLy8gICBjb25zdCB3Y2hhcl90Kgot
ICAvLyAgIHdjaGFyX3QqCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgYm9vbCBN
YXRjaEFuZEV4cGxhaW4oQ2hhclR5cGUqIHMsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVy
KSBjb25zdCB7Ci0gICAgcmV0dXJuIHMgIT0gTlVMTCAmJiBNYXRjaEFuZEV4cGxhaW4oc3RkOjpz
dHJpbmcocyksIGxpc3RlbmVyKTsKLSAgfQotCi0gIC8vIE1hdGNoZXMgYW55dGhpbmcgdGhhdCBj
YW4gY29udmVydCB0byBzdGQ6OnN0cmluZy4KLSAgLy8KLSAgLy8gVGhpcyBpcyBhIHRlbXBsYXRl
LCBub3QganVzdCBhIHBsYWluIGZ1bmN0aW9uIHdpdGggY29uc3Qgc3RkOjpzdHJpbmcmLAotICAv
LyBiZWNhdXNlIFN0cmluZ1BpZWNlIGhhcyBzb21lIGludGVyZmVyaW5nIG5vbi1leHBsaWNpdCBj
b25zdHJ1Y3RvcnMuCi0gIHRlbXBsYXRlIDxjbGFzcyBNYXRjaGVlU3RyaW5nVHlwZT4KLSAgYm9v
bCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgTWF0Y2hlZVN0cmluZ1R5cGUmIHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHMyKHMpOwotICAgIHJldHVybiBmdWxsX21hdGNoXyA/
IFJFOjpGdWxsTWF0Y2goczIsICpyZWdleF8pIDoKLSAgICAgICAgUkU6OlBhcnRpYWxNYXRjaChz
MiwgKnJlZ2V4Xyk7Ci0gIH0KLQotICB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9z
KSBjb25zdCB7Ci0gICAgKm9zIDw8IChmdWxsX21hdGNoXyA/ICJtYXRjaGVzIiA6ICJjb250YWlu
cyIpCi0gICAgICAgIDw8ICIgcmVndWxhciBleHByZXNzaW9uICI7Ci0gICAgVW5pdmVyc2FsUHJp
bnRlcjxzdGQ6OnN0cmluZz46OlByaW50KHJlZ2V4Xy0+cGF0dGVybigpLCBvcyk7Ci0gIH0KLQot
ICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAg
ICAqb3MgPDwgImRvZXNuJ3QgIiA8PCAoZnVsbF9tYXRjaF8gPyAibWF0Y2giIDogImNvbnRhaW4i
KQotICAgICAgICA8PCAiIHJlZ3VsYXIgZXhwcmVzc2lvbiAiOwotICAgIFVuaXZlcnNhbFByaW50
ZXI8c3RkOjpzdHJpbmc+OjpQcmludChyZWdleF8tPnBhdHRlcm4oKSwgb3MpOwotICB9Ci0KLSBw
cml2YXRlOgotICBjb25zdCBpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBSRT4gcmVnZXhfOwot
ICBjb25zdCBib29sIGZ1bGxfbWF0Y2hfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oTWF0
Y2hlc1JlZ2V4TWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIGEgbWF0Y2hlciB0aGF0IGNv
bXBhcmVzIHRoZSB0d28gZmllbGRzIG9mIGEgMi10dXBsZQotLy8gdXNpbmcgb25lIG9mIHRoZSA9
PSwgPD0sIDwsIGV0Yywgb3BlcmF0b3JzLiAgVGhlIHR3byBmaWVsZHMgYmVpbmcKLS8vIGNvbXBh
cmVkIGRvbid0IGhhdmUgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlLgotLy8KLS8vIFRoZSBtYXRjaGVy
IGRlZmluZWQgaGVyZSBpcyBwb2x5bW9ycGhpYyAoZm9yIGV4YW1wbGUsIEVxKCkgY2FuIGJlCi0v
LyB1c2VkIHRvIG1hdGNoIGEgdHVwbGU8aW50LCBzaG9ydD4sIGEgdHVwbGU8Y29uc3QgbG9uZyYs
IGRvdWJsZT4sCi0vLyBldGMpLiAgVGhlcmVmb3JlIHdlIHVzZSBhIHRlbXBsYXRlIHR5cGUgY29u
dmVyc2lvbiBvcGVyYXRvciBpbiB0aGUKLS8vIGltcGxlbWVudGF0aW9uLgotdGVtcGxhdGUgPHR5
cGVuYW1lIEQsIHR5cGVuYW1lIE9wPgotY2xhc3MgUGFpck1hdGNoQmFzZSB7Ci0gcHVibGljOgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBNYXRjaGVy
PCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1h
dGNoZXIobmV3IEltcGw8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiA+KTsKLSAgfQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBvcGVyYXRvciBNYXRjaGVyPGNvbnN0
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiY+KCkgY29uc3QgewotICAgIHJldHVybiBNYWtlTWF0
Y2hlcihuZXcgSW1wbDxjb25zdCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4mPik7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIHN0YXRpYyA6OnN0ZDo6b3N0cmVhbSYgR2V0RGVzYyg6OnN0ZDo6b3N0cmVh
bSYgb3MpIHsgIC8vIE5PTElOVAotICAgIHJldHVybiBvcyA8PCBEOjpEZXNjKCk7Ci0gIH0KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hl
ckludGVyZmFjZTxUdXBsZT4gewotICAgcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFu
ZEV4cGxhaW4oCi0gICAgICAgIFR1cGxlIGFyZ3MsCi0gICAgICAgIE1hdGNoUmVzdWx0TGlzdGVu
ZXIqIC8qIGxpc3RlbmVyICovKSBjb25zdCB7Ci0gICAgICByZXR1cm4gT3AoKSg6OnRlc3Rpbmc6
OmdldDwwPihhcmdzKSwgOjp0ZXN0aW5nOjpnZXQ8MT4oYXJncykpOwotICAgIH0KLSAgICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpv
cyA8PCAiYXJlICIgPDwgR2V0RGVzYzsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJl
TmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpvcyA8PCAiYXJl
bid0ICIgPDwgR2V0RGVzYzsKLSAgICB9Ci0gIH07Ci19OwotCi1jbGFzcyBFcTJNYXRjaGVyIDog
cHVibGljIFBhaXJNYXRjaEJhc2U8RXEyTWF0Y2hlciwgQW55RXE+IHsKLSBwdWJsaWM6Ci0gIHN0
YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4gImFuIGVxdWFsIHBhaXIiOyB9Ci19Owot
Y2xhc3MgTmUyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hCYXNlPE5lMk1hdGNoZXIsIEFueU5l
PiB7Ci0gcHVibGljOgotICBzdGF0aWMgY29uc3QgY2hhciogRGVzYygpIHsgcmV0dXJuICJhbiB1
bmVxdWFsIHBhaXIiOyB9Ci19OwotY2xhc3MgTHQyTWF0Y2hlciA6IHB1YmxpYyBQYWlyTWF0Y2hC
YXNlPEx0Mk1hdGNoZXIsIEFueUx0PiB7Ci0gcHVibGljOgotICBzdGF0aWMgY29uc3QgY2hhciog
RGVzYygpIHsgcmV0dXJuICJhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IDwgdGhlIHNlY29uZCI7IH0K
LX07Ci1jbGFzcyBHdDJNYXRjaGVyIDogcHVibGljIFBhaXJNYXRjaEJhc2U8R3QyTWF0Y2hlciwg
QW55R3Q+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBEZXNjKCkgeyByZXR1cm4g
ImEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPiB0aGUgc2Vjb25kIjsgfQotfTsKLWNsYXNzIExlMk1h
dGNoZXIgOiBwdWJsaWMgUGFpck1hdGNoQmFzZTxMZTJNYXRjaGVyLCBBbnlMZT4gewotIHB1Ymxp
YzoKLSAgc3RhdGljIGNvbnN0IGNoYXIqIERlc2MoKSB7IHJldHVybiAiYSBwYWlyIHdoZXJlIHRo
ZSBmaXJzdCA8PSB0aGUgc2Vjb25kIjsgfQotfTsKLWNsYXNzIEdlMk1hdGNoZXIgOiBwdWJsaWMg
UGFpck1hdGNoQmFzZTxHZTJNYXRjaGVyLCBBbnlHZT4gewotIHB1YmxpYzoKLSAgc3RhdGljIGNv
bnN0IGNoYXIqIERlc2MoKSB7IHJldHVybiAiYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA+PSB0aGUg
c2Vjb25kIjsgfQotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgTm90KC4uLikgbWF0Y2hlciBmb3Ig
YSBwYXJ0aWN1bGFyIGFyZ3VtZW50IHR5cGUgVC4KLS8vIFdlIGRvIG5vdCBuZXN0IGl0IGluc2lk
ZSB0aGUgTm90TWF0Y2hlciBjbGFzcyB0ZW1wbGF0ZSwgYXMgdGhhdAotLy8gd2lsbCBwcmV2ZW50
IGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiBOb3RNYXRjaGVyIGZyb20gc2hhcmluZwotLy8g
dGhlIHNhbWUgTm90TWF0Y2hlckltcGw8VD4gY2xhc3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LWNsYXNzIE5vdE1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTm90TWF0Y2hlckltcGwoY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hl
cikKLSAgICAgIDogbWF0Y2hlcl8obWF0Y2hlcikge30KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hB
bmRFeHBsYWluKFQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAg
ICByZXR1cm4gIW1hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbih4LCBsaXN0ZW5lcik7Ci0gIH0KLQot
ICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAg
ICBtYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBtYXRj
aGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTWF0Y2hlcjxU
PiBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKE5vdE1hdGNoZXJJbXBsKTsK
LX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIE5vdChtKSBtYXRjaGVyLCB3aGljaCBtYXRjaGVzIGEg
dmFsdWUgdGhhdCBkb2Vzbid0Ci0vLyBtYXRjaCBtYXRjaGVyIG0uCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgSW5uZXJNYXRjaGVyPgotY2xhc3MgTm90TWF0Y2hlciB7Ci0gcHVibGljOgotICBleHBsaWNp
dCBOb3RNYXRjaGVyKElubmVyTWF0Y2hlciBtYXRjaGVyKSA6IG1hdGNoZXJfKG1hdGNoZXIpIHt9
Ci0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIE5v
dChtKSB0byBiZSB1c2VkCi0gIC8vIHRvIG1hdGNoIGFueSB0eXBlIG0gY2FuIG1hdGNoLgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxUPigpIGNvbnN0IHsKLSAg
ICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgTm90TWF0Y2hlckltcGw8VD4oU2FmZU1hdGNoZXJDYXN0
PFQ+KG1hdGNoZXJfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICBJbm5lck1hdGNoZXIgbWF0Y2hl
cl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhOb3RNYXRjaGVyKTsKLX07Ci0KLS8vIElt
cGxlbWVudHMgdGhlIEFsbE9mKG0xLCBtMikgbWF0Y2hlciBmb3IgYSBwYXJ0aWN1bGFyIGFyZ3Vt
ZW50IHR5cGUKLS8vIFQuIFdlIGRvIG5vdCBuZXN0IGl0IGluc2lkZSB0aGUgQm90aE9mTWF0Y2hl
ciBjbGFzcyB0ZW1wbGF0ZSwgYXMKLS8vIHRoYXQgd2lsbCBwcmV2ZW50IGRpZmZlcmVudCBpbnN0
YW50aWF0aW9ucyBvZiBCb3RoT2ZNYXRjaGVyIGZyb20KLS8vIHNoYXJpbmcgdGhlIHNhbWUgQm90
aE9mTWF0Y2hlckltcGw8VD4gY2xhc3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEJv
dGhPZk1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoK
LSAgQm90aE9mTWF0Y2hlckltcGwoY29uc3QgTWF0Y2hlcjxUPiYgbWF0Y2hlcjEsIGNvbnN0IE1h
dGNoZXI8VD4mIG1hdGNoZXIyKQotICAgICAgOiBtYXRjaGVyMV8obWF0Y2hlcjEpLCBtYXRjaGVy
Ml8obWF0Y2hlcjIpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJl
YW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICIoIjsKLSAgICBtYXRjaGVyMV8uRGVzY3JpYmVU
byhvcyk7Ci0gICAgKm9zIDw8ICIpIGFuZCAoIjsKLSAgICBtYXRjaGVyMl8uRGVzY3JpYmVUbyhv
cyk7Ci0gICAgKm9zIDw8ICIpIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0
aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICIoIjsKLSAgICBt
YXRjaGVyMV8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICAqb3MgPDwgIikgb3IgKCI7Ci0g
ICAgbWF0Y2hlcjJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgKm9zIDw8ICIpIjsKLSAg
fQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIElmIGVpdGhlciBtYXRjaGVyMV8gb3IgbWF0
Y2hlcjJfIGRvZXNuJ3QgbWF0Y2ggeCwgd2Ugb25seSBuZWVkCi0gICAgLy8gdG8gZXhwbGFpbiB3
aHkgb25lIG9mIHRoZW0gZmFpbHMuCi0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0
ZW5lcjE7Ci0gICAgaWYgKCFtYXRjaGVyMV8uTWF0Y2hBbmRFeHBsYWluKHgsICZsaXN0ZW5lcjEp
KSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgbGlzdGVuZXIxLnN0cigpOwotICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXIyOwot
ICAgIGlmICghbWF0Y2hlcjJfLk1hdGNoQW5kRXhwbGFpbih4LCAmbGlzdGVuZXIyKSkgewotICAg
ICAgKmxpc3RlbmVyIDw8IGxpc3RlbmVyMi5zdHIoKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICAvLyBPdGhlcndpc2Ugd2UgbmVlZCB0byBleHBsYWluIHdoeSAqYm90aCogb2Yg
dGhlbSBtYXRjaC4KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzMSA9IGxpc3RlbmVyMS5zdHIoKTsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBzMiA9IGxpc3RlbmVyMi5zdHIoKTsKLQotICAgIGlmIChz
MSA9PSAiIikgewotICAgICAgKmxpc3RlbmVyIDw8IHMyOwotICAgIH0gZWxzZSB7Ci0gICAgICAq
bGlzdGVuZXIgPDwgczE7Ci0gICAgICBpZiAoczIgIT0gIiIpIHsKLSAgICAgICAgKmxpc3RlbmVy
IDw8ICIsIGFuZCAiIDw8IHMyOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTWF0Y2hlcjxUPiBtYXRjaGVyMV87Ci0gIGNvbnN0IE1h
dGNoZXI8VD4gbWF0Y2hlcjJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oQm90aE9mTWF0
Y2hlckltcGwpOwotfTsKLQotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLS8vIE1hdGNoZXJMaXN0IHBy
b3ZpZGVzIG1lY2hhbmlzbXMgZm9yIHN0b3JpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgbWF0Y2hl
cnMgaW4KLS8vIGEgbGlzdCBzdHJ1Y3R1cmUgKExpc3RUeXBlKSBhbmQgY3JlYXRpbmcgYSBjb21i
aW5pbmcgbWF0Y2hlciBmcm9tIHN1Y2ggYQotLy8gbGlzdC4KLS8vIFRoZSB0ZW1wbGF0ZSBpcyBk
ZWZpbmVkIHJlY3Vyc2l2ZWx5IHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgcGFyYW10ZXJz
OgotLy8gICAqIGtTaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIE1hdGNoZXJMaXN0LgotLy8gICAq
IEhlYWQgaXMgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IG1hdGNoZXIgb2YgdGhlIGxpc3QuCi0vLyAg
ICogVGFpbCBkZW5vdGVzIHRoZSB0eXBlcyBvZiB0aGUgcmVtYWluaW5nIG1hdGNoZXJzIG9mIHRo
ZSBsaXN0LgotdGVtcGxhdGUgPGludCBrU2l6ZSwgdHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUuLi4g
VGFpbD4KLXN0cnVjdCBNYXRjaGVyTGlzdCB7Ci0gIHR5cGVkZWYgTWF0Y2hlckxpc3Q8a1NpemUg
LSAxLCBUYWlsLi4uPiBNYXRjaGVyTGlzdFRhaWw7Ci0gIHR5cGVkZWYgOjpzdGQ6OnBhaXI8SGVh
ZCwgdHlwZW5hbWUgTWF0Y2hlckxpc3RUYWlsOjpMaXN0VHlwZT4gTGlzdFR5cGU7Ci0KLSAgLy8g
QnVpbGRMaXN0IHN0b3JlcyB2YXJpYWRpYyB0eXBlIHZhbHVlcyBpbiBhIG5lc3RlZCBwYWlyIHN0
cnVjdHVyZS4KLSAgLy8gRXhhbXBsZToKLSAgLy8gTWF0Y2hlckxpc3Q8MywgaW50LCBzdHJpbmcs
IGZsb2F0Pjo6QnVpbGRMaXN0KDUsICJmb28iLCAyLjApIHdpbGwgcmV0dXJuCi0gIC8vIHRoZSBj
b3JyZXNwb25kaW5nIHJlc3VsdCBvZiB0eXBlIHBhaXI8aW50LCBwYWlyPHN0cmluZywgZmxvYXQ+
Pi4KLSAgc3RhdGljIExpc3RUeXBlIEJ1aWxkTGlzdChjb25zdCBIZWFkJiBtYXRjaGVyLCBjb25z
dCBUYWlsJi4uLiB0YWlsKSB7Ci0gICAgcmV0dXJuIExpc3RUeXBlKG1hdGNoZXIsIE1hdGNoZXJM
aXN0VGFpbDo6QnVpbGRMaXN0KHRhaWwuLi4pKTsKLSAgfQotCi0gIC8vIENyZWF0ZU1hdGNoZXI8
VD4gY3JlYXRlcyBhIE1hdGNoZXI8VD4gZnJvbSBhIGdpdmVuIGxpc3Qgb2YgbWF0Y2hlcnMgKGJ1
aWx0Ci0gIC8vIGJ5IEJ1aWxkTGlzdCgpKS4gQ29tYmluaW5nTWF0Y2hlcjxUPiBpcyB1c2VkIHRv
IGNvbWJpbmUgdGhlIG1hdGNoZXJzIG9mIHRoZQotICAvLyBsaXN0LiBDb21iaW5pbmdNYXRjaGVy
PFQ+IG11c3QgaW1wbGVtZW50IE1hdGNoZXJJbnRlcmZhY2U8VD4gYW5kIGhhdmUgYQotICAvLyBj
b25zdHJ1Y3RvciB0YWtpbmcgdHdvIE1hdGNoZXI8VD5zIGFzIGlucHV0LgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdGVtcGxhdGUgPHR5cGVuYW1lIC8qIFQgKi8+IGNsYXNzIENvbWJpbmluZ01h
dGNoZXI+Ci0gIHN0YXRpYyBNYXRjaGVyPFQ+IENyZWF0ZU1hdGNoZXIoY29uc3QgTGlzdFR5cGUm
IG1hdGNoZXJzKSB7Ci0gICAgcmV0dXJuIE1hdGNoZXI8VD4obmV3IENvbWJpbmluZ01hdGNoZXI8
VD4oCi0gICAgICAgIFNhZmVNYXRjaGVyQ2FzdDxUPihtYXRjaGVycy5maXJzdCksCi0gICAgICAg
IE1hdGNoZXJMaXN0VGFpbDo6dGVtcGxhdGUgQ3JlYXRlTWF0Y2hlcjxULCBDb21iaW5pbmdNYXRj
aGVyPigKLSAgICAgICAgICAgIG1hdGNoZXJzLnNlY29uZCkpKTsKLSAgfQotfTsKLQotLy8gVGhl
IGZvbGxvd2luZyBkZWZpbmVzIHRoZSBiYXNlIGNhc2UgZm9yIHRoZSByZWN1cnNpdmUgZGVmaW5p
dGlvbiBvZgotLy8gTWF0Y2hlckxpc3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlcjEsIHR5
cGVuYW1lIE1hdGNoZXIyPgotc3RydWN0IE1hdGNoZXJMaXN0PDIsIE1hdGNoZXIxLCBNYXRjaGVy
Mj4gewotICB0eXBlZGVmIDo6c3RkOjpwYWlyPE1hdGNoZXIxLCBNYXRjaGVyMj4gTGlzdFR5cGU7
Ci0KLSAgc3RhdGljIExpc3RUeXBlIEJ1aWxkTGlzdChjb25zdCBNYXRjaGVyMSYgbWF0Y2hlcjEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWF0Y2hlcjImIG1hdGNoZXIyKSB7
Ci0gICAgcmV0dXJuIDo6c3RkOjpwYWlyPE1hdGNoZXIxLCBNYXRjaGVyMj4obWF0Y2hlcjEsIG1h
dGNoZXIyKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgLyogVCAqLz4gY2xhc3MgQ29tYmluaW5nTWF0Y2hlcj4KLSAgc3RhdGljIE1hdGNoZXI8VD4g
Q3JlYXRlTWF0Y2hlcihjb25zdCBMaXN0VHlwZSYgbWF0Y2hlcnMpIHsKLSAgICByZXR1cm4gTWF0
Y2hlcjxUPihuZXcgQ29tYmluaW5nTWF0Y2hlcjxUPigKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0
PFQ+KG1hdGNoZXJzLmZpcnN0KSwKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXJz
LnNlY29uZCkpKTsKLSAgfQotfTsKLQotLy8gVmFyaWFkaWNNYXRjaGVyIGlzIHVzZWQgZm9yIHRo
ZSB2YXJpYWRpYyBpbXBsZW1lbnRhdGlvbiBvZgotLy8gQWxsT2YobV8xLCBtXzIsIC4uLikgYW5k
IEFueU9mKG1fMSwgbV8yLCAuLi4pLgotLy8gQ29tYmluaW5nTWF0Y2hlcjxUPiBpcyB1c2VkIHRv
IHJlY3Vyc2l2ZWx5IGNvbWJpbmUgdGhlIHByb3ZpZGVkIG1hdGNoZXJzCi0vLyAob2YgdHlwZSBB
cmdzLi4uKS4KLXRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQ29tYmluaW5n
TWF0Y2hlciwgdHlwZW5hbWUuLi4gQXJncz4KLWNsYXNzIFZhcmlhZGljTWF0Y2hlciB7Ci0gcHVi
bGljOgotICBWYXJpYWRpY01hdGNoZXIoY29uc3QgQXJncyYuLi4gbWF0Y2hlcnMpICAvLyBOT0xJ
TlQKLSAgICAgIDogbWF0Y2hlcnNfKE1hdGNoZXJMaXN0VHlwZTo6QnVpbGRMaXN0KG1hdGNoZXJz
Li4uKSkge30KLQotICAvLyBUaGlzIHRlbXBsYXRlIHR5cGUgY29udmVyc2lvbiBvcGVyYXRvciBh
bGxvd3MgYW4KLSAgLy8gVmFyaWFkaWNNYXRjaGVyPE1hdGNoZXIxLCBNYXRjaGVyMi4uLj4gb2Jq
ZWN0IHRvIG1hdGNoIGFueSB0eXBlIHRoYXQKLSAgLy8gYWxsIG9mIHRoZSBwcm92aWRlZCBtYXRj
aGVycyAoTWF0Y2hlcjEsIE1hdGNoZXIyLCAuLi4pIGNhbiBtYXRjaC4KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8VD4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1h
dGNoZXJMaXN0VHlwZTo6dGVtcGxhdGUgQ3JlYXRlTWF0Y2hlcjxULCBDb21iaW5pbmdNYXRjaGVy
PigKLSAgICAgICAgbWF0Y2hlcnNfKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiBNYXRj
aGVyTGlzdDxzaXplb2YuLi4oQXJncyksIEFyZ3MuLi4+IE1hdGNoZXJMaXN0VHlwZTsKLQotICBj
b25zdCB0eXBlbmFtZSBNYXRjaGVyTGlzdFR5cGU6Okxpc3RUeXBlIG1hdGNoZXJzXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKFZhcmlhZGljTWF0Y2hlcik7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KLXVzaW5nIEFsbE9mTWF0Y2hlciA9IFZhcmlhZGljTWF0Y2hlcjxC
b3RoT2ZNYXRjaGVySW1wbCwgQXJncy4uLj47Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgx
MQotCi0vLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlIEFsbE9mKG1fMSwgLi4uLCBtX24pIG1h
dGNoZXIsIHdoaWNoCi0vLyBtYXRjaGVzIGEgdmFsdWUgdGhhdCBtYXRjaGVzIGFsbCBvZiB0aGUg
bWF0Y2hlcnMgbV8xLCAuLi4sIGFuZCBtX24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlcjEs
IHR5cGVuYW1lIE1hdGNoZXIyPgotY2xhc3MgQm90aE9mTWF0Y2hlciB7Ci0gcHVibGljOgotICBC
b3RoT2ZNYXRjaGVyKE1hdGNoZXIxIG1hdGNoZXIxLCBNYXRjaGVyMiBtYXRjaGVyMikKLSAgICAg
IDogbWF0Y2hlcjFfKG1hdGNoZXIxKSwgbWF0Y2hlcjJfKG1hdGNoZXIyKSB7fQotCi0gIC8vIFRo
aXMgdGVtcGxhdGUgdHlwZSBjb252ZXJzaW9uIG9wZXJhdG9yIGFsbG93cyBhCi0gIC8vIEJvdGhP
Zk1hdGNoZXI8TWF0Y2hlcjEsIE1hdGNoZXIyPiBvYmplY3QgdG8gbWF0Y2ggYW55IHR5cGUgdGhh
dAotICAvLyBib3RoIE1hdGNoZXIxIGFuZCBNYXRjaGVyMiBjYW4gbWF0Y2guCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3QgewotICAgIHJldHVy
biBNYXRjaGVyPFQ+KG5ldyBCb3RoT2ZNYXRjaGVySW1wbDxUPihTYWZlTWF0Y2hlckNhc3Q8VD4o
bWF0Y2hlcjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIyXykpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
TWF0Y2hlcjEgbWF0Y2hlcjFfOwotICBNYXRjaGVyMiBtYXRjaGVyMl87Ci0KLSAgR1RFU1RfRElT
QUxMT1dfQVNTSUdOXyhCb3RoT2ZNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIEFu
eU9mKG0xLCBtMikgbWF0Y2hlciBmb3IgYSBwYXJ0aWN1bGFyIGFyZ3VtZW50IHR5cGUKLS8vIFQu
ICBXZSBkbyBub3QgbmVzdCBpdCBpbnNpZGUgdGhlIEFueU9mTWF0Y2hlciBjbGFzcyB0ZW1wbGF0
ZSwgYXMKLS8vIHRoYXQgd2lsbCBwcmV2ZW50IGRpZmZlcmVudCBpbnN0YW50aWF0aW9ucyBvZiBB
bnlPZk1hdGNoZXIgZnJvbQotLy8gc2hhcmluZyB0aGUgc2FtZSBFaXRoZXJPZk1hdGNoZXJJbXBs
PFQ+IGNsYXNzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBFaXRoZXJPZk1hdGNoZXJJ
bXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8VD4gewotIHB1YmxpYzoKLSAgRWl0aGVyT2ZN
YXRjaGVySW1wbChjb25zdCBNYXRjaGVyPFQ+JiBtYXRjaGVyMSwgY29uc3QgTWF0Y2hlcjxUPiYg
bWF0Y2hlcjIpCi0gICAgICA6IG1hdGNoZXIxXyhtYXRjaGVyMSksIG1hdGNoZXIyXyhtYXRjaGVy
Mikge30KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICAqb3MgPDwgIigiOwotICAgIG1hdGNoZXIxXy5EZXNjcmliZVRvKG9zKTsKLSAg
ICAqb3MgPDwgIikgb3IgKCI7Ci0gICAgbWF0Y2hlcjJfLkRlc2NyaWJlVG8ob3MpOwotICAgICpv
cyA8PCAiKSI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3Rk
Ojpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiKCI7Ci0gICAgbWF0Y2hlcjFfLkRl
c2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgKm9zIDw8ICIpIGFuZCAoIjsKLSAgICBtYXRjaGVy
Ml8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICAqb3MgPDwgIikiOwotICB9Ci0KLSAgdmly
dHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihUIHgsIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7Ci0gICAgLy8gSWYgZWl0aGVyIG1hdGNoZXIxXyBvciBtYXRjaGVyMl8gbWF0
Y2hlcyB4LCB3ZSBqdXN0IG5lZWQgdG8KLSAgICAvLyBleHBsYWluIHdoeSAqb25lKiBvZiB0aGVt
IG1hdGNoZXMuCi0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjE7Ci0gICAg
aWYgKG1hdGNoZXIxXy5NYXRjaEFuZEV4cGxhaW4oeCwgJmxpc3RlbmVyMSkpIHsKLSAgICAgICps
aXN0ZW5lciA8PCBsaXN0ZW5lcjEuc3RyKCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyMjsKLSAgICBpZiAobWF0Y2hl
cjJfLk1hdGNoQW5kRXhwbGFpbih4LCAmbGlzdGVuZXIyKSkgewotICAgICAgKmxpc3RlbmVyIDw8
IGxpc3RlbmVyMi5zdHIoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIE90
aGVyd2lzZSB3ZSBuZWVkIHRvIGV4cGxhaW4gd2h5ICpib3RoKiBvZiB0aGVtIGZhaWwuCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgczEgPSBsaXN0ZW5lcjEuc3RyKCk7Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgczIgPSBsaXN0ZW5lcjIuc3RyKCk7Ci0KLSAgICBpZiAoczEgPT0gIiIpIHsKLSAgICAg
ICpsaXN0ZW5lciA8PCBzMjsKLSAgICB9IGVsc2UgewotICAgICAgKmxpc3RlbmVyIDw8IHMxOwot
ICAgICAgaWYgKHMyICE9ICIiKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAiLCBhbmQgIiA8PCBz
MjsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSBwcml2YXRlOgot
ICBjb25zdCBNYXRjaGVyPFQ+IG1hdGNoZXIxXzsKLSAgY29uc3QgTWF0Y2hlcjxUPiBtYXRjaGVy
Ml87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhFaXRoZXJPZk1hdGNoZXJJbXBsKTsKLX07
Ci0KLSNpZiBHVEVTVF9MQU5HX0NYWDExCi0vLyBBbnlPZk1hdGNoZXIgaXMgdXNlZCBmb3IgdGhl
IHZhcmlhZGljIGltcGxlbWVudGF0aW9uIG9mIEFueU9mKG1fMSwgbV8yLCAuLi4pLgotdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci11c2luZyBBbnlPZk1hdGNoZXIgPSBWYXJpYWRpY01hdGNo
ZXI8RWl0aGVyT2ZNYXRjaGVySW1wbCwgQXJncy4uLj47Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTEFO
R19DWFgxMQotCi0vLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlIEFueU9mKG1fMSwgLi4uLCBt
X24pIG1hdGNoZXIsIHdoaWNoCi0vLyBtYXRjaGVzIGEgdmFsdWUgdGhhdCBtYXRjaGVzIGF0IGxl
YXN0IG9uZSBvZiB0aGUgbWF0Y2hlcnMgbV8xLCAuLi4sCi0vLyBhbmQgbV9uLgotdGVtcGxhdGUg
PHR5cGVuYW1lIE1hdGNoZXIxLCB0eXBlbmFtZSBNYXRjaGVyMj4KLWNsYXNzIEVpdGhlck9mTWF0
Y2hlciB7Ci0gcHVibGljOgotICBFaXRoZXJPZk1hdGNoZXIoTWF0Y2hlcjEgbWF0Y2hlcjEsIE1h
dGNoZXIyIG1hdGNoZXIyKQotICAgICAgOiBtYXRjaGVyMV8obWF0Y2hlcjEpLCBtYXRjaGVyMl8o
bWF0Y2hlcjIpIHt9Ci0KLSAgLy8gVGhpcyB0ZW1wbGF0ZSB0eXBlIGNvbnZlcnNpb24gb3BlcmF0
b3IgYWxsb3dzIGEKLSAgLy8gRWl0aGVyT2ZNYXRjaGVyPE1hdGNoZXIxLCBNYXRjaGVyMj4gb2Jq
ZWN0IHRvIG1hdGNoIGFueSB0eXBlIHRoYXQKLSAgLy8gYm90aCBNYXRjaGVyMSBhbmQgTWF0Y2hl
cjIgY2FuIG1hdGNoLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgTWF0Y2hl
cjxUPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWF0Y2hlcjxUPihuZXcgRWl0aGVyT2ZNYXRjaGVy
SW1wbDxUPigKLSAgICAgICAgU2FmZU1hdGNoZXJDYXN0PFQ+KG1hdGNoZXIxXyksIFNhZmVNYXRj
aGVyQ2FzdDxUPihtYXRjaGVyMl8pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIE1hdGNoZXIxIG1h
dGNoZXIxXzsKLSAgTWF0Y2hlcjIgbWF0Y2hlcjJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oRWl0aGVyT2ZNYXRjaGVyKTsKLX07Ci0KLS8vIFVzZWQgZm9yIGltcGxlbWVudGluZyBUcnVs
eShwcmVkKSwgd2hpY2ggdHVybnMgYSBwcmVkaWNhdGUgaW50byBhCi0vLyBtYXRjaGVyLgotdGVt
cGxhdGUgPHR5cGVuYW1lIFByZWRpY2F0ZT4KLWNsYXNzIFRydWx5TWF0Y2hlciB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBUcnVseU1hdGNoZXIoUHJlZGljYXRlIHByZWQpIDogcHJlZGljYXRlXyhw
cmVkKSB7fQotCi0gIC8vIFRoaXMgbWV0aG9kIHRlbXBsYXRlIGFsbG93cyBUcnVseShwcmVkKSB0
byBiZSB1c2VkIGFzIGEgbWF0Y2hlcgotICAvLyBmb3IgdHlwZSBUIHdoZXJlIFQgaXMgdGhlIGFy
Z3VtZW50IHR5cGUgb2YgcHJlZGljYXRlICdwcmVkJy4gIFRoZQotICAvLyBhcmd1bWVudCBpcyBw
YXNzZWQgYnkgcmVmZXJlbmNlIGFzIHRoZSBwcmVkaWNhdGUgbWF5IGJlCi0gIC8vIGludGVyZXN0
ZWQgaW4gdGhlIGFkZHJlc3Mgb2YgdGhlIGFyZ3VtZW50LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCYgeCwgIC8vIE5PTElOVAotICAgICAgICAgICAg
ICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3Qgewot
ICAgIC8vIFdpdGhvdXQgdGhlIGlmLXN0YXRlbWVudCwgTVNWQyBzb21ldGltZXMgd2FybnMgYWJv
dXQgY29udmVydGluZwotICAgIC8vIGEgdmFsdWUgdG8gYm9vbCAod2FybmluZyA0ODAwKS4KLSAg
ICAvLwotICAgIC8vIFdlIGNhbm5vdCB3cml0ZSAncmV0dXJuICEhcHJlZGljYXRlXyh4KTsnIGFz
IHRoYXQgZG9lc24ndCB3b3JrCi0gICAgLy8gd2hlbiBwcmVkaWNhdGVfKHgpIHJldHVybnMgYSBj
bGFzcyBjb252ZXJ0aWJsZSB0byBib29sIGJ1dAotICAgIC8vIGhhdmluZyBubyBvcGVyYXRvciEo
KS4KLSAgICBpZiAocHJlZGljYXRlXyh4KSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNv
bnN0IHsKLSAgICAqb3MgPDwgInNhdGlzZmllcyB0aGUgZ2l2ZW4gcHJlZGljYXRlIjsKLSAgfQot
Ci0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qgewot
ICAgICpvcyA8PCAiZG9lc24ndCBzYXRpc2Z5IHRoZSBnaXZlbiBwcmVkaWNhdGUiOwotICB9Ci0K
LSBwcml2YXRlOgotICBQcmVkaWNhdGUgcHJlZGljYXRlXzsKLQotICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKFRydWx5TWF0Y2hlcik7Ci19OwotCi0vLyBVc2VkIGZvciBpbXBsZW1lbnRpbmcgTWF0
Y2hlcyhtYXRjaGVyKSwgd2hpY2ggdHVybnMgYSBtYXRjaGVyIGludG8KLS8vIGEgcHJlZGljYXRl
LgotdGVtcGxhdGUgPHR5cGVuYW1lIE0+Ci1jbGFzcyBNYXRjaGVyQXNQcmVkaWNhdGUgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTWF0Y2hlckFzUHJlZGljYXRlKE0gbWF0Y2hlcikgOiBtYXRjaGVy
XyhtYXRjaGVyKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgb3BlcmF0b3IoKSBhbGxvd3MgTWF0
Y2hlcyhtKSB0byBiZSB1c2VkIGFzIGEKLSAgLy8gcHJlZGljYXRlIG9uIHR5cGUgVCB3aGVyZSBt
IGlzIGEgbWF0Y2hlciBvbiB0eXBlIFQuCi0gIC8vCi0gIC8vIFRoZSBhcmd1bWVudCB4IGlzIHBh
c3NlZCBieSByZWZlcmVuY2UgaW5zdGVhZCBvZiBieSB2YWx1ZSwgYXMKLSAgLy8gc29tZSBtYXRj
aGVyIG1heSBiZSBpbnRlcmVzdGVkIGluIGl0cyBhZGRyZXNzIChlLmcuIGFzIGluCi0gIC8vIE1h
dGNoZXMoUmVmKG4pKSh4KSkuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBib29sIG9wZXJh
dG9yKCkoY29uc3QgVCYgeCkgY29uc3QgewotICAgIC8vIFdlIGxldCBtYXRjaGVyXyBjb21taXQg
dG8gYSBwYXJ0aWN1bGFyIHR5cGUgaGVyZSBpbnN0ZWFkIG9mCi0gICAgLy8gd2hlbiB0aGUgTWF0
Y2hlckFzUHJlZGljYXRlIG9iamVjdCB3YXMgY29uc3RydWN0ZWQuICBUaGlzCi0gICAgLy8gYWxs
b3dzIHVzIHRvIHdyaXRlIE1hdGNoZXMobSkgd2hlcmUgbSBpcyBhIHBvbHltb3JwaGljIG1hdGNo
ZXIKLSAgICAvLyAoZS5nLiBFcSg1KSkuCi0gICAgLy8KLSAgICAvLyBJZiB3ZSB3cml0ZSBNYXRj
aGVyPFQ+KG1hdGNoZXJfKS5NYXRjaGVzKHgpIGhlcmUsIGl0IHdvbid0Ci0gICAgLy8gY29tcGls
ZSB3aGVuIG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNoZXI8Y29uc3QgVCY+OyBpZiB3ZSB3cml0ZQot
ICAgIC8vIE1hdGNoZXI8Y29uc3QgVCY+KG1hdGNoZXJfKS5NYXRjaGVzKHgpIGhlcmUsIGl0IHdv
bid0IGNvbXBpbGUKLSAgICAvLyB3aGVuIG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNoZXI8VD47IGlm
IHdlIGp1c3Qgd3JpdGUKLSAgICAvLyBtYXRjaGVyXy5NYXRjaGVzKHgpLCBpdCB3b24ndCBjb21w
aWxlIHdoZW4gbWF0Y2hlcl8gaXMKLSAgICAvLyBwb2x5bW9ycGhpYywgZS5nLiBFcSg1KS4KLSAg
ICAvLwotICAgIC8vIE1hdGNoZXJDYXN0PGNvbnN0IFQmPigpIGlzIG5lY2Vzc2FyeSBmb3IgbWFr
aW5nIHRoZSBjb2RlIHdvcmsKLSAgICAvLyBpbiBhbGwgb2YgdGhlIGFib3ZlIHNpdHVhdGlvbnMu
Ci0gICAgcmV0dXJuIE1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVyXykuTWF0Y2hlcyh4KTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgTSBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKE1hdGNoZXJBc1ByZWRpY2F0ZSk7Ci19OwotCi0vLyBGb3IgaW1wbGVtZW50aW5nIEFTU0VS
VF9USEFUKCkgYW5kIEVYUEVDVF9USEFUKCkuICBUaGUgdGVtcGxhdGUKLS8vIGFyZ3VtZW50IE0g
bXVzdCBiZSBhIHR5cGUgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgbWF0Y2hlci4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBNPgotY2xhc3MgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIoTSBtKSA6
IG1hdGNoZXJfKGludGVybmFsOjptb3ZlKG0pKSB7fQotCi0gIC8vIFRoaXMgdGVtcGxhdGUgKCkg
b3BlcmF0b3IgYWxsb3dzIGEgUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIKLSAgLy8gb2Jq
ZWN0IHRvIGFjdCBhcyBhIHByZWRpY2F0ZS1mb3JtYXR0ZXIgc3VpdGFibGUgZm9yIHVzaW5nIHdp
dGgKLSAgLy8gR29vZ2xlIFRlc3QncyBFWFBFQ1RfUFJFRF9GT1JNQVQxKCkgbWFjcm8uCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShjb25zdCBj
aGFyKiB2YWx1ZV90ZXh0LCBjb25zdCBUJiB4KSBjb25zdCB7Ci0gICAgLy8gV2UgY29udmVydCBt
YXRjaGVyXyB0byBhIE1hdGNoZXI8Y29uc3QgVCY+ICpub3cqIGluc3RlYWQgb2YKLSAgICAvLyB3
aGVuIHRoZSBQcmVkaWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlciBvYmplY3Qgd2FzIGNvbnN0cnVj
dGVkLAotICAgIC8vIGFzIG1hdGNoZXJfIG1heSBiZSBwb2x5bW9ycGhpYyAoZS5nLiBOb3ROdWxs
KCkpIGFuZCB3ZSB3b24ndAotICAgIC8vIGtub3cgd2hpY2ggdHlwZSB0byBpbnN0YW50aWF0ZSBp
dCB0byB1bnRpbCB3ZSBhY3R1YWxseSBzZWUgdGhlCi0gICAgLy8gdHlwZSBvZiB4IGhlcmUuCi0g
ICAgLy8KLSAgICAvLyBXZSB3cml0ZSBTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgVCY+KG1hdGNoZXJf
KSBpbnN0ZWFkIG9mCi0gICAgLy8gTWF0Y2hlcjxjb25zdCBUJj4obWF0Y2hlcl8pLCBhcyB0aGUg
bGF0dGVyIHdvbid0IGNvbXBpbGUgd2hlbgotICAgIC8vIG1hdGNoZXJfIGhhcyB0eXBlIE1hdGNo
ZXI8VD4gKGUuZy4gQW48aW50PigpKS4KLSAgICAvLyBXZSBkb24ndCB3cml0ZSBNYXRjaGVyQ2Fz
dDxjb25zdCBUJj4gZWl0aGVyLCBhcyB0aGF0IGFsbG93cwotICAgIC8vIHBvdGVudGlhbGx5IHVu
c2FmZSBkb3duY2FzdGluZyBvZiB0aGUgbWF0Y2hlciBhcmd1bWVudC4KLSAgICBjb25zdCBNYXRj
aGVyPGNvbnN0IFQmPiBtYXRjaGVyID0gU2FmZU1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVy
Xyk7Ci0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgICBpZiAoTWF0
Y2hQcmludEFuZEV4cGxhaW4oeCwgbWF0Y2hlciwgJmxpc3RlbmVyKSkKLSAgICAgIHJldHVybiBB
c3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgIHNz
IDw8ICJWYWx1ZSBvZjogIiA8PCB2YWx1ZV90ZXh0IDw8ICJcbiIKLSAgICAgICA8PCAiRXhwZWN0
ZWQ6ICI7Ci0gICAgbWF0Y2hlci5EZXNjcmliZVRvKCZzcyk7Ci0gICAgc3MgPDwgIlxuICBBY3R1
YWw6ICIgPDwgbGlzdGVuZXIuc3RyKCk7Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8
PCBzcy5zdHIoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBtYXRjaGVyXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKFByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyKTsKLX07
Ci0KLS8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIGEgbWF0Y2hlciB0byBhIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIKLS8vIHdpdGhvdXQgdGhlIHVzZXIgbmVlZGluZyB0byBleHBsaWNp
dGx5IHdyaXRlIHRoZSB0eXBlLiAgVGhpcyBpcwotLy8gdXNlZCBmb3IgaW1wbGVtZW50aW5nIEFT
U0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFUKCkuCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6
ICdtYXRjaGVyJyBpcyByZWNlaXZlZCBieS12YWx1ZSB0byBmb3JjZSBkZWNheWluZy4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBNPgotaW5saW5lIFByZWRpY2F0ZUZvcm1hdHRlckZyb21NYXRjaGVyPE0+
Ci1NYWtlUHJlZGljYXRlRm9ybWF0dGVyRnJvbU1hdGNoZXIoTSBtYXRjaGVyKSB7Ci0gIHJldHVy
biBQcmVkaWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlcjxNPihpbnRlcm5hbDo6bW92ZShtYXRjaGVy
KSk7Ci19Ci0KLS8vIEltcGxlbWVudHMgdGhlIHBvbHltb3JwaGljIGZsb2F0aW5nIHBvaW50IGVx
dWFsaXR5IG1hdGNoZXIsIHdoaWNoIG1hdGNoZXMKLS8vIHR3byBmbG9hdCB2YWx1ZXMgdXNpbmcg
VUxQLWJhc2VkIGFwcHJveGltYXRpb24gb3IsIG9wdGlvbmFsbHksIGEKLS8vIHVzZXItc3BlY2lm
aWVkIGVwc2lsb24uICBUaGUgdGVtcGxhdGUgaXMgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkIHdp
dGgKLS8vIEZsb2F0VHlwZSBiZWluZyBlaXRoZXIgZmxvYXQgb3IgZG91YmxlLgotdGVtcGxhdGUg
PHR5cGVuYW1lIEZsb2F0VHlwZT4KLWNsYXNzIEZsb2F0aW5nRXFNYXRjaGVyIHsKLSBwdWJsaWM6
Ci0gIC8vIENvbnN0cnVjdG9yIGZvciBGbG9hdGluZ0VxTWF0Y2hlci4KLSAgLy8gVGhlIG1hdGNo
ZXIncyBpbnB1dCB3aWxsIGJlIGNvbXBhcmVkIHdpdGggZXhwZWN0ZWQuICBUaGUgbWF0Y2hlciB0
cmVhdHMgdHdvCi0gIC8vIE5BTnMgYXMgZXF1YWwgaWYgbmFuX2VxX25hbiBpcyB0cnVlLiAgT3Ro
ZXJ3aXNlLCB1bmRlciBJRUVFIHN0YW5kYXJkcywKLSAgLy8gZXF1YWxpdHkgY29tcGFyaXNvbnMg
YmV0d2VlbiBOQU5zIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4gIFdlIHNwZWNpZnkgYQotICAv
LyBuZWdhdGl2ZSBtYXhfYWJzX2Vycm9yXyB0ZXJtIHRvIGluZGljYXRlIHRoYXQgVUxQLWJhc2Vk
IGFwcHJveGltYXRpb24gd2lsbAotICAvLyBiZSB1c2VkIGZvciBjb21wYXJpc29uLgotICBGbG9h
dGluZ0VxTWF0Y2hlcihGbG9hdFR5cGUgZXhwZWN0ZWQsIGJvb2wgbmFuX2VxX25hbikgOgotICAg
IGV4cGVjdGVkXyhleHBlY3RlZCksIG5hbl9lcV9uYW5fKG5hbl9lcV9uYW4pLCBtYXhfYWJzX2Vy
cm9yXygtMSkgewotICB9Ci0KLSAgLy8gQ29uc3RydWN0b3IgdGhhdCBzdXBwb3J0cyBhIHVzZXIt
c3BlY2lmaWVkIG1heF9hYnNfZXJyb3IgdGhhdCB3aWxsIGJlIHVzZWQKLSAgLy8gZm9yIGNvbXBh
cmlzb24gaW5zdGVhZCBvZiBVTFAtYmFzZWQgYXBwcm94aW1hdGlvbi4gIFRoZSBtYXggYWJzb2x1
dGUKLSAgLy8gc2hvdWxkIGJlIG5vbi1uZWdhdGl2ZS4KLSAgRmxvYXRpbmdFcU1hdGNoZXIoRmxv
YXRUeXBlIGV4cGVjdGVkLCBib29sIG5hbl9lcV9uYW4sCi0gICAgICAgICAgICAgICAgICAgIEZs
b2F0VHlwZSBtYXhfYWJzX2Vycm9yKQotICAgICAgOiBleHBlY3RlZF8oZXhwZWN0ZWQpLAotICAg
ICAgICBuYW5fZXFfbmFuXyhuYW5fZXFfbmFuKSwKLSAgICAgICAgbWF4X2Fic19lcnJvcl8obWF4
X2Fic19lcnJvcikgewotICAgIEdURVNUX0NIRUNLXyhtYXhfYWJzX2Vycm9yID49IDApCi0gICAg
ICAgIDw8ICIsIHdoZXJlIG1heF9hYnNfZXJyb3IgaXMiIDw8IG1heF9hYnNfZXJyb3I7Ci0gIH0K
LQotICAvLyBJbXBsZW1lbnRzIGZsb2F0aW5nIHBvaW50IGVxdWFsaXR5IG1hdGNoZXIgYXMgYSBN
YXRjaGVyPFQ+LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgY2xhc3MgSW1wbCA6IHB1Ymxp
YyBNYXRjaGVySW50ZXJmYWNlPFQ+IHsKLSAgIHB1YmxpYzoKLSAgICBJbXBsKEZsb2F0VHlwZSBl
eHBlY3RlZCwgYm9vbCBuYW5fZXFfbmFuLCBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcikKLSAgICAg
ICAgOiBleHBlY3RlZF8oZXhwZWN0ZWQpLAotICAgICAgICAgIG5hbl9lcV9uYW5fKG5hbl9lcV9u
YW4pLAotICAgICAgICAgIG1heF9hYnNfZXJyb3JfKG1heF9hYnNfZXJyb3IpIHt9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFQgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAg
ICAgY29uc3QgRmxvYXRpbmdQb2ludDxGbG9hdFR5cGU+IGFjdHVhbCh2YWx1ZSksIGV4cGVjdGVk
KGV4cGVjdGVkXyk7Ci0KLSAgICAgIC8vIENvbXBhcmVzIE5hTnMgZmlyc3QsIGlmIG5hbl9lcV9u
YW5fIGlzIHRydWUuCi0gICAgICBpZiAoYWN0dWFsLmlzX25hbigpIHx8IGV4cGVjdGVkLmlzX25h
bigpKSB7Ci0gICAgICAgIGlmIChhY3R1YWwuaXNfbmFuKCkgJiYgZXhwZWN0ZWQuaXNfbmFuKCkp
IHsKLSAgICAgICAgICByZXR1cm4gbmFuX2VxX25hbl87Ci0gICAgICAgIH0KLSAgICAgICAgLy8g
T25lIGlzIG5hbjsgdGhlIG90aGVyIGlzIG5vdCBuYW4uCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgIH0KLSAgICAgIGlmIChIYXNNYXhBYnNFcnJvcigpKSB7Ci0gICAgICAgIC8vIFdlIHBl
cmZvcm0gYW4gZXF1YWxpdHkgY2hlY2sgc28gdGhhdCBpbmYgd2lsbCBtYXRjaCBpbmYsIHJlZ2Fy
ZGxlc3MKLSAgICAgICAgLy8gb2YgZXJyb3IgYm91bmRzLiAgSWYgdGhlIHJlc3VsdCBvZiB2YWx1
ZSAtIGV4cGVjdGVkXyB3b3VsZCByZXN1bHQgaW4KLSAgICAgICAgLy8gb3ZlcmZsb3cgb3IgaWYg
ZWl0aGVyIHZhbHVlIGlzIGluZiwgdGhlIGRlZmF1bHQgcmVzdWx0IGlzIGluZmluaXR5LAotICAg
ICAgICAvLyB3aGljaCBzaG91bGQgb25seSBtYXRjaCBpZiBtYXhfYWJzX2Vycm9yXyBpcyBhbHNv
IGluZmluaXR5LgotICAgICAgICBpZiAodmFsdWUgPT0gZXhwZWN0ZWRfKSB7Ci0gICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBGbG9hdFR5cGUgZGlmZiA9
IHZhbHVlIC0gZXhwZWN0ZWRfOwotICAgICAgICBpZiAoZmFicyhkaWZmKSA8PSBtYXhfYWJzX2Vy
cm9yXykgewotICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGxpc3RlbmVyLT5Jc0ludGVyZXN0ZWQoKSkgewotICAgICAgICAgICpsaXN0ZW5lciA8PCAid2hp
Y2ggaXMgIiA8PCBkaWZmIDw8ICIgZnJvbSAiIDw8IGV4cGVjdGVkXzsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gYWN0dWFs
LkFsbW9zdEVxdWFscyhleHBlY3RlZCk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAvLyBvcy0+
cHJlY2lzaW9uKCkgcmV0dXJucyB0aGUgcHJldmlvdXNseSBzZXQgcHJlY2lzaW9uLCB3aGljaCB3
ZQotICAgICAgLy8gc3RvcmUgdG8gcmVzdG9yZSB0aGUgb3N0cmVhbSB0byBpdHMgb3JpZ2luYWwg
Y29uZmlndXJhdGlvbgotICAgICAgLy8gYWZ0ZXIgb3V0cHV0dGluZy4KLSAgICAgIGNvbnN0IDo6
c3RkOjpzdHJlYW1zaXplIG9sZF9wcmVjaXNpb24gPSBvcy0+cHJlY2lzaW9uKAotICAgICAgICAg
IDo6c3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjpkaWdpdHMxMCArIDIpOwotICAgICAg
aWYgKEZsb2F0aW5nUG9pbnQ8RmxvYXRUeXBlPihleHBlY3RlZF8pLmlzX25hbigpKSB7Ci0gICAg
ICAgIGlmIChuYW5fZXFfbmFuXykgewotICAgICAgICAgICpvcyA8PCAiaXMgTmFOIjsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAqb3MgPDwgIm5ldmVyIG1hdGNoZXMiOwotICAgICAgICB9
Ci0gICAgICB9IGVsc2UgewotICAgICAgICAqb3MgPDwgImlzIGFwcHJveGltYXRlbHkgIiA8PCBl
eHBlY3RlZF87Ci0gICAgICAgIGlmIChIYXNNYXhBYnNFcnJvcigpKSB7Ci0gICAgICAgICAgKm9z
IDw8ICIgKGFic29sdXRlIGVycm9yIDw9ICIgPDwgbWF4X2Fic19lcnJvcl8gPDwgIikiOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICBvcy0+cHJlY2lzaW9uKG9sZF9wcmVjaXNpb24pOwotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0q
IG9zKSBjb25zdCB7Ci0gICAgICAvLyBBcyBiZWZvcmUsIGdldCBvcmlnaW5hbCBwcmVjaXNpb24u
Ci0gICAgICBjb25zdCA6OnN0ZDo6c3RyZWFtc2l6ZSBvbGRfcHJlY2lzaW9uID0gb3MtPnByZWNp
c2lvbigKLSAgICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6ZGlnaXRz
MTAgKyAyKTsKLSAgICAgIGlmIChGbG9hdGluZ1BvaW50PEZsb2F0VHlwZT4oZXhwZWN0ZWRfKS5p
c19uYW4oKSkgewotICAgICAgICBpZiAobmFuX2VxX25hbl8pIHsKLSAgICAgICAgICAqb3MgPDwg
Imlzbid0IE5hTiI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgKm9zIDw8ICJpcyBhbnl0
aGluZyI7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICpvcyA8PCAiaXNuJ3Qg
YXBwcm94aW1hdGVseSAiIDw8IGV4cGVjdGVkXzsKLSAgICAgICAgaWYgKEhhc01heEFic0Vycm9y
KCkpIHsKLSAgICAgICAgICAqb3MgPDwgIiAoYWJzb2x1dGUgZXJyb3IgPiAiIDw8IG1heF9hYnNf
ZXJyb3JfIDw8ICIpIjsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgLy8gUmVzdG9yZSBvcmln
aW5hbCBwcmVjaXNpb24uCi0gICAgICBvcy0+cHJlY2lzaW9uKG9sZF9wcmVjaXNpb24pOwotICAg
IH0KLQotICAgcHJpdmF0ZToKLSAgICBib29sIEhhc01heEFic0Vycm9yKCkgY29uc3QgewotICAg
ICAgcmV0dXJuIG1heF9hYnNfZXJyb3JfID49IDA7Ci0gICAgfQotCi0gICAgY29uc3QgRmxvYXRU
eXBlIGV4cGVjdGVkXzsKLSAgICBjb25zdCBib29sIG5hbl9lcV9uYW5fOwotICAgIC8vIG1heF9h
YnNfZXJyb3Igd2lsbCBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29uIHdoZW4gPj0gMC4KLSAg
ICBjb25zdCBGbG9hdFR5cGUgbWF4X2Fic19lcnJvcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19B
U1NJR05fKEltcGwpOwotICB9OwotCi0gIC8vIFRoZSBmb2xsb3dpbmcgMyB0eXBlIGNvbnZlcnNp
b24gb3BlcmF0b3JzIGFsbG93IEZsb2F0RXEoZXhwZWN0ZWQpIGFuZAotICAvLyBOYW5TZW5zaXRp
dmVGbG9hdEVxKGV4cGVjdGVkKSB0byBiZSB1c2VkIGFzIGEgTWF0Y2hlcjxmbG9hdD4sIGEKLSAg
Ly8gTWF0Y2hlcjxjb25zdCBmbG9hdCY+LCBvciBhIE1hdGNoZXI8ZmxvYXQmPiwgYnV0IG5vdGhp
bmcgZWxzZS4KLSAgLy8gKFdoaWxlIEdvb2dsZSdzIEMrKyBjb2Rpbmcgc3R5bGUgZG9lc24ndCBh
bGxvdyBhcmd1bWVudHMgcGFzc2VkCi0gIC8vIGJ5IG5vbi1jb25zdCByZWZlcmVuY2UsIHdlIG1h
eSBzZWUgdGhlbSBpbiBjb2RlIG5vdCBjb25mb3JtaW5nIHRvCi0gIC8vIHRoZSBzdHlsZS4gIFRo
ZXJlZm9yZSBHb29nbGUgTW9jayBuZWVkcyB0byBzdXBwb3J0IHRoZW0uKQotICBvcGVyYXRvciBN
YXRjaGVyPEZsb2F0VHlwZT4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKAotICAg
ICAgICBuZXcgSW1wbDxGbG9hdFR5cGU+KGV4cGVjdGVkXywgbmFuX2VxX25hbl8sIG1heF9hYnNf
ZXJyb3JfKSk7Ci0gIH0KLQotICBvcGVyYXRvciBNYXRjaGVyPGNvbnN0IEZsb2F0VHlwZSY+KCkg
Y29uc3QgewotICAgIHJldHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IEltcGw8Y29uc3Qg
RmxvYXRUeXBlJj4oZXhwZWN0ZWRfLCBuYW5fZXFfbmFuXywgbWF4X2Fic19lcnJvcl8pKTsKLSAg
fQotCi0gIG9wZXJhdG9yIE1hdGNoZXI8RmxvYXRUeXBlJj4oKSBjb25zdCB7Ci0gICAgcmV0dXJu
IE1ha2VNYXRjaGVyKAotICAgICAgICBuZXcgSW1wbDxGbG9hdFR5cGUmPihleHBlY3RlZF8sIG5h
bl9lcV9uYW5fLCBtYXhfYWJzX2Vycm9yXykpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25zdCBG
bG9hdFR5cGUgZXhwZWN0ZWRfOwotICBjb25zdCBib29sIG5hbl9lcV9uYW5fOwotICAvLyBtYXhf
YWJzX2Vycm9yIHdpbGwgYmUgdXNlZCBmb3IgdmFsdWUgY29tcGFyaXNvbiB3aGVuID49IDAuCi0g
IGNvbnN0IEZsb2F0VHlwZSBtYXhfYWJzX2Vycm9yXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKEZsb2F0aW5nRXFNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFBvaW50ZWUo
bSkgbWF0Y2hlciBmb3IgbWF0Y2hpbmcgYSBwb2ludGVyIHdob3NlCi0vLyBwb2ludGVlIG1hdGNo
ZXMgbWF0Y2hlciBtLiAgVGhlIHBvaW50ZXIgY2FuIGJlIGVpdGhlciByYXcgb3Igc21hcnQuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotY2xhc3MgUG9pbnRlZU1hdGNoZXIgewot
IHB1YmxpYzoKLSAgZXhwbGljaXQgUG9pbnRlZU1hdGNoZXIoY29uc3QgSW5uZXJNYXRjaGVyJiBt
YXRjaGVyKSA6IG1hdGNoZXJfKG1hdGNoZXIpIHt9Ci0KLSAgLy8gVGhpcyB0eXBlIGNvbnZlcnNp
b24gb3BlcmF0b3IgdGVtcGxhdGUgYWxsb3dzIFBvaW50ZWUobSkgdG8gYmUKLSAgLy8gdXNlZCBh
cyBhIG1hdGNoZXIgZm9yIGFueSBwb2ludGVyIHR5cGUgd2hvc2UgcG9pbnRlZSB0eXBlIGlzCi0g
IC8vIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5uZXIgbWF0Y2hlciwgd2hlcmUgdHlwZSBQb2ludGVy
IGNhbiBiZQotICAvLyBlaXRoZXIgYSByYXcgcG9pbnRlciBvciBhIHNtYXJ0IHBvaW50ZXIuCi0g
IC8vCi0gIC8vIFRoZSByZWFzb24gd2UgZG8gdGhpcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24KLSAg
Ly8gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigpIGlzIHRoYXQgdGhlIGxhdHRlciBpcyBub3QgZmxl
eGlibGUKLSAgLy8gZW5vdWdoIGZvciBpbXBsZW1lbnRpbmcgdGhlIERlc2NyaWJlVG8oKSBtZXRo
b2Qgb2YgUG9pbnRlZSgpLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlcj4KLSAgb3BlcmF0
b3IgTWF0Y2hlcjxQb2ludGVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNoZXIobmV3
IEltcGw8UG9pbnRlcj4obWF0Y2hlcl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIG1v
bm9tb3JwaGljIGltcGxlbWVudGF0aW9uIHRoYXQgd29ya3MgZm9yIGEgcGFydGljdWxhciBwb2lu
dGVyIHR5cGUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBQb2ludGVyPgotICBjbGFzcyBJbXBsIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8UG9pbnRlcj4gewotICAgcHVibGljOgotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgUG9pbnRlZU9mPEdURVNUX1JFTU9WRV9DT05TVF8oICAvLyBOT0xJTlQKLSAg
ICAgICAgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oUG9pbnRlcikpPjo6dHlwZSBQb2ludGVlOwot
Ci0gICAgZXhwbGljaXQgSW1wbChjb25zdCBJbm5lck1hdGNoZXImIG1hdGNoZXIpCi0gICAgICAg
IDogbWF0Y2hlcl8oTWF0Y2hlckNhc3Q8Y29uc3QgUG9pbnRlZSY+KG1hdGNoZXIpKSB7fQotCi0g
ICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0g
ICAgICAqb3MgPDwgInBvaW50cyB0byBhIHZhbHVlIHRoYXQgIjsKLSAgICAgIG1hdGNoZXJfLkRl
c2NyaWJlVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9u
VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImRvZXMgbm90IHBv
aW50IHRvIGEgdmFsdWUgdGhhdCAiOwotICAgICAgbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihQb2ludGVyIHBvaW50ZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBs
aXN0ZW5lcikgY29uc3QgewotICAgICAgaWYgKEdldFJhd1BvaW50ZXIocG9pbnRlcikgPT0gTlVM
TCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIHBv
aW50cyB0byAiOwotICAgICAgcmV0dXJuIE1hdGNoUHJpbnRBbmRFeHBsYWluKCpwb2ludGVyLCBt
YXRjaGVyXywgbGlzdGVuZXIpOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBNYXRj
aGVyPGNvbnN0IFBvaW50ZWUmPiBtYXRjaGVyXzsKLQotICAgIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oSW1wbCk7Ci0gIH07Ci0KLSAgY29uc3QgSW5uZXJNYXRjaGVyIG1hdGNoZXJfOwotCi0gIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oUG9pbnRlZU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50
cyB0aGUgV2hlbkR5bmFtaWNDYXN0VG88VD4obSkgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBwb2lu
dGVyIG9yCi0vLyByZWZlcmVuY2UgdGhhdCBtYXRjaGVzIGlubmVyX21hdGNoZXIgd2hlbiBkeW5h
bWljX2Nhc3Q8VD4gaXMgYXBwbGllZC4KLS8vIFRoZSByZXN1bHQgb2YgZHluYW1pY19jYXN0PFRv
PiBpcyBmb3J3YXJkZWQgdG8gdGhlIGlubmVyIG1hdGNoZXIuCi0vLyBJZiBUbyBpcyBhIHBvaW50
ZXIgYW5kIHRoZSBjYXN0IGZhaWxzLCB0aGUgaW5uZXIgbWF0Y2hlciB3aWxsIHJlY2VpdmUgTlVM
TC4KLS8vIElmIFRvIGlzIGEgcmVmZXJlbmNlIGFuZCB0aGUgY2FzdCBmYWlscywgdGhpcyBtYXRj
aGVyIHJldHVybnMgZmFsc2UKLS8vIGltbWVkaWF0ZWx5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFRv
PgotY2xhc3MgV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyQmFzZSB7Ci0gcHVibGljOgotICBleHBs
aWNpdCBXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXJCYXNlKGNvbnN0IE1hdGNoZXI8VG8+JiBtYXRj
aGVyKQotICAgICAgOiBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBHZXRDYXN0VHlwZURlc2NyaXB0aW9uKG9z
KTsKLSAgICBtYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVO
ZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgIEdldENhc3RUeXBlRGVz
Y3JpcHRpb24ob3MpOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gIH0K
LQotIHByb3RlY3RlZDoKLSAgY29uc3QgTWF0Y2hlcjxUbz4gbWF0Y2hlcl87Ci0KLSAgc3RhdGlj
IHN0ZDo6c3RyaW5nIEdldFRvTmFtZSgpIHsKLSNpZiBHVEVTVF9IQVNfUlRUSQotICAgIHJldHVy
biBHZXRUeXBlTmFtZTxUbz4oKTsKLSNlbHNlICAvLyBHVEVTVF9IQVNfUlRUSQotICAgIHJldHVy
biAidGhlIHRhcmdldCB0eXBlIjsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JUVEkKLSAgfQotCi0g
cHJpdmF0ZToKLSAgc3RhdGljIHZvaWQgR2V0Q2FzdFR5cGVEZXNjcmlwdGlvbig6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKLSAgICAqb3MgPDwgIndoZW4gZHluYW1pY19jYXN0IHRvICIgPDwgR2V0VG9O
YW1lKCkgPDwgIiwgIjsKLSAgfQotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oV2hlbkR5bmFt
aWNDYXN0VG9NYXRjaGVyQmFzZSk7Ci19OwotCi0vLyBQcmltYXJ5IHRlbXBsYXRlLgotLy8gVG8g
aXMgYSBwb2ludGVyLiBDYXN0IGFuZCBmb3J3YXJkIHRoZSByZXN1bHQuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVG8+Ci1jbGFzcyBXaGVuRHluYW1pY0Nhc3RUb01hdGNoZXIgOiBwdWJsaWMgV2hlbkR5
bmFtaWNDYXN0VG9NYXRjaGVyQmFzZTxUbz4gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgV2hlbkR5
bmFtaWNDYXN0VG9NYXRjaGVyKGNvbnN0IE1hdGNoZXI8VG8+JiBtYXRjaGVyKQotICAgICAgOiBX
aGVuRHluYW1pY0Nhc3RUb01hdGNoZXJCYXNlPFRvPihtYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBGcm9tPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihGcm9tIGZyb20sIE1hdGNo
UmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gVE9ETyhzYmVuemEpOiBB
ZGQgbW9yZSBkZXRhaWwgb24gZmFpbHVyZXMuIGllIGRpZCB0aGUgZHluX2Nhc3QgZmFpbD8KLSAg
ICBUbyB0byA9IGR5bmFtaWNfY2FzdDxUbz4oZnJvbSk7Ci0gICAgcmV0dXJuIE1hdGNoUHJpbnRB
bmRFeHBsYWluKHRvLCB0aGlzLT5tYXRjaGVyXywgbGlzdGVuZXIpOwotICB9Ci19OwotCi0vLyBT
cGVjaWFsaXplIGZvciByZWZlcmVuY2VzLgotLy8gSW4gdGhpcyBjYXNlIHdlIHJldHVybiBmYWxz
ZSBpZiB0aGUgZHluYW1pY19jYXN0IGZhaWxzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvPgotY2xh
c3MgV2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyPFRvJj4gOiBwdWJsaWMgV2hlbkR5bmFtaWNDYXN0
VG9NYXRjaGVyQmFzZTxUbyY+IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFdoZW5EeW5hbWljQ2Fz
dFRvTWF0Y2hlcihjb25zdCBNYXRjaGVyPFRvJj4mIG1hdGNoZXIpCi0gICAgICA6IFdoZW5EeW5h
bWljQ2FzdFRvTWF0Y2hlckJhc2U8VG8mPihtYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGcm9tPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihGcm9tJiBmcm9tLCBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIC8vIFdlIGRvbid0IHdhbnQgYW4gc3Rk
OjpiYWRfY2FzdCBoZXJlLCBzbyBkbyB0aGUgY2FzdCB3aXRoIHBvaW50ZXJzLgotICAgIFRvKiB0
byA9IGR5bmFtaWNfY2FzdDxUbyo+KCZmcm9tKTsKLSAgICBpZiAodG8gPT0gTlVMTCkgewotICAg
ICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBjYW5ub3QgYmUgZHluYW1pY19jYXN0IHRvICIgPDwgdGhp
cy0+R2V0VG9OYW1lKCk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiBN
YXRjaFByaW50QW5kRXhwbGFpbigqdG8sIHRoaXMtPm1hdGNoZXJfLCBsaXN0ZW5lcik7Ci0gIH0K
LX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIEZpZWxkKCkgbWF0Y2hlciBmb3IgbWF0Y2hpbmcgYSBm
aWVsZCAoaS5lLiBtZW1iZXIKLS8vIHZhcmlhYmxlKSBvZiBhbiBvYmplY3QuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3MsIHR5cGVuYW1lIEZpZWxkVHlwZT4KLWNsYXNzIEZpZWxkTWF0Y2hlciB7
Ci0gcHVibGljOgotICBGaWVsZE1hdGNoZXIoRmllbGRUeXBlIENsYXNzOjoqZmllbGQsCi0gICAg
ICAgICAgICAgICBjb25zdCBNYXRjaGVyPGNvbnN0IEZpZWxkVHlwZSY+JiBtYXRjaGVyKQotICAg
ICAgOiBmaWVsZF8oZmllbGQpLCBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3Jp
YmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFuIG9iamVj
dCB3aG9zZSBnaXZlbiBmaWVsZCAiOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9
Ci0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7
Ci0gICAgKm9zIDw8ICJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gZmllbGQgIjsKLSAgICBtYXRj
aGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmIHZhbHVlLCBNYXRjaFJlc3VsdExp
c3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIHJldHVybiBNYXRjaEFuZEV4cGxhaW5JbXBs
KAotICAgICAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjoKLSAgICAgICAgICAgIGlz
X3BvaW50ZXI8R1RFU1RfUkVNT1ZFX0NPTlNUXyhUKT46OnR5cGUoKSwKLSAgICAgICAgdmFsdWUs
IGxpc3RlbmVyKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IG9m
IE1hdGNoQW5kRXhwbGFpbkltcGwoKSBpcyBuZWVkZWQgdG8gaGVscAotICAvLyBTeW1iaWFuJ3Mg
QysrIGNvbXBpbGVyIGNob29zZSB3aGljaCBvdmVybG9hZCB0byB1c2UuICBJdHMgdHlwZSBpcwot
ICAvLyB0cnVlX3R5cGUgaWZmIHRoZSBGaWVsZCgpIG1hdGNoZXIgaXMgdXNlZCB0byBtYXRjaCBh
IHBvaW50ZXIuCi0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluSW1wbChmYWxzZV90eXBlIC8qIGlzX25v
dF9wb2ludGVyICovLCBjb25zdCBDbGFzcyYgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAqbGlzdGVuZXIg
PDwgIndob3NlIGdpdmVuIGZpZWxkIGlzICI7Ci0gICAgcmV0dXJuIE1hdGNoUHJpbnRBbmRFeHBs
YWluKG9iai4qZmllbGRfLCBtYXRjaGVyXywgbGlzdGVuZXIpOwotICB9Ci0KLSAgYm9vbCBNYXRj
aEFuZEV4cGxhaW5JbXBsKHRydWVfdHlwZSAvKiBpc19wb2ludGVyICovLCBjb25zdCBDbGFzcyog
cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3Rl
bmVyKSBjb25zdCB7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICpsaXN0ZW5lciA8PCAid2hpY2ggcG9pbnRzIHRvIGFuIG9iamVjdCAiOwotICAgIC8vIFNp
bmNlICpwIGhhcyBhIGZpZWxkLCBpdCBtdXN0IGJlIGEgY2xhc3Mvc3RydWN0L3VuaW9uIHR5cGUg
YW5kCi0gICAgLy8gdGh1cyBjYW5ub3QgYmUgYSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlIHBhc3Mg
ZmFsc2VfdHlwZSgpIGFzCi0gICAgLy8gdGhlIGZpcnN0IGFyZ3VtZW50LgotICAgIHJldHVybiBN
YXRjaEFuZEV4cGxhaW5JbXBsKGZhbHNlX3R5cGUoKSwgKnAsIGxpc3RlbmVyKTsKLSAgfQotCi0g
IGNvbnN0IEZpZWxkVHlwZSBDbGFzczo6KmZpZWxkXzsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBG
aWVsZFR5cGUmPiBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEZpZWxkTWF0
Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIHRoZSBQcm9wZXJ0eSgpIG1hdGNoZXIgZm9yIG1h
dGNoaW5nIGEgcHJvcGVydHkKLS8vIChpLmUuIHJldHVybiB2YWx1ZSBvZiBhIGdldHRlciBtZXRo
b2QpIG9mIGFuIG9iamVjdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzcywgdHlwZW5hbWUgUHJv
cGVydHlUeXBlPgotY2xhc3MgUHJvcGVydHlNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBw
cm9wZXJ0eSBtYXkgaGF2ZSBhIHJlZmVyZW5jZSB0eXBlLCBzbyAnY29uc3QgUHJvcGVydHlUeXBl
JicKLSAgLy8gbWF5IGNhdXNlIGRvdWJsZSByZWZlcmVuY2VzIGFuZCBmYWlsIHRvIGNvbXBpbGUu
ICBUaGF0J3Mgd2h5IHdlCi0gIC8vIG5lZWQgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNULCB3aGlj
aCB3b3JrcyByZWdhcmRsZXNzIG9mCi0gIC8vIFByb3BlcnR5VHlwZSBiZWluZyBhIHJlZmVyZW5j
ZSBvciBub3QuCi0gIHR5cGVkZWYgR1RFU1RfUkVGRVJFTkNFX1RPX0NPTlNUXyhQcm9wZXJ0eVR5
cGUpIFJlZlRvQ29uc3RQcm9wZXJ0eTsKLQotICBQcm9wZXJ0eU1hdGNoZXIoUHJvcGVydHlUeXBl
IChDbGFzczo6KnByb3BlcnR5KSgpIGNvbnN0LAotICAgICAgICAgICAgICAgICAgY29uc3QgTWF0
Y2hlcjxSZWZUb0NvbnN0UHJvcGVydHk+JiBtYXRjaGVyKQotICAgICAgOiBwcm9wZXJ0eV8ocHJv
cGVydHkpLCBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFuIG9iamVjdCB3aG9zZSBnaXZl
biBwcm9wZXJ0eSAiOwotICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9z
IDw8ICJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgIjsKLSAgICBtYXRjaGVyXy5E
ZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IFQmdmFsdWUsIE1hdGNoUmVzdWx0TGlzdGVuZXIq
IGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoCi0gICAg
ICAgIHR5cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6OgotICAgICAgICAgICAgaXNfcG9pbnRl
cjxHVEVTVF9SRU1PVkVfQ09OU1RfKFQpPjo6dHlwZSgpLAotICAgICAgICB2YWx1ZSwgbGlzdGVu
ZXIpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgb2YgTWF0Y2hB
bmRFeHBsYWluSW1wbCgpIGlzIG5lZWRlZCB0byBoZWxwCi0gIC8vIFN5bWJpYW4ncyBDKysgY29t
cGlsZXIgY2hvb3NlIHdoaWNoIG92ZXJsb2FkIHRvIHVzZS4gIEl0cyB0eXBlIGlzCi0gIC8vIHRy
dWVfdHlwZSBpZmYgdGhlIFByb3BlcnR5KCkgbWF0Y2hlciBpcyB1c2VkIHRvIG1hdGNoIGEgcG9p
bnRlci4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW5JbXBsKGZhbHNlX3R5cGUgLyogaXNfbm90X3Bv
aW50ZXIgKi8sIGNvbnN0IENsYXNzJiBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICpsaXN0ZW5lciA8PCAi
d2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgIjsKLSAgICAvLyBDYW5ub3QgcGFzcyB0aGUgcmV0dXJu
IHZhbHVlIChmb3IgZXhhbXBsZSwgaW50KSB0byBNYXRjaFByaW50QW5kRXhwbGFpbiwKLSAgICAv
LyB3aGljaCB0YWtlcyBhIG5vbi1jb25zdCByZWZlcmVuY2UgYXMgYXJndW1lbnQuCi0jaWYgZGVm
aW5lZChfUFJFRkFTVF8gKSAmJiBfTVNDX1ZFUiA9PSAxODAwCi0gICAgLy8gV29ya2Fyb3VuZCBi
dWcgaW4gVkMrKyAyMDEzJ3MgL2FuYWx5emUgcGFyc2VyLgotICAgIC8vIGh0dHBzOi8vY29ubmVj
dC5taWNyb3NvZnQuY29tL1Zpc3VhbFN0dWRpby9mZWVkYmFjay9kZXRhaWxzLzExMDYzNjMvaW50
ZXJuYWwtY29tcGlsZXItZXJyb3Itd2l0aC1hbmFseXplLWR1ZS10by1mYWlsdXJlLXRvLWluZmVy
LW1vdmUKLSAgICBwb3NpeDo6QWJvcnQoKTsgIC8vIFRvIG1ha2Ugc3VyZSBpdCBpcyBuZXZlciBy
dW4uCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKLSAgICBSZWZUb0NvbnN0UHJvcGVydHkgcmVz
dWx0ID0gKG9iai4qcHJvcGVydHlfKSgpOwotICAgIHJldHVybiBNYXRjaFByaW50QW5kRXhwbGFp
bihyZXN1bHQsIG1hdGNoZXJfLCBsaXN0ZW5lcik7Ci0jZW5kaWYKLSAgfQotCi0gIGJvb2wgTWF0
Y2hBbmRFeHBsYWluSW1wbCh0cnVlX3R5cGUgLyogaXNfcG9pbnRlciAqLywgY29uc3QgQ2xhc3Mq
IHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0
ZW5lcikgY29uc3QgewotICAgIGlmIChwID09IE5VTEwpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAqbGlzdGVuZXIgPDwgIndoaWNoIHBvaW50cyB0byBhbiBvYmplY3QgIjsKLSAgICAvLyBT
aW5jZSAqcCBoYXMgYSBwcm9wZXJ0eSBtZXRob2QsIGl0IG11c3QgYmUgYSBjbGFzcy9zdHJ1Y3Qv
dW5pb24KLSAgICAvLyB0eXBlIGFuZCB0aHVzIGNhbm5vdCBiZSBhIHBvaW50ZXIuICBUaGVyZWZv
cmUgd2UgcGFzcwotICAgIC8vIGZhbHNlX3R5cGUoKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuCi0g
ICAgcmV0dXJuIE1hdGNoQW5kRXhwbGFpbkltcGwoZmFsc2VfdHlwZSgpLCAqcCwgbGlzdGVuZXIp
OwotICB9Ci0KLSAgUHJvcGVydHlUeXBlIChDbGFzczo6KnByb3BlcnR5XykoKSBjb25zdDsKLSAg
Y29uc3QgTWF0Y2hlcjxSZWZUb0NvbnN0UHJvcGVydHk+IG1hdGNoZXJfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0FTU0lHTl8oUHJvcGVydHlNYXRjaGVyKTsKLX07Ci0KLS8vIFR5cGUgdHJhaXRzIHNw
ZWNpZnlpbmcgdmFyaW91cyBmZWF0dXJlcyBvZiBkaWZmZXJlbnQgZnVuY3RvcnMgZm9yIFJlc3Vs
dE9mLgotLy8gVGhlIGRlZmF1bHQgdGVtcGxhdGUgc3BlY2lmaWVzIGZlYXR1cmVzIGZvciBmdW5j
dG9yIG9iamVjdHMuCi0vLyBGdW5jdG9yIGNsYXNzZXMgaGF2ZSB0byB0eXBlZGVmIGFyZ3VtZW50
X3R5cGUgYW5kIHJlc3VsdF90eXBlCi0vLyB0byBiZSBjb21wYXRpYmxlIHdpdGggUmVzdWx0T2Yu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBDYWxsYWJsZVRyYWl0cyB7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rvcjo6cmVzdWx0X3R5cGUgUmVzdWx0VHlwZTsKLSAgdHlw
ZWRlZiBGdW5jdG9yIFN0b3JhZ2VUeXBlOwotCi0gIHN0YXRpYyB2b2lkIENoZWNrSXNWYWxpZChG
dW5jdG9yIC8qIGZ1bmN0b3IgKi8pIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBzdGF0
aWMgUmVzdWx0VHlwZSBJbnZva2UoRnVuY3RvciBmLCBUIGFyZykgeyByZXR1cm4gZihhcmcpOyB9
Ci19OwotCi0vLyBTcGVjaWFsaXphdGlvbiBmb3IgZnVuY3Rpb24gcG9pbnRlcnMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQXJnVHlwZSwgdHlwZW5hbWUgUmVzVHlwZT4KLXN0cnVjdCBDYWxsYWJsZVRy
YWl0czxSZXNUeXBlKCopKEFyZ1R5cGUpPiB7Ci0gIHR5cGVkZWYgUmVzVHlwZSBSZXN1bHRUeXBl
OwotICB0eXBlZGVmIFJlc1R5cGUoKlN0b3JhZ2VUeXBlKShBcmdUeXBlKTsKLQotICBzdGF0aWMg
dm9pZCBDaGVja0lzVmFsaWQoUmVzVHlwZSgqZikoQXJnVHlwZSkpIHsKLSAgICBHVEVTVF9DSEVD
S18oZiAhPSBOVUxMKQotICAgICAgICA8PCAiTlVMTCBmdW5jdGlvbiBwb2ludGVyIGlzIHBhc3Nl
ZCBpbnRvIFJlc3VsdE9mKCkuIjsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3Rh
dGljIFJlc1R5cGUgSW52b2tlKFJlc1R5cGUoKmYpKEFyZ1R5cGUpLCBUIGFyZykgewotICAgIHJl
dHVybiAoKmYpKGFyZyk7Ci0gIH0KLX07Ci0KLS8vIEltcGxlbWVudHMgdGhlIFJlc3VsdE9mKCkg
bWF0Y2hlciBmb3IgbWF0Y2hpbmcgYSByZXR1cm4gdmFsdWUgb2YgYQotLy8gdW5hcnkgZnVuY3Rp
b24gb2YgYW4gb2JqZWN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxhYmxlPgotY2xhc3MgUmVz
dWx0T2ZNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgQ2FsbGFibGVUcmFp
dHM8Q2FsbGFibGU+OjpSZXN1bHRUeXBlIFJlc3VsdFR5cGU7Ci0KLSAgUmVzdWx0T2ZNYXRjaGVy
KENhbGxhYmxlIGNhbGxhYmxlLCBjb25zdCBNYXRjaGVyPFJlc3VsdFR5cGU+JiBtYXRjaGVyKQot
ICAgICAgOiBjYWxsYWJsZV8oY2FsbGFibGUpLCBtYXRjaGVyXyhtYXRjaGVyKSB7Ci0gICAgQ2Fs
bGFibGVUcmFpdHM8Q2FsbGFibGU+OjpDaGVja0lzVmFsaWQoY2FsbGFibGVfKTsKLSAgfQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBNYXRjaGVyPFQ+KCkgY29uc3Qgewot
ICAgIHJldHVybiBNYXRjaGVyPFQ+KG5ldyBJbXBsPFQ+KGNhbGxhYmxlXywgbWF0Y2hlcl8pKTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSBDYWxsYWJsZVRyYWl0czxDYWxs
YWJsZT46OlN0b3JhZ2VUeXBlIENhbGxhYmxlU3RvcmFnZVR5cGU7Ci0KLSAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gIGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0g
ICBwdWJsaWM6Ci0gICAgSW1wbChDYWxsYWJsZVN0b3JhZ2VUeXBlIGNhbGxhYmxlLCBjb25zdCBN
YXRjaGVyPFJlc3VsdFR5cGU+JiBtYXRjaGVyKQotICAgICAgICA6IGNhbGxhYmxlXyhjYWxsYWJs
ZSksIG1hdGNoZXJfKG1hdGNoZXIpIHt9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAgICpvcyA8PCAiaXMgbWFwcGVkIGJ5IHRo
ZSBnaXZlbiBjYWxsYWJsZSB0byBhIHZhbHVlIHRoYXQgIjsKLSAgICAgIG1hdGNoZXJfLkRlc2Ny
aWJlVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImlzIG1hcHBlZCBieSB0
aGUgZ2l2ZW4gY2FsbGFibGUgdG8gYSB2YWx1ZSB0aGF0ICI7Ci0gICAgICBtYXRjaGVyXy5EZXNj
cmliZU5lZ2F0aW9uVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4
cGxhaW4oVCBvYmosIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAg
ICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzIG1hcHBlZCBieSB0aGUgZ2l2ZW4gY2FsbGFibGUgdG8g
IjsKLSAgICAgIC8vIENhbm5vdCBwYXNzIHRoZSByZXR1cm4gdmFsdWUgKGZvciBleGFtcGxlLCBp
bnQpIHRvCi0gICAgICAvLyBNYXRjaFByaW50QW5kRXhwbGFpbiwgd2hpY2ggdGFrZXMgYSBub24t
Y29uc3QgcmVmZXJlbmNlIGFzIGFyZ3VtZW50LgotICAgICAgUmVzdWx0VHlwZSByZXN1bHQgPQot
ICAgICAgICAgIENhbGxhYmxlVHJhaXRzPENhbGxhYmxlPjo6dGVtcGxhdGUgSW52b2tlPFQ+KGNh
bGxhYmxlXywgb2JqKTsKLSAgICAgIHJldHVybiBNYXRjaFByaW50QW5kRXhwbGFpbihyZXN1bHQs
IG1hdGNoZXJfLCBsaXN0ZW5lcik7Ci0gICAgfQotCi0gICBwcml2YXRlOgotICAgIC8vIEZ1bmN0
b3JzIG9mdGVuIGRlZmluZSBvcGVyYXRvcigpIGFzIG5vbi1jb25zdCBtZXRob2QgZXZlbiB0aG91
Z2gKLSAgICAvLyB0aGV5IGFyZSBhY3R1YWx5IHN0YXRlbGVzcy4gQnV0IHdlIG5lZWQgdG8gdXNl
IHRoZW0gZXZlbiB3aGVuCi0gICAgLy8gJ3RoaXMnIGlzIGEgY29uc3QgcG9pbnRlci4gSXQncyB0
aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IG5vdCB0bwotICAgIC8vIHVzZSBzdGF0ZWZ1bCBjYWxs
YWJsZXMgd2l0aCBSZXN1bHRPZigpLCB3aGljaCBkb2VzJ3QgZ3VhcmFudGVlCi0gICAgLy8gaG93
IG1hbnkgdGltZXMgdGhlIGNhbGxhYmxlIHdpbGwgYmUgaW52b2tlZC4KLSAgICBtdXRhYmxlIENh
bGxhYmxlU3RvcmFnZVR5cGUgY2FsbGFibGVfOwotICAgIGNvbnN0IE1hdGNoZXI8UmVzdWx0VHlw
ZT4gbWF0Y2hlcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OyAg
Ly8gY2xhc3MgSW1wbAotCi0gIGNvbnN0IENhbGxhYmxlU3RvcmFnZVR5cGUgY2FsbGFibGVfOwot
ICBjb25zdCBNYXRjaGVyPFJlc3VsdFR5cGU+IG1hdGNoZXJfOwotCi0gIEdURVNUX0RJU0FMTE9X
X0FTU0lHTl8oUmVzdWx0T2ZNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgYSBtYXRjaGVy
IHRoYXQgY2hlY2tzIHRoZSBzaXplIG9mIGFuIFNUTC1zdHlsZSBjb250YWluZXIuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgU2l6ZU1hdGNoZXI+Ci1jbGFzcyBTaXplSXNNYXRjaGVyIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IFNpemVJc01hdGNoZXIoY29uc3QgU2l6ZU1hdGNoZXImIHNpemVfbWF0Y2hl
cikKLSAgICAgICA6IHNpemVfbWF0Y2hlcl8oc2l6ZV9tYXRjaGVyKSB7Ci0gIH0KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotICBvcGVyYXRvciBNYXRjaGVyPENvbnRhaW5lcj4o
KSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPENvbnRhaW5lcj4oc2l6
ZV9tYXRjaGVyXykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAg
Y2xhc3MgSW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPENvbnRhaW5lcj4gewotICAgcHVi
bGljOgotICAgIHR5cGVkZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8Ci0gICAgICAgICBH
VEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKT4gQ29udGFpbmVyVmll
dzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lclZpZXc6OnR5cGU6OnNpemVfdHlwZSBT
aXplVHlwZTsKLSAgICBleHBsaWNpdCBJbXBsKGNvbnN0IFNpemVNYXRjaGVyJiBzaXplX21hdGNo
ZXIpCi0gICAgICAgIDogc2l6ZV9tYXRjaGVyXyhNYXRjaGVyQ2FzdDxTaXplVHlwZT4oc2l6ZV9t
YXRjaGVyKSkge30KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFt
KiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJzaXplICI7Ci0gICAgICBzaXplX21hdGNoZXJf
LkRlc2NyaWJlVG8ob3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlv
blRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJzaXplICI7Ci0g
ICAgICBzaXplX21hdGNoZXJfLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICAgIFNpemVUeXBlIHNpemUgPSBjb250YWluZXIuc2l6ZSgpOwotICAgICAg
U3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBzaXplX2xpc3RlbmVyOwotICAgICAgY29uc3QgYm9v
bCByZXN1bHQgPSBzaXplX21hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbihzaXplLCAmc2l6ZV9saXN0
ZW5lcik7Ci0gICAgICAqbGlzdGVuZXIKLSAgICAgICAgICA8PCAid2hvc2Ugc2l6ZSAiIDw8IHNp
emUgPDwgKHJlc3VsdCA/ICIgbWF0Y2hlcyIgOiAiIGRvZXNuJ3QgbWF0Y2giKTsKLSAgICAgIFBy
aW50SWZOb3RFbXB0eShzaXplX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwot
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgTWF0
Y2hlcjxTaXplVHlwZT4gc2l6ZV9tYXRjaGVyXzsKLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KEltcGwpOwotICB9OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgU2l6ZU1hdGNoZXIgc2l6ZV9tYXRj
aGVyXzsKLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhTaXplSXNNYXRjaGVyKTsKLX07Ci0KLS8v
IEltcGxlbWVudHMgYSBtYXRjaGVyIHRoYXQgY2hlY2tzIHRoZSBiZWdpbigpLi5lbmQoKSBkaXN0
YW5jZSBvZiBhbiBTVEwtc3R5bGUKLS8vIGNvbnRhaW5lci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBE
aXN0YW5jZU1hdGNoZXI+Ci1jbGFzcyBCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyIHsKLSBwdWJs
aWM6Ci0gIGV4cGxpY2l0IEJlZ2luRW5kRGlzdGFuY2VJc01hdGNoZXIoY29uc3QgRGlzdGFuY2VN
YXRjaGVyJiBkaXN0YW5jZV9tYXRjaGVyKQotICAgICAgOiBkaXN0YW5jZV9tYXRjaGVyXyhkaXN0
YW5jZV9tYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci0gIG9w
ZXJhdG9yIE1hdGNoZXI8Q29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFrZU1hdGNo
ZXIobmV3IEltcGw8Q29udGFpbmVyPihkaXN0YW5jZV9tYXRjaGVyXykpOwotICB9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgY2xhc3MgSW1wbCA6IHB1YmxpYyBNYXRjaGVy
SW50ZXJmYWNlPENvbnRhaW5lcj4gewotICAgcHVibGljOgotICAgIHR5cGVkZWYgaW50ZXJuYWw6
OlN0bENvbnRhaW5lclZpZXc8Ci0gICAgICAgIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NP
TlNUXyhDb250YWluZXIpPiBDb250YWluZXJWaWV3OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3Rk
OjppdGVyYXRvcl90cmFpdHM8Ci0gICAgICAgIHR5cGVuYW1lIENvbnRhaW5lclZpZXc6OnR5cGU6
OmNvbnN0X2l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCi0gICAgICAgIERpc3RhbmNlVHlwZTsK
LSAgICBleHBsaWNpdCBJbXBsKGNvbnN0IERpc3RhbmNlTWF0Y2hlciYgZGlzdGFuY2VfbWF0Y2hl
cikKLSAgICAgICAgOiBkaXN0YW5jZV9tYXRjaGVyXyhNYXRjaGVyQ2FzdDxEaXN0YW5jZVR5cGU+
KGRpc3RhbmNlX21hdGNoZXIpKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgImRpc3RhbmNlIGJldHdlZW4g
YmVnaW4oKSBhbmQgZW5kKCkgIjsKLSAgICAgIGRpc3RhbmNlX21hdGNoZXJfLkRlc2NyaWJlVG8o
b3MpOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpv
c3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJkaXN0YW5jZSBiZXR3ZWVuIGJlZ2lu
KCkgYW5kIGVuZCgpICI7Ci0gICAgICBkaXN0YW5jZV9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9u
VG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29udGFp
bmVyIGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVz
dWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0jaWYgR1RFU1RfSEFTX1NURF9CRUdJTl9B
TkRfRU5EXwotICAgICAgdXNpbmcgc3RkOjpiZWdpbjsKLSAgICAgIHVzaW5nIHN0ZDo6ZW5kOwot
ICAgICAgRGlzdGFuY2VUeXBlIGRpc3RhbmNlID0gc3RkOjpkaXN0YW5jZShiZWdpbihjb250YWlu
ZXIpLCBlbmQoY29udGFpbmVyKSk7Ci0jZWxzZQotICAgICAgRGlzdGFuY2VUeXBlIGRpc3RhbmNl
ID0gc3RkOjpkaXN0YW5jZShjb250YWluZXIuYmVnaW4oKSwgY29udGFpbmVyLmVuZCgpKTsKLSNl
bmRpZgotICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBkaXN0YW5jZV9saXN0ZW5lcjsK
LSAgICAgIGNvbnN0IGJvb2wgcmVzdWx0ID0KLSAgICAgICAgICBkaXN0YW5jZV9tYXRjaGVyXy5N
YXRjaEFuZEV4cGxhaW4oZGlzdGFuY2UsICZkaXN0YW5jZV9saXN0ZW5lcik7Ci0gICAgICAqbGlz
dGVuZXIgPDwgIndob3NlIGRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgIiA8PCBk
aXN0YW5jZQotICAgICAgICAgICAgICAgIDw8IChyZXN1bHQgPyAiIG1hdGNoZXMiIDogIiBkb2Vz
bid0IG1hdGNoIik7Ci0gICAgICBQcmludElmTm90RW1wdHkoZGlzdGFuY2VfbGlzdGVuZXIuc3Ry
KCksIGxpc3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgcHJpdmF0ZToKLSAgICBjb25zdCBNYXRjaGVyPERpc3RhbmNlVHlwZT4gZGlzdGFuY2VfbWF0
Y2hlcl87Ci0gICAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbXBsKTsKLSAgfTsKLQotIHByaXZh
dGU6Ci0gIGNvbnN0IERpc3RhbmNlTWF0Y2hlciBkaXN0YW5jZV9tYXRjaGVyXzsKLSAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyKTsKLX07Ci0KLS8vIElt
cGxlbWVudHMgYW4gZXF1YWxpdHkgbWF0Y2hlciBmb3IgYW55IFNUTC1zdHlsZSBjb250YWluZXIg
d2hvc2UgZWxlbWVudHMKLS8vIHN1cHBvcnQgPT0uIFRoaXMgbWF0Y2hlciBpcyBsaWtlIEVxKCks
IGJ1dCBpdHMgZmFpbHVyZSBleHBsYW5hdGlvbnMgcHJvdmlkZQotLy8gbW9yZSBkZXRhaWxlZCBp
bmZvcm1hdGlvbiB0aGF0IGlzIHVzZWZ1bCB3aGVuIHRoZSBjb250YWluZXIgaXMgdXNlZCBhcyBh
IHNldC4KLS8vIFRoZSBmYWlsdXJlIG1lc3NhZ2UgcmVwb3J0cyBlbGVtZW50cyB0aGF0IGFyZSBp
biBvbmUgb2YgdGhlIG9wZXJhbmRzIGJ1dCBub3QKLS8vIHRoZSBvdGhlci4gVGhlIGZhaWx1cmUg
bWVzc2FnZXMgZG8gbm90IHJlcG9ydCBkdXBsaWNhdGUgb3Igb3V0LW9mLW9yZGVyCi0vLyBlbGVt
ZW50cyBpbiB0aGUgY29udGFpbmVycyAod2hpY2ggZG9uJ3QgcHJvcGVybHkgbWF0dGVyIHRvIHNl
dHMsIGJ1dCBjYW4KLS8vIG9jY3VyIGlmIHRoZSBjb250YWluZXJzIGFyZSB2ZWN0b3JzIG9yIGxp
c3RzLCBmb3IgZXhhbXBsZSkuCi0vLwotLy8gVXNlcyB0aGUgY29udGFpbmVyJ3MgY29uc3RfaXRl
cmF0b3IsIHZhbHVlX3R5cGUsIG9wZXJhdG9yID09LAotLy8gYmVnaW4oKSwgYW5kIGVuZCgpLgot
dGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNsYXNzIENvbnRhaW5lckVxTWF0Y2hlciB7
Ci0gcHVibGljOgotICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PENvbnRhaW5l
cj4gVmlldzsKLSAgdHlwZWRlZiB0eXBlbmFtZSBWaWV3Ojp0eXBlIFN0bENvbnRhaW5lcjsKLSAg
dHlwZWRlZiB0eXBlbmFtZSBWaWV3Ojpjb25zdF9yZWZlcmVuY2UgU3RsQ29udGFpbmVyUmVmZXJl
bmNlOwotCi0gIC8vIFdlIG1ha2UgYSBjb3B5IG9mIGV4cGVjdGVkIGluIGNhc2UgdGhlIGVsZW1l
bnRzIGluIGl0IGFyZSBtb2RpZmllZAotICAvLyBhZnRlciB0aGlzIG1hdGNoZXIgaXMgY3JlYXRl
ZC4KLSAgZXhwbGljaXQgQ29udGFpbmVyRXFNYXRjaGVyKGNvbnN0IENvbnRhaW5lciYgZXhwZWN0
ZWQpCi0gICAgICA6IGV4cGVjdGVkXyhWaWV3OjpDb3B5KGV4cGVjdGVkKSkgewotICAgIC8vIE1h
a2VzIHN1cmUgdGhlIHVzZXIgZG9lc24ndCBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzIHRlbXBsYXRl
Ci0gICAgLy8gd2l0aCBhIGNvbnN0IG9yIHJlZmVyZW5jZSB0eXBlLgotICAgICh2b2lkKXRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxDb250YWluZXIsCi0gICAgICAgIEdURVNUX1JFTU9WRV9S
RUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIpPigpOwotICB9Ci0KLSAgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiZXF1YWxzICI7Ci0g
ICAgVW5pdmVyc2FsUHJpbnQoZXhwZWN0ZWRfLCBvcyk7Ci0gIH0KLSAgdm9pZCBEZXNjcmliZU5l
Z2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJkb2VzIG5v
dCBlcXVhbCAiOwotICAgIFVuaXZlcnNhbFByaW50KGV4cGVjdGVkXywgb3MpOwotICB9Ci0KLSAg
dGVtcGxhdGUgPHR5cGVuYW1lIExoc0NvbnRhaW5lcj4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4o
Y29uc3QgTGhzQ29udGFpbmVyJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVz
dWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgLy8gR1RFU1RfUkVNT1ZFX0NPTlNU
XygpIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhbiBNU1ZDIDguMCBidWcKLSAgICAvLyB0aGF0
IGNhdXNlcyBMaHNDb250YWluZXIgdG8gYmUgYSBjb25zdCB0eXBlIHNvbWV0aW1lcy4KLSAgICB0
eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PEdURVNUX1JFTU9WRV9DT05TVF8oTGhz
Q29udGFpbmVyKT4KLSAgICAgICAgTGhzVmlldzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIExoc1Zp
ZXc6OnR5cGUgTGhzU3RsQ29udGFpbmVyOwotICAgIFN0bENvbnRhaW5lclJlZmVyZW5jZSBsaHNf
c3RsX2NvbnRhaW5lciA9IExoc1ZpZXc6OkNvbnN0UmVmZXJlbmNlKGxocyk7Ci0gICAgaWYgKGxo
c19zdGxfY29udGFpbmVyID09IGV4cGVjdGVkXykKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
OjpzdGQ6Om9zdHJlYW0qIGNvbnN0IG9zID0gbGlzdGVuZXItPnN0cmVhbSgpOwotICAgIGlmIChv
cyAhPSBOVUxMKSB7Ci0gICAgICAvLyBTb21ldGhpbmcgaXMgZGlmZmVyZW50LiBDaGVjayBmb3Ig
ZXh0cmEgdmFsdWVzIGZpcnN0LgotICAgICAgYm9vbCBwcmludGVkX2hlYWRlciA9IGZhbHNlOwot
ICAgICAgZm9yICh0eXBlbmFtZSBMaHNTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0K
LSAgICAgICAgICAgICAgIGxoc19zdGxfY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICAgICAgIGl0
ICE9IGxoc19zdGxfY29udGFpbmVyLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpbnRlcm5h
bDo6QXJyYXlBd2FyZUZpbmQoZXhwZWN0ZWRfLmJlZ2luKCksIGV4cGVjdGVkXy5lbmQoKSwgKml0
KSA9PQotICAgICAgICAgICAgZXhwZWN0ZWRfLmVuZCgpKSB7Ci0gICAgICAgICAgaWYgKHByaW50
ZWRfaGVhZGVyKSB7Ci0gICAgICAgICAgICAqb3MgPDwgIiwgIjsKLSAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgKm9zIDw8ICJ3aGljaCBoYXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50
czogIjsKLSAgICAgICAgICAgIHByaW50ZWRfaGVhZGVyID0gdHJ1ZTsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgVW5pdmVyc2FsUHJpbnQoKml0LCBvcyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLQot
ICAgICAgLy8gTm93IGNoZWNrIGZvciBtaXNzaW5nIHZhbHVlcy4KLSAgICAgIGJvb2wgcHJpbnRl
ZF9oZWFkZXIyID0gZmFsc2U7Ci0gICAgICBmb3IgKHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBleHBlY3RlZF8uYmVnaW4oKTsKLSAgICAgICAgICAgaXQgIT0gZXhw
ZWN0ZWRfLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpbnRlcm5hbDo6QXJyYXlBd2FyZUZp
bmQoCi0gICAgICAgICAgICAgICAgbGhzX3N0bF9jb250YWluZXIuYmVnaW4oKSwgbGhzX3N0bF9j
b250YWluZXIuZW5kKCksICppdCkgPT0KLSAgICAgICAgICAgIGxoc19zdGxfY29udGFpbmVyLmVu
ZCgpKSB7Ci0gICAgICAgICAgaWYgKHByaW50ZWRfaGVhZGVyMikgewotICAgICAgICAgICAgKm9z
IDw8ICIsICI7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpvcyA8PCAocHJpbnRl
ZF9oZWFkZXIgPyAiLFxuYW5kIiA6ICJ3aGljaCIpCi0gICAgICAgICAgICAgICAgPDwgIiBkb2Vz
bid0IGhhdmUgdGhlc2UgZXhwZWN0ZWQgZWxlbWVudHM6ICI7Ci0gICAgICAgICAgICBwcmludGVk
X2hlYWRlcjIgPSB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgICBVbml2ZXJzYWxQcmludCgq
aXQsIG9zKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgU3RsQ29udGFpbmVyIGV4cGVjdGVkXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKENvbnRhaW5lckVxTWF0Y2hlcik7Ci19OwotCi0vLyBBIGNv
bXBhcmF0b3IgZnVuY3RvciB0aGF0IHVzZXMgdGhlIDwgb3BlcmF0b3IgdG8gY29tcGFyZSB0d28g
dmFsdWVzLgotc3RydWN0IExlc3NDb21wYXJhdG9yIHsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUJiBsaHMsIGNvbnN0IFUmIHJo
cykgY29uc3QgeyByZXR1cm4gbGhzIDwgcmhzOyB9Ci19OwotCi0vLyBJbXBsZW1lbnRzIFdoZW5T
b3J0ZWRCeShjb21wYXJhdG9yLCBjb250YWluZXJfbWF0Y2hlcikuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ29tcGFyYXRvciwgdHlwZW5hbWUgQ29udGFpbmVyTWF0Y2hlcj4KLWNsYXNzIFdoZW5Tb3J0
ZWRCeU1hdGNoZXIgewotIHB1YmxpYzoKLSAgV2hlblNvcnRlZEJ5TWF0Y2hlcihjb25zdCBDb21w
YXJhdG9yJiBjb21wYXJhdG9yLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRhaW5l
ck1hdGNoZXImIG1hdGNoZXIpCi0gICAgICA6IGNvbXBhcmF0b3JfKGNvbXBhcmF0b3IpLCBtYXRj
aGVyXyhtYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+Ci0g
IG9wZXJhdG9yIE1hdGNoZXI8TGhzQ29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1cm4gTWFr
ZU1hdGNoZXIobmV3IEltcGw8TGhzQ29udGFpbmVyPihjb21wYXJhdG9yXywgbWF0Y2hlcl8pKTsK
LSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWluZXI+Ci0gIGNsYXNzIEltcGwg
OiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxMaHNDb250YWluZXI+IHsKLSAgIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIGludGVybmFsOjpTdGxDb250YWluZXJWaWV3PAotICAgICAgICAgR1RFU1RfUkVN
T1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKExoc0NvbnRhaW5lcik+IExoc1ZpZXc7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBMaHNWaWV3Ojp0eXBlIExoc1N0bENvbnRhaW5lcjsKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIExoc1ZpZXc6OmNvbnN0X3JlZmVyZW5jZSBMaHNTdGxDb250YWluZXJSZWZlcmVu
Y2U7Ci0gICAgLy8gVHJhbnNmb3JtcyBzdGQ6OnBhaXI8Y29uc3QgS2V5LCBWYWx1ZT4gaW50byBz
dGQ6OnBhaXI8S2V5LCBWYWx1ZT4KLSAgICAvLyBzbyB0aGF0IHdlIGNhbiBtYXRjaCBhc3NvY2lh
dGl2ZSBjb250YWluZXJzLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgUmVtb3ZlQ29uc3RGcm9tS2V5
PAotICAgICAgICB0eXBlbmFtZSBMaHNTdGxDb250YWluZXI6OnZhbHVlX3R5cGU+Ojp0eXBlIExo
c1ZhbHVlOwotCi0gICAgSW1wbChjb25zdCBDb21wYXJhdG9yJiBjb21wYXJhdG9yLCBjb25zdCBD
b250YWluZXJNYXRjaGVyJiBtYXRjaGVyKQotICAgICAgICA6IGNvbXBhcmF0b3JfKGNvbXBhcmF0
b3IpLCBtYXRjaGVyXyhtYXRjaGVyKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3MgPDwgIih3aGVuIHNvcnRlZCkg
IjsKLSAgICAgIG1hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAg
ICAqb3MgPDwgIih3aGVuIHNvcnRlZCkgIjsKLSAgICAgIG1hdGNoZXJfLkRlc2NyaWJlTmVnYXRp
b25Ubyhvcyk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihMaHND
b250YWluZXIgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAgIExoc1N0bENvbnRhaW5lclJlZmVy
ZW5jZSBsaHNfc3RsX2NvbnRhaW5lciA9IExoc1ZpZXc6OkNvbnN0UmVmZXJlbmNlKGxocyk7Ci0g
ICAgICA6OnN0ZDo6dmVjdG9yPExoc1ZhbHVlPiBzb3J0ZWRfY29udGFpbmVyKGxoc19zdGxfY29u
dGFpbmVyLmJlZ2luKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxoc19zdGxfY29udGFpbmVyLmVuZCgpKTsKLSAgICAgIDo6c3RkOjpzb3J0KAotICAg
ICAgICAgICBzb3J0ZWRfY29udGFpbmVyLmJlZ2luKCksIHNvcnRlZF9jb250YWluZXIuZW5kKCks
IGNvbXBhcmF0b3JfKTsKLQotICAgICAgaWYgKCFsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsK
LSAgICAgICAgLy8gSWYgdGhlIGxpc3RlbmVyIGlzIG5vdCBpbnRlcmVzdGVkLCB3ZSBkbyBub3Qg
bmVlZCB0bwotICAgICAgICAvLyBjb25zdHJ1Y3QgdGhlIGlubmVyIGV4cGxhbmF0aW9uLgotICAg
ICAgICByZXR1cm4gbWF0Y2hlcl8uTWF0Y2hlcyhzb3J0ZWRfY29udGFpbmVyKTsKLSAgICAgIH0K
LQotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiOwotICAgICAgVW5pdmVyc2FsUHJpbnQo
c29ydGVkX2NvbnRhaW5lciwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICpsaXN0ZW5lciA8
PCAiIHdoZW4gc29ydGVkIjsKLQotICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBpbm5l
cl9saXN0ZW5lcjsKLSAgICAgIGNvbnN0IGJvb2wgbWF0Y2ggPSBtYXRjaGVyXy5NYXRjaEFuZEV4
cGxhaW4oc29ydGVkX2NvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmlubmVyX2xpc3RlbmVyKTsKLSAgICAgIFByaW50SWZOb3RFbXB0
eShpbm5lcl9saXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgIHJldHVy
biBtYXRjaDsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgQ29tcGFyYXRvciBjb21w
YXJhdG9yXzsKLSAgICBjb25zdCBNYXRjaGVyPGNvbnN0IDo6c3RkOjp2ZWN0b3I8TGhzVmFsdWU+
Jj4gbWF0Y2hlcl87Ci0KLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEltcGwp
OwotICB9OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgQ29tcGFyYXRvciBjb21wYXJhdG9yXzsKLSAg
Y29uc3QgQ29udGFpbmVyTWF0Y2hlciBtYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKFdoZW5Tb3J0ZWRCeU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBQb2ludHdpc2Uo
dHVwbGVfbWF0Y2hlciwgcmhzX2NvbnRhaW5lcikuICB0dXBsZV9tYXRjaGVyCi0vLyBtdXN0IGJl
IGFibGUgdG8gYmUgc2FmZWx5IGNhc3QgdG8gTWF0Y2hlcjx0dXBsZTxjb25zdCBUMSYsIGNvbnN0
Ci0vLyBUMiY+ID4sIHdoZXJlIFQxIGFuZCBUMiBhcmUgdGhlIHR5cGVzIG9mIGVsZW1lbnRzIGlu
IHRoZSBMSFMKLS8vIGNvbnRhaW5lciBhbmQgdGhlIFJIUyBjb250YWluZXIgcmVzcGVjdGl2ZWx5
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlTWF0Y2hlciwgdHlwZW5hbWUgUmhzQ29udGFpbmVy
PgotY2xhc3MgUG9pbnR3aXNlTWF0Y2hlciB7Ci0gcHVibGljOgotICB0eXBlZGVmIGludGVybmFs
OjpTdGxDb250YWluZXJWaWV3PFJoc0NvbnRhaW5lcj4gUmhzVmlldzsKLSAgdHlwZWRlZiB0eXBl
bmFtZSBSaHNWaWV3Ojp0eXBlIFJoc1N0bENvbnRhaW5lcjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBS
aHNTdGxDb250YWluZXI6OnZhbHVlX3R5cGUgUmhzVmFsdWU7Ci0KLSAgLy8gTGlrZSBDb250YWlu
ZXJFcSwgd2UgbWFrZSBhIGNvcHkgb2YgcmhzIGluIGNhc2UgdGhlIGVsZW1lbnRzIGluCi0gIC8v
IGl0IGFyZSBtb2RpZmllZCBhZnRlciB0aGlzIG1hdGNoZXIgaXMgY3JlYXRlZC4KLSAgUG9pbnR3
aXNlTWF0Y2hlcihjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIGNvbnN0IFJoc0Nv
bnRhaW5lciYgcmhzKQotICAgICAgOiB0dXBsZV9tYXRjaGVyXyh0dXBsZV9tYXRjaGVyKSwgcmhz
XyhSaHNWaWV3OjpDb3B5KHJocykpIHsKLSAgICAvLyBNYWtlcyBzdXJlIHRoZSB1c2VyIGRvZXNu
J3QgaW5zdGFudGlhdGUgdGhpcyBjbGFzcyB0ZW1wbGF0ZQotICAgIC8vIHdpdGggYSBjb25zdCBv
ciByZWZlcmVuY2UgdHlwZS4KLSAgICAodm9pZCl0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8
UmhzQ29udGFpbmVyLAotICAgICAgICBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8o
UmhzQ29udGFpbmVyKT4oKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBMaHNDb250YWlu
ZXI+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8TGhzQ29udGFpbmVyPigpIGNvbnN0IHsKLSAgICByZXR1
cm4gTWFrZU1hdGNoZXIobmV3IEltcGw8TGhzQ29udGFpbmVyPih0dXBsZV9tYXRjaGVyXywgcmhz
XykpOwotICB9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIExoc0NvbnRhaW5lcj4KLSAgY2xhc3Mg
SW1wbCA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPExoc0NvbnRhaW5lcj4gewotICAgcHVibGlj
OgotICAgIHR5cGVkZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8Ci0gICAgICAgICBHVEVT
VF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oTGhzQ29udGFpbmVyKT4gTGhzVmlldzsKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIExoc1ZpZXc6OnR5cGUgTGhzU3RsQ29udGFpbmVyOwotICAgIHR5
cGVkZWYgdHlwZW5hbWUgTGhzVmlldzo6Y29uc3RfcmVmZXJlbmNlIExoc1N0bENvbnRhaW5lclJl
ZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIExoc1N0bENvbnRhaW5lcjo6dmFsdWVfdHlw
ZSBMaHNWYWx1ZTsKLSAgICAvLyBXZSBwYXNzIHRoZSBMSFMgdmFsdWUgYW5kIHRoZSBSSFMgdmFs
dWUgdG8gdGhlIGlubmVyIG1hdGNoZXIgYnkKLSAgICAvLyByZWZlcmVuY2UsIGFzIHRoZXkgbWF5
IGJlIGV4cGVuc2l2ZSB0byBjb3B5LiAgV2UgbXVzdCB1c2UgdHVwbGUKLSAgICAvLyBpbnN0ZWFk
IG9mIHBhaXIgaGVyZSwgYXMgYSBwYWlyIGNhbm5vdCBob2xkIHJlZmVyZW5jZXMgKEMrKyA5OCwK
LSAgICAvLyAyMC4yLjIgW2xpYi5wYWlyc10pLgotICAgIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBs
ZTxjb25zdCBMaHNWYWx1ZSYsIGNvbnN0IFJoc1ZhbHVlJj4gSW5uZXJNYXRjaGVyQXJnOwotCi0g
ICAgSW1wbChjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIGNvbnN0IFJoc1N0bENv
bnRhaW5lciYgcmhzKQotICAgICAgICAvLyBtb25vX3R1cGxlX21hdGNoZXJfIGhvbGRzIGEgbW9u
b21vcnBoaWMgdmVyc2lvbiBvZiB0aGUgdHVwbGUgbWF0Y2hlci4KLSAgICAgICAgOiBtb25vX3R1
cGxlX21hdGNoZXJfKFNhZmVNYXRjaGVyQ2FzdDxJbm5lck1hdGNoZXJBcmc+KHR1cGxlX21hdGNo
ZXIpKSwKLSAgICAgICAgICByaHNfKHJocykge30KLQotICAgIHZpcnR1YWwgdm9pZCBEZXNjcmli
ZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICAgKm9zIDw8ICJjb250YWlucyAi
IDw8IHJoc18uc2l6ZSgpCi0gICAgICAgICAgPDwgIiB2YWx1ZXMsIHdoZXJlIGVhY2ggdmFsdWUg
YW5kIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlIGluICI7Ci0gICAgICBVbml2ZXJzYWxQcmludGVy
PFJoc1N0bENvbnRhaW5lcj46OlByaW50KHJoc18sIG9zKTsKLSAgICAgICpvcyA8PCAiICI7Ci0g
ICAgICBtb25vX3R1cGxlX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgIH0KLSAgICB2aXJ0
dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qgewot
ICAgICAgKm9zIDw8ICJkb2Vzbid0IGNvbnRhaW4gZXhhY3RseSAiIDw8IHJoc18uc2l6ZSgpCi0g
ICAgICAgICAgPDwgIiB2YWx1ZXMsIG9yIGNvbnRhaW5zIGEgdmFsdWUgeCBhdCBzb21lIGluZGV4
IGkiCi0gICAgICAgICAgPDwgIiB3aGVyZSB4IGFuZCB0aGUgaS10aCB2YWx1ZSBvZiAiOwotICAg
ICAgVW5pdmVyc2FsUHJpbnQocmhzXywgb3MpOwotICAgICAgKm9zIDw8ICIgIjsKLSAgICAgIG1v
bm9fdHVwbGVfbWF0Y2hlcl8uRGVzY3JpYmVOZWdhdGlvblRvKG9zKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKExoc0NvbnRhaW5lciBsaHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29u
c3QgewotICAgICAgTGhzU3RsQ29udGFpbmVyUmVmZXJlbmNlIGxoc19zdGxfY29udGFpbmVyID0g
TGhzVmlldzo6Q29uc3RSZWZlcmVuY2UobGhzKTsKLSAgICAgIGNvbnN0IHNpemVfdCBhY3R1YWxf
c2l6ZSA9IGxoc19zdGxfY29udGFpbmVyLnNpemUoKTsKLSAgICAgIGlmIChhY3R1YWxfc2l6ZSAh
PSByaHNfLnNpemUoKSkgewotICAgICAgICAqbGlzdGVuZXIgPDwgIndoaWNoIGNvbnRhaW5zICIg
PDwgYWN0dWFsX3NpemUgPDwgIiB2YWx1ZXMiOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICB9Ci0KLSAgICAgIHR5cGVuYW1lIExoc1N0bENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgbGVm
dCA9IGxoc19zdGxfY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICB0eXBlbmFtZSBSaHNTdGxDb250
YWluZXI6OmNvbnN0X2l0ZXJhdG9yIHJpZ2h0ID0gcmhzXy5iZWdpbigpOwotICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgIT0gYWN0dWFsX3NpemU7ICsraSwgKytsZWZ0LCArK3JpZ2h0KSB7Ci0g
ICAgICAgIGNvbnN0IElubmVyTWF0Y2hlckFyZyB2YWx1ZV9wYWlyKCpsZWZ0LCAqcmlnaHQpOwot
Ci0gICAgICAgIGlmIChsaXN0ZW5lci0+SXNJbnRlcmVzdGVkKCkpIHsKLSAgICAgICAgICBTdHJp
bmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xpc3RlbmVyOwotICAgICAgICAgIGlmICghbW9u
b190dXBsZV9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oCi0gICAgICAgICAgICAgICAgICB2YWx1
ZV9wYWlyLCAmaW5uZXJfbGlzdGVuZXIpKSB7Ci0gICAgICAgICAgICAqbGlzdGVuZXIgPDwgIndo
ZXJlIHRoZSB2YWx1ZSBwYWlyICgiOwotICAgICAgICAgICAgVW5pdmVyc2FsUHJpbnQoKmxlZnQs
IGxpc3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgICAgICAgICAqbGlzdGVuZXIgPDwgIiwgIjsKLSAg
ICAgICAgICAgIFVuaXZlcnNhbFByaW50KCpyaWdodCwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAg
ICAgICAgICAgICpsaXN0ZW5lciA8PCAiKSBhdCBpbmRleCAjIiA8PCBpIDw8ICIgZG9uJ3QgbWF0
Y2giOwotICAgICAgICAgICAgUHJpbnRJZk5vdEVtcHR5KGlubmVyX2xpc3RlbmVyLnN0cigpLCBs
aXN0ZW5lci0+c3RyZWFtKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpZiAoIW1vbm9fdHVwbGVfbWF0Y2hlcl8u
TWF0Y2hlcyh2YWx1ZV9wYWlyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgfQotCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0g
ICAgY29uc3QgTWF0Y2hlcjxJbm5lck1hdGNoZXJBcmc+IG1vbm9fdHVwbGVfbWF0Y2hlcl87Ci0g
ICAgY29uc3QgUmhzU3RsQ29udGFpbmVyIHJoc187Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKEltcGwpOwotICB9OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgVHVwbGVNYXRjaGVyIHR1cGxl
X21hdGNoZXJfOwotICBjb25zdCBSaHNTdGxDb250YWluZXIgcmhzXzsKLQotICBHVEVTVF9ESVNB
TExPV19BU1NJR05fKFBvaW50d2lzZU1hdGNoZXIpOwotfTsKLQotLy8gSG9sZHMgdGhlIGxvZ2lj
IGNvbW1vbiB0byBDb250YWluc01hdGNoZXJJbXBsIGFuZCBFYWNoTWF0Y2hlckltcGwuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotY2xhc3MgUXVhbnRpZmllck1hdGNoZXJJbXBsIDog
cHVibGljIE1hdGNoZXJJbnRlcmZhY2U8Q29udGFpbmVyPiB7Ci0gcHVibGljOgotICB0eXBlZGVm
IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRhaW5l
cjsKLSAgdHlwZWRlZiBTdGxDb250YWluZXJWaWV3PFJhd0NvbnRhaW5lcj4gVmlldzsKLSAgdHlw
ZWRlZiB0eXBlbmFtZSBWaWV3Ojp0eXBlIFN0bENvbnRhaW5lcjsKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBWaWV3Ojpjb25zdF9yZWZlcmVuY2UgU3RsQ29udGFpbmVyUmVmZXJlbmNlOwotICB0eXBlZGVm
IHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBFbGVtZW50OwotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IFF1YW50aWZpZXJNYXRjaGVySW1w
bChJbm5lck1hdGNoZXIgaW5uZXJfbWF0Y2hlcikKLSAgICAgIDogaW5uZXJfbWF0Y2hlcl8oCi0g
ICAgICAgICAgIHRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDxjb25zdCBFbGVtZW50Jj4oaW5uZXJf
bWF0Y2hlcikpIHt9Ci0KLSAgLy8gQ2hlY2tzIHdoZXRoZXI6Ci0gIC8vICogQWxsIGVsZW1lbnRz
IGluIHRoZSBjb250YWluZXIgbWF0Y2gsIGlmIGFsbF9lbGVtZW50c19zaG91bGRfbWF0Y2guCi0g
IC8vICogQW55IGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lciBtYXRjaGVzLCBpZiAhYWxsX2VsZW1l
bnRzX3Nob3VsZF9tYXRjaC4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW5JbXBsKGJvb2wgYWxsX2Vs
ZW1lbnRzX3Nob3VsZF9tYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5l
ciBjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIFN0bENvbnRhaW5lclJlZmVyZW5jZSBzdGxfY29u
dGFpbmVyID0gVmlldzo6Q29uc3RSZWZlcmVuY2UoY29udGFpbmVyKTsKLSAgICBzaXplX3QgaSA9
IDA7Ci0gICAgZm9yICh0eXBlbmFtZSBTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
c3RsX2NvbnRhaW5lci5iZWdpbigpOwotICAgICAgICAgaXQgIT0gc3RsX2NvbnRhaW5lci5lbmQo
KTsgKytpdCwgKytpKSB7Ci0gICAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGlubmVyX2xp
c3RlbmVyOwotICAgICAgY29uc3QgYm9vbCBtYXRjaGVzID0gaW5uZXJfbWF0Y2hlcl8uTWF0Y2hB
bmRFeHBsYWluKCppdCwgJmlubmVyX2xpc3RlbmVyKTsKLQotICAgICAgaWYgKG1hdGNoZXMgIT0g
YWxsX2VsZW1lbnRzX3Nob3VsZF9tYXRjaCkgewotICAgICAgICAqbGlzdGVuZXIgPDwgIndob3Nl
IGVsZW1lbnQgIyIgPDwgaQotICAgICAgICAgICAgICAgICAgPDwgKG1hdGNoZXMgPyAiIG1hdGNo
ZXMiIDogIiBkb2Vzbid0IG1hdGNoIik7Ci0gICAgICAgIFByaW50SWZOb3RFbXB0eShpbm5lcl9s
aXN0ZW5lci5zdHIoKSwgbGlzdGVuZXItPnN0cmVhbSgpKTsKLSAgICAgICAgcmV0dXJuICFhbGxf
ZWxlbWVudHNfc2hvdWxkX21hdGNoOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYWxsX2Vs
ZW1lbnRzX3Nob3VsZF9tYXRjaDsKLSAgfQotCi0gcHJvdGVjdGVkOgotICBjb25zdCBNYXRjaGVy
PGNvbnN0IEVsZW1lbnQmPiBpbm5lcl9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJ
R05fKFF1YW50aWZpZXJNYXRjaGVySW1wbCk7Ci19OwotCi0vLyBJbXBsZW1lbnRzIENvbnRhaW5z
KGVsZW1lbnRfbWF0Y2hlcikgZm9yIHRoZSBnaXZlbiBhcmd1bWVudCB0eXBlIENvbnRhaW5lci4K
LS8vIFN5bW1ldHJpYyB0byBFYWNoTWF0Y2hlckltcGwuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29u
dGFpbmVyPgotY2xhc3MgQ29udGFpbnNNYXRjaGVySW1wbCA6IHB1YmxpYyBRdWFudGlmaWVyTWF0
Y2hlckltcGw8Q29udGFpbmVyPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5u
ZXJNYXRjaGVyPgotICBleHBsaWNpdCBDb250YWluc01hdGNoZXJJbXBsKElubmVyTWF0Y2hlciBp
bm5lcl9tYXRjaGVyKQotICAgICAgOiBRdWFudGlmaWVyTWF0Y2hlckltcGw8Q29udGFpbmVyPihp
bm5lcl9tYXRjaGVyKSB7fQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoaXMgbWF0Y2hlciBkb2Vz
LgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsK
LSAgICAqb3MgPDwgImNvbnRhaW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IHRoYXQgIjsKLSAgICB0
aGlzLT5pbm5lcl9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9z
IDw8ICJkb2Vzbid0IGNvbnRhaW4gYW55IGVsZW1lbnQgdGhhdCAiOwotICAgIHRoaXMtPmlubmVy
X21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICB9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5k
RXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRo
aXMtPk1hdGNoQW5kRXhwbGFpbkltcGwoZmFsc2UsIGNvbnRhaW5lciwgbGlzdGVuZXIpOwotICB9
Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKENvbnRhaW5zTWF0Y2hlcklt
cGwpOwotfTsKLQotLy8gSW1wbGVtZW50cyBFYWNoKGVsZW1lbnRfbWF0Y2hlcikgZm9yIHRoZSBn
aXZlbiBhcmd1bWVudCB0eXBlIENvbnRhaW5lci4KLS8vIFN5bW1ldHJpYyB0byBDb250YWluc01h
dGNoZXJJbXBsLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWNsYXNzIEVhY2hNYXRj
aGVySW1wbCA6IHB1YmxpYyBRdWFudGlmaWVyTWF0Y2hlckltcGw8Q29udGFpbmVyPiB7Ci0gcHVi
bGljOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotICBleHBsaWNpdCBFYWNo
TWF0Y2hlckltcGwoSW5uZXJNYXRjaGVyIGlubmVyX21hdGNoZXIpCi0gICAgICA6IFF1YW50aWZp
ZXJNYXRjaGVySW1wbDxDb250YWluZXI+KGlubmVyX21hdGNoZXIpIHt9Ci0KLSAgLy8gRGVzY3Jp
YmVzIHdoYXQgdGhpcyBtYXRjaGVyIGRvZXMuCi0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6
c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAib25seSBjb250YWlucyBlbGVt
ZW50cyB0aGF0ICI7Ci0gICAgdGhpcy0+aW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKDo6c3RkOjpvc3RyZWFtKiBv
cykgY29uc3QgewotICAgICpvcyA8PCAiY29udGFpbnMgc29tZSBlbGVtZW50IHRoYXQgIjsKLSAg
ICB0aGlzLT5pbm5lcl9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAg
dmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihDb250YWluZXIgY29udGFpbmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBj
b25zdCB7Ci0gICAgcmV0dXJuIHRoaXMtPk1hdGNoQW5kRXhwbGFpbkltcGwodHJ1ZSwgY29udGFp
bmVyLCBsaXN0ZW5lcik7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0FTU0lH
Tl8oRWFjaE1hdGNoZXJJbXBsKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgcG9seW1vcnBoaWMgQ29u
dGFpbnMoZWxlbWVudF9tYXRjaGVyKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNPgotY2xhc3MgQ29u
dGFpbnNNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IENvbnRhaW5zTWF0Y2hlcihNIG0p
IDogaW5uZXJfbWF0Y2hlcl8obSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVy
PgotICBvcGVyYXRvciBNYXRjaGVyPENvbnRhaW5lcj4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1h
a2VNYXRjaGVyKG5ldyBDb250YWluc01hdGNoZXJJbXBsPENvbnRhaW5lcj4oaW5uZXJfbWF0Y2hl
cl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBpbm5lcl9tYXRjaGVyXzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKENvbnRhaW5zTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1l
bnRzIHBvbHltb3JwaGljIEVhY2goZWxlbWVudF9tYXRjaGVyKS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBNPgotY2xhc3MgRWFjaE1hdGNoZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRWFjaE1hdGNo
ZXIoTSBtKSA6IGlubmVyX21hdGNoZXJfKG0pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3QgewotICAgIHJl
dHVybiBNYWtlTWF0Y2hlcihuZXcgRWFjaE1hdGNoZXJJbXBsPENvbnRhaW5lcj4oaW5uZXJfbWF0
Y2hlcl8pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgTSBpbm5lcl9tYXRjaGVyXzsKLQot
ICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEVhY2hNYXRjaGVyKTsKLX07Ci0KLS8vIEltcGxlbWVu
dHMgS2V5KGlubmVyX21hdGNoZXIpIGZvciB0aGUgZ2l2ZW4gYXJndW1lbnQgcGFpciB0eXBlLgot
Ly8gS2V5KGlubmVyX21hdGNoZXIpIG1hdGNoZXMgYW4gc3RkOjpwYWlyIHdob3NlICdmaXJzdCcg
ZmllbGQgbWF0Y2hlcwotLy8gaW5uZXJfbWF0Y2hlci4gIEZvciBleGFtcGxlLCBDb250YWlucyhL
ZXkoR2UoNSkpKSBjYW4gYmUgdXNlZCB0byBtYXRjaCBhbgotLy8gc3RkOjptYXAgdGhhdCBjb250
YWlucyBhdCBsZWFzdCBvbmUgZWxlbWVudCB3aG9zZSBrZXkgaXMgPj0gNS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBQYWlyVHlwZT4KLWNsYXNzIEtleU1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJ
bnRlcmZhY2U8UGFpclR5cGU+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgR1RFU1RfUkVNT1ZFX1JF
RkVSRU5DRV9BTkRfQ09OU1RfKFBhaXJUeXBlKSBSYXdQYWlyVHlwZTsKLSAgdHlwZWRlZiB0eXBl
bmFtZSBSYXdQYWlyVHlwZTo6Zmlyc3RfdHlwZSBLZXlUeXBlOwotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBJbm5lck1hdGNoZXI+Ci0gIGV4cGxpY2l0IEtleU1hdGNoZXJJbXBsKElubmVyTWF0Y2hl
ciBpbm5lcl9tYXRjaGVyKQotICAgICAgOiBpbm5lcl9tYXRjaGVyXygKLSAgICAgICAgICB0ZXN0
aW5nOjpTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgS2V5VHlwZSY+KGlubmVyX21hdGNoZXIpKSB7Ci0g
IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmICdrZXlfdmFsdWUuZmlyc3QnICh0aGUga2V5KSBt
YXRjaGVzIHRoZSBpbm5lciBtYXRjaGVyLgotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWlu
KFBhaXJUeXBlIGtleV92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIFN0cmluZ01hdGNoUmVzdWx0
TGlzdGVuZXIgaW5uZXJfbGlzdGVuZXI7Ci0gICAgY29uc3QgYm9vbCBtYXRjaCA9IGlubmVyX21h
dGNoZXJfLk1hdGNoQW5kRXhwbGFpbihrZXlfdmFsdWUuZmlyc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5uZXJfbGlzdGVuZXIpOwot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGxhbmF0aW9uID0gaW5uZXJfbGlzdGVuZXIuc3RyKCk7
Ci0gICAgaWYgKGV4cGxhbmF0aW9uICE9ICIiKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIndob3Nl
IGZpcnN0IGZpZWxkIGlzIGEgdmFsdWUgIiA8PCBleHBsYW5hdGlvbjsKLSAgICB9Ci0gICAgcmV0
dXJuIG1hdGNoOwotICB9Ci0KLSAgLy8gRGVzY3JpYmVzIHdoYXQgdGhpcyBtYXRjaGVyIGRvZXMu
Ci0gIHZpcnR1YWwgdm9pZCBEZXNjcmliZVRvKDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3Qgewot
ICAgICpvcyA8PCAiaGFzIGEga2V5IHRoYXQgIjsKLSAgICBpbm5lcl9tYXRjaGVyXy5EZXNjcmli
ZVRvKG9zKTsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoZSBuZWdhdGlvbiBvZiB0aGlz
IG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6
b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImRvZXNuJ3QgaGF2ZSBhIGtleSB0aGF0
ICI7Ci0gICAgaW5uZXJfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0gIH0KLQotIHByaXZhdGU6
Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgS2V5VHlwZSY+IGlubmVyX21hdGNoZXJfOwotCi0gIEdU
RVNUX0RJU0FMTE9XX0FTU0lHTl8oS2V5TWF0Y2hlckltcGwpOwotfTsKLQotLy8gSW1wbGVtZW50
cyBwb2x5bW9ycGhpYyBLZXkobWF0Y2hlcl9mb3Jfa2V5KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBN
PgotY2xhc3MgS2V5TWF0Y2hlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBLZXlNYXRjaGVyKE0g
bSkgOiBtYXRjaGVyX2Zvcl9rZXlfKG0pIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXJU
eXBlPgotICBvcGVyYXRvciBNYXRjaGVyPFBhaXJUeXBlPigpIGNvbnN0IHsKLSAgICByZXR1cm4g
TWFrZU1hdGNoZXIobmV3IEtleU1hdGNoZXJJbXBsPFBhaXJUeXBlPihtYXRjaGVyX2Zvcl9rZXlf
KSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IE0gbWF0Y2hlcl9mb3Jfa2V5XzsKLQotICBH
VEVTVF9ESVNBTExPV19BU1NJR05fKEtleU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBQ
YWlyKGZpcnN0X21hdGNoZXIsIHNlY29uZF9tYXRjaGVyKSBmb3IgdGhlIGdpdmVuIGFyZ3VtZW50
IHBhaXIKLS8vIHR5cGUgd2l0aCBpdHMgdHdvIG1hdGNoZXJzLiBTZWUgUGFpcigpIGZ1bmN0aW9u
IGJlbG93LgotdGVtcGxhdGUgPHR5cGVuYW1lIFBhaXJUeXBlPgotY2xhc3MgUGFpck1hdGNoZXJJ
bXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8UGFpclR5cGU+IHsKLSBwdWJsaWM6Ci0gIHR5
cGVkZWYgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfKFBhaXJUeXBlKSBSYXdQYWly
VHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBSYXdQYWlyVHlwZTo6Zmlyc3RfdHlwZSBGaXJzdFR5
cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgUmF3UGFpclR5cGU6OnNlY29uZF90eXBlIFNlY29uZFR5
cGU7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0TWF0Y2hlciwgdHlwZW5hbWUgU2Vjb25k
TWF0Y2hlcj4KLSAgUGFpck1hdGNoZXJJbXBsKEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyLCBT
ZWNvbmRNYXRjaGVyIHNlY29uZF9tYXRjaGVyKQotICAgICAgOiBmaXJzdF9tYXRjaGVyXygKLSAg
ICAgICAgICAgIHRlc3Rpbmc6OlNhZmVNYXRjaGVyQ2FzdDxjb25zdCBGaXJzdFR5cGUmPihmaXJz
dF9tYXRjaGVyKSksCi0gICAgICAgIHNlY29uZF9tYXRjaGVyXygKLSAgICAgICAgICAgIHRlc3Rp
bmc6OlNhZmVNYXRjaGVyQ2FzdDxjb25zdCBTZWNvbmRUeXBlJj4oc2Vjb25kX21hdGNoZXIpKSB7
Ci0gIH0KLQotICAvLyBEZXNjcmliZXMgd2hhdCB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVh
bCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8
ICJoYXMgYSBmaXJzdCBmaWVsZCB0aGF0ICI7Ci0gICAgZmlyc3RfbWF0Y2hlcl8uRGVzY3JpYmVU
byhvcyk7Ci0gICAgKm9zIDw8ICIsIGFuZCBoYXMgYSBzZWNvbmQgZmllbGQgdGhhdCAiOwotICAg
IHNlY29uZF9tYXRjaGVyXy5EZXNjcmliZVRvKG9zKTsKLSAgfQotCi0gIC8vIERlc2NyaWJlcyB3
aGF0IHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERl
c2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwg
ImhhcyBhIGZpcnN0IGZpZWxkIHRoYXQgIjsKLSAgICBmaXJzdF9tYXRjaGVyXy5EZXNjcmliZU5l
Z2F0aW9uVG8ob3MpOwotICAgICpvcyA8PCAiLCBvciBoYXMgYSBzZWNvbmQgZmllbGQgdGhhdCAi
OwotICAgIHNlY29uZF9tYXRjaGVyXy5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICB9Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiAnYV9wYWlyLmZpcnN0JyBtYXRjaGVzIGZpcnN0X21hdGNoZXIg
YW5kICdhX3BhaXIuc2Vjb25kJwotICAvLyBtYXRjaGVzIHNlY29uZF9tYXRjaGVyLgotICB2aXJ0
dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKFBhaXJUeXBlIGFfcGFpciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3Qgewot
ICAgIGlmICghbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAvLyBJZiB0aGUgbGlz
dGVuZXIgaXMgbm90IGludGVyZXN0ZWQsIHdlIGRvbid0IG5lZWQgdG8gY29uc3RydWN0IHRoZQot
ICAgICAgLy8gZXhwbGFuYXRpb24uCi0gICAgICByZXR1cm4gZmlyc3RfbWF0Y2hlcl8uTWF0Y2hl
cyhhX3BhaXIuZmlyc3QpICYmCi0gICAgICAgICAgICAgc2Vjb25kX21hdGNoZXJfLk1hdGNoZXMo
YV9wYWlyLnNlY29uZCk7Ci0gICAgfQotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgZmly
c3RfaW5uZXJfbGlzdGVuZXI7Ci0gICAgaWYgKCFmaXJzdF9tYXRjaGVyXy5NYXRjaEFuZEV4cGxh
aW4oYV9wYWlyLmZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZmaXJzdF9pbm5lcl9saXN0ZW5lcikpIHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hvc2UgZmly
c3QgZmllbGQgZG9lcyBub3QgbWF0Y2giOwotICAgICAgUHJpbnRJZk5vdEVtcHR5KGZpcnN0X2lu
bmVyX2xpc3RlbmVyLnN0cigpLCBsaXN0ZW5lci0+c3RyZWFtKCkpOwotICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLSAgICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIHNlY29uZF9pbm5lcl9s
aXN0ZW5lcjsKLSAgICBpZiAoIXNlY29uZF9tYXRjaGVyXy5NYXRjaEFuZEV4cGxhaW4oYV9wYWly
LnNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29u
ZF9pbm5lcl9saXN0ZW5lcikpIHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hvc2Ugc2Vjb25kIGZp
ZWxkIGRvZXMgbm90IG1hdGNoIjsKLSAgICAgIFByaW50SWZOb3RFbXB0eShzZWNvbmRfaW5uZXJf
bGlzdGVuZXIuc3RyKCksIGxpc3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIEV4cGxhaW5TdWNjZXNzKGZpcnN0X2lubmVyX2xpc3RlbmVyLnN0cigpLCBz
ZWNvbmRfaW5uZXJfbGlzdGVuZXIuc3RyKCksCi0gICAgICAgICAgICAgICAgICAgbGlzdGVuZXIp
OwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSBwcml2YXRlOgotICB2b2lkIEV4cGxhaW5TdWNj
ZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaXJzdF9leHBsYW5hdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc2Vjb25kX2V4cGxhbmF0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAg
Kmxpc3RlbmVyIDw8ICJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCI7Ci0gICAgaWYgKGZpcnN0X2V4
cGxhbmF0aW9uICE9ICIiKSB7Ci0gICAgICAqbGlzdGVuZXIgPDwgIiwgd2hlcmUgdGhlIGZpcnN0
IGZpZWxkIGlzIGEgdmFsdWUgIiA8PCBmaXJzdF9leHBsYW5hdGlvbjsKLSAgICB9Ci0gICAgaWYg
KHNlY29uZF9leHBsYW5hdGlvbiAhPSAiIikgewotICAgICAgKmxpc3RlbmVyIDw8ICIsICI7Ci0g
ICAgICBpZiAoZmlyc3RfZXhwbGFuYXRpb24gIT0gIiIpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8
ICJhbmQgIjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAid2hlcmUgIjsK
LSAgICAgIH0KLSAgICAgICpsaXN0ZW5lciA8PCAidGhlIHNlY29uZCBmaWVsZCBpcyBhIHZhbHVl
ICIgPDwgc2Vjb25kX2V4cGxhbmF0aW9uOwotICAgIH0KLSAgfQotCi0gIGNvbnN0IE1hdGNoZXI8
Y29uc3QgRmlyc3RUeXBlJj4gZmlyc3RfbWF0Y2hlcl87Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
U2Vjb25kVHlwZSY+IHNlY29uZF9tYXRjaGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05f
KFBhaXJNYXRjaGVySW1wbCk7Ci19OwotCi0vLyBJbXBsZW1lbnRzIHBvbHltb3JwaGljIFBhaXIo
Zmlyc3RfbWF0Y2hlciwgc2Vjb25kX21hdGNoZXIpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0
TWF0Y2hlciwgdHlwZW5hbWUgU2Vjb25kTWF0Y2hlcj4KLWNsYXNzIFBhaXJNYXRjaGVyIHsKLSBw
dWJsaWM6Ci0gIFBhaXJNYXRjaGVyKEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyLCBTZWNvbmRN
YXRjaGVyIHNlY29uZF9tYXRjaGVyKQotICAgICAgOiBmaXJzdF9tYXRjaGVyXyhmaXJzdF9tYXRj
aGVyKSwgc2Vjb25kX21hdGNoZXJfKHNlY29uZF9tYXRjaGVyKSB7fQotCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBQYWlyVHlwZT4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxQYWlyVHlwZT4gKCkgY29uc3Qg
ewotICAgIHJldHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IFBhaXJNYXRjaGVySW1wbDxQ
YWlyVHlwZT4oCi0gICAgICAgICAgICBmaXJzdF9tYXRjaGVyXywgc2Vjb25kX21hdGNoZXJfKSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IEZpcnN0TWF0Y2hlciBmaXJzdF9tYXRjaGVyXzsK
LSAgY29uc3QgU2Vjb25kTWF0Y2hlciBzZWNvbmRfbWF0Y2hlcl87Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhQYWlyTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJl
KCkgYW5kIEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+
Ci1jbGFzcyBFbGVtZW50c0FyZU1hdGNoZXJJbXBsIDogcHVibGljIE1hdGNoZXJJbnRlcmZhY2U8
Q29udGFpbmVyPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0Vf
QU5EX0NPTlNUXyhDb250YWluZXIpIFJhd0NvbnRhaW5lcjsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6
U3RsQ29udGFpbmVyVmlldzxSYXdDb250YWluZXI+IFZpZXc7Ci0gIHR5cGVkZWYgdHlwZW5hbWUg
Vmlldzo6dHlwZSBTdGxDb250YWluZXI7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6Y29uc3Rf
cmVmZXJlbmNlIFN0bENvbnRhaW5lclJlZmVyZW5jZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBTdGxD
b250YWluZXI6OnZhbHVlX3R5cGUgRWxlbWVudDsKLQotICAvLyBDb25zdHJ1Y3RzIHRoZSBtYXRj
aGVyIGZyb20gYSBzZXF1ZW5jZSBvZiBlbGVtZW50IHZhbHVlcyBvcgotICAvLyBlbGVtZW50IG1h
dGNoZXJzLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyPgotICBFbGVtZW50c0FyZU1h
dGNoZXJJbXBsKElucHV0SXRlciBmaXJzdCwgSW5wdXRJdGVyIGxhc3QpIHsKLSAgICB3aGlsZSAo
Zmlyc3QgIT0gbGFzdCkgewotICAgICAgbWF0Y2hlcnNfLnB1c2hfYmFjayhNYXRjaGVyQ2FzdDxj
b25zdCBFbGVtZW50Jj4oKmZpcnN0KyspKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZXNjcmliZXMg
d2hhdCB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgaWYgKGNvdW50KCkgPT0gMCkgewotICAgICAgKm9z
IDw8ICJpcyBlbXB0eSI7Ci0gICAgfSBlbHNlIGlmIChjb3VudCgpID09IDEpIHsKLSAgICAgICpv
cyA8PCAiaGFzIDEgZWxlbWVudCB0aGF0ICI7Ci0gICAgICBtYXRjaGVyc19bMF0uRGVzY3JpYmVU
byhvcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAiaGFzICIgPDwgRWxlbWVudHMoY291
bnQoKSkgPDwgIiB3aGVyZVxuIjsKLSAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50
KCk7ICsraSkgewotICAgICAgICAqb3MgPDwgImVsZW1lbnQgIyIgPDwgaSA8PCAiICI7Ci0gICAg
ICAgIG1hdGNoZXJzX1tpXS5EZXNjcmliZVRvKG9zKTsKLSAgICAgICAgaWYgKGkgKyAxIDwgY291
bnQoKSkgewotICAgICAgICAgICpvcyA8PCAiLFxuIjsKLSAgICAgICAgfQotICAgICAgfQotICAg
IH0KLSAgfQotCi0gIC8vIERlc2NyaWJlcyB3aGF0IHRoZSBuZWdhdGlvbiBvZiB0aGlzIG1hdGNo
ZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKLSAgICBpZiAoY291bnQoKSA9PSAwKSB7Ci0gICAgICAqb3MgPDwgImlz
bid0IGVtcHR5IjsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAqb3MgPDwgImRvZXNuJ3Qg
aGF2ZSAiIDw8IEVsZW1lbnRzKGNvdW50KCkpIDw8ICIsIG9yXG4iOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IGNvdW50KCk7ICsraSkgewotICAgICAgKm9zIDw8ICJlbGVtZW50ICMiIDw8
IGkgPDwgIiAiOwotICAgICAgbWF0Y2hlcnNfW2ldLkRlc2NyaWJlTmVnYXRpb25Ubyhvcyk7Ci0g
ICAgICBpZiAoaSArIDEgPCBjb3VudCgpKSB7Ci0gICAgICAgICpvcyA8PCAiLCBvclxuIjsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgTWF0Y2hBbmRFeHBsYWluKENvbnRh
aW5lciBjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1
bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAvLyBUbyB3b3JrIHdpdGggc3RyZWFt
LWxpa2UgImNvbnRhaW5lcnMiLCB3ZSBtdXN0IG9ubHkgd2FsawotICAgIC8vIHRocm91Z2ggdGhl
IGVsZW1lbnRzIGluIG9uZSBwYXNzLgotCi0gICAgY29uc3QgYm9vbCBsaXN0ZW5lcl9pbnRlcmVz
dGVkID0gbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpOwotCi0gICAgLy8gZXhwbGFuYXRpb25zW2ld
IGlzIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgZWxlbWVudCBhdCBpbmRleCBpLgotICAgIDo6c3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV4cGxhbmF0aW9ucyhjb3VudCgpKTsKLSAgICBTdGxDb250
YWluZXJSZWZlcmVuY2Ugc3RsX2NvbnRhaW5lciA9IFZpZXc6OkNvbnN0UmVmZXJlbmNlKGNvbnRh
aW5lcik7Ci0gICAgdHlwZW5hbWUgU3RsQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0
bF9jb250YWluZXIuYmVnaW4oKTsKLSAgICBzaXplX3QgZXhhbV9wb3MgPSAwOwotICAgIGJvb2wg
bWlzbWF0Y2hfZm91bmQgPSBmYWxzZTsgIC8vIEhhdmUgd2UgZm91bmQgYSBtaXNtYXRjaGVkIGVs
ZW1lbnQgeWV0PwotCi0gICAgLy8gR28gdGhyb3VnaCB0aGUgZWxlbWVudHMgYW5kIG1hdGNoZXJz
IGluIHBhaXJzLCB1bnRpbCB3ZSByZWFjaAotICAgIC8vIHRoZSBlbmQgb2YgZWl0aGVyIHRoZSBl
bGVtZW50cyBvciB0aGUgbWF0Y2hlcnMsIG9yIHVudGlsIHdlIGZpbmQgYQotICAgIC8vIG1pc21h
dGNoLgotICAgIGZvciAoOyBpdCAhPSBzdGxfY29udGFpbmVyLmVuZCgpICYmIGV4YW1fcG9zICE9
IGNvdW50KCk7ICsraXQsICsrZXhhbV9wb3MpIHsKLSAgICAgIGJvb2wgbWF0Y2g7ICAvLyBEb2Vz
IHRoZSBjdXJyZW50IGVsZW1lbnQgbWF0Y2ggdGhlIGN1cnJlbnQgbWF0Y2hlcj8KLSAgICAgIGlm
IChsaXN0ZW5lcl9pbnRlcmVzdGVkKSB7Ci0gICAgICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVu
ZXIgczsKLSAgICAgICAgbWF0Y2ggPSBtYXRjaGVyc19bZXhhbV9wb3NdLk1hdGNoQW5kRXhwbGFp
bigqaXQsICZzKTsKLSAgICAgICAgZXhwbGFuYXRpb25zW2V4YW1fcG9zXSA9IHMuc3RyKCk7Ci0g
ICAgICB9IGVsc2UgewotICAgICAgICBtYXRjaCA9IG1hdGNoZXJzX1tleGFtX3Bvc10uTWF0Y2hl
cygqaXQpOwotICAgICAgfQotCi0gICAgICBpZiAoIW1hdGNoKSB7Ci0gICAgICAgIG1pc21hdGNo
X2ZvdW5kID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIElm
IG1pc21hdGNoX2ZvdW5kIGlzIHRydWUsICdleGFtX3BvcycgaXMgdGhlIGluZGV4IG9mIHRoZSBt
aXNtYXRjaC4KLQotICAgIC8vIEZpbmQgaG93IG1hbnkgZWxlbWVudHMgdGhlIGFjdHVhbCBjb250
YWluZXIgaGFzLiAgV2UgYXZvaWQKLSAgICAvLyBjYWxsaW5nIHNpemUoKSBzLnQuIHRoaXMgY29k
ZSB3b3JrcyBmb3Igc3RyZWFtLWxpa2UgImNvbnRhaW5lcnMiCi0gICAgLy8gdGhhdCBkb24ndCBk
ZWZpbmUgc2l6ZSgpLgotICAgIHNpemVfdCBhY3R1YWxfY291bnQgPSBleGFtX3BvczsKLSAgICBm
b3IgKDsgaXQgIT0gc3RsX2NvbnRhaW5lci5lbmQoKTsgKytpdCkgewotICAgICAgKythY3R1YWxf
Y291bnQ7Ci0gICAgfQotCi0gICAgaWYgKGFjdHVhbF9jb3VudCAhPSBjb3VudCgpKSB7Ci0gICAg
ICAvLyBUaGUgZWxlbWVudCBjb3VudCBkb2Vzbid0IG1hdGNoLiAgSWYgdGhlIGNvbnRhaW5lciBp
cyBlbXB0eSwKLSAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byBleHBsYWluIGFueXRoaW5nIGFz
IEdvb2dsZSBNb2NrIGFscmVhZHkKLSAgICAgIC8vIHByaW50cyB0aGUgZW1wdHkgY29udGFpbmVy
LiAgT3RoZXJ3aXNlIHdlIGp1c3QgbmVlZCB0byBzaG93Ci0gICAgICAvLyBob3cgbWFueSBlbGVt
ZW50cyB0aGVyZSBhY3R1YWxseSBhcmUuCi0gICAgICBpZiAobGlzdGVuZXJfaW50ZXJlc3RlZCAm
JiAoYWN0dWFsX2NvdW50ICE9IDApKSB7Ci0gICAgICAgICpsaXN0ZW5lciA8PCAid2hpY2ggaGFz
ICIgPDwgRWxlbWVudHMoYWN0dWFsX2NvdW50KTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAobWlzbWF0Y2hfZm91bmQpIHsKLSAgICAgIC8vIFRoZSBlbGVt
ZW50IGNvdW50IG1hdGNoZXMsIGJ1dCB0aGUgZXhhbV9wb3MtdGggZWxlbWVudCBkb2Vzbid0IG1h
dGNoLgotICAgICAgaWYgKGxpc3RlbmVyX2ludGVyZXN0ZWQpIHsKLSAgICAgICAgKmxpc3RlbmVy
IDw8ICJ3aG9zZSBlbGVtZW50ICMiIDw8IGV4YW1fcG9zIDw8ICIgZG9lc24ndCBtYXRjaCI7Ci0g
ICAgICAgIFByaW50SWZOb3RFbXB0eShleHBsYW5hdGlvbnNbZXhhbV9wb3NdLCBsaXN0ZW5lci0+
c3RyZWFtKCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8v
IEV2ZXJ5IGVsZW1lbnQgbWF0Y2hlcyBpdHMgZXhwZWN0YXRpb24uICBXZSBuZWVkIHRvIGV4cGxh
aW4gd2h5Ci0gICAgLy8gKHRoZSBvYnZpb3VzIG9uZXMgY2FuIGJlIHNraXBwZWQpLgotICAgIGlm
IChsaXN0ZW5lcl9pbnRlcmVzdGVkKSB7Ci0gICAgICBib29sIHJlYXNvbl9wcmludGVkID0gZmFs
c2U7Ci0gICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudCgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHMgPSBleHBsYW5hdGlvbnNbaV07Ci0gICAgICAgIGlmICgh
cy5lbXB0eSgpKSB7Ci0gICAgICAgICAgaWYgKHJlYXNvbl9wcmludGVkKSB7Ci0gICAgICAgICAg
ICAqbGlzdGVuZXIgPDwgIixcbmFuZCAiOwotICAgICAgICAgIH0KLSAgICAgICAgICAqbGlzdGVu
ZXIgPDwgIndob3NlIGVsZW1lbnQgIyIgPDwgaSA8PCAiIG1hdGNoZXMsICIgPDwgczsKLSAgICAg
ICAgICByZWFzb25fcHJpbnRlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBNZXNzYWdlIEVsZW1l
bnRzKHNpemVfdCBjb3VudCkgewotICAgIHJldHVybiBNZXNzYWdlKCkgPDwgY291bnQgPDwgKGNv
dW50ID09IDEgPyAiIGVsZW1lbnQiIDogIiBlbGVtZW50cyIpOwotICB9Ci0KLSAgc2l6ZV90IGNv
dW50KCkgY29uc3QgeyByZXR1cm4gbWF0Y2hlcnNfLnNpemUoKTsgfQotCi0gIDo6c3RkOjp2ZWN0
b3I8TWF0Y2hlcjxjb25zdCBFbGVtZW50Jj4gPiBtYXRjaGVyc187Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhFbGVtZW50c0FyZU1hdGNoZXJJbXBsKTsKLX07Ci0KLS8vIENvbm5lY3Rpdml0
eSBtYXRyaXggb2YgKGVsZW1lbnRzIFggbWF0Y2hlcnMpLCBpbiBlbGVtZW50LW1ham9yIG9yZGVy
LgotLy8gSW5pdGlhbGx5LCB0aGVyZSBhcmUgbm8gZWRnZXMuCi0vLyBVc2UgTmV4dEdyYXBoKCkg
dG8gaXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJsZSBlZGdlIGNvbmZpZ3VyYXRpb25zLgotLy8gVXNl
IFJhbmRvbWl6ZSgpIHRvIGdlbmVyYXRlIGEgcmFuZG9tIGVkZ2UgY29uZmlndXJhdGlvbi4KLWNs
YXNzIEdURVNUX0FQSV8gTWF0Y2hNYXRyaXggewotIHB1YmxpYzoKLSAgTWF0Y2hNYXRyaXgoc2l6
ZV90IG51bV9lbGVtZW50cywgc2l6ZV90IG51bV9tYXRjaGVycykKLSAgICAgIDogbnVtX2VsZW1l
bnRzXyhudW1fZWxlbWVudHMpLAotICAgICAgICBudW1fbWF0Y2hlcnNfKG51bV9tYXRjaGVycyks
Ci0gICAgICAgIG1hdGNoZWRfKG51bV9lbGVtZW50c18qIG51bV9tYXRjaGVyc18sIDApIHsKLSAg
fQotCi0gIHNpemVfdCBMaHNTaXplKCkgY29uc3QgeyByZXR1cm4gbnVtX2VsZW1lbnRzXzsgfQot
ICBzaXplX3QgUmhzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG51bV9tYXRjaGVyc187IH0KLSAgYm9v
bCBIYXNFZGdlKHNpemVfdCBpbGhzLCBzaXplX3QgaXJocykgY29uc3QgewotICAgIHJldHVybiBt
YXRjaGVkX1tTcGFjZUluZGV4KGlsaHMsIGlyaHMpXSA9PSAxOwotICB9Ci0gIHZvaWQgU2V0RWRn
ZShzaXplX3QgaWxocywgc2l6ZV90IGlyaHMsIGJvb2wgYikgewotICAgIG1hdGNoZWRfW1NwYWNl
SW5kZXgoaWxocywgaXJocyldID0gYiA/IDEgOiAwOwotICB9Ci0KLSAgLy8gVHJlYXRpbmcgdGhl
IGNvbm5lY3Rpdml0eSBtYXRyaXggYXMgYSAoTGhzU2l6ZSgpKlJoc1NpemUoKSktYml0IG51bWJl
ciwKLSAgLy8gYWRkcyAxIHRvIHRoYXQgbnVtYmVyOyByZXR1cm5zIGZhbHNlIGlmIGluY3JlbWVu
dGluZyB0aGUgZ3JhcGggbGVmdCBpdAotICAvLyBlbXB0eS4KLSAgYm9vbCBOZXh0R3JhcGgoKTsK
LQotICB2b2lkIFJhbmRvbWl6ZSgpOwotCi0gIHN0ZDo6c3RyaW5nIERlYnVnU3RyaW5nKCkgY29u
c3Q7Ci0KLSBwcml2YXRlOgotICBzaXplX3QgU3BhY2VJbmRleChzaXplX3QgaWxocywgc2l6ZV90
IGlyaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gaWxocyAqIG51bV9tYXRjaGVyc18gKyBpcmhzOwot
ICB9Ci0KLSAgc2l6ZV90IG51bV9lbGVtZW50c187Ci0gIHNpemVfdCBudW1fbWF0Y2hlcnNfOwot
Ci0gIC8vIEVhY2ggZWxlbWVudCBpcyBhIGNoYXIgaW50ZXJwcmV0ZWQgYXMgYm9vbC4gVGhleSBh
cmUgc3RvcmVkIGFzIGEKLSAgLy8gZmxhdHRlbmVkIGFycmF5IGluIGxocy1tYWpvciBvcmRlciwg
dXNlICdTcGFjZUluZGV4KCknIHRvIHRyYW5zbGF0ZQotICAvLyBhIChpbGhzLCBpcmhzKSBtYXRy
aXggY29vcmRpbmF0ZSBpbnRvIGFuIG9mZnNldC4KLSAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBtYXRj
aGVkXzsKLX07Ci0KLXR5cGVkZWYgOjpzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IEVsZW1lbnRN
YXRjaGVyUGFpcjsKLXR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxFbGVtZW50TWF0Y2hlclBhaXI+IEVs
ZW1lbnRNYXRjaGVyUGFpcnM7Ci0KLS8vIFJldHVybnMgYSBtYXhpbXVtIGJpcGFydGl0ZSBtYXRj
aGluZyBmb3IgdGhlIHNwZWNpZmllZCBncmFwaCAnZycuCi0vLyBUaGUgbWF0Y2hpbmcgaXMgcmVw
cmVzZW50ZWQgYXMgYSB2ZWN0b3Igb2Yge2VsZW1lbnQsIG1hdGNoZXJ9IHBhaXJzLgotR1RFU1Rf
QVBJXyBFbGVtZW50TWF0Y2hlclBhaXJzCi1GaW5kTWF4QmlwYXJ0aXRlTWF0Y2hpbmcoY29uc3Qg
TWF0Y2hNYXRyaXgmIGcpOwotCi1HVEVTVF9BUElfIGJvb2wgRmluZFBhaXJpbmcoY29uc3QgTWF0
Y2hNYXRyaXgmIG1hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3Vs
dExpc3RlbmVyKiBsaXN0ZW5lcik7Ci0KLS8vIFVudHlwZWQgYmFzZSBjbGFzcyBmb3IgaW1wbGVt
ZW50aW5nIFVub3JkZXJlZEVsZW1lbnRzQXJlLiAgQnkKLS8vIHB1dHRpbmcgbG9naWMgdGhhdCdz
IG5vdCBzcGVjaWZpYyB0byB0aGUgZWxlbWVudCB0eXBlIGhlcmUsIHdlCi0vLyByZWR1Y2UgYmlu
YXJ5IGJsb2F0IGFuZCBpbmNyZWFzZSBjb21waWxhdGlvbiBzcGVlZC4KLWNsYXNzIEdURVNUX0FQ
SV8gVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRjaGVySW1wbEJhc2UgewotIHByb3RlY3RlZDoKLSAg
Ly8gQSB2ZWN0b3Igb2YgbWF0Y2hlciBkZXNjcmliZXJzLCBvbmUgZm9yIGVhY2ggZWxlbWVudCBt
YXRjaGVyLgotICAvLyBEb2VzIG5vdCBvd24gdGhlIGRlc2NyaWJlcnMgKGFuZCB0aHVzIGNhbiBi
ZSB1c2VkIG9ubHkgd2hlbiB0aGUKLSAgLy8gZWxlbWVudCBtYXRjaGVycyBhcmUgYWxpdmUpLgot
ICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8Y29uc3QgTWF0Y2hlckRlc2NyaWJlckludGVyZmFjZSo+
IE1hdGNoZXJEZXNjcmliZXJWZWM7Ci0KLSAgLy8gRGVzY3JpYmVzIHRoaXMgVW5vcmRlcmVkRWxl
bWVudHNBcmUgbWF0Y2hlci4KLSAgdm9pZCBEZXNjcmliZVRvSW1wbCg6OnN0ZDo6b3N0cmVhbSog
b3MpIGNvbnN0OwotCi0gIC8vIERlc2NyaWJlcyB0aGUgbmVnYXRpb24gb2YgdGhpcyBVbm9yZGVy
ZWRFbGVtZW50c0FyZSBtYXRjaGVyLgotICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ub0ltcGwoOjpz
dGQ6Om9zdHJlYW0qIG9zKSBjb25zdDsKLQotICBib29sIFZlcmlmeUFsbEVsZW1lbnRzQW5kTWF0
Y2hlcnNBcmVNYXRjaGVkKAotICAgICAgY29uc3QgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4m
IGVsZW1lbnRfcHJpbnRvdXRzLAotICAgICAgY29uc3QgTWF0Y2hNYXRyaXgmIG1hdHJpeCwgTWF0
Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0OwotCi0gIE1hdGNoZXJEZXNjcmliZXJW
ZWMmIG1hdGNoZXJfZGVzY3JpYmVycygpIHsKLSAgICByZXR1cm4gbWF0Y2hlcl9kZXNjcmliZXJz
XzsKLSAgfQotCi0gIHN0YXRpYyBNZXNzYWdlIEVsZW1lbnRzKHNpemVfdCBuKSB7Ci0gICAgcmV0
dXJuIE1lc3NhZ2UoKSA8PCBuIDw8ICIgZWxlbWVudCIgPDwgKG4gPT0gMSA/ICIiIDogInMiKTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgTWF0Y2hlckRlc2NyaWJlclZlYyBtYXRjaGVyX2Rlc2NyaWJl
cnNfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oVW5vcmRlcmVkRWxlbWVudHNBcmVNYXRj
aGVySW1wbEJhc2UpOwotfTsKLQotLy8gSW1wbGVtZW50cyB1bm9yZGVyZWQgRWxlbWVudHNBcmUg
YW5kIHVub3JkZXJlZCBFbGVtZW50c0FyZUFycmF5LgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRh
aW5lcj4KLWNsYXNzIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGwKLSAgICA6IHB1Ymxp
YyBNYXRjaGVySW50ZXJmYWNlPENvbnRhaW5lcj4sCi0gICAgICBwdWJsaWMgVW5vcmRlcmVkRWxl
bWVudHNBcmVNYXRjaGVySW1wbEJhc2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBHVEVTVF9SRU1P
VkVfUkVGRVJFTkNFX0FORF9DT05TVF8oQ29udGFpbmVyKSBSYXdDb250YWluZXI7Ci0gIHR5cGVk
ZWYgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPiBWaWV3OwotICB0eXBl
ZGVmIHR5cGVuYW1lIFZpZXc6OnR5cGUgU3RsQ29udGFpbmVyOwotICB0eXBlZGVmIHR5cGVuYW1l
IFZpZXc6OmNvbnN0X3JlZmVyZW5jZSBTdGxDb250YWluZXJSZWZlcmVuY2U7Ci0gIHR5cGVkZWYg
dHlwZW5hbWUgU3RsQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBTdGxDb250YWluZXJDb25zdEl0
ZXJhdG9yOwotICB0eXBlZGVmIHR5cGVuYW1lIFN0bENvbnRhaW5lcjo6dmFsdWVfdHlwZSBFbGVt
ZW50OwotCi0gIC8vIENvbnN0cnVjdHMgdGhlIG1hdGNoZXIgZnJvbSBhIHNlcXVlbmNlIG9mIGVs
ZW1lbnQgdmFsdWVzIG9yCi0gIC8vIGVsZW1lbnQgbWF0Y2hlcnMuCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBJbnB1dEl0ZXI+Ci0gIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGwoSW5wdXRJ
dGVyIGZpcnN0LCBJbnB1dEl0ZXIgbGFzdCkgewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyAr
K2ZpcnN0KSB7Ci0gICAgICBtYXRjaGVyc18ucHVzaF9iYWNrKE1hdGNoZXJDYXN0PGNvbnN0IEVs
ZW1lbnQmPigqZmlyc3QpKTsKLSAgICAgIG1hdGNoZXJfZGVzY3JpYmVycygpLnB1c2hfYmFjayht
YXRjaGVyc18uYmFjaygpLkdldERlc2NyaWJlcigpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZXNj
cmliZXMgd2hhdCB0aGlzIG1hdGNoZXIgZG9lcy4KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8o
OjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgcmV0dXJuIFVub3JkZXJlZEVsZW1lbnRz
QXJlTWF0Y2hlckltcGxCYXNlOjpEZXNjcmliZVRvSW1wbChvcyk7Ci0gIH0KLQotICAvLyBEZXNj
cmliZXMgd2hhdCB0aGUgbmVnYXRpb24gb2YgdGhpcyBtYXRjaGVyIGRvZXMuCi0gIHZpcnR1YWwg
dm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAg
cmV0dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlOjpEZXNjcmliZU5lZ2F0
aW9uVG9JbXBsKG9zKTsKLSAgfQotCi0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oQ29u
dGFpbmVyIGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJl
c3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgIFN0bENvbnRhaW5lclJlZmVyZW5j
ZSBzdGxfY29udGFpbmVyID0gVmlldzo6Q29uc3RSZWZlcmVuY2UoY29udGFpbmVyKTsKLSAgICA6
OnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBlbGVtZW50X3ByaW50b3V0czsKLSAgICBNYXRjaE1h
dHJpeCBtYXRyaXggPSBBbmFseXplRWxlbWVudHMoc3RsX2NvbnRhaW5lci5iZWdpbigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGxfY29udGFpbmVyLmVuZCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZWxlbWVudF9wcmlu
dG91dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVy
KTsKLQotICAgIGNvbnN0IHNpemVfdCBhY3R1YWxfY291bnQgPSBtYXRyaXguTGhzU2l6ZSgpOwot
ICAgIGlmIChhY3R1YWxfY291bnQgPT0gMCAmJiBtYXRjaGVyc18uZW1wdHkoKSkgewotICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChhY3R1YWxfY291bnQgIT0gbWF0Y2hlcnNfLnNp
emUoKSkgewotICAgICAgLy8gVGhlIGVsZW1lbnQgY291bnQgZG9lc24ndCBtYXRjaC4gIElmIHRo
ZSBjb250YWluZXIgaXMgZW1wdHksCi0gICAgICAvLyB0aGVyZSdzIG5vIG5lZWQgdG8gZXhwbGFp
biBhbnl0aGluZyBhcyBHb29nbGUgTW9jayBhbHJlYWR5Ci0gICAgICAvLyBwcmludHMgdGhlIGVt
cHR5IGNvbnRhaW5lci4gT3RoZXJ3aXNlIHdlIGp1c3QgbmVlZCB0byBzaG93Ci0gICAgICAvLyBo
b3cgbWFueSBlbGVtZW50cyB0aGVyZSBhY3R1YWxseSBhcmUuCi0gICAgICBpZiAoYWN0dWFsX2Nv
dW50ICE9IDAgJiYgbGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAgICpsaXN0ZW5l
ciA8PCAid2hpY2ggaGFzICIgPDwgRWxlbWVudHMoYWN0dWFsX2NvdW50KTsKLSAgICAgIH0KLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gVmVyaWZ5QWxsRWxlbWVudHNB
bmRNYXRjaGVyc0FyZU1hdGNoZWQoZWxlbWVudF9wcmludG91dHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeCwgbGlzdGVuZXIpICYmCi0g
ICAgICAgICAgIEZpbmRQYWlyaW5nKG1hdHJpeCwgbGlzdGVuZXIpOwotICB9Ci0KLSBwcml2YXRl
OgotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8TWF0Y2hlcjxjb25zdCBFbGVtZW50Jj4gPiBNYXRj
aGVyVmVjOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50SXRlcj4KLSAgTWF0Y2hNYXRy
aXggQW5hbHl6ZUVsZW1lbnRzKEVsZW1lbnRJdGVyIGVsZW1fZmlyc3QsIEVsZW1lbnRJdGVyIGVs
ZW1fbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+KiBlbGVtZW50X3ByaW50b3V0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgZWxlbWVudF9w
cmludG91dHMtPmNsZWFyKCk7Ci0gICAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBkaWRfbWF0Y2g7Ci0g
ICAgc2l6ZV90IG51bV9lbGVtZW50cyA9IDA7Ci0gICAgZm9yICg7IGVsZW1fZmlyc3QgIT0gZWxl
bV9sYXN0OyArK251bV9lbGVtZW50cywgKytlbGVtX2ZpcnN0KSB7Ci0gICAgICBpZiAobGlzdGVu
ZXItPklzSW50ZXJlc3RlZCgpKSB7Ci0gICAgICAgIGVsZW1lbnRfcHJpbnRvdXRzLT5wdXNoX2Jh
Y2soUHJpbnRUb1N0cmluZygqZWxlbV9maXJzdCkpOwotICAgICAgfQotICAgICAgZm9yIChzaXpl
X3QgaXJocyA9IDA7IGlyaHMgIT0gbWF0Y2hlcnNfLnNpemUoKTsgKytpcmhzKSB7Ci0gICAgICAg
IGRpZF9tYXRjaC5wdXNoX2JhY2soTWF0Y2hlcyhtYXRjaGVyc19baXJoc10pKCplbGVtX2ZpcnN0
KSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgTWF0Y2hNYXRyaXggbWF0cml4KG51bV9lbGVtZW50
cywgbWF0Y2hlcnNfLnNpemUoKSk7Ci0gICAgOjpzdGQ6OnZlY3RvcjxjaGFyPjo6Y29uc3RfaXRl
cmF0b3IgZGlkX21hdGNoX2l0ZXIgPSBkaWRfbWF0Y2guYmVnaW4oKTsKLSAgICBmb3IgKHNpemVf
dCBpbGhzID0gMDsgaWxocyAhPSBudW1fZWxlbWVudHM7ICsraWxocykgewotICAgICAgZm9yIChz
aXplX3QgaXJocyA9IDA7IGlyaHMgIT0gbWF0Y2hlcnNfLnNpemUoKTsgKytpcmhzKSB7Ci0gICAg
ICAgIG1hdHJpeC5TZXRFZGdlKGlsaHMsIGlyaHMsICpkaWRfbWF0Y2hfaXRlcisrICE9IDApOwot
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbWF0cml4OwotICB9Ci0KLSAgTWF0Y2hlclZlYyBt
YXRjaGVyc187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhVbm9yZGVyZWRFbGVtZW50c0Fy
ZU1hdGNoZXJJbXBsKTsKLX07Ci0KLS8vIEZ1bmN0b3IgZm9yIHVzZSBpbiBUcmFuc2Zvcm1UdXBs
ZS4KLS8vIFBlcmZvcm1zIE1hdGNoZXJDYXN0PFRhcmdldD4gb24gYW4gaW5wdXQgYXJndW1lbnQg
b2YgYW55IHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGFyZ2V0Pgotc3RydWN0IENhc3RBbmRB
cHBlbmRUcmFuc2Zvcm0gewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnPgotICBNYXRjaGVyPFRh
cmdldD4gb3BlcmF0b3IoKShjb25zdCBBcmcmIGEpIGNvbnN0IHsKLSAgICByZXR1cm4gTWF0Y2hl
ckNhc3Q8VGFyZ2V0PihhKTsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyBVbm9yZGVyZWRFbGVt
ZW50c0FyZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBNYXRjaGVyVHVwbGU+Ci1jbGFzcyBVbm9yZGVy
ZWRFbGVtZW50c0FyZU1hdGNoZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVW5vcmRlcmVkRWxl
bWVudHNBcmVNYXRjaGVyKGNvbnN0IE1hdGNoZXJUdXBsZSYgYXJncykKLSAgICAgIDogbWF0Y2hl
cnNfKGFyZ3MpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgb3BlcmF0
b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3QgewotICAgIHR5cGVkZWYgR1RFU1RfUkVNT1ZF
X1JFRkVSRU5DRV9BTkRfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8UmF3Q29udGFpbmVyPjo6dHlw
ZSBWaWV3OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVmlldzo6dmFsdWVfdHlwZSBFbGVtZW50Owot
ICAgIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxNYXRjaGVyPGNvbnN0IEVsZW1lbnQmPiA+IE1hdGNo
ZXJWZWM7Ci0gICAgTWF0Y2hlclZlYyBtYXRjaGVyczsKLSAgICBtYXRjaGVycy5yZXNlcnZlKDo6
dGVzdGluZzo6dHVwbGVfc2l6ZTxNYXRjaGVyVHVwbGU+Ojp2YWx1ZSk7Ci0gICAgVHJhbnNmb3Jt
VHVwbGVWYWx1ZXMoQ2FzdEFuZEFwcGVuZFRyYW5zZm9ybTxjb25zdCBFbGVtZW50Jj4oKSwgbWF0
Y2hlcnNfLAotICAgICAgICAgICAgICAgICAgICAgICAgIDo6c3RkOjpiYWNrX2luc2VydGVyKG1h
dGNoZXJzKSk7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBVbm9yZGVyZWRFbGVtZW50c0Fy
ZU1hdGNoZXJJbXBsPENvbnRhaW5lcj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aGVycy5iZWdpbigpLCBtYXRjaGVycy5lbmQoKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjb25z
dCBNYXRjaGVyVHVwbGUgbWF0Y2hlcnNfOwotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKFVub3Jk
ZXJlZEVsZW1lbnRzQXJlTWF0Y2hlcik7Ci19OwotCi0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJl
LgotdGVtcGxhdGUgPHR5cGVuYW1lIE1hdGNoZXJUdXBsZT4KLWNsYXNzIEVsZW1lbnRzQXJlTWF0
Y2hlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBFbGVtZW50c0FyZU1hdGNoZXIoY29uc3QgTWF0
Y2hlclR1cGxlJiBhcmdzKSA6IG1hdGNoZXJzXyhhcmdzKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb250YWluZXI+Ci0gIG9wZXJhdG9yIE1hdGNoZXI8Q29udGFpbmVyPigpIGNvbnN0IHsK
LSAgICB0eXBlZGVmIEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhDb250YWluZXIp
IFJhd0NvbnRhaW5lcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGludGVybmFsOjpTdGxDb250YWlu
ZXJWaWV3PFJhd0NvbnRhaW5lcj46OnR5cGUgVmlldzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFZp
ZXc6OnZhbHVlX3R5cGUgRWxlbWVudDsKLSAgICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8TWF0Y2hl
cjxjb25zdCBFbGVtZW50Jj4gPiBNYXRjaGVyVmVjOwotICAgIE1hdGNoZXJWZWMgbWF0Y2hlcnM7
Ci0gICAgbWF0Y2hlcnMucmVzZXJ2ZSg6OnRlc3Rpbmc6OnR1cGxlX3NpemU8TWF0Y2hlclR1cGxl
Pjo6dmFsdWUpOwotICAgIFRyYW5zZm9ybVR1cGxlVmFsdWVzKENhc3RBbmRBcHBlbmRUcmFuc2Zv
cm08Y29uc3QgRWxlbWVudCY+KCksIG1hdGNoZXJzXywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICA6OnN0ZDo6YmFja19pbnNlcnRlcihtYXRjaGVycykpOwotICAgIHJldHVybiBNYWtlTWF0Y2hl
cihuZXcgRWxlbWVudHNBcmVNYXRjaGVySW1wbDxDb250YWluZXI+KAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlcnMuYmVnaW4oKSwgbWF0Y2hlcnMuZW5kKCkpKTsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgY29uc3QgTWF0Y2hlclR1cGxlIG1hdGNoZXJzXzsKLSAgR1RFU1RfRElTQUxM
T1dfQVNTSUdOXyhFbGVtZW50c0FyZU1hdGNoZXIpOwotfTsKLQotLy8gSW1wbGVtZW50cyBVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5KCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIFVub3JkZXJlZEVs
ZW1lbnRzQXJlQXJyYXlNYXRjaGVyKCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcj4K
LSAgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXIoSXRlciBmaXJzdCwgSXRlciBsYXN0
KQotICAgICAgOiBtYXRjaGVyc18oZmlyc3QsIGxhc3QpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIENvbnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29uc3Qgewot
ICAgIHJldHVybiBNYWtlTWF0Y2hlcigKLSAgICAgICAgbmV3IFVub3JkZXJlZEVsZW1lbnRzQXJl
TWF0Y2hlckltcGw8Q29udGFpbmVyPihtYXRjaGVyc18uYmVnaW4oKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVyc18uZW5kKCkp
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgOjpzdGQ6OnZlY3RvcjxUPiBtYXRjaGVyc187Ci0KLSAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyhVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlcik7
Ci19OwotCi0vLyBJbXBsZW1lbnRzIEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotY2xhc3MgRWxlbWVudHNBcmVBcnJheU1hdGNoZXIgewotIHB1YmxpYzoKLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIEl0ZXI+Ci0gIEVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyKEl0ZXIgZmly
c3QsIEl0ZXIgbGFzdCkgOiBtYXRjaGVyc18oZmlyc3QsIGxhc3QpIHt9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgb3BlcmF0b3IgTWF0Y2hlcjxDb250YWluZXI+KCkgY29u
c3QgewotICAgIHJldHVybiBNYWtlTWF0Y2hlcihuZXcgRWxlbWVudHNBcmVNYXRjaGVySW1wbDxD
b250YWluZXI+KAotICAgICAgICBtYXRjaGVyc18uYmVnaW4oKSwgbWF0Y2hlcnNfLmVuZCgpKSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IDo6c3RkOjp2ZWN0b3I8VD4gbWF0Y2hlcnNfOwot
Ci0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRWxlbWVudHNBcmVBcnJheU1hdGNoZXIpOwotfTsK
LQotLy8gR2l2ZW4gYSAyLXR1cGxlIG1hdGNoZXIgdG0gb2YgdHlwZSBUdXBsZTJNYXRjaGVyIGFu
ZCBhIHZhbHVlIHNlY29uZAotLy8gb2YgdHlwZSBTZWNvbmQsIEJvdW5kU2Vjb25kTWF0Y2hlcjxU
dXBsZTJNYXRjaGVyLCBTZWNvbmQ+KHRtLAotLy8gc2Vjb25kKSBpcyBhIHBvbHltb3JwaGljIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGEgdmFsdWUgeCBpZmYgdG0KLS8vIG1hdGNoZXMgdHVwbGUgKHgs
IHNlY29uZCkuICBVc2VmdWwgZm9yIGltcGxlbWVudGluZwotLy8gVW5vcmRlcmVkUG9pbnR3aXNl
KCkgaW4gdGVybXMgb2YgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgpLgotLy8KLS8vIEJvdW5k
U2Vjb25kTWF0Y2hlciBpcyBjb3B5YWJsZSBhbmQgYXNzaWduYWJsZSwgYXMgd2UgbmVlZCB0byBw
dXQKLS8vIGluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGluIGEgdmVjdG9yIHdoZW4gaW1wbGVtZW50
aW5nCi0vLyBVbm9yZGVyZWRQb2ludHdpc2UoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZTJN
YXRjaGVyLCB0eXBlbmFtZSBTZWNvbmQ+Ci1jbGFzcyBCb3VuZFNlY29uZE1hdGNoZXIgewotIHB1
YmxpYzoKLSAgQm91bmRTZWNvbmRNYXRjaGVyKGNvbnN0IFR1cGxlMk1hdGNoZXImIHRtLCBjb25z
dCBTZWNvbmQmIHNlY29uZCkKLSAgICAgIDogdHVwbGUyX21hdGNoZXJfKHRtKSwgc2Vjb25kX3Zh
bHVlXyhzZWNvbmQpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIE1h
dGNoZXI8VD4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBJbXBsPFQ+KHR1
cGxlMl9tYXRjaGVyXywgc2Vjb25kX3ZhbHVlXykpOwotICB9Ci0KLSAgLy8gV2UgaGF2ZSB0byBk
ZWZpbmUgdGhpcyBmb3IgVW5vcmRlcmVkUG9pbnR3aXNlKCkgdG8gY29tcGlsZSBpbgotICAvLyBD
Kys5OCBtb2RlLCBhcyBpdCBwdXRzIEJvdW5kU2Vjb25kTWF0Y2hlciBpbnN0YW5jZXMgaW4gYSB2
ZWN0b3IsCi0gIC8vIHdoaWNoIHJlcXVpcmVzIHRoZSBlbGVtZW50cyB0byBiZSBhc3NpZ25hYmxl
IGluIEMrKzk4LiAgVGhlCi0gIC8vIGNvbXBpbGVyIGNhbm5vdCBnZW5lcmF0ZSB0aGUgb3BlcmF0
b3I9IGZvciB1cywgYXMgVHVwbGUyTWF0Y2hlcgotICAvLyBhbmQgU2Vjb25kIG1heSBub3QgYmUg
YXNzaWduYWJsZS4KLSAgLy8KLSAgLy8gSG93ZXZlciwgdGhpcyBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkLCBzbyB0aGUgaW1wbGVtZW50YXRpb24ganVzdAotICAvLyBuZWVkIHRvIGFzc2VydC4KLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgQm91bmRTZWNvbmRNYXRjaGVyJiAvKnJocyovKSB7Ci0gICAg
R1RFU1RfTE9HXyhGQVRBTCkgPDwgIkJvdW5kU2Vjb25kTWF0Y2hlciBzaG91bGQgbmV2ZXIgYmUg
YXNzaWduZWQuIjsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGNsYXNzIEltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxUPiB7Ci0gICBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQsIFNlY29uZD4gQXJnVHVwbGU7Ci0KLSAgICBJ
bXBsKGNvbnN0IFR1cGxlMk1hdGNoZXImIHRtLCBjb25zdCBTZWNvbmQmIHNlY29uZCkKLSAgICAg
ICAgOiBtb25vX3R1cGxlMl9tYXRjaGVyXyhTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgQXJnVHVwbGUm
Pih0bSkpLAotICAgICAgICAgIHNlY29uZF92YWx1ZV8oc2Vjb25kKSB7fQotCi0gICAgdmlydHVh
bCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgICAqb3Mg
PDwgImFuZCAiOwotICAgICAgVW5pdmVyc2FsUHJpbnQoc2Vjb25kX3ZhbHVlXywgb3MpOwotICAg
ICAgKm9zIDw8ICIgIjsKLSAgICAgIG1vbm9fdHVwbGUyX21hdGNoZXJfLkRlc2NyaWJlVG8ob3Mp
OwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oVCB4LCBNYXRjaFJl
c3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgY29uc3QgewotICAgICAgcmV0dXJuIG1vbm9fdHVwbGUy
X21hdGNoZXJfLk1hdGNoQW5kRXhwbGFpbihBcmdUdXBsZSh4LCBzZWNvbmRfdmFsdWVfKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIp
OwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBjb25zdCBNYXRjaGVyPGNvbnN0IEFyZ1R1cGxl
Jj4gbW9ub190dXBsZTJfbWF0Y2hlcl87Ci0gICAgY29uc3QgU2Vjb25kIHNlY29uZF92YWx1ZV87
Ci0KLSAgICBHVEVTVF9ESVNBTExPV19BU1NJR05fKEltcGwpOwotICB9OwotCi0gIGNvbnN0IFR1
cGxlMk1hdGNoZXIgdHVwbGUyX21hdGNoZXJfOwotICBjb25zdCBTZWNvbmQgc2Vjb25kX3ZhbHVl
XzsKLX07Ci0KLS8vIEdpdmVuIGEgMi10dXBsZSBtYXRjaGVyIHRtIGFuZCBhIHZhbHVlIHNlY29u
ZCwKLS8vIE1hdGNoZXJCaW5kU2Vjb25kKHRtLCBzZWNvbmQpIHJldHVybnMgYSBtYXRjaGVyIHRo
YXQgbWF0Y2hlcyBhCi0vLyB2YWx1ZSB4IGlmZiB0bSBtYXRjaGVzIHR1cGxlICh4LCBzZWNvbmQp
LiAgVXNlZnVsIGZvciBpbXBsZW1lbnRpbmcKLS8vIFVub3JkZXJlZFBvaW50d2lzZSgpIGluIHRl
cm1zIG9mIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
dXBsZTJNYXRjaGVyLCB0eXBlbmFtZSBTZWNvbmQ+Ci1Cb3VuZFNlY29uZE1hdGNoZXI8VHVwbGUy
TWF0Y2hlciwgU2Vjb25kPiBNYXRjaGVyQmluZFNlY29uZCgKLSAgICBjb25zdCBUdXBsZTJNYXRj
aGVyJiB0bSwgY29uc3QgU2Vjb25kJiBzZWNvbmQpIHsKLSAgcmV0dXJuIEJvdW5kU2Vjb25kTWF0
Y2hlcjxUdXBsZTJNYXRjaGVyLCBTZWNvbmQ+KHRtLCBzZWNvbmQpOwotfQotCi0vLyBSZXR1cm5z
IHRoZSBkZXNjcmlwdGlvbiBmb3IgYSBtYXRjaGVyIGRlZmluZWQgdXNpbmcgdGhlIE1BVENIRVIq
KCkKLS8vIG1hY3JvIHdoZXJlIHRoZSB1c2VyLXN1cHBsaWVkIGRlc2NyaXB0aW9uIHN0cmluZyBp
cyAiIiwgaWYKLS8vICduZWdhdGlvbicgaXMgZmFsc2U7IG90aGVyd2lzZSByZXR1cm5zIHRoZSBk
ZXNjcmlwdGlvbiBvZiB0aGUKLS8vIG5lZ2F0aW9uIG9mIHRoZSBtYXRjaGVyLiAgJ3BhcmFtX3Zh
bHVlcycgY29udGFpbnMgYSBsaXN0IG9mIHN0cmluZ3MKLS8vIHRoYXQgYXJlIHRoZSBwcmludC1v
dXQgb2YgdGhlIG1hdGNoZXIncyBwYXJhbWV0ZXJzLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBG
b3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oYm9vbCBuZWdhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hdGNoZXJfbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZ3MmIHBhcmFtX3ZhbHVlcyk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBF
bGVtZW50c0FyZUFycmF5KGZpcnN0LCBsYXN0KQotLy8gRWxlbWVudHNBcmVBcnJheShwb2ludGVy
LCBjb3VudCkKLS8vIEVsZW1lbnRzQXJlQXJyYXkoYXJyYXkpCi0vLyBFbGVtZW50c0FyZUFycmF5
KGNvbnRhaW5lcikKLS8vIEVsZW1lbnRzQXJlQXJyYXkoeyBlMSwgZTIsIC4uLiwgZW4gfSkKLS8v
Ci0vLyBUaGUgRWxlbWVudHNBcmVBcnJheSgpIGZ1bmN0aW9ucyBhcmUgbGlrZSBFbGVtZW50c0Fy
ZSguLi4pLCBleGNlcHQKLS8vIHRoYXQgdGhleSBhcmUgZ2l2ZW4gYSBob21vZ2VuZW91cyBzZXF1
ZW5jZSByYXRoZXIgdGhhbiB0YWtpbmcgZWFjaAotLy8gZWxlbWVudCBhcyBhIGZ1bmN0aW9uIGFy
Z3VtZW50LiBUaGUgc2VxdWVuY2UgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgotLy8gYXJyYXksIGEg
cG9pbnRlciBhbmQgY291bnQsIGEgdmVjdG9yLCBhbiBpbml0aWFsaXplciBsaXN0LCBvciBhbgot
Ly8gU1RMIGl0ZXJhdG9yIHJhbmdlLiBJbiBlYWNoIG9mIHRoZXNlIGNhc2VzLCB0aGUgdW5kZXJs
eWluZyBzZXF1ZW5jZQotLy8gY2FuIGJlIGVpdGhlciBhIHNlcXVlbmNlIG9mIHZhbHVlcyBvciBh
IHNlcXVlbmNlIG9mIG1hdGNoZXJzLgotLy8KLS8vIEFsbCBmb3JtcyBvZiBFbGVtZW50c0FyZUFy
cmF5KCkgbWFrZSBhIGNvcHkgb2YgdGhlIGlucHV0IG1hdGNoZXIgc2VxdWVuY2UuCi0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBJdGVyPgotaW5saW5lIGludGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0
Y2hlcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90
eXBlPgotRWxlbWVudHNBcmVBcnJheShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpIHsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlIFQ7Ci0g
IHJldHVybiBpbnRlcm5hbDo6RWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4oZmlyc3QsIGxhc3Qp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6RWxlbWVudHNB
cmVBcnJheU1hdGNoZXI8VD4gRWxlbWVudHNBcmVBcnJheSgKLSAgICBjb25zdCBUKiBwb2ludGVy
LCBzaXplX3QgY291bnQpIHsKLSAgcmV0dXJuIEVsZW1lbnRzQXJlQXJyYXkocG9pbnRlciwgcG9p
bnRlciArIGNvdW50KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotaW5s
aW5lIGludGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjxUPiBFbGVtZW50c0FyZUFycmF5
KAotICAgIGNvbnN0IFQgKCZhcnJheSlbTl0pIHsKLSAgcmV0dXJuIEVsZW1lbnRzQXJlQXJyYXko
YXJyYXksIE4pOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIGlu
dGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVl
X3R5cGU+Ci1FbGVtZW50c0FyZUFycmF5KGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0g
IHJldHVybiBFbGVtZW50c0FyZUFycmF5KGNvbnRhaW5lci5iZWdpbigpLCBjb250YWluZXIuZW5k
KCkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXwotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50ZXJuYWw6OkVsZW1lbnRzQXJlQXJyYXlNYXRjaGVyPFQ+
Ci1FbGVtZW50c0FyZUFycmF5KDo6c3RkOjppbml0aWFsaXplcl9saXN0PFQ+IHhzKSB7Ci0gIHJl
dHVybiBFbGVtZW50c0FyZUFycmF5KHhzLmJlZ2luKCksIHhzLmVuZCgpKTsKLX0KLSNlbmRpZgot
Ci0vLyBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGZpcnN0LCBsYXN0KQotLy8gVW5vcmRlcmVk
RWxlbWVudHNBcmVBcnJheShwb2ludGVyLCBjb3VudCkKLS8vIFVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXkoYXJyYXkpCi0vLyBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGNvbnRhaW5lcikKLS8v
IFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoeyBlMSwgZTIsIC4uLiwgZW4gfSkKLS8vCi0vLyBU
aGUgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSgpIGZ1bmN0aW9ucyBhcmUgbGlrZQotLy8gRWxl
bWVudHNBcmVBcnJheSguLi4pLCBidXQgYWxsb3cgbWF0Y2hpbmcgdGhlIGVsZW1lbnRzIGluIGFu
eSBvcmRlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgotaW5saW5lIGludGVybmFsOjpVbm9y
ZGVyZWRFbGVtZW50c0FyZUFycmF5TWF0Y2hlcjwKLSAgICB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0
b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlPgotVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShJ
dGVyIGZpcnN0LCBJdGVyIGxhc3QpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6aXRlcmF0
b3JfdHJhaXRzPEl0ZXI+Ojp2YWx1ZV90eXBlIFQ7Ci0gIHJldHVybiBpbnRlcm5hbDo6VW5vcmRl
cmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4oZmlyc3QsIGxhc3QpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eU1hdGNoZXI8VD4KLVVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29uc3QgVCogcG9pbnRlciwg
c2l6ZV90IGNvdW50KSB7Ci0gIHJldHVybiBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KHBvaW50
ZXIsIHBvaW50ZXIgKyBjb3VudCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3Qg
Tj4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8VD4K
LVVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29uc3QgVCAoJmFycmF5KVtOXSkgewotICByZXR1
cm4gVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShhcnJheSwgTik7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJl
QXJyYXlNYXRjaGVyPAotICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4KLVVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpIHsKLSAgcmV0
dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoY29udGFpbmVyLmJlZ2luKCksIGNvbnRhaW5l
ci5lbmQoKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVB
cnJheU1hdGNoZXI8VD4KLVVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoOjpzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8VD4geHMpIHsKLSAgcmV0dXJuIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoeHMu
YmVnaW4oKSwgeHMuZW5kKCkpOwotfQotI2VuZGlmCi0KLS8vIF8gaXMgYSBtYXRjaGVyIHRoYXQg
bWF0Y2hlcyBhbnl0aGluZyBvZiBhbnkgdHlwZS4KLS8vCi0vLyBUaGlzIGRlZmluaXRpb24gaXMg
ZmluZSBhczoKLS8vCi0vLyAgIDEuIFRoZSBDKysgc3RhbmRhcmQgcGVybWl0cyB1c2luZyB0aGUg
bmFtZSBfIGluIGEgbmFtZXNwYWNlIHRoYXQKLS8vICAgICAgaXMgbm90IHRoZSBnbG9iYWwgbmFt
ZXNwYWNlIG9yIDo6c3RkLgotLy8gICAyLiBUaGUgQW55dGhpbmdNYXRjaGVyIGNsYXNzIGhhcyBu
byBkYXRhIG1lbWJlciBvciBjb25zdHJ1Y3RvciwKLS8vICAgICAgc28gaXQncyBPSyB0byBjcmVh
dGUgZ2xvYmFsIHZhcmlhYmxlcyBvZiB0aGlzIHR5cGUuCi0vLyAgIDMuIGMtc3R5bGUgaGFzIGFw
cHJvdmVkIG9mIHVzaW5nIF8gaW4gdGhpcyBjYXNlLgotY29uc3QgaW50ZXJuYWw6OkFueXRoaW5n
TWF0Y2hlciBfID0ge307Ci0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IHZh
bHVlIG9mIHRoZSBnaXZlbiB0eXBlIFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBN
YXRjaGVyPFQ+IEEoKSB7IHJldHVybiBNYWtlTWF0Y2hlcihuZXcgaW50ZXJuYWw6OkFueU1hdGNo
ZXJJbXBsPFQ+KCkpOyB9Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkg
dmFsdWUgb2YgdGhlIGdpdmVuIHR5cGUgVC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5l
IE1hdGNoZXI8VD4gQW4oKSB7IHJldHVybiBBPFQ+KCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBvbHlt
b3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRoaW5nIGVxdWFsIHRvIHguCi0vLyBOb3Rl
OiBpZiB0aGUgcGFyYW1ldGVyIG9mIEVxKCkgd2VyZSBkZWNsYXJlZCBhcyBjb25zdCBUJiwgRXEo
ImZvbyIpCi0vLyB3b3VsZG4ndCBjb21waWxlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgaW50ZXJuYWw6OkVxTWF0Y2hlcjxUPiBFcShUIHgpIHsgcmV0dXJuIGludGVybmFsOjpFcU1h
dGNoZXI8VD4oeCk7IH0KLQotLy8gQ29uc3RydWN0cyBhIE1hdGNoZXI8VD4gZnJvbSBhICd2YWx1
ZScgb2YgdHlwZSBULiAgVGhlIGNvbnN0cnVjdGVkCi0vLyBtYXRjaGVyIG1hdGNoZXMgYW55IHZh
bHVlIHRoYXQncyBlcXVhbCB0byAndmFsdWUnLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1NYXRj
aGVyPFQ+OjpNYXRjaGVyKFQgdmFsdWUpIHsgKnRoaXMgPSBFcSh2YWx1ZSk7IH0KLQotLy8gQ3Jl
YXRlcyBhIG1vbm9tb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueXRoaW5nIHdpdGggdHlw
ZSBMaHMKLS8vIGFuZCBlcXVhbCB0byByaHMuICBBIHVzZXIgbWF5IG5lZWQgdG8gdXNlIHRoaXMg
aW5zdGVhZCBvZiBFcSguLi4pCi0vLyBpbiBvcmRlciB0byByZXNvbHZlIGFuIG92ZXJsb2FkaW5n
IGFtYmlndWl0eS4KLS8vCi0vLyBUeXBlZEVxPFQ+KHgpIGlzIGp1c3QgYSBjb252ZW5pZW50IHNo
b3J0LWhhbmQgZm9yIE1hdGNoZXI8VD4oRXEoeCkpCi0vLyBvciBNYXRjaGVyPFQ+KHgpLCBidXQg
bW9yZSByZWFkYWJsZSB0aGFuIHRoZSBsYXR0ZXIuCi0vLwotLy8gV2UgY291bGQgZGVmaW5lIHNp
bWlsYXIgbW9ub21vcnBoaWMgbWF0Y2hlcnMgZm9yIG90aGVyIGNvbXBhcmlzb24KLS8vIG9wZXJh
dGlvbnMgKGUuZy4gVHlwZWRMdCwgVHlwZWRHZSwgYW5kIGV0YyksIGJ1dCBkZWNpZGVkIG5vdCB0
byBkbwotLy8gaXQgeWV0IGFzIHRob3NlIGFyZSB1c2VkIG11Y2ggbGVzcyB0aGFuIEVxKCkgaW4g
cHJhY3RpY2UuICBBIHVzZXIKLS8vIGNhbiBhbHdheXMgd3JpdGUgTWF0Y2hlcjxUPihMdCg1KSkg
dG8gYmUgZXhwbGljaXQgYWJvdXQgdGhlIHR5cGUsCi0vLyBmb3IgZXhhbXBsZS4KLXRlbXBsYXRl
IDx0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocz4KLWlubGluZSBNYXRjaGVyPExocz4gVHlwZWRF
cShjb25zdCBSaHMmIHJocykgeyByZXR1cm4gRXEocmhzKTsgfQotCi0vLyBDcmVhdGVzIGEgcG9s
eW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgPj0geC4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6OkdlTWF0Y2hlcjxSaHM+IEdlKFJocyB4KSB7
Ci0gIHJldHVybiBpbnRlcm5hbDo6R2VNYXRjaGVyPFJocz4oeCk7Ci19Ci0KLS8vIENyZWF0ZXMg
YSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZyA+IHguCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgUmhzPgotaW5saW5lIGludGVybmFsOjpHdE1hdGNoZXI8UmhzPiBHdChSaHMg
eCkgewotICByZXR1cm4gaW50ZXJuYWw6Okd0TWF0Y2hlcjxSaHM+KHgpOwotfQotCi0vLyBDcmVh
dGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgPD0geC4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6OkxlTWF0Y2hlcjxSaHM+IExl
KFJocyB4KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TGVNYXRjaGVyPFJocz4oeCk7Ci19Ci0KLS8v
IENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnl0aGluZyA8IHgu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgUmhzPgotaW5saW5lIGludGVybmFsOjpMdE1hdGNoZXI8Umhz
PiBMdChSaHMgeCkgewotICByZXR1cm4gaW50ZXJuYWw6Okx0TWF0Y2hlcjxSaHM+KHgpOwotfQot
Ci0vLyBDcmVhdGVzIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcg
IT0geC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSaHM+Ci1pbmxpbmUgaW50ZXJuYWw6Ok5lTWF0Y2hl
cjxSaHM+IE5lKFJocyB4KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6TmVNYXRjaGVyPFJocz4oeCk7
Ci19Ci0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkg
TlVMTCBwb2ludGVyLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6SXNOdWxs
TWF0Y2hlciA+IElzTnVsbCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50
ZXJuYWw6OklzTnVsbE1hdGNoZXIoKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgbm9uLU5VTEwgcG9pbnRlci4KLS8vIFRoaXMgaXMgY29u
dmVuaWVudCBhcyBOb3QoTlVMTCkgZG9lc24ndCBjb21waWxlICh0aGUgY29tcGlsZXIKLS8vIHRo
aW5rcyB0aGF0IHRoYXQgZXhwcmVzc2lvbiBpcyBjb21wYXJpbmcgYSBwb2ludGVyIHdpdGggYW4g
aW50ZWdlcikuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpOb3ROdWxsTWF0
Y2hlciA+IE5vdE51bGwoKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVy
bmFsOjpOb3ROdWxsTWF0Y2hlcigpKTsKLX0KLQotLy8gQ3JlYXRlcyBhIHBvbHltb3JwaGljIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGFueSBhcmd1bWVudCB0aGF0Ci0vLyByZWZlcmVuY2VzIHZhcmlh
YmxlIHguCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBpbnRlcm5hbDo6UmVmTWF0Y2hl
cjxUJj4gUmVmKFQmIHgpIHsgIC8vIE5PTElOVAotICByZXR1cm4gaW50ZXJuYWw6OlJlZk1hdGNo
ZXI8VCY+KHgpOwotfQotCi0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IGRv
dWJsZSBhcmd1bWVudCBhcHByb3hpbWF0ZWx5Ci0vLyBlcXVhbCB0byByaHMsIHdoZXJlIHR3byBO
QU5zIGFyZSBjb25zaWRlcmVkIHVuZXF1YWwuCi1pbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFN
YXRjaGVyPGRvdWJsZT4gRG91YmxlRXEoZG91YmxlIHJocykgewotICByZXR1cm4gaW50ZXJuYWw6
OkZsb2F0aW5nRXFNYXRjaGVyPGRvdWJsZT4ocmhzLCBmYWxzZSk7Ci19Ci0KLS8vIENyZWF0ZXMg
YSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZG91YmxlIGFyZ3VtZW50IGFwcHJveGltYXRlbHkK
LS8vIGVxdWFsIHRvIHJocywgaW5jbHVkaW5nIE5hTiB2YWx1ZXMgd2hlbiByaHMgaXMgTmFOLgot
aW5saW5lIGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxkb3VibGU+IE5hblNlbnNpdGl2ZURv
dWJsZUVxKGRvdWJsZSByaHMpIHsKLSAgcmV0dXJuIGludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hl
cjxkb3VibGU+KHJocywgdHJ1ZSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0
Y2hlcyBhbnkgZG91YmxlIGFyZ3VtZW50IGFwcHJveGltYXRlbHkgZXF1YWwgdG8KLS8vIHJocywg
dXAgdG8gdGhlIHNwZWNpZmllZCBtYXggYWJzb2x1dGUgZXJyb3IgYm91bmQsIHdoZXJlIHR3byBO
QU5zIGFyZQotLy8gY29uc2lkZXJlZCB1bmVxdWFsLiAgVGhlIG1heCBhYnNvbHV0ZSBlcnJvciBi
b3VuZCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KLWlubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1h
dGNoZXI8ZG91YmxlPiBEb3VibGVOZWFyKAotICAgIGRvdWJsZSByaHMsIGRvdWJsZSBtYXhfYWJz
X2Vycm9yKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZG91YmxlPihy
aHMsIGZhbHNlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIGFueSBkb3VibGUgYXJndW1lbnQgYXBwcm94aW1hdGVseSBlcXVhbCB0bwotLy8g
cmhzLCB1cCB0byB0aGUgc3BlY2lmaWVkIG1heCBhYnNvbHV0ZSBlcnJvciBib3VuZCwgaW5jbHVk
aW5nIE5hTiB2YWx1ZXMgd2hlbgotLy8gcmhzIGlzIE5hTi4gIFRoZSBtYXggYWJzb2x1dGUgZXJy
b3IgYm91bmQgbXVzdCBiZSBub24tbmVnYXRpdmUuCi1pbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5n
RXFNYXRjaGVyPGRvdWJsZT4gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcigKLSAgICBkb3VibGUgcmhz
LCBkb3VibGUgbWF4X2Fic19lcnJvcikgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFN
YXRjaGVyPGRvdWJsZT4ocmhzLCB0cnVlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRl
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9hdCBhcmd1bWVudCBhcHByb3hpbWF0ZWx5
Ci0vLyBlcXVhbCB0byByaHMsIHdoZXJlIHR3byBOQU5zIGFyZSBjb25zaWRlcmVkIHVuZXF1YWwu
Ci1pbmxpbmUgaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PiBGbG9hdEVxKGZsb2F0
IHJocykgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFNYXRjaGVyPGZsb2F0PihyaHMs
IGZhbHNlKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9h
dCBhcmd1bWVudCBhcHByb3hpbWF0ZWx5Ci0vLyBlcXVhbCB0byByaHMsIGluY2x1ZGluZyBOYU4g
dmFsdWVzIHdoZW4gcmhzIGlzIE5hTi4KLWlubGluZSBpbnRlcm5hbDo6RmxvYXRpbmdFcU1hdGNo
ZXI8ZmxvYXQ+IE5hblNlbnNpdGl2ZUZsb2F0RXEoZmxvYXQgcmhzKSB7Ci0gIHJldHVybiBpbnRl
cm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+KHJocywgdHJ1ZSk7Ci19Ci0KLS8vIENyZWF0
ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbnkgZmxvYXQgYXJndW1lbnQgYXBwcm94aW1hdGVs
eSBlcXVhbCB0bwotLy8gcmhzLCB1cCB0byB0aGUgc3BlY2lmaWVkIG1heCBhYnNvbHV0ZSBlcnJv
ciBib3VuZCwgd2hlcmUgdHdvIE5BTnMgYXJlCi0vLyBjb25zaWRlcmVkIHVuZXF1YWwuICBUaGUg
bWF4IGFic29sdXRlIGVycm9yIGJvdW5kIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgotaW5saW5lIGlu
dGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxmbG9hdD4gRmxvYXROZWFyKAotICAgIGZsb2F0IHJo
cywgZmxvYXQgbWF4X2Fic19lcnJvcikgewotICByZXR1cm4gaW50ZXJuYWw6OkZsb2F0aW5nRXFN
YXRjaGVyPGZsb2F0PihyaHMsIGZhbHNlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQotLy8gQ3JlYXRl
cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSBmbG9hdCBhcmd1bWVudCBhcHByb3hpbWF0ZWx5
IGVxdWFsIHRvCi0vLyByaHMsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbWF4IGFic29sdXRlIGVycm9y
IGJvdW5kLCBpbmNsdWRpbmcgTmFOIHZhbHVlcyB3aGVuCi0vLyByaHMgaXMgTmFOLiAgVGhlIG1h
eCBhYnNvbHV0ZSBlcnJvciBib3VuZCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KLWlubGluZSBpbnRl
cm5hbDo6RmxvYXRpbmdFcU1hdGNoZXI8ZmxvYXQ+IE5hblNlbnNpdGl2ZUZsb2F0TmVhcigKLSAg
ICBmbG9hdCByaHMsIGZsb2F0IG1heF9hYnNfZXJyb3IpIHsKLSAgcmV0dXJuIGludGVybmFsOjpG
bG9hdGluZ0VxTWF0Y2hlcjxmbG9hdD4ocmhzLCB0cnVlLCBtYXhfYWJzX2Vycm9yKTsKLX0KLQot
Ly8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgcG9pbnRlciAocmF3IG9yIHNtYXJ0
KSB0aGF0IHBvaW50cwotLy8gdG8gYSB2YWx1ZSB0aGF0IG1hdGNoZXMgaW5uZXJfbWF0Y2hlci4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlBvaW50
ZWVNYXRjaGVyPElubmVyTWF0Y2hlcj4gUG9pbnRlZSgKLSAgICBjb25zdCBJbm5lck1hdGNoZXIm
IGlubmVyX21hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpQb2ludGVlTWF0Y2hlcjxJbm5l
ck1hdGNoZXI+KGlubmVyX21hdGNoZXIpOwotfQotCi0vLyBDcmVhdGVzIGEgbWF0Y2hlciB0aGF0
IG1hdGNoZXMgYSBwb2ludGVyIG9yIHJlZmVyZW5jZSB0aGF0IG1hdGNoZXMKLS8vIGlubmVyX21h
dGNoZXIgd2hlbiBkeW5hbWljX2Nhc3Q8VG8+IGlzIGFwcGxpZWQuCi0vLyBUaGUgcmVzdWx0IG9m
IGR5bmFtaWNfY2FzdDxUbz4gaXMgZm9yd2FyZGVkIHRvIHRoZSBpbm5lciBtYXRjaGVyLgotLy8g
SWYgVG8gaXMgYSBwb2ludGVyIGFuZCB0aGUgY2FzdCBmYWlscywgdGhlIGlubmVyIG1hdGNoZXIg
d2lsbCByZWNlaXZlIE5VTEwuCi0vLyBJZiBUbyBpcyBhIHJlZmVyZW5jZSBhbmQgdGhlIGNhc3Qg
ZmFpbHMsIHRoaXMgbWF0Y2hlciByZXR1cm5zIGZhbHNlCi0vLyBpbW1lZGlhdGVseS4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUbz4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6Oldo
ZW5EeW5hbWljQ2FzdFRvTWF0Y2hlcjxUbz4gPgotV2hlbkR5bmFtaWNDYXN0VG8oY29uc3QgTWF0
Y2hlcjxUbz4mIGlubmVyX21hdGNoZXIpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNo
ZXIoCi0gICAgICBpbnRlcm5hbDo6V2hlbkR5bmFtaWNDYXN0VG9NYXRjaGVyPFRvPihpbm5lcl9t
YXRjaGVyKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhbiBvYmpl
Y3Qgd2hvc2UgZ2l2ZW4gZmllbGQgbWF0Y2hlcwotLy8gJ21hdGNoZXInLiAgRm9yIGV4YW1wbGUs
Ci0vLyAgIEZpZWxkKCZGb286Om51bWJlciwgR2UoNSkpCi0vLyBtYXRjaGVzIGEgRm9vIG9iamVj
dCB4IGlmZiB4Lm51bWJlciA+PSA1LgotdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzLCB0eXBlbmFt
ZSBGaWVsZFR5cGUsIHR5cGVuYW1lIEZpZWxkTWF0Y2hlcj4KLWlubGluZSBQb2x5bW9ycGhpY01h
dGNoZXI8Ci0gIGludGVybmFsOjpGaWVsZE1hdGNoZXI8Q2xhc3MsIEZpZWxkVHlwZT4gPiBGaWVs
ZCgKLSAgICBGaWVsZFR5cGUgQ2xhc3M6OipmaWVsZCwgY29uc3QgRmllbGRNYXRjaGVyJiBtYXRj
aGVyKSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKAotICAgICAgaW50ZXJuYWw6
OkZpZWxkTWF0Y2hlcjxDbGFzcywgRmllbGRUeXBlPigKLSAgICAgICAgICBmaWVsZCwgTWF0Y2hl
ckNhc3Q8Y29uc3QgRmllbGRUeXBlJj4obWF0Y2hlcikpKTsKLSAgLy8gVGhlIGNhbGwgdG8gTWF0
Y2hlckNhc3QoKSBpcyByZXF1aXJlZCBmb3Igc3VwcG9ydGluZyBpbm5lcgotICAvLyBtYXRjaGVy
cyBvZiBjb21wYXRpYmxlIHR5cGVzLiAgRm9yIGV4YW1wbGUsIGl0IGFsbG93cwotICAvLyAgIEZp
ZWxkKCZGb286OmJhciwgbSkKLSAgLy8gdG8gY29tcGlsZSB3aGVyZSBiYXIgaXMgYW4gaW50MzIg
YW5kIG0gaXMgYSBtYXRjaGVyIGZvciBpbnQ2NC4KLX0KLQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIg
dGhhdCBtYXRjaGVzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eQotLy8gbWF0Y2hlcyAn
bWF0Y2hlcicuICBGb3IgZXhhbXBsZSwKLS8vICAgUHJvcGVydHkoJkZvbzo6c3RyLCBTdGFydHNX
aXRoKCJoaSIpKQotLy8gbWF0Y2hlcyBhIEZvbyBvYmplY3QgeCBpZmYgeC5zdHIoKSBzdGFydHMg
d2l0aCAiaGkiLgotdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzLCB0eXBlbmFtZSBQcm9wZXJ0eVR5
cGUsIHR5cGVuYW1lIFByb3BlcnR5TWF0Y2hlcj4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8
Ci0gIGludGVybmFsOjpQcm9wZXJ0eU1hdGNoZXI8Q2xhc3MsIFByb3BlcnR5VHlwZT4gPiBQcm9w
ZXJ0eSgKLSAgICBQcm9wZXJ0eVR5cGUgKENsYXNzOjoqcHJvcGVydHkpKCkgY29uc3QsIGNvbnN0
IFByb3BlcnR5TWF0Y2hlciYgbWF0Y2hlcikgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0
Y2hlcigKLSAgICAgIGludGVybmFsOjpQcm9wZXJ0eU1hdGNoZXI8Q2xhc3MsIFByb3BlcnR5VHlw
ZT4oCi0gICAgICAgICAgcHJvcGVydHksCi0gICAgICAgICAgTWF0Y2hlckNhc3Q8R1RFU1RfUkVG
RVJFTkNFX1RPX0NPTlNUXyhQcm9wZXJ0eVR5cGUpPihtYXRjaGVyKSkpOwotICAvLyBUaGUgY2Fs
bCB0byBNYXRjaGVyQ2FzdCgpIGlzIHJlcXVpcmVkIGZvciBzdXBwb3J0aW5nIGlubmVyCi0gIC8v
IG1hdGNoZXJzIG9mIGNvbXBhdGlibGUgdHlwZXMuICBGb3IgZXhhbXBsZSwgaXQgYWxsb3dzCi0g
IC8vICAgUHJvcGVydHkoJkZvbzo6YmFyLCBtKQotICAvLyB0byBjb21waWxlIHdoZXJlIGJhcigp
IHJldHVybnMgYW4gaW50MzIgYW5kIG0gaXMgYSBtYXRjaGVyIGZvciBpbnQ2NC4KLX0KLQotLy8g
Q3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFuIG9iamVjdCBpZmYgdGhlIHJlc3VsdCBv
ZiBhcHBseWluZwotLy8gYSBjYWxsYWJsZSB0byB4IG1hdGNoZXMgJ21hdGNoZXInLgotLy8gRm9y
IGV4YW1wbGUsCi0vLyAgIFJlc3VsdE9mKGYsIFN0YXJ0c1dpdGgoImhpIikpCi0vLyBtYXRjaGVz
IGEgRm9vIG9iamVjdCB4IGlmZiBmKHgpIHN0YXJ0cyB3aXRoICJoaSIuCi0vLyBjYWxsYWJsZSBw
YXJhbWV0ZXIgY2FuIGJlIGEgZnVuY3Rpb24sIGZ1bmN0aW9uIHBvaW50ZXIsIG9yIGEgZnVuY3Rv
ci4KLS8vIENhbGxhYmxlIGhhcyB0byBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
LS8vICAgKiBJdCBpcyByZXF1aXJlZCB0byBrZWVwIG5vIHN0YXRlIGFmZmVjdGluZyB0aGUgcmVz
dWx0cyBvZgotLy8gICAgIHRoZSBjYWxscyBvbiBpdCBhbmQgbWFrZSBubyBhc3N1bXB0aW9ucyBh
Ym91dCBob3cgbWFueSBjYWxscwotLy8gICAgIHdpbGwgYmUgbWFkZS4gQW55IHN0YXRlIGl0IGtl
ZXBzIG11c3QgYmUgcHJvdGVjdGVkIGZyb20gdGhlCi0vLyAgICAgY29uY3VycmVudCBhY2Nlc3Mu
Ci0vLyAgICogSWYgaXQgaXMgYSBmdW5jdGlvbiBvYmplY3QsIGl0IGhhcyB0byBkZWZpbmUgdHlw
ZSByZXN1bHRfdHlwZS4KLS8vICAgICBXZSByZWNvbW1lbmQgZGVyaXZpbmcgeW91ciBmdW5jdG9y
IGNsYXNzZXMgZnJvbSBzdGQ6OnVuYXJ5X2Z1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIENh
bGxhYmxlLCB0eXBlbmFtZSBSZXN1bHRPZk1hdGNoZXI+Ci1pbnRlcm5hbDo6UmVzdWx0T2ZNYXRj
aGVyPENhbGxhYmxlPiBSZXN1bHRPZigKLSAgICBDYWxsYWJsZSBjYWxsYWJsZSwgY29uc3QgUmVz
dWx0T2ZNYXRjaGVyJiBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6UmVzdWx0T2ZNYXRj
aGVyPENhbGxhYmxlPigKLSAgICAgICAgICBjYWxsYWJsZSwKLSAgICAgICAgICBNYXRjaGVyQ2Fz
dDx0eXBlbmFtZSBpbnRlcm5hbDo6Q2FsbGFibGVUcmFpdHM8Q2FsbGFibGU+OjpSZXN1bHRUeXBl
PigKLSAgICAgICAgICAgICAgbWF0Y2hlcikpOwotICAvLyBUaGUgY2FsbCB0byBNYXRjaGVyQ2Fz
dCgpIGlzIHJlcXVpcmVkIGZvciBzdXBwb3J0aW5nIGlubmVyCi0gIC8vIG1hdGNoZXJzIG9mIGNv
bXBhdGlibGUgdHlwZXMuICBGb3IgZXhhbXBsZSwgaXQgYWxsb3dzCi0gIC8vICAgUmVzdWx0T2Yo
RnVuY3Rpb24sIG0pCi0gIC8vIHRvIGNvbXBpbGUgd2hlcmUgRnVuY3Rpb24oKSByZXR1cm5zIGFu
IGludDMyIGFuZCBtIGlzIGEgbWF0Y2hlciBmb3IgaW50NjQuCi19Ci0KLS8vIFN0cmluZyBtYXRj
aGVycy4KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIuCi1pbmxpbmUgUG9seW1v
cnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+ID4g
U3RyRXEoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpz
dHJpbmc+KHN0ciwgdHJ1ZSwgdHJ1ZSkpOwotfQotCi0vLyBNYXRjaGVzIGEgc3RyaW5nIG5vdCBl
cXVhbCB0byBzdHIuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVh
bGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gU3RyTmUoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHN0cikgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcigKLSAgICAgIGludGVybmFs
OjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpzdHJpbmc+KHN0ciwgZmFsc2UsIHRydWUpKTsKLX0K
LQotLy8gTWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIsIGlnbm9yaW5nIGNhc2UuCi1pbmxp
bmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3RkOjpz
dHJpbmc+ID4gU3RyQ2FzZUVxKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgcmV0
dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoCi0gICAgICBpbnRlcm5hbDo6U3RyRXF1YWxpdHlN
YXRjaGVyPHN0ZDo6c3RyaW5nPihzdHIsIHRydWUsIGZhbHNlKSk7Ci19Ci0KLS8vIE1hdGNoZXMg
YSBzdHJpbmcgbm90IGVxdWFsIHRvIHN0ciwgaWdub3JpbmcgY2FzZS4KLWlubGluZSBQb2x5bW9y
cGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxzdGQ6OnN0cmluZz4gPiBT
dHJDYXNlTmUoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICByZXR1cm4gTWFrZVBv
bHltb3JwaGljTWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8c3Rk
OjpzdHJpbmc+KHN0ciwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtYXRjaGVy
IHRoYXQgbWF0Y2hlcyBhbnkgc3RyaW5nLCBzdGQ6OnN0cmluZywgb3IgQyBzdHJpbmcKLS8vIHRo
YXQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0cmluZy4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNo
ZXI8aW50ZXJuYWw6Okhhc1N1YnN0ck1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gSGFzU3Vic3RyKAot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWJzdHJpbmcpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoCi0gICAgICBpbnRlcm5hbDo6SGFzU3Vic3RyTWF0Y2hlcjxzdGQ6OnN0cmlu
Zz4oc3Vic3RyaW5nKSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBzdGFydHMgd2l0
aCAncHJlZml4JyAoY2FzZS1zZW5zaXRpdmUpLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxp
bnRlcm5hbDo6U3RhcnRzV2l0aE1hdGNoZXI8c3RkOjpzdHJpbmc+ID4gU3RhcnRzV2l0aCgKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgcHJlZml4KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNN
YXRjaGVyKAotICAgICAgaW50ZXJuYWw6OlN0YXJ0c1dpdGhNYXRjaGVyPHN0ZDo6c3RyaW5nPihw
cmVmaXgpKTsKLX0KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IGVuZHMgd2l0aCAnc3VmZml4
JyAoY2FzZS1zZW5zaXRpdmUpLgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6
RW5kc1dpdGhNYXRjaGVyPHN0ZDo6c3RyaW5nPiA+IEVuZHNXaXRoKAotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdWZmaXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJu
YWw6OkVuZHNXaXRoTWF0Y2hlcjxzdGQ6OnN0cmluZz4oc3VmZml4KSk7Ci19Ci0KLS8vIE1hdGNo
ZXMgYSBzdHJpbmcgdGhhdCBmdWxseSBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXgn
LgotLy8gVGhlIG1hdGNoZXIgdGFrZXMgb3duZXJzaGlwIG9mICdyZWdleCcuCi1pbmxpbmUgUG9s
eW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVyPiBNYXRjaGVzUmVn
ZXgoCi0gICAgY29uc3QgaW50ZXJuYWw6OlJFKiByZWdleCkgewotICByZXR1cm4gTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcihpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0Y2hlcihyZWdleCwgdHJ1ZSkp
OwotfQotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6TWF0Y2hlc1JlZ2V4TWF0
Y2hlcj4gTWF0Y2hlc1JlZ2V4KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWdleCkgewotICBy
ZXR1cm4gTWF0Y2hlc1JlZ2V4KG5ldyBpbnRlcm5hbDo6UkUocmVnZXgpKTsKLX0KLQotLy8gTWF0
Y2hlcyBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiAncmVnZXgnLgot
Ly8gVGhlIG1hdGNoZXIgdGFrZXMgb3duZXJzaGlwIG9mICdyZWdleCcuCi1pbmxpbmUgUG9seW1v
cnBoaWNNYXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRjaGVyPiBDb250YWluc1JlZ2V4
KAotICAgIGNvbnN0IGludGVybmFsOjpSRSogcmVnZXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoaW50ZXJuYWw6Ok1hdGNoZXNSZWdleE1hdGNoZXIocmVnZXgsIGZhbHNlKSk7
Ci19Ci1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpNYXRjaGVzUmVnZXhNYXRj
aGVyPiBDb250YWluc1JlZ2V4KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWdleCkgewotICBy
ZXR1cm4gQ29udGFpbnNSZWdleChuZXcgaW50ZXJuYWw6OlJFKHJlZ2V4KSk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfR0xPQkFMX1dTVFJJTkcgfHwgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0vLyBXaWRl
IHN0cmluZyBtYXRjaGVycy4KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyBlcXVhbCB0byBzdHIuCi1p
bmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpTdHJFcXVhbGl0eU1hdGNoZXI8aW50
ZXJuYWw6OndzdHJpbmc+ID4KLSAgICBTdHJFcShjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYgc3Ry
KSB7Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJFcXVhbGl0
eU1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAotICAgICAgc3RyLCB0cnVlLCB0cnVlKSk7Ci19
Ci0KLS8vIE1hdGNoZXMgYSBzdHJpbmcgbm90IGVxdWFsIHRvIHN0ci4KLWlubGluZSBQb2x5bW9y
cGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmlu
Zz4gPgotICAgIFN0ck5lKGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBzdHIpIHsKLSAgcmV0dXJu
IE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRl
cm5hbDo6d3N0cmluZz4oCi0gICAgICBzdHIsIGZhbHNlLCB0cnVlKSk7Ci19Ci0KLS8vIE1hdGNo
ZXMgYSBzdHJpbmcgZXF1YWwgdG8gc3RyLCBpZ25vcmluZyBjYXNlLgotaW5saW5lIFBvbHltb3Jw
aGljTWF0Y2hlcjxpbnRlcm5hbDo6U3RyRXF1YWxpdHlNYXRjaGVyPGludGVybmFsOjp3c3RyaW5n
PiA+Ci0gICAgU3RyQ2FzZUVxKGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBzdHIpIHsKLSAgcmV0
dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNoZXIoaW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxp
bnRlcm5hbDo6d3N0cmluZz4oCi0gICAgICBzdHIsIHRydWUsIGZhbHNlKSk7Ci19Ci0KLS8vIE1h
dGNoZXMgYSBzdHJpbmcgbm90IGVxdWFsIHRvIHN0ciwgaWdub3JpbmcgY2FzZS4KLWlubGluZSBQ
b2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6OlN0ckVxdWFsaXR5TWF0Y2hlcjxpbnRlcm5hbDo6
d3N0cmluZz4gPgotICAgIFN0ckNhc2VOZShjb25zdCBpbnRlcm5hbDo6d3N0cmluZyYgc3RyKSB7
Ci0gIHJldHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKGludGVybmFsOjpTdHJFcXVhbGl0eU1h
dGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAotICAgICAgc3RyLCBmYWxzZSwgZmFsc2UpKTsKLX0K
LQotLy8gQ3JlYXRlcyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGFueSB3c3RyaW5nLCBzdGQ6Ondz
dHJpbmcsIG9yIEMgd2lkZSBzdHJpbmcKLS8vIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN1YnN0
cmluZy4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50ZXJuYWw6Okhhc1N1YnN0ck1hdGNo
ZXI8aW50ZXJuYWw6OndzdHJpbmc+ID4KLSAgICBIYXNTdWJzdHIoY29uc3QgaW50ZXJuYWw6Ondz
dHJpbmcmIHN1YnN0cmluZykgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihpbnRl
cm5hbDo6SGFzU3Vic3RyTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4oCi0gICAgICBzdWJzdHJp
bmcpKTsKLX0KLQotLy8gTWF0Y2hlcyBhIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoICdwcmVmaXgn
IChjYXNlLXNlbnNpdGl2ZSkuCi1pbmxpbmUgUG9seW1vcnBoaWNNYXRjaGVyPGludGVybmFsOjpT
dGFydHNXaXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4gPgotICAgIFN0YXJ0c1dpdGgoY29u
c3QgaW50ZXJuYWw6OndzdHJpbmcmIHByZWZpeCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGlj
TWF0Y2hlcihpbnRlcm5hbDo6U3RhcnRzV2l0aE1hdGNoZXI8aW50ZXJuYWw6OndzdHJpbmc+KAot
ICAgICAgcHJlZml4KSk7Ci19Ci0KLS8vIE1hdGNoZXMgYSBzdHJpbmcgdGhhdCBlbmRzIHdpdGgg
J3N1ZmZpeCcgKGNhc2Utc2Vuc2l0aXZlKS4KLWlubGluZSBQb2x5bW9ycGhpY01hdGNoZXI8aW50
ZXJuYWw6OkVuZHNXaXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4gPgotICAgIEVuZHNXaXRo
KGNvbnN0IGludGVybmFsOjp3c3RyaW5nJiBzdWZmaXgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9y
cGhpY01hdGNoZXIoaW50ZXJuYWw6OkVuZHNXaXRoTWF0Y2hlcjxpbnRlcm5hbDo6d3N0cmluZz4o
Ci0gICAgICBzdWZmaXgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1dTVFJJ
TkcgfHwgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0KLS8vIENyZWF0ZXMgYSBwb2x5bW9ycGhpYyBt
YXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlCi0vLyBmaXJzdCBmaWVsZCA9
PSB0aGUgc2Vjb25kIGZpZWxkLgotaW5saW5lIGludGVybmFsOjpFcTJNYXRjaGVyIEVxKCkgeyBy
ZXR1cm4gaW50ZXJuYWw6OkVxMk1hdGNoZXIoKTsgfQotCi0vLyBDcmVhdGVzIGEgcG9seW1vcnBo
aWMgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZQotLy8gZmlyc3QgZmll
bGQgPj0gdGhlIHNlY29uZCBmaWVsZC4KLWlubGluZSBpbnRlcm5hbDo6R2UyTWF0Y2hlciBHZSgp
IHsgcmV0dXJuIGludGVybmFsOjpHZTJNYXRjaGVyKCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBvbHlt
b3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUKLS8vIGZpcnN0
IGZpZWxkID4gdGhlIHNlY29uZCBmaWVsZC4KLWlubGluZSBpbnRlcm5hbDo6R3QyTWF0Y2hlciBH
dCgpIHsgcmV0dXJuIGludGVybmFsOjpHdDJNYXRjaGVyKCk7IH0KLQotLy8gQ3JlYXRlcyBhIHBv
bHltb3JwaGljIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUKLS8vIGZp
cnN0IGZpZWxkIDw9IHRoZSBzZWNvbmQgZmllbGQuCi1pbmxpbmUgaW50ZXJuYWw6OkxlMk1hdGNo
ZXIgTGUoKSB7IHJldHVybiBpbnRlcm5hbDo6TGUyTWF0Y2hlcigpOyB9Ci0KLS8vIENyZWF0ZXMg
YSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlCi0v
LyBmaXJzdCBmaWVsZCA8IHRoZSBzZWNvbmQgZmllbGQuCi1pbmxpbmUgaW50ZXJuYWw6Okx0Mk1h
dGNoZXIgTHQoKSB7IHJldHVybiBpbnRlcm5hbDo6THQyTWF0Y2hlcigpOyB9Ci0KLS8vIENyZWF0
ZXMgYSBwb2x5bW9ycGhpYyBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhl
Ci0vLyBmaXJzdCBmaWVsZCAhPSB0aGUgc2Vjb25kIGZpZWxkLgotaW5saW5lIGludGVybmFsOjpO
ZTJNYXRjaGVyIE5lKCkgeyByZXR1cm4gaW50ZXJuYWw6Ok5lMk1hdGNoZXIoKTsgfQotCi0vLyBD
cmVhdGVzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55IHZhbHVlIG9mIHR5cGUgVCB0aGF0IG0g
ZG9lc24ndAotLy8gbWF0Y2guCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJNYXRjaGVyPgotaW5s
aW5lIGludGVybmFsOjpOb3RNYXRjaGVyPElubmVyTWF0Y2hlcj4gTm90KElubmVyTWF0Y2hlciBt
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6Tm90TWF0Y2hlcjxJbm5lck1hdGNoZXI+KG0pOwotfQot
Ci0vLyBSZXR1cm5zIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYW55dGhpbmcgdGhhdCBzYXRpc2Zp
ZXMgdGhlIGdpdmVuCi0vLyBwcmVkaWNhdGUuICBUaGUgcHJlZGljYXRlIGNhbiBiZSBhbnkgdW5h
cnkgZnVuY3Rpb24gb3IgZnVuY3RvcgotLy8gd2hvc2UgcmV0dXJuIHR5cGUgY2FuIGJlIGltcGxp
Y2l0bHkgY29udmVydGVkIHRvIGJvb2wuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZGljYXRlPgot
aW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRlcm5hbDo6VHJ1bHlNYXRjaGVyPFByZWRpY2F0
ZT4gPgotVHJ1bHkoUHJlZGljYXRlIHByZWQpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01h
dGNoZXIoaW50ZXJuYWw6OlRydWx5TWF0Y2hlcjxQcmVkaWNhdGU+KHByZWQpKTsKLX0KLQotLy8g
UmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIHRoZSBjb250YWluZXIgc2l6ZS4gVGhlIGNv
bnRhaW5lciBtdXN0Ci0vLyBzdXBwb3J0IGJvdGggc2l6ZSgpIGFuZCBzaXplX3R5cGUgd2hpY2gg
YWxsIFNUTC1saWtlIGNvbnRhaW5lcnMgcHJvdmlkZS4KLS8vIE5vdGUgdGhhdCB0aGUgcGFyYW1l
dGVyICdzaXplJyBjYW4gYmUgYSB2YWx1ZSBvZiB0eXBlIHNpemVfdHlwZSBhcyB3ZWxsIGFzCi0v
LyBtYXRjaGVyLiBGb3IgaW5zdGFuY2U6Ci0vLyAgIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgU2l6
ZUlzKDIpKTsgICAgIC8vIENoZWNrcyBjb250YWluZXIgaGFzIDIgZWxlbWVudHMuCi0vLyAgIEVY
UEVDVF9USEFUKGNvbnRhaW5lciwgU2l6ZUlzKExlKDIpKTsgIC8vIENoZWNrcyBjb250YWluZXIg
aGFzIGF0IG1vc3QgMi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBTaXplTWF0Y2hlcj4KLWlubGluZSBp
bnRlcm5hbDo6U2l6ZUlzTWF0Y2hlcjxTaXplTWF0Y2hlcj4KLVNpemVJcyhjb25zdCBTaXplTWF0
Y2hlciYgc2l6ZV9tYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6U2l6ZUlzTWF0Y2hlcjxT
aXplTWF0Y2hlcj4oc2l6ZV9tYXRjaGVyKTsKLX0KLQotLy8gUmV0dXJucyBhIG1hdGNoZXIgdGhh
dCBtYXRjaGVzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjb250YWluZXIncyBiZWdpbigpCi0v
LyBpdGVyYXRvciBhbmQgaXRzIGVuZCgpIGl0ZXJhdG9yLCBpLmUuIHRoZSBzaXplIG9mIHRoZSBj
b250YWluZXIuIFRoaXMgbWF0Y2hlcgotLy8gY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBTaXplSXMg
d2l0aCBjb250YWluZXJzIHN1Y2ggYXMgc3RkOjpmb3J3YXJkX2xpc3Qgd2hpY2gKLS8vIGRvIG5v
dCBpbXBsZW1lbnQgc2l6ZSgpLiBUaGUgY29udGFpbmVyIG11c3QgcHJvdmlkZSBjb25zdF9pdGVy
YXRvciAod2l0aAotLy8gdmFsaWQgaXRlcmF0b3JfdHJhaXRzKSwgYmVnaW4oKSBhbmQgZW5kKCku
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRGlzdGFuY2VNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpC
ZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyPERpc3RhbmNlTWF0Y2hlcj4KLUJlZ2luRW5kRGlzdGFu
Y2VJcyhjb25zdCBEaXN0YW5jZU1hdGNoZXImIGRpc3RhbmNlX21hdGNoZXIpIHsKLSAgcmV0dXJu
IGludGVybmFsOjpCZWdpbkVuZERpc3RhbmNlSXNNYXRjaGVyPERpc3RhbmNlTWF0Y2hlcj4oZGlz
dGFuY2VfbWF0Y2hlcik7Ci19Ci0KLS8vIFJldHVybnMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
biBlcXVhbCBjb250YWluZXIuCi0vLyBUaGlzIG1hdGNoZXIgYmVoYXZlcyBsaWtlIEVxKCksIGJ1
dCBpbiB0aGUgZXZlbnQgb2YgbWlzbWF0Y2ggbGlzdHMgdGhlCi0vLyB2YWx1ZXMgdGhhdCBhcmUg
aW5jbHVkZWQgaW4gb25lIGNvbnRhaW5lciBidXQgbm90IHRoZSBvdGhlci4gKER1cGxpY2F0ZQot
Ly8gdmFsdWVzIGFuZCBvcmRlciBkaWZmZXJlbmNlcyBhcmUgbm90IGV4cGxhaW5lZC4pCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIFBvbHltb3JwaGljTWF0Y2hlcjxpbnRl
cm5hbDo6Q29udGFpbmVyRXFNYXRjaGVyPCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhDb250YWluZXIpPiA+Ci0gICAgQ29udGFpbmVy
RXEoY29uc3QgQ29udGFpbmVyJiByaHMpIHsKLSAgLy8gVGhpcyBmb2xsb3dpbmcgbGluZSBpcyBm
b3Igd29ya2luZyBhcm91bmQgYSBidWcgaW4gTVNWQyA4LjAsCi0gIC8vIHdoaWNoIGNhdXNlcyBD
b250YWluZXIgdG8gYmUgYSBjb25zdCB0eXBlIHNvbWV0aW1lcy4KLSAgdHlwZWRlZiBHVEVTVF9S
RU1PVkVfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICByZXR1cm4gTWFrZVBvbHlt
b3JwaGljTWF0Y2hlcigKLSAgICAgIGludGVybmFsOjpDb250YWluZXJFcU1hdGNoZXI8UmF3Q29u
dGFpbmVyPihyaHMpKTsKLX0KLQotLy8gUmV0dXJucyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEg
Y29udGFpbmVyIHRoYXQsIHdoZW4gc29ydGVkIHVzaW5nCi0vLyB0aGUgZ2l2ZW4gY29tcGFyYXRv
ciwgbWF0Y2hlcyBjb250YWluZXJfbWF0Y2hlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb21wYXJh
dG9yLCB0eXBlbmFtZSBDb250YWluZXJNYXRjaGVyPgotaW5saW5lIGludGVybmFsOjpXaGVuU29y
dGVkQnlNYXRjaGVyPENvbXBhcmF0b3IsIENvbnRhaW5lck1hdGNoZXI+Ci1XaGVuU29ydGVkQnko
Y29uc3QgQ29tcGFyYXRvciYgY29tcGFyYXRvciwKLSAgICAgICAgICAgICBjb25zdCBDb250YWlu
ZXJNYXRjaGVyJiBjb250YWluZXJfbWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OldoZW5T
b3J0ZWRCeU1hdGNoZXI8Q29tcGFyYXRvciwgQ29udGFpbmVyTWF0Y2hlcj4oCi0gICAgICBjb21w
YXJhdG9yLCBjb250YWluZXJfbWF0Y2hlcik7Ci19Ci0KLS8vIFJldHVybnMgYSBtYXRjaGVyIHRo
YXQgbWF0Y2hlcyBhIGNvbnRhaW5lciB0aGF0LCB3aGVuIHNvcnRlZCB1c2luZwotLy8gdGhlIDwg
b3BlcmF0b3IsIG1hdGNoZXMgY29udGFpbmVyX21hdGNoZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29udGFpbmVyTWF0Y2hlcj4KLWlubGluZSBpbnRlcm5hbDo6V2hlblNvcnRlZEJ5TWF0Y2hlcjxp
bnRlcm5hbDo6TGVzc0NvbXBhcmF0b3IsIENvbnRhaW5lck1hdGNoZXI+Ci1XaGVuU29ydGVkKGNv
bnN0IENvbnRhaW5lck1hdGNoZXImIGNvbnRhaW5lcl9tYXRjaGVyKSB7Ci0gIHJldHVybgotICAg
ICAgaW50ZXJuYWw6OldoZW5Tb3J0ZWRCeU1hdGNoZXI8aW50ZXJuYWw6Okxlc3NDb21wYXJhdG9y
LCBDb250YWluZXJNYXRjaGVyPigKLSAgICAgICAgICBpbnRlcm5hbDo6TGVzc0NvbXBhcmF0b3Io
KSwgY29udGFpbmVyX21hdGNoZXIpOwotfQotCi0vLyBNYXRjaGVzIGFuIFNUTC1zdHlsZSBjb250
YWluZXIgb3IgYSBuYXRpdmUgYXJyYXkgdGhhdCBjb250YWlucyB0aGUKLS8vIHNhbWUgbnVtYmVy
IG9mIGVsZW1lbnRzIGFzIGluIHJocywgd2hlcmUgaXRzIGktdGggZWxlbWVudCBhbmQgcmhzJ3MK
LS8vIGktdGggZWxlbWVudCAoYXMgYSBwYWlyKSBzYXRpc2Z5IHRoZSBnaXZlbiBwYWlyIG1hdGNo
ZXIsIGZvciBhbGwgaS4KLS8vIFR1cGxlTWF0Y2hlciBtdXN0IGJlIGFibGUgdG8gYmUgc2FmZWx5
IGNhc3QgdG8gTWF0Y2hlcjx0dXBsZTxjb25zdAotLy8gVDEmLCBjb25zdCBUMiY+ID4sIHdoZXJl
IFQxIGFuZCBUMiBhcmUgdGhlIHR5cGVzIG9mIGVsZW1lbnRzIGluIHRoZQotLy8gTEhTIGNvbnRh
aW5lciBhbmQgdGhlIFJIUyBjb250YWluZXIgcmVzcGVjdGl2ZWx5LgotdGVtcGxhdGUgPHR5cGVu
YW1lIFR1cGxlTWF0Y2hlciwgdHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIGludGVybmFsOjpQ
b2ludHdpc2VNYXRjaGVyPFR1cGxlTWF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEVTVF9SRU1PVkVfQ09OU1RfKENvbnRhaW5lcik+Ci1Qb2ludHdpc2UoY29uc3Qg
VHVwbGVNYXRjaGVyJiB0dXBsZV9tYXRjaGVyLCBjb25zdCBDb250YWluZXImIHJocykgewotICAv
LyBUaGlzIGZvbGxvd2luZyBsaW5lIGlzIGZvciB3b3JraW5nIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZD
IDguMCwKLSAgLy8gd2hpY2ggY2F1c2VzIENvbnRhaW5lciB0byBiZSBhIGNvbnN0IHR5cGUgc29t
ZXRpbWVzIChlLmcuIHdoZW4KLSAgLy8gcmhzIGlzIGEgY29uc3QgaW50W10pLi4KLSAgdHlwZWRl
ZiBHVEVTVF9SRU1PVkVfQ09OU1RfKENvbnRhaW5lcikgUmF3Q29udGFpbmVyOwotICByZXR1cm4g
aW50ZXJuYWw6OlBvaW50d2lzZU1hdGNoZXI8VHVwbGVNYXRjaGVyLCBSYXdDb250YWluZXI+KAot
ICAgICAgdHVwbGVfbWF0Y2hlciwgcmhzKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfSU5JVElB
TElaRVJfTElTVF8KLQotLy8gU3VwcG9ydHMgdGhlIFBvaW50d2lzZShtLCB7YSwgYiwgY30pIHN5
bnRheC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZU1hdGNoZXIsIHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgaW50ZXJuYWw6OlBvaW50d2lzZU1hdGNoZXI8VHVwbGVNYXRjaGVyLCBzdGQ6OnZlY3RvcjxU
PiA+IFBvaW50d2lzZSgKLSAgICBjb25zdCBUdXBsZU1hdGNoZXImIHR1cGxlX21hdGNoZXIsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiByaHMpIHsKLSAgcmV0dXJuIFBvaW50d2lzZSh0dXBsZV9t
YXRjaGVyLCBzdGQ6OnZlY3RvcjxUPihyaHMpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
U1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLS8vIFVub3JkZXJlZFBvaW50d2lzZShwYWlyX21hdGNo
ZXIsIHJocykgbWF0Y2hlcyBhbiBTVEwtc3R5bGUKLS8vIGNvbnRhaW5lciBvciBhIG5hdGl2ZSBh
cnJheSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIG51bWJlciBvZgotLy8gZWxlbWVudHMgYXMgaW4g
cmhzLCB3aGVyZSBpbiBzb21lIHBlcm11dGF0aW9uIG9mIHRoZSBjb250YWluZXIsIGl0cwotLy8g
aS10aCBlbGVtZW50IGFuZCByaHMncyBpLXRoIGVsZW1lbnQgKGFzIGEgcGFpcikgc2F0aXNmeSB0
aGUgZ2l2ZW4KLS8vIHBhaXIgbWF0Y2hlciwgZm9yIGFsbCBpLiAgVHVwbGUyTWF0Y2hlciBtdXN0
IGJlIGFibGUgdG8gYmUgc2FmZWx5Ci0vLyBjYXN0IHRvIE1hdGNoZXI8dHVwbGU8Y29uc3QgVDEm
LCBjb25zdCBUMiY+ID4sIHdoZXJlIFQxIGFuZCBUMiBhcmUKLS8vIHRoZSB0eXBlcyBvZiBlbGVt
ZW50cyBpbiB0aGUgTEhTIGNvbnRhaW5lciBhbmQgdGhlIFJIUyBjb250YWluZXIKLS8vIHJlc3Bl
Y3RpdmVseS4KLS8vCi0vLyBUaGlzIGlzIGxpa2UgUG9pbnR3aXNlKHBhaXJfbWF0Y2hlciwgcmhz
KSwgZXhjZXB0IHRoYXQgdGhlIGVsZW1lbnQKLS8vIG9yZGVyIGRvZXNuJ3QgbWF0dGVyLgotdGVt
cGxhdGUgPHR5cGVuYW1lIFR1cGxlMk1hdGNoZXIsIHR5cGVuYW1lIFJoc0NvbnRhaW5lcj4KLWlu
bGluZSBpbnRlcm5hbDo6VW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8Ci0gICAgdHlw
ZW5hbWUgaW50ZXJuYWw6OkJvdW5kU2Vjb25kTWF0Y2hlcjwKLSAgICAgICAgVHVwbGUyTWF0Y2hl
ciwgdHlwZW5hbWUgaW50ZXJuYWw6OlN0bENvbnRhaW5lclZpZXc8R1RFU1RfUkVNT1ZFX0NPTlNU
XygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFJoc0NvbnRhaW5lcik+Ojp0eXBlOjp2YWx1
ZV90eXBlPiA+Ci1Vbm9yZGVyZWRQb2ludHdpc2UoY29uc3QgVHVwbGUyTWF0Y2hlciYgdHVwbGUy
X21hdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgUmhzQ29udGFpbmVyJiByaHNfY29u
dGFpbmVyKSB7Ci0gIC8vIFRoaXMgZm9sbG93aW5nIGxpbmUgaXMgZm9yIHdvcmtpbmcgYXJvdW5k
IGEgYnVnIGluIE1TVkMgOC4wLAotICAvLyB3aGljaCBjYXVzZXMgUmhzQ29udGFpbmVyIHRvIGJl
IGEgY29uc3QgdHlwZSBzb21ldGltZXMgKGUuZy4gd2hlbgotICAvLyByaHNfY29udGFpbmVyIGlz
IGEgY29uc3QgaW50W10pLgotICB0eXBlZGVmIEdURVNUX1JFTU9WRV9DT05TVF8oUmhzQ29udGFp
bmVyKSBSYXdSaHNDb250YWluZXI7Ci0KLSAgLy8gUmhzVmlldyBhbGxvd3MgdGhlIHNhbWUgY29k
ZSB0byBoYW5kbGUgUmhzQ29udGFpbmVyIGJlaW5nIGEKLSAgLy8gU1RMLXN0eWxlIGNvbnRhaW5l
ciBhbmQgaXQgYmVpbmcgYSBuYXRpdmUgQy1zdHlsZSBhcnJheS4KLSAgdHlwZWRlZiB0eXBlbmFt
ZSBpbnRlcm5hbDo6U3RsQ29udGFpbmVyVmlldzxSYXdSaHNDb250YWluZXI+IFJoc1ZpZXc7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgUmhzVmlldzo6dHlwZSBSaHNTdGxDb250YWluZXI7Ci0gIHR5cGVk
ZWYgdHlwZW5hbWUgUmhzU3RsQ29udGFpbmVyOjp2YWx1ZV90eXBlIFNlY29uZDsKLSAgY29uc3Qg
UmhzU3RsQ29udGFpbmVyJiByaHNfc3RsX2NvbnRhaW5lciA9Ci0gICAgICBSaHNWaWV3OjpDb25z
dFJlZmVyZW5jZShyaHNfY29udGFpbmVyKTsKLQotICAvLyBDcmVhdGUgYSBtYXRjaGVyIGZvciBl
YWNoIGVsZW1lbnQgaW4gcmhzX2NvbnRhaW5lci4KLSAgOjpzdGQ6OnZlY3RvcjxpbnRlcm5hbDo6
Qm91bmRTZWNvbmRNYXRjaGVyPFR1cGxlMk1hdGNoZXIsIFNlY29uZD4gPiBtYXRjaGVyczsKLSAg
Zm9yICh0eXBlbmFtZSBSaHNTdGxDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmhzX3N0
bF9jb250YWluZXIuYmVnaW4oKTsKLSAgICAgICBpdCAhPSByaHNfc3RsX2NvbnRhaW5lci5lbmQo
KTsgKytpdCkgewotICAgIG1hdGNoZXJzLnB1c2hfYmFjaygKLSAgICAgICAgaW50ZXJuYWw6Ok1h
dGNoZXJCaW5kU2Vjb25kKHR1cGxlMl9tYXRjaGVyLCAqaXQpKTsKLSAgfQotCi0gIC8vIERlbGVn
YXRlIHRoZSB3b3JrIHRvIFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoKS4KLSAgcmV0dXJuIFVu
b3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkobWF0Y2hlcnMpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NU
RF9JTklUSUFMSVpFUl9MSVNUXwotCi0vLyBTdXBwb3J0cyB0aGUgVW5vcmRlcmVkUG9pbnR3aXNl
KG0sIHthLCBiLCBjfSkgc3ludGF4LgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlMk1hdGNoZXIs
IHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50ZXJuYWw6OlVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlN
YXRjaGVyPAotICAgIHR5cGVuYW1lIGludGVybmFsOjpCb3VuZFNlY29uZE1hdGNoZXI8VHVwbGUy
TWF0Y2hlciwgVD4gPgotVW5vcmRlcmVkUG9pbnR3aXNlKGNvbnN0IFR1cGxlMk1hdGNoZXImIHR1
cGxlMl9tYXRjaGVyLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxU
PiByaHMpIHsKLSAgcmV0dXJuIFVub3JkZXJlZFBvaW50d2lzZSh0dXBsZTJfbWF0Y2hlciwgc3Rk
Ojp2ZWN0b3I8VD4ocmhzKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9JTklUSUFM
SVpFUl9MSVNUXwotCi0vLyBNYXRjaGVzIGFuIFNUTC1zdHlsZSBjb250YWluZXIgb3IgYSBuYXRp
dmUgYXJyYXkgdGhhdCBjb250YWlucyBhdAotLy8gbGVhc3Qgb25lIGVsZW1lbnQgbWF0Y2hpbmcg
dGhlIGdpdmVuIHZhbHVlIG9yIG1hdGNoZXIuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLyAgIDo6c3Rk
OjpzZXQ8aW50PiBwYWdlX2lkczsKLS8vICAgcGFnZV9pZHMuaW5zZXJ0KDMpOwotLy8gICBwYWdl
X2lkcy5pbnNlcnQoMSk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBDb250YWlucygxKSk7
Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBDb250YWlucyhHdCgyKSkpOwotLy8gICBFWFBF
Q1RfVEhBVChwYWdlX2lkcywgTm90KENvbnRhaW5zKDQpKSk7Ci0vLwotLy8gICA6OnN0ZDo6bWFw
PGludCwgc2l6ZV90PiBwYWdlX2xlbmd0aHM7Ci0vLyAgIHBhZ2VfbGVuZ3Roc1sxXSA9IDEwMDsK
LS8vICAgRVhQRUNUX1RIQVQocGFnZV9sZW5ndGhzLAotLy8gICAgICAgICAgICAgICBDb250YWlu
cyg6OnN0ZDo6cGFpcjxjb25zdCBpbnQsIHNpemVfdD4oMSwgMTAwKSkpOwotLy8KLS8vICAgY29u
c3QgY2hhciogdXNlcl9pZHNbXSA9IHsgImpvZSIsICJtaWtlIiwgInRvbSIgfTsKLS8vICAgRVhQ
RUNUX1RIQVQodXNlcl9pZHMsIENvbnRhaW5zKEVxKDo6c3RkOjpzdHJpbmcoInRvbSIpKSkpOwot
dGVtcGxhdGUgPHR5cGVuYW1lIE0+Ci1pbmxpbmUgaW50ZXJuYWw6OkNvbnRhaW5zTWF0Y2hlcjxN
PiBDb250YWlucyhNIG1hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVybmFsOjpDb250YWluc01hdGNo
ZXI8TT4obWF0Y2hlcik7Ci19Ci0KLS8vIE1hdGNoZXMgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciBv
ciBhIG5hdGl2ZSBhcnJheSB0aGF0IGNvbnRhaW5zIG9ubHkKLS8vIGVsZW1lbnRzIG1hdGNoaW5n
IHRoZSBnaXZlbiB2YWx1ZSBvciBtYXRjaGVyLgotLy8KLS8vIEVhY2gobSkgaXMgc2VtYW50aWNh
bGx5IGVxdWl2YWxlbnQgdG8gTm90KENvbnRhaW5zKE5vdChtKSkpLiBPbmx5Ci0vLyB0aGUgbWVz
c2FnZXMgYXJlIGRpZmZlcmVudC4KLS8vCi0vLyBFeGFtcGxlczoKLS8vICAgOjpzdGQ6OnNldDxp
bnQ+IHBhZ2VfaWRzOwotLy8gICAvLyBFYWNoKG0pIG1hdGNoZXMgYW4gZW1wdHkgY29udGFpbmVy
LCByZWdhcmRsZXNzIG9mIHdoYXQgbSBpcy4KLS8vICAgRVhQRUNUX1RIQVQocGFnZV9pZHMsIEVh
Y2goRXEoMSkpKTsKLS8vICAgRVhQRUNUX1RIQVQocGFnZV9pZHMsIEVhY2goRXEoNzcpKSk7Ci0v
LwotLy8gICBwYWdlX2lkcy5pbnNlcnQoMyk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBF
YWNoKEd0KDApKSk7Ci0vLyAgIEVYUEVDVF9USEFUKHBhZ2VfaWRzLCBOb3QoRWFjaChHdCg0KSkp
KTsKLS8vICAgcGFnZV9pZHMuaW5zZXJ0KDEpOwotLy8gICBFWFBFQ1RfVEhBVChwYWdlX2lkcywg
Tm90KEVhY2goTHQoMikpKSk7Ci0vLwotLy8gICA6OnN0ZDo6bWFwPGludCwgc2l6ZV90PiBwYWdl
X2xlbmd0aHM7Ci0vLyAgIHBhZ2VfbGVuZ3Roc1sxXSA9IDEwMDsKLS8vICAgcGFnZV9sZW5ndGhz
WzJdID0gMjAwOwotLy8gICBwYWdlX2xlbmd0aHNbM10gPSAzMDA7Ci0vLyAgIEVYUEVDVF9USEFU
KHBhZ2VfbGVuZ3RocywgTm90KEVhY2goUGFpcigxLCAxMDApKSkpOwotLy8gICBFWFBFQ1RfVEhB
VChwYWdlX2xlbmd0aHMsIEVhY2goS2V5KExlKDMpKSkpOwotLy8KLS8vICAgY29uc3QgY2hhciog
dXNlcl9pZHNbXSA9IHsgImpvZSIsICJtaWtlIiwgInRvbSIgfTsKLS8vICAgRVhQRUNUX1RIQVQo
dXNlcl9pZHMsIE5vdChFYWNoKEVxKDo6c3RkOjpzdHJpbmcoInRvbSIpKSkpKTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBNPgotaW5saW5lIGludGVybmFsOjpFYWNoTWF0Y2hlcjxNPiBFYWNoKE0gbWF0
Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OkVhY2hNYXRjaGVyPE0+KG1hdGNoZXIpOwotfQot
Ci0vLyBLZXkoaW5uZXJfbWF0Y2hlcikgbWF0Y2hlcyBhbiBzdGQ6OnBhaXIgd2hvc2UgJ2ZpcnN0
JyBmaWVsZCBtYXRjaGVzCi0vLyBpbm5lcl9tYXRjaGVyLiAgRm9yIGV4YW1wbGUsIENvbnRhaW5z
KEtleShHZSg1KSkpIGNhbiBiZSB1c2VkIHRvIG1hdGNoIGFuCi0vLyBzdGQ6Om1hcCB0aGF0IGNv
bnRhaW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IHdob3NlIGtleSBpcyA+PSA1LgotdGVtcGxhdGUg
PHR5cGVuYW1lIE0+Ci1pbmxpbmUgaW50ZXJuYWw6OktleU1hdGNoZXI8TT4gS2V5KE0gaW5uZXJf
bWF0Y2hlcikgewotICByZXR1cm4gaW50ZXJuYWw6OktleU1hdGNoZXI8TT4oaW5uZXJfbWF0Y2hl
cik7Ci19Ci0KLS8vIFBhaXIoZmlyc3RfbWF0Y2hlciwgc2Vjb25kX21hdGNoZXIpIG1hdGNoZXMg
YSBzdGQ6OnBhaXIgd2hvc2UgJ2ZpcnN0JyBmaWVsZAotLy8gbWF0Y2hlcyBmaXJzdF9tYXRjaGVy
IGFuZCB3aG9zZSAnc2Vjb25kJyBmaWVsZCBtYXRjaGVzIHNlY29uZF9tYXRjaGVyLiAgRm9yCi0v
LyBleGFtcGxlLCBFWFBFQ1RfVEhBVChtYXBfdHlwZSwgRWxlbWVudHNBcmUoUGFpcihHZSg1KSwg
ImZvbyIpKSkgY2FuIGJlIHVzZWQKLS8vIHRvIG1hdGNoIGEgc3RkOjptYXA8aW50LCBzdHJpbmc+
IHRoYXQgY29udGFpbnMgZXhhY3RseSBvbmUgZWxlbWVudCB3aG9zZSBrZXkKLS8vIGlzID49IDUg
YW5kIHdob3NlIHZhbHVlIGVxdWFscyAiZm9vIi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBGaXJzdE1h
dGNoZXIsIHR5cGVuYW1lIFNlY29uZE1hdGNoZXI+Ci1pbmxpbmUgaW50ZXJuYWw6OlBhaXJNYXRj
aGVyPEZpcnN0TWF0Y2hlciwgU2Vjb25kTWF0Y2hlcj4KLVBhaXIoRmlyc3RNYXRjaGVyIGZpcnN0
X21hdGNoZXIsIFNlY29uZE1hdGNoZXIgc2Vjb25kX21hdGNoZXIpIHsKLSAgcmV0dXJuIGludGVy
bmFsOjpQYWlyTWF0Y2hlcjxGaXJzdE1hdGNoZXIsIFNlY29uZE1hdGNoZXI+KAotICAgICAgZmly
c3RfbWF0Y2hlciwgc2Vjb25kX21hdGNoZXIpOwotfQotCi0vLyBSZXR1cm5zIGEgcHJlZGljYXRl
IHRoYXQgaXMgc2F0aXNmaWVkIGJ5IGFueXRoaW5nIHRoYXQgbWF0Y2hlcyB0aGUKLS8vIGdpdmVu
IG1hdGNoZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTT4KLWlubGluZSBpbnRlcm5hbDo6TWF0Y2hl
ckFzUHJlZGljYXRlPE0+IE1hdGNoZXMoTSBtYXRjaGVyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
TWF0Y2hlckFzUHJlZGljYXRlPE0+KG1hdGNoZXIpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSB2YWx1ZSBtYXRjaGVzIHRoZSBtYXRjaGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIE0+Ci1pbmxpbmUgYm9vbCBWYWx1ZShjb25zdCBUJiB2YWx1ZSwgTSBtYXRjaGVyKSB7
Ci0gIHJldHVybiB0ZXN0aW5nOjpNYXRjaGVzKG1hdGNoZXIpKHZhbHVlKTsKLX0KLQotLy8gTWF0
Y2hlcyB0aGUgdmFsdWUgYWdhaW5zdCB0aGUgZ2l2ZW4gbWF0Y2hlciBhbmQgZXhwbGFpbnMgdGhl
IG1hdGNoCi0vLyByZXN1bHQgdG8gbGlzdGVuZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgTT4KLWlubGluZSBib29sIEV4cGxhaW5NYXRjaFJlc3VsdCgKLSAgICBNIG1hdGNoZXIs
IGNvbnN0IFQmIHZhbHVlLCBNYXRjaFJlc3VsdExpc3RlbmVyKiBsaXN0ZW5lcikgewotICByZXR1
cm4gU2FmZU1hdGNoZXJDYXN0PGNvbnN0IFQmPihtYXRjaGVyKS5NYXRjaEFuZEV4cGxhaW4odmFs
dWUsIGxpc3RlbmVyKTsKLX0KLQotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLS8vIERlZmluZSB2YXJp
YWRpYyBtYXRjaGVyIHZlcnNpb25zLiBUaGV5IGFyZSBvdmVybG9hZGVkIGluCi0vLyBnbW9jay1n
ZW5lcmF0ZWQtbWF0Y2hlcnMuaCBmb3IgdGhlIGNhc2VzIHN1cHBvcnRlZCBieSBwcmUgQysrMTEg
Y29tcGlsZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci1pbmxpbmUgaW50ZXJuYWw6
OkFsbE9mTWF0Y2hlcjxBcmdzLi4uPiBBbGxPZihjb25zdCBBcmdzJi4uLiBtYXRjaGVycykgewot
ICByZXR1cm4gaW50ZXJuYWw6OkFsbE9mTWF0Y2hlcjxBcmdzLi4uPihtYXRjaGVycy4uLik7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotaW5saW5lIGludGVybmFsOjpBbnlPZk1h
dGNoZXI8QXJncy4uLj4gQW55T2YoY29uc3QgQXJncyYuLi4gbWF0Y2hlcnMpIHsKLSAgcmV0dXJu
IGludGVybmFsOjpBbnlPZk1hdGNoZXI8QXJncy4uLj4obWF0Y2hlcnMuLi4pOwotfQotCi0jZW5k
aWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLQotLy8gQWxsQXJncyhtKSBpcyBhIHN5bm9ueW0gb2Yg
bS4gIFRoaXMgaXMgdXNlZnVsIGluCi0vLwotLy8gICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfLCBf
KSkuV2l0aChBbGxBcmdzKEVxKCkpKTsKLS8vCi0vLyB3aGljaCBpcyBlYXNpZXIgdG8gcmVhZCB0
aGFuCi0vLwotLy8gICBFWFBFQ1RfQ0FMTChmb28sIEJhcihfLCBfKSkuV2l0aChFcSgpKTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBJbm5lck1hdGNoZXI+Ci1pbmxpbmUgSW5uZXJNYXRjaGVyIEFsbEFy
Z3MoY29uc3QgSW5uZXJNYXRjaGVyJiBtYXRjaGVyKSB7IHJldHVybiBtYXRjaGVyOyB9Ci0KLS8v
IFRoZXNlIG1hY3JvcyBhbGxvdyB1c2luZyBtYXRjaGVycyB0byBjaGVjayB2YWx1ZXMgaW4gR29v
Z2xlIFRlc3QKLS8vIHRlc3RzLiAgQVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpIGFuZCBFWFBF
Q1RfVEhBVCh2YWx1ZSwgbWF0Y2hlcikKLS8vIHN1Y2NlZWQgaWZmIHRoZSB2YWx1ZSBtYXRjaGVz
IHRoZSBtYXRjaGVyLiAgSWYgdGhlIGFzc2VydGlvbiBmYWlscywKLS8vIHRoZSB2YWx1ZSBhbmQg
dGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBtYXRjaGVyIHdpbGwgYmUgcHJpbnRlZC4KLSNkZWZpbmUg
QVNTRVJUX1RIQVQodmFsdWUsIG1hdGNoZXIpIEFTU0VSVF9QUkVEX0ZPUk1BVDEoXAotICAgIDo6
dGVzdGluZzo6aW50ZXJuYWw6Ok1ha2VQcmVkaWNhdGVGb3JtYXR0ZXJGcm9tTWF0Y2hlcihtYXRj
aGVyKSwgdmFsdWUpCi0jZGVmaW5lIEVYUEVDVF9USEFUKHZhbHVlLCBtYXRjaGVyKSBFWFBFQ1Rf
UFJFRF9GT1JNQVQxKFwKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpNYWtlUHJlZGljYXRlRm9y
bWF0dGVyRnJvbU1hdGNoZXIobWF0Y2hlciksIHZhbHVlKQotCi19ICAvLyBuYW1lc3BhY2UgdGVz
dGluZwotCi0vLyBJbmNsdWRlIGFueSBjdXN0b20gY2FsbGJhY2sgbWF0Y2hlcnMgYWRkZWQgYnkg
dGhlIGxvY2FsIGluc3RhbGxhdGlvbi4KLS8vIFdlIG11c3QgaW5jbHVkZSB0aGlzIGhlYWRlciBh
dCB0aGUgZW5kIHRvIG1ha2Ugc3VyZSBpdCBjYW4gdXNlIHRoZQotLy8gZGVjbGFyYXRpb25zIGZy
b20gdGhpcyBmaWxlLgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRj
aGVycy5oIgotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX01BVENIRVJTX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLW1vcmUtYWN0aW9u
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3JlLWFjdGlvbnMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzODdiNmI3ZDc1Li4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3JlLWFjdGlvbnMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNs
YXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgc29tZSBhY3Rpb25zIHRoYXQgZGVw
ZW5kIG9uIGdtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmguCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVE
RV9HTU9DS19HTU9DS19NT1JFX0FDVElPTlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9D
S19HTU9DS19NT1JFX0FDVElPTlNfSF8KLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1
ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5n
IHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEltcGxlbWVudHMgdGhlIEludm9rZShmKSBh
Y3Rpb24uICBUaGUgdGVtcGxhdGUgYXJndW1lbnQKLS8vIEZ1bmN0aW9uSW1wbCBpcyB0aGUgaW1w
bGVtZW50YXRpb24gdHlwZSBvZiBmLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEKLS8vIGZ1bmN0aW9u
IHBvaW50ZXIgb3IgYSBmdW5jdG9yLiAgSW52b2tlKGYpIGNhbiBiZSB1c2VkIGFzIGFuCi0vLyBB
Y3Rpb248Rj4gYXMgbG9uZyBhcyBmJ3MgdHlwZSBpcyBjb21wYXRpYmxlIHdpdGggRiAoaS5lLiBm
IGNhbiBiZQotLy8gYXNzaWduZWQgdG8gYSB0cjE6OmZ1bmN0aW9uPEY+KS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdGlvbkltcGw+Ci1jbGFzcyBJbnZva2VBY3Rpb24gewotIHB1YmxpYzoKLSAg
Ly8gVGhlIGMndG9yIG1ha2VzIGEgY29weSBvZiBmdW5jdGlvbl9pbXBsIChlaXRoZXIgYSBmdW5j
dGlvbgotICAvLyBwb2ludGVyIG9yIGEgZnVuY3RvcikuCi0gIGV4cGxpY2l0IEludm9rZUFjdGlv
bihGdW5jdGlvbkltcGwgZnVuY3Rpb25faW1wbCkKLSAgICAgIDogZnVuY3Rpb25faW1wbF8oZnVu
Y3Rpb25faW1wbCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBB
cmd1bWVudFR1cGxlPgotICBSZXN1bHQgUGVyZm9ybShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdz
KSB7Ci0gICAgcmV0dXJuIEludm9rZUhlbHBlcjxSZXN1bHQsIEFyZ3VtZW50VHVwbGU+OjpJbnZv
a2UoZnVuY3Rpb25faW1wbF8sIGFyZ3MpOwotICB9Ci0KLSBwcml2YXRlOgotICBGdW5jdGlvbklt
cGwgZnVuY3Rpb25faW1wbF87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbnZva2VBY3Rp
b24pOwotfTsKLQotLy8gSW1wbGVtZW50cyB0aGUgSW52b2tlKG9iamVjdF9wdHIsICZDbGFzczo6
TWV0aG9kKSBhY3Rpb24uCi10ZW1wbGF0ZSA8Y2xhc3MgQ2xhc3MsIHR5cGVuYW1lIE1ldGhvZFB0
cj4KLWNsYXNzIEludm9rZU1ldGhvZEFjdGlvbiB7Ci0gcHVibGljOgotICBJbnZva2VNZXRob2RB
Y3Rpb24oQ2xhc3MqIG9ial9wdHIsIE1ldGhvZFB0ciBtZXRob2RfcHRyKQotICAgICAgOiBtZXRo
b2RfcHRyXyhtZXRob2RfcHRyKSwgb2JqX3B0cl8ob2JqX3B0cikge30KLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzdWx0LCB0eXBlbmFtZSBBcmd1bWVudFR1cGxlPgotICBSZXN1bHQgUGVyZm9y
bShjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7Ci0gICAgcmV0dXJuIEludm9rZUhl
bHBlcjxSZXN1bHQsIEFyZ3VtZW50VHVwbGU+OjpJbnZva2VNZXRob2QoCi0gICAgICAgIG9ial9w
dHJfLCBtZXRob2RfcHRyXywgYXJncyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIFRoZSBvcmRl
ciBvZiB0aGVzZSBtZW1iZXJzIG1hdHRlcnMuICBSZXZlcnNpbmcgdGhlIG9yZGVyIGNhbiB0cmln
Z2VyCi0gIC8vIHdhcm5pbmcgQzQxMjEgaW4gTVNWQyAoc2VlCi0gIC8vIGh0dHA6Ly9jb21wdXRl
ci1wcm9ncmFtbWluZy1mb3J1bS5jb20vNy12Yy5uZXQvNmZiYzMwMjY1Zjg2MGFkMS5odG0gKS4K
LSAgY29uc3QgTWV0aG9kUHRyIG1ldGhvZF9wdHJfOwotICBDbGFzcyogY29uc3Qgb2JqX3B0cl87
Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhJbnZva2VNZXRob2RBY3Rpb24pOwotfTsKLQot
Ly8gQW4gaW50ZXJuYWwgcmVwbGFjZW1lbnQgZm9yIHN0ZDo6Y29weSB3aGljaCBtaW1pY3MgaXRz
IGJlaGF2aW9yLiBUaGlzIGlzCi0vLyBuZWNlc3NhcnkgYmVjYXVzZSBWaXN1YWwgU3R1ZGlvIGRl
cHJlY2F0ZXMgOjpzdGQ6OmNvcHksIGlzc3Vpbmcgd2FybmluZyA0OTk2LgotLy8gSG93ZXZlciBW
aXN1YWwgU3R1ZGlvIDIwMTAgYW5kIGxhdGVyIGRvIG5vdCBob25vciAjcHJhZ21hcyB3aGljaCBk
aXNhYmxlIHRoYXQKLS8vIHdhcm5pbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9y
LCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBDb3B5RWxl
bWVudHMoSW5wdXRJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5wdXRJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPdXRwdXRJdGVyYXRvciBvdXRwdXQpIHsKLSAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsr
Zmlyc3QsICsrb3V0cHV0KSB7Ci0gICAgKm91dHB1dCA9ICpmaXJzdDsKLSAgfQotICByZXR1cm4g
b3V0cHV0OwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gVmFyaW91cyBvdmVy
bG9hZHMgZm9yIEludm9rZSgpLgotCi0vLyBDcmVhdGVzIGFuIGFjdGlvbiB0aGF0IGludm9rZXMg
J2Z1bmN0aW9uX2ltcGwnIHdpdGggdGhlIG1vY2sKLS8vIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgot
dGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uSW1wbD4KLVBvbHltb3JwaGljQWN0aW9uPGludGVy
bmFsOjpJbnZva2VBY3Rpb248RnVuY3Rpb25JbXBsPiA+IEludm9rZSgKLSAgICBGdW5jdGlvbklt
cGwgZnVuY3Rpb25faW1wbCkgewotICByZXR1cm4gTWFrZVBvbHltb3JwaGljQWN0aW9uKAotICAg
ICAgaW50ZXJuYWw6Okludm9rZUFjdGlvbjxGdW5jdGlvbkltcGw+KGZ1bmN0aW9uX2ltcGwpKTsK
LX0KLQotLy8gQ3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBnaXZlbiBtZXRob2Qg
b24gdGhlIGdpdmVuIG9iamVjdAotLy8gd2l0aCB0aGUgbW9jayBmdW5jdGlvbidzIGFyZ3VtZW50
cy4KLXRlbXBsYXRlIDxjbGFzcyBDbGFzcywgdHlwZW5hbWUgTWV0aG9kUHRyPgotUG9seW1vcnBo
aWNBY3Rpb248aW50ZXJuYWw6Okludm9rZU1ldGhvZEFjdGlvbjxDbGFzcywgTWV0aG9kUHRyPiA+
IEludm9rZSgKLSAgICBDbGFzcyogb2JqX3B0ciwgTWV0aG9kUHRyIG1ldGhvZF9wdHIpIHsKLSAg
cmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbigKLSAgICAgIGludGVybmFsOjpJbnZva2VNZXRo
b2RBY3Rpb248Q2xhc3MsIE1ldGhvZFB0cj4ob2JqX3B0ciwgbWV0aG9kX3B0cikpOwotfQotCi0v
LyBXaXRob3V0QXJncyhpbm5lcl9hY3Rpb24pIGNhbiBiZSB1c2VkIGluIGEgbW9jayBmdW5jdGlv
biB3aXRoIGEKLS8vIG5vbi1lbXB0eSBhcmd1bWVudCBsaXN0IHRvIHBlcmZvcm0gaW5uZXJfYWN0
aW9uLCB3aGljaCB0YWtlcyBubwotLy8gYXJndW1lbnQuICBJbiBvdGhlciB3b3JkcywgaXQgYWRh
cHRzIGFuIGFjdGlvbiBhY2NlcHRpbmcgbm8KLS8vIGFyZ3VtZW50IHRvIG9uZSB0aGF0IGFjY2Vw
dHMgKGFuZCBpZ25vcmVzKSBhcmd1bWVudHMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5uZXJBY3Rp
b24+Ci1pbmxpbmUgaW50ZXJuYWw6OldpdGhBcmdzQWN0aW9uPElubmVyQWN0aW9uPgotV2l0aG91
dEFyZ3MoY29uc3QgSW5uZXJBY3Rpb24mIGFjdGlvbikgewotICByZXR1cm4gaW50ZXJuYWw6Oldp
dGhBcmdzQWN0aW9uPElubmVyQWN0aW9uPihhY3Rpb24pOwotfQotCi0vLyBXaXRoQXJnPGs+KGFu
X2FjdGlvbikgY3JlYXRlcyBhbiBhY3Rpb24gdGhhdCBwYXNzZXMgdGhlIGstdGgKLS8vICgwLWJh
c2VkKSBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbiB0byBhbl9hY3Rpb24gYW5kIHBlcmZv
cm1zCi0vLyBpdC4gIEl0IGFkYXB0cyBhbiBhY3Rpb24gYWNjZXB0aW5nIG9uZSBhcmd1bWVudCB0
byBvbmUgdGhhdCBhY2NlcHRzCi0vLyBtdWx0aXBsZSBhcmd1bWVudHMuICBGb3IgY29udmVuaWVu
Y2UsIHdlIGFsc28gcHJvdmlkZQotLy8gV2l0aEFyZ3M8az4oYW5fYWN0aW9uKSAoZGVmaW5lZCBi
ZWxvdykgYXMgYSBzeW5vbnltLgotdGVtcGxhdGUgPGludCBrLCB0eXBlbmFtZSBJbm5lckFjdGlv
bj4KLWlubGluZSBpbnRlcm5hbDo6V2l0aEFyZ3NBY3Rpb248SW5uZXJBY3Rpb24sIGs+Ci1XaXRo
QXJnKGNvbnN0IElubmVyQWN0aW9uJiBhY3Rpb24pIHsKLSAgcmV0dXJuIGludGVybmFsOjpXaXRo
QXJnc0FjdGlvbjxJbm5lckFjdGlvbiwgaz4oYWN0aW9uKTsKLX0KLQotLy8gVGhlIEFDVElPTioo
KSBtYWNyb3MgdHJpZ2dlciB3YXJuaW5nIEM0MTAwICh1bnJlZmVyZW5jZWQgZm9ybWFsCi0vLyBw
YXJhbWV0ZXIpIGluIE1TVkMgd2l0aCAtVzQuICBVbmZvcnR1bmF0ZWx5IHRoZXkgY2Fubm90IGJl
IGZpeGVkIGluCi0vLyB0aGUgbWFjcm8gZGVmaW5pdGlvbiwgYXMgdGhlIHdhcm5pbmdzIGFyZSBn
ZW5lcmF0ZWQgd2hlbiB0aGUgbWFjcm8KLS8vIGlzIGV4cGFuZGVkIGFuZCBtYWNybyBleHBhbnNp
b24gY2Fubm90IGNvbnRhaW4gI3ByYWdtYS4gIFRoZXJlZm9yZQotLy8gd2Ugc3VwcHJlc3MgdGhl
bSBoZXJlLgotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdt
YSB3YXJuaW5nKGRpc2FibGU6NDEwMCkKLSNlbmRpZgotCi0vLyBBY3Rpb24gUmV0dXJuQXJnPGs+
KCkgcmV0dXJucyB0aGUgay10aCBhcmd1bWVudCBvZiB0aGUgbW9jayBmdW5jdGlvbi4KLUFDVElP
Tl9URU1QTEFURShSZXR1cm5BcmcsCi0gICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFS
QU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzBfVkFMVUVfUEFSQU1TKCkpIHsKLSAg
cmV0dXJuIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpOwotfQotCi0vLyBBY3Rpb24gU2F2ZUFyZzxr
Pihwb2ludGVyKSBzYXZlcyB0aGUgay10aCAoMC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlCi0vLyBt
b2NrIGZ1bmN0aW9uIHRvICpwb2ludGVyLgotQUNUSU9OX1RFTVBMQVRFKFNhdmVBcmcsCi0gICAg
ICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAg
ICAgQU5EXzFfVkFMVUVfUEFSQU1TKHBvaW50ZXIpKSB7Ci0gICpwb2ludGVyID0gOjp0ZXN0aW5n
OjpnZXQ8az4oYXJncyk7Ci19Ci0KLS8vIEFjdGlvbiBTYXZlQXJnUG9pbnRlZTxrPihwb2ludGVy
KSBzYXZlcyB0aGUgdmFsdWUgcG9pbnRlZCB0bwotLy8gYnkgdGhlIGstdGggKDAtYmFzZWQpIGFy
Z3VtZW50IG9mIHRoZSBtb2NrIGZ1bmN0aW9uIHRvICpwb2ludGVyLgotQUNUSU9OX1RFTVBMQVRF
KFNhdmVBcmdQb2ludGVlLAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyhp
bnQsIGspLAotICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFNUyhwb2ludGVyKSkgewot
ICAqcG9pbnRlciA9ICo6OnRlc3Rpbmc6OmdldDxrPihhcmdzKTsKLX0KLQotLy8gQWN0aW9uIFNl
dEFyZ1JlZmVyZWU8az4odmFsdWUpIGFzc2lnbnMgJ3ZhbHVlJyB0byB0aGUgdmFyaWFibGUKLS8v
IHJlZmVyZW5jZWQgYnkgdGhlIGstdGggKDAtYmFzZWQpIGFyZ3VtZW50IG9mIHRoZSBtb2NrIGZ1
bmN0aW9uLgotQUNUSU9OX1RFTVBMQVRFKFNldEFyZ1JlZmVyZWUsCi0gICAgICAgICAgICAgICAg
SEFTXzFfVEVNUExBVEVfUEFSQU1TKGludCwgayksCi0gICAgICAgICAgICAgICAgQU5EXzFfVkFM
VUVfUEFSQU1TKHZhbHVlKSkgewotICB0eXBlZGVmIHR5cGVuYW1lIDo6dGVzdGluZzo6dHVwbGVf
ZWxlbWVudDxrLCBhcmdzX3R5cGU+Ojp0eXBlIGFyZ2tfdHlwZTsKLSAgLy8gRW5zdXJlcyB0aGF0
IGFyZ3VtZW50ICNrIGlzIGEgcmVmZXJlbmNlLiAgSWYgeW91IGdldCBhIGNvbXBpbGVyCi0gIC8v
IGVycm9yIG9uIHRoZSBuZXh0IGxpbmUsIHlvdSBhcmUgdXNpbmcgU2V0QXJnUmVmZXJlZTxrPih2
YWx1ZSkgaW4KLSAgLy8gYSBtb2NrIGZ1bmN0aW9uIHdob3NlIGstdGggKDAtYmFzZWQpIGFyZ3Vt
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4KLSAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGludGVybmFs
Ojppc19yZWZlcmVuY2U8YXJna190eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBTZXRBcmdSZWZlcmVlX211c3RfYmVfdXNlZF93aXRoX2FfcmVmZXJlbmNlX2FyZ3VtZW50KTsK
LSAgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykgPSB2YWx1ZTsKLX0KLQotLy8gQWN0aW9uIFNldEFy
cmF5QXJndW1lbnQ8az4oZmlyc3QsIGxhc3QpIGNvcGllcyB0aGUgZWxlbWVudHMgaW4KLS8vIHNv
dXJjZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZSBr
LXRoCi0vLyAoMC1iYXNlZCkgYXJndW1lbnQsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBwb2ludGVy
IG9yIGFuCi0vLyBpdGVyYXRvci4gVGhlIGFjdGlvbiBkb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBv
ZiB0aGUgZWxlbWVudHMgaW4gdGhlCi0vLyBzb3VyY2UgcmFuZ2UuCi1BQ1RJT05fVEVNUExBVEUo
U2V0QXJyYXlBcmd1bWVudCwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMo
aW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMl9WQUxVRV9QQVJBTVMoZmlyc3QsIGxhc3Qp
KSB7Ci0gIC8vIFZpc3VhbCBTdHVkaW8gZGVwcmVjYXRlcyA6OnN0ZDo6Y29weSwgc28gd2UgdXNl
IG91ciBvd24gY29weSBpbiB0aGF0IGNhc2UuCi0jaWZkZWYgX01TQ19WRVIKLSAgaW50ZXJuYWw6
OkNvcHlFbGVtZW50cyhmaXJzdCwgbGFzdCwgOjp0ZXN0aW5nOjpnZXQ8az4oYXJncykpOwotI2Vs
c2UKLSAgOjpzdGQ6OmNvcHkoZmlyc3QsIGxhc3QsIDo6dGVzdGluZzo6Z2V0PGs+KGFyZ3MpKTsK
LSNlbmRpZgotfQotCi0vLyBBY3Rpb24gRGVsZXRlQXJnPGs+KCkgZGVsZXRlcyB0aGUgay10aCAo
MC1iYXNlZCkgYXJndW1lbnQgb2YgdGhlIG1vY2sKLS8vIGZ1bmN0aW9uLgotQUNUSU9OX1RFTVBM
QVRFKERlbGV0ZUFyZywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVMoaW50
LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMF9WQUxVRV9QQVJBTVMoKSkgewotICBkZWxldGUg
Ojp0ZXN0aW5nOjpnZXQ8az4oYXJncyk7Ci19Ci0KLS8vIFRoaXMgYWN0aW9uIHJldHVybnMgdGhl
IHZhbHVlIHBvaW50ZWQgdG8gYnkgJ3BvaW50ZXInLgotQUNUSU9OX1AoUmV0dXJuUG9pbnRlZSwg
cG9pbnRlcikgeyByZXR1cm4gKnBvaW50ZXI7IH0KLQotLy8gQWN0aW9uIFRocm93KGV4Y2VwdGlv
bikgY2FuIGJlIHVzZWQgaW4gYSBtb2NrIGZ1bmN0aW9uIG9mIGFueSB0eXBlCi0vLyB0byB0aHJv
dyB0aGUgZ2l2ZW4gZXhjZXB0aW9uLiAgQW55IGNvcHlhYmxlIHZhbHVlIGNhbiBiZSB0aHJvd24u
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gU3VwcHJlc3NlcyB0aGUgJ3VucmVhY2hh
YmxlIGNvZGUnIHdhcm5pbmcgdGhhdCBWQyBnZW5lcmF0ZXMgaW4gb3B0IG1vZGVzLgotIyBpZmRl
ZiBfTVNDX1ZFUgotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhl
IGN1cnJlbnQgd2FybmluZyBzdGF0ZS4KLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwMikg
IC8vIFRlbXBvcmFyaWx5IGRpc2FibGVzIHdhcm5pbmcgNDcwMi4KLSMgZW5kaWYKLUFDVElPTl9Q
KFRocm93LCBleGNlcHRpb24pIHsgdGhyb3cgZXhjZXB0aW9uOyB9Ci0jIGlmZGVmIF9NU0NfVkVS
Ci0jICBwcmFnbWEgd2FybmluZyhwb3ApICAgICAgICAgICAvLyBSZXN0b3JlcyB0aGUgd2Fybmlu
ZyBzdGF0ZS4KLSMgZW5kaWYKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0j
aWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19N
T1JFX0FDVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21v
Y2stbW9yZS1tYXRjaGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1tb3Jl
LW1hdGNoZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYjg5OWY0Mjk3Yi4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svZ21vY2stbW9yZS1t
YXRjaGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogbWFyY3VzLmJvZXJn
ZXJAZ29vZ2xlLmNvbSAoTWFyY3VzIEJvZXJnZXIpCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFt
ZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1w
bGVtZW50cyBzb21lIG1hdGNoZXJzIHRoYXQgZGVwZW5kIG9uIGdtb2NrLWdlbmVyYXRlZC1tYXRj
aGVycy5oLgotLy8KLS8vIE5vdGUgdGhhdCB0ZXN0cyBhcmUgaW1wbGVtZW50ZWQgaW4gZ21vY2st
bWF0Y2hlcnNfdGVzdC5jYyByYXRoZXIgdGhhbgotLy8gZ21vY2stbW9yZS1tYXRjaGVycy10ZXN0
LmNjLgotCi0jaWZuZGVmIEdNT0NLX0dNT0NLX01PUkVfTUFUQ0hFUlNfSF8KLSNkZWZpbmUgR01P
Q0tfR01PQ0tfTU9SRV9NQVRDSEVSU19IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stZ2VuZXJh
dGVkLW1hdGNoZXJzLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRGVmaW5lcyBhIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGFuIGVtcHR5IGNvbnRhaW5lci4gVGhlIGNvbnRhaW5lciBtdXN0
Ci0vLyBzdXBwb3J0IGJvdGggc2l6ZSgpIGFuZCBlbXB0eSgpLCB3aGljaCBhbGwgU1RMLWxpa2Ug
Y29udGFpbmVycyBwcm92aWRlLgotTUFUQ0hFUihJc0VtcHR5LCBuZWdhdGlvbiA/ICJpc24ndCBl
bXB0eSIgOiAiaXMgZW1wdHkiKSB7Ci0gIGlmIChhcmcuZW1wdHkoKSkgewotICAgIHJldHVybiB0
cnVlOwotICB9Ci0gICpyZXN1bHRfbGlzdGVuZXIgPDwgIndob3NlIHNpemUgaXMgIiA8PCBhcmcu
c2l6ZSgpOwotICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0K
LSNlbmRpZiAgLy8gR01PQ0tfR01PQ0tfTU9SRV9NQVRDSEVSU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzlmNzIxMjlkNjVmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
aW5jbHVkZS9nbW9jay9nbW9jay1zcGVjLWJ1aWxkZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODUwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2ds
ZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0v
LyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgT05fQ0FMTCgpIGFuZCBFWFBFQ1RfQ0FMTCgpIG1h
Y3Jvcy4KLS8vCi0vLyBBIHVzZXIgY2FuIHVzZSB0aGUgT05fQ0FMTCgpIG1hY3JvIHRvIHNwZWNp
ZnkgdGhlIGRlZmF1bHQgYWN0aW9uIG9mCi0vLyBhIG1vY2sgbWV0aG9kLiAgVGhlIHN5bnRheCBp
czoKLS8vCi0vLyAgIE9OX0NBTEwobW9ja19vYmplY3QsIE1ldGhvZChhcmd1bWVudC1tYXRjaGVy
cykpCi0vLyAgICAgICAuV2l0aChtdWx0aS1hcmd1bWVudC1tYXRjaGVyKQotLy8gICAgICAgLldp
bGxCeURlZmF1bHQoYWN0aW9uKTsKLS8vCi0vLyAgd2hlcmUgdGhlIC5XaXRoKCkgY2xhdXNlIGlz
IG9wdGlvbmFsLgotLy8KLS8vIEEgdXNlciBjYW4gdXNlIHRoZSBFWFBFQ1RfQ0FMTCgpIG1hY3Jv
IHRvIHNwZWNpZnkgYW4gZXhwZWN0YXRpb24gb24KLS8vIGEgbW9jayBtZXRob2QuICBUaGUgc3lu
dGF4IGlzOgotLy8KLS8vICAgRVhQRUNUX0NBTEwobW9ja19vYmplY3QsIE1ldGhvZChhcmd1bWVu
dC1tYXRjaGVycykpCi0vLyAgICAgICAuV2l0aChtdWx0aS1hcmd1bWVudC1tYXRjaGVycykKLS8v
ICAgICAgIC5UaW1lcyhjYXJkaW5hbGl0eSkKLS8vICAgICAgIC5JblNlcXVlbmNlKHNlcXVlbmNl
cykKLS8vICAgICAgIC5BZnRlcihleHBlY3RhdGlvbnMpCi0vLyAgICAgICAuV2lsbE9uY2UoYWN0
aW9uKQotLy8gICAgICAgLldpbGxSZXBlYXRlZGx5KGFjdGlvbikKLS8vICAgICAgIC5SZXRpcmVz
T25TYXR1cmF0aW9uKCk7Ci0vLwotLy8gd2hlcmUgYWxsIGNsYXVzZXMgYXJlIG9wdGlvbmFsLCBh
bmQgLkluU2VxdWVuY2UoKS8uQWZ0ZXIoKS8KLS8vIC5XaWxsT25jZSgpIGNhbiBhcHBlYXIgYW55
IG51bWJlciBvZiB0aW1lcy4KLQotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX1NQ
RUNfQlVJTERFUlNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19HTU9DS19TUEVDX0JV
SUxERVJTX0hfCi0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHNz
dHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lmIEdURVNU
X0hBU19FWENFUFRJT05TCi0jIGluY2x1ZGUgPHN0ZGV4Y2VwdD4gIC8vIE5PTElOVAotI2VuZGlm
Ci0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgiCi0jaW5jbHVkZSAiZ21vY2svZ21v
Y2stY2FyZGluYWxpdGllcy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1hdGNoZXJzLmgiCi0j
aW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRl
ICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
LQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBBbiBhYnN0cmFjdCBoYW5kbGUgb2YgYW4gZXhw
ZWN0YXRpb24uCi1jbGFzcyBFeHBlY3RhdGlvbjsKLQotLy8gQSBzZXQgb2YgZXhwZWN0YXRpb24g
aGFuZGxlcy4KLWNsYXNzIEV4cGVjdGF0aW9uU2V0OwotCi0vLyBBbnl0aGluZyBpbnNpZGUgdGhl
ICdpbnRlcm5hbCcgbmFtZXNwYWNlIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OCi0vLyBhbmQg
TVVTVCBOT1QgQkUgVVNFRCBJTiBVU0VSIENPREUhISEKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0K
LS8vIEltcGxlbWVudHMgYSBtb2NrIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+IGNs
YXNzIEZ1bmN0aW9uTW9ja2VyOwotCi0vLyBCYXNlIGNsYXNzIGZvciBleHBlY3RhdGlvbnMuCi1j
bGFzcyBFeHBlY3RhdGlvbkJhc2U7Ci0KLS8vIEltcGxlbWVudHMgYW4gZXhwZWN0YXRpb24uCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgRj4gY2xhc3MgVHlwZWRFeHBlY3RhdGlvbjsKLQotLy8gSGVscGVy
IGNsYXNzIGZvciB0ZXN0aW5nIHRoZSBFeHBlY3RhdGlvbiBjbGFzcyB0ZW1wbGF0ZS4KLWNsYXNz
IEV4cGVjdGF0aW9uVGVzdGVyOwotCi0vLyBCYXNlIGNsYXNzIGZvciBmdW5jdGlvbiBtb2NrZXJz
LgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+IGNsYXNzIEZ1bmN0aW9uTW9ja2VyQmFzZTsKLQotLy8g
UHJvdGVjdHMgdGhlIG1vY2sgb2JqZWN0IHJlZ2lzdHJ5IChpbiBjbGFzcyBNb2NrKSwgYWxsIGZ1
bmN0aW9uCi0vLyBtb2NrZXJzLCBhbmQgYWxsIGV4cGVjdGF0aW9ucy4KLS8vCi0vLyBUaGUgcmVh
c29uIHdlIGRvbid0IHVzZSBtb3JlIGZpbmUtZ3JhaW5lZCBwcm90ZWN0aW9uIGlzOiB3aGVuIGEK
LS8vIG1vY2sgZnVuY3Rpb24gRm9vKCkgaXMgY2FsbGVkLCBpdCBuZWVkcyB0byBjb25zdWx0IGl0
cyBleHBlY3RhdGlvbnMKLS8vIHRvIHNlZSB3aGljaCBvbmUgc2hvdWxkIGJlIHBpY2tlZC4gIElm
IGFub3RoZXIgdGhyZWFkIGlzIGFsbG93ZWQgdG8KLS8vIGNhbGwgYSBtb2NrIGZ1bmN0aW9uIChl
aXRoZXIgRm9vKCkgb3IgYSBkaWZmZXJlbnQgb25lKSBhdCB0aGUgc2FtZQotLy8gdGltZSwgaXQg
Y291bGQgYWZmZWN0IHRoZSAicmV0aXJlZCIgYXR0cmlidXRlcyBvZiBGb28oKSdzCi0vLyBleHBl
Y3RhdGlvbnMgd2hlbiBJblNlcXVlbmNlKCkgaXMgdXNlZCwgYW5kIHRodXMgYWZmZWN0IHdoaWNo
Ci0vLyBleHBlY3RhdGlvbiBnZXRzIHBpY2tlZC4gIFRoZXJlZm9yZSwgd2Ugc2VxdWVuY2UgYWxs
IG1vY2sgZnVuY3Rpb24KLS8vIGNhbGxzIHRvIGVuc3VyZSB0aGUgaW50ZWdyaXR5IG9mIHRoZSBt
b2NrIG9iamVjdHMnIHN0YXRlcy4KLUdURVNUX0FQSV8gR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKGdfZ21vY2tfbXV0ZXgpOwotCi0vLyBVbnR5cGVkIGJhc2UgY2xhc3MgZm9yIEFjdGlvblJl
c3VsdEhvbGRlcjxSPi4KLWNsYXNzIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlOwotCi0v
LyBBYnN0cmFjdCBiYXNlIGNsYXNzIG9mIEZ1bmN0aW9uTW9ja2VyQmFzZS4gIFRoaXMgaXMgdGhl
Ci0vLyB0eXBlLWFnbm9zdGljIHBhcnQgb2YgdGhlIGZ1bmN0aW9uIG1vY2tlciBpbnRlcmZhY2Uu
ICBJdHMgcHVyZQotLy8gdmlydHVhbCBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCBieSBGdW5jdGlv
bk1vY2tlckJhc2UuCi1jbGFzcyBHVEVTVF9BUElfIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2Ug
ewotIHB1YmxpYzoKLSAgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSgpOwotICB2aXJ0dWFsIH5V
bnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlKCk7Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCBhbGwgZXhw
ZWN0YXRpb25zIG9uIHRoaXMgbW9jayBmdW5jdGlvbiBoYXZlIGJlZW4KLSAgLy8gc2F0aXNmaWVk
LiAgUmVwb3J0cyBvbmUgb3IgbW9yZSBHb29nbGUgVGVzdCBub24tZmF0YWwgZmFpbHVyZXMKLSAg
Ly8gYW5kIHJldHVybnMgZmFsc2UgaWYgbm90LgotICBib29sIFZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zTG9ja2VkKCkKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dt
b2NrX211dGV4KTsKLQotICAvLyBDbGVhcnMgdGhlIE9OX0NBTEwoKXMgc2V0IG9uIHRoaXMgbW9j
ayBmdW5jdGlvbi4KLSAgdmlydHVhbCB2b2lkIENsZWFyRGVmYXVsdEFjdGlvbnNMb2NrZWQoKQot
ICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpID0gMDsK
LQotICAvLyBJbiBhbGwgb2YgdGhlIGZvbGxvd2luZyBVbnR5cGVkKiBmdW5jdGlvbnMsIGl0J3Mg
dGhlIGNhbGxlcidzCi0gIC8vIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGUgY29ycmVj
dG5lc3Mgb2YgdGhlIGFyZ3VtZW50cycKLSAgLy8gdHlwZXMuCi0KLSAgLy8gUGVyZm9ybXMgdGhl
IGRlZmF1bHQgYWN0aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJucwotICAv
LyB0aGUgYWN0aW9uJ3MgcmVzdWx0LiAgVGhlIGNhbGwgZGVzY3JpcHRpb24gc3RyaW5nIHdpbGwg
YmUgdXNlZCBpbgotICAvLyB0aGUgZXJyb3IgbWVzc2FnZSB0byBkZXNjcmliZSB0aGUgY2FsbCBp
biB0aGUgY2FzZSB0aGUgZGVmYXVsdAotICAvLyBhY3Rpb24gZmFpbHMuCi0gIC8vIEwgPSAqCi0g
IHZpcnR1YWwgVW50eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UqIFVudHlwZWRQZXJmb3JtRGVm
YXVsdEFjdGlvbigKLSAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncywgY29uc3Qgc3RkOjpz
dHJpbmcmIGNhbGxfZGVzY3JpcHRpb24pIGNvbnN0ID0gMDsKLQotICAvLyBQZXJmb3JtcyB0aGUg
Z2l2ZW4gYWN0aW9uIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJucwotICAvLyB0
aGUgYWN0aW9uJ3MgcmVzdWx0LgotICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25S
ZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkUGVyZm9ybUFjdGlvbigKLSAgICAgIGNvbnN0IHZvaWQq
IHVudHlwZWRfYWN0aW9uLAotICAgICAgY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzKSBjb25zdCA9
IDA7Ci0KLSAgLy8gV3JpdGVzIGEgbWVzc2FnZSB0aGF0IHRoZSBjYWxsIGlzIHVuaW50ZXJlc3Rp
bmcgKGkuZS4gbmVpdGhlcgotICAvLyBleHBsaWNpdGx5IGV4cGVjdGVkIG5vciBleHBsaWNpdGx5
IHVuZXhwZWN0ZWQpIHRvIHRoZSBnaXZlbgotICAvLyBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQg
VW50eXBlZERlc2NyaWJlVW5pbnRlcmVzdGluZ0NhbGwoCi0gICAgICBjb25zdCB2b2lkKiB1bnR5
cGVkX2FyZ3MsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0Ci0gICAgICAgICAgR1RF
U1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgPSAwOwotCi0gIC8vIFJldHVybnMgdGhl
IGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gYXJndW1lbnRzCi0g
IC8vIChvciBOVUxMIGlzIHRoZXJlJ3Mgbm8gbWF0Y2gpOyB3aGVuIGEgbWF0Y2ggaXMgZm91bmQs
Ci0gIC8vIHVudHlwZWRfYWN0aW9uIGlzIHNldCB0byBwb2ludCB0byB0aGUgYWN0aW9uIHRoYXQg
c2hvdWxkIGJlCi0gIC8vIHBlcmZvcm1lZCAob3IgTlVMTCBpZiB0aGUgYWN0aW9uIGlzICJkbyBk
ZWZhdWx0IiksIGFuZAotICAvLyBpc19leGNlc3NpdmUgaXMgbW9kaWZpZWQgdG8gaW5kaWNhdGUg
d2hldGhlciB0aGUgY2FsbCBleGNlZWRzIHRoZQotICAvLyBleHBlY3RlZCBudW1iZXIuCi0gIHZp
cnR1YWwgY29uc3QgRXhwZWN0YXRpb25CYXNlKiBVbnR5cGVkRmluZE1hdGNoaW5nRXhwZWN0YXRp
b24oCi0gICAgICBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MsCi0gICAgICBjb25zdCB2b2lkKiog
dW50eXBlZF9hY3Rpb24sIGJvb2wqIGlzX2V4Y2Vzc2l2ZSwKLSAgICAgIDo6c3RkOjpvc3RyZWFt
KiB3aGF0LCA6OnN0ZDo6b3N0cmVhbSogd2h5KQotICAgICAgICAgIEdURVNUX0xPQ0tfRVhDTFVE
RURfKGdfZ21vY2tfbXV0ZXgpID0gMDsKLQotICAvLyBQcmludHMgdGhlIGdpdmVuIGZ1bmN0aW9u
IGFyZ3VtZW50cyB0byB0aGUgb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIFVudHlwZWRQcmludEFy
Z3MoY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0ID0gMDsKLQotICAvLyBTZXRzIHRoZSBtb2Nr
IG9iamVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8sIGFuZCByZWdpc3RlcnMKLSAgLy8g
dGhpcyBpbmZvcm1hdGlvbiBpbiB0aGUgZ2xvYmFsIG1vY2sgcmVnaXN0cnkuICBXaWxsIGJlIGNh
bGxlZAotICAvLyB3aGVuZXZlciBhbiBFWFBFQ1RfQ0FMTCgpIG9yIE9OX0NBTEwoKSBpcyBleGVj
dXRlZCBvbiB0aGlzIG1vY2sKLSAgLy8gbWV0aG9kLgotICAvLyBUT0RPKHdhbkBnb29nbGUuY29t
KTogcmVuYW1lIHRvIFNldEFuZFJlZ2lzdGVyT3duZXIoKS4KLSAgdm9pZCBSZWdpc3Rlck93bmVy
KGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9j
a19tdXRleCk7Ci0KLSAgLy8gU2V0cyB0aGUgbW9jayBvYmplY3QgdGhpcyBtb2NrIG1ldGhvZCBi
ZWxvbmdzIHRvLCBhbmQgc2V0cyB0aGUKLSAgLy8gbmFtZSBvZiB0aGUgbW9jayBmdW5jdGlvbi4g
IFdpbGwgYmUgY2FsbGVkIHVwb24gZWFjaCBpbnZvY2F0aW9uCi0gIC8vIG9mIHRoaXMgbW9jayBm
dW5jdGlvbi4KLSAgdm9pZCBTZXRPd25lckFuZE5hbWUoY29uc3Qgdm9pZCogbW9ja19vYmosIGNv
bnN0IGNoYXIqIG5hbWUpCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4
KTsKLQotICAvLyBSZXR1cm5zIHRoZSBtb2NrIG9iamVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9u
Z3MgdG8uICBNdXN0IGJlCi0gIC8vIGNhbGxlZCBhZnRlciBSZWdpc3Rlck93bmVyKCkgb3IgU2V0
T3duZXJBbmROYW1lKCkgaGFzIGJlZW4KLSAgLy8gY2FsbGVkLgotICBjb25zdCB2b2lkKiBNb2Nr
T2JqZWN0KCkgY29uc3QKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgp
OwotCi0gIC8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBtb2NrIG1ldGhvZC4gIE11c3QgYmUg
Y2FsbGVkIGFmdGVyCi0gIC8vIFNldE93bmVyQW5kTmFtZSgpIGhhcyBiZWVuIGNhbGxlZC4KLSAg
Y29uc3QgY2hhciogTmFtZSgpIGNvbnN0Ci0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dt
b2NrX211dGV4KTsKLQotICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhpcyBt
b2NrIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuCi0gIC8vIGFyZ3VtZW50cy4gIFRoaXMgZnVuY3Rp
b24gY2FuIGJlIHNhZmVseSBjYWxsZWQgZnJvbSBtdWx0aXBsZQotICAvLyB0aHJlYWRzIGNvbmN1
cnJlbnRseS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZQotICAv
LyByZXN1bHQuCi0gIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkSW52b2tl
V2l0aCgKLSAgICAgIGNvbnN0IHZvaWQqIHVudHlwZWRfYXJncykKLSAgICAgICAgICBHVEVTVF9M
T0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KTsKLQotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiBz
dGQ6OnZlY3Rvcjxjb25zdCB2b2lkKj4gVW50eXBlZE9uQ2FsbFNwZWNzOwotCi0gIHR5cGVkZWYg
c3RkOjp2ZWN0b3I8aW50ZXJuYWw6OmxpbmtlZF9wdHI8RXhwZWN0YXRpb25CYXNlPiA+Ci0gIFVu
dHlwZWRFeHBlY3RhdGlvbnM7Ci0KLSAgLy8gUmV0dXJucyBhbiBFeHBlY3RhdGlvbiBvYmplY3Qg
dGhhdCByZWZlcmVuY2VzIGFuZCBjby1vd25zIGV4cCwKLSAgLy8gd2hpY2ggbXVzdCBiZSBhbiBl
eHBlY3RhdGlvbiBvbiB0aGlzIG1vY2sgZnVuY3Rpb24uCi0gIEV4cGVjdGF0aW9uIEdldEhhbmRs
ZU9mKEV4cGVjdGF0aW9uQmFzZSogZXhwKTsKLQotICAvLyBBZGRyZXNzIG9mIHRoZSBtb2NrIG9i
amVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8uICBPbmx5Ci0gIC8vIHZhbGlkIGFmdGVy
IHRoaXMgbW9jayBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIG9yCi0gIC8vIE9OX0NBTEwvRVhQRUNU
X0NBTEwgaGFzIGJlZW4gaW52b2tlZCBvbiBpdC4KLSAgY29uc3Qgdm9pZCogbW9ja19vYmpfOyAg
Ly8gUHJvdGVjdGVkIGJ5IGdfZ21vY2tfbXV0ZXguCi0KLSAgLy8gTmFtZSBvZiB0aGUgZnVuY3Rp
b24gYmVpbmcgbW9ja2VkLiAgT25seSB2YWxpZCBhZnRlciB0aGlzIG1vY2sKLSAgLy8gbWV0aG9k
IGhhcyBiZWVuIGNhbGxlZC4KLSAgY29uc3QgY2hhciogbmFtZV87ICAvLyBQcm90ZWN0ZWQgYnkg
Z19nbW9ja19tdXRleC4KLQotICAvLyBBbGwgZGVmYXVsdCBhY3Rpb24gc3BlY3MgZm9yIHRoaXMg
ZnVuY3Rpb24gbW9ja2VyLgotICBVbnR5cGVkT25DYWxsU3BlY3MgdW50eXBlZF9vbl9jYWxsX3Nw
ZWNzXzsKLQotICAvLyBBbGwgZXhwZWN0YXRpb25zIGZvciB0aGlzIGZ1bmN0aW9uIG1vY2tlci4K
LSAgVW50eXBlZEV4cGVjdGF0aW9ucyB1bnR5cGVkX2V4cGVjdGF0aW9uc187Ci19OyAgLy8gY2xh
c3MgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZQotCi0vLyBVbnR5cGVkIGJhc2UgY2xhc3MgZm9y
IE9uQ2FsbFNwZWM8Rj4uCi1jbGFzcyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UgewotIHB1YmxpYzoK
LSAgLy8gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBPTl9DQUxMKCkgc3Rh
dGVtZW50LgotICBVbnR5cGVkT25DYWxsU3BlY0Jhc2UoY29uc3QgY2hhciogYV9maWxlLCBpbnQg
YV9saW5lKQotICAgICAgOiBmaWxlXyhhX2ZpbGUpLCBsaW5lXyhhX2xpbmUpLCBsYXN0X2NsYXVz
ZV8oa05vbmUpIHt9Ci0KLSAgLy8gV2hlcmUgaW4gdGhlIHNvdXJjZSBmaWxlIHdhcyB0aGUgZGVm
YXVsdCBhY3Rpb24gc3BlYyBkZWZpbmVkPwotICBjb25zdCBjaGFyKiBmaWxlKCkgY29uc3QgeyBy
ZXR1cm4gZmlsZV87IH0KLSAgaW50IGxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lXzsgfQotCi0g
cHJvdGVjdGVkOgotICAvLyBHaXZlcyBlYWNoIGNsYXVzZSBpbiB0aGUgT05fQ0FMTCgpIHN0YXRl
bWVudCBhIG5hbWUuCi0gIGVudW0gQ2xhdXNlIHsKLSAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBv
cmRlciBvZiB0aGUgZW51bSBtZW1iZXJzISAgVGhlIHJ1bi10aW1lCi0gICAgLy8gc3ludGF4IGNo
ZWNraW5nIHJlbGllcyBvbiBpdC4KLSAgICBrTm9uZSwKLSAgICBrV2l0aCwKLSAgICBrV2lsbEJ5
RGVmYXVsdAotICB9OwotCi0gIC8vIEFzc2VydHMgdGhhdCB0aGUgT05fQ0FMTCgpIHN0YXRlbWVu
dCBoYXMgYSBjZXJ0YWluIHByb3BlcnR5LgotICB2b2lkIEFzc2VydFNwZWNQcm9wZXJ0eShib29s
IHByb3BlcnR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
ZmFpbHVyZV9tZXNzYWdlKSBjb25zdCB7Ci0gICAgQXNzZXJ0KHByb3BlcnR5LCBmaWxlXywgbGlu
ZV8sIGZhaWx1cmVfbWVzc2FnZSk7Ci0gIH0KLQotICAvLyBFeHBlY3RzIHRoYXQgdGhlIE9OX0NB
TEwoKSBzdGF0ZW1lbnQgaGFzIGEgY2VydGFpbiBwcm9wZXJ0eS4KLSAgdm9pZCBFeHBlY3RTcGVj
UHJvcGVydHkoYm9vbCBwcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIGZhaWx1cmVfbWVzc2FnZSkgY29uc3QgewotICAgIEV4cGVjdChwcm9wZXJ0
eSwgZmlsZV8sIGxpbmVfLCBmYWlsdXJlX21lc3NhZ2UpOwotICB9Ci0KLSAgY29uc3QgY2hhciog
ZmlsZV87Ci0gIGludCBsaW5lXzsKLQotICAvLyBUaGUgbGFzdCBjbGF1c2UgaW4gdGhlIE9OX0NB
TEwoKSBzdGF0ZW1lbnQgYXMgc2VlbiBzbyBmYXIuCi0gIC8vIEluaXRpYWxseSBrTm9uZSBhbmQg
Y2hhbmdlcyBhcyB0aGUgc3RhdGVtZW50IGlzIHBhcnNlZC4KLSAgQ2xhdXNlIGxhc3RfY2xhdXNl
XzsKLX07ICAvLyBjbGFzcyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UKLQotLy8gVGhpcyB0ZW1wbGF0
ZSBjbGFzcyBpbXBsZW1lbnRzIGFuIE9OX0NBTEwgc3BlYy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBG
PgotY2xhc3MgT25DYWxsU3BlYyA6IHB1YmxpYyBVbnR5cGVkT25DYWxsU3BlY0Jhc2UgewotIHB1
YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBBcmd1
bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudE1hdGNo
ZXJUdXBsZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLQotICAvLyBDb25zdHJ1Y3RzIGFuIE9uQ2Fs
bFNwZWMgb2JqZWN0IGZyb20gdGhlIGluZm9ybWF0aW9uIGluc2lkZQotICAvLyB0aGUgcGFyZW50
aGVzaXMgb2YgYW4gT05fQ0FMTCgpIHN0YXRlbWVudC4KLSAgT25DYWxsU3BlYyhjb25zdCBjaGFy
KiBhX2ZpbGUsIGludCBhX2xpbmUsCi0gICAgICAgICAgICAgY29uc3QgQXJndW1lbnRNYXRjaGVy
VHVwbGUmIG1hdGNoZXJzKQotICAgICAgOiBVbnR5cGVkT25DYWxsU3BlY0Jhc2UoYV9maWxlLCBh
X2xpbmUpLAotICAgICAgICBtYXRjaGVyc18obWF0Y2hlcnMpLAotICAgICAgICAvLyBCeSBkZWZh
dWx0LCBleHRyYV9tYXRjaGVyXyBzaG91bGQgbWF0Y2ggYW55dGhpbmcuICBIb3dldmVyLAotICAg
ICAgICAvLyB3ZSBjYW5ub3QgaW5pdGlhbGl6ZSBpdCB3aXRoIF8gYXMgdGhhdCB0cmlnZ2VycyBh
IGNvbXBpbGVyCi0gICAgICAgIC8vIGJ1ZyBpbiBTeW1iaWFuJ3MgQysrIGNvbXBpbGVyIChjYW5u
b3QgZGVjaWRlIGJldHdlZW4gdHdvCi0gICAgICAgIC8vIG92ZXJsb2FkZWQgY29uc3RydWN0b3Jz
IG9mIE1hdGNoZXI8Y29uc3QgQXJndW1lbnRUdXBsZSY+KS4KLSAgICAgICAgZXh0cmFfbWF0Y2hl
cl8oQTxjb25zdCBBcmd1bWVudFR1cGxlJj4oKSkgewotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0
aGUgLldpdGgoKSBjbGF1c2UuCi0gIE9uQ2FsbFNwZWMmIFdpdGgoY29uc3QgTWF0Y2hlcjxjb25z
dCBBcmd1bWVudFR1cGxlJj4mIG0pIHsKLSAgICAvLyBNYWtlcyBzdXJlIHRoaXMgaXMgY2FsbGVk
IGF0IG1vc3Qgb25jZS4KLSAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDwga1dp
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICIuV2l0aCgpIGNhbm5vdCBhcHBlYXIgIgotICAg
ICAgICAgICAgICAgICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gT05fQ0FMTCgpLiIpOwot
ICAgIGxhc3RfY2xhdXNlXyA9IGtXaXRoOwotCi0gICAgZXh0cmFfbWF0Y2hlcl8gPSBtOwotICAg
IHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIEltcGxlbWVudHMgdGhlIC5XaWxsQnlEZWZhdWx0
KCkgY2xhdXNlLgotICBPbkNhbGxTcGVjJiBXaWxsQnlEZWZhdWx0KGNvbnN0IEFjdGlvbjxGPiYg
YWN0aW9uKSB7Ci0gICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtXaWxsQnlE
ZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAiLldpbGxCeURlZmF1bHQoKSBtdXN0IGFw
cGVhciAiCi0gICAgICAgICAgICAgICAgICAgICAgICJleGFjdGx5IG9uY2UgaW4gYW4gT05fQ0FM
TCgpLiIpOwotICAgIGxhc3RfY2xhdXNlXyA9IGtXaWxsQnlEZWZhdWx0OwotCi0gICAgRXhwZWN0
U3BlY1Byb3BlcnR5KCFhY3Rpb24uSXNEb0RlZmF1bHQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIkRvRGVmYXVsdCgpIGNhbm5vdCBiZSB1c2VkIGluIE9OX0NBTEwoKS4iKTsKLSAgICBhY3Rp
b25fID0gYWN0aW9uOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIGdpdmVuIGFyZ3VtZW50cyBtYXRjaCB0aGUgbWF0Y2hlcnMuCi0gIGJvb2wgTWF0
Y2hlcyhjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdCB7Ci0gICAgcmV0dXJuIFR1cGxl
TWF0Y2hlcyhtYXRjaGVyc18sIGFyZ3MpICYmIGV4dHJhX21hdGNoZXJfLk1hdGNoZXMoYXJncyk7
Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgot
ICBjb25zdCBBY3Rpb248Rj4mIEdldEFjdGlvbigpIGNvbnN0IHsKLSAgICBBc3NlcnRTcGVjUHJv
cGVydHkobGFzdF9jbGF1c2VfID09IGtXaWxsQnlEZWZhdWx0LAotICAgICAgICAgICAgICAgICAg
ICAgICAiLldpbGxCeURlZmF1bHQoKSBtdXN0IGFwcGVhciBleGFjdGx5ICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIm9uY2UgaW4gYW4gT05fQ0FMTCgpLiIpOwotICAgIHJldHVybiBhY3Rpb25f
OwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBUaGUgaW5mb3JtYXRpb24gaW4gc3RhdGVtZW50Ci0g
IC8vCi0gIC8vICAgT05fQ0FMTChtb2NrX29iamVjdCwgTWV0aG9kKG1hdGNoZXJzKSkKLSAgLy8g
ICAgICAgLldpdGgobXVsdGktYXJndW1lbnQtbWF0Y2hlcikKLSAgLy8gICAgICAgLldpbGxCeURl
ZmF1bHQoYWN0aW9uKTsKLSAgLy8KLSAgLy8gaXMgcmVjb3JkZWQgaW4gdGhlIGRhdGEgbWVtYmVy
cyBsaWtlIHRoaXM6Ci0gIC8vCi0gIC8vICAgc291cmNlIGZpbGUgdGhhdCBjb250YWlucyB0aGUg
c3RhdGVtZW50ID0+IGZpbGVfCi0gIC8vICAgbGluZSBudW1iZXIgb2YgdGhlIHN0YXRlbWVudCAg
ICAgICAgICAgID0+IGxpbmVfCi0gIC8vICAgbWF0Y2hlcnMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0+IG1hdGNoZXJzXwotICAvLyAgIG11bHRpLWFyZ3VtZW50LW1hdGNoZXIgICAg
ICAgICAgICAgICAgICA9PiBleHRyYV9tYXRjaGVyXwotICAvLyAgIGFjdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9PiBhY3Rpb25fCi0gIEFyZ3VtZW50TWF0Y2hlclR1cGxl
IG1hdGNoZXJzXzsKLSAgTWF0Y2hlcjxjb25zdCBBcmd1bWVudFR1cGxlJj4gZXh0cmFfbWF0Y2hl
cl87Ci0gIEFjdGlvbjxGPiBhY3Rpb25fOwotfTsgIC8vIGNsYXNzIE9uQ2FsbFNwZWMKLQotLy8g
UG9zc2libGUgcmVhY3Rpb25zIG9uIHVuaW50ZXJlc3RpbmcgY2FsbHMuCi1lbnVtIENhbGxSZWFj
dGlvbiB7Ci0gIGtBbGxvdywKLSAga1dhcm4sCi0gIGtGYWlsLAotICBrRGVmYXVsdCA9IGtXYXJu
ICAvLyBCeSBkZWZhdWx0LCB3YXJuIGFib3V0IHVuaW50ZXJlc3RpbmcgY2FsbHMuCi19OwotCi19
ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gVXRpbGl0aWVzIGZvciBtYW5pcHVsYXRpbmcg
bW9jayBvYmplY3RzLgotY2xhc3MgR1RFU1RfQVBJXyBNb2NrIHsKLSBwdWJsaWM6Ci0gIC8vIFRo
ZSBmb2xsb3dpbmcgcHVibGljIG1ldGhvZHMgY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkuCi0K
LSAgLy8gVGVsbHMgR29vZ2xlIE1vY2sgdG8gaWdub3JlIG1vY2tfb2JqIHdoZW4gY2hlY2tpbmcg
Zm9yIGxlYWtlZAotICAvLyBtb2NrIG9iamVjdHMuCi0gIHN0YXRpYyB2b2lkIEFsbG93TGVhayhj
b25zdCB2b2lkKiBtb2NrX29iaikKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFs
OjpnX2dtb2NrX211dGV4KTsKLQotICAvLyBWZXJpZmllcyBhbmQgY2xlYXJzIGFsbCBleHBlY3Rh
dGlvbnMgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICAvLyBJZiB0aGUgZXhwZWN0YXRpb25z
IGFyZW4ndCBzYXRpc2ZpZWQsIGdlbmVyYXRlcyBvbmUgb3IgbW9yZQotICAvLyBHb29nbGUgVGVz
dCBub24tZmF0YWwgZmFpbHVyZXMgYW5kIHJldHVybnMgZmFsc2UuCi0gIHN0YXRpYyBib29sIFZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfTE9D
S19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFZlcmlmaWVzIGFs
bCBleHBlY3RhdGlvbnMgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0IGFuZCBjbGVhcnMgaXRzCi0g
IC8vIGRlZmF1bHQgYWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zLiAgUmV0dXJucyB0cnVlIGlmZiB0
aGUKLSAgLy8gdmVyaWZpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLgotICBzdGF0aWMgYm9vbCBWZXJp
ZnlBbmRDbGVhcih2b2lkKiBtb2NrX29iaikKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGlu
dGVybmFsOjpnX2dtb2NrX211dGV4KTsKLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTsKLQotICAvLyBOZWVkZWQgZm9yIGEgZnVu
Y3Rpb24gbW9ja2VyIHRvIHJlZ2lzdGVyIGl0c2VsZiAoc28gdGhhdCB3ZSBrbm93Ci0gIC8vIGhv
dyB0byBjbGVhciBhIG1vY2sgb2JqZWN0KS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIGZy
aWVuZCBjbGFzcyBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBNPgotICBmcmllbmQgY2xhc3MgTmljZU1vY2s7Ci0KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIE0+Ci0gIGZyaWVuZCBjbGFzcyBOYWdneU1vY2s7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IE0+Ci0gIGZyaWVuZCBjbGFzcyBTdHJpY3RNb2NrOwotCi0gIC8vIFRlbGxzIEdvb2dsZSBNb2Nr
IHRvIGFsbG93IHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gdGhlIGdpdmVuIG1vY2sKLSAgLy8gb2Jq
ZWN0LgotICBzdGF0aWMgdm9pZCBBbGxvd1VuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBt
b2NrX29iaikKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211
dGV4KTsKLQotICAvLyBUZWxscyBHb29nbGUgTW9jayB0byB3YXJuIHRoZSB1c2VyIGFib3V0IHVu
aW50ZXJlc3RpbmcgY2FsbHMgb24KLSAgLy8gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0
aWMgdm9pZCBXYXJuVW5pbnRlcmVzdGluZ0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAg
ICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8v
IFRlbGxzIEdvb2dsZSBNb2NrIHRvIGZhaWwgdW5pbnRlcmVzdGluZyBjYWxscyBvbiB0aGUgZ2l2
ZW4gbW9jawotICAvLyBvYmplY3QuCi0gIHN0YXRpYyB2b2lkIEZhaWxVbmludGVyZXN0aW5nQ2Fs
bHMoY29uc3Qgdm9pZCogbW9ja19vYmopCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRl
cm5hbDo6Z19nbW9ja19tdXRleCk7Ci0KLSAgLy8gVGVsbHMgR29vZ2xlIE1vY2sgdGhlIGdpdmVu
IG1vY2sgb2JqZWN0IGlzIGJlaW5nIGRlc3Ryb3llZCBhbmQKLSAgLy8gaXRzIGVudHJ5IGluIHRo
ZSBjYWxsLXJlYWN0aW9uIHRhYmxlIHNob3VsZCBiZSByZW1vdmVkLgotICBzdGF0aWMgdm9pZCBV
bnJlZ2lzdGVyQ2FsbFJlYWN0aW9uKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFJldHVybnMg
dGhlIHJlYWN0aW9uIEdvb2dsZSBNb2NrIHdpbGwgaGF2ZSBvbiB1bmludGVyZXN0aW5nIGNhbGxz
Ci0gIC8vIG1hZGUgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0aWMgaW50ZXJuYWw6
OkNhbGxSZWFjdGlvbiBHZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGluZ0NhbGxzKAotICAgICAgY29u
c3Qgdm9pZCogbW9ja19vYmopCi0gICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJu
YWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9u
cyBvbiB0aGUgZ2l2ZW4gbW9jayBvYmplY3QgaGF2ZSBiZWVuCi0gIC8vIHNhdGlzZmllZC4gIFJl
cG9ydHMgb25lIG9yIG1vcmUgR29vZ2xlIFRlc3Qgbm9uLWZhdGFsIGZhaWx1cmVzCi0gIC8vIGFu
ZCByZXR1cm5zIGZhbHNlIGlmIG5vdC4KLSAgc3RhdGljIGJvb2wgVmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnNMb2NrZWQodm9pZCogbW9ja19vYmopCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9D
S19SRVFVSVJFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIENsZWFycyBhbGwg
T05fQ0FMTCgpcyBzZXQgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICBzdGF0aWMgdm9pZCBD
bGVhckRlZmF1bHRBY3Rpb25zTG9ja2VkKHZvaWQqIG1vY2tfb2JqKQotICAgICAgR1RFU1RfRVhD
TFVTSVZFX0xPQ0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLQotICAvLyBS
ZWdpc3RlcnMgYSBtb2NrIG9iamVjdCBhbmQgYSBtb2NrIG1ldGhvZCBpdCBvd25zLgotICBzdGF0
aWMgdm9pZCBSZWdpc3RlcigKLSAgICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqLAotICAgICAgaW50
ZXJuYWw6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UqIG1vY2tlcikKLSAgICAgICAgICBHVEVT
VF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7Ci0KLSAgLy8gVGVsbHMg
R29vZ2xlIE1vY2sgd2hlcmUgaW4gdGhlIHNvdXJjZSBjb2RlIG1vY2tfb2JqIGlzIHVzZWQgaW4g
YW4KLSAgLy8gT05fQ0FMTCBvciBFWFBFQ1RfQ0FMTC4gIEluIGNhc2UgbW9ja19vYmogaXMgbGVh
a2VkLCB0aGlzCi0gIC8vIGluZm9ybWF0aW9uIGhlbHBzIHRoZSB1c2VyIGlkZW50aWZ5IHdoaWNo
IG9iamVjdCBpdCBpcy4KLSAgc3RhdGljIHZvaWQgUmVnaXN0ZXJVc2VCeU9uQ2FsbE9yRXhwZWN0
Q2FsbCgKLSAgICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSkKLSAgICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19t
dXRleCk7Ci0KLSAgLy8gVW5yZWdpc3RlcnMgYSBtb2NrIG1ldGhvZDsgcmVtb3ZlcyB0aGUgb3du
aW5nIG1vY2sgb2JqZWN0IGZyb20KLSAgLy8gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGxhc3QgbW9j
ayBtZXRob2QgYXNzb2NpYXRlZCB3aXRoIGl0IGhhcwotICAvLyBiZWVuIHVucmVnaXN0ZXJlZC4g
IFRoaXMgaXMgY2FsbGVkIG9ubHkgaW4gdGhlIGRlc3RydWN0b3Igb2YKLSAgLy8gRnVuY3Rpb25N
b2NrZXJCYXNlLgotICBzdGF0aWMgdm9pZCBVbnJlZ2lzdGVyTG9ja2VkKGludGVybmFsOjpVbnR5
cGVkRnVuY3Rpb25Nb2NrZXJCYXNlKiBtb2NrZXIpCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9D
S19SRVFVSVJFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotfTsgIC8vIGNsYXNzIE1vY2sK
LQotLy8gQW4gYWJzdHJhY3QgaGFuZGxlIG9mIGFuIGV4cGVjdGF0aW9uLiAgVXNlZnVsIGluIHRo
ZSAuQWZ0ZXIoKQotLy8gY2xhdXNlIG9mIEVYUEVDVF9DQUxMKCkgZm9yIHNldHRpbmcgdGhlIChw
YXJ0aWFsKSBvcmRlciBvZgotLy8gZXhwZWN0YXRpb25zLiAgVGhlIHN5bnRheDoKLS8vCi0vLyAg
IEV4cGVjdGF0aW9uIGUxID0gRVhQRUNUX0NBTEwoLi4uKS4uLjsKLS8vICAgRVhQRUNUX0NBTEwo
Li4uKS5BZnRlcihlMSkuLi47Ci0vLwotLy8gc2V0cyB0d28gZXhwZWN0YXRpb25zIHdoZXJlIHRo
ZSBsYXR0ZXIgY2FuIG9ubHkgYmUgbWF0Y2hlZCBhZnRlcgotLy8gdGhlIGZvcm1lciBoYXMgYmVl
biBzYXRpc2ZpZWQuCi0vLwotLy8gTm90ZXM6Ci0vLyAgIC0gVGhpcyBjbGFzcyBpcyBjb3B5YWJs
ZSBhbmQgaGFzIHZhbHVlIHNlbWFudGljcy4KLS8vICAgLSBDb25zdG5lc3MgaXMgc2hhbGxvdzog
YSBjb25zdCBFeHBlY3RhdGlvbiBvYmplY3QgaXRzZWxmIGNhbm5vdAotLy8gICAgIGJlIG1vZGlm
aWVkLCBidXQgdGhlIG11dGFibGUgbWV0aG9kcyBvZiB0aGUgRXhwZWN0YXRpb25CYXNlCi0vLyAg
ICAgb2JqZWN0IGl0IHJlZmVyZW5jZXMgY2FuIGJlIGNhbGxlZCB2aWEgZXhwZWN0YXRpb25fYmFz
ZSgpLgotLy8gICAtIFRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IgYXJlIGRlZmluZWQg
b3V0LW9mLWxpbmUgYmVjYXVzZQotLy8gICAgIHRoZSBTeW1iaWFuIFdJTlNDVyBjb21waWxlciB3
YW50cyB0byBvdGhlcndpc2UgaW5zdGFudGlhdGUgdGhlbQotLy8gICAgIHdoZW4gaXQgc2VlcyB0
aGlzIGNsYXNzIGRlZmluaXRpb24sIGF0IHdoaWNoIHBvaW50IGl0IGRvZXNuJ3QgaGF2ZQotLy8g
ICAgIEV4cGVjdGF0aW9uQmFzZSBhdmFpbGFibGUgeWV0LCBsZWFkaW5nIHRvIGluY29ycmVjdCBk
ZXN0cnVjdGlvbgotLy8gICAgIGluIHRoZSBsaW5rZWRfcHRyIChvciBjb21waWxhdGlvbiBlcnJv
cnMgaWYgdXNpbmcgYSBjaGVja2luZwotLy8gICAgIGxpbmtlZF9wdHIpLgotY2xhc3MgR1RFU1Rf
QVBJXyBFeHBlY3RhdGlvbiB7Ci0gcHVibGljOgotICAvLyBDb25zdHJ1Y3RzIGEgbnVsbCBvYmpl
Y3QgdGhhdCBkb2Vzbid0IHJlZmVyZW5jZSBhbnkgZXhwZWN0YXRpb24uCi0gIEV4cGVjdGF0aW9u
KCk7Ci0KLSAgfkV4cGVjdGF0aW9uKCk7Ci0KLSAgLy8gVGhpcyBzaW5nbGUtYXJndW1lbnQgY3Rv
ciBtdXN0IG5vdCBiZSBleHBsaWNpdCwgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUKLSAgLy8gICBF
eHBlY3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoLi4uKTsKLSAgLy8gc3ludGF4LgotICAvLwotICAv
LyBBIFR5cGVkRXhwZWN0YXRpb24gb2JqZWN0IHN0b3JlcyBpdHMgcHJlLXJlcXVpc2l0ZXMgYXMK
LSAgLy8gRXhwZWN0YXRpb24gb2JqZWN0cywgYW5kIG5lZWRzIHRvIGNhbGwgdGhlIG5vbi1jb25z
dCBSZXRpcmUoKQotICAvLyBtZXRob2Qgb24gdGhlIEV4cGVjdGF0aW9uQmFzZSBvYmplY3RzIHRo
ZXkgcmVmZXJlbmNlLiAgVGhlcmVmb3JlCi0gIC8vIEV4cGVjdGF0aW9uIG11c3QgcmVjZWl2ZSBh
ICpub24tY29uc3QqIHJlZmVyZW5jZSB0byB0aGUKLSAgLy8gRXhwZWN0YXRpb25CYXNlIG9iamVj
dC4KLSAgRXhwZWN0YXRpb24oaW50ZXJuYWw6OkV4cGVjdGF0aW9uQmFzZSYgZXhwKTsgIC8vIE5P
TElOVAotCi0gIC8vIFRoZSBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBvcGVyYXRv
cj0gd29yayBleGFjdGx5IGFzCi0gIC8vIGludGVuZGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRl
ZmluZSBvdXIgb3duLgotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgcmhzIHJlZmVyZW5jZXMgdGhl
IHNhbWUgZXhwZWN0YXRpb24gYXMgdGhpcyBvYmplY3QgZG9lcy4KLSAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV4cGVjdGF0aW9uJiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gZXhwZWN0YXRpb25f
YmFzZV8gPT0gcmhzLmV4cGVjdGF0aW9uX2Jhc2VfOwotICB9Ci0KLSAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEV4cGVjdGF0aW9uJiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsg
fQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIEV4cGVjdGF0aW9uU2V0OwotICBmcmllbmQg
Y2xhc3MgU2VxdWVuY2U7Ci0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OmludGVybmFsOjpFeHBl
Y3RhdGlvbkJhc2U7Ci0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbnR5cGVk
RnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGPgotICBmcmllbmQg
Y2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJCYXNlOwotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBGPgotICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlw
ZWRFeHBlY3RhdGlvbjsKLQotICAvLyBUaGlzIGNvbXBhcmF0b3IgaXMgbmVlZGVkIGZvciBwdXR0
aW5nIEV4cGVjdGF0aW9uIG9iamVjdHMgaW50byBhIHNldC4KLSAgY2xhc3MgTGVzcyB7Ci0gICBw
dWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEV4cGVjdGF0aW9uJiBsaHMsIGNvbnN0
IEV4cGVjdGF0aW9uJiByaHMpIGNvbnN0IHsKLSAgICAgIHJldHVybiBsaHMuZXhwZWN0YXRpb25f
YmFzZV8uZ2V0KCkgPCByaHMuZXhwZWN0YXRpb25fYmFzZV8uZ2V0KCk7Ci0gICAgfQotICB9Owot
Ci0gIHR5cGVkZWYgOjpzdGQ6OnNldDxFeHBlY3RhdGlvbiwgTGVzcz4gU2V0OwotCi0gIEV4cGVj
dGF0aW9uKAotICAgICAgY29uc3QgaW50ZXJuYWw6OmxpbmtlZF9wdHI8aW50ZXJuYWw6OkV4cGVj
dGF0aW9uQmFzZT4mIGV4cGVjdGF0aW9uX2Jhc2UpOwotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVj
dGF0aW9uIHRoaXMgb2JqZWN0IHJlZmVyZW5jZXMuCi0gIGNvbnN0IGludGVybmFsOjpsaW5rZWRf
cHRyPGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2U+JgotICBleHBlY3RhdGlvbl9iYXNlKCkgY29u
c3QgewotICAgIHJldHVybiBleHBlY3RhdGlvbl9iYXNlXzsKLSAgfQotCi0gIC8vIEEgbGlua2Vk
X3B0ciB0aGF0IGNvLW93bnMgdGhlIGV4cGVjdGF0aW9uIHRoaXMgaGFuZGxlIHJlZmVyZW5jZXMu
Ci0gIGludGVybmFsOjpsaW5rZWRfcHRyPGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2U+IGV4cGVj
dGF0aW9uX2Jhc2VfOwotfTsKLQotLy8gQSBzZXQgb2YgZXhwZWN0YXRpb24gaGFuZGxlcy4gIFVz
ZWZ1bCBpbiB0aGUgLkFmdGVyKCkgY2xhdXNlIG9mCi0vLyBFWFBFQ1RfQ0FMTCgpIGZvciBzZXR0
aW5nIHRoZSAocGFydGlhbCkgb3JkZXIgb2YgZXhwZWN0YXRpb25zLiAgVGhlCi0vLyBzeW50YXg6
Ci0vLwotLy8gICBFeHBlY3RhdGlvblNldCBlczsKLS8vICAgZXMgKz0gRVhQRUNUX0NBTEwoLi4u
KS4uLjsKLS8vICAgZXMgKz0gRVhQRUNUX0NBTEwoLi4uKS4uLjsKLS8vICAgRVhQRUNUX0NBTEwo
Li4uKS5BZnRlcihlcykuLi47Ci0vLwotLy8gc2V0cyB0aHJlZSBleHBlY3RhdGlvbnMgd2hlcmUg
dGhlIGxhc3Qgb25lIGNhbiBvbmx5IGJlIG1hdGNoZWQKLS8vIGFmdGVyIHRoZSBmaXJzdCB0d28g
aGF2ZSBib3RoIGJlZW4gc2F0aXNmaWVkLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgY29weWFibGUg
YW5kIGhhcyB2YWx1ZSBzZW1hbnRpY3MuCi1jbGFzcyBFeHBlY3RhdGlvblNldCB7Ci0gcHVibGlj
OgotICAvLyBBIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3IgdGhhdCBjYW4gcmVhZCBhIGNvbnN0IGVs
ZW1lbnQgaW4gdGhlIHNldC4KLSAgdHlwZWRlZiBFeHBlY3RhdGlvbjo6U2V0Ojpjb25zdF9pdGVy
YXRvciBjb25zdF9pdGVyYXRvcjsKLQotICAvLyBBbiBvYmplY3Qgc3RvcmVkIGluIHRoZSBzZXQu
ICBUaGlzIGlzIGFuIGFsaWFzIG9mIEV4cGVjdGF0aW9uLgotICB0eXBlZGVmIEV4cGVjdGF0aW9u
OjpTZXQ6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAvLyBDb25zdHJ1Y3RzIGFuIGVtcHR5
IHNldC4KLSAgRXhwZWN0YXRpb25TZXQoKSB7fQotCi0gIC8vIFRoaXMgc2luZ2xlLWFyZ3VtZW50
IGN0b3IgbXVzdCBub3QgYmUgZXhwbGljaXQsIGluIG9yZGVyIHRvIHN1cHBvcnQgdGhlCi0gIC8v
ICAgRXhwZWN0YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FMTCguLi4pOwotICAvLyBzeW50YXguCi0g
IEV4cGVjdGF0aW9uU2V0KGludGVybmFsOjpFeHBlY3RhdGlvbkJhc2UmIGV4cCkgeyAgLy8gTk9M
SU5UCi0gICAgKnRoaXMgKz0gRXhwZWN0YXRpb24oZXhwKTsKLSAgfQotCi0gIC8vIFRoaXMgc2lu
Z2xlLWFyZ3VtZW50IGN0b3IgaW1wbGVtZW50cyBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20KLSAg
Ly8gRXhwZWN0YXRpb24gYW5kIHRodXMgbXVzdCBub3QgYmUgZXhwbGljaXQuICBUaGlzIGFsbG93
cyBlaXRoZXIgYW4KLSAgLy8gRXhwZWN0YXRpb24gb3IgYW4gRXhwZWN0YXRpb25TZXQgdG8gYmUg
dXNlZCBpbiAuQWZ0ZXIoKS4KLSAgRXhwZWN0YXRpb25TZXQoY29uc3QgRXhwZWN0YXRpb24mIGUp
IHsgIC8vIE5PTElOVAotICAgICp0aGlzICs9IGU7Ci0gIH0KLQotICAvLyBUaGUgY29tcGlsZXIt
Z2VuZXJhdG9yIGN0b3IgYW5kIG9wZXJhdG9yPSB3b3JrcyBleGFjdGx5IGFzCi0gIC8vIGludGVu
ZGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRlZmluZSBvdXIgb3duLgotCi0gIC8vIFJldHVybnMg
dHJ1ZSBpZmYgcmhzIGNvbnRhaW5zIHRoZSBzYW1lIHNldCBvZiBFeHBlY3RhdGlvbiBvYmplY3Rz
Ci0gIC8vIGFzIHRoaXMgZG9lcy4KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4cGVjdGF0aW9u
U2V0JiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gZXhwZWN0YXRpb25zXyA9PSByaHMuZXhwZWN0
YXRpb25zXzsKLSAgfQotCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFeHBlY3RhdGlvblNldCYg
cmhzKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KLQotICAvLyBJbXBsZW1lbnRz
IHRoZSBzeW50YXgKLSAgLy8gICBleHBlY3RhdGlvbl9zZXQgKz0gRVhQRUNUX0NBTEwoLi4uKTsK
LSAgRXhwZWN0YXRpb25TZXQmIG9wZXJhdG9yKz0oY29uc3QgRXhwZWN0YXRpb24mIGUpIHsKLSAg
ICBleHBlY3RhdGlvbnNfLmluc2VydChlKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBp
bnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oZXhwZWN0YXRpb25zXy5z
aXplKCkpOyB9Ci0KLSAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBleHBl
Y3RhdGlvbnNfLmJlZ2luKCk7IH0KLSAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gZXhwZWN0YXRpb25zXy5lbmQoKTsgfQotCi0gcHJpdmF0ZToKLSAgRXhwZWN0YXRpb246OlNl
dCBleHBlY3RhdGlvbnNfOwotfTsKLQotCi0vLyBTZXF1ZW5jZSBvYmplY3RzIGFyZSB1c2VkIGJ5
IGEgdXNlciB0byBzcGVjaWZ5IHRoZSByZWxhdGl2ZSBvcmRlcgotLy8gaW4gd2hpY2ggdGhlIGV4
cGVjdGF0aW9ucyBzaG91bGQgbWF0Y2guICBUaGV5IGFyZSBjb3B5YWJsZSAod2UgcmVseQotLy8g
b24gdGhlIGNvbXBpbGVyLWRlZmluZWQgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBv
cGVyYXRvcikuCi1jbGFzcyBHVEVTVF9BUElfIFNlcXVlbmNlIHsKLSBwdWJsaWM6Ci0gIC8vIENv
bnN0cnVjdHMgYW4gZW1wdHkgc2VxdWVuY2UuCi0gIFNlcXVlbmNlKCkgOiBsYXN0X2V4cGVjdGF0
aW9uXyhuZXcgRXhwZWN0YXRpb24pIHt9Ci0KLSAgLy8gQWRkcyBhbiBleHBlY3RhdGlvbiB0byB0
aGlzIHNlcXVlbmNlLiAgVGhlIGNhbGxlciBtdXN0IGVuc3VyZQotICAvLyB0aGF0IG5vIG90aGVy
IHRocmVhZCBpcyBhY2Nlc3NpbmcgdGhpcyBTZXF1ZW5jZSBvYmplY3QuCi0gIHZvaWQgQWRkRXhw
ZWN0YXRpb24oY29uc3QgRXhwZWN0YXRpb24mIGV4cGVjdGF0aW9uKSBjb25zdDsKLQotIHByaXZh
dGU6Ci0gIC8vIFRoZSBsYXN0IGV4cGVjdGF0aW9uIGluIHRoaXMgc2VxdWVuY2UuICBXZSB1c2Ug
YSBsaW5rZWRfcHRyIGhlcmUKLSAgLy8gYmVjYXVzZSBTZXF1ZW5jZSBvYmplY3RzIGFyZSBjb3B5
YWJsZSBhbmQgd2Ugd2FudCB0aGUgY29waWVzIHRvCi0gIC8vIGJlIGFsaWFzZXMuICBUaGUgbGlu
a2VkX3B0ciBhbGxvd3MgdGhlIGNvcGllcyB0byBjby1vd24gYW5kIHNoYXJlCi0gIC8vIHRoZSBz
YW1lIEV4cGVjdGF0aW9uIG9iamVjdC4KLSAgaW50ZXJuYWw6OmxpbmtlZF9wdHI8RXhwZWN0YXRp
b24+IGxhc3RfZXhwZWN0YXRpb25fOwotfTsgIC8vIGNsYXNzIFNlcXVlbmNlCi0KLS8vIEFuIG9i
amVjdCBvZiB0aGlzIHR5cGUgY2F1c2VzIGFsbCBFWFBFQ1RfQ0FMTCgpIHN0YXRlbWVudHMKLS8v
IGVuY291bnRlcmVkIGluIGl0cyBzY29wZSB0byBiZSBwdXQgaW4gYW4gYW5vbnltb3VzIHNlcXVl
bmNlLiAgVGhlCi0vLyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVj
dG9yLiAgWW91IHNob3VsZCBvbmx5Ci0vLyBjcmVhdGUgYW4gSW5TZXF1ZW5jZSBvYmplY3Qgb24g
dGhlIHN0YWNrLgotLy8KLS8vIFRoZSBzb2xlIHB1cnBvc2UgZm9yIHRoaXMgY2xhc3MgaXMgdG8g
c3VwcG9ydCBlYXN5IGRlZmluaXRpb24gb2YKLS8vIHNlcXVlbnRpYWwgZXhwZWN0YXRpb25zLCBl
LmcuCi0vLwotLy8gICB7Ci0vLyAgICAgSW5TZXF1ZW5jZSBkdW1teTsgIC8vIFRoZSBuYW1lIG9m
IHRoZSBvYmplY3QgZG9lc24ndCBtYXR0ZXIuCi0vLwotLy8gICAgIC8vIFRoZSBmb2xsb3dpbmcg
ZXhwZWN0YXRpb25zIG11c3QgbWF0Y2ggaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyLgotLy8gICAg
IEVYUEVDVF9DQUxMKGEsIEJhcigpKS4uLjsKLS8vICAgICBFWFBFQ1RfQ0FMTChhLCBCYXooKSku
Li47Ci0vLyAgICAgLi4uCi0vLyAgICAgRVhQRUNUX0NBTEwoYiwgWHl6KCkpLi4uOwotLy8gICB9
Ci0vLwotLy8gWW91IGNhbiBjcmVhdGUgSW5TZXF1ZW5jZSBvYmplY3RzIGluIG11bHRpcGxlIHRo
cmVhZHMsIGFzIGxvbmcgYXMKLS8vIHRoZXkgYXJlIHVzZWQgdG8gYWZmZWN0IGRpZmZlcmVudCBt
b2NrIG9iamVjdHMuICBUaGUgaWRlYSBpcyB0aGF0Ci0vLyBlYWNoIHRocmVhZCBjYW4gY3JlYXRl
IGFuZCBzZXQgdXAgaXRzIG93biBtb2NrcyBhcyBpZiBpdCdzIHRoZSBvbmx5Ci0vLyB0aHJlYWQu
ICBIb3dldmVyLCBmb3IgY2xhcml0eSBvZiB5b3VyIHRlc3RzIHdlIHJlY29tbWVuZCB5b3UgdG8g
c2V0Ci0vLyB1cCBtb2NrcyBpbiB0aGUgbWFpbiB0aHJlYWQgdW5sZXNzIHlvdSBoYXZlIGEgZ29v
ZCByZWFzb24gbm90IHRvIGRvCi0vLyBzby4KLWNsYXNzIEdURVNUX0FQSV8gSW5TZXF1ZW5jZSB7
Ci0gcHVibGljOgotICBJblNlcXVlbmNlKCk7Ci0gIH5JblNlcXVlbmNlKCk7Ci0gcHJpdmF0ZToK
LSAgYm9vbCBzZXF1ZW5jZV9jcmVhdGVkXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKEluU2VxdWVuY2UpOyAgLy8gTk9MSU5UCi19IEdURVNUX0FUVFJJQlVURV9VTlVTRURf
OwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBQb2ludHMgdG8gdGhlIGltcGxpY2l0IHNl
cXVlbmNlIGludHJvZHVjZWQgYnkgYSBsaXZpbmcgSW5TZXF1ZW5jZQotLy8gb2JqZWN0IChpZiBh
bnkpIGluIHRoZSBjdXJyZW50IHRocmVhZCBvciBOVUxMLgotR1RFU1RfQVBJXyBleHRlcm4gVGhy
ZWFkTG9jYWw8U2VxdWVuY2UqPiBnX2dtb2NrX2ltcGxpY2l0X3NlcXVlbmNlOwotCi0vLyBCYXNl
IGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgZXhwZWN0YXRpb25zLgotLy8KLS8vIFRoZXJlIGFyZSB0
d28gcmVhc29ucyBmb3IgaGF2aW5nIGEgdHlwZS1hZ25vc3RpYyBiYXNlIGNsYXNzIGZvcgotLy8g
RXhwZWN0YXRpb246Ci0vLwotLy8gICAxLiBXZSBuZWVkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9m
IGV4cGVjdGF0aW9ucyBvZiBkaWZmZXJlbnQKLS8vICAgdHlwZXMgKGUuZy4gYWxsIHByZS1yZXF1
aXNpdGVzIG9mIGEgcGFydGljdWxhciBleHBlY3RhdGlvbiwgYWxsCi0vLyAgIGV4cGVjdGF0aW9u
cyBpbiBhIHNlcXVlbmNlKS4gIFRoZXJlZm9yZSB0aGVzZSBleHBlY3RhdGlvbiBvYmplY3RzCi0v
LyAgIG11c3Qgc2hhcmUgYSBjb21tb24gYmFzZSBjbGFzcy4KLS8vCi0vLyAgIDIuIFdlIGNhbiBh
dm9pZCBiaW5hcnkgY29kZSBibG9hdCBieSBtb3ZpbmcgbWV0aG9kcyBub3QgZGVwZW5kaW5nCi0v
LyAgIG9uIHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBvZiBFeHBlY3RhdGlvbiB0byB0aGUgYmFzZSBj
bGFzcy4KLS8vCi0vLyBUaGlzIGNsYXNzIGlzIGludGVybmFsIGFuZCBtdXN0bid0IGJlIHVzZWQg
YnkgdXNlciBjb2RlIGRpcmVjdGx5LgotY2xhc3MgR1RFU1RfQVBJXyBFeHBlY3RhdGlvbkJhc2Ug
ewotIHB1YmxpYzoKLSAgLy8gc291cmNlX3RleHQgaXMgdGhlIEVYUEVDVF9DQUxMKC4uLikgc291
cmNlIHRoYXQgY3JlYXRlZCB0aGlzIEV4cGVjdGF0aW9uLgotICBFeHBlY3RhdGlvbkJhc2UoY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzb3VyY2VfdGV4dCk7
Ci0KLSAgdmlydHVhbCB+RXhwZWN0YXRpb25CYXNlKCk7Ci0KLSAgLy8gV2hlcmUgaW4gdGhlIHNv
dXJjZSBmaWxlIHdhcyB0aGUgZXhwZWN0YXRpb24gc3BlYyBkZWZpbmVkPwotICBjb25zdCBjaGFy
KiBmaWxlKCkgY29uc3QgeyByZXR1cm4gZmlsZV87IH0KLSAgaW50IGxpbmUoKSBjb25zdCB7IHJl
dHVybiBsaW5lXzsgfQotICBjb25zdCBjaGFyKiBzb3VyY2VfdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IHNvdXJjZV90ZXh0Xy5jX3N0cigpOyB9Ci0gIC8vIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IHNw
ZWNpZmllZCBpbiB0aGUgZXhwZWN0YXRpb24gc3BlYy4KLSAgY29uc3QgQ2FyZGluYWxpdHkmIGNh
cmRpbmFsaXR5KCkgY29uc3QgeyByZXR1cm4gY2FyZGluYWxpdHlfOyB9Ci0KLSAgLy8gRGVzY3Jp
YmVzIHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlvbiBvZiB0aGlzIGV4cGVjdGF0aW9uLgotICB2b2lk
IERlc2NyaWJlTG9jYXRpb25Ubyg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3Mg
PDwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUoKSwgbGluZSgpKSA8PCAiICI7Ci0gIH0KLQotICAv
LyBEZXNjcmliZXMgaG93IG1hbnkgdGltZXMgYSBmdW5jdGlvbiBjYWxsIG1hdGNoaW5nIHRoaXMK
LSAgLy8gZXhwZWN0YXRpb24gaGFzIG9jY3VycmVkLgotICB2b2lkIERlc2NyaWJlQ2FsbENvdW50
VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tf
UkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpOwotCi0gIC8vIElmIHRoaXMgbW9jayBtZXRob2QgaGFz
IGFuIGV4dHJhIG1hdGNoZXIgKGkuZS4gLldpdGgobWF0Y2hlcikpLAotICAvLyBkZXNjcmliZXMg
aXQgdG8gdGhlIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBNYXliZURlc2NyaWJlRXh0cmFNYXRj
aGVyVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSA9IDA7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIGZyaWVuZCBj
bGFzcyA6OnRlc3Rpbmc6OkV4cGVjdGF0aW9uOwotICBmcmllbmQgY2xhc3MgVW50eXBlZEZ1bmN0
aW9uTW9ja2VyQmFzZTsKLQotICBlbnVtIENsYXVzZSB7Ci0gICAgLy8gRG9uJ3QgY2hhbmdlIHRo
ZSBvcmRlciBvZiB0aGUgZW51bSBtZW1iZXJzIQotICAgIGtOb25lLAotICAgIGtXaXRoLAotICAg
IGtUaW1lcywKLSAgICBrSW5TZXF1ZW5jZSwKLSAgICBrQWZ0ZXIsCi0gICAga1dpbGxPbmNlLAot
ICAgIGtXaWxsUmVwZWF0ZWRseSwKLSAgICBrUmV0aXJlc09uU2F0dXJhdGlvbgotICB9OwotCi0g
IHR5cGVkZWYgc3RkOjp2ZWN0b3I8Y29uc3Qgdm9pZCo+IFVudHlwZWRBY3Rpb25zOwotCi0gIC8v
IFJldHVybnMgYW4gRXhwZWN0YXRpb24gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyBhbmQgY28tb3du
cyB0aGlzCi0gIC8vIGV4cGVjdGF0aW9uLgotICB2aXJ0dWFsIEV4cGVjdGF0aW9uIEdldEhhbmRs
ZSgpID0gMDsKLQotICAvLyBBc3NlcnRzIHRoYXQgdGhlIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50
IGhhcyB0aGUgZ2l2ZW4gcHJvcGVydHkuCi0gIHZvaWQgQXNzZXJ0U3BlY1Byb3BlcnR5KGJvb2wg
cHJvcGVydHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBm
YWlsdXJlX21lc3NhZ2UpIGNvbnN0IHsKLSAgICBBc3NlcnQocHJvcGVydHksIGZpbGVfLCBsaW5l
XywgZmFpbHVyZV9tZXNzYWdlKTsKLSAgfQotCi0gIC8vIEV4cGVjdHMgdGhhdCB0aGUgRVhQRUNU
X0NBTEwoKSBzdGF0ZW1lbnQgaGFzIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgdm9pZCBFeHBlY3RT
cGVjUHJvcGVydHkoYm9vbCBwcm9wZXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGZhaWx1cmVfbWVzc2FnZSkgY29uc3QgewotICAgIEV4cGVjdChwcm9w
ZXJ0eSwgZmlsZV8sIGxpbmVfLCBmYWlsdXJlX21lc3NhZ2UpOwotICB9Ci0KLSAgLy8gRXhwbGlj
aXRseSBzcGVjaWZpZXMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoaXMgZXhwZWN0YXRpb24uICBVc2Vk
Ci0gIC8vIGJ5IHRoZSBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGUgLlRpbWVzKCkgY2xhdXNl
LgotICB2b2lkIFNwZWNpZnlDYXJkaW5hbGl0eShjb25zdCBDYXJkaW5hbGl0eSYgY2FyZGluYWxp
dHkpOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIgc3BlY2lmaWVkIHRoZSBjYXJk
aW5hbGl0eSBleHBsaWNpdGx5Ci0gIC8vIHVzaW5nIGEgLlRpbWVzKCkuCi0gIGJvb2wgY2FyZGlu
YWxpdHlfc3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gY2FyZGluYWxpdHlfc3BlY2lmaWVkXzsg
fQotCi0gIC8vIFNldHMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoaXMgZXhwZWN0YXRpb24gc3BlYy4K
LSAgdm9pZCBzZXRfY2FyZGluYWxpdHkoY29uc3QgQ2FyZGluYWxpdHkmIGFfY2FyZGluYWxpdHkp
IHsKLSAgICBjYXJkaW5hbGl0eV8gPSBhX2NhcmRpbmFsaXR5OwotICB9Ci0KLSAgLy8gVGhlIGZv
bGxvd2luZyBncm91cCBvZiBtZXRob2RzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUK
LSAgLy8gRVhQRUNUX0NBTEwoKSBzdGF0ZW1lbnQsIGFuZCBvbmx5IHdoZW4gZ19nbW9ja19tdXRl
eCBpcyBoZWxkIGJ5Ci0gIC8vIHRoZSBjdXJyZW50IHRocmVhZC4KLQotICAvLyBSZXRpcmVzIGFs
bCBwcmUtcmVxdWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uLgotICB2b2lkIFJldGlyZUFsbFBy
ZVJlcXVpc2l0ZXMoKQotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21v
Y2tfbXV0ZXgpOwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBleHBlY3RhdGlvbiBpcyBy
ZXRpcmVkLgotICBib29sIGlzX3JldGlyZWQoKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZF
X0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgICBnX2dtb2NrX211dGV4LkFzc2Vy
dEhlbGQoKTsKLSAgICByZXR1cm4gcmV0aXJlZF87Ci0gIH0KLQotICAvLyBSZXRpcmVzIHRoaXMg
ZXhwZWN0YXRpb24uCi0gIHZvaWQgUmV0aXJlKCkKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NL
X1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxk
KCk7Ci0gICAgcmV0aXJlZF8gPSB0cnVlOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0
aGlzIGV4cGVjdGF0aW9uIGlzIHNhdGlzZmllZC4KLSAgYm9vbCBJc1NhdGlzZmllZCgpIGNvbnN0
Ci0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewot
ICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIHJldHVybiBjYXJkaW5hbGl0eSgp
LklzU2F0aXNmaWVkQnlDYWxsQ291bnQoY2FsbF9jb3VudF8pOwotICB9Ci0KLSAgLy8gUmV0dXJu
cyB0cnVlIGlmZiB0aGlzIGV4cGVjdGF0aW9uIGlzIHNhdHVyYXRlZC4KLSAgYm9vbCBJc1NhdHVy
YXRlZCgpIGNvbnN0Ci0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9j
a19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIHJldHVybiBj
YXJkaW5hbGl0eSgpLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoY2FsbF9jb3VudF8pOwotICB9Ci0K
LSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIGV4cGVjdGF0aW9uIGlzIG92ZXItc2F0dXJhdGVk
LgotICBib29sIElzT3ZlclNhdHVyYXRlZCgpIGNvbnN0Ci0gICAgICBHVEVTVF9FWENMVVNJVkVf
TE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0
SGVsZCgpOwotICAgIHJldHVybiBjYXJkaW5hbGl0eSgpLklzT3ZlclNhdHVyYXRlZEJ5Q2FsbENv
dW50KGNhbGxfY291bnRfKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgYWxsIHByZS1y
ZXF1aXNpdGVzIG9mIHRoaXMgZXhwZWN0YXRpb24gYXJlIHNhdGlzZmllZC4KLSAgYm9vbCBBbGxQ
cmVyZXF1aXNpdGVzQXJlU2F0aXNmaWVkKCkgY29uc3QKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9M
T0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KTsKLQotICAvLyBBZGRzIHVuc2F0aXNmaWVkIHBy
ZS1yZXF1aXNpdGVzIG9mIHRoaXMgZXhwZWN0YXRpb24gdG8gJ3Jlc3VsdCcuCi0gIHZvaWQgRmlu
ZFVuc2F0aXNmaWVkUHJlcmVxdWlzaXRlcyhFeHBlY3RhdGlvblNldCogcmVzdWx0KSBjb25zdAot
ICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpOwotCi0g
IC8vIFJldHVybnMgdGhlIG51bWJlciB0aGlzIGV4cGVjdGF0aW9uIGhhcyBiZWVuIGludm9rZWQu
Ci0gIGludCBjYWxsX2NvdW50KCkgY29uc3QKLSAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JF
UVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7
Ci0gICAgcmV0dXJuIGNhbGxfY291bnRfOwotICB9Ci0KLSAgLy8gSW5jcmVtZW50cyB0aGUgbnVt
YmVyIHRoaXMgZXhwZWN0YXRpb24gaGFzIGJlZW4gaW52b2tlZC4KLSAgdm9pZCBJbmNyZW1lbnRD
YWxsQ291bnQoKQotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGdfZ21vY2tf
bXV0ZXgpIHsKLSAgICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgICBjYWxsX2NvdW50
XysrOwotICB9Ci0KLSAgLy8gQ2hlY2tzIHRoZSBhY3Rpb24gY291bnQgKGkuZS4gdGhlIG51bWJl
ciBvZiBXaWxsT25jZSgpIGFuZAotICAvLyBXaWxsUmVwZWF0ZWRseSgpIGNsYXVzZXMpIGFnYWlu
c3QgdGhlIGNhcmRpbmFsaXR5IGlmIHRoaXMgaGFzbid0Ci0gIC8vIGJlZW4gZG9uZSBiZWZvcmUu
ICBQcmludHMgYSB3YXJuaW5nIGlmIHRoZXJlIGFyZSB0b28gbWFueSBvciB0b28KLSAgLy8gZmV3
IGFjdGlvbnMuCi0gIHZvaWQgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpIGNvbnN0Ci0gICAg
ICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwotCi0gIGZyaWVuZCBjbGFzcyA6OnRlc3Rp
bmc6OlNlcXVlbmNlOwotICBmcmllbmQgY2xhc3MgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RXhwZWN0
YXRpb25UZXN0ZXI7Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgotICBmcmllbmQg
Y2xhc3MgVHlwZWRFeHBlY3RhdGlvbjsKLQotICAvLyBJbXBsZW1lbnRzIHRoZSAuVGltZXMoKSBj
bGF1c2UuCi0gIHZvaWQgVW50eXBlZFRpbWVzKGNvbnN0IENhcmRpbmFsaXR5JiBhX2NhcmRpbmFs
aXR5KTsKLQotICAvLyBUaGlzIGdyb3VwIG9mIGZpZWxkcyBhcmUgcGFydCBvZiB0aGUgc3BlYyBh
bmQgd29uJ3QgY2hhbmdlIGFmdGVyCi0gIC8vIGFuIEVYUEVDVF9DQUxMKCkgc3RhdGVtZW50IGZp
bmlzaGVzLgotICBjb25zdCBjaGFyKiBmaWxlXzsgICAgICAgICAgLy8gVGhlIGZpbGUgdGhhdCBj
b250YWlucyB0aGUgZXhwZWN0YXRpb24uCi0gIGludCBsaW5lXzsgICAgICAgICAgICAgICAgICAv
LyBUaGUgbGluZSBudW1iZXIgb2YgdGhlIGV4cGVjdGF0aW9uLgotICBjb25zdCBzdGQ6OnN0cmlu
ZyBzb3VyY2VfdGV4dF87ICAvLyBUaGUgRVhQRUNUX0NBTEwoLi4uKSBzb3VyY2UgdGV4dC4KLSAg
Ly8gVHJ1ZSBpZmYgdGhlIGNhcmRpbmFsaXR5IGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LgotICBi
b29sIGNhcmRpbmFsaXR5X3NwZWNpZmllZF87Ci0gIENhcmRpbmFsaXR5IGNhcmRpbmFsaXR5Xzsg
ICAgICAgICAgICAvLyBUaGUgY2FyZGluYWxpdHkgb2YgdGhlIGV4cGVjdGF0aW9uLgotICAvLyBU
aGUgaW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIChpLmUuIGV4cGVjdGF0aW9ucyB0aGF0IG11c3Qg
YmUKLSAgLy8gc2F0aXNmaWVkIGJlZm9yZSB0aGlzIGV4cGVjdGF0aW9uIGNhbiBiZSBtYXRjaGVk
KSBvZiB0aGlzCi0gIC8vIGV4cGVjdGF0aW9uLiAgV2UgdXNlIGxpbmtlZF9wdHIgaW4gdGhlIHNl
dCBiZWNhdXNlIHdlIHdhbnQgYW4KLSAgLy8gRXhwZWN0YXRpb24gb2JqZWN0IHRvIGJlIGNvLW93
bmVkIGJ5IGl0cyBGdW5jdGlvbk1vY2tlciBhbmQgaXRzCi0gIC8vIHN1Y2Nlc3NvcnMuICBUaGlz
IGFsbG93cyBtdWx0aXBsZSBtb2NrIG9iamVjdHMgdG8gYmUgZGVsZXRlZCBhdAotICAvLyBkaWZm
ZXJlbnQgdGltZXMuCi0gIEV4cGVjdGF0aW9uU2V0IGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXzsK
LQotICAvLyBUaGlzIGdyb3VwIG9mIGZpZWxkcyBhcmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl
IGV4cGVjdGF0aW9uLAotICAvLyBhbmQgY2FuIGNoYW5nZSBhcyB0aGUgbW9jayBmdW5jdGlvbiBp
cyBjYWxsZWQuCi0gIGludCBjYWxsX2NvdW50XzsgIC8vIEhvdyBtYW55IHRpbWVzIHRoaXMgZXhw
ZWN0YXRpb24gaGFzIGJlZW4gaW52b2tlZC4KLSAgYm9vbCByZXRpcmVkXzsgICAgLy8gVHJ1ZSBp
ZmYgdGhpcyBleHBlY3RhdGlvbiBoYXMgcmV0aXJlZC4KLSAgVW50eXBlZEFjdGlvbnMgdW50eXBl
ZF9hY3Rpb25zXzsKLSAgYm9vbCBleHRyYV9tYXRjaGVyX3NwZWNpZmllZF87Ci0gIGJvb2wgcmVw
ZWF0ZWRfYWN0aW9uX3NwZWNpZmllZF87ICAvLyBUcnVlIGlmIGEgV2lsbFJlcGVhdGVkbHkoKSB3
YXMgc3BlY2lmaWVkLgotICBib29sIHJldGlyZXNfb25fc2F0dXJhdGlvbl87Ci0gIENsYXVzZSBs
YXN0X2NsYXVzZV87Ci0gIG11dGFibGUgYm9vbCBhY3Rpb25fY291bnRfY2hlY2tlZF87ICAvLyBV
bmRlciBtdXRleF8uCi0gIG11dGFibGUgTXV0ZXggbXV0ZXhfOyAgLy8gUHJvdGVjdHMgYWN0aW9u
X2NvdW50X2NoZWNrZWRfLgotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRXhwZWN0YXRpb25C
YXNlKTsKLX07ICAvLyBjbGFzcyBFeHBlY3RhdGlvbkJhc2UKLQotLy8gSW1wZW1lbnRzIGFuIGV4
cGVjdGF0aW9uIGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24gdHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBGPgotY2xhc3MgVHlwZWRFeHBlY3RhdGlvbiA6IHB1YmxpYyBFeHBlY3RhdGlvbkJhc2Ugewot
IHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5jdGlvbjxGPjo6QXJndW1lbnRUdXBsZSBB
cmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpBcmd1bWVudE1h
dGNoZXJUdXBsZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBGdW5j
dGlvbjxGPjo6UmVzdWx0IFJlc3VsdDsKLQotICBUeXBlZEV4cGVjdGF0aW9uKEZ1bmN0aW9uTW9j
a2VyQmFzZTxGPiogb3duZXIsIGNvbnN0IGNoYXIqIGFfZmlsZSwgaW50IGFfbGluZSwKLSAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYV9zb3VyY2VfdGV4dCwKLSAgICAgICAg
ICAgICAgICAgICBjb25zdCBBcmd1bWVudE1hdGNoZXJUdXBsZSYgbSkKLSAgICAgIDogRXhwZWN0
YXRpb25CYXNlKGFfZmlsZSwgYV9saW5lLCBhX3NvdXJjZV90ZXh0KSwKLSAgICAgICAgb3duZXJf
KG93bmVyKSwKLSAgICAgICAgbWF0Y2hlcnNfKG0pLAotICAgICAgICAvLyBCeSBkZWZhdWx0LCBl
eHRyYV9tYXRjaGVyXyBzaG91bGQgbWF0Y2ggYW55dGhpbmcuICBIb3dldmVyLAotICAgICAgICAv
LyB3ZSBjYW5ub3QgaW5pdGlhbGl6ZSBpdCB3aXRoIF8gYXMgdGhhdCB0cmlnZ2VycyBhIGNvbXBp
bGVyCi0gICAgICAgIC8vIGJ1ZyBpbiBTeW1iaWFuJ3MgQysrIGNvbXBpbGVyIChjYW5ub3QgZGVj
aWRlIGJldHdlZW4gdHdvCi0gICAgICAgIC8vIG92ZXJsb2FkZWQgY29uc3RydWN0b3JzIG9mIE1h
dGNoZXI8Y29uc3QgQXJndW1lbnRUdXBsZSY+KS4KLSAgICAgICAgZXh0cmFfbWF0Y2hlcl8oQTxj
b25zdCBBcmd1bWVudFR1cGxlJj4oKSksCi0gICAgICAgIHJlcGVhdGVkX2FjdGlvbl8oRG9EZWZh
dWx0KCkpIHt9Ci0KLSAgdmlydHVhbCB+VHlwZWRFeHBlY3RhdGlvbigpIHsKLSAgICAvLyBDaGVj
ayB0aGUgdmFsaWRpdHkgb2YgdGhlIGFjdGlvbiBjb3VudCBpZiBpdCBoYXNuJ3QgYmVlbiBkb25l
Ci0gICAgLy8geWV0IChmb3IgZXhhbXBsZSwgaWYgdGhlIGV4cGVjdGF0aW9uIHdhcyBuZXZlciB1
c2VkKS4KLSAgICBDaGVja0FjdGlvbkNvdW50SWZOb3REb25lKCk7Ci0gICAgZm9yIChVbnR5cGVk
QWN0aW9uczo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1bnR5cGVkX2FjdGlvbnNfLmJlZ2luKCk7Ci0g
ICAgICAgICBpdCAhPSB1bnR5cGVkX2FjdGlvbnNfLmVuZCgpOyArK2l0KSB7Ci0gICAgICBkZWxl
dGUgc3RhdGljX2Nhc3Q8Y29uc3QgQWN0aW9uPEY+Kj4oKml0KTsKLSAgICB9Ci0gIH0KLQotICAv
LyBJbXBsZW1lbnRzIHRoZSAuV2l0aCgpIGNsYXVzZS4KLSAgVHlwZWRFeHBlY3RhdGlvbiYgV2l0
aChjb25zdCBNYXRjaGVyPGNvbnN0IEFyZ3VtZW50VHVwbGUmPiYgbSkgewotICAgIGlmIChsYXN0
X2NsYXVzZV8gPT0ga1dpdGgpIHsKLSAgICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiLldpdGgoKSBjYW5ub3QgYXBwZWFyICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAibW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NBTEwoKS4iKTsK
LSAgICB9IGVsc2UgewotICAgICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtX
aXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICIuV2l0aCgpIG11c3QgYmUgdGhlIGZpcnN0
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiY2xhdXNlIGluIGFuIEVYUEVDVF9DQUxMKCku
Iik7Ci0gICAgfQotICAgIGxhc3RfY2xhdXNlXyA9IGtXaXRoOwotCi0gICAgZXh0cmFfbWF0Y2hl
cl8gPSBtOwotICAgIGV4dHJhX21hdGNoZXJfc3BlY2lmaWVkXyA9IHRydWU7Ci0gICAgcmV0dXJu
ICp0aGlzOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLlRpbWVzKCkgY2xhdXNlLgotICBU
eXBlZEV4cGVjdGF0aW9uJiBUaW1lcyhjb25zdCBDYXJkaW5hbGl0eSYgYV9jYXJkaW5hbGl0eSkg
ewotICAgIEV4cGVjdGF0aW9uQmFzZTo6VW50eXBlZFRpbWVzKGFfY2FyZGluYWxpdHkpOwotICAg
IHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIEltcGxlbWVudHMgdGhlIC5UaW1lcygpIGNsYXVz
ZS4KLSAgVHlwZWRFeHBlY3RhdGlvbiYgVGltZXMoaW50IG4pIHsKLSAgICByZXR1cm4gVGltZXMo
RXhhY3RseShuKSk7Ci0gIH0KLQotICAvLyBJbXBsZW1lbnRzIHRoZSAuSW5TZXF1ZW5jZSgpIGNs
YXVzZS4KLSAgVHlwZWRFeHBlY3RhdGlvbiYgSW5TZXF1ZW5jZShjb25zdCBTZXF1ZW5jZSYgcykg
ewotICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga0luU2VxdWVuY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICIuSW5TZXF1ZW5jZSgpIGNhbm5vdCBhcHBlYXIgYWZ0ZXIg
LkFmdGVyKCksIgotICAgICAgICAgICAgICAgICAgICAgICAiIC5XaWxsT25jZSgpLCAuV2lsbFJl
cGVhdGVkbHkoKSwgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAiLlJldGlyZXNPblNhdHVy
YXRpb24oKS4iKTsKLSAgICBsYXN0X2NsYXVzZV8gPSBrSW5TZXF1ZW5jZTsKLQotICAgIHMuQWRk
RXhwZWN0YXRpb24oR2V0SGFuZGxlKCkpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBUeXBl
ZEV4cGVjdGF0aW9uJiBJblNlcXVlbmNlKGNvbnN0IFNlcXVlbmNlJiBzMSwgY29uc3QgU2VxdWVu
Y2UmIHMyKSB7Ci0gICAgcmV0dXJuIEluU2VxdWVuY2UoczEpLkluU2VxdWVuY2UoczIpOwotICB9
Ci0gIFR5cGVkRXhwZWN0YXRpb24mIEluU2VxdWVuY2UoY29uc3QgU2VxdWVuY2UmIHMxLCBjb25z
dCBTZXF1ZW5jZSYgczIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2Vx
dWVuY2UmIHMzKSB7Ci0gICAgcmV0dXJuIEluU2VxdWVuY2UoczEsIHMyKS5JblNlcXVlbmNlKHMz
KTsKLSAgfQotICBUeXBlZEV4cGVjdGF0aW9uJiBJblNlcXVlbmNlKGNvbnN0IFNlcXVlbmNlJiBz
MSwgY29uc3QgU2VxdWVuY2UmIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNlcXVlbmNlJiBzMywgY29uc3QgU2VxdWVuY2UmIHM0KSB7Ci0gICAgcmV0dXJuIEluU2Vx
dWVuY2UoczEsIHMyLCBzMykuSW5TZXF1ZW5jZShzNCk7Ci0gIH0KLSAgVHlwZWRFeHBlY3RhdGlv
biYgSW5TZXF1ZW5jZShjb25zdCBTZXF1ZW5jZSYgczEsIGNvbnN0IFNlcXVlbmNlJiBzMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXF1ZW5jZSYgczMsIGNvbnN0IFNl
cXVlbmNlJiBzNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXF1ZW5j
ZSYgczUpIHsKLSAgICByZXR1cm4gSW5TZXF1ZW5jZShzMSwgczIsIHMzLCBzNCkuSW5TZXF1ZW5j
ZShzNSk7Ci0gIH0KLQotICAvLyBJbXBsZW1lbnRzIHRoYXQgLkFmdGVyKCkgY2xhdXNlLgotICBU
eXBlZEV4cGVjdGF0aW9uJiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgcykgewotICAgIEV4
cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga0FmdGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAiLkFmdGVyKCkgY2Fubm90IGFwcGVhciBhZnRlciAuV2lsbE9uY2UoKSwiCi0gICAg
ICAgICAgICAgICAgICAgICAgICIgLldpbGxSZXBlYXRlZGx5KCksIG9yICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIi5SZXRpcmVzT25TYXR1cmF0aW9uKCkuIik7Ci0gICAgbGFzdF9jbGF1c2Vf
ID0ga0FmdGVyOwotCi0gICAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBzLmJlZ2luKCk7IGl0ICE9IHMuZW5kKCk7ICsraXQpIHsKLSAgICAgIGltbWVkaWF0ZV9wcmVy
ZXF1aXNpdGVzXyArPSAqaXQ7Ci0gICAgfQotICAgIHJldHVybiAqdGhpczsKLSAgfQotICBUeXBl
ZEV4cGVjdGF0aW9uJiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgczEsIGNvbnN0IEV4cGVj
dGF0aW9uU2V0JiBzMikgewotICAgIHJldHVybiBBZnRlcihzMSkuQWZ0ZXIoczIpOwotICB9Ci0g
IFR5cGVkRXhwZWN0YXRpb24mIEFmdGVyKGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBzMSwgY29uc3Qg
RXhwZWN0YXRpb25TZXQmIHMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHBl
Y3RhdGlvblNldCYgczMpIHsKLSAgICByZXR1cm4gQWZ0ZXIoczEsIHMyKS5BZnRlcihzMyk7Ci0g
IH0KLSAgVHlwZWRFeHBlY3RhdGlvbiYgQWZ0ZXIoY29uc3QgRXhwZWN0YXRpb25TZXQmIHMxLCBj
b25zdCBFeHBlY3RhdGlvblNldCYgczIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEV4cGVjdGF0aW9uU2V0JiBzMywgY29uc3QgRXhwZWN0YXRpb25TZXQmIHM0KSB7Ci0gICAgcmV0
dXJuIEFmdGVyKHMxLCBzMiwgczMpLkFmdGVyKHM0KTsKLSAgfQotICBUeXBlZEV4cGVjdGF0aW9u
JiBBZnRlcihjb25zdCBFeHBlY3RhdGlvblNldCYgczEsIGNvbnN0IEV4cGVjdGF0aW9uU2V0JiBz
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXhwZWN0YXRpb25TZXQmIHMzLCBj
b25zdCBFeHBlY3RhdGlvblNldCYgczQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEV4cGVjdGF0aW9uU2V0JiBzNSkgewotICAgIHJldHVybiBBZnRlcihzMSwgczIsIHMzLCBzNCku
QWZ0ZXIoczUpOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLldpbGxPbmNlKCkgY2xhdXNl
LgotICBUeXBlZEV4cGVjdGF0aW9uJiBXaWxsT25jZShjb25zdCBBY3Rpb248Rj4mIGFjdGlvbikg
ewotICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPD0ga1dpbGxPbmNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAiLldpbGxPbmNlKCkgY2Fubm90IGFwcGVhciBhZnRlciAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICIuV2lsbFJlcGVhdGVkbHkoKSBvciAuUmV0aXJlc09uU2F0
dXJhdGlvbigpLiIpOwotICAgIGxhc3RfY2xhdXNlXyA9IGtXaWxsT25jZTsKLQotICAgIHVudHlw
ZWRfYWN0aW9uc18ucHVzaF9iYWNrKG5ldyBBY3Rpb248Rj4oYWN0aW9uKSk7Ci0gICAgaWYgKCFj
YXJkaW5hbGl0eV9zcGVjaWZpZWQoKSkgewotICAgICAgc2V0X2NhcmRpbmFsaXR5KEV4YWN0bHko
c3RhdGljX2Nhc3Q8aW50Pih1bnR5cGVkX2FjdGlvbnNfLnNpemUoKSkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLldpbGxSZXBlYXRlZGx5
KCkgY2xhdXNlLgotICBUeXBlZEV4cGVjdGF0aW9uJiBXaWxsUmVwZWF0ZWRseShjb25zdCBBY3Rp
b248Rj4mIGFjdGlvbikgewotICAgIGlmIChsYXN0X2NsYXVzZV8gPT0ga1dpbGxSZXBlYXRlZGx5
KSB7Ci0gICAgICBFeHBlY3RTcGVjUHJvcGVydHkoZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIi5XaWxsUmVwZWF0ZWRseSgpIGNhbm5vdCBhcHBlYXIgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICJtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpLiIpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICBFeHBlY3RTcGVjUHJvcGVydHkobGFzdF9jbGF1c2VfIDwga1dpbGxSZXBl
YXRlZGx5LAotICAgICAgICAgICAgICAgICAgICAgICAgICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5u
b3QgYXBwZWFyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYWZ0ZXIgLlJldGlyZXNPblNh
dHVyYXRpb24oKS4iKTsKLSAgICB9Ci0gICAgbGFzdF9jbGF1c2VfID0ga1dpbGxSZXBlYXRlZGx5
OwotICAgIHJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfID0gdHJ1ZTsKLQotICAgIHJlcGVhdGVk
X2FjdGlvbl8gPSBhY3Rpb247Ci0gICAgaWYgKCFjYXJkaW5hbGl0eV9zcGVjaWZpZWQoKSkgewot
ICAgICAgc2V0X2NhcmRpbmFsaXR5KEF0TGVhc3Qoc3RhdGljX2Nhc3Q8aW50Pih1bnR5cGVkX2Fj
dGlvbnNfLnNpemUoKSkpKTsKLSAgICB9Ci0KLSAgICAvLyBOb3cgdGhhdCBubyBtb3JlIGFjdGlv
biBjbGF1c2VzIGNhbiBiZSBzcGVjaWZpZWQsIHdlIGNoZWNrCi0gICAgLy8gd2hldGhlciB0aGVp
ciBjb3VudCBtYWtlcyBzZW5zZS4KLSAgICBDaGVja0FjdGlvbkNvdW50SWZOb3REb25lKCk7Ci0g
ICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyB0aGUgLlJldGlyZXNPblNh
dHVyYXRpb24oKSBjbGF1c2UuCi0gIFR5cGVkRXhwZWN0YXRpb24mIFJldGlyZXNPblNhdHVyYXRp
b24oKSB7Ci0gICAgRXhwZWN0U3BlY1Byb3BlcnR5KGxhc3RfY2xhdXNlXyA8IGtSZXRpcmVzT25T
YXR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiLlJldGlyZXNPblNhdHVyYXRpb24o
KSBjYW5ub3QgYXBwZWFyICIKLSAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBvbmNl
LiIpOwotICAgIGxhc3RfY2xhdXNlXyA9IGtSZXRpcmVzT25TYXR1cmF0aW9uOwotICAgIHJldGly
ZXNfb25fc2F0dXJhdGlvbl8gPSB0cnVlOwotCi0gICAgLy8gTm93IHRoYXQgbm8gbW9yZSBhY3Rp
b24gY2xhdXNlcyBjYW4gYmUgc3BlY2lmaWVkLCB3ZSBjaGVjawotICAgIC8vIHdoZXRoZXIgdGhl
aXIgY291bnQgbWFrZXMgc2Vuc2UuCi0gICAgQ2hlY2tBY3Rpb25Db3VudElmTm90RG9uZSgpOwot
ICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIG1hdGNoZXJzIGZvciB0
aGUgYXJndW1lbnRzIGFzIHNwZWNpZmllZCBpbnNpZGUgdGhlCi0gIC8vIEVYUEVDVF9DQUxMKCkg
bWFjcm8uCi0gIGNvbnN0IEFyZ3VtZW50TWF0Y2hlclR1cGxlJiBtYXRjaGVycygpIGNvbnN0IHsK
LSAgICByZXR1cm4gbWF0Y2hlcnNfOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgbWF0Y2hlciBz
cGVjaWZpZWQgYnkgdGhlIC5XaXRoKCkgY2xhdXNlLgotICBjb25zdCBNYXRjaGVyPGNvbnN0IEFy
Z3VtZW50VHVwbGUmPiYgZXh0cmFfbWF0Y2hlcigpIGNvbnN0IHsKLSAgICByZXR1cm4gZXh0cmFf
bWF0Y2hlcl87Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSBhY3Rpb24gc3BlY2lmaWVkIGJ5IHRo
ZSAuV2lsbFJlcGVhdGVkbHkoKSBjbGF1c2UuCi0gIGNvbnN0IEFjdGlvbjxGPiYgcmVwZWF0ZWRf
YWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcmVwZWF0ZWRfYWN0aW9uXzsgfQotCi0gIC8vIElmIHRo
aXMgbW9jayBtZXRob2QgaGFzIGFuIGV4dHJhIG1hdGNoZXIgKGkuZS4gLldpdGgobWF0Y2hlcikp
LAotICAvLyBkZXNjcmliZXMgaXQgdG8gdGhlIG9zdHJlYW0uCi0gIHZpcnR1YWwgdm9pZCBNYXli
ZURlc2NyaWJlRXh0cmFNYXRjaGVyVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgaWYgKGV4
dHJhX21hdGNoZXJfc3BlY2lmaWVkXykgewotICAgICAgKm9zIDw8ICIgICAgRXhwZWN0ZWQgYXJn
czogIjsKLSAgICAgIGV4dHJhX21hdGNoZXJfLkRlc2NyaWJlVG8ob3MpOwotICAgICAgKm9zIDw8
ICJcbiI7Ci0gICAgfQotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rpb24+Ci0gIGZyaWVuZCBjbGFzcyBGdW5jdGlvbk1vY2tlckJhc2U7Ci0KLSAgLy8gUmV0dXJu
cyBhbiBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIGFuZCBjby1vd25zIHRoaXMK
LSAgLy8gZXhwZWN0YXRpb24uCi0gIHZpcnR1YWwgRXhwZWN0YXRpb24gR2V0SGFuZGxlKCkgewot
ICAgIHJldHVybiBvd25lcl8tPkdldEhhbmRsZU9mKHRoaXMpOwotICB9Ci0KLSAgLy8gVGhlIGZv
bGxvd2luZyBtZXRob2RzIHdpbGwgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgdGhlIEVYUEVDVF9DQUxM
KCkKLSAgLy8gc3RhdGVtZW50IGZpbmlzaGVzIGFuZCB3aGVuIHRoZSBjdXJyZW50IHRocmVhZCBo
b2xkcwotICAvLyBnX2dtb2NrX211dGV4LgotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhpcyBl
eHBlY3RhdGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBhcmd1bWVudHMuCi0gIGJvb2wgTWF0Y2hlcyhj
b25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdAotICAgICAgR1RFU1RfRVhDTFVTSVZFX0xP
Q0tfUkVRVUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgICBnX2dtb2NrX211dGV4LkFzc2VydEhl
bGQoKTsKLSAgICByZXR1cm4gVHVwbGVNYXRjaGVzKG1hdGNoZXJzXywgYXJncykgJiYgZXh0cmFf
bWF0Y2hlcl8uTWF0Y2hlcyhhcmdzKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhp
cyBleHBlY3RhdGlvbiBzaG91bGQgaGFuZGxlIHRoZSBnaXZlbiBhcmd1bWVudHMuCi0gIGJvb2wg
U2hvdWxkSGFuZGxlQXJndW1lbnRzKGNvbnN0IEFyZ3VtZW50VHVwbGUmIGFyZ3MpIGNvbnN0Ci0g
ICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAg
IGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotCi0gICAgLy8gSW4gY2FzZSB0aGUgYWN0aW9u
IGNvdW50IHdhc24ndCBjaGVja2VkIHdoZW4gdGhlIGV4cGVjdGF0aW9uCi0gICAgLy8gd2FzIGRl
ZmluZWQgKGUuZy4gaWYgdGhpcyBleHBlY3RhdGlvbiBoYXMgbm8gV2lsbFJlcGVhdGVkbHkoKQot
ICAgIC8vIG9yIFJldGlyZXNPblNhdHVyYXRpb24oKSBjbGF1c2UpLCB3ZSBjaGVjayBpdCB3aGVu
IHRoZQotICAgIC8vIGV4cGVjdGF0aW9uIGlzIHVzZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgotICAg
IENoZWNrQWN0aW9uQ291bnRJZk5vdERvbmUoKTsKLSAgICByZXR1cm4gIWlzX3JldGlyZWQoKSAm
JiBBbGxQcmVyZXF1aXNpdGVzQXJlU2F0aXNmaWVkKCkgJiYgTWF0Y2hlcyhhcmdzKTsKLSAgfQot
Ci0gIC8vIERlc2NyaWJlcyB0aGUgcmVzdWx0IG9mIG1hdGNoaW5nIHRoZSBhcmd1bWVudHMgYWdh
aW5zdCB0aGlzCi0gIC8vIGV4cGVjdGF0aW9uIHRvIHRoZSBnaXZlbiBvc3RyZWFtLgotICB2b2lk
IEV4cGxhaW5NYXRjaFJlc3VsdFRvKAotICAgICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncywK
LSAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QKLSAgICAgICAgICBHVEVTVF9FWENMVVNJ
VkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNz
ZXJ0SGVsZCgpOwotCi0gICAgaWYgKGlzX3JldGlyZWQoKSkgewotICAgICAgKm9zIDw8ICIgICAg
ICAgICBFeHBlY3RlZDogdGhlIGV4cGVjdGF0aW9uIGlzIGFjdGl2ZVxuIgotICAgICAgICAgIDw8
ICIgICAgICAgICAgIEFjdHVhbDogaXQgaXMgcmV0aXJlZFxuIjsKLSAgICB9IGVsc2UgaWYgKCFN
YXRjaGVzKGFyZ3MpKSB7Ci0gICAgICBpZiAoIVR1cGxlTWF0Y2hlcyhtYXRjaGVyc18sIGFyZ3Mp
KSB7Ci0gICAgICAgIEV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvKG1hdGNoZXJzXywgYXJncywg
b3MpOwotICAgICAgfQotICAgICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsK
LSAgICAgIGlmICghZXh0cmFfbWF0Y2hlcl8uTWF0Y2hBbmRFeHBsYWluKGFyZ3MsICZsaXN0ZW5l
cikpIHsKLSAgICAgICAgKm9zIDw8ICIgICAgRXhwZWN0ZWQgYXJnczogIjsKLSAgICAgICAgZXh0
cmFfbWF0Y2hlcl8uRGVzY3JpYmVUbyhvcyk7Ci0gICAgICAgICpvcyA8PCAiXG4gICAgICAgICAg
IEFjdHVhbDogZG9uJ3QgbWF0Y2giOwotCi0gICAgICAgIGludGVybmFsOjpQcmludElmTm90RW1w
dHkobGlzdGVuZXIuc3RyKCksIG9zKTsKLSAgICAgICAgKm9zIDw8ICJcbiI7Ci0gICAgICB9Ci0g
ICAgfSBlbHNlIGlmICghQWxsUHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpKSB7Ci0gICAgICAq
b3MgPDwgIiAgICAgICAgIEV4cGVjdGVkOiBhbGwgcHJlLXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmll
ZFxuIgotICAgICAgICAgIDw8ICIgICAgICAgICAgIEFjdHVhbDogdGhlIGZvbGxvd2luZyBpbW1l
ZGlhdGUgcHJlLXJlcXVpc2l0ZXMgIgotICAgICAgICAgIDw8ICJhcmUgbm90IHNhdGlzZmllZDpc
biI7Ci0gICAgICBFeHBlY3RhdGlvblNldCB1bnNhdGlzZmllZF9wcmVyZXFzOwotICAgICAgRmlu
ZFVuc2F0aXNmaWVkUHJlcmVxdWlzaXRlcygmdW5zYXRpc2ZpZWRfcHJlcmVxcyk7Ci0gICAgICBp
bnQgaSA9IDA7Ci0gICAgICBmb3IgKEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHVuc2F0aXNmaWVkX3ByZXJlcXMuYmVnaW4oKTsKLSAgICAgICAgICAgaXQgIT0gdW5zYXRpc2Zp
ZWRfcHJlcmVxcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpdC0+ZXhwZWN0YXRpb25fYmFzZSgp
LT5EZXNjcmliZUxvY2F0aW9uVG8ob3MpOwotICAgICAgICAqb3MgPDwgInByZS1yZXF1aXNpdGUg
IyIgPDwgaSsrIDw8ICJcbiI7Ci0gICAgICB9Ci0gICAgICAqb3MgPDwgIiAgICAgICAgICAgICAg
ICAgICAoZW5kIG9mIHByZS1yZXF1aXNpdGVzKVxuIjsKLSAgICB9IGVsc2UgewotICAgICAgLy8g
VGhpcyBsaW5lIGlzIGhlcmUganVzdCBmb3IgY29tcGxldGVuZXNzJyBzYWtlLiAgSXQgd2lsbCBu
ZXZlcgotICAgICAgLy8gYmUgZXhlY3V0ZWQgYXMgY3VycmVudGx5IHRoZSBFeHBsYWluTWF0Y2hS
ZXN1bHRUbygpIGZ1bmN0aW9uCi0gICAgICAvLyBpcyBjYWxsZWQgb25seSB3aGVuIHRoZSBtb2Nr
IGZ1bmN0aW9uIGNhbGwgZG9lcyBOT1QgbWF0Y2ggdGhlCi0gICAgICAvLyBleHBlY3RhdGlvbi4K
LSAgICAgICpvcyA8PCAiVGhlIGNhbGwgbWF0Y2hlcyB0aGUgZXhwZWN0YXRpb24uXG4iOwotICAg
IH0KLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGFjdGlvbiB0aGF0IHNob3VsZCBiZSB0YWtlbiBm
b3IgdGhlIGN1cnJlbnQgaW52b2NhdGlvbi4KLSAgY29uc3QgQWN0aW9uPEY+JiBHZXRDdXJyZW50
QWN0aW9uKAotICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJCYXNlPEY+KiBtb2NrZXIsCi0gICAg
ICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKSBjb25zdAotICAgICAgICAgIEdURVNUX0VYQ0xV
U0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5B
c3NlcnRIZWxkKCk7Ci0gICAgY29uc3QgaW50IGNvdW50ID0gY2FsbF9jb3VudCgpOwotICAgIEFz
c2VydChjb3VudCA+PSAxLCBfX0ZJTEVfXywgX19MSU5FX18sCi0gICAgICAgICAgICJjYWxsX2Nv
dW50KCkgaXMgPD0gMCB3aGVuIEdldEN1cnJlbnRBY3Rpb24oKSBpcyAiCi0gICAgICAgICAgICJj
YWxsZWQgLSB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4uIik7Ci0KLSAgICBjb25zdCBpbnQgYWN0
aW9uX2NvdW50ID0gc3RhdGljX2Nhc3Q8aW50Pih1bnR5cGVkX2FjdGlvbnNfLnNpemUoKSk7Ci0g
ICAgaWYgKGFjdGlvbl9jb3VudCA+IDAgJiYgIXJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfICYm
Ci0gICAgICAgIGNvdW50ID4gYWN0aW9uX2NvdW50KSB7Ci0gICAgICAvLyBJZiB0aGVyZSBpcyBh
dCBsZWFzdCBvbmUgV2lsbE9uY2UoKSBhbmQgbm8gV2lsbFJlcGVhdGVkbHkoKSwKLSAgICAgIC8v
IHdlIHdhcm4gdGhlIHVzZXIgd2hlbiB0aGUgV2lsbE9uY2UoKSBjbGF1c2VzIHJhbiBvdXQuCi0g
ICAgICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgICAgRGVzY3JpYmVMb2NhdGlvblRvKCZz
cyk7Ci0gICAgICBzcyA8PCAiQWN0aW9ucyByYW4gb3V0IGluICIgPDwgc291cmNlX3RleHQoKSA8
PCAiLi4uXG4iCi0gICAgICAgICA8PCAiQ2FsbGVkICIgPDwgY291bnQgPDwgIiB0aW1lcywgYnV0
IG9ubHkgIgotICAgICAgICAgPDwgYWN0aW9uX2NvdW50IDw8ICIgV2lsbE9uY2UoKSIKLSAgICAg
ICAgIDw8IChhY3Rpb25fY291bnQgPT0gMSA/ICIgaXMiIDogInMgYXJlIikgPDwgIiBzcGVjaWZp
ZWQgLSAiOwotICAgICAgbW9ja2VyLT5EZXNjcmliZURlZmF1bHRBY3Rpb25UbyhhcmdzLCAmc3Mp
OwotICAgICAgTG9nKGtXYXJuaW5nLCBzcy5zdHIoKSwgMSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGNvdW50IDw9IGFjdGlvbl9jb3VudCA/Ci0gICAgICAgICpzdGF0aWNfY2FzdDxjb25zdCBBY3Rp
b248Rj4qPih1bnR5cGVkX2FjdGlvbnNfW2NvdW50IC0gMV0pIDoKLSAgICAgICAgcmVwZWF0ZWRf
YWN0aW9uKCk7Ci0gIH0KLQotICAvLyBHaXZlbiB0aGUgYXJndW1lbnRzIG9mIGEgbW9jayBmdW5j
dGlvbiBjYWxsLCBpZiB0aGUgY2FsbCB3aWxsCi0gIC8vIG92ZXItc2F0dXJhdGUgdGhpcyBleHBl
Y3RhdGlvbiwgcmV0dXJucyB0aGUgZGVmYXVsdCBhY3Rpb247Ci0gIC8vIG90aGVyd2lzZSwgcmV0
dXJucyB0aGUgbmV4dCBhY3Rpb24gaW4gdGhpcyBleHBlY3RhdGlvbi4gIEFsc28KLSAgLy8gZGVz
Y3JpYmVzICp3aGF0KiBoYXBwZW5lZCB0byAnd2hhdCcsIGFuZCBleHBsYWlucyAqd2h5KiBHb29n
bGUKLSAgLy8gTW9jayBkb2VzIGl0IHRvICd3aHknLiAgVGhpcyBtZXRob2QgaXMgbm90IGNvbnN0
IGFzIGl0IGNhbGxzCi0gIC8vIEluY3JlbWVudENhbGxDb3VudCgpLiAgQSByZXR1cm4gdmFsdWUg
b2YgTlVMTCBtZWFucyB0aGUgZGVmYXVsdAotICAvLyBhY3Rpb24uCi0gIGNvbnN0IEFjdGlvbjxG
PiogR2V0QWN0aW9uRm9yQXJndW1lbnRzKAotICAgICAgY29uc3QgRnVuY3Rpb25Nb2NrZXJCYXNl
PEY+KiBtb2NrZXIsCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzLAotICAgICAgOjpz
dGQ6Om9zdHJlYW0qIHdoYXQsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogd2h5KQotICAgICAgICAg
IEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgZ19n
bW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gICAgaWYgKElzU2F0dXJhdGVkKCkpIHsKLSAgICAg
IC8vIFdlIGhhdmUgYW4gZXhjZXNzaXZlIGNhbGwuCi0gICAgICBJbmNyZW1lbnRDYWxsQ291bnQo
KTsKLSAgICAgICp3aGF0IDw8ICJNb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4g
ZXhwZWN0ZWQgLSAiOwotICAgICAgbW9ja2VyLT5EZXNjcmliZURlZmF1bHRBY3Rpb25Ubyhhcmdz
LCB3aGF0KTsKLSAgICAgIERlc2NyaWJlQ2FsbENvdW50VG8od2h5KTsKLQotICAgICAgLy8gVE9E
Tyh3YW5AZ29vZ2xlLmNvbSk6IGFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgd2hldGhlcgotICAg
ICAgLy8gdW5leHBlY3RlZCBjYWxscyBzaG91bGQgZmFpbCBpbW1lZGlhdGVseSBvciBjb250aW51
ZSB1c2luZyBhCi0gICAgICAvLyBmbGFnIC0tZ21vY2tfdW5leHBlY3RlZF9jYWxsc19hcmVfZmF0
YWwuCi0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBJbmNyZW1lbnRDYWxsQ291bnQo
KTsKLSAgICBSZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCk7Ci0KLSAgICBpZiAocmV0aXJlc19vbl9z
YXR1cmF0aW9uXyAmJiBJc1NhdHVyYXRlZCgpKSB7Ci0gICAgICBSZXRpcmUoKTsKLSAgICB9Ci0K
LSAgICAvLyBNdXN0IGJlIGRvbmUgYWZ0ZXIgSW5jcmVtZW50Q291bnQoKSEKLSAgICAqd2hhdCA8
PCAiTW9jayBmdW5jdGlvbiBjYWxsIG1hdGNoZXMgIiA8PCBzb3VyY2VfdGV4dCgpIDw8Ii4uLlxu
IjsKLSAgICByZXR1cm4gJihHZXRDdXJyZW50QWN0aW9uKG1vY2tlciwgYXJncykpOwotICB9Ci0K
LSAgLy8gQWxsIHRoZSBmaWVsZHMgYmVsb3cgd29uJ3QgY2hhbmdlIG9uY2UgdGhlIEVYUEVDVF9D
QUxMKCkKLSAgLy8gc3RhdGVtZW50IGZpbmlzaGVzLgotICBGdW5jdGlvbk1vY2tlckJhc2U8Rj4q
IGNvbnN0IG93bmVyXzsKLSAgQXJndW1lbnRNYXRjaGVyVHVwbGUgbWF0Y2hlcnNfOwotICBNYXRj
aGVyPGNvbnN0IEFyZ3VtZW50VHVwbGUmPiBleHRyYV9tYXRjaGVyXzsKLSAgQWN0aW9uPEY+IHJl
cGVhdGVkX2FjdGlvbl87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUeXBl
ZEV4cGVjdGF0aW9uKTsKLX07ICAvLyBjbGFzcyBUeXBlZEV4cGVjdGF0aW9uCi0KLS8vIEEgTW9j
a1NwZWMgb2JqZWN0IGlzIHVzZWQgYnkgT05fQ0FMTCgpIG9yIEVYUEVDVF9DQUxMKCkgZm9yCi0v
LyBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mLCBvciBleHBlY3RhdGlvbiBvbiwg
YSBtb2NrCi0vLyBmdW5jdGlvbi4KLQotLy8gTm90ZTogY2xhc3MgTW9ja1NwZWMgcmVhbGx5IGJl
bG9uZ3MgdG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCi0vLyBIb3dldmVyIGlmIHdlIGRlZmlu
ZSBpdCBpbiA6OnRlc3RpbmcsIE1TVkMgd2lsbCBjb21wbGFpbiB3aGVuCi0vLyBjbGFzc2VzIGlu
IDo6dGVzdGluZzo6aW50ZXJuYWwgZGVjbGFyZSBpdCBhcyBhIGZyaWVuZCBjbGFzcwotLy8gdGVt
cGxhdGUuICBUbyB3b3JrYXJvdW5kIHRoaXMgY29tcGlsZXIgYnVnLCB3ZSBkZWZpbmUgTW9ja1Nw
ZWMgaW4KLS8vIDo6dGVzdGluZzo6aW50ZXJuYWwgYW5kIGltcG9ydCBpdCBpbnRvIDo6dGVzdGlu
Zy4KLQotLy8gTG9ncyBhIG1lc3NhZ2UgaW5jbHVkaW5nIGZpbGUgYW5kIGxpbmUgbnVtYmVyIGlu
Zm9ybWF0aW9uLgotR1RFU1RfQVBJXyB2b2lkIExvZ1dpdGhMb2NhdGlvbih0ZXN0aW5nOjppbnRl
cm5hbDo6TG9nU2V2ZXJpdHkgc2V2ZXJpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBGPgotY2xhc3MgTW9ja1NwZWMgewotIHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbnRl
cm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUgQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3Rpb248Rj46OkFyZ3VtZW50TWF0Y2hlclR1cGxlCi0g
ICAgICBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLQotICAvLyBDb25zdHJ1Y3RzIGEgTW9ja1NwZWMg
b2JqZWN0LCBnaXZlbiB0aGUgZnVuY3Rpb24gbW9ja2VyIG9iamVjdAotICAvLyB0aGF0IHRoZSBz
cGVjIGlzIGFzc29jaWF0ZWQgd2l0aC4KLSAgZXhwbGljaXQgTW9ja1NwZWMoaW50ZXJuYWw6OkZ1
bmN0aW9uTW9ja2VyQmFzZTxGPiogZnVuY3Rpb25fbW9ja2VyKQotICAgICAgOiBmdW5jdGlvbl9t
b2NrZXJfKGZ1bmN0aW9uX21vY2tlcikge30KLQotICAvLyBBZGRzIGEgbmV3IGRlZmF1bHQgYWN0
aW9uIHNwZWMgdG8gdGhlIGZ1bmN0aW9uIG1vY2tlciBhbmQgcmV0dXJucwotICAvLyB0aGUgbmV3
bHkgY3JlYXRlZCBzcGVjLgotICBpbnRlcm5hbDo6T25DYWxsU3BlYzxGPiYgSW50ZXJuYWxEZWZh
dWx0QWN0aW9uU2V0QXQoCi0gICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogb2JqLCBjb25zdCBjaGFyKiBjYWxsKSB7Ci0gICAgTG9nV2l0aExvY2F0aW9uKGludGVy
bmFsOjprSW5mbywgZmlsZSwgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmco
Ik9OX0NBTEwoIikgKyBvYmogKyAiLCAiICsgY2FsbCArICIpIGludm9rZWQiKTsKLSAgICByZXR1
cm4gZnVuY3Rpb25fbW9ja2VyXy0+QWRkTmV3T25DYWxsU3BlYyhmaWxlLCBsaW5lLCBtYXRjaGVy
c18pOwotICB9Ci0KLSAgLy8gQWRkcyBhIG5ldyBleHBlY3RhdGlvbiBzcGVjIHRvIHRoZSBmdW5j
dGlvbiBtb2NrZXIgYW5kIHJldHVybnMKLSAgLy8gdGhlIG5ld2x5IGNyZWF0ZWQgc3BlYy4KLSAg
aW50ZXJuYWw6OlR5cGVkRXhwZWN0YXRpb248Rj4mIEludGVybmFsRXhwZWN0ZWRBdCgKLSAgICAg
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBvYmosIGNvbnN0IGNoYXIq
IGNhbGwpIHsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzb3VyY2VfdGV4dChzdGQ6OnN0cmluZygi
RVhQRUNUX0NBTEwoIikgKyBvYmogKyAiLCAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsICsgIikiKTsKLSAgICBMb2dXaXRoTG9jYXRpb24oaW50ZXJuYWw6OmtJbmZv
LCBmaWxlLCBsaW5lLCBzb3VyY2VfdGV4dCArICIgaW52b2tlZCIpOwotICAgIHJldHVybiBmdW5j
dGlvbl9tb2NrZXJfLT5BZGROZXdFeHBlY3RhdGlvbigKLSAgICAgICAgZmlsZSwgbGluZSwgc291
cmNlX3RleHQsIG1hdGNoZXJzXyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdGlvbj4KLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpGdW5jdGlvbk1vY2tlcjsK
LQotICB2b2lkIFNldE1hdGNoZXJzKGNvbnN0IEFyZ3VtZW50TWF0Y2hlclR1cGxlJiBtYXRjaGVy
cykgewotICAgIG1hdGNoZXJzXyA9IG1hdGNoZXJzOwotICB9Ci0KLSAgLy8gVGhlIGZ1bmN0aW9u
IG1vY2tlciB0aGF0IG93bnMgdGhpcyBzcGVjLgotICBpbnRlcm5hbDo6RnVuY3Rpb25Nb2NrZXJC
YXNlPEY+KiBjb25zdCBmdW5jdGlvbl9tb2NrZXJfOwotICAvLyBUaGUgYXJndW1lbnQgbWF0Y2hl
cnMgc3BlY2lmaWVkIGluIHRoZSBzcGVjLgotICBBcmd1bWVudE1hdGNoZXJUdXBsZSBtYXRjaGVy
c187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhNb2NrU3BlYyk7Ci19OyAgLy8gY2xhc3Mg
TW9ja1NwZWMKLQotLy8gV3JhcHBlciB0eXBlIGZvciBnZW5lcmljYWxseSBob2xkaW5nIGFuIG9y
ZGluYXJ5IHZhbHVlIG9yIGx2YWx1ZSByZWZlcmVuY2UuCi0vLyBJZiBUIGlzIG5vdCBhIHJlZmVy
ZW5jZSB0eXBlLCBpdCBtdXN0IGJlIGNvcHlhYmxlIG9yIG1vdmFibGUuCi0vLyBSZWZlcmVuY2VP
clZhbHVlV3JhcHBlcjxUPiBpcyBtb3ZhYmxlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcHlhYmxlIHVu
bGVzcwotLy8gVCBpcyBhIG1vdmUtb25seSB2YWx1ZSB0eXBlICh3aGljaCBtZWFucyB0aGF0IGl0
IHdpbGwgYWx3YXlzIGJlIGNvcHlhYmxlCi0vLyBpZiB0aGUgY3VycmVudCBwbGF0Zm9ybSBkb2Vz
IG5vdCBzdXBwb3J0IG1vdmUgc2VtYW50aWNzKS4KLS8vCi0vLyBUaGUgcHJpbWFyeSB0ZW1wbGF0
ZSBkZWZpbmVzIGhhbmRsaW5nIGZvciB2YWx1ZXMsIGJ1dCBmdW5jdGlvbiBoZWFkZXIKLS8vIGNv
bW1lbnRzIGRlc2NyaWJlIHRoZSBjb250cmFjdCBmb3IgdGhlIHdob2xlIHRlbXBsYXRlIChpbmNs
dWRpbmcKLS8vIHNwZWNpYWxpemF0aW9ucykuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFJlZmVyZW5jZU9yVmFsdWVXcmFwcGVyIHsKLSBwdWJsaWM6Ci0gIC8vIENvbnN0cnVjdHMgYSB3
cmFwcGVyIGZyb20gdGhlIGdpdmVuIHZhbHVlL3JlZmVyZW5jZS4KLSAgZXhwbGljaXQgUmVmZXJl
bmNlT3JWYWx1ZVdyYXBwZXIoVCB2YWx1ZSkKLSAgICAgIDogdmFsdWVfKDo6dGVzdGluZzo6aW50
ZXJuYWw6Om1vdmUodmFsdWUpKSB7Ci0gIH0KLQotICAvLyBVbndyYXBzIGFuZCByZXR1cm5zIHRo
ZSB1bmRlcmx5aW5nIHZhbHVlL3JlZmVyZW5jZSwgZXhhY3RseSBhcwotICAvLyBvcmlnaW5hbGx5
IHBhc3NlZC4gVGhlIGJlaGF2aW9yIG9mIGNhbGxpbmcgdGhpcyBtb3JlIHRoYW4gb25jZSBvbgot
ICAvLyB0aGUgc2FtZSBvYmplY3QgaXMgdW5zcGVjaWZpZWQuCi0gIFQgVW53cmFwKCkgeyByZXR1
cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6bW92ZSh2YWx1ZV8pOyB9Ci0KLSAgLy8gUHJvdmlkZXMg
bm9uZGVzdHJ1Y3RpdmUgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIHZhbHVlL3JlZmVyZW5jZS4K
LSAgLy8gQWx3YXlzIHJldHVybnMgYSBjb25zdCByZWZlcmVuY2UgKG1vcmUgcHJlY2lzZWx5LAot
ICAvLyBjb25zdCBSZW1vdmVSZWZlcmVuY2U8VD4mKS4gVGhlIGJlaGF2aW9yIG9mIGNhbGxpbmcg
dGhpcyBhZnRlcgotICAvLyBjYWxsaW5nIFVud3JhcCBvbiB0aGUgc2FtZSBvYmplY3QgaXMgdW5z
cGVjaWZpZWQuCi0gIGNvbnN0IFQmIFBlZWsoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXzsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgVCB2YWx1ZV87Ci19OwotCi0vLyBTcGVjaWFsaXphdGlvbiBm
b3IgbHZhbHVlIHJlZmVyZW5jZSB0eXBlcy4gU2VlIHByaW1hcnkgdGVtcGxhdGUKLS8vIGZvciBk
b2N1bWVudGF0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBSZWZlcmVuY2VPclZh
bHVlV3JhcHBlcjxUJj4gewotIHB1YmxpYzoKLSAgLy8gV29ya2Fyb3VuZCBmb3IgZGViYXRhYmxl
IHBhc3MtYnktcmVmZXJlbmNlIGxpbnQgd2FybmluZyAoYy1saWJyYXJ5LXRlYW0KLSAgLy8gcG9s
aWN5IHByZWNsdWRlcyBOT0xJTlQgaW4gdGhpcyBjb250ZXh0KQotICB0eXBlZGVmIFQmIHJlZmVy
ZW5jZTsKLSAgZXhwbGljaXQgUmVmZXJlbmNlT3JWYWx1ZVdyYXBwZXIocmVmZXJlbmNlIHJlZikK
LSAgICAgIDogdmFsdWVfcHRyXygmcmVmKSB7fQotICBUJiBVbndyYXAoKSB7IHJldHVybiAqdmFs
dWVfcHRyXzsgfQotICBjb25zdCBUJiBQZWVrKCkgY29uc3QgeyByZXR1cm4gKnZhbHVlX3B0cl87
IH0KLQotIHByaXZhdGU6Ci0gIFQqIHZhbHVlX3B0cl87Ci19OwotCi0vLyBNU1ZDIHdhcm5zIGFi
b3V0IHVzaW5nICd0aGlzJyBpbiBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0LCBzbwotLy8g
d2UgbmVlZCB0byB0ZW1wb3JhcmlseSBkaXNhYmxlIHRoZSB3YXJuaW5nLiAgV2UgaGF2ZSB0byBk
byBpdCBmb3IKLS8vIHRoZSBlbnRpcmUgY2xhc3MgdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmcsIGV2
ZW4gdGhvdWdoIGl0J3MgYWJvdXQKLS8vIHRoZSBjb25zdHJ1Y3RvciBvbmx5LgotCi0jaWZkZWYg
X01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkgICAgICAgICAgLy8gU2F2ZXMgdGhlIGN1
cnJlbnQgd2FybmluZyBzdGF0ZS4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzU1KSAgLy8g
VGVtcG9yYXJpbHkgZGlzYWJsZXMgd2FybmluZyA0MzU1LgotI2VuZGlmICAvLyBfTVNWX1ZFUgot
Ci0vLyBDKysgdHJlYXRzIHRoZSB2b2lkIHR5cGUgc3BlY2lhbGx5LiAgRm9yIGV4YW1wbGUsIHlv
dSBjYW5ub3QgZGVmaW5lCi0vLyBhIHZvaWQtdHlwZWQgdmFyaWFibGUgb3IgcGFzcyBhIHZvaWQg
dmFsdWUgdG8gYSBmdW5jdGlvbi4KLS8vIEFjdGlvblJlc3VsdEhvbGRlcjxUPiBob2xkcyBhIHZh
bHVlIG9mIHR5cGUgVCwgd2hlcmUgVCBtdXN0IGJlIGEKLS8vIGNvcHlhYmxlIHR5cGUgb3Igdm9p
ZCAoVCBkb2Vzbid0IG5lZWQgdG8gYmUgZGVmYXVsdC1jb25zdHJ1Y3RhYmxlKS4KLS8vIEl0IGhp
ZGVzIHRoZSBzeW50YWN0aWMgZGlmZmVyZW5jZSBiZXR3ZWVuIHZvaWQgYW5kIG90aGVyIHR5cGVz
LCBhbmQKLS8vIGlzIHVzZWQgdG8gdW5pZnkgdGhlIGNvZGUgZm9yIGludm9raW5nIGJvdGggdm9p
ZC1yZXR1cm5pbmcgYW5kCi0vLyBub24tdm9pZC1yZXR1cm5pbmcgbW9jayBmdW5jdGlvbnMuCi0K
LS8vIFVudHlwZWQgYmFzZSBjbGFzcyBmb3IgQWN0aW9uUmVzdWx0SG9sZGVyPFQ+LgotY2xhc3Mg
VW50eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+VW50
eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UoKSB7fQotCi0gIC8vIFByaW50cyB0aGUgaGVsZCB2
YWx1ZSBhcyBhbiBhY3Rpb24ncyByZXN1bHQgdG8gb3MuCi0gIHZpcnR1YWwgdm9pZCBQcmludEFz
QWN0aW9uUmVzdWx0KDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgPSAwOwotfTsKLQotLy8gVGhp
cyBnZW5lcmljIGRlZmluaXRpb24gaXMgdXNlZCB3aGVuIFQgaXMgbm90IHZvaWQuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFjdGlvblJlc3VsdEhvbGRlciA6IHB1YmxpYyBVbnR5cGVk
QWN0aW9uUmVzdWx0SG9sZGVyQmFzZSB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRoZSBoZWxk
IHZhbHVlLiBNdXN0IG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCi0gIFQgVW53cmFwKCkg
ewotICAgIHJldHVybiByZXN1bHRfLlVud3JhcCgpOwotICB9Ci0KLSAgLy8gUHJpbnRzIHRoZSBo
ZWxkIHZhbHVlIGFzIGFuIGFjdGlvbidzIHJlc3VsdCB0byBvcy4KLSAgdmlydHVhbCB2b2lkIFBy
aW50QXNBY3Rpb25SZXN1bHQoOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8
ICJcbiAgICAgICAgICBSZXR1cm5zOiAiOwotICAgIC8vIFQgbWF5IGJlIGEgcmVmZXJlbmNlIHR5
cGUsIHNvIHdlIGRvbid0IHVzZSBVbml2ZXJzYWxQcmludCgpLgotICAgIFVuaXZlcnNhbFByaW50
ZXI8VD46OlByaW50KHJlc3VsdF8uUGVlaygpLCBvcyk7Ci0gIH0KLQotICAvLyBQZXJmb3JtcyB0
aGUgZ2l2ZW4gbW9jayBmdW5jdGlvbidzIGRlZmF1bHQgYWN0aW9uIGFuZCByZXR1cm5zIHRoZQot
ICAvLyByZXN1bHQgaW4gYSBuZXctZWQgQWN0aW9uUmVzdWx0SG9sZGVyLgotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRj4KLSAgc3RhdGljIEFjdGlvblJlc3VsdEhvbGRlciogUGVyZm9ybURlZmF1bHRB
Y3Rpb24oCi0gICAgICBjb25zdCBGdW5jdGlvbk1vY2tlckJhc2U8Rj4qIGZ1bmNfbW9ja2VyLAot
ICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50VHVwbGUmIGFyZ3MsCi0g
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlwdGlvbikgewotICAgIHJldHVybiBu
ZXcgQWN0aW9uUmVzdWx0SG9sZGVyKFdyYXBwZXIoCi0gICAgICAgIGZ1bmNfbW9ja2VyLT5QZXJm
b3JtRGVmYXVsdEFjdGlvbihhcmdzLCBjYWxsX2Rlc2NyaXB0aW9uKSkpOwotICB9Ci0KLSAgLy8g
UGVyZm9ybXMgdGhlIGdpdmVuIGFjdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGluIGEgbmV3
LWVkCi0gIC8vIEFjdGlvblJlc3VsdEhvbGRlci4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0g
IHN0YXRpYyBBY3Rpb25SZXN1bHRIb2xkZXIqCi0gIFBlcmZvcm1BY3Rpb24oY29uc3QgQWN0aW9u
PEY+JiBhY3Rpb24sCi0gICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46
OkFyZ3VtZW50VHVwbGUmIGFyZ3MpIHsKLSAgICByZXR1cm4gbmV3IEFjdGlvblJlc3VsdEhvbGRl
cihXcmFwcGVyKGFjdGlvbi5QZXJmb3JtKGFyZ3MpKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHR5
cGVkZWYgUmVmZXJlbmNlT3JWYWx1ZVdyYXBwZXI8VD4gV3JhcHBlcjsKLQotICBleHBsaWNpdCBB
Y3Rpb25SZXN1bHRIb2xkZXIoV3JhcHBlciByZXN1bHQpCi0gICAgICA6IHJlc3VsdF8oOjp0ZXN0
aW5nOjppbnRlcm5hbDo6bW92ZShyZXN1bHQpKSB7Ci0gIH0KLQotICBXcmFwcGVyIHJlc3VsdF87
Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBY3Rpb25SZXN1bHRIb2xkZXIp
OwotfTsKLQotLy8gU3BlY2lhbGl6YXRpb24gZm9yIFQgPSB2b2lkLgotdGVtcGxhdGUgPD4KLWNs
YXNzIEFjdGlvblJlc3VsdEhvbGRlcjx2b2lkPiA6IHB1YmxpYyBVbnR5cGVkQWN0aW9uUmVzdWx0
SG9sZGVyQmFzZSB7Ci0gcHVibGljOgotICB2b2lkIFVud3JhcCgpIHsgfQotCi0gIHZpcnR1YWwg
dm9pZCBQcmludEFzQWN0aW9uUmVzdWx0KDo6c3RkOjpvc3RyZWFtKiAvKiBvcyAqLykgY29uc3Qg
e30KLQotICAvLyBQZXJmb3JtcyB0aGUgZ2l2ZW4gbW9jayBmdW5jdGlvbidzIGRlZmF1bHQgYWN0
aW9uIGFuZCByZXR1cm5zIG93bmVyc2hpcAotICAvLyBvZiBhbiBlbXB0eSBBY3Rpb25SZXN1bHRI
b2xkZXIqLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgc3RhdGljIEFjdGlvblJlc3VsdEhv
bGRlciogUGVyZm9ybURlZmF1bHRBY3Rpb24oCi0gICAgICBjb25zdCBGdW5jdGlvbk1vY2tlckJh
c2U8Rj4qIGZ1bmNfbW9ja2VyLAotICAgICAgY29uc3QgdHlwZW5hbWUgRnVuY3Rpb248Rj46OkFy
Z3VtZW50VHVwbGUmIGFyZ3MsCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2FsbF9kZXNjcmlw
dGlvbikgewotICAgIGZ1bmNfbW9ja2VyLT5QZXJmb3JtRGVmYXVsdEFjdGlvbihhcmdzLCBjYWxs
X2Rlc2NyaXB0aW9uKTsKLSAgICByZXR1cm4gbmV3IEFjdGlvblJlc3VsdEhvbGRlcjsKLSAgfQot
Ci0gIC8vIFBlcmZvcm1zIHRoZSBnaXZlbiBhY3Rpb24gYW5kIHJldHVybnMgb3duZXJzaGlwIG9m
IGFuIGVtcHR5Ci0gIC8vIEFjdGlvblJlc3VsdEhvbGRlciouCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGPgotICBzdGF0aWMgQWN0aW9uUmVzdWx0SG9sZGVyKiBQZXJmb3JtQWN0aW9uKAotICAgICAg
Y29uc3QgQWN0aW9uPEY+JiBhY3Rpb24sCi0gICAgICBjb25zdCB0eXBlbmFtZSBGdW5jdGlvbjxG
Pjo6QXJndW1lbnRUdXBsZSYgYXJncykgewotICAgIGFjdGlvbi5QZXJmb3JtKGFyZ3MpOwotICAg
IHJldHVybiBuZXcgQWN0aW9uUmVzdWx0SG9sZGVyOwotICB9Ci0KLSBwcml2YXRlOgotICBBY3Rp
b25SZXN1bHRIb2xkZXIoKSB7fQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEFj
dGlvblJlc3VsdEhvbGRlcik7Ci19OwotCi0vLyBUaGUgYmFzZSBvZiB0aGUgZnVuY3Rpb24gbW9j
a2VyIGNsYXNzIGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24gdHlwZS4KLS8vIFdlIHB1dCB0aGUgbWV0
aG9kcyBpbiB0aGlzIGNsYXNzIGluc3RlYWQgb2YgaXRzIGNoaWxkIHRvIGF2b2lkIGNvZGUKLS8v
IGJsb2F0LgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1jbGFzcyBGdW5jdGlvbk1vY2tlckJhc2Ug
OiBwdWJsaWMgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSB7Ci0gcHVibGljOgotICB0eXBlZGVm
IHR5cGVuYW1lIEZ1bmN0aW9uPEY+OjpSZXN1bHQgUmVzdWx0OwotICB0eXBlZGVmIHR5cGVuYW1l
IEZ1bmN0aW9uPEY+OjpBcmd1bWVudFR1cGxlIEFyZ3VtZW50VHVwbGU7Ci0gIHR5cGVkZWYgdHlw
ZW5hbWUgRnVuY3Rpb248Rj46OkFyZ3VtZW50TWF0Y2hlclR1cGxlIEFyZ3VtZW50TWF0Y2hlclR1
cGxlOwotCi0gIEZ1bmN0aW9uTW9ja2VyQmFzZSgpIDogY3VycmVudF9zcGVjXyh0aGlzKSB7fQot
Ci0gIC8vIFRoZSBkZXN0cnVjdG9yIHZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9ucyBvbiB0
aGlzIG1vY2sKLSAgLy8gZnVuY3Rpb24gaGF2ZSBiZWVuIHNhdGlzZmllZC4gIElmIG5vdCwgaXQg
d2lsbCByZXBvcnQgR29vZ2xlIFRlc3QKLSAgLy8gbm9uLWZhdGFsIGZhaWx1cmVzIGZvciB0aGUg
dmlvbGF0aW9ucy4KLSAgdmlydHVhbCB+RnVuY3Rpb25Nb2NrZXJCYXNlKCkKLSAgICAgICAgR1RF
U1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgewotICAgIE11dGV4TG9jayBsKCZnX2dt
b2NrX211dGV4KTsKLSAgICBWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpOwotICAg
IE1vY2s6OlVucmVnaXN0ZXJMb2NrZWQodGhpcyk7Ci0gICAgQ2xlYXJEZWZhdWx0QWN0aW9uc0xv
Y2tlZCgpOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgT05fQ0FMTCBzcGVjIHRoYXQgbWF0Y2hl
cyB0aGlzIG1vY2sgZnVuY3Rpb24gd2l0aCB0aGUKLSAgLy8gZ2l2ZW4gYXJndW1lbnRzOyByZXR1
cm5zIE5VTEwgaWYgbm8gbWF0Y2hpbmcgT05fQ0FMTCBpcyBmb3VuZC4KLSAgLy8gTCA9ICoKLSAg
Y29uc3QgT25DYWxsU3BlYzxGPiogRmluZE9uQ2FsbFNwZWMoCi0gICAgICBjb25zdCBBcmd1bWVu
dFR1cGxlJiBhcmdzKSBjb25zdCB7Ci0gICAgZm9yIChVbnR5cGVkT25DYWxsU3BlY3M6OmNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgaXQKLSAgICAgICAgICAgICA9IHVudHlwZWRfb25fY2FsbF9zcGVj
c18ucmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSB1bnR5cGVkX29uX2NhbGxfc3BlY3NfLnJlbmQo
KTsgKytpdCkgewotICAgICAgY29uc3QgT25DYWxsU3BlYzxGPiogc3BlYyA9IHN0YXRpY19jYXN0
PGNvbnN0IE9uQ2FsbFNwZWM8Rj4qPigqaXQpOwotICAgICAgaWYgKHNwZWMtPk1hdGNoZXMoYXJn
cykpCi0gICAgICAgIHJldHVybiBzcGVjOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotICB9
Ci0KLSAgLy8gUGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoaXMgbW9jayBmdW5jdGlv
biBvbiB0aGUgZ2l2ZW4KLSAgLy8gYXJndW1lbnRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIEFz
c2VydHMgKG9yIHRocm93cyBpZgotICAvLyBleGNlcHRpb25zIGFyZSBlbmFibGVkKSB3aXRoIGEg
aGVscGZ1bCBjYWxsIGRlc2NycHRpb24gaWYgdGhlcmUKLSAgLy8gaXMgbm8gdmFsaWQgcmV0dXJu
IHZhbHVlLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGRlcGVuZCBvbiB0aGUKLSAgLy8gbXV0YWJsZSBz
dGF0ZSBvZiB0aGlzIG9iamVjdCwgYW5kIHRodXMgY2FuIGJlIGNhbGxlZCBjb25jdXJyZW50bHkK
LSAgLy8gd2l0aG91dCBsb2NraW5nLgotICAvLyBMID0gKgotICBSZXN1bHQgUGVyZm9ybURlZmF1
bHRBY3Rpb24oY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjYWxsX2Rlc2NyaXB0aW9uKSBjb25zdCB7Ci0g
ICAgY29uc3QgT25DYWxsU3BlYzxGPiogY29uc3Qgc3BlYyA9Ci0gICAgICAgIHRoaXMtPkZpbmRP
bkNhbGxTcGVjKGFyZ3MpOwotICAgIGlmIChzcGVjICE9IE5VTEwpIHsKLSAgICAgIHJldHVybiBz
cGVjLT5HZXRBY3Rpb24oKS5QZXJmb3JtKGFyZ3MpOwotICAgIH0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBtZXNzYWdlID0KLSAgICAgICAgY2FsbF9kZXNjcmlwdGlvbiArCi0gICAgICAgICJcbiAg
ICBUaGUgbW9jayBmdW5jdGlvbiBoYXMgbm8gZGVmYXVsdCBhY3Rpb24gIgotICAgICAgICAic2V0
LCBhbmQgaXRzIHJldHVybiB0eXBlIGhhcyBubyBkZWZhdWx0IHZhbHVlIHNldC4iOwotI2lmIEdU
RVNUX0hBU19FWENFUFRJT05TCi0gICAgaWYgKCFEZWZhdWx0VmFsdWU8UmVzdWx0Pjo6RXhpc3Rz
KCkpIHsKLSAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihtZXNzYWdlKTsKLSAgICB9Ci0j
ZWxzZQotICAgIEFzc2VydChEZWZhdWx0VmFsdWU8UmVzdWx0Pjo6RXhpc3RzKCksICIiLCAtMSwg
bWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gRGVmYXVsdFZhbHVlPFJlc3VsdD46OkdldCgp
OwotICB9Ci0KLSAgLy8gUGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uIHdpdGggdGhlIGdpdmVu
IGFyZ3VtZW50cyBhbmQgcmV0dXJucwotICAvLyB0aGUgYWN0aW9uJ3MgcmVzdWx0LiAgVGhlIGNh
bGwgZGVzY3JpcHRpb24gc3RyaW5nIHdpbGwgYmUgdXNlZCBpbgotICAvLyB0aGUgZXJyb3IgbWVz
c2FnZSB0byBkZXNjcmliZSB0aGUgY2FsbCBpbiB0aGUgY2FzZSB0aGUgZGVmYXVsdAotICAvLyBh
Y3Rpb24gZmFpbHMuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUg
cmVzdWx0LgotICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJC
YXNlKiBVbnR5cGVkUGVyZm9ybURlZmF1bHRBY3Rpb24oCi0gICAgICBjb25zdCB2b2lkKiB1bnR5
cGVkX2FyZ3MsICAvLyBtdXN0IHBvaW50IHRvIGFuIEFyZ3VtZW50VHVwbGUKLSAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBjYWxsX2Rlc2NyaXB0aW9uKSBjb25zdCB7Ci0gICAgY29uc3QgQXJndW1l
bnRUdXBsZSYgYXJncyA9Ci0gICAgICAgICpzdGF0aWNfY2FzdDxjb25zdCBBcmd1bWVudFR1cGxl
Kj4odW50eXBlZF9hcmdzKTsKLSAgICByZXR1cm4gUmVzdWx0SG9sZGVyOjpQZXJmb3JtRGVmYXVs
dEFjdGlvbih0aGlzLCBhcmdzLCBjYWxsX2Rlc2NyaXB0aW9uKTsKLSAgfQotCi0gIC8vIFBlcmZv
cm1zIHRoZSBnaXZlbiBhY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFuZCByZXR1cm5z
Ci0gIC8vIHRoZSBhY3Rpb24ncyByZXN1bHQuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv
ciBkZWxldGluZyB0aGUKLSAgLy8gcmVzdWx0LgotICAvLyBMID0gKgotICB2aXJ0dWFsIFVudHlw
ZWRBY3Rpb25SZXN1bHRIb2xkZXJCYXNlKiBVbnR5cGVkUGVyZm9ybUFjdGlvbigKLSAgICAgIGNv
bnN0IHZvaWQqIHVudHlwZWRfYWN0aW9uLCBjb25zdCB2b2lkKiB1bnR5cGVkX2FyZ3MpIGNvbnN0
IHsKLSAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgYWN0aW9uIGJlZm9yZSBwZXJmb3JtaW5nIGl0
LCBpbiBjYXNlIHRoZQotICAgIC8vIGFjdGlvbiBkZWxldGVzIHRoZSBtb2NrIG9iamVjdCAoYW5k
IHRodXMgZGVsZXRlcyBpdHNlbGYpLgotICAgIGNvbnN0IEFjdGlvbjxGPiBhY3Rpb24gPSAqc3Rh
dGljX2Nhc3Q8Y29uc3QgQWN0aW9uPEY+Kj4odW50eXBlZF9hY3Rpb24pOwotICAgIGNvbnN0IEFy
Z3VtZW50VHVwbGUmIGFyZ3MgPQotICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRU
dXBsZSo+KHVudHlwZWRfYXJncyk7Ci0gICAgcmV0dXJuIFJlc3VsdEhvbGRlcjo6UGVyZm9ybUFj
dGlvbihhY3Rpb24sIGFyZ3MpOwotICB9Ci0KLSAgLy8gSW1wbGVtZW50cyBVbnR5cGVkRnVuY3Rp
b25Nb2NrZXJCYXNlOjpDbGVhckRlZmF1bHRBY3Rpb25zTG9ja2VkKCk6Ci0gIC8vIGNsZWFycyB0
aGUgT05fQ0FMTCgpcyBzZXQgb24gdGhpcyBtb2NrIGZ1bmN0aW9uLgotICB2aXJ0dWFsIHZvaWQg
Q2xlYXJEZWZhdWx0QWN0aW9uc0xvY2tlZCgpCi0gICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgp
OwotCi0gICAgLy8gRGVsZXRpbmcgb3VyIGRlZmF1bHQgYWN0aW9ucyBtYXkgdHJpZ2dlciBvdGhl
ciBtb2NrIG9iamVjdHMgdG8gYmUKLSAgICAvLyBkZWxldGVkLCBmb3IgZXhhbXBsZSBpZiBhbiBh
Y3Rpb24gY29udGFpbnMgYSByZWZlcmVuY2UgY291bnRlZCBzbWFydAotICAgIC8vIHBvaW50ZXIg
dG8gdGhhdCBtb2NrIG9iamVjdCwgYW5kIHRoYXQgaXMgdGhlIGxhc3QgcmVmZXJlbmNlLiBTbyBp
ZiB3ZQotICAgIC8vIGRlbGV0ZSBvdXIgYWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhl
IGdsb2JhbCBtdXRleCB3ZSBtYXkgZGVhZGxvY2sKLSAgICAvLyB3aGVuIHRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBhZ2Fpbi4gSW5zdGVhZCwgbWFrZSBhIGNvcHkgb2YgdGhlIHNldCBvZgotICAgIC8v
IGFjdGlvbnMgdG8gZGVsZXRlLCBjbGVhciBvdXIgc2V0IHdpdGhpbiB0aGUgbXV0ZXgsIGFuZCB0
aGVuIGRlbGV0ZSB0aGUKLSAgICAvLyBhY3Rpb25zIG91dHNpZGUgb2YgdGhlIG11dGV4LgotICAg
IFVudHlwZWRPbkNhbGxTcGVjcyBzcGVjc190b19kZWxldGU7Ci0gICAgdW50eXBlZF9vbl9jYWxs
X3NwZWNzXy5zd2FwKHNwZWNzX3RvX2RlbGV0ZSk7Ci0KLSAgICBnX2dtb2NrX211dGV4LlVubG9j
aygpOwotICAgIGZvciAoVW50eXBlZE9uQ2FsbFNwZWNzOjpjb25zdF9pdGVyYXRvciBpdCA9Ci0g
ICAgICAgICAgICAgc3BlY3NfdG9fZGVsZXRlLmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBzcGVj
c190b19kZWxldGUuZW5kKCk7ICsraXQpIHsKLSAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxjb25z
dCBPbkNhbGxTcGVjPEY+Kj4oKml0KTsKLSAgICB9Ci0KLSAgICAvLyBMb2NrIHRoZSBtdXRleCBh
Z2Fpbiwgc2luY2UgdGhlIGNhbGxlciBleHBlY3RzIGl0IHRvIGJlIGxvY2tlZCB3aGVuIHdlCi0g
ICAgLy8gcmV0dXJuLgotICAgIGdfZ21vY2tfbXV0ZXguTG9jaygpOwotICB9Ci0KLSBwcm90ZWN0
ZWQ6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KLSAgZnJpZW5kIGNsYXNzIE1vY2tT
cGVjOwotCi0gIHR5cGVkZWYgQWN0aW9uUmVzdWx0SG9sZGVyPFJlc3VsdD4gUmVzdWx0SG9sZGVy
OwotCi0gIC8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGlzIG1vY2sgZnVuY3Rp
b24gd2l0aCB0aGUgZ2l2ZW4KLSAgLy8gYXJndW1lbnRzLiAgVGhpcyBmdW5jdGlvbiBjYW4gYmUg
c2FmZWx5IGNhbGxlZCBmcm9tIG11bHRpcGxlCi0gIC8vIHRocmVhZHMgY29uY3VycmVudGx5Lgot
ICBSZXN1bHQgSW52b2tlV2l0aChjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdzKQotICAgICAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7Ci0gICAgc2NvcGVkX3B0cjxSZXN1
bHRIb2xkZXI+IGhvbGRlcigKLSAgICAgICAgRG93bkNhc3RfPFJlc3VsdEhvbGRlcio+KHRoaXMt
PlVudHlwZWRJbnZva2VXaXRoKCZhcmdzKSkpOwotICAgIHJldHVybiBob2xkZXItPlVud3JhcCgp
OwotICB9Ci0KLSAgLy8gQWRkcyBhbmQgcmV0dXJucyBhIGRlZmF1bHQgYWN0aW9uIHNwZWMgZm9y
IHRoaXMgbW9jayBmdW5jdGlvbi4KLSAgT25DYWxsU3BlYzxGPiYgQWRkTmV3T25DYWxsU3BlYygK
LSAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgY29uc3QgQXJndW1lbnRN
YXRjaGVyVHVwbGUmIG0pCi0gICAgICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19t
dXRleCkgewotICAgIE1vY2s6OlJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoTW9ja09i
amVjdCgpLCBmaWxlLCBsaW5lKTsKLSAgICBPbkNhbGxTcGVjPEY+KiBjb25zdCBvbl9jYWxsX3Nw
ZWMgPSBuZXcgT25DYWxsU3BlYzxGPihmaWxlLCBsaW5lLCBtKTsKLSAgICB1bnR5cGVkX29uX2Nh
bGxfc3BlY3NfLnB1c2hfYmFjayhvbl9jYWxsX3NwZWMpOwotICAgIHJldHVybiAqb25fY2FsbF9z
cGVjOwotICB9Ci0KLSAgLy8gQWRkcyBhbmQgcmV0dXJucyBhbiBleHBlY3RhdGlvbiBzcGVjIGZv
ciB0aGlzIG1vY2sgZnVuY3Rpb24uCi0gIFR5cGVkRXhwZWN0YXRpb248Rj4mIEFkZE5ld0V4cGVj
dGF0aW9uKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc291cmNlX3RleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFyZ3VtZW50TWF0Y2hl
clR1cGxlJiBtKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgewot
ICAgIE1vY2s6OlJlZ2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoTW9ja09iamVjdCgpLCBm
aWxlLCBsaW5lKTsKLSAgICBUeXBlZEV4cGVjdGF0aW9uPEY+KiBjb25zdCBleHBlY3RhdGlvbiA9
Ci0gICAgICAgIG5ldyBUeXBlZEV4cGVjdGF0aW9uPEY+KHRoaXMsIGZpbGUsIGxpbmUsIHNvdXJj
ZV90ZXh0LCBtKTsKLSAgICBjb25zdCBsaW5rZWRfcHRyPEV4cGVjdGF0aW9uQmFzZT4gdW50eXBl
ZF9leHBlY3RhdGlvbihleHBlY3RhdGlvbik7Ci0gICAgdW50eXBlZF9leHBlY3RhdGlvbnNfLnB1
c2hfYmFjayh1bnR5cGVkX2V4cGVjdGF0aW9uKTsKLQotICAgIC8vIEFkZHMgdGhpcyBleHBlY3Rh
dGlvbiBpbnRvIHRoZSBpbXBsaWNpdCBzZXF1ZW5jZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgU2Vx
dWVuY2UqIGNvbnN0IGltcGxpY2l0X3NlcXVlbmNlID0gZ19nbW9ja19pbXBsaWNpdF9zZXF1ZW5j
ZS5nZXQoKTsKLSAgICBpZiAoaW1wbGljaXRfc2VxdWVuY2UgIT0gTlVMTCkgewotICAgICAgaW1w
bGljaXRfc2VxdWVuY2UtPkFkZEV4cGVjdGF0aW9uKEV4cGVjdGF0aW9uKHVudHlwZWRfZXhwZWN0
YXRpb24pKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gKmV4cGVjdGF0aW9uOwotICB9Ci0KLSAgLy8g
VGhlIGN1cnJlbnQgc3BlYyAoZWl0aGVyIGRlZmF1bHQgYWN0aW9uIHNwZWMgb3IgZXhwZWN0YXRp
b24gc3BlYykKLSAgLy8gYmVpbmcgZGVzY3JpYmVkIG9uIHRoaXMgZnVuY3Rpb24gbW9ja2VyLgot
ICBNb2NrU3BlYzxGPiYgY3VycmVudF9zcGVjKCkgeyByZXR1cm4gY3VycmVudF9zcGVjXzsgfQot
Ci0gcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmM+IGZyaWVuZCBjbGFzcyBUeXBl
ZEV4cGVjdGF0aW9uOwotCi0gIC8vIFNvbWUgdXRpbGl0aWVzIG5lZWRlZCBmb3IgaW1wbGVtZW50
aW5nIFVudHlwZWRJbnZva2VXaXRoKCkuCi0KLSAgLy8gRGVzY3JpYmVzIHdoYXQgZGVmYXVsdCBh
Y3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgZm9yIHRoZSBnaXZlbgotICAvLyBhcmd1bWVudHMuCi0g
IC8vIEwgPSAqCi0gIHZvaWQgRGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oY29uc3QgQXJndW1lbnRU
dXBsZSYgYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0IHsKLSAgICBjb25zdCBPbkNhbGxTcGVjPEY+KiBjb25zdCBzcGVjID0gRmlu
ZE9uQ2FsbFNwZWMoYXJncyk7Ci0KLSAgICBpZiAoc3BlYyA9PSBOVUxMKSB7Ci0gICAgICAqb3Mg
PDwgKGludGVybmFsOjp0eXBlX2VxdWFsczxSZXN1bHQsIHZvaWQ+Ojp2YWx1ZSA/Ci0gICAgICAg
ICAgICAgICJyZXR1cm5pbmcgZGlyZWN0bHkuXG4iIDoKLSAgICAgICAgICAgICAgInJldHVybmlu
ZyBkZWZhdWx0IHZhbHVlLlxuIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAidGFraW5n
IGRlZmF1bHQgYWN0aW9uIHNwZWNpZmllZCBhdDpcbiIKLSAgICAgICAgICA8PCBGb3JtYXRGaWxl
TG9jYXRpb24oc3BlYy0+ZmlsZSgpLCBzcGVjLT5saW5lKCkpIDw8ICJcbiI7Ci0gICAgfQotICB9
Ci0KLSAgLy8gV3JpdGVzIGEgbWVzc2FnZSB0aGF0IHRoZSBjYWxsIGlzIHVuaW50ZXJlc3Rpbmcg
KGkuZS4gbmVpdGhlcgotICAvLyBleHBsaWNpdGx5IGV4cGVjdGVkIG5vciBleHBsaWNpdGx5IHVu
ZXhwZWN0ZWQpIHRvIHRoZSBnaXZlbgotICAvLyBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgVW50
eXBlZERlc2NyaWJlVW5pbnRlcmVzdGluZ0NhbGwoCi0gICAgICBjb25zdCB2b2lkKiB1bnR5cGVk
X2FyZ3MsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0Ci0gICAgICAgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkgewotICAgIGNvbnN0IEFyZ3VtZW50VHVwbGUm
IGFyZ3MgPQotICAgICAgICAqc3RhdGljX2Nhc3Q8Y29uc3QgQXJndW1lbnRUdXBsZSo+KHVudHlw
ZWRfYXJncyk7Ci0gICAgKm9zIDw8ICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAt
ICI7Ci0gICAgRGVzY3JpYmVEZWZhdWx0QWN0aW9uVG8oYXJncywgb3MpOwotICAgICpvcyA8PCAi
ICAgIEZ1bmN0aW9uIGNhbGw6ICIgPDwgTmFtZSgpOwotICAgIFVuaXZlcnNhbFByaW50KGFyZ3Ms
IG9zKTsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0
aGUgZ2l2ZW4gZnVuY3Rpb24gYXJndW1lbnRzCi0gIC8vIChvciBOVUxMIGlzIHRoZXJlJ3Mgbm8g
bWF0Y2gpOyB3aGVuIGEgbWF0Y2ggaXMgZm91bmQsCi0gIC8vIHVudHlwZWRfYWN0aW9uIGlzIHNl
dCB0byBwb2ludCB0byB0aGUgYWN0aW9uIHRoYXQgc2hvdWxkIGJlCi0gIC8vIHBlcmZvcm1lZCAo
b3IgTlVMTCBpZiB0aGUgYWN0aW9uIGlzICJkbyBkZWZhdWx0IiksIGFuZAotICAvLyBpc19leGNl
c3NpdmUgaXMgbW9kaWZpZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgY2FsbCBleGNlZWRzIHRo
ZQotICAvLyBleHBlY3RlZCBudW1iZXIuCi0gIC8vCi0gIC8vIENyaXRpY2FsIHNlY3Rpb246IFdl
IG11c3QgZmluZCB0aGUgbWF0Y2hpbmcgZXhwZWN0YXRpb24gYW5kIHRoZQotICAvLyBjb3JyZXNw
b25kaW5nIGFjdGlvbiB0aGF0IG5lZWRzIHRvIGJlIHRha2VuIGluIGFuIEFUT01JQwotICAvLyB0
cmFuc2FjdGlvbi4gIE90aGVyd2lzZSBhbm90aGVyIHRocmVhZCBtYXkgY2FsbCB0aGlzIG1vY2sK
LSAgLy8gbWV0aG9kIGluIHRoZSBtaWRkbGUgYW5kIG1lc3MgdXAgdGhlIHN0YXRlLgotICAvLwot
ICAvLyBIb3dldmVyLCBwZXJmb3JtaW5nIHRoZSBhY3Rpb24gaGFzIHRvIGJlIGxlZnQgb3V0IG9m
IHRoZSBjcml0aWNhbAotICAvLyBzZWN0aW9uLiAgVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGhhdmUg
bm8gY29udHJvbCBvbiB3aGF0IHRoZQotICAvLyBhY3Rpb24gZG9lcyAoaXQgY2FuIGludm9rZSBh
biBhcmJpdHJhcnkgdXNlciBmdW5jdGlvbiBvciBldmVuIGEKLSAgLy8gbW9jayBmdW5jdGlvbikg
YW5kIGV4Y2Vzc2l2ZSBsb2NraW5nIGNvdWxkIGNhdXNlIGEgZGVhZCBsb2NrLgotICB2aXJ0dWFs
IGNvbnN0IEV4cGVjdGF0aW9uQmFzZSogVW50eXBlZEZpbmRNYXRjaGluZ0V4cGVjdGF0aW9uKAot
ICAgICAgY29uc3Qgdm9pZCogdW50eXBlZF9hcmdzLAotICAgICAgY29uc3Qgdm9pZCoqIHVudHlw
ZWRfYWN0aW9uLCBib29sKiBpc19leGNlc3NpdmUsCi0gICAgICA6OnN0ZDo6b3N0cmVhbSogd2hh
dCwgOjpzdGQ6Om9zdHJlYW0qIHdoeSkKLSAgICAgICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhn
X2dtb2NrX211dGV4KSB7Ci0gICAgY29uc3QgQXJndW1lbnRUdXBsZSYgYXJncyA9Ci0gICAgICAg
ICpzdGF0aWNfY2FzdDxjb25zdCBBcmd1bWVudFR1cGxlKj4odW50eXBlZF9hcmdzKTsKLSAgICBN
dXRleExvY2sgbCgmZ19nbW9ja19tdXRleCk7Ci0gICAgVHlwZWRFeHBlY3RhdGlvbjxGPiogZXhw
ID0gdGhpcy0+RmluZE1hdGNoaW5nRXhwZWN0YXRpb25Mb2NrZWQoYXJncyk7Ci0gICAgaWYgKGV4
cCA9PSBOVUxMKSB7ICAvLyBBIG1hdGNoIHdhc24ndCBmb3VuZC4KLSAgICAgIHRoaXMtPkZvcm1h
dFVuZXhwZWN0ZWRDYWxsTWVzc2FnZUxvY2tlZChhcmdzLCB3aGF0LCB3aHkpOwotICAgICAgcmV0
dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBsaW5lIG11c3QgYmUgZG9uZSBiZWZvcmUg
Y2FsbGluZyBHZXRBY3Rpb25Gb3JBcmd1bWVudHMoKSwKLSAgICAvLyB3aGljaCB3aWxsIGluY3Jl
bWVudCB0aGUgY2FsbCBjb3VudCBmb3IgKmV4cCBhbmQgdGh1cyBhZmZlY3QKLSAgICAvLyBpdHMg
c2F0dXJhdGlvbiBzdGF0dXMuCi0gICAgKmlzX2V4Y2Vzc2l2ZSA9IGV4cC0+SXNTYXR1cmF0ZWQo
KTsKLSAgICBjb25zdCBBY3Rpb248Rj4qIGFjdGlvbiA9IGV4cC0+R2V0QWN0aW9uRm9yQXJndW1l
bnRzKHRoaXMsIGFyZ3MsIHdoYXQsIHdoeSk7Ci0gICAgaWYgKGFjdGlvbiAhPSBOVUxMICYmIGFj
dGlvbi0+SXNEb0RlZmF1bHQoKSkKLSAgICAgIGFjdGlvbiA9IE5VTEw7ICAvLyBOb3JtYWxpemUg
ImRvIGRlZmF1bHQiIHRvIE5VTEwuCi0gICAgKnVudHlwZWRfYWN0aW9uID0gYWN0aW9uOwotICAg
IHJldHVybiBleHA7Ci0gIH0KLQotICAvLyBQcmludHMgdGhlIGdpdmVuIGZ1bmN0aW9uIGFyZ3Vt
ZW50cyB0byB0aGUgb3N0cmVhbS4KLSAgdmlydHVhbCB2b2lkIFVudHlwZWRQcmludEFyZ3MoY29u
c3Qgdm9pZCogdW50eXBlZF9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdz
ID0KLSAgICAgICAgKnN0YXRpY19jYXN0PGNvbnN0IEFyZ3VtZW50VHVwbGUqPih1bnR5cGVkX2Fy
Z3MpOwotICAgIFVuaXZlcnNhbFByaW50KGFyZ3MsIG9zKTsKLSAgfQotCi0gIC8vIFJldHVybnMg
dGhlIGV4cGVjdGF0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgYXJndW1lbnRzLCBvciBOVUxMIGlmIG5v
Ci0gIC8vIGV4cGVjdGF0aW9uIG1hdGNoZXMgdGhlbS4KLSAgVHlwZWRFeHBlY3RhdGlvbjxGPiog
RmluZE1hdGNoaW5nRXhwZWN0YXRpb25Mb2NrZWQoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxl
JiBhcmdzKSBjb25zdAotICAgICAgICAgIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhn
X2dtb2NrX211dGV4KSB7Ci0gICAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gICAgZm9y
ICh0eXBlbmFtZSBVbnR5cGVkRXhwZWN0YXRpb25zOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0
ID0KLSAgICAgICAgICAgICB1bnR5cGVkX2V4cGVjdGF0aW9uc18ucmJlZ2luKCk7Ci0gICAgICAg
ICBpdCAhPSB1bnR5cGVkX2V4cGVjdGF0aW9uc18ucmVuZCgpOyArK2l0KSB7Ci0gICAgICBUeXBl
ZEV4cGVjdGF0aW9uPEY+KiBjb25zdCBleHAgPQotICAgICAgICAgIHN0YXRpY19jYXN0PFR5cGVk
RXhwZWN0YXRpb248Rj4qPihpdC0+Z2V0KCkpOwotICAgICAgaWYgKGV4cC0+U2hvdWxkSGFuZGxl
QXJndW1lbnRzKGFyZ3MpKSB7Ci0gICAgICAgIHJldHVybiBleHA7Ci0gICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiBOVUxMOwotICB9Ci0KLSAgLy8gUmV0dXJucyBhIG1lc3NhZ2UgdGhhdCB0aGUg
YXJndW1lbnRzIGRvbid0IG1hdGNoIGFueSBleHBlY3RhdGlvbi4KLSAgdm9pZCBGb3JtYXRVbmV4
cGVjdGVkQ2FsbE1lc3NhZ2VMb2NrZWQoCi0gICAgICBjb25zdCBBcmd1bWVudFR1cGxlJiBhcmdz
LAotICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zLAotICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdoeSkg
Y29uc3QKLSAgICAgICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19t
dXRleCkgewotICAgIGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgICpvcyA8PCAiXG5V
bmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtICI7Ci0gICAgRGVzY3JpYmVEZWZhdWx0QWN0
aW9uVG8oYXJncywgb3MpOwotICAgIFByaW50VHJpZWRFeHBlY3RhdGlvbnNMb2NrZWQoYXJncywg
d2h5KTsKLSAgfQotCi0gIC8vIFByaW50cyBhIGxpc3Qgb2YgZXhwZWN0YXRpb25zIHRoYXQgaGF2
ZSBiZWVuIHRyaWVkIGFnYWluc3QgdGhlCi0gIC8vIGN1cnJlbnQgbW9jayBmdW5jdGlvbiBjYWxs
LgotICB2b2lkIFByaW50VHJpZWRFeHBlY3RhdGlvbnNMb2NrZWQoCi0gICAgICBjb25zdCBBcmd1
bWVudFR1cGxlJiBhcmdzLAotICAgICAgOjpzdGQ6Om9zdHJlYW0qIHdoeSkgY29uc3QKLSAgICAg
ICAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICAg
IGdfZ21vY2tfbXV0ZXguQXNzZXJ0SGVsZCgpOwotICAgIGNvbnN0IGludCBjb3VudCA9IHN0YXRp
Y19jYXN0PGludD4odW50eXBlZF9leHBlY3RhdGlvbnNfLnNpemUoKSk7Ci0gICAgKndoeSA8PCAi
R29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAiIDw8IGNvdW50IDw8ICIgIgotICAgICAg
ICAgPDwgKGNvdW50ID09IDEgPyAiZXhwZWN0YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2giIDoK
LSAgICAgICAgICAgICAiZXhwZWN0YXRpb25zLCBidXQgbm9uZSBtYXRjaGVkIikKLSAgICAgICAg
IDw8ICI6XG4iOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAg
VHlwZWRFeHBlY3RhdGlvbjxGPiogY29uc3QgZXhwZWN0YXRpb24gPQotICAgICAgICAgIHN0YXRp
Y19jYXN0PFR5cGVkRXhwZWN0YXRpb248Rj4qPih1bnR5cGVkX2V4cGVjdGF0aW9uc19baV0uZ2V0
KCkpOwotICAgICAgKndoeSA8PCAiXG4iOwotICAgICAgZXhwZWN0YXRpb24tPkRlc2NyaWJlTG9j
YXRpb25Ubyh3aHkpOwotICAgICAgaWYgKGNvdW50ID4gMSkgewotICAgICAgICAqd2h5IDw8ICJ0
cmllZCBleHBlY3RhdGlvbiAjIiA8PCBpIDw8ICI6ICI7Ci0gICAgICB9Ci0gICAgICAqd2h5IDw8
IGV4cGVjdGF0aW9uLT5zb3VyY2VfdGV4dCgpIDw8ICIuLi5cbiI7Ci0gICAgICBleHBlY3RhdGlv
bi0+RXhwbGFpbk1hdGNoUmVzdWx0VG8oYXJncywgd2h5KTsKLSAgICAgIGV4cGVjdGF0aW9uLT5E
ZXNjcmliZUNhbGxDb3VudFRvKHdoeSk7Ci0gICAgfQotICB9Ci0KLSAgLy8gVGhlIGN1cnJlbnQg
c3BlYyAoZWl0aGVyIGRlZmF1bHQgYWN0aW9uIHNwZWMgb3IgZXhwZWN0YXRpb24gc3BlYykKLSAg
Ly8gYmVpbmcgZGVzY3JpYmVkIG9uIHRoaXMgZnVuY3Rpb24gbW9ja2VyLgotICBNb2NrU3BlYzxG
PiBjdXJyZW50X3NwZWNfOwotCi0gIC8vIFRoZXJlIGlzIG5vIGdlbmVyYWxseSB1c2VmdWwgYW5k
IGltcGxlbWVudGFibGUgc2VtYW50aWNzIG9mCi0gIC8vIGNvcHlpbmcgYSBtb2NrIG9iamVjdCwg
c28gY29weWluZyBhIG1vY2sgaXMgdXN1YWxseSBhIHVzZXIgZXJyb3IuCi0gIC8vIFRodXMgd2Ug
ZGlzYWxsb3cgY29weWluZyBmdW5jdGlvbiBtb2NrZXJzLiAgSWYgdGhlIHVzZXIgcmVhbGx5Ci0g
IC8vIHdhbnRzIHRvIGNvcHkgYSBtb2NrIG9iamVjdCwgaGUgc2hvdWxkIGltcGxlbWVudCBoaXMg
b3duIGNvcHkKLSAgLy8gb3BlcmF0aW9uLCBmb3IgZXhhbXBsZToKLSAgLy8KLSAgLy8gICBjbGFz
cyBNb2NrRm9vIDogcHVibGljIEZvbyB7Ci0gIC8vICAgIHB1YmxpYzoKLSAgLy8gICAgIC8vIERl
ZmluZXMgYSBjb3B5IGNvbnN0cnVjdG9yIGV4cGxpY2l0bHkuCi0gIC8vICAgICBNb2NrRm9vKGNv
bnN0IE1vY2tGb28mIHNyYykge30KLSAgLy8gICAgIC4uLgotICAvLyAgIH07Ci0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRnVuY3Rpb25Nb2NrZXJCYXNlKTsKLX07ICAvLyBjbGFz
cyBGdW5jdGlvbk1vY2tlckJhc2UKLQotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5n
KHBvcCkgIC8vIFJlc3RvcmVzIHRoZSB3YXJuaW5nIHN0YXRlLgotI2VuZGlmICAvLyBfTVNWX1ZF
UgotCi0vLyBJbXBsZW1lbnRzIG1ldGhvZHMgb2YgRnVuY3Rpb25Nb2NrZXJCYXNlLgotCi0vLyBW
ZXJpZmllcyB0aGF0IGFsbCBleHBlY3RhdGlvbnMgb24gdGhpcyBtb2NrIGZ1bmN0aW9uIGhhdmUg
YmVlbgotLy8gc2F0aXNmaWVkLiAgUmVwb3J0cyBvbmUgb3IgbW9yZSBHb29nbGUgVGVzdCBub24t
ZmF0YWwgZmFpbHVyZXMgYW5kCi0vLyByZXR1cm5zIGZhbHNlIGlmIG5vdC4KLQotLy8gUmVwb3J0
cyBhbiB1bmludGVyZXN0aW5nIGNhbGwgKHdob3NlIGRlc2NyaXB0aW9uIGlzIGluIG1zZykgaW4g
dGhlCi0vLyBtYW5uZXIgc3BlY2lmaWVkIGJ5ICdyZWFjdGlvbicuCi12b2lkIFJlcG9ydFVuaW50
ZXJlc3RpbmdDYWxsKENhbGxSZWFjdGlvbiByZWFjdGlvbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG1z
Zyk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBUaGUgc3R5bGUgZ3VpZGUgcHJv
aGliaXRzICJ1c2luZyIgc3RhdGVtZW50cyBpbiBhIG5hbWVzcGFjZSBzY29wZQotLy8gaW5zaWRl
IGEgaGVhZGVyIGZpbGUuICBIb3dldmVyLCB0aGUgTW9ja1NwZWMgY2xhc3MgdGVtcGxhdGUgaXMK
LS8vIG1lYW50IHRvIGJlIGRlZmluZWQgaW4gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuICBUaGUg
Zm9sbG93aW5nIGxpbmUKLS8vIGlzIGp1c3QgYSB0cmljayBmb3Igd29ya2luZyBhcm91bmQgYSBi
dWcgaW4gTVNWQyA4LjAsIHdoaWNoIGNhbm5vdAotLy8gaGFuZGxlIGl0IGlmIHdlIGRlZmluZSBN
b2NrU3BlYyBpbiA6OnRlc3RpbmcuCi11c2luZyBpbnRlcm5hbDo6TW9ja1NwZWM7Ci0KLS8vIENv
bnN0KHgpIGlzIGEgY29udmVuaWVudCBmdW5jdGlvbiBmb3Igb2J0YWluaW5nIGEgY29uc3QgcmVm
ZXJlbmNlCi0vLyB0byB4LiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNldHRpbmcgZXhwZWN0YXRpb25z
IG9uIGFuIG92ZXJsb2FkZWQKLS8vIGNvbnN0IG1vY2sgbWV0aG9kLCBlLmcuCi0vLwotLy8gICBj
bGFzcyBNb2NrRm9vIDogcHVibGljIEZvb0ludGVyZmFjZSB7Ci0vLyAgICBwdWJsaWM6Ci0vLyAg
ICAgTU9DS19NRVRIT0QwKEJhciwgaW50KCkpOwotLy8gICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChC
YXIsIGludCYoKSk7Ci0vLyAgIH07Ci0vLwotLy8gICBNb2NrRm9vIGZvbzsKLS8vICAgLy8gRXhw
ZWN0cyBhIGNhbGwgdG8gbm9uLWNvbnN0IE1vY2tGb286OkJhcigpLgotLy8gICBFWFBFQ1RfQ0FM
TChmb28sIEJhcigpKTsKLS8vICAgLy8gRXhwZWN0cyBhIGNhbGwgdG8gY29uc3QgTW9ja0Zvbzo6
QmFyKCkuCi0vLyAgIEVYUEVDVF9DQUxMKENvbnN0KGZvbyksIEJhcigpKTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIGNvbnN0IFQmIENvbnN0KGNvbnN0IFQmIHgpIHsgcmV0dXJuIHg7
IH0KLQotLy8gQ29uc3RydWN0cyBhbiBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2Vz
IGFuZCBjby1vd25zIGV4cC4KLWlubGluZSBFeHBlY3RhdGlvbjo6RXhwZWN0YXRpb24oaW50ZXJu
YWw6OkV4cGVjdGF0aW9uQmFzZSYgZXhwKSAgLy8gTk9MSU5UCi0gICAgOiBleHBlY3RhdGlvbl9i
YXNlXyhleHAuR2V0SGFuZGxlKCkuZXhwZWN0YXRpb25fYmFzZSgpKSB7fQotCi19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwotCi0vLyBBIHNlcGFyYXRlIG1hY3JvIGlzIHJlcXVpcmVkIHRvIGF2b2lk
IGNvbXBpbGUgZXJyb3JzIHdoZW4gdGhlIG5hbWUKLS8vIG9mIHRoZSBtZXRob2QgdXNlZCBpbiBj
YWxsIGlzIGEgcmVzdWx0IG9mIG1hY3JvIGV4cGFuc2lvbi4KLS8vIFNlZSBDb21waWxlc1dpdGhN
ZXRob2ROYW1lRXhwYW5kZWRGcm9tTWFjcm8gdGVzdHMgaW4KLS8vIGludGVybmFsL2dtb2NrLXNw
ZWMtYnVpbGRlcnNfdGVzdC5jYyBmb3IgbW9yZSBkZXRhaWxzLgotI2RlZmluZSBHTU9DS19PTl9D
QUxMX0lNUExfKG9iaiwgY2FsbCkgXAotICAgICgob2JqKS5nbW9ja18jI2NhbGwpLkludGVybmFs
RGVmYXVsdEFjdGlvblNldEF0KF9fRklMRV9fLCBfX0xJTkVfXywgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNvYmosICNjYWxsKQotI2RlZmlu
ZSBPTl9DQUxMKG9iaiwgY2FsbCkgR01PQ0tfT05fQ0FMTF9JTVBMXyhvYmosIGNhbGwpCi0KLSNk
ZWZpbmUgR01PQ0tfRVhQRUNUX0NBTExfSU1QTF8ob2JqLCBjYWxsKSBcCi0gICAgKChvYmopLmdt
b2NrXyMjY2FsbCkuSW50ZXJuYWxFeHBlY3RlZEF0KF9fRklMRV9fLCBfX0xJTkVfXywgI29iaiwg
I2NhbGwpCi0jZGVmaW5lIEVYUEVDVF9DQUxMKG9iaiwgY2FsbCkgR01PQ0tfRVhQRUNUX0NBTExf
SU1QTF8ob2JqLCBjYWxsKQotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfR01PQ0tf
U1BFQ19CVUlMREVSU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9n
bW9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9nbW9jay5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NzM1YzcxYmY4YWEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9pbmNsdWRlL2dtb2NrL2dtb2NrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEg
ZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBpcyB0
aGUgbWFpbiBoZWFkZXIgZmlsZSBhIHVzZXIgc2hvdWxkIGluY2x1ZGUuCi0KLSNpZm5kZWYgR01P
Q0tfSU5DTFVERV9HTU9DS19HTU9DS19IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0dN
T0NLX0hfCi0KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgc3ludGF4Ogot
Ly8KLS8vICAgT05fQ0FMTChtb2NrX29iamVjdC5NZXRob2QoLi4uKSkKLS8vICAgICAuV2l0aCgu
Li4pID8KLS8vICAgICAuV2lsbEJ5RGVmYXVsdCguLi4pOwotLy8KLS8vIHdoZXJlIFdpdGgoKSBp
cyBvcHRpb25hbCBhbmQgV2lsbEJ5RGVmYXVsdCgpIG11c3QgYXBwZWFyIGV4YWN0bHkKLS8vIG9u
Y2UuCi0vLwotLy8gICBFWFBFQ1RfQ0FMTChtb2NrX29iamVjdC5NZXRob2QoLi4uKSkKLS8vICAg
ICAuV2l0aCguLi4pID8KLS8vICAgICAuVGltZXMoLi4uKSA/Ci0vLyAgICAgLkluU2VxdWVuY2Uo
Li4uKSAqCi0vLyAgICAgLldpbGxPbmNlKC4uLikgKgotLy8gICAgIC5XaWxsUmVwZWF0ZWRseSgu
Li4pID8KLS8vICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpID8gOwotLy8KLS8vIHdoZXJlIGFs
bCBjbGF1c2VzIGFyZSBvcHRpb25hbCBhbmQgV2lsbE9uY2UoKSBjYW4gYmUgcmVwZWF0ZWQuCi0K
LSNpbmNsdWRlICJnbW9jay9nbW9jay1hY3Rpb25zLmgiCi0jaW5jbHVkZSAiZ21vY2svZ21vY2st
Y2FyZGluYWxpdGllcy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25z
LmgiCi0jaW5jbHVkZSAiZ21vY2svZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnMuaCIK
LSNpbmNsdWRlICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtbmljZS1zdHJpY3QuaCIKLSNpbmNsdWRl
ICJnbW9jay9nbW9jay1nZW5lcmF0ZWQtbWF0Y2hlcnMuaCIKLSNpbmNsdWRlICJnbW9jay9nbW9j
ay1tYXRjaGVycy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1vcmUtYWN0aW9ucy5oIgotI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLW1vcmUtbWF0Y2hlcnMuaCIKLSNpbmNsdWRlICJnbW9jay9pbnRl
cm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8v
IERlY2xhcmVzIEdvb2dsZSBNb2NrIGZsYWdzIHRoYXQgd2Ugd2FudCBhIHVzZXIgdG8gdXNlIHBy
b2dyYW1tYXRpY2FsbHkuCi1HTU9DS19ERUNMQVJFX2Jvb2xfKGNhdGNoX2xlYWtlZF9tb2Nrcyk7
Ci1HTU9DS19ERUNMQVJFX3N0cmluZ18odmVyYm9zZSk7Ci0KLS8vIEluaXRpYWxpemVzIEdvb2ds
ZSBNb2NrLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgcnVubmluZyB0aGUKLS8vIHRlc3Rz
LiAgSW4gcGFydGljdWxhciwgaXQgcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIHRoZSBmbGFn
cwotLy8gdGhhdCBHb29nbGUgTW9jayByZWNvZ25pemVzLiAgV2hlbmV2ZXIgYSBHb29nbGUgTW9j
ayBmbGFnIGlzIHNlZW4sCi0vLyBpdCBpcyByZW1vdmVkIGZyb20gYXJndiwgYW5kICphcmdjIGlz
IGRlY3JlbWVudGVkLgotLy8KLS8vIE5vIHZhbHVlIGlzIHJldHVybmVkLiAgSW5zdGVhZCwgdGhl
IEdvb2dsZSBNb2NrIGZsYWcgdmFyaWFibGVzIGFyZQotLy8gdXBkYXRlZC4KLS8vCi0vLyBTaW5j
ZSBHb29nbGUgVGVzdCBpcyBuZWVkZWQgZm9yIEdvb2dsZSBNb2NrIHRvIHdvcmssIHRoaXMgZnVu
Y3Rpb24KLS8vIGFsc28gaW5pdGlhbGl6ZXMgR29vZ2xlIFRlc3QgYW5kIHBhcnNlcyBpdHMgZmxh
Z3MsIGlmIHRoYXQgaGFzbid0Ci0vLyBiZWVuIGRvbmUuCi1HVEVTVF9BUElfIHZvaWQgSW5pdEdv
b2dsZU1vY2soaW50KiBhcmdjLCBjaGFyKiogYXJndik7Ci0KLS8vIFRoaXMgb3ZlcmxvYWRlZCB2
ZXJzaW9uIGNhbiBiZSB1c2VkIGluIFdpbmRvd3MgcHJvZ3JhbXMgY29tcGlsZWQgaW4KLS8vIFVO
SUNPREUgbW9kZS4KLUdURVNUX0FQSV8gdm9pZCBJbml0R29vZ2xlTW9jayhpbnQqIGFyZ2MsIHdj
aGFyX3QqKiBhcmd2KTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBH
TU9DS19JTkNMVURFX0dNT0NLX0dNT0NLX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNs
dWRlL2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1nZW5lcmF0ZWQtYWN0aW9ucy5oIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFj
dGlvbnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RjM2IxYWQ1NDE2Li4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20v
Z21vY2stZ2VuZXJhdGVkLWFjdGlvbnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAot
Ly8gVGhpcyBmaWxlIHdhcyBHRU5FUkFURUQgYnkgY29tbWFuZDoKLS8vICAgICBwdW1wLnB5IGdt
b2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcAotLy8gRE8gTk9UIEVESVQgQlkgSEFORCEhIQot
Ci0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX0dFTkVS
QVRFRF9BQ1RJT05TX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VT
VE9NX0dNT0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVE
RV9HTU9DS19JTlRFUk5BTF9DVVNUT01fR01PQ0tfR0VORVJBVEVEX0FDVElPTlNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLWdl
bmVyYXRlZC1hY3Rpb25zLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJu
YWwvY3VzdG9tL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgucHVtcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDI2YzhhMDhhNDc3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnMu
aC5wdW1wCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotJCQgLSotIG1vZGU6IGMrKzsg
LSotCi0kJCBUaGlzIGlzIGEgUHVtcCBzb3VyY2UgZmlsZSAoaHR0cDovL2dvL3B1bXApLiAgUGxl
YXNlIHVzZSBQdW1wIHRvIGNvbnZlcnQKLSQkIGl0IHRvIGNhbGxiYWNrLWFjdGlvbnMuaC4KLSQk
Ci0kdmFyIG1heF9jYWxsYmFja19hcml0eSA9IDUKLSQkfX0gVGhpcyBtZXRhIGNvbW1lbnQgZml4
ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBlZGl0b3JzLgotI2lmbmRlZiBHTU9DS19JTkNMVURFX0dN
T0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19HRU5FUkFURURfQUNUSU9OU19IXwotI2RlZmluZSBH
TU9DS19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0NVU1RPTV9HTU9DS19HRU5FUkFURURfQUNUSU9O
U19IXwotCi0jZW5kaWYgIC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dN
T0NLX0dFTkVSQVRFRF9BQ1RJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1tYXRjaGVycy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5j
bHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stbWF0Y2hlcnMuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZjJlZmVmOTFkYmU1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9jdXN0b20vZ21vY2stbWF0Y2hlcnMuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEFuIGluc3RhbGxhdGlvbi1zcGVjaWZpYyBl
eHRlbnNpb24gcG9pbnQgZm9yIGdtb2NrLW1hdGNoZXJzLmguCi0vLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vCi0vLyBBZGRz
IGdvb2dsZTMgY2FsbGJhY2sgc3VwcG9ydCB0byBDYWxsYWJsZVRyYWl0cy4KLS8vCi0jaWZuZGVm
IEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0NBTExCQUNLX01BVENIRVJTX0hf
Ci0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0NBTExCQUNLX01B
VENIRVJTX0hfCi0KLSNlbmRpZiAgLy8gIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VT
VE9NX0NBTExCQUNLX01BVENIRVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1wb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRl
L2dtb2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1wb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDljZThiZmUwNmJmMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2lu
Y2x1ZGUvZ21vY2svaW50ZXJuYWwvY3VzdG9tL2dtb2NrLXBvcnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBJbmplY3Rpb24gcG9pbnQgZm9yIGN1c3RvbSB1c2VyIGNvbmZpZ3VyYXRpb25z
LgotLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIGRlZmluZWQ6Ci0vLwotLy8gICBGbGFn
IHJlbGF0ZWQgbWFjcm9zOgotLy8gICAgIEdNT0NLX0RFQ0xBUkVfYm9vbF8obmFtZSkKLS8vICAg
ICBHTU9DS19ERUNMQVJFX2ludDMyXyhuYW1lKQotLy8gICAgIEdNT0NLX0RFQ0xBUkVfc3RyaW5n
XyhuYW1lKQotLy8gICAgIEdNT0NLX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9j
KQotLy8gICAgIEdNT0NLX0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykKLS8v
ICAgICBHTU9DS19ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKQotLy8KLS8v
ICoqIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgotCi0jaWZuZGVmIEdNT0NL
X0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX1BPUlRfSF8KLSNkZWZpbmUgR01P
Q0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9DVVNUT01fR01PQ0tfUE9SVF9IXwotCi0jZW5kaWYg
IC8vIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfQ1VTVE9NX0dNT0NLX1BPUlRfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stZ2VuZXJh
dGVkLWludGVybmFsLXV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFs
L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3ODExZTQzZjg3YzEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNs
dWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLS8vIFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5
IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBnbW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMu
aC5wdW1wCi0vLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCi0KLS8vIENvcHlyaWdodCAyMDA3LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcg
QysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgdGVtcGxhdGUgbWV0
YS1wcm9ncmFtbWluZyB1dGlsaXR5IGNsYXNzZXMgbmVlZGVkCi0vLyBmb3IgaW1wbGVtZW50aW5n
IEdvb2dsZSBNb2NrLgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01P
Q0tfR0VORVJBVEVEX0lOVEVSTkFMX1VUSUxTX0hfCi0jZGVmaW5lIEdNT0NLX0lOQ0xVREVfR01P
Q0tfSU5URVJOQUxfR01PQ0tfR0VORVJBVEVEX0lOVEVSTkFMX1VUSUxTX0hfCi0KLSNpbmNsdWRl
ICJnbW9jay9pbnRlcm5hbC9nbW9jay1wb3J0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBNYXRjaGVyOwotCi1uYW1lc3BhY2UgaW50ZXJu
YWwgewotCi0vLyBBbiBJZ25vcmVkVmFsdWUgb2JqZWN0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnN0
cnVjdGVkIGZyb20gQU5ZIHZhbHVlLgotLy8gVGhpcyBpcyB1c2VkIGluIGltcGxlbWVudGluZyB0
aGUgSWdub3JlUmVzdWx0KGEpIGFjdGlvbi4KLWNsYXNzIElnbm9yZWRWYWx1ZSB7Ci0gcHVibGlj
OgotICAvLyBUaGlzIGNvbnN0cnVjdG9yIHRlbXBsYXRlIGFsbG93cyBhbnkgdmFsdWUgdG8gYmUg
aW1wbGljaXRseQotICAvLyBjb252ZXJ0ZWQgdG8gSWdub3JlZFZhbHVlLiAgVGhlIG9iamVjdCBo
YXMgbm8gZGF0YSBtZW1iZXIgYW5kCi0gIC8vIGRvZXNuJ3QgdHJ5IHRvIHJlbWVtYmVyIGFueXRo
aW5nIGFib3V0IHRoZSBhcmd1bWVudC4gIFdlCi0gIC8vIGRlbGliZXJhdGVseSBvbWl0IHRoZSAn
ZXhwbGljaXQnIGtleXdvcmQgaW4gb3JkZXIgdG8gYWxsb3cgdGhlCi0gIC8vIGNvbnZlcnNpb24g
dG8gYmUgaW1wbGljaXQuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBJZ25vcmVkVmFsdWUo
Y29uc3QgVCYgLyogaWdub3JlZCAqLykge30gIC8vIE5PTElOVChydW50aW1lL2V4cGxpY2l0KQot
fTsKLQotLy8gTWF0Y2hlclR1cGxlPFQ+Ojp0eXBlIGlzIGEgdHVwbGUgdHlwZSB3aGVyZSBlYWNo
IGZpZWxkIGlzIGEgTWF0Y2hlcgotLy8gZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkIGluIHR1
cGxlIHR5cGUgVC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KLXN0cnVjdCBNYXRjaGVyVHVw
bGU7Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxl
PD4gPiB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwgPiB0eXBlOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEExPgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxB
MT4gPiB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiA+IHR5cGU7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotc3RydWN0IE1hdGNoZXJU
dXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTI+ID4gewotICB0eXBlZGVmIDo6dGVzdGluZzo6
dHVwbGU8TWF0Y2hlcjxBMT4sIE1hdGNoZXI8QTI+ID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotc3RydWN0IE1hdGNoZXJUdXBs
ZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6
OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4gPiB0eXBlOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVu
YW1lIEE0Pgotc3RydWN0IE1hdGNoZXJUdXBsZTwgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEz
LCBBND4gPiB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hl
cjxBMj4sIE1hdGNoZXI8QTM+LAotICAgICAgTWF0Y2hlcjxBND4gPiB0eXBlOwotfTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0
LCB0eXBlbmFtZSBBNT4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1PiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8
QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAotICAgICAgTWF0Y2hl
cjxBNT4gPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwg
dHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LCB0eXBlbmFtZSBBNSwKLSAgICB0eXBlbmFtZSBBNj4K
LXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1
LCBBNj4gPiB7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hl
cjxBMj4sIE1hdGNoZXI8QTM+LCBNYXRjaGVyPEE0PiwKLSAgICAgIE1hdGNoZXI8QTU+LCBNYXRj
aGVyPEE2PiA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEy
LCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAotICAgIHR5cGVuYW1lIEE2
LCB0eXBlbmFtZSBBNz4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTc+ID4gewotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8
TWF0Y2hlcjxBMT4sIE1hdGNoZXI8QTI+LCBNYXRjaGVyPEEzPiwgTWF0Y2hlcjxBND4sCi0gICAg
ICBNYXRjaGVyPEE1PiwgTWF0Y2hlcjxBNj4sIE1hdGNoZXI8QTc+ID4gdHlwZTsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBB
NCwgdHlwZW5hbWUgQTUsCi0gICAgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3LCB0eXBlbmFtZSBB
OD4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVwbGU8QTEsIEEyLCBBMywgQTQs
IEE1LCBBNiwgQTcsIEE4PiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8
QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4sIE1hdGNoZXI8QTQ+LAotICAgICAgTWF0Y2hl
cjxBNT4sIE1hdGNoZXI8QTY+LCBNYXRjaGVyPEE3PiwgTWF0Y2hlcjxBOD4gPiB0eXBlOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVu
YW1lIEE0LCB0eXBlbmFtZSBBNSwKLSAgICB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVu
YW1lIEE4LCB0eXBlbmFtZSBBOT4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8IDo6dGVzdGluZzo6dHVw
bGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT4gPiB7Ci0gIHR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTxNYXRjaGVyPEExPiwgTWF0Y2hlcjxBMj4sIE1hdGNoZXI8QTM+LCBNYXRj
aGVyPEE0PiwKLSAgICAgIE1hdGNoZXI8QTU+LCBNYXRjaGVyPEE2PiwgTWF0Y2hlcjxBNz4sIE1h
dGNoZXI8QTg+LCBNYXRjaGVyPEE5PiA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LAot
ICAgIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LCB0
eXBlbmFtZSBBMTA+Ci1zdHJ1Y3QgTWF0Y2hlclR1cGxlPCA6OnRlc3Rpbmc6OnR1cGxlPEExLCBB
MiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksCi0gICAgQTEwPiA+IHsKLSAgdHlwZWRlZiA6
OnRlc3Rpbmc6OnR1cGxlPE1hdGNoZXI8QTE+LCBNYXRjaGVyPEEyPiwgTWF0Y2hlcjxBMz4sIE1h
dGNoZXI8QTQ+LAotICAgICAgTWF0Y2hlcjxBNT4sIE1hdGNoZXI8QTY+LCBNYXRjaGVyPEE3Piwg
TWF0Y2hlcjxBOD4sIE1hdGNoZXI8QTk+LAotICAgICAgTWF0Y2hlcjxBMTA+ID4gdHlwZTsKLX07
Ci0KLS8vIFRlbXBsYXRlIHN0cnVjdCBGdW5jdGlvbjxGPiwgd2hlcmUgRiBtdXN0IGJlIGEgZnVu
Y3Rpb24gdHlwZSwgY29udGFpbnMKLS8vIHRoZSBmb2xsb3dpbmcgdHlwZWRlZnM6Ci0vLwotLy8g
ICBSZXN1bHQ6ICAgICAgICAgICAgICAgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0vLyAg
IEFyZ3VtZW50TjogICAgICAgICAgICB0aGUgdHlwZSBvZiB0aGUgTi10aCBhcmd1bWVudCwgd2hl
cmUgTiBzdGFydHMgd2l0aCAxLgotLy8gICBBcmd1bWVudFR1cGxlOiAgICAgICAgdGhlIHR1cGxl
IHR5cGUgY29uc2lzdGluZyBvZiBhbGwgcGFyYW1ldGVycyBvZiBGLgotLy8gICBBcmd1bWVudE1h
dGNoZXJUdXBsZTogdGhlIHR1cGxlIHR5cGUgY29uc2lzdGluZyBvZiBNYXRjaGVycyBmb3IgYWxs
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIG9mIEYuCi0vLyAgIE1ha2VS
ZXN1bHRWb2lkOiAgICAgICB0aGUgZnVuY3Rpb24gdHlwZSBvYnRhaW5lZCBieSBzdWJzdGl0dXRp
bmcgdm9pZAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZXR1cm4gdHlwZSBv
ZiBGLgotLy8gICBNYWtlUmVzdWx0SWdub3JlZFZhbHVlOgotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgdGhlIGZ1bmN0aW9uIHR5cGUgb2J0YWluZWQgYnkgc3Vic3RpdHV0aW5nIFNvbWV0aGlu
ZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBGLgot
dGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgRnVuY3Rpb247Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBSPgotc3RydWN0IEZ1bmN0aW9uPFIoKT4gewotICB0eXBlZGVmIFIgUmVzdWx0OwotICB0
eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8PiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVu
YW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBs
ZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKCk7Ci0gIHR5cGVkZWYgSWdub3JlZFZh
bHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBS
LCB0eXBlbmFtZSBBMT4KLXN0cnVjdCBGdW5jdGlvbjxSKEExKT4KLSAgICA6IEZ1bmN0aW9uPFIo
KT4gewotICB0eXBlZGVmIEExIEFyZ3VtZW50MTsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxl
PEExPiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1
bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1h
a2VSZXN1bHRWb2lkKEExKTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9y
ZWRWYWx1ZShBMSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyPgotc3RydWN0IEZ1bmN0aW9uPFIoQTEsIEEyKT4KLSAgICA6IEZ1bmN0aW9uPFIo
QTEpPiB7Ci0gIHR5cGVkZWYgQTIgQXJndW1lbnQyOwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8QTEsIEEyPiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBs
ZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2
b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMik7Ci0gIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VS
ZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0
eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotc3RydWN0IEZ1bmN0aW9uPFIo
QTEsIEEyLCBBMyk+Ci0gICAgOiBGdW5jdGlvbjxSKEExLCBBMik+IHsKLSAgdHlwZWRlZiBBMyBB
cmd1bWVudDM7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzPiBBcmd1bWVu
dFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6
dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lk
KEExLCBBMiwgQTMpOwotICB0eXBlZGVmIElnbm9yZWRWYWx1ZSBNYWtlUmVzdWx0SWdub3JlZFZh
bHVlKEExLCBBMiwgQTMpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEEx
LCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0Pgotc3RydWN0IEZ1bmN0aW9u
PFIoQTEsIEEyLCBBMywgQTQpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzKT4gewotICB0
eXBlZGVmIEE0IEFyZ3VtZW50NDsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPEExLCBBMiwg
QTMsIEE0PiBBcmd1bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxB
cmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lk
IE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMsIEE0KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUg
TWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCk7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5h
bWUgQTQsCi0gICAgdHlwZW5hbWUgQTU+Ci1zdHJ1Y3QgRnVuY3Rpb248UihBMSwgQTIsIEEzLCBB
NCwgQTUpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCk+IHsKLSAgdHlwZWRlZiBB
NSBBcmd1bWVudDU7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBBNCwg
QTU+IEFyZ3VtZW50VHVwbGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3Vt
ZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOwotICB0eXBlZGVmIHZvaWQgTWFr
ZVJlc3VsdFZvaWQoQTEsIEEyLCBBMywgQTQsIEE1KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUg
TWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwgQTUpOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5
cGVuYW1lIEE0LAotICAgIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4KLXN0cnVjdCBGdW5jdGlv
bjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEz
LCBBNCwgQTUpPiB7Ci0gIHR5cGVkZWYgQTYgQXJndW1lbnQ2OwotICB0eXBlZGVmIDo6dGVzdGlu
Zzo6dHVwbGU8QTEsIEEyLCBBMywgQTQsIEE1LCBBNj4gQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRj
aGVyVHVwbGU7Ci0gIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwg
QTUsIEE2KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBl
bmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICB0eXBl
bmFtZSBBNSwgdHlwZW5hbWUgQTYsIHR5cGVuYW1lIEE3Pgotc3RydWN0IEZ1bmN0aW9uPFIoQTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBB
NCwgQTUsIEE2KT4gewotICB0eXBlZGVmIEE3IEFyZ3VtZW50NzsKLSAgdHlwZWRlZiA6OnRlc3Rp
bmc6OnR1cGxlPEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3PiBBcmd1bWVudFR1cGxlOwotICB0
eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlwZSBBcmd1bWVu
dE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEExLCBBMiwgQTMs
IEE0LCBBNSwgQTYsIEE3KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9y
ZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk7Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUg
QTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUg
QTg+Ci1zdHJ1Y3QgRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPgot
ICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNyk+IHsKLSAgdHlwZWRl
ZiBBOCBBcmd1bWVudDg7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxBMSwgQTIsIEEzLCBB
NCwgQTUsIEE2LCBBNywgQTg+IEFyZ3VtZW50VHVwbGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgTWF0
Y2hlclR1cGxlPEFyZ3VtZW50VHVwbGU+Ojp0eXBlIEFyZ3VtZW50TWF0Y2hlclR1cGxlOwotICB0
eXBlZGVmIHZvaWQgTWFrZVJlc3VsdFZvaWQoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4
KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZShBMSwgQTIs
IEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5
cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgIHR5
cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFt
ZSBBOT4KLXN0cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwg
QTkpPgotICAgIDogRnVuY3Rpb248UihBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgpPiB7
Ci0gIHR5cGVkZWYgQTkgQXJndW1lbnQ5OwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8QTEs
IEEyLCBBMywgQTQsIEE1LCBBNiwgQTcsIEE4LCBBOT4gQXJndW1lbnRUdXBsZTsKLSAgdHlwZWRl
ZiB0eXBlbmFtZSBNYXRjaGVyVHVwbGU8QXJndW1lbnRUdXBsZT46OnR5cGUgQXJndW1lbnRNYXRj
aGVyVHVwbGU7Ci0gIHR5cGVkZWYgdm9pZCBNYWtlUmVzdWx0Vm9pZChBMSwgQTIsIEEzLCBBNCwg
QTUsIEE2LCBBNywgQTgsIEE5KTsKLSAgdHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdEln
bm9yZWRWYWx1ZShBMSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsCi0gICAgICBBOSk7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBl
bmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBl
bmFtZSBBNywgdHlwZW5hbWUgQTgsIHR5cGVuYW1lIEE5LAotICAgIHR5cGVuYW1lIEExMD4KLXN0
cnVjdCBGdW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCk+
Ci0gICAgOiBGdW5jdGlvbjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTkpPiB7
Ci0gIHR5cGVkZWYgQTEwIEFyZ3VtZW50MTA7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxB
MSwgQTIsIEEzLCBBNCwgQTUsIEE2LCBBNywgQTgsIEE5LAotICAgICAgQTEwPiBBcmd1bWVudFR1
cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxlPjo6dHlw
ZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRWb2lkKEEx
LCBBMiwgQTMsIEE0LCBBNSwgQTYsIEE3LCBBOCwgQTksIEExMCk7Ci0gIHR5cGVkZWYgSWdub3Jl
ZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoQTEsIEEyLCBBMywgQTQsIEE1LCBBNiwgQTcs
IEE4LAotICAgICAgQTksIEExMCk7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQot
fSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHTU9DS19JTkNMVURFX0dNT0NL
X0lOVEVSTkFMX0dNT0NLX0dFTkVSQVRFRF9JTlRFUk5BTF9VVElMU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJu
YWwtdXRpbHMuaC5wdW1wIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svaW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9j
ay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4MDBhZjE3YzFkOGIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9pbmNs
dWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlscy5oLnB1bXAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotJCQgLSotIG1vZGU6IGMrKzsgLSotCi0k
JCBUaGlzIGlzIGEgUHVtcCBzb3VyY2UgZmlsZS4gIFBsZWFzZSB1c2UgUHVtcCB0byBjb252ZXJ0
IGl0IHRvCi0kJCBnbW9jay1nZW5lcmF0ZWQtZnVuY3Rpb24tbW9ja2Vycy5oLgotJCQKLSR2YXIg
biA9IDEwICAkJCBUaGUgbWF4aW11bSBhcml0eSB3ZSBzdXBwb3J0LgotLy8gQ29weXJpZ2h0IDIw
MDcsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3Jp
dGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyB0ZW1wbGF0
ZSBtZXRhLXByb2dyYW1taW5nIHV0aWxpdHkgY2xhc3NlcyBuZWVkZWQKLS8vIGZvciBpbXBsZW1l
bnRpbmcgR29vZ2xlIE1vY2suCi0KLSNpZm5kZWYgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5B
TF9HTU9DS19HRU5FUkFURURfSU5URVJOQUxfVVRJTFNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVE
RV9HTU9DS19JTlRFUk5BTF9HTU9DS19HRU5FUkFURURfSU5URVJOQUxfVVRJTFNfSF8KLQotI2lu
Y2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3Rpbmcg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIE1hdGNoZXI7Ci0KLW5hbWVzcGFjZSBp
bnRlcm5hbCB7Ci0KLS8vIEFuIElnbm9yZWRWYWx1ZSBvYmplY3QgY2FuIGJlIGltcGxpY2l0bHkg
Y29uc3RydWN0ZWQgZnJvbSBBTlkgdmFsdWUuCi0vLyBUaGlzIGlzIHVzZWQgaW4gaW1wbGVtZW50
aW5nIHRoZSBJZ25vcmVSZXN1bHQoYSkgYWN0aW9uLgotY2xhc3MgSWdub3JlZFZhbHVlIHsKLSBw
dWJsaWM6Ci0gIC8vIFRoaXMgY29uc3RydWN0b3IgdGVtcGxhdGUgYWxsb3dzIGFueSB2YWx1ZSB0
byBiZSBpbXBsaWNpdGx5Ci0gIC8vIGNvbnZlcnRlZCB0byBJZ25vcmVkVmFsdWUuICBUaGUgb2Jq
ZWN0IGhhcyBubyBkYXRhIG1lbWJlciBhbmQKLSAgLy8gZG9lc24ndCB0cnkgdG8gcmVtZW1iZXIg
YW55dGhpbmcgYWJvdXQgdGhlIGFyZ3VtZW50LiAgV2UKLSAgLy8gZGVsaWJlcmF0ZWx5IG9taXQg
dGhlICdleHBsaWNpdCcga2V5d29yZCBpbiBvcmRlciB0byBhbGxvdyB0aGUKLSAgLy8gY29udmVy
c2lvbiB0byBiZSBpbXBsaWNpdC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIElnbm9yZWRW
YWx1ZShjb25zdCBUJiAvKiBpZ25vcmVkICovKSB7fSAgLy8gTk9MSU5UKHJ1bnRpbWUvZXhwbGlj
aXQpCi19OwotCi0vLyBNYXRjaGVyVHVwbGU8VD46OnR5cGUgaXMgYSB0dXBsZSB0eXBlIHdoZXJl
IGVhY2ggZmllbGQgaXMgYSBNYXRjaGVyCi0vLyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQg
aW4gdHVwbGUgdHlwZSBULgotdGVtcGxhdGUgPHR5cGVuYW1lIFR1cGxlPgotc3RydWN0IE1hdGNo
ZXJUdXBsZTsKLQotCi0kcmFuZ2UgaSAwLi5uCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSR2
YXIgdHlwZW5hbWVfQXMgPSBbWyRmb3IgaiwgW1t0eXBlbmFtZSBBJGpdXV1dCi0kdmFyIEFzID0g
W1skZm9yIGosIFtbQSRqXV1dXQotJHZhciBtYXRjaGVyX0FzID0gW1skZm9yIGosIFtbTWF0Y2hl
cjxBJGo+XV1dXQotdGVtcGxhdGUgPCR0eXBlbmFtZV9Bcz4KLXN0cnVjdCBNYXRjaGVyVHVwbGU8
IDo6dGVzdGluZzo6dHVwbGU8JEFzPiA+IHsKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPCRt
YXRjaGVyX0FzID4gdHlwZTsKLX07Ci0KLQotXV0KLS8vIFRlbXBsYXRlIHN0cnVjdCBGdW5jdGlv
bjxGPiwgd2hlcmUgRiBtdXN0IGJlIGEgZnVuY3Rpb24gdHlwZSwgY29udGFpbnMKLS8vIHRoZSBm
b2xsb3dpbmcgdHlwZWRlZnM6Ci0vLwotLy8gICBSZXN1bHQ6ICAgICAgICAgICAgICAgdGhlIGZ1
bmN0aW9uJ3MgcmV0dXJuIHR5cGUuCi0vLyAgIEFyZ3VtZW50TjogICAgICAgICAgICB0aGUgdHlw
ZSBvZiB0aGUgTi10aCBhcmd1bWVudCwgd2hlcmUgTiBzdGFydHMgd2l0aCAxLgotLy8gICBBcmd1
bWVudFR1cGxlOiAgICAgICAgdGhlIHR1cGxlIHR5cGUgY29uc2lzdGluZyBvZiBhbGwgcGFyYW1l
dGVycyBvZiBGLgotLy8gICBBcmd1bWVudE1hdGNoZXJUdXBsZTogdGhlIHR1cGxlIHR5cGUgY29u
c2lzdGluZyBvZiBNYXRjaGVycyBmb3IgYWxsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbWV0ZXJzIG9mIEYuCi0vLyAgIE1ha2VSZXN1bHRWb2lkOiAgICAgICB0aGUgZnVuY3Rpb24g
dHlwZSBvYnRhaW5lZCBieSBzdWJzdGl0dXRpbmcgdm9pZAotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIHRoZSByZXR1cm4gdHlwZSBvZiBGLgotLy8gICBNYWtlUmVzdWx0SWdub3JlZFZh
bHVlOgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIHR5cGUgb2J0YWlu
ZWQgYnkgc3Vic3RpdHV0aW5nIFNvbWV0aGluZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRoZSByZXR1cm4gdHlwZSBvZiBGLgotdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci1zdHJ1Y3Qg
RnVuY3Rpb247Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSPgotc3RydWN0IEZ1bmN0aW9uPFIoKT4g
ewotICB0eXBlZGVmIFIgUmVzdWx0OwotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8PiBBcmd1
bWVudFR1cGxlOwotICB0eXBlZGVmIHR5cGVuYW1lIE1hdGNoZXJUdXBsZTxBcmd1bWVudFR1cGxl
Pjo6dHlwZSBBcmd1bWVudE1hdGNoZXJUdXBsZTsKLSAgdHlwZWRlZiB2b2lkIE1ha2VSZXN1bHRW
b2lkKCk7Ci0gIHR5cGVkZWYgSWdub3JlZFZhbHVlIE1ha2VSZXN1bHRJZ25vcmVkVmFsdWUoKTsK
LX07Ci0KLQotJHJhbmdlIGkgMS4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0kdmFyIHR5
cGVuYW1lX0FzID0gW1skZm9yIGogW1ssIHR5cGVuYW1lIEEkal1dXV0KLSR2YXIgQXMgPSBbWyRm
b3IgaiwgW1tBJGpdXV1dCi0kdmFyIG1hdGNoZXJfQXMgPSBbWyRmb3IgaiwgW1tNYXRjaGVyPEEk
aj5dXV1dCi0kcmFuZ2UgayAxLi5pLTEKLSR2YXIgcHJldl9BcyA9IFtbJGZvciBrLCBbW0Eka11d
XV0KLXRlbXBsYXRlIDx0eXBlbmFtZSBSJHR5cGVuYW1lX0FzPgotc3RydWN0IEZ1bmN0aW9uPFIo
JEFzKT4KLSAgICA6IEZ1bmN0aW9uPFIoJHByZXZfQXMpPiB7Ci0gIHR5cGVkZWYgQSRpIEFyZ3Vt
ZW50JGk7Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwkQXM+IEFyZ3VtZW50VHVwbGU7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgTWF0Y2hlclR1cGxlPEFyZ3VtZW50VHVwbGU+Ojp0eXBlIEFyZ3Vt
ZW50TWF0Y2hlclR1cGxlOwotICB0eXBlZGVmIHZvaWQgTWFrZVJlc3VsdFZvaWQoJEFzKTsKLSAg
dHlwZWRlZiBJZ25vcmVkVmFsdWUgTWFrZVJlc3VsdElnbm9yZWRWYWx1ZSgkQXMpOwotfTsKLQot
Ci1dXQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
Ci0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19HRU5FUkFU
RURfSU5URVJOQUxfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUvZ21v
Y2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL2luY2x1ZGUv
Z21vY2svaW50ZXJuYWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2U2NWNlYThkZDE0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
aW5jbHVkZS9nbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTEwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nl
cy4KLS8vCi0vLyBUaGlzIGZpbGUgZGVmaW5lcyBzb21lIHV0aWxpdGllcyB1c2VmdWwgZm9yIGlt
cGxlbWVudGluZyBHb29nbGUKLS8vIE1vY2suICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3
aXRob3V0IG5vdGljZSwgc28gcGxlYXNlIERPIE5PVAotLy8gVVNFIFRIRU0gSU4gVVNFUiBDT0RF
LgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01PQ0tfSU5URVJOQUxfR01PQ0tfSU5URVJOQUxf
VVRJTFNfSF8KLSNkZWZpbmUgR01PQ0tfSU5DTFVERV9HTU9DS19JTlRFUk5BTF9HTU9DS19JTlRF
Uk5BTF9VVElMU19IXwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxvc3RyZWFtPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwv
Z21vY2stZ2VuZXJhdGVkLWludGVybmFsLXV0aWxzLmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJu
YWwvZ21vY2stcG9ydC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0
ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIENvbnZlcnRzIGFuIGlkZW50aWZp
ZXIgbmFtZSB0byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGxvd2VyLWNhc2UKLS8vIHdvcmRz
LiAgRWFjaCBtYXhpbXVtIHN1YnN0cmluZyBvZiB0aGUgZm9ybSBbQS1aYS16XVthLXpdKnxcZCsg
aXMKLS8vIHRyZWF0ZWQgYXMgb25lIHdvcmQuICBGb3IgZXhhbXBsZSwgYm90aCAiRm9vQmFyMTIz
IiBhbmQKLS8vICJmb29fYmFyXzEyMyIgYXJlIGNvbnZlcnRlZCB0byAiZm9vIGJhciAxMjMiLgot
R1RFU1RfQVBJXyBzdHJpbmcgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkcyhjb25zdCBjaGFy
KiBpZF9uYW1lKTsKLQotLy8gUG9pbnRlZU9mPFBvaW50ZXI+Ojp0eXBlIGlzIHRoZSB0eXBlIG9m
IGEgdmFsdWUgcG9pbnRlZCB0byBieSBhCi0vLyBQb2ludGVyLCB3aGljaCBjYW4gYmUgZWl0aGVy
IGEgc21hcnQgcG9pbnRlciBvciBhIHJhdyBwb2ludGVyLiAgVGhlCi0vLyBmb2xsb3dpbmcgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdGhlIGNhc2Ugd2hlcmUgUG9pbnRlciBpcyBhCi0v
LyBzbWFydCBwb2ludGVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZXI+Ci1zdHJ1Y3QgUG9p
bnRlZU9mIHsKLSAgLy8gU21hcnQgcG9pbnRlciBjbGFzc2VzIGRlZmluZSB0eXBlIGVsZW1lbnRf
dHlwZSBhcyB0aGUgdHlwZSBvZgotICAvLyB0aGVpciBwb2ludGVlcy4KLSAgdHlwZWRlZiB0eXBl
bmFtZSBQb2ludGVyOjplbGVtZW50X3R5cGUgdHlwZTsKLX07Ci0vLyBUaGlzIHNwZWNpYWxpemF0
aW9uIGlzIGZvciB0aGUgcmF3IHBvaW50ZXIgY2FzZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RydWN0IFBvaW50ZWVPZjxUKj4geyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAotCi0v
LyBHZXRSYXdQb2ludGVyKHApIHJldHVybnMgdGhlIHJhdyBwb2ludGVyIHVuZGVybHlpbmcgcCB3
aGVuIHAgaXMgYQotLy8gc21hcnQgcG9pbnRlciwgb3IgcmV0dXJucyBwIGl0c2VsZiB3aGVuIHAg
aXMgYWxyZWFkeSBhIHJhdyBwb2ludGVyLgotLy8gVGhlIGZvbGxvd2luZyBkZWZhdWx0IGltcGxl
bWVudGF0aW9uIGlzIGZvciB0aGUgc21hcnQgcG9pbnRlciBjYXNlLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFBvaW50ZXI+Ci1pbmxpbmUgY29uc3QgdHlwZW5hbWUgUG9pbnRlcjo6ZWxlbWVudF90eXBl
KiBHZXRSYXdQb2ludGVyKGNvbnN0IFBvaW50ZXImIHApIHsKLSAgcmV0dXJuIHAuZ2V0KCk7Ci19
Ci0vLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBpcyBmb3IgdGhlIHJhdyBwb2ludGVyIGNhc2Uu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudD4KLWlubGluZSBFbGVtZW50KiBHZXRSYXdQb2lu
dGVyKEVsZW1lbnQqIHApIHsgcmV0dXJuIHA7IH0KLQotLy8gVGhpcyBjb21wYXJhdG9yIGFsbG93
cyBsaW5rZWRfcHRyIHRvIGJlIHN0b3JlZCBpbiBzZXRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgTGlua2VkUHRyTGVzc1RoYW4gewotICBib29sIG9wZXJhdG9yKCkoY29uc3QgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxUPiYgbGhzLAotICAgICAgICAgICAgICAgICAg
Y29uc3QgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjxUPiYgcmhzKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIGxocy5nZXQoKSA8IHJocy5nZXQoKTsKLSAgfQotfTsKLQotLy8gU3ltYmlhbiBj
b21waWxhdGlvbiBjYW4gYmUgZG9uZSB3aXRoIHdjaGFyX3QgYmVpbmcgZWl0aGVyIGEgbmF0aXZl
Ci0vLyB0eXBlIG9yIGEgdHlwZWRlZi4gIFVzaW5nIEdvb2dsZSBNb2NrIHdpdGggT3BlbkMgd2l0
aG91dCB3Y2hhcl90Ci0vLyBzaG91bGQgcmVxdWlyZSB0aGUgZGVmaW5pdGlvbiBvZiBfU1RMUF9O
T19XQ0hBUl9ULgotLy8KLS8vIE1TVkMgdHJlYXRzIHdjaGFyX3QgYXMgYSBuYXRpdmUgdHlwZSB1
c3VhbGx5LCBidXQgdHJlYXRzIGl0IGFzIHRoZQotLy8gc2FtZSBhcyB1bnNpZ25lZCBzaG9ydCB3
aGVuIHRoZSBjb21waWxlciBvcHRpb24gL1pjOndjaGFyX3QtIGlzCi0vLyBzcGVjaWZpZWQuICBJ
dCBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuIHdjaGFyX3QKLS8v
IGlzIGEgbmF0aXZlIHR5cGUuCi0jaWYgKEdURVNUX09TX1NZTUJJQU4gJiYgZGVmaW5lZChfU1RM
UF9OT19XQ0hBUl9UKSkgfHwgXAotICAgIChkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChf
TkFUSVZFX1dDSEFSX1RfREVGSU5FRCkpCi0vLyB3Y2hhcl90IGlzIGEgdHlwZWRlZi4KLSNlbHNl
Ci0jIGRlZmluZSBHTU9DS19XQ0hBUl9UX0lTX05BVElWRV8gMQotI2VuZGlmCi0KLS8vIHNpZ25l
ZCB3Y2hhcl90IGFuZCB1bnNpZ25lZCB3Y2hhcl90IGFyZSBOT1QgaW4gdGhlIEMrKyBzdGFuZGFy
ZC4KLS8vIFVzaW5nIHRoZW0gaXMgYSBiYWQgcHJhY3RpY2UgYW5kIG5vdCBwb3J0YWJsZS4gIFNv
IERPTidUIHVzZSB0aGVtLgotLy8KLS8vIFN0aWxsLCBHb29nbGUgTW9jayBpcyBkZXNpZ25lZCB0
byB3b3JrIGV2ZW4gaWYgdGhlIHVzZXIgdXNlcyBzaWduZWQKLS8vIHdjaGFyX3Qgb3IgdW5zaWdu
ZWQgd2NoYXJfdCAob2J2aW91c2x5LCBhc3N1bWluZyB0aGUgY29tcGlsZXIKLS8vIHN1cHBvcnRz
IHRoZW0pLgotLy8KLS8vIFRvIGdjYywKLS8vICAgd2NoYXJfdCA9PSBzaWduZWQgd2NoYXJfdCAh
PSB1bnNpZ25lZCB3Y2hhcl90ID09IHVuc2lnbmVkIGludAotI2lmZGVmIF9fR05VQ19fCi0vLyBz
aWduZWQvdW5zaWduZWQgd2NoYXJfdCBhcmUgdmFsaWQgdHlwZXMuCi0jIGRlZmluZSBHTU9DS19I
QVNfU0lHTkVEX1dDSEFSX1RfIDEKLSNlbmRpZgotCi0vLyBJbiB3aGF0IGZvbGxvd3MsIHdlIHVz
ZSB0aGUgdGVybSAia2luZCIgdG8gaW5kaWNhdGUgd2hldGhlciBhIHR5cGUKLS8vIGlzIGJvb2ws
IGFuIGludGVnZXIgdHlwZSAoZXhjbHVkaW5nIGJvb2wpLCBhIGZsb2F0aW5nLXBvaW50IHR5cGUs
Ci0vLyBvciBub25lIG9mIHRoZW0uICBUaGlzIGNhdGVnb3JpemF0aW9uIGlzIHVzZWZ1bCBmb3Ig
ZGV0ZXJtaW5pbmcKLS8vIHdoZW4gYSBtYXRjaGVyIGFyZ3VtZW50IHR5cGUgY2FuIGJlIHNhZmVs
eSBjb252ZXJ0ZWQgdG8gYW5vdGhlcgotLy8gdHlwZSBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
U2FmZU1hdGNoZXJDYXN0LgotZW51bSBUeXBlS2luZCB7Ci0gIGtCb29sLCBrSW50ZWdlciwga0Zs
b2F0aW5nUG9pbnQsIGtPdGhlcgotfTsKLQotLy8gS2luZE9mPFQ+Ojp2YWx1ZSBpcyB0aGUga2lu
ZCBvZiB0eXBlIFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEtpbmRPZiB7Ci0gIGVu
dW0geyB2YWx1ZSA9IGtPdGhlciB9OyAgLy8gVGhlIGRlZmF1bHQga2luZC4KLX07Ci0KLS8vIFRo
aXMgbWFjcm8gZGVjbGFyZXMgdGhhdCB0aGUga2luZCBvZiAndHlwZScgaXMgJ2tpbmQnLgotI2Rl
ZmluZSBHTU9DS19ERUNMQVJFX0tJTkRfKHR5cGUsIGtpbmQpIFwKLSAgdGVtcGxhdGUgPD4gc3Ry
dWN0IEtpbmRPZjx0eXBlPiB7IGVudW0geyB2YWx1ZSA9IGtpbmQgfTsgfQotCi1HTU9DS19ERUNM
QVJFX0tJTkRfKGJvb2wsIGtCb29sKTsKLQotLy8gQWxsIHN0YW5kYXJkIGludGVnZXIgdHlwZXMu
Ci1HTU9DS19ERUNMQVJFX0tJTkRfKGNoYXIsIGtJbnRlZ2VyKTsKLUdNT0NLX0RFQ0xBUkVfS0lO
RF8oc2lnbmVkIGNoYXIsIGtJbnRlZ2VyKTsKLUdNT0NLX0RFQ0xBUkVfS0lORF8odW5zaWduZWQg
Y2hhciwga0ludGVnZXIpOwotR01PQ0tfREVDTEFSRV9LSU5EXyhzaG9ydCwga0ludGVnZXIpOyAg
Ly8gTk9MSU5UCi1HTU9DS19ERUNMQVJFX0tJTkRfKHVuc2lnbmVkIHNob3J0LCBrSW50ZWdlcik7
ICAvLyBOT0xJTlQKLUdNT0NLX0RFQ0xBUkVfS0lORF8oaW50LCBrSW50ZWdlcik7Ci1HTU9DS19E
RUNMQVJFX0tJTkRfKHVuc2lnbmVkIGludCwga0ludGVnZXIpOwotR01PQ0tfREVDTEFSRV9LSU5E
Xyhsb25nLCBrSW50ZWdlcik7ICAvLyBOT0xJTlQKLUdNT0NLX0RFQ0xBUkVfS0lORF8odW5zaWdu
ZWQgbG9uZywga0ludGVnZXIpOyAgLy8gTk9MSU5UCi0KLSNpZiBHTU9DS19XQ0hBUl9UX0lTX05B
VElWRV8KLUdNT0NLX0RFQ0xBUkVfS0lORF8od2NoYXJfdCwga0ludGVnZXIpOwotI2VuZGlmCi0K
LS8vIE5vbi1zdGFuZGFyZCBpbnRlZ2VyIHR5cGVzLgotR01PQ0tfREVDTEFSRV9LSU5EXyhJbnQ2
NCwga0ludGVnZXIpOwotR01PQ0tfREVDTEFSRV9LSU5EXyhVSW50NjQsIGtJbnRlZ2VyKTsKLQot
Ly8gQWxsIHN0YW5kYXJkIGZsb2F0aW5nLXBvaW50IHR5cGVzLgotR01PQ0tfREVDTEFSRV9LSU5E
XyhmbG9hdCwga0Zsb2F0aW5nUG9pbnQpOwotR01PQ0tfREVDTEFSRV9LSU5EXyhkb3VibGUsIGtG
bG9hdGluZ1BvaW50KTsKLUdNT0NLX0RFQ0xBUkVfS0lORF8obG9uZyBkb3VibGUsIGtGbG9hdGlu
Z1BvaW50KTsKLQotI3VuZGVmIEdNT0NLX0RFQ0xBUkVfS0lORF8KLQotLy8gRXZhbHVhdGVzIHRv
IHRoZSBraW5kIG9mICd0eXBlJy4KLSNkZWZpbmUgR01PQ0tfS0lORF9PRl8odHlwZSkgXAotICBz
dGF0aWNfY2FzdDwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUtpbmQ+KCBcCi0gICAgICA6OnRl
c3Rpbmc6OmludGVybmFsOjpLaW5kT2Y8dHlwZT46OnZhbHVlKQotCi0vLyBFdmFsdWF0ZXMgdG8g
dHJ1ZSBpZmYgaW50ZWdlciB0eXBlIFQgaXMgc2lnbmVkLgotI2RlZmluZSBHTU9DS19JU19TSUdO
RURfKFQpIChzdGF0aWNfY2FzdDxUPigtMSkgPCAwKQotCi0vLyBMb3NzbGVzc0FyaXRobWV0aWND
b252ZXJ0aWJsZUltcGw8a0Zyb21LaW5kLCBGcm9tLCBrVG9LaW5kLCBUbz46OnZhbHVlCi0vLyBp
cyB0cnVlIGlmZiBhcml0aG1ldGljIHR5cGUgRnJvbSBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0
ZWQgdG8KLS8vIGFyaXRobWV0aWMgdHlwZSBUby4KLS8vCi0vLyBJdCdzIHRoZSB1c2VyJ3MgcmVz
cG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQgYm90aCBGcm9tIGFuZCBUbyBhcmUKLS8vIHJhdyAo
aS5lLiBoYXMgbm8gQ1YgbW9kaWZpZXIsIGlzIG5vdCBhIHBvaW50ZXIsIGFuZCBpcyBub3QgYQot
Ly8gcmVmZXJlbmNlKSBidWlsdC1pbiBhcml0aG1ldGljIHR5cGVzLCBrRnJvbUtpbmQgaXMgdGhl
IGtpbmQgb2YKLS8vIEZyb20sIGFuZCBrVG9LaW5kIGlzIHRoZSBraW5kIG9mIFRvOyB0aGUgdmFs
dWUgaXMKLS8vIGltcGxlbWVudGF0aW9uLWRlZmluZWQgd2hlbiB0aGUgYWJvdmUgcHJlLWNvbmRp
dGlvbiBpcyB2aW9sYXRlZC4KLXRlbXBsYXRlIDxUeXBlS2luZCBrRnJvbUtpbmQsIHR5cGVuYW1l
IEZyb20sIFR5cGVLaW5kIGtUb0tpbmQsIHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlSW1wbCA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwotCi0vLyBDb252
ZXJ0aW5nIGJvb2wgdG8gYm9vbCBpcyBsb3NzbGVzcy4KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9z
c2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtCb29sLCBib29sLCBrQm9vbCwgYm9vbD4K
LSAgICA6IHB1YmxpYyB0cnVlX3R5cGUge307ICAvLyBOT0xJTlQKLQotLy8gQ29udmVydGluZyBi
b29sIHRvIGFueSBpbnRlZ2VyIHR5cGUgaXMgbG9zc2xlc3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VG8+Ci1zdHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtCb29sLCBib29s
LCBrSW50ZWdlciwgVG8+Ci0gICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OyAgLy8gTk9MSU5UCi0K
LS8vIENvbnZlcnRpbmcgYm9vbCB0byBhbnkgZmxvYXRpbmctcG9pbnQgdHlwZSBpcyBsb3NzbGVz
cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUbz4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252
ZXJ0aWJsZUltcGw8a0Jvb2wsIGJvb2wsIGtGbG9hdGluZ1BvaW50LCBUbz4KLSAgICA6IHB1Ymxp
YyB0cnVlX3R5cGUge307ICAvLyBOT0xJTlQKLQotLy8gQ29udmVydGluZyBhbiBpbnRlZ2VyIHRv
IGJvb2wgaXMgbG9zc3kuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbT4KLXN0cnVjdCBMb3NzbGVz
c0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8a0ludGVnZXIsIEZyb20sIGtCb29sLCBib29sPgot
ICAgIDogcHVibGljIGZhbHNlX3R5cGUge307ICAvLyBOT0xJTlQKLQotLy8gQ29udmVydGluZyBh
biBpbnRlZ2VyIHRvIGFub3RoZXIgbm9uLWJvb2wgaW50ZWdlciBpcyBsb3NzbGVzcyBpZmYKLS8v
IHRoZSB0YXJnZXQgdHlwZSdzIHJhbmdlIGVuY2xvc2VzIHRoZSBzb3VyY2UgdHlwZSdzIHJhbmdl
LgotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3NsZXNz
QXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrSW50ZWdlciwgRnJvbSwga0ludGVnZXIsIFRvPgot
ICAgIDogcHVibGljIGJvb2xfY29uc3RhbnQ8Ci0gICAgICAvLyBXaGVuIGNvbnZlcnRpbmcgZnJv
bSBhIHNtYWxsZXIgc2l6ZSB0byBhIGxhcmdlciBzaXplLCB3ZSBhcmUKLSAgICAgIC8vIGZpbmUg
YXMgbG9uZyBhcyB3ZSBhcmUgbm90IGNvbnZlcnRpbmcgZnJvbSBzaWduZWQgdG8gdW5zaWduZWQu
Ci0gICAgICAoKHNpemVvZihGcm9tKSA8IHNpemVvZihUbykpICYmCi0gICAgICAgKCFHTU9DS19J
U19TSUdORURfKEZyb20pIHx8IEdNT0NLX0lTX1NJR05FRF8oVG8pKSkgfHwKLSAgICAgIC8vIFdo
ZW4gY29udmVydGluZyBiZXR3ZWVuIHRoZSBzYW1lIHNpemUsIHRoZSBzaWduZWRuZXNzIG11c3Qg
bWF0Y2guCi0gICAgICAoKHNpemVvZihGcm9tKSA9PSBzaXplb2YoVG8pKSAmJgotICAgICAgIChH
TU9DS19JU19TSUdORURfKEZyb20pID09IEdNT0NLX0lTX1NJR05FRF8oVG8pKSk+IHt9OyAgLy8g
Tk9MSU5UCi0KLSN1bmRlZiBHTU9DS19JU19TSUdORURfCi0KLS8vIENvbnZlcnRpbmcgYW4gaW50
ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IHR5cGUgbWF5IGJlIGxvc3N5LCBzaW5jZQotLy8gdGhl
IGZvcm1hdCBvZiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyBpbXBsZW1lbnRhdGlvbi1kZWZp
bmVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3Ns
ZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDxrSW50ZWdlciwgRnJvbSwga0Zsb2F0aW5nUG9p
bnQsIFRvPgotICAgIDogcHVibGljIGZhbHNlX3R5cGUge307ICAvLyBOT0xJTlQKLQotLy8gQ29u
dmVydGluZyBhIGZsb2F0aW5nLXBvaW50IHRvIGJvb2wgaXMgbG9zc3kuCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnJvbT4KLXN0cnVjdCBMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZUltcGw8a0Zs
b2F0aW5nUG9pbnQsIEZyb20sIGtCb29sLCBib29sPgotICAgIDogcHVibGljIGZhbHNlX3R5cGUg
e307ICAvLyBOT0xJTlQKLQotLy8gQ29udmVydGluZyBhIGZsb2F0aW5nLXBvaW50IHRvIGFuIGlu
dGVnZXIgaXMgbG9zc3kuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1z
dHJ1Y3QgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGVJbXBsPGtGbG9hdGluZ1BvaW50LCBG
cm9tLCBrSW50ZWdlciwgVG8+Ci0gICAgOiBwdWJsaWMgZmFsc2VfdHlwZSB7fTsgIC8vIE5PTElO
VAotCi0vLyBDb252ZXJ0aW5nIGEgZmxvYXRpbmctcG9pbnQgdG8gYW5vdGhlciBmbG9hdGluZy1w
b2ludCBpcyBsb3NzbGVzcwotLy8gaWZmIHRoZSB0YXJnZXQgdHlwZSBpcyBhdCBsZWFzdCBhcyBi
aWcgYXMgdGhlIHNvdXJjZSB0eXBlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1l
IFRvPgotc3RydWN0IExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlSW1wbDwKLSAga0Zsb2F0
aW5nUG9pbnQsIEZyb20sIGtGbG9hdGluZ1BvaW50LCBUbz4KLSAgICA6IHB1YmxpYyBib29sX2Nv
bnN0YW50PHNpemVvZihGcm9tKSA8PSBzaXplb2YoVG8pPiB7fTsgIC8vIE5PTElOVAotCi0vLyBM
b3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxGcm9tLCBUbz46OnZhbHVlIGlzIHRydWUgaWZm
IGFyaXRobWV0aWMKLS8vIHR5cGUgRnJvbSBjYW4gYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8g
YXJpdGhtZXRpYyB0eXBlIFRvLgotLy8KLS8vIEl0J3MgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0
eSB0byBlbnN1cmUgdGhhdCBib3RoIEZyb20gYW5kIFRvIGFyZQotLy8gcmF3IChpLmUuIGhhcyBu
byBDViBtb2RpZmllciwgaXMgbm90IGEgcG9pbnRlciwgYW5kIGlzIG5vdCBhCi0vLyByZWZlcmVu
Y2UpIGJ1aWx0LWluIGFyaXRobWV0aWMgdHlwZXM7IHRoZSB2YWx1ZSBpcwotLy8gaW1wbGVtZW50
YXRpb24tZGVmaW5lZCB3aGVuIHRoZSBhYm92ZSBwcmUtY29uZGl0aW9uIGlzIHZpb2xhdGVkLgot
dGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlCi0gICAgOiBwdWJsaWMgTG9zc2xlc3NBcml0aG1ldGljQ29udmVy
dGlibGVJbXBsPAotICBHTU9DS19LSU5EX09GXyhGcm9tKSwgRnJvbSwgR01PQ0tfS0lORF9PRl8o
VG8pLCBUbz4ge307ICAvLyBOT0xJTlQKLQotLy8gVGhpcyBpbnRlcmZhY2Uga25vd3MgaG93IHRv
IHJlcG9ydCBhIEdvb2dsZSBNb2NrIGZhaWx1cmUgKGVpdGhlcgotLy8gbm9uLWZhdGFsIG9yIGZh
dGFsKS4KLWNsYXNzIEZhaWx1cmVSZXBvcnRlckludGVyZmFjZSB7Ci0gcHVibGljOgotICAvLyBU
aGUgdHlwZSBvZiBhIGZhaWx1cmUgKGVpdGhlciBub24tZmF0YWwgb3IgZmF0YWwpLgotICBlbnVt
IEZhaWx1cmVUeXBlIHsKLSAgICBrTm9uZmF0YWwsIGtGYXRhbAotICB9OwotCi0gIHZpcnR1YWwg
fkZhaWx1cmVSZXBvcnRlckludGVyZmFjZSgpIHt9Ci0KLSAgLy8gUmVwb3J0cyBhIGZhaWx1cmUg
dGhhdCBvY2N1cnJlZCBhdCB0aGUgZ2l2ZW4gc291cmNlIGZpbGUgbG9jYXRpb24uCi0gIHZpcnR1
YWwgdm9pZCBSZXBvcnRGYWlsdXJlKEZhaWx1cmVUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVzc2FnZSkgPSAwOwotfTsKLQotLy8gUmV0dXJucyB0aGUgZmFpbHVyZSByZXBvcnRlciB1
c2VkIGJ5IEdvb2dsZSBNb2NrLgotR1RFU1RfQVBJXyBGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2Uq
IEdldEZhaWx1cmVSZXBvcnRlcigpOwotCi0vLyBBc3NlcnRzIHRoYXQgY29uZGl0aW9uIGlzIHRy
dWU7IGFib3J0cyB0aGUgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbgotLy8gbWVzc2FnZSBpZiBjb25k
aXRpb24gaXMgZmFsc2UuICBXZSBjYW5ub3QgdXNlIExPRyhGQVRBTCkgb3IgQ0hFQ0soKQotLy8g
YXMgR29vZ2xlIE1vY2sgbWlnaHQgYmUgdXNlZCB0byBtb2NrIHRoZSBsb2cgc2luayBpdHNlbGYu
ICBXZQotLy8gaW5saW5lIHRoaXMgZnVuY3Rpb24gdG8gcHJldmVudCBpdCBmcm9tIHNob3dpbmcg
dXAgaW4gdGhlIHN0YWNrCi0vLyB0cmFjZS4KLWlubGluZSB2b2lkIEFzc2VydChib29sIGNvbmRp
dGlvbiwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1zZykgewotICBpZiAoIWNvbmRpdGlvbikgewotICAgIEdldEZhaWx1
cmVSZXBvcnRlcigpLT5SZXBvcnRGYWlsdXJlKEZhaWx1cmVSZXBvcnRlckludGVyZmFjZTo6a0Zh
dGFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIGxpbmUs
IG1zZyk7Ci0gIH0KLX0KLWlubGluZSB2b2lkIEFzc2VydChib29sIGNvbmRpdGlvbiwgY29uc3Qg
Y2hhciogZmlsZSwgaW50IGxpbmUpIHsKLSAgQXNzZXJ0KGNvbmRpdGlvbiwgZmlsZSwgbGluZSwg
IkFzc2VydGlvbiBmYWlsZWQuIik7Ci19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgY29uZGl0aW9uIGlz
IHRydWU7IGdlbmVyYXRlcyBhIG5vbi1mYXRhbCBmYWlsdXJlIGlmCi0vLyBjb25kaXRpb24gaXMg
ZmFsc2UuCi1pbmxpbmUgdm9pZCBFeHBlY3QoYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cp
IHsKLSAgaWYgKCFjb25kaXRpb24pIHsKLSAgICBHZXRGYWlsdXJlUmVwb3J0ZXIoKS0+UmVwb3J0
RmFpbHVyZShGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2U6OmtOb25mYXRhbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBsaW5lLCBtc2cpOwotICB9Ci19Ci1p
bmxpbmUgdm9pZCBFeHBlY3QoYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIqIGZpbGUsIGludCBs
aW5lKSB7Ci0gIEV4cGVjdChjb25kaXRpb24sIGZpbGUsIGxpbmUsICJFeHBlY3RhdGlvbiBmYWls
ZWQuIik7Ci19Ci0KLS8vIFNldmVyaXR5IGxldmVsIG9mIGEgbG9nLgotZW51bSBMb2dTZXZlcml0
eSB7Ci0gIGtJbmZvID0gMCwKLSAga1dhcm5pbmcgPSAxCi19OwotCi0vLyBWYWxpZCB2YWx1ZXMg
Zm9yIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4KLQotLy8gQWxsIGxvZ3MgKGluZm9ybWF0aW9u
YWwgYW5kIHdhcm5pbmdzKSBhcmUgcHJpbnRlZC4KLWNvbnN0IGNoYXIga0luZm9WZXJib3NpdHlb
XSA9ICJpbmZvIjsKLS8vIE9ubHkgd2FybmluZ3MgYXJlIHByaW50ZWQuCi1jb25zdCBjaGFyIGtX
YXJuaW5nVmVyYm9zaXR5W10gPSAid2FybmluZyI7Ci0vLyBObyBsb2dzIGFyZSBwcmludGVkLgot
Y29uc3QgY2hhciBrRXJyb3JWZXJib3NpdHlbXSA9ICJlcnJvciI7Ci0KLS8vIFJldHVybnMgdHJ1
ZSBpZmYgYSBsb2cgd2l0aCB0aGUgZ2l2ZW4gc2V2ZXJpdHkgaXMgdmlzaWJsZSBhY2NvcmRpbmcK
LS8vIHRvIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4KLUdURVNUX0FQSV8gYm9vbCBMb2dJc1Zp
c2libGUoTG9nU2V2ZXJpdHkgc2V2ZXJpdHkpOwotCi0vLyBQcmludHMgdGhlIGdpdmVuIG1lc3Nh
Z2UgdG8gc3Rkb3V0IGlmZiAnc2V2ZXJpdHknID49IHRoZSBsZXZlbAotLy8gc3BlY2lmaWVkIGJ5
IHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZy4gIElmIHN0YWNrX2ZyYW1lc190b19za2lwID49Ci0v
LyAwLCBhbHNvIHByaW50cyB0aGUgc3RhY2sgdHJhY2UgZXhjbHVkaW5nIHRoZSB0b3AKLS8vIHN0
YWNrX2ZyYW1lc190b19za2lwIGZyYW1lcy4gIEluIG9wdCBtb2RlLCBhbnkgcG9zaXRpdmUKLS8v
IHN0YWNrX2ZyYW1lc190b19za2lwIGlzIHRyZWF0ZWQgYXMgMCwgc2luY2Ugd2UgZG9uJ3Qga25v
dyB3aGljaAotLy8gZnVuY3Rpb24gY2FsbHMgd2lsbCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxl
ciBhbmQgbmVlZCB0byBiZQotLy8gY29uc2VydmF0aXZlLgotR1RFU1RfQVBJXyB2b2lkIExvZyhM
b2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAg
ICAgICAgICAgICAgIGludCBzdGFja19mcmFtZXNfdG9fc2tpcCk7Ci0KLS8vIFRPRE8od2FuQGdv
b2dsZS5jb20pOiBncm91cCBhbGwgdHlwZSB1dGlsaXRpZXMgdG9nZXRoZXIuCi0KLS8vIFR5cGUg
dHJhaXRzLgotCi0vLyBpc19yZWZlcmVuY2U8VD46OnZhbHVlIGlzIG5vbi16ZXJvIGlmZiBUIGlz
IGEgcmVmZXJlbmNlIHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3JlZmVy
ZW5jZSA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBpc19yZWZlcmVuY2U8VCY+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotLy8gdHlwZV9lcXVh
bHM8VDEsIFQyPjo6dmFsdWUgaXMgbm9uLXplcm8gaWZmIFQxIGFuZCBUMiBhcmUgdGhlIHNhbWUg
dHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCB0eXBlX2Vx
dWFscyA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCB0eXBlX2VxdWFsczxULCBUPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0KLS8vIHJlbW92ZV9y
ZWZlcmVuY2U8VD46OnR5cGUgcmVtb3ZlcyB0aGUgcmVmZXJlbmNlIGZyb20gdHlwZSBULCBpZiBh
bnkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlbW92ZV9yZWZlcmVuY2UgeyB0eXBl
ZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBy
ZW1vdmVfcmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAvLyBOT0xJTlQKLQotLy8g
RGVjYXlBcnJheTxUPjo6dHlwZSB0dXJucyBhbiBhcnJheSB0eXBlIFVbTl0gdG8gY29uc3QgVSog
YW5kIHByZXNlcnZlcwotLy8gb3RoZXIgdHlwZXMuICBVc2VmdWwgZm9yIHNhdmluZyBhIGNvcHkg
b2YgYSBmdW5jdGlvbiBhcmd1bWVudC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVj
YXlBcnJheSB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgc2l6ZV90IE4+IHN0cnVjdCBEZWNheUFycmF5PFRbTl0+IHsKLSAgdHlwZWRlZiBjb25z
dCBUKiB0eXBlOwotfTsKLS8vIFNvbWV0aW1lcyBwZW9wbGUgdXNlIGFycmF5cyB3aG9zZSBzaXpl
IGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHVzZSBzaXRlCi0vLyAoZS5nLiBleHRlcm4gY29uc3Qg
Y2hhciBrTmFtZVByZWZpeFtdKS4gIFRoaXMgc3BlY2lhbGl6YXRpb24gY292ZXJzIHRoYXQKLS8v
IGNhc2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IERlY2F5QXJyYXk8VFtdPiB7Ci0g
IHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLX07Ci0KLS8vIERpc2FibGUgTVNWQyB3YXJuaW5ncyBm
b3IgaW5maW5pdGUgcmVjdXJzaW9uLCBzaW5jZSBpbiB0aGlzIGNhc2UgdGhlCi0vLyB0aGUgcmVj
dXJzaW9uIGlzIHVucmVhY2hhYmxlLgotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5n
KHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcxNykKLSNlbmRpZgotCi0vLyBJbnZh
bGlkPFQ+KCkgaXMgdXNhYmxlIGFzIGFuIGV4cHJlc3Npb24gb2YgdHlwZSBULCBidXQgd2lsbCB0
ZXJtaW5hdGUKLS8vIHRoZSBwcm9ncmFtIHdpdGggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaWYgYWN0
dWFsbHkgcnVuLiAgVGhpcyBpcyB1c2VmdWwKLS8vIHdoZW4gYSB2YWx1ZSBvZiB0eXBlIFQgaXMg
bmVlZGVkIGZvciBjb21waWxhdGlvbiwgYnV0IHRoZSBzdGF0ZW1lbnQKLS8vIHdpbGwgbm90IHJl
YWxseSBiZSBleGVjdXRlZCAob3Igd2UgZG9uJ3QgY2FyZSBpZiB0aGUgc3RhdGVtZW50Ci0vLyBj
cmFzaGVzKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgSW52YWxpZCgpIHsKLSAg
QXNzZXJ0KGZhbHNlLCAiIiwgLTEsICJJbnRlcm5hbCBlcnJvcjogYXR0ZW1wdCB0byByZXR1cm4g
aW52YWxpZCB2YWx1ZSIpOwotICAvLyBUaGlzIHN0YXRlbWVudCBpcyB1bnJlYWNoYWJsZSwgYW5k
IHdvdWxkIG5ldmVyIHRlcm1pbmF0ZSBldmVuIGlmIGl0Ci0gIC8vIGNvdWxkIGJlIHJlYWNoZWQu
IEl0IGlzIHByb3ZpZGVkIG9ubHkgdG8gcGxhY2F0ZSBjb21waWxlciB3YXJuaW5ncwotICAvLyBh
Ym91dCBtaXNzaW5nIHJldHVybiBzdGF0ZW1lbnRzLgotICByZXR1cm4gSW52YWxpZDxUPigpOwot
fQotCi0jaWZkZWYgX01TQ19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8v
IEdpdmVuIGEgcmF3IHR5cGUgKGkuZS4gaGF2aW5nIG5vIHRvcC1sZXZlbCByZWZlcmVuY2Ugb3Ig
Y29uc3QKLS8vIG1vZGlmaWVyKSBSYXdDb250YWluZXIgdGhhdCdzIGVpdGhlciBhbiBTVEwtc3R5
bGUgY29udGFpbmVyIG9yIGEKLS8vIG5hdGl2ZSBhcnJheSwgY2xhc3MgU3RsQ29udGFpbmVyVmll
dzxSYXdDb250YWluZXI+IGhhcyB0aGUKLS8vIGZvbGxvd2luZyBtZW1iZXJzOgotLy8KLS8vICAg
LSB0eXBlIGlzIGEgdHlwZSB0aGF0IHByb3ZpZGVzIGFuIFNUTC1zdHlsZSBjb250YWluZXIgdmll
dyB0bwotLy8gICAgIChpLmUuIGltcGxlbWVudHMgdGhlIFNUTCBjb250YWluZXIgY29uY2VwdCBm
b3IpIFJhd0NvbnRhaW5lcjsKLS8vICAgLSBjb25zdF9yZWZlcmVuY2UgaXMgYSB0eXBlIHRoYXQg
cHJvdmlkZXMgYSByZWZlcmVuY2UgdG8gYSBjb25zdAotLy8gICAgIFJhd0NvbnRhaW5lcjsKLS8v
ICAgLSBDb25zdFJlZmVyZW5jZShyYXdfY29udGFpbmVyKSByZXR1cm5zIGEgY29uc3QgcmVmZXJl
bmNlIHRvIGFuIFNUTC1zdHlsZQotLy8gICAgIGNvbnRhaW5lciB2aWV3IHRvIHJhd19jb250YWlu
ZXIsIHdoaWNoIGlzIGEgUmF3Q29udGFpbmVyLgotLy8gICAtIENvcHkocmF3X2NvbnRhaW5lcikg
cmV0dXJucyBhbiBTVEwtc3R5bGUgY29udGFpbmVyIHZpZXcgb2YgYQotLy8gICAgIGNvcHkgb2Yg
cmF3X2NvbnRhaW5lciwgd2hpY2ggaXMgYSBSYXdDb250YWluZXIuCi0vLwotLy8gVGhpcyBnZW5l
cmljIHZlcnNpb24gaXMgdXNlZCB3aGVuIFJhd0NvbnRhaW5lciBpdHNlbGYgaXMgYWxyZWFkeSBh
bgotLy8gU1RMLXN0eWxlIGNvbnRhaW5lci4KLXRlbXBsYXRlIDxjbGFzcyBSYXdDb250YWluZXI+
Ci1jbGFzcyBTdGxDb250YWluZXJWaWV3IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgUmF3Q29udGFp
bmVyIHR5cGU7Ci0gIHR5cGVkZWYgY29uc3QgdHlwZSYgY29uc3RfcmVmZXJlbmNlOwotCi0gIHN0
YXRpYyBjb25zdF9yZWZlcmVuY2UgQ29uc3RSZWZlcmVuY2UoY29uc3QgUmF3Q29udGFpbmVyJiBj
b250YWluZXIpIHsKLSAgICAvLyBFbnN1cmVzIHRoYXQgUmF3Q29udGFpbmVyIGlzIG5vdCBhIGNv
bnN0IHR5cGUuCi0gICAgdGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFJhd0NvbnRhaW5lciwK
LSAgICAgICAgR1RFU1RfUkVNT1ZFX0NPTlNUXyhSYXdDb250YWluZXIpPigpOwotICAgIHJldHVy
biBjb250YWluZXI7Ci0gIH0KLSAgc3RhdGljIHR5cGUgQ29weShjb25zdCBSYXdDb250YWluZXIm
IGNvbnRhaW5lcikgeyByZXR1cm4gY29udGFpbmVyOyB9Ci19OwotCi0vLyBUaGlzIHNwZWNpYWxp
emF0aW9uIGlzIHVzZWQgd2hlbiBSYXdDb250YWluZXIgaXMgYSBuYXRpdmUgYXJyYXkgdHlwZS4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50LCBzaXplX3QgTj4KLWNsYXNzIFN0bENvbnRhaW5l
clZpZXc8RWxlbWVudFtOXT4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiBHVEVTVF9SRU1PVkVfQ09O
U1RfKEVsZW1lbnQpIFJhd0VsZW1lbnQ7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6Ok5hdGl2ZUFycmF5
PFJhd0VsZW1lbnQ+IHR5cGU7Ci0gIC8vIE5hdGl2ZUFycmF5PFQ+IGNhbiByZXByZXNlbnQgYSBu
YXRpdmUgYXJyYXkgZWl0aGVyIGJ5IHZhbHVlIG9yIGJ5Ci0gIC8vIHJlZmVyZW5jZSAoc2VsZWN0
ZWQgYnkgYSBjb25zdHJ1Y3RvciBhcmd1bWVudCksIHNvICdjb25zdCB0eXBlJwotICAvLyBjYW4g
YmUgdXNlZCB0byByZWZlcmVuY2UgYSBjb25zdCBuYXRpdmUgYXJyYXkuICBXZSBjYW5ub3QKLSAg
Ly8gJ3R5cGVkZWYgY29uc3QgdHlwZSYgY29uc3RfcmVmZXJlbmNlJyBoZXJlLCBhcyB0aGF0IHdv
dWxkIG1lYW4KLSAgLy8gQ29uc3RSZWZlcmVuY2UoKSBoYXMgdG8gcmV0dXJuIGEgcmVmZXJlbmNl
IHRvIGEgbG9jYWwgdmFyaWFibGUuCi0gIHR5cGVkZWYgY29uc3QgdHlwZSBjb25zdF9yZWZlcmVu
Y2U7Ci0KLSAgc3RhdGljIGNvbnN0X3JlZmVyZW5jZSBDb25zdFJlZmVyZW5jZShjb25zdCBFbGVt
ZW50ICgmYXJyYXkpW05dKSB7Ci0gICAgLy8gRW5zdXJlcyB0aGF0IEVsZW1lbnQgaXMgbm90IGEg
Y29uc3QgdHlwZS4KLSAgICB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8RWxlbWVudCwgUmF3
RWxlbWVudD4oKTsKLSNpZiBHVEVTVF9PU19TWU1CSUFOCi0gICAgLy8gVGhlIE5va2lhIFN5bWJp
YW4gY29tcGlsZXIgY29uZnVzZXMgaXRzZWxmIGluIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KLSAg
ICAvLyBmb3IgdGhpcyBjYWxsIHdpdGhvdXQgdGhlIGNhc3QgdG8gRWxlbWVudCo6Ci0gICAgLy8g
ZnVuY3Rpb24gY2FsbCAnW3Rlc3Rpbmc6OmludGVybmFsOjpOYXRpdmVBcnJheTxjaGFyICo+XS5O
YXRpdmVBcnJheSgKLSAgICAvLyAgICAge2x2YWx9IGNvbnN0IGNoYXIgKls0XSwgbG9uZywgdGVz
dGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2UpJwotICAgIC8vICAgICBkb2VzIG5vdCBt
YXRjaAotICAgIC8vICd0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk8Y2hhciAqPjo6TmF0
aXZlQXJyYXkoCi0gICAgLy8gICAgIGNoYXIgKmNvbnN0ICosIHVuc2lnbmVkIGludCwgdGVzdGlu
Zzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2UpJwotICAgIC8vIChpbnN0YW50aWF0aW5nOiAn
dGVzdGluZzo6aW50ZXJuYWw6OkNvbnRhaW5zTWF0Y2hlckltcGwKLSAgICAvLyAgICAgPGNvbnN0
IGNoYXIgKiAoJilbNF0+OjpNYXRjaGVzKGNvbnN0IGNoYXIgKiAoJilbNF0pIGNvbnN0JykKLSAg
ICAvLyAoaW5zdGFudGlhdGluZzogJ3Rlc3Rpbmc6OmludGVybmFsOjpTdGxDb250YWluZXJWaWV3
PGNoYXIgKls0XT46OgotICAgIC8vICAgICBDb25zdFJlZmVyZW5jZShjb25zdCBjaGFyICogKCYp
WzRdKScpCi0gICAgLy8gKGFuZCB0aG91Z2ggdGhlIE4gcGFyYW1ldGVyIHR5cGUgaXMgbWlzbWF0
Y2hlZCBpbiB0aGUgYWJvdmUgZXhwbGljaXQKLSAgICAvLyBjb252ZXJzaW9uIG9mIGl0IGRvZXNu
J3QgaGVscCAtIG9ubHkgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGFycmF5KS4KLSAgICByZXR1cm4g
dHlwZShjb25zdF9jYXN0PEVsZW1lbnQqPigmYXJyYXlbMF0pLCBOLAotICAgICAgICAgICAgICAg
IFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Ci0jZWxzZQotICAgIHJldHVybiB0eXBlKGFy
cmF5LCBOLCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNlKCkpOwotI2VuZGlmICAvLyBHVEVTVF9P
U19TWU1CSUFOCi0gIH0KLSAgc3RhdGljIHR5cGUgQ29weShjb25zdCBFbGVtZW50ICgmYXJyYXkp
W05dKSB7Ci0jaWYgR1RFU1RfT1NfU1lNQklBTgotICAgIHJldHVybiB0eXBlKGNvbnN0X2Nhc3Q8
RWxlbWVudCo+KCZhcnJheVswXSksIE4sIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpOwotI2Vsc2UK
LSAgICByZXR1cm4gdHlwZShhcnJheSwgTiwgUmVsYXRpb25Ub1NvdXJjZUNvcHkoKSk7Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1NZTUJJQU4KLSAgfQotfTsKLQotLy8gVGhpcyBzcGVjaWFsaXphdGlv
biBpcyB1c2VkIHdoZW4gUmF3Q29udGFpbmVyIGlzIGEgbmF0aXZlIGFycmF5Ci0vLyByZXByZXNl
bnRlZCBhcyBhIChwb2ludGVyLCBzaXplKSB0dXBsZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50UG9pbnRlciwgdHlwZW5hbWUgU2l6ZT4KLWNsYXNzIFN0bENvbnRhaW5lclZpZXc8IDo6dGVz
dGluZzo6dHVwbGU8RWxlbWVudFBvaW50ZXIsIFNpemU+ID4gewotIHB1YmxpYzoKLSAgdHlwZWRl
ZiBHVEVTVF9SRU1PVkVfQ09OU1RfKAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OlBvaW50ZWVP
ZjxFbGVtZW50UG9pbnRlcj46OnR5cGUpIFJhd0VsZW1lbnQ7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6
Ok5hdGl2ZUFycmF5PFJhd0VsZW1lbnQ+IHR5cGU7Ci0gIHR5cGVkZWYgY29uc3QgdHlwZSBjb25z
dF9yZWZlcmVuY2U7Ci0KLSAgc3RhdGljIGNvbnN0X3JlZmVyZW5jZSBDb25zdFJlZmVyZW5jZSgK
LSAgICAgIGNvbnN0IDo6dGVzdGluZzo6dHVwbGU8RWxlbWVudFBvaW50ZXIsIFNpemU+JiBhcnJh
eSkgewotICAgIHJldHVybiB0eXBlKGdldDwwPihhcnJheSksIGdldDwxPihhcnJheSksIFJlbGF0
aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Ci0gIH0KLSAgc3RhdGljIHR5cGUgQ29weShjb25zdCA6
OnRlc3Rpbmc6OnR1cGxlPEVsZW1lbnRQb2ludGVyLCBTaXplPiYgYXJyYXkpIHsKLSAgICByZXR1
cm4gdHlwZShnZXQ8MD4oYXJyYXkpLCBnZXQ8MT4oYXJyYXkpLCBSZWxhdGlvblRvU291cmNlQ29w
eSgpKTsKLSAgfQotfTsKLQotLy8gVGhlIGZvbGxvd2luZyBzcGVjaWFsaXphdGlvbiBwcmV2ZW50
cyB0aGUgdXNlciBmcm9tIGluc3RhbnRpYXRpbmcKLS8vIFN0bENvbnRhaW5lciB3aXRoIGEgcmVm
ZXJlbmNlIHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3RsQ29udGFpbmVyVmll
dzxUJj47Ci0KLS8vIEEgdHlwZSB0cmFuc2Zvcm0gdG8gcmVtb3ZlIGNvbnN0bmVzcyBmcm9tIHRo
ZSBmaXJzdCBwYXJ0IG9mIGEgcGFpci4KLS8vIFBhaXJzIGxpa2UgdGhhdCBhcmUgdXNlZCBhcyB0
aGUgdmFsdWVfdHlwZSBvZiBhc3NvY2lhdGl2ZSBjb250YWluZXJzLAotLy8gYW5kIHRoaXMgdHJh
bnNmb3JtIHByb2R1Y2VzIGEgc2ltaWxhciBidXQgYXNzaWduYWJsZSBwYWlyLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVtb3ZlQ29uc3RGcm9tS2V5IHsKLSAgdHlwZWRlZiBUIHR5
cGU7Ci19OwotCi0vLyBQYXJ0aWFsbHkgc3BlY2lhbGl6ZWQgdG8gcmVtb3ZlIGNvbnN0bmVzcyBm
cm9tIHN0ZDo6cGFpcjxjb25zdCBLLCBWPi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFt
ZSBWPgotc3RydWN0IFJlbW92ZUNvbnN0RnJvbUtleTxzdGQ6OnBhaXI8Y29uc3QgSywgVj4gPiB7
Ci0gIHR5cGVkZWYgc3RkOjpwYWlyPEssIFY+IHR5cGU7Ci19OwotCi0vLyBNYXBwaW5nIGZyb20g
Ym9vbGVhbnMgdG8gdHlwZXMuIFNpbWlsYXIgdG8gYm9vc3Q6OmJvb2xfPGtWYWx1ZT4gYW5kCi0v
LyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIGtWYWx1ZT4uCi10ZW1wbGF0ZSA8Ym9vbCBr
VmFsdWU+Ci1zdHJ1Y3QgQm9vbGVhbkNvbnN0YW50IHt9OwotCi19ICAvLyBuYW1lc3BhY2UgaW50
ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR01PQ0tfSU5DTFVE
RV9HTU9DS19JTlRFUk5BTF9HTU9DS19JTlRFUk5BTF9VVElMU19IXwotCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL2luY2x1ZGUvZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2M2Y0YTY4MDJlOGUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay9pbmNsdWRlL2dtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDkxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoK
LS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
Ly8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwot
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS8vCi0vLyBBdXRob3I6IHZhZGltYkBnb29nbGUuY29tIChWYWRpbSBCZXJtYW4pCi0vLwotLy8g
TG93LWxldmVsIHR5cGVzIGFuZCB1dGlsaXRpZXMgZm9yIHBvcnRpbmcgR29vZ2xlIE1vY2sgdG8g
dmFyaW91cwotLy8gcGxhdGZvcm1zLiAgQWxsIG1hY3JvcyBlbmRpbmcgd2l0aCBfIGFuZCBzeW1i
b2xzIGRlZmluZWQgaW4gYW4KLS8vIGludGVybmFsIG5hbWVzcGFjZSBhcmUgc3ViamVjdCB0byBj
aGFuZ2Ugd2l0aG91dCBub3RpY2UuICBDb2RlCi0vLyBvdXRzaWRlIEdvb2dsZSBNb2NrIE1VU1Qg
Tk9UIFVTRSBUSEVNIERJUkVDVExZLiAgTWFjcm9zIHRoYXQgZG9uJ3QKLS8vIGVuZCB3aXRoIF8g
YXJlIHBhcnQgb2YgR29vZ2xlIE1vY2sncyBwdWJsaWMgQVBJIGFuZCBjYW4gYmUgdXNlZCBieQot
Ly8gY29kZSBvdXRzaWRlIEdvb2dsZSBNb2NrLgotCi0jaWZuZGVmIEdNT0NLX0lOQ0xVREVfR01P
Q0tfSU5URVJOQUxfR01PQ0tfUE9SVF9IXwotI2RlZmluZSBHTU9DS19JTkNMVURFX0dNT0NLX0lO
VEVSTkFMX0dNT0NLX1BPUlRfSF8KLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0
ZGxpYi5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0vLyBNb3N0IG9mIHRoZSB1dGlsaXRpZXMg
bmVlZGVkIGZvciBwb3J0aW5nIEdvb2dsZSBNb2NrIGFyZSBhbHNvCi0vLyByZXF1aXJlZCBmb3Ig
R29vZ2xlIFRlc3QgYW5kIGFyZSBkZWZpbmVkIGluIGd0ZXN0LXBvcnQuaC4KLS8vCi0vLyBOb3Rl
IHRvIG1haW50YWluZXJzOiB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiwgcHJlZmVyIGFkZGlu
ZwotLy8gcG9ydGFiaWxpdHkgdXRpbGl0aWVzIHRvIEdvb2dsZSBUZXN0J3MgZ3Rlc3QtcG9ydC5o
IGluc3RlYWQgb2YKLS8vIGhlcmUsIGFzIEdvb2dsZSBNb2NrIGRlcGVuZHMgb24gR29vZ2xlIFRl
c3QuICBPbmx5IGFkZCBhIHV0aWxpdHkKLS8vIGhlcmUgaWYgaXQncyB0cnVseSBzcGVjaWZpYyB0
byBHb29nbGUgTW9jay4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRy
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotI2luY2x1ZGUgImdt
b2NrL2ludGVybmFsL2N1c3RvbS9nbW9jay1wb3J0LmgiCi0KLS8vIFRvIGF2b2lkIGNvbmRpdGlv
bmFsIGNvbXBpbGF0aW9uIGV2ZXJ5d2hlcmUsIHdlIG1ha2UgaXQKLS8vIGdtb2NrLXBvcnQuaCdz
IHJlc3BvbnNpYmlsaXR5IHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0
cjEvdHVwbGUuICBnbW9jay1wb3J0LmggZG9lcyB0aGlzIHZpYSBndGVzdC1wb3J0LmgsIHdoaWNo
IGlzCi0vLyBndWFyYW50ZWVkIHRvIHB1bGwgaW4gdGhlIHR1cGxlIGhlYWRlci4KLQotLy8gRm9y
IE1TIFZpc3VhbCBDKyssIGNoZWNrIHRoZSBjb21waWxlciB2ZXJzaW9uLiBBdCBsZWFzdCBWUyAy
MDAzIGlzCi0vLyByZXF1aXJlZCB0byBjb21waWxlIEdvb2dsZSBNb2NrLgotI2lmIGRlZmluZWQo
X01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTMxMAotIyBlcnJvciAiQXQgbGVhc3QgVmlzdWFsIEMr
KyAyMDAzICg3LjEpIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgR29vZ2xlIE1vY2suIgotI2VuZGlm
Ci0KLS8vIE1hY3JvIGZvciByZWZlcmVuY2luZyBmbGFncy4gIFRoaXMgaXMgcHVibGljIGFzIHdl
IHdhbnQgdGhlIHVzZXIgdG8KLS8vIHVzZSB0aGlzIHN5bnRheCB0byByZWZlcmVuY2UgR29vZ2xl
IE1vY2sgZmxhZ3MuCi0jZGVmaW5lIEdNT0NLX0ZMQUcobmFtZSkgRkxBR1NfZ21vY2tfIyNuYW1l
Ci0KLSNpZiAhZGVmaW5lZChHTU9DS19ERUNMQVJFX2Jvb2xfKQotCi0vLyBNYWNyb3MgZm9yIGRl
Y2xhcmluZyBmbGFncy4KLSNkZWZpbmUgR01PQ0tfREVDTEFSRV9ib29sXyhuYW1lKSBleHRlcm4g
R1RFU1RfQVBJXyBib29sIEdNT0NLX0ZMQUcobmFtZSkKLSNkZWZpbmUgR01PQ0tfREVDTEFSRV9p
bnQzMl8obmFtZSkgXAotICAgIGV4dGVybiBHVEVTVF9BUElfIDo6dGVzdGluZzo6aW50ZXJuYWw6
OkludDMyIEdNT0NLX0ZMQUcobmFtZSkKLSNkZWZpbmUgR01PQ0tfREVDTEFSRV9zdHJpbmdfKG5h
bWUpIFwKLSAgICBleHRlcm4gR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEdNT0NLX0ZMQUcobmFt
ZSkKLQotLy8gTWFjcm9zIGZvciBkZWZpbmluZyBmbGFncy4KLSNkZWZpbmUgR01PQ0tfREVGSU5F
X2Jvb2xfKG5hbWUsIGRlZmF1bHRfdmFsLCBkb2MpIFwKLSAgICBHVEVTVF9BUElfIGJvb2wgR01P
Q0tfRkxBRyhuYW1lKSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR01PQ0tfREVGSU5FX2ludDMy
XyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1RfQVBJXyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbnQzMiBHTU9DS19GTEFHKG5hbWUpID0gKGRlZmF1bHRfdmFsKQotI2RlZmluZSBH
TU9DS19ERUZJTkVfc3RyaW5nXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9jKSBcCi0gICAgR1RFU1Rf
QVBJXyA6OnN0ZDo6c3RyaW5nIEdNT0NLX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwpCi0KLSNl
bmRpZiAgLy8gIWRlZmluZWQoR01PQ0tfREVDTEFSRV9ib29sXykKLQotI2VuZGlmICAvLyBHTU9D
S19JTkNMVURFX0dNT0NLX0lOVEVSTkFMX0dNT0NLX1BPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL21ha2UvTWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tYWtlL01ha2VmaWxlCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzEzZTA1ZmE5NjEuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9tYWtlL01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAK
LSMgQSBzYW1wbGUgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIGJvdGggR29vZ2xlIE1vY2sgYW5kIEdv
b2dsZSBUZXN0IGFuZAotIyB1c2luZyB0aGVtIGluIHVzZXIgdGVzdHMuICBUaGlzIGZpbGUgaXMg
c2VsZi1jb250YWluZWQsIHNvIHlvdSBkb24ndAotIyBuZWVkIHRvIHVzZSB0aGUgTWFrZWZpbGUg
aW4gR29vZ2xlIFRlc3QncyBzb3VyY2UgdHJlZS4gIFBsZWFzZSB0d2VhawotIyBpdCB0byBzdWl0
IHlvdXIgZW52aXJvbm1lbnQgYW5kIHByb2plY3QuICBZb3UgbWF5IHdhbnQgdG8gbW92ZSBpdCB0
bwotIyB5b3VyIHByb2plY3QncyByb290IGRpcmVjdG9yeS4KLSMKLSMgU1lOT1BTSVM6Ci0jCi0j
ICAgbWFrZSBbYWxsXSAgLSBtYWtlcyBldmVyeXRoaW5nLgotIyAgIG1ha2UgVEFSR0VUIC0gbWFr
ZXMgdGhlIGdpdmVuIHRhcmdldC4KLSMgICBtYWtlIGNsZWFuICAtIHJlbW92ZXMgYWxsIGZpbGVz
IGdlbmVyYXRlZCBieSBtYWtlLgotCi0jIFBsZWFzZSB0d2VhayB0aGUgZm9sbG93aW5nIHZhcmlh
YmxlIGRlZmluaXRpb25zIGFzIG5lZWRlZCBieSB5b3VyCi0jIHByb2plY3QsIGV4Y2VwdCBHTU9D
S19IRUFERVJTIGFuZCBHVEVTVF9IRUFERVJTLCB3aGljaCB5b3UgY2FuIHVzZQotIyBpbiB5b3Vy
IG93biB0YXJnZXRzIGJ1dCBzaG91bGRuJ3QgbW9kaWZ5LgotCi0jIFBvaW50cyB0byB0aGUgcm9v
dCBvZiBHb29nbGUgVGVzdCwgcmVsYXRpdmUgdG8gd2hlcmUgdGhpcyBmaWxlIGlzLgotIyBSZW1l
bWJlciB0byB0d2VhayB0aGlzIGlmIHlvdSBtb3ZlIHRoaXMgZmlsZSwgb3IgaWYgeW91IHdhbnQg
dG8gdXNlCi0jIGEgY29weSBvZiBHb29nbGUgVGVzdCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbi4K
LUdURVNUX0RJUiA9IC4uLy4uL2dvb2dsZXRlc3QKLQotIyBQb2ludHMgdG8gdGhlIHJvb3Qgb2Yg
R29vZ2xlIE1vY2ssIHJlbGF0aXZlIHRvIHdoZXJlIHRoaXMgZmlsZSBpcy4KLSMgUmVtZW1iZXIg
dG8gdHdlYWsgdGhpcyBpZiB5b3UgbW92ZSB0aGlzIGZpbGUuCi1HTU9DS19ESVIgPSAuLgotCi0j
IFdoZXJlIHRvIGZpbmQgdXNlciBjb2RlLgotVVNFUl9ESVIgPSAuLi90ZXN0Ci0KLSMgRmxhZ3Mg
cGFzc2VkIHRvIHRoZSBwcmVwcm9jZXNzb3IuCi0jIFNldCBHb29nbGUgVGVzdCBhbmQgR29vZ2xl
IE1vY2sncyBoZWFkZXIgZGlyZWN0b3JpZXMgYXMgc3lzdGVtCi0jIGRpcmVjdG9yaWVzLCBzdWNo
IHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3MgaW4KLSMgdGhlc2Ug
aGVhZGVycy4KLUNQUEZMQUdTICs9IC1pc3lzdGVtICQoR1RFU1RfRElSKS9pbmNsdWRlIC1pc3lz
dGVtICQoR01PQ0tfRElSKS9pbmNsdWRlCi0KLSMgRmxhZ3MgcGFzc2VkIHRvIHRoZSBDKysgY29t
cGlsZXIuCi1DWFhGTEFHUyArPSAtZyAtV2FsbCAtV2V4dHJhIC1wdGhyZWFkCi0KLSMgQWxsIHRl
c3RzIHByb2R1Y2VkIGJ5IHRoaXMgTWFrZWZpbGUuICBSZW1lbWJlciB0byBhZGQgbmV3IHRlc3Rz
IHlvdQotIyBjcmVhdGVkIHRvIHRoZSBsaXN0LgotVEVTVFMgPSBnbW9ja190ZXN0Ci0KLSMgQWxs
IEdvb2dsZSBUZXN0IGhlYWRlcnMuICBVc3VhbGx5IHlvdSBzaG91bGRuJ3QgY2hhbmdlIHRoaXMK
LSMgZGVmaW5pdGlvbi4KLUdURVNUX0hFQURFUlMgPSAkKEdURVNUX0RJUikvaW5jbHVkZS9ndGVz
dC8qLmggXAotICAgICAgICAgICAgICAgICQoR1RFU1RfRElSKS9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsLyouaAotCi0jIEFsbCBHb29nbGUgTW9jayBoZWFkZXJzLiBOb3RlIHRoYXQgYWxsIEdvb2ds
ZSBUZXN0IGhlYWRlcnMgYXJlCi0jIGluY2x1ZGVkIGhlcmUgdG9vLCBhcyB0aGV5IGFyZSAjaW5j
bHVkZWQgYnkgR29vZ2xlIE1vY2sgaGVhZGVycy4KLSMgVXN1YWxseSB5b3Ugc2hvdWxkbid0IGNo
YW5nZSB0aGlzIGRlZmluaXRpb24uCQotR01PQ0tfSEVBREVSUyA9ICQoR01PQ0tfRElSKS9pbmNs
dWRlL2dtb2NrLyouaCBcCi0gICAgICAgICAgICAgICAgJChHTU9DS19ESVIpL2luY2x1ZGUvZ21v
Y2svaW50ZXJuYWwvKi5oIFwKLSAgICAgICAgICAgICAgICAkKEdURVNUX0hFQURFUlMpCi0KLSMg
SG91c2Uta2VlcGluZyBidWlsZCB0YXJnZXRzLgotCi1hbGwgOiAkKFRFU1RTKQotCi1jbGVhbiA6
Ci0Jcm0gLWYgJChURVNUUykgZ21vY2suYSBnbW9ja19tYWluLmEgKi5vCi0KLSMgQnVpbGRzIGdt
b2NrLmEgYW5kIGdtb2NrX21haW4uYS4gIFRoZXNlIGxpYnJhcmllcyBjb250YWluIGJvdGgKLSMg
R29vZ2xlIE1vY2sgYW5kIEdvb2dsZSBUZXN0LiAgQSB0ZXN0IHNob3VsZCBsaW5rIHdpdGggZWl0
aGVyIGdtb2NrLmEKLSMgb3IgZ21vY2tfbWFpbi5hLCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBk
ZWZpbmVzIGl0cyBvd24gbWFpbigpCi0jIGZ1bmN0aW9uLiAgSXQncyBmaW5lIGlmIHlvdXIgdGVz
dCBvbmx5IHVzZXMgZmVhdHVyZXMgZnJvbSBHb29nbGUKLSMgVGVzdCAoYW5kIG5vdCBHb29nbGUg
TW9jaykuCi0KLSMgVXN1YWxseSB5b3Ugc2hvdWxkbid0IHR3ZWFrIHN1Y2ggaW50ZXJuYWwgdmFy
aWFibGVzLCBpbmRpY2F0ZWQgYnkgYQotIyB0cmFpbGluZyBfLgotR1RFU1RfU1JDU18gPSAkKEdU
RVNUX0RJUikvc3JjLyouY2MgJChHVEVTVF9ESVIpL3NyYy8qLmggJChHVEVTVF9IRUFERVJTKQot
R01PQ0tfU1JDU18gPSAkKEdNT0NLX0RJUikvc3JjLyouY2MgJChHTU9DS19IRUFERVJTKQotCi0j
IEZvciBzaW1wbGljaXR5IGFuZCB0byBhdm9pZCBkZXBlbmRpbmcgb24gaW1wbGVtZW50YXRpb24g
ZGV0YWlscyBvZgotIyBHb29nbGUgTW9jayBhbmQgR29vZ2xlIFRlc3QsIHRoZSBkZXBlbmRlbmNp
ZXMgc3BlY2lmaWVkIGJlbG93IGFyZQotIyBjb25zZXJ2YXRpdmUgYW5kIG5vdCBvcHRpbWl6ZWQu
ICBUaGlzIGlzIGZpbmUgYXMgR29vZ2xlIE1vY2sgYW5kCi0jIEdvb2dsZSBUZXN0IGNvbXBpbGUg
ZmFzdCBhbmQgZm9yIG9yZGluYXJ5IHVzZXJzIHRoZWlyIHNvdXJjZSByYXJlbHkKLSMgY2hhbmdl
cy4KLWd0ZXN0LWFsbC5vIDogJChHVEVTVF9TUkNTXykKLQkkKENYWCkgJChDUFBGTEFHUykgLUkk
KEdURVNUX0RJUikgLUkkKEdNT0NLX0RJUikgJChDWFhGTEFHUykgXAotICAgICAgICAgICAgLWMg
JChHVEVTVF9ESVIpL3NyYy9ndGVzdC1hbGwuY2MKLQotZ21vY2stYWxsLm8gOiAkKEdNT0NLX1NS
Q1NfKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAtSSQoR1RFU1RfRElSKSAtSSQoR01PQ0tfRElSKSAk
KENYWEZMQUdTKSBcCi0gICAgICAgICAgICAtYyAkKEdNT0NLX0RJUikvc3JjL2dtb2NrLWFsbC5j
YwotCi1nbW9ja19tYWluLm8gOiAkKEdNT0NLX1NSQ1NfKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAt
SSQoR1RFU1RfRElSKSAtSSQoR01PQ0tfRElSKSAkKENYWEZMQUdTKSBcCi0gICAgICAgICAgICAt
YyAkKEdNT0NLX0RJUikvc3JjL2dtb2NrX21haW4uY2MKLQotZ21vY2suYSA6IGdtb2NrLWFsbC5v
IGd0ZXN0LWFsbC5vCi0JJChBUikgJChBUkZMQUdTKSAkQCAkXgotCi1nbW9ja19tYWluLmEgOiBn
bW9jay1hbGwubyBndGVzdC1hbGwubyBnbW9ja19tYWluLm8KLQkkKEFSKSAkKEFSRkxBR1MpICRA
ICReCi0KLSMgQnVpbGRzIGEgc2FtcGxlIHRlc3QuCi0KLWdtb2NrX3Rlc3QubyA6ICQoVVNFUl9E
SVIpL2dtb2NrX3Rlc3QuY2MgJChHTU9DS19IRUFERVJTKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAk
KENYWEZMQUdTKSAtYyAkKFVTRVJfRElSKS9nbW9ja190ZXN0LmNjCi0KLWdtb2NrX3Rlc3QgOiBn
bW9ja190ZXN0Lm8gZ21vY2tfbWFpbi5hCi0JJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1Mp
IC1scHRocmVhZCAkXiAtbyAkQApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dt
b2NrLnNsbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9jay5zbG4KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBjZjU3YTM1YWE4Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL21zdmMvMjAwNS9nbW9jay5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi3v
u78KLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9u
IDkuMDAKLSMgVmlzdWFsIFN0dWRpbyAyMDA1Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQw
LThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImdtb2NrIiwgImdtb2NrLnZjcHJvaiIsICJ7MzQ2ODFG
MEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fSIKLUVuZFByb2plY3QKLVByb2plY3QoIns4
QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ21vY2tfdGVzdCIsICJn
bW9ja190ZXN0LnZjcHJvaiIsICJ7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0Qy
fSIKLUVuZFByb2plY3QKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ21vY2tfbWFpbiIsICJnbW9ja19tYWluLnZjcHJvaiIsICJ7RTRFRjYxNEIt
MzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fSIKLUVuZFByb2plY3QKLUdsb2JhbAotCUdsb2Jh
bFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCi0J
CURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2lu
MzIKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlv
blBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24KLQkJezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVD
NjYyREZFM0JENX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJezM0Njgx
RjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERl
YnVnfFdpbjMyCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LlJlbGVh
c2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7MzQ2ODFGMEQtQ0U0NS00MTVE
LUI1RjItNUM2NjJERkUzQkQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
Ci0JCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LkRlYnVnfFdpbjMyLkFj
dGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4
NzhDRDJ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7RjEwRDIyRjgtQUM3
Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVh
c2V8V2luMzIKLQkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVsZWFz
ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7RTRFRjYxNEItMzBERi00OTU0LThD
NTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7
RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4w
ID0gRGVidWd8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0u
UmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXtFNEVGNjE0Qi0zMERG
LTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8
V2luMzIKLQlFbmRHbG9iYWxTZWN0aW9uCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRp
ZXMpID0gcHJlU29sdXRpb24KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCi0JRW5kR2xvYmFs
U2VjdGlvbgotRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21v
Y2sudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJvagpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjdkZTU4Zjg3ZTY2Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE5MSAr
MCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxW
aXN1YWxTdHVkaW9Qcm9qZWN0Ci0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0i
OC4wMCIKLQlOYW1lPSJnbW9jayIKLQlQcm9qZWN0R1VJRD0iezM0NjgxRjBELUNFNDUtNDE1RC1C
NUYyLTVDNjYyREZFM0JENX0iCi0JUm9vdE5hbWVzcGFjZT0iZ21vY2siCi0JS2V5d29yZD0iV2lu
MzJQcm9qIgotCT4KLQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJCU5hbWU9IldpbjMyIgot
CQkvPgotCTwvUGxhdGZvcm1zPgotCTxUb29sRmlsZXM+Ci0JPC9Ub29sRmlsZXM+Ci0JPENvbmZp
Z3VyYXRpb25zPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlP
dXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJ
bnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSIKLQkJCUNvbmZp
Z3VyYXRpb25UeXBlPSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cZ21vY2tfY29u
ZmlnLnZzcHJvcHMiCi0JCQlDaGFyYWN0ZXJTZXQ9IjEiCi0JCQk+Ci0JCQk8VG9vbAotCQkJCU5h
bWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1
c3RvbUJ1aWxkVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVy
YXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdl
bmVyYXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJ
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRp
b249IjAiCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5caW5jbHVkZTsu
LlwuLiIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19MSUIiCi0J
CQkJTWluaW1hbFJlYnVpbGQ9InRydWUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJ
CVJ1bnRpbWVMaWJyYXJ5PSIxIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdh
cm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUi
Ci0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5h
bWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUHJlTGlua0V2ZW50VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFy
aWFuVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQUxpbmtUb29sIgotCQkJLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDQnNjTWFrZVRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0Z4Q29w
VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgot
CQkJLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIpXCQoUHJvamVj
dE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNo
ZWV0cz0iLlxnbW9ja19jb25maWcudnNwcm9wcyIKLQkJCUNoYXJhY3RlclNldD0iMSIKLQkJCVdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKLQkJCT4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQ
cmVCdWlsZEV2ZW50VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVp
bGRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9v
bCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9y
VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiCi0JCQkvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCUFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM9Ii4uXC4uXGluY2x1ZGU7Li5cLi4iCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO05ERUJVRztfTElCIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgotCQkJCVVz
ZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2
NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1h
dD0iMyIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGls
ZXJUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9v
bCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKLQkJCS8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDQUxpbmtUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYRENN
YWtlVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCi0JCQkv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgotCQkJLz4KLQkJPC9Db25maWd1cmF0aW9uPgot
CTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JPC9SZWZlcmVuY2VzPgotCTxGaWxl
cz4KLQkJPEZpbHRlcgotCQkJTmFtZT0iU291cmNlIEZpbGVzIgotCQkJRmlsdGVyPSJjcHA7Yztj
YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9
Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgotCQkJPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHNyY1xnbW9jay1hbGwuY2MiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9IiQoR1Rlc3REaXIpXHNyY1xndGVzdC1h
bGwuY2MiCi0JCQkJPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
LQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoR1Rlc3REaXIpIgotCQkJCQkv
PgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKEdU
ZXN0RGlyKSIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPC9GaWxlPgot
CQk8L0ZpbHRlcj4KLQkJPEZpbHRlcgotCQkJTmFtZT0iUHVibGljIEhlYWRlciBGaWxlcyIKLQkJ
CUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0i
ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iCi0JCQk+Ci0JCTwvRmlsdGVy
PgotCQk8RmlsdGVyCi0JCQlOYW1lPSJQcml2YXRlIEhlYWRlciBGaWxlcyIKLQkJCT4KLQkJPC9G
aWx0ZXI+Ci0JPC9GaWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRp
b1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfY29uZmln
LnZzcHJvcHMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfY29uZmlnLnZzcHJvcHMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNWZmN2YzOGFiZS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19jb25maWcudnNwcm9wcworKysgL2Rldi9u
dWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRv
d3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKLQlQcm9qZWN0VHlwZT0iVmlz
dWFsIEMrKyIKLQlWZXJzaW9uPSI4LjAwIgotCU5hbWU9Imdtb2NrX2NvbmZpZyIKLQk+Ci0JPFRv
b2wKLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7JChHVGVzdERpcikvaW5jbHVkZSZxdW90OyIKLQkvPgotCTxVc2VyTWFjcm8K
LQkJTmFtZT0iR1Rlc3REaXIiCi0JCVZhbHVlPSIuLi8uLi8uLi9nb29nbGV0ZXN0IgotCS8+Ci08
L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3Zj
LzIwMDUvZ21vY2tfbWFpbi52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMDUvZ21vY2tfbWFp
bi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZmY4YTYxNTc3ZS4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9ja19tYWluLnZjcHJvagor
KysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0Ci0JUHJvamVjdFR5cGU9
IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0iOC4wMCIKLQlOYW1lPSJnbW9ja19tYWluIgotCVByb2pl
Y3RHVUlEPSJ7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fSIKLQlSb290TmFt
ZXNwYWNlPSJnbW9ja19tYWluIgotCUtleXdvcmQ9IldpbjMyUHJvaiIKLQk+Ci0JPFBsYXRmb3Jt
cz4KLQkJPFBsYXRmb3JtCi0JCQlOYW1lPSJXaW4zMiIKLQkJLz4KLQk8L1BsYXRmb3Jtcz4KLQk8
VG9vbEZpbGVzPgotCTwvVG9vbEZpbGVzPgotCTxDb25maWd1cmF0aW9ucz4KLQkJPENvbmZpZ3Vy
YXRpb24KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0
aW9uRGlyKSQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIk
KE91dERpcilcJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUlu
aGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3Byb3BzIgotCQkJQ2hhcmFj
dGVyU2V0PSIxIgotCQkJPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29s
IgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgotCQkJLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgotCQkJLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCUFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM9Ii4uLy4uL2luY2x1ZGUiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO19ERUJVRztfTElCIgotCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgotCQkJ
CUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGlicmFyeT0iMSIKLQkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRC
aXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9
IjMiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVy
VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wi
Ci0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCi0JCQkvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ0FMaW5rVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWERDTWFr
ZVRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgotCQkJLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKLQkJCS8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQkJ
PENvbmZpZ3VyYXRpb24KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rv
cnk9IiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVE
aXJlY3Rvcnk9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBl
PSI0IgotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMi
Ci0JCQlDaGFyYWN0ZXJTZXQ9IjEiCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCi0J
CQk+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCi0JCQkvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ01JRExUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi9pbmNsdWRlIgot
CQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0xJQiIKLQkJCQlSdW50
aW1lTGlicmFyeT0iMCIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5n
TGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIgotCQkJ
CURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1By
ZUxpbmtFdmVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRv
b2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKLQkJCS8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ0JzY01ha2VUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wi
Ci0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKLQkJCS8+
Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2VzPgot
CQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7MzQ2
ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fSIKLQkJCVJlbGF0aXZlUGF0aFRvUHJv
amVjdD0iLlxnbW9jay52Y3Byb2oiCi0JCS8+Ci0JPC9SZWZlcmVuY2VzPgotCTxGaWxlcz4KLQkJ
PEZpbHRlcgotCQkJTmFtZT0iU291cmNlIEZpbGVzIgotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7
ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3
MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgotCQkJPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHNyY1xnbW9ja19tYWluLmNjIgotCQkJCT4KLQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQkJCT4KLQkJCQkJPFRvb2wK
LQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPSIuLi8uLi9pbmNsdWRlIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0J
CQkJCT4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi9pbmNsdWRlIgotCQkJCQkvPgotCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVy
Ci0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5j
O3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVG
QkU1MkVCRkJ9IgotCQkJPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxHbG9iYWxzPgotCTwv
R2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L21zdmMvMjAwNS9nbW9ja190ZXN0LnZjcHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAwNS9nbW9j
a190ZXN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBkNjc3Mzk0NGNh
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDA1L2dtb2NrX3Rlc3QudmNw
cm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb2plY3QKLQlQcm9qZWN0
VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI4LjAwIgotCU5hbWU9Imdtb2NrX3Rlc3QiCi0J
UHJvamVjdEdVSUQ9IntGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9IgotCVJv
b3ROYW1lc3BhY2U9Imdtb2NrX3Rlc3QiCi0JS2V5d29yZD0iV2luMzJQcm9qIgotCT4KLQk8UGxh
dGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJCU5hbWU9IldpbjMyIgotCQkvPgotCTwvUGxhdGZvcm1z
PgotCTxUb29sRmlsZXM+Ci0JPC9Ub29sRmlsZXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29u
ZmlndXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQo
U29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rv
cnk9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgot
CQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cZ21vY2tfY29uZmlnLnZzcHJvcHMiCi0JCQlD
aGFyYWN0ZXJTZXQ9IjEiCi0JCQk+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVu
dFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJ
CS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCi0JCQkvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCi0JCQkv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2JpZ29iaiIK
LQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0i
Li5cLi5caW5jbHVkZTsuLlwuLiIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7
X0RFQlVHO19DT05TT0xFIgotCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIgotCQkJCUJhc2ljUnVu
dGltZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGlicmFyeT0iMSIKLQkJCQlVc2VQcmVjb21waWxl
ZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJp
bGl0eVByb2JsZW1zPSJ0cnVlIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCi0JCQkv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKLQkJ
CS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCi0JCQkvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCi0JCQkvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIgotCQkJCUdl
bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKLQkJCQlTdWJTeXN0ZW09IjEiCi0JCQkJVGFy
Z2V0TWFjaGluZT0iMSIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQUxpbmtUb29sIgot
CQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCi0JCQkvPgotCQkJPFRv
b2wKLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNCc2NNYWtlVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDRnhDb3BUb29sIgot
CQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCi0JCQkvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCi0JCQkvPgotCQk8L0NvbmZpZ3VyYXRpb24+
Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJT3V0cHV0RGly
ZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRp
YXRlRGlyZWN0b3J5PSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9u
VHlwZT0iMSIKLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXGdtb2NrX2NvbmZpZy52c3By
b3BzIgotCQkJQ2hhcmFjdGVyU2V0PSIxIgotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIx
IgotCQkJPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgotCQkJLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCi0JCQkvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNNSURMVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9iaWdvYmoiCi0JCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5caW5jbHVkZTsuLlwuLiIKLQkJCQlQcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgotCQkJCVJ1bnRpbWVMaWJyYXJ5
PSIwIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIK
LQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9InRydWUiCi0JCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iMyIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFJl
c291cmNlQ29tcGlsZXJUb29sIgotCQkJLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJj
ZUNvbXBpbGVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50
VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlMaW5r
SW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIgotCQkJ
CVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxlQ09N
REFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNBTGlua1Rvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01hbmlm
ZXN0VG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCi0JCQkv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgotCQkJLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNGeENvcFRvb2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0FwcFZl
cmlmaWVyVG9vbCIKLQkJCS8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRv
b2wiCi0JCQkvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKLQkJ
CS8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2Vz
PgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7
RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fSIKLQkJCVJlbGF0aXZlUGF0aFRv
UHJvamVjdD0iLlxnbW9ja19tYWluLnZjcHJvaiIKLQkJLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZp
bGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtj
O2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmll
cj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iCi0JCQk+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cdGVzdFxnbW9ja19hbGxfdGVzdC5jYyIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmls
ZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9IgotCQkJPgotCQk8
L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxHbG9iYWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1
ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9jay5zbG4g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2suc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzYzM1NmUxNDUyOTIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3Zj
LzIwMTAvZ21vY2suc2xuCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAot77u/Ci1NaWNy
b3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMAot
IyBWaXN1YWwgQysrIEV4cHJlc3MgMjAxMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04
RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9jayIsICJnbW9jay52Y3hwcm9qIiwgInszNDY4MUYw
RC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9IgotRW5kUHJvamVjdAotUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9ja190ZXN0IiwgImdt
b2NrX3Rlc3QudmN4cHJvaiIsICJ7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0Qy
fSIKLUVuZFByb2plY3QKLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkx
QkM5NDJ9IikgPSAiZ21vY2tfbWFpbiIsICJnbW9ja19tYWluLnZjeHByb2oiLCAie0U0RUY2MTRC
LTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0iCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9i
YWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgot
CQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdp
bjMyCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRp
b25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01
QzY2MkRGRTNCRDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXszNDY4
MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBE
ZWJ1Z3xXaW4zMgotCQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fS5SZWxl
YXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezM0NjgxRjBELUNFNDUtNDE1
RC1CNUYyLTVDNjYyREZFM0JENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4z
MgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1Z3xXaW4zMi5B
Y3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdE
ODc4Q0QyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKLQkJe0YxMEQyMkY4LUFD
N0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxl
YXNlfFdpbjMyCi0JCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9LlJlbGVh
c2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04
QzUzLTU4MEEwQkY2QjU4OX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKLQkJ
e0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uRGVidWd8V2luMzIuQnVpbGQu
MCA9IERlYnVnfFdpbjMyCi0JCXtFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9
LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7RTRFRjYxNEItMzBE
Ri00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNl
fFdpbjMyCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0
aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQotCUVuZEdsb2Jh
bFNlY3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dt
b2NrLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2sudmN4cHJvagpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhODVlZjZjN2Q2Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSw4
MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KLTxQcm9q
ZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRw
Oi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPg0KLSAgPEl0
ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4NCi0gICAgPFByb2plY3RDb25m
aWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4NCi0gICAgICA8Q29uZmlndXJhdGlvbj5E
ZWJ1ZzwvQ29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0K
LSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwv
Q29uZmlndXJhdGlvbj4NCi0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPg0KLSAgICA8
L1Byb2plY3RDb25maWd1cmF0aW9uPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8UHJvcGVydHlHcm91
cCBMYWJlbD0iR2xvYmFscyI+DQotICAgIDxQcm9qZWN0R3VpZD57MzQ2ODFGMEQtQ0U0NS00MTVE
LUI1RjItNUM2NjJERkUzQkQ1fTwvUHJvamVjdEd1aWQ+DQotICAgIDxSb290TmFtZXNwYWNlPmdt
b2NrPC9Sb290TmFtZXNwYWNlPg0KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+DQot
ICA8L1Byb3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClc
TWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFi
ZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFy
eTwvQ29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFj
dGVyU2V0Pg0KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3Jh
bU9wdGltaXphdGlvbj4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBM
YWJlbD0iQ29uZmlndXJhdGlvbiI+DQotICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJy
YXJ5PC9Db25maWd1cmF0aW9uVHlwZT4NCi0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFy
YWN0ZXJTZXQ+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNU
YXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJl
bD0iRXh0ZW5zaW9uU2V0dGluZ3MiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBvcnRHcm91
cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNl
clJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9u
PSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5w
cm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQotICAgIDxJbXBvcnQgUHJv
amVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxJbXBv
cnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCi0gICAgPEltcG9ydCBQcm9qZWN0PSIk
KFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRp
dGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVz
ZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KLSAgICA8SW1wb3J0
IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8
UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0K
LSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNp
b24+DQotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERp
cj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+DQotICAg
IDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGlyPg0KLSAg
ICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPg0KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0K
LSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4NCi0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAg
ICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCi0gICAgICA8TWluaW1h
bFJlYnVpbGQ+dHJ1ZTwvTWluaW1hbFJlYnVpbGQ+DQotICAgICAgPEJhc2ljUnVudGltZUNoZWNr
cz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+DQotICAgICAgPFJ1bnRpbWVM
aWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+DQotICAgICAgPFByZWNv
bXBpbGVkSGVhZGVyPg0KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPFdhcm5p
bmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4NCi0gICAgICA8RGVidWdJbmZvcm1hdGlvbkZv
cm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+DQotICAgIDwvQ2xD
b21waWxlPg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdp
bjMyJyI+DQotICAgIDxDbENvbXBpbGU+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMp
PC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZp
bml0aW9ucz5XSU4zMjtOREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFk
ZWQ8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8
L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5n
TGV2ZWw+DQotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9E
ZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gIDwvSXRlbURlZmlu
aXRpb25Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
Li5cc3JjXGdtb2NrLWFsbC5jYyIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKEdUZXN0
RGlyKVxzcmNcZ3Rlc3QtYWxsLmNjIj4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+JChHVGVzdERpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
V2luMzInIj4kKEdUZXN0RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gIDwvSXRlbUdy
b3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
dGFyZ2V0cyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQot
ICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9t
c3ZjLzIwMTAvZ21vY2tfY29uZmlnLnByb3BzIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2Nr
X2NvbmZpZy5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQxZjMxY2ZlNjlh
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX2NvbmZpZy5w
cm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+DQotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+
DQotICAgIDxHVGVzdERpcj4uLi8uLi8uLi9nb29nbGV0ZXN0PC9HVGVzdERpcj4NCi0gIDwvUHJv
cGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lv
bj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+DQotICA8L1Byb3BlcnR5R3JvdXA+
DQotICA8SXRlbURlZmluaXRpb25Hcm91cD4NCi0gICAgPENsQ29tcGlsZT4NCi0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKEdUZXN0RGlyKS9pbmNsdWRlOyUoQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQotICAg
IDwvQ2xDb21waWxlPg0KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KLSAgPEl0ZW1Hcm91cD4N
Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iR1Rlc3REaXIiPg0KLSAgICAgIDxWYWx1ZT4kKEdU
ZXN0RGlyKTwvVmFsdWU+DQotICAgIDwvQnVpbGRNYWNybz4NCi0gIDwvSXRlbUdyb3VwPg0KLTwv
UHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTAvZ21vY2tfbWFpbi52
Y3hwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX21haW4udmN4cHJvagpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdmZWNkNWY4YjcxLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX21haW4udmN4cHJvagorKysgL2Rldi9udWxsCkBA
IC0xLDg4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQot
PFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9
Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+DQot
ICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPg0KLSAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPg0KLSAgICAgIDxDb25maWd1cmF0
aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZv
cm0+DQotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4NCi0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxl
YXNlPC9Db25maWd1cmF0aW9uPg0KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+DQot
ICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxQcm9wZXJ0
eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4NCi0gICAgPFByb2plY3RHdWlkPntFNEVGNjE0Qi0zMERG
LTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9PC9Qcm9qZWN0R3VpZD4NCi0gICAgPFJvb3ROYW1lc3Bh
Y2U+Z21vY2tfbWFpbjwvUm9vdE5hbWVzcGFjZT4NCi0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9L
ZXl3b3JkPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFy
Z2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4NCi0gIDxQcm9wZXJ0eUdy
b3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxX
aW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4NCi0gICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0
YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNv
ZGU8L0NoYXJhY3RlclNldD4NCi0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9X
aG9sZVByb2dyYW1PcHRpbWl6YXRpb24+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVy
dHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+
U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+DQotICAgIDxDaGFyYWN0ZXJTZXQ+VW5p
Y29kZTwvQ2hhcmFjdGVyU2V0Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPEltcG9ydCBQcm9q
ZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+DQotICA8SW1wb3J0
R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4NCi0gIDwvSW1wb3J0R3JvdXA+DQotICA8
SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4NCi0gICAgPEltcG9ydCBQcm9q
ZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMi
IENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZv
cm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPg0KLSAgICA8
SW1wb3J0IFByb2plY3Q9Imdtb2NrX2NvbmZpZy5wcm9wcyIgLz4NCi0gIDwvSW1wb3J0R3JvdXA+
DQotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQg
UHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBs
YXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0g
ICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+DQotICA8L0ltcG9ydEdy
b3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+DQotICA8UHJvcGVy
dHlHcm91cD4NCi0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVj
dEZpbGVWZXJzaW9uPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFNvbHV0aW9uRGlyKSQoQ29uZmlndXJhdGlv
bilcPC9PdXREaXI+DQotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50
RGlyPg0KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091
dERpcj4NCi0gICAgPEludERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4N
Ci0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4NCi0gICAgPENs
Q29tcGlsZT4NCi0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQot
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0K
LSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0xJQjslKFByZXBy
b2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQotICAgICAgPE1p
bmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPg0KLSAgICAgIDxCYXNpY1J1bnRpbWVD
aGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPg0KLSAgICAgIDxSdW50
aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5Pg0KLSAgICAgIDxQ
cmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPg0KLSAgICAgIDxX
YXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPERlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KLSAgICA8
L0NsQ29tcGlsZT4NCi0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCi0gIDxJdGVtRGVmaW5pdGlv
bkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURp
cmVjdG9yaWVzPi4uLy4uL2luY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwv
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM+V0lOMzI7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXBy
b2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVk
PC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPC9Q
cmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xl
dmVsPg0KLSAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD4NCi0gICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1EZWZpbml0
aW9uR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRl
PSJnbW9jay52Y3hwcm9qIj4NCi0gICAgICA8UHJvamVjdD57MzQ2ODFmMGQtY2U0NS00MTVkLWI1
ZjItNWM2NjJkZmUzYmQ1fTwvUHJvamVjdD4NCi0gICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNz
ZW1ibGllcz50cnVlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPg0KLSAgICAgIDxSZWZl
cmVuY2VPdXRwdXRBc3NlbWJseT50cnVlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4NCi0gICAg
PC9Qcm9qZWN0UmVmZXJlbmNlPg0KLSAgPC9JdGVtR3JvdXA+DQotICA8SXRlbUdyb3VwPg0KLSAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xnbW9ja19tYWluLmNjIj4NCi0gICAgICA8
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAgICAg
IDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uLy4uL2luY2x1ZGU7JShBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4NCi0g
ICAgPC9DbENvbXBpbGU+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+DQotICA8SW1wb3J0R3JvdXAg
TGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPg0KLSAgPC9JbXBvcnRHcm91cD4NCi08L1Byb2plY3Q+
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDEwL2dtb2NrX3Rlc3QudmN4cHJvaiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGVtb2NrL21zdmMvMjAxMC9nbW9ja190ZXN0LnZjeHByb2oKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI2NTQzOWVjMmI3MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVt
b2NrL21zdmMvMjAxMC9nbW9ja190ZXN0LnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVj
dCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDov
L3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxJdGVt
R3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+DQotICAgIDxQcm9qZWN0Q29uZmln
dXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+DQotICAgICAgPENvbmZpZ3VyYXRpb24+RGVi
dWc8L0NvbmZpZ3VyYXRpb24+DQotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0g
ICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4NCi0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IlJlbGVhc2V8V2luMzIiPg0KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0Nv
bmZpZ3VyYXRpb24+DQotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4NCi0gICAgPC9Q
cm9qZWN0Q29uZmlndXJhdGlvbj4NCi0gIDwvSXRlbUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAg
TGFiZWw9Ikdsb2JhbHMiPg0KLSAgICA8UHJvamVjdEd1aWQ+e0YxMEQyMkY4LUFDN0ItNDIxMy04
NzIwLTYwOEU3RDg3OENEMn08L1Byb2plY3RHdWlkPg0KLSAgICA8Um9vdE5hbWVzcGFjZT5nbW9j
a190ZXN0PC9Sb290TmFtZXNwYWNlPg0KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+
DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRp
b248L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJh
Y3RlclNldD4NCi0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIg
TGFiZWw9IkNvbmZpZ3VyYXRpb24iPg0KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRp
b248L0NvbmZpZ3VyYXRpb25UeXBlPg0KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJh
Y3RlclNldD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPg0KLSAgPEltcG9ydEdyb3VwIExhYmVs
PSJFeHRlbnNpb25TZXR0aW5ncyI+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+DQotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2Vy
Um9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249
ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnBy
b3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4NCi0gICAgPEltcG9ydCBQcm9q
ZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+DQotICA8L0ltcG9ydEdyb3VwPg0KLSAgPEltcG9y
dEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPg0KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQo
VXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0
aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNl
ci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+DQotICAgIDxJbXBvcnQg
UHJvamVjdD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPg0KLSAgPC9JbXBvcnRHcm91cD4NCi0gIDxQ
cm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPg0KLSAgPFByb3BlcnR5R3JvdXA+DQot
ICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lv
bj4NCi0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwvT3V0RGly
Pg0KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4NCi0gICAg
PExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvTGlua0luY3JlbWVudGFsPg0KLSAgICA8T3V0RGlyIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4NCi0gICAgPEludERpciBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
Ij4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4NCi0gICAgPExpbmtJbmNyZW1lbnRh
bCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2lu
MzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPEl0
ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3xXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0KLSAgICAgIDxBZGRpdGlvbmFs
T3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4N
Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+DQotICAgICAgPEFk
ZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cLi5caW5jbHVkZTsuLlwuLjslKEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KLSAg
ICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KLSAgICAgIDxN
aW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWlsZD4NCi0gICAgICA8QmFzaWNSdW50aW1l
Q2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4NCi0gICAgICA8UnVu
dGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4NCi0gICAgICA8
UHJlY29tcGlsZWRIZWFkZXI+DQotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8
V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPg0KLSAgICAgIDxEZWJ1Z0luZm9ybWF0
aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4NCi0gICAg
PC9DbENvbXBpbGU+DQotICAgIDxMaW5rPg0KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRp
b24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPg0KLSAgICAgIDxTdWJTeXN0ZW0+Q29u
c29sZTwvU3ViU3lzdGVtPg0KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1Rhcmdl
dE1hY2hpbmU+DQotICAgIDwvTGluaz4NCi0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCi0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPg0KLSAgICA8Q2xDb21waWxlPg0KLSAgICAgIDxBZGRpdGlv
bmFsT3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9u
cz4NCi0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4u
XC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM+DQotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztf
Q09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM+DQotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5
Pg0KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4NCi0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVy
Pg0KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+DQotICAgICAgPERl
YnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0Pg0KLSAgICA8L0NsQ29tcGlsZT4NCi0gICAgPExpbms+DQotICAgICAgPEdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+DQotICAgICAgPFN1
YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+DQotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50
cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+DQotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1
ZTwvRW5hYmxlQ09NREFURm9sZGluZz4NCi0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2
PC9UYXJnZXRNYWNoaW5lPg0KLSAgICA8L0xpbms+DQotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+
DQotICA8SXRlbUdyb3VwPg0KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJnbW9ja19t
YWluLnZjeHByb2oiPg0KLSAgICAgIDxQcm9qZWN0PntlNGVmNjE0Yi0zMGRmLTQ5NTQtOGM1My01
ODBhMGJmNmI1ODl9PC9Qcm9qZWN0Pg0KLSAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJs
aWVzPnRydWU8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+DQotICAgICAgPFJlZmVyZW5j
ZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5Pg0KLSAgICA8L1By
b2plY3RSZWZlcmVuY2U+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxnbW9ja19hbGxfdGVzdC5jYyIgLz4NCi0gIDwv
SXRlbUdyb3VwPg0KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAudGFyZ2V0cyIgLz4NCi0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+DQotICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9tc3ZjLzIwMTUvZ21vY2suc2xuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnNs
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5ZTA3ZmNiNzlkLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnNsbgorKysgL2Rldi9udWxsCkBA
IC0xLDMyICswLDAgQEAKLe+7vwotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmls
ZSwgRm9ybWF0IFZlcnNpb24gMTIuMDAKLSMgVmlzdWFsIFN0dWRpbyAxNAotUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJnbW9jayIsICJnbW9jay52
Y3hwcm9qIiwgInszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9IgotRW5kUHJv
amVjdAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9
ICJnbW9ja190ZXN0IiwgImdtb2NrX3Rlc3QudmN4cHJvaiIsICJ7RjEwRDIyRjgtQUM3Qi00MjEz
LTg3MjAtNjA4RTdEODc4Q0QyfSIKLUVuZFByb2plY3QKLVByb2plY3QoIns4QkM5Q0VCOC04QjRB
LTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ21vY2tfbWFpbiIsICJnbW9ja19tYWluLnZj
eHByb2oiLCAie0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0iCi1FbmRQcm9q
ZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3Jt
cykgPSBwcmVTb2x1dGlvbgotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCi0JCVJlbGVhc2V8
V2luMzIgPSBSZWxlYXNlfFdpbjMyCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24o
UHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCi0JCXszNDY4MUYw
RC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERl
YnVnfFdpbjMyCi0JCXszNDY4MUYwRC1DRTQ1LTQxNUQtQjVGMi01QzY2MkRGRTNCRDV9LkRlYnVn
fFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7MzQ2ODFGMEQtQ0U0NS00MTVELUI1RjIt
NUM2NjJERkUzQkQ1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJ
ezM0NjgxRjBELUNFNDUtNDE1RC1CNUYyLTVDNjYyREZFM0JENX0uUmVsZWFzZXxXaW4zMi5CdWls
ZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7RjEwRDIyRjgtQUM3Qi00MjEzLTg3MjAtNjA4RTdEODc4
Q0QyfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7RjEwRDIyRjgtQUM3
Qi00MjEzLTg3MjAtNjA4RTdEODc4Q0QyfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2lu
MzIKLQkJe0YxMEQyMkY4LUFDN0ItNDIxMy04NzIwLTYwOEU3RDg3OENEMn0uUmVsZWFzZXxXaW4z
Mi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXtGMTBEMjJGOC1BQzdCLTQyMTMtODcyMC02
MDhFN0Q4NzhDRDJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJe0U0
RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0uRGVidWd8V2luMzIuQWN0aXZlQ2Zn
ID0gRGVidWd8V2luMzIKLQkJe0U0RUY2MTRCLTMwREYtNDk1NC04QzUzLTU4MEEwQkY2QjU4OX0u
RGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXtFNEVGNjE0Qi0zMERGLTQ5NTQt
OEM1My01ODBBMEJGNkI1ODl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4z
MgotCQl7RTRFRjYxNEItMzBERi00OTU0LThDNTMtNTgwQTBCRjZCNTg5fS5SZWxlYXNlfFdpbjMy
LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rp
b24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCi0JCUhpZGVTb2x1dGlvbk5vZGUg
PSBGQUxTRQotCUVuZEdsb2JhbFNlY3Rpb24KLUVuZEdsb2JhbApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21v
Y2sudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVkZGQwOTEwMGRlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8yMDE1L2dtb2NrLnZjeHByb2oKKysr
IC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNp
b249IjE0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9t
c2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMi
PgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAg
ICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5X
aW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJh
dGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0
Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFBy
b3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57MzQ2ODFGMEQt
Q0U0NS00MTVELUI1RjItNUM2NjJERkUzQkQ1fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1l
c3BhY2U+Z21vY2s8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3
b3JkPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQ
YXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
IExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGli
cmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFy
YWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+Ci0gICAgPFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xz
ZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1
cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJh
dGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAg
PFBsYXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91
cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJv
cHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0lt
cG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+Ci0gIDwv
SW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAg
ICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9y
bSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29m
dC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZv
cm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+Ci0gIDwv
SW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8
UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Q
cm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3Vy
YXRpb24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwv
SW50RGlyPgotICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRpb24pXDwv
T3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+
Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENv
bXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAg
ICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+
Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19MSUI7JShQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPE1p
bmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJhc2ljUnVudGltZUNo
ZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0gICAgICA8UnVudGlt
ZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxQcmVj
b21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2Fybmlu
Z0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3Jt
YXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21w
aWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMici
PgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4u
LlwuLlxpbmNsdWRlOy4uXC4uOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+
V0lOMzI7TkRFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRp
bWVMaWJyYXJ5PgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxl
ZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAg
ICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAg
PEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xnbW9jay1hbGwu
Y2MiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKEdUZXN0RGlyKVxzcmNcZ3Rlc3QtYWxs
LmNjIj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKEdUZXN0RGlyKTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChHVGVzdERpcik7
JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVj
dD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRH
cm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
bXN2Yy8yMDE1L2dtb2NrX2NvbmZpZy5wcm9wcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9j
a19jb25maWcucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3YmM5NWIxOTJk
OS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9ja19jb25maWcu
cHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29s
c1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxv
cGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4K
LSAgICA8R1Rlc3REaXI+Li4vLi4vLi4vZ29vZ2xldGVzdDwvR1Rlc3REaXI+Ci0gIDwvUHJvcGVy
dHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAu
MC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz4kKEdUZXN0RGlyKS9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBp
bGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRN
YWNybyBJbmNsdWRlPSJHVGVzdERpciI+Ci0gICAgICA8VmFsdWU+JChHVGVzdERpcik8L1ZhbHVl
PgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfbWFpbi52Y3hwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svbXN2Yy8yMDE1L2dtb2NrX21haW4udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzZjYzY4YjlhMzkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svbXN2Yy8y
MDE1L2dtb2NrX21haW4udmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLe+7
vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0
VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
Lm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFi
ZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIElu
Y2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1
cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RD
b25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNl
fFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0g
ICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRp
b24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0g
ICAgPFByb2plY3RHdWlkPntFNEVGNjE0Qi0zMERGLTQ5NTQtOEM1My01ODBBMEJGNkI1ODl9PC9Q
cm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5nbW9ja19tYWluPC9Sb290TmFtZXNwYWNl
PgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgot
ICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0
LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0g
ICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgot
ICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dy
YW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxQbGF0
Zm9ybVRvb2xzZXQ+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0g
IDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRp
b25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJT
ZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICAgIDxQbGF0Zm9ybVRvb2xzZXQ+djE0MDwvUGxh
dGZvcm1Ub29sc2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChW
Q1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFi
ZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3Vw
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVj
dD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3Jv
dXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJS
b290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0i
ZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJv
cHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVj
dD0iZ21vY2tfY29uZmlnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlH
cm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9q
ZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxP
dXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xX
aW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50
RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2lu
MzInIj4kKE91dERpcikkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8T3V0RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQo
U29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8SW50RGlyIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQo
T3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJ
dGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlv
bj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25z
PldJTjMyO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNz
b3JEZWZpbml0aW9ucz4KLSAgICAgIDxNaW5pbWFsUmVidWlsZD50cnVlPC9NaW5pbWFsUmVidWls
ZD4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50
aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVu
dGltZUxpYnJhcnk+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBp
bGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAg
ICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1h
dGlvbkZvcm1hdD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgot
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li4vLi4vaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXBy
b2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5N
dWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4K
LSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwv
V2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFi
YXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1E
ZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5j
bHVkZT0iZ21vY2sudmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57MzQ2ODFmMGQtY2U0NS00MTVk
LWI1ZjItNWM2NjJkZmUzYmQ1fTwvUHJvamVjdD4KLSAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVB
c3NlbWJsaWVzPnRydWU8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+Ci0gICAgICA8UmVm
ZXJlbmNlT3V0cHV0QXNzZW1ibHk+dHJ1ZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAg
PC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHNyY1xnbW9ja19tYWluLmNjIj4KLSAgICAgIDxBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1
ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8QWRk
aXRpb25hbEluY2x1ZGVEaXJlY3RvcmllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLi8uLi9pbmNsdWRlOyUoQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9D
bENvbXBpbGU+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4
dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL21zdmMvMjAxNS9nbW9j
a190ZXN0LnZjeHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfdGVzdC52Y3hwcm9q
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmVhNTUzNGFkMTkuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9tc3ZjLzIwMTUvZ21vY2tfdGVzdC52Y3hwcm9qCisrKyAvZGV2
L251bGwKQEAgLTEsMTAzICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0i
MTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVp
bGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0g
ICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxD
b25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMy
PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29u
ZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9u
PlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3Jt
PgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVy
dHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntGMTBEMjJGOC1BQzdC
LTQyMTMtODcyMC02MDhFN0Q4NzhDRDJ9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFj
ZT5nbW9ja190ZXN0PC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5
d29yZD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRz
UGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzIn
IiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0
aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJh
Y3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3Jh
bU9wdGltaXphdGlvbj4KLSAgICA8UGxhdGZvcm1Ub29sc2V0PnYxNDA8L1BsYXRmb3JtVG9vbHNl
dD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3Vy
YXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlv
blR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFBs
YXRmb3JtVG9vbHNldD52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4K
LSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMi
IC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9y
dEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+Ci0gIDwvSW1w
b3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8
SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSku
dXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5D
cHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0i
IC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJnbW9ja19jb25maWcucHJvcHMiIC8+Ci0gIDwvSW1w
b3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJv
cGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9q
ZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChTb2x1dGlvbkRpcikkKENvbmZpZ3VyYXRp
b24pXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50
RGlyPgotICAgIDxMaW5rSW5jcmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8
T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoU29sdXRpb25EaXIpJChDb25maWd1cmF0aW9uKVw8L091dERpcj4KLSAgICA8
SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFz
ZXxXaW4zMiciPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICAgIDxMaW5rSW5j
cmVtZW50YWwgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfFdpbjMyJyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgot
ICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlv
bmFsT3B0aW9ucz4vYmlnb2JqICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9u
cz4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXC4uXGluY2x1ZGU7Li5cLi47JChHVGVzdERp
cik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NP
TlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25z
PgotICAgICAgPE1pbmltYWxSZWJ1aWxkPnRydWU8L01pbmltYWxSZWJ1aWxkPgotICAgICAgPEJh
c2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+Ci0g
ICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4K
LSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0g
ICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1h
dGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8U3ViU3lzdGVtPkNv
bnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1Rhcmdl
dE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVt
RGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9w
dGlvbnM+L2JpZ29iaiAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0g
ICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlwuLlxpbmNsdWRlOy4uXC4uOyUo
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xF
OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAg
ICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAg
IDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8
V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPERlYnVnSW5mb3JtYXRp
b25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50
cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8
L1N1YlN5c3RlbT4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZl
cmVuY2VzPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9s
ZGluZz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0g
ICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAg
PFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iZ21vY2tfbWFpbi52Y3hwcm9qIj4KLSAgICAgIDxQ
cm9qZWN0PntlNGVmNjE0Yi0zMGRmLTQ5NTQtOGM1My01ODBhMGJmNmI1ODl9PC9Qcm9qZWN0Pgot
ICAgICAgPENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+dHJ1ZTwvQ29weUxvY2FsU2F0ZWxs
aXRlQXNzZW1ibGllcz4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT50cnVlPC9SZWZl
cmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdy
b3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cdGVzdFxn
bW9ja19hbGxfdGVzdC5jYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91
cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2Ny
aXB0cy9mdXNlX2dtb2NrX2ZpbGVzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9mdXNlX2dtb2Nr
X2ZpbGVzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjYjdmZGYyZjc4MzkuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2Z1c2VfZ21vY2tfZmlsZXMucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
Ci0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9u
LgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotIiIiZnVzZV9nbW9ja19maWxlcy5weSB2MC4xLjAKLUZ1c2Vz
IEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBzb3VyY2UgY29kZSBpbnRvIHR3byAuaCBmaWxl
cyBhbmQgYSAuY2MgZmlsZS4KLQotU1lOT1BTSVMKLSAgICAgICBmdXNlX2dtb2NrX2ZpbGVzLnB5
IFtHTU9DS19ST09UX0RJUl0gT1VUUFVUX0RJUgotCi0gICAgICAgU2NhbnMgR01PQ0tfUk9PVF9E
SVIgZm9yIEdvb2dsZSBNb2NrIGFuZCBHb29nbGUgVGVzdCBzb3VyY2UKLSAgICAgICBjb2RlLCBh
c3N1bWluZyBHb29nbGUgVGVzdCBpcyBpbiB0aGUgR01PQ0tfUk9PVF9ESVIvLi4vZ29vZ2xldGVz
dAotICAgICAgIGRpcmVjdG9yeSwgYW5kIGdlbmVyYXRlcyB0aHJlZSBmaWxlczoKLSAgICAgICBP
VVRQVVRfRElSL2d0ZXN0L2d0ZXN0LmgsIE9VVFBVVF9ESVIvZ21vY2svZ21vY2suaCwgYW5kCi0g
ICAgICAgT1VUUFVUX0RJUi9nbW9jay1ndGVzdC1hbGwuY2MuICBUaGVuIHlvdSBjYW4gYnVpbGQg
eW91ciB0ZXN0cwotICAgICAgIGJ5IGFkZGluZyBPVVRQVVRfRElSIHRvIHRoZSBpbmNsdWRlIHNl
YXJjaCBwYXRoIGFuZCBsaW5raW5nCi0gICAgICAgd2l0aCBPVVRQVVRfRElSL2dtb2NrLWd0ZXN0
LWFsbC5jYy4gIFRoZXNlIHRocmVlIGZpbGVzIGNvbnRhaW4KLSAgICAgICBldmVyeXRoaW5nIHlv
dSBuZWVkIHRvIHVzZSBHb29nbGUgTW9jay4gIEhlbmNlIHlvdSBjYW4KLSAgICAgICAiaW5zdGFs
bCIgR29vZ2xlIE1vY2sgYnkgY29weWluZyB0aGVtIHRvIHdoZXJldmVyIHlvdSB3YW50LgotCi0g
ICAgICAgR01PQ0tfUk9PVF9ESVIgY2FuIGJlIG9taXR0ZWQgYW5kIGRlZmF1bHRzIHRvIHRoZSBw
YXJlbnQKLSAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoaXMgc2Ny
aXB0LgotCi1FWEFNUExFUwotICAgICAgIC4vZnVzZV9nbW9ja19maWxlcy5weSBmdXNlZF9nbW9j
awotICAgICAgIC4vZnVzZV9nbW9ja19maWxlcy5weSBwYXRoL3RvL3VucGFja2VkL2dtb2NrIGZ1
c2VkX2dtb2NrCi0KLVRoaXMgdG9vbCBpcyBleHBlcmltZW50YWwuICBJbiBwYXJ0aWN1bGFyLCBp
dCBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgbm8KLWNvbmRpdGlvbmFsIGluY2x1c2lvbiBvZiBHb29n
bGUgTW9jayBvciBHb29nbGUgVGVzdCBoZWFkZXJzLiAgUGxlYXNlCi1yZXBvcnQgYW55IHByb2Js
ZW1zIHRvIGdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbS4gIFlvdSBjYW4gcmVhZAotaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZW1vY2svd2lraS9Db29rQm9vayBmb3IgbW9yZQotaW5m
b3JtYXRpb24uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZXRzCi1pbXBvcnQgc3lzCi0K
LSMgV2UgYXNzdW1lIHRoYXQgdGhpcyBmaWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3Rvcnkg
aW4gdGhlIEdvb2dsZQotIyBNb2NrIHJvb3QgZGlyZWN0b3J5LgotREVGQVVMVF9HTU9DS19ST09U
X0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQotCi0j
IFdlIG5lZWQgdG8gY2FsbCBpbnRvIGdvb2dsZXRlc3Qvc2NyaXB0cy9mdXNlX2d0ZXN0X2ZpbGVz
LnB5Lgotc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihERUZBVUxUX0dNT0NLX1JPT1RfRElS
LCAnLi4vZ29vZ2xldGVzdC9zY3JpcHRzJykpCi1pbXBvcnQgZnVzZV9ndGVzdF9maWxlcwotZ3Rl
c3QgPSBmdXNlX2d0ZXN0X2ZpbGVzCi0KLSMgUmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSAi
Z21vY2svLi4uIicuCi1JTkNMVURFX0dNT0NLX0ZJTEVfUkVHRVggPSByZS5jb21waWxlKHInXlxz
KiNccyppbmNsdWRlXHMqIihnbW9jay8uKykiJykKLQotIyBXaGVyZSB0byBmaW5kIHRoZSBzb3Vy
Y2Ugc2VlZCBmaWxlcy4KLUdNT0NLX0hfU0VFRCA9ICdpbmNsdWRlL2dtb2NrL2dtb2NrLmgnCi1H
TU9DS19BTExfQ0NfU0VFRCA9ICdzcmMvZ21vY2stYWxsLmNjJwotCi0jIFdoZXJlIHRvIHB1dCB0
aGUgZ2VuZXJhdGVkIGZpbGVzLgotR1RFU1RfSF9PVVRQVVQgPSAnZ3Rlc3QvZ3Rlc3QuaCcKLUdN
T0NLX0hfT1VUUFVUID0gJ2dtb2NrL2dtb2NrLmgnCi1HTU9DS19HVEVTVF9BTExfQ0NfT1VUUFVU
ID0gJ2dtb2NrLWd0ZXN0LWFsbC5jYycKLQotCi1kZWYgR2V0R1Rlc3RSb290RGlyKGdtb2NrX3Jv
b3QpOgotICAiIiJSZXR1cm5zIHRoZSByb290IGRpcmVjdG9yeSBvZiBHb29nbGUgVGVzdC4iIiIK
LQotICByZXR1cm4gb3MucGF0aC5qb2luKGdtb2NrX3Jvb3QsICcuLi9nb29nbGV0ZXN0JykKLQot
Ci1kZWYgVmFsaWRhdGVHTW9ja1Jvb3REaXIoZ21vY2tfcm9vdCk6Ci0gICIiIk1ha2VzIHN1cmUg
Z21vY2tfcm9vdCBwb2ludHMgdG8gYSB2YWxpZCBnbW9jayByb290IGRpcmVjdG9yeS4KLQotICBU
aGUgZnVuY3Rpb24gYWJvcnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUuCi0gICIiIgotCi0gIGd0
ZXN0LlZhbGlkYXRlR1Rlc3RSb290RGlyKEdldEdUZXN0Um9vdERpcihnbW9ja19yb290KSkKLSAg
Z3Rlc3QuVmVyaWZ5RmlsZUV4aXN0cyhnbW9ja19yb290LCBHTU9DS19IX1NFRUQpCi0gIGd0ZXN0
LlZlcmlmeUZpbGVFeGlzdHMoZ21vY2tfcm9vdCwgR01PQ0tfQUxMX0NDX1NFRUQpCi0KLQotZGVm
IFZhbGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpOgotICAiIiJNYWtlcyBzdXJlIG91dHB1dF9k
aXIgcG9pbnRzIHRvIGEgdmFsaWQgb3V0cHV0IGRpcmVjdG9yeS4KLQotICBUaGUgZnVuY3Rpb24g
YWJvcnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUuCi0gICIiIgotCi0gIGd0ZXN0LlZlcmlmeU91
dHB1dEZpbGUob3V0cHV0X2RpciwgZ3Rlc3QuR1RFU1RfSF9PVVRQVVQpCi0gIGd0ZXN0LlZlcmlm
eU91dHB1dEZpbGUob3V0cHV0X2RpciwgR01PQ0tfSF9PVVRQVVQpCi0gIGd0ZXN0LlZlcmlmeU91
dHB1dEZpbGUob3V0cHV0X2RpciwgR01PQ0tfR1RFU1RfQUxMX0NDX09VVFBVVCkKLQotCi1kZWYg
RnVzZUdNb2NrSChnbW9ja19yb290LCBvdXRwdXRfZGlyKToKLSAgIiIiU2NhbnMgZm9sZGVyIGdt
b2NrX3Jvb3QgdG8gZ2VuZXJhdGUgZ21vY2svZ21vY2suaCBpbiBvdXRwdXRfZGlyLiIiIgotCi0g
IG91dHB1dF9maWxlID0gZmlsZShvcy5wYXRoLmpvaW4ob3V0cHV0X2RpciwgR01PQ0tfSF9PVVRQ
VVQpLCAndycpCi0gIHByb2Nlc3NlZF9maWxlcyA9IHNldHMuU2V0KCkgICMgSG9sZHMgYWxsIGdt
b2NrIGhlYWRlcnMgd2UndmUgcHJvY2Vzc2VkLgotCi0gIGRlZiBQcm9jZXNzRmlsZShnbW9ja19o
ZWFkZXJfcGF0aCk6Ci0gICAgIiIiUHJvY2Vzc2VzIHRoZSBnaXZlbiBnbW9jayBoZWFkZXIgZmls
ZS4iIiIKLQotICAgICMgV2UgZG9uJ3QgcHJvY2VzcyB0aGUgc2FtZSBoZWFkZXIgdHdpY2UuCi0g
ICAgaWYgZ21vY2tfaGVhZGVyX3BhdGggaW4gcHJvY2Vzc2VkX2ZpbGVzOgotICAgICAgcmV0dXJu
Ci0KLSAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGdtb2NrX2hlYWRlcl9wYXRoKQotCi0gICAgIyBS
ZWFkcyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGdtb2NrIGhlYWRlci4KLSAgICBmb3IgbGluZSBp
biBmaWxlKG9zLnBhdGguam9pbihnbW9ja19yb290LCBnbW9ja19oZWFkZXJfcGF0aCksICdyJyk6
Ci0gICAgICBtID0gSU5DTFVERV9HTU9DS19GSUxFX1JFR0VYLm1hdGNoKGxpbmUpCi0gICAgICBp
ZiBtOgotICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJnbW9jay8uLi4iJyAtIGxldCdzIHByb2Nl
c3MgaXQgcmVjdXJzaXZlbHkuCi0gICAgICAgIFByb2Nlc3NGaWxlKCdpbmNsdWRlLycgKyBtLmdy
b3VwKDEpKQotICAgICAgZWxzZToKLSAgICAgICAgbSA9IGd0ZXN0LklOQ0xVREVfR1RFU1RfRklM
RV9SRUdFWC5tYXRjaChsaW5lKQotICAgICAgICBpZiBtOgotICAgICAgICAgICMgSXQncyAnI2lu
Y2x1ZGUgImd0ZXN0L2Zvby5oIicuICBXZSB0cmFuc2xhdGUgaXQgdG8KLSAgICAgICAgICAjICJn
dGVzdC9ndGVzdC5oIiwgcmVnYXJkbGVzcyBvZiB3aGF0IGZvbyBpcywgc2luY2UgYWxsCi0gICAg
ICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBmdXNlZCBpbnRvIGd0ZXN0L2d0ZXN0LmguCi0KLSAg
ICAgICAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgZ3Rlc3QuaCB0d2ljZS4KLSAg
ICAgICAgICBpZiBub3QgZ3Rlc3QuR1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoKLSAg
ICAgICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoZ3Rlc3QuR1RFU1RfSF9TRUVEKQotICAgICAg
ICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoZ3Rlc3QuR1RFU1Rf
SF9PVVRQVVQsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAjIE90aGVyd2lzZSB3ZSBjb3B5
IHRoZSBsaW5lIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0IGZpbGUuCi0gICAgICAgICAgb3V0cHV0
X2ZpbGUud3JpdGUobGluZSkKLQotICBQcm9jZXNzRmlsZShHTU9DS19IX1NFRUQpCi0gIG91dHB1
dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgRnVzZUdNb2NrQWxsQ2NUb0ZpbGUoZ21vY2tfcm9vdCwg
b3V0cHV0X2ZpbGUpOgotICAiIiJTY2FucyBmb2xkZXIgZ21vY2tfcm9vdCB0byBmdXNlIGdtb2Nr
LWFsbC5jYyBpbnRvIG91dHB1dF9maWxlLiIiIgotCi0gIHByb2Nlc3NlZF9maWxlcyA9IHNldHMu
U2V0KCkKLQotICBkZWYgUHJvY2Vzc0ZpbGUoZ21vY2tfc291cmNlX2ZpbGUpOgotICAgICIiIlBy
b2Nlc3NlcyB0aGUgZ2l2ZW4gZ21vY2sgc291cmNlIGZpbGUuIiIiCi0KLSAgICAjIFdlIGRvbid0
IHByb2Nlc3MgdGhlIHNhbWUgI2luY2x1ZGVkIGZpbGUgdHdpY2UuCi0gICAgaWYgZ21vY2tfc291
cmNlX2ZpbGUgaW4gcHJvY2Vzc2VkX2ZpbGVzOgotICAgICAgcmV0dXJuCi0KLSAgICBwcm9jZXNz
ZWRfZmlsZXMuYWRkKGdtb2NrX3NvdXJjZV9maWxlKQotCi0gICAgIyBSZWFkcyBlYWNoIGxpbmUg
aW4gdGhlIGdpdmVuIGdtb2NrIHNvdXJjZSBmaWxlLgotICAgIGZvciBsaW5lIGluIGZpbGUob3Mu
cGF0aC5qb2luKGdtb2NrX3Jvb3QsIGdtb2NrX3NvdXJjZV9maWxlKSwgJ3InKToKLSAgICAgIG0g
PSBJTkNMVURFX0dNT0NLX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKLSAgICAgIGlmIG06Ci0gICAg
ICAgICMgSXQncyAnI2luY2x1ZGUgImdtb2NrL2Zvby5oIicuICBXZSB0cmVhdCBpdCBhcyAnI2lu
Y2x1ZGUKLSAgICAgICAgIyAiZ21vY2svZ21vY2suaCInLCBhcyBhbGwgb3RoZXIgZ21vY2sgaGVh
ZGVycyBhcmUgYmVpbmcgZnVzZWQKLSAgICAgICAgIyBpbnRvIGdtb2NrLmggYW5kIGNhbm5vdCBi
ZSAjaW5jbHVkZWQgZGlyZWN0bHkuCi0KLSAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvICNp
bmNsdWRlICJnbW9jay9nbW9jay5oIiBtb3JlIHRoYW4gb25jZS4KLSAgICAgICAgaWYgbm90IEdN
T0NLX0hfU0VFRCBpbiBwcm9jZXNzZWRfZmlsZXM6Ci0gICAgICAgICAgcHJvY2Vzc2VkX2ZpbGVz
LmFkZChHTU9DS19IX1NFRUQpCi0gICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRl
ICIlcyJcbicgJSAoR01PQ0tfSF9PVVRQVVQsKSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIG0gPSBn
dGVzdC5JTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToK
LSAgICAgICAgICAjIEl0J3MgJyNpbmNsdWRlICJndGVzdC8uLi4iJy4KLSAgICAgICAgICAjIFRo
ZXJlIGlzIG5vIG5lZWQgdG8gI2luY2x1ZGUgZ3Rlc3QuaCBhcyBpdCBoYXMgYmVlbgotICAgICAg
ICAgICMgI2luY2x1ZGVkIGJ5IGd0ZXN0LWFsbC5jYy4KLSAgICAgICAgICBwYXNzCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgbSA9IGd0ZXN0LklOQ0xVREVfU1JDX0ZJTEVfUkVHRVgubWF0Y2go
bGluZSkKLSAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAic3Jj
L2ZvbyInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KLSAgICAgICAgICAgIFByb2Nl
c3NGaWxlKG0uZ3JvdXAoMSkpCi0gICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT3RoZXJ3
aXNlIHdlIGNvcHkgdGhlIGxpbmUgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQgZmlsZS4KLSAgICAg
ICAgICAgIG91dHB1dF9maWxlLndyaXRlKGxpbmUpCi0KLSAgUHJvY2Vzc0ZpbGUoR01PQ0tfQUxM
X0NDX1NFRUQpCi0KLQotZGVmIEZ1c2VHTW9ja0dUZXN0QWxsQ2MoZ21vY2tfcm9vdCwgb3V0cHV0
X2Rpcik6Ci0gICIiIlNjYW5zIGZvbGRlciBnbW9ja19yb290IHRvIGdlbmVyYXRlIGdtb2NrLWd0
ZXN0LWFsbC5jYyBpbiBvdXRwdXRfZGlyLiIiIgotCi0gIG91dHB1dF9maWxlID0gZmlsZShvcy5w
YXRoLmpvaW4ob3V0cHV0X2RpciwgR01PQ0tfR1RFU1RfQUxMX0NDX09VVFBVVCksICd3JykKLSAg
IyBGaXJzdCwgZnVzZSBndGVzdC1hbGwuY2MgaW50byBnbW9jay1ndGVzdC1hbGwuY2MuCi0gIGd0
ZXN0LkZ1c2VHVGVzdEFsbENjVG9GaWxlKEdldEdUZXN0Um9vdERpcihnbW9ja19yb290KSwgb3V0
cHV0X2ZpbGUpCi0gICMgTmV4dCwgYXBwZW5kIGZ1c2VkIGdtb2NrLWFsbC5jYyB0byBnbW9jay1n
dGVzdC1hbGwuY2MuCi0gIEZ1c2VHTW9ja0FsbENjVG9GaWxlKGdtb2NrX3Jvb3QsIG91dHB1dF9m
aWxlKQotICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLQotZGVmIEZ1c2VHTW9jayhnbW9ja19yb290
LCBvdXRwdXRfZGlyKToKLSAgIiIiRnVzZXMgZ3Rlc3QuaCwgZ21vY2suaCwgYW5kIGdtb2NrLWd0
ZXN0LWFsbC5oLiIiIgotCi0gIFZhbGlkYXRlR01vY2tSb290RGlyKGdtb2NrX3Jvb3QpCi0gIFZh
bGlkYXRlT3V0cHV0RGlyKG91dHB1dF9kaXIpCi0KLSAgZ3Rlc3QuRnVzZUdUZXN0SChHZXRHVGVz
dFJvb3REaXIoZ21vY2tfcm9vdCksIG91dHB1dF9kaXIpCi0gIEZ1c2VHTW9ja0goZ21vY2tfcm9v
dCwgb3V0cHV0X2RpcikKLSAgRnVzZUdNb2NrR1Rlc3RBbGxDYyhnbW9ja19yb290LCBvdXRwdXRf
ZGlyKQotCi0KLWRlZiBtYWluKCk6Ci0gIGFyZ2MgPSBsZW4oc3lzLmFyZ3YpCi0gIGlmIGFyZ2Mg
PT0gMjoKLSAgICAjIGZ1c2VfZ21vY2tfZmlsZXMucHkgT1VUUFVUX0RJUgotICAgIEZ1c2VHTW9j
ayhERUZBVUxUX0dNT0NLX1JPT1RfRElSLCBzeXMuYXJndlsxXSkKLSAgZWxpZiBhcmdjID09IDM6
Ci0gICAgIyBmdXNlX2dtb2NrX2ZpbGVzLnB5IEdNT0NLX1JPT1RfRElSIE9VVFBVVF9ESVIKLSAg
ICBGdXNlR01vY2soc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQotICBlbHNlOgotICAgIHByaW50
IF9fZG9jX18KLSAgICBzeXMuZXhpdCgxKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvTElD
RU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg3ZWEwNjM2NTEwYS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMg
KzAsMCBAQAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5z
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAot
ICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLwot
Ci0gICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNU
UklCVVRJT04KLQotICAgMS4gRGVmaW5pdGlvbnMuCi0KLSAgICAgICJMaWNlbnNlIiBzaGFsbCBt
ZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCi0gICAg
ICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2Yg
dGhpcyBkb2N1bWVudC4KLQotICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmln
aHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKLSAgICAgIHRoZSBjb3B5cmlnaHQgb3du
ZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KLQotICAgICAgIkxlZ2FsIEVudGl0eSIg
c2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAotICAgICAg
b3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVu
ZGVyIGNvbW1vbgotICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBv
c2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKLSAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBv
d2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQotICAgICAgZGlyZWN0aW9uIG9y
IG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKLSAgICAg
IG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBt
b3JlIG9mIHRoZQotICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFs
IG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KLQotICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hh
bGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQotICAgICAgZXhlcmNpc2luZyBw
ZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KLQotICAgICAgIlNvdXJjZSIgZm9y
bSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMs
Ci0gICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2Rl
LCBkb2N1bWVudGF0aW9uCi0gICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgot
Ci0gICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20g
bWVjaGFuaWNhbAotICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3Vy
Y2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAotICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2Jq
ZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAotICAgICAgYW5kIGNvbnZlcnNpb25z
IHRvIG90aGVyIG1lZGlhIHR5cGVzLgotCi0gICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29y
ayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgotICAgICAgT2JqZWN0IGZvcm0s
IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQotICAg
ICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRo
ZSB3b3JrCi0gICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVs
b3cpLgotCi0gICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hl
dGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0Ci0gICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChv
ciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCi0gICAgICBlZGl0b3Jp
YWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmlj
YXRpb25zCi0gICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2Yg
YXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcwotICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJp
dmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCi0gICAgICBz
ZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGlu
dGVyZmFjZXMgb2YsCi0gICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9m
LgotCi0gICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNo
aXAsIGluY2x1ZGluZwotICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5k
IGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucwotICAgICAgdG8gdGhhdCBXb3JrIG9yIERl
cml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5Ci0gICAgICBzdWJt
aXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJp
Z2h0IG93bmVyCi0gICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRo
b3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKLSAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIu
IEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgotICAgICAg
bWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmlj
YXRpb24gc2VudAotICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMs
IGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KLSAgICAgIGNvbW11bmljYXRpb24gb24gZWxl
Y3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCi0gICAg
ICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBi
ZWhhbGYgb2YsIHRoZQotICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3Np
bmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0Ci0gICAgICBleGNsdWRpbmcgY29tbXVuaWNh
dGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQotICAgICAgZGVz
aWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRy
aWJ1dGlvbi4iCi0KLSAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQg
YW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5Ci0gICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBh
IENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKLSAgICAgIHN1
YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgotCi0gICAyLiBHcmFudCBv
ZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg
b2YKLSAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRv
IFlvdSBhIHBlcnBldHVhbCwKLSAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hh
cmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCi0gICAgICBjb3B5cmlnaHQgbGljZW5zZSB0
byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKLSAgICAgIHB1YmxpY2x5
IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRo
ZQotICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmpl
Y3QgZm9ybS4KLQotICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhl
IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCi0gICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJp
YnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCi0gICAgICB3b3JsZHdpZGUs
IG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQotICAg
ICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBt
YWtlLCBoYXZlIG1hZGUsCi0gICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwg
YW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKLSAgICAgIHdoZXJlIHN1Y2ggbGljZW5z
ZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCi0gICAgICBi
eSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVp
cgotICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWly
IENvbnRyaWJ1dGlvbihzKQotICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRy
aWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKLSAgICAgIGluc3RpdHV0ZSBwYXRlbnQg
bGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCi0gICAgICBjcm9zcy1j
bGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3Jr
Ci0gICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNv
bnN0aXR1dGVzIGRpcmVjdAotICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1l
bnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcwotICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIg
dGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCi0gICAgICBhcyBvZiB0
aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCi0KLSAgIDQuIFJlZGlzdHJpYnV0aW9u
LiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCi0gICAgICBX
b3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdp
dGhvdXQKLSAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0s
IHByb3ZpZGVkIHRoYXQgWW91Ci0gICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
LQotICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdv
cmsgb3IKLSAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7
IGFuZAotCi0gICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNh
cnJ5IHByb21pbmVudCBub3RpY2VzCi0gICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2Vk
IHRoZSBmaWxlczsgYW5kCi0KLSAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3Vy
Y2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcwotICAgICAgICAgIHRoYXQgWW91IGRpc3Ry
aWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKLSAgICAgICAgICBh
dHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAotICAg
ICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55
IHBhcnQgb2YKLSAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCi0KLSAgICAgIChk
KSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0
cwotICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0
IFlvdSBkaXN0cmlidXRlIG11c3QKLSAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBv
ZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKLSAgICAgICAgICB3aXRoaW4gc3Vj
aCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKLSAgICAg
ICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBs
ZWFzdCBvbmUKLSAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9U
SUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAotICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2
YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKLSAgICAgICAgICBkb2N1bWVu
dGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwK
LSAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBX
b3JrcywgaWYgYW5kCi0gICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2Vz
IG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCi0gICAgICAgICAgb2YgdGhlIE5PVElDRSBm
aWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAotICAgICAgICAgIGRv
IG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9u
Ci0gICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0
cmlidXRlLCBhbG9uZ3NpZGUKLSAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9U
SUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKLSAgICAgICAgICB0aGF0IHN1Y2ggYWRk
aXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKLSAgICAgICAg
ICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCi0KLSAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3du
IGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAotICAgICAgbWF5
IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0
aW9ucwotICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91
ciBtb2RpZmljYXRpb25zLCBvcgotICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3Mg
YXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCi0gICAgICByZXByb2R1Y3Rpb24sIGFuZCBk
aXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKLSAgICAgIHRo
ZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCi0KLSAgIDUuIFN1Ym1pc3Npb24g
b2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwK
LSAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1
c2lvbiBpbiB0aGUgV29yawotICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1
bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKLSAgICAgIHRoaXMgTGljZW5zZSwgd2l0
aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgotICAgICAgTm90d2l0aHN0
YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlm
eQotICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3Ug
bWF5IGhhdmUgZXhlY3V0ZWQKLSAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29u
dHJpYnV0aW9ucy4KLQotICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdy
YW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQotICAgICAgbmFtZXMsIHRyYWRlbWFya3Ms
IHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAotICAgICAg
ZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRl
c2NyaWJpbmcgdGhlCi0gICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRo
ZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KLQotICAgNy4gRGlzY2xhaW1lciBvZiBXYXJy
YW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCi0gICAgICBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCi0gICAg
ICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBC
QVNJUywKLSAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvcgotICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxp
bWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKLSAgICAgIG9mIFRJVExFLCBO
T04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKLSAgICAg
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVy
bWluaW5nIHRoZQotICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0
aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55Ci0gICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGgg
WW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCi0KLSAgIDgu
IExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwg
dGhlb3J5LAotICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNv
bnRyYWN0LCBvciBvdGhlcndpc2UsCi0gICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQotICAgICAgbmVnbGlnZW50IGFj
dHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKLSAg
ICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRp
cmVjdCwgc3BlY2lhbCwKLSAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdl
cyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQotICAgICAgcmVzdWx0IG9mIHRoaXMgTGlj
ZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQotICAgICAgV29y
ayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3
aWxsLAotICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlv
biwgb3IgYW55IGFuZCBhbGwKLSAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3Nz
ZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKLSAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2Yg
dGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KLQotICAgOS4gQWNjZXB0aW5nIFdhcnJh
bnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZwotICAgICAg
dGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBv
ZmZlciwKLSAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQs
IHdhcnJhbnR5LCBpbmRlbW5pdHksCi0gICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlv
bnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcwotICAgICAgTGljZW5zZS4gSG93
ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKLSAg
ICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBu
b3Qgb24gYmVoYWxmCi0gICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlm
IFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCi0gICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29u
dHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKLSAgICAgIGluY3VycmVkIGJ5LCBv
ciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KLSAg
ICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlh
YmlsaXR5LgotCi0gICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLQotICAgQVBQRU5ESVg6
IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLgotCi0gICAgICBU
byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLCBhdHRhY2ggdGhlIGZvbGxv
d2luZwotICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQg
YnkgYnJhY2tldHMgIltdIgotICAgICAgcmVwbGFjZWQgd2l0aCB5b3VyIG93biBpZGVudGlmeWlu
ZyBpbmZvcm1hdGlvbi4gKERvbid0IGluY2x1ZGUKLSAgICAgIHRoZSBicmFja2V0cyEpICBUaGUg
dGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlCi0gICAgICBjb21tZW50
IHN5bnRheCBmb3IgdGhlIGZpbGUgZm9ybWF0LiBXZSBhbHNvIHJlY29tbWVuZCB0aGF0IGEKLSAg
ICAgIGZpbGUgb3IgY2xhc3MgbmFtZSBhbmQgZGVzY3JpcHRpb24gb2YgcHVycG9zZSBiZSBpbmNs
dWRlZCBvbiB0aGUKLSAgICAgIHNhbWUgInByaW50ZWQgcGFnZSIgYXMgdGhlIGNvcHlyaWdodCBu
b3RpY2UgZm9yIGVhc2llcgotICAgICAgaWRlbnRpZmljYXRpb24gd2l0aGluIHRoaXJkLXBhcnR5
IGFyY2hpdmVzLgotCi0gICBDb3B5cmlnaHQgWzIwMDddIE5lYWwgTm9yd2l0egotICAgUG9ydGlv
bnMgQ29weXJpZ2h0IFsyMDA3XSBHb29nbGUgSW5jLgotCi0gICBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
LSAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0KLSAgIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
LSAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCi0gICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAgIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0
cy9nZW5lcmF0b3IvUkVBRE1FIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1F
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmY5NTk3NGI2MGIuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9SRUFETUUKKysrIC9kZXYvbnVs
bApAQCAtMSwzNSArMCwwIEBACi0KLVRoZSBHb29nbGUgTW9jayBjbGFzcyBnZW5lcmF0b3IgaXMg
YW4gYXBwbGljYXRpb24gdGhhdCBpcyBwYXJ0IG9mIGNwcGNsZWFuLgotRm9yIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgY3BwY2xlYW4sIHNlZSB0aGUgUkVBRE1FLmNwcGNsZWFuIGZpbGUgb3IKLXZp
c2l0IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jcHBjbGVhbi8KLQotY3BwY2xlYW4gcmVxdWly
ZXMgUHl0aG9uIDIuMy41IG9yIGxhdGVyLiAgSWYgeW91IGRvbid0IGhhdmUgUHl0aG9uIGluc3Rh
bGxlZAotb24geW91ciBzeXN0ZW0sIHlvdSB3aWxsIGFsc28gbmVlZCB0byBpbnN0YWxsIGl0LiAg
WW91IGNhbiBkb3dubG9hZCBQeXRob24KLWZyb206ICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93
bmxvYWQvcmVsZWFzZXMvCi0KLVRvIHVzZSB0aGUgR29vZ2xlIE1vY2sgY2xhc3MgZ2VuZXJhdG9y
LCB5b3UgbmVlZCB0byBjYWxsIGl0Ci1vbiB0aGUgY29tbWFuZCBsaW5lIHBhc3NpbmcgdGhlIGhl
YWRlciBmaWxlIGFuZCBjbGFzcyBmb3Igd2hpY2ggeW91IHdhbnQKLXRvIGdlbmVyYXRlIGEgR29v
Z2xlIE1vY2sgY2xhc3MuCi0KLU1ha2Ugc3VyZSB0byBpbnN0YWxsIHRoZSBzY3JpcHRzIHNvbWV3
aGVyZSBpbiB5b3VyIHBhdGguICBUaGVuIHlvdSBjYW4KLXJ1biB0aGUgcHJvZ3JhbS4KLQotICBn
bW9ja19nZW4ucHkgaGVhZGVyLWZpbGUuaCBbQ2xhc3NOYW1lXS4uLgotCi1JZiBubyBDbGFzc05h
bWVzIGFyZSBzcGVjaWZpZWQsIGFsbCBjbGFzc2VzIGluIHRoZSBmaWxlIGFyZSBlbWl0dGVkLgot
Ci1UbyBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIGZyb20gdGhlIGRlZmF1bHQgb2YgMiwgc2V0IElO
REVOVCBpbgotdGhlIGVudmlyb25tZW50LiAgRm9yIGV4YW1wbGUgdG8gdXNlIGFuIGluZGVudCBv
ZiA0IHNwYWNlczoKLQotSU5ERU5UPTQgZ21vY2tfZ2VuLnB5IGhlYWRlci1maWxlLmggQ2xhc3NO
YW1lCi0KLVRoaXMgdmVyc2lvbiB3YXMgbWFkZSBmcm9tIFNWTiByZXZpc2lvbiAyODEgaW4gdGhl
IGNwcGNsZWFuIHJlcG9zaXRvcnkuCi0KLUtub3duIExpbWl0YXRpb25zCi0tLS0tLS0tLS0tLS0t
LS0tLQotTm90IGFsbCBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIHByb3Blcmx5LiAgRm9yIGV4YW1w
bGUsIHdoZW4gbW9ja2luZyB0ZW1wbGF0ZWQKLWNsYXNzZXMsIHRoZSB0ZW1wbGF0ZSBpbmZvcm1h
dGlvbiBpcyBsb3N0LiAgWW91IHdpbGwgbmVlZCB0byBhZGQgdGhlIHRlbXBsYXRlCi1pbmZvcm1h
dGlvbiBtYW51YWxseS4KLQotTm90IGFsbCBwZXJtdXRhdGlvbnMgb2YgdXNpbmcgbXVsdGlwbGUg
cG9pbnRlcnMvcmVmZXJlbmNlcyB3aWxsIGJlIHJlbmRlcmVkCi1wcm9wZXJseS4gIFRoZXNlIHdp
bGwgYWxzbyBoYXZlIHRvIGJlIGZpeGVkIG1hbnVhbGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svc2NyaXB0cy9nZW5lcmF0b3IvUkVBRE1FLmNwcGNsZWFuIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0
cy9nZW5lcmF0b3IvUkVBRE1FLmNwcGNsZWFuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2NTQzMWI2MTc1OTMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dl
bmVyYXRvci9SRUFETUUuY3BwY2xlYW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAot
R29hbDoKLS0tLS0tCi0gIENwcENsZWFuIGF0dGVtcHRzIHRvIGZpbmQgcHJvYmxlbXMgaW4gQysr
IHNvdXJjZSB0aGF0IHNsb3cgZGV2ZWxvcG1lbnQKLSAgaW4gbGFyZ2UgY29kZSBiYXNlcywgZm9y
IGV4YW1wbGUgdmFyaW91cyBmb3JtcyBvZiB1bnVzZWQgY29kZS4KLSAgVW51c2VkIGNvZGUgY2Fu
IGJlIHVudXNlZCBmdW5jdGlvbnMsIG1ldGhvZHMsIGRhdGEgbWVtYmVycywgdHlwZXMsIGV0Ywot
ICB0byB1bm5lY2Vzc2FyeSAjaW5jbHVkZSBkaXJlY3RpdmVzLiAgVW5uZWNlc3NhcnkgI2luY2x1
ZGVzIGNhbiBjYXVzZQotICBjb25zaWRlcmFibGUgZXh0cmEgY29tcGlsZXMgaW5jcmVhc2luZyB0
aGUgZWRpdC1jb21waWxlLXJ1biBjeWNsZS4KLQotICBUaGUgcHJvamVjdCBob21lIHBhZ2UgaXM6
ICAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NwcGNsZWFuLwotCi0KLUZlYXR1cmVzOgotLS0t
LS0tLS0tCi0gKiBGaW5kIGFuZCBwcmludCBDKysgbGFuZ3VhZ2UgY29uc3RydWN0czogY2xhc3Nl
cywgbWV0aG9kcywgZnVuY3Rpb25zLCBldGMuCi0gKiBGaW5kIGNsYXNzZXMgd2l0aCB2aXJ0dWFs
IG1ldGhvZHMsIG5vIHZpcnR1YWwgZGVzdHJ1Y3RvciwgYW5kIG5vIGJhc2VzCi0gKiBGaW5kIGds
b2JhbC9zdGF0aWMgZGF0YSB0aGF0IGFyZSBwb3RlbnRpYWwgcHJvYmxlbXMgd2hlbiB1c2luZyB0
aHJlYWRzCi0gKiBVbm5lY2Vzc2FyeSBmb3J3YXJkIGNsYXNzIGRlY2xhcmF0aW9ucwotICogVW5u
ZWNlc3NhcnkgZnVuY3Rpb24gZGVjbGFyYXRpb25zCi0gKiBVbmRlY2xhcmVkIGZ1bmN0aW9uIGRl
ZmluaXRpb25zCi0gKiAocGxhbm5lZCkgRmluZCB1bm5lY2Vzc2FyeSBoZWFkZXIgZmlsZXMgI2lu
Y2x1ZGVkCi0gICAtIE5vIGRpcmVjdCByZWZlcmVuY2UgdG8gYW55dGhpbmcgaW4gdGhlIGhlYWRl
cgotICAgLSBIZWFkZXIgaXMgdW5uZWNlc3NhcnkgaWYgY2xhc3NlcyB3ZXJlIGZvcndhcmQgZGVj
bGFyZWQgaW5zdGVhZAotICogKHBsYW5uZWQpIFNvdXJjZSBmaWxlcyB0aGF0IHJlZmVyZW5jZSBo
ZWFkZXJzIG5vdCBkaXJlY3RseSAjaW5jbHVkZWQsCi0gICBpZSwgZmlsZXMgdGhhdCByZWx5IG9u
IGEgdHJhbnNpdGl2ZSAjaW5jbHVkZSBmcm9tIGFub3RoZXIgaGVhZGVyCi0gKiAocGxhbm5lZCkg
VW51c2VkIG1lbWJlcnMgKHByaXZhdGUsIHByb3RlY3RlZCwgJiBwdWJsaWMpIG1ldGhvZHMgYW5k
IGRhdGEKLSAqIChwbGFubmVkKSBTdG9yZSBBU1QgaW4gYSBTUUwgZGF0YWJhc2Ugc28gcmVsYXRp
b25zaGlwcyBjYW4gYmUgcXVlcmllZAotCi1BU1QgaXMgQWJzdHJhY3QgU3ludGF4IFRyZWUsIGEg
cmVwcmVzZW50YXRpb24gb2YgcGFyc2VkIHNvdXJjZSBjb2RlLgotaHR0cDovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9BYnN0cmFjdF9zeW50YXhfdHJlZQotCi0KLVN5c3RlbSBSZXF1aXJlbWVudHM6
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogUHl0aG9uIDIuNCBvciBsYXRlciAoMi4zIHByb2Jh
Ymx5IHdvcmtzIHRvbykKLSAqIFdvcmtzIG9uIFdpbmRvd3MgKHVudGVzdGVkKSwgTWFjIE9TIFgs
IGFuZCBVbml4Ci0KLQotSG93IHRvIFJ1bjoKLS0tLS0tLS0tLS0tCi0gIEZvciBhbGwgZXhhbXBs
ZXMsIGl0IGlzIGFzc3VtZWQgdGhhdCBjcHBjbGVhbiByZXNpZGVzIGluIGEgZGlyZWN0b3J5IGNh
bGxlZAotICAvY3BwY2xlYW4uCi0KLSAgVG8gcHJpbnQgd2FybmluZ3MgZm9yIGNsYXNzZXMgd2l0
aCB2aXJ0dWFsIG1ldGhvZHMsIG5vIHZpcnR1YWwgZGVzdHJ1Y3RvciBhbmQKLSAgbm8gYmFzZSBj
bGFzc2VzOgotCi0gICAgICAvY3BwY2xlYW4vcnVuLnNoIG5vbnZpcnR1YWxfZHRvcnMucHkgZmls
ZTEuaCBmaWxlMi5oIGZpbGUzLmNjIC4uLgotCi0gIFRvIHByaW50IGFsbCB0aGUgZnVuY3Rpb25z
IGRlZmluZWQgaW4gaGVhZGVyIGZpbGUocyk6Ci0KLSAgICAgIC9jcHBjbGVhbi9ydW4uc2ggZnVu
Y3Rpb25zLnB5IGZpbGUxLmggZmlsZTIuaCAuLi4KLQotICBBbGwgdGhlIGNvbW1hbmRzIHRha2Ug
bXVsdGlwbGUgZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZS4gIE90aGVyIHByb2dyYW1zCi0gIGlu
Y2x1ZGU6IGZpbmRfd2FybmluZ3MsIGhlYWRlcnMsIG1ldGhvZHMsIGFuZCB0eXBlcy4gIFNvbWUg
b3RoZXIgcHJvZ3JhbXMKLSAgYXJlIGF2YWlsYWJsZSwgYnV0IHVzZWQgcHJpbWFyaWx5IGZvciBk
ZWJ1Z2dpbmcuCi0KLSAgcnVuLnNoIGlzIGEgc2ltcGxlIHdyYXBwZXIgdGhhdCBzZXRzIFBZVEhP
TlBBVEggdG8gL2NwcGNsZWFuIGFuZCB0aGVuCi0gIHJ1bnMgdGhlIHByb2dyYW0gaW4gL2NwcGNs
ZWFuL2NwcC9QUk9HUkFNLnB5LiAgVGhlcmUgaXMgY3VycmVudGx5Ci0gIG5vIGVxdWl2YWxlbnQg
Zm9yIFdpbmRvd3MuICBDb250cmlidXRpb25zIGZvciBhIHJ1bi5iYXQgZmlsZQotICB3b3VsZCBi
ZSBncmVhdGx5IGFwcHJlY2lhdGVkLgotCi0KLUhvdyB0byBDb25maWd1cmU6Ci0tLS0tLS0tLS0t
LS0tLS0tLQotICBZb3UgY2FuIGFkZCBhIHNpdGVoZWFkZXJzLnB5IGZpbGUgaW4gL2NwcGNsZWFu
L2NwcCB0byBjb25maWd1cmUgd2hlcmUKLSAgdG8gbG9vayBmb3Igb3RoZXIgaGVhZGVycyAodHlw
aWNhbGx5IC1JIG9wdGlvbnMgcGFzc2VkIHRvIGEgY29tcGlsZXIpLgotICBDdXJyZW50bHkgdHdv
IHZhbHVlcyBhcmUgc3VwcG9ydGVkOiAgX1RSQU5TSVRJVkUgYW5kIEdldEluY2x1ZGVEaXJzLgot
ICBfVFJBTlNJVElWRSBzaG91bGQgYmUgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSAoVHJ1ZSBvciBG
YWxzZSkgaW5kaWNhdGluZwotICB3aGV0aGVyIHRvIHRyYW5zaXRpdmVseSBwcm9jZXNzIGFsbCBo
ZWFkZXIgZmlsZXMuICBUaGUgZGVmYXVsdCBpcyBGYWxzZS4KLQotICBHZXRJbmNsdWRlRGlycyBp
cyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgYW5kIHJldHVybnMKLSAg
YSBzZXF1ZW5jZSBvZiBkaXJlY3RvcmllcyB0byBpbmNsdWRlLiAgVGhpcyBjYW4gYmUgYSBnZW5l
cmF0b3Igb3IKLSAgcmV0dXJuIGEgc3RhdGljIGxpc3QuCi0KLSAgICAgIGRlZiBHZXRJbmNsdWRl
RGlycyhmaWxlbmFtZSk6Ci0gICAgICAgICAgcmV0dXJuIFsnL3NvbWUvcGF0aC93aXRoL290aGVy
L2hlYWRlcnMnXQotCi0gICAgICAjIEhlcmUgaXMgYSBtb3JlIGNvbXBsaWNhdGVkIGV4YW1wbGUu
Ci0gICAgICBkZWYgR2V0SW5jbHVkZURpcnMoZmlsZW5hbWUpOgotICAgICAgICAgIHlpZWxkICcv
cGF0aDEnCi0gICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKCcvcGF0aDInLCBvcy5wYXRoLmRp
cm5hbWUoZmlsZW5hbWUpKQotICAgICAgICAgIHlpZWxkICcvcGF0aDMnCi0KLQotSG93IHRvIFRl
c3Q6Ci0tLS0tLS0tLS0tLS0KLSAgRm9yIGFsbCBleGFtcGxlcywgaXQgaXMgYXNzdW1lZCB0aGF0
IGNwcGNsZWFuIHJlc2lkZXMgaW4gYSBkaXJlY3RvcnkgY2FsbGVkCi0gIC9jcHBjbGVhbi4gIFRo
ZSB0ZXN0cyByZXF1aXJlCi0KLSAgY2QgL2NwcGNsZWFuCi0gIG1ha2UgdGVzdAotICAjIFRvIGdl
bmVyYXRlIGV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIgYSBjaGFuZ2U6Ci0gIG1ha2UgZXhwZWN0ZWQK
LQotCi1DdXJyZW50IFN0YXR1czoKLS0tLS0tLS0tLS0tLS0tLQotICBUaGUgcGFyc2VyIHdvcmtz
IHByZXR0eSB3ZWxsIGZvciBoZWFkZXIgZmlsZXMsIHBhcnNpbmcgYWJvdXQgOTklIG9mIEdvb2ds
ZSdzCi0gIGhlYWRlciBmaWxlcy4gIEFueXRoaW5nIHdoaWNoIGluc3BlY3RzIHN0cnVjdHVyZSBv
ZiBDKysgc291cmNlIGZpbGVzIHNob3VsZAotICB3b3JrIHJlYXNvbmFibHkgd2VsbC4gIEZ1bmN0
aW9uIGJvZGllcyBhcmUgbm90IHRyYW5zZm9ybWVkIHRvIGFuIEFTVCwKLSAgYnV0IGxlZnQgYXMg
dG9rZW5zLiAgTXVjaCB3b3JrIGlzIHN0aWxsIG5lZWRlZCBvbiBmaW5kaW5nIHVudXNlZCBoZWFk
ZXIgZmlsZXMKLSAgYW5kIHN0b3JpbmcgYW4gQVNUIGluIGEgZGF0YWJhc2UuCi0KLQotTm9uLWdv
YWxzOgotLS0tLS0tLS0tLQotICogUGFyc2luZyBhbGwgdmFsaWQgQysrIHNvdXJjZQotICogSGFu
ZGxpbmcgaW52YWxpZCBDKysgc291cmNlIGdyYWNlZnVsbHkKLSAqIENvbXBpbGluZyB0byBtYWNo
aW5lIGNvZGUgKG9yIGFueXRoaW5nIGJleW9uZCBhbiBBU1QpCi0KLQotQ29udGFjdDoKLS0tLS0t
LS0tCi0gIElmIHlvdSB1c2VkIGNwcGNsZWFuLCBJIHdvdWxkIGxvdmUgdG8gaGVhciBhYm91dCB5
b3VyIGV4cGVyaWVuY2VzCi0gIGNwcGNsZWFuQGdvb2dsZWdyb3Vwcy5jb20uICBFdmVuIGlmIHlv
dSBkb24ndCB1c2UgY3BwY2xlYW4sIEknZCBsaWtlIHRvCi0gIGhlYXIgZnJvbSB5b3UuICA6LSkg
IChZb3UgY2FuIGNvbnRhY3QgbWUgZGlyZWN0bHkgYXQ6ICBubm9yd2l0ekBnbWFpbC5jb20pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvYXN0LnB5IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2FzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMTFjYmU5MTI2YWY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
c2NyaXB0cy9nZW5lcmF0b3IvY3BwL2FzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MzMgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3IE5lYWwgTm9y
d2l0egotIyBQb3J0aW9ucyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgotIwotIyBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
LSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMK
LSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAot
IyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotIiIiR2VuZXJhdGUgYW4gQWJzdHJh
Y3QgU3ludGF4IFRyZWUgKEFTVCkgZm9yIEMrKy4iIiIKLQotX19hdXRob3JfXyA9ICdubm9yd2l0
ekBnb29nbGUuY29tIChOZWFsIE5vcndpdHopJwotCi0KLSMgVE9ETzoKLSMgICogVG9rZW5zIHNo
b3VsZCBuZXZlciBiZSBleHBvcnRlZCwgbmVlZCB0byBjb252ZXJ0IHRvIE5vZGVzCi0jICAgIChy
ZXR1cm4gdHlwZXMsIHBhcmFtZXRlcnMsIGV0Yy4pCi0jICAqIEhhbmRsZSBzdGF0aWMgY2xhc3Mg
ZGF0YSBmb3IgdGVtcGxhdGl6ZWQgY2xhc3NlcwotIyAgKiBIYW5kbGUgY2FzdHMgKGJvdGggQysr
IGFuZCBDLXN0eWxlKQotIyAgKiBIYW5kbGUgY29uZGl0aW9ucyBhbmQgbG9vcHMgKGlmL2Vsc2Us
IHN3aXRjaCwgZm9yLCB3aGlsZS9kbykKLSMKLSMgVE9ETyBtdWNoLCBtdWNoIGxhdGVyOgotIyAg
KiBIYW5kbGUgI2RlZmluZQotIyAgKiBleGNlcHRpb25zCi0KLQotdHJ5OgotICAgICMgUHl0aG9u
IDMueAotICAgIGltcG9ydCBidWlsdGlucwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgUHl0
aG9uIDIueAotICAgIGltcG9ydCBfX2J1aWx0aW5fXyBhcyBidWlsdGlucwotCi1pbXBvcnQgc3lz
Ci1pbXBvcnQgdHJhY2ViYWNrCi0KLWZyb20gY3BwIGltcG9ydCBrZXl3b3JkcwotZnJvbSBjcHAg
aW1wb3J0IHRva2VuaXplCi1mcm9tIGNwcCBpbXBvcnQgdXRpbHMKLQotCi1pZiBub3QgaGFzYXR0
cihidWlsdGlucywgJ3JldmVyc2VkJyk6Ci0gICAgIyBTdXBwb3J0IFB5dGhvbiAyLjMgYW5kIGVh
cmxpZXIuCi0gICAgZGVmIHJldmVyc2VkKHNlcSk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxl
bihzZXEpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgICB5aWVsZCBzZXFbaV0KLQotaWYgbm90IGhh
c2F0dHIoYnVpbHRpbnMsICduZXh0Jyk6Ci0gICAgIyBTdXBwb3J0IFB5dGhvbiAyLjUgYW5kIGVh
cmxpZXIuCi0gICAgZGVmIG5leHQob2JqKToKLSAgICAgICAgcmV0dXJuIG9iai5uZXh0KCkKLQot
Ci1WSVNJQklMSVRZX1BVQkxJQywgVklTSUJJTElUWV9QUk9URUNURUQsIFZJU0lCSUxJVFlfUFJJ
VkFURSA9IHJhbmdlKDMpCi0KLUZVTkNUSU9OX05PTkUgPSAweDAwCi1GVU5DVElPTl9DT05TVCA9
IDB4MDEKLUZVTkNUSU9OX1ZJUlRVQUwgPSAweDAyCi1GVU5DVElPTl9QVVJFX1ZJUlRVQUwgPSAw
eDA0Ci1GVU5DVElPTl9DVE9SID0gMHgwOAotRlVOQ1RJT05fRFRPUiA9IDB4MTAKLUZVTkNUSU9O
X0FUVFJJQlVURSA9IDB4MjAKLUZVTkNUSU9OX1VOS05PV05fQU5OT1RBVElPTiA9IDB4NDAKLUZV
TkNUSU9OX1RIUk9XID0gMHg4MAotRlVOQ1RJT05fT1ZFUlJJREUgPSAweDEwMAotCi0iIiIKLVRo
ZXNlIGFyZSBjdXJyZW50bHkgdW51c2VkLiAgU2hvdWxkIHJlYWxseSBoYW5kbGUgdGhlc2UgcHJv
cGVybHkgYXQgc29tZSBwb2ludC4KLQotVFlQRV9NT0RJRklFUl9JTkxJTkUgICA9IDB4MDEwMDAw
Ci1UWVBFX01PRElGSUVSX0VYVEVSTiAgID0gMHgwMjAwMDAKLVRZUEVfTU9ESUZJRVJfU1RBVElD
ICAgPSAweDA0MDAwMAotVFlQRV9NT0RJRklFUl9DT05TVCAgICA9IDB4MDgwMDAwCi1UWVBFX01P
RElGSUVSX1JFR0lTVEVSID0gMHgxMDAwMDAKLVRZUEVfTU9ESUZJRVJfVk9MQVRJTEUgPSAweDIw
MDAwMAotVFlQRV9NT0RJRklFUl9NVVRBQkxFICA9IDB4NDAwMDAwCi0KLVRZUEVfTU9ESUZJRVJf
TUFQID0gewotICAgICdpbmxpbmUnOiBUWVBFX01PRElGSUVSX0lOTElORSwKLSAgICAnZXh0ZXJu
JzogVFlQRV9NT0RJRklFUl9FWFRFUk4sCi0gICAgJ3N0YXRpYyc6IFRZUEVfTU9ESUZJRVJfU1RB
VElDLAotICAgICdjb25zdCc6IFRZUEVfTU9ESUZJRVJfQ09OU1QsCi0gICAgJ3JlZ2lzdGVyJzog
VFlQRV9NT0RJRklFUl9SRUdJU1RFUiwKLSAgICAndm9sYXRpbGUnOiBUWVBFX01PRElGSUVSX1ZP
TEFUSUxFLAotICAgICdtdXRhYmxlJzogVFlQRV9NT0RJRklFUl9NVVRBQkxFLAotICAgIH0KLSIi
IgotCi1fSU5URVJOQUxfVE9LRU4gPSAnaW50ZXJuYWwnCi1fTkFNRVNQQUNFX1BPUCA9ICducy1w
b3AnCi0KLQotIyBUT0RPKG5ub3J3aXR6KTogdXNlIHRoaXMgYXMgYSBzaW5nbGV0b24gZm9yIHRl
bXBsYXRlZF90eXBlcywgZXRjCi0jIHdoZXJlIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlIGEgbmV3
IGVtcHR5IGRpY3QgZWFjaCB0aW1lLiAgSXQgaXMgYWxzbyBjb25zdC4KLWNsYXNzIF9OdWxsRGlj
dChvYmplY3QpOgotICAgIF9fY29udGFpbnNfXyA9IGxhbWJkYSBzZWxmOiBGYWxzZQotICAgIGtl
eXMgPSB2YWx1ZXMgPSBpdGVtcyA9IGl0ZXJrZXlzID0gaXRlcnZhbHVlcyA9IGl0ZXJpdGVtcyA9
IGxhbWJkYSBzZWxmOiAoKQotCi0KLSMgVE9ETyhubm9yd2l0eik6IG1vdmUgQVNUIG5vZGVzIGlu
dG8gYSBzZXBhcmF0ZSBtb2R1bGUuCi1jbGFzcyBOb2RlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBB
U1Qgbm9kZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kKToKLSAgICAg
ICAgc2VsZi5zdGFydCA9IHN0YXJ0Ci0gICAgICAgIHNlbGYuZW5kID0gZW5kCi0KLSAgICBkZWYg
SXNEZWNsYXJhdGlvbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBib29sIGlmIHRoaXMgbm9k
ZSBpcyBhIGRlY2xhcmF0aW9uLiIiIgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBJ
c0RlZmluaXRpb24oc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYm9vbCBpZiB0aGlzIG5vZGUg
aXMgYSBkZWZpbml0aW9uLiIiIgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBJc0V4
cG9ydGFibGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYm9vbCBpZiB0aGlzIG5vZGUgZXhw
b3J0YWJsZSBmcm9tIGEgaGVhZGVyIGZpbGUuIiIiCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgZGVmIFJlcXVpcmVzKHNlbGYsIG5vZGUpOgotICAgICAgICAiIiJEb2VzIHRoaXMgQVNUIG5v
ZGUgcmVxdWlyZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbm9kZSBwYXNzZWQgaW4/IiIiCi0gICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIFhYWF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcnKQotCi0g
ICAgZGVmIF9TdHJpbmdIZWxwZXIoc2VsZiwgbmFtZSwgc3VmZml4KToKLSAgICAgICAgaWYgbm90
IHV0aWxzLkRFQlVHOgotICAgICAgICAgICAgcmV0dXJuICclcyglcyknICUgKG5hbWUsIHN1ZmZp
eCkKLSAgICAgICAgcmV0dXJuICclcyglZCwgJWQsICVzKScgJSAobmFtZSwgc2VsZi5zdGFydCwg
c2VsZi5lbmQsIHN1ZmZpeCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIHN0cihzZWxmKQotCi0KLWNsYXNzIERlZmluZShOb2RlKToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgZGVmaW5pdGlvbik6Ci0gICAgICAgIE5vZGUuX19pbml0
X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBz
ZWxmLmRlZmluaXRpb24gPSBkZWZpbml0aW9uCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAg
ICAgICAgdmFsdWUgPSAnJXMgJXMnICUgKHNlbGYubmFtZSwgc2VsZi5kZWZpbml0aW9uKQotICAg
ICAgICByZXR1cm4gc2VsZi5fU3RyaW5nSGVscGVyKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB2
YWx1ZSkKLQotCi1jbGFzcyBJbmNsdWRlKE5vZGUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBz
dGFydCwgZW5kLCBmaWxlbmFtZSwgc3lzdGVtKToKLSAgICAgICAgTm9kZS5fX2luaXRfXyhzZWxm
LCBzdGFydCwgZW5kKQotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAg
c2VsZi5zeXN0ZW0gPSBzeXN0ZW0KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBm
bXQgPSAnIiVzIicKLSAgICAgICAgaWYgc2VsZi5zeXN0ZW06Ci0gICAgICAgICAgICBmbXQgPSAn
PCVzPicKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5f
X25hbWVfXywgZm10ICUgc2VsZi5maWxlbmFtZSkKLQotCi1jbGFzcyBHb3RvKE5vZGUpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBsYWJlbCk6Ci0gICAgICAgIE5vZGUuX19p
bml0X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5sYWJlbCA9IGxhYmVsCi0KLSAg
ICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYubGFiZWwpKQotCi0KLWNsYXNzIEV4cHIo
Tm9kZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIGV4cHIpOgotICAgICAg
ICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQpCi0gICAgICAgIHNlbGYuZXhwciA9IGV4
cHIKLQotICAgIGRlZiBSZXF1aXJlcyhzZWxmLCBub2RlKToKLSAgICAgICAgIyBUT0RPKG5ub3J3
aXR6KTogaW1wbC4KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25h
bWVfXywgc3RyKHNlbGYuZXhwcikpCi0KLQotY2xhc3MgUmV0dXJuKEV4cHIpOgotICAgIHBhc3MK
LQotCi1jbGFzcyBEZWxldGUoRXhwcik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEZyaWVuZChFeHBy
KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgZXhwciwgbmFtZXNwYWNlKToK
LSAgICAgICAgRXhwci5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBleHByKQotICAgICAgICBz
ZWxmLm5hbWVzcGFjZSA9IG5hbWVzcGFjZVs6XQotCi0KLWNsYXNzIFVzaW5nKE5vZGUpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lcyk6Ci0gICAgICAgIE5vZGUuX19p
bml0X18oc2VsZiwgc3RhcnQsIGVuZCkKLSAgICAgICAgc2VsZi5uYW1lcyA9IG5hbWVzCi0KLSAg
ICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihz
ZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYubmFtZXMpKQotCi0KLWNsYXNzIFBhcmFt
ZXRlcihOb2RlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgcGFy
YW1ldGVyX3R5cGUsIGRlZmF1bHQpOgotICAgICAgICBOb2RlLl9faW5pdF9fKHNlbGYsIHN0YXJ0
LCBlbmQpCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi50eXBlID0gcGFy
YW1ldGVyX3R5cGUKLSAgICAgICAgc2VsZi5kZWZhdWx0ID0gZGVmYXVsdAotCi0gICAgZGVmIFJl
cXVpcmVzKHNlbGYsIG5vZGUpOgotICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgbmFt
ZXNwYWNlcywgZXRjLgotICAgICAgICByZXR1cm4gc2VsZi50eXBlLm5hbWUgPT0gbm9kZS5uYW1l
Ci0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgbmFtZSA9IHN0cihzZWxmLnR5cGUp
Ci0gICAgICAgIHN1ZmZpeCA9ICclcyAlcycgJSAobmFtZSwgc2VsZi5uYW1lKQotICAgICAgICBp
ZiBzZWxmLmRlZmF1bHQ6Ci0gICAgICAgICAgICBzdWZmaXggKz0gJyA9ICcgKyAnJy5qb2luKFtk
Lm5hbWUgZm9yIGQgaW4gc2VsZi5kZWZhdWx0XSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX1N0cmlu
Z0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VmZml4KQotCi0KLWNsYXNzIF9HZW5l
cmljRGVjbGFyYXRpb24oTm9kZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQs
IG5hbWUsIG5hbWVzcGFjZSk6Ci0gICAgICAgIE5vZGUuX19pbml0X18oc2VsZiwgc3RhcnQsIGVu
ZCkKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLm5hbWVzcGFjZSA9IG5h
bWVzcGFjZVs6XQotCi0gICAgZGVmIEZ1bGxOYW1lKHNlbGYpOgotICAgICAgICBwcmVmaXggPSAn
JwotICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSBhbmQgc2VsZi5uYW1lc3BhY2VbLTFdOgotICAg
ICAgICAgICAgcHJlZml4ID0gJzo6Jy5qb2luKHNlbGYubmFtZXNwYWNlKSArICc6OicKLSAgICAg
ICAgcmV0dXJuIHByZWZpeCArIHNlbGYubmFtZQotCi0gICAgZGVmIF9UeXBlU3RyaW5nSGVscGVy
KHNlbGYsIHN1ZmZpeCk6Ci0gICAgICAgIGlmIHNlbGYubmFtZXNwYWNlOgotICAgICAgICAgICAg
bmFtZXMgPSBbbiBvciAnPGFub255bW91cz4nIGZvciBuIGluIHNlbGYubmFtZXNwYWNlXQotICAg
ICAgICAgICAgc3VmZml4ICs9ICcgaW4gJyArICc6Oicuam9pbihuYW1lcykKLSAgICAgICAgcmV0
dXJuIHNlbGYuX1N0cmluZ0hlbHBlcihzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VmZml4KQot
Ci0KLSMgVE9ETyhubm9yd2l0eik6IG1lcmdlIHdpdGggUGFyYW1ldGVyIGluIHNvbWUgd2F5Pwot
Y2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbihfR2VuZXJpY0RlY2xhcmF0aW9uKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgdmFyX3R5cGUsIGluaXRpYWxfdmFsdWUs
IG5hbWVzcGFjZSk6Ci0gICAgICAgIF9HZW5lcmljRGVjbGFyYXRpb24uX19pbml0X18oc2VsZiwg
c3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNlKQotICAgICAgICBzZWxmLnR5cGUgPSB2YXJfdHlw
ZQotICAgICAgICBzZWxmLmluaXRpYWxfdmFsdWUgPSBpbml0aWFsX3ZhbHVlCi0KLSAgICBkZWYg
UmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgICMgVE9ETyhubm9yd2l0eik6IGhhbmRsZSBu
YW1lc3BhY2VzLCBldGMuCi0gICAgICAgIHJldHVybiBzZWxmLnR5cGUubmFtZSA9PSBub2RlLm5h
bWUKLQotICAgIGRlZiBUb1N0cmluZyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5n
IHRoYXQgdHJpZXMgdG8gcmVjb25zdGl0dXRlIHRoZSB2YXJpYWJsZSBkZWNsLiIiIgotICAgICAg
ICBzdWZmaXggPSAnJXMgJXMnICUgKHNlbGYudHlwZSwgc2VsZi5uYW1lKQotICAgICAgICBpZiBz
ZWxmLmluaXRpYWxfdmFsdWU6Ci0gICAgICAgICAgICBzdWZmaXggKz0gJyA9ICcgKyBzZWxmLmlu
aXRpYWxfdmFsdWUKLSAgICAgICAgcmV0dXJuIHN1ZmZpeAotCi0gICAgZGVmIF9fc3RyX18oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9TdHJpbmdIZWxwZXIoc2VsZi5fX2NsYXNzX18uX19u
YW1lX18sIHNlbGYuVG9TdHJpbmcoKSkKLQotCi1jbGFzcyBUeXBlZGVmKF9HZW5lcmljRGVjbGFy
YXRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBhbGlhcywg
bmFtZXNwYWNlKToKLSAgICAgICAgX0dlbmVyaWNEZWNsYXJhdGlvbi5fX2luaXRfXyhzZWxmLCBz
dGFydCwgZW5kLCBuYW1lLCBuYW1lc3BhY2UpCi0gICAgICAgIHNlbGYuYWxpYXMgPSBhbGlhcwot
Ci0gICAgZGVmIElzRGVmaW5pdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAg
IGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYg
UmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgICMgVE9ETyhubm9yd2l0eik6IGhhbmRsZSBu
YW1lc3BhY2VzLCBldGMuCi0gICAgICAgIG5hbWUgPSBub2RlLm5hbWUKLSAgICAgICAgZm9yIHRv
a2VuIGluIHNlbGYuYWxpYXM6Ci0gICAgICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZSBhbmQg
bmFtZSA9PSB0b2tlbi5uYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHN1ZmZpeCA9
ICclcywgJXMnICUgKHNlbGYubmFtZSwgc2VsZi5hbGlhcykKLSAgICAgICAgcmV0dXJuIHNlbGYu
X1R5cGVTdHJpbmdIZWxwZXIoc3VmZml4KQotCi0KLWNsYXNzIF9OZXN0ZWRUeXBlKF9HZW5lcmlj
RGVjbGFyYXRpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBm
aWVsZHMsIG5hbWVzcGFjZSk6Ci0gICAgICAgIF9HZW5lcmljRGVjbGFyYXRpb24uX19pbml0X18o
c2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNwYWNlKQotICAgICAgICBzZWxmLmZpZWxkcyA9
IGZpZWxkcwotCi0gICAgZGVmIElzRGVmaW5pdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0K
LSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgc3VmZml4ID0gJyVzLCB7JXN9JyAlIChz
ZWxmLm5hbWUsIHNlbGYuZmllbGRzKQotICAgICAgICByZXR1cm4gc2VsZi5fVHlwZVN0cmluZ0hl
bHBlcihzdWZmaXgpCi0KLQotY2xhc3MgVW5pb24oX05lc3RlZFR5cGUpOgotICAgIHBhc3MKLQot
Ci1jbGFzcyBFbnVtKF9OZXN0ZWRUeXBlKToKLSAgICBwYXNzCi0KLQotY2xhc3MgQ2xhc3MoX0dl
bmVyaWNEZWNsYXJhdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5h
bWUsIGJhc2VzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksIG5hbWVzcGFjZSk6Ci0gICAgICAgIF9H
ZW5lcmljRGVjbGFyYXRpb24uX19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgbmFtZXNw
YWNlKQotICAgICAgICBzZWxmLmJhc2VzID0gYmFzZXMKLSAgICAgICAgc2VsZi5ib2R5ID0gYm9k
eQotICAgICAgICBzZWxmLnRlbXBsYXRlZF90eXBlcyA9IHRlbXBsYXRlZF90eXBlcwotCi0gICAg
ZGVmIElzRGVjbGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmJhc2VzIGlzIE5v
bmUgYW5kIHNlbGYuYm9keSBpcyBOb25lCi0KLSAgICBkZWYgSXNEZWZpbml0aW9uKHNlbGYpOgot
ICAgICAgICByZXR1cm4gbm90IHNlbGYuSXNEZWNsYXJhdGlvbigpCi0KLSAgICBkZWYgSXNFeHBv
cnRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuSXNEZWNsYXJhdGlvbigpCi0K
LSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgICMgVE9ETyhubm9yd2l0eik6
IGhhbmRsZSBuYW1lc3BhY2VzLCBldGMuCi0gICAgICAgIGlmIHNlbGYuYmFzZXM6Ci0gICAgICAg
ICAgICBmb3IgdG9rZW5fbGlzdCBpbiBzZWxmLmJhc2VzOgotICAgICAgICAgICAgICAgICMgVE9E
Tyhubm9yd2l0eik6IGJhc2VzIGFyZSB0b2tlbnMsIGRvIG5hbWUgY29tcGFyaXNpb24uCi0gICAg
ICAgICAgICAgICAgZm9yIHRva2VuIGluIHRva2VuX2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAg
IGlmIHRva2VuLm5hbWUgPT0gbm9kZS5uYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogc2VhcmNoIGluIGJvZHkgdG9vLgot
ICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBu
YW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGlmIHNlbGYudGVtcGxhdGVkX3R5cGVzOgotICAgICAg
ICAgICAgbmFtZSArPSAnPCVzPicgJSBzZWxmLnRlbXBsYXRlZF90eXBlcwotICAgICAgICBzdWZm
aXggPSAnJXMsICVzLCAlcycgJSAobmFtZSwgc2VsZi5iYXNlcywgc2VsZi5ib2R5KQotICAgICAg
ICByZXR1cm4gc2VsZi5fVHlwZVN0cmluZ0hlbHBlcihzdWZmaXgpCi0KLQotY2xhc3MgU3RydWN0
KENsYXNzKToKLSAgICBwYXNzCi0KLQotY2xhc3MgRnVuY3Rpb24oX0dlbmVyaWNEZWNsYXJhdGlv
bik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUsIHJldHVybl90eXBl
LCBwYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIHRlbXBsYXRlZF90eXBl
cywgYm9keSwgbmFtZXNwYWNlKToKLSAgICAgICAgX0dlbmVyaWNEZWNsYXJhdGlvbi5fX2luaXRf
XyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBuYW1lc3BhY2UpCi0gICAgICAgIGNvbnZlcnRlciA9
IFR5cGVDb252ZXJ0ZXIobmFtZXNwYWNlKQotICAgICAgICBzZWxmLnJldHVybl90eXBlID0gY29u
dmVydGVyLkNyZWF0ZVJldHVyblR5cGUocmV0dXJuX3R5cGUpCi0gICAgICAgIHNlbGYucGFyYW1l
dGVycyA9IGNvbnZlcnRlci5Ub1BhcmFtZXRlcnMocGFyYW1ldGVycykKLSAgICAgICAgc2VsZi5t
b2RpZmllcnMgPSBtb2RpZmllcnMKLSAgICAgICAgc2VsZi5ib2R5ID0gYm9keQotICAgICAgICBz
ZWxmLnRlbXBsYXRlZF90eXBlcyA9IHRlbXBsYXRlZF90eXBlcwotCi0gICAgZGVmIElzRGVjbGFy
YXRpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmJvZHkgaXMgTm9uZQotCi0gICAgZGVm
IElzRGVmaW5pdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuYm9keSBpcyBub3QgTm9u
ZQotCi0gICAgZGVmIElzRXhwb3J0YWJsZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXR1cm5f
dHlwZSBhbmQgJ3N0YXRpYycgaW4gc2VsZi5yZXR1cm5fdHlwZS5tb2RpZmllcnM6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIE5vbmUgbm90IGluIHNlbGYubmFtZXNw
YWNlCi0KLSAgICBkZWYgUmVxdWlyZXMoc2VsZiwgbm9kZSk6Ci0gICAgICAgIGlmIHNlbGYucGFy
YW1ldGVyczoKLSAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IHBhcmFtZXRlcnMgYXJlIHRv
a2VucywgZG8gbmFtZSBjb21wYXJpc2lvbi4KLSAgICAgICAgICAgIGZvciBwIGluIHNlbGYucGFy
YW1ldGVyczoKLSAgICAgICAgICAgICAgICBpZiBwLm5hbWUgPT0gbm9kZS5uYW1lOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAjIFRPRE8obm5vcndpdHopOiBzZWFy
Y2ggaW4gYm9keSB0b28uCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9fc3RyX18o
c2VsZik6Ci0gICAgICAgICMgVE9ETyhubm9yd2l0eik6IGFkZCB0ZW1wbGF0ZWRfdHlwZXMuCi0g
ICAgICAgIHN1ZmZpeCA9ICgnJXMgJXMoJXMpLCAweCUwMngsICVzJyAlCi0gICAgICAgICAgICAg
ICAgICAoc2VsZi5yZXR1cm5fdHlwZSwgc2VsZi5uYW1lLCBzZWxmLnBhcmFtZXRlcnMsCi0gICAg
ICAgICAgICAgICAgICAgc2VsZi5tb2RpZmllcnMsIHNlbGYuYm9keSkpCi0gICAgICAgIHJldHVy
biBzZWxmLl9UeXBlU3RyaW5nSGVscGVyKHN1ZmZpeCkKLQotCi1jbGFzcyBNZXRob2QoRnVuY3Rp
b24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBpbl9jbGFzcywg
cmV0dXJuX3R5cGUsIHBhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgIG1vZGlmaWVycywgdGVt
cGxhdGVkX3R5cGVzLCBib2R5LCBuYW1lc3BhY2UpOgotICAgICAgICBGdW5jdGlvbi5fX2luaXRf
XyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCByZXR1cm5fdHlwZSwgcGFyYW1ldGVycywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCB0ZW1wbGF0ZWRfdHlwZXMsIGJvZHksIG5h
bWVzcGFjZSkKLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaW5fY2xhc3MgY291bGQgYWxzbyBi
ZSBhIG5hbWVzcGFjZSB3aGljaCBjYW4KLSAgICAgICAgIyBtZXNzIHVwIGZpbmRpbmcgZnVuY3Rp
b25zIHByb3Blcmx5LgotICAgICAgICBzZWxmLmluX2NsYXNzID0gaW5fY2xhc3MKLQotCi1jbGFz
cyBUeXBlKF9HZW5lcmljRGVjbGFyYXRpb24pOgotICAgICIiIlR5cGUgdXNlZCBmb3IgYW55IHZh
cmlhYmxlIChlZyBjbGFzcywgcHJpbWl0aXZlLCBzdHJ1Y3QsIGV0YykuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmll
cnMsCi0gICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgcG9pbnRlciwgYXJyYXkpOgotICAgICAg
ICAiIiIKLSAgICAgICAgQXJnczoKLSAgICAgICAgICBuYW1lOiBzdHIgbmFtZSBvZiBtYWluIHR5
cGUKLSAgICAgICAgICB0ZW1wbGF0ZWRfdHlwZXM6IFtDbGFzcyAoVHlwZT8pXSB0ZW1wbGF0ZSB0
eXBlIGluZm8gYmV0d2VlbiA8PgotICAgICAgICAgIG1vZGlmaWVyczogW3N0cl0gdHlwZSBtb2Rp
ZmllcnMgKGtleXdvcmRzKSBlZywgY29uc3QsIG11dGFibGUsIGV0Yy4KLSAgICAgICAgICByZWZl
cmVuY2UsIHBvaW50ZXIsIGFycmF5OiBib29scwotICAgICAgICAiIiIKLSAgICAgICAgX0dlbmVy
aWNEZWNsYXJhdGlvbi5fX2luaXRfXyhzZWxmLCBzdGFydCwgZW5kLCBuYW1lLCBbXSkKLSAgICAg
ICAgc2VsZi50ZW1wbGF0ZWRfdHlwZXMgPSB0ZW1wbGF0ZWRfdHlwZXMKLSAgICAgICAgaWYgbm90
IG5hbWUgYW5kIG1vZGlmaWVyczoKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IG1vZGlmaWVycy5w
b3AoKQotICAgICAgICBzZWxmLm1vZGlmaWVycyA9IG1vZGlmaWVycwotICAgICAgICBzZWxmLnJl
ZmVyZW5jZSA9IHJlZmVyZW5jZQotICAgICAgICBzZWxmLnBvaW50ZXIgPSBwb2ludGVyCi0gICAg
ICAgIHNlbGYuYXJyYXkgPSBhcnJheQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAg
IHByZWZpeCA9ICcnCi0gICAgICAgIGlmIHNlbGYubW9kaWZpZXJzOgotICAgICAgICAgICAgcHJl
Zml4ID0gJyAnLmpvaW4oc2VsZi5tb2RpZmllcnMpICsgJyAnCi0gICAgICAgIG5hbWUgPSBzdHIo
c2VsZi5uYW1lKQotICAgICAgICBpZiBzZWxmLnRlbXBsYXRlZF90eXBlczoKLSAgICAgICAgICAg
IG5hbWUgKz0gJzwlcz4nICUgc2VsZi50ZW1wbGF0ZWRfdHlwZXMKLSAgICAgICAgc3VmZml4ID0g
cHJlZml4ICsgbmFtZQotICAgICAgICBpZiBzZWxmLnJlZmVyZW5jZToKLSAgICAgICAgICAgIHN1
ZmZpeCArPSAnJicKLSAgICAgICAgaWYgc2VsZi5wb2ludGVyOgotICAgICAgICAgICAgc3VmZml4
ICs9ICcqJwotICAgICAgICBpZiBzZWxmLmFycmF5OgotICAgICAgICAgICAgc3VmZml4ICs9ICdb
XScKLSAgICAgICAgcmV0dXJuIHNlbGYuX1R5cGVTdHJpbmdIZWxwZXIoc3VmZml4KQotCi0gICAg
IyBCeSBkZWZpbml0aW9uLCBJcyogYXJlIGFsd2F5cyBGYWxzZS4gIEEgVHlwZSBjYW4gb25seSBl
eGlzdCBpbgotICAgICMgc29tZSBzb3J0IG9mIHZhcmlhYmxlIGRlY2xhcmF0aW9uLCBwYXJhbWV0
ZXIsIG9yIHJldHVybiB2YWx1ZS4KLSAgICBkZWYgSXNEZWNsYXJhdGlvbihzZWxmKToKLSAgICAg
ICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgSXNEZWZpbml0aW9uKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gRmFsc2UKLQotICAgIGRlZiBJc0V4cG9ydGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBGYWxzZQotCi0KLWNsYXNzIFR5cGVDb252ZXJ0ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lc3BhY2Vfc3RhY2spOgotICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFj
ayA9IG5hbWVzcGFjZV9zdGFjawotCi0gICAgZGVmIF9HZXRUZW1wbGF0ZUVuZChzZWxmLCB0b2tl
bnMsIHN0YXJ0KToKLSAgICAgICAgY291bnQgPSAxCi0gICAgICAgIGVuZCA9IHN0YXJ0Ci0gICAg
ICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tlbmRdCi0gICAgICAgICAg
ICBlbmQgKz0gMQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnPCc6Ci0gICAgICAgICAg
ICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1lID09ICc+JzoKLSAg
ICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgICAgICAgICAgaWYgY291bnQgPT0gMDoK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIHRva2Vuc1tzdGFydDpl
bmQtMV0sIGVuZAotCi0gICAgZGVmIFRvVHlwZShzZWxmLCB0b2tlbnMpOgotICAgICAgICAiIiJD
b252ZXJ0IFtUb2tlbiwuLi5dIHRvIFtDbGFzcyguLi4pLCBdIHVzZWZ1bCBmb3IgYmFzZSBjbGFz
c2VzLgotICAgICAgICBGb3IgZXhhbXBsZSwgY29kZSBsaWtlIGNsYXNzIEZvbyA6IHB1YmxpYyBC
YXI8eCwgeT4geyAuLi4gfTsKLSAgICAgICAgdGhlICJCYXI8eCwgeT4iIHBvcnRpb24gZ2V0cyBj
b252ZXJ0ZWQgdG8gYW4gQVNULgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgW0NsYXNz
KC4uLiksIC4uLl0KLSAgICAgICAgIiIiCi0gICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIG5h
bWVfdG9rZW5zID0gW10KLSAgICAgICAgcmVmZXJlbmNlID0gcG9pbnRlciA9IGFycmF5ID0gRmFs
c2UKLQotICAgICAgICBkZWYgQWRkVHlwZSh0ZW1wbGF0ZWRfdHlwZXMpOgotICAgICAgICAgICAg
IyBQYXJ0aXRpb24gdG9rZW5zIGludG8gbmFtZSBhbmQgbW9kaWZpZXIgdG9rZW5zLgotICAgICAg
ICAgICAgbmFtZXMgPSBbXQotICAgICAgICAgICAgbW9kaWZpZXJzID0gW10KLSAgICAgICAgICAg
IGZvciB0IGluIG5hbWVfdG9rZW5zOgotICAgICAgICAgICAgICAgIGlmIGtleXdvcmRzLklzS2V5
d29yZCh0Lm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMuYXBwZW5kKHQubmFt
ZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBl
bmQodC5uYW1lKQotICAgICAgICAgICAgbmFtZSA9ICcnLmpvaW4obmFtZXMpCi0gICAgICAgICAg
ICBpZiBuYW1lX3Rva2VuczoKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFR5cGUobmFt
ZV90b2tlbnNbMF0uc3RhcnQsIG5hbWVfdG9rZW5zWy0xXS5lbmQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWUsIHRlbXBsYXRlZF90eXBlcywgbW9kaWZpZXJzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHBvaW50ZXIsIGFycmF5
KSkKLSAgICAgICAgICAgIGRlbCBuYW1lX3Rva2Vuc1s6XQotCi0gICAgICAgIGkgPSAwCi0gICAg
ICAgIGVuZCA9IGxlbih0b2tlbnMpCi0gICAgICAgIHdoaWxlIGkgPCBlbmQ6Ci0gICAgICAgICAg
ICB0b2tlbiA9IHRva2Vuc1tpXQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnPCc6Ci0g
ICAgICAgICAgICAgICAgbmV3X3Rva2VucywgbmV3X2VuZCA9IHNlbGYuX0dldFRlbXBsYXRlRW5k
KHRva2VucywgaSsxKQotICAgICAgICAgICAgICAgIEFkZFR5cGUoc2VsZi5Ub1R5cGUobmV3X3Rv
a2VucykpCi0gICAgICAgICAgICAgICAgIyBJZiB0aGVyZSBpcyBhIGNvbW1hIGFmdGVyIHRoZSB0
ZW1wbGF0ZSwgd2UgbmVlZCB0byBjb25zdW1lCi0gICAgICAgICAgICAgICAgIyB0aGF0IGhlcmUg
b3RoZXJ3aXNlIGl0IGJlY29tZXMgcGFydCBvZiB0aGUgbmFtZS4KLSAgICAgICAgICAgICAgICBp
ID0gbmV3X2VuZAotICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHBvaW50ZXIgPSBhcnJheSA9
IEZhbHNlCi0gICAgICAgICAgICBlbGlmIHRva2VuLm5hbWUgPT0gJywnOgotICAgICAgICAgICAg
ICAgIEFkZFR5cGUoW10pCi0gICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcG9pbnRlciA9IGFy
cmF5ID0gRmFsc2UKLSAgICAgICAgICAgIGVsaWYgdG9rZW4ubmFtZSA9PSAnKic6Ci0gICAgICAg
ICAgICAgICAgcG9pbnRlciA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgdG9rZW4ubmFtZSA9PSAn
Jic6Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiB0
b2tlbi5uYW1lID09ICdbJzoKLSAgICAgICAgICAgICAgIHBvaW50ZXIgPSBUcnVlCi0gICAgICAg
ICAgICBlbGlmIHRva2VuLm5hbWUgPT0gJ10nOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZV90b2tlbnMuYXBwZW5kKHRva2VuKQot
ICAgICAgICAgICAgaSArPSAxCi0KLSAgICAgICAgaWYgbmFtZV90b2tlbnM6Ci0gICAgICAgICAg
ICAjIE5vICc8JyBpbiB0aGUgdG9rZW5zLCBqdXN0IGEgc2ltcGxlIG5hbWUgYW5kIG5vIHRlbXBs
YXRlLgotICAgICAgICAgICAgQWRkVHlwZShbXSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0g
ICAgZGVmIERlY2xhcmF0aW9uVG9QYXJ0cyhzZWxmLCBwYXJ0cywgbmVlZHNfbmFtZV9yZW1vdmVk
KToKLSAgICAgICAgbmFtZSA9IE5vbmUKLSAgICAgICAgZGVmYXVsdCA9IFtdCi0gICAgICAgIGlm
IG5lZWRzX25hbWVfcmVtb3ZlZDoKLSAgICAgICAgICAgICMgSGFuZGxlIGRlZmF1bHQgKGluaXRp
YWwpIHZhbHVlcyBwcm9wZXJseS4KLSAgICAgICAgICAgIGZvciBpLCB0IGluIGVudW1lcmF0ZShw
YXJ0cyk6Ci0gICAgICAgICAgICAgICAgaWYgdC5uYW1lID09ICc9JzoKLSAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdCA9IHBhcnRzW2krMTpdCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBw
YXJ0c1tpLTFdLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnXScgYW5kIHBh
cnRzW2ktMl0ubmFtZSA9PSAnWyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFy
dHNbaS0zXS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBpIC09IDEKLSAgICAgICAgICAg
ICAgICAgICAgcGFydHMgPSBwYXJ0c1s6aS0xXQotICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBwYXJ0c1stMV0udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5OQU1FOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFydHMucG9w
KCkubmFtZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgVE9E
Tyhubm9yd2l0eik6IHRoaXMgaXMgYSBoYWNrIHRoYXQgaGFwcGVucyBmb3IgY29kZSBsaWtlCi0g
ICAgICAgICAgICAgICAgICAgICMgUmVnaXN0ZXIoRm9vPFQ+KTsgd2hlcmUgaXQgdGhpbmtzIHRo
aXMgaXMgYSBmdW5jdGlvbiBjYWxsCi0gICAgICAgICAgICAgICAgICAgICMgYnV0IGl0J3MgYWN0
dWFsbHkgYSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICc/Pz8nCi0g
ICAgICAgIG1vZGlmaWVycyA9IFtdCi0gICAgICAgIHR5cGVfbmFtZSA9IFtdCi0gICAgICAgIG90
aGVyX3Rva2VucyA9IFtdCi0gICAgICAgIHRlbXBsYXRlZF90eXBlcyA9IFtdCi0gICAgICAgIGkg
PSAwCi0gICAgICAgIGVuZCA9IGxlbihwYXJ0cykKLSAgICAgICAgd2hpbGUgaSA8IGVuZDoKLSAg
ICAgICAgICAgIHAgPSBwYXJ0c1tpXQotICAgICAgICAgICAgaWYga2V5d29yZHMuSXNLZXl3b3Jk
KHAubmFtZSk6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzLmFwcGVuZChwLm5hbWUpCi0gICAg
ICAgICAgICBlbGlmIHAubmFtZSA9PSAnPCc6Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGVkX3Rv
a2VucywgbmV3X2VuZCA9IHNlbGYuX0dldFRlbXBsYXRlRW5kKHBhcnRzLCBpKzEpCi0gICAgICAg
ICAgICAgICAgdGVtcGxhdGVkX3R5cGVzID0gc2VsZi5Ub1R5cGUodGVtcGxhdGVkX3Rva2VucykK
LSAgICAgICAgICAgICAgICBpID0gbmV3X2VuZCAtIDEKLSAgICAgICAgICAgICAgICAjIERvbid0
IGFkZCBhIHNwdXJpb3VzIDo6IHRvIGRhdGEgbWVtYmVycyBiZWluZyBpbml0aWFsaXplZC4KLSAg
ICAgICAgICAgICAgICBuZXh0X2luZGV4ID0gaSArIDEKLSAgICAgICAgICAgICAgICBpZiBuZXh0
X2luZGV4IDwgZW5kIGFuZCBwYXJ0c1tuZXh0X2luZGV4XS5uYW1lID09ICc6Oic6Ci0gICAgICAg
ICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgZWxpZiBwLm5hbWUgaW4gKCdbJywgJ10n
LCAnPScpOgotICAgICAgICAgICAgICAgICMgVGhlc2UgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLgot
ICAgICAgICAgICAgICAgIG90aGVyX3Rva2Vucy5hcHBlbmQocCkKLSAgICAgICAgICAgIGVsaWYg
cC5uYW1lIG5vdCBpbiAoJyonLCAnJicsICc+Jyk6Ci0gICAgICAgICAgICAgICAgIyBFbnN1cmUg
dGhhdCBuYW1lcyBoYXZlIGEgc3BhY2UgYmV0d2VlbiB0aGVtLgotICAgICAgICAgICAgICAgIGlm
ICh0eXBlX25hbWUgYW5kIHR5cGVfbmFtZVstMV0udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1F
IGFuZAotICAgICAgICAgICAgICAgICAgICBwLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFNRSk6
Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZS5hcHBlbmQodG9rZW5pemUuVG9rZW4odG9r
ZW5pemUuU1lOVEFYLCAnICcsIDAsIDApKQotICAgICAgICAgICAgICAgIHR5cGVfbmFtZS5hcHBl
bmQocCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3RoZXJfdG9rZW5zLmFw
cGVuZChwKQotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIHR5cGVfbmFtZSA9ICcnLmpvaW4o
W3QubmFtZSBmb3IgdCBpbiB0eXBlX25hbWVdKQotICAgICAgICByZXR1cm4gbmFtZSwgdHlwZV9u
YW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywgZGVmYXVsdCwgb3RoZXJfdG9rZW5zCi0K
LSAgICBkZWYgVG9QYXJhbWV0ZXJzKHNlbGYsIHRva2Vucyk6Ci0gICAgICAgIGlmIG5vdCB0b2tl
bnM6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICByZXN1bHQgPSBbXQotICAgICAg
ICBuYW1lID0gdHlwZV9uYW1lID0gJycKLSAgICAgICAgdHlwZV9tb2RpZmllcnMgPSBbXQotICAg
ICAgICBwb2ludGVyID0gcmVmZXJlbmNlID0gYXJyYXkgPSBGYWxzZQotICAgICAgICBmaXJzdF90
b2tlbiA9IE5vbmUKLSAgICAgICAgZGVmYXVsdCA9IFtdCi0KLSAgICAgICAgZGVmIEFkZFBhcmFt
ZXRlcihlbmQpOgotICAgICAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBkZWwg
ZGVmYXVsdFswXSAgIyBSZW1vdmUgZmxhZy4KLSAgICAgICAgICAgIHBhcnRzID0gc2VsZi5EZWNs
YXJhdGlvblRvUGFydHModHlwZV9tb2RpZmllcnMsIFRydWUpCi0gICAgICAgICAgICAobmFtZSwg
dHlwZV9uYW1lLCB0ZW1wbGF0ZWRfdHlwZXMsIG1vZGlmaWVycywKLSAgICAgICAgICAgICB1bnVz
ZWRfZGVmYXVsdCwgdW51c2VkX290aGVyX3Rva2VucykgPSBwYXJ0cwotICAgICAgICAgICAgcGFy
YW1ldGVyX3R5cGUgPSBUeXBlKGZpcnN0X3Rva2VuLnN0YXJ0LCBmaXJzdF90b2tlbi5lbmQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lLCB0ZW1wbGF0ZWRfdHlw
ZXMsIG1vZGlmaWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVu
Y2UsIHBvaW50ZXIsIGFycmF5KQotICAgICAgICAgICAgcCA9IFBhcmFtZXRlcihmaXJzdF90b2tl
bi5zdGFydCwgZW5kLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJf
dHlwZSwgZGVmYXVsdCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocCkKLQotICAgICAgICB0
ZW1wbGF0ZV9jb3VudCA9IDAKLSAgICAgICAgZm9yIHMgaW4gdG9rZW5zOgotICAgICAgICAgICAg
aWYgbm90IGZpcnN0X3Rva2VuOgotICAgICAgICAgICAgICAgIGZpcnN0X3Rva2VuID0gcwotICAg
ICAgICAgICAgaWYgcy5uYW1lID09ICc8JzoKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9jb3Vu
dCArPSAxCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnPic6Ci0gICAgICAgICAgICAgICAg
dGVtcGxhdGVfY291bnQgLT0gMQotICAgICAgICAgICAgaWYgdGVtcGxhdGVfY291bnQgPiAwOgot
ICAgICAgICAgICAgICAgIHR5cGVfbW9kaWZpZXJzLmFwcGVuZChzKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGlmIHMubmFtZSA9PSAnLCc6Ci0gICAgICAgICAgICAg
ICAgQWRkUGFyYW1ldGVyKHMuc3RhcnQpCi0gICAgICAgICAgICAgICAgbmFtZSA9IHR5cGVfbmFt
ZSA9ICcnCi0gICAgICAgICAgICAgICAgdHlwZV9tb2RpZmllcnMgPSBbXQotICAgICAgICAgICAg
ICAgIHBvaW50ZXIgPSByZWZlcmVuY2UgPSBhcnJheSA9IEZhbHNlCi0gICAgICAgICAgICAgICAg
Zmlyc3RfdG9rZW4gPSBOb25lCi0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IFtdCi0gICAgICAg
ICAgICBlbGlmIHMubmFtZSA9PSAnKic6Ci0gICAgICAgICAgICAgICAgcG9pbnRlciA9IFRydWUK
LSAgICAgICAgICAgIGVsaWYgcy5uYW1lID09ICcmJzoKLSAgICAgICAgICAgICAgICByZWZlcmVu
Y2UgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnWyc6Ci0gICAgICAgICAgICAg
ICAgYXJyYXkgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHMubmFtZSA9PSAnXSc6Ci0gICAgICAg
ICAgICAgICAgcGFzcyAgIyBKdXN0IGRvbid0IGFkZCB0byB0eXBlX21vZGlmaWVycy4KLSAgICAg
ICAgICAgIGVsaWYgcy5uYW1lID09ICc9JzoKLSAgICAgICAgICAgICAgICAjIEdvdCBhIGRlZmF1
bHQgdmFsdWUuICBBZGQgYW55IHZhbHVlIChOb25lKSBhcyBhIGZsYWcuCi0gICAgICAgICAgICAg
ICAgZGVmYXVsdC5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgIGVsaWYgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICBkZWZhdWx0LmFwcGVuZChzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICB0eXBlX21vZGlmaWVycy5hcHBlbmQocykKLSAgICAgICAgQWRkUGFyYW1ldGVyKHRv
a2Vuc1stMV0uZW5kKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgQ3JlYXRlUmV0
dXJuVHlwZShzZWxmLCByZXR1cm5fdHlwZV9zZXEpOgotICAgICAgICBpZiBub3QgcmV0dXJuX3R5
cGVfc2VxOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgc3RhcnQgPSByZXR1cm5f
dHlwZV9zZXFbMF0uc3RhcnQKLSAgICAgICAgZW5kID0gcmV0dXJuX3R5cGVfc2VxWy0xXS5lbmQK
LSAgICAgICAgXywgbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmllcnMsIGRlZmF1bHQsIG90
aGVyX3Rva2VucyA9IFwKLSAgICAgICAgICAgc2VsZi5EZWNsYXJhdGlvblRvUGFydHMocmV0dXJu
X3R5cGVfc2VxLCBGYWxzZSkKLSAgICAgICAgbmFtZXMgPSBbbi5uYW1lIGZvciBuIGluIG90aGVy
X3Rva2Vuc10KLSAgICAgICAgcmVmZXJlbmNlID0gJyYnIGluIG5hbWVzCi0gICAgICAgIHBvaW50
ZXIgPSAnKicgaW4gbmFtZXMKLSAgICAgICAgYXJyYXkgPSAnWycgaW4gbmFtZXMKLSAgICAgICAg
cmV0dXJuIFR5cGUoc3RhcnQsIGVuZCwgbmFtZSwgdGVtcGxhdGVkX3R5cGVzLCBtb2RpZmllcnMs
Ci0gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgcG9pbnRlciwgYXJyYXkpCi0KLSAgICBk
ZWYgR2V0VGVtcGxhdGVJbmRpY2VzKHNlbGYsIG5hbWVzKToKLSAgICAgICAgIyBuYW1lcyBpcyBh
IGxpc3Qgb2Ygc3RyaW5ncy4KLSAgICAgICAgc3RhcnQgPSBuYW1lcy5pbmRleCgnPCcpCi0gICAg
ICAgIGVuZCA9IGxlbihuYW1lcykgLSAxCi0gICAgICAgIHdoaWxlIGVuZCA+IDA6Ci0gICAgICAg
ICAgICBpZiBuYW1lc1tlbmRdID09ICc+JzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICAgICAgZW5kIC09IDEKLSAgICAgICAgcmV0dXJuIHN0YXJ0LCBlbmQrMQotCi1jbGFzcyBBc3RC
dWlsZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuX3N0cmVhbSwgZmls
ZW5hbWUsIGluX2NsYXNzPScnLCB2aXNpYmlsaXR5PU5vbmUsCi0gICAgICAgICAgICAgICAgIG5h
bWVzcGFjZV9zdGFjaz1bXSk6Ci0gICAgICAgIHNlbGYudG9rZW5zID0gdG9rZW5fc3RyZWFtCi0g
ICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICAjIFRPRE8obm5vcndpdHop
OiB1c2UgYSBiZXR0ZXIgZGF0YSBzdHJ1Y3R1cmUgKGRlcXVlKSBmb3IgdGhlIHF1ZXVlLgotICAg
ICAgICAjIFN3aXRjaGluZyBkaXJlY3Rpb25zIG9mIHRoZSAicXVldWUiIGltcHJvdmVkIHBlcmYg
YnkgYWJvdXQgMjUlLgotICAgICAgICAjIFVzaW5nIGEgZGVxdWUgc2hvdWxkIGJlIGV2ZW4gYmV0
dGVyIHNpbmNlIHdlIGFjY2VzcyBmcm9tIGJvdGggc2lkZXMuCi0gICAgICAgIHNlbGYudG9rZW5f
cXVldWUgPSBbXQotICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjayA9IG5hbWVzcGFjZV9zdGFj
a1s6XQotICAgICAgICBzZWxmLmluX2NsYXNzID0gaW5fY2xhc3MKLSAgICAgICAgaWYgaW5fY2xh
c3MgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuaW5fY2xhc3NfbmFtZV9vbmx5ID0gTm9uZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pbl9jbGFzc19uYW1lX29ubHkgPSBpbl9j
bGFzcy5zcGxpdCgnOjonKVstMV0KLSAgICAgICAgc2VsZi52aXNpYmlsaXR5ID0gdmlzaWJpbGl0
eQotICAgICAgICBzZWxmLmluX2Z1bmN0aW9uID0gRmFsc2UKLSAgICAgICAgc2VsZi5jdXJyZW50
X3Rva2VuID0gTm9uZQotICAgICAgICAjIEtlZXAgdGhlIHN0YXRlIHdoZXRoZXIgd2UgYXJlIGN1
cnJlbnRseSBoYW5kbGluZyBhIHR5cGVkZWYgb3Igbm90LgotICAgICAgICBzZWxmLl9oYW5kbGlu
Z190eXBlZGVmID0gRmFsc2UKLQotICAgICAgICBzZWxmLmNvbnZlcnRlciA9IFR5cGVDb252ZXJ0
ZXIoc2VsZi5uYW1lc3BhY2Vfc3RhY2spCi0KLSAgICBkZWYgSGFuZGxlRXJyb3Ioc2VsZiwgbXNn
LCB0b2tlbik6Ci0gICAgICAgIHByaW50YWJsZV9xdWV1ZSA9IGxpc3QocmV2ZXJzZWQoc2VsZi50
b2tlbl9xdWV1ZVstMjA6XSkpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0dvdCAlcyBpbiAl
cyBAICVzICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLCBzZWxmLmZpbGVu
YW1lLCB0b2tlbiwgcHJpbnRhYmxlX3F1ZXVlKSkKLQotICAgIGRlZiBHZW5lcmF0ZShzZWxmKToK
LSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2Vu
KCkKLSAgICAgICAgICAgIGlmIG5vdCB0b2tlbjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0g
ICAgICAgICAgICAjIEdldCB0aGUgbmV4dCB0b2tlbi4KLSAgICAgICAgICAgIHNlbGYuY3VycmVu
dF90b2tlbiA9IHRva2VuCi0KLSAgICAgICAgICAgICMgRGlzcGF0Y2ggb24gdGhlIG5leHQgdG9r
ZW4gdHlwZS4KLSAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gX0lOVEVSTkFMX1RP
S0VOOgotICAgICAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gX05BTUVTUEFDRV9QT1A6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNrLnBvcCgpCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNlbGYuX0dlbmVyYXRlT25lKHRva2VuKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgICAgICAg
ICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5IYW5kbGVFcnJvcignZXhjZXB0aW9uJywg
dG9rZW4pCi0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBfQ3JlYXRlVmFyaWFibGUo
c2VsZiwgcG9zX3Rva2VuLCBuYW1lLCB0eXBlX25hbWUsIHR5cGVfbW9kaWZpZXJzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVmX3BvaW50ZXJfbmFtZV9zZXEsIHRlbXBsYXRlZF90eXBlcywg
dmFsdWU9Tm9uZSk6Ci0gICAgICAgIHJlZmVyZW5jZSA9ICcmJyBpbiByZWZfcG9pbnRlcl9uYW1l
X3NlcQotICAgICAgICBwb2ludGVyID0gJyonIGluIHJlZl9wb2ludGVyX25hbWVfc2VxCi0gICAg
ICAgIGFycmF5ID0gJ1snIGluIHJlZl9wb2ludGVyX25hbWVfc2VxCi0gICAgICAgIHZhcl90eXBl
ID0gVHlwZShwb3NfdG9rZW4uc3RhcnQsIHBvc190b2tlbi5lbmQsIHR5cGVfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlZF90eXBlcywgdHlwZV9tb2RpZmllcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIHBvaW50ZXIsIGFycmF5KQotICAgICAgICBy
ZXR1cm4gVmFyaWFibGVEZWNsYXJhdGlvbihwb3NfdG9rZW4uc3RhcnQsIHBvc190b2tlbi5lbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHZhcl90eXBlLCB2YWx1
ZSwgc2VsZi5uYW1lc3BhY2Vfc3RhY2spCi0KLSAgICBkZWYgX0dlbmVyYXRlT25lKHNlbGYsIHRv
a2VuKToKLSAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgotICAg
ICAgICAgICAgaWYgKGtleXdvcmRzLklzS2V5d29yZCh0b2tlbi5uYW1lKSBhbmQKLSAgICAgICAg
ICAgICAgICBub3Qga2V5d29yZHMuSXNCdWlsdGluVHlwZSh0b2tlbi5uYW1lKSk6Ci0gICAgICAg
ICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCAnaGFuZGxlXycgKyB0b2tlbi5uYW1lKQot
ICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2QoKQotICAgICAgICAgICAgZWxpZiB0b2tlbi5u
YW1lID09IHNlbGYuaW5fY2xhc3NfbmFtZV9vbmx5OgotICAgICAgICAgICAgICAgICMgVGhlIHRv
a2VuIG5hbWUgaXMgdGhlIHNhbWUgYXMgdGhlIGNsYXNzLCBtdXN0IGJlIGEgY3RvciBpZgotICAg
ICAgICAgICAgICAgICMgdGhlcmUgaXMgYSBwYXJlbi4gIE90aGVyd2lzZSwgaXQncyB0aGUgcmV0
dXJuIHR5cGUuCi0gICAgICAgICAgICAgICAgIyBQZWVrIGFoZWFkIHRvIGdldCB0aGUgbmV4dCB0
b2tlbiB0byBmaWd1cmUgb3V0IHdoaWNoLgotICAgICAgICAgICAgICAgIG5leHQgPSBzZWxmLl9H
ZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbihuZXh0KQot
ICAgICAgICAgICAgICAgIGlmIG5leHQudG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVggYW5k
IG5leHQubmFtZSA9PSAnKCc6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9HZXRN
ZXRob2QoW3Rva2VuXSwgRlVOQ1RJT05fQ1RPUiwgTm9uZSwgVHJ1ZSkKLSAgICAgICAgICAgICAg
ICAjIEZhbGwgdGhyb3VnaC0taGFuZGxlIGxpa2UgYW55IG90aGVyIG1ldGhvZC4KLQotICAgICAg
ICAgICAgIyBIYW5kbGUgZGF0YSBvciBmdW5jdGlvbiBkZWNsYXJhdGlvbi9kZWZpbml0aW9uLgot
ICAgICAgICAgICAgc3ludGF4ID0gdG9rZW5pemUuU1lOVEFYCi0gICAgICAgICAgICB0ZW1wX3Rv
a2VucywgbGFzdF90b2tlbiA9IFwKLSAgICAgICAgICAgICAgICBzZWxmLl9HZXRWYXJUb2tlbnNV
cFRvKHN5bnRheCwgJygnLCAnOycsICd7JywgJ1snKQotICAgICAgICAgICAgdGVtcF90b2tlbnMu
aW5zZXJ0KDAsIHRva2VuKQotICAgICAgICAgICAgaWYgbGFzdF90b2tlbi5uYW1lID09ICcoJzoK
LSAgICAgICAgICAgICAgICAjIElmIHRoZXJlIGlzIGFuIGFzc2lnbm1lbnQgYmVmb3JlIHRoZSBw
YXJlbiwKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYW4gZXhwcmVzc2lvbiwgbm90IGEgbWV0
aG9kLgotICAgICAgICAgICAgICAgIGV4cHIgPSBib29sKFtlIGZvciBlIGluIHRlbXBfdG9rZW5z
IGlmIGUubmFtZSA9PSAnPSddKQotICAgICAgICAgICAgICAgIGlmIGV4cHI6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld190ZW1wID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgs
ICc7JykKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMuYXBwZW5kKGxhc3RfdG9rZW4p
Ci0gICAgICAgICAgICAgICAgICAgIHRlbXBfdG9rZW5zLmV4dGVuZChuZXdfdGVtcCkKLSAgICAg
ICAgICAgICAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuaXplLlRva2VuKHRva2VuaXplLlNZTlRB
WCwgJzsnLCAwLCAwKQotCi0gICAgICAgICAgICBpZiBsYXN0X3Rva2VuLm5hbWUgPT0gJ1snOgot
ICAgICAgICAgICAgICAgICMgSGFuZGxlIGFycmF5LCB0aGlzIGlzbid0IGEgbWV0aG9kLCB1bmxl
c3MgaXQncyBhbiBvcGVyYXRvci4KLSAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBr
ZWVwIHRoZSBzaXplIHNvbWV3aGVyZS4KLSAgICAgICAgICAgICAgICAjIHVudXNlZF9zaXplID0g
c2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5UQVgsICddJykKLSAgICAgICAgICAgICAg
ICB0ZW1wX3Rva2Vucy5hcHBlbmQobGFzdF90b2tlbikKLSAgICAgICAgICAgICAgICBpZiB0ZW1w
X3Rva2Vuc1stMl0ubmFtZSA9PSAnb3BlcmF0b3InOgotICAgICAgICAgICAgICAgICAgICB0ZW1w
X3Rva2Vucy5hcHBlbmQoc2VsZi5fR2V0TmV4dFRva2VuKCkpCi0gICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMyLCBsYXN0X3Rva2VuID0gXAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fR2V0VmFyVG9rZW5zVXBUbyh0b2tlbml6ZS5TWU5U
QVgsICc7JykKLSAgICAgICAgICAgICAgICAgICAgdGVtcF90b2tlbnMuZXh0ZW5kKHRlbXBfdG9r
ZW5zMikKLQotICAgICAgICAgICAgaWYgbGFzdF90b2tlbi5uYW1lID09ICc7JzoKLSAgICAgICAg
ICAgICAgICAjIEhhbmRsZSBkYXRhLCB0aGlzIGlzbid0IGEgbWV0aG9kLgotICAgICAgICAgICAg
ICAgIHBhcnRzID0gc2VsZi5jb252ZXJ0ZXIuRGVjbGFyYXRpb25Ub1BhcnRzKHRlbXBfdG9rZW5z
LCBUcnVlKQotICAgICAgICAgICAgICAgIChuYW1lLCB0eXBlX25hbWUsIHRlbXBsYXRlZF90eXBl
cywgbW9kaWZpZXJzLCBkZWZhdWx0LAotICAgICAgICAgICAgICAgICB1bnVzZWRfb3RoZXJfdG9r
ZW5zKSA9IHBhcnRzCi0KLSAgICAgICAgICAgICAgICB0MCA9IHRlbXBfdG9rZW5zWzBdCi0gICAg
ICAgICAgICAgICAgbmFtZXMgPSBbdC5uYW1lIGZvciB0IGluIHRlbXBfdG9rZW5zXQotICAgICAg
ICAgICAgICAgIGlmIHRlbXBsYXRlZF90eXBlczoKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQs
IGVuZCA9IHNlbGYuY29udmVydGVyLkdldFRlbXBsYXRlSW5kaWNlcyhuYW1lcykKLSAgICAgICAg
ICAgICAgICAgICAgbmFtZXMgPSBuYW1lc1s6c3RhcnRdICsgbmFtZXNbZW5kOl0KLSAgICAgICAg
ICAgICAgICBkZWZhdWx0ID0gJycuam9pbihbdC5uYW1lIGZvciB0IGluIGRlZmF1bHRdKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJsZSh0MCwgbmFtZSwgdHlwZV9u
YW1lLCBtb2RpZmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWVzLCB0ZW1wbGF0ZWRfdHlwZXMsIGRlZmF1bHQpCi0gICAgICAgICAgICBpZiBsYXN0
X3Rva2VuLm5hbWUgPT0gJ3snOgotICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbnMo
dGVtcF90b2tlbnNbMTpdKQotICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbihsYXN0
X3Rva2VuKQotICAgICAgICAgICAgICAgIG1ldGhvZF9uYW1lID0gdGVtcF90b2tlbnNbMF0ubmFt
ZQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ2hhbmRsZV8nICsgbWV0
aG9kX25hbWUsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgbm90IG1ldGhvZDoKLSAgICAgICAg
ICAgICAgICAgICAgIyBNdXN0IGJlIGRlY2xhcmluZyBhIHZhcmlhYmxlLgotICAgICAgICAgICAg
ICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgdGhlIGRlY2xhcmF0aW9uLgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2Qo
KQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1ldGhvZCh0ZW1wX3Rva2VucywgMCwgTm9u
ZSwgRmFsc2UpCi0gICAgICAgIGVsaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5U
QVg6Ci0gICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09ICd+JyBhbmQgc2VsZi5pbl9jbGFzczoK
LSAgICAgICAgICAgICAgICAjIE11c3QgYmUgYSBkdG9yIChwcm9iYWJseSBub3QgaW4gbWV0aG9k
IGJvZHkpLgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAg
ICAgICAgICAgICAgICAjIHNlbGYuaW5fY2xhc3MgY2FuIGNvbnRhaW4gQTo6TmFtZSwgYnV0IHRo
ZSBkdG9yIHdpbGwgb25seQotICAgICAgICAgICAgICAgICMgYmUgTmFtZS4gIE1ha2Ugc3VyZSB0
byBjb21wYXJlIGFnYWluc3QgdGhlIHJpZ2h0IHZhbHVlLgotICAgICAgICAgICAgICAgIGlmICh0
b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUgYW5kCi0gICAgICAgICAgICAgICAgICAg
IHRva2VuLm5hbWUgPT0gc2VsZi5pbl9jbGFzc19uYW1lX29ubHkpOgotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fR2V0TWV0aG9kKFt0b2tlbl0sIEZVTkNUSU9OX0RUT1IsIE5vbmUs
IFRydWUpCi0gICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgYSBsb3QgbW9yZSBz
eW50YXguCi0gICAgICAgIGVsaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5QUkVQUk9D
RVNTT1I6Ci0gICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBoYW5kbGUgbW9yZSBwcmVwcm9j
ZXNzb3IgZGlyZWN0aXZlcy4KLSAgICAgICAgICAgICMgdG9rZW4gc3RhcnRzIHdpdGggYSAjLCBz
byByZW1vdmUgaXQgYW5kIHN0cmlwIHdoaXRlc3BhY2UuCi0gICAgICAgICAgICBuYW1lID0gdG9r
ZW4ubmFtZVsxOl0ubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnaW5j
bHVkZScpOgotICAgICAgICAgICAgICAgICMgUmVtb3ZlICJpbmNsdWRlIi4KLSAgICAgICAgICAg
ICAgICBuYW1lID0gbmFtZVs3Ol0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGFzc2VydCBuYW1l
Ci0gICAgICAgICAgICAgICAgIyBIYW5kbGUgI2luY2x1ZGUgXDxuZXdsaW5lPiAiaGVhZGVyLW9u
LXNlY29uZC1saW5lLmgiLgotICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXFwn
KToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVbMTpdLnN0cmlwKCkKLSAgICAgICAg
ICAgICAgICBhc3NlcnQgbmFtZVswXSBpbiAnPCInLCB0b2tlbgotICAgICAgICAgICAgICAgIGFz
c2VydCBuYW1lWy0xXSBpbiAnPiInLCB0b2tlbgotICAgICAgICAgICAgICAgIHN5c3RlbSA9IG5h
bWVbMF0gPT0gJzwnCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBuYW1lWzE6LTFdCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEluY2x1ZGUodG9rZW4uc3RhcnQsIHRva2VuLmVuZCwgZmlsZW5h
bWUsIHN5c3RlbSkKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnZGVmaW5lJyk6Ci0g
ICAgICAgICAgICAgICAgIyBSZW1vdmUgImRlZmluZSIuCi0gICAgICAgICAgICAgICAgbmFtZSA9
IG5hbWVbNjpdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBhc3NlcnQgbmFtZQotICAgICAgICAg
ICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUo
bmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGMuaXNzcGFjZSgpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSBuYW1lW2k6XS5sc3RyaXAoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IG5hbWVbOmldCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAg
ICAgICAgICAgICAgIHJldHVybiBEZWZpbmUodG9rZW4uc3RhcnQsIHRva2VuLmVuZCwgbmFtZSwg
dmFsdWUpCi0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ2lmJykgYW5kIG5hbWVbMjoz
XS5pc3NwYWNlKCk6Ci0gICAgICAgICAgICAgICAgY29uZGl0aW9uID0gbmFtZVszOl0uc3RyaXAo
KQotICAgICAgICAgICAgICAgIGlmIGNvbmRpdGlvbi5zdGFydHN3aXRoKCcwJykgb3IgY29uZGl0
aW9uLnN0YXJ0c3dpdGgoJygwKScpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9Ta2lwSWYw
QmxvY2tzKCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBfR2V0VG9rZW5zVXBUbyhz
ZWxmLCBleHBlY3RlZF90b2tlbl90eXBlLCBleHBlY3RlZF90b2tlbik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9HZXRWYXJUb2tlbnNVcFRvKGV4cGVjdGVkX3Rva2VuX3R5cGUsIGV4cGVjdGVkX3Rv
a2VuKVswXQotCi0gICAgZGVmIF9HZXRWYXJUb2tlbnNVcFRvKHNlbGYsIGV4cGVjdGVkX3Rva2Vu
X3R5cGUsICpleHBlY3RlZF90b2tlbnMpOgotICAgICAgICBsYXN0X3Rva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgdG9rZW5zID0gW10KLSAgICAgICAgd2hpbGUgKGxhc3RfdG9r
ZW4udG9rZW5fdHlwZSAhPSBleHBlY3RlZF90b2tlbl90eXBlIG9yCi0gICAgICAgICAgICAgICBs
YXN0X3Rva2VuLm5hbWUgbm90IGluIGV4cGVjdGVkX3Rva2Vucyk6Ci0gICAgICAgICAgICB0b2tl
bnMuYXBwZW5kKGxhc3RfdG9rZW4pCi0gICAgICAgICAgICBsYXN0X3Rva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgcmV0dXJuIHRva2VucywgbGFzdF90b2tlbgotCi0gICAgIyBU
T0RPKG5ub3J3aXR6KTogcmVtb3ZlIF9JZ25vcmVVcFRvKCkgaXQgc2hvdWxkbid0IGJlIG5lY2Vz
YXJ5LgotICAgIGRlZiBfSWdub3JlVXBUbyhzZWxmLCB0b2tlbl90eXBlLCB0b2tlbik6Ci0gICAg
ICAgIHVudXNlZF90b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuX3R5cGUsIHRva2Vu
KQotCi0gICAgZGVmIF9Ta2lwSWYwQmxvY2tzKHNlbGYpOgotICAgICAgICBjb3VudCA9IDEKLSAg
ICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkK
LSAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgIT0gdG9rZW5pemUuUFJFUFJPQ0VTU09S
OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIG5hbWUgPSB0b2tlbi5u
YW1lWzE6XS5sc3RyaXAoKQotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdlbmRpZicp
OgotICAgICAgICAgICAgICAgIGNvdW50IC09IDEKLSAgICAgICAgICAgICAgICBpZiBjb3VudCA9
PSAwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiBuYW1lLnN0
YXJ0c3dpdGgoJ2lmJyk6Ci0gICAgICAgICAgICAgICAgY291bnQgKz0gMQotCi0gICAgZGVmIF9H
ZXRNYXRjaGluZ0NoYXIoc2VsZiwgb3Blbl9wYXJlbiwgY2xvc2VfcGFyZW4sIEdldE5leHRUb2tl
bj1Ob25lKToKLSAgICAgICAgaWYgR2V0TmV4dFRva2VuIGlzIE5vbmU6Ci0gICAgICAgICAgICBH
ZXROZXh0VG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4KLSAgICAgICAgIyBBc3N1bWVzIHRoZSBj
dXJyZW50IHRva2VuIGlzIG9wZW5fcGFyZW4gYW5kIHdlIHdpbGwgY29uc3VtZQotICAgICAgICAj
IGFuZCByZXR1cm4gdXAgdG8gdGhlIGNsb3NlX3BhcmVuLgotICAgICAgICBjb3VudCA9IDEKLSAg
ICAgICAgdG9rZW4gPSBHZXROZXh0VG9rZW4oKQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAg
ICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVg6Ci0gICAgICAgICAgICAg
ICAgaWYgdG9rZW4ubmFtZSA9PSBvcGVuX3BhcmVuOgotICAgICAgICAgICAgICAgICAgICBjb3Vu
dCArPSAxCi0gICAgICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1lID09IGNsb3NlX3BhcmVuOgot
ICAgICAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgICAgICAgICAgICAgIGlmIGNv
dW50ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgeWll
bGQgdG9rZW4KLSAgICAgICAgICAgIHRva2VuID0gR2V0TmV4dFRva2VuKCkKLSAgICAgICAgeWll
bGQgdG9rZW4KLQotICAgIGRlZiBfR2V0UGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX0dldE1hdGNoaW5nQ2hhcignKCcsICcpJykKLQotICAgIGRlZiBHZXRTY29wZShzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1hdGNoaW5nQ2hhcigneycsICd9JykKLQotICAg
IGRlZiBfR2V0TmV4dFRva2VuKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnRva2VuX3F1ZXVlOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9rZW5fcXVldWUucG9wKCkKLSAgICAgICAgcmV0dXJu
IG5leHQoc2VsZi50b2tlbnMpCi0KLSAgICBkZWYgX0FkZEJhY2tUb2tlbihzZWxmLCB0b2tlbik6
Ci0gICAgICAgIGlmIHRva2VuLndoZW5jZSA9PSB0b2tlbml6ZS5XSEVOQ0VfU1RSRUFNOgotICAg
ICAgICAgICAgdG9rZW4ud2hlbmNlID0gdG9rZW5pemUuV0hFTkNFX1FVRVVFCi0gICAgICAgICAg
ICBzZWxmLnRva2VuX3F1ZXVlLmluc2VydCgwLCB0b2tlbikKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFzc2VydCB0b2tlbi53aGVuY2UgPT0gdG9rZW5pemUuV0hFTkNFX1FVRVVFLCB0b2tl
bgotICAgICAgICAgICAgc2VsZi50b2tlbl9xdWV1ZS5hcHBlbmQodG9rZW4pCi0KLSAgICBkZWYg
X0FkZEJhY2tUb2tlbnMoc2VsZiwgdG9rZW5zKToKLSAgICAgICAgaWYgdG9rZW5zOgotICAgICAg
ICAgICAgaWYgdG9rZW5zWy0xXS53aGVuY2UgPT0gdG9rZW5pemUuV0hFTkNFX1NUUkVBTToKLSAg
ICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgotICAgICAgICAgICAgICAgICAgICB0
b2tlbi53aGVuY2UgPSB0b2tlbml6ZS5XSEVOQ0VfUVVFVUUKLSAgICAgICAgICAgICAgICBzZWxm
LnRva2VuX3F1ZXVlWzowXSA9IHJldmVyc2VkKHRva2VucykKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0IHRva2Vuc1stMV0ud2hlbmNlID09IHRva2VuaXplLldIRU5D
RV9RVUVVRSwgdG9rZW5zCi0gICAgICAgICAgICAgICAgc2VsZi50b2tlbl9xdWV1ZS5leHRlbmQo
cmV2ZXJzZWQodG9rZW5zKSkKLQotICAgIGRlZiBHZXROYW1lKHNlbGYsIHNlcT1Ob25lKToKLSAg
ICAgICAgIiIiUmV0dXJucyAoW3Rva2Vuc10sIG5leHRfdG9rZW5faW5mbykuIiIiCi0gICAgICAg
IEdldE5leHRUb2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbgotICAgICAgICBpZiBzZXEgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBpdCA9IGl0ZXIoc2VxKQotICAgICAgICAgICAgR2V0TmV4dFRv
a2VuID0gbGFtYmRhOiBuZXh0KGl0KQotICAgICAgICBuZXh0X3Rva2VuID0gR2V0TmV4dFRva2Vu
KCkKLSAgICAgICAgdG9rZW5zID0gW10KLSAgICAgICAgbGFzdF90b2tlbl93YXNfbmFtZSA9IEZh
bHNlCi0gICAgICAgIHdoaWxlIChuZXh0X3Rva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuTkFN
RSBvcgotICAgICAgICAgICAgICAgKG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5T
WU5UQVggYW5kCi0gICAgICAgICAgICAgICAgbmV4dF90b2tlbi5uYW1lIGluICgnOjonLCAnPCcp
KSk6Ci0gICAgICAgICAgICAjIFR3byBOQU1FcyBpbiBhIHJvdyBtZWFucyB0aGUgaWRlbnRpZmll
ciBzaG91bGQgdGVybWluYXRlLgotICAgICAgICAgICAgIyBJdCdzIHByb2JhYmx5IHNvbWUgc29y
dCBvZiB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAgIGlmIGxhc3RfdG9rZW5fd2Fz
X25hbWUgYW5kIG5leHRfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgotICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBsYXN0X3Rva2VuX3dhc19uYW1lID0gbmV4dF90
b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUUKLSAgICAgICAgICAgIHRva2Vucy5hcHBl
bmQobmV4dF90b2tlbikKLSAgICAgICAgICAgICMgSGFuZGxlIHRlbXBsYXRlZCBuYW1lcy4KLSAg
ICAgICAgICAgIGlmIG5leHRfdG9rZW4ubmFtZSA9PSAnPCc6Ci0gICAgICAgICAgICAgICAgdG9r
ZW5zLmV4dGVuZChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJzwnLCAnPicsIEdldE5leHRUb2tlbikp
Ci0gICAgICAgICAgICAgICAgbGFzdF90b2tlbl93YXNfbmFtZSA9IFRydWUKLSAgICAgICAgICAg
IG5leHRfdG9rZW4gPSBHZXROZXh0VG9rZW4oKQotICAgICAgICByZXR1cm4gdG9rZW5zLCBuZXh0
X3Rva2VuCi0KLSAgICBkZWYgR2V0TWV0aG9kKHNlbGYsIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5
cGVzKToKLSAgICAgICAgcmV0dXJuX3R5cGVfYW5kX25hbWUgPSBzZWxmLl9HZXRUb2tlbnNVcFRv
KHRva2VuaXplLlNZTlRBWCwgJygnKQotICAgICAgICBhc3NlcnQgbGVuKHJldHVybl90eXBlX2Fu
ZF9uYW1lKSA+PSAxCi0gICAgICAgIHJldHVybiBzZWxmLl9HZXRNZXRob2QocmV0dXJuX3R5cGVf
YW5kX25hbWUsIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5cGVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlKQotCi0gICAgZGVmIF9HZXRNZXRob2Qoc2VsZiwgcmV0dXJuX3R5
cGVfYW5kX25hbWUsIG1vZGlmaWVycywgdGVtcGxhdGVkX3R5cGVzLAotICAgICAgICAgICAgICAg
ICAgIGdldF9wYXJlbik6Ci0gICAgICAgIHRlbXBsYXRlX3BvcnRpb24gPSBOb25lCi0gICAgICAg
IGlmIGdldF9wYXJlbjoKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkK
LSAgICAgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCwg
dG9rZW4KLSAgICAgICAgICAgIGlmIHRva2VuLm5hbWUgPT0gJzwnOgotICAgICAgICAgICAgICAg
ICMgSGFuZGxlIHRlbXBsYXRpemVkIGR0b3JzLgotICAgICAgICAgICAgICAgIHRlbXBsYXRlX3Bv
cnRpb24gPSBbdG9rZW5dCi0gICAgICAgICAgICAgICAgdGVtcGxhdGVfcG9ydGlvbi5leHRlbmQo
c2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCc8JywgJz4nKSkKLSAgICAgICAgICAgICAgICB0b2tlbiA9
IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlw
ZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRva2VuCi0gICAgICAgICAgICBhc3NlcnQgdG9rZW4ubmFt
ZSA9PSAnKCcsIHRva2VuCi0KLSAgICAgICAgbmFtZSA9IHJldHVybl90eXBlX2FuZF9uYW1lLnBv
cCgpCi0gICAgICAgICMgSGFuZGxlIHRlbXBsYXRpemVkIGN0b3JzLgotICAgICAgICBpZiBuYW1l
Lm5hbWUgPT0gJz4nOgotICAgICAgICAgICAgaW5kZXggPSAxCi0gICAgICAgICAgICB3aGlsZSBy
ZXR1cm5fdHlwZV9hbmRfbmFtZVtpbmRleF0ubmFtZSAhPSAnPCc6Ci0gICAgICAgICAgICAgICAg
aW5kZXggKz0gMQotICAgICAgICAgICAgdGVtcGxhdGVfcG9ydGlvbiA9IHJldHVybl90eXBlX2Fu
ZF9uYW1lW2luZGV4Ol0gKyBbbmFtZV0KLSAgICAgICAgICAgIGRlbCByZXR1cm5fdHlwZV9hbmRf
bmFtZVtpbmRleDpdCi0gICAgICAgICAgICBuYW1lID0gcmV0dXJuX3R5cGVfYW5kX25hbWUucG9w
KCkKLSAgICAgICAgZWxpZiBuYW1lLm5hbWUgPT0gJ10nOgotICAgICAgICAgICAgcnQgPSByZXR1
cm5fdHlwZV9hbmRfbmFtZQotICAgICAgICAgICAgYXNzZXJ0IHJ0Wy0xXS5uYW1lID09ICdbJywg
cmV0dXJuX3R5cGVfYW5kX25hbWUKLSAgICAgICAgICAgIGFzc2VydCBydFstMl0ubmFtZSA9PSAn
b3BlcmF0b3InLCByZXR1cm5fdHlwZV9hbmRfbmFtZQotICAgICAgICAgICAgbmFtZV9zZXEgPSBy
ZXR1cm5fdHlwZV9hbmRfbmFtZVstMjpdCi0gICAgICAgICAgICBkZWwgcmV0dXJuX3R5cGVfYW5k
X25hbWVbLTI6XQotICAgICAgICAgICAgbmFtZSA9IHRva2VuaXplLlRva2VuKHRva2VuaXplLk5B
TUUsICdvcGVyYXRvcltdJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
X3NlcVswXS5zdGFydCwgbmFtZS5lbmQpCi0gICAgICAgICAgICAjIEdldCB0aGUgb3BlbiBwYXJl
biBzbyBfR2V0UGFyYW1ldGVycygpIGJlbG93IHdvcmtzLgotICAgICAgICAgICAgdW51c2VkX29w
ZW5fcGFyZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotCi0gICAgICAgICMgVE9ETyhubm9yd2l0
eik6IHN0b3JlIHRlbXBsYXRlX3BvcnRpb24uCi0gICAgICAgIHJldHVybl90eXBlID0gcmV0dXJu
X3R5cGVfYW5kX25hbWUKLSAgICAgICAgaW5kaWNlcyA9IG5hbWUKLSAgICAgICAgaWYgcmV0dXJu
X3R5cGU6Ci0gICAgICAgICAgICBpbmRpY2VzID0gcmV0dXJuX3R5cGVbMF0KLQotICAgICAgICAj
IEZvcmNlIGN0b3IgZm9yIHRlbXBsYXRpemVkIGN0b3JzLgotICAgICAgICBpZiBuYW1lLm5hbWUg
PT0gc2VsZi5pbl9jbGFzcyBhbmQgbm90IG1vZGlmaWVyczoKLSAgICAgICAgICAgIG1vZGlmaWVy
cyB8PSBGVU5DVElPTl9DVE9SCi0gICAgICAgIHBhcmFtZXRlcnMgPSBsaXN0KHNlbGYuX0dldFBh
cmFtZXRlcnMoKSkKLSAgICAgICAgZGVsIHBhcmFtZXRlcnNbLTFdICAgICAgICAgICAgICAjIFJl
bW92ZSB0cmFpbGluZyAnKScuCi0KLSAgICAgICAgIyBIYW5kbGluZyBvcGVyYXRvcigpIGlzIGVz
cGVjaWFsbHkgd2VpcmQuCi0gICAgICAgIGlmIG5hbWUubmFtZSA9PSAnb3BlcmF0b3InIGFuZCBu
b3QgcGFyYW1ldGVyczoKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkK
LSAgICAgICAgICAgIGFzc2VydCB0b2tlbi5uYW1lID09ICcoJywgdG9rZW4KLSAgICAgICAgICAg
IHBhcmFtZXRlcnMgPSBsaXN0KHNlbGYuX0dldFBhcmFtZXRlcnMoKSkKLSAgICAgICAgICAgIGRl
bCBwYXJhbWV0ZXJzWy0xXSAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAnKScuCi0KLSAgICAg
ICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICB3aGlsZSB0b2tlbi50b2tl
bl90eXBlID09IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAgICBtb2RpZmllcl90b2tlbiA9IHRv
a2VuCi0gICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAg
ICBpZiBtb2RpZmllcl90b2tlbi5uYW1lID09ICdjb25zdCc6Ci0gICAgICAgICAgICAgICAgbW9k
aWZpZXJzIHw9IEZVTkNUSU9OX0NPTlNUCi0gICAgICAgICAgICBlbGlmIG1vZGlmaWVyX3Rva2Vu
Lm5hbWUgPT0gJ19fYXR0cmlidXRlX18nOgotICAgICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0
eik6IGhhbmRsZSBtb3JlIF9fYXR0cmlidXRlX18gZGV0YWlscy4KLSAgICAgICAgICAgICAgICBt
b2RpZmllcnMgfD0gRlVOQ1RJT05fQVRUUklCVVRFCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHRv
a2VuLm5hbWUgPT0gJygnLCB0b2tlbgotICAgICAgICAgICAgICAgICMgQ29uc3VtZSBldmVyeXRo
aW5nIGJldHdlZW4gdGhlIChwYXJlbnMpLgotICAgICAgICAgICAgICAgIHVudXNlZF90b2tlbnMg
PSBsaXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcignKCcsICcpJykpCi0gICAgICAgICAgICAgICAg
dG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgZWxpZiBtb2RpZmllcl90
b2tlbi5uYW1lID09ICd0aHJvdyc6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNU
SU9OX1RIUk9XCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJygnLCB0b2tl
bgotICAgICAgICAgICAgICAgICMgQ29uc3VtZSBldmVyeXRoaW5nIGJldHdlZW4gdGhlIChwYXJl
bnMpLgotICAgICAgICAgICAgICAgIHVudXNlZF90b2tlbnMgPSBsaXN0KHNlbGYuX0dldE1hdGNo
aW5nQ2hhcignKCcsICcpJykpCi0gICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0
VG9rZW4oKQotICAgICAgICAgICAgZWxpZiBtb2RpZmllcl90b2tlbi5uYW1lID09ICdvdmVycmlk
ZSc6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzIHw9IEZVTkNUSU9OX09WRVJSSURFCi0gICAg
ICAgICAgICBlbGlmIG1vZGlmaWVyX3Rva2VuLm5hbWUgPT0gbW9kaWZpZXJfdG9rZW4ubmFtZS51
cHBlcigpOgotICAgICAgICAgICAgICAgICMgSEFDSyhubm9yd2l0eik6ICBhc3N1bWUgdGhhdCBh
bGwgdXBwZXItY2FzZSBuYW1lcwotICAgICAgICAgICAgICAgICMgYXJlIHNvbWUgbWFjcm8gd2Ug
YXJlbid0IGV4cGFuZGluZy4KLSAgICAgICAgICAgICAgICBtb2RpZmllcnMgfD0gRlVOQ1RJT05f
VU5LTk9XTl9BTk5PVEFUSU9OCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNl
bGYuSGFuZGxlRXJyb3IoJ3VuZXhwZWN0ZWQgdG9rZW4nLCBtb2RpZmllcl90b2tlbikKLQotICAg
ICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRva2VuCi0g
ICAgICAgICMgSGFuZGxlIGN0b3IgaW5pdGlhbGl6ZXJzLgotICAgICAgICBpZiB0b2tlbi5uYW1l
ID09ICc6JzoKLSAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IGFueXRoaW5nIGVsc2UgdG8g
aGFuZGxlIGZvciBpbml0aWFsaXplciBsaXN0PwotICAgICAgICAgICAgd2hpbGUgdG9rZW4ubmFt
ZSAhPSAnOycgYW5kIHRva2VuLm5hbWUgIT0gJ3snOgotICAgICAgICAgICAgICAgIHRva2VuID0g
c2VsZi5fR2V0TmV4dFRva2VuKCkKLQotICAgICAgICAjIEhhbmRsZSBwb2ludGVyIHRvIGZ1bmN0
aW9ucyB0aGF0IGFyZSByZWFsbHkgZGF0YSBidXQgbG9vawotICAgICAgICAjIGxpa2UgbWV0aG9k
IGRlY2xhcmF0aW9ucy4KLSAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnKCc6Ci0gICAgICAgICAg
ICBpZiBwYXJhbWV0ZXJzWzBdLm5hbWUgPT0gJyonOgotICAgICAgICAgICAgICAgICMgbmFtZSBj
b250YWlucyB0aGUgcmV0dXJuIHR5cGUuCi0gICAgICAgICAgICAgICAgbmFtZSA9IHBhcmFtZXRl
cnMucG9wKCkKLSAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcnMgY29udGFpbnMgdGhlIG5hbWUg
b2YgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgbW9kaWZpZXJzID0gW3AubmFtZSBmb3IgcCBp
biBwYXJhbWV0ZXJzXQotICAgICAgICAgICAgICAgICMgQWxyZWFkeSBhdCB0aGUgKCB0byBvcGVu
IHRoZSBwYXJhbWV0ZXIgbGlzdC4KLSAgICAgICAgICAgICAgICBmdW5jdGlvbl9wYXJhbWV0ZXJz
ID0gbGlzdChzZWxmLl9HZXRNYXRjaGluZ0NoYXIoJygnLCAnKScpKQotICAgICAgICAgICAgICAg
IGRlbCBmdW5jdGlvbl9wYXJhbWV0ZXJzWy0xXSAgIyBSZW1vdmUgdHJhaWxpbmcgJyknLgotICAg
ICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IHN0b3JlIHRoZSBmdW5jdGlvbl9wYXJhbWV0
ZXJzLgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIHRv
a2VuCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHRva2VuLm5hbWUgPT0gJzsnLCB0b2tlbgotICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJsZShpbmRpY2VzLCBuYW1lLm5h
bWUsIGluZGljZXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZXJzLCAnJywgTm9uZSkKLSAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCwg
d2UgZ290IHNvbWV0aGluZyBsaWtlOgotICAgICAgICAgICAgIyAgcmV0dXJuX3R5cGUgKHR5cGU6
OipuYW1lXykocGFyYW1zKTsKLSAgICAgICAgICAgICMgVGhpcyBpcyBhIGRhdGEgbWVtYmVyIGNh
bGxlZCBuYW1lXyB0aGF0IGlzIGEgZnVuY3Rpb24gcG9pbnRlci4KLSAgICAgICAgICAgICMgV2l0
aCB0aGlzIGNvZGU6IHZvaWQgKHNxX3R5cGU6OipmaWVsZF8pKHN0cmluZyYpOwotICAgICAgICAg
ICAgIyBXZSBnZXQ6IG5hbWU9dm9pZCByZXR1cm5fdHlwZT1bXSBwYXJhbWV0ZXJzPXNxX3R5cGUg
Li4uIGZpZWxkXwotICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaXMgcmV0dXJuX3R5cGUg
YWx3YXlzIGVtcHR5PwotICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogdGhpcyBpc24ndCBl
dmVuIGNsb3NlIHRvIGJlaW5nIGNvcnJlY3QuCi0gICAgICAgICAgICAjIEp1c3QgcHV0IGluIHNv
bWV0aGluZyBzbyB3ZSBkb24ndCBjcmFzaCBhbmQgY2FuIG1vdmUgb24uCi0gICAgICAgICAgICBy
ZWFsX25hbWUgPSBwYXJhbWV0ZXJzWy0xXQotICAgICAgICAgICAgbW9kaWZpZXJzID0gW3AubmFt
ZSBmb3IgcCBpbiBzZWxmLl9HZXRQYXJhbWV0ZXJzKCldCi0gICAgICAgICAgICBkZWwgbW9kaWZp
ZXJzWy0xXSAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJyknLgotICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX0NyZWF0ZVZhcmlhYmxlKGluZGljZXMsIHJlYWxfbmFtZS5uYW1lLCBpbmRpY2Vz
Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz
LCAnJywgTm9uZSkKLQotICAgICAgICBpZiB0b2tlbi5uYW1lID09ICd7JzoKLSAgICAgICAgICAg
IGJvZHkgPSBsaXN0KHNlbGYuR2V0U2NvcGUoKSkKLSAgICAgICAgICAgIGRlbCBib2R5Wy0xXSAg
ICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAnfScuCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBib2R5ID0gTm9uZQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnPSc6Ci0g
ICAgICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotCi0gICAgICAgICAg
ICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnZGVmYXVsdCcgb3IgdG9rZW4ubmFtZSA9PSAnZGVsZXRl
JzoKLSAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZXhwbGljaXRseSBkZWZhdWx0ZWQgYW5k
IGRlbGV0ZWQgc3BlY2lhbCBtZW1iZXJzCi0gICAgICAgICAgICAgICAgICAgICMgaW4gQysrMTEu
Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIEhhbmRsZSBwdXJlLXZpcnR1
YWwgZGVjbGFyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5f
dHlwZSA9PSB0b2tlbml6ZS5DT05TVEFOVCwgdG9rZW4KLSAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IHRva2VuLm5hbWUgPT0gJzAnLCB0b2tlbgotICAgICAgICAgICAgICAgICAgICBtb2RpZmll
cnMgfD0gRlVOQ1RJT05fUFVSRV9WSVJUVUFMCi0gICAgICAgICAgICAgICAgICAgIHRva2VuID0g
c2VsZi5fR2V0TmV4dFRva2VuKCkKLQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnWyc6
Ci0gICAgICAgICAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogc3RvcmUgdG9rZW5zIGFuZCBpbXBy
b3ZlIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgIyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6
ZV90IE4+IGNoYXIgKCZBU0goVCAoJnNlcSlbTl0pKVtOXTsKLSAgICAgICAgICAgICAgICB0b2tl
bnMgPSBsaXN0KHNlbGYuX0dldE1hdGNoaW5nQ2hhcignWycsICddJykpCi0gICAgICAgICAgICAg
ICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotCi0gICAgICAgICAgICBhc3NlcnQgdG9r
ZW4ubmFtZSA9PSAnOycsICh0b2tlbiwgcmV0dXJuX3R5cGVfYW5kX25hbWUsIHBhcmFtZXRlcnMp
Ci0KLSAgICAgICAgIyBMb29rcyBsaWtlIHdlIGdvdCBhIG1ldGhvZCwgbm90IGEgZnVuY3Rpb24u
Ci0gICAgICAgIGlmIGxlbihyZXR1cm5fdHlwZSkgPiAyIGFuZCByZXR1cm5fdHlwZVstMV0ubmFt
ZSA9PSAnOjonOgotICAgICAgICAgICAgcmV0dXJuX3R5cGUsIGluX2NsYXNzID0gXAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX0dldFJldHVyblR5cGVBbmRDbGFzc05hbWUocmV0dXJu
X3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gTWV0aG9kKGluZGljZXMuc3RhcnQsIGluZGljZXMu
ZW5kLCBuYW1lLm5hbWUsIGluX2NsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5fdHlwZSwgcGFyYW1ldGVycywgbW9kaWZpZXJzLCB0ZW1wbGF0ZWRfdHlwZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvZHksIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotICAgICAgICBy
ZXR1cm4gRnVuY3Rpb24oaW5kaWNlcy5zdGFydCwgaW5kaWNlcy5lbmQsIG5hbWUubmFtZSwgcmV0
dXJuX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLCBtb2RpZmllcnMs
IHRlbXBsYXRlZF90eXBlcywgYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFt
ZXNwYWNlX3N0YWNrKQotCi0gICAgZGVmIF9HZXRSZXR1cm5UeXBlQW5kQ2xhc3NOYW1lKHNlbGYs
IHRva2VuX3NlcSk6Ci0gICAgICAgICMgU3BsaXR0aW5nIHRoZSByZXR1cm4gdHlwZSBmcm9tIHRo
ZSBjbGFzcyBuYW1lIGluIGEgbWV0aG9kCi0gICAgICAgICMgY2FuIGJlIHRyaWNreS4gIEZvciBl
eGFtcGxlLCBSZXR1cm46OlR5cGU6OklzOjpIYXJkOjpUbzo6RmluZCgpLgotICAgICAgICAjIFdo
ZXJlIGlzIHRoZSByZXR1cm4gdHlwZSBhbmQgd2hlcmUgaXMgdGhlIGNsYXNzIG5hbWU/Ci0gICAg
ICAgICMgVGhlIGhldXJpc3RpYyB1c2VkIGlzIHRvIHB1bGwgdGhlIGxhc3QgbmFtZSBhcyB0aGUg
Y2xhc3MgbmFtZS4KLSAgICAgICAgIyBUaGlzIGluY2x1ZGVzIGFsbCB0aGUgdGVtcGxhdGVkIHR5
cGUgaW5mby4KLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaWYgdGhlcmUgaXMgb25seSBPbmUg
bmFtZSBsaWtlIGluIHRoZQotICAgICAgICAjIGV4YW1wbGUgYWJvdmUsIHB1bnQgYW5kIGFzc3Vt
ZSB0aGUgbGFzdCBiaXQgaXMgdGhlIGNsYXNzIG5hbWUuCi0KLSAgICAgICAgIyBJZ25vcmUgYSA6
OiBwcmVmaXgsIGlmIGV4aXN0cyBzbyB3ZSBjYW4gZmluZCB0aGUgZmlyc3QgcmVhbCBuYW1lLgot
ICAgICAgICBpID0gMAotICAgICAgICBpZiB0b2tlbl9zZXFbMF0ubmFtZSA9PSAnOjonOgotICAg
ICAgICAgICAgaSA9IDEKLSAgICAgICAgIyBJZ25vcmUgYSA6OiBzdWZmaXgsIGlmIGV4aXN0cy4K
LSAgICAgICAgZW5kID0gbGVuKHRva2VuX3NlcSkgLSAxCi0gICAgICAgIGlmIHRva2VuX3NlcVtl
bmQtMV0ubmFtZSA9PSAnOjonOgotICAgICAgICAgICAgZW5kIC09IDEKLQotICAgICAgICAjIE1h
a2UgYSBjb3B5IG9mIHRoZSBzZXF1ZW5jZSBzbyB3ZSBjYW4gYXBwZW5kIGEgc2VudGluZWwKLSAg
ICAgICAgIyB2YWx1ZS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgR2V0TmFtZSB3aWxsIGhhcyB0byBo
YXZlIHNvbWUKLSAgICAgICAgIyB0ZXJtaW5hdGluZyBjb25kaXRpb24gYmV5b25kIHRoZSBsYXN0
IG5hbWUuCi0gICAgICAgIHNlcV9jb3B5ID0gdG9rZW5fc2VxW2k6ZW5kXQotICAgICAgICBzZXFf
Y29weS5hcHBlbmQodG9rZW5pemUuVG9rZW4odG9rZW5pemUuU1lOVEFYLCAnJywgMCwgMCkpCi0g
ICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgd2hpbGUgaSA8IGVuZDoKLSAgICAgICAgICAgICMg
SXRlcmF0ZSB0aHJvdWdoIHRoZSBzZXF1ZW5jZSBwYXJzaW5nIG91dCBlYWNoIG5hbWUuCi0gICAg
ICAgICAgICBuZXdfbmFtZSwgbmV4dCA9IHNlbGYuR2V0TmFtZShzZXFfY29weVtpOl0pCi0gICAg
ICAgICAgICBhc3NlcnQgbmV3X25hbWUsICdHb3QgZW1wdHkgbmV3X25hbWUsIG5leHQ9JXMnICUg
bmV4dAotICAgICAgICAgICAgIyBXZSBnb3QgYSBwb2ludGVyIG9yIHJlZi4gIEFkZCBpdCB0byB0
aGUgbmFtZS4KLSAgICAgICAgICAgIGlmIG5leHQgYW5kIG5leHQudG9rZW5fdHlwZSA9PSB0b2tl
bml6ZS5TWU5UQVg6Ci0gICAgICAgICAgICAgICAgbmV3X25hbWUuYXBwZW5kKG5leHQpCi0gICAg
ICAgICAgICBuYW1lcy5hcHBlbmQobmV3X25hbWUpCi0gICAgICAgICAgICBpICs9IGxlbihuZXdf
bmFtZSkKLQotICAgICAgICAjIE5vdyB0aGF0IHdlIGhhdmUgdGhlIG5hbWVzLCBpdCdzIHRpbWUg
dG8gdW5kbyB3aGF0IHdlIGRpZC4KLQotICAgICAgICAjIFJlbW92ZSB0aGUgc2VudGluZWwgdmFs
dWUuCi0gICAgICAgIG5hbWVzWy0xXS5wb3AoKQotICAgICAgICAjIEZsYXR0ZW4gdGhlIHRva2Vu
IHNlcXVlbmNlIGZvciB0aGUgcmV0dXJuIHR5cGUuCi0gICAgICAgIHJldHVybl90eXBlID0gW2Ug
Zm9yIHNlcSBpbiBuYW1lc1s6LTFdIGZvciBlIGluIHNlcV0KLSAgICAgICAgIyBUaGUgY2xhc3Mg
bmFtZSBpcyB0aGUgbGFzdCBuYW1lLgotICAgICAgICBjbGFzc19uYW1lID0gbmFtZXNbLTFdCi0g
ICAgICAgIHJldHVybiByZXR1cm5fdHlwZSwgY2xhc3NfbmFtZQotCi0gICAgZGVmIGhhbmRsZV9i
b29sKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2NoYXIoc2VsZik6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfaW50KHNlbGYpOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgaGFuZGxlX2xvbmcoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5k
bGVfc2hvcnQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfZG91YmxlKHNl
bGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2Zsb2F0KHNlbGYpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3ZvaWQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAg
IGRlZiBoYW5kbGVfd2NoYXJfdChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRs
ZV91bnNpZ25lZChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9zaWduZWQo
c2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfR2V0TmVzdGVkVHlwZShzZWxmLCBjdG9y
KToKLSAgICAgICAgbmFtZSA9IE5vbmUKLSAgICAgICAgbmFtZV90b2tlbnMsIHRva2VuID0gc2Vs
Zi5HZXROYW1lKCkKLSAgICAgICAgaWYgbmFtZV90b2tlbnM6Ci0gICAgICAgICAgICBuYW1lID0g
Jycuam9pbihbdC5uYW1lIGZvciB0IGluIG5hbWVfdG9rZW5zXSkKLQotICAgICAgICAjIEhhbmRs
ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSB0
b2tlbml6ZS5TWU5UQVggYW5kIHRva2VuLm5hbWUgPT0gJzsnOgotICAgICAgICAgICAgcmV0dXJu
IGN0b3IodG9rZW4uc3RhcnQsIHRva2VuLmVuZCwgbmFtZSwgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotCi0gICAgICAgIGlmIHRva2VuLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuTkFNRSBhbmQgc2VsZi5faGFuZGxpbmdfdHlwZWRlZjoKLSAgICAg
ICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih0b2tlbikKLSAgICAgICAgICAgIHJldHVybiBjdG9y
KHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQsIG5hbWUsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgICAgICAjIE11c3QgYmUgdGhlIHR5cGUg
ZGVjbGFyYXRpb24uCi0gICAgICAgIGZpZWxkcyA9IGxpc3Qoc2VsZi5fR2V0TWF0Y2hpbmdDaGFy
KCd7JywgJ30nKSkKLSAgICAgICAgZGVsIGZpZWxkc1stMV0gICAgICAgICAgICAgICAgICAjIFJl
bW92ZSB0cmFpbGluZyAnfScuCi0gICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5p
emUuU1lOVEFYIGFuZCB0b2tlbi5uYW1lID09ICd7JzoKLSAgICAgICAgICAgIG5leHQgPSBzZWxm
Ll9HZXROZXh0VG9rZW4oKQotICAgICAgICAgICAgbmV3X3R5cGUgPSBjdG9yKHRva2VuLnN0YXJ0
LCB0b2tlbi5lbmQsIG5hbWUsIGZpZWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLm5hbWVzcGFjZV9zdGFjaykKLSAgICAgICAgICAgICMgQSBuYW1lIG1lYW5zIHRoaXMgaXMg
YW4gYW5vbnltb3VzIHR5cGUgYW5kIHRoZSBuYW1lCi0gICAgICAgICAgICAjIGlzIHRoZSB2YXJp
YWJsZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgICAgIGlmIG5leHQudG9rZW5fdHlwZSAhPSB0b2tl
bml6ZS5OQU1FOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXdfdHlwZQotICAgICAgICAgICAg
bmFtZSA9IG5ld190eXBlCi0gICAgICAgICAgICB0b2tlbiA9IG5leHQKLQotICAgICAgICAjIE11
c3QgYmUgdmFyaWFibGUgZGVjbGFyYXRpb24gdXNpbmcgdGhlIHR5cGUgcHJlZml4ZWQgd2l0aCBr
ZXl3b3JkLgotICAgICAgICBhc3NlcnQgdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1F
LCB0b2tlbgotICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFyaWFibGUodG9rZW4sIHRva2Vu
Lm5hbWUsIG5hbWUsIFtdLCAnJywgTm9uZSkKLQotICAgIGRlZiBoYW5kbGVfc3RydWN0KHNlbGYp
OgotICAgICAgICAjIFNwZWNpYWwgY2FzZSB0aGUgaGFuZGxpbmcgdHlwZWRlZi9hbGlhc2luZyBv
ZiBzdHJ1Y3RzIGhlcmUuCi0gICAgICAgICMgSXQgd291bGQgYmUgYSBwYWluIHRvIGhhbmRsZSBp
biB0aGUgY2xhc3MgY29kZS4KLSAgICAgICAgbmFtZV90b2tlbnMsIHZhcl90b2tlbiA9IHNlbGYu
R2V0TmFtZSgpCi0gICAgICAgIGlmIG5hbWVfdG9rZW5zOgotICAgICAgICAgICAgbmV4dF90b2tl
biA9IHNlbGYuX0dldE5leHRUb2tlbigpCi0gICAgICAgICAgICBpc19zeW50YXggPSAodmFyX3Rv
a2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhcl90b2tlbi5uYW1lWzBdIGluICcqJicpCi0gICAgICAgICAgICBpc192YXJpYWJs
ZSA9ICh2YXJfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5OQU1FIGFuZAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV4dF90b2tlbi5uYW1lID09ICc7JykKLSAgICAgICAgICAgIHZh
cmlhYmxlID0gdmFyX3Rva2VuCi0gICAgICAgICAgICBpZiBpc19zeW50YXggYW5kIG5vdCBpc192
YXJpYWJsZToKLSAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IG5leHRfdG9rZW4KLSAgICAgICAg
ICAgICAgICB0ZW1wID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBpZiB0
ZW1wLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYIGFuZCB0ZW1wLm5hbWUgPT0gJygnOgot
ICAgICAgICAgICAgICAgICAgICAjIEhhbmRsZSBtZXRob2RzIGRlY2xhcmVkIHRvIHJldHVybiBh
IHN0cnVjdC4KLSAgICAgICAgICAgICAgICAgICAgdDAgPSBuYW1lX3Rva2Vuc1swXQotICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgPSB0b2tlbml6ZS5Ub2tlbih0b2tlbml6ZS5OQU1FLCAnc3Ry
dWN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDAuc3Rh
cnQtNywgdDAuc3RhcnQtMikKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9hbmRfbmFtZSA9IFtz
dHJ1Y3RdCi0gICAgICAgICAgICAgICAgICAgIHR5cGVfYW5kX25hbWUuZXh0ZW5kKG5hbWVfdG9r
ZW5zKQotICAgICAgICAgICAgICAgICAgICB0eXBlX2FuZF9uYW1lLmV4dGVuZCgodmFyX3Rva2Vu
LCBuZXh0X3Rva2VuKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX0dldE1ldGhv
ZCh0eXBlX2FuZF9uYW1lLCAwLCBOb25lLCBGYWxzZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQg
dGVtcC5uYW1lID09ICc7JywgKHRlbXAsIG5hbWVfdG9rZW5zLCB2YXJfdG9rZW4pCi0gICAgICAg
ICAgICBpZiBpc19zeW50YXggb3IgKGlzX3ZhcmlhYmxlIGFuZCBub3Qgc2VsZi5faGFuZGxpbmdf
dHlwZWRlZik6Ci0gICAgICAgICAgICAgICAgbW9kaWZpZXJzID0gWydzdHJ1Y3QnXQotICAgICAg
ICAgICAgICAgIHR5cGVfbmFtZSA9ICcnLmpvaW4oW3QubmFtZSBmb3IgdCBpbiBuYW1lX3Rva2Vu
c10pCi0gICAgICAgICAgICAgICAgcG9zaXRpb24gPSBuYW1lX3Rva2Vuc1swXQotICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9DcmVhdGVWYXJpYWJsZShwb3NpdGlvbiwgdmFyaWFibGUubmFt
ZSwgdHlwZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllcnMsIHZhcl90b2tlbi5uYW1lLCBOb25lKQotICAgICAgICAgICAgbmFtZV90b2tl
bnMuZXh0ZW5kKCh2YXJfdG9rZW4sIG5leHRfdG9rZW4pKQotICAgICAgICAgICAgc2VsZi5fQWRk
QmFja1Rva2VucyhuYW1lX3Rva2VucykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYu
X0FkZEJhY2tUb2tlbih2YXJfdG9rZW4pCi0gICAgICAgIHJldHVybiBzZWxmLl9HZXRDbGFzcyhT
dHJ1Y3QsIFZJU0lCSUxJVFlfUFVCTElDLCBOb25lKQotCi0gICAgZGVmIGhhbmRsZV91bmlvbihz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX0dldE5lc3RlZFR5cGUoVW5pb24pCi0KLSAgICBk
ZWYgaGFuZGxlX2VudW0oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9HZXROZXN0ZWRUeXBl
KEVudW0pCi0KLSAgICBkZWYgaGFuZGxlX2F1dG8oc2VsZik6Ci0gICAgICAgICMgVE9ETyhubm9y
d2l0eik6IHdhcm4gYWJvdXQgdXNpbmcgYXV0bz8gIFByb2JhYmx5IG5vdCBzaW5jZSBpdAotICAg
ICAgICAjIHdpbGwgYmUgcmVjbGFpbWVkIGFuZCB1c2VmdWwgZm9yIEMrKzB4LgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgaGFuZGxlX3JlZ2lzdGVyKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgaGFuZGxlX2NvbnN0KHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxl
X2lubGluZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9leHRlcm4oc2Vs
Zik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfc3RhdGljKHNlbGYpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3ZpcnR1YWwoc2VsZik6Ci0gICAgICAgICMgV2hhdCBm
b2xsb3dzIG11c3QgYmUgYSBtZXRob2QuCi0gICAgICAgIHRva2VuID0gdG9rZW4yID0gc2VsZi5f
R2V0TmV4dFRva2VuKCkKLSAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnaW5saW5lJzoKLSAgICAg
ICAgICAgICMgSEFDSyhubm9yd2l0eik6IGhhbmRsZSBpbmxpbmUgZHRvcnMgYnkgaWdub3Jpbmcg
J2lubGluZScuCi0gICAgICAgICAgICB0b2tlbjIgPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAg
ICAgICBpZiB0b2tlbjIudG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5TWU5UQVggYW5kIHRva2VuMi5u
YW1lID09ICd+JzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLkdldE1ldGhvZChGVU5DVElPTl9W
SVJUVUFMICsgRlVOQ1RJT05fRFRPUiwgTm9uZSkKLSAgICAgICAgYXNzZXJ0IHRva2VuLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuTkFNRSBvciB0b2tlbi5uYW1lID09ICc6OicsIHRva2VuCi0gICAg
ICAgIHJldHVybl90eXBlX2FuZF9uYW1lID0gc2VsZi5fR2V0VG9rZW5zVXBUbyh0b2tlbml6ZS5T
WU5UQVgsICcoJykgICMgKQotICAgICAgICByZXR1cm5fdHlwZV9hbmRfbmFtZS5pbnNlcnQoMCwg
dG9rZW4pCi0gICAgICAgIGlmIHRva2VuMiBpcyBub3QgdG9rZW46Ci0gICAgICAgICAgICByZXR1
cm5fdHlwZV9hbmRfbmFtZS5pbnNlcnQoMSwgdG9rZW4yKQotICAgICAgICByZXR1cm4gc2VsZi5f
R2V0TWV0aG9kKHJldHVybl90eXBlX2FuZF9uYW1lLCBGVU5DVElPTl9WSVJUVUFMLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEZhbHNlKQotCi0gICAgZGVmIGhhbmRsZV92
b2xhdGlsZShzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9tdXRhYmxlKHNl
bGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3B1YmxpYyhzZWxmKToKLSAgICAg
ICAgYXNzZXJ0IHNlbGYuaW5fY2xhc3MKLSAgICAgICAgc2VsZi52aXNpYmlsaXR5ID0gVklTSUJJ
TElUWV9QVUJMSUMKLQotICAgIGRlZiBoYW5kbGVfcHJvdGVjdGVkKHNlbGYpOgotICAgICAgICBh
c3NlcnQgc2VsZi5pbl9jbGFzcwotICAgICAgICBzZWxmLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZ
X1BST1RFQ1RFRAotCi0gICAgZGVmIGhhbmRsZV9wcml2YXRlKHNlbGYpOgotICAgICAgICBhc3Nl
cnQgc2VsZi5pbl9jbGFzcwotICAgICAgICBzZWxmLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX1BS
SVZBVEUKLQotICAgIGRlZiBoYW5kbGVfZnJpZW5kKHNlbGYpOgotICAgICAgICB0b2tlbnMgPSBz
ZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsnKQotICAgICAgICBhc3NlcnQg
dG9rZW5zCi0gICAgICAgIHQwID0gdG9rZW5zWzBdCi0gICAgICAgIHJldHVybiBGcmllbmQodDAu
c3RhcnQsIHQwLmVuZCwgdG9rZW5zLCBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgIGRlZiBo
YW5kbGVfc3RhdGljX2Nhc3Qoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVf
Y29uc3RfY2FzdChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9keW5hbWlj
X2Nhc3Qoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfcmVpbnRlcnByZXRf
Y2FzdChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9uZXcoc2VsZik6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfZGVsZXRlKHNlbGYpOgotICAgICAgICB0b2tl
bnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsnKQotICAgICAgICBh
c3NlcnQgdG9rZW5zCi0gICAgICAgIHJldHVybiBEZWxldGUodG9rZW5zWzBdLnN0YXJ0LCB0b2tl
bnNbMF0uZW5kLCB0b2tlbnMpCi0KLSAgICBkZWYgaGFuZGxlX3R5cGVkZWYoc2VsZik6Ci0gICAg
ICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgaWYgKHRva2VuLnRva2Vu
X3R5cGUgPT0gdG9rZW5pemUuTkFNRSBhbmQKLSAgICAgICAgICAgIGtleXdvcmRzLklzS2V5d29y
ZCh0b2tlbi5uYW1lKSk6Ci0gICAgICAgICAgICAjIFRva2VuIG11c3QgYmUgc3RydWN0L2VudW0v
dW5pb24vY2xhc3MuCi0gICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdoYW5kbGVf
JyArIHRva2VuLm5hbWUpCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGluZ190eXBlZGVmID0gVHJ1
ZQotICAgICAgICAgICAgdG9rZW5zID0gW21ldGhvZCgpXQotICAgICAgICAgICAgc2VsZi5faGFu
ZGxpbmdfdHlwZWRlZiA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0b2tlbnMg
PSBbdG9rZW5dCi0KLSAgICAgICAgIyBHZXQgdGhlIHJlbWFpbmRlciBvZiB0aGUgdHlwZWRlZiB1
cCB0byB0aGUgc2VtaS1jb2xvbi4KLSAgICAgICAgdG9rZW5zLmV4dGVuZChzZWxmLl9HZXRUb2tl
bnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsnKSkKLQotICAgICAgICAjIFRPRE8obm5vcndpdHop
OiBjbGVhbiBhbGwgdGhpcyB1cC4KLSAgICAgICAgYXNzZXJ0IHRva2VucwotICAgICAgICBuYW1l
ID0gdG9rZW5zLnBvcCgpCi0gICAgICAgIGluZGljZXMgPSBuYW1lCi0gICAgICAgIGlmIHRva2Vu
czoKLSAgICAgICAgICAgIGluZGljZXMgPSB0b2tlbnNbMF0KLSAgICAgICAgaWYgbm90IGluZGlj
ZXM6Ci0gICAgICAgICAgICBpbmRpY2VzID0gdG9rZW4KLSAgICAgICAgaWYgbmFtZS5uYW1lID09
ICcpJzoKLSAgICAgICAgICAgICMgSEFDSyhubm9yd2l0eik6IEhhbmRsZSBwb2ludGVycyB0byBm
dW5jdGlvbnMgInByb3Blcmx5Ii4KLSAgICAgICAgICAgIGlmIChsZW4odG9rZW5zKSA+PSA0IGFu
ZAotICAgICAgICAgICAgICAgIHRva2Vuc1sxXS5uYW1lID09ICcoJyBhbmQgdG9rZW5zWzJdLm5h
bWUgPT0gJyonKToKLSAgICAgICAgICAgICAgICB0b2tlbnMuYXBwZW5kKG5hbWUpCi0gICAgICAg
ICAgICAgICAgbmFtZSA9IHRva2Vuc1szXQotICAgICAgICBlbGlmIG5hbWUubmFtZSA9PSAnXSc6
Ci0gICAgICAgICAgICAjIEhBQ0sobm5vcndpdHopOiBIYW5kbGUgYXJyYXlzIHByb3Blcmx5Lgot
ICAgICAgICAgICAgaWYgbGVuKHRva2VucykgPj0gMjoKLSAgICAgICAgICAgICAgICB0b2tlbnMu
YXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZSA9IHRva2Vuc1sxXQotICAgICAgICBu
ZXdfdHlwZSA9IHRva2VucwotICAgICAgICBpZiB0b2tlbnMgYW5kIGlzaW5zdGFuY2UodG9rZW5z
WzBdLCB0b2tlbml6ZS5Ub2tlbik6Ci0gICAgICAgICAgICBuZXdfdHlwZSA9IHNlbGYuY29udmVy
dGVyLlRvVHlwZSh0b2tlbnMpWzBdCi0gICAgICAgIHJldHVybiBUeXBlZGVmKGluZGljZXMuc3Rh
cnQsIGluZGljZXMuZW5kLCBuYW1lLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIG5ld190
eXBlLCBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgIGRlZiBoYW5kbGVfdHlwZWlkKHNlbGYp
OgotICAgICAgICBwYXNzICAjIE5vdCBuZWVkZWQgeWV0LgotCi0gICAgZGVmIGhhbmRsZV90eXBl
bmFtZShzZWxmKToKLSAgICAgICAgcGFzcyAgIyBOb3QgbmVlZGVkIHlldC4KLQotICAgIGRlZiBf
R2V0VGVtcGxhdGVkVHlwZXMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHt9Ci0gICAgICAgIHRv
a2VucyA9IGxpc3Qoc2VsZi5fR2V0TWF0Y2hpbmdDaGFyKCc8JywgJz4nKSkKLSAgICAgICAgbGVu
X3Rva2VucyA9IGxlbih0b2tlbnMpIC0gMSAgICAjIElnbm9yZSB0cmFpbGluZyAnPicuCi0gICAg
ICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIGkgPCBsZW5fdG9rZW5zOgotICAgICAgICAgICAga2V5
ID0gdG9rZW5zW2ldLm5hbWUKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgaWYga2V5
d29yZHMuSXNLZXl3b3JkKGtleSkgb3Iga2V5ID09ICcsJzoKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgdHlwZV9uYW1lID0gZGVmYXVsdCA9IE5vbmUKLSAgICAgICAgICAg
IGlmIGkgPCBsZW5fdG9rZW5zOgotICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAg
ICAgIGlmIHRva2Vuc1tpLTFdLm5hbWUgPT0gJz0nOgotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQgaSA8IGxlbl90b2tlbnMsICclcyAlcycgJSAoaSwgdG9rZW5zKQotICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0LCB1bnVzZWRfbmV4dF90b2tlbiA9IHNlbGYuR2V0TmFtZSh0b2tlbnNbaTpd
KQotICAgICAgICAgICAgICAgICAgICBpICs9IGxlbihkZWZhdWx0KQotICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRva2Vuc1tpLTFdLm5hbWUgIT0gJywnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBnb3Qgc29tZXRoaW5nIGxpa2U6IFR5cGUgdmFy
aWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFJlLWFkanVzdCB0aGUga2V5ICh2YXJp
YWJsZSkgYW5kIHR5cGVfbmFtZSAoVHlwZSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXkg
PSB0b2tlbnNbaS0xXS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUgPSB0
b2tlbnNbaS0yXQotCi0gICAgICAgICAgICByZXN1bHRba2V5XSA9ICh0eXBlX25hbWUsIGRlZmF1
bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBoYW5kbGVfdGVtcGxhdGUoc2Vs
Zik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAgYXNzZXJ0
IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCB0b2tlbgotICAgICAgICBhc3Nl
cnQgdG9rZW4ubmFtZSA9PSAnPCcsIHRva2VuCi0gICAgICAgIHRlbXBsYXRlZF90eXBlcyA9IHNl
bGYuX0dldFRlbXBsYXRlZFR5cGVzKCkKLSAgICAgICAgIyBUT0RPKG5ub3J3aXR6KTogZm9yIG5v
dywganVzdCBpZ25vcmUgdGhlIHRlbXBsYXRlIHBhcmFtcy4KLSAgICAgICAgdG9rZW4gPSBzZWxm
Ll9HZXROZXh0VG9rZW4oKQotICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXpl
Lk5BTUU6Ci0gICAgICAgICAgICBpZiB0b2tlbi5uYW1lID09ICdjbGFzcyc6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX0dldENsYXNzKENsYXNzLCBWSVNJQklMSVRZX1BSSVZBVEUsIHRl
bXBsYXRlZF90eXBlcykKLSAgICAgICAgICAgIGVsaWYgdG9rZW4ubmFtZSA9PSAnc3RydWN0JzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fR2V0Q2xhc3MoU3RydWN0LCBWSVNJQklMSVRZ
X1BVQkxJQywgdGVtcGxhdGVkX3R5cGVzKQotICAgICAgICAgICAgZWxpZiB0b2tlbi5uYW1lID09
ICdmcmllbmQnOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9mcmllbmQoKQot
ICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW4odG9rZW4pCi0gICAgICAgIHRva2VucywgbGFzdCA9
IHNlbGYuX0dldFZhclRva2Vuc1VwVG8odG9rZW5pemUuU1lOVEFYLCAnKCcsICc7JykKLSAgICAg
ICAgdG9rZW5zLmFwcGVuZChsYXN0KQotICAgICAgICBzZWxmLl9BZGRCYWNrVG9rZW5zKHRva2Vu
cykKLSAgICAgICAgaWYgbGFzdC5uYW1lID09ICcoJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxm
LkdldE1ldGhvZChGVU5DVElPTl9OT05FLCB0ZW1wbGF0ZWRfdHlwZXMpCi0gICAgICAgICMgTXVz
dCBiZSBhIHZhcmlhYmxlIGRlZmluaXRpb24uCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBk
ZWYgaGFuZGxlX3RydWUoc2VsZik6Ci0gICAgICAgIHBhc3MgICMgTm90aGluZyB0byBkby4KLQot
ICAgIGRlZiBoYW5kbGVfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHBhc3MgICMgTm90aGluZyB0byBk
by4KLQotICAgIGRlZiBoYW5kbGVfYXNtKHNlbGYpOgotICAgICAgICBwYXNzICAjIE5vdCBuZWVk
ZWQgeWV0LgotCi0gICAgZGVmIGhhbmRsZV9jbGFzcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX0dldENsYXNzKENsYXNzLCBWSVNJQklMSVRZX1BSSVZBVEUsIE5vbmUpCi0KLSAgICBkZWYg
X0dldEJhc2VzKHNlbGYpOgotICAgICAgICAjIEdldCBiYXNlIGNsYXNzZXMuCi0gICAgICAgIGJh
c2VzID0gW10KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5fR2V0
TmV4dFRva2VuKCkKLSAgICAgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBlID09IHRva2Vu
aXplLk5BTUUsIHRva2VuCi0gICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBzdG9yZSBraW5k
IG9mIGluaGVyaXRhbmNlLi4ubWF5YmUuCi0gICAgICAgICAgICBpZiB0b2tlbi5uYW1lIG5vdCBp
biAoJ3B1YmxpYycsICdwcm90ZWN0ZWQnLCAncHJpdmF0ZScpOgotICAgICAgICAgICAgICAgICMg
SWYgaW5oZXJpdGFuY2UgdHlwZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBpcyBwcml2YXRlLgotICAg
ICAgICAgICAgICAgICMgSnVzdCBwdXQgdGhlIHRva2VuIGJhY2sgc28gd2UgY2FuIGZvcm0gYSBu
YW1lLgotICAgICAgICAgICAgICAgICMgVE9ETyhubm9yd2l0eik6IGl0IHdvdWxkIGJlIGdvb2Qg
dG8gd2FybiBhYm91dCB0aGlzLgotICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih0
b2tlbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBDaGVjayBmb3Igdmly
dHVhbCBpbmhlcml0YW5jZS4KLSAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX0dldE5leHRU
b2tlbigpCi0gICAgICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSAhPSAndmlydHVhbCc6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbih0b2tlbikKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFRPRE8obm5vcndpdHopOiBzdG9yZSB0aGF0
IHdlIGdvdCB2aXJ0dWFsIGZvciB0aGlzIGJhc2UuCi0gICAgICAgICAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgICAgIGJhc2UsIG5leHRfdG9rZW4gPSBzZWxmLkdldE5hbWUoKQotICAgICAgICAg
ICAgYmFzZXNfYXN0ID0gc2VsZi5jb252ZXJ0ZXIuVG9UeXBlKGJhc2UpCi0gICAgICAgICAgICBh
c3NlcnQgbGVuKGJhc2VzX2FzdCkgPT0gMSwgYmFzZXNfYXN0Ci0gICAgICAgICAgICBiYXNlcy5h
cHBlbmQoYmFzZXNfYXN0WzBdKQotICAgICAgICAgICAgYXNzZXJ0IG5leHRfdG9rZW4udG9rZW5f
dHlwZSA9PSB0b2tlbml6ZS5TWU5UQVgsIG5leHRfdG9rZW4KLSAgICAgICAgICAgIGlmIG5leHRf
dG9rZW4ubmFtZSA9PSAneyc6Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBuZXh0X3Rva2VuCi0g
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICMgU3VwcG9ydCBtdWx0aXBsZSBpbmhl
cml0YW5jZS4KLSAgICAgICAgICAgIGFzc2VydCBuZXh0X3Rva2VuLm5hbWUgPT0gJywnLCBuZXh0
X3Rva2VuCi0gICAgICAgIHJldHVybiBiYXNlcywgdG9rZW4KLQotICAgIGRlZiBfR2V0Q2xhc3Mo
c2VsZiwgY2xhc3NfdHlwZSwgdmlzaWJpbGl0eSwgdGVtcGxhdGVkX3R5cGVzKToKLSAgICAgICAg
Y2xhc3NfbmFtZSA9IE5vbmUKLSAgICAgICAgY2xhc3NfdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9r
ZW4oKQotICAgICAgICBpZiBjbGFzc190b2tlbi50b2tlbl90eXBlICE9IHRva2VuaXplLk5BTUU6
Ci0gICAgICAgICAgICBhc3NlcnQgY2xhc3NfdG9rZW4udG9rZW5fdHlwZSA9PSB0b2tlbml6ZS5T
WU5UQVgsIGNsYXNzX3Rva2VuCi0gICAgICAgICAgICB0b2tlbiA9IGNsYXNzX3Rva2VuCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFNraXAgYW55IG1hY3JvIChlLmcuIHN0b3JhZ2UgY2xh
c3Mgc3BlY2lmaWVycykgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAjICdjbGFzcycga2V5d29yZC4K
LSAgICAgICAgICAgIG5leHRfdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9rZW4oKQotICAgICAgICAg
ICAgaWYgbmV4dF90b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fQWRkQmFja1Rva2VuKG5leHRfdG9rZW4pCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX0FkZEJhY2tUb2tlbnMoW2NsYXNzX3Rva2VuLCBuZXh0X3Rv
a2VuXSkKLSAgICAgICAgICAgIG5hbWVfdG9rZW5zLCB0b2tlbiA9IHNlbGYuR2V0TmFtZSgpCi0g
ICAgICAgICAgICBjbGFzc19uYW1lID0gJycuam9pbihbdC5uYW1lIGZvciB0IGluIG5hbWVfdG9r
ZW5zXSkKLSAgICAgICAgYmFzZXMgPSBOb25lCi0gICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUg
PT0gdG9rZW5pemUuU1lOVEFYOgotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAnOyc6Ci0g
ICAgICAgICAgICAgICAgIyBGb3J3YXJkIGRlY2xhcmF0aW9uLgotICAgICAgICAgICAgICAgIHJl
dHVybiBjbGFzc190eXBlKGNsYXNzX3Rva2VuLnN0YXJ0LCBjbGFzc190b2tlbi5lbmQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfbmFtZSwgTm9uZSwgdGVtcGxhdGVk
X3R5cGVzLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFt
ZXNwYWNlX3N0YWNrKQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSBpbiAnKiYnOgotICAgICAg
ICAgICAgICAgICMgSW5saW5lIGZvcndhcmQgZGVjbGFyYXRpb24uICBDb3VsZCBiZSBtZXRob2Qg
b3IgZGF0YS4KLSAgICAgICAgICAgICAgICBuYW1lX3Rva2VuID0gc2VsZi5fR2V0TmV4dFRva2Vu
KCkKLSAgICAgICAgICAgICAgICBuZXh0X3Rva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAg
ICAgICAgICAgICAgICBpZiBuZXh0X3Rva2VuLm5hbWUgPT0gJzsnOgotICAgICAgICAgICAgICAg
ICAgICAjIEhhbmRsZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyA9IFsnY2xh
c3MnXQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fQ3JlYXRlVmFyaWFibGUoY2xh
c3NfdG9rZW4sIG5hbWVfdG9rZW4ubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIHRva2VuLm5hbWUsIE5vbmUpCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBBc3N1bWUgdGhpcyBpcyBh
IG1ldGhvZC4KLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zID0gKGNsYXNzX3Rva2VuLCB0b2tl
biwgbmFtZV90b2tlbiwgbmV4dF90b2tlbikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fQWRk
QmFja1Rva2Vucyh0b2tlbnMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkdldE1l
dGhvZChGVU5DVElPTl9OT05FLCBOb25lKQotICAgICAgICAgICAgaWYgdG9rZW4ubmFtZSA9PSAn
Oic6Ci0gICAgICAgICAgICAgICAgYmFzZXMsIHRva2VuID0gc2VsZi5fR2V0QmFzZXMoKQotCi0g
ICAgICAgIGJvZHkgPSBOb25lCi0gICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5p
emUuU1lOVEFYIGFuZCB0b2tlbi5uYW1lID09ICd7JzoKLSAgICAgICAgICAgIGFzc2VydCB0b2tl
bi50b2tlbl90eXBlID09IHRva2VuaXplLlNZTlRBWCwgdG9rZW4KLSAgICAgICAgICAgIGFzc2Vy
dCB0b2tlbi5uYW1lID09ICd7JywgdG9rZW4KLQotICAgICAgICAgICAgYXN0ID0gQXN0QnVpbGRl
cihzZWxmLkdldFNjb3BlKCksIHNlbGYuZmlsZW5hbWUsIGNsYXNzX25hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHksIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotICAg
ICAgICAgICAgYm9keSA9IGxpc3QoYXN0LkdlbmVyYXRlKCkpCi0KLSAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl9oYW5kbGluZ190eXBlZGVmOgotICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5f
R2V0TmV4dFRva2VuKCkKLSAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlICE9IHRv
a2VuaXplLk5BTUU6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCB0b2tlbi50b2tlbl90eXBl
ID09IHRva2VuaXplLlNZTlRBWCwgdG9rZW4KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHRv
a2VuLm5hbWUgPT0gJzsnLCB0b2tlbgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5ld19jbGFzcyA9IGNsYXNzX3R5cGUoY2xhc3NfdG9rZW4uc3RhcnQsIGNsYXNz
X3Rva2VuLmVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGFzc19uYW1lLCBiYXNlcywgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib2R5LCBzZWxmLm5hbWVzcGFjZV9zdGFjaykKLQotICAgICAgICAgICAgICAg
ICAgICBtb2RpZmllcnMgPSBbXQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fQ3Jl
YXRlVmFyaWFibGUoY2xhc3NfdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbi5uYW1lLCBuZXdfY2xhc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIHRva2VuLm5hbWUsIE5v
bmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5faGFuZGxpbmdfdHlw
ZWRlZjoKLSAgICAgICAgICAgICAgICBzZWxmLkhhbmRsZUVycm9yKCdub24tdHlwZWRlZiB0b2tl
bicsIHRva2VuKQotICAgICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2VuKHRva2VuKQotCi0gICAg
ICAgIHJldHVybiBjbGFzc190eXBlKGNsYXNzX3Rva2VuLnN0YXJ0LCBjbGFzc190b2tlbi5lbmQs
IGNsYXNzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzLCB0ZW1wbGF0ZWRf
dHlwZXMsIGJvZHksIHNlbGYubmFtZXNwYWNlX3N0YWNrKQotCi0gICAgZGVmIGhhbmRsZV9uYW1l
c3BhY2Uoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAg
ICAgIyBTdXBwb3J0IGFub255bW91cyBuYW1lc3BhY2VzLgotICAgICAgICBuYW1lID0gTm9uZQot
ICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09IHRva2VuaXplLk5BTUU6Ci0gICAgICAgICAg
ICBuYW1lID0gdG9rZW4ubmFtZQotICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9HZXROZXh0VG9r
ZW4oKQotICAgICAgICBzZWxmLm5hbWVzcGFjZV9zdGFjay5hcHBlbmQobmFtZSkKLSAgICAgICAg
YXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYLCB0b2tlbgotICAgICAg
ICAjIENyZWF0ZSBhbiBpbnRlcm5hbCB0b2tlbiB0aGF0IGRlbm90ZXMgd2hlbiB0aGUgbmFtZXNw
YWNlIGlzIGNvbXBsZXRlLgotICAgICAgICBpbnRlcm5hbF90b2tlbiA9IHRva2VuaXplLlRva2Vu
KF9JTlRFUk5BTF9UT0tFTiwgX05BTUVTUEFDRV9QT1AsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSkKLSAgICAgICAgaW50ZXJuYWxfdG9rZW4ud2hl
bmNlID0gdG9rZW4ud2hlbmNlCi0gICAgICAgIGlmIHRva2VuLm5hbWUgPT0gJz0nOgotICAgICAg
ICAgICAgIyBUT0RPKG5ub3J3aXR6KTogaGFuZGxlIGFsaWFzaW5nIG5hbWVzcGFjZXMuCi0gICAg
ICAgICAgICBuYW1lLCBuZXh0X3Rva2VuID0gc2VsZi5HZXROYW1lKCkKLSAgICAgICAgICAgIGFz
c2VydCBuZXh0X3Rva2VuLm5hbWUgPT0gJzsnLCBuZXh0X3Rva2VuCi0gICAgICAgICAgICBzZWxm
Ll9BZGRCYWNrVG9rZW4oaW50ZXJuYWxfdG9rZW4pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBhc3NlcnQgdG9rZW4ubmFtZSA9PSAneycsIHRva2VuCi0gICAgICAgICAgICB0b2tlbnMgPSBs
aXN0KHNlbGYuR2V0U2NvcGUoKSkKLSAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgdHJhaWxpbmcg
fSB3aXRoIHRoZSBpbnRlcm5hbCBuYW1lc3BhY2UgcG9wIHRva2VuLgotICAgICAgICAgICAgdG9r
ZW5zWy0xXSA9IGludGVybmFsX3Rva2VuCi0gICAgICAgICAgICAjIEhhbmRsZSBuYW1lc3BhY2Ug
d2l0aCBub3RoaW5nIGluIGl0LgotICAgICAgICAgICAgc2VsZi5fQWRkQmFja1Rva2Vucyh0b2tl
bnMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgaGFuZGxlX3VzaW5nKHNlbGYpOgot
ICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsn
KQotICAgICAgICBhc3NlcnQgdG9rZW5zCi0gICAgICAgIHJldHVybiBVc2luZyh0b2tlbnNbMF0u
c3RhcnQsIHRva2Vuc1swXS5lbmQsIHRva2VucykKLQotICAgIGRlZiBoYW5kbGVfZXhwbGljaXQo
c2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLmluX2NsYXNzCi0gICAgICAgICMgTm90aGluZyBt
dWNoIHRvIGRvLgotICAgICAgICAjIFRPRE8obm5vcndpdHopOiBtYXliZSB2ZXJpZnkgdGhlIG1l
dGhvZCBuYW1lID09IGNsYXNzIG5hbWUuCi0gICAgICAgICMgVGhpcyBtdXN0IGJlIGEgY3Rvci4K
LSAgICAgICAgcmV0dXJuIHNlbGYuR2V0TWV0aG9kKEZVTkNUSU9OX0NUT1IsIE5vbmUpCi0KLSAg
ICBkZWYgaGFuZGxlX3RoaXMoc2VsZik6Ci0gICAgICAgIHBhc3MgICMgTm90aGluZyB0byBkby4K
LQotICAgIGRlZiBoYW5kbGVfb3BlcmF0b3Ioc2VsZik6Ci0gICAgICAgICMgUHVsbCBvZmYgdGhl
IG5leHQgdG9rZW4ocz8pIGFuZCBtYWtlIHRoYXQgcGFydCBvZiB0aGUgbWV0aG9kIG5hbWUuCi0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfc2l6ZW9mKHNlbGYpOgotICAgICAgICBwYXNz
Ci0KLSAgICBkZWYgaGFuZGxlX2Nhc2Uoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBo
YW5kbGVfc3dpdGNoKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2RlZmF1
bHQoc2VsZik6Ci0gICAgICAgIHRva2VuID0gc2VsZi5fR2V0TmV4dFRva2VuKCkKLSAgICAgICAg
YXNzZXJ0IHRva2VuLnRva2VuX3R5cGUgPT0gdG9rZW5pemUuU1lOVEFYCi0gICAgICAgIGFzc2Vy
dCB0b2tlbi5uYW1lID09ICc6JwotCi0gICAgZGVmIGhhbmRsZV9pZihzZWxmKToKLSAgICAgICAg
cGFzcwotCi0gICAgZGVmIGhhbmRsZV9lbHNlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBk
ZWYgaGFuZGxlX3JldHVybihzZWxmKToKLSAgICAgICAgdG9rZW5zID0gc2VsZi5fR2V0VG9rZW5z
VXBUbyh0b2tlbml6ZS5TWU5UQVgsICc7JykKLSAgICAgICAgaWYgbm90IHRva2VuczoKLSAgICAg
ICAgICAgIHJldHVybiBSZXR1cm4oc2VsZi5jdXJyZW50X3Rva2VuLnN0YXJ0LCBzZWxmLmN1cnJl
bnRfdG9rZW4uZW5kLCBOb25lKQotICAgICAgICByZXR1cm4gUmV0dXJuKHRva2Vuc1swXS5zdGFy
dCwgdG9rZW5zWzBdLmVuZCwgdG9rZW5zKQotCi0gICAgZGVmIGhhbmRsZV9nb3RvKHNlbGYpOgot
ICAgICAgICB0b2tlbnMgPSBzZWxmLl9HZXRUb2tlbnNVcFRvKHRva2VuaXplLlNZTlRBWCwgJzsn
KQotICAgICAgICBhc3NlcnQgbGVuKHRva2VucykgPT0gMSwgc3RyKHRva2VucykKLSAgICAgICAg
cmV0dXJuIEdvdG8odG9rZW5zWzBdLnN0YXJ0LCB0b2tlbnNbMF0uZW5kLCB0b2tlbnNbMF0ubmFt
ZSkKLQotICAgIGRlZiBoYW5kbGVfdHJ5KHNlbGYpOgotICAgICAgICBwYXNzICAjIE5vdCBuZWVk
ZWQgeWV0LgotCi0gICAgZGVmIGhhbmRsZV9jYXRjaChzZWxmKToKLSAgICAgICAgcGFzcyAgIyBO
b3QgbmVlZGVkIHlldC4KLQotICAgIGRlZiBoYW5kbGVfdGhyb3coc2VsZik6Ci0gICAgICAgIHBh
c3MgICMgTm90IG5lZWRlZCB5ZXQuCi0KLSAgICBkZWYgaGFuZGxlX3doaWxlKHNlbGYpOgotICAg
ICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX2RvKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgaGFuZGxlX2ZvcihzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV9i
cmVhayhzZWxmKToKLSAgICAgICAgc2VsZi5fSWdub3JlVXBUbyh0b2tlbml6ZS5TWU5UQVgsICc7
JykKLQotICAgIGRlZiBoYW5kbGVfY29udGludWUoc2VsZik6Ci0gICAgICAgIHNlbGYuX0lnbm9y
ZVVwVG8odG9rZW5pemUuU1lOVEFYLCAnOycpCi0KLQotZGVmIEJ1aWxkZXJGcm9tU291cmNlKHNv
dXJjZSwgZmlsZW5hbWUpOgotICAgICIiIlV0aWxpdHkgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBB
c3RCdWlsZGVyIGZyb20gc291cmNlIGNvZGUuCi0KLSAgICBBcmdzOgotICAgICAgc291cmNlOiAn
QysrIHNvdXJjZSBjb2RlJwotICAgICAgZmlsZW5hbWU6ICdmaWxlMScKLQotICAgIFJldHVybnM6
Ci0gICAgICBBc3RCdWlsZGVyCi0gICAgIiIiCi0gICAgcmV0dXJuIEFzdEJ1aWxkZXIodG9rZW5p
emUuR2V0VG9rZW5zKHNvdXJjZSksIGZpbGVuYW1lKQotCi0KLWRlZiBQcmludEluZGVudGlmaWVy
cyhmaWxlbmFtZSwgc2hvdWxkX3ByaW50KToKLSAgICAiIiJQcmludHMgYWxsIGlkZW50aWZpZXJz
IGZvciBhIEMrKyBzb3VyY2UgZmlsZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogJ2Zp
bGUxJwotICAgICAgc2hvdWxkX3ByaW50OiBwcmVkaWNhdGUgd2l0aCBzaWduYXR1cmU6IGJvb2wg
RnVuY3Rpb24odG9rZW4pCi0gICAgIiIiCi0gICAgc291cmNlID0gdXRpbHMuUmVhZEZpbGUoZmls
ZW5hbWUsIEZhbHNlKQotICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCdVbmFibGUgdG8gZmluZDogJXNcbicgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJu
Ci0KLSAgICAjcHJpbnQoJ1Byb2Nlc3NpbmcgJXMnICUgYWN0dWFsX2ZpbGVuYW1lKQotICAgIGJ1
aWxkZXIgPSBCdWlsZGVyRnJvbVNvdXJjZShzb3VyY2UsIGZpbGVuYW1lKQotICAgIHRyeToKLSAg
ICAgICAgZm9yIG5vZGUgaW4gYnVpbGRlci5HZW5lcmF0ZSgpOgotICAgICAgICAgICAgaWYgc2hv
dWxkX3ByaW50KG5vZGUpOgotICAgICAgICAgICAgICAgIHByaW50KG5vZGUubmFtZSkKLSAgICBl
eGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHJldHVybgotICAgIGV4Y2VwdDoKLSAg
ICAgICAgcGFzcwotCi0KLWRlZiBQcmludEFsbEluZGVudGlmaWVycyhmaWxlbmFtZXMsIHNob3Vs
ZF9wcmludCk6Ci0gICAgIiIiUHJpbnRzIGFsbCBpZGVudGlmaWVycyBmb3IgZWFjaCBDKysgc291
cmNlIGZpbGUgaW4gZmlsZW5hbWVzLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lczogWydm
aWxlMScsICdmaWxlMicsIC4uLl0KLSAgICAgIHNob3VsZF9wcmludDogcHJlZGljYXRlIHdpdGgg
c2lnbmF0dXJlOiBib29sIEZ1bmN0aW9uKHRva2VuKQotICAgICIiIgotICAgIGZvciBwYXRoIGlu
IGZpbGVuYW1lczoKLSAgICAgICAgUHJpbnRJbmRlbnRpZmllcnMocGF0aCwgc2hvdWxkX3ByaW50
KQotCi0KLWRlZiBtYWluKGFyZ3YpOgotICAgIGZvciBmaWxlbmFtZSBpbiBhcmd2WzE6XToKLSAg
ICAgICAgc291cmNlID0gdXRpbHMuUmVhZEZpbGUoZmlsZW5hbWUpCi0gICAgICAgIGlmIHNvdXJj
ZSBpcyBOb25lOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBwcmludCgnUHJvY2Vz
c2luZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgYnVpbGRlciA9IEJ1aWxkZXJGcm9tU291cmNl
KHNvdXJjZSwgZmlsZW5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVudGlyZV9hc3Qg
PSBmaWx0ZXIoTm9uZSwgYnVpbGRlci5HZW5lcmF0ZSgpKQotICAgICAgICBleGNlcHQgS2V5Ym9h
cmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0OgotICAgICAg
ICAgICAgIyBBbHJlYWR5IHByaW50ZWQgYSB3YXJuaW5nLCBwcmludCB0aGUgdHJhY2ViYWNrIGFu
ZCBjb250aW51ZS4KLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgaWYgdXRpbHMuREVCVUc6Ci0gICAgICAgICAgICAgICAgZm9yIGFz
dCBpbiBlbnRpcmVfYXN0OgotICAgICAgICAgICAgICAgICAgICBwcmludChhc3QpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKHN5cy5hcmd2KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNzLnB5IGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNzLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCBmOTk2NmNiYjRiMGUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3MucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwyMjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAy
MDA4IEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMgeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotIiIiR2VuZXJhdGUgR29vZ2xlIE1vY2sgY2xh
c3NlcyBmcm9tIGJhc2UgY2xhc3Nlcy4KLQotVGhpcyBwcm9ncmFtIHdpbGwgcmVhZCBpbiBhIEMr
KyBzb3VyY2UgZmlsZSBhbmQgb3V0cHV0IHRoZSBHb29nbGUgTW9jawotY2xhc3NlcyBmb3IgdGhl
IHNwZWNpZmllZCBjbGFzc2VzLiAgSWYgbm8gY2xhc3MgaXMgc3BlY2lmaWVkLCBhbGwKLWNsYXNz
ZXMgaW4gdGhlIHNvdXJjZSBmaWxlIGFyZSBlbWl0dGVkLgotCi1Vc2FnZToKLSAgZ21vY2tfY2xh
c3MucHkgaGVhZGVyLWZpbGUuaCBbQ2xhc3NOYW1lXS4uLgotCi1PdXRwdXQgaXMgc2VudCB0byBz
dGRvdXQuCi0iIiIKLQotX19hdXRob3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29tIChOZWFsIE5v
cndpdHopJwotCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWZyb20gY3Bw
IGltcG9ydCBhc3QKLWZyb20gY3BwIGltcG9ydCB1dGlscwotCi0jIFByZXNlcnZlIGNvbXBhdGli
aWxpdHkgd2l0aCBQeXRob24gMi4zLgotdHJ5OgotICBfZHVtbXkgPSBzZXQKLWV4Y2VwdCBOYW1l
RXJyb3I6Ci0gIGltcG9ydCBzZXRzCi0gIHNldCA9IHNldHMuU2V0Ci0KLV9WRVJTSU9OID0gKDEs
IDAsIDEpICAjIFRoZSB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0LgotIyBIb3cgbWFueSBzcGFjZXMg
dG8gaW5kZW50LiAgQ2FuIHNldCBtZSB3aXRoIHRoZSBJTkRFTlQgZW52aXJvbm1lbnQgdmFyaWFi
bGUuCi1fSU5ERU5UID0gMgotCi0KLWRlZiBfR2VuZXJhdGVNZXRob2RzKG91dHB1dF9saW5lcywg
c291cmNlLCBjbGFzc19ub2RlKToKLSAgZnVuY3Rpb25fdHlwZSA9IChhc3QuRlVOQ1RJT05fVklS
VFVBTCB8IGFzdC5GVU5DVElPTl9QVVJFX1ZJUlRVQUwgfAotICAgICAgICAgICAgICAgICAgIGFz
dC5GVU5DVElPTl9PVkVSUklERSkKLSAgY3Rvcl9vcl9kdG9yID0gYXN0LkZVTkNUSU9OX0NUT1Ig
fCBhc3QuRlVOQ1RJT05fRFRPUgotICBpbmRlbnQgPSAnICcgKiBfSU5ERU5UCi0KLSAgZm9yIG5v
ZGUgaW4gY2xhc3Nfbm9kZS5ib2R5OgotICAgICMgV2Ugb25seSBjYXJlIGFib3V0IHZpcnR1YWwg
ZnVuY3Rpb25zLgotICAgIGlmIChpc2luc3RhbmNlKG5vZGUsIGFzdC5GdW5jdGlvbikgYW5kCi0g
ICAgICAgIG5vZGUubW9kaWZpZXJzICYgZnVuY3Rpb25fdHlwZSBhbmQKLSAgICAgICAgbm90IG5v
ZGUubW9kaWZpZXJzICYgY3Rvcl9vcl9kdG9yKToKLSAgICAgICMgUGljayBvdXQgYWxsIHRoZSBl
bGVtZW50cyB3ZSBuZWVkIGZyb20gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLgotICAgICAgY29uc3Qg
PSAnJwotICAgICAgaWYgbm9kZS5tb2RpZmllcnMgJiBhc3QuRlVOQ1RJT05fQ09OU1Q6Ci0gICAg
ICAgIGNvbnN0ID0gJ0NPTlNUXycKLSAgICAgIHJldHVybl90eXBlID0gJ3ZvaWQnCi0gICAgICBp
ZiBub2RlLnJldHVybl90eXBlOgotICAgICAgICAjIEFkZCBtb2RpZmllcnMgbGlrZSAnY29uc3Qn
LgotICAgICAgICBtb2RpZmllcnMgPSAnJwotICAgICAgICBpZiBub2RlLnJldHVybl90eXBlLm1v
ZGlmaWVyczoKLSAgICAgICAgICBtb2RpZmllcnMgPSAnICcuam9pbihub2RlLnJldHVybl90eXBl
Lm1vZGlmaWVycykgKyAnICcKLSAgICAgICAgcmV0dXJuX3R5cGUgPSBtb2RpZmllcnMgKyBub2Rl
LnJldHVybl90eXBlLm5hbWUKLSAgICAgICAgdGVtcGxhdGVfYXJncyA9IFthcmcubmFtZSBmb3Ig
YXJnIGluIG5vZGUucmV0dXJuX3R5cGUudGVtcGxhdGVkX3R5cGVzXQotICAgICAgICBpZiB0ZW1w
bGF0ZV9hcmdzOgotICAgICAgICAgIHJldHVybl90eXBlICs9ICc8JyArICcsICcuam9pbih0ZW1w
bGF0ZV9hcmdzKSArICc+JwotICAgICAgICAgIGlmIGxlbih0ZW1wbGF0ZV9hcmdzKSA+IDE6Ci0g
ICAgICAgICAgICBmb3IgbGluZSBpbiBbCi0gICAgICAgICAgICAgICAgJy8vIFRoZSBmb2xsb3dp
bmcgbGluZSB3b25cJ3QgcmVhbGx5IGNvbXBpbGUsIGFzIHRoZSByZXR1cm4nLAotICAgICAgICAg
ICAgICAgICcvLyB0eXBlIGhhcyBtdWx0aXBsZSB0ZW1wbGF0ZSBhcmd1bWVudHMuICBUbyBmaXgg
aXQsIHVzZSBhJywKLSAgICAgICAgICAgICAgICAnLy8gdHlwZWRlZiBmb3IgdGhlIHJldHVybiB0
eXBlLiddOgotICAgICAgICAgICAgICBvdXRwdXRfbGluZXMuYXBwZW5kKGluZGVudCArIGxpbmUp
Ci0gICAgICAgIGlmIG5vZGUucmV0dXJuX3R5cGUucG9pbnRlcjoKLSAgICAgICAgICByZXR1cm5f
dHlwZSArPSAnKicKLSAgICAgICAgaWYgbm9kZS5yZXR1cm5fdHlwZS5yZWZlcmVuY2U6Ci0gICAg
ICAgICAgcmV0dXJuX3R5cGUgKz0gJyYnCi0gICAgICAgIG51bV9wYXJhbWV0ZXJzID0gbGVuKG5v
ZGUucGFyYW1ldGVycykKLSAgICAgICAgaWYgbGVuKG5vZGUucGFyYW1ldGVycykgPT0gMToKLSAg
ICAgICAgICBmaXJzdF9wYXJhbSA9IG5vZGUucGFyYW1ldGVyc1swXQotICAgICAgICAgIGlmIHNv
dXJjZVtmaXJzdF9wYXJhbS5zdGFydDpmaXJzdF9wYXJhbS5lbmRdLnN0cmlwKCkgPT0gJ3ZvaWQn
OgotICAgICAgICAgICAgIyBXZSBtdXN0IHRyZWF0IFQodm9pZCkgYXMgYSBmdW5jdGlvbiB3aXRo
IG5vIHBhcmFtZXRlcnMuCi0gICAgICAgICAgICBudW1fcGFyYW1ldGVycyA9IDAKLSAgICAgIHRt
cGwgPSAnJwotICAgICAgaWYgY2xhc3Nfbm9kZS50ZW1wbGF0ZWRfdHlwZXM6Ci0gICAgICAgIHRt
cGwgPSAnX1QnCi0gICAgICBtb2NrX21ldGhvZF9tYWNybyA9ICdNT0NLXyVzTUVUSE9EJWQlcycg
JSAoY29uc3QsIG51bV9wYXJhbWV0ZXJzLCB0bXBsKQotCi0gICAgICBhcmdzID0gJycKLSAgICAg
IGlmIG5vZGUucGFyYW1ldGVyczoKLSAgICAgICAgIyBEdWUgdG8gdGhlIHBhcnNlciBsaW1pdGF0
aW9ucywgaXQgaXMgaW1wb3NzaWJsZSB0byBrZWVwIGNvbW1lbnRzCi0gICAgICAgICMgd2hpbGUg
c3RyaXBwaW5nIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMuICBXaGVuIGRlZmF1bHRzIGFyZQotICAg
ICAgICAjIHByZXNlbnQsIHdlIGNob29zZSB0byBzdHJpcCB0aGVtIGFuZCBjb21tZW50cyAoYW5k
IHByb2R1Y2UKLSAgICAgICAgIyBjb21waWxhYmxlIGNvZGUpLgotICAgICAgICAjIFRPRE8obm5v
cndpdHpAZ29vZ2xlLmNvbSk6IEludmVzdGlnYXRlIHdoZXRoZXIgaXQgaXMgcG9zc2libGUgdG8K
LSAgICAgICAgIyBwcmVzZXJ2ZSBwYXJhbWV0ZXIgbmFtZSB3aGVuIHJlY29uc3RydWN0aW5nIHBh
cmFtZXRlciB0ZXh0IGZyb20KLSAgICAgICAgIyB0aGUgQVNULgotICAgICAgICBpZiBsZW4oW3Bh
cmFtIGZvciBwYXJhbSBpbiBub2RlLnBhcmFtZXRlcnMgaWYgcGFyYW0uZGVmYXVsdF0pID4gMDoK
LSAgICAgICAgICBhcmdzID0gJywgJy5qb2luKHBhcmFtLnR5cGUubmFtZSBmb3IgcGFyYW0gaW4g
bm9kZS5wYXJhbWV0ZXJzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICMgR2V0IHRoZSBmdWxs
IHRleHQgb2YgdGhlIHBhcmFtZXRlcnMgZnJvbSB0aGUgc3RhcnQKLSAgICAgICAgICAjIG9mIHRo
ZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBwYXJhbWV0ZXIuCi0gICAg
ICAgICAgc3RhcnQgPSBub2RlLnBhcmFtZXRlcnNbMF0uc3RhcnQKLSAgICAgICAgICBlbmQgPSBu
b2RlLnBhcmFtZXRlcnNbLTFdLmVuZAotICAgICAgICAgICMgUmVtb3ZlIC8vIGNvbW1lbnRzLgot
ICAgICAgICAgIGFyZ3Nfc3RyaW5ncyA9IHJlLnN1YihyJy8vLionLCAnJywgc291cmNlW3N0YXJ0
OmVuZF0pCi0gICAgICAgICAgIyBDb25kZW5zZSBtdWx0aXBsZSBzcGFjZXMgYW5kIGVsaW1pbmF0
ZSBuZXdsaW5lcyBwdXR0aW5nIHRoZQotICAgICAgICAgICMgcGFyYW1ldGVycyB0b2dldGhlciBv
biBhIHNpbmdsZSBsaW5lLiAgRW5zdXJlIHRoZXJlIGlzIGEKLSAgICAgICAgICAjIHNwYWNlIGlu
IGFuIGFyZ3VtZW50IHdoaWNoIGlzIHNwbGl0IGJ5IGEgbmV3bGluZSB3aXRob3V0Ci0gICAgICAg
ICAgIyBpbnRlcnZlbmluZyB3aGl0ZXNwYWNlLCBlLmcuOiBpbnRcbkJhcgotICAgICAgICAgIGFy
Z3MgPSByZS5zdWIoJyAgKycsICcgJywgYXJnc19zdHJpbmdzLnJlcGxhY2UoJ1xuJywgJyAnKSkK
LQotICAgICAgIyBDcmVhdGUgdGhlIG1vY2sgbWV0aG9kIGRlZmluaXRpb24uCi0gICAgICBvdXRw
dXRfbGluZXMuZXh0ZW5kKFsnJXMlcyglcywnICUgKGluZGVudCwgbW9ja19tZXRob2RfbWFjcm8s
IG5vZGUubmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMlcyglcykpOycgJSAo
aW5kZW50KjMsIHJldHVybl90eXBlLCBhcmdzKV0pCi0KLQotZGVmIF9HZW5lcmF0ZU1vY2tzKGZp
bGVuYW1lLCBzb3VyY2UsIGFzdF9saXN0LCBkZXNpcmVkX2NsYXNzX25hbWVzKToKLSAgcHJvY2Vz
c2VkX2NsYXNzX25hbWVzID0gc2V0KCkKLSAgbGluZXMgPSBbXQotICBmb3Igbm9kZSBpbiBhc3Rf
bGlzdDoKLSAgICBpZiAoaXNpbnN0YW5jZShub2RlLCBhc3QuQ2xhc3MpIGFuZCBub2RlLmJvZHkg
YW5kCi0gICAgICAgICMgZGVzaXJlZF9jbGFzc19uYW1lcyBiZWluZyBOb25lIG1lYW5zIHRoYXQg
YWxsIGNsYXNzZXMgYXJlIHNlbGVjdGVkLgotICAgICAgICAobm90IGRlc2lyZWRfY2xhc3NfbmFt
ZXMgb3Igbm9kZS5uYW1lIGluIGRlc2lyZWRfY2xhc3NfbmFtZXMpKToKLSAgICAgIGNsYXNzX25h
bWUgPSBub2RlLm5hbWUKLSAgICAgIHBhcmVudF9uYW1lID0gY2xhc3NfbmFtZQotICAgICAgcHJv
Y2Vzc2VkX2NsYXNzX25hbWVzLmFkZChjbGFzc19uYW1lKQotICAgICAgY2xhc3Nfbm9kZSA9IG5v
ZGUKLSAgICAgICMgQWRkIG5hbWVzcGFjZSBiZWZvcmUgdGhlIGNsYXNzLgotICAgICAgaWYgY2xh
c3Nfbm9kZS5uYW1lc3BhY2U6Ci0gICAgICAgIGxpbmVzLmV4dGVuZChbJ25hbWVzcGFjZSAlcyB7
JyAlIG4gZm9yIG4gaW4gY2xhc3Nfbm9kZS5uYW1lc3BhY2VdKSAgIyB9Ci0gICAgICAgIGxpbmVz
LmFwcGVuZCgnJykKLQotICAgICAgIyBBZGQgdGVtcGxhdGUgYXJncyBmb3IgdGVtcGxhdGVkIGNs
YXNzZXMuCi0gICAgICBpZiBjbGFzc19ub2RlLnRlbXBsYXRlZF90eXBlczoKLSAgICAgICAgIyBU
T0RPKHBhdWxjaGFuZyk6IFRoZSBBU1QgZG9lc24ndCBwcmVzZXJ2ZSB0ZW1wbGF0ZSBhcmd1bWVu
dCBvcmRlciwKLSAgICAgICAgIyBzbyB3ZSBoYXZlIHRvIG1ha2UgdXAgbmFtZXMgaGVyZS4KLSAg
ICAgICAgIyBUT0RPKHBhdWxjaGFuZyk6IEhhbmRsZSBub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVu
dHMgKGUuZy4KLSAgICAgICAgIyB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBpbnQgTj4pLgotICAgICAg
ICB0ZW1wbGF0ZV9hcmdfY291bnQgPSBsZW4oY2xhc3Nfbm9kZS50ZW1wbGF0ZWRfdHlwZXMua2V5
cygpKQotICAgICAgICB0ZW1wbGF0ZV9hcmdzID0gWydUJWQnICUgbiBmb3IgbiBpbiByYW5nZSh0
ZW1wbGF0ZV9hcmdfY291bnQpXQotICAgICAgICB0ZW1wbGF0ZV9kZWNscyA9IFsndHlwZW5hbWUg
JyArIGFyZyBmb3IgYXJnIGluIHRlbXBsYXRlX2FyZ3NdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgn
dGVtcGxhdGUgPCcgKyAnLCAnLmpvaW4odGVtcGxhdGVfZGVjbHMpICsgJz4nKQotICAgICAgICBw
YXJlbnRfbmFtZSArPSAnPCcgKyAnLCAnLmpvaW4odGVtcGxhdGVfYXJncykgKyAnPicKLQotICAg
ICAgIyBBZGQgdGhlIGNsYXNzIHByb2xvZy4KLSAgICAgIGxpbmVzLmFwcGVuZCgnY2xhc3MgTW9j
ayVzIDogcHVibGljICVzIHsnICAjIH0KLSAgICAgICAgICAgICAgICAgICAlIChjbGFzc19uYW1l
LCBwYXJlbnRfbmFtZSkpCi0gICAgICBsaW5lcy5hcHBlbmQoJyVzcHVibGljOicgJSAoJyAnICog
KF9JTkRFTlQgLy8gMikpKQotCi0gICAgICAjIEFkZCBhbGwgdGhlIG1ldGhvZHMuCi0gICAgICBf
R2VuZXJhdGVNZXRob2RzKGxpbmVzLCBzb3VyY2UsIGNsYXNzX25vZGUpCi0KLSAgICAgICMgQ2xv
c2UgdGhlIGNsYXNzLgotICAgICAgaWYgbGluZXM6Ci0gICAgICAgICMgSWYgdGhlcmUgYXJlIG5v
IHZpcnR1YWwgbWV0aG9kcywgbm8gbmVlZCBmb3IgYSBwdWJsaWMgbGFiZWwuCi0gICAgICAgIGlm
IGxlbihsaW5lcykgPT0gMjoKLSAgICAgICAgICBkZWwgbGluZXNbLTFdCi0KLSAgICAgICAgIyBP
bmx5IGNsb3NlIHRoZSBjbGFzcyBpZiB0aGVyZSByZWFsbHkgaXMgYSBjbGFzcy4KLSAgICAgICAg
bGluZXMuYXBwZW5kKCd9OycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnJykgICMgQWRkIGFuIGV4
dHJhIG5ld2xpbmUuCi0KLSAgICAgICMgQ2xvc2UgdGhlIG5hbWVzcGFjZS4KLSAgICAgIGlmIGNs
YXNzX25vZGUubmFtZXNwYWNlOgotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY2xhc3Nfbm9k
ZS5uYW1lc3BhY2UpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgbGluZXMuYXBwZW5kKCd9ICAvLyBu
YW1lc3BhY2UgJXMnICUgY2xhc3Nfbm9kZS5uYW1lc3BhY2VbaV0pCi0gICAgICAgIGxpbmVzLmFw
cGVuZCgnJykgICMgQWRkIGFuIGV4dHJhIG5ld2xpbmUuCi0KLSAgaWYgZGVzaXJlZF9jbGFzc19u
YW1lczoKLSAgICBtaXNzaW5nX2NsYXNzX25hbWVfbGlzdCA9IGxpc3QoZGVzaXJlZF9jbGFzc19u
YW1lcyAtIHByb2Nlc3NlZF9jbGFzc19uYW1lcykKLSAgICBpZiBtaXNzaW5nX2NsYXNzX25hbWVf
bGlzdDoKLSAgICAgIG1pc3NpbmdfY2xhc3NfbmFtZV9saXN0LnNvcnQoKQotICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnQ2xhc3MoZXMpIG5vdCBmb3VuZCBpbiAlczogJXNcbicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAoZmlsZW5hbWUsICcsICcuam9pbihtaXNzaW5nX2NsYXNzX25hbWVfbGlz
dCkpKQotICBlbGlmIG5vdCBwcm9jZXNzZWRfY2xhc3NfbmFtZXM6Ci0gICAgc3lzLnN0ZGVyci53
cml0ZSgnTm8gY2xhc3MgZm91bmQgaW4gJXNcbicgJSBmaWxlbmFtZSkKLQotICByZXR1cm4gbGlu
ZXMKLQotCi1kZWYgbWFpbihhcmd2PXN5cy5hcmd2KToKLSAgaWYgbGVuKGFyZ3YpIDwgMjoKLSAg
ICBzeXMuc3RkZXJyLndyaXRlKCdHb29nbGUgTW9jayBDbGFzcyBHZW5lcmF0b3IgdiVzXG5cbicg
JQotICAgICAgICAgICAgICAgICAgICAgJy4nLmpvaW4obWFwKHN0ciwgX1ZFUlNJT04pKSkKLSAg
ICBzeXMuc3RkZXJyLndyaXRlKF9fZG9jX18pCi0gICAgcmV0dXJuIDEKLQotICBnbG9iYWwgX0lO
REVOVAotICB0cnk6Ci0gICAgX0lOREVOVCA9IGludChvcy5lbnZpcm9uWydJTkRFTlQnXSkKLSAg
ZXhjZXB0IEtleUVycm9yOgotICAgIHBhc3MKLSAgZXhjZXB0OgotICAgIHN5cy5zdGRlcnIud3Jp
dGUoJ1VuYWJsZSB0byB1c2UgaW5kZW50IG9mICVzXG4nICUgb3MuZW52aXJvbi5nZXQoJ0lOREVO
VCcpKQotCi0gIGZpbGVuYW1lID0gYXJndlsxXQotICBkZXNpcmVkX2NsYXNzX25hbWVzID0gTm9u
ZSAgIyBOb25lIG1lYW5zIGFsbCBjbGFzc2VzIGluIHRoZSBzb3VyY2UgZmlsZS4KLSAgaWYgbGVu
KGFyZ3YpID49IDM6Ci0gICAgZGVzaXJlZF9jbGFzc19uYW1lcyA9IHNldChhcmd2WzI6XSkKLSAg
c291cmNlID0gdXRpbHMuUmVhZEZpbGUoZmlsZW5hbWUpCi0gIGlmIHNvdXJjZSBpcyBOb25lOgot
ICAgIHJldHVybiAxCi0KLSAgYnVpbGRlciA9IGFzdC5CdWlsZGVyRnJvbVNvdXJjZShzb3VyY2Us
IGZpbGVuYW1lKQotICB0cnk6Ci0gICAgZW50aXJlX2FzdCA9IGZpbHRlcihOb25lLCBidWlsZGVy
LkdlbmVyYXRlKCkpCi0gIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICByZXR1cm4KLSAg
ZXhjZXB0OgotICAgICMgQW4gZXJyb3IgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcmludGVkIHNpbmNl
IHdlIGNvdWxkbid0IHBhcnNlLgotICAgIHN5cy5leGl0KDEpCi0gIGVsc2U6Ci0gICAgbGluZXMg
PSBfR2VuZXJhdGVNb2NrcyhmaWxlbmFtZSwgc291cmNlLCBlbnRpcmVfYXN0LCBkZXNpcmVkX2Ns
YXNzX25hbWVzKQotICAgIHN5cy5zdGRvdXQud3JpdGUoJ1xuJy5qb2luKGxpbmVzKSkKLQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBtYWluKHN5cy5hcmd2KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNzX3Rlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvZ21vY2tfY2xhc3NfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDE4ZjkwYTY1MGQxLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL2dtb2NrX2NsYXNzX3Rlc3QucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw0NDggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
Ci0jIENvcHlyaWdodCAyMDA5IE5lYWwgTm9yd2l0eiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIyBQ
b3J0aW9ucyBDb3B5cmlnaHQgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
IwotIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKLSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAotIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotIiIiVGVzdHMg
Zm9yIGdtb2NrLnNjcmlwdHMuZ2VuZXJhdG9yLmNwcC5nbW9ja19jbGFzcy4iIiIKLQotX19hdXRo
b3JfXyA9ICdubm9yd2l0ekBnb29nbGUuY29tIChOZWFsIE5vcndpdHopJwotCi0KLWltcG9ydCBv
cwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLSMgQWxsb3cgdGhlIGNwcCBpbXBvcnRz
IGJlbG93IHRvIHdvcmsgd2hlbiBydW4gYXMgYSBzdGFuZGFsb25lIHNjcmlwdC4KLXN5cy5wYXRo
LmFwcGVuZChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJykpCi0K
LWZyb20gY3BwIGltcG9ydCBhc3QKLWZyb20gY3BwIGltcG9ydCBnbW9ja19jbGFzcwotCi0KLWNs
YXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgIiIiSGVscGVyIGNsYXNzIHRoYXQg
YWRkcyBhc3NlcnQgbWV0aG9kcy4iIiIKLQotICBkZWYgU3RyaXBMZWFkaW5nV2hpdGVzcGFjZShz
ZWxmLCBsaW5lcyk6Ci0gICAgIiIiU3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlIGluIGVhY2ggbGlu
ZSBpbiAnbGluZXMnLiIiIgotICAgIHJldHVybiAnXG4nLmpvaW4oW3MubHN0cmlwKCkgZm9yIHMg
aW4gbGluZXMuc3BsaXQoJ1xuJyldKQotCi0gIGRlZiBhc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdX
aGl0ZXNwYWNlKHNlbGYsIGV4cGVjdGVkX2xpbmVzLCBsaW5lcyk6Ci0gICAgIiIiU3BlY2lhbGl6
ZWQgYXNzZXJ0IHRoYXQgaWdub3JlcyB0aGUgaW5kZW50IGxldmVsLiIiIgotICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXhwZWN0ZWRfbGluZXMsIHNlbGYuU3RyaXBMZWFkaW5nV2hpdGVzcGFjZShsaW5l
cykpCi0KLQotY2xhc3MgR2VuZXJhdGVNZXRob2RzVGVzdChUZXN0Q2FzZSk6Ci0KLSAgZGVmIEdl
bmVyYXRlTWV0aG9kU291cmNlKHNlbGYsIGNwcF9zb3VyY2UpOgotICAgICIiIkNvbnZlcnQgQysr
IHNvdXJjZSB0byBHb29nbGUgTW9jayBvdXRwdXQgc291cmNlIGxpbmVzLiIiIgotICAgIG1ldGhv
ZF9zb3VyY2VfbGluZXMgPSBbXQotICAgICMgPHRlc3Q+IGlzIGEgcHNldWRvLWZpbGVuYW1lLCBp
dCBpcyBub3QgcmVhZCBvciB3cml0dGVuLgotICAgIGJ1aWxkZXIgPSBhc3QuQnVpbGRlckZyb21T
b3VyY2UoY3BwX3NvdXJjZSwgJzx0ZXN0PicpCi0gICAgYXN0X2xpc3QgPSBsaXN0KGJ1aWxkZXIu
R2VuZXJhdGUoKSkKLSAgICBnbW9ja19jbGFzcy5fR2VuZXJhdGVNZXRob2RzKG1ldGhvZF9zb3Vy
Y2VfbGluZXMsIGNwcF9zb3VyY2UsIGFzdF9saXN0WzBdKQotICAgIHJldHVybiAnXG4nLmpvaW4o
bWV0aG9kX3NvdXJjZV9saW5lcykKLQotICBkZWYgdGVzdFNpbXBsZU1ldGhvZChzZWxmKToKLSAg
ICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIGludCBCYXIo
KTsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2Uo
Ci0gICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCi0gICAgICAgIHNlbGYuR2Vu
ZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdFNpbXBsZUNvbnN0cnVjdG9y
c0FuZERlc3RydWN0b3Ioc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28gewotIHB1
YmxpYzoKLSAgRm9vKCk7Ci0gIEZvbyhpbnQgeCk7Ci0gIEZvbyhjb25zdCBGb28mIGYpOwotICBG
b28oRm9vJiYgZik7Ci0gIH5Gb28oKTsKLSAgdmlydHVhbCBpbnQgQmFyKCkgPSAwOwotfTsKLSIi
IgotICAgICMgVGhlIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvciBzaG91bGQgYmUgaWdub3Jl
ZC4KLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAg
ICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCi0gICAgICAgIHNlbGYuR2VuZXJhdGVNZXRo
b2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdFZpcnR1YWxEZXN0cnVjdG9yKHNlbGYpOgot
ICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkZvbygp
OwotICB2aXJ0dWFsIGludCBCYXIoKSA9IDA7Ci19OwotIiIiCi0gICAgIyBUaGUgZGVzdHJ1Y3Rv
ciBzaG91bGQgYmUgaWdub3JlZC4KLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1do
aXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KCkpOycsCi0gICAgICAg
IHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVzdEV4cGxpY2l0
bHlEZWZhdWx0ZWRDb25zdHJ1Y3RvcnNBbmREZXN0cnVjdG9yKHNlbGYpOgotICAgIHNvdXJjZSA9
ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIEZvbygpID0gZGVmYXVsdDsKLSAgRm9vKGNv
bnN0IEZvbyYgZikgPSBkZWZhdWx0OwotICBGb28oRm9vJiYgZikgPSBkZWZhdWx0OwotICB+Rm9v
KCkgPSBkZWZhdWx0OwotICB2aXJ0dWFsIGludCBCYXIoKSA9IDA7Ci19OwotIiIiCi0gICAgIyBU
aGUgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yIHNob3VsZCBiZSBpZ25vcmVkLgotICAgIHNl
bGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAgJ01PQ0tfTUVU
SE9EMChCYXIsXG5pbnQoKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShz
b3VyY2UpKQotCi0gIGRlZiB0ZXN0RXhwbGljaXRseURlbGV0ZWRDb25zdHJ1Y3RvcnNBbmREZXN0
cnVjdG9yKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0g
IEZvbygpID0gZGVsZXRlOwotICBGb28oY29uc3QgRm9vJiBmKSA9IGRlbGV0ZTsKLSAgRm9vKEZv
byYmIGYpID0gZGVsZXRlOwotICB+Rm9vKCkgPSBkZWxldGU7Ci0gIHZpcnR1YWwgaW50IEJhcigp
ID0gMDsKLX07Ci0iIiIKLSAgICAjIFRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3Igc2hv
dWxkIGJlIGlnbm9yZWQuCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNw
YWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmludCgpKTsnLAotICAgICAgICBzZWxm
LkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RTaW1wbGVPdmVycmlk
ZU1ldGhvZChzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgot
ICBpbnQgQmFyKCkgb3ZlcnJpZGU7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9y
ZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0QwKEJhcixcbmludCgpKTsn
LAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRl
c3RTaW1wbGVDb25zdE1ldGhvZChzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgQmFyKGJvb2wgZmxhZykgY29uc3Q7Ci19OwotIiIi
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAn
TU9DS19DT05TVF9NRVRIT0QxKEJhcixcbnZvaWQoYm9vbCBmbGFnKSk7JywKLSAgICAgICAgc2Vs
Zi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0RXhwbGljaXRWb2lk
KHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgaW50IEJhcih2b2lkKTsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVh
ZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDAoQmFyLFxuaW50KHZvaWQpKTsn
LAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRl
c3RTdHJhbmdlTmV3bGluZUluUGFyYW1ldGVyKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgotY2xh
c3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBCYXIoaW50Ci1hKSA9IDA7Ci19Owot
IiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAg
ICAnTU9DS19NRVRIT0QxKEJhcixcbnZvaWQoaW50IGEpKTsnLAotICAgICAgICBzZWxmLkdlbmVy
YXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3REZWZhdWx0UGFyYW1ldGVycyhz
ZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFs
IHZvaWQgQmFyKGludCBhLCBjaGFyIGMgPSAneCcpID0gMDsKLX07Ci0iIiIKLSAgICBzZWxmLmFz
c2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDIo
QmFyLFxudm9pZChpbnQsIGNoYXIpKTsnLAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291
cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RNdWx0aXBsZURlZmF1bHRQYXJhbWV0ZXJzKHNlbGYp
OgotICAgIHNvdXJjZSA9ICIiIgotY2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9p
ZCBCYXIoaW50IGEgPSA0MiwgY2hhciBjID0gJ3gnKSA9IDA7Ci19OwotIiIiCi0gICAgc2VsZi5h
c3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRIT0Qy
KEJhcixcbnZvaWQoaW50LCBjaGFyKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNv
dXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0UmVtb3Zlc0NvbW1lbnRzV2hlbkRlZmF1bHRzQXJl
UHJlc2VudChzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgot
ICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhID0gNDIgLyogYSBjb21tZW50ICovLAotICAgICAgICAg
ICAgICAgICAgIGNoYXIgLyogb3RoZXIgY29tbWVudCAqLyBjPSAneCcpID0gMDsKLX07Ci0iIiIK
LSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdN
T0NLX01FVEhPRDIoQmFyLFxudm9pZChpbnQsIGNoYXIpKTsnLAotICAgICAgICBzZWxmLkdlbmVy
YXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3REb3VibGVTbGFzaENvbW1lbnRz
SW5QYXJhbWV0ZXJMaXN0QXJlUmVtb3ZlZChzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNz
IEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgQmFyKGludCBhLCAgLy8gaW5saW5lIGNv
bW1lbnRzIHNob3VsZCBiZSBlbGlkZWQuCi0gICAgICAgICAgICAgICAgICAgaW50IGIgICAvLyBp
bmxpbmUgY29tbWVudHMgc2hvdWxkIGJlIGVsaWRlZC4KLSAgICAgICAgICAgICAgICAgICApIGNv
bnN0ID0gMDsKLX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRl
c3BhY2UoCi0gICAgICAgICdNT0NLX0NPTlNUX01FVEhPRDIoQmFyLFxudm9pZChpbnQgYSwgaW50
IGIpKTsnLAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAg
ZGVmIHRlc3RDU3R5bGVDb21tZW50c0luUGFyYW1ldGVyTGlzdEFyZU5vdFJlbW92ZWQoc2VsZik6
Ci0gICAgIyBOT1RFKG5ub3J3aXR6KTogSSdtIG5vdCBzdXJlIGlmIGl0J3MgdGhlIGJlc3QgYmVo
YXZpb3IgdG8ga2VlcCB0aGVzZQotICAgICMgY29tbWVudHMuICBBbHNvIG5vdGUgdGhhdCBDIHN0
eWxlIGNvbW1lbnRzIGFmdGVyIHRoZSBsYXN0IHBhcmFtZXRlcgotICAgICMgYXJlIHN0aWxsIGVs
aWRlZC4KLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2aXJ0dWFs
IGNvbnN0IHN0cmluZyYgQmFyKGludCAvKiBrZWVwZXIgKi8sIGludCBiKTsKLX07Ci0iIiIKLSAg
ICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NL
X01FVEhPRDIoQmFyLFxuY29uc3Qgc3RyaW5nJihpbnQgLyoga2VlcGVyICovLCBpbnQgYikpOycs
Ci0gICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uoc291cmNlKSkKLQotICBkZWYgdGVz
dEFyZ3NPZlRlbXBsYXRlVHlwZXMoc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28g
ewotIHB1YmxpYzoKLSAgdmlydHVhbCBpbnQgQmFyKGNvbnN0IHZlY3RvcjxpbnQ+JiB2LCBtYXA8
aW50LCBzdHJpbmc+KiBvdXRwdXQpOwotfTsiIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3Jl
TGVhZGluZ1doaXRlc3BhY2UoCi0gICAgICAgICdNT0NLX01FVEhPRDIoQmFyLFxuJwotICAgICAg
ICAnaW50KGNvbnN0IHZlY3RvcjxpbnQ+JiB2LCBtYXA8aW50LCBzdHJpbmc+KiBvdXRwdXQpKTsn
LAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRl
c3RSZXR1cm5UeXBlV2l0aE9uZVRlbXBsYXRlQXJnKHNlbGYpOgotICAgIHNvdXJjZSA9ICIiIgot
Y2xhc3MgRm9vIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdmVjdG9yPGludD4qIEJhcihpbnQgbik7
Ci19OyIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAg
ICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG52ZWN0b3I8aW50PiooaW50IG4pKTsnLAotICAgICAg
ICBzZWxmLkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RSZXR1cm5U
eXBlV2l0aE1hbnlUZW1wbGF0ZUFyZ3Moc2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBG
b28gewotIHB1YmxpYzoKLSAgdmlydHVhbCBtYXA8aW50LCBzdHJpbmc+IEJhcigpOwotfTsiIiIK
LSAgICAjIENvbXBhcmluZyB0aGUgY29tbWVudCB0ZXh0IGlzIGJyaXR0bGUgLSB3ZSdsbCB0aGlu
ayBvZiBzb21ldGhpbmcKLSAgICAjIGJldHRlciBpbiBjYXNlIHRoaXMgZ2V0cyBhbm5veWluZywg
YnV0IGZvciBub3cgbGV0J3Mga2VlcCBpdCBzaW1wbGUuCi0gICAgc2VsZi5hc3NlcnRFcXVhbEln
bm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnLy8gVGhlIGZvbGxvd2luZyBsaW5lIHdv
blwndCByZWFsbHkgY29tcGlsZSwgYXMgdGhlIHJldHVyblxuJwotICAgICAgICAnLy8gdHlwZSBo
YXMgbXVsdGlwbGUgdGVtcGxhdGUgYXJndW1lbnRzLiAgVG8gZml4IGl0LCB1c2UgYVxuJwotICAg
ICAgICAnLy8gdHlwZWRlZiBmb3IgdGhlIHJldHVybiB0eXBlLlxuJwotICAgICAgICAnTU9DS19N
RVRIT0QwKEJhcixcbm1hcDxpbnQsIHN0cmluZz4oKSk7JywKLSAgICAgICAgc2VsZi5HZW5lcmF0
ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0gIGRlZiB0ZXN0U2ltcGxlTWV0aG9kSW5UZW1wbGF0
ZWRDbGFzcyhzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFz
cyBGb28gewotIHB1YmxpYzoKLSAgdmlydHVhbCBpbnQgQmFyKCk7Ci19OwotIiIiCi0gICAgc2Vs
Zi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICAnTU9DS19NRVRI
T0QwX1QoQmFyLFxuaW50KCkpOycsCi0gICAgICAgIHNlbGYuR2VuZXJhdGVNZXRob2RTb3VyY2Uo
c291cmNlKSkKLQotICBkZWYgdGVzdFBvaW50ZXJBcmdXaXRob3V0TmFtZXMoc2VsZik6Ci0gICAg
c291cmNlID0gIiIiCi1jbGFzcyBGb28gewotICB2aXJ0dWFsIGludCBCYXIoQyopOwotfTsKLSIi
IgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFjZSgKLSAgICAgICAg
J01PQ0tfTUVUSE9EMShCYXIsXG5pbnQoQyopKTsnLAotICAgICAgICBzZWxmLkdlbmVyYXRlTWV0
aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RSZWZlcmVuY2VBcmdXaXRob3V0TmFtZXMo
c2VsZik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBGb28gewotICB2aXJ0dWFsIGludCBCYXIo
QyYpOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5nV2hpdGVzcGFj
ZSgKLSAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG5pbnQoQyYpKTsnLAotICAgICAgICBzZWxm
LkdlbmVyYXRlTWV0aG9kU291cmNlKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RBcnJheUFyZ1dpdGhv
dXROYW1lcyhzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIEZvbyB7Ci0gIHZpcnR1YWwg
aW50IEJhcihDW10pOwotfTsKLSIiIgotICAgIHNlbGYuYXNzZXJ0RXF1YWxJZ25vcmVMZWFkaW5n
V2hpdGVzcGFjZSgKLSAgICAgICAgJ01PQ0tfTUVUSE9EMShCYXIsXG5pbnQoQ1tdKSk7JywKLSAg
ICAgICAgc2VsZi5HZW5lcmF0ZU1ldGhvZFNvdXJjZShzb3VyY2UpKQotCi0KLWNsYXNzIEdlbmVy
YXRlTW9ja3NUZXN0KFRlc3RDYXNlKToKLQotICBkZWYgR2VuZXJhdGVNb2NrcyhzZWxmLCBjcHBf
c291cmNlKToKLSAgICAiIiJDb252ZXJ0IEMrKyBzb3VyY2UgdG8gY29tcGxldGUgR29vZ2xlIE1v
Y2sgb3V0cHV0IHNvdXJjZS4iIiIKLSAgICAjIDx0ZXN0PiBpcyBhIHBzZXVkby1maWxlbmFtZSwg
aXQgaXMgbm90IHJlYWQgb3Igd3JpdHRlbi4KLSAgICBmaWxlbmFtZSA9ICc8dGVzdD4nCi0gICAg
YnVpbGRlciA9IGFzdC5CdWlsZGVyRnJvbVNvdXJjZShjcHBfc291cmNlLCBmaWxlbmFtZSkKLSAg
ICBhc3RfbGlzdCA9IGxpc3QoYnVpbGRlci5HZW5lcmF0ZSgpKQotICAgIGxpbmVzID0gZ21vY2tf
Y2xhc3MuX0dlbmVyYXRlTW9ja3MoZmlsZW5hbWUsIGNwcF9zb3VyY2UsIGFzdF9saXN0LCBOb25l
KQotICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgZGVmIHRlc3ROYW1lc3BhY2VzKHNl
bGYpOgotICAgIHNvdXJjZSA9ICIiIgotbmFtZXNwYWNlIEZvbyB7Ci1uYW1lc3BhY2UgQmFyIHsg
Y2xhc3MgRm9yd2FyZDsgfQotbmFtZXNwYWNlIEJheiB7Ci0KLWNsYXNzIFRlc3QgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB2b2lkIEZvbygpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIEJhegotfSAg
Ly8gbmFtZXNwYWNlIEZvbwotIiIiCi0gICAgZXhwZWN0ZWQgPSAiIiJcCi1uYW1lc3BhY2UgRm9v
IHsKLW5hbWVzcGFjZSBCYXogewotCi1jbGFzcyBNb2NrVGVzdCA6IHB1YmxpYyBUZXN0IHsKLXB1
YmxpYzoKLU1PQ0tfTUVUSE9EMChGb28sCi12b2lkKCkpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNl
IEJhegotfSAgLy8gbmFtZXNwYWNlIEZvbwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9y
ZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tz
KHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RDbGFzc1dpdGhTdG9yYWdlU3BlY2lmaWVyTWFjcm8oc2Vs
Zik6Ci0gICAgc291cmNlID0gIiIiCi1jbGFzcyBTVE9SQUdFX1NQRUNJRklFUiBUZXN0IHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBGb28oKTsKLX07Ci0iIiIKLSAgICBleHBlY3RlZCA9ICIi
IlwKLWNsYXNzIE1vY2tUZXN0IDogcHVibGljIFRlc3QgewotcHVibGljOgotTU9DS19NRVRIT0Qw
KEZvbywKLXZvaWQoKSk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRp
bmdXaGl0ZXNwYWNlKAotICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJj
ZSkpCi0KLSAgZGVmIHRlc3RUZW1wbGF0ZWRGb3J3YXJkRGVjbGFyYXRpb24oc2VsZik6Ci0gICAg
c291cmNlID0gIiIiCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRm9yd2FyZDsgIC8vIEZvcndh
cmQgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGlnbm9yZWQuCi1jbGFzcyBUZXN0IHsKLSBwdWJsaWM6
Ci0gIHZpcnR1YWwgdm9pZCBGb28oKTsKLX07Ci0iIiIKLSAgICBleHBlY3RlZCA9ICIiIlwKLWNs
YXNzIE1vY2tUZXN0IDogcHVibGljIFRlc3QgewotcHVibGljOgotTU9DS19NRVRIT0QwKEZvbywK
LXZvaWQoKSk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0
ZXNwYWNlKAotICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJjZSkpCi0K
LSAgZGVmIHRlc3RUZW1wbGF0ZWRDbGFzcyhzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLXRlbXBs
YXRlIDx0eXBlbmFtZSBTLCB0eXBlbmFtZSBUPgotY2xhc3MgVGVzdCB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIHZvaWQgRm9vKCk7Ci19OwotIiIiCi0gICAgZXhwZWN0ZWQgPSAiIiJcCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxPgotY2xhc3MgTW9ja1Rlc3QgOiBwdWJsaWMgVGVz
dDxUMCwgVDE+IHsKLXB1YmxpYzoKLU1PQ0tfTUVUSE9EMF9UKEZvbywKLXZvaWQoKSk7Ci19Owot
IiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNlKAotICAgICAg
ICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJjZSkpCi0KLSAgZGVmIHRlc3RUZW1w
bGF0ZUluQVRlbXBsYXRlVHlwZWRlZihzZWxmKToKLSAgICBzb3VyY2UgPSAiIiIKLWNsYXNzIFRl
c3QgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxzdGQ6Omxpc3Q8aW50Pj4gRm9v
VHlwZTsKLSAgdmlydHVhbCB2b2lkIEJhcihjb25zdCBGb29UeXBlJiB0ZXN0X2FyZyk7Ci19Owot
IiIiCi0gICAgZXhwZWN0ZWQgPSAiIiJcCi1jbGFzcyBNb2NrVGVzdCA6IHB1YmxpYyBUZXN0IHsK
LXB1YmxpYzoKLU1PQ0tfTUVUSE9EMShCYXIsCi12b2lkKGNvbnN0IEZvb1R5cGUmIHRlc3RfYXJn
KSk7Ci19OwotIiIiCi0gICAgc2VsZi5hc3NlcnRFcXVhbElnbm9yZUxlYWRpbmdXaGl0ZXNwYWNl
KAotICAgICAgICBleHBlY3RlZCwgc2VsZi5HZW5lcmF0ZU1vY2tzKHNvdXJjZSkpCi0KLSAgZGVm
IHRlc3RUZW1wbGF0ZUluQVRlbXBsYXRlVHlwZWRlZldpdGhDb21tYShzZWxmKToKLSAgICBzb3Vy
Y2UgPSAiIiIKLWNsYXNzIFRlc3QgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQoCi0gICAgICBjb25zdCB2ZWN0b3I8c3RkOjpsaXN0PGludD4+JiwgaW50PiBGb29UeXBl
OwotICB2aXJ0dWFsIHZvaWQgQmFyKGNvbnN0IEZvb1R5cGUmIHRlc3RfYXJnKTsKLX07Ci0iIiIK
LSAgICBleHBlY3RlZCA9ICIiIlwKLWNsYXNzIE1vY2tUZXN0IDogcHVibGljIFRlc3QgewotcHVi
bGljOgotTU9DS19NRVRIT0QxKEJhciwKLXZvaWQoY29uc3QgRm9vVHlwZSYgdGVzdF9hcmcpKTsK
LX07Ci0iIiIKLSAgICBzZWxmLmFzc2VydEVxdWFsSWdub3JlTGVhZGluZ1doaXRlc3BhY2UoCi0g
ICAgICAgIGV4cGVjdGVkLCBzZWxmLkdlbmVyYXRlTW9ja3Moc291cmNlKSkKLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAva2V5d29yZHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3Jp
cHRzL2dlbmVyYXRvci9jcHAva2V5d29yZHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IGY2OTQ0NTBlMzczZS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMv
Z2VuZXJhdG9yL2NwcC9rZXl3b3Jkcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNyBOZWFsIE5vcndpdHoK
LSMgUG9ydGlvbnMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KLSMKLSMgTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KLSMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMgbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSIiIkMrKyBrZXl3b3JkcyBhbmQgaGVscGVy
IHV0aWxpdGllcyBmb3IgZGV0ZXJtaW5pbmcga2V5d29yZHMuIiIiCi0KLV9fYXV0aG9yX18gPSAn
bm5vcndpdHpAZ29vZ2xlLmNvbSAoTmVhbCBOb3J3aXR6KScKLQotCi10cnk6Ci0gICAgIyBQeXRo
b24gMy54Ci0gICAgaW1wb3J0IGJ1aWx0aW5zCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBQ
eXRob24gMi54Ci0gICAgaW1wb3J0IF9fYnVpbHRpbl9fIGFzIGJ1aWx0aW5zCi0KLQotaWYgbm90
IGhhc2F0dHIoYnVpbHRpbnMsICdzZXQnKToKLSAgICAjIE5vbWluYWwgc3VwcG9ydCBmb3IgUHl0
aG9uIDIuMy4KLSAgICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQKLQotCi1UWVBFUyA9IHNl
dCgnYm9vbCBjaGFyIGludCBsb25nIHNob3J0IGRvdWJsZSBmbG9hdCB2b2lkIHdjaGFyX3QgdW5z
aWduZWQgc2lnbmVkJy5zcGxpdCgpKQotVFlQRV9NT0RJRklFUlMgPSBzZXQoJ2F1dG8gcmVnaXN0
ZXIgY29uc3QgaW5saW5lIGV4dGVybiBzdGF0aWMgdmlydHVhbCB2b2xhdGlsZSBtdXRhYmxlJy5z
cGxpdCgpKQotQUNDRVNTID0gc2V0KCdwdWJsaWMgcHJvdGVjdGVkIHByaXZhdGUgZnJpZW5kJy5z
cGxpdCgpKQotCi1DQVNUUyA9IHNldCgnc3RhdGljX2Nhc3QgY29uc3RfY2FzdCBkeW5hbWljX2Nh
c3QgcmVpbnRlcnByZXRfY2FzdCcuc3BsaXQoKSkKLQotT1RIRVJTID0gc2V0KCd0cnVlIGZhbHNl
IGFzbSBjbGFzcyBuYW1lc3BhY2UgdXNpbmcgZXhwbGljaXQgdGhpcyBvcGVyYXRvciBzaXplb2Yn
LnNwbGl0KCkpCi1PVEhFUl9UWVBFUyA9IHNldCgnbmV3IGRlbGV0ZSB0eXBlZGVmIHN0cnVjdCB1
bmlvbiBlbnVtIHR5cGVpZCB0eXBlbmFtZSB0ZW1wbGF0ZScuc3BsaXQoKSkKLQotQ09OVFJPTCA9
IHNldCgnY2FzZSBzd2l0Y2ggZGVmYXVsdCBpZiBlbHNlIHJldHVybiBnb3RvJy5zcGxpdCgpKQot
RVhDRVBUSU9OID0gc2V0KCd0cnkgY2F0Y2ggdGhyb3cnLnNwbGl0KCkpCi1MT09QID0gc2V0KCd3
aGlsZSBkbyBmb3IgYnJlYWsgY29udGludWUnLnNwbGl0KCkpCi0KLUFMTCA9IFRZUEVTIHwgVFlQ
RV9NT0RJRklFUlMgfCBBQ0NFU1MgfCBDQVNUUyB8IE9USEVSUyB8IE9USEVSX1RZUEVTIHwgQ09O
VFJPTCB8IEVYQ0VQVElPTiB8IExPT1AKLQotCi1kZWYgSXNLZXl3b3JkKHRva2VuKToKLSAgICBy
ZXR1cm4gdG9rZW4gaW4gQUxMCi0KLWRlZiBJc0J1aWx0aW5UeXBlKHRva2VuKToKLSAgICBpZiB0
b2tlbiBpbiAoJ3ZpcnR1YWwnLCAnaW5saW5lJyk6Ci0gICAgICAgICMgVGhlc2Ugb25seSBhcHBs
eSB0byBtZXRob2RzLCB0aGV5IGNhbid0IGJlIHR5cGVzIGJ5IHRoZW1zZWx2ZXMuCi0gICAgICAg
IHJldHVybiBGYWxzZQotICAgIHJldHVybiB0b2tlbiBpbiBUWVBFUyBvciB0b2tlbiBpbiBUWVBF
X01PRElGSUVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3Bw
L3Rva2VuaXplLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvY3BwL3Rva2VuaXpl
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzNTlkNTU2MmQ3OGMuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dlbmVyYXRvci9jcHAvdG9rZW5pemUucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
Ci0jIENvcHlyaWdodCAyMDA3IE5lYWwgTm9yd2l0egotIyBQb3J0aW9ucyBDb3B5cmlnaHQgMjAw
NyBHb29nbGUgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KLQotIiIiVG9rZW5pemUgQysrIHNvdXJjZSBjb2RlLiIiIgotCi1fX2F1dGhvcl9fID0gJ25u
b3J3aXR6QGdvb2dsZS5jb20gKE5lYWwgTm9yd2l0eiknCi0KLQotdHJ5OgotICAgICMgUHl0aG9u
IDMueAotICAgIGltcG9ydCBidWlsdGlucwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgUHl0
aG9uIDIueAotICAgIGltcG9ydCBfX2J1aWx0aW5fXyBhcyBidWlsdGlucwotCi0KLWltcG9ydCBz
eXMKLQotZnJvbSBjcHAgaW1wb3J0IHV0aWxzCi0KLQotaWYgbm90IGhhc2F0dHIoYnVpbHRpbnMs
ICdzZXQnKToKLSAgICAjIE5vbWluYWwgc3VwcG9ydCBmb3IgUHl0aG9uIDIuMy4KLSAgICBmcm9t
IHNldHMgaW1wb3J0IFNldCBhcyBzZXQKLQotCi0jIEFkZCAkIGFzIGEgdmFsaWQgaWRlbnRpZmll
ciBjaGFyIHNpbmNlIHNvIG11Y2ggY29kZSB1c2VzIGl0LgotX2xldHRlcnMgPSAnYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXonCi1WQUxJRF9JREVOVElGSUVSX0NIQVJTID0gc2V0KF9sZXR0ZXJz
ICsgX2xldHRlcnMudXBwZXIoKSArICdfMDEyMzQ1Njc4OSQnKQotSEVYX0RJR0lUUyA9IHNldCgn
MDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRicpCi1JTlRfT1JfRkxPQVRfRElHSVRTID0gc2V0KCcwMTIz
NDU2Nzg5MGVFLSsnKQotCi0KLSMgQysrMHggc3RyaW5nIHByZWZmaXhlcy4KLV9TVFJfUFJFRklY
RVMgPSBzZXQoKCdSJywgJ3U4JywgJ3U4UicsICd1JywgJ3VSJywgJ1UnLCAnVVInLCAnTCcsICdM
UicpKQotCi0KLSMgVG9rZW4gdHlwZXMuCi1VTktOT1dOID0gJ1VOS05PV04nCi1TWU5UQVggPSAn
U1lOVEFYJwotQ09OU1RBTlQgPSAnQ09OU1RBTlQnCi1OQU1FID0gJ05BTUUnCi1QUkVQUk9DRVNT
T1IgPSAnUFJFUFJPQ0VTU09SJwotCi0jIFdoZXJlIHRoZSB0b2tlbiBvcmlnaW5hdGVkIGZyb20u
ICBUaGlzIGNhbiBiZSB1c2VkIGZvciBiYWNrdHJhY2tpbmcuCi0jIEl0IGlzIGFsd2F5cyBzZXQg
dG8gV0hFTkNFX1NUUkVBTSBpbiB0aGlzIGNvZGUuCi1XSEVOQ0VfU1RSRUFNLCBXSEVOQ0VfUVVF
VUUgPSByYW5nZSgyKQotCi0KLWNsYXNzIFRva2VuKG9iamVjdCk6Ci0gICAgIiIiRGF0YSBjb250
YWluZXIgdG8gcmVwcmVzZW50IGEgQysrIHRva2VuLgotCi0gICAgVG9rZW5zIGNhbiBiZSBpZGVu
dGlmaWVycywgc3ludGF4IGNoYXIocyksIGNvbnN0YW50cywgb3IKLSAgICBwcmUtcHJvY2Vzc29y
IGRpcmVjdGl2ZXMuCi0KLSAgICBzdGFydCBjb250YWlucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0
IGNoYXIgb2YgdGhlIHRva2VuIGluIHRoZSBzb3VyY2UKLSAgICBlbmQgY29udGFpbnMgdGhlIGlu
ZGV4IG9mIHRoZSBsYXN0IGNoYXIgb2YgdGhlIHRva2VuIGluIHRoZSBzb3VyY2UKLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbl90eXBlLCBuYW1lLCBzdGFydCwgZW5kKToK
LSAgICAgICAgc2VsZi50b2tlbl90eXBlID0gdG9rZW5fdHlwZQotICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCi0gICAgICAgIHNlbGYuc3RhcnQgPSBzdGFydAotICAgICAgICBzZWxmLmVuZCA9IGVu
ZAotICAgICAgICBzZWxmLndoZW5jZSA9IFdIRU5DRV9TVFJFQU0KLQotICAgIGRlZiBfX3N0cl9f
KHNlbGYpOgotICAgICAgICBpZiBub3QgdXRpbHMuREVCVUc6Ci0gICAgICAgICAgICByZXR1cm4g
J1Rva2VuKCVyKScgJSBzZWxmLm5hbWUKLSAgICAgICAgcmV0dXJuICdUb2tlbiglciwgJXMsICVz
KScgJSAoc2VsZi5uYW1lLCBzZWxmLnN0YXJ0LCBzZWxmLmVuZCkKLQotICAgIF9fcmVwcl9fID0g
X19zdHJfXwotCi0KLWRlZiBfR2V0U3RyaW5nKHNvdXJjZSwgc3RhcnQsIGkpOgotICAgIGkgPSBz
b3VyY2UuZmluZCgnIicsIGkrMSkKLSAgICB3aGlsZSBzb3VyY2VbaS0xXSA9PSAnXFwnOgotICAg
ICAgICAjIENvdW50IHRoZSB0cmFpbGluZyBiYWNrc2xhc2hlcy4KLSAgICAgICAgYmFja3NsYXNo
X2NvdW50ID0gMQotICAgICAgICBqID0gaSAtIDIKLSAgICAgICAgd2hpbGUgc291cmNlW2pdID09
ICdcXCc6Ci0gICAgICAgICAgICBiYWNrc2xhc2hfY291bnQgKz0gMQotICAgICAgICAgICAgaiAt
PSAxCi0gICAgICAgICMgV2hlbiB0cmFpbGluZyBiYWNrc2xhc2hlcyBhcmUgZXZlbiwgdGhleSBl
c2NhcGUgZWFjaCBvdGhlci4KLSAgICAgICAgaWYgKGJhY2tzbGFzaF9jb3VudCAlIDIpID09IDA6
Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBpID0gc291cmNlLmZpbmQoJyInLCBpKzEpCi0g
ICAgcmV0dXJuIGkgKyAxCi0KLQotZGVmIF9HZXRDaGFyKHNvdXJjZSwgc3RhcnQsIGkpOgotICAg
ICMgTk9URShubm9yd2l0eik6IG1heSBub3QgYmUgcXVpdGUgY29ycmVjdCwgc2hvdWxkIGJlIGdv
b2QgZW5vdWdoLgotICAgIGkgPSBzb3VyY2UuZmluZCgiJyIsIGkrMSkKLSAgICB3aGlsZSBzb3Vy
Y2VbaS0xXSA9PSAnXFwnOgotICAgICAgICAjIE5lZWQgdG8gc3BlY2lhbCBjYXNlICdcXCcuCi0g
ICAgICAgIGlmIChpIC0gMikgPiBzdGFydCBhbmQgc291cmNlW2ktMl0gPT0gJ1xcJzoKLSAgICAg
ICAgICAgIGJyZWFrCi0gICAgICAgIGkgPSBzb3VyY2UuZmluZCgiJyIsIGkrMSkKLSAgICAjIFRy
eSB0byBoYW5kbGUgdW50ZXJtaW5hdGVkIHNpbmdsZSBxdW90ZXMgKGluIGEgI2lmIDAgYmxvY2sp
LgotICAgIGlmIGkgPCAwOgotICAgICAgICBpID0gc3RhcnQKLSAgICByZXR1cm4gaSArIDEKLQot
Ci1kZWYgR2V0VG9rZW5zKHNvdXJjZSk6Ci0gICAgIiIiUmV0dXJucyBhIHNlcXVlbmNlIG9mIFRv
a2Vucy4KLQotICAgIEFyZ3M6Ci0gICAgICBzb3VyY2U6IHN0cmluZyBvZiBDKysgc291cmNlIGNv
ZGUuCi0KLSAgICBZaWVsZHM6Ci0gICAgICBUb2tlbiB0aGF0IHJlcHJlc2VudHMgdGhlIG5leHQg
dG9rZW4gaW4gdGhlIHNvdXJjZS4KLSAgICAiIiIKLSAgICAjIENhY2hlIHZhcmlvdXMgdmFsaWQg
Y2hhcmFjdGVyIHNldHMgZm9yIHNwZWVkLgotICAgIHZhbGlkX2lkZW50aWZpZXJfY2hhcnMgPSBW
QUxJRF9JREVOVElGSUVSX0NIQVJTCi0gICAgaGV4X2RpZ2l0cyA9IEhFWF9ESUdJVFMKLSAgICBp
bnRfb3JfZmxvYXRfZGlnaXRzID0gSU5UX09SX0ZMT0FUX0RJR0lUUwotICAgIGludF9vcl9mbG9h
dF9kaWdpdHMyID0gaW50X29yX2Zsb2F0X2RpZ2l0cyB8IHNldCgnLicpCi0KLSAgICAjIE9ubHkg
aWdub3JlIGVycm9ycyB3aGlsZSBpbiBhICNpZiAwIGJsb2NrLgotICAgIGlnbm9yZV9lcnJvcnMg
PSBGYWxzZQotICAgIGNvdW50X2lmcyA9IDAKLQotICAgIGkgPSAwCi0gICAgZW5kID0gbGVuKHNv
dXJjZSkKLSAgICB3aGlsZSBpIDwgZW5kOgotICAgICAgICAjIFNraXAgd2hpdGVzcGFjZS4KLSAg
ICAgICAgd2hpbGUgaSA8IGVuZCBhbmQgc291cmNlW2ldLmlzc3BhY2UoKToKLSAgICAgICAgICAg
IGkgKz0gMQotICAgICAgICBpZiBpID49IGVuZDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIHRva2VuX3R5cGUgPSBVTktOT1dOCi0gICAgICAgIHN0YXJ0ID0gaQotICAgICAgICBjID0g
c291cmNlW2ldCi0gICAgICAgIGlmIGMuaXNhbHBoYSgpIG9yIGMgPT0gJ18nOiAgICAgICAgICAg
ICAgIyBGaW5kIGEgc3RyaW5nIHRva2VuLgotICAgICAgICAgICAgdG9rZW5fdHlwZSA9IE5BTUUK
LSAgICAgICAgICAgIHdoaWxlIHNvdXJjZVtpXSBpbiB2YWxpZF9pZGVudGlmaWVyX2NoYXJzOgot
ICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgIyBTdHJpbmcgYW5kIGNoYXJhY3Rl
ciBjb25zdGFudHMgY2FuIGxvb2sgbGlrZSBhIG5hbWUgaWYKLSAgICAgICAgICAgICMgdGhleSBh
cmUgc29tZXRoaW5nIGxpa2UgTCIiLgotICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSA9PSAiJyIg
YW5kIChpIC0gc3RhcnQpID09IDEgYW5kCi0gICAgICAgICAgICAgICAgc291cmNlW3N0YXJ0Omld
IGluICd1VUwnKToKLSAgICAgICAgICAgICAgICAjIHUsIFUsIGFuZCBMIGFyZSB2YWxpZCBDKysw
eCBjaGFyYWN0ZXIgcHJlZmZpeGVzLgotICAgICAgICAgICAgICAgIHRva2VuX3R5cGUgPSBDT05T
VEFOVAotICAgICAgICAgICAgICAgIGkgPSBfR2V0Q2hhcihzb3VyY2UsIHN0YXJ0LCBpKQotICAg
ICAgICAgICAgZWxpZiBzb3VyY2VbaV0gPT0gIiciIGFuZCBzb3VyY2Vbc3RhcnQ6aV0gaW4gX1NU
Ul9QUkVGSVhFUzoKLSAgICAgICAgICAgICAgICB0b2tlbl90eXBlID0gQ09OU1RBTlQKLSAgICAg
ICAgICAgICAgICBpID0gX0dldFN0cmluZyhzb3VyY2UsIHN0YXJ0LCBpKQotICAgICAgICBlbGlm
IGMgPT0gJy8nIGFuZCBzb3VyY2VbaSsxXSA9PSAnLyc6ICAgICMgRmluZCAvLyBjb21tZW50cy4K
LSAgICAgICAgICAgIGkgPSBzb3VyY2UuZmluZCgnXG4nLCBpKQotICAgICAgICAgICAgaWYgaSA9
PSAtMTogICMgSGFuZGxlIEVPRi4KLSAgICAgICAgICAgICAgICBpID0gZW5kCi0gICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICBlbGlmIGMgPT0gJy8nIGFuZCBzb3VyY2VbaSsxXSA9PSAnKic6
ICAgICMgRmluZCAvKiBjb21tZW50cy4gKi8KLSAgICAgICAgICAgIGkgPSBzb3VyY2UuZmluZCgn
Ki8nLCBpKSArIDIKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgYyBpbiAnOist
PD4mfCo9JzogICAgICAgICAgICAgICAgICAgIyA6IG9yIDo6IChwbHVzIG90aGVyIGNoYXJzKS4K
LSAgICAgICAgICAgIHRva2VuX3R5cGUgPSBTWU5UQVgKLSAgICAgICAgICAgIGkgKz0gMQotICAg
ICAgICAgICAgbmV3X2NoID0gc291cmNlW2ldCi0gICAgICAgICAgICBpZiBuZXdfY2ggPT0gYyBh
bmQgYyAhPSAnPic6ICAgICAgICAgIyBUcmVhdCAiPj4iIGFzIHR3byB0b2tlbnMuCi0gICAgICAg
ICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICBlbGlmIGMgPT0gJy0nIGFuZCBuZXdfY2ggPT0g
Jz4nOgotICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgZWxpZiBuZXdfY2ggPT0g
Jz0nOgotICAgICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICBlbGlmIGMgaW4gJygpW117fX4h
P14lOy8uLCc6ICAgICAgICAgICAgICMgSGFuZGxlIHNpbmdsZSBjaGFyIHRva2Vucy4KLSAgICAg
ICAgICAgIHRva2VuX3R5cGUgPSBTWU5UQVgKLSAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAg
ICAgaWYgYyA9PSAnLicgYW5kIHNvdXJjZVtpXS5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICAgICAg
dG9rZW5fdHlwZSA9IENPTlNUQU5UCi0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAg
ICAgICAgd2hpbGUgc291cmNlW2ldIGluIGludF9vcl9mbG9hdF9kaWdpdHM6Ci0gICAgICAgICAg
ICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgICAgICMgSGFuZGxlIGZsb2F0IHN1ZmZpeGVz
LgotICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gKCdsJywgJ2YnKToKLSAgICAgICAgICAg
ICAgICAgICAgaWYgc3VmZml4ID09IHNvdXJjZVtpOmkrMV0ubG93ZXIoKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgZWxpZiBjLmlzZGlnaXQoKTogICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgaW50ZWdl
ci4KLSAgICAgICAgICAgIHRva2VuX3R5cGUgPSBDT05TVEFOVAotICAgICAgICAgICAgaWYgYyA9
PSAnMCcgYW5kIHNvdXJjZVtpKzFdIGluICd4WCc6Ci0gICAgICAgICAgICAgICAgIyBIYW5kbGUg
aGV4IGRpZ2l0cy4KLSAgICAgICAgICAgICAgICBpICs9IDIKLSAgICAgICAgICAgICAgICB3aGls
ZSBzb3VyY2VbaV0gaW4gaGV4X2RpZ2l0czoKLSAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZVtpXSBpbiBpbnRf
b3JfZmxvYXRfZGlnaXRzMjoKLSAgICAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAg
ICAjIEhhbmRsZSBpbnRlZ2VyIChhbmQgZmxvYXQpIHN1ZmZpeGVzLgotICAgICAgICAgICAgZm9y
IHN1ZmZpeCBpbiAoJ3VsbCcsICdsbCcsICd1bCcsICdsJywgJ2YnLCAndScpOgotICAgICAgICAg
ICAgICAgIHNpemUgPSBsZW4oc3VmZml4KQotICAgICAgICAgICAgICAgIGlmIHN1ZmZpeCA9PSBz
b3VyY2VbaTppK3NpemVdLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgICAgIGkgKz0gc2l6ZQot
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbGlmIGMgPT0gJyInOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgRmluZCBzdHJpbmcuCi0gICAgICAgICAgICB0b2tlbl90eXBl
ID0gQ09OU1RBTlQKLSAgICAgICAgICAgIGkgPSBfR2V0U3RyaW5nKHNvdXJjZSwgc3RhcnQsIGkp
Ci0gICAgICAgIGVsaWYgYyA9PSAiJyI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGaW5k
IGNoYXIuCi0gICAgICAgICAgICB0b2tlbl90eXBlID0gQ09OU1RBTlQKLSAgICAgICAgICAgIGkg
PSBfR2V0Q2hhcihzb3VyY2UsIHN0YXJ0LCBpKQotICAgICAgICBlbGlmIGMgPT0gJyMnOiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgRmluZCBwcmUtcHJvY2Vzc29yIGNvbW1hbmQuCi0gICAg
ICAgICAgICB0b2tlbl90eXBlID0gUFJFUFJPQ0VTU09SCi0gICAgICAgICAgICBnb3RfaWYgPSBz
b3VyY2VbaTppKzNdID09ICcjaWYnIGFuZCBzb3VyY2VbaSszOmkrNF0uaXNzcGFjZSgpCi0gICAg
ICAgICAgICBpZiBnb3RfaWY6Ci0gICAgICAgICAgICAgICAgY291bnRfaWZzICs9IDEKLSAgICAg
ICAgICAgIGVsaWYgc291cmNlW2k6aSs2XSA9PSAnI2VuZGlmJzoKLSAgICAgICAgICAgICAgICBj
b3VudF9pZnMgLT0gMQotICAgICAgICAgICAgICAgIGlmIGNvdW50X2lmcyA9PSAwOgotICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVfZXJyb3JzID0gRmFsc2UKLQotICAgICAgICAgICAgIyBUT0RP
KG5ub3J3aXR6KTogaGFuZGxlIHByZXByb2Nlc3NvciBzdGF0ZW1lbnRzIChcIGNvbnRpbnVhdGlv
bnMpLgotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBpMSA9IHNvdXJjZS5m
aW5kKCdcbicsIGkpCi0gICAgICAgICAgICAgICAgaTIgPSBzb3VyY2UuZmluZCgnLy8nLCBpKQot
ICAgICAgICAgICAgICAgIGkzID0gc291cmNlLmZpbmQoJy8qJywgaSkKLSAgICAgICAgICAgICAg
ICBpNCA9IHNvdXJjZS5maW5kKCciJywgaSkKLSAgICAgICAgICAgICAgICAjIE5PVEUobm5vcndp
dHopOiBkb2Vzbid0IGhhbmRsZSBjb21tZW50cyBpbiAjZGVmaW5lIG1hY3Jvcy4KLSAgICAgICAg
ICAgICAgICAjIEdldCB0aGUgZmlyc3QgaW1wb3J0YW50IHN5bWJvbCAobmV3bGluZSwgY29tbWVu
dCwgRU9GL2VuZCkuCi0gICAgICAgICAgICAgICAgaSA9IG1pbihbeCBmb3IgeCBpbiAoaTEsIGky
LCBpMywgaTQsIGVuZCkgaWYgeCAhPSAtMV0pCi0KLSAgICAgICAgICAgICAgICAjIEhhbmRsZSAj
aW5jbHVkZSAiZGlyLy9mb28uaCIgcHJvcGVybHkuCi0gICAgICAgICAgICAgICAgaWYgc291cmNl
W2ldID09ICciJzoKLSAgICAgICAgICAgICAgICAgICAgaSA9IHNvdXJjZS5maW5kKCciJywgaSsx
KSArIDEKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGkgPiAwCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBLZWVwIGdvaW5nIGlmIGVuZCBvZiB0aGUg
bGluZSBhbmQgdGhlIGxpbmUgZW5kcyB3aXRoIFwuCi0gICAgICAgICAgICAgICAgaWYgbm90IChp
ID09IGkxIGFuZCBzb3VyY2VbaS0xXSA9PSAnXFwnKToKLSAgICAgICAgICAgICAgICAgICAgaWYg
Z290X2lmOgotICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gc291cmNlW3N0YXJ0
KzQ6aV0ubHN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24uc3Rh
cnRzd2l0aCgnMCcpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLnN0
YXJ0c3dpdGgoJygwKScpKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfZXJy
b3JzID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGkg
Kz0gMQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzogICAgICAgICAgICAgICAgICAgICAgICAgICMg
SGFuZGxlIFwgaW4gY29kZS4KLSAgICAgICAgICAgICMgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0
aGUgcHJlLXByb2Nlc3NvciBcIGhhbmRsaW5nLgotICAgICAgICAgICAgaSArPSAxCi0gICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICBlbGlmIGlnbm9yZV9lcnJvcnM6Ci0gICAgICAgICAgICAj
IFRoZSB0b2tlbml6ZXIgc2VlbXMgdG8gYmUgaW4gcHJldHR5IGdvb2Qgc2hhcGUuICBUaGlzCi0g
ICAgICAgICAgICAjIHJhaXNlIGlzIGNvbmRpdGlvbmFsbHkgZGlzYWJsZWQgc28gdGhhdCBib2d1
cyBjb2RlCi0gICAgICAgICAgICAjIGluIGFuICNpZiAwIGJsb2NrIGNhbiBiZSBoYW5kbGVkLiAg
U2luY2Ugd2Ugd2lsbCBpZ25vcmUKLSAgICAgICAgICAgICMgaXQgYW55d2F5cywgdGhpcyBpcyBw
cm9iYWJseSBmaW5lLiAgU28gZGlzYWJsZSB0aGUKLSAgICAgICAgICAgICMgZXhjZXB0aW9uIGFu
ZCAgcmV0dXJuIHRoZSBib2d1cyBjaGFyLgotICAgICAgICAgICAgaSArPSAxCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdHb3QgaW52YWxpZCB0b2tlbiBpbiAl
cyBAICVkIHRva2VuOiVzOiAlclxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgn
PycsIGksIGMsIHNvdXJjZVtpLTEwOmkrMTBdKSkKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVF
cnJvcigndW5leHBlY3RlZCB0b2tlbicpCi0KLSAgICAgICAgaWYgaSA8PSAwOgotICAgICAgICAg
ICAgcHJpbnQoJ0ludmFsaWQgaW5kZXgsIGV4aXRpbmcgbm93LicpCi0gICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgeWllbGQgVG9rZW4odG9rZW5fdHlwZSwgc291cmNlW3N0YXJ0OmldLCBzdGFy
dCwgaSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGRlZiBtYWluKGFyZ3Yp
OgotICAgICAgICAiIiJEcml2ZXIgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLiIiIgotICAg
ICAgICBmb3IgZmlsZW5hbWUgaW4gYXJndlsxOl06Ci0gICAgICAgICAgICBzb3VyY2UgPSB1dGls
cy5SZWFkRmlsZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZvciB0b2tlbiBpbiBHZXRUb2tl
bnMoc291cmNlKToKLSAgICAgICAgICAgICAgICBwcmludCgnJS0xMnM6ICVzJyAlICh0b2tlbi50
b2tlbl90eXBlLCB0b2tlbi5uYW1lKSkKLSAgICAgICAgICAgICAgICAjIHByaW50KCdcciU2LjJm
JSUnICUgKDEwMC4wICogaW5kZXggLyB0b2tlbi5lbmQpLCkKLSAgICAgICAgICAgIHN5cy5zdGRv
dXQud3JpdGUoJ1xuJykKLQotCi0gICAgbWFpbihzeXMuYXJndikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NjcmlwdHMvZ2VuZXJhdG9yL2NwcC91dGlscy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Njcmlw
dHMvZ2VuZXJhdG9yL2NwcC91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
ZWFiMzZlZWMzMzVlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5l
cmF0b3IvY3BwL3V0aWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3IE5lYWwgTm9yd2l0egotIyBQb3J0
aW9ucyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgotIwotIyBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMgeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgot
IyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMgICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMKLSMgVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQot
IyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAotIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KLQotIiIiR2VuZXJpYyB1dGlsaXRpZXMgZm9yIEMrKyBwYXJz
aW5nLiIiIgotCi1fX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdvb2dsZS5jb20gKE5lYWwgTm9yd2l0
eiknCi0KLQotaW1wb3J0IHN5cwotCi0KLSMgU2V0IHRvIFRydWUgdG8gc2VlIHRoZSBzdGFydC9l
bmQgdG9rZW4gaW5kaWNlcy4KLURFQlVHID0gVHJ1ZQotCi0KLWRlZiBSZWFkRmlsZShmaWxlbmFt
ZSwgcHJpbnRfZXJyb3I9VHJ1ZSk6Ci0gICAgIiIiUmV0dXJucyB0aGUgY29udGVudHMgb2YgYSBm
aWxlLiIiIgotICAgIHRyeToKLSAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXR1cm4gZnAucmVhZCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBmcC5jbG9zZSgpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIGlmIHByaW50
X2Vycm9yOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHJlYWRpbmcgJXM6ICVzJyAlIChmaWxl
bmFtZSwgc3lzLmV4Y19pbmZvKClbMV0pKQotICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nZW5lcmF0b3IvZ21vY2tfZ2VuLnB5IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svc2NyaXB0cy9nZW5lcmF0b3IvZ21vY2tfZ2VuLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCA4Y2MwZDEzNWQ2ZjIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3Jp
cHRzL2dlbmVyYXRvci9nbW9ja19nZW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSMKLSMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jCi0jICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCi0KLSIiIkRyaXZlciBmb3Igc3RhcnRpbmcgdXAgR29vZ2xlIE1vY2sgY2xhc3Mg
Z2VuZXJhdG9yLiIiIgotCi1fX2F1dGhvcl9fID0gJ25ub3J3aXR6QGdvb2dsZS5jb20gKE5lYWwg
Tm9yd2l0eiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1pZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgotICAjIEFkZCB0aGUgZGlyZWN0b3J5IG9mIHRoaXMgc2NyaXB0IHRvIHRoZSBwYXRo
IHNvIHdlIGNhbiBpbXBvcnQgZ21vY2tfY2xhc3MuCi0gIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pKQotCi0gIGZyb20gY3BwIGltcG9ydCBnbW9ja19jbGFzcwotICAj
IEZpeCB0aGUgZG9jc3RyaW5nIGluIGNhc2UgdGhleSByZXF1aXJlIHRoZSB1c2FnZS4KLSAgZ21v
Y2tfY2xhc3MuX19kb2NfXyA9IGdtb2NrX2NsYXNzLl9fZG9jX18ucmVwbGFjZSgnZ21vY2tfY2xh
c3MucHknLCBfX2ZpbGVfXykKLSAgZ21vY2tfY2xhc3MubWFpbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay9zY3JpcHRzL2dtb2NrLWNvbmZpZy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvZ21v
Y2stY29uZmlnLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAyYmFlZmU5NGQ2ZmIu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL2dtb2NrLWNvbmZpZy5pbgor
KysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0jIS9iaW4vc2gKLQotIyBUaGVzZSB2YXJp
YWJsZXMgYXJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkIGluIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0
LgotbmFtZT0iQFBBQ0tBR0VfVEFSTkFNRUAiCi12ZXJzaW9uPSJAUEFDS0FHRV9WRVJTSU9OQCIK
LQotc2hvd191c2FnZSgpCi17Ci0gIGVjaG8gIlVzYWdlOiBnbW9jay1jb25maWcgW09QVElPTlMu
Li5dIgotfQotCi1zaG93X2hlbHAoKQotewotICBzaG93X3VzYWdlCi0gIGNhdCA8PFxFT0YKLQot
VGhlIGBnbW9jay1jb25maWcnIHNjcmlwdCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG5lY2Vzc2Fy
eSBjb21waWxlIGFuZCBsaW5raW5nCi1mbGFncyB0byBjb25uZWN0IHdpdGggR29vZ2xlIEMrKyBN
b2NraW5nIEZyYW1ld29yaywgYm90aCBpbiBhIGJ1aWxkIHByaW9yIHRvCi1pbnN0YWxsYXRpb24s
IGFuZCBvbiB0aGUgc3lzdGVtIHByb3BlciBhZnRlciBpbnN0YWxsYXRpb24uIFRoZSBpbnN0YWxs
YXRpb24KLW92ZXJyaWRlcyBtYXkgYmUgaXNzdWVkIGluIGNvbWJpbmF0aW9uIHdpdGggYW55IG90
aGVyIHF1ZXJpZXMsIGJ1dCB3aWxsIG9ubHkKLWFmZmVjdCBpbnN0YWxsYXRpb24gcXVlcmllcyBp
ZiBjYWxsZWQgb24gYSBidWlsdCBidXQgbm90IGluc3RhbGxlZCBnbW9jay4gVGhlCi1pbnN0YWxs
YXRpb24gcXVlcmllcyBtYXkgbm90IGJlIGlzc3VlZCB3aXRoIGFueSBvdGhlciB0eXBlcyBvZiBx
dWVyaWVzLCBhbmQKLW9ubHkgb25lIGluc3RhbGxhdGlvbiBxdWVyeSBtYXkgYmUgbWFkZSBhdCBh
IHRpbWUuIFRoZSB2ZXJzaW9uIHF1ZXJpZXMgYW5kCi1jb21waWxlciBmbGFnIHF1ZXJpZXMgbWF5
IGJlIGNvbWJpbmVkIGFzIGRlc2lyZWQgYnV0IG5vdCBtaXhlZC4gRGlmZmVyZW50Ci12ZXJzaW9u
IHF1ZXJpZXMgYXJlIGFsd2F5cyBjb21iaW5lZCB3aXRoIGxvZ2ljYWwgImFuZCIgc2VtYW50aWNz
LCBhbmQgb25seSB0aGUKLWxhc3Qgb2YgYW55IHBhcnRpY3VsYXIgcXVlcnkgaXMgdXNlZCB3aGls
ZSBhbGwgcHJldmlvdXMgb25lcyBpZ25vcmVkLiBBbGwKLXZlcnNpb25zIG11c3QgYmUgc3BlY2lm
aWVkIGFzIGEgc2VxdWVuY2Ugb2YgbnVtYmVycyBzZXBhcmF0ZWQgYnkgcGVyaW9kcy4KLUNvbXBp
bGVyIGZsYWcgcXVlcmllcyBvdXRwdXQgdGhlIHVuaW9uIG9mIHRoZSBzZXRzIG9mIGZsYWdzIHdo
ZW4gY29tYmluZWQuCi0KLSBFeGFtcGxlczoKLSAgZ21vY2stY29uZmlnIC0tbWluLXZlcnNpb249
MS4wIHx8IGVjaG8gIkluc3VmZmljaWVudCBHb29nbGUgTW9jayB2ZXJzaW9uLiIKLQotICBnKysg
JChnbW9jay1jb25maWcgLS1jcHBmbGFncyAtLWN4eGZsYWdzKSAtbyBmb28ubyAtYyBmb28uY3Bw
Ci0gIGcrKyAkKGdtb2NrLWNvbmZpZyAtLWxkZmxhZ3MgLS1saWJzKSAtbyBmb28gZm9vLm8KLQot
ICAjIFdoZW4gdXNpbmcgYSBidWlsdCBidXQgbm90IGluc3RhbGxlZCBHb29nbGUgTW9jazoKLSAg
ZysrICQoLi4vLi4vbXlfZ21vY2tfYnVpbGQvc2NyaXB0cy9nbW9jay1jb25maWcgLi4uKSAuLi4K
LQotICAjIFdoZW4gdXNpbmcgYW4gaW5zdGFsbGVkIEdvb2dsZSBNb2NrLCBidXQgd2l0aCBpbnN0
YWxsYXRpb24gb3ZlcnJpZGVzOgotICBleHBvcnQgR01PQ0tfUFJFRklYPSIvb3B0IgotICBnKysg
JChnbW9jay1jb25maWcgLS1saWJkaXI9Ii9vcHQvbGliNjQiIC4uLikgLi4uCi0KLSBIZWxwOgot
ICAtLXVzYWdlICAgICAgICAgICAgICAgICAgICBicmllZiB1c2FnZSBpbmZvcm1hdGlvbgotICAt
LWhlbHAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlCi0KLSBJ
bnN0YWxsYXRpb24gT3ZlcnJpZGVzOgotICAtLXByZWZpeD08ZGlyPiAgICAgICAgICAgICBvdmVy
cmlkZXMgdGhlIGluc3RhbGxhdGlvbiBwcmVmaXgKLSAgLS1leGVjLXByZWZpeD08ZGlyPiAgICAg
ICAgb3ZlcnJpZGVzIHRoZSBleGVjdXRhYmxlIGluc3RhbGxhdGlvbiBwcmVmaXgKLSAgLS1saWJk
aXI9PGRpcj4gICAgICAgICAgICAgb3ZlcnJpZGVzIHRoZSBsaWJyYXJ5IGluc3RhbGxhdGlvbiBw
cmVmaXgKLSAgLS1pbmNsdWRlZGlyPTxkaXI+ICAgICAgICAgb3ZlcnJpZGVzIHRoZSBoZWFkZXIg
ZmlsZSBpbnN0YWxsYXRpb24gcHJlZml4Ci0KLSBJbnN0YWxsYXRpb24gUXVlcmllczoKLSAgLS1w
cmVmaXggICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHByZWZpeAotICAtLWV4ZWMtcHJl
Zml4ICAgICAgICAgICAgICBleGVjdXRhYmxlIGluc3RhbGxhdGlvbiBwcmVmaXgKLSAgLS1saWJk
aXIgICAgICAgICAgICAgICAgICAgbGlicmFyeSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5Ci0gIC0t
aW5jbHVkZWRpciAgICAgICAgICAgICAgIGhlYWRlciBmaWxlIGluc3RhbGxhdGlvbiBkaXJlY3Rv
cnkKLSAgLS12ZXJzaW9uICAgICAgICAgICAgICAgICAgdGhlIHZlcnNpb24gb2YgdGhlIEdvb2ds
ZSBNb2NrIGluc3RhbGxhdGlvbgotCi0gVmVyc2lvbiBRdWVyaWVzOgotICAtLW1pbi12ZXJzaW9u
PVZFUlNJT04gICAgICByZXR1cm4gMCBpZiB0aGUgdmVyc2lvbiBpcyBhdCBsZWFzdCBWRVJTSU9O
Ci0gIC0tZXhhY3QtdmVyc2lvbj1WRVJTSU9OICAgIHJldHVybiAwIGlmIHRoZSB2ZXJzaW9uIGlz
IGV4YWN0bHkgVkVSU0lPTgotICAtLW1heC12ZXJzaW9uPVZFUlNJT04gICAgICByZXR1cm4gMCBp
ZiB0aGUgdmVyc2lvbiBpcyBhdCBtb3N0IFZFUlNJT04KLQotIENvbXBpbGF0aW9uIEZsYWcgUXVl
cmllczoKLSAgLS1jcHBmbGFncyAgICAgICAgICAgICAgICAgY29tcGlsZSBmbGFncyBzcGVjaWZp
YyB0byB0aGUgQy1saWtlIHByZXByb2Nlc3NvcnMKLSAgLS1jeHhmbGFncyAgICAgICAgICAgICAg
ICAgY29tcGlsZSBmbGFncyBhcHByb3ByaWF0ZSBmb3IgQysrIHByb2dyYW1zCi0gIC0tbGRmbGFn
cyAgICAgICAgICAgICAgICAgIGxpbmtlciBmbGFncwotICAtLWxpYnMgICAgICAgICAgICAgICAg
ICAgICBsaWJyYXJpZXMgZm9yIGxpbmtpbmcKLQotRU9GCi19Ci0KLSMgVGhpcyBmdW5jdGlvbiBi
b3VuZHMgb3VyIHZlcnNpb24gd2l0aCBhIG1pbiBhbmQgYSBtYXguIEl0IHVzZXMgc29tZSBjbGV2
ZXIKLSMgUE9TSVgtY29tcGxpYW50IHZhcmlhYmxlIGV4cGFuc2lvbiB0byBwb3J0YWJseSBkbyBh
bGwgdGhlIHdvcmsgaW4gdGhlIHNoZWxsCi0jIGFuZCBhdm9pZCBhbnkgZGVwZW5kZW5jeSBvbiBh
IHBhcnRpY3VsYXIgInNlZCIgb3IgImF3ayIgaW1wbGVtZW50YXRpb24uCi0jIE5vdGFibGUgaXMg
dGhhdCBpdCB3aWxsIG9ubHkgZXZlciBjb21wYXJlIHRoZSBmaXJzdCAzIGNvbXBvbmVudHMgb2Yg
dmVyc2lvbnMuCi0jIEZ1cnRoZXIgY29tcG9uZW50cyB3aWxsIGJlIGNsZWFubHkgc3RyaXBwZWQg
b2ZmLiBBbGwgdmVyc2lvbnMgbXVzdCBiZQotIyB1bmFkb3JuZWQsIHNvICJ2MS4wIiB3aWxsICpu
b3QqIHdvcmsuIFRoZSBtaW5pbXVtIHZlcnNpb24gbXVzdCBiZSBpbiAkMSwgYW5kCi0jIHRoZSBt
YXggaW4gJDIuIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBJZiB0aGlzIGV2ZXIgYnJlYWtz
LCB3ZSBzaG91bGQKLSMgaW52ZXN0aWdhdGUgZXhwYW5kaW5nIHRoaXMgdmlhIGF1dG9tNHRlIGZy
b20gQVNfVkVSU0lPTl9DT01QQVJFIHJhdGhlciB0aGFuCi0jIGNvbnRpbnVpbmcgdG8gbWFpbnRh
aW4gb3VyIG93biBzaGVsbCB2ZXJzaW9uLgotY2hlY2tfdmVyc2lvbnMoKQotewotICBtYWpvcl92
ZXJzaW9uPSR7dmVyc2lvbiUlLip9Ci0gIG1pbm9yX3ZlcnNpb249IjAiCi0gIHBvaW50X3ZlcnNp
b249IjAiCi0gIGlmIHRlc3QgIiR7dmVyc2lvbiMqLn0iICE9ICIke3ZlcnNpb259IjsgdGhlbgot
ICAgIG1pbm9yX3ZlcnNpb249JHt2ZXJzaW9uIyoufQotICAgIG1pbm9yX3ZlcnNpb249JHttaW5v
cl92ZXJzaW9uJSUuKn0KLSAgZmkKLSAgaWYgdGVzdCAiJHt2ZXJzaW9uIyouKi59IiAhPSAiJHt2
ZXJzaW9ufSI7IHRoZW4KLSAgICBwb2ludF92ZXJzaW9uPSR7dmVyc2lvbiMqLioufQotICAgIHBv
aW50X3ZlcnNpb249JHtwb2ludF92ZXJzaW9uJSUuKn0KLSAgZmkKLQotICBtaW5fdmVyc2lvbj0i
JDEiCi0gIG1pbl9tYWpvcl92ZXJzaW9uPSR7bWluX3ZlcnNpb24lJS4qfQotICBtaW5fbWlub3Jf
dmVyc2lvbj0iMCIKLSAgbWluX3BvaW50X3ZlcnNpb249IjAiCi0gIGlmIHRlc3QgIiR7bWluX3Zl
cnNpb24jKi59IiAhPSAiJHttaW5fdmVyc2lvbn0iOyB0aGVuCi0gICAgbWluX21pbm9yX3ZlcnNp
b249JHttaW5fdmVyc2lvbiMqLn0KLSAgICBtaW5fbWlub3JfdmVyc2lvbj0ke21pbl9taW5vcl92
ZXJzaW9uJSUuKn0KLSAgZmkKLSAgaWYgdGVzdCAiJHttaW5fdmVyc2lvbiMqLioufSIgIT0gIiR7
bWluX3ZlcnNpb259IjsgdGhlbgotICAgIG1pbl9wb2ludF92ZXJzaW9uPSR7bWluX3ZlcnNpb24j
Ki4qLn0KLSAgICBtaW5fcG9pbnRfdmVyc2lvbj0ke21pbl9wb2ludF92ZXJzaW9uJSUuKn0KLSAg
ZmkKLQotICBtYXhfdmVyc2lvbj0iJDIiCi0gIG1heF9tYWpvcl92ZXJzaW9uPSR7bWF4X3ZlcnNp
b24lJS4qfQotICBtYXhfbWlub3JfdmVyc2lvbj0iMCIKLSAgbWF4X3BvaW50X3ZlcnNpb249IjAi
Ci0gIGlmIHRlc3QgIiR7bWF4X3ZlcnNpb24jKi59IiAhPSAiJHttYXhfdmVyc2lvbn0iOyB0aGVu
Ci0gICAgbWF4X21pbm9yX3ZlcnNpb249JHttYXhfdmVyc2lvbiMqLn0KLSAgICBtYXhfbWlub3Jf
dmVyc2lvbj0ke21heF9taW5vcl92ZXJzaW9uJSUuKn0KLSAgZmkKLSAgaWYgdGVzdCAiJHttYXhf
dmVyc2lvbiMqLioufSIgIT0gIiR7bWF4X3ZlcnNpb259IjsgdGhlbgotICAgIG1heF9wb2ludF92
ZXJzaW9uPSR7bWF4X3ZlcnNpb24jKi4qLn0KLSAgICBtYXhfcG9pbnRfdmVyc2lvbj0ke21heF9w
b2ludF92ZXJzaW9uJSUuKn0KLSAgZmkKLQotICB0ZXN0ICQoKCRtYWpvcl92ZXJzaW9uKSkgLWx0
ICQoKCRtaW5fbWFqb3JfdmVyc2lvbikpICYmIGV4aXQgMQotICBpZiB0ZXN0ICQoKCRtYWpvcl92
ZXJzaW9uKSkgLWVxICQoKCRtaW5fbWFqb3JfdmVyc2lvbikpOyB0aGVuCi0gICAgdGVzdCAkKCgk
bWlub3JfdmVyc2lvbikpIC1sdCAkKCgkbWluX21pbm9yX3ZlcnNpb24pKSAmJiBleGl0IDEKLSAg
ICBpZiB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWVxICQoKCRtaW5fbWlub3JfdmVyc2lvbikp
OyB0aGVuCi0gICAgICB0ZXN0ICQoKCRwb2ludF92ZXJzaW9uKSkgLWx0ICQoKCRtaW5fcG9pbnRf
dmVyc2lvbikpICYmIGV4aXQgMQotICAgIGZpCi0gIGZpCi0KLSAgdGVzdCAkKCgkbWFqb3JfdmVy
c2lvbikpIC1ndCAkKCgkbWF4X21ham9yX3ZlcnNpb24pKSAmJiBleGl0IDEKLSAgaWYgdGVzdCAk
KCgkbWFqb3JfdmVyc2lvbikpIC1lcSAkKCgkbWF4X21ham9yX3ZlcnNpb24pKTsgdGhlbgotICAg
IHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24pKSAtZ3QgJCgoJG1heF9taW5vcl92ZXJzaW9uKSkgJiYg
ZXhpdCAxCi0gICAgaWYgdGVzdCAkKCgkbWlub3JfdmVyc2lvbikpIC1lcSAkKCgkbWF4X21pbm9y
X3ZlcnNpb24pKTsgdGhlbgotICAgICAgdGVzdCAkKCgkcG9pbnRfdmVyc2lvbikpIC1ndCAkKCgk
bWF4X3BvaW50X3ZlcnNpb24pKSAmJiBleGl0IDEKLSAgICBmaQotICBmaQotCi0gIGV4aXQgMAot
fQotCi0jIFNob3cgdGhlIHVzYWdlIGxpbmUgd2hlbiBubyBhcmd1bWVudHMgYXJlIHNwZWNpZmll
ZC4KLWlmIHRlc3QgJCMgLWVxIDA7IHRoZW4KLSAgc2hvd191c2FnZQotICBleGl0IDEKLWZpCi0K
LXdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gIGNhc2UgJDEgaW4KLSAgICAtLXVzYWdlKSAgICAg
ICAgICBzaG93X3VzYWdlOyAgICAgICAgIGV4aXQgMDs7Ci0gICAgLS1oZWxwKSAgICAgICAgICAg
c2hvd19oZWxwOyAgICAgICAgICBleGl0IDA7OwotCi0gICAgIyBJbnN0YWxsYXRpb24gb3ZlcnJp
ZGVzCi0gICAgLS1wcmVmaXg9KikgICAgICAgR01PQ0tfUFJFRklYPSR7MSMtLXByZWZpeD19OzsK
LSAgICAtLWV4ZWMtcHJlZml4PSopICBHTU9DS19FWEVDX1BSRUZJWD0kezEjLS1leGVjLXByZWZp
eD19OzsKLSAgICAtLWxpYmRpcj0qKSAgICAgICBHTU9DS19MSUJESVI9JHsxIy0tbGliZGlyPX07
OwotICAgIC0taW5jbHVkZWRpcj0qKSAgIEdNT0NLX0lOQ0xVREVESVI9JHsxIy0taW5jbHVkZWRp
cj19OzsKLQotICAgICMgSW5zdGFsbGF0aW9uIHF1ZXJpZXMKLSAgICAtLXByZWZpeHwtLWV4ZWMt
cHJlZml4fC0tbGliZGlyfC0taW5jbHVkZWRpcnwtLXZlcnNpb24pCi0gICAgICBpZiB0ZXN0IC1u
ICIke2RvX3F1ZXJ5fSI7IHRoZW4KLSAgICAgICAgc2hvd191c2FnZQotICAgICAgICBleGl0IDEK
LSAgICAgIGZpCi0gICAgICBkb19xdWVyeT0kezEjLS19Ci0gICAgICA7OwotCi0gICAgIyBWZXJz
aW9uIGNoZWNraW5nCi0gICAgLS1taW4tdmVyc2lvbj0qKQotICAgICAgZG9fY2hlY2tfdmVyc2lv
bnM9eWVzCi0gICAgICBtaW5fdmVyc2lvbj0kezEjLS1taW4tdmVyc2lvbj19Ci0gICAgICA7Owot
ICAgIC0tbWF4LXZlcnNpb249KikKLSAgICAgIGRvX2NoZWNrX3ZlcnNpb25zPXllcwotICAgICAg
bWF4X3ZlcnNpb249JHsxIy0tbWF4LXZlcnNpb249fQotICAgICAgOzsKLSAgICAtLWV4YWN0LXZl
cnNpb249KikKLSAgICAgIGRvX2NoZWNrX3ZlcnNpb25zPXllcwotICAgICAgZXhhY3RfdmVyc2lv
bj0kezEjLS1leGFjdC12ZXJzaW9uPX0KLSAgICAgIDs7Ci0KLSAgICAjIENvbXBpbGVyIGZsYWcg
b3V0cHV0Ci0gICAgLS1jcHBmbGFncykgICAgICAgZWNob19jcHBmbGFncz15ZXM7OwotICAgIC0t
Y3h4ZmxhZ3MpICAgICAgIGVjaG9fY3h4ZmxhZ3M9eWVzOzsKLSAgICAtLWxkZmxhZ3MpICAgICAg
ICBlY2hvX2xkZmxhZ3M9eWVzOzsKLSAgICAtLWxpYnMpICAgICAgICAgICBlY2hvX2xpYnM9eWVz
OzsKLQotICAgICMgRXZlcnl0aGluZyBlbHNlIGlzIGFuIGVycm9yCi0gICAgKikgICAgICAgICAg
ICAgICAgc2hvd191c2FnZTsgICAgICAgICBleGl0IDE7OwotICBlc2FjCi0gIHNoaWZ0Ci1kb25l
Ci0KLSMgVGhlc2UgaGF2ZSBkZWZhdWx0cyBmaWxsZWQgaW4gYnkgdGhlIGNvbmZpZ3VyZSBzY3Jp
cHQgYnV0IGNhbiBhbHNvIGJlCi0jIG92ZXJyaWRkZW4gYnkgZW52aXJvbm1lbnQgdmFyaWFibGVz
IG9yIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgotcHJlZml4PSIke0dNT0NLX1BSRUZJWDotQHBy
ZWZpeEB9IgotZXhlY19wcmVmaXg9IiR7R01PQ0tfRVhFQ19QUkVGSVg6LUBleGVjX3ByZWZpeEB9
IgotbGliZGlyPSIke0dNT0NLX0xJQkRJUjotQGxpYmRpckB9IgotaW5jbHVkZWRpcj0iJHtHTU9D
S19JTkNMVURFRElSOi1AaW5jbHVkZWRpckB9IgotCi0jIFdlIHRyeSBhbmQgZGV0ZWN0IGlmIG91
ciBiaW5hcnkgaXMgbm90IGxvY2F0ZWQgYXQgaXRzIGluc3RhbGxlZCBsb2NhdGlvbi4gSWYKLSMg
aXQncyBub3QsIHdlIHByb3ZpZGUgdmFyaWFibGVzIHBvaW50aW5nIHRvIHRoZSBzb3VyY2UgYW5k
IGJ1aWxkIHRyZWUgcmF0aGVyCi0jIHRoYW4gdG8gdGhlIGluc3RhbGwgdHJlZS4gV2UgYWxzbyBs
b2NhdGUgR29vZ2xlIFRlc3QgdXNpbmcgdGhlIGNvbmZpZ3VyZWQKLSMgZ3Rlc3QtY29uZmlnIHNj
cmlwdCByYXRoZXIgdGhhbiBzZWFyY2hpbmcgdGhlIFBBVEggYW5kIG91ciBiaW5kaXIgZm9yIG9u
ZS4KLSMgVGhpcyBhbGxvd3MgYnVpbGRpbmcgYWdhaW5zdCBhIGp1c3QtYnVpbHQgZ21vY2sgcmF0
aGVyIHRoYW4gYW4gaW5zdGFsbGVkCi0jIGdtb2NrLgotYmluZGlyPSJAYmluZGlyQCIKLXRoaXNf
cmVsYXRpdmVfYmluZGlyPWBkaXJuYW1lICQwYAotdGhpc19iaW5kaXI9YGNkICR7dGhpc19yZWxh
dGl2ZV9iaW5kaXJ9OyBwd2QgLVBgCi1pZiB0ZXN0ICIke3RoaXNfYmluZGlyfSIgPSAiJHt0aGlz
X2JpbmRpciUke2JpbmRpcn19IjsgdGhlbgotICAjIFRoZSBwYXRoIHRvIHRoZSBzY3JpcHQgZG9l
c24ndCBlbmQgaW4gdGhlIGJpbmRpciBzZXF1ZW5jZSBmcm9tIEF1dG9jb25mLAotICAjIGFzc3Vt
ZSB0aGF0IHdlIGFyZSBpbiBhIGJ1aWxkIHRyZWUuCi0gIGJ1aWxkX2Rpcj1gZGlybmFtZSAke3Ro
aXNfYmluZGlyfWAKLSAgc3JjX2Rpcj1gY2QgJHt0aGlzX2JpbmRpcn0vQHRvcF9zcmNkaXJAOyBw
d2QgLVBgCi0KLSAgIyBUT0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKTogVGhpcyBpcyBhIGRhbmdl
cm91cyBkZXBlbmRlbmN5IG9uIGxpYnRvb2wsIHdlCi0gICMgc2hvdWxkIHdvcmsgdG8gcmVtb3Zl
IGl0LCBhbmQvb3IgcmVtb3ZlIGxpYnRvb2wgYWx0b2dldGhlciwgcmVwbGFjaW5nIGl0Ci0gICMg
d2l0aCBkaXJlY3QgcmVmZXJlbmNlcyB0byB0aGUgbGlicmFyeSBhbmQgYSBsaW5rIHBhdGguCi0g
IGdtb2NrX2xpYnM9IiR7YnVpbGRfZGlyfS9saWIvbGliZ21vY2subGEiCi0gIGdtb2NrX2xkZmxh
Z3M9IiIKLQotICAjIFdlIHByb3ZpZGUgaG9va3MgdG8gaW5jbHVkZSBmcm9tIGVpdGhlciB0aGUg
c291cmNlIG9yIGJ1aWxkIGRpciwgd2hlcmUgdGhlCi0gICMgYnVpbGQgZGlyIGlzIGFsd2F5cyBw
cmVmZXJyZWQuIFRoaXMgd2lsbCBwb3RlbnRpYWxseSBhbGxvdyB1cyB0byB3cml0ZQotICAjIGJ1
aWxkIHJ1bGVzIGZvciBnZW5lcmF0ZWQgaGVhZGVycyBhbmQgaGF2ZSB0aGVtIGF1dG9tYXRpY2Fs
bHkgYmUgcHJlZmVycmVkCi0gICMgb3ZlciBwcm92aWRlZCB2ZXJzaW9ucy4KLSAgZ21vY2tfY3Bw
ZmxhZ3M9Ii1JJHtidWlsZF9kaXJ9L2luY2x1ZGUgLUkke3NyY19kaXJ9L2luY2x1ZGUiCi0gIGdt
b2NrX2N4eGZsYWdzPSIiCi0KLSAgIyBEaXJlY3RseSBpbnZva2UgdGhlIGd0ZXN0LWNvbmZpZyBz
Y3JpcHQgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gIGd0ZXN0X2NvbmZpZz0iQEdU
RVNUX0NPTkZJR0AiCi1lbHNlCi0gICMgV2UncmUgdXNpbmcgYW4gaW5zdGFsbGVkIGdtb2NrLCBh
bHRob3VnaCBpdCBtYXkgYmUgc3RhZ2VkIHVuZGVyIHNvbWUKLSAgIyBwcmVmaXguIEFzc3VtZSAo
YXMgb3VyIG93biBsaWJyYXJpZXMgZG8pIHRoYXQgd2UgY2FuIHJlc29sdmUgdGhlIHByZWZpeCwK
LSAgIyBhbmQgYXJlIHByZXNlbnQgaW4gdGhlIGR5bmFtaWMgbGluayBwYXRocy4KLSAgZ21vY2tf
bGRmbGFncz0iLUwke2xpYmRpcn0iCi0gIGdtb2NrX2xpYnM9Ii1sJHtuYW1lfSIKLSAgZ21vY2tf
Y3BwZmxhZ3M9Ii1JJHtpbmNsdWRlZGlyfSIKLSAgZ21vY2tfY3h4ZmxhZ3M9IiIKLQotICAjIFdl
IGFsc28gcHJlZmVyIGFueSBndGVzdC1jb25maWcgc2NyaXB0IGluc3RhbGxlZCBpbiBvdXIgcHJl
Zml4LiBMYWNraW5nCi0gICMgb25lLCB3ZSBsb29rIGluIHRoZSBQQVRIIGZvciBvbmUuCi0gIGd0
ZXN0X2NvbmZpZz0iJHtiaW5kaXJ9L2d0ZXN0LWNvbmZpZyIKLSAgaWYgdGVzdCAhIC14ICIke2d0
ZXN0X2NvbmZpZ30iOyB0aGVuCi0gICAgZ3Rlc3RfY29uZmlnPWB3aGljaCBndGVzdC1jb25maWdg
Ci0gIGZpCi1maQotCi0jIEVuc3VyZSB0aGF0IHdlIGhhdmUgbG9jYXRlZCBhIEdvb2dsZSBUZXN0
IHRvIGxpbmsgYWdhaW5zdC4KLWlmICEgdGVzdCAteCAiJHtndGVzdF9jb25maWd9IjsgdGhlbgot
ICBlY2hvICJVbmFibGUgdG8gbG9jYXRlIEdvb2dsZSBUZXN0LCBjaGVjayB5b3VyIEdvb2dsZSBN
b2NrIGNvbmZpZ3VyYXRpb24iIFwKLSAgICAgICAiYW5kIGluc3RhbGxhdGlvbiIgPiYyCi0gIGV4
aXQgMQotZWxpZiAhICIke2d0ZXN0X2NvbmZpZ30iICItLWV4YWN0LXZlcnNpb249QEdURVNUX1ZF
UlNJT05AIjsgdGhlbgotICBlY2hvICJUaGUgR29vZ2xlIFRlc3QgZm91bmQgaXMgbm90IHRoZSBz
YW1lIHZlcnNpb24gYXMgR29vZ2xlIE1vY2sgd2FzICIgXAotICAgICAgICJidWlsdCBhZ2FpbnN0
IiA+JjIKLSAgZXhpdCAxCi1maQotCi0jIEFkZCB0aGUgbmVjZXNzYXJ5IEdvb2dsZSBUZXN0IGJp
dHMgaW50byB0aGUgdmFyaW91cyBmbGFnIHZhcmlhYmxlcwotZ21vY2tfY3BwZmxhZ3M9IiR7Z21v
Y2tfY3BwZmxhZ3N9IGAke2d0ZXN0X2NvbmZpZ30gLS1jcHBmbGFnc2AiCi1nbW9ja19jeHhmbGFn
cz0iJHtnbW9ja19jeHhmbGFnc30gYCR7Z3Rlc3RfY29uZmlnfSAtLWN4eGZsYWdzYCIKLWdtb2Nr
X2xkZmxhZ3M9IiR7Z21vY2tfbGRmbGFnc30gYCR7Z3Rlc3RfY29uZmlnfSAtLWxkZmxhZ3NgIgot
Z21vY2tfbGlicz0iJHtnbW9ja19saWJzfSBgJHtndGVzdF9jb25maWd9IC0tbGlic2AiCi0KLSMg
RG8gYW4gaW5zdGFsbGF0aW9uIHF1ZXJ5IGlmIHJlcXVlc3RlZC4KLWlmIHRlc3QgLW4gIiRkb19x
dWVyeSI7IHRoZW4KLSAgY2FzZSAkZG9fcXVlcnkgaW4KLSAgICBwcmVmaXgpICAgICAgICAgICBl
Y2hvICRwcmVmaXg7ICAgICAgIGV4aXQgMDs7Ci0gICAgZXhlYy1wcmVmaXgpICAgICAgZWNobyAk
ZXhlY19wcmVmaXg7ICBleGl0IDA7OwotICAgIGxpYmRpcikgICAgICAgICAgIGVjaG8gJGxpYmRp
cjsgICAgICAgZXhpdCAwOzsKLSAgICBpbmNsdWRlZGlyKSAgICAgICBlY2hvICRpbmNsdWRlZGly
OyAgIGV4aXQgMDs7Ci0gICAgdmVyc2lvbikgICAgICAgICAgZWNobyAkdmVyc2lvbjsgICAgICBl
eGl0IDA7OwotICAgICopICAgICAgICAgICAgICAgIHNob3dfdXNhZ2U7ICAgICAgICAgZXhpdCAx
OzsKLSAgZXNhYwotZmkKLQotIyBEbyBhIHZlcnNpb24gY2hlY2sgaWYgcmVxdWVzdGVkLgotaWYg
dGVzdCAiJGRvX2NoZWNrX3ZlcnNpb25zIiA9ICJ5ZXMiOyB0aGVuCi0gICMgTWFrZSBzdXJlIHdl
IGRpZG4ndCByZWNlaXZlIGEgYmFkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMuCi0gIHRlc3Qg
IiRlY2hvX2NwcGZsYWdzIiA9ICJ5ZXMiICYmIHNob3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3Qg
IiRlY2hvX2N4eGZsYWdzIiA9ICJ5ZXMiICYmIHNob3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3Qg
IiRlY2hvX2xkZmxhZ3MiID0gInllcyIgICYmIHNob3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3Qg
IiRlY2hvX2xpYnMiID0gInllcyIgICAgICYmIHNob3dfdXNhZ2UgJiYgZXhpdCAxCi0KLSAgaWYg
dGVzdCAiJGV4YWN0X3ZlcnNpb24iICE9ICIiOyB0aGVuCi0gICAgY2hlY2tfdmVyc2lvbnMgJGV4
YWN0X3ZlcnNpb24gJGV4YWN0X3ZlcnNpb24KLSAgICAjIHVucmVhY2hhYmxlCi0gIGVsc2UKLSAg
ICBjaGVja192ZXJzaW9ucyAke21pbl92ZXJzaW9uOi0wLjAuMH0gJHttYXhfdmVyc2lvbjotOTk5
OS45OTk5Ljk5OTl9Ci0gICAgIyB1bnJlYWNoYWJsZQotICBmaQotZmkKLQotIyBEbyB0aGUgb3V0
cHV0IGluIHRoZSBjb3JyZWN0IG9yZGVyIHNvIHRoYXQgdGhlc2UgY2FuIGJlIHVzZWQgaW4tbGlu
ZSBvZgotIyBhIGNvbXBpbGVyIGludm9jYXRpb24uCi1vdXRwdXQ9IiIKLXRlc3QgIiRlY2hvX2Nw
cGZsYWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91dHB1dCAkZ21vY2tfY3BwZmxhZ3MiCi10ZXN0
ICIkZWNob19jeHhmbGFncyIgPSAieWVzIiAmJiBvdXRwdXQ9IiRvdXRwdXQgJGdtb2NrX2N4eGZs
YWdzIgotdGVzdCAiJGVjaG9fbGRmbGFncyIgPSAieWVzIiAgJiYgb3V0cHV0PSIkb3V0cHV0ICRn
bW9ja19sZGZsYWdzIgotdGVzdCAiJGVjaG9fbGlicyIgPSAieWVzIiAgICAgJiYgb3V0cHV0PSIk
b3V0cHV0ICRnbW9ja19saWJzIgotZWNobyAkb3V0cHV0Ci0KLWV4aXQgMApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svc2NyaXB0cy9nbW9ja19kb2N0b3IucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRz
L2dtb2NrX2RvY3Rvci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzQ5OTJiYzc0
NDgxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy9nbW9ja19kb2N0b3Iu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiQ29udmVydHMgY29tcGlsZXIncyBlcnJvcnMgaW4g
Y29kZSB1c2luZyBHb29nbGUgTW9jayB0byBwbGFpbiBFbmdsaXNoLiIiIgotCi1fX2F1dGhvcl9f
ID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgcmUKLWltcG9ydCBz
eXMKLQotX1ZFUlNJT04gPSAnMS4wLjMnCi0KLV9FTUFJTCA9ICdnb29nbGVtb2NrQGdvb2dsZWdy
b3Vwcy5jb20nCi0KLV9DT01NT05fR01PQ0tfU1lNQk9MUyA9IFsKLSAgICAjIE1hdGNoZXJzCi0g
ICAgJ18nLAotICAgICdBJywKLSAgICAnQWRkcmVzc1NhdGlzZmllcycsCi0gICAgJ0FsbE9mJywK
LSAgICAnQW4nLAotICAgICdBbnlPZicsCi0gICAgJ0NvbnRhaW5lckVxJywKLSAgICAnQ29udGFp
bnMnLAotICAgICdDb250YWluc1JlZ2V4JywKLSAgICAnRG91YmxlRXEnLAotICAgICdFbGVtZW50
c0FyZScsCi0gICAgJ0VsZW1lbnRzQXJlQXJyYXknLAotICAgICdFbmRzV2l0aCcsCi0gICAgJ0Vx
JywKLSAgICAnRmllbGQnLAotICAgICdGbG9hdEVxJywKLSAgICAnR2UnLAotICAgICdHdCcsCi0g
ICAgJ0hhc1N1YnN0cicsCi0gICAgJ0lzSW5pdGlhbGl6ZWRQcm90bycsCi0gICAgJ0xlJywKLSAg
ICAnTHQnLAotICAgICdNYXRjaGVyQ2FzdCcsCi0gICAgJ01hdGNoZXMnLAotICAgICdNYXRjaGVz
UmVnZXgnLAotICAgICdOYW5TZW5zaXRpdmVEb3VibGVFcScsCi0gICAgJ05hblNlbnNpdGl2ZUZs
b2F0RXEnLAotICAgICdOZScsCi0gICAgJ05vdCcsCi0gICAgJ05vdE51bGwnLAotICAgICdQb2lu
dGVlJywKLSAgICAnUHJvcGVydHknLAotICAgICdSZWYnLAotICAgICdSZXN1bHRPZicsCi0gICAg
J1NhZmVNYXRjaGVyQ2FzdCcsCi0gICAgJ1N0YXJ0c1dpdGgnLAotICAgICdTdHJDYXNlRXEnLAot
ICAgICdTdHJDYXNlTmUnLAotICAgICdTdHJFcScsCi0gICAgJ1N0ck5lJywKLSAgICAnVHJ1bHkn
LAotICAgICdUeXBlZEVxJywKLSAgICAnVmFsdWUnLAotCi0gICAgIyBBY3Rpb25zCi0gICAgJ0Fz
c2lnbicsCi0gICAgJ0J5UmVmJywKLSAgICAnRGVsZXRlQXJnJywKLSAgICAnRG9BbGwnLAotICAg
ICdEb0RlZmF1bHQnLAotICAgICdJZ25vcmVSZXN1bHQnLAotICAgICdJbnZva2UnLAotICAgICdJ
bnZva2VBcmd1bWVudCcsCi0gICAgJ0ludm9rZVdpdGhvdXRBcmdzJywKLSAgICAnUmV0dXJuJywK
LSAgICAnUmV0dXJuTmV3JywKLSAgICAnUmV0dXJuTnVsbCcsCi0gICAgJ1JldHVyblJlZicsCi0g
ICAgJ1NhdmVBcmcnLAotICAgICdTZXRBcmdSZWZlcmVlJywKLSAgICAnU2V0QXJnUG9pbnRlZScs
Ci0gICAgJ1NldEFyZ3VtZW50UG9pbnRlZScsCi0gICAgJ1NldEFycmF5QXJndW1lbnQnLAotICAg
ICdTZXRFcnJub0FuZFJldHVybicsCi0gICAgJ1Rocm93JywKLSAgICAnV2l0aEFyZycsCi0gICAg
J1dpdGhBcmdzJywKLSAgICAnV2l0aG91dEFyZ3MnLAotCi0gICAgIyBDYXJkaW5hbGl0aWVzCi0g
ICAgJ0FueU51bWJlcicsCi0gICAgJ0F0TGVhc3QnLAotICAgICdBdE1vc3QnLAotICAgICdCZXR3
ZWVuJywKLSAgICAnRXhhY3RseScsCi0KLSAgICAjIFNlcXVlbmNlcwotICAgICdJblNlcXVlbmNl
JywKLSAgICAnU2VxdWVuY2UnLAotCi0gICAgIyBNaXNjCi0gICAgJ0RlZmF1bHRWYWx1ZScsCi0g
ICAgJ01vY2snLAotICAgIF0KLQotIyBSZWdleCBmb3IgbWF0Y2hpbmcgc291cmNlIGZpbGUgcGF0
aCBhbmQgbGluZSBudW1iZXIgaW4gdGhlIGNvbXBpbGVyJ3MgZXJyb3JzLgotX0dDQ19GSUxFX0xJ
TkVfUkUgPSByJyg/UDxmaWxlPi4qKTooP1A8bGluZT5cZCspOihcZCs6KT9ccysnCi1fQ0xBTkdf
RklMRV9MSU5FX1JFID0gcicoP1A8ZmlsZT4uKik6KD9QPGxpbmU+XGQrKTooP1A8Y29sdW1uPlxk
Kyk6XHMrJwotX0NMQU5HX05PTl9HTU9DS19GSUxFX0xJTkVfUkUgPSAoCi0gICAgcicoP1A8Zmls
ZT4uKlsvXFxeXSg/IWdtb2NrLSlbXi9cXF0rKTooP1A8bGluZT5cZCspOig/UDxjb2x1bW4+XGQr
KTpccysnKQotCi0KLWRlZiBfRmluZEFsbE1hdGNoZXMocmVnZXgsIHMpOgotICAiIiJHZW5lcmF0
ZXMgYWxsIG1hdGNoZXMgb2YgcmVnZXggaW4gc3RyaW5nIHMuIiIiCi0KLSAgciA9IHJlLmNvbXBp
bGUocmVnZXgpCi0gIHJldHVybiByLmZpbmRpdGVyKHMpCi0KLQotZGVmIF9HZW5lcmljRGlhZ25v
c2VyKHNob3J0X25hbWUsIGxvbmdfbmFtZSwgZGlhZ25vc2VzLCBtc2cpOgotICAiIiJEaWFnbm9z
ZXMgdGhlIGdpdmVuIGRpc2Vhc2UgYnkgcGF0dGVybiBtYXRjaGluZy4KLQotICBDYW4gcHJvdmlk
ZSBkaWZmZXJlbnQgZGlhZ25vc2VzIGZvciBkaWZmZXJlbnQgcGF0dGVybnMuCi0KLSAgQXJnczoK
LSAgICBzaG9ydF9uYW1lOiBTaG9ydCBuYW1lIG9mIHRoZSBkaXNlYXNlLgotICAgIGxvbmdfbmFt
ZTogIExvbmcgbmFtZSBvZiB0aGUgZGlzZWFzZS4KLSAgICBkaWFnbm9zZXM6ICBBIGxpc3Qgb2Yg
cGFpcnMgKHJlZ2V4LCBwYXR0ZXJuIGZvciBmb3JtYXR0aW5nIHRoZSBkaWFnbm9zaXMKLSAgICAg
ICAgICAgICAgICBmb3IgbWF0Y2hpbmcgcmVnZXgpLgotICAgIG1zZzogICAgICAgIENvbXBpbGVy
J3MgZXJyb3IgbWVzc2FnZXMuCi0gIFlpZWxkczoKLSAgICBUdXBsZXMgb2YgdGhlIGZvcm0KLSAg
ICAgIChzaG9ydCBuYW1lIG9mIGRpc2Vhc2UsIGxvbmcgbmFtZSBvZiBkaXNlYXNlLCBkaWFnbm9z
aXMpLgotICAiIiIKLSAgZm9yIHJlZ2V4LCBkaWFnbm9zaXMgaW4gZGlhZ25vc2VzOgotICAgIGlm
IHJlLnNlYXJjaChyZWdleCwgbXNnKToKLSAgICAgIGRpYWdub3NpcyA9ICclKGZpbGUpczolKGxp
bmUpczonICsgZGlhZ25vc2lzCi0gICAgICBmb3IgbSBpbiBfRmluZEFsbE1hdGNoZXMocmVnZXgs
IG1zZyk6Ci0gICAgICAgIHlpZWxkIChzaG9ydF9uYW1lLCBsb25nX25hbWUsIGRpYWdub3NpcyAl
IG0uZ3JvdXBkaWN0KCkpCi0KLQotZGVmIF9OZWVkVG9SZXR1cm5SZWZlcmVuY2VEaWFnbm9zZXIo
bXNnKToKLSAgIiIiRGlhZ25vc2VzIHRoZSBOUlIgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1l
c3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAocidJbiBtZW1iZXIg
ZnVuY3Rpb24gXCd0ZXN0aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uPFI+LipcbicKLSAgICAg
ICAgICAgICAgICsgX0dDQ19GSUxFX0xJTkVfUkUgKyByJ2luc3RhbnRpYXRlZCBmcm9tIGhlcmVc
bicKLSAgICAgICAgICAgICAgIHInLipnbW9jay1hY3Rpb25zXC5oLiplcnJvcjogY3JlYXRpbmcg
YXJyYXkgd2l0aCBuZWdhdGl2ZSBzaXplJykKLSAgY2xhbmdfcmVnZXggPSAocidlcnJvcjouKmFy
cmF5LipuZWdhdGl2ZS4qXHI/XG4nCi0gICAgICAgICAgICAgICAgIHInKC4qXG4pKj8nICsKLSAg
ICAgICAgICAgICAgICAgX0NMQU5HX05PTl9HTU9DS19GSUxFX0xJTkVfUkUgKwotICAgICAgICAg
ICAgICAgICByJ25vdGU6IGluIGluc3RhbnRpYXRpb24gb2YgZnVuY3Rpb24gdGVtcGxhdGUgc3Bl
Y2lhbGl6YXRpb24gJwotICAgICAgICAgICAgICAgICByJ1wndGVzdGluZzo6aW50ZXJuYWw6OlJl
dHVybkFjdGlvbjwoP1A8dHlwZT4uKik+JwotICAgICAgICAgICAgICAgICByJzo6b3BlcmF0b3Ig
QWN0aW9uPC4qPlwnIHJlcXVlc3RlZCBoZXJlJykKLSAgY2xhbmcxMV9yZSA9IChyJ3VzZV9SZXR1
cm5SZWZfaW5zdGVhZF9vZl9SZXR1cm5fdG9fcmV0dXJuX2FfcmVmZXJlbmNlLionCi0gICAgICAg
ICAgICAgICAgcicoLipcbikqPycgKyBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSkKLQot
ICBkaWFnbm9zaXMgPSAiIiIKLVlvdSBhcmUgdXNpbmcgYSBSZXR1cm4oKSBhY3Rpb24gaW4gYSBm
dW5jdGlvbiB0aGF0IHJldHVybnMgYSByZWZlcmVuY2UgdG8KLSUodHlwZSlzLiAgUGxlYXNlIHVz
ZSBSZXR1cm5SZWYoKSBpbnN0ZWFkLiIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ05S
UicsICdOZWVkIHRvIFJldHVybiBSZWZlcmVuY2UnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyhjbGFuZ19yZWdleCwgZGlhZ25vc2lzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2xhbmcxMV9yZSwgZGlhZ25vc2lzICUgeyd0eXBlJzogJ2EgdHlwZSd9KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZ2NjX3JlZ2V4LCBkaWFnbm9zaXMgJSB7J3R5cGUnOiAnYSB0
eXBlJ30pXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZykKLQotCi1kZWYgX05lZWRU
b1JldHVyblNvbWV0aGluZ0RpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIE5SUyBk
aXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0g
IGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHInKGluc3RhbnRpYXRlZCBmcm9tIGhl
cmVcbi4nCi0gICAgICAgICAgICAgICByJypnbW9jay4qYWN0aW9uc1wuaC4qZXJyb3I6IHZvaWQg
dmFsdWUgbm90IGlnbm9yZWQpJwotICAgICAgICAgICAgICAgcid8KGVycm9yOiBjb250cm9sIHJl
YWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uKScpCi0gIGNsYW5nX3JlZ2V4MSA9IChfQ0xB
TkdfRklMRV9MSU5FX1JFICsKLSAgICAgICAgICAgICAgICAgIHInZXJyb3I6IGNhbm5vdCBpbml0
aWFsaXplIHJldHVybiBvYmplY3QgJwotICAgICAgICAgICAgICAgICAgcidvZiB0eXBlIFwnUmVz
dWx0XCcgXChha2EgXCcoP1A8cmV0dXJuX3R5cGU+LiopXCdcKSAnCi0gICAgICAgICAgICAgICAg
ICByJ3dpdGggYW4gcnZhbHVlIG9mIHR5cGUgXCd2b2lkXCcnKQotICBjbGFuZ19yZWdleDIgPSAo
X0NMQU5HX0ZJTEVfTElORV9SRSArCi0gICAgICAgICAgICAgICAgICByJ2Vycm9yOiBjYW5ub3Qg
aW5pdGlhbGl6ZSByZXR1cm4gb2JqZWN0ICcKLSAgICAgICAgICAgICAgICAgIHInb2YgdHlwZSBc
Jyg/UDxyZXR1cm5fdHlwZT4uKilcJyAnCi0gICAgICAgICAgICAgICAgICByJ3dpdGggYW4gcnZh
bHVlIG9mIHR5cGUgXCd2b2lkXCcnKQotICBkaWFnbm9zaXMgPSAiIiIKLVlvdSBhcmUgdXNpbmcg
YW4gYWN0aW9uIHRoYXQgcmV0dXJucyB2b2lkLCBidXQgaXQgbmVlZHMgdG8gcmV0dXJuCi0lKHJl
dHVybl90eXBlKXMuICBQbGVhc2UgdGVsbCBpdCAqd2hhdCogdG8gcmV0dXJuLiAgUGVyaGFwcyB5
b3UgY2FuIHVzZQotdGhlIHBhdHRlcm4gRG9BbGwoc29tZV9hY3Rpb24sIFJldHVybihzb21lX3Zh
bHVlKSk/IiIiCi0gIHJldHVybiBfR2VuZXJpY0RpYWdub3NlcigKLSAgICAgICdOUlMnLAotICAg
ICAgJ05lZWQgdG8gUmV0dXJuIFNvbWV0aGluZycsCi0gICAgICBbKGdjY19yZWdleCwgZGlhZ25v
c2lzICUgeydyZXR1cm5fdHlwZSc6ICcqc29tZXRoaW5nKid9KSwKLSAgICAgICAoY2xhbmdfcmVn
ZXgxLCBkaWFnbm9zaXMpLAotICAgICAgIChjbGFuZ19yZWdleDIsIGRpYWdub3NpcyldLAotICAg
ICAgbXNnKQotCi0KLWRlZiBfTmVlZFRvUmV0dXJuTm90aGluZ0RpYWdub3Nlcihtc2cpOgotICAi
IiJEaWFnbm9zZXMgdGhlIE5STiBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkg
dGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArIHIn
aW5zdGFudGlhdGVkIGZyb20gaGVyZVxuJwotICAgICAgICAgICAgICAgcicuKmdtb2NrLWFjdGlv
bnNcLmguKmVycm9yOiBpbnN0YW50aWF0aW9uIG9mICcKLSAgICAgICAgICAgICAgIHInXCd0ZXN0
aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uPFI+OjpJbXBsPEY+Ojp2YWx1ZV9cJyAnCi0gICAg
ICAgICAgICAgICByJ2FzIHR5cGUgXCd2b2lkXCcnKQotICBjbGFuZ19yZWdleDEgPSAocidlcnJv
cjogZmllbGQgaGFzIGluY29tcGxldGUgdHlwZSAnCi0gICAgICAgICAgICAgICAgICByJ1wnUmVz
dWx0XCcgXChha2EgXCd2b2lkXCdcKShccik/XG4nCi0gICAgICAgICAgICAgICAgICByJyguKlxu
KSo/JyArCi0gICAgICAgICAgICAgICAgICBfQ0xBTkdfTk9OX0dNT0NLX0ZJTEVfTElORV9SRSAr
IHInbm90ZTogaW4gaW5zdGFudGlhdGlvbiAnCi0gICAgICAgICAgICAgICAgICByJ29mIGZ1bmN0
aW9uIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uICcKLSAgICAgICAgICAgICAgICAgIHInXCd0ZXN0
aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uPCg/UDxyZXR1cm5fdHlwZT4uKik+JwotICAgICAg
ICAgICAgICAgICAgcic6Om9wZXJhdG9yIEFjdGlvbjx2b2lkIFwoLipcKT5cJyByZXF1ZXN0ZWQg
aGVyZScpCi0gIGNsYW5nX3JlZ2V4MiA9IChyJ2Vycm9yOiBmaWVsZCBoYXMgaW5jb21wbGV0ZSB0
eXBlICcKLSAgICAgICAgICAgICAgICAgIHInXCdSZXN1bHRcJyBcKGFrYSBcJ3ZvaWRcJ1wpKFxy
KT9cbicKLSAgICAgICAgICAgICAgICAgIHInKC4qXG4pKj8nICsKLSAgICAgICAgICAgICAgICAg
IF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsgcidub3RlOiBpbiBpbnN0YW50aWF0aW9u
ICcKLSAgICAgICAgICAgICAgICAgIHInb2YgZnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b24gJwotICAgICAgICAgICAgICAgICAgcidcJ3Rlc3Rpbmc6OmludGVybmFsOjpEb0JvdGhBY3Rp
b248Lio+JwotICAgICAgICAgICAgICAgICAgcic6Om9wZXJhdG9yIEFjdGlvbjwoP1A8cmV0dXJu
X3R5cGU+LiopIFwoLipcKT5cJyAnCi0gICAgICAgICAgICAgICAgICByJ3JlcXVlc3RlZCBoZXJl
JykKLSAgZGlhZ25vc2lzID0gIiIiCi1Zb3UgYXJlIHVzaW5nIGFuIGFjdGlvbiB0aGF0IHJldHVy
bnMgJShyZXR1cm5fdHlwZSlzLCBidXQgaXQgbmVlZHMgdG8gcmV0dXJuCi12b2lkLiAgUGxlYXNl
IHVzZSBhIHZvaWQtcmV0dXJuaW5nIGFjdGlvbiBpbnN0ZWFkLgotCi1BbGwgYWN0aW9ucyBidXQg
dGhlIGxhc3QgaW4gRG9BbGwoLi4uKSBtdXN0IHJldHVybiB2b2lkLiAgUGVyaGFwcyB5b3UgbmVl
ZAotdG8gcmUtYXJyYW5nZSB0aGUgb3JkZXIgb2YgYWN0aW9ucyBpbiBhIERvQWxsKCksIGlmIHlv
dSBhcmUgdXNpbmcgb25lPyIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoCi0gICAgICAn
TlJOJywKLSAgICAgICdOZWVkIHRvIFJldHVybiBOb3RoaW5nJywKLSAgICAgIFsoZ2NjX3JlZ2V4
LCBkaWFnbm9zaXMgJSB7J3JldHVybl90eXBlJzogJypzb21ldGhpbmcqJ30pLAotICAgICAgIChj
bGFuZ19yZWdleDEsIGRpYWdub3NpcyksCi0gICAgICAgKGNsYW5nX3JlZ2V4MiwgZGlhZ25vc2lz
KV0sCi0gICAgICBtc2cpCi0KLQotZGVmIF9JbmNvbXBsZXRlQnlSZWZlcmVuY2VBcmd1bWVudERp
YWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIElCUkEgZGlzZWFzZSwgZ2l2ZW4gdGhl
IGVycm9yIG1lc3NhZ2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAoX0dD
Q19GSUxFX0xJTkVfUkUgKyByJ2luc3RhbnRpYXRlZCBmcm9tIGhlcmVcbicKLSAgICAgICAgICAg
ICAgIHInLipndGVzdC1wcmludGVyc1wuaC4qZXJyb3I6IGludmFsaWQgYXBwbGljYXRpb24gb2Yg
JwotICAgICAgICAgICAgICAgcidcJ3NpemVvZlwnIHRvIGluY29tcGxldGUgdHlwZSBcJyg/UDx0
eXBlPi4qKVwnJykKLQotICBjbGFuZ19yZWdleCA9IChyJy4qZ3Rlc3QtcHJpbnRlcnNcLmguKmVy
cm9yOiBpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICcKLSAgICAgICAgICAgICAgICAgcidcJ3NpemVv
ZlwnIHRvIGFuIGluY29tcGxldGUgdHlwZSAnCi0gICAgICAgICAgICAgICAgIHInXCcoP1A8dHlw
ZT4uKikoIGNvbnN0KT9cJ1xyP1xuJwotICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCi0g
ICAgICAgICAgICAgICAgIF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsKLSAgICAgICAg
ICAgICAgICAgcidub3RlOiBpbiBpbnN0YW50aWF0aW9uIG9mIG1lbWJlciBmdW5jdGlvbiAnCi0g
ICAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDI6OlR5cGVXaXRob3V0Rm9ybWF0
dGVyPC4qPjo6JwotICAgICAgICAgICAgICAgICByJ1ByaW50VmFsdWVcJyByZXF1ZXN0ZWQgaGVy
ZScpCi0gIGRpYWdub3NpcyA9ICIiIgotSW4gb3JkZXIgdG8gbW9jayB0aGlzIGZ1bmN0aW9uLCBH
b29nbGUgTW9jayBuZWVkcyB0byBzZWUgdGhlIGRlZmluaXRpb24KLW9mIHR5cGUgIiUodHlwZSlz
IiAtIGRlY2xhcmF0aW9uIGFsb25lIGlzIG5vdCBlbm91Z2guICBFaXRoZXIgI2luY2x1ZGUKLXRo
ZSBoZWFkZXIgdGhhdCBkZWZpbmVzIGl0LCBvciBjaGFuZ2UgdGhlIGFyZ3VtZW50IHRvIGJlIHBh
c3NlZAotYnkgcG9pbnRlci4iIiIKLQotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ0lCUkEn
LCAnSW5jb21wbGV0ZSBCeS1SZWZlcmVuY2UgQXJndW1lbnQgVHlwZScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBbKGdjY19yZWdleCwgZGlhZ25vc2lzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY2xhbmdfcmVnZXgsIGRpYWdub3NpcyldLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbXNnKQotCi0KLWRlZiBfT3ZlcmxvYWRlZEZ1bmN0aW9uTWF0Y2hlckRpYWdub3Nl
cihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIE9GTSBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3Ig
bWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVf
TElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciAnCi0gICAgICAgICAg
ICAgICByJ2NhbGwgdG8gXCdUcnVseVwoPHVucmVzb2x2ZWQgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0
eXBlPlwpJykKLSAgY2xhbmdfcmVnZXggPSAoX0NMQU5HX0ZJTEVfTElORV9SRSArIHInZXJyb3I6
IG5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciAnCi0gICAgICAgICAgICAgICAgIHInY2FsbCB0byBc
J1RydWx5JykKLSAgZGlhZ25vc2lzID0gIiIiCi1UaGUgYXJndW1lbnQgeW91IGdhdmUgdG8gVHJ1
bHkoKSBpcyBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uLiAgUGxlYXNlIHRlbGwKLXlvdXIgY29tcGls
ZXIgd2hpY2ggb3ZlcmxvYWRlZCB2ZXJzaW9uIHlvdSB3YW50IHRvIHVzZS4KLQotRm9yIGV4YW1w
bGUsIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgdmVyc2lvbiB3aG9zZSBzaWduYXR1cmUgaXMKLSAg
Ym9vbCBGb28oaW50IG4pOwoteW91IHNob3VsZCB3cml0ZQotICBUcnVseShzdGF0aWNfY2FzdDxi
b29sICgqKShpbnQgbik+KEZvbykpIiIiCi0gIHJldHVybiBfR2VuZXJpY0RpYWdub3NlcignT0ZN
JywgJ092ZXJsb2FkZWQgRnVuY3Rpb24gTWF0Y2hlcicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBbKGdjY19yZWdleCwgZGlhZ25vc2lzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY2xhbmdfcmVnZXgsIGRpYWdub3NpcyldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXNnKQotCi0KLWRlZiBfT3ZlcmxvYWRlZEZ1bmN0aW9uQWN0aW9uRGlhZ25vc2VyKG1zZyk6Ci0g
ICIiIkRpYWdub3NlcyB0aGUgT0ZBIGRpc2Vhc2UsIGdpdmVuIHRoZSBlcnJvciBtZXNzYWdlcyBi
eSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2NjX3JlZ2V4ID0gKF9HQ0NfRklMRV9MSU5FX1JFICsg
cidlcnJvcjogbm8gbWF0Y2hpbmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJwotICAgICAgICAgICAg
ICAgcidcJ0ludm9rZVwoPHVucmVzb2x2ZWQgb3ZlcmxvYWRlZCBmdW5jdGlvbiB0eXBlPicpCi0g
IGNsYW5nX3JlZ2V4ID0gKF9DTEFOR19GSUxFX0xJTkVfUkUgKyByJ2Vycm9yOiBubyBtYXRjaGlu
ZyAnCi0gICAgICAgICAgICAgICAgIHInZnVuY3Rpb24gZm9yIGNhbGwgdG8gXCdJbnZva2VcJ1xy
P1xuJwotICAgICAgICAgICAgICAgICByJyguKlxuKSo/JwotICAgICAgICAgICAgICAgICByJy4q
XGJnbW9jay1nZW5lcmF0ZWQtYWN0aW9uc1wuaDpcZCs6XGQrOlxzKycKLSAgICAgICAgICAgICAg
ICAgcidub3RlOiBjYW5kaWRhdGUgdGVtcGxhdGUgaWdub3JlZDpccysnCi0gICAgICAgICAgICAg
ICAgIHInY291bGRuXCd0IGluZmVyIHRlbXBsYXRlIGFyZ3VtZW50IFwnRnVuY3Rpb25JbXBsXCcn
KQotICBkaWFnbm9zaXMgPSAiIiIKLUZ1bmN0aW9uIHlvdSBhcmUgcGFzc2luZyB0byBJbnZva2Ug
aXMgb3ZlcmxvYWRlZC4gIFBsZWFzZSB0ZWxsIHlvdXIgY29tcGlsZXIKLXdoaWNoIG92ZXJsb2Fk
ZWQgdmVyc2lvbiB5b3Ugd2FudCB0byB1c2UuCi0KLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0
byB1c2UgdGhlIHZlcnNpb24gd2hvc2Ugc2lnbmF0dXJlIGlzCi0gIGJvb2wgTXlGdW5jdGlvbihp
bnQgbiwgZG91YmxlIHgpOwoteW91IHNob3VsZCB3cml0ZSBzb21ldGhpbmcgbGlrZQotICBJbnZv
a2Uoc3RhdGljX2Nhc3Q8Ym9vbCAoKikoaW50IG4sIGRvdWJsZSB4KT4oTXlGdW5jdGlvbikpIiIi
Ci0gIHJldHVybiBfR2VuZXJpY0RpYWdub3NlcignT0ZBJywgJ092ZXJsb2FkZWQgRnVuY3Rpb24g
QWN0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9z
aXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25vc2lz
KV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0KLQotZGVmIF9PdmVybG9hZGVk
TWV0aG9kQWN0aW9uRGlhZ25vc2VyKG1zZyk6Ci0gICIiIkRpYWdub3NlcyB0aGUgT01BIGRpc2Vh
c2UsIGdpdmVuIHRoZSBlcnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2Nj
X3JlZ2V4ID0gKF9HQ0NfRklMRV9MSU5FX1JFICsgcidlcnJvcjogbm8gbWF0Y2hpbmcgZnVuY3Rp
b24gZm9yICcKLSAgICAgICAgICAgICAgIHInY2FsbCB0byBcJ0ludm9rZVwoLissIDx1bnJlc29s
dmVkIG92ZXJsb2FkZWQgZnVuY3Rpb24gJwotICAgICAgICAgICAgICAgcid0eXBlPlwpJykKLSAg
Y2xhbmdfcmVnZXggPSAoX0NMQU5HX0ZJTEVfTElORV9SRSArIHInZXJyb3I6IG5vIG1hdGNoaW5n
IGZ1bmN0aW9uICcKLSAgICAgICAgICAgICAgICAgcidmb3IgY2FsbCB0byBcJ0ludm9rZVwnXHI/
XG4nCi0gICAgICAgICAgICAgICAgIHInKC4qXG4pKj8nCi0gICAgICAgICAgICAgICAgIHInLipc
Ymdtb2NrLWdlbmVyYXRlZC1hY3Rpb25zXC5oOlxkKzpcZCs6ICcKLSAgICAgICAgICAgICAgICAg
cidub3RlOiBjYW5kaWRhdGUgZnVuY3Rpb24gdGVtcGxhdGUgbm90IHZpYWJsZTogJwotICAgICAg
ICAgICAgICAgICByJ3JlcXVpcmVzIC4qLCBidXQgMiAoYXJndW1lbnRzICk/d2VyZSBwcm92aWRl
ZCcpCi0gIGRpYWdub3NpcyA9ICIiIgotVGhlIHNlY29uZCBhcmd1bWVudCB5b3UgZ2F2ZSB0byBJ
bnZva2UoKSBpcyBhbiBvdmVybG9hZGVkIG1ldGhvZC4gIFBsZWFzZQotdGVsbCB5b3VyIGNvbXBp
bGVyIHdoaWNoIG92ZXJsb2FkZWQgdmVyc2lvbiB5b3Ugd2FudCB0byB1c2UuCi0KLUZvciBleGFt
cGxlLCBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIHZlcnNpb24gd2hvc2Ugc2lnbmF0dXJlIGlzCi0g
IGNsYXNzIEZvbyB7Ci0gICAgLi4uCi0gICAgYm9vbCBCYXIoaW50IG4sIGRvdWJsZSB4KTsKLSAg
fTsKLXlvdSBzaG91bGQgd3JpdGUgc29tZXRoaW5nIGxpa2UKLSAgSW52b2tlKGZvbywgc3RhdGlj
X2Nhc3Q8Ym9vbCAoRm9vOjoqKShpbnQgbiwgZG91YmxlIHgpPigmRm9vOjpCYXIpKSIiIgotICBy
ZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIoJ09NQScsICdPdmVybG9hZGVkIE1ldGhvZCBBY3Rpb24n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMpXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZykKLQotCi1kZWYgX01vY2tPYmplY3RQb2ludGVy
RGlhZ25vc2VyKG1zZyk6Ci0gICIiIkRpYWdub3NlcyB0aGUgTU9QIGRpc2Vhc2UsIGdpdmVuIHRo
ZSBlcnJvciBtZXNzYWdlcyBieSB0aGUgY29tcGlsZXIuIiIiCi0KLSAgZ2NjX3JlZ2V4ID0gKF9H
Q0NfRklMRV9MSU5FX1JFICsgcidlcnJvcjogcmVxdWVzdCBmb3IgbWVtYmVyICcKLSAgICAgICAg
ICAgICAgIHInXCdnbW9ja18oP1A8bWV0aG9kPi4rKVwnIGluIFwnKD9QPG1vY2tfb2JqZWN0Pi4r
KVwnLCAnCi0gICAgICAgICAgICAgICByJ3doaWNoIGlzIG9mIG5vbi1jbGFzcyB0eXBlIFwnKC4q
OjopKig/UDxjbGFzc19uYW1lPi4rKVwqXCcnKQotICBjbGFuZ19yZWdleCA9IChfQ0xBTkdfRklM
RV9MSU5FX1JFICsgcidlcnJvcjogbWVtYmVyIHJlZmVyZW5jZSB0eXBlICcKLSAgICAgICAgICAg
ICAgICAgcidcJyg/UDxjbGFzc19uYW1lPi4qPykgKlwnIGlzIGEgcG9pbnRlcjsgJwotICAgICAg
ICAgICAgICAgICByJyhkaWQgeW91IG1lYW58bWF5YmUgeW91IG1lYW50KSB0byB1c2UgXCctPlwn
XD8nKQotICBkaWFnbm9zaXMgPSAiIiIKLVRoZSBmaXJzdCBhcmd1bWVudCB0byBPTl9DQUxMKCkg
YW5kIEVYUEVDVF9DQUxMKCkgbXVzdCBiZSBhIG1vY2sgKm9iamVjdCosCi1ub3QgYSAqcG9pbnRl
ciogdG8gaXQuICBQbGVhc2Ugd3JpdGUgJyooJShtb2NrX29iamVjdClzKScgaW5zdGVhZCBvZgot
JyUobW9ja19vYmplY3QpcycgYXMgeW91ciBmaXJzdCBhcmd1bWVudC4KLQotRm9yIGV4YW1wbGUs
IGdpdmVuIHRoZSBtb2NrIGNsYXNzOgotCi0gIGNsYXNzICUoY2xhc3NfbmFtZSlzIDogcHVibGlj
IC4uLiB7Ci0gICAgLi4uCi0gICAgTU9DS19NRVRIT0QwKCUobWV0aG9kKXMsIC4uLik7Ci0gIH07
Ci0KLWFuZCB0aGUgZm9sbG93aW5nIG1vY2sgaW5zdGFuY2U6Ci0KLSAgJShjbGFzc19uYW1lKXMq
IG1vY2tfcHRyID0gLi4uCi0KLXlvdSBzaG91bGQgdXNlIHRoZSBFWFBFQ1RfQ0FMTCBsaWtlIHRo
aXM6Ci0KLSAgRVhQRUNUX0NBTEwoKm1vY2tfcHRyLCAlKG1ldGhvZClzKC4uLikpOyIiIgotCi0g
IHJldHVybiBfR2VuZXJpY0RpYWdub3NlcigKLSAgICAgICdNT1AnLAotICAgICAgJ01vY2sgT2Jq
ZWN0IFBvaW50ZXInLAotICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAgKGNs
YW5nX3JlZ2V4LCBkaWFnbm9zaXMgJSB7J21vY2tfb2JqZWN0JzogJ21vY2tfb2JqZWN0JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kJzogJ21ldGhvZCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzX25hbWUnOiAnJShjbGFzc19uYW1l
KXMnfSldLAotICAgICAgIG1zZykKLQotCi1kZWYgX05lZWRUb1VzZVN5bWJvbERpYWdub3Nlciht
c2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIE5VUyBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVz
c2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElO
RV9SRSArIHInZXJyb3I6IFwnKD9QPHN5bWJvbD4uKylcJyAnCi0gICAgICAgICAgICAgICByJyh3
YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGV8aGFzIG5vdCBiZWVuIGRlY2xhcmVkKScpCi0g
IGNsYW5nX3JlZ2V4ID0gKF9DTEFOR19GSUxFX0xJTkVfUkUgKwotICAgICAgICAgICAgICAgICBy
J2Vycm9yOiAodXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllcnx1bmtub3duIHR5cGUgbmFtZXwn
Ci0gICAgICAgICAgICAgICAgIHInbm8gdGVtcGxhdGUgbmFtZWQpIFwnKD9QPHN5bWJvbD5bXlwn
XSspXCcnKQotICBkaWFnbm9zaXMgPSAiIiIKLSclKHN5bWJvbClzJyBpcyBkZWZpbmVkIGJ5IEdv
b2dsZSBNb2NrIGluIHRoZSB0ZXN0aW5nIG5hbWVzcGFjZS4KLURpZCB5b3UgZm9yZ2V0IHRvIHdy
aXRlCi0gIHVzaW5nIHRlc3Rpbmc6OiUoc3ltYm9sKXM7Ci0/IiIiCi0gIGZvciBtIGluIChsaXN0
KF9GaW5kQWxsTWF0Y2hlcyhnY2NfcmVnZXgsIG1zZykpICsKLSAgICAgICAgICAgIGxpc3QoX0Zp
bmRBbGxNYXRjaGVzKGNsYW5nX3JlZ2V4LCBtc2cpKSk6Ci0gICAgc3ltYm9sID0gbS5ncm91cGRp
Y3QoKVsnc3ltYm9sJ10KLSAgICBpZiBzeW1ib2wgaW4gX0NPTU1PTl9HTU9DS19TWU1CT0xTOgot
ICAgICAgeWllbGQgKCdOVVMnLCAnTmVlZCB0byBVc2UgU3ltYm9sJywgZGlhZ25vc2lzICUgbS5n
cm91cGRpY3QoKSkKLQotCi1kZWYgX05lZWRUb1VzZVJldHVybk51bGxEaWFnbm9zZXIobXNnKToK
LSAgIiIiRGlhZ25vc2VzIHRoZSBOUk5VTEwgZGlzZWFzZSwgZ2l2ZW4gdGhlIGVycm9yIG1lc3Nh
Z2VzIGJ5IHRoZSBjb21waWxlci4iIiIKLQotICBnY2NfcmVnZXggPSAoJ2luc3RhbnRpYXRlZCBm
cm9tIFwndGVzdGluZzo6aW50ZXJuYWw6OlJldHVybkFjdGlvbjxSPicKLSAgICAgICAgICAgICAg
ICc6Om9wZXJhdG9yIHRlc3Rpbmc6OkFjdGlvbjxGdW5jPlwoXCkgY29uc3QuKlxuJyArCi0gICAg
ICAgICAgICAgICBfR0NDX0ZJTEVfTElORV9SRSArIHInaW5zdGFudGlhdGVkIGZyb20gaGVyZVxu
JwotICAgICAgICAgICAgICAgcicuKmVycm9yOiBubyBtYXRjaGluZyBmdW5jdGlvbiBmb3IgY2Fs
bCB0byBcJ0ltcGxpY2l0Q2FzdF9cKCcKLSAgICAgICAgICAgICAgIHInKDo/bG9uZyApP2ludCZc
KScpCi0gIGNsYW5nX3JlZ2V4ID0gKHInXGJnbW9jay1hY3Rpb25zLmg6LiogZXJyb3I6IG5vIG1h
dGNoaW5nIGZ1bmN0aW9uIGZvciAnCi0gICAgICAgICAgICAgICAgIHInY2FsbCB0byBcJ0ltcGxp
Y2l0Q2FzdF9cJ1xyP1xuJwotICAgICAgICAgICAgICAgICByJyguKlxuKSo/JyArCi0gICAgICAg
ICAgICAgICAgIF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsgcidub3RlOiBpbiBpbnN0
YW50aWF0aW9uICcKLSAgICAgICAgICAgICAgICAgcidvZiBmdW5jdGlvbiB0ZW1wbGF0ZSBzcGVj
aWFsaXphdGlvbiAnCi0gICAgICAgICAgICAgICAgIHInXCd0ZXN0aW5nOjppbnRlcm5hbDo6UmV0
dXJuQWN0aW9uPChpbnR8bG9uZyk+OjpvcGVyYXRvciAnCi0gICAgICAgICAgICAgICAgIHInQWN0
aW9uPCg/UDx0eXBlPi4qKVwoXCk+XCcgcmVxdWVzdGVkIGhlcmUnKQotICBkaWFnbm9zaXMgPSAi
IiIKLVlvdSBhcmUgcHJvYmFibHkgY2FsbGluZyBSZXR1cm4oTlVMTCkgYW5kIHRoZSBjb21waWxl
ciBpc24ndCBzdXJlIGhvdyB0byB0dXJuCi1OVUxMIGludG8gJSh0eXBlKXMuIFVzZSBSZXR1cm5O
dWxsKCkgaW5zdGVhZC4KLU5vdGU6IHRoZSBsaW5lIG51bWJlciBtYXkgYmUgb2ZmOyBwbGVhc2Ug
Zml4IGFsbCBpbnN0YW5jZXMgb2YgUmV0dXJuKE5VTEwpLiIiIgotICByZXR1cm4gX0dlbmVyaWNE
aWFnbm9zZXIoCi0gICAgICAnTlJOVUxMJywgJ05lZWQgdG8gdXNlIFJldHVybk51bGwnLAotICAg
ICAgWyhjbGFuZ19yZWdleCwgZGlhZ25vc2lzKSwKLSAgICAgICAoZ2NjX3JlZ2V4LCBkaWFnbm9z
aXMgJSB7J3R5cGUnOiAndGhlIHJpZ2h0IHR5cGUnfSldLAotICAgICAgbXNnKQotCi0KLWRlZiBf
VHlwZUluVGVtcGxhdGVkQmFzZURpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIFRU
QiBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgot
Ci0gICMgVGhpcyB2ZXJzaW9uIHdvcmtzIHdoZW4gdGhlIHR5cGUgaXMgdXNlZCBhcyB0aGUgbW9j
ayBmdW5jdGlvbidzIHJldHVybgotICAjIHR5cGUuCi0gIGdjY180XzNfMV9yZWdleF90eXBlX2lu
X3JldHZhbCA9ICgKLSAgICAgIHInSW4gbWVtYmVyIGZ1bmN0aW9uIFwnaW50IC4qXG4nICsgX0dD
Q19GSUxFX0xJTkVfUkUgKwotICAgICAgcidlcnJvcjogYSBmdW5jdGlvbiBjYWxsIGNhbm5vdCBh
cHBlYXIgaW4gYSBjb25zdGFudC1leHByZXNzaW9uJykKLSAgZ2NjXzRfNF8wX3JlZ2V4X3R5cGVf
aW5fcmV0dmFsID0gKAotICAgICAgcidlcnJvcjogYSBmdW5jdGlvbiBjYWxsIGNhbm5vdCBhcHBl
YXIgaW4gYSBjb25zdGFudC1leHByZXNzaW9uJwotICAgICAgKyBfR0NDX0ZJTEVfTElORV9SRSAr
IHInZXJyb3I6IHRlbXBsYXRlIGFyZ3VtZW50IDEgaXMgaW52YWxpZFxuJykKLSAgIyBUaGlzIHZl
cnNpb24gd29ya3Mgd2hlbiB0aGUgdHlwZSBpcyB1c2VkIGFzIHRoZSBtb2NrIGZ1bmN0aW9uJ3Mg
c29sZQotICAjIHBhcmFtZXRlciB0eXBlLgotICBnY2NfcmVnZXhfdHlwZV9vZl9zb2xlX3BhcmFt
ID0gKAotICAgICAgX0dDQ19GSUxFX0xJTkVfUkUgKwotICAgICAgcidlcnJvcjogXCcoP1A8dHlw
ZT4uKylcJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGVcbicKLSAgICAgIHInLiplcnJv
cjogdGVtcGxhdGUgYXJndW1lbnQgMSBpcyBpbnZhbGlkXG4nKQotICAjIFRoaXMgdmVyc2lvbiB3
b3JrcyB3aGVuIHRoZSB0eXBlIGlzIHVzZWQgYXMgYSBwYXJhbWV0ZXIgb2YgYSBtb2NrCi0gICMg
ZnVuY3Rpb24gdGhhdCBoYXMgbXVsdGlwbGUgcGFyYW1ldGVycy4KLSAgZ2NjX3JlZ2V4X3R5cGVf
b2ZfYV9wYXJhbSA9ICgKLSAgICAgIHInZXJyb3I6IGV4cGVjdGVkIGA7XCcgYmVmb3JlIFwnOjpc
JyB0b2tlblxuJwotICAgICAgKyBfR0NDX0ZJTEVfTElORV9SRSArCi0gICAgICByJ2Vycm9yOiBc
Jyg/UDx0eXBlPi4rKVwnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZVxuJwotICAgICAg
cicuKmVycm9yOiB0ZW1wbGF0ZSBhcmd1bWVudCAxIGlzIGludmFsaWRcbicKLSAgICAgIHInLipl
cnJvcjogXCcuK1wnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZScpCi0gIGNsYW5nX3Jl
Z2V4X3R5cGVfb2ZfcmV0dmFsX29yX3NvbGVfcGFyYW0gPSAoCi0gICAgICBfQ0xBTkdfRklMRV9M
SU5FX1JFICsKLSAgICAgIHInZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgXCco
P1A8dHlwZT4uKilcJ1xuJwotICAgICAgcicoLipcbikqPycKLSAgICAgIHInKD9QPWZpbGUpOig/
UD1saW5lKTpcZCs6IGVycm9yOiAnCi0gICAgICByJ25vbi1mcmllbmQgY2xhc3MgbWVtYmVyIFwn
UmVzdWx0XCcgY2Fubm90IGhhdmUgYSBxdWFsaWZpZWQgbmFtZScKLSAgICAgICkKLSAgY2xhbmdf
cmVnZXhfdHlwZV9vZl9hX3BhcmFtID0gKAotICAgICAgX0NMQU5HX0ZJTEVfTElORV9SRSArCi0g
ICAgICByJ2Vycm9yOiBDXCtcKyByZXF1aXJlcyBhIHR5cGUgc3BlY2lmaWVyIGZvciBhbGwgZGVj
bGFyYXRpb25zXG4nCi0gICAgICByJyguKlxuKSo/JwotICAgICAgcicoP1A9ZmlsZSk6KD9QPWxp
bmUpOig/UD1jb2x1bW4pOiBlcnJvcjogJwotICAgICAgcidDXCtcKyByZXF1aXJlcyBhIHR5cGUg
c3BlY2lmaWVyIGZvciBhbGwgZGVjbGFyYXRpb25zJwotICAgICAgKQotICBjbGFuZ19yZWdleF91
bmtub3duX3R5cGUgPSAoCi0gICAgICBfQ0xBTkdfRklMRV9MSU5FX1JFICsKLSAgICAgIHInZXJy
b3I6IHVua25vd24gdHlwZSBuYW1lIFwnKD9QPHR5cGU+W15cJ10rKVwnJwotICAgICAgKQotCi0g
IGRpYWdub3NpcyA9ICIiIgotSW4gYSBtb2NrIGNsYXNzIHRlbXBsYXRlLCB0eXBlcyBvciB0eXBl
ZGVmcyBkZWZpbmVkIGluIHRoZSBiYXNlIGNsYXNzCi10ZW1wbGF0ZSBhcmUgKm5vdCogYXV0b21h
dGljYWxseSB2aXNpYmxlLiAgVGhpcyBpcyBob3cgQysrIHdvcmtzLiAgQmVmb3JlCi15b3UgY2Fu
IHVzZSBhIHR5cGUgb3IgdHlwZWRlZiBuYW1lZCAlKHR5cGUpcyBkZWZpbmVkIGluIGJhc2UgY2xh
c3MgQmFzZTxUPiwgeW91Ci1uZWVkIHRvIG1ha2UgaXQgdmlzaWJsZS4gIE9uZSB3YXkgdG8gZG8g
aXQgaXM6Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlPFQ+OjolKHR5cGUpcyAlKHR5cGUpczsi
IiIKLQotICBmb3IgZGlhZyBpbiBfR2VuZXJpY0RpYWdub3NlcigKLSAgICAgICdUVEInLCAnVHlw
ZSBpbiBUZW1wbGF0ZSBCYXNlJywKLSAgICAgIFsoZ2NjXzRfM18xX3JlZ2V4X3R5cGVfaW5fcmV0
dmFsLCBkaWFnbm9zaXMgJSB7J3R5cGUnOiAnRm9vJ30pLAotICAgICAgIChnY2NfNF80XzBfcmVn
ZXhfdHlwZV9pbl9yZXR2YWwsIGRpYWdub3NpcyAlIHsndHlwZSc6ICdGb28nfSksCi0gICAgICAg
KGdjY19yZWdleF90eXBlX29mX3NvbGVfcGFyYW0sIGRpYWdub3NpcyksCi0gICAgICAgKGdjY19y
ZWdleF90eXBlX29mX2FfcGFyYW0sIGRpYWdub3NpcyksCi0gICAgICAgKGNsYW5nX3JlZ2V4X3R5
cGVfb2ZfcmV0dmFsX29yX3NvbGVfcGFyYW0sIGRpYWdub3NpcyksCi0gICAgICAgKGNsYW5nX3Jl
Z2V4X3R5cGVfb2ZfYV9wYXJhbSwgZGlhZ25vc2lzICUgeyd0eXBlJzogJ0Zvbyd9KV0sCi0gICAg
ICBtc2cpOgotICAgIHlpZWxkIGRpYWcKLSAgIyBBdm9pZCBvdmVybGFwIHdpdGggdGhlIE5VUyBw
YXR0ZXJuLgotICBmb3IgbSBpbiBfRmluZEFsbE1hdGNoZXMoY2xhbmdfcmVnZXhfdW5rbm93bl90
eXBlLCBtc2cpOgotICAgIHR5cGVfID0gbS5ncm91cGRpY3QoKVsndHlwZSddCi0gICAgaWYgdHlw
ZV8gbm90IGluIF9DT01NT05fR01PQ0tfU1lNQk9MUzoKLSAgICAgIHlpZWxkICgnVFRCJywgJ1R5
cGUgaW4gVGVtcGxhdGUgQmFzZScsIGRpYWdub3NpcyAlIG0uZ3JvdXBkaWN0KCkpCi0KLQotZGVm
IF9Xcm9uZ01vY2tNZXRob2RNYWNyb0RpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhl
IFdNTSBkaXNlYXNlLCBnaXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIi
IgotCi0gIGdjY19yZWdleCA9IChfR0NDX0ZJTEVfTElORV9SRSArCi0gICAgICAgICAgICAgICBy
Jy4qdGhpc19tZXRob2RfZG9lc19ub3RfdGFrZV8oP1A8d3JvbmdfYXJncz5cZCspX2FyZ3VtZW50
LipcbicKLSAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgIHInLipjYW5kaWRh
dGVzIGFyZS4qRnVuY3Rpb25Nb2NrZXI8W14+XStBKD9QPGFyZ3M+XGQrKVwpPicpCi0gIGNsYW5n
X3JlZ2V4ID0gKF9DTEFOR19OT05fR01PQ0tfRklMRV9MSU5FX1JFICsKLSAgICAgICAgICAgICAg
ICAgcidlcnJvcjouKmFycmF5LipuZWdhdGl2ZS4qcj9cbicKLSAgICAgICAgICAgICAgICAgcico
LipcbikqPycKLSAgICAgICAgICAgICAgICAgcicoP1A9ZmlsZSk6KD9QPWxpbmUpOig/UD1jb2x1
bW4pOiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMgJwotICAgICAgICAgICAgICAgICByJ3RvIGZ1
bmN0aW9uIGNhbGwsIGV4cGVjdGVkICg/UDxhcmdzPlxkKyksICcKLSAgICAgICAgICAgICAgICAg
cidoYXZlICg/UDx3cm9uZ19hcmdzPlxkKyknKQotICBjbGFuZzExX3JlID0gKF9DTEFOR19OT05f
R01PQ0tfRklMRV9MSU5FX1JFICsKLSAgICAgICAgICAgICAgICByJy4qdGhpc19tZXRob2RfZG9l
c19ub3RfdGFrZV8nCi0gICAgICAgICAgICAgICAgcicoP1A8d3JvbmdfYXJncz5cZCspX2FyZ3Vt
ZW50LionKQotICBkaWFnbm9zaXMgPSAiIiIKLVlvdSBhcmUgdXNpbmcgTU9DS19NRVRIT0QlKHdy
b25nX2FyZ3MpcyB0byBkZWZpbmUgYSBtb2NrIG1ldGhvZCB0aGF0IGhhcwotJShhcmdzKXMgYXJn
dW1lbnRzLiBVc2UgTU9DS19NRVRIT0QlKGFyZ3MpcyAob3IgTU9DS19DT05TVF9NRVRIT0QlKGFy
Z3MpcywKLU1PQ0tfTUVUSE9EJShhcmdzKXNfVCwgTU9DS19DT05TVF9NRVRIT0QlKGFyZ3Mpc19U
IGFzIGFwcHJvcHJpYXRlKSBpbnN0ZWFkLiIiIgotICByZXR1cm4gX0dlbmVyaWNEaWFnbm9zZXIo
J1dNTScsICdXcm9uZyBNT0NLX01FVEhPRG4gTWFjcm8nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWyhnY2NfcmVnZXgsIGRpYWdub3NpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNsYW5nMTFfcmUsIGRpYWdub3NpcyAlIHsnd3JvbmdfYXJncyc6ICdtJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJzogJ24n
fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYW5nX3JlZ2V4LCBkaWFnbm9zaXMp
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZykKLQotCi1kZWYgX1dyb25nUGFyZW5Q
b3NpdGlvbkRpYWdub3Nlcihtc2cpOgotICAiIiJEaWFnbm9zZXMgdGhlIFdQUCBkaXNlYXNlLCBn
aXZlbiB0aGUgZXJyb3IgbWVzc2FnZXMgYnkgdGhlIGNvbXBpbGVyLiIiIgotCi0gIGdjY19yZWdl
eCA9IChfR0NDX0ZJTEVfTElORV9SRSArCi0gICAgICAgICAgICAgICByJ2Vycm9yOi4qdGVzdGlu
Zzo6aW50ZXJuYWw6Ok1vY2tTcGVjPC4qIGhhcyBubyBtZW1iZXIgbmFtZWQgXCcnCi0gICAgICAg
ICAgICAgICByJyg/UDxtZXRob2Q+XHcrKVwnJykKLSAgY2xhbmdfcmVnZXggPSAoX0NMQU5HX05P
Tl9HTU9DS19GSUxFX0xJTkVfUkUgKwotICAgICAgICAgICAgICAgICByJ2Vycm9yOiBubyBtZW1i
ZXIgbmFtZWQgXCcoP1A8bWV0aG9kPlx3KylcJyBpbiAnCi0gICAgICAgICAgICAgICAgIHInXCd0
ZXN0aW5nOjppbnRlcm5hbDo6TW9ja1NwZWM8Lio+XCcnKQotICBkaWFnbm9zaXMgPSAiIiIKLVRo
ZSBjbG9zaW5nIHBhcmVudGhlc2lzIG9mIE9OX0NBTEwgb3IgRVhQRUNUX0NBTEwgc2hvdWxkIGJl
ICpiZWZvcmUqCi0iLiUobWV0aG9kKXMiLiAgRm9yIGV4YW1wbGUsIHlvdSBzaG91bGQgd3JpdGU6
Ci0gIEVYUEVDVF9DQUxMKG15X21vY2ssIEZvbyhfKSkuJShtZXRob2QpcyguLi4pOwotaW5zdGVh
ZCBvZjoKLSAgRVhQRUNUX0NBTEwobXlfbW9jaywgRm9vKF8pLiUobWV0aG9kKXMoLi4uKSk7IiIi
Ci0gIHJldHVybiBfR2VuZXJpY0RpYWdub3NlcignV1BQJywgJ1dyb25nIFBhcmVudGhlc2lzIFBv
c2l0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZ2NjX3JlZ2V4LCBkaWFnbm9z
aXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGFuZ19yZWdleCwgZGlhZ25vc2lz
KV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpCi0KLQotX0RJQUdOT1NFUlMgPSBb
Ci0gICAgX0luY29tcGxldGVCeVJlZmVyZW5jZUFyZ3VtZW50RGlhZ25vc2VyLAotICAgIF9Nb2Nr
T2JqZWN0UG9pbnRlckRpYWdub3NlciwKLSAgICBfTmVlZFRvUmV0dXJuTm90aGluZ0RpYWdub3Nl
ciwKLSAgICBfTmVlZFRvUmV0dXJuUmVmZXJlbmNlRGlhZ25vc2VyLAotICAgIF9OZWVkVG9SZXR1
cm5Tb21ldGhpbmdEaWFnbm9zZXIsCi0gICAgX05lZWRUb1VzZVJldHVybk51bGxEaWFnbm9zZXIs
Ci0gICAgX05lZWRUb1VzZVN5bWJvbERpYWdub3NlciwKLSAgICBfT3ZlcmxvYWRlZEZ1bmN0aW9u
QWN0aW9uRGlhZ25vc2VyLAotICAgIF9PdmVybG9hZGVkRnVuY3Rpb25NYXRjaGVyRGlhZ25vc2Vy
LAotICAgIF9PdmVybG9hZGVkTWV0aG9kQWN0aW9uRGlhZ25vc2VyLAotICAgIF9UeXBlSW5UZW1w
bGF0ZWRCYXNlRGlhZ25vc2VyLAotICAgIF9Xcm9uZ01vY2tNZXRob2RNYWNyb0RpYWdub3NlciwK
LSAgICBfV3JvbmdQYXJlblBvc2l0aW9uRGlhZ25vc2VyLAotICAgIF0KLQotCi1kZWYgRGlhZ25v
c2UobXNnKToKLSAgIiIiR2VuZXJhdGVzIGFsbCBwb3NzaWJsZSBkaWFnbm9zZXMgZ2l2ZW4gdGhl
IGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UuIiIiCi0KLSAgbXNnID0gcmUuc3ViKHInXHgxYlxbW15t
XSptJywgJycsIG1zZykgICMgU3RyaXBzIGFsbCBjb2xvciBmb3JtYXR0aW5nLgotICAjIEFzc3Vt
aW5nIHRoZSBzdHJpbmcgaXMgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLCByZXBsYWNlcyB0aGUg
bGVmdCBhbmQKLSAgIyB0aGUgcmlnaHQgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBhcG9z
dHJvcGhlcy4KLSAgbXNnID0gcmUuc3ViKHInKFx4ZTJceDgwXHg5OHxceGUyXHg4MFx4OTkpJywg
IiciLCBtc2cpCi0KLSAgZGlhZ25vc2VzID0gW10KLSAgZm9yIGRpYWdub3NlciBpbiBfRElBR05P
U0VSUzoKLSAgICBmb3IgZGlhZyBpbiBkaWFnbm9zZXIobXNnKToKLSAgICAgIGRpYWdub3NpcyA9
ICdbJXMgLSAlc11cbiVzJyAlIGRpYWcKLSAgICAgIGlmIG5vdCBkaWFnbm9zaXMgaW4gZGlhZ25v
c2VzOgotICAgICAgICBkaWFnbm9zZXMuYXBwZW5kKGRpYWdub3NpcykKLSAgcmV0dXJuIGRpYWdu
b3NlcwotCi0KLWRlZiBtYWluKCk6Ci0gIHByaW50ICgnR29vZ2xlIE1vY2sgRG9jdG9yIHYlcyAt
ICcKLSAgICAgICAgICdkaWFnbm9zZXMgcHJvYmxlbXMgaW4gY29kZSB1c2luZyBHb29nbGUgTW9j
ay4nICUgX1ZFUlNJT04pCi0KLSAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpOgotICAgIHByaW50ICgn
UGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoZSBjb21waWxlciBlcnJvcnMgaGVyZS4gIFByZXNzIGMt
RCB3aGVuICcKLSAgICAgICAgICAgJ3lvdSBhcmUgZG9uZTonKQotICBlbHNlOgotICAgIHByaW50
ICgnV2FpdGluZyBmb3IgY29tcGlsZXIgZXJyb3JzIG9uIHN0ZGluIC4gLiAuJykKLQotICBtc2cg
PSBzeXMuc3RkaW4ucmVhZCgpLnN0cmlwKCkKLSAgZGlhZ25vc2VzID0gRGlhZ25vc2UobXNnKQot
ICBjb3VudCA9IGxlbihkaWFnbm9zZXMpCi0gIGlmIG5vdCBjb3VudDoKLSAgICBwcmludCAoIiIi
Ci1Zb3VyIGNvbXBpbGVyIGNvbXBsYWluZWQ6Ci04PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJXMKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44Ci0KLVVoLW9oLCBJ
J20gbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHByb2JsZW0gaXMuIDot
KAotSG93ZXZlci4uLgotSWYgeW91IHNlbmQgeW91ciBzb3VyY2UgY29kZSBhbmQgdGhlIGNvbXBp
bGVyJ3MgZXJyb3IgbWVzc2FnZXMgdG8KLSVzLCB5b3UgY2FuIGJlIGhlbHBlZCBhbmQgSSBjYW4g
Z2V0IHNtYXJ0ZXIgLS0KLXdpbi13aW4gZm9yIHVzISIiIiAlIChtc2csIF9FTUFJTCkpCi0gIGVs
c2U6Ci0gICAgcHJpbnQgKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0nKQotICAgIHByaW50ICgnWW91ciBjb2RlIGFwcGVhcnMgdG8g
aGF2ZSB0aGUgZm9sbG93aW5nJywpCi0gICAgaWYgY291bnQgPiAxOgotICAgICAgcHJpbnQgKCcl
cyBkaXNlYXNlczonICUgKGNvdW50LCkpCi0gICAgZWxzZToKLSAgICAgIHByaW50ICgnZGlzZWFz
ZTonKQotICAgIGkgPSAwCi0gICAgZm9yIGQgaW4gZGlhZ25vc2VzOgotICAgICAgaSArPSAxCi0g
ICAgICBpZiBjb3VudCA+IDE6Ci0gICAgICAgIHByaW50ICgnXG4jJXM6JyAlIChpLCkpCi0gICAg
ICBwcmludCAoZCkKLSAgICBwcmludCAoIiIiCi1Ib3cgZGlkIEkgZG8/ICBJZiB5b3UgdGhpbmsg
SSdtIHdyb25nIG9yIHVuaGVscGZ1bCwgcGxlYXNlIHNlbmQgeW91cgotc291cmNlIGNvZGUgYW5k
IHRoZSBjb21waWxlcidzIGVycm9yIG1lc3NhZ2VzIHRvICVzLgotVGhlbiB5b3UgY2FuIGJlIGhl
bHBlZCBhbmQgSSBjYW4gZ2V0IHNtYXJ0ZXIgLS0gSSBwcm9taXNlIEkgd29uJ3QgYmUgdXBzZXQh
IiIiICUKLSAgICAgICAgICAgX0VNQUlMKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
Ci0gIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91cGxvYWQucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay9zY3JpcHRzL3VwbG9hZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggNmU2ZjlhMTQ3MTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc2NyaXB0cy91
cGxvYWQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzg3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgotIwotIyBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgotIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMKLSMg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotIwotIyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCi0jIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCi0jIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0jIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0iIiJUb29sIGZvciB1cGxvYWRpbmcgZGlm
ZnMgZnJvbSBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gdG8gdGhlIGNvZGVyZXZpZXcgYXBwLgot
Ci1Vc2FnZSBzdW1tYXJ5OiB1cGxvYWQucHkgW29wdGlvbnNdIFstLSBkaWZmX29wdGlvbnNdCi0K
LURpZmYgb3B0aW9ucyBhcmUgcGFzc2VkIHRvIHRoZSBkaWZmIGNvbW1hbmQgb2YgdGhlIHVuZGVy
bHlpbmcgc3lzdGVtLgotCi1TdXBwb3J0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbXM6Ci0gIEdp
dAotICBNZXJjdXJpYWwKLSAgU3VidmVyc2lvbgotCi1JdCBpcyBpbXBvcnRhbnQgZm9yIEdpdC9N
ZXJjdXJpYWwgdXNlcnMgdG8gc3BlY2lmeSBhIHRyZWUvbm9kZS9icmFuY2ggdG8gZGlmZgotYWdh
aW5zdCBieSB1c2luZyB0aGUgJy0tcmV2JyBvcHRpb24uCi0iIiIKLSMgVGhpcyBjb2RlIGlzIGRl
cml2ZWQgZnJvbSBhcHBjZmcucHkgaW4gdGhlIEFwcCBFbmdpbmUgU0RLIChvcGVuIHNvdXJjZSks
Ci0jIGFuZCBmcm9tIEFTUE4gcmVjaXBlICMxNDYzMDYuCi0KLWltcG9ydCBjb29raWVsaWIKLWlt
cG9ydCBnZXRwYXNzCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG1kNQotaW1wb3J0IG1pbWV0eXBl
cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAot
aW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIKLWltcG9ydCB1cmxs
aWIyCi1pbXBvcnQgdXJscGFyc2UKLQotdHJ5OgotICBpbXBvcnQgcmVhZGxpbmUKLWV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgcGFzcwotCi0jIFRoZSBsb2dnaW5nIHZlcmJvc2l0eToKLSMgIDA6IEVy
cm9ycyBvbmx5LgotIyAgMTogU3RhdHVzIG1lc3NhZ2VzLgotIyAgMjogSW5mbyBsb2dzLgotIyAg
MzogRGVidWcgbG9ncy4KLXZlcmJvc2l0eSA9IDEKLQotIyBNYXggc2l6ZSBvZiBwYXRjaCBvciBi
YXNlIGZpbGUuCi1NQVhfVVBMT0FEX1NJWkUgPSA5MDAgKiAxMDI0Ci0KLQotZGVmIEdldEVtYWls
KHByb21wdCk6Ci0gICIiIlByb21wdHMgdGhlIHVzZXIgZm9yIHRoZWlyIGVtYWlsIGFkZHJlc3Mg
YW5kIHJldHVybnMgaXQuCi0KLSAgVGhlIGxhc3QgdXNlZCBlbWFpbCBhZGRyZXNzIGlzIHNhdmVk
IHRvIGEgZmlsZSBhbmQgb2ZmZXJlZCB1cCBhcyBhIHN1Z2dlc3Rpb24KLSAgdG8gdGhlIHVzZXIu
IElmIHRoZSB1c2VyIHByZXNzZXMgZW50ZXIgd2l0aG91dCB0eXBpbmcgaW4gYW55dGhpbmcgdGhl
IGxhc3QKLSAgdXNlZCBlbWFpbCBhZGRyZXNzIGlzIHVzZWQuIElmIHRoZSB1c2VyIGVudGVycyBh
IG5ldyBhZGRyZXNzLCBpdCBpcyBzYXZlZAotICBmb3IgbmV4dCB0aW1lIHdlIHByb21wdC4KLQot
ICAiIiIKLSAgbGFzdF9lbWFpbF9maWxlX25hbWUgPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vLmxh
c3RfY29kZXJldmlld19lbWFpbF9hZGRyZXNzIikKLSAgbGFzdF9lbWFpbCA9ICIiCi0gIGlmIG9z
LnBhdGguZXhpc3RzKGxhc3RfZW1haWxfZmlsZV9uYW1lKToKLSAgICB0cnk6Ci0gICAgICBsYXN0
X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAiciIpCi0gICAgICBsYXN0
X2VtYWlsID0gbGFzdF9lbWFpbF9maWxlLnJlYWRsaW5lKCkuc3RyaXAoIlxuIikKLSAgICAgIGxh
c3RfZW1haWxfZmlsZS5jbG9zZSgpCi0gICAgICBwcm9tcHQgKz0gIiBbJXNdIiAlIGxhc3RfZW1h
aWwKLSAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgIHBhc3MKLSAgZW1haWwgPSByYXdfaW5w
dXQocHJvbXB0ICsgIjogIikuc3RyaXAoKQotICBpZiBlbWFpbDoKLSAgICB0cnk6Ci0gICAgICBs
YXN0X2VtYWlsX2ZpbGUgPSBvcGVuKGxhc3RfZW1haWxfZmlsZV9uYW1lLCAidyIpCi0gICAgICBs
YXN0X2VtYWlsX2ZpbGUud3JpdGUoZW1haWwpCi0gICAgICBsYXN0X2VtYWlsX2ZpbGUuY2xvc2Uo
KQotICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgcGFzcwotICBlbHNlOgotICAgIGVtYWls
ID0gbGFzdF9lbWFpbAotICByZXR1cm4gZW1haWwKLQotCi1kZWYgU3RhdHVzVXBkYXRlKG1zZyk6
Ci0gICIiIlByaW50IGEgc3RhdHVzIG1lc3NhZ2UgdG8gc3Rkb3V0LgotCi0gIElmICd2ZXJib3Np
dHknIGlzIGdyZWF0ZXIgdGhhbiAwLCBwcmludCB0aGUgbWVzc2FnZS4KLQotICBBcmdzOgotICAg
IG1zZzogVGhlIHN0cmluZyB0byBwcmludC4KLSAgIiIiCi0gIGlmIHZlcmJvc2l0eSA+IDA6Ci0g
ICAgcHJpbnQgbXNnCi0KLQotZGVmIEVycm9yRXhpdChtc2cpOgotICAiIiJQcmludCBhbiBlcnJv
ciBtZXNzYWdlIHRvIHN0ZGVyciBhbmQgZXhpdC4iIiIKLSAgcHJpbnQgPj5zeXMuc3RkZXJyLCBt
c2cKLSAgc3lzLmV4aXQoMSkKLQotCi1jbGFzcyBDbGllbnRMb2dpbkVycm9yKHVybGxpYjIuSFRU
UEVycm9yKToKLSAgIiIiUmFpc2VkIHRvIGluZGljYXRlIHRoZXJlIHdhcyBhbiBlcnJvciBhdXRo
ZW50aWNhdGluZyB3aXRoIENsaWVudExvZ2luLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCB1
cmwsIGNvZGUsIG1zZywgaGVhZGVycywgYXJncyk6Ci0gICAgdXJsbGliMi5IVFRQRXJyb3IuX19p
bml0X18oc2VsZiwgdXJsLCBjb2RlLCBtc2csIGhlYWRlcnMsIE5vbmUpCi0gICAgc2VsZi5hcmdz
ID0gYXJncwotICAgIHNlbGYucmVhc29uID0gYXJnc1siRXJyb3IiXQotCi0KLWNsYXNzIEFic3Ry
YWN0UnBjU2VydmVyKG9iamVjdCk6Ci0gICIiIlByb3ZpZGVzIGEgY29tbW9uIGludGVyZmFjZSBm
b3IgYSBzaW1wbGUgUlBDIHNlcnZlci4iIiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwg
YXV0aF9mdW5jdGlvbiwgaG9zdF9vdmVycmlkZT1Ob25lLCBleHRyYV9oZWFkZXJzPXt9LAotICAg
ICAgICAgICAgICAgc2F2ZV9jb29raWVzPUZhbHNlKToKLSAgICAiIiJDcmVhdGVzIGEgbmV3IEh0
dHBScGNTZXJ2ZXIuCi0KLSAgICBBcmdzOgotICAgICAgaG9zdDogVGhlIGhvc3QgdG8gc2VuZCBy
ZXF1ZXN0cyB0by4KLSAgICAgIGF1dGhfZnVuY3Rpb246IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBu
byBhcmd1bWVudHMgYW5kIHJldHVybnMgYW4KLSAgICAgICAgKGVtYWlsLCBwYXNzd29yZCkgdHVw
bGUgd2hlbiBjYWxsZWQuIFdpbGwgYmUgY2FsbGVkIGlmIGF1dGhlbnRpY2F0aW9uCi0gICAgICAg
IGlzIHJlcXVpcmVkLgotICAgICAgaG9zdF9vdmVycmlkZTogVGhlIGhvc3QgaGVhZGVyIHRvIHNl
bmQgdG8gdGhlIHNlcnZlciAoZGVmYXVsdHMgdG8gaG9zdCkuCi0gICAgICBleHRyYV9oZWFkZXJz
OiBBIGRpY3Qgb2YgZXh0cmEgaGVhZGVycyB0byBhcHBlbmQgdG8gZXZlcnkgcmVxdWVzdC4KLSAg
ICAgIHNhdmVfY29va2llczogSWYgVHJ1ZSwgc2F2ZSB0aGUgYXV0aGVudGljYXRpb24gY29va2ll
cyB0byBsb2NhbCBkaXNrLgotICAgICAgICBJZiBGYWxzZSwgdXNlIGFuIGluLW1lbW9yeSBjb29r
aWVqYXIgaW5zdGVhZC4gIFN1YmNsYXNzZXMgbXVzdAotICAgICAgICBpbXBsZW1lbnQgdGhpcyBm
dW5jdGlvbmFsaXR5LiAgRGVmYXVsdHMgdG8gRmFsc2UuCi0gICAgIiIiCi0gICAgc2VsZi5ob3N0
ID0gaG9zdAotICAgIHNlbGYuaG9zdF9vdmVycmlkZSA9IGhvc3Rfb3ZlcnJpZGUKLSAgICBzZWxm
LmF1dGhfZnVuY3Rpb24gPSBhdXRoX2Z1bmN0aW9uCi0gICAgc2VsZi5hdXRoZW50aWNhdGVkID0g
RmFsc2UKLSAgICBzZWxmLmV4dHJhX2hlYWRlcnMgPSBleHRyYV9oZWFkZXJzCi0gICAgc2VsZi5z
YXZlX2Nvb2tpZXMgPSBzYXZlX2Nvb2tpZXMKLSAgICBzZWxmLm9wZW5lciA9IHNlbGYuX0dldE9w
ZW5lcigpCi0gICAgaWYgc2VsZi5ob3N0X292ZXJyaWRlOgotICAgICAgbG9nZ2luZy5pbmZvKCJT
ZXJ2ZXI6ICVzOyBIb3N0OiAlcyIsIHNlbGYuaG9zdCwgc2VsZi5ob3N0X292ZXJyaWRlKQotICAg
IGVsc2U6Ci0gICAgICBsb2dnaW5nLmluZm8oIlNlcnZlcjogJXMiLCBzZWxmLmhvc3QpCi0KLSAg
ZGVmIF9HZXRPcGVuZXIoc2VsZik6Ci0gICAgIiIiUmV0dXJucyBhbiBPcGVuZXJEaXJlY3RvciBm
b3IgbWFraW5nIEhUVFAgcmVxdWVzdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB1cmxsaWIy
Lk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKCkKLQotICBkZWYgX0NyZWF0ZVJlcXVlc3Qoc2VsZiwgdXJsLCBkYXRhPU5vbmUpOgot
ICAgICIiIkNyZWF0ZXMgYSBuZXcgdXJsbGliIHJlcXVlc3QuIiIiCi0gICAgbG9nZ2luZy5kZWJ1
ZygiQ3JlYXRpbmcgcmVxdWVzdCBmb3I6ICclcycgd2l0aCBwYXlsb2FkOlxuJXMiLCB1cmwsIGRh
dGEpCi0gICAgcmVxID0gdXJsbGliMi5SZXF1ZXN0KHVybCwgZGF0YT1kYXRhKQotICAgIGlmIHNl
bGYuaG9zdF9vdmVycmlkZToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKCJIb3N0Iiwgc2VsZi5ob3N0
X292ZXJyaWRlKQotICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuZXh0cmFfaGVhZGVycy5pdGVy
aXRlbXMoKToKLSAgICAgIHJlcS5hZGRfaGVhZGVyKGtleSwgdmFsdWUpCi0gICAgcmV0dXJuIHJl
cQotCi0gIGRlZiBfR2V0QXV0aFRva2VuKHNlbGYsIGVtYWlsLCBwYXNzd29yZCk6Ci0gICAgIiIi
VXNlcyBDbGllbnRMb2dpbiB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIsIHJldHVybmluZyBhbiBh
dXRoIHRva2VuLgotCi0gICAgQXJnczoKLSAgICAgIGVtYWlsOiAgICBUaGUgdXNlcidzIGVtYWls
IGFkZHJlc3MKLSAgICAgIHBhc3N3b3JkOiBUaGUgdXNlcidzIHBhc3N3b3JkCi0KLSAgICBSYWlz
ZXM6Ci0gICAgICBDbGllbnRMb2dpbkVycm9yOiBJZiB0aGVyZSB3YXMgYW4gZXJyb3IgYXV0aGVu
dGljYXRpbmcgd2l0aCBDbGllbnRMb2dpbi4KLSAgICAgIEhUVFBFcnJvcjogSWYgdGhlcmUgd2Fz
IHNvbWUgb3RoZXIgZm9ybSBvZiBIVFRQIGVycm9yLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRo
ZSBhdXRoZW50aWNhdGlvbiB0b2tlbiByZXR1cm5lZCBieSBDbGllbnRMb2dpbi4KLSAgICAiIiIK
LSAgICBhY2NvdW50X3R5cGUgPSAiR09PR0xFIgotICAgIGlmIHNlbGYuaG9zdC5lbmRzd2l0aCgi
Lmdvb2dsZS5jb20iKToKLSAgICAgICMgTmVlZGVkIGZvciB1c2UgaW5zaWRlIEdvb2dsZS4KLSAg
ICAgIGFjY291bnRfdHlwZSA9ICJIT1NURUQiCi0gICAgcmVxID0gc2VsZi5fQ3JlYXRlUmVxdWVz
dCgKLSAgICAgICAgdXJsPSJodHRwczovL3d3dy5nb29nbGUuY29tL2FjY291bnRzL0NsaWVudExv
Z2luIiwKLSAgICAgICAgZGF0YT11cmxsaWIudXJsZW5jb2RlKHsKLSAgICAgICAgICAgICJFbWFp
bCI6IGVtYWlsLAotICAgICAgICAgICAgIlBhc3N3ZCI6IHBhc3N3b3JkLAotICAgICAgICAgICAg
InNlcnZpY2UiOiAiYWgiLAotICAgICAgICAgICAgInNvdXJjZSI6ICJyaWV0dmVsZC1jb2RlcmV2
aWV3LXVwbG9hZCIsCi0gICAgICAgICAgICAiYWNjb3VudFR5cGUiOiBhY2NvdW50X3R5cGUsCi0g
ICAgICAgIH0pLAotICAgICkKLSAgICB0cnk6Ci0gICAgICByZXNwb25zZSA9IHNlbGYub3BlbmVy
Lm9wZW4ocmVxKQotICAgICAgcmVzcG9uc2VfYm9keSA9IHJlc3BvbnNlLnJlYWQoKQotICAgICAg
cmVzcG9uc2VfZGljdCA9IGRpY3QoeC5zcGxpdCgiPSIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgeCBpbiByZXNwb25zZV9ib2R5LnNwbGl0KCJcbiIpIGlmIHgpCi0gICAgICByZXR1
cm4gcmVzcG9uc2VfZGljdFsiQXV0aCJdCi0gICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBl
OgotICAgICAgaWYgZS5jb2RlID09IDQwMzoKLSAgICAgICAgYm9keSA9IGUucmVhZCgpCi0gICAg
ICAgIHJlc3BvbnNlX2RpY3QgPSBkaWN0KHguc3BsaXQoIj0iLCAxKSBmb3IgeCBpbiBib2R5LnNw
bGl0KCJcbiIpIGlmIHgpCi0gICAgICAgIHJhaXNlIENsaWVudExvZ2luRXJyb3IocmVxLmdldF9m
dWxsX3VybCgpLCBlLmNvZGUsIGUubXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGUuaGVhZGVycywgcmVzcG9uc2VfZGljdCkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlCi0K
LSAgZGVmIF9HZXRBdXRoQ29va2llKHNlbGYsIGF1dGhfdG9rZW4pOgotICAgICIiIkZldGNoZXMg
YXV0aGVudGljYXRpb24gY29va2llcyBmb3IgYW4gYXV0aGVudGljYXRpb24gdG9rZW4uCi0KLSAg
ICBBcmdzOgotICAgICAgYXV0aF90b2tlbjogVGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHJldHVy
bmVkIGJ5IENsaWVudExvZ2luLgotCi0gICAgUmFpc2VzOgotICAgICAgSFRUUEVycm9yOiBJZiB0
aGVyZSB3YXMgYW4gZXJyb3IgZmV0Y2hpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMuCi0g
ICAgIiIiCi0gICAgIyBUaGlzIGlzIGEgZHVtbXkgdmFsdWUgdG8gYWxsb3cgdXMgdG8gaWRlbnRp
Znkgd2hlbiB3ZSdyZSBzdWNjZXNzZnVsLgotICAgIGNvbnRpbnVlX2xvY2F0aW9uID0gImh0dHA6
Ly9sb2NhbGhvc3QvIgotICAgIGFyZ3MgPSB7ImNvbnRpbnVlIjogY29udGludWVfbG9jYXRpb24s
ICJhdXRoIjogYXV0aF90b2tlbn0KLSAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1ZXN0KCJodHRw
Oi8vJXMvX2FoL2xvZ2luPyVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
Zi5ob3N0LCB1cmxsaWIudXJsZW5jb2RlKGFyZ3MpKSkKLSAgICB0cnk6Ci0gICAgICByZXNwb25z
ZSA9IHNlbGYub3BlbmVyLm9wZW4ocmVxKQotICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwg
ZToKLSAgICAgIHJlc3BvbnNlID0gZQotICAgIGlmIChyZXNwb25zZS5jb2RlICE9IDMwMiBvcgot
ICAgICAgICByZXNwb25zZS5pbmZvKClbImxvY2F0aW9uIl0gIT0gY29udGludWVfbG9jYXRpb24p
OgotICAgICAgcmFpc2UgdXJsbGliMi5IVFRQRXJyb3IocmVxLmdldF9mdWxsX3VybCgpLCByZXNw
b25zZS5jb2RlLCByZXNwb25zZS5tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5mcCkKLSAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBU
cnVlCi0KLSAgZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiQXV0aGVudGljYXRlcyB0
aGUgdXNlci4KLQotICAgIFRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIHdvcmtzIGFzIGZvbGxv
d3M6Ci0gICAgIDEpIFdlIGdldCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmcm9tIHRoZSB1c2Vy
Ci0gICAgIDIpIFdlIHVzZSBDbGllbnRMb2dpbiB0byBvYnRhaW4gYW4gQVVUSCB0b2tlbiBmb3Ig
dGhlIHVzZXIKLSAgICAgICAgKHNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvYWNjb3Vu
dHMvQXV0aEZvckluc3RhbGxlZEFwcHMuaHRtbCkuCi0gICAgIDMpIFdlIHBhc3MgdGhlIGF1dGgg
dG9rZW4gdG8gL19haC9sb2dpbiBvbiB0aGUgc2VydmVyIHRvIG9idGFpbiBhbgotICAgICAgICBh
dXRoZW50aWNhdGlvbiBjb29raWUuIElmIGxvZ2luIHdhcyBzdWNjZXNzZnVsLCBpdCB0cmllcyB0
byByZWRpcmVjdAotICAgICAgICB1cyB0byB0aGUgVVJMIHdlIHByb3ZpZGVkLgotCi0gICAgSWYg
d2UgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHVwbG9hZCBBUEkgd2l0aG91dCBmaXJzdCBvYnRhaW5p
bmcgYW4KLSAgICBhdXRoZW50aWNhdGlvbiBjb29raWUsIGl0IHJldHVybnMgYSA0MDEgcmVzcG9u
c2UgYW5kIGRpcmVjdHMgdXMgdG8KLSAgICBhdXRoZW50aWNhdGUgb3Vyc2VsdmVzIHdpdGggQ2xp
ZW50TG9naW4uCi0gICAgIiIiCi0gICAgZm9yIGkgaW4gcmFuZ2UoMyk6Ci0gICAgICBjcmVkZW50
aWFscyA9IHNlbGYuYXV0aF9mdW5jdGlvbigpCi0gICAgICB0cnk6Ci0gICAgICAgIGF1dGhfdG9r
ZW4gPSBzZWxmLl9HZXRBdXRoVG9rZW4oY3JlZGVudGlhbHNbMF0sIGNyZWRlbnRpYWxzWzFdKQot
ICAgICAgZXhjZXB0IENsaWVudExvZ2luRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUucmVhc29uID09
ICJCYWRBdXRoZW50aWNhdGlvbiI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAiSW52
YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZC4iCi0gICAgICAgICAgY29udGludWUKLSAgICAgICAg
aWYgZS5yZWFzb24gPT0gIkNhcHRjaGFSZXF1aXJlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMu
c3RkZXJyLCAoCi0gICAgICAgICAgICAgICJQbGVhc2UgZ28gdG9cbiIKLSAgICAgICAgICAgICAg
Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYWNjb3VudHMvRGlzcGxheVVubG9ja0NhcHRjaGFcbiIK
LSAgICAgICAgICAgICAgImFuZCB2ZXJpZnkgeW91IGFyZSBhIGh1bWFuLiAgVGhlbiB0cnkgYWdh
aW4uIikKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiTm90VmVyaWZp
ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkFjY291bnQgbm90IHZlcmlmaWVk
LiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiVGVybXNOb3RBZ3Jl
ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlVzZXIgaGFzIG5vdCBhZ3JlZWQg
dG8gVE9TLiIKLSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQWNjb3Vu
dERlbGV0ZWQiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSB1c2VyIGFjY291
bnQgaGFzIGJlZW4gZGVsZXRlZC4iCi0gICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZS5yZWFz
b24gPT0gIkFjY291bnREaXNhYmxlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAi
VGhlIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBkaXNhYmxlZC4iCi0gICAgICAgICAgYnJlYWsKLSAg
ICAgICAgaWYgZS5yZWFzb24gPT0gIlNlcnZpY2VEaXNhYmxlZCI6Ci0gICAgICAgICAgcHJpbnQg
Pj5zeXMuc3RkZXJyLCAoIlRoZSB1c2VyJ3MgYWNjZXNzIHRvIHRoZSBzZXJ2aWNlIGhhcyBiZWVu
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZWQuIikKLSAgICAgICAg
ICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiU2VydmljZVVuYXZhaWxhYmxlIjoKLSAg
ICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICJUaGUgc2VydmljZSBpcyBub3QgYXZhaWxhYmxl
OyB0cnkgYWdhaW4gbGF0ZXIuIgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJhaXNlCi0gICAg
ICBzZWxmLl9HZXRBdXRoQ29va2llKGF1dGhfdG9rZW4pCi0gICAgICByZXR1cm4KLQotICBkZWYg
U2VuZChzZWxmLCByZXF1ZXN0X3BhdGgsIHBheWxvYWQ9Tm9uZSwKLSAgICAgICAgICAgY29udGVu
dF90eXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAotICAgICAgICAgICB0aW1lb3V0PU5v
bmUsCi0gICAgICAgICAgICoqa3dhcmdzKToKLSAgICAiIiJTZW5kcyBhbiBSUEMgYW5kIHJldHVy
bnMgdGhlIHJlc3BvbnNlLgotCi0gICAgQXJnczoKLSAgICAgIHJlcXVlc3RfcGF0aDogVGhlIHBh
dGggdG8gc2VuZCB0aGUgcmVxdWVzdCB0bywgZWcgL2FwaS9hcHB2ZXJzaW9uL2NyZWF0ZS4KLSAg
ICAgIHBheWxvYWQ6IFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LCBvciBOb25lIHRvIHNlbmQgYW4g
ZW1wdHkgcmVxdWVzdC4KLSAgICAgIGNvbnRlbnRfdHlwZTogVGhlIENvbnRlbnQtVHlwZSBoZWFk
ZXIgdG8gdXNlLgotICAgICAgdGltZW91dDogdGltZW91dCBpbiBzZWNvbmRzOyBkZWZhdWx0IE5v
bmUgaS5lLiBubyB0aW1lb3V0LgotICAgICAgICAoTm90ZTogZm9yIGxhcmdlIHJlcXVlc3RzIG9u
IE9TIFgsIHRoZSB0aW1lb3V0IGRvZXNuJ3Qgd29yayByaWdodC4pCi0gICAgICBrd2FyZ3M6IEFu
eSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIGludG8gcXVlcnkgc3RyaW5nIHBhcmFt
ZXRlcnMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgVGhlIHJlc3BvbnNlIGJvZHksIGFzIGEgc3Ry
aW5nLgotICAgICIiIgotICAgICMgVE9ETzogRG9uJ3QgcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4g
IExldCB0aGUgc2VydmVyIHNheQotICAgICMgd2hldGhlciBpdCBpcyBuZWNlc3NhcnkuCi0gICAg
aWYgbm90IHNlbGYuYXV0aGVudGljYXRlZDoKLSAgICAgIHNlbGYuX0F1dGhlbnRpY2F0ZSgpCi0K
LSAgICBvbGRfdGltZW91dCA9IHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpCi0gICAgc29ja2V0
LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCi0gICAgdHJ5OgotICAgICAgdHJpZXMgPSAwCi0g
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cmllcyArPSAxCi0gICAgICAgIGFyZ3MgPSBkaWN0
KGt3YXJncykKLSAgICAgICAgdXJsID0gImh0dHA6Ly8lcyVzIiAlIChzZWxmLmhvc3QsIHJlcXVl
c3RfcGF0aCkKLSAgICAgICAgaWYgYXJnczoKLSAgICAgICAgICB1cmwgKz0gIj8iICsgdXJsbGli
LnVybGVuY29kZShhcmdzKQotICAgICAgICByZXEgPSBzZWxmLl9DcmVhdGVSZXF1ZXN0KHVybD11
cmwsIGRhdGE9cGF5bG9hZCkKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIkNvbnRlbnQtVHlwZSIs
IGNvbnRlbnRfdHlwZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgIGYgPSBzZWxmLm9wZW5lci5v
cGVuKHJlcSkKLSAgICAgICAgICByZXNwb25zZSA9IGYucmVhZCgpCi0gICAgICAgICAgZi5jbG9z
ZSgpCi0gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0gICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhU
VFBFcnJvciwgZToKLSAgICAgICAgICBpZiB0cmllcyA+IDM6Ci0gICAgICAgICAgICByYWlzZQot
ICAgICAgICAgIGVsaWYgZS5jb2RlID09IDQwMToKLSAgICAgICAgICAgIHNlbGYuX0F1dGhlbnRp
Y2F0ZSgpCi0jIyAgICAgICAgICAgZWxpZiBlLmNvZGUgPj0gNTAwIGFuZCBlLmNvZGUgPCA2MDA6
Ci0jIyAgICAgICAgICAgICAjIFNlcnZlciBFcnJvciAtIHRyeSBhZ2Fpbi4KLSMjICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlCi0gICAgZmlu
YWxseToKLSAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChvbGRfdGltZW91dCkKLQotCi1j
bGFzcyBIdHRwUnBjU2VydmVyKEFic3RyYWN0UnBjU2VydmVyKToKLSAgIiIiUHJvdmlkZXMgYSBz
aW1wbGlmaWVkIFJQQy1zdHlsZSBpbnRlcmZhY2UgZm9yIEhUVFAgcmVxdWVzdHMuIiIiCi0KLSAg
ZGVmIF9BdXRoZW50aWNhdGUoc2VsZik6Ci0gICAgIiIiU2F2ZSB0aGUgY29va2llIGphciBhZnRl
ciBhdXRoZW50aWNhdGlvbi4iIiIKLSAgICBzdXBlcihIdHRwUnBjU2VydmVyLCBzZWxmKS5fQXV0
aGVudGljYXRlKCkKLSAgICBpZiBzZWxmLnNhdmVfY29va2llczoKLSAgICAgIFN0YXR1c1VwZGF0
ZSgiU2F2aW5nIGF1dGhlbnRpY2F0aW9uIGNvb2tpZXMgdG8gJXMiICUgc2VsZi5jb29raWVfZmls
ZSkKLSAgICAgIHNlbGYuY29va2llX2phci5zYXZlKCkKLQotICBkZWYgX0dldE9wZW5lcihzZWxm
KToKLSAgICAiIiJSZXR1cm5zIGFuIE9wZW5lckRpcmVjdG9yIHRoYXQgc3VwcG9ydHMgY29va2ll
cyBhbmQgaWdub3JlcyByZWRpcmVjdHMuCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSB1cmxsaWIy
Lk9wZW5lckRpcmVjdG9yIG9iamVjdC4KLSAgICAiIiIKLSAgICBvcGVuZXIgPSB1cmxsaWIyLk9w
ZW5lckRpcmVjdG9yKCkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Qcm94eUhhbmRs
ZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5Vbmtub3duSGFuZGxlcigpKQot
ICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBIYW5kbGVyKCkpCi0gICAgb3BlbmVy
LmFkZF9oYW5kbGVyKHVybGxpYjIuSFRUUERlZmF1bHRFcnJvckhhbmRsZXIoKSkKLSAgICBvcGVu
ZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQU0hhbmRsZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hh
bmRsZXIodXJsbGliMi5IVFRQRXJyb3JQcm9jZXNzb3IoKSkKLSAgICBpZiBzZWxmLnNhdmVfY29v
a2llczoKLSAgICAgIHNlbGYuY29va2llX2ZpbGUgPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vLmNv
ZGVyZXZpZXdfdXBsb2FkX2Nvb2tpZXMiKQotICAgICAgc2VsZi5jb29raWVfamFyID0gY29va2ll
bGliLk1vemlsbGFDb29raWVKYXIoc2VsZi5jb29raWVfZmlsZSkKLSAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHNlbGYuY29va2llX2ZpbGUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgc2VsZi5j
b29raWVfamFyLmxvYWQoKQotICAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZCA9IFRydWUKLSAg
ICAgICAgICBTdGF0dXNVcGRhdGUoIkxvYWRlZCBhdXRoZW50aWNhdGlvbiBjb29raWVzIGZyb20g
JXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb29raWVfZmlsZSkKLSAgICAgICAg
ZXhjZXB0IChjb29raWVsaWIuTG9hZEVycm9yLCBJT0Vycm9yKToKLSAgICAgICAgICAjIEZhaWxl
ZCB0byBsb2FkIGNvb2tpZXMgLSBqdXN0IGlnbm9yZSB0aGVtLgotICAgICAgICAgIHBhc3MKLSAg
ICAgIGVsc2U6Ci0gICAgICAgICMgQ3JlYXRlIGFuIGVtcHR5IGNvb2tpZSBmaWxlIHdpdGggbW9k
ZSA2MDAKLSAgICAgICAgZmQgPSBvcy5vcGVuKHNlbGYuY29va2llX2ZpbGUsIG9zLk9fQ1JFQVQs
IDA2MDApCi0gICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgIyBBbHdheXMgY2htb2QgdGhlIGNv
b2tpZSBmaWxlCi0gICAgICBvcy5jaG1vZChzZWxmLmNvb2tpZV9maWxlLCAwNjAwKQotICAgIGVs
c2U6Ci0gICAgICAjIERvbid0IHNhdmUgY29va2llcyBhY3Jvc3MgcnVucyBvZiB1cGRhdGUucHku
Ci0gICAgICBzZWxmLmNvb2tpZV9qYXIgPSBjb29raWVsaWIuQ29va2llSmFyKCkKLSAgICBvcGVu
ZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQQ29va2llUHJvY2Vzc29yKHNlbGYuY29va2llX2ph
cikpCi0gICAgcmV0dXJuIG9wZW5lcgotCi0KLXBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNl
cih1c2FnZT0iJXByb2cgW29wdGlvbnNdIFstLSBkaWZmX29wdGlvbnNdIikKLXBhcnNlci5hZGRf
b3B0aW9uKCIteSIsICItLWFzc3VtZV95ZXMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
ICAgICAgICAgICAgZGVzdD0iYXNzdW1lX3llcyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICBoZWxwPSJBc3N1bWUgdGhhdCB0aGUgYW5zd2VyIHRvIHllcy9ubyBxdWVzdGlvbnMg
aXMgJ3llcycuIikKLSMgTG9nZ2luZwotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCgi
TG9nZ2luZyBvcHRpb25zIikKLWdyb3VwLmFkZF9vcHRpb24oIi1xIiwgIi0tcXVpZXQiLCBhY3Rp
b249InN0b3JlX2NvbnN0IiwgY29uc3Q9MCwKLSAgICAgICAgICAgICAgICAgZGVzdD0idmVyYm9z
ZSIsIGhlbHA9IlByaW50IGVycm9ycyBvbmx5LiIpCi1ncm91cC5hZGRfb3B0aW9uKCItdiIsICIt
LXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9MiwKLSAgICAgICAgICAgICAg
ICAgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9MSwKLSAgICAgICAgICAgICAgICAgaGVscD0iUHJp
bnQgaW5mbyBsZXZlbCBsb2dzIChkZWZhdWx0KS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLS1ub2lz
eSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0zLAotICAgICAgICAgICAgICAgICBkZXN0
PSJ2ZXJib3NlIiwgaGVscD0iUHJpbnQgYWxsIGxvZ3MuIikKLSMgUmV2aWV3IHNlcnZlcgotZ3Jv
dXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91cCgiUmV2aWV3IHNlcnZlciBvcHRpb25zIikKLWdy
b3VwLmFkZF9vcHRpb24oIi1zIiwgIi0tc2VydmVyIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InNl
cnZlciIsCi0gICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImNvZGVyZXZpZXcuYXBwc3BvdC5jb20i
LAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJTRVJWRVIiLAotICAgICAgICAgICAgICAgICBo
ZWxwPSgiVGhlIHNlcnZlciB0byB1cGxvYWQgdG8uIFRoZSBmb3JtYXQgaXMgaG9zdFs6cG9ydF0u
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIkRlZmF1bHRzIHRvICdjb2RlcmV2aWV3LmFwcHNw
b3QuY29tJy4iKSkKLWdyb3VwLmFkZF9vcHRpb24oIi1lIiwgIi0tZW1haWwiLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iZW1haWwiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJFTUFJTCIsIGRl
ZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iVGhlIHVzZXJuYW1lIHRvIHVzZS4g
V2lsbCBwcm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLUgiLCAiLS1ob3N0
IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9Imhvc3QiLAotICAgICAgICAgICAgICAgICBtZXRhdmFy
PSJIT1NUIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJPdmVycmlkZXMg
dGhlIEhvc3QgaGVhZGVyIHNlbnQgd2l0aCBhbGwgUlBDcy4iKQotZ3JvdXAuYWRkX29wdGlvbigi
LS1ub19jb29raWVzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCi0gICAgICAgICAgICAgICAgIGRl
c3Q9InNhdmVfY29va2llcyIsIGRlZmF1bHQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgaGVscD0i
RG8gbm90IHNhdmUgYXV0aGVudGljYXRpb24gY29va2llcyB0byBsb2NhbCBkaXNrLiIpCi0jIElz
c3VlCi1ncm91cCA9IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJJc3N1ZSBvcHRpb25zIikKLWdy
b3VwLmFkZF9vcHRpb24oIi1kIiwgIi0tZGVzY3JpcHRpb24iLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0iZGVzY3JpcHRpb24iLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJERVNDUklQVElPTiIs
IGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iT3B0aW9uYWwgZGVzY3JpcHRp
b24gd2hlbiBjcmVhdGluZyBhbiBpc3N1ZS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLWYiLCAiLS1k
ZXNjcmlwdGlvbl9maWxlIiwgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgIGRlc3Q9
ImRlc2NyaXB0aW9uX2ZpbGUiLCBtZXRhdmFyPSJERVNDUklQVElPTl9GSUxFIiwKLSAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJPcHRpb25hbCBw
YXRoIG9mIGEgZmlsZSB0aGF0IGNvbnRhaW5zICIKLSAgICAgICAgICAgICAgICAgICAgICAidGhl
IGRlc2NyaXB0aW9uIHdoZW4gY3JlYXRpbmcgYW4gaXNzdWUuIikKLWdyb3VwLmFkZF9vcHRpb24o
Ii1yIiwgIi0tcmV2aWV3ZXJzIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InJldmlld2VycyIsCi0g
ICAgICAgICAgICAgICAgIG1ldGF2YXI9IlJFVklFV0VSUyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgaGVscD0iQWRkIHJldmlld2VycyAoY29tbWEgc2VwYXJhdGVkIGVtYWlsIGFk
ZHJlc3NlcykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tY2MiLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0iY2MiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDQyIsIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgaGVscD0iQWRkIENDIChjb21tYSBzZXBhcmF0ZWQgZW1haWwgYWRkcmVz
c2VzKS4iKQotIyBVcGxvYWQgb3B0aW9ucwotZ3JvdXAgPSBwYXJzZXIuYWRkX29wdGlvbl9ncm91
cCgiUGF0Y2ggb3B0aW9ucyIpCi1ncm91cC5hZGRfb3B0aW9uKCItbSIsICItLW1lc3NhZ2UiLCBh
Y3Rpb249InN0b3JlIiwgZGVzdD0ibWVzc2FnZSIsCi0gICAgICAgICAgICAgICAgIG1ldGF2YXI9
Ik1FU1NBR0UiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgIGhlbHA9IkEgbWVzc2Fn
ZSB0byBpZGVudGlmeSB0aGUgcGF0Y2guICIKLSAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBw
cm9tcHQgaWYgb21pdHRlZC4iKQotZ3JvdXAuYWRkX29wdGlvbigiLWkiLCAiLS1pc3N1ZSIsIHR5
cGU9ImludCIsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAgICAgICBtZXRhdmFyPSJJU1NV
RSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iSXNzdWUgbnVtYmVyIHRv
IHdoaWNoIHRvIGFkZC4gRGVmYXVsdHMgdG8gbmV3IGlzc3VlLiIpCi1ncm91cC5hZGRfb3B0aW9u
KCItLWRvd25sb2FkX2Jhc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAg
ICBkZXN0PSJkb3dubG9hZF9iYXNlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
aGVscD0iQmFzZSBmaWxlcyB3aWxsIGJlIGRvd25sb2FkZWQgYnkgdGhlIHNlcnZlciAiCi0gICAg
ICAgICAgICAgICAgICIoc2lkZS1ieS1zaWRlIGRpZmZzIG1heSBub3Qgd29yayBvbiBmaWxlcyB3
aXRoIENScykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tcmV2IiwgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9InJldmlzaW9uIiwKLSAgICAgICAgICAgICAgICAgbWV0YXZhcj0iUkVWIiwgZGVmYXVsdD1O
b25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJCcmFuY2gvdHJlZS9yZXZpc2lvbiB0byBkaWZm
IGFnYWluc3QgKHVzZWQgYnkgRFZDUykuIikKLWdyb3VwLmFkZF9vcHRpb24oIi0tc2VuZF9tYWls
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgZGVzdD0ic2VuZF9tYWls
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgaGVscD0iU2VuZCBub3RpZmljYXRp
b24gZW1haWwgdG8gcmV2aWV3ZXJzLiIpCi0KLQotZGVmIEdldFJwY1NlcnZlcihvcHRpb25zKToK
LSAgIiIiUmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhbiBBYnN0cmFjdFJwY1NlcnZlci4KLQotICBS
ZXR1cm5zOgotICAgIEEgbmV3IEFic3RyYWN0UnBjU2VydmVyLCBvbiB3aGljaCBSUEMgY2FsbHMg
Y2FuIGJlIG1hZGUuCi0gICIiIgotCi0gIHJwY19zZXJ2ZXJfY2xhc3MgPSBIdHRwUnBjU2VydmVy
Ci0KLSAgZGVmIEdldFVzZXJDcmVkZW50aWFscygpOgotICAgICIiIlByb21wdHMgdGhlIHVzZXIg
Zm9yIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLiIiIgotICAgIGVtYWlsID0gb3B0aW9ucy5lbWFp
bAotICAgIGlmIGVtYWlsIGlzIE5vbmU6Ci0gICAgICBlbWFpbCA9IEdldEVtYWlsKCJFbWFpbCAo
bG9naW4gZm9yIHVwbG9hZGluZyB0byAlcykiICUgb3B0aW9ucy5zZXJ2ZXIpCi0gICAgcGFzc3dv
cmQgPSBnZXRwYXNzLmdldHBhc3MoIlBhc3N3b3JkIGZvciAlczogIiAlIGVtYWlsKQotICAgIHJl
dHVybiAoZW1haWwsIHBhc3N3b3JkKQotCi0gICMgSWYgdGhpcyBpcyB0aGUgZGV2X2FwcHNlcnZl
ciwgdXNlIGZha2UgYXV0aGVudGljYXRpb24uCi0gIGhvc3QgPSAob3B0aW9ucy5ob3N0IG9yIG9w
dGlvbnMuc2VydmVyKS5sb3dlcigpCi0gIGlmIGhvc3QgPT0gImxvY2FsaG9zdCIgb3IgaG9zdC5z
dGFydHN3aXRoKCJsb2NhbGhvc3Q6Iik6Ci0gICAgZW1haWwgPSBvcHRpb25zLmVtYWlsCi0gICAg
aWYgZW1haWwgaXMgTm9uZToKLSAgICAgIGVtYWlsID0gInRlc3RAZXhhbXBsZS5jb20iCi0gICAg
ICBsb2dnaW5nLmluZm8oIlVzaW5nIGRlYnVnIHVzZXIgJXMuICBPdmVycmlkZSB3aXRoIC0tZW1h
aWwiICUgZW1haWwpCi0gICAgc2VydmVyID0gcnBjX3NlcnZlcl9jbGFzcygKLSAgICAgICAgb3B0
aW9ucy5zZXJ2ZXIsCi0gICAgICAgIGxhbWJkYTogKGVtYWlsLCAicGFzc3dvcmQiKSwKLSAgICAg
ICAgaG9zdF9vdmVycmlkZT1vcHRpb25zLmhvc3QsCi0gICAgICAgIGV4dHJhX2hlYWRlcnM9eyJD
b29raWUiOgotICAgICAgICAgICAgICAgICAgICAgICAnZGV2X2FwcHNlcnZlcl9sb2dpbj0iJXM6
RmFsc2UiJyAlIGVtYWlsfSwKLSAgICAgICAgc2F2ZV9jb29raWVzPW9wdGlvbnMuc2F2ZV9jb29r
aWVzKQotICAgICMgRG9uJ3QgdHJ5IHRvIHRhbGsgdG8gQ2xpZW50TG9naW4uCi0gICAgc2VydmVy
LmF1dGhlbnRpY2F0ZWQgPSBUcnVlCi0gICAgcmV0dXJuIHNlcnZlcgotCi0gIHJldHVybiBycGNf
c2VydmVyX2NsYXNzKG9wdGlvbnMuc2VydmVyLCBHZXRVc2VyQ3JlZGVudGlhbHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGhvc3Rfb3ZlcnJpZGU9b3B0aW9ucy5ob3N0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYXZlX2Nvb2tpZXM9b3B0aW9ucy5zYXZlX2Nvb2tpZXMpCi0KLQot
ZGVmIEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZpZWxkcywgZmlsZXMpOgotICAiIiJFbmNvZGUg
Zm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydC9mb3JtLWRhdGEuCi0KLSAgQXJnczoKLSAgICBmaWVs
ZHM6IEEgc2VxdWVuY2Ugb2YgKG5hbWUsIHZhbHVlKSBlbGVtZW50cyBmb3IgcmVndWxhciBmb3Jt
IGZpZWxkcy4KLSAgICBmaWxlczogQSBzZXF1ZW5jZSBvZiAobmFtZSwgZmlsZW5hbWUsIHZhbHVl
KSBlbGVtZW50cyBmb3IgZGF0YSB0byBiZQotICAgICAgICAgICB1cGxvYWRlZCBhcyBmaWxlcy4K
LSAgUmV0dXJuczoKLSAgICAoY29udGVudF90eXBlLCBib2R5KSByZWFkeSBmb3IgaHR0cGxpYi5I
VFRQIGluc3RhbmNlLgotCi0gIFNvdXJjZToKLSAgICBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5j
b20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzE0NjMwNgotICAiIiIKLSAgQk9VTkRBUlkg
PSAnLU0tQS1HLUktQy0tLUItTy1VLU4tRC1BLVItWS0nCi0gIENSTEYgPSAnXHJcbicKLSAgbGlu
ZXMgPSBbXQotICBmb3IgKGtleSwgdmFsdWUpIGluIGZpZWxkczoKLSAgICBsaW5lcy5hcHBlbmQo
Jy0tJyArIEJPVU5EQVJZKQotICAgIGxpbmVzLmFwcGVuZCgnQ29udGVudC1EaXNwb3NpdGlvbjog
Zm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5KQotICAgIGxpbmVzLmFwcGVuZCgnJykKLSAgICBs
aW5lcy5hcHBlbmQodmFsdWUpCi0gIGZvciAoa2V5LCBmaWxlbmFtZSwgdmFsdWUpIGluIGZpbGVz
OgotICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCi0gICAgbGluZXMuYXBwZW5kKCdD
b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIjsgZmlsZW5hbWU9IiVzIicg
JQotICAgICAgICAgICAgIChrZXksIGZpbGVuYW1lKSkKLSAgICBsaW5lcy5hcHBlbmQoJ0NvbnRl
bnQtVHlwZTogJXMnICUgR2V0Q29udGVudFR5cGUoZmlsZW5hbWUpKQotICAgIGxpbmVzLmFwcGVu
ZCgnJykKLSAgICBsaW5lcy5hcHBlbmQodmFsdWUpCi0gIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9V
TkRBUlkgKyAnLS0nKQotICBsaW5lcy5hcHBlbmQoJycpCi0gIGJvZHkgPSBDUkxGLmpvaW4obGlu
ZXMpCi0gIGNvbnRlbnRfdHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0lcycg
JSBCT1VOREFSWQotICByZXR1cm4gY29udGVudF90eXBlLCBib2R5Ci0KLQotZGVmIEdldENvbnRl
bnRUeXBlKGZpbGVuYW1lKToKLSAgIiIiSGVscGVyIHRvIGd1ZXNzIHRoZSBjb250ZW50LXR5cGUg
ZnJvbSB0aGUgZmlsZW5hbWUuIiIiCi0gIHJldHVybiBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShmaWxl
bmFtZSlbMF0gb3IgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKLQotCi0jIFVzZSBhIHNoZWxs
IGZvciBzdWJjb21tYW5kcyBvbiBXaW5kb3dzIHRvIGdldCBhIFBBVEggc2VhcmNoLgotdXNlX3No
ZWxsID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpCi0KLWRlZiBSdW5TaGVsbFdpdGhS
ZXR1cm5Db2RlKGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKToKLSAgIiIiRXhlY3V0ZXMgYSBjb21t
YW5kIGFuZCByZXR1cm5zIHRoZSBvdXRwdXQgZnJvbSBzdGRvdXQgYW5kIHRoZSByZXR1cm4gY29k
ZS4KLQotICBBcmdzOgotICAgIGNvbW1hbmQ6IENvbW1hbmQgdG8gZXhlY3V0ZS4KLSAgICBwcmlu
dF9vdXRwdXQ6IElmIFRydWUsIHRoZSBvdXRwdXQgaXMgcHJpbnRlZCB0byBzdGRvdXQuCi0gICAg
ICAgICAgICAgICAgICBJZiBGYWxzZSwgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgaWdub3Jl
ZC4KLSAgICB1bml2ZXJzYWxfbmV3bGluZXM6IFVzZSB1bml2ZXJzYWxfbmV3bGluZXMgZmxhZyAo
ZGVmYXVsdDogVHJ1ZSkuCi0KLSAgUmV0dXJuczoKLSAgICBUdXBsZSAob3V0cHV0LCByZXR1cm4g
Y29kZSkKLSAgIiIiCi0gIGxvZ2dpbmcuaW5mbygiUnVubmluZyAlcyIsIGNvbW1hbmQpCi0gIHAg
PSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
cj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgIHNoZWxsPXVzZV9zaGVs
bCwgdW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYgcHJpbnRfb3V0
cHV0OgotICAgIG91dHB1dF9hcnJheSA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgIGxpbmUg
PSBwLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICBpZiBub3QgbGluZToKLSAgICAgICAgYnJlYWsK
LSAgICAgIHByaW50IGxpbmUuc3RyaXAoIlxuIikKLSAgICAgIG91dHB1dF9hcnJheS5hcHBlbmQo
bGluZSkKLSAgICBvdXRwdXQgPSAiIi5qb2luKG91dHB1dF9hcnJheSkKLSAgZWxzZToKLSAgICBv
dXRwdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAgcC53YWl0KCkKLSAgZXJyb3V0ID0gcC5zdGRlcnIu
cmVhZCgpCi0gIGlmIHByaW50X291dHB1dCBhbmQgZXJyb3V0OgotICAgIHByaW50ID4+c3lzLnN0
ZGVyciwgZXJyb3V0Ci0gIHAuc3Rkb3V0LmNsb3NlKCkKLSAgcC5zdGRlcnIuY2xvc2UoKQotICBy
ZXR1cm4gb3V0cHV0LCBwLnJldHVybmNvZGUKLQotCi1kZWYgUnVuU2hlbGwoY29tbWFuZCwgc2ls
ZW50X29rPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICBwcmlu
dF9vdXRwdXQ9RmFsc2UpOgotICBkYXRhLCByZXRjb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29k
ZShjb21tYW5kLCBwcmludF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcykKLSAgaWYgcmV0Y29kZToKLSAgICBFcnJvckV4
aXQoIkdvdCBlcnJvciBzdGF0dXMgZnJvbSAlczpcbiVzIiAlIChjb21tYW5kLCBkYXRhKSkKLSAg
aWYgbm90IHNpbGVudF9vayBhbmQgbm90IGRhdGE6Ci0gICAgRXJyb3JFeGl0KCJObyBvdXRwdXQg
ZnJvbSAlcyIgJSBjb21tYW5kKQotICByZXR1cm4gZGF0YQotCi0KLWNsYXNzIFZlcnNpb25Db250
cm9sU3lzdGVtKG9iamVjdCk6Ci0gICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcHJvdmlkaW5nIGFu
IGludGVyZmFjZSB0byB0aGUgVkNTLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
KToKLSAgICAiIiJDb25zdHJ1Y3Rvci4KLQotICAgIEFyZ3M6Ci0gICAgICBvcHRpb25zOiBDb21t
YW5kIGxpbmUgb3B0aW9ucy4KLSAgICAiIiIKLSAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCi0K
LSAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBhcmdzKToKLSAgICAiIiJSZXR1cm4gdGhlIGN1cnJl
bnQgZGlmZiBhcyBhIHN0cmluZy4KLQotICAgIEFyZ3M6Ci0gICAgICBhcmdzOiBFeHRyYSBhcmd1
bWVudHMgdG8gcGFzcyB0byB0aGUgZGlmZiBjb21tYW5kLgotICAgICIiIgotICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3Mg
JXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9fY2xhc3NfXykKLQotICBkZWYgR2V0VW5rbm93bkZp
bGVzKHNlbGYpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZXMgdW5rbm93biB0byB0aGUg
VkNTLiIiIgotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICJhYnN0cmFj
dCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBzZWxmLl9fY2xhc3NfXykK
LQotICBkZWYgQ2hlY2tGb3JVbmtub3duRmlsZXMoc2VsZik6Ci0gICAgIiIiU2hvdyBhbiAiYXJl
IHlvdSBzdXJlPyIgcHJvbXB0IGlmIHRoZXJlIGFyZSB1bmtub3duIGZpbGVzLiIiIgotICAgIHVu
a25vd25fZmlsZXMgPSBzZWxmLkdldFVua25vd25GaWxlcygpCi0gICAgaWYgdW5rbm93bl9maWxl
czoKLSAgICAgIHByaW50ICJUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSBub3QgYWRkZWQgdG8gdmVy
c2lvbiBjb250cm9sOiIKLSAgICAgIGZvciBsaW5lIGluIHVua25vd25fZmlsZXM6Ci0gICAgICAg
IHByaW50IGxpbmUKLSAgICAgIHByb21wdCA9ICJBcmUgeW91IHN1cmUgdG8gY29udGludWU/KHkv
TikgIgotICAgICAgYW5zd2VyID0gcmF3X2lucHV0KHByb21wdCkuc3RyaXAoKQotICAgICAgaWYg
YW5zd2VyICE9ICJ5IjoKLSAgICAgICAgRXJyb3JFeGl0KCJVc2VyIGFib3J0ZWQiKQotCi0gIGRl
ZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgIiIiR2V0IHRoZSBjb250ZW50IG9m
IHRoZSB1cHN0cmVhbSB2ZXJzaW9uIG9mIGEgZmlsZS4KLQotICAgIFJldHVybnM6Ci0gICAgICBB
IHR1cGxlIChiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cykKLSAg
ICAgICAgYmFzZV9jb250ZW50OiBUaGUgY29udGVudHMgb2YgdGhlIGJhc2UgZmlsZS4KLSAgICAg
ICAgbmV3X2NvbnRlbnQ6IEZvciB0ZXh0IGZpbGVzLCB0aGlzIGlzIGVtcHR5LiAgRm9yIGJpbmFy
eSBmaWxlcywgdGhpcyBpcwotICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgbmV3IGZpbGUs
IHNpbmNlIHRoZSBkaWZmIG91dHB1dCB3b24ndCBjb250YWluCi0gICAgICAgICAgaW5mb3JtYXRp
b24gdG8gcmVjb25zdHJ1Y3QgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgICAgaXNfYmluYXJ5OiBU
cnVlIGlmZiB0aGUgZmlsZSBpcyBiaW5hcnkuCi0gICAgICAgIHN0YXR1czogVGhlIHN0YXR1cyBv
ZiB0aGUgZmlsZS4KLSAgICAiIiIKLQotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0g
ICAgICAgICJhYnN0cmFjdCBtZXRob2QgLS0gc3ViY2xhc3MgJXMgbXVzdCBvdmVycmlkZSIgJSBz
ZWxmLl9fY2xhc3NfXykKLQotCi0gIGRlZiBHZXRCYXNlRmlsZXMoc2VsZiwgZGlmZik6Ci0gICAg
IiIiSGVscGVyIHRoYXQgY2FsbHMgR2V0QmFzZSBmaWxlIGZvciBlYWNoIGZpbGUgaW4gdGhlIHBh
dGNoLgotCi0gICAgUmV0dXJuczoKLSAgICAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgZnJvbSBm
aWxlbmFtZSB0byBHZXRCYXNlRmlsZSdzIHR1cGxlLiAgRmlsZW5hbWVzCi0gICAgICBhcmUgcmV0
cmlldmVkIGJhc2VkIG9uIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAiSW5kZXg6IiBvcgotICAgICAg
IlByb3BlcnR5IGNoYW5nZXMgb246Ii4KLSAgICAiIiIKLSAgICBmaWxlcyA9IHt9Ci0gICAgZm9y
IGxpbmUgaW4gZGlmZi5zcGxpdGxpbmVzKFRydWUpOgotICAgICAgaWYgbGluZS5zdGFydHN3aXRo
KCdJbmRleDonKSBvciBsaW5lLnN0YXJ0c3dpdGgoJ1Byb3BlcnR5IGNoYW5nZXMgb246Jyk6Ci0g
ICAgICAgIHVudXNlZCwgZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgICAgIyBP
biBXaW5kb3dzIGlmIGEgZmlsZSBoYXMgcHJvcGVydHkgY2hhbmdlcyBpdHMgZmlsZW5hbWUgdXNl
cyAnXCcKLSAgICAgICAgIyBpbnN0ZWFkIG9mICcvJy4KLSAgICAgICAgZmlsZW5hbWUgPSBmaWxl
bmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICBmaWxlc1tmaWxlbmFtZV0g
PSBzZWxmLkdldEJhc2VGaWxlKGZpbGVuYW1lKQotICAgIHJldHVybiBmaWxlcwotCi0KLSAgZGVm
IFVwbG9hZEJhc2VGaWxlcyhzZWxmLCBpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hfbGlzdCwgcGF0
Y2hzZXQsIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgZmlsZXMpOgotICAgICIiIlVw
bG9hZHMgdGhlIGJhc2UgZmlsZXMgKGFuZCBpZiBuZWNlc3NhcnksIHRoZSBjdXJyZW50IG9uZXMg
YXMgd2VsbCkuIiIiCi0KLSAgICBkZWYgVXBsb2FkRmlsZShmaWxlbmFtZSwgZmlsZV9pZCwgY29u
dGVudCwgaXNfYmluYXJ5LCBzdGF0dXMsIGlzX2Jhc2UpOgotICAgICAgIiIiVXBsb2FkcyBhIGZp
bGUgdG8gdGhlIHNlcnZlci4iIiIKLSAgICAgIGZpbGVfdG9vX2xhcmdlID0gRmFsc2UKLSAgICAg
IGlmIGlzX2Jhc2U6Ci0gICAgICAgIHR5cGUgPSAiYmFzZSIKLSAgICAgIGVsc2U6Ci0gICAgICAg
IHR5cGUgPSAiY3VycmVudCIKLSAgICAgIGlmIGxlbihjb250ZW50KSA+IE1BWF9VUExPQURfU0la
RToKLSAgICAgICAgcHJpbnQgKCJOb3QgdXBsb2FkaW5nIHRoZSAlcyBmaWxlIGZvciAlcyBiZWNh
dXNlIGl0J3MgdG9vIGxhcmdlLiIgJQotICAgICAgICAgICAgICAgKHR5cGUsIGZpbGVuYW1lKSkK
LSAgICAgICAgZmlsZV90b29fbGFyZ2UgPSBUcnVlCi0gICAgICAgIGNvbnRlbnQgPSAiIgotICAg
ICAgY2hlY2tzdW0gPSBtZDUubmV3KGNvbnRlbnQpLmhleGRpZ2VzdCgpCi0gICAgICBpZiBvcHRp
b25zLnZlcmJvc2UgPiAwIGFuZCBub3QgZmlsZV90b29fbGFyZ2U6Ci0gICAgICAgIHByaW50ICJV
cGxvYWRpbmcgJXMgZmlsZSBmb3IgJXMiICUgKHR5cGUsIGZpbGVuYW1lKQotICAgICAgdXJsID0g
Ii8lZC91cGxvYWRfY29udGVudC8lZC8lZCIgJSAoaW50KGlzc3VlKSwgaW50KHBhdGNoc2V0KSwg
ZmlsZV9pZCkKLSAgICAgIGZvcm1fZmllbGRzID0gWygiZmlsZW5hbWUiLCBmaWxlbmFtZSksCi0g
ICAgICAgICAgICAgICAgICAgICAoInN0YXR1cyIsIHN0YXR1cyksCi0gICAgICAgICAgICAgICAg
ICAgICAoImNoZWNrc3VtIiwgY2hlY2tzdW0pLAotICAgICAgICAgICAgICAgICAgICAgKCJpc19i
aW5hcnkiLCBzdHIoaXNfYmluYXJ5KSksCi0gICAgICAgICAgICAgICAgICAgICAoImlzX2N1cnJl
bnQiLCBzdHIobm90IGlzX2Jhc2UpKSwKLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgaWYg
ZmlsZV90b29fbGFyZ2U6Ci0gICAgICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoImZpbGVfdG9vX2xh
cmdlIiwgIjEiKSkKLSAgICAgIGlmIG9wdGlvbnMuZW1haWw6Ci0gICAgICAgIGZvcm1fZmllbGRz
LmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgICAgIGN0eXBlLCBib2R5ID0gRW5j
b2RlTXVsdGlwYXJ0Rm9ybURhdGEoZm9ybV9maWVsZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsoImRhdGEiLCBmaWxlbmFtZSwgY29udGVudCldKQotICAg
ICAgcmVzcG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT1jdHlwZSkKLSAgICAgIGlm
IG5vdCByZXNwb25zZV9ib2R5LnN0YXJ0c3dpdGgoIk9LIik6Ci0gICAgICAgIFN0YXR1c1VwZGF0
ZSgiICAtLT4gJXMiICUgcmVzcG9uc2VfYm9keSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAg
IHBhdGNoZXMgPSBkaWN0KCkKLSAgICBbcGF0Y2hlcy5zZXRkZWZhdWx0KHYsIGspIGZvciBrLCB2
IGluIHBhdGNoX2xpc3RdCi0gICAgZm9yIGZpbGVuYW1lIGluIHBhdGNoZXMua2V5cygpOgotICAg
ICAgYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMgPSBmaWxlc1tm
aWxlbmFtZV0KLSAgICAgIGZpbGVfaWRfc3RyID0gcGF0Y2hlcy5nZXQoZmlsZW5hbWUpCi0gICAg
ICBpZiBmaWxlX2lkX3N0ci5maW5kKCJub2Jhc2UiKSAhPSAtMToKLSAgICAgICAgYmFzZV9jb250
ZW50ID0gTm9uZQotICAgICAgICBmaWxlX2lkX3N0ciA9IGZpbGVfaWRfc3RyW2ZpbGVfaWRfc3Ry
LnJmaW5kKCJfIikgKyAxOl0KLSAgICAgIGZpbGVfaWQgPSBpbnQoZmlsZV9pZF9zdHIpCi0gICAg
ICBpZiBiYXNlX2NvbnRlbnQgIT0gTm9uZToKLSAgICAgICAgVXBsb2FkRmlsZShmaWxlbmFtZSwg
ZmlsZV9pZCwgYmFzZV9jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgVHJ1ZSkKLSAgICAgIGlm
IG5ld19jb250ZW50ICE9IE5vbmU6Ci0gICAgICAgIFVwbG9hZEZpbGUoZmlsZW5hbWUsIGZpbGVf
aWQsIG5ld19jb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgRmFsc2UpCi0KLSAgZGVmIElzSW1h
Z2Uoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZW5hbWUg
aGFzIGFuIGltYWdlIGV4dGVuc2lvbi4iIiIKLSAgICBtaW1ldHlwZSA9ICBtaW1ldHlwZXMuZ3Vl
c3NfdHlwZShmaWxlbmFtZSlbMF0KLSAgICBpZiBub3QgbWltZXR5cGU6Ci0gICAgICByZXR1cm4g
RmFsc2UKLSAgICByZXR1cm4gbWltZXR5cGUuc3RhcnRzd2l0aCgiaW1hZ2UvIikKLQotCi1jbGFz
cyBTdWJ2ZXJzaW9uVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKLSAgIiIiSW1wbGVtZW50YXRp
b24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFjZSBmb3IgU3VidmVyc2lvbi4i
IiIKLQotICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIoU3VidmVyc2lv
blZDUywgc2VsZikuX19pbml0X18ob3B0aW9ucykKLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNp
b246Ci0gICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiKFxkKykoOihcZCspKT8iLCBzZWxmLm9wdGlv
bnMucmV2aXNpb24pCi0gICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgIEVycm9yRXhpdCgiSW52
YWxpZCBTdWJ2ZXJzaW9uIHJldmlzaW9uICVzLiIgJSBzZWxmLm9wdGlvbnMucmV2aXNpb24pCi0g
ICAgICBzZWxmLnJldl9zdGFydCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICBzZWxmLnJldl9lbmQg
PSBtYXRjaC5ncm91cCgzKQotICAgIGVsc2U6Ci0gICAgICBzZWxmLnJldl9zdGFydCA9IHNlbGYu
cmV2X2VuZCA9IE5vbmUKLSAgICAjIENhY2hlIG91dHB1dCBmcm9tICJzdm4gbGlzdCAtciBSRVZO
TyBkaXJuYW1lIi4KLSAgICAjIEtleXM6IGRpcm5hbWUsIFZhbHVlczogMi10dXBsZSAob3VwdXQg
Zm9yIHN0YXJ0IHJldiBhbmQgZW5kIHJldikuCi0gICAgc2VsZi5zdm5sc19jYWNoZSA9IHt9Ci0g
ICAgIyBTVk4gYmFzZSBVUkwgaXMgcmVxdWlyZWQgdG8gZmV0Y2ggZmlsZXMgZGVsZXRlZCBpbiBh
biBvbGRlciByZXZpc2lvbi4KLSAgICAjIFJlc3VsdCBpcyBjYWNoZWQgdG8gbm90IGd1ZXNzIGl0
IG92ZXIgYW5kIG92ZXIgYWdhaW4gaW4gR2V0QmFzZUZpbGUoKS4KLSAgICByZXF1aXJlZCA9IHNl
bGYub3B0aW9ucy5kb3dubG9hZF9iYXNlIG9yIHNlbGYub3B0aW9ucy5yZXZpc2lvbiBpcyBub3Qg
Tm9uZQotICAgIHNlbGYuc3ZuX2Jhc2UgPSBzZWxmLl9HdWVzc0Jhc2UocmVxdWlyZWQpCi0KLSAg
ZGVmIEd1ZXNzQmFzZShzZWxmLCByZXF1aXJlZCk6Ci0gICAgIiIiV3JhcHBlciBmb3IgX0d1ZXNz
QmFzZS4iIiIKLSAgICByZXR1cm4gc2VsZi5zdm5fYmFzZQotCi0gIGRlZiBfR3Vlc3NCYXNlKHNl
bGYsIHJlcXVpcmVkKToKLSAgICAiIiJSZXR1cm5zIHRoZSBTVk4gYmFzZSBVUkwuCi0KLSAgICBB
cmdzOgotICAgICAgcmVxdWlyZWQ6IElmIHRydWUsIGV4aXRzIGlmIHRoZSB1cmwgY2FuJ3QgYmUg
Z3Vlc3NlZCwgb3RoZXJ3aXNlIE5vbmUgaXMKLSAgICAgICAgcmV0dXJuZWQuCi0gICAgIiIiCi0g
ICAgaW5mbyA9IFJ1blNoZWxsKFsic3ZuIiwgImluZm8iXSkKLSAgICBmb3IgbGluZSBpbiBpbmZv
LnNwbGl0bGluZXMoKToKLSAgICAgIHdvcmRzID0gbGluZS5zcGxpdCgpCi0gICAgICBpZiBsZW4o
d29yZHMpID09IDIgYW5kIHdvcmRzWzBdID09ICJVUkw6IjoKLSAgICAgICAgdXJsID0gd29yZHNb
MV0KLSAgICAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50
ID0gdXJscGFyc2UudXJscGFyc2UodXJsKQotICAgICAgICB1c2VybmFtZSwgbmV0bG9jID0gdXJs
bGliLnNwbGl0dXNlcihuZXRsb2MpCi0gICAgICAgIGlmIHVzZXJuYW1lOgotICAgICAgICAgIGxv
Z2dpbmcuaW5mbygiUmVtb3ZlZCB1c2VybmFtZSBmcm9tIGJhc2UgVVJMIikKLSAgICAgICAgaWYg
bmV0bG9jLmVuZHN3aXRoKCJzdm4ucHl0aG9uLm9yZyIpOgotICAgICAgICAgIGlmIG5ldGxvYyA9
PSAic3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCIvcHJv
amVjdHMvIik6Ci0gICAgICAgICAgICAgIHBhdGggPSBwYXRoWzk6XQotICAgICAgICAgIGVsaWYg
bmV0bG9jICE9ICJweXRob25kZXZAc3ZuLnB5dGhvbi5vcmciOgotICAgICAgICAgICAgRXJyb3JF
eGl0KCJVbnJlY29nbml6ZWQgUHl0aG9uIFVSTDogJXMiICUgdXJsKQotICAgICAgICAgIGJhc2Ug
PSAiaHR0cDovL3N2bi5weXRob24ub3JnL3ZpZXcvKmNoZWNrb3V0KiVzLyIgJSBwYXRoCi0gICAg
ICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIFB5dGhvbiBiYXNlID0gJXMiLCBiYXNlKQotICAg
ICAgICBlbGlmIG5ldGxvYy5lbmRzd2l0aCgic3ZuLmNvbGxhYi5uZXQiKToKLSAgICAgICAgICBp
ZiBwYXRoLnN0YXJ0c3dpdGgoIi9yZXBvcy8iKToKLSAgICAgICAgICAgIHBhdGggPSBwYXRoWzY6
XQotICAgICAgICAgIGJhc2UgPSAiaHR0cDovL3N2bi5jb2xsYWIubmV0L3ZpZXd2Yy8qY2hlY2tv
dXQqJXMvIiAlIHBhdGgKLSAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgQ29sbGFiTmV0
IGJhc2UgPSAlcyIsIGJhc2UpCi0gICAgICAgIGVsaWYgbmV0bG9jLmVuZHN3aXRoKCIuZ29vZ2xl
Y29kZS5jb20iKToKLSAgICAgICAgICBwYXRoID0gcGF0aCArICIvIgotICAgICAgICAgIGJhc2Ug
PSB1cmxwYXJzZS51cmx1bnBhcnNlKCgiaHR0cCIsIG5ldGxvYywgcGF0aCwgcGFyYW1zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSwgZnJhZ21lbnQpKQotICAg
ICAgICAgIGxvZ2dpbmcuaW5mbygiR3Vlc3NlZCBHb29nbGUgQ29kZSBiYXNlID0gJXMiLCBiYXNl
KQotICAgICAgICBlbHNlOgotICAgICAgICAgIHBhdGggPSBwYXRoICsgIi8iCi0gICAgICAgICAg
YmFzZSA9IHVybHBhcnNlLnVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LCBmcmFnbWVudCkp
Ci0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIGJhc2UgPSAlcyIsIGJhc2UpCi0gICAg
ICAgIHJldHVybiBiYXNlCi0gICAgaWYgcmVxdWlyZWQ6Ci0gICAgICBFcnJvckV4aXQoIkNhbid0
IGZpbmQgVVJMIGluIG91dHB1dCBmcm9tIHN2biBpbmZvIikKLSAgICByZXR1cm4gTm9uZQotCi0g
IGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgYXJncyk6Ci0gICAgY21kID0gWyJzdm4iLCAiZGlmZiJd
Ci0gICAgaWYgc2VsZi5vcHRpb25zLnJldmlzaW9uOgotICAgICAgY21kICs9IFsiLXIiLCBzZWxm
Lm9wdGlvbnMucmV2aXNpb25dCi0gICAgY21kLmV4dGVuZChhcmdzKQotICAgIGRhdGEgPSBSdW5T
aGVsbChjbWQpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVz
KCk6Ci0gICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkluZGV4OiIpIG9yIGxpbmUuc3RhcnRzd2l0
aCgiUHJvcGVydHkgY2hhbmdlcyBvbjoiKToKLSAgICAgICAgY291bnQgKz0gMQotICAgICAgICBs
b2dnaW5nLmluZm8obGluZSkKLSAgICBpZiBub3QgY291bnQ6Ci0gICAgICBFcnJvckV4aXQoIk5v
IHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0IGZyb20gc3ZuIGRpZmYiKQotICAgIHJldHVy
biBkYXRhCi0KLSAgZGVmIF9Db2xsYXBzZUtleXdvcmRzKHNlbGYsIGNvbnRlbnQsIGtleXdvcmRf
c3RyKToKLSAgICAiIiJDb2xsYXBzZXMgU1ZOIGtleXdvcmRzLiIiIgotICAgICMgc3ZuIGNhdCB0
cmFuc2xhdGVzIGtleXdvcmRzIGJ1dCBzdm4gZGlmZiBkb2Vzbid0LiBBcyBhIHJlc3VsdCBvZiB0
aGlzCi0gICAgIyBiZWhhdmlvciBwYXRjaGluZy5QYXRjaENodW5rcygpIGZhaWxzIHdpdGggYSBj
aHVuayBtaXNtYXRjaCBlcnJvci4KLSAgICAjIFRoaXMgcGFydCB3YXMgb3JpZ2luYWxseSB3cml0
dGVuIGJ5IHRoZSBSZXZpZXcgQm9hcmQgZGV2ZWxvcG1lbnQgdGVhbQotICAgICMgd2hvIGhhZCB0
aGUgc2FtZSBwcm9ibGVtIChodHRwOi8vcmV2aWV3cy5yZXZpZXctYm9hcmQub3JnL3IvMjc2Lyku
Ci0gICAgIyBNYXBwaW5nIG9mIGtleXdvcmRzIHRvIGtub3duIGFsaWFzZXMKLSAgICBzdm5fa2V5
d29yZHMgPSB7Ci0gICAgICAjIFN0YW5kYXJkIGtleXdvcmRzCi0gICAgICAnRGF0ZSc6ICAgICAg
ICAgICAgICAgIFsnRGF0ZScsICdMYXN0Q2hhbmdlZERhdGUnXSwKLSAgICAgICdSZXZpc2lvbic6
ICAgICAgICAgICAgWydSZXZpc2lvbicsICdMYXN0Q2hhbmdlZFJldmlzaW9uJywgJ1JldiddLAot
ICAgICAgJ0F1dGhvcic6ICAgICAgICAgICAgICBbJ0F1dGhvcicsICdMYXN0Q2hhbmdlZEJ5J10s
Ci0gICAgICAnSGVhZFVSTCc6ICAgICAgICAgICAgIFsnSGVhZFVSTCcsICdVUkwnXSwKLSAgICAg
ICdJZCc6ICAgICAgICAgICAgICAgICAgWydJZCddLAotCi0gICAgICAjIEFsaWFzZXMKLSAgICAg
ICdMYXN0Q2hhbmdlZERhdGUnOiAgICAgWydMYXN0Q2hhbmdlZERhdGUnLCAnRGF0ZSddLAotICAg
ICAgJ0xhc3RDaGFuZ2VkUmV2aXNpb24nOiBbJ0xhc3RDaGFuZ2VkUmV2aXNpb24nLCAnUmV2Jywg
J1JldmlzaW9uJ10sCi0gICAgICAnTGFzdENoYW5nZWRCeSc6ICAgICAgIFsnTGFzdENoYW5nZWRC
eScsICdBdXRob3InXSwKLSAgICAgICdVUkwnOiAgICAgICAgICAgICAgICAgWydVUkwnLCAnSGVh
ZFVSTCddLAotICAgIH0KLQotICAgIGRlZiByZXBsKG0pOgotICAgICAgIGlmIG0uZ3JvdXAoMik6
Ci0gICAgICAgICByZXR1cm4gIiQlczo6JXMkIiAlIChtLmdyb3VwKDEpLCAiICIgKiBsZW4obS5n
cm91cCgzKSkpCi0gICAgICAgcmV0dXJuICIkJXMkIiAlIG0uZ3JvdXAoMSkKLSAgICBrZXl3b3Jk
cyA9IFtrZXl3b3JkCi0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4ga2V5d29yZF9zdHIuc3Bs
aXQoIiAiKQotICAgICAgICAgICAgICAgIGZvciBrZXl3b3JkIGluIHN2bl9rZXl3b3Jkcy5nZXQo
bmFtZSwgW10pXQotICAgIHJldHVybiByZS5zdWIociJcJCglcyk6KDo/KShbXlwkXSspXCQiICUg
J3wnLmpvaW4oa2V5d29yZHMpLCByZXBsLCBjb250ZW50KQotCi0gIGRlZiBHZXRVbmtub3duRmls
ZXMoc2VsZik6Ci0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJzdm4iLCAic3RhdHVzIiwgIi0taWdu
b3JlLWV4dGVybmFscyJdLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICB1bmtub3duX2ZpbGVzID0gW10K
LSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXQoIlxuIik6Ci0gICAgICBpZiBsaW5lIGFuZCBs
aW5lWzBdID09ICI/IjoKLSAgICAgICAgdW5rbm93bl9maWxlcy5hcHBlbmQobGluZSkKLSAgICBy
ZXR1cm4gdW5rbm93bl9maWxlcwotCi0gIGRlZiBSZWFkRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0g
ICAgIiIiUmV0dXJucyB0aGUgY29udGVudHMgb2YgYSBmaWxlLiIiIgotICAgIGZpbGUgPSBvcGVu
KGZpbGVuYW1lLCAncmInKQotICAgIHJlc3VsdCA9ICIiCi0gICAgdHJ5OgotICAgICAgcmVzdWx0
ID0gZmlsZS5yZWFkKCkKLSAgICBmaW5hbGx5OgotICAgICAgZmlsZS5jbG9zZSgpCi0gICAgcmV0
dXJuIHJlc3VsdAotCi0gIGRlZiBHZXRTdGF0dXMoc2VsZiwgZmlsZW5hbWUpOgotICAgICIiIlJl
dHVybnMgdGhlIHN0YXR1cyBvZiBhIGZpbGUuIiIiCi0gICAgaWYgbm90IHNlbGYub3B0aW9ucy5y
ZXZpc2lvbjoKLSAgICAgIHN0YXR1cyA9IFJ1blNoZWxsKFsic3ZuIiwgInN0YXR1cyIsICItLWln
bm9yZS1leHRlcm5hbHMiLCBmaWxlbmFtZV0pCi0gICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAg
ICBFcnJvckV4aXQoInN2biBzdGF0dXMgcmV0dXJuZWQgbm8gb3V0cHV0IGZvciAlcyIgJSBmaWxl
bmFtZSkKLSAgICAgIHN0YXR1c19saW5lcyA9IHN0YXR1cy5zcGxpdGxpbmVzKCkKLSAgICAgICMg
SWYgZmlsZSBpcyBpbiBhIGNsLCB0aGUgb3V0cHV0IHdpbGwgYmVnaW4gd2l0aAotICAgICAgIyAi
XG4tLS0gQ2hhbmdlbGlzdCAnY2xfbmFtZSc6XG4iLiAgU2VlCi0gICAgICAjIGh0dHA6Ly9zdm4u
Y29sbGFiLm5ldC9yZXBvcy9zdm4vdHJ1bmsvbm90ZXMvY2hhbmdlbGlzdC1kZXNpZ24udHh0Ci0g
ICAgICBpZiAobGVuKHN0YXR1c19saW5lcykgPT0gMyBhbmQKLSAgICAgICAgICBub3Qgc3RhdHVz
X2xpbmVzWzBdIGFuZAotICAgICAgICAgIHN0YXR1c19saW5lc1sxXS5zdGFydHN3aXRoKCItLS0g
Q2hhbmdlbGlzdCIpKToKLSAgICAgICAgc3RhdHVzID0gc3RhdHVzX2xpbmVzWzJdCi0gICAgICBl
bHNlOgotICAgICAgICBzdGF0dXMgPSBzdGF0dXNfbGluZXNbMF0KLSAgICAjIElmIHdlIGhhdmUg
YSByZXZpc2lvbiB0byBkaWZmIGFnYWluc3Qgd2UgbmVlZCB0byBydW4gInN2biBsaXN0IgotICAg
ICMgZm9yIHRoZSBvbGQgYW5kIHRoZSBuZXcgcmV2aXNpb24gYW5kIGNvbXBhcmUgdGhlIHJlc3Vs
dHMgdG8gZ2V0Ci0gICAgIyB0aGUgY29ycmVjdCBzdGF0dXMgZm9yIGEgZmlsZS4KLSAgICBlbHNl
OgotICAgICAgZGlybmFtZSwgcmVsZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQot
ICAgICAgaWYgZGlybmFtZSBub3QgaW4gc2VsZi5zdm5sc19jYWNoZToKLSAgICAgICAgY21kID0g
WyJzdm4iLCAibGlzdCIsICItciIsIHNlbGYucmV2X3N0YXJ0LCBkaXJuYW1lIG9yICIuIl0KLSAg
ICAgICAgb3V0LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAg
ICAgIGlmIHJldHVybmNvZGU6Ci0gICAgICAgICAgRXJyb3JFeGl0KCJGYWlsZWQgdG8gZ2V0IHN0
YXR1cyBmb3IgJXMuIiAlIGZpbGVuYW1lKQotICAgICAgICBvbGRfZmlsZXMgPSBvdXQuc3BsaXRs
aW5lcygpCi0gICAgICAgIGFyZ3MgPSBbInN2biIsICJsaXN0Il0KLSAgICAgICAgaWYgc2VsZi5y
ZXZfZW5kOgotICAgICAgICAgIGFyZ3MgKz0gWyItciIsIHNlbGYucmV2X2VuZF0KLSAgICAgICAg
Y21kID0gYXJncyArIFtkaXJuYW1lIG9yICIuIl0KLSAgICAgICAgb3V0LCByZXR1cm5jb2RlID0g
UnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAgICAgIGlmIHJldHVybmNvZGU6Ci0gICAg
ICAgICAgRXJyb3JFeGl0KCJGYWlsZWQgdG8gcnVuIGNvbW1hbmQgJXMiICUgY21kKQotICAgICAg
ICBzZWxmLnN2bmxzX2NhY2hlW2Rpcm5hbWVdID0gKG9sZF9maWxlcywgb3V0LnNwbGl0bGluZXMo
KSkKLSAgICAgIG9sZF9maWxlcywgbmV3X2ZpbGVzID0gc2VsZi5zdm5sc19jYWNoZVtkaXJuYW1l
XQotICAgICAgaWYgcmVsZmlsZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxlbmFtZSBub3Qg
aW4gbmV3X2ZpbGVzOgotICAgICAgICBzdGF0dXMgPSAiRCAgICIKLSAgICAgIGVsaWYgcmVsZmls
ZW5hbWUgaW4gb2xkX2ZpbGVzIGFuZCByZWxmaWxlbmFtZSBpbiBuZXdfZmlsZXM6Ci0gICAgICAg
IHN0YXR1cyA9ICJNICAgIgotICAgICAgZWxzZToKLSAgICAgICAgc3RhdHVzID0gIkEgICAiCi0g
ICAgcmV0dXJuIHN0YXR1cwotCi0gIGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0g
ICAgc3RhdHVzID0gc2VsZi5HZXRTdGF0dXMoZmlsZW5hbWUpCi0gICAgYmFzZV9jb250ZW50ID0g
Tm9uZQotICAgIG5ld19jb250ZW50ID0gTm9uZQotCi0gICAgIyBJZiBhIGZpbGUgaXMgY29waWVk
IGl0cyBzdGF0dXMgd2lsbCBiZSAiQSAgKyIsIHdoaWNoIHNpZ25pZmllcwotICAgICMgImFkZGl0
aW9uLXdpdGgtaGlzdG9yeSIuICBTZWUgInN2biBzdCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBX
ZSBuZWVkIHRvCi0gICAgIyB1cGxvYWQgdGhlIG9yaWdpbmFsIGZpbGUgb3IgZWxzZSBkaWZmIHBh
cnNpbmcgd2lsbCBmYWlsIGlmIHRoZSBmaWxlIHdhcwotICAgICMgZWRpdGVkLgotICAgIGlmIHN0
YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSAhPSAiKyI6Ci0gICAgICAjIFdlJ2xsIG5lZWQg
dG8gdXBsb2FkIHRoZSBuZXcgY29udGVudCBpZiB3ZSdyZSBhZGRpbmcgYSBiaW5hcnkgZmlsZQot
ICAgICAgIyBzaW5jZSBkaWZmJ3Mgb3V0cHV0IHdvbid0IGNvbnRhaW4gaXQuCi0gICAgICBtaW1l
dHlwZSA9IFJ1blNoZWxsKFsic3ZuIiwgInByb3BnZXQiLCAic3ZuOm1pbWUtdHlwZSIsIGZpbGVu
YW1lXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCi0gICAgICBi
YXNlX2NvbnRlbnQgPSAiIgotICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5kIG5vdCBtaW1l
dHlwZS5zdGFydHN3aXRoKCJ0ZXh0LyIpCi0gICAgICBpZiBpc19iaW5hcnkgYW5kIHNlbGYuSXNJ
bWFnZShmaWxlbmFtZSk6Ci0gICAgICAgIG5ld19jb250ZW50ID0gc2VsZi5SZWFkRmlsZShmaWxl
bmFtZSkKLSAgICBlbGlmIChzdGF0dXNbMF0gaW4gKCJNIiwgIkQiLCAiUiIpIG9yCi0gICAgICAg
ICAgKHN0YXR1c1swXSA9PSAiQSIgYW5kIHN0YXR1c1szXSA9PSAiKyIpIG9yICAjIENvcGllZCBm
aWxlLgotICAgICAgICAgIChzdGF0dXNbMF0gPT0gIiAiIGFuZCBzdGF0dXNbMV0gPT0gIk0iKSk6
ICAjIFByb3BlcnR5IGNoYW5nZS4KLSAgICAgIGFyZ3MgPSBbXQotICAgICAgaWYgc2VsZi5vcHRp
b25zLnJldmlzaW9uOgotICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2Us
IGZpbGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgRG9uJ3Qg
Y2hhbmdlIGZpbGVuYW1lLCBpdCdzIG5lZWRlZCBsYXRlci4KLSAgICAgICAgdXJsID0gZmlsZW5h
bWUKLSAgICAgICAgYXJncyArPSBbIi1yIiwgIkJBU0UiXQotICAgICAgY21kID0gWyJzdm4iXSAr
IGFyZ3MgKyBbInByb3BnZXQiLCAic3ZuOm1pbWUtdHlwZSIsIHVybF0KLSAgICAgIG1pbWV0eXBl
LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShjbWQpCi0gICAgICBpZiByZXR1
cm5jb2RlOgotICAgICAgICAjIEZpbGUgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlcXVlc3RlZCBy
ZXZpc2lvbi4KLSAgICAgICAgIyBSZXNldCBtaW1ldHlwZSwgaXQgY29udGFpbnMgYW4gZXJyb3Ig
bWVzc2FnZS4KLSAgICAgICAgbWltZXR5cGUgPSAiIgotICAgICAgZ2V0X2Jhc2UgPSBGYWxzZQot
ICAgICAgaXNfYmluYXJ5ID0gbWltZXR5cGUgYW5kIG5vdCBtaW1ldHlwZS5zdGFydHN3aXRoKCJ0
ZXh0LyIpCi0gICAgICBpZiBzdGF0dXNbMF0gPT0gIiAiOgotICAgICAgICAjIEVtcHR5IGJhc2Ug
Y29udGVudCBqdXN0IHRvIGZvcmNlIGFuIHVwbG9hZC4KLSAgICAgICAgYmFzZV9jb250ZW50ID0g
IiIKLSAgICAgIGVsaWYgaXNfYmluYXJ5OgotICAgICAgICBpZiBzZWxmLklzSW1hZ2UoZmlsZW5h
bWUpOgotICAgICAgICAgIGdldF9iYXNlID0gVHJ1ZQotICAgICAgICAgIGlmIHN0YXR1c1swXSA9
PSAiTSI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5yZXZfZW5kOgotICAgICAgICAgICAgICBu
ZXdfY29udGVudCA9IHNlbGYuUmVhZEZpbGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1l
LCBzZWxmLnJldl9lbmQpCi0gICAgICAgICAgICAgIG5ld19jb250ZW50ID0gUnVuU2hlbGwoWyJz
dm4iLCAiY2F0IiwgdXJsXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgc2lsZW50X29rPVRydWUpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgYmFzZV9jb250ZW50ID0gIiIKLSAgICAgIGVsc2U6Ci0gICAgICAgIGdldF9iYXNl
ID0gVHJ1ZQotCi0gICAgICBpZiBnZXRfYmFzZToKLSAgICAgICAgaWYgaXNfYmluYXJ5OgotICAg
ICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcyA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgdW5pdmVyc2FsX25ld2xpbmVzID0gVHJ1ZQotICAgICAgICBpZiBzZWxmLnJldl9zdGFydDoK
LSAgICAgICAgICAjICJzdm4gY2F0IC1yIFJFViBkZWxldGVfZmlsZS50eHQiIGRvZXNuJ3Qgd29y
ay4gY2F0IHJlcXVpcmVzCi0gICAgICAgICAgIyB0aGUgZnVsbCBVUkwgd2l0aCAiQFJFViIgYXBw
ZW5kZWQgaW5zdGVhZCBvZiB1c2luZyAiLXIiIG9wdGlvbi4KLSAgICAgICAgICB1cmwgPSAiJXMv
JXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1lLCBzZWxmLnJldl9zdGFydCkKLSAgICAg
ICAgICBiYXNlX2NvbnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCB1cmxdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz11bml2ZXJzYWxf
bmV3bGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRy
dWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgYmFzZV9jb250ZW50ID0gUnVuU2hlbGwoWyJz
dm4iLCAiY2F0IiwgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaXZlcnNhbF9uZXdsaW5lcz11bml2ZXJzYWxfbmV3bGluZXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2lsZW50X29rPVRydWUpCi0gICAgICAgIGlmIG5vdCBpc19iaW5h
cnk6Ci0gICAgICAgICAgYXJncyA9IFtdCi0gICAgICAgICAgaWYgc2VsZi5yZXZfc3RhcnQ6Ci0g
ICAgICAgICAgICB1cmwgPSAiJXMvJXNAJXMiICUgKHNlbGYuc3ZuX2Jhc2UsIGZpbGVuYW1lLCBz
ZWxmLnJldl9zdGFydCkKLSAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gZmlsZW5h
bWUKLSAgICAgICAgICAgIGFyZ3MgKz0gWyItciIsICJCQVNFIl0KLSAgICAgICAgICBjbWQgPSBb
InN2biJdICsgYXJncyArIFsicHJvcGdldCIsICJzdm46a2V5d29yZHMiLCB1cmxdCi0gICAgICAg
ICAga2V5d29yZHMsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNtZCkKLSAg
ICAgICAgICBpZiBrZXl3b3JkcyBhbmQgbm90IHJldHVybmNvZGU6Ci0gICAgICAgICAgICBiYXNl
X2NvbnRlbnQgPSBzZWxmLl9Db2xsYXBzZUtleXdvcmRzKGJhc2VfY29udGVudCwga2V5d29yZHMp
Ci0gICAgZWxzZToKLSAgICAgIFN0YXR1c1VwZGF0ZSgic3ZuIHN0YXR1cyByZXR1cm5lZCB1bmV4
cGVjdGVkIG91dHB1dDogJXMiICUgc3RhdHVzKQotICAgICAgc3lzLmV4aXQoMSkKLSAgICByZXR1
cm4gYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXNbMDo1XQotCi0K
LWNsYXNzIEdpdFZDUyhWZXJzaW9uQ29udHJvbFN5c3RlbSk6Ci0gICIiIkltcGxlbWVudGF0aW9u
IG9mIHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbnRlcmZhY2UgZm9yIEdpdC4iIiIKLQotICBk
ZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgc3VwZXIoR2l0VkNTLCBzZWxmKS5fX2lu
aXRfXyhvcHRpb25zKQotICAgICMgTWFwIG9mIGZpbGVuYW1lIC0+IGhhc2ggb2YgYmFzZSBmaWxl
LgotICAgIHNlbGYuYmFzZV9oYXNoZXMgPSB7fQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwg
ZXh0cmFfYXJncyk6Ci0gICAgIyBUaGlzIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBzdm4ncyBH
ZW5lcmF0ZURpZmYgYmVjYXVzZSB3ZSBtdXN0IGNvbnZlcnQKLSAgICAjIHRoZSBkaWZmIG91dHB1
dCB0byBpbmNsdWRlIGFuIHN2bi1zdHlsZSAiSW5kZXg6IiBsaW5lIGFzIHdlbGwgYXMgcmVjb3Jk
Ci0gICAgIyB0aGUgaGFzaGVzIG9mIHRoZSBiYXNlIGZpbGVzLCBzbyB3ZSBjYW4gdXBsb2FkIHRo
ZW0gYWxvbmcgd2l0aCBvdXIgZGlmZi4KLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246Ci0g
ICAgICBleHRyYV9hcmdzID0gW3NlbGYub3B0aW9ucy5yZXZpc2lvbl0gKyBleHRyYV9hcmdzCi0g
ICAgZ2l0ZGlmZiA9IFJ1blNoZWxsKFsiZ2l0IiwgImRpZmYiLCAiLS1mdWxsLWluZGV4Il0gKyBl
eHRyYV9hcmdzKQotICAgIHN2bmRpZmYgPSBbXQotICAgIGZpbGVjb3VudCA9IDAKLSAgICBmaWxl
bmFtZSA9IE5vbmUKLSAgICBmb3IgbGluZSBpbiBnaXRkaWZmLnNwbGl0bGluZXMoKToKLSAgICAg
IG1hdGNoID0gcmUubWF0Y2gociJkaWZmIC0tZ2l0IGEvKC4qKSBiLy4qJCIsIGxpbmUpCi0gICAg
ICBpZiBtYXRjaDoKLSAgICAgICAgZmlsZWNvdW50ICs9IDEKLSAgICAgICAgZmlsZW5hbWUgPSBt
YXRjaC5ncm91cCgxKQotICAgICAgICBzdm5kaWZmLmFwcGVuZCgiSW5kZXg6ICVzXG4iICUgZmls
ZW5hbWUpCi0gICAgICBlbHNlOgotICAgICAgICAjIFRoZSAiaW5kZXgiIGxpbmUgaW4gYSBnaXQg
ZGlmZiBsb29rcyBsaWtlIHRoaXMgKGxvbmcgaGFzaGVzIGVsaWRlZCk6Ci0gICAgICAgICMgICBp
bmRleCA4MmMwZDQ0Li5iMmNlZTNmIDEwMDc1NQotICAgICAgICAjIFdlIHdhbnQgdG8gc2F2ZSB0
aGUgbGVmdCBoYXNoLCBhcyB0aGF0IGlkZW50aWZpZXMgdGhlIGJhc2UgZmlsZS4KLSAgICAgICAg
bWF0Y2ggPSByZS5tYXRjaChyImluZGV4IChcdyspXC5cLiIsIGxpbmUpCi0gICAgICAgIGlmIG1h
dGNoOgotICAgICAgICAgIHNlbGYuYmFzZV9oYXNoZXNbZmlsZW5hbWVdID0gbWF0Y2guZ3JvdXAo
MSkKLSAgICAgIHN2bmRpZmYuYXBwZW5kKGxpbmUgKyAiXG4iKQotICAgIGlmIG5vdCBmaWxlY291
bnQ6Ci0gICAgICBFcnJvckV4aXQoIk5vIHZhbGlkIHBhdGNoZXMgZm91bmQgaW4gb3V0cHV0IGZy
b20gZ2l0IGRpZmYiKQotICAgIHJldHVybiAiIi5qb2luKHN2bmRpZmYpCi0KLSAgZGVmIEdldFVu
a25vd25GaWxlcyhzZWxmKToKLSAgICBzdGF0dXMgPSBSdW5TaGVsbChbImdpdCIsICJscy1maWxl
cyIsICItLWV4Y2x1ZGUtc3RhbmRhcmQiLCAiLS1vdGhlcnMiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICByZXR1cm4gc3RhdHVzLnNwbGl0bGluZXMoKQotCi0g
IGRlZiBHZXRCYXNlRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgaGFzaCA9IHNlbGYuYmFzZV9o
YXNoZXNbZmlsZW5hbWVdCi0gICAgYmFzZV9jb250ZW50ID0gTm9uZQotICAgIG5ld19jb250ZW50
ID0gTm9uZQotICAgIGlzX2JpbmFyeSA9IEZhbHNlCi0gICAgaWYgaGFzaCA9PSAiMCIgKiA0MDog
ICMgQWxsLXplcm8gaGFzaCBpbmRpY2F0ZXMgbm8gYmFzZSBmaWxlLgotICAgICAgc3RhdHVzID0g
IkEiCi0gICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgIGVsc2U6Ci0gICAgICBzdGF0dXMgPSAi
TSIKLSAgICAgIGJhc2VfY29udGVudCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVybkNv
ZGUoWyJnaXQiLCAic2hvdyIsIGhhc2hdKQotICAgICAgaWYgcmV0dXJuY29kZToKLSAgICAgICAg
RXJyb3JFeGl0KCJHb3QgZXJyb3Igc3RhdHVzIGZyb20gJ2dpdCBzaG93ICVzJyIgJSBoYXNoKQot
ICAgIHJldHVybiAoYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNfYmluYXJ5LCBzdGF0dXMp
Ci0KLQotY2xhc3MgTWVyY3VyaWFsVkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToKLSAgIiIiSW1w
bGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFjZSBmb3IgTWVy
Y3VyaWFsLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCByZXBvX2Rpcik6Ci0g
ICAgc3VwZXIoTWVyY3VyaWFsVkNTLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zKQotICAgICMgQWJz
b2x1dGUgcGF0aCB0byByZXBvc2l0b3J5ICh3ZSBjYW4gYmUgaW4gYSBzdWJkaXIpCi0gICAgc2Vs
Zi5yZXBvX2RpciA9IG9zLnBhdGgubm9ybXBhdGgocmVwb19kaXIpCi0gICAgIyBDb21wdXRlIHRo
ZSBzdWJkaXIKLSAgICBjd2QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLmdldGN3ZCgpKQotICAgIGFz
c2VydCBjd2Quc3RhcnRzd2l0aChzZWxmLnJlcG9fZGlyKQotICAgIHNlbGYuc3ViZGlyID0gY3dk
W2xlbihzZWxmLnJlcG9fZGlyKTpdLmxzdHJpcChyIlwvIikKLSAgICBpZiBzZWxmLm9wdGlvbnMu
cmV2aXNpb246Ci0gICAgICBzZWxmLmJhc2VfcmV2ID0gc2VsZi5vcHRpb25zLnJldmlzaW9uCi0g
ICAgZWxzZToKLSAgICAgIHNlbGYuYmFzZV9yZXYgPSBSdW5TaGVsbChbImhnIiwgInBhcmVudCIs
ICItcSJdKS5zcGxpdCgnOicpWzFdLnN0cmlwKCkKLQotICBkZWYgX0dldFJlbFBhdGgoc2VsZiwg
ZmlsZW5hbWUpOgotICAgICIiIkdldCByZWxhdGl2ZSBwYXRoIG9mIGEgZmlsZSBhY2NvcmRpbmcg
dG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LAotICAgIGdpdmVuIGl0cyBsb2dpY2FsIHBhdGggaW4g
dGhlIHJlcG8uIiIiCi0gICAgYXNzZXJ0IGZpbGVuYW1lLnN0YXJ0c3dpdGgoc2VsZi5zdWJkaXIp
LCBmaWxlbmFtZQotICAgIHJldHVybiBmaWxlbmFtZVtsZW4oc2VsZi5zdWJkaXIpOl0ubHN0cmlw
KHIiXC8iKQotCi0gIGRlZiBHZW5lcmF0ZURpZmYoc2VsZiwgZXh0cmFfYXJncyk6Ci0gICAgIyBJ
ZiBubyBmaWxlIHNwZWNpZmllZCwgcmVzdHJpY3QgdG8gdGhlIGN1cnJlbnQgc3ViZGlyCi0gICAg
ZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgWyIuIl0KLSAgICBjbWQgPSBbImhnIiwgImRpZmYi
LCAiLS1naXQiLCAiLXIiLCBzZWxmLmJhc2VfcmV2XSArIGV4dHJhX2FyZ3MKLSAgICBkYXRhID0g
UnVuU2hlbGwoY21kLCBzaWxlbnRfb2s9VHJ1ZSkKLSAgICBzdm5kaWZmID0gW10KLSAgICBmaWxl
Y291bnQgPSAwCi0gICAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCk6Ci0gICAgICBtID0g
cmUubWF0Y2goImRpZmYgLS1naXQgYS8oXFMrKSBiLyhcUyspIiwgbGluZSkKLSAgICAgIGlmIG06
Ci0gICAgICAgICMgTW9kaWZ5IGxpbmUgdG8gbWFrZSBpdCBsb29rIGxpa2UgYXMgaXQgY29tZXMg
ZnJvbSBzdm4gZGlmZi4KLSAgICAgICAgIyBXaXRoIHRoaXMgbW9kaWZpY2F0aW9uIG5vIGNoYW5n
ZXMgb24gdGhlIHNlcnZlciBzaWRlIGFyZSByZXF1aXJlZAotICAgICAgICAjIHRvIG1ha2UgdXBs
b2FkLnB5IHdvcmsgd2l0aCBNZXJjdXJpYWwgcmVwb3MuCi0gICAgICAgICMgTk9URTogZm9yIHBy
b3BlciBoYW5kbGluZyBvZiBtb3ZlZC9jb3BpZWQgZmlsZXMsIHdlIGhhdmUgdG8gdXNlCi0gICAg
ICAgICMgdGhlIHNlY29uZCBmaWxlbmFtZS4KLSAgICAgICAgZmlsZW5hbWUgPSBtLmdyb3VwKDIp
Ci0gICAgICAgIHN2bmRpZmYuYXBwZW5kKCJJbmRleDogJXMiICUgZmlsZW5hbWUpCi0gICAgICAg
IHN2bmRpZmYuYXBwZW5kKCI9IiAqIDY3KQotICAgICAgICBmaWxlY291bnQgKz0gMQotICAgICAg
ICBsb2dnaW5nLmluZm8obGluZSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIHN2bmRpZmYuYXBwZW5k
KGxpbmUpCi0gICAgaWYgbm90IGZpbGVjb3VudDoKLSAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQg
cGF0Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBoZyBkaWZmIikKLSAgICByZXR1cm4gIlxuIi5q
b2luKHN2bmRpZmYpICsgIlxuIgotCi0gIGRlZiBHZXRVbmtub3duRmlsZXMoc2VsZik6Ci0gICAg
IiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlcyB1bmtub3duIHRvIHRoZSBWQ1MuIiIiCi0gICAgYXJn
cyA9IFtdCi0gICAgc3RhdHVzID0gUnVuU2hlbGwoWyJoZyIsICJzdGF0dXMiLCAiLS1yZXYiLCBz
ZWxmLmJhc2VfcmV2LCAiLXUiLCAiLiJdLAotICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICB1
bmtub3duX2ZpbGVzID0gW10KLSAgICBmb3IgbGluZSBpbiBzdGF0dXMuc3BsaXRsaW5lcygpOgot
ICAgICAgc3QsIGZuID0gbGluZS5zcGxpdCgiICIsIDEpCi0gICAgICBpZiBzdCA9PSAiPyI6Ci0g
ICAgICAgIHVua25vd25fZmlsZXMuYXBwZW5kKGZuKQotICAgIHJldHVybiB1bmtub3duX2ZpbGVz
Ci0KLSAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAjICJoZyBzdGF0dXMi
IGFuZCAiaGcgY2F0IiBib3RoIHRha2UgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHN1
YmRpcgotICAgICMgcmF0aGVyIHRoYW4gdG8gdGhlIHJlcG8gcm9vdCwgYnV0ICJoZyBkaWZmIiBo
YXMgZ2l2ZW4gdXMgdGhlIGZ1bGwgcGF0aAotICAgICMgdG8gdGhlIHJlcG8gcm9vdC4KLSAgICBi
YXNlX2NvbnRlbnQgPSAiIgotICAgIG5ld19jb250ZW50ID0gTm9uZQotICAgIGlzX2JpbmFyeSA9
IEZhbHNlCi0gICAgb2xkcmVscGF0aCA9IHJlbHBhdGggPSBzZWxmLl9HZXRSZWxQYXRoKGZpbGVu
YW1lKQotICAgICMgImhnIHN0YXR1cyAtQyIgcmV0dXJucyB0d28gbGluZXMgZm9yIG1vdmVkL2Nv
cGllZCBmaWxlcywgb25lIG90aGVyd2lzZQotICAgIG91dCA9IFJ1blNoZWxsKFsiaGciLCAic3Rh
dHVzIiwgIi1DIiwgIi0tcmV2Iiwgc2VsZi5iYXNlX3JldiwgcmVscGF0aF0pCi0gICAgb3V0ID0g
b3V0LnNwbGl0bGluZXMoKQotICAgICMgSEFDSzogc3RyaXAgZXJyb3IgbWVzc2FnZSBhYm91dCBt
aXNzaW5nIGZpbGUvZGlyZWN0b3J5IGlmIGl0IGlzbid0IGluCi0gICAgIyB0aGUgd29ya2luZyBj
b3B5Ci0gICAgaWYgb3V0WzBdLnN0YXJ0c3dpdGgoJyVzOiAnICUgcmVscGF0aCk6Ci0gICAgICBv
dXQgPSBvdXRbMTpdCi0gICAgaWYgbGVuKG91dCkgPiAxOgotICAgICAgIyBNb3ZlZC9jb3BpZWQg
PT4gY29uc2lkZXJlZCBhcyBtb2RpZmllZCwgdXNlIG9sZCBmaWxlbmFtZSB0bwotICAgICAgIyBy
ZXRyaWV2ZSBiYXNlIGNvbnRlbnRzCi0gICAgICBvbGRyZWxwYXRoID0gb3V0WzFdLnN0cmlwKCkK
LSAgICAgIHN0YXR1cyA9ICJNIgotICAgIGVsc2U6Ci0gICAgICBzdGF0dXMsIF8gPSBvdXRbMF0u
c3BsaXQoJyAnLCAxKQotICAgIGlmIHN0YXR1cyAhPSAiQSI6Ci0gICAgICBiYXNlX2NvbnRlbnQg
PSBSdW5TaGVsbChbImhnIiwgImNhdCIsICItciIsIHNlbGYuYmFzZV9yZXYsIG9sZHJlbHBhdGhd
LAotICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICAgIGlzX2JpbmFyeSA9ICJcMCIgaW4gYmFz
ZV9jb250ZW50ICAjIE1lcmN1cmlhbCdzIGhldXJpc3RpYwotICAgIGlmIHN0YXR1cyAhPSAiUiI6
Ci0gICAgICBuZXdfY29udGVudCA9IG9wZW4ocmVscGF0aCwgInJiIikucmVhZCgpCi0gICAgICBp
c19iaW5hcnkgPSBpc19iaW5hcnkgb3IgIlwwIiBpbiBuZXdfY29udGVudAotICAgIGlmIGlzX2Jp
bmFyeSBhbmQgYmFzZV9jb250ZW50OgotICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRob3V0IGNvbnZl
cnRpbmcgbmV3bGluZXMKLSAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsiaGciLCAiY2F0
IiwgIi1yIiwgc2VsZi5iYXNlX3Jldiwgb2xkcmVscGF0aF0sCi0gICAgICAgIHNpbGVudF9vaz1U
cnVlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UpCi0gICAgaWYgbm90IGlzX2JpbmFyeSBvciBu
b3Qgc2VsZi5Jc0ltYWdlKHJlbHBhdGgpOgotICAgICAgbmV3X2NvbnRlbnQgPSBOb25lCi0gICAg
cmV0dXJuIGJhc2VfY29udGVudCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzCi0KLQot
IyBOT1RFOiBUaGUgU3BsaXRQYXRjaCBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGluIGVuZ2luZS5w
eSwga2VlcCB0aGVtIGluIHN5bmMuCi1kZWYgU3BsaXRQYXRjaChkYXRhKToKLSAgIiIiU3BsaXRz
IGEgcGF0Y2ggaW50byBzZXBhcmF0ZSBwaWVjZXMgZm9yIGVhY2ggZmlsZS4KLQotICBBcmdzOgot
ICAgIGRhdGE6IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZiBzdm4gZGlmZi4KLQot
ICBSZXR1cm5zOgotICAgIEEgbGlzdCBvZiAyLXR1cGxlIChmaWxlbmFtZSwgdGV4dCkgd2hlcmUg
dGV4dCBpcyB0aGUgc3ZuIGRpZmYgb3V0cHV0Ci0gICAgICBwZXJ0YWluaW5nIHRvIGZpbGVuYW1l
LgotICAiIiIKLSAgcGF0Y2hlcyA9IFtdCi0gIGZpbGVuYW1lID0gTm9uZQotICBkaWZmID0gW10K
LSAgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKFRydWUpOgotICAgIG5ld19maWxlbmFtZSA9
IE5vbmUKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0luZGV4OicpOgotICAgICAgdW51c2VkLCBu
ZXdfZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6JywgMSkKLSAgICAgIG5ld19maWxlbmFtZSA9IG5l
d19maWxlbmFtZS5zdHJpcCgpCi0gICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1Byb3BlcnR5IGNo
YW5nZXMgb246Jyk6Ci0gICAgICB1bnVzZWQsIHRlbXBfZmlsZW5hbWUgPSBsaW5lLnNwbGl0KCc6
JywgMSkKLSAgICAgICMgV2hlbiBhIGZpbGUgaXMgbW9kaWZpZWQsIHBhdGhzIHVzZSAnLycgYmV0
d2VlbiBkaXJlY3RvcmllcywgaG93ZXZlcgotICAgICAgIyB3aGVuIGEgcHJvcGVydHkgaXMgbW9k
aWZpZWQgJ1wnIGlzIHVzZWQgb24gV2luZG93cy4gIE1ha2UgdGhlbSB0aGUgc2FtZQotICAgICAg
IyBvdGhlcndpc2UgdGhlIGZpbGUgc2hvd3MgdXAgdHdpY2UuCi0gICAgICB0ZW1wX2ZpbGVuYW1l
ID0gdGVtcF9maWxlbmFtZS5zdHJpcCgpLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgaWYgdGVt
cF9maWxlbmFtZSAhPSBmaWxlbmFtZToKLSAgICAgICAgIyBGaWxlIGhhcyBwcm9wZXJ0eSBjaGFu
Z2VzIGJ1dCBubyBtb2RpZmljYXRpb25zLCBjcmVhdGUgYSBuZXcgZGlmZi4KLSAgICAgICAgbmV3
X2ZpbGVuYW1lID0gdGVtcF9maWxlbmFtZQotICAgIGlmIG5ld19maWxlbmFtZToKLSAgICAgIGlm
IGZpbGVuYW1lIGFuZCBkaWZmOgotICAgICAgICBwYXRjaGVzLmFwcGVuZCgoZmlsZW5hbWUsICcn
LmpvaW4oZGlmZikpKQotICAgICAgZmlsZW5hbWUgPSBuZXdfZmlsZW5hbWUKLSAgICAgIGRpZmYg
PSBbbGluZV0KLSAgICAgIGNvbnRpbnVlCi0gICAgaWYgZGlmZiBpcyBub3QgTm9uZToKLSAgICAg
IGRpZmYuYXBwZW5kKGxpbmUpCi0gIGlmIGZpbGVuYW1lIGFuZCBkaWZmOgotICAgIHBhdGNoZXMu
YXBwZW5kKChmaWxlbmFtZSwgJycuam9pbihkaWZmKSkpCi0gIHJldHVybiBwYXRjaGVzCi0KLQot
ZGVmIFVwbG9hZFNlcGFyYXRlUGF0Y2hlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hzZXQsIGRh
dGEsIG9wdGlvbnMpOgotICAiIiJVcGxvYWRzIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIGVhY2ggZmls
ZSBpbiB0aGUgZGlmZiBvdXRwdXQuCi0KLSAgUmV0dXJucyBhIGxpc3Qgb2YgW3BhdGNoX2tleSwg
ZmlsZW5hbWVdIGZvciBlYWNoIGZpbGUuCi0gICIiIgotICBwYXRjaGVzID0gU3BsaXRQYXRjaChk
YXRhKQotICBydiA9IFtdCi0gIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgIGlmIGxlbihwYXRj
aFsxXSkgPiBNQVhfVVBMT0FEX1NJWkU6Ci0gICAgICBwcmludCAoIk5vdCB1cGxvYWRpbmcgdGhl
IHBhdGNoIGZvciAiICsgcGF0Y2hbMF0gKwotICAgICAgICAgICAgICIgYmVjYXVzZSB0aGUgZmls
ZSBpcyB0b28gbGFyZ2UuIikKLSAgICAgIGNvbnRpbnVlCi0gICAgZm9ybV9maWVsZHMgPSBbKCJm
aWxlbmFtZSIsIHBhdGNoWzBdKV0KLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgot
ICAgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiY29udGVudF91cGxvYWQiLCAiMSIpKQotICAgIGZp
bGVzID0gWygiZGF0YSIsICJkYXRhLmRpZmYiLCBwYXRjaFsxXSldCi0gICAgY3R5cGUsIGJvZHkg
PSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3JtX2ZpZWxkcywgZmlsZXMpCi0gICAgdXJsID0g
Ii8lZC91cGxvYWRfcGF0Y2gvJWQiICUgKGludChpc3N1ZSksIGludChwYXRjaHNldCkpCi0gICAg
cHJpbnQgIlVwbG9hZGluZyBwYXRjaCBmb3IgIiArIHBhdGNoWzBdCi0gICAgcmVzcG9uc2VfYm9k
eSA9IHJwY19zZXJ2ZXIuU2VuZCh1cmwsIGJvZHksIGNvbnRlbnRfdHlwZT1jdHlwZSkKLSAgICBs
aW5lcyA9IHJlc3BvbnNlX2JvZHkuc3BsaXRsaW5lcygpCi0gICAgaWYgbm90IGxpbmVzIG9yIGxp
bmVzWzBdICE9ICJPSyI6Ci0gICAgICBTdGF0dXNVcGRhdGUoIiAgLS0+ICVzIiAlIHJlc3BvbnNl
X2JvZHkpCi0gICAgICBzeXMuZXhpdCgxKQotICAgIHJ2LmFwcGVuZChbbGluZXNbMV0sIHBhdGNo
WzBdXSkKLSAgcmV0dXJuIHJ2Ci0KLQotZGVmIEd1ZXNzVkNTKG9wdGlvbnMpOgotICAiIiJIZWxw
ZXIgdG8gZ3Vlc3MgdGhlIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uCi0KLSAgVGhpcyBleGFtaW5l
cyB0aGUgY3VycmVudCBkaXJlY3RvcnksIGd1ZXNzZXMgd2hpY2ggVmVyc2lvbkNvbnRyb2xTeXN0
ZW0KLSAgd2UncmUgdXNpbmcsIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3By
aWF0ZSBjbGFzcy4gIEV4aXQgd2l0aCBhbgotICBlcnJvciBpZiB3ZSBjYW4ndCBmaWd1cmUgaXQg
b3V0LgotCi0gIFJldHVybnM6Ci0gICAgQSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbnN0YW5jZS4g
RXhpdHMgaWYgdGhlIFZDUyBjYW4ndCBiZSBndWVzc2VkLgotICAiIiIKLSAgIyBNZXJjdXJpYWwg
aGFzIGEgY29tbWFuZCB0byBnZXQgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIGEgcmVwb3NpdG9yeQot
ICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhhdmUgaGcgaW5z
dGFsbGVkLgotICAjIE5PVEU6IHdlIHRyeSBNZXJjdXJpYWwgZmlyc3QgYXMgaXQgY2FuIHNpdCBv
biB0b3Agb2YgYW4gU1ZOIHdvcmtpbmcgY29weS4KLSAgdHJ5OgotICAgIG91dCwgcmV0dXJuY29k
ZSA9IFJ1blNoZWxsV2l0aFJldHVybkNvZGUoWyJoZyIsICJyb290Il0pCi0gICAgaWYgcmV0dXJu
Y29kZSA9PSAwOgotICAgICAgcmV0dXJuIE1lcmN1cmlhbFZDUyhvcHRpb25zLCBvdXQuc3RyaXAo
KSkKLSAgZXhjZXB0IE9TRXJyb3IsIChlcnJubywgbWVzc2FnZSk6Ci0gICAgaWYgZXJybm8gIT0g
MjogICMgRU5PRU5UIC0tIHRoZXkgZG9uJ3QgaGF2ZSBoZyBpbnN0YWxsZWQuCi0gICAgICByYWlz
ZQotCi0gICMgU3VidmVyc2lvbiBoYXMgYSAuc3ZuIGluIGFsbCB3b3JraW5nIGRpcmVjdG9yaWVz
LgotICBpZiBvcy5wYXRoLmlzZGlyKCcuc3ZuJyk6Ci0gICAgbG9nZ2luZy5pbmZvKCJHdWVzc2Vk
IFZDUyA9IFN1YnZlcnNpb24iKQotICAgIHJldHVybiBTdWJ2ZXJzaW9uVkNTKG9wdGlvbnMpCi0K
LSAgIyBHaXQgaGFzIGEgY29tbWFuZCB0byB0ZXN0IGlmIHlvdSdyZSBpbiBhIGdpdCB0cmVlLgot
ICAjIFRyeSBydW5uaW5nIGl0LCBidXQgZG9uJ3QgZGllIGlmIHdlIGRvbid0IGhhdmUgZ2l0IGlu
c3RhbGxlZC4KLSAgdHJ5OgotICAgIG91dCwgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0aFJldHVy
bkNvZGUoWyJnaXQiLCAicmV2LXBhcnNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLS1pcy1pbnNpZGUtd29yay10cmVlIl0pCi0gICAgaWYgcmV0dXJu
Y29kZSA9PSAwOgotICAgICAgcmV0dXJuIEdpdFZDUyhvcHRpb25zKQotICBleGNlcHQgT1NFcnJv
ciwgKGVycm5vLCBtZXNzYWdlKToKLSAgICBpZiBlcnJubyAhPSAyOiAgIyBFTk9FTlQgLS0gdGhl
eSBkb24ndCBoYXZlIGdpdCBpbnN0YWxsZWQuCi0gICAgICByYWlzZQotCi0gIEVycm9yRXhpdCgo
IkNvdWxkIG5vdCBndWVzcyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLiAiCi0gICAgICAgICAgICAg
IkFyZSB5b3UgaW4gYSB3b3JraW5nIGNvcHkgZGlyZWN0b3J5PyIpKQotCi0KLWRlZiBSZWFsTWFp
bihhcmd2LCBkYXRhPU5vbmUpOgotICAiIiJUaGUgcmVhbCBtYWluIGZ1bmN0aW9uLgotCi0gIEFy
Z3M6Ci0gICAgYXJndjogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KLSAgICBkYXRhOiBEaWZmIGNv
bnRlbnRzLiBJZiBOb25lIChkZWZhdWx0KSB0aGUgZGlmZiBpcyBnZW5lcmF0ZWQgYnkKLSAgICAg
IHRoZSBWZXJzaW9uQ29udHJvbFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBieSBHdWVz
c1ZDUygpLgotCi0gIFJldHVybnM6Ci0gICAgQSAyLXR1cGxlIChpc3N1ZSBpZCwgcGF0Y2hzZXQg
aWQpLgotICAgIFRoZSBwYXRjaHNldCBpZCBpcyBOb25lIGlmIHRoZSBiYXNlIGZpbGVzIGFyZSBu
b3QgdXBsb2FkZWQgYnkgdGhpcwotICAgIHNjcmlwdCAoYXBwbGllcyBvbmx5IHRvIFNWTiBjaGVj
a291dHMpLgotICAiIiIKLSAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9KCIlKGFzY3RpbWUp
LjE5cyAlKGxldmVsbmFtZSlzICUoZmlsZW5hbWUpczoiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJShsaW5lbm8pcyAlKG1lc3NhZ2UpcyAiKSkKLSAgb3MuZW52aXJvblsnTENfQUxM
J10gPSAnQycKLSAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQot
ICBnbG9iYWwgdmVyYm9zaXR5Ci0gIHZlcmJvc2l0eSA9IG9wdGlvbnMudmVyYm9zZQotICBpZiB2
ZXJib3NpdHkgPj0gMzoKLSAgICBsb2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcu
REVCVUcpCi0gIGVsaWYgdmVyYm9zaXR5ID49IDI6Ci0gICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5z
ZXRMZXZlbChsb2dnaW5nLklORk8pCi0gIHZjcyA9IEd1ZXNzVkNTKG9wdGlvbnMpCi0gIGlmIGlz
aW5zdGFuY2UodmNzLCBTdWJ2ZXJzaW9uVkNTKToKLSAgICAjIGJhc2UgZmllbGQgaXMgb25seSBh
bGxvd2VkIGZvciBTdWJ2ZXJzaW9uLgotICAgICMgTm90ZTogRmV0Y2hpbmcgYmFzZSBmaWxlcyBt
YXkgYmVjb21lIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgotICAgIGJhc2UgPSB2Y3Mu
R3Vlc3NCYXNlKG9wdGlvbnMuZG93bmxvYWRfYmFzZSkKLSAgZWxzZToKLSAgICBiYXNlID0gTm9u
ZQotICBpZiBub3QgYmFzZSBhbmQgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgIG9wdGlvbnMu
ZG93bmxvYWRfYmFzZSA9IFRydWUKLSAgICBsb2dnaW5nLmluZm8oIkVuYWJsZWQgdXBsb2FkIG9m
IGJhc2UgZmlsZSIpCi0gIGlmIG5vdCBvcHRpb25zLmFzc3VtZV95ZXM6Ci0gICAgdmNzLkNoZWNr
Rm9yVW5rbm93bkZpbGVzKCkKLSAgaWYgZGF0YSBpcyBOb25lOgotICAgIGRhdGEgPSB2Y3MuR2Vu
ZXJhdGVEaWZmKGFyZ3MpCi0gIGZpbGVzID0gdmNzLkdldEJhc2VGaWxlcyhkYXRhKQotICBpZiB2
ZXJib3NpdHkgPj0gMToKLSAgICBwcmludCAiVXBsb2FkIHNlcnZlcjoiLCBvcHRpb25zLnNlcnZl
ciwgIihjaGFuZ2Ugd2l0aCAtcy8tLXNlcnZlcikiCi0gIGlmIG9wdGlvbnMuaXNzdWU6Ci0gICAg
cHJvbXB0ID0gIk1lc3NhZ2UgZGVzY3JpYmluZyB0aGlzIHBhdGNoIHNldDogIgotICBlbHNlOgot
ICAgIHByb21wdCA9ICJOZXcgaXNzdWUgc3ViamVjdDogIgotICBtZXNzYWdlID0gb3B0aW9ucy5t
ZXNzYWdlIG9yIHJhd19pbnB1dChwcm9tcHQpLnN0cmlwKCkKLSAgaWYgbm90IG1lc3NhZ2U6Ci0g
ICAgRXJyb3JFeGl0KCJBIG5vbi1lbXB0eSBtZXNzYWdlIGlzIHJlcXVpcmVkIikKLSAgcnBjX3Nl
cnZlciA9IEdldFJwY1NlcnZlcihvcHRpb25zKQotICBmb3JtX2ZpZWxkcyA9IFsoInN1YmplY3Qi
LCBtZXNzYWdlKV0KLSAgaWYgYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJiYXNlIiwg
YmFzZSkpCi0gIGlmIG9wdGlvbnMuaXNzdWU6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiaXNz
dWUiLCBzdHIob3B0aW9ucy5pc3N1ZSkpKQotICBpZiBvcHRpb25zLmVtYWlsOgotICAgIGZvcm1f
ZmllbGRzLmFwcGVuZCgoInVzZXIiLCBvcHRpb25zLmVtYWlsKSkKLSAgaWYgb3B0aW9ucy5yZXZp
ZXdlcnM6Ci0gICAgZm9yIHJldmlld2VyIGluIG9wdGlvbnMucmV2aWV3ZXJzLnNwbGl0KCcsJyk6
Ci0gICAgICBpZiAiQCIgaW4gcmV2aWV3ZXIgYW5kIG5vdCByZXZpZXdlci5zcGxpdCgiQCIpWzFd
LmNvdW50KCIuIikgPT0gMToKLSAgICAgICAgRXJyb3JFeGl0KCJJbnZhbGlkIGVtYWlsIGFkZHJl
c3M6ICVzIiAlIHJldmlld2VyKQotICAgIGZvcm1fZmllbGRzLmFwcGVuZCgoInJldmlld2VycyIs
IG9wdGlvbnMucmV2aWV3ZXJzKSkKLSAgaWYgb3B0aW9ucy5jYzoKLSAgICBmb3IgY2MgaW4gb3B0
aW9ucy5jYy5zcGxpdCgnLCcpOgotICAgICAgaWYgIkAiIGluIGNjIGFuZCBub3QgY2Muc3BsaXQo
IkAiKVsxXS5jb3VudCgiLiIpID09IDE6Ci0gICAgICAgIEVycm9yRXhpdCgiSW52YWxpZCBlbWFp
bCBhZGRyZXNzOiAlcyIgJSBjYykKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjYyIsIG9wdGlv
bnMuY2MpKQotICBkZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb24KLSAgaWYgb3B0aW9u
cy5kZXNjcmlwdGlvbl9maWxlOgotICAgIGlmIG9wdGlvbnMuZGVzY3JpcHRpb246Ci0gICAgICBF
cnJvckV4aXQoIkNhbid0IHNwZWNpZnkgZGVzY3JpcHRpb24gYW5kIGRlc2NyaXB0aW9uX2ZpbGUi
KQotICAgIGZpbGUgPSBvcGVuKG9wdGlvbnMuZGVzY3JpcHRpb25fZmlsZSwgJ3InKQotICAgIGRl
c2NyaXB0aW9uID0gZmlsZS5yZWFkKCkKLSAgICBmaWxlLmNsb3NlKCkKLSAgaWYgZGVzY3JpcHRp
b246Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgiZGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbikp
Ci0gICMgU2VuZCBhIGhhc2ggb2YgYWxsIHRoZSBiYXNlIGZpbGUgc28gdGhlIHNlcnZlciBjYW4g
ZGV0ZXJtaW5lIGlmIGEgY29weQotICAjIGFscmVhZHkgZXhpc3RzIGluIGFuIGVhcmxpZXIgcGF0
Y2hzZXQuCi0gIGJhc2VfaGFzaGVzID0gIiIKLSAgZm9yIGZpbGUsIGluZm8gaW4gZmlsZXMuaXRl
cml0ZW1zKCk6Ci0gICAgaWYgbm90IGluZm9bMF0gaXMgTm9uZToKLSAgICAgIGNoZWNrc3VtID0g
bWQ1Lm5ldyhpbmZvWzBdKS5oZXhkaWdlc3QoKQotICAgICAgaWYgYmFzZV9oYXNoZXM6Ci0gICAg
ICAgIGJhc2VfaGFzaGVzICs9ICJ8IgotICAgICAgYmFzZV9oYXNoZXMgKz0gY2hlY2tzdW0gKyAi
OiIgKyBmaWxlCi0gIGZvcm1fZmllbGRzLmFwcGVuZCgoImJhc2VfaGFzaGVzIiwgYmFzZV9oYXNo
ZXMpKQotICAjIElmIHdlJ3JlIHVwbG9hZGluZyBiYXNlIGZpbGVzLCBkb24ndCBzZW5kIHRoZSBl
bWFpbCBiZWZvcmUgdGhlIHVwbG9hZHMsIHNvCi0gICMgdGhhdCBpdCBjb250YWlucyB0aGUgZmls
ZSBzdGF0dXMuCi0gIGlmIG9wdGlvbnMuc2VuZF9tYWlsIGFuZCBvcHRpb25zLmRvd25sb2FkX2Jh
c2U6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgic2VuZF9tYWlsIiwgIjEiKSkKLSAgaWYgbm90
IG9wdGlvbnMuZG93bmxvYWRfYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjb250ZW50
X3VwbG9hZCIsICIxIikpCi0gIGlmIGxlbihkYXRhKSA+IE1BWF9VUExPQURfU0laRToKLSAgICBw
cmludCAiUGF0Y2ggaXMgbGFyZ2UsIHNvIHVwbG9hZGluZyBmaWxlIHBhdGNoZXMgc2VwYXJhdGVs
eS4iCi0gICAgdXBsb2FkZWRfZGlmZl9maWxlID0gW10KLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQo
KCJzZXBhcmF0ZV9wYXRjaGVzIiwgIjEiKSkKLSAgZWxzZToKLSAgICB1cGxvYWRlZF9kaWZmX2Zp
bGUgPSBbKCJkYXRhIiwgImRhdGEuZGlmZiIsIGRhdGEpXQotICBjdHlwZSwgYm9keSA9IEVuY29k
ZU11bHRpcGFydEZvcm1EYXRhKGZvcm1fZmllbGRzLCB1cGxvYWRlZF9kaWZmX2ZpbGUpCi0gIHJl
c3BvbnNlX2JvZHkgPSBycGNfc2VydmVyLlNlbmQoIi91cGxvYWQiLCBib2R5LCBjb250ZW50X3R5
cGU9Y3R5cGUpCi0gIHBhdGNoc2V0ID0gTm9uZQotICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9i
YXNlIG9yIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgbGluZXMgPSByZXNwb25zZV9ib2R5
LnNwbGl0bGluZXMoKQotICAgIGlmIGxlbihsaW5lcykgPj0gMjoKLSAgICAgIG1zZyA9IGxpbmVz
WzBdCi0gICAgICBwYXRjaHNldCA9IGxpbmVzWzFdLnN0cmlwKCkKLSAgICAgIHBhdGNoZXMgPSBb
eC5zcGxpdCgiICIsIDEpIGZvciB4IGluIGxpbmVzWzI6XV0KLSAgICBlbHNlOgotICAgICAgbXNn
ID0gcmVzcG9uc2VfYm9keQotICBlbHNlOgotICAgIG1zZyA9IHJlc3BvbnNlX2JvZHkKLSAgU3Rh
dHVzVXBkYXRlKG1zZykKLSAgaWYgbm90IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0aCgiSXNzdWUg
Y3JlYXRlZC4iKSBhbmQgXAotICBub3QgcmVzcG9uc2VfYm9keS5zdGFydHN3aXRoKCJJc3N1ZSB1
cGRhdGVkLiIpOgotICAgIHN5cy5leGl0KDApCi0gIGlzc3VlID0gbXNnW21zZy5yZmluZCgiLyIp
KzE6XQotCi0gIGlmIG5vdCB1cGxvYWRlZF9kaWZmX2ZpbGU6Ci0gICAgcmVzdWx0ID0gVXBsb2Fk
U2VwYXJhdGVQYXRjaGVzKGlzc3VlLCBycGNfc2VydmVyLCBwYXRjaHNldCwgZGF0YSwgb3B0aW9u
cykKLSAgICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgICAgcGF0Y2hlcyA9IHJl
c3VsdAotCi0gIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2U6Ci0gICAgdmNzLlVwbG9hZEJh
c2VGaWxlcyhpc3N1ZSwgcnBjX3NlcnZlciwgcGF0Y2hlcywgcGF0Y2hzZXQsIG9wdGlvbnMsIGZp
bGVzKQotICAgIGlmIG9wdGlvbnMuc2VuZF9tYWlsOgotICAgICAgcnBjX3NlcnZlci5TZW5kKCIv
IiArIGlzc3VlICsgIi9tYWlsIiwgcGF5bG9hZD0iIikKLSAgcmV0dXJuIGlzc3VlLCBwYXRjaHNl
dAotCi0KLWRlZiBtYWluKCk6Ci0gIHRyeToKLSAgICBSZWFsTWFpbihzeXMuYXJndikKLSAgZXhj
ZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgIHByaW50Ci0gICAgU3RhdHVzVXBkYXRlKCJJbnRl
cnJ1cHRlZC4iKQotICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKLSAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zY3JpcHRzL3VwbG9hZF9nbW9j
ay5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3NjcmlwdHMvdXBsb2FkX2dtb2NrLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCA1ZGM0ODRiMzkxMmIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zY3JpcHRzL3VwbG9hZF9nbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiInVwbG9h
ZF9nbW9jay5weSB2MC4xLjAgLS0gdXBsb2FkcyBhIEdvb2dsZSBNb2NrIHBhdGNoIGZvciByZXZp
ZXcuCi0KLVRoaXMgc2ltcGxlIHdyYXBwZXIgcGFzc2VzIGFsbCBjb21tYW5kIGxpbmUgZmxhZ3Mg
YW5kCi0tLWNjPWdvb2dsZW1vY2tAZ29vZ2xlZ3JvdXBzLmNvbSB0byB1cGxvYWQucHkuCi0KLVVT
QUdFOiB1cGxvYWRfZ21vY2sucHkgW29wdGlvbnMgZm9yIHVwbG9hZC5weV0KLSIiIgotCi1fX2F1
dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWlt
cG9ydCBzeXMKLQotQ0NfRkxBRyA9ICctLWNjPScKLUdNT0NLX0dST1VQID0gJ2dvb2dsZW1vY2tA
Z29vZ2xlZ3JvdXBzLmNvbScKLQotCi1kZWYgbWFpbigpOgotICAjIEZpbmRzIHRoZSBwYXRoIHRv
IHVwbG9hZC5weSwgYXNzdW1pbmcgaXQgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Ci0gICMgYXMg
dGhpcyBmaWxlLgotICBteV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9f
ZmlsZV9fKSkKLSAgdXBsb2FkX3B5X3BhdGggPSBvcy5wYXRoLmpvaW4obXlfZGlyLCAndXBsb2Fk
LnB5JykKLQotICAjIEFkZHMgR29vZ2xlIE1vY2sgZGlzY3Vzc2lvbiBncm91cCB0byB0aGUgY2Mg
bGluZSBpZiBpdCdzIG5vdCB0aGVyZQotICAjIGFscmVhZHkuCi0gIHVwbG9hZF9weV9hcmd2ID0g
W3VwbG9hZF9weV9wYXRoXQotICBmb3VuZF9jY19mbGFnID0gRmFsc2UKLSAgZm9yIGFyZyBpbiBz
eXMuYXJndlsxOl06Ci0gICAgaWYgYXJnLnN0YXJ0c3dpdGgoQ0NfRkxBRyk6Ci0gICAgICBmb3Vu
ZF9jY19mbGFnID0gVHJ1ZQotICAgICAgY2NfbGluZSA9IGFyZ1tsZW4oQ0NfRkxBRyk6XQotICAg
ICAgY2NfbGlzdCA9IFthZGRyIGZvciBhZGRyIGluIGNjX2xpbmUuc3BsaXQoJywnKSBpZiBhZGRy
XQotICAgICAgaWYgR01PQ0tfR1JPVVAgbm90IGluIGNjX2xpc3Q6Ci0gICAgICAgIGNjX2xpc3Qu
YXBwZW5kKEdNT0NLX0dST1VQKQotICAgICAgdXBsb2FkX3B5X2FyZ3YuYXBwZW5kKENDX0ZMQUcg
KyAnLCcuam9pbihjY19saXN0KSkKLSAgICBlbHNlOgotICAgICAgdXBsb2FkX3B5X2FyZ3YuYXBw
ZW5kKGFyZykKLQotICBpZiBub3QgZm91bmRfY2NfZmxhZzoKLSAgICB1cGxvYWRfcHlfYXJndi5h
cHBlbmQoQ0NfRkxBRyArIEdNT0NLX0dST1VQKQotCi0gICMgSW52b2tlcyB1cGxvYWQucHkgd2l0
aCB0aGUgbW9kaWZpZWQgY29tbWFuZCBsaW5lIGZsYWdzLgotICBvcy5leGVjdih1cGxvYWRfcHlf
cGF0aCwgdXBsb2FkX3B5X2FyZ3YpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAg
bWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stYWxsLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svc3JjL2dtb2NrLWFsbC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Fl
YmNlN2FmZWZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLWFsbC5j
YworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pCi0vLwotLy8gR29vZ2xlIEMrKyBNb2NraW5nIEZyYW1ld29yayAoR29vZ2xlIE1v
Y2spCi0vLwotLy8gVGhpcyBmaWxlICNpbmNsdWRlcyBhbGwgR29vZ2xlIE1vY2sgaW1wbGVtZW50
YXRpb24gLmNjIGZpbGVzLiAgVGhlCi0vLyBwdXJwb3NlIGlzIHRvIGFsbG93IGEgdXNlciB0byBi
dWlsZCBHb29nbGUgTW9jayBieSBjb21waWxpbmcgdGhpcwotLy8gZmlsZSBhbG9uZS4KLQotLy8g
VGhpcyBsaW5lIGVuc3VyZXMgdGhhdCBnbW9jay5oIGNhbiBiZSBjb21waWxlZCBvbiBpdHMgb3du
LCBldmVuCi0vLyB3aGVuIGl0J3MgZnVzZWQuCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQot
Ly8gVGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGdtb2NrICouY2MgZmlsZXMu
Ci0jaW5jbHVkZSAic3JjL2dtb2NrLWNhcmRpbmFsaXRpZXMuY2MiCi0jaW5jbHVkZSAic3JjL2dt
b2NrLWludGVybmFsLXV0aWxzLmNjIgotI2luY2x1ZGUgInNyYy9nbW9jay1tYXRjaGVycy5jYyIK
LSNpbmNsdWRlICJzcmMvZ21vY2stc3BlYy1idWlsZGVycy5jYyIKLSNpbmNsdWRlICJzcmMvZ21v
Y2suY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stY2FyZGluYWxpdGllcy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1jYXJkaW5hbGl0aWVzLmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzMzViOTY2ZTgwMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay9zcmMvZ21vY2stY2FyZGluYWxpdGllcy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1NiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9j
ayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhp
cyBmaWxlIGltcGxlbWVudHMgY2FyZGluYWxpdGllcy4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LWNhcmRpbmFsaXRpZXMuaCIKLQotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPG9zdHJl
YW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNp
bmNsdWRlICJnbW9jay9pbnRlcm5hbC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotbmFtZXNwYWNlIHsKLQot
Ly8gSW1wbGVtZW50cyB0aGUgQmV0d2VlbihtLCBuKSBjYXJkaW5hbGl0eS4KLWNsYXNzIEJldHdl
ZW5DYXJkaW5hbGl0eUltcGwgOiBwdWJsaWMgQ2FyZGluYWxpdHlJbnRlcmZhY2UgewotIHB1Ymxp
YzoKLSAgQmV0d2VlbkNhcmRpbmFsaXR5SW1wbChpbnQgbWluLCBpbnQgbWF4KQotICAgICAgOiBt
aW5fKG1pbiA+PSAwID8gbWluIDogMCksCi0gICAgICAgIG1heF8obWF4ID49IG1pbl8gPyBtYXgg
OiBtaW5fKSB7Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgaWYgKG1pbiA8IDApIHsK
LSAgICAgIHNzIDw8ICJUaGUgaW52b2NhdGlvbiBsb3dlciBib3VuZCBtdXN0IGJlID49IDAsICIK
LSAgICAgICAgIDw8ICJidXQgaXMgYWN0dWFsbHkgIiA8PCBtaW4gPDwgIi4iOwotICAgICAgaW50
ZXJuYWw6OkV4cGVjdChmYWxzZSwgX19GSUxFX18sIF9fTElORV9fLCBzcy5zdHIoKSk7Ci0gICAg
fSBlbHNlIGlmIChtYXggPCAwKSB7Ci0gICAgICBzcyA8PCAiVGhlIGludm9jYXRpb24gdXBwZXIg
Ym91bmQgbXVzdCBiZSA+PSAwLCAiCi0gICAgICAgICA8PCAiYnV0IGlzIGFjdHVhbGx5ICIgPDwg
bWF4IDw8ICIuIjsKLSAgICAgIGludGVybmFsOjpFeHBlY3QoZmFsc2UsIF9fRklMRV9fLCBfX0xJ
TkVfXywgc3Muc3RyKCkpOwotICAgIH0gZWxzZSBpZiAobWluID4gbWF4KSB7Ci0gICAgICBzcyA8
PCAiVGhlIGludm9jYXRpb24gdXBwZXIgYm91bmQgKCIgPDwgbWF4Ci0gICAgICAgICA8PCAiKSBt
dXN0IGJlID49IHRoZSBpbnZvY2F0aW9uIGxvd2VyIGJvdW5kICgiIDw8IG1pbgotICAgICAgICAg
PDwgIikuIjsKLSAgICAgIGludGVybmFsOjpFeHBlY3QoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVf
Xywgc3Muc3RyKCkpOwotICAgIH0KLSAgfQotCi0gIC8vIENvbnNlcnZhdGl2ZSBlc3RpbWF0ZSBv
biB0aGUgbG93ZXIvdXBwZXIgYm91bmQgb2YgdGhlIG51bWJlciBvZgotICAvLyBjYWxscyBhbGxv
d2VkLgotICB2aXJ0dWFsIGludCBDb25zZXJ2YXRpdmVMb3dlckJvdW5kKCkgY29uc3QgeyByZXR1
cm4gbWluXzsgfQotICB2aXJ0dWFsIGludCBDb25zZXJ2YXRpdmVVcHBlckJvdW5kKCkgY29uc3Qg
eyByZXR1cm4gbWF4XzsgfQotCi0gIHZpcnR1YWwgYm9vbCBJc1NhdGlzZmllZEJ5Q2FsbENvdW50
KGludCBjYWxsX2NvdW50KSBjb25zdCB7Ci0gICAgcmV0dXJuIG1pbl8gPD0gY2FsbF9jb3VudCAm
JiBjYWxsX2NvdW50IDw9IG1heF87Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgSXNTYXR1cmF0ZWRC
eUNhbGxDb3VudChpbnQgY2FsbF9jb3VudCkgY29uc3QgewotICAgIHJldHVybiBjYWxsX2NvdW50
ID49IG1heF87Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVUbyg6OnN0ZDo6b3N0cmVh
bSogb3MpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAgY29uc3QgaW50IG1pbl87Ci0gIGNvbnN0IGlu
dCBtYXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQmV0d2VlbkNhcmRp
bmFsaXR5SW1wbCk7Ci19OwotCi0vLyBGb3JtYXRzICJuIHRpbWVzIiBpbiBhIGh1bWFuLWZyaWVu
ZGx5IHdheS4KLWlubGluZSBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lcyhpbnQgbikgewotICBpZiAo
biA9PSAxKSB7Ci0gICAgcmV0dXJuICJvbmNlIjsKLSAgfSBlbHNlIGlmIChuID09IDIpIHsKLSAg
ICByZXR1cm4gInR3aWNlIjsKLSAgfSBlbHNlIHsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
LSAgICBzcyA8PCBuIDw8ICIgdGltZXMiOwotICAgIHJldHVybiBzcy5zdHIoKTsKLSAgfQotfQot
Ci0vLyBEZXNjcmliZXMgdGhlIEJldHdlZW4obSwgbikgY2FyZGluYWxpdHkgaW4gaHVtYW4tZnJp
ZW5kbHkgdGV4dC4KLXZvaWQgQmV0d2VlbkNhcmRpbmFsaXR5SW1wbDo6RGVzY3JpYmVUbyg6OnN0
ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgaWYgKG1pbl8gPT0gMCkgewotICAgIGlmIChtYXhf
ID09IDApIHsKLSAgICAgICpvcyA8PCAibmV2ZXIgY2FsbGVkIjsKLSAgICB9IGVsc2UgaWYgKG1h
eF8gPT0gSU5UX01BWCkgewotICAgICAgKm9zIDw8ICJjYWxsZWQgYW55IG51bWJlciBvZiB0aW1l
cyI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICpvcyA8PCAiY2FsbGVkIGF0IG1vc3QgIiA8PCBGb3Jt
YXRUaW1lcyhtYXhfKTsKLSAgICB9Ci0gIH0gZWxzZSBpZiAobWluXyA9PSBtYXhfKSB7Ci0gICAg
Km9zIDw8ICJjYWxsZWQgIiA8PCBGb3JtYXRUaW1lcyhtaW5fKTsKLSAgfSBlbHNlIGlmIChtYXhf
ID09IElOVF9NQVgpIHsKLSAgICAqb3MgPDwgImNhbGxlZCBhdCBsZWFzdCAiIDw8IEZvcm1hdFRp
bWVzKG1pbl8pOwotICB9IGVsc2UgewotICAgIC8vIDAgPCBtaW5fIDwgbWF4XyA8IElOVF9NQVgK
LSAgICAqb3MgPDwgImNhbGxlZCBiZXR3ZWVuICIgPDwgbWluXyA8PCAiIGFuZCAiIDw8IG1heF8g
PDwgIiB0aW1lcyI7Ci0gIH0KLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKLQotLy8gRGVz
Y3JpYmVzIHRoZSBnaXZlbiBjYWxsIGNvdW50IHRvIGFuIG9zdHJlYW0uCi12b2lkIENhcmRpbmFs
aXR5OjpEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKGludCBhY3R1YWxfY2FsbF9jb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0q
IG9zKSB7Ci0gIGlmIChhY3R1YWxfY2FsbF9jb3VudCA+IDApIHsKLSAgICAqb3MgPDwgImNhbGxl
ZCAiIDw8IEZvcm1hdFRpbWVzKGFjdHVhbF9jYWxsX2NvdW50KTsKLSAgfSBlbHNlIHsKLSAgICAq
b3MgPDwgIm5ldmVyIGNhbGxlZCI7Ci0gIH0KLX0KLQotLy8gQ3JlYXRlcyBhIGNhcmRpbmFsaXR5
IHRoYXQgYWxsb3dzIGF0IGxlYXN0IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5IEF0
TGVhc3QoaW50IG4pIHsgcmV0dXJuIEJldHdlZW4obiwgSU5UX01BWCk7IH0KLQotLy8gQ3JlYXRl
cyBhIGNhcmRpbmFsaXR5IHRoYXQgYWxsb3dzIGF0IG1vc3QgbiBjYWxscy4KLUdURVNUX0FQSV8g
Q2FyZGluYWxpdHkgQXRNb3N0KGludCBuKSB7IHJldHVybiBCZXR3ZWVuKDAsIG4pOyB9Ci0KLS8v
IENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBhbnkgbnVtYmVyIG9mIGNhbGxzLgot
R1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBBbnlOdW1iZXIoKSB7IHJldHVybiBBdExlYXN0KDApOyB9
Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBiZXR3ZWVuIG1pbiBhbmQg
bWF4IGNhbGxzLgotR1RFU1RfQVBJXyBDYXJkaW5hbGl0eSBCZXR3ZWVuKGludCBtaW4sIGludCBt
YXgpIHsKLSAgcmV0dXJuIENhcmRpbmFsaXR5KG5ldyBCZXR3ZWVuQ2FyZGluYWxpdHlJbXBsKG1p
biwgbWF4KSk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBjYXJkaW5hbGl0eSB0aGF0IGFsbG93cyBleGFj
dGx5IG4gY2FsbHMuCi1HVEVTVF9BUElfIENhcmRpbmFsaXR5IEV4YWN0bHkoaW50IG4pIHsgcmV0
dXJuIEJldHdlZW4obiwgbik7IH0KLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NyYy9nbW9jay1pbnRlcm5hbC11dGlscy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjQ2NGFiYzI0MWYxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2Nr
LWludGVybmFsLXV0aWxzLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdv
cmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgZGVmaW5l
cyBzb21lIHV0aWxpdGllcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyBHb29nbGUKLS8vIE1vY2su
ICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZSwgc28gcGxlYXNlIERP
IE5PVAotLy8gVVNFIFRIRU0gSU4gVVNFUiBDT0RFLgotCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJu
YWwvZ21vY2staW50ZXJuYWwtdXRpbHMuaCIKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVk
ZSA8b3N0cmVhbT4gIC8vIE5PTElOVAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlICJnbW9j
ay9nbW9jay5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLSNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50
ZXJuYWwgewotCi0vLyBDb252ZXJ0cyBhbiBpZGVudGlmaWVyIG5hbWUgdG8gYSBzcGFjZS1zZXBh
cmF0ZWQgbGlzdCBvZiBsb3dlci1jYXNlCi0vLyB3b3Jkcy4gIEVhY2ggbWF4aW11bSBzdWJzdHJp
bmcgb2YgdGhlIGZvcm0gW0EtWmEtel1bYS16XSp8XGQrIGlzCi0vLyB0cmVhdGVkIGFzIG9uZSB3
b3JkLiAgRm9yIGV4YW1wbGUsIGJvdGggIkZvb0JhcjEyMyIgYW5kCi0vLyAiZm9vX2Jhcl8xMjMi
IGFyZSBjb252ZXJ0ZWQgdG8gImZvbyBiYXIgMTIzIi4KLUdURVNUX0FQSV8gc3RyaW5nIENvbnZl
cnRJZGVudGlmaWVyTmFtZVRvV29yZHMoY29uc3QgY2hhciogaWRfbmFtZSkgewotICBzdHJpbmcg
cmVzdWx0OwotICBjaGFyIHByZXZfY2hhciA9ICdcMCc7Ci0gIGZvciAoY29uc3QgY2hhciogcCA9
IGlkX25hbWU7ICpwICE9ICdcMCc7IHByZXZfY2hhciA9ICoocCsrKSkgewotICAgIC8vIFdlIGRv
bid0IGNhcmUgYWJvdXQgdGhlIGN1cnJlbnQgbG9jYWxlIGFzIHRoZSBpbnB1dCBpcwotICAgIC8v
IGd1YXJhbnRlZWQgdG8gYmUgYSB2YWxpZCBDKysgaWRlbnRpZmllciBuYW1lLgotICAgIGNvbnN0
IGJvb2wgc3RhcnRzX25ld193b3JkID0gSXNVcHBlcigqcCkgfHwKLSAgICAgICAgKCFJc0FscGhh
KHByZXZfY2hhcikgJiYgSXNMb3dlcigqcCkpIHx8Ci0gICAgICAgICghSXNEaWdpdChwcmV2X2No
YXIpICYmIElzRGlnaXQoKnApKTsKLQotICAgIGlmIChJc0FsTnVtKCpwKSkgewotICAgICAgaWYg
KHN0YXJ0c19uZXdfd29yZCAmJiByZXN1bHQgIT0gIiIpCi0gICAgICAgIHJlc3VsdCArPSAnICc7
Ci0gICAgICByZXN1bHQgKz0gVG9Mb3dlcigqcCk7Ci0gICAgfQotICB9Ci0gIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8vIFRoaXMgY2xhc3MgcmVwb3J0cyBHb29nbGUgTW9jayBmYWlsdXJlcyBhcyBH
b29nbGUgVGVzdCBmYWlsdXJlcy4gIEEKLS8vIHVzZXIgY2FuIGRlZmluZSBhbm90aGVyIGNsYXNz
IGluIGEgc2ltaWxhciBmYXNoaW9uIGlmIGhlIGludGVuZHMgdG8KLS8vIHVzZSBHb29nbGUgTW9j
ayB3aXRoIGEgdGVzdGluZyBmcmFtZXdvcmsgb3RoZXIgdGhhbiBHb29nbGUgVGVzdC4KLWNsYXNz
IEdvb2dsZVRlc3RGYWlsdXJlUmVwb3J0ZXIgOiBwdWJsaWMgRmFpbHVyZVJlcG9ydGVySW50ZXJm
YWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBSZXBvcnRGYWlsdXJlKEZhaWx1cmVUeXBl
IHR5cGUsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgewotICAgIEFzc2VydEhlbHBlcih0
eXBlID09IGtGYXRhbCA/Ci0gICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxG
YWlsdXJlIDoKLSAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1
cmUsCi0gICAgICAgICAgICAgICAgIGZpbGUsCi0gICAgICAgICAgICAgICAgIGxpbmUsCi0gICAg
ICAgICAgICAgICAgIG1lc3NhZ2UuY19zdHIoKSkgPSBNZXNzYWdlKCk7Ci0gICAgaWYgKHR5cGUg
PT0ga0ZhdGFsKSB7Ci0gICAgICBwb3NpeDo6QWJvcnQoKTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8v
IFJldHVybnMgdGhlIGdsb2JhbCBmYWlsdXJlIHJlcG9ydGVyLiAgV2lsbCBjcmVhdGUgYQotLy8g
R29vZ2xlVGVzdEZhaWx1cmVSZXBvcnRlciBhbmQgcmV0dXJuIGl0IHRoZSBmaXJzdCB0aW1lIGNh
bGxlZC4KLUdURVNUX0FQSV8gRmFpbHVyZVJlcG9ydGVySW50ZXJmYWNlKiBHZXRGYWlsdXJlUmVw
b3J0ZXIoKSB7Ci0gIC8vIFBvaW50cyB0byB0aGUgZ2xvYmFsIGZhaWx1cmUgcmVwb3J0ZXIgdXNl
ZCBieSBHb29nbGUgTW9jay4gIGdjYwotICAvLyBndWFyYW50ZWVzIHRoYXQgdGhlIGZvbGxvd2lu
ZyB1c2Ugb2YgZmFpbHVyZV9yZXBvcnRlciBpcwotICAvLyB0aHJlYWQtc2FmZS4gIFdlIG1heSBu
ZWVkIHRvIGFkZCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbiB0bwotICAvLyBwcm90ZWN0IGZh
aWx1cmVfcmVwb3J0ZXIgaWYgd2UgcG9ydCBHb29nbGUgTW9jayB0byBvdGhlcgotICAvLyBjb21w
aWxlcnMuCi0gIHN0YXRpYyBGYWlsdXJlUmVwb3J0ZXJJbnRlcmZhY2UqIGNvbnN0IGZhaWx1cmVf
cmVwb3J0ZXIgPQotICAgICAgbmV3IEdvb2dsZVRlc3RGYWlsdXJlUmVwb3J0ZXIoKTsKLSAgcmV0
dXJuIGZhaWx1cmVfcmVwb3J0ZXI7Ci19Ci0KLS8vIFByb3RlY3RzIGdsb2JhbCByZXNvdXJjZXMg
KHN0ZG91dCBpbiBwYXJ0aWN1bGFyKSB1c2VkIGJ5IExvZygpLgotc3RhdGljIEdURVNUX0RFRklO
RV9TVEFUSUNfTVVURVhfKGdfbG9nX211dGV4KTsKLQotLy8gUmV0dXJucyB0cnVlIGlmZiBhIGxv
ZyB3aXRoIHRoZSBnaXZlbiBzZXZlcml0eSBpcyB2aXNpYmxlIGFjY29yZGluZwotLy8gdG8gdGhl
IC0tZ21vY2tfdmVyYm9zZSBmbGFnLgotR1RFU1RfQVBJXyBib29sIExvZ0lzVmlzaWJsZShMb2dT
ZXZlcml0eSBzZXZlcml0eSkgewotICBpZiAoR01PQ0tfRkxBRyh2ZXJib3NlKSA9PSBrSW5mb1Zl
cmJvc2l0eSkgewotICAgIC8vIEFsd2F5cyBzaG93IHRoZSBsb2cgaWYgLS1nbW9ja192ZXJib3Nl
PWluZm8uCi0gICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSBpZiAoR01PQ0tfRkxBRyh2ZXJib3Nl
KSA9PSBrRXJyb3JWZXJib3NpdHkpIHsKLSAgICAvLyBBbHdheXMgaGlkZSBpdCBpZiAtLWdtb2Nr
X3ZlcmJvc2U9ZXJyb3IuCi0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2UgewotICAgIC8vIElm
IC0tZ21vY2tfdmVyYm9zZSBpcyBuZWl0aGVyICJpbmZvIiBub3IgImVycm9yIiwgd2UgdHJlYXQg
aXQKLSAgICAvLyBhcyAid2FybmluZyIgKGl0cyBkZWZhdWx0IHZhbHVlKS4KLSAgICByZXR1cm4g
c2V2ZXJpdHkgPT0ga1dhcm5pbmc7Ci0gIH0KLX0KLQotLy8gUHJpbnRzIHRoZSBnaXZlbiBtZXNz
YWdlIHRvIHN0ZG91dCBpZmYgJ3NldmVyaXR5JyA+PSB0aGUgbGV2ZWwKLS8vIHNwZWNpZmllZCBi
eSB0aGUgLS1nbW9ja192ZXJib3NlIGZsYWcuICBJZiBzdGFja19mcmFtZXNfdG9fc2tpcCA+PQot
Ly8gMCwgYWxzbyBwcmludHMgdGhlIHN0YWNrIHRyYWNlIGV4Y2x1ZGluZyB0aGUgdG9wCi0vLyBz
dGFja19mcmFtZXNfdG9fc2tpcCBmcmFtZXMuICBJbiBvcHQgbW9kZSwgYW55IHBvc2l0aXZlCi0v
LyBzdGFja19mcmFtZXNfdG9fc2tpcCBpcyB0cmVhdGVkIGFzIDAsIHNpbmNlIHdlIGRvbid0IGtu
b3cgd2hpY2gKLS8vIGZ1bmN0aW9uIGNhbGxzIHdpbGwgYmUgaW5saW5lZCBieSB0aGUgY29tcGls
ZXIgYW5kIG5lZWQgdG8gYmUKLS8vIGNvbnNlcnZhdGl2ZS4KLUdURVNUX0FQSV8gdm9pZCBMb2co
TG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAotICAgICAg
ICAgICAgICAgICAgICBpbnQgc3RhY2tfZnJhbWVzX3RvX3NraXApIHsKLSAgaWYgKCFMb2dJc1Zp
c2libGUoc2V2ZXJpdHkpKQotICAgIHJldHVybjsKLQotICAvLyBFbnN1cmVzIHRoYXQgbG9ncyBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzIGRvbid0IGludGVybGVhdmUuCi0gIE11dGV4TG9jayBsKCZn
X2xvZ19tdXRleCk7Ci0KLSAgLy8gInVzaW5nIDo6c3RkOjpjb3V0OyIgZG9lc24ndCB3b3JrIHdp
dGggU3ltYmlhbidzIFNUTHBvcnQsIHdoZXJlIGNvdXQgaXMgYQotICAvLyBtYWNyby4KLQotICBp
ZiAoc2V2ZXJpdHkgPT0ga1dhcm5pbmcpIHsKLSAgICAvLyBQcmludHMgYSBHTU9DSyBXQVJOSU5H
IG1hcmtlciB0byBtYWtlIHRoZSB3YXJuaW5ncyBlYXNpbHkgc2VhcmNoYWJsZS4KLSAgICBzdGQ6
OmNvdXQgPDwgIlxuR01PQ0sgV0FSTklORzoiOwotICB9Ci0gIC8vIFByZS1wZW5kcyBhIG5ldy1s
aW5lIHRvIG1lc3NhZ2UgaWYgaXQgZG9lc24ndCBzdGFydCB3aXRoIG9uZS4KLSAgaWYgKG1lc3Nh
Z2UuZW1wdHkoKSB8fCBtZXNzYWdlWzBdICE9ICdcbicpIHsKLSAgICBzdGQ6OmNvdXQgPDwgIlxu
IjsKLSAgfQotICBzdGQ6OmNvdXQgPDwgbWVzc2FnZTsKLSAgaWYgKHN0YWNrX2ZyYW1lc190b19z
a2lwID49IDApIHsKLSNpZmRlZiBOREVCVUcKLSAgICAvLyBJbiBvcHQgbW9kZSwgd2UgaGF2ZSB0
byBiZSBjb25zZXJ2YXRpdmUgYW5kIHNraXAgbm8gc3RhY2sgZnJhbWUuCi0gICAgY29uc3QgaW50
IGFjdHVhbF90b19za2lwID0gMDsKLSNlbHNlCi0gICAgLy8gSW4gZGJnIG1vZGUsIHdlIGNhbiBk
byB3aGF0IHRoZSBjYWxsZXIgdGVsbCB1cyB0byBkbyAocGx1cyBvbmUKLSAgICAvLyBmb3Igc2tp
cHBpbmcgdGhpcyBmdW5jdGlvbidzIHN0YWNrIGZyYW1lKS4KLSAgICBjb25zdCBpbnQgYWN0dWFs
X3RvX3NraXAgPSBzdGFja19mcmFtZXNfdG9fc2tpcCArIDE7Ci0jZW5kaWYgIC8vIE5ERUJVRwot
Ci0gICAgLy8gQXBwZW5kcyBhIG5ldy1saW5lIHRvIG1lc3NhZ2UgaWYgaXQgZG9lc24ndCBlbmQg
d2l0aCBvbmUuCi0gICAgaWYgKCFtZXNzYWdlLmVtcHR5KCkgJiYgKm1lc3NhZ2UucmJlZ2luKCkg
IT0gJ1xuJykgewotICAgICAgc3RkOjpjb3V0IDw8ICJcbiI7Ci0gICAgfQotICAgIHN0ZDo6Y291
dCA8PCAiU3RhY2sgdHJhY2U6XG4iCi0gICAgICAgICA8PCA6OnRlc3Rpbmc6OmludGVybmFsOjpH
ZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKAotICAgICAgICAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCksIGFjdHVhbF90b19za2lwKTsKLSAgfQotICBzdGQ6OmNv
dXQgPDwgOjpzdGQ6OmZsdXNoOwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stbWF0
Y2hlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay9zcmMvZ21vY2stbWF0Y2hlcnMuY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUwZGUyNWNiOTI3YS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3NyYy9nbW9jay1tYXRjaGVycy5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ5NyArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAt
IGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBm
aWxlIGltcGxlbWVudHMgTWF0Y2hlcjxjb25zdCBzdHJpbmcmPiwgTWF0Y2hlcjxzdHJpbmc+LCBh
bmQKLS8vIHV0aWxpdGllcyBmb3IgZGVmaW5pbmcgbWF0Y2hlcnMuCi0KLSNpbmNsdWRlICJnbW9j
ay9nbW9jay1tYXRjaGVycy5oIgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRj
aGVycy5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gQ29uc3RydWN0cyBhIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGEgY29uc3Qgc3RyaW5nJiB3aG9zZSB2YWx1ZSBpcwotLy8gZXF1
YWwgdG8gcy4KLU1hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+OjpNYXRjaGVyKGNvbnN0
IGludGVybmFsOjpzdHJpbmcmIHMpIHsKLSAgKnRoaXMgPSBFcShzKTsKLX0KLQotLy8gQ29uc3Ry
dWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgY29uc3Qgc3RyaW5nJiB3aG9zZSB2YWx1ZSBp
cwotLy8gZXF1YWwgdG8gcy4KLU1hdGNoZXI8Y29uc3QgaW50ZXJuYWw6OnN0cmluZyY+OjpNYXRj
aGVyKGNvbnN0IGNoYXIqIHMpIHsKLSAgKnRoaXMgPSBFcShpbnRlcm5hbDo6c3RyaW5nKHMpKTsK
LX0KLQotLy8gQ29uc3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgc3RyaW5nIHdob3Nl
IHZhbHVlIGlzIGVxdWFsIHRvIHMuCi1NYXRjaGVyPGludGVybmFsOjpzdHJpbmc+OjpNYXRjaGVy
KGNvbnN0IGludGVybmFsOjpzdHJpbmcmIHMpIHsgKnRoaXMgPSBFcShzKTsgfQotCi0vLyBDb25z
dHJ1Y3RzIGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBzdHJpbmcgd2hvc2UgdmFsdWUgaXMgZXF1
YWwgdG8gcy4KLU1hdGNoZXI8aW50ZXJuYWw6OnN0cmluZz46Ok1hdGNoZXIoY29uc3QgY2hhciog
cykgewotICAqdGhpcyA9IEVxKGludGVybmFsOjpzdHJpbmcocykpOwotfQotCi0jaWYgR1RFU1Rf
SEFTX1NUUklOR19QSUVDRV8KLS8vIENvbnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBh
IGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9zZSB2YWx1ZSBpcwotLy8gZXF1YWwgdG8gcy4KLU1hdGNo
ZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6TWF0Y2hlcihjb25zdCBpbnRlcm5hbDo6c3RyaW5nJiBz
KSB7Ci0gICp0aGlzID0gRXEocyk7Ci19Ci0KLS8vIENvbnN0cnVjdHMgYSBtYXRjaGVyIHRoYXQg
bWF0Y2hlcyBhIGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9zZSB2YWx1ZSBpcwotLy8gZXF1YWwgdG8g
cy4KLU1hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6TWF0Y2hlcihjb25zdCBjaGFyKiBzKSB7
Ci0gICp0aGlzID0gRXEoaW50ZXJuYWw6OnN0cmluZyhzKSk7Ci19Ci0KLS8vIENvbnN0cnVjdHMg
YSBtYXRjaGVyIHRoYXQgbWF0Y2hlcyBhIGNvbnN0IFN0cmluZ1BpZWNlJiB3aG9zZSB2YWx1ZSBp
cwotLy8gZXF1YWwgdG8gcy4KLU1hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPjo6TWF0Y2hlcihT
dHJpbmdQaWVjZSBzKSB7Ci0gICp0aGlzID0gRXEocy5Ub1N0cmluZygpKTsKLX0KLQotLy8gQ29u
c3RydWN0cyBhIG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hvc2UgdmFsdWUg
aXMgZXF1YWwgdG8gcy4KLU1hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKGNvbnN0IGludGVy
bmFsOjpzdHJpbmcmIHMpIHsKLSAgKnRoaXMgPSBFcShzKTsKLX0KLQotLy8gQ29uc3RydWN0cyBh
IG1hdGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hvc2UgdmFsdWUgaXMgZXF1YWwg
dG8gcy4KLU1hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKGNvbnN0IGNoYXIqIHMpIHsKLSAg
KnRoaXMgPSBFcShpbnRlcm5hbDo6c3RyaW5nKHMpKTsKLX0KLQotLy8gQ29uc3RydWN0cyBhIG1h
dGNoZXIgdGhhdCBtYXRjaGVzIGEgU3RyaW5nUGllY2Ugd2hvc2UgdmFsdWUgaXMgZXF1YWwgdG8g
cy4KLU1hdGNoZXI8U3RyaW5nUGllY2U+OjpNYXRjaGVyKFN0cmluZ1BpZWNlIHMpIHsKLSAgKnRo
aXMgPSBFcShzLlRvU3RyaW5nKCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJ
RUNFXwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBKb2lucyBhIHZlY3RvciBvZiBzdHJp
bmdzIGFzIGlmIHRoZXkgYXJlIGZpZWxkcyBvZiBhIHR1cGxlOyByZXR1cm5zCi0vLyB0aGUgam9p
bmVkIHN0cmluZy4KLUdURVNUX0FQSV8gc3RyaW5nIEpvaW5Bc1R1cGxlKGNvbnN0IFN0cmluZ3Mm
IGZpZWxkcykgewotICBzd2l0Y2ggKGZpZWxkcy5zaXplKCkpIHsKLSAgICBjYXNlIDA6Ci0gICAg
ICByZXR1cm4gIiI7Ci0gICAgY2FzZSAxOgotICAgICAgcmV0dXJuIGZpZWxkc1swXTsKLSAgICBk
ZWZhdWx0OgotICAgICAgc3RyaW5nIHJlc3VsdCA9ICIoIiArIGZpZWxkc1swXTsKLSAgICAgIGZv
ciAoc2l6ZV90IGkgPSAxOyBpIDwgZmllbGRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHJlc3Vs
dCArPSAiLCAiOwotICAgICAgICByZXN1bHQgKz0gZmllbGRzW2ldOwotICAgICAgfQotICAgICAg
cmVzdWx0ICs9ICIpIjsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KLQotLy8gUmV0dXJu
cyB0aGUgZGVzY3JpcHRpb24gZm9yIGEgbWF0Y2hlciBkZWZpbmVkIHVzaW5nIHRoZSBNQVRDSEVS
KigpCi0vLyBtYWNybyB3aGVyZSB0aGUgdXNlci1zdXBwbGllZCBkZXNjcmlwdGlvbiBzdHJpbmcg
aXMgIiIsIGlmCi0vLyAnbmVnYXRpb24nIGlzIGZhbHNlOyBvdGhlcndpc2UgcmV0dXJucyB0aGUg
ZGVzY3JpcHRpb24gb2YgdGhlCi0vLyBuZWdhdGlvbiBvZiB0aGUgbWF0Y2hlci4gICdwYXJhbV92
YWx1ZXMnIGNvbnRhaW5zIGEgbGlzdCBvZiBzdHJpbmdzCi0vLyB0aGF0IGFyZSB0aGUgcHJpbnQt
b3V0IG9mIHRoZSBtYXRjaGVyJ3MgcGFyYW1ldGVycy4KLUdURVNUX0FQSV8gc3RyaW5nIEZvcm1h
dE1hdGNoZXJEZXNjcmlwdGlvbihib29sIG5lZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1hdGNoZXJfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdzJiBwYXJhbV92
YWx1ZXMpIHsKLSAgc3RyaW5nIHJlc3VsdCA9IENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMo
bWF0Y2hlcl9uYW1lKTsKLSAgaWYgKHBhcmFtX3ZhbHVlcy5zaXplKCkgPj0gMSkKLSAgICByZXN1
bHQgKz0gIiAiICsgSm9pbkFzVHVwbGUocGFyYW1fdmFsdWVzKTsKLSAgcmV0dXJuIG5lZ2F0aW9u
ID8gIm5vdCAoIiArIHJlc3VsdCArICIpIiA6IHJlc3VsdDsKLX0KLQotLy8gRmluZE1heEJpcGFy
dGl0ZU1hdGNoaW5nIGFuZCBpdHMgaGVscGVyIGNsYXNzLgotLy8KLS8vIFVzZXMgdGhlIHdlbGwt
a25vd24gRm9yZC1GdWxrZXJzb24gbWF4IGZsb3cgbWV0aG9kIHRvIGZpbmQgYSBtYXhpbXVtCi0v
LyBiaXBhcnRpdGUgbWF0Y2hpbmcuIEZsb3cgaXMgY29uc2lkZXJlZCB0byBiZSBmcm9tIGxlZnQg
dG8gcmlnaHQuCi0vLyBUaGVyZSBpcyBhbiBpbXBsaWNpdCBzb3VyY2Ugbm9kZSB0aGF0IGlzIGNv
bm5lY3RlZCB0byBhbGwgb2YgdGhlIGxlZnQKLS8vIG5vZGVzLCBhbmQgYW4gaW1wbGljaXQgc2lu
ayBub2RlIHRoYXQgaXMgY29ubmVjdGVkIHRvIGFsbCBvZiB0aGUKLS8vIHJpZ2h0IG5vZGVzLiBB
bGwgZWRnZXMgaGF2ZSB1bml0IGNhcGFjaXR5LgotLy8KLS8vIE5laXRoZXIgdGhlIGZsb3cgZ3Jh
cGggbm9yIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGFyZSByZXByZXNlbnRlZAotLy8gZXhwbGlj
aXRseS4gSW5zdGVhZCwgdGhleSBhcmUgaW1wbGllZCBieSB0aGUgaW5mb3JtYXRpb24gaW4gJ2dy
YXBoJyBhbmQKLS8vIGEgdmVjdG9yPGludD4gY2FsbGVkICdsZWZ0Xycgd2hvc2UgZWxlbWVudHMg
YXJlIGluaXRpYWxpemVkIHRvIHRoZQotLy8gdmFsdWUga1VudXNlZC4gVGhpcyByZXByZXNlbnRz
IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBhbGdvcml0aG0sCi0vLyB3aGVyZSB0aGUgZmxvdyBn
cmFwaCBpcyBlbXB0eSwgYW5kIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGhhcyB0aGUKLS8vIGZv
bGxvd2luZyBlZGdlczoKLS8vICAgLSBBbiBlZGdlIGZyb20gc291cmNlIHRvIGVhY2ggbGVmdF8g
bm9kZQotLy8gICAtIEFuIGVkZ2UgZnJvbSBlYWNoIHJpZ2h0XyBub2RlIHRvIHNpbmsKLS8vICAg
LSBBbiBlZGdlIGZyb20gZWFjaCBsZWZ0XyBub2RlIHRvIGVhY2ggcmlnaHRfIG5vZGUsIGlmIHRo
ZQotLy8gICAgIGNvcnJlc3BvbmRpbmcgZWRnZSBleGlzdHMgaW4gJ2dyYXBoJy4KLS8vCi0vLyBX
aGVuIHRoZSBUcnlBdWdtZW50KCkgbWV0aG9kIGFkZHMgYSBmbG93LCBpdCBzZXRzIGxlZnRfW2xd
ID0gciBmb3Igc29tZQotLy8gbm9kZXMgbCBhbmQgci4gVGhpcyBpbmR1Y2VzIHRoZSBmb2xsb3dp
bmcgY2hhbmdlczoKLS8vICAgLSBUaGUgZWRnZXMgKHNvdXJjZSwgbCksIChsLCByKSwgYW5kIChy
LCBzaW5rKSBhcmUgYWRkZWQgdG8gdGhlCi0vLyAgICAgZmxvdyBncmFwaC4KLS8vICAgLSBUaGUg
c2FtZSB0aHJlZSBlZGdlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSByZXNpZHVhbCBmbG93IGdyYXBo
LgotLy8gICAtIFRoZSByZXZlcnNlIGVkZ2VzIChsLCBzb3VyY2UpLCAociwgbCksIGFuZCAoc2lu
aywgcikgYXJlIGFkZGVkCi0vLyAgICAgdG8gdGhlIHJlc2lkdWFsIGZsb3cgZ3JhcGgsIHdoaWNo
IGlzIGEgZGlyZWN0aW9uYWwgZ3JhcGgKLS8vICAgICByZXByZXNlbnRpbmcgdW51c2VkIGZsb3cg
Y2FwYWNpdHkuCi0vLwotLy8gV2hlbiB0aGUgbWV0aG9kIGF1Z21lbnRzIGEgZmxvdyAobW92aW5n
IGxlZnRfW2xdIGZyb20gc29tZSByMSB0byBzb21lCi0vLyBvdGhlciByMiksIHRoaXMgY2FuIGJl
IHRob3VnaHQgb2YgYXMgInVuZG9pbmciIHRoZSBhYm92ZSBzdGVwcyB3aXRoCi0vLyByZXNwZWN0
IHRvIHIxIGFuZCAicmVkb2luZyIgdGhlbSB3aXRoIHJlc3BlY3QgdG8gcjIuCi0vLwotLy8gSXQg
YmVhcnMgcmVwZWF0aW5nIHRoYXQgdGhlIGZsb3cgZ3JhcGggYW5kIHJlc2lkdWFsIGZsb3cgZ3Jh
cGggYXJlCi0vLyBuZXZlciByZXByZXNlbnRlZCBleHBsaWNpdGx5LCBidXQgY2FuIGJlIGRlcml2
ZWQgYnkgbG9va2luZyBhdCB0aGUKLS8vIGluZm9ybWF0aW9uIGluICdncmFwaCcgYW5kIGluIGxl
ZnRfLgotLy8KLS8vIEFzIGFuIG9wdGltaXphdGlvbiwgdGhlcmUgaXMgYSBzZWNvbmQgdmVjdG9y
PGludD4gY2FsbGVkIHJpZ2h0XyB3aGljaAotLy8gZG9lcyBub3QgcHJvdmlkZSBhbnkgbmV3IGlu
Zm9ybWF0aW9uLiBJbnN0ZWFkLCBpdCBlbmFibGVzIG1vcmUKLS8vIGVmZmljaWVudCBxdWVyaWVz
IGFib3V0IGVkZ2VzIGVudGVyaW5nIG9yIGxlYXZpbmcgdGhlIHJpZ2h0LXNpZGUgbm9kZXMKLS8v
IG9mIHRoZSBmbG93IG9yIHJlc2lkdWFsIGZsb3cgZ3JhcGhzLiBUaGUgZm9sbG93aW5nIGludmFy
aWFudHMgYXJlCi0vLyBtYWludGFpbmVkOgotLy8KLS8vIGxlZnRbbF0gPT0ga1VudXNlZCBvciBy
aWdodFtsZWZ0W2xdXSA9PSBsCi0vLyByaWdodFtyXSA9PSBrVW51c2VkIG9yIGxlZnRbcmlnaHRb
cl1dID09IHIKLS8vCi0vLyAuIFsgc291cmNlIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLgotLy8gLiAgIHx8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC4KLS8vIC4gICB8fHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuCi0vLyAuICAgfHxcLS0+IGxlZnRbMF09MSAgLS0tXCAgICByaWdodFsw
XT0tMSAtLS0tXCAgICAgLgotLy8gLiAgIHx8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgIHwgICAgIC4KLS8vIC4gICB8XC0tLT4gbGVmdFsxXT0tMSAgICBcLS0+IHJpZ2h0
WzFdPTAgIC0tLVx8ICAgICAuCi0vLyAuICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8fCAgICAgLgotLy8gLiAgIFwtLS0tPiBsZWZ0WzJdPTIgIC0tLS0tLT4gcmln
aHRbMl09MiAgLS1cfHwgICAgIC4KLS8vIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHx8ICAgICAuCi0vLyAuICAgICAgICAgZWxlbWVudHMgICAgICAgICAgIG1h
dGNoZXJzICAgICAgIHZ2diAgICAgLgotLy8gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyBzaW5rIF0gIC4KLS8vCi0vLyBTZWUgQWxzbzoKLS8vICAgWzFdIENvcm1l
biwgZXQgYWwgKDIwMDEpLiAiU2VjdGlvbiAyNi4yOiBUaGUgRm9yZC1GdWxrZXJzb24gbWV0aG9k
Ii4KLS8vICAgICAgICJJbnRyb2R1Y3Rpb24gdG8gQWxnb3JpdGhtcyAoU2Vjb25kIGVkLikiLCBw
cC4gNjUxLTY2NC4KLS8vICAgWzJdICJGb3JkLUZ1bGtlcnNvbiBhbGdvcml0aG0iLCBXaWtpcGVk
aWEsCi0vLyAgICAgICAnaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Gb3JkJUUyJTgwJTkz
RnVsa2Vyc29uX2FsZ29yaXRobScKLWNsYXNzIE1heEJpcGFydGl0ZU1hdGNoU3RhdGUgewotIHB1
YmxpYzoKLSAgZXhwbGljaXQgTWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZShjb25zdCBNYXRjaE1hdHJp
eCYgZ3JhcGgpCi0gICAgICA6IGdyYXBoXygmZ3JhcGgpLAotICAgICAgICBsZWZ0XyhncmFwaF8t
Pkxoc1NpemUoKSwga1VudXNlZCksCi0gICAgICAgIHJpZ2h0XyhncmFwaF8tPlJoc1NpemUoKSwg
a1VudXNlZCkgewotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgZWRnZXMgb2YgYSBtYXhpbWFsIG1h
dGNoLCBlYWNoIGluIHRoZSBmb3JtIHtsZWZ0LCByaWdodH0uCi0gIEVsZW1lbnRNYXRjaGVyUGFp
cnMgQ29tcHV0ZSgpIHsKLSAgICAvLyAnc2VlbicgaXMgdXNlZCBmb3IgcGF0aCBmaW5kaW5nIHsg
MDogdW5zZWVuLCAxOiBzZWVuIH0uCi0gICAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBzZWVuOwotICAg
IC8vIFNlYXJjaGVzIHRoZSByZXNpZHVhbCBmbG93IGdyYXBoIGZvciBhIHBhdGggZnJvbSBlYWNo
IGxlZnQgbm9kZSB0bwotICAgIC8vIHRoZSBzaW5rIGluIHRoZSByZXNpZHVhbCBmbG93IGdyYXBo
LCBhbmQgaWYgb25lIGlzIGZvdW5kLCBhZGQgZmxvdwotICAgIC8vIHRvIHRoZSBncmFwaC4gSXQn
cyBva2F5IHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBsZWZ0IG5vZGVzIG9uY2UuIFRoZQotICAgIC8v
IGVkZ2UgZnJvbSB0aGUgaW1wbGljaXQgc291cmNlIG5vZGUgdG8gZWFjaCBwcmV2aW91c2x5LXZp
c2l0ZWQgbGVmdAotICAgIC8vIG5vZGUgd2lsbCBoYXZlIGZsb3cgaWYgdGhhdCBsZWZ0IG5vZGUg
aGFzIGFueSBwYXRoIHRvIHRoZSBzaW5rCi0gICAgLy8gd2hhdHNvZXZlci4gU3Vic2VxdWVudCBh
dWdtZW50YXRpb25zIGNhbiBvbmx5IGFkZCBmbG93IHRvIHRoZQotICAgIC8vIG5ldHdvcmssIGFu
ZCBjYW5ub3QgdGFrZSBhd2F5IHRoYXQgcHJldmlvdXMgZmxvdyB1bml0IGZyb20gdGhlIHNvdXJj
ZS4KLSAgICAvLyBTaW5jZSB0aGUgc291cmNlLXRvLWxlZnQgZWRnZSBjYW4gb25seSBjYXJyeSBv
bmUgZmxvdyB1bml0IChvciwKLSAgICAvLyBlYWNoIGVsZW1lbnQgY2FuIGJlIG1hdGNoZWQgdG8g
b25seSBvbmUgbWF0Y2hlciksIHRoZXJlIGlzIG5vIG5lZWQKLSAgICAvLyB0byB2aXNpdCB0aGUg
bGVmdCBub2RlcyBtb3JlIHRoYW4gb25jZSBsb29raW5nIGZvciBhdWdtZW50ZWQgcGF0aHMuCi0g
ICAgLy8gVGhlIGZsb3cgaXMga25vd24gdG8gYmUgcG9zc2libGUgb3IgaW1wb3NzaWJsZSBieSBs
b29raW5nIGF0IHRoZQotICAgIC8vIG5vZGUgb25jZS4KLSAgICBmb3IgKHNpemVfdCBpbGhzID0g
MDsgaWxocyA8IGdyYXBoXy0+TGhzU2l6ZSgpOyArK2lsaHMpIHsKLSAgICAgIC8vIFJlc2V0IHRo
ZSBwYXRoLW1hcmtpbmcgdmVjdG9yIGFuZCB0cnkgdG8gZmluZCBhIHBhdGggZnJvbQotICAgICAg
Ly8gc291cmNlIHRvIHNpbmsgc3RhcnRpbmcgYXQgdGhlIGxlZnRfW2lsaHNdIG5vZGUuCi0gICAg
ICBHVEVTVF9DSEVDS18obGVmdF9baWxoc10gPT0ga1VudXNlZCkKLSAgICAgICAgICA8PCAiaWxo
czogIiA8PCBpbGhzIDw8ICIsIGxlZnRfW2lsaHNdOiAiIDw8IGxlZnRfW2lsaHNdOwotICAgICAg
Ly8gJ3NlZW4nIGluaXRpYWxpemVkIHRvICdncmFwaF8tPlJoc1NpemUoKScgY29waWVzIG9mIDAu
Ci0gICAgICBzZWVuLmFzc2lnbihncmFwaF8tPlJoc1NpemUoKSwgMCk7Ci0gICAgICBUcnlBdWdt
ZW50KGlsaHMsICZzZWVuKTsKLSAgICB9Ci0gICAgRWxlbWVudE1hdGNoZXJQYWlycyByZXN1bHQ7
Ci0gICAgZm9yIChzaXplX3QgaWxocyA9IDA7IGlsaHMgPCBsZWZ0Xy5zaXplKCk7ICsraWxocykg
ewotICAgICAgc2l6ZV90IGlyaHMgPSBsZWZ0X1tpbGhzXTsKLSAgICAgIGlmIChpcmhzID09IGtV
bnVzZWQpIGNvbnRpbnVlOwotICAgICAgcmVzdWx0LnB1c2hfYmFjayhFbGVtZW50TWF0Y2hlclBh
aXIoaWxocywgaXJocykpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLSBwcml2
YXRlOgotICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtVbnVzZWQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KC0xKTsKLQotICAvLyBQZXJmb3JtIGEgZGVwdGgtZmlyc3Qgc2VhcmNoIGZyb20gbGVmdCBub2Rl
IGlsaHMgdG8gdGhlIHNpbmsuICBJZiBhCi0gIC8vIHBhdGggaXMgZm91bmQsIGZsb3cgaXMgYWRk
ZWQgdG8gdGhlIG5ldHdvcmsgYnkgbGlua2luZyB0aGUgbGVmdCBhbmQKLSAgLy8gcmlnaHQgdmVj
dG9yIGVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgZWFjaCBzZWdtZW50IG9mIHRoZSBwYXRoLgotICAv
LyBSZXR1cm5zIHRydWUgaWYgYSBwYXRoIHRvIHNpbmsgd2FzIGZvdW5kLCB3aGljaCBtZWFucyB0
aGF0IGEgdW5pdCBvZgotICAvLyBmbG93IHdhcyBhZGRlZCB0byB0aGUgbmV0d29yay4gVGhlICdz
ZWVuJyB2ZWN0b3IgZWxlbWVudHMgY29ycmVzcG9uZAotICAvLyB0byByaWdodCBub2RlcyBhbmQg
YXJlIG1hcmtlZCB0byBlbGltaW5hdGUgY3ljbGVzIGZyb20gdGhlIHNlYXJjaC4KLSAgLy8KLSAg
Ly8gTGVmdCBub2RlcyB3aWxsIG9ubHkgYmUgZXhwbG9yZWQgYXQgbW9zdCBvbmNlIGJlY2F1c2Ug
dGhleQotICAvLyBhcmUgYWNjZXNzaWJsZSBmcm9tIGF0IG1vc3Qgb25lIHJpZ2h0IG5vZGUgaW4g
dGhlIHJlc2lkdWFsIGZsb3cKLSAgLy8gZ3JhcGguCi0gIC8vCi0gIC8vIE5vdGUgdGhhdCBsZWZ0
X1tpbGhzXSBpcyB0aGUgb25seSBlbGVtZW50IG9mIGxlZnRfIHRoYXQgVHJ5QXVnbWVudCB3aWxs
Ci0gIC8vIHBvdGVudGlhbGx5IHRyYW5zaXRpb24gZnJvbSBrVW51c2VkIHRvIGFub3RoZXIgdmFs
dWUuIEFueSBvdGhlcgotICAvLyBsZWZ0XyBlbGVtZW50IGhvbGRpbmcga1VudXNlZCBiZWZvcmUg
VHJ5QXVnbWVudCB3aWxsIGJlIGhvbGRpbmcgaXQKLSAgLy8gd2hlbiBUcnlBdWdtZW50IHJldHVy
bnMuCi0gIC8vCi0gIGJvb2wgVHJ5QXVnbWVudChzaXplX3QgaWxocywgOjpzdGQ6OnZlY3Rvcjxj
aGFyPiogc2VlbikgewotICAgIGZvciAoc2l6ZV90IGlyaHMgPSAwOyBpcmhzIDwgZ3JhcGhfLT5S
aHNTaXplKCk7ICsraXJocykgewotICAgICAgaWYgKCgqc2VlbilbaXJoc10pCi0gICAgICAgIGNv
bnRpbnVlOwotICAgICAgaWYgKCFncmFwaF8tPkhhc0VkZ2UoaWxocywgaXJocykpCi0gICAgICAg
IGNvbnRpbnVlOwotICAgICAgLy8gVGhlcmUncyBhbiBhdmFpbGFibGUgZWRnZSBmcm9tIGlsaHMg
dG8gaXJocy4KLSAgICAgICgqc2VlbilbaXJoc10gPSAxOwotICAgICAgLy8gTmV4dCBhIHNlYXJj
aCBpcyBwZXJmb3JtZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIKLSAgICAgIC8vIHRoaXMgZWRnZSBp
cyBhIGRlYWQgZW5kIG9yIGxlYWRzIHRvIHRoZSBzaW5rLgotICAgICAgLy8KLSAgICAgIC8vIHJp
Z2h0X1tpcmhzXSA9PSBrVW51c2VkIG1lYW5zIHRoYXQgdGhlcmUgaXMgcmVzaWR1YWwgZmxvdyBm
cm9tCi0gICAgICAvLyByaWdodCBub2RlIGlyaHMgdG8gdGhlIHNpbmssIHNvIHdlIGNhbiB1c2Ug
dGhhdCB0byBmaW5pc2ggdGhpcwotICAgICAgLy8gZmxvdyBwYXRoIGFuZCByZXR1cm4gc3VjY2Vz
cy4KLSAgICAgIC8vCi0gICAgICAvLyBPdGhlcndpc2UgdGhlcmUgaXMgcmVzaWR1YWwgZmxvdyB0
byBzb21lIGlsaHMuIFdlIHB1c2ggZmxvdwotICAgICAgLy8gYWxvbmcgdGhhdCBwYXRoIGFuZCBj
YWxsIG91cnNlbHZlcyByZWN1cnNpdmVseSB0byBzZWUgaWYgdGhpcwotICAgICAgLy8gdWx0aW1h
dGVseSBsZWFkcyB0byBzaW5rLgotICAgICAgaWYgKHJpZ2h0X1tpcmhzXSA9PSBrVW51c2VkIHx8
IFRyeUF1Z21lbnQocmlnaHRfW2lyaHNdLCBzZWVuKSkgewotICAgICAgICAvLyBBZGQgZmxvdyBm
cm9tIGxlZnRfW2lsaHNdIHRvIHJpZ2h0X1tpcmhzXS4KLSAgICAgICAgbGVmdF9baWxoc10gPSBp
cmhzOwotICAgICAgICByaWdodF9baXJoc10gPSBpbGhzOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgY29uc3QgTWF0Y2hN
YXRyaXgqIGdyYXBoXzsgIC8vIG5vdCBvd25lZAotICAvLyBFYWNoIGVsZW1lbnQgb2YgdGhlIGxl
ZnRfIHZlY3RvciByZXByZXNlbnRzIGEgbGVmdCBoYW5kIHNpZGUgbm9kZQotICAvLyAoaS5lLiBh
biBlbGVtZW50KSBhbmQgZWFjaCBlbGVtZW50IG9mIHJpZ2h0XyBpcyBhIHJpZ2h0IGhhbmQgc2lk
ZQotICAvLyBub2RlIChpLmUuIGEgbWF0Y2hlcikuIFRoZSB2YWx1ZXMgaW4gdGhlIGxlZnRfIHZl
Y3RvciBpbmRpY2F0ZQotICAvLyBvdXRmbG93IGZyb20gdGhhdCBub2RlIHRvIGEgbm9kZSBvbiB0
aGUgdGhlIHJpZ2h0XyBzaWRlLiBUaGUgdmFsdWVzCi0gIC8vIGluIHRoZSByaWdodF8gaW5kaWNh
dGUgaW5mbG93LCBhbmQgc3BlY2lmeSB3aGljaCBsZWZ0XyBub2RlIGlzCi0gIC8vIGZlZWRpbmcg
dGhhdCByaWdodF8gbm9kZSwgaWYgYW55LiBGb3IgZXhhbXBsZSwgbGVmdF9bM10gPT0gMSBtZWFu
cwotICAvLyB0aGVyZSdzIGEgZmxvdyBmcm9tIGVsZW1lbnQgIzMgdG8gbWF0Y2hlciAjMS4gU3Vj
aCBhIGZsb3cgd291bGQgYWxzbwotICAvLyBiZSByZWR1bmRhbnRseSByZXByZXNlbnRlZCBpbiB0
aGUgcmlnaHRfIHZlY3RvciBhcyByaWdodF9bMV0gPT0gMy4KLSAgLy8gRWxlbWVudHMgb2YgbGVm
dF8gYW5kIHJpZ2h0XyBhcmUgZWl0aGVyIGtVbnVzZWQgb3IgbXV0dWFsbHkKLSAgLy8gcmVmZXJl
bnQuIE11dHVhbGx5IHJlZmVyZW50IG1lYW5zIHRoYXQgbGVmdF9bcmlnaHRfW2ldXSA9IGkgYW5k
Ci0gIC8vIHJpZ2h0X1tsZWZ0X1tpXV0gPSBpLgotICA6OnN0ZDo6dmVjdG9yPHNpemVfdD4gbGVm
dF87Ci0gIDo6c3RkOjp2ZWN0b3I8c2l6ZV90PiByaWdodF87Ci0KLSAgR1RFU1RfRElTQUxMT1df
QVNTSUdOXyhNYXhCaXBhcnRpdGVNYXRjaFN0YXRlKTsKLX07Ci0KLWNvbnN0IHNpemVfdCBNYXhC
aXBhcnRpdGVNYXRjaFN0YXRlOjprVW51c2VkOwotCi1HVEVTVF9BUElfIEVsZW1lbnRNYXRjaGVy
UGFpcnMKLUZpbmRNYXhCaXBhcnRpdGVNYXRjaGluZyhjb25zdCBNYXRjaE1hdHJpeCYgZykgewot
ICByZXR1cm4gTWF4QmlwYXJ0aXRlTWF0Y2hTdGF0ZShnKS5Db21wdXRlKCk7Ci19Ci0KLXN0YXRp
YyB2b2lkIExvZ0VsZW1lbnRNYXRjaGVyUGFpclZlYyhjb25zdCBFbGVtZW50TWF0Y2hlclBhaXJz
JiBwYWlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OnN0ZDo6b3N0
cmVhbSogc3RyZWFtKSB7Ci0gIHR5cGVkZWYgRWxlbWVudE1hdGNoZXJQYWlyczo6Y29uc3RfaXRl
cmF0b3IgSXRlcjsKLSAgOjpzdGQ6Om9zdHJlYW0mIG9zID0gKnN0cmVhbTsKLSAgb3MgPDwgInsi
OwotICBjb25zdCBjaGFyICpzZXAgPSAiIjsKLSAgZm9yIChJdGVyIGl0ID0gcGFpcnMuYmVnaW4o
KTsgaXQgIT0gcGFpcnMuZW5kKCk7ICsraXQpIHsKLSAgICBvcyA8PCBzZXAgPDwgIlxuICAoIgot
ICAgICAgIDw8ICJlbGVtZW50ICMiIDw8IGl0LT5maXJzdCA8PCAiLCAiCi0gICAgICAgPDwgIm1h
dGNoZXIgIyIgPDwgaXQtPnNlY29uZCA8PCAiKSI7Ci0gICAgc2VwID0gIiwiOwotICB9Ci0gIG9z
IDw8ICJcbn0iOwotfQotCi0vLyBUcmllcyB0byBmaW5kIGEgcGFpcmluZywgYW5kIGV4cGxhaW5z
IHRoZSByZXN1bHQuCi1HVEVTVF9BUElfIGJvb2wgRmluZFBhaXJpbmcoY29uc3QgTWF0Y2hNYXRy
aXgmIG1hdHJpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3Rl
bmVyKiBsaXN0ZW5lcikgewotICBFbGVtZW50TWF0Y2hlclBhaXJzIG1hdGNoZXMgPSBGaW5kTWF4
QmlwYXJ0aXRlTWF0Y2hpbmcobWF0cml4KTsKLQotICBzaXplX3QgbWF4X2Zsb3cgPSBtYXRjaGVz
LnNpemUoKTsKLSAgYm9vbCByZXN1bHQgPSAobWF4X2Zsb3cgPT0gbWF0cml4LlJoc1NpemUoKSk7
Ci0KLSAgaWYgKCFyZXN1bHQpIHsKLSAgICBpZiAobGlzdGVuZXItPklzSW50ZXJlc3RlZCgpKSB7
Ci0gICAgICAqbGlzdGVuZXIgPDwgIndoZXJlIG5vIHBlcm11dGF0aW9uIG9mIHRoZSBlbGVtZW50
cyBjYW4gIgotICAgICAgICAgICAgICAgICAgICJzYXRpc2Z5IGFsbCBtYXRjaGVycywgYW5kIHRo
ZSBjbG9zZXN0IG1hdGNoIGlzICIKLSAgICAgICAgICAgICAgICA8PCBtYXhfZmxvdyA8PCAiIG9m
ICIgPDwgbWF0cml4LlJoc1NpemUoKQotICAgICAgICAgICAgICAgIDw8ICIgbWF0Y2hlcnMgd2l0
aCB0aGUgcGFpcmluZ3M6XG4iOwotICAgICAgTG9nRWxlbWVudE1hdGNoZXJQYWlyVmVjKG1hdGNo
ZXMsIGxpc3RlbmVyLT5zdHJlYW0oKSk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQot
Ci0gIGlmIChtYXRjaGVzLnNpemUoKSA+IDEpIHsKLSAgICBpZiAobGlzdGVuZXItPklzSW50ZXJl
c3RlZCgpKSB7Ci0gICAgICBjb25zdCBjaGFyICpzZXAgPSAid2hlcmU6XG4iOwotICAgICAgZm9y
IChzaXplX3QgbWkgPSAwOyBtaSA8IG1hdGNoZXMuc2l6ZSgpOyArK21pKSB7Ci0gICAgICAgICps
aXN0ZW5lciA8PCBzZXAgPDwgIiAtIGVsZW1lbnQgIyIgPDwgbWF0Y2hlc1ttaV0uZmlyc3QKLSAg
ICAgICAgICAgICAgICAgIDw8ICIgaXMgbWF0Y2hlZCBieSBtYXRjaGVyICMiIDw8IG1hdGNoZXNb
bWldLnNlY29uZDsKLSAgICAgICAgc2VwID0gIixcbiI7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0g
IHJldHVybiB0cnVlOwotfQotCi1ib29sIE1hdGNoTWF0cml4OjpOZXh0R3JhcGgoKSB7Ci0gIGZv
ciAoc2l6ZV90IGlsaHMgPSAwOyBpbGhzIDwgTGhzU2l6ZSgpOyArK2lsaHMpIHsKLSAgICBmb3Ig
KHNpemVfdCBpcmhzID0gMDsgaXJocyA8IFJoc1NpemUoKTsgKytpcmhzKSB7Ci0gICAgICBjaGFy
JiBiID0gbWF0Y2hlZF9bU3BhY2VJbmRleChpbGhzLCBpcmhzKV07Ci0gICAgICBpZiAoIWIpIHsK
LSAgICAgICAgYiA9IDE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgYiA9
IDA7Ci0gICAgfQotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBNYXRjaE1hdHJpeDo6
UmFuZG9taXplKCkgewotICBmb3IgKHNpemVfdCBpbGhzID0gMDsgaWxocyA8IExoc1NpemUoKTsg
KytpbGhzKSB7Ci0gICAgZm9yIChzaXplX3QgaXJocyA9IDA7IGlyaHMgPCBSaHNTaXplKCk7ICsr
aXJocykgewotICAgICAgY2hhciYgYiA9IG1hdGNoZWRfW1NwYWNlSW5kZXgoaWxocywgaXJocyld
OwotICAgICAgYiA9IHN0YXRpY19jYXN0PGNoYXI+KHJhbmQoKSAmIDEpOyAgLy8gTk9MSU5UCi0g
ICAgfQotICB9Ci19Ci0KLXN0ZDo6c3RyaW5nIE1hdGNoTWF0cml4OjpEZWJ1Z1N0cmluZygpIGNv
bnN0IHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgY29uc3QgY2hhciAqc2VwID0gIiI7
Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTGhzU2l6ZSgpOyArK2kpIHsKLSAgICBzcyA8PCBz
ZXA7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBSaHNTaXplKCk7ICsraikgewotICAgICAg
c3MgPDwgSGFzRWRnZShpLCBqKTsKLSAgICB9Ci0gICAgc2VwID0gIjsiOwotICB9Ci0gIHJldHVy
biBzcy5zdHIoKTsKLX0KLQotdm9pZCBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFz
ZTo6RGVzY3JpYmVUb0ltcGwoCi0gICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gIGlm
IChtYXRjaGVyX2Rlc2NyaWJlcnNfLmVtcHR5KCkpIHsKLSAgICAqb3MgPDwgImlzIGVtcHR5IjsK
LSAgICByZXR1cm47Ci0gIH0KLSAgaWYgKG1hdGNoZXJfZGVzY3JpYmVyc18uc2l6ZSgpID09IDEp
IHsKLSAgICAqb3MgPDwgImhhcyAiIDw8IEVsZW1lbnRzKDEpIDw8ICIgYW5kIHRoYXQgZWxlbWVu
dCAiOwotICAgIG1hdGNoZXJfZGVzY3JpYmVyc19bMF0tPkRlc2NyaWJlVG8ob3MpOwotICAgIHJl
dHVybjsKLSAgfQotICAqb3MgPDwgImhhcyAiIDw8IEVsZW1lbnRzKG1hdGNoZXJfZGVzY3JpYmVy
c18uc2l6ZSgpKQotICAgICAgPDwgIiBhbmQgdGhlcmUgZXhpc3RzIHNvbWUgcGVybXV0YXRpb24g
b2YgZWxlbWVudHMgc3VjaCB0aGF0OlxuIjsKLSAgY29uc3QgY2hhciogc2VwID0gIiI7Ci0gIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IG1hdGNoZXJfZGVzY3JpYmVyc18uc2l6ZSgpOyArK2kpIHsK
LSAgICAqb3MgPDwgc2VwIDw8ICIgLSBlbGVtZW50ICMiIDw8IGkgPDwgIiAiOwotICAgIG1hdGNo
ZXJfZGVzY3JpYmVyc19baV0tPkRlc2NyaWJlVG8ob3MpOwotICAgIHNlcCA9ICIsIGFuZFxuIjsK
LSAgfQotfQotCi12b2lkIFVub3JkZXJlZEVsZW1lbnRzQXJlTWF0Y2hlckltcGxCYXNlOjpEZXNj
cmliZU5lZ2F0aW9uVG9JbXBsKAotICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgY29uc3QgewotICBp
ZiAobWF0Y2hlcl9kZXNjcmliZXJzXy5lbXB0eSgpKSB7Ci0gICAgKm9zIDw8ICJpc24ndCBlbXB0
eSI7Ci0gICAgcmV0dXJuOwotICB9Ci0gIGlmIChtYXRjaGVyX2Rlc2NyaWJlcnNfLnNpemUoKSA9
PSAxKSB7Ci0gICAgKm9zIDw8ICJkb2Vzbid0IGhhdmUgIiA8PCBFbGVtZW50cygxKQotICAgICAg
ICA8PCAiLCBvciBoYXMgIiA8PCBFbGVtZW50cygxKSA8PCAiIHRoYXQgIjsKLSAgICBtYXRjaGVy
X2Rlc2NyaWJlcnNfWzBdLT5EZXNjcmliZU5lZ2F0aW9uVG8ob3MpOwotICAgIHJldHVybjsKLSAg
fQotICAqb3MgPDwgImRvZXNuJ3QgaGF2ZSAiIDw8IEVsZW1lbnRzKG1hdGNoZXJfZGVzY3JpYmVy
c18uc2l6ZSgpKQotICAgICAgPDwgIiwgb3IgdGhlcmUgZXhpc3RzIG5vIHBlcm11dGF0aW9uIG9m
IGVsZW1lbnRzIHN1Y2ggdGhhdDpcbiI7Ci0gIGNvbnN0IGNoYXIqIHNlcCA9ICIiOwotICBmb3Ig
KHNpemVfdCBpID0gMDsgaSAhPSBtYXRjaGVyX2Rlc2NyaWJlcnNfLnNpemUoKTsgKytpKSB7Ci0g
ICAgKm9zIDw8IHNlcCA8PCAiIC0gZWxlbWVudCAjIiA8PCBpIDw8ICIgIjsKLSAgICBtYXRjaGVy
X2Rlc2NyaWJlcnNfW2ldLT5EZXNjcmliZVRvKG9zKTsKLSAgICBzZXAgPSAiLCBhbmRcbiI7Ci0g
IH0KLX0KLQotLy8gQ2hlY2tzIHRoYXQgYWxsIG1hdGNoZXJzIG1hdGNoIGF0IGxlYXN0IG9uZSBl
bGVtZW50LCBhbmQgdGhhdCBhbGwKLS8vIGVsZW1lbnRzIG1hdGNoIGF0IGxlYXN0IG9uZSBtYXRj
aGVyLiBUaGlzIGVuYWJsZXMgZmFzdGVyIG1hdGNoaW5nCi0vLyBhbmQgYmV0dGVyIGVycm9yIHJl
cG9ydGluZy4KLS8vIFJldHVybnMgZmFsc2UsIHdyaXRpbmcgYW4gZXhwbGFuYXRpb24gdG8gJ2xp
c3RlbmVyJywgaWYgYW5kIG9ubHkKLS8vIGlmIHRoZSBzdWNjZXNzIGNyaXRlcmlhIGFyZSBub3Qg
bWV0LgotYm9vbCBVbm9yZGVyZWRFbGVtZW50c0FyZU1hdGNoZXJJbXBsQmFzZTo6Ci0gICAgVmVy
aWZ5QWxsRWxlbWVudHNBbmRNYXRjaGVyc0FyZU1hdGNoZWQoCi0gICAgICAgIGNvbnN0IDo6c3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBlbGVtZW50X3ByaW50b3V0cywKLSAgICAgICAgY29uc3Qg
TWF0Y2hNYXRyaXgmIG1hdHJpeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0
IHsKLSAgYm9vbCByZXN1bHQgPSB0cnVlOwotICA6OnN0ZDo6dmVjdG9yPGNoYXI+IGVsZW1lbnRf
bWF0Y2hlZChtYXRyaXguTGhzU2l6ZSgpLCAwKTsKLSAgOjpzdGQ6OnZlY3RvcjxjaGFyPiBtYXRj
aGVyX21hdGNoZWQobWF0cml4LlJoc1NpemUoKSwgMCk7Ci0KLSAgZm9yIChzaXplX3QgaWxocyA9
IDA7IGlsaHMgPCBtYXRyaXguTGhzU2l6ZSgpOyBpbGhzKyspIHsKLSAgICBmb3IgKHNpemVfdCBp
cmhzID0gMDsgaXJocyA8IG1hdHJpeC5SaHNTaXplKCk7IGlyaHMrKykgewotICAgICAgY2hhciBt
YXRjaGVkID0gbWF0cml4Lkhhc0VkZ2UoaWxocywgaXJocyk7Ci0gICAgICBlbGVtZW50X21hdGNo
ZWRbaWxoc10gfD0gbWF0Y2hlZDsKLSAgICAgIG1hdGNoZXJfbWF0Y2hlZFtpcmhzXSB8PSBtYXRj
aGVkOwotICAgIH0KLSAgfQotCi0gIHsKLSAgICBjb25zdCBjaGFyKiBzZXAgPQotICAgICAgICAi
d2hlcmUgdGhlIGZvbGxvd2luZyBtYXRjaGVycyBkb24ndCBtYXRjaCBhbnkgZWxlbWVudHM6XG4i
OwotICAgIGZvciAoc2l6ZV90IG1pID0gMDsgbWkgPCBtYXRjaGVyX21hdGNoZWQuc2l6ZSgpOyAr
K21pKSB7Ci0gICAgICBpZiAobWF0Y2hlcl9tYXRjaGVkW21pXSkKLSAgICAgICAgY29udGludWU7
Ci0gICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgIGlmIChsaXN0ZW5lci0+SXNJbnRlcmVzdGVk
KCkpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8IHNlcCA8PCAibWF0Y2hlciAjIiA8PCBtaSA8PCAi
OiAiOwotICAgICAgICBtYXRjaGVyX2Rlc2NyaWJlcnNfW21pXS0+RGVzY3JpYmVUbyhsaXN0ZW5l
ci0+c3RyZWFtKCkpOwotICAgICAgICBzZXAgPSAiLFxuIjsKLSAgICAgIH0KLSAgICB9Ci0gIH0K
LQotICB7Ci0gICAgY29uc3QgY2hhciogc2VwID0KLSAgICAgICAgIndoZXJlIHRoZSBmb2xsb3dp
bmcgZWxlbWVudHMgZG9uJ3QgbWF0Y2ggYW55IG1hdGNoZXJzOlxuIjsKLSAgICBjb25zdCBjaGFy
KiBvdXRlcl9zZXAgPSAiIjsKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgb3V0ZXJfc2VwID0g
IlxuYW5kICI7Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGVpID0gMDsgZWkgPCBlbGVtZW50X21h
dGNoZWQuc2l6ZSgpOyArK2VpKSB7Ci0gICAgICBpZiAoZWxlbWVudF9tYXRjaGVkW2VpXSkKLSAg
ICAgICAgY29udGludWU7Ci0gICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgIGlmIChsaXN0ZW5l
ci0+SXNJbnRlcmVzdGVkKCkpIHsKLSAgICAgICAgKmxpc3RlbmVyIDw8IG91dGVyX3NlcCA8PCBz
ZXAgPDwgImVsZW1lbnQgIyIgPDwgZWkgPDwgIjogIgotICAgICAgICAgICAgICAgICAgPDwgZWxl
bWVudF9wcmludG91dHNbZWldOwotICAgICAgICBzZXAgPSAiLFxuIjsKLSAgICAgICAgb3V0ZXJf
c2VwID0gIiI7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1zcGVjLWJ1aWxkZXJzLmNjIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2sv
c3JjL2dtb2NrLXNwZWMtYnVpbGRlcnMuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJmYTFlZTRiYmJjNy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay1z
cGVjLWJ1aWxkZXJzLmNjCisrKyAvZGV2L251bGwKQEAgLTEsODIyICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsg
Zm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50
cyB0aGUgc3BlYyBidWlsZGVyIHN5bnRheCAoT05fQ0FMTCBhbmQKLS8vIEVYUEVDVF9DQUxMKS4K
LQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLXNwZWMtYnVpbGRlcnMuaCIKLQotI2luY2x1ZGUgPHN0
ZGxpYi5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8bWFwPgot
I2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2su
aCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaWYgR1RFU1RfT1NfQ1lHV0lOIHx8IEdU
RVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQwotIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5P
TElOVAotI2VuZGlmCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0KLS8vIFByb3RlY3RzIHRoZSBtb2NrIG9iamVjdCByZWdpc3RyeSAoaW4gY2xhc3MgTW9jayks
IGFsbCBmdW5jdGlvbgotLy8gbW9ja2VycywgYW5kIGFsbCBleHBlY3RhdGlvbnMuCi1HVEVTVF9B
UElfIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKGdfZ21vY2tfbXV0ZXgpOwotCi0vLyBMb2dz
IGEgbWVzc2FnZSBpbmNsdWRpbmcgZmlsZSBhbmQgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uCi1H
VEVTVF9BUElfIHZvaWQgTG9nV2l0aExvY2F0aW9uKHRlc3Rpbmc6OmludGVybmFsOjpMb2dTZXZl
cml0eSBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7Ci0gIDo6c3RkOjpvc3RyaW5nc3RyZWFtIHM7Ci0gIHMg
PDwgZmlsZSA8PCAiOiIgPDwgbGluZSA8PCAiOiAiIDw8IG1lc3NhZ2UgPDwgOjpzdGQ6OmVuZGw7
Ci0gIExvZyhzZXZlcml0eSwgcy5zdHIoKSwgMCk7Ci19Ci0KLS8vIENvbnN0cnVjdHMgYW4gRXhw
ZWN0YXRpb25CYXNlIG9iamVjdC4KLUV4cGVjdGF0aW9uQmFzZTo6RXhwZWN0YXRpb25CYXNlKGNv
bnN0IGNoYXIqIGFfZmlsZSwgaW50IGFfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBhX3NvdXJjZV90ZXh0KQotICAgIDogZmlsZV8oYV9m
aWxlKSwKLSAgICAgIGxpbmVfKGFfbGluZSksCi0gICAgICBzb3VyY2VfdGV4dF8oYV9zb3VyY2Vf
dGV4dCksCi0gICAgICBjYXJkaW5hbGl0eV9zcGVjaWZpZWRfKGZhbHNlKSwKLSAgICAgIGNhcmRp
bmFsaXR5XyhFeGFjdGx5KDEpKSwKLSAgICAgIGNhbGxfY291bnRfKDApLAotICAgICAgcmV0aXJl
ZF8oZmFsc2UpLAotICAgICAgZXh0cmFfbWF0Y2hlcl9zcGVjaWZpZWRfKGZhbHNlKSwKLSAgICAg
IHJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfKGZhbHNlKSwKLSAgICAgIHJldGlyZXNfb25fc2F0
dXJhdGlvbl8oZmFsc2UpLAotICAgICAgbGFzdF9jbGF1c2VfKGtOb25lKSwKLSAgICAgIGFjdGlv
bl9jb3VudF9jaGVja2VkXyhmYWxzZSkge30KLQotLy8gRGVzdHJ1Y3RzIGFuIEV4cGVjdGF0aW9u
QmFzZSBvYmplY3QuCi1FeHBlY3RhdGlvbkJhc2U6On5FeHBlY3RhdGlvbkJhc2UoKSB7fQotCi0v
LyBFeHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgY2FyZGluYWxpdHkgb2YgdGhpcyBleHBlY3RhdGlv
bi4gIFVzZWQgYnkKLS8vIHRoZSBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGUgLlRpbWVzKCkg
Y2xhdXNlLgotdm9pZCBFeHBlY3RhdGlvbkJhc2U6OlNwZWNpZnlDYXJkaW5hbGl0eShjb25zdCBD
YXJkaW5hbGl0eSYgYV9jYXJkaW5hbGl0eSkgewotICBjYXJkaW5hbGl0eV9zcGVjaWZpZWRfID0g
dHJ1ZTsKLSAgY2FyZGluYWxpdHlfID0gYV9jYXJkaW5hbGl0eTsKLX0KLQotLy8gUmV0aXJlcyBh
bGwgcHJlLXJlcXVpc2l0ZXMgb2YgdGhpcyBleHBlY3RhdGlvbi4KLXZvaWQgRXhwZWN0YXRpb25C
YXNlOjpSZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCkKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19S
RVFVSVJFRF8oZ19nbW9ja19tdXRleCkgewotICBpZiAoaXNfcmV0aXJlZCgpKSB7Ci0gICAgLy8g
V2UgY2FuIHRha2UgdGhpcyBzaG9ydC1jdXQgYXMgd2UgbmV2ZXIgcmV0aXJlIGFuIGV4cGVjdGF0
aW9uCi0gICAgLy8gdW50aWwgd2UgaGF2ZSByZXRpcmVkIGFsbCBpdHMgcHJlLXJlcXVpc2l0ZXMu
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgZm9yIChFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uYmVnaW4oKTsKLSAgICAgICBpdCAhPSBp
bW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uZW5kKCk7ICsraXQpIHsKLSAgICBFeHBlY3RhdGlvbkJh
c2UqIGNvbnN0IHByZXJlcXVpc2l0ZSA9IGl0LT5leHBlY3RhdGlvbl9iYXNlKCkuZ2V0KCk7Ci0g
ICAgaWYgKCFwcmVyZXF1aXNpdGUtPmlzX3JldGlyZWQoKSkgewotICAgICAgcHJlcmVxdWlzaXRl
LT5SZXRpcmVBbGxQcmVSZXF1aXNpdGVzKCk7Ci0gICAgICBwcmVyZXF1aXNpdGUtPlJldGlyZSgp
OwotICAgIH0KLSAgfQotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIGFsbCBwcmUtcmVxdWlzaXRl
cyBvZiB0aGlzIGV4cGVjdGF0aW9uIGhhdmUgYmVlbgotLy8gc2F0aXNmaWVkLgotYm9vbCBFeHBl
Y3RhdGlvbkJhc2U6OkFsbFByZXJlcXVpc2l0ZXNBcmVTYXRpc2ZpZWQoKSBjb25zdAotICAgIEdU
RVNUX0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIGdfZ21vY2tf
bXV0ZXguQXNzZXJ0SGVsZCgpOwotICBmb3IgKEV4cGVjdGF0aW9uU2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGltbWVkaWF0ZV9wcmVyZXF1aXNpdGVzXy5iZWdpbigpOwotICAgICAgIGl0ICE9IGlt
bWVkaWF0ZV9wcmVyZXF1aXNpdGVzXy5lbmQoKTsgKytpdCkgewotICAgIGlmICghKGl0LT5leHBl
Y3RhdGlvbl9iYXNlKCktPklzU2F0aXNmaWVkKCkpIHx8Ci0gICAgICAgICEoaXQtPmV4cGVjdGF0
aW9uX2Jhc2UoKS0+QWxsUHJlcmVxdWlzaXRlc0FyZVNhdGlzZmllZCgpKSkKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQWRkcyB1bnNhdGlzZmllZCBw
cmUtcmVxdWlzaXRlcyBvZiB0aGlzIGV4cGVjdGF0aW9uIHRvICdyZXN1bHQnLgotdm9pZCBFeHBl
Y3RhdGlvbkJhc2U6OkZpbmRVbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMoRXhwZWN0YXRpb25TZXQq
IHJlc3VsdCkgY29uc3QKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8oZ19nbW9j
a19tdXRleCkgewotICBnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgZm9yIChFeHBlY3Rh
dGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uYmVn
aW4oKTsKLSAgICAgICBpdCAhPSBpbW1lZGlhdGVfcHJlcmVxdWlzaXRlc18uZW5kKCk7ICsraXQp
IHsKLSAgICBpZiAoaXQtPmV4cGVjdGF0aW9uX2Jhc2UoKS0+SXNTYXRpc2ZpZWQoKSkgewotICAg
ICAgLy8gSWYgKml0IGlzIHNhdGlzZmllZCBhbmQgaGFzIGEgY2FsbCBjb3VudCBvZiAwLCBzb21l
IG9mIGl0cwotICAgICAgLy8gcHJlLXJlcXVpc2l0ZXMgbWF5IG5vdCBiZSBzYXRpc2ZpZWQgeWV0
LgotICAgICAgaWYgKGl0LT5leHBlY3RhdGlvbl9iYXNlKCktPmNhbGxfY291bnRfID09IDApIHsK
LSAgICAgICAgaXQtPmV4cGVjdGF0aW9uX2Jhc2UoKS0+RmluZFVuc2F0aXNmaWVkUHJlcmVxdWlz
aXRlcyhyZXN1bHQpOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBOb3cgdGhhdCB3
ZSBrbm93ICppdCBpcyB1bnNhdGlzZmllZCwgd2UgYXJlIG5vdCBzbyBpbnRlcmVzdGVkCi0gICAg
ICAvLyBpbiB3aGV0aGVyIGl0cyBwcmUtcmVxdWlzaXRlcyBhcmUgc2F0aXNmaWVkLiAgVGhlcmVm
b3JlIHdlCi0gICAgICAvLyBkb24ndCByZWN1cnNpdmVseSBjYWxsIEZpbmRVbnNhdGlzZmllZFBy
ZXJlcXVpc2l0ZXMoKSBoZXJlLgotICAgICAgKnJlc3VsdCArPSAqaXQ7Ci0gICAgfQotICB9Ci19
Ci0KLS8vIERlc2NyaWJlcyBob3cgbWFueSB0aW1lcyBhIGZ1bmN0aW9uIGNhbGwgbWF0Y2hpbmcg
dGhpcwotLy8gZXhwZWN0YXRpb24gaGFzIG9jY3VycmVkLgotdm9pZCBFeHBlY3RhdGlvbkJhc2U6
OkRlc2NyaWJlQ2FsbENvdW50VG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdAotICAgIEdURVNU
X0VYQ0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIGdfZ21vY2tfbXV0
ZXguQXNzZXJ0SGVsZCgpOwotCi0gIC8vIERlc2NyaWJlcyBob3cgbWFueSB0aW1lcyB0aGUgZnVu
Y3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkLgotICAqb3MgPDwgIiAgICAgICAgIEV4cGVj
dGVkOiB0byBiZSAiOwotICBjYXJkaW5hbGl0eSgpLkRlc2NyaWJlVG8ob3MpOwotICAqb3MgPDwg
IlxuICAgICAgICAgICBBY3R1YWw6ICI7Ci0gIENhcmRpbmFsaXR5OjpEZXNjcmliZUFjdHVhbENh
bGxDb3VudFRvKGNhbGxfY291bnQoKSwgb3MpOwotCi0gIC8vIERlc2NyaWJlcyB0aGUgc3RhdGUg
b2YgdGhlIGV4cGVjdGF0aW9uIChlLmcuIGlzIGl0IHNhdGlzZmllZD8KLSAgLy8gaXMgaXQgYWN0
aXZlPykuCi0gICpvcyA8PCAiIC0gIiA8PCAoSXNPdmVyU2F0dXJhdGVkKCkgPyAib3Zlci1zYXR1
cmF0ZWQiIDoKLSAgICAgICAgICAgICAgICAgICBJc1NhdHVyYXRlZCgpID8gInNhdHVyYXRlZCIg
OgotICAgICAgICAgICAgICAgICAgIElzU2F0aXNmaWVkKCkgPyAic2F0aXNmaWVkIiA6ICJ1bnNh
dGlzZmllZCIpCi0gICAgICA8PCAiIGFuZCAiCi0gICAgICA8PCAoaXNfcmV0aXJlZCgpID8gInJl
dGlyZWQiIDogImFjdGl2ZSIpOwotfQotCi0vLyBDaGVja3MgdGhlIGFjdGlvbiBjb3VudCAoaS5l
LiB0aGUgbnVtYmVyIG9mIFdpbGxPbmNlKCkgYW5kCi0vLyBXaWxsUmVwZWF0ZWRseSgpIGNsYXVz
ZXMpIGFnYWluc3QgdGhlIGNhcmRpbmFsaXR5IGlmIHRoaXMgaGFzbid0Ci0vLyBiZWVuIGRvbmUg
YmVmb3JlLiAgUHJpbnRzIGEgd2FybmluZyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgb3IgdG9vCi0v
LyBmZXcgYWN0aW9ucy4KLXZvaWQgRXhwZWN0YXRpb25CYXNlOjpDaGVja0FjdGlvbkNvdW50SWZO
b3REb25lKCkgY29uc3QKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pIHsKLSAgYm9v
bCBzaG91bGRfY2hlY2sgPSBmYWxzZTsKLSAgewotICAgIE11dGV4TG9jayBsKCZtdXRleF8pOwot
ICAgIGlmICghYWN0aW9uX2NvdW50X2NoZWNrZWRfKSB7Ci0gICAgICBhY3Rpb25fY291bnRfY2hl
Y2tlZF8gPSB0cnVlOwotICAgICAgc2hvdWxkX2NoZWNrID0gdHJ1ZTsKLSAgICB9Ci0gIH0KLQot
ICBpZiAoc2hvdWxkX2NoZWNrKSB7Ci0gICAgaWYgKCFjYXJkaW5hbGl0eV9zcGVjaWZpZWRfKSB7
Ci0gICAgICAvLyBUaGUgY2FyZGluYWxpdHkgd2FzIGluZmVycmVkIC0gbm8gbmVlZCB0byBjaGVj
ayB0aGUgYWN0aW9uCi0gICAgICAvLyBjb3VudCBhZ2FpbnN0IGl0LgotICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIFRoZSBjYXJkaW5hbGl0eSB3YXMgZXhwbGljaXRseSBzcGVjaWZpZWQu
Ci0gICAgY29uc3QgaW50IGFjdGlvbl9jb3VudCA9IHN0YXRpY19jYXN0PGludD4odW50eXBlZF9h
Y3Rpb25zXy5zaXplKCkpOwotICAgIGNvbnN0IGludCB1cHBlcl9ib3VuZCA9IGNhcmRpbmFsaXR5
KCkuQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpOwotICAgIGNvbnN0IGludCBsb3dlcl9ib3VuZCA9
IGNhcmRpbmFsaXR5KCkuQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpOwotICAgIGJvb2wgdG9vX21h
bnk7ICAvLyBUcnVlIGlmIHRoZXJlIGFyZSB0b28gbWFueSBhY3Rpb25zLCBvciBmYWxzZQotICAg
IC8vIGlmIHRoZXJlIGFyZSB0b28gZmV3LgotICAgIGlmIChhY3Rpb25fY291bnQgPiB1cHBlcl9i
b3VuZCB8fAotICAgICAgICAoYWN0aW9uX2NvdW50ID09IHVwcGVyX2JvdW5kICYmIHJlcGVhdGVk
X2FjdGlvbl9zcGVjaWZpZWRfKSkgewotICAgICAgdG9vX21hbnkgPSB0cnVlOwotICAgIH0gZWxz
ZSBpZiAoMCA8IGFjdGlvbl9jb3VudCAmJiBhY3Rpb25fY291bnQgPCBsb3dlcl9ib3VuZCAmJgot
ICAgICAgICAgICAgICAgIXJlcGVhdGVkX2FjdGlvbl9zcGVjaWZpZWRfKSB7Ci0gICAgICB0b29f
bWFueSA9IGZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
OjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgICBEZXNjcmliZUxvY2F0aW9uVG8oJnNzKTsKLSAg
ICBzcyA8PCAiVG9vICIgPDwgKHRvb19tYW55ID8gIm1hbnkiIDogImZldyIpCi0gICAgICAgPDwg
IiBhY3Rpb25zIHNwZWNpZmllZCBpbiAiIDw8IHNvdXJjZV90ZXh0KCkgPDwgIi4uLlxuIgotICAg
ICAgIDw8ICJFeHBlY3RlZCB0byBiZSAiOwotICAgIGNhcmRpbmFsaXR5KCkuRGVzY3JpYmVUbygm
c3MpOwotICAgIHNzIDw8ICIsIGJ1dCBoYXMgIiA8PCAodG9vX21hbnkgPyAiIiA6ICJvbmx5ICIp
Ci0gICAgICAgPDwgYWN0aW9uX2NvdW50IDw8ICIgV2lsbE9uY2UoKSIKLSAgICAgICA8PCAoYWN0
aW9uX2NvdW50ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgaWYgKHJlcGVhdGVkX2FjdGlvbl9zcGVj
aWZpZWRfKSB7Ci0gICAgICBzcyA8PCAiIGFuZCBhIFdpbGxSZXBlYXRlZGx5KCkiOwotICAgIH0K
LSAgICBzcyA8PCAiLiI7Ci0gICAgTG9nKGtXYXJuaW5nLCBzcy5zdHIoKSwgLTEpOyAgLy8gLTEg
bWVhbnMgImRvbid0IHByaW50IHN0YWNrIHRyYWNlIi4KLSAgfQotfQotCi0vLyBJbXBsZW1lbnRz
IHRoZSAuVGltZXMoKSBjbGF1c2UuCi12b2lkIEV4cGVjdGF0aW9uQmFzZTo6VW50eXBlZFRpbWVz
KGNvbnN0IENhcmRpbmFsaXR5JiBhX2NhcmRpbmFsaXR5KSB7Ci0gIGlmIChsYXN0X2NsYXVzZV8g
PT0ga1RpbWVzKSB7Ci0gICAgRXhwZWN0U3BlY1Byb3BlcnR5KGZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAiLlRpbWVzKCkgY2Fubm90IGFwcGVhciAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICJtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FMTCgpLiIpOwotICB9IGVsc2Ugewot
ICAgIEV4cGVjdFNwZWNQcm9wZXJ0eShsYXN0X2NsYXVzZV8gPCBrVGltZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICIuVGltZXMoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgIi5JblNlcXVlbmNlKCksIC5XaWxsT25jZSgpLCAuV2lsbFJlcGVhdGVkbHko
KSwgIgotICAgICAgICAgICAgICAgICAgICAgICAib3IgLlJldGlyZXNPblNhdHVyYXRpb24oKS4i
KTsKLSAgfQotICBsYXN0X2NsYXVzZV8gPSBrVGltZXM7Ci0KLSAgU3BlY2lmeUNhcmRpbmFsaXR5
KGFfY2FyZGluYWxpdHkpOwotfQotCi0vLyBQb2ludHMgdG8gdGhlIGltcGxpY2l0IHNlcXVlbmNl
IGludHJvZHVjZWQgYnkgYSBsaXZpbmcgSW5TZXF1ZW5jZQotLy8gb2JqZWN0IChpZiBhbnkpIGlu
IHRoZSBjdXJyZW50IHRocmVhZCBvciBOVUxMLgotR1RFU1RfQVBJXyBUaHJlYWRMb2NhbDxTZXF1
ZW5jZSo+IGdfZ21vY2tfaW1wbGljaXRfc2VxdWVuY2U7Ci0KLS8vIFJlcG9ydHMgYW4gdW5pbnRl
cmVzdGluZyBjYWxsICh3aG9zZSBkZXNjcmlwdGlvbiBpcyBpbiBtc2cpIGluIHRoZQotLy8gbWFu
bmVyIHNwZWNpZmllZCBieSAncmVhY3Rpb24nLgotdm9pZCBSZXBvcnRVbmludGVyZXN0aW5nQ2Fs
bChDYWxsUmVhY3Rpb24gcmVhY3Rpb24sIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpIHsKLSAgLy8g
SW5jbHVkZSBhIHN0YWNrIHRyYWNlIG9ubHkgaWYgLS1nbW9ja192ZXJib3NlPWluZm8gaXMgc3Bl
Y2lmaWVkLgotICBjb25zdCBpbnQgc3RhY2tfZnJhbWVzX3RvX3NraXAgPQotICAgICAgR01PQ0tf
RkxBRyh2ZXJib3NlKSA9PSBrSW5mb1ZlcmJvc2l0eSA/IDMgOiAtMTsKLSAgc3dpdGNoIChyZWFj
dGlvbikgewotICAgIGNhc2Uga0FsbG93OgotICAgICAgTG9nKGtJbmZvLCBtc2csIHN0YWNrX2Zy
YW1lc190b19za2lwKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga1dhcm46Ci0gICAgICBMb2co
a1dhcm5pbmcsCi0gICAgICAgICAgbXNnICsKLSAgICAgICAgICAiXG5OT1RFOiBZb3UgY2FuIHNh
ZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRoaXMgIgotICAgICAgICAgICJj
YWxsIHNob3VsZCBub3QgaGFwcGVuLiAgRG8gbm90IHN1cHByZXNzIGl0IGJ5IGJsaW5kbHkgYWRk
aW5nICIKLSAgICAgICAgICAiYW4gRVhQRUNUX0NBTEwoKSBpZiB5b3UgZG9uJ3QgbWVhbiB0byBl
bmZvcmNlIHRoZSBjYWxsLiAgIgotICAgICAgICAgICJTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dv
b2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCMi
Ci0gICAgICAgICAgImtub3dpbmctd2hlbi10by1leHBlY3QgZm9yIGRldGFpbHMuXG4iLAotICAg
ICAgICAgIHN0YWNrX2ZyYW1lc190b19za2lwKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
ICAvLyBGQUlMCi0gICAgICBFeHBlY3QoZmFsc2UsIE5VTEwsIC0xLCBtc2cpOwotICB9Ci19Ci0K
LVVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6OlVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UoKQot
ICAgIDogbW9ja19vYmpfKE5VTEwpLCBuYW1lXygiIikge30KLQotVW50eXBlZEZ1bmN0aW9uTW9j
a2VyQmFzZTo6flVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2UoKSB7fQotCi0vLyBTZXRzIHRoZSBt
b2NrIG9iamVjdCB0aGlzIG1vY2sgbWV0aG9kIGJlbG9uZ3MgdG8sIGFuZCByZWdpc3RlcnMKLS8v
IHRoaXMgaW5mb3JtYXRpb24gaW4gdGhlIGdsb2JhbCBtb2NrIHJlZ2lzdHJ5LiAgV2lsbCBiZSBj
YWxsZWQKLS8vIHdoZW5ldmVyIGFuIEVYUEVDVF9DQUxMKCkgb3IgT05fQ0FMTCgpIGlzIGV4ZWN1
dGVkIG9uIHRoaXMgbW9jawotLy8gbWV0aG9kLgotdm9pZCBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJC
YXNlOjpSZWdpc3Rlck93bmVyKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xPQ0tf
RVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgewotICAgIE11dGV4TG9jayBsKCZnX2dtb2Nr
X211dGV4KTsKLSAgICBtb2NrX29ial8gPSBtb2NrX29iajsKLSAgfQotICBNb2NrOjpSZWdpc3Rl
cihtb2NrX29iaiwgdGhpcyk7Ci19Ci0KLS8vIFNldHMgdGhlIG1vY2sgb2JqZWN0IHRoaXMgbW9j
ayBtZXRob2QgYmVsb25ncyB0bywgYW5kIHNldHMgdGhlIG5hbWUKLS8vIG9mIHRoZSBtb2NrIGZ1
bmN0aW9uLiAgV2lsbCBiZSBjYWxsZWQgdXBvbiBlYWNoIGludm9jYXRpb24gb2YgdGhpcwotLy8g
bW9jayBmdW5jdGlvbi4KLXZvaWQgVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6U2V0T3duZXJB
bmROYW1lKGNvbnN0IHZvaWQqIG1vY2tfb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkKLSAgICBHVEVTVF9MT0NLX0VY
Q0xVREVEXyhnX2dtb2NrX211dGV4KSB7Ci0gIC8vIFdlIHByb3RlY3QgbmFtZV8gdW5kZXIgZ19n
bW9ja19tdXRleCBpbiBjYXNlIHRoaXMgbW9jayBmdW5jdGlvbgotICAvLyBpcyBjYWxsZWQgZnJv
bSB0d28gdGhyZWFkcyBjb25jdXJyZW50bHkuCi0gIE11dGV4TG9jayBsKCZnX2dtb2NrX211dGV4
KTsKLSAgbW9ja19vYmpfID0gbW9ja19vYmo7Ci0gIG5hbWVfID0gbmFtZTsKLX0KLQotLy8gUmV0
dXJucyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgbW9ja2VkLiAgTXVzdCBiZSBjYWxs
ZWQKLS8vIGFmdGVyIFJlZ2lzdGVyT3duZXIoKSBvciBTZXRPd25lckFuZE5hbWUoKSBoYXMgYmVl
biBjYWxsZWQuCi1jb25zdCB2b2lkKiBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpNb2NrT2Jq
ZWN0KCkgY29uc3QKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhnX2dtb2NrX211dGV4KSB7Ci0g
IGNvbnN0IHZvaWQqIG1vY2tfb2JqOwotICB7Ci0gICAgLy8gV2UgcHJvdGVjdCBtb2NrX29ial8g
dW5kZXIgZ19nbW9ja19tdXRleCBpbiBjYXNlIHRoaXMgbW9jawotICAgIC8vIGZ1bmN0aW9uIGlz
IGNhbGxlZCBmcm9tIHR3byB0aHJlYWRzIGNvbmN1cnJlbnRseS4KLSAgICBNdXRleExvY2sgbCgm
Z19nbW9ja19tdXRleCk7Ci0gICAgQXNzZXJ0KG1vY2tfb2JqXyAhPSBOVUxMLCBfX0ZJTEVfXywg
X19MSU5FX18sCi0gICAgICAgICAgICJNb2NrT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBSZWdpc3Rlck93bmVyKCkgb3IgIgotICAgICAgICAgICAiU2V0T3duZXJBbmROYW1lKCkg
aGFzIGJlZW4gY2FsbGVkLiIpOwotICAgIG1vY2tfb2JqID0gbW9ja19vYmpfOwotICB9Ci0gIHJl
dHVybiBtb2NrX29iajsKLX0KLQotLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIG1vY2sgbWV0
aG9kLiAgTXVzdCBiZSBjYWxsZWQgYWZ0ZXIKLS8vIFNldE93bmVyQW5kTmFtZSgpIGhhcyBiZWVu
IGNhbGxlZC4KLWNvbnN0IGNoYXIqIFVudHlwZWRGdW5jdGlvbk1vY2tlckJhc2U6Ok5hbWUoKSBj
b25zdAotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgY29uc3Qg
Y2hhciogbmFtZTsKLSAgewotICAgIC8vIFdlIHByb3RlY3QgbmFtZV8gdW5kZXIgZ19nbW9ja19t
dXRleCBpbiBjYXNlIHRoaXMgbW9jawotICAgIC8vIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHR3
byB0aHJlYWRzIGNvbmN1cnJlbnRseS4KLSAgICBNdXRleExvY2sgbCgmZ19nbW9ja19tdXRleCk7
Ci0gICAgQXNzZXJ0KG5hbWVfICE9IE5VTEwsIF9fRklMRV9fLCBfX0xJTkVfXywKLSAgICAgICAg
ICAgIk5hbWUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIFNldE93bmVyQW5kTmFtZSgpIGhh
cyAiCi0gICAgICAgICAgICJiZWVuIGNhbGxlZC4iKTsKLSAgICBuYW1lID0gbmFtZV87Ci0gIH0K
LSAgcmV0dXJuIG5hbWU7Ci19Ci0KLS8vIENhbGN1bGF0ZXMgdGhlIHJlc3VsdCBvZiBpbnZva2lu
ZyB0aGlzIG1vY2sgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4KLS8vIGFyZ3VtZW50cywgcHJpbnRz
IGl0LCBhbmQgcmV0dXJucyBpdC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKLS8vIGZvciBk
ZWxldGluZyB0aGUgcmVzdWx0LgotVW50eXBlZEFjdGlvblJlc3VsdEhvbGRlckJhc2UqCi1VbnR5
cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpVbnR5cGVkSW52b2tlV2l0aChjb25zdCB2b2lkKiBjb25z
dCB1bnR5cGVkX2FyZ3MpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19nbW9ja19tdXRleCkg
ewotICBpZiAodW50eXBlZF9leHBlY3RhdGlvbnNfLnNpemUoKSA9PSAwKSB7Ci0gICAgLy8gTm8g
ZXhwZWN0YXRpb24gaXMgc2V0IG9uIHRoaXMgbW9jayBtZXRob2QgLSB3ZSBoYXZlIGFuCi0gICAg
Ly8gdW5pbnRlcmVzdGluZyBjYWxsLgotCi0gICAgLy8gV2UgbXVzdCBnZXQgR29vZ2xlIE1vY2sn
cyByZWFjdGlvbiBvbiB1bmludGVyZXN0aW5nIGNhbGxzCi0gICAgLy8gbWFkZSBvbiB0aGlzIG1v
Y2sgb2JqZWN0IEJFRk9SRSBwZXJmb3JtaW5nIHRoZSBhY3Rpb24sCi0gICAgLy8gYmVjYXVzZSB0
aGUgYWN0aW9uIG1heSBERUxFVEUgdGhlIG1vY2sgb2JqZWN0IGFuZCBtYWtlIHRoZQotICAgIC8v
IGZvbGxvd2luZyBleHByZXNzaW9uIG1lYW5pbmdsZXNzLgotICAgIGNvbnN0IENhbGxSZWFjdGlv
biByZWFjdGlvbiA9Ci0gICAgICAgIE1vY2s6OkdldFJlYWN0aW9uT25VbmludGVyZXN0aW5nQ2Fs
bHMoTW9ja09iamVjdCgpKTsKLQotICAgIC8vIFRydWUgaWZmIHdlIG5lZWQgdG8gcHJpbnQgdGhp
cyBjYWxsJ3MgYXJndW1lbnRzIGFuZCByZXR1cm4KLSAgICAvLyB2YWx1ZS4gIFRoaXMgZGVmaW5p
dGlvbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoCi0gICAgLy8gdGhlIGJlaGF2aW9yIG9mIFJl
cG9ydFVuaW50ZXJlc3RpbmdDYWxsKCkuCi0gICAgY29uc3QgYm9vbCBuZWVkX3RvX3JlcG9ydF91
bmludGVyZXN0aW5nX2NhbGwgPQotICAgICAgICAvLyBJZiB0aGUgdXNlciBhbGxvd3MgdGhpcyB1
bmludGVyZXN0aW5nIGNhbGwsIHdlIHByaW50IGl0Ci0gICAgICAgIC8vIG9ubHkgd2hlbiBoZSB3
YW50cyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzLgotICAgICAgICByZWFjdGlvbiA9PSBrQWxsb3cg
PyBMb2dJc1Zpc2libGUoa0luZm8pIDoKLSAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgdGhp
cyB0byBiZSBhIHdhcm5pbmcsIHdlIHByaW50IGl0IG9ubHkKLSAgICAgICAgLy8gd2hlbiBoZSB3
YW50cyB0byBzZWUgd2FybmluZ3MuCi0gICAgICAgIHJlYWN0aW9uID09IGtXYXJuID8gTG9nSXNW
aXNpYmxlKGtXYXJuaW5nKSA6Ci0gICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIHVzZXIgd2FudHMg
dGhpcyB0byBiZSBhbiBlcnJvciwgYW5kIHdlCi0gICAgICAgIC8vIHNob3VsZCBhbHdheXMgcHJp
bnQgZGV0YWlsZWQgaW5mb3JtYXRpb24gaW4gdGhlIGVycm9yLgotICAgICAgICB0cnVlOwotCi0g
ICAgaWYgKCFuZWVkX3RvX3JlcG9ydF91bmludGVyZXN0aW5nX2NhbGwpIHsKLSAgICAgIC8vIFBl
cmZvcm0gdGhlIGFjdGlvbiB3aXRob3V0IHByaW50aW5nIHRoZSBjYWxsIGluZm9ybWF0aW9uLgot
ICAgICAgcmV0dXJuIHRoaXMtPlVudHlwZWRQZXJmb3JtRGVmYXVsdEFjdGlvbih1bnR5cGVkX2Fy
Z3MsICIiKTsKLSAgICB9Ci0KLSAgICAvLyBXYXJucyBhYm91dCB0aGUgdW5pbnRlcmVzdGluZyBj
YWxsLgotICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgdGhpcy0+VW50eXBlZERlc2Ny
aWJlVW5pbnRlcmVzdGluZ0NhbGwodW50eXBlZF9hcmdzLCAmc3MpOwotCi0gICAgLy8gQ2FsY3Vs
YXRlcyB0aGUgZnVuY3Rpb24gcmVzdWx0LgotICAgIFVudHlwZWRBY3Rpb25SZXN1bHRIb2xkZXJC
YXNlKiBjb25zdCByZXN1bHQgPQotICAgICAgICB0aGlzLT5VbnR5cGVkUGVyZm9ybURlZmF1bHRB
Y3Rpb24odW50eXBlZF9hcmdzLCBzcy5zdHIoKSk7Ci0KLSAgICAvLyBQcmludHMgdGhlIGZ1bmN0
aW9uIHJlc3VsdC4KLSAgICBpZiAocmVzdWx0ICE9IE5VTEwpCi0gICAgICByZXN1bHQtPlByaW50
QXNBY3Rpb25SZXN1bHQoJnNzKTsKLQotICAgIFJlcG9ydFVuaW50ZXJlc3RpbmdDYWxsKHJlYWN0
aW9uLCBzcy5zdHIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIGJvb2wgaXNfZXhj
ZXNzaXZlID0gZmFsc2U7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIDo6c3RkOjpzdHJp
bmdzdHJlYW0gd2h5OwotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIGxvYzsKLSAgY29uc3Qgdm9pZCog
dW50eXBlZF9hY3Rpb24gPSBOVUxMOwotCi0gIC8vIFRoZSBVbnR5cGVkRmluZE1hdGNoaW5nRXhw
ZWN0YXRpb24oKSBmdW5jdGlvbiBhY3F1aXJlcyBhbmQKLSAgLy8gcmVsZWFzZXMgZ19nbW9ja19t
dXRleC4KLSAgY29uc3QgRXhwZWN0YXRpb25CYXNlKiBjb25zdCB1bnR5cGVkX2V4cGVjdGF0aW9u
ID0KLSAgICAgIHRoaXMtPlVudHlwZWRGaW5kTWF0Y2hpbmdFeHBlY3RhdGlvbigKLSAgICAgICAg
ICB1bnR5cGVkX2FyZ3MsICZ1bnR5cGVkX2FjdGlvbiwgJmlzX2V4Y2Vzc2l2ZSwKLSAgICAgICAg
ICAmc3MsICZ3aHkpOwotICBjb25zdCBib29sIGZvdW5kID0gdW50eXBlZF9leHBlY3RhdGlvbiAh
PSBOVUxMOwotCi0gIC8vIFRydWUgaWZmIHdlIG5lZWQgdG8gcHJpbnQgdGhlIGNhbGwncyBhcmd1
bWVudHMgYW5kIHJldHVybiB2YWx1ZS4KLSAgLy8gVGhpcyBkZWZpbml0aW9uIG11c3QgYmUga2Vw
dCBpbiBzeW5jIHdpdGggdGhlIHVzZXMgb2YgRXhwZWN0KCkKLSAgLy8gYW5kIExvZygpIGluIHRo
aXMgZnVuY3Rpb24uCi0gIGNvbnN0IGJvb2wgbmVlZF90b19yZXBvcnRfY2FsbCA9Ci0gICAgICAh
Zm91bmQgfHwgaXNfZXhjZXNzaXZlIHx8IExvZ0lzVmlzaWJsZShrSW5mbyk7Ci0gIGlmICghbmVl
ZF90b19yZXBvcnRfY2FsbCkgewotICAgIC8vIFBlcmZvcm0gdGhlIGFjdGlvbiB3aXRob3V0IHBy
aW50aW5nIHRoZSBjYWxsIGluZm9ybWF0aW9uLgotICAgIHJldHVybgotICAgICAgICB1bnR5cGVk
X2FjdGlvbiA9PSBOVUxMID8KLSAgICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1EZWZhdWx0QWN0
aW9uKHVudHlwZWRfYXJncywgIiIpIDoKLSAgICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1BY3Rp
b24odW50eXBlZF9hY3Rpb24sIHVudHlwZWRfYXJncyk7Ci0gIH0KLQotICBzcyA8PCAiICAgIEZ1
bmN0aW9uIGNhbGw6ICIgPDwgTmFtZSgpOwotICB0aGlzLT5VbnR5cGVkUHJpbnRBcmdzKHVudHlw
ZWRfYXJncywgJnNzKTsKLQotICAvLyBJbiBjYXNlIHRoZSBhY3Rpb24gZGVsZXRlcyBhIHBpZWNl
IG9mIHRoZSBleHBlY3RhdGlvbiwgd2UKLSAgLy8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYmVmb3Jl
aGFuZC4KLSAgaWYgKGZvdW5kICYmICFpc19leGNlc3NpdmUpIHsKLSAgICB1bnR5cGVkX2V4cGVj
dGF0aW9uLT5EZXNjcmliZUxvY2F0aW9uVG8oJmxvYyk7Ci0gIH0KLQotICBVbnR5cGVkQWN0aW9u
UmVzdWx0SG9sZGVyQmFzZSogY29uc3QgcmVzdWx0ID0KLSAgICAgIHVudHlwZWRfYWN0aW9uID09
IE5VTEwgPwotICAgICAgdGhpcy0+VW50eXBlZFBlcmZvcm1EZWZhdWx0QWN0aW9uKHVudHlwZWRf
YXJncywgc3Muc3RyKCkpIDoKLSAgICAgIHRoaXMtPlVudHlwZWRQZXJmb3JtQWN0aW9uKHVudHlw
ZWRfYWN0aW9uLCB1bnR5cGVkX2FyZ3MpOwotICBpZiAocmVzdWx0ICE9IE5VTEwpCi0gICAgcmVz
dWx0LT5QcmludEFzQWN0aW9uUmVzdWx0KCZzcyk7Ci0gIHNzIDw8ICJcbiIgPDwgd2h5LnN0cigp
OwotCi0gIGlmICghZm91bmQpIHsKLSAgICAvLyBObyBleHBlY3RhdGlvbiBtYXRjaGVzIHRoaXMg
Y2FsbCAtIHJlcG9ydHMgYSBmYWlsdXJlLgotICAgIEV4cGVjdChmYWxzZSwgTlVMTCwgLTEsIHNz
LnN0cigpKTsKLSAgfSBlbHNlIGlmIChpc19leGNlc3NpdmUpIHsKLSAgICAvLyBXZSBoYWQgYW4g
dXBwZXItYm91bmQgdmlvbGF0aW9uIGFuZCB0aGUgZmFpbHVyZSBtZXNzYWdlIGlzIGluIHNzLgot
ICAgIEV4cGVjdChmYWxzZSwgdW50eXBlZF9leHBlY3RhdGlvbi0+ZmlsZSgpLAotICAgICAgICAg
ICB1bnR5cGVkX2V4cGVjdGF0aW9uLT5saW5lKCksIHNzLnN0cigpKTsKLSAgfSBlbHNlIHsKLSAg
ICAvLyBXZSBoYWQgYW4gZXhwZWN0ZWQgY2FsbCBhbmQgdGhlIG1hdGNoaW5nIGV4cGVjdGF0aW9u
IGlzCi0gICAgLy8gZGVzY3JpYmVkIGluIHNzLgotICAgIExvZyhrSW5mbywgbG9jLnN0cigpICsg
c3Muc3RyKCksIDIpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gUmV0dXJucyBh
biBFeHBlY3RhdGlvbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIGFuZCBjby1vd25zIGV4cCwKLS8v
IHdoaWNoIG11c3QgYmUgYW4gZXhwZWN0YXRpb24gb24gdGhpcyBtb2NrIGZ1bmN0aW9uLgotRXhw
ZWN0YXRpb24gVW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZTo6R2V0SGFuZGxlT2YoRXhwZWN0YXRp
b25CYXNlKiBleHApIHsKLSAgZm9yIChVbnR5cGVkRXhwZWN0YXRpb25zOjpjb25zdF9pdGVyYXRv
ciBpdCA9Ci0gICAgICAgICAgIHVudHlwZWRfZXhwZWN0YXRpb25zXy5iZWdpbigpOwotICAgICAg
IGl0ICE9IHVudHlwZWRfZXhwZWN0YXRpb25zXy5lbmQoKTsgKytpdCkgewotICAgIGlmIChpdC0+
Z2V0KCkgPT0gZXhwKSB7Ci0gICAgICByZXR1cm4gRXhwZWN0YXRpb24oKml0KTsKLSAgICB9Ci0g
IH0KLQotICBBc3NlcnQoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVfXywgIkNhbm5vdCBmaW5kIGV4
cGVjdGF0aW9uLiIpOwotICByZXR1cm4gRXhwZWN0YXRpb24oKTsKLSAgLy8gVGhlIGFib3ZlIHN0
YXRlbWVudCBpcyBqdXN0IHRvIG1ha2UgdGhlIGNvZGUgY29tcGlsZSwgYW5kIHdpbGwKLSAgLy8g
bmV2ZXIgYmUgZXhlY3V0ZWQuCi19Ci0KLS8vIFZlcmlmaWVzIHRoYXQgYWxsIGV4cGVjdGF0aW9u
cyBvbiB0aGlzIG1vY2sgZnVuY3Rpb24gaGF2ZSBiZWVuCi0vLyBzYXRpc2ZpZWQuICBSZXBvcnRz
IG9uZSBvciBtb3JlIEdvb2dsZSBUZXN0IG5vbi1mYXRhbCBmYWlsdXJlcwotLy8gYW5kIHJldHVy
bnMgZmFsc2UgaWYgbm90LgotYm9vbCBVbnR5cGVkRnVuY3Rpb25Nb2NrZXJCYXNlOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpCi0gICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVR
VUlSRURfKGdfZ21vY2tfbXV0ZXgpIHsKLSAgZ19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0g
IGJvb2wgZXhwZWN0YXRpb25zX21ldCA9IHRydWU7Ci0gIGZvciAoVW50eXBlZEV4cGVjdGF0aW9u
czo6Y29uc3RfaXRlcmF0b3IgaXQgPQotICAgICAgICAgICB1bnR5cGVkX2V4cGVjdGF0aW9uc18u
YmVnaW4oKTsKLSAgICAgICBpdCAhPSB1bnR5cGVkX2V4cGVjdGF0aW9uc18uZW5kKCk7ICsraXQp
IHsKLSAgICBFeHBlY3RhdGlvbkJhc2UqIGNvbnN0IHVudHlwZWRfZXhwZWN0YXRpb24gPSBpdC0+
Z2V0KCk7Ci0gICAgaWYgKHVudHlwZWRfZXhwZWN0YXRpb24tPklzT3ZlclNhdHVyYXRlZCgpKSB7
Ci0gICAgICAvLyBUaGVyZSB3YXMgYW4gdXBwZXItYm91bmQgdmlvbGF0aW9uLiAgU2luY2UgdGhl
IGVycm9yIHdhcwotICAgICAgLy8gYWxyZWFkeSByZXBvcnRlZCB3aGVuIGl0IG9jY3VycmVkLCB0
aGVyZSBpcyBubyBuZWVkIHRvIGRvCi0gICAgICAvLyBhbnl0aGluZyBoZXJlLgotICAgICAgZXhw
ZWN0YXRpb25zX21ldCA9IGZhbHNlOwotICAgIH0gZWxzZSBpZiAoIXVudHlwZWRfZXhwZWN0YXRp
b24tPklzU2F0aXNmaWVkKCkpIHsKLSAgICAgIGV4cGVjdGF0aW9uc19tZXQgPSBmYWxzZTsKLSAg
ICAgIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgICBzcyAgPDwgIkFjdHVhbCBmdW5jdGlv
biBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggIgotICAgICAgICAgIDw8IHVudHlwZWRfZXhwZWN0
YXRpb24tPnNvdXJjZV90ZXh0KCkgPDwgIi4uLlxuIjsKLSAgICAgIC8vIE5vIG5lZWQgdG8gc2hv
dyB0aGUgc291cmNlIGZpbGUgbG9jYXRpb24gb2YgdGhlIGV4cGVjdGF0aW9uCi0gICAgICAvLyBp
biB0aGUgZGVzY3JpcHRpb24sIGFzIHRoZSBFeHBlY3QoKSBjYWxsIHRoYXQgZm9sbG93cyBhbHJl
YWR5Ci0gICAgICAvLyB0YWtlcyBjYXJlIG9mIGl0LgotICAgICAgdW50eXBlZF9leHBlY3RhdGlv
bi0+TWF5YmVEZXNjcmliZUV4dHJhTWF0Y2hlclRvKCZzcyk7Ci0gICAgICB1bnR5cGVkX2V4cGVj
dGF0aW9uLT5EZXNjcmliZUNhbGxDb3VudFRvKCZzcyk7Ci0gICAgICBFeHBlY3QoZmFsc2UsIHVu
dHlwZWRfZXhwZWN0YXRpb24tPmZpbGUoKSwKLSAgICAgICAgICAgICB1bnR5cGVkX2V4cGVjdGF0
aW9uLT5saW5lKCksIHNzLnN0cigpKTsKLSAgICB9Ci0gIH0KLQotICAvLyBEZWxldGluZyBvdXIg
ZXhwZWN0YXRpb25zIG1heSB0cmlnZ2VyIG90aGVyIG1vY2sgb2JqZWN0cyB0byBiZSBkZWxldGVk
LCBmb3IKLSAgLy8gZXhhbXBsZSBpZiBhbiBhY3Rpb24gY29udGFpbnMgYSByZWZlcmVuY2UgY291
bnRlZCBzbWFydCBwb2ludGVyIHRvIHRoYXQKLSAgLy8gbW9jayBvYmplY3QsIGFuZCB0aGF0IGlz
IHRoZSBsYXN0IHJlZmVyZW5jZS4gU28gaWYgd2UgZGVsZXRlIG91cgotICAvLyBleHBlY3RhdGlv
bnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBnbG9iYWwgbXV0ZXggd2UgbWF5IGRlYWRsb2Nr
IHdoZW4KLSAgLy8gdGhpcyBtZXRob2QgaXMgY2FsbGVkIGFnYWluLiBJbnN0ZWFkLCBtYWtlIGEg
Y29weSBvZiB0aGUgc2V0IG9mCi0gIC8vIGV4cGVjdGF0aW9ucyB0byBkZWxldGUsIGNsZWFyIG91
ciBzZXQgd2l0aGluIHRoZSBtdXRleCwgYW5kIHRoZW4gY2xlYXIgdGhlCi0gIC8vIGNvcGllZCBz
ZXQgb3V0c2lkZSBvZiBpdC4KLSAgVW50eXBlZEV4cGVjdGF0aW9ucyBleHBlY3RhdGlvbnNfdG9f
ZGVsZXRlOwotICB1bnR5cGVkX2V4cGVjdGF0aW9uc18uc3dhcChleHBlY3RhdGlvbnNfdG9fZGVs
ZXRlKTsKLQotICBnX2dtb2NrX211dGV4LlVubG9jaygpOwotICBleHBlY3RhdGlvbnNfdG9fZGVs
ZXRlLmNsZWFyKCk7Ci0gIGdfZ21vY2tfbXV0ZXguTG9jaygpOwotCi0gIHJldHVybiBleHBlY3Rh
dGlvbnNfbWV0OwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gQ2xhc3MgTW9j
ay4KLQotbmFtZXNwYWNlIHsKLQotdHlwZWRlZiBzdGQ6OnNldDxpbnRlcm5hbDo6VW50eXBlZEZ1
bmN0aW9uTW9ja2VyQmFzZSo+IEZ1bmN0aW9uTW9ja2VyczsKLQotLy8gVGhlIGN1cnJlbnQgc3Rh
dGUgb2YgYSBtb2NrIG9iamVjdC4gIFN1Y2ggaW5mb3JtYXRpb24gaXMgbmVlZGVkIGZvcgotLy8g
ZGV0ZWN0aW5nIGxlYWtlZCBtb2NrIG9iamVjdHMgYW5kIGV4cGxpY2l0bHkgdmVyaWZ5aW5nIGEg
bW9jaydzCi0vLyBleHBlY3RhdGlvbnMuCi1zdHJ1Y3QgTW9ja09iamVjdFN0YXRlIHsKLSAgTW9j
a09iamVjdFN0YXRlKCkKLSAgICAgIDogZmlyc3RfdXNlZF9maWxlKE5VTEwpLCBmaXJzdF91c2Vk
X2xpbmUoLTEpLCBsZWFrYWJsZShmYWxzZSkge30KLQotICAvLyBXaGVyZSBpbiB0aGUgc291cmNl
IGZpbGUgYW4gT05fQ0FMTCBvciBFWFBFQ1RfQ0FMTCBpcyBmaXJzdAotICAvLyBpbnZva2VkIG9u
IHRoaXMgbW9jayBvYmplY3QuCi0gIGNvbnN0IGNoYXIqIGZpcnN0X3VzZWRfZmlsZTsKLSAgaW50
IGZpcnN0X3VzZWRfbGluZTsKLSAgOjpzdGQ6OnN0cmluZyBmaXJzdF91c2VkX3Rlc3RfY2FzZTsK
LSAgOjpzdGQ6OnN0cmluZyBmaXJzdF91c2VkX3Rlc3Q7Ci0gIGJvb2wgbGVha2FibGU7ICAvLyB0
cnVlIGlmZiBpdCdzIE9LIHRvIGxlYWsgdGhlIG9iamVjdC4KLSAgRnVuY3Rpb25Nb2NrZXJzIGZ1
bmN0aW9uX21vY2tlcnM7ICAvLyBBbGwgcmVnaXN0ZXJlZCBtZXRob2RzIG9mIHRoZSBvYmplY3Qu
Ci19OwotCi0vLyBBIGdsb2JhbCByZWdpc3RyeSBob2xkaW5nIHRoZSBzdGF0ZSBvZiBhbGwgbW9j
ayBvYmplY3RzIHRoYXQgYXJlCi0vLyBhbGl2ZS4gIEEgbW9jayBvYmplY3QgaXMgYWRkZWQgdG8g
dGhpcyByZWdpc3RyeSB0aGUgZmlyc3QgdGltZQotLy8gTW9jazo6QWxsb3dMZWFrKCksIE9OX0NB
TEwoKSwgb3IgRVhQRUNUX0NBTEwoKSBpcyBjYWxsZWQgb24gaXQuICBJdAotLy8gaXMgcmVtb3Zl
ZCBmcm9tIHRoZSByZWdpc3RyeSBpbiB0aGUgbW9jayBvYmplY3QncyBkZXN0cnVjdG9yLgotY2xh
c3MgTW9ja09iamVjdFJlZ2lzdHJ5IHsKLSBwdWJsaWM6Ci0gIC8vIE1hcHMgYSBtb2NrIG9iamVj
dCAoaWRlbnRpZmllZCBieSBpdHMgYWRkcmVzcykgdG8gaXRzIHN0YXRlLgotICB0eXBlZGVmIHN0
ZDo6bWFwPGNvbnN0IHZvaWQqLCBNb2NrT2JqZWN0U3RhdGU+IFN0YXRlTWFwOwotCi0gIC8vIFRo
aXMgZGVzdHJ1Y3RvciB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgcHJvZ3JhbSBleGl0cywgYWZ0ZXIg
YWxsCi0gIC8vIHRlc3RzIGluIGl0IGhhdmUgYmVlbiBydW4uICBCeSB0aGVuLCB0aGVyZSBzaG91
bGQgYmUgbm8gbW9jawotICAvLyBvYmplY3QgYWxpdmUuICBUaGVyZWZvcmUgd2UgcmVwb3J0IGFu
eSBsaXZpbmcgb2JqZWN0IGFzIHRlc3QKLSAgLy8gZmFpbHVyZSwgdW5sZXNzIHRoZSB1c2VyIGV4
cGxpY2l0bHkgYXNrZWQgdXMgdG8gaWdub3JlIGl0LgotICB+TW9ja09iamVjdFJlZ2lzdHJ5KCkg
ewotICAgIC8vICJ1c2luZyA6OnN0ZDo6Y291dDsiIGRvZXNuJ3Qgd29yayB3aXRoIFN5bWJpYW4n
cyBTVExwb3J0LCB3aGVyZSBjb3V0IGlzCi0gICAgLy8gYSBtYWNyby4KLQotICAgIGlmICghR01P
Q0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9ja3MpKQotICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxl
YWtlZF9jb3VudCA9IDA7Ci0gICAgZm9yIChTdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBz
dGF0ZXNfLmJlZ2luKCk7IGl0ICE9IHN0YXRlc18uZW5kKCk7Ci0gICAgICAgICArK2l0KSB7Ci0g
ICAgICBpZiAoaXQtPnNlY29uZC5sZWFrYWJsZSkgIC8vIFRoZSB1c2VyIHNhaWQgaXQncyBmaW5l
IHRvIGxlYWsgdGhpcyBvYmplY3QuCi0gICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAvLyBUT0RP
KHdhbkBnb29nbGUuY29tKTogUHJpbnQgdGhlIHR5cGUgb2YgdGhlIGxlYWtlZCBvYmplY3QuCi0g
ICAgICAvLyBUaGlzIGNhbiBoZWxwIHRoZSB1c2VyIGlkZW50aWZ5IHRoZSBsZWFrZWQgb2JqZWN0
LgotICAgICAgc3RkOjpjb3V0IDw8ICJcbiI7Ci0gICAgICBjb25zdCBNb2NrT2JqZWN0U3RhdGUm
IHN0YXRlID0gaXQtPnNlY29uZDsKLSAgICAgIHN0ZDo6Y291dCA8PCBpbnRlcm5hbDo6Rm9ybWF0
RmlsZUxvY2F0aW9uKHN0YXRlLmZpcnN0X3VzZWRfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZpcnN0X3VzZWRfbGluZSk7Ci0gICAg
ICBzdGQ6OmNvdXQgPDwgIiBFUlJPUjogdGhpcyBtb2NrIG9iamVjdCI7Ci0gICAgICBpZiAoc3Rh
dGUuZmlyc3RfdXNlZF90ZXN0ICE9ICIiKSB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiICh1c2Vk
IGluIHRlc3QgIiA8PCBzdGF0ZS5maXJzdF91c2VkX3Rlc3RfY2FzZSA8PCAiLiIKLSAgICAgICAg
ICAgICA8PCBzdGF0ZS5maXJzdF91c2VkX3Rlc3QgPDwgIikiOwotICAgICAgfQotICAgICAgc3Rk
Ojpjb3V0IDw8ICIgc2hvdWxkIGJlIGRlbGV0ZWQgYnV0IG5ldmVyIGlzLiBJdHMgYWRkcmVzcyBp
cyBAIgotICAgICAgICAgICA8PCBpdC0+Zmlyc3QgPDwgIi4iOwotICAgICAgbGVha2VkX2NvdW50
Kys7Ci0gICAgfQotICAgIGlmIChsZWFrZWRfY291bnQgPiAwKSB7Ci0gICAgICBzdGQ6OmNvdXQg
PDwgIlxuRVJST1I6ICIgPDwgbGVha2VkX2NvdW50Ci0gICAgICAgICAgIDw8ICIgbGVha2VkIG1v
Y2sgIiA8PCAobGVha2VkX2NvdW50ID09IDEgPyAib2JqZWN0IiA6ICJvYmplY3RzIikKLSAgICAg
ICAgICAgPDwgIiBmb3VuZCBhdCBwcm9ncmFtIGV4aXQuXG4iOwotICAgICAgc3RkOjpjb3V0LmZs
dXNoKCk7Ci0gICAgICA6OnN0ZDo6Y2Vyci5mbHVzaCgpOwotICAgICAgLy8gUlVOX0FMTF9URVNU
UygpIGhhcyBhbHJlYWR5IHJldHVybmVkIHdoZW4gdGhpcyBkZXN0cnVjdG9yIGlzCi0gICAgICAv
LyBjYWxsZWQuICBUaGVyZWZvcmUgd2UgY2Fubm90IHVzZSB0aGUgbm9ybWFsIEdvb2dsZSBUZXN0
Ci0gICAgICAvLyBmYWlsdXJlIHJlcG9ydGluZyBtZWNoYW5pc20uCi0gICAgICBfZXhpdCgxKTsg
IC8vIFdlIGNhbm5vdCBjYWxsIGV4aXQoKSBhcyBpdCBpcyBub3QgcmVlbnRyYW50IGFuZAotICAg
ICAgICAgICAgICAgICAvLyBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gY2FsbGVkLgotICAgIH0KLSAg
fQotCi0gIFN0YXRlTWFwJiBzdGF0ZXMoKSB7IHJldHVybiBzdGF0ZXNfOyB9Ci0KLSBwcml2YXRl
OgotICBTdGF0ZU1hcCBzdGF0ZXNfOwotfTsKLQotLy8gUHJvdGVjdGVkIGJ5IGdfZ21vY2tfbXV0
ZXguCi1Nb2NrT2JqZWN0UmVnaXN0cnkgZ19tb2NrX29iamVjdF9yZWdpc3RyeTsKLQotLy8gTWFw
cyBhIG1vY2sgb2JqZWN0IHRvIHRoZSByZWFjdGlvbiBHb29nbGUgTW9jayBzaG91bGQgaGF2ZSB3
aGVuIGFuCi0vLyB1bmludGVyZXN0aW5nIG1ldGhvZCBpcyBjYWxsZWQuICBQcm90ZWN0ZWQgYnkg
Z19nbW9ja19tdXRleC4KLXN0ZDo6bWFwPGNvbnN0IHZvaWQqLCBpbnRlcm5hbDo6Q2FsbFJlYWN0
aW9uPiBnX3VuaW50ZXJlc3RpbmdfY2FsbF9yZWFjdGlvbjsKLQotLy8gU2V0cyB0aGUgcmVhY3Rp
b24gR29vZ2xlIE1vY2sgc2hvdWxkIGhhdmUgd2hlbiBhbiB1bmludGVyZXN0aW5nCi0vLyBtZXRo
b2Qgb2YgdGhlIGdpdmVuIG1vY2sgb2JqZWN0IGlzIGNhbGxlZC4KLXZvaWQgU2V0UmVhY3Rpb25P
blVuaW50ZXJlc3RpbmdDYWxscyhjb25zdCB2b2lkKiBtb2NrX29iaiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6Q2FsbFJlYWN0aW9uIHJlYWN0aW9uKQot
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIGlu
dGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotICBnX3VuaW50
ZXJlc3RpbmdfY2FsbF9yZWFjdGlvblttb2NrX29ial0gPSByZWFjdGlvbjsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlCi0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIHRvIGFsbG93IHVuaW50ZXJlc3Rpbmcg
Y2FsbHMgb24gdGhlIGdpdmVuIG1vY2sKLS8vIG9iamVjdC4KLXZvaWQgTW9jazo6QWxsb3dVbmlu
dGVyZXN0aW5nQ2FsbHMoY29uc3Qgdm9pZCogbW9ja19vYmopCi0gICAgR1RFU1RfTE9DS19FWENM
VURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKLSAgU2V0UmVhY3Rpb25PblVuaW50ZXJl
c3RpbmdDYWxscyhtb2NrX29iaiwgaW50ZXJuYWw6OmtBbGxvdyk7Ci19Ci0KLS8vIFRlbGxzIEdv
b2dsZSBNb2NrIHRvIHdhcm4gdGhlIHVzZXIgYWJvdXQgdW5pbnRlcmVzdGluZyBjYWxscyBvbiB0
aGUKLS8vIGdpdmVuIG1vY2sgb2JqZWN0Lgotdm9pZCBNb2NrOjpXYXJuVW5pbnRlcmVzdGluZ0Nh
bGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVy
bmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIFNldFJlYWN0aW9uT25VbmludGVyZXN0aW5nQ2FsbHMo
bW9ja19vYmosIGludGVybmFsOjprV2Fybik7Ci19Ci0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIHRv
IGZhaWwgdW5pbnRlcmVzdGluZyBjYWxscyBvbiB0aGUgZ2l2ZW4gbW9jawotLy8gb2JqZWN0Lgot
dm9pZCBNb2NrOjpGYWlsVW5pbnRlcmVzdGluZ0NhbGxzKGNvbnN0IHZvaWQqIG1vY2tfb2JqKQot
ICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIFNl
dFJlYWN0aW9uT25VbmludGVyZXN0aW5nQ2FsbHMobW9ja19vYmosIGludGVybmFsOjprRmFpbCk7
Ci19Ci0KLS8vIFRlbGxzIEdvb2dsZSBNb2NrIHRoZSBnaXZlbiBtb2NrIG9iamVjdCBpcyBiZWlu
ZyBkZXN0cm95ZWQgYW5kIGl0cwotLy8gZW50cnkgaW4gdGhlIGNhbGwtcmVhY3Rpb24gdGFibGUg
c2hvdWxkIGJlIHJlbW92ZWQuCi12b2lkIE1vY2s6OlVucmVnaXN0ZXJDYWxsUmVhY3Rpb24oY29u
c3Qgdm9pZCogbW9ja19vYmopCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6Omdf
Z21vY2tfbXV0ZXgpIHsKLSAgaW50ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19nbW9j
a19tdXRleCk7Ci0gIGdfdW5pbnRlcmVzdGluZ19jYWxsX3JlYWN0aW9uLmVyYXNlKG1vY2tfb2Jq
KTsKLX0KLQotLy8gUmV0dXJucyB0aGUgcmVhY3Rpb24gR29vZ2xlIE1vY2sgd2lsbCBoYXZlIG9u
IHVuaW50ZXJlc3RpbmcgY2FsbHMKLS8vIG1hZGUgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0Lgot
aW50ZXJuYWw6OkNhbGxSZWFjdGlvbiBNb2NrOjpHZXRSZWFjdGlvbk9uVW5pbnRlcmVzdGluZ0Nh
bGxzKAotICAgIGNvbnN0IHZvaWQqIG1vY2tfb2JqKQotICAgICAgICBHVEVTVF9MT0NLX0VYQ0xV
REVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwo
JmludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLSAgcmV0dXJuIChnX3VuaW50ZXJlc3RpbmdfY2Fs
bF9yZWFjdGlvbi5jb3VudChtb2NrX29iaikgPT0gMCkgPwotICAgICAgaW50ZXJuYWw6OmtEZWZh
dWx0IDogZ191bmludGVyZXN0aW5nX2NhbGxfcmVhY3Rpb25bbW9ja19vYmpdOwotfQotCi0vLyBU
ZWxscyBHb29nbGUgTW9jayB0byBpZ25vcmUgbW9ja19vYmogd2hlbiBjaGVja2luZyBmb3IgbGVh
a2VkIG1vY2sKLS8vIG9iamVjdHMuCi12b2lkIE1vY2s6OkFsbG93TGVhayhjb25zdCB2b2lkKiBt
b2NrX29iaikKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRl
eCkgewotICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsK
LSAgZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKVttb2NrX29ial0ubGVha2FibGUgPSB0
cnVlOwotfQotCi0vLyBWZXJpZmllcyBhbmQgY2xlYXJzIGFsbCBleHBlY3RhdGlvbnMgb24gdGhl
IGdpdmVuIG1vY2sgb2JqZWN0LiAgSWYKLS8vIHRoZSBleHBlY3RhdGlvbnMgYXJlbid0IHNhdGlz
ZmllZCwgZ2VuZXJhdGVzIG9uZSBvciBtb3JlIEdvb2dsZQotLy8gVGVzdCBub24tZmF0YWwgZmFp
bHVyZXMgYW5kIHJldHVybnMgZmFsc2UuCi1ib29sIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKHZvaWQqIG1vY2tfb2JqKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFs
OjpnX2dtb2NrX211dGV4KSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6Omdf
Z21vY2tfbXV0ZXgpOwotICByZXR1cm4gVmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQo
bW9ja19vYmopOwotfQotCi0vLyBWZXJpZmllcyBhbGwgZXhwZWN0YXRpb25zIG9uIHRoZSBnaXZl
biBtb2NrIG9iamVjdCBhbmQgY2xlYXJzIGl0cwotLy8gZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBl
Y3RhdGlvbnMuICBSZXR1cm5zIHRydWUgaWZmIHRoZQotLy8gdmVyaWZpY2F0aW9uIHdhcyBzdWNj
ZXNzZnVsLgotYm9vbCBNb2NrOjpWZXJpZnlBbmRDbGVhcih2b2lkKiBtb2NrX29iaikKLSAgICBH
VEVTVF9MT0NLX0VYQ0xVREVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBpbnRlcm5h
bDo6TXV0ZXhMb2NrIGwoJmludGVybmFsOjpnX2dtb2NrX211dGV4KTsKLSAgQ2xlYXJEZWZhdWx0
QWN0aW9uc0xvY2tlZChtb2NrX29iaik7Ci0gIHJldHVybiBWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9uc0xvY2tlZChtb2NrX29iaik7Ci19Ci0KLS8vIFZlcmlmaWVzIGFuZCBjbGVhcnMgYWxsIGV4
cGVjdGF0aW9ucyBvbiB0aGUgZ2l2ZW4gbW9jayBvYmplY3QuICBJZgotLy8gdGhlIGV4cGVjdGF0
aW9ucyBhcmVuJ3Qgc2F0aXNmaWVkLCBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgR29vZ2xlCi0vLyBU
ZXN0IG5vbi1mYXRhbCBmYWlsdXJlcyBhbmQgcmV0dXJucyBmYWxzZS4KLWJvb2wgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNMb2NrZWQodm9pZCogbW9ja19vYmopCi0gICAgR1RFU1Rf
RVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7Ci0gIGlu
dGVybmFsOjpnX2dtb2NrX211dGV4LkFzc2VydEhlbGQoKTsKLSAgaWYgKGdfbW9ja19vYmplY3Rf
cmVnaXN0cnkuc3RhdGVzKCkuY291bnQobW9ja19vYmopID09IDApIHsKLSAgICAvLyBObyBFWFBF
Q1RfQ0FMTCgpIHdhcyBzZXQgb24gdGhlIGdpdmVuIG1vY2sgb2JqZWN0LgotICAgIHJldHVybiB0
cnVlOwotICB9Ci0KLSAgLy8gVmVyaWZpZXMgYW5kIGNsZWFycyB0aGUgZXhwZWN0YXRpb25zIG9u
IGVhY2ggbW9jayBtZXRob2QgaW4gdGhlCi0gIC8vIGdpdmVuIG1vY2sgb2JqZWN0LgotICBib29s
IGV4cGVjdGF0aW9uc19tZXQgPSB0cnVlOwotICBGdW5jdGlvbk1vY2tlcnMmIG1vY2tlcnMgPQot
ICAgICAgZ19tb2NrX29iamVjdF9yZWdpc3RyeS5zdGF0ZXMoKVttb2NrX29ial0uZnVuY3Rpb25f
bW9ja2VyczsKLSAgZm9yIChGdW5jdGlvbk1vY2tlcnM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbW9j
a2Vycy5iZWdpbigpOwotICAgICAgIGl0ICE9IG1vY2tlcnMuZW5kKCk7ICsraXQpIHsKLSAgICBp
ZiAoISgqaXQpLT5WZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpKSB7Ci0gICAgICBl
eHBlY3RhdGlvbnNfbWV0ID0gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgLy8gV2UgZG9uJ3QgY2xl
YXIgdGhlIGNvbnRlbnQgb2YgbW9ja2VycywgYXMgdGhleSBtYXkgc3RpbGwgYmUKLSAgLy8gbmVl
ZGVkIGJ5IENsZWFyRGVmYXVsdEFjdGlvbnNMb2NrZWQoKS4KLSAgcmV0dXJuIGV4cGVjdGF0aW9u
c19tZXQ7Ci19Ci0KLS8vIFJlZ2lzdGVycyBhIG1vY2sgb2JqZWN0IGFuZCBhIG1vY2sgbWV0aG9k
IGl0IG93bnMuCi12b2lkIE1vY2s6OlJlZ2lzdGVyKGNvbnN0IHZvaWQqIG1vY2tfb2JqLAotICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSogbW9j
a2VyKQotICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGludGVybmFsOjpnX2dtb2NrX211dGV4KSB7
Ci0gIGludGVybmFsOjpNdXRleExvY2sgbCgmaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpOwotICBn
X21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpW21vY2tfb2JqXS5mdW5jdGlvbl9tb2NrZXJz
Lmluc2VydChtb2NrZXIpOwotfQotCi0vLyBUZWxscyBHb29nbGUgTW9jayB3aGVyZSBpbiB0aGUg
c291cmNlIGNvZGUgbW9ja19vYmogaXMgdXNlZCBpbiBhbgotLy8gT05fQ0FMTCBvciBFWFBFQ1Rf
Q0FMTC4gIEluIGNhc2UgbW9ja19vYmogaXMgbGVha2VkLCB0aGlzCi0vLyBpbmZvcm1hdGlvbiBo
ZWxwcyB0aGUgdXNlciBpZGVudGlmeSB3aGljaCBvYmplY3QgaXQgaXMuCi12b2lkIE1vY2s6OlJl
Z2lzdGVyVXNlQnlPbkNhbGxPckV4cGVjdENhbGwoY29uc3Qgdm9pZCogbW9ja19vYmosCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oaW50ZXJuYWw6OmdfZ21vY2tfbXV0
ZXgpIHsKLSAgaW50ZXJuYWw6Ok11dGV4TG9jayBsKCZpbnRlcm5hbDo6Z19nbW9ja19tdXRleCk7
Ci0gIE1vY2tPYmplY3RTdGF0ZSYgc3RhdGUgPSBnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRl
cygpW21vY2tfb2JqXTsKLSAgaWYgKHN0YXRlLmZpcnN0X3VzZWRfZmlsZSA9PSBOVUxMKSB7Ci0g
ICAgc3RhdGUuZmlyc3RfdXNlZF9maWxlID0gZmlsZTsKLSAgICBzdGF0ZS5maXJzdF91c2VkX2xp
bmUgPSBsaW5lOwotICAgIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICAgICAg
ICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgICBpZiAo
dGVzdF9pbmZvICE9IE5VTEwpIHsKLSAgICAgIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZWNv
cmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdoZW4gdGhlCi0gICAgICAvLyBPTl9DQUxMIG9yIEVYUEVD
VF9DQUxMIGlzIGludm9rZWQgZnJvbSBTZXRVcFRlc3RDYXNlKCkgb3IKLSAgICAgIC8vIFRlYXJE
b3duVGVzdENhc2UoKS4KLSAgICAgIHN0YXRlLmZpcnN0X3VzZWRfdGVzdF9jYXNlID0gdGVzdF9p
bmZvLT50ZXN0X2Nhc2VfbmFtZSgpOwotICAgICAgc3RhdGUuZmlyc3RfdXNlZF90ZXN0ID0gdGVz
dF9pbmZvLT5uYW1lKCk7Ci0gICAgfQotICB9Ci19Ci0KLS8vIFVucmVnaXN0ZXJzIGEgbW9jayBt
ZXRob2Q7IHJlbW92ZXMgdGhlIG93bmluZyBtb2NrIG9iamVjdCBmcm9tIHRoZQotLy8gcmVnaXN0
cnkgd2hlbiB0aGUgbGFzdCBtb2NrIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggaXQgaGFzIGJlZW4K
LS8vIHVucmVnaXN0ZXJlZC4gIFRoaXMgaXMgY2FsbGVkIG9ubHkgaW4gdGhlIGRlc3RydWN0b3Ig
b2YKLS8vIEZ1bmN0aW9uTW9ja2VyQmFzZS4KLXZvaWQgTW9jazo6VW5yZWdpc3RlckxvY2tlZChp
bnRlcm5hbDo6VW50eXBlZEZ1bmN0aW9uTW9ja2VyQmFzZSogbW9ja2VyKQotICAgIEdURVNUX0VY
Q0xVU0lWRV9MT0NLX1JFUVVJUkVEXyhpbnRlcm5hbDo6Z19nbW9ja19tdXRleCkgewotICBpbnRl
cm5hbDo6Z19nbW9ja19tdXRleC5Bc3NlcnRIZWxkKCk7Ci0gIGZvciAoTW9ja09iamVjdFJlZ2lz
dHJ5OjpTdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPQotICAgICAgICAgICBnX21vY2tfb2JqZWN0X3Jl
Z2lzdHJ5LnN0YXRlcygpLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gZ19tb2NrX29iamVjdF9yZWdp
c3RyeS5zdGF0ZXMoKS5lbmQoKTsgKytpdCkgewotICAgIEZ1bmN0aW9uTW9ja2VycyYgbW9ja2Vy
cyA9IGl0LT5zZWNvbmQuZnVuY3Rpb25fbW9ja2VyczsKLSAgICBpZiAobW9ja2Vycy5lcmFzZSht
b2NrZXIpID4gMCkgewotICAgICAgLy8gbW9ja2VyIHdhcyBpbiBtb2NrZXJzIGFuZCBoYXMgYmVl
biBqdXN0IHJlbW92ZWQuCi0gICAgICBpZiAobW9ja2Vycy5lbXB0eSgpKSB7Ci0gICAgICAgIGdf
bW9ja19vYmplY3RfcmVnaXN0cnkuc3RhdGVzKCkuZXJhc2UoaXQpOwotICAgICAgfQotICAgICAg
cmV0dXJuOwotICAgIH0KLSAgfQotfQotCi0vLyBDbGVhcnMgYWxsIE9OX0NBTEwoKXMgc2V0IG9u
IHRoZSBnaXZlbiBtb2NrIG9iamVjdC4KLXZvaWQgTW9jazo6Q2xlYXJEZWZhdWx0QWN0aW9uc0xv
Y2tlZCh2b2lkKiBtb2NrX29iaikKLSAgICBHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8o
aW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXgpIHsKLSAgaW50ZXJuYWw6OmdfZ21vY2tfbXV0ZXguQXNz
ZXJ0SGVsZCgpOwotCi0gIGlmIChnX21vY2tfb2JqZWN0X3JlZ2lzdHJ5LnN0YXRlcygpLmNvdW50
KG1vY2tfb2JqKSA9PSAwKSB7Ci0gICAgLy8gTm8gT05fQ0FMTCgpIHdhcyBzZXQgb24gdGhlIGdp
dmVuIG1vY2sgb2JqZWN0LgotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIENsZWFycyB0aGUgZGVm
YXVsdCBhY3Rpb25zIGZvciBlYWNoIG1vY2sgbWV0aG9kIGluIHRoZSBnaXZlbiBtb2NrCi0gIC8v
IG9iamVjdC4KLSAgRnVuY3Rpb25Nb2NrZXJzJiBtb2NrZXJzID0KLSAgICAgIGdfbW9ja19vYmpl
Y3RfcmVnaXN0cnkuc3RhdGVzKClbbW9ja19vYmpdLmZ1bmN0aW9uX21vY2tlcnM7Ci0gIGZvciAo
RnVuY3Rpb25Nb2NrZXJzOjpjb25zdF9pdGVyYXRvciBpdCA9IG1vY2tlcnMuYmVnaW4oKTsKLSAg
ICAgICBpdCAhPSBtb2NrZXJzLmVuZCgpOyArK2l0KSB7Ci0gICAgKCppdCktPkNsZWFyRGVmYXVs
dEFjdGlvbnNMb2NrZWQoKTsKLSAgfQotCi0gIC8vIFdlIGRvbid0IGNsZWFyIHRoZSBjb250ZW50
IG9mIG1vY2tlcnMsIGFzIHRoZXkgbWF5IHN0aWxsIGJlCi0gIC8vIG5lZWRlZCBieSBWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9uc0xvY2tlZCgpLgotfQotCi1FeHBlY3RhdGlvbjo6RXhwZWN0YXRp
b24oKSB7fQotCi1FeHBlY3RhdGlvbjo6RXhwZWN0YXRpb24oCi0gICAgY29uc3QgaW50ZXJuYWw6
OmxpbmtlZF9wdHI8aW50ZXJuYWw6OkV4cGVjdGF0aW9uQmFzZT4mIGFuX2V4cGVjdGF0aW9uX2Jh
c2UpCi0gICAgOiBleHBlY3RhdGlvbl9iYXNlXyhhbl9leHBlY3RhdGlvbl9iYXNlKSB7fQotCi1F
eHBlY3RhdGlvbjo6fkV4cGVjdGF0aW9uKCkge30KLQotLy8gQWRkcyBhbiBleHBlY3RhdGlvbiB0
byBhIHNlcXVlbmNlLgotdm9pZCBTZXF1ZW5jZTo6QWRkRXhwZWN0YXRpb24oY29uc3QgRXhwZWN0
YXRpb24mIGV4cGVjdGF0aW9uKSBjb25zdCB7Ci0gIGlmICgqbGFzdF9leHBlY3RhdGlvbl8gIT0g
ZXhwZWN0YXRpb24pIHsKLSAgICBpZiAobGFzdF9leHBlY3RhdGlvbl8tPmV4cGVjdGF0aW9uX2Jh
c2UoKSAhPSBOVUxMKSB7Ci0gICAgICBleHBlY3RhdGlvbi5leHBlY3RhdGlvbl9iYXNlKCktPmlt
bWVkaWF0ZV9wcmVyZXF1aXNpdGVzXwotICAgICAgICAgICs9ICpsYXN0X2V4cGVjdGF0aW9uXzsK
LSAgICB9Ci0gICAgKmxhc3RfZXhwZWN0YXRpb25fID0gZXhwZWN0YXRpb247Ci0gIH0KLX0KLQot
Ly8gQ3JlYXRlcyB0aGUgaW1wbGljaXQgc2VxdWVuY2UgaWYgdGhlcmUgaXNuJ3Qgb25lLgotSW5T
ZXF1ZW5jZTo6SW5TZXF1ZW5jZSgpIHsKLSAgaWYgKGludGVybmFsOjpnX2dtb2NrX2ltcGxpY2l0
X3NlcXVlbmNlLmdldCgpID09IE5VTEwpIHsKLSAgICBpbnRlcm5hbDo6Z19nbW9ja19pbXBsaWNp
dF9zZXF1ZW5jZS5zZXQobmV3IFNlcXVlbmNlKTsKLSAgICBzZXF1ZW5jZV9jcmVhdGVkXyA9IHRy
dWU7Ci0gIH0gZWxzZSB7Ci0gICAgc2VxdWVuY2VfY3JlYXRlZF8gPSBmYWxzZTsKLSAgfQotfQot
Ci0vLyBEZWxldGVzIHRoZSBpbXBsaWNpdCBzZXF1ZW5jZSBpZiBpdCB3YXMgY3JlYXRlZCBieSB0
aGUgY29uc3RydWN0b3IKLS8vIG9mIHRoaXMgb2JqZWN0LgotSW5TZXF1ZW5jZTo6fkluU2VxdWVu
Y2UoKSB7Ci0gIGlmIChzZXF1ZW5jZV9jcmVhdGVkXykgewotICAgIGRlbGV0ZSBpbnRlcm5hbDo6
Z19nbW9ja19pbXBsaWNpdF9zZXF1ZW5jZS5nZXQoKTsKLSAgICBpbnRlcm5hbDo6Z19nbW9ja19p
bXBsaWNpdF9zZXF1ZW5jZS5zZXQoTlVMTCk7Ci0gIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9jay5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3NyYy9nbW9jay5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFjM2Q4NDJiYTA3
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svc3JjL2dtb2NrLmNjCisrKyAvZGV2L251
bGwKQEAgLTEsMTgzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2Nr
LXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUT0RPKHdhbkBnb29nbGUuY29t
KTogc3VwcG9ydCB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8KLS8vIGNvbnRyb2wgdGhl
IGZsYWcgdmFsdWVzLCBsaWtlIHdoYXQgR29vZ2xlIFRlc3QgZG9lcy4KLQotR01PQ0tfREVGSU5F
X2Jvb2xfKGNhdGNoX2xlYWtlZF9tb2NrcywgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAidHJ1
ZSBpZmYgR29vZ2xlIE1vY2sgc2hvdWxkIHJlcG9ydCBsZWFrZWQgbW9jayBvYmplY3RzICIKLSAg
ICAgICAgICAgICAgICAgICAiYXMgZmFpbHVyZXMuIik7Ci0KLUdNT0NLX0RFRklORV9zdHJpbmdf
KHZlcmJvc2UsIGludGVybmFsOjprV2FybmluZ1ZlcmJvc2l0eSwKLSAgICAgICAgICAgICAgICAg
ICAgICJDb250cm9scyBob3cgdmVyYm9zZSBHb29nbGUgTW9jaydzIG91dHB1dCBpcy4iCi0gICAg
ICAgICAgICAgICAgICAgICAiICBWYWxpZCB2YWx1ZXM6XG4iCi0gICAgICAgICAgICAgICAgICAg
ICAiICBpbmZvICAgIC0gcHJpbnRzIGFsbCBtZXNzYWdlcy5cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICIgIHdhcm5pbmcgLSBwcmludHMgd2FybmluZ3MgYW5kIGVycm9ycy5cbiIKLSAgICAgICAg
ICAgICAgICAgICAgICIgIGVycm9yICAgLSBwcmludHMgZXJyb3JzIG9ubHkuIik7Ci0KLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFBhcnNlcyBhIHN0cmluZyBhcyBhIGNvbW1hbmQgbGluZSBm
bGFnLiAgVGhlIHN0cmluZyBzaG91bGQgaGF2ZSB0aGUKLS8vIGZvcm1hdCAiLS1nbW9ja19mbGFn
PXZhbHVlIi4gIFdoZW4gZGVmX29wdGlvbmFsIGlzIHRydWUsIHRoZQotLy8gIj12YWx1ZSIgcGFy
dCBjYW4gYmUgb21pdHRlZC4KLS8vCi0vLyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywg
b3IgTlVMTCBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi1zdGF0aWMgY29uc3QgY2hhciogUGFyc2VH
b29nbGVNb2NrRmxhZ1ZhbHVlKGNvbnN0IGNoYXIqIHN0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmxhZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKLSAgLy8g
c3RyIGFuZCBmbGFnIG11c3Qgbm90IGJlIE5VTEwuCi0gIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFn
ID09IE5VTEwpIHJldHVybiBOVUxMOwotCi0gIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAi
LS1nbW9ja18iLgotICBjb25zdCBzdGQ6OnN0cmluZyBmbGFnX3N0ciA9IHN0ZDo6c3RyaW5nKCIt
LWdtb2NrXyIpICsgZmxhZzsKLSAgY29uc3Qgc2l6ZV90IGZsYWdfbGVuID0gZmxhZ19zdHIubGVu
Z3RoKCk7Ci0gIGlmIChzdHJuY21wKHN0ciwgZmxhZ19zdHIuY19zdHIoKSwgZmxhZ19sZW4pICE9
IDApIHJldHVybiBOVUxMOwotCi0gIC8vIFNraXBzIHRoZSBmbGFnIG5hbWUuCi0gIGNvbnN0IGNo
YXIqIGZsYWdfZW5kID0gc3RyICsgZmxhZ19sZW47Ci0KLSAgLy8gV2hlbiBkZWZfb3B0aW9uYWwg
aXMgdHJ1ZSwgaXQncyBPSyB0byBub3QgaGF2ZSBhICI9dmFsdWUiIHBhcnQuCi0gIGlmIChkZWZf
b3B0aW9uYWwgJiYgKGZsYWdfZW5kWzBdID09ICdcMCcpKSB7Ci0gICAgcmV0dXJuIGZsYWdfZW5k
OwotICB9Ci0KLSAgLy8gSWYgZGVmX29wdGlvbmFsIGlzIHRydWUgYW5kIHRoZXJlIGFyZSBtb3Jl
IGNoYXJhY3RlcnMgYWZ0ZXIgdGhlCi0gIC8vIGZsYWcgbmFtZSwgb3IgaWYgZGVmX29wdGlvbmFs
IGlzIGZhbHNlLCB0aGVyZSBtdXN0IGJlIGEgJz0nIGFmdGVyCi0gIC8vIHRoZSBmbGFnIG5hbWUu
Ci0gIGlmIChmbGFnX2VuZFswXSAhPSAnPScpIHJldHVybiBOVUxMOwotCi0gIC8vIFJldHVybnMg
dGhlIHN0cmluZyBhZnRlciAiPSIuCi0gIHJldHVybiBmbGFnX2VuZCArIDE7Ci19Ci0KLS8vIFBh
cnNlcyBhIHN0cmluZyBmb3IgYSBHb29nbGUgTW9jayBib29sIGZsYWcsIGluIHRoZSBmb3JtIG9m
Ci0vLyAiLS1nbW9ja19mbGFnPXZhbHVlIi4KLS8vCi0vLyBPbiBzdWNjZXNzLCBzdG9yZXMgdGhl
IHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKLS8vIHRydWUuICBPbiBm
YWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotc3RhdGljIGJv
b2wgUGFyc2VHb29nbGVNb2NrQm9vbEZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBm
bGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogdmFsdWUpIHsK
LSAgLy8gR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcuCi0gIGNvbnN0IGNo
YXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBhcnNlR29vZ2xlTW9ja0ZsYWdWYWx1ZShzdHIsIGZsYWcs
IHRydWUpOwotCi0gIC8vIEFib3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi0gIGlmICh2YWx1
ZV9zdHIgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0gIC8vIENvbnZlcnRzIHRoZSBzdHJpbmcg
dmFsdWUgdG8gYSBib29sLgotICAqdmFsdWUgPSAhKCp2YWx1ZV9zdHIgPT0gJzAnIHx8ICp2YWx1
ZV9zdHIgPT0gJ2YnIHx8ICp2YWx1ZV9zdHIgPT0gJ0YnKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0K
LS8vIFBhcnNlcyBhIHN0cmluZyBmb3IgYSBHb29nbGUgTW9jayBzdHJpbmcgZmxhZywgaW4gdGhl
IGZvcm0gb2YKLS8vICItLWdtb2NrX2ZsYWc9dmFsdWUiLgotLy8KLS8vIE9uIHN1Y2Nlc3MsIHN0
b3JlcyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwotLy8gdHJ1
ZS4gIE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU3RyaW5nPgotc3RhdGljIGJvb2wgUGFyc2VHb29nbGVNb2NrU3Ry
aW5nRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyogdmFsdWUpIHsKLSAgLy8gR2V0cyB0aGUg
dmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJpbmcuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVl
X3N0ciA9IFBhcnNlR29vZ2xlTW9ja0ZsYWdWYWx1ZShzdHIsIGZsYWcsIGZhbHNlKTsKLQotICAv
LyBBYm9ydHMgaWYgdGhlIHBhcnNpbmcgZmFpbGVkLgotICBpZiAodmFsdWVfc3RyID09IE5VTEwp
IHJldHVybiBmYWxzZTsKLQotICAvLyBTZXRzICp2YWx1ZSB0byB0aGUgdmFsdWUgb2YgdGhlIGZs
YWcuCi0gICp2YWx1ZSA9IHZhbHVlX3N0cjsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFRoZSBp
bnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBJbml0R29vZ2xlTW9jaygpLgotLy8KLS8vIFRoZSB0
eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4gYmUgaW5zdGFudGlhdGVkIHRvIGVpdGhlciBjaGFy
IG9yCi0vLyB3Y2hhcl90LgotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotdm9pZCBJbml0
R29vZ2xlTW9ja0ltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKLSAgLy8gTWFrZXMg
c3VyZSBHb29nbGUgVGVzdCBpcyBpbml0aWFsaXplZC4gIEluaXRHb29nbGVUZXN0KCkgaXMKLSAg
Ly8gaWRlbXBvdGVudCwgc28gaXQncyBmaW5lIGlmIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGNhbGxl
ZCBpdC4KLSAgSW5pdEdvb2dsZVRlc3QoYXJnYywgYXJndik7Ci0gIGlmICgqYXJnYyA8PSAwKSBy
ZXR1cm47Ci0KLSAgZm9yIChpbnQgaSA9IDE7IGkgIT0gKmFyZ2M7IGkrKykgewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9TdHJpbmcoYXJndltpXSk7Ci0g
ICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5jX3N0cigpOwotCi0gICAgLy8g
RG8gd2Ugc2VlIGEgR29vZ2xlIE1vY2sgZmxhZz8KLSAgICBpZiAoUGFyc2VHb29nbGVNb2NrQm9v
bEZsYWcoYXJnLCAiY2F0Y2hfbGVha2VkX21vY2tzIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkdNT0NLX0ZMQUcoY2F0Y2hfbGVha2VkX21vY2tzKSkgfHwKLSAgICAgICAgUGFy
c2VHb29nbGVNb2NrU3RyaW5nRmxhZyhhcmcsICJ2ZXJib3NlIiwgJkdNT0NLX0ZMQUcodmVyYm9z
ZSkpKSB7Ci0gICAgICAvLyBZZXMuICBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2IGxp
c3QgbGVmdCBieSBvbmUuICBOb3RlCi0gICAgICAvLyB0aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEp
IGVsZW1lbnRzLCB0aGUgbGFzdCBvbmUgYWx3YXlzIGJlaW5nCi0gICAgICAvLyBOVUxMLiAgVGhl
IGZvbGxvd2luZyBsb29wIG1vdmVzIHRoZSB0cmFpbGluZyBOVUxMIGVsZW1lbnQgYXMKLSAgICAg
IC8vIHdlbGwuCi0gICAgICBmb3IgKGludCBqID0gaTsgaiAhPSAqYXJnYzsgaisrKSB7Ci0gICAg
ICAgIGFyZ3Zbal0gPSBhcmd2W2ogKyAxXTsKLSAgICAgIH0KLQotICAgICAgLy8gRGVjcmVtZW50
cyB0aGUgYXJndW1lbnQgY291bnQuCi0gICAgICAoKmFyZ2MpLS07Ci0KLSAgICAgIC8vIFdlIGFs
c28gbmVlZCB0byBkZWNyZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdlIGp1c3QgcmVtb3ZlZAotICAg
ICAgLy8gYW4gZWxlbWVudC4KLSAgICAgIGktLTsKLSAgICB9Ci0gIH0KLX0KLQotfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCi0KLS8vIEluaXRpYWxpemVzIEdvb2dsZSBNb2NrLiAgVGhpcyBtdXN0
IGJlIGNhbGxlZCBiZWZvcmUgcnVubmluZyB0aGUKLS8vIHRlc3RzLiAgSW4gcGFydGljdWxhciwg
aXQgcGFyc2VzIGEgY29tbWFuZCBsaW5lIGZvciB0aGUgZmxhZ3MgdGhhdAotLy8gR29vZ2xlIE1v
Y2sgcmVjb2duaXplcy4gIFdoZW5ldmVyIGEgR29vZ2xlIE1vY2sgZmxhZyBpcyBzZWVuLCBpdCBp
cwotLy8gcmVtb3ZlZCBmcm9tIGFyZ3YsIGFuZCAqYXJnYyBpcyBkZWNyZW1lbnRlZC4KLS8vCi0v
LyBObyB2YWx1ZSBpcyByZXR1cm5lZC4gIEluc3RlYWQsIHRoZSBHb29nbGUgTW9jayBmbGFnIHZh
cmlhYmxlcyBhcmUKLS8vIHVwZGF0ZWQuCi0vLwotLy8gU2luY2UgR29vZ2xlIFRlc3QgaXMgbmVl
ZGVkIGZvciBHb29nbGUgTW9jayB0byB3b3JrLCB0aGlzIGZ1bmN0aW9uCi0vLyBhbHNvIGluaXRp
YWxpemVzIEdvb2dsZSBUZXN0IGFuZCBwYXJzZXMgaXRzIGZsYWdzLCBpZiB0aGF0IGhhc24ndAot
Ly8gYmVlbiBkb25lLgotR1RFU1RfQVBJXyB2b2lkIEluaXRHb29nbGVNb2NrKGludCogYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSAgaW50ZXJuYWw6OkluaXRHb29nbGVNb2NrSW1wbChhcmdjLCBhcmd2
KTsKLX0KLQotLy8gVGhpcyBvdmVybG9hZGVkIHZlcnNpb24gY2FuIGJlIHVzZWQgaW4gV2luZG93
cyBwcm9ncmFtcyBjb21waWxlZCBpbgotLy8gVU5JQ09ERSBtb2RlLgotR1RFU1RfQVBJXyB2b2lk
IEluaXRHb29nbGVNb2NrKGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKLSAgaW50ZXJuYWw6
OkluaXRHb29nbGVNb2NrSW1wbChhcmdjLCBhcmd2KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9ja19tYWluLmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svc3JjL2dtb2NrX21haW4uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJk
NWJlMDNiZTIyZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3NyYy9nbW9ja19tYWlu
LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbikKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gTVMgQysrIGNvbXBpbGVyL2xpbmtl
ciBoYXMgYSBidWcgb24gV2luZG93cyAobm90IG9uIFdpbmRvd3MgQ0UpLCB3aGljaAotLy8gY2F1
c2VzIGEgbGluayBlcnJvciB3aGVuIF90bWFpbiBpcyBkZWZpbmVkIGluIGEgc3RhdGljIGxpYnJh
cnkgYW5kIFVOSUNPREUKLS8vIGlzIGVuYWJsZWQuIEZvciB0aGlzIHJlYXNvbiBpbnN0ZWFkIG9m
IF90bWFpbiwgbWFpbiBmdW5jdGlvbiBpcyB1c2VkIG9uCi0vLyBXaW5kb3dzLiBTZWUgdGhlIGZv
bGxvd2luZyBsaW5rIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIGJ1ZzoKLS8v
IGh0dHA6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vVmlzdWFsU3R1ZGlvL2ZlZWRiYWNrL1ZpZXdG
ZWVkYmFjay5hc3B4P0ZlZWRiYWNrSUQ9Mzk0NDY0ICAvLyBOT0xJTlQKLSNpZiBHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotIyBpbmNsdWRlIDx0Y2hhci5oPiAgLy8gTk9MSU5UCi0KLUdURVNUX0FQ
SV8gaW50IF90bWFpbihpbnQgYXJnYywgVENIQVIqKiBhcmd2KSB7Ci0jZWxzZQotR1RFU1RfQVBJ
XyBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XU19NT0JJTEUKLSAgc3RkOjpjb3V0IDw8ICJSdW5uaW5nIG1haW4oKSBmcm9tIGdtb2Nr
X21haW4uY2NcbiI7Ci0gIC8vIFNpbmNlIEdvb2dsZSBNb2NrIGRlcGVuZHMgb24gR29vZ2xlIFRl
c3QsIEluaXRHb29nbGVNb2NrKCkgaXMKLSAgLy8gYWxzbyByZXNwb25zaWJsZSBmb3IgaW5pdGlh
bGl6aW5nIEdvb2dsZSBUZXN0LiAgVGhlcmVmb3JlIHRoZXJlJ3MKLSAgLy8gbm8gbmVlZCBmb3Ig
Y2FsbGluZyB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIHNlcGFyYXRlbHkuCi0gIHRlc3Rpbmc6
OkluaXRHb29nbGVNb2NrKCZhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svdGVzdC9nbW9jay1hY3Rpb25zX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY0NzBkZTRjNTVjZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2stYWN0aW9uc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTQxMSArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAt
IGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBm
aWxlIHRlc3RzIHRoZSBidWlsdC1pbiBhY3Rpb25zLgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2st
YWN0aW9ucy5oIgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgImdtb2NrL2dtb2Nr
LmgiCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9ydC5oIgotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLW5hbWVzcGFjZSB7
Ci0KLS8vIFRoaXMgbGlzdCBzaG91bGQgYmUga2VwdCBzb3J0ZWQuCi11c2luZyB0ZXN0aW5nOjpB
Y3Rpb247Ci11c2luZyB0ZXN0aW5nOjpBY3Rpb25JbnRlcmZhY2U7Ci11c2luZyB0ZXN0aW5nOjpB
c3NpZ247Ci11c2luZyB0ZXN0aW5nOjpCeU1vdmU7Ci11c2luZyB0ZXN0aW5nOjpCeVJlZjsKLXVz
aW5nIHRlc3Rpbmc6OkRlZmF1bHRWYWx1ZTsKLXVzaW5nIHRlc3Rpbmc6OkRvRGVmYXVsdDsKLXVz
aW5nIHRlc3Rpbmc6Oklnbm9yZVJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6Okludm9rZTsKLXVzaW5n
IHRlc3Rpbmc6Okludm9rZVdpdGhvdXRBcmdzOwotdXNpbmcgdGVzdGluZzo6TWFrZVBvbHltb3Jw
aGljQWN0aW9uOwotdXNpbmcgdGVzdGluZzo6TmU7Ci11c2luZyB0ZXN0aW5nOjpQb2x5bW9ycGhp
Y0FjdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybk51
bGw7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm5SZWY7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm5SZWZP
ZkNvcHk7Ci11c2luZyB0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6U2V0
QXJndW1lbnRQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6XzsKLXVzaW5nIHRlc3Rpbmc6OmdldDsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpCdWlsdEluRGVmYXVsdFZhbHVlOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkludDY0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2NDsK
LXVzaW5nIHRlc3Rpbmc6Om1ha2VfdHVwbGU7Ci11c2luZyB0ZXN0aW5nOjp0dXBsZTsKLXVzaW5n
IHRlc3Rpbmc6OnR1cGxlX2VsZW1lbnQ7Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUK
LXVzaW5nIHRlc3Rpbmc6OlNldEVycm5vQW5kUmV0dXJuOwotI2VuZGlmCi0KLSNpZiBHVEVTVF9I
QVNfUFJPVE9CVUZfCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdE1lc3NhZ2U7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19QUk9UT0JVRl8KLQotLy8gVGVzdHMgdGhhdCBCdWlsdEluRGVmYXVs
dFZhbHVlPFQqPjo6R2V0KCkgcmV0dXJucyBOVUxMLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVl
VGVzdCwgSXNOdWxsRm9yUG9pbnRlclR5cGVzKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZh
dWx0VmFsdWU8aW50Kj46OkdldCgpID09IE5VTEwpOwotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVm
YXVsdFZhbHVlPGNvbnN0IGNoYXIqPjo6R2V0KCkgPT0gTlVMTCk7Ci0gIEVYUEVDVF9UUlVFKEJ1
aWx0SW5EZWZhdWx0VmFsdWU8dm9pZCo+OjpHZXQoKSA9PSBOVUxMKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBCdWlsdEluRGVmYXVsdFZhbHVlPFQqPjo6RXhpc3RzKCkgcmV0dXJuIHRydWUuCi1URVNU
KEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0LCBFeGlzdHNGb3JQb2ludGVyVHlwZXMpIHsKLSAgRVhQ
RUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQqPjo6RXhpc3RzKCkpOwotICBFWFBFQ1Rf
VFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPGNvbnN0IGNoYXIqPjo6RXhpc3RzKCkpOwotICBFWFBF
Q1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHZvaWQqPjo6RXhpc3RzKCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkdldCgpIHJldHVybnMgMCB3aGVuIFQg
aXMgYQotLy8gYnVpbHQtaW4gbnVtZXJpYyB0eXBlLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVl
VGVzdCwgSXNaZXJvRm9yTnVtZXJpY1R5cGVzKSB7Ci0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRl
ZmF1bHRWYWx1ZTx1bnNpZ25lZCBjaGFyPjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMCwgQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxzaWduZWQgY2hhcj46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1aWx0
SW5EZWZhdWx0VmFsdWU8Y2hhcj46OkdldCgpKTsKLSNpZiBHTU9DS19IQVNfU0lHTkVEX1dDSEFS
X1RfCi0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCB3Y2hhcl90
Pjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgd2No
YXJfdD46OkdldCgpKTsKLSNlbmRpZgotI2lmIEdNT0NLX1dDSEFSX1RfSVNfTkFUSVZFXwotICBF
WFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx3Y2hhcl90Pjo6R2V0KCkpOwotI2VuZGlm
Ci0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCBzaG9ydD46Okdl
dCgpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWdu
ZWQgc2hvcnQ+OjpHZXQoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDAsIEJ1aWx0SW5EZWZh
dWx0VmFsdWU8c2hvcnQ+OjpHZXQoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDBVLCBCdWls
dEluRGVmYXVsdFZhbHVlPHVuc2lnbmVkIGludD46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1
aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIGludD46OkdldCgpKTsKLSAgRVhQRUNUX0VRKDAsIEJ1
aWx0SW5EZWZhdWx0VmFsdWU8aW50Pjo6R2V0KCkpOwotICBFWFBFQ1RfRVEoMFUsIEJ1aWx0SW5E
ZWZhdWx0VmFsdWU8dW5zaWduZWQgbG9uZz46OkdldCgpKTsgIC8vIE5PTElOVAotICBFWFBFQ1Rf
RVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgbG9uZz46OkdldCgpKTsgIC8vIE5PTElO
VAotICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxsb25nPjo6R2V0KCkpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9FUSgwVSwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxVSW50NjQ+OjpHZXQo
KSk7Ci0gIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZhbHVlPEludDY0Pjo6R2V0KCkpOwot
ICBFWFBFQ1RfRVEoMCwgQnVpbHRJbkRlZmF1bHRWYWx1ZTxmbG9hdD46OkdldCgpKTsKLSAgRVhQ
RUNUX0VRKDAsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8ZG91YmxlPjo6R2V0KCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEJ1aWx0SW5EZWZhdWx0VmFsdWU8VD46OkV4aXN0cygpIHJldHVybnMgdHJ1ZSB3
aGVuIFQgaXMgYQotLy8gYnVpbHQtaW4gbnVtZXJpYyB0eXBlLgotVEVTVChCdWlsdEluRGVmYXVs
dFZhbHVlVGVzdCwgRXhpc3RzRm9yTnVtZXJpY1R5cGVzKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0
SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgY2hhcj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUo
QnVpbHRJbkRlZmF1bHRWYWx1ZTxzaWduZWQgY2hhcj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RS
VUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxjaGFyPjo6RXhpc3RzKCkpOwotI2lmIEdNT0NLX0hBU19T
SUdORURfV0NIQVJfVF8KLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25l
ZCB3Y2hhcl90Pjo6RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVl
PHNpZ25lZCB3Y2hhcl90Pjo6RXhpc3RzKCkpOwotI2VuZGlmCi0jaWYgR01PQ0tfV0NIQVJfVF9J
U19OQVRJVkVfCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8d2NoYXJfdD46OkV4
aXN0cygpKTsKLSNlbmRpZgotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHVuc2ln
bmVkIHNob3J0Pjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5E
ZWZhdWx0VmFsdWU8c2lnbmVkIHNob3J0Pjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2hvcnQ+OjpFeGlzdHMoKSk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTx1bnNpZ25lZCBpbnQ+OjpFeGlzdHMo
KSk7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8c2lnbmVkIGludD46OkV4aXN0
cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQ+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8dW5zaWduZWQgbG9uZz46OkV4aXN0
cygpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZhbHVlPHNpZ25l
ZCBsb25nPjo6RXhpc3RzKCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZh
dWx0VmFsdWU8bG9uZz46OkV4aXN0cygpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVFJVRShCdWls
dEluRGVmYXVsdFZhbHVlPFVJbnQ2ND46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJ
bkRlZmF1bHRWYWx1ZTxJbnQ2ND46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRl
ZmF1bHRWYWx1ZTxmbG9hdD46OkV4aXN0cygpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1
bHRWYWx1ZTxkb3VibGU+OjpFeGlzdHMoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRl
ZmF1bHRWYWx1ZTxib29sPjo6R2V0KCkgcmV0dXJucyBmYWxzZS4KLVRFU1QoQnVpbHRJbkRlZmF1
bHRWYWx1ZVRlc3QsIElzRmFsc2VGb3JCb29sKSB7Ci0gIEVYUEVDVF9GQUxTRShCdWlsdEluRGVm
YXVsdFZhbHVlPGJvb2w+OjpHZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1
bHRWYWx1ZTxib29sPjo6RXhpc3RzKCkgcmV0dXJucyB0cnVlLgotVEVTVChCdWlsdEluRGVmYXVs
dFZhbHVlVGVzdCwgQm9vbEV4aXN0cykgewotICBFWFBFQ1RfVFJVRShCdWlsdEluRGVmYXVsdFZh
bHVlPGJvb2w+OjpFeGlzdHMoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRW
YWx1ZTxUPjo6R2V0KCkgcmV0dXJucyAiIiB3aGVuIFQgaXMgYQotLy8gc3RyaW5nIHR5cGUuCi1U
RVNUKEJ1aWx0SW5EZWZhdWx0VmFsdWVUZXN0LCBJc0VtcHR5U3RyaW5nRm9yU3RyaW5nKSB7Ci0j
aWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLSAgRVhQRUNUX0VRKCIiLCBCdWlsdEluRGVmYXVs
dFZhbHVlPCA6OnN0cmluZz46OkdldCgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9T
VFJJTkcKLQotICBFWFBFQ1RfRVEoIiIsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3RkOjpzdHJp
bmc+OjpHZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6
RXhpc3RzKCkgcmV0dXJucyB0cnVlIHdoZW4gVCBpcyBhCi0vLyBzdHJpbmcgdHlwZS4KLVRFU1Qo
QnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIEV4aXN0c0ZvclN0cmluZykgewotI2lmIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0gIEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3Ry
aW5nPjo6RXhpc3RzKCkpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0g
IEVYUEVDVF9UUlVFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8IDo6c3RkOjpzdHJpbmc+OjpFeGlzdHMo
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQnVpbHRJbkRlZmF1bHRWYWx1ZTxjb25zdCBUPjo6R2V0
KCkgcmV0dXJucyB0aGUgc2FtZQotLy8gdmFsdWUgYXMgQnVpbHRJbkRlZmF1bHRWYWx1ZTxUPjo6
R2V0KCkgZG9lcy4KLVRFU1QoQnVpbHRJbkRlZmF1bHRWYWx1ZVRlc3QsIFdvcmtzRm9yQ29uc3RU
eXBlcykgewotICBFWFBFQ1RfRVEoIiIsIEJ1aWx0SW5EZWZhdWx0VmFsdWU8Y29uc3Qgc3RkOjpz
dHJpbmc+OjpHZXQoKSk7Ci0gIEVYUEVDVF9FUSgwLCBCdWlsdEluRGVmYXVsdFZhbHVlPGNvbnN0
IGludD46OkdldCgpKTsKLSAgRVhQRUNUX1RSVUUoQnVpbHRJbkRlZmF1bHRWYWx1ZTxjaGFyKiBj
b25zdD46OkdldCgpID09IE5VTEwpOwotICBFWFBFQ1RfRkFMU0UoQnVpbHRJbkRlZmF1bHRWYWx1
ZTxjb25zdCBib29sPjo6R2V0KCkpOwotfQotCi0vLyBBIHR5cGUgdGhhdCdzIGRlZmF1bHQgY29u
c3RydWN0aWJsZS4KLWNsYXNzIE15RGVmYXVsdENvbnN0cnVjdGlibGUgewotIHB1YmxpYzoKLSAg
TXlEZWZhdWx0Q29uc3RydWN0aWJsZSgpIDogdmFsdWVfKDQyKSB7fQotCi0gIGludCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLX07
Ci0KLS8vIEEgdHlwZSB0aGF0J3Mgbm90IGRlZmF1bHQgY29uc3RydWN0aWJsZS4KLWNsYXNzIE15
Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUgewotIHB1YmxpYzoKLSAgLy8gRG9lcyBub3QgaGF2ZSBh
IGRlZmF1bHQgY3Rvci4KLSAgZXhwbGljaXQgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZShpbnQg
YV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV87IH0KLQotIHByaXZhdGU6Ci0gIGludCB2YWx1ZV87Ci19OwotCi0jaWYgR1RF
U1RfSEFTX1NURF9UWVBFX1RSQUlUU18KLQotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVlVGVzdCwg
RXhpc3RzRm9yRGVmYXVsdENvbnN0cnVjdGlibGVUeXBlKSB7Ci0gIEVYUEVDVF9UUlVFKEJ1aWx0
SW5EZWZhdWx0VmFsdWU8TXlEZWZhdWx0Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLX0KLQot
VEVTVChCdWlsdEluRGVmYXVsdFZhbHVlVGVzdCwgSXNEZWZhdWx0Q29uc3RydWN0ZWRGb3JEZWZh
dWx0Q29uc3RydWN0aWJsZVR5cGUpIHsKLSAgRVhQRUNUX0VRKDQyLCBCdWlsdEluRGVmYXVsdFZh
bHVlPE15RGVmYXVsdENvbnN0cnVjdGlibGU+OjpHZXQoKS52YWx1ZSgpKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1RZUEVfVFJBSVRTXwotCi1URVNUKEJ1aWx0SW5EZWZhdWx0VmFs
dWVUZXN0LCBEb2VzTm90RXhpc3RGb3JOb25EZWZhdWx0Q29uc3RydWN0aWJsZVR5cGUpIHsKLSAg
RVhQRUNUX0ZBTFNFKEJ1aWx0SW5EZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJs
ZT46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBCdWlsdEluRGVmYXVsdFZhbHVlPFQm
Pjo6R2V0KCkgYWJvcnRzIHRoZSBwcm9ncmFtLgotVEVTVChCdWlsdEluRGVmYXVsdFZhbHVlRGVh
dGhUZXN0LCBJc1VuZGVmaW5lZEZvclJlZmVyZW5jZXMpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NV
UFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRWYWx1ZTxpbnQmPjo6R2V0KCk7Ci0gIH0sICIi
KTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRWYWx1
ZTxjb25zdCBjaGFyJj46OkdldCgpOwotICB9LCAiIik7Ci19Ci0KLVRFU1QoQnVpbHRJbkRlZmF1
bHRWYWx1ZURlYXRoVGVzdCwgSXNVbmRlZmluZWRGb3JOb25EZWZhdWx0Q29uc3RydWN0aWJsZVR5
cGUpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQnVpbHRJbkRlZmF1bHRW
YWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCk7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD46OklzU2V0KCkgaXMgZmFsc2UgaW5pdGlhbGx5
LgotVEVTVChEZWZhdWx0VmFsdWVUZXN0LCBJc0luaXRpYWxseVVuc2V0KSB7Ci0gIEVYUEVDVF9G
QUxTRShEZWZhdWx0VmFsdWU8aW50Pjo6SXNTZXQoKSk7Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0
VmFsdWU8TXlEZWZhdWx0Q29uc3RydWN0aWJsZT46OklzU2V0KCkpOwotICBFWFBFQ1RfRkFMU0Uo
RGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpJc1NldCgpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD4gY2FuIGJlIHNldCBhbmQgdGhlbiB1
bnNldC4KLVRFU1QoRGVmYXVsdFZhbHVlVGVzdCwgQ2FuQmVTZXRBbmRVbnNldCkgewotICBFWFBF
Q1RfVFJVRShEZWZhdWx0VmFsdWU8aW50Pjo6RXhpc3RzKCkpOwotICBFWFBFQ1RfRkFMU0UoRGVm
YXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpFeGlzdHMoKSk7Ci0K
LSAgRGVmYXVsdFZhbHVlPGludD46OlNldCgxKTsKLSAgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9u
RGVmYXVsdENvbnN0cnVjdGlibGU+OjpTZXQoCi0gICAgICBNeU5vbkRlZmF1bHRDb25zdHJ1Y3Rp
YmxlKDQyKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIERlZmF1bHRWYWx1ZTxpbnQ+OjpHZXQoKSk7Ci0g
IEVYUEVDVF9FUSg0MiwgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGli
bGU+OjpHZXQoKS52YWx1ZSgpKTsKLQotICBFWFBFQ1RfVFJVRShEZWZhdWx0VmFsdWU8aW50Pjo6
RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0
Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLQotICBEZWZhdWx0VmFsdWU8aW50Pjo6Q2xlYXIo
KTsKLSAgRGVmYXVsdFZhbHVlPGNvbnN0IE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGU+OjpDbGVh
cigpOwotCi0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Pjo6SXNTZXQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46
OklzU2V0KCkpOwotCi0gIEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxpbnQ+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgTXlOb25EZWZhdWx0Q29uc3RydWN0
aWJsZT46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VD46Okdl
dCgpIHJldHVybnMgdGhlCi0vLyBCdWlsdEluRGVmYXVsdFZhbHVlPFQ+OjpHZXQoKSB3aGVuIERl
ZmF1bHRWYWx1ZTxUPjo6SXNTZXQoKSBpcwotLy8gZmFsc2UuCi1URVNUKERlZmF1bHRWYWx1ZURl
YXRoVGVzdCwgR2V0UmV0dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVXaGVuVW5zZXQpIHsKLSAgRVhQ
RUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxpbnQ+OjpJc1NldCgpKTsKLSAgRVhQRUNUX1RSVUUoRGVm
YXVsdFZhbHVlPGludD46OkV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxN
eU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6SXNTZXQoKSk7Ci0gIEVYUEVDVF9GQUxTRShEZWZh
dWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46OkV4aXN0cygpKTsKLQotICBFWFBF
Q1RfRVEoMCwgRGVmYXVsdFZhbHVlPGludD46OkdldCgpKTsKLQotICBFWFBFQ1RfREVBVEhfSUZf
U1VQUE9SVEVEKHsKLSAgICBEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZT46
OkdldCgpOwotICB9LCAiIik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi1U
RVNUKERlZmF1bHRWYWx1ZVRlc3QsIEdldFdvcmtzRm9yTW92ZU9ubHlJZlNldCkgewotICBFWFBF
Q1RfVFJVRShEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpFeGlzdHMoKSk7Ci0g
IEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj46OkdldCgpID09
IE5VTEwpOwotICBEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpTZXRGYWN0b3J5
KFtdIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCg0MikpOwotICB9
KTsKLSAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+Pjo6RXhp
c3RzKCkpOwotICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiBpID0gRGVmYXVsdFZhbHVlPHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+Pjo6R2V0KCk7Ci0gIEVYUEVDVF9FUSg0MiwgKmkpOwotfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0KLS8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVl
PHZvaWQ+OjpHZXQoKSByZXR1cm5zIHZvaWQuCi1URVNUKERlZmF1bHRWYWx1ZVRlc3QsIEdldFdv
cmtzRm9yVm9pZCkgewotICByZXR1cm4gRGVmYXVsdFZhbHVlPHZvaWQ+OjpHZXQoKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgRGVmYXVsdFZhbHVlIHdpdGggYSByZWZlcmVuY2UgdHlwZS4KLQotLy8g
VGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VCY+OjpJc1NldCgpIGlzIGZhbHNlIGluaXRpYWxseS4K
LVRFU1QoRGVmYXVsdFZhbHVlT2ZSZWZlcmVuY2VUZXN0LCBJc0luaXRpYWxseVVuc2V0KSB7Ci0g
IEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Jj46OklzU2V0KCkpOwotICBFWFBFQ1RfRkFM
U0UoRGVmYXVsdFZhbHVlPE15RGVmYXVsdENvbnN0cnVjdGlibGUmPjo6SXNTZXQoKSk7Ci0gIEVY
UEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpJc1Nl
dCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0VmFsdWU8VCY+OjpFeGlzdHMgaXMgZmFs
c2UgaW5pdGlhbGxseS4KLVRFU1QoRGVmYXVsdFZhbHVlT2ZSZWZlcmVuY2VUZXN0LCBJc0luaXRp
YWxseU5vdEV4aXN0aW5nKSB7Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8aW50Jj46OkV4
aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxNeURlZmF1bHRDb25zdHJ1Y3Rp
YmxlJj46OkV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1
bHRDb25zdHJ1Y3RpYmxlJj46OkV4aXN0cygpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBEZWZhdWx0
VmFsdWU8VCY+IGNhbiBiZSBzZXQgYW5kIHRoZW4gdW5zZXQuCi1URVNUKERlZmF1bHRWYWx1ZU9m
UmVmZXJlbmNlVGVzdCwgQ2FuQmVTZXRBbmRVbnNldCkgewotICBpbnQgbiA9IDE7Ci0gIERlZmF1
bHRWYWx1ZTxjb25zdCBpbnQmPjo6U2V0KG4pOwotICBNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxl
IHgoNDIpOwotICBEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+OjpTZXQo
eCk7Ci0KLSAgRVhQRUNUX1RSVUUoRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+OjpFeGlzdHMoKSk7
Ci0gIEVYUEVDVF9UUlVFKERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46
OkV4aXN0cygpKTsKLQotICBFWFBFQ1RfRVEoJm4sICYoRGVmYXVsdFZhbHVlPGNvbnN0IGludCY+
OjpHZXQoKSkpOwotICBFWFBFQ1RfRVEoJngsICYoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENv
bnN0cnVjdGlibGUmPjo6R2V0KCkpKTsKLQotICBEZWZhdWx0VmFsdWU8Y29uc3QgaW50Jj46OkNs
ZWFyKCk7Ci0gIERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlJj46OkNsZWFy
KCk7Ci0KLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxjb25zdCBpbnQmPjo6RXhpc3RzKCkp
OwotICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUm
Pjo6RXhpc3RzKCkpOwotCi0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8Y29uc3QgaW50Jj46
OklzU2V0KCkpOwotICBFWFBFQ1RfRkFMU0UoRGVmYXVsdFZhbHVlPE15Tm9uRGVmYXVsdENvbnN0
cnVjdGlibGUmPjo6SXNTZXQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRGVmYXVsdFZhbHVlPFQm
Pjo6R2V0KCkgcmV0dXJucyB0aGUKLS8vIEJ1aWx0SW5EZWZhdWx0VmFsdWU8VCY+OjpHZXQoKSB3
aGVuIERlZmF1bHRWYWx1ZTxUJj46OklzU2V0KCkgaXMKLS8vIGZhbHNlLgotVEVTVChEZWZhdWx0
VmFsdWVPZlJlZmVyZW5jZURlYXRoVGVzdCwgR2V0UmV0dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVX
aGVuVW5zZXQpIHsKLSAgRVhQRUNUX0ZBTFNFKERlZmF1bHRWYWx1ZTxpbnQmPjo6SXNTZXQoKSk7
Ci0gIEVYUEVDVF9GQUxTRShEZWZhdWx0VmFsdWU8TXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSY+
OjpJc1NldCgpKTsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICBEZWZhdWx0
VmFsdWU8aW50Jj46OkdldCgpOwotICB9LCAiIik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JU
RUQoewotICAgIERlZmF1bHRWYWx1ZTxNeU5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlPjo6R2V0KCk7
Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBY3Rpb25JbnRlcmZhY2UgY2FuIGJlIGlt
cGxlbWVudGVkIGJ5IGRlZmluaW5nIHRoZQotLy8gUGVyZm9ybSBtZXRob2QuCi0KLXR5cGVkZWYg
aW50IE15R2xvYmFsRnVuY3Rpb24oYm9vbCwgaW50KTsKLQotY2xhc3MgTXlBY3Rpb25JbXBsIDog
cHVibGljIEFjdGlvbkludGVyZmFjZTxNeUdsb2JhbEZ1bmN0aW9uPiB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIGludCBQZXJmb3JtKGNvbnN0IHR1cGxlPGJvb2wsIGludD4mIGFyZ3MpIHsKLSAgICBy
ZXR1cm4gZ2V0PDA+KGFyZ3MpID8gZ2V0PDE+KGFyZ3MpIDogMDsKLSAgfQotfTsKLQotVEVTVChB
Y3Rpb25JbnRlcmZhY2VUZXN0LCBDYW5CZUltcGxlbWVudGVkQnlEZWZpbmluZ1BlcmZvcm0pIHsK
LSAgTXlBY3Rpb25JbXBsIG15X2FjdGlvbl9pbXBsOwotICAodm9pZClteV9hY3Rpb25faW1wbDsK
LX0KLQotVEVTVChBY3Rpb25JbnRlcmZhY2VUZXN0LCBNYWtlQWN0aW9uKSB7Ci0gIEFjdGlvbjxN
eUdsb2JhbEZ1bmN0aW9uPiBhY3Rpb24gPSBNYWtlQWN0aW9uKG5ldyBNeUFjdGlvbkltcGwpOwot
Ci0gIC8vIFdoZW4gZXhlcmNpc2luZyB0aGUgUGVyZm9ybSgpIG1ldGhvZCBvZiBBY3Rpb248Rj4s
IHdlIG11c3QgcGFzcwotICAvLyBpdCBhIHR1cGxlIHdob3NlIHNpemUgYW5kIHR5cGUgYXJlIGNv
bXBhdGlibGUgd2l0aCBGJ3MgYXJndW1lbnQKLSAgLy8gdHlwZXMuICBGb3IgZXhhbXBsZSwgaWYg
RiBpcyBpbnQoKSwgdGhlbiBQZXJmb3JtKCkgdGFrZXMgYQotICAvLyAwLXR1cGxlOyBpZiBGIGlz
IHZvaWQoYm9vbCwgaW50KSwgdGhlbiBQZXJmb3JtKCkgdGFrZXMgYQotICAvLyB0dXBsZTxib29s
LCBpbnQ+LCBhbmQgc28gb24uCi0gIEVYUEVDVF9FUSg1LCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1
cGxlKHRydWUsIDUpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQWN0aW9uPEY+IGNhbiBiZSBjb250
cnVjdGVkIGZyb20gYSBwb2ludGVyIHRvCi0vLyBBY3Rpb25JbnRlcmZhY2U8Rj4uCi1URVNUKEFj
dGlvblRlc3QsIENhbkJlQ29uc3RydWN0ZWRGcm9tQWN0aW9uSW50ZXJmYWNlKSB7Ci0gIEFjdGlv
bjxNeUdsb2JhbEZ1bmN0aW9uPiBhY3Rpb24obmV3IE15QWN0aW9uSW1wbCk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgQWN0aW9uPEY+IGRlbGVnYXRlcyBhY3R1YWwgd29yayB0byBBY3Rpb25JbnRlcmZh
Y2U8Rj4uCi1URVNUKEFjdGlvblRlc3QsIERlbGVnYXRlc1dvcmtUb0FjdGlvbkludGVyZmFjZSkg
ewotICBjb25zdCBBY3Rpb248TXlHbG9iYWxGdW5jdGlvbj4gYWN0aW9uKG5ldyBNeUFjdGlvbklt
cGwpOwotCi0gIEVYUEVDVF9FUSg1LCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIDUp
KSk7Ci0gIEVYUEVDVF9FUSgwLCBhY3Rpb24uUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAxKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEFjdGlvbjxGPiBjYW4gYmUgY29waWVkLgotVEVTVChBY3Rp
b25UZXN0LCBJc0NvcHlhYmxlKSB7Ci0gIEFjdGlvbjxNeUdsb2JhbEZ1bmN0aW9uPiBhMShuZXcg
TXlBY3Rpb25JbXBsKTsKLSAgQWN0aW9uPE15R2xvYmFsRnVuY3Rpb24+IGEyKGExKTsgIC8vIFRl
c3RzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgotCi0gIC8vIGExIHNob3VsZCBjb250aW51ZSB0byB3
b3JrIGFmdGVyIGJlaW5nIGNvcGllZCBmcm9tLgotICBFWFBFQ1RfRVEoNSwgYTEuUGVyZm9ybSht
YWtlX3R1cGxlKHRydWUsIDUpKSk7Ci0gIEVYUEVDVF9FUSgwLCBhMS5QZXJmb3JtKG1ha2VfdHVw
bGUoZmFsc2UsIDEpKSk7Ci0KLSAgLy8gYTIgc2hvdWxkIHdvcmsgbGlrZSB0aGUgYWN0aW9uIGl0
IHdhcyBjb3BpZWQgZnJvbS4KLSAgRVhQRUNUX0VRKDUsIGEyLlBlcmZvcm0obWFrZV90dXBsZSh0
cnVlLCA1KSkpOwotICBFWFBFQ1RfRVEoMCwgYTIuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAx
KSkpOwotCi0gIGEyID0gYTE7ICAvLyBUZXN0cyB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KLQot
ICAvLyBhMSBzaG91bGQgY29udGludWUgdG8gd29yayBhZnRlciBiZWluZyBjb3BpZWQgZnJvbS4K
LSAgRVhQRUNUX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1KSkpOwotICBFWFBF
Q1RfRVEoMCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCAxKSkpOwotCi0gIC8vIGEyIHNo
b3VsZCB3b3JrIGxpa2UgdGhlIGFjdGlvbiBpdCB3YXMgY29waWVkIGZyb20uCi0gIEVYUEVDVF9F
USg1LCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgNSkpKTsKLSAgRVhQRUNUX0VRKDAsIGEy
LlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbiBB
Y3Rpb248RnJvbT4gb2JqZWN0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYQotLy8gY29tcGF0aWJsZSBB
Y3Rpb248VG8+IG9iamVjdC4KLQotY2xhc3MgSXNOb3RaZXJvIDogcHVibGljIEFjdGlvbkludGVy
ZmFjZTxib29sKGludCk+IHsgIC8vIE5PTElOVAotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIFBl
cmZvcm0oY29uc3QgdHVwbGU8aW50PiYgYXJnKSB7Ci0gICAgcmV0dXJuIGdldDwwPihhcmcpICE9
IDA7Ci0gIH0KLX07Ci0KLSNpZiAhR1RFU1RfT1NfU1lNQklBTgotLy8gQ29tcGlsaW5nIHRoaXMg
dGVzdCBvbiBOb2tpYSdzIFN5bWJpYW4gY29tcGlsZXIgZmFpbHMgd2l0aDoKLS8vICAnUmVzdWx0
JyBpcyBub3QgYSBtZW1iZXIgb2YgY2xhc3MgJ3Rlc3Rpbmc6OmludGVybmFsOjpGdW5jdGlvbjxp
bnQ+JwotLy8gIChwb2ludCBvZiBpbnN0YW50aWF0aW9uOiAnQHVubmFtZWRAZ21vY2tfYWN0aW9u
c190ZXN0X2NjQDo6Ci0vLyAgICAgIEFjdGlvblRlc3RfQ2FuQmVDb252ZXJ0ZWRUb090aGVyQWN0
aW9uVHlwZV9UZXN0OjpUZXN0Qm9keSgpJykKLS8vIHdpdGggbm8gb2J2aW91cyBmaXguCi1URVNU
KEFjdGlvblRlc3QsIENhbkJlQ29udmVydGVkVG9PdGhlckFjdGlvblR5cGUpIHsKLSAgY29uc3Qg
QWN0aW9uPGJvb2woaW50KT4gYTEobmV3IElzTm90WmVybyk7ICAvLyBOT0xJTlQKLSAgY29uc3Qg
QWN0aW9uPGludChjaGFyKT4gYTIgPSBBY3Rpb248aW50KGNoYXIpPihhMSk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX0VRKDEsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgnYScpKSk7Ci0gIEVYUEVDVF9F
USgwLCBhMi5QZXJmb3JtKG1ha2VfdHVwbGUoJ1wwJykpKTsKLX0KLSNlbmRpZiAgLy8gIUdURVNU
X09TX1NZTUJJQU4KLQotLy8gVGhlIGZvbGxvd2luZyB0d28gY2xhc3NlcyBhcmUgZm9yIHRlc3Rp
bmcgTWFrZVBvbHltb3JwaGljQWN0aW9uKCkuCi0KLS8vIEltcGxlbWVudHMgYSBwb2x5bW9ycGhp
YyBhY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzZWNvbmQgb2YgdGhlCi0vLyBhcmd1bWVudHMgaXQg
cmVjZWl2ZXMuCi1jbGFzcyBSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbiB7Ci0gcHVibGljOgot
ICAvLyBXZSB3YW50IHRvIHZlcmlmeSB0aGF0IE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIGNhbiB3
b3JrIHdpdGggYQotICAvLyBwb2x5bW9ycGhpYyBhY3Rpb24gd2hvc2UgUGVyZm9ybSgpIG1ldGhv
ZCB0ZW1wbGF0ZSBpcyBlaXRoZXIKLSAgLy8gY29uc3Qgb3Igbm90LiAgVGhpcyBsZXRzIHVzIHZl
cmlmeSB0aGUgbm9uLWNvbnN0IGNhc2UuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQsIHR5
cGVuYW1lIEFyZ3VtZW50VHVwbGU+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IEFyZ3VtZW50VHVw
bGUmIGFyZ3MpIHsgcmV0dXJuIGdldDwxPihhcmdzKTsgfQotfTsKLQotLy8gSW1wbGVtZW50cyBh
IHBvbHltb3JwaGljIGFjdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIGEgbnVsbGFyeQotLy8gZnVu
Y3Rpb24gdG8gcmV0dXJuIDAuCi1jbGFzcyBSZXR1cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbkFj
dGlvbiB7Ci0gcHVibGljOgotICAvLyBGb3IgdGVzdGluZyB0aGF0IE1ha2VQb2x5bW9ycGhpY0Fj
dGlvbigpIHdvcmtzIHdoZW4gdGhlCi0gIC8vIGltcGxlbWVudGF0aW9uIGNsYXNzJyBQZXJmb3Jt
KCkgbWV0aG9kIHRlbXBsYXRlIHRha2VzIG9ubHkgb25lCi0gIC8vIHRlbXBsYXRlIHBhcmFtZXRl
ci4KLSAgLy8KLSAgLy8gV2Ugd2FudCB0byB2ZXJpZnkgdGhhdCBNYWtlUG9seW1vcnBoaWNBY3Rp
b24oKSBjYW4gd29yayB3aXRoIGEKLSAgLy8gcG9seW1vcnBoaWMgYWN0aW9uIHdob3NlIFBlcmZv
cm0oKSBtZXRob2QgdGVtcGxhdGUgaXMgZWl0aGVyCi0gIC8vIGNvbnN0IG9yIG5vdC4gIFRoaXMg
bGV0cyB1cyB2ZXJpZnkgdGhlIGNvbnN0IGNhc2UuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Ci0gIFJlc3VsdCBQZXJmb3JtKGNvbnN0IHR1cGxlPD4mKSBjb25zdCB7IHJldHVybiAwOyB9
Ci19OwotCi0vLyBUaGVzZSBmdW5jdGlvbnMgdmVyaWZ5IHRoYXQgTWFrZVBvbHltb3JwaGljQWN0
aW9uKCkgcmV0dXJucyBhCi0vLyBQb2x5bW9ycGhpY0FjdGlvbjxUPiB3aGVyZSBUIGlzIHRoZSBh
cmd1bWVudCdzIHR5cGUuCi0KLVBvbHltb3JwaGljQWN0aW9uPFJldHVyblNlY29uZEFyZ3VtZW50
QWN0aW9uPiBSZXR1cm5TZWNvbmRBcmd1bWVudCgpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhp
Y0FjdGlvbihSZXR1cm5TZWNvbmRBcmd1bWVudEFjdGlvbigpKTsKLX0KLQotUG9seW1vcnBoaWNB
Y3Rpb248UmV0dXJuWmVyb0Zyb21OdWxsYXJ5RnVuY3Rpb25BY3Rpb24+Ci1SZXR1cm5aZXJvRnJv
bU51bGxhcnlGdW5jdGlvbigpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY0FjdGlvbihSZXR1
cm5aZXJvRnJvbU51bGxhcnlGdW5jdGlvbkFjdGlvbigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBN
YWtlUG9seW1vcnBoaWNBY3Rpb24oKSB0dXJucyBhIHBvbHltb3JwaGljIGFjdGlvbgotLy8gaW1w
bGVtZW50YXRpb24gY2xhc3MgaW50byBhIHBvbHltb3JwaGljIGFjdGlvbi4KLVRFU1QoTWFrZVBv
bHltb3JwaGljQWN0aW9uVGVzdCwgQ29uc3RydWN0c0FjdGlvbkZyb21JbXBsKSB7Ci0gIEFjdGlv
bjxpbnQoYm9vbCwgaW50LCBkb3VibGUpPiBhMSA9IFJldHVyblNlY29uZEFyZ3VtZW50KCk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0VRKDUsIGExLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgNSwg
Mi4wKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1ha2VQb2x5bW9ycGhpY0FjdGlvbigpIHdvcmtz
IHdoZW4gdGhlIGltcGxlbWVudGF0aW9uCi0vLyBjbGFzcycgUGVyZm9ybSgpIG1ldGhvZCB0ZW1w
bGF0ZSBoYXMgb25seSBvbmUgdGVtcGxhdGUgcGFyYW1ldGVyLgotVEVTVChNYWtlUG9seW1vcnBo
aWNBY3Rpb25UZXN0LCBXb3Jrc1doZW5QZXJmb3JtSGFzT25lVGVtcGxhdGVQYXJhbWV0ZXIpIHsK
LSAgQWN0aW9uPGludCgpPiBhMSA9IFJldHVyblplcm9Gcm9tTnVsbGFyeUZ1bmN0aW9uKCk7Ci0g
IEVYUEVDVF9FUSgwLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotCi0gIEFjdGlvbjx2b2lk
KigpPiBhMiA9IFJldHVyblplcm9Gcm9tTnVsbGFyeUZ1bmN0aW9uKCk7Ci0gIEVYUEVDVF9UUlVF
KGEyLlBlcmZvcm0obWFrZV90dXBsZSgpKSA9PSBOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBS
ZXR1cm4oKSB3b3JrcyBhcyBhbiBhY3Rpb24gZm9yIHZvaWQtcmV0dXJuaW5nCi0vLyBmdW5jdGlv
bnMuCi1URVNUKFJldHVyblRlc3QsIFdvcmtzRm9yVm9pZCkgewotICBjb25zdCBBY3Rpb248dm9p
ZChpbnQpPiByZXQgPSBSZXR1cm4oKTsgIC8vIE5PTElOVAotICByZXR1cm4gcmV0LlBlcmZvcm0o
bWFrZV90dXBsZSgxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuKHYpIHJldHVybnMgdi4K
LVRFU1QoUmV0dXJuVGVzdCwgUmV0dXJuc0dpdmVuVmFsdWUpIHsKLSAgQWN0aW9uPGludCgpPiBy
ZXQgPSBSZXR1cm4oMSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEsIHJldC5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOwotCi0gIHJldCA9IFJldHVybigtNSk7Ci0gIEVYUEVDVF9FUSgtNSwgcmV0
LlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuKCJzdHJp
bmcgbGl0ZXJhbCIpIHdvcmtzLgotVEVTVChSZXR1cm5UZXN0LCBBY2NlcHRzU3RyaW5nTGl0ZXJh
bCkgewotICBBY3Rpb248Y29uc3QgY2hhciooKT4gYTEgPSBSZXR1cm4oIkhlbGxvIik7Ci0gIEVY
UEVDVF9TVFJFUSgiSGVsbG8iLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotCi0gIEFjdGlv
bjxzdGQ6OnN0cmluZygpPiBhMiA9IFJldHVybigid29ybGQiKTsKLSAgRVhQRUNUX0VRKCJ3b3Js
ZCIsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3Qgc3RydWN0IHdoaWNo
IHdyYXBzIGEgdmVjdG9yIG9mIGludGVnZXJzLiBVc2VkIGluCi0vLyAnU3VwcG9ydHNXcmFwcGVy
UmV0dXJuVHlwZScgdGVzdC4KLXN0cnVjdCBJbnRlZ2VyVmVjdG9yV3JhcHBlciB7Ci0gIHN0ZDo6
dmVjdG9yPGludD4gKiB2OwotICBJbnRlZ2VyVmVjdG9yV3JhcHBlcihzdGQ6OnZlY3RvcjxpbnQ+
JiBfdikgOiB2KCZfdikge30gIC8vIE5PTElOVAotfTsKLQotLy8gVGVzdHMgdGhhdCBSZXR1cm4o
KSB3b3JrcyB3aGVuIHJldHVybiB0eXBlIGlzIGEgd3JhcHBlciB0eXBlLgotVEVTVChSZXR1cm5U
ZXN0LCBTdXBwb3J0c1dyYXBwZXJSZXR1cm5UeXBlKSB7Ci0gIC8vIEluaXRpYWxpemUgdmVjdG9y
IG9mIGludGVnZXJzLgotICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Ci0gIGZvciAoaW50IGkgPSAwOyBp
IDwgNTsgKytpKSB2LnB1c2hfYmFjayhpKTsKLQotICAvLyBSZXR1cm4oKSBjYWxsZWQgd2l0aCAn
dicgYXMgYXJndW1lbnQuIFRoZSBBY3Rpb24gd2lsbCByZXR1cm4gdGhlIHNhbWUgZGF0YQotICAv
LyBhcyAndicgKGNvcHkpIGJ1dCBpdCB3aWxsIGJlIHdyYXBwZWQgaW4gYW4gSW50ZWdlclZlY3Rv
cldyYXBwZXIuCi0gIEFjdGlvbjxJbnRlZ2VyVmVjdG9yV3JhcHBlcigpPiBhID0gUmV0dXJuKHYp
OwotICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiByZXN1bHQgPSAqKGEuUGVyZm9ybShtYWtlX3R1
cGxlKCkpLnYpOwotICBFWFBFQ1RfVEhBVChyZXN1bHQsIDo6dGVzdGluZzo6RWxlbWVudHNBcmUo
MCwgMSwgMiwgMywgNCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJldHVybih2KSBpcyBjb3ZhcmFp
bnQuCi0KLXN0cnVjdCBCYXNlIHsKLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2UmKSB7IHJl
dHVybiB0cnVlOyB9Ci19OwotCi1zdHJ1Y3QgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKLSAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IERlcml2ZWQmKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi1URVNU
KFJldHVyblRlc3QsIElzQ292YXJpYW50KSB7Ci0gIEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJp
dmVkOwotICBBY3Rpb248QmFzZSooKT4gcmV0ID0gUmV0dXJuKCZiYXNlKTsKLSAgRVhQRUNUX0VR
KCZiYXNlLCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICByZXQgPSBSZXR1cm4oJmRl
cml2ZWQpOwotICBFWFBFQ1RfRVEoJmRlcml2ZWQsIHJldC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBwYXNzZWQgaW50byBS
ZXR1cm4gaXMgY29udmVydGVkIGludG8gVAotLy8gd2hlbiB0aGUgYWN0aW9uIGlzIGNhc3QgdG8g
QWN0aW9uPFQoLi4uKT4gcmF0aGVyIHRoYW4gd2hlbiB0aGUgYWN0aW9uIGlzCi0vLyBwZXJmb3Jt
ZWQuIFNlZSBjb21tZW50cyBvbiB0ZXN0aW5nOjppbnRlcm5hbDo6UmV0dXJuQWN0aW9uIGluCi0v
LyBnbW9jay1hY3Rpb25zLmggZm9yIG1vcmUgaW5mb3JtYXRpb24uCi1jbGFzcyBGcm9tVHlwZSB7
Ci0gcHVibGljOgotICBleHBsaWNpdCBGcm9tVHlwZShib29sKiBpc19jb252ZXJ0ZWQpIDogY29u
dmVydGVkXyhpc19jb252ZXJ0ZWQpIHt9Ci0gIGJvb2wqIGNvbnZlcnRlZCgpIGNvbnN0IHsgcmV0
dXJuIGNvbnZlcnRlZF87IH0KLQotIHByaXZhdGU6Ci0gIGJvb2wqIGNvbnN0IGNvbnZlcnRlZF87
Ci0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhGcm9tVHlwZSk7Ci19OwotCi1jbGFzcyBUb1R5
cGUgewotIHB1YmxpYzoKLSAgLy8gTXVzdCBhbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9uIGR1ZSB0
byB1c2UgaW4gSW1wbGljaXRDYXN0XzxUPi4KLSAgVG9UeXBlKGNvbnN0IEZyb21UeXBlJiB4KSB7
ICp4LmNvbnZlcnRlZCgpID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCi19OwotCi1URVNUKFJldHVyblRl
c3QsIENvbnZlcnRzQXJndW1lbnRXaGVuQ29udmVydGVkKSB7Ci0gIGJvb2wgY29udmVydGVkID0g
ZmFsc2U7Ci0gIEZyb21UeXBlIHgoJmNvbnZlcnRlZCk7Ci0gIEFjdGlvbjxUb1R5cGUoKT4gYWN0
aW9uKFJldHVybih4KSk7Ci0gIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCkgPDwgIlJldHVybiBtdXN0
IGNvbnZlcnQgaXRzIGFyZ3VtZW50IGluIGl0cyBvd24gIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJjb252ZXJzaW9uIG9wZXJhdG9yLiI7Ci0gIGNvbnZlcnRlZCA9IGZhbHNlOwotICBh
Y3Rpb24uUGVyZm9ybSh0dXBsZTw+KCkpOwotICBFWFBFQ1RfRkFMU0UoY29udmVydGVkKSA8PCAi
QWN0aW9uIG11c3QgTk9UIGNvbnZlcnQgaXRzIGFyZ3VtZW50ICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIndoZW4gcGVyZm9ybWVkLiI7Ci19Ci0KLWNsYXNzIERlc3RpbmF0aW9uVHlw
ZSB7fTsKLQotY2xhc3MgU291cmNlVHlwZSB7Ci0gcHVibGljOgotICAvLyBOb3RlOiBhIG5vbi1j
b25zdCB0eXBlY2FzdCBvcGVyYXRvci4KLSAgb3BlcmF0b3IgRGVzdGluYXRpb25UeXBlKCkgeyBy
ZXR1cm4gRGVzdGluYXRpb25UeXBlKCk7IH0KLX07Ci0KLVRFU1QoUmV0dXJuVGVzdCwgQ2FuQ29u
dmVydEFyZ3VtZW50VXNpbmdOb25Db25zdFR5cGVDYXN0T3BlcmF0b3IpIHsKLSAgU291cmNlVHlw
ZSBzOwotICBBY3Rpb248RGVzdGluYXRpb25UeXBlKCk+IGFjdGlvbihSZXR1cm4ocykpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFJldHVybk51bGwoKSByZXR1cm5zIE5VTEwgaW4gYSBwb2ludGVyLXJl
dHVybmluZyBmdW5jdGlvbi4KLVRFU1QoUmV0dXJuTnVsbFRlc3QsIFdvcmtzSW5Qb2ludGVyUmV0
dXJuaW5nRnVuY3Rpb24pIHsKLSAgY29uc3QgQWN0aW9uPGludCooKT4gYTEgPSBSZXR1cm5OdWxs
KCk7Ci0gIEVYUEVDVF9UUlVFKGExLlBlcmZvcm0obWFrZV90dXBsZSgpKSA9PSBOVUxMKTsKLQot
ICBjb25zdCBBY3Rpb248Y29uc3QgY2hhciooYm9vbCk+IGEyID0gUmV0dXJuTnVsbCgpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9UUlVFKGEyLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlKSkgPT0gTlVM
TCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0vLyBUZXN0cyB0aGF0IFJl
dHVybk51bGwoKSByZXR1cm5zIE5VTEwgZm9yIHNoYXJlZF9wdHIgYW5kIHVuaXF1ZV9wdHIgcmV0
dXJuaW5nCi0vLyBmdW5jdGlvbnMuCi1URVNUKFJldHVybk51bGxUZXN0LCBXb3Jrc0luU21hcnRQ
b2ludGVyUmV0dXJuaW5nRnVuY3Rpb24pIHsKLSAgY29uc3QgQWN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxjb25zdCBpbnQ+KCk+IGExID0gUmV0dXJuTnVsbCgpOwotICBFWFBFQ1RfVFJVRShhMS5QZXJm
b3JtKG1ha2VfdHVwbGUoKSkgPT0gbnVsbHB0cik7Ci0KLSAgY29uc3QgQWN0aW9uPHN0ZDo6c2hh
cmVkX3B0cjxpbnQ+KHN0ZDo6c3RyaW5nKT4gYTIgPSBSZXR1cm5OdWxsKCk7Ci0gIEVYUEVDVF9U
UlVFKGEyLlBlcmZvcm0obWFrZV90dXBsZSgiZm9vIikpID09IG51bGxwdHIpOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0KLS8vIFRlc3RzIHRoYXQgUmV0dXJuUmVm
KHYpIHdvcmtzIGZvciByZWZlcmVuY2UgdHlwZXMuCi1URVNUKFJldHVyblJlZlRlc3QsIFdvcmtz
Rm9yUmVmZXJlbmNlKSB7Ci0gIGNvbnN0IGludCBuID0gMDsKLSAgY29uc3QgQWN0aW9uPGNvbnN0
IGludCYoYm9vbCk+IHJldCA9IFJldHVyblJlZihuKTsgIC8vIE5PTElOVAotCi0gIEVYUEVDVF9F
USgmbiwgJnJldC5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSkpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBSZXR1cm5SZWYodikgaXMgY292YXJpYW50LgotVEVTVChSZXR1cm5SZWZUZXN0LCBJc0NvdmFy
aWFudCkgewotICBCYXNlIGJhc2U7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgQWN0aW9uPEJhc2Um
KCk+IGEgPSBSZXR1cm5SZWYoYmFzZSk7Ci0gIEVYUEVDVF9FUSgmYmFzZSwgJmEuUGVyZm9ybSht
YWtlX3R1cGxlKCkpKTsKLQotICBhID0gUmV0dXJuUmVmKGRlcml2ZWQpOwotICBFWFBFQ1RfRVEo
JmRlcml2ZWQsICZhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
UmV0dXJuUmVmT2ZDb3B5KHYpIHdvcmtzIGZvciByZWZlcmVuY2UgdHlwZXMuCi1URVNUKFJldHVy
blJlZk9mQ29weVRlc3QsIFdvcmtzRm9yUmVmZXJlbmNlKSB7Ci0gIGludCBuID0gNDI7Ci0gIGNv
bnN0IEFjdGlvbjxjb25zdCBpbnQmKCk+IHJldCA9IFJldHVyblJlZk9mQ29weShuKTsKLQotICBF
WFBFQ1RfTkUoJm4sICZyZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKDQy
LCByZXQuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICBuID0gNDM7Ci0gIEVYUEVDVF9ORSgm
biwgJnJldC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotICBFWFBFQ1RfRVEoNDIsIHJldC5QZXJm
b3JtKG1ha2VfdHVwbGUoKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJldHVyblJlZk9mQ29weSh2
KSBpcyBjb3ZhcmlhbnQuCi1URVNUKFJldHVyblJlZk9mQ29weVRlc3QsIElzQ292YXJpYW50KSB7
Ci0gIEJhc2UgYmFzZTsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBBY3Rpb248QmFzZSYoKT4gYSA9
IFJldHVyblJlZk9mQ29weShiYXNlKTsKLSAgRVhQRUNUX05FKCZiYXNlLCAmYS5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOwotCi0gIGEgPSBSZXR1cm5SZWZPZkNvcHkoZGVyaXZlZCk7Ci0gIEVYUEVD
VF9ORSgmZGVyaXZlZCwgJmEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBEb0RlZmF1bHQoKSBkb2VzIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIG1vY2sgbWV0
aG9kLgotCi1jbGFzcyBNb2NrQ2xhc3MgewotIHB1YmxpYzoKLSAgTW9ja0NsYXNzKCkge30KLQot
ICBNT0NLX01FVEhPRDEoSW50RnVuYywgaW50KGJvb2wgZmxhZykpOyAgLy8gTk9MSU5UCi0gIE1P
Q0tfTUVUSE9EMChGb28sIE15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUoKSk7Ci0jaWYgR1RFU1Rf
SEFTX1NURF9VTklRVUVfUFRSXwotICBNT0NLX01FVEhPRDAoTWFrZVVuaXF1ZSwgc3RkOjp1bmlx
dWVfcHRyPGludD4oKSk7Ci0gIE1PQ0tfTUVUSE9EMChNYWtlVW5pcXVlQmFzZSwgc3RkOjp1bmlx
dWVfcHRyPEJhc2U+KCkpOwotICBNT0NLX01FVEhPRDAoTWFrZVZlY3RvclVuaXF1ZSwgc3RkOjp2
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+KCkpOwotI2VuZGlmCi0KLSBwcml2YXRlOgotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tDbGFzcyk7Ci19OwotCi0vLyBUZXN0
cyB0aGF0IERvRGVmYXVsdCgpIHJldHVybnMgdGhlIGJ1aWx0LWluIGRlZmF1bHQgdmFsdWUgZm9y
IHRoZQotLy8gcmV0dXJuIHR5cGUgYnkgZGVmYXVsdC4KLVRFU1QoRG9EZWZhdWx0VGVzdCwgUmV0
dXJuc0J1aWx0SW5EZWZhdWx0VmFsdWVCeURlZmF1bHQpIHsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0g
IEVYUEVDVF9DQUxMKG1vY2ssIEludEZ1bmMoXykpCi0gICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0
KCkpOwotICBFWFBFQ1RfRVEoMCwgbW9jay5JbnRGdW5jKHRydWUpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBEb0RlZmF1bHQoKSB0aHJvd3MgKHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCkgb3Ig
YWJvcnRzCi0vLyB0aGUgcHJvY2VzcyB3aGVuIHRoZXJlIGlzIG5vIGJ1aWx0LWluIGRlZmF1bHQg
dmFsdWUgZm9yIHRoZSByZXR1cm4gdHlwZS4KLVRFU1QoRG9EZWZhdWx0RGVhdGhUZXN0LCBEaWVz
Rm9yVW5rbm93VHlwZSkgewotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNUX0NBTEwobW9jaywg
Rm9vKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoRG9EZWZhdWx0KCkpOwotI2lmIEdURVNUX0hB
U19FWENFUFRJT05TCi0gIEVYUEVDVF9BTllfVEhST1cobW9jay5Gb28oKSk7Ci0jZWxzZQotICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICBtb2NrLkZvbygpOwotICB9LCAiIik7Ci0j
ZW5kaWYKLX0KLQotLy8gVGVzdHMgdGhhdCB1c2luZyBEb0RlZmF1bHQoKSBpbnNpZGUgYSBjb21w
b3NpdGUgYWN0aW9uIGxlYWRzIHRvIGEKLS8vIHJ1bi10aW1lIGVycm9yLgotCi12b2lkIFZvaWRG
dW5jKGJvb2wgLyogZmxhZyAqLykge30KLQotVEVTVChEb0RlZmF1bHREZWF0aFRlc3QsIERpZXNJ
ZlVzZWRJbkNvbXBvc2l0ZUFjdGlvbikgewotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNUX0NB
TEwobW9jaywgSW50RnVuYyhfKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShEb0FsbChJbnZva2Uo
Vm9pZEZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvRGVmYXVsdCgpKSk7Ci0K
LSAgLy8gSWRlYWxseSB3ZSBzaG91bGQgdmVyaWZ5IHRoZSBlcnJvciBtZXNzYWdlIGFzIHdlbGwu
ICBTYWRseSwKLSAgLy8gRVhQRUNUX0RFQVRIKCkgY2FuIG9ubHkgY2FwdHVyZSBzdGRlcnIsIHdo
aWxlIEdvb2dsZSBNb2NrJ3MKLSAgLy8gZXJyb3JzIGFyZSBwcmludGVkIG9uIHN0ZG91dC4gIFRo
ZXJlZm9yZSB3ZSBoYXZlIHRvIHNldHRsZSBmb3IKLSAgLy8gbm90IHZlcmlmeWluZyB0aGUgbWVz
c2FnZS4KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgbW9jay5JbnRGdW5jKHRy
dWUpOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRG9EZWZhdWx0KCkgcmV0dXJucyB0
aGUgZGVmYXVsdCB2YWx1ZSBzZXQgYnkKLS8vIERlZmF1bHRWYWx1ZTxUPjo6U2V0KCkgd2hlbiBp
dCdzIG5vdCBvdmVycmlkZW4gYnkgYW4gT05fQ0FMTCgpLgotVEVTVChEb0RlZmF1bHRUZXN0LCBS
ZXR1cm5zVXNlclNwZWNpZmllZFBlclR5cGVEZWZhdWx0VmFsdWVXaGVuVGhlcmVJc09uZSkgewot
ICBEZWZhdWx0VmFsdWU8aW50Pjo6U2V0KDEpOwotICBNb2NrQ2xhc3MgbW9jazsKLSAgRVhQRUNU
X0NBTEwobW9jaywgSW50RnVuYyhfKSkKLSAgICAgIC5XaWxsT25jZShEb0RlZmF1bHQoKSk7Ci0g
IEVYUEVDVF9FUSgxLCBtb2NrLkludEZ1bmMoZmFsc2UpKTsKLSAgRGVmYXVsdFZhbHVlPGludD46
OkNsZWFyKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRG9EZWZhdWx0KCkgZG9lcyB0aGUgYWN0aW9u
IHNwZWNpZmllZCBieSBPTl9DQUxMKCkuCi1URVNUKERvRGVmYXVsdFRlc3QsIERvZXNXaGF0T25D
YWxsU3BlY2lmaWVzKSB7Ci0gIE1vY2tDbGFzcyBtb2NrOwotICBPTl9DQUxMKG1vY2ssIEludEZ1
bmMoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOwotICBFWFBFQ1RfQ0FMTCht
b2NrLCBJbnRGdW5jKF8pKQotICAgICAgLldpbGxPbmNlKERvRGVmYXVsdCgpKTsKLSAgRVhQRUNU
X0VRKDIsIG1vY2suSW50RnVuYyhmYWxzZSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHVzaW5nIERv
RGVmYXVsdCgpIGluIE9OX0NBTEwoKSBsZWFkcyB0byBhIHJ1bi10aW1lIGZhaWx1cmUuCi1URVNU
KERvRGVmYXVsdFRlc3QsIENhbm5vdEJlVXNlZEluT25DYWxsKSB7Ci0gIE1vY2tDbGFzcyBtb2Nr
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBPTl9DQUxMKG1v
Y2ssIEludEZ1bmMoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChEb0RlZmF1bHQoKSk7Ci0gIH0s
ICJEb0RlZmF1bHQoKSBjYW5ub3QgYmUgdXNlZCBpbiBPTl9DQUxMKCkiKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KHYpIHNldHMgdGhlIHZhcmlhYmxlIHBvaW50ZWQgdG8g
YnkKLS8vIHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byB2LgotVEVTVChTZXRBcmdQb2lu
dGVlVGVzdCwgU2V0c1RoZU50aFBvaW50ZWUpIHsKLSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24o
Ym9vbCwgaW50KiwgY2hhciopOwotICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNldEFyZ1BvaW50
ZWU8MT4oMik7Ci0KLSAgaW50IG4gPSAwOwotICBjaGFyIGNoID0gJ1wwJzsKLSAgYS5QZXJmb3Jt
KG1ha2VfdHVwbGUodHJ1ZSwgJm4sICZjaCkpOwotICBFWFBFQ1RfRVEoMiwgbik7Ci0gIEVYUEVD
VF9FUSgnXDAnLCBjaCk7Ci0KLSAgYSA9IFNldEFyZ1BvaW50ZWU8Mj4oJ2EnKTsKLSAgbiA9IDA7
Ci0gIGNoID0gJ1wwJzsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJm4sICZjaCkpOwot
ICBFWFBFQ1RfRVEoMCwgbik7Ci0gIEVYUEVDVF9FUSgnYScsIGNoKTsKLX0KLQotI2lmICEoKEdU
RVNUX0dDQ19WRVJfICYmIEdURVNUX0dDQ19WRVJfIDwgNDAwMDApIHx8IEdURVNUX09TX1NZTUJJ
QU4pCi0vLyBUZXN0cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4oKSBhY2NlcHRzIGEgc3RyaW5nIGxp
dGVyYWwuCi0vLyBHQ0MgcHJpb3IgdG8gdjQuMCBhbmQgdGhlIFN5bWJpYW4gY29tcGlsZXIgZG8g
bm90IHN1cHBvcnQgdGhpcy4KLVRFU1QoU2V0QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNTdHJpbmdM
aXRlcmFsKSB7Ci0gIHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKHN0ZDo6c3RyaW5nKiwgY29uc3Qg
Y2hhcioqKTsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcmdQb2ludGVlPDA+KCJoaSIp
OwotICBzdGQ6OnN0cmluZyBzdHI7Ci0gIGNvbnN0IGNoYXIqIHB0ciA9IE5VTEw7Ci0gIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCZzdHIsICZwdHIpKTsKLSAgRVhQRUNUX0VRKCJoaSIsIHN0cik7Ci0g
IEVYUEVDVF9UUlVFKHB0ciA9PSBOVUxMKTsKLQotICBhID0gU2V0QXJnUG9pbnRlZTwxPigid29y
bGQiKTsKLSAgc3RyID0gIiI7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZzdHIsICZwdHIpKTsK
LSAgRVhQRUNUX0VRKCIiLCBzdHIpOwotICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgcHRyKTsKLX0K
LQotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgQWNjZXB0c1dpZGVTdHJpbmdMaXRlcmFsKSB7Ci0g
IHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKGNvbnN0IHdjaGFyX3QqKik7Ci0gIEFjdGlvbjxNeUZ1
bmN0aW9uPiBhID0gU2V0QXJnUG9pbnRlZTwwPihMIndvcmxkIik7Ci0gIGNvbnN0IHdjaGFyX3Qq
IHB0ciA9IE5VTEw7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZwdHIpKTsKLSAgRVhQRUNUX1NU
UkVRKEwid29ybGQiLCBwdHIpOwotCi0jIGlmIEdURVNUX0hBU19TVERfV1NUUklORwotCi0gIHR5
cGVkZWYgdm9pZCBNeVN0cmluZ0Z1bmN0aW9uKHN0ZDo6d3N0cmluZyopOwotICBBY3Rpb248TXlT
dHJpbmdGdW5jdGlvbj4gYTIgPSBTZXRBcmdQb2ludGVlPDA+KEwid29ybGQiKTsKLSAgc3RkOjp3
c3RyaW5nIHN0ciA9IEwiIjsKLSAgYTIuUGVyZm9ybShtYWtlX3R1cGxlKCZzdHIpKTsKLSAgRVhQ
RUNUX0VRKEwid29ybGQiLCBzdHIpOwotCi0jIGVuZGlmCi19Ci0jZW5kaWYKLQotLy8gVGVzdHMg
dGhhdCBTZXRBcmdQb2ludGVlPE4+KCkgYWNjZXB0cyBhIGNoYXIgcG9pbnRlci4KLVRFU1QoU2V0
QXJnUG9pbnRlZVRlc3QsIEFjY2VwdHNDaGFyUG9pbnRlcikgewotICB0eXBlZGVmIHZvaWQgTXlG
dW5jdGlvbihib29sLCBzdGQ6OnN0cmluZyosIGNvbnN0IGNoYXIqKik7Ci0gIGNvbnN0IGNoYXIq
IGNvbnN0IGhpID0gImhpIjsKLSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcmdQb2ludGVl
PDE+KGhpKTsKLSAgc3RkOjpzdHJpbmcgc3RyOwotICBjb25zdCBjaGFyKiBwdHIgPSBOVUxMOwot
ICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmc3RyLCAmcHRyKSk7Ci0gIEVYUEVDVF9FUSgi
aGkiLCBzdHIpOwotICBFWFBFQ1RfVFJVRShwdHIgPT0gTlVMTCk7Ci0KLSAgY2hhciB3b3JsZF9h
cnJheVtdID0gIndvcmxkIjsKLSAgY2hhciogY29uc3Qgd29ybGQgPSB3b3JsZF9hcnJheTsKLSAg
YSA9IFNldEFyZ1BvaW50ZWU8Mj4od29ybGQpOwotICBzdHIgPSAiIjsKLSAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUodHJ1ZSwgJnN0ciwgJnB0cikpOwotICBFWFBFQ1RfRVEoIiIsIHN0cik7Ci0gIEVY
UEVDVF9FUSh3b3JsZCwgcHRyKTsKLX0KLQotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgQWNjZXB0
c1dpZGVDaGFyUG9pbnRlcikgewotICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihib29sLCBjb25z
dCB3Y2hhcl90KiopOwotICBjb25zdCB3Y2hhcl90KiBjb25zdCBoaSA9IEwiaGkiOwotICBBY3Rp
b248TXlGdW5jdGlvbj4gYSA9IFNldEFyZ1BvaW50ZWU8MT4oaGkpOwotICBjb25zdCB3Y2hhcl90
KiBwdHIgPSBOVUxMOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmcHRyKSk7Ci0gIEVY
UEVDVF9FUShoaSwgcHRyKTsKLQotIyBpZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotICB0eXBl
ZGVmIHZvaWQgTXlTdHJpbmdGdW5jdGlvbihib29sLCBzdGQ6OndzdHJpbmcqKTsKLSAgd2NoYXJf
dCB3b3JsZF9hcnJheVtdID0gTCJ3b3JsZCI7Ci0gIHdjaGFyX3QqIGNvbnN0IHdvcmxkID0gd29y
bGRfYXJyYXk7Ci0gIEFjdGlvbjxNeVN0cmluZ0Z1bmN0aW9uPiBhMiA9IFNldEFyZ1BvaW50ZWU8
MT4od29ybGQpOwotICBzdGQ6OndzdHJpbmcgc3RyOwotICBhMi5QZXJmb3JtKG1ha2VfdHVwbGUo
dHJ1ZSwgJnN0cikpOwotICBFWFBFQ1RfRVEod29ybGRfYXJyYXksIHN0cik7Ci0jIGVuZGlmCi19
Ci0KLSNpZiBHVEVTVF9IQVNfUFJPVE9CVUZfCi0KLS8vIFRlc3RzIHRoYXQgU2V0QXJnUG9pbnRl
ZTxOPihwcm90b19idWZmZXIpIHNldHMgdGhlIHYxIHByb3RvYnVmCi0vLyB2YXJpYWJsZSBwb2lu
dGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudCB0byBwcm90b19idWZmZXIuCi1U
RVNUKFNldEFyZ1BvaW50ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG9CdWZmZXJUeXBl
KSB7Ci0gIFRlc3RNZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+
c2V0X21lbWJlcigieWVzIik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5D
b3B5RnJvbSgqbXNnKTsKLQotICBBY3Rpb248dm9pZChib29sLCBUZXN0TWVzc2FnZSopPiBhID0g
U2V0QXJnUG9pbnRlZTwxPigqbXNnKTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90b19idWZm
ZXIpIG1ha2VzIGEgY29weSBvZiBwcm90b19idWZmZXIKLSAgLy8gcy50LiB0aGUgYWN0aW9uIHdv
cmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwgcHJvdG9fYnVmZmVyIGhhcwotICAvLyBkaWVkLiAg
V2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnIGJlZm9yZSB1c2luZyB0aGUK
LSAgLy8gYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIFRlc3RNZXNzYWdlIGRlc3Q7Ci0gIEVY
UEVDVF9GQUxTRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotICBhLlBlcmZvcm0obWFrZV90dXBs
ZSh0cnVlLCAmZGVzdCkpOwotICBFWFBFQ1RfVFJVRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG9fYnVmZmVyKSBzZXRzIHRo
ZQotLy8gOjpQcm90b2NvbE1lc3NhZ2UgdmFyaWFibGUgcG9pbnRlZCB0byBieSB0aGUgTi10aCAo
MC1iYXNlZCkKLS8vIGFyZ3VtZW50IHRvIHByb3RvX2J1ZmZlci4KLVRFU1QoU2V0QXJnUG9pbnRl
ZVRlc3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQcm90b0J1ZmZlckJhc2VUeXBlKSB7Ci0gIFRlc3RN
ZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+c2V0X21lbWJlcigi
eWVzIik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5RnJvbSgqbXNn
KTsKLQotICBBY3Rpb248dm9pZChib29sLCA6OlByb3RvY29sTWVzc2FnZSopPiBhID0gU2V0QXJn
UG9pbnRlZTwxPigqbXNnKTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90b19idWZmZXIpIG1h
a2VzIGEgY29weSBvZiBwcm90b19idWZmZXIKLSAgLy8gcy50LiB0aGUgYWN0aW9uIHdvcmtzIGV2
ZW4gd2hlbiB0aGUgb3JpZ2luYWwgcHJvdG9fYnVmZmVyIGhhcwotICAvLyBkaWVkLiAgV2UgZW5z
dXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnIGJlZm9yZSB1c2luZyB0aGUKLSAgLy8g
YWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIFRlc3RNZXNzYWdlIGRlc3Q7Ci0gIDo6UHJvdG9j
b2xNZXNzYWdlKiBjb25zdCBkZXN0X2Jhc2UgPSAmZGVzdDsKLSAgRVhQRUNUX0ZBTFNFKG9yaWdf
bXNnLkVxdWFscyhkZXN0KSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIGRlc3RfYmFz
ZSkpOwotICBFWFBFQ1RfVFJVRShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IFNldEFyZ1BvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0aGUgdjIKLS8vIHBy
b3RvYnVmIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQpIGFyZ3VtZW50
IHRvCi0vLyBwcm90bzJfYnVmZmVyLgotVEVTVChTZXRBcmdQb2ludGVlVGVzdCwgU2V0c1RoZU50
aFBvaW50ZWVPZlByb3RvMkJ1ZmZlclR5cGUpIHsKLSAgdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6
OkZvb01lc3NhZ2U7Ci0gIEZvb01lc3NhZ2UqIGNvbnN0IG1zZyA9IG5ldyBGb29NZXNzYWdlOwot
ICBtc2ctPnNldF9pbnRfZmllbGQoMik7Ci0gIG1zZy0+c2V0X3N0cmluZ19maWVsZCgiaGkiKTsK
LSAgRm9vTWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7Ci0KLSAg
QWN0aW9uPHZvaWQoYm9vbCwgRm9vTWVzc2FnZSopPiBhID0gU2V0QXJnUG9pbnRlZTwxPigqbXNn
KTsKLSAgLy8gU2V0QXJnUG9pbnRlZTxOPihwcm90bzJfYnVmZmVyKSBtYWtlcyBhIGNvcHkgb2YK
LSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBhY3Rpb24gd29ya3MgZXZlbiB3aGVuIHRoZSBv
cmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhhcyBkaWVkLiAgV2UgZW5zdXJlIHRoaXMgYmVo
YXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJlZm9yZSB1c2luZyB0aGUgYWN0aW9uLgotICBk
ZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVzdDsKLSAgZGVzdC5zZXRfaW50X2ZpZWxkKDAp
OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmZGVzdCkpOwotICBFWFBFQ1RfRVEoMiwg
ZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9FUSgiaGkiLCBkZXN0LnN0cmluZ19maWVsZCgp
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTZXRBcmdQb2ludGVlPE4+KHByb3RvMl9idWZmZXIpIHNl
dHMgdGhlCi0vLyBwcm90bzI6Ok1lc3NhZ2UgdmFyaWFibGUgcG9pbnRlZCB0byBieSB0aGUgTi10
aCAoMC1iYXNlZCkgYXJndW1lbnQKLS8vIHRvIHByb3RvMl9idWZmZXIuCi1URVNUKFNldEFyZ1Bv
aW50ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG8yQnVmZmVyQmFzZVR5cGUpIHsKLSAg
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZvb01lc3NhZ2U7Ci0gIEZvb01lc3NhZ2UqIGNvbnN0
IG1zZyA9IG5ldyBGb29NZXNzYWdlOwotICBtc2ctPnNldF9pbnRfZmllbGQoMik7Ci0gIG1zZy0+
c2V0X3N0cmluZ19maWVsZCgiaGkiKTsKLSAgRm9vTWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19t
c2cuQ29weUZyb20oKm1zZyk7Ci0KLSAgQWN0aW9uPHZvaWQoYm9vbCwgOjpwcm90bzI6Ok1lc3Nh
Z2UqKT4gYSA9IFNldEFyZ1BvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ1BvaW50ZWU8Tj4o
cHJvdG8yX2J1ZmZlcikgbWFrZXMgYSBjb3B5IG9mCi0gIC8vIHByb3RvMl9idWZmZXIgcy50LiB0
aGUgYWN0aW9uIHdvcmtzIGV2ZW4gd2hlbiB0aGUgb3JpZ2luYWwKLSAgLy8gcHJvdG8yX2J1ZmZl
ciBoYXMgZGllZC4gIFdlIGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZwotICAv
LyBiZWZvcmUgdXNpbmcgdGhlIGFjdGlvbi4KLSAgZGVsZXRlIG1zZzsKLQotICBGb29NZXNzYWdl
IGRlc3Q7Ci0gIGRlc3Quc2V0X2ludF9maWVsZCgwKTsKLSAgOjpwcm90bzI6Ok1lc3NhZ2UqIGNv
bnN0IGRlc3RfYmFzZSA9ICZkZXN0OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBkZXN0
X2Jhc2UpKTsKLSAgRVhQRUNUX0VRKDIsIGRlc3QuaW50X2ZpZWxkKCkpOwotICBFWFBFQ1RfRVEo
ImhpIiwgZGVzdC5zdHJpbmdfZmllbGQoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BS
T1RPQlVGXwotCi0vLyBUZXN0cyB0aGF0IFNldEFyZ3VtZW50UG9pbnRlZTxOPih2KSBzZXRzIHRo
ZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5Ci0vLyB0aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQg
dG8gdi4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwgU2V0c1RoZU50aFBvaW50ZWUpIHsK
LSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgaW50KiwgY2hhciopOwotICBBY3Rpb248
TXlGdW5jdGlvbj4gYSA9IFNldEFyZ3VtZW50UG9pbnRlZTwxPigyKTsKLQotICBpbnQgbiA9IDA7
Ci0gIGNoYXIgY2ggPSAnXDAnOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmbiwgJmNo
KSk7Ci0gIEVYUEVDVF9FUSgyLCBuKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGNoKTsKLQotICBhID0g
U2V0QXJndW1lbnRQb2ludGVlPDI+KCdhJyk7Ci0gIG4gPSAwOwotICBjaCA9ICdcMCc7Ci0gIGEu
UGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZuLCAmY2gpKTsKLSAgRVhQRUNUX0VRKDAsIG4pOwot
ICBFWFBFQ1RfRVEoJ2EnLCBjaCk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfUFJPVE9CVUZfCi0KLS8v
IFRlc3RzIHRoYXQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgc2V0cyB0aGUg
djEgcHJvdG9idWYKLS8vIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQp
IGFyZ3VtZW50IHRvIHByb3RvX2J1ZmZlci4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwg
U2V0c1RoZU50aFBvaW50ZWVPZlByb3RvQnVmZmVyVHlwZSkgewotICBUZXN0TWVzc2FnZSogY29u
c3QgbXNnID0gbmV3IFRlc3RNZXNzYWdlOwotICBtc2ctPnNldF9tZW1iZXIoInllcyIpOwotICBU
ZXN0TWVzc2FnZSBvcmlnX21zZzsKLSAgb3JpZ19tc2cuQ29weUZyb20oKm1zZyk7Ci0KLSAgQWN0
aW9uPHZvaWQoYm9vbCwgVGVzdE1lc3NhZ2UqKT4gYSA9IFNldEFyZ3VtZW50UG9pbnRlZTwxPigq
bXNnKTsKLSAgLy8gU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgbWFrZXMgYSBj
b3B5IG9mIHByb3RvX2J1ZmZlcgotICAvLyBzLnQuIHRoZSBhY3Rpb24gd29ya3MgZXZlbiB3aGVu
IHRoZSBvcmlnaW5hbCBwcm90b19idWZmZXIgaGFzCi0gIC8vIGRpZWQuICBXZSBlbnN1cmUgdGhp
cyBiZWhhdmlvciBieSBkZWxldGluZyBtc2cgYmVmb3JlIHVzaW5nIHRoZQotICAvLyBhY3Rpb24u
Ci0gIGRlbGV0ZSBtc2c7Ci0KLSAgVGVzdE1lc3NhZ2UgZGVzdDsKLSAgRVhQRUNUX0ZBTFNFKG9y
aWdfbXNnLkVxdWFscyhkZXN0KSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICZkZXN0
KSk7Ci0gIEVYUEVDVF9UUlVFKG9yaWdfbXNnLkVxdWFscyhkZXN0KSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgU2V0QXJndW1lbnRQb2ludGVlPE4+KHByb3RvX2J1ZmZlcikgc2V0cyB0aGUKLS8vIDo6
UHJvdG9jb2xNZXNzYWdlIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFzZWQp
Ci0vLyBhcmd1bWVudCB0byBwcm90b19idWZmZXIuCi1URVNUKFNldEFyZ3VtZW50UG9pbnRlZVRl
c3QsIFNldHNUaGVOdGhQb2ludGVlT2ZQcm90b0J1ZmZlckJhc2VUeXBlKSB7Ci0gIFRlc3RNZXNz
YWdlKiBjb25zdCBtc2cgPSBuZXcgVGVzdE1lc3NhZ2U7Ci0gIG1zZy0+c2V0X21lbWJlcigieWVz
Iik7Ci0gIFRlc3RNZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5RnJvbSgqbXNnKTsK
LQotICBBY3Rpb248dm9pZChib29sLCA6OlByb3RvY29sTWVzc2FnZSopPiBhID0gU2V0QXJndW1l
bnRQb2ludGVlPDE+KCptc2cpOwotICAvLyBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG9fYnVm
ZmVyKSBtYWtlcyBhIGNvcHkgb2YgcHJvdG9fYnVmZmVyCi0gIC8vIHMudC4gdGhlIGFjdGlvbiB3
b3JrcyBldmVuIHdoZW4gdGhlIG9yaWdpbmFsIHByb3RvX2J1ZmZlciBoYXMKLSAgLy8gZGllZC4g
IFdlIGVuc3VyZSB0aGlzIGJlaGF2aW9yIGJ5IGRlbGV0aW5nIG1zZyBiZWZvcmUgdXNpbmcgdGhl
Ci0gIC8vIGFjdGlvbi4KLSAgZGVsZXRlIG1zZzsKLQotICBUZXN0TWVzc2FnZSBkZXN0OwotICA6
OlByb3RvY29sTWVzc2FnZSogY29uc3QgZGVzdF9iYXNlID0gJmRlc3Q7Ci0gIEVYUEVDVF9GQUxT
RShvcmlnX21zZy5FcXVhbHMoZGVzdCkpOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBk
ZXN0X2Jhc2UpKTsKLSAgRVhQRUNUX1RSVUUob3JpZ19tc2cuRXF1YWxzKGRlc3QpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTZXRBcmd1bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0
aGUgdjIKLS8vIHByb3RvYnVmIHZhcmlhYmxlIHBvaW50ZWQgdG8gYnkgdGhlIE4tdGggKDAtYmFz
ZWQpIGFyZ3VtZW50IHRvCi0vLyBwcm90bzJfYnVmZmVyLgotVEVTVChTZXRBcmd1bWVudFBvaW50
ZWVUZXN0LCBTZXRzVGhlTnRoUG9pbnRlZU9mUHJvdG8yQnVmZmVyVHlwZSkgewotICB1c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6Rm9vTWVzc2FnZTsKLSAgRm9vTWVzc2FnZSogY29uc3QgbXNnID0g
bmV3IEZvb01lc3NhZ2U7Ci0gIG1zZy0+c2V0X2ludF9maWVsZCgyKTsKLSAgbXNnLT5zZXRfc3Ry
aW5nX2ZpZWxkKCJoaSIpOwotICBGb29NZXNzYWdlIG9yaWdfbXNnOwotICBvcmlnX21zZy5Db3B5
RnJvbSgqbXNnKTsKLQotICBBY3Rpb248dm9pZChib29sLCBGb29NZXNzYWdlKik+IGEgPSBTZXRB
cmd1bWVudFBvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90
bzJfYnVmZmVyKSBtYWtlcyBhIGNvcHkgb2YKLSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBh
Y3Rpb24gd29ya3MgZXZlbiB3aGVuIHRoZSBvcmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhh
cyBkaWVkLiAgV2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJl
Zm9yZSB1c2luZyB0aGUgYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVz
dDsKLSAgZGVzdC5zZXRfaW50X2ZpZWxkKDApOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVl
LCAmZGVzdCkpOwotICBFWFBFQ1RfRVEoMiwgZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9F
USgiaGkiLCBkZXN0LnN0cmluZ19maWVsZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTZXRBcmd1
bWVudFBvaW50ZWU8Tj4ocHJvdG8yX2J1ZmZlcikgc2V0cyB0aGUKLS8vIHByb3RvMjo6TWVzc2Fn
ZSB2YXJpYWJsZSBwb2ludGVkIHRvIGJ5IHRoZSBOLXRoICgwLWJhc2VkKSBhcmd1bWVudAotLy8g
dG8gcHJvdG8yX2J1ZmZlci4KLVRFU1QoU2V0QXJndW1lbnRQb2ludGVlVGVzdCwgU2V0c1RoZU50
aFBvaW50ZWVPZlByb3RvMkJ1ZmZlckJhc2VUeXBlKSB7Ci0gIHVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpGb29NZXNzYWdlOwotICBGb29NZXNzYWdlKiBjb25zdCBtc2cgPSBuZXcgRm9vTWVzc2Fn
ZTsKLSAgbXNnLT5zZXRfaW50X2ZpZWxkKDIpOwotICBtc2ctPnNldF9zdHJpbmdfZmllbGQoImhp
Iik7Ci0gIEZvb01lc3NhZ2Ugb3JpZ19tc2c7Ci0gIG9yaWdfbXNnLkNvcHlGcm9tKCptc2cpOwot
Ci0gIEFjdGlvbjx2b2lkKGJvb2wsIDo6cHJvdG8yOjpNZXNzYWdlKik+IGEgPSBTZXRBcmd1bWVu
dFBvaW50ZWU8MT4oKm1zZyk7Ci0gIC8vIFNldEFyZ3VtZW50UG9pbnRlZTxOPihwcm90bzJfYnVm
ZmVyKSBtYWtlcyBhIGNvcHkgb2YKLSAgLy8gcHJvdG8yX2J1ZmZlciBzLnQuIHRoZSBhY3Rpb24g
d29ya3MgZXZlbiB3aGVuIHRoZSBvcmlnaW5hbAotICAvLyBwcm90bzJfYnVmZmVyIGhhcyBkaWVk
LiAgV2UgZW5zdXJlIHRoaXMgYmVoYXZpb3IgYnkgZGVsZXRpbmcgbXNnCi0gIC8vIGJlZm9yZSB1
c2luZyB0aGUgYWN0aW9uLgotICBkZWxldGUgbXNnOwotCi0gIEZvb01lc3NhZ2UgZGVzdDsKLSAg
ZGVzdC5zZXRfaW50X2ZpZWxkKDApOwotICA6OnByb3RvMjo6TWVzc2FnZSogY29uc3QgZGVzdF9i
YXNlID0gJmRlc3Q7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIGRlc3RfYmFzZSkpOwot
ICBFWFBFQ1RfRVEoMiwgZGVzdC5pbnRfZmllbGQoKSk7Ci0gIEVYUEVDVF9FUSgiaGkiLCBkZXN0
LnN0cmluZ19maWVsZCgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFJPVE9CVUZfCi0K
LS8vIFNhbXBsZSBmdW5jdGlvbnMgYW5kIGZ1bmN0b3JzIGZvciB0ZXN0aW5nIEludm9rZSgpIGFu
ZCBldGMuCi1pbnQgTnVsbGFyeSgpIHsgcmV0dXJuIDE7IH0KLQotY2xhc3MgTnVsbGFyeUZ1bmN0
b3IgewotIHB1YmxpYzoKLSAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiAyOyB9Ci19OwotCi1i
b29sIGdfZG9uZSA9IGZhbHNlOwotdm9pZCBWb2lkTnVsbGFyeSgpIHsgZ19kb25lID0gdHJ1ZTsg
fQotCi1jbGFzcyBWb2lkTnVsbGFyeUZ1bmN0b3IgewotIHB1YmxpYzoKLSAgdm9pZCBvcGVyYXRv
cigpKCkgeyBnX2RvbmUgPSB0cnVlOyB9Ci19OwotCi1jbGFzcyBGb28gewotIHB1YmxpYzoKLSAg
Rm9vKCkgOiB2YWx1ZV8oMTIzKSB7fQotCi0gIGludCBOdWxsYXJ5KCkgY29uc3QgeyByZXR1cm4g
dmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotLy8gVGVzdHMgSW52
b2tlV2l0aG91dEFyZ3MoZnVuY3Rpb24pLgotVEVTVChJbnZva2VXaXRob3V0QXJnc1Rlc3QsIEZ1
bmN0aW9uKSB7Ci0gIC8vIEFzIGFuIGFjdGlvbiB0aGF0IHRha2VzIG9uZSBhcmd1bWVudC4KLSAg
QWN0aW9uPGludChpbnQpPiBhID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeSk7ICAvLyBOT0xJ
TlQKLSAgRVhQRUNUX0VRKDEsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKSk7Ci0KLSAgLy8gQXMg
YW4gYWN0aW9uIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cy4KLSAgQWN0aW9uPGludChpbnQsIGRv
dWJsZSk+IGEyID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeSk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0VRKDEsIGEyLlBlcmZvcm0obWFrZV90dXBsZSgyLCAzLjUpKSk7Ci0KLSAgLy8gQXMgYW4g
YWN0aW9uIHRoYXQgcmV0dXJucyB2b2lkLgotICBBY3Rpb248dm9pZChpbnQpPiBhMyA9IEludm9r
ZVdpdGhvdXRBcmdzKFZvaWROdWxsYXJ5KTsgIC8vIE5PTElOVAotICBnX2RvbmUgPSBmYWxzZTsK
LSAgYTMuUGVyZm9ybShtYWtlX3R1cGxlKDEpKTsKLSAgRVhQRUNUX1RSVUUoZ19kb25lKTsKLX0K
LQotLy8gVGVzdHMgSW52b2tlV2l0aG91dEFyZ3MoZnVuY3RvcikuCi1URVNUKEludm9rZVdpdGhv
dXRBcmdzVGVzdCwgRnVuY3RvcikgewotICAvLyBBcyBhbiBhY3Rpb24gdGhhdCB0YWtlcyBubyBh
cmd1bWVudC4KLSAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlV2l0aG91dEFyZ3MoTnVsbGFyeUZ1
bmN0b3IoKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDIsIGEuUGVyZm9ybShtYWtlX3R1cGxl
KCkpKTsKLQotICAvLyBBcyBhbiBhY3Rpb24gdGhhdCB0YWtlcyB0aHJlZSBhcmd1bWVudHMuCi0g
IEFjdGlvbjxpbnQoaW50LCBkb3VibGUsIGNoYXIpPiBhMiA9ICAvLyBOT0xJTlQKLSAgICAgIElu
dm9rZVdpdGhvdXRBcmdzKE51bGxhcnlGdW5jdG9yKCkpOwotICBFWFBFQ1RfRVEoMiwgYTIuUGVy
Zm9ybShtYWtlX3R1cGxlKDMsIDMuNSwgJ2EnKSkpOwotCi0gIC8vIEFzIGFuIGFjdGlvbiB0aGF0
IHJldHVybnMgdm9pZC4KLSAgQWN0aW9uPHZvaWQoKT4gYTMgPSBJbnZva2VXaXRob3V0QXJncyhW
b2lkTnVsbGFyeUZ1bmN0b3IoKSk7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBhMy5QZXJmb3JtKG1h
a2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9UUlVFKGdfZG9uZSk7Ci19Ci0KLS8vIFRlc3RzIEludm9r
ZVdpdGhvdXRBcmdzKG9ial9wdHIsIG1ldGhvZCkuCi1URVNUKEludm9rZVdpdGhvdXRBcmdzVGVz
dCwgTWV0aG9kKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoYm9vbCwgY2hhcik+IGEgPSAg
Ly8gTk9MSU5UCi0gICAgICBJbnZva2VXaXRob3V0QXJncygmZm9vLCAmRm9vOjpOdWxsYXJ5KTsK
LSAgRVhQRUNUX0VRKDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUodHJ1ZSwgJ2EnKSkpOwotfQot
Ci0vLyBUZXN0cyB1c2luZyBJZ25vcmVSZXN1bHQoKSBvbiBhIHBvbHltb3JwaGljIGFjdGlvbi4K
LVRFU1QoSWdub3JlUmVzdWx0VGVzdCwgUG9seW1vcnBoaWNBY3Rpb24pIHsKLSAgQWN0aW9uPHZv
aWQoaW50KT4gYSA9IElnbm9yZVJlc3VsdChSZXR1cm4oNSkpOyAgLy8gTk9MSU5UCi0gIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKDEpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSWdub3JlUmVzdWx0KCkg
b24gYSBtb25vbW9ycGhpYyBhY3Rpb24uCi0KLWludCBSZXR1cm5PbmUoKSB7Ci0gIGdfZG9uZSA9
IHRydWU7Ci0gIHJldHVybiAxOwotfQotCi1URVNUKElnbm9yZVJlc3VsdFRlc3QsIE1vbm9tb3Jw
aGljQWN0aW9uKSB7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBBY3Rpb248dm9pZCgpPiBhID0gSWdu
b3JlUmVzdWx0KEludm9rZShSZXR1cm5PbmUpKTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7
Ci0gIEVYUEVDVF9UUlVFKGdfZG9uZSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIElnbm9yZVJlc3Vs
dCgpIG9uIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgYSBjbGFzcyB0eXBlLgotCi1NeU5vbkRlZmF1
bHRDb25zdHJ1Y3RpYmxlIFJldHVybk15Tm9uRGVmYXVsdENvbnN0cnVjdGlibGUoZG91YmxlIC8q
IHggKi8pIHsKLSAgZ19kb25lID0gdHJ1ZTsKLSAgcmV0dXJuIE15Tm9uRGVmYXVsdENvbnN0cnVj
dGlibGUoNDIpOwotfQotCi1URVNUKElnbm9yZVJlc3VsdFRlc3QsIEFjdGlvblJldHVybmluZ0Ns
YXNzKSB7Ci0gIGdfZG9uZSA9IGZhbHNlOwotICBBY3Rpb248dm9pZChpbnQpPiBhID0KLSAgICAg
IElnbm9yZVJlc3VsdChJbnZva2UoUmV0dXJuTXlOb25EZWZhdWx0Q29uc3RydWN0aWJsZSkpOyAg
Ly8gTk9MSU5UCi0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKTsKLSAgRVhQRUNUX1RSVUUoZ19k
b25lKTsKLX0KLQotVEVTVChBc3NpZ25UZXN0LCBJbnQpIHsKLSAgaW50IHggPSAwOwotICBBY3Rp
b248dm9pZChpbnQpPiBhID0gQXNzaWduKCZ4LCA1KTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
MCkpOwotICBFWFBFQ1RfRVEoNSwgeCk7Ci19Ci0KLVRFU1QoQXNzaWduVGVzdCwgU3RyaW5nKSB7
Ci0gIDo6c3RkOjpzdHJpbmcgeDsKLSAgQWN0aW9uPHZvaWQodm9pZCk+IGEgPSBBc3NpZ24oJngs
ICJIZWxsbywgd29ybGQiKTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSk7Ci0gIEVYUEVDVF9F
USgiSGVsbG8sIHdvcmxkIiwgeCk7Ci19Ci0KLVRFU1QoQXNzaWduVGVzdCwgQ29tcGF0aWJsZVR5
cGVzKSB7Ci0gIGRvdWJsZSB4ID0gMDsKLSAgQWN0aW9uPHZvaWQoaW50KT4gYSA9IEFzc2lnbigm
eCwgNSk7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKDApKTsKLSAgRVhQRUNUX0RPVUJMRV9FUSg1
LCB4KTsKLX0KLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi1jbGFzcyBTZXRFcnJu
b0FuZFJldHVyblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IGVycm5vID0gMDsgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7IGVycm5vID0gMDsgfQotfTsKLQotVEVTVF9GKFNldEVycm5vQW5kUmV0dXJuVGVzdCwg
SW50KSB7Ci0gIEFjdGlvbjxpbnQodm9pZCk+IGEgPSBTZXRFcnJub0FuZFJldHVybihFTk9UVFks
IC01KTsKLSAgRVhQRUNUX0VRKC01LCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci0gIEVYUEVD
VF9FUShFTk9UVFksIGVycm5vKTsKLX0KLQotVEVTVF9GKFNldEVycm5vQW5kUmV0dXJuVGVzdCwg
UHRyKSB7Ci0gIGludCB4OwotICBBY3Rpb248aW50Kih2b2lkKT4gYSA9IFNldEVycm5vQW5kUmV0
dXJuKEVOT1RUWSwgJngpOwotICBFWFBFQ1RfRVEoJngsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCkp
KTsKLSAgRVhQRUNUX0VRKEVOT1RUWSwgZXJybm8pOwotfQotCi1URVNUX0YoU2V0RXJybm9BbmRS
ZXR1cm5UZXN0LCBDb21wYXRpYmxlVHlwZXMpIHsKLSAgQWN0aW9uPGRvdWJsZSgpPiBhID0gU2V0
RXJybm9BbmRSZXR1cm4oRUlOVkFMLCA1KTsKLSAgRVhQRUNUX0RPVUJMRV9FUSg1LjAsIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKEVJTlZBTCwgZXJybm8pOwotfQotCi0j
ZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0vLyBUZXN0cyBCeVJlZigpLgot
Ci0vLyBUZXN0cyB0aGF0IFJlZmVyZW5jZVdyYXBwZXI8VD4gaXMgY29weWFibGUuCi1URVNUKEJ5
UmVmVGVzdCwgSXNDb3B5YWJsZSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBzMSA9ICJIaSI7Ci0g
IGNvbnN0IHN0ZDo6c3RyaW5nIHMyID0gIkhlbGxvIjsKLQotICA6OnRlc3Rpbmc6OmludGVybmFs
OjpSZWZlcmVuY2VXcmFwcGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiByZWZfd3JhcHBlciA9Ci0gICAg
ICBCeVJlZihzMSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiByMSA9IHJlZl93cmFwcGVyOwotICBF
WFBFQ1RfRVEoJnMxLCAmcjEpOwotCi0gIC8vIEFzc2lnbnMgYSBuZXcgdmFsdWUgdG8gcmVmX3dy
YXBwZXIuCi0gIHJlZl93cmFwcGVyID0gQnlSZWYoczIpOwotICBjb25zdCBzdGQ6OnN0cmluZyYg
cjIgPSByZWZfd3JhcHBlcjsKLSAgRVhQRUNUX0VRKCZzMiwgJnIyKTsKLQotICA6OnRlc3Rpbmc6
OmludGVybmFsOjpSZWZlcmVuY2VXcmFwcGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiByZWZfd3JhcHBl
cjEgPQotICAgICAgQnlSZWYoczEpOwotICAvLyBDb3BpZXMgcmVmX3dyYXBwZXIxIHRvIHJlZl93
cmFwcGVyLgotICByZWZfd3JhcHBlciA9IHJlZl93cmFwcGVyMTsKLSAgY29uc3Qgc3RkOjpzdHJp
bmcmIHIzID0gcmVmX3dyYXBwZXI7Ci0gIEVYUEVDVF9FUSgmczEsICZyMyk7Ci19Ci0KLS8vIFRl
c3RzIHVzaW5nIEJ5UmVmKCkgb24gYSBjb25zdCB2YWx1ZS4KLVRFU1QoQnlSZWZUZXN0LCBDb25z
dFZhbHVlKSB7Ci0gIGNvbnN0IGludCBuID0gMDsKLSAgLy8gaW50JiByZWYgPSBCeVJlZihuKTsg
IC8vIFRoaXMgc2hvdWxkbid0IGNvbXBpbGUgLSB3ZSBoYXZlIGEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIG5lZ2F0aXZlIGNvbXBpbGF0aW9uIHRlc3QgdG8gY2F0Y2ggaXQuCi0gIGNv
bnN0IGludCYgY29uc3RfcmVmID0gQnlSZWYobik7Ci0gIEVYUEVDVF9FUSgmbiwgJmNvbnN0X3Jl
Zik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEJ5UmVmKCkgb24gYSBub24tY29uc3QgdmFsdWUuCi1U
RVNUKEJ5UmVmVGVzdCwgTm9uQ29uc3RWYWx1ZSkgewotICBpbnQgbiA9IDA7Ci0KLSAgLy8gQnlS
ZWYobikgY2FuIGJlIHVzZWQgYXMgZWl0aGVyIGFuIGludCYsCi0gIGludCYgcmVmID0gQnlSZWYo
bik7Ci0gIEVYUEVDVF9FUSgmbiwgJnJlZik7Ci0KLSAgLy8gb3IgYSBjb25zdCBpbnQmLgotICBj
b25zdCBpbnQmIGNvbnN0X3JlZiA9IEJ5UmVmKG4pOwotICBFWFBFQ1RfRVEoJm4sICZjb25zdF9y
ZWYpOwotfQotCi0vLyBUZXN0cyBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIHR5cGUgd2hlbiB1
c2luZyBCeVJlZigpLgotVEVTVChCeVJlZlRlc3QsIEV4cGxpY2l0VHlwZSkgewotICBpbnQgbiA9
IDA7Ci0gIGNvbnN0IGludCYgcjEgPSBCeVJlZjxjb25zdCBpbnQ+KG4pOwotICBFWFBFQ1RfRVEo
Jm4sICZyMSk7Ci0KLSAgLy8gQnlSZWY8Y2hhcj4obik7ICAvLyBUaGlzIHNob3VsZG4ndCBjb21w
aWxlIC0gd2UgaGF2ZSBhIG5lZ2F0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGls
YXRpb24gdGVzdCB0byBjYXRjaCBpdC4KLQotICBEZXJpdmVkIGQ7Ci0gIERlcml2ZWQmIHIyID0g
QnlSZWY8RGVyaXZlZD4oZCk7Ci0gIEVYUEVDVF9FUSgmZCwgJnIyKTsKLQotICBjb25zdCBEZXJp
dmVkJiByMyA9IEJ5UmVmPGNvbnN0IERlcml2ZWQ+KGQpOwotICBFWFBFQ1RfRVEoJmQsICZyMyk7
Ci0KLSAgQmFzZSYgcjQgPSBCeVJlZjxCYXNlPihkKTsKLSAgRVhQRUNUX0VRKCZkLCAmcjQpOwot
Ci0gIGNvbnN0IEJhc2UmIHI1ID0gQnlSZWY8Y29uc3QgQmFzZT4oZCk7Ci0gIEVYUEVDVF9FUSgm
ZCwgJnI1KTsKLQotICAvLyBUaGUgZm9sbG93aW5nIHNob3VsZG4ndCBjb21waWxlIC0gd2UgaGF2
ZSBhIG5lZ2F0aXZlIGNvbXBpbGF0aW9uCi0gIC8vIHRlc3QgZm9yIGl0LgotICAvLwotICAvLyBC
YXNlIGI7Ci0gIC8vIEJ5UmVmPERlcml2ZWQ+KGIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2ds
ZSBNb2NrIHByaW50cyBleHByZXNzaW9uIEJ5UmVmKHgpIGFzIGEgcmVmZXJlbmNlIHRvIHguCi1U
RVNUKEJ5UmVmVGVzdCwgUHJpbnRzQ29ycmVjdGx5KSB7Ci0gIGludCBuID0gNDI7Ci0gIDo6c3Rk
OjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWQsIGFjdHVhbDsKLSAgdGVzdGluZzo6aW50ZXJuYWw6OlVu
aXZlcnNhbFByaW50ZXI8Y29uc3QgaW50Jj46OlByaW50KG4sICZleHBlY3RlZCk7Ci0gIHRlc3Rp
bmc6OmludGVybmFsOjpVbml2ZXJzYWxQcmludChCeVJlZihuKSwgJmFjdHVhbCk7Ci0gIEVYUEVD
VF9FUShleHBlY3RlZC5zdHIoKSwgYWN0dWFsLnN0cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19T
VERfVU5JUVVFX1BUUl8KLQotc3RkOjp1bmlxdWVfcHRyPGludD4gVW5pcXVlUHRyU291cmNlKCkg
ewotICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCgxOSkpOwotfQotCi1zdGQ6
OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gVmVjdG9yVW5pcXVlUHRyU291cmNlKCkgewot
ICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gb3V0OwotICBvdXQuZW1wbGFjZV9i
YWNrKG5ldyBpbnQoNykpOwotICByZXR1cm4gb3V0OwotfQotCi1URVNUKE1vY2tNZXRob2RUZXN0
LCBDYW5SZXR1cm5Nb3ZlT25seVZhbHVlX1JldHVybikgewotICBNb2NrQ2xhc3MgbW9jazsKLSAg
c3RkOjp1bmlxdWVfcHRyPGludD4gaShuZXcgaW50KDE5KSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ss
IE1ha2VVbmlxdWUoKSkuV2lsbE9uY2UoUmV0dXJuKEJ5TW92ZShzdGQ6Om1vdmUoaSkpKSk7Ci0g
IEVYUEVDVF9DQUxMKG1vY2ssIE1ha2VWZWN0b3JVbmlxdWUoKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oQnlNb3ZlKFZlY3RvclVuaXF1ZVB0clNvdXJjZSgpKSkpOwotICBEZXJpdmVkKiBkID0g
bmV3IERlcml2ZWQ7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIE1ha2VVbmlxdWVCYXNlKCkpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKEJ5TW92ZShzdGQ6OnVuaXF1ZV9wdHI8RGVyaXZlZD4oZCkpKSk7
Ci0KLSAgc3RkOjp1bmlxdWVfcHRyPGludD4gcmVzdWx0MSA9IG1vY2suTWFrZVVuaXF1ZSgpOwot
ICBFWFBFQ1RfRVEoMTksICpyZXN1bHQxKTsKLQotICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gdnJlc3VsdCA9IG1vY2suTWFrZVZlY3RvclVuaXF1ZSgpOwotICBFWFBFQ1RfRVEo
MXUsIHZyZXN1bHQuc2l6ZSgpKTsKLSAgRVhQRUNUX05FKG51bGxwdHIsIHZyZXN1bHRbMF0pOwot
ICBFWFBFQ1RfRVEoNywgKnZyZXN1bHRbMF0pOwotCi0gIHN0ZDo6dW5pcXVlX3B0cjxCYXNlPiBy
ZXN1bHQyID0gbW9jay5NYWtlVW5pcXVlQmFzZSgpOwotICBFWFBFQ1RfRVEoZCwgcmVzdWx0Mi5n
ZXQoKSk7Ci19Ci0KLVRFU1QoTW9ja01ldGhvZFRlc3QsIENhblJldHVybk1vdmVPbmx5VmFsdWVf
RG9BbGxSZXR1cm4pIHsKLSAgdGVzdGluZzo6TW9ja0Z1bmN0aW9uPHZvaWQoKT4gbW9ja19mdW5j
dGlvbjsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+IGkobmV3IGlu
dCgxOSkpOwotICBFWFBFQ1RfQ0FMTChtb2NrX2Z1bmN0aW9uLCBDYWxsKCkpOwotICBFWFBFQ1Rf
Q0FMTChtb2NrLCBNYWtlVW5pcXVlKCkpLldpbGxPbmNlKERvQWxsKAotICAgICAgSW52b2tlV2l0
aG91dEFyZ3MoJm1vY2tfZnVuY3Rpb24sICZ0ZXN0aW5nOjpNb2NrRnVuY3Rpb248dm9pZCgpPjo6
Q2FsbCksCi0gICAgICBSZXR1cm4oQnlNb3ZlKHN0ZDo6bW92ZShpKSkpKSk7Ci0KLSAgc3RkOjp1
bmlxdWVfcHRyPGludD4gcmVzdWx0MSA9IG1vY2suTWFrZVVuaXF1ZSgpOwotICBFWFBFQ1RfRVEo
MTksICpyZXN1bHQxKTsKLX0KLQotVEVTVChNb2NrTWV0aG9kVGVzdCwgQ2FuUmV0dXJuTW92ZU9u
bHlWYWx1ZV9JbnZva2UpIHsKLSAgTW9ja0NsYXNzIG1vY2s7Ci0KLSAgLy8gQ2hlY2sgZGVmYXVs
dCB2YWx1ZQotICBEZWZhdWx0VmFsdWU8c3RkOjp1bmlxdWVfcHRyPGludD4+OjpTZXRGYWN0b3J5
KFtdIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPGludD4obmV3IGludCg0MikpOwotICB9
KTsKLSAgRVhQRUNUX0VRKDQyLCAqbW9jay5NYWtlVW5pcXVlKCkpOwotCi0gIEVYUEVDVF9DQUxM
KG1vY2ssIE1ha2VVbmlxdWUoKSkuV2lsbFJlcGVhdGVkbHkoSW52b2tlKFVuaXF1ZVB0clNvdXJj
ZSkpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBNYWtlVmVjdG9yVW5pcXVlKCkpCi0gICAgICAuV2ls
bFJlcGVhdGVkbHkoSW52b2tlKFZlY3RvclVuaXF1ZVB0clNvdXJjZSkpOwotICBzdGQ6OnVuaXF1
ZV9wdHI8aW50PiByZXN1bHQxID0gbW9jay5NYWtlVW5pcXVlKCk7Ci0gIEVYUEVDVF9FUSgxOSwg
KnJlc3VsdDEpOwotICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiByZXN1bHQyID0gbW9jay5NYWtlVW5p
cXVlKCk7Ci0gIEVYUEVDVF9FUSgxOSwgKnJlc3VsdDIpOwotICBFWFBFQ1RfTkUocmVzdWx0MSwg
cmVzdWx0Mik7Ci0KLSAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGludD4+IHZyZXN1bHQg
PSBtb2NrLk1ha2VWZWN0b3JVbmlxdWUoKTsKLSAgRVhQRUNUX0VRKDF1LCB2cmVzdWx0LnNpemUo
KSk7Ci0gIEVYUEVDVF9ORShudWxscHRyLCB2cmVzdWx0WzBdKTsKLSAgRVhQRUNUX0VRKDcsICp2
cmVzdWx0WzBdKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0K
LX0gIC8vIFVubmFtZWQgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLWNhcmRpbmFsaXRpZXNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stY2FyZGlu
YWxpdGllc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDgxNWU1N2Ez
OTAuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWNhcmRpbmFsaXRp
ZXNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDQyOCArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xl
LmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3
cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBidWls
dC1pbiBjYXJkaW5hbGl0aWVzLgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotCi1uYW1lc3Bh
Y2UgewotCi11c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKLXVzaW5nIHRlc3Rpbmc6OkFueU51bWJl
cjsKLXVzaW5nIHRlc3Rpbmc6OkF0TGVhc3Q7Ci11c2luZyB0ZXN0aW5nOjpBdE1vc3Q7Ci11c2lu
ZyB0ZXN0aW5nOjpCZXR3ZWVuOwotdXNpbmcgdGVzdGluZzo6Q2FyZGluYWxpdHk7Ci11c2luZyB0
ZXN0aW5nOjpDYXJkaW5hbGl0eUludGVyZmFjZTsKLXVzaW5nIHRlc3Rpbmc6OkV4YWN0bHk7Ci11
c2luZyB0ZXN0aW5nOjpJc1N1YnN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6Ok1ha2VDYXJkaW5hbGl0
eTsKLQotY2xhc3MgTW9ja0ZvbyB7Ci0gcHVibGljOgotICBNb2NrRm9vKCkge30KLSAgTU9DS19N
RVRIT0QwKEJhciwgaW50KCkpOyAgLy8gTk9MSU5UCi0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tGb28pOwotfTsKLQotLy8gVGVzdHMgdGhhdCBDYXJk
aW5hbGl0eSBvYmplY3RzIGNhbiBiZSBkZWZhdWx0IGNvbnN0cnVjdGVkLgotVEVTVChDYXJkaW5h
bGl0eVRlc3QsIElzRGVmYXVsdENvbnN0cnVjdGFibGUpIHsKLSAgQ2FyZGluYWxpdHkgYzsKLX0K
LQotLy8gVGVzdHMgdGhhdCBDYXJkaW5hbGl0eSBvYmplY3RzIGFyZSBjb3B5YWJsZS4KLVRFU1Qo
Q2FyZGluYWxpdHlUZXN0LCBJc0NvcHlhYmxlKSB7Ci0gIC8vIFRlc3RzIHRoZSBjb3B5IGNvbnN0
cnVjdG9yLgotICBDYXJkaW5hbGl0eSBjID0gRXhhY3RseSgxKTsKLSAgRVhQRUNUX0ZBTFNFKGMu
SXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRC
eUNhbGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgx
KSk7Ci0KLSAgLy8gVGVzdHMgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gIGMgPSBFeGFjdGx5
KDIpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsKLSAgRVhQ
RUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX1RSVUUoYy5J
c1NhdHVyYXRlZEJ5Q2FsbENvdW50KDIpKTsKLX0KLQotVEVTVChDYXJkaW5hbGl0eVRlc3QsIElz
T3ZlclNhdHVyYXRlZEJ5Q2FsbENvdW50V29ya3MpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9
IEF0TW9zdCg1KTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNPdmVyU2F0dXJhdGVkQnlDYWxsQ291bnQo
NCkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc092ZXJTYXR1cmF0ZWRCeUNhbGxDb3VudCg1KSk7Ci0g
IEVYUEVDVF9UUlVFKGMuSXNPdmVyU2F0dXJhdGVkQnlDYWxsQ291bnQoNikpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IENhcmRpbmFsaXR5OjpEZXNjcmliZUFjdHVhbENhbGxDb3VudFRvKCkgY3JlYXRl
cyB0aGUKLS8vIGNvcnJlY3QgZGVzY3JpcHRpb24uCi1URVNUKENhcmRpbmFsaXR5VGVzdCwgQ2Fu
RGVzY3JpYmVBY3R1YWxDYWxsQ291bnQpIHsKLSAgc3RyaW5nc3RyZWFtIHNzMDsKLSAgQ2FyZGlu
YWxpdHk6OkRlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oMCwgJnNzMCk7Ci0gIEVYUEVDVF9FUSgi
bmV2ZXIgY2FsbGVkIiwgc3MwLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MxOwotICBDYXJk
aW5hbGl0eTo6RGVzY3JpYmVBY3R1YWxDYWxsQ291bnRUbygxLCAmc3MxKTsKLSAgRVhQRUNUX0VR
KCJjYWxsZWQgb25jZSIsIHNzMS5zdHIoKSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzMjsKLSAgQ2Fy
ZGluYWxpdHk6OkRlc2NyaWJlQWN0dWFsQ2FsbENvdW50VG8oMiwgJnNzMik7Ci0gIEVYUEVDVF9F
USgiY2FsbGVkIHR3aWNlIiwgc3MyLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MzOwotICBD
YXJkaW5hbGl0eTo6RGVzY3JpYmVBY3R1YWxDYWxsQ291bnRUbygzLCAmc3MzKTsKLSAgRVhQRUNU
X0VRKCJjYWxsZWQgMyB0aW1lcyIsIHNzMy5zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIEFueU51bWJl
cigpCi1URVNUKEFueU51bWJlciwgV29ya3MpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEFu
eU51bWJlcigpOwotICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOwot
ICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1Rf
VFJVRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMSkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1Nh
dHVyYXRlZEJ5Q2FsbENvdW50KDEpKTsKLQotICBFWFBFQ1RfVFJVRShjLklzU2F0aXNmaWVkQnlD
YWxsQ291bnQoOSkpOwotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDkp
KTsKLQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIGFueSBudW1iZXIgb2YgdGltZXMiLAot
ICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpKTsKLX0KLQotVEVTVChBbnlOdW1iZXJUZXN0
LCBIYXNDb3JyZWN0Qm91bmRzKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBBbnlOdW1iZXIo
KTsKLSAgRVhQRUNUX0VRKDAsIGMuQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpKTsKLSAgRVhQRUNU
X0VRKElOVF9NQVgsIGMuQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpKTsKLX0KLQotLy8gVGVzdHMg
QXRMZWFzdChuKS4KLQotVEVTVChBdExlYXN0VGVzdCwgT25OZWdhdGl2ZU51bWJlcikgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBdExlYXN0KC0xKTsKLSAg
fSwgIlRoZSBpbnZvY2F0aW9uIGxvd2VyIGJvdW5kIG11c3QgYmUgPj0gMCIpOwotfQotCi1URVNU
KEF0TGVhc3RUZXN0LCBPblplcm8pIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TGVhc3Qo
MCk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVYUEVD
VF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMCkpOwotCi0gIEVYUEVDVF9UUlVFKGMu
SXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVk
QnlDYWxsQ291bnQoMSkpOwotCi0gIHN0cmluZ3N0cmVhbSBzczsKLSAgYy5EZXNjcmliZVRvKCZz
cyk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJhbnkgbnVtYmVyIG9mIHRp
bWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICBzcy5zdHIoKSk7Ci19Ci0KLVRFU1QoQXRMZWFz
dFRlc3QsIE9uUG9zaXRpdmVOdW1iZXIpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TGVh
c3QoMik7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0aXNmaWVkQnlDYWxsQ291bnQoMCkpOwotICBF
WFBFQ1RfRkFMU0UoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDApKTsKLQotICBFWFBFQ1RfRkFM
U0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDEpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1
cmF0ZWRCeUNhbGxDb3VudCgxKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2Fs
bENvdW50KDIpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgyKSk7
Ci0KLSAgc3RyaW5nc3RyZWFtIHNzMTsKLSAgQXRMZWFzdCgxKS5EZXNjcmliZVRvKCZzczEpOwot
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiYXQgbGVhc3Qgb25jZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgc3MxLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MyOwotICBj
LkRlc2NyaWJlVG8oJnNzMik7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJh
dCBsZWFzdCB0d2ljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgc3MyLnN0cigpKTsKLQotICBz
dHJpbmdzdHJlYW0gc3MzOwotICBBdExlYXN0KDMpLkRlc2NyaWJlVG8oJnNzMyk7Ci0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJhdCBsZWFzdCAzIHRpbWVzIiwKLSAgICAgICAg
ICAgICAgICAgICAgICBzczMuc3RyKCkpOwotfQotCi1URVNUKEF0TGVhc3RUZXN0LCBIYXNDb3Jy
ZWN0Qm91bmRzKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBBdExlYXN0KDIpOwotICBFWFBF
Q1RfRVEoMiwgYy5Db25zZXJ2YXRpdmVMb3dlckJvdW5kKCkpOwotICBFWFBFQ1RfRVEoSU5UX01B
WCwgYy5Db25zZXJ2YXRpdmVVcHBlckJvdW5kKCkpOwotfQotCi0vLyBUZXN0cyBBdE1vc3Qobiku
Ci0KLVRFU1QoQXRNb3N0VGVzdCwgT25OZWdhdGl2ZU51bWJlcikgewotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBdE1vc3QoLTEpOwotICB9LCAiVGhlIGludm9j
YXRpb24gdXBwZXIgYm91bmQgbXVzdCBiZSA+PSAwIik7Ci19Ci0KLVRFU1QoQXRNb3N0VGVzdCwg
T25aZXJvKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBBdE1vc3QoMCk7Ci0gIEVYUEVDVF9U
UlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1
cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRCeUNh
bGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgxKSk7
Ci0KLSAgc3RyaW5nc3RyZWFtIHNzOwotICBjLkRlc2NyaWJlVG8oJnNzKTsKLSAgRVhQRUNUX1BS
RURfRk9STUFUMihJc1N1YnN0cmluZywgIm5ldmVyIGNhbGxlZCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEF0TW9zdFRlc3QsIE9uUG9zaXRpdmVOdW1iZXIp
IHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TW9zdCgyKTsKLSAgRVhQRUNUX1RSVUUoYy5J
c1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRC
eUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50
KDEpKTsKLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgxKSk7Ci0KLSAg
RVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX1RSVUUo
Yy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDIpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MxOwotICBB
dE1vc3QoMSkuRGVzY3JpYmVUbygmc3MxKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0
cmluZywgImNhbGxlZCBhdCBtb3N0IG9uY2UiLAotICAgICAgICAgICAgICAgICAgICAgIHNzMS5z
dHIoKSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzMjsKLSAgYy5EZXNjcmliZVRvKCZzczIpOwotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIGF0IG1vc3QgdHdpY2UiLAot
ICAgICAgICAgICAgICAgICAgICAgIHNzMi5zdHIoKSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzMzsK
LSAgQXRNb3N0KDMpLkRlc2NyaWJlVG8oJnNzMyk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNT
dWJzdHJpbmcsICJjYWxsZWQgYXQgbW9zdCAzIHRpbWVzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICBzczMuc3RyKCkpOwotfQotCi1URVNUKEF0TW9zdFRlc3QsIEhhc0NvcnJlY3RCb3VuZHMpIHsK
LSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEF0TW9zdCgyKTsKLSAgRVhQRUNUX0VRKDAsIGMuQ29u
c2VydmF0aXZlTG93ZXJCb3VuZCgpKTsKLSAgRVhQRUNUX0VRKDIsIGMuQ29uc2VydmF0aXZlVXBw
ZXJCb3VuZCgpKTsKLX0KLQotLy8gVGVzdHMgQmV0d2VlbihtLCBuKS4KLQotVEVTVChCZXR3ZWVu
VGVzdCwgT25OZWdhdGl2ZVN0YXJ0KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEJldHdlZW4oLTEsIDIpOwotICB9LCAiVGhlIGludm9jYXRpb24gbG93ZXIg
Ym91bmQgbXVzdCBiZSA+PSAwLCBidXQgaXMgYWN0dWFsbHkgLTEiKTsKLX0KLQotVEVTVChCZXR3
ZWVuVGVzdCwgT25OZWdhdGl2ZUVuZCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBCZXR3ZWVuKDEsIC0yKTsKLSAgfSwgIlRoZSBpbnZvY2F0aW9uIHVwcGVy
IGJvdW5kIG11c3QgYmUgPj0gMCwgYnV0IGlzIGFjdHVhbGx5IC0yIik7Ci19Ci0KLVRFU1QoQmV0
d2VlblRlc3QsIE9uU3RhcnRCaWdnZXJUaGFuRW5kKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIEJldHdlZW4oMiwgMSk7Ci0gIH0sICJUaGUgaW52b2NhdGlv
biB1cHBlciBib3VuZCAoMSkgbXVzdCBiZSA+PSAiCi0gICAgICJ0aGUgaW52b2NhdGlvbiBsb3dl
ciBib3VuZCAoMikiKTsKLX0KLQotVEVTVChCZXR3ZWVuVGVzdCwgT25aZXJvU3RhcnRBbmRaZXJv
RW5kKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBCZXR3ZWVuKDAsIDApOwotCi0gIEVYUEVD
VF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNT
YXR1cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRC
eUNhbGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgx
KSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzOwotICBjLkRlc2NyaWJlVG8oJnNzKTsKLSAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIm5ldmVyIGNhbGxlZCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEJldHdlZW5UZXN0LCBPblplcm9TdGFydEFu
ZE5vblplcm9FbmQpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEJldHdlZW4oMCwgMik7Ci0K
LSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX0ZB
TFNFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1Nh
dGlzZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2Fs
bENvdW50KDIpKTsKLQotICBFWFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDQp
KTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENvdW50KDQpKTsKLQotICBzdHJp
bmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3MpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KElzU3Vic3RyaW5nLCAiY2FsbGVkIGF0IG1vc3QgdHdpY2UiLAotICAgICAgICAgICAgICAgICAg
ICAgIHNzLnN0cigpKTsKLX0KLQotVEVTVChCZXR3ZWVuVGVzdCwgT25TYW1lU3RhcnRBbmRFbmQp
IHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEJldHdlZW4oMywgMyk7Ci0KLSAgRVhQRUNUX0ZB
TFNFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgyKSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0
dXJhdGVkQnlDYWxsQ291bnQoMikpOwotCi0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNh
bGxDb3VudCgzKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgzKSk7
Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCg0KSk7Ci0gIEVYUEVD
VF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCg0KSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNz
OwotICBjLkRlc2NyaWJlVG8oJnNzKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmlu
ZywgImNhbGxlZCAzIHRpbWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICBzcy5zdHIoKSk7Ci19
Ci0KLVRFU1QoQmV0d2VlblRlc3QsIE9uRGlmZmVyZW50U3RhcnRBbmRFbmQpIHsKLSAgY29uc3Qg
Q2FyZGluYWxpdHkgYyA9IEJldHdlZW4oMywgNSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRp
c2ZpZWRCeUNhbGxDb3VudCgyKSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxs
Q291bnQoMikpOwotCi0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgzKSk7
Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxsQ291bnQoMykpOwotCi0gIEVYUEVD
VF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCg1KSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNT
YXR1cmF0ZWRCeUNhbGxDb3VudCg1KSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNTYXRpc2ZpZWRC
eUNhbGxDb3VudCg2KSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCg2
KSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzOwotICBjLkRlc2NyaWJlVG8oJnNzKTsKLSAgRVhQRUNU
X1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgImNhbGxlZCBiZXR3ZWVuIDMgYW5kIDUgdGltZXMi
LAotICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpKTsKLX0KLQotVEVTVChCZXR3ZWVuVGVz
dCwgSGFzQ29ycmVjdEJvdW5kcykgewotICBjb25zdCBDYXJkaW5hbGl0eSBjID0gQmV0d2Vlbigz
LCA1KTsKLSAgRVhQRUNUX0VRKDMsIGMuQ29uc2VydmF0aXZlTG93ZXJCb3VuZCgpKTsKLSAgRVhQ
RUNUX0VRKDUsIGMuQ29uc2VydmF0aXZlVXBwZXJCb3VuZCgpKTsKLX0KLQotLy8gVGVzdHMgRXhh
Y3RseShuKS4KLQotVEVTVChFeGFjdGx5VGVzdCwgT25OZWdhdGl2ZU51bWJlcikgewotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFeGFjdGx5KC0xKTsKLSAgfSwg
IlRoZSBpbnZvY2F0aW9uIGxvd2VyIGJvdW5kIG11c3QgYmUgPj0gMCIpOwotfQotCi1URVNUKEV4
YWN0bHlUZXN0LCBPblplcm8pIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEV4YWN0bHkoMCk7
Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgwKSk7Ci0gIEVYUEVDVF9U
UlVFKGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGMuSXNT
YXRpc2ZpZWRCeUNhbGxDb3VudCgxKSk7Ci0gIEVYUEVDVF9UUlVFKGMuSXNTYXR1cmF0ZWRCeUNh
bGxDb3VudCgxKSk7Ci0KLSAgc3RyaW5nc3RyZWFtIHNzOwotICBjLkRlc2NyaWJlVG8oJnNzKTsK
LSAgRVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIm5ldmVyIGNhbGxlZCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgc3Muc3RyKCkpOwotfQotCi1URVNUKEV4YWN0bHlUZXN0LCBPblBv
c2l0aXZlTnVtYmVyKSB7Ci0gIGNvbnN0IENhcmRpbmFsaXR5IGMgPSBFeGFjdGx5KDIpOwotICBF
WFBFQ1RfRkFMU0UoYy5Jc1NhdGlzZmllZEJ5Q2FsbENvdW50KDApKTsKLSAgRVhQRUNUX0ZBTFNF
KGMuSXNTYXR1cmF0ZWRCeUNhbGxDb3VudCgwKSk7Ci0KLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdGlz
ZmllZEJ5Q2FsbENvdW50KDIpKTsKLSAgRVhQRUNUX1RSVUUoYy5Jc1NhdHVyYXRlZEJ5Q2FsbENv
dW50KDIpKTsKLQotICBzdHJpbmdzdHJlYW0gc3MxOwotICBFeGFjdGx5KDEpLkRlc2NyaWJlVG8o
JnNzMSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJjYWxsZWQgb25jZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgc3MxLnN0cigpKTsKLQotICBzdHJpbmdzdHJlYW0gc3My
OwotICBjLkRlc2NyaWJlVG8oJnNzMik7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJp
bmcsICJjYWxsZWQgdHdpY2UiLAotICAgICAgICAgICAgICAgICAgICAgIHNzMi5zdHIoKSk7Ci0K
LSAgc3RyaW5nc3RyZWFtIHNzMzsKLSAgRXhhY3RseSgzKS5EZXNjcmliZVRvKCZzczMpOwotICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiY2FsbGVkIDMgdGltZXMiLAotICAgICAg
ICAgICAgICAgICAgICAgIHNzMy5zdHIoKSk7Ci19Ci0KLVRFU1QoRXhhY3RseVRlc3QsIEhhc0Nv
cnJlY3RCb3VuZHMpIHsKLSAgY29uc3QgQ2FyZGluYWxpdHkgYyA9IEV4YWN0bHkoMyk7Ci0gIEVY
UEVDVF9FUSgzLCBjLkNvbnNlcnZhdGl2ZUxvd2VyQm91bmQoKSk7Ci0gIEVYUEVDVF9FUSgzLCBj
LkNvbnNlcnZhdGl2ZVVwcGVyQm91bmQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSB1c2VyIGNh
biBtYWtlIGhpcyBvd24gY2FyZGluYWxpdHkgYnkgaW1wbGVtZW50aW5nCi0vLyBDYXJkaW5hbGl0
eUludGVyZmFjZSBhbmQgY2FsbGluZyBNYWtlQ2FyZGluYWxpdHkoKS4KLQotY2xhc3MgRXZlbkNh
cmRpbmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3aWxsIHNhdGlzZnkgdGhpcyBjYXJk
aW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVkQnlDYWxsQ291bnQoaW50IGNhbGxf
Y291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gKGNhbGxfY291bnQgJSAyID09IDApOwotICB9Ci0K
LSAgLy8gUmV0dXJucyB0cnVlIGlmZiBjYWxsX2NvdW50IGNhbGxzIHdpbGwgc2F0dXJhdGUgdGhp
cyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0dXJhdGVkQnlDYWxsQ291bnQoaW50
IC8qIGNhbGxfY291bnQgKi8pIGNvbnN0IHsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAv
LyBEZXNjcmliZXMgc2VsZiB0byBhbiBvc3RyZWFtLgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogc3MpIGNvbnN0IHsKLSAgICAqc3MgPDwgImNhbGxlZCBldmVuIG51
bWJlciBvZiB0aW1lcyI7Ci0gIH0KLX07Ci0KLVRFU1QoTWFrZUNhcmRpbmFsaXR5VGVzdCwgQ29u
c3RydWN0c0NhcmRpbmFsaXR5RnJvbUludGVyZmFjZSkgewotICBjb25zdCBDYXJkaW5hbGl0eSBj
ID0gTWFrZUNhcmRpbmFsaXR5KG5ldyBFdmVuQ2FyZGluYWxpdHkpOwotCi0gIEVYUEVDVF9UUlVF
KGMuSXNTYXRpc2ZpZWRCeUNhbGxDb3VudCgyKSk7Ci0gIEVYUEVDVF9GQUxTRShjLklzU2F0aXNm
aWVkQnlDYWxsQ291bnQoMykpOwotCi0gIEVYUEVDVF9GQUxTRShjLklzU2F0dXJhdGVkQnlDYWxs
Q291bnQoMTAwMDApKTsKLQotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIGMuRGVzY3JpYmVUbygmc3Mp
OwotICBFWFBFQ1RfRVEoImNhbGxlZCBldmVuIG51bWJlciBvZiB0aW1lcyIsIHNzLnN0cigpKTsK
LX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rl
c3QvZ21vY2stZ2VuZXJhdGVkLWFjdGlvbnNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2stZ2VuZXJhdGVkLWFjdGlvbnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNThkNDU3MjhiMWVjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9j
ay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTIyOCArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAt
IGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBm
aWxlIHRlc3RzIHRoZSBidWlsdC1pbiBhY3Rpb25zIGdlbmVyYXRlZCBieSBhIHNjcmlwdC4KLQot
I2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1hY3Rpb25zLmgiCi0KLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1
ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNl
IHRlc3RpbmcgewotbmFtZXNwYWNlIGdtb2NrX2dlbmVyYXRlZF9hY3Rpb25zX3Rlc3QgewotCi11
c2luZyA6OnN0ZDo6cGx1czsKLXVzaW5nIDo6c3RkOjpzdHJpbmc7Ci11c2luZyB0ZXN0aW5nOjpn
ZXQ7Ci11c2luZyB0ZXN0aW5nOjptYWtlX3R1cGxlOwotdXNpbmcgdGVzdGluZzo6dHVwbGU7Ci11
c2luZyB0ZXN0aW5nOjp0dXBsZV9lbGVtZW50OwotdXNpbmcgdGVzdGluZzo6XzsKLXVzaW5nIHRl
c3Rpbmc6OkFjdGlvbjsKLXVzaW5nIHRlc3Rpbmc6OkFjdGlvbkludGVyZmFjZTsKLXVzaW5nIHRl
c3Rpbmc6OkJ5UmVmOwotdXNpbmcgdGVzdGluZzo6RG9BbGw7Ci11c2luZyB0ZXN0aW5nOjpJbnZv
a2U7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm5OZXc7Ci11
c2luZyB0ZXN0aW5nOjpTZXRBcmdQb2ludGVlOwotdXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxOwotdXNpbmcgdGVzdGluZzo6VW51c2VkOwotdXNpbmcgdGVzdGluZzo6V2l0aEFyZ3M7
Ci0KLS8vIEZvciBzdXBwcmVzc2luZyBjb21waWxlciB3YXJuaW5ncyBvbiBjb252ZXJzaW9uIHBv
c3NpYmx5IGxvc2luZyBwcmVjaXNpb24uCi1pbmxpbmUgc2hvcnQgU2hvcnQoc2hvcnQgbikgeyBy
ZXR1cm4gbjsgfSAgLy8gTk9MSU5UCi1pbmxpbmUgY2hhciBDaGFyKGNoYXIgY2gpIHsgcmV0dXJu
IGNoOyB9Ci0KLS8vIFNhbXBsZSBmdW5jdGlvbnMgYW5kIGZ1bmN0b3JzIGZvciB0ZXN0aW5nIHZh
cmlvdXMgYWN0aW9ucy4KLWludCBOdWxsYXJ5KCkgeyByZXR1cm4gMTsgfQotCi1jbGFzcyBOdWxs
YXJ5RnVuY3RvciB7Ci0gcHVibGljOgotICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIDI7IH0K
LX07Ci0KLWJvb2wgZ19kb25lID0gZmFsc2U7Ci0KLWJvb2wgVW5hcnkoaW50IHgpIHsgcmV0dXJu
IHggPCAwOyB9Ci0KLWNvbnN0IGNoYXIqIFBsdXMxKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIHMg
KyAxOyB9Ci0KLWJvb2wgQnlDb25zdFJlZihjb25zdCBzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4g
cyA9PSAiSGkiOyB9Ci0KLWNvbnN0IGRvdWJsZSBnX2RvdWJsZSA9IDA7Ci1ib29sIFJlZmVyZW5j
ZXNHbG9iYWxEb3VibGUoY29uc3QgZG91YmxlJiB4KSB7IHJldHVybiAmeCA9PSAmZ19kb3VibGU7
IH0KLQotc3RkOjpzdHJpbmcgQnlOb25Db25zdFJlZihzdGQ6OnN0cmluZyYgcykgeyByZXR1cm4g
cyArPSAiKyI7IH0gIC8vIE5PTElOVAotCi1zdHJ1Y3QgVW5hcnlGdW5jdG9yIHsKLSAgaW50IG9w
ZXJhdG9yKCkoYm9vbCB4KSB7IHJldHVybiB4ID8gMSA6IC0xOyB9Ci19OwotCi1jb25zdCBjaGFy
KiBCaW5hcnkoY29uc3QgY2hhciogaW5wdXQsIHNob3J0IG4pIHsgcmV0dXJuIGlucHV0ICsgbjsg
fSAgLy8gTk9MSU5UCi0KLXZvaWQgVm9pZEJpbmFyeShpbnQsIGNoYXIpIHsgZ19kb25lID0gdHJ1
ZTsgfQotCi1pbnQgVGVybmFyeShpbnQgeCwgY2hhciB5LCBzaG9ydCB6KSB7IHJldHVybiB4ICsg
eSArIHo7IH0gIC8vIE5PTElOVAotCi12b2lkIFZvaWRUZXJuYXJ5KGludCwgY2hhciwgYm9vbCkg
eyBnX2RvbmUgPSB0cnVlOyB9Ci0KLWludCBTdW1PZjQoaW50IGEsIGludCBiLCBpbnQgYywgaW50
IGQpIHsgcmV0dXJuIGEgKyBiICsgYyArIGQ7IH0KLQotc3RkOjpzdHJpbmcgQ29uY2F0NChjb25z
dCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzNCkgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIg
KyBzMyArIHM0OwotfQotCi1pbnQgU3VtT2Y1KGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBp
bnQgZSkgeyByZXR1cm4gYSArIGIgKyBjICsgZCArIGU7IH0KLQotc3RydWN0IFN1bU9mNUZ1bmN0
b3IgewotICBpbnQgb3BlcmF0b3IoKShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUp
IHsKLSAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIGU7Ci0gIH0KLX07Ci0KLXN0ZDo6c3RyaW5n
IENvbmNhdDUoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywK
LSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1KSB7Ci0g
IHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNTsKLX0KLQotaW50IFN1
bU9mNihpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKSB7Ci0gIHJldHVy
biBhICsgYiArIGMgKyBkICsgZSArIGY7Ci19Ci0KLXN0cnVjdCBTdW1PZjZGdW5jdG9yIHsKLSAg
aW50IG9wZXJhdG9yKCkoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlLCBpbnQgZikg
ewotICAgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSArIGY7Ci0gIH0KLX07Ci0KLXN0ZDo6c3Ry
aW5nIENvbmNhdDYoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBz
MywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBj
b25zdCBjaGFyKiBzNikgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0
ICsgczUgKyBzNjsKLX0KLQotc3RkOjpzdHJpbmcgQ29uY2F0Nyhjb25zdCBjaGFyKiBzMSwgY29u
c3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBzNykgewotICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBz
MyArIHM0ICsgczUgKyBzNiArIHM3OwotfQotCi1zdGQ6OnN0cmluZyBDb25jYXQ4KGNvbnN0IGNo
YXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciogczYsCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCkgewotICByZXR1
cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3ICsgczg7Ci19
Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDkoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBj
b25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0
IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogczcsIGNvbnN0IGNoYXIqIHM4LCBjb25zdCBjaGFyKiBzOSkgewotICByZXR1cm4gc3RkOjpz
dHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3ICsgczggKyBzOTsKLX0KLQot
c3RkOjpzdHJpbmcgQ29uY2F0MTAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25z
dCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBj
aGFyKiBzNSwgY29uc3QgY2hhciogczYsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBzNywgY29uc3QgY2hhciogczgsIGNvbnN0IGNoYXIqIHM5LAotICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogczEwKSB7Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMz
ICsgczQgKyBzNSArIHM2ICsgczcgKyBzOCArIHM5ICsgczEwOwotfQotCi0vLyBBIGhlbHBlciB0
aGF0IHR1cm5zIHRoZSB0eXBlIG9mIGEgQy1zdHJpbmcgbGl0ZXJhbCBmcm9tIGNvbnN0Ci0vLyBj
aGFyW05dIHRvIGNvbnN0IGNoYXIqLgotaW5saW5lIGNvbnN0IGNoYXIqIENoYXJQdHIoY29uc3Qg
Y2hhciogcykgeyByZXR1cm4gczsgfQotCi0vLyBUZXN0cyBJbnZva2VBcmd1bWVudDxOPiguLi4p
LgotCi0vLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgbnVsbGFyeSBmdW5jdGlv
bi4KLVRFU1QoSW52b2tlQXJndW1lbnRUZXN0LCBGdW5jdGlvbjApIHsKLSAgQWN0aW9uPGludChp
bnQsIGludCgqKSgpKT4gYSA9IEludm9rZUFyZ3VtZW50PDE+KCk7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX0VRKDEsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDIsICZOdWxsYXJ5KSkpOwotfQotCi0vLyBU
ZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgdW5hcnkgZnVuY3Rpb24uCi1URVNUKElu
dm9rZUFyZ3VtZW50VGVzdCwgRnVuY3RvcjEpIHsKLSAgQWN0aW9uPGludChVbmFyeUZ1bmN0b3Ip
PiBhID0gSW52b2tlQXJndW1lbnQ8MD4odHJ1ZSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEs
IGEuUGVyZm9ybShtYWtlX3R1cGxlKFVuYXJ5RnVuY3RvcigpKSkpOwotfQotCi0vLyBUZXN0cyB1
c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgNS1hcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZUFy
Z3VtZW50VGVzdCwgRnVuY3Rpb241KSB7Ci0gIEFjdGlvbjxpbnQoaW50KCopKGludCwgaW50LCBp
bnQsIGludCwgaW50KSk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2VBcmd1bWVudDwwPigx
MDAwMCwgMjAwMCwgMzAwLCA0MCwgNSk7Ci0gIEVYUEVDVF9FUSgxMjM0NSwgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoJlN1bU9mNSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQg
d2l0aCBhIDUtYXJ5IGZ1bmN0b3IuCi1URVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3RvcjUp
IHsKLSAgQWN0aW9uPGludChTdW1PZjVGdW5jdG9yKT4gYSA9ICAvLyBOT0xJTlQKLSAgICAgIElu
dm9rZUFyZ3VtZW50PDA+KDEwMDAwLCAyMDAwLCAzMDAsIDQwLCA1KTsKLSAgRVhQRUNUX0VRKDEy
MzQ1LCBhLlBlcmZvcm0obWFrZV90dXBsZShTdW1PZjVGdW5jdG9yKCkpKSk7Ci19Ci0KLS8vIFRl
c3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSA2LWFyeSBmdW5jdGlvbi4KLVRFU1QoSW52
b2tlQXJndW1lbnRUZXN0LCBGdW5jdGlvbjYpIHsKLSAgQWN0aW9uPGludChpbnQoKikoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkpPiBhID0gIC8vIE5PTElOVAotICAgICAgSW52b2tlQXJn
dW1lbnQ8MD4oMTAwMDAwLCAyMDAwMCwgMzAwMCwgNDAwLCA1MCwgNik7Ci0gIEVYUEVDVF9FUSgx
MjM0NTYsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZTdW1PZjYpKSk7Ci19Ci0KLS8vIFRlc3RzIHVz
aW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSA2LWFyeSBmdW5jdG9yLgotVEVTVChJbnZva2VBcmd1
bWVudFRlc3QsIEZ1bmN0b3I2KSB7Ci0gIEFjdGlvbjxpbnQoU3VtT2Y2RnVuY3Rvcik+IGEgPSAg
Ly8gTk9MSU5UCi0gICAgICBJbnZva2VBcmd1bWVudDwwPigxMDAwMDAsIDIwMDAwLCAzMDAwLCA0
MDAsIDUwLCA2KTsKLSAgRVhQRUNUX0VRKDEyMzQ1NiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoU3Vt
T2Y2RnVuY3RvcigpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRo
IGEgNy1hcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb243KSB7
Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhzdGQ6OnN0cmluZygqKShjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKSk+Ci0gICAgICBhID0gSW52b2tlQXJndW1l
bnQ8MD4oIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciKTsKLSAgRVhQRUNUX0VRKCIx
MjM0NTY3IiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkNvbmNhdDcpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSA4LWFyeSBmdW5jdGlvbi4KLVRFU1QoSW52b2tl
QXJndW1lbnRUZXN0LCBGdW5jdGlvbjgpIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3Ry
aW5nKCopKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKSk+Ci0gICAgICBhID0gSW52b2tlQXJndW1lbnQ8MD4oIjEiLCAiMiIsICIz
IiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIpOwotICBFWFBFQ1RfRVEoIjEyMzQ1Njc4IiwgYS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoJkNvbmNhdDgpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9r
ZUFyZ3VtZW50IHdpdGggYSA5LWFyeSBmdW5jdGlvbi4KLVRFU1QoSW52b2tlQXJndW1lbnRUZXN0
LCBGdW5jdGlvbjkpIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3RyaW5nKCopKGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKikpPgotICAgICAgYSA9IEludm9rZUFyZ3VtZW50PDA+KCIxIiwgIjIiLCAi
MyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSIpOwotICBFWFBFQ1RfRVEoIjEyMzQ1Njc4
OSIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZDb25jYXQ5KSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgMTAtYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VBcmd1
bWVudFRlc3QsIEZ1bmN0aW9uMTApIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKHN0ZDo6c3RyaW5n
KCopKAotICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKSk+Ci0gICAgICBhID0gSW52b2tlQXJn
dW1lbnQ8MD4oIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2IiwgIjciLCAiOCIsICI5IiwgIjAi
KTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3ODkwIiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkNvbmNh
dDEwKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2VBcmd1bWVudCB3aXRoIGEgZnVuY3Rp
b24gdGhhdCB0YWtlcyBhIHBvaW50ZXIgYXJndW1lbnQuCi1URVNUKEludm9rZUFyZ3VtZW50VGVz
dCwgQnlQb2ludGVyRnVuY3Rpb24pIHsKLSAgQWN0aW9uPGNvbnN0IGNoYXIqKGNvbnN0IGNoYXIq
KCopKGNvbnN0IGNoYXIqIGlucHV0LCBzaG9ydCBuKSk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJ
bnZva2VBcmd1bWVudDwwPihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oIkhpIiksIFNob3J0KDEp
KTsKLSAgRVhQRUNUX1NUUkVRKCJpIiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJkJpbmFyeSkpKTsK
LX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlQXJndW1lbnQgd2l0aCBhIGZ1bmN0aW9uIHRoYXQg
dGFrZXMgYSBjb25zdCBjaGFyKgotLy8gYnkgcGFzc2luZyBpdCBhIEMtc3RyaW5nIGxpdGVyYWwu
Ci1URVNUKEludm9rZUFyZ3VtZW50VGVzdCwgRnVuY3Rpb25XaXRoQ1N0cmluZ0xpdGVyYWwpIHsK
LSAgQWN0aW9uPGNvbnN0IGNoYXIqKGNvbnN0IGNoYXIqKCopKGNvbnN0IGNoYXIqIGlucHV0LCBz
aG9ydCBuKSk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2VBcmd1bWVudDwwPigiSGkiLCBT
aG9ydCgxKSk7Ci0gIEVYUEVDVF9TVFJFUSgiaSIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZCaW5h
cnkpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZUFyZ3VtZW50IHdpdGggYSBmdW5jdGlv
biB0aGF0IHRha2VzIGEgY29uc3QgcmVmZXJlbmNlLgotVEVTVChJbnZva2VBcmd1bWVudFRlc3Qs
IEJ5Q29uc3RSZWZlcmVuY2VGdW5jdGlvbikgewotICBBY3Rpb248Ym9vbChib29sICgqZnVuY3Rp
b24pKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2VB
cmd1bWVudDwwPihzdGQ6OnN0cmluZygiSGkiKSk7Ci0gIC8vIFdoZW4gYWN0aW9uICdhJyBpcyBj
b25zdHJ1Y3RlZCwgaXQgbWFrZXMgYSBjb3B5IG9mIHRoZSB0ZW1wb3JhcnkKLSAgLy8gc3RyaW5n
IG9iamVjdCBwYXNzZWQgdG8gaXQsIHNvIGl0J3MgT0sgdG8gdXNlICdhJyBsYXRlciwgd2hlbiB0
aGUKLSAgLy8gdGVtcG9yYXJ5IG9iamVjdCBoYXMgYWxyZWFkeSBkaWVkLgotICBFWFBFQ1RfVFJV
RShhLlBlcmZvcm0obWFrZV90dXBsZSgmQnlDb25zdFJlZikpKTsKLX0KLQotLy8gVGVzdHMgdXNp
bmcgSW52b2tlQXJndW1lbnQgd2l0aCBCeVJlZigpIGFuZCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
YQotLy8gY29uc3QgcmVmZXJlbmNlLgotVEVTVChJbnZva2VBcmd1bWVudFRlc3QsIEJ5RXhwbGlj
aXRDb25zdFJlZmVyZW5jZUZ1bmN0aW9uKSB7Ci0gIEFjdGlvbjxib29sKGJvb2woKikoY29uc3Qg
ZG91YmxlJiB4KSk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2VBcmd1bWVudDwwPihCeVJl
ZihnX2RvdWJsZSkpOwotICAvLyBUaGUgYWJvdmUgbGluZSBjYWxscyBCeVJlZigpIG9uIGEgY29u
c3QgdmFsdWUuCi0gIEVYUEVDVF9UUlVFKGEuUGVyZm9ybShtYWtlX3R1cGxlKCZSZWZlcmVuY2Vz
R2xvYmFsRG91YmxlKSkpOwotCi0gIGRvdWJsZSB4ID0gMDsKLSAgYSA9IEludm9rZUFyZ3VtZW50
PDA+KEJ5UmVmKHgpKTsgIC8vIFRoaXMgY2FsbHMgQnlSZWYoKSBvbiBhIG5vbi1jb25zdC4KLSAg
RVhQRUNUX0ZBTFNFKGEuUGVyZm9ybShtYWtlX3R1cGxlKCZSZWZlcmVuY2VzR2xvYmFsRG91Ymxl
KSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyBhbmQgd2l0aCBhbiBhY3Rpb24gdGhh
dCB0YWtlcyAxIGFyZ3VtZW50LgotVEVTVChXaXRoQXJnc1Rlc3QsIE9uZUFyZykgewotICBBY3Rp
b248Ym9vbChkb3VibGUgeCwgaW50IG4pPiBhID0gV2l0aEFyZ3M8MT4oSW52b2tlKFVuYXJ5KSk7
ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoYS5QZXJmb3JtKG1ha2VfdHVwbGUoMS41LCAtMSkp
KTsKLSAgRVhQRUNUX0ZBTFNFKGEuUGVyZm9ybShtYWtlX3R1cGxlKDEuNSwgMSkpKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyAyIGFyZ3Vt
ZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBUd29BcmdzKSB7Ci0gIEFjdGlvbjxjb25zdCBjaGFy
Kihjb25zdCBjaGFyKiBzLCBkb3VibGUgeCwgc2hvcnQgbik+IGEgPQotICAgICAgV2l0aEFyZ3M8
MCwgMj4oSW52b2tlKEJpbmFyeSkpOwotICBjb25zdCBjaGFyIHNbXSA9ICJIZWxsbyI7Ci0gIEVY
UEVDVF9FUShzICsgMiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cihzKSwgMC41LCBTaG9y
dCgyKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhh
dCB0YWtlcyAzIGFyZ3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBUaHJlZUFyZ3MpIHsKLSAg
QWN0aW9uPGludChpbnQsIGRvdWJsZSwgY2hhciwgc2hvcnQpPiBhID0gIC8vIE5PTElOVAotICAg
ICAgV2l0aEFyZ3M8MCwgMiwgMz4oSW52b2tlKFRlcm5hcnkpKTsKLSAgRVhQRUNUX0VRKDEyMywg
YS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAwLCA2LjUsIENoYXIoMjApLCBTaG9ydCgzKSkpKTsKLX0K
LQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA0IGFy
Z3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBGb3VyQXJncykgewotICBBY3Rpb248c3RkOjpz
dHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBkb3VibGUsIGNvbnN0IGNoYXIqLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciopPgotICAgICAgYSA9IFdpdGhBcmdzPDQsIDMs
IDEsIDA+KEludm9rZShDb25jYXQ0KSk7Ci0gIEVYUEVDVF9FUSgiNDMxMCIsIGEuUGVyZm9ybSht
YWtlX3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0cigiMSIpLCAyLjUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjMiKSwgQ2hhclB0cigiNCIpKSkp
OwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2Vz
IDUgYXJndW1lbnRzLgotVEVTVChXaXRoQXJnc1Rlc3QsIEZpdmVBcmdzKSB7Ci0gIEFjdGlvbjxz
dGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBXaXRo
QXJnczw0LCAzLCAyLCAxLCAwPihJbnZva2UoQ29uY2F0NSkpOwotICBFWFBFQ1RfRVEoIjQzMjEw
IiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0
cigiMSIpLCBDaGFyUHRyKCIyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
aGFyUHRyKCIzIiksIENoYXJQdHIoIjQiKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFy
Z3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA2IGFyZ3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NU
ZXN0LCBTaXhBcmdzKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqKT4gYSA9Ci0gICAgICBXaXRoQXJnczwwLCAxLCAyLCAyLCAxLCAw
PihJbnZva2UoQ29uY2F0NikpOwotICBFWFBFQ1RfRVEoIjAxMjIxMCIsCi0gICAgICAgICAgICBh
LlBlcmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigi
MiIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0
IHRha2VzIDcgYXJndW1lbnRzLgotVEVTVChXaXRoQXJnc1Rlc3QsIFNldmVuQXJncykgewotICBB
Y3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopPiBhID0KLSAgICAgIFdpdGhBcmdzPDAsIDEsIDIsIDMsIDIsIDEsIDA+KElu
dm9rZShDb25jYXQ3KSk7Ci0gIEVYUEVDVF9FUSgiMDEyMzIxMCIsCi0gICAgICAgICAgICBhLlBl
cmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIwIiksIENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiMyIpKSkpOwotfQot
Ci0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIDggYXJn
dW1lbnRzLgotVEVTVChXaXRoQXJnc1Rlc3QsIEVpZ2h0QXJncykgewotICBBY3Rpb248c3RkOjpz
dHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciop
PiBhID0KLSAgICAgIFdpdGhBcmdzPDAsIDEsIDIsIDMsIDAsIDEsIDIsIDM+KEludm9rZShDb25j
YXQ4KSk7Ci0gIEVYUEVDVF9FUSgiMDEyMzAxMjMiLAotICAgICAgICAgICAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoQ2hhclB0cigiMCIpLCBDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjMiKSkpKTsKLX0KLQotLy8gVGVz
dHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBhbiBhY3Rpb24gdGhhdCB0YWtlcyA5IGFyZ3VtZW50cy4K
LVRFU1QoV2l0aEFyZ3NUZXN0LCBOaW5lQXJncykgewotICBBY3Rpb248c3RkOjpzdHJpbmcoY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPiBhID0KLSAg
ICAgIFdpdGhBcmdzPDAsIDEsIDIsIDMsIDEsIDIsIDMsIDIsIDM+KEludm9rZShDb25jYXQ5KSk7
Ci0gIEVYUEVDVF9FUSgiMDEyMzEyMzIzIiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1
cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCIzIikpKSk7Ci19Ci0KLS8vIFRlc3RzIHVz
aW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQgdGFrZXMgMTAgYXJndW1lbnRzLgotVEVT
VChXaXRoQXJnc1Rlc3QsIFRlbkFyZ3MpIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4gYSA9Ci0gICAgICBX
aXRoQXJnczwwLCAxLCAyLCAzLCAyLCAxLCAwLCAxLCAyLCAzPihJbnZva2UoQ29uY2F0MTApKTsK
LSAgRVhQRUNUX0VRKCIwMTIzMjEwMTIzIiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1
cGxlKENoYXJQdHIoIjAiKSwgQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCIzIikpKSk7Ci19Ci0KLS8vIFRlc3RzIHVz
aW5nIFdpdGhBcmdzIHdpdGggYW4gYWN0aW9uIHRoYXQgaXMgbm90IEludm9rZSgpLgotY2xhc3Mg
U3Vic3RyYWN0QWN0aW9uIDogcHVibGljIEFjdGlvbkludGVyZmFjZTxpbnQoaW50LCBpbnQpPiB7
ICAvLyBOT0xJTlQKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgaW50IFBlcmZvcm0oY29uc3QgdHVwbGU8
aW50LCBpbnQ+JiBhcmdzKSB7Ci0gICAgcmV0dXJuIGdldDwwPihhcmdzKSAtIGdldDwxPihhcmdz
KTsKLSAgfQotfTsKLQotVEVTVChXaXRoQXJnc1Rlc3QsIE5vbkludm9rZUFjdGlvbikgewotICBB
Y3Rpb248aW50KGNvbnN0IHN0cmluZyYsIGludCwgaW50KT4gYSA9ICAvLyBOT0xJTlQKLSAgICAg
IFdpdGhBcmdzPDIsIDE+KE1ha2VBY3Rpb24obmV3IFN1YnN0cmFjdEFjdGlvbikpOwotICBzdHJp
bmcgcygiaGVsbG8iKTsKLSAgRVhQRUNUX0VRKDgsIGEuUGVyZm9ybSh0dXBsZTxjb25zdCBzdHJp
bmcmLCBpbnQsIGludD4ocywgMiwgMTApKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFdpdGhBcmdz
IHRvIHBhc3MgYWxsIG9yaWdpbmFsIGFyZ3VtZW50cyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIuCi1U
RVNUKFdpdGhBcmdzVGVzdCwgSWRlbnRpdHkpIHsKLSAgQWN0aW9uPGludChpbnQgeCwgY2hhciB5
LCBzaG9ydCB6KT4gYSA9ICAvLyBOT0xJTlQKLSAgICAgIFdpdGhBcmdzPDAsIDEsIDI+KEludm9r
ZShUZXJuYXJ5KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMCwg
Q2hhcigyMCksIFNob3J0KDMpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRoQXJncyB3aXRo
IHJlcGVhdGVkIGFyZ3VtZW50cy4KLVRFU1QoV2l0aEFyZ3NUZXN0LCBSZXBlYXRlZEFyZ3VtZW50
cykgewotICBBY3Rpb248aW50KGJvb2wsIGludCBtLCBpbnQgbik+IGEgPSAgLy8gTk9MSU5UCi0g
ICAgICBXaXRoQXJnczwxLCAxLCAxLCAxPihJbnZva2UoU3VtT2Y0KSk7Ci0gIEVYUEVDVF9FUSg0
LCBhLlBlcmZvcm0obWFrZV90dXBsZShmYWxzZSwgMSwgMTApKSk7Ci19Ci0KLS8vIFRlc3RzIHVz
aW5nIFdpdGhBcmdzIHdpdGggcmV2ZXJzZWQgYXJndW1lbnQgb3JkZXIuCi1URVNUKFdpdGhBcmdz
VGVzdCwgUmV2ZXJzZWRBcmd1bWVudE9yZGVyKSB7Ci0gIEFjdGlvbjxjb25zdCBjaGFyKihzaG9y
dCBuLCBjb25zdCBjaGFyKiBpbnB1dCk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBXaXRoQXJnczwx
LCAwPihJbnZva2UoQmluYXJ5KSk7Ci0gIGNvbnN0IGNoYXIgc1tdID0gIkhlbGxvIjsKLSAgRVhQ
RUNUX0VRKHMgKyAyLCBhLlBlcmZvcm0obWFrZV90dXBsZShTaG9ydCgyKSwgQ2hhclB0cihzKSkp
KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZ3Mgd2l0aCBjb21wYXRpYmxlLCBidXQgbm90
IGlkZW50aWNhbCwgYXJndW1lbnQgdHlwZXMuCi1URVNUKFdpdGhBcmdzVGVzdCwgQXJnc09mQ29t
cGF0aWJsZVR5cGVzKSB7Ci0gIEFjdGlvbjxsb25nKHNob3J0IHgsIGNoYXIgeSwgZG91YmxlIHos
IGNoYXIgYyk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBXaXRoQXJnczwwLCAxLCAzPihJbnZva2Uo
VGVybmFyeSkpOwotICBFWFBFQ1RfRVEoMTIzLCBhLlBlcmZvcm0obWFrZV90dXBsZShTaG9ydCgx
MDApLCBDaGFyKDIwKSwgNS42LCBDaGFyKDMpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBXaXRo
QXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgdm9pZC4KLVRFU1QoV2l0aEFyZ3NUZXN0
LCBWb2lkQWN0aW9uKSB7Ci0gIEFjdGlvbjx2b2lkKGRvdWJsZSB4LCBjaGFyIGMsIGludCBuKT4g
YSA9IFdpdGhBcmdzPDIsIDE+KEludm9rZShWb2lkQmluYXJ5KSk7Ci0gIGdfZG9uZSA9IGZhbHNl
OwotICBhLlBlcmZvcm0obWFrZV90dXBsZSgxLjUsICdhJywgMykpOwotICBFWFBFQ1RfVFJVRShn
X2RvbmUpOwotfQotCi0vLyBUZXN0cyBEb0FsbChhMSwgYTIpLgotVEVTVChEb0FsbFRlc3QsIFR3
b0FjdGlvbnMpIHsKLSAgaW50IG4gPSAwOwotICBBY3Rpb248aW50KGludCopPiBhID0gRG9BbGwo
U2V0QXJnUG9pbnRlZTwwPigxKSwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmV0dXJuKDIpKTsKLSAgRVhQRUNUX0VRKDIsIGEuUGVyZm9ybShtYWtlX3R1cGxlKCZu
KSkpOwotICBFWFBFQ1RfRVEoMSwgbik7Ci19Ci0KLS8vIFRlc3RzIERvQWxsKGExLCBhMiwgYTMp
LgotVEVTVChEb0FsbFRlc3QsIFRocmVlQWN0aW9ucykgewotICBpbnQgbSA9IDAsIG4gPSAwOwot
ICBBY3Rpb248aW50KGludCosIGludCopPiBhID0gRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwg
IC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0QXJnUG9p
bnRlZTwxPigyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybigz
KSk7Ci0gIEVYUEVDVF9FUSgzLCBhLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4pKSk7Ci0gIEVY
UEVDVF9FUSgxLCBtKTsKLSAgRVhQRUNUX0VRKDIsIG4pOwotfQotCi0vLyBUZXN0cyBEb0FsbChh
MSwgYTIsIGEzLCBhNCkuCi1URVNUKERvQWxsVGVzdCwgRm91ckFjdGlvbnMpIHsKLSAgaW50IG0g
PSAwLCBuID0gMDsKLSAgY2hhciBjaCA9ICdcMCc7Ci0gIEFjdGlvbjxpbnQoaW50KiwgaW50Kiwg
Y2hhciopPiBhID0gIC8vIE5PTElOVAotICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwK
LSAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDI+KCdhJyksCi0gICAgICAgICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1RfRVEoMywgYS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoJm0sICZuLCAmY2gpKSk7Ci0gIEVYUEVDVF9FUSgxLCBtKTsKLSAg
RVhQRUNUX0VRKDIsIG4pOwotICBFWFBFQ1RfRVEoJ2EnLCBjaCk7Ci19Ci0KLS8vIFRlc3RzIERv
QWxsKGExLCBhMiwgYTMsIGE0LCBhNSkuCi1URVNUKERvQWxsVGVzdCwgRml2ZUFjdGlvbnMpIHsK
LSAgaW50IG0gPSAwLCBuID0gMDsKLSAgY2hhciBhID0gJ1wwJywgYiA9ICdcMCc7Ci0gIEFjdGlv
bjxpbnQoaW50KiwgaW50KiwgY2hhciosIGNoYXIqKT4gYWN0aW9uID0gIC8vIE5PTElOVAotICAg
ICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKLSAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8
MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCi0gICAgICAgICAgICBT
ZXRBcmdQb2ludGVlPDM+KCdiJyksCi0gICAgICAgICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1Rf
RVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYikpKTsKLSAgRVhQ
RUNUX0VRKDEsIG0pOwotICBFWFBFQ1RfRVEoMiwgbik7Ci0gIEVYUEVDVF9FUSgnYScsIGEpOwot
ICBFWFBFQ1RfRVEoJ2InLCBiKTsKLX0KLQotLy8gVGVzdHMgRG9BbGwoYTEsIGEyLCAuLi4sIGE2
KS4KLVRFU1QoRG9BbGxUZXN0LCBTaXhBY3Rpb25zKSB7Ci0gIGludCBtID0gMCwgbiA9IDA7Ci0g
IGNoYXIgYSA9ICdcMCcsIGIgPSAnXDAnLCBjID0gJ1wwJzsKLSAgQWN0aW9uPGludChpbnQqLCBp
bnQqLCBjaGFyKiwgY2hhciosIGNoYXIqKT4gYWN0aW9uID0gIC8vIE5PTElOVAotICAgICAgRG9B
bGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKLSAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiks
Ci0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCi0gICAgICAgICAgICBTZXRBcmdQ
b2ludGVlPDM+KCdiJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCi0gICAg
ICAgICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90
dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMpKSk7Ci0gIEVYUEVDVF9FUSgxLCBtKTsKLSAgRVhQRUNU
X0VRKDIsIG4pOwotICBFWFBFQ1RfRVEoJ2EnLCBhKTsKLSAgRVhQRUNUX0VRKCdiJywgYik7Ci0g
IEVYUEVDVF9FUSgnYycsIGMpOwotfQotCi0vLyBUZXN0cyBEb0FsbChhMSwgYTIsIC4uLiwgYTcp
LgotVEVTVChEb0FsbFRlc3QsIFNldmVuQWN0aW9ucykgewotICBpbnQgbSA9IDAsIG4gPSAwOwot
ICBjaGFyIGEgPSAnXDAnLCBiID0gJ1wwJywgYyA9ICdcMCcsIGQgPSAnXDAnOwotICBBY3Rpb248
aW50KGludCosIGludCosIGNoYXIqLCBjaGFyKiwgY2hhciosIGNoYXIqKT4gYWN0aW9uID0gIC8v
IE5PTElOVAotICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKLSAgICAgICAgICAgIFNl
dEFyZ1BvaW50ZWU8MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCi0g
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCi0gICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDQ+KCdjJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCi0gICAgICAg
ICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBs
ZSgmbSwgJm4sICZhLCAmYiwgJmMsICZkKSkpOwotICBFWFBFQ1RfRVEoMSwgbSk7Ci0gIEVYUEVD
VF9FUSgyLCBuKTsKLSAgRVhQRUNUX0VRKCdhJywgYSk7Ci0gIEVYUEVDVF9FUSgnYicsIGIpOwot
ICBFWFBFQ1RfRVEoJ2MnLCBjKTsKLSAgRVhQRUNUX0VRKCdkJywgZCk7Ci19Ci0KLS8vIFRlc3Rz
IERvQWxsKGExLCBhMiwgLi4uLCBhOCkuCi1URVNUKERvQWxsVGVzdCwgRWlnaHRBY3Rpb25zKSB7
Ci0gIGludCBtID0gMCwgbiA9IDA7Ci0gIGNoYXIgYSA9ICdcMCcsIGIgPSAnXDAnLCBjID0gJ1ww
JywgZCA9ICdcMCcsIGUgPSAnXDAnOwotICBBY3Rpb248aW50KGludCosIGludCosIGNoYXIqLCBj
aGFyKiwgY2hhciosIGNoYXIqLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgY2hhciopPiBhY3Rp
b24gPQotICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKLSAgICAgICAgICAgIFNldEFy
Z1BvaW50ZWU8MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdhJyksCi0gICAg
ICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVl
PDQ+KCdjJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCi0gICAgICAgICAg
ICBTZXRBcmdQb2ludGVlPDY+KCdlJyksCi0gICAgICAgICAgICBSZXR1cm4oMykpOwotICBFWFBF
Q1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMsICZk
LCAmZSkpKTsKLSAgRVhQRUNUX0VRKDEsIG0pOwotICBFWFBFQ1RfRVEoMiwgbik7Ci0gIEVYUEVD
VF9FUSgnYScsIGEpOwotICBFWFBFQ1RfRVEoJ2InLCBiKTsKLSAgRVhQRUNUX0VRKCdjJywgYyk7
Ci0gIEVYUEVDVF9FUSgnZCcsIGQpOwotICBFWFBFQ1RfRVEoJ2UnLCBlKTsKLX0KLQotLy8gVGVz
dHMgRG9BbGwoYTEsIGEyLCAuLi4sIGE5KS4KLVRFU1QoRG9BbGxUZXN0LCBOaW5lQWN0aW9ucykg
ewotICBpbnQgbSA9IDAsIG4gPSAwOwotICBjaGFyIGEgPSAnXDAnLCBiID0gJ1wwJywgYyA9ICdc
MCcsIGQgPSAnXDAnLCBlID0gJ1wwJywgZiA9ICdcMCc7Ci0gIEFjdGlvbjxpbnQoaW50KiwgaW50
KiwgY2hhciosIGNoYXIqLCBjaGFyKiwgY2hhciosICAvLyBOT0xJTlQKLSAgICAgICAgICAgICBj
aGFyKiwgY2hhciopPiBhY3Rpb24gPQotICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwK
LSAgICAgICAgICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDI+KCdhJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCi0gICAgICAg
ICAgICBTZXRBcmdQb2ludGVlPDQ+KCdjJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+
KCdkJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDY+KCdlJyksCi0gICAgICAgICAgICBT
ZXRBcmdQb2ludGVlPDc+KCdmJyksCi0gICAgICAgICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1Rf
RVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBsZSgmbSwgJm4sICZhLCAmYiwgJmMsICZkLCAm
ZSwgJmYpKSk7Ci0gIEVYUEVDVF9FUSgxLCBtKTsKLSAgRVhQRUNUX0VRKDIsIG4pOwotICBFWFBF
Q1RfRVEoJ2EnLCBhKTsKLSAgRVhQRUNUX0VRKCdiJywgYik7Ci0gIEVYUEVDVF9FUSgnYycsIGMp
OwotICBFWFBFQ1RfRVEoJ2QnLCBkKTsKLSAgRVhQRUNUX0VRKCdlJywgZSk7Ci0gIEVYUEVDVF9F
USgnZicsIGYpOwotfQotCi0vLyBUZXN0cyBEb0FsbChhMSwgYTIsIC4uLiwgYTEwKS4KLVRFU1Qo
RG9BbGxUZXN0LCBUZW5BY3Rpb25zKSB7Ci0gIGludCBtID0gMCwgbiA9IDA7Ci0gIGNoYXIgYSA9
ICdcMCcsIGIgPSAnXDAnLCBjID0gJ1wwJywgZCA9ICdcMCc7Ci0gIGNoYXIgZSA9ICdcMCcsIGYg
PSAnXDAnLCBnID0gJ1wwJzsKLSAgQWN0aW9uPGludChpbnQqLCBpbnQqLCBjaGFyKiwgY2hhcios
IGNoYXIqLCBjaGFyKiwgIC8vIE5PTElOVAotICAgICAgICAgICAgIGNoYXIqLCBjaGFyKiwgY2hh
ciopPiBhY3Rpb24gPQotICAgICAgRG9BbGwoU2V0QXJnUG9pbnRlZTwwPigxKSwKLSAgICAgICAg
ICAgIFNldEFyZ1BvaW50ZWU8MT4oMiksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDI+KCdh
JyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDM+KCdiJyksCi0gICAgICAgICAgICBTZXRB
cmdQb2ludGVlPDQ+KCdjJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDU+KCdkJyksCi0g
ICAgICAgICAgICBTZXRBcmdQb2ludGVlPDY+KCdlJyksCi0gICAgICAgICAgICBTZXRBcmdQb2lu
dGVlPDc+KCdmJyksCi0gICAgICAgICAgICBTZXRBcmdQb2ludGVlPDg+KCdnJyksCi0gICAgICAg
ICAgICBSZXR1cm4oMykpOwotICBFWFBFQ1RfRVEoMywgYWN0aW9uLlBlcmZvcm0obWFrZV90dXBs
ZSgmbSwgJm4sICZhLCAmYiwgJmMsICZkLCAmZSwgJmYsICZnKSkpOwotICBFWFBFQ1RfRVEoMSwg
bSk7Ci0gIEVYUEVDVF9FUSgyLCBuKTsKLSAgRVhQRUNUX0VRKCdhJywgYSk7Ci0gIEVYUEVDVF9F
USgnYicsIGIpOwotICBFWFBFQ1RfRVEoJ2MnLCBjKTsKLSAgRVhQRUNUX0VRKCdkJywgZCk7Ci0g
IEVYUEVDVF9FUSgnZScsIGUpOwotICBFWFBFQ1RfRVEoJ2YnLCBmKTsKLSAgRVhQRUNUX0VRKCdn
JywgZyk7Ci19Ci0KLS8vIFRoZSBBQ1RJT04qKCkgbWFjcm9zIHRyaWdnZXIgd2FybmluZyBDNDEw
MCAodW5yZWZlcmVuY2VkIGZvcm1hbAotLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdpdGggLVc0LiAg
VW5mb3J0dW5hdGVseSB0aGV5IGNhbm5vdCBiZSBmaXhlZCBpbgotLy8gdGhlIG1hY3JvIGRlZmlu
aXRpb24sIGFzIHRoZSB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1hY3JvCi0vLyBp
cyBleHBhbmRlZCBhbmQgbWFjcm8gZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNwcmFnbWEuICBU
aGVyZWZvcmUKLS8vIHdlIHN1cHByZXNzIHRoZW0gaGVyZS4KLSNpZmRlZiBfTVNDX1ZFUgotIyBw
cmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5k
aWYKLQotLy8gVGVzdHMgdGhlIEFDVElPTiooKSBtYWNybyBmYW1pbHkuCi0KLS8vIFRlc3RzIHRo
YXQgQUNUSU9OKCkgY2FuIGRlZmluZSBhbiBhY3Rpb24gdGhhdCBkb2Vzbid0IHJlZmVyZW5jZSB0
aGUKLS8vIG1vY2sgZnVuY3Rpb24gYXJndW1lbnRzLgotQUNUSU9OKFJldHVybjUpIHsgcmV0dXJu
IDU7IH0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzV2hlbk5vdFJlZmVyZW5jaW5nQXJn
dW1lbnRzKSB7Ci0gIEFjdGlvbjxkb3VibGUoKT4gYTEgPSBSZXR1cm41KCk7Ci0gIEVYUEVDVF9E
T1VCTEVfRVEoNSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICBBY3Rpb248aW50KGRv
dWJsZSwgYm9vbCk+IGEyID0gUmV0dXJuNSgpOwotICBFWFBFQ1RfRVEoNSwgYTIuUGVyZm9ybSht
YWtlX3R1cGxlKDEsIHRydWUpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OKCkgY2FuIGRl
ZmluZSBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIHZvaWQuCi1BQ1RJT04oSW5jcmVtZW50QXJnMSkg
eyAoKmFyZzEpKys7IH0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzV2hlblJldHVybmlu
Z1ZvaWQpIHsKLSAgQWN0aW9uPHZvaWQoaW50LCBpbnQqKT4gYTEgPSBJbmNyZW1lbnRBcmcxKCk7
Ci0gIGludCBuID0gMDsKLSAgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDUsICZuKSk7Ci0gIEVYUEVD
VF9FUSgxLCBuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgYm9keSBvZiBBQ1RJT04oKSBjYW4g
cmVmZXJlbmNlIHRoZSB0eXBlIG9mIHRoZQotLy8gYXJndW1lbnQuCi1BQ1RJT04oSW5jcmVtZW50
QXJnMikgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50KiwgYXJnMl90eXBlPigpOwotICBhcmcy
X3R5cGUgdGVtcCA9IGFyZzI7Ci0gICgqdGVtcCkrKzsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rl
c3QsIENhblJlZmVyZW5jZUFyZ3VtZW50VHlwZSkgewotICBBY3Rpb248dm9pZChpbnQsIGJvb2ws
IGludCopPiBhMSA9IEluY3JlbWVudEFyZzIoKTsKLSAgaW50IG4gPSAwOwotICBhMS5QZXJmb3Jt
KG1ha2VfdHVwbGUoNSwgZmFsc2UsICZuKSk7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgYm9keSBvZiBBQ1RJT04oKSBjYW4gcmVmZXJlbmNlIHRoZSBhcmd1bWVu
dCB0dXBsZQotLy8gdmlhIGFyZ3NfdHlwZSBhbmQgYXJncy4KLUFDVElPTihTdW0yKSB7Ci0gIFN0
YXRpY0Fzc2VydFR5cGVFcTx0dXBsZTxpbnQsIGNoYXIsIGludCo+LCBhcmdzX3R5cGU+KCk7Ci0g
IGFyZ3NfdHlwZSBhcmdzX2NvcHkgPSBhcmdzOwotICByZXR1cm4gZ2V0PDA+KGFyZ3NfY29weSkg
KyBnZXQ8MT4oYXJnc19jb3B5KTsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIENhblJlZmVy
ZW5jZUFyZ3VtZW50VHVwbGUpIHsKLSAgQWN0aW9uPGludChpbnQsIGNoYXIsIGludCopPiBhMSA9
IFN1bTIoKTsKLSAgaW50IGR1bW15ID0gMDsKLSAgRVhQRUNUX0VRKDExLCBhMS5QZXJmb3JtKG1h
a2VfdHVwbGUoNSwgQ2hhcig2KSwgJmR1bW15KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBi
b2R5IG9mIEFDVElPTigpIGNhbiByZWZlcmVuY2UgdGhlIG1vY2sgZnVuY3Rpb24KLS8vIHR5cGUu
Ci1pbnQgRHVtbXkoYm9vbCBmbGFnKSB7IHJldHVybiBmbGFnPyAxIDogMDsgfQotCi1BQ1RJT04o
SW52b2tlRHVtbXkpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludChib29sKSwgZnVuY3Rpb25f
dHlwZT4oKTsKLSAgZnVuY3Rpb25fdHlwZSogZnAgPSAmRHVtbXk7Ci0gIHJldHVybiAoKmZwKSh0
cnVlKTsKLX0KLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIENhblJlZmVyZW5jZU1vY2tGdW5jdGlv
blR5cGUpIHsKLSAgQWN0aW9uPGludChib29sKT4gYTEgPSBJbnZva2VEdW1teSgpOwotICBFWFBF
Q1RfRVEoMSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUpKSk7Ci0gIEVYUEVDVF9FUSgxLCBh
MS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGJv
ZHkgb2YgQUNUSU9OKCkgY2FuIHJlZmVyZW5jZSB0aGUgbW9jayBmdW5jdGlvbidzCi0vLyByZXR1
cm4gdHlwZS4KLUFDVElPTihJbnZva2VEdW1teTIpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGlu
dCwgcmV0dXJuX3R5cGU+KCk7Ci0gIHJldHVybl90eXBlIHJlc3VsdCA9IER1bW15KHRydWUpOwot
ICByZXR1cm4gcmVzdWx0OwotfQotCi1URVNUKEFjdGlvbk1hY3JvVGVzdCwgQ2FuUmVmZXJlbmNl
TW9ja0Z1bmN0aW9uUmV0dXJuVHlwZSkgewotICBBY3Rpb248aW50KGJvb2wpPiBhMSA9IEludm9r
ZUR1bW15MigpOwotICBFWFBFQ1RfRVEoMSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUpKSk7
Ci0gIEVYUEVDVF9FUSgxLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UpKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgQUNUSU9OKCkgd29ya3MgZm9yIGFyZ3VtZW50cyBwYXNzZWQgYnkgY29uc3Qg
cmVmZXJlbmNlLgotQUNUSU9OKFJldHVybkFkZHJPZkNvbnN0Qm9vbFJlZmVyZW5jZUFyZykgewot
ICBTdGF0aWNBc3NlcnRUeXBlRXE8Y29uc3QgYm9vbCYsIGFyZzFfdHlwZT4oKTsKLSAgcmV0dXJu
ICZhcmcxOwotfQotCi1URVNUKEFjdGlvbk1hY3JvVGVzdCwgV29ya3NGb3JDb25zdFJlZmVyZW5j
ZUFyZykgewotICBBY3Rpb248Y29uc3QgYm9vbCooaW50LCBjb25zdCBib29sJik+IGEgPSBSZXR1
cm5BZGRyT2ZDb25zdEJvb2xSZWZlcmVuY2VBcmcoKTsKLSAgY29uc3QgYm9vbCBiID0gZmFsc2U7
Ci0gIEVYUEVDVF9FUSgmYiwgYS5QZXJmb3JtKHR1cGxlPGludCwgY29uc3QgYm9vbCY+KDAsIGIp
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OKCkgd29ya3MgZm9yIGFyZ3VtZW50cyBwYXNz
ZWQgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZS4KLUFDVElPTihSZXR1cm5BZGRyT2ZJbnRSZWZlcmVu
Y2VBcmcpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCYsIGFyZzBfdHlwZT4oKTsKLSAgcmV0
dXJuICZhcmcwOwotfQotCi1URVNUKEFjdGlvbk1hY3JvVGVzdCwgV29ya3NGb3JOb25Db25zdFJl
ZmVyZW5jZUFyZykgewotICBBY3Rpb248aW50KihpbnQmLCBib29sLCBpbnQpPiBhID0gUmV0dXJu
QWRkck9mSW50UmVmZXJlbmNlQXJnKCk7Ci0gIGludCBuID0gMDsKLSAgRVhQRUNUX0VRKCZuLCBh
LlBlcmZvcm0odHVwbGU8aW50JiwgYm9vbCwgaW50PihuLCB0cnVlLCAxKSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEFDVElPTigpIGNhbiBiZSB1c2VkIGluIGEgbmFtZXNwYWNlLgotbmFtZXNwYWNl
IGFjdGlvbl90ZXN0IHsKLUFDVElPTihTdW0pIHsgcmV0dXJuIGFyZzAgKyBhcmcxOyB9Ci19ICAv
LyBuYW1lc3BhY2UgYWN0aW9uX3Rlc3QKLQotVEVTVChBY3Rpb25NYWNyb1Rlc3QsIFdvcmtzSW5O
YW1lc3BhY2UpIHsKLSAgQWN0aW9uPGludChpbnQsIGludCk+IGExID0gYWN0aW9uX3Rlc3Q6OlN1
bSgpOwotICBFWFBFQ1RfRVEoMywgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDEsIDIpKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgQUNUSU9OIGRlZmluaXRpb24gd29ya3MgZm9yIG1vY2sg
ZnVuY3Rpb25zIHdpdGgKLS8vIGRpZmZlcmVudCBhcmd1bWVudCBudW1iZXJzLgotQUNUSU9OKFBs
dXNUd28pIHsgcmV0dXJuIGFyZzAgKyAyOyB9Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBXb3Jr
c0ZvckRpZmZlcmVudEFyZ3VtZW50TnVtYmVycykgewotICBBY3Rpb248aW50KGludCk+IGExID0g
UGx1c1R3bygpOwotICBFWFBFQ1RfRVEoNCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDIpKSk7Ci0K
LSAgQWN0aW9uPGRvdWJsZShmbG9hdCwgdm9pZCopPiBhMiA9IFBsdXNUd28oKTsKLSAgaW50IGR1
bW15OwotICBFWFBFQ1RfRE9VQkxFX0VRKDYsIGEyLlBlcmZvcm0obWFrZV90dXBsZSg0LjBmLCAm
ZHVtbXkpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OX1AgY2FuIGRlZmluZSBhIHBhcmFt
ZXRlcml6ZWQgYWN0aW9uLgotQUNUSU9OX1AoUGx1cywgbikgeyByZXR1cm4gYXJnMCArIG47IH0K
LQotVEVTVChBY3Rpb25QTWFjcm9UZXN0LCBEZWZpbmVzUGFyYW1ldGVyaXplZEFjdGlvbikgewot
ICBBY3Rpb248aW50KGludCBtLCBib29sIHQpPiBhMSA9IFBsdXMoOSk7Ci0gIEVYUEVDVF9FUSgx
MCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKDEsIHRydWUpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
dGhlIGJvZHkgb2YgQUNUSU9OX1AgY2FuIHJlZmVyZW5jZSB0aGUgYXJndW1lbnQgdHlwZXMKLS8v
IGFuZCB0aGUgcGFyYW1ldGVyIHR5cGUuCi1BQ1RJT05fUChUeXBlZFBsdXMsIG4pIHsKLSAgYXJn
MF90eXBlIHQxID0gYXJnMDsKLSAgbl90eXBlIHQyID0gbjsKLSAgcmV0dXJuIHQxICsgdDI7Ci19
Ci0KLVRFU1QoQWN0aW9uUE1hY3JvVGVzdCwgQ2FuUmVmZXJlbmNlQXJndW1lbnRBbmRQYXJhbWV0
ZXJUeXBlcykgewotICBBY3Rpb248aW50KGNoYXIgbSwgYm9vbCB0KT4gYTEgPSBUeXBlZFBsdXMo
OSk7Ci0gIEVYUEVDVF9FUSgxMCwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXIoMSksIHRydWUp
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIGFjdGlvbiBjYW4gYmUgdXNl
ZCBpbiBhbnkgbW9jayBmdW5jdGlvbgotLy8gd2hvc2UgdHlwZSBpcyBjb21wYXRpYmxlLgotVEVT
VChBY3Rpb25QTWFjcm9UZXN0LCBXb3Jrc0luQ29tcGF0aWJsZU1vY2tGdW5jdGlvbikgewotICBB
Y3Rpb248c3RkOjpzdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpPiBhMSA9IFBsdXMoInRhaWwi
KTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcmUgPSAicmUiOwotICBFWFBFQ1RfRVEoInJldGFpbCIs
IGExLlBlcmZvcm0odHVwbGU8Y29uc3Qgc3RkOjpzdHJpbmcmPihyZSkpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB3ZSBjYW4gdXNlIEFDVElPTiooKSB0byBkZWZpbmUgYWN0aW9ucyBvdmVybG9hZGVk
IG9uIHRoZQotLy8gbnVtYmVyIG9mIHBhcmFtZXRlcnMuCi0KLUFDVElPTihPdmVybG9hZGVkQWN0
aW9uKSB7IHJldHVybiBhcmcwID8gYXJnMSA6ICJoZWxsbyI7IH0KLQotQUNUSU9OX1AoT3Zlcmxv
YWRlZEFjdGlvbiwgZGVmYXVsdF92YWx1ZSkgewotICByZXR1cm4gYXJnMCA/IGFyZzEgOiBkZWZh
dWx0X3ZhbHVlOwotfQotCi1BQ1RJT05fUDIoT3ZlcmxvYWRlZEFjdGlvbiwgdHJ1ZV92YWx1ZSwg
ZmFsc2VfdmFsdWUpIHsKLSAgcmV0dXJuIGFyZzAgPyB0cnVlX3ZhbHVlIDogZmFsc2VfdmFsdWU7
Ci19Ci0KLVRFU1QoQWN0aW9uTWFjcm9UZXN0LCBDYW5EZWZpbmVPdmVybG9hZGVkQWN0aW9ucykg
ewotICB0eXBlZGVmIEFjdGlvbjxjb25zdCBjaGFyKihib29sLCBjb25zdCBjaGFyKik+IE15QWN0
aW9uOwotCi0gIGNvbnN0IE15QWN0aW9uIGExID0gT3ZlcmxvYWRlZEFjdGlvbigpOwotICBFWFBF
Q1RfU1RSRVEoImhlbGxvIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKGZhbHNlLCBDaGFyUHRyKCJ3
b3JsZCIpKSkpOwotICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgYTEuUGVyZm9ybShtYWtlX3R1cGxl
KHRydWUsIENoYXJQdHIoIndvcmxkIikpKSk7Ci0KLSAgY29uc3QgTXlBY3Rpb24gYTIgPSBPdmVy
bG9hZGVkQWN0aW9uKCJoaSIpOwotICBFWFBFQ1RfU1RSRVEoImhpIiwgYTIuUGVyZm9ybShtYWtl
X3R1cGxlKGZhbHNlLCBDaGFyUHRyKCJ3b3JsZCIpKSkpOwotICBFWFBFQ1RfU1RSRVEoIndvcmxk
IiwgYTIuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIENoYXJQdHIoIndvcmxkIikpKSk7Ci0KLSAg
Y29uc3QgTXlBY3Rpb24gYTMgPSBPdmVybG9hZGVkQWN0aW9uKCJoaSIsICJ5b3UiKTsKLSAgRVhQ
RUNUX1NUUkVRKCJoaSIsIGEzLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBDaGFyUHRyKCJ3b3Js
ZCIpKSkpOwotICBFWFBFQ1RfU1RSRVEoInlvdSIsIGEzLlBlcmZvcm0obWFrZV90dXBsZShmYWxz
ZSwgQ2hhclB0cigid29ybGQiKSkpKTsKLX0KLQotLy8gVGVzdHMgQUNUSU9OX1BuIHdoZXJlIG4g
Pj0gMy4KLQotQUNUSU9OX1AzKFBsdXMsIG0sIG4sIGspIHsgcmV0dXJuIGFyZzAgKyBtICsgbiAr
IGs7IH0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVzdCwgV29ya3NGb3IzUGFyYW1ldGVycykgewot
ICBBY3Rpb248ZG91YmxlKGludCBtLCBib29sIHQpPiBhMSA9IFBsdXMoMTAwLCAyMCwgMy40KTsK
LSAgRVhQRUNUX0RPVUJMRV9FUSgzMTIzLjQsIGExLlBlcmZvcm0obWFrZV90dXBsZSgzMDAwLCB0
cnVlKSkpOwotCi0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgcyk+IGEy
ID0gUGx1cygidGFpbCIsICItIiwgIj4iKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcmUgPSAicmUi
OwotICBFWFBFQ1RfRVEoInJldGFpbC0+IiwgYTIuUGVyZm9ybSh0dXBsZTxjb25zdCBzdGQ6OnN0
cmluZyY+KHJlKSkpOwotfQotCi1BQ1RJT05fUDQoUGx1cywgcDAsIHAxLCBwMiwgcDMpIHsgcmV0
dXJuIGFyZzAgKyBwMCArIHAxICsgcDIgKyBwMzsgfQotCi1URVNUKEFjdGlvblBuTWFjcm9UZXN0
LCBXb3Jrc0ZvcjRQYXJhbWV0ZXJzKSB7Ci0gIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEs
IDIsIDMsIDQpOwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0LCBhMS5QZXJmb3JtKG1h
a2VfdHVwbGUoMTApKSk7Ci19Ci0KLUFDVElPTl9QNShQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQp
IHsgcmV0dXJuIGFyZzAgKyBwMCArIHAxICsgcDIgKyBwMyArIHA0OyB9Ci0KLVRFU1QoQWN0aW9u
UG5NYWNyb1Rlc3QsIFdvcmtzRm9yNVBhcmFtZXRlcnMpIHsKLSAgQWN0aW9uPGludChpbnQpPiBh
MSA9IFBsdXMoMSwgMiwgMywgNCwgNSk7Ci0gIEVYUEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQg
KyA1LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoMTApKSk7Ci19Ci0KLUFDVElPTl9QNihQbHVzLCBw
MCwgcDEsIHAyLCBwMywgcDQsIHA1KSB7Ci0gIHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAyICsg
cDMgKyBwNCArIHA1OwotfQotCi1URVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jrc0ZvcjZQYXJh
bWV0ZXJzKSB7Ci0gIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVzKDEsIDIsIDMsIDQsIDUsIDYp
OwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMgKyA0ICsgNSArIDYsIGExLlBlcmZvcm0obWFr
ZV90dXBsZSgxMCkpKTsKLX0KLQotQUNUSU9OX1A3KFBsdXMsIHAwLCBwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2KSB7Ci0gIHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAyICsgcDMgKyBwNCArIHA1ICsg
cDY7Ci19Ci0KLVRFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIFdvcmtzRm9yN1BhcmFtZXRlcnMpIHsK
LSAgQWN0aW9uPGludChpbnQpPiBhMSA9IFBsdXMoMSwgMiwgMywgNCwgNSwgNiwgNyk7Ci0gIEVY
UEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQgKyA1ICsgNiArIDcsIGExLlBlcmZvcm0obWFrZV90
dXBsZSgxMCkpKTsKLX0KLQotQUNUSU9OX1A4KFBsdXMsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBwNykgewotICByZXR1cm4gYXJnMCArIHAwICsgcDEgKyBwMiArIHAzICsgcDQgKyBwNSAr
IHA2ICsgcDc7Ci19Ci0KLVRFU1QoQWN0aW9uUG5NYWNyb1Rlc3QsIFdvcmtzRm9yOFBhcmFtZXRl
cnMpIHsKLSAgQWN0aW9uPGludChpbnQpPiBhMSA9IFBsdXMoMSwgMiwgMywgNCwgNSwgNiwgNywg
OCk7Ci0gIEVYUEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQgKyA1ICsgNiArIDcgKyA4LCBhMS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoMTApKSk7Ci19Ci0KLUFDVElPTl9QOShQbHVzLCBwMCwgcDEsIHAy
LCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4KSB7Ci0gIHJldHVybiBhcmcwICsgcDAgKyBwMSArIHAy
ICsgcDMgKyBwNCArIHA1ICsgcDYgKyBwNyArIHA4OwotfQotCi1URVNUKEFjdGlvblBuTWFjcm9U
ZXN0LCBXb3Jrc0ZvcjlQYXJhbWV0ZXJzKSB7Ci0gIEFjdGlvbjxpbnQoaW50KT4gYTEgPSBQbHVz
KDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpOwotICBFWFBFQ1RfRVEoMTAgKyAxICsgMiArIDMg
KyA0ICsgNSArIDYgKyA3ICsgOCArIDksIGExLlBlcmZvcm0obWFrZV90dXBsZSgxMCkpKTsKLX0K
LQotQUNUSU9OX1AxMChQbHVzLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBs
YXN0X3BhcmFtKSB7Ci0gIGFyZzBfdHlwZSB0MCA9IGFyZzA7Ci0gIGxhc3RfcGFyYW1fdHlwZSB0
OSA9IGxhc3RfcGFyYW07Ci0gIHJldHVybiB0MCArIHAwICsgcDEgKyBwMiArIHAzICsgcDQgKyBw
NSArIHA2ICsgcDcgKyBwOCArIHQ5OwotfQotCi1URVNUKEFjdGlvblBuTWFjcm9UZXN0LCBXb3Jr
c0ZvcjEwUGFyYW1ldGVycykgewotICBBY3Rpb248aW50KGludCk+IGExID0gUGx1cygxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5LCAxMCk7Ci0gIEVYUEVDVF9FUSgxMCArIDEgKyAyICsgMyArIDQg
KyA1ICsgNiArIDcgKyA4ICsgOSArIDEwLAotICAgICAgICAgICAgYTEuUGVyZm9ybShtYWtlX3R1
cGxlKDEwKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBhY3Rpb24gYm9keSBjYW4gcHJvbW90
ZSB0aGUgcGFyYW1ldGVyIHR5cGVzLgotCi1BQ1RJT05fUDIoUGFkQXJndW1lbnQsIHByZWZpeCwg
c3VmZml4KSB7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgcHJvbW90ZSB0aGUgdHdvIHBhcmFt
ZXRlcnMgdG8gZGVzaXJlZCB0eXBlcy4KLSAgc3RkOjpzdHJpbmcgcHJlZml4X3N0cihwcmVmaXgp
OwotICBjaGFyIHN1ZmZpeF9jaGFyID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3VmZml4KTsKLSAgcmV0
dXJuIHByZWZpeF9zdHIgKyBhcmcwICsgc3VmZml4X2NoYXI7Ci19Ci0KLVRFU1QoQWN0aW9uUG5N
YWNyb1Rlc3QsIFNpbXBsZVR5cGVQcm9tb3Rpb24pIHsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNv
bnN0IGNoYXIqKT4gbm9fcHJvbW8gPQotICAgICAgUGFkQXJndW1lbnQoc3RkOjpzdHJpbmcoImZv
byIpLCAncicpOwotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciopPiBwcm9tbyA9Ci0g
ICAgICBQYWRBcmd1bWVudCgiZm9vIiwgc3RhdGljX2Nhc3Q8aW50PigncicpKTsKLSAgRVhQRUNU
X0VRKCJmb29iYXIiLCBub19wcm9tby5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiYmEiKSkp
KTsKLSAgRVhQRUNUX0VRKCJmb29iYXIiLCBwcm9tby5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0
cigiYmEiKSkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gcGFydGlhbGx5IHJlc3RyaWN0
IHBhcmFtZXRlciB0eXBlcyB1c2luZyBhCi0vLyBzdHJhaWdodC1mb3J3YXJkIHBhdHRlcm4uCi0K
LS8vIERlZmluZXMgYSBnZW5lcmljIGFjdGlvbiB0aGF0IGRvZXNuJ3QgcmVzdHJpY3QgdGhlIHR5
cGVzIG9mIGl0cwotLy8gcGFyYW1ldGVycy4KLUFDVElPTl9QMyhDb25jYXRJbXBsLCBhLCBiLCBj
KSB7Ci0gIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBhIDw8IGIgPDwgYzsKLSAgcmV0
dXJuIHNzLnN0cigpOwotfQotCi0vLyBOZXh0LCB3ZSB0cnkgdG8gcmVzdHJpY3QgdGhhdCBlaXRo
ZXIgdGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhCi0vLyBzdHJpbmcsIG9yIHRoZSBzZWNvbmQgcGFy
YW1ldGVyIGlzIGFuIGludC4KLQotLy8gRGVmaW5lcyBhIHBhcnRpYWxseSBzcGVjaWFsaXplZCB3
cmFwcGVyIHRoYXQgcmVzdHJpY3RzIHRoZSBmaXJzdAotLy8gcGFyYW1ldGVyIHRvIHN0ZDo6c3Ry
aW5nLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLS8vIENvbmNhdEltcGxB
Y3Rpb25QMyBpcyB0aGUgY2xhc3MgdGVtcGxhdGUgQUNUSU9OX1AzIHVzZXMgdG8KLS8vIGltcGxl
bWVudCBDb25jYXRJbXBsLiAgV2Ugc2hvdWxkbid0IGNoYW5nZSB0aGUgbmFtZSBhcyB0aGlzCi0v
LyBwYXR0ZXJuIHJlcXVpcmVzIHRoZSB1c2VyIHRvIHVzZSBpdCBkaXJlY3RseS4KLUNvbmNhdElt
cGxBY3Rpb25QMzxzdGQ6OnN0cmluZywgVDEsIFQyPgotQ29uY2F0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBhLCBUMSBiLCBUMiBjKSB7Ci0gIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8o
KQotICBpZiAodHJ1ZSkgewotICBHVEVTVF9JTlRFTlRJT05BTF9DT05TVF9DT05EX1BPUF8oKQot
ICAgIC8vIFRoaXMgYnJhbmNoIHZlcmlmaWVzIHRoYXQgQ29uY2F0SW1wbCgpIGNhbiBiZSBpbnZv
a2VkIHdpdGhvdXQKLSAgICAvLyBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudHMuCi0gICAgcmV0
dXJuIENvbmNhdEltcGwoYSwgYiwgYyk7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gVGhpcyBicmFuY2gg
dmVyaWZpZXMgdGhhdCBDb25jYXRJbXBsKCkgY2FuIGFsc28gYmUgaW52b2tlZCB3aXRoCi0gICAg
Ly8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnRzLiAgSXQgZG9lc24ndCByZWFsbHkgbmVlZCB0
byBiZQotICAgIC8vIGV4ZWN1dGVkIGFzIHRoaXMgaXMgYSBjb21waWxlLXRpbWUgdmVyaWZpY2F0
aW9uLgotICAgIHJldHVybiBDb25jYXRJbXBsPHN0ZDo6c3RyaW5nLCBUMSwgVDI+KGEsIGIsIGMp
OwotICB9Ci19Ci0KLS8vIERlZmluZXMgYW5vdGhlciBwYXJ0aWFsbHkgc3BlY2lhbGl6ZWQgd3Jh
cHBlciB0aGF0IHJlc3RyaWN0cyB0aGUKLS8vIHNlY29uZCBwYXJhbWV0ZXIgdG8gaW50LgotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLUNvbmNhdEltcGxBY3Rpb25QMzxUMSwg
aW50LCBUMj4KLUNvbmNhdChUMSBhLCBpbnQgYiwgVDIgYykgewotICByZXR1cm4gQ29uY2F0SW1w
bChhLCBiLCBjKTsKLX0KLQotVEVTVChBY3Rpb25Qbk1hY3JvVGVzdCwgQ2FuUGFydGlhbGx5UmVz
dHJpY3RQYXJhbWV0ZXJUeXBlcykgewotICBBY3Rpb248Y29uc3Qgc3RkOjpzdHJpbmcoKT4gYTEg
PSBDb25jYXQoIkhlbGxvIiwgIjEiLCAyKTsKLSAgRVhQRUNUX0VRKCJIZWxsbzEyIiwgYTEuUGVy
Zm9ybShtYWtlX3R1cGxlKCkpKTsKLQotICBhMSA9IENvbmNhdCgxLCAyLCAzKTsKLSAgRVhQRUNU
X0VRKCIxMjMiLCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotfQotCi0vLyBWZXJpZmllcyB0
aGUgdHlwZSBvZiBhbiBBQ1RJT04qLgotCi1BQ1RJT04oRG9Gb28pIHt9Ci1BQ1RJT05fUChEb0Zv
bywgcCkge30KLUFDVElPTl9QMihEb0ZvbywgcDAsIHAxKSB7fQotCi1URVNUKEFjdGlvblBuTWFj
cm9UZXN0LCBUeXBlc0FyZUNvcnJlY3QpIHsKLSAgLy8gRG9Gb28oKSBtdXN0IGJlIGFzc2lnbmFi
bGUgdG8gYSBEb0Zvb0FjdGlvbiB2YXJpYWJsZS4KLSAgRG9Gb29BY3Rpb24gYTAgPSBEb0Zvbygp
OwotCi0gIC8vIERvRm9vKDEpIG11c3QgYmUgYXNzaWduYWJsZSB0byBhIERvRm9vQWN0aW9uUCB2
YXJpYWJsZS4KLSAgRG9Gb29BY3Rpb25QPGludD4gYTEgPSBEb0ZvbygxKTsKLQotICAvLyBEb0Zv
byhwMSwgLi4uLCBwaykgbXVzdCBiZSBhc3NpZ25hYmxlIHRvIGEgRG9Gb29BY3Rpb25QawotICAv
LyB2YXJpYWJsZSwgYW5kIHNvIG9uLgotICBEb0Zvb0FjdGlvblAyPGludCwgY2hhcj4gYTIgPSBE
b0ZvbygxLCAnMicpOwotICBQbHVzQWN0aW9uUDM8aW50LCBpbnQsIGNoYXI+IGEzID0gUGx1cygx
LCAyLCAnMycpOwotICBQbHVzQWN0aW9uUDQ8aW50LCBpbnQsIGludCwgY2hhcj4gYTQgPSBQbHVz
KDEsIDIsIDMsICc0Jyk7Ci0gIFBsdXNBY3Rpb25QNTxpbnQsIGludCwgaW50LCBpbnQsIGNoYXI+
IGE1ID0gUGx1cygxLCAyLCAzLCA0LCAnNScpOwotICBQbHVzQWN0aW9uUDY8aW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGNoYXI+IGE2ID0gUGx1cygxLCAyLCAzLCA0LCA1LCAnNicpOwotICBQbHVz
QWN0aW9uUDc8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTcgPQotICAgICAg
UGx1cygxLCAyLCAzLCA0LCA1LCA2LCAnNycpOwotICBQbHVzQWN0aW9uUDg8aW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBjaGFyPiBhOCA9Ci0gICAgICBQbHVzKDEsIDIsIDMsIDQs
IDUsIDYsIDcsICc4Jyk7Ci0gIFBsdXNBY3Rpb25QOTxpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgY2hhcj4gYTkgPQotICAgICAgUGx1cygxLCAyLCAzLCA0LCA1LCA2LCA3
LCA4LCAnOScpOwotICBQbHVzQWN0aW9uUDEwPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGNoYXI+IGExMCA9Ci0gICAgICBQbHVzKDEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgsIDksICcwJyk7Ci0KLSAgLy8gQXZvaWQgInVudXNlZCB2YXJpYWJsZSIgd2FybmluZ3Mu
Ci0gICh2b2lkKWEwOwotICAodm9pZClhMTsKLSAgKHZvaWQpYTI7Ci0gICh2b2lkKWEzOwotICAo
dm9pZClhNDsKLSAgKHZvaWQpYTU7Ci0gICh2b2lkKWE2OwotICAodm9pZClhNzsKLSAgKHZvaWQp
YTg7Ci0gICh2b2lkKWE5OwotICAodm9pZClhMTA7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW4gQUNU
SU9OX1AqKCkgYWN0aW9uIGNhbiBiZSBleHBsaWNpdGx5IGluc3RhbnRpYXRlZAotLy8gd2l0aCBy
ZWZlcmVuY2UtdHlwZWQgcGFyYW1ldGVycy4KLQotQUNUSU9OX1AoUGx1czEsIHgpIHsgcmV0dXJu
IHg7IH0KLUFDVElPTl9QMihQbHVzMiwgeCwgeSkgeyByZXR1cm4geCArIHk7IH0KLUFDVElPTl9Q
MyhQbHVzMywgeCwgeSwgeikgeyByZXR1cm4geCArIHkgKyB6OyB9Ci1BQ1RJT05fUDEwKFBsdXMx
MCwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIHsKLSAgcmV0dXJuIGEw
ICsgYTEgKyBhMiArIGEzICsgYTQgKyBhNSArIGE2ICsgYTcgKyBhOCArIGE5OwotfQotCi1URVNU
KEFjdGlvblBuTWFjcm9UZXN0LCBDYW5FeHBsaWNpdGx5SW5zdGFudGlhdGVXaXRoUmVmZXJlbmNl
VHlwZXMpIHsKLSAgaW50IHggPSAxLCB5ID0gMiwgeiA9IDM7Ci0gIGNvbnN0IHR1cGxlPD4gZW1w
dHkgPSBtYWtlX3R1cGxlKCk7Ci0KLSAgQWN0aW9uPGludCgpPiBhID0gUGx1czE8aW50Jj4oeCk7
Ci0gIEVYUEVDVF9FUSgxLCBhLlBlcmZvcm0oZW1wdHkpKTsKLQotICBhID0gUGx1czI8Y29uc3Qg
aW50JiwgaW50Jj4oeCwgeSk7Ci0gIEVYUEVDVF9FUSgzLCBhLlBlcmZvcm0oZW1wdHkpKTsKLQot
ICBhID0gUGx1czM8aW50JiwgY29uc3QgaW50JiwgaW50Jj4oeCwgeSwgeik7Ci0gIEVYUEVDVF9F
USg2LCBhLlBlcmZvcm0oZW1wdHkpKTsKLQotICBpbnQgblsxMF0gPSB7IDEsIDIsIDMsIDQsIDUs
IDYsIDcsIDgsIDksIDEwIH07Ci0gIGEgPSBQbHVzMTA8Y29uc3QgaW50JiwgaW50JiwgY29uc3Qg
aW50JiwgaW50JiwgY29uc3QgaW50JiwgaW50JiwgY29uc3QgaW50JiwKLSAgICAgIGludCYsIGNv
bnN0IGludCYsIGludCY+KG5bMF0sIG5bMV0sIG5bMl0sIG5bM10sIG5bNF0sIG5bNV0sIG5bNl0s
IG5bN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuWzhdLCBuWzldKTsKLSAgRVhQ
RUNUX0VRKDU1LCBhLlBlcmZvcm0oZW1wdHkpKTsKLX0KLQotY2xhc3MgTnVsbGFyeUNvbnN0cnVj
dG9yQ2xhc3MgewotIHB1YmxpYzoKLSAgTnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MoKSA6IHZhbHVl
XygxMjMpIHt9Ci0gIGludCB2YWx1ZV87Ci19OwotCi0vLyBUZXN0cyB1c2luZyBSZXR1cm5OZXco
KSB3aXRoIGEgbnVsbGFyeSBjb25zdHJ1Y3Rvci4KLVRFU1QoUmV0dXJuTmV3VGVzdCwgTm9Bcmdz
KSB7Ci0gIEFjdGlvbjxOdWxsYXJ5Q29uc3RydWN0b3JDbGFzcyooKT4gYSA9IFJldHVybk5ldzxO
dWxsYXJ5Q29uc3RydWN0b3JDbGFzcz4oKTsKLSAgTnVsbGFyeUNvbnN0cnVjdG9yQ2xhc3MqIGMg
PSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VRKDEyMywgYy0+dmFsdWVfKTsK
LSAgZGVsZXRlIGM7Ci19Ci0KLWNsYXNzIFVuYXJ5Q29uc3RydWN0b3JDbGFzcyB7Ci0gcHVibGlj
OgotICBleHBsaWNpdCBVbmFyeUNvbnN0cnVjdG9yQ2xhc3MoaW50IHZhbHVlKSA6IHZhbHVlXyh2
YWx1ZSkge30KLSAgaW50IHZhbHVlXzsKLX07Ci0KLS8vIFRlc3RzIHVzaW5nIFJldHVybk5ldygp
IHdpdGggYSB1bmFyeSBjb25zdHJ1Y3Rvci4KLVRFU1QoUmV0dXJuTmV3VGVzdCwgVW5hcnkpIHsK
LSAgQWN0aW9uPFVuYXJ5Q29uc3RydWN0b3JDbGFzcyooKT4gYSA9IFJldHVybk5ldzxVbmFyeUNv
bnN0cnVjdG9yQ2xhc3M+KDQwMDApOwotICBVbmFyeUNvbnN0cnVjdG9yQ2xhc3MqIGMgPSBhLlBl
cmZvcm0obWFrZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VRKDQwMDAsIGMtPnZhbHVlXyk7Ci0gIGRl
bGV0ZSBjOwotfQotCi1URVNUKFJldHVybk5ld1Rlc3QsIFVuYXJ5V29ya3NXaGVuTW9ja01ldGhv
ZEhhc0FyZ3MpIHsKLSAgQWN0aW9uPFVuYXJ5Q29uc3RydWN0b3JDbGFzcyooYm9vbCwgaW50KT4g
YSA9Ci0gICAgICBSZXR1cm5OZXc8VW5hcnlDb25zdHJ1Y3RvckNsYXNzPig0MDAwKTsKLSAgVW5h
cnlDb25zdHJ1Y3RvckNsYXNzKiBjID0gYS5QZXJmb3JtKG1ha2VfdHVwbGUoZmFsc2UsIDUpKTsK
LSAgRVhQRUNUX0VRKDQwMDAsIGMtPnZhbHVlXyk7Ci0gIGRlbGV0ZSBjOwotfQotCi1URVNUKFJl
dHVybk5ld1Rlc3QsIFVuYXJ5V29ya3NXaGVuTW9ja01ldGhvZFJldHVybnNQb2ludGVyVG9Db25z
dCkgewotICBBY3Rpb248Y29uc3QgVW5hcnlDb25zdHJ1Y3RvckNsYXNzKigpPiBhID0KLSAgICAg
IFJldHVybk5ldzxVbmFyeUNvbnN0cnVjdG9yQ2xhc3M+KDQwMDApOwotICBjb25zdCBVbmFyeUNv
bnN0cnVjdG9yQ2xhc3MqIGMgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VR
KDQwMDAsIGMtPnZhbHVlXyk7Ci0gIGRlbGV0ZSBjOwotfQotCi1jbGFzcyBUZW5BcmdDb25zdHJ1
Y3RvckNsYXNzIHsKLSBwdWJsaWM6Ci0gIFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3MoaW50IGExLCBp
bnQgYTIsIGludCBhMywgaW50IGE0LCBpbnQgYTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGE2LCBpbnQgYTcsIGludCBhOCwgaW50IGE5LCBpbnQgYTEwKQotICAgIDogdmFsdWVfKGEx
ICsgYTIgKyBhMyArIGE0ICsgYTUgKyBhNiArIGE3ICsgYTggKyBhOSArIGExMCkgewotICB9Ci0g
IGludCB2YWx1ZV87Ci19OwotCi0vLyBUZXN0cyB1c2luZyBSZXR1cm5OZXcoKSB3aXRoIGEgMTAt
YXJndW1lbnQgY29uc3RydWN0b3IuCi1URVNUKFJldHVybk5ld1Rlc3QsIENvbnN0cnVjdG9yVGhh
dFRha2VzMTBBcmd1bWVudHMpIHsKLSAgQWN0aW9uPFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3MqKCk+
IGEgPQotICAgICAgUmV0dXJuTmV3PFRlbkFyZ0NvbnN0cnVjdG9yQ2xhc3M+KDEwMDAwMDAwMDAs
IDIwMDAwMDAwMCwgMzAwMDAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDAwMDAwMCwgNTAwMDAwLCA2MDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3MDAwLCA4MDAsIDkwLCAwKTsKLSAgVGVuQXJnQ29uc3RydWN0b3JDbGFz
cyogYyA9IGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpOwotICBFWFBFQ1RfRVEoMTIzNDU2Nzg5MCwg
Yy0+dmFsdWVfKTsKLSAgZGVsZXRlIGM7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBM
QVRFIHdvcmtzIHdoZW4gdGhlcmUgaXMgbm8gdmFsdWUgcGFyYW1ldGVyLgotQUNUSU9OX1RFTVBM
QVRFKENyZWF0ZU5ldywKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlw
ZW5hbWUsIFQpLAotICAgICAgICAgICAgICAgIEFORF8wX1ZBTFVFX1BBUkFNUygpKSB7Ci0gIHJl
dHVybiBuZXcgVDsKLX0KLQotVEVTVChBY3Rpb25UZW1wbGF0ZVRlc3QsIFdvcmtzV2l0aG91dFZh
bHVlUGFyYW0pIHsKLSAgY29uc3QgQWN0aW9uPGludCooKT4gYSA9IENyZWF0ZU5ldzxpbnQ+KCk7
Ci0gIGludCogcCA9IGEuUGVyZm9ybShtYWtlX3R1cGxlKCkpOwotICBkZWxldGUgcDsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBBQ1RJT05fVEVNUExBVEUgd29ya3Mgd2hlbiB0aGVyZSBhcmUgdmFsdWUg
cGFyYW1ldGVycy4KLUFDVElPTl9URU1QTEFURShDcmVhdGVOZXcsCi0gICAgICAgICAgICAgICAg
SEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBUKSwKLSAgICAgICAgICAgICAgICBBTkRf
MV9WQUxVRV9QQVJBTVMoYTApKSB7Ci0gIHJldHVybiBuZXcgVChhMCk7Ci19Ci0KLVRFU1QoQWN0
aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc1dpdGhWYWx1ZVBhcmFtcykgewotICBjb25zdCBBY3Rpb248
aW50KigpPiBhID0gQ3JlYXRlTmV3PGludD4oNDIpOwotICBpbnQqIHAgPSBhLlBlcmZvcm0obWFr
ZV90dXBsZSgpKTsKLSAgRVhQRUNUX0VRKDQyLCAqcCk7Ci0gIGRlbGV0ZSBwOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEFDVElPTl9URU1QTEFURSB3b3JrcyBmb3IgaW50ZWdyYWwgdGVtcGxhdGUgcGFy
YW1ldGVycy4KLUFDVElPTl9URU1QTEFURShNeURlbGV0ZUFyZywKLSAgICAgICAgICAgICAgICBI
QVNfMV9URU1QTEFURV9QQVJBTVMoaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfMF9WQUxV
RV9QQVJBTVMoKSkgewotICBkZWxldGUgZ2V0PGs+KGFyZ3MpOwotfQotCi0vLyBSZXNldHMgYSBi
b29sIHZhcmlhYmxlIGluIHRoZSBkZXN0cnVjdG9yLgotY2xhc3MgQm9vbFJlc2V0dGVyIHsKLSBw
dWJsaWM6Ci0gIGV4cGxpY2l0IEJvb2xSZXNldHRlcihib29sKiB2YWx1ZSkgOiB2YWx1ZV8odmFs
dWUpIHt9Ci0gIH5Cb29sUmVzZXR0ZXIoKSB7ICp2YWx1ZV8gPSBmYWxzZTsgfQotIHByaXZhdGU6
Ci0gIGJvb2wqIHZhbHVlXzsKLX07Ci0KLVRFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc0Zv
ckludGVncmFsVGVtcGxhdGVQYXJhbXMpIHsKLSAgY29uc3QgQWN0aW9uPHZvaWQoaW50KiwgQm9v
bFJlc2V0dGVyKik+IGEgPSBNeURlbGV0ZUFyZzwxPigpOwotICBpbnQgbiA9IDA7Ci0gIGJvb2wg
YiA9IHRydWU7Ci0gIEJvb2xSZXNldHRlciogcmVzZXR0ZXIgPSBuZXcgQm9vbFJlc2V0dGVyKCZi
KTsKLSAgYS5QZXJmb3JtKG1ha2VfdHVwbGUoJm4sIHJlc2V0dGVyKSk7Ci0gIEVYUEVDVF9GQUxT
RShiKTsgIC8vIFZlcmlmaWVzIHRoYXQgcmVzZXR0ZXIgaXMgZGVsZXRlZC4KLX0KLQotLy8gVGVz
dHMgdGhhdCBBQ1RJT05fVEVNUExBVEVTIHdvcmtzIGZvciB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJh
bWV0ZXJzLgotQUNUSU9OX1RFTVBMQVRFKFJldHVyblNtYXJ0UG9pbnRlciwKLSAgICAgICAgICAg
ICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZWU+IGNs
YXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVyKSwKLSAg
ICAgICAgICAgICAgICBBTkRfMV9WQUxVRV9QQVJBTVMocG9pbnRlZSkpIHsKLSAgcmV0dXJuIFBv
aW50ZXI8cG9pbnRlZV90eXBlPihuZXcgcG9pbnRlZV90eXBlKHBvaW50ZWUpKTsKLX0KLQotVEVT
VChBY3Rpb25UZW1wbGF0ZVRlc3QsIFdvcmtzRm9yVGVtcGxhdGVUZW1wbGF0ZVBhcmFtZXRlcnMp
IHsKLSAgdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLSAgY29uc3QgQWN0
aW9uPGxpbmtlZF9wdHI8aW50PigpPiBhID0gUmV0dXJuU21hcnRQb2ludGVyPGxpbmtlZF9wdHI+
KDQyKTsKLSAgbGlua2VkX3B0cjxpbnQ+IHAgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAg
RVhQRUNUX0VRKDQyLCAqcCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIHdv
cmtzIGZvciAxMCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBrNCwgYm9vbCBrNSwKLSAgICAgICAgICB1bnNp
Z25lZCBpbnQgazYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci1zdHJ1
Y3QgR2lhbnRUZW1wbGF0ZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHaWFudFRlbXBsYXRlKGlu
dCBhX3ZhbHVlKSA6IHZhbHVlKGFfdmFsdWUpIHt9Ci0gIGludCB2YWx1ZTsKLX07Ci0KLUFDVElP
Tl9URU1QTEFURShSZXR1cm5HaWFudCwKLSAgICAgICAgICAgICAgICBIQVNfMTBfVEVNUExBVEVf
UEFSQU1TKAotICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSwgVDEsCi0gICAgICAgICAgICAg
ICAgICAgIHR5cGVuYW1lLCBUMiwKLSAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUsIFQzLAot
ICAgICAgICAgICAgICAgICAgICBpbnQsIGs0LAotICAgICAgICAgICAgICAgICAgICBib29sLCBr
NSwKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LCBrNiwKLSAgICAgICAgICAgICAg
ICAgICAgY2xhc3MsIFQ3LAotICAgICAgICAgICAgICAgICAgICBjbGFzcywgVDgsCi0gICAgICAg
ICAgICAgICAgICAgIGNsYXNzLCBUOSwKLSAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzLCBUMTApLAotICAgICAgICAgICAgICAgIEFORF8xX1ZBTFVFX1BBUkFN
Uyh2YWx1ZSkpIHsKLSAgcmV0dXJuIEdpYW50VGVtcGxhdGU8VDEwPFQxPiwgVDIsIFQzLCBrNCwg
azUsIGs2LCBUNywgVDgsIFQ5Pih2YWx1ZSk7Ci19Ci0KLVRFU1QoQWN0aW9uVGVtcGxhdGVUZXN0
LCBXb3Jrc0ZvcjEwVGVtcGxhdGVQYXJhbWV0ZXJzKSB7Ci0gIHVzaW5nIDo6dGVzdGluZzo6aW50
ZXJuYWw6OmxpbmtlZF9wdHI7Ci0gIHR5cGVkZWYgR2lhbnRUZW1wbGF0ZTxsaW5rZWRfcHRyPGlu
dD4sIGJvb2wsIGRvdWJsZSwgNSwKLSAgICAgIHRydWUsIDYsIGNoYXIsIHVuc2lnbmVkLCBpbnQ+
IEdpYW50OwotICBjb25zdCBBY3Rpb248R2lhbnQoKT4gYSA9IFJldHVybkdpYW50PAotICAgICAg
aW50LCBib29sLCBkb3VibGUsIDUsIHRydWUsIDYsIGNoYXIsIHVuc2lnbmVkLCBpbnQsIGxpbmtl
ZF9wdHI+KDQyKTsKLSAgR2lhbnQgZ2lhbnQgPSBhLlBlcmZvcm0obWFrZV90dXBsZSgpKTsKLSAg
RVhQRUNUX0VRKDQyLCBnaWFudC52YWx1ZSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OX1RF
TVBMQVRFIHdvcmtzIGZvciAxMCB2YWx1ZSBwYXJhbWV0ZXJzLgotQUNUSU9OX1RFTVBMQVRFKFJl
dHVyblN1bSwKLSAgICAgICAgICAgICAgICBIQVNfMV9URU1QTEFURV9QQVJBTVModHlwZW5hbWUs
IE51bWJlciksCi0gICAgICAgICAgICAgICAgQU5EXzEwX1ZBTFVFX1BBUkFNUyh2MSwgdjIsIHYz
LCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTApKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxO
dW1iZXI+KHYxKSArIHYyICsgdjMgKyB2NCArIHY1ICsgdjYgKyB2NyArIHY4ICsgdjkgKyB2MTA7
Ci19Ci0KLVRFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBXb3Jrc0ZvcjEwVmFsdWVQYXJhbWV0ZXJz
KSB7Ci0gIGNvbnN0IEFjdGlvbjxpbnQoKT4gYSA9IFJldHVyblN1bTxpbnQ+KDEsIDIsIDMsIDQs
IDUsIDYsIDcsIDgsIDksIDEwKTsKLSAgRVhQRUNUX0VRKDU1LCBhLlBlcmZvcm0obWFrZV90dXBs
ZSgpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQUNUSU9OX1RFTVBMQVRFIGFuZCBBQ1RJT04vQUNU
SU9OX1AqIGNhbiBiZSBvdmVybG9hZGVkCi0vLyBvbiB0aGUgbnVtYmVyIG9mIHZhbHVlIHBhcmFt
ZXRlcnMuCi0KLUFDVElPTihSZXR1cm5TdW0pIHsgcmV0dXJuIDA7IH0KLQotQUNUSU9OX1AoUmV0
dXJuU3VtLCB4KSB7IHJldHVybiB4OyB9Ci0KLUFDVElPTl9URU1QTEFURShSZXR1cm5TdW0sCi0g
ICAgICAgICAgICAgICAgSEFTXzFfVEVNUExBVEVfUEFSQU1TKHR5cGVuYW1lLCBOdW1iZXIpLAot
ICAgICAgICAgICAgICAgIEFORF8yX1ZBTFVFX1BBUkFNUyh2MSwgdjIpKSB7Ci0gIHJldHVybiBz
dGF0aWNfY2FzdDxOdW1iZXI+KHYxKSArIHYyOwotfQotCi1BQ1RJT05fVEVNUExBVEUoUmV0dXJu
U3VtLAotICAgICAgICAgICAgICAgIEhBU18xX1RFTVBMQVRFX1BBUkFNUyh0eXBlbmFtZSwgTnVt
YmVyKSwKLSAgICAgICAgICAgICAgICBBTkRfM19WQUxVRV9QQVJBTVModjEsIHYyLCB2MykpIHsK
LSAgcmV0dXJuIHN0YXRpY19jYXN0PE51bWJlcj4odjEpICsgdjIgKyB2MzsKLX0KLQotQUNUSU9O
X1RFTVBMQVRFKFJldHVyblN1bSwKLSAgICAgICAgICAgICAgICBIQVNfMl9URU1QTEFURV9QQVJB
TVModHlwZW5hbWUsIE51bWJlciwgaW50LCBrKSwKLSAgICAgICAgICAgICAgICBBTkRfNF9WQUxV
RV9QQVJBTVModjEsIHYyLCB2MywgdjQpKSB7Ci0gIHJldHVybiBzdGF0aWNfY2FzdDxOdW1iZXI+
KHYxKSArIHYyICsgdjMgKyB2NCArIGs7Ci19Ci0KLVRFU1QoQWN0aW9uVGVtcGxhdGVUZXN0LCBD
YW5CZU92ZXJsb2FkZWRPbk51bWJlck9mVmFsdWVQYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IEFjdGlv
bjxpbnQoKT4gYTAgPSBSZXR1cm5TdW0oKTsKLSAgY29uc3QgQWN0aW9uPGludCgpPiBhMSA9IFJl
dHVyblN1bSgxKTsKLSAgY29uc3QgQWN0aW9uPGludCgpPiBhMiA9IFJldHVyblN1bTxpbnQ+KDEs
IDIpOwotICBjb25zdCBBY3Rpb248aW50KCk+IGEzID0gUmV0dXJuU3VtPGludD4oMSwgMiwgMyk7
Ci0gIGNvbnN0IEFjdGlvbjxpbnQoKT4gYTQgPSBSZXR1cm5TdW08aW50LCAxMDAwMD4oMjAwMCwg
MzAwLCA0MCwgNSk7Ci0gIEVYUEVDVF9FUSgwLCBhMC5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwot
ICBFWFBFQ1RfRVEoMSwgYTEuUGVyZm9ybShtYWtlX3R1cGxlKCkpKTsKLSAgRVhQRUNUX0VRKDMs
IGEyLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci0gIEVYUEVDVF9FUSg2LCBhMy5QZXJmb3JtKG1h
a2VfdHVwbGUoKSkpOwotICBFWFBFQ1RfRVEoMTIzNDUsIGE0LlBlcmZvcm0obWFrZV90dXBsZSgp
KSk7Ci19Ci0KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYK
LQotfSAgLy8gbmFtZXNwYWNlIGdtb2NrX2dlbmVyYXRlZF9hY3Rpb25zX3Rlc3QKLX0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVy
YXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdl
bmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA4ZTVlYmExYmNhMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3Qv
Z21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDYyNCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBH
b29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0v
LwotLy8gVGhpcyBmaWxlIHRlc3RzIHRoZSBmdW5jdGlvbiBtb2NrZXIgY2xhc3Nlcy4KLQotI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1mdW5jdGlvbi1tb2NrZXJzLmgiCi0KLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0vLyBNU0ROIHNheXMgdGhlIGhlYWRlciBmaWxlIHRvIGJlIGluY2x1
ZGVkIGZvciBTVERNRVRIT0QgaXMgQmFzZVR5cHMuaCBidXQKLS8vIHdlIGFyZSBnZXR0aW5nIGNv
bXBpbGVyIGVycm9ycyBpZiB3ZSB1c2UgYmFzZXR5cHMuaCwgaGVuY2UgaW5jbHVkaW5nCi0vLyBv
YmpiYXNlLmggZm9yIGRlZmluaXRpb24gb2YgU1RETUVUSE9ELgotIyBpbmNsdWRlIDxvYmpiYXNl
Lmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgotCi0vLyBUaGVyZSBpcyBhIGJ1ZyBpbiBNU1ZDIChmaXhlZCBpbiBWUyAyMDA4KSB0
aGF0IHByZXZlbnRzIGNyZWF0aW5nIGEKLS8vIG1vY2sgZm9yIGEgZnVuY3Rpb24gd2l0aCBjb25z
dCBhcmd1bWVudHMsIHNvIHdlIGRvbid0IHRlc3Qgc3VjaAotLy8gY2FzZXMgZm9yIE1TVkMgdmVy
c2lvbnMgb2xkZXIgdGhhbiAyMDA4LgotI2lmICFHVEVTVF9PU19XSU5ET1dTIHx8IChfTVNDX1ZF
UiA+PSAxNTAwKQotIyBkZWZpbmUgR01PQ0tfQUxMT1dTX0NPTlNUX1BBUkFNX0ZVTkNUSU9OUwot
I2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyB8fCAoX01TQ19WRVIgPj0gMTUwMCkKLQotbmFt
ZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGdtb2NrX2dlbmVyYXRlZF9mdW5jdGlvbl9tb2Nr
ZXJzX3Rlc3QgewotCi11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGluZzo6QTsKLXVzaW5n
IHRlc3Rpbmc6OkFuOwotdXNpbmcgdGVzdGluZzo6QW55TnVtYmVyOwotdXNpbmcgdGVzdGluZzo6
Q29uc3Q7Ci11c2luZyB0ZXN0aW5nOjpEb0RlZmF1bHQ7Ci11c2luZyB0ZXN0aW5nOjpFcTsKLXVz
aW5nIHRlc3Rpbmc6Okx0OwotdXNpbmcgdGVzdGluZzo6TW9ja0Z1bmN0aW9uOwotdXNpbmcgdGVz
dGluZzo6UmVmOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGluZzo6UmV0dXJu
UmVmOwotdXNpbmcgdGVzdGluZzo6VHlwZWRFcTsKLQotY2xhc3MgRm9vSW50ZXJmYWNlIHsKLSBw
dWJsaWM6Ci0gIHZpcnR1YWwgfkZvb0ludGVyZmFjZSgpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIFZv
aWRSZXR1cm5pbmcoaW50IHgpID0gMDsKLQotICB2aXJ0dWFsIGludCBOdWxsYXJ5KCkgPSAwOwot
ICB2aXJ0dWFsIGJvb2wgVW5hcnkoaW50IHgpID0gMDsKLSAgdmlydHVhbCBsb25nIEJpbmFyeShz
aG9ydCB4LCBpbnQgeSkgPSAwOyAgLy8gTk9MSU5UCi0gIHZpcnR1YWwgaW50IERlY2ltYWwoYm9v
bCBiLCBjaGFyIGMsIHNob3J0IGQsIGludCBlLCBsb25nIGYsICAvLyBOT0xJTlQKLSAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBnLCBkb3VibGUgaCwgdW5zaWduZWQgaSwgY2hhciogaiwKLSAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgaykgPSAwOwotCi0gIHZpcnR1
YWwgYm9vbCBUYWtlc05vbkNvbnN0UmVmZXJlbmNlKGludCYgbikgPSAwOyAgLy8gTk9MSU5UCi0g
IHZpcnR1YWwgc3RkOjpzdHJpbmcgVGFrZXNDb25zdFJlZmVyZW5jZShjb25zdCBpbnQmIG4pID0g
MDsKLSNpZmRlZiBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCi0gIHZpcnR1YWwg
Ym9vbCBUYWtlc0NvbnN0KGNvbnN0IGludCB4KSA9IDA7Ci0jZW5kaWYgIC8vIEdNT0NLX0FMTE9X
U19DT05TVF9QQVJBTV9GVU5DVElPTlMKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Bcmd1
bWVudE51bWJlcigpID0gMDsKLSAgdmlydHVhbCBpbnQgT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1i
ZXIoaW50IG4pID0gMDsKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Bcmd1bWVudFR5cGUo
aW50IG4pID0gMDsKLSAgdmlydHVhbCBjaGFyIE92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZShjaGFy
IGMpID0gMDsKLQotICB2aXJ0dWFsIGludCBPdmVybG9hZGVkT25Db25zdG5lc3MoKSA9IDA7Ci0g
IHZpcnR1YWwgY2hhciBPdmVybG9hZGVkT25Db25zdG5lc3MoKSBjb25zdCA9IDA7Ci0KLSAgdmly
dHVhbCBpbnQgVHlwZVdpdGhIb2xlKGludCAoKmZ1bmMpKCkpID0gMDsKLSAgdmlydHVhbCBpbnQg
VHlwZVdpdGhDb21tYShjb25zdCBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPiYgYV9tYXApID0g
MDsKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgU1RETUVUSE9EXyhpbnQsIENUTnVsbGFyeSko
KSA9IDA7Ci0gIFNURE1FVEhPRF8oYm9vbCwgQ1RVbmFyeSkoaW50IHgpID0gMDsKLSAgU1RETUVU
SE9EXyhpbnQsIENURGVjaW1hbCkKLSAgKGJvb2wgYiwgY2hhciBjLCBzaG9ydCBkLCBpbnQgZSwg
bG9uZyBmLCAgLy8gTk9MSU5UCi0gICBmbG9hdCBnLCBkb3VibGUgaCwgdW5zaWduZWQgaSwgY2hh
ciogaiwgY29uc3Qgc3RkOjpzdHJpbmcmIGspID0gMDsKLSAgU1RETUVUSE9EXyhjaGFyLCBDVENv
bnN0KShpbnQgeCkgY29uc3QgPSAwOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi19Owot
Ci0vLyBDb25zdCBxdWFsaWZpZXJzIG9uIGFyZ3VtZW50cyB3ZXJlIG9uY2UgKGluY29ycmVjdGx5
KSBjb25zaWRlcmVkCi0vLyBzaWduaWZpY2FudCBpbiBkZXRlcm1pbmluZyB3aGV0aGVyIHR3byB2
aXJ0dWFsIGZ1bmN0aW9ucyBoYWQgdGhlIHNhbWUKLS8vIHNpZ25hdHVyZS4gVGhpcyB3YXMgZml4
ZWQgaW4gVmlzdWFsIFN0dWRpbyAyMDA4LiBIb3dldmVyLCB0aGUgY29tcGlsZXIKLS8vIHN0aWxs
IGVtaXRzIGEgd2FybmluZyB0aGF0IGFsZXJ0cyBhYm91dCB0aGlzIGNoYW5nZSBpbiBiZWhhdmlv
ci4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlIDogNDM3MykKLSNlbmRpZgotY2xhc3MgTW9ja0ZvbyA6IHB1YmxpYyBGb29J
bnRlcmZhY2UgewotIHB1YmxpYzoKLSAgTW9ja0ZvbygpIHt9Ci0KLSAgLy8gTWFrZXMgc3VyZSB0
aGF0IGEgbW9jayBmdW5jdGlvbiBwYXJhbWV0ZXIgY2FuIGJlIG5hbWVkLgotICBNT0NLX01FVEhP
RDEoVm9pZFJldHVybmluZywgdm9pZChpbnQgbikpOyAgLy8gTk9MSU5UCi0KLSAgTU9DS19NRVRI
T0QwKE51bGxhcnksIGludCgpKTsgIC8vIE5PTElOVAotCi0gIC8vIE1ha2VzIHN1cmUgdGhhdCBh
IG1vY2sgZnVuY3Rpb24gcGFyYW1ldGVyIGNhbiBiZSB1bm5hbWVkLgotICBNT0NLX01FVEhPRDEo
VW5hcnksIGJvb2woaW50KSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QyKEJpbmFyeSwgbG9u
ZyhzaG9ydCwgaW50KSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QxMChEZWNpbWFsLCBpbnQo
Ym9vbCwgY2hhciwgc2hvcnQsIGludCwgbG9uZywgZmxvYXQsICAvLyBOT0xJTlQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG91YmxlLCB1bnNpZ25lZCwgY2hhciosIGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHIpKTsKLQotICBNT0NLX01FVEhPRDEoVGFrZXNOb25Db25zdFJlZmVyZW5jZSwg
Ym9vbChpbnQmKSk7ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QxKFRha2VzQ29uc3RSZWZlcmVu
Y2UsIHN0ZDo6c3RyaW5nKGNvbnN0IGludCYpKTsKLQotI2lmZGVmIEdNT0NLX0FMTE9XU19DT05T
VF9QQVJBTV9GVU5DVElPTlMKLSAgTU9DS19NRVRIT0QxKFRha2VzQ29uc3QsIGJvb2woY29uc3Qg
aW50KSk7ICAvLyBOT0xJTlQKLSNlbmRpZgotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9u
IHJldHVybiB0eXBlIGNhbiBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hLgotICBNT0NLX01FVEhP
RDAoUmV0dXJuVHlwZVdpdGhDb21tYSwgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4oKSk7Ci0g
IE1PQ0tfQ09OU1RfTUVUSE9EMShSZXR1cm5UeXBlV2l0aENvbW1hLAotICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXA8aW50LCBzdGQ6OnN0cmluZz4oaW50KSk7ICAvLyBOT0xJTlQKLQotICBN
T0NLX01FVEhPRDAoT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIsIGludCgpKTsgIC8vIE5PTElO
VAotICBNT0NLX01FVEhPRDEoT3ZlcmxvYWRlZE9uQXJndW1lbnROdW1iZXIsIGludChpbnQpKTsg
IC8vIE5PTElOVAotCi0gIE1PQ0tfTUVUSE9EMShPdmVybG9hZGVkT25Bcmd1bWVudFR5cGUsIGlu
dChpbnQpKTsgIC8vIE5PTElOVAotICBNT0NLX01FVEhPRDEoT3ZlcmxvYWRlZE9uQXJndW1lbnRU
eXBlLCBjaGFyKGNoYXIpKTsgIC8vIE5PTElOVAotCi0gIE1PQ0tfTUVUSE9EMChPdmVybG9hZGVk
T25Db25zdG5lc3MsIGludCgpKTsgIC8vIE5PTElOVAotICBNT0NLX0NPTlNUX01FVEhPRDAoT3Zl
cmxvYWRlZE9uQ29uc3RuZXNzLCBjaGFyKCkpOyAgLy8gTk9MSU5UCi0KLSAgTU9DS19NRVRIT0Qx
KFR5cGVXaXRoSG9sZSwgaW50KGludCAoKikoKSkpOyAgLy8gTk9MSU5UCi0gIE1PQ0tfTUVUSE9E
MShUeXBlV2l0aENvbW1hLAotICAgICAgICAgICAgICAgaW50KGNvbnN0IHN0ZDo6bWFwPGludCwg
c3RkOjpzdHJpbmc+JikpOyAgLy8gTk9MSU5UCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIE1P
Q0tfTUVUSE9EMF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBDVE51bGxhcnksIGlu
dCgpKTsKLSAgTU9DS19NRVRIT0QxX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIENU
VW5hcnksIGJvb2woaW50KSk7Ci0gIE1PQ0tfTUVUSE9EMTBfV0lUSF9DQUxMVFlQRShTVERNRVRI
T0RDQUxMVFlQRSwgQ1REZWNpbWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
KGJvb2wgYiwgY2hhciBjLCBzaG9ydCBkLCBpbnQgZSwgbG9uZyBmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IGcsIGRvdWJsZSBoLCB1bnNpZ25lZCBpLCBjaGFyKiBq
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBr
KSk7Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMV9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBF
LCBDVENvbnN0LCBjaGFyKGludCkpOwotCi0gIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJl
dHVybiB0eXBlIGNhbiBjb250YWluIHVucHJvdGVjdGVkIGNvbW1hLgotICBNT0NLX01FVEhPRDBf
V0lUSF9DQUxMVFlQRShTVERNRVRIT0RDQUxMVFlQRSwgQ1RSZXR1cm5UeXBlV2l0aENvbW1hLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPigp
KTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRm9vKTsKLX07Ci0jaWZkZWYgX01TQ19WRVIKLSMg
cHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLWNsYXNzIEZ1bmN0aW9uTW9ja2VyVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIEZ1bmN0aW9uTW9ja2VyVGVz
dCgpIDogZm9vXygmbW9ja19mb29fKSB7fQotCi0gIEZvb0ludGVyZmFjZSogY29uc3QgZm9vXzsK
LSAgTW9ja0ZvbyBtb2NrX2Zvb187Ci19OwotCi0vLyBUZXN0cyBtb2NraW5nIGEgdm9pZC1yZXR1
cm5pbmcgZnVuY3Rpb24uCi1URVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc1ZvaWRGdW5j
dGlvbikgewotICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFZvaWRSZXR1cm5pbmcoTHQoMTAwKSkp
OwotICBmb29fLT5Wb2lkUmV0dXJuaW5nKDApOwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGEgbnVs
bGFyeSBmdW5jdGlvbi4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzTnVsbGFyeUZ1
bmN0aW9uKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgTnVsbGFyeSgpKQotICAgICAgLldp
bGxPbmNlKERvRGVmYXVsdCgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0KLSAgRVhQ
RUNUX0VRKDAsIGZvb18tPk51bGxhcnkoKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb29fLT5OdWxsYXJ5
KCkpOwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGEgdW5hcnkgZnVuY3Rpb24uCi1URVNUX0YoRnVu
Y3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc1VuYXJ5RnVuY3Rpb24pIHsKLSAgRVhQRUNUX0NBTEwobW9j
a19mb29fLCBVbmFyeShFcSgyKSkpCi0gICAgICAuVGltZXMoMikKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4odHJ1ZSkpOwotCi0gIEVYUEVDVF9UUlVFKGZvb18tPlVuYXJ5KDIpKTsKLSAgRVhQRUNU
X0ZBTFNFKGZvb18tPlVuYXJ5KDIpKTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBhIGJpbmFyeSBm
dW5jdGlvbi4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzQmluYXJ5RnVuY3Rpb24p
IHsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBCaW5hcnkoMiwgXykpCi0gICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDMpKTsKLQotICBFWFBFQ1RfRVEoMywgZm9vXy0+QmluYXJ5KDIsIDEpKTsKLX0K
LQotLy8gVGVzdHMgbW9ja2luZyBhIGRlY2ltYWwgZnVuY3Rpb24uCi1URVNUX0YoRnVuY3Rpb25N
b2NrZXJUZXN0LCBNb2Nrc0RlY2ltYWxGdW5jdGlvbikgewotICBFWFBFQ1RfQ0FMTChtb2NrX2Zv
b18sIERlY2ltYWwodHJ1ZSwgJ2EnLCAwLCAwLCAxTCwgQTxmbG9hdD4oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEx0KDEwMCksIDVVLCBOVUxMLCAiaGkiKSkKLSAgICAgIC5X
aWxsT25jZShSZXR1cm4oNSkpOwotCi0gIEVYUEVDVF9FUSg1LCBmb29fLT5EZWNpbWFsKHRydWUs
ICdhJywgMCwgMCwgMSwgMCwgMCwgNSwgTlVMTCwgImhpIikpOwotfQotCi0vLyBUZXN0cyBtb2Nr
aW5nIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIG5vbi1jb25zdCByZWZlcmVuY2UuCi1URVNUX0Yo
RnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uV2l0aE5vbkNvbnN0UmVmZXJlbmNlQXJn
dW1lbnQpIHsKLSAgaW50IGEgPSAwOwotICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFRha2VzTm9u
Q29uc3RSZWZlcmVuY2UoUmVmKGEpKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpOwot
Ci0gIEVYUEVDVF9UUlVFKGZvb18tPlRha2VzTm9uQ29uc3RSZWZlcmVuY2UoYSkpOwotfQotCi0v
LyBUZXN0cyBtb2NraW5nIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGNvbnN0IHJlZmVyZW5jZS4K
LVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzRnVuY3Rpb25XaXRoQ29uc3RSZWZlcmVu
Y2VBcmd1bWVudCkgewotICBpbnQgYSA9IDA7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgVGFr
ZXNDb25zdFJlZmVyZW5jZShSZWYoYSkpKQotICAgICAgLldpbGxPbmNlKFJldHVybigiSGVsbG8i
KSk7Ci0KLSAgRVhQRUNUX0VRKCJIZWxsbyIsIGZvb18tPlRha2VzQ29uc3RSZWZlcmVuY2UoYSkp
OwotfQotCi0jaWZkZWYgR01PQ0tfQUxMT1dTX0NPTlNUX1BBUkFNX0ZVTkNUSU9OUwotLy8gVGVz
dHMgbW9ja2luZyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBjb25zdCB2YXJpYWJsZS4KLVRFU1Rf
RihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzRnVuY3Rpb25XaXRoQ29uc3RBcmd1bWVudCkgewot
ICBFWFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFRha2VzQ29uc3QoTHQoMTApKSkKLSAgICAgIC5XaWxs
T25jZShEb0RlZmF1bHQoKSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKGZvb18tPlRha2VzQ29uc3QoNSkp
OwotfQotI2VuZGlmICAvLyBHTU9DS19BTExPV1NfQ09OU1RfUEFSQU1fRlVOQ1RJT05TCi0KLS8v
IFRlc3RzIG1vY2tpbmcgZnVuY3Rpb25zIG92ZXJsb2FkZWQgb24gdGhlIG51bWJlciBvZiBhcmd1
bWVudHMuCi1URVNUX0YoRnVuY3Rpb25Nb2NrZXJUZXN0LCBNb2Nrc0Z1bmN0aW9uc092ZXJsb2Fk
ZWRPbkFyZ3VtZW50TnVtYmVyKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgT3ZlcmxvYWRl
ZE9uQXJndW1lbnROdW1iZXIoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotICBFWFBF
Q1RfQ0FMTChtb2NrX2Zvb18sIE92ZXJsb2FkZWRPbkFyZ3VtZW50TnVtYmVyKF8pKQotICAgICAg
LldpbGxPbmNlKFJldHVybigyKSk7Ci0KLSAgRVhQRUNUX0VRKDIsIGZvb18tPk92ZXJsb2FkZWRP
bkFyZ3VtZW50TnVtYmVyKDEpKTsKLSAgRVhQRUNUX0VRKDEsIGZvb18tPk92ZXJsb2FkZWRPbkFy
Z3VtZW50TnVtYmVyKCkpOwotfQotCi0vLyBUZXN0cyBtb2NraW5nIGZ1bmN0aW9ucyBvdmVybG9h
ZGVkIG9uIHRoZSB0eXBlcyBvZiBhcmd1bWVudC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3Qs
IE1vY2tzRnVuY3Rpb25zT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKSB7Ci0gIEVYUEVDVF9DQUxM
KG1vY2tfZm9vXywgT3ZlcmxvYWRlZE9uQXJndW1lbnRUeXBlKEFuPGludD4oKSkpCi0gICAgICAu
V2lsbE9uY2UoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBPdmVybG9hZGVk
T25Bcmd1bWVudFR5cGUoVHlwZWRFcTxjaGFyPignYScpKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4oJ2InKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIGZvb18tPk92ZXJsb2FkZWRPbkFyZ3VtZW50VHlw
ZSgwKSk7Ci0gIEVYUEVDVF9FUSgnYicsIGZvb18tPk92ZXJsb2FkZWRPbkFyZ3VtZW50VHlwZSgn
YScpKTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUg
Y29uc3QtbmVzcyBvZiB0aGlzIG9iamVjdC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1v
Y2tzRnVuY3Rpb25zT3ZlcmxvYWRlZE9uQ29uc3RuZXNzT2ZUaGlzKSB7Ci0gIEVYUEVDVF9DQUxM
KG1vY2tfZm9vXywgT3ZlcmxvYWRlZE9uQ29uc3RuZXNzKCkpOwotICBFWFBFQ1RfQ0FMTChDb25z
dChtb2NrX2Zvb18pLCBPdmVybG9hZGVkT25Db25zdG5lc3MoKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oJ2EnKSk7Ci0KLSAgRVhQRUNUX0VRKDAsIGZvb18tPk92ZXJsb2FkZWRPbkNvbnN0bmVz
cygpKTsKLSAgRVhQRUNUX0VRKCdhJywgQ29uc3QoKmZvb18pLk92ZXJsb2FkZWRPbkNvbnN0bmVz
cygpKTsKLX0KLQotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NSZXR1cm5UeXBlV2l0
aENvbW1hKSB7Ci0gIGNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IGFfbWFwOwotICBF
WFBFQ1RfQ0FMTChtb2NrX2Zvb18sIFJldHVyblR5cGVXaXRoQ29tbWEoKSkKLSAgICAgIC5XaWxs
T25jZShSZXR1cm4oYV9tYXApKTsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBSZXR1cm5UeXBl
V2l0aENvbW1hKDQyKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oYV9tYXApKTsKLQotICBFWFBF
Q1RfRVEoYV9tYXAsIG1vY2tfZm9vXy5SZXR1cm5UeXBlV2l0aENvbW1hKCkpOwotICBFWFBFQ1Rf
RVEoYV9tYXAsIG1vY2tfZm9vXy5SZXR1cm5UeXBlV2l0aENvbW1hKDQyKSk7Ci19Ci0KLSNpZiBH
VEVTVF9PU19XSU5ET1dTCi0vLyBUZXN0cyBtb2NraW5nIGEgbnVsbGFyeSBmdW5jdGlvbiB3aXRo
IGNhbGx0eXBlLgotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NOdWxsYXJ5RnVuY3Rp
b25XaXRoQ2FsbFR5cGUpIHsKLSAgRVhQRUNUX0NBTEwobW9ja19mb29fLCBDVE51bGxhcnkoKSkK
LSAgICAgIC5XaWxsT25jZShSZXR1cm4oLTEpKQotICAgICAgLldpbGxPbmNlKFJldHVybigwKSk7
Ci0KLSAgRVhQRUNUX0VRKC0xLCBmb29fLT5DVE51bGxhcnkoKSk7Ci0gIEVYUEVDVF9FUSgwLCBm
b29fLT5DVE51bGxhcnkoKSk7Ci19Ci0KLS8vIFRlc3RzIG1vY2tpbmcgYSB1bmFyeSBmdW5jdGlv
biB3aXRoIGNhbGx0eXBlLgotVEVTVF9GKEZ1bmN0aW9uTW9ja2VyVGVzdCwgTW9ja3NVbmFyeUZ1
bmN0aW9uV2l0aENhbGxUeXBlKSB7Ci0gIEVYUEVDVF9DQUxMKG1vY2tfZm9vXywgQ1RVbmFyeShF
cSgyKSkpCi0gICAgICAuVGltZXMoMikKLSAgICAgIC5XaWxsT25jZShSZXR1cm4odHJ1ZSkpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuKGZhbHNlKSk7Ci0KLSAgRVhQRUNUX1RSVUUoZm9vXy0+Q1RV
bmFyeSgyKSk7Ci0gIEVYUEVDVF9GQUxTRShmb29fLT5DVFVuYXJ5KDIpKTsKLX0KLQotLy8gVGVz
dHMgbW9ja2luZyBhIGRlY2ltYWwgZnVuY3Rpb24gd2l0aCBjYWxsdHlwZS4KLVRFU1RfRihGdW5j
dGlvbk1vY2tlclRlc3QsIE1vY2tzRGVjaW1hbEZ1bmN0aW9uV2l0aENhbGxUeXBlKSB7Ci0gIEVY
UEVDVF9DQUxMKG1vY2tfZm9vXywgQ1REZWNpbWFsKHRydWUsICdhJywgMCwgMCwgMUwsIEE8Zmxv
YXQ+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx0KDEwMCksIDVVLCBO
VUxMLCAiaGkiKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMTApKTsKLQotICBFWFBFQ1RfRVEo
MTAsIGZvb18tPkNURGVjaW1hbCh0cnVlLCAnYScsIDAsIDAsIDEsIDAsIDAsIDUsIE5VTEwsICJo
aSIpKTsKLX0KLQotLy8gVGVzdHMgbW9ja2luZyBmdW5jdGlvbnMgb3ZlcmxvYWRlZCBvbiB0aGUg
Y29uc3QtbmVzcyBvZiB0aGlzIG9iamVjdC4KLVRFU1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1v
Y2tzRnVuY3Rpb25zQ29uc3RGdW5jdGlvbldpdGhDYWxsVHlwZSkgewotICBFWFBFQ1RfQ0FMTChD
b25zdChtb2NrX2Zvb18pLCBDVENvbnN0KF8pKQotICAgICAgLldpbGxPbmNlKFJldHVybignYScp
KTsKLQotICBFWFBFQ1RfRVEoJ2EnLCBDb25zdCgqZm9vXykuQ1RDb25zdCgwKSk7Ci19Ci0KLVRF
U1RfRihGdW5jdGlvbk1vY2tlclRlc3QsIE1vY2tzUmV0dXJuVHlwZVdpdGhDb21tYUFuZENhbGxU
eXBlKSB7Ci0gIGNvbnN0IHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+IGFfbWFwOwotICBFWFBF
Q1RfQ0FMTChtb2NrX2Zvb18sIENUUmV0dXJuVHlwZVdpdGhDb21tYSgpKQotICAgICAgLldpbGxP
bmNlKFJldHVybihhX21hcCkpOwotCi0gIEVYUEVDVF9FUShhX21hcCwgbW9ja19mb29fLkNUUmV0
dXJuVHlwZVdpdGhDb21tYSgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0K
LWNsYXNzIE1vY2tCIHsKLSBwdWJsaWM6Ci0gIE1vY2tCKCkge30KLQotICBNT0NLX01FVEhPRDAo
RG9CLCB2b2lkKCkpOwotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhNb2NrQik7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGZ1bmN0aW9ucyB3aXRoIG5vIEVYUEVD
VF9DQUxMKCkgcnVscyBjYW4gYmUgY2FsbGVkIGFueQotLy8gbnVtYmVyIG9mIHRpbWVzLgotVEVT
VChFeHBlY3RDYWxsVGVzdCwgVW5tZW50aW9uZWRGdW5jdGlvbkNhbkJlQ2FsbGVkQW55TnVtYmVy
T2ZUaW1lcykgewotICB7Ci0gICAgTW9ja0IgYjsKLSAgfQotCi0gIHsKLSAgICBNb2NrQiBiOwot
ICAgIGIuRG9CKCk7Ci0gIH0KLQotICB7Ci0gICAgTW9ja0IgYjsKLSAgICBiLkRvQigpOwotICAg
IGIuRG9CKCk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgbW9ja2luZyB0ZW1wbGF0ZSBpbnRlcmZhY2Vz
LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlIHsKLSBwdWJs
aWM6Ci0gIHZpcnR1YWwgflN0YWNrSW50ZXJmYWNlKCkge30KLQotICAvLyBUZW1wbGF0ZSBwYXJh
bWV0ZXIgYXBwZWFycyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIuCi0gIHZpcnR1YWwgdm9pZCBQdXNo
KGNvbnN0IFQmIHZhbHVlKSA9IDA7Ci0gIHZpcnR1YWwgdm9pZCBQb3AoKSA9IDA7Ci0gIHZpcnR1
YWwgaW50IEdldFNpemUoKSBjb25zdCA9IDA7Ci0gIC8vIFRlbXBsYXRlIHBhcmFtZXRlciBhcHBl
YXJzIGluIGZ1bmN0aW9uIHJldHVybiB0eXBlLgotICB2aXJ0dWFsIGNvbnN0IFQmIEdldFRvcCgp
IGNvbnN0ID0gMDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTW9ja1N0YWNr
IDogcHVibGljIFN0YWNrSW50ZXJmYWNlPFQ+IHsKLSBwdWJsaWM6Ci0gIE1vY2tTdGFjaygpIHt9
Ci0KLSAgTU9DS19NRVRIT0QxX1QoUHVzaCwgdm9pZChjb25zdCBUJiBlbGVtKSk7Ci0gIE1PQ0tf
TUVUSE9EMF9UKFBvcCwgdm9pZCgpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QwX1QoR2V0U2l6ZSwg
aW50KCkpOyAgLy8gTk9MSU5UCi0gIE1PQ0tfQ09OU1RfTUVUSE9EMF9UKEdldFRvcCwgY29uc3Qg
VCYoKSk7Ci0KLSAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJuIHR5cGUgY2FuIGNv
bnRhaW4gdW5wcm90ZWN0ZWQgY29tbWEuCi0gIE1PQ0tfTUVUSE9EMF9UKFJldHVyblR5cGVXaXRo
Q29tbWEsIHN0ZDo6bWFwPGludCwgaW50PigpKTsKLSAgTU9DS19DT05TVF9NRVRIT0QxX1QoUmV0
dXJuVHlwZVdpdGhDb21tYSwgc3RkOjptYXA8aW50LCBpbnQ+KGludCkpOyAgLy8gTk9MSU5UCi0K
LSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tTdGFjayk7
Ci19OwotCi0vLyBUZXN0cyB0aGF0IHRlbXBsYXRlIG1vY2sgd29ya3MuCi1URVNUKFRlbXBsYXRl
TW9ja1Rlc3QsIFdvcmtzKSB7Ci0gIE1vY2tTdGFjazxpbnQ+IG1vY2s7Ci0KLSAgRVhQRUNUX0NB
TEwobW9jaywgR2V0U2l6ZSgpKQotICAgICAgLldpbGxPbmNlKFJldHVybigwKSkKLSAgICAgIC5X
aWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDApKTsKLSAgRVhQRUNU
X0NBTEwobW9jaywgUHVzaChfKSk7Ci0gIGludCBuID0gNTsKLSAgRVhQRUNUX0NBTEwobW9jaywg
R2V0VG9wKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuUmVmKG4pKTsKLSAgRVhQRUNUX0NBTEwo
bW9jaywgUG9wKCkpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gIEVYUEVDVF9FUSgw
LCBtb2NrLkdldFNpemUoKSk7Ci0gIG1vY2suUHVzaCg1KTsKLSAgRVhQRUNUX0VRKDEsIG1vY2su
R2V0U2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDUsIG1vY2suR2V0VG9wKCkpOwotICBtb2NrLlBvcCgp
OwotICBFWFBFQ1RfRVEoMCwgbW9jay5HZXRTaXplKCkpOwotfQotCi1URVNUKFRlbXBsYXRlTW9j
a1Rlc3QsIE1ldGhvZFdpdGhDb21tYUluUmV0dXJuVHlwZVdvcmtzKSB7Ci0gIE1vY2tTdGFjazxp
bnQ+IG1vY2s7Ci0KLSAgY29uc3Qgc3RkOjptYXA8aW50LCBpbnQ+IGFfbWFwOwotICBFWFBFQ1Rf
Q0FMTChtb2NrLCBSZXR1cm5UeXBlV2l0aENvbW1hKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJu
KGFfbWFwKSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIFJldHVyblR5cGVXaXRoQ29tbWEoMSkpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuKGFfbWFwKSk7Ci0KLSAgRVhQRUNUX0VRKGFfbWFwLCBtb2Nr
LlJldHVyblR5cGVXaXRoQ29tbWEoKSk7Ci0gIEVYUEVDVF9FUShhX21hcCwgbW9jay5SZXR1cm5U
eXBlV2l0aENvbW1hKDEpKTsKLX0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIFRlc3RzIG1v
Y2tpbmcgdGVtcGxhdGUgaW50ZXJmYWNlcyB3aXRoIGNhbGx0eXBlLgotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWNsYXNzIFN0YWNrSW50ZXJmYWNlV2l0aENhbGxUeXBlIHsKLSBwdWJsaWM6Ci0g
IHZpcnR1YWwgflN0YWNrSW50ZXJmYWNlV2l0aENhbGxUeXBlKCkge30KLQotICAvLyBUZW1wbGF0
ZSBwYXJhbWV0ZXIgYXBwZWFycyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIuCi0gIFNURE1FVEhPRF8o
dm9pZCwgUHVzaCkoY29uc3QgVCYgdmFsdWUpID0gMDsKLSAgU1RETUVUSE9EXyh2b2lkLCBQb3Ap
KCkgPSAwOwotICBTVERNRVRIT0RfKGludCwgR2V0U2l6ZSkoKSBjb25zdCA9IDA7Ci0gIC8vIFRl
bXBsYXRlIHBhcmFtZXRlciBhcHBlYXJzIGluIGZ1bmN0aW9uIHJldHVybiB0eXBlLgotICBTVERN
RVRIT0RfKGNvbnN0IFQmLCBHZXRUb3ApKCkgY29uc3QgPSAwOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBNb2NrU3RhY2tXaXRoQ2FsbFR5cGUgOiBwdWJsaWMgU3RhY2tJbnRl
cmZhY2VXaXRoQ2FsbFR5cGU8VD4gewotIHB1YmxpYzoKLSAgTW9ja1N0YWNrV2l0aENhbGxUeXBl
KCkge30KLQotICBNT0NLX01FVEhPRDFfVF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBF
LCBQdXNoLCB2b2lkKGNvbnN0IFQmIGVsZW0pKTsKLSAgTU9DS19NRVRIT0QwX1RfV0lUSF9DQUxM
VFlQRShTVERNRVRIT0RDQUxMVFlQRSwgUG9wLCB2b2lkKCkpOwotICBNT0NLX0NPTlNUX01FVEhP
RDBfVF9XSVRIX0NBTExUWVBFKFNURE1FVEhPRENBTExUWVBFLCBHZXRTaXplLCBpbnQoKSk7Ci0g
IE1PQ0tfQ09OU1RfTUVUSE9EMF9UX1dJVEhfQ0FMTFRZUEUoU1RETUVUSE9EQ0FMTFRZUEUsIEdl
dFRvcCwgY29uc3QgVCYoKSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKE1vY2tTdGFja1dpdGhDYWxsVHlwZSk7Ci19OwotCi0vLyBUZXN0cyB0aGF0IHRl
bXBsYXRlIG1vY2sgd2l0aCBjYWxsdHlwZSB3b3Jrcy4KLVRFU1QoVGVtcGxhdGVNb2NrVGVzdFdp
dGhDYWxsVHlwZSwgV29ya3MpIHsKLSAgTW9ja1N0YWNrV2l0aENhbGxUeXBlPGludD4gbW9jazsK
LQotICBFWFBFQ1RfQ0FMTChtb2NrLCBHZXRTaXplKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJu
KDApKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4o
MCkpOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBQdXNoKF8pKTsKLSAgaW50IG4gPSA1OwotICBFWFBF
Q1RfQ0FMTChtb2NrLCBHZXRUb3AoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm5SZWYobikpOwot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBQb3AoKSkKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0K
LSAgRVhQRUNUX0VRKDAsIG1vY2suR2V0U2l6ZSgpKTsKLSAgbW9jay5QdXNoKDUpOwotICBFWFBF
Q1RfRVEoMSwgbW9jay5HZXRTaXplKCkpOwotICBFWFBFQ1RfRVEoNSwgbW9jay5HZXRUb3AoKSk7
Ci0gIG1vY2suUG9wKCk7Ci0gIEVYUEVDVF9FUSgwLCBtb2NrLkdldFNpemUoKSk7Ci19Ci0jZW5k
aWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2RlZmluZSBNWV9NT0NLX01FVEhPRFMxXyBcCi0g
ICAgTU9DS19NRVRIT0QwKE92ZXJsb2FkZWQsIHZvaWQoKSk7IFwKLSAgICBNT0NLX0NPTlNUX01F
VEhPRDEoT3ZlcmxvYWRlZCwgaW50KGludCBuKSk7IFwKLSAgICBNT0NLX01FVEhPRDIoT3Zlcmxv
YWRlZCwgYm9vbChib29sIGYsIGludCBuKSkKLQotY2xhc3MgTW9ja092ZXJsb2FkZWRPbkFyZ051
bWJlciB7Ci0gcHVibGljOgotICBNb2NrT3ZlcmxvYWRlZE9uQXJnTnVtYmVyKCkge30KLQotICBN
WV9NT0NLX01FVEhPRFMxXzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5E
X0FTU0lHTl8oTW9ja092ZXJsb2FkZWRPbkFyZ051bWJlcik7Ci19OwotCi1URVNUKE92ZXJsb2Fk
ZWRNb2NrTWV0aG9kVGVzdCwgQ2FuT3ZlcmxvYWRPbkFyZ051bWJlckluTWFjcm9Cb2R5KSB7Ci0g
IE1vY2tPdmVybG9hZGVkT25BcmdOdW1iZXIgbW9jazsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3Zl
cmxvYWRlZCgpKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3ZlcmxvYWRlZCgxKSkuV2lsbE9uY2Uo
UmV0dXJuKDIpKTsKLSAgRVhQRUNUX0NBTEwobW9jaywgT3ZlcmxvYWRlZCh0cnVlLCAxKSkuV2ls
bE9uY2UoUmV0dXJuKHRydWUpKTsKLQotICBtb2NrLk92ZXJsb2FkZWQoKTsKLSAgRVhQRUNUX0VR
KDIsIG1vY2suT3ZlcmxvYWRlZCgxKSk7Ci0gIEVYUEVDVF9UUlVFKG1vY2suT3ZlcmxvYWRlZCh0
cnVlLCAxKSk7Ci19Ci0KLSNkZWZpbmUgTVlfTU9DS19NRVRIT0RTMl8gXAotICAgIE1PQ0tfQ09O
U1RfTUVUSE9EMShPdmVybG9hZGVkLCBpbnQoaW50IG4pKTsgXAotICAgIE1PQ0tfTUVUSE9EMShP
dmVybG9hZGVkLCBpbnQoaW50IG4pKTsKLQotY2xhc3MgTW9ja092ZXJsb2FkZWRPbkNvbnN0bmVz
cyB7Ci0gcHVibGljOgotICBNb2NrT3ZlcmxvYWRlZE9uQ29uc3RuZXNzKCkge30KLQotICBNWV9N
T0NLX01FVEhPRFMyXzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oTW9ja092ZXJsb2FkZWRPbkNvbnN0bmVzcyk7Ci19OwotCi1URVNUKE92ZXJsb2FkZWRN
b2NrTWV0aG9kVGVzdCwgQ2FuT3ZlcmxvYWRPbkNvbnN0bmVzc0luTWFjcm9Cb2R5KSB7Ci0gIE1v
Y2tPdmVybG9hZGVkT25Db25zdG5lc3MgbW9jazsKLSAgY29uc3QgTW9ja092ZXJsb2FkZWRPbkNv
bnN0bmVzcyogY29uc3RfbW9jayA9ICZtb2NrOwotICBFWFBFQ1RfQ0FMTChtb2NrLCBPdmVybG9h
ZGVkKDEpKS5XaWxsT25jZShSZXR1cm4oMikpOwotICBFWFBFQ1RfQ0FMTCgqY29uc3RfbW9jaywg
T3ZlcmxvYWRlZCgxKSkuV2lsbE9uY2UoUmV0dXJuKDMpKTsKLQotICBFWFBFQ1RfRVEoMiwgbW9j
ay5PdmVybG9hZGVkKDEpKTsKLSAgRVhQRUNUX0VRKDMsIGNvbnN0X21vY2stPk92ZXJsb2FkZWQo
MSkpOwotfQotCi1URVNUKE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yVm9pZE51bGxhcnkpIHsK
LSAgTW9ja0Z1bmN0aW9uPHZvaWQoKT4gZm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoKSk7
Ci0gIGZvby5DYWxsKCk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgV29ya3NGb3JOb25W
b2lkTnVsbGFyeSkgewotICBNb2NrRnVuY3Rpb248aW50KCk+IGZvbzsKLSAgRVhQRUNUX0NBTEwo
Zm9vLCBDYWxsKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxPbmNl
KFJldHVybigyKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb28uQ2FsbCgpKTsKLSAgRVhQRUNUX0VRKDIs
IGZvby5DYWxsKCkpOwotfQotCi1URVNUKE1vY2tGdW5jdGlvblRlc3QsIFdvcmtzRm9yVm9pZFVu
YXJ5KSB7Ci0gIE1vY2tGdW5jdGlvbjx2b2lkKGludCk+IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9v
LCBDYWxsKDEpKTsKLSAgZm9vLkNhbGwoMSk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwg
V29ya3NGb3JOb25Wb2lkQmluYXJ5KSB7Ci0gIE1vY2tGdW5jdGlvbjxpbnQoYm9vbCwgaW50KT4g
Zm9vOwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoZmFsc2UsIDQyKSkKLSAgICAgIC5XaWxsT25j
ZShSZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKLSAgRVhQRUNUX0NBTEwo
Zm9vLCBDYWxsKHRydWUsIEdlKDEwMCkpKQotICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7Ci0g
IEVYUEVDVF9FUSgxLCBmb28uQ2FsbChmYWxzZSwgNDIpKTsKLSAgRVhQRUNUX0VRKDIsIGZvby5D
YWxsKGZhbHNlLCA0MikpOwotICBFWFBFQ1RfRVEoMywgZm9vLkNhbGwodHJ1ZSwgMTIwKSk7Ci19
Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgV29ya3NGb3IxMEFyZ3VtZW50cykgewotICBNb2Nr
RnVuY3Rpb248aW50KGJvb2wgYTAsIGNoYXIgYTEsIGludCBhMiwgaW50IGEzLCBpbnQgYTQsCi0g
ICAgICAgICAgICAgICAgICAgaW50IGE1LCBpbnQgYTYsIGNoYXIgYTcsIGludCBhOCwgYm9vbCBh
OSk+IGZvbzsKLSAgRVhQRUNUX0NBTEwoZm9vLCBDYWxsKF8sICdhJywgXywgXywgXywgXywgXywg
XywgXywgXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxPbmNlKFJl
dHVybigyKSk7Ci0gIEVYUEVDVF9FUSgxLCBmb28uQ2FsbChmYWxzZSwgJ2EnLCAwLCAwLCAwLCAw
LCAwLCAnYicsIDAsIHRydWUpKTsKLSAgRVhQRUNUX0VRKDIsIGZvby5DYWxsKHRydWUsICdhJywg
MCwgMCwgMCwgMCwgMCwgJ2InLCAxLCBmYWxzZSkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9G
VU5DVElPTl8KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgQXNTdGRGdW5jdGlvbikgewotICBNb2Nr
RnVuY3Rpb248aW50KGludCk+IGZvbzsKLSAgYXV0byBjYWxsID0gW10oY29uc3Qgc3RkOjpmdW5j
dGlvbjxpbnQoaW50KT4gJmYsIGludCBpKSB7Ci0gICAgcmV0dXJuIGYoaSk7Ci0gIH07Ci0gIEVY
UEVDVF9DQUxMKGZvbywgQ2FsbCgxKSkuV2lsbE9uY2UoUmV0dXJuKC0xKSk7Ci0gIEVYUEVDVF9D
QUxMKGZvbywgQ2FsbCgyKSkuV2lsbE9uY2UoUmV0dXJuKC0yKSk7Ci0gIEVYUEVDVF9FUSgtMSwg
Y2FsbChmb28uQXNTdGRGdW5jdGlvbigpLCAxKSk7Ci0gIEVYUEVDVF9FUSgtMiwgY2FsbChmb28u
QXNTdGRGdW5jdGlvbigpLCAyKSk7Ci19Ci0KLVRFU1QoTW9ja0Z1bmN0aW9uVGVzdCwgQXNTdGRG
dW5jdGlvblJldHVybnNSZWZlcmVuY2UpIHsKLSAgTW9ja0Z1bmN0aW9uPGludCYoKT4gZm9vOwot
ICBpbnQgdmFsdWUgPSAxOwotICBFWFBFQ1RfQ0FMTChmb28sIENhbGwoKSkuV2lsbE9uY2UoUmV0
dXJuUmVmKHZhbHVlKSk7Ci0gIGludCYgcmVmID0gZm9vLkFzU3RkRnVuY3Rpb24oKSgpOwotICBF
WFBFQ1RfRVEoMSwgcmVmKTsKLSAgdmFsdWUgPSAyOwotICBFWFBFQ1RfRVEoMiwgcmVmKTsKLX0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLQotfSAgLy8gbmFtZXNwYWNlIGdt
b2NrX2dlbmVyYXRlZF9mdW5jdGlvbl9tb2NrZXJzX3Rlc3QKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5h
bC11dGlsc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQtaW50ZXJu
YWwtdXRpbHNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhNTM1YTM0
NjQxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1nZW5lcmF0ZWQt
aW50ZXJuYWwtdXRpbHNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJh
bWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIHRl
c3RzIHRoZSBpbnRlcm5hbCB1dGlsaXRpZXMuCi0KLSNpbmNsdWRlICJnbW9jay9pbnRlcm5hbC9n
bW9jay1nZW5lcmF0ZWQtaW50ZXJuYWwtdXRpbHMuaCIKLSNpbmNsdWRlICJnbW9jay9pbnRlcm5h
bC9nbW9jay1pbnRlcm5hbC11dGlscy5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5h
bWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6dHVwbGU7Ci11c2luZyA6OnRlc3Rpbmc6Ok1h
dGNoZXI7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpDb21waWxlQXNzZXJ0VHlwZXNFcXVh
bDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok1hdGNoZXJUdXBsZTsKLXVzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkZ1bmN0aW9uOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SWdu
b3JlZFZhbHVlOwotCi0vLyBUZXN0cyB0aGUgTWF0Y2hlclR1cGxlIHRlbXBsYXRlIHN0cnVjdC4K
LQotVEVTVChNYXRjaGVyVHVwbGVUZXN0LCBGb3JTaXplMCkgewotICBDb21waWxlQXNzZXJ0VHlw
ZXNFcXVhbDx0dXBsZTw+LCBNYXRjaGVyVHVwbGU8dHVwbGU8PiA+Ojp0eXBlPigpOwotfQotCi1U
RVNUKE1hdGNoZXJUdXBsZVRlc3QsIEZvclNpemUxKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0Vx
dWFsPHR1cGxlPE1hdGNoZXI8aW50PiA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRj
aGVyVHVwbGU8dHVwbGU8aW50PiA+Ojp0eXBlPigpOwotfQotCi1URVNUKE1hdGNoZXJUdXBsZVRl
c3QsIEZvclNpemUyKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPE1hdGNoZXI8
aW50PiwgTWF0Y2hlcjxjaGFyPiA+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaGVy
VHVwbGU8dHVwbGU8aW50LCBjaGFyPiA+Ojp0eXBlPigpOwotfQotCi1URVNUKE1hdGNoZXJUdXBs
ZVRlc3QsIEZvclNpemU1KSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPE1hdGNo
ZXI8aW50PiwgTWF0Y2hlcjxjaGFyPiwgTWF0Y2hlcjxib29sPiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0Y2hlcjxkb3VibGU+LCBNYXRjaGVyPGNoYXIqPiA+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRjaGVyVHVwbGU8dHVwbGU8aW50LCBjaGFyLCBib29sLCBk
b3VibGUsIGNoYXIqPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0
eXBlPigpOwotfQotCi0vLyBUZXN0cyB0aGUgRnVuY3Rpb24gdGVtcGxhdGUgc3RydWN0LgotCi1U
RVNUKEZ1bmN0aW9uVGVzdCwgTnVsbGFyeSkgewotICB0eXBlZGVmIEZ1bmN0aW9uPGludCgpPiBG
OyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgRjo6UmVzdWx0Pigp
OwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTw+LCBGOjpBcmd1bWVudFR1cGxlPigp
OwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTw+LCBGOjpBcmd1bWVudE1hdGNoZXJU
dXBsZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZCgpLCBGOjpNYWtlUmVzdWx0
Vm9pZD4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8SWdub3JlZFZhbHVlKCksIEY6Ok1h
a2VSZXN1bHRJZ25vcmVkVmFsdWU+KCk7Ci19Ci0KLVRFU1QoRnVuY3Rpb25UZXN0LCBVbmFyeSkg
ewotICB0eXBlZGVmIEZ1bmN0aW9uPGludChib29sKT4gRjsgIC8vIE5PTElOVAotICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxpbnQsIEY6OlJlc3VsdD4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8Ym9vbCwgRjo6QXJndW1lbnQxPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0
dXBsZTxib29sPiwgRjo6QXJndW1lbnRUdXBsZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1
YWw8dHVwbGU8TWF0Y2hlcjxib29sPiA+LCBGOjpBcmd1bWVudE1hdGNoZXJUdXBsZT4oKTsKLSAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZChib29sKSwgRjo6TWFrZVJlc3VsdFZvaWQ+KCk7
ICAvLyBOT0xJTlQKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8SWdub3JlZFZhbHVlKGJvb2wp
LCAgLy8gTk9MSU5UCi0gICAgICBGOjpNYWtlUmVzdWx0SWdub3JlZFZhbHVlPigpOwotfQotCi1U
RVNUKEZ1bmN0aW9uVGVzdCwgQmluYXJ5KSB7Ci0gIHR5cGVkZWYgRnVuY3Rpb248aW50KGJvb2ws
IGNvbnN0IGxvbmcmKT4gRjsgIC8vIE5PTElOVAotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQsIEY6OlJlc3VsdD4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Ym9vbCwgRjo6QXJn
dW1lbnQxPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBsb25nJiwgRjo6QXJn
dW1lbnQyPigpOyAgLy8gTk9MSU5UCi0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPHR1cGxlPGJv
b2wsIGNvbnN0IGxvbmcmPiwgRjo6QXJndW1lbnRUdXBsZT4oKTsgIC8vIE5PTElOVAotICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTxNYXRjaGVyPGJvb2w+LCBNYXRjaGVyPGNvbnN0IGxv
bmcmPiA+LCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEY6OkFyZ3VtZW50
TWF0Y2hlclR1cGxlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkKGJvb2wsIGNv
bnN0IGxvbmcmKSwgRjo6TWFrZVJlc3VsdFZvaWQ+KCk7ICAvLyBOT0xJTlQKLSAgQ29tcGlsZUFz
c2VydFR5cGVzRXF1YWw8SWdub3JlZFZhbHVlKGJvb2wsIGNvbnN0IGxvbmcmKSwgIC8vIE5PTElO
VAotICAgICAgRjo6TWFrZVJlc3VsdElnbm9yZWRWYWx1ZT4oKTsKLX0KLQotVEVTVChGdW5jdGlv
blRlc3QsIExvbmdBcmd1bWVudExpc3QpIHsKLSAgdHlwZWRlZiBGdW5jdGlvbjxjaGFyKGJvb2ws
IGludCwgY2hhciosIGludCYsIGNvbnN0IGxvbmcmKT4gRjsgIC8vIE5PTElOVAotICBDb21waWxl
QXNzZXJ0VHlwZXNFcXVhbDxjaGFyLCBGOjpSZXN1bHQ+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBl
c0VxdWFsPGJvb2wsIEY6OkFyZ3VtZW50MT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8
aW50LCBGOjpBcmd1bWVudDI+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXIqLCBG
OjpBcmd1bWVudDM+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCYsIEY6OkFyZ3Vt
ZW50ND4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3QgbG9uZyYsIEY6OkFyZ3Vt
ZW50NT4oKTsgIC8vIE5PTElOVAotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx0dXBsZTxib29s
LCBpbnQsIGNoYXIqLCBpbnQmLCBjb25zdCBsb25nJj4sICAvLyBOT0xJTlQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgRjo6QXJndW1lbnRUdXBsZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8dHVwbGU8TWF0Y2hlcjxib29sPiwgTWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXIqPiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hlcjxpbnQmPiwgTWF0Y2hlcjxj
b25zdCBsb25nJj4gPiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAgICBGOjpB
cmd1bWVudE1hdGNoZXJUdXBsZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8dm9pZChi
b29sLCBpbnQsIGNoYXIqLCBpbnQmLCBjb25zdCBsb25nJiksICAvLyBOT0xJTlQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgRjo6TWFrZVJlc3VsdFZvaWQ+KCk7Ci0gIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPAotICAgICAgSWdub3JlZFZhbHVlKGJvb2wsIGludCwgY2hhciosIGludCYsIGNv
bnN0IGxvbmcmKSwgIC8vIE5PTElOVAotICAgICAgRjo6TWFrZVJlc3VsdElnbm9yZWRWYWx1ZT4o
KTsKLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVyc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4MjM0ODU4ZDFkNjAuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVyc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTI4
NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nl
cy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGJ1aWx0LWluIG1hdGNoZXJzIGdlbmVyYXRl
ZCBieSBhIHNjcmlwdC4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1tYXRjaGVy
cy5oIgotCi0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0Pgot
I2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHV0aWxpdHk+
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotCi1uYW1lc3Bh
Y2UgewotCi11c2luZyBzdGQ6Omxpc3Q7Ci11c2luZyBzdGQ6Om1hcDsKLXVzaW5nIHN0ZDo6cGFp
cjsKLXVzaW5nIHN0ZDo6c2V0OwotdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07Ci11c2luZyBzdGQ6
OnZlY3RvcjsKLXVzaW5nIHRlc3Rpbmc6OmdldDsKLXVzaW5nIHRlc3Rpbmc6Om1ha2VfdHVwbGU7
Ci11c2luZyB0ZXN0aW5nOjp0dXBsZTsKLXVzaW5nIHRlc3Rpbmc6Ol87Ci11c2luZyB0ZXN0aW5n
OjpBcmdzOwotdXNpbmcgdGVzdGluZzo6Q29udGFpbnM7Ci11c2luZyB0ZXN0aW5nOjpFbGVtZW50
c0FyZTsKLXVzaW5nIHRlc3Rpbmc6OkVsZW1lbnRzQXJlQXJyYXk7Ci11c2luZyB0ZXN0aW5nOjpF
cTsKLXVzaW5nIHRlc3Rpbmc6OkdlOwotdXNpbmcgdGVzdGluZzo6R3Q7Ci11c2luZyB0ZXN0aW5n
OjpMZTsKLXVzaW5nIHRlc3Rpbmc6Okx0OwotdXNpbmcgdGVzdGluZzo6TWFrZU1hdGNoZXI7Ci11
c2luZyB0ZXN0aW5nOjpNYXRjaGVyOwotdXNpbmcgdGVzdGluZzo6TWF0Y2hlckludGVyZmFjZTsK
LXVzaW5nIHRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci11c2luZyB0ZXN0aW5nOjpOZTsK
LXVzaW5nIHRlc3Rpbmc6Ok5vdDsKLXVzaW5nIHRlc3Rpbmc6OlBvaW50ZWU7Ci11c2luZyB0ZXN0
aW5nOjpQcmludFRvU3RyaW5nOwotdXNpbmcgdGVzdGluZzo6UmVmOwotdXNpbmcgdGVzdGluZzo6
U3RhdGljQXNzZXJ0VHlwZUVxOwotdXNpbmcgdGVzdGluZzo6U3RyRXE7Ci11c2luZyB0ZXN0aW5n
OjpWYWx1ZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFbGVtZW50c0FyZUFycmF5TWF0Y2hl
cjsKLQotLy8gUmV0dXJucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGdpdmVuIG1hdGNoZXIuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyaW5nIERlc2NyaWJlKGNvbnN0IE1hdGNoZXI8
VD4mIG0pIHsKLSAgc3RyaW5nc3RyZWFtIHNzOwotICBtLkRlc2NyaWJlVG8oJnNzKTsKLSAgcmV0
dXJuIHNzLnN0cigpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbmVn
YXRpb24gb2YgdGhlIGdpdmVuIG1hdGNoZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6
c3RyaW5nIERlc2NyaWJlTmVnYXRpb24oY29uc3QgTWF0Y2hlcjxUPiYgbSkgewotICBzdHJpbmdz
dHJlYW0gc3M7Ci0gIG0uRGVzY3JpYmVOZWdhdGlvblRvKCZzcyk7Ci0gIHJldHVybiBzcy5zdHIo
KTsKLX0KLQotLy8gUmV0dXJucyB0aGUgcmVhc29uIHdoeSB4IG1hdGNoZXMsIG9yIGRvZXNuJ3Qg
bWF0Y2gsIG0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0Y2hlclR5cGUsIHR5cGVuYW1lIFZhbHVl
Pgotc3RkOjpzdHJpbmcgRXhwbGFpbihjb25zdCBNYXRjaGVyVHlwZSYgbSwgY29uc3QgVmFsdWUm
IHgpIHsKLSAgc3RyaW5nc3RyZWFtIHNzOwotICBtLkV4cGxhaW5NYXRjaFJlc3VsdFRvKHgsICZz
cyk7Ci0gIHJldHVybiBzcy5zdHIoKTsKLX0KLQotLy8gVGVzdHMgQXJnczxrMCwgLi4uLCBrbj4o
bSkuCi0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNaZXJvVGVtcGxhdGVBcmcpIHsKLSAgY29uc3Qg
dHVwbGU8aW50LCBib29sPiB0KDUsIHRydWUpOwotICBFWFBFQ1RfVEhBVCh0LCBBcmdzPD4oRXEo
dHVwbGU8PigpKSkpOwotICBFWFBFQ1RfVEhBVCh0LCBOb3QoQXJnczw+KE5lKHR1cGxlPD4oKSkp
KSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNPbmVUZW1wbGF0ZUFyZykgewotICBjb25z
dCB0dXBsZTxpbnQsIGJvb2w+IHQoNSwgdHJ1ZSk7Ci0gIEVYUEVDVF9USEFUKHQsIEFyZ3M8MD4o
RXEobWFrZV90dXBsZSg1KSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgQXJnczwxPihFcShtYWtlX3R1
cGxlKHRydWUpKSkpOwotICBFWFBFQ1RfVEhBVCh0LCBOb3QoQXJnczwxPihFcShtYWtlX3R1cGxl
KGZhbHNlKSkpKSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNUd29UZW1wbGF0ZUFyZ3Mp
IHsKLSAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwgbG9uZz4gdCg0LCA1LCA2TCk7ICAvLyBOT0xJ
TlQKLQotICBFWFBFQ1RfVEhBVCh0LCAoQXJnczwwLCAxPihMdCgpKSkpOwotICBFWFBFQ1RfVEhB
VCh0LCAoQXJnczwxLCAyPihMdCgpKSkpOwotICBFWFBFQ1RfVEhBVCh0LCBOb3QoQXJnczwwLCAy
PihHdCgpKSkpOwotfQotCi1URVNUKEFyZ3NUZXN0LCBBY2NlcHRzUmVwZWF0ZWRUZW1wbGF0ZUFy
Z3MpIHsKLSAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwgbG9uZz4gdCg0LCA1LCA2TCk7ICAvLyBO
T0xJTlQKLSAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8MCwgMD4oRXEoKSkpKTsKLSAgRVhQRUNUX1RI
QVQodCwgTm90KEFyZ3M8MSwgMT4oTmUoKSkpKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgQWNjZXB0
c0RlY3JlYXNpbmdUZW1wbGF0ZUFyZ3MpIHsKLSAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwgbG9u
Zz4gdCg0LCA1LCA2TCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RIQVQodCwgKEFyZ3M8MiwgMD4o
R3QoKSkpKTsKLSAgRVhQRUNUX1RIQVQodCwgTm90KEFyZ3M8MiwgMT4oTHQoKSkpKTsKLX0KLQot
Ly8gVGhlIE1BVENIRVIqKCkgbWFjcm9zIHRyaWdnZXIgd2FybmluZyBDNDEwMCAodW5yZWZlcmVu
Y2VkIGZvcm1hbAotLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdpdGggLVc0LiAgVW5mb3J0dW5hdGVs
eSB0aGV5IGNhbm5vdCBiZSBmaXhlZCBpbgotLy8gdGhlIG1hY3JvIGRlZmluaXRpb24sIGFzIHRo
ZSB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1hY3JvCi0vLyBpcyBleHBhbmRlZCBh
bmQgbWFjcm8gZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNwcmFnbWEuICBUaGVyZWZvcmUKLS8v
IHdlIHN1cHByZXNzIHRoZW0gaGVyZS4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2Fybmlu
ZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYKLQotTUFUQ0hF
UihTdW1Jc1plcm8sICIiKSB7Ci0gIHJldHVybiBnZXQ8MD4oYXJnKSArIGdldDwxPihhcmcpICsg
Z2V0PDI+KGFyZykgPT0gMDsKLX0KLQotVEVTVChBcmdzVGVzdCwgQWNjZXB0c01vcmVUZW1wbGF0
ZUFyZ3NUaGFuQXJpdHlPZk9yaWdpbmFsVHVwbGUpIHsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBs
ZSgtMSwgMiksIChBcmdzPDAsIDAsIDE+KFN1bUlzWmVybygpKSkpOwotICBFWFBFQ1RfVEhBVCht
YWtlX3R1cGxlKDEsIDIpLCBOb3QoQXJnczwwLCAwLCAxPihTdW1Jc1plcm8oKSkpKTsKLX0KLQot
VEVTVChBcmdzVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgY29uc3QgdHVwbGU8c2hvcnQsIGludCwg
bG9uZywgaW50PiB0KDQsIDUsIDZMLCA2KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfVEhBVCh0LCAo
QXJnczwxLCAyLCAzPihBcmdzPDEsIDI+KEVxKCkpKSkpOwotICBFWFBFQ1RfVEhBVCh0LCAoQXJn
czwwLCAxLCAzPihBcmdzPDAsIDI+KEx0KCkpKSkpOwotfQotCi1URVNUKEFyZ3NUZXN0LCBDYW5N
YXRjaFR1cGxlQnlWYWx1ZSkgewotICB0eXBlZGVmIHR1cGxlPGNoYXIsIGludCwgaW50PiBUdXBs
ZTM7Ci0gIGNvbnN0IE1hdGNoZXI8VHVwbGUzPiBtID0gQXJnczwxLCAyPihMdCgpKTsKLSAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMygnYScsIDEsIDIpKSk7Ci0gIEVYUEVDVF9GQUxTRSht
Lk1hdGNoZXMoVHVwbGUzKCdiJywgMiwgMikpKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgQ2FuTWF0
Y2hUdXBsZUJ5UmVmZXJlbmNlKSB7Ci0gIHR5cGVkZWYgdHVwbGU8Y2hhciwgY2hhciwgaW50PiBU
dXBsZTM7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgVHVwbGUzJj4gbSA9IEFyZ3M8MCwgMT4oTHQo
KSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTMoJ2EnLCAnYicsIDIpKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoVHVwbGUzKCdiJywgJ2InLCAyKSkpOwotfQotCi0vLyBWYWxp
ZGF0ZXMgdGhhdCBhcmcgaXMgcHJpbnRlZCBhcyBzdHIuCi1NQVRDSEVSX1AoUHJpbnRzQXMsIHN0
ciwgIiIpIHsKLSAgcmV0dXJuIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYXJnKSA9PSBzdHI7Ci19
Ci0KLVRFU1QoQXJnc1Rlc3QsIEFjY2VwdHNUZW5UZW1wbGF0ZUFyZ3MpIHsKLSAgRVhQRUNUX1RI
QVQobWFrZV90dXBsZSgwLCAxTCwgMiwgM0wsIDQsIDUsIDYsIDcsIDgsIDkpLAotICAgICAgICAg
ICAgICAoQXJnczw5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwPigKLSAgICAgICAgICAgICAg
ICAgIFByaW50c0FzKCIoOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMCkiKSkpKTsKLSAgRVhQ
RUNUX1RIQVQobWFrZV90dXBsZSgwLCAxTCwgMiwgM0wsIDQsIDUsIDYsIDcsIDgsIDkpLAotICAg
ICAgICAgICAgICBOb3QoQXJnczw5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwPigKLSAgICAg
ICAgICAgICAgICAgICAgICBQcmludHNBcygiKDAsIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAp
IikpKSk7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIERlc2NpcmJlc1NlbGZDb3JyZWN0bHkpIHsKLSAg
Y29uc3QgTWF0Y2hlcjx0dXBsZTxpbnQsIGJvb2wsIGNoYXI+ID4gbSA9IEFyZ3M8MiwgMD4oTHQo
KSk7Ci0gIEVYUEVDVF9FUSgiYXJlIGEgdHVwbGUgd2hvc2UgZmllbGRzICgjMiwgIzApIGFyZSBh
IHBhaXIgd2hlcmUgIgotICAgICAgICAgICAgInRoZSBmaXJzdCA8IHRoZSBzZWNvbmQiLAotICAg
ICAgICAgICAgRGVzY3JpYmUobSkpOwotfQotCi1URVNUKEFyZ3NUZXN0LCBEZXNjaXJiZXNOZXN0
ZWRBcmdzQ29ycmVjdGx5KSB7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgdHVwbGU8aW50LCBib29s
LCBjaGFyLCBpbnQ+Jj4gbSA9Ci0gICAgICBBcmdzPDAsIDIsIDM+KEFyZ3M8MiwgMD4oTHQoKSkp
OwotICBFWFBFQ1RfRVEoImFyZSBhIHR1cGxlIHdob3NlIGZpZWxkcyAoIzAsICMyLCAjMykgYXJl
IGEgdHVwbGUgIgotICAgICAgICAgICAgIndob3NlIGZpZWxkcyAoIzIsICMwKSBhcmUgYSBwYWly
IHdoZXJlIHRoZSBmaXJzdCA8IHRoZSBzZWNvbmQiLAotICAgICAgICAgICAgRGVzY3JpYmUobSkp
OwotfQotCi1URVNUKEFyZ3NUZXN0LCBEZXNjcmliZXNOZWdhdGlvbkNvcnJlY3RseSkgewotICBj
b25zdCBNYXRjaGVyPHR1cGxlPGludCwgY2hhcj4gPiBtID0gQXJnczwxLCAwPihHdCgpKTsKLSAg
RVhQRUNUX0VRKCJhcmUgYSB0dXBsZSB3aG9zZSBmaWVsZHMgKCMxLCAjMCkgYXJlbid0IGEgcGFp
ciAiCi0gICAgICAgICAgICAid2hlcmUgdGhlIGZpcnN0ID4gdGhlIHNlY29uZCIsCi0gICAgICAg
ICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChBcmdzVGVzdCwgRXhwbGFpbnNN
YXRjaFJlc3VsdFdpdGhvdXRJbm5lckV4cGxhbmF0aW9uKSB7Ci0gIGNvbnN0IE1hdGNoZXI8dHVw
bGU8Ym9vbCwgaW50LCBpbnQ+ID4gbSA9IEFyZ3M8MSwgMj4oRXEoKSk7Ci0gIEVYUEVDVF9FUSgi
d2hvc2UgZmllbGRzICgjMSwgIzIpIGFyZSAoNDIsIDQyKSIsCi0gICAgICAgICAgICBFeHBsYWlu
KG0sIG1ha2VfdHVwbGUoZmFsc2UsIDQyLCA0MikpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBmaWVs
ZHMgKCMxLCAjMikgYXJlICg0MiwgNDMpIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV90
dXBsZShmYWxzZSwgNDIsIDQzKSkpOwotfQotCi0vLyBGb3IgdGVzdGluZyBBcmdzPD4ncyBleHBs
YW5hdGlvbi4KLWNsYXNzIExlc3NUaGFuTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNl
PHR1cGxlPGNoYXIsIGludD4gPiB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgRGVzY3JpYmVU
byg6OnN0ZDo6b3N0cmVhbSogb3MpIGNvbnN0IHt9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5k
RXhwbGFpbih0dXBsZTxjaGFyLCBpbnQ+IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVyKSBjb25zdCB7Ci0gICAgY29uc3Qg
aW50IGRpZmYgPSBnZXQ8MD4odmFsdWUpIC0gZ2V0PDE+KHZhbHVlKTsKLSAgICBpZiAoZGlmZiA+
IDApIHsKLSAgICAgICpsaXN0ZW5lciA8PCAid2hlcmUgdGhlIGZpcnN0IHZhbHVlIGlzICIgPDwg
ZGlmZgotICAgICAgICAgICAgICAgIDw8ICIgbW9yZSB0aGFuIHRoZSBzZWNvbmQiOwotICAgIH0K
LSAgICByZXR1cm4gZGlmZiA8IDA7Ci0gIH0KLX07Ci0KLU1hdGNoZXI8dHVwbGU8Y2hhciwgaW50
PiA+IExlc3NUaGFuKCkgewotICByZXR1cm4gTWFrZU1hdGNoZXIobmV3IExlc3NUaGFuTWF0Y2hl
cik7Ci19Ci0KLVRFU1QoQXJnc1Rlc3QsIEV4cGxhaW5zTWF0Y2hSZXN1bHRXaXRoSW5uZXJFeHBs
YW5hdGlvbikgewotICBjb25zdCBNYXRjaGVyPHR1cGxlPGNoYXIsIGludCwgaW50PiA+IG0gPSBB
cmdzPDAsIDI+KExlc3NUaGFuKCkpOwotICBFWFBFQ1RfRVEoIndob3NlIGZpZWxkcyAoIzAsICMy
KSBhcmUgKCdhJyAoOTcsIDB4NjEpLCA0MiksICIKLSAgICAgICAgICAgICJ3aGVyZSB0aGUgZmly
c3QgdmFsdWUgaXMgNTUgbW9yZSB0aGFuIHRoZSBzZWNvbmQiLAotICAgICAgICAgICAgRXhwbGFp
bihtLCBtYWtlX3R1cGxlKCdhJywgNDIsIDQyKSkpOwotICBFWFBFQ1RfRVEoIndob3NlIGZpZWxk
cyAoIzAsICMyKSBhcmUgKCdcXDAnLCA0MykiLAotICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtl
X3R1cGxlKCdcMCcsIDQyLCA0MykpKTsKLX0KLQotLy8gRm9yIHRlc3RpbmcgRXhwbGFpbk1hdGNo
UmVzdWx0VG8oKS4KLWNsYXNzIEdyZWF0ZXJUaGFuTWF0Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50
ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR3JlYXRlclRoYW5NYXRjaGVyKGlu
dCByaHMpIDogcmhzXyhyaHMpIHt9Ci0KLSAgdmlydHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6
Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBncmVhdGVyIHRoYW4gIiA8PCBy
aHNfOwotICB9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihpbnQgbGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxpc3RlbmVy
KSBjb25zdCB7Ci0gICAgY29uc3QgaW50IGRpZmYgPSBsaHMgLSByaHNfOwotICAgIGlmIChkaWZm
ID4gMCkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiIDw8IGRpZmYgPDwgIiBtb3Jl
IHRoYW4gIiA8PCByaHNfOwotICAgIH0gZWxzZSBpZiAoZGlmZiA9PSAwKSB7Ci0gICAgICAqbGlz
dGVuZXIgPDwgIndoaWNoIGlzIHRoZSBzYW1lIGFzICIgPDwgcmhzXzsKLSAgICB9IGVsc2Ugewot
ICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiIDw8IC1kaWZmIDw8ICIgbGVzcyB0aGFuICIg
PDwgcmhzXzsKLSAgICB9Ci0KLSAgICByZXR1cm4gbGhzID4gcmhzXzsKLSAgfQotCi0gcHJpdmF0
ZToKLSAgaW50IHJoc187Ci19OwotCi1NYXRjaGVyPGludD4gR3JlYXRlclRoYW4oaW50IG4pIHsK
LSAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBHcmVhdGVyVGhhbk1hdGNoZXIobikpOwotfQotCi0v
LyBUZXN0cyBmb3IgRWxlbWVudHNBcmUoKS4KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIENhbkRl
c2NyaWJlRXhwZWN0aW5nTm9FbGVtZW50KSB7Ci0gIE1hdGNoZXI8Y29uc3QgdmVjdG9yPGludD4m
PiBtID0gRWxlbWVudHNBcmUoKTsKLSAgRVhQRUNUX0VRKCJpcyBlbXB0eSIsIERlc2NyaWJlKG0p
KTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIENhbkRlc2NyaWJlRXhwZWN0aW5nT25lRWxl
bWVudCkgewotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IEVsZW1lbnRzQXJlKEd0KDUpKTsK
LSAgRVhQRUNUX0VRKCJoYXMgMSBlbGVtZW50IHRoYXQgaXMgPiA1IiwgRGVzY3JpYmUobSkpOwot
fQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgQ2FuRGVzY3JpYmVFeHBlY3RpbmdNYW55RWxlbWVu
dHMpIHsKLSAgTWF0Y2hlcjxsaXN0PHN0ZDo6c3RyaW5nPiA+IG0gPSBFbGVtZW50c0FyZShTdHJF
cSgib25lIiksICJ0d28iKTsKLSAgRVhQRUNUX0VRKCJoYXMgMiBlbGVtZW50cyB3aGVyZVxuIgot
ICAgICAgICAgICAgImVsZW1lbnQgIzAgaXMgZXF1YWwgdG8gXCJvbmVcIixcbiIKLSAgICAgICAg
ICAgICJlbGVtZW50ICMxIGlzIGVxdWFsIHRvIFwidHdvXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0K
LVRFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9uT2ZFeHBlY3RpbmdOb0Vs
ZW1lbnQpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBFbGVtZW50c0FyZSgpOwotICBF
WFBFQ1RfRVEoImlzbid0IGVtcHR5IiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1Qo
RWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9uT2ZFeHBlY3RpbmdPbmVFbG1lbnQp
IHsKLSAgTWF0Y2hlcjxjb25zdCBsaXN0PGludD4mID4gbSA9IEVsZW1lbnRzQXJlKEd0KDUpKTsK
LSAgRVhQRUNUX0VRKCJkb2Vzbid0IGhhdmUgMSBlbGVtZW50LCBvclxuIgotICAgICAgICAgICAg
ImVsZW1lbnQgIzAgaXNuJ3QgPiA1IiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1Qo
RWxlbWVudHNBcmVUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9uT2ZFeHBlY3RpbmdNYW55RWxlbWVu
dHMpIHsKLSAgTWF0Y2hlcjxjb25zdCBsaXN0PHN0ZDo6c3RyaW5nPiY+IG0gPSBFbGVtZW50c0Fy
ZSgib25lIiwgInR3byIpOwotICBFWFBFQ1RfRVEoImRvZXNuJ3QgaGF2ZSAyIGVsZW1lbnRzLCBv
clxuIgotICAgICAgICAgICAgImVsZW1lbnQgIzAgaXNuJ3QgZXF1YWwgdG8gXCJvbmVcIiwgb3Jc
biIKLSAgICAgICAgICAgICJlbGVtZW50ICMxIGlzbid0IGVxdWFsIHRvIFwidHdvXCIiLCBEZXNj
cmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIERvZXNOb3RFeHBs
YWluVHJpdmlhbE1hdGNoKSB7Ci0gIE1hdGNoZXI8Y29uc3QgbGlzdDxpbnQ+JiA+IG0gPSBFbGVt
ZW50c0FyZSgxLCBOZSgyKSk7Ci0KLSAgbGlzdDxpbnQ+IHRlc3RfbGlzdDsKLSAgdGVzdF9saXN0
LnB1c2hfYmFjaygxKTsKLSAgdGVzdF9saXN0LnB1c2hfYmFjaygzKTsKLSAgRVhQRUNUX0VRKCIi
LCBFeHBsYWluKG0sIHRlc3RfbGlzdCkpOyAgLy8gTm8gbmVlZCB0byBleHBsYWluIGFueXRoaW5n
LgotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgRXhwbGFpbnNOb25Ucml2aWFsTWF0Y2gpIHsK
LSAgTWF0Y2hlcjxjb25zdCB2ZWN0b3I8aW50PiYgPiBtID0KLSAgICAgIEVsZW1lbnRzQXJlKEdy
ZWF0ZXJUaGFuKDEpLCAwLCBHcmVhdGVyVGhhbigyKSk7Ci0KLSAgY29uc3QgaW50IGFbXSA9IHsg
MTAsIDAsIDEwMCB9OwotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RFU1RfQVJS
QVlfU0laRV8oYSkpOwotICBFWFBFQ1RfRVEoIndob3NlIGVsZW1lbnQgIzAgbWF0Y2hlcywgd2hp
Y2ggaXMgOSBtb3JlIHRoYW4gMSxcbiIKLSAgICAgICAgICAgICJhbmQgd2hvc2UgZWxlbWVudCAj
MiBtYXRjaGVzLCB3aGljaCBpcyA5OCBtb3JlIHRoYW4gMiIsCi0gICAgICAgICAgICBFeHBsYWlu
KG0sIHRlc3RfdmVjdG9yKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBDYW5FeHBsYWlu
TWlzbWF0Y2hXcm9uZ1NpemUpIHsKLSAgTWF0Y2hlcjxjb25zdCBsaXN0PGludD4mID4gbSA9IEVs
ZW1lbnRzQXJlKDEsIDMpOwotCi0gIGxpc3Q8aW50PiB0ZXN0X2xpc3Q7Ci0gIC8vIE5vIG5lZWQg
dG8gZXhwbGFpbiB3aGVuIHRoZSBjb250YWluZXIgaXMgZW1wdHkuCi0gIEVYUEVDVF9FUSgiIiwg
RXhwbGFpbihtLCB0ZXN0X2xpc3QpKTsKLQotICB0ZXN0X2xpc3QucHVzaF9iYWNrKDEpOwotICBF
WFBFQ1RfRVEoIndoaWNoIGhhcyAxIGVsZW1lbnQiLCBFeHBsYWluKG0sIHRlc3RfbGlzdCkpOwot
fQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgQ2FuRXhwbGFpbk1pc21hdGNoUmlnaHRTaXplKSB7
Ci0gIE1hdGNoZXI8Y29uc3QgdmVjdG9yPGludD4mID4gbSA9IEVsZW1lbnRzQXJlKDEsIEdyZWF0
ZXJUaGFuKDUpKTsKLQotICB2ZWN0b3I8aW50PiB2OwotICB2LnB1c2hfYmFjaygyKTsKLSAgdi5w
dXNoX2JhY2soMSk7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZWxlbWVudCAjMCBkb2Vzbid0IG1hdGNo
IiwgRXhwbGFpbihtLCB2KSk7Ci0KLSAgdlswXSA9IDE7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZWxl
bWVudCAjMSBkb2Vzbid0IG1hdGNoLCB3aGljaCBpcyA0IGxlc3MgdGhhbiA1IiwKLSAgICAgICAg
ICAgIEV4cGxhaW4obSwgdikpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc09u
ZUVsZW1lbnRWZWN0b3IpIHsKLSAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKLSAg
dGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0ZXN0IHN0cmluZyIpOwotCi0gIEVYUEVDVF9USEFUKHRl
c3RfdmVjdG9yLCBFbGVtZW50c0FyZShTdHJFcSgidGVzdCBzdHJpbmciKSkpOwotfQotCi1URVNU
KEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc09uZUVsZW1lbnRMaXN0KSB7Ci0gIGxpc3Q8c3RkOjpz
dHJpbmc+IHRlc3RfbGlzdDsKLSAgdGVzdF9saXN0LnB1c2hfYmFjaygidGVzdCBzdHJpbmciKTsK
LQotICBFWFBFQ1RfVEhBVCh0ZXN0X2xpc3QsIEVsZW1lbnRzQXJlKCJ0ZXN0IHN0cmluZyIpKTsK
LX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNUaHJlZUVsZW1lbnRWZWN0b3IpIHsK
LSAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKLSAgdGVzdF92ZWN0b3IucHVzaF9i
YWNrKCJvbmUiKTsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0d28iKTsKLSAgdGVzdF92ZWN0
b3IucHVzaF9iYWNrKCJ0aHJlZSIpOwotCi0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVt
ZW50c0FyZSgib25lIiwgU3RyRXEoInR3byIpLCBfKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVU
ZXN0LCBNYXRjaGVzT25lRWxlbWVudEVxTWF0Y2hlcikgewotICB2ZWN0b3I8aW50PiB0ZXN0X3Zl
Y3RvcjsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKDQpOwotCi0gIEVYUEVDVF9USEFUKHRlc3Rf
dmVjdG9yLCBFbGVtZW50c0FyZShFcSg0KSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwg
TWF0Y2hlc09uZUVsZW1lbnRBbnlNYXRjaGVyKSB7Ci0gIHZlY3RvcjxpbnQ+IHRlc3RfdmVjdG9y
OwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soNCk7Ci0KLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0
b3IsIEVsZW1lbnRzQXJlKF8pKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIE1hdGNoZXNP
bmVFbGVtZW50VmFsdWUpIHsKLSAgdmVjdG9yPGludD4gdGVzdF92ZWN0b3I7Ci0gIHRlc3RfdmVj
dG9yLnB1c2hfYmFjayg0KTsKLQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNB
cmUoNCkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc1RocmVlRWxlbWVudHNN
aXhlZE1hdGNoZXJzKSB7Ci0gIHZlY3RvcjxpbnQ+IHRlc3RfdmVjdG9yOwotICB0ZXN0X3ZlY3Rv
ci5wdXNoX2JhY2soMSk7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygyKTsKLSAgdGVzdF92ZWN0
b3IucHVzaF9iYWNrKDMpOwotCi0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVtZW50c0Fy
ZSgxLCBFcSgyKSwgXykpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgTWF0Y2hlc1RlbkVs
ZW1lbnRWZWN0b3IpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwg
NywgOCwgOSB9OwotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RFU1RfQVJSQVlf
U0laRV8oYSkpOwotCi0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLAotICAgICAgICAgICAgICAv
LyBUaGUgZWxlbWVudCBsaXN0IGNhbiBjb250YWluIHZhbHVlcyBhbmQvb3IgbWF0Y2hlcnMKLSAg
ICAgICAgICAgICAgLy8gb2YgZGlmZmVyZW50IHR5cGVzLgotICAgICAgICAgICAgICBFbGVtZW50
c0FyZSgwLCBHZSgwKSwgXywgMywgNCwgTmUoMiksIEVxKDYpLCA3LCA4LCBfKSk7Ci19Ci0KLVRF
U1QoRWxlbWVudHNBcmVUZXN0LCBEb2VzTm90TWF0Y2hXcm9uZ1NpemUpIHsKLSAgdmVjdG9yPHN0
ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0ZXN0IHN0
cmluZyIpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soInRlc3Qgc3RyaW5nIik7Ci0KLSAgTWF0
Y2hlcjx2ZWN0b3I8c3RkOjpzdHJpbmc+ID4gbSA9IEVsZW1lbnRzQXJlKFN0ckVxKCJ0ZXN0IHN0
cmluZyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3ZlY3RvcikpOwotfQotCi1U
RVNUKEVsZW1lbnRzQXJlVGVzdCwgRG9lc05vdE1hdGNoV3JvbmdWYWx1ZSkgewotICB2ZWN0b3I8
c3RkOjpzdHJpbmc+IHRlc3RfdmVjdG9yOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soIm90aGVy
IHN0cmluZyIpOwotCi0gIE1hdGNoZXI8dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IG0gPSBFbGVtZW50
c0FyZShTdHJFcSgidGVzdCBzdHJpbmciKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVz
dF92ZWN0b3IpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIERvZXNOb3RNYXRjaFdyb25n
T3JkZXIpIHsKLSAgdmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZXN0X3ZlY3RvcjsKLSAgdGVzdF92ZWN0
b3IucHVzaF9iYWNrKCJvbmUiKTsKLSAgdGVzdF92ZWN0b3IucHVzaF9iYWNrKCJ0aHJlZSIpOwot
ICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soInR3byIpOwotCi0gIE1hdGNoZXI8dmVjdG9yPHN0ZDo6
c3RyaW5nPiA+IG0gPQotICAgICAgRWxlbWVudHNBcmUoU3RyRXEoIm9uZSIpLCBTdHJFcSgidHdv
IiksIFN0ckVxKCJ0aHJlZSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3ZlY3Rv
cikpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgV29ya3NGb3JOZXN0ZWRDb250YWluZXIp
IHsKLSAgY29uc3QgY2hhciogc3RyaW5nc1tdID0gewotICAgICJIaSIsCi0gICAgIndvcmxkIgot
ICB9OwotCi0gIHZlY3RvcjxsaXN0PGNoYXI+ID4gbmVzdGVkOwotICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IEdURVNUX0FSUkFZX1NJWkVfKHN0cmluZ3MpOyBpKyspIHsKLSAgICBuZXN0ZWQucHVz
aF9iYWNrKGxpc3Q8Y2hhcj4oc3RyaW5nc1tpXSwgc3RyaW5nc1tpXSArIHN0cmxlbihzdHJpbmdz
W2ldKSkpOwotICB9Ci0KLSAgRVhQRUNUX1RIQVQobmVzdGVkLCBFbGVtZW50c0FyZShFbGVtZW50
c0FyZSgnSCcsIE5lKCdlJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVs
ZW1lbnRzQXJlKCd3JywgJ28nLCBfLCBfLCAnZCcpKSk7Ci0gIEVYUEVDVF9USEFUKG5lc3RlZCwg
Tm90KEVsZW1lbnRzQXJlKEVsZW1lbnRzQXJlKCdIJywgJ2UnKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoJ3cnLCAnbycsIF8sIF8sICdkJykpKSk7
Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dpdGhCeVJlZkVsZW1lbnRNYXRjaGVy
cykgewotICBpbnQgYVtdID0geyAwLCAxLCAyIH07Ci0gIHZlY3RvcjxpbnQ+IHYoYSwgYSArIEdU
RVNUX0FSUkFZX1NJWkVfKGEpKTsKLQotICBFWFBFQ1RfVEhBVCh2LCBFbGVtZW50c0FyZShSZWYo
dlswXSksIFJlZih2WzFdKSwgUmVmKHZbMl0pKSk7Ci0gIEVYUEVDVF9USEFUKHYsIE5vdChFbGVt
ZW50c0FyZShSZWYodlswXSksIFJlZih2WzFdKSwgUmVmKGFbMl0pKSkpOwotfQotCi1URVNUKEVs
ZW1lbnRzQXJlVGVzdCwgV29ya3NXaXRoQ29udGFpbmVyUG9pbnRlclVzaW5nUG9pbnRlZSkgewot
ICBpbnQgYVtdID0geyAwLCAxLCAyIH07Ci0gIHZlY3RvcjxpbnQ+IHYoYSwgYSArIEdURVNUX0FS
UkFZX1NJWkVfKGEpKTsKLQotICBFWFBFQ1RfVEhBVCgmdiwgUG9pbnRlZShFbGVtZW50c0FyZSgw
LCAxLCBfKSkpOwotICBFWFBFQ1RfVEhBVCgmdiwgTm90KFBvaW50ZWUoRWxlbWVudHNBcmUoMCwg
XywgMykpKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dpdGhOYXRpdmVBcnJh
eVBhc3NlZEJ5UmVmZXJlbmNlKSB7Ci0gIGludCBhcnJheVtdID0geyAwLCAxLCAyIH07Ci0gIEVY
UEVDVF9USEFUKGFycmF5LCBFbGVtZW50c0FyZSgwLCAxLCBfKSk7Ci0gIEVYUEVDVF9USEFUKGFy
cmF5LCBOb3QoRWxlbWVudHNBcmUoMSwgXywgXykpKTsKLSAgRVhQRUNUX1RIQVQoYXJyYXksIE5v
dChFbGVtZW50c0FyZSgwLCBfKSkpOwotfQotCi1jbGFzcyBOYXRpdmVBcnJheVBhc3NlZEFzUG9p
bnRlckFuZFNpemUgewotIHB1YmxpYzoKLSAgTmF0aXZlQXJyYXlQYXNzZWRBc1BvaW50ZXJBbmRT
aXplKCkge30KLQotICBNT0NLX01FVEhPRDIoSGVscGVyLCB2b2lkKGludCogYXJyYXksIGludCBz
aXplKSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5h
dGl2ZUFycmF5UGFzc2VkQXNQb2ludGVyQW5kU2l6ZSk7Ci19OwotCi1URVNUKEVsZW1lbnRzQXJl
VGVzdCwgV29ya3NXaXRoTmF0aXZlQXJyYXlQYXNzZWRBc1BvaW50ZXJBbmRTaXplKSB7Ci0gIGlu
dCBhcnJheVtdID0geyAwLCAxIH07Ci0gIDo6dGVzdGluZzo6dHVwbGU8aW50Kiwgc2l6ZV90PiBh
cnJheV9hc190dXBsZShhcnJheSwgMik7Ci0gIEVYUEVDVF9USEFUKGFycmF5X2FzX3R1cGxlLCBF
bGVtZW50c0FyZSgwLCAxKSk7Ci0gIEVYUEVDVF9USEFUKGFycmF5X2FzX3R1cGxlLCBOb3QoRWxl
bWVudHNBcmUoMCkpKTsKLQotICBOYXRpdmVBcnJheVBhc3NlZEFzUG9pbnRlckFuZFNpemUgaGVs
cGVyOwotICBFWFBFQ1RfQ0FMTChoZWxwZXIsIEhlbHBlcihfLCBfKSkKLSAgICAgIC5XaXRoKEVs
ZW1lbnRzQXJlKDAsIDEpKTsKLSAgaGVscGVyLkhlbHBlcihhcnJheSwgMik7Ci19Ci0KLVRFU1Qo
RWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dpdGhUd29EaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7Ci0g
IGNvbnN0IGNoYXIgYTJbXVszXSA9IHsgImhpIiwgImxvIiB9OwotICBFWFBFQ1RfVEhBVChhMiwg
RWxlbWVudHNBcmUoRWxlbWVudHNBcmUoJ2gnLCAnaScsICdcMCcpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoJ2wnLCAnbycsICdcMCcpKSk7Ci0gIEVYUEVDVF9U
SEFUKGEyLCBFbGVtZW50c0FyZShTdHJFcSgiaGkiKSwgU3RyRXEoImxvIikpKTsKLSAgRVhQRUNU
X1RIQVQoYTIsIEVsZW1lbnRzQXJlKE5vdChFbGVtZW50c0FyZSgnaCcsICdvJywgJ1wwJykpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxlbWVudHNBcmUoJ2wnLCAnbycsICdcMCcp
KSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVUZXN0LCBBY2NlcHRzU3RyaW5nTGl0ZXJhbCkgewot
ICBzdGQ6OnN0cmluZyBhcnJheVtdID0geyJoaSIsICJvbmUiLCAidHdvIn07Ci0gIEVYUEVDVF9U
SEFUKGFycmF5LCBFbGVtZW50c0FyZSgiaGkiLCAib25lIiwgInR3byIpKTsKLSAgRVhQRUNUX1RI
QVQoYXJyYXksIE5vdChFbGVtZW50c0FyZSgiaGkiLCAib25lIiwgInRvbyIpKSk7Ci19Ci0KLSNp
Zm5kZWYgX01TQ19WRVIKLQotLy8gVGhlIGZvbGxvd2luZyB0ZXN0IHBhc3NlcyBhIHZhbHVlIG9m
IHR5cGUgY29uc3QgY2hhcltdIHRvIGEKLS8vIGZ1bmN0aW9uIHRlbXBsYXRlIHRoYXQgZXhwZWN0
cyBjb25zdCBUJi4gIFNvbWUgdmVyc2lvbnMgb2YgTVNWQwotLy8gZ2VuZXJhdGVzIGEgY29tcGls
ZXIgZXJyb3IgQzI2NjUgZm9yIHRoYXQuICBXZSBiZWxpZXZlIGl0J3MgYSBidWcKLS8vIGluIE1T
VkMuICBUaGVyZWZvcmUgdGhpcyB0ZXN0IGlzICNpZi1lZCBvdXQgZm9yIE1TVkMuCi0KLS8vIERl
Y2xhcmVkIGhlcmUgd2l0aCB0aGUgc2l6ZSB1bmtub3duLiAgRGVmaW5lZCBBRlRFUiB0aGUgZm9s
bG93aW5nIHRlc3QuCi1leHRlcm4gY29uc3QgY2hhciBrSGlbXTsKLQotVEVTVChFbGVtZW50c0Fy
ZVRlc3QsIEFjY2VwdHNBcnJheVdpdGhVbmtub3duU2l6ZSkgewotICAvLyBUaGUgc2l6ZSBvZiBr
SGkgaXMgbm90IGtub3duIGluIHRoaXMgdGVzdCwgYnV0IEVsZW1lbnRzQXJlKCkgc2hvdWxkCi0g
IC8vIHN0aWxsIGFjY2VwdCBpdC4KLQotICBzdGQ6OnN0cmluZyBhcnJheTFbXSA9IHsiaGkifTsK
LSAgRVhQRUNUX1RIQVQoYXJyYXkxLCBFbGVtZW50c0FyZShrSGkpKTsKLQotICBzdGQ6OnN0cmlu
ZyBhcnJheTJbXSA9IHsiaG8ifTsKLSAgRVhQRUNUX1RIQVQoYXJyYXkyLCBOb3QoRWxlbWVudHNB
cmUoa0hpKSkpOwotfQotCi1jb25zdCBjaGFyIGtIaVtdID0gImhpIjsKLQotI2VuZGlmICAvLyBf
TVNDX1ZFUgotCi1URVNUKEVsZW1lbnRzQXJlVGVzdCwgTWFrZXNDb3B5T2ZBcmd1bWVudHMpIHsK
LSAgaW50IHggPSAxOwotICBpbnQgeSA9IDI7Ci0gIC8vIFRoaXMgc2hvdWxkIG1ha2UgYSBjb3B5
IG9mIHggYW5kIHkuCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OkVsZW1lbnRzQXJlTWF0Y2hlcjx0
ZXN0aW5nOjp0dXBsZTxpbnQsIGludD4gPgotICAgICAgICAgIHBvbHltb3JwaGljX21hdGNoZXIg
PSBFbGVtZW50c0FyZSh4LCB5KTsKLSAgLy8gQ2hhbmdpbmcgeCBhbmQgeSBub3cgc2hvdWxkbid0
IGFmZmVjdCB0aGUgbWVhbmluZyBvZiB0aGUgYWJvdmUgbWF0Y2hlci4KLSAgeCA9IHkgPSAwOwot
ICBjb25zdCBpbnQgYXJyYXkxW10gPSB7IDEsIDIgfTsKLSAgRVhQRUNUX1RIQVQoYXJyYXkxLCBw
b2x5bW9ycGhpY19tYXRjaGVyKTsKLSAgY29uc3QgaW50IGFycmF5MltdID0geyAwLCAwIH07Ci0g
IEVYUEVDVF9USEFUKGFycmF5MiwgTm90KHBvbHltb3JwaGljX21hdGNoZXIpKTsKLX0KLQotCi0v
LyBUZXN0cyBmb3IgRWxlbWVudHNBcmVBcnJheSgpLiAgU2luY2UgRWxlbWVudHNBcmVBcnJheSgp
IHNoYXJlcyBtb3N0Ci0vLyBvZiB0aGUgaW1wbGVtZW50YXRpb24gd2l0aCBFbGVtZW50c0FyZSgp
LCB3ZSBkb24ndCB0ZXN0IGl0IGFzCi0vLyB0aG9yb3VnaGx5IGhlcmUuCi0KLVRFU1QoRWxlbWVu
dHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhWYWx1ZUFycmF5KSB7Ci0gIGNvbnN0IGlu
dCBhW10gPSB7IDEsIDIsIDMgfTsKLQotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcihhLCBhICsg
R1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVu
dHNBcmVBcnJheShhKSk7Ci0KLSAgdGVzdF92ZWN0b3JbMl0gPSAwOwotICBFWFBFQ1RfVEhBVCh0
ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkoYSkpKTsKLX0KLQotVEVTVChFbGVtZW50
c0FyZUFycmF5VGVzdCwgQ2FuQmVDcmVhdGVkV2l0aEFycmF5U2l6ZSkgewotICBjb25zdCBjaGFy
KiBhW10gPSB7ICJvbmUiLCAidHdvIiwgInRocmVlIiB9OwotCi0gIHZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKLSAgRVhQRUNUX1RI
QVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoYSwgR1RFU1RfQVJSQVlfU0laRV8oYSkp
KTsKLQotICBjb25zdCBjaGFyKiogcCA9IGE7Ci0gIHRlc3RfdmVjdG9yWzBdID0gIjEiOwotICBF
WFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJlQXJyYXkocCwgR1RFU1RfQVJS
QVlfU0laRV8oYSkpKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3Jl
YXRlZFdpdGhvdXRBcnJheVNpemUpIHsKLSAgY29uc3QgY2hhciogYVtdID0geyAib25lIiwgInR3
byIsICJ0aHJlZSIgfTsKLQotICB2ZWN0b3I8c3RkOjpzdHJpbmc+IHRlc3RfdmVjdG9yKGEsIGEg
KyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBFbGVt
ZW50c0FyZUFycmF5KGEpKTsKLQotICB0ZXN0X3ZlY3RvclswXSA9ICIxIjsKLSAgRVhQRUNUX1RI
QVQodGVzdF92ZWN0b3IsIE5vdChFbGVtZW50c0FyZUFycmF5KGEpKSk7Ci19Ci0KLVRFU1QoRWxl
bWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhNYXRjaGVyQXJyYXkpIHsKLSAgY29u
c3QgTWF0Y2hlcjxzdGQ6OnN0cmluZz4ga01hdGNoZXJBcnJheVtdID0ge1N0ckVxKCJvbmUiKSwg
U3RyRXEoInR3byIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyRXEoInRocmVlIil9OwotCi0gIHZlY3RvcjxzdGQ6OnN0cmluZz4gdGVzdF92ZWN0
b3I7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygib25lIik7Ci0gIHRlc3RfdmVjdG9yLnB1c2hf
YmFjaygidHdvIik7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidGhyZWUiKTsKLSAgRVhQRUNU
X1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoa01hdGNoZXJBcnJheSkpOwotCi0g
IHRlc3RfdmVjdG9yLnB1c2hfYmFjaygidGhyZWUiKTsKLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0
b3IsIE5vdChFbGVtZW50c0FyZUFycmF5KGtNYXRjaGVyQXJyYXkpKSk7Ci19Ci0KLVRFU1QoRWxl
bWVudHNBcmVBcnJheVRlc3QsIENhbkJlQ3JlYXRlZFdpdGhWZWN0b3IpIHsKLSAgY29uc3QgaW50
IGFbXSA9IHsgMSwgMiwgMyB9OwotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RF
U1RfQVJSQVlfU0laRV8oYSkpOwotICBjb25zdCB2ZWN0b3I8aW50PiBleHBlY3RlZChhLCBhICsg
R1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVu
dHNBcmVBcnJheShleHBlY3RlZCkpOwotICB0ZXN0X3ZlY3Rvci5wdXNoX2JhY2soNCk7Ci0gIEVY
UEVDVF9USEFUKHRlc3RfdmVjdG9yLCBOb3QoRWxlbWVudHNBcmVBcnJheShleHBlY3RlZCkpKTsK
LX0KLQotI2lmIEdURVNUX0hBU19TVERfSU5JVElBTElaRVJfTElTVF8KLQotVEVTVChFbGVtZW50
c0FyZUFycmF5VGVzdCwgVGFrZXNJbml0aWFsaXplckxpc3QpIHsKLSAgY29uc3QgaW50IGFbNV0g
PSB7IDEsIDIsIDMsIDQsIDUgfTsKLSAgRVhQRUNUX1RIQVQoYSwgRWxlbWVudHNBcmVBcnJheSh7
IDEsIDIsIDMsIDQsIDUgfSkpOwotICBFWFBFQ1RfVEhBVChhLCBOb3QoRWxlbWVudHNBcmVBcnJh
eSh7IDEsIDIsIDMsIDUsIDQgfSkpKTsKLSAgRVhQRUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJl
QXJyYXkoeyAxLCAyLCAzLCA0LCA2IH0pKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVBcnJheVRl
c3QsIFRha2VzSW5pdGlhbGl6ZXJMaXN0T2ZDU3RyaW5ncykgewotICBjb25zdCBzdGQ6OnN0cmlu
ZyBhWzVdID0geyJhIiwgImIiLCAiYyIsICJkIiwgImUifTsKLSAgRVhQRUNUX1RIQVQoYSwgRWxl
bWVudHNBcmVBcnJheSh7ICJhIiwgImIiLCAiYyIsICJkIiwgImUiIH0pKTsKLSAgRVhQRUNUX1RI
QVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoeyAiYSIsICJiIiwgImMiLCAiZSIsICJkIiB9KSkp
OwotICBFWFBFQ1RfVEhBVChhLCBOb3QoRWxlbWVudHNBcmVBcnJheSh7ICJhIiwgImIiLCAiYyIs
ICJkIiwgImVmIiB9KSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBUYWtlc0lu
aXRpYWxpemVyTGlzdE9mU2FtZVR5cGVkTWF0Y2hlcnMpIHsKLSAgY29uc3QgaW50IGFbNV0gPSB7
IDEsIDIsIDMsIDQsIDUgfTsKLSAgRVhQRUNUX1RIQVQoYSwgRWxlbWVudHNBcmVBcnJheSgKLSAg
ICAgIHsgRXEoMSksIEVxKDIpLCBFcSgzKSwgRXEoNCksIEVxKDUpIH0pKTsKLSAgRVhQRUNUX1RI
QVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoCi0gICAgICB7IEVxKDEpLCBFcSgyKSwgRXEoMyks
IEVxKDQpLCBFcSg2KSB9KSkpOwotfQotCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LAotICAg
ICBUYWtlc0luaXRpYWxpemVyTGlzdE9mRGlmZmVyZW50VHlwZWRNYXRjaGVycykgewotICBjb25z
dCBpbnQgYVs1XSA9IHsgMSwgMiwgMywgNCwgNSB9OwotICAvLyBUaGUgY29tcGlsZXIgY2Fubm90
IGluZmVyIHRoZSB0eXBlIG9mIHRoZSBpbml0aWFsaXplciBsaXN0IGlmIGl0cwotICAvLyBlbGVt
ZW50cyBoYXZlIGRpZmZlcmVudCB0eXBlcy4gIFdlIG11c3QgZXhwbGljaXRseSBzcGVjaWZ5IHRo
ZQotICAvLyB1bmlmaWVkIGVsZW1lbnQgdHlwZSBpbiB0aGlzIGNhc2UuCi0gIEVYUEVDVF9USEFU
KGEsIEVsZW1lbnRzQXJlQXJyYXk8TWF0Y2hlcjxpbnQ+ID4oCi0gICAgICB7IEVxKDEpLCBOZSgt
MiksIEdlKDMpLCBMZSg0KSwgRXEoNSkgfSkpOwotICBFWFBFQ1RfVEhBVChhLCBOb3QoRWxlbWVu
dHNBcmVBcnJheTxNYXRjaGVyPGludD4gPigKLSAgICAgIHsgRXEoMSksIE5lKC0yKSwgR2UoMyks
IExlKDQpLCBFcSg2KSB9KSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfSU5JVElB
TElaRVJfTElTVF8KLQotVEVTVChFbGVtZW50c0FyZUFycmF5VGVzdCwgQ2FuQmVDcmVhdGVkV2l0
aE1hdGNoZXJWZWN0b3IpIHsKLSAgY29uc3QgaW50IGFbXSA9IHsgMSwgMiwgMyB9OwotICBjb25z
dCBNYXRjaGVyPGludD4ga01hdGNoZXJzW10gPSB7IEVxKDEpLCBFcSgyKSwgRXEoMykgfTsKLSAg
dmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEpKTsKLSAg
Y29uc3QgdmVjdG9yPE1hdGNoZXI8aW50PiA+IGV4cGVjdGVkKAotICAgICAga01hdGNoZXJzLCBr
TWF0Y2hlcnMgKyBHVEVTVF9BUlJBWV9TSVpFXyhrTWF0Y2hlcnMpKTsKLSAgRVhQRUNUX1RIQVQo
dGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsKLSAgdGVzdF92ZWN0b3Iu
cHVzaF9iYWNrKDQpOwotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgTm90KEVsZW1lbnRzQXJl
QXJyYXkoZXhwZWN0ZWQpKSk7Ci19Ci0KLVRFU1QoRWxlbWVudHNBcmVBcnJheVRlc3QsIENhbkJl
Q3JlYXRlZFdpdGhJdGVyYXRvclJhbmdlKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7IDEsIDIsIDMg
fTsKLSAgY29uc3QgdmVjdG9yPGludD4gdGVzdF92ZWN0b3IoYSwgYSArIEdURVNUX0FSUkFZX1NJ
WkVfKGEpKTsKLSAgY29uc3QgdmVjdG9yPGludD4gZXhwZWN0ZWQoYSwgYSArIEdURVNUX0FSUkFZ
X1NJWkVfKGEpKTsKLSAgRVhQRUNUX1RIQVQodGVzdF92ZWN0b3IsIEVsZW1lbnRzQXJlQXJyYXko
ZXhwZWN0ZWQuYmVnaW4oKSwgZXhwZWN0ZWQuZW5kKCkpKTsKLSAgLy8gUG9pbnRlcnMgYXJlIGl0
ZXJhdG9ycywgdG9vLgotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgRWxlbWVudHNBcmVBcnJh
eShhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpKTsKLSAgLy8gVGhlIGVtcHR5IHJhbmdlIG9m
IE5VTEwgcG9pbnRlcnMgc2hvdWxkIGFsc28gYmUgb2theS4KLSAgaW50KiBjb25zdCBudWxsX2lu
dCA9IE5VTEw7Ci0gIEVYUEVDVF9USEFUKHRlc3RfdmVjdG9yLCBOb3QoRWxlbWVudHNBcmVBcnJh
eShudWxsX2ludCwgbnVsbF9pbnQpKSk7Ci0gIEVYUEVDVF9USEFUKCh2ZWN0b3I8aW50PigpKSwg
RWxlbWVudHNBcmVBcnJheShudWxsX2ludCwgbnVsbF9pbnQpKTsKLX0KLQotLy8gU2luY2UgRWxl
bWVudHNBcmUoKSBhbmQgRWxlbWVudHNBcmVBcnJheSgpIHNoYXJlIG11Y2ggb2YgdGhlCi0vLyBp
bXBsZW1lbnRhdGlvbiwgd2Ugb25seSBkbyBhIHNhbml0eSB0ZXN0IGZvciBuYXRpdmUgYXJyYXlz
IGhlcmUuCi1URVNUKEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBXb3Jrc1dpdGhOYXRpdmVBcnJheSkg
ewotICA6OnN0ZDo6c3RyaW5nIGFbXSA9IHsgImhpIiwgImhvIiB9OwotICA6OnN0ZDo6c3RyaW5n
IGJbXSA9IHsgImhpIiwgImhvIiB9OwotCi0gIEVYUEVDVF9USEFUKGEsIEVsZW1lbnRzQXJlQXJy
YXkoYikpOwotICBFWFBFQ1RfVEhBVChhLCBFbGVtZW50c0FyZUFycmF5KGIsIDIpKTsKLSAgRVhQ
RUNUX1RIQVQoYSwgTm90KEVsZW1lbnRzQXJlQXJyYXkoYiwgMSkpKTsKLX0KLQotVEVTVChFbGVt
ZW50c0FyZUFycmF5VGVzdCwgU291cmNlTGlmZVNwYW4pIHsKLSAgY29uc3QgaW50IGFbXSA9IHsg
MSwgMiwgMyB9OwotICB2ZWN0b3I8aW50PiB0ZXN0X3ZlY3RvcihhLCBhICsgR1RFU1RfQVJSQVlf
U0laRV8oYSkpOwotICB2ZWN0b3I8aW50PiBleHBlY3QoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVf
KGEpKTsKLSAgRWxlbWVudHNBcmVBcnJheU1hdGNoZXI8aW50PiBtYXRjaGVyX21ha2VyID0KLSAg
ICAgIEVsZW1lbnRzQXJlQXJyYXkoZXhwZWN0LmJlZ2luKCksIGV4cGVjdC5lbmQoKSk7Ci0gIEVY
UEVDVF9USEFUKHRlc3RfdmVjdG9yLCBtYXRjaGVyX21ha2VyKTsKLSAgLy8gQ2hhbmdpbmcgaW4g
cGxhY2UgdGhlIHZhbHVlcyB0aGF0IGluaXRpYWxpemVkIG1hdGNoZXJfbWFrZXIgc2hvdWxkIG5v
dAotICAvLyBhZmZlY3QgbWF0Y2hlcl9tYWtlciBhbnltb3JlLiBJdCBzaG91bGQgaGF2ZSBtYWRl
IGl0cyBvd24gY29weSBvZiB0aGVtLgotICB0eXBlZGVmIHZlY3RvcjxpbnQ+OjppdGVyYXRvciBJ
dGVyOwotICBmb3IgKEl0ZXIgaXQgPSBleHBlY3QuYmVnaW4oKTsgaXQgIT0gZXhwZWN0LmVuZCgp
OyArK2l0KSB7ICppdCArPSAxMDsgfQotICBFWFBFQ1RfVEhBVCh0ZXN0X3ZlY3RvciwgbWF0Y2hl
cl9tYWtlcik7Ci0gIHRlc3RfdmVjdG9yLnB1c2hfYmFjaygzKTsKLSAgRVhQRUNUX1RIQVQodGVz
dF92ZWN0b3IsIE5vdChtYXRjaGVyX21ha2VyKSk7Ci19Ci0KLS8vIFRlc3RzIGZvciB0aGUgTUFU
Q0hFUiooKSBtYWNybyBmYW1pbHkuCi0KLS8vIFRlc3RzIHRoYXQgYSBzaW1wbGUgTUFUQ0hFUigp
IGRlZmluaXRpb24gd29ya3MuCi0KLU1BVENIRVIoSXNFdmVuLCAiIikgeyByZXR1cm4gKGFyZyAl
IDIpID09IDA7IH0KLQotVEVTVChNYXRjaGVyTWFjcm9UZXN0LCBXb3JrcykgewotICBjb25zdCBN
YXRjaGVyPGludD4gbSA9IElzRXZlbigpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoNikpOwot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDcpKTsKLQotICBFWFBFQ1RfRVEoImlzIGV2ZW4iLCBE
ZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgibm90IChpcyBldmVuKSIsIERlc2NyaWJlTmVnYXRp
b24obSkpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgNikpOwotICBFWFBFQ1RfRVEoIiIs
IEV4cGxhaW4obSwgNykpOwotfQotCi0vLyBUaGlzIGFsc28gdGVzdHMgdGhhdCB0aGUgZGVzY3Jp
cHRpb24gc3RyaW5nIGNhbiByZWZlcmVuY2UgJ25lZ2F0aW9uJy4KLU1BVENIRVIoSXNFdmVuMiwg
bmVnYXRpb24gPyAiaXMgb2RkIiA6ICJpcyBldmVuIikgewotICBpZiAoKGFyZyAlIDIpID09IDAp
IHsKLSAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBzdHJlYW0gdG8gcmVzdWx0X2xpc3RlbmVy
LCBhIGxpc3RlbmVyCi0gICAgLy8gc3VwcGxpZWQgYnkgdGhlIE1BVENIRVIgbWFjcm8gaW1wbGlj
aXRseS4KLSAgICAqcmVzdWx0X2xpc3RlbmVyIDw8ICJPSyI7Ci0gICAgcmV0dXJuIHRydWU7Ci0g
IH0gZWxzZSB7Ci0gICAgKnJlc3VsdF9saXN0ZW5lciA8PCAiJSAyID09ICIgPDwgKGFyZyAlIDIp
OwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQotCi0vLyBUaGlzIGFsc28gdGVzdHMgdGhhdCB0
aGUgZGVzY3JpcHRpb24gc3RyaW5nIGNhbiByZWZlcmVuY2UgbWF0Y2hlcgotLy8gcGFyYW1ldGVy
cy4KLU1BVENIRVJfUDIoRXFTdW1PZiwgeCwgeSwgc3RkOjpzdHJpbmcobmVnYXRpb24gPyAiZG9l
c24ndCBlcXVhbCIgOiAiZXF1YWxzIikgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiB0aGUgc3VtIG9mICIgKyBQcmludFRvU3RyaW5nKHgpICsgIiBhbmQgIiArCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHkpKSB7Ci0gIGlmIChhcmcgPT0gKHgg
KyB5KSkgewotICAgICpyZXN1bHRfbGlzdGVuZXIgPDwgIk9LIjsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfSBlbHNlIHsKLSAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBzdHJlYW0gdG8gdGhlIHVu
ZGVybHlpbmcgc3RyZWFtIG9mCi0gICAgLy8gcmVzdWx0X2xpc3RlbmVyLgotICAgIGlmIChyZXN1
bHRfbGlzdGVuZXItPnN0cmVhbSgpICE9IE5VTEwpIHsKLSAgICAgICpyZXN1bHRfbGlzdGVuZXIt
PnN0cmVhbSgpIDw8ICJkaWZmID09ICIgPDwgKHggKyB5IC0gYXJnKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIG1hdGNoZXIgZGVzY3JpcHRp
b24gY2FuIHJlZmVyZW5jZSAnbmVnYXRpb24nIGFuZCB0aGUKLS8vIG1hdGNoZXIgcGFyYW1ldGVy
cy4KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwgRGVzY3JpcHRpb25DYW5SZWZlcmVuY2VOZWdhdGlv
bkFuZFBhcmFtZXRlcnMpIHsKLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IG0xID0gSXNFdmVuMigpOwot
ICBFWFBFQ1RfRVEoImlzIGV2ZW4iLCBEZXNjcmliZShtMSkpOwotICBFWFBFQ1RfRVEoImlzIG9k
ZCIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLQotICBjb25zdCBNYXRjaGVyPGludD4gbTIgPSBF
cVN1bU9mKDUsIDkpOwotICBFWFBFQ1RfRVEoImVxdWFscyB0aGUgc3VtIG9mIDUgYW5kIDkiLCBE
ZXNjcmliZShtMikpOwotICBFWFBFQ1RfRVEoImRvZXNuJ3QgZXF1YWwgdGhlIHN1bSBvZiA1IGFu
ZCA5IiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotfQotCi0vLyBUZXN0cyBleHBsYWluaW5nIG1h
dGNoIHJlc3VsdCBpbiBhIE1BVENIRVIqIG1hY3JvLgotVEVTVChNYXRjaGVyTWFjcm9UZXN0LCBD
YW5FeHBsYWluTWF0Y2hSZXN1bHQpIHsKLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IG0xID0gSXNFdmVu
MigpOwotICBFWFBFQ1RfRVEoIk9LIiwgRXhwbGFpbihtMSwgNCkpOwotICBFWFBFQ1RfRVEoIiUg
MiA9PSAxIiwgRXhwbGFpbihtMSwgNSkpOwotCi0gIGNvbnN0IE1hdGNoZXI8aW50PiBtMiA9IEVx
U3VtT2YoMSwgMik7Ci0gIEVYUEVDVF9FUSgiT0siLCBFeHBsYWluKG0yLCAzKSk7Ci0gIEVYUEVD
VF9FUSgiZGlmZiA9PSAtMSIsIEV4cGxhaW4obTIsIDQpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgYm9keSBvZiBNQVRDSEVSKCkgY2FuIHJlZmVyZW5jZSB0aGUgdHlwZSBvZiB0aGUKLS8vIHZh
bHVlIGJlaW5nIG1hdGNoZWQuCi0KLU1BVENIRVIoSXNFbXB0eVN0cmluZywgIiIpIHsKLSAgU3Rh
dGljQXNzZXJ0VHlwZUVxPCA6OnN0ZDo6c3RyaW5nLCBhcmdfdHlwZT4oKTsKLSAgcmV0dXJuIGFy
ZyA9PSAiIjsKLX0KLQotTUFUQ0hFUihJc0VtcHR5U3RyaW5nQnlSZWYsICIiKSB7Ci0gIFN0YXRp
Y0Fzc2VydFR5cGVFcTxjb25zdCA6OnN0ZDo6c3RyaW5nJiwgYXJnX3R5cGU+KCk7Ci0gIHJldHVy
biBhcmcgPT0gIiI7Ci19Ci0KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwgQ2FuUmVmZXJlbmNlQXJn
VHlwZSkgewotICBjb25zdCBNYXRjaGVyPCA6OnN0ZDo6c3RyaW5nPiBtMSA9IElzRW1wdHlTdHJp
bmcoKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiIikpOwotCi0gIGNvbnN0IE1hdGNoZXI8
Y29uc3QgOjpzdGQ6OnN0cmluZyY+IG0yID0gSXNFbXB0eVN0cmluZ0J5UmVmKCk7Ci0gIEVYUEVD
VF9UUlVFKG0yLk1hdGNoZXMoIiIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBNQVRDSEVSKCkgY2Fu
IGJlIHVzZWQgaW4gYSBuYW1lc3BhY2UuCi0KLW5hbWVzcGFjZSBtYXRjaGVyX3Rlc3QgewotTUFU
Q0hFUihJc09kZCwgIiIpIHsgcmV0dXJuIChhcmcgJSAyKSAhPSAwOyB9Ci19ICAvLyBuYW1lc3Bh
Y2UgbWF0Y2hlcl90ZXN0Ci0KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwgV29ya3NJbk5hbWVzcGFj
ZSkgewotICBNYXRjaGVyPGludD4gbSA9IG1hdGNoZXJfdGVzdDo6SXNPZGQoKTsKLSAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcyg0KSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyg1KSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgVmFsdWUoKSBjYW4gYmUgdXNlZCB0byBjb21wb3NlIG1hdGNoZXJzLgot
TUFUQ0hFUihJc1Bvc2l0aXZlT2RkLCAiIikgewotICByZXR1cm4gVmFsdWUoYXJnLCBtYXRjaGVy
X3Rlc3Q6OklzT2RkKCkpICYmIGFyZyA+IDA7Ci19Ci0KLVRFU1QoTWF0Y2hlck1hY3JvVGVzdCwg
Q2FuQmVDb21wb3NlZFVzaW5nVmFsdWUpIHsKLSAgRVhQRUNUX1RIQVQoMywgSXNQb3NpdGl2ZU9k
ZCgpKTsKLSAgRVhQRUNUX1RIQVQoNCwgTm90KElzUG9zaXRpdmVPZGQoKSkpOwotICBFWFBFQ1Rf
VEhBVCgtMSwgTm90KElzUG9zaXRpdmVPZGQoKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgc2lt
cGxlIE1BVENIRVJfUCgpIGRlZmluaXRpb24gd29ya3MuCi0KLU1BVENIRVJfUChJc0dyZWF0ZXJU
aGFuMzJBbmQsIG4sICIiKSB7IHJldHVybiBhcmcgPiAzMiAmJiBhcmcgPiBuOyB9Ci0KLVRFU1Qo
TWF0Y2hlclBNYWNyb1Rlc3QsIFdvcmtzKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBtID0gSXNH
cmVhdGVyVGhhbjMyQW5kKDUpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMzYpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcyg1KSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBncmVhdGVyIHRoYW4g
MzIgYW5kIDUiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgibm90IChpcyBncmVhdGVyIHRo
YW4gMzIgYW5kIDUpIiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhw
bGFpbihtLCAzNikpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgNSkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBjYWxjdWxhdGVkIGNvcnJlY3RseSBmcm9tIHRo
ZSBtYXRjaGVyIG5hbWUuCi1NQVRDSEVSX1AoX2lzX0dyZWF0ZXJfVGhhbjMyYW5kXywgbiwgIiIp
IHsgcmV0dXJuIGFyZyA+IDMyICYmIGFyZyA+IG47IH0KLQotVEVTVChNYXRjaGVyUE1hY3JvVGVz
dCwgR2VuZXJhdGVzQ29ycmVjdERlc2NyaXB0aW9uKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBt
ID0gX2lzX0dyZWF0ZXJfVGhhbjMyYW5kXyg1KTsKLQotICBFWFBFQ1RfRVEoImlzIGdyZWF0ZXIg
dGhhbiAzMiBhbmQgNSIsIERlc2NyaWJlKG0pKTsKLSAgRVhQRUNUX0VRKCJub3QgKGlzIGdyZWF0
ZXIgdGhhbiAzMiBhbmQgNSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLSAgRVhQRUNUX0VRKCIi
LCBFeHBsYWluKG0sIDM2KSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCA1KSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgYSBNQVRDSEVSX1AgbWF0Y2hlciBjYW4gYmUgZXhwbGljaXRseSBpbnN0
YW50aWF0ZWQgd2l0aAotLy8gYSByZWZlcmVuY2UgcGFyYW1ldGVyIHR5cGUuCi0KLWNsYXNzIFVu
Y29weWFibGVGb28gewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVW5jb3B5YWJsZUZvbyhjaGFyIHZh
bHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KLSBwcml2YXRlOgotICBVbmNvcHlhYmxlRm9vKGNvbnN0
IFVuY29weWFibGVGb28mKTsKLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVW5jb3B5YWJsZUZvbyYp
OwotCi0gIGNoYXIgdmFsdWVfOwotfTsKLQotTUFUQ0hFUl9QKFJlZmVyZW5jZXNVbmNvcHlhYmxl
LCB2YXJpYWJsZSwgIiIpIHsgcmV0dXJuICZhcmcgPT0gJnZhcmlhYmxlOyB9Ci0KLVRFU1QoTWF0
Y2hlclBNYWNyb1Rlc3QsIFdvcmtzV2hlbkV4cGxpY2l0bHlJbnN0YW50aWF0ZWRXaXRoUmVmZXJl
bmNlKSB7Ci0gIFVuY29weWFibGVGb28gZm9vMSgnMScpLCBmb28yKCcyJyk7Ci0gIGNvbnN0IE1h
dGNoZXI8Y29uc3QgVW5jb3B5YWJsZUZvbyY+IG0gPQotICAgICAgUmVmZXJlbmNlc1VuY29weWFi
bGU8Y29uc3QgVW5jb3B5YWJsZUZvbyY+KGZvbzEpOwotCi0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhmb28xKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoZm9vMikpOwotCi0gIC8vIFdlIGRv
bid0IHdhbnQgdGhlIGFkZHJlc3Mgb2YgdGhlIHBhcmFtZXRlciBwcmludGVkLCBhcyBtb3N0Ci0g
IC8vIGxpa2VseSBpdCB3aWxsIGp1c3QgYW5ub3kgdGhlIHVzZXIuICBJZiB0aGUgYWRkcmVzcyBp
cwotICAvLyBpbnRlcmVzdGluZywgdGhlIHVzZXIgc2hvdWxkIGNvbnNpZGVyIHBhc3NpbmcgdGhl
IHBhcmFtZXRlciBieQotICAvLyBwb2ludGVyIGluc3RlYWQuCi0gIEVYUEVDVF9FUSgicmVmZXJl
bmNlcyB1bmNvcHlhYmxlIDEtYnl0ZSBvYmplY3QgPDMxPiIsIERlc2NyaWJlKG0pKTsKLX0KLQot
Ci0vLyBUZXN0cyB0aGF0IHRoZSBib2R5IG9mIE1BVENIRVJfUG4oKSBjYW4gcmVmZXJlbmNlIHRo
ZSBwYXJhbWV0ZXIKLS8vIHR5cGVzLgotCi1NQVRDSEVSX1AzKFBhcmFtVHlwZXNBcmVJbnRMb25n
QW5kQ2hhciwgZm9vLCBiYXIsIGJheiwgIiIpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwg
Zm9vX3R5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxsb25nLCBiYXJfdHlwZT4oKTsgIC8v
IE5PTElOVAotICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgYmF6X3R5cGU+KCk7Ci0gIHJldHVy
biBhcmcgPT0gMDsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIENhblJlZmVyZW5jZVBh
cmFtVHlwZXMpIHsKLSAgRVhQRUNUX1RIQVQoMCwgUGFyYW1UeXBlc0FyZUludExvbmdBbmRDaGFy
KDEwLCAyMEwsICdhJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgTUFUQ0hFUl9QbiBtYXRjaGVy
IGNhbiBiZSBleHBsaWNpdGx5IGluc3RhbnRpYXRlZCB3aXRoCi0vLyByZWZlcmVuY2UgcGFyYW1l
dGVyIHR5cGVzLgotCi1NQVRDSEVSX1AyKFJlZmVyZW5jZXNBbnlPZiwgdmFyaWFibGUxLCB2YXJp
YWJsZTIsICIiKSB7Ci0gIHJldHVybiAmYXJnID09ICZ2YXJpYWJsZTEgfHwgJmFyZyA9PSAmdmFy
aWFibGUyOwotfQotCi1URVNUKE1hdGNoZXJQbk1hY3JvVGVzdCwgV29ya3NXaGVuRXhwbGljaXRs
eUluc3RhbnRpYXRlZFdpdGhSZWZlcmVuY2VzKSB7Ci0gIFVuY29weWFibGVGb28gZm9vMSgnMScp
LCBmb28yKCcyJyksIGZvbzMoJzMnKTsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBVbmNvcHlhYmxl
Rm9vJj4gbSA9Ci0gICAgICBSZWZlcmVuY2VzQW55T2Y8Y29uc3QgVW5jb3B5YWJsZUZvbyYsIGNv
bnN0IFVuY29weWFibGVGb28mPihmb28xLCBmb28yKTsKLQotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoZm9vMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoZm9vMikpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKGZvbzMpKTsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsCi0gICAg
IEdlbmVyYXRlc0NvcnJldERlc2NyaXB0aW9uV2hlbkV4cGxpY2l0bHlJbnN0YW50aWF0ZWRXaXRo
UmVmZXJlbmNlcykgewotICBVbmNvcHlhYmxlRm9vIGZvbzEoJzEnKSwgZm9vMignMicpOwotICBj
b25zdCBNYXRjaGVyPGNvbnN0IFVuY29weWFibGVGb28mPiBtID0KLSAgICAgIFJlZmVyZW5jZXNB
bnlPZjxjb25zdCBVbmNvcHlhYmxlRm9vJiwgY29uc3QgVW5jb3B5YWJsZUZvbyY+KGZvbzEsIGZv
bzIpOwotCi0gIC8vIFdlIGRvbid0IHdhbnQgdGhlIGFkZHJlc3NlcyBvZiB0aGUgcGFyYW1ldGVy
cyBwcmludGVkLCBhcyBtb3N0Ci0gIC8vIGxpa2VseSB0aGV5IHdpbGwganVzdCBhbm5veSB0aGUg
dXNlci4gIElmIHRoZSBhZGRyZXNzZXMgYXJlCi0gIC8vIGludGVyZXN0aW5nLCB0aGUgdXNlciBz
aG91bGQgY29uc2lkZXIgcGFzc2luZyB0aGUgcGFyYW1ldGVycyBieQotICAvLyBwb2ludGVycyBp
bnN0ZWFkLgotICBFWFBFQ1RfRVEoInJlZmVyZW5jZXMgYW55IG9mICgxLWJ5dGUgb2JqZWN0IDwz
MT4sIDEtYnl0ZSBvYmplY3QgPDMyPikiLAotICAgICAgICAgICAgRGVzY3JpYmUobSkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgc2ltcGxlIE1BVENIRVJfUDIoKSBkZWZpbml0aW9uIHdvcmtzLgot
Ci1NQVRDSEVSX1AyKElzTm90SW5DbG9zZWRSYW5nZSwgbG93LCBoaSwgIiIpIHsgcmV0dXJuIGFy
ZyA8IGxvdyB8fCBhcmcgPiBoaTsgfQotCi1URVNUKE1hdGNoZXJQbk1hY3JvVGVzdCwgV29ya3Mp
IHsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBsb25nJj4gbSA9IElzTm90SW5DbG9zZWRSYW5nZSgx
MCwgMjApOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygzNkwpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcygxNUwpKTsKLQotICBFWFBFQ1RfRVEoImlzIG5vdCBpbiBjbG9z
ZWQgcmFuZ2UgKDEwLCAyMCkiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgibm90IChpcyBu
b3QgaW4gY2xvc2VkIHJhbmdlICgxMCwgMjApKSIsIERlc2NyaWJlTmVnYXRpb24obSkpOwotICBF
WFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgMzZMKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbiht
LCAxNUwpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBNQVRDSEVSKigpIGRlZmluaXRpb25zIGNhbiBi
ZSBvdmVybG9hZGVkIG9uIHRoZSBudW1iZXIKLS8vIG9mIHBhcmFtZXRlcnM7IGFsc28gdGVzdHMg
TUFUQ0hFUl9QbigpIHdoZXJlIG4gPj0gMy4KLQotTUFUQ0hFUihFcXVhbHNTdW1PZiwgIiIpIHsg
cmV0dXJuIGFyZyA9PSAwOyB9Ci1NQVRDSEVSX1AoRXF1YWxzU3VtT2YsIGEsICIiKSB7IHJldHVy
biBhcmcgPT0gYTsgfQotTUFUQ0hFUl9QMihFcXVhbHNTdW1PZiwgYSwgYiwgIiIpIHsgcmV0dXJu
IGFyZyA9PSBhICsgYjsgfQotTUFUQ0hFUl9QMyhFcXVhbHNTdW1PZiwgYSwgYiwgYywgIiIpIHsg
cmV0dXJuIGFyZyA9PSBhICsgYiArIGM7IH0KLU1BVENIRVJfUDQoRXF1YWxzU3VtT2YsIGEsIGIs
IGMsIGQsICIiKSB7IHJldHVybiBhcmcgPT0gYSArIGIgKyBjICsgZDsgfQotTUFUQ0hFUl9QNShF
cXVhbHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgIiIpIHsgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMg
KyBkICsgZTsgfQotTUFUQ0hFUl9QNihFcXVhbHNTdW1PZiwgYSwgYiwgYywgZCwgZSwgZiwgIiIp
IHsKLSAgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMgKyBkICsgZSArIGY7Ci19Ci1NQVRDSEVSX1A3
KEVxdWFsc1N1bU9mLCBhLCBiLCBjLCBkLCBlLCBmLCBnLCAiIikgewotICByZXR1cm4gYXJnID09
IGEgKyBiICsgYyArIGQgKyBlICsgZiArIGc7Ci19Ci1NQVRDSEVSX1A4KEVxdWFsc1N1bU9mLCBh
LCBiLCBjLCBkLCBlLCBmLCBnLCBoLCAiIikgewotICByZXR1cm4gYXJnID09IGEgKyBiICsgYyAr
IGQgKyBlICsgZiArIGcgKyBoOwotfQotTUFUQ0hFUl9QOShFcXVhbHNTdW1PZiwgYSwgYiwgYywg
ZCwgZSwgZiwgZywgaCwgaSwgIiIpIHsKLSAgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMgKyBkICsg
ZSArIGYgKyBnICsgaCArIGk7Ci19Ci1NQVRDSEVSX1AxMChFcXVhbHNTdW1PZiwgYSwgYiwgYywg
ZCwgZSwgZiwgZywgaCwgaSwgaiwgIiIpIHsKLSAgcmV0dXJuIGFyZyA9PSBhICsgYiArIGMgKyBk
ICsgZSArIGYgKyBnICsgaCArIGkgKyBqOwotfQotCi1URVNUKE1hdGNoZXJQbk1hY3JvVGVzdCwg
Q2FuQmVPdmVybG9hZGVkT25OdW1iZXJPZlBhcmFtZXRlcnMpIHsKLSAgRVhQRUNUX1RIQVQoMCwg
RXF1YWxzU3VtT2YoKSk7Ci0gIEVYUEVDVF9USEFUKDEsIEVxdWFsc1N1bU9mKDEpKTsKLSAgRVhQ
RUNUX1RIQVQoMTIsIEVxdWFsc1N1bU9mKDEwLCAyKSk7Ci0gIEVYUEVDVF9USEFUKDEyMywgRXF1
YWxzU3VtT2YoMTAwLCAyMCwgMykpOwotICBFWFBFQ1RfVEhBVCgxMjM0LCBFcXVhbHNTdW1PZigx
MDAwLCAyMDAsIDMwLCA0KSk7Ci0gIEVYUEVDVF9USEFUKDEyMzQ1LCBFcXVhbHNTdW1PZigxMDAw
MCwgMjAwMCwgMzAwLCA0MCwgNSkpOwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmIiwKLSAgICAgICAg
ICAgICAgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIs
ICdmJykpOwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmZyIsCi0gICAgICAgICAgICAgIEVxdWFsc1N1
bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicsICdnJykpOwot
ICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2giLAotICAgICAgICAgICAgICBFcXVhbHNTdW1PZig6OnN0
ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnLCAnZycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJoIikpOwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmZ2hpIiwKLSAgICAg
ICAgICAgICAgRXF1YWxzU3VtT2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAi
ZSIsICdmJywgJ2cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaCIsICdpJykpOwotICBF
WFBFQ1RfVEhBVCgiYWJjZGVmZ2hpaiIsCi0gICAgICAgICAgICAgIEVxdWFsc1N1bU9mKDo6c3Rk
OjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicsICdnJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgImgiLCAnaScsIDo6c3RkOjpzdHJpbmcoImoiKSkpOwotCi0gIEVYUEVD
VF9USEFUKDEsIE5vdChFcXVhbHNTdW1PZigpKSk7Ci0gIEVYUEVDVF9USEFUKC0xLCBOb3QoRXF1
YWxzU3VtT2YoMSkpKTsKLSAgRVhQRUNUX1RIQVQoLTEyLCBOb3QoRXF1YWxzU3VtT2YoMTAsIDIp
KSk7Ci0gIEVYUEVDVF9USEFUKC0xMjMsIE5vdChFcXVhbHNTdW1PZigxMDAsIDIwLCAzKSkpOwot
ICBFWFBFQ1RfVEhBVCgtMTIzNCwgTm90KEVxdWFsc1N1bU9mKDEwMDAsIDIwMCwgMzAsIDQpKSk7
Ci0gIEVYUEVDVF9USEFUKC0xMjM0NSwgTm90KEVxdWFsc1N1bU9mKDEwMDAwLCAyMDAwLCAzMDAs
IDQwLCA1KSkpOwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmICIsCi0gICAgICAgICAgICAgIE5vdChF
cXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICdiJywgJ2MnLCAiZCIsICJlIiwgJ2YnKSkp
OwotICBFWFBFQ1RfVEhBVCgiYWJjZGVmZyAiLAotICAgICAgICAgICAgICBOb3QoRXF1YWxzU3Vt
T2YoOjpzdGQ6OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIsICdmJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdnJykpKTsKLSAgRVhQRUNUX1RIQVQoImFiY2RlZmdoICIs
Ci0gICAgICAgICAgICAgIE5vdChFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICdiJywg
J2MnLCAiZCIsICJlIiwgJ2YnLCAnZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aCIpKSk7Ci0gIEVYUEVDVF9USEFUKCJhYmNkZWZnaGkgIiwKLSAgICAgICAgICAgICAgTm90KEVx
dWFsc1N1bU9mKDo6c3RkOjpzdHJpbmcoImEiKSwgJ2InLCAnYycsICJkIiwgImUiLCAnZicsICdn
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoIiwgJ2knKSkpOwotICBFWFBFQ1Rf
VEhBVCgiYWJjZGVmZ2hpaiAiLAotICAgICAgICAgICAgICBOb3QoRXF1YWxzU3VtT2YoOjpzdGQ6
OnN0cmluZygiYSIpLCAnYicsICdjJywgImQiLCAiZSIsICdmJywgJ2cnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImgiLCAnaScsIDo6c3RkOjpzdHJpbmcoImoiKSkpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIE1BVENIRVJfUG4oKSBkZWZpbml0aW9uIGNhbiBiZSBpbnN0YW50aWF0
ZWQgd2l0aCBhbnkKLS8vIGNvbXBhdGlibGUgcGFyYW1ldGVyIHR5cGVzLgotVEVTVChNYXRjaGVy
UG5NYWNyb1Rlc3QsIFdvcmtzRm9yRGlmZmVyZW50UGFyYW1ldGVyVHlwZXMpIHsKLSAgRVhQRUNU
X1RIQVQoMTIzLCBFcXVhbHNTdW1PZigxMDBMLCAyMCwgc3RhdGljX2Nhc3Q8Y2hhcj4oMykpKTsK
LSAgRVhQRUNUX1RIQVQoImFiY2QiLCBFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICJi
IiwgJ2MnLCAiZCIpKTsKLQotICBFWFBFQ1RfVEhBVCgxMjQsIE5vdChFcXVhbHNTdW1PZigxMDBM
LCAyMCwgc3RhdGljX2Nhc3Q8Y2hhcj4oMykpKSk7Ci0gIEVYUEVDVF9USEFUKCJhYmNkZSIsIE5v
dChFcXVhbHNTdW1PZig6OnN0ZDo6c3RyaW5nKCJhIiksICJiIiwgJ2MnLCAiZCIpKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgdGhlIG1hdGNoZXIgYm9keSBjYW4gcHJvbW90ZSB0aGUgcGFyYW1ldGVy
IHR5cGVzLgotCi1NQVRDSEVSX1AyKEVxQ29uY2F0LCBwcmVmaXgsIHN1ZmZpeCwgIiIpIHsKLSAg
Ly8gVGhlIGZvbGxvd2luZyBsaW5lcyBwcm9tb3RlIHRoZSB0d28gcGFyYW1ldGVycyB0byBkZXNp
cmVkIHR5cGVzLgotICBzdGQ6OnN0cmluZyBwcmVmaXhfc3RyKHByZWZpeCk7Ci0gIGNoYXIgc3Vm
Zml4X2NoYXIgPSBzdGF0aWNfY2FzdDxjaGFyPihzdWZmaXgpOwotICByZXR1cm4gYXJnID09IHBy
ZWZpeF9zdHIgKyBzdWZmaXhfY2hhcjsKLX0KLQotVEVTVChNYXRjaGVyUG5NYWNyb1Rlc3QsIFNp
bXBsZVR5cGVQcm9tb3Rpb24pIHsKLSAgTWF0Y2hlcjxzdGQ6OnN0cmluZz4gbm9fcHJvbW8gPQot
ICAgICAgRXFDb25jYXQoc3RkOjpzdHJpbmcoImZvbyIpLCAndCcpOwotICBNYXRjaGVyPGNvbnN0
IHN0ZDo6c3RyaW5nJj4gcHJvbW8gPQotICAgICAgRXFDb25jYXQoImZvbyIsIHN0YXRpY19jYXN0
PGludD4oJ3QnKSk7Ci0gIEVYUEVDVF9GQUxTRShub19wcm9tby5NYXRjaGVzKCJmb29sIikpOwot
ICBFWFBFQ1RfRkFMU0UocHJvbW8uTWF0Y2hlcygiZm9vbCIpKTsKLSAgRVhQRUNUX1RSVUUobm9f
cHJvbW8uTWF0Y2hlcygiZm9vdCIpKTsKLSAgRVhQRUNUX1RSVUUocHJvbW8uTWF0Y2hlcygiZm9v
dCIpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhlIHR5cGUgb2YgYSBNQVRDSEVSKi4KLQotVEVTVChN
YXRjaGVyUG5NYWNyb1Rlc3QsIFR5cGVzQXJlQ29ycmVjdCkgewotICAvLyBFcXVhbHNTdW1PZigp
IG11c3QgYmUgYXNzaWduYWJsZSB0byBhIEVxdWFsc1N1bU9mTWF0Y2hlciB2YXJpYWJsZS4KLSAg
RXF1YWxzU3VtT2ZNYXRjaGVyIGEwID0gRXF1YWxzU3VtT2YoKTsKLQotICAvLyBFcXVhbHNTdW1P
ZigxKSBtdXN0IGJlIGFzc2lnbmFibGUgdG8gYSBFcXVhbHNTdW1PZk1hdGNoZXJQIHZhcmlhYmxl
LgotICBFcXVhbHNTdW1PZk1hdGNoZXJQPGludD4gYTEgPSBFcXVhbHNTdW1PZigxKTsKLQotICAv
LyBFcXVhbHNTdW1PZihwMSwgLi4uLCBwaykgbXVzdCBiZSBhc3NpZ25hYmxlIHRvIGEgRXF1YWxz
U3VtT2ZNYXRjaGVyUGsKLSAgLy8gdmFyaWFibGUsIGFuZCBzbyBvbi4KLSAgRXF1YWxzU3VtT2ZN
YXRjaGVyUDI8aW50LCBjaGFyPiBhMiA9IEVxdWFsc1N1bU9mKDEsICcyJyk7Ci0gIEVxdWFsc1N1
bU9mTWF0Y2hlclAzPGludCwgaW50LCBjaGFyPiBhMyA9IEVxdWFsc1N1bU9mKDEsIDIsICczJyk7
Ci0gIEVxdWFsc1N1bU9mTWF0Y2hlclA0PGludCwgaW50LCBpbnQsIGNoYXI+IGE0ID0gRXF1YWxz
U3VtT2YoMSwgMiwgMywgJzQnKTsKLSAgRXF1YWxzU3VtT2ZNYXRjaGVyUDU8aW50LCBpbnQsIGlu
dCwgaW50LCBjaGFyPiBhNSA9Ci0gICAgICBFcXVhbHNTdW1PZigxLCAyLCAzLCA0LCAnNScpOwot
ICBFcXVhbHNTdW1PZk1hdGNoZXJQNjxpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTYg
PQotICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgJzYnKTsKLSAgRXF1YWxzU3VtT2ZN
YXRjaGVyUDc8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTcgPQotICAgICAg
RXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgNiwgJzcnKTsKLSAgRXF1YWxzU3VtT2ZNYXRjaGVy
UDg8aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBjaGFyPiBhOCA9Ci0gICAgICBF
cXVhbHNTdW1PZigxLCAyLCAzLCA0LCA1LCA2LCA3LCAnOCcpOwotICBFcXVhbHNTdW1PZk1hdGNo
ZXJQOTxpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgY2hhcj4gYTkgPQot
ICAgICAgRXF1YWxzU3VtT2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgJzknKTsKLSAgRXF1YWxz
U3VtT2ZNYXRjaGVyUDEwPGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGNoYXI+IGExMCA9Ci0gICAgICBFcXVhbHNTdW1PZigxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5LCAnMCcpOwotCi0gIC8vIEF2b2lkICJ1bnVzZWQgdmFyaWFibGUiIHdhcm5pbmdzLgotICAo
dm9pZClhMDsKLSAgKHZvaWQpYTE7Ci0gICh2b2lkKWEyOwotICAodm9pZClhMzsKLSAgKHZvaWQp
YTQ7Ci0gICh2b2lkKWE1OwotICAodm9pZClhNjsKLSAgKHZvaWQpYTc7Ci0gICh2b2lkKWE4Owot
ICAodm9pZClhOTsKLSAgKHZvaWQpYTEwOwotfQotCi0vLyBUZXN0cyB0aGF0IG1hdGNoZXItdHlw
ZWQgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCBpbiBWYWx1ZSgpIGluc2lkZSBhCi0vLyBNQVRDSEVS
X1BuIGRlZmluaXRpb24uCi0KLS8vIFN1Y2NlZWRzIGlmIGFyZyBtYXRjaGVzIGV4YWN0bHkgMiBv
ZiB0aGUgMyBtYXRjaGVycy4KLU1BVENIRVJfUDMoVHdvT2YsIG0xLCBtMiwgbTMsICIiKSB7Ci0g
IGNvbnN0IGludCBjb3VudCA9IHN0YXRpY19jYXN0PGludD4oVmFsdWUoYXJnLCBtMSkpCi0gICAg
ICArIHN0YXRpY19jYXN0PGludD4oVmFsdWUoYXJnLCBtMikpICsgc3RhdGljX2Nhc3Q8aW50PihW
YWx1ZShhcmcsIG0zKSk7Ci0gIHJldHVybiBjb3VudCA9PSAyOwotfQotCi1URVNUKE1hdGNoZXJQ
bk1hY3JvVGVzdCwgQ2FuVXNlTWF0Y2hlclR5cGVkUGFyYW1ldGVySW5WYWx1ZSkgewotICBFWFBF
Q1RfVEhBVCg0MiwgVHdvT2YoR3QoMCksIEx0KDUwKSwgRXEoMTApKSk7Ci0gIEVYUEVDVF9USEFU
KDAsIE5vdChUd29PZihHdCgtMSksIEx0KDEpLCBFcSgwKSkpKTsKLX0KLQotLy8gVGVzdHMgQ29u
dGFpbnMoKS4KLQotVEVTVChDb250YWluc1Rlc3QsIExpc3RNYXRjaGVzV2hlbkVsZW1lbnRJc0lu
Q29udGFpbmVyKSB7Ci0gIGxpc3Q8aW50PiBzb21lX2xpc3Q7Ci0gIHNvbWVfbGlzdC5wdXNoX2Jh
Y2soMyk7Ci0gIHNvbWVfbGlzdC5wdXNoX2JhY2soMSk7Ci0gIHNvbWVfbGlzdC5wdXNoX2JhY2so
Mik7Ci0gIEVYUEVDVF9USEFUKHNvbWVfbGlzdCwgQ29udGFpbnMoMSkpOwotICBFWFBFQ1RfVEhB
VChzb21lX2xpc3QsIENvbnRhaW5zKEd0KDIuNSkpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9saXN0
LCBDb250YWlucyhFcSgyLjBmKSkpOwotCi0gIGxpc3Q8c3RkOjpzdHJpbmc+IGFub3RoZXJfbGlz
dDsKLSAgYW5vdGhlcl9saXN0LnB1c2hfYmFjaygiZmVlIik7Ci0gIGFub3RoZXJfbGlzdC5wdXNo
X2JhY2soImZpZSIpOwotICBhbm90aGVyX2xpc3QucHVzaF9iYWNrKCJmb2UiKTsKLSAgYW5vdGhl
cl9saXN0LnB1c2hfYmFjaygiZnVtIik7Ci0gIEVYUEVDVF9USEFUKGFub3RoZXJfbGlzdCwgQ29u
dGFpbnMoc3RkOjpzdHJpbmcoImZlZSIpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNUZXN0LCBMaXN0
RG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJc05vdEluQ29udGFpbmVyKSB7Ci0gIGxpc3Q8aW50PiBz
b21lX2xpc3Q7Ci0gIHNvbWVfbGlzdC5wdXNoX2JhY2soMyk7Ci0gIHNvbWVfbGlzdC5wdXNoX2Jh
Y2soMSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfbGlzdCwgTm90KENvbnRhaW5zKDQpKSk7Ci19Ci0K
LVRFU1QoQ29udGFpbnNUZXN0LCBTZXRNYXRjaGVzV2hlbkVsZW1lbnRJc0luQ29udGFpbmVyKSB7
Ci0gIHNldDxpbnQ+IHNvbWVfc2V0OwotICBzb21lX3NldC5pbnNlcnQoMyk7Ci0gIHNvbWVfc2V0
Lmluc2VydCgxKTsKLSAgc29tZV9zZXQuaW5zZXJ0KDIpOwotICBFWFBFQ1RfVEhBVChzb21lX3Nl
dCwgQ29udGFpbnMoRXEoMS4wKSkpOwotICBFWFBFQ1RfVEhBVChzb21lX3NldCwgQ29udGFpbnMo
RXEoMy4wZikpKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9zZXQsIENvbnRhaW5zKDIpKTsKLQotICBz
ZXQ8Y29uc3QgY2hhcio+IGFub3RoZXJfc2V0OwotICBhbm90aGVyX3NldC5pbnNlcnQoImZlZSIp
OwotICBhbm90aGVyX3NldC5pbnNlcnQoImZpZSIpOwotICBhbm90aGVyX3NldC5pbnNlcnQoImZv
ZSIpOwotICBhbm90aGVyX3NldC5pbnNlcnQoImZ1bSIpOwotICBFWFBFQ1RfVEhBVChhbm90aGVy
X3NldCwgQ29udGFpbnMoRXEoc3RkOjpzdHJpbmcoImZ1bSIpKSkpOwotfQotCi1URVNUKENvbnRh
aW5zVGVzdCwgU2V0RG9lc05vdE1hdGNoV2hlbkVsZW1lbnRJc05vdEluQ29udGFpbmVyKSB7Ci0g
IHNldDxpbnQ+IHNvbWVfc2V0OwotICBzb21lX3NldC5pbnNlcnQoMyk7Ci0gIHNvbWVfc2V0Lmlu
c2VydCgxKTsKLSAgRVhQRUNUX1RIQVQoc29tZV9zZXQsIE5vdChDb250YWlucyg0KSkpOwotCi0g
IHNldDxjb25zdCBjaGFyKj4gY19zdHJpbmdfc2V0OwotICBjX3N0cmluZ19zZXQuaW5zZXJ0KCJo
ZWxsbyIpOwotICBFWFBFQ1RfVEhBVChjX3N0cmluZ19zZXQsIE5vdChDb250YWlucyhzdGQ6OnN0
cmluZygiaGVsbG8iKS5jX3N0cigpKSkpOwotfQotCi1URVNUKENvbnRhaW5zVGVzdCwgRXhwbGFp
bnNNYXRjaFJlc3VsdENvcnJlY3RseSkgewotICBjb25zdCBpbnQgYVsyXSA9IHsgMSwgMiB9Owot
ICBNYXRjaGVyPGNvbnN0IGludCAoJilbMl0+IG0gPSBDb250YWlucygyKTsKLSAgRVhQRUNUX0VR
KCJ3aG9zZSBlbGVtZW50ICMxIG1hdGNoZXMiLCBFeHBsYWluKG0sIGEpKTsKLQotICBtID0gQ29u
dGFpbnMoMyk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBhKSk7Ci0KLSAgbSA9IENvbnRh
aW5zKEdyZWF0ZXJUaGFuKDApKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBlbGVtZW50ICMwIG1hdGNo
ZXMsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLCBFeHBsYWluKG0sIGEpKTsKLQotICBtID0gQ29u
dGFpbnMoR3JlYXRlclRoYW4oMTApKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIGEpKTsK
LX0KLQotVEVTVChDb250YWluc1Rlc3QsIERlc2NyaWJlc0l0c2VsZkNvcnJlY3RseSkgewotICBN
YXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IENvbnRhaW5zKDEpOwotICBFWFBFQ1RfRVEoImNvbnRh
aW5zIGF0IGxlYXN0IG9uZSBlbGVtZW50IHRoYXQgaXMgZXF1YWwgdG8gMSIsIERlc2NyaWJlKG0p
KTsKLQotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTIgPSBOb3QobSk7Ci0gIEVYUEVDVF9FUSgi
ZG9lc24ndCBjb250YWluIGFueSBlbGVtZW50IHRoYXQgaXMgZXF1YWwgdG8gMSIsIERlc2NyaWJl
KG0yKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNUZXN0LCBNYXBNYXRjaGVzV2hlbkVsZW1lbnRJc0lu
Q29udGFpbmVyKSB7Ci0gIG1hcDxjb25zdCBjaGFyKiwgaW50PiBteV9tYXA7Ci0gIGNvbnN0IGNo
YXIqIGJhciA9ICJhIHN0cmluZyI7Ci0gIG15X21hcFtiYXJdID0gMjsKLSAgRVhQRUNUX1RIQVQo
bXlfbWFwLCBDb250YWlucyhwYWlyPGNvbnN0IGNoYXIqIGNvbnN0LCBpbnQ+KGJhciwgMikpKTsK
LQotICBtYXA8c3RkOjpzdHJpbmcsIGludD4gYW5vdGhlcl9tYXA7Ci0gIGFub3RoZXJfbWFwWyJm
ZWUiXSA9IDE7Ci0gIGFub3RoZXJfbWFwWyJmaWUiXSA9IDI7Ci0gIGFub3RoZXJfbWFwWyJmb2Ui
XSA9IDM7Ci0gIGFub3RoZXJfbWFwWyJmdW0iXSA9IDQ7Ci0gIEVYUEVDVF9USEFUKGFub3RoZXJf
bWFwLAotICAgICAgICAgICAgICBDb250YWlucyhwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBpbnQ+
KHN0ZDo6c3RyaW5nKCJmZWUiKSwgMSkpKTsKLSAgRVhQRUNUX1RIQVQoYW5vdGhlcl9tYXAsIENv
bnRhaW5zKHBhaXI8Y29uc3Qgc3RkOjpzdHJpbmcsIGludD4oImZpZSIsIDIpKSk7Ci19Ci0KLVRF
U1QoQ29udGFpbnNUZXN0LCBNYXBEb2VzTm90TWF0Y2hXaGVuRWxlbWVudElzTm90SW5Db250YWlu
ZXIpIHsKLSAgbWFwPGludCwgaW50PiBzb21lX21hcDsKLSAgc29tZV9tYXBbMV0gPSAxMTsKLSAg
c29tZV9tYXBbMl0gPSAyMjsKLSAgRVhQRUNUX1RIQVQoc29tZV9tYXAsIE5vdChDb250YWlucyhw
YWlyPGNvbnN0IGludCwgaW50PigyLCAyMykpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNUZXN0LCBB
cnJheU1hdGNoZXNXaGVuRWxlbWVudElzSW5Db250YWluZXIpIHsKLSAgY29uc3QgY2hhciogc3Ry
aW5nX2FycmF5W10gPSB7ICJmZWUiLCAiZmllIiwgImZvZSIsICJmdW0iIH07Ci0gIEVYUEVDVF9U
SEFUKHN0cmluZ19hcnJheSwgQ29udGFpbnMoRXEoc3RkOjpzdHJpbmcoImZ1bSIpKSkpOwotfQot
Ci1URVNUKENvbnRhaW5zVGVzdCwgQXJyYXlEb2VzTm90TWF0Y2hXaGVuRWxlbWVudElzTm90SW5D
b250YWluZXIpIHsKLSAgaW50IGludF9hcnJheVtdID0geyAxLCAyLCAzLCA0IH07Ci0gIEVYUEVD
VF9USEFUKGludF9hcnJheSwgTm90KENvbnRhaW5zKDUpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNU
ZXN0LCBBY2NlcHRzTWF0Y2hlcikgewotICBjb25zdCBpbnQgYVtdID0geyAxLCAyLCAzIH07Ci0g
IEVYUEVDVF9USEFUKGEsIENvbnRhaW5zKEd0KDIpKSk7Ci0gIEVYUEVDVF9USEFUKGEsIE5vdChD
b250YWlucyhHdCg0KSkpKTsKLX0KLQotVEVTVChDb250YWluc1Rlc3QsIFdvcmtzRm9yTmF0aXZl
QXJyYXlBc1R1cGxlKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7IDEsIDIgfTsKLSAgY29uc3QgaW50
KiBjb25zdCBwb2ludGVyID0gYTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwb2ludGVyLCAy
KSwgQ29udGFpbnMoMSkpOwotICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKHBvaW50ZXIsIDIpLCBO
b3QoQ29udGFpbnMoR3QoMykpKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNUZXN0LCBXb3Jrc0ZvclR3
b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKLSAgaW50IGFbXVszXSA9IHsgeyAxLCAyLCAzIH0s
IHsgNCwgNSwgNiB9IH07Ci0gIEVYUEVDVF9USEFUKGEsIENvbnRhaW5zKEVsZW1lbnRzQXJlKDQs
IDUsIDYpKSk7Ci0gIEVYUEVDVF9USEFUKGEsIENvbnRhaW5zKENvbnRhaW5zKDUpKSk7Ci0gIEVY
UEVDVF9USEFUKGEsIE5vdChDb250YWlucyhFbGVtZW50c0FyZSgzLCA0LCA1KSkpKTsKLSAgRVhQ
RUNUX1RIQVQoYSwgQ29udGFpbnMoTm90KENvbnRhaW5zKDUpKSkpOwotfQotCi1URVNUKEFsbE9m
VGVzdCwgSHVnZU1hdGNoZXIpIHsKLSAgLy8gVmVyaWZ5IHRoYXQgdXNpbmcgQWxsT2Ygd2l0aCBt
YW55IGFyZ3VtZW50cyBkb2Vzbid0IGNhdXNlCi0gIC8vIHRoZSBjb21waWxlciB0byBleGNlZWQg
dGVtcGxhdGUgaW5zdGFudGlhdGlvbiBkZXB0aCBsaW1pdC4KLSAgRVhQRUNUX1RIQVQoMCwgdGVz
dGluZzo6QWxsT2YoXywgXywgXywgXywgXywgXywgXywgXywgXywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6QWxsT2YoXywgXywgXywgXywgXywgXywgXywgXywgXywg
XykpKTsKLX0KLQotVEVTVChBbnlPZlRlc3QsIEh1Z2VNYXRjaGVyKSB7Ci0gIC8vIFZlcmlmeSB0
aGF0IHVzaW5nIEFueU9mIHdpdGggbWFueSBhcmd1bWVudHMgZG9lc24ndCBjYXVzZQotICAvLyB0
aGUgY29tcGlsZXIgdG8gZXhjZWVkIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gZGVwdGggbGltaXQu
Ci0gIEVYUEVDVF9USEFUKDAsIHRlc3Rpbmc6OkFueU9mKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8s
IF8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkFueU9mKF8sIF8s
IF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKSk7Ci19Ci0KLW5hbWVzcGFjZSBhZGxfdGVzdCB7Ci0K
LS8vIFZlcmlmaWVzIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIDo6dGVzdGluZzo6QWxsT2Yg
YW5kIDo6dGVzdGluZzo6QW55T2YKLS8vIGRvbid0IGlzc3VlIHVucXVhbGlmaWVkIHJlY3Vyc2l2
ZSBjYWxscy4gIElmIHRoZXkgZG8sIHRoZSBhcmd1bWVudCBkZXBlbmRlbnQKLS8vIG5hbWUgbG9v
a3VwIHdpbGwgY2F1c2UgQWxsT2YvQW55T2YgaW4gdGhlICdhZGxfdGVzdCcgbmFtZXNwYWNlIHRv
IGJlIGZvdW5kCi0vLyBhcyBhIGNhbmRpZGF0ZSBhbmQgdGhlIGNvbXBpbGF0aW9uIHdpbGwgYnJl
YWsgZHVlIHRvIGFuIGFtYmlndW91cyBvdmVybG9hZC4KLQotLy8gVGhlIG1hdGNoZXIgbXVzdCBi
ZSBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgQWxsT2YvQW55T2YgdG8gbWFrZSBhcmd1bWVudAot
Ly8gZGVwZW5kZW50IGxvb2t1cCBmaW5kIHRob3NlLgotTUFUQ0hFUihNLCAiIikgeyByZXR1cm4g
dHJ1ZTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotYm9vbCBBbGxP
Zihjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyByZXR1cm4gdHJ1ZTsgfQotCi1URVNUKEFs
bE9mVGVzdCwgRG9lc05vdENhbGxBbGxPZlVucXVhbGlmaWVkKSB7Ci0gIEVYUEVDVF9USEFUKDQy
LCB0ZXN0aW5nOjpBbGxPZigKLSAgICAgIE0oKSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0o
KSwgTSgpLCBNKCksIE0oKSkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPiBib29sCi1BbnlPZihjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyByZXR1cm4gdHJ1
ZTsgfQotCi1URVNUKEFueU9mVGVzdCwgRG9lc05vdENhbGxBbnlPZlVucXVhbGlmaWVkKSB7Ci0g
IEVYUEVDVF9USEFUKDQyLCB0ZXN0aW5nOjpBbnlPZigKLSAgICAgIE0oKSwgTSgpLCBNKCksIE0o
KSwgTSgpLCBNKCksIE0oKSwgTSgpLCBNKCksIE0oKSkpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
YWRsX3Rlc3QKLQotI2lmZGVmIF9NU0NfVkVSCi0jIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRp
ZgotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2st
aW50ZXJuYWwtdXRpbHNfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2staW50ZXJuYWwt
dXRpbHNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMyNDIzZWNkMzQ0
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1pbnRlcm5hbC11dGls
c190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjk4ICswLDAgQEAKLS8vIENvcHlyaWdodCAy
MDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdy
aXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVy
bmFsIHV0aWxpdGllcy4KLQotI2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLWludGVybmFs
LXV0aWxzLmgiCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUg
PG1lbW9yeT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRl
IDx2ZWN0b3I+Ci0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJnbW9jay9pbnRl
cm5hbC9nbW9jay1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC1zcGkuaCIKLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1
bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0
IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhl
cmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVu
dCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5o
IGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNs
dWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fCi0KLSNpZiBHVEVTVF9PU19DWUdXSU4KLSMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBG
b3Igc3NpemVfdC4gTk9MSU5UCi0jZW5kaWYKLQotY2xhc3MgUHJvdG9jb2xNZXNzYWdlOwotCi1u
YW1lc3BhY2UgcHJvdG8yIHsKLWNsYXNzIE1lc3NhZ2U7Ci19ICAvLyBuYW1lc3BhY2UgcHJvdG8y
Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLW5hbWVzcGFj
ZSB7Ci0KLVRFU1QoQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkc1Rlc3QsIFdvcmtzV2hlbk5h
bWVDb250YWluc05vV29yZCkgewotICBFWFBFQ1RfRVEoIiIsIENvbnZlcnRJZGVudGlmaWVyTmFt
ZVRvV29yZHMoIiIpKTsKLSAgRVhQRUNUX0VRKCIiLCBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dv
cmRzKCJfIikpOwotICBFWFBFQ1RfRVEoIiIsIENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHMo
Il9fIikpOwotfQotCi1URVNUKENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHNUZXN0LCBXb3Jr
c1doZW5OYW1lQ29udGFpbnNEaWdpdHMpIHsKLSAgRVhQRUNUX0VRKCIxIiwgQ29udmVydElkZW50
aWZpZXJOYW1lVG9Xb3JkcygiXzEiKSk7Ci0gIEVYUEVDVF9FUSgiMiIsIENvbnZlcnRJZGVudGlm
aWVyTmFtZVRvV29yZHMoIjJfIikpOwotICBFWFBFQ1RfRVEoIjM0IiwgQ29udmVydElkZW50aWZp
ZXJOYW1lVG9Xb3JkcygiXzM0XyIpKTsKLSAgRVhQRUNUX0VRKCIzNCA1NiIsIENvbnZlcnRJZGVu
dGlmaWVyTmFtZVRvV29yZHMoIl8zNF81NiIpKTsKLX0KLQotVEVTVChDb252ZXJ0SWRlbnRpZmll
ck5hbWVUb1dvcmRzVGVzdCwgV29ya3NXaGVuTmFtZUNvbnRhaW5zQ2FtZWxDYXNlV29yZHMpIHsK
LSAgRVhQRUNUX0VRKCJhIGJpZyB3b3JkIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3Jkcygi
QUJpZ1dvcmQiKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIGJhciIsIENvbnZlcnRJZGVudGlmaWVyTmFt
ZVRvV29yZHMoIkZvb0JhciIpKTsKLSAgRVhQRUNUX0VRKCJmb28iLCBDb252ZXJ0SWRlbnRpZmll
ck5hbWVUb1dvcmRzKCJGb29fIikpOwotICBFWFBFQ1RfRVEoImZvbyBiYXIiLCBDb252ZXJ0SWRl
bnRpZmllck5hbWVUb1dvcmRzKCJfRm9vX0Jhcl8iKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIGFuZCBi
YXIiLCBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJfRm9vX19BbmRfQmFyIikpOwotfQot
Ci1URVNUKENvbnZlcnRJZGVudGlmaWVyTmFtZVRvV29yZHNUZXN0LCBXb3Jrc1doZW5OYW1lQ29u
dGFpbnNfU2VwYXJhdGVkV29yZHMpIHsKLSAgRVhQRUNUX0VRKCJmb28gYmFyIiwgQ29udmVydElk
ZW50aWZpZXJOYW1lVG9Xb3JkcygiZm9vX2JhciIpKTsKLSAgRVhQRUNUX0VRKCJmb28iLCBDb252
ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzKCJfZm9vXyIpKTsKLSAgRVhQRUNUX0VRKCJmb28gYmFy
IiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX2Zvb19iYXJfIikpOwotICBFWFBFQ1Rf
RVEoImZvbyBhbmQgYmFyIiwgQ29udmVydElkZW50aWZpZXJOYW1lVG9Xb3JkcygiX2Zvb19fYW5k
X2JhciIpKTsKLX0KLQotVEVTVChDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dvcmRzVGVzdCwgV29y
a3NXaGVuTmFtZUlzTWl4dHVyZSkgewotICBFWFBFQ1RfRVEoImZvbyBiYXIgMTIzIiwgQ29udmVy
dElkZW50aWZpZXJOYW1lVG9Xb3JkcygiRm9vX2JhcjEyMyIpKTsKLSAgRVhQRUNUX0VRKCJjaGFw
dGVyIDExIHNlY3Rpb24gMSIsCi0gICAgICAgICAgICBDb252ZXJ0SWRlbnRpZmllck5hbWVUb1dv
cmRzKCJfQ2hhcHRlcjExU2VjdGlvbl8xXyIpKTsKLX0KLQotVEVTVChQb2ludGVlT2ZUZXN0LCBX
b3Jrc0ZvclNtYXJ0UG9pbnRlcnMpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8Y29uc3Qg
Y2hhciwKLSAgICAgIFBvaW50ZWVPZjxpbnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBjaGFyPiA+
Ojp0eXBlPigpOwotI2lmIEdURVNUX0hBU19TVERfVU5JUVVFX1BUUl8KLSAgQ29tcGlsZUFzc2Vy
dFR5cGVzRXF1YWw8aW50LCBQb2ludGVlT2Y8c3RkOjp1bmlxdWVfcHRyPGludD4gPjo6dHlwZT4o
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXwotI2lmIEdURVNUX0hBU19T
VERfU0hBUkVEX1BUUl8KLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8c3RkOjpzdHJpbmcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZWVPZjxzdGQ6OnNoYXJlZF9wdHI8c3RkOjpz
dHJpbmc+ID46OnR5cGU+KCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8K
LX0KLQotVEVTVChQb2ludGVlT2ZUZXN0LCBXb3Jrc0ZvclJhd1BvaW50ZXJzKSB7Ci0gIENvbXBp
bGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUG9pbnRlZU9mPGludCo+Ojp0eXBlPigpOwotICBDb21w
aWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBQb2ludGVlT2Y8Y29uc3QgY2hhcio+Ojp0
eXBlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDx2b2lkLCBQb2ludGVlT2Y8dm9pZCo+
Ojp0eXBlPigpOwotfQotCi1URVNUKEdldFJhd1BvaW50ZXJUZXN0LCBXb3Jrc0ZvclNtYXJ0UG9p
bnRlcnMpIHsKLSNpZiBHVEVTVF9IQVNfU1REX1VOSVFVRV9QVFJfCi0gIGNvbnN0IGNoYXIqIGNv
bnN0IHJhd19wMSA9IG5ldyBjb25zdCBjaGFyKCdhJyk7ICAvLyBOT0xJTlQKLSAgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IGNoYXI+IHAxKHJhd19wMSk7Ci0gIEVYUEVDVF9FUShyYXdfcDEs
IEdldFJhd1BvaW50ZXIocDEpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9VTklRVUVfUFRS
XwotI2lmIEdURVNUX0hBU19TVERfU0hBUkVEX1BUUl8KLSAgZG91YmxlKiBjb25zdCByYXdfcDIg
PSBuZXcgZG91YmxlKDIuNSk7ICAvLyBOT0xJTlQKLSAgY29uc3Qgc3RkOjpzaGFyZWRfcHRyPGRv
dWJsZT4gcDIocmF3X3AyKTsKLSAgRVhQRUNUX0VRKHJhd19wMiwgR2V0UmF3UG9pbnRlcihwMikp
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1NIQVJFRF9QVFJfCi0KLSAgY29uc3QgY2hhciog
Y29uc3QgcmF3X3A0ID0gbmV3IGNvbnN0IGNoYXIoJ2EnKTsgIC8vIE5PTElOVAotICBjb25zdCBp
bnRlcm5hbDo6bGlua2VkX3B0cjxjb25zdCBjaGFyPiBwNChyYXdfcDQpOwotICBFWFBFQ1RfRVEo
cmF3X3A0LCBHZXRSYXdQb2ludGVyKHA0KSk7Ci19Ci0KLVRFU1QoR2V0UmF3UG9pbnRlclRlc3Qs
IFdvcmtzRm9yUmF3UG9pbnRlcnMpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgLy8gRG9uJ3QgdXNl
IEVYUEVDVF9FUSBhcyBubyBOVUxMLXRlc3RpbmcgbWFnaWMgb24gU3ltYmlhbi4KLSAgRVhQRUNU
X1RSVUUoTlVMTCA9PSBHZXRSYXdQb2ludGVyKHApKTsKLSAgaW50IG4gPSAxOwotICBFWFBFQ1Rf
RVEoJm4sIEdldFJhd1BvaW50ZXIoJm4pKTsKLX0KLQotLy8gVGVzdHMgS2luZE9mPFQ+LgotCi1j
bGFzcyBCYXNlIHt9OwotY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHt9OwotCi1URVNUKEtp
bmRPZlRlc3QsIEJvb2wpIHsKLSAgRVhQRUNUX0VRKGtCb29sLCBHTU9DS19LSU5EX09GXyhib29s
KSk7ICAvLyBOT0xJTlQKLX0KLQotVEVTVChLaW5kT2ZUZXN0LCBJbnRlZ2VyKSB7Ci0gIEVYUEVD
VF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8oY2hhcikpOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8oc2lnbmVkIGNoYXIpKTsgIC8vIE5PTElOVAot
ICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHVuc2lnbmVkIGNoYXIpKTsgIC8v
IE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHNob3J0KSk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1bnNpZ25lZCBz
aG9ydCkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUShrSW50ZWdlciwgR01PQ0tfS0lORF9PRl8o
aW50KSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyh1
bnNpZ25lZCBpbnQpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJ
TkRfT0ZfKGxvbmcpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIsIEdNT0NLX0tJ
TkRfT0ZfKHVuc2lnbmVkIGxvbmcpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVnZXIs
IEdNT0NLX0tJTkRfT0ZfKHdjaGFyX3QpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0ludGVn
ZXIsIEdNT0NLX0tJTkRfT0ZfKEludDY0KSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKGtJbnRl
Z2VyLCBHTU9DS19LSU5EX09GXyhVSW50NjQpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoa0lu
dGVnZXIsIEdNT0NLX0tJTkRfT0ZfKHNpemVfdCkpOyAgLy8gTk9MSU5UCi0jaWYgR1RFU1RfT1Nf
TElOVVggfHwgR1RFU1RfT1NfTUFDIHx8IEdURVNUX09TX0NZR1dJTgotICAvLyBzc2l6ZV90IGlz
IG5vdCBkZWZpbmVkIG9uIFdpbmRvd3MgYW5kIHBvc3NpYmx5IHNvbWUgb3RoZXIgT1Nlcy4KLSAg
RVhQRUNUX0VRKGtJbnRlZ2VyLCBHTU9DS19LSU5EX09GXyhzc2l6ZV90KSk7ICAvLyBOT0xJTlQK
LSNlbmRpZgotfQotCi1URVNUKEtpbmRPZlRlc3QsIEZsb2F0aW5nUG9pbnQpIHsKLSAgRVhQRUNU
X0VRKGtGbG9hdGluZ1BvaW50LCBHTU9DS19LSU5EX09GXyhmbG9hdCkpOyAgLy8gTk9MSU5UCi0g
IEVYUEVDVF9FUShrRmxvYXRpbmdQb2ludCwgR01PQ0tfS0lORF9PRl8oZG91YmxlKSk7ICAvLyBO
T0xJTlQKLSAgRVhQRUNUX0VRKGtGbG9hdGluZ1BvaW50LCBHTU9DS19LSU5EX09GXyhsb25nIGRv
dWJsZSkpOyAgLy8gTk9MSU5UCi19Ci0KLVRFU1QoS2luZE9mVGVzdCwgT3RoZXIpIHsKLSAgRVhQ
RUNUX0VRKGtPdGhlciwgR01PQ0tfS0lORF9PRl8odm9pZCopKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRVEoa090aGVyLCBHTU9DS19LSU5EX09GXyhjaGFyKiopKTsgIC8vIE5PTElOVAotICBFWFBF
Q1RfRVEoa090aGVyLCBHTU9DS19LSU5EX09GXyhCYXNlKSk7ICAvLyBOT0xJTlQKLX0KLQotLy8g
VGVzdHMgTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8VCwgVT4uCi0KLVRFU1QoTG9zc2xl
c3NBcml0aG1ldGljQ29udmVydGlibGVUZXN0LCBCb29sVG9Cb29sKSB7Ci0gIEVYUEVDVF9UUlVF
KChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxib29sLCBib29sPjo6dmFsdWUpKTsKLX0K
LQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEJvb2xUb0ludGVnZXIp
IHsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGJvb2wsIGNo
YXI+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGli
bGU8Ym9vbCwgaW50Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoCi0gICAgICAoTG9zc2xlc3NB
cml0aG1ldGljQ29udmVydGlibGU8Ym9vbCwgdW5zaWduZWQgbG9uZz46OnZhbHVlKSk7ICAvLyBO
T0xJTlQKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEJvb2xU
b0Zsb2F0aW5nUG9pbnQpIHsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZl
cnRpYmxlPGJvb2wsIGZsb2F0Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJp
dGhtZXRpY0NvbnZlcnRpYmxlPGJvb2wsIGRvdWJsZT46OnZhbHVlKSk7Ci19Ci0KLVRFU1QoTG9z
c2xlc3NBcml0aG1ldGljQ29udmVydGlibGVUZXN0LCBJbnRlZ2VyVG9Cb29sKSB7Ci0gIEVYUEVD
VF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8dW5zaWduZWQgY2hhciwgYm9v
bD46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGli
bGU8aW50LCBib29sPjo6dmFsdWUpKTsKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252
ZXJ0aWJsZVRlc3QsIEludGVnZXJUb0ludGVnZXIpIHsKLSAgLy8gVW5zaWduZWQgPT4gbGFyZ2Vy
IHNpZ25lZCBpcyBmaW5lLgotICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVy
dGlibGU8dW5zaWduZWQgY2hhciwgaW50Pjo6dmFsdWUpKTsKLQotICAvLyBVbnNpZ25lZCA9PiBs
YXJnZXIgdW5zaWduZWQgaXMgZmluZS4KLSAgRVhQRUNUX1RSVUUoCi0gICAgICAoTG9zc2xlc3NB
cml0aG1ldGljQ29udmVydGlibGU8dW5zaWduZWQgc2hvcnQsIFVJbnQ2ND46OnZhbHVlKSk7IC8v
IE5PTElOVAotCi0gIC8vIFNpZ25lZCA9PiB1bnNpZ25lZCBpcyBub3QgZmluZS4KLSAgRVhQRUNU
X0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxzaG9ydCwgVUludDY0Pjo6dmFs
dWUpKTsgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVy
dGlibGU8Ci0gICAgICBzaWduZWQgY2hhciwgdW5zaWduZWQgaW50Pjo6dmFsdWUpKTsgIC8vIE5P
TElOVAotCi0gIC8vIFNhbWUgc2l6ZSBhbmQgc2FtZSBzaWduZWRuZXNzOiBmaW5lIHRvby4KLSAg
RVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPAotICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9UUlVF
KChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxpbnQsIGludD46OnZhbHVlKSk7Ci0gIEVY
UEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTx3Y2hhcl90LCB3Y2hhcl90
Pjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxl
PAotICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZz46OnZhbHVlKSk7
ICAvLyBOT0xJTlQKLQotICAvLyBTYW1lIHNpemUsIGRpZmZlcmVudCBzaWduZWRuZXNzOiBub3Qg
ZmluZS4KLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTwKLSAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyLCBzaWduZWQgY2hhcj46OnZhbHVlKSk7Ci0gIEVY
UEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8aW50LCB1bnNpZ25lZCBp
bnQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRp
YmxlPFVJbnQ2NCwgSW50NjQ+Ojp2YWx1ZSkpOwotCi0gIC8vIExhcmdlciBzaXplID0+IHNtYWxs
ZXIgc2l6ZSBpcyBub3QgZmluZS4KLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWND
b252ZXJ0aWJsZTxsb25nLCBjaGFyPjo6dmFsdWUpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRkFM
U0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPGludCwgc2lnbmVkIGNoYXI+Ojp2YWx1
ZSkpOwotICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRpY0NvbnZlcnRpYmxlPEludDY0
LCB1bnNpZ25lZCBpbnQ+Ojp2YWx1ZSkpOwotfQotCi1URVNUKExvc3NsZXNzQXJpdGhtZXRpY0Nv
bnZlcnRpYmxlVGVzdCwgSW50ZWdlclRvRmxvYXRpbmdQb2ludCkgewotICAvLyBJbnRlZ2VycyBj
YW5ub3QgYmUgbG9zc2xlc3NseSBjb252ZXJ0ZWQgdG8gZmxvYXRpbmctcG9pbnRzLCBhcwotICAv
LyB0aGUgZm9ybWF0IG9mIHRoZSBsYXR0ZXIgaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4KLSAg
RVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxjaGFyLCBmbG9hdD46
OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8
aW50LCBkb3VibGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKExvc3NsZXNzQXJpdGhtZXRp
Y0NvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgIHNob3J0LCBsb25nIGRvdWJsZT46OnZhbHVl
KSk7ICAvLyBOT0xJTlQKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRl
c3QsIEZsb2F0aW5nUG9pbnRUb0Jvb2wpIHsKLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRo
bWV0aWNDb252ZXJ0aWJsZTxmbG9hdCwgYm9vbD46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgo
TG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZG91YmxlLCBib29sPjo6dmFsdWUpKTsKLX0K
LQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3QsIEZsb2F0aW5nUG9pbnRU
b0ludGVnZXIpIHsKLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJs
ZTxmbG9hdCwgbG9uZz46OnZhbHVlKSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKChMb3Nz
bGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUsIEludDY0Pjo6dmFsdWUpKTsKLSAgRVhQ
RUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxsb25nIGRvdWJsZSwgaW50
Pjo6dmFsdWUpKTsKLX0KLQotVEVTVChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZVRlc3Qs
IEZsb2F0aW5nUG9pbnRUb0Zsb2F0aW5nUG9pbnQpIHsKLSAgLy8gU21hbGxlciBzaXplID0+IGxh
cmdlciBzaXplIGlzIGZpbmUuCi0gIEVYUEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252
ZXJ0aWJsZTxmbG9hdCwgZG91YmxlPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKExvc3NsZXNz
QXJpdGhtZXRpY0NvbnZlcnRpYmxlPGZsb2F0LCBsb25nIGRvdWJsZT46OnZhbHVlKSk7Ci0gIEVY
UEVDVF9UUlVFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUsIGxvbmcgZG91
YmxlPjo6dmFsdWUpKTsKLQotICAvLyBTYW1lIHNpemU6IGZpbmUuCi0gIEVYUEVDVF9UUlVFKChM
b3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxmbG9hdCwgZmxvYXQ+Ojp2YWx1ZSkpOwotICBF
WFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1ldGljQ29udmVydGlibGU8ZG91YmxlLCBkb3VibGU+
Ojp2YWx1ZSkpOwotCi0gIC8vIExhcmdlciBzaXplID0+IHNtYWxsZXIgc2l6ZSBpcyBub3QgZmlu
ZS4KLSAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxkb3VibGUs
IGZsb2F0Pjo6dmFsdWUpKTsKLSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygp
Ci0gIGlmIChzaXplb2YoZG91YmxlKSA9PSBzaXplb2YobG9uZyBkb3VibGUpKSB7ICAvLyBOT0xJ
TlQKLSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKLSAgICAvLyBJbiBzb21l
IGltcGxlbWVudGF0aW9ucyAoZS5nLiBNU1ZDKSwgZG91YmxlIGFuZCBsb25nIGRvdWJsZQotICAg
IC8vIGhhdmUgdGhlIHNhbWUgc2l6ZS4KLSAgICBFWFBFQ1RfVFJVRSgoTG9zc2xlc3NBcml0aG1l
dGljQ29udmVydGlibGU8bG9uZyBkb3VibGUsIGRvdWJsZT46OnZhbHVlKSk7Ci0gIH0gZWxzZSB7
Ci0gICAgRVhQRUNUX0ZBTFNFKChMb3NzbGVzc0FyaXRobWV0aWNDb252ZXJ0aWJsZTxsb25nIGRv
dWJsZSwgZG91YmxlPjo6dmFsdWUpKTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGUgVHVwbGVNYXRj
aGVzKCkgdGVtcGxhdGUgZnVuY3Rpb24uCi0KLVRFU1QoVHVwbGVNYXRjaGVzVGVzdCwgV29ya3NG
b3JTaXplMCkgewotICB0dXBsZTw+IG1hdGNoZXJzOwotICB0dXBsZTw+IHZhbHVlczsKLQotICBF
WFBFQ1RfVFJVRShUdXBsZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlcykpOwotfQotCi1URVNUKFR1
cGxlTWF0Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTEpIHsKLSAgdHVwbGU8TWF0Y2hlcjxpbnQ+ID4g
bWF0Y2hlcnMoRXEoMSkpOwotICB0dXBsZTxpbnQ+IHZhbHVlczEoMSksCi0gICAgICB2YWx1ZXMy
KDIpOwotCi0gIEVYUEVDVF9UUlVFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwot
ICBFWFBFQ1RfRkFMU0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci19Ci0KLVRF
U1QoVHVwbGVNYXRjaGVzVGVzdCwgV29ya3NGb3JTaXplMikgewotICB0dXBsZTxNYXRjaGVyPGlu
dD4sIE1hdGNoZXI8Y2hhcj4gPiBtYXRjaGVycyhFcSgxKSwgRXEoJ2EnKSk7Ci0gIHR1cGxlPGlu
dCwgY2hhcj4gdmFsdWVzMSgxLCAnYScpLAotICAgICAgdmFsdWVzMigxLCAnYicpLAotICAgICAg
dmFsdWVzMygyLCAnYScpLAotICAgICAgdmFsdWVzNCgyLCAnYicpOwotCi0gIEVYUEVDVF9UUlVF
KFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwotICBFWFBFQ1RfRkFMU0UoVHVwbGVN
YXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci0gIEVYUEVDVF9GQUxTRShUdXBsZU1hdGNoZXMo
bWF0Y2hlcnMsIHZhbHVlczMpKTsKLSAgRVhQRUNUX0ZBTFNFKFR1cGxlTWF0Y2hlcyhtYXRjaGVy
cywgdmFsdWVzNCkpOwotfQotCi1URVNUKFR1cGxlTWF0Y2hlc1Rlc3QsIFdvcmtzRm9yU2l6ZTUp
IHsKLSAgdHVwbGU8TWF0Y2hlcjxpbnQ+LCBNYXRjaGVyPGNoYXI+LCBNYXRjaGVyPGJvb2w+LCBN
YXRjaGVyPGxvbmc+LCAgLy8gTk9MSU5UCi0gICAgICAgIE1hdGNoZXI8c3RkOjpzdHJpbmc+ID4K
LSAgICAgIG1hdGNoZXJzKEVxKDEpLCBFcSgnYScpLCBFcSh0cnVlKSwgRXEoMkwpLCBFcSgiaGki
KSk7Ci0gIHR1cGxlPGludCwgY2hhciwgYm9vbCwgbG9uZywgc3RkOjpzdHJpbmc+ICAvLyBOT0xJ
TlQKLSAgICAgIHZhbHVlczEoMSwgJ2EnLCB0cnVlLCAyTCwgImhpIiksIHZhbHVlczIoMSwgJ2En
LCB0cnVlLCAyTCwgImhlbGxvIiksCi0gICAgICB2YWx1ZXMzKDIsICdhJywgdHJ1ZSwgMkwsICJo
aSIpOwotCi0gIEVYUEVDVF9UUlVFKFR1cGxlTWF0Y2hlcyhtYXRjaGVycywgdmFsdWVzMSkpOwot
ICBFWFBFQ1RfRkFMU0UoVHVwbGVNYXRjaGVzKG1hdGNoZXJzLCB2YWx1ZXMyKSk7Ci0gIEVYUEVD
VF9GQUxTRShUdXBsZU1hdGNoZXMobWF0Y2hlcnMsIHZhbHVlczMpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBBc3NlcnQodHJ1ZSwgLi4uKSBzdWNjZWVkcy4KLVRFU1QoQXNzZXJ0VGVzdCwgU3VjY2Vl
ZHNPblRydWUpIHsKLSAgQXNzZXJ0KHRydWUsIF9fRklMRV9fLCBfX0xJTkVfXywgIlRoaXMgc2hv
dWxkIHN1Y2NlZWQuIik7Ci0gIEFzc2VydCh0cnVlLCBfX0ZJTEVfXywgX19MSU5FX18pOyAgLy8g
VGhpcyBzaG91bGQgc3VjY2VlZCB0b28uCi19Ci0KLS8vIFRlc3RzIHRoYXQgQXNzZXJ0KGZhbHNl
LCAuLi4pIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUuCi1URVNUKEFzc2VydFRlc3QsIEZhaWxz
RmF0YWxseU9uRmFsc2UpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQXNz
ZXJ0KGZhbHNlLCBfX0ZJTEVfXywgX19MSU5FX18sICJUaGlzIHNob3VsZCBmYWlsLiIpOwotICB9
LCAiIik7Ci0KLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgQXNzZXJ0KGZhbHNl
LCBfX0ZJTEVfXywgX19MSU5FX18pOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRXhw
ZWN0KHRydWUsIC4uLikgc3VjY2VlZHMuCi1URVNUKEV4cGVjdFRlc3QsIFN1Y2NlZWRzT25UcnVl
KSB7Ci0gIEV4cGVjdCh0cnVlLCBfX0ZJTEVfXywgX19MSU5FX18sICJUaGlzIHNob3VsZCBzdWNj
ZWVkLiIpOwotICBFeHBlY3QodHJ1ZSwgX19GSUxFX18sIF9fTElORV9fKTsgIC8vIFRoaXMgc2hv
dWxkIHN1Y2NlZWQgdG9vLgotfQotCi0vLyBUZXN0cyB0aGF0IEV4cGVjdChmYWxzZSwgLi4uKSBn
ZW5lcmF0ZXMgYSBub24tZmF0YWwgZmFpbHVyZS4KLVRFU1QoRXhwZWN0VGVzdCwgRmFpbHNOb25m
YXRhbGx5T25GYWxzZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBFeHBlY3QoZmFsc2UsIF9fRklMRV9fLCBfX0xJTkVfXywgIlRoaXMgc2hvdWxkIGZhaWwu
Iik7Ci0gIH0sICJUaGlzIHNob3VsZCBmYWlsIik7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRXhwZWN0KGZhbHNlLCBfX0ZJTEVfXywgX19MSU5FX18pOwot
ICB9LCAiRXhwZWN0YXRpb24gZmFpbGVkIik7Ci19Ci0KLS8vIFRlc3RzIExvZ0lzVmlzaWJsZSgp
LgotCi1jbGFzcyBMb2dJc1Zpc2libGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0g
cHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgb3JpZ2luYWxfdmVyYm9z
ZV8gPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgeyBHTU9DS19GTEFHKHZlcmJvc2UpID0gb3JpZ2luYWxfdmVyYm9zZV87IH0KLQotICBzdGQ6
OnN0cmluZyBvcmlnaW5hbF92ZXJib3NlXzsKLX07Ci0KLVRFU1RfRihMb2dJc1Zpc2libGVUZXN0
LCBBbHdheXNSZXR1cm5zVHJ1ZUlmVmVyYm9zaXR5SXNJbmZvKSB7Ci0gIEdNT0NLX0ZMQUcodmVy
Ym9zZSkgPSBrSW5mb1ZlcmJvc2l0eTsKLSAgRVhQRUNUX1RSVUUoTG9nSXNWaXNpYmxlKGtJbmZv
KSk7Ci0gIEVYUEVDVF9UUlVFKExvZ0lzVmlzaWJsZShrV2FybmluZykpOwotfQotCi1URVNUX0Yo
TG9nSXNWaXNpYmxlVGVzdCwgQWx3YXlzUmV0dXJuc0ZhbHNlSWZWZXJib3NpdHlJc0Vycm9yKSB7
Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJib3NpdHk7Ci0gIEVYUEVDVF9GQUxT
RShMb2dJc1Zpc2libGUoa0luZm8pKTsKLSAgRVhQRUNUX0ZBTFNFKExvZ0lzVmlzaWJsZShrV2Fy
bmluZykpOwotfQotCi1URVNUX0YoTG9nSXNWaXNpYmxlVGVzdCwgV29ya3NXaGVuVmVyYm9zaXR5
SXNXYXJuaW5nKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrV2FybmluZ1ZlcmJvc2l0eTsK
LSAgRVhQRUNUX0ZBTFNFKExvZ0lzVmlzaWJsZShrSW5mbykpOwotICBFWFBFQ1RfVFJVRShMb2dJ
c1Zpc2libGUoa1dhcm5pbmcpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJ
T04KLQotLy8gVGVzdHMgdGhlIExvZygpIGZ1bmN0aW9uLgotCi0vLyBWZXJpZmllcyB0aGF0IExv
ZygpIGJlaGF2ZXMgY29ycmVjdGx5IGZvciB0aGUgZ2l2ZW4gdmVyYm9zaXR5IGxldmVsCi0vLyBh
bmQgbG9nIHNldmVyaXR5Lgotdm9pZCBUZXN0TG9nV2l0aFNldmVyaXR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB2ZXJib3NpdHksIExvZ1NldmVyaXR5IHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc2hvdWxkX3ByaW50KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG9sZF9mbGFn
ID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IHZlcmJvc2l0
eTsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBMb2coc2V2ZXJpdHksICJUZXN0IGxvZy5cbiIsIDAp
OwotICBpZiAoc2hvdWxkX3ByaW50KSB7Ci0gICAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRv
dXQoKS5jX3N0cigpLAotICAgICAgICAgICAgICAgIENvbnRhaW5zUmVnZXgoCi0gICAgICAgICAg
ICAgICAgICAgIHNldmVyaXR5ID09IGtXYXJuaW5nID8KLSAgICAgICAgICAgICAgICAgICAgIl5c
bkdNT0NLIFdBUk5JTkc6XG5UZXN0IGxvZ1xcLlxuU3RhY2sgdHJhY2U6XG4iIDoKLSAgICAgICAg
ICAgICAgICAgICAgIl5cblRlc3QgbG9nXFwuXG5TdGFjayB0cmFjZTpcbiIpKTsKLSAgfSBlbHNl
IHsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIEdldENhcHR1cmVkU3Rkb3V0KCkuY19zdHIoKSk7Ci0g
IH0KLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IG9sZF9mbGFnOwotfQotCi0vLyBUZXN0cyB0aGF0
IHdoZW4gdGhlIHN0YWNrX2ZyYW1lc190b19za2lwIHBhcmFtZXRlciBpcyBuZWdhdGl2ZSwKLS8v
IExvZygpIGRvZXNuJ3QgaW5jbHVkZSB0aGUgc3RhY2sgdHJhY2UgaW4gdGhlIG91dHB1dC4KLVRF
U1QoTG9nVGVzdCwgTm9TdGFja1RyYWNlV2hlblN0YWNrRnJhbWVzVG9Ta2lwSXNOZWdhdGl2ZSkg
ewotICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsK
LSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtJbmZvVmVyYm9zaXR5OwotICBDYXB0dXJlU3Rkb3V0
KCk7Ci0gIExvZyhrSW5mbywgIlRlc3QgbG9nLlxuIiwgLTEpOwotICBFWFBFQ1RfU1RSRVEoIlxu
VGVzdCBsb2cuXG4iLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwotICBHTU9DS19GTEFH
KHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKLX0KLQotc3RydWN0IE1vY2tTdGFja1RyYWNlR2V0dGVy
IDogdGVzdGluZzo6aW50ZXJuYWw6Ok9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSB7Ci0gIHZp
cnR1YWwgc3RkOjpzdHJpbmcgQ3VycmVudFN0YWNrVHJhY2UoaW50IG1heF9kZXB0aCwgaW50IHNr
aXBfY291bnQpIHsKLSAgICByZXR1cm4gKHRlc3Rpbmc6Ok1lc3NhZ2UoKSA8PCBtYXhfZGVwdGgg
PDwgIjo6IiA8PCBza2lwX2NvdW50IDw8ICJcbiIpCi0gICAgICAgIC5HZXRTdHJpbmcoKTsKLSAg
fQotICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZpbmdHVGVzdCgpIHt9Ci19OwotCi0vLyBUZXN0cyB0
aGF0IGluIG9wdCBtb2RlLCBhIHBvc2l0aXZlIHN0YWNrX2ZyYW1lc190b19za2lwIGFyZ3VtZW50
IGlzCi0vLyB0cmVhdGVkIGFzIDAuCi1URVNUKExvZ1Rlc3QsIE5vU2tpcHBpbmdTdGFja0ZyYW1l
SW5PcHRNb2RlKSB7Ci0gIE1vY2tTdGFja1RyYWNlR2V0dGVyKiBtb2NrX29zX3N0YWNrX3RyYWNl
X2dldHRlciA9IG5ldyBNb2NrU3RhY2tUcmFjZUdldHRlcjsKLSAgR2V0VW5pdFRlc3RJbXBsKCkt
PnNldF9vc19zdGFja190cmFjZV9nZXR0ZXIobW9ja19vc19zdGFja190cmFjZV9nZXR0ZXIpOwot
Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgTG9nKGtXYXJuaW5nLCAiVGVzdCBsb2cuXG4iLCAxMDAp
OwotICBjb25zdCBzdGQ6OnN0cmluZyBsb2cgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotCi0gIHN0
ZDo6c3RyaW5nIGV4cGVjdGVkX3RyYWNlID0KLSAgICAgICh0ZXN0aW5nOjpNZXNzYWdlKCkgPDwg
R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPDwgIjo6IikuR2V0U3RyaW5nKCk7Ci0gIHN0
ZDo6c3RyaW5nIGV4cGVjdGVkX21lc3NhZ2UgPQotICAgICAgIlxuR01PQ0sgV0FSTklORzpcbiIK
LSAgICAgICJUZXN0IGxvZy5cbiIKLSAgICAgICJTdGFjayB0cmFjZTpcbiIgKwotICAgICAgZXhw
ZWN0ZWRfdHJhY2U7Ci0gIEVYUEVDVF9USEFUKGxvZywgSGFzU3Vic3RyKGV4cGVjdGVkX21lc3Nh
Z2UpKTsKLSAgaW50IHNraXBfY291bnQgPSBhdG9pKGxvZy5zdWJzdHIoZXhwZWN0ZWRfbWVzc2Fn
ZS5zaXplKCkpLmNfc3RyKCkpOwotCi0jIGlmIGRlZmluZWQoTkRFQlVHKQotICAvLyBJbiBvcHQg
bW9kZSwgbm8gc3RhY2sgZnJhbWUgc2hvdWxkIGJlIHNraXBwZWQuCi0gIGNvbnN0IGludCBleHBl
Y3RlZF9za2lwX2NvdW50ID0gMDsKLSMgZWxzZQotICAvLyBJbiBkYmcgbW9kZSwgdGhlIHN0YWNr
IGZyYW1lcyBzaG91bGQgYmUgc2tpcHBlZC4KLSAgY29uc3QgaW50IGV4cGVjdGVkX3NraXBfY291
bnQgPSAxMDA7Ci0jIGVuZGlmCi0KLSAgLy8gTm90ZSB0aGF0IGVhY2ggaW5uZXIgaW1wbGVtZW50
YXRpb24gbGF5ZXIgd2lsbCArMSB0aGUgbnVtYmVyIHRvIHJlbW92ZQotICAvLyBpdHNlbGYgZnJv
bSB0aGUgdHJhY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdmFsdWUgaXMgYSBsaXR0bGUgaGlnaGVy
IHRoYW4KLSAgLy8gZXhwZWN0ZWQsIGJ1dCBjbG9zZSBlbm91Z2guCi0gIEVYUEVDVF9USEFUKHNr
aXBfY291bnQsCi0gICAgICAgICAgICAgIEFsbE9mKEdlKGV4cGVjdGVkX3NraXBfY291bnQpLCBM
ZShleHBlY3RlZF9za2lwX2NvdW50ICsgMTApKSk7Ci0KLSAgLy8gUmVzdG9yZXMgdGhlIGRlZmF1
bHQgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyLgotICBHZXRVbml0VGVzdEltcGwoKS0+c2V0X29zX3N0
YWNrX3RyYWNlX2dldHRlcihOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbGwgbG9ncyBhcmUg
cHJpbnRlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUKLS8vIC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlz
ICJpbmZvIi4KLVRFU1QoTG9nVGVzdCwgQWxsTG9nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNJ
bmZvKSB7Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoa0luZm9WZXJib3NpdHksIGtJbmZvLCB0cnVl
KTsKLSAgVGVzdExvZ1dpdGhTZXZlcml0eShrSW5mb1ZlcmJvc2l0eSwga1dhcm5pbmcsIHRydWUp
OwotfQotCi0vLyBUZXN0cyB0aGF0IG9ubHkgd2FybmluZ3MgYXJlIHByaW50ZWQgd2hlbiB0aGUg
dmFsdWUgb2YgdGhlCi0vLyAtLWdtb2NrX3ZlcmJvc2UgZmxhZyBpcyAid2FybmluZyIuCi1URVNU
KExvZ1Rlc3QsIE9ubHlXYXJuaW5nc0FyZVByaW50ZWRXaGVuVmVyYm9zaXR5SXNXYXJuaW5nKSB7
Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoa1dhcm5pbmdWZXJib3NpdHksIGtJbmZvLCBmYWxzZSk7
Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoa1dhcm5pbmdWZXJib3NpdHksIGtXYXJuaW5nLCB0cnVl
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBubyBsb2dzIGFyZSBwcmludGVkIHdoZW4gdGhlIHZhbHVl
IG9mIHRoZQotLy8gLS1nbW9ja192ZXJib3NlIGZsYWcgaXMgImVycm9yIi4KLVRFU1QoTG9nVGVz
dCwgTm9Mb2dzQXJlUHJpbnRlZFdoZW5WZXJib3NpdHlJc0Vycm9yKSB7Ci0gIFRlc3RMb2dXaXRo
U2V2ZXJpdHkoa0Vycm9yVmVyYm9zaXR5LCBrSW5mbywgZmFsc2UpOwotICBUZXN0TG9nV2l0aFNl
dmVyaXR5KGtFcnJvclZlcmJvc2l0eSwga1dhcm5pbmcsIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBvbmx5IHdhcm5pbmdzIGFyZSBwcmludGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZQotLy8g
LS1nbW9ja192ZXJib3NlIGZsYWcgaXMgaW52YWxpZC4KLVRFU1QoTG9nVGVzdCwgT25seVdhcm5p
bmdzQXJlUHJpbnRlZFdoZW5WZXJib3NpdHlJc0ludmFsaWQpIHsKLSAgVGVzdExvZ1dpdGhTZXZl
cml0eSgiaW52YWxpZCIsIGtJbmZvLCBmYWxzZSk7Ci0gIFRlc3RMb2dXaXRoU2V2ZXJpdHkoImlu
dmFsaWQiLCBrV2FybmluZywgdHJ1ZSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVB
TV9SRURJUkVDVElPTgotCi1URVNUKFR5cGVUcmFpdHNUZXN0LCB0cnVlX3R5cGUpIHsKLSAgRVhQ
RUNUX1RSVUUodHJ1ZV90eXBlOjp2YWx1ZSk7Ci19Ci0KLVRFU1QoVHlwZVRyYWl0c1Rlc3QsIGZh
bHNlX3R5cGUpIHsKLSAgRVhQRUNUX0ZBTFNFKGZhbHNlX3R5cGU6OnZhbHVlKTsKLX0KLQotVEVT
VChUeXBlVHJhaXRzVGVzdCwgaXNfcmVmZXJlbmNlKSB7Ci0gIEVYUEVDVF9GQUxTRShpc19yZWZl
cmVuY2U8aW50Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFMU0UoaXNfcmVmZXJlbmNlPGNoYXIqPjo6
dmFsdWUpOwotICBFWFBFQ1RfVFJVRShpc19yZWZlcmVuY2U8Y29uc3QgaW50Jj46OnZhbHVlKTsK
LX0KLQotVEVTVChUeXBlVHJhaXRzVGVzdCwgaXNfcG9pbnRlcikgewotICBFWFBFQ1RfRkFMU0Uo
aXNfcG9pbnRlcjxpbnQ+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9GQUxTRShpc19wb2ludGVyPGNoYXIm
Pjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShpc19wb2ludGVyPGNvbnN0IGludCo+Ojp2YWx1ZSk7
Ci19Ci0KLVRFU1QoVHlwZVRyYWl0c1Rlc3QsIHR5cGVfZXF1YWxzKSB7Ci0gIEVYUEVDVF9GQUxT
RSgodHlwZV9lcXVhbHM8aW50LCBjb25zdCBpbnQ+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0Uo
KHR5cGVfZXF1YWxzPGludCwgaW50Jj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgodHlwZV9l
cXVhbHM8aW50LCBkb3VibGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVhbHM8
Y2hhciwgY2hhcj46OnZhbHVlKSk7Ci19Ci0KLVRFU1QoVHlwZVRyYWl0c1Rlc3QsIHJlbW92ZV9y
ZWZlcmVuY2UpIHsKLSAgRVhQRUNUX1RSVUUoKHR5cGVfZXF1YWxzPGNoYXIsIHJlbW92ZV9yZWZl
cmVuY2U8Y2hhciY+Ojp0eXBlPjo6dmFsdWUpKTsKLSAgRVhQRUNUX1RSVUUoKHR5cGVfZXF1YWxz
PGNvbnN0IGludCwKLSAgICAgICAgICAgICAgIHJlbW92ZV9yZWZlcmVuY2U8Y29uc3QgaW50Jj46
OnR5cGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVhbHM8aW50LCByZW1vdmVf
cmVmZXJlbmNlPGludD46OnR5cGU+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfVFJVRSgodHlwZV9lcXVh
bHM8ZG91YmxlKiwgcmVtb3ZlX3JlZmVyZW5jZTxkb3VibGUqPjo6dHlwZT46OnZhbHVlKSk7Ci19
Ci0KLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFZlcmlmaWVzIHRoYXQg
TG9nKCkgYmVoYXZlcyBjb3JyZWN0bHkgZm9yIHRoZSBnaXZlbiB2ZXJib3NpdHkgbGV2ZWwKLS8v
IGFuZCBsb2cgc2V2ZXJpdHkuCi1zdGQ6OnN0cmluZyBHcmFiT3V0cHV0KHZvaWQoKmxvZ2dlciko
KSwgY29uc3QgY2hhciogdmVyYm9zaXR5KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2Zs
YWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9DS19GTEFHKHZlcmJvc2UpID0gdmVyYm9z
aXR5OwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIGxvZ2dlcigpOwotICBHTU9DS19GTEFHKHZlcmJv
c2UpID0gc2F2ZWRfZmxhZzsKLSAgcmV0dXJuIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci19Ci0KLWNs
YXNzIER1bW15TW9jayB7Ci0gcHVibGljOgotICBNT0NLX01FVEhPRDAoVGVzdE1ldGhvZCwgdm9p
ZCgpKTsKLSAgTU9DS19NRVRIT0QxKFRlc3RNZXRob2RBcmcsIHZvaWQoaW50IGR1bW15KSk7Ci19
OwotCi12b2lkIEV4cGVjdENhbGxMb2dnZXIoKSB7Ci0gIER1bW15TW9jayBtb2NrOwotICBFWFBF
Q1RfQ0FMTChtb2NrLCBUZXN0TWV0aG9kKCkpOwotICBtb2NrLlRlc3RNZXRob2QoKTsKLX07Ci0K
LS8vIFZlcmlmaWVzIHRoYXQgRVhQRUNUX0NBTEwgbG9ncyBpZiB0aGUgLS1nbW9ja192ZXJib3Nl
IGZsYWcgaXMgc2V0IHRvICJpbmZvIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIExvZ3NXaGVuVmVy
Ym9zaXR5SXNJbmZvKSB7Ci0gIEVYUEVDVF9USEFUKHN0ZDo6c3RyaW5nKEdyYWJPdXRwdXQoRXhw
ZWN0Q2FsbExvZ2dlciwga0luZm9WZXJib3NpdHkpKSwKLSAgICAgICAgICAgICAgSGFzU3Vic3Ry
KCJFWFBFQ1RfQ0FMTChtb2NrLCBUZXN0TWV0aG9kKCkpIikpOwotfQotCi0vLyBWZXJpZmllcyB0
aGF0IEVYUEVDVF9DQUxMIGRvZXNuJ3QgbG9nCi0vLyBpZiB0aGUgLS1nbW9ja192ZXJib3NlIGZs
YWcgaXMgc2V0IHRvICJ3YXJuaW5nIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIERvZXNOb3RMb2dX
aGVuVmVyYm9zaXR5SXNXYXJuaW5nKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR3JhYk91dHB1dChF
eHBlY3RDYWxsTG9nZ2VyLCBrV2FybmluZ1ZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLS8vIFZl
cmlmaWVzIHRoYXQgRVhQRUNUX0NBTEwgZG9lc24ndCBsb2cKLS8vIGlmIHRoZSAtLWdtb2NrX3Zl
cmJvc2UgZmxhZyBpcyBzZXQgdG8gImVycm9yIi4KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsICBEb2Vz
Tm90TG9nV2hlblZlcmJvc2l0eUlzRXJyb3IpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHcmFiT3V0
cHV0KEV4cGVjdENhbGxMb2dnZXIsIGtFcnJvclZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLXZv
aWQgT25DYWxsTG9nZ2VyKCkgewotICBEdW1teU1vY2sgbW9jazsKLSAgT05fQ0FMTChtb2NrLCBU
ZXN0TWV0aG9kKCkpOwotfTsKLQotLy8gVmVyaWZpZXMgdGhhdCBPTl9DQUxMIGxvZ3MgaWYgdGhl
IC0tZ21vY2tfdmVyYm9zZSBmbGFnIGlzIHNldCB0byAiaW5mbyIuCi1URVNUKE9uQ2FsbFRlc3Qs
IExvZ3NXaGVuVmVyYm9zaXR5SXNJbmZvKSB7Ci0gIEVYUEVDVF9USEFUKHN0ZDo6c3RyaW5nKEdy
YWJPdXRwdXQoT25DYWxsTG9nZ2VyLCBrSW5mb1ZlcmJvc2l0eSkpLAotICAgICAgICAgICAgICBI
YXNTdWJzdHIoIk9OX0NBTEwobW9jaywgVGVzdE1ldGhvZCgpKSIpKTsKLX0KLQotLy8gVmVyaWZp
ZXMgdGhhdCBPTl9DQUxMIGRvZXNuJ3QgbG9nCi0vLyBpZiB0aGUgLS1nbW9ja192ZXJib3NlIGZs
YWcgaXMgc2V0IHRvICJ3YXJuaW5nIi4KLVRFU1QoT25DYWxsVGVzdCwgRG9lc05vdExvZ1doZW5W
ZXJib3NpdHlJc1dhcm5pbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCIiLCBHcmFiT3V0cHV0KE9uQ2Fs
bExvZ2dlciwga1dhcm5pbmdWZXJib3NpdHkpLmNfc3RyKCkpOwotfQotCi0vLyBWZXJpZmllcyB0
aGF0IE9OX0NBTEwgZG9lc24ndCBsb2cgaWYKLS8vIHRoZSAtLWdtb2NrX3ZlcmJvc2UgZmxhZyBp
cyBzZXQgdG8gImVycm9yIi4KLVRFU1QoT25DYWxsVGVzdCwgRG9lc05vdExvZ1doZW5WZXJib3Np
dHlJc0Vycm9yKSB7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgR3JhYk91dHB1dChPbkNhbGxMb2dnZXIs
IGtFcnJvclZlcmJvc2l0eSkuY19zdHIoKSk7Ci19Ci0KLXZvaWQgT25DYWxsQW55QXJndW1lbnRM
b2dnZXIoKSB7Ci0gIER1bW15TW9jayBtb2NrOwotICBPTl9DQUxMKG1vY2ssIFRlc3RNZXRob2RB
cmcoXykpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IE9OX0NBTEwgcHJpbnRzIHByb3ZpZGVkIF8g
YXJndW1lbnQuCi1URVNUKE9uQ2FsbFRlc3QsIExvZ3NBbnl0aGluZ0FyZ3VtZW50KSB7Ci0gIEVY
UEVDVF9USEFUKHN0ZDo6c3RyaW5nKEdyYWJPdXRwdXQoT25DYWxsQW55QXJndW1lbnRMb2dnZXIs
IGtJbmZvVmVyYm9zaXR5KSksCi0gICAgICAgICAgICAgIEhhc1N1YnN0cigiT05fQ0FMTChtb2Nr
LCBUZXN0TWV0aG9kQXJnKF8pIikpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1f
UkVESVJFQ1RJT04KLQotLy8gVGVzdHMgU3RsQ29udGFpbmVyVmlldy4KLQotVEVTVChTdGxDb250
YWluZXJWaWV3VGVzdCwgV29ya3NGb3JTdGxDb250YWluZXIpIHsKLSAgU3RhdGljQXNzZXJ0VHlw
ZUVxPHN0ZDo6dmVjdG9yPGludD4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PHN0ZDo6dmVjdG9y
PGludD4gPjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGNvbnN0IHN0ZDo6dmVjdG9y
PGRvdWJsZT4mLAotICAgICAgU3RsQ29udGFpbmVyVmlldzxzdGQ6OnZlY3Rvcjxkb3VibGU+ID46
OmNvbnN0X3JlZmVyZW5jZT4oKTsKLQotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNoYXI+IENoYXJz
OwotICBDaGFycyB2MTsKLSAgY29uc3QgQ2hhcnMmIHYyKFN0bENvbnRhaW5lclZpZXc8Q2hhcnM+
OjpDb25zdFJlZmVyZW5jZSh2MSkpOwotICBFWFBFQ1RfRVEoJnYxLCAmdjIpOwotCi0gIHYxLnB1
c2hfYmFjaygnYScpOwotICBDaGFycyB2MyA9IFN0bENvbnRhaW5lclZpZXc8Q2hhcnM+OjpDb3B5
KHYxKTsKLSAgRVhQRUNUX1RIQVQodjMsIEVxKHYzKSk7Ci19Ci0KLVRFU1QoU3RsQ29udGFpbmVy
Vmlld1Rlc3QsIFdvcmtzRm9yU3RhdGljTmF0aXZlQXJyYXkpIHsKLSAgU3RhdGljQXNzZXJ0VHlw
ZUVxPE5hdGl2ZUFycmF5PGludD4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PGludFszXT46OnR5
cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxOYXRpdmVBcnJheTxkb3VibGU+LAotICAgICAg
U3RsQ29udGFpbmVyVmlldzxjb25zdCBkb3VibGVbNF0+Ojp0eXBlPigpOwotICBTdGF0aWNBc3Nl
cnRUeXBlRXE8TmF0aXZlQXJyYXk8Y2hhclszXT4sCi0gICAgICBTdGxDb250YWluZXJWaWV3PGNv
bnN0IGNoYXJbMl1bM10+Ojp0eXBlPigpOwotCi0gIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBO
YXRpdmVBcnJheTxpbnQ+LAotICAgICAgU3RsQ29udGFpbmVyVmlldzxpbnRbMl0+Ojpjb25zdF9y
ZWZlcmVuY2U+KCk7Ci0KLSAgaW50IGExWzNdID0geyAwLCAxLCAyIH07Ci0gIE5hdGl2ZUFycmF5
PGludD4gYTIgPSBTdGxDb250YWluZXJWaWV3PGludFszXT46OkNvbnN0UmVmZXJlbmNlKGExKTsK
LSAgRVhQRUNUX0VRKDNVLCBhMi5zaXplKCkpOwotICBFWFBFQ1RfRVEoYTEsIGEyLmJlZ2luKCkp
OwotCi0gIGNvbnN0IE5hdGl2ZUFycmF5PGludD4gYTMgPSBTdGxDb250YWluZXJWaWV3PGludFsz
XT46OkNvcHkoYTEpOwotICBBU1NFUlRfRVEoM1UsIGEzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgw
LCBhMy5iZWdpbigpWzBdKTsKLSAgRVhQRUNUX0VRKDEsIGEzLmJlZ2luKClbMV0pOwotICBFWFBF
Q1RfRVEoMiwgYTMuYmVnaW4oKVsyXSk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBhMSBhbmQgYTMgYXJl
bid0IGFsaWFzZXMuCi0gIGExWzBdID0gMzsKLSAgRVhQRUNUX0VRKDAsIGEzLmJlZ2luKClbMF0p
OwotfQotCi1URVNUKFN0bENvbnRhaW5lclZpZXdUZXN0LCBXb3Jrc0ZvckR5bmFtaWNOYXRpdmVB
cnJheSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8TmF0aXZlQXJyYXk8aW50PiwKLSAgICAgIFN0
bENvbnRhaW5lclZpZXc8dHVwbGU8Y29uc3QgaW50Kiwgc2l6ZV90PiA+Ojp0eXBlPigpOwotICBT
dGF0aWNBc3NlcnRUeXBlRXE8TmF0aXZlQXJyYXk8ZG91YmxlPiwKLSAgICAgIFN0bENvbnRhaW5l
clZpZXc8dHVwbGU8bGlua2VkX3B0cjxkb3VibGU+LCBpbnQ+ID46OnR5cGU+KCk7Ci0KLSAgU3Rh
dGljQXNzZXJ0VHlwZUVxPGNvbnN0IE5hdGl2ZUFycmF5PGludD4sCi0gICAgICBTdGxDb250YWlu
ZXJWaWV3PHR1cGxlPGNvbnN0IGludCosIGludD4gPjo6Y29uc3RfcmVmZXJlbmNlPigpOwotCi0g
IGludCBhMVszXSA9IHsgMCwgMSwgMiB9OwotICBjb25zdCBpbnQqIGNvbnN0IHAxID0gYTE7Ci0g
IE5hdGl2ZUFycmF5PGludD4gYTIgPSBTdGxDb250YWluZXJWaWV3PHR1cGxlPGNvbnN0IGludCos
IGludD4gPjo6Ci0gICAgICBDb25zdFJlZmVyZW5jZShtYWtlX3R1cGxlKHAxLCAzKSk7Ci0gIEVY
UEVDVF9FUSgzVSwgYTIuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGExLCBhMi5iZWdpbigpKTsKLQot
ICBjb25zdCBOYXRpdmVBcnJheTxpbnQ+IGEzID0gU3RsQ29udGFpbmVyVmlldzx0dXBsZTxpbnQq
LCBzaXplX3Q+ID46OgotICAgICAgQ29weShtYWtlX3R1cGxlKHN0YXRpY19jYXN0PGludCo+KGEx
KSwgMykpOwotICBBU1NFUlRfRVEoM1UsIGEzLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgwLCBhMy5i
ZWdpbigpWzBdKTsKLSAgRVhQRUNUX0VRKDEsIGEzLmJlZ2luKClbMV0pOwotICBFWFBFQ1RfRVEo
MiwgYTMuYmVnaW4oKVsyXSk7Ci0KLSAgLy8gTWFrZXMgc3VyZSBhMSBhbmQgYTMgYXJlbid0IGFs
aWFzZXMuCi0gIGExWzBdID0gMzsKLSAgRVhQRUNUX0VRKDAsIGEzLmJlZ2luKClbMF0pOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UKLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNw
YWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbWF0Y2hlcnNf
dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stbWF0Y2hlcnNfdGVzdC5jYwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVhYjdjODE4ZGFkLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svdGVzdC9nbW9jay1tYXRjaGVyc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAg
LTEsNTY1OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBH
b29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0v
LwotLy8gVGhpcyBmaWxlIHRlc3RzIHNvbWUgY29tbW9ubHkgdXNlZCBhcmd1bWVudCBtYXRjaGVy
cy4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLW1hdGNoZXJzLmgiCi0jaW5jbHVkZSAiZ21vY2sv
Z21vY2stbW9yZS1tYXRjaGVycy5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8
dGltZS5oPgotI2luY2x1ZGUgPGRlcXVlPgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVk
ZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8bGltaXRzPgotI2lu
Y2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxz
c3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUg
PHZlY3Rvcj4KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLSNpZiBHVEVTVF9IQVNfU1REX0ZP
UldBUkRfTElTVF8KLSMgaW5jbHVkZSA8Zm9yd2FyZF9saXN0PiAgLy8gTk9MSU5UCi0jZW5kaWYK
LQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotR1RFU1RfQVBJ
XyBzdHJpbmcgSm9pbkFzVHVwbGUoY29uc3QgU3RyaW5ncyYgZmllbGRzKTsKLX0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotCi1uYW1lc3BhY2UgZ21vY2tfbWF0Y2hlcnNfdGVzdCB7Ci0KLXVzaW5n
IHN0ZDo6Z3JlYXRlcjsKLXVzaW5nIHN0ZDo6bGVzczsKLXVzaW5nIHN0ZDo6bGlzdDsKLXVzaW5n
IHN0ZDo6bWFrZV9wYWlyOwotdXNpbmcgc3RkOjptYXA7Ci11c2luZyBzdGQ6Om11bHRpbWFwOwot
dXNpbmcgc3RkOjptdWx0aXNldDsKLXVzaW5nIHN0ZDo6b3N0cmVhbTsKLXVzaW5nIHN0ZDo6cGFp
cjsKLXVzaW5nIHN0ZDo6c2V0OwotdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07Ci11c2luZyBzdGQ6
OnZlY3RvcjsKLXVzaW5nIHRlc3Rpbmc6OkE7Ci11c2luZyB0ZXN0aW5nOjpBbGxBcmdzOwotdXNp
bmcgdGVzdGluZzo6QWxsT2Y7Ci11c2luZyB0ZXN0aW5nOjpBbjsKLXVzaW5nIHRlc3Rpbmc6OkFu
eU9mOwotdXNpbmcgdGVzdGluZzo6QnlSZWY7Ci11c2luZyB0ZXN0aW5nOjpDb250YWluc1JlZ2V4
OwotdXNpbmcgdGVzdGluZzo6RG91YmxlRXE7Ci11c2luZyB0ZXN0aW5nOjpEb3VibGVOZWFyOwot
dXNpbmcgdGVzdGluZzo6RW5kc1dpdGg7Ci11c2luZyB0ZXN0aW5nOjpFcTsKLXVzaW5nIHRlc3Rp
bmc6OkV4cGxhaW5NYXRjaFJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6OkZpZWxkOwotdXNpbmcgdGVz
dGluZzo6RmxvYXRFcTsKLXVzaW5nIHRlc3Rpbmc6OkZsb2F0TmVhcjsKLXVzaW5nIHRlc3Rpbmc6
OkdlOwotdXNpbmcgdGVzdGluZzo6R3Q7Ci11c2luZyB0ZXN0aW5nOjpIYXNTdWJzdHI7Ci11c2lu
ZyB0ZXN0aW5nOjpJc0VtcHR5OwotdXNpbmcgdGVzdGluZzo6SXNOdWxsOwotdXNpbmcgdGVzdGlu
Zzo6S2V5OwotdXNpbmcgdGVzdGluZzo6TGU7Ci11c2luZyB0ZXN0aW5nOjpMdDsKLXVzaW5nIHRl
c3Rpbmc6Ok1ha2VNYXRjaGVyOwotdXNpbmcgdGVzdGluZzo6TWFrZVBvbHltb3JwaGljTWF0Y2hl
cjsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoUmVzdWx0TGlzdGVuZXI7Ci11c2luZyB0ZXN0aW5nOjpN
YXRjaGVyOwotdXNpbmcgdGVzdGluZzo6TWF0Y2hlckNhc3Q7Ci11c2luZyB0ZXN0aW5nOjpNYXRj
aGVySW50ZXJmYWNlOwotdXNpbmcgdGVzdGluZzo6TWF0Y2hlczsKLXVzaW5nIHRlc3Rpbmc6Ok1h
dGNoZXNSZWdleDsKLXVzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZURvdWJsZUVxOwotdXNpbmcg
dGVzdGluZzo6TmFuU2Vuc2l0aXZlRG91YmxlTmVhcjsKLXVzaW5nIHRlc3Rpbmc6Ok5hblNlbnNp
dGl2ZUZsb2F0RXE7Ci11c2luZyB0ZXN0aW5nOjpOYW5TZW5zaXRpdmVGbG9hdE5lYXI7Ci11c2lu
ZyB0ZXN0aW5nOjpOZTsKLXVzaW5nIHRlc3Rpbmc6Ok5vdDsKLXVzaW5nIHRlc3Rpbmc6Ok5vdE51
bGw7Ci11c2luZyB0ZXN0aW5nOjpQYWlyOwotdXNpbmcgdGVzdGluZzo6UG9pbnRlZTsKLXVzaW5n
IHRlc3Rpbmc6OlBvaW50d2lzZTsKLXVzaW5nIHRlc3Rpbmc6OlBvbHltb3JwaGljTWF0Y2hlcjsK
LXVzaW5nIHRlc3Rpbmc6OlByb3BlcnR5OwotdXNpbmcgdGVzdGluZzo6UmVmOwotdXNpbmcgdGVz
dGluZzo6UmVzdWx0T2Y7Ci11c2luZyB0ZXN0aW5nOjpTaXplSXM7Ci11c2luZyB0ZXN0aW5nOjpT
dGFydHNXaXRoOwotdXNpbmcgdGVzdGluZzo6U3RyQ2FzZUVxOwotdXNpbmcgdGVzdGluZzo6U3Ry
Q2FzZU5lOwotdXNpbmcgdGVzdGluZzo6U3RyRXE7Ci11c2luZyB0ZXN0aW5nOjpTdHJOZTsKLXVz
aW5nIHRlc3Rpbmc6OlN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXI7Ci11c2luZyB0ZXN0aW5nOjpU
cnVseTsKLXVzaW5nIHRlc3Rpbmc6OlR5cGVkRXE7Ci11c2luZyB0ZXN0aW5nOjpVbm9yZGVyZWRQ
b2ludHdpc2U7Ci11c2luZyB0ZXN0aW5nOjpWYWx1ZTsKLXVzaW5nIHRlc3Rpbmc6OldoZW5Tb3J0
ZWQ7Ci11c2luZyB0ZXN0aW5nOjpXaGVuU29ydGVkQnk7Ci11c2luZyB0ZXN0aW5nOjpfOwotdXNp
bmcgdGVzdGluZzo6Z2V0OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkR1bW15TWF0Y2hSZXN1
bHRMaXN0ZW5lcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpFbGVtZW50TWF0Y2hlclBhaXI7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RWxlbWVudE1hdGNoZXJQYWlyczsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjpFeHBsYWluTWF0Y2hGYWlsdXJlVHVwbGVUbzsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjpGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb247Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SXNS
ZWFkYWJsZVR5cGVOYW1lOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkpvaW5Bc1R1cGxlOwot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmxpbmtlZF9wdHI7Ci11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6TWF0Y2hNYXRyaXg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UkU7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6c2NvcGVkX3B0cjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpT
dHJlYW1NYXRjaFJlc3VsdExpc3RlbmVyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlN0cmlu
Z3M7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLXVzaW5nIHRlc3Rpbmc6
OmludGVybmFsOjpzY29wZWRfcHRyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZzsK
LXVzaW5nIHRlc3Rpbmc6Om1ha2VfdHVwbGU7Ci11c2luZyB0ZXN0aW5nOjp0dXBsZTsKLQotLy8g
Rm9yIHRlc3RpbmcgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKS4KLWNsYXNzIEdyZWF0ZXJUaGFuTWF0
Y2hlciA6IHB1YmxpYyBNYXRjaGVySW50ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgR3JlYXRlclRoYW5NYXRjaGVyKGludCByaHMpIDogcmhzXyhyaHMpIHt9Ci0KLSAgdmlydHVh
bCB2b2lkIERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzID4g
IiA8PCByaHNfOwotICB9Ci0KLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihpbnQgbGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoUmVzdWx0TGlzdGVuZXIqIGxp
c3RlbmVyKSBjb25zdCB7Ci0gICAgY29uc3QgaW50IGRpZmYgPSBsaHMgLSByaHNfOwotICAgIGlm
IChkaWZmID4gMCkgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiIDw8IGRpZmYgPDwg
IiBtb3JlIHRoYW4gIiA8PCByaHNfOwotICAgIH0gZWxzZSBpZiAoZGlmZiA9PSAwKSB7Ci0gICAg
ICAqbGlzdGVuZXIgPDwgIndoaWNoIGlzIHRoZSBzYW1lIGFzICIgPDwgcmhzXzsKLSAgICB9IGVs
c2UgewotICAgICAgKmxpc3RlbmVyIDw8ICJ3aGljaCBpcyAiIDw8IC1kaWZmIDw8ICIgbGVzcyB0
aGFuICIgPDwgcmhzXzsKLSAgICB9Ci0KLSAgICByZXR1cm4gbGhzID4gcmhzXzsKLSAgfQotCi0g
cHJpdmF0ZToKLSAgaW50IHJoc187Ci19OwotCi1NYXRjaGVyPGludD4gR3JlYXRlclRoYW4oaW50
IG4pIHsKLSAgcmV0dXJuIE1ha2VNYXRjaGVyKG5ldyBHcmVhdGVyVGhhbk1hdGNoZXIobikpOwot
fQotCi1zdGQ6OnN0cmluZyBPZlR5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIHR5cGVfbmFtZSkgewot
I2lmIEdURVNUX0hBU19SVFRJCi0gIHJldHVybiAiIChvZiB0eXBlICIgKyB0eXBlX25hbWUgKyAi
KSI7Ci0jZWxzZQotICByZXR1cm4gIiI7Ci0jZW5kaWYKLX0KLQotLy8gUmV0dXJucyB0aGUgZGVz
Y3JpcHRpb24gb2YgdGhlIGdpdmVuIG1hdGNoZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0
ZDo6c3RyaW5nIERlc2NyaWJlKGNvbnN0IE1hdGNoZXI8VD4mIG0pIHsKLSAgc3RyaW5nc3RyZWFt
IHNzOwotICBtLkRlc2NyaWJlVG8oJnNzKTsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCi0vLyBS
ZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbmVnYXRpb24gb2YgdGhlIGdpdmVuIG1hdGNo
ZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyaW5nIERlc2NyaWJlTmVnYXRpb24o
Y29uc3QgTWF0Y2hlcjxUPiYgbSkgewotICBzdHJpbmdzdHJlYW0gc3M7Ci0gIG0uRGVzY3JpYmVO
ZWdhdGlvblRvKCZzcyk7Ci0gIHJldHVybiBzcy5zdHIoKTsKLX0KLQotLy8gUmV0dXJucyB0aGUg
cmVhc29uIHdoeSB4IG1hdGNoZXMsIG9yIGRvZXNuJ3QgbWF0Y2gsIG0uCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgTWF0Y2hlclR5cGUsIHR5cGVuYW1lIFZhbHVlPgotc3RkOjpzdHJpbmcgRXhwbGFpbihj
b25zdCBNYXRjaGVyVHlwZSYgbSwgY29uc3QgVmFsdWUmIHgpIHsKLSAgU3RyaW5nTWF0Y2hSZXN1
bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgRXhwbGFpbk1hdGNoUmVzdWx0KG0sIHgsICZsaXN0ZW5l
cik7Ci0gIHJldHVybiBsaXN0ZW5lci5zdHIoKTsKLX0KLQotVEVTVChNYXRjaFJlc3VsdExpc3Rl
bmVyVGVzdCwgU3RyZWFtaW5nV29ya3MpIHsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBs
aXN0ZW5lcjsKLSAgbGlzdGVuZXIgPDwgImhpIiA8PCA1OwotICBFWFBFQ1RfRVEoImhpNSIsIGxp
c3RlbmVyLnN0cigpKTsKLQotICBsaXN0ZW5lci5DbGVhcigpOwotICBFWFBFQ1RfRVEoIiIsIGxp
c3RlbmVyLnN0cigpKTsKLQotICBsaXN0ZW5lciA8PCA0MjsKLSAgRVhQRUNUX0VRKCI0MiIsIGxp
c3RlbmVyLnN0cigpKTsKLQotICAvLyBTdHJlYW1pbmcgc2hvdWxkbid0IGNyYXNoIHdoZW4gdGhl
IHVuZGVybHlpbmcgb3N0cmVhbSBpcyBOVUxMLgotICBEdW1teU1hdGNoUmVzdWx0TGlzdGVuZXIg
ZHVtbXk7Ci0gIGR1bW15IDw8ICJoaSIgPDwgNTsKLX0KLQotVEVTVChNYXRjaFJlc3VsdExpc3Rl
bmVyVGVzdCwgQ2FuQWNjZXNzVW5kZXJseWluZ1N0cmVhbSkgewotICBFWFBFQ1RfVFJVRShEdW1t
eU1hdGNoUmVzdWx0TGlzdGVuZXIoKS5zdHJlYW0oKSA9PSBOVUxMKTsKLSAgRVhQRUNUX1RSVUUo
U3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lcihOVUxMKS5zdHJlYW0oKSA9PSBOVUxMKTsKLQotICBF
WFBFQ1RfRVEoJnN0ZDo6Y291dCwgU3RyZWFtTWF0Y2hSZXN1bHRMaXN0ZW5lcigmc3RkOjpjb3V0
KS5zdHJlYW0oKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXN1bHRMaXN0ZW5lclRlc3QsIElzSW50ZXJl
c3RlZFdvcmtzKSB7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIoKS5J
c0ludGVyZXN0ZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmVhbU1hdGNoUmVzdWx0TGlzdGVuZXIo
JnN0ZDo6Y291dCkuSXNJbnRlcmVzdGVkKCkpOwotCi0gIEVYUEVDVF9GQUxTRShEdW1teU1hdGNo
UmVzdWx0TGlzdGVuZXIoKS5Jc0ludGVyZXN0ZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJlYW1N
YXRjaFJlc3VsdExpc3RlbmVyKE5VTEwpLklzSW50ZXJlc3RlZCgpKTsKLX0KLQotLy8gTWFrZXMg
c3VyZSB0aGF0IHRoZSBNYXRjaGVySW50ZXJmYWNlPFQ+IGludGVyZmFjZSBkb2Vzbid0Ci0vLyBj
aGFuZ2UuCi1jbGFzcyBFdmVuTWF0Y2hlckltcGwgOiBwdWJsaWMgTWF0Y2hlckludGVyZmFjZTxp
bnQ+IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBNYXRjaEFuZEV4cGxhaW4oaW50IHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogLyogbGlz
dGVuZXIgKi8pIGNvbnN0IHsKLSAgICByZXR1cm4geCAlIDIgPT0gMDsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJpcyBh
biBldmVuIG51bWJlciI7Ci0gIH0KLQotICAvLyBXZSBkZWxpYmVyYXRlbHkgZG9uJ3QgZGVmaW5l
IERlc2NyaWJlTmVnYXRpb25UbygpIGFuZAotICAvLyBFeHBsYWluTWF0Y2hSZXN1bHRUbygpIGhl
cmUsIHRvIG1ha2Ugc3VyZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGVzZQotICAvLyB0d28gbWV0aG9k
cyBpcyBvcHRpb25hbC4KLX07Ci0KLS8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgTWF0Y2hlckludGVy
ZmFjZSBBUEkgZG9lc24ndCBjaGFuZ2UuCi1URVNUKE1hdGNoZXJJbnRlcmZhY2VUZXN0LCBDYW5C
ZUltcGxlbWVudGVkVXNpbmdQdWJsaXNoZWRBUEkpIHsKLSAgRXZlbk1hdGNoZXJJbXBsIG07Ci19
Ci0KLS8vIFRlc3RzIGltcGxlbWVudGluZyBhIG1vbm9tb3JwaGljIG1hdGNoZXIgdXNpbmcgTWF0
Y2hBbmRFeHBsYWluKCkuCi0KLWNsYXNzIE5ld0V2ZW5NYXRjaGVySW1wbCA6IHB1YmxpYyBNYXRj
aGVySW50ZXJmYWNlPGludD4gewotIHB1YmxpYzoKLSAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhw
bGFpbihpbnQgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICBj
b25zdCBib29sIG1hdGNoID0geCAlIDIgPT0gMDsKLSAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNh
biBzdHJlYW0gdG8gYSBsaXN0ZW5lciBkaXJlY3RseS4KLSAgICAqbGlzdGVuZXIgPDwgInZhbHVl
ICUgIiA8PCAyOwotICAgIGlmIChsaXN0ZW5lci0+c3RyZWFtKCkgIT0gTlVMTCkgewotICAgICAg
Ly8gVmVyaWZpZXMgdGhhdCB3ZSBjYW4gc3RyZWFtIHRvIGEgbGlzdGVuZXIncyB1bmRlcmx5aW5n
IHN0cmVhbQotICAgICAgLy8gdG9vLgotICAgICAgKmxpc3RlbmVyLT5zdHJlYW0oKSA8PCAiID09
ICIgPDwgKHggJSAyKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1hdGNoOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIERlc2NyaWJlVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAqb3MgPDwgImlzIGFu
IGV2ZW4gbnVtYmVyIjsKLSAgfQotfTsKLQotVEVTVChNYXRjaGVySW50ZXJmYWNlVGVzdCwgQ2Fu
QmVJbXBsZW1lbnRlZFVzaW5nTmV3QVBJKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gTWFrZU1hdGNo
ZXIobmV3IE5ld0V2ZW5NYXRjaGVySW1wbCk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygyKSk7
Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMykpOwotICBFWFBFQ1RfRVEoInZhbHVlICUgMiA9
PSAwIiwgRXhwbGFpbihtLCAyKSk7Ci0gIEVYUEVDVF9FUSgidmFsdWUgJSAyID09IDEiLCBFeHBs
YWluKG0sIDMpKTsKLX0KLQotLy8gVGVzdHMgZGVmYXVsdC1jb25zdHJ1Y3RpbmcgYSBtYXRjaGVy
LgotVEVTVChNYXRjaGVyVGVzdCwgQ2FuQmVEZWZhdWx0Q29uc3RydWN0ZWQpIHsKLSAgTWF0Y2hl
cjxkb3VibGU+IG07Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTWF0Y2hlcjxUPiBjYW4gYmUgY29uc3Ry
dWN0ZWQgZnJvbSBhIE1hdGNoZXJJbnRlcmZhY2U8VD4qLgotVEVTVChNYXRjaGVyVGVzdCwgQ2Fu
QmVDb25zdHJ1Y3RlZEZyb21NYXRjaGVySW50ZXJmYWNlKSB7Ci0gIGNvbnN0IE1hdGNoZXJJbnRl
cmZhY2U8aW50PiogaW1wbCA9IG5ldyBFdmVuTWF0Y2hlckltcGw7Ci0gIE1hdGNoZXI8aW50PiBt
KGltcGwpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoNCkpOwotICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKDUpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB2YWx1ZSBjYW4gYmUgdXNlZCBpbiBwbGFj
ZSBvZiBFcSh2YWx1ZSkuCi1URVNUKE1hdGNoZXJUZXN0LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1
Y3RlZEZyb21WYWx1ZSkgewotICBNYXRjaGVyPGludD4gbTEgPSA1OwotICBFWFBFQ1RfVFJVRSht
MS5NYXRjaGVzKDUpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoNikpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IE5VTEwgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgRXEoTlVMTCkuCi1URVNUKE1h
dGNoZXJUZXN0LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1Y3RlZEZyb21OVUxMKSB7Ci0gIE1hdGNo
ZXI8aW50Kj4gbTEgPSBOVUxMOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKE5VTEwpKTsKLSAg
aW50IG4gPSAwOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygmbikpOwotfQotCi0vLyBUZXN0
cyB0aGF0IG1hdGNoZXJzIGFyZSBjb3B5YWJsZS4KLVRFU1QoTWF0Y2hlclRlc3QsIElzQ29weWFi
bGUpIHsKLSAgLy8gVGVzdHMgdGhlIGNvcHkgY29uc3RydWN0b3IuCi0gIE1hdGNoZXI8Ym9vbD4g
bTEgPSBFcShmYWxzZSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoZmFsc2UpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0xLk1hdGNoZXModHJ1ZSkpOwotCi0gIC8vIFRlc3RzIHRoZSBhc3NpZ25tZW50
IG9wZXJhdG9yLgotICBtMSA9IEVxKHRydWUpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKHRy
dWUpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoZmFsc2UpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBNYXRjaGVyPFQ+OjpEZXNjcmliZVRvKCkgY2FsbHMKLS8vIE1hdGNoZXJJbnRlcmZhY2U8
VD46OkRlc2NyaWJlVG8oKS4KLVRFU1QoTWF0Y2hlclRlc3QsIENhbkRlc2NyaWJlSXRzZWxmKSB7
Ci0gIEVYUEVDVF9FUSgiaXMgYW4gZXZlbiBudW1iZXIiLAotICAgICAgICAgICAgRGVzY3JpYmUo
TWF0Y2hlcjxpbnQ+KG5ldyBFdmVuTWF0Y2hlckltcGwpKSk7Ci19Ci0KLS8vIFRlc3RzIE1hdGNo
ZXI8VD46Ok1hdGNoQW5kRXhwbGFpbigpLgotVEVTVChNYXRjaGVyVGVzdCwgTWF0Y2hBbmRFeHBs
YWluKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gR3JlYXRlclRoYW4oMCk7Ci0gIFN0cmluZ01hdGNo
UmVzdWx0TGlzdGVuZXIgbGlzdGVuZXIxOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoQW5kRXhwbGFp
big0MiwgJmxpc3RlbmVyMSkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGlzIDQyIG1vcmUgdGhhbiAw
IiwgbGlzdGVuZXIxLnN0cigpKTsKLQotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3Rl
bmVyMjsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hBbmRFeHBsYWluKC05LCAmbGlzdGVuZXIyKSk7
Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgOSBsZXNzIHRoYW4gMCIsIGxpc3RlbmVyMi5zdHIoKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBDLXN0cmluZyBsaXRlcmFsIGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byBhCi0vLyBNYXRjaGVyPHN0cmluZz4gb3IgTWF0Y2hlcjxjb25zdCBzdHJp
bmcmPi4KLVRFU1QoU3RyaW5nTWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVjdGVk
RnJvbUNTdHJpbmdMaXRlcmFsKSB7Ci0gIE1hdGNoZXI8c3RyaW5nPiBtMSA9ICJoaSI7Ci0gIEVY
UEVDVF9UUlVFKG0xLk1hdGNoZXMoImhpIikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygi
aGVsbG8iKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBzdHJpbmcmPiBtMiA9ICJoaSI7Ci0gIEVYUEVD
VF9UUlVFKG0yLk1hdGNoZXMoImhpIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygiaGVs
bG8iKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBzdHJpbmcgb2JqZWN0IGNhbiBiZSBpbXBsaWNp
dGx5IGNvbnZlcnRlZCB0byBhCi0vLyBNYXRjaGVyPHN0cmluZz4gb3IgTWF0Y2hlcjxjb25zdCBz
dHJpbmcmPi4KLVRFU1QoU3RyaW5nTWF0Y2hlclRlc3QsIENhbkJlSW1wbGljaXRseUNvbnN0cnVj
dGVkRnJvbVN0cmluZykgewotICBNYXRjaGVyPHN0cmluZz4gbTEgPSBzdHJpbmcoImhpIik7Ci0g
IEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoImhpIikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hl
cygiaGVsbG8iKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBzdHJpbmcmPiBtMiA9IHN0cmluZygiaGki
KTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiaGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJoZWxsbyIpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVFJJTkdfUElFQ0VfCi0vLyBU
ZXN0cyB0aGF0IGEgQy1zdHJpbmcgbGl0ZXJhbCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQg
dG8gYQotLy8gTWF0Y2hlcjxTdHJpbmdQaWVjZT4gb3IgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVj
ZSY+LgotVEVTVChTdHJpbmdQaWVjZU1hdGNoZXJUZXN0LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1
Y3RlZEZyb21DU3RyaW5nTGl0ZXJhbCkgewotICBNYXRjaGVyPFN0cmluZ1BpZWNlPiBtMSA9ICJj
YXRzIjsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiY2F0cyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0xLk1hdGNoZXMoImRvZ3MiKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+IG0y
ID0gImNhdHMiOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJjYXRzIikpOwotICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcygiZG9ncyIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0cmluZyBv
YmplY3QgY2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEKLS8vIE1hdGNoZXI8U3RyaW5n
UGllY2U+IG9yIE1hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPi4KLVRFU1QoU3RyaW5nUGllY2VN
YXRjaGVyVGVzdCwgQ2FuQmVJbXBsaWNpdGx5Q29uc3RydWN0ZWRGcm9tU3RyaW5nKSB7Ci0gIE1h
dGNoZXI8U3RyaW5nUGllY2U+IG0xID0gc3RyaW5nKCJjYXRzIik7Ci0gIEVYUEVDVF9UUlVFKG0x
Lk1hdGNoZXMoImNhdHMiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCJkb2dzIikpOwot
Ci0gIE1hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPiBtMiA9IHN0cmluZygiY2F0cyIpOwotICBF
WFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJjYXRzIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hl
cygiZG9ncyIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIFN0cmluZ1BpZWNlIG9iamVjdCBjYW4g
YmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYQotLy8gTWF0Y2hlcjxTdHJpbmdQaWVjZT4gb3Ig
TWF0Y2hlcjxjb25zdCBTdHJpbmdQaWVjZSY+LgotVEVTVChTdHJpbmdQaWVjZU1hdGNoZXJUZXN0
LCBDYW5CZUltcGxpY2l0bHlDb25zdHJ1Y3RlZEZyb21TdHJpbmdQaWVjZSkgewotICBNYXRjaGVy
PFN0cmluZ1BpZWNlPiBtMSA9IFN0cmluZ1BpZWNlKCJjYXRzIik7Ci0gIEVYUEVDVF9UUlVFKG0x
Lk1hdGNoZXMoImNhdHMiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCJkb2dzIikpOwot
Ci0gIE1hdGNoZXI8Y29uc3QgU3RyaW5nUGllY2UmPiBtMiA9IFN0cmluZ1BpZWNlKCJjYXRzIik7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoImNhdHMiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJkb2dzIikpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXwot
Ci0vLyBUZXN0cyB0aGF0IE1ha2VNYXRjaGVyKCkgY29uc3RydWN0cyBhIE1hdGNoZXI8VD4gZnJv
bSBhCi0vLyBNYXRjaGVySW50ZXJmYWNlKiB3aXRob3V0IHJlcXVpcmluZyB0aGUgdXNlciB0byBl
eHBsaWNpdGx5Ci0vLyB3cml0ZSB0aGUgdHlwZS4KLVRFU1QoTWFrZU1hdGNoZXJUZXN0LCBDb25z
dHJ1Y3RzTWF0Y2hlckZyb21NYXRjaGVySW50ZXJmYWNlKSB7Ci0gIGNvbnN0IE1hdGNoZXJJbnRl
cmZhY2U8aW50PiogZHVtbXlfaW1wbCA9IE5VTEw7Ci0gIE1hdGNoZXI8aW50PiBtID0gTWFrZU1h
dGNoZXIoZHVtbXlfaW1wbCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTWFrZVBvbHltb3JwaGljTWF0
Y2hlcigpIGNhbiBjb25zdHJ1Y3QgYSBwb2x5bW9ycGhpYwotLy8gbWF0Y2hlciBmcm9tIGl0cyBp
bXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgb2xkIEFQSS4KLWNvbnN0IGludCBnX2JhciA9IDE7Ci1j
bGFzcyBSZWZlcmVuY2VzQmFyT3JJc1plcm9JbXBsIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotICBib29sIE1hdGNoQW5kRXhwbGFpbihjb25zdCBUJiB4LAotICAgICAgICAg
ICAgICAgICAgICAgICBNYXRjaFJlc3VsdExpc3RlbmVyKiAvKiBsaXN0ZW5lciAqLykgY29uc3Qg
ewotICAgIGNvbnN0IHZvaWQqIHAgPSAmeDsKLSAgICByZXR1cm4gcCA9PSAmZ19iYXIgfHwgeCA9
PSAwOwotICB9Ci0KLSAgdm9pZCBEZXNjcmliZVRvKG9zdHJlYW0qIG9zKSBjb25zdCB7ICpvcyA8
PCAiZ19iYXIgb3IgemVybyI7IH0KLQotICB2b2lkIERlc2NyaWJlTmVnYXRpb25Ubyhvc3RyZWFt
KiBvcykgY29uc3QgewotICAgICpvcyA8PCAiZG9lc24ndCByZWZlcmVuY2UgZ19iYXIgYW5kIGlz
IG5vdCB6ZXJvIjsKLSAgfQotfTsKLQotLy8gVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGF0IE1h
a2VQb2x5bW9ycGhpY01hdGNoZXIoKSByZXR1cm5zIGEKLS8vIFBvbHltb3JwaGljTWF0Y2hlcjxU
PiB3aGVyZSBUIGlzIHRoZSBhcmd1bWVudCdzIHR5cGUuCi1Qb2x5bW9ycGhpY01hdGNoZXI8UmVm
ZXJlbmNlc0Jhck9ySXNaZXJvSW1wbD4gUmVmZXJlbmNlc0Jhck9ySXNaZXJvKCkgewotICByZXR1
cm4gTWFrZVBvbHltb3JwaGljTWF0Y2hlcihSZWZlcmVuY2VzQmFyT3JJc1plcm9JbXBsKCkpOwot
fQotCi1URVNUKE1ha2VQb2x5bW9ycGhpY01hdGNoZXJUZXN0LCBDb25zdHJ1Y3RzTWF0Y2hlclVz
aW5nT2xkQVBJKSB7Ci0gIC8vIFVzaW5nIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0byBtYXRjaCBh
IHJlZmVyZW5jZSB0eXBlLgotICBNYXRjaGVyPGNvbnN0IGludCY+IG0xID0gUmVmZXJlbmNlc0Jh
ck9ySXNaZXJvKCk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoMCkpOwotICAvLyBWZXJpZmll
cyB0aGF0IHRoZSBpZGVudGl0eSBvZiBhIGJ5LXJlZmVyZW5jZSBhcmd1bWVudCBpcyBwcmVzZXJ2
ZWQuCi0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoZ19iYXIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0x
Lk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfRVEoImdfYmFyIG9yIHplcm8iLCBEZXNjcmliZShtMSkp
OwotCi0gIC8vIFVzaW5nIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB0byBtYXRjaCBhIHZhbHVlIHR5
cGUuCi0gIE1hdGNoZXI8ZG91YmxlPiBtMiA9IFJlZmVyZW5jZXNCYXJPcklzWmVybygpOwotICBF
WFBFQ1RfVFJVRShtMi5NYXRjaGVzKDAuMCkpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygw
LjEpKTsKLSAgRVhQRUNUX0VRKCJnX2JhciBvciB6ZXJvIiwgRGVzY3JpYmUobTIpKTsKLX0KLQot
Ly8gVGVzdHMgaW1wbGVtZW50aW5nIGEgcG9seW1vcnBoaWMgbWF0Y2hlciB1c2luZyBNYXRjaEFu
ZEV4cGxhaW4oKS4KLQotY2xhc3MgUG9seW1vcnBoaWNJc0V2ZW5JbXBsIHsKLSBwdWJsaWM6Ci0g
IHZvaWQgRGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgeyAqb3MgPDwgImlzIGV2ZW4iOyB9
Ci0KLSAgdm9pZCBEZXNjcmliZU5lZ2F0aW9uVG8ob3N0cmVhbSogb3MpIGNvbnN0IHsKLSAgICAq
b3MgPDwgImlzIG9kZCI7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgYm9vbCBN
YXRjaEFuZEV4cGxhaW4oY29uc3QgVCYgeCwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBzdHJlYW0gdG8gdGhlIGxpc3Rl
bmVyIGRpcmVjdGx5LgotICAgICpsaXN0ZW5lciA8PCAiJSAiIDw8IDI7Ci0gICAgaWYgKGxpc3Rl
bmVyLT5zdHJlYW0oKSAhPSBOVUxMKSB7Ci0gICAgICAvLyBWZXJpZmllcyB0aGF0IHdlIGNhbiBz
dHJlYW0gdG8gdGhlIGxpc3RlbmVyJ3MgdW5kZXJseWluZyBzdHJlYW0KLSAgICAgIC8vIHRvby4K
LSAgICAgICpsaXN0ZW5lci0+c3RyZWFtKCkgPDwgIiA9PSAiIDw8ICh4ICUgMik7Ci0gICAgfQot
ICAgIHJldHVybiAoeCAlIDIpID09IDA7Ci0gIH0KLX07Ci0KLVBvbHltb3JwaGljTWF0Y2hlcjxQ
b2x5bW9ycGhpY0lzRXZlbkltcGw+IFBvbHltb3JwaGljSXNFdmVuKCkgewotICByZXR1cm4gTWFr
ZVBvbHltb3JwaGljTWF0Y2hlcihQb2x5bW9ycGhpY0lzRXZlbkltcGwoKSk7Ci19Ci0KLVRFU1Qo
TWFrZVBvbHltb3JwaGljTWF0Y2hlclRlc3QsIENvbnN0cnVjdHNNYXRjaGVyVXNpbmdOZXdBUEkp
IHsKLSAgLy8gVXNpbmcgUG9seW1vcnBoaWNJc0V2ZW4oKSBhcyBhIE1hdGNoZXI8aW50Pi4KLSAg
Y29uc3QgTWF0Y2hlcjxpbnQ+IG0xID0gUG9seW1vcnBoaWNJc0V2ZW4oKTsKLSAgRVhQRUNUX1RS
VUUobTEuTWF0Y2hlcyg0MikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyg0MykpOwotICBF
WFBFQ1RfRVEoImlzIGV2ZW4iLCBEZXNjcmliZShtMSkpOwotCi0gIGNvbnN0IE1hdGNoZXI8aW50
PiBub3RfbTEgPSBOb3QobTEpOwotICBFWFBFQ1RfRVEoImlzIG9kZCIsIERlc2NyaWJlKG5vdF9t
MSkpOwotCi0gIEVYUEVDVF9FUSgiJSAyID09IDAiLCBFeHBsYWluKG0xLCA0MikpOwotCi0gIC8v
IFVzaW5nIFBvbHltb3JwaGljSXNFdmVuKCkgYXMgYSBNYXRjaGVyPGNoYXI+LgotICBjb25zdCBN
YXRjaGVyPGNoYXI+IG0yID0gUG9seW1vcnBoaWNJc0V2ZW4oKTsKLSAgRVhQRUNUX1RSVUUobTIu
TWF0Y2hlcygnXHg0MicpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoJ1x4NDMnKSk7Ci0g
IEVYUEVDVF9FUSgiaXMgZXZlbiIsIERlc2NyaWJlKG0yKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxj
aGFyPiBub3RfbTIgPSBOb3QobTIpOwotICBFWFBFQ1RfRVEoImlzIG9kZCIsIERlc2NyaWJlKG5v
dF9tMikpOwotCi0gIEVYUEVDVF9FUSgiJSAyID09IDAiLCBFeHBsYWluKG0yLCAnXHg0MicpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBw
b2x5bW9ycGhpYyBtYXRjaGVyLgotVEVTVChNYXRjaGVyQ2FzdFRlc3QsIEZyb21Qb2x5bW9ycGhp
Y01hdGNoZXIpIHsKLSAgTWF0Y2hlcjxpbnQ+IG0gPSBNYXRjaGVyQ2FzdDxpbnQ+KEVxKDUpKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDUpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyg2
KSk7Ci19Ci0KLS8vIEZvciB0ZXN0aW5nIGNhc3RpbmcgbWF0Y2hlcnMgYmV0d2VlbiBjb21wYXRp
YmxlIHR5cGVzLgotY2xhc3MgSW50VmFsdWUgewotIHB1YmxpYzoKLSAgLy8gQW4gaW50IGNhbiBi
ZSBzdGF0aWNhbGx5IChhbHRob3VnaCBub3QgaW1wbGljaXRseSkgY2FzdCB0byBhCi0gIC8vIElu
dFZhbHVlLgotICBleHBsaWNpdCBJbnRWYWx1ZShpbnQgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1
ZSkge30KLQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLSBwcml2YXRl
OgotICBpbnQgdmFsdWVfOwotfTsKLQotLy8gRm9yIHRlc3RpbmcgY2FzdGluZyBtYXRjaGVycyBi
ZXR3ZWVuIGNvbXBhdGlibGUgdHlwZXMuCi1ib29sIElzUG9zaXRpdmVJbnRWYWx1ZShjb25zdCBJ
bnRWYWx1ZSYgZm9vKSB7Ci0gIHJldHVybiBmb28udmFsdWUoKSA+IDA7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgTWF0Y2hlckNhc3Q8VD4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxVPiB3aGVy
ZSBUCi0vLyBjYW4gYmUgc3RhdGljYWxseSBjb252ZXJ0ZWQgdG8gVS4KLVRFU1QoTWF0Y2hlckNh
c3RUZXN0LCBGcm9tQ29tcGF0aWJsZVR5cGUpIHsKLSAgTWF0Y2hlcjxkb3VibGU+IG0xID0gRXEo
Mi4wKTsKLSAgTWF0Y2hlcjxpbnQ+IG0yID0gTWF0Y2hlckNhc3Q8aW50PihtMSk7Ci0gIEVYUEVD
VF9UUlVFKG0yLk1hdGNoZXMoMikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygzKSk7Ci0K
LSAgTWF0Y2hlcjxJbnRWYWx1ZT4gbTMgPSBUcnVseShJc1Bvc2l0aXZlSW50VmFsdWUpOwotICBN
YXRjaGVyPGludD4gbTQgPSBNYXRjaGVyQ2FzdDxpbnQ+KG0zKTsKLSAgLy8gSW4gdGhlIGZvbGxv
d2luZywgdGhlIGFyZ3VtZW50cyAxIGFuZCAwIGFyZSBzdGF0aWNhbGx5IGNvbnZlcnRlZAotICAv
LyB0byBJbnRWYWx1ZSBvYmplY3RzLCBhbmQgdGhlbiB0ZXN0ZWQgYnkgdGhlIElzUG9zaXRpdmVJ
bnRWYWx1ZSgpCi0gIC8vIHByZWRpY2F0ZS4KLSAgRVhQRUNUX1RSVUUobTQuTWF0Y2hlcygxKSk7
Ci0gIEVYUEVDVF9GQUxTRShtNC5NYXRjaGVzKDApKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBNYXRj
aGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPGNvbnN0IFQmPi4KLVRFU1Qo
TWF0Y2hlckNhc3RUZXN0LCBGcm9tQ29uc3RSZWZlcmVuY2VUb05vblJlZmVyZW5jZSkgewotICBN
YXRjaGVyPGNvbnN0IGludCY+IG0xID0gRXEoMCk7Ci0gIE1hdGNoZXI8aW50PiBtMiA9IE1hdGNo
ZXJDYXN0PGludD4obTEpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDApKTsKLSAgRVhQRUNU
X0ZBTFNFKG0yLk1hdGNoZXMoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PFQ+
KG0pIHdvcmtzIHdoZW4gbSBpcyBhIE1hdGNoZXI8VCY+LgotVEVTVChNYXRjaGVyQ2FzdFRlc3Qs
IEZyb21SZWZlcmVuY2VUb05vblJlZmVyZW5jZSkgewotICBNYXRjaGVyPGludCY+IG0xID0gRXEo
MCk7Ci0gIE1hdGNoZXI8aW50PiBtMiA9IE1hdGNoZXJDYXN0PGludD4obTEpOwotICBFWFBFQ1Rf
VFJVRShtMi5NYXRjaGVzKDApKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoMSkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PGNvbnN0IFQmPihtKSB3b3JrcyB3aGVuIG0gaXMg
YSBNYXRjaGVyPFQ+LgotVEVTVChNYXRjaGVyQ2FzdFRlc3QsIEZyb21Ob25SZWZlcmVuY2VUb0Nv
bnN0UmVmZXJlbmNlKSB7Ci0gIE1hdGNoZXI8aW50PiBtMSA9IEVxKDApOwotICBNYXRjaGVyPGNv
bnN0IGludCY+IG0yID0gTWF0Y2hlckNhc3Q8Y29uc3QgaW50Jj4obTEpOwotICBFWFBFQ1RfVFJV
RShtMi5NYXRjaGVzKDApKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoMSkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IE1hdGNoZXJDYXN0PFQmPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVy
PFQ+LgotVEVTVChNYXRjaGVyQ2FzdFRlc3QsIEZyb21Ob25SZWZlcmVuY2VUb1JlZmVyZW5jZSkg
ewotICBNYXRjaGVyPGludD4gbTEgPSBFcSgwKTsKLSAgTWF0Y2hlcjxpbnQmPiBtMiA9IE1hdGNo
ZXJDYXN0PGludCY+KG0xKTsKLSAgaW50IG4gPSAwOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVz
KG4pKTsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKG4pKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBNYXRjaGVyQ2FzdDxUPihtKSB3b3JrcyB3aGVuIG0gaXMgYSBNYXRjaGVyPFQ+
LgotVEVTVChNYXRjaGVyQ2FzdFRlc3QsIEZyb21TYW1lVHlwZSkgewotICBNYXRjaGVyPGludD4g
bTEgPSBFcSgwKTsKLSAgTWF0Y2hlcjxpbnQ+IG0yID0gTWF0Y2hlckNhc3Q8aW50PihtMSk7Ci0g
IEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygx
KSk7Ci19Ci0KLS8vIEltcGxpY2l0bHkgY29udmVydGlibGUgZnJvbSBhbnkgdHlwZS4KLXN0cnVj
dCBDb252ZXJ0aWJsZUZyb21BbnkgewotICBDb252ZXJ0aWJsZUZyb21BbnkoaW50IGFfdmFsdWUp
IDogdmFsdWUoYV92YWx1ZSkge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGV4cGxpY2l0
IENvbnZlcnRpYmxlRnJvbUFueShjb25zdCBUJiAvKmFfdmFsdWUqLykgOiB2YWx1ZSgtMSkgewot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIkNvbnZlcnNpb24gY29uc3RydWN0b3IgY2FsbGVkIjsKLSAg
fQotICBpbnQgdmFsdWU7Ci19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udmVydGlibGVG
cm9tQW55JiBhLCBjb25zdCBDb252ZXJ0aWJsZUZyb21BbnkmIGIpIHsKLSAgcmV0dXJuIGEudmFs
dWUgPT0gYi52YWx1ZTsKLX0KLQotb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29u
c3QgQ29udmVydGlibGVGcm9tQW55JiBhKSB7Ci0gIHJldHVybiBvcyA8PCBhLnZhbHVlOwotfQot
Ci1URVNUKE1hdGNoZXJDYXN0VGVzdCwgQ29udmVyc2lvbkNvbnN0cnVjdG9ySXNVc2VkKSB7Ci0g
IE1hdGNoZXI8Q29udmVydGlibGVGcm9tQW55PiBtID0gTWF0Y2hlckNhc3Q8Q29udmVydGlibGVG
cm9tQW55PigxKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKENvbnZlcnRpYmxlRnJvbUFueSgx
KSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKENvbnZlcnRpYmxlRnJvbUFueSgyKSkpOwot
fQotCi1URVNUKE1hdGNoZXJDYXN0VGVzdCwgRnJvbUNvbnZlcnRpYmxlRnJvbUFueSkgewotICBN
YXRjaGVyPENvbnZlcnRpYmxlRnJvbUFueT4gbSA9Ci0gICAgICBNYXRjaGVyQ2FzdDxDb252ZXJ0
aWJsZUZyb21Bbnk+KEVxKENvbnZlcnRpYmxlRnJvbUFueSgxKSkpOwotICBFWFBFQ1RfVFJVRSht
Lk1hdGNoZXMoQ29udmVydGlibGVGcm9tQW55KDEpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoQ29udmVydGlibGVGcm9tQW55KDIpKSk7Ci19Ci0KLXN0cnVjdCBJbnRSZWZlcmVuY2VXcmFw
cGVyIHsKLSAgSW50UmVmZXJlbmNlV3JhcHBlcihjb25zdCBpbnQmIGFfdmFsdWUpIDogdmFsdWUo
JmFfdmFsdWUpIHt9Ci0gIGNvbnN0IGludCogdmFsdWU7Ci19OwotCi1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgSW50UmVmZXJlbmNlV3JhcHBlciYgYSwgY29uc3QgSW50UmVmZXJlbmNlV3JhcHBlciYg
YikgewotICByZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlOwotfQotCi1URVNUKE1hdGNoZXJDYXN0
VGVzdCwgVmFsdWVJc05vdENvcGllZCkgewotICBpbnQgbiA9IDQyOwotICBNYXRjaGVyPEludFJl
ZmVyZW5jZVdyYXBwZXI+IG0gPSBNYXRjaGVyQ2FzdDxJbnRSZWZlcmVuY2VXcmFwcGVyPihuKTsK
LSAgLy8gVmVyaWZ5IHRoYXQgdGhlIG1hdGNoZXIgaG9sZHMgYSByZWZlcmVuY2UgdG8gbiwgbm90
IHRvIGl0cyB0ZW1wb3JhcnkgY29weS4KLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG4pKTsKLX0K
LQotY2xhc3MgQmFzZSB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5CYXNlKCkge30KLSAgQmFzZSgp
IHt9Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhCYXNlKTsK
LX07Ci0KLWNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZSB7Ci0gcHVibGljOgotICBEZXJpdmVk
KCkgOiBCYXNlKCkge30KLSAgaW50IGk7Ci19OwotCi1jbGFzcyBPdGhlckRlcml2ZWQgOiBwdWJs
aWMgQmFzZSB7fTsKLQotLy8gVGVzdHMgdGhhdCBTYWZlTWF0Y2hlckNhc3Q8VD4obSkgd29ya3Mg
d2hlbiBtIGlzIGEgcG9seW1vcnBoaWMgbWF0Y2hlci4KLVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVz
dCwgRnJvbVBvbHltb3JwaGljTWF0Y2hlcikgewotICBNYXRjaGVyPGNoYXI+IG0yID0gU2FmZU1h
dGNoZXJDYXN0PGNoYXI+KEVxKDMyKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoJyAnKSk7
Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCdcbicpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBT
YWZlTWF0Y2hlckNhc3Q8VD4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxVPiB3aGVyZQot
Ly8gVCBhbmQgVSBhcmUgYXJpdGhtZXRpYyB0eXBlcyBhbmQgVCBjYW4gYmUgbG9zc2xlc3NseSBj
b252ZXJ0ZWQgdG8KLS8vIFUuCi1URVNUKFNhZmVNYXRjaGVyQ2FzdFRlc3QsIEZyb21Mb3NzbGVz
c2x5Q29udmVydGlibGVBcml0aG1ldGljVHlwZSkgewotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBE
b3VibGVFcSgxLjApOwotICBNYXRjaGVyPGZsb2F0PiBtMiA9IFNhZmVNYXRjaGVyQ2FzdDxmbG9h
dD4obTEpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDEuMGYpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0yLk1hdGNoZXMoMi4wZikpOwotCi0gIE1hdGNoZXI8Y2hhcj4gbTMgPSBTYWZlTWF0Y2hlckNh
c3Q8Y2hhcj4oVHlwZWRFcTxpbnQ+KCdhJykpOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKCdh
JykpOwotICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcygnYicpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBTYWZlTWF0Y2hlckNhc3Q8VD4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxVPiB3aGVy
ZSBUIGFuZCBVCi0vLyBhcmUgcG9pbnRlcnMgb3IgcmVmZXJlbmNlcyB0byBhIGRlcml2ZWQgYW5k
IGEgYmFzZSBjbGFzcywgY29ycmVzcG9uZGluZ2x5LgotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0
LCBGcm9tQmFzZUNsYXNzKSB7Ci0gIERlcml2ZWQgZCwgZDI7Ci0gIE1hdGNoZXI8QmFzZSo+IG0x
ID0gRXEoJmQpOwotICBNYXRjaGVyPERlcml2ZWQqPiBtMiA9IFNhZmVNYXRjaGVyQ2FzdDxEZXJp
dmVkKj4obTEpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCZkKSk7Ci0gIEVYUEVDVF9GQUxT
RShtMi5NYXRjaGVzKCZkMikpOwotCi0gIE1hdGNoZXI8QmFzZSY+IG0zID0gUmVmKGQpOwotICBN
YXRjaGVyPERlcml2ZWQmPiBtNCA9IFNhZmVNYXRjaGVyQ2FzdDxEZXJpdmVkJj4obTMpOwotICBF
WFBFQ1RfVFJVRShtNC5NYXRjaGVzKGQpKTsKLSAgRVhQRUNUX0ZBTFNFKG00Lk1hdGNoZXMoZDIp
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTYWZlTWF0Y2hlckNhc3Q8VCY+KG0pIHdvcmtzIHdoZW4g
bSBpcyBhIE1hdGNoZXI8Y29uc3QgVCY+LgotVEVTVChTYWZlTWF0Y2hlckNhc3RUZXN0LCBGcm9t
Q29uc3RSZWZlcmVuY2VUb1JlZmVyZW5jZSkgewotICBpbnQgbiA9IDA7Ci0gIE1hdGNoZXI8Y29u
c3QgaW50Jj4gbTEgPSBSZWYobik7Ci0gIE1hdGNoZXI8aW50Jj4gbTIgPSBTYWZlTWF0Y2hlckNh
c3Q8aW50Jj4obTEpOwotICBpbnQgbjEgPSAwOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKG4p
KTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMobjEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBN
YXRjaGVyQ2FzdDxjb25zdCBUJj4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxUPi4KLVRF
U1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJlZmVyZW5jZVRvQ29uc3RSZWZlcmVuY2Up
IHsKLSAgTWF0Y2hlcjxpbnQ+IG0xID0gRXEoMCk7Ci0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbTIg
PSBTYWZlTWF0Y2hlckNhc3Q8Y29uc3QgaW50Jj4obTEpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRj
aGVzKDApKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoMSkpOwotfQotCi0vLyBUZXN0cyB0
aGF0IFNhZmVNYXRjaGVyQ2FzdDxUJj4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0Y2hlcjxUPi4K
LVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgRnJvbU5vblJlZmVyZW5jZVRvUmVmZXJlbmNlKSB7
Ci0gIE1hdGNoZXI8aW50PiBtMSA9IEVxKDApOwotICBNYXRjaGVyPGludCY+IG0yID0gU2FmZU1h
dGNoZXJDYXN0PGludCY+KG0xKTsKLSAgaW50IG4gPSAwOwotICBFWFBFQ1RfVFJVRShtMi5NYXRj
aGVzKG4pKTsKLSAgbiA9IDE7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKG4pKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBTYWZlTWF0Y2hlckNhc3Q8VD4obSkgd29ya3Mgd2hlbiBtIGlzIGEgTWF0
Y2hlcjxUPi4KLVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgRnJvbVNhbWVUeXBlKSB7Ci0gIE1h
dGNoZXI8aW50PiBtMSA9IEVxKDApOwotICBNYXRjaGVyPGludD4gbTIgPSBTYWZlTWF0Y2hlckNh
c3Q8aW50PihtMSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoMCkpOwotICBFWFBFQ1RfRkFM
U0UobTIuTWF0Y2hlcygxKSk7Ci19Ci0KLVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgQ29udmVy
c2lvbkNvbnN0cnVjdG9ySXNVc2VkKSB7Ci0gIE1hdGNoZXI8Q29udmVydGlibGVGcm9tQW55PiBt
ID0gU2FmZU1hdGNoZXJDYXN0PENvbnZlcnRpYmxlRnJvbUFueT4oMSk7Ci0gIEVYUEVDVF9UUlVF
KG0uTWF0Y2hlcyhDb252ZXJ0aWJsZUZyb21BbnkoMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcyhDb252ZXJ0aWJsZUZyb21BbnkoMikpKTsKLX0KLQotVEVTVChTYWZlTWF0Y2hlckNhc3RU
ZXN0LCBGcm9tQ29udmVydGlibGVGcm9tQW55KSB7Ci0gIE1hdGNoZXI8Q29udmVydGlibGVGcm9t
QW55PiBtID0KLSAgICAgIFNhZmVNYXRjaGVyQ2FzdDxDb252ZXJ0aWJsZUZyb21Bbnk+KEVxKENv
bnZlcnRpYmxlRnJvbUFueSgxKSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoQ29udmVydGli
bGVGcm9tQW55KDEpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoQ29udmVydGlibGVGcm9t
QW55KDIpKSk7Ci19Ci0KLVRFU1QoU2FmZU1hdGNoZXJDYXN0VGVzdCwgVmFsdWVJc05vdENvcGll
ZCkgewotICBpbnQgbiA9IDQyOwotICBNYXRjaGVyPEludFJlZmVyZW5jZVdyYXBwZXI+IG0gPSBT
YWZlTWF0Y2hlckNhc3Q8SW50UmVmZXJlbmNlV3JhcHBlcj4obik7Ci0gIC8vIFZlcmlmeSB0aGF0
IHRoZSBtYXRjaGVyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIG4sIG5vdCB0byBpdHMgdGVtcG9yYXJ5
IGNvcHkuCi0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuKSk7Ci19Ci0KLVRFU1QoRXhwZWN0VGhh
dCwgVGFrZXNMaXRlcmFscykgewotICBFWFBFQ1RfVEhBVCgxLCAxKTsKLSAgRVhQRUNUX1RIQVQo
MS4wLCAxLjApOwotICBFWFBFQ1RfVEhBVChzdHJpbmcoKSwgIiIpOwotfQotCi1URVNUKEV4cGVj
dFRoYXQsIFRha2VzRnVuY3Rpb25zKSB7Ci0gIHN0cnVjdCBIZWxwZXIgewotICAgIHN0YXRpYyB2
b2lkIEZ1bmMoKSB7fQotICB9OwotICB2b2lkICgqZnVuYykoKSA9IEhlbHBlcjo6RnVuYzsKLSAg
RVhQRUNUX1RIQVQoZnVuYywgSGVscGVyOjpGdW5jKTsKLSAgRVhQRUNUX1RIQVQoZnVuYywgJkhl
bHBlcjo6RnVuYyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQTxUPigpIG1hdGNoZXMgYW55IHZhbHVl
IG9mIHR5cGUgVC4KLVRFU1QoQVRlc3QsIE1hdGNoZXNBbnlWYWx1ZSkgewotICAvLyBUZXN0cyBh
IG1hdGNoZXIgZm9yIGEgdmFsdWUgdHlwZS4KLSAgTWF0Y2hlcjxkb3VibGU+IG0xID0gQTxkb3Vi
bGU+KCk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoOTEuNDMpKTsKLSAgRVhQRUNUX1RSVUUo
bTEuTWF0Y2hlcygtMTUuMzIpKTsKLQotICAvLyBUZXN0cyBhIG1hdGNoZXIgZm9yIGEgcmVmZXJl
bmNlIHR5cGUuCi0gIGludCBhID0gMjsKLSAgaW50IGIgPSAtNjsKLSAgTWF0Y2hlcjxpbnQmPiBt
MiA9IEE8aW50Jj4oKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhhKSk7Ci0gIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoYikpOwotfQotCi1URVNUKEFUZXN0LCBXb3Jrc0ZvckRlcml2ZWRDbGFz
cykgewotICBCYXNlIGJhc2U7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgRVhQRUNUX1RIQVQoJmJh
c2UsIEE8QmFzZSo+KCkpOwotICAvLyBUaGlzIHNob3VsZG4ndCBjb21waWxlOiBFWFBFQ1RfVEhB
VCgmYmFzZSwgQTxEZXJpdmVkKj4oKSk7Ci0gIEVYUEVDVF9USEFUKCZkZXJpdmVkLCBBPEJhc2Uq
PigpKTsKLSAgRVhQRUNUX1RIQVQoJmRlcml2ZWQsIEE8RGVyaXZlZCo+KCkpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IEE8VD4oKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChBVGVzdCwg
Q2FuRGVzY3JpYmVTZWxmKSB7Ci0gIEVYUEVDVF9FUSgiaXMgYW55dGhpbmciLCBEZXNjcmliZShB
PGJvb2w+KCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBbjxUPigpIG1hdGNoZXMgYW55IHZhbHVl
IG9mIHR5cGUgVC4KLVRFU1QoQW5UZXN0LCBNYXRjaGVzQW55VmFsdWUpIHsKLSAgLy8gVGVzdHMg
YSBtYXRjaGVyIGZvciBhIHZhbHVlIHR5cGUuCi0gIE1hdGNoZXI8aW50PiBtMSA9IEFuPGludD4o
KTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyg5MTQzKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1h
dGNoZXMoLTE1MzIpKTsKLQotICAvLyBUZXN0cyBhIG1hdGNoZXIgZm9yIGEgcmVmZXJlbmNlIHR5
cGUuCi0gIGludCBhID0gMjsKLSAgaW50IGIgPSAtNjsKLSAgTWF0Y2hlcjxpbnQmPiBtMiA9IEFu
PGludCY+KCk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoYSkpOwotICBFWFBFQ1RfVFJVRSht
Mi5NYXRjaGVzKGIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBbjxUPigpIGRlc2NyaWJlcyBpdHNl
bGYgcHJvcGVybHkuCi1URVNUKEFuVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIEVYUEVDVF9F
USgiaXMgYW55dGhpbmciLCBEZXNjcmliZShBbjxpbnQ+KCkpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBfIGNhbiBiZSB1c2VkIGFzIGEgbWF0Y2hlciBmb3IgYW55IHR5cGUgYW5kIG1hdGNoZXMgYW55
Ci0vLyB2YWx1ZSBvZiB0aGF0IHR5cGUuCi1URVNUKFVuZGVyc2NvcmVUZXN0LCBNYXRjaGVzQW55
VmFsdWUpIHsKLSAgLy8gVXNlcyBfIGFzIGEgbWF0Y2hlciBmb3IgYSB2YWx1ZSB0eXBlLgotICBN
YXRjaGVyPGludD4gbTEgPSBfOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDEyMykpOwotICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKC0yNDIpKTsKLQotICAvLyBVc2VzIF8gYXMgYSBtYXRjaGVy
IGZvciBhIHJlZmVyZW5jZSB0eXBlLgotICBib29sIGEgPSBmYWxzZTsKLSAgY29uc3QgYm9vbCBi
ID0gdHJ1ZTsKLSAgTWF0Y2hlcjxjb25zdCBib29sJj4gbTIgPSBfOwotICBFWFBFQ1RfVFJVRSht
Mi5NYXRjaGVzKGEpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhiKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgXyBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChVbmRlcnNjb3JlVGVz
dCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gXzsKLSAgRVhQRUNUX0VR
KCJpcyBhbnl0aGluZyIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFcSh4KSBt
YXRjaGVzIGFueSB2YWx1ZSBlcXVhbCB0byB4LgotVEVTVChFcVRlc3QsIE1hdGNoZXNFcXVhbFZh
bHVlKSB7Ci0gIC8vIDIgQy1zdHJpbmdzIHdpdGggc2FtZSBjb250ZW50IGJ1dCBkaWZmZXJlbnQg
YWRkcmVzc2VzLgotICBjb25zdCBjaGFyIGExW10gPSAiaGkiOwotICBjb25zdCBjaGFyIGEyW10g
PSAiaGkiOwotCi0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0xID0gRXEoYTEpOwotICBFWFBFQ1Rf
VFJVRShtMS5NYXRjaGVzKGExKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKGEyKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRXEodikgZGVzY3JpYmVzIGl0c2VsZiBwcm9wZXJseS4KLQotY2xh
c3MgVW5wcmludGFibGUgewotIHB1YmxpYzoKLSAgVW5wcmludGFibGUoKSA6IGNfKCdhJykge30K
LQotIHByaXZhdGU6Ci0gIGNoYXIgY187Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFVucHJpbnRhYmxlJiAvKiBsaHMgKi8sIAotICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBVbnByaW50YWJsZSYgLyogcmhzICovKSB7IAotICAgIHJldHVybiB0cnVlOyAKLX0KLQotVEVT
VChFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPFVucHJpbnRhYmxlPiBtID0g
RXEoVW5wcmludGFibGUoKSk7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gMS1ieXRlIG9iamVj
dCA8NjE+IiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVxKHYpIGNhbiBiZSB1
c2VkIHRvIG1hdGNoIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMKLS8vIGNvbXBhcmluZyB3aXRoIHR5
cGUgVCwgd2hlcmUgVCBpcyB2J3MgdHlwZS4KLVRFU1QoRXFUZXN0LCBJc1BvbHltb3JwaGljKSB7
Ci0gIE1hdGNoZXI8aW50PiBtMSA9IEVxKDEpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKDEp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoMikpOwotCi0gIE1hdGNoZXI8Y2hhcj4gbTIg
PSBFcSgxKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygnXDEnKSk7Ci0gIEVYUEVDVF9GQUxT
RShtMi5NYXRjaGVzKCdhJykpOwotfQotCi0vLyBUZXN0cyB0aGF0IFR5cGVkRXE8VD4odikgbWF0
Y2hlcyB2YWx1ZXMgb2YgdHlwZSBUIHRoYXQncyBlcXVhbCB0byB2LgotVEVTVChUeXBlZEVxVGVz
dCwgQ2hlY2tzRXF1YWxpdHlGb3JHaXZlblR5cGUpIHsKLSAgTWF0Y2hlcjxjaGFyPiBtMSA9IFR5
cGVkRXE8Y2hhcj4oJ2EnKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygnYScpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0xLk1hdGNoZXMoJ2InKSk7Ci0KLSAgTWF0Y2hlcjxpbnQ+IG0yID0gVHlwZWRF
cTxpbnQ+KDYpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDYpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0yLk1hdGNoZXMoNykpOwotfQotCi0vLyBUZXN0cyB0aGF0IFR5cGVkRXEodikgZGVzY3JpYmVz
IGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoVHlwZWRFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewot
ICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIDIiLCBEZXNjcmliZShUeXBlZEVxPGludD4oMikpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBUeXBlZEVxPFQ+KHYpIGhhcyB0eXBlIE1hdGNoZXI8VD4uCi0K
LS8vIFR5cGU8VD46OklzVHlwZU9mKHYpIGNvbXBpbGVzIGlmZiB0aGUgdHlwZSBvZiB2YWx1ZSB2
IGlzIFQsIHdoZXJlIFQKLS8vIGlzIGEgImJhcmUiIHR5cGUgKGkuZS4gbm90IGluIHRoZSBmb3Jt
IG9mIGNvbnN0IFUgb3IgVSYpLiAgSWYgdidzCi0vLyB0eXBlIGlzIG5vdCBULCB0aGUgY29tcGls
ZXIgd2lsbCBnZW5lcmF0ZSBhIG1lc3NhZ2UgYWJvdXQKLS8vICJ1bmRlZmluZWQgcmVmZXJlY2Ui
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZSB7Ci0gIHN0YXRpYyBib29sIElz
VHlwZU9mKGNvbnN0IFQmIC8qIHYgKi8pIHsgcmV0dXJuIHRydWU7IH0KLQotICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyB2b2lkIElzVHlwZU9mKFQyIHYpOwotfTsKLQotVEVTVChU
eXBlZEVxVGVzdCwgSGFzU3BlY2lmaWVkVHlwZSkgewotICAvLyBWZXJmaWVzIHRoYXQgdGhlIHR5
cGUgb2YgVHlwZWRFcTxUPih2KSBpcyBNYXRjaGVyPFQ+LgotICBUeXBlPE1hdGNoZXI8aW50PiA+
OjpJc1R5cGVPZihUeXBlZEVxPGludD4oNSkpOwotICBUeXBlPE1hdGNoZXI8ZG91YmxlPiA+OjpJ
c1R5cGVPZihUeXBlZEVxPGRvdWJsZT4oNSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdlKHYpIG1h
dGNoZXMgYW55dGhpbmcgPj0gdi4KLVRFU1QoR2VUZXN0LCBJbXBsZW1lbnRzR3JlYXRlclRoYW5P
ckVxdWFsKSB7Ci0gIE1hdGNoZXI8aW50PiBtMSA9IEdlKDApOwotICBFWFBFQ1RfVFJVRShtMS5N
YXRjaGVzKDEpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygwKSk7Ci0gIEVYUEVDVF9GQUxT
RShtMS5NYXRjaGVzKC0xKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR2UodikgZGVzY3JpYmVzIGl0
c2VsZiBwcm9wZXJseS4KLVRFU1QoR2VUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hl
cjxpbnQ+IG0gPSBHZSg1KTsKLSAgRVhQRUNUX0VRKCJpcyA+PSA1IiwgRGVzY3JpYmUobSkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IEd0KHYpIG1hdGNoZXMgYW55dGhpbmcgPiB2LgotVEVTVChHdFRl
c3QsIEltcGxlbWVudHNHcmVhdGVyVGhhbikgewotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBHdCgw
KTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygxLjApKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1h
dGNoZXMoMC4wKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKC0xLjApKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBHdCh2KSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChHdFRlc3Qs
IENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGludD4gbSA9IEd0KDUpOwotICBFWFBFQ1Rf
RVEoImlzID4gNSIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBMZSh2KSBtYXRj
aGVzIGFueXRoaW5nIDw9IHYuCi1URVNUKExlVGVzdCwgSW1wbGVtZW50c0xlc3NUaGFuT3JFcXVh
bCkgewotICBNYXRjaGVyPGNoYXI+IG0xID0gTGUoJ2InKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0
Y2hlcygnYScpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygnYicpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0xLk1hdGNoZXMoJ2MnKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTGUodikgZGVzY3JpYmVz
IGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoTGVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0
Y2hlcjxpbnQ+IG0gPSBMZSg1KTsKLSAgRVhQRUNUX0VRKCJpcyA8PSA1IiwgRGVzY3JpYmUobSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEx0KHYpIG1hdGNoZXMgYW55dGhpbmcgPCB2LgotVEVTVChM
dFRlc3QsIEltcGxlbWVudHNMZXNzVGhhbikgewotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5n
Jj4gbTEgPSBMdCgiSGVsbG8iKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygiQWJjIikpOwot
ICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5N
YXRjaGVzKCJIZWxsbywgd29ybGQhIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IEx0KHYpIGRlc2Ny
aWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEx0VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0g
IE1hdGNoZXI8aW50PiBtID0gTHQoNSk7Ci0gIEVYUEVDVF9FUSgiaXMgPCA1IiwgRGVzY3JpYmUo
bSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5lKHYpIG1hdGNoZXMgYW55dGhpbmcgIT0gdi4KLVRF
U1QoTmVUZXN0LCBJbXBsZW1lbnRzTm90RXF1YWwpIHsKLSAgTWF0Y2hlcjxpbnQ+IG0xID0gTmUo
MCk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRj
aGVzKC0xKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKDApKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBOZSh2KSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChOZVRlc3QsIENhbkRl
c2NyaWJlU2VsZikgewotICBNYXRjaGVyPGludD4gbSA9IE5lKDUpOwotICBFWFBFQ1RfRVEoImlz
bid0IGVxdWFsIHRvIDUiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSXNOdWxs
KCkgbWF0Y2hlcyBhbnkgTlVMTCBwb2ludGVyIG9mIGFueSB0eXBlLgotVEVTVChJc051bGxUZXN0
LCBNYXRjaGVzTnVsbFBvaW50ZXIpIHsKLSAgTWF0Y2hlcjxpbnQqPiBtMSA9IElzTnVsbCgpOwot
ICBpbnQqIHAxID0gTlVMTDsKLSAgaW50IG4gPSAwOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVz
KHAxKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKCZuKSk7Ci0KLSAgTWF0Y2hlcjxjb25z
dCBjaGFyKj4gbTIgPSBJc051bGwoKTsKLSAgY29uc3QgY2hhciogcDIgPSBOVUxMOwotICBFWFBF
Q1RfVFJVRShtMi5NYXRjaGVzKHAyKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJoaSIp
KTsKLQotI2lmICFHVEVTVF9PU19TWU1CSUFOCi0gIC8vIE5va2lhJ3MgU3ltYmlhbiBjb21waWxl
ciBnZW5lcmF0ZXM6Ci0gIC8vIGdtb2NrLW1hdGNoZXJzLmg6IGFtYmlndW91cyBhY2Nlc3MgdG8g
b3ZlcmxvYWRlZCBmdW5jdGlvbgotICAvLyBnbW9jay1tYXRjaGVycy5oOiAndGVzdGluZzo6TWF0
Y2hlcjx2b2lkICo+OjpNYXRjaGVyKHZvaWQgKiknCi0gIC8vIGdtb2NrLW1hdGNoZXJzLmg6ICd0
ZXN0aW5nOjpNYXRjaGVyPHZvaWQgKj46Ok1hdGNoZXIoY29uc3QgdGVzdGluZzo6Ci0gIC8vICAg
ICBNYXRjaGVySW50ZXJmYWNlPHZvaWQgKj4gKiknCi0gIC8vIGdtb2NrLW1hdGNoZXJzLmg6ICAo
cG9pbnQgb2YgaW5zdGFudGlhdGlvbjogJ3Rlc3Rpbmc6OgotICAvLyAgICAgZ21vY2tfbWF0Y2hl
cnNfdGVzdDo6SXNOdWxsVGVzdF9NYXRjaGVzTnVsbFBvaW50ZXJfVGVzdDo6VGVzdEJvZHkoKScp
Ci0gIC8vIGdtb2NrLW1hdGNoZXJzLmg6ICAgKGluc3RhbnRpYXRpbmc6ICd0ZXN0aW5nOjpQb2x5
bW9ycGhpY01hdGMKLSAgTWF0Y2hlcjx2b2lkKj4gbTMgPSBJc051bGwoKTsKLSAgdm9pZCogcDMg
PSBOVUxMOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKHAzKSk7Ci0gIEVYUEVDVF9GQUxTRSht
My5NYXRjaGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4YmVlZikpKTsKLSNlbmRpZgotfQot
Ci1URVNUKElzTnVsbFRlc3QsIExpbmtlZFB0cikgewotICBjb25zdCBNYXRjaGVyPGxpbmtlZF9w
dHI8aW50PiA+IG0gPSBJc051bGwoKTsKLSAgY29uc3QgbGlua2VkX3B0cjxpbnQ+IG51bGxfcDsK
LSAgY29uc3QgbGlua2VkX3B0cjxpbnQ+IG5vbl9udWxsX3AobmV3IGludCk7Ci0KLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKG51bGxfcCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5vbl9u
dWxsX3ApKTsKLX0KLQotVEVTVChJc051bGxUZXN0LCBSZWZlcmVuY2VUb0NvbnN0TGlua2VkUHRy
KSB7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgbGlua2VkX3B0cjxkb3VibGU+Jj4gbSA9IElzTnVs
bCgpOwotICBjb25zdCBsaW5rZWRfcHRyPGRvdWJsZT4gbnVsbF9wOwotICBjb25zdCBsaW5rZWRf
cHRyPGRvdWJsZT4gbm9uX251bGxfcChuZXcgZG91YmxlKTsKLQotICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMobnVsbF9wKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobm9uX251bGxfcCkpOwot
fQotCi0jaWYgR1RFU1RfSEFTX1NURF9GVU5DVElPTl8KLVRFU1QoSXNOdWxsVGVzdCwgU3RkRnVu
Y3Rpb24pIHsKLSAgY29uc3QgTWF0Y2hlcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG0gPSBJc051
bGwoKTsKLQotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KCkp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhbXXt9KSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNU
X0hBU19TVERfRlVOQ1RJT05fCi0KLS8vIFRlc3RzIHRoYXQgSXNOdWxsKCkgZGVzY3JpYmVzIGl0
c2VsZiBwcm9wZXJseS4KLVRFU1QoSXNOdWxsVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1h
dGNoZXI8aW50Kj4gbSA9IElzTnVsbCgpOwotICBFWFBFQ1RfRVEoImlzIE5VTEwiLCBEZXNjcmli
ZShtKSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgTlVMTCIsIERlc2NyaWJlTmVnYXRpb24obSkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IE5vdE51bGwoKSBtYXRjaGVzIGFueSBub24tTlVMTCBwb2ludGVy
IG9mIGFueSB0eXBlLgotVEVTVChOb3ROdWxsVGVzdCwgTWF0Y2hlc05vbk51bGxQb2ludGVyKSB7
Ci0gIE1hdGNoZXI8aW50Kj4gbTEgPSBOb3ROdWxsKCk7Ci0gIGludCogcDEgPSBOVUxMOwotICBp
bnQgbiA9IDA7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKHAxKSk7Ci0gIEVYUEVDVF9UUlVF
KG0xLk1hdGNoZXMoJm4pKTsKLQotICBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtMiA9IE5vdE51bGwo
KTsKLSAgY29uc3QgY2hhciogcDIgPSBOVUxMOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhw
MikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJoaSIpKTsKLX0KLQotVEVTVChOb3ROdWxs
VGVzdCwgTGlua2VkUHRyKSB7Ci0gIGNvbnN0IE1hdGNoZXI8bGlua2VkX3B0cjxpbnQ+ID4gbSA9
IE5vdE51bGwoKTsKLSAgY29uc3QgbGlua2VkX3B0cjxpbnQ+IG51bGxfcDsKLSAgY29uc3QgbGlu
a2VkX3B0cjxpbnQ+IG5vbl9udWxsX3AobmV3IGludCk7Ci0KLSAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcyhudWxsX3ApKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG5vbl9udWxsX3ApKTsKLX0K
LQotVEVTVChOb3ROdWxsVGVzdCwgUmVmZXJlbmNlVG9Db25zdExpbmtlZFB0cikgewotICBjb25z
dCBNYXRjaGVyPGNvbnN0IGxpbmtlZF9wdHI8ZG91YmxlPiY+IG0gPSBOb3ROdWxsKCk7Ci0gIGNv
bnN0IGxpbmtlZF9wdHI8ZG91YmxlPiBudWxsX3A7Ci0gIGNvbnN0IGxpbmtlZF9wdHI8ZG91Ymxl
PiBub25fbnVsbF9wKG5ldyBkb3VibGUpOwotCi0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMobnVs
bF9wKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhub25fbnVsbF9wKSk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfU1REX0ZVTkNUSU9OXwotVEVTVChOb3ROdWxsVGVzdCwgU3RkRnVuY3Rpb24pIHsK
LSAgY29uc3QgTWF0Y2hlcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG0gPSBOb3ROdWxsKCk7Ci0K
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFtde30pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cyhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oKSkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RE
X0ZVTkNUSU9OXwotCi0vLyBUZXN0cyB0aGF0IE5vdE51bGwoKSBkZXNjcmliZXMgaXRzZWxmIHBy
b3Blcmx5LgotVEVTVChOb3ROdWxsVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8
aW50Kj4gbSA9IE5vdE51bGwoKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBOVUxMIiwgRGVzY3JpYmUo
bSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlZih2YXJpYWJsZSkgbWF0Y2hlcyBhbiBhcmd1bWVu
dCB0aGF0IHJlZmVyZW5jZXMKLS8vICd2YXJpYWJsZScuCi1URVNUKFJlZlRlc3QsIE1hdGNoZXNT
YW1lVmFyaWFibGUpIHsKLSAgaW50IGEgPSAwOwotICBpbnQgYiA9IDA7Ci0gIE1hdGNoZXI8aW50
Jj4gbSA9IFJlZihhKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhiKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVmKHZhcmlhYmxlKSBkZXNj
cmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChSZWZUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsK
LSAgaW50IG4gPSA1OwotICBNYXRjaGVyPGludCY+IG0gPSBSZWYobik7Ci0gIHN0cmluZ3N0cmVh
bSBzczsKLSAgc3MgPDwgInJlZmVyZW5jZXMgdGhlIHZhcmlhYmxlIEAiIDw8ICZuIDw8ICIgNSI7
Ci0gIEVYUEVDVF9FUShzcy5zdHIoKSwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0IHRoYXQg
UmVmKG5vbl9jb25zdF92YXJpYWxiZSkgY2FuIGJlIHVzZWQgYXMgYSBtYXRjaGVyIGZvciBhCi0v
LyBjb25zdCByZWZlcmVuY2UuCi1URVNUKFJlZlRlc3QsIENhbkJlVXNlZEFzTWF0Y2hlckZvckNv
bnN0UmVmZXJlbmNlKSB7Ci0gIGludCBhID0gMDsKLSAgaW50IGIgPSAwOwotICBNYXRjaGVyPGNv
bnN0IGludCY+IG0gPSBSZWYoYSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoYikpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlZih2YXJpYWJs
ZSkgaXMgY292YXJpYW50LCBpLmUuIFJlZihkZXJpdmVkKSBjYW4gYmUKLS8vIHVzZWQgd2hlcmV2
ZXIgUmVmKGJhc2UpIGNhbiBiZSB1c2VkIChSZWYoZGVyaXZlZCkgaXMgYSBzdWItdHlwZQotLy8g
b2YgUmVmKGJhc2UpLCBidXQgbm90IHZpY2UgdmVyc2EuCi0KLVRFU1QoUmVmVGVzdCwgSXNDb3Zh
cmlhbnQpIHsKLSAgQmFzZSBiYXNlLCBiYXNlMjsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBNYXRj
aGVyPGNvbnN0IEJhc2UmPiBtMSA9IFJlZihiYXNlKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cyhiYXNlKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKGJhc2UyKSk7Ci0gIEVYUEVDVF9G
QUxTRShtMS5NYXRjaGVzKGRlcml2ZWQpKTsKLQotICBtMSA9IFJlZihkZXJpdmVkKTsKLSAgRVhQ
RUNUX1RSVUUobTEuTWF0Y2hlcyhkZXJpdmVkKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVz
KGJhc2UpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoYmFzZTIpKTsKLX0KLQotVEVTVChS
ZWZUZXN0LCBFeHBsYWluc1Jlc3VsdCkgewotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9USEFUKEV4
cGxhaW4oTWF0Y2hlcjxjb25zdCBpbnQmPihSZWYobikpLCBuKSwKLSAgICAgICAgICAgICAgU3Rh
cnRzV2l0aCgid2hpY2ggaXMgbG9jYXRlZCBAIikpOwotCi0gIGludCBtID0gMDsKLSAgRVhQRUNU
X1RIQVQoRXhwbGFpbihNYXRjaGVyPGNvbnN0IGludCY+KFJlZihuKSksIG0pLAotICAgICAgICAg
ICAgICBTdGFydHNXaXRoKCJ3aGljaCBpcyBsb2NhdGVkIEAiKSk7Ci19Ci0KLS8vIFRlc3RzIHN0
cmluZyBjb21wYXJpc29uIG1hdGNoZXJzLgotCi1URVNUKFN0ckVxVGVzdCwgTWF0Y2hlc0VxdWFs
U3RyaW5nKSB7Ci0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBTdHJFcShzdGQ6OnN0cmluZygi
SGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwp
KTsKLQotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4gbTIgPSBTdHJFcSgiSGVsbG8iKTsK
LSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJIaSIpKTsKLX0KLQotVEVTVChTdHJFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewot
ICBNYXRjaGVyPHN0ZDo6c3RyaW5nPiBtID0gU3RyRXEoIkhpLVwnXCI/XFxcYVxiXGZcblxyXHRc
dlx4RDMiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBcIkhpLVwnXFxcIj9cXFxcXFxhXFxi
XFxmXFxuXFxyXFx0XFx2XFx4RDNcIiIsCi0gICAgICBEZXNjcmliZShtKSk7Ci0KLSAgc3RkOjpz
dHJpbmcgc3RyKCIwMTIwNDUwMDgwMCIpOwotICBzdHJbM10gPSAnXDAnOwotICBNYXRjaGVyPHN0
ZDo6c3RyaW5nPiBtMiA9IFN0ckVxKHN0cik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gXCIw
MTJcXDA0NTAwODAwXCIiLCBEZXNjcmliZShtMikpOwotICBzdHJbMF0gPSBzdHJbNl0gPSBzdHJb
N10gPSBzdHJbOV0gPSBzdHJbMTBdID0gJ1wwJzsKLSAgTWF0Y2hlcjxzdGQ6OnN0cmluZz4gbTMg
PSBTdHJFcShzdHIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIFwiXFwwMTJcXDA0NVxcMFxc
MDhcXDBcXDBcIiIsIERlc2NyaWJlKG0zKSk7Ci19Ci0KLVRFU1QoU3RyTmVUZXN0LCBNYXRjaGVz
VW5lcXVhbFN0cmluZykgewotICBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtID0gU3RyTmUoIkhlbGxv
Iik7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygiIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoTlVMTCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCJIZWxsbyIpKTsKLQotICBNYXRj
aGVyPHN0ZDo6c3RyaW5nPiBtMiA9IFN0ck5lKHN0ZDo6c3RyaW5nKCJIZWxsbyIpKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcygiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVz
KCJIZWxsbyIpKTsKLX0KLQotVEVTVChTdHJOZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBN
YXRjaGVyPGNvbnN0IGNoYXIqPiBtID0gU3RyTmUoIkhpIik7Ci0gIEVYUEVDVF9FUSgiaXNuJ3Qg
ZXF1YWwgdG8gXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi1URVNUKFN0ckNhc2VFcVRlc3Qs
IE1hdGNoZXNFcXVhbFN0cmluZ0lnbm9yaW5nQ2FzZSkgewotICBNYXRjaGVyPGNvbnN0IGNoYXIq
PiBtID0gU3RyQ2FzZUVxKHN0cmluZygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygiaGVsbG8iKSk7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoIkhpIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwp
KTsKLQotICBNYXRjaGVyPGNvbnN0IHN0cmluZyY+IG0yID0gU3RyQ2FzZUVxKCJIZWxsbyIpOwot
ICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1h
dGNoZXMoIkhpIikpOwotfQotCi1URVNUKFN0ckNhc2VFcVRlc3QsIE1hdGNoZXNFcXVhbFN0cmlu
Z1dpdGgwSWdub3JpbmdDYXNlKSB7Ci0gIHN0ZDo6c3RyaW5nIHN0cjEoIm9hYm9jZG9vZW9vIik7
Ci0gIHN0ZDo6c3RyaW5nIHN0cjIoIk9BQk9DRE9PRU9PIik7Ci0gIE1hdGNoZXI8Y29uc3Qgc3Rk
OjpzdHJpbmcmPiBtMCA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQRUNUX0ZBTFNFKG0wLk1hdGNo
ZXMoc3RyMiArIHN0ZDo6c3RyaW5nKDEsICdcMCcpKSk7Ci0KLSAgc3RyMVszXSA9IHN0cjJbM10g
PSAnXDAnOwotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4gbTEgPSBTdHJDYXNlRXEoc3Ry
MSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoc3RyMikpOwotCi0gIHN0cjFbMF0gPSBzdHIx
WzZdID0gc3RyMVs3XSA9IHN0cjFbMTBdID0gJ1wwJzsKLSAgc3RyMlswXSA9IHN0cjJbNl0gPSBz
dHIyWzddID0gc3RyMlsxMF0gPSAnXDAnOwotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4g
bTIgPSBTdHJDYXNlRXEoc3RyMSk7Ci0gIHN0cjFbOV0gPSBzdHIyWzldID0gJ1wwJzsKLSAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoc3RyMikpOwotCi0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJp
bmcmPiBtMyA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQRUNUX1RSVUUobTMuTWF0Y2hlcyhzdHIy
KSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoc3RyMiArICJ4IikpOwotICBzdHIyLmFw
cGVuZCgxLCAnXDAnKTsKLSAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoc3RyMikpOwotICBFWFBF
Q1RfRkFMU0UobTMuTWF0Y2hlcyhzdGQ6OnN0cmluZyhzdHIyLCAwLCA5KSkpOwotfQotCi1URVNU
KFN0ckNhc2VFcVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPHN0ZDo6c3RyaW5n
PiBtID0gU3RyQ2FzZUVxKCJIaSIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIChpZ25vcmlu
ZyBjYXNlKSBcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLVRFU1QoU3RyQ2FzZU5lVGVzdCwg
TWF0Y2hlc1VuZXF1YWxTdHJpbmdJZ25vcmluZ0Nhc2UpIHsKLSAgTWF0Y2hlcjxjb25zdCBjaGFy
Kj4gbSA9IFN0ckNhc2VOZSgiSGVsbG8iKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCJIaSIp
KTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0
Y2hlcygiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoImhlbGxvIikpOwotCi0g
IE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0yID0gU3RyQ2FzZU5lKHN0ZDo6c3RyaW5nKCJIZWxsbyIp
KTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcygiSGVsbG8iKSk7Ci19Ci0KLVRFU1QoU3RyQ2FzZU5lVGVzdCwgQ2FuRGVzY3JpYmVTZWxm
KSB7Ci0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0gPSBTdHJDYXNlTmUoIkhpIik7Ci0gIEVYUEVD
VF9FUSgiaXNuJ3QgZXF1YWwgdG8gKGlnbm9yaW5nIGNhc2UpIFwiSGlcIiIsIERlc2NyaWJlKG0p
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBIYXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgc3Ry
aW5nLXR5cGVkIHZhbHVlcy4KLVRFU1QoSGFzU3Vic3RyVGVzdCwgV29ya3NGb3JTdHJpbmdDbGFz
c2VzKSB7Ci0gIGNvbnN0IE1hdGNoZXI8c3RkOjpzdHJpbmc+IG0xID0gSGFzU3Vic3RyKCJmb28i
KTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhzdGQ6OnN0cmluZygiSSBsb3ZlIGZvb2QuIikp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoc3RkOjpzdHJpbmcoInRvZm8iKSkpOwotCi0g
IGNvbnN0IE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IEhhc1N1YnN0cigiZm9vIik7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoc3RkOjpzdHJpbmcoIkkgbG92ZSBmb29kLiIpKSk7
Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKHN0ZDo6c3RyaW5nKCJ0b2ZvIikpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBIYXNTdWJzdHIoKSB3b3JrcyBmb3IgbWF0Y2hpbmcgQy1zdHJpbmctdHlw
ZWQgdmFsdWVzLgotVEVTVChIYXNTdWJzdHJUZXN0LCBXb3Jrc0ZvckNTdHJpbmdzKSB7Ci0gIGNv
bnN0IE1hdGNoZXI8Y2hhcio+IG0xID0gSGFzU3Vic3RyKCJmb28iKTsKLSAgRVhQRUNUX1RSVUUo
bTEuTWF0Y2hlcyhjb25zdF9jYXN0PGNoYXIqPigiSSBsb3ZlIGZvb2QuIikpKTsKLSAgRVhQRUNU
X0ZBTFNFKG0xLk1hdGNoZXMoY29uc3RfY2FzdDxjaGFyKj4oInRvZm8iKSkpOwotICBFWFBFQ1Rf
RkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBjaGFyKj4g
bTIgPSBIYXNTdWJzdHIoImZvbyIpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJJIGxvdmUg
Zm9vZC4iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKCJ0b2ZvIikpOwotICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgSGFzU3Vic3RyKHMp
IGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEhhc1N1YnN0clRlc3QsIENhbkRlc2Ny
aWJlU2VsZikgewotICBNYXRjaGVyPHN0ZDo6c3RyaW5nPiBtID0gSGFzU3Vic3RyKCJmb29cblwi
Iik7Ci0gIEVYUEVDVF9FUSgiaGFzIHN1YnN0cmluZyBcImZvb1xcblxcXCJcIiIsIERlc2NyaWJl
KG0pKTsKLX0KLQotVEVTVChLZXlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxj
b25zdCBwYWlyPHN0ZDo6c3RyaW5nLCBpbnQ+Jj4gbSA9IEtleSgiZm9vIik7Ci0gIEVYUEVDVF9F
USgiaGFzIGEga2V5IHRoYXQgaXMgZXF1YWwgdG8gXCJmb29cIiIsIERlc2NyaWJlKG0pKTsKLSAg
RVhQRUNUX0VRKCJkb2Vzbid0IGhhdmUgYSBrZXkgdGhhdCBpcyBlcXVhbCB0byBcImZvb1wiIiwg
RGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1QoS2V5VGVzdCwgRXhwbGFpbnNSZXN1bHQp
IHsKLSAgTWF0Y2hlcjxwYWlyPGludCwgYm9vbD4gPiBtID0gS2V5KEdyZWF0ZXJUaGFuKDEwKSk7
Ci0gIEVYUEVDVF9FUSgid2hvc2UgZmlyc3QgZmllbGQgaXMgYSB2YWx1ZSB3aGljaCBpcyA1IGxl
c3MgdGhhbiAxMCIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIG1ha2VfcGFpcig1LCB0cnVlKSkp
OwotICBFWFBFQ1RfRVEoIndob3NlIGZpcnN0IGZpZWxkIGlzIGEgdmFsdWUgd2hpY2ggaXMgNSBt
b3JlIHRoYW4gMTAiLAotICAgICAgICAgICAgRXhwbGFpbihtLCBtYWtlX3BhaXIoMTUsIHRydWUp
KSk7Ci19Ci0KLVRFU1QoS2V5VGVzdCwgTWF0Y2hlc0NvcnJlY3RseSkgewotICBwYWlyPGludCwg
c3RkOjpzdHJpbmc+IHAoMjUsICJmb28iKTsKLSAgRVhQRUNUX1RIQVQocCwgS2V5KDI1KSk7Ci0g
IEVYUEVDVF9USEFUKHAsIE5vdChLZXkoNDIpKSk7Ci0gIEVYUEVDVF9USEFUKHAsIEtleShHZSgy
MCkpKTsKLSAgRVhQRUNUX1RIQVQocCwgTm90KEtleShMdCgyNSkpKSk7Ci19Ci0KLVRFU1QoS2V5
VGVzdCwgU2FmZWx5Q2FzdHNJbm5lck1hdGNoZXIpIHsKLSAgTWF0Y2hlcjxpbnQ+IGlzX3Bvc2l0
aXZlID0gR3QoMCk7Ci0gIE1hdGNoZXI8aW50PiBpc19uZWdhdGl2ZSA9IEx0KDApOwotICBwYWly
PGNoYXIsIGJvb2w+IHAoJ2EnLCB0cnVlKTsKLSAgRVhQRUNUX1RIQVQocCwgS2V5KGlzX3Bvc2l0
aXZlKSk7Ci0gIEVYUEVDVF9USEFUKHAsIE5vdChLZXkoaXNfbmVnYXRpdmUpKSk7Ci19Ci0KLVRF
U1QoS2V5VGVzdCwgSW5zaWRlQ29udGFpbnNVc2luZ01hcCkgewotICBtYXA8aW50LCBjaGFyPiBj
b250YWluZXI7Ci0gIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDEsICdhJykpOwotICBjb250
YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyLCAnYicpKTsKLSAgY29udGFpbmVyLmluc2VydChtYWtl
X3BhaXIoNCwgJ2MnKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgQ29udGFpbnMoS2V5KDEp
KSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KENvbnRhaW5zKEtleSgzKSkpKTsKLX0K
LQotVEVTVChLZXlUZXN0LCBJbnNpZGVDb250YWluc1VzaW5nTXVsdGltYXApIHsKLSAgbXVsdGlt
YXA8aW50LCBjaGFyPiBjb250YWluZXI7Ci0gIGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDEs
ICdhJykpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigyLCAnYicpKTsKLSAgY29udGFp
bmVyLmluc2VydChtYWtlX3BhaXIoNCwgJ2MnKSk7Ci0KLSAgRVhQRUNUX1RIQVQoY29udGFpbmVy
LCBOb3QoQ29udGFpbnMoS2V5KDI1KSkpKTsKLSAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIo
MjUsICdkJykpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIENvbnRhaW5zKEtleSgyNSkpKTsK
LSAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoMjUsICdlJykpOwotICBFWFBFQ1RfVEhBVChj
b250YWluZXIsIENvbnRhaW5zKEtleSgyNSkpKTsKLQotICBFWFBFQ1RfVEhBVChjb250YWluZXIs
IENvbnRhaW5zKEtleSgxKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChDb250YWlu
cyhLZXkoMykpKSk7Ci19Ci0KLVRFU1QoUGFpclRlc3QsIFR5cGluZykgewotICAvLyBUZXN0IHZl
cmlmaWVzIHRoZSBmb2xsb3dpbmcgdHlwZSBjb252ZXJzaW9ucyBjYW4gYmUgY29tcGlsZWQuCi0g
IE1hdGNoZXI8Y29uc3QgcGFpcjxjb25zdCBjaGFyKiwgaW50PiY+IG0xID0gUGFpcigiZm9vIiwg
NDIpOwotICBNYXRjaGVyPGNvbnN0IHBhaXI8Y29uc3QgY2hhciosIGludD4gPiBtMiA9IFBhaXIo
ImZvbyIsIDQyKTsKLSAgTWF0Y2hlcjxwYWlyPGNvbnN0IGNoYXIqLCBpbnQ+ID4gbTMgPSBQYWly
KCJmb28iLCA0Mik7Ci0KLSAgTWF0Y2hlcjxwYWlyPGludCwgY29uc3Qgc3RkOjpzdHJpbmc+ID4g
bTQgPSBQYWlyKDI1LCAiNDIiKTsKLSAgTWF0Y2hlcjxwYWlyPGNvbnN0IHN0ZDo6c3RyaW5nLCBp
bnQ+ID4gbTUgPSBQYWlyKCIyNSIsIDQyKTsKLX0KLQotVEVTVChQYWlyVGVzdCwgQ2FuRGVzY3Jp
YmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgcGFpcjxzdGQ6OnN0cmluZywgaW50PiY+IG0xID0g
UGFpcigiZm9vIiwgNDIpOwotICBFWFBFQ1RfRVEoImhhcyBhIGZpcnN0IGZpZWxkIHRoYXQgaXMg
ZXF1YWwgdG8gXCJmb29cIiIKLSAgICAgICAgICAgICIsIGFuZCBoYXMgYSBzZWNvbmQgZmllbGQg
dGhhdCBpcyBlcXVhbCB0byA0MiIsCi0gICAgICAgICAgICBEZXNjcmliZShtMSkpOwotICBFWFBF
Q1RfRVEoImhhcyBhIGZpcnN0IGZpZWxkIHRoYXQgaXNuJ3QgZXF1YWwgdG8gXCJmb29cIiIKLSAg
ICAgICAgICAgICIsIG9yIGhhcyBhIHNlY29uZCBmaWVsZCB0aGF0IGlzbid0IGVxdWFsIHRvIDQy
IiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLSAgLy8gRG91YmxlIGFuZCB0
cmlwbGUgbmVnYXRpb24gKDEgb3IgMiB0aW1lcyBub3QgYW5kIGRlc2NyaXB0aW9uIG9mIG5lZ2F0
aW9uKS4KLSAgTWF0Y2hlcjxjb25zdCBwYWlyPGludCwgaW50PiY+IG0yID0gTm90KFBhaXIoTm90
KDEzKSwgNDIpKTsKLSAgRVhQRUNUX0VRKCJoYXMgYSBmaXJzdCBmaWVsZCB0aGF0IGlzbid0IGVx
dWFsIHRvIDEzIgotICAgICAgICAgICAgIiwgYW5kIGhhcyBhIHNlY29uZCBmaWVsZCB0aGF0IGlz
IGVxdWFsIHRvIDQyIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obTIpKTsKLX0KLQot
VEVTVChQYWlyVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVzdWx0VG8pIHsKLSAgLy8gSWYgbmVpdGhl
ciBmaWVsZCBtYXRjaGVzLCBQYWlyKCkgc2hvdWxkIGV4cGxhaW4gYWJvdXQgdGhlIGZpcnN0Ci0g
IC8vIGZpZWxkLgotICBjb25zdCBNYXRjaGVyPHBhaXI8aW50LCBpbnQ+ID4gbSA9IFBhaXIoR3Jl
YXRlclRoYW4oMCksIEdyZWF0ZXJUaGFuKDApKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBmaXJzdCBm
aWVsZCBkb2VzIG5vdCBtYXRjaCwgd2hpY2ggaXMgMSBsZXNzIHRoYW4gMCIsCi0gICAgICAgICAg
ICBFeHBsYWluKG0sIG1ha2VfcGFpcigtMSwgLTIpKSk7Ci0KLSAgLy8gSWYgdGhlIGZpcnN0IGZp
ZWxkIG1hdGNoZXMgYnV0IHRoZSBzZWNvbmQgZG9lc24ndCwgUGFpcigpIHNob3VsZAotICAvLyBl
eHBsYWluIGFib3V0IHRoZSBzZWNvbmQgZmllbGQuCi0gIEVYUEVDVF9FUSgid2hvc2Ugc2Vjb25k
IGZpZWxkIGRvZXMgbm90IG1hdGNoLCB3aGljaCBpcyAyIGxlc3MgdGhhbiAwIiwKLSAgICAgICAg
ICAgIEV4cGxhaW4obSwgbWFrZV9wYWlyKDEsIC0yKSkpOwotCi0gIC8vIElmIHRoZSBmaXJzdCBm
aWVsZCBkb2Vzbid0IG1hdGNoIGJ1dCB0aGUgc2Vjb25kIGRvZXMsIFBhaXIoKQotICAvLyBzaG91
bGQgZXhwbGFpbiBhYm91dCB0aGUgZmlyc3QgZmllbGQuCi0gIEVYUEVDVF9FUSgid2hvc2UgZmly
c3QgZmllbGQgZG9lcyBub3QgbWF0Y2gsIHdoaWNoIGlzIDEgbGVzcyB0aGFuIDAiLAotICAgICAg
ICAgICAgRXhwbGFpbihtLCBtYWtlX3BhaXIoLTEsIDIpKSk7Ci0KLSAgLy8gSWYgYm90aCBmaWVs
ZHMgbWF0Y2gsIFBhaXIoKSBzaG91bGQgZXhwbGFpbiBhYm91dCB0aGVtIGJvdGguCi0gIEVYUEVD
VF9FUSgid2hvc2UgYm90aCBmaWVsZHMgbWF0Y2gsIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCBpcyBh
IHZhbHVlICIKLSAgICAgICAgICAgICJ3aGljaCBpcyAxIG1vcmUgdGhhbiAwLCBhbmQgdGhlIHNl
Y29uZCBmaWVsZCBpcyBhIHZhbHVlICIKLSAgICAgICAgICAgICJ3aGljaCBpcyAyIG1vcmUgdGhh
biAwIiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgbWFrZV9wYWlyKDEsIDIpKSk7Ci0KLSAgLy8g
SWYgb25seSB0aGUgZmlyc3QgbWF0Y2ggaGFzIGFuIGV4cGxhbmF0aW9uLCBvbmx5IHRoaXMgZXhw
bGFuYXRpb24gc2hvdWxkCi0gIC8vIGJlIHByaW50ZWQuCi0gIGNvbnN0IE1hdGNoZXI8cGFpcjxp
bnQsIGludD4gPiBleHBsYWluX2ZpcnN0ID0gUGFpcihHcmVhdGVyVGhhbigwKSwgMCk7Ci0gIEVY
UEVDVF9FUSgid2hvc2UgYm90aCBmaWVsZHMgbWF0Y2gsIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCBp
cyBhIHZhbHVlICIKLSAgICAgICAgICAgICJ3aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwKLSAgICAg
ICAgICAgIEV4cGxhaW4oZXhwbGFpbl9maXJzdCwgbWFrZV9wYWlyKDEsIDApKSk7Ci0KLSAgLy8g
SWYgb25seSB0aGUgc2Vjb25kIG1hdGNoIGhhcyBhbiBleHBsYW5hdGlvbiwgb25seSB0aGlzIGV4
cGxhbmF0aW9uIHNob3VsZAotICAvLyBiZSBwcmludGVkLgotICBjb25zdCBNYXRjaGVyPHBhaXI8
aW50LCBpbnQ+ID4gZXhwbGFpbl9zZWNvbmQgPSBQYWlyKDAsIEdyZWF0ZXJUaGFuKDApKTsKLSAg
RVhQRUNUX0VRKCJ3aG9zZSBib3RoIGZpZWxkcyBtYXRjaCwgd2hlcmUgdGhlIHNlY29uZCBmaWVs
ZCBpcyBhIHZhbHVlICIKLSAgICAgICAgICAgICJ3aGljaCBpcyAxIG1vcmUgdGhhbiAwIiwKLSAg
ICAgICAgICAgIEV4cGxhaW4oZXhwbGFpbl9zZWNvbmQsIG1ha2VfcGFpcigwLCAxKSkpOwotfQot
Ci1URVNUKFBhaXJUZXN0LCBNYXRjaGVzQ29ycmVjdGx5KSB7Ci0gIHBhaXI8aW50LCBzdGQ6OnN0
cmluZz4gcCgyNSwgImZvbyIpOwotCi0gIC8vIEJvdGggZmllbGRzIG1hdGNoLgotICBFWFBFQ1Rf
VEhBVChwLCBQYWlyKDI1LCAiZm9vIikpOwotICBFWFBFQ1RfVEhBVChwLCBQYWlyKEdlKDIwKSwg
SGFzU3Vic3RyKCJvIikpKTsKLQotICAvLyAnZmlyc3QnIGRvZXNudCcgbWF0Y2gsIGJ1dCAnc2Vj
b25kJyBtYXRjaGVzLgotICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFpcig0MiwgImZvbyIpKSk7Ci0g
IEVYUEVDVF9USEFUKHAsIE5vdChQYWlyKEx0KDI1KSwgImZvbyIpKSk7Ci0KLSAgLy8gJ2ZpcnN0
JyBtYXRjaGVzLCBidXQgJ3NlY29uZCcgZG9lc24ndCBtYXRjaC4KLSAgRVhQRUNUX1RIQVQocCwg
Tm90KFBhaXIoMjUsICJiYXIiKSkpOwotICBFWFBFQ1RfVEhBVChwLCBOb3QoUGFpcigyNSwgTm90
KCJmb28iKSkpKTsKLQotICAvLyBOZWl0aGVyIGZpZWxkIG1hdGNoZXMuCi0gIEVYUEVDVF9USEFU
KHAsIE5vdChQYWlyKDEzLCAiYmFyIikpKTsKLSAgRVhQRUNUX1RIQVQocCwgTm90KFBhaXIoTHQo
MTMpLCBIYXNTdWJzdHIoImEiKSkpKTsKLX0KLQotVEVTVChQYWlyVGVzdCwgU2FmZWx5Q2FzdHNJ
bm5lck1hdGNoZXJzKSB7Ci0gIE1hdGNoZXI8aW50PiBpc19wb3NpdGl2ZSA9IEd0KDApOwotICBN
YXRjaGVyPGludD4gaXNfbmVnYXRpdmUgPSBMdCgwKTsKLSAgcGFpcjxjaGFyLCBib29sPiBwKCdh
JywgdHJ1ZSk7Ci0gIEVYUEVDVF9USEFUKHAsIFBhaXIoaXNfcG9zaXRpdmUsIF8pKTsKLSAgRVhQ
RUNUX1RIQVQocCwgTm90KFBhaXIoaXNfbmVnYXRpdmUsIF8pKSk7Ci0gIEVYUEVDVF9USEFUKHAs
IFBhaXIoXywgaXNfcG9zaXRpdmUpKTsKLSAgRVhQRUNUX1RIQVQocCwgTm90KFBhaXIoXywgaXNf
bmVnYXRpdmUpKSk7Ci19Ci0KLVRFU1QoUGFpclRlc3QsIEluc2lkZUNvbnRhaW5zVXNpbmdNYXAp
IHsKLSAgbWFwPGludCwgY2hhcj4gY29udGFpbmVyOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2Vf
cGFpcigxLCAnYScpKTsKLSAgY29udGFpbmVyLmluc2VydChtYWtlX3BhaXIoMiwgJ2InKSk7Ci0g
IGNvbnRhaW5lci5pbnNlcnQobWFrZV9wYWlyKDQsICdjJykpOwotICBFWFBFQ1RfVEhBVChjb250
YWluZXIsIENvbnRhaW5zKFBhaXIoMSwgJ2EnKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIs
IENvbnRhaW5zKFBhaXIoMSwgXykpKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBDb250YWlu
cyhQYWlyKF8sICdhJykpKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3QoQ29udGFpbnMo
UGFpcigzLCBfKSkpKTsKLX0KLQotLy8gVGVzdHMgU3RhcnRzV2l0aChzKS4KLQotVEVTVChTdGFy
dHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblByZWZpeCkgewotICBjb25zdCBNYXRj
aGVyPGNvbnN0IGNoYXIqPiBtMSA9IFN0YXJ0c1dpdGgoc3RkOjpzdHJpbmcoIiIpKTsKLSAgRVhQ
RUNUX1RSVUUobTEuTWF0Y2hlcygiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoIiIp
KTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNvbnN0IE1hdGNoZXI8
Y29uc3Qgc3RkOjpzdHJpbmcmPiBtMiA9IFN0YXJ0c1dpdGgoIkhpIik7Ci0gIEVYUEVDVF9UUlVF
KG0yLk1hdGNoZXMoIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCJIaSBIaSEiKSk7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoIkhpZ2giKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJIIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygiIEhpIikpOwotfQotCi1U
RVNUKFN0YXJ0c1dpdGhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCBz
dGQ6OnN0cmluZz4gbSA9IFN0YXJ0c1dpdGgoIkhpIik7Ci0gIEVYUEVDVF9FUSgic3RhcnRzIHdp
dGggXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyBFbmRzV2l0aChzKS4KLQot
VEVTVChFbmRzV2l0aFRlc3QsIE1hdGNoZXNTdHJpbmdXaXRoR2l2ZW5TdWZmaXgpIHsKLSAgY29u
c3QgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbTEgPSBFbmRzV2l0aCgiIik7Ci0gIEVYUEVDVF9UUlVF
KG0xLk1hdGNoZXMoIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCIiKSk7Ci0gIEVY
UEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IHN0
cmluZyY+IG0yID0gRW5kc1dpdGgoc3RyaW5nKCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0
Y2hlcygiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoIldvdyBIaSBIaSIpKTsKLSAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiU3VwZXIgSGkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5N
YXRjaGVzKCJpIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcygiSGkgIikpOwotfQotCi1U
RVNUKEVuZHNXaXRoVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgc3Rk
OjpzdHJpbmc+IG0gPSBFbmRzV2l0aCgiSGkiKTsKLSAgRVhQRUNUX0VRKCJlbmRzIHdpdGggXCJI
aVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyBNYXRjaGVzUmVnZXgoKS4KLQotVEVT
VChNYXRjaGVzUmVnZXhUZXN0LCBNYXRjaGVzU3RyaW5nTWF0Y2hpbmdHaXZlblJlZ2V4KSB7Ci0g
IGNvbnN0IE1hdGNoZXI8Y29uc3QgY2hhcio+IG0xID0gTWF0Y2hlc1JlZ2V4KCJhLip6Iik7Ci0g
IEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoImF6IikpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVz
KCJhYmN6IikpOwotICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3Qg
TWF0Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyY+IG0yID0gTWF0Y2hlc1JlZ2V4KG5ldyBSRSgiYS4q
eiIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiYXpieiIpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0yLk1hdGNoZXMoImF6MSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoIjFheiIpKTsK
LX0KLQotVEVTVChNYXRjaGVzUmVnZXhUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hl
cjxjb25zdCBzdGQ6OnN0cmluZz4gbTEgPSBNYXRjaGVzUmVnZXgoc3RkOjpzdHJpbmcoIkhpLioi
KSk7Ci0gIEVYUEVDVF9FUSgibWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb24gXCJIaS4qXCIiLCBE
ZXNjcmliZShtMSkpOwotCi0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0yID0gTWF0Y2hlc1JlZ2V4
KG5ldyBSRSgiYS4qIikpOwotICBFWFBFQ1RfRVEoIm1hdGNoZXMgcmVndWxhciBleHByZXNzaW9u
IFwiYS4qXCIiLCBEZXNjcmliZShtMikpOwotfQotCi0vLyBUZXN0cyBDb250YWluc1JlZ2V4KCku
Ci0KLVRFU1QoQ29udGFpbnNSZWdleFRlc3QsIE1hdGNoZXNTdHJpbmdDb250YWluaW5nR2l2ZW5S
ZWdleCkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtMSA9IENvbnRhaW5zUmVnZXgo
c3RkOjpzdHJpbmcoImEuKnoiKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoImF6IikpOwot
ICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKCIwYWJjejEiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5N
YXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nJj4gbTIg
PSBDb250YWluc1JlZ2V4KG5ldyBSRSgiYS4qeiIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hl
cygiYXpieiIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygiYXoxIikpOwotICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcygiMWEiKSk7Ci19Ci0KLVRFU1QoQ29udGFpbnNSZWdleFRlc3QsIENh
bkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nPiBtMSA9IENvbnRh
aW5zUmVnZXgoIkhpLioiKTsKLSAgRVhQRUNUX0VRKCJjb250YWlucyByZWd1bGFyIGV4cHJlc3Np
b24gXCJIaS4qXCIiLCBEZXNjcmliZShtMSkpOwotCi0gIE1hdGNoZXI8Y29uc3QgY2hhcio+IG0y
ID0gQ29udGFpbnNSZWdleChuZXcgUkUoImEuKiIpKTsKLSAgRVhQRUNUX0VRKCJjb250YWlucyBy
ZWd1bGFyIGV4cHJlc3Npb24gXCJhLipcIiIsIERlc2NyaWJlKG0yKSk7Ci19Ci0KLS8vIFRlc3Rz
IGZvciB3aWRlIHN0cmluZ3MuCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi1URVNUKFN0ZFdp
ZGVTdHJFcVRlc3QsIE1hdGNoZXNFcXVhbCkgewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBt
ID0gU3RyRXEoOjpzdGQ6OndzdHJpbmcoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6
d3N0cmluZyY+IG0yID0gU3RyRXEoTCJIZWxsbyIpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVz
KEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSGkiKSk7Ci0KLSAgTWF0
Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0zID0gU3RyRXEoTCJceEQzXHg1NzZceDhEM1x4
Qzc0RCIpOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKEwiXHhEM1x4NTc2XHg4RDNceEM3NEQi
KSk7Ci0gIEVYUEVDVF9GQUxTRShtMy5NYXRjaGVzKEwiXHhEM1x4NTc2XHg4RDNceEM3NEUiKSk7
Ci0KLSAgOjpzdGQ6OndzdHJpbmcgc3RyKEwiMDEyMDQ1MDA4MDAiKTsKLSAgc3RyWzNdID0gTCdc
MCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtNCA9IFN0ckVxKHN0cik7Ci0g
IEVYUEVDVF9UUlVFKG00Lk1hdGNoZXMoc3RyKSk7Ci0gIHN0clswXSA9IHN0cls2XSA9IHN0cls3
XSA9IHN0cls5XSA9IHN0clsxMF0gPSBMJ1wwJzsKLSAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0
cmluZyY+IG01ID0gU3RyRXEoc3RyKTsKLSAgRVhQRUNUX1RSVUUobTUuTWF0Y2hlcyhzdHIpKTsK
LX0KLQotVEVTVChTdGRXaWRlU3RyRXFUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hl
cjwgOjpzdGQ6OndzdHJpbmc+IG0gPSBTdHJFcShMIkhpLVwnXCI/XFxcYVxiXGZcblxyXHRcdiIp
OwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIkhpLVwnXFxcIj9cXFxcXFxhXFxiXFxmXFxu
XFxyXFx0XFx2XCIiLAotICAgIERlc2NyaWJlKG0pKTsKLQotICBNYXRjaGVyPCA6OnN0ZDo6d3N0
cmluZz4gbTIgPSBTdHJFcShMIlx4RDNceDU3Nlx4OEQzXHhDNzREIik7Ci0gIEVYUEVDVF9FUSgi
aXMgZXF1YWwgdG8gTFwiXFx4RDNcXHg1NzZcXHg4RDNcXHhDNzREXCIiLAotICAgIERlc2NyaWJl
KG0yKSk7Ci0KLSAgOjpzdGQ6OndzdHJpbmcgc3RyKEwiMDEyMDQ1MDA4MDAiKTsKLSAgc3RyWzNd
ID0gTCdcMCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtNCA9IFN0ckVxKHN0
cik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiMDEyXFwwNDUwMDgwMFwiIiwgRGVzY3Jp
YmUobTQpKTsKLSAgc3RyWzBdID0gc3RyWzZdID0gc3RyWzddID0gc3RyWzldID0gc3RyWzEwXSA9
IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTUgPSBTdHJFcShzdHIp
OwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIlxcMDEyXFwwNDVcXDBcXDA4XFwwXFwwXCIi
LCBEZXNjcmliZShtNSkpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJOZVRlc3QsIE1hdGNoZXNVbmVx
dWFsU3RyaW5nKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0gPSBTdHJOZShMIkhlbGxv
Iik7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhMIiIpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKE5VTEwpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhMIkhlbGxvIikpOwotCi0gIE1h
dGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtMiA9IFN0ck5lKDo6c3RkOjp3c3RyaW5nKEwiSGVsbG8i
KSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNF
KG0yLk1hdGNoZXMoTCJIZWxsbyIpKTsKLX0KLQotVEVTVChTdGRXaWRlU3RyTmVUZXN0LCBDYW5E
ZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ck5lKEwiSGki
KTsKLSAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0byBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwot
fQotCi1URVNUKFN0ZFdpZGVTdHJDYXNlRXFUZXN0LCBNYXRjaGVzRXF1YWxTdHJpbmdJZ25vcmlu
Z0Nhc2UpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ckNhc2VFcSg6OnN0ZDo6
d3N0cmluZyhMIkhlbGxvIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCJIZWxsbyIpKTsK
LSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoTCJIaSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgTWF0
Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0yID0gU3RyQ2FzZUVxKEwiSGVsbG8iKTsKLSAg
RVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcyhMIkhpIikpOwotfQotCi1URVNUKFN0ZFdpZGVTdHJDYXNlRXFUZXN0LCBNYXRjaGVzRXF1
YWxTdHJpbmdXaXRoMElnbm9yaW5nQ2FzZSkgewotICA6OnN0ZDo6d3N0cmluZyBzdHIxKEwib2Fi
b2Nkb29lb28iKTsKLSAgOjpzdGQ6OndzdHJpbmcgc3RyMihMIk9BQk9DRE9PRU9PIik7Ci0gIE1h
dGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtMCA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0wLk1hdGNoZXMoc3RyMiArIDo6c3RkOjp3c3RyaW5nKDEsIEwnXDAnKSkpOwot
Ci0gIHN0cjFbM10gPSBzdHIyWzNdID0gTCdcMCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjpzdGQ6Ondz
dHJpbmcmPiBtMSA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhz
dHIyKSk7Ci0KLSAgc3RyMVswXSA9IHN0cjFbNl0gPSBzdHIxWzddID0gc3RyMVsxMF0gPSBMJ1ww
JzsKLSAgc3RyMlswXSA9IHN0cjJbNl0gPSBzdHIyWzddID0gc3RyMlsxMF0gPSBMJ1wwJzsKLSAg
TWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0yID0gU3RyQ2FzZUVxKHN0cjEpOwotICBz
dHIxWzldID0gc3RyMls5XSA9IEwnXDAnOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhzdHIy
KSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0zID0gU3RyQ2FzZUVxKHN0
cjEpOwotICBFWFBFQ1RfVFJVRShtMy5NYXRjaGVzKHN0cjIpKTsKLQotICBFWFBFQ1RfRkFMU0Uo
bTMuTWF0Y2hlcyhzdHIyICsgTCJ4IikpOwotICBzdHIyLmFwcGVuZCgxLCBMJ1wwJyk7Ci0gIEVY
UEVDVF9GQUxTRShtMy5NYXRjaGVzKHN0cjIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMo
OjpzdGQ6OndzdHJpbmcoc3RyMiwgMCwgOSkpKTsKLX0KLQotVEVTVChTdGRXaWRlU3RyQ2FzZUVx
VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8IDo6c3RkOjp3c3RyaW5nPiBtID0g
U3RyQ2FzZUVxKEwiSGkiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byAoaWdub3JpbmcgY2Fz
ZSkgTFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotVEVTVChTdGRXaWRlU3RyQ2FzZU5lVGVz
dCwgTWF0Y2hlc1VuZXF1YWxTdHJpbmdJZ25vcmluZ0Nhc2UpIHsKLSAgTWF0Y2hlcjxjb25zdCB3
Y2hhcl90Kj4gbSA9IFN0ckNhc2VOZShMIkhlbGxvIik7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVMTCkpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoTCJoZWxs
byIpKTsKLQotICBNYXRjaGVyPCA6OnN0ZDo6d3N0cmluZz4gbTIgPSBTdHJDYXNlTmUoOjpzdGQ6
OndzdHJpbmcoTCJIZWxsbyIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIiIpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIZWxsbyIpKTsKLX0KLQotVEVTVChTdGRXaWRlU3Ry
Q2FzZU5lVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+
IG0gPSBTdHJDYXNlTmUoTCJIaSIpOwotICBFWFBFQ1RfRVEoImlzbid0IGVxdWFsIHRvIChpZ25v
cmluZyBjYXNlKSBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEhh
c1N1YnN0cigpIHdvcmtzIGZvciBtYXRjaGluZyB3c3RyaW5nLXR5cGVkIHZhbHVlcy4KLVRFU1Qo
U3RkV2lkZUhhc1N1YnN0clRlc3QsIFdvcmtzRm9yU3RyaW5nQ2xhc3NlcykgewotICBjb25zdCBN
YXRjaGVyPCA6OnN0ZDo6d3N0cmluZz4gbTEgPSBIYXNTdWJzdHIoTCJmb28iKTsKLSAgRVhQRUNU
X1RSVUUobTEuTWF0Y2hlcyg6OnN0ZDo6d3N0cmluZyhMIkkgbG92ZSBmb29kLiIpKSk7Ci0gIEVY
UEVDVF9GQUxTRShtMS5NYXRjaGVzKDo6c3RkOjp3c3RyaW5nKEwidG9mbyIpKSk7Ci0KLSAgY29u
c3QgTWF0Y2hlcjxjb25zdCA6OnN0ZDo6d3N0cmluZyY+IG0yID0gSGFzU3Vic3RyKEwiZm9vIik7
Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoOjpzdGQ6OndzdHJpbmcoTCJJIGxvdmUgZm9vZC4i
KSkpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyg6OnN0ZDo6d3N0cmluZyhMInRvZm8iKSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEhhc1N1YnN0cigpIHdvcmtzIGZvciBtYXRjaGluZyBDLXdp
ZGUtc3RyaW5nLXR5cGVkIHZhbHVlcy4KLVRFU1QoU3RkV2lkZUhhc1N1YnN0clRlc3QsIFdvcmtz
Rm9yQ1N0cmluZ3MpIHsKLSAgY29uc3QgTWF0Y2hlcjx3Y2hhcl90Kj4gbTEgPSBIYXNTdWJzdHIo
TCJmb28iKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhjb25zdF9jYXN0PHdjaGFyX3QqPihM
IkkgbG92ZSBmb29kLiIpKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKGNvbnN0X2Nhc3Q8
d2NoYXJfdCo+KEwidG9mbyIpKSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsK
LQotICBjb25zdCBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtMiA9IEhhc1N1YnN0cihMImZvbyIp
OwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSSBsb3ZlIGZvb2QuIikpOwotICBFWFBFQ1Rf
RkFMU0UobTIuTWF0Y2hlcyhMInRvZm8iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKE5V
TEwpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBIYXNTdWJzdHIocykgZGVzY3JpYmVzIGl0c2VsZiBw
cm9wZXJseS4KLVRFU1QoU3RkV2lkZUhhc1N1YnN0clRlc3QsIENhbkRlc2NyaWJlU2VsZikgewot
ICBNYXRjaGVyPCA6OnN0ZDo6d3N0cmluZz4gbSA9IEhhc1N1YnN0cihMImZvb1xuXCIiKTsKLSAg
RVhQRUNUX0VRKCJoYXMgc3Vic3RyaW5nIExcImZvb1xcblxcXCJcIiIsIERlc2NyaWJlKG0pKTsK
LX0KLQotLy8gVGVzdHMgU3RhcnRzV2l0aChzKS4KLQotVEVTVChTdGRXaWRlU3RhcnRzV2l0aFRl
c3QsIE1hdGNoZXNTdHJpbmdXaXRoR2l2ZW5QcmVmaXgpIHsKLSAgY29uc3QgTWF0Y2hlcjxjb25z
dCB3Y2hhcl90Kj4gbTEgPSBTdGFydHNXaXRoKDo6c3RkOjp3c3RyaW5nKEwiIikpOwotICBFWFBF
Q1RfVFJVRShtMS5NYXRjaGVzKEwiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCIi
KSk7Ci0gIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKE5VTEwpKTsKLQotICBjb25zdCBNYXRjaGVy
PGNvbnN0IDo6c3RkOjp3c3RyaW5nJj4gbTIgPSBTdGFydHNXaXRoKEwiSGkiKTsKLSAgRVhQRUNU
X1RSVUUobTIuTWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSGkg
SGkhIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSGlnaCIpKTsKLSAgRVhQRUNUX0ZB
TFNFKG0yLk1hdGNoZXMoTCJIIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIiBIaSIp
KTsKLX0KLQotVEVTVChTdGRXaWRlU3RhcnRzV2l0aFRlc3QsIENhbkRlc2NyaWJlU2VsZikgewot
ICBNYXRjaGVyPGNvbnN0IDo6c3RkOjp3c3RyaW5nPiBtID0gU3RhcnRzV2l0aChMIkhpIik7Ci0g
IEVYUEVDVF9FUSgic3RhcnRzIHdpdGggTFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8g
VGVzdHMgRW5kc1dpdGgocykuCi0KLVRFU1QoU3RkV2lkZUVuZHNXaXRoVGVzdCwgTWF0Y2hlc1N0
cmluZ1dpdGhHaXZlblN1ZmZpeCkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBt
MSA9IEVuZHNXaXRoKEwiIik7Ci0gIEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCJIaSIpKTsKLSAg
RVhQRUNUX1RSVUUobTEuTWF0Y2hlcyhMIiIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMo
TlVMTCkpOwotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgOjpzdGQ6OndzdHJpbmcmPiBtMiA9IEVu
ZHNXaXRoKDo6c3RkOjp3c3RyaW5nKEwiSGkiKSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMo
TCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIldvdyBIaSBIaSIpKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcyhMIlN1cGVyIEhpIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0
Y2hlcyhMImkiKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiSGkgIikpOwotfQotCi1U
RVNUKFN0ZFdpZGVFbmRzV2l0aFRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNv
bnN0IDo6c3RkOjp3c3RyaW5nPiBtID0gRW5kc1dpdGgoTCJIaSIpOwotICBFWFBFQ1RfRVEoImVu
ZHMgd2l0aCBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi1URVNUKEdsb2Jh
bFdpZGVTdHJFcVRlc3QsIE1hdGNoZXNFcXVhbCkgewotICBNYXRjaGVyPGNvbnN0IHdjaGFyX3Qq
PiBtID0gU3RyRXEoOjp3c3RyaW5nKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhMIkhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKEwiaGVsbG8iKSk7Ci0gIEVY
UEVDVF9GQUxTRShtLk1hdGNoZXMoTlVMTCkpOwotCi0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5n
Jj4gbTIgPSBTdHJFcShMIkhlbGxvIik7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIZWxs
byIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTCJIaSIpKTsKLQotICBNYXRjaGVyPGNv
bnN0IDo6d3N0cmluZyY+IG0zID0gU3RyRXEoTCJceEQzXHg1NzZceDhEM1x4Qzc0RCIpOwotICBF
WFBFQ1RfVFJVRShtMy5NYXRjaGVzKEwiXHhEM1x4NTc2XHg4RDNceEM3NEQiKSk7Ci0gIEVYUEVD
VF9GQUxTRShtMy5NYXRjaGVzKEwiXHhEM1x4NTc2XHg4RDNceEM3NEUiKSk7Ci0KLSAgOjp3c3Ry
aW5nIHN0cihMIjAxMjA0NTAwODAwIik7Ci0gIHN0clszXSA9IEwnXDAnOwotICBNYXRjaGVyPGNv
bnN0IDo6d3N0cmluZyY+IG00ID0gU3RyRXEoc3RyKTsKLSAgRVhQRUNUX1RSVUUobTQuTWF0Y2hl
cyhzdHIpKTsKLSAgc3RyWzBdID0gc3RyWzZdID0gc3RyWzddID0gc3RyWzldID0gc3RyWzEwXSA9
IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG01ID0gU3RyRXEoc3RyKTsKLSAg
RVhQRUNUX1RSVUUobTUuTWF0Y2hlcyhzdHIpKTsKLX0KLQotVEVTVChHbG9iYWxXaWRlU3RyRXFU
ZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtID0gU3RyRXEo
TCJIaS1cJ1wiP1xcXGFcYlxmXG5cclx0XHYiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBM
XCJIaS1cJ1xcXCI/XFxcXFxcYVxcYlxcZlxcblxcclxcdFxcdlwiIiwKLSAgICBEZXNjcmliZSht
KSk7Ci0KLSAgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtMiA9IFN0ckVxKEwiXHhEM1x4NTc2XHg4RDNc
eEM3NEQiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0byBMXCJcXHhEM1xceDU3NlxceDhEM1xc
eEM3NERcIiIsCi0gICAgRGVzY3JpYmUobTIpKTsKLQotICA6OndzdHJpbmcgc3RyKEwiMDEyMDQ1
MDA4MDAiKTsKLSAgc3RyWzNdID0gTCdcMCc7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4g
bTQgPSBTdHJFcShzdHIpOwotICBFWFBFQ1RfRVEoImlzIGVxdWFsIHRvIExcIjAxMlxcMDQ1MDA4
MDBcIiIsIERlc2NyaWJlKG00KSk7Ci0gIHN0clswXSA9IHN0cls2XSA9IHN0cls3XSA9IHN0cls5
XSA9IHN0clsxMF0gPSBMJ1wwJzsKLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmcmPiBtNSA9IFN0
ckVxKHN0cik7Ci0gIEVYUEVDVF9FUSgiaXMgZXF1YWwgdG8gTFwiXFwwMTJcXDA0NVxcMFxcMDhc
XDBcXDBcIiIsIERlc2NyaWJlKG01KSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lkZVN0ck5lVGVzdCwg
TWF0Y2hlc1VuZXF1YWxTdHJpbmcpIHsKLSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0
ck5lKEwiSGVsbG8iKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKEwiIikpOwotICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoTlVMTCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKEwiSGVsbG8i
KSk7Ci0KLSAgTWF0Y2hlcjwgOjp3c3RyaW5nPiBtMiA9IFN0ck5lKDo6d3N0cmluZyhMIkhlbGxv
IikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiaGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxT
RShtMi5NYXRjaGVzKEwiSGVsbG8iKSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lkZVN0ck5lVGVzdCwg
Q2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0gPSBTdHJOZShM
IkhpIik7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgZXF1YWwgdG8gTFwiSGlcIiIsIERlc2NyaWJlKG0p
KTsKLX0KLQotVEVTVChHbG9iYWxXaWRlU3RyQ2FzZUVxVGVzdCwgTWF0Y2hlc0VxdWFsU3RyaW5n
SWdub3JpbmdDYXNlKSB7Ci0gIE1hdGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0gPSBTdHJDYXNlRXEo
Ojp3c3RyaW5nKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhMIkhlbGxvIikp
OwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKE5VTEwpKTsKLQotICBN
YXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0yID0gU3RyQ2FzZUVxKEwiSGVsbG8iKTsKLSAgRVhQ
RUNUX1RSVUUobTIuTWF0Y2hlcyhMImhlbGxvIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hl
cyhMIkhpIikpOwotfQotCi1URVNUKEdsb2JhbFdpZGVTdHJDYXNlRXFUZXN0LCBNYXRjaGVzRXF1
YWxTdHJpbmdXaXRoMElnbm9yaW5nQ2FzZSkgewotICA6OndzdHJpbmcgc3RyMShMIm9hYm9jZG9v
ZW9vIik7Ci0gIDo6d3N0cmluZyBzdHIyKEwiT0FCT0NET09FT08iKTsKLSAgTWF0Y2hlcjxjb25z
dCA6OndzdHJpbmcmPiBtMCA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQRUNUX0ZBTFNFKG0wLk1h
dGNoZXMoc3RyMiArIDo6d3N0cmluZygxLCBMJ1wwJykpKTsKLQotICBzdHIxWzNdID0gc3RyMlsz
XSA9IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0xID0gU3RyQ2FzZUVxKHN0
cjEpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKHN0cjIpKTsKLQotICBzdHIxWzBdID0gc3Ry
MVs2XSA9IHN0cjFbN10gPSBzdHIxWzEwXSA9IEwnXDAnOwotICBzdHIyWzBdID0gc3RyMls2XSA9
IHN0cjJbN10gPSBzdHIyWzEwXSA9IEwnXDAnOwotICBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+
IG0yID0gU3RyQ2FzZUVxKHN0cjEpOwotICBzdHIxWzldID0gc3RyMls5XSA9IEwnXDAnOwotICBF
WFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhzdHIyKSk7Ci0KLSAgTWF0Y2hlcjxjb25zdCA6OndzdHJp
bmcmPiBtMyA9IFN0ckNhc2VFcShzdHIxKTsKLSAgRVhQRUNUX1RSVUUobTMuTWF0Y2hlcyhzdHIy
KSk7Ci0KLSAgRVhQRUNUX0ZBTFNFKG0zLk1hdGNoZXMoc3RyMiArIEwieCIpKTsKLSAgc3RyMi5h
cHBlbmQoMSwgTCdcMCcpOwotICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhzdHIyKSk7Ci0gIEVY
UEVDVF9GQUxTRShtMy5NYXRjaGVzKDo6d3N0cmluZyhzdHIyLCAwLCA5KSkpOwotfQotCi1URVNU
KEdsb2JhbFdpZGVTdHJDYXNlRXFUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjwg
Ojp3c3RyaW5nPiBtID0gU3RyQ2FzZUVxKEwiSGkiKTsKLSAgRVhQRUNUX0VRKCJpcyBlcXVhbCB0
byAoaWdub3JpbmcgY2FzZSkgTFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotVEVTVChHbG9i
YWxXaWRlU3RyQ2FzZU5lVGVzdCwgTWF0Y2hlc1VuZXF1YWxTdHJpbmdJZ25vcmluZ0Nhc2UpIHsK
LSAgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4gbSA9IFN0ckNhc2VOZShMIkhlbGxvIik7Ci0gIEVY
UEVDVF9UUlVFKG0uTWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVM
TCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKEwiSGVsbG8iKSk7Ci0gIEVYUEVDVF9GQUxT
RShtLk1hdGNoZXMoTCJoZWxsbyIpKTsKLQotICBNYXRjaGVyPCA6OndzdHJpbmc+IG0yID0gU3Ry
Q2FzZU5lKDo6d3N0cmluZyhMIkhlbGxvIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwi
IikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkhlbGxvIikpOwotfQotCi1URVNUKEds
b2JhbFdpZGVTdHJDYXNlTmVUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25z
dCB3Y2hhcl90Kj4gbSA9IFN0ckNhc2VOZShMIkhpIik7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgZXF1
YWwgdG8gKGlnbm9yaW5nIGNhc2UpIExcIkhpXCIiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgSGFzU3Vic3RyKCkgd29ya3MgZm9yIG1hdGNoaW5nIHdzdHJpbmctdHlwZWQgdmFs
dWVzLgotVEVTVChHbG9iYWxXaWRlSGFzU3Vic3RyVGVzdCwgV29ya3NGb3JTdHJpbmdDbGFzc2Vz
KSB7Ci0gIGNvbnN0IE1hdGNoZXI8IDo6d3N0cmluZz4gbTEgPSBIYXNTdWJzdHIoTCJmb28iKTsK
LSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcyg6OndzdHJpbmcoTCJJIGxvdmUgZm9vZC4iKSkpOwot
ICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyg6OndzdHJpbmcoTCJ0b2ZvIikpKTsKLQotICBjb25z
dCBNYXRjaGVyPGNvbnN0IDo6d3N0cmluZyY+IG0yID0gSGFzU3Vic3RyKEwiZm9vIik7Ci0gIEVY
UEVDVF9UUlVFKG0yLk1hdGNoZXMoOjp3c3RyaW5nKEwiSSBsb3ZlIGZvb2QuIikpKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0yLk1hdGNoZXMoOjp3c3RyaW5nKEwidG9mbyIpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgSGFzU3Vic3RyKCkgd29ya3MgZm9yIG1hdGNoaW5nIEMtd2lkZS1zdHJpbmctdHlwZWQg
dmFsdWVzLgotVEVTVChHbG9iYWxXaWRlSGFzU3Vic3RyVGVzdCwgV29ya3NGb3JDU3RyaW5ncykg
ewotICBjb25zdCBNYXRjaGVyPHdjaGFyX3QqPiBtMSA9IEhhc1N1YnN0cihMImZvbyIpOwotICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KEwiSSBsb3ZlIGZvb2Qu
IikpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoY29uc3RfY2FzdDx3Y2hhcl90Kj4oTCJ0
b2ZvIikpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNvbnN0IE1h
dGNoZXI8Y29uc3Qgd2NoYXJfdCo+IG0yID0gSGFzU3Vic3RyKEwiZm9vIik7Ci0gIEVYUEVDVF9U
UlVFKG0yLk1hdGNoZXMoTCJJIGxvdmUgZm9vZC4iKSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRj
aGVzKEwidG9mbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0yLk1hdGNoZXMoTlVMTCkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IEhhc1N1YnN0cihzKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVT
VChHbG9iYWxXaWRlSGFzU3Vic3RyVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8
IDo6d3N0cmluZz4gbSA9IEhhc1N1YnN0cihMImZvb1xuXCIiKTsKLSAgRVhQRUNUX0VRKCJoYXMg
c3Vic3RyaW5nIExcImZvb1xcblxcXCJcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMg
U3RhcnRzV2l0aChzKS4KLQotVEVTVChHbG9iYWxXaWRlU3RhcnRzV2l0aFRlc3QsIE1hdGNoZXNT
dHJpbmdXaXRoR2l2ZW5QcmVmaXgpIHsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCB3Y2hhcl90Kj4g
bTEgPSBTdGFydHNXaXRoKDo6d3N0cmluZyhMIiIpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKEwiIikpOwotICBFWFBFQ1RfRkFM
U0UobTEuTWF0Y2hlcyhOVUxMKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCA6OndzdHJpbmcm
PiBtMiA9IFN0YXJ0c1dpdGgoTCJIaSIpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiSGki
KSk7Ci0gIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoTCJIaSBIaSEiKSk7Ci0gIEVYUEVDVF9UUlVF
KG0yLk1hdGNoZXMoTCJIaWdoIikpOwotICBFWFBFQ1RfRkFMU0UobTIuTWF0Y2hlcyhMIkgiKSk7
Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiIEhpIikpOwotfQotCi1URVNUKEdsb2JhbFdp
ZGVTdGFydHNXaXRoVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3
c3RyaW5nPiBtID0gU3RhcnRzV2l0aChMIkhpIik7Ci0gIEVYUEVDVF9FUSgic3RhcnRzIHdpdGgg
TFwiSGlcIiIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgRW5kc1dpdGgocykuCi0KLVRF
U1QoR2xvYmFsV2lkZUVuZHNXaXRoVGVzdCwgTWF0Y2hlc1N0cmluZ1dpdGhHaXZlblN1ZmZpeCkg
ewotICBjb25zdCBNYXRjaGVyPGNvbnN0IHdjaGFyX3QqPiBtMSA9IEVuZHNXaXRoKEwiIik7Ci0g
IEVYUEVDVF9UUlVFKG0xLk1hdGNoZXMoTCJIaSIpKTsKLSAgRVhQRUNUX1RSVUUobTEuTWF0Y2hl
cyhMIiIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0xLk1hdGNoZXMoTlVMTCkpOwotCi0gIGNvbnN0IE1h
dGNoZXI8Y29uc3QgOjp3c3RyaW5nJj4gbTIgPSBFbmRzV2l0aCg6OndzdHJpbmcoTCJIaSIpKTsK
LSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcyhMIkhpIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRj
aGVzKEwiV293IEhpIEhpIikpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKEwiU3VwZXIgSGki
KSk7Ci0gIEVYUEVDVF9GQUxTRShtMi5NYXRjaGVzKEwiaSIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0y
Lk1hdGNoZXMoTCJIaSAiKSk7Ci19Ci0KLVRFU1QoR2xvYmFsV2lkZUVuZHNXaXRoVGVzdCwgQ2Fu
RGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8Y29uc3QgOjp3c3RyaW5nPiBtID0gRW5kc1dpdGgo
TCJIaSIpOwotICBFWFBFQ1RfRVEoImVuZHMgd2l0aCBMXCJIaVwiIiwgRGVzY3JpYmUobSkpOwot
fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0KLXR5cGVkZWYgOjp0
ZXN0aW5nOjp0dXBsZTxsb25nLCBpbnQ+IFR1cGxlMjsgIC8vIE5PTElOVAotCi0vLyBUZXN0cyB0
aGF0IEVxKCkgbWF0Y2hlcyBhIDItdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGZpZWxkID09IHRoZQot
Ly8gc2Vjb25kIGZpZWxkLgotVEVTVChFcTJUZXN0LCBNYXRjaGVzRXF1YWxBcmd1bWVudHMpIHsK
LSAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gRXEoKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRj
aGVzKFR1cGxlMig1TCwgNSkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhUdXBsZTIoNUws
IDYpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRXEoKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5
LgotVEVTVChFcTJUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCBUdXBs
ZTImPiBtID0gRXEoKTsKLSAgRVhQRUNUX0VRKCJhcmUgYW4gZXF1YWwgcGFpciIsIERlc2NyaWJl
KG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZSgpIG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRo
ZSBmaXJzdCBmaWVsZCA+PSB0aGUKLS8vIHNlY29uZCBmaWVsZC4KLVRFU1QoR2UyVGVzdCwgTWF0
Y2hlc0dyZWF0ZXJUaGFuT3JFcXVhbEFyZ3VtZW50cykgewotICBNYXRjaGVyPGNvbnN0IFR1cGxl
MiY+IG0gPSBHZSgpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA0KSkpOwot
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA1KSkpOwotICBFWFBFQ1RfRkFMU0Uo
bS5NYXRjaGVzKFR1cGxlMig1TCwgNikpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHZSgpIGRlc2Ny
aWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEdlMlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewot
ICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBHZSgpOwotICBFWFBFQ1RfRVEoImFyZSBhIHBh
aXIgd2hlcmUgdGhlIGZpcnN0ID49IHRoZSBzZWNvbmQiLCBEZXNjcmliZShtKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgR3QoKSBtYXRjaGVzIGEgMi10dXBsZSB3aGVyZSB0aGUgZmlyc3QgZmllbGQg
PiB0aGUKLS8vIHNlY29uZCBmaWVsZC4KLVRFU1QoR3QyVGVzdCwgTWF0Y2hlc0dyZWF0ZXJUaGFu
QXJndW1lbnRzKSB7Ci0gIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9IEd0KCk7Ci0gIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDQpKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoVHVwbGUyKDVMLCA1KSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFR1cGxlMig1TCwg
NikpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHdCgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHku
Ci1URVNUKEd0MlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IFR1cGxl
MiY+IG0gPSBHdCgpOwotICBFWFBFQ1RfRVEoImFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0ID4g
dGhlIHNlY29uZCIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBMZSgpIG1hdGNo
ZXMgYSAyLXR1cGxlIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCA8PSB0aGUKLS8vIHNlY29uZCBmaWVs
ZC4KLVRFU1QoTGUyVGVzdCwgTWF0Y2hlc0xlc3NUaGFuT3JFcXVhbEFyZ3VtZW50cykgewotICBN
YXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBMZSgpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMo
VHVwbGUyKDVMLCA2KSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA1KSkp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKFR1cGxlMig1TCwgNCkpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBMZSgpIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKExlMlRlc3QsIENh
bkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBMZSgpOwotICBF
WFBFQ1RfRVEoImFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IDw9IHRoZSBzZWNvbmQiLCBEZXNj
cmliZShtKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgTHQoKSBtYXRjaGVzIGEgMi10dXBsZSB3aGVy
ZSB0aGUgZmlyc3QgZmllbGQgPCB0aGUKLS8vIHNlY29uZCBmaWVsZC4KLVRFU1QoTHQyVGVzdCwg
TWF0Y2hlc0xlc3NUaGFuQXJndW1lbnRzKSB7Ci0gIE1hdGNoZXI8Y29uc3QgVHVwbGUyJj4gbSA9
IEx0KCk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDYpKSk7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoVHVwbGUyKDVMLCA1KSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKFR1cGxlMig1TCwgNCkpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBMdCgpIGRlc2NyaWJlcyBp
dHNlbGYgcHJvcGVybHkuCi1URVNUKEx0MlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRj
aGVyPGNvbnN0IFR1cGxlMiY+IG0gPSBMdCgpOwotICBFWFBFQ1RfRVEoImFyZSBhIHBhaXIgd2hl
cmUgdGhlIGZpcnN0IDwgdGhlIHNlY29uZCIsIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBOZSgpIG1hdGNoZXMgYSAyLXR1cGxlIHdoZXJlIHRoZSBmaXJzdCBmaWVsZCAhPSB0aGUK
LS8vIHNlY29uZCBmaWVsZC4KLVRFU1QoTmUyVGVzdCwgTWF0Y2hlc1VuZXF1YWxBcmd1bWVudHMp
IHsKLSAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gTmUoKTsKLSAgRVhQRUNUX1RSVUUobS5N
YXRjaGVzKFR1cGxlMig1TCwgNikpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKFR1cGxlMig1
TCwgNCkpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhUdXBsZTIoNUwsIDUpKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgTmUoKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChOZTJU
ZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxjb25zdCBUdXBsZTImPiBtID0gTmUo
KTsKLSAgRVhQRUNUX0VRKCJhcmUgYW4gdW5lcXVhbCBwYWlyIiwgRGVzY3JpYmUobSkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IE5vdChtKSBtYXRjaGVzIGFueSB2YWx1ZSB0aGF0IGRvZXNuJ3QgbWF0
Y2ggbS4KLVRFU1QoTm90VGVzdCwgTmVnYXRlc01hdGNoZXIpIHsKLSAgTWF0Y2hlcjxpbnQ+IG07
Ci0gIG0gPSBOb3QoRXEoMikpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMykpOwotICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKDIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBOb3QobSkgZGVzY3Jp
YmVzIGl0c2VsZiBwcm9wZXJseS4KLVRFU1QoTm90VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0g
IE1hdGNoZXI8aW50PiBtID0gTm90KEVxKDUpKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBlcXVhbCB0
byA1IiwgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IG1vbm9tb3JwaGljIG1hdGNo
ZXJzIGFyZSBzYWZlbHkgY2FzdCBieSB0aGUgTm90IG1hdGNoZXIuCi1URVNUKE5vdFRlc3QsIE5v
dE1hdGNoZXJTYWZlbHlDYXN0c01vbm9tb3JwaGljTWF0Y2hlcnMpIHsKLSAgLy8gZ3JlYXRlcl90
aGFuXzUgaXMgYSBtb25vbW9ycGhpYyBtYXRjaGVyLgotICBNYXRjaGVyPGludD4gZ3JlYXRlcl90
aGFuXzUgPSBHdCg1KTsKLQotICBNYXRjaGVyPGNvbnN0IGludCY+IG0gPSBOb3QoZ3JlYXRlcl90
aGFuXzUpOwotICBNYXRjaGVyPGludCY+IG0yID0gTm90KGdyZWF0ZXJfdGhhbl81KTsKLSAgTWF0
Y2hlcjxpbnQmPiBtMyA9IE5vdChtKTsKLX0KLQotLy8gSGVscGVyIHRvIGFsbG93IGVhc3kgdGVz
dGluZyBvZiBBbGxPZiBtYXRjaGVycyB3aXRoIG51bSBwYXJhbWV0ZXJzLgotdm9pZCBBbGxPZk1h
dGNoZXMoaW50IG51bSwgY29uc3QgTWF0Y2hlcjxpbnQ+JiBtKSB7Ci0gIFNDT1BFRF9UUkFDRShE
ZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygwKSk7Ci0gIGZvciAoaW50IGkg
PSAxOyBpIDw9IG51bTsgKytpKSB7Ci0gICAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhpKSk7Ci0g
IH0KLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG51bSArIDEpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBBbGxPZihtMSwgLi4uLCBtbikgbWF0Y2hlcyBhbnkgdmFsdWUgdGhhdCBtYXRjaGVzIGFsbCBv
ZgotLy8gdGhlIGdpdmVuIG1hdGNoZXJzLgotVEVTVChBbGxPZlRlc3QsIE1hdGNoZXNXaGVuQWxs
TWF0Y2gpIHsKLSAgTWF0Y2hlcjxpbnQ+IG07Ci0gIG0gPSBBbGxPZihMZSgyKSwgR2UoMSkpOwot
ICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMikp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDApKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cygzKSk7Ci0KLSAgbSA9IEFsbE9mKEd0KDApLCBOZSgxKSwgTmUoMikpOwotICBFWFBFQ1RfVFJV
RShtLk1hdGNoZXMoMykpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDIpKTsKLSAgRVhQRUNU
X0ZBTFNFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMCkpOwotCi0g
IG0gPSBBbGxPZihHdCgwKSwgTmUoMSksIE5lKDIpLCBOZSgzKSk7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyg0KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMykpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKDIpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoMCkpOwotCi0gIG0gPSBBbGxPZihHZSgwKSwgTHQoMTApLCBOZSgz
KSwgTmUoNSksIE5lKDcpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDApKTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygzKSk7Ci0KLSAg
Ly8gVGhlIGZvbGxvd2luZyB0ZXN0cyBmb3IgdmFyeWluZyBudW1iZXIgb2Ygc3ViLW1hdGNoZXJz
LiBEdWUgdG8gdGhlIHdheQotICAvLyB0aGUgc3ViLW1hdGNoZXJzIGFyZSBoYW5kbGVkIGl0IGlz
IGVub3VnaCB0byB0ZXN0IGV2ZXJ5IHN1Yi1tYXRjaGVyIG9uY2UKLSAgLy8gd2l0aCBzdWItbWF0
Y2hlcnMgdXNpbmcgdGhlIHNhbWUgbWF0Y2hlciB0eXBlLiBWYXJ5aW5nIG1hdGNoZXIgdHlwZXMg
YXJlCi0gIC8vIGNoZWNrZWQgZm9yIGFib3ZlLgotICBBbGxPZk1hdGNoZXMoMiwgQWxsT2YoTmUo
MSksIE5lKDIpKSk7Ci0gIEFsbE9mTWF0Y2hlcygzLCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMp
KSk7Ci0gIEFsbE9mTWF0Y2hlcyg0LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSkp
OwotICBBbGxPZk1hdGNoZXMoNSwgQWxsT2YoTmUoMSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5l
KDUpKSk7Ci0gIEFsbE9mTWF0Y2hlcyg2LCBBbGxPZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0
KSwgTmUoNSksIE5lKDYpKSk7Ci0gIEFsbE9mTWF0Y2hlcyg3LCBBbGxPZihOZSgxKSwgTmUoMiks
IE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYpLCBOZSg3KSkpOwotICBBbGxPZk1hdGNoZXMoOCwg
QWxsT2YoTmUoMSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwgTmUoNyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBOZSg4KSkpOwotICBBbGxPZk1hdGNoZXMoOSwgQWxsT2Yo
TmUoMSksIE5lKDIpLCBOZSgzKSwgTmUoNCksIE5lKDUpLCBOZSg2KSwgTmUoNyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBOZSg4KSwgTmUoOSkpKTsKLSAgQWxsT2ZNYXRjaGVzKDEwLCBBbGxP
ZihOZSgxKSwgTmUoMiksIE5lKDMpLCBOZSg0KSwgTmUoNSksIE5lKDYpLCBOZSg3KSwgTmUoOCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTmUoOSksIE5lKDEwKSkpOwotfQotCi0jaWYgR1RF
U1RfTEFOR19DWFgxMQotLy8gVGVzdHMgdGhlIHZhcmlhZGljIHZlcnNpb24gb2YgdGhlIEFsbE9m
TWF0Y2hlci4KLVRFU1QoQWxsT2ZUZXN0LCBWYXJpYWRpY01hdGNoZXNXaGVuQWxsTWF0Y2gpIHsK
LSAgLy8gTWFrZSBzdXJlIEFsbE9mIGlzIGRlZmluZWQgaW4gdGhlIHJpZ2h0IG5hbWVzcGFjZSBh
bmQgZG9lcyBub3QgZGVwZW5kIG9uCi0gIC8vIEFETC4KLSAgOjp0ZXN0aW5nOjpBbGxPZigxLCAy
LCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEpOwotICBNYXRjaGVyPGludD4gbSA9IEFsbE9m
KE5lKDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNiksIE5lKDcpLCBOZSg4KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBOZSg5KSwgTmUoMTApLCBOZSgxMSkpOwotICBFWFBF
Q1RfVEhBVChEZXNjcmliZShtKSwgRW5kc1dpdGgoImFuZCAoaXNuJ3QgZXF1YWwgdG8gMTEpKSkp
KSkpKSkpIikpOwotICBBbGxPZk1hdGNoZXMoMTEsIG0pOwotICBBbGxPZk1hdGNoZXMoNTAsIEFs
bE9mKE5lKDEpLCBOZSgyKSwgTmUoMyksIE5lKDQpLCBOZSg1KSwgTmUoNiksIE5lKDcpLCBOZSg4
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOZSg5KSwgTmUoMTApLCBOZSgxMSksIE5lKDEy
KSwgTmUoMTMpLCBOZSgxNCksIE5lKDE1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOZSgx
NiksIE5lKDE3KSwgTmUoMTgpLCBOZSgxOSksIE5lKDIwKSwgTmUoMjEpLCBOZSgyMiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgTmUoMjMpLCBOZSgyNCksIE5lKDI1KSwgTmUoMjYpLCBOZSgy
NyksIE5lKDI4KSwgTmUoMjkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5lKDMwKSwgTmUo
MzEpLCBOZSgzMiksIE5lKDMzKSwgTmUoMzQpLCBOZSgzNSksIE5lKDM2KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBOZSgzNyksIE5lKDM4KSwgTmUoMzkpLCBOZSg0MCksIE5lKDQxKSwgTmUo
NDIpLCBOZSg0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgTmUoNDQpLCBOZSg0NSksIE5l
KDQ2KSwgTmUoNDcpLCBOZSg0OCksIE5lKDQ5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBO
ZSg1MCkpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0KLS8vIFRlc3RzIHRo
YXQgQWxsT2YobTEsIC4uLiwgbW4pIGRlc2NyaWJlcyBpdHNlbGYgcHJvcGVybHkuCi1URVNUKEFs
bE9mVGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8aW50PiBtOwotICBtID0gQWxs
T2YoTGUoMiksIEdlKDEpKTsKLSAgRVhQRUNUX0VRKCIoaXMgPD0gMikgYW5kIChpcyA+PSAxKSIs
IERlc2NyaWJlKG0pKTsKLQotICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSk7Ci0gIEVY
UEVDVF9FUSgiKGlzID4gMCkgYW5kICIKLSAgICAgICAgICAgICIoKGlzbid0IGVxdWFsIHRvIDEp
IGFuZCAiCi0gICAgICAgICAgICAiKGlzbid0IGVxdWFsIHRvIDIpKSIsCi0gICAgICAgICAgICBE
ZXNjcmliZShtKSk7Ci0KLQotICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSwgTmUoMykp
OwotICBFWFBFQ1RfRVEoIigoaXMgPiAwKSBhbmQgIgotICAgICAgICAgICAgIihpc24ndCBlcXVh
bCB0byAxKSkgYW5kICIKLSAgICAgICAgICAgICIoKGlzbid0IGVxdWFsIHRvIDIpIGFuZCAiCi0g
ICAgICAgICAgICAiKGlzbid0IGVxdWFsIHRvIDMpKSIsCi0gICAgICAgICAgICBEZXNjcmliZSht
KSk7Ci0KLQotICBtID0gQWxsT2YoR2UoMCksIEx0KDEwKSwgTmUoMyksIE5lKDUpLCBOZSg3KSk7
Ci0gIEVYUEVDVF9FUSgiKChpcyA+PSAwKSBhbmQgIgotICAgICAgICAgICAgIihpcyA8IDEwKSkg
YW5kICIKLSAgICAgICAgICAgICIoKGlzbid0IGVxdWFsIHRvIDMpIGFuZCAiCi0gICAgICAgICAg
ICAiKChpc24ndCBlcXVhbCB0byA1KSBhbmQgIgotICAgICAgICAgICAgIihpc24ndCBlcXVhbCB0
byA3KSkpIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBB
bGxPZihtMSwgLi4uLCBtbikgZGVzY3JpYmVzIGl0cyBuZWdhdGlvbiBwcm9wZXJseS4KLVRFU1Qo
QWxsT2ZUZXN0LCBDYW5EZXNjcmliZU5lZ2F0aW9uKSB7Ci0gIE1hdGNoZXI8aW50PiBtOwotICBt
ID0gQWxsT2YoTGUoMiksIEdlKDEpKTsKLSAgRVhQRUNUX0VRKCIoaXNuJ3QgPD0gMikgb3IgIgot
ICAgICAgICAgICAgIihpc24ndCA+PSAxKSIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9u
KG0pKTsKLQotICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSk7Ci0gIEVYUEVDVF9FUSgi
KGlzbid0ID4gMCkgb3IgIgotICAgICAgICAgICAgIigoaXMgZXF1YWwgdG8gMSkgb3IgIgotICAg
ICAgICAgICAgIihpcyBlcXVhbCB0byAyKSkiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlv
bihtKSk7Ci0KLQotICBtID0gQWxsT2YoR3QoMCksIE5lKDEpLCBOZSgyKSwgTmUoMykpOwotICBF
WFBFQ1RfRVEoIigoaXNuJ3QgPiAwKSBvciAiCi0gICAgICAgICAgICAiKGlzIGVxdWFsIHRvIDEp
KSBvciAiCi0gICAgICAgICAgICAiKChpcyBlcXVhbCB0byAyKSBvciAiCi0gICAgICAgICAgICAi
KGlzIGVxdWFsIHRvIDMpKSIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLQot
Ci0gIG0gPSBBbGxPZihHZSgwKSwgTHQoMTApLCBOZSgzKSwgTmUoNSksIE5lKDcpKTsKLSAgRVhQ
RUNUX0VRKCIoKGlzbid0ID49IDApIG9yICIKLSAgICAgICAgICAgICIoaXNuJ3QgPCAxMCkpIG9y
ICIKLSAgICAgICAgICAgICIoKGlzIGVxdWFsIHRvIDMpIG9yICIKLSAgICAgICAgICAgICIoKGlz
IGVxdWFsIHRvIDUpIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1YWwgdG8gNykpKSIsCi0gICAg
ICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtb25vbW9y
cGhpYyBtYXRjaGVycyBhcmUgc2FmZWx5IGNhc3QgYnkgdGhlIEFsbE9mIG1hdGNoZXIuCi1URVNU
KEFsbE9mVGVzdCwgQWxsT2ZNYXRjaGVyU2FmZWx5Q2FzdHNNb25vbW9ycGhpY01hdGNoZXJzKSB7
Ci0gIC8vIGdyZWF0ZXJfdGhhbl81IGFuZCBsZXNzX3RoYW5fMTAgYXJlIG1vbm9tb3JwaGljIG1h
dGNoZXJzLgotICBNYXRjaGVyPGludD4gZ3JlYXRlcl90aGFuXzUgPSBHdCg1KTsKLSAgTWF0Y2hl
cjxpbnQ+IGxlc3NfdGhhbl8xMCA9IEx0KDEwKTsKLQotICBNYXRjaGVyPGNvbnN0IGludCY+IG0g
PSBBbGxPZihncmVhdGVyX3RoYW5fNSwgbGVzc190aGFuXzEwKTsKLSAgTWF0Y2hlcjxpbnQmPiBt
MiA9IEFsbE9mKGdyZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTApOwotICBNYXRjaGVyPGludCY+
IG0zID0gQWxsT2YoZ3JlYXRlcl90aGFuXzUsIG0yKTsKLQotICAvLyBUZXN0cyB0aGF0IEJvdGhP
ZiB3b3JrcyB3aGVuIGNvbXBvc2luZyBpdHNlbGYuCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbTQg
PSBBbGxPZihncmVhdGVyX3RoYW5fNSwgbGVzc190aGFuXzEwLCBsZXNzX3RoYW5fMTApOwotICBN
YXRjaGVyPGludCY+IG01ID0gQWxsT2YoZ3JlYXRlcl90aGFuXzUsIGxlc3NfdGhhbl8xMCwgbGVz
c190aGFuXzEwKTsKLX0KLQotVEVTVChBbGxPZlRlc3QsIEV4cGxhaW5zUmVzdWx0KSB7Ci0gIE1h
dGNoZXI8aW50PiBtOwotCi0gIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBCb3RoIG1hdGNoZXJzIG5l
ZWQgdG8gZXhwbGFpbi4gIFRoZSBzZWNvbmQKLSAgLy8gbWF0Y2hlciBkb2Vzbid0IGdpdmUgYW4g
ZXhwbGFuYXRpb24sIHNvIG9ubHkgdGhlIGZpcnN0IG1hdGNoZXIncwotICAvLyBleHBsYW5hdGlv
biBpcyBwcmludGVkLgotICBtID0gQWxsT2YoR3JlYXRlclRoYW4oMTApLCBMdCgzMCkpOwotICBF
WFBFQ1RfRVEoIndoaWNoIGlzIDE1IG1vcmUgdGhhbiAxMCIsIEV4cGxhaW4obSwgMjUpKTsKLQot
ICAvLyBTdWNjZXNzZnVsIG1hdGNoLiAgQm90aCBtYXRjaGVycyBuZWVkIHRvIGV4cGxhaW4uCi0g
IG0gPSBBbGxPZihHcmVhdGVyVGhhbigxMCksIEdyZWF0ZXJUaGFuKDIwKSk7Ci0gIEVYUEVDVF9F
USgid2hpY2ggaXMgMjAgbW9yZSB0aGFuIDEwLCBhbmQgd2hpY2ggaXMgMTAgbW9yZSB0aGFuIDIw
IiwKLSAgICAgICAgICAgIEV4cGxhaW4obSwgMzApKTsKLQotICAvLyBTdWNjZXNzZnVsIG1hdGNo
LiAgQWxsIG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4gIFRoZSBzZWNvbmQKLSAgLy8gbWF0Y2hl
ciBkb2Vzbid0IGdpdmVuIGFuIGV4cGxhbmF0aW9uLgotICBtID0gQWxsT2YoR3JlYXRlclRoYW4o
MTApLCBMdCgzMCksIEdyZWF0ZXJUaGFuKDIwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgMTUg
bW9yZSB0aGFuIDEwLCBhbmQgd2hpY2ggaXMgNSBtb3JlIHRoYW4gMjAiLAotICAgICAgICAgICAg
RXhwbGFpbihtLCAyNSkpOwotCi0gIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guICBBbGwgbWF0Y2hlcnMg
bmVlZCB0byBleHBsYWluLgotICBtID0gQWxsT2YoR3JlYXRlclRoYW4oMTApLCBHcmVhdGVyVGhh
bigyMCksIEdyZWF0ZXJUaGFuKDMwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgMzAgbW9yZSB0
aGFuIDEwLCBhbmQgd2hpY2ggaXMgMjAgbW9yZSB0aGFuIDIwLCAiCi0gICAgICAgICAgICAiYW5k
IHdoaWNoIGlzIDEwIG1vcmUgdGhhbiAzMCIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIDQwKSk7
Ci0KLSAgLy8gRmFpbGVkIG1hdGNoLiAgVGhlIGZpcnN0IG1hdGNoZXIsIHdoaWNoIGZhaWxlZCwg
bmVlZHMgdG8KLSAgLy8gZXhwbGFpbi4KLSAgbSA9IEFsbE9mKEdyZWF0ZXJUaGFuKDEwKSwgR3Jl
YXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyA1IGxlc3MgdGhhbiAxMCIsIEV4
cGxhaW4obSwgNSkpOwotCi0gIC8vIEZhaWxlZCBtYXRjaC4gIFRoZSBzZWNvbmQgbWF0Y2hlciwg
d2hpY2ggZmFpbGVkLCBuZWVkcyB0bwotICAvLyBleHBsYWluLiAgU2luY2UgaXQgZG9lc24ndCBn
aXZlbiBhbiBleHBsYW5hdGlvbiwgbm90aGluZyBpcwotICAvLyBwcmludGVkLgotICBtID0gQWxs
T2YoR3JlYXRlclRoYW4oMTApLCBMdCgzMCkpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwg
NDApKTsKLQotICAvLyBGYWlsZWQgbWF0Y2guICBUaGUgc2Vjb25kIG1hdGNoZXIsIHdoaWNoIGZh
aWxlZCwgbmVlZHMgdG8KLSAgLy8gZXhwbGFpbi4KLSAgbSA9IEFsbE9mKEdyZWF0ZXJUaGFuKDEw
KSwgR3JlYXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyA1IGxlc3MgdGhhbiAy
MCIsIEV4cGxhaW4obSwgMTUpKTsKLX0KLQotLy8gSGVscGVyIHRvIGFsbG93IGVhc3kgdGVzdGlu
ZyBvZiBBbnlPZiBtYXRjaGVycyB3aXRoIG51bSBwYXJhbWV0ZXJzLgotdm9pZCBBbnlPZk1hdGNo
ZXMoaW50IG51bSwgY29uc3QgTWF0Y2hlcjxpbnQ+JiBtKSB7Ci0gIFNDT1BFRF9UUkFDRShEZXNj
cmliZShtKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMCkpOwotICBmb3IgKGludCBpID0g
MTsgaSA8PSBudW07ICsraSkgewotICAgIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhpKSk7Ci0gIH0K
LSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhudW0gKyAxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
QW55T2YobTEsIC4uLiwgbW4pIG1hdGNoZXMgYW55IHZhbHVlIHRoYXQgbWF0Y2hlcyBhdAotLy8g
bGVhc3Qgb25lIG9mIHRoZSBnaXZlbiBtYXRjaGVycy4KLVRFU1QoQW55T2ZUZXN0LCBNYXRjaGVz
V2hlbkFueU1hdGNoZXMpIHsKLSAgTWF0Y2hlcjxpbnQ+IG07Ci0gIG0gPSBBbnlPZihMZSgxKSwg
R2UoMykpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMoNCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDIpKTsKLQotICBtID0gQW55T2Yo
THQoMCksIEVxKDEpLCBFcSgyKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygtMSkpOwotICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMikpOwot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDApKTsKLQotICBtID0gQW55T2YoTHQoMCksIEVxKDEp
LCBFcSgyKSwgRXEoMykpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoLTEpKTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKDEpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKDIpKTsKLSAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKDMpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygwKSk7Ci0K
LSAgbSA9IEFueU9mKExlKDApLCBHdCgxMCksIDMsIDUsIDcpOwotICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMoMCkpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMTEpKTsKLSAgRVhQRUNUX1RSVUUo
bS5NYXRjaGVzKDMpKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygyKSk7Ci0KLSAgLy8gVGhl
IGZvbGxvd2luZyB0ZXN0cyBmb3IgdmFyeWluZyBudW1iZXIgb2Ygc3ViLW1hdGNoZXJzLiBEdWUg
dG8gdGhlIHdheQotICAvLyB0aGUgc3ViLW1hdGNoZXJzIGFyZSBoYW5kbGVkIGl0IGlzIGVub3Vn
aCB0byB0ZXN0IGV2ZXJ5IHN1Yi1tYXRjaGVyIG9uY2UKLSAgLy8gd2l0aCBzdWItbWF0Y2hlcnMg
dXNpbmcgdGhlIHNhbWUgbWF0Y2hlciB0eXBlLiBWYXJ5aW5nIG1hdGNoZXIgdHlwZXMgYXJlCi0g
IC8vIGNoZWNrZWQgZm9yIGFib3ZlLgotICBBbnlPZk1hdGNoZXMoMiwgQW55T2YoMSwgMikpOwot
ICBBbnlPZk1hdGNoZXMoMywgQW55T2YoMSwgMiwgMykpOwotICBBbnlPZk1hdGNoZXMoNCwgQW55
T2YoMSwgMiwgMywgNCkpOwotICBBbnlPZk1hdGNoZXMoNSwgQW55T2YoMSwgMiwgMywgNCwgNSkp
OwotICBBbnlPZk1hdGNoZXMoNiwgQW55T2YoMSwgMiwgMywgNCwgNSwgNikpOwotICBBbnlPZk1h
dGNoZXMoNywgQW55T2YoMSwgMiwgMywgNCwgNSwgNiwgNykpOwotICBBbnlPZk1hdGNoZXMoOCwg
QW55T2YoMSwgMiwgMywgNCwgNSwgNiwgNywgOCkpOwotICBBbnlPZk1hdGNoZXMoOSwgQW55T2Yo
MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSkpOwotICBBbnlPZk1hdGNoZXMoMTAsIEFueU9mKDEs
IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKSk7Ci19Ci0KLSNpZiBHVEVTVF9MQU5HX0NYWDEx
Ci0vLyBUZXN0cyB0aGUgdmFyaWFkaWMgdmVyc2lvbiBvZiB0aGUgQW55T2ZNYXRjaGVyLgotVEVT
VChBbnlPZlRlc3QsIFZhcmlhZGljTWF0Y2hlc1doZW5BbnlNYXRjaGVzKSB7Ci0gIC8vIEFsc28g
bWFrZSBzdXJlIEFueU9mIGlzIGRlZmluZWQgaW4gdGhlIHJpZ2h0IG5hbWVzcGFjZSBhbmQgZG9l
cyBub3QgZGVwZW5kCi0gIC8vIG9uIEFETC4KLSAgTWF0Y2hlcjxpbnQ+IG0gPSA6OnRlc3Rpbmc6
OkFueU9mKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSk7Ci0KLSAgRVhQRUNUX1RI
QVQoRGVzY3JpYmUobSksIEVuZHNXaXRoKCJvciAoaXMgZXF1YWwgdG8gMTEpKSkpKSkpKSkpIikp
OwotICBBbnlPZk1hdGNoZXMoMTEsIG0pOwotICBBbnlPZk1hdGNoZXMoNTAsIEFueU9mKDEsIDIs
IDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgIDExLCAx
MiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDks
IDUwKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfTEFOR19DWFgxMQotCi0vLyBUZXN0cyB0aGF0
IEFueU9mKG0xLCAuLi4sIG1uKSBkZXNjcmliZXMgaXRzZWxmIHByb3Blcmx5LgotVEVTVChBbnlP
ZlRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGludD4gbTsKLSAgbSA9IEFueU9m
KExlKDEpLCBHZSgzKSk7Ci0gIEVYUEVDVF9FUSgiKGlzIDw9IDEpIG9yIChpcyA+PSAzKSIsCi0g
ICAgICAgICAgICBEZXNjcmliZShtKSk7Ci0KLSAgbSA9IEFueU9mKEx0KDApLCBFcSgxKSwgRXEo
MikpOwotICBFWFBFQ1RfRVEoIihpcyA8IDApIG9yICIKLSAgICAgICAgICAgICIoKGlzIGVxdWFs
IHRvIDEpIG9yIChpcyBlcXVhbCB0byAyKSkiLAotICAgICAgICAgICAgRGVzY3JpYmUobSkpOwot
Ci0gIG0gPSBBbnlPZihMdCgwKSwgRXEoMSksIEVxKDIpLCBFcSgzKSk7Ci0gIEVYUEVDVF9FUSgi
KChpcyA8IDApIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1YWwgdG8gMSkpIG9yICIKLSAgICAg
ICAgICAgICIoKGlzIGVxdWFsIHRvIDIpIG9yICIKLSAgICAgICAgICAgICIoaXMgZXF1YWwgdG8g
MykpIiwKLSAgICAgICAgICAgIERlc2NyaWJlKG0pKTsKLQotICBtID0gQW55T2YoTGUoMCksIEd0
KDEwKSwgMywgNSwgNyk7Ci0gIEVYUEVDVF9FUSgiKChpcyA8PSAwKSBvciAiCi0gICAgICAgICAg
ICAiKGlzID4gMTApKSBvciAiCi0gICAgICAgICAgICAiKChpcyBlcXVhbCB0byAzKSBvciAiCi0g
ICAgICAgICAgICAiKChpcyBlcXVhbCB0byA1KSBvciAiCi0gICAgICAgICAgICAiKGlzIGVxdWFs
IHRvIDcpKSkiLAotICAgICAgICAgICAgRGVzY3JpYmUobSkpOwotfQotCi0vLyBUZXN0cyB0aGF0
IEFueU9mKG0xLCAuLi4sIG1uKSBkZXNjcmliZXMgaXRzIG5lZ2F0aW9uIHByb3Blcmx5LgotVEVT
VChBbnlPZlRlc3QsIENhbkRlc2NyaWJlTmVnYXRpb24pIHsKLSAgTWF0Y2hlcjxpbnQ+IG07Ci0g
IG0gPSBBbnlPZihMZSgxKSwgR2UoMykpOwotICBFWFBFQ1RfRVEoIihpc24ndCA8PSAxKSBhbmQg
KGlzbid0ID49IDMpIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotCi0gIG0g
PSBBbnlPZihMdCgwKSwgRXEoMSksIEVxKDIpKTsKLSAgRVhQRUNUX0VRKCIoaXNuJ3QgPCAwKSBh
bmQgIgotICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gMSkgYW5kIChpc24ndCBlcXVhbCB0
byAyKSkiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci0KLSAgbSA9IEFueU9m
KEx0KDApLCBFcSgxKSwgRXEoMiksIEVxKDMpKTsKLSAgRVhQRUNUX0VRKCIoKGlzbid0IDwgMCkg
YW5kICIKLSAgICAgICAgICAgICIoaXNuJ3QgZXF1YWwgdG8gMSkpIGFuZCAiCi0gICAgICAgICAg
ICAiKChpc24ndCBlcXVhbCB0byAyKSBhbmQgIgotICAgICAgICAgICAgIihpc24ndCBlcXVhbCB0
byAzKSkiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci0KLSAgbSA9IEFueU9m
KExlKDApLCBHdCgxMCksIDMsIDUsIDcpOwotICBFWFBFQ1RfRVEoIigoaXNuJ3QgPD0gMCkgYW5k
ICIKLSAgICAgICAgICAgICIoaXNuJ3QgPiAxMCkpIGFuZCAiCi0gICAgICAgICAgICAiKChpc24n
dCBlcXVhbCB0byAzKSBhbmQgIgotICAgICAgICAgICAgIigoaXNuJ3QgZXF1YWwgdG8gNSkgYW5k
ICIKLSAgICAgICAgICAgICIoaXNuJ3QgZXF1YWwgdG8gNykpKSIsCi0gICAgICAgICAgICBEZXNj
cmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtb25vbW9ycGhpYyBtYXRjaGVy
cyBhcmUgc2FmZWx5IGNhc3QgYnkgdGhlIEFueU9mIG1hdGNoZXIuCi1URVNUKEFueU9mVGVzdCwg
QW55T2ZNYXRjaGVyU2FmZWx5Q2FzdHNNb25vbW9ycGhpY01hdGNoZXJzKSB7Ci0gIC8vIGdyZWF0
ZXJfdGhhbl81IGFuZCBsZXNzX3RoYW5fMTAgYXJlIG1vbm9tb3JwaGljIG1hdGNoZXJzLgotICBN
YXRjaGVyPGludD4gZ3JlYXRlcl90aGFuXzUgPSBHdCg1KTsKLSAgTWF0Y2hlcjxpbnQ+IGxlc3Nf
dGhhbl8xMCA9IEx0KDEwKTsKLQotICBNYXRjaGVyPGNvbnN0IGludCY+IG0gPSBBbnlPZihncmVh
dGVyX3RoYW5fNSwgbGVzc190aGFuXzEwKTsKLSAgTWF0Y2hlcjxpbnQmPiBtMiA9IEFueU9mKGdy
ZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTApOwotICBNYXRjaGVyPGludCY+IG0zID0gQW55T2Yo
Z3JlYXRlcl90aGFuXzUsIG0yKTsKLQotICAvLyBUZXN0cyB0aGF0IEVpdGhlck9mIHdvcmtzIHdo
ZW4gY29tcG9zaW5nIGl0c2VsZi4KLSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtNCA9IEFueU9mKGdy
ZWF0ZXJfdGhhbl81LCBsZXNzX3RoYW5fMTAsIGxlc3NfdGhhbl8xMCk7Ci0gIE1hdGNoZXI8aW50
Jj4gbTUgPSBBbnlPZihncmVhdGVyX3RoYW5fNSwgbGVzc190aGFuXzEwLCBsZXNzX3RoYW5fMTAp
OwotfQotCi1URVNUKEFueU9mVGVzdCwgRXhwbGFpbnNSZXN1bHQpIHsKLSAgTWF0Y2hlcjxpbnQ+
IG07Ci0KLSAgLy8gRmFpbGVkIG1hdGNoLiAgQm90aCBtYXRjaGVycyBuZWVkIHRvIGV4cGxhaW4u
ICBUaGUgc2Vjb25kCi0gIC8vIG1hdGNoZXIgZG9lc24ndCBnaXZlIGFuIGV4cGxhbmF0aW9uLCBz
byBvbmx5IHRoZSBmaXJzdCBtYXRjaGVyJ3MKLSAgLy8gZXhwbGFuYXRpb24gaXMgcHJpbnRlZC4K
LSAgbSA9IEFueU9mKEdyZWF0ZXJUaGFuKDEwKSwgTHQoMCkpOwotICBFWFBFQ1RfRVEoIndoaWNo
IGlzIDUgbGVzcyB0aGFuIDEwIiwgRXhwbGFpbihtLCA1KSk7Ci0KLSAgLy8gRmFpbGVkIG1hdGNo
LiAgQm90aCBtYXRjaGVycyBuZWVkIHRvIGV4cGxhaW4uCi0gIG0gPSBBbnlPZihHcmVhdGVyVGhh
bigxMCksIEdyZWF0ZXJUaGFuKDIwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBsZXNzIHRo
YW4gMTAsIGFuZCB3aGljaCBpcyAxNSBsZXNzIHRoYW4gMjAiLAotICAgICAgICAgICAgRXhwbGFp
bihtLCA1KSk7Ci0KLSAgLy8gRmFpbGVkIG1hdGNoLiAgQWxsIG1hdGNoZXJzIG5lZWQgdG8gZXhw
bGFpbi4gIFRoZSBzZWNvbmQKLSAgLy8gbWF0Y2hlciBkb2Vzbid0IGdpdmVuIGFuIGV4cGxhbmF0
aW9uLgotICBtID0gQW55T2YoR3JlYXRlclRoYW4oMTApLCBHdCgyMCksIEdyZWF0ZXJUaGFuKDMw
KSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgNSBsZXNzIHRoYW4gMTAsIGFuZCB3aGljaCBpcyAy
NSBsZXNzIHRoYW4gMzAiLAotICAgICAgICAgICAgRXhwbGFpbihtLCA1KSk7Ci0KLSAgLy8gRmFp
bGVkIG1hdGNoLiAgQWxsIG1hdGNoZXJzIG5lZWQgdG8gZXhwbGFpbi4KLSAgbSA9IEFueU9mKEdy
ZWF0ZXJUaGFuKDEwKSwgR3JlYXRlclRoYW4oMjApLCBHcmVhdGVyVGhhbigzMCkpOwotICBFWFBF
Q1RfRVEoIndoaWNoIGlzIDUgbGVzcyB0aGFuIDEwLCBhbmQgd2hpY2ggaXMgMTUgbGVzcyB0aGFu
IDIwLCAiCi0gICAgICAgICAgICAiYW5kIHdoaWNoIGlzIDI1IGxlc3MgdGhhbiAzMCIsCi0gICAg
ICAgICAgICBFeHBsYWluKG0sIDUpKTsKLQotICAvLyBTdWNjZXNzZnVsIG1hdGNoLiAgVGhlIGZp
cnN0IG1hdGNoZXIsIHdoaWNoIHN1Y2NlZWRlZCwgbmVlZHMgdG8KLSAgLy8gZXhwbGFpbi4KLSAg
bSA9IEFueU9mKEdyZWF0ZXJUaGFuKDEwKSwgR3JlYXRlclRoYW4oMjApKTsKLSAgRVhQRUNUX0VR
KCJ3aGljaCBpcyA1IG1vcmUgdGhhbiAxMCIsIEV4cGxhaW4obSwgMTUpKTsKLQotICAvLyBTdWNj
ZXNzZnVsIG1hdGNoLiAgVGhlIHNlY29uZCBtYXRjaGVyLCB3aGljaCBzdWNjZWVkZWQsIG5lZWRz
IHRvCi0gIC8vIGV4cGxhaW4uICBTaW5jZSBpdCBkb2Vzbid0IGdpdmVuIGFuIGV4cGxhbmF0aW9u
LCBub3RoaW5nIGlzCi0gIC8vIHByaW50ZWQuCi0gIG0gPSBBbnlPZihHcmVhdGVyVGhhbigxMCks
IEx0KDMwKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCAwKSk7Ci0KLSAgLy8gU3VjY2Vz
c2Z1bCBtYXRjaC4gIFRoZSBzZWNvbmQgbWF0Y2hlciwgd2hpY2ggc3VjY2VlZGVkLCBuZWVkcyB0
bwotICAvLyBleHBsYWluLgotICBtID0gQW55T2YoR3JlYXRlclRoYW4oMzApLCBHcmVhdGVyVGhh
bigyMCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGlzIDUgbW9yZSB0aGFuIDIwIiwgRXhwbGFpbiht
LCAyNSkpOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHByZWRpY2F0ZSBmdW5jdGlvbiBhbmQgcHJl
ZGljYXRlIGZ1bmN0b3IgYXJlIGZvcgotLy8gdGVzdGluZyB0aGUgVHJ1bHkocHJlZGljYXRlKSBt
YXRjaGVyLgotCi0vLyBSZXR1cm5zIG5vbi16ZXJvIGlmIHRoZSBpbnB1dCBpcyBwb3NpdGl2ZS4g
IE5vdGUgdGhhdCB0aGUgcmV0dXJuCi0vLyB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gaXMgbm90IGJv
b2wuICBJdCdzIE9LIGFzIFRydWx5KCkgYWNjZXB0cyBhbnkKLS8vIHVuYXJ5IGZ1bmN0aW9uIG9y
IGZ1bmN0b3Igd2hvc2UgcmV0dXJuIHR5cGUgY2FuIGJlIGltcGxpY2l0bHkKLS8vIGNvbnZlcnRl
ZCB0byBib29sLgotaW50IElzUG9zaXRpdmUoZG91YmxlIHgpIHsKLSAgcmV0dXJuIHggPiAwID8g
MSA6IDA7Ci19Ci0KLS8vIFRoaXMgZnVuY3RvciByZXR1cm5zIHRydWUgaWYgdGhlIGlucHV0IGlz
IGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4KLS8vIG51bWJlci4KLWNsYXNzIElzR3JlYXRlclRoYW4g
ewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSXNHcmVhdGVyVGhhbihpbnQgdGhyZXNob2xkKSA6IHRo
cmVzaG9sZF8odGhyZXNob2xkKSB7fQotCi0gIGJvb2wgb3BlcmF0b3IoKShpbnQgbikgY29uc3Qg
eyByZXR1cm4gbiA+IHRocmVzaG9sZF87IH0KLQotIHByaXZhdGU6Ci0gIGludCB0aHJlc2hvbGRf
OwotfTsKLQotLy8gRm9yIHRlc3RpbmcgVHJ1bHkoKS4KLWNvbnN0IGludCBmb28gPSAwOwotCi0v
LyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHRydWUgaWZmIHRoZSBhcmd1bWVudCByZWZlcmVuY2Vz
IGZvbyBhbmQgaGFzCi0vLyBhIHplcm8gdmFsdWUuCi1ib29sIFJlZmVyZW5jZXNGb29BbmRJc1pl
cm8oY29uc3QgaW50JiBuKSB7Ci0gIHJldHVybiAoJm4gPT0gJmZvbykgJiYgKG4gPT0gMCk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgVHJ1bHkocHJlZGljYXRlKSBtYXRjaGVzIHdoYXQgc2F0aXNmaWVz
IHRoZSBnaXZlbgotLy8gcHJlZGljYXRlLgotVEVTVChUcnVseVRlc3QsIE1hdGNoZXNXaGF0U2F0
aXNmaWVzVGhlUHJlZGljYXRlKSB7Ci0gIE1hdGNoZXI8ZG91YmxlPiBtID0gVHJ1bHkoSXNQb3Np
dGl2ZSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygyLjApKTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcygtMS41KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVHJ1bHkocHJlZGljYXRlX2Z1bmN0
b3IpIHdvcmtzIHRvby4KLVRFU1QoVHJ1bHlUZXN0LCBDYW5CZVVzZWRXaXRoRnVuY3Rvcikgewot
ICBNYXRjaGVyPGludD4gbSA9IFRydWx5KElzR3JlYXRlclRoYW4oNSkpOwotICBFWFBFQ1RfVFJV
RShtLk1hdGNoZXMoNikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDQpKTsKLX0KLQotLy8g
QSBjbGFzcyB0aGF0IGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBib29sLgotY2xhc3Mg
Q29udmVydGlibGVUb0Jvb2wgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgQ29udmVydGlibGVUb0Jv
b2woaW50IG51bWJlcikgOiBudW1iZXJfKG51bWJlcikge30KLSAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG51bWJlcl8gIT0gMDsgfQotCi0gcHJpdmF0ZToKLSAgaW50IG51bWJlcl87
Ci19OwotCi1Db252ZXJ0aWJsZVRvQm9vbCBJc05vdFplcm8oaW50IG51bWJlcikgewotICByZXR1
cm4gQ29udmVydGlibGVUb0Jvb2wobnVtYmVyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgcHJl
ZGljYXRlIHVzZWQgaW4gVHJ1bHkoKSBtYXkgcmV0dXJuIGEgY2xhc3MgdGhhdCdzCi0vLyBpbXBs
aWNpdGx5IGNvbnZlcnRpYmxlIHRvIGJvb2wsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgaGFzIG5vCi0v
LyBvcGVyYXRvciEoKS4KLVRFU1QoVHJ1bHlUZXN0LCBQcmVkaWNhdGVDYW5SZXR1cm5BQ2xhc3ND
b252ZXJ0aWJsZVRvQm9vbCkgewotICBNYXRjaGVyPGludD4gbSA9IFRydWx5KElzTm90WmVybyk7
Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
MCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFRydWx5KHByZWRpY2F0ZSkgY2FuIGRlc2NyaWJlIGl0
c2VsZiBwcm9wZXJseS4KLVRFU1QoVHJ1bHlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0
Y2hlcjxkb3VibGU+IG0gPSBUcnVseShJc1Bvc2l0aXZlKTsKLSAgRVhQRUNUX0VRKCJzYXRpc2Zp
ZXMgdGhlIGdpdmVuIHByZWRpY2F0ZSIsCi0gICAgICAgICAgICBEZXNjcmliZShtKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgVHJ1bHkocHJlZGljYXRlKSB3b3JrcyB3aGVuIHRoZSBtYXRjaGVyIHRh
a2VzIGl0cwotLy8gYXJndW1lbnQgYnkgcmVmZXJlbmNlLgotVEVTVChUcnVseVRlc3QsIFdvcmtz
Rm9yQnlSZWZBcmd1bWVudHMpIHsKLSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtID0gVHJ1bHkoUmVm
ZXJlbmNlc0Zvb0FuZElzWmVybyk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhmb28pKTsKLSAg
aW50IG4gPSAwOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG4pKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBNYXRjaGVzKG0pIGlzIGEgcHJlZGljYXRlIHNhdGlzZmllZCBieSB3aGF0ZXZlciB0aGF0
Ci0vLyBtYXRjaGVzIG1hdGNoZXIgbS4KLVRFU1QoTWF0Y2hlc1Rlc3QsIElzU2F0aXNmaWVkQnlX
aGF0TWF0Y2hlc1RoZU1hdGNoZXIpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hlcyhHZSgwKSkoMSkp
OwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hlcyhFcSgnYScpKSgnYicpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBNYXRjaGVzKG0pIHdvcmtzIHdoZW4gdGhlIG1hdGNoZXIgdGFrZXMgaXRzIGFyZ3VtZW50
IGJ5Ci0vLyByZWZlcmVuY2UuCi1URVNUKE1hdGNoZXNUZXN0LCBXb3Jrc09uQnlSZWZBcmd1bWVu
dHMpIHsKLSAgaW50IG0gPSAwLCBuID0gMDsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hlcyhBbGxPZihS
ZWYobiksIEVxKDApKSkobikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hlcyhSZWYobSkpKG4pKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhIE1hdGNoZXIgb24gbm9uLXJlZmVyZW5jZSB0eXBlIGNhbiBi
ZSB1c2VkIGluCi0vLyBNYXRjaGVzKCkuCi1URVNUKE1hdGNoZXNUZXN0LCBXb3Jrc1dpdGhNYXRj
aGVyT25Ob25SZWZUeXBlKSB7Ci0gIE1hdGNoZXI8aW50PiBlcTUgPSBFcSg1KTsKLSAgRVhQRUNU
X1RSVUUoTWF0Y2hlcyhlcTUpKDUpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoZXMoZXE1KSgyKSk7
Ci19Ci0KLS8vIFRlc3RzIFZhbHVlKHZhbHVlLCBtYXRjaGVyKS4gIFNpbmNlIFZhbHVlKCkgaXMg
YSBzaW1wbGUgd3JhcHBlciBmb3IKLS8vIE1hdGNoZXMoKSwgd2hpY2ggaGFzIGJlZW4gdGVzdGVk
IGFscmVhZHksIHdlIGRvbid0IHNwZW5kIGEgbG90IG9mCi0vLyBlZmZvcnQgb24gdGVzdGluZyBW
YWx1ZSgpLgotVEVTVChWYWx1ZVRlc3QsIFdvcmtzV2l0aFBvbHltb3JwaGljTWF0Y2hlcikgewot
ICBFWFBFQ1RfVFJVRShWYWx1ZSgiaGkiLCBTdGFydHNXaXRoKCJoIikpKTsKLSAgRVhQRUNUX0ZB
TFNFKFZhbHVlKDUsIEd0KDEwKSkpOwotfQotCi1URVNUKFZhbHVlVGVzdCwgV29ya3NXaXRoTW9u
b21vcnBoaWNNYXRjaGVyKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50PiBpc196ZXJvID0gRXEoMCk7
Ci0gIEVYUEVDVF9UUlVFKFZhbHVlKDAsIGlzX3plcm8pKTsKLSAgRVhQRUNUX0ZBTFNFKFZhbHVl
KCdhJywgaXNfemVybykpOwotCi0gIGludCBuID0gMDsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBp
bnQmPiByZWZfbiA9IFJlZihuKTsKLSAgRVhQRUNUX1RSVUUoVmFsdWUobiwgcmVmX24pKTsKLSAg
RVhQRUNUX0ZBTFNFKFZhbHVlKDEsIHJlZl9uKSk7Ci19Ci0KLVRFU1QoRXhwbGFpbk1hdGNoUmVz
dWx0VGVzdCwgV29ya3NXaXRoUG9seW1vcnBoaWNNYXRjaGVyKSB7Ci0gIFN0cmluZ01hdGNoUmVz
dWx0TGlzdGVuZXIgbGlzdGVuZXIxOwotICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1bHQo
UG9seW1vcnBoaWNJc0V2ZW4oKSwgNDIsICZsaXN0ZW5lcjEpKTsKLSAgRVhQRUNUX0VRKCIlIDIg
PT0gMCIsIGxpc3RlbmVyMS5zdHIoKSk7Ci0KLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBs
aXN0ZW5lcjI7Ci0gIEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoR2UoNDIpLCAxLjUs
ICZsaXN0ZW5lcjIpKTsKLSAgRVhQRUNUX0VRKCIiLCBsaXN0ZW5lcjIuc3RyKCkpOwotfQotCi1U
RVNUKEV4cGxhaW5NYXRjaFJlc3VsdFRlc3QsIFdvcmtzV2l0aE1vbm9tb3JwaGljTWF0Y2hlcikg
ewotICBjb25zdCBNYXRjaGVyPGludD4gaXNfZXZlbiA9IFBvbHltb3JwaGljSXNFdmVuKCk7Ci0g
IFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXIxOwotICBFWFBFQ1RfVFJVRShFeHBs
YWluTWF0Y2hSZXN1bHQoaXNfZXZlbiwgNDIsICZsaXN0ZW5lcjEpKTsKLSAgRVhQRUNUX0VRKCIl
IDIgPT0gMCIsIGxpc3RlbmVyMS5zdHIoKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxjb25zdCBkb3Vi
bGUmPiBpc196ZXJvID0gRXEoMCk7Ci0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVu
ZXIyOwotICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KGlzX3plcm8sIDEuNSwgJmxp
c3RlbmVyMikpOwotICBFWFBFQ1RfRVEoIiIsIGxpc3RlbmVyMi5zdHIoKSk7Ci19Ci0KLU1BVENI
RVJfUChSZWFsbHksIGlubmVyX21hdGNoZXIsICIiKSB7Ci0gIHJldHVybiBFeHBsYWluTWF0Y2hS
ZXN1bHQoaW5uZXJfbWF0Y2hlciwgYXJnLCByZXN1bHRfbGlzdGVuZXIpOwotfQotCi1URVNUKEV4
cGxhaW5NYXRjaFJlc3VsdFRlc3QsIFdvcmtzSW5zaWRlTUFUQ0hFUikgewotICBFWFBFQ1RfVEhB
VCgwLCBSZWFsbHkoRXEoMCkpKTsKLX0KLQotVEVTVChBbGxBcmdzVGVzdCwgV29ya3NGb3JUdXBs
ZSkgewotICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKDEsIDJMKSwgQWxsQXJncyhMdCgpKSk7Ci0g
IEVYUEVDVF9USEFUKG1ha2VfdHVwbGUoMkwsIDEpLCBOb3QoQWxsQXJncyhMdCgpKSkpOwotfQot
Ci1URVNUKEFsbEFyZ3NUZXN0LCBXb3Jrc0Zvck5vblR1cGxlKSB7Ci0gIEVYUEVDVF9USEFUKDQy
LCBBbGxBcmdzKEd0KDApKSk7Ci0gIEVYUEVDVF9USEFUKCdhJywgTm90KEFsbEFyZ3MoRXEoJ2In
KSkpKTsKLX0KLQotY2xhc3MgQWxsQXJnc0hlbHBlciB7Ci0gcHVibGljOgotICBBbGxBcmdzSGVs
cGVyKCkge30KLQotICBNT0NLX01FVEhPRDIoSGVscGVyLCBpbnQoY2hhciB4LCBpbnQgeSkpOwot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBbGxBcmdzSGVs
cGVyKTsKLX07Ci0KLVRFU1QoQWxsQXJnc1Rlc3QsIFdvcmtzSW5XaXRoQ2xhdXNlKSB7Ci0gIEFs
bEFyZ3NIZWxwZXIgaGVscGVyOwotICBPTl9DQUxMKGhlbHBlciwgSGVscGVyKF8sIF8pKQotICAg
ICAgLldpdGgoQWxsQXJncyhMdCgpKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7
Ci0gIEVYUEVDVF9DQUxMKGhlbHBlciwgSGVscGVyKF8sIF8pKTsKLSAgRVhQRUNUX0NBTEwoaGVs
cGVyLCBIZWxwZXIoXywgXykpCi0gICAgICAuV2l0aChBbGxBcmdzKEd0KCkpKQotICAgICAgLldp
bGxPbmNlKFJldHVybigyKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIGhlbHBlci5IZWxwZXIoJ1wxJywg
MikpOwotICBFWFBFQ1RfRVEoMiwgaGVscGVyLkhlbHBlcignYScsIDEpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBU1NFUlRfVEhBVCgpIGFuZCBFWFBFQ1RfVEhBVCgpIHdvcmsgd2hlbiB0aGUgdmFs
dWUKLS8vIG1hdGNoZXMgdGhlIG1hdGNoZXIuCi1URVNUKE1hdGNoZXJBc3NlcnRpb25UZXN0LCBX
b3Jrc1doZW5NYXRjaGVySXNTYXRpc2ZpZWQpIHsKLSAgQVNTRVJUX1RIQVQoNSwgR2UoMikpIDw8
ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEFTU0VSVF9USEFUKCJGb28iLCBFbmRzV2l0aCgi
b28iKSk7Ci0gIEVYUEVDVF9USEFUKDIsIEFsbE9mKExlKDcpLCBHZSgwKSkpIDw8ICJUaGlzIHNo
b3VsZCBzdWNjZWVkIHRvby4iOwotICBFWFBFQ1RfVEhBVCgiSGVsbG8iLCBTdGFydHNXaXRoKCJI
ZWxsIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFU
KCkgd29yayB3aGVuIHRoZSB2YWx1ZQotLy8gZG9lc24ndCBtYXRjaCB0aGUgbWF0Y2hlci4KLVRF
U1QoTWF0Y2hlckFzc2VydGlvblRlc3QsIFdvcmtzV2hlbk1hdGNoZXJJc05vdFNhdGlzZmllZCkg
ewotICAvLyAnbicgbXVzdCBiZSBzdGF0aWMgYXMgaXQgaXMgdXNlZCBpbiBhbiBFWFBFQ1RfRkFU
QUxfRkFJTFVSRSgpLAotICAvLyB3aGljaCBjYW5ub3QgcmVmZXJlbmNlIGF1dG8gdmFyaWFibGVz
LgotICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgbjsgIC8vIE5PTElOVAotICBuID0gNTsKLQotICAv
LyBWQysrIHByaW9yIHRvIHZlcnNpb24gOC4wIFNQMSBoYXMgYSBidWcgd2hlcmUgaXQgd2lsbCBu
b3Qgc2VlIGFueQotICAvLyBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gdGhlIG5hbWVzcGFjZSBzY29w
ZSBmcm9tIHdpdGhpbiBuZXN0ZWQgY2xhc3Nlcy4KLSAgLy8gRVhQRUNUL0FTU0VSVF8oTk9OKUZB
VEFMX0ZBSUxVUkUgbWFjcm9zIHVzZSBuZXN0ZWQgY2xhc3NlcyBzbyB0aGF0IGFsbAotICAvLyBu
YW1lc3BhY2UtbGV2ZWwgZnVuY3Rpb25zIGludm9rZWQgaW5zaWRlIHRoZW0gbmVlZCB0byBiZSBl
eHBsaWNpdGx5Ci0gIC8vIHJlc29sdmVkLgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
VEhBVChuLCA6OnRlc3Rpbmc6Okd0KDEwKSksCi0gICAgICAgICAgICAgICAgICAgICAgICJWYWx1
ZSBvZjogblxuIgotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGlzID4gMTBcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA1IiArIE9mVHlwZSgidW5zaWduZWQg
c2hvcnQiKSk7Ci0gIG4gPSAwOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEVY
UEVDVF9USEFUKG4sIDo6dGVzdGluZzo6QWxsT2YoOjp0ZXN0aW5nOjpMZSg3KSwgOjp0ZXN0aW5n
OjpHZSg1KSkpLAotICAgICAgIlZhbHVlIG9mOiBuXG4iCi0gICAgICAiRXhwZWN0ZWQ6IChpcyA8
PSA3KSBhbmQgKGlzID49IDUpXG4iCi0gICAgICAiICBBY3R1YWw6IDAiICsgT2ZUeXBlKCJ1bnNp
Z25lZCBzaG9ydCIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfVEhBVCgpIGFuZCBFWFBF
Q1RfVEhBVCgpIHdvcmsgd2hlbiB0aGUgYXJndW1lbnQKLS8vIGhhcyBhIHJlZmVyZW5jZSB0eXBl
LgotVEVTVChNYXRjaGVyQXNzZXJ0aW9uVGVzdCwgV29ya3NGb3JCeVJlZkFyZ3VtZW50cykgewot
ICAvLyBXZSB1c2UgYSBzdGF0aWMgdmFyaWFibGUgaGVyZSBhcyBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpIGNhbm5vdAotICAvLyByZWZlcmVuY2UgYXV0byB2YXJpYWJsZXMuCi0gIHN0YXRpYyBpbnQg
bjsKLSAgbiA9IDA7Ci0gIEVYUEVDVF9USEFUKG4sIEFsbE9mKExlKDcpLCBSZWYobikpKTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RIQVQobiwgOjp0ZXN0aW5nOjpOb3QoOjp0ZXN0
aW5nOjpSZWYobikpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBuXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogZG9lcyBub3QgcmVmZXJlbmNlIHRoZSB2
YXJpYWJsZSBAIik7Ci0gIC8vIFRlc3RzIHRoZSAiQWN0dWFsIiBwYXJ0LgotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShBU1NFUlRfVEhBVChuLCA6OnRlc3Rpbmc6Ok5vdCg6OnRlc3Rpbmc6OlJlZihu
KSkpLAotICAgICAgICAgICAgICAgICAgICAgICAiQWN0dWFsOiAwIiArIE9mVHlwZSgiaW50Iikg
KyAiLCB3aGljaCBpcyBsb2NhdGVkIEAiKTsKLX0KLQotI2lmICFHVEVTVF9PU19TWU1CSUFOCi0v
LyBUZXN0cyB0aGF0IEFTU0VSVF9USEFUKCkgYW5kIEVYUEVDVF9USEFUKCkgd29yayB3aGVuIHRo
ZSBtYXRjaGVyIGlzCi0vLyBtb25vbW9ycGhpYy4KLQotLy8gQVNTRVJUX1RIQVQoImhlbGxvIiwg
c3RhcnRzX3dpdGhfaGUpIGZhaWxzIHRvIGNvbXBpbGUgd2l0aCBOb2tpYSdzCi0vLyBTeW1iaWFu
IGNvbXBpbGVyOiBpdCB0cmllcyB0byBjb21waWxlCi0vLyB0ZW1wbGF0ZTxULCBVPiBjbGFzcyBN
YXRjaGVyQ2FzdEltcGwgeyAuLi4KLS8vICAgdmlydHVhbCBib29sIE1hdGNoQW5kRXhwbGFpbihU
IHgsIC4uLikgY29uc3QgewotLy8gICAgIHJldHVybiBzb3VyY2VfbWF0Y2hlcl8uTWF0Y2hBbmRF
eHBsYWluKHN0YXRpY19jYXN0PFU+KHgpLCAuLi4pOwotLy8gd2l0aCBVID09IHN0cmluZyBhbmQg
VCA9PSBjb25zdCBjaGFyKgotLy8gV2l0aCBBU1NFUlRfVEhBVCgiaGVsbG8iLi4uKSBjaGFuZ2Vk
IHRvIEFTU0VSVF9USEFUKHN0cmluZygiaGVsbG8iKSAuLi4gKQotLy8gdGhlIGNvbXBpbGVyIHNp
bGVudGx5IGNyYXNoZXMgd2l0aCBubyBvdXRwdXQuCi0vLyBJZiBNYXRjaGVyQ2FzdEltcGwgaXMg
Y2hhbmdlZCB0byB1c2UgVSh4KSBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0PFU+KHgpCi0vLyB0aGUg
Y29kZSBjb21waWxlcyBidXQgdGhlIGNvbnZlcnRlZCBzdHJpbmcgaXMgYm9ndXMuCi1URVNUKE1h
dGNoZXJBc3NlcnRpb25UZXN0LCBXb3Jrc0Zvck1vbm9tb3JwaGljTWF0Y2hlcikgewotICBNYXRj
aGVyPGNvbnN0IGNoYXIqPiBzdGFydHNfd2l0aF9oZSA9IFN0YXJ0c1dpdGgoImhlIik7Ci0gIEFT
U0VSVF9USEFUKCJoZWxsbyIsIHN0YXJ0c193aXRoX2hlKTsKLQotICBNYXRjaGVyPGNvbnN0IHN0
ZDo6c3RyaW5nJj4gZW5kc193aXRoX29rID0gRW5kc1dpdGgoIm9rIik7Ci0gIEFTU0VSVF9USEFU
KCJib29rIiwgZW5kc193aXRoX29rKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgYmFkID0gImJhZCI7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USEFUKGJhZCwgZW5kc193aXRoX29r
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBiYWRcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBlbmRzIHdpdGggXCJva1wiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogXCJiYWRcIiIpOwotICBNYXRjaGVyPGludD4g
aXNfZ3JlYXRlcl90aGFuXzUgPSBHdCg1KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX1RIQVQoNSwgaXNfZ3JlYXRlcl90aGFuXzUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVmFsdWUgb2Y6IDVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBp
cyA+IDVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiA1IiArIE9mVHlw
ZSgiaW50IikpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTgotCi0vLyBUZXN0cyBm
bG9hdGluZy1wb2ludCBtYXRjaGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYXdUeXBlPgotY2xh
c3MgRmxvYXRpbmdQb2ludFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVk
OgotICB0eXBlZGVmIHRlc3Rpbmc6OmludGVybmFsOjpGbG9hdGluZ1BvaW50PFJhd1R5cGU+IEZs
b2F0aW5nOwotICB0eXBlZGVmIHR5cGVuYW1lIEZsb2F0aW5nOjpCaXRzIEJpdHM7Ci0KLSAgRmxv
YXRpbmdQb2ludFRlc3QoKQotICAgICAgOiBtYXhfdWxwc18oRmxvYXRpbmc6OmtNYXhVbHBzKSwK
LSAgICAgICAgemVyb19iaXRzXyhGbG9hdGluZygwKS5iaXRzKCkpLAotICAgICAgICBvbmVfYml0
c18oRmxvYXRpbmcoMSkuYml0cygpKSwKLSAgICAgICAgaW5maW5pdHlfYml0c18oRmxvYXRpbmco
RmxvYXRpbmc6OkluZmluaXR5KCkpLmJpdHMoKSksCi0gICAgICAgIGNsb3NlX3RvX3Bvc2l0aXZl
X3plcm9fKEFzQml0cyh6ZXJvX2JpdHNfICsgbWF4X3VscHNfLzIpKSwKLSAgICAgICAgY2xvc2Vf
dG9fbmVnYXRpdmVfemVyb18oQXNCaXRzKHplcm9fYml0c18gKyBtYXhfdWxwc18gLSBtYXhfdWxw
c18vMikpLAotICAgICAgICBmdXJ0aGVyX2Zyb21fbmVnYXRpdmVfemVyb18oLUFzQml0cygKLSAg
ICAgICAgICAgIHplcm9fYml0c18gKyBtYXhfdWxwc18gKyAxIC0gbWF4X3VscHNfLzIpKSwKLSAg
ICAgICAgY2xvc2VfdG9fb25lXyhBc0JpdHMob25lX2JpdHNfICsgbWF4X3VscHNfKSksCi0gICAg
ICAgIGZ1cnRoZXJfZnJvbV9vbmVfKEFzQml0cyhvbmVfYml0c18gKyBtYXhfdWxwc18gKyAxKSks
Ci0gICAgICAgIGluZmluaXR5XyhGbG9hdGluZzo6SW5maW5pdHkoKSksCi0gICAgICAgIGNsb3Nl
X3RvX2luZmluaXR5XyhBc0JpdHMoaW5maW5pdHlfYml0c18gLSBtYXhfdWxwc18pKSwKLSAgICAg
ICAgZnVydGhlcl9mcm9tX2luZmluaXR5XyhBc0JpdHMoaW5maW5pdHlfYml0c18gLSBtYXhfdWxw
c18gLSAxKSksCi0gICAgICAgIG1heF8oRmxvYXRpbmc6Ok1heCgpKSwKLSAgICAgICAgbmFuMV8o
QXNCaXRzKEZsb2F0aW5nOjprRXhwb25lbnRCaXRNYXNrIHwgMSkpLAotICAgICAgICBuYW4yXyhB
c0JpdHMoRmxvYXRpbmc6OmtFeHBvbmVudEJpdE1hc2sgfCAyMDApKSB7Ci0gIH0KLQotICB2b2lk
IFRlc3RTaXplKCkgewotICAgIEVYUEVDVF9FUShzaXplb2YoUmF3VHlwZSksIHNpemVvZihCaXRz
KSk7Ci0gIH0KLQotICAvLyBBIGJhdHRlcnkgb2YgdGVzdHMgZm9yIEZsb2F0aW5nRXFNYXRjaGVy
OjpNYXRjaGVzLgotICAvLyBtYXRjaGVyX21ha2VyIGlzIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9u
IHdoaWNoIGNyZWF0ZXMgYSBGbG9hdGluZ0VxTWF0Y2hlci4KLSAgdm9pZCBUZXN0TWF0Y2hlcygK
LSAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hlcjxSYXdUeXBlPiAoKm1h
dGNoZXJfbWFrZXIpKFJhd1R5cGUpKSB7Ci0gICAgTWF0Y2hlcjxSYXdUeXBlPiBtMSA9IG1hdGNo
ZXJfbWFrZXIoMC4wKTsKLSAgICBFWFBFQ1RfVFJVRShtMS5NYXRjaGVzKC0wLjApKTsKLSAgICBF
WFBFQ1RfVFJVRShtMS5NYXRjaGVzKGNsb3NlX3RvX3Bvc2l0aXZlX3plcm9fKSk7Ci0gICAgRVhQ
RUNUX1RSVUUobTEuTWF0Y2hlcyhjbG9zZV90b19uZWdhdGl2ZV96ZXJvXykpOwotICAgIEVYUEVD
VF9GQUxTRShtMS5NYXRjaGVzKDEuMCkpOwotCi0gICAgTWF0Y2hlcjxSYXdUeXBlPiBtMiA9IG1h
dGNoZXJfbWFrZXIoY2xvc2VfdG9fcG9zaXRpdmVfemVyb18pOwotICAgIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKGZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvXykpOwotCi0gICAgTWF0Y2hlcjxS
YXdUeXBlPiBtMyA9IG1hdGNoZXJfbWFrZXIoMS4wKTsKLSAgICBFWFBFQ1RfVFJVRShtMy5NYXRj
aGVzKGNsb3NlX3RvX29uZV8pKTsKLSAgICBFWFBFQ1RfRkFMU0UobTMuTWF0Y2hlcyhmdXJ0aGVy
X2Zyb21fb25lXykpOwotCi0gICAgLy8gVGVzdCBjb21tdXRhdGl2aXR5OiBtYXRjaGVyX21ha2Vy
KDAuMCkuTWF0Y2hlcygxLjApIHdhcyB0ZXN0ZWQgYWJvdmUuCi0gICAgRVhQRUNUX0ZBTFNFKG0z
Lk1hdGNoZXMoMC4wKSk7Ci0KLSAgICBNYXRjaGVyPFJhd1R5cGU+IG00ID0gbWF0Y2hlcl9tYWtl
cigtaW5maW5pdHlfKTsKLSAgICBFWFBFQ1RfVFJVRShtNC5NYXRjaGVzKC1jbG9zZV90b19pbmZp
bml0eV8pKTsKLQotICAgIE1hdGNoZXI8UmF3VHlwZT4gbTUgPSBtYXRjaGVyX21ha2VyKGluZmlu
aXR5Xyk7Ci0gICAgRVhQRUNUX1RSVUUobTUuTWF0Y2hlcyhjbG9zZV90b19pbmZpbml0eV8pKTsK
LQotICAgIC8vIFRoaXMgaXMgaW50ZXJlc3RpbmcgYXMgdGhlIHJlcHJlc2VudGF0aW9ucyBvZiBp
bmZpbml0eV8gYW5kIG5hbjFfCi0gICAgLy8gYXJlIG9ubHkgMSBETFAgYXBhcnQuCi0gICAgRVhQ
RUNUX0ZBTFNFKG01Lk1hdGNoZXMobmFuMV8pKTsKLQotICAgIC8vIG1hdGNoZXJfbWFrZXIgY2Fu
IHByb2R1Y2UgYSBNYXRjaGVyPGNvbnN0IFJhd1R5cGUmPiwgd2hpY2ggaXMgbmVlZGVkIGluCi0g
ICAgLy8gc29tZSBjYXNlcy4KLSAgICBNYXRjaGVyPGNvbnN0IFJhd1R5cGUmPiBtNiA9IG1hdGNo
ZXJfbWFrZXIoMC4wKTsKLSAgICBFWFBFQ1RfVFJVRShtNi5NYXRjaGVzKC0wLjApKTsKLSAgICBF
WFBFQ1RfVFJVRShtNi5NYXRjaGVzKGNsb3NlX3RvX3Bvc2l0aXZlX3plcm9fKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG02Lk1hdGNoZXMoMS4wKSk7Ci0KLSAgICAvLyBtYXRjaGVyX21ha2VyIGNhbiBw
cm9kdWNlIGEgTWF0Y2hlcjxSYXdUeXBlJj4sIHdoaWNoIGlzIG5lZWRlZCBpbiBzb21lCi0gICAg
Ly8gY2FzZXMuCi0gICAgTWF0Y2hlcjxSYXdUeXBlJj4gbTcgPSBtYXRjaGVyX21ha2VyKDAuMCk7
Ci0gICAgUmF3VHlwZSB4ID0gMC4wOwotICAgIEVYUEVDVF9UUlVFKG03Lk1hdGNoZXMoeCkpOwot
ICAgIHggPSAwLjAxZjsKLSAgICBFWFBFQ1RfRkFMU0UobTcuTWF0Y2hlcyh4KSk7Ci0gIH0KLQot
ICAvLyBQcmUtY2FsY3VsYXRlZCBudW1iZXJzIHRvIGJlIHVzZWQgYnkgdGhlIHRlc3RzLgotCi0g
IGNvbnN0IHNpemVfdCBtYXhfdWxwc187Ci0KLSAgY29uc3QgQml0cyB6ZXJvX2JpdHNfOyAgLy8g
VGhlIGJpdHMgdGhhdCByZXByZXNlbnQgMC4wLgotICBjb25zdCBCaXRzIG9uZV9iaXRzXzsgIC8v
IFRoZSBiaXRzIHRoYXQgcmVwcmVzZW50IDEuMC4KLSAgY29uc3QgQml0cyBpbmZpbml0eV9iaXRz
XzsgIC8vIFRoZSBiaXRzIHRoYXQgcmVwcmVzZW50ICtpbmZpbml0eS4KLQotICAvLyBTb21lIG51
bWJlcnMgY2xvc2UgdG8gMC4wLgotICBjb25zdCBSYXdUeXBlIGNsb3NlX3RvX3Bvc2l0aXZlX3pl
cm9fOwotICBjb25zdCBSYXdUeXBlIGNsb3NlX3RvX25lZ2F0aXZlX3plcm9fOwotICBjb25zdCBS
YXdUeXBlIGZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJvXzsKLQotICAvLyBTb21lIG51bWJlcnMg
Y2xvc2UgdG8gMS4wLgotICBjb25zdCBSYXdUeXBlIGNsb3NlX3RvX29uZV87Ci0gIGNvbnN0IFJh
d1R5cGUgZnVydGhlcl9mcm9tX29uZV87Ci0KLSAgLy8gU29tZSBudW1iZXJzIGNsb3NlIHRvICtp
bmZpbml0eS4KLSAgY29uc3QgUmF3VHlwZSBpbmZpbml0eV87Ci0gIGNvbnN0IFJhd1R5cGUgY2xv
c2VfdG9faW5maW5pdHlfOwotICBjb25zdCBSYXdUeXBlIGZ1cnRoZXJfZnJvbV9pbmZpbml0eV87
Ci0KLSAgLy8gTWF4aW11bSByZXByZXNlbnRhYmxlIHZhbHVlIHRoYXQncyBub3QgaW5maW5pdHku
Ci0gIGNvbnN0IFJhd1R5cGUgbWF4XzsKLQotICAvLyBTb21lIE5hTnMuCi0gIGNvbnN0IFJhd1R5
cGUgbmFuMV87Ci0gIGNvbnN0IFJhd1R5cGUgbmFuMl87Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgc3RhdGljIFJhd1R5cGUgQXNCaXRzKFQgdmFsdWUpIHsKLSAgICBy
ZXR1cm4gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cyhzdGF0aWNfY2FzdDxCaXRzPih2YWx1ZSkp
OwotICB9Ci19OwotCi0vLyBUZXN0cyBmbG9hdGluZy1wb2ludCBtYXRjaGVycyB3aXRoIGZpeGVk
IGVwc2lsb25zLgotdGVtcGxhdGUgPHR5cGVuYW1lIFJhd1R5cGU+Ci1jbGFzcyBGbG9hdGluZ1Bv
aW50TmVhclRlc3QgOiBwdWJsaWMgRmxvYXRpbmdQb2ludFRlc3Q8UmF3VHlwZT4gewotIHByb3Rl
Y3RlZDoKLSAgdHlwZWRlZiBGbG9hdGluZ1BvaW50VGVzdDxSYXdUeXBlPiBQYXJlbnRUeXBlOwot
Ci0gIC8vIEEgYmF0dGVyeSBvZiB0ZXN0cyBmb3IgRmxvYXRpbmdFcU1hdGNoZXI6Ok1hdGNoZXMg
d2l0aCBhIGZpeGVkIGVwc2lsb24uCi0gIC8vIG1hdGNoZXJfbWFrZXIgaXMgYSBwb2ludGVyIHRv
IGEgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIEZsb2F0aW5nRXFNYXRjaGVyLgotICB2b2lkIFRl
c3ROZWFyTWF0Y2hlcygKLSAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpGbG9hdGluZ0VxTWF0Y2hl
cjxSYXdUeXBlPgotICAgICAgICAgICgqbWF0Y2hlcl9tYWtlcikoUmF3VHlwZSwgUmF3VHlwZSkp
IHsKLSAgICBNYXRjaGVyPFJhd1R5cGU+IG0xID0gbWF0Y2hlcl9tYWtlcigwLjAsIDAuMCk7Ci0g
ICAgRVhQRUNUX1RSVUUobTEuTWF0Y2hlcygwLjApKTsKLSAgICBFWFBFQ1RfVFJVRShtMS5NYXRj
aGVzKC0wLjApKTsKLSAgICBFWFBFQ1RfRkFMU0UobTEuTWF0Y2hlcyhQYXJlbnRUeXBlOjpjbG9z
ZV90b19wb3NpdGl2ZV96ZXJvXykpOwotICAgIEVYUEVDVF9GQUxTRShtMS5NYXRjaGVzKFBhcmVu
dFR5cGU6OmNsb3NlX3RvX25lZ2F0aXZlX3plcm9fKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG0xLk1h
dGNoZXMoMS4wKSk7Ci0KLSAgICBNYXRjaGVyPFJhd1R5cGU+IG0yID0gbWF0Y2hlcl9tYWtlcigw
LjAsIDEuMCk7Ci0gICAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygwLjApKTsKLSAgICBFWFBFQ1Rf
VFJVRShtMi5NYXRjaGVzKC0wLjApKTsKLSAgICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKDEuMCkp
OwotICAgIEVYUEVDVF9UUlVFKG0yLk1hdGNoZXMoLTEuMCkpOwotICAgIEVYUEVDVF9GQUxTRSht
Mi5NYXRjaGVzKFBhcmVudFR5cGU6OmNsb3NlX3RvX29uZV8pKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
bTIuTWF0Y2hlcygtUGFyZW50VHlwZTo6Y2xvc2VfdG9fb25lXykpOwotCi0gICAgLy8gQ2hlY2sg
dGhhdCBpbmYgbWF0Y2hlcyBpbmYsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9mIHRoZSBzcGVjaWZpZWQg
bWF4Ci0gICAgLy8gYWJzb2x1dGUgZXJyb3IuCi0gICAgTWF0Y2hlcjxSYXdUeXBlPiBtMyA9IG1h
dGNoZXJfbWFrZXIoUGFyZW50VHlwZTo6aW5maW5pdHlfLCAwLjApOwotICAgIEVYUEVDVF9UUlVF
KG0zLk1hdGNoZXMoUGFyZW50VHlwZTo6aW5maW5pdHlfKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG0z
Lk1hdGNoZXMoUGFyZW50VHlwZTo6Y2xvc2VfdG9faW5maW5pdHlfKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG0zLk1hdGNoZXMoLVBhcmVudFR5cGU6OmluZmluaXR5XykpOwotCi0gICAgTWF0Y2hlcjxS
YXdUeXBlPiBtNCA9IG1hdGNoZXJfbWFrZXIoLVBhcmVudFR5cGU6OmluZmluaXR5XywgMC4wKTsK
LSAgICBFWFBFQ1RfVFJVRShtNC5NYXRjaGVzKC1QYXJlbnRUeXBlOjppbmZpbml0eV8pKTsKLSAg
ICBFWFBFQ1RfRkFMU0UobTQuTWF0Y2hlcygtUGFyZW50VHlwZTo6Y2xvc2VfdG9faW5maW5pdHlf
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG00Lk1hdGNoZXMoUGFyZW50VHlwZTo6aW5maW5pdHlfKSk7
Ci0KLSAgICAvLyBUZXN0IHZhcmlvdXMgb3ZlcmZsb3cgc2NlbmFyaW9zLgotICAgIE1hdGNoZXI8
UmF3VHlwZT4gbTUgPSBtYXRjaGVyX21ha2VyKFBhcmVudFR5cGU6Om1heF8sIFBhcmVudFR5cGU6
Om1heF8pOwotICAgIEVYUEVDVF9UUlVFKG01Lk1hdGNoZXMoUGFyZW50VHlwZTo6bWF4XykpOwot
ICAgIEVYUEVDVF9GQUxTRShtNS5NYXRjaGVzKC1QYXJlbnRUeXBlOjptYXhfKSk7Ci0KLSAgICBN
YXRjaGVyPFJhd1R5cGU+IG02ID0gbWF0Y2hlcl9tYWtlcigtUGFyZW50VHlwZTo6bWF4XywgUGFy
ZW50VHlwZTo6bWF4Xyk7Ci0gICAgRVhQRUNUX0ZBTFNFKG02Lk1hdGNoZXMoUGFyZW50VHlwZTo6
bWF4XykpOwotICAgIEVYUEVDVF9UUlVFKG02Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8pKTsK
LQotICAgIE1hdGNoZXI8UmF3VHlwZT4gbTcgPSBtYXRjaGVyX21ha2VyKFBhcmVudFR5cGU6Om1h
eF8sIDApOwotICAgIEVYUEVDVF9UUlVFKG03Lk1hdGNoZXMoUGFyZW50VHlwZTo6bWF4XykpOwot
ICAgIEVYUEVDVF9GQUxTRShtNy5NYXRjaGVzKC1QYXJlbnRUeXBlOjptYXhfKSk7Ci0KLSAgICBN
YXRjaGVyPFJhd1R5cGU+IG04ID0gbWF0Y2hlcl9tYWtlcigtUGFyZW50VHlwZTo6bWF4XywgMCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG04Lk1hdGNoZXMoUGFyZW50VHlwZTo6bWF4XykpOwotICAgIEVY
UEVDVF9UUlVFKG04Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8pKTsKLQotICAgIC8vIFRoZSBk
aWZmZXJlbmNlIGJldHdlZW4gbWF4KCkgYW5kIC1tYXgoKSBub3JtYWxseSBvdmVyZmxvd3MgdG8g
aW5maW5pdHksCi0gICAgLy8gYnV0IGl0IHNob3VsZCBzdGlsbCBtYXRjaCBpZiB0aGUgbWF4X2Fi
c19lcnJvciBpcyBhbHNvIGluZmluaXR5LgotICAgIE1hdGNoZXI8UmF3VHlwZT4gbTkgPSBtYXRj
aGVyX21ha2VyKAotICAgICAgICBQYXJlbnRUeXBlOjptYXhfLCBQYXJlbnRUeXBlOjppbmZpbml0
eV8pOwotICAgIEVYUEVDVF9UUlVFKG04Lk1hdGNoZXMoLVBhcmVudFR5cGU6Om1heF8pKTsKLQot
ICAgIC8vIG1hdGNoZXJfbWFrZXIgY2FuIHByb2R1Y2UgYSBNYXRjaGVyPGNvbnN0IFJhd1R5cGUm
Piwgd2hpY2ggaXMgbmVlZGVkIGluCi0gICAgLy8gc29tZSBjYXNlcy4KLSAgICBNYXRjaGVyPGNv
bnN0IFJhd1R5cGUmPiBtMTAgPSBtYXRjaGVyX21ha2VyKDAuMCwgMS4wKTsKLSAgICBFWFBFQ1Rf
VFJVRShtMTAuTWF0Y2hlcygtMC4wKSk7Ci0gICAgRVhQRUNUX1RSVUUobTEwLk1hdGNoZXMoUGFy
ZW50VHlwZTo6Y2xvc2VfdG9fcG9zaXRpdmVfemVyb18pKTsKLSAgICBFWFBFQ1RfRkFMU0UobTEw
Lk1hdGNoZXMoUGFyZW50VHlwZTo6Y2xvc2VfdG9fb25lXykpOwotCi0gICAgLy8gbWF0Y2hlcl9t
YWtlciBjYW4gcHJvZHVjZSBhIE1hdGNoZXI8UmF3VHlwZSY+LCB3aGljaCBpcyBuZWVkZWQgaW4g
c29tZQotICAgIC8vIGNhc2VzLgotICAgIE1hdGNoZXI8UmF3VHlwZSY+IG0xMSA9IG1hdGNoZXJf
bWFrZXIoMC4wLCAxLjApOwotICAgIFJhd1R5cGUgeCA9IDAuMDsKLSAgICBFWFBFQ1RfVFJVRSht
MTEuTWF0Y2hlcyh4KSk7Ci0gICAgeCA9IDEuMGY7Ci0gICAgRVhQRUNUX1RSVUUobTExLk1hdGNo
ZXMoeCkpOwotICAgIHggPSAtMS4wZjsKLSAgICBFWFBFQ1RfVFJVRShtMTEuTWF0Y2hlcyh4KSk7
Ci0gICAgeCA9IDEuMWY7Ci0gICAgRVhQRUNUX0ZBTFNFKG0xMS5NYXRjaGVzKHgpKTsKLSAgICB4
ID0gLTEuMWY7Ci0gICAgRVhQRUNUX0ZBTFNFKG0xMS5NYXRjaGVzKHgpKTsKLSAgfQotfTsKLQot
Ly8gSW5zdGFudGlhdGUgRmxvYXRpbmdQb2ludFRlc3QgZm9yIHRlc3RpbmcgZmxvYXRzLgotdHlw
ZWRlZiBGbG9hdGluZ1BvaW50VGVzdDxmbG9hdD4gRmxvYXRUZXN0OwotCi1URVNUX0YoRmxvYXRU
ZXN0LCBGbG9hdEVxQXBwcm94aW1hdGVseU1hdGNoZXNGbG9hdHMpIHsKLSAgVGVzdE1hdGNoZXMo
JkZsb2F0RXEpOwotfQotCi1URVNUX0YoRmxvYXRUZXN0LCBOYW5TZW5zaXRpdmVGbG9hdEVxQXBw
cm94aW1hdGVseU1hdGNoZXNGbG9hdHMpIHsKLSAgVGVzdE1hdGNoZXMoJk5hblNlbnNpdGl2ZUZs
b2F0RXEpOwotfQotCi1URVNUX0YoRmxvYXRUZXN0LCBGbG9hdEVxQ2Fubm90TWF0Y2hOYU4pIHsK
LSAgLy8gRmxvYXRFcSBuZXZlciBtYXRjaGVzIE5hTi4KLSAgTWF0Y2hlcjxmbG9hdD4gbSA9IEZs
b2F0RXEobmFuMV8pOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMobmFuMl8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjAp
KTsKLX0KLQotVEVTVF9GKEZsb2F0VGVzdCwgTmFuU2Vuc2l0aXZlRmxvYXRFcUNhbk1hdGNoTmFO
KSB7Ci0gIC8vIE5hblNlbnNpdGl2ZUZsb2F0RXEgd2lsbCBtYXRjaCBOYU4uCi0gIE1hdGNoZXI8
ZmxvYXQ+IG0gPSBOYW5TZW5zaXRpdmVGbG9hdEVxKG5hbjFfKTsKLSAgRVhQRUNUX1RSVUUobS5N
YXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuYW4yXykpOwotICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQotCi1URVNUX0YoRmxvYXRUZXN0LCBGbG9hdEVx
Q2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8ZmxvYXQ+IG0xID0gRmxvYXRFcSgyLjBmKTsK
LSAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDIiLCBEZXNjcmliZShtMSkpOwotICBFWFBF
Q1RfRVEoImlzbid0IGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLQot
ICBNYXRjaGVyPGZsb2F0PiBtMiA9IEZsb2F0RXEoMC41Zik7Ci0gIEVYUEVDVF9FUSgiaXMgYXBw
cm94aW1hdGVseSAwLjUiLCBEZXNjcmliZShtMikpOwotICBFWFBFQ1RfRVEoImlzbid0IGFwcHJv
eGltYXRlbHkgMC41IiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotCi0gIE1hdGNoZXI8ZmxvYXQ+
IG0zID0gRmxvYXRFcShuYW4xXyk7Ci0gIEVYUEVDVF9FUSgibmV2ZXIgbWF0Y2hlcyIsIERlc2Ny
aWJlKG0zKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW55dGhpbmciLCBEZXNjcmliZU5lZ2F0aW9uKG0z
KSk7Ci19Ci0KLVRFU1RfRihGbG9hdFRlc3QsIE5hblNlbnNpdGl2ZUZsb2F0RXFDYW5EZXNjcmli
ZVNlbGYpIHsKLSAgTWF0Y2hlcjxmbG9hdD4gbTEgPSBOYW5TZW5zaXRpdmVGbG9hdEVxKDIuMGYp
OwotICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlKG0xKSk7Ci0gIEVY
UEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdhdGlvbihtMSkpOwot
Ci0gIE1hdGNoZXI8ZmxvYXQ+IG0yID0gTmFuU2Vuc2l0aXZlRmxvYXRFcSgwLjVmKTsKLSAgRVhQ
RUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlKG0yKSk7Ci0gIEVYUEVDVF9F
USgiaXNuJ3QgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmliZU5lZ2F0aW9uKG0yKSk7Ci0KLSAg
TWF0Y2hlcjxmbG9hdD4gbTMgPSBOYW5TZW5zaXRpdmVGbG9hdEVxKG5hbjFfKTsKLSAgRVhQRUNU
X0VRKCJpcyBOYU4iLCBEZXNjcmliZShtMykpOwotICBFWFBFQ1RfRVEoImlzbid0IE5hTiIsIERl
c2NyaWJlTmVnYXRpb24obTMpKTsKLX0KLQotLy8gSW5zdGFudGlhdGUgRmxvYXRpbmdQb2ludFRl
c3QgZm9yIHRlc3RpbmcgZmxvYXRzIHdpdGggYSB1c2VyLXNwZWNpZmllZAotLy8gbWF4IGFic29s
dXRlIGVycm9yLgotdHlwZWRlZiBGbG9hdGluZ1BvaW50TmVhclRlc3Q8ZmxvYXQ+IEZsb2F0TmVh
clRlc3Q7Ci0KLVRFU1RfRihGbG9hdE5lYXJUZXN0LCBGbG9hdE5lYXJNYXRjaGVzKSB7Ci0gIFRl
c3ROZWFyTWF0Y2hlcygmRmxvYXROZWFyKTsKLX0KLQotVEVTVF9GKEZsb2F0TmVhclRlc3QsIE5h
blNlbnNpdGl2ZUZsb2F0TmVhckFwcHJveGltYXRlbHlNYXRjaGVzRmxvYXRzKSB7Ci0gIFRlc3RO
ZWFyTWF0Y2hlcygmTmFuU2Vuc2l0aXZlRmxvYXROZWFyKTsKLX0KLQotVEVTVF9GKEZsb2F0TmVh
clRlc3QsIEZsb2F0TmVhckNhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGZsb2F0PiBtMSA9
IEZsb2F0TmVhcigyLjBmLCAwLjVmKTsKLSAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDIg
KGFic29sdXRlIGVycm9yIDw9IDAuNSkiLCBEZXNjcmliZShtMSkpOwotICBFWFBFQ1RfRVEoCi0g
ICAgICAiaXNuJ3QgYXBwcm94aW1hdGVseSAyIChhYnNvbHV0ZSBlcnJvciA+IDAuNSkiLCBEZXNj
cmliZU5lZ2F0aW9uKG0xKSk7Ci0KLSAgTWF0Y2hlcjxmbG9hdD4gbTIgPSBGbG9hdE5lYXIoMC41
ZiwgMC41Zik7Ci0gIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAwLjUgKGFic29sdXRlIGVy
cm9yIDw9IDAuNSkiLCBEZXNjcmliZShtMikpOwotICBFWFBFQ1RfRVEoCi0gICAgICAiaXNuJ3Qg
YXBwcm94aW1hdGVseSAwLjUgKGFic29sdXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRp
b24obTIpKTsKLQotICBNYXRjaGVyPGZsb2F0PiBtMyA9IEZsb2F0TmVhcihuYW4xXywgMC4wKTsK
LSAgRVhQRUNUX0VRKCJuZXZlciBtYXRjaGVzIiwgRGVzY3JpYmUobTMpKTsKLSAgRVhQRUNUX0VR
KCJpcyBhbnl0aGluZyIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsKLX0KLQotVEVTVF9GKEZsb2F0
TmVhclRlc3QsIE5hblNlbnNpdGl2ZUZsb2F0TmVhckNhbkRlc2NyaWJlU2VsZikgewotICBNYXRj
aGVyPGZsb2F0PiBtMSA9IE5hblNlbnNpdGl2ZUZsb2F0TmVhcigyLjBmLCAwLjVmKTsKLSAgRVhQ
RUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDIgKGFic29sdXRlIGVycm9yIDw9IDAuNSkiLCBEZXNj
cmliZShtMSkpOwotICBFWFBFQ1RfRVEoCi0gICAgICAiaXNuJ3QgYXBwcm94aW1hdGVseSAyIChh
YnNvbHV0ZSBlcnJvciA+IDAuNSkiLCBEZXNjcmliZU5lZ2F0aW9uKG0xKSk7Ci0KLSAgTWF0Y2hl
cjxmbG9hdD4gbTIgPSBOYW5TZW5zaXRpdmVGbG9hdE5lYXIoMC41ZiwgMC41Zik7Ci0gIEVYUEVD
VF9FUSgiaXMgYXBwcm94aW1hdGVseSAwLjUgKGFic29sdXRlIGVycm9yIDw9IDAuNSkiLCBEZXNj
cmliZShtMikpOwotICBFWFBFQ1RfRVEoCi0gICAgICAiaXNuJ3QgYXBwcm94aW1hdGVseSAwLjUg
KGFic29sdXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRpb24obTIpKTsKLQotICBNYXRj
aGVyPGZsb2F0PiBtMyA9IE5hblNlbnNpdGl2ZUZsb2F0TmVhcihuYW4xXywgMC4xZik7Ci0gIEVY
UEVDVF9FUSgiaXMgTmFOIiwgRGVzY3JpYmUobTMpKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBOYU4i
LCBEZXNjcmliZU5lZ2F0aW9uKG0zKSk7Ci19Ci0KLVRFU1RfRihGbG9hdE5lYXJUZXN0LCBGbG9h
dE5lYXJDYW5ub3RNYXRjaE5hTikgewotICAvLyBGbG9hdE5lYXIgbmV2ZXIgbWF0Y2hlcyBOYU4u
Ci0gIE1hdGNoZXI8ZmxvYXQ+IG0gPSBGbG9hdE5lYXIoUGFyZW50VHlwZTo6bmFuMV8sIDAuMWYp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMobmFuMl8pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjApKTsKLX0KLQotVEVT
VF9GKEZsb2F0TmVhclRlc3QsIE5hblNlbnNpdGl2ZUZsb2F0TmVhckNhbk1hdGNoTmFOKSB7Ci0g
IC8vIE5hblNlbnNpdGl2ZUZsb2F0TmVhciB3aWxsIG1hdGNoIE5hTi4KLSAgTWF0Y2hlcjxmbG9h
dD4gbSA9IE5hblNlbnNpdGl2ZUZsb2F0TmVhcihuYW4xXywgMC4xZik7Ci0gIEVYUEVDVF9UUlVF
KG0uTWF0Y2hlcyhuYW4xXykpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobmFuMl8pKTsKLSAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygxLjApKTsKLX0KLQotLy8gSW5zdGFudGlhdGUgRmxvYXRp
bmdQb2ludFRlc3QgZm9yIHRlc3RpbmcgZG91Ymxlcy4KLXR5cGVkZWYgRmxvYXRpbmdQb2ludFRl
c3Q8ZG91YmxlPiBEb3VibGVUZXN0OwotCi1URVNUX0YoRG91YmxlVGVzdCwgRG91YmxlRXFBcHBy
b3hpbWF0ZWx5TWF0Y2hlc0RvdWJsZXMpIHsKLSAgVGVzdE1hdGNoZXMoJkRvdWJsZUVxKTsKLX0K
LQotVEVTVF9GKERvdWJsZVRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZUVxQXBwcm94aW1hdGVseU1h
dGNoZXNEb3VibGVzKSB7Ci0gIFRlc3RNYXRjaGVzKCZOYW5TZW5zaXRpdmVEb3VibGVFcSk7Ci19
Ci0KLVRFU1RfRihEb3VibGVUZXN0LCBEb3VibGVFcUNhbm5vdE1hdGNoTmFOKSB7Ci0gIC8vIERv
dWJsZUVxIG5ldmVyIG1hdGNoZXMgTmFOLgotICBNYXRjaGVyPGRvdWJsZT4gbSA9IERvdWJsZUVx
KG5hbjFfKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhuYW4xXykpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKG5hbjJfKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Ci19
Ci0KLVRFU1RfRihEb3VibGVUZXN0LCBOYW5TZW5zaXRpdmVEb3VibGVFcUNhbk1hdGNoTmFOKSB7
Ci0gIC8vIE5hblNlbnNpdGl2ZURvdWJsZUVxIHdpbGwgbWF0Y2ggTmFOLgotICBNYXRjaGVyPGRv
dWJsZT4gbSA9IE5hblNlbnNpdGl2ZURvdWJsZUVxKG5hbjFfKTsKLSAgRVhQRUNUX1RSVUUobS5N
YXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuYW4yXykpOwotICBFWFBF
Q1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQotCi1URVNUX0YoRG91YmxlVGVzdCwgRG91Ymxl
RXFDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxkb3VibGU+IG0xID0gRG91YmxlRXEoMi4w
KTsKLSAgRVhQRUNUX0VRKCJpcyBhcHByb3hpbWF0ZWx5IDIiLCBEZXNjcmliZShtMSkpOwotICBF
WFBFQ1RfRVEoImlzbid0IGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsK
LQotICBNYXRjaGVyPGRvdWJsZT4gbTIgPSBEb3VibGVFcSgwLjUpOwotICBFWFBFQ1RfRVEoImlz
IGFwcHJveGltYXRlbHkgMC41IiwgRGVzY3JpYmUobTIpKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBh
cHByb3hpbWF0ZWx5IDAuNSIsIERlc2NyaWJlTmVnYXRpb24obTIpKTsKLQotICBNYXRjaGVyPGRv
dWJsZT4gbTMgPSBEb3VibGVFcShuYW4xXyk7Ci0gIEVYUEVDVF9FUSgibmV2ZXIgbWF0Y2hlcyIs
IERlc2NyaWJlKG0zKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW55dGhpbmciLCBEZXNjcmliZU5lZ2F0
aW9uKG0zKSk7Ci19Ci0KLVRFU1RfRihEb3VibGVUZXN0LCBOYW5TZW5zaXRpdmVEb3VibGVFcUNh
bkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGRvdWJsZT4gbTEgPSBOYW5TZW5zaXRpdmVEb3Vi
bGVFcSgyLjApOwotICBFWFBFQ1RfRVEoImlzIGFwcHJveGltYXRlbHkgMiIsIERlc2NyaWJlKG0x
KSk7Ci0gIEVYUEVDVF9FUSgiaXNuJ3QgYXBwcm94aW1hdGVseSAyIiwgRGVzY3JpYmVOZWdhdGlv
bihtMSkpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBtMiA9IE5hblNlbnNpdGl2ZURvdWJsZUVxKDAu
NSk7Ci0gIEVYUEVDVF9FUSgiaXMgYXBwcm94aW1hdGVseSAwLjUiLCBEZXNjcmliZShtMikpOwot
ICBFWFBFQ1RfRVEoImlzbid0IGFwcHJveGltYXRlbHkgMC41IiwgRGVzY3JpYmVOZWdhdGlvbiht
MikpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBtMyA9IE5hblNlbnNpdGl2ZURvdWJsZUVxKG5hbjFf
KTsKLSAgRVhQRUNUX0VRKCJpcyBOYU4iLCBEZXNjcmliZShtMykpOwotICBFWFBFQ1RfRVEoImlz
bid0IE5hTiIsIERlc2NyaWJlTmVnYXRpb24obTMpKTsKLX0KLQotLy8gSW5zdGFudGlhdGUgRmxv
YXRpbmdQb2ludFRlc3QgZm9yIHRlc3RpbmcgZmxvYXRzIHdpdGggYSB1c2VyLXNwZWNpZmllZAot
Ly8gbWF4IGFic29sdXRlIGVycm9yLgotdHlwZWRlZiBGbG9hdGluZ1BvaW50TmVhclRlc3Q8ZG91
YmxlPiBEb3VibGVOZWFyVGVzdDsKLQotVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBEb3VibGVOZWFy
TWF0Y2hlcykgewotICBUZXN0TmVhck1hdGNoZXMoJkRvdWJsZU5lYXIpOwotfQotCi1URVNUX0Yo
RG91YmxlTmVhclRlc3QsIE5hblNlbnNpdGl2ZURvdWJsZU5lYXJBcHByb3hpbWF0ZWx5TWF0Y2hl
c0RvdWJsZXMpIHsKLSAgVGVzdE5lYXJNYXRjaGVzKCZOYW5TZW5zaXRpdmVEb3VibGVOZWFyKTsK
LX0KLQotVEVTVF9GKERvdWJsZU5lYXJUZXN0LCBEb3VibGVOZWFyQ2FuRGVzY3JpYmVTZWxmKSB7
Ci0gIE1hdGNoZXI8ZG91YmxlPiBtMSA9IERvdWJsZU5lYXIoMi4wLCAwLjUpOwotICBFWFBFQ1Rf
RVEoImlzIGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJl
KG0xKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDIgKGFic29s
dXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLQotICBNYXRjaGVyPGRv
dWJsZT4gbTIgPSBEb3VibGVOZWFyKDAuNSwgMC41KTsKLSAgRVhQRUNUX0VRKCJpcyBhcHByb3hp
bWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJlKG0yKSk7Ci0gIEVY
UEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3Ig
PiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotCi0gIE1hdGNoZXI8ZG91YmxlPiBtMyA9
IERvdWJsZU5lYXIobmFuMV8sIDAuMCk7Ci0gIEVYUEVDVF9FUSgibmV2ZXIgbWF0Y2hlcyIsIERl
c2NyaWJlKG0zKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW55dGhpbmciLCBEZXNjcmliZU5lZ2F0aW9u
KG0zKSk7Ci19Ci0KLVRFU1RfRihEb3VibGVOZWFyVGVzdCwgRXhwbGFpbnNSZXN1bHRXaGVuTWF0
Y2hGYWlscykgewotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4oRG91YmxlTmVhcigyLjAsIDAuMSks
IDIuMDUpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBpcyAwLjIgZnJvbSAyIiwgRXhwbGFpbihEb3Vi
bGVOZWFyKDIuMCwgMC4xKSwgMi4yKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgLTAuMyBmcm9t
IDIiLCBFeHBsYWluKERvdWJsZU5lYXIoMi4wLCAwLjEpLCAxLjcpKTsKLQotICBjb25zdCBzdGQ6
OnN0cmluZyBleHBsYW5hdGlvbiA9Ci0gICAgICBFeHBsYWluKERvdWJsZU5lYXIoMi4xLCAxZS0x
MCksIDIuMSArIDEuMmUtMTApOwotICAvLyBEaWZmZXJlbnQgQysrIGltcGxlbWVudGF0aW9ucyBt
YXkgcHJpbnQgZmxvYXRpbmctcG9pbnQgbnVtYmVycwotICAvLyBzbGlnaHRseSBkaWZmZXJlbnRs
eS4KLSAgRVhQRUNUX1RSVUUoZXhwbGFuYXRpb24gPT0gIndoaWNoIGlzIDEuMmUtMTAgZnJvbSAy
LjEiIHx8ICAvLyBHQ0MKLSAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPT0gIndoaWNoIGlzIDEu
MmUtMDEwIGZyb20gMi4xIikgICAvLyBNU1ZDCi0gICAgICA8PCAiIHdoZXJlIGV4cGxhbmF0aW9u
IGlzIFwiIiA8PCBleHBsYW5hdGlvbiA8PCAiXCIuIjsKLX0KLQotVEVTVF9GKERvdWJsZU5lYXJU
ZXN0LCBOYW5TZW5zaXRpdmVEb3VibGVOZWFyQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8
ZG91YmxlPiBtMSA9IE5hblNlbnNpdGl2ZURvdWJsZU5lYXIoMi4wLCAwLjUpOwotICBFWFBFQ1Rf
RVEoImlzIGFwcHJveGltYXRlbHkgMiAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJl
KG0xKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDIgKGFic29s
dXRlIGVycm9yID4gMC41KSIsIERlc2NyaWJlTmVnYXRpb24obTEpKTsKLQotICBNYXRjaGVyPGRv
dWJsZT4gbTIgPSBOYW5TZW5zaXRpdmVEb3VibGVOZWFyKDAuNSwgMC41KTsKLSAgRVhQRUNUX0VR
KCJpcyBhcHByb3hpbWF0ZWx5IDAuNSAoYWJzb2x1dGUgZXJyb3IgPD0gMC41KSIsIERlc2NyaWJl
KG0yKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJpc24ndCBhcHByb3hpbWF0ZWx5IDAuNSAoYWJz
b2x1dGUgZXJyb3IgPiAwLjUpIiwgRGVzY3JpYmVOZWdhdGlvbihtMikpOwotCi0gIE1hdGNoZXI8
ZG91YmxlPiBtMyA9IE5hblNlbnNpdGl2ZURvdWJsZU5lYXIobmFuMV8sIDAuMSk7Ci0gIEVYUEVD
VF9FUSgiaXMgTmFOIiwgRGVzY3JpYmUobTMpKTsKLSAgRVhQRUNUX0VRKCJpc24ndCBOYU4iLCBE
ZXNjcmliZU5lZ2F0aW9uKG0zKSk7Ci19Ci0KLVRFU1RfRihEb3VibGVOZWFyVGVzdCwgRG91Ymxl
TmVhckNhbm5vdE1hdGNoTmFOKSB7Ci0gIC8vIERvdWJsZU5lYXIgbmV2ZXIgbWF0Y2hlcyBOYU4u
Ci0gIE1hdGNoZXI8ZG91YmxlPiBtID0gRG91YmxlTmVhcihQYXJlbnRUeXBlOjpuYW4xXywgMC4x
KTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhuYW4xXykpOwotICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKG5hbjJfKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoMS4wKSk7Ci19Ci0KLVRF
U1RfRihEb3VibGVOZWFyVGVzdCwgTmFuU2Vuc2l0aXZlRG91YmxlTmVhckNhbk1hdGNoTmFOKSB7
Ci0gIC8vIE5hblNlbnNpdGl2ZURvdWJsZU5lYXIgd2lsbCBtYXRjaCBOYU4uCi0gIE1hdGNoZXI8
ZG91YmxlPiBtID0gTmFuU2Vuc2l0aXZlRG91YmxlTmVhcihuYW4xXywgMC4xKTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKG5hbjFfKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhuYW4yXykp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEuMCkpOwotfQotCi1URVNUKFBvaW50ZWVUZXN0
LCBSYXdQb2ludGVyKSB7Ci0gIGNvbnN0IE1hdGNoZXI8aW50Kj4gbSA9IFBvaW50ZWUoR2UoMCkp
OwotCi0gIGludCBuID0gMTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZuKSk7Ci0gIG4gPSAt
MTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygmbikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRj
aGVzKE5VTEwpKTsKLX0KLQotVEVTVChQb2ludGVlVGVzdCwgUmF3UG9pbnRlclRvQ29uc3QpIHsK
LSAgY29uc3QgTWF0Y2hlcjxjb25zdCBkb3VibGUqPiBtID0gUG9pbnRlZShHZSgwKSk7Ci0KLSAg
ZG91YmxlIHggPSAxOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJngpKTsKLSAgeCA9IC0xOwot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZ4KSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
TlVMTCkpOwotfQotCi1URVNUKFBvaW50ZWVUZXN0LCBSZWZlcmVuY2VUb0NvbnN0UmF3UG9pbnRl
cikgewotICBjb25zdCBNYXRjaGVyPGludCogY29uc3QgJj4gbSA9IFBvaW50ZWUoR2UoMCkpOwot
Ci0gIGludCBuID0gMTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZuKSk7Ci0gIG4gPSAtMTsK
LSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcygmbikpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVz
KE5VTEwpKTsKLX0KLQotVEVTVChQb2ludGVlVGVzdCwgUmVmZXJlbmNlVG9Ob25Db25zdFJhd1Bv
aW50ZXIpIHsKLSAgY29uc3QgTWF0Y2hlcjxkb3VibGUqICY+IG0gPSBQb2ludGVlKEdlKDApKTsK
LQotICBkb3VibGUgeCA9IDEuMDsKLSAgZG91YmxlKiBwID0gJng7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcyhwKSk7Ci0gIHggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhwKSk7Ci0g
IHAgPSBOVUxMOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHApKTsKLX0KLQotTUFUQ0hFUl9Q
KEZpZWxkSUlzLCBpbm5lcl9tYXRjaGVyLCAiIikgewotICByZXR1cm4gRXhwbGFpbk1hdGNoUmVz
dWx0KGlubmVyX21hdGNoZXIsIGFyZy5pLCByZXN1bHRfbGlzdGVuZXIpOwotfQotCi0jaWYgR1RF
U1RfSEFTX1JUVEkKLQotVEVTVChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIFNhbWVUeXBlKSB7Ci0g
IERlcml2ZWQgZGVyaXZlZDsKLSAgZGVyaXZlZC5pID0gNDsKLQotICAvLyBSaWdodCB0eXBlLiBB
IHBvaW50ZXIgaXMgcGFzc2VkIGRvd24uCi0gIEJhc2UqIGFzX2Jhc2VfcHRyID0gJmRlcml2ZWQ7
Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4o
Tm90KElzTnVsbCgpKSkpOwotICBFWFBFQ1RfVEhBVChhc19iYXNlX3B0ciwgV2hlbkR5bmFtaWND
YXN0VG88RGVyaXZlZCo+KFBvaW50ZWUoRmllbGRJSXMoNCkpKSk7Ci0gIEVYUEVDVF9USEFUKGFz
X2Jhc2VfcHRyLAotICAgICAgICAgICAgICBOb3QoV2hlbkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+
KFBvaW50ZWUoRmllbGRJSXMoNSkpKSkpOwotfQotCi1URVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVz
dCwgV3JvbmdUeXBlcykgewotICBCYXNlIGJhc2U7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgT3Ro
ZXJEZXJpdmVkIG90aGVyX2Rlcml2ZWQ7Ci0KLSAgLy8gV3JvbmcgdHlwZXMuIE5VTEwgaXMgcGFz
c2VkLgotICBFWFBFQ1RfVEhBVCgmYmFzZSwgTm90KFdoZW5EeW5hbWljQ2FzdFRvPERlcml2ZWQq
PihQb2ludGVlKF8pKSkpOwotICBFWFBFQ1RfVEhBVCgmYmFzZSwgV2hlbkR5bmFtaWNDYXN0VG88
RGVyaXZlZCo+KElzTnVsbCgpKSk7Ci0gIEJhc2UqIGFzX2Jhc2VfcHRyID0gJmRlcml2ZWQ7Ci0g
IEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBOb3QoV2hlbkR5bmFtaWNDYXN0VG88T3RoZXJEZXJp
dmVkKj4oUG9pbnRlZShfKSkpKTsKLSAgRVhQRUNUX1RIQVQoYXNfYmFzZV9wdHIsIFdoZW5EeW5h
bWljQ2FzdFRvPE90aGVyRGVyaXZlZCo+KElzTnVsbCgpKSk7Ci0gIGFzX2Jhc2VfcHRyID0gJm90
aGVyX2Rlcml2ZWQ7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRyLCBOb3QoV2hlbkR5bmFtaWND
YXN0VG88RGVyaXZlZCo+KFBvaW50ZWUoXykpKSk7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2VfcHRy
LCBXaGVuRHluYW1pY0Nhc3RUbzxEZXJpdmVkKj4oSXNOdWxsKCkpKTsKLX0KLQotVEVTVChXaGVu
RHluYW1pY0Nhc3RUb1Rlc3QsIEFscmVhZHlOdWxsKSB7Ci0gIC8vIEFscmVhZHkgTlVMTC4KLSAg
QmFzZSogYXNfYmFzZV9wdHIgPSBOVUxMOwotICBFWFBFQ1RfVEhBVChhc19iYXNlX3B0ciwgV2hl
bkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+KElzTnVsbCgpKSk7Ci19Ci0KLXN0cnVjdCBBbWJpZ3Vv
dXNDYXN0VHlwZXMgewotICBjbGFzcyBWaXJ0dWFsRGVyaXZlZCA6IHB1YmxpYyB2aXJ0dWFsIEJh
c2Uge307Ci0gIGNsYXNzIERlcml2ZWRTdWIxIDogcHVibGljIFZpcnR1YWxEZXJpdmVkIHt9Owot
ICBjbGFzcyBEZXJpdmVkU3ViMiA6IHB1YmxpYyBWaXJ0dWFsRGVyaXZlZCB7fTsKLSAgY2xhc3Mg
TWFueURlcml2ZWRJbkhpZXJhcmNoeSA6IHB1YmxpYyBEZXJpdmVkU3ViMSwgcHVibGljIERlcml2
ZWRTdWIyIHt9OwotfTsKLQotVEVTVChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIEFtYmlndW91c0Nh
c3QpIHsKLSAgQW1iaWd1b3VzQ2FzdFR5cGVzOjpEZXJpdmVkU3ViMSBzdWIxOwotICBBbWJpZ3Vv
dXNDYXN0VHlwZXM6Ok1hbnlEZXJpdmVkSW5IaWVyYXJjaHkgbWFueV9kZXJpdmVkOwotICAvLyBN
dWx0aXBseSBkZXJpdmVkIGZyb20gQmFzZS4gZHluYW1pY19jYXN0PD4gcmV0dXJucyBOVUxMLgot
ICBCYXNlKiBhc19iYXNlX3B0ciA9Ci0gICAgICBzdGF0aWNfY2FzdDxBbWJpZ3VvdXNDYXN0VHlw
ZXM6OkRlcml2ZWRTdWIxKj4oJm1hbnlfZGVyaXZlZCk7Ci0gIEVYUEVDVF9USEFUKGFzX2Jhc2Vf
cHRyLAotICAgICAgICAgICAgICBXaGVuRHluYW1pY0Nhc3RUbzxBbWJpZ3VvdXNDYXN0VHlwZXM6
OlZpcnR1YWxEZXJpdmVkKj4oSXNOdWxsKCkpKTsKLSAgYXNfYmFzZV9wdHIgPSAmc3ViMTsKLSAg
RVhQRUNUX1RIQVQoCi0gICAgICBhc19iYXNlX3B0ciwKLSAgICAgIFdoZW5EeW5hbWljQ2FzdFRv
PEFtYmlndW91c0Nhc3RUeXBlczo6VmlydHVhbERlcml2ZWQqPihOb3QoSXNOdWxsKCkpKSk7Ci19
Ci0KLVRFU1QoV2hlbkR5bmFtaWNDYXN0VG9UZXN0LCBEZXNjcmliZSkgewotICBNYXRjaGVyPEJh
c2UqPiBtYXRjaGVyID0gV2hlbkR5bmFtaWNDYXN0VG88RGVyaXZlZCo+KFBvaW50ZWUoXykpOwot
ICBjb25zdCBzdHJpbmcgcHJlZml4ID0KLSAgICAgICJ3aGVuIGR5bmFtaWNfY2FzdCB0byAiICsg
aW50ZXJuYWw6OkdldFR5cGVOYW1lPERlcml2ZWQqPigpICsgIiwgIjsKLSAgRVhQRUNUX0VRKHBy
ZWZpeCArICJwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IGlzIGFueXRoaW5nIiwgRGVzY3JpYmUobWF0
Y2hlcikpOwotICBFWFBFQ1RfRVEocHJlZml4ICsgImRvZXMgbm90IHBvaW50IHRvIGEgdmFsdWUg
dGhhdCBpcyBhbnl0aGluZyIsCi0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG1hdGNoZXIp
KTsKLX0KLQotVEVTVChXaGVuRHluYW1pY0Nhc3RUb1Rlc3QsIEV4cGxhaW4pIHsKLSAgTWF0Y2hl
cjxCYXNlKj4gbWF0Y2hlciA9IFdoZW5EeW5hbWljQ2FzdFRvPERlcml2ZWQqPihQb2ludGVlKF8p
KTsKLSAgQmFzZSogbnVsbCA9IE5VTEw7Ci0gIEVYUEVDVF9USEFUKEV4cGxhaW4obWF0Y2hlciwg
bnVsbCksIEhhc1N1YnN0cigiTlVMTCIpKTsKLSAgRGVyaXZlZCBkZXJpdmVkOwotICBFWFBFQ1Rf
VFJVRShtYXRjaGVyLk1hdGNoZXMoJmRlcml2ZWQpKTsKLSAgRVhQRUNUX1RIQVQoRXhwbGFpbiht
YXRjaGVyLCAmZGVyaXZlZCksIEhhc1N1YnN0cigid2hpY2ggcG9pbnRzIHRvICIpKTsKLQotICAv
LyBXaXRoIHJlZmVyZW5jZXMsIHRoZSBtYXRjaGVyIGl0c2VsZiBjYW4gZmFpbC4gVGVzdCBmb3Ig
dGhhdCBvbmUuCi0gIE1hdGNoZXI8Y29uc3QgQmFzZSY+IHJlZl9tYXRjaGVyID0gV2hlbkR5bmFt
aWNDYXN0VG88Y29uc3QgT3RoZXJEZXJpdmVkJj4oXyk7Ci0gIEVYUEVDVF9USEFUKEV4cGxhaW4o
cmVmX21hdGNoZXIsIGRlcml2ZWQpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIndoaWNoIGNh
bm5vdCBiZSBkeW5hbWljX2Nhc3QiKSk7Ci19Ci0KLVRFU1QoV2hlbkR5bmFtaWNDYXN0VG9UZXN0
LCBHb29kUmVmZXJlbmNlKSB7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgZGVyaXZlZC5pID0gNDsK
LSAgQmFzZSYgYXNfYmFzZV9yZWYgPSBkZXJpdmVkOwotICBFWFBFQ1RfVEhBVChhc19iYXNlX3Jl
ZiwgV2hlbkR5bmFtaWNDYXN0VG88Y29uc3QgRGVyaXZlZCY+KEZpZWxkSUlzKDQpKSk7Ci0gIEVY
UEVDVF9USEFUKGFzX2Jhc2VfcmVmLCBXaGVuRHluYW1pY0Nhc3RUbzxjb25zdCBEZXJpdmVkJj4o
Tm90KEZpZWxkSUlzKDUpKSkpOwotfQotCi1URVNUKFdoZW5EeW5hbWljQ2FzdFRvVGVzdCwgQmFk
UmVmZXJlbmNlKSB7Ci0gIERlcml2ZWQgZGVyaXZlZDsKLSAgQmFzZSYgYXNfYmFzZV9yZWYgPSBk
ZXJpdmVkOwotICBFWFBFQ1RfVEhBVChhc19iYXNlX3JlZiwgTm90KFdoZW5EeW5hbWljQ2FzdFRv
PGNvbnN0IE90aGVyRGVyaXZlZCY+KF8pKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1JU
VEkKLQotLy8gTWluaW1hbCBjb25zdC1wcm9wYWdhdGluZyBwb2ludGVyLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1jbGFzcyBDb25zdFByb3BhZ2F0aW5nUHRyIHsKLSBwdWJsaWM6Ci0gIHR5cGVk
ZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgQ29uc3RQcm9wYWdhdGluZ1B0cigpIDogdmFsXygpIHt9
Ci0gIGV4cGxpY2l0IENvbnN0UHJvcGFnYXRpbmdQdHIoVCogdCkgOiB2YWxfKHQpIHt9Ci0gIENv
bnN0UHJvcGFnYXRpbmdQdHIoY29uc3QgQ29uc3RQcm9wYWdhdGluZ1B0ciYgb3RoZXIpIDogdmFs
XyhvdGhlci52YWxfKSB7fQotCi0gIFQqIGdldCgpIHsgcmV0dXJuIHZhbF87IH0KLSAgVCYgb3Bl
cmF0b3IqKCkgeyByZXR1cm4gKnZhbF87IH0KLSAgLy8gTW9zdCBzbWFydCBwb2ludGVycyByZXR1
cm4gbm9uLWNvbnN0IFQqIGFuZCBUJiBmcm9tIHRoZSBuZXh0IG1ldGhvZHMuCi0gIGNvbnN0IFQq
IGdldCgpIGNvbnN0IHsgcmV0dXJuIHZhbF87IH0KLSAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29u
c3QgeyByZXR1cm4gKnZhbF87IH0KLQotIHByaXZhdGU6Ci0gIFQqIHZhbF87Ci19OwotCi1URVNU
KFBvaW50ZWVUZXN0LCBXb3Jrc1dpdGhDb25zdFByb3BhZ2F0aW5nUG9pbnRlcnMpIHsKLSAgY29u
c3QgTWF0Y2hlcjwgQ29uc3RQcm9wYWdhdGluZ1B0cjxpbnQ+ID4gbSA9IFBvaW50ZWUoTHQoNSkp
OwotICBpbnQgdGhyZWUgPSAzOwotICBjb25zdCBDb25zdFByb3BhZ2F0aW5nUHRyPGludD4gY28o
JnRocmVlKTsKLSAgQ29uc3RQcm9wYWdhdGluZ1B0cjxpbnQ+IG8oJnRocmVlKTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKG8pKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGNvKSk7Ci0gICpv
ID0gNjsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhvKSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoQ29uc3RQcm9wYWdhdGluZ1B0cjxpbnQ+KCkpKTsKLX0KLQotVEVTVChQb2ludGVlVGVz
dCwgTmV2ZXJNYXRjaGVzTnVsbCkgewotICBjb25zdCBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtID0g
UG9pbnRlZShfKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgd2UgY2FuIHdyaXRlIFBvaW50ZWUodmFsdWUpIGluc3RlYWQgb2YgUG9pbnRlZShF
cSh2YWx1ZSkpLgotVEVTVChQb2ludGVlVGVzdCwgTWF0Y2hlc0FnYWluc3RBVmFsdWUpIHsKLSAg
Y29uc3QgTWF0Y2hlcjxpbnQqPiBtID0gUG9pbnRlZSg1KTsKLQotICBpbnQgbiA9IDU7Ci0gIEVY
UEVDVF9UUlVFKG0uTWF0Y2hlcygmbikpOwotICBuID0gLTE7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoJm4pKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLVRFU1Qo
UG9pbnRlZVRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBjb25zdCBNYXRjaGVyPGludCo+IG0g
PSBQb2ludGVlKEd0KDMpKTsKLSAgRVhQRUNUX0VRKCJwb2ludHMgdG8gYSB2YWx1ZSB0aGF0IGlz
ID4gMyIsIERlc2NyaWJlKG0pKTsKLSAgRVhQRUNUX0VRKCJkb2VzIG5vdCBwb2ludCB0byBhIHZh
bHVlIHRoYXQgaXMgPiAzIiwKLSAgICAgICAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQot
Ci1URVNUKFBvaW50ZWVUZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHQpIHsKLSAgY29uc3QgTWF0
Y2hlcjxjb25zdCBzdGQ6OnN0cmluZyo+IG0gPSBQb2ludGVlKFN0YXJ0c1dpdGgoIkhpIikpOwot
Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OnN0cmlu
Zyo+KE5VTEwpKSk7Ci0KLSAgY29uc3QgTWF0Y2hlcjxsb25nKj4gbTIgPSBQb2ludGVlKEdyZWF0
ZXJUaGFuKDEpKTsgIC8vIE5PTElOVAotICBsb25nIG4gPSAzOyAgLy8gTk9MSU5UCi0gIEVYUEVD
VF9FUSgid2hpY2ggcG9pbnRzIHRvIDMiICsgT2ZUeXBlKCJsb25nIikgKyAiLCB3aGljaCBpcyAy
IG1vcmUgdGhhbiAxIiwKLSAgICAgICAgICAgIEV4cGxhaW4obTIsICZuKSk7Ci19Ci0KLVRFU1Qo
UG9pbnRlZVRlc3QsIEFsd2F5c0V4cGxhaW5zUG9pbnRlZSkgewotICBjb25zdCBNYXRjaGVyPGlu
dCo+IG0gPSBQb2ludGVlKDApOwotICBpbnQgbiA9IDQyOwotICBFWFBFQ1RfRVEoIndoaWNoIHBv
aW50cyB0byA0MiIgKyBPZlR5cGUoImludCIpLCBFeHBsYWluKG0sICZuKSk7Ci19Ci0KLS8vIEFu
IHVuY29weWFibGUgY2xhc3MuCi1jbGFzcyBVbmNvcHlhYmxlIHsKLSBwdWJsaWM6Ci0gIFVuY29w
eWFibGUoKSA6IHZhbHVlXygtMSkge30KLSAgZXhwbGljaXQgVW5jb3B5YWJsZShpbnQgYV92YWx1
ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KLSAgdm9pZCBzZXRfdmFsdWUoaW50IGkpIHsgdmFsdWVfID0gaTsgfQotCi0gcHJp
dmF0ZToKLSAgaW50IHZhbHVlXzsKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhV
bmNvcHlhYmxlKTsKLX07Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgeC52YWx1ZSgpIGlzIHBvc2l0
aXZlLgotYm9vbCBWYWx1ZUlzUG9zaXRpdmUoY29uc3QgVW5jb3B5YWJsZSYgeCkgeyByZXR1cm4g
eC52YWx1ZSgpID4gMDsgfQotCi1NQVRDSEVSX1AoVW5jb3B5YWJsZUlzLCBpbm5lcl9tYXRjaGVy
LCAiIikgewotICByZXR1cm4gRXhwbGFpbk1hdGNoUmVzdWx0KGlubmVyX21hdGNoZXIsIGFyZy52
YWx1ZSgpLCByZXN1bHRfbGlzdGVuZXIpOwotfQotCi0vLyBBIHVzZXItZGVmaW5lZCBzdHJ1Y3Qg
Zm9yIHRlc3RpbmcgRmllbGQoKS4KLXN0cnVjdCBBU3RydWN0IHsKLSAgQVN0cnVjdCgpIDogeCgw
KSwgeSgxLjApLCB6KDUpLCBwKE5VTEwpIHt9Ci0gIEFTdHJ1Y3QoY29uc3QgQVN0cnVjdCYgcmhz
KQotICAgICAgOiB4KHJocy54KSwgeShyaHMueSksIHoocmhzLnoudmFsdWUoKSksIHAocmhzLnAp
IHt9Ci0KLSAgaW50IHg7ICAgICAgICAgICAvLyBBIG5vbi1jb25zdCBmaWVsZC4KLSAgY29uc3Qg
ZG91YmxlIHk7ICAvLyBBIGNvbnN0IGZpZWxkLgotICBVbmNvcHlhYmxlIHo7ICAgIC8vIEFuIHVu
Y29weWFibGUgZmllbGQuCi0gIGNvbnN0IGNoYXIqIHA7ICAgLy8gQSBwb2ludGVyIGZpZWxkLgot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhBU3RydWN0KTsKLX07Ci0KLS8v
IEEgZGVyaXZlZCBzdHJ1Y3QgZm9yIHRlc3RpbmcgRmllbGQoKS4KLXN0cnVjdCBEZXJpdmVkU3Ry
dWN0IDogcHVibGljIEFTdHJ1Y3QgewotICBjaGFyIGNoOwotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQVNTSUdOXyhEZXJpdmVkU3RydWN0KTsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgRmll
bGQoJkZvbzo6ZmllbGQsIC4uLikgd29ya3Mgd2hlbiBmaWVsZCBpcyBub24tY29uc3QuCi1URVNU
KEZpZWxkVGVzdCwgV29ya3NGb3JOb25Db25zdEZpZWxkKSB7Ci0gIE1hdGNoZXI8QVN0cnVjdD4g
bSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7Ci0KLSAgQVN0cnVjdCBhOwotICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hl
cyhhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoJkZvbzo6ZmllbGQsIC4uLikgd29ya3Mg
d2hlbiBmaWVsZCBpcyBjb25zdC4KLVRFU1QoRmllbGRUZXN0LCBXb3Jrc0ZvckNvbnN0RmllbGQp
IHsKLSAgQVN0cnVjdCBhOwotCi0gIE1hdGNoZXI8QVN0cnVjdD4gbSA9IEZpZWxkKCZBU3RydWN0
Ojp5LCBHZSgwLjApKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLSAgbSA9IEZpZWxk
KCZBU3RydWN0Ojp5LCBMZSgwLjApKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoJkZvbzo6ZmllbGQsIC4uLikgd29ya3Mgd2hlbiBmaWVs
ZCBpcyBub3QgY29weWFibGUuCi1URVNUKEZpZWxkVGVzdCwgV29ya3NGb3JVbmNvcHlhYmxlRmll
bGQpIHsKLSAgQVN0cnVjdCBhOwotCi0gIE1hdGNoZXI8QVN0cnVjdD4gbSA9IEZpZWxkKCZBU3Ry
dWN0Ojp6LCBUcnVseShWYWx1ZUlzUG9zaXRpdmUpKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVz
KGEpKTsKLSAgbSA9IEZpZWxkKCZBU3RydWN0Ojp6LCBOb3QoVHJ1bHkoVmFsdWVJc1Bvc2l0aXZl
KSkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBG
aWVsZCgmRm9vOjpmaWVsZCwgLi4uKSB3b3JrcyB3aGVuIGZpZWxkIGlzIGEgcG9pbnRlci4KLVRF
U1QoRmllbGRUZXN0LCBXb3Jrc0ZvclBvaW50ZXJGaWVsZCkgewotICAvLyBNYXRjaGluZyBhZ2Fp
bnN0IE5VTEwuCi0gIE1hdGNoZXI8QVN0cnVjdD4gbSA9IEZpZWxkKCZBU3RydWN0OjpwLCBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oTlVMTCkpOwotICBBU3RydWN0IGE7Ci0gIEVYUEVDVF9UUlVF
KG0uTWF0Y2hlcyhhKSk7Ci0gIGEucCA9ICJoaSI7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMo
YSkpOwotCi0gIC8vIE1hdGNoaW5nIGEgcG9pbnRlciB0aGF0IGlzIG5vdCBOVUxMLgotICBtID0g
RmllbGQoJkFTdHJ1Y3Q6OnAsIFN0YXJ0c1dpdGgoImhpIikpOwotICBhLnAgPSAiaGlsbCI7Ci0g
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7Ci0gIGEucCA9ICJob2xlIjsKLSAgRVhQRUNUX0ZB
TFNFKG0uTWF0Y2hlcyhhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoKSB3b3JrcyB3aGVu
IHRoZSBvYmplY3QgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KLVRFU1QoRmllbGRUZXN0LCBXb3Jr
c0ZvckJ5UmVmQXJndW1lbnQpIHsKLSAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Jj4gbSA9IEZpZWxk
KCZBU3RydWN0Ojp4LCBHZSgwKSk7Ci0KLSAgQVN0cnVjdCBhOwotICBFWFBFQ1RfVFJVRShtLk1h
dGNoZXMoYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoJkZvbzo6ZmllbGQsIC4uLikgd29ya3Mgd2hlbiB0aGUg
YXJndW1lbnQncyB0eXBlCi0vLyBpcyBhIHN1Yi10eXBlIG9mIEZvby4KLVRFU1QoRmllbGRUZXN0
LCBXb3Jrc0ZvckFyZ3VtZW50T2ZTdWJUeXBlKSB7Ci0gIC8vIE5vdGUgdGhhdCB0aGUgbWF0Y2hl
ciBleHBlY3RzIERlcml2ZWRTdHJ1Y3QgYnV0IHdlIHNheSBBU3RydWN0Ci0gIC8vIGluc2lkZSBG
aWVsZCgpLgotICBNYXRjaGVyPGNvbnN0IERlcml2ZWRTdHJ1Y3QmPiBtID0gRmllbGQoJkFTdHJ1
Y3Q6OngsIEdlKDApKTsKLQotICBEZXJpdmVkU3RydWN0IGQ7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0
Y2hlcyhkKSk7Ci0gIGQueCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGQpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBGaWVsZCgmRm9vOjpmaWVsZCwgbSkgd29ya3Mgd2hlbiBmaWVsZCdz
IHR5cGUgYW5kIG0ncwotLy8gYXJndW1lbnQgdHlwZSBhcmUgY29tcGF0aWJsZSBidXQgbm90IHRo
ZSBzYW1lLgotVEVTVChGaWVsZFRlc3QsIFdvcmtzRm9yQ29tcGF0aWJsZU1hdGNoZXJUeXBlKSB7
Ci0gIC8vIFRoZSBmaWVsZCBpcyBhbiBpbnQsIGJ1dCB0aGUgaW5uZXIgbWF0Y2hlciBleHBlY3Rz
IGEgc2lnbmVkIGNoYXIuCi0gIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCY+IG0gPSBGaWVsZCgmQVN0
cnVjdDo6eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoZXI8c2ln
bmVkIGNoYXI+KEdlKDApKSk7Ci0KLSAgQVN0cnVjdCBhOwotICBFWFBFQ1RfVFJVRShtLk1hdGNo
ZXMoYSkpOwotICBhLnggPSAtMTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhhKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgRmllbGQoKSBjYW4gZGVzY3JpYmUgaXRzZWxmLgotVEVTVChGaWVsZFRl
c3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QmPiBtID0gRmll
bGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBFWFBFQ1RfRVEoImlzIGFuIG9iamVjdCB3aG9z
ZSBnaXZlbiBmaWVsZCBpcyA+PSAwIiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoImlzIGFu
IG9iamVjdCB3aG9zZSBnaXZlbiBmaWVsZCBpc24ndCA+PSAwIiwgRGVzY3JpYmVOZWdhdGlvbiht
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoKSBjYW4gZXhwbGFpbiB0aGUgbWF0Y2ggcmVz
dWx0LgotVEVTVChGaWVsZFRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewotICBNYXRjaGVy
PGNvbnN0IEFTdHJ1Y3QmPiBtID0gRmllbGQoJkFTdHJ1Y3Q6OngsIEdlKDApKTsKLQotICBBU3Ry
dWN0IGE7Ci0gIGEueCA9IDE7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZ2l2ZW4gZmllbGQgaXMgMSIg
KyBPZlR5cGUoImludCIpLCBFeHBsYWluKG0sIGEpKTsKLQotICBtID0gRmllbGQoJkFTdHJ1Y3Q6
OngsIEdyZWF0ZXJUaGFuKDApKTsKLSAgRVhQRUNUX0VRKAotICAgICAgIndob3NlIGdpdmVuIGZp
ZWxkIGlzIDEiICsgT2ZUeXBlKCJpbnQiKSArICIsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLAot
ICAgICAgRXhwbGFpbihtLCBhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoKSB3b3JrcyB3
aGVuIHRoZSBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gY29uc3QuCi1URVNUKEZpZWxkRm9yUG9p
bnRlclRlc3QsIFdvcmtzRm9yUG9pbnRlclRvQ29uc3QpIHsKLSAgTWF0Y2hlcjxjb25zdCBBU3Ry
dWN0Kj4gbSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7Ci0KLSAgQVN0cnVjdCBhOwotICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoJmEpKTsKLSAgYS54ID0gLTE7Ci0gIEVYUEVDVF9GQUxTRSht
Lk1hdGNoZXMoJmEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIHdvcmtzIHdoZW4gdGhl
IGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBub24tY29uc3QuCi1URVNUKEZpZWxkRm9yUG9pbnRl
clRlc3QsIFdvcmtzRm9yUG9pbnRlclRvTm9uQ29uc3QpIHsKLSAgTWF0Y2hlcjxBU3RydWN0Kj4g
bSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7Ci0KLSAgQVN0cnVjdCBhOwotICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoJmEpKTsKLSAgYS54ID0gLTE7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNo
ZXMoJmEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIHdvcmtzIHdoZW4gdGhlIGFyZ3Vt
ZW50IGlzIGEgcmVmZXJlbmNlIHRvIGEgY29uc3QgcG9pbnRlci4KLVRFU1QoRmllbGRGb3JQb2lu
dGVyVGVzdCwgV29ya3NGb3JSZWZlcmVuY2VUb0NvbnN0UG9pbnRlcikgewotICBNYXRjaGVyPEFT
dHJ1Y3QqIGNvbnN0Jj4gbSA9IEZpZWxkKCZBU3RydWN0Ojp4LCBHZSgwKSk7Ci0KLSAgQVN0cnVj
dCBhOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoJmEpKTsKLSAgYS54ID0gLTE7Ci0gIEVYUEVD
VF9GQUxTRShtLk1hdGNoZXMoJmEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBGaWVsZCgpIGRvZXMg
bm90IG1hdGNoIHRoZSBOVUxMIHBvaW50ZXIuCi1URVNUKEZpZWxkRm9yUG9pbnRlclRlc3QsIERv
ZXNOb3RNYXRjaE51bGwpIHsKLSAgTWF0Y2hlcjxjb25zdCBBU3RydWN0Kj4gbSA9IEZpZWxkKCZB
U3RydWN0Ojp4LCBfKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgRmllbGQoJkZvbzo6ZmllbGQsIC4uLikgd29ya3Mgd2hlbiB0aGUgYXJndW1l
bnQncyB0eXBlCi0vLyBpcyBhIHN1Yi10eXBlIG9mIGNvbnN0IEZvbyouCi1URVNUKEZpZWxkRm9y
UG9pbnRlclRlc3QsIFdvcmtzRm9yQXJndW1lbnRPZlN1YlR5cGUpIHsKLSAgLy8gTm90ZSB0aGF0
IHRoZSBtYXRjaGVyIGV4cGVjdHMgRGVyaXZlZFN0cnVjdCBidXQgd2Ugc2F5IEFTdHJ1Y3QKLSAg
Ly8gaW5zaWRlIEZpZWxkKCkuCi0gIE1hdGNoZXI8RGVyaXZlZFN0cnVjdCo+IG0gPSBGaWVsZCgm
QVN0cnVjdDo6eCwgR2UoMCkpOwotCi0gIERlcml2ZWRTdHJ1Y3QgZDsKLSAgRVhQRUNUX1RSVUUo
bS5NYXRjaGVzKCZkKSk7Ci0gIGQueCA9IC0xOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZk
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRmllbGQoKSBjYW4gZGVzY3JpYmUgaXRzZWxmIHdoZW4g
dXNlZCB0byBtYXRjaCBhIHBvaW50ZXIuCi1URVNUKEZpZWxkRm9yUG9pbnRlclRlc3QsIENhbkRl
c2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IEFTdHJ1Y3QqPiBtID0gRmllbGQoJkFTdHJ1
Y3Q6OngsIEdlKDApKTsKLQotICBFWFBFQ1RfRVEoImlzIGFuIG9iamVjdCB3aG9zZSBnaXZlbiBm
aWVsZCBpcyA+PSAwIiwgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoImlzIGFuIG9iamVjdCB3
aG9zZSBnaXZlbiBmaWVsZCBpc24ndCA+PSAwIiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgRmllbGQoKSBjYW4gZXhwbGFpbiB0aGUgcmVzdWx0IG9mIG1hdGNoaW5n
IGEgcG9pbnRlci4KLVRFU1QoRmllbGRGb3JQb2ludGVyVGVzdCwgQ2FuRXhwbGFpbk1hdGNoUmVz
dWx0KSB7Ci0gIE1hdGNoZXI8Y29uc3QgQVN0cnVjdCo+IG0gPSBGaWVsZCgmQVN0cnVjdDo6eCwg
R2UoMCkpOwotCi0gIEFTdHJ1Y3QgYTsKLSAgYS54ID0gMTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBs
YWluKG0sIHN0YXRpY19jYXN0PGNvbnN0IEFTdHJ1Y3QqPihOVUxMKSkpOwotICBFWFBFQ1RfRVEo
IndoaWNoIHBvaW50cyB0byBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gZmllbGQgaXMgMSIgKyBPZlR5
cGUoImludCIpLAotICAgICAgICAgICAgRXhwbGFpbihtLCAmYSkpOwotCi0gIG0gPSBGaWVsZCgm
QVN0cnVjdDo6eCwgR3JlYXRlclRoYW4oMCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIHBvaW50cyB0
byBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gZmllbGQgaXMgMSIgKyBPZlR5cGUoImludCIpICsKLSAg
ICAgICAgICAgICIsIHdoaWNoIGlzIDEgbW9yZSB0aGFuIDAiLCBFeHBsYWluKG0sICZhKSk7Ci19
Ci0KLS8vIEEgdXNlci1kZWZpbmVkIGNsYXNzIGZvciB0ZXN0aW5nIFByb3BlcnR5KCkuCi1jbGFz
cyBBQ2xhc3MgewotIHB1YmxpYzoKLSAgQUNsYXNzKCkgOiBuXygwKSB7fQotCi0gIC8vIEEgZ2V0
dGVyIHRoYXQgcmV0dXJucyBhIG5vbi1yZWZlcmVuY2UuCi0gIGludCBuKCkgY29uc3QgeyByZXR1
cm4gbl87IH0KLQotICB2b2lkIHNldF9uKGludCBuZXdfbikgeyBuXyA9IG5ld19uOyB9Ci0KLSAg
Ly8gQSBnZXR0ZXIgdGhhdCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGNvbnN0LgotICBjb25zdCBz
dGQ6OnN0cmluZyYgcygpIGNvbnN0IHsgcmV0dXJuIHNfOyB9Ci0KLSAgdm9pZCBzZXRfcyhjb25z
dCBzdGQ6OnN0cmluZyYgbmV3X3MpIHsgc18gPSBuZXdfczsgfQotCi0gIC8vIEEgZ2V0dGVyIHRo
YXQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBub24tY29uc3QuCi0gIGRvdWJsZSYgeCgpIGNvbnN0
IHsgcmV0dXJuIHhfOyB9Ci0gcHJpdmF0ZToKLSAgaW50IG5fOwotICBzdGQ6OnN0cmluZyBzXzsK
LQotICBzdGF0aWMgZG91YmxlIHhfOwotfTsKLQotZG91YmxlIEFDbGFzczo6eF8gPSAwLjA7Ci0K
LS8vIEEgZGVyaXZlZCBjbGFzcyBmb3IgdGVzdGluZyBQcm9wZXJ0eSgpLgotY2xhc3MgRGVyaXZl
ZENsYXNzIDogcHVibGljIEFDbGFzcyB7Ci0gcHVibGljOgotICBpbnQgaygpIGNvbnN0IHsgcmV0
dXJuIGtfOyB9Ci0gcHJpdmF0ZToKLSAgaW50IGtfOwotfTsKLQotLy8gVGVzdHMgdGhhdCBQcm9w
ZXJ0eSgmRm9vOjpwcm9wZXJ0eSwgLi4uKSB3b3JrcyB3aGVuIHByb3BlcnR5KCkKLS8vIHJldHVy
bnMgYSBub24tcmVmZXJlbmNlLgotVEVTVChQcm9wZXJ0eVRlc3QsIFdvcmtzRm9yTm9uUmVmZXJl
bmNlUHJvcGVydHkpIHsKLSAgTWF0Y2hlcjxjb25zdCBBQ2xhc3MmPiBtID0gUHJvcGVydHkoJkFD
bGFzczo6biwgR2UoMCkpOwotCi0gIEFDbGFzcyBhOwotICBhLnNldF9uKDEpOwotICBFWFBFQ1Rf
VFJVRShtLk1hdGNoZXMoYSkpOwotCi0gIGEuc2V0X24oLTEpOwotICBFWFBFQ1RfRkFMU0UobS5N
YXRjaGVzKGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgmRm9vOjpwcm9wZXJ0eSwg
Li4uKSB3b3JrcyB3aGVuIHByb3BlcnR5KCkKLS8vIHJldHVybnMgYSByZWZlcmVuY2UgdG8gY29u
c3QuCi1URVNUKFByb3BlcnR5VGVzdCwgV29ya3NGb3JSZWZlcmVuY2VUb0NvbnN0UHJvcGVydHkp
IHsKLSAgTWF0Y2hlcjxjb25zdCBBQ2xhc3MmPiBtID0gUHJvcGVydHkoJkFDbGFzczo6cywgU3Rh
cnRzV2l0aCgiaGkiKSk7Ci0KLSAgQUNsYXNzIGE7Ci0gIGEuc2V0X3MoImhpbGwiKTsKLSAgRVhQ
RUNUX1RSVUUobS5NYXRjaGVzKGEpKTsKLQotICBhLnNldF9zKCJob2xlIik7Ci0gIEVYUEVDVF9G
QUxTRShtLk1hdGNoZXMoYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZGb286OnBy
b3BlcnR5LCAuLi4pIHdvcmtzIHdoZW4gcHJvcGVydHkoKQotLy8gcmV0dXJucyBhIHJlZmVyZW5j
ZSB0byBub24tY29uc3QuCi1URVNUKFByb3BlcnR5VGVzdCwgV29ya3NGb3JSZWZlcmVuY2VUb05v
bkNvbnN0UHJvcGVydHkpIHsKLSAgZG91YmxlIHggPSAwLjA7Ci0gIEFDbGFzcyBhOwotCi0gIE1h
dGNoZXI8Y29uc3QgQUNsYXNzJj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6OngsIFJlZih4KSk7Ci0g
IEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoYSkpOwotCi0gIG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjp4
LCBOb3QoUmVmKHgpKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgUHJvcGVydHkoJkZvbzo6cHJvcGVydHksIC4uLikgd29ya3Mgd2hlbiB0aGUgYXJn
dW1lbnQgaXMKLS8vIHBhc3NlZCBieSB2YWx1ZS4KLVRFU1QoUHJvcGVydHlUZXN0LCBXb3Jrc0Zv
ckJ5VmFsdWVBcmd1bWVudCkgewotICBNYXRjaGVyPEFDbGFzcz4gbSA9IFByb3BlcnR5KCZBQ2xh
c3M6OnMsIFN0YXJ0c1dpdGgoImhpIikpOwotCi0gIEFDbGFzcyBhOwotICBhLnNldF9zKCJoaWxs
Iik7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhhKSk7Ci0KLSAgYS5zZXRfcygiaG9sZSIpOwot
ICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0
eSgmRm9vOjpwcm9wZXJ0eSwgLi4uKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCdzCi0vLyB0eXBl
IGlzIGEgc3ViLXR5cGUgb2YgRm9vLgotVEVTVChQcm9wZXJ0eVRlc3QsIFdvcmtzRm9yQXJndW1l
bnRPZlN1YlR5cGUpIHsKLSAgLy8gVGhlIG1hdGNoZXIgZXhwZWN0cyBhIERlcml2ZWRDbGFzcywg
YnV0IGluc2lkZSB0aGUgUHJvcGVydHkoKSB3ZQotICAvLyBzYXkgQUNsYXNzLgotICBNYXRjaGVy
PGNvbnN0IERlcml2ZWRDbGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0K
LSAgRGVyaXZlZENsYXNzIGQ7Ci0gIGQuc2V0X24oMSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hl
cyhkKSk7Ci0KLSAgZC5zZXRfbigtMSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXMoZCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCZGb286OnByb3BlcnR5LCBtKSB3b3JrcyB3aGVu
IHByb3BlcnR5KCkncyB0eXBlCi0vLyBhbmQgbSdzIGFyZ3VtZW50IHR5cGUgYXJlIGNvbXBhdGli
bGUgYnV0IGRpZmZlcmVudC4KLVRFU1QoUHJvcGVydHlUZXN0LCBXb3Jrc0ZvckNvbXBhdGlibGVN
YXRjaGVyVHlwZSkgewotICAvLyBuKCkgcmV0dXJucyBhbiBpbnQgYnV0IHRoZSBpbm5lciBtYXRj
aGVyIGV4cGVjdHMgYSBzaWduZWQgY2hhci4KLSAgTWF0Y2hlcjxjb25zdCBBQ2xhc3MmPiBtID0g
UHJvcGVydHkoJkFDbGFzczo6biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hlcjxzaWduZWQgY2hhcj4oR2UoMCkpKTsKLQotICBBQ2xhc3MgYTsKLSAgRVhQRUNU
X1RSVUUobS5NYXRjaGVzKGEpKTsKLSAgYS5zZXRfbigtMSk7Ci0gIEVYUEVDVF9GQUxTRShtLk1h
dGNoZXMoYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCkgY2FuIGRlc2NyaWJlIGl0
c2VsZi4KLVRFU1QoUHJvcGVydHlUZXN0LCBDYW5EZXNjcmliZVNlbGYpIHsKLSAgTWF0Y2hlcjxj
b25zdCBBQ2xhc3MmPiBtID0gUHJvcGVydHkoJkFDbGFzczo6biwgR2UoMCkpOwotCi0gIEVYUEVD
VF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIHByb3BlcnR5IGlzID49IDAiLCBEZXNjcmli
ZShtKSk7Ci0gIEVYUEVDVF9FUSgiaXMgYW4gb2JqZWN0IHdob3NlIGdpdmVuIHByb3BlcnR5IGlz
bid0ID49IDAiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgUHJvcGVydHkoKSBjYW4gZXhwbGFpbiB0aGUgbWF0Y2ggcmVzdWx0LgotVEVTVChQ
cm9wZXJ0eVRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewotICBNYXRjaGVyPGNvbnN0IEFD
bGFzcyY+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0KLSAgQUNsYXNzIGE7Ci0g
IGEuc2V0X24oMSk7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgMSIgKyBP
ZlR5cGUoImludCIpLCBFeHBsYWluKG0sIGEpKTsKLQotICBtID0gUHJvcGVydHkoJkFDbGFzczo6
biwgR3JlYXRlclRoYW4oMCkpOwotICBFWFBFQ1RfRVEoCi0gICAgICAid2hvc2UgZ2l2ZW4gcHJv
cGVydHkgaXMgMSIgKyBPZlR5cGUoImludCIpICsgIiwgd2hpY2ggaXMgMSBtb3JlIHRoYW4gMCIs
Ci0gICAgICBFeHBsYWluKG0sIGEpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9wZXJ0eSgpIHdv
cmtzIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBjb25zdC4KLVRFU1QoUHJvcGVy
dHlGb3JQb2ludGVyVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Db25zdCkgewotICBNYXRjaGVyPGNv
bnN0IEFDbGFzcyo+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0KLSAgQUNsYXNz
IGE7Ci0gIGEuc2V0X24oMSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOwotCi0gIGEu
c2V0X24oLTEpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZhKSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgUHJvcGVydHkoKSB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8g
bm9uLWNvbnN0LgotVEVTVChQcm9wZXJ0eUZvclBvaW50ZXJUZXN0LCBXb3Jrc0ZvclBvaW50ZXJU
b05vbkNvbnN0KSB7Ci0gIE1hdGNoZXI8QUNsYXNzKj4gbSA9IFByb3BlcnR5KCZBQ2xhc3M6OnMs
IFN0YXJ0c1dpdGgoImhpIikpOwotCi0gIEFDbGFzcyBhOwotICBhLnNldF9zKCJoaWxsIik7Ci0g
IEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmYSkpOwotCi0gIGEuc2V0X3MoImhvbGUiKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcygmYSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFByb3BlcnR5KCkg
d29ya3Mgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYQotLy8gY29uc3QgcG9p
bnRlci4KLVRFU1QoUHJvcGVydHlGb3JQb2ludGVyVGVzdCwgV29ya3NGb3JSZWZlcmVuY2VUb0Nv
bnN0UG9pbnRlcikgewotICBNYXRjaGVyPEFDbGFzcyogY29uc3QmPiBtID0gUHJvcGVydHkoJkFD
bGFzczo6cywgU3RhcnRzV2l0aCgiaGkiKSk7Ci0KLSAgQUNsYXNzIGE7Ci0gIGEuc2V0X3MoImhp
bGwiKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKCZhKSk7Ci0KLSAgYS5zZXRfcygiaG9sZSIp
OwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKCZhKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJv
cGVydHkoKSBkb2VzIG5vdCBtYXRjaCB0aGUgTlVMTCBwb2ludGVyLgotVEVTVChQcm9wZXJ0eUZv
clBvaW50ZXJUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jZVRvTm9uQ29uc3RQcm9wZXJ0eSkgewotICBN
YXRjaGVyPGNvbnN0IEFDbGFzcyo+IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjp4LCBfKTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcyhOVUxMKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJvcGVydHko
JkZvbzo6cHJvcGVydHksIC4uLikgd29ya3Mgd2hlbiB0aGUgYXJndW1lbnQncwotLy8gdHlwZSBp
cyBhIHN1Yi10eXBlIG9mIGNvbnN0IEZvbyouCi1URVNUKFByb3BlcnR5Rm9yUG9pbnRlclRlc3Qs
IFdvcmtzRm9yQXJndW1lbnRPZlN1YlR5cGUpIHsKLSAgLy8gVGhlIG1hdGNoZXIgZXhwZWN0cyBh
IERlcml2ZWRDbGFzcywgYnV0IGluc2lkZSB0aGUgUHJvcGVydHkoKSB3ZQotICAvLyBzYXkgQUNs
YXNzLgotICBNYXRjaGVyPGNvbnN0IERlcml2ZWRDbGFzcyo+IG0gPSBQcm9wZXJ0eSgmQUNsYXNz
OjpuLCBHZSgwKSk7Ci0KLSAgRGVyaXZlZENsYXNzIGQ7Ci0gIGQuc2V0X24oMSk7Ci0gIEVYUEVD
VF9UUlVFKG0uTWF0Y2hlcygmZCkpOwotCi0gIGQuc2V0X24oLTEpOwotICBFWFBFQ1RfRkFMU0Uo
bS5NYXRjaGVzKCZkKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUHJvcGVydHkoKSBjYW4gZGVzY3Jp
YmUgaXRzZWxmIHdoZW4gdXNlZCB0byBtYXRjaCBhIHBvaW50ZXIuCi1URVNUKFByb3BlcnR5Rm9y
UG9pbnRlclRlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVyPGNvbnN0IEFDbGFzcyo+
IG0gPSBQcm9wZXJ0eSgmQUNsYXNzOjpuLCBHZSgwKSk7Ci0KLSAgRVhQRUNUX0VRKCJpcyBhbiBv
YmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgPj0gMCIsIERlc2NyaWJlKG0pKTsKLSAgRVhQ
RUNUX0VRKCJpcyBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXNuJ3QgPj0gMCIsCi0g
ICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQcm9w
ZXJ0eSgpIGNhbiBleHBsYWluIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgYSBwb2ludGVyLgotVEVT
VChQcm9wZXJ0eUZvclBvaW50ZXJUZXN0LCBDYW5FeHBsYWluTWF0Y2hSZXN1bHQpIHsKLSAgTWF0
Y2hlcjxjb25zdCBBQ2xhc3MqPiBtID0gUHJvcGVydHkoJkFDbGFzczo6biwgR2UoMCkpOwotCi0g
IEFDbGFzcyBhOwotICBhLnNldF9uKDEpOwotICBFWFBFQ1RfRVEoIiIsIEV4cGxhaW4obSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgQUNsYXNzKj4oTlVMTCkpKTsKLSAgRVhQRUNUX0VRKAotICAgICAgIndo
aWNoIHBvaW50cyB0byBhbiBvYmplY3Qgd2hvc2UgZ2l2ZW4gcHJvcGVydHkgaXMgMSIgKyBPZlR5
cGUoImludCIpLAotICAgICAgRXhwbGFpbihtLCAmYSkpOwotCi0gIG0gPSBQcm9wZXJ0eSgmQUNs
YXNzOjpuLCBHcmVhdGVyVGhhbigwKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggcG9pbnRzIHRvIGFu
IG9iamVjdCB3aG9zZSBnaXZlbiBwcm9wZXJ0eSBpcyAxIiArCi0gICAgICAgICAgICBPZlR5cGUo
ImludCIpICsgIiwgd2hpY2ggaXMgMSBtb3JlIHRoYW4gMCIsCi0gICAgICAgICAgICBFeHBsYWlu
KG0sICZhKSk7Ci19Ci0KLS8vIFRlc3RzIFJlc3VsdE9mLgotCi0vLyBUZXN0cyB0aGF0IFJlc3Vs
dE9mKGYsIC4uLikgY29tcGlsZXMgYW5kIHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZiBpcyBhCi0v
LyBmdW5jdGlvbiBwb2ludGVyLgotc3RkOjpzdHJpbmcgSW50VG9TdHJpbmdGdW5jdGlvbihpbnQg
aW5wdXQpIHsKLSAgcmV0dXJuIGlucHV0ID09IDEgPyAiZm9vIiA6ICJiYXIiOwotfQotCi1URVNU
KFJlc3VsdE9mVGVzdCwgV29ya3NGb3JGdW5jdGlvblBvaW50ZXJzKSB7Ci0gIE1hdGNoZXI8aW50
PiBtYXRjaGVyID0gUmVzdWx0T2YoJkludFRvU3RyaW5nRnVuY3Rpb24sIEVxKHN0ZDo6c3RyaW5n
KCJmb28iKSkpOwotCi0gIEVYUEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygxKSk7Ci0gIEVYUEVD
VF9GQUxTRShtYXRjaGVyLk1hdGNoZXMoMikpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlc3VsdE9m
KCkgY2FuIGRlc2NyaWJlIGl0c2VsZi4KLVRFU1QoUmVzdWx0T2ZUZXN0LCBDYW5EZXNjcmliZUl0
c2VsZikgewotICBNYXRjaGVyPGludD4gbWF0Y2hlciA9IFJlc3VsdE9mKCZJbnRUb1N0cmluZ0Z1
bmN0aW9uLCBTdHJFcSgiZm9vIikpOwotCi0gIEVYUEVDVF9FUSgiaXMgbWFwcGVkIGJ5IHRoZSBn
aXZlbiBjYWxsYWJsZSB0byBhIHZhbHVlIHRoYXQgIgotICAgICAgICAgICAgImlzIGVxdWFsIHRv
IFwiZm9vXCIiLCBEZXNjcmliZShtYXRjaGVyKSk7Ci0gIEVYUEVDVF9FUSgiaXMgbWFwcGVkIGJ5
IHRoZSBnaXZlbiBjYWxsYWJsZSB0byBhIHZhbHVlIHRoYXQgIgotICAgICAgICAgICAgImlzbid0
IGVxdWFsIHRvIFwiZm9vXCIiLCBEZXNjcmliZU5lZ2F0aW9uKG1hdGNoZXIpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBSZXN1bHRPZigpIGNhbiBleHBsYWluIHRoZSBtYXRjaCByZXN1bHQuCi1pbnQg
SW50RnVuY3Rpb24oaW50IGlucHV0KSB7IHJldHVybiBpbnB1dCA9PSA0MiA/IDgwIDogOTA7IH0K
LQotVEVTVChSZXN1bHRPZlRlc3QsIENhbkV4cGxhaW5NYXRjaFJlc3VsdCkgewotICBNYXRjaGVy
PGludD4gbWF0Y2hlciA9IFJlc3VsdE9mKCZJbnRGdW5jdGlvbiwgR2UoODUpKTsKLSAgRVhQRUNU
X0VRKCJ3aGljaCBpcyBtYXBwZWQgYnkgdGhlIGdpdmVuIGNhbGxhYmxlIHRvIDkwIiArIE9mVHlw
ZSgiaW50IiksCi0gICAgICAgICAgICBFeHBsYWluKG1hdGNoZXIsIDM2KSk7Ci0KLSAgbWF0Y2hl
ciA9IFJlc3VsdE9mKCZJbnRGdW5jdGlvbiwgR3JlYXRlclRoYW4oODUpKTsKLSAgRVhQRUNUX0VR
KCJ3aGljaCBpcyBtYXBwZWQgYnkgdGhlIGdpdmVuIGNhbGxhYmxlIHRvIDkwIiArIE9mVHlwZSgi
aW50IikgKwotICAgICAgICAgICAgIiwgd2hpY2ggaXMgNSBtb3JlIHRoYW4gODUiLCBFeHBsYWlu
KG1hdGNoZXIsIDM2KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwgLi4uKSBjb21w
aWxlcyBhbmQgd29ya3MgYXMgZXhwZWN0ZWQgd2hlbiBmKHgpCi0vLyByZXR1cm5zIGEgbm9uLXJl
ZmVyZW5jZS4KLVRFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZVJlc3VsdHMp
IHsKLSAgTWF0Y2hlcjxpbnQ+IG1hdGNoZXIgPSBSZXN1bHRPZigmSW50RnVuY3Rpb24sIEVxKDgw
KSk7Ci0KLSAgRVhQRUNUX1RSVUUobWF0Y2hlci5NYXRjaGVzKDQyKSk7Ci0gIEVYUEVDVF9GQUxT
RShtYXRjaGVyLk1hdGNoZXMoMzYpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAu
Li4pIGNvbXBpbGVzIGFuZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYoeCkKLS8vIHJldHVybnMg
YSByZWZlcmVuY2UgdG8gbm9uLWNvbnN0LgotZG91YmxlJiBEb3VibGVGdW5jdGlvbihkb3VibGUm
IGlucHV0KSB7IHJldHVybiBpbnB1dDsgfSAgLy8gTk9MSU5UCi0KLVVuY29weWFibGUmIFJlZlVu
Y29weWFibGVGdW5jdGlvbihVbmNvcHlhYmxlJiBvYmopIHsgIC8vIE5PTElOVAotICByZXR1cm4g
b2JqOwotfQotCi1URVNUKFJlc3VsdE9mVGVzdCwgV29ya3NGb3JSZWZlcmVuY2VUb05vbkNvbnN0
UmVzdWx0cykgewotICBkb3VibGUgeCA9IDMuMTQ7Ci0gIGRvdWJsZSB4MiA9IHg7Ci0gIE1hdGNo
ZXI8ZG91YmxlJj4gbWF0Y2hlciA9IFJlc3VsdE9mKCZEb3VibGVGdW5jdGlvbiwgUmVmKHgpKTsK
LQotICBFWFBFQ1RfVFJVRShtYXRjaGVyLk1hdGNoZXMoeCkpOwotICBFWFBFQ1RfRkFMU0UobWF0
Y2hlci5NYXRjaGVzKHgyKSk7Ci0KLSAgLy8gVGVzdCB0aGF0IFJlc3VsdE9mIHdvcmtzIHdpdGgg
dW5jb3B5YWJsZSBvYmplY3RzCi0gIFVuY29weWFibGUgb2JqKDApOwotICBVbmNvcHlhYmxlIG9i
ajIoMCk7Ci0gIE1hdGNoZXI8VW5jb3B5YWJsZSY+IG1hdGNoZXIyID0KLSAgICAgIFJlc3VsdE9m
KCZSZWZVbmNvcHlhYmxlRnVuY3Rpb24sIFJlZihvYmopKTsKLQotICBFWFBFQ1RfVFJVRShtYXRj
aGVyMi5NYXRjaGVzKG9iaikpOwotICBFWFBFQ1RfRkFMU0UobWF0Y2hlcjIuTWF0Y2hlcyhvYmoy
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwgLi4uKSBjb21waWxlcyBhbmQgd29y
a3MgYXMgZXhwZWN0ZWQgd2hlbiBmKHgpCi0vLyByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGNvbnN0
LgotY29uc3Qgc3RkOjpzdHJpbmcmIFN0cmluZ0Z1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bnB1dCkgeyByZXR1cm4gaW5wdXQ7IH0KLQotVEVTVChSZXN1bHRPZlRlc3QsIFdvcmtzRm9yUmVm
ZXJlbmNlVG9Db25zdFJlc3VsdHMpIHsKLSAgc3RkOjpzdHJpbmcgcyA9ICJmb28iOwotICBzdGQ6
OnN0cmluZyBzMiA9IHM7Ci0gIE1hdGNoZXI8Y29uc3Qgc3RkOjpzdHJpbmcmPiBtYXRjaGVyID0g
UmVzdWx0T2YoJlN0cmluZ0Z1bmN0aW9uLCBSZWYocykpOwotCi0gIEVYUEVDVF9UUlVFKG1hdGNo
ZXIuTWF0Y2hlcyhzKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyLk1hdGNoZXMoczIpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCBtKSB3b3JrcyB3aGVuIGYoeCkgYW5kIG0ncwot
Ly8gYXJndW1lbnQgdHlwZXMgYXJlIGNvbXBhdGlibGUgYnV0IGRpZmZlcmVudC4KLVRFU1QoUmVz
dWx0T2ZUZXN0LCBXb3Jrc0ZvckNvbXBhdGlibGVNYXRjaGVyVHlwZXMpIHsKLSAgLy8gSW50RnVu
Y3Rpb24oKSByZXR1cm5zIGludCBidXQgdGhlIGlubmVyIG1hdGNoZXIgZXhwZWN0cyBhIHNpZ25l
ZCBjaGFyLgotICBNYXRjaGVyPGludD4gbWF0Y2hlciA9IFJlc3VsdE9mKEludEZ1bmN0aW9uLCBN
YXRjaGVyPHNpZ25lZCBjaGFyPihHZSg4NSkpKTsKLQotICBFWFBFQ1RfVFJVRShtYXRjaGVyLk1h
dGNoZXMoMzYpKTsKLSAgRVhQRUNUX0ZBTFNFKG1hdGNoZXIuTWF0Y2hlcyg0MikpOwotfQotCi0v
LyBUZXN0cyB0aGF0IHRoZSBwcm9ncmFtIGFib3J0cyB3aGVuIFJlc3VsdE9mIGlzIHBhc3NlZAot
Ly8gYSBOVUxMIGZ1bmN0aW9uIHBvaW50ZXIuCi1URVNUKFJlc3VsdE9mRGVhdGhUZXN0LCBEaWVz
T25OdWxsRnVuY3Rpb25Qb2ludGVycykgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAot
ICAgICAgUmVzdWx0T2Yoc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmcgKCopKGludCBkdW1teSk+KE5V
TEwpLAotICAgICAgICAgICAgICAgRXEoc3RkOjpzdHJpbmcoImZvbyIpKSksCi0gICAgICAiTlVM
TCBmdW5jdGlvbiBwb2ludGVyIGlzIHBhc3NlZCBpbnRvIFJlc3VsdE9mXFwoXFwpXFwuIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUmVzdWx0T2YoZiwgLi4uKSBjb21waWxlcyBhbmQgd29ya3MgYXMg
ZXhwZWN0ZWQgd2hlbiBmIGlzIGEKLS8vIGZ1bmN0aW9uIHJlZmVyZW5jZS4KLVRFU1QoUmVzdWx0
T2ZUZXN0LCBXb3Jrc0ZvckZ1bmN0aW9uUmVmZXJlbmNlcykgewotICBNYXRjaGVyPGludD4gbWF0
Y2hlciA9IFJlc3VsdE9mKEludFRvU3RyaW5nRnVuY3Rpb24sIFN0ckVxKCJmb28iKSk7Ci0gIEVY
UEVDVF9UUlVFKG1hdGNoZXIuTWF0Y2hlcygxKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyLk1h
dGNoZXMoMikpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJlc3VsdE9mKGYsIC4uLikgY29tcGlsZXMg
YW5kIHdvcmtzIGFzIGV4cGVjdGVkIHdoZW4gZiBpcyBhCi0vLyBmdW5jdGlvbiBvYmplY3QuCi1z
dHJ1Y3QgRnVuY3RvciA6IHB1YmxpYyA6OnN0ZDo6dW5hcnlfZnVuY3Rpb248aW50LCBzdGQ6OnN0
cmluZz4gewotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGFyZ3VtZW50X3R5cGUgaW5wdXQpIGNv
bnN0IHsKLSAgICByZXR1cm4gSW50VG9TdHJpbmdGdW5jdGlvbihpbnB1dCk7Ci0gIH0KLX07Ci0K
LVRFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jrc0ZvckZ1bmN0b3JzKSB7Ci0gIE1hdGNoZXI8aW50PiBt
YXRjaGVyID0gUmVzdWx0T2YoRnVuY3RvcigpLCBFcShzdGQ6OnN0cmluZygiZm9vIikpKTsKLQot
ICBFWFBFQ1RfVFJVRShtYXRjaGVyLk1hdGNoZXMoMSkpOwotICBFWFBFQ1RfRkFMU0UobWF0Y2hl
ci5NYXRjaGVzKDIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSZXN1bHRPZihmLCAuLi4pIGNvbXBp
bGVzIGFuZCB3b3JrcyBhcyBleHBlY3RlZCB3aGVuIGYgaXMgYQotLy8gZnVuY3RvciB3aXRoIG1v
cmUgdGhlbiBvbmUgb3BlcmF0b3IoKSBkZWZpbmVkLiBSZXN1bHRPZigpIG11c3Qgd29yawotLy8g
Zm9yIGVhY2ggZGVmaW5lZCBvcGVyYXRvcigpLgotc3RydWN0IFBvbHltb3JwaGljRnVuY3RvciB7
Ci0gIHR5cGVkZWYgaW50IHJlc3VsdF90eXBlOwotICBpbnQgb3BlcmF0b3IoKShpbnQgbikgeyBy
ZXR1cm4gbjsgfQotICBpbnQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBzKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KHN0cmxlbihzKSk7IH0KLX07Ci0KLVRFU1QoUmVzdWx0T2ZUZXN0LCBXb3Jr
c0ZvclBvbHltb3JwaGljRnVuY3RvcnMpIHsKLSAgTWF0Y2hlcjxpbnQ+IG1hdGNoZXJfaW50ID0g
UmVzdWx0T2YoUG9seW1vcnBoaWNGdW5jdG9yKCksIEdlKDUpKTsKLQotICBFWFBFQ1RfVFJVRSht
YXRjaGVyX2ludC5NYXRjaGVzKDEwKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyX2ludC5NYXRj
aGVzKDIpKTsKLQotICBNYXRjaGVyPGNvbnN0IGNoYXIqPiBtYXRjaGVyX3N0cmluZyA9IFJlc3Vs
dE9mKFBvbHltb3JwaGljRnVuY3RvcigpLCBHZSg1KSk7Ci0KLSAgRVhQRUNUX1RSVUUobWF0Y2hl
cl9zdHJpbmcuTWF0Y2hlcygibG9uZyBzdHJpbmciKSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVy
X3N0cmluZy5NYXRjaGVzKCJzaHJ0IikpOwotfQotCi1jb25zdCBpbnQqIFJlZmVyZW5jaW5nRnVu
Y3Rpb24oY29uc3QgaW50JiBuKSB7IHJldHVybiAmbjsgfQotCi1zdHJ1Y3QgUmVmZXJlbmNpbmdG
dW5jdG9yIHsKLSAgdHlwZWRlZiBjb25zdCBpbnQqIHJlc3VsdF90eXBlOwotICByZXN1bHRfdHlw
ZSBvcGVyYXRvcigpKGNvbnN0IGludCYgbikgeyByZXR1cm4gJm47IH0KLX07Ci0KLVRFU1QoUmVz
dWx0T2ZUZXN0LCBXb3Jrc0ZvclJlZmVyZW5jaW5nQ2FsbGFibGVzKSB7Ci0gIGNvbnN0IGludCBu
ID0gMTsKLSAgY29uc3QgaW50IG4yID0gMTsKLSAgTWF0Y2hlcjxjb25zdCBpbnQmPiBtYXRjaGVy
MiA9IFJlc3VsdE9mKFJlZmVyZW5jaW5nRnVuY3Rpb24sIEVxKCZuKSk7Ci0gIEVYUEVDVF9UUlVF
KG1hdGNoZXIyLk1hdGNoZXMobikpOwotICBFWFBFQ1RfRkFMU0UobWF0Y2hlcjIuTWF0Y2hlcyhu
MikpOwotCi0gIE1hdGNoZXI8Y29uc3QgaW50Jj4gbWF0Y2hlcjMgPSBSZXN1bHRPZihSZWZlcmVu
Y2luZ0Z1bmN0b3IoKSwgRXEoJm4pKTsKLSAgRVhQRUNUX1RSVUUobWF0Y2hlcjMuTWF0Y2hlcyhu
KSk7Ci0gIEVYUEVDVF9GQUxTRShtYXRjaGVyMy5NYXRjaGVzKG4yKSk7Ci19Ci0KLWNsYXNzIERp
dmlzaWJsZUJ5SW1wbCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBEaXZpc2libGVCeUltcGwoaW50
IGFfZGl2aWRlcikgOiBkaXZpZGVyXyhhX2RpdmlkZXIpIHt9Ci0KLSAgLy8gRm9yIHRlc3Rpbmcg
dXNpbmcgRXhwbGFpbk1hdGNoUmVzdWx0VG8oKSB3aXRoIHBvbHltb3JwaGljIG1hdGNoZXJzLgot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgYm9vbCBNYXRjaEFuZEV4cGxhaW4oY29uc3QgVCYg
biwgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIpIGNvbnN0IHsKLSAgICAqbGlzdGVuZXIg
PDwgIndoaWNoIGlzICIgPDwgKG4gJSBkaXZpZGVyXykgPDwgIiBtb2R1bG8gIgotICAgICAgICAg
ICAgICA8PCBkaXZpZGVyXzsKLSAgICByZXR1cm4gKG4gJSBkaXZpZGVyXykgPT0gMDsKLSAgfQot
Ci0gIHZvaWQgRGVzY3JpYmVUbyhvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMg
ZGl2aXNpYmxlIGJ5ICIgPDwgZGl2aWRlcl87Ci0gIH0KLQotICB2b2lkIERlc2NyaWJlTmVnYXRp
b25Ubyhvc3RyZWFtKiBvcykgY29uc3QgewotICAgICpvcyA8PCAiaXMgbm90IGRpdmlzaWJsZSBi
eSAiIDw8IGRpdmlkZXJfOwotICB9Ci0KLSAgdm9pZCBzZXRfZGl2aWRlcihpbnQgYV9kaXZpZGVy
KSB7IGRpdmlkZXJfID0gYV9kaXZpZGVyOyB9Ci0gIGludCBkaXZpZGVyKCkgY29uc3QgeyByZXR1
cm4gZGl2aWRlcl87IH0KLQotIHByaXZhdGU6Ci0gIGludCBkaXZpZGVyXzsKLX07Ci0KLVBvbHlt
b3JwaGljTWF0Y2hlcjxEaXZpc2libGVCeUltcGw+IERpdmlzaWJsZUJ5KGludCBuKSB7Ci0gIHJl
dHVybiBNYWtlUG9seW1vcnBoaWNNYXRjaGVyKERpdmlzaWJsZUJ5SW1wbChuKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgd2hlbiBBbGxPZigpIGZhaWxzLCBvbmx5IHRoZSBmaXJzdCBmYWlsaW5nIG1h
dGNoZXIgaXMKLS8vIGFza2VkIHRvIGV4cGxhaW4gd2h5LgotVEVTVChFeHBsYWluTWF0Y2hSZXN1
bHRUZXN0LCBBbGxPZl9GYWxzZV9GYWxzZSkgewotICBjb25zdCBNYXRjaGVyPGludD4gbSA9IEFs
bE9mKERpdmlzaWJsZUJ5KDQpLCBEaXZpc2libGVCeSgzKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2gg
aXMgMSBtb2R1bG8gNCIsIEV4cGxhaW4obSwgNSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4g
QWxsT2YoKSBmYWlscywgb25seSB0aGUgZmlyc3QgZmFpbGluZyBtYXRjaGVyIGlzCi0vLyBhc2tl
ZCB0byBleHBsYWluIHdoeS4KLVRFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwgQWxsT2ZfRmFs
c2VfVHJ1ZSkgewotICBjb25zdCBNYXRjaGVyPGludD4gbSA9IEFsbE9mKERpdmlzaWJsZUJ5KDQp
LCBEaXZpc2libGVCeSgzKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgMiBtb2R1bG8gNCIsIEV4
cGxhaW4obSwgNikpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gQWxsT2YoKSBmYWlscywgb25s
eSB0aGUgZmlyc3QgZmFpbGluZyBtYXRjaGVyIGlzCi0vLyBhc2tlZCB0byBleHBsYWluIHdoeS4K
LVRFU1QoRXhwbGFpbk1hdGNoUmVzdWx0VGVzdCwgQWxsT2ZfVHJ1ZV9GYWxzZSkgewotICBjb25z
dCBNYXRjaGVyPGludD4gbSA9IEFsbE9mKEdlKDEpLCBEaXZpc2libGVCeSgzKSk7Ci0gIEVYUEVD
VF9FUSgid2hpY2ggaXMgMiBtb2R1bG8gMyIsIEV4cGxhaW4obSwgNSkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdoZW4gQWxsT2YoKSBzdWNjZWVkcywgYWxsIG1hdGNoZXJzIGFyZSBhc2tlZCB0byBl
eHBsYWluCi0vLyB3aHkuCi1URVNUKEV4cGxhaW5NYXRjaFJlc3VsdFRlc3QsIEFsbE9mX1RydWVf
VHJ1ZSkgewotICBjb25zdCBNYXRjaGVyPGludD4gbSA9IEFsbE9mKERpdmlzaWJsZUJ5KDIpLCBE
aXZpc2libGVCeSgzKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgMCBtb2R1bG8gMiwgYW5kIHdo
aWNoIGlzIDAgbW9kdWxvIDMiLCBFeHBsYWluKG0sIDYpKTsKLX0KLQotVEVTVChFeHBsYWluTWF0
Y2hSZXN1bHRUZXN0LCBBbGxPZl9UcnVlX1RydWVfMikgewotICBjb25zdCBNYXRjaGVyPGludD4g
bSA9IEFsbE9mKEdlKDIpLCBMZSgzKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCAyKSk7
Ci19Ci0KLVRFU1QoRXhwbGFpbm1hdGNoZXJSZXN1bHRUZXN0LCBNb25vbW9ycGhpY01hdGNoZXIp
IHsKLSAgY29uc3QgTWF0Y2hlcjxpbnQ+IG0gPSBHcmVhdGVyVGhhbig1KTsKLSAgRVhQRUNUX0VR
KCJ3aGljaCBpcyAxIG1vcmUgdGhhbiA1IiwgRXhwbGFpbihtLCA2KSk7Ci19Ci0KLS8vIFRoZSBm
b2xsb3dpbmcgdHdvIHRlc3RzIHZlcmlmeSB0aGF0IHZhbHVlcyB3aXRob3V0IGEgcHVibGljIGNv
cHkKLS8vIGN0b3IgY2FuIGJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIG1hdGNoZXJzIGxpa2UgRXEo
KSwgR2UoKSwgYW5kIGV0YwotLy8gd2l0aCB0aGUgaGVscCBvZiBCeVJlZigpLgotCi1jbGFzcyBO
b3RDb3B5YWJsZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBOb3RDb3B5YWJsZShpbnQgYV92YWx1
ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLQotICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KLQotICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm90Q29weWFibGUmIHJocykgY29u
c3QgewotICAgIHJldHVybiB2YWx1ZSgpID09IHJocy52YWx1ZSgpOwotICB9Ci0KLSAgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IE5vdENvcHlhYmxlJiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFs
dWUoKSA+PSByaHMudmFsdWUoKTsKLSAgfQotIHByaXZhdGU6Ci0gIGludCB2YWx1ZV87Ci0KLSAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhOb3RDb3B5YWJsZSk7Ci19OwotCi1URVNU
KEJ5UmVmVGVzdCwgQWxsb3dzTm90Q29weWFibGVDb25zdFZhbHVlSW5NYXRjaGVycykgewotICBj
b25zdCBOb3RDb3B5YWJsZSBjb25zdF92YWx1ZTEoMSk7Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3Qg
Tm90Q29weWFibGUmPiBtID0gRXEoQnlSZWYoY29uc3RfdmFsdWUxKSk7Ci0KLSAgY29uc3QgTm90
Q29weWFibGUgbjEoMSksIG4yKDIpOwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobjEpKTsKLSAg
RVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhuMikpOwotfQotCi1URVNUKEJ5UmVmVGVzdCwgQWxsb3dz
Tm90Q29weWFibGVWYWx1ZUluTWF0Y2hlcnMpIHsKLSAgTm90Q29weWFibGUgdmFsdWUyKDIpOwot
ICBjb25zdCBNYXRjaGVyPE5vdENvcHlhYmxlJj4gbSA9IEdlKEJ5UmVmKHZhbHVlMikpOwotCi0g
IE5vdENvcHlhYmxlIG4xKDEpLCBuMigyKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyhuMSkp
OwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMobjIpKTsKLX0KLQotVEVTVChJc0VtcHR5VGVzdCwg
SW1wbGVtZW50c0lzRW1wdHkpIHsKLSAgdmVjdG9yPGludD4gY29udGFpbmVyOwotICBFWFBFQ1Rf
VEhBVChjb250YWluZXIsIElzRW1wdHkoKSk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0g
IEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KElzRW1wdHkoKSkpOwotICBjb250YWluZXIucHVz
aF9iYWNrKDEpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChJc0VtcHR5KCkpKTsKLX0K
LQotVEVTVChJc0VtcHR5VGVzdCwgV29ya3NXaXRoU3RyaW5nKSB7Ci0gIHN0ZDo6c3RyaW5nIHRl
eHQ7Ci0gIEVYUEVDVF9USEFUKHRleHQsIElzRW1wdHkoKSk7Ci0gIHRleHQgPSAiZm9vIjsKLSAg
RVhQRUNUX1RIQVQodGV4dCwgTm90KElzRW1wdHkoKSkpOwotICB0ZXh0ID0gc3RkOjpzdHJpbmco
IlwwIiwgMSk7Ci0gIEVYUEVDVF9USEFUKHRleHQsIE5vdChJc0VtcHR5KCkpKTsKLX0KLQotVEVT
VChJc0VtcHR5VGVzdCwgQ2FuRGVzY3JpYmVTZWxmKSB7Ci0gIE1hdGNoZXI8dmVjdG9yPGludD4g
PiBtID0gSXNFbXB0eSgpOwotICBFWFBFQ1RfRVEoImlzIGVtcHR5IiwgRGVzY3JpYmUobSkpOwot
ICBFWFBFQ1RfRVEoImlzbid0IGVtcHR5IiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRF
U1QoSXNFbXB0eVRlc3QsIEV4cGxhaW5zUmVzdWx0KSB7Ci0gIE1hdGNoZXI8dmVjdG9yPGludD4g
PiBtID0gSXNFbXB0eSgpOwotICB2ZWN0b3I8aW50PiBjb250YWluZXI7Ci0gIEVYUEVDVF9FUSgi
IiwgRXhwbGFpbihtLCBjb250YWluZXIpKTsKLSAgY29udGFpbmVyLnB1c2hfYmFjaygwKTsKLSAg
RVhQRUNUX0VRKCJ3aG9zZSBzaXplIGlzIDEiLCBFeHBsYWluKG0sIGNvbnRhaW5lcikpOwotfQot
Ci1URVNUKFNpemVJc1Rlc3QsIEltcGxlbWVudHNTaXplSXMpIHsKLSAgdmVjdG9yPGludD4gY29u
dGFpbmVyOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIFNpemVJcygwKSk7Ci0gIEVYUEVDVF9U
SEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygxKSkpOwotICBjb250YWluZXIucHVzaF9iYWNrKDAp
OwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChTaXplSXMoMCkpKTsKLSAgRVhQRUNUX1RI
QVQoY29udGFpbmVyLCBTaXplSXMoMSkpOwotICBjb250YWluZXIucHVzaF9iYWNrKDApOwotICBF
WFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChTaXplSXMoMCkpKTsKLSAgRVhQRUNUX1RIQVQoY29u
dGFpbmVyLCBTaXplSXMoMikpOwotfQotCi1URVNUKFNpemVJc1Rlc3QsIFdvcmtzV2l0aE1hcCkg
ewotICBtYXA8c3RkOjpzdHJpbmcsIGludD4gY29udGFpbmVyOwotICBFWFBFQ1RfVEhBVChjb250
YWluZXIsIFNpemVJcygwKSk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KFNpemVJcygx
KSkpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigiZm9vIiwgMSkpOwotICBFWFBFQ1Rf
VEhBVChjb250YWluZXIsIE5vdChTaXplSXMoMCkpKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVy
LCBTaXplSXMoMSkpOwotICBjb250YWluZXIuaW5zZXJ0KG1ha2VfcGFpcigiYmFyIiwgMikpOwot
ICBFWFBFQ1RfVEhBVChjb250YWluZXIsIE5vdChTaXplSXMoMCkpKTsKLSAgRVhQRUNUX1RIQVQo
Y29udGFpbmVyLCBTaXplSXMoMikpOwotfQotCi1URVNUKFNpemVJc1Rlc3QsIFdvcmtzV2l0aFJl
ZmVyZW5jZXMpIHsKLSAgdmVjdG9yPGludD4gY29udGFpbmVyOwotICBNYXRjaGVyPGNvbnN0IHZl
Y3RvcjxpbnQ+Jj4gbSA9IFNpemVJcygxKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVyLCBOb3Qo
bSkpOwotICBjb250YWluZXIucHVzaF9iYWNrKDApOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIs
IG0pOwotfQotCi1URVNUKFNpemVJc1Rlc3QsIENhbkRlc2NyaWJlU2VsZikgewotICBNYXRjaGVy
PHZlY3RvcjxpbnQ+ID4gbSA9IFNpemVJcygyKTsKLSAgRVhQRUNUX0VRKCJzaXplIGlzIGVxdWFs
IHRvIDIiLCBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgic2l6ZSBpc24ndCBlcXVhbCB0byAy
IiwgRGVzY3JpYmVOZWdhdGlvbihtKSk7Ci19Ci0KLVRFU1QoU2l6ZUlzVGVzdCwgRXhwbGFpbnNS
ZXN1bHQpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0xID0gU2l6ZUlzKDIpOwotICBNYXRj
aGVyPHZlY3RvcjxpbnQ+ID4gbTIgPSBTaXplSXMoTHQoMnUpKTsKLSAgTWF0Y2hlcjx2ZWN0b3I8
aW50PiA+IG0zID0gU2l6ZUlzKEFueU9mKDAsIDMpKTsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+
IG00ID0gU2l6ZUlzKEdyZWF0ZXJUaGFuKDEpKTsKLSAgdmVjdG9yPGludD4gY29udGFpbmVyOwot
ICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMCBkb2Vzbid0IG1hdGNoIiwgRXhwbGFpbihtMSwgY29u
dGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAwIG1hdGNoZXMiLCBFeHBsYWluKG0y
LCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDAgbWF0Y2hlcyIsIEV4cGxh
aW4obTMsIGNvbnRhaW5lcikpOwotICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMCBkb2Vzbid0IG1h
dGNoLCB3aGljaCBpcyAxIGxlc3MgdGhhbiAxIiwKLSAgICAgICAgICAgIEV4cGxhaW4obTQsIGNv
bnRhaW5lcikpOwotICBjb250YWluZXIucHVzaF9iYWNrKDApOwotICBjb250YWluZXIucHVzaF9i
YWNrKDApOwotICBFWFBFQ1RfRVEoIndob3NlIHNpemUgMiBtYXRjaGVzIiwgRXhwbGFpbihtMSwg
Y29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2Ugc2l6ZSAyIGRvZXNuJ3QgbWF0Y2giLCBF
eHBsYWluKG0yLCBjb250YWluZXIpKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBzaXplIDIgZG9lc24n
dCBtYXRjaCIsIEV4cGxhaW4obTMsIGNvbnRhaW5lcikpOwotICBFWFBFQ1RfRVEoIndob3NlIHNp
emUgMiBtYXRjaGVzLCB3aGljaCBpcyAxIG1vcmUgdGhhbiAxIiwKLSAgICAgICAgICAgIEV4cGxh
aW4obTQsIGNvbnRhaW5lcikpOwotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLS8vIFRl
c3RzIENvbnRhaW5lckVxIHdpdGggZGlmZmVyZW50IGNvbnRhaW5lciB0eXBlcywgYW5kCi0vLyBk
aWZmZXJlbnQgZWxlbWVudCB0eXBlcy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBD
b250YWluZXJFcVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7fTsKLQotdHlwZWRlZiB0ZXN0
aW5nOjpUeXBlczwKLSAgICBzZXQ8aW50PiwKLSAgICB2ZWN0b3I8c2l6ZV90PiwKLSAgICBtdWx0
aXNldDxzaXplX3Q+LAotICAgIGxpc3Q8aW50PiA+Ci0gICAgQ29udGFpbmVyRXFUZXN0VHlwZXM7
Ci0KLVRZUEVEX1RFU1RfQ0FTRShDb250YWluZXJFcVRlc3QsIENvbnRhaW5lckVxVGVzdFR5cGVz
KTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgZmlsbGVkIGNvbnRhaW5lciBpcyBlcXVhbCB0byBpdHNl
bGYuCi1UWVBFRF9URVNUKENvbnRhaW5lckVxVGVzdCwgRXF1YWxzU2VsZikgewotICBzdGF0aWMg
Y29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAyLCAzLCA1LCA4fTsKLSAgVHlwZVBhcmFtIG15X3Nl
dCh2YWxzLCB2YWxzICsgNik7Ci0gIGNvbnN0IE1hdGNoZXI8VHlwZVBhcmFtPiBtID0gQ29udGFp
bmVyRXEobXlfc2V0KTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKG15X3NldCkpOwotICBFWFBF
Q1RfRVEoIiIsIEV4cGxhaW4obSwgbXlfc2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgbWlzc2lu
ZyB2YWx1ZXMgYXJlIHJlcG9ydGVkLgotVFlQRURfVEVTVChDb250YWluZXJFcVRlc3QsIFZhbHVl
TWlzc2luZykgewotICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAyLCAzLCA1LCA4
fTsKLSAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsyLCAxLCA4LCA1fTsKLSAgVHlw
ZVBhcmFtIG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIFR5cGVQYXJhbSB0ZXN0X3NldCh0ZXN0
X3ZhbHMsIHRlc3RfdmFscyArIDQpOwotICBjb25zdCBNYXRjaGVyPFR5cGVQYXJhbT4gbSA9IENv
bnRhaW5lckVxKG15X3NldCk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF9zZXQpKTsK
LSAgRVhQRUNUX0VRKCJ3aGljaCBkb2Vzbid0IGhhdmUgdGhlc2UgZXhwZWN0ZWQgZWxlbWVudHM6
IDMiLAotICAgICAgICAgICAgRXhwbGFpbihtLCB0ZXN0X3NldCkpOwotfQotCi0vLyBUZXN0cyB0
aGF0IGFkZGVkIHZhbHVlcyBhcmUgcmVwb3J0ZWQuCi1UWVBFRF9URVNUKENvbnRhaW5lckVxVGVz
dCwgVmFsdWVBZGRlZCkgewotICBzdGF0aWMgY29uc3QgaW50IHZhbHNbXSA9IHsxLCAxLCAyLCAz
LCA1LCA4fTsKLSAgc3RhdGljIGNvbnN0IGludCB0ZXN0X3ZhbHNbXSA9IHsxLCAyLCAzLCA1LCA4
LCA0Nn07Ci0gIFR5cGVQYXJhbSBteV9zZXQodmFscywgdmFscyArIDYpOwotICBUeXBlUGFyYW0g
dGVzdF9zZXQodGVzdF92YWxzLCB0ZXN0X3ZhbHMgKyA2KTsKLSAgY29uc3QgTWF0Y2hlcjxjb25z
dCBUeXBlUGFyYW0mPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAgRVhQRUNUX0ZBTFNFKG0u
TWF0Y2hlcyh0ZXN0X3NldCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGhhcyB0aGVzZSB1bmV4cGVj
dGVkIGVsZW1lbnRzOiA0NiIsIEV4cGxhaW4obSwgdGVzdF9zZXQpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBhZGRlZCBhbmQgbWlzc2luZyB2YWx1ZXMgYXJlIHJlcG9ydGVkIHRvZ2V0aGVyLgotVFlQ
RURfVEVTVChDb250YWluZXJFcVRlc3QsIFZhbHVlQWRkZWRBbmRSZW1vdmVkKSB7Ci0gIHN0YXRp
YyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9OwotICBzdGF0aWMgY29uc3Qg
aW50IHRlc3RfdmFsc1tdID0gezEsIDIsIDMsIDgsIDQ2fTsKLSAgVHlwZVBhcmFtIG15X3NldCh2
YWxzLCB2YWxzICsgNik7Ci0gIFR5cGVQYXJhbSB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFs
cyArIDUpOwotICBjb25zdCBNYXRjaGVyPFR5cGVQYXJhbT4gbSA9IENvbnRhaW5lckVxKG15X3Nl
dCk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF9zZXQpKTsKLSAgRVhQRUNUX0VRKCJ3
aGljaCBoYXMgdGhlc2UgdW5leHBlY3RlZCBlbGVtZW50czogNDYsXG4iCi0gICAgICAgICAgICAi
YW5kIGRvZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogNSIsCi0gICAgICAgICAg
ICBFeHBsYWluKG0sIHRlc3Rfc2V0KSk7Ci19Ci0KLS8vIFRlc3RzIGR1cGxpY2F0ZWQgdmFsdWUg
LS0gZXhwZWN0IG5vIGV4cGxhbmF0aW9uLgotVFlQRURfVEVTVChDb250YWluZXJFcVRlc3QsIER1
cGxpY2F0ZURpZmZlcmVuY2UpIHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7MSwgMSwg
MiwgMywgNSwgOH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MSwgMiwgMywg
NSwgOH07Ci0gIFR5cGVQYXJhbSBteV9zZXQodmFscywgdmFscyArIDYpOwotICBUeXBlUGFyYW0g
dGVzdF9zZXQodGVzdF92YWxzLCB0ZXN0X3ZhbHMgKyA1KTsKLSAgY29uc3QgTWF0Y2hlcjxjb25z
dCBUeXBlUGFyYW0mPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAgLy8gRGVwZW5kaW5nIG9u
IHRoZSBjb250YWluZXIsIG1hdGNoIG1heSBiZSB0cnVlIG9yIGZhbHNlCi0gIC8vIEJ1dCBpbiBh
bnkgY2FzZSB0aGVyZSBzaG91bGQgYmUgbm8gZXhwbGFuYXRpb24uCi0gIEVYUEVDVF9FUSgiIiwg
RXhwbGFpbihtLCB0ZXN0X3NldCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi0vLyBUZXN0cyB0aGF0IG11dGxpcGxlIG1pc3NpbmcgdmFsdWVzIGFyZSByZXBvcnRlZC4K
LS8vIFVzaW5nIGp1c3QgdmVjdG9yIGhlcmUsIHNvIG9yZGVyIGlzIHByZWRpY2F0YmxlLgotVEVT
VChDb250YWluZXJFcUV4dHJhVGVzdCwgTXVsdGlwbGVWYWx1ZXNNaXNzaW5nKSB7Ci0gIHN0YXRp
YyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEsIDIsIDMsIDUsIDh9OwotICBzdGF0aWMgY29uc3Qg
aW50IHRlc3RfdmFsc1tdID0gezIsIDEsIDV9OwotICB2ZWN0b3I8aW50PiBteV9zZXQodmFscywg
dmFscyArIDYpOwotICB2ZWN0b3I8aW50PiB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyAr
IDMpOwotICBjb25zdCBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbSA9IENvbnRhaW5lckVxKG15X3Nl
dCk7Ci0gIEVYUEVDVF9GQUxTRShtLk1hdGNoZXModGVzdF9zZXQpKTsKLSAgRVhQRUNUX0VRKCJ3
aGljaCBkb2Vzbid0IGhhdmUgdGhlc2UgZXhwZWN0ZWQgZWxlbWVudHM6IDMsIDgiLAotICAgICAg
ICAgICAgRXhwbGFpbihtLCB0ZXN0X3NldCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFkZGVkIHZh
bHVlcyBhcmUgcmVwb3J0ZWQuCi0vLyBVc2luZyBqdXN0IHZlY3RvciBoZXJlLCBzbyBvcmRlciBp
cyBwcmVkaWNhdGJsZS4KLVRFU1QoQ29udGFpbmVyRXFFeHRyYVRlc3QsIE11bHRpcGxlVmFsdWVz
QWRkZWQpIHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7MSwgMSwgMiwgMywgNSwgOH07
Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MSwgMiwgOTIsIDMsIDUsIDgsIDQ2
fTsKLSAgbGlzdDxzaXplX3Q+IG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIGxpc3Q8c2l6ZV90
PiB0ZXN0X3NldCh0ZXN0X3ZhbHMsIHRlc3RfdmFscyArIDcpOwotICBjb25zdCBNYXRjaGVyPGNv
bnN0IGxpc3Q8c2l6ZV90PiY+IG0gPSBDb250YWluZXJFcShteV9zZXQpOwotICBFWFBFQ1RfRkFM
U0UobS5NYXRjaGVzKHRlc3Rfc2V0KSk7Ci0gIEVYUEVDVF9FUSgid2hpY2ggaGFzIHRoZXNlIHVu
ZXhwZWN0ZWQgZWxlbWVudHM6IDkyLCA0NiIsCi0gICAgICAgICAgICBFeHBsYWluKG0sIHRlc3Rf
c2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYWRkZWQgYW5kIG1pc3NpbmcgdmFsdWVzIGFyZSBy
ZXBvcnRlZCB0b2dldGhlci4KLVRFU1QoQ29udGFpbmVyRXFFeHRyYVRlc3QsIE11bHRpcGxlVmFs
dWVzQWRkZWRBbmRSZW1vdmVkKSB7Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsc1tdID0gezEsIDEs
IDIsIDMsIDUsIDh9OwotICBzdGF0aWMgY29uc3QgaW50IHRlc3RfdmFsc1tdID0gezEsIDIsIDMs
IDkyLCA0Nn07Ci0gIGxpc3Q8c2l6ZV90PiBteV9zZXQodmFscywgdmFscyArIDYpOwotICBsaXN0
PHNpemVfdD4gdGVzdF9zZXQodGVzdF92YWxzLCB0ZXN0X3ZhbHMgKyA1KTsKLSAgY29uc3QgTWF0
Y2hlcjxjb25zdCBsaXN0PHNpemVfdD4gPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAgRVhQ
RUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X3NldCkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGhhcyB0
aGVzZSB1bmV4cGVjdGVkIGVsZW1lbnRzOiA5MiwgNDYsXG4iCi0gICAgICAgICAgICAiYW5kIGRv
ZXNuJ3QgaGF2ZSB0aGVzZSBleHBlY3RlZCBlbGVtZW50czogNSwgOCIsCi0gICAgICAgICAgICBF
eHBsYWluKG0sIHRlc3Rfc2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRvIHNlZSB0aGF0IGR1cGxpY2F0
ZSBlbGVtZW50cyBhcmUgZGV0ZWN0ZWQsCi0vLyBidXQgKGFzIGFib3ZlKSBub3QgcmVwb3J0ZWQg
aW4gdGhlIGV4cGxhbmF0aW9uLgotVEVTVChDb250YWluZXJFcUV4dHJhVGVzdCwgTXVsdGlTZXRP
ZkludER1cGxpY2F0ZURpZmZlcmVuY2UpIHsKLSAgc3RhdGljIGNvbnN0IGludCB2YWxzW10gPSB7
MSwgMSwgMiwgMywgNSwgOH07Ci0gIHN0YXRpYyBjb25zdCBpbnQgdGVzdF92YWxzW10gPSB7MSwg
MiwgMywgNSwgOH07Ci0gIHZlY3RvcjxpbnQ+IG15X3NldCh2YWxzLCB2YWxzICsgNik7Ci0gIHZl
Y3RvcjxpbnQ+IHRlc3Rfc2V0KHRlc3RfdmFscywgdGVzdF92YWxzICsgNSk7Ci0gIGNvbnN0IE1h
dGNoZXI8dmVjdG9yPGludD4gPiBtID0gQ29udGFpbmVyRXEobXlfc2V0KTsKLSAgRVhQRUNUX1RS
VUUobS5NYXRjaGVzKG15X3NldCkpOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKHRlc3Rfc2V0
KSk7Ci0gIC8vIFRoZXJlIGlzIG5vdGhpbmcgdG8gcmVwb3J0IHdoZW4gYm90aCBzZXRzIGNvbnRh
aW4gYWxsIHRoZSBzYW1lIHZhbHVlcy4KLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIHRlc3Rf
c2V0KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQ29udGFpbmVyRXEgd29ya3MgZm9yIG5vbi10cml2
aWFsIGFzc29jaWF0aXZlIGNvbnRhaW5lcnMsCi0vLyBsaWtlIG1hcHMuCi1URVNUKENvbnRhaW5l
ckVxRXh0cmFUZXN0LCBXb3Jrc0Zvck1hcHMpIHsKLSAgbWFwPGludCwgc3RkOjpzdHJpbmc+IG15
X21hcDsKLSAgbXlfbWFwWzBdID0gImEiOwotICBteV9tYXBbMV0gPSAiYiI7Ci0KLSAgbWFwPGlu
dCwgc3RkOjpzdHJpbmc+IHRlc3RfbWFwOwotICB0ZXN0X21hcFswXSA9ICJhYSI7Ci0gIHRlc3Rf
bWFwWzFdID0gImIiOwotCi0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgbWFwPGludCwgc3RkOjpzdHJp
bmc+Jj4gbSA9IENvbnRhaW5lckVxKG15X21hcCk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyht
eV9tYXApKTsKLSAgRVhQRUNUX0ZBTFNFKG0uTWF0Y2hlcyh0ZXN0X21hcCkpOwotCi0gIEVYUEVD
VF9FUSgid2hpY2ggaGFzIHRoZXNlIHVuZXhwZWN0ZWQgZWxlbWVudHM6ICgwLCBcImFhXCIpLFxu
IgotICAgICAgICAgICAgImFuZCBkb2Vzbid0IGhhdmUgdGhlc2UgZXhwZWN0ZWQgZWxlbWVudHM6
ICgwLCBcImFcIikiLAotICAgICAgICAgICAgRXhwbGFpbihtLCB0ZXN0X21hcCkpOwotfQotCi1U
RVNUKENvbnRhaW5lckVxRXh0cmFUZXN0LCBXb3Jrc0Zvck5hdGl2ZUFycmF5KSB7Ci0gIGludCBh
MVtdID0gezEsIDIsIDN9OwotICBpbnQgYTJbXSA9IHsxLCAyLCAzfTsKLSAgaW50IGJbXSA9IHsx
LCAyLCA0fTsKLQotICBFWFBFQ1RfVEhBVChhMSwgQ29udGFpbmVyRXEoYTIpKTsKLSAgRVhQRUNU
X1RIQVQoYTEsIE5vdChDb250YWluZXJFcShiKSkpOwotfQotCi1URVNUKENvbnRhaW5lckVxRXh0
cmFUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKLSAgY29uc3QgY2hh
ciBhMVtdWzNdID0geyJoaSIsICJsbyJ9OwotICBjb25zdCBjaGFyIGEyW11bM10gPSB7ImhpIiwg
ImxvIn07Ci0gIGNvbnN0IGNoYXIgYltdWzNdID0geyJsbyIsICJoaSJ9OwotCi0gIC8vIFRlc3Rz
IHVzaW5nIENvbnRhaW5lckVxKCkgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4KLSAgRVhQRUNUX1RI
QVQoYTEsIENvbnRhaW5lckVxKGEyKSk7Ci0gIEVYUEVDVF9USEFUKGExLCBOb3QoQ29udGFpbmVy
RXEoYikpKTsKLQotICAvLyBUZXN0cyB1c2luZyBDb250YWluZXJFcSgpIGluIHRoZSBzZWNvbmQg
ZGltZW5zaW9uLgotICBFWFBFQ1RfVEhBVChhMSwgRWxlbWVudHNBcmUoQ29udGFpbmVyRXEoYTJb
MF0pLCBDb250YWluZXJFcShhMlsxXSkpKTsKLSAgRVhQRUNUX1RIQVQoYTEsIEVsZW1lbnRzQXJl
KE5vdChDb250YWluZXJFcShiWzBdKSksIENvbnRhaW5lckVxKGEyWzFdKSkpOwotfQotCi1URVNU
KENvbnRhaW5lckVxRXh0cmFUZXN0LCBXb3Jrc0Zvck5hdGl2ZUFycmF5QXNUdXBsZSkgewotICBj
b25zdCBpbnQgYTFbXSA9IHsxLCAyLCAzfTsKLSAgY29uc3QgaW50IGEyW10gPSB7MSwgMiwgM307
Ci0gIGNvbnN0IGludCBiW10gPSB7MSwgMiwgMywgNH07Ci0KLSAgY29uc3QgaW50KiBjb25zdCBw
MSA9IGExOwotICBFWFBFQ1RfVEhBVChtYWtlX3R1cGxlKHAxLCAzKSwgQ29udGFpbmVyRXEoYTIp
KTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwMSwgMyksIE5vdChDb250YWluZXJFcShiKSkp
OwotCi0gIGNvbnN0IGludCBjW10gPSB7MSwgMywgMn07Ci0gIEVYUEVDVF9USEFUKG1ha2VfdHVw
bGUocDEsIDMpLCBOb3QoQ29udGFpbmVyRXEoYykpKTsKLX0KLQotVEVTVChDb250YWluZXJFcUV4
dHJhVGVzdCwgQ29waWVzTmF0aXZlQXJyYXlQYXJhbWV0ZXIpIHsKLSAgc3RkOjpzdHJpbmcgYTFb
XVszXSA9IHsKLSAgICB7ImhpIiwgImhlbGxvIiwgImNpYW8ifSwKLSAgICB7ImJ5ZSIsICJzZWUg
eW91IiwgImNpYW8ifQotICB9OwotCi0gIHN0ZDo6c3RyaW5nIGEyW11bM10gPSB7Ci0gICAgeyJo
aSIsICJoZWxsbyIsICJjaWFvIn0sCi0gICAgeyJieWUiLCAic2VlIHlvdSIsICJjaWFvIn0KLSAg
fTsKLQotICBjb25zdCBNYXRjaGVyPGNvbnN0IHN0ZDo6c3RyaW5nKCYpWzJdWzNdPiBtID0gQ29u
dGFpbmVyRXEoYTIpOwotICBFWFBFQ1RfVEhBVChhMSwgbSk7Ci0KLSAgYTJbMF1bMF0gPSAiaGEi
OwotICBFWFBFQ1RfVEhBVChhMSwgbSk7Ci19Ci0KLVRFU1QoV2hlblNvcnRlZEJ5VGVzdCwgV29y
a3NGb3JFbXB0eUNvbnRhaW5lcikgewotICBjb25zdCB2ZWN0b3I8aW50PiBudW1iZXJzOwotICBF
WFBFQ1RfVEhBVChudW1iZXJzLCBXaGVuU29ydGVkQnkobGVzczxpbnQ+KCksIEVsZW1lbnRzQXJl
KCkpKTsKLSAgRVhQRUNUX1RIQVQobnVtYmVycywgTm90KFdoZW5Tb3J0ZWRCeShsZXNzPGludD4o
KSwgRWxlbWVudHNBcmUoMSkpKSk7Ci19Ci0KLVRFU1QoV2hlblNvcnRlZEJ5VGVzdCwgV29ya3NG
b3JOb25FbXB0eUNvbnRhaW5lcikgewotICB2ZWN0b3I8dW5zaWduZWQ+IG51bWJlcnM7Ci0gIG51
bWJlcnMucHVzaF9iYWNrKDMpOwotICBudW1iZXJzLnB1c2hfYmFjaygxKTsKLSAgbnVtYmVycy5w
dXNoX2JhY2soMik7Ci0gIG51bWJlcnMucHVzaF9iYWNrKDIpOwotICBFWFBFQ1RfVEhBVChudW1i
ZXJzLCBXaGVuU29ydGVkQnkoZ3JlYXRlcjx1bnNpZ25lZD4oKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzQXJlKDMsIDIsIDIsIDEpKSk7Ci0gIEVYUEVDVF9U
SEFUKG51bWJlcnMsIE5vdChXaGVuU29ydGVkQnkoZ3JlYXRlcjx1bnNpZ25lZD4oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZSgxLCAyLCAyLCAz
KSkpKTsKLX0KLQotVEVTVChXaGVuU29ydGVkQnlUZXN0LCBXb3Jrc0Zvck5vblZlY3RvckNvbnRh
aW5lcikgewotICBsaXN0PHN0ZDo6c3RyaW5nPiB3b3JkczsKLSAgd29yZHMucHVzaF9iYWNrKCJz
YXkiKTsKLSAgd29yZHMucHVzaF9iYWNrKCJoZWxsbyIpOwotICB3b3Jkcy5wdXNoX2JhY2soIndv
cmxkIik7Ci0gIEVYUEVDVF9USEFUKHdvcmRzLCBXaGVuU29ydGVkQnkobGVzczxzdGQ6OnN0cmlu
Zz4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50c0FyZSgiaGVs
bG8iLCAic2F5IiwgIndvcmxkIikpKTsKLSAgRVhQRUNUX1RIQVQod29yZHMsIE5vdChXaGVuU29y
dGVkQnkobGVzczxzdGQ6OnN0cmluZz4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWxlbWVudHNBcmUoInNheSIsICJoZWxsbyIsICJ3b3JsZCIpKSkpOwotfQotCi1U
RVNUKFdoZW5Tb3J0ZWRCeVRlc3QsIFdvcmtzRm9yTmF0aXZlQXJyYXkpIHsKLSAgY29uc3QgaW50
IG51bWJlcnNbXSA9IHsxLCAzLCAyLCA0fTsKLSAgY29uc3QgaW50IHNvcnRlZF9udW1iZXJzW10g
PSB7MSwgMiwgMywgNH07Ci0gIEVYUEVDVF9USEFUKG51bWJlcnMsIFdoZW5Tb3J0ZWRCeShsZXNz
PGludD4oKSwgRWxlbWVudHNBcmUoMSwgMiwgMywgNCkpKTsKLSAgRVhQRUNUX1RIQVQobnVtYmVy
cywgV2hlblNvcnRlZEJ5KGxlc3M8aW50PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRWxlbWVudHNBcmVBcnJheShzb3J0ZWRfbnVtYmVycykpKTsKLSAgRVhQRUNUX1RI
QVQobnVtYmVycywgTm90KFdoZW5Tb3J0ZWRCeShsZXNzPGludD4oKSwgRWxlbWVudHNBcmUoMSwg
MywgMiwgNCkpKSk7Ci19Ci0KLVRFU1QoV2hlblNvcnRlZEJ5VGVzdCwgQ2FuRGVzY3JpYmVTZWxm
KSB7Ci0gIGNvbnN0IE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gV2hlblNvcnRlZEJ5KGxlc3M8
aW50PigpLCBFbGVtZW50c0FyZSgxLCAyKSk7Ci0gIEVYUEVDVF9FUSgiKHdoZW4gc29ydGVkKSBo
YXMgMiBlbGVtZW50cyB3aGVyZVxuIgotICAgICAgICAgICAgImVsZW1lbnQgIzAgaXMgZXF1YWwg
dG8gMSxcbiIKLSAgICAgICAgICAgICJlbGVtZW50ICMxIGlzIGVxdWFsIHRvIDIiLAotICAgICAg
ICAgICAgRGVzY3JpYmUobSkpOwotICBFWFBFQ1RfRVEoIih3aGVuIHNvcnRlZCkgZG9lc24ndCBo
YXZlIDIgZWxlbWVudHMsIG9yXG4iCi0gICAgICAgICAgICAiZWxlbWVudCAjMCBpc24ndCBlcXVh
bCB0byAxLCBvclxuIgotICAgICAgICAgICAgImVsZW1lbnQgIzEgaXNuJ3QgZXF1YWwgdG8gMiIs
Ci0gICAgICAgICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChXaGVuU29ydGVk
QnlUZXN0LCBFeHBsYWluc01hdGNoUmVzdWx0KSB7Ci0gIGNvbnN0IGludCBhW10gPSB7MiwgMX07
Ci0gIEVYUEVDVF9FUSgid2hpY2ggaXMgeyAxLCAyIH0gd2hlbiBzb3J0ZWQsIHdob3NlIGVsZW1l
bnQgIzAgZG9lc24ndCBtYXRjaCIsCi0gICAgICAgICAgICBFeHBsYWluKFdoZW5Tb3J0ZWRCeShs
ZXNzPGludD4oKSwgRWxlbWVudHNBcmUoMiwgMykpLCBhKSk7Ci0gIEVYUEVDVF9FUSgid2hpY2gg
aXMgeyAxLCAyIH0gd2hlbiBzb3J0ZWQiLAotICAgICAgICAgICAgRXhwbGFpbihXaGVuU29ydGVk
QnkobGVzczxpbnQ+KCksIEVsZW1lbnRzQXJlKDEsIDIpKSwgYSkpOwotfQotCi0vLyBXaGVuU29y
dGVkKCkgaXMgYSBzaW1wbGUgd3JhcHBlciBvbiBXaGVuU29ydGVkQnkoKS4gIEhlbmNlIHdlIGRv
bid0Ci0vLyBuZWVkIHRvIHRlc3QgaXQgYXMgZXhoYXVzdGl2ZWx5IGFzIHdlIHRlc3QgdGhlIGxh
dHRlci4KLQotVEVTVChXaGVuU29ydGVkVGVzdCwgV29ya3NGb3JFbXB0eUNvbnRhaW5lcikgewot
ICBjb25zdCB2ZWN0b3I8aW50PiBudW1iZXJzOwotICBFWFBFQ1RfVEhBVChudW1iZXJzLCBXaGVu
U29ydGVkKEVsZW1lbnRzQXJlKCkpKTsKLSAgRVhQRUNUX1RIQVQobnVtYmVycywgTm90KFdoZW5T
b3J0ZWQoRWxlbWVudHNBcmUoMSkpKSk7Ci19Ci0KLVRFU1QoV2hlblNvcnRlZFRlc3QsIFdvcmtz
Rm9yTm9uRW1wdHlDb250YWluZXIpIHsKLSAgbGlzdDxzdGQ6OnN0cmluZz4gd29yZHM7Ci0gIHdv
cmRzLnB1c2hfYmFjaygiMyIpOwotICB3b3Jkcy5wdXNoX2JhY2soIjEiKTsKLSAgd29yZHMucHVz
aF9iYWNrKCIyIik7Ci0gIHdvcmRzLnB1c2hfYmFjaygiMiIpOwotICBFWFBFQ1RfVEhBVCh3b3Jk
cywgV2hlblNvcnRlZChFbGVtZW50c0FyZSgiMSIsICIyIiwgIjIiLCAiMyIpKSk7Ci0gIEVYUEVD
VF9USEFUKHdvcmRzLCBOb3QoV2hlblNvcnRlZChFbGVtZW50c0FyZSgiMyIsICIxIiwgIjIiLCAi
MiIpKSkpOwotfQotCi1URVNUKFdoZW5Tb3J0ZWRUZXN0LCBXb3Jrc0Zvck1hcFR5cGVzKSB7Ci0g
IG1hcDxzdGQ6OnN0cmluZywgaW50PiB3b3JkX2NvdW50czsKLSAgd29yZF9jb3VudHNbImFuZCJd
ID0gMTsKLSAgd29yZF9jb3VudHNbInRoZSJdID0gMTsKLSAgd29yZF9jb3VudHNbImJ1ZmZhbG8i
XSA9IDI7Ci0gIEVYUEVDVF9USEFUKHdvcmRfY291bnRzLAotICAgICAgICAgICAgICBXaGVuU29y
dGVkKEVsZW1lbnRzQXJlKFBhaXIoImFuZCIsIDEpLCBQYWlyKCJidWZmYWxvIiwgMiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigidGhlIiwgMSkpKSk7Ci0gIEVY
UEVDVF9USEFUKHdvcmRfY291bnRzLAotICAgICAgICAgICAgICBOb3QoV2hlblNvcnRlZChFbGVt
ZW50c0FyZShQYWlyKCJhbmQiLCAxKSwgUGFpcigidGhlIiwgMSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoImJ1ZmZhbG8iLCAyKSkpKSk7Ci19Ci0KLVRF
U1QoV2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yTXVsdGlNYXBUeXBlcykgewotICAgIG11bHRpbWFw
PGludCwgaW50PiBpZmliOwotICAgIGlmaWIuaW5zZXJ0KG1ha2VfcGFpcig4LCA2KSk7Ci0gICAg
aWZpYi5pbnNlcnQobWFrZV9wYWlyKDIsIDMpKTsKLSAgICBpZmliLmluc2VydChtYWtlX3BhaXIo
MSwgMSkpOwotICAgIGlmaWIuaW5zZXJ0KG1ha2VfcGFpcigzLCA0KSk7Ci0gICAgaWZpYi5pbnNl
cnQobWFrZV9wYWlyKDEsIDIpKTsKLSAgICBpZmliLmluc2VydChtYWtlX3BhaXIoNSwgNSkpOwot
ICAgIEVYUEVDVF9USEFUKGlmaWIsIFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoUGFpcigxLCAxKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoMSwgMiks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDIsIDMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpcigzLCA0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaXIoNSwg
NSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDgs
IDYpKSkpOwotICAgIEVYUEVDVF9USEFUKGlmaWIsIE5vdChXaGVuU29ydGVkKEVsZW1lbnRzQXJl
KFBhaXIoOCwgNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFpcigyLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYWlyKDEsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhaXIoMywgNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFpcigxLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYWlyKDUsIDUpKSkpKTsKLX0KLQotVEVTVChXaGVu
U29ydGVkVGVzdCwgV29ya3NGb3JQb2x5bW9ycGhpY01hdGNoZXIpIHsKLSAgICBzdGQ6OmRlcXVl
PGludD4gZDsKLSAgICBkLnB1c2hfYmFjaygyKTsKLSAgICBkLnB1c2hfYmFjaygxKTsKLSAgICBF
WFBFQ1RfVEhBVChkLCBXaGVuU29ydGVkKEVsZW1lbnRzQXJlKDEsIDIpKSk7Ci0gICAgRVhQRUNU
X1RIQVQoZCwgTm90KFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMiwgMSkpKSk7Ci19Ci0KLVRFU1Qo
V2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yVmVjdG9yQ29uc3RSZWZNYXRjaGVyKSB7Ci0gICAgc3Rk
OjpkZXF1ZTxpbnQ+IGQ7Ci0gICAgZC5wdXNoX2JhY2soMik7Ci0gICAgZC5wdXNoX2JhY2soMSk7
Ci0gICAgTWF0Y2hlcjxjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+Jj4gdmVjdG9yX21hdGNoID0gRWxl
bWVudHNBcmUoMSwgMik7Ci0gICAgRVhQRUNUX1RIQVQoZCwgV2hlblNvcnRlZCh2ZWN0b3JfbWF0
Y2gpKTsKLSAgICBNYXRjaGVyPGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mPiBub3RfdmVjdG9yX21h
dGNoID0gRWxlbWVudHNBcmUoMiwgMSk7Ci0gICAgRVhQRUNUX1RIQVQoZCwgTm90KFdoZW5Tb3J0
ZWQobm90X3ZlY3Rvcl9tYXRjaCkpKTsKLX0KLQotLy8gRGVsaWJlcmF0ZWx5IGJhcmUgcHNldWRv
LWNvbnRhaW5lci4KLS8vIE9mZmVycyBvbmx5IGJlZ2luKCkgYW5kIGVuZCgpIGFjY2Vzc29ycywg
eWllbGRpbmcgSW5wdXRJdGVyYXRvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgU3Ry
ZWFtbGlrZSB7Ci0gcHJpdmF0ZToKLSAgY2xhc3MgQ29uc3RJdGVyOwotIHB1YmxpYzoKLSAgdHlw
ZWRlZiBDb25zdEl0ZXIgY29uc3RfaXRlcmF0b3I7Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwot
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBJbkl0ZXI+Ci0gIFN0cmVhbWxpa2UoSW5JdGVyIGZpcnN0
LCBJbkl0ZXIgbGFzdCkgOiByZW1haW5kZXJfKGZpcnN0LCBsYXN0KSB7fQotCi0gIGNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgewotICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBy
ZW1haW5kZXJfLmJlZ2luKCkpOwotICB9Ci0gIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsK
LSAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcmVtYWluZGVyXy5lbmQoKSk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIGNsYXNzIENvbnN0SXRlciA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0
ZDo6aW5wdXRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdHJkaWZmX3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZhbHVlX3R5cGUqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2YWx1ZV90eXBlJj4gewotICAgcHVibGljOgotICAgIENvbnN0SXRlcihjb25z
dCBTdHJlYW1saWtlKiBzLAotICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6Omxpc3Q8dmFsdWVf
dHlwZT46Oml0ZXJhdG9yIHBvcykKLSAgICAgICAgOiBzXyhzKSwgcG9zXyhwb3MpIHt9Ci0KLSAg
ICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqcG9zXzsgfQot
ICAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKnBvc187
IH0KLSAgICBDb25zdEl0ZXImIG9wZXJhdG9yKysoKSB7Ci0gICAgICBzXy0+cmVtYWluZGVyXy5l
cmFzZShwb3NfKyspOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vICppdGVy
KysgaXMgcmVxdWlyZWQgdG8gd29yayAoc2VlIHN0ZDo6aXN0cmVhbWJ1Zl9pdGVyYXRvcikuCi0g
ICAgLy8gKHZvaWQpaXRlcisrIGlzIGFsc28gcmVxdWlyZWQgdG8gd29yay4KLSAgICBjbGFzcyBQ
b3N0SW5jclByb3h5IHsKLSAgICAgcHVibGljOgotICAgICAgZXhwbGljaXQgUG9zdEluY3JQcm94
eShjb25zdCB2YWx1ZV90eXBlJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9Ci0gICAgICB2YWx1
ZV90eXBlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotICAgICBwcml2YXRl
OgotICAgICAgdmFsdWVfdHlwZSB2YWx1ZV87Ci0gICAgfTsKLSAgICBQb3N0SW5jclByb3h5IG9w
ZXJhdG9yKysoaW50KSB7Ci0gICAgICBQb3N0SW5jclByb3h5IHByb3h5KCoqdGhpcyk7Ci0gICAg
ICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcHJveHk7Ci0gICAgfQotCi0gICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDb25zdEl0ZXImIGEsIGNvbnN0IENvbnN0SXRlciYgYikgewot
ICAgICAgcmV0dXJuIGEuc18gPT0gYi5zXyAmJiBhLnBvc18gPT0gYi5wb3NfOwotICAgIH0KLSAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0SXRlciYgYSwgY29uc3QgQ29uc3RJ
dGVyJiBiKSB7Ci0gICAgICByZXR1cm4gIShhID09IGIpOwotICAgIH0KLQotICAgcHJpdmF0ZToK
LSAgICBjb25zdCBTdHJlYW1saWtlKiBzXzsKLSAgICB0eXBlbmFtZSBzdGQ6Omxpc3Q8dmFsdWVf
dHlwZT46Oml0ZXJhdG9yIHBvc187Ci0gIH07Ci0KLSAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBTdHJlYW1saWtlJiBzKSB7Ci0gICAgb3Mg
PDwgIlsiOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpsaXN0PHZhbHVlX3R5cGU+Ojpjb25z
dF9pdGVyYXRvciBJdGVyOwotICAgIGNvbnN0IGNoYXIqIHNlcCA9ICIiOwotICAgIGZvciAoSXRl
ciBpdCA9IHMucmVtYWluZGVyXy5iZWdpbigpOyBpdCAhPSBzLnJlbWFpbmRlcl8uZW5kKCk7ICsr
aXQpIHsKLSAgICAgIG9zIDw8IHNlcCA8PCAqaXQ7Ci0gICAgICBzZXAgPSAiLCI7Ci0gICAgfQot
ICAgIG9zIDw8ICJdIjsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICBtdXRhYmxlIHN0ZDo6bGlz
dDx2YWx1ZV90eXBlPiByZW1haW5kZXJfOyAgLy8gbW9kaWZpZWQgYnkgaXRlcmF0aW9uCi19Owot
Ci1URVNUKFN0cmVhbWxpa2VUZXN0LCBJdGVyYXRpb24pIHsKLSAgY29uc3QgaW50IGFbNV0gPSB7
MiwgMSwgNCwgNSwgM307Ci0gIFN0cmVhbWxpa2U8aW50PiBzKGEsIGEgKyA1KTsKLSAgU3RyZWFt
bGlrZTxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHMuYmVnaW4oKTsKLSAgY29uc3QgaW50KiBp
cCA9IGE7Ci0gIHdoaWxlIChpdCAhPSBzLmVuZCgpKSB7Ci0gICAgU0NPUEVEX1RSQUNFKGlwIC0g
YSk7Ci0gICAgRVhQRUNUX0VRKCppcCsrLCAqaXQrKyk7Ci0gIH0KLX0KLQotI2lmIEdURVNUX0hB
U19TVERfRk9SV0FSRF9MSVNUXwotVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBXb3Jrc1dp
dGhGb3J3YXJkTGlzdCkgewotICBzdGQ6OmZvcndhcmRfbGlzdDxpbnQ+IGNvbnRhaW5lcjsKLSAg
RVhQRUNUX1RIQVQoY29udGFpbmVyLCBCZWdpbkVuZERpc3RhbmNlSXMoMCkpOwotICBFWFBFQ1Rf
VEhBVChjb250YWluZXIsIE5vdChCZWdpbkVuZERpc3RhbmNlSXMoMSkpKTsKLSAgY29udGFpbmVy
LnB1c2hfZnJvbnQoMCk7Ci0gIEVYUEVDVF9USEFUKGNvbnRhaW5lciwgTm90KEJlZ2luRW5kRGlz
dGFuY2VJcygwKSkpOwotICBFWFBFQ1RfVEhBVChjb250YWluZXIsIEJlZ2luRW5kRGlzdGFuY2VJ
cygxKSk7Ci0gIGNvbnRhaW5lci5wdXNoX2Zyb250KDApOwotICBFWFBFQ1RfVEhBVChjb250YWlu
ZXIsIE5vdChCZWdpbkVuZERpc3RhbmNlSXMoMCkpKTsKLSAgRVhQRUNUX1RIQVQoY29udGFpbmVy
LCBCZWdpbkVuZERpc3RhbmNlSXMoMikpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0ZP
UldBUkRfTElTVF8KLQotVEVTVChCZWdpbkVuZERpc3RhbmNlSXNUZXN0LCBXb3Jrc1dpdGhOb25T
dGRMaXN0KSB7Ci0gIGNvbnN0IGludCBhWzVdID0gezEsIDIsIDMsIDQsIDV9OwotICBTdHJlYW1s
aWtlPGludD4gcyhhLCBhICsgNSk7Ci0gIEVYUEVDVF9USEFUKHMsIEJlZ2luRW5kRGlzdGFuY2VJ
cyg1KSk7Ci19Ci0KLVRFU1QoQmVnaW5FbmREaXN0YW5jZUlzVGVzdCwgQ2FuRGVzY3JpYmVTZWxm
KSB7Ci0gIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtID0gQmVnaW5FbmREaXN0YW5jZUlzKDIpOwot
ICBFWFBFQ1RfRVEoImRpc3RhbmNlIGJldHdlZW4gYmVnaW4oKSBhbmQgZW5kKCkgaXMgZXF1YWwg
dG8gMiIsIERlc2NyaWJlKG0pKTsKLSAgRVhQRUNUX0VRKCJkaXN0YW5jZSBiZXR3ZWVuIGJlZ2lu
KCkgYW5kIGVuZCgpIGlzbid0IGVxdWFsIHRvIDIiLAotICAgICAgICAgICAgRGVzY3JpYmVOZWdh
dGlvbihtKSk7Ci19Ci0KLVRFU1QoQmVnaW5FbmREaXN0YW5jZUlzVGVzdCwgRXhwbGFpbnNSZXN1
bHQpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0xID0gQmVnaW5FbmREaXN0YW5jZUlzKDIp
OwotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTIgPSBCZWdpbkVuZERpc3RhbmNlSXMoTHQoMikp
OwotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTMgPSBCZWdpbkVuZERpc3RhbmNlSXMoQW55T2Yo
MCwgMykpOwotICBNYXRjaGVyPHZlY3RvcjxpbnQ+ID4gbTQgPSBCZWdpbkVuZERpc3RhbmNlSXMo
R3JlYXRlclRoYW4oMSkpOwotICB2ZWN0b3I8aW50PiBjb250YWluZXI7Ci0gIEVYUEVDVF9FUSgi
d2hvc2UgZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAwIGRvZXNuJ3QgbWF0Y2gi
LAotICAgICAgICAgICAgRXhwbGFpbihtMSwgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hv
c2UgZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAwIG1hdGNoZXMiLAotICAgICAg
ICAgICAgRXhwbGFpbihtMiwgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hvc2UgZGlzdGFu
Y2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAwIG1hdGNoZXMiLAotICAgICAgICAgICAgRXhw
bGFpbihtMywgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJ3aG9zZSBkaXN0YW5j
ZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDAgZG9lc24ndCBtYXRjaCwgd2hpY2ggaXMgMSAi
Ci0gICAgICAibGVzcyB0aGFuIDEiLAotICAgICAgRXhwbGFpbihtNCwgY29udGFpbmVyKSk7Ci0g
IGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIGNvbnRhaW5lci5wdXNoX2JhY2soMCk7Ci0gIEVY
UEVDVF9FUSgid2hvc2UgZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAyIG1hdGNo
ZXMiLAotICAgICAgICAgICAgRXhwbGFpbihtMSwgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgi
d2hvc2UgZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAyIGRvZXNuJ3QgbWF0Y2gi
LAotICAgICAgICAgICAgRXhwbGFpbihtMiwgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgid2hv
c2UgZGlzdGFuY2UgYmV0d2VlbiBiZWdpbigpIGFuZCBlbmQoKSAyIGRvZXNuJ3QgbWF0Y2giLAot
ICAgICAgICAgICAgRXhwbGFpbihtMywgY29udGFpbmVyKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAg
ICJ3aG9zZSBkaXN0YW5jZSBiZXR3ZWVuIGJlZ2luKCkgYW5kIGVuZCgpIDIgbWF0Y2hlcywgd2hp
Y2ggaXMgMSBtb3JlICIKLSAgICAgICJ0aGFuIDEiLAotICAgICAgRXhwbGFpbihtNCwgY29udGFp
bmVyKSk7Ci19Ci0KLVRFU1QoV2hlblNvcnRlZFRlc3QsIFdvcmtzRm9yU3RyZWFtbGlrZSkgewot
ICAvLyBTdHJlYW1saWtlICdjb250YWluZXInIHByb3ZpZGVzIG9ubHkgbWluaW1hbCBpdGVyYXRv
ciBzdXBwb3J0LgotICAvLyBJdHMgaXRlcmF0b3JzIGFyZSB0YWdnZWQgd2l0aCBpbnB1dF9pdGVy
YXRvcl90YWcuCi0gIGNvbnN0IGludCBhWzVdID0gezIsIDEsIDQsIDUsIDN9OwotICBTdHJlYW1s
aWtlPGludD4gcyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBFWFBFQ1RfVEhBVChz
LCBXaGVuU29ydGVkKEVsZW1lbnRzQXJlKDEsIDIsIDMsIDQsIDUpKSk7Ci0gIEVYUEVDVF9USEFU
KHMsIE5vdChXaGVuU29ydGVkKEVsZW1lbnRzQXJlKDIsIDEsIDQsIDUsIDMpKSkpOwotfQotCi1U
RVNUKFdoZW5Tb3J0ZWRUZXN0LCBXb3Jrc0ZvclZlY3RvckNvbnN0UmVmTWF0Y2hlck9uU3RyZWFt
bGlrZSkgewotICBjb25zdCBpbnQgYVtdID0gezIsIDEsIDQsIDUsIDN9OwotICBTdHJlYW1saWtl
PGludD4gcyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBNYXRjaGVyPGNvbnN0IHN0
ZDo6dmVjdG9yPGludD4mPiB2ZWN0b3JfbWF0Y2ggPSBFbGVtZW50c0FyZSgxLCAyLCAzLCA0LCA1
KTsKLSAgRVhQRUNUX1RIQVQocywgV2hlblNvcnRlZCh2ZWN0b3JfbWF0Y2gpKTsKLSAgRVhQRUNU
X1RIQVQocywgTm90KFdoZW5Tb3J0ZWQoRWxlbWVudHNBcmUoMiwgMSwgNCwgNSwgMykpKSk7Ci19
Ci0KLS8vIFRlc3RzIHVzaW5nIEVsZW1lbnRzQXJlKCkgYW5kIEVsZW1lbnRzQXJlQXJyYXkoKSB3
aXRoIHN0cmVhbS1saWtlCi0vLyAiY29udGFpbmVycyIuCi0KLVRFU1QoRWxlbWVuc0FyZVN0cmVh
bVRlc3QsIFdvcmtzRm9yU3RyZWFtbGlrZSkgewotICBjb25zdCBpbnQgYVs1XSA9IHsxLCAyLCAz
LCA0LCA1fTsKLSAgU3RyZWFtbGlrZTxpbnQ+IHMoYSwgYSArIEdURVNUX0FSUkFZX1NJWkVfKGEp
KTsKLSAgRVhQRUNUX1RIQVQocywgRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOwotICBFWFBF
Q1RfVEhBVChzLCBOb3QoRWxlbWVudHNBcmUoMiwgMSwgNCwgNSwgMykpKTsKLX0KLQotVEVTVChF
bGVtZW5zQXJlQXJyYXlTdHJlYW1UZXN0LCBXb3Jrc0ZvclN0cmVhbWxpa2UpIHsKLSAgY29uc3Qg
aW50IGFbNV0gPSB7MSwgMiwgMywgNCwgNX07Ci0gIFN0cmVhbWxpa2U8aW50PiBzKGEsIGEgKyBH
VEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0KLSAgdmVjdG9yPGludD4gZXhwZWN0ZWQ7Ci0gIGV4cGVj
dGVkLnB1c2hfYmFjaygxKTsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDIpOwotICBleHBlY3RlZC5w
dXNoX2JhY2soMyk7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjayg0KTsKLSAgZXhwZWN0ZWQucHVzaF9i
YWNrKDUpOwotICBFWFBFQ1RfVEhBVChzLCBFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSk7Ci0K
LSAgZXhwZWN0ZWRbM10gPSAwOwotICBFWFBFQ1RfVEhBVChzLCBOb3QoRWxlbWVudHNBcmVBcnJh
eShleHBlY3RlZCkpKTsKLX0KLQotVEVTVChFbGVtZW50c0FyZVRlc3QsIFdvcmtzV2l0aFVuY29w
eWFibGUpIHsKLSAgVW5jb3B5YWJsZSBvYmpzWzJdOwotICBvYmpzWzBdLnNldF92YWx1ZSgtMyk7
Ci0gIG9ianNbMV0uc2V0X3ZhbHVlKDEpOwotICBFWFBFQ1RfVEhBVChvYmpzLCBFbGVtZW50c0Fy
ZShVbmNvcHlhYmxlSXMoLTMpLCBUcnVseShWYWx1ZUlzUG9zaXRpdmUpKSk7Ci19Ci0KLVRFU1Qo
RWxlbWVudHNBcmVUZXN0LCBUYWtlc1N0bENvbnRhaW5lcikgewotICBjb25zdCBpbnQgYWN0dWFs
W10gPSB7MywgMSwgMn07Ci0KLSAgOjpzdGQ6Omxpc3Q8aW50PiBleHBlY3RlZDsKLSAgZXhwZWN0
ZWQucHVzaF9iYWNrKDMpOwotICBleHBlY3RlZC5wdXNoX2JhY2soMSk7Ci0gIGV4cGVjdGVkLnB1
c2hfYmFjaygyKTsKLSAgRVhQRUNUX1RIQVQoYWN0dWFsLCBFbGVtZW50c0FyZUFycmF5KGV4cGVj
dGVkKSk7Ci0KLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDQpOwotICBFWFBFQ1RfVEhBVChhY3R1YWws
IE5vdChFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSkpOwotfQotCi0vLyBUZXN0cyBmb3IgVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheSgpCi0KLVRFU1QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eVRlc3QsIFN1Y2NlZWRzV2hlbkV4cGVjdGVkKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7MCwgMSwg
MiwgMywgNH07Ci0gIHN0ZDo6dmVjdG9yPGludD4gcyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8o
YSkpOwotICBkbyB7Ci0gICAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAg
ICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJh
eShhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgJmxpc3RlbmVyKSkg
PDwgbGlzdGVuZXIuc3RyKCk7Ci0gIH0gd2hpbGUgKHN0ZDo6bmV4dF9wZXJtdXRhdGlvbihzLmJl
Z2luKCksIHMuZW5kKCkpKTsKLX0KLQotVEVTVChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5VGVz
dCwgVmVjdG9yQm9vbCkgewotICBjb25zdCBib29sIGFbXSA9IHswLCAxLCAwLCAxLCAxfTsKLSAg
Y29uc3QgYm9vbCBiW10gPSB7MSwgMCwgMSwgMSwgMH07Ci0gIHN0ZDo6dmVjdG9yPGJvb2w+IGV4
cGVjdGVkKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0gIHN0ZDo6dmVjdG9yPGJvb2w+
IGFjdHVhbChiLCBiICsgR1RFU1RfQVJSQVlfU0laRV8oYikpOwotICBTdHJpbmdNYXRjaFJlc3Vs
dExpc3RlbmVyIGxpc3RlbmVyOwotICBFWFBFQ1RfVFJVRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5v
cmRlcmVkRWxlbWVudHNBcmVBcnJheShleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3R1YWwsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOwotfQotCi1U
RVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBXb3Jrc0ZvclN0cmVhbWxpa2UpIHsK
LSAgLy8gU3RyZWFtbGlrZSAnY29udGFpbmVyJyBwcm92aWRlcyBvbmx5IG1pbmltYWwgaXRlcmF0
b3Igc3VwcG9ydC4KLSAgLy8gSXRzIGl0ZXJhdG9ycyBhcmUgdGFnZ2VkIHdpdGggaW5wdXRfaXRl
cmF0b3JfdGFnLCBhbmQgaXQgaGFzIG5vCi0gIC8vIHNpemUoKSBvciBlbXB0eSgpIG1ldGhvZHMu
Ci0gIGNvbnN0IGludCBhWzVdID0gezIsIDEsIDQsIDUsIDN9OwotICBTdHJlYW1saWtlPGludD4g
cyhhLCBhICsgR1RFU1RfQVJSQVlfU0laRV8oYSkpOwotCi0gIDo6c3RkOjp2ZWN0b3I8aW50PiBl
eHBlY3RlZDsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDEpOwotICBleHBlY3RlZC5wdXNoX2JhY2so
Mik7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjaygzKTsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDQpOwot
ICBleHBlY3RlZC5wdXNoX2JhY2soNSk7Ci0gIEVYUEVDVF9USEFUKHMsIFVub3JkZXJlZEVsZW1l
bnRzQXJlQXJyYXkoZXhwZWN0ZWQpKTsKLQotICBleHBlY3RlZC5wdXNoX2JhY2soNik7Ci0gIEVY
UEVDVF9USEFUKHMsIE5vdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSkpOwot
fQotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBUYWtlc1N0bENvbnRhaW5l
cikgewotICBjb25zdCBpbnQgYWN0dWFsW10gPSB7MywgMSwgMn07Ci0KLSAgOjpzdGQ6Omxpc3Q8
aW50PiBleHBlY3RlZDsKLSAgZXhwZWN0ZWQucHVzaF9iYWNrKDEpOwotICBleHBlY3RlZC5wdXNo
X2JhY2soMik7Ci0gIGV4cGVjdGVkLnB1c2hfYmFjaygzKTsKLSAgRVhQRUNUX1RIQVQoYWN0dWFs
LCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KGV4cGVjdGVkKSk7Ci0KLSAgZXhwZWN0ZWQucHVz
aF9iYWNrKDQpOwotICBFWFBFQ1RfVEhBVChhY3R1YWwsIE5vdChVbm9yZGVyZWRFbGVtZW50c0Fy
ZUFycmF5KGV4cGVjdGVkKSkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9M
SVNUXwotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBUYWtlc0luaXRpYWxp
emVyTGlzdCkgewotICBjb25zdCBpbnQgYVs1XSA9IHsyLCAxLCA0LCA1LCAzfTsKLSAgRVhQRUNU
X1RIQVQoYSwgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7MSwgMiwgMywgNCwgNX0pKTsKLSAg
RVhQRUNUX1RIQVQoYSwgTm90KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoezEsIDIsIDMsIDQs
IDZ9KSkpOwotfQotCi1URVNUKFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXlUZXN0LCBUYWtlc0lu
aXRpYWxpemVyTGlzdE9mQ1N0cmluZ3MpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgYVs1XSA9IHsi
YSIsICJiIiwgImMiLCAiZCIsICJlIn07Ci0gIEVYUEVDVF9USEFUKGEsIFVub3JkZXJlZEVsZW1l
bnRzQXJlQXJyYXkoeyJhIiwgImIiLCAiYyIsICJkIiwgImUifSkpOwotICBFWFBFQ1RfVEhBVChh
LCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheSh7ImEiLCAiYiIsICJjIiwgImQiLCAiZWYi
fSkpKTsKLX0KLQotVEVTVChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5VGVzdCwgVGFrZXNJbml0
aWFsaXplckxpc3RPZlNhbWVUeXBlZE1hdGNoZXJzKSB7Ci0gIGNvbnN0IGludCBhWzVdID0gezIs
IDEsIDQsIDUsIDN9OwotICBFWFBFQ1RfVEhBVChhLCBVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5
KAotICAgICAge0VxKDEpLCBFcSgyKSwgRXEoMyksIEVxKDQpLCBFcSg1KX0pKTsKLSAgRVhQRUNU
X1RIQVQoYSwgTm90KFVub3JkZXJlZEVsZW1lbnRzQXJlQXJyYXkoCi0gICAgICB7RXEoMSksIEVx
KDIpLCBFcSgzKSwgRXEoNCksIEVxKDYpfSkpKTsKLX0KLQotVEVTVChVbm9yZGVyZWRFbGVtZW50
c0FyZUFycmF5VGVzdCwKLSAgICAgVGFrZXNJbml0aWFsaXplckxpc3RPZkRpZmZlcmVudFR5cGVk
TWF0Y2hlcnMpIHsKLSAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307Ci0gIC8vIFRo
ZSBjb21waWxlciBjYW5ub3QgaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGluaXRpYWxpemVyIGxpc3Qg
aWYgaXRzCi0gIC8vIGVsZW1lbnRzIGhhdmUgZGlmZmVyZW50IHR5cGVzLiAgV2UgbXVzdCBleHBs
aWNpdGx5IHNwZWNpZnkgdGhlCi0gIC8vIHVuaWZpZWQgZWxlbWVudCB0eXBlIGluIHRoaXMgY2Fz
ZS4KLSAgRVhQRUNUX1RIQVQoYSwgVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheTxNYXRjaGVyPGlu
dD4gPigKLSAgICAgIHtFcSgxKSwgTmUoLTIpLCBHZSgzKSwgTGUoNCksIEVxKDUpfSkpOwotICBF
WFBFQ1RfVEhBVChhLCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheTxNYXRjaGVyPGludD4g
PigKLSAgICAgIHtFcSgxKSwgTmUoLTIpLCBHZSgzKSwgTGUoNCksIEVxKDYpfSkpKTsKLX0KLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLWNsYXNzIFVub3Jk
ZXJlZEVsZW1lbnRzQXJlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8aW50PiBJbnRWZWM7Ci19OwotCi1URVNUX0YoVW5vcmRl
cmVkRWxlbWVudHNBcmVUZXN0LCBXb3Jrc1dpdGhVbmNvcHlhYmxlKSB7Ci0gIFVuY29weWFibGUg
b2Jqc1syXTsKLSAgb2Jqc1swXS5zZXRfdmFsdWUoLTMpOwotICBvYmpzWzFdLnNldF92YWx1ZSgx
KTsKLSAgRVhQRUNUX1RIQVQob2JqcywKLSAgICAgICAgICAgICAgVW5vcmRlcmVkRWxlbWVudHNB
cmUoVHJ1bHkoVmFsdWVJc1Bvc2l0aXZlKSwgVW5jb3B5YWJsZUlzKC0zKSkpOwotfQotCi1URVNU
X0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBTdWNjZWVkc1doZW5FeHBlY3RlZCkgewotICBj
b25zdCBpbnQgYVtdID0gezEsIDIsIDN9OwotICBzdGQ6OnZlY3RvcjxpbnQ+IHMoYSwgYSArIEdU
RVNUX0FSUkFZX1NJWkVfKGEpKTsKLSAgZG8gewotICAgIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVu
ZXIgbGlzdGVuZXI7Ci0gICAgRVhQRUNUX1RSVUUoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3JkZXJl
ZEVsZW1lbnRzQXJlKDEsIDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLCAmbGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKLSAgfSB3aGlsZSAoc3RkOjpuZXh0
X3Blcm11dGF0aW9uKHMuYmVnaW4oKSwgcy5lbmQoKSkpOwotfQotCi1URVNUX0YoVW5vcmRlcmVk
RWxlbWVudHNBcmVUZXN0LCBGYWlsc1doZW5BbkVsZW1lbnRNYXRjaGVzTm9NYXRjaGVyKSB7Ci0g
IGNvbnN0IGludCBhW10gPSB7MSwgMiwgM307Ci0gIHN0ZDo6dmVjdG9yPGludD4gcyhhLCBhICsg
R1RFU1RfQVJSQVlfU0laRV8oYSkpOwotICBzdGQ6OnZlY3RvcjxNYXRjaGVyPGludD4gPiBtdjsK
LSAgbXYucHVzaF9iYWNrKDEpOwotICBtdi5wdXNoX2JhY2soMik7Ci0gIG12LnB1c2hfYmFjaygy
KTsKLSAgLy8gVGhlIGVsZW1lbnQgd2l0aCB2YWx1ZSAnMycgbWF0Y2hlcyBub3RoaW5nOiBmYWls
IGZhc3QuCi0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7Ci0gIEVYUEVDVF9G
QUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxlbWVudHNBcmVBcnJheShtdiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgJmxpc3RlbmVyKSkgPDwgbGlzdGVu
ZXIuc3RyKCk7Ci19Ci0KLVRFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIFdvcmtzRm9y
U3RyZWFtbGlrZSkgewotICAvLyBTdHJlYW1saWtlICdjb250YWluZXInIHByb3ZpZGVzIG9ubHkg
bWluaW1hbCBpdGVyYXRvciBzdXBwb3J0LgotICAvLyBJdHMgaXRlcmF0b3JzIGFyZSB0YWdnZWQg
d2l0aCBpbnB1dF9pdGVyYXRvcl90YWcsIGFuZCBpdCBoYXMgbm8KLSAgLy8gc2l6ZSgpIG9yIGVt
cHR5KCkgbWV0aG9kcy4KLSAgY29uc3QgaW50IGFbNV0gPSB7MiwgMSwgNCwgNSwgM307Ci0gIFN0
cmVhbWxpa2U8aW50PiBzKGEsIGEgKyBHVEVTVF9BUlJBWV9TSVpFXyhhKSk7Ci0KLSAgRVhQRUNU
X1RIQVQocywgVW5vcmRlcmVkRWxlbWVudHNBcmUoMSwgMiwgMywgNCwgNSkpOwotICBFWFBFQ1Rf
VEhBVChzLCBOb3QoVW5vcmRlcmVkRWxlbWVudHNBcmUoMiwgMiwgMywgNCwgNSkpKTsKLX0KLQot
Ly8gT25lIG5haXZlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtYXRjaGVyIHJ1bnMgaW4gTyhOISkg
dGltZSwgd2hpY2ggaXMgdG9vCi0vLyBzbG93IGZvciBtYW55IHJlYWwtd29ybGQgaW5wdXRzLiBU
aGlzIHRlc3Qgc2hvd3MgdGhhdCBvdXIgbWF0Y2hlciBjYW4gbWF0Y2gKLS8vIDEwMCBpbnB1dHMg
dmVyeSBxdWlja2x5IChhIGZldyBtaWxsaXNlY29uZHMpLiAgQW4gTygxMDAhKSBpcyAxMF4xNTgK
LS8vIGl0ZXJhdGlvbnMgYW5kIG9idmlvdXNseSBlZmZlY3RpdmVseSBpbmNvbXB1dGFibGUuCi0v
LyBbIFJVTiAgICAgIF0gVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LlBlcmZvcm1hbmNlCi0vLyBb
ICAgICAgIE9LIF0gVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LlBlcmZvcm1hbmNlICg0IG1zKQot
VEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgUGVyZm9ybWFuY2UpIHsKLSAgc3RkOjp2
ZWN0b3I8aW50PiBzOwotICBzdGQ6OnZlY3RvcjxNYXRjaGVyPGludD4gPiBtdjsKLSAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgIHMucHVzaF9iYWNrKGkpOwotICAgIG12LnB1
c2hfYmFjayhfKTsKLSAgfQotICBtdls1MF0gPSBFcSgwKTsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRM
aXN0ZW5lciBsaXN0ZW5lcjsKLSAgRVhQRUNUX1RSVUUoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3Jk
ZXJlZEVsZW1lbnRzQXJlQXJyYXkobXYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcywgJmxpc3RlbmVyKSkgPDwgbGlzdGVuZXIuc3RyKCk7Ci19Ci0KLS8vIEFub3RoZXIgdmFy
aWFudCBvZiAnUGVyZm9ybWFuY2UnIHdpdGggc2ltaWxhciBleHBlY3RhdGlvbnMuCi0vLyBbIFJV
TiAgICAgIF0gVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LlBlcmZvcm1hbmNlSGFsZlN0cmljdAot
Ly8gWyAgICAgICBPSyBdIFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdC5QZXJmb3JtYW5jZUhhbGZT
dHJpY3QgKDQgbXMpCi1URVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBQZXJmb3JtYW5j
ZUhhbGZTdHJpY3QpIHsKLSAgc3RkOjp2ZWN0b3I8aW50PiBzOwotICBzdGQ6OnZlY3RvcjxNYXRj
aGVyPGludD4gPiBtdjsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewotICAgIHMu
cHVzaF9iYWNrKGkpOwotICAgIGlmIChpICYgMSkgewotICAgICAgbXYucHVzaF9iYWNrKF8pOwot
ICAgIH0gZWxzZSB7Ci0gICAgICBtdi5wdXNoX2JhY2soaSk7Ci0gICAgfQotICB9Ci0gIFN0cmlu
Z01hdGNoUmVzdWx0TGlzdGVuZXIgbGlzdGVuZXI7Ci0gIEVYUEVDVF9UUlVFKEV4cGxhaW5NYXRj
aFJlc3VsdChVbm9yZGVyZWRFbGVtZW50c0FyZUFycmF5KG12KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMsICZsaXN0ZW5lcikpIDw8IGxpc3RlbmVyLnN0cigpOwotfQotCi1U
RVNUX0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBGYWlsTWVzc2FnZUNvdW50V3JvbmcpIHsK
LSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotICB2LnB1c2hfYmFjayg0KTsKLSAgU3RyaW5nTWF0Y2hS
ZXN1bHRMaXN0ZW5lciBsaXN0ZW5lcjsKLSAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3Vs
dChVbm9yZGVyZWRFbGVtZW50c0FyZSgxLCAyLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2LCAmbGlzdGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKLSAgRVhQRUNUX1RI
QVQobGlzdGVuZXIuc3RyKCksIEVxKCJ3aGljaCBoYXMgMSBlbGVtZW50IikpOwotfQotCi1URVNU
X0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBGYWlsTWVzc2FnZUNvdW50V3JvbmdaZXJvKSB7
Ci0gIHN0ZDo6dmVjdG9yPGludD4gdjsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0
ZW5lcjsKLSAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50
c0FyZSgxLCAyLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCAmbGlz
dGVuZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKLSAgRVhQRUNUX1RIQVQobGlzdGVuZXIuc3RyKCks
IEVxKCIiKSk7Ci19Ci0KLVRFU1RfRihVbm9yZGVyZWRFbGVtZW50c0FyZVRlc3QsIEZhaWxNZXNz
YWdlVW5tYXRjaGVkTWF0Y2hlcnMpIHsKLSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotICB2LnB1c2hf
YmFjaygxKTsKLSAgdi5wdXNoX2JhY2soMSk7Ci0gIFN0cmluZ01hdGNoUmVzdWx0TGlzdGVuZXIg
bGlzdGVuZXI7Ci0gIEVYUEVDVF9GQUxTRShFeHBsYWluTWF0Y2hSZXN1bHQoVW5vcmRlcmVkRWxl
bWVudHNBcmUoMSwgMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgJmxp
c3RlbmVyKSkgPDwgbGlzdGVuZXIuc3RyKCk7Ci0gIEVYUEVDVF9USEFUKAotICAgICAgbGlzdGVu
ZXIuc3RyKCksCi0gICAgICBFcSgid2hlcmUgdGhlIGZvbGxvd2luZyBtYXRjaGVycyBkb24ndCBt
YXRjaCBhbnkgZWxlbWVudHM6XG4iCi0gICAgICAgICAibWF0Y2hlciAjMTogaXMgZXF1YWwgdG8g
MiIpKTsKLX0KLQotVEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgRmFpbE1lc3NhZ2VV
bm1hdGNoZWRFbGVtZW50cykgewotICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Ci0gIHYucHVzaF9iYWNr
KDEpOwotICB2LnB1c2hfYmFjaygyKTsKLSAgU3RyaW5nTWF0Y2hSZXN1bHRMaXN0ZW5lciBsaXN0
ZW5lcjsKLSAgRVhQRUNUX0ZBTFNFKEV4cGxhaW5NYXRjaFJlc3VsdChVbm9yZGVyZWRFbGVtZW50
c0FyZSgxLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCAmbGlzdGVu
ZXIpKSA8PCBsaXN0ZW5lci5zdHIoKTsKLSAgRVhQRUNUX1RIQVQoCi0gICAgICBsaXN0ZW5lci5z
dHIoKSwKLSAgICAgIEVxKCJ3aGVyZSB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGRvbid0IG1hdGNo
IGFueSBtYXRjaGVyczpcbiIKLSAgICAgICAgICJlbGVtZW50ICMxOiAyIikpOwotfQotCi1URVNU
X0YoVW5vcmRlcmVkRWxlbWVudHNBcmVUZXN0LCBGYWlsTWVzc2FnZVVubWF0Y2hlZE1hdGNoZXJB
bmRFbGVtZW50KSB7Ci0gIHN0ZDo6dmVjdG9yPGludD4gdjsKLSAgdi5wdXNoX2JhY2soMik7Ci0g
IHYucHVzaF9iYWNrKDMpOwotICBTdHJpbmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOwot
ICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1hdGNoUmVzdWx0KFVub3JkZXJlZEVsZW1lbnRzQXJlKDEs
IDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsICZsaXN0ZW5lcikpIDw8
IGxpc3RlbmVyLnN0cigpOwotICBFWFBFQ1RfVEhBVCgKLSAgICAgIGxpc3RlbmVyLnN0cigpLAot
ICAgICAgRXEoIndoZXJlIgotICAgICAgICAgIiB0aGUgZm9sbG93aW5nIG1hdGNoZXJzIGRvbid0
IG1hdGNoIGFueSBlbGVtZW50czpcbiIKLSAgICAgICAgICJtYXRjaGVyICMwOiBpcyBlcXVhbCB0
byAxXG4iCi0gICAgICAgICAiYW5kIgotICAgICAgICAgIiB3aGVyZSIKLSAgICAgICAgICIgdGhl
IGZvbGxvd2luZyBlbGVtZW50cyBkb24ndCBtYXRjaCBhbnkgbWF0Y2hlcnM6XG4iCi0gICAgICAg
ICAiZWxlbWVudCAjMTogMyIpKTsKLX0KLQotLy8gVGVzdCBoZWxwZXIgZm9yIGZvcm1hdHRpbmcg
ZWxlbWVudCwgbWF0Y2hlciBpbmRleCBwYWlycyBpbiBleHBlY3RhdGlvbnMuCi1zdGF0aWMgc3Rk
OjpzdHJpbmcgRU1TdHJpbmcoaW50IGVsZW1lbnQsIGludCBtYXRjaGVyKSB7Ci0gIHN0cmluZ3N0
cmVhbSBzczsKLSAgc3MgPDwgIihlbGVtZW50ICMiIDw8IGVsZW1lbnQgPDwgIiwgbWF0Y2hlciAj
IiA8PCBtYXRjaGVyIDw8ICIpIjsKLSAgcmV0dXJuIHNzLnN0cigpOwotfQotCi1URVNUX0YoVW5v
cmRlcmVkRWxlbWVudHNBcmVUZXN0LCBGYWlsTWVzc2FnZUltcGVyZmVjdE1hdGNoT25seSkgewot
ICAvLyBBIHNpdHVhdGlvbiB3aGVyZSBhbGwgZWxlbWVudHMgYW5kIG1hdGNoZXJzIGhhdmUgYSBt
YXRjaAotICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlbSwgYnV0IHRoZSBtYXggbWF0Y2hpbmcgaXMg
bm90IHBlcmZlY3QuCi0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2OwotICB2LnB1c2hfYmFj
aygiYSIpOwotICB2LnB1c2hfYmFjaygiYiIpOwotICB2LnB1c2hfYmFjaygiYyIpOwotICBTdHJp
bmdNYXRjaFJlc3VsdExpc3RlbmVyIGxpc3RlbmVyOwotICBFWFBFQ1RfRkFMU0UoRXhwbGFpbk1h
dGNoUmVzdWx0KAotICAgICAgVW5vcmRlcmVkRWxlbWVudHNBcmUoImEiLCAiYSIsIEFueU9mKCJi
IiwgImMiKSksIHYsICZsaXN0ZW5lcikpCi0gICAgICA8PCBsaXN0ZW5lci5zdHIoKTsKLQotICBz
dGQ6OnN0cmluZyBwcmVmaXggPQotICAgICAgIndoZXJlIG5vIHBlcm11dGF0aW9uIG9mIHRoZSBl
bGVtZW50cyBjYW4gc2F0aXNmeSBhbGwgbWF0Y2hlcnMsICIKLSAgICAgICJhbmQgdGhlIGNsb3Nl
c3QgbWF0Y2ggaXMgMiBvZiAzIG1hdGNoZXJzIHdpdGggdGhlICIKLSAgICAgICJwYWlyaW5nczpc
biI7Ci0KLSAgLy8gV2UgaGF2ZSB0byBiZSBhIGJpdCBsb29zZSBoZXJlLCBiZWNhdXNlIHRoZXJl
IGFyZSA0IHZhbGlkIG1heCBtYXRjaGVzLgotICBFWFBFQ1RfVEhBVCgKLSAgICAgIGxpc3RlbmVy
LnN0cigpLAotICAgICAgQW55T2YocHJlZml4ICsgIntcbiAgIiArIEVNU3RyaW5nKDAsIDApICsK
LSAgICAgICAgICAgICAgICAgICAgICIsXG4gICIgKyBFTVN0cmluZygxLCAyKSArICJcbn0iLAot
ICAgICAgICAgICAgcHJlZml4ICsgIntcbiAgIiArIEVNU3RyaW5nKDAsIDEpICsKLSAgICAgICAg
ICAgICAgICAgICAgICIsXG4gICIgKyBFTVN0cmluZygxLCAyKSArICJcbn0iLAotICAgICAgICAg
ICAgcHJlZml4ICsgIntcbiAgIiArIEVNU3RyaW5nKDAsIDApICsKLSAgICAgICAgICAgICAgICAg
ICAgICIsXG4gICIgKyBFTVN0cmluZygyLCAyKSArICJcbn0iLAotICAgICAgICAgICAgcHJlZml4
ICsgIntcbiAgIiArIEVNU3RyaW5nKDAsIDEpICsKLSAgICAgICAgICAgICAgICAgICAgICIsXG4g
ICIgKyBFTVN0cmluZygyLCAyKSArICJcbn0iKSk7Ci19Ci0KLVRFU1RfRihVbm9yZGVyZWRFbGVt
ZW50c0FyZVRlc3QsIERlc2NyaWJlKSB7Ci0gIEVYUEVDVF9USEFUKERlc2NyaWJlPEludFZlYz4o
VW5vcmRlcmVkRWxlbWVudHNBcmUoKSksCi0gICAgICAgICAgICAgIEVxKCJpcyBlbXB0eSIpKTsK
LSAgRVhQRUNUX1RIQVQoCi0gICAgICBEZXNjcmliZTxJbnRWZWM+KFVub3JkZXJlZEVsZW1lbnRz
QXJlKDM0NSkpLAotICAgICAgRXEoImhhcyAxIGVsZW1lbnQgYW5kIHRoYXQgZWxlbWVudCBpcyBl
cXVhbCB0byAzNDUiKSk7Ci0gIEVYUEVDVF9USEFUKAotICAgICAgRGVzY3JpYmU8SW50VmVjPihV
bm9yZGVyZWRFbGVtZW50c0FyZSgxMTEsIDIyMiwgMzMzKSksCi0gICAgICBFcSgiaGFzIDMgZWxl
bWVudHMgYW5kIHRoZXJlIGV4aXN0cyBzb21lIHBlcm11dGF0aW9uICIKLSAgICAgICAgICJvZiBl
bGVtZW50cyBzdWNoIHRoYXQ6XG4iCi0gICAgICAgICAiIC0gZWxlbWVudCAjMCBpcyBlcXVhbCB0
byAxMTEsIGFuZFxuIgotICAgICAgICAgIiAtIGVsZW1lbnQgIzEgaXMgZXF1YWwgdG8gMjIyLCBh
bmRcbiIKLSAgICAgICAgICIgLSBlbGVtZW50ICMyIGlzIGVxdWFsIHRvIDMzMyIpKTsKLX0KLQot
VEVTVF9GKFVub3JkZXJlZEVsZW1lbnRzQXJlVGVzdCwgRGVzY3JpYmVOZWdhdGlvbikgewotICBF
WFBFQ1RfVEhBVChEZXNjcmliZU5lZ2F0aW9uPEludFZlYz4oVW5vcmRlcmVkRWxlbWVudHNBcmUo
KSksCi0gICAgICAgICAgICAgIEVxKCJpc24ndCBlbXB0eSIpKTsKLSAgRVhQRUNUX1RIQVQoCi0g
ICAgICBEZXNjcmliZU5lZ2F0aW9uPEludFZlYz4oVW5vcmRlcmVkRWxlbWVudHNBcmUoMzQ1KSks
Ci0gICAgICBFcSgiZG9lc24ndCBoYXZlIDEgZWxlbWVudCwgb3IgaGFzIDEgZWxlbWVudCB0aGF0
IGlzbid0IGVxdWFsIHRvIDM0NSIpKTsKLSAgRVhQRUNUX1RIQVQoCi0gICAgICBEZXNjcmliZU5l
Z2F0aW9uPEludFZlYz4oVW5vcmRlcmVkRWxlbWVudHNBcmUoMTIzLCAyMzQsIDM0NSkpLAotICAg
ICAgRXEoImRvZXNuJ3QgaGF2ZSAzIGVsZW1lbnRzLCBvciB0aGVyZSBleGlzdHMgbm8gcGVybXV0
YXRpb24gIgotICAgICAgICAgIm9mIGVsZW1lbnRzIHN1Y2ggdGhhdDpcbiIKLSAgICAgICAgICIg
LSBlbGVtZW50ICMwIGlzIGVxdWFsIHRvIDEyMywgYW5kXG4iCi0gICAgICAgICAiIC0gZWxlbWVu
dCAjMSBpcyBlcXVhbCB0byAyMzQsIGFuZFxuIgotICAgICAgICAgIiAtIGVsZW1lbnQgIzIgaXMg
ZXF1YWwgdG8gMzQ1IikpOwotfQotCi1uYW1lc3BhY2UgewotCi0vLyBVc2VkIGFzIGEgY2hlY2sg
b24gdGhlIG1vcmUgY29tcGxleCBtYXggZmxvdyBtZXRob2QgdXNlZCBpbiB0aGUKLS8vIHJlYWwg
dGVzdGluZzo6aW50ZXJuYWw6OkZpbmRNYXhCaXBhcnRpdGVNYXRjaGluZy4gVGhpcyBtZXRob2Qg
aXMKLS8vIGNvbXBhdGlibGUgYnV0IHJ1bnMgaW4gd29yc3QtY2FzZSBmYWN0b3JpYWwgdGltZSwg
c28gd2Ugb25seQotLy8gdXNlIGl0IGluIHRlc3RpbmcgZm9yIHNtYWxsIHByb2JsZW0gc2l6ZXMu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+Ci1jbGFzcyBCYWNrdHJhY2tpbmdNYXhCUE1TdGF0
ZSB7Ci0gcHVibGljOgotICAvLyBEb2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiAnZycuCi0gIGV4
cGxpY2l0IEJhY2t0cmFja2luZ01heEJQTVN0YXRlKGNvbnN0IEdyYXBoKiBnKSA6IGdyYXBoXyhn
KSB7IH0KLQotICBFbGVtZW50TWF0Y2hlclBhaXJzIENvbXB1dGUoKSB7Ci0gICAgaWYgKGdyYXBo
Xy0+TGhzU2l6ZSgpID09IDAgfHwgZ3JhcGhfLT5SaHNTaXplKCkgPT0gMCkgewotICAgICAgcmV0
dXJuIGJlc3Rfc29fZmFyXzsKLSAgICB9Ci0gICAgbGhzX3VzZWRfLmFzc2lnbihncmFwaF8tPkxo
c1NpemUoKSwga1VudXNlZCk7Ci0gICAgcmhzX3VzZWRfLmFzc2lnbihncmFwaF8tPlJoc1NpemUo
KSwga1VudXNlZCk7Ci0gICAgZm9yIChzaXplX3QgaXJocyA9IDA7IGlyaHMgPCBncmFwaF8tPlJo
c1NpemUoKTsgKytpcmhzKSB7Ci0gICAgICBtYXRjaGVzXy5jbGVhcigpOwotICAgICAgUmVjdXJz
ZUludG8oaXJocyk7Ci0gICAgICBpZiAoYmVzdF9zb19mYXJfLnNpemUoKSA9PSBncmFwaF8tPlJo
c1NpemUoKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBiZXN0X3NvX2Zhcl87
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBjb25zdCBzaXplX3Qga1VudXNlZCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oLTEpOwotCi0gIHZvaWQgUHVzaE1hdGNoKHNpemVfdCBsaHMsIHNpemVf
dCByaHMpIHsKLSAgICBtYXRjaGVzXy5wdXNoX2JhY2soRWxlbWVudE1hdGNoZXJQYWlyKGxocywg
cmhzKSk7Ci0gICAgbGhzX3VzZWRfW2xoc10gPSByaHM7Ci0gICAgcmhzX3VzZWRfW3Joc10gPSBs
aHM7Ci0gICAgaWYgKG1hdGNoZXNfLnNpemUoKSA+IGJlc3Rfc29fZmFyXy5zaXplKCkpIHsKLSAg
ICAgIGJlc3Rfc29fZmFyXyA9IG1hdGNoZXNfOwotICAgIH0KLSAgfQotCi0gIHZvaWQgUG9wTWF0
Y2goKSB7Ci0gICAgY29uc3QgRWxlbWVudE1hdGNoZXJQYWlyJiBiYWNrID0gbWF0Y2hlc18uYmFj
aygpOwotICAgIGxoc191c2VkX1tiYWNrLmZpcnN0XSA9IGtVbnVzZWQ7Ci0gICAgcmhzX3VzZWRf
W2JhY2suc2Vjb25kXSA9IGtVbnVzZWQ7Ci0gICAgbWF0Y2hlc18ucG9wX2JhY2soKTsKLSAgfQot
Ci0gIGJvb2wgUmVjdXJzZUludG8oc2l6ZV90IGlyaHMpIHsKLSAgICBpZiAocmhzX3VzZWRfW2ly
aHNdICE9IGtVbnVzZWQpIHsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBmb3IgKHNp
emVfdCBpbGhzID0gMDsgaWxocyA8IGdyYXBoXy0+TGhzU2l6ZSgpOyArK2lsaHMpIHsKLSAgICAg
IGlmIChsaHNfdXNlZF9baWxoc10gIT0ga1VudXNlZCkgewotICAgICAgICBjb250aW51ZTsKLSAg
ICAgIH0KLSAgICAgIGlmICghZ3JhcGhfLT5IYXNFZGdlKGlsaHMsIGlyaHMpKSB7Ci0gICAgICAg
IGNvbnRpbnVlOwotICAgICAgfQotICAgICAgUHVzaE1hdGNoKGlsaHMsIGlyaHMpOwotICAgICAg
aWYgKGJlc3Rfc29fZmFyXy5zaXplKCkgPT0gZ3JhcGhfLT5SaHNTaXplKCkpIHsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZm9yIChzaXplX3QgbWkgPSBpcmhzICsgMTsg
bWkgPCBncmFwaF8tPlJoc1NpemUoKTsgKyttaSkgewotICAgICAgICBpZiAoIVJlY3Vyc2VJbnRv
KG1pKSkgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgUG9wTWF0Y2goKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBjb25zdCBHcmFwaCogZ3JhcGhfOyAgLy8gbm90IG93
bmVkCi0gIHN0ZDo6dmVjdG9yPHNpemVfdD4gbGhzX3VzZWRfOwotICBzdGQ6OnZlY3RvcjxzaXpl
X3Q+IHJoc191c2VkXzsKLSAgRWxlbWVudE1hdGNoZXJQYWlycyBtYXRjaGVzXzsKLSAgRWxlbWVu
dE1hdGNoZXJQYWlycyBiZXN0X3NvX2Zhcl87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR3Jh
cGg+Ci1jb25zdCBzaXplX3QgQmFja3RyYWNraW5nTWF4QlBNU3RhdGU8R3JhcGg+OjprVW51c2Vk
OwotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gSW1wbGVtZW50IGEgc2ltcGxlIGJhY2t0cmFja2lu
ZyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIHBvc3NpYmxlCi0vLyB0byBmaW5kIG9u
ZSBlbGVtZW50IHBlciBtYXRjaGVyLCB3aXRob3V0IHJldXNpbmcgZWxlbWVudHMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgR3JhcGg+Ci1FbGVtZW50TWF0Y2hlclBhaXJzCi1GaW5kQmFja3RyYWNraW5n
TWF4QlBNKGNvbnN0IEdyYXBoJiBnKSB7Ci0gIHJldHVybiBCYWNrdHJhY2tpbmdNYXhCUE1TdGF0
ZTxHcmFwaD4oJmcpLkNvbXB1dGUoKTsKLX0KLQotY2xhc3MgQmFja3RyYWNraW5nQlBNVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyB9OwotCi0vLyBUZXN0cyB0aGUgTWF4QmlwYXJ0aXRl
TWF0Y2hpbmcgYWxnb3JpdGhtIHdpdGggc3F1YXJlIG1hdHJpY2VzLgotLy8gVGhlIHNpbmdsZSBp
bnQgcGFyYW0gaXMgdGhlICMgb2Ygbm9kZXMgb24gZWFjaCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQg
c2lkZXMuCi1jbGFzcyBCaXBhcnRpdGVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxpbnQ+IHsgfTsKLQotLy8gVmVyaWZ5IGFsbCBtYXRjaCBncmFwaHMgdXAgdG8gc29tZSBt
b2RlcmF0ZSBudW1iZXIgb2YgZWRnZXMuCi1URVNUX1AoQmlwYXJ0aXRlVGVzdCwgRXhoYXVzdGl2
ZSkgewotICBpbnQgbm9kZXMgPSBHZXRQYXJhbSgpOwotICBNYXRjaE1hdHJpeCBncmFwaChub2Rl
cywgbm9kZXMpOwotICBkbyB7Ci0gICAgRWxlbWVudE1hdGNoZXJQYWlycyBtYXRjaGVzID0KLSAg
ICAgICAgaW50ZXJuYWw6OkZpbmRNYXhCaXBhcnRpdGVNYXRjaGluZyhncmFwaCk7Ci0gICAgRVhQ
RUNUX0VRKEZpbmRCYWNrdHJhY2tpbmdNYXhCUE0oZ3JhcGgpLnNpemUoKSwgbWF0Y2hlcy5zaXpl
KCkpCi0gICAgICAgIDw8ICJncmFwaDogIiA8PCBncmFwaC5EZWJ1Z1N0cmluZygpOwotICAgIC8v
IENoZWNrIHRoYXQgYWxsIGVsZW1lbnRzIG9mIG1hdGNoZXMgYXJlIGluIHRoZSBncmFwaC4KLSAg
ICAvLyBDaGVjayB0aGF0IGVsZW1lbnRzIG9mIGZpcnN0IGFuZCBzZWNvbmQgYXJlIHVuaXF1ZS4K
LSAgICBzdGQ6OnZlY3Rvcjxib29sPiBzZWVuX2VsZW1lbnQoZ3JhcGguTGhzU2l6ZSgpKTsKLSAg
ICBzdGQ6OnZlY3Rvcjxib29sPiBzZWVuX21hdGNoZXIoZ3JhcGguUmhzU2l6ZSgpKTsKLSAgICBT
Q09QRURfVFJBQ0UoUHJpbnRUb1N0cmluZyhtYXRjaGVzKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXRjaGVzLnNpemUoKTsgKytpKSB7Ci0gICAgICBzaXplX3QgaWxocyA9IG1hdGNo
ZXNbaV0uZmlyc3Q7Ci0gICAgICBzaXplX3QgaXJocyA9IG1hdGNoZXNbaV0uc2Vjb25kOwotICAg
ICAgRVhQRUNUX1RSVUUoZ3JhcGguSGFzRWRnZShpbGhzLCBpcmhzKSk7Ci0gICAgICBFWFBFQ1Rf
RkFMU0Uoc2Vlbl9lbGVtZW50W2lsaHNdKTsKLSAgICAgIEVYUEVDVF9GQUxTRShzZWVuX21hdGNo
ZXJbaXJoc10pOwotICAgICAgc2Vlbl9lbGVtZW50W2lsaHNdID0gdHJ1ZTsKLSAgICAgIHNlZW5f
bWF0Y2hlcltpcmhzXSA9IHRydWU7Ci0gICAgfQotICB9IHdoaWxlIChncmFwaC5OZXh0R3JhcGgo
KSk7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbEdyYXBocywgQmlwYXJ0aXRlVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6UmFuZ2UoMCwgNSkpOwotCi0v
LyBQYXJhbWV0ZXJpemVkIGJ5IGEgcGFpciBpbnRlcnByZXRlZCBhcyAoTGhzU2l6ZSwgUmhzU2l6
ZSkuCi1jbGFzcyBCaXBhcnRpdGVOb25TcXVhcmVUZXN0Ci0gICAgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4gPiB7Ci19OwotCi1URVNU
X0YoQmlwYXJ0aXRlTm9uU3F1YXJlVGVzdCwgU2ltcGxlQmFja3RyYWNraW5nKSB7Ci0gIC8vICAg
Li4uLi4uLgotICAvLyAwOi0tLS0tXCA6Ci0gIC8vIDE6LS0tXCB8IDoKLSAgLy8gMjotLS1cIHwg
OgotICAvLyAzOi1cIHwgfCA6Ci0gIC8vICA6Li4uLi4uLjoKLSAgLy8gICAgMCAxIDIKLSAgTWF0
Y2hNYXRyaXggZyg0LCAzKTsKLSAgc3RhdGljIGNvbnN0IGludCBrRWRnZXNbXVsyXSA9IHt7MCwg
Mn0sIHsxLCAxfSwgezIsIDF9LCB7MywgMH19OwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdU
RVNUX0FSUkFZX1NJWkVfKGtFZGdlcyk7ICsraSkgewotICAgIGcuU2V0RWRnZShrRWRnZXNbaV1b
MF0sIGtFZGdlc1tpXVsxXSwgdHJ1ZSk7Ci0gIH0KLSAgRVhQRUNUX1RIQVQoRmluZEJhY2t0cmFj
a2luZ01heEJQTShnKSwKLSAgICAgICAgICAgICAgRWxlbWVudHNBcmUoUGFpcigzLCAwKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFpcihBbnlPZigxLCAyKSwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhaXIoMCwgMikpKSA8PCBnLkRlYnVnU3RyaW5nKCk7Ci19Ci0KLS8v
IFZlcmlmeSBhIGZldyBub25zcXVhcmUgbWF0cmljZXMuCi1URVNUX1AoQmlwYXJ0aXRlTm9uU3F1
YXJlVGVzdCwgRXhoYXVzdGl2ZSkgewotICBzaXplX3QgbmxocyA9IEdldFBhcmFtKCkuZmlyc3Q7
Ci0gIHNpemVfdCBucmhzID0gR2V0UGFyYW0oKS5zZWNvbmQ7Ci0gIE1hdGNoTWF0cml4IGdyYXBo
KG5saHMsIG5yaHMpOwotICBkbyB7Ci0gICAgRVhQRUNUX0VRKEZpbmRCYWNrdHJhY2tpbmdNYXhC
UE0oZ3JhcGgpLnNpemUoKSwKLSAgICAgICAgICAgICAgaW50ZXJuYWw6OkZpbmRNYXhCaXBhcnRp
dGVNYXRjaGluZyhncmFwaCkuc2l6ZSgpKQotICAgICAgICA8PCAiZ3JhcGg6ICIgPDwgZ3JhcGgu
RGVidWdTdHJpbmcoKQotICAgICAgICA8PCAiXG5iYWNrdHJhY2tpbmc6ICIKLSAgICAgICAgPDwg
UHJpbnRUb1N0cmluZyhGaW5kQmFja3RyYWNraW5nTWF4QlBNKGdyYXBoKSkKLSAgICAgICAgPDwg
IlxubWF4IGZsb3c6ICIKLSAgICAgICAgPDwgUHJpbnRUb1N0cmluZyhpbnRlcm5hbDo6RmluZE1h
eEJpcGFydGl0ZU1hdGNoaW5nKGdyYXBoKSk7Ci0gIH0gd2hpbGUgKGdyYXBoLk5leHRHcmFwaCgp
KTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsR3JhcGhzLCBCaXBhcnRpdGVOb25T
cXVhcmVUZXN0LAotICAgIHRlc3Rpbmc6OlZhbHVlcygKLSAgICAgICAgc3RkOjptYWtlX3BhaXIo
MSwgMiksCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDIsIDEpLAotICAgICAgICBzdGQ6Om1ha2Vf
cGFpcigzLCAyKSwKLSAgICAgICAgc3RkOjptYWtlX3BhaXIoMiwgMyksCi0gICAgICAgIHN0ZDo6
bWFrZV9wYWlyKDQsIDEpLAotICAgICAgICBzdGQ6Om1ha2VfcGFpcigxLCA0KSwKLSAgICAgICAg
c3RkOjptYWtlX3BhaXIoNCwgMyksCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDMsIDQpKSk7Ci0K
LWNsYXNzIEJpcGFydGl0ZVJhbmRvbVRlc3QKLSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08c3RkOjpwYWlyPGludCwgaW50PiA+IHsKLX07Ci0KLS8vIFZlcmlmaWVzIGEgbGFy
Z2Ugc2FtcGxlIG9mIGxhcmdlciBncmFwaHMuCi1URVNUX1AoQmlwYXJ0aXRlUmFuZG9tVGVzdCwg
TGFyZ2VyTmV0cykgewotICBpbnQgbm9kZXMgPSBHZXRQYXJhbSgpLmZpcnN0OwotICBpbnQgaXRl
cnMgPSBHZXRQYXJhbSgpLnNlY29uZDsKLSAgTWF0Y2hNYXRyaXggZ3JhcGgobm9kZXMsIG5vZGVz
KTsKLQotICB0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgc2VlZCA9IEdURVNUX0ZMQUcocmFuZG9t
X3NlZWQpOwotICBpZiAoc2VlZCA9PSAwKSB7Ci0gICAgc2VlZCA9IHN0YXRpY19jYXN0PHRlc3Rp
bmc6OmludGVybmFsOjpJbnQzMj4odGltZShOVUxMKSk7Ci0gIH0KLQotICBmb3IgKDsgaXRlcnMg
PiAwOyAtLWl0ZXJzLCArK3NlZWQpIHsKLSAgICBzcmFuZChzdGF0aWNfY2FzdDxpbnQ+KHNlZWQp
KTsKLSAgICBncmFwaC5SYW5kb21pemUoKTsKLSAgICBFWFBFQ1RfRVEoRmluZEJhY2t0cmFja2lu
Z01heEJQTShncmFwaCkuc2l6ZSgpLAotICAgICAgICAgICAgICBpbnRlcm5hbDo6RmluZE1heEJp
cGFydGl0ZU1hdGNoaW5nKGdyYXBoKS5zaXplKCkpCi0gICAgICAgIDw8ICIgZ3JhcGg6ICIgPDwg
Z3JhcGguRGVidWdTdHJpbmcoKQotICAgICAgICA8PCAiXG5UbyByZXByb2R1Y2UgdGhlIGZhaWx1
cmUsIHJlcnVuIHRoZSB0ZXN0IHdpdGggdGhlIGZsYWciCi0gICAgICAgICAgICIgLS0iIDw8IEdU
RVNUX0ZMQUdfUFJFRklYXyA8PCAicmFuZG9tX3NlZWQ9IiA8PCBzZWVkOwotICB9Ci19Ci0KLS8v
IFRlc3QgYXJndW1lbnQgaXMgYSBzdGQ6OnBhaXI8aW50LCBpbnQ+IHJlcHJlc2VudGluZyAobm9k
ZXMsIGl0ZXJzKS4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNhbXBsZXMsIEJpcGFydGl0ZVJh
bmRvbVRlc3QsCi0gICAgdGVzdGluZzo6VmFsdWVzKAotICAgICAgICBzdGQ6Om1ha2VfcGFpcig1
LCAxMDAwMCksCi0gICAgICAgIHN0ZDo6bWFrZV9wYWlyKDYsIDUwMDApLAotICAgICAgICBzdGQ6
Om1ha2VfcGFpcig3LCAyMDAwKSwKLSAgICAgICAgc3RkOjptYWtlX3BhaXIoOCwgNTAwKSwKLSAg
ICAgICAgc3RkOjptYWtlX3BhaXIoOSwgMTAwKSkpOwotCi0vLyBUZXN0cyBJc1JlYWRhYmxlVHlw
ZU5hbWUoKS4KLQotVEVTVChJc1JlYWRhYmxlVHlwZU5hbWVUZXN0LCBSZXR1cm5zVHJ1ZUZvclNo
b3J0TmFtZXMpIHsKLSAgRVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5cGVOYW1lKCJpbnQiKSk7Ci0g
IEVYUEVDVF9UUlVFKElzUmVhZGFibGVUeXBlTmFtZSgiY29uc3QgdW5zaWduZWQgY2hhcioiKSk7
Ci0gIEVYUEVDVF9UUlVFKElzUmVhZGFibGVUeXBlTmFtZSgiTXlNYXA8aW50LCB2b2lkKj4iKSk7
Ci0gIEVYUEVDVF9UUlVFKElzUmVhZGFibGVUeXBlTmFtZSgidm9pZCAoKikoaW50LCBib29sKSIp
KTsKLX0KLQotVEVTVChJc1JlYWRhYmxlVHlwZU5hbWVUZXN0LCBSZXR1cm5zVHJ1ZUZvckxvbmdO
b25UZW1wbGF0ZU5vbkZ1bmN0aW9uTmFtZXMpIHsKLSAgRVhQRUNUX1RSVUUoSXNSZWFkYWJsZVR5
cGVOYW1lKCJteV9sb25nX25hbWVzcGFjZTo6TXlDbGFzc05hbWUiKSk7Ci0gIEVYUEVDVF9UUlVF
KElzUmVhZGFibGVUeXBlTmFtZSgiaW50IFs1XVs2XVs3XVs4XVs5XVsxMF1bMTFdIikpOwotICBF
WFBFQ1RfVFJVRShJc1JlYWRhYmxlVHlwZU5hbWUoIm15X25hbWVzcGFjZTo6TXlPdXRlckNsYXNz
OjpNeUlubmVyQ2xhc3MiKSk7Ci19Ci0KLVRFU1QoSXNSZWFkYWJsZVR5cGVOYW1lVGVzdCwgUmV0
dXJuc0ZhbHNlRm9yTG9uZ1RlbXBsYXRlTmFtZXMpIHsKLSAgRVhQRUNUX0ZBTFNFKAotICAgICAg
SXNSZWFkYWJsZVR5cGVOYW1lKCJiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxj
aGFyPiA+IikpOwotICBFWFBFQ1RfRkFMU0UoSXNSZWFkYWJsZVR5cGVOYW1lKCJzdGQ6OnZlY3Rv
cjxpbnQsIHN0ZDo6YWxsb2NfdHJhaXRzPGludD4gPiIpKTsKLX0KLQotVEVTVChJc1JlYWRhYmxl
VHlwZU5hbWVUZXN0LCBSZXR1cm5zRmFsc2VGb3JMb25nRnVuY3Rpb25UeXBlTmFtZXMpIHsKLSAg
RVhQRUNUX0ZBTFNFKElzUmVhZGFibGVUeXBlTmFtZSgidm9pZCAoJikoaW50LCBib29sLCBjaGFy
LCBmbG9hdCkiKSk7Ci19Ci0KLS8vIFRlc3RzIEpvaW5Bc1R1cGxlKCkuCi0KLVRFU1QoSm9pbkFz
VHVwbGVUZXN0LCBKb2luc0VtcHR5VHVwbGUpIHsKLSAgRVhQRUNUX0VRKCIiLCBKb2luQXNUdXBs
ZShTdHJpbmdzKCkpKTsKLX0KLQotVEVTVChKb2luQXNUdXBsZVRlc3QsIEpvaW5zT25lVHVwbGUp
IHsKLSAgY29uc3QgY2hhciogZmllbGRzW10gPSB7IjEifTsKLSAgRVhQRUNUX0VRKCIxIiwgSm9p
bkFzVHVwbGUoU3RyaW5ncyhmaWVsZHMsIGZpZWxkcyArIDEpKSk7Ci19Ci0KLVRFU1QoSm9pbkFz
VHVwbGVUZXN0LCBKb2luc1R3b1R1cGxlKSB7Ci0gIGNvbnN0IGNoYXIqIGZpZWxkc1tdID0geyIx
IiwgImEifTsKLSAgRVhQRUNUX0VRKCIoMSwgYSkiLCBKb2luQXNUdXBsZShTdHJpbmdzKGZpZWxk
cywgZmllbGRzICsgMikpKTsKLX0KLQotVEVTVChKb2luQXNUdXBsZVRlc3QsIEpvaW5zVGVuVHVw
bGUpIHsKLSAgY29uc3QgY2hhciogZmllbGRzW10gPSB7IjEiLCAiMiIsICIzIiwgIjQiLCAiNSIs
ICI2IiwgIjciLCAiOCIsICI5IiwgIjEwIn07Ci0gIEVYUEVDVF9FUSgiKDEsIDIsIDMsIDQsIDUs
IDYsIDcsIDgsIDksIDEwKSIsCi0gICAgICAgICAgICBKb2luQXNUdXBsZShTdHJpbmdzKGZpZWxk
cywgZmllbGRzICsgMTApKSk7Ci19Ci0KLS8vIFRlc3RzIEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlv
bigpLgotCi1URVNUKEZvcm1hdE1hdGNoZXJEZXNjcmlwdGlvblRlc3QsIFdvcmtzRm9yRW1wdHlE
ZXNjcmlwdGlvbikgewotICBFWFBFQ1RfRVEoImlzIGV2ZW4iLAotICAgICAgICAgICAgRm9ybWF0
TWF0Y2hlckRlc2NyaXB0aW9uKGZhbHNlLCAiSXNFdmVuIiwgU3RyaW5ncygpKSk7Ci0gIEVYUEVD
VF9FUSgibm90IChpcyBldmVuKSIsCi0gICAgICAgICAgICBGb3JtYXRNYXRjaGVyRGVzY3JpcHRp
b24odHJ1ZSwgIklzRXZlbiIsIFN0cmluZ3MoKSkpOwotCi0gIGNvbnN0IGNoYXIqIHBhcmFtc1td
ID0geyI1In07Ci0gIEVYUEVDVF9FUSgiZXF1YWxzIDUiLAotICAgICAgICAgICAgRm9ybWF0TWF0
Y2hlckRlc2NyaXB0aW9uKGZhbHNlLCAiRXF1YWxzIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTdHJpbmdzKHBhcmFtcywgcGFyYW1zICsgMSkpKTsKLQotICBjb25zdCBj
aGFyKiBwYXJhbXMyW10gPSB7IjUiLCAiOCJ9OwotICBFWFBFQ1RfRVEoImlzIGluIHJhbmdlICg1
LCA4KSIsCi0gICAgICAgICAgICBGb3JtYXRNYXRjaGVyRGVzY3JpcHRpb24oZmFsc2UsICJJc0lu
UmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ3MocGFy
YW1zMiwgcGFyYW1zMiArIDIpKSk7Ci19Ci0KLS8vIFRlc3RzIFBvbHltb3JwaGljTWF0Y2hlcjo6
bXV0YWJsZV9pbXBsKCkuCi1URVNUKFBvbHltb3JwaGljTWF0Y2hlclRlc3QsIENhbkFjY2Vzc011
dGFibGVJbXBsKSB7Ci0gIFBvbHltb3JwaGljTWF0Y2hlcjxEaXZpc2libGVCeUltcGw+IG0oRGl2
aXNpYmxlQnlJbXBsKDQyKSk7Ci0gIERpdmlzaWJsZUJ5SW1wbCYgaW1wbCA9IG0ubXV0YWJsZV9p
bXBsKCk7Ci0gIEVYUEVDVF9FUSg0MiwgaW1wbC5kaXZpZGVyKCkpOwotCi0gIGltcGwuc2V0X2Rp
dmlkZXIoMCk7Ci0gIEVYUEVDVF9FUSgwLCBtLm11dGFibGVfaW1wbCgpLmRpdmlkZXIoKSk7Ci19
Ci0KLS8vIFRlc3RzIFBvbHltb3JwaGljTWF0Y2hlcjo6aW1wbCgpLgotVEVTVChQb2x5bW9ycGhp
Y01hdGNoZXJUZXN0LCBDYW5BY2Nlc3NJbXBsKSB7Ci0gIGNvbnN0IFBvbHltb3JwaGljTWF0Y2hl
cjxEaXZpc2libGVCeUltcGw+IG0oRGl2aXNpYmxlQnlJbXBsKDQyKSk7Ci0gIGNvbnN0IERpdmlz
aWJsZUJ5SW1wbCYgaW1wbCA9IG0uaW1wbCgpOwotICBFWFBFQ1RfRVEoNDIsIGltcGwuZGl2aWRl
cigpKTsKLX0KLQotVEVTVChNYXRjaGVyVHVwbGVUZXN0LCBFeHBsYWluc01hdGNoRmFpbHVyZSkg
ewotICBzdHJpbmdzdHJlYW0gc3MxOwotICBFeHBsYWluTWF0Y2hGYWlsdXJlVHVwbGVUbyhtYWtl
X3R1cGxlKE1hdGNoZXI8Y2hhcj4oRXEoJ2EnKSksIEdyZWF0ZXJUaGFuKDUpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFrZV90dXBsZSgnYScsIDEwKSwgJnNzMSk7Ci0gIEVYUEVD
VF9FUSgiIiwgc3MxLnN0cigpKTsgIC8vIFN1Y2Nlc3NmdWwgbWF0Y2guCi0KLSAgc3RyaW5nc3Ry
ZWFtIHNzMjsKLSAgRXhwbGFpbk1hdGNoRmFpbHVyZVR1cGxlVG8obWFrZV90dXBsZShHcmVhdGVy
VGhhbig1KSwgTWF0Y2hlcjxjaGFyPihFcSgnYScpKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ha2VfdHVwbGUoMiwgJ2InKSwgJnNzMik7Ci0gIEVYUEVDVF9FUSgiICBFeHBlY3Rl
ZCBhcmcgIzA6IGlzID4gNVxuIgotICAgICAgICAgICAgIiAgICAgICAgICAgQWN0dWFsOiAyLCB3
aGljaCBpcyAzIGxlc3MgdGhhbiA1XG4iCi0gICAgICAgICAgICAiICBFeHBlY3RlZCBhcmcgIzE6
IGlzIGVxdWFsIHRvICdhJyAoOTcsIDB4NjEpXG4iCi0gICAgICAgICAgICAiICAgICAgICAgICBB
Y3R1YWw6ICdiJyAoOTgsIDB4NjIpXG4iLAotICAgICAgICAgICAgc3MyLnN0cigpKTsgIC8vIEZh
aWxlZCBtYXRjaCB3aGVyZSBib3RoIGFyZ3VtZW50cyBuZWVkIGV4cGxhbmF0aW9uLgotCi0gIHN0
cmluZ3N0cmVhbSBzczM7Ci0gIEV4cGxhaW5NYXRjaEZhaWx1cmVUdXBsZVRvKG1ha2VfdHVwbGUo
R3JlYXRlclRoYW4oNSksIE1hdGNoZXI8Y2hhcj4oRXEoJ2EnKSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYWtlX3R1cGxlKDIsICdhJyksICZzczMpOwotICBFWFBFQ1RfRVEoIiAg
RXhwZWN0ZWQgYXJnICMwOiBpcyA+IDVcbiIKLSAgICAgICAgICAgICIgICAgICAgICAgIEFjdHVh
bDogMiwgd2hpY2ggaXMgMyBsZXNzIHRoYW4gNVxuIiwKLSAgICAgICAgICAgIHNzMy5zdHIoKSk7
ICAvLyBGYWlsZWQgbWF0Y2ggd2hlcmUgb25seSBvbmUgYXJndW1lbnQgbmVlZHMKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBleHBsYW5hdGlvbi4KLX0KLQotLy8gVGVzdHMgRWFjaCgpLgot
Ci1URVNUKEVhY2hUZXN0LCBFeHBsYWluc01hdGNoUmVzdWx0Q29ycmVjdGx5KSB7Ci0gIHNldDxp
bnQ+IGE7ICAvLyBlbXB0eQotCi0gIE1hdGNoZXI8c2V0PGludD4gPiBtID0gRWFjaCgyKTsKLSAg
RVhQRUNUX0VRKCIiLCBFeHBsYWluKG0sIGEpKTsKLQotICBNYXRjaGVyPGNvbnN0IGludCgmKVsx
XT4gbiA9IEVhY2goMSk7ICAvLyBOT0xJTlQKLQotICBjb25zdCBpbnQgYlsxXSA9IHsxfTsKLSAg
RVhQRUNUX0VRKCIiLCBFeHBsYWluKG4sIGIpKTsKLQotICBuID0gRWFjaCgzKTsKLSAgRVhQRUNU
X0VRKCJ3aG9zZSBlbGVtZW50ICMwIGRvZXNuJ3QgbWF0Y2giLCBFeHBsYWluKG4sIGIpKTsKLQot
ICBhLmluc2VydCgxKTsKLSAgYS5pbnNlcnQoMik7Ci0gIGEuaW5zZXJ0KDMpOwotICBtID0gRWFj
aChHcmVhdGVyVGhhbigwKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihtLCBhKSk7Ci0KLSAg
bSA9IEVhY2goR3JlYXRlclRoYW4oMTApKTsKLSAgRVhQRUNUX0VRKCJ3aG9zZSBlbGVtZW50ICMw
IGRvZXNuJ3QgbWF0Y2gsIHdoaWNoIGlzIDkgbGVzcyB0aGFuIDEwIiwKLSAgICAgICAgICAgIEV4
cGxhaW4obSwgYSkpOwotfQotCi1URVNUKEVhY2hUZXN0LCBEZXNjcmliZXNJdHNlbGZDb3JyZWN0
bHkpIHsKLSAgTWF0Y2hlcjx2ZWN0b3I8aW50PiA+IG0gPSBFYWNoKDEpOwotICBFWFBFQ1RfRVEo
Im9ubHkgY29udGFpbnMgZWxlbWVudHMgdGhhdCBpcyBlcXVhbCB0byAxIiwgRGVzY3JpYmUobSkp
OwotCi0gIE1hdGNoZXI8dmVjdG9yPGludD4gPiBtMiA9IE5vdChtKTsKLSAgRVhQRUNUX0VRKCJj
b250YWlucyBzb21lIGVsZW1lbnQgdGhhdCBpc24ndCBlcXVhbCB0byAxIiwgRGVzY3JpYmUobTIp
KTsKLX0KLQotVEVTVChFYWNoVGVzdCwgTWF0Y2hlc1ZlY3RvcldoZW5BbGxFbGVtZW50c01hdGNo
KSB7Ci0gIHZlY3RvcjxpbnQ+IHNvbWVfdmVjdG9yOwotICBFWFBFQ1RfVEhBVChzb21lX3ZlY3Rv
ciwgRWFjaCgxKSk7Ci0gIHNvbWVfdmVjdG9yLnB1c2hfYmFjaygzKTsKLSAgRVhQRUNUX1RIQVQo
c29tZV92ZWN0b3IsIE5vdChFYWNoKDEpKSk7Ci0gIEVYUEVDVF9USEFUKHNvbWVfdmVjdG9yLCBF
YWNoKDMpKTsKLSAgc29tZV92ZWN0b3IucHVzaF9iYWNrKDEpOwotICBzb21lX3ZlY3Rvci5wdXNo
X2JhY2soMik7Ci0gIEVYUEVDVF9USEFUKHNvbWVfdmVjdG9yLCBOb3QoRWFjaCgzKSkpOwotICBF
WFBFQ1RfVEhBVChzb21lX3ZlY3RvciwgRWFjaChMdCgzLjUpKSk7Ci0KLSAgdmVjdG9yPHN0ZDo6
c3RyaW5nPiBhbm90aGVyX3ZlY3RvcjsKLSAgYW5vdGhlcl92ZWN0b3IucHVzaF9iYWNrKCJmZWUi
KTsKLSAgRVhQRUNUX1RIQVQoYW5vdGhlcl92ZWN0b3IsIEVhY2goc3RkOjpzdHJpbmcoImZlZSIp
KSk7Ci0gIGFub3RoZXJfdmVjdG9yLnB1c2hfYmFjaygiZmllIik7Ci0gIGFub3RoZXJfdmVjdG9y
LnB1c2hfYmFjaygiZm9lIik7Ci0gIGFub3RoZXJfdmVjdG9yLnB1c2hfYmFjaygiZnVtIik7Ci0g
IEVYUEVDVF9USEFUKGFub3RoZXJfdmVjdG9yLCBOb3QoRWFjaChzdGQ6OnN0cmluZygiZmVlIikp
KSk7Ci19Ci0KLVRFU1QoRWFjaFRlc3QsIE1hdGNoZXNNYXBXaGVuQWxsRWxlbWVudHNNYXRjaCkg
ewotICBtYXA8Y29uc3QgY2hhciosIGludD4gbXlfbWFwOwotICBjb25zdCBjaGFyKiBiYXIgPSAi
YSBzdHJpbmciOwotICBteV9tYXBbYmFyXSA9IDI7Ci0gIEVYUEVDVF9USEFUKG15X21hcCwgRWFj
aChtYWtlX3BhaXIoYmFyLCAyKSkpOwotCi0gIG1hcDxzdGQ6OnN0cmluZywgaW50PiBhbm90aGVy
X21hcDsKLSAgRVhQRUNUX1RIQVQoYW5vdGhlcl9tYXAsIEVhY2gobWFrZV9wYWlyKHN0ZDo6c3Ry
aW5nKCJmZWUiKSwgMSkpKTsKLSAgYW5vdGhlcl9tYXBbImZlZSJdID0gMTsKLSAgRVhQRUNUX1RI
QVQoYW5vdGhlcl9tYXAsIEVhY2gobWFrZV9wYWlyKHN0ZDo6c3RyaW5nKCJmZWUiKSwgMSkpKTsK
LSAgYW5vdGhlcl9tYXBbImZpZSJdID0gMjsKLSAgYW5vdGhlcl9tYXBbImZvZSJdID0gMzsKLSAg
YW5vdGhlcl9tYXBbImZ1bSJdID0gNDsKLSAgRVhQRUNUX1RIQVQoYW5vdGhlcl9tYXAsIE5vdChF
YWNoKG1ha2VfcGFpcihzdGQ6OnN0cmluZygiZmVlIiksIDEpKSkpOwotICBFWFBFQ1RfVEhBVChh
bm90aGVyX21hcCwgTm90KEVhY2gobWFrZV9wYWlyKHN0ZDo6c3RyaW5nKCJmdW0iKSwgMSkpKSk7
Ci0gIEVYUEVDVF9USEFUKGFub3RoZXJfbWFwLCBFYWNoKFBhaXIoXywgR3QoMCkpKSk7Ci19Ci0K
LVRFU1QoRWFjaFRlc3QsIEFjY2VwdHNNYXRjaGVyKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7MSwg
MiwgM307Ci0gIEVYUEVDVF9USEFUKGEsIEVhY2goR3QoMCkpKTsKLSAgRVhQRUNUX1RIQVQoYSwg
Tm90KEVhY2goR3QoMSkpKSk7Ci19Ci0KLVRFU1QoRWFjaFRlc3QsIFdvcmtzRm9yTmF0aXZlQXJy
YXlBc1R1cGxlKSB7Ci0gIGNvbnN0IGludCBhW10gPSB7MSwgMn07Ci0gIGNvbnN0IGludCogY29u
c3QgcG9pbnRlciA9IGE7Ci0gIEVYUEVDVF9USEFUKG1ha2VfdHVwbGUocG9pbnRlciwgMiksIEVh
Y2goR3QoMCkpKTsKLSAgRVhQRUNUX1RIQVQobWFrZV90dXBsZShwb2ludGVyLCAyKSwgTm90KEVh
Y2goR3QoMSkpKSk7Ci19Ci0KLS8vIEZvciB0ZXN0aW5nIFBvaW50d2lzZSgpLgotY2xhc3MgSXNI
YWxmT2ZNYXRjaGVyIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Ci0gIGJvb2wgTWF0Y2hBbmRFeHBsYWluKGNvbnN0IHR1cGxlPFQxLCBUMj4mIGFfcGFp
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hSZXN1bHRMaXN0ZW5lciogbGlzdGVuZXIp
IGNvbnN0IHsKLSAgICBpZiAoZ2V0PDA+KGFfcGFpcikgPT0gZ2V0PDE+KGFfcGFpcikvMikgewot
ICAgICAgKmxpc3RlbmVyIDw8ICJ3aGVyZSB0aGUgc2Vjb25kIGlzICIgPDwgZ2V0PDE+KGFfcGFp
cik7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgKmxpc3RlbmVyIDw8
ICJ3aGVyZSB0aGUgc2Vjb25kLzIgaXMgIiA8PCBnZXQ8MT4oYV9wYWlyKS8yOwotICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVUbyhvc3RyZWFtKiBvcykg
Y29uc3QgewotICAgICpvcyA8PCAiYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgaXMgaGFsZiBv
ZiB0aGUgc2Vjb25kIjsKLSAgfQotCi0gIHZvaWQgRGVzY3JpYmVOZWdhdGlvblRvKG9zdHJlYW0q
IG9zKSBjb25zdCB7Ci0gICAgKm9zIDw8ICJhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpc24n
dCBoYWxmIG9mIHRoZSBzZWNvbmQiOwotICB9Ci19OwotCi1Qb2x5bW9ycGhpY01hdGNoZXI8SXNI
YWxmT2ZNYXRjaGVyPiBJc0hhbGZPZigpIHsKLSAgcmV0dXJuIE1ha2VQb2x5bW9ycGhpY01hdGNo
ZXIoSXNIYWxmT2ZNYXRjaGVyKCkpOwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIERlc2NyaWJl
c1NlbGYpIHsKLSAgdmVjdG9yPGludD4gcmhzOwotICByaHMucHVzaF9iYWNrKDEpOwotICByaHMu
cHVzaF9iYWNrKDIpOwotICByaHMucHVzaF9iYWNrKDMpOwotICBjb25zdCBNYXRjaGVyPGNvbnN0
IHZlY3RvcjxpbnQ+Jj4gbSA9IFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpOwotICBFWFBFQ1Rf
RVEoImNvbnRhaW5zIDMgdmFsdWVzLCB3aGVyZSBlYWNoIHZhbHVlIGFuZCBpdHMgY29ycmVzcG9u
ZGluZyB2YWx1ZSAiCi0gICAgICAgICAgICAiaW4geyAxLCAyLCAzIH0gYXJlIGEgcGFpciB3aGVy
ZSB0aGUgZmlyc3QgaXMgaGFsZiBvZiB0aGUgc2Vjb25kIiwKLSAgICAgICAgICAgIERlc2NyaWJl
KG0pKTsKLSAgRVhQRUNUX0VRKCJkb2Vzbid0IGNvbnRhaW4gZXhhY3RseSAzIHZhbHVlcywgb3Ig
Y29udGFpbnMgYSB2YWx1ZSB4IGF0IHNvbWUgIgotICAgICAgICAgICAgImluZGV4IGkgd2hlcmUg
eCBhbmQgdGhlIGktdGggdmFsdWUgb2YgeyAxLCAyLCAzIH0gYXJlIGEgcGFpciAiCi0gICAgICAg
ICAgICAid2hlcmUgdGhlIGZpcnN0IGlzbid0IGhhbGYgb2YgdGhlIHNlY29uZCIsCi0gICAgICAg
ICAgICBEZXNjcmliZU5lZ2F0aW9uKG0pKTsKLX0KLQotVEVTVChQb2ludHdpc2VUZXN0LCBNYWtl
c0NvcHlPZlJocykgewotICBsaXN0PHNpZ25lZCBjaGFyPiByaHM7Ci0gIHJocy5wdXNoX2JhY2so
Mik7Ci0gIHJocy5wdXNoX2JhY2soNCk7Ci0KLSAgaW50IGxoc1tdID0gezEsIDJ9OwotICBjb25z
dCBNYXRjaGVyPGNvbnN0IGludCAoJilbMl0+IG0gPSBQb2ludHdpc2UoSXNIYWxmT2YoKSwgcmhz
KTsKLSAgRVhQRUNUX1RIQVQobGhzLCBtKTsKLQotICAvLyBDaGFuZ2luZyByaHMgbm93IHNob3Vs
ZG4ndCBhZmZlY3QgbSwgd2hpY2ggbWFkZSBhIGNvcHkgb2YgcmhzLgotICByaHMucHVzaF9iYWNr
KDYpOwotICBFWFBFQ1RfVEhBVChsaHMsIG0pOwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIFdv
cmtzRm9yTGhzTmF0aXZlQXJyYXkpIHsKLSAgY29uc3QgaW50IGxoc1tdID0gezEsIDIsIDN9Owot
ICB2ZWN0b3I8aW50PiByaHM7Ci0gIHJocy5wdXNoX2JhY2soMik7Ci0gIHJocy5wdXNoX2JhY2so
NCk7Ci0gIHJocy5wdXNoX2JhY2soNik7Ci0gIEVYUEVDVF9USEFUKGxocywgUG9pbnR3aXNlKEx0
KCksIHJocykpOwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQb2ludHdpc2UoR3QoKSwgcmhzKSkp
OwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIFdvcmtzRm9yUmhzTmF0aXZlQXJyYXkpIHsKLSAg
Y29uc3QgaW50IHJoc1tdID0gezEsIDIsIDN9OwotICB2ZWN0b3I8aW50PiBsaHM7Ci0gIGxocy5w
dXNoX2JhY2soMik7Ci0gIGxocy5wdXNoX2JhY2soNCk7Ci0gIGxocy5wdXNoX2JhY2soNik7Ci0g
IEVYUEVDVF9USEFUKGxocywgUG9pbnR3aXNlKEd0KCksIHJocykpOwotICBFWFBFQ1RfVEhBVChs
aHMsIE5vdChQb2ludHdpc2UoTHQoKSwgcmhzKSkpOwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9J
TklUSUFMSVpFUl9MSVNUXwotCi1URVNUKFBvaW50d2lzZVRlc3QsIFdvcmtzRm9yUmhzSW5pdGlh
bGl6ZXJMaXN0KSB7Ci0gIGNvbnN0IHZlY3RvcjxpbnQ+IGxoc3syLCA0LCA2fTsKLSAgRVhQRUNU
X1RIQVQobGhzLCBQb2ludHdpc2UoR3QoKSwgezEsIDIsIDN9KSk7Ci0gIEVYUEVDVF9USEFUKGxo
cywgTm90KFBvaW50d2lzZShMdCgpLCB7MywgMywgN30pKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXwotCi1URVNUKFBvaW50d2lzZVRlc3QsIFJlamVj
dHNXcm9uZ1NpemUpIHsKLSAgY29uc3QgZG91YmxlIGxoc1syXSA9IHsxLCAyfTsKLSAgY29uc3Qg
aW50IHJoc1sxXSA9IHswfTsKLSAgRVhQRUNUX1RIQVQobGhzLCBOb3QoUG9pbnR3aXNlKEd0KCks
IHJocykpKTsKLSAgRVhQRUNUX0VRKCJ3aGljaCBjb250YWlucyAyIHZhbHVlcyIsCi0gICAgICAg
ICAgICBFeHBsYWluKFBvaW50d2lzZShHdCgpLCByaHMpLCBsaHMpKTsKLQotICBjb25zdCBpbnQg
cmhzMlszXSA9IHswLCAxLCAyfTsKLSAgRVhQRUNUX1RIQVQobGhzLCBOb3QoUG9pbnR3aXNlKEd0
KCksIHJoczIpKSk7Ci19Ci0KLVRFU1QoUG9pbnR3aXNlVGVzdCwgUmVqZWN0c1dyb25nQ29udGVu
dCkgewotICBjb25zdCBkb3VibGUgbGhzWzNdID0gezEsIDIsIDN9OwotICBjb25zdCBpbnQgcmhz
WzNdID0gezIsIDYsIDR9OwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChQb2ludHdpc2UoSXNIYWxm
T2YoKSwgcmhzKSkpOwotICBFWFBFQ1RfRVEoIndoZXJlIHRoZSB2YWx1ZSBwYWlyICgyLCA2KSBh
dCBpbmRleCAjMSBkb24ndCBtYXRjaCwgIgotICAgICAgICAgICAgIndoZXJlIHRoZSBzZWNvbmQv
MiBpcyAzIiwKLSAgICAgICAgICAgIEV4cGxhaW4oUG9pbnR3aXNlKElzSGFsZk9mKCksIHJocyks
IGxocykpOwotfQotCi1URVNUKFBvaW50d2lzZVRlc3QsIEFjY2VwdHNDb3JyZWN0Q29udGVudCkg
ewotICBjb25zdCBkb3VibGUgbGhzWzNdID0gezEsIDIsIDN9OwotICBjb25zdCBpbnQgcmhzWzNd
ID0gezIsIDQsIDZ9OwotICBFWFBFQ1RfVEhBVChsaHMsIFBvaW50d2lzZShJc0hhbGZPZigpLCBy
aHMpKTsKLSAgRVhQRUNUX0VRKCIiLCBFeHBsYWluKFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMp
LCBsaHMpKTsKLX0KLQotVEVTVChQb2ludHdpc2VUZXN0LCBBbGxvd3NNb25vbW9ycGhpY0lubmVy
TWF0Y2hlcikgewotICBjb25zdCBkb3VibGUgbGhzWzNdID0gezEsIDIsIDN9OwotICBjb25zdCBp
bnQgcmhzWzNdID0gezIsIDQsIDZ9OwotICBjb25zdCBNYXRjaGVyPHR1cGxlPGNvbnN0IGRvdWJs
ZSYsIGNvbnN0IGludCY+ID4gbTEgPSBJc0hhbGZPZigpOwotICBFWFBFQ1RfVEhBVChsaHMsIFBv
aW50d2lzZShtMSwgcmhzKSk7Ci0gIEVYUEVDVF9FUSgiIiwgRXhwbGFpbihQb2ludHdpc2UobTEs
IHJocyksIGxocykpOwotCi0gIC8vIFRoaXMgdHlwZSB3b3JrcyBhcyBhIHR1cGxlPGNvbnN0IGRv
dWJsZSYsIGNvbnN0IGludCY+IGNhbiBiZQotICAvLyBpbXBsaWNpdGx5IGNhc3QgdG8gdHVwbGU8
ZG91YmxlLCBpbnQ+LgotICBjb25zdCBNYXRjaGVyPHR1cGxlPGRvdWJsZSwgaW50PiA+IG0yID0g
SXNIYWxmT2YoKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBQb2ludHdpc2UobTIsIHJocykpOwotICBF
WFBFQ1RfRVEoIiIsIEV4cGxhaW4oUG9pbnR3aXNlKG0yLCByaHMpLCBsaHMpKTsKLX0KLQotVEVT
VChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBEZXNjcmliZXNTZWxmKSB7Ci0gIHZlY3RvcjxpbnQ+
IHJoczsKLSAgcmhzLnB1c2hfYmFjaygxKTsKLSAgcmhzLnB1c2hfYmFjaygyKTsKLSAgcmhzLnB1
c2hfYmFjaygzKTsKLSAgY29uc3QgTWF0Y2hlcjxjb25zdCB2ZWN0b3I8aW50PiY+IG0gPSBVbm9y
ZGVyZWRQb2ludHdpc2UoSXNIYWxmT2YoKSwgcmhzKTsKLSAgRVhQRUNUX0VRKAotICAgICAgImhh
cyAzIGVsZW1lbnRzIGFuZCB0aGVyZSBleGlzdHMgc29tZSBwZXJtdXRhdGlvbiBvZiBlbGVtZW50
cyBzdWNoICIKLSAgICAgICJ0aGF0OlxuIgotICAgICAgIiAtIGVsZW1lbnQgIzAgYW5kIDEgYXJl
IGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgaXMgaGFsZiBvZiB0aGUgc2Vjb25kLCAiCi0gICAgICAi
YW5kXG4iCi0gICAgICAiIC0gZWxlbWVudCAjMSBhbmQgMiBhcmUgYSBwYWlyIHdoZXJlIHRoZSBm
aXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQsICIKLSAgICAgICJhbmRcbiIKLSAgICAgICIgLSBl
bGVtZW50ICMyIGFuZCAzIGFyZSBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IGlzIGhhbGYgb2YgdGhl
IHNlY29uZCIsCi0gICAgICBEZXNjcmliZShtKSk7Ci0gIEVYUEVDVF9FUSgKLSAgICAgICJkb2Vz
bid0IGhhdmUgMyBlbGVtZW50cywgb3IgdGhlcmUgZXhpc3RzIG5vIHBlcm11dGF0aW9uIG9mIGVs
ZW1lbnRzICIKLSAgICAgICJzdWNoIHRoYXQ6XG4iCi0gICAgICAiIC0gZWxlbWVudCAjMCBhbmQg
MSBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCBpcyBoYWxmIG9mIHRoZSBzZWNvbmQsICIKLSAg
ICAgICJhbmRcbiIKLSAgICAgICIgLSBlbGVtZW50ICMxIGFuZCAyIGFyZSBhIHBhaXIgd2hlcmUg
dGhlIGZpcnN0IGlzIGhhbGYgb2YgdGhlIHNlY29uZCwgIgotICAgICAgImFuZFxuIgotICAgICAg
IiAtIGVsZW1lbnQgIzIgYW5kIDMgYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgaXMgaGFsZiBv
ZiB0aGUgc2Vjb25kIiwKLSAgICAgIERlc2NyaWJlTmVnYXRpb24obSkpOwotfQotCi1URVNUKFVu
b3JkZXJlZFBvaW50d2lzZVRlc3QsIE1ha2VzQ29weU9mUmhzKSB7Ci0gIGxpc3Q8c2lnbmVkIGNo
YXI+IHJoczsKLSAgcmhzLnB1c2hfYmFjaygyKTsKLSAgcmhzLnB1c2hfYmFjayg0KTsKLQotICBp
bnQgbGhzW10gPSB7MiwgMX07Ci0gIGNvbnN0IE1hdGNoZXI8Y29uc3QgaW50ICgmKVsyXT4gbSA9
IFVub3JkZXJlZFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpOwotICBFWFBFQ1RfVEhBVChsaHMs
IG0pOwotCi0gIC8vIENoYW5naW5nIHJocyBub3cgc2hvdWxkbid0IGFmZmVjdCBtLCB3aGljaCBt
YWRlIGEgY29weSBvZiByaHMuCi0gIHJocy5wdXNoX2JhY2soNik7Ci0gIEVYUEVDVF9USEFUKGxo
cywgbSk7Ci19Ci0KLVRFU1QoVW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JMaHNOYXRp
dmVBcnJheSkgewotICBjb25zdCBpbnQgbGhzW10gPSB7MSwgMiwgM307Ci0gIHZlY3RvcjxpbnQ+
IHJoczsKLSAgcmhzLnB1c2hfYmFjayg0KTsKLSAgcmhzLnB1c2hfYmFjayg2KTsKLSAgcmhzLnB1
c2hfYmFjaygyKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2UoTHQoKSwg
cmhzKSk7Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFVub3JkZXJlZFBvaW50d2lzZShHdCgpLCBy
aHMpKSk7Ci19Ci0KLVRFU1QoVW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JSaHNOYXRp
dmVBcnJheSkgewotICBjb25zdCBpbnQgcmhzW10gPSB7MSwgMiwgM307Ci0gIHZlY3RvcjxpbnQ+
IGxoczsKLSAgbGhzLnB1c2hfYmFjayg0KTsKLSAgbGhzLnB1c2hfYmFjaygyKTsKLSAgbGhzLnB1
c2hfYmFjayg2KTsKLSAgRVhQRUNUX1RIQVQobGhzLCBVbm9yZGVyZWRQb2ludHdpc2UoR3QoKSwg
cmhzKSk7Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFVub3JkZXJlZFBvaW50d2lzZShMdCgpLCBy
aHMpKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLVRFU1Qo
VW5vcmRlcmVkUG9pbnR3aXNlVGVzdCwgV29ya3NGb3JSaHNJbml0aWFsaXplckxpc3QpIHsKLSAg
Y29uc3QgdmVjdG9yPGludD4gbGhzezIsIDQsIDZ9OwotICBFWFBFQ1RfVEhBVChsaHMsIFVub3Jk
ZXJlZFBvaW50d2lzZShHdCgpLCB7NSwgMSwgM30pKTsKLSAgRVhQRUNUX1RIQVQobGhzLCBOb3Qo
VW5vcmRlcmVkUG9pbnR3aXNlKEx0KCksIHsxLCAxLCA3fSkpKTsKLX0KLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfU1REX0lOSVRJQUxJWkVSX0xJU1RfCi0KLVRFU1QoVW5vcmRlcmVkUG9pbnR3aXNl
VGVzdCwgUmVqZWN0c1dyb25nU2l6ZSkgewotICBjb25zdCBkb3VibGUgbGhzWzJdID0gezEsIDJ9
OwotICBjb25zdCBpbnQgcmhzWzFdID0gezB9OwotICBFWFBFQ1RfVEhBVChsaHMsIE5vdChVbm9y
ZGVyZWRQb2ludHdpc2UoR3QoKSwgcmhzKSkpOwotICBFWFBFQ1RfRVEoIndoaWNoIGhhcyAyIGVs
ZW1lbnRzIiwKLSAgICAgICAgICAgIEV4cGxhaW4oVW5vcmRlcmVkUG9pbnR3aXNlKEd0KCksIHJo
cyksIGxocykpOwotCi0gIGNvbnN0IGludCByaHMyWzNdID0gezAsIDEsIDJ9OwotICBFWFBFQ1Rf
VEhBVChsaHMsIE5vdChVbm9yZGVyZWRQb2ludHdpc2UoR3QoKSwgcmhzMikpKTsKLX0KLQotVEVT
VChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBSZWplY3RzV3JvbmdDb250ZW50KSB7Ci0gIGNvbnN0
IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0IGludCByaHNbM10gPSB7MiwgNiwg
Nn07Ci0gIEVYUEVDVF9USEFUKGxocywgTm90KFVub3JkZXJlZFBvaW50d2lzZShJc0hhbGZPZigp
LCByaHMpKSk7Ci0gIEVYUEVDVF9FUSgid2hlcmUgdGhlIGZvbGxvd2luZyBlbGVtZW50cyBkb24n
dCBtYXRjaCBhbnkgbWF0Y2hlcnM6XG4iCi0gICAgICAgICAgICAiZWxlbWVudCAjMTogMiIsCi0g
ICAgICAgICAgICBFeHBsYWluKFVub3JkZXJlZFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpLCBs
aHMpKTsKLX0KLQotVEVTVChVbm9yZGVyZWRQb2ludHdpc2VUZXN0LCBBY2NlcHRzQ29ycmVjdENv
bnRlbnRJblNhbWVPcmRlcikgewotICBjb25zdCBkb3VibGUgbGhzWzNdID0gezEsIDIsIDN9Owot
ICBjb25zdCBpbnQgcmhzWzNdID0gezIsIDQsIDZ9OwotICBFWFBFQ1RfVEhBVChsaHMsIFVub3Jk
ZXJlZFBvaW50d2lzZShJc0hhbGZPZigpLCByaHMpKTsKLX0KLQotVEVTVChVbm9yZGVyZWRQb2lu
dHdpc2VUZXN0LCBBY2NlcHRzQ29ycmVjdENvbnRlbnRJbkRpZmZlcmVudE9yZGVyKSB7Ci0gIGNv
bnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0gIGNvbnN0IGludCByaHNbM10gPSB7Niwg
NCwgMn07Ci0gIEVYUEVDVF9USEFUKGxocywgVW5vcmRlcmVkUG9pbnR3aXNlKElzSGFsZk9mKCks
IHJocykpOwotfQotCi1URVNUKFVub3JkZXJlZFBvaW50d2lzZVRlc3QsIEFsbG93c01vbm9tb3Jw
aGljSW5uZXJNYXRjaGVyKSB7Ci0gIGNvbnN0IGRvdWJsZSBsaHNbM10gPSB7MSwgMiwgM307Ci0g
IGNvbnN0IGludCByaHNbM10gPSB7NCwgNiwgMn07Ci0gIGNvbnN0IE1hdGNoZXI8dHVwbGU8Y29u
c3QgZG91YmxlJiwgY29uc3QgaW50Jj4gPiBtMSA9IElzSGFsZk9mKCk7Ci0gIEVYUEVDVF9USEFU
KGxocywgVW5vcmRlcmVkUG9pbnR3aXNlKG0xLCByaHMpKTsKLQotICAvLyBUaGlzIHR5cGUgd29y
a3MgYXMgYSB0dXBsZTxjb25zdCBkb3VibGUmLCBjb25zdCBpbnQmPiBjYW4gYmUKLSAgLy8gaW1w
bGljaXRseSBjYXN0IHRvIHR1cGxlPGRvdWJsZSwgaW50Pi4KLSAgY29uc3QgTWF0Y2hlcjx0dXBs
ZTxkb3VibGUsIGludD4gPiBtMiA9IElzSGFsZk9mKCk7Ci0gIEVYUEVDVF9USEFUKGxocywgVW5v
cmRlcmVkUG9pbnR3aXNlKG0yLCByaHMpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGdtb2NrX21h
dGNoZXJzX3Rlc3QKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9n
bW9jay1tb3JlLWFjdGlvbnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjVlMjhlYWU4OTMxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1t
b3JlLWFjdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDcxMSArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3
b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNzZXMuCi0vLwotLy8gVGhpcyBmaWxlIHRlc3Rz
IHRoZSBidWlsdC1pbiBhY3Rpb25zIGluIGdtb2NrLW1vcmUtYWN0aW9ucy5oLgotCi0jaW5jbHVk
ZSAiZ21vY2svZ21vY2stbW9yZS1hY3Rpb25zLmgiCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgot
I2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgImdtb2NrL2dt
b2NrLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1saW5rZWRfcHRyLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBn
bW9ja19tb3JlX2FjdGlvbnNfdGVzdCB7Ci0KLXVzaW5nIDo6c3RkOjpwbHVzOwotdXNpbmcgOjpz
dGQ6OnN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6OmdldDsKLXVzaW5nIHRlc3Rpbmc6Om1ha2VfdHVw
bGU7Ci11c2luZyB0ZXN0aW5nOjp0dXBsZTsKLXVzaW5nIHRlc3Rpbmc6OnR1cGxlX2VsZW1lbnQ7
Ci11c2luZyB0ZXN0aW5nOjpfOwotdXNpbmcgdGVzdGluZzo6QWN0aW9uOwotdXNpbmcgdGVzdGlu
Zzo6QWN0aW9uSW50ZXJmYWNlOwotdXNpbmcgdGVzdGluZzo6RGVsZXRlQXJnOwotdXNpbmcgdGVz
dGluZzo6SW52b2tlOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuOwotdXNpbmcgdGVzdGluZzo6UmV0
dXJuQXJnOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuUG9pbnRlZTsKLXVzaW5nIHRlc3Rpbmc6OlNh
dmVBcmc7Ci11c2luZyB0ZXN0aW5nOjpTYXZlQXJnUG9pbnRlZTsKLXVzaW5nIHRlc3Rpbmc6OlNl
dEFyZ1JlZmVyZWU7Ci11c2luZyB0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE7Ci11c2luZyB0
ZXN0aW5nOjpVbnVzZWQ7Ci11c2luZyB0ZXN0aW5nOjpXaXRoQXJnOwotdXNpbmcgdGVzdGluZzo6
V2l0aG91dEFyZ3M7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6bGlua2VkX3B0cjsKLQotLy8g
Rm9yIHN1cHByZXNzaW5nIGNvbXBpbGVyIHdhcm5pbmdzIG9uIGNvbnZlcnNpb24gcG9zc2libHkg
bG9zaW5nIHByZWNpc2lvbi4KLWlubGluZSBzaG9ydCBTaG9ydChzaG9ydCBuKSB7IHJldHVybiBu
OyB9ICAvLyBOT0xJTlQKLWlubGluZSBjaGFyIENoYXIoY2hhciBjaCkgeyByZXR1cm4gY2g7IH0K
LQotLy8gU2FtcGxlIGZ1bmN0aW9ucyBhbmQgZnVuY3RvcnMgZm9yIHRlc3RpbmcgSW52b2tlKCkg
YW5kIGV0Yy4KLWludCBOdWxsYXJ5KCkgeyByZXR1cm4gMTsgfQotCi1jbGFzcyBOdWxsYXJ5RnVu
Y3RvciB7Ci0gcHVibGljOgotICBpbnQgb3BlcmF0b3IoKSgpIHsgcmV0dXJuIDI7IH0KLX07Ci0K
LWJvb2wgZ19kb25lID0gZmFsc2U7Ci12b2lkIFZvaWROdWxsYXJ5KCkgeyBnX2RvbmUgPSB0cnVl
OyB9Ci0KLWNsYXNzIFZvaWROdWxsYXJ5RnVuY3RvciB7Ci0gcHVibGljOgotICB2b2lkIG9wZXJh
dG9yKCkoKSB7IGdfZG9uZSA9IHRydWU7IH0KLX07Ci0KLWJvb2wgVW5hcnkoaW50IHgpIHsgcmV0
dXJuIHggPCAwOyB9Ci0KLWNvbnN0IGNoYXIqIFBsdXMxKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJu
IHMgKyAxOyB9Ci0KLXZvaWQgVm9pZFVuYXJ5KGludCAvKiBuICovKSB7IGdfZG9uZSA9IHRydWU7
IH0KLQotYm9vbCBCeUNvbnN0UmVmKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKSB7IHJldHVybiBzID09
ICJIaSI7IH0KLQotY29uc3QgZG91YmxlIGdfZG91YmxlID0gMDsKLWJvb2wgUmVmZXJlbmNlc0ds
b2JhbERvdWJsZShjb25zdCBkb3VibGUmIHgpIHsgcmV0dXJuICZ4ID09ICZnX2RvdWJsZTsgfQot
Ci1zdGQ6OnN0cmluZyBCeU5vbkNvbnN0UmVmKHN0ZDo6c3RyaW5nJiBzKSB7IHJldHVybiBzICs9
ICIrIjsgfSAgLy8gTk9MSU5UCi0KLXN0cnVjdCBVbmFyeUZ1bmN0b3IgewotICBpbnQgb3BlcmF0
b3IoKShib29sIHgpIHsgcmV0dXJuIHggPyAxIDogLTE7IH0KLX07Ci0KLWNvbnN0IGNoYXIqIEJp
bmFyeShjb25zdCBjaGFyKiBpbnB1dCwgc2hvcnQgbikgeyByZXR1cm4gaW5wdXQgKyBuOyB9ICAv
LyBOT0xJTlQKLQotdm9pZCBWb2lkQmluYXJ5KGludCwgY2hhcikgeyBnX2RvbmUgPSB0cnVlOyB9
Ci0KLWludCBUZXJuYXJ5KGludCB4LCBjaGFyIHksIHNob3J0IHopIHsgcmV0dXJuIHggKyB5ICsg
ejsgfSAgLy8gTk9MSU5UCi0KLXZvaWQgVm9pZFRlcm5hcnkoaW50LCBjaGFyLCBib29sKSB7IGdf
ZG9uZSA9IHRydWU7IH0KLQotaW50IFN1bU9mNChpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCkg
eyByZXR1cm4gYSArIGIgKyBjICsgZDsgfQotCi1pbnQgU3VtT2ZGaXJzdDIoaW50IGEsIGludCBi
LCBVbnVzZWQsIFVudXNlZCkgeyByZXR1cm4gYSArIGI7IH0KLQotdm9pZCBWb2lkRnVuY3Rpb25X
aXRoRm91ckFyZ3VtZW50cyhjaGFyLCBpbnQsIGZsb2F0LCBkb3VibGUpIHsgZ19kb25lID0gdHJ1
ZTsgfQotCi1zdGQ6OnN0cmluZyBDb25jYXQ0KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBz
MiwgY29uc3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0KSB7
Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQ7Ci19Ci0KLWludCBTdW1P
ZjUoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQsIGludCBlKSB7IHJldHVybiBhICsgYiArIGMg
KyBkICsgZTsgfQotCi1zdHJ1Y3QgU3VtT2Y1RnVuY3RvciB7Ci0gIGludCBvcGVyYXRvcigpKGlu
dCBhLCBpbnQgYiwgaW50IGMsIGludCBkLCBpbnQgZSkgewotICAgIHJldHVybiBhICsgYiArIGMg
KyBkICsgZTsKLSAgfQotfTsKLQotc3RkOjpzdHJpbmcgQ29uY2F0NShjb25zdCBjaGFyKiBzMSwg
Y29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUpIHsKLSAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSAr
IHMyICsgczMgKyBzNCArIHM1OwotfQotCi1pbnQgU3VtT2Y2KGludCBhLCBpbnQgYiwgaW50IGMs
IGludCBkLCBpbnQgZSwgaW50IGYpIHsKLSAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZjsK
LX0KLQotc3RydWN0IFN1bU9mNkZ1bmN0b3IgewotICBpbnQgb3BlcmF0b3IoKShpbnQgYSwgaW50
IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIGludCBmKSB7Ci0gICAgcmV0dXJuIGEgKyBiICsgYyAr
IGQgKyBlICsgZjsKLSAgfQotfTsKLQotc3RkOjpzdHJpbmcgQ29uY2F0Nihjb25zdCBjaGFyKiBz
MSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2KSB7Ci0gIHJldHVy
biBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2OwotfQotCi1zdGQ6OnN0
cmluZyBDb25jYXQ3KGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciog
czMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwg
Y29uc3QgY2hhciogczYsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3KSB7Ci0g
IHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczc7Ci19
Ci0KLXN0ZDo6c3RyaW5nIENvbmNhdDgoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBj
b25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0
IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogczcsIGNvbnN0IGNoYXIqIHM4KSB7Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiAr
IHMzICsgczQgKyBzNSArIHM2ICsgczcgKyBzODsKLX0KLQotc3RkOjpzdHJpbmcgQ29uY2F0OShj
b25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2
LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzNywgY29uc3QgY2hhciogczgsIGNv
bnN0IGNoYXIqIHM5KSB7Ci0gIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQg
KyBzNSArIHM2ICsgczcgKyBzOCArIHM5OwotfQotCi1zdGQ6OnN0cmluZyBDb25jYXQxMChjb25z
dCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIGNvbnN0IGNoYXIqIHMzLAotICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogczQsIGNvbnN0IGNoYXIqIHM1LCBjb25zdCBjaGFyKiBzNiwK
LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCwgY29u
c3QgY2hhciogczksCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMTApIHsKLSAg
cmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMgKyBzNCArIHM1ICsgczYgKyBzNyArIHM4
ICsgczkgKyBzMTA7Ci19Ci0KLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICBGb28oKSA6IHZhbHVl
XygxMjMpIHt9Ci0KLSAgaW50IE51bGxhcnkoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLQot
ICBzaG9ydCBVbmFyeShsb25nIHgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0Pih2YWx1ZV8g
KyB4KTsgfSAgLy8gTk9MSU5UCi0KLSAgc3RkOjpzdHJpbmcgQmluYXJ5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBzdHIsIGNoYXIgYykgY29uc3QgeyByZXR1cm4gc3RyICsgYzsgfQotCi0gIGludCBUZXJu
YXJ5KGludCB4LCBib29sIHksIGNoYXIgeikgeyByZXR1cm4gdmFsdWVfICsgeCArIHkqejsgfQot
Ci0gIGludCBTdW1PZjQoaW50IGEsIGludCBiLCBpbnQgYywgaW50IGQpIGNvbnN0IHsKLSAgICBy
ZXR1cm4gYSArIGIgKyBjICsgZCArIHZhbHVlXzsKLSAgfQotCi0gIGludCBTdW1PZkxhc3QyKFVu
dXNlZCwgVW51c2VkLCBpbnQgYSwgaW50IGIpIGNvbnN0IHsgcmV0dXJuIGEgKyBiOyB9Ci0KLSAg
aW50IFN1bU9mNShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCwgaW50IGUpIHsgcmV0dXJuIGEg
KyBiICsgYyArIGQgKyBlOyB9Ci0KLSAgaW50IFN1bU9mNihpbnQgYSwgaW50IGIsIGludCBjLCBp
bnQgZCwgaW50IGUsIGludCBmKSB7Ci0gICAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZjsK
LSAgfQotCi0gIHN0ZDo6c3RyaW5nIENvbmNhdDcoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIq
IHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBz
NCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHM3KSB7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHMxKSArIHMyICsgczMg
KyBzNCArIHM1ICsgczYgKyBzNzsKLSAgfQotCi0gIHN0ZDo6c3RyaW5nIENvbmNhdDgoY29uc3Qg
Y2hhciogczEsIGNvbnN0IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAot
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCkgewot
ICAgIHJldHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcg
KyBzODsKLSAgfQotCi0gIHN0ZDo6c3RyaW5nIENvbmNhdDkoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBjb25zdCBjaGFyKiBzMywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBzNCwgY29uc3QgY2hhciogczUsIGNvbnN0IGNoYXIqIHM2LAotICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCwgY29uc3QgY2hhciogczkpIHsK
LSAgICByZXR1cm4gc3RkOjpzdHJpbmcoczEpICsgczIgKyBzMyArIHM0ICsgczUgKyBzNiArIHM3
ICsgczggKyBzOTsKLSAgfQotCi0gIHN0ZDo6c3RyaW5nIENvbmNhdDEwKGNvbnN0IGNoYXIqIHMx
LCBjb25zdCBjaGFyKiBzMiwgY29uc3QgY2hhciogczMsCi0gICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHM0LCBjb25zdCBjaGFyKiBzNSwgY29uc3QgY2hhciogczYsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHM3LCBjb25zdCBjaGFyKiBzOCwgY29uc3QgY2hh
ciogczksCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxMCkgewotICAgIHJl
dHVybiBzdGQ6OnN0cmluZyhzMSkgKyBzMiArIHMzICsgczQgKyBzNSArIHM2ICsgczcgKyBzOCAr
IHM5ICsgczEwOwotICB9Ci0KLSBwcml2YXRlOgotICBpbnQgdmFsdWVfOwotfTsKLQotLy8gVGVz
dHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIG51bGxhcnkgZnVuY3Rpb24uCi1URVNUKEludm9rZVRl
c3QsIE51bGxhcnkpIHsKLSAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlKE51bGxhcnkpOyAgLy8g
Tk9MSU5UCi0gIEVYUEVDVF9FUSgxLCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0KLS8v
IFRlc3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSB1bmFyeSBmdW5jdGlvbi4KLVRFU1QoSW52b2tl
VGVzdCwgVW5hcnkpIHsKLSAgQWN0aW9uPGJvb2woaW50KT4gYSA9IEludm9rZShVbmFyeSk7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGEuUGVyZm9ybShtYWtlX3R1cGxlKDEpKSk7Ci0gIEVY
UEVDVF9UUlVFKGEuUGVyZm9ybShtYWtlX3R1cGxlKC0xKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBJbnZva2UoKSB3aXRoIGEgYmluYXJ5IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0LCBCaW5h
cnkpIHsKLSAgQWN0aW9uPGNvbnN0IGNoYXIqKGNvbnN0IGNoYXIqLCBzaG9ydCk+IGEgPSBJbnZv
a2UoQmluYXJ5KTsgIC8vIE5PTElOVAotICBjb25zdCBjaGFyKiBwID0gIkhlbGxvIjsKLSAgRVhQ
RUNUX0VRKHAgKyAyLCBhLlBlcmZvcm0obWFrZV90dXBsZShwLCBTaG9ydCgyKSkpKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIHRlcm5hcnkgZnVuY3Rpb24uCi1URVNUKElu
dm9rZVRlc3QsIFRlcm5hcnkpIHsKLSAgQWN0aW9uPGludChpbnQsIGNoYXIsIHNob3J0KT4gYSA9
IEludm9rZShUZXJuYXJ5KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoNiwgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoMSwgJ1wyJywgU2hvcnQoMykpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9r
ZSgpIHdpdGggYSA0LWFyZ3VtZW50IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0LCBGdW5jdGlv
blRoYXRUYWtlczRBcmd1bWVudHMpIHsKLSAgQWN0aW9uPGludChpbnQsIGludCwgaW50LCBpbnQp
PiBhID0gSW52b2tlKFN1bU9mNCk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDEyMzQsIGEuUGVy
Zm9ybShtYWtlX3R1cGxlKDEwMDAsIDIwMCwgMzAsIDQpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5n
IEludm9rZSgpIHdpdGggYSA1LWFyZ3VtZW50IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0LCBG
dW5jdGlvblRoYXRUYWtlczVBcmd1bWVudHMpIHsKLSAgQWN0aW9uPGludChpbnQsIGludCwgaW50
LCBpbnQsIGludCk+IGEgPSBJbnZva2UoU3VtT2Y1KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEo
MTIzNDUsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAwLCAyMDAwLCAzMDAsIDQwLCA1KSkpOwot
fQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgNi1hcmd1bWVudCBmdW5jdGlvbi4K
LVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM2QXJndW1lbnRzKSB7Ci0gIEFjdGlv
bjxpbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk+IGEgPSBJbnZva2UoU3VtT2Y2KTsg
IC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMTIzNDU2LCBhLlBlcmZvcm0obWFrZV90dXBsZSgxMDAw
MDAsIDIwMDAwLCAzMDAwLCA0MDAsIDUwLCA2KSkpOwotfQotCi0vLyBBIGhlbHBlciB0aGF0IHR1
cm5zIHRoZSB0eXBlIG9mIGEgQy1zdHJpbmcgbGl0ZXJhbCBmcm9tIGNvbnN0Ci0vLyBjaGFyW05d
IHRvIGNvbnN0IGNoYXIqLgotaW5saW5lIGNvbnN0IGNoYXIqIENoYXJQdHIoY29uc3QgY2hhciog
cykgeyByZXR1cm4gczsgfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgNy1hcmd1
bWVudCBmdW5jdGlvbi4KLVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM3QXJndW1l
bnRzKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPgotICAgICAgYSA9IEludm9rZShDb25jYXQ3KTsK
LSAgRVhQRUNUX0VRKCIxMjM0NTY3IiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxl
KENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigi
NiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpKSkpOwot
fQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgOC1hcmd1bWVudCBmdW5jdGlvbi4K
LVRFU1QoSW52b2tlVGVzdCwgRnVuY3Rpb25UaGF0VGFrZXM4QXJndW1lbnRzKSB7Ci0gIEFjdGlv
bjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2UoQ29uY2F0OCk7Ci0g
IEVYUEVDVF9FUSgiMTIzNDU2NzgiLAotICAgICAgICAgICAgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
Q2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigiNSIpLCBDaGFyUHRyKCI2
IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI3IiksIENoYXJQ
dHIoIjgiKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDktYXJndW1l
bnQgZnVuY3Rpb24uCi1URVNUKEludm9rZVRlc3QsIEZ1bmN0aW9uVGhhdFRha2VzOUFyZ3VtZW50
cykgewotICBBY3Rpb248c3RkOjpzdHJpbmcoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2UoQ29uY2F0OSk7Ci0gIEVYUEVDVF9F
USgiMTIzNDU2Nzg5IiwKLSAgICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIo
IjEiKSwgQ2hhclB0cigiMiIpLCBDaGFyUHRyKCIzIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDaGFyUHRyKCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigiNiIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNyIpLCBDaGFyUHRyKCI4Iiks
IENoYXJQdHIoIjkiKSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDEw
LWFyZ3VtZW50IGZ1bmN0aW9uLgotVEVTVChJbnZva2VUZXN0LCBGdW5jdGlvblRoYXRUYWtlczEw
QXJndW1lbnRzKSB7Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2Uo
Q29uY2F0MTApOwotICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OTAiLAotICAgICAgICAgICAgYS5QZXJm
b3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigi
NSIpLCBDaGFyUHRyKCI2IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFy
UHRyKCI3IiksIENoYXJQdHIoIjgiKSwgQ2hhclB0cigiOSIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ2hhclB0cigiMCIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZv
a2UoKSB3aXRoIGZ1bmN0aW9ucyB3aXRoIHBhcmFtZXRlcnMgZGVjbGFyZWQgYXMgVW51c2VkLgot
VEVTVChJbnZva2VUZXN0LCBGdW5jdGlvbldpdGhVbnVzZWRQYXJhbWV0ZXJzKSB7Ci0gIEFjdGlv
bjxpbnQoaW50LCBpbnQsIGRvdWJsZSwgY29uc3Qgc3RyaW5nJik+IGExID0KLSAgICAgIEludm9r
ZShTdW1PZkZpcnN0Mik7Ci0gIHN0cmluZyBzKCJoaSIpOwotICBFWFBFQ1RfRVEoMTIsIGExLlBl
cmZvcm0oCi0gICAgdHVwbGU8aW50LCBpbnQsIGRvdWJsZSwgY29uc3Qgc3RyaW5nJj4oMTAsIDIs
IDUuNiwgcykpKTsKLQotICBBY3Rpb248aW50KGludCwgaW50LCBib29sLCBpbnQqKT4gYTIgPQot
ICAgICAgSW52b2tlKFN1bU9mRmlyc3QyKTsKLSAgRVhQRUNUX0VRKDIzLCBhMi5QZXJmb3JtKG1h
a2VfdHVwbGUoMjAsIDMsIHRydWUsIHN0YXRpY19jYXN0PGludCo+KE5VTEwpKSkpOwotfQotCi0v
LyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIG1ldGhvZHMgd2l0aCBwYXJhbWV0ZXJzIGRlY2xh
cmVkIGFzIFVudXNlZC4KLVRFU1QoSW52b2tlVGVzdCwgTWV0aG9kV2l0aFVudXNlZFBhcmFtZXRl
cnMpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPGludChzdGQ6OnN0cmluZywgYm9vbCwgaW50LCBp
bnQpPiBhMSA9IEludm9rZSgmZm9vLCAmRm9vOjpTdW1PZkxhc3QyKTsKLSAgRVhQRUNUX0VRKDEy
LCBhMS5QZXJmb3JtKG1ha2VfdHVwbGUoQ2hhclB0cigiaGkiKSwgdHJ1ZSwgMTAsIDIpKSk7Ci0K
LSAgQWN0aW9uPGludChjaGFyLCBkb3VibGUsIGludCwgaW50KT4gYTIgPQotICAgICAgSW52b2tl
KCZmb28sICZGb286OlN1bU9mTGFzdDIpOwotICBFWFBFQ1RfRVEoMjMsIGEyLlBlcmZvcm0obWFr
ZV90dXBsZSgnYScsIDIuNSwgMjAsIDMpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIEludm9rZSgp
IHdpdGggYSBmdW5jdG9yLgotVEVTVChJbnZva2VUZXN0LCBGdW5jdG9yKSB7Ci0gIEFjdGlvbjxs
b25nKGxvbmcsIGludCk+IGEgPSBJbnZva2UocGx1czxsb25nPigpKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfRVEoM0wsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDEsIDIpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIEludm9rZShmKSBhcyBhbiBhY3Rpb24gb2YgYSBjb21wYXRpYmxlIHR5cGUuCi1URVNU
KEludm9rZVRlc3QsIEZ1bmN0aW9uV2l0aENvbXBhdGlibGVUeXBlKSB7Ci0gIEFjdGlvbjxsb25n
KGludCwgc2hvcnQsIGNoYXIsIGJvb2wpPiBhID0gSW52b2tlKFN1bU9mNCk7ICAvLyBOT0xJTlQK
LSAgRVhQRUNUX0VRKDQzMjEsIGEuUGVyZm9ybShtYWtlX3R1cGxlKDQwMDAsIFNob3J0KDMwMCks
IENoYXIoMjApLCB0cnVlKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGFu
IG9iamVjdCBwb2ludGVyIGFuZCBhIG1ldGhvZCBwb2ludGVyLgotCi0vLyBUZXN0cyB1c2luZyBJ
bnZva2UoKSB3aXRoIGEgbnVsbGFyeSBtZXRob2QuCi1URVNUKEludm9rZU1ldGhvZFRlc3QsIE51
bGxhcnkpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPGludCgpPiBhID0gSW52b2tlKCZmb28sICZG
b286Ok51bGxhcnkpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9FUSgxMjMsIGEuUGVyZm9ybShtYWtl
X3R1cGxlKCkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIHVuYXJ5IG1l
dGhvZC4KLVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgVW5hcnkpIHsKLSAgRm9vIGZvbzsKLSAgQWN0
aW9uPHNob3J0KGxvbmcpPiBhID0gSW52b2tlKCZmb28sICZGb286OlVuYXJ5KTsgIC8vIE5PTElO
VAotICBFWFBFQ1RfRVEoNDEyMywgYS5QZXJmb3JtKG1ha2VfdHVwbGUoNDAwMCkpKTsKLX0KLQot
Ly8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIGJpbmFyeSBtZXRob2QuCi1URVNUKEludm9r
ZU1ldGhvZFRlc3QsIEJpbmFyeSkgewotICBGb28gZm9vOwotICBBY3Rpb248c3RyaW5nKGNvbnN0
IHN0cmluZyYsIGNoYXIpPiBhID0gSW52b2tlKCZmb28sICZGb286OkJpbmFyeSk7Ci0gIHN0cmlu
ZyBzKCJIZWxsIik7Ci0gIEVYUEVDVF9FUSgiSGVsbG8iLCBhLlBlcmZvcm0oCi0gICAgICB0dXBs
ZTxjb25zdCBzdHJpbmcmLCBjaGFyPihzLCAnbycpKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIElu
dm9rZSgpIHdpdGggYSB0ZXJuYXJ5IG1ldGhvZC4KLVRFU1QoSW52b2tlTWV0aG9kVGVzdCwgVGVy
bmFyeSkgewotICBGb28gZm9vOwotICBBY3Rpb248aW50KGludCwgYm9vbCwgY2hhcik+IGEgPSBJ
bnZva2UoJmZvbywgJkZvbzo6VGVybmFyeSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKDExMjQs
IGEuUGVyZm9ybShtYWtlX3R1cGxlKDEwMDAsIHRydWUsIENoYXIoMSkpKSk7Ci19Ci0KLS8vIFRl
c3RzIHVzaW5nIEludm9rZSgpIHdpdGggYSA0LWFyZ3VtZW50IG1ldGhvZC4KLVRFU1QoSW52b2tl
TWV0aG9kVGVzdCwgTWV0aG9kVGhhdFRha2VzNEFyZ3VtZW50cykgewotICBGb28gZm9vOwotICBB
Y3Rpb248aW50KGludCwgaW50LCBpbnQsIGludCk+IGEgPSBJbnZva2UoJmZvbywgJkZvbzo6U3Vt
T2Y0KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMTM1NywgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
MTAwMCwgMjAwLCAzMCwgNCkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBh
IDUtYXJndW1lbnQgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFr
ZXM1QXJndW1lbnRzKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwg
aW50LCBpbnQpPiBhID0gSW52b2tlKCZmb28sICZGb286OlN1bU9mNSk7ICAvLyBOT0xJTlQKLSAg
RVhQRUNUX0VRKDEyMzQ1LCBhLlBlcmZvcm0obWFrZV90dXBsZSgxMDAwMCwgMjAwMCwgMzAwLCA0
MCwgNSkpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDYtYXJndW1lbnQg
bWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFrZXM2QXJndW1lbnRz
KSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxpbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2UoJmZvbywgJkZvbzo6U3VtT2Y2KTsKLSAg
RVhQRUNUX0VRKDEyMzQ1NiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoMTAwMDAwLCAyMDAwMCwgMzAw
MCwgNDAwLCA1MCwgNikpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgSW52b2tlKCkgd2l0aCBhIDct
YXJndW1lbnQgbWV0aG9kLgotVEVTVChJbnZva2VNZXRob2RUZXN0LCBNZXRob2RUaGF0VGFrZXM3
QXJndW1lbnRzKSB7Ci0gIEZvbyBmb287Ci0gIEFjdGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFy
KiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwKLSAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopPgotICAgICAgYSA9
IEludm9rZSgmZm9vLCAmRm9vOjpDb25jYXQ3KTsKLSAgRVhQRUNUX0VRKCIxMjM0NTY3IiwKLSAg
ICAgICAgICAgIGEuUGVyZm9ybShtYWtlX3R1cGxlKENoYXJQdHIoIjEiKSwgQ2hhclB0cigiMiIp
LCBDaGFyUHRyKCIzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRy
KCI0IiksIENoYXJQdHIoIjUiKSwgQ2hhclB0cigiNiIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2hhclB0cigiNyIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2Uo
KSB3aXRoIGEgOC1hcmd1bWVudCBtZXRob2QuCi1URVNUKEludm9rZU1ldGhvZFRlc3QsIE1ldGhv
ZFRoYXRUYWtlczhBcmd1bWVudHMpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5n
KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopPgotICAgICAgYSA9IEludm9rZSgmZm9vLCAmRm9vOjpDb25jYXQ4KTsKLSAg
RVhQRUNUX0VRKCIxMjM0NTY3OCIsCi0gICAgICAgICAgICBhLlBlcmZvcm0obWFrZV90dXBsZShD
aGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0cigiMyIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBDaGFyUHRyKCI1IiksIENoYXJQdHIoIjYi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjciKSwgQ2hhclB0
cigiOCIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoKSB3aXRoIGEgOS1hcmd1bWVu
dCBtZXRob2QuCi1URVNUKEludm9rZU1ldGhvZFRlc3QsIE1ldGhvZFRoYXRUYWtlczlBcmd1bWVu
dHMpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPHN0ZDo6c3RyaW5nKGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosCi0gICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKik+Ci0gICAgICBhID0gSW52b2tlKCZmb28sICZG
b286OkNvbmNhdDkpOwotICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OSIsCi0gICAgICAgICAgICBhLlBl
cmZvcm0obWFrZV90dXBsZShDaGFyUHRyKCIxIiksIENoYXJQdHIoIjIiKSwgQ2hhclB0cigiMyIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclB0cigiNCIpLCBDaGFyUHRy
KCI1IiksIENoYXJQdHIoIjYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENo
YXJQdHIoIjciKSwgQ2hhclB0cigiOCIpLCBDaGFyUHRyKCI5IikpKSk7Ci19Ci0KLS8vIFRlc3Rz
IHVzaW5nIEludm9rZSgpIHdpdGggYSAxMC1hcmd1bWVudCBtZXRob2QuCi1URVNUKEludm9rZU1l
dGhvZFRlc3QsIE1ldGhvZFRoYXRUYWtlczEwQXJndW1lbnRzKSB7Ci0gIEZvbyBmb287Ci0gIEFj
dGlvbjxzdGQ6OnN0cmluZyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKiwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
KiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciosIGNvbnN0IGNoYXIqKT4KLSAgICAgIGEgPSBJbnZva2UoJmZvbywgJkZvbzo6Q29uY2F0
MTApOwotICBFWFBFQ1RfRVEoIjEyMzQ1Njc4OTAiLAotICAgICAgICAgICAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUoQ2hhclB0cigiMSIpLCBDaGFyUHRyKCIyIiksIENoYXJQdHIoIjMiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJQdHIoIjQiKSwgQ2hhclB0cigiNSIpLCBD
aGFyUHRyKCI2IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyUHRyKCI3
IiksIENoYXJQdHIoIjgiKSwgQ2hhclB0cigiOSIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2hhclB0cigiMCIpKSkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBJbnZva2UoZikg
YXMgYW4gYWN0aW9uIG9mIGEgY29tcGF0aWJsZSB0eXBlLgotVEVTVChJbnZva2VNZXRob2RUZXN0
LCBNZXRob2RXaXRoQ29tcGF0aWJsZVR5cGUpIHsKLSAgRm9vIGZvbzsKLSAgQWN0aW9uPGxvbmco
aW50LCBzaG9ydCwgY2hhciwgYm9vbCk+IGEgPSAgLy8gTk9MSU5UCi0gICAgICBJbnZva2UoJmZv
bywgJkZvbzo6U3VtT2Y0KTsKLSAgRVhQRUNUX0VRKDQ0NDQsIGEuUGVyZm9ybShtYWtlX3R1cGxl
KDQwMDAsIFNob3J0KDMwMCksIENoYXIoMjApLCB0cnVlKSkpOwotfQotCi0vLyBUZXN0cyB1c2lu
ZyBXaXRob3V0QXJncyB3aXRoIGFuIGFjdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50LgotVEVT
VChXaXRob3V0QXJnc1Rlc3QsIE5vQXJnKSB7Ci0gIEFjdGlvbjxpbnQoaW50IG4pPiBhID0gV2l0
aG91dEFyZ3MoSW52b2tlKE51bGxhcnkpKTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMSwgYS5Q
ZXJmb3JtKG1ha2VfdHVwbGUoMikpKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgV2l0aEFyZyB3aXRo
IGFuIGFjdGlvbiB0aGF0IHRha2VzIDEgYXJndW1lbnQuCi1URVNUKFdpdGhBcmdUZXN0LCBPbmVB
cmcpIHsKLSAgQWN0aW9uPGJvb2woZG91YmxlIHgsIGludCBuKT4gYiA9IFdpdGhBcmc8MT4oSW52
b2tlKFVuYXJ5KSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoYi5QZXJmb3JtKG1ha2VfdHVw
bGUoMS41LCAtMSkpKTsKLSAgRVhQRUNUX0ZBTFNFKGIuUGVyZm9ybShtYWtlX3R1cGxlKDEuNSwg
MSkpKTsKLX0KLQotVEVTVChSZXR1cm5BcmdBY3Rpb25UZXN0LCBXb3Jrc0Zvck9uZUFyZ0ludEFy
ZzApIHsKLSAgY29uc3QgQWN0aW9uPGludChpbnQpPiBhID0gUmV0dXJuQXJnPDA+KCk7Ci0gIEVY
UEVDVF9FUSg1LCBhLlBlcmZvcm0obWFrZV90dXBsZSg1KSkpOwotfQotCi1URVNUKFJldHVybkFy
Z0FjdGlvblRlc3QsIFdvcmtzRm9yTXVsdGlBcmdCb29sQXJnMCkgewotICBjb25zdCBBY3Rpb248
Ym9vbChib29sLCBib29sLCBib29sKT4gYSA9IFJldHVybkFyZzwwPigpOwotICBFWFBFQ1RfVFJV
RShhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBmYWxzZSwgZmFsc2UpKSk7Ci19Ci0KLVRFU1Qo
UmV0dXJuQXJnQWN0aW9uVGVzdCwgV29ya3NGb3JNdWx0aUFyZ1N0cmluZ0FyZzIpIHsKLSAgY29u
c3QgQWN0aW9uPHN0ZDo6c3RyaW5nKGludCwgaW50LCBzdGQ6OnN0cmluZywgaW50KT4gYSA9IFJl
dHVybkFyZzwyPigpOwotICBFWFBFQ1RfRVEoInNldmVuIiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUo
NSwgNiwgc3RkOjpzdHJpbmcoInNldmVuIiksIDgpKSk7Ci19Ci0KLVRFU1QoU2F2ZUFyZ0FjdGlv
blRlc3QsIFdvcmtzRm9yU2FtZVR5cGUpIHsKLSAgaW50IHJlc3VsdCA9IDA7Ci0gIGNvbnN0IEFj
dGlvbjx2b2lkKGludCBuKT4gYTEgPSBTYXZlQXJnPDA+KCZyZXN1bHQpOwotICBhMS5QZXJmb3Jt
KG1ha2VfdHVwbGUoNSkpOwotICBFWFBFQ1RfRVEoNSwgcmVzdWx0KTsKLX0KLQotVEVTVChTYXZl
QXJnQWN0aW9uVGVzdCwgV29ya3NGb3JDb21wYXRpYmxlVHlwZSkgewotICBpbnQgcmVzdWx0ID0g
MDsKLSAgY29uc3QgQWN0aW9uPHZvaWQoYm9vbCwgY2hhcik+IGExID0gU2F2ZUFyZzwxPigmcmVz
dWx0KTsKLSAgYTEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsICdhJykpOwotICBFWFBFQ1RfRVEo
J2EnLCByZXN1bHQpOwotfQotCi1URVNUKFNhdmVBcmdQb2ludGVlQWN0aW9uVGVzdCwgV29ya3NG
b3JTYW1lVHlwZSkgewotICBpbnQgcmVzdWx0ID0gMDsKLSAgY29uc3QgaW50IHZhbHVlID0gNTsK
LSAgY29uc3QgQWN0aW9uPHZvaWQoY29uc3QgaW50Kik+IGExID0gU2F2ZUFyZ1BvaW50ZWU8MD4o
JnJlc3VsdCk7Ci0gIGExLlBlcmZvcm0obWFrZV90dXBsZSgmdmFsdWUpKTsKLSAgRVhQRUNUX0VR
KDUsIHJlc3VsdCk7Ci19Ci0KLVRFU1QoU2F2ZUFyZ1BvaW50ZWVBY3Rpb25UZXN0LCBXb3Jrc0Zv
ckNvbXBhdGlibGVUeXBlKSB7Ci0gIGludCByZXN1bHQgPSAwOwotICBjaGFyIHZhbHVlID0gJ2En
OwotICBjb25zdCBBY3Rpb248dm9pZChib29sLCBjaGFyKik+IGExID0gU2F2ZUFyZ1BvaW50ZWU8
MT4oJnJlc3VsdCk7Ci0gIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCAmdmFsdWUpKTsKLSAg
RVhQRUNUX0VRKCdhJywgcmVzdWx0KTsKLX0KLQotVEVTVChTYXZlQXJnUG9pbnRlZUFjdGlvblRl
c3QsIFdvcmtzRm9yTGlua2VkUHRyKSB7Ci0gIGludCByZXN1bHQgPSAwOwotICBsaW5rZWRfcHRy
PGludD4gdmFsdWUobmV3IGludCg1KSk7Ci0gIGNvbnN0IEFjdGlvbjx2b2lkKGxpbmtlZF9wdHI8
aW50Pik+IGExID0gU2F2ZUFyZ1BvaW50ZWU8MD4oJnJlc3VsdCk7Ci0gIGExLlBlcmZvcm0obWFr
ZV90dXBsZSh2YWx1ZSkpOwotICBFWFBFQ1RfRVEoNSwgcmVzdWx0KTsKLX0KLQotVEVTVChTZXRB
cmdSZWZlcmVlQWN0aW9uVGVzdCwgV29ya3NGb3JTYW1lVHlwZSkgewotICBpbnQgdmFsdWUgPSAw
OwotICBjb25zdCBBY3Rpb248dm9pZChpbnQmKT4gYTEgPSBTZXRBcmdSZWZlcmVlPDA+KDEpOwot
ICBhMS5QZXJmb3JtKHR1cGxlPGludCY+KHZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgxLCB2YWx1ZSk7
Ci19Ci0KLVRFU1QoU2V0QXJnUmVmZXJlZUFjdGlvblRlc3QsIFdvcmtzRm9yQ29tcGF0aWJsZVR5
cGUpIHsKLSAgaW50IHZhbHVlID0gMDsKLSAgY29uc3QgQWN0aW9uPHZvaWQoaW50LCBpbnQmKT4g
YTEgPSBTZXRBcmdSZWZlcmVlPDE+KCdhJyk7Ci0gIGExLlBlcmZvcm0odHVwbGU8aW50LCBpbnQm
PigwLCB2YWx1ZSkpOwotICBFWFBFQ1RfRVEoJ2EnLCB2YWx1ZSk7Ci19Ci0KLVRFU1QoU2V0QXJn
UmVmZXJlZUFjdGlvblRlc3QsIFdvcmtzV2l0aEV4dHJhQXJndW1lbnRzKSB7Ci0gIGludCB2YWx1
ZSA9IDA7Ci0gIGNvbnN0IEFjdGlvbjx2b2lkKGJvb2wsIGludCwgaW50JiwgY29uc3QgY2hhciop
PiBhMSA9IFNldEFyZ1JlZmVyZWU8Mj4oJ2EnKTsKLSAgYTEuUGVyZm9ybSh0dXBsZTxib29sLCBp
bnQsIGludCYsIGNvbnN0IGNoYXIqPih0cnVlLCAwLCB2YWx1ZSwgImhpIikpOwotICBFWFBFQ1Rf
RVEoJ2EnLCB2YWx1ZSk7Ci19Ci0KLS8vIEEgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0byB2ZXJp
ZnkgdGhhdCBpdHMgZGVzdHJ1Y3RvciBpcyBjYWxsZWQ6IGl0IHdpbGwgc2V0Ci0vLyB0aGUgYm9v
bCBwcm92aWRlZCB0byB0aGUgY29uc3RydWN0b3IgdG8gdHJ1ZSB3aGVuIGRlc3Ryb3llZC4KLWNs
YXNzIERlbGV0aW9uVGVzdGVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IERlbGV0aW9uVGVzdGVy
KGJvb2wqIGlzX2RlbGV0ZWQpCi0gICAgOiBpc19kZWxldGVkXyhpc19kZWxldGVkKSB7Ci0gICAg
Ly8gTWFrZSBzdXJlIHRoZSBiaXQgaXMgc2V0IHRvIGZhbHNlLgotICAgICppc19kZWxldGVkXyA9
IGZhbHNlOwotICB9Ci0KLSAgfkRlbGV0aW9uVGVzdGVyKCkgewotICAgICppc19kZWxldGVkXyA9
IHRydWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGJvb2wqIGlzX2RlbGV0ZWRfOwotfTsKLQotVEVT
VChEZWxldGVBcmdBY3Rpb25UZXN0LCBPbmVBcmcpIHsKLSAgYm9vbCBpc19kZWxldGVkID0gZmFs
c2U7Ci0gIERlbGV0aW9uVGVzdGVyKiB0ID0gbmV3IERlbGV0aW9uVGVzdGVyKCZpc19kZWxldGVk
KTsKLSAgY29uc3QgQWN0aW9uPHZvaWQoRGVsZXRpb25UZXN0ZXIqKT4gYTEgPSBEZWxldGVBcmc8
MD4oKTsgICAgICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBTFNFKGlzX2RlbGV0ZWQpOwotICBhMS5Q
ZXJmb3JtKG1ha2VfdHVwbGUodCkpOwotICBFWFBFQ1RfVFJVRShpc19kZWxldGVkKTsKLX0KLQot
VEVTVChEZWxldGVBcmdBY3Rpb25UZXN0LCBUZW5BcmdzKSB7Ci0gIGJvb2wgaXNfZGVsZXRlZCA9
IGZhbHNlOwotICBEZWxldGlvblRlc3RlciogdCA9IG5ldyBEZWxldGlvblRlc3RlcigmaXNfZGVs
ZXRlZCk7Ci0gIGNvbnN0IEFjdGlvbjx2b2lkKGJvb2wsIGludCwgaW50LCBjb25zdCBjaGFyKiwg
Ym9vbCwKLSAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBEZWxldGlvblRl
c3RlciopPiBhMSA9IERlbGV0ZUFyZzw5PigpOwotICBFWFBFQ1RfRkFMU0UoaXNfZGVsZXRlZCk7
Ci0gIGExLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCA1LCA2LCBDaGFyUHRyKCJoaSIpLCBmYWxz
ZSwgNywgOCwgOSwgMTAsIHQpKTsKLSAgRVhQRUNUX1RSVUUoaXNfZGVsZXRlZCk7Ci19Ci0KLSNp
ZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi1URVNUKFRocm93QWN0aW9uVGVzdCwgVGhyb3dzR2l2
ZW5FeGNlcHRpb25JblZvaWRGdW5jdGlvbikgewotICBjb25zdCBBY3Rpb248dm9pZChpbnQgbik+
IGEgPSBUaHJvdygnYScpOwotICBFWFBFQ1RfVEhST1coYS5QZXJmb3JtKG1ha2VfdHVwbGUoMCkp
LCBjaGFyKTsKLX0KLQotY2xhc3MgTXlFeGNlcHRpb24ge307Ci0KLVRFU1QoVGhyb3dBY3Rpb25U
ZXN0LCBUaHJvd3NHaXZlbkV4Y2VwdGlvbkluTm9uVm9pZEZ1bmN0aW9uKSB7Ci0gIGNvbnN0IEFj
dGlvbjxkb3VibGUoY2hhciBjaCk+IGEgPSBUaHJvdyhNeUV4Y2VwdGlvbigpKTsKLSAgRVhQRUNU
X1RIUk9XKGEuUGVyZm9ybShtYWtlX3R1cGxlKCcwJykpLCBNeUV4Y2VwdGlvbik7Ci19Ci0KLVRF
U1QoVGhyb3dBY3Rpb25UZXN0LCBUaHJvd3NHaXZlbkV4Y2VwdGlvbkluTnVsbGFyeUZ1bmN0aW9u
KSB7Ci0gIGNvbnN0IEFjdGlvbjxkb3VibGUoKT4gYSA9IFRocm93KE15RXhjZXB0aW9uKCkpOwot
ICBFWFBFQ1RfVEhST1coYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSksIE15RXhjZXB0aW9uKTsKLX0K
LQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IFNldEFy
cmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpIHNldHMgdGhlIGVsZW1lbnRzIG9mIHRoZSBhcnJh
eQotLy8gcG9pbnRlZCB0byBieSB0aGUgTi10aCAoMC1iYXNlZCkgYXJndW1lbnQgdG8gdmFsdWVz
IGluIHJhbmdlIFtmaXJzdCwgbGFzdCkuCi1URVNUKFNldEFycmF5QXJndW1lbnRUZXN0LCBTZXRz
VGhlTnRoQXJyYXkpIHsKLSAgdHlwZWRlZiB2b2lkIE15RnVuY3Rpb24oYm9vbCwgaW50KiwgY2hh
ciopOwotICBpbnQgbnVtYmVyc1tdID0geyAxLCAyLCAzIH07Ci0gIEFjdGlvbjxNeUZ1bmN0aW9u
PiBhID0gU2V0QXJyYXlBcmd1bWVudDwxPihudW1iZXJzLCBudW1iZXJzICsgMyk7Ci0KLSAgaW50
IG5bNF0gPSB7fTsKLSAgaW50KiBwbiA9IG47Ci0gIGNoYXIgY2hbNF0gPSB7fTsKLSAgY2hhciog
cGNoID0gY2g7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBuLCBwY2gpKTsKLSAgRVhQ
RUNUX0VRKDEsIG5bMF0pOwotICBFWFBFQ1RfRVEoMiwgblsxXSk7Ci0gIEVYUEVDVF9FUSgzLCBu
WzJdKTsKLSAgRVhQRUNUX0VRKDAsIG5bM10pOwotICBFWFBFQ1RfRVEoJ1wwJywgY2hbMF0pOwot
ICBFWFBFQ1RfRVEoJ1wwJywgY2hbMV0pOwotICBFWFBFQ1RfRVEoJ1wwJywgY2hbMl0pOwotICBF
WFBFQ1RfRVEoJ1wwJywgY2hbM10pOwotCi0gIC8vIFRlc3RzIGZpcnN0IGFuZCBsYXN0IGFyZSBp
dGVyYXRvcnMuCi0gIHN0ZDo6c3RyaW5nIGxldHRlcnMgPSAiYWJjIjsKLSAgYSA9IFNldEFycmF5
QXJndW1lbnQ8Mj4obGV0dGVycy5iZWdpbigpLCBsZXR0ZXJzLmVuZCgpKTsKLSAgc3RkOjpmaWxs
X24obiwgNCwgMCk7Ci0gIHN0ZDo6ZmlsbF9uKGNoLCA0LCAnXDAnKTsKLSAgYS5QZXJmb3JtKG1h
a2VfdHVwbGUodHJ1ZSwgcG4sIHBjaCkpOwotICBFWFBFQ1RfRVEoMCwgblswXSk7Ci0gIEVYUEVD
VF9FUSgwLCBuWzFdKTsKLSAgRVhQRUNUX0VRKDAsIG5bMl0pOwotICBFWFBFQ1RfRVEoMCwgblsz
XSk7Ci0gIEVYUEVDVF9FUSgnYScsIGNoWzBdKTsKLSAgRVhQRUNUX0VRKCdiJywgY2hbMV0pOwot
ICBFWFBFQ1RfRVEoJ2MnLCBjaFsyXSk7Ci0gIEVYUEVDVF9FUSgnXDAnLCBjaFszXSk7Ci19Ci0K
LS8vIFRlc3RzIFNldEFycmF5QXJndW1lbnQ8Tj4oZmlyc3QsIGxhc3QpIHdoZXJlIGZpcnN0ID09
IGxhc3QuCi1URVNUKFNldEFycmF5QXJndW1lbnRUZXN0LCBTZXRzVGhlTnRoQXJyYXlXaXRoRW1w
dHlSYW5nZSkgewotICB0eXBlZGVmIHZvaWQgTXlGdW5jdGlvbihib29sLCBpbnQqKTsKLSAgaW50
IG51bWJlcnNbXSA9IHsgMSwgMiwgMyB9OwotICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNldEFy
cmF5QXJndW1lbnQ8MT4obnVtYmVycywgbnVtYmVycyk7Ci0KLSAgaW50IG5bNF0gPSB7fTsKLSAg
aW50KiBwbiA9IG47Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBuKSk7Ci0gIEVYUEVD
VF9FUSgwLCBuWzBdKTsKLSAgRVhQRUNUX0VRKDAsIG5bMV0pOwotICBFWFBFQ1RfRVEoMCwgblsy
XSk7Ci0gIEVYUEVDVF9FUSgwLCBuWzNdKTsKLX0KLQotLy8gVGVzdHMgU2V0QXJyYXlBcmd1bWVu
dDxOPihmaXJzdCwgbGFzdCkgd2hlcmUgKmZpcnN0IGlzIGNvbnZlcnRpYmxlCi0vLyAoYnV0IG5v
dCBlcXVhbCkgdG8gdGhlIGFyZ3VtZW50IHR5cGUuCi1URVNUKFNldEFycmF5QXJndW1lbnRUZXN0
LCBTZXRzVGhlTnRoQXJyYXlXaXRoQ29udmVydGlibGVUeXBlKSB7Ci0gIHR5cGVkZWYgdm9pZCBN
eUZ1bmN0aW9uKGJvb2wsIGludCopOwotICBjaGFyIGNoYXJzW10gPSB7IDk3LCA5OCwgOTkgfTsK
LSAgQWN0aW9uPE15RnVuY3Rpb24+IGEgPSBTZXRBcnJheUFyZ3VtZW50PDE+KGNoYXJzLCBjaGFy
cyArIDMpOwotCi0gIGludCBjb2Rlc1s0XSA9IHsgMTExLCAyMjIsIDMzMywgNDQ0IH07Ci0gIGlu
dCogcGNvZGVzID0gY29kZXM7Ci0gIGEuUGVyZm9ybShtYWtlX3R1cGxlKHRydWUsIHBjb2Rlcykp
OwotICBFWFBFQ1RfRVEoOTcsIGNvZGVzWzBdKTsKLSAgRVhQRUNUX0VRKDk4LCBjb2Rlc1sxXSk7
Ci0gIEVYUEVDVF9FUSg5OSwgY29kZXNbMl0pOwotICBFWFBFQ1RfRVEoNDQ0LCBjb2Rlc1szXSk7
Ci19Ci0KLS8vIFRlc3QgU2V0QXJyYXlBcmd1bWVudDxOPihmaXJzdCwgbGFzdCkgd2l0aCBpdGVy
YXRvciBhcyBhcmd1bWVudC4KLVRFU1QoU2V0QXJyYXlBcmd1bWVudFRlc3QsIFNldHNUaGVOdGhB
cnJheVdpdGhJdGVyYXRvckFyZ3VtZW50KSB7Ci0gIHR5cGVkZWYgdm9pZCBNeUZ1bmN0aW9uKGJv
b2wsIHN0ZDo6YmFja19pbnNlcnRfaXRlcmF0b3I8c3RkOjpzdHJpbmc+KTsKLSAgc3RkOjpzdHJp
bmcgbGV0dGVycyA9ICJhYmMiOwotICBBY3Rpb248TXlGdW5jdGlvbj4gYSA9IFNldEFycmF5QXJn
dW1lbnQ8MT4obGV0dGVycy5iZWdpbigpLCBsZXR0ZXJzLmVuZCgpKTsKLQotICBzdGQ6OnN0cmlu
ZyBzOwotICBhLlBlcmZvcm0obWFrZV90dXBsZSh0cnVlLCBiYWNrX2luc2VydGVyKHMpKSk7Ci0g
IEVYUEVDVF9FUShsZXR0ZXJzLCBzKTsKLX0KLQotVEVTVChSZXR1cm5Qb2ludGVlVGVzdCwgV29y
a3MpIHsKLSAgaW50IG4gPSA0MjsKLSAgY29uc3QgQWN0aW9uPGludCgpPiBhID0gUmV0dXJuUG9p
bnRlZSgmbik7Ci0gIEVYUEVDVF9FUSg0MiwgYS5QZXJmb3JtKG1ha2VfdHVwbGUoKSkpOwotCi0g
IG4gPSA0MzsKLSAgRVhQRUNUX0VRKDQzLCBhLlBlcmZvcm0obWFrZV90dXBsZSgpKSk7Ci19Ci0K
LX0gIC8vIG5hbWVzcGFjZSBnbW9ja19nZW5lcmF0ZWRfYWN0aW9uc190ZXN0Ci19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1uaWNlLXN0
cmljdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1uaWNlLXN0cmljdF90ZXN0LmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDZjY2M0ZjEwMGYuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLW5pY2Utc3RyaWN0X3Rlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MjMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLWdlbmVyYXRlZC1uaWNlLXN0cmljdC5oIgotCi0j
aW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1zcGkuaCIKLQotLy8gVGhpcyBtdXN0
IG5vdCBiZSBkZWZpbmVkIGluc2lkZSB0aGUgOjp0ZXN0aW5nIG5hbWVzcGFjZSwgb3IgaXQgd2ls
bAotLy8gY2xhc2ggd2l0aCA6OnRlc3Rpbmc6Ok1vY2suCi1jbGFzcyBNb2NrIHsKLSBwdWJsaWM6
Ci0gIE1vY2soKSB7fQotCi0gIE1PQ0tfTUVUSE9EMChEb1RoaXMsIHZvaWQoKSk7Ci0KLSBwcml2
YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE1vY2spOwotfTsKLQotbmFt
ZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGdtb2NrX25pY2Vfc3RyaWN0X3Rlc3QgewotCi11
c2luZyB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpOwotdXNpbmcgdGVzdGluZzo6SGFzU3Vi
c3RyOwotdXNpbmcgdGVzdGluZzo6TmFnZ3lNb2NrOwotdXNpbmcgdGVzdGluZzo6TmljZU1vY2s7
Ci11c2luZyB0ZXN0aW5nOjpTdHJpY3RNb2NrOwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTgotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRvdXQ7Ci0jZW5kaWYKLQotLy8gRGVmaW5l
cyBzb21lIG1vY2sgY2xhc3NlcyBuZWVkZWQgYnkgdGhlIHRlc3RzLgotCi1jbGFzcyBGb28gewot
IHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vKCkge30KLQotICB2aXJ0dWFsIHZvaWQgRG9UaGlzKCkg
PSAwOwotICB2aXJ0dWFsIGludCBEb1RoYXQoYm9vbCBmbGFnKSA9IDA7Ci19OwotCi1jbGFzcyBN
b2NrRm9vIDogcHVibGljIEZvbyB7Ci0gcHVibGljOgotICBNb2NrRm9vKCkge30KLSAgdm9pZCBE
ZWxldGUoKSB7IGRlbGV0ZSB0aGlzOyB9Ci0KLSAgTU9DS19NRVRIT0QwKERvVGhpcywgdm9pZCgp
KTsKLSAgTU9DS19NRVRIT0QxKERvVGhhdCwgaW50KGJvb2wgZmxhZykpOwotCi0gcHJpdmF0ZToK
LSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrRm9vKTsKLX07Ci0KLWNsYXNz
IE1vY2tCYXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTW9ja0Jhcihjb25zdCBzdGQ6OnN0cmlu
ZyYgcykgOiBzdHJfKHMpIHt9Ci0KLSAgTW9ja0JhcihjaGFyIGExLCBjaGFyIGEyLCBzdGQ6OnN0
cmluZyBhMywgc3RkOjpzdHJpbmcgYTQsIGludCBhNSwgaW50IGE2LAotICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBhNywgY29uc3Qgc3RkOjpzdHJpbmcmIGE4LCBib29sIGE5LCBib29sIGEx
MCkgewotICAgIHN0cl8gPSBzdGQ6OnN0cmluZygpICsgYTEgKyBhMiArIGEzICsgYTQgKyBzdGF0
aWNfY2FzdDxjaGFyPihhNSkgKwotICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPihhNikgKyBhNyAr
IGE4ICsgKGE5ID8gJ1QnIDogJ0YnKSArIChhMTAgPyAnVCcgOiAnRicpOwotICB9Ci0KLSAgdmly
dHVhbCB+TW9ja0JhcigpIHt9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0cigpIGNvbnN0IHsg
cmV0dXJuIHN0cl87IH0KLQotICBNT0NLX01FVEhPRDAoVGhpcywgaW50KCkpOwotICBNT0NLX01F
VEhPRDIoVGhhdCwgc3RkOjpzdHJpbmcoaW50LCBib29sKSk7Ci0KLSBwcml2YXRlOgotICBzdGQ6
OnN0cmluZyBzdHJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0Jh
cik7Ci19OwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBUZXN0cyB0
aGF0IGEgcmF3IG1vY2sgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB1bmludGVyZXN0aW5nIGNhbGxz
LgotVEVTVChSYXdNb2NrVGVzdCwgV2FybmluZ0ZvclVuaW50ZXJlc3RpbmdDYWxsKSB7Ci0gIGNv
bnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9D
S19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOwotCi0gIE1vY2tGb28gcmF3X2ZvbzsKLQotICBD
YXB0dXJlU3Rkb3V0KCk7Ci0gIHJhd19mb28uRG9UaGlzKCk7Ci0gIHJhd19mb28uRG9UaGF0KHRy
dWUpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICAgICAgICBI
YXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikpOwotCi0gIEdNT0NL
X0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgcmF3IG1v
Y2sgZ2VuZXJhdGVzIHdhcm5pbmdzIGZvciB1bmludGVyZXN0aW5nIGNhbGxzCi0vLyB0aGF0IGRl
bGV0ZSB0aGUgbW9jayBvYmplY3QuCi1URVNUKFJhd01vY2tUZXN0LCBXYXJuaW5nRm9yVW5pbnRl
cmVzdGluZ0NhbGxBZnRlckRlYXRoKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcg
PSBHTU9DS19GTEFHKHZlcmJvc2UpOwotICBHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmci
OwotCi0gIE1vY2tGb28qIGNvbnN0IHJhd19mb28gPSBuZXcgTW9ja0ZvbzsKLQotICBPTl9DQUxM
KCpyYXdfZm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZShyYXdfZm9v
LCAmTW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICByYXdfZm9vLT5E
b1RoaXMoKTsKLSAgRVhQRUNUX1RIQVQoR2V0Q2FwdHVyZWRTdGRvdXQoKSwKLSAgICAgICAgICAg
ICAgSGFzU3Vic3RyKCJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpKTsKLQotICBH
TU9DS19GTEFHKHZlcmJvc2UpID0gc2F2ZWRfZmxhZzsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHJh
dyBtb2NrIGdlbmVyYXRlcyBpbmZvcm1hdGlvbmFsIGxvZ3MgZm9yCi0vLyB1bmludGVyZXN0aW5n
IGNhbGxzLgotVEVTVChSYXdNb2NrVGVzdCwgSW5mb0ZvclVuaW50ZXJlc3RpbmdDYWxsKSB7Ci0g
IE1vY2tGb28gcmF3X2ZvbzsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01P
Q0tfRkxBRyh2ZXJib3NlKTsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbmZvIjsKLSAgQ2Fw
dHVyZVN0ZG91dCgpOwotICByYXdfZm9vLkRvVGhpcygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0
dXJlZFN0ZG91dCgpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9j
ayBmdW5jdGlvbiBjYWxsIikpOwotCi0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFn
OwotfQotCi0vLyBUZXN0cyB0aGF0IGEgbmljZSBtb2NrIGdlbmVyYXRlcyBubyB3YXJuaW5nIGZv
ciB1bmludGVyZXN0aW5nIGNhbGxzLgotVEVTVChOaWNlTW9ja1Rlc3QsIE5vV2FybmluZ0ZvclVu
aW50ZXJlc3RpbmdDYWxsKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwotCi0gIENh
cHR1cmVTdGRvdXQoKTsKLSAgbmljZV9mb28uRG9UaGlzKCk7Ci0gIG5pY2VfZm9vLkRvVGhhdCh0
cnVlKTsKLSAgRVhQRUNUX0VRKCIiLCBHZXRDYXB0dXJlZFN0ZG91dCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBhIG5pY2UgbW9jayBnZW5lcmF0ZXMgbm8gd2FybmluZyBmb3IgdW5pbnRlcmVzdGlu
ZyBjYWxscwotLy8gdGhhdCBkZWxldGUgdGhlIG1vY2sgb2JqZWN0LgotVEVTVChOaWNlTW9ja1Rl
c3QsIE5vV2FybmluZ0ZvclVuaW50ZXJlc3RpbmdDYWxsQWZ0ZXJEZWF0aCkgewotICBOaWNlTW9j
azxNb2NrRm9vPiogY29uc3QgbmljZV9mb28gPSBuZXcgTmljZU1vY2s8TW9ja0Zvbz47Ci0KLSAg
T05fQ0FMTCgqbmljZV9mb28sIERvVGhpcygpKQotICAgICAgLldpbGxCeURlZmF1bHQoSW52b2tl
KG5pY2VfZm9vLCAmTW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBu
aWNlX2Zvby0+RG9UaGlzKCk7Ci0gIEVYUEVDVF9FUSgiIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBuaWNlIG1vY2sgZ2VuZXJhdGVzIGluZm9ybWF0aW9uYWwg
bG9ncyBmb3IKLS8vIHVuaW50ZXJlc3RpbmcgY2FsbHMuCi1URVNUKE5pY2VNb2NrVGVzdCwgSW5m
b0ZvclVuaW50ZXJlc3RpbmdDYWxsKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwot
Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHNhdmVkX2ZsYWcgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwot
ICBHTU9DS19GTEFHKHZlcmJvc2UpID0gImluZm8iOwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIG5p
Y2VfZm9vLkRvVGhpcygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAg
ICAgICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikp
OwotCi0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8gVGVzdHMgdGhhdCBhIG5pY2UgbW9j
ayBhbGxvd3MgZXhwZWN0ZWQgY2FsbHMuCi1URVNUKE5pY2VNb2NrVGVzdCwgQWxsb3dzRXhwZWN0
ZWRDYWxsKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5pY2VfZm9vOwotCi0gIEVYUEVDVF9DQUxM
KG5pY2VfZm9vLCBEb1RoaXMoKSk7Ci0gIG5pY2VfZm9vLkRvVGhpcygpOwotfQotCi0vLyBUZXN0
cyB0aGF0IGFuIHVuZXhwZWN0ZWQgY2FsbCBvbiBhIG5pY2UgbW9jayBmYWlscy4KLVRFU1QoTmlj
ZU1vY2tUZXN0LCBVbmV4cGVjdGVkQ2FsbEZhaWxzKSB7Ci0gIE5pY2VNb2NrPE1vY2tGb28+IG5p
Y2VfZm9vOwotCi0gIEVYUEVDVF9DQUxMKG5pY2VfZm9vLCBEb1RoaXMoKSkuVGltZXMoMCk7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKG5pY2VfZm9vLkRvVGhpcygpLCAiY2FsbGVkIG1vcmUg
dGltZXMgdGhhbiBleHBlY3RlZCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IE5pY2VNb2NrIHdvcmtz
IHdpdGggYSBtb2NrIGNsYXNzIHRoYXQgaGFzIGEgbm9uLWRlZmF1bHQKLS8vIGNvbnN0cnVjdG9y
LgotVEVTVChOaWNlTW9ja1Rlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RvcikgewotICBOaWNlTW9j
azxNb2NrQmFyPiBuaWNlX2JhcigiaGkiKTsKLSAgRVhQRUNUX0VRKCJoaSIsIG5pY2VfYmFyLnN0
cigpKTsKLQotICBuaWNlX2Jhci5UaGlzKCk7Ci0gIG5pY2VfYmFyLlRoYXQoNSwgdHJ1ZSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgTmljZU1vY2sgd29ya3Mgd2l0aCBhIG1vY2sgY2xhc3MgdGhhdCBo
YXMgYSAxMC1hcnkKLS8vIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yLgotVEVTVChOaWNlTW9ja1Rl
c3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3RvcjEwKSB7Ci0gIE5pY2VNb2NrPE1vY2tCYXI+IG5pY2Vf
YmFyKCdhJywgJ2InLCAiYyIsICJkIiwgJ2UnLCAnZicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJnIiwgImgiLCB0cnVlLCBmYWxzZSk7Ci0gIEVYUEVDVF9FUSgiYWJjZGVmZ2hURiIs
IG5pY2VfYmFyLnN0cigpKTsKLQotICBuaWNlX2Jhci5UaGlzKCk7Ci0gIG5pY2VfYmFyLlRoYXQo
NSwgdHJ1ZSk7Ci19Ci0KLSNpZiAhR1RFU1RfT1NfU1lNQklBTiAmJiAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLS8vIFRlc3RzIHRoYXQgTmljZU1vY2s8TW9jaz4gY29tcGlsZXMgd2hlcmUgTW9j
ayBpcyBhIHVzZXItZGVmaW5lZAotLy8gY2xhc3MgKGFzIG9wcG9zZWQgdG8gOjp0ZXN0aW5nOjpN
b2NrKS4gIFdlIGhhZCB0byB3b3JrIGFyb3VuZCBhbgotLy8gTVNWQyA4LjAgYnVnIHRoYXQgY2F1
c2VkIHRoZSBzeW1ib2wgTW9jayB1c2VkIGluIHRoZSBkZWZpbml0aW9uIG9mCi0vLyBOaWNlTW9j
ayB0byBiZSBsb29rZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QKLS8v
IGVuc3VyZXMgdGhhdCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0aGlz
IHRlc3Qgb24gU3ltYmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMgdGhl
IHByb2dyYW0gdG8gY3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0Lgot
VEVTVChOaWNlTW9ja1Rlc3QsIEFjY2VwdHNDbGFzc05hbWVkTW9jaykgewotICBOaWNlTW9jazwg
OjpNb2NrPiBuaWNlOwotICBFWFBFQ1RfQ0FMTChuaWNlLCBEb1RoaXMoKSk7Ci0gIG5pY2UuRG9U
aGlzKCk7Ci19Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19XSU5E
T1dTX01PQklMRQotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBUZXN0
cyB0aGF0IGEgbmFnZ3kgbW9jayBnZW5lcmF0ZXMgd2FybmluZ3MgZm9yIHVuaW50ZXJlc3Rpbmcg
Y2FsbHMuCi1URVNUKE5hZ2d5TW9ja1Rlc3QsIFdhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbCkg
ewotICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF9mbGFnID0gR01PQ0tfRkxBRyh2ZXJib3NlKTsK
LSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJ3YXJuaW5nIjsKLQotICBOYWdneU1vY2s8TW9ja0Zv
bz4gbmFnZ3lfZm9vOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgbmFnZ3lfZm9vLkRvVGhpcygp
OwotICBuYWdneV9mb28uRG9UaGF0KHRydWUpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0
ZG91dCgpLAotICAgICAgICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5j
dGlvbiBjYWxsIikpOwotCi0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQot
Ci0vLyBUZXN0cyB0aGF0IGEgbmFnZ3kgbW9jayBnZW5lcmF0ZXMgYSB3YXJuaW5nIGZvciBhbiB1
bmludGVyZXN0aW5nIGNhbGwKLS8vIHRoYXQgZGVsZXRlcyB0aGUgbW9jayBvYmplY3QuCi1URVNU
KE5hZ2d5TW9ja1Rlc3QsIFdhcm5pbmdGb3JVbmludGVyZXN0aW5nQ2FsbEFmdGVyRGVhdGgpIHsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcgc2F2ZWRfZmxhZyA9IEdNT0NLX0ZMQUcodmVyYm9zZSk7Ci0g
IEdNT0NLX0ZMQUcodmVyYm9zZSkgPSAid2FybmluZyI7Ci0KLSAgTmFnZ3lNb2NrPE1vY2tGb28+
KiBjb25zdCBuYWdneV9mb28gPSBuZXcgTmFnZ3lNb2NrPE1vY2tGb28+OwotCi0gIE9OX0NBTEwo
Km5hZ2d5X2ZvbywgRG9UaGlzKCkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChJbnZva2UobmFnZ3lf
Zm9vLCAmTW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBuYWdneV9m
b28tPkRvVGhpcygpOwotICBFWFBFQ1RfVEhBVChHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAg
ICAgICAgICBIYXNTdWJzdHIoIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIikpOwot
Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF9mbGFnOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8gVGVzdHMgdGhhdCBhIG5hZ2d5IG1vY2sg
YWxsb3dzIGV4cGVjdGVkIGNhbGxzLgotVEVTVChOYWdneU1vY2tUZXN0LCBBbGxvd3NFeHBlY3Rl
ZENhbGwpIHsKLSAgTmFnZ3lNb2NrPE1vY2tGb28+IG5hZ2d5X2ZvbzsKLQotICBFWFBFQ1RfQ0FM
TChuYWdneV9mb28sIERvVGhpcygpKTsKLSAgbmFnZ3lfZm9vLkRvVGhpcygpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IGFuIHVuZXhwZWN0ZWQgY2FsbCBvbiBhIG5hZ2d5IG1vY2sgZmFpbHMuCi1URVNU
KE5hZ2d5TW9ja1Rlc3QsIFVuZXhwZWN0ZWRDYWxsRmFpbHMpIHsKLSAgTmFnZ3lNb2NrPE1vY2tG
b28+IG5hZ2d5X2ZvbzsKLQotICBFWFBFQ1RfQ0FMTChuYWdneV9mb28sIERvVGhpcygpKS5UaW1l
cygwKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUobmFnZ3lfZm9vLkRvVGhpcygpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCIp
OwotfQotCi0vLyBUZXN0cyB0aGF0IE5hZ2d5TW9jayB3b3JrcyB3aXRoIGEgbW9jayBjbGFzcyB0
aGF0IGhhcyBhIG5vbi1kZWZhdWx0Ci0vLyBjb25zdHJ1Y3Rvci4KLVRFU1QoTmFnZ3lNb2NrVGVz
dCwgTm9uRGVmYXVsdENvbnN0cnVjdG9yKSB7Ci0gIE5hZ2d5TW9jazxNb2NrQmFyPiBuYWdneV9i
YXIoImhpIik7Ci0gIEVYUEVDVF9FUSgiaGkiLCBuYWdneV9iYXIuc3RyKCkpOwotCi0gIG5hZ2d5
X2Jhci5UaGlzKCk7Ci0gIG5hZ2d5X2Jhci5UaGF0KDUsIHRydWUpOwotfQotCi0vLyBUZXN0cyB0
aGF0IE5hZ2d5TW9jayB3b3JrcyB3aXRoIGEgbW9jayBjbGFzcyB0aGF0IGhhcyBhIDEwLWFyeQot
Ly8gbm9uLWRlZmF1bHQgY29uc3RydWN0b3IuCi1URVNUKE5hZ2d5TW9ja1Rlc3QsIE5vbkRlZmF1
bHRDb25zdHJ1Y3RvcjEwKSB7Ci0gIE5hZ2d5TW9jazxNb2NrQmFyPiBuYWdneV9iYXIoJzAnLCAn
MScsICIyIiwgIjMiLCAnNCcsICc1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
NiIsICI3IiwgdHJ1ZSwgZmFsc2UpOwotICBFWFBFQ1RfRVEoIjAxMjM0NTY3VEYiLCBuYWdneV9i
YXIuc3RyKCkpOwotCi0gIG5hZ2d5X2Jhci5UaGlzKCk7Ci0gIG5hZ2d5X2Jhci5UaGF0KDUsIHRy
dWUpOwotfQotCi0jaWYgIUdURVNUX09TX1NZTUJJQU4gJiYgIUdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi0vLyBUZXN0cyB0aGF0IE5hZ2d5TW9jazxNb2NrPiBjb21waWxlcyB3aGVyZSBNb2NrIGlz
IGEgdXNlci1kZWZpbmVkCi0vLyBjbGFzcyAoYXMgb3Bwb3NlZCB0byA6OnRlc3Rpbmc6Ok1vY2sp
LiAgV2UgaGFkIHRvIHdvcmsgYXJvdW5kIGFuCi0vLyBNU1ZDIDguMCBidWcgdGhhdCBjYXVzZWQg
dGhlIHN5bWJvbCBNb2NrIHVzZWQgaW4gdGhlIGRlZmluaXRpb24gb2YKLS8vIE5hZ2d5TW9jayB0
byBiZSBsb29rZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QKLS8vIGVu
c3VyZXMgdGhhdCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0aGlzIHRl
c3Qgb24gU3ltYmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMgdGhlIHBy
b2dyYW0gdG8gY3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0LgotVEVT
VChOYWdneU1vY2tUZXN0LCBBY2NlcHRzQ2xhc3NOYW1lZE1vY2spIHsKLSAgTmFnZ3lNb2NrPCA6
Ok1vY2s+IG5hZ2d5OwotICBFWFBFQ1RfQ0FMTChuYWdneSwgRG9UaGlzKCkpOwotICBuYWdneS5E
b1RoaXMoKTsKLX0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4gJiYgIUdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0KLS8vIFRlc3RzIHRoYXQgYSBzdHJpY3QgbW9jayBhbGxvd3MgZXhwZWN0
ZWQgY2FsbHMuCi1URVNUKFN0cmljdE1vY2tUZXN0LCBBbGxvd3NFeHBlY3RlZENhbGwpIHsKLSAg
U3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOwotCi0gIEVYUEVDVF9DQUxMKHN0cmljdF9m
b28sIERvVGhpcygpKTsKLSAgc3RyaWN0X2Zvby5Eb1RoaXMoKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCBhbiB1bmV4cGVjdGVkIGNhbGwgb24gYSBzdHJpY3QgbW9jayBmYWlscy4KLVRFU1QoU3RyaWN0
TW9ja1Rlc3QsIFVuZXhwZWN0ZWRDYWxsRmFpbHMpIHsKLSAgU3RyaWN0TW9jazxNb2NrRm9vPiBz
dHJpY3RfZm9vOwotCi0gIEVYUEVDVF9DQUxMKHN0cmljdF9mb28sIERvVGhpcygpKS5UaW1lcygw
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Zvby5Eb1RoaXMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gZXhwZWN0ZWQiKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCBhbiB1bmludGVyZXN0aW5nIGNhbGwgb24gYSBzdHJpY3QgbW9j
ayBmYWlscy4KLVRFU1QoU3RyaWN0TW9ja1Rlc3QsIFVuaW50ZXJlc3RpbmdDYWxsRmFpbHMpIHsK
LSAgU3RyaWN0TW9jazxNb2NrRm9vPiBzdHJpY3RfZm9vOwotCi0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHN0cmljdF9mb28uRG9UaGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJV
bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFu
IHVuaW50ZXJlc3RpbmcgY2FsbCBvbiBhIHN0cmljdCBtb2NrIGZhaWxzLCBldmVuIGlmCi0vLyB0
aGUgY2FsbCBkZWxldGVzIHRoZSBtb2NrIG9iamVjdC4KLVRFU1QoU3RyaWN0TW9ja1Rlc3QsIFVu
aW50ZXJlc3RpbmdDYWxsRmFpbHNBZnRlckRlYXRoKSB7Ci0gIFN0cmljdE1vY2s8TW9ja0Zvbz4q
IGNvbnN0IHN0cmljdF9mb28gPSBuZXcgU3RyaWN0TW9jazxNb2NrRm9vPjsKLQotICBPTl9DQUxM
KCpzdHJpY3RfZm9vLCBEb1RoaXMoKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KEludm9rZShzdHJp
Y3RfZm9vLCAmTW9ja0Zvbzo6RGVsZXRlKSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
c3RyaWN0X2Zvby0+RG9UaGlzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJVbmludGVy
ZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotfQotCi0vLyBUZXN0cyB0aGF0IFN0cmljdE1v
Y2sgd29ya3Mgd2l0aCBhIG1vY2sgY2xhc3MgdGhhdCBoYXMgYQotLy8gbm9uLWRlZmF1bHQgY29u
c3RydWN0b3IuCi1URVNUKFN0cmljdE1vY2tUZXN0LCBOb25EZWZhdWx0Q29uc3RydWN0b3IpIHsK
LSAgU3RyaWN0TW9jazxNb2NrQmFyPiBzdHJpY3RfYmFyKCJoaSIpOwotICBFWFBFQ1RfRVEoImhp
Iiwgc3RyaWN0X2Jhci5zdHIoKSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0
X2Jhci5UaGF0KDUsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pbnRlcmVz
dGluZyBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTdHJpY3RNb2Nr
IHdvcmtzIHdpdGggYSBtb2NrIGNsYXNzIHRoYXQgaGFzIGEgMTAtYXJ5Ci0vLyBub24tZGVmYXVs
dCBjb25zdHJ1Y3Rvci4KLVRFU1QoU3RyaWN0TW9ja1Rlc3QsIE5vbkRlZmF1bHRDb25zdHJ1Y3Rv
cjEwKSB7Ci0gIFN0cmljdE1vY2s8TW9ja0Jhcj4gc3RyaWN0X2JhcignYScsICdiJywgImMiLCAi
ZCIsICdlJywgJ2YnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImciLCAiaCIs
IHRydWUsIGZhbHNlKTsKLSAgRVhQRUNUX0VRKCJhYmNkZWZnaFRGIiwgc3RyaWN0X2Jhci5zdHIo
KSk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoc3RyaWN0X2Jhci5UaGF0KDUsIHRydWUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9u
IGNhbGwiKTsKLX0KLQotI2lmICFHVEVTVF9PU19TWU1CSUFOICYmICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotLy8gVGVzdHMgdGhhdCBTdHJpY3RNb2NrPE1vY2s+IGNvbXBpbGVzIHdoZXJlIE1v
Y2sgaXMgYSB1c2VyLWRlZmluZWQKLS8vIGNsYXNzIChhcyBvcHBvc2VkIHRvIDo6dGVzdGluZzo6
TW9jaykuICBXZSBoYWQgdG8gd29yayBhcm91bmQgYW4KLS8vIE1TVkMgOC4wIGJ1ZyB0aGF0IGNh
dXNlZCB0aGUgc3ltYm9sIE1vY2sgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbiBvZgotLy8gU3RyaWN0
TW9jayB0byBiZSBsb29rZWQgdXAgaW4gdGhlIHdyb25nIGNvbnRleHQsIGFuZCB0aGlzIHRlc3QK
LS8vIGVuc3VyZXMgdGhhdCBvdXIgZml4IHdvcmtzLgotLy8KLS8vIFdlIGhhdmUgdG8gc2tpcCB0
aGlzIHRlc3Qgb24gU3ltYmlhbiBhbmQgV2luZG93cyBNb2JpbGUsIGFzIGl0Ci0vLyBjYXVzZXMg
dGhlIHByb2dyYW0gdG8gY3Jhc2ggdGhlcmUsIGZvciByZWFzb25zIHVuY2xlYXIgdG8gdXMgeWV0
LgotVEVTVChTdHJpY3RNb2NrVGVzdCwgQWNjZXB0c0NsYXNzTmFtZWRNb2NrKSB7Ci0gIFN0cmlj
dE1vY2s8IDo6TW9jaz4gc3RyaWN0OwotICBFWFBFQ1RfQ0FMTChzdHJpY3QsIERvVGhpcygpKTsK
LSAgc3RyaWN0LkRvVGhpcygpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfU1lNQklBTiAmJiAh
R1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotfSAgLy8gbmFtZXNwYWNlIGdtb2NrX25pY2Vfc3Ry
aWN0X3Rlc3QKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9j
ay90ZXN0L2dtb2NrLXBvcnRfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2stcG9ydF90
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmE4ZDQ0NDY2YjIuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrLXBvcnRfdGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYp
Ci0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xh
c3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIGludGVybmFsIGNyb3NzLXBsYXRmb3Jt
IHN1cHBvcnQgdXRpbGl0aWVzLgotCi0jaW5jbHVkZSAiZ21vY2svaW50ZXJuYWwvZ21vY2stcG9y
dC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLS8vIE5PVEU6IGlmIHRoaXMgZmlsZSBp
cyBsZWZ0IHdpdGhvdXQgdGVzdHMgZm9yIHNvbWUgcmVhc29uLCBwdXQgYSBkdW1teQotLy8gdGVz
dCBoZXJlIHRvIG1ha2UgcmVmZXJlbmNlcyB0byBzeW1ib2xzIGluIHRoZSBndGVzdCBsaWJyYXJ5
IGFuZCBhdm9pZAotLy8gJ3VuZGVmaW5lZCBzeW1ib2wnIGxpbmtlciBlcnJvcnMgaW4gZ21vY2tf
bWFpbjoKLQotVEVTVChEdW1teVRlc3QsIER1bW15KSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9jay1zcGVjLWJ1aWxkZXJzX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrLXNwZWMtYnVpbGRlcnNfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Mzg5ZTA3MDk4NDNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9jay1z
cGVjLWJ1aWxkZXJzX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyNjQzICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFt
ZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIGZpbGUgdGVz
dHMgdGhlIHNwZWMgYnVpbGRlciBzeW50YXguCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay1zcGVj
LWJ1aWxkZXJzLmgiCi0KLSNpbmNsdWRlIDxvc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8
c3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgot
I2luY2x1ZGUgImdtb2NrL2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLSNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGlu
dGVybmFsIHsKLQotLy8gSGVscGVyIGNsYXNzIGZvciB0ZXN0aW5nIHRoZSBFeHBlY3RhdGlvbiBj
bGFzcyB0ZW1wbGF0ZS4KLWNsYXNzIEV4cGVjdGF0aW9uVGVzdGVyIHsKLSBwdWJsaWM6Ci0gIC8v
IFNldHMgdGhlIGNhbGwgY291bnQgb2YgdGhlIGdpdmVuIGV4cGVjdGF0aW9uIHRvIHRoZSBnaXZl
biBudW1iZXIuCi0gIHZvaWQgU2V0Q2FsbENvdW50KGludCBuLCBFeHBlY3RhdGlvbkJhc2UqIGV4
cCkgewotICAgIGV4cC0+Y2FsbF9jb3VudF8gPSBuOwotICB9Ci19OwotCi19ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLW5hbWVzcGFjZSB7Ci0KLXVz
aW5nIHRlc3Rpbmc6Ol87Ci11c2luZyB0ZXN0aW5nOjpBbnlOdW1iZXI7Ci11c2luZyB0ZXN0aW5n
OjpBdExlYXN0OwotdXNpbmcgdGVzdGluZzo6QXRNb3N0OwotdXNpbmcgdGVzdGluZzo6QmV0d2Vl
bjsKLXVzaW5nIHRlc3Rpbmc6OkNhcmRpbmFsaXR5OwotdXNpbmcgdGVzdGluZzo6Q2FyZGluYWxp
dHlJbnRlcmZhY2U7Ci11c2luZyB0ZXN0aW5nOjpDb250YWluc1JlZ2V4OwotdXNpbmcgdGVzdGlu
Zzo6Q29uc3Q7Ci11c2luZyB0ZXN0aW5nOjpEb0FsbDsKLXVzaW5nIHRlc3Rpbmc6OkRvRGVmYXVs
dDsKLXVzaW5nIHRlc3Rpbmc6OkVxOwotdXNpbmcgdGVzdGluZzo6RXhwZWN0YXRpb247Ci11c2lu
ZyB0ZXN0aW5nOjpFeHBlY3RhdGlvblNldDsKLXVzaW5nIHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVy
Ym9zZSk7Ci11c2luZyB0ZXN0aW5nOjpHdDsKLXVzaW5nIHRlc3Rpbmc6OkluU2VxdWVuY2U7Ci11
c2luZyB0ZXN0aW5nOjpJbnZva2U7Ci11c2luZyB0ZXN0aW5nOjpJbnZva2VXaXRob3V0QXJnczsK
LXVzaW5nIHRlc3Rpbmc6OklzTm90U3Vic3RyaW5nOwotdXNpbmcgdGVzdGluZzo6SXNTdWJzdHJp
bmc7Ci11c2luZyB0ZXN0aW5nOjpMdDsKLXVzaW5nIHRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyB0
ZXN0aW5nOjpNb2NrOwotdXNpbmcgdGVzdGluZzo6TmFnZ3lNb2NrOwotdXNpbmcgdGVzdGluZzo6
TmU7Ci11c2luZyB0ZXN0aW5nOjpSZXR1cm47Ci11c2luZyB0ZXN0aW5nOjpTZXF1ZW5jZTsKLXVz
aW5nIHRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RXhw
ZWN0YXRpb25UZXN0ZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0
aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OmtFcnJvclZlcmJvc2l0eTsKLXVzaW5nIHRl
c3Rpbmc6OmludGVybmFsOjprSW5mb1ZlcmJvc2l0eTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFs
OjprV2FybmluZ1ZlcmJvc2l0eTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRy
OwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotdXNpbmcgdGVzdGluZzo6SGFz
U3Vic3RyOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRvdXQ7Ci0jZW5kaWYKLQotY2xhc3MgSW5j
b21wbGV0ZTsKLQotY2xhc3MgTW9ja0luY29tcGxldGUgewotIHB1YmxpYzoKLSAgLy8gVGhpcyBs
aW5lIHZlcmlmaWVzIHRoYXQgYSBtb2NrIG1ldGhvZCBjYW4gdGFrZSBhIGJ5LXJlZmVyZW5jZQot
ICAvLyBhcmd1bWVudCBvZiBhbiBpbmNvbXBsZXRlIHR5cGUuCi0gIE1PQ0tfTUVUSE9EMShCeVJl
ZkZ1bmMsIHZvaWQoY29uc3QgSW5jb21wbGV0ZSYgeCkpOwotfTsKLQotLy8gVGVsbHMgR29vZ2xl
IE1vY2sgaG93IHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBJbmNvbXBsZXRlLgotdm9pZCBQcmlu
dFRvKGNvbnN0IEluY29tcGxldGUmIHgsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci0KLVRFU1QoTW9j
a01ldGhvZFRlc3QsIENhbkluc3RhbnRpYXRlV2l0aEluY29tcGxldGVBcmdUeXBlKSB7Ci0gIC8v
IEV2ZW4gdGhvdWdoIHRoaXMgbW9jayBjbGFzcyBjb250YWlucyBhIG1vY2sgbWV0aG9kIHRoYXQg
dGFrZXMKLSAgLy8gYnktcmVmZXJlbmNlIGFuIGFyZ3VtZW50IHdob3NlIHR5cGUgaXMgaW5jb21w
bGV0ZSwgd2UgY2FuIHN0aWxsCi0gIC8vIHVzZSB0aGUgbW9jaywgYXMgbG9uZyBhcyBHb29nbGUg
TW9jayBrbm93cyBob3cgdG8gcHJpbnQgdGhlCi0gIC8vIGFyZ3VtZW50LgotICBNb2NrSW5jb21w
bGV0ZSBpbmNvbXBsZXRlOwotICBFWFBFQ1RfQ0FMTChpbmNvbXBsZXRlLCBCeVJlZkZ1bmMoXykp
Ci0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpOwotfQotCi0vLyBUaGUgZGVmaW5pdGlvbiBvZiB0
aGUgcHJpbnRlciBmb3IgdGhlIGFyZ3VtZW50IHR5cGUgZG9lc24ndCBoYXZlIHRvCi0vLyBiZSB2
aXNpYmxlIHdoZXJlIHRoZSBtb2NrIGlzIHVzZWQuCi12b2lkIFByaW50VG8oY29uc3QgSW5jb21w
bGV0ZSYgLyogeCAqLywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCAiaW5jb21wbGV0
ZSI7Ci19Ci0KLWNsYXNzIFJlc3VsdCB7fTsKLQotLy8gQSB0eXBlIHRoYXQncyBub3QgZGVmYXVs
dCBjb25zdHJ1Y3RpYmxlLgotY2xhc3MgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUoaW50IC8qIGR1bW15ICovKSB7
fQotfTsKLQotY2xhc3MgTW9ja0EgewotIHB1YmxpYzoKLSAgTW9ja0EoKSB7fQotCi0gIE1PQ0tf
TUVUSE9EMShEb0EsIHZvaWQoaW50IG4pKTsKLSAgTU9DS19NRVRIT0QxKFJldHVyblJlc3VsdCwg
UmVzdWx0KGludCBuKSk7Ci0gIE1PQ0tfTUVUSE9EMChSZXR1cm5Ob25EZWZhdWx0Q29uc3RydWN0
aWJsZSwgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUoKSk7Ci0gIE1PQ0tfTUVUSE9EMihCaW5hcnks
IGJvb2woaW50IHgsIGludCB5KSk7Ci0gIE1PQ0tfTUVUSE9EMihSZXR1cm5JbnQsIGludChpbnQg
eCwgaW50IHkpKTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oTW9ja0EpOwotfTsKLQotY2xhc3MgTW9ja0IgewotIHB1YmxpYzoKLSAgTW9ja0IoKSB7fQot
Ci0gIE1PQ0tfQ09OU1RfTUVUSE9EMChEb0IsIGludCgpKTsgIC8vIE5PTElOVAotICBNT0NLX01F
VEhPRDEoRG9CLCBpbnQoaW50IG4pKTsgIC8vIE5PTElOVAotCi0gcHJpdmF0ZToKLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrQik7Ci19OwotCi1jbGFzcyBSZWZlcmVuY2VI
b2xkaW5nTW9jayB7Ci0gcHVibGljOgotICBSZWZlcmVuY2VIb2xkaW5nTW9jaygpIHt9Ci0KLSAg
TU9DS19NRVRIT0QxKEFjY2VwdFJlZmVyZW5jZSwgdm9pZChsaW5rZWRfcHRyPE1vY2tBPiopKTsK
LQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUmVmZXJlbmNl
SG9sZGluZ01vY2spOwotfTsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfQ0FMTCBhbmQgT05fQ0FM
TCBjb21waWxlIGluIGEgcHJlc2VuY2Ugb2YgbWFjcm8KLS8vIHJlZGVmaW5pbmcgYSBtb2NrIG1l
dGhvZCBuYW1lLiBUaGlzIGNvdWxkIGhhcHBlbiwgZm9yIGV4YW1wbGUsIHdoZW4KLS8vIHRoZSB0
ZXN0ZWQgY29kZSAjaW5jbHVkZXMgV2luMzIgQVBJIGhlYWRlcnMgd2hpY2ggZGVmaW5lIG1hbnkg
QVBJcwotLy8gYXMgbWFjcm9zLCBlLmcuICNkZWZpbmUgVGV4dE91dCBUZXh0T3V0Vy4KLQotI2Rl
ZmluZSBNZXRob2QgTWV0aG9kVwotCi1jbGFzcyBDQyB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5D
QygpIHt9Ci0gIHZpcnR1YWwgaW50IE1ldGhvZCgpID0gMDsKLX07Ci1jbGFzcyBNb2NrQ0MgOiBw
dWJsaWMgQ0MgewotIHB1YmxpYzoKLSAgTW9ja0NDKCkge30KLQotICBNT0NLX01FVEhPRDAoTWV0
aG9kLCBpbnQoKSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE1vY2tDQyk7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGEgbWV0aG9kIHdpdGggZXhwYW5kZWQg
bmFtZSBjb21waWxlcy4KLVRFU1QoT25DYWxsU3ludGF4VGVzdCwgQ29tcGlsZXNXaXRoTWV0aG9k
TmFtZUV4cGFuZGVkRnJvbU1hY3JvKSB7Ci0gIE1vY2tDQyBjYzsKLSAgT05fQ0FMTChjYywgTWV0
aG9kKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtZXRob2Qgd2l0aCBleHBhbmRlZCBuYW1l
IG5vdCBvbmx5IGNvbXBpbGVzIGJ1dCBydW5zCi0vLyBhbmQgcmV0dXJucyBhIGNvcnJlY3QgdmFs
dWUsIHRvby4KLVRFU1QoT25DYWxsU3ludGF4VGVzdCwgV29ya3NXaXRoTWV0aG9kTmFtZUV4cGFu
ZGVkRnJvbU1hY3JvKSB7Ci0gIE1vY2tDQyBjYzsKLSAgT05fQ0FMTChjYywgTWV0aG9kKCkpLldp
bGxCeURlZmF1bHQoUmV0dXJuKDQyKSk7Ci0gIEVYUEVDVF9FUSg0MiwgY2MuTWV0aG9kKCkpOwot
fQotCi0vLyBUZXN0cyB0aGF0IGEgbWV0aG9kIHdpdGggZXhwYW5kZWQgbmFtZSBjb21waWxlcy4K
LVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIENvbXBpbGVzV2l0aE1ldGhvZE5hbWVFeHBhbmRl
ZEZyb21NYWNybykgewotICBNb2NrQ0MgY2M7Ci0gIEVYUEVDVF9DQUxMKGNjLCBNZXRob2QoKSk7
Ci0gIGNjLk1ldGhvZCgpOwotfQotCi0vLyBUZXN0cyB0aGF0IGl0IHdvcmtzLCB0b28uCi1URVNU
KEV4cGVjdENhbGxTeW50YXhUZXN0LCBXb3Jrc1dpdGhNZXRob2ROYW1lRXhwYW5kZWRGcm9tTWFj
cm8pIHsKLSAgTW9ja0NDIGNjOwotICBFWFBFQ1RfQ0FMTChjYywgTWV0aG9kKCkpLldpbGxPbmNl
KFJldHVybig0MikpOwotICBFWFBFQ1RfRVEoNDIsIGNjLk1ldGhvZCgpKTsKLX0KLQotI3VuZGVm
IE1ldGhvZCAgLy8gRG9uZSB3aXRoIG1hY3JvIHJlZGVmaW5pdGlvbiB0ZXN0cy4KLQotLy8gVGVz
dHMgdGhhdCBPTl9DQUxMIGV2YWx1YXRlcyBpdHMgYXJndW1lbnRzIGV4YWN0bHkgb25jZSBhcyBw
cm9taXNlZAotLy8gYnkgR29vZ2xlIE1vY2suCi1URVNUKE9uQ2FsbFN5bnRheFRlc3QsIEV2YWx1
YXRlc0ZpcnN0QXJndW1lbnRPbmNlKSB7Ci0gIE1vY2tBIGE7Ci0gIE1vY2tBKiBwYSA9ICZhOwot
Ci0gIE9OX0NBTEwoKnBhKyssIERvQShfKSk7Ci0gIEVYUEVDVF9FUSgmYSArIDEsIHBhKTsKLX0K
LQotVEVTVChPbkNhbGxTeW50YXhUZXN0LCBFdmFsdWF0ZXNTZWNvbmRBcmd1bWVudE9uY2UpIHsK
LSAgTW9ja0EgYTsKLSAgaW50IG4gPSAwOwotCi0gIE9OX0NBTEwoYSwgRG9BKG4rKykpOwotICBF
WFBFQ1RfRVEoMSwgbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHN5bnRheCBvZiBPTl9DQUxM
KCkgaXMgZW5mb3JjZWQgYXQgcnVuIHRpbWUuCi0KLVRFU1QoT25DYWxsU3ludGF4VGVzdCwgV2l0
aElzT3B0aW9uYWwpIHsKLSAgTW9ja0EgYTsKLQotICBPTl9DQUxMKGEsIERvQSg1KSkKLSAgICAg
IC5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgT05fQ0FMTChhLCBEb0EoXykpCi0gICAgICAu
V2l0aChfKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotfQotCi1URVNUKE9uQ2Fs
bFN5bnRheFRlc3QsIFdpdGhDYW5BcHBlYXJBdE1vc3RPbmNlKSB7Ci0gIE1vY2tBIGE7Ci0KLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgT05fQ0FMTChhLCBSZXR1
cm5SZXN1bHQoXykpCi0gICAgICAgIC5XaXRoKF8pCi0gICAgICAgIC5XaXRoKF8pCi0gICAgICAg
IC5XaWxsQnlEZWZhdWx0KFJldHVybihSZXN1bHQoKSkpOwotICB9LCAiLldpdGgoKSBjYW5ub3Qg
YXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuIE9OX0NBTEwoKSIpOwotfQotCi1URVNUKE9uQ2Fs
bFN5bnRheFRlc3QsIFdpbGxCeURlZmF1bHRJc01hbmRhdG9yeSkgewotICBNb2NrQSBhOwotCi0g
IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoewotICAgIE9OX0NBTEwoYSwgRG9BKDUpKTsKLSAg
ICBhLkRvQSg1KTsKLSAgfSwgIiIpOwotfQotCi1URVNUKE9uQ2FsbFN5bnRheFRlc3QsIFdpbGxC
eURlZmF1bHRDYW5BcHBlYXJBdE1vc3RPbmNlKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgT05fQ0FMTChhLCBEb0EoNSkpCi0gICAg
ICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigpKQotICAgICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1
cm4oKSk7Ci0gIH0sICIuV2lsbEJ5RGVmYXVsdCgpIG11c3QgYXBwZWFyIGV4YWN0bHkgb25jZSBp
biBhbiBPTl9DQUxMKCkiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfQ0FMTCBldmFsdWF0
ZXMgaXRzIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UgYXMKLS8vIHByb21pc2VkIGJ5IEdvb2dsZSBN
b2NrLgotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgRXZhbHVhdGVzRmlyc3RBcmd1bWVudE9u
Y2UpIHsKLSAgTW9ja0EgYTsKLSAgTW9ja0EqIHBhID0gJmE7Ci0KLSAgRVhQRUNUX0NBTEwoKnBh
KyssIERvQShfKSk7Ci0gIGEuRG9BKDApOwotICBFWFBFQ1RfRVEoJmEgKyAxLCBwYSk7Ci19Ci0K
LVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIEV2YWx1YXRlc1NlY29uZEFyZ3VtZW50T25jZSkg
ewotICBNb2NrQSBhOwotICBpbnQgbiA9IDA7Ci0KLSAgRVhQRUNUX0NBTEwoYSwgRG9BKG4rKykp
OwotICBhLkRvQSgwKTsKLSAgRVhQRUNUX0VRKDEsIG4pOwotfQotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBzeW50YXggb2YgRVhQRUNUX0NBTEwoKSBpcyBlbmZvcmNlZCBhdCBydW4gdGltZS4KLQotVEVT
VChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2l0aElzT3B0aW9uYWwpIHsKLSAgTW9ja0EgYTsKLQot
ICBFWFBFQ1RfQ0FMTChhLCBEb0EoNSkpCi0gICAgICAuVGltZXMoMCk7Ci0gIEVYUEVDVF9DQUxM
KGEsIERvQSg2KSkKLSAgICAgIC5XaXRoKF8pCi0gICAgICAuVGltZXMoMCk7Ci19Ci0KLVRFU1Qo
RXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdpdGhDYW5BcHBlYXJBdE1vc3RPbmNlKSB7Ci0gIE1vY2tB
IGE7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0NBTEwoYSwgRG9BKDYpKQotICAgICAgICAuV2l0aChfKQotICAgICAgICAuV2l0aChfKTsKLSAg
fSwgIi5XaXRoKCkgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhbiBFWFBFQ1RfQ0FM
TCgpIik7Ci0KLSAgYS5Eb0EoNik7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdp
dGhNdXN0QmVGaXJzdENsYXVzZSkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgICAg
LlRpbWVzKDEpCi0gICAgICAgIC5XaXRoKF8pOwotICB9LCAiLldpdGgoKSBtdXN0IGJlIHRoZSBm
aXJzdCBjbGF1c2UgaW4gYW4gRVhQRUNUX0NBTEwoKSIpOwotCi0gIGEuRG9BKDEpOwotCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERv
QSgyKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigpKQotICAgICAgICAuV2l0aChfKTsKLSAg
fSwgIi5XaXRoKCkgbXVzdCBiZSB0aGUgZmlyc3QgY2xhdXNlIGluIGFuIEVYUEVDVF9DQUxMKCki
KTsKLQotICBhLkRvQSgyKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgVGltZXND
YW5CZUluZmVycmVkKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQot
ICAgICAgLldpbGxPbmNlKFJldHVybigpKTsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0g
ICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCkp
OwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLVRFU1QoRXhw
ZWN0Q2FsbFN5bnRheFRlc3QsIFRpbWVzQ2FuQXBwZWFyQXRNb3N0T25jZSkgewotICBNb2NrQSBh
OwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9D
QUxMKGEsIERvQSgxKSkKLSAgICAgICAgLlRpbWVzKDEpCi0gICAgICAgIC5UaW1lcygyKTsKLSAg
fSwgIi5UaW1lcygpIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgaW4gYW4gRVhQRUNUX0NB
TEwoKSIpOwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgxKTsKLX0KLQotVEVTVChFeHBlY3RDYWxs
U3ludGF4VGVzdCwgVGltZXNNdXN0QmVCZWZvcmVJblNlcXVlbmNlKSB7Ci0gIE1vY2tBIGE7Ci0g
IFNlcXVlbmNlIHM7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0g
ICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQotICAgICAgICAuSW5TZXF1ZW5jZShzKQotICAgICAg
ICAuVGltZXMoMSk7Ci0gIH0sICIuVGltZXMoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIpOwotCi0g
IGEuRG9BKDEpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBJblNlcXVlbmNlSXNP
cHRpb25hbCkgewotICBNb2NrQSBhOwotICBTZXF1ZW5jZSBzOwotCi0gIEVYUEVDVF9DQUxMKGEs
IERvQSgxKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKLSAgICAgIC5JblNlcXVlbmNlKHMp
OwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4
VGVzdCwgSW5TZXF1ZW5jZUNhbkFwcGVhck11bHRpcGxlVGltZXMpIHsKLSAgTW9ja0EgYTsKLSAg
U2VxdWVuY2UgczEsIHMyOwotCi0gIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgIC5JblNl
cXVlbmNlKHMxLCBzMikKLSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLQotICBhLkRvQSgxKTsKLX0K
LQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgSW5TZXF1ZW5jZU11c3RCZUJlZm9yZUFmdGVy
KSB7Ci0gIE1vY2tBIGE7Ci0gIFNlcXVlbmNlIHM7Ci0KLSAgRXhwZWN0YXRpb24gZSA9IEVYUEVD
VF9DQUxMKGEsIERvQSgxKSkKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkK
LSAgICAgICAgLkFmdGVyKGUpCi0gICAgICAgIC5JblNlcXVlbmNlKHMpOwotICB9LCAiLkluU2Vx
dWVuY2UoKSBjYW5ub3QgYXBwZWFyIGFmdGVyICIpOwotCi0gIGEuRG9BKDIpOwotfQotCi1URVNU
KEV4cGVjdENhbGxTeW50YXhUZXN0LCBJblNlcXVlbmNlTXVzdEJlQmVmb3JlV2lsbE9uY2UpIHsK
LSAgTW9ja0EgYTsKLSAgU2VxdWVuY2UgczsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7
ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAgIC5XaWxsT25j
ZShSZXR1cm4oKSkKLSAgICAgICAgLkluU2VxdWVuY2Uocyk7Ci0gIH0sICIuSW5TZXF1ZW5jZSgp
IGNhbm5vdCBhcHBlYXIgYWZ0ZXIgIik7Ci0KLSAgYS5Eb0EoMSk7Ci19Ci0KLVRFU1QoRXhwZWN0
Q2FsbFN5bnRheFRlc3QsIEFmdGVyTXVzdEJlQmVmb3JlV2lsbE9uY2UpIHsKLSAgTW9ja0EgYTsK
LQotICBFeHBlY3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoewotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSkKLSAgICAgICAgLldp
bGxPbmNlKFJldHVybigpKQotICAgICAgICAuQWZ0ZXIoZSk7Ci0gIH0sICIuQWZ0ZXIoKSBjYW5u
b3QgYXBwZWFyIGFmdGVyICIpOwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLX0KLQotVEVT
VChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2lsbElzT3B0aW9uYWwpIHsKLSAgTW9ja0EgYTsKLQot
ICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKCkpOwotCi0gIGEuRG9BKDEpOwotICBhLkRvQSgyKTsKLX0KLQot
VEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2lsbENhbkFwcGVhck11bHRpcGxlVGltZXMpIHsK
LSAgTW9ja0EgYTsKLQotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAuVGltZXMoQW55
TnVtYmVyKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0
dXJuKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKCkpOwotfQotCi1URVNUKEV4cGVjdENhbGxT
eW50YXhUZXN0LCBXaWxsTXVzdEJlQmVmb3JlV2lsbFJlcGVhdGVkbHkpIHsKLSAgTW9ja0EgYTsK
LQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfQ0FM
TChhLCBEb0EoMSkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSkKLSAgICAgICAg
LldpbGxPbmNlKFJldHVybigpKTsKLSAgfSwgIi5XaWxsT25jZSgpIGNhbm5vdCBhcHBlYXIgYWZ0
ZXIgIik7Ci0KLSAgYS5Eb0EoMSk7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdp
bGxSZXBlYXRlZGx5SXNPcHRpb25hbCkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9DQUxMKGEs
IERvQSgxKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERv
QSgyKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShS
ZXR1cm4oKSk7Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDIpOwotICBhLkRvQSgyKTsKLX0KLQot
VEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2lsbFJlcGVhdGVkbHlDYW5ub3RBcHBlYXJNdWx0
aXBsZVRpbWVzKSB7Ci0gIE1vY2tBIGE7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKQotICAgICAgICAuV2lsbFJlcGVh
dGVkbHkoUmV0dXJuKCkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7Ci0gIH0s
ICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIGFuICIK
LSAgICAgIkVYUEVDVF9DQUxMKCkiKTsKLX0KLQotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwg
V2lsbFJlcGVhdGVkbHlNdXN0QmVCZWZvcmVSZXRpcmVzT25TYXR1cmF0aW9uKSB7Ci0gIE1vY2tB
IGE7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0NBTEwoYSwgRG9BKDEpKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpCi0gICAgICAg
IC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7Ci0gIH0sICIuV2lsbFJlcGVhdGVkbHkoKSBjYW5u
b3QgYXBwZWFyIGFmdGVyICIpOwotfQotCi1URVNUKEV4cGVjdENhbGxTeW50YXhUZXN0LCBSZXRp
cmVzT25TYXR1cmF0aW9uSXNPcHRpb25hbCkgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9DQUxM
KGEsIERvQSgxKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgIC5SZXRpcmVzT25T
YXR1cmF0aW9uKCk7Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDEpOwotfQotCi1URVNUKEV4cGVj
dENhbGxTeW50YXhUZXN0LCBSZXRpcmVzT25TYXR1cmF0aW9uQ2Fubm90QXBwZWFyTXVsdGlwbGVU
aW1lcykgewotICBNb2NrQSBhOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgxKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVy
YXRpb24oKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICB9LCAiLlJldGlyZXNP
blNhdHVyYXRpb24oKSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIik7Ci0KLSAgYS5Eb0Eo
MSk7Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIERlZmF1bHRDYXJkaW5hbGl0eUlz
T25jZSkgewotICB7Ci0gICAgTW9ja0EgYTsKLSAgICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwot
ICAgIGEuRG9BKDEpOwotICB9Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIE1vY2tBIGE7Ci0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgfSwgInRvIGJl
IGNhbGxlZCBvbmNlIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIE1vY2tBIGE7Ci0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgICBhLkRvQSgxKTsK
LSAgICBhLkRvQSgxKTsKLSAgfSwgInRvIGJlIGNhbGxlZCBvbmNlIik7Ci19Ci0KLSNpZiBHVEVT
VF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgZG9l
c24ndCBwcmludCBhIHdhcm5pbmcgd2hlbiB0aGUgbnVtYmVyIG9mCi0vLyBXaWxsT25jZSgpIGlz
IGFkZXF1YXRlLgotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgRG9lc05vdFdhcm5PbkFkZXF1
YXRlQWN0aW9uQ291bnQpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICB7Ci0gICAgTW9ja0IgYjsK
LQotICAgIC8vIEl0J3MgYWx3YXlzIGZpbmUgdG8gb21pdCBXaWxsT25jZSgpIGVudGlyZWx5Lgot
ICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgICAuVGltZXMoMCk7Ci0gICAgRVhQRUNU
X0NBTEwoYiwgRG9CKDEpKQotICAgICAgICAuVGltZXMoQXRNb3N0KDEpKTsKLSAgICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoMikpCi0gICAgICAgIC5UaW1lcygxKQotICAgICAgICAuV2lsbFJlcGVhdGVk
bHkoUmV0dXJuKDEpKTsKLQotICAgIC8vIEl0J3MgZmluZSBmb3IgdGhlIG51bWJlciBvZiBXaWxs
T25jZSgpcyB0byBlcXVhbCB0aGUgdXBwZXIgYm91bmQuCi0gICAgRVhQRUNUX0NBTEwoYiwgRG9C
KDMpKQotICAgICAgICAuVGltZXMoQmV0d2VlbigxLCAyKSkKLSAgICAgICAgLldpbGxPbmNlKFJl
dHVybigxKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0KLSAgICAvLyBJdCdzIGZp
bmUgZm9yIHRoZSBudW1iZXIgb2YgV2lsbE9uY2UoKXMgdG8gYmUgc21hbGxlciB0aGFuIHRoZQot
ICAgIC8vIHVwcGVyIGJvdW5kIHdoZW4gdGhlcmUgaXMgYSBXaWxsUmVwZWF0ZWRseSgpLgotICAg
IEVYUEVDVF9DQUxMKGIsIERvQig0KSkKLSAgICAgICAgLlRpbWVzKEF0TW9zdCgzKSkKLSAgICAg
ICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigy
KSk7Ci0KLSAgICAvLyBTYXRpc2ZpZXMgdGhlIGFib3ZlIGV4cGVjdGF0aW9ucy4KLSAgICBiLkRv
QigyKTsKLSAgICBiLkRvQigzKTsKLSAgfQotICBFWFBFQ1RfU1RSRVEoIiIsIEdldENhcHR1cmVk
U3Rkb3V0KCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgd2FybnMg
b24gaGF2aW5nIHRvbyBtYW55IGFjdGlvbnMgaW4gYW4KLS8vIGV4cGVjdGF0aW9uIGNvbXBhcmVk
IHRvIGl0cyBjYXJkaW5hbGl0eS4KLVRFU1QoRXhwZWN0Q2FsbFN5bnRheFRlc3QsIFdhcm5zT25U
b29NYW55QWN0aW9ucykgewotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIHsKLSAgICBNb2NrQiBiOwot
Ci0gICAgLy8gV2FybnMgd2hlbiB0aGUgbnVtYmVyIG9mIFdpbGxPbmNlKClzIGlzIGxhcmdlciB0
aGFuIHRoZSB1cHBlciBib3VuZC4KLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgICAg
LlRpbWVzKDApCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOyAgLy8gIzEKLSAgICBFWFBF
Q1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgICAgLlRpbWVzKEF0TW9zdCgxKSkKLSAgICAgICAgLldp
bGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7ICAvLyAjMgot
ICAgIEVYUEVDVF9DQUxMKGIsIERvQigxKSkKLSAgICAgICAgLlRpbWVzKDEpCi0gICAgICAgIC5X
aWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpCi0gICAgICAg
IC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7ICAvLyAjMwotCi0gICAgLy8gV2FybnMgd2hlbiB0aGUg
bnVtYmVyIG9mIFdpbGxPbmNlKClzIGVxdWFscyB0aGUgdXBwZXIgYm91bmQgYW5kCi0gICAgLy8g
dGhlcmUgaXMgYSBXaWxsUmVwZWF0ZWRseSgpLgotICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQot
ICAgICAgICAuVGltZXMoMCkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7ICAv
LyAjNAotICAgIEVYUEVDVF9DQUxMKGIsIERvQigyKSkKLSAgICAgICAgLlRpbWVzKDEpCi0gICAg
ICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4o
MikpOyAgLy8gIzUKLQotICAgIC8vIFNhdGlzZmllcyB0aGUgYWJvdmUgZXhwZWN0YXRpb25zLgot
ICAgIGIuRG9CKDEpOwotICAgIGIuRG9CKDIpOwotICB9Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG91
dHB1dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoCi0gICAg
ICBJc1N1YnN0cmluZywKLSAgICAgICJUb28gbWFueSBhY3Rpb25zIHNwZWNpZmllZCBpbiBFWFBF
Q1RfQ0FMTChiLCBEb0IoKSkuLi5cbiIKLSAgICAgICJFeHBlY3RlZCB0byBiZSBuZXZlciBjYWxs
ZWQsIGJ1dCBoYXMgMSBXaWxsT25jZSgpLiIsCi0gICAgICBvdXRwdXQpOyAgLy8gIzEKLSAgRVhQ
RUNUX1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vic3RyaW5nLAotICAgICAgIlRvbyBtYW55IGFj
dGlvbnMgc3BlY2lmaWVkIGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgotICAgICAgIkV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UsICIKLSAgICAgICJidXQgaGFzIDIgV2ls
bE9uY2UoKXMuIiwKLSAgICAgIG91dHB1dCk7ICAvLyAjMgotICBFWFBFQ1RfUFJFRF9GT1JNQVQy
KAotICAgICAgSXNTdWJzdHJpbmcsCi0gICAgICAiVG9vIG1hbnkgYWN0aW9ucyBzcGVjaWZpZWQg
aW4gRVhQRUNUX0NBTEwoYiwgRG9CKDEpKS4uLlxuIgotICAgICAgIkV4cGVjdGVkIHRvIGJlIGNh
bGxlZCBvbmNlLCBidXQgaGFzIDIgV2lsbE9uY2UoKXMuIiwKLSAgICAgIG91dHB1dCk7ICAvLyAj
MwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAotICAgICAgSXNTdWJzdHJpbmcsCi0gICAgICAiVG9v
IG1hbnkgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwgRG9CKCkpLi4uXG4iCi0g
ICAgICAiRXhwZWN0ZWQgdG8gYmUgbmV2ZXIgY2FsbGVkLCBidXQgaGFzIDAgV2lsbE9uY2UoKXMg
IgotICAgICAgImFuZCBhIFdpbGxSZXBlYXRlZGx5KCkuIiwKLSAgICAgIG91dHB1dCk7ICAvLyAj
NAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAotICAgICAgSXNTdWJzdHJpbmcsCi0gICAgICAiVG9v
IG1hbnkgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwoYiwgRG9CKDIpKS4uLlxuIgot
ICAgICAgIkV4cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNlLCBidXQgaGFzIDEgV2lsbE9uY2UoKSAi
Ci0gICAgICAiYW5kIGEgV2lsbFJlcGVhdGVkbHkoKS4iLAotICAgICAgb3V0cHV0KTsgIC8vICM1
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIE1vY2sgd2FybnMgb24gaGF2aW5nIHRvbyBmZXcg
YWN0aW9ucyBpbiBhbgotLy8gZXhwZWN0YXRpb24gY29tcGFyZWQgdG8gaXRzIGNhcmRpbmFsaXR5
LgotVEVTVChFeHBlY3RDYWxsU3ludGF4VGVzdCwgV2FybnNPblRvb0Zld0FjdGlvbnMpIHsKLSAg
TW9ja0IgYjsKLQotICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5UaW1lcyhCZXR3ZWVu
KDIsIDMpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0KLSAgQ2FwdHVyZVN0ZG91dCgp
OwotICBiLkRvQigpOwotICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0dXJlZFN0
ZG91dCgpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKAotICAgICAgSXNTdWJzdHJpbmcsCi0gICAg
ICAiVG9vIGZldyBhY3Rpb25zIHNwZWNpZmllZCBpbiBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkuLi5c
biIKLSAgICAgICJFeHBlY3RlZCB0byBiZSBjYWxsZWQgYmV0d2VlbiAyIGFuZCAzIHRpbWVzLCAi
Ci0gICAgICAiYnV0IGhhcyBvbmx5IDEgV2lsbE9uY2UoKS4iLAotICAgICAgb3V0cHV0KTsKLSAg
Yi5Eb0IoKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0K
LS8vIFRlc3RzIHRoZSBzZW1hbnRpY3Mgb2YgT05fQ0FMTCgpLgotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBidWlsdC1pbiBkZWZhdWx0IGFjdGlvbiBpcyB0YWtlbiB3aGVuIG5vIE9OX0NBTEwoKQotLy8g
aXMgc3BlY2lmaWVkLgotVEVTVChPbkNhbGxUZXN0LCBUYWtlc0J1aWx0SW5EZWZhdWx0QWN0aW9u
V2hlbk5vT25DYWxsKSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKTsKLQot
ICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGJ1aWx0LWlu
IGRlZmF1bHQgYWN0aW9uIGlzIHRha2VuIHdoZW4gbm8gT05fQ0FMTCgpCi0vLyBtYXRjaGVzIHRo
ZSBpbnZvY2F0aW9uLgotVEVTVChPbkNhbGxUZXN0LCBUYWtlc0J1aWx0SW5EZWZhdWx0QWN0aW9u
V2hlbk5vT25DYWxsTWF0Y2hlcykgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigxKSkK
LSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQihf
KSk7Ci0KLSAgRVhQRUNUX0VRKDAsIGIuRG9CKDIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUg
bGFzdCBtYXRjaGluZyBPTl9DQUxMKCkgYWN0aW9uIGlzIHRha2VuLgotVEVTVChPbkNhbGxUZXN0
LCBQaWNrc0xhc3RNYXRjaGluZ09uQ2FsbCkgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERv
QihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigzKSk7Ci0gIE9OX0NBTEwoYiwgRG9C
KDIpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDIpKTsKLSAgT05fQ0FMTChiLCBEb0Io
MSkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTChiLCBE
b0IoXykpOwotCi0gIEVYUEVDVF9FUSgyLCBiLkRvQigyKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBz
ZW1hbnRpY3Mgb2YgRVhQRUNUX0NBTEwoKS4KLQotLy8gVGVzdHMgdGhhdCBhbnkgY2FsbCBpcyBh
bGxvd2VkIHdoZW4gbm8gRVhQRUNUX0NBTEwoKSBpcyBzcGVjaWZpZWQuCi1URVNUKEV4cGVjdENh
bGxUZXN0LCBBbGxvd3NBbnlDYWxsV2hlbk5vU3BlYykgewotICBNb2NrQiBiOwotICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoKSk7Ci0gIC8vIFRoZXJlIGlzIG5vIGV4cGVjdGF0aW9uIG9uIERvQihpbnQp
LgotCi0gIGIuRG9CKCk7Ci0KLSAgLy8gRG9CKGludCkgY2FuIGJlIGNhbGxlZCBhbnkgbnVtYmVy
IG9mIHRpbWVzLgotICBiLkRvQigxKTsKLSAgYi5Eb0IoMik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
dGhlIGxhc3QgbWF0Y2hpbmcgRVhQRUNUX0NBTEwoKSBmaXJlcy4KLVRFU1QoRXhwZWN0Q2FsbFRl
c3QsIFBpY2tzTGFzdE1hdGNoaW5nRXhwZWN0Q2FsbCkgewotICBNb2NrQiBiOwotICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoXykpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKLSAgRVhQ
RUNUX0NBTEwoYiwgRG9CKDEpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigxKSk7Ci0K
LSAgRVhQRUNUX0VRKDEsIGIuRG9CKDEpKTsKLX0KLQotLy8gVGVzdHMgbG93ZXItYm91bmQgdmlv
bGF0aW9uLgotVEVTVChFeHBlY3RDYWxsVGVzdCwgQ2F0Y2hlc1Rvb0Zld0NhbGxzKSB7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIE1vY2tCIGI7Ci0gICAgRVhQ
RUNUX0NBTEwoYiwgRG9CKDUpKQotICAgICAgICAuVGltZXMoQXRMZWFzdCgyKSk7Ci0KLSAgICBi
LkRvQig1KTsKLSAgfSwgIkFjdHVhbCBmdW5jdGlvbiBjYWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2gg
RVhQRUNUX0NBTEwoYiwgRG9CKDUpKS4uLlxuIgotICAgICAiICAgICAgICAgRXhwZWN0ZWQ6IHRv
IGJlIGNhbGxlZCBhdCBsZWFzdCB0d2ljZVxuIgotICAgICAiICAgICAgICAgICBBY3R1YWw6IGNh
bGxlZCBvbmNlIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZSIpOwotfQotCi0vLyBUZXN0cyB0aGF0
IHRoZSBjYXJkaW5hbGl0eSBjYW4gYmUgaW5mZXJyZWQgd2hlbiBubyBUaW1lcyguLi4pIGlzCi0v
LyBzcGVjaWZpZWQuCi1URVNUKEV4cGVjdENhbGxUZXN0LCBJbmZlcnNDYXJkaW5hbGl0eVdoZW5U
aGVyZUlzTm9XaWxsUmVwZWF0ZWRseSkgewotICB7Ci0gICAgTW9ja0IgYjsKLSAgICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldp
bGxPbmNlKFJldHVybigyKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7Ci0gICAgRVhQ
RUNUX0VRKDIsIGIuRG9CKCkpOwotICB9Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgTW9ja0IgYjsKLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAg
ICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0K
LSAgICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7Ci0gIH0sICJ0byBiZSBjYWxsZWQgdHdpY2UiKTsK
LQotICB7ICAvLyBOT0xJTlQKLSAgICBNb2NrQiBiOwotICAgIEVYUEVDVF9DQUxMKGIsIERvQigp
KQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKDEpKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJu
KDIpKTsKLQotICAgIEVYUEVDVF9FUSgxLCBiLkRvQigpKTsKLSAgICBFWFBFQ1RfRVEoMiwgYi5E
b0IoKSk7Ci0gICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYi5Eb0IoKSwgInRvIGJlIGNhbGxl
ZCB0d2ljZSIpOwotICB9Ci19Ci0KLVRFU1QoRXhwZWN0Q2FsbFRlc3QsIEluZmVyc0NhcmRpbmFs
aXR5MVdoZW5UaGVyZUlzV2lsbFJlcGVhdGVkbHkpIHsKLSAgewotICAgIE1vY2tCIGI7Ci0gICAg
RVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAg
ICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotCi0gICAgRVhQRUNUX0VRKDEsIGIuRG9C
KCkpOwotICB9Ci0KLSAgeyAgLy8gTk9MSU5UCi0gICAgTW9ja0IgYjsKLSAgICBFWFBFQ1RfQ0FM
TChiLCBEb0IoKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgICAgLldpbGxS
ZXBlYXRlZGx5KFJldHVybigyKSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7Ci0gICAg
RVhQRUNUX0VRKDIsIGIuRG9CKCkpOwotICAgIEVYUEVDVF9FUSgyLCBiLkRvQigpKTsKLSAgfQot
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIE1vY2tCIGI7Ci0g
ICAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0g
ICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oMikpOwotICB9LCAidG8gYmUgY2FsbGVkIGF0
IGxlYXN0IG9uY2UiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgbi10aCBhY3Rpb24gaXMgdGFr
ZW4gZm9yIHRoZSBuLXRoIG1hdGNoaW5nCi0vLyBpbnZvY2F0aW9uLgotVEVTVChFeHBlY3RDYWxs
VGVzdCwgTnRoTWF0Y2hUYWtlc050aEFjdGlvbikgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FM
TChiLCBEb0IoKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkpCi0gICAgICAuV2lsbE9uY2Uo
UmV0dXJuKDIpKQotICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7Ci0KLSAgRVhQRUNUX0VRKDEs
IGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgzLCBiLkRv
QigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgV2lsbFJlcGVhdGVkbHkoKSBhY3Rpb24gaXMg
dGFrZW4gd2hlbiB0aGUgV2lsbE9uY2UoLi4uKQotLy8gbGlzdCBpcyBleGhhdXN0ZWQuCi1URVNU
KEV4cGVjdENhbGxUZXN0LCBUYWtlc1JlcGVhdGVkQWN0aW9uV2hlbldpbGxMaXN0SXNFeGhhdXN0
ZWQpIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDEpKQotICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0KLSAgRVhQ
RUNUX0VRKDEsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMiwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9F
USgyLCBiLkRvQigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQot
Ly8gVGVzdHMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgdGFrZW4gd2hlbiB0aGUgV2lsbE9u
Y2UoLi4uKSBsaXN0IGlzCi0vLyBleGhhdXN0ZWQgYW5kIHRoZXJlIGlzIG5vIFdpbGxSZXBlYXRl
ZGx5KCkuCi1URVNUKEV4cGVjdENhbGxUZXN0LCBUYWtlc0RlZmF1bHRBY3Rpb25XaGVuV2lsbExp
c3RJc0V4aGF1c3RlZCkgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoXykpCi0g
ICAgICAuVGltZXMoMSk7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLlRpbWVzKEFu
eU51bWJlcigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSkKLSAgICAgIC5XaWxsT25jZShS
ZXR1cm4oMikpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKDEp
KTsgIC8vIFNob3VsZG4ndCBnZW5lcmF0ZSBhIHdhcm5pbmcgYXMgdGhlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBleHBlY3RhdGlvbiBoYXMgbm8gYWN0aW9uIGNsYXVzZSBhdCBhbGwu
Ci0gIEVYUEVDVF9FUSgxLCBiLkRvQigpKTsKLSAgRVhQRUNUX0VRKDIsIGIuRG9CKCkpOwotICBj
b25zdCBzdGQ6OnN0cmluZyBvdXRwdXQxID0gR2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSAgRVhQRUNU
X1NUUkVRKCIiLCBvdXRwdXQxLmNfc3RyKCkpOwotCi0gIENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQ
RUNUX0VRKDAsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIGNvbnN0IHN0
ZDo6c3RyaW5nIG91dHB1dDIgPSBHZXRDYXB0dXJlZFN0ZG91dCgpOwotICBFWFBFQ1RfVEhBVChv
dXRwdXQyLmNfc3RyKCksCi0gICAgICAgICAgICAgIEhhc1N1YnN0cigiQWN0aW9ucyByYW4gb3V0
IGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
IkNhbGxlZCAzIHRpbWVzLCBidXQgb25seSAyIFdpbGxPbmNlKClzIGFyZSBzcGVjaWZpZWQiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAiIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuIikpOwot
ICBFWFBFQ1RfVEhBVChvdXRwdXQyLmNfc3RyKCksCi0gICAgICAgICAgICAgIEhhc1N1YnN0cigi
QWN0aW9ucyByYW4gb3V0IGluIEVYUEVDVF9DQUxMKGIsIERvQigpKS4uLlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbGxlZCA0IHRpbWVzLCBidXQgb25seSAyIFdpbGxPbmNlKClzIGFy
ZSBzcGVjaWZpZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIC0gcmV0dXJuaW5nIGRlZmF1
bHQgdmFsdWUuIikpOwotfQotCi1URVNUKEZ1bmN0aW9uTW9ja2VyTWVzc2FnZVRlc3QsIFJlcG9y
dHNFeHBlY3RDYWxsTG9jYXRpb25Gb3JFeGhhdXNlZEFjdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAg
c3RkOjpzdHJpbmcgZXhwZWN0X2NhbGxfbG9jYXRpb24gPSBGb3JtYXRGaWxlTG9jYXRpb24oX19G
SUxFX18sIF9fTElORV9fICsgMSk7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKS5UaW1lcyhBbnlO
dW1iZXIoKSkuV2lsbE9uY2UoUmV0dXJuKDEpKTsKLQotICBFWFBFQ1RfRVEoMSwgYi5Eb0IoKSk7
Ci0KLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0gIC8vIFRoZSB3YXJu
aW5nIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gdGhlIGNhbGwgbG9jYXRpb24uCi0gIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsIGV4cGVjdF9jYWxsX2xvY2F0aW9uLCBvdXRwdXQpOwot
fQotCi1URVNUKEZ1bmN0aW9uTW9ja2VyTWVzc2FnZVRlc3QsCi0gICAgIFJlcG9ydHNEZWZhdWx0
QWN0aW9uTG9jYXRpb25PZlVuaW50ZXJlc3RpbmdDYWxsc0Zvck5hZ2d5TW9jaykgewotICBzdGQ6
OnN0cmluZyBvbl9jYWxsX2xvY2F0aW9uOwotICBDYXB0dXJlU3Rkb3V0KCk7Ci0gIHsKLSAgICBO
YWdneU1vY2s8TW9ja0I+IGI7Ci0gICAgb25fY2FsbF9sb2NhdGlvbiA9IEZvcm1hdEZpbGVMb2Nh
dGlvbihfX0ZJTEVfXywgX19MSU5FX18gKyAxKTsKLSAgICBPTl9DQUxMKGIsIERvQihfKSkuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oMCkpOwotICAgIGIuRG9CKDApOwotICB9Ci0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIoSXNTdWJzdHJpbmcsIG9uX2NhbGxfbG9jYXRpb24sIEdldENhcHR1cmVkU3Rkb3V0
KCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLQotLy8g
VGVzdHMgdGhhdCBhbiB1bmludGVyZXN0aW5nIGNhbGwgcGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0
aW9uLgotVEVTVChVbmludGVyZXN0aW5nQ2FsbFRlc3QsIERvZXNEZWZhdWx0QWN0aW9uKSB7Ci0g
IC8vIFdoZW4gdGhlcmUgaXMgYW4gT05fQ0FMTCgpIHN0YXRlbWVudCwgdGhlIGFjdGlvbiBzcGVj
aWZpZWQgYnkgaXQKLSAgLy8gc2hvdWxkIGJlIHRha2VuLgotICBNb2NrQSBhOwotICBPTl9DQUxM
KGEsIEJpbmFyeShfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7Ci0g
IEVYUEVDVF9UUlVFKGEuQmluYXJ5KDEsIDIpKTsKLQotICAvLyBXaGVuIHRoZXJlIGlzIG5vIE9O
X0NBTEwoKSwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSByZXR1cm4gdHlwZQotICAvLyBzaG91
bGQgYmUgcmV0dXJuZWQuCi0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCBhbiB1bmV4cGVjdGVkIGNhbGwgcGVyZm9ybXMgdGhlIGRlZmF1bHQg
YWN0aW9uLgotVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIERvZXNEZWZhdWx0QWN0aW9uKSB7Ci0g
IC8vIFdoZW4gdGhlcmUgaXMgYW4gT05fQ0FMTCgpIHN0YXRlbWVudCwgdGhlIGFjdGlvbiBzcGVj
aWZpZWQgYnkgaXQKLSAgLy8gc2hvdWxkIGJlIHRha2VuLgotICBNb2NrQSBhOwotICBPTl9DQUxM
KGEsIEJpbmFyeShfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7Ci0g
IEVYUEVDVF9DQUxMKGEsIEJpbmFyeSgwLCAwKSk7Ci0gIGEuQmluYXJ5KDAsIDApOwotICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShyZXN1bHQgPSBhLkJp
bmFyeSgxLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIik7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdCk7Ci0KLSAgLy8gV2hlbiB0aGVy
ZSBpcyBubyBPTl9DQUxMKCksIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcmV0dXJuIHR5cGUK
LSAgLy8gc2hvdWxkIGJlIHJldHVybmVkLgotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBE
b0IoMCkpCi0gICAgICAuVGltZXMoMCk7Ci0gIGludCBuID0gLTE7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKG4gPSBiLkRvQigxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhw
ZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0gIEVYUEVDVF9FUSgwLCBuKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCB3aGVuIGFuIHVuZXhwZWN0ZWQgdm9pZCBmdW5jdGlvbiBnZW5lcmF0ZXMgdGhl
IHJpZ2h0Ci0vLyBmYWlsdXJlIG1lc3NhZ2UuCi1URVNUKFVuZXhwZWN0ZWRDYWxsVGVzdCwgR2Vu
ZXJhdGVzRmFpbHVyZUZvclZvaWRGdW5jdGlvbikgewotICAvLyBGaXJzdCwgdGVzdHMgdGhlIG1l
c3NhZ2Ugd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBFWFBFQ1RfQ0FMTCgpLgotICBNb2NrQSBhMTsK
LSAgRVhQRUNUX0NBTEwoYTEsIERvQSgxKSk7Ci0gIGExLkRvQSgxKTsKLSAgLy8gSWRlYWxseSB3
ZSBzaG91bGQgbWF0Y2ggdGhlIGZhaWx1cmUgbWVzc2FnZSBhZ2FpbnN0IGEgcmVnZXgsIGJ1dAot
ICAvLyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgc28gd2Ug
dGVzdCBmb3IKLSAgLy8gbXVsdGlwbGUgc3ViLXN0cmluZ3MgaW5zdGVhZC4KLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoCi0gICAgICBhMS5Eb0EoOSksCi0gICAgICAiVW5leHBlY3RlZCBtb2Nr
IGZ1bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGlyZWN0bHkuXG4iCi0gICAgICAiICAgIEZ1bmN0
aW9uIGNhbGw6IERvQSg5KVxuIgotICAgICAgIkdvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dp
bmcgMSBleHBlY3RhdGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoiKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoCi0gICAgICBhMS5Eb0EoOSksCi0gICAgICAiICBFeHBlY3RlZCBhcmcgIzA6
IGlzIGVxdWFsIHRvIDFcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogOVxuIgotICAgICAg
IiAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZVxuIgotICAgICAgIiAgICAgICAg
ICAgQWN0dWFsOiBjYWxsZWQgb25jZSAtIHNhdHVyYXRlZCBhbmQgYWN0aXZlIik7Ci0KLSAgLy8g
TmV4dCwgdGVzdHMgdGhlIG1lc3NhZ2Ugd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBFWFBF
Q1RfQ0FMTCgpLgotICBNb2NrQSBhMjsKLSAgRVhQRUNUX0NBTEwoYTIsIERvQSgxKSk7Ci0gIEVY
UEVDVF9DQUxMKGEyLCBEb0EoMykpOwotICBhMi5Eb0EoMSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAotICAgICAgYTIuRG9BKDIpLAotICAgICAgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlv
biBjYWxsIC0gcmV0dXJuaW5nIGRpcmVjdGx5LlxuIgotICAgICAgIiAgICBGdW5jdGlvbiBjYWxs
OiBEb0EoMilcbiIKLSAgICAgICJHb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDIgZXhw
ZWN0YXRpb25zLCBidXQgbm9uZSBtYXRjaGVkOiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKLSAgICAgIGEyLkRvQSgyKSwKLSAgICAgICJ0cmllZCBleHBlY3RhdGlvbiAjMDogRVhQRUNU
X0NBTEwoYTIsIERvQSgxKSkuLi5cbiIKLSAgICAgICIgIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1
YWwgdG8gMVxuIgotICAgICAgIiAgICAgICAgICAgQWN0dWFsOiAyXG4iCi0gICAgICAiICAgICAg
ICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlXG4iCi0gICAgICAiICAgICAgICAgICBBY3R1
YWw6IGNhbGxlZCBvbmNlIC0gc2F0dXJhdGVkIGFuZCBhY3RpdmUiKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoCi0gICAgICBhMi5Eb0EoMiksCi0gICAgICAidHJpZWQgZXhwZWN0YXRpb24g
IzE6IEVYUEVDVF9DQUxMKGEyLCBEb0EoMykpLi4uXG4iCi0gICAgICAiICBFeHBlY3RlZCBhcmcg
IzA6IGlzIGVxdWFsIHRvIDNcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIgotICAg
ICAgIiAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZVxuIgotICAgICAgIiAgICAg
ICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlIik7Ci0g
IGEyLkRvQSgzKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhbiB1bmV4cGVjdGVkIG5vbi12b2lkIGZ1
bmN0aW9uIGdlbmVyYXRlcyB0aGUgcmlnaHQKLS8vIGZhaWx1cmUgbWVzc2FnZS4KLVRFU1QoVW5l
eHBlY3RlZENhbGxUZXN0LCBHZW5lYXJ0ZXNGYWlsdXJlRm9yTm9uVm9pZEZ1bmN0aW9uKSB7Ci0g
IE1vY2tCIGIxOwotICBFWFBFQ1RfQ0FMTChiMSwgRG9CKDEpKTsKLSAgYjEuRG9CKDEpOwotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIGIxLkRvQigyKSwKLSAgICAgICJVbmV4cGVj
dGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLlxuIgotICAg
ICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0IoMilcbiIKLSAgICAgICIgICAgICAgICAgUmV0dXJu
czogMFxuIgotICAgICAgIkdvb2dsZSBNb2NrIHRyaWVkIHRoZSBmb2xsb3dpbmcgMSBleHBlY3Rh
dGlvbiwgYnV0IGl0IGRpZG4ndCBtYXRjaDoiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBiMS5Eb0IoMiksCi0gICAgICAiICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRv
IDFcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxuIgotICAgICAgIiAgICAgICAgIEV4
cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZVxuIgotICAgICAgIiAgICAgICAgICAgQWN0dWFsOiBj
YWxsZWQgb25jZSAtIHNhdHVyYXRlZCBhbmQgYWN0aXZlIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
R29vZ2xlIE1vY2sgZXhwbGFpbnMgdGhhdCBhbiByZXRpcmVkIGV4cGVjdGF0aW9uIGRvZXNuJ3QK
LS8vIG1hdGNoIHRoZSBjYWxsLgotVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIFJldGlyZWRFeHBl
Y3RhdGlvbikgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoMSkpCi0gICAgICAu
UmV0aXJlc09uU2F0dXJhdGlvbigpOwotCi0gIGIuRG9CKDEpOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSgKLSAgICAgIGIuRG9CKDEpLAotICAgICAgIiAgICAgICAgIEV4cGVjdGVkOiB0aGUg
ZXhwZWN0YXRpb24gaXMgYWN0aXZlXG4iCi0gICAgICAiICAgICAgICAgICBBY3R1YWw6IGl0IGlz
IHJldGlyZWQiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBHb29nbGUgTW9jayBleHBsYWlucyB0aGF0
IGFuIGV4cGVjdGF0aW9uIHRoYXQgZG9lc24ndAotLy8gbWF0Y2ggdGhlIGFyZ3VtZW50cyBkb2Vz
bid0IG1hdGNoIHRoZSBjYWxsLgotVEVTVChVbmV4cGVjdGVkQ2FsbFRlc3QsIFVubWF0Y2hlZEFy
Z3VtZW50cykgewotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoMSkpOwotCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgYi5Eb0IoMiksCi0gICAgICAiICBFeHBlY3Rl
ZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDFcbiIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogMlxu
Iik7Ci0gIGIuRG9CKDEpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBNb2NrIGV4cGxhaW5z
IHRoYXQgYW4gZXhwZWN0YXRpb24gd2l0aAotLy8gdW5zYXRpc2ZpZWQgcHJlLXJlcXVpc2l0ZXMg
ZG9lc24ndCBtYXRjaCB0aGUgY2FsbC4KLVRFU1QoVW5leHBlY3RlZENhbGxUZXN0LCBVbnNhdGlz
aWZpZWRQcmVyZXF1aXNpdGVzKSB7Ci0gIFNlcXVlbmNlIHMxLCBzMjsKLSAgTW9ja0IgYjsKLSAg
RVhQRUNUX0NBTEwoYiwgRG9CKDEpKQotICAgICAgLkluU2VxdWVuY2UoczEpOwotICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoMikpCi0gICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAuSW5TZXF1
ZW5jZShzMSk7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigzKSkKLSAgICAgIC5JblNlcXVlbmNlKHMy
KTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDQpKQotICAgICAgLkluU2VxdWVuY2UoczEsIHMyKTsK
LQotICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXkgZmFpbHVyZXM7Ci0gIHsKLSAgICA6
OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJlcG9ydGVyKCZmYWls
dXJlcyk7Ci0gICAgYi5Eb0IoNCk7Ci0gICAgLy8gTm93ICdmYWlsdXJlcycgY29udGFpbnMgdGhl
IEdvb2dsZSBUZXN0IGZhaWx1cmVzIGdlbmVyYXRlZCBieQotICAgIC8vIHRoZSBhYm92ZSBzdGF0
ZW1lbnQuCi0gIH0KLQotICAvLyBUaGVyZSBzaG91bGQgYmUgb25lIG5vbi1mYXRhbCBmYWlsdXJl
LgotICBBU1NFUlRfRVEoMSwgZmFpbHVyZXMuc2l6ZSgpKTsKLSAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0UGFydFJlc3VsdCYgciA9IGZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApOwotICBFWFBF
Q1RfRVEoOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgci50eXBl
KCkpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0
aGUgdHdvIHVuc2F0aXNmaWVkCi0gIC8vIHByZS1yZXF1aXNpdGVzIGJ1dCBub3QgdGhlIHNhdGlz
ZmllZCBvbmUuCi0jaWYgR1RFU1RfVVNFU19QQ1JFCi0gIEVYUEVDVF9USEFUKHIubWVzc2FnZSgp
LCBDb250YWluc1JlZ2V4KAotICAgICAgLy8gUENSRSBoYXMgdHJvdWJsZSB1c2luZyAoLnxcbikg
dG8gbWF0Y2ggYW55IGNoYXJhY3RlciwgYnV0Ci0gICAgICAvLyBzdXBwb3J0cyB0aGUgKD9zKSBw
cmVmaXggZm9yIHVzaW5nIC4gdG8gbWF0Y2ggYW55IGNoYXJhY3Rlci4KLSAgICAgICIoP3MpdGhl
IGZvbGxvd2luZyBpbW1lZGlhdGUgcHJlLXJlcXVpc2l0ZXMgYXJlIG5vdCBzYXRpc2ZpZWQ6XG4i
Ci0gICAgICAiLio6IHByZS1yZXF1aXNpdGUgIzBcbiIKLSAgICAgICIuKjogcHJlLXJlcXVpc2l0
ZSAjMSIpKTsKLSNlbGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKLSAgRVhQRUNUX1RIQVQoci5tZXNz
YWdlKCksIENvbnRhaW5zUmVnZXgoCi0gICAgICAvLyBQT1NJWCBSRSBkb2Vzbid0IHVuZGVyc3Rh
bmQgdGhlICg/cykgcHJlZml4LCBidXQgaGFzIG5vIHRyb3VibGUKLSAgICAgIC8vIHdpdGggKC58
XG4pLgotICAgICAgInRoZSBmb2xsb3dpbmcgaW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIGFyZSBu
b3Qgc2F0aXNmaWVkOlxuIgotICAgICAgIigufFxuKSo6IHByZS1yZXF1aXNpdGUgIzBcbiIKLSAg
ICAgICIoLnxcbikqOiBwcmUtcmVxdWlzaXRlICMxIikpOwotI2Vsc2UKLSAgLy8gV2UgY2FuIG9u
bHkgdXNlIEdvb2dsZSBUZXN0J3Mgb3duIHNpbXBsZSByZWdleC4KLSAgRVhQRUNUX1RIQVQoci5t
ZXNzYWdlKCksIENvbnRhaW5zUmVnZXgoCi0gICAgICAidGhlIGZvbGxvd2luZyBpbW1lZGlhdGUg
cHJlLXJlcXVpc2l0ZXMgYXJlIG5vdCBzYXRpc2ZpZWQ6IikpOwotICBFWFBFQ1RfVEhBVChyLm1l
c3NhZ2UoKSwgQ29udGFpbnNSZWdleCgiOiBwcmUtcmVxdWlzaXRlICMwIikpOwotICBFWFBFQ1Rf
VEhBVChyLm1lc3NhZ2UoKSwgQ29udGFpbnNSZWdleCgiOiBwcmUtcmVxdWlzaXRlICMxIikpOwot
I2VuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKLQotICBiLkRvQigxKTsKLSAgYi5Eb0IoMyk7Ci0g
IGIuRG9CKDQpOwotfQotCi1URVNUKFVuZGVmaW5lZFJldHVyblZhbHVlVGVzdCwKLSAgICAgUmV0
dXJuVmFsdWVJc01hbmRhdG9yeVdoZW5Ob3REZWZhdWx0Q29uc3RydWN0aWJsZSkgewotICBNb2Nr
QSBhOwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogV2Ugc2hvdWxkIHJlYWxseSB2ZXJpZnkg
dGhlIG91dHB1dCBtZXNzYWdlLAotICAvLyBidXQgd2UgY2Fubm90IHlldCBkdWUgdG8gdGhhdCBF
WFBFQ1RfREVBVEggb25seSBjYXB0dXJlcyBzdGRlcnIKLSAgLy8gd2hpbGUgR29vZ2xlIE1vY2sg
bG9ncyB0byBzdGRvdXQuCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLSAgRVhQRUNUX0FOWV9U
SFJPVyhhLlJldHVybk5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKCkpOwotI2Vsc2UKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChhLlJldHVybk5vbkRlZmF1bHRDb25zdHJ1Y3RpYmxlKCksICIi
KTsKLSNlbmRpZgotfQotCi0vLyBUZXN0cyB0aGF0IGFuIGV4Y2Vzc2l2ZSBjYWxsIChvbmUgd2hv
c2UgYXJndW1lbnRzIG1hdGNoIHRoZQotLy8gbWF0Y2hlcnMgYnV0IGlzIGNhbGxlZCB0b28gbWFu
eSB0aW1lcykgcGVyZm9ybXMgdGhlIGRlZmF1bHQgYWN0aW9uLgotVEVTVChFeGNlc3NpdmVDYWxs
VGVzdCwgRG9lc0RlZmF1bHRBY3Rpb24pIHsKLSAgLy8gV2hlbiB0aGVyZSBpcyBhbiBPTl9DQUxM
KCkgc3RhdGVtZW50LCB0aGUgYWN0aW9uIHNwZWNpZmllZCBieSBpdAotICAvLyBzaG91bGQgYmUg
dGFrZW4uCi0gIE1vY2tBIGE7Ci0gIE9OX0NBTEwoYSwgQmluYXJ5KF8sIF8pKQotICAgICAgLldp
bGxCeURlZmF1bHQoUmV0dXJuKHRydWUpKTsKLSAgRVhQRUNUX0NBTEwoYSwgQmluYXJ5KDAsIDAp
KTsKLSAgYS5CaW5hcnkoMCwgMCk7Ci0gIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gIEVYUEVDVF9O
T05GQVRBTF9GQUlMVVJFKHJlc3VsdCA9IGEuQmluYXJ5KDAsIDApLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4cGVjdGVk
Iik7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdCk7Ci0KLSAgLy8gV2hlbiB0aGVyZSBpcyBubyBPTl9D
QUxMKCksIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcmV0dXJuIHR5cGUKLSAgLy8gc2hvdWxk
IGJlIHJldHVybmVkLgotICBNb2NrQiBiOwotICBFWFBFQ1RfQ0FMTChiLCBEb0IoMCkpCi0gICAg
ICAuVGltZXMoMCk7Ci0gIGludCBuID0gLTE7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKG4g
PSBiLkRvQigwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vY2sgZnVuY3Rpb24gY2Fs
bGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCIpOwotICBFWFBFQ1RfRVEoMCwgbik7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgd2hlbiBhIHZvaWQgZnVuY3Rpb24gaXMgY2FsbGVkIHRvbyBtYW55IHRp
bWVzLAotLy8gdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUgYXJndW1lbnQgdmFsdWVz
LgotVEVTVChFeGNlc3NpdmVDYWxsVGVzdCwgR2VuZXJhdGVzRmFpbHVyZUZvclZvaWRGdW5jdGlv
bikgewotICBNb2NrQSBhOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoXykpCi0gICAgICAuVGltZXMo
MCk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgYS5Eb0EoOSksCi0gICAgICAi
TW9jayBmdW5jdGlvbiBjYWxsZWQgbW9yZSB0aW1lcyB0aGFuIGV4cGVjdGVkIC0gcmV0dXJuaW5n
IGRpcmVjdGx5LlxuIgotICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBEb0EoOSlcbiIKLSAgICAg
ICIgICAgICAgICBFeHBlY3RlZDogdG8gYmUgbmV2ZXIgY2FsbGVkXG4iCi0gICAgICAiICAgICAg
ICAgICBBY3R1YWw6IGNhbGxlZCBvbmNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZSIpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gYSBub24tdm9pZCBmdW5jdGlvbiBpcyBjYWxsZWQgdG9v
IG1hbnkgdGltZXMsIHRoZQotLy8gZmFpbHVyZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBhcmd1bWVu
dCB2YWx1ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUuCi1URVNUKEV4Y2Vzc2l2ZUNhbGxUZXN0LCBH
ZW5lcmF0ZXNGYWlsdXJlRm9yTm9uVm9pZEZ1bmN0aW9uKSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVD
VF9DQUxMKGIsIERvQihfKSk7Ci0gIGIuRG9CKDEpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RSgKLSAgICAgIGIuRG9CKDIpLAotICAgICAgIk1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUgdGlt
ZXMgdGhhbiBleHBlY3RlZCAtICIKLSAgICAgICJyZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZS5cbiIK
LSAgICAgICIgICAgRnVuY3Rpb24gY2FsbDogRG9CKDIpXG4iCi0gICAgICAiICAgICAgICAgIFJl
dHVybnM6IDBcbiIKLSAgICAgICIgICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2Vc
biIKLSAgICAgICIgICAgICAgICAgIEFjdHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0
ZWQgYW5kIGFjdGl2ZSIpOwotfQotCi0vLyBUZXN0cyB1c2luZyBzZXF1ZW5jZXMuCi0KLVRFU1Qo
SW5TZXF1ZW5jZVRlc3QsIEFsbEV4cGVjdGF0aW9uSW5TY29wZUFyZUluU2VxdWVuY2UpIHsKLSAg
TW9ja0EgYTsKLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChh
LCBEb0EoMSkpOwotICAgIEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7Ci0gIH0KLQotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBhLkRvQSgyKTsKLSAgfSwgIlVuZXhw
ZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDIpOwot
fQotCi1URVNUKEluU2VxdWVuY2VUZXN0LCBOZXN0ZWRJblNlcXVlbmNlKSB7Ci0gIE1vY2tBIGE7
Ci0gIHsKLSAgICBJblNlcXVlbmNlIGR1bW15OwotCi0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEp
KTsKLSAgICB7Ci0gICAgICBJblNlcXVlbmNlIGR1bW15MjsKLQotICAgICAgRVhQRUNUX0NBTEwo
YSwgRG9BKDIpKTsKLSAgICAgIEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7Ci0gICAgfQotICB9Ci0K
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYS5Eb0EoMSk7Ci0g
ICAgYS5Eb0EoMyk7Ci0gIH0sICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0g
IGEuRG9BKDIpOwotICBhLkRvQSgzKTsKLX0KLQotVEVTVChJblNlcXVlbmNlVGVzdCwgRXhwZWN0
YXRpb25zT3V0T2ZTY29wZUFyZU5vdEFmZmVjdGVkKSB7Ci0gIE1vY2tBIGE7Ci0gIHsKLSAgICBJ
blNlcXVlbmNlIGR1bW15OwotCi0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgICBFWFBF
Q1RfQ0FMTChhLCBEb0EoMikpOwotICB9Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7Ci0KLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgYS5Eb0EoMik7Ci0gIH0s
ICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0gIGEuRG9BKDMpOwotICBhLkRv
QSgxKTsKLSAgYS5Eb0EoMik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW55IG9yZGVyIGlzIGFsbG93
ZWQgd2hlbiBubyBzZXF1ZW5jZSBpcyB1c2VkLgotVEVTVChTZXF1ZW5jZVRlc3QsIEFueU9yZGVy
SXNPa0J5RGVmYXVsdCkgewotICB7Ci0gICAgTW9ja0EgYTsKLSAgICBNb2NrQiBiOwotCi0gICAg
RVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgICBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAg
ICAgLlRpbWVzKEFueU51bWJlcigpKTsKLQotICAgIGEuRG9BKDEpOwotICAgIGIuRG9CKCk7Ci0g
IH0KLQotICB7ICAvLyBOT0xJTlQKLSAgICBNb2NrQSBhOwotICAgIE1vY2tCIGI7Ci0KLSAgICBF
WFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICAgIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAg
ICAuVGltZXMoQW55TnVtYmVyKCkpOwotCi0gICAgYi5Eb0IoKTsKLSAgICBhLkRvQSgxKTsKLSAg
fQotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBjYWxscyBtdXN0IGJlIGluIHN0cmljdCBvcmRlciB3
aGVuIGEgY29tcGxldGUgb3JkZXIKLS8vIGlzIHNwZWNpZmllZC4KLVRFU1QoU2VxdWVuY2VUZXN0
LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVuU2FpZFNvMSkgewotICBNb2NrQSBhOwotICBP
Tl9DQUxMKGEsIFJldHVyblJlc3VsdChfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybihS
ZXN1bHQoKSkpOwotCi0gIFNlcXVlbmNlIHM7Ci0gIEVYUEVDVF9DQUxMKGEsIFJldHVyblJlc3Vs
dCgxKSkKLSAgICAgIC5JblNlcXVlbmNlKHMpOwotICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5SZXN1
bHQoMikpCi0gICAgICAuSW5TZXF1ZW5jZShzKTsKLSAgRVhQRUNUX0NBTEwoYSwgUmV0dXJuUmVz
dWx0KDMpKQotICAgICAgLkluU2VxdWVuY2Uocyk7Ci0KLSAgYS5SZXR1cm5SZXN1bHQoMSk7Ci0K
LSAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEuUmV0dXJuUmVzdWx0KDIpLgotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShhLlJldHVyblJlc3VsdCgzKSwgIlVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5SZXR1cm5SZXN1bHQoMik7Ci0gIGEuUmV0dXJuUmVzdWx0
KDMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBjYWxscyBtdXN0IGJlIGluIHN0cmljdCBvcmRl
ciB3aGVuIGEgY29tcGxldGUgb3JkZXIKLS8vIGlzIHNwZWNpZmllZC4KLVRFU1QoU2VxdWVuY2VU
ZXN0LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVuU2FpZFNvMikgewotICBNb2NrQSBhOwot
ICBPTl9DQUxMKGEsIFJldHVyblJlc3VsdChfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVy
bihSZXN1bHQoKSkpOwotCi0gIFNlcXVlbmNlIHM7Ci0gIEVYUEVDVF9DQUxMKGEsIFJldHVyblJl
c3VsdCgxKSkKLSAgICAgIC5JblNlcXVlbmNlKHMpOwotICBFWFBFQ1RfQ0FMTChhLCBSZXR1cm5S
ZXN1bHQoMikpCi0gICAgICAuSW5TZXF1ZW5jZShzKTsKLQotICAvLyBNYXkgb25seSBiZSBjYWxs
ZWQgYWZ0ZXIgYS5SZXR1cm5SZXN1bHQoMSkuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGEu
UmV0dXJuUmVzdWx0KDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLQotICBh
LlJldHVyblJlc3VsdCgxKTsKLSAgYS5SZXR1cm5SZXN1bHQoMik7Ci19Ci0KLS8vIFRlc3RzIHNw
ZWNpZnlpbmcgYSBEQUcgdXNpbmcgbXVsdGlwbGUgc2VxdWVuY2VzLgotY2xhc3MgUGFydGlhbE9y
ZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFBhcnRpYWxP
cmRlclRlc3QoKSB7Ci0gICAgT05fQ0FMTChhXywgUmV0dXJuUmVzdWx0KF8pKQotICAgICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oUmVzdWx0KCkpKTsKLQotICAgIC8vIFNwZWNpZmllcyB0aGlz
IHBhcnRpYWwgb3JkZXJpbmc6Ci0gICAgLy8KLSAgICAvLyBhLlJldHVyblJlc3VsdCgxKSA9PT4K
LSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgYS5SZXR1cm5SZXN1bHQoMikgKiBuICA9PT4g
IGEuUmV0dXJuUmVzdWx0KDMpCi0gICAgLy8gYi5Eb0IoKSAqIDIgICAgICAgPT0+Ci0gICAgU2Vx
dWVuY2UgeCwgeTsKLSAgICBFWFBFQ1RfQ0FMTChhXywgUmV0dXJuUmVzdWx0KDEpKQotICAgICAg
ICAuSW5TZXF1ZW5jZSh4KTsKLSAgICBFWFBFQ1RfQ0FMTChiXywgRG9CKCkpCi0gICAgICAgIC5U
aW1lcygyKQotICAgICAgICAuSW5TZXF1ZW5jZSh5KTsKLSAgICBFWFBFQ1RfQ0FMTChhXywgUmV0
dXJuUmVzdWx0KDIpKQotICAgICAgICAuVGltZXMoQW55TnVtYmVyKCkpCi0gICAgICAgIC5JblNl
cXVlbmNlKHgsIHkpOwotICAgIEVYUEVDVF9DQUxMKGFfLCBSZXR1cm5SZXN1bHQoMykpCi0gICAg
ICAgIC5JblNlcXVlbmNlKHgpOwotICB9Ci0KLSAgTW9ja0EgYV87Ci0gIE1vY2tCIGJfOwotfTsK
LQotVEVTVF9GKFBhcnRpYWxPcmRlclRlc3QsIENhbGxzTXVzdENvbmZvcm1Ub1NwZWNpZmllZERh
ZzEpIHsKLSAgYV8uUmV0dXJuUmVzdWx0KDEpOwotICBiXy5Eb0IoKTsKLQotICAvLyBNYXkgb25s
eSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHNlY29uZCBEb0IoKS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoYV8uUmV0dXJuUmVzdWx0KDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwi
KTsKLQotICBiXy5Eb0IoKTsKLSAgYV8uUmV0dXJuUmVzdWx0KDMpOwotfQotCi1URVNUX0YoUGFy
dGlhbE9yZGVyVGVzdCwgQ2FsbHNNdXN0Q29uZm9ybVRvU3BlY2lmaWVkRGFnMikgewotICAvLyBN
YXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgUmV0dXJuUmVzdWx0KDEpLgotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShhXy5SZXR1cm5SZXN1bHQoMiksICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24g
Y2FsbCIpOwotCi0gIGFfLlJldHVyblJlc3VsdCgxKTsKLSAgYl8uRG9CKCk7Ci0gIGJfLkRvQigp
OwotICBhXy5SZXR1cm5SZXN1bHQoMyk7Ci19Ci0KLVRFU1RfRihQYXJ0aWFsT3JkZXJUZXN0LCBD
YWxsc011c3RDb25mb3JtVG9TcGVjaWZpZWREYWczKSB7Ci0gIC8vIE1heSBvbmx5IGJlIGNhbGxl
ZCBsYXN0LgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhXy5SZXR1cm5SZXN1bHQoMyksICJV
bmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0gIGFfLlJldHVyblJlc3VsdCgxKTsK
LSAgYl8uRG9CKCk7Ci0gIGJfLkRvQigpOwotICBhXy5SZXR1cm5SZXN1bHQoMyk7Ci19Ci0KLVRF
U1RfRihQYXJ0aWFsT3JkZXJUZXN0LCBDYWxsc011c3RDb25mb3JtVG9TcGVjaWZpZWREYWc0KSB7
Ci0gIGFfLlJldHVyblJlc3VsdCgxKTsKLSAgYl8uRG9CKCk7Ci0gIGJfLkRvQigpOwotICBhXy5S
ZXR1cm5SZXN1bHQoMyk7Ci0KLSAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBSZXR1cm5S
ZXN1bHQoMykuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGFfLlJldHVyblJlc3VsdCgyKSwg
IlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci19Ci0KLVRFU1QoU2VxdWVuY2VUZXN0
LCBSZXRpcmVtZW50KSB7Ci0gIE1vY2tBIGE7Ci0gIFNlcXVlbmNlIHM7Ci0KLSAgRVhQRUNUX0NB
TEwoYSwgRG9BKDEpKQotICAgICAgLkluU2VxdWVuY2Uocyk7Ci0gIEVYUEVDVF9DQUxMKGEsIERv
QShfKSkKLSAgICAgIC5JblNlcXVlbmNlKHMpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigp
OwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpCi0gICAgICAuSW5TZXF1ZW5jZShzKTsKLQotICBh
LkRvQSgxKTsKLSAgYS5Eb0EoMik7Ci0gIGEuRG9BKDEpOwotfQotCi0vLyBUZXN0cyBFeHBlY3Rh
dGlvbi4KLQotVEVTVChFeHBlY3RhdGlvblRlc3QsIENvbnN0cnV0b3JzV29yaykgewotICBNb2Nr
QSBhOwotICBFeHBlY3RhdGlvbiBlMTsgIC8vIERlZmF1bHQgY3Rvci4KLQotICAvLyBDdG9yIGZy
b20gdmFyaW91cyBmb3JtcyBvZiBFWFBFQ1RfQ0FMTC4KLSAgRXhwZWN0YXRpb24gZTIgPSBFWFBF
Q1RfQ0FMTChhLCBEb0EoMikpOwotICBFeHBlY3RhdGlvbiBlMyA9IEVYUEVDVF9DQUxMKGEsIERv
QSgzKSkuV2l0aChfKTsKLSAgewotICAgIFNlcXVlbmNlIHM7Ci0gICAgRXhwZWN0YXRpb24gZTQg
PSBFWFBFQ1RfQ0FMTChhLCBEb0EoNCkpLlRpbWVzKDEpOwotICAgIEV4cGVjdGF0aW9uIGU1ID0g
RVhQRUNUX0NBTEwoYSwgRG9BKDUpKS5JblNlcXVlbmNlKHMpOwotICB9Ci0gIEV4cGVjdGF0aW9u
IGU2ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDYpKS5BZnRlcihlMik7Ci0gIEV4cGVjdGF0aW9uIGU3
ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDcpKS5XaWxsT25jZShSZXR1cm4oKSk7Ci0gIEV4cGVjdGF0
aW9uIGU4ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDgpKS5XaWxsUmVwZWF0ZWRseShSZXR1cm4oKSk7
Ci0gIEV4cGVjdGF0aW9uIGU5ID0gRVhQRUNUX0NBTEwoYSwgRG9BKDkpKS5SZXRpcmVzT25TYXR1
cmF0aW9uKCk7Ci0KLSAgRXhwZWN0YXRpb24gZTEwID0gZTI7ICAvLyBDb3B5IGN0b3IuCi0KLSAg
RVhQRUNUX1RIQVQoZTEsIE5lKGUyKSk7Ci0gIEVYUEVDVF9USEFUKGUyLCBFcShlMTApKTsKLQot
ICBhLkRvQSgyKTsKLSAgYS5Eb0EoMyk7Ci0gIGEuRG9BKDQpOwotICBhLkRvQSg1KTsKLSAgYS5E
b0EoNik7Ci0gIGEuRG9BKDcpOwotICBhLkRvQSg4KTsKLSAgYS5Eb0EoOSk7Ci19Ci0KLVRFU1Qo
RXhwZWN0YXRpb25UZXN0LCBBc3NpZ25tZW50V29ya3MpIHsKLSAgTW9ja0EgYTsKLSAgRXhwZWN0
YXRpb24gZTE7Ci0gIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLQot
ICBFWFBFQ1RfVEhBVChlMSwgTmUoZTIpKTsKLQotICBlMSA9IGUyOwotICBFWFBFQ1RfVEhBVChl
MSwgRXEoZTIpKTsKLQotICBhLkRvQSgxKTsKLX0KLQotLy8gVGVzdHMgRXhwZWN0YXRpb25TZXQu
Ci0KLVRFU1QoRXhwZWN0YXRpb25TZXRUZXN0LCBNZW1iZXJUeXBlc0FyZUNvcnJlY3QpIHsKLSAg
Ojp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8RXhwZWN0YXRpb24sIEV4cGVjdGF0aW9uU2V0
Ojp2YWx1ZV90eXBlPigpOwotfQotCi1URVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwgQ29uc3RydWN0
b3JzV29yaykgewotICBNb2NrQSBhOwotCi0gIEV4cGVjdGF0aW9uIGUxOwotICBjb25zdCBFeHBl
Y3RhdGlvbiBlMjsKLSAgRXhwZWN0YXRpb25TZXQgZXMxOyAgLy8gRGVmYXVsdCBjdG9yLgotICBF
eHBlY3RhdGlvblNldCBlczIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOyAgLy8gQ3RvciBmcm9t
IEVYUEVDVF9DQUxMLgotICBFeHBlY3RhdGlvblNldCBlczMgPSBlMTsgIC8vIEN0b3IgZnJvbSBF
eHBlY3RhdGlvbi4KLSAgRXhwZWN0YXRpb25TZXQgZXM0KGUxKTsgICAvLyBDdG9yIGZyb20gRXhw
ZWN0YXRpb247IGFsdGVybmF0aXZlIHN5bnRheC4KLSAgRXhwZWN0YXRpb25TZXQgZXM1ID0gZTI7
ICAvLyBDdG9yIGZyb20gY29uc3QgRXhwZWN0YXRpb24uCi0gIEV4cGVjdGF0aW9uU2V0IGVzNihl
Mik7ICAgLy8gQ3RvciBmcm9tIGNvbnN0IEV4cGVjdGF0aW9uOyBhbHRlcm5hdGl2ZSBzeW50YXgu
Ci0gIEV4cGVjdGF0aW9uU2V0IGVzNyA9IGVzMjsgIC8vIENvcHkgY3Rvci4KLQotICBFWFBFQ1Rf
RVEoMCwgZXMxLnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgxLCBlczIuc2l6ZSgpKTsKLSAgRVhQRUNU
X0VRKDEsIGVzMy5zaXplKCkpOwotICBFWFBFQ1RfRVEoMSwgZXM0LnNpemUoKSk7Ci0gIEVYUEVD
VF9FUSgxLCBlczUuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKDEsIGVzNi5zaXplKCkpOwotICBFWFBF
Q1RfRVEoMSwgZXM3LnNpemUoKSk7Ci0KLSAgRVhQRUNUX1RIQVQoZXMzLCBOZShlczIpKTsKLSAg
RVhQRUNUX1RIQVQoZXM0LCBFcShlczMpKTsKLSAgRVhQRUNUX1RIQVQoZXM1LCBFcShlczQpKTsK
LSAgRVhQRUNUX1RIQVQoZXM2LCBFcShlczUpKTsKLSAgRVhQRUNUX1RIQVQoZXM3LCBFcShlczIp
KTsKLSAgYS5Eb0EoMSk7Ci19Ci0KLVRFU1QoRXhwZWN0YXRpb25TZXRUZXN0LCBBc3NpZ25tZW50
V29ya3MpIHsKLSAgRXhwZWN0YXRpb25TZXQgZXMxOwotICBFeHBlY3RhdGlvblNldCBlczIgPSBF
eHBlY3RhdGlvbigpOwotCi0gIGVzMSA9IGVzMjsKLSAgRVhQRUNUX0VRKDEsIGVzMS5zaXplKCkp
OwotICBFWFBFQ1RfVEhBVCgqKGVzMS5iZWdpbigpKSwgRXEoRXhwZWN0YXRpb24oKSkpOwotICBF
WFBFQ1RfVEhBVChlczEsIEVxKGVzMikpOwotfQotCi1URVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwg
SW5zZXJ0aW9uV29ya3MpIHsKLSAgRXhwZWN0YXRpb25TZXQgZXMxOwotICBFeHBlY3RhdGlvbiBl
MTsKLSAgZXMxICs9IGUxOwotICBFWFBFQ1RfRVEoMSwgZXMxLnNpemUoKSk7Ci0gIEVYUEVDVF9U
SEFUKCooZXMxLmJlZ2luKCkpLCBFcShlMSkpOwotCi0gIE1vY2tBIGE7Ci0gIEV4cGVjdGF0aW9u
IGUyID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgZXMxICs9IGUyOwotICBFWFBFQ1RfRVEo
MiwgZXMxLnNpemUoKSk7Ci0KLSAgRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0MSA9
IGVzMS5iZWdpbigpOwotICBFeHBlY3RhdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQyID0gaXQx
OwotICArK2l0MjsKLSAgRVhQRUNUX1RSVUUoKml0MSA9PSBlMSB8fCAqaXQyID09IGUxKTsgIC8v
IGUxIG11c3QgYmUgaW4gdGhlIHNldC4KLSAgRVhQRUNUX1RSVUUoKml0MSA9PSBlMiB8fCAqaXQy
ID09IGUyKTsgIC8vIGUyIG11c3QgYmUgaW4gdGhlIHNldCB0b28uCi0gIGEuRG9BKDEpOwotfQot
Ci1URVNUKEV4cGVjdGF0aW9uU2V0VGVzdCwgU2l6ZVdvcmtzKSB7Ci0gIEV4cGVjdGF0aW9uU2V0
IGVzOwotICBFWFBFQ1RfRVEoMCwgZXMuc2l6ZSgpKTsKLQotICBlcyArPSBFeHBlY3RhdGlvbigp
OwotICBFWFBFQ1RfRVEoMSwgZXMuc2l6ZSgpKTsKLQotICBNb2NrQSBhOwotICBlcyArPSBFWFBF
Q1RfQ0FMTChhLCBEb0EoMSkpOwotICBFWFBFQ1RfRVEoMiwgZXMuc2l6ZSgpKTsKLQotICBhLkRv
QSgxKTsKLX0KLQotVEVTVChFeHBlY3RhdGlvblNldFRlc3QsIElzRW51bWVyYWJsZSkgewotICBF
eHBlY3RhdGlvblNldCBlczsKLSAgRVhQRUNUX1RSVUUoZXMuYmVnaW4oKSA9PSBlcy5lbmQoKSk7
Ci0KLSAgZXMgKz0gRXhwZWN0YXRpb24oKTsKLSAgRXhwZWN0YXRpb25TZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gZXMuYmVnaW4oKTsKLSAgRVhQRUNUX1RSVUUoaXQgIT0gZXMuZW5kKCkpOwotICBF
WFBFQ1RfVEhBVCgqaXQsIEVxKEV4cGVjdGF0aW9uKCkpKTsKLSAgKytpdDsKLSAgRVhQRUNUX1RS
VUUoaXQ9PSBlcy5lbmQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSAuQWZ0ZXIoKSBjbGF1c2UuCi0K
LVRFU1QoQWZ0ZXJUZXN0LCBTdWNjZWVkc1doZW5QYXJ0aWFsT3JkZXJJc1NhdGlzZmllZCkgewot
ICBNb2NrQSBhOwotICBFeHBlY3RhdGlvblNldCBlczsKLSAgZXMgKz0gRVhQRUNUX0NBTEwoYSwg
RG9BKDEpKTsKLSAgZXMgKz0gRVhQRUNUX0NBTEwoYSwgRG9BKDIpKTsKLSAgRVhQRUNUX0NBTEwo
YSwgRG9BKDMpKQotICAgICAgLkFmdGVyKGVzKTsKLQotICBhLkRvQSgxKTsKLSAgYS5Eb0EoMik7
Ci0gIGEuRG9BKDMpOwotfQotCi1URVNUKEFmdGVyVGVzdCwgU3VjY2VlZHNXaGVuVG90YWxPcmRl
cklzU2F0aXNmaWVkKSB7Ci0gIE1vY2tBIGE7Ci0gIE1vY2tCIGI7Ci0gIC8vIFRoZSBmb2xsb3dp
bmcgYWxzbyB2ZXJpZmllcyB0aGF0IGNvbnN0IEV4cGVjdGF0aW9uIG9iamVjdHMgd29yawotICAv
LyB0b28uICBEbyBub3QgcmVtb3ZlIHRoZSBjb25zdCBtb2RpZmllcnMuCi0gIGNvbnN0IEV4cGVj
dGF0aW9uIGUxID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgY29uc3QgRXhwZWN0YXRpb24g
ZTIgPSBFWFBFQ1RfQ0FMTChiLCBEb0IoKSkKLSAgICAgIC5UaW1lcygyKQotICAgICAgLkFmdGVy
KGUxKTsKLSAgRVhQRUNUX0NBTEwoYSwgRG9BKDIpKS5BZnRlcihlMik7Ci0KLSAgYS5Eb0EoMSk7
Ci0gIGIuRG9CKCk7Ci0gIGIuRG9CKCk7Ci0gIGEuRG9BKDIpOwotfQotCi0vLyBDYWxscyBtdXN0
IGJlIGluIHN0cmljdCBvcmRlciB3aGVuIHNwZWNpZmllZCBzbyB1c2luZyAuQWZ0ZXIoKS4KLVRF
U1QoQWZ0ZXJUZXN0LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVuU3BlY2lmaWVkU28xKSB7
Ci0gIE1vY2tBIGE7Ci0gIE1vY2tCIGI7Ci0KLSAgLy8gRGVmaW5lIG9yZGVyaW5nOgotICAvLyAg
IGEuRG9BKDEpID09PiBiLkRvQigpID09PiBhLkRvQSgyKQotICBFeHBlY3RhdGlvbiBlMSA9IEVY
UEVDVF9DQUxMKGEsIERvQSgxKSk7Ci0gIEV4cGVjdGF0aW9uIGUyID0gRVhQRUNUX0NBTEwoYiwg
RG9CKCkpCi0gICAgICAuQWZ0ZXIoZTEpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAg
ICAuQWZ0ZXIoZTIpOwotCi0gIGEuRG9BKDEpOwotCi0gIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBh
ZnRlciBEb0IoKS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoYS5Eb0EoMiksICJVbmV4cGVj
dGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotCi0gIGIuRG9CKCk7Ci0gIGEuRG9BKDIpOwotfQot
Ci0vLyBDYWxscyBtdXN0IGJlIGluIHN0cmljdCBvcmRlciB3aGVuIHNwZWNpZmllZCBzbyB1c2lu
ZyAuQWZ0ZXIoKS4KLVRFU1QoQWZ0ZXJUZXN0LCBDYWxsc011c3RCZUluU3RyaWN0T3JkZXJXaGVu
U3BlY2lmaWVkU28yKSB7Ci0gIE1vY2tBIGE7Ci0gIE1vY2tCIGI7Ci0KLSAgLy8gRGVmaW5lIG9y
ZGVyaW5nOgotICAvLyAgIGEuRG9BKDEpID09PiBiLkRvQigpICogMiA9PT4gYS5Eb0EoMikKLSAg
RXhwZWN0YXRpb24gZTEgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICBFeHBlY3RhdGlvbiBl
MiA9IEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLlRpbWVzKDIpCi0gICAgICAuQWZ0ZXIo
ZTEpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpCi0gICAgICAuQWZ0ZXIoZTIpOwotCi0gIGEu
RG9BKDEpOwotICBiLkRvQigpOwotCi0gIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUg
c2Vjb25kIERvQigpLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLkRvQSgyKSwgIlVuZXhw
ZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYi5Eb0IoKTsKLSAgYS5Eb0EoMik7Ci19
Ci0KLS8vIENhbGxzIG11c3Qgc2F0aXNmeSB0aGUgcGFydGlhbCBvcmRlciB3aGVuIHNwZWNpZmll
ZCBzby4KLVRFU1QoQWZ0ZXJUZXN0LCBDYWxsc011c3RTYXRpc2Z5UGFydGlhbE9yZGVyV2hlblNw
ZWNpZmllZFNvKSB7Ci0gIE1vY2tBIGE7Ci0gIE9OX0NBTEwoYSwgUmV0dXJuUmVzdWx0KF8pKQot
ICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKFJlc3VsdCgpKSk7Ci0KLSAgLy8gRGVmaW5lIG9y
ZGVyaW5nOgotICAvLyAgIGEuRG9BKDEpID09PgotICAvLyAgIGEuRG9BKDIpID09PiBhLlJldHVy
blJlc3VsdCgzKQotICBFeHBlY3RhdGlvbiBlID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAg
Y29uc3QgRXhwZWN0YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOwotICBFWFBF
Q1RfQ0FMTChhLCBSZXR1cm5SZXN1bHQoMykpCi0gICAgICAuQWZ0ZXIoZSwgZXMpOwotCi0gIC8v
IE1heSBvbmx5IGJlIGNhbGxlZCBsYXN0LgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLlJl
dHVyblJlc3VsdCgzKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5E
b0EoMik7Ci0gIGEuRG9BKDEpOwotICBhLlJldHVyblJlc3VsdCgzKTsKLX0KLQotLy8gQ2FsbHMg
bXVzdCBzYXRpc2Z5IHRoZSBwYXJ0aWFsIG9yZGVyIHdoZW4gc3BlY2lmaWVkIHNvLgotVEVTVChB
ZnRlclRlc3QsIENhbGxzTXVzdFNhdGlzZnlQYXJ0aWFsT3JkZXJXaGVuU3BlY2lmaWVkU28yKSB7
Ci0gIE1vY2tBIGE7Ci0KLSAgLy8gRGVmaW5lIG9yZGVyaW5nOgotICAvLyAgIGEuRG9BKDEpID09
PgotICAvLyAgIGEuRG9BKDIpID09PiBhLkRvQSgzKQotICBFeHBlY3RhdGlvbiBlID0gRVhQRUNU
X0NBTEwoYSwgRG9BKDEpKTsKLSAgY29uc3QgRXhwZWN0YXRpb25TZXQgZXMgPSBFWFBFQ1RfQ0FM
TChhLCBEb0EoMikpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMykpCi0gICAgICAuQWZ0ZXIoZSwg
ZXMpOwotCi0gIGEuRG9BKDIpOwotCi0gIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBsYXN0LgotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLkRvQSgzKSwgIlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlv
biBjYWxsIik7Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDMpOwotfQotCi0vLyAuQWZ0ZXIoKSBj
YW4gYmUgY29tYmluZWQgd2l0aCAuSW5TZXF1ZW5jZSgpLgotVEVTVChBZnRlclRlc3QsIENhbkJl
VXNlZFdpdGhJblNlcXVlbmNlKSB7Ci0gIE1vY2tBIGE7Ci0gIFNlcXVlbmNlIHM7Ci0gIEV4cGVj
dGF0aW9uIGUgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0Eo
MikpLkluU2VxdWVuY2Uocyk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSgzKSkKLSAgICAgIC5JblNl
cXVlbmNlKHMpCi0gICAgICAuQWZ0ZXIoZSk7Ci0KLSAgYS5Eb0EoMSk7Ci0KLSAgLy8gTWF5IG9u
bHkgYmUgYWZ0ZXIgRG9BKDIpLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLkRvQSgzKSwg
IlVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5Eb0EoMik7Ci0gIGEuRG9B
KDMpOwotfQotCi0vLyAuQWZ0ZXIoKSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgotVEVT
VChBZnRlclRlc3QsIENhbkJlQ2FsbGVkTWFueVRpbWVzKSB7Ci0gIE1vY2tBIGE7Ci0gIEV4cGVj
dGF0aW9uIGUxID0gRVhQRUNUX0NBTEwoYSwgRG9BKDEpKTsKLSAgRXhwZWN0YXRpb24gZTIgPSBF
WFBFQ1RfQ0FMTChhLCBEb0EoMikpOwotICBFeHBlY3RhdGlvbiBlMyA9IEVYUEVDVF9DQUxMKGEs
IERvQSgzKSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSg0KSkKLSAgICAgIC5BZnRlcihlMSkKLSAg
ICAgIC5BZnRlcihlMikKLSAgICAgIC5BZnRlcihlMyk7Ci0KLSAgYS5Eb0EoMyk7Ci0gIGEuRG9B
KDEpOwotICBhLkRvQSgyKTsKLSAgYS5Eb0EoNCk7Ci19Ci0KLS8vIC5BZnRlcigpIGFjY2VwdHMg
dXAgdG8gNSBhcmd1bWVudHMuCi1URVNUKEFmdGVyVGVzdCwgQWNjZXB0c1VwVG9GaXZlQXJndW1l
bnRzKSB7Ci0gIE1vY2tBIGE7Ci0gIEV4cGVjdGF0aW9uIGUxID0gRVhQRUNUX0NBTEwoYSwgRG9B
KDEpKTsKLSAgRXhwZWN0YXRpb24gZTIgPSBFWFBFQ1RfQ0FMTChhLCBEb0EoMikpOwotICBFeHBl
Y3RhdGlvbiBlMyA9IEVYUEVDVF9DQUxMKGEsIERvQSgzKSk7Ci0gIEV4cGVjdGF0aW9uU2V0IGVz
MSA9IEVYUEVDVF9DQUxMKGEsIERvQSg0KSk7Ci0gIEV4cGVjdGF0aW9uU2V0IGVzMiA9IEVYUEVD
VF9DQUxMKGEsIERvQSg1KSk7Ci0gIEVYUEVDVF9DQUxMKGEsIERvQSg2KSkKLSAgICAgIC5BZnRl
cihlMSwgZTIsIGUzLCBlczEsIGVzMik7Ci0KLSAgYS5Eb0EoNSk7Ci0gIGEuRG9BKDIpOwotICBh
LkRvQSg0KTsKLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDMpOwotICBhLkRvQSg2KTsKLX0KLQotLy8g
LkFmdGVyKCkgYWxsb3dzIGlucHV0IHRvIGNvbnRhaW4gZHVwbGljYXRlZCBFeHBlY3RhdGlvbnMu
Ci1URVNUKEFmdGVyVGVzdCwgQWNjZXB0c0R1cGxpY2F0ZWRJbnB1dCkgewotICBNb2NrQSBhOwot
ICBPTl9DQUxMKGEsIFJldHVyblJlc3VsdChfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVy
bihSZXN1bHQoKSkpOwotCi0gIC8vIERlZmluZSBvcmRlcmluZzoKLSAgLy8gICBEb0EoMSkgPT0+
Ci0gIC8vICAgRG9BKDIpID09PiBSZXR1cm5SZXN1bHQoMykKLSAgRXhwZWN0YXRpb24gZTEgPSBF
WFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGEs
IERvQSgyKSk7Ci0gIEV4cGVjdGF0aW9uU2V0IGVzOwotICBlcyArPSBlMTsKLSAgZXMgKz0gZTI7
Ci0gIEVYUEVDVF9DQUxMKGEsIFJldHVyblJlc3VsdCgzKSkKLSAgICAgIC5BZnRlcihlMSwgZTIs
IGVzLCBlMSk7Ci0KLSAgYS5Eb0EoMSk7Ci0KLSAgLy8gTWF5IG9ubHkgYmUgYWZ0ZXIgRG9BKDIp
LgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShhLlJldHVyblJlc3VsdCgzKSwgIlVuZXhwZWN0
ZWQgbW9jayBmdW5jdGlvbiBjYWxsIik7Ci0KLSAgYS5Eb0EoMik7Ci0gIGEuUmV0dXJuUmVzdWx0
KDMpOwotfQotCi0vLyBBbiBFeHBlY3RhdGlvbiBhZGRlZCB0byBhbiBFeHBlY3RhdGlvblNldCBh
ZnRlciBpdCBoYXMgYmVlbiB1c2VkIGluCi0vLyBhbiAuQWZ0ZXIoKSBoYXMgbm8gZWZmZWN0Lgot
VEVTVChBZnRlclRlc3QsIENoYW5nZXNUb0V4cGVjdGF0aW9uU2V0SGF2ZU5vRWZmZWN0QWZ0ZXJ3
YXJkcykgewotICBNb2NrQSBhOwotICBFeHBlY3RhdGlvblNldCBlczEgPSBFWFBFQ1RfQ0FMTChh
LCBEb0EoMSkpOwotICBFeHBlY3RhdGlvbiBlMiA9IEVYUEVDVF9DQUxMKGEsIERvQSgyKSk7Ci0g
IEVYUEVDVF9DQUxMKGEsIERvQSgzKSkKLSAgICAgIC5BZnRlcihlczEpOwotICBlczEgKz0gZTI7
Ci0KLSAgYS5Eb0EoMSk7Ci0gIGEuRG9BKDMpOwotICBhLkRvQSgyKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBHb29nbGUgTW9jayBjb3JyZWN0bHkgaGFuZGxlcyBjYWxscyB0byBtb2NrIGZ1bmN0aW9u
cwotLy8gYWZ0ZXIgYSBtb2NrIG9iamVjdCBvd25pbmcgb25lIG9mIHRoZWlyIHByZS1yZXF1aXNp
dGVzIGhhcyBkaWVkLgotCi0vLyBUZXN0cyB0aGF0IGNhbGxzIHRoYXQgc2F0aXNmeSB0aGUgb3Jp
Z2luYWwgc3BlYyBhcmUgc3VjY2Vzc2Z1bC4KLVRFU1QoRGVsZXRpbmdNb2NrRWFybHlUZXN0LCBT
dWNjZXNzMSkgewotICBNb2NrQiogY29uc3QgYjEgPSBuZXcgTW9ja0I7Ci0gIE1vY2tBKiBjb25z
dCBhID0gbmV3IE1vY2tBOwotICBNb2NrQiogY29uc3QgYjIgPSBuZXcgTW9ja0I7Ci0KLSAgewot
ICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0gICAgRVhQRUNUX0NBTEwoKmIxLCBEb0IoXykpCi0gICAg
ICAgIC5XaWxsT25jZShSZXR1cm4oMSkpOwotICAgIEVYUEVDVF9DQUxMKCphLCBCaW5hcnkoXywg
XykpCi0gICAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5
KFJldHVybih0cnVlKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCi0gICAgICAgIC5U
aW1lcyhBbnlOdW1iZXIoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0g
IH0KLQotICBFWFBFQ1RfRVEoMSwgYjEtPkRvQigxKSk7Ci0gIGRlbGV0ZSBiMTsKLSAgLy8gYSdz
IHByZS1yZXF1aXNpdGUgaGFzIGRpZWQuCi0gIEVYUEVDVF9UUlVFKGEtPkJpbmFyeSgwLCAxKSk7
Ci0gIGRlbGV0ZSBiMjsKLSAgLy8gYSdzIHN1Y2Nlc3NvciBoYXMgZGllZC4KLSAgRVhQRUNUX1RS
VUUoYS0+QmluYXJ5KDEsIDIpKTsKLSAgZGVsZXRlIGE7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY2Fs
bHMgdGhhdCBzYXRpc2Z5IHRoZSBvcmlnaW5hbCBzcGVjIGFyZSBzdWNjZXNzZnVsLgotVEVTVChE
ZWxldGluZ01vY2tFYXJseVRlc3QsIFN1Y2Nlc3MyKSB7Ci0gIE1vY2tCKiBjb25zdCBiMSA9IG5l
dyBNb2NrQjsKLSAgTW9ja0EqIGNvbnN0IGEgPSBuZXcgTW9ja0E7Ci0gIE1vY2tCKiBjb25zdCBi
MiA9IG5ldyBNb2NrQjsKLQotICB7Ci0gICAgSW5TZXF1ZW5jZSBkdW1teTsKLSAgICBFWFBFQ1Rf
Q0FMTCgqYjEsIERvQihfKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0gICAgRVhQ
RUNUX0NBTEwoKmEsIEJpbmFyeShfLCBfKSkKLSAgICAgICAgLlRpbWVzKEFueU51bWJlcigpKTsK
LSAgICBFWFBFQ1RfQ0FMTCgqYjIsIERvQihfKSkKLSAgICAgICAgLlRpbWVzKEFueU51bWJlcigp
KQotICAgICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKDIpKTsKLSAgfQotCi0gIGRlbGV0ZSBh
OyAgLy8gYSBpcyB0cml2aWFsbHkgc2F0aXNmaWVkLgotICBFWFBFQ1RfRVEoMSwgYjEtPkRvQigx
KSk7Ci0gIEVYUEVDVF9FUSgyLCBiMi0+RG9CKDIpKTsKLSAgZGVsZXRlIGIxOwotICBkZWxldGUg
YjI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgaXQncyBPSyB0byBkZWxldGUgYSBtb2NrIG9iamVjdCBp
dHNlbGYgaW4gaXRzIGFjdGlvbi4KLQotLy8gU3VwcHJlc3NlcyB3YXJuaW5nIG9uIHVucmVmZXJl
bmNlZCBmb3JtYWwgcGFyYW1ldGVyIGluIE1TVkMgd2l0aAotLy8gLVc0LgotI2lmZGVmIF9NU0Nf
VkVSCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEw
MCkKLSNlbmRpZgotCi1BQ1RJT05fUChEZWxldGUsIHB0cikgeyBkZWxldGUgcHRyOyB9Ci0KLSNp
ZmRlZiBfTVNDX1ZFUgotIyBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotVEVTVChEZWxl
dGluZ01vY2tFYXJseVRlc3QsIENhbkRlbGV0ZVNlbGZJbkFjdGlvblJldHVybmluZ1ZvaWQpIHsK
LSAgTW9ja0EqIGNvbnN0IGEgPSBuZXcgTW9ja0E7Ci0gIEVYUEVDVF9DQUxMKCphLCBEb0EoXykp
LldpbGxPbmNlKERlbGV0ZShhKSk7Ci0gIGEtPkRvQSg0Mik7ICAvLyBUaGlzIHdpbGwgY2F1c2Ug
YSB0byBiZSBkZWxldGVkLgotfQotCi1URVNUKERlbGV0aW5nTW9ja0Vhcmx5VGVzdCwgQ2FuRGVs
ZXRlU2VsZkluQWN0aW9uUmV0dXJuaW5nVmFsdWUpIHsKLSAgTW9ja0EqIGNvbnN0IGEgPSBuZXcg
TW9ja0E7Ci0gIEVYUEVDVF9DQUxMKCphLCBSZXR1cm5SZXN1bHQoXykpCi0gICAgICAuV2lsbE9u
Y2UoRG9BbGwoRGVsZXRlKGEpLCBSZXR1cm4oUmVzdWx0KCkpKSk7Ci0gIGEtPlJldHVyblJlc3Vs
dCg0Mik7ICAvLyBUaGlzIHdpbGwgY2F1c2UgYSB0byBiZSBkZWxldGVkLgotfQotCi0vLyBUZXN0
cyB0aGF0IGNhbGxzIHRoYXQgdmlvbGF0ZSB0aGUgb3JpZ2luYWwgc3BlYyB5aWVsZCBmYWlsdXJl
cy4KLVRFU1QoRGVsZXRpbmdNb2NrRWFybHlUZXN0LCBGYWlsdXJlMSkgewotICBNb2NrQiogY29u
c3QgYjEgPSBuZXcgTW9ja0I7Ci0gIE1vY2tBKiBjb25zdCBhID0gbmV3IE1vY2tBOwotICBNb2Nr
QiogY29uc3QgYjIgPSBuZXcgTW9ja0I7Ci0KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0g
ICAgRVhQRUNUX0NBTEwoKmIxLCBEb0IoXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oMSkp
OwotICAgIEVYUEVDVF9DQUxMKCphLCBCaW5hcnkoXywgXykpCi0gICAgICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCi0gICAgICAgIC5UaW1lcyhB
bnlOdW1iZXIoKSkKLSAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVybigyKSk7Ci0gIH0KLQot
ICBkZWxldGUgYTsgIC8vIGEgaXMgdHJpdmlhbGx5IHNhdGlzZmllZC4KLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoewotICAgIGIyLT5Eb0IoMik7Ci0gIH0sICJVbmV4cGVjdGVkIG1vY2sgZnVu
Y3Rpb24gY2FsbCIpOwotICBFWFBFQ1RfRVEoMSwgYjEtPkRvQigxKSk7Ci0gIGRlbGV0ZSBiMTsK
LSAgZGVsZXRlIGIyOwotfQotCi0vLyBUZXN0cyB0aGF0IGNhbGxzIHRoYXQgdmlvbGF0ZSB0aGUg
b3JpZ2luYWwgc3BlYyB5aWVsZCBmYWlsdXJlcy4KLVRFU1QoRGVsZXRpbmdNb2NrRWFybHlUZXN0
LCBGYWlsdXJlMikgewotICBNb2NrQiogY29uc3QgYjEgPSBuZXcgTW9ja0I7Ci0gIE1vY2tBKiBj
b25zdCBhID0gbmV3IE1vY2tBOwotICBNb2NrQiogY29uc3QgYjIgPSBuZXcgTW9ja0I7Ci0KLSAg
ewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0gICAgRVhQRUNUX0NBTEwoKmIxLCBEb0IoXykpOwot
ICAgIEVYUEVDVF9DQUxMKCphLCBCaW5hcnkoXywgXykpCi0gICAgICAgIC5UaW1lcyhBbnlOdW1i
ZXIoKSk7Ci0gICAgRVhQRUNUX0NBTEwoKmIyLCBEb0IoXykpCi0gICAgICAgIC5UaW1lcyhBbnlO
dW1iZXIoKSk7Ci0gIH0KLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShkZWxldGUgYjEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJBY3R1YWw6IG5ldmVyIGNhbGxlZCIpOwotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShhLT5CaW5hcnkoMCwgMSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJVbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShiMi0+RG9CKDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5leHBl
Y3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwiKTsKLSAgZGVsZXRlIGE7Ci0gIGRlbGV0ZSBiMjsKLX0K
LQotY2xhc3MgRXZlbk51bWJlckNhcmRpbmFsaXR5IDogcHVibGljIENhcmRpbmFsaXR5SW50ZXJm
YWNlIHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxscyB3
aWxsIHNhdGlzZnkgdGhpcyBjYXJkaW5hbGl0eS4KLSAgdmlydHVhbCBib29sIElzU2F0aXNmaWVk
QnlDYWxsQ291bnQoaW50IGNhbGxfY291bnQpIGNvbnN0IHsKLSAgICByZXR1cm4gY2FsbF9jb3Vu
dCAlIDIgPT0gMDsKLSAgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgY2FsbF9jb3VudCBjYWxs
cyB3aWxsIHNhdHVyYXRlIHRoaXMgY2FyZGluYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBJc1NhdHVy
YXRlZEJ5Q2FsbENvdW50KGludCAvKiBjYWxsX2NvdW50ICovKSBjb25zdCB7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0KLSAgLy8gRGVzY3JpYmVzIHNlbGYgdG8gYW4gb3N0cmVhbS4KLSAgdmly
dHVhbCB2b2lkIERlc2NyaWJlVG8oOjpzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Ci0gICAgKm9z
IDw8ICJjYWxsZWQgZXZlbiBudW1iZXIgb2YgdGltZXMiOwotICB9Ci19OwotCi1DYXJkaW5hbGl0
eSBFdmVuTnVtYmVyKCkgewotICByZXR1cm4gQ2FyZGluYWxpdHkobmV3IEV2ZW5OdW1iZXJDYXJk
aW5hbGl0eSk7Ci19Ci0KLVRFU1QoRXhwZWN0YXRpb25CYXNlVGVzdCwKLSAgICAgQWxsUHJlcmVx
dWlzaXRlc0FyZVNhdGlzZmllZFdvcmtzRm9yTm9uTW9ub3RvbmljQ2FyZGluYWxpdHkpIHsKLSAg
TW9ja0EqIGEgPSBuZXcgTW9ja0E7Ci0gIFNlcXVlbmNlIHM7Ci0KLSAgRVhQRUNUX0NBTEwoKmEs
IERvQSgxKSkKLSAgICAgIC5UaW1lcyhFdmVuTnVtYmVyKCkpCi0gICAgICAuSW5TZXF1ZW5jZShz
KTsKLSAgRVhQRUNUX0NBTEwoKmEsIERvQSgyKSkKLSAgICAgIC5UaW1lcyhBbnlOdW1iZXIoKSkK
LSAgICAgIC5JblNlcXVlbmNlKHMpOwotICBFWFBFQ1RfQ0FMTCgqYSwgRG9BKDMpKQotICAgICAg
LlRpbWVzKEFueU51bWJlcigpKTsKLQotICBhLT5Eb0EoMyk7Ci0gIGEtPkRvQSgxKTsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoYS0+RG9BKDIpLCAiVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9u
IGNhbGwiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoZGVsZXRlIGEsICJ0byBiZSBjYWxs
ZWQgZXZlbiBudW1iZXIgb2YgdGltZXMiKTsKLX0KLQotLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyB2
ZXJpZnkgdGhlIG1lc3NhZ2UgZ2VuZXJhdGVkIHdoZW4gYSBtb2NrCi0vLyBmdW5jdGlvbiBpcyBj
YWxsZWQuCi0KLXN0cnVjdCBQcmludGFibGUgewotfTsKLQotaW5saW5lIHZvaWQgb3BlcmF0b3I8
PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFByaW50YWJsZSYpIHsKLSAgb3MgPDwgIlByaW50
YWJsZSI7Ci19Ci0KLXN0cnVjdCBVbnByaW50YWJsZSB7Ci0gIFVucHJpbnRhYmxlKCkgOiB2YWx1
ZSgwKSB7fQotICBpbnQgdmFsdWU7Ci19OwotCi1jbGFzcyBNb2NrQyB7Ci0gcHVibGljOgotICBN
b2NrQygpIHt9Ci0KLSAgTU9DS19NRVRIT0Q2KFZvaWRNZXRob2QsIHZvaWQoYm9vbCBjb25kLCBp
bnQgbiwgc3RkOjpzdHJpbmcgcywgdm9pZCogcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUHJpbnRhYmxlJiB4LCBVbnByaW50YWJsZSB5KSk7Ci0gIE1PQ0tfTUVUSE9E
MChOb25Wb2lkTWV0aG9kLCBpbnQoKSk7ICAvLyBOT0xJTlQKLQotIHByaXZhdGU6Ci0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oTW9ja0MpOwotfTsKLQotY2xhc3MgVmVyYm9zZUZs
YWdQcmVzZXJ2aW5nRml4dHVyZSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIFZlcmJvc2VGbGFnUHJlc2VydmluZ0ZpeHR1cmUoKQotICAgICAgOiBzYXZlZF92ZXJib3Nl
X2ZsYWdfKEdNT0NLX0ZMQUcodmVyYm9zZSkpIHt9Ci0KLSAgflZlcmJvc2VGbGFnUHJlc2Vydmlu
Z0ZpeHR1cmUoKSB7IEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBzYXZlZF92ZXJib3NlX2ZsYWdfOyB9
Ci0KLSBwcml2YXRlOgotICBjb25zdCBzdGQ6OnN0cmluZyBzYXZlZF92ZXJib3NlX2ZsYWdfOwot
Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVmVyYm9zZUZsYWdQcmVzZXJ2aW5n
Rml4dHVyZSk7Ci19OwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBU
ZXN0cyB0aGF0IGFuIHVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIG9uIGEgbmFnZ3kg
bW9jawotLy8gZ2VuZXJhdGVzIGEgd2FybmluZyB3aXRob3V0IHRoZSBzdGFjayB0cmFjZSB3aGVu
Ci0vLyAtLWdtb2NrX3ZlcmJvc2U9d2FybmluZyBpcyBzcGVjaWZpZWQuCi1URVNUKEZ1bmN0aW9u
Q2FsbE1lc3NhZ2VUZXN0LAotICAgICBVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrR2VuZXJh
dGVzTm9TdGFja1RyYWNlV2hlblZlcmJvc2VXYXJuaW5nKSB7Ci0gIEdNT0NLX0ZMQUcodmVyYm9z
ZSkgPSBrV2FybmluZ1ZlcmJvc2l0eTsKLSAgTmFnZ3lNb2NrPE1vY2tDPiBjOwotICBDYXB0dXJl
U3Rkb3V0KCk7Ci0gIGMuVm9pZE1ldGhvZChmYWxzZSwgNSwgIkhpIiwgTlVMTCwgUHJpbnRhYmxl
KCksIFVucHJpbnRhYmxlKCkpOwotICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQgPSBHZXRDYXB0
dXJlZFN0ZG91dCgpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiR01PQ0sg
V0FSTklORyIsIG91dHB1dCk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcs
ICJTdGFjayB0cmFjZToiLCBvdXRwdXQpOwotfQotCi0vLyBUZXN0cyB0aGF0IGFuIHVuaW50ZXJl
c3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIG9uIGEgbmFnZ3kgbW9jawotLy8gZ2VuZXJhdGVzIGEg
d2FybmluZyBjb250YWluaW5nIHRoZSBzdGFjayB0cmFjZSB3aGVuCi0vLyAtLWdtb2NrX3ZlcmJv
c2U9aW5mbyBpcyBzcGVjaWZpZWQuCi1URVNUKEZ1bmN0aW9uQ2FsbE1lc3NhZ2VUZXN0LAotICAg
ICBVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrR2VuZXJhdGVzRnlpV2l0aFN0YWNrVHJhY2VX
aGVuVmVyYm9zZUluZm8pIHsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtJbmZvVmVyYm9zaXR5
OwotICBOYWdneU1vY2s8TW9ja0M+IGM7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgYy5Wb2lkTWV0
aG9kKGZhbHNlLCA1LCAiSGkiLCBOVUxMLCBQcmludGFibGUoKSwgVW5wcmludGFibGUoKSk7Ci0g
IGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dCA9IEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0gIEVYUEVD
VF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJHTU9DSyBXQVJOSU5HIiwgb3V0cHV0KTsKLSAg
RVhQRUNUX1BSRURfRk9STUFUMihJc1N1YnN0cmluZywgIlN0YWNrIHRyYWNlOiIsIG91dHB1dCk7
Ci0KLSMgaWZuZGVmIE5ERUJVRwotCi0gIC8vIFdlIGNoZWNrIHRoZSBzdGFjayB0cmFjZSBjb250
ZW50IGluIGRiZy1tb2RlIG9ubHksIGFzIG9wdC1tb2RlCi0gIC8vIG1heSBpbmxpbmUgdGhlIGNh
bGwgd2UgYXJlIGludGVyZXN0ZWQgaW4gc2VlaW5nLgotCi0gIC8vIFZlcmlmaWVzIHRoYXQgYSB2
b2lkIG1vY2sgZnVuY3Rpb24ncyBuYW1lIGFwcGVhcnMgaW4gdGhlIHN0YWNrCi0gIC8vIHRyYWNl
LgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKElzU3Vic3RyaW5nLCAiVm9pZE1ldGhvZCgiLCBvdXRw
dXQpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgYSBub24tdm9pZCBtb2NrIGZ1bmN0aW9uJ3MgbmFt
ZSBhcHBlYXJzIGluIHRoZQotICAvLyBzdGFjayB0cmFjZS4KLSAgQ2FwdHVyZVN0ZG91dCgpOwot
ICBjLk5vblZvaWRNZXRob2QoKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgb3V0cHV0MiA9IEdldENh
cHR1cmVkU3Rkb3V0KCk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICJOb25W
b2lkTWV0aG9kKCIsIG91dHB1dDIpOwotCi0jIGVuZGlmICAvLyBOREVCVUcKLX0KLQotLy8gVGVz
dHMgdGhhdCBhbiB1bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCBvbiBhIG5hZ2d5IG1v
Y2sKLS8vIGNhdXNlcyB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIGFuZCByZXR1cm4gdmFsdWUgdG8g
YmUgcHJpbnRlZC4KLVRFU1QoRnVuY3Rpb25DYWxsTWVzc2FnZVRlc3QsCi0gICAgIFVuaW50ZXJl
c3RpbmdDYWxsT25OYWdneU1vY2tQcmludHNBcmd1bWVudHNBbmRSZXR1cm5WYWx1ZSkgewotICAv
LyBBIG5vbi12b2lkIG1vY2sgZnVuY3Rpb24uCi0gIE5hZ2d5TW9jazxNb2NrQj4gYjsKLSAgQ2Fw
dHVyZVN0ZG91dCgpOwotICBiLkRvQigpOwotICBjb25zdCBzdGQ6OnN0cmluZyBvdXRwdXQxID0g
R2V0Q2FwdHVyZWRTdGRvdXQoKTsKLSAgRVhQRUNUX1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vi
c3RyaW5nLAotICAgICAgIlVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJu
aW5nIGRlZmF1bHQgdmFsdWUuXG4iCi0gICAgICAiICAgIEZ1bmN0aW9uIGNhbGw6IERvQigpXG4i
Ci0gICAgICAiICAgICAgICAgIFJldHVybnM6IDBcbiIsIG91dHB1dDEuY19zdHIoKSk7Ci0gIC8v
IE1ha2VzIHN1cmUgdGhlIHJldHVybiB2YWx1ZSBpcyBwcmludGVkLgotCi0gIC8vIEEgdm9pZCBt
b2NrIGZ1bmN0aW9uLgotICBOYWdneU1vY2s8TW9ja0M+IGM7Ci0gIENhcHR1cmVTdGRvdXQoKTsK
LSAgYy5Wb2lkTWV0aG9kKGZhbHNlLCA1LCAiSGkiLCBOVUxMLCBQcmludGFibGUoKSwgVW5wcmlu
dGFibGUoKSk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1dDIgPSBHZXRDYXB0dXJlZFN0ZG91
dCgpOwotICBFWFBFQ1RfVEhBVChvdXRwdXQyLmNfc3RyKCksCi0gICAgICAgICAgICAgIENvbnRh
aW5zUmVnZXgoCi0gICAgICAgICAgICAgICAgICAiVW5pbnRlcmVzdGluZyBtb2NrIGZ1bmN0aW9u
IGNhbGwgLSByZXR1cm5pbmcgZGlyZWN0bHlcXC5cbiIKLSAgICAgICAgICAgICAgICAgICIgICAg
RnVuY3Rpb24gY2FsbDogVm9pZE1ldGhvZCIKLSAgICAgICAgICAgICAgICAgICJcXChmYWxzZSwg
NSwgXCJIaVwiLCBOVUxMLCBALisgIgotICAgICAgICAgICAgICAgICAgIlByaW50YWJsZSwgNC1i
eXRlIG9iamVjdCA8MDAtMDAgMDAtMDA+XFwpIikpOwotICAvLyBBIHZvaWQgZnVuY3Rpb24gaGFz
IG5vIHJldHVybiB2YWx1ZSB0byBwcmludC4KLX0KLQotLy8gVGVzdHMgaG93IHRoZSAtLWdtb2Nr
X3ZlcmJvc2UgZmxhZyBhZmZlY3RzIEdvb2dsZSBNb2NrJ3Mgb3V0cHV0LgotCi1jbGFzcyBHTW9j
a1ZlcmJvc2VGbGFnVGVzdCA6IHB1YmxpYyBWZXJib3NlRmxhZ1ByZXNlcnZpbmdGaXh0dXJlIHsK
LSBwdWJsaWM6Ci0gIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIEdvb2dsZSBNb2NrIG91dHB1
dCBpcyBjb3JyZWN0LiAgKFdoZW4KLSAgLy8gc2hvdWxkX3ByaW50IGlzIHRydWUsIHRoZSBvdXRw
dXQgc2hvdWxkIG1hdGNoIHRoZSBnaXZlbiByZWdleCBhbmQKLSAgLy8gY29udGFpbiB0aGUgZ2l2
ZW4gZnVuY3Rpb24gbmFtZSBpbiB0aGUgc3RhY2sgdHJhY2UuICBXaGVuIGl0J3MKLSAgLy8gZmFs
c2UsIHRoZSBvdXRwdXQgc2hvdWxkIGJlIGVtcHR5LikKLSAgdm9pZCBWZXJpZnlPdXRwdXQoY29u
c3Qgc3RkOjpzdHJpbmcmIG91dHB1dCwgYm9vbCBzaG91bGRfcHJpbnQsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZF9zdWJzdHJpbmcsCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBmdW5jdGlvbl9uYW1lKSB7Ci0gICAgaWYgKHNo
b3VsZF9wcmludCkgewotICAgICAgRVhQRUNUX1RIQVQob3V0cHV0LmNfc3RyKCksIEhhc1N1YnN0
cihleHBlY3RlZF9zdWJzdHJpbmcpKTsKLSMgaWZuZGVmIE5ERUJVRwotICAgICAgLy8gV2UgY2hl
Y2sgdGhlIHN0YWNrIHRyYWNlIGNvbnRlbnQgaW4gZGJnLW1vZGUgb25seSwgYXMgb3B0LW1vZGUK
LSAgICAgIC8vIG1heSBpbmxpbmUgdGhlIGNhbGwgd2UgYXJlIGludGVyZXN0ZWQgaW4gc2VlaW5n
LgotICAgICAgRVhQRUNUX1RIQVQob3V0cHV0LmNfc3RyKCksIEhhc1N1YnN0cihmdW5jdGlvbl9u
YW1lKSk7Ci0jIGVsc2UKLSAgICAgIC8vIFN1cHByZXNzZXMgJ3VudXNlZCBmdW5jdGlvbiBwYXJh
bWV0ZXInIHdhcm5pbmdzLgotICAgICAgc3RhdGljX2Nhc3Q8dm9pZD4oZnVuY3Rpb25fbmFtZSk7
Ci0jIGVuZGlmICAvLyBOREVCVUcKLSAgICB9IGVsc2UgewotICAgICAgRVhQRUNUX1NUUkVRKCIi
LCBvdXRwdXQuY19zdHIoKSk7Ci0gICAgfQotICB9Ci0KLSAgLy8gVGVzdHMgaG93IHRoZSBmbGFn
IGFmZmVjdHMgZXhwZWN0ZWQgY2FsbHMuCi0gIHZvaWQgVGVzdEV4cGVjdGVkQ2FsbChib29sIHNo
b3VsZF9wcmludCkgewotICAgIE1vY2tBIGE7Ci0gICAgRVhQRUNUX0NBTEwoYSwgRG9BKDUpKTsK
LSAgICBFWFBFQ1RfQ0FMTChhLCBCaW5hcnkoXywgMSkpCi0gICAgICAgIC5XaWxsT25jZShSZXR1
cm4odHJ1ZSkpOwotCi0gICAgLy8gQSB2b2lkLXJldHVybmluZyBmdW5jdGlvbi4KLSAgICBDYXB0
dXJlU3Rkb3V0KCk7Ci0gICAgYS5Eb0EoNSk7Ci0gICAgVmVyaWZ5T3V0cHV0KAotICAgICAgICBH
ZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICBzaG91bGRfcHJpbnQsCi0gICAgICAgICJNb2Nr
IGZ1bmN0aW9uIGNhbGwgbWF0Y2hlcyBFWFBFQ1RfQ0FMTChhLCBEb0EoNSkpLi4uXG4iCi0gICAg
ICAgICIgICAgRnVuY3Rpb24gY2FsbDogRG9BKDUpXG4iCi0gICAgICAgICJTdGFjayB0cmFjZTpc
biIsCi0gICAgICAgICJEb0EiKTsKLQotICAgIC8vIEEgbm9uLXZvaWQtcmV0dXJuaW5nIGZ1bmN0
aW9uLgotICAgIENhcHR1cmVTdGRvdXQoKTsKLSAgICBhLkJpbmFyeSgyLCAxKTsKLSAgICBWZXJp
ZnlPdXRwdXQoCi0gICAgICAgIEdldENhcHR1cmVkU3Rkb3V0KCksCi0gICAgICAgIHNob3VsZF9w
cmludCwKLSAgICAgICAgIk1vY2sgZnVuY3Rpb24gY2FsbCBtYXRjaGVzIEVYUEVDVF9DQUxMKGEs
IEJpbmFyeShfLCAxKSkuLi5cbiIKLSAgICAgICAgIiAgICBGdW5jdGlvbiBjYWxsOiBCaW5hcnko
MiwgMSlcbiIKLSAgICAgICAgIiAgICAgICAgICBSZXR1cm5zOiB0cnVlXG4iCi0gICAgICAgICJT
dGFjayB0cmFjZTpcbiIsCi0gICAgICAgICJCaW5hcnkiKTsKLSAgfQotCi0gIC8vIFRlc3RzIGhv
dyB0aGUgZmxhZyBhZmZlY3RzIHVuaW50ZXJlc3RpbmcgY2FsbHMgb24gYSBuYWdneSBtb2NrLgot
ICB2b2lkIFRlc3RVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrKGJvb2wgc2hvdWxkX3ByaW50
KSB7Ci0gICAgTmFnZ3lNb2NrPE1vY2tBPiBhOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5vdGUg
PQotICAgICAgICAiTk9URTogWW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZSBhYm92ZSB3YXJuaW5n
IHVubGVzcyB0aGlzICIKLSAgICAgICAgImNhbGwgc2hvdWxkIG5vdCBoYXBwZW4uICBEbyBub3Qg
c3VwcHJlc3MgaXQgYnkgYmxpbmRseSBhZGRpbmcgIgotICAgICAgICAiYW4gRVhQRUNUX0NBTEwo
KSBpZiB5b3UgZG9uJ3QgbWVhbiB0byBlbmZvcmNlIHRoZSBjYWxsLiAgIgotICAgICAgICAiU2Vl
IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9ibG9iL21hc3Rlci9nb29nbGVt
b2NrL2RvY3MvQ29va0Jvb2subWQjIgotICAgICAgICAia25vd2luZy13aGVuLXRvLWV4cGVjdCBm
b3IgZGV0YWlscy4iOwotCi0gICAgLy8gQSB2b2lkLXJldHVybmluZyBmdW5jdGlvbi4KLSAgICBD
YXB0dXJlU3Rkb3V0KCk7Ci0gICAgYS5Eb0EoNSk7Ci0gICAgVmVyaWZ5T3V0cHV0KAotICAgICAg
ICBHZXRDYXB0dXJlZFN0ZG91dCgpLAotICAgICAgICBzaG91bGRfcHJpbnQsCi0gICAgICAgICJc
bkdNT0NLIFdBUk5JTkc6XG4iCi0gICAgICAgICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24g
Y2FsbCAtIHJldHVybmluZyBkaXJlY3RseS5cbiIKLSAgICAgICAgIiAgICBGdW5jdGlvbiBjYWxs
OiBEb0EoNSlcbiIgKwotICAgICAgICBub3RlLAotICAgICAgICAiRG9BIik7Ci0KLSAgICAvLyBB
IG5vbi12b2lkLXJldHVybmluZyBmdW5jdGlvbi4KLSAgICBDYXB0dXJlU3Rkb3V0KCk7Ci0gICAg
YS5CaW5hcnkoMiwgMSk7Ci0gICAgVmVyaWZ5T3V0cHV0KAotICAgICAgICBHZXRDYXB0dXJlZFN0
ZG91dCgpLAotICAgICAgICBzaG91bGRfcHJpbnQsCi0gICAgICAgICJcbkdNT0NLIFdBUk5JTkc6
XG4iCi0gICAgICAgICJVbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmlu
ZyBkZWZhdWx0IHZhbHVlLlxuIgotICAgICAgICAiICAgIEZ1bmN0aW9uIGNhbGw6IEJpbmFyeSgy
LCAxKVxuIgotICAgICAgICAiICAgICAgICAgIFJldHVybnM6IGZhbHNlXG4iICsKLSAgICAgICAg
bm90ZSwKLSAgICAgICAgIkJpbmFyeSIpOwotICB9Ci19OwotCi0vLyBUZXN0cyB0aGF0IC0tZ21v
Y2tfdmVyYm9zZT1pbmZvIGNhdXNlcyBib3RoIGV4cGVjdGVkIGFuZAotLy8gdW5pbnRlcmVzdGlu
ZyBjYWxscyB0byBiZSByZXBvcnRlZC4KLVRFU1RfRihHTW9ja1ZlcmJvc2VGbGFnVGVzdCwgSW5m
bykgewotICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga0luZm9WZXJib3NpdHk7Ci0gIFRlc3RFeHBl
Y3RlZENhbGwodHJ1ZSk7Ci0gIFRlc3RVbmludGVyZXN0aW5nQ2FsbE9uTmFnZ3lNb2NrKHRydWUp
OwotfQotCi0vLyBUZXN0cyB0aGF0IC0tZ21vY2tfdmVyYm9zZT13YXJuaW5nIGNhdXNlcyB1bmlu
dGVyZXN0aW5nIGNhbGxzIHRvIGJlCi0vLyByZXBvcnRlZC4KLVRFU1RfRihHTW9ja1ZlcmJvc2VG
bGFnVGVzdCwgV2FybmluZykgewotICBHTU9DS19GTEFHKHZlcmJvc2UpID0ga1dhcm5pbmdWZXJi
b3NpdHk7Ci0gIFRlc3RFeHBlY3RlZENhbGwoZmFsc2UpOwotICBUZXN0VW5pbnRlcmVzdGluZ0Nh
bGxPbk5hZ2d5TW9jayh0cnVlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCAtLWdtb2NrX3ZlcmJvc2U9
d2FybmluZyBjYXVzZXMgbmVpdGhlciBleHBlY3RlZCBub3IKLS8vIHVuaW50ZXJlc3RpbmcgY2Fs
bHMgdG8gYmUgcmVwb3J0ZWQuCi1URVNUX0YoR01vY2tWZXJib3NlRmxhZ1Rlc3QsIEVycm9yKSB7
Ci0gIEdNT0NLX0ZMQUcodmVyYm9zZSkgPSBrRXJyb3JWZXJib3NpdHk7Ci0gIFRlc3RFeHBlY3Rl
ZENhbGwoZmFsc2UpOwotICBUZXN0VW5pbnRlcmVzdGluZ0NhbGxPbk5hZ2d5TW9jayhmYWxzZSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgLS1nbW9ja192ZXJib3NlPVNPTUVfSU5WQUxJRF9WQUxVRSBo
YXMgdGhlIHNhbWUgZWZmZWN0Ci0vLyBhcyAtLWdtb2NrX3ZlcmJvc2U9d2FybmluZy4KLVRFU1Rf
RihHTW9ja1ZlcmJvc2VGbGFnVGVzdCwgSW52YWxpZEZsYWdJc1RyZWF0ZWRBc1dhcm5pbmcpIHsK
LSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbnZhbGlkIjsgIC8vIFRyZWF0ZWQgYXMgIndhcm5p
bmciLgotICBUZXN0RXhwZWN0ZWRDYWxsKGZhbHNlKTsKLSAgVGVzdFVuaW50ZXJlc3RpbmdDYWxs
T25OYWdneU1vY2sodHJ1ZSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUkVBTV9SRURJ
UkVDVElPTgotCi0vLyBBIGhlbHBlciBjbGFzcyB0aGF0IGdlbmVyYXRlcyBhIGZhaWx1cmUgd2hl
biBwcmludGVkLiAgV2UgdXNlIGl0IHRvCi0vLyBlbnN1cmUgdGhhdCBHb29nbGUgTW9jayBkb2Vz
bid0IHByaW50IGEgdmFsdWUgKGV2ZW4gdG8gYW4gaW50ZXJuYWwKLS8vIGJ1ZmZlcikgd2hlbiBp
dCBpcyBub3Qgc3VwcG9zZWQgdG8gZG8gc28uCi1jbGFzcyBQcmludE1lTm90IHt9OwotCi12b2lk
IFByaW50VG8oUHJpbnRNZU5vdCAvKiBkdW1teSAqLywgOjpzdGQ6Om9zdHJlYW0qIC8qIG9zICov
KSB7Ci0gIEFERF9GQUlMVVJFKCkgPDwgIkdvb2dsZSBNb2NrIGlzIHByaW50aW5nIGEgdmFsdWUg
dGhhdCBzaG91bGRuJ3QgYmUgIgotICAgICAgICAgICAgICAgIDw8ICJwcmludGVkIGV2ZW4gdG8g
YW4gaW50ZXJuYWwgYnVmZmVyLiI7Ci19Ci0KLWNsYXNzIExvZ1Rlc3RIZWxwZXIgewotIHB1Ymxp
YzoKLSAgTG9nVGVzdEhlbHBlcigpIHt9Ci0KLSAgTU9DS19NRVRIT0QxKEZvbywgUHJpbnRNZU5v
dChQcmludE1lTm90KSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKExvZ1Rlc3RIZWxwZXIpOwotfTsKLQotY2xhc3MgR01vY2tMb2dUZXN0IDogcHVibGlj
IFZlcmJvc2VGbGFnUHJlc2VydmluZ0ZpeHR1cmUgewotIHByb3RlY3RlZDoKLSAgTG9nVGVzdEhl
bHBlciBoZWxwZXJfOwotfTsKLQotVEVTVF9GKEdNb2NrTG9nVGVzdCwgRG9lc05vdFByaW50R29v
ZENhbGxJbnRlcm5hbGx5SWZWZXJib3NpdHlJc1dhcm5pbmcpIHsKLSAgR01PQ0tfRkxBRyh2ZXJi
b3NlKSA9IGtXYXJuaW5nVmVyYm9zaXR5OwotICBFWFBFQ1RfQ0FMTChoZWxwZXJfLCBGb28oXykp
Ci0gICAgICAuV2lsbE9uY2UoUmV0dXJuKFByaW50TWVOb3QoKSkpOwotICBoZWxwZXJfLkZvbyhQ
cmludE1lTm90KCkpOyAgLy8gVGhpcyBpcyBhbiBleHBlY3RlZCBjYWxsLgotfQotCi1URVNUX0Yo
R01vY2tMb2dUZXN0LCBEb2VzTm90UHJpbnRHb29kQ2FsbEludGVybmFsbHlJZlZlcmJvc2l0eUlz
RXJyb3IpIHsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9IGtFcnJvclZlcmJvc2l0eTsKLSAgRVhQ
RUNUX0NBTEwoaGVscGVyXywgRm9vKF8pKQotICAgICAgLldpbGxPbmNlKFJldHVybihQcmludE1l
Tm90KCkpKTsKLSAgaGVscGVyXy5Gb28oUHJpbnRNZU5vdCgpKTsgIC8vIFRoaXMgaXMgYW4gZXhw
ZWN0ZWQgY2FsbC4KLX0KLQotVEVTVF9GKEdNb2NrTG9nVGVzdCwgRG9lc05vdFByaW50V2Fybmlu
Z0ludGVybmFsbHlJZlZlcmJvc2l0eUlzRXJyb3IpIHsKLSAgR01PQ0tfRkxBRyh2ZXJib3NlKSA9
IGtFcnJvclZlcmJvc2l0eTsKLSAgT05fQ0FMTChoZWxwZXJfLCBGb28oXykpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oUHJpbnRNZU5vdCgpKSk7Ci0gIGhlbHBlcl8uRm9vKFByaW50TWVO
b3QoKSk7ICAvLyBUaGlzIHNob3VsZCBnZW5lcmF0ZSBhIHdhcm5pbmcuCi19Ci0KLS8vIFRlc3Rz
IE1vY2s6OkFsbG93TGVhaygpLgotCi1URVNUKEFsbG93TGVha1Rlc3QsIEFsbG93c0xlYWtpbmdV
bnVzZWRNb2NrT2JqZWN0KSB7Ci0gIE1vY2tBKiBhID0gbmV3IE1vY2tBOwotICBNb2NrOjpBbGxv
d0xlYWsoYSk7Ci19Ci0KLVRFU1QoQWxsb3dMZWFrVGVzdCwgQ2FuQmVDYWxsZWRCZWZvcmVPbkNh
bGwpIHsKLSAgTW9ja0EqIGEgPSBuZXcgTW9ja0E7Ci0gIE1vY2s6OkFsbG93TGVhayhhKTsKLSAg
T05fQ0FMTCgqYSwgRG9BKF8pKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgYS0+RG9BKDAp
OwotfQotCi1URVNUKEFsbG93TGVha1Rlc3QsIENhbkJlQ2FsbGVkQWZ0ZXJPbkNhbGwpIHsKLSAg
TW9ja0EqIGEgPSBuZXcgTW9ja0E7Ci0gIE9OX0NBTEwoKmEsIERvQShfKSkuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oKSk7Ci0gIE1vY2s6OkFsbG93TGVhayhhKTsKLX0KLQotVEVTVChBbGxvd0xlYWtU
ZXN0LCBDYW5CZUNhbGxlZEJlZm9yZUV4cGVjdENhbGwpIHsKLSAgTW9ja0EqIGEgPSBuZXcgTW9j
a0E7Ci0gIE1vY2s6OkFsbG93TGVhayhhKTsKLSAgRVhQRUNUX0NBTEwoKmEsIERvQShfKSk7Ci0g
IGEtPkRvQSgwKTsKLX0KLQotVEVTVChBbGxvd0xlYWtUZXN0LCBDYW5CZUNhbGxlZEFmdGVyRXhw
ZWN0Q2FsbCkgewotICBNb2NrQSogYSA9IG5ldyBNb2NrQTsKLSAgRVhQRUNUX0NBTEwoKmEsIERv
QShfKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICBNb2NrOjpBbGxvd0xlYWsoYSk7Ci19Ci0KLVRF
U1QoQWxsb3dMZWFrVGVzdCwgV29ya3NXaGVuQm90aE9uQ2FsbEFuZEV4cGVjdENhbGxBcmVQcmVz
ZW50KSB7Ci0gIE1vY2tBKiBhID0gbmV3IE1vY2tBOwotICBPTl9DQUxMKCphLCBEb0EoXykpLldp
bGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICBFWFBFQ1RfQ0FMTCgqYSwgRG9BKF8pKS5UaW1lcyhB
bnlOdW1iZXIoKSk7Ci0gIE1vY2s6OkFsbG93TGVhayhhKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3
ZSBjYW4gdmVyaWZ5IGFuZCBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZXhwZWN0YXRpb25zCi0vLyB3
aGVuIG5vbmUgb2YgaXRzIG1ldGhvZHMgaGFzIGV4cGVjdGF0aW9ucy4KLVRFU1QoVmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnNUZXN0LCBOb01ldGhvZEhhc0V4cGVjdGF0aW9ucykgewotICBNb2Nr
QiBiOwotICBBU1NFUlRfVFJVRShNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYikp
OwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMg
bm93LCBzbyB3ZSBjYW4KLSAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNUX0VRKDAsIGIu
RG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdl
IGNhbiB2ZXJpZnkgYW5kIGNsZWFyIGEgbW9jayBvYmplY3QncyBleHBlY3RhdGlvbnMKLS8vIHdo
ZW4gc29tZSwgYnV0IG5vdCBhbGwsIG9mIGl0cyBtZXRob2RzIGhhdmUgZXhwZWN0YXRpb25zICph
bmQqIHRoZQotLy8gdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLgotVEVTVChWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9uc1Rlc3QsIFNvbWVNZXRob2RzSGF2ZUV4cGVjdGF0aW9uc0FuZFN1Y2NlZWQpIHsK
LSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAgICAuV2lsbE9uY2UoUmV0
dXJuKDEpKTsKLSAgYi5Eb0IoKTsKLSAgQVNTRVJUX1RSVUUoTW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJmIpKTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25z
IG9uIHRoZSBtZXRob2RzIG5vdywgc28gd2UgY2FuCi0gIC8vIGZyZWVseSBjYWxsIHRoZW0uCi0g
IEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB3ZSBjYW4gdmVyaWZ5IGFuZCBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZXhw
ZWN0YXRpb25zCi0vLyB3aGVuIHNvbWUsIGJ1dCBub3QgYWxsLCBvZiBpdHMgbWV0aG9kcyBoYXZl
IGV4cGVjdGF0aW9ucyAqYW5kKiB0aGUKLS8vIHZlcmlmaWNhdGlvbiBmYWlscy4KLVRFU1QoVmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnNUZXN0LCBTb21lTWV0aG9kc0hhdmVFeHBlY3RhdGlvbnNB
bmRGYWlsKSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLldp
bGxPbmNlKFJldHVybigxKSk7Ci0gIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUocmVzdWx0ID0gTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJmIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKLSAg
QVNTRVJUX0ZBTFNFKHJlc3VsdCk7Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0
aW9ucyBvbiB0aGUgbWV0aG9kcyBub3csIHNvIHdlIGNhbgotICAvLyBmcmVlbHkgY2FsbCB0aGVt
LgotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIHZlcmlmeSBhbmQgY2xlYXIgYSBtb2NrIG9iamVjdCdz
IGV4cGVjdGF0aW9ucwotLy8gd2hlbiBhbGwgb2YgaXRzIG1ldGhvZHMgaGF2ZSBleHBlY3RhdGlv
bnMuCi1URVNUKFZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zVGVzdCwgQWxsTWV0aG9kc0hhdmVF
eHBlY3RhdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKCkpCi0gICAg
ICAuV2lsbE9uY2UoUmV0dXJuKDEpKTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKF8pKQotICAgICAg
LldpbGxPbmNlKFJldHVybigyKSk7Ci0gIGIuRG9CKCk7Ci0gIGIuRG9CKDEpOwotICBBU1NFUlRf
VFJVRShNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYikpOwotCi0gIC8vIFRoZXJl
IHNob3VsZCBiZSBubyBleHBlY3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4K
LSAgLy8gZnJlZWx5IGNhbGwgdGhlbS4KLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBFWFBF
Q1RfRVEoMCwgYi5Eb0IoMSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiB2ZXJpZnkgYW5k
IGNsZWFyIGEgbW9jayBvYmplY3QncyBleHBlY3RhdGlvbnMKLS8vIHdoZW4gYSBtZXRob2QgaGFz
IG1vcmUgdGhhbiBvbmUgZXhwZWN0YXRpb24uCi1URVNUKFZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zVGVzdCwgQU1ldGhvZEhhc01hbnlFeHBlY3RhdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAgRVhQ
RUNUX0NBTEwoYiwgRG9CKDApKQotICAgICAgLldpbGxPbmNlKFJldHVybigxKSk7Ci0gIEVYUEVD
VF9DQUxMKGIsIERvQihfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4oMikpOwotICBiLkRvQigx
KTsKLSAgYm9vbCByZXN1bHQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShyZXN1
bHQgPSBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICJBY3R1YWw6IG5ldmVyIGNhbGxlZCIpOwotICBBU1NFUlRfRkFMU0UocmVz
dWx0KTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gZXhwZWN0YXRpb25zIG9uIHRoZSBtZXRo
b2RzIG5vdywgc28gd2UgY2FuCi0gIC8vIGZyZWVseSBjYWxsIHRoZW0uCi0gIEVYUEVDVF9FUSgw
LCBiLkRvQigpKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKDEpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB3ZSBjYW4gY2FsbCBWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygpIG9uIHRoZSBzYW1lCi0v
LyBtb2NrIG9iamVjdCBtdWx0aXBsZSB0aW1lcy4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnNUZXN0LCBDYW5DYWxsTWFueVRpbWVzKSB7Ci0gIE1vY2tCIGI7Ci0gIEVYUEVDVF9DQUxM
KGIsIERvQigpKTsKLSAgYi5Eb0IoKTsKLSAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJmIpOwotCi0gIEVYUEVDVF9DQUxMKGIsIERvQihfKSkKLSAgICAgIC5XaWxsT25jZShSZXR1
cm4oMSkpOwotICBiLkRvQigxKTsKLSAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
JmIpOwotICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmYik7Ci0KLSAgLy8gVGhl
cmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0aG9kcyBub3csIHNvIHdlIGNh
bgotICAvLyBmcmVlbHkgY2FsbCB0aGVtLgotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIEVY
UEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNsZWFyIGEg
bW9jayBvYmplY3QncyBkZWZhdWx0IGFjdGlvbnMgd2hlbiBub25lCi0vLyBvZiBpdHMgbWV0aG9k
cyBoYXMgZGVmYXVsdCBhY3Rpb25zLgotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIE5vTWV0aG9k
SGFzRGVmYXVsdEFjdGlvbnMpIHsKLSAgTW9ja0IgYjsKLSAgLy8gSWYgdGhpcyBjcmFzaGVzIG9y
IGdlbmVyYXRlcyBhIGZhaWx1cmUsIHRoZSB0ZXN0IHdpbGwgY2F0Y2ggaXQuCi0gIE1vY2s6OlZl
cmlmeUFuZENsZWFyKCZiKTsKLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHdlIGNhbiBjbGVhciBhIG1vY2sgb2JqZWN0J3MgZGVmYXVsdCBhY3Rpb25zIHdoZW4g
c29tZSwKLS8vIGJ1dCBub3QgYWxsIG9mIGl0cyBtZXRob2RzIGhhdmUgZGVmYXVsdCBhY3Rpb25z
LgotVEVTVChWZXJpZnlBbmRDbGVhclRlc3QsIFNvbWVNZXRob2RzSGF2ZURlZmF1bHRBY3Rpb25z
KSB7Ci0gIE1vY2tCIGI7Ci0gIE9OX0NBTEwoYiwgRG9CKCkpCi0gICAgICAuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oMSkpOwotCi0gIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsKLQotICAvLyBWZXJp
ZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQgRG9CKCkgd2FzIHJlbW92ZWQuCi0g
IEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gY2xlYXIg
YSBtb2NrIG9iamVjdCdzIGRlZmF1bHQgYWN0aW9ucyB3aGVuIGFsbCBvZgotLy8gaXRzIG1ldGhv
ZHMgaGF2ZSBkZWZhdWx0IGFjdGlvbnMuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQWxsTWV0
aG9kc0hhdmVEZWZhdWx0QWN0aW9ucykgewotICBNb2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigp
KQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgT05fQ0FMTChiLCBEb0IoXykp
Ci0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOwotCi0gIE1vY2s6OlZlcmlmeUFuZENs
ZWFyKCZiKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQg
RG9CKCkgd2FzIHJlbW92ZWQuCi0gIEVYUEVDVF9FUSgwLCBiLkRvQigpKTsKLQotICAvLyBWZXJp
ZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBpbnQgRG9CKGludCkgd2FzIHJlbW92ZWQu
Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigwKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNs
ZWFyIGEgbW9jayBvYmplY3QncyBkZWZhdWx0IGFjdGlvbnMgd2hlbiBhCi0vLyBtZXRob2QgaGFz
IG1vcmUgdGhhbiBvbmUgT05fQ0FMTCgpIHNldCBvbiBpdC4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJU
ZXN0LCBBTWV0aG9kSGFzTWFueURlZmF1bHRBY3Rpb25zKSB7Ci0gIE1vY2tCIGI7Ci0gIE9OX0NB
TEwoYiwgRG9CKDApKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLSAgT05fQ0FM
TChiLCBEb0IoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMikpOwotCi0gIE1vY2s6
OlZlcmlmeUFuZENsZWFyKCZiKTsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBkZWZhdWx0IGFj
dGlvbnMgKHRoZXJlIGFyZSB0d28pIG9mIGludCBEb0IoaW50KQotICAvLyB3ZXJlIHJlbW92ZWQu
Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigwKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIGNhbGwgVmVyaWZ5QW5kQ2xlYXIoKSBvbiBhIG1vY2sg
b2JqZWN0IG11bHRpcGxlCi0vLyB0aW1lcy4KLVRFU1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LCBDYW5D
YWxsTWFueVRpbWVzKSB7Ci0gIE1vY2tCIGI7Ci0gIE9OX0NBTEwoYiwgRG9CKCkpCi0gICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBNb2NrOjpWZXJpZnlBbmRDbGVhcigmYik7Ci0g
IE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsKLQotICBPTl9DQUxMKGIsIERvQihfKSkKLSAgICAg
IC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0gIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiKTsK
LQotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgVmVyaWZ5QW5kQ2xlYXIoKSB3b3JrcyB3aGVuIHRoZSB2ZXJpZmlj
YXRpb24gc3VjY2VlZHMuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgU3VjY2VzcykgewotICBN
b2NrQiBiOwotICBPTl9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJu
KDEpKTsKLSAgRVhQRUNUX0NBTEwoYiwgRG9CKDEpKQotICAgICAgLldpbGxPbmNlKFJldHVybigy
KSk7Ci0KLSAgYi5Eb0IoKTsKLSAgYi5Eb0IoMSk7Ci0gIEFTU0VSVF9UUlVFKE1vY2s6OlZlcmlm
eUFuZENsZWFyKCZiKSk7Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBv
biB0aGUgbWV0aG9kcyBub3csIHNvIHdlIGNhbgotICAvLyBmcmVlbHkgY2FsbCB0aGVtLgotICBF
WFBFQ1RfRVEoMCwgYi5Eb0IoKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgVmVyaWZ5QW5kQ2xlYXIoKSB3b3JrcyB3aGVuIHRoZSB2ZXJpZmljYXRpb24g
ZmFpbHMuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgRmFpbHVyZSkgewotICBNb2NrQiBiOwot
ICBPTl9DQUxMKGIsIERvQihfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybigxKSk7Ci0g
IEVYUEVDVF9DQUxMKGIsIERvQigpKQotICAgICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0KLSAg
Yi5Eb0IoMSk7Ci0gIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUocmVzdWx0ID0gTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJmIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQWN0dWFsOiBuZXZlciBjYWxsZWQiKTsKLSAgQVNTRVJUX0ZBTFNFKHJlc3VsdCk7
Ci0KLSAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIGV4cGVjdGF0aW9ucyBvbiB0aGUgbWV0aG9kcyBu
b3csIHNvIHdlIGNhbgotICAvLyBmcmVlbHkgY2FsbCB0aGVtLgotICBFWFBFQ1RfRVEoMCwgYi5E
b0IoKSk7Ci0gIEVYUEVDVF9FUSgwLCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmVy
aWZ5QW5kQ2xlYXIoKSB3b3JrcyB3aGVuIHRoZSBkZWZhdWx0IGFjdGlvbnMgYW5kCi0vLyBleHBl
Y3RhdGlvbnMgYXJlIHNldCBvbiBhIGNvbnN0IG1vY2sgb2JqZWN0LgotVEVTVChWZXJpZnlBbmRD
bGVhclRlc3QsIENvbnN0KSB7Ci0gIE1vY2tCIGI7Ci0gIE9OX0NBTEwoQ29uc3QoYiksIERvQigp
KQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDEpKTsKLQotICBFWFBFQ1RfQ0FMTChDb25z
dChiKSwgRG9CKCkpCi0gICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpCi0gICAgICAuV2lsbE9u
Y2UoUmV0dXJuKDIpKTsKLQotICBiLkRvQigpOwotICBiLkRvQigpOwotICBBU1NFUlRfVFJVRShN
b2NrOjpWZXJpZnlBbmRDbGVhcigmYikpOwotCi0gIC8vIFRoZXJlIHNob3VsZCBiZSBubyBleHBl
Y3RhdGlvbnMgb24gdGhlIG1ldGhvZHMgbm93LCBzbyB3ZSBjYW4KLSAgLy8gZnJlZWx5IGNhbGwg
dGhlbS4KLSAgRVhQRUNUX0VRKDAsIGIuRG9CKCkpOwotICBFWFBFQ1RfRVEoMCwgYi5Eb0IoMSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHdlIGNhbiBzZXQgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBl
Y3RhdGlvbnMgb24gYSBtb2NrCi0vLyBvYmplY3QgYWZ0ZXIgVmVyaWZ5QW5kQ2xlYXIoKSBoYXMg
YmVlbiBjYWxsZWQgb24gaXQuCi1URVNUKFZlcmlmeUFuZENsZWFyVGVzdCwgQ2FuU2V0RGVmYXVs
dEFjdGlvbnNBbmRFeHBlY3RhdGlvbnNBZnRlcndhcmRzKSB7Ci0gIE1vY2tCIGI7Ci0gIE9OX0NB
TEwoYiwgRG9CKCkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1Rf
Q0FMTChiLCBEb0IoXykpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKDIpKTsKLSAgYi5Eb0IoMSk7
Ci0KLSAgTW9jazo6VmVyaWZ5QW5kQ2xlYXIoJmIpOwotCi0gIEVYUEVDVF9DQUxMKGIsIERvQigp
KQotICAgICAgLldpbGxPbmNlKFJldHVybigzKSk7Ci0gIE9OX0NBTEwoYiwgRG9CKF8pKQotICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKDQpKTsKLQotICBFWFBFQ1RfRVEoMywgYi5Eb0IoKSk7
Ci0gIEVYUEVDVF9FUSg0LCBiLkRvQigxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgY2FsbGluZyBW
ZXJpZnlBbmRDbGVhcigpIG9uIG9uZSBtb2NrIG9iamVjdCBkb2VzIG5vdAotLy8gYWZmZWN0IG90
aGVyIG1vY2sgb2JqZWN0cyAoZWl0aGVyIG9mIHRoZSBzYW1lIHR5cGUgb3Igbm90KS4KLVRFU1Qo
VmVyaWZ5QW5kQ2xlYXJUZXN0LCBEb2VzTm90QWZmZWN0T3RoZXJNb2NrT2JqZWN0cykgewotICBN
b2NrQSBhOwotICBNb2NrQiBiMTsKLSAgTW9ja0IgYjI7Ci0KLSAgT05fQ0FMTChhLCBCaW5hcnko
XywgXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4odHJ1ZSkpOwotICBFWFBFQ1RfQ0FM
TChhLCBCaW5hcnkoXywgXykpCi0gICAgICAuV2lsbE9uY2UoRG9EZWZhdWx0KCkpCi0gICAgICAu
V2lsbE9uY2UoUmV0dXJuKGZhbHNlKSk7Ci0KLSAgT05fQ0FMTChiMSwgRG9CKCkpCi0gICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTChiMSwgRG9CKF8pKQotICAg
ICAgLldpbGxPbmNlKFJldHVybigyKSk7Ci0KLSAgT05fQ0FMTChiMiwgRG9CKCkpCi0gICAgICAu
V2lsbEJ5RGVmYXVsdChSZXR1cm4oMykpOwotICBFWFBFQ1RfQ0FMTChiMiwgRG9CKF8pKTsKLQot
ICBiMi5Eb0IoMCk7Ci0gIE1vY2s6OlZlcmlmeUFuZENsZWFyKCZiMik7Ci0KLSAgLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb25zIGFuZCBleHBlY3RhdGlvbnMgb2YgYSBhbmQgYjEK
LSAgLy8gYXJlIHN0aWxsIGluIGVmZmVjdC4KLSAgRVhQRUNUX1RSVUUoYS5CaW5hcnkoMCwgMCkp
OwotICBFWFBFQ1RfRkFMU0UoYS5CaW5hcnkoMCwgMCkpOwotCi0gIEVYUEVDVF9FUSgxLCBiMS5E
b0IoKSk7Ci0gIEVYUEVDVF9FUSgyLCBiMS5Eb0IoMCkpOwotfQotCi1URVNUKFZlcmlmeUFuZENs
ZWFyVGVzdCwKLSAgICAgRGVzdHJveWluZ0NoYWluZWRNb2Nrc0RvZXNOb3REZWFkbG9ja1Rocm91
Z2hFeHBlY3RhdGlvbnMpIHsKLSAgbGlua2VkX3B0cjxNb2NrQT4gYShuZXcgTW9ja0EpOwotICBS
ZWZlcmVuY2VIb2xkaW5nTW9jayB0ZXN0X21vY2s7Ci0KLSAgLy8gRVhQRUNUX0NBTEwgc3RvcmVz
IGEgcmVmZXJlbmNlIHRvIGEgaW5zaWRlIHRlc3RfbW9jay4KLSAgRVhQRUNUX0NBTEwodGVzdF9t
b2NrLCBBY2NlcHRSZWZlcmVuY2UoXykpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoU2V0QXJnUG9p
bnRlZTwwPihhKSk7Ci0KLSAgLy8gVGhyb3cgYXdheSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBtb2Nr
IHRoYXQgd2UgaGF2ZSBpbiBhLiBBZnRlciB0aGlzLCB0aGUKLSAgLy8gb25seSByZWZlcmVuY2Ug
dG8gaXQgaXMgc3RvcmVkIGJ5IHRlc3RfbW9jay4KLSAgYS5yZXNldCgpOwotCi0gIC8vIFdoZW4g
dGVzdF9tb2NrIGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBkZXN0cm95cyB0aGUgbGFzdCByZW1haW5p
bmcgcmVmZXJlbmNlCi0gIC8vIHRvIHRoZSBtb2NrIG9iamVjdCBvcmlnaW5hbGx5IHBvaW50ZWQg
dG8gYnkgYS4gVGhpcyB3aWxsIGNhdXNlIHRoZSBNb2NrQQotICAvLyBkZXN0cnVjdG9yIHRvIGJl
IGNhbGxlZCBmcm9tIGluc2lkZSB0aGUgUmVmZXJlbmNlSG9sZGluZ01vY2sgZGVzdHJ1Y3Rvci4K
LSAgLy8gVGhlIHN0YXRlIG9mIGFsbCBtb2NrcyBpcyBwcm90ZWN0ZWQgYnkgYSBzaW5nbGUgZ2xv
YmFsIGxvY2ssIGJ1dCB0aGVyZQotICAvLyBzaG91bGQgYmUgbm8gZGVhZGxvY2suCi19Ci0KLVRF
U1QoVmVyaWZ5QW5kQ2xlYXJUZXN0LAotICAgICBEZXN0cm95aW5nQ2hhaW5lZE1vY2tzRG9lc05v
dERlYWRsb2NrVGhyb3VnaERlZmF1bHRBY3Rpb24pIHsKLSAgbGlua2VkX3B0cjxNb2NrQT4gYShu
ZXcgTW9ja0EpOwotICBSZWZlcmVuY2VIb2xkaW5nTW9jayB0ZXN0X21vY2s7Ci0KLSAgLy8gT05f
Q0FMTCBzdG9yZXMgYSByZWZlcmVuY2UgdG8gYSBpbnNpZGUgdGVzdF9tb2NrLgotICBPTl9DQUxM
KHRlc3RfbW9jaywgQWNjZXB0UmVmZXJlbmNlKF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoU2V0
QXJnUG9pbnRlZTwwPihhKSk7Ci0KLSAgLy8gVGhyb3cgYXdheSB0aGUgcmVmZXJlbmNlIHRvIHRo
ZSBtb2NrIHRoYXQgd2UgaGF2ZSBpbiBhLiBBZnRlciB0aGlzLCB0aGUKLSAgLy8gb25seSByZWZl
cmVuY2UgdG8gaXQgaXMgc3RvcmVkIGJ5IHRlc3RfbW9jay4KLSAgYS5yZXNldCgpOwotCi0gIC8v
IFdoZW4gdGVzdF9tb2NrIGdvZXMgb3V0IG9mIHNjb3BlLCBpdCBkZXN0cm95cyB0aGUgbGFzdCBy
ZW1haW5pbmcgcmVmZXJlbmNlCi0gIC8vIHRvIHRoZSBtb2NrIG9iamVjdCBvcmlnaW5hbGx5IHBv
aW50ZWQgdG8gYnkgYS4gVGhpcyB3aWxsIGNhdXNlIHRoZSBNb2NrQQotICAvLyBkZXN0cnVjdG9y
IHRvIGJlIGNhbGxlZCBmcm9tIGluc2lkZSB0aGUgUmVmZXJlbmNlSG9sZGluZ01vY2sgZGVzdHJ1
Y3Rvci4KLSAgLy8gVGhlIHN0YXRlIG9mIGFsbCBtb2NrcyBpcyBwcm90ZWN0ZWQgYnkgYSBzaW5n
bGUgZ2xvYmFsIGxvY2ssIGJ1dCB0aGVyZQotICAvLyBzaG91bGQgYmUgbm8gZGVhZGxvY2suCi19
Ci0KLS8vIFRlc3RzIHRoYXQgYSBtb2NrIGZ1bmN0aW9uJ3MgYWN0aW9uIGNhbiBjYWxsIGEgbW9j
ayBmdW5jdGlvbgotLy8gKGVpdGhlciB0aGUgc2FtZSBmdW5jdGlvbiBvciBhIGRpZmZlcmVudCBv
bmUpIGVpdGhlciBhcyBhbiBleHBsaWNpdAotLy8gYWN0aW9uIG9yIGFzIGEgZGVmYXVsdCBhY3Rp
b24gd2l0aG91dCBjYXVzaW5nIGEgZGVhZCBsb2NrLiAgSXQKLS8vIHZlcmlmaWVzIHRoYXQgdGhl
IGFjdGlvbiBpcyBub3QgcGVyZm9ybWVkIGluc2lkZSB0aGUgY3JpdGljYWwKLS8vIHNlY3Rpb24u
Ci1URVNUKFN5bmNocm9uaXphdGlvblRlc3QsIENhbkNhbGxNb2NrTWV0aG9kSW5BY3Rpb24pIHsK
LSAgTW9ja0EgYTsKLSAgTW9ja0MgYzsKLSAgT05fQ0FMTChhLCBEb0EoXykpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChJZ25vcmVSZXN1bHQoSW52b2tlV2l0aG91dEFyZ3MoJmMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1vY2tDOjpOb25Wb2lk
TWV0aG9kKSkpOwotICBFWFBFQ1RfQ0FMTChhLCBEb0EoMSkpOwotICBFWFBFQ1RfQ0FMTChhLCBE
b0EoMSkpCi0gICAgICAuV2lsbE9uY2UoSW52b2tlKCZhLCAmTW9ja0E6OkRvQSkpCi0gICAgICAu
UmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1RfQ0FMTChjLCBOb25Wb2lkTWV0aG9kKCkp
OwotCi0gIGEuRG9BKDEpOwotICAvLyBUaGlzIHdpbGwgbWF0Y2ggdGhlIHNlY29uZCBFWFBFQ1Rf
Q0FMTCgpIGFuZCB0cmlnZ2VyIGFub3RoZXIgYS5Eb0EoMSksCi0gIC8vIHdoaWNoIHdpbGwgaW4g
dHVybiBtYXRjaCB0aGUgZmlyc3QgRVhQRUNUX0NBTEwoKSBhbmQgdHJpZ2dlciBhIGNhbGwgdG8K
LSAgLy8gYy5Ob25Wb2lkTWV0aG9kKCkgdGhhdCB3YXMgc3BlY2lmaWVkIGJ5IHRoZSBPTl9DQUxM
KCkgc2luY2UgdGhlIGZpcnN0Ci0gIC8vIEVYUEVDVF9DQUxMKCkgZGlkIG5vdCBzcGVjaWZ5IGFu
IGFjdGlvbi4KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLS8vIEFsbG93cyB0aGUgdXNlciB0byBk
ZWZpbmUgaGlzIG93biBtYWluIGFuZCB0aGVuIGludm9rZSBnbW9ja19tYWluCi0vLyBmcm9tIGl0
LiBUaGlzIG1pZ2h0IGJlIG5lY2Vzc2FyeSBvbiBzb21lIHBsYXRmb3JtcyB3aGljaCByZXF1aXJl
Ci0vLyBzcGVjaWZpYyBzZXR1cCBhbmQgdGVhcmRvd24uCi0jaWYgR01PQ0tfUkVOQU1FX01BSU4K
LWludCBnbW9ja19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2Vsc2UKLWludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2VuZGlmICAvLyBHTU9DS19SRU5BTUVfTUFJTgot
ICB0ZXN0aW5nOjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0KLSAgLy8gRW5zdXJlcyB0
aGF0IHRoZSB0ZXN0cyBwYXNzIG5vIG1hdHRlciB3aGF0IHZhbHVlIG9mCi0gIC8vIC0tZ21vY2tf
Y2F0Y2hfbGVha2VkX21vY2tzIGFuZCAtLWdtb2NrX3ZlcmJvc2UgdGhlIHVzZXIgc3BlY2lmaWVz
LgotICB0ZXN0aW5nOjpHTU9DS19GTEFHKGNhdGNoX2xlYWtlZF9tb2NrcykgPSB0cnVlOwotICB0
ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpID0gdGVzdGluZzo6aW50ZXJuYWw6OmtXYXJuaW5n
VmVyYm9zaXR5OwotCi0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xlbW9jay90ZXN0L2dtb2NrX2FsbF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9j
a19hbGxfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZkNmM0OWNjYzUz
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19hbGxfdGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsgKEdv
b2dsZSBNb2NrKQotLy8KLS8vIFNvbWUgdXNlcnMgdXNlIGEgYnVpbGQgc3lzdGVtIHRoYXQgR29v
Z2xlIE1vY2sgZG9lc24ndCBzdXBwb3J0IGRpcmVjdGx5LAotLy8geWV0IHRoZXkgc3RpbGwgd2Fu
dCB0byBidWlsZCBhbmQgcnVuIEdvb2dsZSBNb2NrJ3Mgb3duIHRlc3RzLiAgVGhpcyBmaWxlCi0v
LyBpbmNsdWRlcyBtb3N0IHN1Y2ggdGVzdHMsIG1ha2luZyBpdCBlYXNpZXIgZm9yIHRoZXNlIHVz
ZXJzIHRvIG1haW50YWluCi0vLyB0aGVpciBidWlsZCBzY3JpcHRzICh0aGV5IGp1c3QgbmVlZCB0
byBidWlsZCB0aGlzIGZpbGUsIGV2ZW4gdGhvdWdoIHRoZQotLy8gYmVsb3cgbGlzdCBvZiBhY3R1
YWwgKl90ZXN0LmNjIGZpbGVzIG1pZ2h0IGNoYW5nZSkuCi0jaW5jbHVkZSAidGVzdC9nbW9jay1h
Y3Rpb25zX3Rlc3QuY2MiCi0jaW5jbHVkZSAidGVzdC9nbW9jay1jYXJkaW5hbGl0aWVzX3Rlc3Qu
Y2MiCi0jaW5jbHVkZSAidGVzdC9nbW9jay1nZW5lcmF0ZWQtYWN0aW9uc190ZXN0LmNjIgotI2lu
Y2x1ZGUgInRlc3QvZ21vY2stZ2VuZXJhdGVkLWZ1bmN0aW9uLW1vY2tlcnNfdGVzdC5jYyIKLSNp
bmNsdWRlICJ0ZXN0L2dtb2NrLWdlbmVyYXRlZC1pbnRlcm5hbC11dGlsc190ZXN0LmNjIgotI2lu
Y2x1ZGUgInRlc3QvZ21vY2stZ2VuZXJhdGVkLW1hdGNoZXJzX3Rlc3QuY2MiCi0jaW5jbHVkZSAi
dGVzdC9nbW9jay1pbnRlcm5hbC11dGlsc190ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ21vY2st
bWF0Y2hlcnNfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLW1vcmUtYWN0aW9uc190ZXN0
LmNjIgotI2luY2x1ZGUgInRlc3QvZ21vY2stbmljZS1zdHJpY3RfdGVzdC5jYyIKLSNpbmNsdWRl
ICJ0ZXN0L2dtb2NrLXBvcnRfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrLXNwZWMtYnVp
bGRlcnNfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2dtb2NrX3Rlc3QuY2MiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrX2V4X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZmVkODZhYjk2
Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfZXhfdGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUg
SW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pCi0KLS8vIFRlc3RzIEdvb2dsZSBNb2NrJ3MgZnVuY3Rpb25hbGl0eSB0aGF0IGRlcGVu
ZHMgb24gZXhjZXB0aW9ucy4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHsKLQotdXNpbmcgdGVzdGluZzo6SGFzU3Vic3Ry
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdvb2dsZVRlc3RGYWlsdXJlRXhjZXB0aW9uOwot
Ci0vLyBBIHR5cGUgdGhhdCBjYW5ub3QgYmUgZGVmYXVsdCBjb25zdHJ1Y3RlZC4KLWNsYXNzIE5v
bkRlZmF1bHRDb25zdHJ1Y3RpYmxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE5vbkRlZmF1bHRD
b25zdHJ1Y3RpYmxlKGludCAvKiBkdW1teSAqLykge30KLX07Ci0KLWNsYXNzIE1vY2tGb28gewot
IHB1YmxpYzoKLSAgLy8gQSBtb2NrIG1ldGhvZCB0aGF0IHJldHVybnMgYSB1c2VyLWRlZmluZWQg
dHlwZS4gIEdvb2dsZSBNb2NrCi0gIC8vIGRvZXNuJ3Qga25vdyB3aGF0IHRoZSBkZWZhdWx0IHZh
bHVlIGZvciB0aGlzIHR5cGUgaXMuCi0gIE1PQ0tfTUVUSE9EMChHZXROb25EZWZhdWx0Q29uc3Ry
dWN0aWJsZSwgTm9uRGVmYXVsdENvbnN0cnVjdGlibGUoKSk7Ci19OwotCi0jaWYgR1RFU1RfSEFT
X0VYQ0VQVElPTlMKLQotVEVTVChEZWZhdWx0VmFsdWVUZXN0LCBUaHJvd3NSdW50aW1lRXJyb3JX
aGVuTm9EZWZhdWx0VmFsdWUpIHsKLSAgTW9ja0ZvbyBtb2NrOwotICB0cnkgewotICAgIC8vIE5v
IGV4cGVjdGF0aW9uIGlzIHNldCBvbiB0aGlzIG1ldGhvZCwgc28gR29vZ2xlIE1vY2sgbXVzdAot
ICAgIC8vIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4gIEhvd2V2ZXIsIHNpbmNlIEdvb2dsZSBN
b2NrIGtub3dzCi0gICAgLy8gbm90aGluZyBhYm91dCB0aGUgcmV0dXJuIHR5cGUsIGl0IGRvZXNu
J3Qga25vdyB3aGF0IHRvIHJldHVybiwKLSAgICAvLyBhbmQgaGFzIHRvIHRocm93ICh3aGVuIGV4
Y2VwdGlvbnMgYXJlIGVuYWJsZWQpIG9yIGFib3J0Ci0gICAgLy8gKG90aGVyd2lzZSkuCi0gICAg
bW9jay5HZXROb25EZWZhdWx0Q29uc3RydWN0aWJsZSgpOwotICAgIEZBSUwoKSA8PCAiR2V0Tm9u
RGVmYXVsdENvbnN0cnVjdGlibGUoKSdzIHJldHVybiB0eXBlIGhhcyBubyBkZWZhdWx0ICIKLSAg
ICAgICAgICAgPDwgInZhbHVlLCBzbyBHb29nbGUgTW9jayBzaG91bGQgaGF2ZSB0aHJvd24uIjsK
LSAgfSBjYXRjaCAoY29uc3QgR29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24mIC8qIHVudXNlZCAq
LykgewotICAgIEZBSUwoKSA8PCAiR29vZ2xlIFRlc3QgZG9lcyBub3QgdHJ5IHRvIGNhdGNoIGFu
IGV4Y2VwdGlvbiBvZiB0eXBlICIKLSAgICAgICAgICAgPDwgIkdvb2dsZVRlc3RGYWlsdXJlRXhj
ZXB0aW9uLCB3aGljaCBpcyB1c2VkIGZvciByZXBvcnRpbmcgIgotICAgICAgICAgICA8PCAiYSBm
YWlsdXJlIHRvIG90aGVyIHRlc3RpbmcgZnJhbWV3b3Jrcy4gIEdvb2dsZSBNb2NrIHNob3VsZCAi
Ci0gICAgICAgICAgIDw8ICJub3QgdGhyb3cgYSBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiBh
cyBpdCB3aWxsIGtpbGwgdGhlICIKLSAgICAgICAgICAgPDwgImVudGlyZSB0ZXN0IHByb2dyYW0g
aW5zdGVhZCBvZiBqdXN0IHRoZSBjdXJyZW50IFRFU1QuIjsKLSAgfSBjYXRjaCAoY29uc3Qgc3Rk
OjpleGNlcHRpb24mIGV4KSB7Ci0gICAgRVhQRUNUX1RIQVQoZXgud2hhdCgpLCBIYXNTdWJzdHIo
ImhhcyBubyBkZWZhdWx0IHZhbHVlIikpOwotICB9Ci19Ci0KLSNlbmRpZgotCi19ICAvLyB1bm5h
bWVkIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xlYWtfdGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggOTk3NjgwY2UxYWViLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZW1vY2svdGVzdC9nbW9ja19sZWFrX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVGVz
dHMgdGhhdCBsZWFrZWQgbW9jayBvYmplY3RzIGNhbiBiZSBjYXVnaHQgYmUgR29vZ2xlIE1vY2su
IiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLQot
aW1wb3J0IGdtb2NrX3Rlc3RfdXRpbHMKLQotCi1QUk9HUkFNX1BBVEggPSBnbW9ja190ZXN0X3V0
aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ21vY2tfbGVha190ZXN0XycpCi1URVNUX1dJVEhf
RVhQRUNUX0NBTEwgPSBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9maWx0ZXI9KkV4cGVjdENhbGwq
J10KLVRFU1RfV0lUSF9PTl9DQUxMID0gW1BST0dSQU1fUEFUSCwgJy0tZ3Rlc3RfZmlsdGVyPSpP
bkNhbGwqJ10KLVRFU1RfTVVMVElQTEVfTEVBS1MgPSBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9m
aWx0ZXI9Kk11bHRpcGxlTGVha2VkKiddCi0KLWVudmlyb24gPSBnbW9ja190ZXN0X3V0aWxzLmVu
dmlyb24KLVNldEVudlZhciA9IGdtb2NrX3Rlc3RfdXRpbHMuU2V0RW52VmFyCi0KLSMgVGVzdHMg
aW4gdGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhw
ZWN0IGl0Ci0jIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBp
bmNvbXBhdGlibGUgd2l0aAotIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBk
ZXNpZ24uICBVbnNldCB0aGUKLSMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBH
b29nbGUgVGVzdCBmcm9tIGNyZWF0aW5nCi0jIHRoZSBmaWxlLgotU2V0RW52VmFyKGdtb2NrX3Rl
c3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQotCi0KLWNsYXNzIEdN
b2NrTGVha1Rlc3QoZ21vY2tfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0KLSAgZGVmIHRlc3RDYXRj
aGVzTGVha2VkTW9ja0J5RGVmYXVsdChzZWxmKToKLSAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAot
ICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9XSVRI
X0VYUEVDVF9DQUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVu
dmlyb24pLmV4aXRfY29kZSkKLSAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAotICAgICAgICAwLAot
ICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9XSVRIX09OX0NBTEwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJvbikuZXhpdF9jb2Rl
KQotCi0gIGRlZiB0ZXN0RG9lc05vdENhdGNoTGVha2VkTW9ja1doZW5EaXNhYmxlZChzZWxmKToK
LSAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgMCwKLSAgICAgICAgZ21vY2tfdGVzdF91
dGlscy5TdWJwcm9jZXNzKFRFU1RfV0lUSF9FWFBFQ1RfQ0FMTCArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJy0tZ21vY2tfY2F0Y2hfbGVha2VkX21vY2tzPTAnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUp
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgIDAsCi0gICAgICAgIGdtb2NrX3Rlc3Rf
dXRpbHMuU3VicHJvY2VzcyhURVNUX1dJVEhfT05fQ0FMTCArCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbJy0tZ21vY2tfY2F0Y2hfbGVha2VkX21vY2tzPTAnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCi0K
LSAgZGVmIHRlc3RDYXRjaGVzTGVha2VkTW9ja1doZW5FbmFibGVkKHNlbGYpOgotICAgIHNlbGYu
YXNzZXJ0Tm90RXF1YWwoCi0gICAgICAgIDAsCi0gICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMuU3Vi
cHJvY2VzcyhURVNUX1dJVEhfRVhQRUNUX0NBTEwgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyctLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2NrcyddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29kZSkKLSAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKAotICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0X3V0aWxzLlN1
YnByb2Nlc3MoVEVTVF9XSVRIX09OX0NBTEwgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyctLWdtb2NrX2NhdGNoX2xlYWtlZF9tb2NrcyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29kZSkKLQotICBkZWYgdGVz
dENhdGNoZXNMZWFrZWRNb2NrV2hlbkVuYWJsZWRXaXRoRXhwbGljdEZsYWdWYWx1ZShzZWxmKToK
LSAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAotICAgICAgICAwLAotICAgICAgICBnbW9ja190ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoVEVTVF9XSVRIX0VYUEVDVF9DQUxMICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3M9MSddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudmlyb24pLmV4aXRfY29k
ZSkKLQotICBkZWYgdGVzdENhdGNoZXNNdWx0aXBsZUxlYWtlZE1vY2tzKHNlbGYpOgotICAgIHNl
bGYuYXNzZXJ0Tm90RXF1YWwoCi0gICAgICAgIDAsCi0gICAgICAgIGdtb2NrX3Rlc3RfdXRpbHMu
U3VicHJvY2VzcyhURVNUX01VTFRJUExFX0xFQUtTICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsnLS1nbW9ja19jYXRjaF9sZWFrZWRfbW9ja3MnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnZpcm9uKS5leGl0X2NvZGUpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ21vY2tfdGVzdF91dGlscy5NYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfbGVha190ZXN0Xy5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2Nr
L3Rlc3QvZ21vY2tfbGVha190ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWQyN2QyMmY2MmQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19s
ZWFrX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9y
IHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4KLS8vCi0vLyBUaGlzIHByb2dyYW0gaXMgZm9yIHZl
cmlmeWluZyB0aGF0IGEgbGVha2VkIG1vY2sgb2JqZWN0IGNhbiBiZQotLy8gY2F1Z2h0IGJ5IEdv
b2dsZSBNb2NrJ3MgbGVhayBkZXRlY3Rvci4KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0K
LW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6dGVzdGluZzo6UmV0dXJuOwotCi1jbGFzcyBGb29JbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+Rm9vSW50ZXJmYWNlKCkge30KLSAgdmlydHVh
bCB2b2lkIERvVGhpcygpID0gMDsKLX07Ci0KLWNsYXNzIE1vY2tGb28gOiBwdWJsaWMgRm9vSW50
ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIE1vY2tGb28oKSB7fQotCi0gIE1PQ0tfTUVUSE9EMChEb1Ro
aXMsIHZvaWQoKSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE1vY2tGb28pOwotfTsKLQotVEVTVChMZWFrVGVzdCwgTGVha2VkTW9ja1dpdGhFeHBlY3RD
YWxsQ2F1c2VzRmFpbHVyZVdoZW5MZWFrQ2hlY2tpbmdJc0VuYWJsZWQpIHsKLSAgTW9ja0Zvbyog
Zm9vID0gbmV3IE1vY2tGb287Ci0KLSAgRVhQRUNUX0NBTEwoKmZvbywgRG9UaGlzKCkpOwotICBm
b28tPkRvVGhpcygpOwotCi0gIC8vIEluIG9yZGVyIHRvIHRlc3QgdGhlIGxlYWsgZGV0ZWN0b3Is
IHdlIGRlbGliZXJhdGVseSBsZWFrIGZvby4KLQotICAvLyBNYWtlcyBzdXJlIEdvb2dsZSBNb2Nr
J3MgbGVhayBkZXRlY3RvciBjYW4gY2hhbmdlIHRoZSBleGl0IGNvZGUKLSAgLy8gdG8gMSBldmVu
IHdoZW4gdGhlIGNvZGUgaXMgYWxyZWFkeSBleGl0aW5nIHdpdGggMC4KLSAgZXhpdCgwKTsKLX0K
LQotVEVTVChMZWFrVGVzdCwgTGVha2VkTW9ja1dpdGhPbkNhbGxDYXVzZXNGYWlsdXJlV2hlbkxl
YWtDaGVja2luZ0lzRW5hYmxlZCkgewotICBNb2NrRm9vKiBmb28gPSBuZXcgTW9ja0ZvbzsKLQot
ICBPTl9DQUxMKCpmb28sIERvVGhpcygpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLQotICAv
LyBJbiBvcmRlciB0byB0ZXN0IHRoZSBsZWFrIGRldGVjdG9yLCB3ZSBkZWxpYmVyYXRlbHkgbGVh
ayBmb28uCi0KLSAgLy8gTWFrZXMgc3VyZSBHb29nbGUgTW9jaydzIGxlYWsgZGV0ZWN0b3IgY2Fu
IGNoYW5nZSB0aGUgZXhpdCBjb2RlCi0gIC8vIHRvIDEgZXZlbiB3aGVuIHRoZSBjb2RlIGlzIGFs
cmVhZHkgZXhpdGluZyB3aXRoIDAuCi0gIGV4aXQoMCk7Ci19Ci0KLVRFU1QoTGVha1Rlc3QsIENh
dGNoZXNNdWx0aXBsZUxlYWtlZE1vY2tPYmplY3RzKSB7Ci0gIE1vY2tGb28qIGZvbzEgPSBuZXcg
TW9ja0ZvbzsKLSAgTW9ja0ZvbyogZm9vMiA9IG5ldyBNb2NrRm9vOwotCi0gIE9OX0NBTEwoKmZv
bzEsIERvVGhpcygpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgRVhQRUNUX0NBTEwoKmZv
bzIsIERvVGhpcygpKTsKLSAgZm9vMi0+RG9UaGlzKCk7Ci0KLSAgLy8gSW4gb3JkZXIgdG8gdGVz
dCB0aGUgbGVhayBkZXRlY3Rvciwgd2UgZGVsaWJlcmF0ZWx5IGxlYWsgZm9vMSBhbmQKLSAgLy8g
Zm9vMi4KLQotICAvLyBNYWtlcyBzdXJlIEdvb2dsZSBNb2NrJ3MgbGVhayBkZXRlY3RvciBjYW4g
Y2hhbmdlIHRoZSBleGl0IGNvZGUKLSAgLy8gdG8gMSBldmVuIHdoZW4gdGhlIGNvZGUgaXMgYWxy
ZWFkeSBleGl0aW5nIHdpdGggMC4KLSAgZXhpdCgwKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX2xpbmsyX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRjMzEwYzNkODM0Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21v
Y2tfbGluazJfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pLCB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQot
Ci0vLyBHb29nbGUgTW9jayAtIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIEMrKyBtb2NrIGNsYXNz
ZXMuCi0vLwotLy8gVGhpcyBmaWxlIGlzIGZvciB2ZXJpZnlpbmcgdGhhdCB2YXJpb3VzIEdvb2ds
ZSBNb2NrIGNvbnN0cnVjdHMgZG8gbm90Ci0vLyBwcm9kdWNlIGxpbmtlciBlcnJvcnMgd2hlbiBp
bnN0YW50aWF0ZWQgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzLgotLy8gUGxlYXNlIHNl
ZSBnbW9ja19saW5rX3Rlc3QuaCBmb3IgZGV0YWlscy4KLQotI2RlZmluZSBMaW5rVGVzdCBMaW5r
VGVzdDIKLQotI2luY2x1ZGUgICJ0ZXN0L2dtb2NrX2xpbmtfdGVzdC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dt
b2NrX2xpbmtfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFlOTdkMTBj
YTNhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja19saW5rX3Rlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKSwgdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8gR29vZ2xlIE1v
Y2sgLSBhIGZyYW1ld29yayBmb3Igd3JpdGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRo
aXMgZmlsZSBpcyBmb3IgdmVyaWZ5aW5nIHRoYXQgdmFyaW91cyBHb29nbGUgTW9jayBjb25zdHJ1
Y3RzIGRvIG5vdAotLy8gcHJvZHVjZSBsaW5rZXIgZXJyb3JzIHdoZW4gaW5zdGFudGlhdGVkIGlu
IGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cy4KLS8vIFBsZWFzZSBzZWUgZ21vY2tfbGlua190
ZXN0LmggZm9yIGRldGFpbHMuCi0KLSNkZWZpbmUgTGlua1Rlc3QgTGlua1Rlc3QxCi0KLSNpbmNs
dWRlICAidGVzdC9nbW9ja19saW5rX3Rlc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rl
c3QvZ21vY2tfbGlua190ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjU1ZjViZDdmNGYuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX2xpbmtfdGVzdC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjY5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8v
IG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0v
LyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8v
IEdvb2dsZSBNb2NrIC0gYSBmcmFtZXdvcmsgZm9yIHdyaXRpbmcgQysrIG1vY2sgY2xhc3Nlcy4K
LS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhhdDoKLS8vIGEuIEEgaGVhZGVyIGZpbGUgZGVmaW5p
bmcgYSBtb2NrIGNsYXNzIGNhbiBiZSBpbmNsdWRlZCBpbiBtdWx0aXBsZQotLy8gICAgdHJhbnNs
YXRpb24gdW5pdHMgd2l0aG91dCBjYXVzaW5nIGEgbGluayBlcnJvci4KLS8vIGIuIEFjdGlvbnMg
YW5kIG1hdGNoZXJzIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aCBpZGVudGljYWwgdGVtcGxhdGUK
LS8vICAgIGFyZ3VtZW50cyBpbiBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgd2l0aG91dCBj
YXVzaW5nIGxpbmsKLS8vICAgIGVycm9ycy4KLS8vICAgIFRoZSBmb2xsb3dpbmcgY29uc3RydWN0
cyBhcmUgY3VycmVudGx5IHRlc3RlZDoKLS8vICAgIEFjdGlvbnM6Ci0vLyAgICAgIFJldHVybigp
Ci0vLyAgICAgIFJldHVybih2YWx1ZSkKLS8vICAgICAgUmV0dXJuTnVsbAotLy8gICAgICBSZXR1
cm5SZWYKLS8vICAgICAgQXNzaWduCi0vLyAgICAgIFNldEFyZ1BvaW50ZWUKLS8vICAgICAgU2V0
QXJyYXlBcmd1bWVudAotLy8gICAgICBTZXRFcnJub0FuZFJldHVybgotLy8gICAgICBJbnZva2Uo
ZnVuY3Rpb24pCi0vLyAgICAgIEludm9rZShvYmplY3QsIG1ldGhvZCkKLS8vICAgICAgSW52b2tl
V2l0aG91dEFyZ3MoZnVuY3Rpb24pCi0vLyAgICAgIEludm9rZVdpdGhvdXRBcmdzKG9iamVjdCwg
bWV0aG9kKQotLy8gICAgICBJbnZva2VBcmd1bWVudAotLy8gICAgICBXaXRoQXJnCi0vLyAgICAg
IFdpdGhBcmdzCi0vLyAgICAgIFdpdGhvdXRBcmdzCi0vLyAgICAgIERvQWxsCi0vLyAgICAgIERv
RGVmYXVsdAotLy8gICAgICBJZ25vcmVSZXN1bHQKLS8vICAgICAgVGhyb3cKLS8vICAgICAgQUNU
SU9OKCktZ2VuZXJhdGVkCi0vLyAgICAgIEFDVElPTl9QKCktZ2VuZXJhdGVkCi0vLyAgICAgIEFD
VElPTl9QMigpLWdlbmVyYXRlZAotLy8gICAgTWF0Y2hlcnM6Ci0vLyAgICAgIF8KLS8vICAgICAg
QQotLy8gICAgICBBbgotLy8gICAgICBFcQotLy8gICAgICBHdCwgTHQsIEdlLCBMZSwgTmUKLS8v
ICAgICAgTm90TnVsbAotLy8gICAgICBSZWYKLS8vICAgICAgVHlwZWRFcQotLy8gICAgICBEb3Vi
bGVFcQotLy8gICAgICBGbG9hdEVxCi0vLyAgICAgIE5hblNlbnNpdGl2ZURvdWJsZUVxCi0vLyAg
ICAgIE5hblNlbnNpdGl2ZUZsb2F0RXEKLS8vICAgICAgQ29udGFpbnNSZWdleAotLy8gICAgICBN
YXRjaGVzUmVnZXgKLS8vICAgICAgRW5kc1dpdGgKLS8vICAgICAgSGFzU3Vic3RyCi0vLyAgICAg
IFN0YXJ0c1dpdGgKLS8vICAgICAgU3RyQ2FzZUVxCi0vLyAgICAgIFN0ckNhc2VOZQotLy8gICAg
ICBTdHJFcQotLy8gICAgICBTdHJOZQotLy8gICAgICBFbGVtZW50c0FyZQotLy8gICAgICBFbGVt
ZW50c0FyZUFycmF5Ci0vLyAgICAgIENvbnRhaW5lckVxCi0vLyAgICAgIEZpZWxkCi0vLyAgICAg
IFByb3BlcnR5Ci0vLyAgICAgIFJlc3VsdE9mKGZ1bmN0aW9uKQotLy8gICAgICBQb2ludGVlCi0v
LyAgICAgIFRydWx5KHByZWRpY2F0ZSkKLS8vICAgICAgQWxsT2YKLS8vICAgICAgQW55T2YKLS8v
ICAgICAgTm90Ci0vLyAgICAgIE1hdGNoZXJDYXN0PFQ+Ci0vLwotLy8gIFBsZWFzZSBub3RlOiB0
aGlzIHRlc3QgZG9lcyBub3QgdmVyaWZ5IHRoZSBmdW5jdGlvbmluZyBvZiB0aGVzZQotLy8gIGNv
bnN0cnVjdHMsIG9ubHkgdGhhdCB0aGUgcHJvZ3JhbXMgdXNpbmcgdGhlbSB3aWxsIGxpbmsgc3Vj
Y2Vzc2Z1bGx5LgotLy8KLS8vIEltcGxlbWVudGF0aW9uIG5vdGU6Ci0vLyBUaGlzIHRlc3QgcmVx
dWlyZXMgaWRlbnRpY2FsIGRlZmluaXRpb25zIG9mIEludGVyZmFjZSBhbmQgTW9jayB0byBiZQot
Ly8gaW5jbHVkZWQgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzLiAgV2UgYWNoaWV2ZSB0
aGlzIGJ5IHdyaXRpbmcKLS8vIHRoZW0gaW4gdGhpcyBoZWFkZXIgYW5kICNpbmNsdWRpbmcgaXQg
aW4gZ21vY2tfbGlua190ZXN0LmNjIGFuZAotLy8gZ21vY2tfbGluazJfdGVzdC5jYy4gIEJlY2F1
c2UgdGhlIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IKLS8vIHRob3NlIGNv
bnN0cnVjdHMgbXVzdCBiZSBpZGVudGljYWwgaW4gYm90aCB0cmFuc2xhdGlvbiB1bml0cywKLS8v
IGRlZmluaXRpb25zIG9mIEludGVyZmFjZSBhbmQgTW9jayB0ZXN0cyBNVVNUIGJlIGtlcHQgaW4g
dGhlIFNBTUUKLS8vIE5PTi1BTk9OWU1PVVMgbmFtZXNwYWNlIGluIHRoaXMgZmlsZS4gIFRoZSB0
ZXN0IGZpeHR1cmUgY2xhc3MgTGlua1Rlc3QKLS8vIGlzIGRlZmluZWQgYXMgTGlua1Rlc3QxIGlu
IGdtb2NrX2xpbmtfdGVzdC5jYyBhbmQgYXMgTGlua1Rlc3QyIGluCi0vLyBnbW9ja19saW5rMl90
ZXN0LmNjIHRvIGF2b2lkIHByb2R1Y2luZyBsaW5rZXIgZXJyb3JzLgotCi0jaWZuZGVmIEdNT0NL
X1RFU1RfR01PQ0tfTElOS19URVNUX0hfCi0jZGVmaW5lIEdNT0NLX1RFU1RfR01PQ0tfTElOS19U
RVNUX0hfCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotCi0jaWYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0jIGluY2x1ZGUgPGVycm5vLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgImdtb2Nr
L2ludGVybmFsL2dtb2NrLXBvcnQuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1
ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgdGVzdGluZzo6XzsKLXVz
aW5nIHRlc3Rpbmc6OkE7Ci11c2luZyB0ZXN0aW5nOjpBbGxPZjsKLXVzaW5nIHRlc3Rpbmc6OkFu
eU9mOwotdXNpbmcgdGVzdGluZzo6QXNzaWduOwotdXNpbmcgdGVzdGluZzo6Q29udGFpbmVyRXE7
Ci11c2luZyB0ZXN0aW5nOjpEb0FsbDsKLXVzaW5nIHRlc3Rpbmc6OkRvRGVmYXVsdDsKLXVzaW5n
IHRlc3Rpbmc6OkRvdWJsZUVxOwotdXNpbmcgdGVzdGluZzo6RWxlbWVudHNBcmU7Ci11c2luZyB0
ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5OwotdXNpbmcgdGVzdGluZzo6RW5kc1dpdGg7Ci11c2lu
ZyB0ZXN0aW5nOjpFcTsKLXVzaW5nIHRlc3Rpbmc6OkZpZWxkOwotdXNpbmcgdGVzdGluZzo6Rmxv
YXRFcTsKLXVzaW5nIHRlc3Rpbmc6OkdlOwotdXNpbmcgdGVzdGluZzo6R3Q7Ci11c2luZyB0ZXN0
aW5nOjpIYXNTdWJzdHI7Ci11c2luZyB0ZXN0aW5nOjpJZ25vcmVSZXN1bHQ7Ci11c2luZyB0ZXN0
aW5nOjpJbnZva2U7Ci11c2luZyB0ZXN0aW5nOjpJbnZva2VBcmd1bWVudDsKLXVzaW5nIHRlc3Rp
bmc6Okludm9rZVdpdGhvdXRBcmdzOwotdXNpbmcgdGVzdGluZzo6SXNOdWxsOwotdXNpbmcgdGVz
dGluZzo6TGU7Ci11c2luZyB0ZXN0aW5nOjpMdDsKLXVzaW5nIHRlc3Rpbmc6Ok1hdGNoZXI7Ci11
c2luZyB0ZXN0aW5nOjpNYXRjaGVyQ2FzdDsKLXVzaW5nIHRlc3Rpbmc6Ok5hblNlbnNpdGl2ZURv
dWJsZUVxOwotdXNpbmcgdGVzdGluZzo6TmFuU2Vuc2l0aXZlRmxvYXRFcTsKLXVzaW5nIHRlc3Rp
bmc6Ok5lOwotdXNpbmcgdGVzdGluZzo6Tm90OwotdXNpbmcgdGVzdGluZzo6Tm90TnVsbDsKLXVz
aW5nIHRlc3Rpbmc6OlBvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjpQcm9wZXJ0eTsKLXVzaW5nIHRl
c3Rpbmc6OlJlZjsKLXVzaW5nIHRlc3Rpbmc6OlJlc3VsdE9mOwotdXNpbmcgdGVzdGluZzo6UmV0
dXJuOwotdXNpbmcgdGVzdGluZzo6UmV0dXJuTnVsbDsKLXVzaW5nIHRlc3Rpbmc6OlJldHVyblJl
ZjsKLXVzaW5nIHRlc3Rpbmc6OlNldEFyZ1BvaW50ZWU7Ci11c2luZyB0ZXN0aW5nOjpTZXRBcnJh
eUFyZ3VtZW50OwotdXNpbmcgdGVzdGluZzo6U3RhcnRzV2l0aDsKLXVzaW5nIHRlc3Rpbmc6OlN0
ckNhc2VFcTsKLXVzaW5nIHRlc3Rpbmc6OlN0ckNhc2VOZTsKLXVzaW5nIHRlc3Rpbmc6OlN0ckVx
OwotdXNpbmcgdGVzdGluZzo6U3RyTmU7Ci11c2luZyB0ZXN0aW5nOjpUcnVseTsKLXVzaW5nIHRl
c3Rpbmc6OlR5cGVkRXE7Ci11c2luZyB0ZXN0aW5nOjpXaXRoQXJnOwotdXNpbmcgdGVzdGluZzo6
V2l0aEFyZ3M7Ci11c2luZyB0ZXN0aW5nOjpXaXRob3V0QXJnczsKLQotI2lmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotdXNpbmcgdGVzdGluZzo6U2V0RXJybm9BbmRSZXR1cm47Ci0jZW5kaWYK
LQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi11c2luZyB0ZXN0aW5nOjpUaHJvdzsKLSNlbmRp
ZgotCi11c2luZyB0ZXN0aW5nOjpDb250YWluc1JlZ2V4OwotdXNpbmcgdGVzdGluZzo6TWF0Y2hl
c1JlZ2V4OwotCi1jbGFzcyBJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+SW50ZXJm
YWNlKCkge30KLSAgdmlydHVhbCB2b2lkIFZvaWRGcm9tU3RyaW5nKGNoYXIqIHN0cikgPSAwOwot
ICB2aXJ0dWFsIGNoYXIqIFN0cmluZ0Zyb21TdHJpbmcoY2hhciogc3RyKSA9IDA7Ci0gIHZpcnR1
YWwgaW50IEludEZyb21TdHJpbmcoY2hhciogc3RyKSA9IDA7Ci0gIHZpcnR1YWwgaW50JiBJbnRS
ZWZGcm9tU3RyaW5nKGNoYXIqIHN0cikgPSAwOwotICB2aXJ0dWFsIHZvaWQgVm9pZEZyb21GdW5j
KHZvaWQoKmZ1bmMpKGNoYXIqIHN0cikpID0gMDsKLSAgdmlydHVhbCB2b2lkIFZvaWRGcm9tSW50
UmVmKGludCYgbikgPSAwOyAgLy8gTk9MSU5UCi0gIHZpcnR1YWwgdm9pZCBWb2lkRnJvbUZsb2F0
KGZsb2F0IG4pID0gMDsKLSAgdmlydHVhbCB2b2lkIFZvaWRGcm9tRG91YmxlKGRvdWJsZSBuKSA9
IDA7Ci0gIHZpcnR1YWwgdm9pZCBWb2lkRnJvbVZlY3Rvcihjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+
JiB2KSA9IDA7Ci19OwotCi1jbGFzcyBNb2NrOiBwdWJsaWMgSW50ZXJmYWNlIHsKLSBwdWJsaWM6
Ci0gIE1vY2soKSB7fQotCi0gIE1PQ0tfTUVUSE9EMShWb2lkRnJvbVN0cmluZywgdm9pZChjaGFy
KiBzdHIpKTsKLSAgTU9DS19NRVRIT0QxKFN0cmluZ0Zyb21TdHJpbmcsIGNoYXIqKGNoYXIqIHN0
cikpOwotICBNT0NLX01FVEhPRDEoSW50RnJvbVN0cmluZywgaW50KGNoYXIqIHN0cikpOwotICBN
T0NLX01FVEhPRDEoSW50UmVmRnJvbVN0cmluZywgaW50JihjaGFyKiBzdHIpKTsKLSAgTU9DS19N
RVRIT0QxKFZvaWRGcm9tRnVuYywgdm9pZCh2b2lkKCpmdW5jKShjaGFyKiBzdHIpKSk7Ci0gIE1P
Q0tfTUVUSE9EMShWb2lkRnJvbUludFJlZiwgdm9pZChpbnQmIG4pKTsgIC8vIE5PTElOVAotICBN
T0NLX01FVEhPRDEoVm9pZEZyb21GbG9hdCwgdm9pZChmbG9hdCBuKSk7Ci0gIE1PQ0tfTUVUSE9E
MShWb2lkRnJvbURvdWJsZSwgdm9pZChkb3VibGUgbikpOwotICBNT0NLX01FVEhPRDEoVm9pZEZy
b21WZWN0b3IsIHZvaWQoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdikpOwotCi0gcHJpdmF0ZToK
LSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhNb2NrKTsKLX07Ci0KLWNsYXNzIElu
dm9rZUhlbHBlciB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBTdGF0aWNWb2lkRnJvbVZvaWQo
KSB7fQotICB2b2lkIFZvaWRGcm9tVm9pZCgpIHt9Ci0gIHN0YXRpYyB2b2lkIFN0YXRpY1ZvaWRG
cm9tU3RyaW5nKGNoYXIqIC8qIHN0ciAqLykge30KLSAgdm9pZCBWb2lkRnJvbVN0cmluZyhjaGFy
KiAvKiBzdHIgKi8pIHt9Ci0gIHN0YXRpYyBpbnQgU3RhdGljSW50RnJvbVN0cmluZyhjaGFyKiAv
KiBzdHIgKi8pIHsgcmV0dXJuIDE7IH0KLSAgc3RhdGljIGJvb2wgU3RhdGljQm9vbEZyb21TdHJp
bmcoY29uc3QgY2hhciogLyogc3RyICovKSB7IHJldHVybiB0cnVlOyB9Ci19OwotCi1jbGFzcyBG
aWVsZEhlbHBlciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBGaWVsZEhlbHBlcihpbnQgYV9maWVs
ZCkgOiBmaWVsZF8oYV9maWVsZCkge30KLSAgaW50IGZpZWxkKCkgY29uc3QgeyByZXR1cm4gZmll
bGRfOyB9Ci0gIGludCBmaWVsZF87ICAvLyBOT0xJTlQgLS0gbmVlZCBleHRlcm5hbCBhY2Nlc3Mg
dG8gZmllbGRfIHRvIHRlc3QKLSAgICAgICAgICAgICAgIC8vICAgICAgICAgICB0aGUgRmllbGQg
bWF0Y2hlci4KLX07Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBSZXR1cm5Wb2lkIGFj
dGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RSZXR1cm5Wb2lkKSB7Ci0gIE1vY2sgbW9jazsKLQot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoUmV0dXJuKCkp
OwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKE5VTEwpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2Fn
ZSBvZiB0aGUgUmV0dXJuIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RSZXR1cm4pIHsKLSAg
TW9jayBtb2NrOwotICBjaGFyIGNoID0gJ3gnOwotCi0gIEVYUEVDVF9DQUxMKG1vY2ssIFN0cmlu
Z0Zyb21TdHJpbmcoXykpLldpbGxPbmNlKFJldHVybigmY2gpKTsKLSAgbW9jay5TdHJpbmdGcm9t
U3RyaW5nKE5VTEwpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgUmV0dXJuTnVs
bCBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0UmV0dXJuTnVsbCkgewotICBNb2NrIG1vY2s7
Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFJldHVy
bigpKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxp
bmthZ2Ugb2YgdGhlIFJldHVyblJlZiBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0UmV0dXJu
UmVmKSB7Ci0gIE1vY2sgbW9jazsKLSAgaW50IG4gPSA0MjsKLQotICBFWFBFQ1RfQ0FMTChtb2Nr
LCBJbnRSZWZGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShSZXR1cm5SZWYobikpOwotICBtb2NrLklu
dFJlZkZyb21TdHJpbmcoTlVMTCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBB
c3NpZ24gYWN0aW9uLgotVEVTVChMaW5rVGVzdCwgVGVzdEFzc2lnbikgewotICBNb2NrIG1vY2s7
Ci0gIGNoYXIgY2ggPSAneCc7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmco
XykpLldpbGxPbmNlKEFzc2lnbigmY2gsICd5JykpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKE5V
TEwpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgU2V0QXJnUG9pbnRlZSBhY3Rp
b24uCi1URVNUKExpbmtUZXN0LCBUZXN0U2V0QXJnUG9pbnRlZSkgewotICBNb2NrIG1vY2s7Ci0g
IGNoYXIgY2ggPSAneCc7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoXykp
LldpbGxPbmNlKFNldEFyZ1BvaW50ZWU8MD4oJ3knKSk7Ci0gIG1vY2suVm9pZEZyb21TdHJpbmco
JmNoKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFNldEFycmF5QXJndW1lbnQg
YWN0aW9uLgotVEVTVChMaW5rVGVzdCwgVGVzdFNldEFycmF5QXJndW1lbnQpIHsKLSAgTW9jayBt
b2NrOwotICBjaGFyIGNoID0gJ3gnOwotICBjaGFyIGNoMiA9ICd5JzsKLQotICBFWFBFQ1RfQ0FM
TChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoU2V0QXJyYXlBcmd1bWVudDwwPigm
Y2gyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY2gyICsgMSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKCZjaCk7
Ci19Ci0KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gVGVzdHMgdGhlIGxpbmth
Z2Ugb2YgdGhlIFNldEVycm5vQW5kUmV0dXJuIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RT
ZXRFcnJub0FuZFJldHVybikgewotICBNb2NrIG1vY2s7Ci0KLSAgaW50IHNhdmVkX2Vycm5vID0g
ZXJybm87Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIEludEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFNl
dEVycm5vQW5kUmV0dXJuKDEsIC0xKSk7Ci0gIG1vY2suSW50RnJvbVN0cmluZyhOVUxMKTsKLSAg
ZXJybm8gPSBzYXZlZF9lcnJubzsKLX0KLQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEludm9rZShmdW5jdGlvbikgYW5k
IEludm9rZShvYmplY3QsIG1ldGhvZCkgYWN0aW9ucy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RJbnZv
a2UpIHsKLSAgTW9jayBtb2NrOwotICBJbnZva2VIZWxwZXIgdGVzdF9pbnZva2VfaGVscGVyOwot
Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNl
KEludm9rZSgmSW52b2tlSGVscGVyOjpTdGF0aWNWb2lkRnJvbVN0cmluZykpCi0gICAgICAuV2ls
bE9uY2UoSW52b2tlKCZ0ZXN0X2ludm9rZV9oZWxwZXIsICZJbnZva2VIZWxwZXI6OlZvaWRGcm9t
U3RyaW5nKSk7Ci0gIG1vY2suVm9pZEZyb21TdHJpbmcoTlVMTCk7Ci0gIG1vY2suVm9pZEZyb21T
dHJpbmcoTlVMTCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJbnZva2VXaXRo
b3V0QXJncyBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBUZXN0SW52b2tlV2l0aG91dEFyZ3MpIHsK
LSAgTW9jayBtb2NrOwotICBJbnZva2VIZWxwZXIgdGVzdF9pbnZva2VfaGVscGVyOwotCi0gIEVY
UEVDVF9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNlKEludm9r
ZVdpdGhvdXRBcmdzKCZJbnZva2VIZWxwZXI6OlN0YXRpY1ZvaWRGcm9tVm9pZCkpCi0gICAgICAu
V2lsbE9uY2UoSW52b2tlV2l0aG91dEFyZ3MoJnRlc3RfaW52b2tlX2hlbHBlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmSW52b2tlSGVscGVyOjpWb2lkRnJvbVZvaWQpKTsK
LSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxM
KTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEludm9rZUFyZ3VtZW50IGFjdGlv
bi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RJbnZva2VBcmd1bWVudCkgewotICBNb2NrIG1vY2s7Ci0g
IGNoYXIgY2ggPSAneCc7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9pZEZyb21GdW5jKF8pKS5X
aWxsT25jZShJbnZva2VBcmd1bWVudDwwPigmY2gpKTsKLSAgbW9jay5Wb2lkRnJvbUZ1bmMoSW52
b2tlSGVscGVyOjpTdGF0aWNWb2lkRnJvbVN0cmluZyk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5r
YWdlIG9mIHRoZSBXaXRoQXJnIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RXaXRoQXJnKSB7
Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkK
LSAgICAgIC5XaWxsT25jZShXaXRoQXJnPDA+KEludm9rZSgmSW52b2tlSGVscGVyOjpTdGF0aWNW
b2lkRnJvbVN0cmluZykpKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8g
VGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFdpdGhBcmdzIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3Qs
IFRlc3RXaXRoQXJncykgewotICBNb2NrIG1vY2s7Ci0KLSAgRVhQRUNUX0NBTEwobW9jaywgVm9p
ZEZyb21TdHJpbmcoXykpCi0gICAgICAuV2lsbE9uY2UoV2l0aEFyZ3M8MD4oSW52b2tlKCZJbnZv
a2VIZWxwZXI6OlN0YXRpY1ZvaWRGcm9tU3RyaW5nKSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5n
KE5VTEwpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgV2l0aG91dEFyZ3MgYWN0
aW9uLgotVEVTVChMaW5rVGVzdCwgVGVzdFdpdGhvdXRBcmdzKSB7Ci0gIE1vY2sgbW9jazsKLQot
ICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoV2l0aG91dEFy
Z3MoUmV0dXJuKCkpKTsKLSAgbW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVz
dHMgdGhlIGxpbmthZ2Ugb2YgdGhlIERvQWxsIGFjdGlvbi4KLVRFU1QoTGlua1Rlc3QsIFRlc3RE
b0FsbCkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7Ci0KLSAgRVhQRUNUX0NBTEwo
bW9jaywgVm9pZEZyb21TdHJpbmcoXykpCi0gICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJnUG9p
bnRlZTwwPigneScpLCBSZXR1cm4oKSkpOwotICBtb2NrLlZvaWRGcm9tU3RyaW5nKCZjaCk7Ci19
Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBEb0RlZmF1bHQgYWN0aW9uLgotVEVTVChM
aW5rVGVzdCwgVGVzdERvRGVmYXVsdCkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgY2ggPSAneCc7
Ci0KLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbEJ5RGVmYXVsdChSZXR1
cm4oKSk7Ci0gIEVYUEVDVF9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShE
b0RlZmF1bHQoKSk7Ci0gIG1vY2suVm9pZEZyb21TdHJpbmcoJmNoKTsKLX0KLQotLy8gVGVzdHMg
dGhlIGxpbmthZ2Ugb2YgdGhlIElnbm9yZVJlc3VsdCBhY3Rpb24uCi1URVNUKExpbmtUZXN0LCBU
ZXN0SWdub3JlUmVzdWx0KSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBW
b2lkRnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoSWdub3JlUmVzdWx0KFJldHVybig0MikpKTsKLSAg
bW9jay5Wb2lkRnJvbVN0cmluZyhOVUxMKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05T
Ci0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUgVGhyb3cgYWN0aW9uLgotVEVTVChMaW5rVGVz
dCwgVGVzdFRocm93KSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBFQ1RfQ0FMTChtb2NrLCBWb2lk
RnJvbVN0cmluZyhfKSkuV2lsbE9uY2UoVGhyb3coNDIpKTsKLSAgRVhQRUNUX1RIUk9XKG1vY2su
Vm9pZEZyb21TdHJpbmcoTlVMTCksIGludCk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENF
UFRJT05TCi0KLS8vIFRoZSBBQ1RJT04qKCkgbWFjcm9zIHRyaWdnZXIgd2FybmluZyBDNDEwMCAo
dW5yZWZlcmVuY2VkIGZvcm1hbAotLy8gcGFyYW1ldGVyKSBpbiBNU1ZDIHdpdGggLVc0LiAgVW5m
b3J0dW5hdGVseSB0aGV5IGNhbm5vdCBiZSBmaXhlZCBpbgotLy8gdGhlIG1hY3JvIGRlZmluaXRp
b24sIGFzIHRoZSB3YXJuaW5ncyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIG1hY3JvCi0vLyBpcyBl
eHBhbmRlZCBhbmQgbWFjcm8gZXhwYW5zaW9uIGNhbm5vdCBjb250YWluICNwcmFnbWEuICBUaGVy
ZWZvcmUKLS8vIHdlIHN1cHByZXNzIHRoZW0gaGVyZS4KLSNpZmRlZiBfTVNDX1ZFUgotIyBwcmFn
bWEgd2FybmluZyhwdXNoKQotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYK
LQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgYWN0aW9ucyBjcmVhdGVkIHVzaW5nIEFDVElPTiBt
YWNyby4KLW5hbWVzcGFjZSB7Ci1BQ1RJT04oUmV0dXJuMSkgeyByZXR1cm4gMTsgfQotfQotCi1U
RVNUKExpbmtUZXN0LCBUZXN0QWN0aW9uTWFjcm8pIHsKLSAgTW9jayBtb2NrOwotCi0gIEVYUEVD
VF9DQUxMKG1vY2ssIEludEZyb21TdHJpbmcoXykpLldpbGxPbmNlKFJldHVybjEoKSk7Ci0gIG1v
Y2suSW50RnJvbVN0cmluZyhOVUxMKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgYWN0
aW9ucyBjcmVhdGVkIHVzaW5nIEFDVElPTl9QIG1hY3JvLgotbmFtZXNwYWNlIHsKLUFDVElPTl9Q
KFJldHVybkFyZ3VtZW50LCByZXRfdmFsdWUpIHsgcmV0dXJuIHJldF92YWx1ZTsgfQotfQotCi1U
RVNUKExpbmtUZXN0LCBUZXN0QWN0aW9uUE1hY3JvKSB7Ci0gIE1vY2sgbW9jazsKLQotICBFWFBF
Q1RfQ0FMTChtb2NrLCBJbnRGcm9tU3RyaW5nKF8pKS5XaWxsT25jZShSZXR1cm5Bcmd1bWVudCg0
MikpOwotICBtb2NrLkludEZyb21TdHJpbmcoTlVMTCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5r
YWdlIG9mIGFjdGlvbnMgY3JlYXRlZCB1c2luZyBBQ1RJT05fUDIgbWFjcm8uCi1uYW1lc3BhY2Ug
ewotQUNUSU9OX1AyKFJldHVybkVxdWFsc0VpdGhlck9mLCBmaXJzdCwgc2Vjb25kKSB7Ci0gIHJl
dHVybiBhcmcwID09IGZpcnN0IHx8IGFyZzAgPT0gc2Vjb25kOwotfQotfQotCi0jaWZkZWYgX01T
Q19WRVIKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLVRFU1QoTGlua1Rlc3QsIFRl
c3RBY3Rpb25QMk1hY3JvKSB7Ci0gIE1vY2sgbW9jazsKLSAgY2hhciBjaCA9ICd4JzsKLQotICBF
WFBFQ1RfQ0FMTChtb2NrLCBJbnRGcm9tU3RyaW5nKF8pKQotICAgICAgLldpbGxPbmNlKFJldHVy
bkVxdWFsc0VpdGhlck9mKCJvbmUiLCAidHdvIikpOwotICBtb2NrLkludEZyb21TdHJpbmcoJmNo
KTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlICJfIiBtYXRjaGVyLgotVEVTVChM
aW5rVGVzdCwgVGVzdE1hdGNoZXJBbnl0aGluZykgewotICBNb2NrIG1vY2s7Ci0KLSAgT05fQ0FM
TChtb2NrLCBWb2lkRnJvbVN0cmluZyhfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBBIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBU
ZXN0TWF0Y2hlckEpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21T
dHJpbmcoQTxjaGFyKj4oKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotfQotCi0vLyBUZXN0
cyB0aGUgbGlua2FnZSBvZiB0aGUgRXEgYW5kIHRoZSAiYmFyZSB2YWx1ZSIgbWF0Y2hlci4KLVRF
U1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyc0VxKSB7Ci0gIE1vY2sgbW9jazsKLSAgY29uc3QgY2hh
ciogcCA9ICJ4IjsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKEVxKHApKSkuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoY29u
c3RfY2FzdDxjaGFyKj4oInkiKSkpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19
Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBMdCwgR3QsIExlLCBHZSwgYW5kIE5lIG1h
dGNoZXJzLgotVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJzUmVsYXRpb25zKSB7Ci0gIE1vY2sg
bW9jazsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tRmxvYXQoTHQoMS4wZikpKS5XaWxsQnlE
ZWZhdWx0KFJldHVybigpKTsKLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbUZsb2F0KEd0KDEuMGYp
KSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21GbG9h
dChMZSgxLjBmKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZv
aWRGcm9tRmxvYXQoR2UoMS4wZikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLSAgT05fQ0FM
TChtb2NrLCBWb2lkRnJvbUZsb2F0KE5lKDEuMGYpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBOb3ROdWxsIG1hdGNoZXIuCi1URVNU
KExpbmtUZXN0LCBUZXN0TWF0Y2hlck5vdE51bGwpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NB
TEwobW9jaywgVm9pZEZyb21TdHJpbmcoTm90TnVsbCgpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBJc051bGwgbWF0Y2hlci4KLVRF
U1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVySXNOdWxsKSB7Ci0gIE1vY2sgbW9jazsKLQotICBPTl9D
QUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKElzTnVsbCgpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBSZWYgbWF0Y2hlci4KLVRFU1Qo
TGlua1Rlc3QsIFRlc3RNYXRjaGVyUmVmKSB7Ci0gIE1vY2sgbW9jazsKLSAgaW50IGEgPSAwOwot
Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21JbnRSZWYoUmVmKGEpKSkuV2lsbEJ5RGVmYXVsdChS
ZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBUeXBlZEVxIG1hdGNo
ZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlclR5cGVkRXEpIHsKLSAgTW9jayBtb2NrOwot
ICBsb25nIGEgPSAwOwotCi0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21JbnRSZWYoVHlwZWRFcTxp
bnQmPihhKSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlu
a2FnZSBvZiB0aGUgRmxvYXRFcSwgRG91YmxlRXEsIE5hblNlbnNpdGl2ZUZsb2F0RXEgYW5kCi0v
LyBOYW5TZW5zaXRpdmVEb3VibGVFcSBtYXRjaGVycy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRj
aGVyc0Zsb2F0aW5nUG9pbnQpIHsKLSAgTW9jayBtb2NrOwotICBmbG9hdCBhID0gMDsKLQotICBP
Tl9DQUxMKG1vY2ssIFZvaWRGcm9tRmxvYXQoRmxvYXRFcShhKSkpLldpbGxCeURlZmF1bHQoUmV0
dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tRG91YmxlKERvdWJsZUVxKGEpKSkuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21GbG9hdChOYW5T
ZW5zaXRpdmVGbG9hdEVxKGEpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwo
bW9jaywgVm9pZEZyb21Eb3VibGUoTmFuU2Vuc2l0aXZlRG91YmxlRXEoYSkpKQotICAgICAgLldp
bGxCeURlZmF1bHQoUmV0dXJuKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBvZiB0aGUg
Q29udGFpbnNSZWdleCBtYXRjaGVyLgotVEVTVChMaW5rVGVzdCwgVGVzdE1hdGNoZXJDb250YWlu
c1JlZ2V4KSB7Ci0gIE1vY2sgbW9jazsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5n
KENvbnRhaW5zUmVnZXgoIi4qIikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotLy8g
VGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIE1hdGNoZXNSZWdleCBtYXRjaGVyLgotVEVTVChMaW5r
VGVzdCwgVGVzdE1hdGNoZXJNYXRjaGVzUmVnZXgpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NB
TEwobW9jaywgVm9pZEZyb21TdHJpbmcoTWF0Y2hlc1JlZ2V4KCIuKiIpKSkuV2lsbEJ5RGVmYXVs
dChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBTdGFydHNXaXRo
LCBFbmRzV2l0aCwgYW5kIEhhc1N1YnN0ciBtYXRjaGVycy4KLVRFU1QoTGlua1Rlc3QsIFRlc3RN
YXRjaGVyc1N1YnN0cmluZ3MpIHsKLSAgTW9jayBtb2NrOwotCi0gIE9OX0NBTEwobW9jaywgVm9p
ZEZyb21TdHJpbmcoU3RhcnRzV2l0aCgiYSIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0g
IE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoRW5kc1dpdGgoImMiKSkpLldpbGxCeURlZmF1
bHQoUmV0dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3RyaW5nKEhhc1N1YnN0cigi
YiIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdl
IG9mIHRoZSBTdHJFcSwgU3RyTmUsIFN0ckNhc2VFcSwgYW5kIFN0ckNhc2VOZSBtYXRjaGVycy4K
LVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyc1N0cmluZ0VxdWFsaXR5KSB7Ci0gIE1vY2sgbW9j
azsKLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVN0cmluZyhTdHJFcSgiYSIpKSkuV2lsbEJ5RGVm
YXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwobW9jaywgVm9pZEZyb21TdHJpbmcoU3RyTmUoImEi
KSkpLldpbGxCeURlZmF1bHQoUmV0dXJuKCkpOwotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tU3Ry
aW5nKFN0ckNhc2VFcSgiYSIpKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oKSk7Ci0gIE9OX0NBTEwo
bW9jaywgVm9pZEZyb21TdHJpbmcoU3RyQ2FzZU5lKCJhIikpKS5XaWxsQnlEZWZhdWx0KFJldHVy
bigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEVsZW1lbnRzQXJlIG1hdGNo
ZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckVsZW1lbnRzQXJlKSB7Ci0gIE1vY2sgbW9j
azsKLQotICBPTl9DQUxMKG1vY2ssIFZvaWRGcm9tVmVjdG9yKEVsZW1lbnRzQXJlKCdhJywgXykp
KS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2Yg
dGhlIEVsZW1lbnRzQXJlQXJyYXkgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVy
RWxlbWVudHNBcmVBcnJheSkgewotICBNb2NrIG1vY2s7Ci0gIGNoYXIgYXJyW10gPSB7ICdhJywg
J2InIH07Ci0KLSAgT05fQ0FMTChtb2NrLCBWb2lkRnJvbVZlY3RvcihFbGVtZW50c0FyZUFycmF5
KGFycikpKS5XaWxsQnlEZWZhdWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmth
Z2Ugb2YgdGhlIENvbnRhaW5lckVxIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hl
ckNvbnRhaW5lckVxKSB7Ci0gIE1vY2sgbW9jazsKLSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotCi0g
IE9OX0NBTEwobW9jaywgVm9pZEZyb21WZWN0b3IoQ29udGFpbmVyRXEodikpKS5XaWxsQnlEZWZh
dWx0KFJldHVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEZpZWxkIG1h
dGNoZXIuCi1URVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlckZpZWxkKSB7Ci0gIEZpZWxkSGVscGVy
IGhlbHBlcigwKTsKLQotICBNYXRjaGVyPGNvbnN0IEZpZWxkSGVscGVyJj4gbSA9IEZpZWxkKCZG
aWVsZEhlbHBlcjo6ZmllbGRfLCBFcSgwKSk7Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcyhoZWxw
ZXIpKTsKLQotICBNYXRjaGVyPGNvbnN0IEZpZWxkSGVscGVyKj4gbTIgPSBGaWVsZCgmRmllbGRI
ZWxwZXI6OmZpZWxkXywgRXEoMCkpOwotICBFWFBFQ1RfVFJVRShtMi5NYXRjaGVzKCZoZWxwZXIp
KTsKLX0KLQotLy8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIFByb3BlcnR5IG1hdGNoZXIuCi1U
RVNUKExpbmtUZXN0LCBUZXN0TWF0Y2hlclByb3BlcnR5KSB7Ci0gIEZpZWxkSGVscGVyIGhlbHBl
cigwKTsKLQotICBNYXRjaGVyPGNvbnN0IEZpZWxkSGVscGVyJj4gbSA9IFByb3BlcnR5KCZGaWVs
ZEhlbHBlcjo6ZmllbGQsIEVxKDApKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKGhlbHBlcikp
OwotCi0gIE1hdGNoZXI8Y29uc3QgRmllbGRIZWxwZXIqPiBtMiA9IFByb3BlcnR5KCZGaWVsZEhl
bHBlcjo6ZmllbGQsIEVxKDApKTsKLSAgRVhQRUNUX1RSVUUobTIuTWF0Y2hlcygmaGVscGVyKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBSZXN1bHRPZiBtYXRjaGVyLgotVEVT
VChMaW5rVGVzdCwgVGVzdE1hdGNoZXJSZXN1bHRPZikgewotICBNYXRjaGVyPGNoYXIqPiBtID0g
UmVzdWx0T2YoJkludm9rZUhlbHBlcjo6U3RhdGljSW50RnJvbVN0cmluZywgRXEoMSkpOwotICBF
WFBFQ1RfVFJVRShtLk1hdGNoZXMoTlVMTCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2FnZSBv
ZiB0aGUgUmVzdWx0T2YgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyUG9pbnRl
ZSkgewotICBpbnQgbiA9IDE7Ci0KLSAgTWF0Y2hlcjxpbnQqPiBtID0gUG9pbnRlZShFcSgxKSk7
Ci0gIEVYUEVDVF9UUlVFKG0uTWF0Y2hlcygmbikpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2Fn
ZSBvZiB0aGUgVHJ1bHkgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyVHJ1bHkp
IHsKLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IFRydWx5KCZJbnZva2VIZWxwZXI6OlN0YXRp
Y0Jvb2xGcm9tU3RyaW5nKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIGxpbmthZ2Ugb2YgdGhlIEFsbE9mIG1hdGNoZXIuCi1URVNUKExpbmtUZXN0
LCBUZXN0TWF0Y2hlckFsbE9mKSB7Ci0gIE1hdGNoZXI8aW50PiBtID0gQWxsT2YoXywgRXEoMSkp
OwotICBFWFBFQ1RfVFJVRShtLk1hdGNoZXMoMSkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlua2Fn
ZSBvZiB0aGUgQW55T2YgbWF0Y2hlci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyQW55T2Yp
IHsKLSAgTWF0Y2hlcjxpbnQ+IG0gPSBBbnlPZihfLCBFcSgxKSk7Ci0gIEVYUEVDVF9UUlVFKG0u
TWF0Y2hlcygxKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBsaW5rYWdlIG9mIHRoZSBOb3QgbWF0Y2hl
ci4KLVRFU1QoTGlua1Rlc3QsIFRlc3RNYXRjaGVyTm90KSB7Ci0gIE1hdGNoZXI8aW50PiBtID0g
Tm90KF8pOwotICBFWFBFQ1RfRkFMU0UobS5NYXRjaGVzKDEpKTsKLX0KLQotLy8gVGVzdHMgdGhl
IGxpbmthZ2Ugb2YgdGhlIE1hdGNoZXJDYXN0PFQ+KCkgZnVuY3Rpb24uCi1URVNUKExpbmtUZXN0
LCBUZXN0TWF0Y2hlckNhc3QpIHsKLSAgTWF0Y2hlcjxjb25zdCBjaGFyKj4gbSA9IE1hdGNoZXJD
YXN0PGNvbnN0IGNoYXIqPihfKTsKLSAgRVhQRUNUX1RSVUUobS5NYXRjaGVzKE5VTEwpKTsKLX0K
LQotI2VuZGlmICAvLyBHTU9DS19URVNUX0dNT0NLX0xJTktfVEVTVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZW1vY2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3Qv
Z21vY2tfb3V0cHV0X3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGVjZWQ4
YTgxZjIzMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0
X3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9m
IEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsuCi0KLVNZTk9QU0lTCi0gICAgICAgZ21vY2tf
b3V0cHV0X3Rlc3QucHkgLS1idWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCi0gICAgICAg
ICAjIHdoZXJlIEJVSUxEL0RJUiBjb250YWlucyB0aGUgYnVpbHQgZ21vY2tfb3V0cHV0X3Rlc3Rf
IGZpbGUuCi0gICAgICAgZ21vY2tfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KLSAgICAgICBn
bW9ja19vdXRwdXRfdGVzdC5weQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWlt
cG9ydCBnbW9ja190ZXN0X3V0aWxzCi0KLQotIyBUaGUgZmxhZyBmb3IgZ2VuZXJhdGluZyB0aGUg
Z29sZGVuIGZpbGUKLUdFTkdPTERFTl9GTEFHID0gJy0tZ2VuZ29sZGVuJwotCi1QUk9HUkFNX1BB
VEggPSBnbW9ja190ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ21vY2tfb3V0cHV0
X3Rlc3RfJykKLUNPTU1BTkQgPSBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9zdGFja190cmFjZV9k
ZXB0aD0wJywgJy0tZ3Rlc3RfcHJpbnRfdGltZT0wJ10KLUdPTERFTl9OQU1FID0gJ2dtb2NrX291
dHB1dF90ZXN0X2dvbGRlbi50eHQnCi1HT0xERU5fUEFUSCA9IG9zLnBhdGguam9pbihnbW9ja190
ZXN0X3V0aWxzLkdldFNvdXJjZURpcigpLCBHT0xERU5fTkFNRSkKLQotCi1kZWYgVG9Vbml4TGlu
ZUVuZGluZyhzKToKLSAgIiIiQ2hhbmdlcyBhbGwgV2luZG93cy9NYWMgbGluZSBlbmRpbmdzIGlu
IHMgdG8gVU5JWCBsaW5lIGVuZGluZ3MuIiIiCi0KLSAgcmV0dXJuIHMucmVwbGFjZSgnXHJcbics
ICdcbicpLnJlcGxhY2UoJ1xyJywgJ1xuJykKLQotCi1kZWYgUmVtb3ZlUmVwb3J0SGVhZGVyQW5k
Rm9vdGVyKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgR29vZ2xlIFRlc3QgcmVzdWx0IHJlcG9ydCdz
IGhlYWRlciBhbmQgZm9vdGVyIGZyb20gdGhlIG91dHB1dC4iIiIKLQotICBvdXRwdXQgPSByZS5z
dWIocicuKmd0ZXN0X21haW4uKlxuJywgJycsIG91dHB1dCkKLSAgb3V0cHV0ID0gcmUuc3ViKHIn
XFsuKlxkKyB0ZXN0cy4qXG4nLCAnJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5zdWIocidcWy4q
IHRlc3QgZW52aXJvbm1lbnQgLipcbicsICcnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1Yihy
J1xbPStcXSBcZCsgdGVzdHMgLiogcmFuLionLCAnJywgb3V0cHV0KQotICBvdXRwdXQgPSByZS5z
dWIocicuKiBGQUlMRUQgVEVTVFNcbicsICcnLCBvdXRwdXQpCi0gIHJldHVybiBvdXRwdXQKLQot
Ci1kZWYgUmVtb3ZlTG9jYXRpb25zKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIGZpbGUgbG9j
YXRpb24gaW5mbyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQotICBBcmdz
OgotICAgICAgIG91dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9ncmFtLgot
Ci0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24gaW5mbyAo
aW4gdGhlIGZvcm0gb2YKLSAgICAgICAnRElSRUNUT1JZL0ZJTEVfTkFNRTpMSU5FX05VTUJFUjog
J29yCi0gICAgICAgJ0RJUkVDVE9SWVxcRklMRV9OQU1FKExJTkVfTlVNQkVSKTogJykgcmVwbGFj
ZWQgYnkKLSAgICAgICAnRklMRTojOiAnLgotICAiIiIKLQotICByZXR1cm4gcmUuc3ViKHInLipb
L1xcXSguKykoXDpcZCt8XChcZCtcKSlcOicsICdGSUxFOiM6Jywgb3V0cHV0KQotCi0KLWRlZiBO
b3JtYWxpemVFcnJvck1hcmtlcihvdXRwdXQpOgotICAiIiJOb3JtYWxpemVzIHRoZSBlcnJvciBt
YXJrZXIsIHdoaWNoIGlzIGRpZmZlcmVudCBvbiBXaW5kb3dzIHZzIG9uIExpbnV4LiIiIgotCi0g
IHJldHVybiByZS5zdWIocicgZXJyb3I6ICcsICcgRmFpbHVyZVxuJywgb3V0cHV0KQotCi0KLWRl
ZiBSZW1vdmVNZW1vcnlBZGRyZXNzZXMob3V0cHV0KToKLSAgIiIiUmVtb3ZlcyBtZW1vcnkgYWRk
cmVzc2VzIGZyb20gdGhlIHRlc3Qgb3V0cHV0LiIiIgotCi0gIHJldHVybiByZS5zdWIocidAXHcr
JywgJ0AweCMnLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZVRlc3ROYW1lc09mTGVha2VkTW9ja3Mo
b3V0cHV0KToKLSAgIiIiUmVtb3ZlcyB0aGUgdGVzdCBuYW1lcyBvZiBsZWFrZWQgbW9jayBvYmpl
Y3RzIGZyb20gdGhlIHRlc3Qgb3V0cHV0LiIiIgotCi0gIHJldHVybiByZS5zdWIocidcKHVzZWQg
aW4gdGVzdCAuK1wpICcsICcnLCBvdXRwdXQpCi0KLQotZGVmIEdldExlYWt5VGVzdHMob3V0cHV0
KToKLSAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgdGVzdCBuYW1lcyB0aGF0IGxlYWsgbW9jayBvYmpl
Y3RzLiIiIgotCi0gICMgZmluZGFsbCgpIHJldHVybnMgYSBsaXN0IG9mIGFsbCBtYXRjaGVzIG9m
IHRoZSByZWdleCBpbiBvdXRwdXQuCi0gICMgRm9yIGV4YW1wbGUsIGlmICcodXNlZCBpbiB0ZXN0
IEZvb1Rlc3QuQmFyKScgaXMgaW4gb3V0cHV0LCB0aGUKLSAgIyBsaXN0IHdpbGwgY29udGFpbiAn
Rm9vVGVzdC5CYXInLgotICByZXR1cm4gcmUuZmluZGFsbChyJ1wodXNlZCBpbiB0ZXN0ICguKylc
KScsIG91dHB1dCkKLQotCi1kZWYgR2V0Tm9ybWFsaXplZE91dHB1dEFuZExlYWt5VGVzdHMob3V0
cHV0KToKLSAgIiIiTm9ybWFsaXplcyB0aGUgb3V0cHV0IG9mIGdtb2NrX291dHB1dF90ZXN0Xy4K
LQotICBBcmdzOgotICAgIG91dHB1dDogVGhlIHRlc3Qgb3V0cHV0LgotCi0gIFJldHVybnM6Ci0g
ICAgQSB0dXBsZSAodGhlIG5vcm1hbGl6ZWQgdGVzdCBvdXRwdXQsIHRoZSBsaXN0IG9mIHRlc3Qg
bmFtZXMgdGhhdCBoYXZlCi0gICAgbGVha2VkIG1vY2tzKS4KLSAgIiIiCi0KLSAgb3V0cHV0ID0g
VG9Vbml4TGluZUVuZGluZyhvdXRwdXQpCi0gIG91dHB1dCA9IFJlbW92ZVJlcG9ydEhlYWRlckFu
ZEZvb3RlcihvdXRwdXQpCi0gIG91dHB1dCA9IE5vcm1hbGl6ZUVycm9yTWFya2VyKG91dHB1dCkK
LSAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3ZlTWVt
b3J5QWRkcmVzc2VzKG91dHB1dCkKLSAgcmV0dXJuIChSZW1vdmVUZXN0TmFtZXNPZkxlYWtlZE1v
Y2tzKG91dHB1dCksIEdldExlYWt5VGVzdHMob3V0cHV0KSkKLQotCi1kZWYgR2V0U2hlbGxDb21t
YW5kT3V0cHV0KGNtZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFu
ZCByZXR1cm5zIGl0cyBTVERPVVQgaW4gYSBzdHJpbmcuIiIiCi0KLSAgcmV0dXJuIGdtb2NrX3Rl
c3RfdXRpbHMuU3VicHJvY2VzcyhjbWQsIGNhcHR1cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKLQot
Ci1kZWYgR2V0Tm9ybWFsaXplZENvbW1hbmRPdXRwdXRBbmRMZWFreVRlc3RzKGNtZCk6Ci0gICIi
IlJ1bnMgYSBjb21tYW5kIGFuZCByZXR1cm5zIGl0cyBub3JtYWxpemVkIG91dHB1dCBhbmQgYSBs
aXN0IG9mIGxlYWt5IHRlc3RzLgotCi0gIEFyZ3M6Ci0gICAgY21kOiAgdGhlIHNoZWxsIGNvbW1h
bmQuCi0gICIiIgotCi0gICMgRGlzYWJsZXMgZXhjZXB0aW9uIHBvcC11cHMgb24gV2luZG93cy4K
LSAgb3MuZW52aXJvblsnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUyddID0gJzEnCi0gIHJldHVybiBH
ZXROb3JtYWxpemVkT3V0cHV0QW5kTGVha3lUZXN0cyhHZXRTaGVsbENvbW1hbmRPdXRwdXQoY21k
KSkKLQotCi1jbGFzcyBHTW9ja091dHB1dFRlc3QoZ21vY2tfdGVzdF91dGlscy5UZXN0Q2FzZSk6
Ci0gIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgotICAgIChvdXRwdXQsIGxlYWt5X3Rlc3RzKSA9IEdl
dE5vcm1hbGl6ZWRDb21tYW5kT3V0cHV0QW5kTGVha3lUZXN0cyhDT01NQU5EKQotICAgIGdvbGRl
bl9maWxlID0gb3BlbihHT0xERU5fUEFUSCwgJ3JiJykKLSAgICBnb2xkZW4gPSBnb2xkZW5fZmls
ZS5yZWFkKCkKLSAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0KLSAgICAjIFRoZSBub3JtYWxpemVk
IG91dHB1dCBzaG91bGQgbWF0Y2ggdGhlIGdvbGRlbiBmaWxlLgotICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGdvbGRlbiwgb3V0cHV0KQotCi0gICAgIyBUaGUgcmF3IG91dHB1dCBzaG91bGQgY29udGFp
biAyIGxlYWtlZCBtb2NrIG9iamVjdCBlcnJvcnMgZm9yCi0gICAgIyB0ZXN0IEdNb2NrT3V0cHV0
VGVzdC5DYXRjaGVzTGVha2VkTW9ja3MuCi0gICAgc2VsZi5hc3NlcnRFcXVhbHMoWydHTW9ja091
dHB1dFRlc3QuQ2F0Y2hlc0xlYWtlZE1vY2tzJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ0dN
b2NrT3V0cHV0VGVzdC5DYXRjaGVzTGVha2VkTW9ja3MnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICBsZWFreV90ZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBpZiBzeXMu
YXJndlsxOl0gPT0gW0dFTkdPTERFTl9GTEFHXToKLSAgICAob3V0cHV0LCBfKSA9IEdldE5vcm1h
bGl6ZWRDb21tYW5kT3V0cHV0QW5kTGVha3lUZXN0cyhDT01NQU5EKQotICAgIGdvbGRlbl9maWxl
ID0gb3BlbihHT0xERU5fUEFUSCwgJ3diJykKLSAgICBnb2xkZW5fZmlsZS53cml0ZShvdXRwdXQp
Ci0gICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICBlbHNlOgotICAgIGdtb2NrX3Rlc3RfdXRpbHMu
TWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2NrX291dHB1dF90ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NGNiYTM0MmFkZjkuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
bW9jay90ZXN0L2dtb2NrX291dHB1dF90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDI5MSAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0v
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUZXN0cyBHb29n
bGUgTW9jaydzIG91dHB1dCBpbiB2YXJpb3VzIHNjZW5hcmlvcy4gIFRoaXMgZW5zdXJlcyB0aGF0
Ci0vLyBHb29nbGUgTW9jaydzIG1lc3NhZ2VzIGFyZSByZWFkYWJsZSBhbmQgdXNlZnVsLgotCi0j
aW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8
c3RyaW5nPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotdXNpbmcgdGVzdGluZzo6XzsK
LXVzaW5nIHRlc3Rpbmc6OkFueU51bWJlcjsKLXVzaW5nIHRlc3Rpbmc6OkdlOwotdXNpbmcgdGVz
dGluZzo6SW5TZXF1ZW5jZTsKLXVzaW5nIHRlc3Rpbmc6Ok5hZ2d5TW9jazsKLXVzaW5nIHRlc3Rp
bmc6OlJlZjsKLXVzaW5nIHRlc3Rpbmc6OlJldHVybjsKLXVzaW5nIHRlc3Rpbmc6OlNlcXVlbmNl
OwotCi1jbGFzcyBNb2NrRm9vIHsKLSBwdWJsaWM6Ci0gIE1vY2tGb28oKSB7fQotCi0gIE1PQ0tf
TUVUSE9EMyhCYXIsIGNoYXIoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIGludCBpLCBkb3VibGUgeCkp
OwotICBNT0NLX01FVEhPRDIoQmFyMiwgYm9vbChpbnQgeCwgaW50IHkpKTsKLSAgTU9DS19NRVRI
T0QyKEJhcjMsIHZvaWQoaW50IHgsIGludCB5KSk7Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNB
TExPV19DT1BZX0FORF9BU1NJR05fKE1vY2tGb28pOwotfTsKLQotY2xhc3MgR01vY2tPdXRwdXRU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgTmFnZ3lNb2NrPE1v
Y2tGb28+IGZvb187Ci19OwotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBFeHBlY3RlZENhbGwp
IHsKLSAgdGVzdGluZzo6R01PQ0tfRkxBRyh2ZXJib3NlKSA9ICJpbmZvIjsKLQotICBFWFBFQ1Rf
Q0FMTChmb29fLCBCYXIyKDAsIF8pKTsKLSAgZm9vXy5CYXIyKDAsIDApOyAgLy8gRXhwZWN0ZWQg
Y2FsbAotCi0gIHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVyYm9zZSkgPSAid2FybmluZyI7Ci19Ci0K
LVRFU1RfRihHTW9ja091dHB1dFRlc3QsIEV4cGVjdGVkQ2FsbFRvVm9pZEZ1bmN0aW9uKSB7Ci0g
IHRlc3Rpbmc6OkdNT0NLX0ZMQUcodmVyYm9zZSkgPSAiaW5mbyI7Ci0KLSAgRVhQRUNUX0NBTEwo
Zm9vXywgQmFyMygwLCBfKSk7Ci0gIGZvb18uQmFyMygwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwK
LQotICB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOwotfQotCi1URVNU
X0YoR01vY2tPdXRwdXRUZXN0LCBFeHBsaWNpdEFjdGlvbnNSdW5PdXQpIHsKLSAgRVhQRUNUX0NB
TEwoZm9vXywgQmFyMihfLCBfKSkKLSAgICAgIC5UaW1lcygyKQotICAgICAgLldpbGxPbmNlKFJl
dHVybihmYWxzZSkpOwotICBmb29fLkJhcjIoMiwgMik7Ci0gIGZvb18uQmFyMigxLCAxKTsgIC8v
IEV4cGxpY2l0IGFjdGlvbnMgaW4gRVhQRUNUX0NBTEwgcnVuIG91dC4KLX0KLQotVEVTVF9GKEdN
b2NrT3V0cHV0VGVzdCwgVW5leHBlY3RlZENhbGwpIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFy
MigwLCBfKSk7Ci0KLSAgZm9vXy5CYXIyKDEsIDApOyAgLy8gVW5leHBlY3RlZCBjYWxsCi0gIGZv
b18uQmFyMigwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0
VGVzdCwgVW5leHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbikgewotICBFWFBFQ1RfQ0FMTChmb29f
LCBCYXIzKDAsIF8pKTsKLQotICBmb29fLkJhcjMoMSwgMCk7ICAvLyBVbmV4cGVjdGVkIGNhbGwK
LSAgZm9vXy5CYXIzKDAsIDApOyAgLy8gRXhwZWN0ZWQgY2FsbAotfQotCi1URVNUX0YoR01vY2tP
dXRwdXRUZXN0LCBFeGNlc3NpdmVDYWxsKSB7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMCwg
XykpOwotCi0gIGZvb18uQmFyMigwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKLSAgZm9vXy5CYXIy
KDAsIDEpOyAgLy8gRXhjZXNzaXZlIGNhbGwKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVzdCwg
RXhjZXNzaXZlQ2FsbFRvVm9pZEZ1bmN0aW9uKSB7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjMo
MCwgXykpOwotCi0gIGZvb18uQmFyMygwLCAwKTsgIC8vIEV4cGVjdGVkIGNhbGwKLSAgZm9vXy5C
YXIzKDAsIDEpOyAgLy8gRXhjZXNzaXZlIGNhbGwKLX0KLQotVEVTVF9GKEdNb2NrT3V0cHV0VGVz
dCwgVW5pbnRlcmVzdGluZ0NhbGwpIHsKLSAgZm9vXy5CYXIyKDAsIDEpOyAgLy8gVW5pbnRlcmVz
dGluZyBjYWxsCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuaW50ZXJlc3RpbmdDYWxs
VG9Wb2lkRnVuY3Rpb24pIHsKLSAgZm9vXy5CYXIzKDAsIDEpOyAgLy8gVW5pbnRlcmVzdGluZyBj
YWxsCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFJldGlyZWRFeHBlY3RhdGlvbikgewot
ICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKQotICAgICAgLlJldGlyZXNPblNhdHVyYXRp
b24oKTsKLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSk7Ci0KLSAgZm9vXy5CYXIyKDEs
IDEpOwotICBmb29fLkJhcjIoMSwgMSk7ICAvLyBNYXRjaGVzIGEgcmV0aXJlZCBleHBlY3RhdGlv
bgotICBmb29fLkJhcjIoMCwgMCk7Ci19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIFVuc2F0
aXNmaWVkUHJlcmVxdWlzaXRlKSB7Ci0gIHsKLSAgICBJblNlcXVlbmNlIHM7Ci0gICAgRVhQRUNU
X0NBTEwoZm9vXywgQmFyKF8sIDAsIF8pKTsKLSAgICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDAs
IDApKTsKLSAgICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDEsIF8pKTsKLSAgfQotCi0gIGZvb18u
QmFyMigxLCAwKTsgIC8vIEhhcyBvbmUgaW1tZWRpYXRlIHVuc2F0aXNmaWVkIHByZS1yZXF1aXNp
dGUKLSAgZm9vXy5CYXIoIkhpIiwgMCwgMCk7Ci0gIGZvb18uQmFyMigwLCAwKTsKLSAgZm9vXy5C
YXIyKDEsIDApOwotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBVbnNhdGlzZmllZFByZXJl
cXVpc2l0ZXMpIHsKLSAgU2VxdWVuY2UgczEsIHMyOwotCi0gIEVYUEVDVF9DQUxMKGZvb18sIEJh
cihfLCAwLCBfKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxKTsKLSAgRVhQRUNUX0NBTEwoZm9vXywg
QmFyMigwLCAwKSkKLSAgICAgIC5JblNlcXVlbmNlKHMyKTsKLSAgRVhQRUNUX0NBTEwoZm9vXywg
QmFyMigxLCBfKSkKLSAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7Ci0KLSAgZm9vXy5CYXIyKDEs
IDApOyAgLy8gSGFzIHR3byBpbW1lZGlhdGUgdW5zYXRpc2ZpZWQgcHJlLXJlcXVpc2l0ZXMKLSAg
Zm9vXy5CYXIoIkhpIiwgMCwgMCk7Ci0gIGZvb18uQmFyMigwLCAwKTsKLSAgZm9vXy5CYXIyKDEs
IDApOwotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBVbnNhdGlzZmllZFdpdGgpIHsKLSAg
RVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuV2l0aChHZSgpKTsKLX0KLQotVEVTVF9GKEdN
b2NrT3V0cHV0VGVzdCwgVW5zYXRpc2ZpZWRFeHBlY3RhdGlvbikgewotICBFWFBFQ1RfQ0FMTChm
b29fLCBCYXIoXywgXywgXykpOwotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDAsIF8pKQotICAg
ICAgLlRpbWVzKDIpOwotCi0gIGZvb18uQmFyMigwLCAxKTsKLX0KLQotVEVTVF9GKEdNb2NrT3V0
cHV0VGVzdCwgTWlzbWF0Y2hBcmd1bWVudHMpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgcyA9ICJI
aSI7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcihSZWYocyksIF8sIEdlKDApKSk7Ci0KLSAgZm9v
Xy5CYXIoIkhvIiwgMCwgLTAuMSk7ICAvLyBNaXNtYXRjaCBhcmd1bWVudHMKLSAgZm9vXy5CYXIo
cywgMCwgMCk7Ci19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRlc3QsIE1pc21hdGNoV2l0aCkgewot
ICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKEdlKDIpLCBHZSgxKSkpCi0gICAgICAuV2l0aChHZSgp
KTsKLQotICBmb29fLkJhcjIoMiwgMyk7ICAvLyBNaXNtYXRjaCBXaXRoKCkKLSAgZm9vXy5CYXIy
KDIsIDEpOwotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBNaXNtYXRjaEFyZ3VtZW50c0Fu
ZFdpdGgpIHsKLSAgRVhQRUNUX0NBTEwoZm9vXywgQmFyMihHZSgyKSwgR2UoMSkpKQotICAgICAg
LldpdGgoR2UoKSk7Ci0KLSAgZm9vXy5CYXIyKDEsIDMpOyAgLy8gTWlzbWF0Y2ggYXJndW1lbnRz
IGFuZCBtaXNtYXRjaCBXaXRoKCkKLSAgZm9vXy5CYXIyKDIsIDEpOwotfQotCi1URVNUX0YoR01v
Y2tPdXRwdXRUZXN0LCBVbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0aW9uKSB7Ci0gIE9OX0NB
TEwoZm9vXywgQmFyMihfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7
ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKLSAgT05fQ0FMTChmb29fLCBCYXIyKDEsIF8pKQotICAg
ICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKGZhbHNlKSk7ICAvLyBEZWZhdWx0IGFjdGlvbiAjMgot
Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMiwgMikpOwotICBmb29fLkJhcjIoMSwgMCk7ICAv
LyBVbmV4cGVjdGVkIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMyLgotICBmb29fLkJhcjIo
MCwgMCk7ICAvLyBVbmV4cGVjdGVkIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMxLgotICBm
b29fLkJhcjIoMiwgMik7ICAvLyBFeHBlY3RlZCBjYWxsLgotfQotCi1URVNUX0YoR01vY2tPdXRw
dXRUZXN0LCBFeGNlc3NpdmVDYWxsV2l0aERlZmF1bHRBY3Rpb24pIHsKLSAgT05fQ0FMTChmb29f
LCBCYXIyKF8sIF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKHRydWUpKTsgICAvLyBE
ZWZhdWx0IGFjdGlvbiAjMQotICBPTl9DQUxMKGZvb18sIEJhcjIoMSwgXykpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oZmFsc2UpKTsgIC8vIERlZmF1bHQgYWN0aW9uICMyCi0KLSAgRVhQ
RUNUX0NBTEwoZm9vXywgQmFyMigyLCAyKSk7Ci0gIEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMSwg
MSkpOwotCi0gIGZvb18uQmFyMigyLCAyKTsgIC8vIEV4cGVjdGVkIGNhbGwuCi0gIGZvb18uQmFy
MigyLCAyKTsgIC8vIEV4Y2Vzc2l2ZSBjYWxsLCB0YWtlcyBkZWZhdWx0IGFjdGlvbiAjMS4KLSAg
Zm9vXy5CYXIyKDEsIDEpOyAgLy8gRXhwZWN0ZWQgY2FsbC4KLSAgZm9vXy5CYXIyKDEsIDEpOyAg
Ly8gRXhjZXNzaXZlIGNhbGwsIHRha2VzIGRlZmF1bHQgYWN0aW9uICMyLgotfQotCi1URVNUX0Yo
R01vY2tPdXRwdXRUZXN0LCBVbmludGVyZXN0aW5nQ2FsbFdpdGhEZWZhdWx0QWN0aW9uKSB7Ci0g
IE9OX0NBTEwoZm9vXywgQmFyMihfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0
cnVlKSk7ICAgLy8gRGVmYXVsdCBhY3Rpb24gIzEKLSAgT05fQ0FMTChmb29fLCBCYXIyKDEsIF8p
KQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0dXJuKGZhbHNlKSk7ICAvLyBEZWZhdWx0IGFjdGlv
biAjMgotCi0gIGZvb18uQmFyMigyLCAyKTsgIC8vIFVuaW50ZXJlc3RpbmcgY2FsbCwgdGFrZXMg
ZGVmYXVsdCBhY3Rpb24gIzEuCi0gIGZvb18uQmFyMigxLCAxKTsgIC8vIFVuaW50ZXJlc3Rpbmcg
Y2FsbCwgdGFrZXMgZGVmYXVsdCBhY3Rpb24gIzIuCi19Ci0KLVRFU1RfRihHTW9ja091dHB1dFRl
c3QsIEV4cGxpY2l0QWN0aW9uc1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uKSB7Ci0gIE9OX0NBTEwo
Zm9vXywgQmFyMihfLCBfKSkKLSAgICAgIC5XaWxsQnlEZWZhdWx0KFJldHVybih0cnVlKSk7ICAg
Ly8gRGVmYXVsdCBhY3Rpb24gIzEKLQotICBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKQot
ICAgICAgLlRpbWVzKDIpCi0gICAgICAuV2lsbE9uY2UoUmV0dXJuKGZhbHNlKSk7Ci0gIGZvb18u
QmFyMigyLCAyKTsKLSAgZm9vXy5CYXIyKDEsIDEpOyAgLy8gRXhwbGljaXQgYWN0aW9ucyBpbiBF
WFBFQ1RfQ0FMTCBydW4gb3V0LgotfQotCi1URVNUX0YoR01vY2tPdXRwdXRUZXN0LCBDYXRjaGVz
TGVha2VkTW9ja3MpIHsKLSAgTW9ja0ZvbyogZm9vMSA9IG5ldyBNb2NrRm9vOwotICBNb2NrRm9v
KiBmb28yID0gbmV3IE1vY2tGb287Ci0KLSAgLy8gSW52b2tlcyBPTl9DQUxMIG9uIGZvbzEuCi0g
IE9OX0NBTEwoKmZvbzEsIEJhcihfLCBfLCBfKSkuV2lsbEJ5RGVmYXVsdChSZXR1cm4oJ2EnKSk7
Ci0KLSAgLy8gSW52b2tlcyBFWFBFQ1RfQ0FMTCBvbiBmb28yLgotICBFWFBFQ1RfQ0FMTCgqZm9v
MiwgQmFyMihfLCBfKSk7Ci0gIEVYUEVDVF9DQUxMKCpmb28yLCBCYXIyKDEsIF8pKTsKLSAgRVhQ
RUNUX0NBTEwoKmZvbzIsIEJhcjMoXywgXykpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgZm9vMi0+
QmFyMigyLCAxKTsKLSAgZm9vMi0+QmFyMigxLCAxKTsKLQotICAvLyBCb3RoIGZvbzEgYW5kIGZv
bzIgYXJlIGRlbGliZXJhdGVseSBsZWFrZWQuCi19Ci0KLXZvaWQgVGVzdENhdGNoZXNMZWFrZWRN
b2Nrc0luQWRIb2NUZXN0cygpIHsKLSAgTW9ja0ZvbyogZm9vID0gbmV3IE1vY2tGb287Ci0KLSAg
Ly8gSW52b2tlcyBFWFBFQ1RfQ0FMTCBvbiBmb28uCi0gIEVYUEVDVF9DQUxMKCpmb28sIEJhcjIo
XywgXykpOwotICBmb28tPkJhcjIoMiwgMSk7Ci0KLSAgLy8gZm9vIGlzIGRlbGliZXJhdGVseSBs
ZWFrZWQuCi19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5n
OjpJbml0R29vZ2xlTW9jaygmYXJnYywgYXJndik7Ci0KLSAgLy8gRW5zdXJlcyB0aGF0IHRoZSB0
ZXN0cyBwYXNzIG5vIG1hdHRlciB3aGF0IHZhbHVlIG9mCi0gIC8vIC0tZ21vY2tfY2F0Y2hfbGVh
a2VkX21vY2tzIGFuZCAtLWdtb2NrX3ZlcmJvc2UgdGhlIHVzZXIgc3BlY2lmaWVzLgotICB0ZXN0
aW5nOjpHTU9DS19GTEFHKGNhdGNoX2xlYWtlZF9tb2NrcykgPSB0cnVlOwotICB0ZXN0aW5nOjpH
TU9DS19GTEFHKHZlcmJvc2UpID0gIndhcm5pbmciOwotCi0gIFRlc3RDYXRjaGVzTGVha2VkTW9j
a3NJbkFkSG9jVGVzdHMoKTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4dCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGVtb2NrL3Rlc3QvZ21vY2tfb3V0cHV0X3Rlc3RfZ29sZGVuLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjg5ZDVlZWIwMzc1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1v
Y2svdGVzdC9nbW9ja19vdXRwdXRfdGVzdF9nb2xkZW4udHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MzEwICswLDAgQEAKLVsgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuRXhwZWN0ZWRDYWxsCi0K
LUZJTEU6IzogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkgaW52b2tlZAotU3RhY2sgdHJh
Y2U6Ci0KLUZJTEU6IzogTW9jayBmdW5jdGlvbiBjYWxsIG1hdGNoZXMgRVhQRUNUX0NBTEwoZm9v
XywgQmFyMigwLCBfKSkuLi4KLSAgICBGdW5jdGlvbiBjYWxsOiBCYXIyKDAsIDApCi0gICAgICAg
ICAgUmV0dXJuczogZmFsc2UKLVN0YWNrIHRyYWNlOgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0
VGVzdC5FeHBlY3RlZENhbGwKLVsgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuRXhwZWN0ZWRD
YWxsVG9Wb2lkRnVuY3Rpb24KLQotRklMRTojOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIzKDAsIF8p
KSBpbnZva2VkCi1TdGFjayB0cmFjZToKLQotRklMRTojOiBNb2NrIGZ1bmN0aW9uIGNhbGwgbWF0
Y2hlcyBFWFBFQ1RfQ0FMTChmb29fLCBCYXIzKDAsIF8pKS4uLgotICAgIEZ1bmN0aW9uIGNhbGw6
IEJhcjMoMCwgMCkKLVN0YWNrIHRyYWNlOgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5F
eHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5F
eHBsaWNpdEFjdGlvbnNSdW5PdXQKLQotR01PQ0sgV0FSTklORzoKLUZJTEU6IzogVG9vIGZldyBh
Y3Rpb25zIHNwZWNpZmllZCBpbiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKS4uLgotRXhw
ZWN0ZWQgdG8gYmUgY2FsbGVkIHR3aWNlLCBidXQgaGFzIG9ubHkgMSBXaWxsT25jZSgpLgotR01P
Q0sgV0FSTklORzoKLUZJTEU6IzogQWN0aW9ucyByYW4gb3V0IGluIEVYUEVDVF9DQUxMKGZvb18s
IEJhcjIoXywgXykpLi4uCi1DYWxsZWQgMiB0aW1lcywgYnV0IG9ubHkgMSBXaWxsT25jZSgpIGlz
IHNwZWNpZmllZCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgotU3RhY2sgdHJhY2U6Ci1bICAg
ICAgIE9LIF0gR01vY2tPdXRwdXRUZXN0LkV4cGxpY2l0QWN0aW9uc1J1bk91dAotWyBSVU4gICAg
ICBdIEdNb2NrT3V0cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbAotdW5rbm93biBmaWxlOiBGYWlsdXJl
Ci0KLVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFs
dWUuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAwKQotICAgICAgICAgIFJldHVybnM6IGZh
bHNlCi1Hb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDEgZXhwZWN0YXRpb24sIGJ1dCBp
dCBkaWRuJ3QgbWF0Y2g6Ci0KLUZJTEU6IzogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSku
Li4KLSAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVhbDog
MQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVh
bDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdN
b2NrT3V0cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVz
dC5VbmV4cGVjdGVkQ2FsbFRvVm9pZEZ1bmN0aW9uCi11bmtub3duIGZpbGU6IEZhaWx1cmUKLQot
VW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNhbGwgLSByZXR1cm5pbmcgZGlyZWN0bHkuCi0gICAg
RnVuY3Rpb24gY2FsbDogQmFyMygxLCAwKQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2lu
ZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9D
QUxMKGZvb18sIEJhcjMoMCwgXykpLi4uCi0gIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8g
MAotICAgICAgICAgICBBY3R1YWw6IDEKLSAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQg
b25jZQotICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNhbGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBh
Y3RpdmUKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3RlZENhbGxUb1ZvaWRG
dW5jdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsCi1GSUxF
OiM6IEZhaWx1cmUKLU1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3Rl
ZCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMCwg
MSkKLSAgICAgICAgICBSZXR1cm5zOiBmYWxzZQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNh
bGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0
ZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxs
Ci1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxUb1ZvaWRGdW5jdGlv
bgotRklMRTojOiBGYWlsdXJlCi1Nb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4g
ZXhwZWN0ZWQgLSByZXR1cm5pbmcgZGlyZWN0bHkuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMygw
LCAxKQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFj
dHVhbDogY2FsbGVkIHR3aWNlIC0gb3Zlci1zYXR1cmF0ZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVE
ICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNlc3NpdmVDYWxsVG9Wb2lkRnVuY3Rpb24KLVsgUlVOICAg
ICAgXSBHTW9ja091dHB1dFRlc3QuVW5pbnRlcmVzdGluZ0NhbGwKLQotR01PQ0sgV0FSTklORzoK
LVVuaW50ZXJlc3RpbmcgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFs
dWUuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigwLCAxKQotICAgICAgICAgIFJldHVybnM6IGZh
bHNlCi1OT1RFOiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNz
IHRoaXMgY2FsbCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGlu
ZGx5IGFkZGluZyBhbiBFWFBFQ1RfQ0FMTCgpIGlmIHlvdSBkb24ndCBtZWFuIHRvIGVuZm9yY2Ug
dGhlIGNhbGwuICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2Iv
bWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCNrbm93aW5nLXdoZW4tdG8tZXhwZWN0
IGZvciBkZXRhaWxzLgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5n
Q2FsbAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2FsbFRvVm9p
ZEZ1bmN0aW9uCi0KLUdNT0NLIFdBUk5JTkc6Ci1VbmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24g
Y2FsbCAtIHJldHVybmluZyBkaXJlY3RseS4KLSAgICBGdW5jdGlvbiBjYWxsOiBCYXIzKDAsIDEp
Ci1OT1RFOiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdhcm5pbmcgdW5sZXNzIHRo
aXMgY2FsbCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVzcyBpdCBieSBibGluZGx5
IGFkZGluZyBhbiBFWFBFQ1RfQ0FMTCgpIGlmIHlvdSBkb24ndCBtZWFuIHRvIGVuZm9yY2UgdGhl
IGNhbGwuICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0L2Jsb2IvbWFz
dGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCNrbm93aW5nLXdoZW4tdG8tZXhwZWN0IGZv
ciBkZXRhaWxzLgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5VbmludGVyZXN0aW5nQ2Fs
bFRvVm9pZEZ1bmN0aW9uCi1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LlJldGlyZWRFeHBl
Y3RhdGlvbgotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlv
biBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2FsbDogQmFy
MigxLCAxKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmllZCB0aGUg
Zm9sbG93aW5nIDIgZXhwZWN0YXRpb25zLCBidXQgbm9uZSBtYXRjaGVkOgotCi1GSUxFOiM6IHRy
aWVkIGV4cGVjdGF0aW9uICMwOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKS4uLgotICAg
ICAgICAgRXhwZWN0ZWQ6IHRoZSBleHBlY3RhdGlvbiBpcyBhY3RpdmUKLSAgICAgICAgICAgQWN0
dWFsOiBpdCBpcyByZXRpcmVkCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UK
LSAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgb25jZSAtIHNhdHVyYXRlZCBhbmQgcmV0aXJlZAot
RklMRTojOiB0cmllZCBleHBlY3RhdGlvbiAjMTogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAw
KSkuLi4KLSAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVh
bDogMQotICBFeHBlY3RlZCBhcmcgIzE6IGlzIGVxdWFsIHRvIDAKLSAgICAgICAgICAgQWN0dWFs
OiAxCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0
dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0g
R01vY2tPdXRwdXRUZXN0LlJldGlyZWRFeHBlY3RhdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0
cHV0VGVzdC5VbnNhdGlzZmllZFByZXJlcXVpc2l0ZQotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0K
LVVuZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUu
Ci0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAwKQotICAgICAgICAgIFJldHVybnM6IGZhbHNl
Ci1Hb29nbGUgTW9jayB0cmllZCB0aGUgZm9sbG93aW5nIDIgZXhwZWN0YXRpb25zLCBidXQgbm9u
ZSBtYXRjaGVkOgotCi1GSUxFOiM6IHRyaWVkIGV4cGVjdGF0aW9uICMwOiBFWFBFQ1RfQ0FMTChm
b29fLCBCYXIyKDAsIDApKS4uLgotICBFeHBlY3RlZCBhcmcgIzA6IGlzIGVxdWFsIHRvIDAKLSAg
ICAgICAgICAgQWN0dWFsOiAxCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UK
LSAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZl
Ci1GSUxFOiM6IHRyaWVkIGV4cGVjdGF0aW9uICMxOiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKDEs
IF8pKS4uLgotICAgICAgICAgRXhwZWN0ZWQ6IGFsbCBwcmUtcmVxdWlzaXRlcyBhcmUgc2F0aXNm
aWVkCi0gICAgICAgICAgIEFjdHVhbDogdGhlIGZvbGxvd2luZyBpbW1lZGlhdGUgcHJlLXJlcXVp
c2l0ZXMgYXJlIG5vdCBzYXRpc2ZpZWQ6Ci1GSUxFOiM6IHByZS1yZXF1aXNpdGUgIzAKLSAgICAg
ICAgICAgICAgICAgICAoZW5kIG9mIHByZS1yZXF1aXNpdGVzKQotICAgICAgICAgRXhwZWN0ZWQ6
IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5z
YXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlz
ZmllZFByZXJlcXVpc2l0ZQotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmll
ZFByZXJlcXVpc2l0ZXMKLXVua25vd24gZmlsZTogRmFpbHVyZQotCi1VbmV4cGVjdGVkIG1vY2sg
ZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNh
bGw6IEJhcjIoMSwgMCkKLSAgICAgICAgICBSZXR1cm5zOiBmYWxzZQotR29vZ2xlIE1vY2sgdHJp
ZWQgdGhlIGZvbGxvd2luZyAyIGV4cGVjdGF0aW9ucywgYnV0IG5vbmUgbWF0Y2hlZDoKLQotRklM
RTojOiB0cmllZCBleHBlY3RhdGlvbiAjMDogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCAwKSku
Li4KLSAgRXhwZWN0ZWQgYXJnICMwOiBpcyBlcXVhbCB0byAwCi0gICAgICAgICAgIEFjdHVhbDog
MQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVh
bDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotRklMRTojOiB0cmllZCBl
eHBlY3RhdGlvbiAjMTogRVhQRUNUX0NBTEwoZm9vXywgQmFyMigxLCBfKSkuLi4KLSAgICAgICAg
IEV4cGVjdGVkOiBhbGwgcHJlLXJlcXVpc2l0ZXMgYXJlIHNhdGlzZmllZAotICAgICAgICAgICBB
Y3R1YWw6IHRoZSBmb2xsb3dpbmcgaW1tZWRpYXRlIHByZS1yZXF1aXNpdGVzIGFyZSBub3Qgc2F0
aXNmaWVkOgotRklMRTojOiBwcmUtcmVxdWlzaXRlICMwCi1GSUxFOiM6IHByZS1yZXF1aXNpdGUg
IzEKLSAgICAgICAgICAgICAgICAgICAoZW5kIG9mIHByZS1yZXF1aXNpdGVzKQotICAgICAgICAg
RXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2Fs
bGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVz
dC5VbnNhdGlzZmllZFByZXJlcXVpc2l0ZXMKLVsgUlVOICAgICAgXSBHTW9ja091dHB1dFRlc3Qu
VW5zYXRpc2ZpZWRXaXRoCi1GSUxFOiM6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBjYWxsIGNv
dW50IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NBTEwoZm9vXywgQmFyMihfLCBfKSkuLi4KLSAgICBF
eHBlY3RlZCBhcmdzOiBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJzdCA+PSB0aGUgc2Vjb25kCi0g
ICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBu
ZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tP
dXRwdXRUZXN0LlVuc2F0aXNmaWVkV2l0aAotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5V
bnNhdGlzZmllZEV4cGVjdGF0aW9uCi1GSUxFOiM6IEZhaWx1cmUKLUFjdHVhbCBmdW5jdGlvbiBj
YWxsIGNvdW50IGRvZXNuJ3QgbWF0Y2ggRVhQRUNUX0NBTEwoZm9vXywgQmFyMigwLCBfKSkuLi4K
LSAgICAgICAgIEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgdHdpY2UKLSAgICAgICAgICAgQWN0dWFs
OiBjYWxsZWQgb25jZSAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKLUZJTEU6IzogRmFpbHVyZQot
QWN0dWFsIGZ1bmN0aW9uIGNhbGwgY291bnQgZG9lc24ndCBtYXRjaCBFWFBFQ1RfQ0FMTChmb29f
LCBCYXIoXywgXywgXykpLi4uCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UK
LSAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZl
Ci1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuc2F0aXNmaWVkRXhwZWN0YXRpb24KLVsg
UlVOICAgICAgXSBHTW9ja091dHB1dFRlc3QuTWlzbWF0Y2hBcmd1bWVudHMKLXVua25vd24gZmls
ZTogRmFpbHVyZQotCi1VbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBk
ZWZhdWx0IHZhbHVlLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcihAMHgjICJIbyIsIDAsIC0wLjEp
Ci0gICAgICAgICAgUmV0dXJuczogJ1wwJwotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2lu
ZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9D
QUxMKGZvb18sIEJhcihSZWYocyksIF8sIEdlKDApKSkuLi4KLSAgRXhwZWN0ZWQgYXJnICMwOiBy
ZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBAMHgjICJIaSIKLSAgICAgICAgICAgQWN0dWFsOiAiSG8i
LCB3aGljaCBpcyBsb2NhdGVkIEAweCMKLSAgRXhwZWN0ZWQgYXJnICMyOiBpcyA+PSAwCi0gICAg
ICAgICAgIEFjdHVhbDogLTAuMQotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNl
Ci0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2
ZQotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRjaEFyZ3VtZW50cwotWyBSVU4g
ICAgICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRjaFdpdGgKLXVua25vd24gZmlsZTogRmFpbHVy
ZQotCi1VbmV4cGVjdGVkIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHJldHVybmluZyBkZWZhdWx0IHZh
bHVlLgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMiwgMykKLSAgICAgICAgICBSZXR1cm5zOiBm
YWxzZQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQg
aXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoR2UoMiks
IEdlKDEpKSkuLi4KLSAgICBFeHBlY3RlZCBhcmdzOiBhcmUgYSBwYWlyIHdoZXJlIHRoZSBmaXJz
dCA+PSB0aGUgc2Vjb25kCi0gICAgICAgICAgIEFjdHVhbDogZG9uJ3QgbWF0Y2gKLSAgICAgICAg
IEV4cGVjdGVkOiB0byBiZSBjYWxsZWQgb25jZQotICAgICAgICAgICBBY3R1YWw6IG5ldmVyIGNh
bGxlZCAtIHVuc2F0aXNmaWVkIGFuZCBhY3RpdmUKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRl
c3QuTWlzbWF0Y2hXaXRoCi1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoQXJn
dW1lbnRzQW5kV2l0aAotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVuZXhwZWN0ZWQgbW9jayBm
dW5jdGlvbiBjYWxsIC0gcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWUuCi0gICAgRnVuY3Rpb24gY2Fs
bDogQmFyMigxLCAzKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi1Hb29nbGUgTW9jayB0cmll
ZCB0aGUgZm9sbG93aW5nIDEgZXhwZWN0YXRpb24sIGJ1dCBpdCBkaWRuJ3QgbWF0Y2g6Ci0KLUZJ
TEU6IzogRVhQRUNUX0NBTEwoZm9vXywgQmFyMihHZSgyKSwgR2UoMSkpKS4uLgotICBFeHBlY3Rl
ZCBhcmcgIzA6IGlzID49IDIKLSAgICAgICAgICAgQWN0dWFsOiAxCi0gICAgRXhwZWN0ZWQgYXJn
czogYXJlIGEgcGFpciB3aGVyZSB0aGUgZmlyc3QgPj0gdGhlIHNlY29uZAotICAgICAgICAgICBB
Y3R1YWw6IGRvbid0IG1hdGNoCi0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UK
LSAgICAgICAgICAgQWN0dWFsOiBuZXZlciBjYWxsZWQgLSB1bnNhdGlzZmllZCBhbmQgYWN0aXZl
Ci1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoQXJndW1lbnRzQW5kV2l0aAot
WyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0
aW9uCi11bmtub3duIGZpbGU6IEZhaWx1cmUKLQotVW5leHBlY3RlZCBtb2NrIGZ1bmN0aW9uIGNh
bGwgLSB0YWtpbmcgZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVkIGF0OgotRklMRTojOgotICAgIEZ1
bmN0aW9uIGNhbGw6IEJhcjIoMSwgMCkKLSAgICAgICAgICBSZXR1cm5zOiBmYWxzZQotR29vZ2xl
IE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVjdGF0aW9uLCBidXQgaXQgZGlkbid0IG1h
dGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18sIEJhcjIoMiwgMikpLi4uCi0gIEV4cGVj
dGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMgotICAgICAgICAgICBBY3R1YWw6IDEKLSAgRXhwZWN0
ZWQgYXJnICMxOiBpcyBlcXVhbCB0byAyCi0gICAgICAgICAgIEFjdHVhbDogMAotICAgICAgICAg
RXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAgICAgICAgIEFjdHVhbDogbmV2ZXIgY2Fs
bGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotdW5rbm93biBmaWxlOiBGYWlsdXJlCi0KLVVu
ZXhwZWN0ZWQgbW9jayBmdW5jdGlvbiBjYWxsIC0gdGFraW5nIGRlZmF1bHQgYWN0aW9uIHNwZWNp
ZmllZCBhdDoKLUZJTEU6IzoKLSAgICBGdW5jdGlvbiBjYWxsOiBCYXIyKDAsIDApCi0gICAgICAg
ICAgUmV0dXJuczogdHJ1ZQotR29vZ2xlIE1vY2sgdHJpZWQgdGhlIGZvbGxvd2luZyAxIGV4cGVj
dGF0aW9uLCBidXQgaXQgZGlkbid0IG1hdGNoOgotCi1GSUxFOiM6IEVYUEVDVF9DQUxMKGZvb18s
IEJhcjIoMiwgMikpLi4uCi0gIEV4cGVjdGVkIGFyZyAjMDogaXMgZXF1YWwgdG8gMgotICAgICAg
ICAgICBBY3R1YWw6IDAKLSAgRXhwZWN0ZWQgYXJnICMxOiBpcyBlcXVhbCB0byAyCi0gICAgICAg
ICAgIEFjdHVhbDogMAotICAgICAgICAgRXhwZWN0ZWQ6IHRvIGJlIGNhbGxlZCBvbmNlCi0gICAg
ICAgICAgIEFjdHVhbDogbmV2ZXIgY2FsbGVkIC0gdW5zYXRpc2ZpZWQgYW5kIGFjdGl2ZQotWyAg
RkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5VbmV4cGVjdGVkQ2FsbFdpdGhEZWZhdWx0QWN0aW9u
Ci1bIFJVTiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxXaXRoRGVmYXVsdEFj
dGlvbgotRklMRTojOiBGYWlsdXJlCi1Nb2NrIGZ1bmN0aW9uIGNhbGxlZCBtb3JlIHRpbWVzIHRo
YW4gZXhwZWN0ZWQgLSB0YWtpbmcgZGVmYXVsdCBhY3Rpb24gc3BlY2lmaWVkIGF0OgotRklMRToj
OgotICAgIEZ1bmN0aW9uIGNhbGw6IEJhcjIoMiwgMikKLSAgICAgICAgICBSZXR1cm5zOiB0cnVl
Ci0gICAgICAgICBFeHBlY3RlZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFs
OiBjYWxsZWQgdHdpY2UgLSBvdmVyLXNhdHVyYXRlZCBhbmQgYWN0aXZlCi1GSUxFOiM6IEZhaWx1
cmUKLU1vY2sgZnVuY3Rpb24gY2FsbGVkIG1vcmUgdGltZXMgdGhhbiBleHBlY3RlZCAtIHRha2lu
ZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZpZWQgYXQ6Ci1GSUxFOiM6Ci0gICAgRnVuY3Rpb24gY2Fs
bDogQmFyMigxLCAxKQotICAgICAgICAgIFJldHVybnM6IGZhbHNlCi0gICAgICAgICBFeHBlY3Rl
ZDogdG8gYmUgY2FsbGVkIG9uY2UKLSAgICAgICAgICAgQWN0dWFsOiBjYWxsZWQgdHdpY2UgLSBv
dmVyLXNhdHVyYXRlZCBhbmQgYWN0aXZlCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LkV4
Y2Vzc2l2ZUNhbGxXaXRoRGVmYXVsdEFjdGlvbgotWyBSVU4gICAgICBdIEdNb2NrT3V0cHV0VGVz
dC5VbmludGVyZXN0aW5nQ2FsbFdpdGhEZWZhdWx0QWN0aW9uCi0KLUdNT0NLIFdBUk5JTkc6Ci1V
bmludGVyZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBz
cGVjaWZpZWQgYXQ6Ci1GSUxFOiM6Ci0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigyLCAyKQotICAg
ICAgICAgIFJldHVybnM6IHRydWUKLU5PVEU6IFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgYWJv
dmUgd2FybmluZyB1bmxlc3MgdGhpcyBjYWxsIHNob3VsZCBub3QgaGFwcGVuLiAgRG8gbm90IHN1
cHByZXNzIGl0IGJ5IGJsaW5kbHkgYWRkaW5nIGFuIEVYUEVDVF9DQUxMKCkgaWYgeW91IGRvbid0
IG1lYW4gdG8gZW5mb3JjZSB0aGUgY2FsbC4gIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xl
L2dvb2dsZXRlc3QvYmxvYi9tYXN0ZXIvZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI2tub3dp
bmctd2hlbi10by1leHBlY3QgZm9yIGRldGFpbHMuCi0KLUdNT0NLIFdBUk5JTkc6Ci1VbmludGVy
ZXN0aW5nIG1vY2sgZnVuY3Rpb24gY2FsbCAtIHRha2luZyBkZWZhdWx0IGFjdGlvbiBzcGVjaWZp
ZWQgYXQ6Ci1GSUxFOiM6Ci0gICAgRnVuY3Rpb24gY2FsbDogQmFyMigxLCAxKQotICAgICAgICAg
IFJldHVybnM6IGZhbHNlCi1OT1RFOiBZb3UgY2FuIHNhZmVseSBpZ25vcmUgdGhlIGFib3ZlIHdh
cm5pbmcgdW5sZXNzIHRoaXMgY2FsbCBzaG91bGQgbm90IGhhcHBlbi4gIERvIG5vdCBzdXBwcmVz
cyBpdCBieSBibGluZGx5IGFkZGluZyBhbiBFWFBFQ1RfQ0FMTCgpIGlmIHlvdSBkb24ndCBtZWFu
IHRvIGVuZm9yY2UgdGhlIGNhbGwuICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nb29n
bGV0ZXN0L2Jsb2IvbWFzdGVyL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5tZCNrbm93aW5nLXdo
ZW4tdG8tZXhwZWN0IGZvciBkZXRhaWxzLgotWyAgICAgICBPSyBdIEdNb2NrT3V0cHV0VGVzdC5V
bmludGVyZXN0aW5nQ2FsbFdpdGhEZWZhdWx0QWN0aW9uCi1bIFJVTiAgICAgIF0gR01vY2tPdXRw
dXRUZXN0LkV4cGxpY2l0QWN0aW9uc1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uCi0KLUdNT0NLIFdB
Uk5JTkc6Ci1GSUxFOiM6IFRvbyBmZXcgYWN0aW9ucyBzcGVjaWZpZWQgaW4gRVhQRUNUX0NBTEwo
Zm9vXywgQmFyMihfLCBfKSkuLi4KLUV4cGVjdGVkIHRvIGJlIGNhbGxlZCB0d2ljZSwgYnV0IGhh
cyBvbmx5IDEgV2lsbE9uY2UoKS4KLUdNT0NLIFdBUk5JTkc6Ci1GSUxFOiM6IEFjdGlvbnMgcmFu
IG91dCBpbiBFWFBFQ1RfQ0FMTChmb29fLCBCYXIyKF8sIF8pKS4uLgotQ2FsbGVkIDIgdGltZXMs
IGJ1dCBvbmx5IDEgV2lsbE9uY2UoKSBpcyBzcGVjaWZpZWQgLSB0YWtpbmcgZGVmYXVsdCBhY3Rp
b24gc3BlY2lmaWVkIGF0OgotRklMRTojOgotU3RhY2sgdHJhY2U6Ci1bICAgICAgIE9LIF0gR01v
Y2tPdXRwdXRUZXN0LkV4cGxpY2l0QWN0aW9uc1J1bk91dFdpdGhEZWZhdWx0QWN0aW9uCi1bIFJV
TiAgICAgIF0gR01vY2tPdXRwdXRUZXN0LkNhdGNoZXNMZWFrZWRNb2NrcwotWyAgICAgICBPSyBd
IEdNb2NrT3V0cHV0VGVzdC5DYXRjaGVzTGVha2VkTW9ja3MKLVsgIEZBSUxFRCAgXSBHTW9ja091
dHB1dFRlc3QuVW5leHBlY3RlZENhbGwKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5l
eHBlY3RlZENhbGxUb1ZvaWRGdW5jdGlvbgotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5F
eGNlc3NpdmVDYWxsCi1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LkV4Y2Vzc2l2ZUNhbGxU
b1ZvaWRGdW5jdGlvbgotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5SZXRpcmVkRXhwZWN0
YXRpb24KLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRQcmVyZXF1aXNp
dGUKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5zYXRpc2ZpZWRQcmVyZXF1aXNpdGVz
Ci1bICBGQUlMRUQgIF0gR01vY2tPdXRwdXRUZXN0LlVuc2F0aXNmaWVkV2l0aAotWyAgRkFJTEVE
ICBdIEdNb2NrT3V0cHV0VGVzdC5VbnNhdGlzZmllZEV4cGVjdGF0aW9uCi1bICBGQUlMRUQgIF0g
R01vY2tPdXRwdXRUZXN0Lk1pc21hdGNoQXJndW1lbnRzCi1bICBGQUlMRUQgIF0gR01vY2tPdXRw
dXRUZXN0Lk1pc21hdGNoV2l0aAotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5NaXNtYXRj
aEFyZ3VtZW50c0FuZFdpdGgKLVsgIEZBSUxFRCAgXSBHTW9ja091dHB1dFRlc3QuVW5leHBlY3Rl
ZENhbGxXaXRoRGVmYXVsdEFjdGlvbgotWyAgRkFJTEVEICBdIEdNb2NrT3V0cHV0VGVzdC5FeGNl
c3NpdmVDYWxsV2l0aERlZmF1bHRBY3Rpb24KLQotCi1GSUxFOiM6IEVSUk9SOiB0aGlzIG1vY2sg
b2JqZWN0IHNob3VsZCBiZSBkZWxldGVkIGJ1dCBuZXZlciBpcy4gSXRzIGFkZHJlc3MgaXMgQDB4
Iy4KLUZJTEU6IzogRVJST1I6IHRoaXMgbW9jayBvYmplY3Qgc2hvdWxkIGJlIGRlbGV0ZWQgYnV0
IG5ldmVyIGlzLiBJdHMgYWRkcmVzcyBpcyBAMHgjLgotRklMRTojOiBFUlJPUjogdGhpcyBtb2Nr
IG9iamVjdCBzaG91bGQgYmUgZGVsZXRlZCBidXQgbmV2ZXIgaXMuIEl0cyBhZGRyZXNzIGlzIEAw
eCMuCi1FUlJPUjogMyBsZWFrZWQgbW9jayBvYmplY3RzIGZvdW5kIGF0IHByb2dyYW0gZXhpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfc3RyZXNzX3Rlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xlbW9jay90ZXN0L2dtb2NrX3N0cmVzc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMTZiYWRkYThlZWMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0
L2dtb2NrX3N0cmVzc190ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzIyICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIE1v
Y2sgY29uc3RydWN0cyBjYW4gYmUgdXNlZCBpbiBhIGxhcmdlIG51bWJlciBvZgotLy8gdGhyZWFk
cyBjb25jdXJyZW50bHkuCi0KLSNpbmNsdWRlICJnbW9jay9nbW9jay5oIgotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSB7Ci0KLS8vIEZy
b20gPGd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaD4uCi11c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0KLS8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0ZXN0IHRo
cmVhZHMgKG5vdCBpbmNsdWRpbmcgaGVscGVyIHRocmVhZHMpCi0vLyB0byBjcmVhdGUuCi1jb25z
dCBpbnQga01heFRlc3RUaHJlYWRzID0gNTA7Ci0KLS8vIEhvdyBtYW55IHRpbWVzIHRvIHJlcGVh
dCBhIHRhc2sgaW4gYSB0ZXN0IHRocmVhZC4KLWNvbnN0IGludCBrUmVwZWF0ID0gNTA7Ci0KLWNs
YXNzIE1vY2tGb28gewotIHB1YmxpYzoKLSAgTU9DS19NRVRIT0QxKEJhciwgaW50KGludCBuKSk7
ICAvLyBOT0xJTlQKLSAgTU9DS19NRVRIT0QyKEJheiwgY2hhcihjb25zdCBjaGFyKiBzMSwgY29u
c3Qgc3RkOjpzdHJpbmcmIHMyKSk7ICAvLyBOT0xJTlQKLX07Ci0KLS8vIEhlbHBlciBmb3Igd2Fp
dGluZyBmb3IgdGhlIGdpdmVuIHRocmVhZCB0byBmaW5pc2ggYW5kIHRoZW4gZGVsZXRpbmcgaXQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgSm9pbkFuZERlbGV0ZShUaHJlYWRXaXRoUGFy
YW08VD4qIHQpIHsKLSAgdC0+Sm9pbigpOwotICBkZWxldGUgdDsKLX0KLQotdXNpbmcgaW50ZXJu
YWw6OmxpbmtlZF9wdHI7Ci0KLS8vIEhlbHBlciBjbGFzc2VzIGZvciB0ZXN0aW5nIHVzaW5nIGxp
bmtlZF9wdHIgY29uY3VycmVudGx5LgotCi1jbGFzcyBCYXNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEJhc2UoaW50IGFfeCkgOiB4XyhhX3gpIHt9Ci0gIHZpcnR1YWwgfkJhc2UoKSB7fQotICBp
bnQgeCgpIGNvbnN0IHsgcmV0dXJuIHhfOyB9Ci0gcHJpdmF0ZToKLSAgaW50IHhfOwotfTsKLQot
Y2xhc3MgRGVyaXZlZDEgOiBwdWJsaWMgQmFzZSB7Ci0gcHVibGljOgotICBEZXJpdmVkMShpbnQg
YV94LCBpbnQgYV95KSA6IEJhc2UoYV94KSwgeV8oYV95KSB7fQotICBpbnQgeSgpIGNvbnN0IHsg
cmV0dXJuIHlfOyB9Ci0gcHJpdmF0ZToKLSAgaW50IHlfOwotfTsKLQotY2xhc3MgRGVyaXZlZDIg
OiBwdWJsaWMgQmFzZSB7Ci0gcHVibGljOgotICBEZXJpdmVkMihpbnQgYV94LCBpbnQgYV96KSA6
IEJhc2UoYV94KSwgel8oYV96KSB7fQotICBpbnQgeigpIGNvbnN0IHsgcmV0dXJuIHpfOyB9Ci0g
cHJpdmF0ZToKLSAgaW50IHpfOwotfTsKLQotbGlua2VkX3B0cjxEZXJpdmVkMT4gcG9pbnRlcjEo
bmV3IERlcml2ZWQxKDEsIDIpKTsKLWxpbmtlZF9wdHI8RGVyaXZlZDI+IHBvaW50ZXIyKG5ldyBE
ZXJpdmVkMigzLCA0KSk7Ci0KLXN0cnVjdCBEdW1teSB7fTsKLQotLy8gVGVzdHMgdGhhdCB3ZSBj
YW4gY29weSBmcm9tIGEgbGlua2VkX3B0ciBhbmQgcmVhZCBpdCBjb25jdXJyZW50bHkuCi12b2lk
IFRlc3RDb25jdXJyZW50Q29weUFuZFJlYWRMaW5rZWRQdHIoRHVtbXkgLyogZHVtbXkgKi8pIHsK
LSAgLy8gUmVhZHMgcG9pbnRlcjEgYW5kIHBvaW50ZXIyIHdoaWxlIHRoZXkgYXJlIGJlaW5nIGNv
cGllZCBmcm9tIGluCi0gIC8vIGFub3RoZXIgdGhyZWFkLgotICBFWFBFQ1RfRVEoMSwgcG9pbnRl
cjEtPngoKSk7Ci0gIEVYUEVDVF9FUSgyLCBwb2ludGVyMS0+eSgpKTsKLSAgRVhQRUNUX0VRKDMs
IHBvaW50ZXIyLT54KCkpOwotICBFWFBFQ1RfRVEoNCwgcG9pbnRlcjItPnooKSk7Ci0KLSAgLy8g
Q29waWVzIGZyb20gcG9pbnRlcjEuCi0gIGxpbmtlZF9wdHI8RGVyaXZlZDE+IHAxKHBvaW50ZXIx
KTsKLSAgRVhQRUNUX0VRKDEsIHAxLT54KCkpOwotICBFWFBFQ1RfRVEoMiwgcDEtPnkoKSk7Ci0K
LSAgLy8gQXNzaWducyBmcm9tIHBvaW50ZXIyIHdoZXJlIHRoZSBMSFMgd2FzIGVtcHR5LgotICBs
aW5rZWRfcHRyPEJhc2U+IHAyOwotICBwMiA9IHBvaW50ZXIxOwotICBFWFBFQ1RfRVEoMSwgcDIt
PngoKSk7Ci0KLSAgLy8gQXNzaWducyBmcm9tIHBvaW50ZXIyIHdoZXJlIHRoZSBMSFMgd2FzIG5v
dCBlbXB0eS4KLSAgcDIgPSBwb2ludGVyMjsKLSAgRVhQRUNUX0VRKDMsIHAyLT54KCkpOwotfQot
Ci1jb25zdCBsaW5rZWRfcHRyPERlcml2ZWQxPiBwMChuZXcgRGVyaXZlZDEoMSwgMikpOwotCi0v
LyBUZXN0cyB0aGF0IHdlIGNhbiBjb25jdXJyZW50bHkgbW9kaWZ5IHR3byBsaW5rZWRfcHRycyB0
aGF0IHBvaW50IHRvCi0vLyB0aGUgc2FtZSBvYmplY3QuCi12b2lkIFRlc3RDb25jdXJyZW50V3Jp
dGVUb0VxdWFsTGlua2VkUHRyKER1bW15IC8qIGR1bW15ICovKSB7Ci0gIC8vIHAxIGFuZCBwMiBw
b2ludCB0byB0aGUgc2FtZSwgc2hhcmVkIHRoaW5nLiAgT25lIHRocmVhZCByZXNldHMgcDEuCi0g
IC8vIEFub3RoZXIgdGhyZWFkIGFzc2lnbnMgdG8gcDIuICBUaGlzIHdpbGwgY2F1c2UgdGhlIHNh
bWUKLSAgLy8gdW5kZXJseWluZyAicmluZyIgdG8gYmUgdXBkYXRlZCBjb25jdXJyZW50bHkuCi0g
IGxpbmtlZF9wdHI8RGVyaXZlZDE+IHAxKHAwKTsKLSAgbGlua2VkX3B0cjxEZXJpdmVkMT4gcDIo
cDApOwotCi0gIEVYUEVDVF9FUSgxLCBwMS0+eCgpKTsKLSAgRVhQRUNUX0VRKDIsIHAxLT55KCkp
OwotCi0gIEVYUEVDVF9FUSgxLCBwMi0+eCgpKTsKLSAgRVhQRUNUX0VRKDIsIHAyLT55KCkpOwot
Ci0gIHAxLnJlc2V0KCk7Ci0gIHAyID0gcDA7Ci0KLSAgRVhQRUNUX0VRKDEsIHAyLT54KCkpOwot
ICBFWFBFQ1RfRVEoMiwgcDItPnkoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGlmZmVyZW50IG1v
Y2sgb2JqZWN0cyBjYW4gYmUgdXNlZCBpbiB0aGVpciByZXNwZWN0aXZlCi0vLyB0aHJlYWRzLiAg
VGhpcyBzaG91bGQgZ2VuZXJhdGUgbm8gR29vZ2xlIFRlc3QgZmFpbHVyZS4KLXZvaWQgVGVzdENv
bmN1cnJlbnRNb2NrT2JqZWN0cyhEdW1teSAvKiBkdW1teSAqLykgewotICAvLyBDcmVhdGVzIGEg
bW9jayBhbmQgZG9lcyBzb21lIHR5cGljYWwgb3BlcmF0aW9ucyBvbiBpdC4KLSAgTW9ja0ZvbyBm
b287Ci0gIE9OX0NBTEwoZm9vLCBCYXIoXykpCi0gICAgICAuV2lsbEJ5RGVmYXVsdChSZXR1cm4o
MSkpOwotICBPTl9DQUxMKGZvbywgQmF6KF8sIF8pKQotICAgICAgLldpbGxCeURlZmF1bHQoUmV0
dXJuKCdiJykpOwotICBPTl9DQUxMKGZvbywgQmF6KF8sICJ5b3UiKSkKLSAgICAgIC5XaWxsQnlE
ZWZhdWx0KFJldHVybignYScpKTsKLQotICBFWFBFQ1RfQ0FMTChmb28sIEJhcigwKSkKLSAgICAg
IC5UaW1lcyhBdE1vc3QoMykpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJheihfLCBfKSk7Ci0gIEVY
UEVDVF9DQUxMKGZvbywgQmF6KCJoaSIsICJ5b3UiKSkKLSAgICAgIC5XaWxsT25jZShSZXR1cm4o
J3onKSkKLSAgICAgIC5XaWxsUmVwZWF0ZWRseShEb0RlZmF1bHQoKSk7Ci0KLSAgRVhQRUNUX0VR
KDEsIGZvby5CYXIoMCkpOwotICBFWFBFQ1RfRVEoMSwgZm9vLkJhcigwKSk7Ci0gIEVYUEVDVF9F
USgneicsIGZvby5CYXooImhpIiwgInlvdSIpKTsKLSAgRVhQRUNUX0VRKCdhJywgZm9vLkJheigi
aGkiLCAieW91IikpOwotICBFWFBFQ1RfRVEoJ2InLCBmb28uQmF6KCJoaSIsICJtZSIpKTsKLX0K
LQotLy8gVGVzdHMgaW52b2tpbmcgbWV0aG9kcyBvZiB0aGUgc2FtZSBtb2NrIG9iamVjdCBpbiBt
dWx0aXBsZSB0aHJlYWRzLgotCi1zdHJ1Y3QgSGVscGVyMVBhcmFtIHsKLSAgTW9ja0ZvbyogbW9j
a19mb287Ci0gIGludCogY291bnQ7Ci19OwotCi12b2lkIEhlbHBlcjEoSGVscGVyMVBhcmFtIHBh
cmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1JlcGVhdDsgaSsrKSB7Ci0gICAgY29uc3Qg
Y2hhciBjaCA9IHBhcmFtLm1vY2tfZm9vLT5CYXooImEiLCAiYiIpOwotICAgIGlmIChjaCA9PSAn
YScpIHsKLSAgICAgIC8vIEl0IHdhcyBhbiBleHBlY3RlZCBjYWxsLgotICAgICAgKCpwYXJhbS5j
b3VudCkrKzsKLSAgICB9IGVsc2UgewotICAgICAgLy8gSXQgd2FzIGFuIGV4Y2Vzc2l2ZSBjYWxs
LgotICAgICAgRVhQRUNUX0VRKCdcMCcsIGNoKTsKLSAgICB9Ci0KLSAgICAvLyBBbiB1bmV4cGVj
dGVkIGNhbGwuCi0gICAgRVhQRUNUX0VRKCdcMCcsIHBhcmFtLm1vY2tfZm9vLT5CYXooIngiLCAi
eSIpKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZS4iOwotCi0gICAgLy8gQW4gdW5pbnRlcmVzdGluZyBj
YWxsLgotICAgIEVYUEVDVF9FUSgxLCBwYXJhbS5tb2NrX2Zvby0+QmFyKDUpKTsKLSAgfQotfQot
Ci0vLyBUaGlzIHNob3VsZCBnZW5lcmF0ZSAzKmtSZXBlYXQgKyAxIGZhaWx1cmVzIGluIHRvdGFs
Lgotdm9pZCBUZXN0Q29uY3VycmVudENhbGxzT25TYW1lT2JqZWN0KER1bW15IC8qIGR1bW15ICov
KSB7Ci0gIE1vY2tGb28gZm9vOwotCi0gIE9OX0NBTEwoZm9vLCBCYXIoXykpCi0gICAgICAuV2ls
bEJ5RGVmYXVsdChSZXR1cm4oMSkpOwotICBFWFBFQ1RfQ0FMTChmb28sIEJheihfLCAiYiIpKQot
ICAgICAgLlRpbWVzKGtSZXBlYXQpCi0gICAgICAuV2lsbFJlcGVhdGVkbHkoUmV0dXJuKCdhJykp
OwotICBFWFBFQ1RfQ0FMTChmb28sIEJheihfLCAiYyIpKTsgIC8vIEV4cGVjdGVkIHRvIGJlIHVu
c2F0aXNmaWVkLgotCi0gIC8vIFRoaXMgY2h1bmsgb2YgY29kZSBzaG91bGQgZ2VuZXJhdGUga1Jl
cGVhdCBmYWlsdXJlcyBhYm91dAotICAvLyBleGNlc3NpdmUgY2FsbHMsIGFuZCAyKmtSZXBlYXQg
ZmFpbHVyZXMgYWJvdXQgdW5leHBlY3RlZCBjYWxscy4KLSAgaW50IGNvdW50MSA9IDA7Ci0gIGNv
bnN0IEhlbHBlcjFQYXJhbSBwYXJhbSA9IHsgJmZvbywgJmNvdW50MSB9OwotICBUaHJlYWRXaXRo
UGFyYW08SGVscGVyMVBhcmFtPiogY29uc3QgdCA9Ci0gICAgICBuZXcgVGhyZWFkV2l0aFBhcmFt
PEhlbHBlcjFQYXJhbT4oSGVscGVyMSwgcGFyYW0sIE5VTEwpOwotCi0gIGludCBjb3VudDIgPSAw
OwotICBjb25zdCBIZWxwZXIxUGFyYW0gcGFyYW0yID0geyAmZm9vLCAmY291bnQyIH07Ci0gIEhl
bHBlcjEocGFyYW0yKTsKLSAgSm9pbkFuZERlbGV0ZSh0KTsKLQotICBFWFBFQ1RfRVEoa1JlcGVh
dCwgY291bnQxICsgY291bnQyKTsKLQotICAvLyBmb28ncyBkZXN0cnVjdG9yIHNob3VsZCBnZW5l
cmF0ZSBvbmUgZmFpbHVyZSBhYm91dCB1bnNhdGlzZmllZAotICAvLyBleHBlY3RhdGlvbi4KLX0K
LQotLy8gVGVzdHMgdXNpbmcgdGhlIHNhbWUgbW9jayBvYmplY3QgaW4gbXVsdGlwbGUgdGhyZWFk
cyB3aGVuIHRoZQotLy8gZXhwZWN0YXRpb25zIGFyZSBwYXJ0aWFsbHkgb3JkZXJlZC4KLQotdm9p
ZCBIZWxwZXIyKE1vY2tGb28qIGZvbykgewotICBmb3IgKGludCBpID0gMDsgaSA8IGtSZXBlYXQ7
IGkrKykgewotICAgIGZvby0+QmFyKDIpOwotICAgIGZvby0+QmFyKDMpOwotICB9Ci19Ci0KLS8v
IFRoaXMgc2hvdWxkIGdlbmVyYXRlIG5vIEdvb2dsZSBUZXN0IGZhaWx1cmVzLgotdm9pZCBUZXN0
UGFydGlhbGx5T3JkZXJlZEV4cGVjdGF0aW9uc1dpdGhUaHJlYWRzKER1bW15IC8qIGR1bW15ICov
KSB7Ci0gIE1vY2tGb28gZm9vOwotICBTZXF1ZW5jZSBzMSwgczI7Ci0KLSAgewotICAgIEluU2Vx
dWVuY2UgZHVtbXk7Ci0gICAgRVhQRUNUX0NBTEwoZm9vLCBCYXIoMCkpOwotICAgIEVYUEVDVF9D
QUxMKGZvbywgQmFyKDEpKQotICAgICAgICAuSW5TZXF1ZW5jZShzMSwgczIpOwotICB9Ci0KLSAg
RVhQRUNUX0NBTEwoZm9vLCBCYXIoMikpCi0gICAgICAuVGltZXMoMiprUmVwZWF0KQotICAgICAg
LkluU2VxdWVuY2UoczEpCi0gICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICBFWFBFQ1Rf
Q0FMTChmb28sIEJhcigzKSkKLSAgICAgIC5UaW1lcygyKmtSZXBlYXQpCi0gICAgICAuSW5TZXF1
ZW5jZShzMik7Ci0KLSAgewotICAgIEluU2VxdWVuY2UgZHVtbXk7Ci0gICAgRVhQRUNUX0NBTEwo
Zm9vLCBCYXIoMikpCi0gICAgICAgIC5JblNlcXVlbmNlKHMxLCBzMik7Ci0gICAgRVhQRUNUX0NB
TEwoZm9vLCBCYXIoNCkpOwotICB9Ci0KLSAgZm9vLkJhcigwKTsKLSAgZm9vLkJhcigxKTsKLQot
ICBUaHJlYWRXaXRoUGFyYW08TW9ja0Zvbyo+KiBjb25zdCB0ID0KLSAgICAgIG5ldyBUaHJlYWRX
aXRoUGFyYW08TW9ja0Zvbyo+KEhlbHBlcjIsICZmb28sIE5VTEwpOwotICBIZWxwZXIyKCZmb28p
OwotICBKb2luQW5kRGVsZXRlKHQpOwotCi0gIGZvby5CYXIoMik7Ci0gIGZvby5CYXIoNCk7Ci19
Ci0KLS8vIFRlc3RzIHVzaW5nIEdvb2dsZSBNb2NrIGNvbnN0cnVjdHMgaW4gbWFueSB0aHJlYWRz
IGNvbmN1cnJlbnRseS4KLVRFU1QoU3RyZXNzVGVzdCwgQ2FuVXNlR01vY2tXaXRoVGhyZWFkcykg
ewotICB2b2lkICgqdGVzdF9yb3V0aW5lc1tdKShEdW1teSBkdW1teSkgPSB7Ci0gICAgJlRlc3RD
b25jdXJyZW50Q29weUFuZFJlYWRMaW5rZWRQdHIsCi0gICAgJlRlc3RDb25jdXJyZW50V3JpdGVU
b0VxdWFsTGlua2VkUHRyLAotICAgICZUZXN0Q29uY3VycmVudE1vY2tPYmplY3RzLAotICAgICZU
ZXN0Q29uY3VycmVudENhbGxzT25TYW1lT2JqZWN0LAotICAgICZUZXN0UGFydGlhbGx5T3JkZXJl
ZEV4cGVjdGF0aW9uc1dpdGhUaHJlYWRzLAotICB9OwotCi0gIGNvbnN0IGludCBrUm91dGluZXMg
PSBzaXplb2YodGVzdF9yb3V0aW5lcykvc2l6ZW9mKHRlc3Rfcm91dGluZXNbMF0pOwotICBjb25z
dCBpbnQga0NvcGllc09mRWFjaFJvdXRpbmUgPSBrTWF4VGVzdFRocmVhZHMgLyBrUm91dGluZXM7
Ci0gIGNvbnN0IGludCBrVGVzdFRocmVhZHMgPSBrQ29waWVzT2ZFYWNoUm91dGluZSAqIGtSb3V0
aW5lczsKLSAgVGhyZWFkV2l0aFBhcmFtPER1bW15PiogdGhyZWFkc1trVGVzdFRocmVhZHNdID0g
e307Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RUaHJlYWRzOyBpKyspIHsKLSAgICAvLyBD
cmVhdGVzIGEgdGhyZWFkIHRvIHJ1biB0aGUgdGVzdCBmdW5jdGlvbi4KLSAgICB0aHJlYWRzW2ld
ID0KLSAgICAgICAgbmV3IFRocmVhZFdpdGhQYXJhbTxEdW1teT4odGVzdF9yb3V0aW5lc1tpICUg
a1JvdXRpbmVzXSwgRHVtbXkoKSwgTlVMTCk7Ci0gICAgR1RFU1RfTE9HXyhJTkZPKSA8PCAiVGhy
ZWFkICMiIDw8IGkgPDwgIiBydW5uaW5nIC4gLiAuIjsKLSAgfQotCi0gIC8vIEF0IHRoaXMgcG9p
bnQsIHdlIGhhdmUgbWFueSB0aHJlYWRzIHJ1bm5pbmcuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwg
a1Rlc3RUaHJlYWRzOyBpKyspIHsKLSAgICBKb2luQW5kRGVsZXRlKHRocmVhZHNbaV0pOwotICB9
Ci0KLSAgLy8gRW5zdXJlcyB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBmYWlsdXJlcyBoYXZl
IGJlZW4gcmVwb3J0ZWQuCi0gIGNvbnN0IFRlc3RJbmZvKiBjb25zdCBpbmZvID0gVW5pdFRlc3Q6
OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIGNvbnN0IFRlc3RSZXN1bHQm
IHJlc3VsdCA9ICppbmZvLT5yZXN1bHQoKTsKLSAgY29uc3QgaW50IGtFeHBlY3RlZEZhaWx1cmVz
ID0gKDMqa1JlcGVhdCArIDEpKmtDb3BpZXNPZkVhY2hSb3V0aW5lOwotICBHVEVTVF9DSEVDS18o
a0V4cGVjdGVkRmFpbHVyZXMgPT0gcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKSkKLSAgICAgIDw8
ICJFeHBlY3RlZCAiIDw8IGtFeHBlY3RlZEZhaWx1cmVzIDw8ICIgZmFpbHVyZXMsIGJ1dCBnb3Qg
IgotICAgICAgPDwgcmVzdWx0LnRvdGFsX3BhcnRfY291bnQoKTsKLX0KLQotfSAgLy8gbmFtZXNw
YWNlCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGFyZ3YpOwotCi0gIGNv
bnN0IGludCBleGl0X2NvZGUgPSBSVU5fQUxMX1RFU1RTKCk7ICAvLyBFeHBlY3RlZCB0byBmYWls
LgotICBHVEVTVF9DSEVDS18oZXhpdF9jb2RlICE9IDApIDw8ICJSVU5fQUxMX1RFU1RTKCkgZGlk
IG5vdCBmYWlsIGFzIGV4cGVjdGVkIjsKLQotICBwcmludGYoIlxuUEFTU1xuIik7Ci0gIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVzdC9nbW9ja190ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZW1vY2svdGVzdC9nbW9ja190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkOGQwYzU3YjE2ZjMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xlbW9jay90ZXN0L2dtb2Nr
X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQotLy8gR29vZ2xlIE1vY2sgLSBhIGZyYW1ld29yayBmb3Igd3Jp
dGluZyBDKysgbW9jayBjbGFzc2VzLgotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjb2RlIGluIGdt
b2NrLmNjLgotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLQotI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaWYgIWRlZmluZWQoR1RFU1RfQ1VTVE9NX0lO
SVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQotCi11c2luZyB0ZXN0aW5nOjpHTU9DS19GTEFHKHZl
cmJvc2UpOwotdXNpbmcgdGVzdGluZzo6SW5pdEdvb2dsZU1vY2s7Ci0KLS8vIFZlcmlmaWVzIHRo
YXQgY2FsbGluZyBJbml0R29vZ2xlTW9jaygpIG9uIGFyZ3YgcmVzdWx0cyBpbiBuZXdfYXJndiwK
LS8vIGFuZCB0aGUgZ21vY2tfdmVyYm9zZSBmbGFnJ3MgdmFsdWUgaXMgc2V0IHRvIGV4cGVjdGVk
X2dtb2NrX3ZlcmJvc2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhciwgaW50IE0sIGludCBOPgot
dm9pZCBUZXN0SW5pdEdvb2dsZU1vY2soY29uc3QgQ2hhciogKCZhcmd2KVtNXSwgY29uc3QgQ2hh
ciogKCZuZXdfYXJndilbTl0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OnN0ZDo6
c3RyaW5nJiBleHBlY3RlZF9nbW9ja192ZXJib3NlKSB7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcg
b2xkX3ZlcmJvc2UgPSBHTU9DS19GTEFHKHZlcmJvc2UpOwotCi0gIGludCBhcmdjID0gTTsKLSAg
SW5pdEdvb2dsZU1vY2soJmFyZ2MsIGNvbnN0X2Nhc3Q8Q2hhcioqPihhcmd2KSk7Ci0gIEFTU0VS
VF9FUShOLCBhcmdjKSA8PCAiVGhlIG5ldyBhcmd2IGhhcyB3cm9uZyBudW1iZXIgb2YgZWxlbWVu
dHMuIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewotICAgIEVYUEVDVF9TVFJF
UShuZXdfYXJndltpXSwgYXJndltpXSk7Ci0gIH0KLQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZ21v
Y2tfdmVyYm9zZSwgR01PQ0tfRkxBRyh2ZXJib3NlKS5jX3N0cigpKTsKLSAgR01PQ0tfRkxBRyh2
ZXJib3NlKSA9IG9sZF92ZXJib3NlOyAgLy8gUmVzdG9yZXMgdGhlIGdtb2NrX3ZlcmJvc2UgZmxh
Zy4KLX0KLQotVEVTVChJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0ludmFsaWRDb21tYW5kTGlu
ZSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0
IGNoYXIqIG5ld19hcmd2W10gPSB7Ci0gICAgTlVMTAotICB9OwotCi0gIFRlc3RJbml0R29vZ2xl
TW9jayhhcmd2LCBuZXdfYXJndiwgR01PQ0tfRkxBRyh2ZXJib3NlKSk7Ci19Ci0KLVRFU1QoSW5p
dEdvb2dsZU1vY2tUZXN0LCBQYXJzZXNFbXB0eUNvbW1hbmRMaW5lKSB7Ci0gIGNvbnN0IGNoYXIq
IGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNo
YXIqIG5ld19hcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBU
ZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOwot
fQotCi1URVNUKEluaXRHb29nbGVNb2NrVGVzdCwgUGFyc2VzU2luZ2xlRmxhZykgewotICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWdtb2NrX3ZlcmJvc2U9
aW5mbyIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIG5ld19hcmd2W10gPSB7Ci0g
ICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5pdEdvb2dsZU1vY2soYXJn
diwgbmV3X2FyZ3YsICJpbmZvIik7Ci19Ci0KLVRFU1QoSW5pdEdvb2dsZU1vY2tUZXN0LCBQYXJz
ZXNVbnJlY29nbml6ZWRGbGFnKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9v
LmV4ZSIsCi0gICAgIi0tbm9uX2dtb2NrX2ZsYWc9YmxhaCIsCi0gICAgTlVMTAotICB9OwotCi0g
IGNvbnN0IGNoYXIqIG5ld19hcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLW5vbl9n
bW9ja19mbGFnPWJsYWgiLAotICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5pdEdvb2dsZU1vY2so
YXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOwotfQotCi1URVNUKEluaXRHb29n
bGVNb2NrVGVzdCwgUGFyc2VzR29vZ2xlTW9ja0ZsYWdBbmRVbnJlY29nbml6ZWRGbGFnKSB7Ci0g
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tbm9uX2dtb2Nr
X2ZsYWc9YmxhaCIsCi0gICAgIi0tZ21vY2tfdmVyYm9zZT1lcnJvciIsCi0gICAgTlVMTAotICB9
OwotCi0gIGNvbnN0IGNoYXIqIG5ld19hcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICIt
LW5vbl9nbW9ja19mbGFnPWJsYWgiLAotICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5pdEdvb2ds
ZU1vY2soYXJndiwgbmV3X2FyZ3YsICJlcnJvciIpOwotfQotCi1URVNUKFdpZGVJbml0R29vZ2xl
TW9ja1Rlc3QsIFBhcnNlc0ludmFsaWRDb21tYW5kTGluZSkgewotICBjb25zdCB3Y2hhcl90KiBh
cmd2W10gPSB7Ci0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IHdjaGFyX3QqIG5ld19hcmd2W10g
PSB7Ci0gICAgTlVMTAotICB9OwotCi0gIFRlc3RJbml0R29vZ2xlTW9jayhhcmd2LCBuZXdfYXJn
diwgR01PQ0tfRkxBRyh2ZXJib3NlKSk7Ci19Ci0KLVRFU1QoV2lkZUluaXRHb29nbGVNb2NrVGVz
dCwgUGFyc2VzRW1wdHlDb21tYW5kTGluZSkgewotICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7
Ci0gICAgTCJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3Qgd2NoYXJfdCogbmV3
X2FyZ3ZbXSA9IHsKLSAgICBMImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5p
dEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkpOwotfQotCi1U
RVNUKFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc1NpbmdsZUZsYWcpIHsKLSAgY29uc3Qg
d2NoYXJfdCogYXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLWdtb2NrX3ZlcmJv
c2U9aW5mbyIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IHdjaGFyX3QqIG5ld19hcmd2W10g
PSB7Ci0gICAgTCJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgVGVzdEluaXRHb29nbGVN
b2NrKGFyZ3YsIG5ld19hcmd2LCAiaW5mbyIpOwotfQotCi1URVNUKFdpZGVJbml0R29vZ2xlTW9j
a1Rlc3QsIFBhcnNlc1VucmVjb2duaXplZEZsYWcpIHsKLSAgY29uc3Qgd2NoYXJfdCogYXJndltd
ID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAotICAg
IE5VTEwKLSAgfTsKLQotICBjb25zdCB3Y2hhcl90KiBuZXdfYXJndltdID0gewotICAgIEwiZm9v
LmV4ZSIsCi0gICAgTCItLW5vbl9nbW9ja19mbGFnPWJsYWgiLAotICAgIE5VTEwKLSAgfTsKLQot
ICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3YsIEdNT0NLX0ZMQUcodmVyYm9zZSkp
OwotfQotCi1URVNUKFdpZGVJbml0R29vZ2xlTW9ja1Rlc3QsIFBhcnNlc0dvb2dsZU1vY2tGbGFn
QW5kVW5yZWNvZ25pemVkRmxhZykgewotICBjb25zdCB3Y2hhcl90KiBhcmd2W10gPSB7Ci0gICAg
TCJmb28uZXhlIiwKLSAgICBMIi0tbm9uX2dtb2NrX2ZsYWc9YmxhaCIsCi0gICAgTCItLWdtb2Nr
X3ZlcmJvc2U9ZXJyb3IiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCB3Y2hhcl90KiBuZXdf
YXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLW5vbl9nbW9ja19mbGFnPWJsYWgi
LAotICAgIE5VTEwKLSAgfTsKLQotICBUZXN0SW5pdEdvb2dsZU1vY2soYXJndiwgbmV3X2FyZ3Ys
ICJlcnJvciIpOwotfQotCi0jZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0NVU1RPTV9JTklUX0dP
T0dMRV9URVNUX0ZVTkNUSU9OXykKLQotLy8gTWFrZXMgc3VyZSBHb29nbGUgTW9jayBmbGFncyBj
YW4gYmUgYWNjZXNzZWQgaW4gY29kZS4KLVRFU1QoRmxhZ1Rlc3QsIElzQWNjZXNzaWJsZUluQ29k
ZSkgewotICBib29sIGR1bW15ID0gdGVzdGluZzo6R01PQ0tfRkxBRyhjYXRjaF9sZWFrZWRfbW9j
a3MpICYmCi0gICAgICB0ZXN0aW5nOjpHTU9DS19GTEFHKHZlcmJvc2UpID09ICIiOwotICAodm9p
ZClkdW1teTsgIC8vIEF2b2lkcyB0aGUgInVudXNlZCBsb2NhbCB2YXJpYWJsZSIgd2FybmluZy4K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdF91dGlscy5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGVtb2NrL3Rlc3QvZ21vY2tfdGVzdF91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMjBlM2QzZDQ0Njg1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZW1vY2svdGVz
dC9nbW9ja190ZXN0X3V0aWxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVzdCB1
dGlsaXRpZXMgZm9yIEdvb2dsZSBDKysgTW9ja2luZyBGcmFtZXdvcmsuIiIiCi0KLV9fYXV0aG9y
X18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0
IHN5cwotCi0KLSMgRGV0ZXJtaW5lcyBwYXRoIHRvIGd0ZXN0X3Rlc3RfdXRpbHMgYW5kIGltcG9y
dHMgaXQuCi1TQ1JJUFRfRElSID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciAnLicKLQot
IyBpc2RpciByZXNvbHZlcyBzeW1ib2xpYyBsaW5rcy4KLWd0ZXN0X3Rlc3RzX3V0aWxfZGlyID0g
b3MucGF0aC5qb2luKFNDUklQVF9ESVIsICcuLi9ndGVzdC90ZXN0JykKLWlmIG9zLnBhdGguaXNk
aXIoZ3Rlc3RfdGVzdHNfdXRpbF9kaXIpOgotICBHVEVTVF9URVNUU19VVElMX0RJUiA9IGd0ZXN0
X3Rlc3RzX3V0aWxfZGlyCi1lbHNlOgotICBHVEVTVF9URVNUU19VVElMX0RJUiA9IG9zLnBhdGgu
am9pbihTQ1JJUFRfRElSLCAnLi4vLi4vZ3Rlc3QvdGVzdCcpCi0KLXN5cy5wYXRoLmFwcGVuZChH
VEVTVF9URVNUU19VVElMX0RJUikKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzICAjIHB5bGludDog
ZGlzYWJsZS1tc2c9QzYyMDQKLQotCi1kZWYgR2V0U291cmNlRGlyKCk6Ci0gICIiIlJldHVybnMg
dGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFy
ZS4iIiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKQotCi0KLWRl
ZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1lKToKLSAgIiIiUmV0dXJucyB0
aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgdGVzdCBiaW5hcnkgZ2l2ZW4gaXRzIG5hbWUuCi0KLSAg
VGhlIGZ1bmN0aW9uIHdpbGwgcHJpbnQgYSBtZXNzYWdlIGFuZCBhYm9ydCB0aGUgcHJvZ3JhbSBp
ZiB0aGUgcmVzdWx0aW5nIGZpbGUKLSAgZG9lc24ndCBleGlzdC4KLQotICBBcmdzOgotICAgIGV4
ZWN1dGFibGVfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBiaW5hcnkgdGhhdCB0aGUgdGVzdCBzY3Jp
cHQgcnVucy4KLQotICBSZXR1cm5zOgotICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSB0ZXN0
IGJpbmFyeS4KLSAgIiIiCi0KLSAgcmV0dXJuIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKGV4ZWN1dGFibGVfbmFtZSkKLQotCi1kZWYgR2V0RXhpdFN0YXR1cyhleGl0X2Nv
ZGUpOgotICAiIiJSZXR1cm5zIHRoZSBhcmd1bWVudCB0byBleGl0KCksIG9yIC0xIGlmIGV4aXQo
KSB3YXNuJ3QgY2FsbGVkLgotCi0gIEFyZ3M6Ci0gICAgZXhpdF9jb2RlOiB0aGUgcmVzdWx0IHZh
bHVlIG9mIG9zLnN5c3RlbShjb21tYW5kKS4KLSAgIiIiCi0KLSAgaWYgb3MubmFtZSA9PSAnbnQn
OgotICAgICMgT24gV2luZG93cywgb3MuV0VYSVRTVEFUVVMoKSBkb2Vzbid0IHdvcmsgYW5kIG9z
LnN5c3RlbSgpIHJldHVybnMKLSAgICAjIHRoZSBhcmd1bWVudCB0byBleGl0KCkgZGlyZWN0bHku
Ci0gICAgcmV0dXJuIGV4aXRfY29kZQotICBlbHNlOgotICAgICMgT24gVW5peCwgb3MuV0VYSVRT
VEFUVVMoKSBtdXN0IGJlIHVzZWQgdG8gZXh0cmFjdCB0aGUgZXhpdCBzdGF0dXMKLSAgICAjIGZy
b20gdGhlIHJlc3VsdCBvZiBvcy5zeXN0ZW0oKS4KLSAgICBpZiBvcy5XSUZFWElURUQoZXhpdF9j
b2RlKToKLSAgICAgIHJldHVybiBvcy5XRVhJVFNUQVRVUyhleGl0X2NvZGUpCi0gICAgZWxzZToK
LSAgICAgIHJldHVybiAtMQotCi0KLSMgU3VwcHJlc3NlcyB0aGUgIkludmFsaWQgY29uc3QgbmFt
ZSIgbGludCBjb21wbGFpbnQKLSMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwOQotCi0jIEV4cG9z
ZXMgdXRpbGl0aWVzIGZyb20gZ3Rlc3RfdGVzdF91dGlscy4KLVN1YnByb2Nlc3MgPSBndGVzdF90
ZXN0X3V0aWxzLlN1YnByb2Nlc3MKLVRlc3RDYXNlID0gZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2Fz
ZQotZW52aXJvbiA9IGd0ZXN0X3Rlc3RfdXRpbHMuZW52aXJvbgotU2V0RW52VmFyID0gZ3Rlc3Rf
dGVzdF91dGlscy5TZXRFbnZWYXIKLVBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiA9IGd0ZXN0
X3Rlc3RfdXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSCi0KLSMgcHlsaW50OiBlbmFi
bGUtbXNnPUM2NDA5Ci0KLQotZGVmIE1haW4oKToKLSAgIiIiUnVucyB0aGUgdW5pdCB0ZXN0LiIi
IgotCi0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC8u
Z2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvLmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGI3YmU0YjkxYjcwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvLmdp
dGlnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyBweXRob24KLSoucHljCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9DSEFOR0VTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ0hBTkdFUwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU1MjEzMjQyMTJjLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvQ0hBTkdFUworKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBACi1D
aGFuZ2VzIGZvciAxLjcuMDoKLQotKiBOZXcgZmVhdHVyZTogZGVhdGggdGVzdHMgYXJlIHN1cHBv
cnRlZCBvbiBPcGVuQlNEIGFuZCBpbiBpT1MKLSAgc2ltdWxhdG9yIG5vdy4KLSogTmV3IGZlYXR1
cmU6IEdvb2dsZSBUZXN0IG5vdyBpbXBsZW1lbnRzIGEgcHJvdG9jb2wgdG8gYWxsb3cKLSAgYSB0
ZXN0IHJ1bm5lciB0byBkZXRlY3QgdGhhdCBhIHRlc3QgcHJvZ3JhbSBoYXMgZXhpdGVkCi0gIHBy
ZW1hdHVyZWx5IGFuZCByZXBvcnQgaXQgYXMgYSBmYWlsdXJlIChiZWZvcmUgaXQgd291bGQgYmUK
LSAgZmFsc2VseSByZXBvcnRlZCBhcyBhIHN1Y2Nlc3MgaWYgdGhlIGV4aXQgY29kZSBpcyAwKS4K
LSogTmV3IGZlYXR1cmU6IFRlc3Q6OlJlY29yZFByb3BlcnR5KCkgY2FuIG5vdyBiZSB1c2VkIG91
dHNpZGUgb2YgdGhlCi0gIGxpZmVzcGFuIG9mIGEgdGVzdCBtZXRob2QsIGluIHdoaWNoIGNhc2Ug
aXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvCi0gIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBvciB0aGUg
dGVzdCBwcm9ncmFtIGluIHRoZSBYTUwgcmVwb3J0LgotKiBOZXcgZmVhdHVyZSAocG90ZW50aWFs
bHkgYnJlYWtpbmcpOiAtLWd0ZXN0X2xpc3RfdGVzdHMgbm93IHByaW50cwotICB0aGUgdHlwZSBw
YXJhbWV0ZXJzIGFuZCB2YWx1ZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHRlc3QuCi0qIEltcHJvdmVt
ZW50OiBjaGFyIHBvaW50ZXJzIGFuZCBjaGFyIGFycmF5cyBhcmUgbm93IGVzY2FwZWQgcHJvcGVy
bHkKLSAgaW4gZmFpbHVyZSBtZXNzYWdlcy4KLSogSW1wcm92ZW1lbnQ6IGZhaWx1cmUgc3VtbWFy
eSBpbiBYTUwgcmVwb3J0cyBub3cgaW5jbHVkZXMgZmlsZSBhbmQKLSAgbGluZSBpbmZvcm1hdGlv
bi4KLSogSW1wcm92ZW1lbnQ6IHRoZSA8dGVzdHN1aXRlcz4gWE1MIGVsZW1lbnQgbm93IGhhcyBh
IHRpbWVzdGFtcCBhdHRyaWJ1dGUuCi0qIEltcHJvdmVtZW50OiBXaGVuIC0tZ3Rlc3RfZmlsdGVy
IGlzIHNwZWNpZmllZCwgWE1MIHJlcG9ydCBub3cgZG9lc24ndAotICBjb250YWluIGluZm9ybWF0
aW9uIGFib3V0IHRlc3RzIHRoYXQgYXJlIGZpbHRlcmVkIG91dC4KLSogRml4ZWQgdGhlIGJ1ZyB3
aGVyZSBsb25nIC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmFsdWVzIGFyZSB0cnVuY2F0ZWQgaW4KLSAg
ZGVhdGggdGVzdHMuCi0qIFBvdGVudGlhbGx5IGJyZWFraW5nIGNoYW5nZTogUlVOX0FMTF9URVNU
UygpIGlzIG5vdyBpbXBsZW1lbnRlZCBhcyBhCi0gIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBtYWNy
byBpbiBvcmRlciB0byB3b3JrIGJldHRlciB3aXRoIENsYW5nLgotKiBDb21wYXRpYmlsaXR5IGZp
eGVzIHdpdGggQysrIDExIGFuZCB2YXJpb3VzIHBsYXRmb3Jtcy4KLSogQnVnL3dhcm5pbmcgZml4
ZXMuCi0KLUNoYW5nZXMgZm9yIDEuNi4wOgotCi0qIE5ldyBmZWF0dXJlOiBBRERfRkFJTFVSRV9B
VCgpIGZvciByZXBvcnRpbmcgYSB0ZXN0IGZhaWx1cmUgYXQgdGhlCi0gIGdpdmVuIHNvdXJjZSBs
b2NhdGlvbiAtLSB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdGluZyB1dGlsaXRpZXMuCi0qIE5ldyBm
ZWF0dXJlOiB0aGUgdW5pdmVyc2FsIHZhbHVlIHByaW50ZXIgaXMgbW92ZWQgZnJvbSBHb29nbGUg
TW9jawotICB0byBHb29nbGUgVGVzdC4KLSogTmV3IGZlYXR1cmU6IHR5cGUgcGFyYW1ldGVycyBh
bmQgdmFsdWUgcGFyYW1ldGVycyBhcmUgcmVwb3J0ZWQgaW4KLSAgdGhlIFhNTCByZXBvcnQgbm93
LgotKiBBIGd0ZXN0X2Rpc2FibGVfcHRocmVhZHMgQ01ha2Ugb3B0aW9uLgotKiBDb2xvcmVkIG91
dHB1dCB3b3JrcyBpbiBHTlUgU2NyZWVuIHNlc3Npb25zIG5vdy4KLSogUGFyYW1ldGVycyBvZiB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBub3cgcHJpbnRlZCBpbiB0aGUKLSAgdGV4dHVh
bCBvdXRwdXQuCi0qIEZhaWx1cmVzIGZyb20gYWQgaG9jIHRlc3QgYXNzZXJ0aW9ucyBydW4gYmVm
b3JlIFJVTl9BTExfVEVTVFMoKSBhcmUKLSAgbm93IGNvcnJlY3RseSByZXBvcnRlZC4KLSogQXJn
dW1lbnRzIG9mIEFTU0VSVF9YWSBhbmQgRVhQRUNUX1hZIG5vIGxvbmdlciBuZWVkIHRvIHN1cHBv
cnQgPDwgdG8KLSAgb3N0cmVhbS4KLSogTW9yZSBjb21wbGV0ZSBoYW5kbGluZyBvZiBleGNlcHRp
b25zLgotKiBHVEVTVF9BU1NFUlRfWFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBBU1NFUlRfWFkg
aW4gY2FzZSB0aGUgbGF0dGVyCi0gIG5hbWUgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgbGli
cmFyeS4KLSogLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIGlzIG5vdyB0cnVlIGJ5IGRlZmF1bHQs
IGFsbG93aW5nIGEgdGVzdAotICBwcm9ncmFtIHRvIGNvbnRpbnVlIGFmdGVyIGFuIGV4Y2VwdGlv
biBpcyB0aHJvd24uCi0qIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlcyBjYW4gbm93
IGRlcml2ZSBmcm9tIFRlc3QgYW5kCi0gIFdpdGhQYXJhbUludGVyZmFjZTxUPiBzZXBhcmF0ZWx5
LCBlYXNpbmcgY29udmVyc2lvbiBvZiBsZWdhY3kgdGVzdHMuCi0qIERlYXRoIHRlc3QgbWVzc2Fn
ZXMgYXJlIGNsZWFybHkgbWFya2VkIHRvIG1ha2UgdGhlbSBtb3JlCi0gIGRpc3Rpbmd1aXNoYWJs
ZSBmcm9tIG90aGVyIG1lc3NhZ2VzLgotKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBBbmRyb2lk
LCBHb29nbGUgTmF0aXZlIENsaWVudCwgTWluR1csIEhQIFVYLAotICBQb3dlclBDLCBMdWNpZCBh
dXRvdG9vbHMsIGxpYkNTdGQsIFN1biBDKyssIEJvcmxhbmQgQysrIEJ1aWxkZXIgKENvZGUgR2Vh
ciksCi0gIElCTSBYTCBDKysgKFZpc3VhbCBBZ2UgQysrKSwgYW5kIEMrKzB4LgotKiBCdWcgZml4
ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLSogUG90ZW50aWFsbHkgaW5jb21wYXRp
YmxlIGNoYW5nZXM6IGRpc2FibGVzIHRoZSBoYXJtZnVsICdtYWtlIGluc3RhbGwnCi0gIGNvbW1h
bmQgaW4gYXV0b3Rvb2xzLgotCi1DaGFuZ2VzIGZvciAxLjUuMDoKLQotICogTmV3IGZlYXR1cmU6
IGFzc2VydGlvbnMgY2FuIGJlIHNhZmVseSBjYWxsZWQgaW4gbXVsdGlwbGUgdGhyZWFkcwotICAg
d2hlcmUgdGhlIHB0aHJlYWRzIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgotICogTmV3IGZlYXR1cmU6
IHByZWRpY2F0ZXMgdXNlZCBpbnNpZGUgRVhQRUNUX1RSVUUoKSBhbmQgZnJpZW5kcwotICAgY2Fu
IG5vdyBnZW5lcmF0ZSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlcy4KLSAqIE5ldyBmZWF0dXJlOiBH
b29nbGUgVGVzdCBjYW4gbm93IGJlIGNvbXBpbGVkIGFzIGEgRExMLgotICogTmV3IGZlYXR1cmU6
IGZ1c2VkIHNvdXJjZSBmaWxlcyBhcmUgaW5jbHVkZWQuCi0gKiBOZXcgZmVhdHVyZTogcHJpbnRz
IGhlbHAgd2hlbiBlbmNvdW50ZXJpbmcgdW5yZWNvZ25pemVkIEdvb2dsZSBUZXN0IGZsYWdzLgot
ICogRXhwZXJpbWVudGFsIGZlYXR1cmU6IENNYWtlIGJ1aWxkIHNjcmlwdCAocmVxdWlyZXMgQ01h
a2UgMi42LjQrKS4KLSAqIEV4cGVyaW1lbnRhbCBmZWF0dXJlOiB0aGUgUHVtcCBzY3JpcHQgZm9y
IG1ldGEgcHJvZ3JhbW1pbmcuCi0gKiBkb3VibGUgdmFsdWVzIHN0cmVhbWVkIHRvIGFuIGFzc2Vy
dGlvbiBhcmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24KLSAgIHRvIGRpZmZlcmVudGlh
dGUgYW55IHR3byBkaWZmZXJlbnQgdmFsdWVzLgotICogR29vZ2xlIFRlc3Qgbm93IHdvcmtzIG9u
IFNvbGFyaXMgYW5kIEFJWC4KLSAqIEJ1aWxkIGFuZCB0ZXN0IHNjcmlwdCBpbXByb3ZlbWVudHMu
Ci0gKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLQotIFBvdGVudGlh
bGx5IGJyZWFraW5nIGNoYW5nZXM6Ci0KLSAqIFN0b3BwZWQgc3VwcG9ydGluZyBWQysrIDcuMSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi0gKiBEcm9wcGVkIHN1cHBvcnQgZm9yICdtYWtlIGlu
c3RhbGwnLgotCi1DaGFuZ2VzIGZvciAxLjQuMDoKLQotICogTmV3IGZlYXR1cmU6IHRoZSBldmVu
dCBsaXN0ZW5lciBBUEkKLSAqIE5ldyBmZWF0dXJlOiB0ZXN0IHNodWZmbGluZwotICogTmV3IGZl
YXR1cmU6IHRoZSBYTUwgcmVwb3J0IGZvcm1hdCBpcyBjbG9zZXIgdG8ganVuaXRyZXBvcnQgYW5k
IGNhbgotICAgYmUgcGFyc2VkIGJ5IEh1ZHNvbiBub3cuCi0gKiBOZXcgZmVhdHVyZTogd2hlbiBh
IHRlc3QgcnVucyB1bmRlciBWaXN1YWwgU3R1ZGlvLCBpdHMgZmFpbHVyZXMgYXJlCi0gICBpbnRl
Z3JhdGVkIGluIHRoZSBJREUuCi0gKiBOZXcgZmVhdHVyZTogL01EKGQpIHZlcnNpb25zIG9mIFZD
KysgcHJvamVjdHMuCi0gKiBOZXcgZmVhdHVyZTogZWxhcHNlZCB0aW1lIGZvciB0aGUgdGVzdHMg
aXMgcHJpbnRlZCBieSBkZWZhdWx0LgotICogTmV3IGZlYXR1cmU6IGNvbWVzIHdpdGggYSBUUjEg
dHVwbGUgaW1wbGVtZW50YXRpb24gc3VjaCB0aGF0IEJvb3N0Ci0gICBpcyBubyBsb25nZXIgbmVl
ZGVkIGZvciBDb21iaW5lKCkuCi0gKiBOZXcgZmVhdHVyZTogRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRCBtYWNybyBhbmQgZnJpZW5kcy4KLSAqIE5ldyBmZWF0dXJlOiB0aGUgWGNvZGUgcHJvamVj
dCBjYW4gbm93IHByb2R1Y2Ugc3RhdGljIGd0ZXN0Ci0gICBsaWJyYXJpZXMgaW4gYWRkaXRpb24g
dG8gYSBmcmFtZXdvcmsuCi0gKiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBTb2xhcmlzLCBDeWd3
aW4sIG1pbkdXLCBXaW5kb3dzIE1vYmlsZSwKLSAgIFN5bWJpYW4sIGdjYywgYW5kIEMrK0J1aWxk
ZXIuCi0gKiBCdWcgZml4ZXMgYW5kIGltcGxlbWVudGF0aW9uIGNsZWFuLXVwcy4KLQotQ2hhbmdl
cyBmb3IgMS4zLjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiBkZWF0aCB0ZXN0cyBvbiBXaW5kb3dzLCBD
eWd3aW4sIGFuZCBNYWMuCi0gKiBOZXcgZmVhdHVyZTogYWJpbGl0eSB0byB1c2UgR29vZ2xlIFRl
c3QgYXNzZXJ0aW9ucyBpbiBvdGhlciB0ZXN0aW5nCi0gICBmcmFtZXdvcmtzLgotICogTmV3IGZl
YXR1cmU6IGFiaWxpdHkgdG8gcnVuIGRpc2FibGVkIHRlc3QgdmlhCi0gICAtLWd0ZXN0X2Fsc29f
cnVuX2Rpc2FibGVkX3Rlc3RzLgotICogTmV3IGZlYXR1cmU6IHRoZSAtLWhlbHAgZmxhZyBmb3Ig
cHJpbnRpbmcgdGhlIHVzYWdlLgotICogTmV3IGZlYXR1cmU6IGFjY2VzcyB0byBHb29nbGUgVGVz
dCBmbGFnIHZhbHVlcyBpbiB1c2VyIGNvZGUuCi0gKiBOZXcgZmVhdHVyZTogYSBzY3JpcHQgdGhh
dCBwYWNrcyBHb29nbGUgVGVzdCBpbnRvIG9uZSAuaCBhbmQgb25lCi0gICAuY2MgZmlsZSBmb3Ig
ZWFzeSBkZXBsb3ltZW50LgotICogTmV3IGZlYXR1cmU6IHN1cHBvcnQgZm9yIGRpc3RyaWJ1dGlu
ZyB0ZXN0IGZ1bmN0aW9ucyB0byBtdWx0aXBsZQotICAgbWFjaGluZXMgKHJlcXVpcmVzIHN1cHBv
cnQgZnJvbSB0aGUgdGVzdCBydW5uZXIpLgotICogQnVnIGZpeGVzIGFuZCBpbXBsZW1lbnRhdGlv
biBjbGVhbi11cHMuCi0KLUNoYW5nZXMgZm9yIDEuMi4xOgotCi0gKiBDb21wYXRpYmlsaXR5IGZp
eGVzIGZvciBMaW51eCBJQS02NCBhbmQgSUJNIHovT1MuCi0gKiBBZGRlZCBzdXBwb3J0IGZvciB1
c2luZyBCb29zdCBhbmQgb3RoZXIgVFIxIGltcGxlbWVudGF0aW9ucy4KLSAqIENoYW5nZXMgdG8g
dGhlIGJ1aWxkIHNjcmlwdHMgdG8gc3VwcG9ydCB1cGNvbWluZyByZWxlYXNlIG9mIEdvb2dsZSBD
KysKLSAgIE1vY2tpbmcgRnJhbWV3b3JrLgotICogQWRkZWQgTWFrZWZpbGUgdG8gdGhlIGRpc3Ry
aWJ1dGlvbiBwYWNrYWdlLgotICogSW1wcm92ZWQgYnVpbGQgaW5zdHJ1Y3Rpb25zIGluIFJFQURN
RS4KLQotQ2hhbmdlcyBmb3IgMS4yLjA6Ci0KLSAqIE5ldyBmZWF0dXJlOiB2YWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzLgotICogTmV3IGZlYXR1cmU6IHRoZSBBU1NFUlQvRVhQRUNUXyhOT04pRkFU
QUxfRkFJTFVSRShfT05fQUxMX1RIUkVBRFMpCi0gICBtYWNyb3MuCi0gKiBDaGFuZ2VkIHRoZSBY
TUwgcmVwb3J0IGZvcm1hdCB0byBtYXRjaCBKVW5pdC9BbnQncy4KLSAqIEFkZGVkIHRlc3RzIHRv
IHRoZSBYY29kZSBwcm9qZWN0LgotICogQWRkZWQgc2NvbnMvU0NvbnNjcmlwdCBmb3IgYnVpbGRp
bmcgd2l0aCBTQ29ucy4KLSAqIEFkZGVkIHNyYy9ndGVzdC1hbGwuY2MgZm9yIGJ1aWxkaW5nIEdv
b2dsZSBUZXN0IGZyb20gYSBzaW5nbGUgZmlsZS4KLSAqIEZpeGVkIGNvbXBhdGliaWxpdHkgd2l0
aCBTb2xhcmlzIGFuZCB6L09TLgotICogRW5hYmxlZCBydW5uaW5nIFB5dGhvbiB0ZXN0cyBvbiBz
eXN0ZW1zIHdpdGggcHl0aG9uIDIuMyBpbnN0YWxsZWQsCi0gICBlLmcuIE1hYyBPUyBYIDEwLjQu
Ci0gKiBCdWcgZml4ZXMuCi0KLUNoYW5nZXMgZm9yIDEuMS4wOgotCi0gKiBOZXcgZmVhdHVyZTog
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotICogTmV3IGZlYXR1cmU6IGV4Y2VwdGlvbiBhc3Nl
cnRpb25zLgotICogTmV3IGZlYXR1cmU6IHByaW50aW5nIGVsYXBzZWQgdGltZSBvZiB0ZXN0cy4K
LSAqIEltcHJvdmVkIHRoZSByb2J1c3RuZXNzIG9mIGRlYXRoIHRlc3RzLgotICogQWRkZWQgYW4g
WGNvZGUgcHJvamVjdCBhbmQgc2FtcGxlcy4KLSAqIEFkanVzdGVkIHRoZSBvdXRwdXQgZm9ybWF0
IG9uIFdpbmRvd3MgdG8gYmUgdW5kZXJzdGFuZGFibGUgYnkgVmlzdWFsIFN0dWRpby4KLSAqIE1p
bm9yIGJ1ZyBmaXhlcy4KLQotQ2hhbmdlcyBmb3IgMS4wLjE6Ci0KLSAqIEFkZGVkIHByb2plY3Qg
ZmlsZXMgZm9yIFZpc3VhbCBTdHVkaW8gNy4xLgotICogRml4ZWQgaXNzdWVzIHdpdGggY29tcGls
aW5nIG9uIE1hYyBPUyBYLgotICogRml4ZWQgaXNzdWVzIHdpdGggY29tcGlsaW5nIG9uIEN5Z3dp
bi4KLQotQ2hhbmdlcyBmb3IgMS4wLjA6Ci0KLSAqIEluaXRpYWwgT3BlbiBTb3VyY2UgcmVsZWFz
ZSBvZiBHb29nbGUgVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzZkMGE5ZWNjMjk4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ01ha2VMaXN0
cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0j
IENNYWtlIGJ1aWxkIHNjcmlwdCBmb3IgR29vZ2xlIFRlc3QuCi0jCi0jIFRvIHJ1biB0aGUgdGVz
dHMgZm9yIEdvb2dsZSBUZXN0IGl0c2VsZiBvbiBMaW51eCwgdXNlICdtYWtlIHRlc3QnIG9yCi0j
IGN0ZXN0LiAgWW91IGNhbiBzZWxlY3Qgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5nICdjdGVzdCAt
UiByZWdleCcuCi0jIEZvciBtb3JlIG9wdGlvbnMsIHJ1biAnY3Rlc3QgLS1oZWxwJy4KLQotIyBC
VUlMRF9TSEFSRURfTElCUyBpcyBhIHN0YW5kYXJkIENNYWtlIHZhcmlhYmxlLCBidXQgd2UgZGVj
bGFyZSBpdCBoZXJlIHRvCi0jIG1ha2UgaXQgcHJvbWluZW50IGluIHRoZSBHVUkuCi1vcHRpb24o
QlVJTERfU0hBUkVEX0xJQlMgIkJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgKERMTHMpLiIgT0ZGKQot
Ci0jIFdoZW4gb3RoZXIgbGlicmFyaWVzIGFyZSB1c2luZyBhIHNoYXJlZCB2ZXJzaW9uIG9mIHJ1
bnRpbWUgbGlicmFyaWVzLAotIyBHb29nbGUgVGVzdCBhbHNvIGhhcyB0byB1c2Ugb25lLgotb3B0
aW9uKAotICBndGVzdF9mb3JjZV9zaGFyZWRfY3J0Ci0gICJVc2Ugc2hhcmVkIChETEwpIHJ1bi10
aW1lIGxpYiBldmVuIHdoZW4gR29vZ2xlIFRlc3QgaXMgYnVpbHQgYXMgc3RhdGljIGxpYi4iCi0g
IE9GRikKLQotb3B0aW9uKGd0ZXN0X2J1aWxkX3Rlc3RzICJCdWlsZCBhbGwgb2YgZ3Rlc3QncyBv
d24gdGVzdHMuIiBPRkYpCi0KLW9wdGlvbihndGVzdF9idWlsZF9zYW1wbGVzICJCdWlsZCBndGVz
dCdzIHNhbXBsZSBwcm9ncmFtcy4iIE9GRikKLQotb3B0aW9uKGd0ZXN0X2Rpc2FibGVfcHRocmVh
ZHMgIkRpc2FibGUgdXNlcyBvZiBwdGhyZWFkcyBpbiBndGVzdC4iIE9GRikKLQotb3B0aW9uKAot
ICBndGVzdF9oaWRlX2ludGVybmFsX3N5bWJvbHMKLSAgIkJ1aWxkIGd0ZXN0IHdpdGggaW50ZXJu
YWwgc3ltYm9scyBoaWRkZW4gaW4gc2hhcmVkIGxpYnJhcmllcy4iCi0gIE9GRikKLQotIyBEZWZp
bmVzIHByZV9wcm9qZWN0X3NldF91cF9oZXJtZXRpY19idWlsZCgpIGFuZCBzZXRfdXBfaGVybWV0
aWNfYnVpbGQoKS4KLWluY2x1ZGUoY21ha2UvaGVybWV0aWNfYnVpbGQuY21ha2UgT1BUSU9OQUwp
Ci0KLWlmIChDT01NQU5EIHByZV9wcm9qZWN0X3NldF91cF9oZXJtZXRpY19idWlsZCkKLSAgcHJl
X3Byb2plY3Rfc2V0X3VwX2hlcm1ldGljX2J1aWxkKCkKLWVuZGlmKCkKLQotIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCi0jCi0jIFByb2plY3Qtd2lkZSBzZXR0aW5ncwotCi0jIE5hbWUgb2YgdGhlIHByb2plY3Qu
Ci0jCi0jIENNYWtlIGZpbGVzIGluIHRoaXMgcHJvamVjdCBjYW4gcmVmZXIgdG8gdGhlIHJvb3Qg
c291cmNlIGRpcmVjdG9yeQotIyBhcyAke2d0ZXN0X1NPVVJDRV9ESVJ9IGFuZCB0byB0aGUgcm9v
dCBiaW5hcnkgZGlyZWN0b3J5IGFzCi0jICR7Z3Rlc3RfQklOQVJZX0RJUn0uCi0jIExhbmd1YWdl
ICJDIiBpcyByZXF1aXJlZCBmb3IgZmluZF9wYWNrYWdlKFRocmVhZHMpLgotcHJvamVjdChndGVz
dCBDWFggQykKLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjYuNCkKLQotaWYgKENP
TU1BTkQgc2V0X3VwX2hlcm1ldGljX2J1aWxkKQotICBzZXRfdXBfaGVybWV0aWNfYnVpbGQoKQot
ZW5kaWYoKQotCi1pZiAoZ3Rlc3RfaGlkZV9pbnRlcm5hbF9zeW1ib2xzKQotICBzZXQoQ01BS0Vf
Q1hYX1ZJU0lCSUxJVFlfUFJFU0VUIGhpZGRlbikKLSAgc2V0KENNQUtFX1ZJU0lCSUxJVFlfSU5M
SU5FU19ISURERU4gMSkKLWVuZGlmKCkKLQotIyBEZWZpbmUgaGVscGVyIGZ1bmN0aW9ucyBhbmQg
bWFjcm9zIHVzZWQgYnkgR29vZ2xlIFRlc3QuCi1pbmNsdWRlKGNtYWtlL2ludGVybmFsX3V0aWxz
LmNtYWtlKQotCi1jb25maWdfY29tcGlsZXJfYW5kX2xpbmtlcigpICAjIERlZmluZWQgaW4gaW50
ZXJuYWxfdXRpbHMuY21ha2UuCi0KLSMgV2hlcmUgR29vZ2xlIFRlc3QncyAuaCBmaWxlcyBjYW4g
YmUgZm91bmQuCi1pbmNsdWRlX2RpcmVjdG9yaWVzKAotICAke2d0ZXN0X1NPVVJDRV9ESVJ9L2lu
Y2x1ZGUKLSAgJHtndGVzdF9TT1VSQ0VfRElSfSkKLQotIyBXaGVyZSBHb29nbGUgVGVzdCdzIGxp
YnJhcmllcyBjYW4gYmUgZm91bmQuCi1saW5rX2RpcmVjdG9yaWVzKCR7Z3Rlc3RfQklOQVJZX0RJ
Un0vc3JjKQotCi0jIFN1bW1hcnkgb2YgdHVwbGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0IFZpc3Vh
bCBTdHVkaW86Ci0jIENvbXBpbGVyICAgIHZlcnNpb24oTVMpICB2ZXJzaW9uKGNtYWtlKSAgU3Vw
cG9ydAotIyAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIDw9IFZTIDIwMTAgIDw9IDEwICAgICAgICA8PSAxNjAw
ICAgICAgICAgVXNlIEdvb2dsZSBUZXN0cydzIG93biB0dXBsZS4KLSMgVlMgMjAxMiAgICAgMTEg
ICAgICAgICAgIDE3MDAgICAgICAgICAgICBzdGQ6OnRyMTo6dHVwbGUgKyBfVkFSSUFESUNfTUFY
PTEwCi0jIFZTIDIwMTMgICAgIDEyICAgICAgICAgICAxODAwICAgICAgICAgICAgc3RkOjp0cjE6
OnR1cGxlCi1pZiAoTVNWQyBBTkQgTVNWQ19WRVJTSU9OIEVRVUFMIDE3MDApCi0gIGFkZF9kZWZp
bml0aW9ucygvRCBfVkFSSUFESUNfTUFYPTEwKQotZW5kaWYoKQotCi0jIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
LSMKLSMgRGVmaW5lcyB0aGUgZ3Rlc3QgJiBndGVzdF9tYWluIGxpYnJhcmllcy4gIFVzZXIgdGVz
dHMgc2hvdWxkIGxpbmsKLSMgd2l0aCBvbmUgb2YgdGhlbS4KLQotIyBHb29nbGUgVGVzdCBsaWJy
YXJpZXMuICBXZSBidWlsZCB0aGVtIHVzaW5nIG1vcmUgc3RyaWN0IHdhcm5pbmdzIHRoYW4gd2hh
dAotIyBhcmUgdXNlZCBmb3Igb3RoZXIgdGFyZ2V0cywgdG8gZW5zdXJlIHRoYXQgZ3Rlc3QgY2Fu
IGJlIGNvbXBpbGVkIGJ5IGEgdXNlcgotIyBhZ2dyZXNzaXZlIGFib3V0IHdhcm5pbmdzLgotY3h4
X2xpYnJhcnkoZ3Rlc3QgIiR7Y3h4X3N0cmljdH0iIHNyYy9ndGVzdC1hbGwuY2MpCi1jeHhfbGli
cmFyeShndGVzdF9tYWluICIke2N4eF9zdHJpY3R9IiBzcmMvZ3Rlc3RfbWFpbi5jYykKLXRhcmdl
dF9saW5rX2xpYnJhcmllcyhndGVzdF9tYWluIGd0ZXN0KQotCi0jIElmIHRoZSBDTWFrZSB2ZXJz
aW9uIHN1cHBvcnRzIGl0LCBhdHRhY2ggaGVhZGVyIGRpcmVjdG9yeSBpbmZvcm1hdGlvbgotIyB0
byB0aGUgdGFyZ2V0cyBmb3Igd2hlbiB3ZSBhcmUgcGFydCBvZiBhIHBhcmVudCBidWlsZCAoaWUg
YmVpbmcgcHVsbGVkCi0jIGluIHZpYSBhZGRfc3ViZGlyZWN0b3J5KCkgcmF0aGVyIHRoYW4gYmVp
bmcgYSBzdGFuZGFsb25lIGJ1aWxkKS4KLWlmIChERUZJTkVEIENNQUtFX1ZFUlNJT04gQU5EIE5P
VCAiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICIyLjguMTEiKQotICB0YXJnZXRfaW5j
bHVkZV9kaXJlY3RvcmllcyhndGVzdCAgICAgIElOVEVSRkFDRSAiJHtndGVzdF9TT1VSQ0VfRElS
fS9pbmNsdWRlIikKLSAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3Rlc3RfbWFpbiBJTlRF
UkZBQ0UgIiR7Z3Rlc3RfU09VUkNFX0RJUn0vaW5jbHVkZSIpCi1lbmRpZigpCi0KLSMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwotIwotIyBJbnN0YWxsIHJ1bGVzCi1pbnN0YWxsKFRBUkdFVFMgZ3Rlc3QgZ3Rlc3Rf
bWFpbgotICBERVNUSU5BVElPTiBsaWIpCi1pbnN0YWxsKERJUkVDVE9SWSAke2d0ZXN0X1NPVVJD
RV9ESVJ9L2luY2x1ZGUvZ3Rlc3QKLSAgREVTVElOQVRJT04gaW5jbHVkZSkKLQotIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCi0jCi0jIFNhbXBsZXMgb24gaG93IHRvIGxpbmsgdXNlciB0ZXN0cyB3aXRoIGd0ZXN0
IG9yIGd0ZXN0X21haW4uCi0jCi0jIFRoZXkgYXJlIG5vdCBidWlsdCBieSBkZWZhdWx0LiAgVG8g
YnVpbGQgdGhlbSwgc2V0IHRoZQotIyBndGVzdF9idWlsZF9zYW1wbGVzIG9wdGlvbiB0byBPTi4g
IFlvdSBjYW4gZG8gaXQgYnkgcnVubmluZyBjY21ha2UKLSMgb3Igc3BlY2lmeWluZyB0aGUgLURn
dGVzdF9idWlsZF9zYW1wbGVzPU9OIGZsYWcgd2hlbiBydW5uaW5nIGNtYWtlLgotCi1pZiAoZ3Rl
c3RfYnVpbGRfc2FtcGxlcykKLSAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlMV91bml0dGVzdCBzYW1w
bGVzIGd0ZXN0X21haW4gc2FtcGxlcy9zYW1wbGUxLmNjKQotICBjeHhfZXhlY3V0YWJsZShzYW1w
bGUyX3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3RfbWFpbiBzYW1wbGVzL3NhbXBsZTIuY2MpCi0gIGN4
eF9leGVjdXRhYmxlKHNhbXBsZTNfdW5pdHRlc3Qgc2FtcGxlcyBndGVzdF9tYWluKQotICBjeHhf
ZXhlY3V0YWJsZShzYW1wbGU0X3VuaXR0ZXN0IHNhbXBsZXMgZ3Rlc3RfbWFpbiBzYW1wbGVzL3Nh
bXBsZTQuY2MpCi0gIGN4eF9leGVjdXRhYmxlKHNhbXBsZTVfdW5pdHRlc3Qgc2FtcGxlcyBndGVz
dF9tYWluIHNhbXBsZXMvc2FtcGxlMS5jYykKLSAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlNl91bml0
dGVzdCBzYW1wbGVzIGd0ZXN0X21haW4pCi0gIGN4eF9leGVjdXRhYmxlKHNhbXBsZTdfdW5pdHRl
c3Qgc2FtcGxlcyBndGVzdF9tYWluKQotICBjeHhfZXhlY3V0YWJsZShzYW1wbGU4X3VuaXR0ZXN0
IHNhbXBsZXMgZ3Rlc3RfbWFpbikKLSAgY3h4X2V4ZWN1dGFibGUoc2FtcGxlOV91bml0dGVzdCBz
YW1wbGVzIGd0ZXN0KQotICBjeHhfZXhlY3V0YWJsZShzYW1wbGUxMF91bml0dGVzdCBzYW1wbGVz
IGd0ZXN0KQotZW5kaWYoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgR29vZ2xlIFRlc3QncyBv
d24gdGVzdHMuCi0jCi0jIFlvdSBjYW4gc2tpcCB0aGlzIHNlY3Rpb24gaWYgeW91IGFyZW4ndCBp
bnRlcmVzdGVkIGluIHRlc3RpbmcKLSMgR29vZ2xlIFRlc3QgaXRzZWxmLgotIwotIyBUaGUgdGVz
dHMgYXJlIG5vdCBidWlsdCBieSBkZWZhdWx0LiAgVG8gYnVpbGQgdGhlbSwgc2V0IHRoZQotIyBn
dGVzdF9idWlsZF90ZXN0cyBvcHRpb24gdG8gT04uICBZb3UgY2FuIGRvIGl0IGJ5IHJ1bm5pbmcg
Y2NtYWtlCi0jIG9yIHNwZWNpZnlpbmcgdGhlIC1EZ3Rlc3RfYnVpbGRfdGVzdHM9T04gZmxhZyB3
aGVuIHJ1bm5pbmcgY21ha2UuCi0KLWlmIChndGVzdF9idWlsZF90ZXN0cykKLSAgIyBUaGlzIG11
c3QgYmUgc2V0IGluIHRoZSByb290IGRpcmVjdG9yeSBmb3IgdGhlIHRlc3RzIHRvIGJlIHJ1biBi
eQotICAjICdtYWtlIHRlc3QnIG9yIGN0ZXN0LgotICBlbmFibGVfdGVzdGluZygpCi0KLSAgIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Ci0gICMgQysrIHRlc3RzIGJ1aWx0IHdpdGggc3RhbmRhcmQgY29tcGlsZXIgZmxhZ3MuCi0KLSAg
Y3h4X3Rlc3QoZ3Rlc3QtZGVhdGgtdGVzdF90ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90ZXN0KGd0
ZXN0X2Vudmlyb25tZW50X3Rlc3QgZ3Rlc3QpCi0gIGN4eF90ZXN0KGd0ZXN0LWZpbGVwYXRoX3Rl
c3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3QoZ3Rlc3QtbGlua2VkX3B0cl90ZXN0IGd0ZXN0X21h
aW4pCi0gIGN4eF90ZXN0KGd0ZXN0LWxpc3RlbmVyX3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rl
c3QoZ3Rlc3RfbWFpbl91bml0dGVzdCBndGVzdF9tYWluKQotICBjeHhfdGVzdChndGVzdC1tZXNz
YWdlX3Rlc3QgZ3Rlc3RfbWFpbikKLSAgY3h4X3Rlc3QoZ3Rlc3Rfbm9fdGVzdF91bml0dGVzdCBn
dGVzdCkKLSAgY3h4X3Rlc3QoZ3Rlc3Qtb3B0aW9uc190ZXN0IGd0ZXN0X21haW4pCi0gIGN4eF90
ZXN0KGd0ZXN0LXBhcmFtLXRlc3RfdGVzdCBndGVzdAotICAgIHRlc3QvZ3Rlc3QtcGFyYW0tdGVz
dDJfdGVzdC5jYykKLSAgY3h4X3Rlc3QoZ3Rlc3QtcG9ydF90ZXN0IGd0ZXN0X21haW4pCi0gIGN4
eF90ZXN0KGd0ZXN0X3ByZWRfaW1wbF91bml0dGVzdCBndGVzdF9tYWluKQotICBjeHhfdGVzdChn
dGVzdF9wcmVtYXR1cmVfZXhpdF90ZXN0IGd0ZXN0Ci0gICAgdGVzdC9ndGVzdF9wcmVtYXR1cmVf
ZXhpdF90ZXN0LmNjKQotICBjeHhfdGVzdChndGVzdC1wcmludGVyc190ZXN0IGd0ZXN0X21haW4p
Ci0gIGN4eF90ZXN0KGd0ZXN0X3Byb2RfdGVzdCBndGVzdF9tYWluCi0gICAgdGVzdC9wcm9kdWN0
aW9uLmNjKQotICBjeHhfdGVzdChndGVzdF9yZXBlYXRfdGVzdCBndGVzdCkKLSAgY3h4X3Rlc3Qo
Z3Rlc3Rfc29sZV9oZWFkZXJfdGVzdCBndGVzdF9tYWluKQotICBjeHhfdGVzdChndGVzdF9zdHJl
c3NfdGVzdCBndGVzdCkKLSAgY3h4X3Rlc3QoZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QgZ3Rlc3RfbWFp
bikKLSAgY3h4X3Rlc3QoZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV9leF90ZXN0IGd0ZXN0KQotICBj
eHhfdGVzdChndGVzdC10eXBlZC10ZXN0X3Rlc3QgZ3Rlc3RfbWFpbgotICAgIHRlc3QvZ3Rlc3Qt
dHlwZWQtdGVzdDJfdGVzdC5jYykKLSAgY3h4X3Rlc3QoZ3Rlc3RfdW5pdHRlc3QgZ3Rlc3RfbWFp
bikKLSAgY3h4X3Rlc3QoZ3Rlc3QtdW5pdHRlc3QtYXBpX3Rlc3QgZ3Rlc3QpCi0KLSAgIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0g
ICMgQysrIHRlc3RzIGJ1aWx0IHdpdGggbm9uLXN0YW5kYXJkIGNvbXBpbGVyIGZsYWdzLgotCi0g
ICMgTVNWQyA3LjEgZG9lcyBub3Qgc3VwcG9ydCBTVEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVk
LgotICBpZiAoTk9UIE1TVkMgT1IgTVNWQ19WRVJTSU9OIEdSRUFURVIgMTMxMCkKLSAgICBjeHhf
bGlicmFyeShndGVzdF9ub19leGNlcHRpb24gIiR7Y3h4X25vX2V4Y2VwdGlvbn0iCi0gICAgICBz
cmMvZ3Rlc3QtYWxsLmNjKQotICAgIGN4eF9saWJyYXJ5KGd0ZXN0X21haW5fbm9fZXhjZXB0aW9u
ICIke2N4eF9ub19leGNlcHRpb259IgotICAgICAgc3JjL2d0ZXN0LWFsbC5jYyBzcmMvZ3Rlc3Rf
bWFpbi5jYykKLSAgZW5kaWYoKQotICBjeHhfbGlicmFyeShndGVzdF9tYWluX25vX3J0dGkgIiR7
Y3h4X25vX3J0dGl9IgotICAgIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0X21haW4uY2MpCi0K
LSAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhndGVzdC1kZWF0aC10ZXN0X2V4X25vY2F0Y2hfdGVzdAot
ICAgICIke2N4eF9leGNlcHRpb259IC1ER1RFU1RfRU5BQkxFX0NBVENIX0VYQ0VQVElPTlNfPTAi
Ci0gICAgZ3Rlc3QgdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MpCi0gIGN4eF90ZXN0
X3dpdGhfZmxhZ3MoZ3Rlc3QtZGVhdGgtdGVzdF9leF9jYXRjaF90ZXN0Ci0gICAgIiR7Y3h4X2V4
Y2VwdGlvbn0gLURHVEVTVF9FTkFCTEVfQ0FUQ0hfRVhDRVBUSU9OU189MSIKLSAgICBndGVzdCB0
ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYykKLQotICBjeHhfdGVzdF93aXRoX2ZsYWdz
KGd0ZXN0X25vX3J0dGlfdW5pdHRlc3QgIiR7Y3h4X25vX3J0dGl9IgotICAgIGd0ZXN0X21haW5f
bm9fcnR0aSB0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjKQotCi0gIGN4eF9zaGFyZWRfbGlicmFyeShn
dGVzdF9kbGwgIiR7Y3h4X2RlZmF1bHR9IgotICAgIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0
X21haW4uY2MpCi0KLSAgY3h4X2V4ZWN1dGFibGVfd2l0aF9mbGFncyhndGVzdF9kbGxfdGVzdF8g
IiR7Y3h4X2RlZmF1bHR9IgotICAgIGd0ZXN0X2RsbCB0ZXN0L2d0ZXN0X2FsbF90ZXN0LmNjKQot
ICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZ3Rlc3RfZGxsX3Rlc3RfCi0gICAgICAgICAgICAgICAg
ICAgICAgICBQUk9QRVJUSUVTCi0gICAgICAgICAgICAgICAgICAgICAgICBDT01QSUxFX0RFRklO
SVRJT05TICJHVEVTVF9MSU5LRURfQVNfU0hBUkVEX0xJQlJBUlk9MSIpCi0KLSAgaWYgKE5PVCBN
U1ZDIE9SIE1TVkNfVkVSU0lPTiBMRVNTIDE2MDApICAjIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAy
MDEwLgotICAgICMgVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3lt
Ym9scyBpbiBzdGQ6OnRyMSB0aGF0Ci0gICAgIyBjb25mbGljdCB3aXRoIG91ciBvd24gZGVmaW5p
dGlvbnMuIFRoZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90Ci0gICAgIyB3b3Jr
IG9uIHRob3NlIGNvbXBpbGVycy4KLSAgICBjeHhfbGlicmFyeShndGVzdF9tYWluX3VzZV9vd25f
dHVwbGUgIiR7Y3h4X3VzZV9vd25fdHVwbGV9IgotICAgICAgc3JjL2d0ZXN0LWFsbC5jYyBzcmMv
Z3Rlc3RfbWFpbi5jYykKLQotICAgIGN4eF90ZXN0X3dpdGhfZmxhZ3MoZ3Rlc3QtdHVwbGVfdGVz
dCAiJHtjeHhfdXNlX293bl90dXBsZX0iCi0gICAgICBndGVzdF9tYWluX3VzZV9vd25fdHVwbGUg
dGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjKQotCi0gICAgY3h4X3Rlc3Rfd2l0aF9mbGFncyhndGVz
dF91c2Vfb3duX3R1cGxlX3Rlc3QgIiR7Y3h4X3VzZV9vd25fdHVwbGV9IgotICAgICAgZ3Rlc3Rf
bWFpbl91c2Vfb3duX3R1cGxlCi0gICAgICB0ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3QyX3Rlc3QuY2MpCi0gIGVuZGlmKCkKLQotICAjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgIyBQ
eXRob24gdGVzdHMuCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91
bml0dGVzdF8gdGVzdCBndGVzdCkKLSAgcHlfdGVzdChndGVzdF9icmVha19vbl9mYWlsdXJlX3Vu
aXR0ZXN0KQotCi0gICMgVmlzdWFsIFN0dWRpbyAuTkVUIDIwMDMgZG9lcyBub3Qgc3VwcG9ydCBT
VEwgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgotICBpZiAoTk9UIE1TVkMgT1IgTVNWQ19WRVJT
SU9OIEdSRUFURVIgMTMxMCkgICMgMTMxMCBpcyBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMwotICAg
IGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3MoCi0gICAgICBndGVzdF9jYXRjaF9leGNlcHRpb25z
X25vX2V4X3Rlc3RfCi0gICAgICAiJHtjeHhfbm9fZXhjZXB0aW9ufSIKLSAgICAgIGd0ZXN0X21h
aW5fbm9fZXhjZXB0aW9uCi0gICAgICB0ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdF8u
Y2MpCi0gIGVuZGlmKCkKLQotICBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKAotICAgIGd0ZXN0
X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8KLSAgICAiJHtjeHhfZXhjZXB0aW9ufSIKLSAgICBn
dGVzdF9tYWluCi0gICAgdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3RfLmNjKQotICBw
eV90ZXN0KGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdCkKLQotICBjeHhfZXhlY3V0YWJsZShn
dGVzdF9jb2xvcl90ZXN0XyB0ZXN0IGd0ZXN0KQotICBweV90ZXN0KGd0ZXN0X2NvbG9yX3Rlc3Qp
Ci0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfZW52X3Zhcl90ZXN0XyB0ZXN0IGd0ZXN0KQotICBw
eV90ZXN0KGd0ZXN0X2Vudl92YXJfdGVzdCkKLQotICBjeHhfZXhlY3V0YWJsZShndGVzdF9maWx0
ZXJfdW5pdHRlc3RfIHRlc3QgZ3Rlc3QpCi0gIHB5X3Rlc3QoZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0
KQotCi0gIGN4eF9leGVjdXRhYmxlKGd0ZXN0X2hlbHBfdGVzdF8gdGVzdCBndGVzdF9tYWluKQot
ICBweV90ZXN0KGd0ZXN0X2hlbHBfdGVzdCkKLQotICBjeHhfZXhlY3V0YWJsZShndGVzdF9saXN0
X3Rlc3RzX3VuaXR0ZXN0XyB0ZXN0IGd0ZXN0KQotICBweV90ZXN0KGd0ZXN0X2xpc3RfdGVzdHNf
dW5pdHRlc3QpCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3Rfb3V0cHV0X3Rlc3RfIHRlc3QgZ3Rl
c3QpCi0gIHB5X3Rlc3QoZ3Rlc3Rfb3V0cHV0X3Rlc3QpCi0KLSAgY3h4X2V4ZWN1dGFibGUoZ3Rl
c3Rfc2h1ZmZsZV90ZXN0XyB0ZXN0IGd0ZXN0KQotICBweV90ZXN0KGd0ZXN0X3NodWZmbGVfdGVz
dCkKLQotICAjIE1TVkMgNy4xIGRvZXMgbm90IHN1cHBvcnQgU1RMIHdpdGggZXhjZXB0aW9ucyBk
aXNhYmxlZC4KLSAgaWYgKE5PVCBNU1ZDIE9SIE1TVkNfVkVSU0lPTiBHUkVBVEVSIDEzMTApCi0g
ICAgY3h4X2V4ZWN1dGFibGUoZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyB0ZXN0IGd0ZXN0
X25vX2V4Y2VwdGlvbikKLSAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoZ3Rlc3RfdGhyb3dfb25f
ZmFpbHVyZV90ZXN0XwotICAgICAgUFJPUEVSVElFUwotICAgICAgQ09NUElMRV9GTEFHUyAiJHtj
eHhfbm9fZXhjZXB0aW9ufSIpCi0gICAgcHlfdGVzdChndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rl
c3QpCi0gIGVuZGlmKCkKLQotICBjeHhfZXhlY3V0YWJsZShndGVzdF91bmluaXRpYWxpemVkX3Rl
c3RfIHRlc3QgZ3Rlc3QpCi0gIHB5X3Rlc3QoZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0KQotCi0g
IGN4eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB0ZXN0IGd0ZXN0X21haW4p
Ci0gIGN4eF9leGVjdXRhYmxlKGd0ZXN0X3htbF9vdXRmaWxlMl90ZXN0XyB0ZXN0IGd0ZXN0X21h
aW4pCi0gIHB5X3Rlc3QoZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QpCi0KLSAgY3h4X2V4ZWN1dGFi
bGUoZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8gdGVzdCBndGVzdCkKLSAgcHlfdGVzdChndGVz
dF94bWxfb3V0cHV0X3VuaXR0ZXN0KQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
Q09OVFJJQlVUT1JTIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvQ09OVFJJQlVUT1JTCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZWFlMmZjMDQ0MTAuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9DT05UUklCVVRPUlMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIFRoaXMgZmls
ZSBjb250YWlucyBhIGxpc3Qgb2YgcGVvcGxlIHdobyd2ZSBtYWRlIG5vbi10cml2aWFsCi0jIGNv
bnRyaWJ1dGlvbiB0byB0aGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBwcm9qZWN0LiAg
UGVvcGxlCi0jIHdobyBjb21taXQgY29kZSB0byB0aGUgcHJvamVjdCBhcmUgZW5jb3VyYWdlZCB0
byBhZGQgdGhlaXIgbmFtZXMKLSMgaGVyZS4gIFBsZWFzZSBrZWVwIHRoZSBsaXN0IHNvcnRlZCBi
eSBmaXJzdCBuYW1lcy4KLQotQWpheSBKb3NoaSA8amFqQGdvb2dsZS5jb20+Ci1CYWzDoXpzIETD
oW4gPGJhbGF6cy5kYW5AZ21haWwuY29tPgotQmhhcmF0IE1lZGlyYXR0YSA8YmhhcmF0QG1lbmFs
dG8uY29tPgotQ2hhbmRsZXIgQ2FycnV0aCA8Y2hhbmRsZXJjQGdvb2dsZS5jb20+Ci1DaHJpcyBQ
cmluY2UgPGNwcmluY2VAZ29vZ2xlLmNvbT4KLUNocmlzIFRheWxvciA8dGF5bG9yY0Bnb29nbGUu
Y29tPgotRGFuIEVnbm9yIDxlZ25vckBnb29nbGUuY29tPgotRXJpYyBSb21hbiA8ZXJvbWFuQGNo
cm9taXVtLm9yZz4KLUhhZHkgWmFsZWsgPGhhZHkuemFsZWtAZ21haWwuY29tPgotSmVmZnJleSBZ
YXNza2luIDxqeWFzc2tpbkBnb29nbGUuY29tPgotSsOzaSBTaWd1csOwc3NvbiA8am9pQGdvb2ds
ZS5jb20+Ci1LZWlyIE1pZXJsZSA8bWllcmxlQGdtYWlsLmNvbT4KLUtlaXRoIFJheSA8a2VpdGgu
cmF5QGdtYWlsLmNvbT4KLUtlbnRvbiBWYXJkYSA8a2VudG9uQGdvb2dsZS5jb20+Ci1NYW51ZWwg
S2xpbWVrIDxrbGltZWtAZ29vZ2xlLmNvbT4KLU1hcmt1cyBIZXVsZSA8bWFya3VzLmhldWxlQGdt
YWlsLmNvbT4KLU1pa2EgUmFlbnRvIDxtaWtpZUBpa2kuZmk+Ci1NaWtsw7NzIEZhemVrYXMgPG1m
YXpla2FzQHN6ZW1hZm9yLmNvbT4KLVBhc2kgVmFsbWluZW4gPHBhc2kudmFsbWluZW5AZ21haWwu
Y29tPgotUGF0cmljayBIYW5uYSA8cGhhbm5hQGdvb2dsZS5jb20+Ci1QYXRyaWNrIFJpbGV5IDxw
ZnJAZ29vZ2xlLmNvbT4KLVBldGVyIEthbWluc2tpIDxwaW90cmtAZ29vZ2xlLmNvbT4KLVByZXN0
b24gSmFja3NvbiA8cHJlc3Rvbi5hLmphY2tzb25AZ21haWwuY29tPgotUmFpbmVyIEtsYWZmZW5i
b2VjayA8cmFpbmVyLmtsYWZmZW5ib2Vja0BkeW5hdHJhY2UuY29tPgotUnVzcyBDb3ggPHJzY0Bn
b29nbGUuY29tPgotUnVzcyBSdWZlciA8cnVzc0BwZW50YWQuY29tPgotU2VhbiBNY2FmZWUgPGVl
ZmFjbUBnbWFpbC5jb20+Ci1TaWd1csOwdXIgw4FzZ2VpcnNzb24gPHNpZ2dpQGdvb2dsZS5jb20+
Ci1UcmFjeSBCaWFsaWsgPHRyYWN5QHBlbnRhZC5jb20+Ci1WYWRpbSBCZXJtYW4gPHZhZGltYkBn
b29nbGUuY29tPgotVmxhZCBMb3NldiA8dmxhZGxAZ29vZ2xlLmNvbT4KLVpoYW55b25nIFdhbiA8
d2FuQGdvb2dsZS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9MSUNFTlNFIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0MWExMWY4Y2U5
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvTElDRU5TRQorKysgL2Rldi9udWxsCkBA
IC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L01ha2VmaWxlLmFtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDI5Nzk3ZTRlOWRlNC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLSMgQXV0b21h
a2UgZmlsZQotCi1BQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotCi0jIE5vbnN0YW5kYXJkIHBhY2th
Z2UgZmlsZXMgZm9yIGRpc3RyaWJ1dGlvbgotRVhUUkFfRElTVCA9IFwKLSAgQ0hBTkdFUyBcCi0g
IENPTlRSSUJVVE9SUyBcCi0gIExJQ0VOU0UgXAotICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFt
LXRlc3QuaC5wdW1wIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGls
LWdlbmVyYXRlZC5oLnB1bXAgXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxl
LmgucHVtcCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVt
cCBcCi0gIG1ha2UvTWFrZWZpbGUgXAotICBzY3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgXAot
ICBzY3JpcHRzL2dlbl9ndGVzdF9wcmVkX2ltcGwucHkgXAotICBzY3JpcHRzL3B1bXAucHkgXAot
ICBzY3JpcHRzL3Rlc3QvTWFrZWZpbGUKLQotIyBndGVzdCBzb3VyY2UgZmlsZXMgdGhhdCB3ZSBk
b24ndCBjb21waWxlIGRpcmVjdGx5LiAgVGhleSBhcmUKLSMgI2luY2x1ZGVkIGJ5IGd0ZXN0LWFs
bC5jYy4KLUdURVNUX1NSQyA9IFwKLSAgc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MgXAotICBzcmMv
Z3Rlc3QtZmlsZXBhdGguY2MgXAotICBzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmggXAotICBzcmMv
Z3Rlc3QtcG9ydC5jYyBcCi0gIHNyYy9ndGVzdC1wcmludGVycy5jYyBcCi0gIHNyYy9ndGVzdC10
ZXN0LXBhcnQuY2MgXAotICBzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBcCi0gIHNyYy9ndGVzdC5j
YwotCi1FWFRSQV9ESVNUICs9ICQoR1RFU1RfU1JDKQotCi0jIFNhbXBsZSBmaWxlcyB0aGF0IHdl
IGRvbid0IGNvbXBpbGUuCi1FWFRSQV9ESVNUICs9IFwKLSAgc2FtcGxlcy9wcmltZV90YWJsZXMu
aCBcCi0gIHNhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlM191
bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlNF91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMv
c2FtcGxlNV91bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYyBcCi0g
IHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlOF91bml0dGVz
dC5jYyBcCi0gIHNhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwotCi0jIEMrKyB0ZXN0IGZpbGVz
IHRoYXQgd2UgZG9uJ3QgY29tcGlsZSBkaXJlY3RseS4KLUVYVFJBX0RJU1QgKz0gXAotICB0ZXN0
L2d0ZXN0LWRlYXRoLXRlc3RfZXhfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtZGVhdGgtdGVzdF90
ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1maWxlcGF0aF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1s
aW5rZWRfcHRyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LWxpc3RlbmVyX3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0LW1lc3NhZ2VfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNj
IFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJh
bS10ZXN0Ml90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90
ZXN0LmggXAotICB0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfcHJlbWF0
dXJlX2V4aXRfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtcHJpbnRlcnNfdGVzdC5jYyBcCi0gIHRl
c3QvZ3Rlc3QtdGVzdC1wYXJ0X3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR1cGxlX3Rlc3QuY2Mg
XAotICB0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QyX3Rlc3QuY2MgXAotICB0ZXN0L2d0ZXN0LXR5cGVk
LXRlc3RfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmggXAotICB0ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9icmVha19vbl9mYWls
dXJlX3VuaXR0ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0Xy5j
YyBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2Vudl92YXJf
dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MgXAotICB0ZXN0L2d0
ZXN0X2ZpbHRlcl91bml0dGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdF8uY2MgXAot
ICB0ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIFwKLSAgdGVzdC9ndGVzdF9tYWlu
X3VuaXR0ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0ZXN0LmNjIFwKLSAgdGVz
dC9ndGVzdF9vdXRwdXRfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0dGVz
dC5jYyBcCi0gIHRlc3QvZ3Rlc3RfcHJvZF90ZXN0LmNjIFwKLSAgdGVzdC9ndGVzdF9yZXBlYXRf
dGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3Rf
c29sZV9oZWFkZXJfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3Rfc3RyZXNzX3Rlc3QuY2MgXAotICB0
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfZXhfdGVzdC5jYyBcCi0gIHRlc3QvZ3Rlc3RfdGhy
b3dfb25fZmFpbHVyZV90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0
Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfdW5pdHRlc3QuY2MgXAotICB0ZXN0L2d0ZXN0X3VuaXR0ZXN0
LmNjIFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8uY2MgXAotICB0ZXN0L2d0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBcCi0gIHRlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uY2MgXAotICB0ZXN0L3Byb2R1Y3Rpb24uaAotCi0j
IFB5dGhvbiB0ZXN0cyB0aGF0IHdlIGRvbid0IHJ1bi4KLUVYVFJBX0RJU1QgKz0gXAotICB0ZXN0
L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3QucHkgXAotICB0ZXN0L2d0ZXN0X2NhdGNo
X2V4Y2VwdGlvbnNfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBcCi0gIHRl
c3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5IFwKLSAgdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3Qu
cHkgXAotICB0ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfbGlzdF90ZXN0
c191bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgXAotICB0ZXN0L2d0
ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0IFwKLSAgdGVzdC9ndGVzdF9zaHVmZmxlX3Rl
c3QucHkgXAotICB0ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgXAotICB0ZXN0L2d0ZXN0X3Rocm93
X29uX2ZhaWx1cmVfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0LnB5
IFwKLSAgdGVzdC9ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1s
X291dHB1dF91bml0dGVzdC5weSBcCi0gIHRlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKLQot
IyBDTWFrZSBzY3JpcHQKLUVYVFJBX0RJU1QgKz0gXAotICBDTWFrZUxpc3RzLnR4dCBcCi0gIGNt
YWtlL2ludGVybmFsX3V0aWxzLmNtYWtlCi0KLSMgTVNWQyBwcm9qZWN0IGZpbGVzCi1FWFRSQV9E
SVNUICs9IFwKLSAgbXN2Yy9ndGVzdC1tZC5zbG4gXAotICBtc3ZjL2d0ZXN0LW1kLnZjcHJvaiBc
Ci0gIG1zdmMvZ3Rlc3Quc2xuIFwKLSAgbXN2Yy9ndGVzdC52Y3Byb2ogXAotICBtc3ZjL2d0ZXN0
X21haW4tbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF9tYWluLnZjcHJvaiBcCi0gIG1zdmMvZ3Rl
c3RfcHJvZF90ZXN0LW1kLnZjcHJvaiBcCi0gIG1zdmMvZ3Rlc3RfcHJvZF90ZXN0LnZjcHJvaiBc
Ci0gIG1zdmMvZ3Rlc3RfdW5pdHRlc3QtbWQudmNwcm9qIFwKLSAgbXN2Yy9ndGVzdF91bml0dGVz
dC52Y3Byb2oKLQotIyB4Y29kZSBwcm9qZWN0IGZpbGVzCi1FWFRSQV9ESVNUICs9IFwKLSAgeGNv
ZGUvQ29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBcCi0gIHhjb2RlL0NvbmZpZy9GcmFtZXdv
cmtUYXJnZXQueGNjb25maWcgXAotICB4Y29kZS9Db25maWcvR2VuZXJhbC54Y2NvbmZpZyBcCi0g
IHhjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZpZyBcCi0gIHhjb2RlL0NvbmZpZy9T
dGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnIFwKLSAgeGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQu
eGNjb25maWcgXAotICB4Y29kZS9SZXNvdXJjZXMvSW5mby5wbGlzdCBcCi0gIHhjb2RlL1Njcmlw
dHMvcnVudGVzdHMuc2ggXAotICB4Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSBcCi0g
IHhjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKLQotIyB4Y29kZSBzYW1wbGUg
ZmlsZXMKLUVYVFJBX0RJU1QgKz0gXAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9J
bmZvLnBsaXN0IFwKLSAgeGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvV2lkZ2V0RnJhbWV3
b3JrLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAotICB4Y29kZS9TYW1wbGVzL0ZyYW1ld29y
a1NhbXBsZS9ydW50ZXN0cy5zaCBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dp
ZGdldC5jYyBcCi0gIHhjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3dpZGdldC5oIFwKLSAg
eGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3QuY2MKLQotIyBDKytCdWls
ZGVyIHByb2plY3QgZmlsZXMKLUVYVFJBX0RJU1QgKz0gXAotICBjb2RlZ2Vhci9ndGVzdC5jYnBy
b2ogXAotICBjb2RlZ2Vhci9ndGVzdC5ncm91cHByb2ogXAotICBjb2RlZ2Vhci9ndGVzdF9hbGwu
Y2MgXAotICBjb2RlZ2Vhci9ndGVzdF9saW5rLmNjIFwKLSAgY29kZWdlYXIvZ3Rlc3RfbWFpbi5j
YnByb2ogXAotICBjb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2oKLQotIyBEaXN0cmlidXRl
IGFuZCBpbnN0YWxsIE00IG1hY3JvCi1tNGRhdGFkaXIgPSAkKGRhdGFkaXIpL2FjbG9jYWwKLW00
ZGF0YV9EQVRBID0gbTQvZ3Rlc3QubTQKLUVYVFJBX0RJU1QgKz0gJChtNGRhdGFfREFUQSkKLQot
IyBXZSBkZWZpbmUgdGhlIGdsb2JhbCBBTV9DUFBGTEFHUyBhcyBldmVyeXRoaW5nIHdlIGNvbXBp
bGUgaW5jbHVkZXMgZnJvbSB0aGVzZQotIyBkaXJlY3Rvcmllcy4KLUFNX0NQUEZMQUdTID0gLUkk
KHNyY2RpcikgLUkkKHNyY2RpcikvaW5jbHVkZQotCi0jIE1vZGlmaWVzIGNvbXBpbGVyIGFuZCBs
aW5rZXIgZmxhZ3MgZm9yIHB0aHJlYWRzIGNvbXBhdGliaWxpdHkuCi1pZiBIQVZFX1BUSFJFQURT
Ci0gIEFNX0NYWEZMQUdTID0gQFBUSFJFQURfQ0ZMQUdTQCAtREdURVNUX0hBU19QVEhSRUFEPTEK
LSAgQU1fTElCUyA9IEBQVEhSRUFEX0xJQlNACi1lbHNlCi0gIEFNX0NYWEZMQUdTID0gLURHVEVT
VF9IQVNfUFRIUkVBRD0wCi1lbmRpZgotCi0jIEJ1aWxkIHJ1bGVzIGZvciBsaWJyYXJpZXMuCi1s
aWJfTFRMSUJSQVJJRVMgPSBsaWIvbGliZ3Rlc3QubGEgbGliL2xpYmd0ZXN0X21haW4ubGEKLQot
bGliX2xpYmd0ZXN0X2xhX1NPVVJDRVMgPSBzcmMvZ3Rlc3QtYWxsLmNjCi0KLXBrZ2luY2x1ZGVf
SEVBREVSUyA9IFwKLSAgaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggXAotICBpbmNs
dWRlL2d0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0t
dGVzdC5oIFwKLSAgaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oIFwKLSAgaW5jbHVkZS9n
dGVzdC9ndGVzdC1zcGkuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmggXAot
ICBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rl
c3QuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJlZF9pbXBsLmggXAotICBpbmNsdWRlL2d0
ZXN0L2d0ZXN0X3Byb2QuaAotCi1wa2dpbmNsdWRlX2ludGVybmFsZGlyID0gJChwa2dpbmNsdWRl
ZGlyKS9pbnRlcm5hbAotcGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJTID0gXAotICBpbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCBcCi0gIGluY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtaW50ZXJuYWwuaCBcCi0gIGluY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtbGlu
a2VkX3B0ci5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdl
bmVyYXRlZC5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgg
XAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCBcCi0gIGluY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC1hcmNoLmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LXN0cmluZy5oIFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
IFwKLSAgaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCBcCi0gIGluY2x1
ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2N1c3RvbS9ndGVzdC1wb3J0LmggXAotICBpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3Rv
bS9ndGVzdC1wcmludGVycy5oCi0KLWxpYl9saWJndGVzdF9tYWluX2xhX1NPVVJDRVMgPSBzcmMv
Z3Rlc3RfbWFpbi5jYwotbGliX2xpYmd0ZXN0X21haW5fbGFfTElCQUREID0gbGliL2xpYmd0ZXN0
LmxhCi0KLSMgQnVsaWQgcnVsZXMgZm9yIHNhbXBsZXMgYW5kIHRlc3RzLiBBdXRvbWFrZSdzIG5h
bWluZyBmb3Igc29tZSBvZgotIyB0aGVzZSB2YXJpYWJsZXMgaXNuJ3QgdGVycmlibHkgb2J2aW91
cywgc28gdGhpcyBpcyBhIGJyaWVmCi0jIHJlZmVyZW5jZToKLSMKLSMgVEVTVFMgLS0gUHJvZ3Jh
bXMgcnVuIGF1dG9tYXRpY2FsbHkgYnkgIm1ha2UgY2hlY2siCi0jIGNoZWNrX1BST0dSQU1TIC0t
IFByb2dyYW1zIGJ1aWx0IGJ5ICJtYWtlIGNoZWNrIiBidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bgot
Ci1ub2luc3RfTFRMSUJSQVJJRVMgPSBzYW1wbGVzL2xpYnNhbXBsZXMubGEKLQotc2FtcGxlc19s
aWJzYW1wbGVzX2xhX1NPVVJDRVMgPSBcCi0gIHNhbXBsZXMvc2FtcGxlMS5jYyBcCi0gIHNhbXBs
ZXMvc2FtcGxlMS5oIFwKLSAgc2FtcGxlcy9zYW1wbGUyLmNjIFwKLSAgc2FtcGxlcy9zYW1wbGUy
LmggXAotICBzYW1wbGVzL3NhbXBsZTMtaW5sLmggXAotICBzYW1wbGVzL3NhbXBsZTQuY2MgXAot
ICBzYW1wbGVzL3NhbXBsZTQuaAotCi1URVNUUz0KLVRFU1RTX0VOVklST05NRU5UID0gR1RFU1Rf
U09VUkNFX0RJUj0iJChzcmNkaXIpL3Rlc3QiIFwKLSAgICAgICAgICAgICAgICAgICAgR1RFU1Rf
QlVJTERfRElSPSIkKHRvcF9idWlsZGRpcikvdGVzdCIKLWNoZWNrX1BST0dSQU1TPQotCi0jIEEg
c2ltcGxlIHNhbXBsZSBvbiB1c2luZyBndGVzdC4KLVRFU1RTICs9IHNhbXBsZXMvc2FtcGxlMV91
bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0Ci1zYW1w
bGVzX3NhbXBsZTFfdW5pdHRlc3RfU09VUkNFUyA9IHNhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5j
Ywotc2FtcGxlc19zYW1wbGUxX3VuaXR0ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0X21haW4ubGEg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYmd0ZXN0LmxhIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMvbGlic2FtcGxlcy5sYQotCi0j
IEFub3RoZXIgc2FtcGxlLiAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0IHdvcmtzLgot
VEVTVFMgKz0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdAotY2hlY2tfUFJPR1JBTVMgKz0gc2Ft
cGxlcy9zYW1wbGUxMF91bml0dGVzdAotc2FtcGxlc19zYW1wbGUxMF91bml0dGVzdF9TT1VSQ0VT
ID0gc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYwotc2FtcGxlc19zYW1wbGUxMF91bml0dGVz
dF9MREFERCA9IGxpYi9saWJndGVzdC5sYQotCi0jIFRoaXMgdGVzdHMgbW9zdCBjb25zdHJ1Y3Rz
IG9mIGd0ZXN0IGFuZCB2ZXJpZmllcyB0aGF0IGxpYmd0ZXN0X21haW4KLSMgYW5kIGxpYmd0ZXN0
IHdvcmsuCi1URVNUUyArPSB0ZXN0L2d0ZXN0X2FsbF90ZXN0Ci1jaGVja19QUk9HUkFNUyArPSB0
ZXN0L2d0ZXN0X2FsbF90ZXN0Ci10ZXN0X2d0ZXN0X2FsbF90ZXN0X1NPVVJDRVMgPSB0ZXN0L2d0
ZXN0X2FsbF90ZXN0LmNjCi10ZXN0X2d0ZXN0X2FsbF90ZXN0X0xEQUREID0gbGliL2xpYmd0ZXN0
X21haW4ubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJndGVzdC5sYQot
Ci0jIFRlc3RzIHRoYXQgZnVzZWQgZ3Rlc3QgZmlsZXMgY29tcGlsZSBhbmQgd29yay4KLUZVU0VE
X0dURVNUX1NSQyA9IFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0LWFsbC5jYyBcCi0gIGZ1c2Vk
LXNyYy9ndGVzdC9ndGVzdC5oIFwKLSAgZnVzZWQtc3JjL2d0ZXN0L2d0ZXN0X21haW4uY2MKLQot
aWYgSEFWRV9QWVRIT04KLVRFU1RTICs9IHRlc3QvZnVzZWRfZ3Rlc3RfdGVzdAotY2hlY2tfUFJP
R1JBTVMgKz0gdGVzdC9mdXNlZF9ndGVzdF90ZXN0Ci10ZXN0X2Z1c2VkX2d0ZXN0X3Rlc3RfU09V
UkNFUyA9ICQoRlVTRURfR1RFU1RfU1JDKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbXBsZXMvc2FtcGxlMS5jYyBzYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3QuY2MKLXRlc3Rf
ZnVzZWRfZ3Rlc3RfdGVzdF9DUFBGTEFHUyA9IC1JIiQoc3JjZGlyKS9mdXNlZC1zcmMiCi0KLSMg
QnVpbGQgcnVsZXMgZm9yIHB1dHRpbmcgZnVzZWQgR29vZ2xlIFRlc3QgZmlsZXMgaW50byB0aGUg
ZGlzdHJpYnV0aW9uCi0jIHBhY2thZ2UuIFRoZSB1c2VyIGNhbiBhbHNvIGNyZWF0ZSB0aG9zZSBm
aWxlcyBieSBtYW51YWxseSBydW5uaW5nCi0jIHNjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weS4K
LSQodGVzdF9mdXNlZF9ndGVzdF90ZXN0X1NPVVJDRVMpOiBmdXNlZC1ndGVzdAotCi1mdXNlZC1n
dGVzdDogJChwa2dpbmNsdWRlX0hFQURFUlMpICQocGtnaW5jbHVkZV9pbnRlcm5hbF9IRUFERVJT
KSBcCi0gICAgICAgICAgICAgJChHVEVTVF9TUkMpIHNyYy9ndGVzdC1hbGwuY2Mgc3JjL2d0ZXN0
X21haW4uY2MgXAotICAgICAgICAgICAgIHNjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weQotCW1r
ZGlyIC1wICIkKHNyY2RpcikvZnVzZWQtc3JjIgotCWNobW9kIC1SIHUrdyAiJChzcmNkaXIpL2Z1
c2VkLXNyYyIKLQlybSAtZiAiJChzcmNkaXIpL2Z1c2VkLXNyYy9ndGVzdC9ndGVzdC1hbGwuY2Mi
Ci0Jcm0gLWYgIiQoc3JjZGlyKS9mdXNlZC1zcmMvZ3Rlc3QvZ3Rlc3QuaCIKLQkiJChzcmNkaXIp
L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5weSIgIiQoc3JjZGlyKS9mdXNlZC1zcmMiCi0JY3Ag
LWYgIiQoc3JjZGlyKS9zcmMvZ3Rlc3RfbWFpbi5jYyIgIiQoc3JjZGlyKS9mdXNlZC1zcmMvZ3Rl
c3QvIgotCi1tYWludGFpbmVyLWNsZWFuLWxvY2FsOgotCXJtIC1yZiAiJChzcmNkaXIpL2Z1c2Vk
LXNyYyIKLWVuZGlmCi0KLSMgRGVhdGggdGVzdHMgbWF5IHByb2R1Y2UgY29yZSBkdW1wcyBpbiB0
aGUgYnVpbGQgZGlyZWN0b3J5LiBJbiBjYXNlCi0jIHRoaXMgaGFwcGVucywgY2xlYW4gdGhlbSB0
byBrZWVwIGRpc3RjbGVhbmNoZWNrIGhhcHB5LgotQ0xFQU5GSUxFUyA9IGNvcmUKLQotIyBEaXNh
YmxlcyAnbWFrZSBpbnN0YWxsJyBhcyBpbnN0YWxsaW5nIGEgY29tcGlsZWQgdmVyc2lvbiBvZiBH
b29nbGUKLSMgVGVzdCBjYW4gbGVhZCB0byB1bmRlZmluZWQgYmVoYXZpb3IgZHVlIHRvIHZpb2xh
dGlvbiBvZiB0aGUKLSMgT25lLURlZmluaXRpb24gUnVsZS4KLQotaW5zdGFsbC1leGVjLWxvY2Fs
OgotCWVjaG8gIidtYWtlIGluc3RhbGwnIGlzIGRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZC4g
SW5zdGVhZCwgc2VlIFJFQURNRSBmb3IgaG93IHRvIGludGVncmF0ZSBHb29nbGUgVGVzdCBpbnRv
IHlvdXIgYnVpbGQgc3lzdGVtLiIKLQlmYWxzZQotCi1pbnN0YWxsLWRhdGEtbG9jYWw6Ci0JZWNo
byAiJ21ha2UgaW5zdGFsbCcgaXMgZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFk
LCBzZWUgUkVBRE1FIGZvciBob3cgdG8gaW50ZWdyYXRlIEdvb2dsZSBUZXN0IGludG8geW91ciBi
dWlsZCBzeXN0ZW0uIgotCWZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9SRUFETUUubWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBh
MzQ3NGMwMmI0Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L1JFQURNRS5tZAorKysg
L2Rldi9udWxsCkBAIC0xLDM4MyArMCwwIEBACi0KLSMjIyBHZW5lcmljIEJ1aWxkIEluc3RydWN0
aW9ucyAjIyMKLQotIyMjIyBTZXR1cCAjIyMjCi0KLVRvIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCB5
b3VyIHRlc3RzIHRoYXQgdXNlIGl0LCB5b3UgbmVlZCB0byB0ZWxsIHlvdXIKLWJ1aWxkIHN5c3Rl
bSB3aGVyZSB0byBmaW5kIGl0cyBoZWFkZXJzIGFuZCBzb3VyY2UgZmlsZXMuICBUaGUgZXhhY3QK
LXdheSB0byBkbyBpdCBkZXBlbmRzIG9uIHdoaWNoIGJ1aWxkIHN5c3RlbSB5b3UgdXNlLCBhbmQg
aXMgdXN1YWxseQotc3RyYWlnaHRmb3J3YXJkLgotCi0jIyMjIEJ1aWxkICMjIyMKLQotU3VwcG9z
ZSB5b3UgcHV0IEdvb2dsZSBUZXN0IGluIGRpcmVjdG9yeSBgJHtHVEVTVF9ESVJ9YC4gIFRvIGJ1
aWxkIGl0LAotY3JlYXRlIGEgbGlicmFyeSBidWlsZCB0YXJnZXQgKG9yIGEgcHJvamVjdCBhcyBj
YWxsZWQgYnkgVmlzdWFsIFN0dWRpbwotYW5kIFhjb2RlKSB0byBjb21waWxlCi0KLSAgICAke0dU
RVNUX0RJUn0vc3JjL2d0ZXN0LWFsbC5jYwotCi13aXRoIGAke0dURVNUX0RJUn0vaW5jbHVkZWAg
aW4gdGhlIHN5c3RlbSBoZWFkZXIgc2VhcmNoIHBhdGggYW5kIGAke0dURVNUX0RJUn1gCi1pbiB0
aGUgbm9ybWFsIGhlYWRlciBzZWFyY2ggcGF0aC4gIEFzc3VtaW5nIGEgTGludXgtbGlrZSBzeXN0
ZW0gYW5kIGdjYywKLXNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2lsbCBkbzoKLQotICAg
IGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5jbHVkZSAtSSR7R1RFU1RfRElSfSBcCi0gICAg
ICAgIC1wdGhyZWFkIC1jICR7R1RFU1RfRElSfS9zcmMvZ3Rlc3QtYWxsLmNjCi0gICAgYXIgLXJ2
IGxpYmd0ZXN0LmEgZ3Rlc3QtYWxsLm8KLQotKFdlIG5lZWQgYC1wdGhyZWFkYCBhcyBHb29nbGUg
VGVzdCB1c2VzIHRocmVhZHMuKQotCi1OZXh0LCB5b3Ugc2hvdWxkIGNvbXBpbGUgeW91ciB0ZXN0
IHNvdXJjZSBmaWxlIHdpdGgKLWAke0dURVNUX0RJUn0vaW5jbHVkZWAgaW4gdGhlIHN5c3RlbSBo
ZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCBsaW5rIGl0Ci13aXRoIGd0ZXN0IGFuZCBhbnkgb3RoZXIg
bmVjZXNzYXJ5IGxpYnJhcmllczoKLQotICAgIGcrKyAtaXN5c3RlbSAke0dURVNUX0RJUn0vaW5j
bHVkZSAtcHRocmVhZCBwYXRoL3RvL3lvdXJfdGVzdC5jYyBsaWJndGVzdC5hIFwKLSAgICAgICAg
LW8geW91cl90ZXN0Ci0KLUFzIGFuIGV4YW1wbGUsIHRoZSBtYWtlLyBkaXJlY3RvcnkgY29udGFp
bnMgYSBNYWtlZmlsZSB0aGF0IHlvdSBjYW4KLXVzZSB0byBidWlsZCBHb29nbGUgVGVzdCBvbiBz
eXN0ZW1zIHdoZXJlIEdOVSBtYWtlIGlzIGF2YWlsYWJsZQotKGUuZy4gTGludXgsIE1hYyBPUyBY
LCBhbmQgQ3lnd2luKS4gIEl0IGRvZXNuJ3QgdHJ5IHRvIGJ1aWxkIEdvb2dsZQotVGVzdCdzIG93
biB0ZXN0cy4gIEluc3RlYWQsIGl0IGp1c3QgYnVpbGRzIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5
IGFuZAotYSBzYW1wbGUgdGVzdC4gIFlvdSBjYW4gdXNlIGl0IGFzIGEgc3RhcnRpbmcgcG9pbnQg
Zm9yIHlvdXIgb3duIGJ1aWxkCi1zY3JpcHQuCi0KLUlmIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFy
ZSBjb3JyZWN0IGZvciB5b3VyIGVudmlyb25tZW50LCB0aGUKLWZvbGxvd2luZyBjb21tYW5kcyBz
aG91bGQgc3VjY2VlZDoKLQotICAgIGNkICR7R1RFU1RfRElSfS9tYWtlCi0gICAgbWFrZQotICAg
IC4vc2FtcGxlMV91bml0dGVzdAotCi1JZiB5b3Ugc2VlIGVycm9ycywgdHJ5IHRvIHR3ZWFrIHRo
ZSBjb250ZW50cyBvZiBgbWFrZS9NYWtlZmlsZWAgdG8gbWFrZQotdGhlbSBnbyBhd2F5LiAgVGhl
cmUgYXJlIGluc3RydWN0aW9ucyBpbiBgbWFrZS9NYWtlZmlsZWAgb24gaG93IHRvIGRvCi1pdC4K
LQotIyMjIFVzaW5nIENNYWtlICMjIwotCi1Hb29nbGUgVGVzdCBjb21lcyB3aXRoIGEgQ01ha2Ug
YnVpbGQgc2NyaXB0ICgKLVtDTWFrZUxpc3RzLnR4dF0oQ01ha2VMaXN0cy50eHQpKSB0aGF0IGNh
biBiZSB1c2VkIG9uIGEgd2lkZSByYW5nZSBvZiBwbGF0Zm9ybXMgKCJDIiBzdGFuZHMgZm9yCi1j
cm9zcy1wbGF0Zm9ybS4pLiBJZiB5b3UgZG9uJ3QgaGF2ZSBDTWFrZSBpbnN0YWxsZWQgYWxyZWFk
eSwgeW91IGNhbgotZG93bmxvYWQgaXQgZm9yIGZyZWUgZnJvbSA8aHR0cDovL3d3dy5jbWFrZS5v
cmcvPi4KLQotQ01ha2Ugd29ya3MgYnkgZ2VuZXJhdGluZyBuYXRpdmUgbWFrZWZpbGVzIG9yIGJ1
aWxkIHByb2plY3RzIHRoYXQgY2FuCi1iZSB1c2VkIGluIHRoZSBjb21waWxlciBlbnZpcm9ubWVu
dCBvZiB5b3VyIGNob2ljZS4gIFlvdSBjYW4gZWl0aGVyCi1idWlsZCBHb29nbGUgVGVzdCBhcyBh
IHN0YW5kYWxvbmUgcHJvamVjdCBvciBpdCBjYW4gYmUgaW5jb3Jwb3JhdGVkCi1pbnRvIGFuIGV4
aXN0aW5nIENNYWtlIGJ1aWxkIGZvciBhbm90aGVyIHByb2plY3QuCi0KLSMjIyMgU3RhbmRhbG9u
ZSBDTWFrZSBQcm9qZWN0ICMjIyMKLQotV2hlbiBidWlsZGluZyBHb29nbGUgVGVzdCBhcyBhIHN0
YW5kYWxvbmUgcHJvamVjdCwgdGhlIHR5cGljYWwKLXdvcmtmbG93IHN0YXJ0cyB3aXRoOgotCi0g
ICAgbWtkaXIgbXlidWlsZCAgICAgICAjIENyZWF0ZSBhIGRpcmVjdG9yeSB0byBob2xkIHRoZSBi
dWlsZCBvdXRwdXQuCi0gICAgY2QgbXlidWlsZAotICAgIGNtYWtlICR7R1RFU1RfRElSfSAgIyBH
ZW5lcmF0ZSBuYXRpdmUgYnVpbGQgc2NyaXB0cy4KLQotSWYgeW91IHdhbnQgdG8gYnVpbGQgR29v
Z2xlIFRlc3QncyBzYW1wbGVzLCB5b3Ugc2hvdWxkIHJlcGxhY2UgdGhlCi1sYXN0IGNvbW1hbmQg
d2l0aAotCi0gICAgY21ha2UgLURndGVzdF9idWlsZF9zYW1wbGVzPU9OICR7R1RFU1RfRElSfQot
Ci1JZiB5b3UgYXJlIG9uIGEgXCpuaXggc3lzdGVtLCB5b3Ugc2hvdWxkIG5vdyBzZWUgYSBNYWtl
ZmlsZSBpbiB0aGUKLWN1cnJlbnQgZGlyZWN0b3J5LiAgSnVzdCB0eXBlICdtYWtlJyB0byBidWls
ZCBndGVzdC4KLQotSWYgeW91IHVzZSBXaW5kb3dzIGFuZCBoYXZlIFZpc3VhbCBTdHVkaW8gaW5z
dGFsbGVkLCBhIGBndGVzdC5zbG5gIGZpbGUKLWFuZCBzZXZlcmFsIGAudmNwcm9qYCBmaWxlcyB3
aWxsIGJlIGNyZWF0ZWQuICBZb3UgY2FuIHRoZW4gYnVpbGQgdGhlbQotdXNpbmcgVmlzdWFsIFN0
dWRpby4KLQotT24gTWFjIE9TIFggd2l0aCBYY29kZSBpbnN0YWxsZWQsIGEgYC54Y29kZXByb2pg
IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSMjIyMgSW5jb3Jwb3JhdGluZyBJbnRvIEFuIEV4
aXN0aW5nIENNYWtlIFByb2plY3QgIyMjIwotCi1JZiB5b3Ugd2FudCB0byB1c2UgZ3Rlc3QgaW4g
YSBwcm9qZWN0IHdoaWNoIGFscmVhZHkgdXNlcyBDTWFrZSwgdGhlbiBhCi1tb3JlIHJvYnVzdCBh
bmQgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gYnVpbGQgZ3Rlc3QgYXMgcGFydCBvZiB0aGF0Ci1w
cm9qZWN0IGRpcmVjdGx5LiBUaGlzIGlzIGRvbmUgYnkgbWFraW5nIHRoZSBHb29nbGVUZXN0IHNv
dXJjZSBjb2RlCi1hdmFpbGFibGUgdG8gdGhlIG1haW4gYnVpbGQgYW5kIGFkZGluZyBpdCB1c2lu
ZyBDTWFrZSdzCi1gYWRkX3N1YmRpcmVjdG9yeSgpYCBjb21tYW5kLiBUaGlzIGhhcyB0aGUgc2ln
bmlmaWNhbnQgYWR2YW50YWdlIHRoYXQKLXRoZSBzYW1lIGNvbXBpbGVyIGFuZCBsaW5rZXIgc2V0
dGluZ3MgYXJlIHVzZWQgYmV0d2VlbiBndGVzdCBhbmQgdGhlCi1yZXN0IG9mIHlvdXIgcHJvamVj
dCwgc28gaXNzdWVzIGFzc29jaWF0ZWQgd2l0aCB1c2luZyBpbmNvbXBhdGlibGUKLWxpYnJhcmll
cyAoZWcgZGVidWcvcmVsZWFzZSksIGV0Yy4gYXJlIGF2b2lkZWQuIFRoaXMgaXMgcGFydGljdWxh
cmx5Ci11c2VmdWwgb24gV2luZG93cy4gTWFraW5nIEdvb2dsZVRlc3QncyBzb3VyY2UgY29kZSBh
dmFpbGFibGUgdG8gdGhlCi1tYWluIGJ1aWxkIGNhbiBiZSBkb25lIGEgZmV3IGRpZmZlcmVudCB3
YXlzOgotCi0qIERvd25sb2FkIHRoZSBHb29nbGVUZXN0IHNvdXJjZSBjb2RlIG1hbnVhbGx5IGFu
ZCBwbGFjZSBpdCBhdCBhCi0gIGtub3duIGxvY2F0aW9uLiBUaGlzIGlzIHRoZSBsZWFzdCBmbGV4
aWJsZSBhcHByb2FjaCBhbmQgY2FuIG1ha2UKLSAgaXQgbW9yZSBkaWZmaWN1bHQgdG8gdXNlIHdp
dGggY29udGludW91cyBpbnRlZ3JhdGlvbiBzeXN0ZW1zLCBldGMuCi0qIEVtYmVkIHRoZSBHb29n
bGVUZXN0IHNvdXJjZSBjb2RlIGFzIGEgZGlyZWN0IGNvcHkgaW4gdGhlIG1haW4KLSAgcHJvamVj
dCdzIHNvdXJjZSB0cmVlLiBUaGlzIGlzIG9mdGVuIHRoZSBzaW1wbGVzdCBhcHByb2FjaCwgYnV0
IGlzCi0gIGFsc28gdGhlIGhhcmRlc3QgdG8ga2VlcCB1cCB0byBkYXRlLiBTb21lIG9yZ2FuaXph
dGlvbnMgbWF5IG5vdAotICBwZXJtaXQgdGhpcyBtZXRob2QuCi0qIEFkZCBHb29nbGVUZXN0IGFz
IGEgZ2l0IHN1Ym1vZHVsZSBvciBlcXVpdmFsZW50LiBUaGlzIG1heSBub3QKLSAgYWx3YXlzIGJl
IHBvc3NpYmxlIG9yIGFwcHJvcHJpYXRlLiBHaXQgc3VibW9kdWxlcywgZm9yIGV4YW1wbGUsCi0g
IGhhdmUgdGhlaXIgb3duIHNldCBvZiBhZHZhbnRhZ2VzIGFuZCBkcmF3YmFja3MuCi0qIFVzZSBD
TWFrZSB0byBkb3dubG9hZCBHb29nbGVUZXN0IGFzIHBhcnQgb2YgdGhlIGJ1aWxkJ3MgY29uZmln
dXJlCi0gIHN0ZXAuIFRoaXMgaXMganVzdCBhIGxpdHRsZSBtb3JlIGNvbXBsZXgsIGJ1dCBkb2Vz
bid0IGhhdmUgdGhlCi0gIGxpbWl0YXRpb25zIG9mIHRoZSBvdGhlciBtZXRob2RzLgotCi1UaGUg
bGFzdCBvZiB0aGUgYWJvdmUgbWV0aG9kcyBpcyBpbXBsZW1lbnRlZCB3aXRoIGEgc21hbGwgcGll
Y2UKLW9mIENNYWtlIGNvZGUgaW4gYSBzZXBhcmF0ZSBmaWxlIChlLmcuIGBDTWFrZUxpc3RzLnR4
dC5pbmApIHdoaWNoCi1pcyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGFyZWEgYW5kIHRoZW4gaW52b2tl
ZCBhcyBhIHN1Yi1idWlsZAotX2R1cmluZyB0aGUgQ01ha2Ugc3RhZ2VfLiBUaGF0IGRpcmVjdG9y
eSBpcyB0aGVuIHB1bGxlZCBpbnRvIHRoZQotbWFpbiBidWlsZCB3aXRoIGBhZGRfc3ViZGlyZWN0
b3J5KClgLiBGb3IgZXhhbXBsZToKLQotTmV3IGZpbGUgYENNYWtlTGlzdHMudHh0LmluYDoKLQot
ICAgIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMikKLSAKLSAgICBwcm9qZWN0
KGdvb2dsZXRlc3QtZG93bmxvYWQgTk9ORSkKLSAKLSAgICBpbmNsdWRlKEV4dGVybmFsUHJvamVj
dCkKLSAgICBFeHRlcm5hbFByb2plY3RfQWRkKGdvb2dsZXRlc3QKLSAgICAgIEdJVF9SRVBPU0lU
T1JZICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC5naXQKLSAgICAgIEdJ
VF9UQUcgICAgICAgICAgIG1hc3RlcgotICAgICAgU09VUkNFX0RJUiAgICAgICAgIiR7Q01BS0Vf
QklOQVJZX0RJUn0vZ29vZ2xldGVzdC1zcmMiCi0gICAgICBCSU5BUllfRElSICAgICAgICAiJHtD
TUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkIgotICAgICAgQ09ORklHVVJFX0NPTU1B
TkQgIiIKLSAgICAgIEJVSUxEX0NPTU1BTkQgICAgICIiCi0gICAgICBJTlNUQUxMX0NPTU1BTkQg
ICAiIgotICAgICAgVEVTVF9DT01NQU5EICAgICAgIiIKLSAgICApCi0gICAgCi1FeGlzdGluZyBi
dWlsZCdzIGBDTWFrZUxpc3RzLnR4dGA6Ci0KLSAgICAjIERvd25sb2FkIGFuZCB1bnBhY2sgZ29v
Z2xldGVzdCBhdCBjb25maWd1cmUgdGltZQotICAgIGNvbmZpZ3VyZV9maWxlKENNYWtlTGlzdHMu
dHh0LmluIGdvb2dsZXRlc3QtZG93bmxvYWQvQ01ha2VMaXN0cy50eHQpCi0gICAgZXhlY3V0ZV9w
cm9jZXNzKENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRyAiJHtDTUFLRV9HRU5FUkFUT1J9IiAu
Ci0gICAgICBSRVNVTFRfVkFSSUFCTEUgcmVzdWx0Ci0gICAgICBXT1JLSU5HX0RJUkVDVE9SWSAk
e0NNQUtFX0JJTkFSWV9ESVJ9L2dvb2dsZXRlc3QtZG93bmxvYWQgKQotICAgIGlmKHJlc3VsdCkK
LSAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNNYWtlIHN0ZXAgZm9yIGdvb2dsZXRlc3QgZmFp
bGVkOiAke3Jlc3VsdH0iKQotICAgIGVuZGlmKCkKLSAgICBleGVjdXRlX3Byb2Nlc3MoQ09NTUFO
RCAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLgotICAgICAgUkVTVUxUX1ZBUklBQkxFIHJlc3Vs
dAotICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9nb29nbGV0ZXN0
LWRvd25sb2FkICkKLSAgICBpZihyZXN1bHQpCi0gICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJC
dWlsZCBzdGVwIGZvciBnb29nbGV0ZXN0IGZhaWxlZDogJHtyZXN1bHR9IikKLSAgICBlbmRpZigp
Ci0KLSAgICAjIFByZXZlbnQgb3ZlcnJpZGluZyB0aGUgcGFyZW50IHByb2plY3QncyBjb21waWxl
ci9saW5rZXIKLSAgICAjIHNldHRpbmdzIG9uIFdpbmRvd3MKLSAgICBzZXQoZ3Rlc3RfZm9yY2Vf
c2hhcmVkX2NydCBPTiBDQUNIRSBCT09MICIiIEZPUkNFKQotICAgIAotICAgICMgQWRkIGdvb2ds
ZXRlc3QgZGlyZWN0bHkgdG8gb3VyIGJ1aWxkLiBUaGlzIGRlZmluZXMKLSAgICAjIHRoZSBndGVz
dCBhbmQgZ3Rlc3RfbWFpbiB0YXJnZXRzLgotICAgIGFkZF9zdWJkaXJlY3RvcnkoJHtDTUFLRV9C
SU5BUllfRElSfS9nb29nbGV0ZXN0LXNyYwotICAgICAgICAgICAgICAgICAgICAgJHtDTUFLRV9C
SU5BUllfRElSfS9nb29nbGV0ZXN0LWJ1aWxkKQotCi0gICAgIyBUaGUgZ3Rlc3QvZ3Rlc3RfbWFp
biB0YXJnZXRzIGNhcnJ5IGhlYWRlciBzZWFyY2ggcGF0aAotICAgICMgZGVwZW5kZW5jaWVzIGF1
dG9tYXRpY2FsbHkgd2hlbiB1c2luZyBDTWFrZSAyLjguMTEgb3IKLSAgICAjIGxhdGVyLiBPdGhl
cndpc2Ugd2UgaGF2ZSB0byBhZGQgdGhlbSBoZXJlIG91cnNlbHZlcy4KLSAgICBpZiAoQ01BS0Vf
VkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjExKQotICAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygi
JHtndGVzdF9TT1VSQ0VfRElSfS9pbmNsdWRlIikKLSAgICBlbmRpZigpCi0KLSAgICAjIE5vdyBz
aW1wbHkgbGluayBhZ2FpbnN0IGd0ZXN0IG9yIGd0ZXN0X21haW4gYXMgbmVlZGVkLiBFZwotICAg
IGFkZF9leGVjdXRhYmxlKGV4YW1wbGUgZXhhbXBsZS5jcHApCi0gICAgdGFyZ2V0X2xpbmtfbGli
cmFyaWVzKGV4YW1wbGUgZ3Rlc3RfbWFpbikKLSAgICBhZGRfdGVzdChOQU1FIGV4YW1wbGVfdGVz
dCBDT01NQU5EIGV4YW1wbGUpCi0KLU5vdGUgdGhhdCB0aGlzIGFwcHJvYWNoIHJlcXVpcmVzIENN
YWtlIDIuOC4yIG9yIGxhdGVyIGR1ZSB0bwotaXRzIHVzZSBvZiB0aGUgYEV4dGVybmFsUHJvamVj
dF9BZGQoKWAgY29tbWFuZC4gVGhlIGFib3ZlCi10ZWNobmlxdWUgaXMgZGlzY3Vzc2VkIGluIG1v
cmUgZGV0YWlsIGluIAotW3RoaXMgc2VwYXJhdGUgYXJ0aWNsZV0oaHR0cDovL2NyYXNjaXQuY29t
LzIwMTUvMDcvMjUvY21ha2UtZ3Rlc3QvKQotd2hpY2ggYWxzbyBjb250YWlucyBhIGxpbmsgdG8g
YSBmdWxseSBnZW5lcmFsaXplZCBpbXBsZW1lbnRhdGlvbgotb2YgdGhlIHRlY2huaXF1ZS4KLQot
Ci0jIyMgTGVnYWN5IEJ1aWxkIFNjcmlwdHMgIyMjCi0KLUJlZm9yZSBzZXR0bGluZyBvbiBDTWFr
ZSwgd2UgaGF2ZSBiZWVuIHByb3ZpZGluZyBoYW5kLW1haW50YWluZWQgYnVpbGQKLXByb2plY3Rz
L3NjcmlwdHMgZm9yIFZpc3VhbCBTdHVkaW8sIFhjb2RlLCBhbmQgQXV0b3Rvb2xzLiAgV2hpbGUg
d2UKLWNvbnRpbnVlIHRvIHByb3ZpZGUgdGhlbSBmb3IgY29udmVuaWVuY2UsIHRoZXkgYXJlIG5v
dCBhY3RpdmVseQotbWFpbnRhaW5lZCBhbnkgbW9yZS4gIFdlIGhpZ2hseSByZWNvbW1lbmQgdGhh
dCB5b3UgZm9sbG93IHRoZQotaW5zdHJ1Y3Rpb25zIGluIHRoZSBhYm92ZSBzZWN0aW9ucyB0byBp
bnRlZ3JhdGUgR29vZ2xlIFRlc3QKLXdpdGggeW91ciBleGlzdGluZyBidWlsZCBzeXN0ZW0uCi0K
LUlmIHlvdSBzdGlsbCBuZWVkIHRvIHVzZSB0aGUgbGVnYWN5IGJ1aWxkIHNjcmlwdHMsIGhlcmUn
cyBob3c6Ci0KLVRoZSBtc3ZjXCBmb2xkZXIgY29udGFpbnMgdHdvIHNvbHV0aW9ucyB3aXRoIFZp
c3VhbCBDKysgcHJvamVjdHMuCi1PcGVuIHRoZSBgZ3Rlc3Quc2xuYCBvciBgZ3Rlc3QtbWQuc2xu
YCBmaWxlIHVzaW5nIFZpc3VhbCBTdHVkaW8sIGFuZCB5b3UKLWFyZSByZWFkeSB0byBidWlsZCBH
b29nbGUgVGVzdCB0aGUgc2FtZSB3YXkgeW91IGJ1aWxkIGFueSBWaXN1YWwKLVN0dWRpbyBwcm9q
ZWN0LiAgRmlsZXMgdGhhdCBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIC1tZCB1c2UgRExMCi12ZXJz
aW9ucyBvZiBNaWNyb3NvZnQgcnVudGltZSBsaWJyYXJpZXMgKHRoZSAvTUQgb3IgdGhlIC9NRGQg
Y29tcGlsZXIKLW9wdGlvbikuICBGaWxlcyB3aXRob3V0IHRoYXQgc3VmZml4IHVzZSBzdGF0aWMg
dmVyc2lvbnMgb2YgdGhlIHJ1bnRpbWUKLWxpYnJhcmllcyAodGhlIC9NVCBvciB0aGUgL01UZCBv
cHRpb24pLiAgUGxlYXNlIG5vdGUgdGhhdCBvbmUgbXVzdCB1c2UKLXRoZSBzYW1lIG9wdGlvbiB0
byBjb21waWxlIGJvdGggZ3Rlc3QgYW5kIHRoZSB0ZXN0IGNvZGUuICBJZiB5b3UgdXNlCi1WaXN1
YWwgU3R1ZGlvIDIwMDUgb3IgYWJvdmUsIHdlIHJlY29tbWVuZCB0aGUgLW1kIHZlcnNpb24gYXMg
L01EIGlzCi10aGUgZGVmYXVsdCBmb3IgbmV3IHByb2plY3RzIGluIHRoZXNlIHZlcnNpb25zIG9m
IFZpc3VhbCBTdHVkaW8uCi0KLU9uIE1hYyBPUyBYLCBvcGVuIHRoZSBgZ3Rlc3QueGNvZGVwcm9q
YCBpbiB0aGUgYHhjb2RlL2AgZm9sZGVyIHVzaW5nCi1YY29kZS4gIEJ1aWxkIHRoZSAiZ3Rlc3Qi
IHRhcmdldC4gIFRoZSB1bml2ZXJzYWwgYmluYXJ5IGZyYW1ld29yayB3aWxsCi1lbmQgdXAgaW4g
eW91ciBzZWxlY3RlZCBidWlsZCBkaXJlY3RvcnkgKHNlbGVjdGVkIGluIHRoZSBYY29kZQotIlBy
ZWZlcmVuY2VzLi4uIiAtPiAiQnVpbGRpbmciIHBhbmUgYW5kIGRlZmF1bHRzIHRvIHhjb2RlL2J1
aWxkKS4KLUFsdGVybmF0aXZlbHksIGF0IHRoZSBjb21tYW5kIGxpbmUsIGVudGVyOgotCi0gICAg
eGNvZGVidWlsZAotCi1UaGlzIHdpbGwgYnVpbGQgdGhlICJSZWxlYXNlIiBjb25maWd1cmF0aW9u
IG9mIGd0ZXN0LmZyYW1ld29yayBpbiB5b3VyCi1kZWZhdWx0IGJ1aWxkIGxvY2F0aW9uLiAgU2Vl
IHRoZSAieGNvZGVidWlsZCIgbWFuIHBhZ2UgZm9yIG1vcmUKLWluZm9ybWF0aW9uIGFib3V0IGJ1
aWxkaW5nIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgYnVpbGRpbmcgaW4KLWRpZmZlcmVu
dCBsb2NhdGlvbnMuCi0KLUlmIHlvdSB3aXNoIHRvIHVzZSB0aGUgR29vZ2xlIFRlc3QgWGNvZGUg
cHJvamVjdCB3aXRoIFhjb2RlIDQueCBhbmQKLWFib3ZlLCB5b3UgbmVlZCB0byBlaXRoZXI6Ci0K
LSAqIHVwZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB4Y29kZS9Db25maWcv
R2VuZXJhbC54Y29uZmlnLgotICAgQ29tbWVudCBvcHRpb25zIGBTREtST09UYCwgYE1BQ09TX0RF
UExPWU1FTlRfVEFSR0VUYCwgYW5kIGBHQ0NfVkVSU0lPTmAuIElmCi0gICB5b3UgY2hvb3NlIHRo
aXMgcm91dGUgeW91IGxvc2UgdGhlIGFiaWxpdHkgdG8gdGFyZ2V0IGVhcmxpZXIgdmVyc2lvbnMK
LSAgIG9mIE1hY09TIFguCi0gKiBJbnN0YWxsIGFuIFNESyBmb3IgYW4gZWFybGllciB2ZXJzaW9u
LiBUaGlzIGRvZXNuJ3QgYXBwZWFyIHRvIGJlCi0gICBzdXBwb3J0ZWQgYnkgQXBwbGUsIGJ1dCBo
YXMgYmVlbiByZXBvcnRlZCB0byB3b3JrCi0gICAoaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1
ZXN0aW9ucy81Mzc4NTE4KS4KLQotIyMjIFR3ZWFraW5nIEdvb2dsZSBUZXN0ICMjIwotCi1Hb29n
bGUgVGVzdCBjYW4gYmUgdXNlZCBpbiBkaXZlcnNlIGVudmlyb25tZW50cy4gIFRoZSBkZWZhdWx0
Ci1jb25maWd1cmF0aW9uIG1heSBub3Qgd29yayAob3IgbWF5IG5vdCB3b3JrIHdlbGwpIG91dCBv
ZiB0aGUgYm94IGluCi1zb21lIGVudmlyb25tZW50cy4gIEhvd2V2ZXIsIHlvdSBjYW4gZWFzaWx5
IHR3ZWFrIEdvb2dsZSBUZXN0IGJ5Ci1kZWZpbmluZyBjb250cm9sIG1hY3JvcyBvbiB0aGUgY29t
cGlsZXIgY29tbWFuZCBsaW5lLiAgR2VuZXJhbGx5LAotdGhlc2UgbWFjcm9zIGFyZSBuYW1lZCBs
aWtlIGBHVEVTVF9YWVpgIGFuZCB5b3UgZGVmaW5lIHRoZW0gdG8gZWl0aGVyIDEKLW9yIDAgdG8g
ZW5hYmxlIG9yIGRpc2FibGUgYSBjZXJ0YWluIGZlYXR1cmUuCi0KLVdlIGxpc3QgdGhlIG1vc3Qg
ZnJlcXVlbnRseSB1c2VkIG1hY3JvcyBiZWxvdy4gIEZvciBhIGNvbXBsZXRlIGxpc3QsCi1zZWUg
ZmlsZSBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKGluY2x1ZGUvZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKS4KLQotIyMjIENob29zaW5nIGEgVFIxIFR1cGxlIExpYnJh
cnkgIyMjCi0KLVNvbWUgR29vZ2xlIFRlc3QgZmVhdHVyZXMgcmVxdWlyZSB0aGUgQysrIFRlY2hu
aWNhbCBSZXBvcnQgMSAoVFIxKQotdHVwbGUgbGlicmFyeSwgd2hpY2ggaXMgbm90IHlldCBhdmFp
bGFibGUgd2l0aCBhbGwgY29tcGlsZXJzLiAgVGhlCi1nb29kIG5ld3MgaXMgdGhhdCBHb29nbGUg
VGVzdCBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIFRSMSB0dXBsZSB0aGF0J3MKLWVub3VnaCBmb3Ig
aXRzIG93biBuZWVkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGlzIHdoZW4gdGhlCi1j
b21waWxlciBkb2Vzbid0IHByb3ZpZGUgVFIxIHR1cGxlLgotCi1Vc3VhbGx5IHlvdSBkb24ndCBu
ZWVkIHRvIGNhcmUgYWJvdXQgd2hpY2ggdHVwbGUgbGlicmFyeSBHb29nbGUgVGVzdAotdXNlcy4g
IEhvd2V2ZXIsIGlmIHlvdXIgcHJvamVjdCBhbHJlYWR5IHVzZXMgVFIxIHR1cGxlLCB5b3UgbmVl
ZCB0bwotdGVsbCBHb29nbGUgVGVzdCB0byB1c2UgdGhlIHNhbWUgVFIxIHR1cGxlIGxpYnJhcnkg
dGhlIHJlc3Qgb2YgeW91cgotcHJvamVjdCB1c2VzLCBvciB0aGUgdHdvIHR1cGxlIGltcGxlbWVu
dGF0aW9ucyB3aWxsIGNsYXNoLiAgVG8gZG8KLXRoYXQsIGFkZAotCi0gICAgLURHVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRT0wCi0KLXRvIHRoZSBjb21waWxlciBmbGFncyB3aGlsZSBjb21waWxpbmcg
R29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdHMuICBJZgoteW91IHdhbnQgdG8gZm9yY2UgR29vZ2xl
IFRlc3QgdG8gdXNlIGl0cyBvd24gdHVwbGUgbGlicmFyeSwganVzdCBhZGQKLQotICAgIC1ER1RF
U1RfVVNFX09XTl9UUjFfVFVQTEU9MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgaW5zdGVhZC4K
LQotSWYgeW91IGRvbid0IHdhbnQgR29vZ2xlIFRlc3QgdG8gdXNlIHR1cGxlIGF0IGFsbCwgYWRk
Ci0KLSAgICAtREdURVNUX0hBU19UUjFfVFVQTEU9MAotCi1hbmQgYWxsIGZlYXR1cmVzIHVzaW5n
IHR1cGxlIHdpbGwgYmUgZGlzYWJsZWQuCi0KLSMjIyBNdWx0aS10aHJlYWRlZCBUZXN0cyAjIyMK
LQotR29vZ2xlIFRlc3QgaXMgdGhyZWFkLXNhZmUgd2hlcmUgdGhlIHB0aHJlYWQgbGlicmFyeSBp
cyBhdmFpbGFibGUuCi1BZnRlciBgI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiYCwgeW91IGNhbiBj
aGVjayB0aGUgYEdURVNUX0lTX1RIUkVBRFNBRkVgCi1tYWNybyB0byBzZWUgd2hldGhlciB0aGlz
IGlzIHRoZSBjYXNlICh5ZXMgaWYgdGhlIG1hY3JvIGlzIGAjZGVmaW5lZGAgdG8KLTEsIG5vIGlm
IGl0J3MgdW5kZWZpbmVkLikuCi0KLUlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgY29ycmVjdGx5IGRl
dGVjdCB3aGV0aGVyIHB0aHJlYWQgaXMgYXZhaWxhYmxlCi1pbiB5b3VyIGVudmlyb25tZW50LCB5
b3UgY2FuIGZvcmNlIGl0IHdpdGgKLQotICAgIC1ER1RFU1RfSEFTX1BUSFJFQUQ9MQotCi1vcgot
Ci0gICAgLURHVEVTVF9IQVNfUFRIUkVBRD0wCi0KLVdoZW4gR29vZ2xlIFRlc3QgdXNlcyBwdGhy
ZWFkLCB5b3UgbWF5IG5lZWQgdG8gYWRkIGZsYWdzIHRvIHlvdXIKLWNvbXBpbGVyIGFuZC9vciBs
aW5rZXIgdG8gc2VsZWN0IHRoZSBwdGhyZWFkIGxpYnJhcnksIG9yIHlvdSdsbCBnZXQKLWxpbmsg
ZXJyb3JzLiAgSWYgeW91IHVzZSB0aGUgQ01ha2Ugc2NyaXB0IG9yIHRoZSBkZXByZWNhdGVkIEF1
dG90b29scwotc2NyaXB0LCB0aGlzIGlzIHRha2VuIGNhcmUgb2YgZm9yIHlvdS4gIElmIHlvdSB1
c2UgeW91ciBvd24gYnVpbGQKLXNjcmlwdCwgeW91J2xsIG5lZWQgdG8gcmVhZCB5b3VyIGNvbXBp
bGVyIGFuZCBsaW5rZXIncyBtYW51YWwgdG8KLWZpZ3VyZSBvdXQgd2hhdCBmbGFncyB0byBhZGQu
Ci0KLSMjIyBBcyBhIFNoYXJlZCBMaWJyYXJ5IChETEwpICMjIwotCi1Hb29nbGUgVGVzdCBpcyBj
b21wYWN0LCBzbyBtb3N0IHVzZXJzIGNhbiBidWlsZCBhbmQgbGluayBpdCBhcyBhCi1zdGF0aWMg
bGlicmFyeSBmb3IgdGhlIHNpbXBsaWNpdHkuICBZb3UgY2FuIGNob29zZSB0byB1c2UgR29vZ2xl
IFRlc3QKLWFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzIGEgRExMIG9uIFdpbmRvd3MpIGlm
IHlvdSBwcmVmZXIuCi0KLVRvIGNvbXBpbGUgKmd0ZXN0KiBhcyBhIHNoYXJlZCBsaWJyYXJ5LCBh
ZGQKLQotICAgIC1ER1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBp
bGVyIGZsYWdzLiAgWW91J2xsIGFsc28gbmVlZCB0byB0ZWxsIHRoZSBsaW5rZXIgdG8gcHJvZHVj
ZQotYSBzaGFyZWQgbGlicmFyeSBpbnN0ZWFkIC0gY29uc3VsdCB5b3VyIGxpbmtlcidzIG1hbnVh
bCBmb3IgaG93IHRvIGRvCi1pdC4KLQotVG8gY29tcGlsZSB5b3VyICp0ZXN0cyogdGhhdCB1c2Ug
dGhlIGd0ZXN0IHNoYXJlZCBsaWJyYXJ5LCBhZGQKLQotICAgIC1ER1RFU1RfTElOS0VEX0FTX1NI
QVJFRF9MSUJSQVJZPTEKLQotdG8gdGhlIGNvbXBpbGVyIGZsYWdzLgotCi1Ob3RlOiB3aGlsZSB0
aGUgYWJvdmUgc3RlcHMgYXJlbid0IHRlY2huaWNhbGx5IG5lY2Vzc2FyeSB0b2RheSB3aGVuCi11
c2luZyBzb21lIGNvbXBpbGVycyAoZS5nLiBHQ0MpLCB0aGV5IG1heSBiZWNvbWUgbmVjZXNzYXJ5
IGluIHRoZQotZnV0dXJlLCBpZiB3ZSBkZWNpZGUgdG8gaW1wcm92ZSB0aGUgc3BlZWQgb2YgbG9h
ZGluZyB0aGUgbGlicmFyeSAoc2VlCi08aHR0cDovL2djYy5nbnUub3JnL3dpa2kvVmlzaWJpbGl0
eT4gZm9yIGRldGFpbHMpLiAgVGhlcmVmb3JlIHlvdSBhcmUKLXJlY29tbWVuZGVkIHRvIGFsd2F5
cyBhZGQgdGhlIGFib3ZlIGZsYWdzIHdoZW4gdXNpbmcgR29vZ2xlIFRlc3QgYXMgYQotc2hhcmVk
IGxpYnJhcnkuICBPdGhlcndpc2UgYSBmdXR1cmUgcmVsZWFzZSBvZiBHb29nbGUgVGVzdCBtYXkg
YnJlYWsKLXlvdXIgYnVpbGQgc2NyaXB0LgotCi0jIyMgQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFz
aGVzICMjIwotCi1JbiBDKyssIG1hY3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZv
cmUgdHdvIGxpYnJhcmllcyB0aGF0Ci1ib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5h
bWUgd2lsbCBjbGFzaCBpZiB5b3UgYCNpbmNsdWRlYCBib3RoCi1kZWZpbml0aW9ucy4gIEluIGNh
c2UgYSBHb29nbGUgVGVzdCBtYWNybyBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFyeSwgeW91
IGNhbiBmb3JjZSBHb29nbGUgVGVzdCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQot
Y29uZmxpY3QuCi0KLVNwZWNpZmljYWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBv
dGhlciBjb2RlIGRlZmluZSBtYWNybwotRk9PLCB5b3UgY2FuIGFkZAotCi0gICAgLURHVEVTVF9E
T05UX0RFRklORV9GT089MQotCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUg
VGVzdCB0byBjaGFuZ2UgdGhlIG1hY3JvJ3MgbmFtZQotZnJvbSBgRk9PYCB0byBgR1RFU1RfRk9P
YC4gIEN1cnJlbnRseSBgRk9PYCBjYW4gYmUgYEZBSUxgLCBgU1VDQ0VFRGAsCi1vciBgVEVTVGAu
ICBGb3IgZXhhbXBsZSwgd2l0aCBgLURHVEVTVF9ET05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwK
LW5lZWQgdG8gd3JpdGUKLQotICAgIEdURVNUX1RFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4u
LiB9Ci0KLWluc3RlYWQgb2YKLQotICAgIFRFU1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9
Ci0KLWluIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCi0KLSMjIERldmVsb3BpbmcgR29vZ2xlIFRl
c3QgIyMKLQotVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBob3cgdG8gbWFrZSB5b3VyIG93biBjaGFu
Z2VzIHRvIEdvb2dsZSBUZXN0LgotCi0jIyMgVGVzdGluZyBHb29nbGUgVGVzdCBJdHNlbGYgIyMj
Ci0KLVRvIG1ha2Ugc3VyZSB5b3VyIGNoYW5nZXMgd29yayBhcyBpbnRlbmRlZCBhbmQgZG9uJ3Qg
YnJlYWsgZXhpc3RpbmcKLWZ1bmN0aW9uYWxpdHksIHlvdSdsbCB3YW50IHRvIGNvbXBpbGUgYW5k
IHJ1biBHb29nbGUgVGVzdCdzIG93biB0ZXN0cy4KLUZvciB0aGF0IHlvdSBjYW4gdXNlIENNYWtl
OgotCi0gICAgbWtkaXIgbXlidWlsZAotICAgIGNkIG15YnVpbGQKLSAgICBjbWFrZSAtRGd0ZXN0
X2J1aWxkX3Rlc3RzPU9OICR7R1RFU1RfRElSfQotCi1NYWtlIHN1cmUgeW91IGhhdmUgUHl0aG9u
IGluc3RhbGxlZCwgYXMgc29tZSBvZiBHb29nbGUgVGVzdCdzIHRlc3RzCi1hcmUgd3JpdHRlbiBp
biBQeXRob24uICBJZiB0aGUgY21ha2UgY29tbWFuZCBjb21wbGFpbnMgYWJvdXQgbm90IGJlaW5n
Ci1hYmxlIHRvIGZpbmQgUHl0aG9uIChgQ291bGQgTk9UIGZpbmQgUHl0aG9uSW50ZXJwIChtaXNz
aW5nOgotUFlUSE9OX0VYRUNVVEFCTEUpYCksIHRyeSB0ZWxsaW5nIGl0IGV4cGxpY2l0bHkgd2hl
cmUgeW91ciBQeXRob24KLWV4ZWN1dGFibGUgY2FuIGJlIGZvdW5kOgotCi0gICAgY21ha2UgLURQ
WVRIT05fRVhFQ1VUQUJMRT1wYXRoL3RvL3B5dGhvbiAtRGd0ZXN0X2J1aWxkX3Rlc3RzPU9OICR7
R1RFU1RfRElSfQotCi1OZXh0LCB5b3UgY2FuIGJ1aWxkIEdvb2dsZSBUZXN0IGFuZCBhbGwgb2Yg
aXRzIG93biB0ZXN0cy4gIE9uIFwqbml4LAotdGhpcyBpcyB1c3VhbGx5IGRvbmUgYnkgJ21ha2Un
LiAgVG8gcnVuIHRoZSB0ZXN0cywgZG8KLQotICAgIG1ha2UgdGVzdAotCi1BbGwgdGVzdHMgc2hv
dWxkIHBhc3MuCi0KLU5vcm1hbGx5IHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHJlZ2Vu
ZXJhdGluZyB0aGUgc291cmNlIGZpbGVzLAotdW5sZXNzIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGVt
LiAgSW4gdGhhdCBjYXNlLCB5b3Ugc2hvdWxkIG1vZGlmeSB0aGUKLWNvcnJlc3BvbmRpbmcgLnB1
bXAgZmlsZXMgaW5zdGVhZCBhbmQgcnVuIHRoZSBwdW1wLnB5IFB5dGhvbiBzY3JpcHQgdG8KLXJl
Z2VuZXJhdGUgdGhlbS4gIFlvdSBjYW4gZmluZCBwdW1wLnB5IGluIHRoZSBbc2NyaXB0cy9dKHNj
cmlwdHMvKSBkaXJlY3RvcnkuCi1SZWFkIHRoZSBbUHVtcCBtYW51YWxdKGRvY3MvUHVtcE1hbnVh
bC5tZCkgZm9yIGhvdyB0byB1c2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jbWFrZS9p
bnRlcm5hbF91dGlscy5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NtYWtlL2ludGVybmFsX3V0aWxzLmNt
YWtlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODc4ZGMxYTk1OTIuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jbWFrZS9pbnRlcm5hbF91dGlscy5jbWFrZQorKysgL2Rl
di9udWxsCkBAIC0xLDI1NiArMCwwIEBACi0jIERlZmluZXMgZnVuY3Rpb25zIGFuZCBtYWNyb3Mg
dXNlZnVsIGZvciBidWlsZGluZyBHb29nbGUgVGVzdCBhbmQKLSMgR29vZ2xlIE1vY2suCi0jCi0j
IE5vdGU6Ci0jCi0jIC0gVGhpcyBmaWxlIHdpbGwgYmUgcnVuIHR3aWNlIHdoZW4gYnVpbGRpbmcg
R29vZ2xlIE1vY2sgKG9uY2UgdmlhCi0jICAgR29vZ2xlIFRlc3QncyBDTWFrZUxpc3RzLnR4dCwg
YW5kIG9uY2UgdmlhIEdvb2dsZSBNb2NrJ3MpLgotIyAgIFRoZXJlZm9yZSBpdCBzaG91bGRuJ3Qg
aGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG90aGVyIHRoYW4gZGVmaW5pbmcKLSMgICB0aGUgZnVuY3Rp
b25zIGFuZCBtYWNyb3MuCi0jCi0jIC0gVGhlIGZ1bmN0aW9ucy9tYWNyb3MgZGVmaW5lZCBpbiB0
aGlzIGZpbGUgbWF5IGRlcGVuZCBvbiBHb29nbGUKLSMgICBUZXN0IGFuZCBHb29nbGUgTW9jaydz
IG9wdGlvbigpIGRlZmluaXRpb25zLCBhbmQgdGh1cyBtdXN0IGJlCi0jICAgY2FsbGVkICphZnRl
ciogdGhlIG9wdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQuCi0KLSMgVHdlYWtzIENNYWtlJ3MgZGVm
YXVsdCBjb21waWxlci9saW5rZXIgc2V0dGluZ3MgdG8gc3VpdCBHb29nbGUgVGVzdCdzIG5lZWRz
LgotIwotIyBUaGlzIG11c3QgYmUgYSBtYWNybygpLCBhcyBpbnNpZGUgYSBmdW5jdGlvbiBzdHJp
bmcoKSBjYW4gb25seQotIyB1cGRhdGUgdmFyaWFibGVzIGluIHRoZSBmdW5jdGlvbiBzY29wZS4K
LW1hY3JvKGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXykKLSAgaWYgKE1TVkMpCi0gICAg
IyBGb3IgTVNWQywgQ01ha2Ugc2V0cyBjZXJ0YWluIGZsYWdzIHRvIGRlZmF1bHRzIHdlIHdhbnQg
dG8gb3ZlcnJpZGUuCi0gICAgIyBUaGlzIHJlcGxhY2VtZW50IGNvZGUgaXMgdGFrZW4gZnJvbSBz
YW1wbGUgaW4gdGhlIENNYWtlIFdpa2kgYXQKLSAgICAjIGh0dHA6Ly93d3cuY21ha2Uub3JnL1dp
a2kvQ01ha2VfRkFRI0R5bmFtaWNfUmVwbGFjZS4KLSAgICBmb3JlYWNoIChmbGFnX3ZhcgotICAg
ICAgICAgICAgIENNQUtFX0NYWF9GTEFHUyBDTUFLRV9DWFhfRkxBR1NfREVCVUcgQ01BS0VfQ1hY
X0ZMQUdTX1JFTEVBU0UKLSAgICAgICAgICAgICBDTUFLRV9DWFhfRkxBR1NfTUlOU0laRVJFTCBD
TUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8pCi0gICAgICBpZiAoTk9UIEJVSUxEX1NIQVJF
RF9MSUJTIEFORCBOT1QgZ3Rlc3RfZm9yY2Vfc2hhcmVkX2NydCkKLSAgICAgICAgIyBXaGVuIEdv
b2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnksIGl0IHNob3VsZCBhbHNvIHVz
ZQotICAgICAgICAjIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4gIE90aGVyd2lzZSwgaXQgbWF5
IGVuZCB1cCB3aXRoIG11bHRpcGxlCi0gICAgICAgICMgY29waWVzIG9mIHJ1bnRpbWUgbGlicmFy
eSBkYXRhIGluIGRpZmZlcmVudCBtb2R1bGVzLCByZXN1bHRpbmcgaW4KLSAgICAgICAgIyBoYXJk
LXRvLWZpbmQgY3Jhc2hlcy4gV2hlbiBpdCBpcyBidWlsdCBhcyBhIHN0YXRpYyBsaWJyYXJ5LCBp
dCBpcwotICAgICAgICAjIHByZWZlcmFibGUgdG8gdXNlIENSVCBhcyBzdGF0aWMgbGlicmFyaWVz
LCBhcyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkKLSAgICAgICAgIyBvbiBDUlQgRExMcyBiZWluZyBh
dmFpbGFibGUuIENNYWtlIGFsd2F5cyBkZWZhdWx0cyB0byB1c2luZyBzaGFyZWQKLSAgICAgICAg
IyBDUlQgbGlicmFyaWVzLCBzbyB3ZSBvdmVycmlkZSB0aGF0IGRlZmF1bHQgaGVyZS4KLSAgICAg
ICAgc3RyaW5nKFJFUExBQ0UgIi9NRCIgIi1NVCIgJHtmbGFnX3Zhcn0gIiR7JHtmbGFnX3Zhcn19
IikKLSAgICAgIGVuZGlmKCkKLQotICAgICAgIyBXZSBwcmVmZXIgbW9yZSBzdHJpY3Qgd2Fybmlu
ZyBjaGVja2luZyBmb3IgYnVpbGRpbmcgR29vZ2xlIFRlc3QuCi0gICAgICAjIFJlcGxhY2VzIC9X
MyB3aXRoIC9XNCBpbiBkZWZhdWx0cy4KLSAgICAgIHN0cmluZyhSRVBMQUNFICIvVzMiICIvVzQi
ICR7ZmxhZ192YXJ9ICIkeyR7ZmxhZ192YXJ9fSIpCi0gICAgZW5kZm9yZWFjaCgpCi0gIGVuZGlm
KCkKLWVuZG1hY3JvKCkKLQotIyBEZWZpbmVzIHRoZSBjb21waWxlci9saW5rZXIgZmxhZ3MgdXNl
ZCB0byBidWlsZCBHb29nbGUgVGVzdCBhbmQKLSMgR29vZ2xlIE1vY2suICBZb3UgY2FuIHR3ZWFr
IHRoZXNlIGRlZmluaXRpb25zIHRvIHN1aXQgeW91ciBuZWVkLiAgQQotIyB2YXJpYWJsZSdzIHZh
bHVlIGlzIGVtcHR5IGJlZm9yZSBpdCdzIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8uCi1tYWNybyhj
b25maWdfY29tcGlsZXJfYW5kX2xpbmtlcikKLSAgIyBOb3RlOiBwdGhyZWFkcyBvbiBNaW5HVyBp
cyBub3Qgc3VwcG9ydGVkLCBldmVuIGlmIGF2YWlsYWJsZQotICAjIGluc3RlYWQsIHdlIHVzZSB3
aW5kb3dzIHRocmVhZGluZyBwcmltaXRpdmVzCi0gIGlmIChOT1QgZ3Rlc3RfZGlzYWJsZV9wdGhy
ZWFkcyBBTkQgTk9UIE1JTkdXKQotICAgICMgRGVmaW5lcyBDTUFLRV9VU0VfUFRIUkVBRFNfSU5J
VCBhbmQgQ01BS0VfVEhSRUFEX0xJQlNfSU5JVC4KLSAgICBmaW5kX3BhY2thZ2UoVGhyZWFkcykK
LSAgZW5kaWYoKQotCi0gIGZpeF9kZWZhdWx0X2NvbXBpbGVyX3NldHRpbmdzXygpCi0gIGlmIChN
U1ZDKQotICAgICMgTmV3bGluZXMgaW5zaWRlIGZsYWdzIHZhcmlhYmxlcyBicmVhayBDTWFrZSdz
IE5NYWtlIGdlbmVyYXRvci4KLSAgICAjIFRPRE8odmxhZGxAZ29vZ2xlLmNvbSk6IEFkZCAtUlRD
cyBhbmQgLVJUQ3UgdG8gZGVidWcgYnVpbGRzLgotICAgIHNldChjeHhfYmFzZV9mbGFncyAiLUdT
IC1XNCAtV1ggLXdkNDI1MSAtd2Q0Mjc1IC1ub2xvZ28gLUogLVppIikKLSAgICBpZiAoTVNWQ19W
RVJTSU9OIExFU1MgMTQwMCkgICMgMTQwMCBpcyBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAgICAgICMg
U3VwcHJlc3Mgc3B1cmlvdXMgd2FybmluZ3MgTVNWQyA3LjEgc29tZXRpbWVzIGlzc3Vlcy4KLSAg
ICAgICMgRm9yY2luZyB2YWx1ZSB0byBib29sLgotICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIk
e2N4eF9iYXNlX2ZsYWdzfSAtd2Q0ODAwIikKLSAgICAgICMgQ29weSBjb25zdHJ1Y3RvciBhbmQg
YXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkLgotICAgICAgc2V0KGN4
eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdzfSAtd2Q0NTExIC13ZDQ1MTIiKQotICAgICAg
IyBDb21wYXRpYmlsaXR5IHdhcm5pbmdzIG5vdCBhcHBsaWNhYmxlIHRvIEdvb2dsZSBUZXN0Lgot
ICAgICAgIyBSZXNvbHZlZCBvdmVybG9hZCB3YXMgZm91bmQgYnkgYXJndW1lbnQtZGVwZW5kZW50
IGxvb2t1cC4KLSAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdk
NDY3NSIpCi0gICAgZW5kaWYoKQotICAgIGlmIChNU1ZDX1ZFUlNJT04gTEVTUyAxNTAwKSAgIyAx
NTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAwOAotICAgICAgIyBDb25kaXRpb25hbCBleHByZXNzaW9u
IGlzIGNvbnN0YW50LgotICAgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoIC9XNCwgd2UgZ2V0IHNl
dmVyYWwgaW5zdGFuY2VzIG9mIEM0MTI3Ci0gICAgICAjIChDb25kaXRpb25hbCBleHByZXNzaW9u
IGlzIGNvbnN0YW50KS4gSW4gb3VyIGNvZGUsIHdlIGRpc2FibGUgdGhhdAotICAgICAgIyB3YXJu
aW5nIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLiBIb3dldmVyLCBvbiBWaXN1YWwgU3R1ZGlvIDIw
MDUsCi0gICAgICAjIHRoZSB3YXJuaW5nIGZpcmVzIG9uIHN0ZDo6bGlzdC4gVGhlcmVmb3JlIG9u
IHRoYXQgY29tcGlsZXIgYW5kIGVhcmxpZXIsCi0gICAgICAjIHdlIGRpc2FibGUgdGhlIHdhcm5p
bmcgcHJvamVjdC13aWRlLgotICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2Zs
YWdzfSAtd2Q0MTI3IikKLSAgICBlbmRpZigpCi0gICAgaWYgKE5PVCAoTVNWQ19WRVJTSU9OIExF
U1MgMTcwMCkpICAjIDE3MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEyLgotICAgICAgIyBTdXBwcmVz
cyAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBvbiBWUyAyMDEyIGFuZCBsYXRlci4KLSAgICAg
ICMgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMjMyNjY5IGV4cGxhaW5zIHRo
ZSBpc3N1ZS4KLSAgICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLXdk
NDcwMiIpCi0gICAgZW5kaWYoKQotICAgIGlmIChOT1QgKE1TVkNfVkVSU0lPTiBHUkVBVEVSIDE5
MDApKSAgIyAxOTAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxNQotICAgICAgIyBCaWdPYmogcmVxdWly
ZWQgZm9yIHRlc3RzLgotICAgICAgc2V0KGN4eF9iYXNlX2ZsYWdzICIke2N4eF9iYXNlX2ZsYWdz
fSAtYmlnb2JqIikKLSAgICBlbmRpZigpCi0KLSAgICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4
X2Jhc2VfZmxhZ3N9IC1EX1VOSUNPREUgLURVTklDT0RFIC1EV0lOMzIgLURfV0lOMzIiKQotICAg
IHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURTVFJJQ1QgLURXSU4zMl9M
RUFOX0FORF9NRUFOIikKLSAgICBzZXQoY3h4X2V4Y2VwdGlvbl9mbGFncyAiLUVIc2MgLURfSEFT
X0VYQ0VQVElPTlM9MSIpCi0gICAgc2V0KGN4eF9ub19leGNlcHRpb25fZmxhZ3MgIi1EX0hBU19F
WENFUFRJT05TPTAiKQotICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLUdSLSIpCi0gIGVsc2Vp
ZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQotICAgIHNldChjeHhfYmFzZV9mbGFncyAiLVdh
bGwgLVdzaGFkb3ciKQotICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmV4Y2VwdGlvbnMi
KQotICAgIHNldChjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzICItZm5vLWV4Y2VwdGlvbnMiKQotICAg
ICMgVW50aWwgdmVyc2lvbiA0LjMuMiwgR0NDIGRvZXNuJ3QgZGVmaW5lIGEgbWFjcm8gdG8gaW5k
aWNhdGUKLSAgICAjIHdoZXRoZXIgUlRUSSBpcyBlbmFibGVkLiAgVGhlcmVmb3JlIHdlIGRlZmlu
ZSBHVEVTVF9IQVNfUlRUSQotICAgICMgZXhwbGljaXRseS4KLSAgICBzZXQoY3h4X25vX3J0dGlf
ZmxhZ3MgIi1mbm8tcnR0aSAtREdURVNUX0hBU19SVFRJPTAiKQotICAgIHNldChjeHhfc3RyaWN0
X2ZsYWdzCi0gICAgICAiLVdleHRyYSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1taXNzaW5n
LWZpZWxkLWluaXRpYWxpemVycyIpCi0gIGVsc2VpZiAoQ01BS0VfQ1hYX0NPTVBJTEVSX0lEIFNU
UkVRVUFMICJTdW5Qcm8iKQotICAgIHNldChjeHhfZXhjZXB0aW9uX2ZsYWdzICItZmVhdHVyZXM9
ZXhjZXB0IikKLSAgICAjIFN1biBQcm8gZG9lc24ndCBwcm92aWRlIG1hY3JvcyB0byBpbmRpY2F0
ZSB3aGV0aGVyIGV4Y2VwdGlvbnMgYW5kCi0gICAgIyBSVFRJIGFyZSBlbmFibGVkLCBzbyB3ZSBk
ZWZpbmUgR1RFU1RfSEFTXyogZXhwbGljaXRseS4KLSAgICBzZXQoY3h4X25vX2V4Y2VwdGlvbl9m
bGFncyAiLWZlYXR1cmVzPW5vJWV4Y2VwdCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQotICAg
IHNldChjeHhfbm9fcnR0aV9mbGFncyAiLWZlYXR1cmVzPW5vJXJ0dGkgLURHVEVTVF9IQVNfUlRU
ST0wIikKLSAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlZpc3VhbEFn
ZSIgT1IKLSAgICAgIENNQUtFX0NYWF9DT01QSUxFUl9JRCBTVFJFUVVBTCAiWEwiKQotICAgICMg
Q01ha2UgMi44IGNoYW5nZXMgVmlzdWFsIEFnZSdzIGNvbXBpbGVyIElEIHRvICJYTCIuCi0gICAg
c2V0KGN4eF9leGNlcHRpb25fZmxhZ3MgIi1xZWgiKQotICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICItcW5vZWgiKQotICAgICMgVW50aWwgdmVyc2lvbiA5LjAsIFZpc3VhbCBBZ2UgZG9l
c24ndCBkZWZpbmUgYSBtYWNybyB0byBpbmRpY2F0ZQotICAgICMgd2hldGhlciBSVFRJIGlzIGVu
YWJsZWQuICBUaGVyZWZvcmUgd2UgZGVmaW5lIEdURVNUX0hBU19SVFRJCi0gICAgIyBleHBsaWNp
dGx5LgotICAgIHNldChjeHhfbm9fcnR0aV9mbGFncyAiLXFub3J0dGkgLURHVEVTVF9IQVNfUlRU
ST0wIikKLSAgZWxzZWlmIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkhQIikKLSAg
ICBzZXQoY3h4X2Jhc2VfZmxhZ3MgIi1BQSAtbXQiKQotICAgIHNldChjeHhfZXhjZXB0aW9uX2Zs
YWdzICItREdURVNUX0hBU19FWENFUFRJT05TPTEiKQotICAgIHNldChjeHhfbm9fZXhjZXB0aW9u
X2ZsYWdzICIrbm9laCAtREdURVNUX0hBU19FWENFUFRJT05TPTAiKQotICAgICMgUlRUSSBjYW4g
bm90IGJlIGRpc2FibGVkIGluIEhQIGFDQyBjb21waWxlci4KLSAgICBzZXQoY3h4X25vX3J0dGlf
ZmxhZ3MgIiIpCi0gIGVuZGlmKCkKLQotICBpZiAoQ01BS0VfVVNFX1BUSFJFQURTX0lOSVQpICAj
IFRoZSBwdGhyZWFkcyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSBhbmQgYWxsb3dlZC4KLSAgICBzZXQo
Y3h4X2Jhc2VfZmxhZ3MgIiR7Y3h4X2Jhc2VfZmxhZ3N9IC1ER1RFU1RfSEFTX1BUSFJFQUQ9MSIp
Ci0gIGVsc2UoKQotICAgIHNldChjeHhfYmFzZV9mbGFncyAiJHtjeHhfYmFzZV9mbGFnc30gLURH
VEVTVF9IQVNfUFRIUkVBRD0wIikKLSAgZW5kaWYoKQotCi0gICMgRm9yIGJ1aWxkaW5nIGd0ZXN0
J3Mgb3duIHRlc3RzIGFuZCBzYW1wbGVzLgotICBzZXQoY3h4X2V4Y2VwdGlvbiAiJHtDTUFLRV9D
WFhfRkxBR1N9ICR7Y3h4X2Jhc2VfZmxhZ3N9ICR7Y3h4X2V4Y2VwdGlvbl9mbGFnc30iKQotICBz
ZXQoY3h4X25vX2V4Y2VwdGlvbgotICAgICIke0NNQUtFX0NYWF9GTEFHU30gJHtjeHhfYmFzZV9m
bGFnc30gJHtjeHhfbm9fZXhjZXB0aW9uX2ZsYWdzfSIpCi0gIHNldChjeHhfZGVmYXVsdCAiJHtj
eHhfZXhjZXB0aW9ufSIpCi0gIHNldChjeHhfbm9fcnR0aSAiJHtjeHhfZGVmYXVsdH0gJHtjeHhf
bm9fcnR0aV9mbGFnc30iKQotICBzZXQoY3h4X3VzZV9vd25fdHVwbGUgIiR7Y3h4X2RlZmF1bHR9
IC1ER1RFU1RfVVNFX09XTl9UUjFfVFVQTEU9MSIpCi0KLSAgIyBGb3IgYnVpbGRpbmcgdGhlIGd0
ZXN0IGxpYnJhcmllcy4KLSAgc2V0KGN4eF9zdHJpY3QgIiR7Y3h4X2RlZmF1bHR9ICR7Y3h4X3N0
cmljdF9mbGFnc30iKQotZW5kbWFjcm8oKQotCi0jIERlZmluZXMgdGhlIGd0ZXN0ICYgZ3Rlc3Rf
bWFpbiBsaWJyYXJpZXMuICBVc2VyIHRlc3RzIHNob3VsZCBsaW5rCi0jIHdpdGggb25lIG9mIHRo
ZW0uCi1mdW5jdGlvbihjeHhfbGlicmFyeV93aXRoX3R5cGUgbmFtZSB0eXBlIGN4eF9mbGFncykK
LSAgIyB0eXBlIGNhbiBiZSBlaXRoZXIgU1RBVElDIG9yIFNIQVJFRCB0byBkZW5vdGUgYSBzdGF0
aWMgb3Igc2hhcmVkIGxpYnJhcnkuCi0gICMgQVJHTiByZWZlcnMgdG8gYWRkaXRpb25hbCBhcmd1
bWVudHMgYWZ0ZXIgJ2N4eF9mbGFncycuCi0gIGFkZF9saWJyYXJ5KCR7bmFtZX0gJHt0eXBlfSAk
e0FSR059KQotICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQotICAgIFBST1BFUlRJRVMK
LSAgICBDT01QSUxFX0ZMQUdTICIke2N4eF9mbGFnc30iKQotICBpZiAoQlVJTERfU0hBUkVEX0xJ
QlMgT1IgdHlwZSBTVFJFUVVBTCAiU0hBUkVEIikKLSAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo
JHtuYW1lfQotICAgICAgUFJPUEVSVElFUwotICAgICAgQ09NUElMRV9ERUZJTklUSU9OUyAiR1RF
U1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZPTEiKQotICBlbmRpZigpCi0gIGlmIChDTUFLRV9VU0Vf
UFRIUkVBRFNfSU5JVCkKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtuYW1lfSAke0NNQUtF
X1RIUkVBRF9MSUJTX0lOSVR9KQotICBlbmRpZigpCi1lbmRmdW5jdGlvbigpCi0KLSMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwotIwotIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBidWlsZCB0YXJnZXRz
LgotCi1mdW5jdGlvbihjeHhfc2hhcmVkX2xpYnJhcnkgbmFtZSBjeHhfZmxhZ3MpCi0gIGN4eF9s
aWJyYXJ5X3dpdGhfdHlwZSgke25hbWV9IFNIQVJFRCAiJHtjeHhfZmxhZ3N9IiAke0FSR059KQot
ZW5kZnVuY3Rpb24oKQotCi1mdW5jdGlvbihjeHhfbGlicmFyeSBuYW1lIGN4eF9mbGFncykKLSAg
Y3h4X2xpYnJhcnlfd2l0aF90eXBlKCR7bmFtZX0gIiIgIiR7Y3h4X2ZsYWdzfSIgJHtBUkdOfSkK
LWVuZGZ1bmN0aW9uKCkKLQotIyBjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzKG5hbWUgY3h4X2Zs
YWdzIGxpYnMgc3Jjcy4uLikKLSMKLSMgY3JlYXRlcyBhIG5hbWVkIEMrKyBleGVjdXRhYmxlIHRo
YXQgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gbGlicmFyaWVzIGFuZAotIyBpcyBidWlsdCBmcm9tIHRo
ZSBnaXZlbiBzb3VyY2UgZmlsZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCi1mdW5j
dGlvbihjeHhfZXhlY3V0YWJsZV93aXRoX2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCi0gIGFk
ZF9leGVjdXRhYmxlKCR7bmFtZX0gJHtBUkdOfSkKLSAgaWYgKGN4eF9mbGFncykKLSAgICBzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMoJHtuYW1lfQotICAgICAgUFJPUEVSVElFUwotICAgICAgQ09NUElM
RV9GTEFHUyAiJHtjeHhfZmxhZ3N9IikKLSAgZW5kaWYoKQotICBpZiAoQlVJTERfU0hBUkVEX0xJ
QlMpCi0gICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7bmFtZX0KLSAgICAgIFBST1BFUlRJRVMK
LSAgICAgIENPTVBJTEVfREVGSU5JVElPTlMgIkdURVNUX0xJTktFRF9BU19TSEFSRURfTElCUkFS
WT0xIikKLSAgZW5kaWYoKQotICAjIFRvIHN1cHBvcnQgbWl4aW5nIGxpbmtpbmcgaW4gc3RhdGlj
IGFuZCBkeW5hbWljIGxpYnJhcmllcywgbGluayBlYWNoCi0gICMgbGlicmFyeSBpbiB3aXRoIGFu
IGV4dHJhIGNhbGwgdG8gdGFyZ2V0X2xpbmtfbGlicmFyaWVzLgotICBmb3JlYWNoIChsaWIgIiR7
bGlic30iKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke25hbWV9ICR7bGlifSkKLSAgZW5k
Zm9yZWFjaCgpCi1lbmRmdW5jdGlvbigpCi0KLSMgY3h4X2V4ZWN1dGFibGUobmFtZSBkaXIgbGli
IHNyY3MuLi4pCi0jCi0jIGNyZWF0ZXMgYSBuYW1lZCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAotIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMu
ICBkaXIvbmFtZS5jYyBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluCi0jIHRoZSBzb3VyY2UgZmls
ZSBsaXN0LgotZnVuY3Rpb24oY3h4X2V4ZWN1dGFibGUgbmFtZSBkaXIgbGlicykKLSAgY3h4X2V4
ZWN1dGFibGVfd2l0aF9mbGFncygKLSAgICAke25hbWV9ICIke2N4eF9kZWZhdWx0fSIgIiR7bGli
c30iICIke2Rpcn0vJHtuYW1lfS5jYyIgJHtBUkdOfSkKLWVuZGZ1bmN0aW9uKCkKLQotIyBTZXRz
IFBZVEhPTklOVEVSUF9GT1VORCBhbmQgUFlUSE9OX0VYRUNVVEFCTEUuCi1maW5kX3BhY2thZ2Uo
UHl0aG9uSW50ZXJwKQotCi0jIGN4eF90ZXN0X3dpdGhfZmxhZ3MobmFtZSBjeHhfZmxhZ3MgbGli
cyBzcmNzLi4uKQotIwotIyBjcmVhdGVzIGEgbmFtZWQgQysrIHRlc3QgdGhhdCBkZXBlbmRzIG9u
IHRoZSBnaXZlbiBsaWJzIGFuZCBpcyBidWlsdAotIyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmls
ZXMgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIgZmxhZ3MuCi1mdW5jdGlvbihjeHhfdGVzdF93aXRo
X2ZsYWdzIG5hbWUgY3h4X2ZsYWdzIGxpYnMpCi0gIGN4eF9leGVjdXRhYmxlX3dpdGhfZmxhZ3Mo
JHtuYW1lfSAiJHtjeHhfZmxhZ3N9IiAiJHtsaWJzfSIgJHtBUkdOfSkKLSAgYWRkX3Rlc3QoJHtu
YW1lfSAke25hbWV9KQotZW5kZnVuY3Rpb24oKQotCi0jIGN4eF90ZXN0KG5hbWUgbGlicyBzcmNz
Li4uKQotIwotIyBjcmVhdGVzIGEgbmFtZWQgdGVzdCB0YXJnZXQgdGhhdCBkZXBlbmRzIG9uIHRo
ZSBnaXZlbiBsaWJzIGFuZCBpcwotIyBidWlsdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgZmlsZXMu
ICBVbmxpa2UgY3h4X3Rlc3Rfd2l0aF9mbGFncywKLSMgdGVzdC9uYW1lLmNjIGlzIGFscmVhZHkg
aW1wbGljaXRseSBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGZpbGUgbGlzdC4KLWZ1bmN0aW9uKGN4
eF90ZXN0IG5hbWUgbGlicykKLSAgY3h4X3Rlc3Rfd2l0aF9mbGFncygiJHtuYW1lfSIgIiR7Y3h4
X2RlZmF1bHR9IiAiJHtsaWJzfSIKLSAgICAidGVzdC8ke25hbWV9LmNjIiAke0FSR059KQotZW5k
ZnVuY3Rpb24oKQotCi0jIHB5X3Rlc3QobmFtZSkKLSMKLSMgY3JlYXRlcyBhIFB5dGhvbiB0ZXN0
IHdpdGggdGhlIGdpdmVuIG5hbWUgd2hvc2UgbWFpbiBtb2R1bGUgaXMgaW4KLSMgdGVzdC9uYW1l
LnB5LiAgSXQgZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgaW5zdGFsbGVkLgotZnVuY3Rp
b24ocHlfdGVzdCBuYW1lKQotICAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBQeXRob24gdGVzdHMg
b24gTGludXggeWV0IGFzIHRoZXkgY29uc2lkZXIKLSAgIyBhbGwgTGludXggZW52aXJvbm1lbnRz
IHRvIGJlIGdvb2dsZTMgYW5kIHRyeSB0byB1c2UgZ29vZ2xlMyBmZWF0dXJlcy4KLSAgaWYgKFBZ
VEhPTklOVEVSUF9GT1VORCkKLSAgICAjICR7Q01BS0VfQklOQVJZX0RJUn0gaXMga25vd24gYXQg
Y29uZmlndXJhdGlvbiB0aW1lLCBzbyB3ZSBjYW4KLSAgICAjIGRpcmVjdGx5IGJpbmQgaXQgZnJv
bSBjbWFrZS4gJHtDVEVTVF9DT05GSUdVUkFUSU9OX1RZUEV9IGlzIGtub3duCi0gICAgIyBvbmx5
IGF0IGN0ZXN0IHJ1bnRpbWUgKGJ5IGNhbGxpbmcgY3Rlc3QgLWMgPENvbmZpZ3VyYXRpb24+KSwg
c28KLSAgICAjIHdlIGhhdmUgdG8gZXNjYXBlICQgdG8gZGVsYXkgdmFyaWFibGUgc3Vic3RpdHV0
aW9uIGhlcmUuCi0gICAgaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFLRV9NSU5PUl9W
RVJTSU9OfSBHUkVBVEVSIDMuMSkKLSAgICAgIGFkZF90ZXN0KAotICAgICAgICBOQU1FICR7bmFt
ZX0KLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5Ci0gICAgICAgICAgICAtLWJ1aWxkX2Rpcj0ke0NN
QUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJDxDT05GSUdVUkFUSU9OPikKLSAgICBlbHNlICgke0NN
QUtFX01BSk9SX1ZFUlNJT059LiR7Q01BS0VfTUlOT1JfVkVSU0lPTn0gR1JFQVRFUiAzLjEpCi0g
ICAgICBhZGRfdGVzdCgKLSAgICAgICAgJHtuYW1lfQotICAgICAgICAke1BZVEhPTl9FWEVDVVRB
QkxFfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdC8ke25hbWV9LnB5Ci0gICAgICAg
ICAgLS1idWlsZF9kaXI9JHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L1wke0NURVNUX0NPTkZJ
R1VSQVRJT05fVFlQRX0pCi0gICAgZW5kaWYgKCR7Q01BS0VfTUFKT1JfVkVSU0lPTn0uJHtDTUFL
RV9NSU5PUl9WRVJTSU9OfSBHUkVBVEVSIDMuMSkKLSAgZW5kaWYoKQotZW5kZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvY29kZWdlYXIvZ3Rlc3QuY2Jwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
NWMzMDU0Yjg1MWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVz
dC5jYnByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAot77u/PD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCi08UHJvamVjdCB4bWxucz0iaHR0cDovL3NjaGVt
YXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxQcm9wZXJ0eUdy
b3VwPg0KLSAgICA8UHJvamVjdEd1aWQ+e2JjYTM3YTcyLTViMDctNDZjZi1iNDRlLTg5ZjhlMDY0
NTFhMn08L1Byb2plY3RHdWlkPg0KLSAgICA8Q29uZmlnIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9
PScnIj5SZWxlYXNlPC9Db25maWc+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nQmFzZScgb3IgJyQoQmFzZSknIT0nJyI+DQot
ICAgIDxCYXNlPnRydWU8L0Jhc2U+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlH
cm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nRGVidWcnIG9yICckKENmZ18xKSchPScnIj4N
Ci0gICAgPEJhc2U+dHJ1ZTwvQmFzZT4NCi0gICAgPENmZ18xPnRydWU8L0NmZ18xPg0KLSAgICA8
Q2ZnUGFyZW50PkJhc2U8L0NmZ1BhcmVudD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9w
ZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PSdSZWxlYXNlJyBvciAnJChDZmdfMikn
IT0nJyI+DQotICAgIDxCYXNlPnRydWU8L0Jhc2U+DQotICAgIDxDZmdfMj50cnVlPC9DZmdfMj4N
Ci0gICAgPENmZ1BhcmVudD5CYXNlPC9DZmdQYXJlbnQ+DQotICA8L1Byb3BlcnR5R3JvdXA+DQot
ICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKEJhc2UpJyE9JyciPg0KLSAgICA8QkNDX09w
dGltaXplRm9yU3BlZWQ+dHJ1ZTwvQkNDX09wdGltaXplRm9yU3BlZWQ+DQotICAgIDxPdXRwdXRF
eHQ+bGliPC9PdXRwdXRFeHQ+DQotICAgIDxEQ0NfQ0J1aWxkZXJPdXRwdXQ+SlBITkU8L0RDQ19D
QnVpbGRlck91dHB1dD4NCi0gICAgPERlZmluZXM+Tk9fU1RSSUNUPC9EZWZpbmVzPg0KLSAgICA8
RHluYW1pY1JUTD50cnVlPC9EeW5hbWljUlRMPg0KLSAgICA8VXNlUGFja2FnZXM+dHJ1ZTwvVXNl
UGFja2FnZXM+DQotICAgIDxQcm9qZWN0VHlwZT5DcHBTdGF0aWNMaWJyYXJ5PC9Qcm9qZWN0VHlw
ZT4NCi0gICAgPEJDQ19DUFBDb21waWxlQWx3YXlzPnRydWU8L0JDQ19DUFBDb21waWxlQWx3YXlz
Pg0KLSAgICA8UGFja2FnZUltcG9ydHM+cnRsLmJwaTt2Y2wuYnBpO2JjYmllLmJwaTt2Y2x4LmJw
aTt2Y2xhY3RuYmFuZC5icGk7eG1scnRsLmJwaTtiY2JzbXAuYnBpO2RicnRsLmJwaTt2Y2xkYi5i
cGk7YmRlcnRsLmJwaTt2Y2xkYnguYnBpO2RzbmFwLmJwaTtkc25hcGNvbi5icGk7dmNsaWIuYnBp
O2lieHByZXNzLmJwaTthZG9ydGwuYnBpO2RieGNkcy5icGk7ZGJleHByZXNzLmJwaTtEYnhDb21t
b25Ecml2ZXIuYnBpO3dlYnNuYXAuYnBpO3ZjbGllLmJwaTt3ZWJkc25hcC5icGk7aW5ldC5icGk7
aW5ldGRiYmRlLmJwaTtpbmV0ZGJ4cHJlc3MuYnBpO3NvYXBydGwuYnBpO1JhdmU3NVZDTC5icGk7
dGVlVUkuYnBpO3RlZS5icGk7dGVlZGIuYnBpO0luZHlDb3JlLmJwaTtJbmR5U3lzdGVtLmJwaTtJ
bmR5UHJvdG9jb2xzLmJwaTtJbnRyYXdlYkRCXzkwXzEwMC5icGk7SW50cmF3ZWJfOTBfMTAwLmJw
aTtkY2xaaXBGb3JnZWQxMS5icGk7dmNsWmlwRm9yZ2VkMTEuYnBpO0dSMzJfQkRTMjAwNi5icGk7
R1IzMl9EU0dOX0JEUzIwMDYuYnBpO0pjbC5icGk7SmNsVmNsLmJwaTtKdkNvcmVEMTFSLmJwaTtK
dlN5c3RlbUQxMVIuYnBpO0p2U3RkQ3RybHNEMTFSLmJwaTtKdkFwcEZybUQxMVIuYnBpO0p2QmFu
ZHNEMTFSLmJwaTtKdkRCRDExUi5icGk7SnZEbGdzRDExUi5icGk7SnZCREVEMTFSLmJwaTtKdkNt
cEQxMVIuYnBpO0p2Q3J5cHREMTFSLmJwaTtKdkN0cmxzRDExUi5icGk7SnZDdXN0b21EMTFSLmJw
aTtKdkRvY2tpbmdEMTFSLmJwaTtKdkRvdE5ldEN0cmxzRDExUi5icGk7SnZFRElEMTFSLmJwaTtK
dkdsb2J1c0QxMVIuYnBpO0p2SE1JRDExUi5icGk7SnZJbnRlcnByZXRlckQxMVIuYnBpO0p2SmFu
c0QxMVIuYnBpO0p2TWFuYWdlZFRocmVhZHNEMTFSLmJwaTtKdk1NRDExUi5icGk7SnZOZXREMTFS
LmJwaTtKdlBhZ2VDb21wc0QxMVIuYnBpO0p2UGx1Z2luRDExUi5icGk7SnZQcmludFByZXZpZXdE
MTFSLmJwaTtKdlJ1bnRpbWVEZXNpZ25EMTFSLmJwaTtKdlRpbWVGcmFtZXdvcmtEMTFSLmJwaTtK
dlZhbGlkYXRvcnNEMTFSLmJwaTtKdldpemFyZEQxMVIuYnBpO0p2WFBDdHJsc0QxMVIuYnBpO1Zj
bFNtcC5icGk7Q0V4Y2VwdGlvbkV4cGVydDExLmJwaTwvUGFja2FnZUltcG9ydHM+DQotICAgIDxC
Q0Nfd3Bhcj5mYWxzZTwvQkNDX3dwYXI+DQotICAgIDxJbmNsdWRlUGF0aD4kKEJEUylcaW5jbHVk
ZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5c
aW5jbHVkZTsuLjwvSW5jbHVkZVBhdGg+DQotICAgIDxBbGxQYWNrYWdlTGlicz5ydGwubGliO3Zj
bC5saWI8L0FsbFBhY2thZ2VMaWJzPg0KLSAgICA8VExJQl9QYWdlU2l6ZT4zMjwvVExJQl9QYWdl
U2l6ZT4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7
JChCRFMpXGxpYlxwc2RrPC9JTElOS19MaWJyYXJ5UGF0aD4NCi0gIDwvUHJvcGVydHlHcm91cD4N
Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ2ZnXzEpJyE9JyciPg0KLSAgICA8QkND
X09wdGltaXplRm9yU3BlZWQ+ZmFsc2U8L0JDQ19PcHRpbWl6ZUZvclNwZWVkPg0KLSAgICA8REND
X09wdGltaXplPmZhbHNlPC9EQ0NfT3B0aW1pemU+DQotICAgIDxEQ0NfRGVidWdJbmZvSW5FeGU+
dHJ1ZTwvRENDX0RlYnVnSW5mb0luRXhlPg0KLSAgICA8RGVmaW5lcz5fREVCVUc7JChEZWZpbmVz
KTwvRGVmaW5lcz4NCi0gICAgPElMSU5LX0Z1bGxEZWJ1Z0luZm8+dHJ1ZTwvSUxJTktfRnVsbERl
YnVnSW5mbz4NCi0gICAgPEJDQ19JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5mYWxzZTwvQkNDX0lu
bGluZUZ1bmN0aW9uRXhwYW5zaW9uPg0KLSAgICA8SUxJTktfRGlzYWJsZUluY3JlbWVudGFsTGlu
a2luZz50cnVlPC9JTElOS19EaXNhYmxlSW5jcmVtZW50YWxMaW5raW5nPg0KLSAgICA8QkNDX1Vz
ZVJlZ2lzdGVyVmFyaWFibGVzPk5vbmU8L0JDQ19Vc2VSZWdpc3RlclZhcmlhYmxlcz4NCi0gICAg
PERDQ19EZWZpbmU+REVCVUc8L0RDQ19EZWZpbmU+DQotICAgIDxCQ0NfRGVidWdMaW5lTnVtYmVy
cz50cnVlPC9CQ0NfRGVidWdMaW5lTnVtYmVycz4NCi0gICAgPEludGVybWVkaWF0ZU91dHB1dERp
cj5EZWJ1ZzwvSW50ZXJtZWRpYXRlT3V0cHV0RGlyPg0KLSAgICA8VEFTTV9EaXNwbGF5U291cmNl
TGluZXM+dHJ1ZTwvVEFTTV9EaXNwbGF5U291cmNlTGluZXM+DQotICAgIDxCQ0NfU3RhY2tGcmFt
ZXM+dHJ1ZTwvQkNDX1N0YWNrRnJhbWVzPg0KLSAgICA8QkNDX0Rpc2FibGVPcHRpbWl6YXRpb25z
PnRydWU8L0JDQ19EaXNhYmxlT3B0aW1pemF0aW9ucz4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRo
PiQoQkRTKVxsaWJcZGVidWc7JChJTElOS19MaWJyYXJ5UGF0aCk8L0lMSU5LX0xpYnJhcnlQYXRo
Pg0KLSAgICA8VEFTTV9EZWJ1Z2dpbmc+RnVsbDwvVEFTTV9EZWJ1Z2dpbmc+DQotICAgIDxCQ0Nf
U291cmNlRGVidWdnaW5nT24+dHJ1ZTwvQkNDX1NvdXJjZURlYnVnZ2luZ09uPg0KLSAgPC9Qcm9w
ZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMiknIT0nJyI+
DQotICAgIDxEZWZpbmVzPk5ERUJVRzskKERlZmluZXMpPC9EZWZpbmVzPg0KLSAgICA8SW50ZXJt
ZWRpYXRlT3V0cHV0RGlyPlJlbGVhc2U8L0ludGVybWVkaWF0ZU91dHB1dERpcj4NCi0gICAgPElM
SU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWJccmVsZWFzZTskKElMSU5LX0xpYnJhcnlQYXRoKTwv
SUxJTktfTGlicmFyeVBhdGg+DQotICAgIDxUQVNNX0RlYnVnZ2luZz5Ob25lPC9UQVNNX0RlYnVn
Z2luZz4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9qZWN0RXh0ZW5zaW9ucz4NCi0gICAg
PEJvcmxhbmQuUGVyc29uYWxpdHk+Q1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eTwvQm9ybGFu
ZC5QZXJzb25hbGl0eT4NCi0gICAgPEJvcmxhbmQuUHJvamVjdFR5cGU+Q3BwU3RhdGljTGlicmFy
eTwvQm9ybGFuZC5Qcm9qZWN0VHlwZT4NCi0gICAgPEJvcmxhbmRQcm9qZWN0Pg0KLTxCb3JsYW5k
UHJvamVjdD48Q1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eT48VmVyc2lvbkluZm8+PFZlcnNp
b25JbmZvIE5hbWU9IkluY2x1ZGVWZXJJbmZvIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25J
bmZvIE5hbWU9IkF1dG9JbmNCdWlsZCI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBO
YW1lPSJNYWpvclZlciI+MTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9Ik1pbm9yVmVy
Ij4wPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUmVsZWFzZSI+MDwvVmVyc2lvbklu
Zm8+PFZlcnNpb25JbmZvIE5hbWU9IkJ1aWxkIj4wPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8g
TmFtZT0iRGVidWciPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUHJlUmVs
ZWFzZSI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJTcGVjaWFsIj5GYWxz
ZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IlByaXZhdGUiPkZhbHNlPC9WZXJzaW9u
SW5mbz48VmVyc2lvbkluZm8gTmFtZT0iRExMIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25J
bmZvIE5hbWU9IkxvY2FsZSI+MTAzMzwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkNv
ZGVQYWdlIj4xMjUyPC9WZXJzaW9uSW5mbz48L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJDb21wYW55TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZl
cnNpb25JbmZvS2V5cyBOYW1lPSJGaWxlRGVzY3JpcHRpb24iPjwvVmVyc2lvbkluZm9LZXlzPjxW
ZXJzaW9uSW5mb0tleXMgTmFtZT0iRmlsZVZlcnNpb24iPjEuMC4wLjA8L1ZlcnNpb25JbmZvS2V5
cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkludGVybmFsTmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbENvcHlyaWdodCI+PC9WZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJMZWdhbFRyYWRlbWFya3MiPjwvVmVyc2lvbkluZm9LZXlz
PjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iT3JpZ2luYWxGaWxlbmFtZSI+PC9WZXJzaW9uSW5mb0tl
eXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+
PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJQcm9kdWN0VmVyc2lvbiI+MS4wLjAuMDwvVmVyc2lvbklu
Zm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iQ29tbWVudHMiPjwvVmVyc2lvbkluZm9LZXlz
PjwvVmVyc2lvbkluZm9LZXlzPjxEZWJ1Z2dpbmc+PERlYnVnZ2luZyBOYW1lPSJEZWJ1Z1NvdXJj
ZURpcnMiPjwvRGVidWdnaW5nPjwvRGVidWdnaW5nPjxQYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IlJ1blBhcmFtcyI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkxhdW5jaGVyIj48
L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iVXNlTGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0
ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkRlYnVnQ1dEIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMg
TmFtZT0iSG9zdEFwcGxpY2F0aW9uIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVt
b3RlSG9zdCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZVBhdGgiPjwvUGFy
YW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVQYXJhbXMiPjwvUGFyYW1ldGVycz48UGFy
YW1ldGVycyBOYW1lPSJSZW1vdGVMYXVuY2hlciI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IlVzZVJlbW90ZUxhdW5jaGVyIj5GYWxzZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1l
PSJSZW1vdGVDV0QiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVEZWJ1ZyI+
RmFsc2U8L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iRGVidWcgU3ltYm9scyBTZWFyY2gg
UGF0aCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkxvYWRBbGxTeW1ib2xzIj5UcnVl
PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkxvYWRVbnNwZWNpZmllZFN5bWJvbHMiPkZh
bHNlPC9QYXJhbWV0ZXJzPjwvUGFyYW1ldGVycz48RXhjbHVkZWRfUGFja2FnZXM+DQotICAgICAg
DQotICAgICAgDQotICAgICAgPEV4Y2x1ZGVkX1BhY2thZ2VzIE5hbWU9IiQoQkRTKVxiaW5cYmNi
b2ZmaWNlMmsxMDAuYnBsIj5Db2RlR2VhciBDKytCdWlsZGVyIE9mZmljZSAyMDAwIFNlcnZlcnMg
UGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQotICAgICAgPEV4Y2x1ZGVkX1BhY2thZ2VzIE5h
bWU9IiQoQkRTKVxiaW5cYmNib2ZmaWNleHAxMDAuYnBsIj5Db2RlR2VhciBDKytCdWlsZGVyIE9m
ZmljZSBYUCBTZXJ2ZXJzIFBhY2thZ2U8L0V4Y2x1ZGVkX1BhY2thZ2VzPg0KLSAgICA8L0V4Y2x1
ZGVkX1BhY2thZ2VzPjxMaW5rZXI+PExpbmtlciBOYW1lPSJMaWJQcmVmaXgiPjwvTGlua2VyPjxM
aW5rZXIgTmFtZT0iTGliU3VmZml4Ij48L0xpbmtlcj48TGlua2VyIE5hbWU9IkxpYlZlcnNpb24i
PjwvTGlua2VyPjwvTGlua2VyPjxQcm9qZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRpZXMg
TmFtZT0iQXV0b1Nob3dEZXBzIj5GYWxzZTwvUHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQcm9w
ZXJ0aWVzIE5hbWU9Ik1hbmFnZVBhdGhzIj5UcnVlPC9Qcm9qZWN0UHJvcGVydGllcz48UHJvamVj
dFByb3BlcnRpZXMgTmFtZT0iVmVyaWZ5UGFja2FnZXMiPlRydWU8L1Byb2plY3RQcm9wZXJ0aWVz
PjwvUHJvamVjdFByb3BlcnRpZXM+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5
TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJDb3VudCI+MzwvSGlzdG9yeUxpc3RzX2hsSW5jbHVk
ZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0wIj4kKEJEUylcaW5j
bHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7
Li5caW5jbHVkZTsuLjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19o
bEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0xIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxk
aW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5caW5jbHVkZTsuLjwvSGlzdG9y
eUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0
ZW0yIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNs
dWRlXHZjbDsuLlxzcmM7Li5cc3JjOy4uXGluY2x1ZGU8L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQ
YXRoPjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obElMSU5LX0xp
YnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aCBOYW1lPSJDb3VudCI+
MTwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PEhpc3RvcnlMaXN0c19obElMSU5L
X0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0wIj4kKEJEUylcbGliOyQoQkRTKVxsaWJcb2JqOyQoQkRT
KVxsaWJccHNkazwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+PC9IaXN0b3J5TGlz
dHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxp
c3RzX2hsRGVmaW5lcyBOYW1lPSJDb3VudCI+MTwvSGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48SGlz
dG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJJdGVtMCI+Tk9fU1RSSUNUPC9IaXN0b3J5TGlzdHNf
aGxEZWZpbmVzPjwvSGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsVExJQl9Q
YWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZSBOYW1lPSJDb3VudCI+MTwvSGlz
dG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZSBO
YW1lPSJJdGVtMCI+MzI8L0hpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemU+PEhpc3RvcnlMaXN0
c19obFRMSUJfUGFnZVNpemUgTmFtZT0iSXRlbTEiPjE2PC9IaXN0b3J5TGlzdHNfaGxUTElCX1Bh
Z2VTaXplPjwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48L0NQbHVzUGx1c0J1aWxkZXIu
UGVyc29uYWxpdHk+PC9Cb3JsYW5kUHJvamVjdD48L0JvcmxhbmRQcm9qZWN0Pg0KLSAgPC9Qcm9q
ZWN0RXh0ZW5zaW9ucz4NCi0gIDxJbXBvcnQgUHJvamVjdD0iJChNU0J1aWxkQmluUGF0aClcQm9y
bGFuZC5DcHAuVGFyZ2V0cyIgLz4NCi0gIDxJdGVtR3JvdXA+DQotICAgIDxOb25lIEluY2x1ZGU9
Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rlc3QtZGVhdGgtdGVzdC5oIj4NCi0gICAgICA8QnVpbGRPcmRl
cj4zPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGlu
Y2x1ZGVcZ3Rlc3RcZ3Rlc3QtbWVzc2FnZS5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj40PC9CdWls
ZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rl
c3RcZ3Rlc3QtcGFyYW0tdGVzdC5oIj4NCi0gICAgICA8QnVpbGRPcmRlcj41PC9CdWlsZE9yZGVy
Pg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcZ3Rl
c3Qtc3BpLmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjY8L0J1aWxkT3JkZXI+DQotICAgIDwvTm9u
ZT4NCi0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxndGVzdC10ZXN0LXBhcnQu
aCI+DQotICAgICAgPEJ1aWxkT3JkZXI+NzwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAg
ICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LXR5cGVkLXRlc3QuaCI+DQot
ICAgICAgPEJ1aWxkT3JkZXI+ODwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGd0ZXN0LmgiPg0KLSAgICAgIDxCdWlsZE9yZGVy
PjA8L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5j
bHVkZVxndGVzdFxndGVzdF9wcmVkX2ltcGwuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+MTwvQnVp
bGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0
ZXN0XGd0ZXN0X3Byb2QuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+MjwvQnVpbGRPcmRlcj4NCi0g
ICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFs
XGd0ZXN0LWRlYXRoLXRlc3QtaW50ZXJuYWwuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+OTwvQnVp
bGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0
ZXN0XGludGVybmFsXGd0ZXN0LWZpbGVwYXRoLmgiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjEwPC9C
dWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVc
Z3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtaW50ZXJuYWwuaCI+DQotICAgICAgPEJ1aWxkT3JkZXI+MTE8
L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0gICAgPE5vbmUgSW5jbHVkZT0iLi5caW5jbHVk
ZVxndGVzdFxpbnRlcm5hbFxndGVzdC1saW5rZWRfcHRyLmgiPg0KLSAgICAgIDxCdWlsZE9yZGVy
PjEyPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxOb25lIEluY2x1ZGU9Ii4uXGlu
Y2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCI+DQotICAg
ICAgPEJ1aWxkT3JkZXI+MTQ8L0J1aWxkT3JkZXI+DQotICAgIDwvTm9uZT4NCi0gICAgPE5vbmUg
SW5jbHVkZT0iLi5caW5jbHVkZVxndGVzdFxpbnRlcm5hbFxndGVzdC1wYXJhbS11dGlsLmgiPg0K
LSAgICAgIDxCdWlsZE9yZGVyPjEzPC9CdWlsZE9yZGVyPg0KLSAgICA8L05vbmU+DQotICAgIDxO
b25lIEluY2x1ZGU9Ii4uXGluY2x1ZGVcZ3Rlc3RcaW50ZXJuYWxcZ3Rlc3QtcG9ydC5oIj4NCi0g
ICAgICA8QnVpbGRPcmRlcj4xNTwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXN0cmluZy5oIj4NCi0g
ICAgICA8QnVpbGRPcmRlcj4xNjwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8Tm9u
ZSBJbmNsdWRlPSIuLlxpbmNsdWRlXGd0ZXN0XGludGVybmFsXGd0ZXN0LXR5cGUtdXRpbC5oIj4N
Ci0gICAgICA8QnVpbGRPcmRlcj4xNzwvQnVpbGRPcmRlcj4NCi0gICAgPC9Ob25lPg0KLSAgICA8
Q3BwQ29tcGlsZSBJbmNsdWRlPSJndGVzdF9hbGwuY2MiPg0KLSAgICAgIDxCdWlsZE9yZGVyPjE4
PC9CdWlsZE9yZGVyPg0KLSAgICA8L0NwcENvbXBpbGU+DQotICAgIDxCdWlsZENvbmZpZ3VyYXRp
b24gSW5jbHVkZT0iRGVidWciPg0KLSAgICAgIDxLZXk+Q2ZnXzE8L0tleT4NCi0gICAgPC9CdWls
ZENvbmZpZ3VyYXRpb24+DQotICAgIDxCdWlsZENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFz
ZSI+DQotICAgICAgPEtleT5DZmdfMjwvS2V5Pg0KLSAgICA8L0J1aWxkQ29uZmlndXJhdGlvbj4N
Ci0gIDwvSXRlbUdyb3VwPg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdC5ncm91cHByb2ogYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9jb2RlZ2Vhci9ndGVzdC5ncm91cHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZhZjMxY2FiNjQwYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVn
ZWFyL2d0ZXN0Lmdyb3VwcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLe+7vzxQ
cm9qZWN0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1
aWxkLzIwMDMiPg0KLSAgPFByb3BlcnR5R3JvdXA+DQotICAgIDxQcm9qZWN0R3VpZD57YzFkOTIz
ZTAtNmNiYS00MzMyLTliNmYtMzQyMGFjYmY1MDkxfTwvUHJvamVjdEd1aWQ+DQotICA8L1Byb3Bl
cnR5R3JvdXA+DQotICA8SXRlbUdyb3VwIC8+DQotICA8SXRlbUdyb3VwPg0KLSAgICA8UHJvamVj
dHMgSW5jbHVkZT0iZ3Rlc3QuY2Jwcm9qIiAvPg0KLSAgICA8UHJvamVjdHMgSW5jbHVkZT0iZ3Rl
c3RfbWFpbi5jYnByb2oiIC8+DQotICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJndGVzdF91bml0dGVz
dC5jYnByb2oiIC8+DQotICA8L0l0ZW1Hcm91cD4NCi0gIDxQcm9qZWN0RXh0ZW5zaW9ucz4NCi0g
ICAgPEJvcmxhbmQuUGVyc29uYWxpdHk+RGVmYXVsdC5QZXJzb25hbGl0eTwvQm9ybGFuZC5QZXJz
b25hbGl0eT4NCi0gICAgPEJvcmxhbmQuUHJvamVjdFR5cGUgLz4NCi0gICAgPEJvcmxhbmRQcm9q
ZWN0Pg0KLTxCb3JsYW5kUHJvamVjdCB4bWxucz0iIj48RGVmYXVsdC5QZXJzb25hbGl0eT48L0Rl
ZmF1bHQuUGVyc29uYWxpdHk+PC9Cb3JsYW5kUHJvamVjdD48L0JvcmxhbmRQcm9qZWN0Pg0KLSAg
PC9Qcm9qZWN0RXh0ZW5zaW9ucz4NCi0gIDxUYXJnZXQgTmFtZT0iZ3Rlc3QiPg0KLSAgICA8TVNC
dWlsZCBQcm9qZWN0cz0iZ3Rlc3QuY2Jwcm9qIiBUYXJnZXRzPSIiIC8+DQotICA8L1RhcmdldD4N
Ci0gIDxUYXJnZXQgTmFtZT0iZ3Rlc3Q6Q2xlYW4iPg0KLSAgICA8TVNCdWlsZCBQcm9qZWN0cz0i
Z3Rlc3QuY2Jwcm9qIiBUYXJnZXRzPSJDbGVhbiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdl
dCBOYW1lPSJndGVzdDpNYWtlIj4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0LmNicHJv
aiIgVGFyZ2V0cz0iTWFrZSIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdldCBOYW1lPSJndGVz
dF9tYWluIj4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X21haW4uY2Jwcm9qIiBUYXJn
ZXRzPSIiIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQgTmFtZT0iZ3Rlc3RfbWFpbjpDbGVh
biI+DQotICAgIDxNU0J1aWxkIFByb2plY3RzPSJndGVzdF9tYWluLmNicHJvaiIgVGFyZ2V0cz0i
Q2xlYW4iIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQgTmFtZT0iZ3Rlc3RfbWFpbjpNYWtl
Ij4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X21haW4uY2Jwcm9qIiBUYXJnZXRzPSJN
YWtlIiAvPg0KLSAgPC9UYXJnZXQ+DQotICA8VGFyZ2V0IE5hbWU9Imd0ZXN0X3VuaXR0ZXN0Ij4N
Ci0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIgVGFyZ2V0cz0i
IiAvPg0KLSAgPC9UYXJnZXQ+DQotICA8VGFyZ2V0IE5hbWU9Imd0ZXN0X3VuaXR0ZXN0OkNsZWFu
Ij4NCi0gICAgPE1TQnVpbGQgUHJvamVjdHM9Imd0ZXN0X3VuaXR0ZXN0LmNicHJvaiIgVGFyZ2V0
cz0iQ2xlYW4iIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQgTmFtZT0iZ3Rlc3RfdW5pdHRl
c3Q6TWFrZSI+DQotICAgIDxNU0J1aWxkIFByb2plY3RzPSJndGVzdF91bml0dGVzdC5jYnByb2oi
IFRhcmdldHM9Ik1ha2UiIC8+DQotICA8L1RhcmdldD4NCi0gIDxUYXJnZXQgTmFtZT0iQnVpbGQi
Pg0KLSAgICA8Q2FsbFRhcmdldCBUYXJnZXRzPSJndGVzdDtndGVzdF9tYWluO2d0ZXN0X3VuaXR0
ZXN0IiAvPg0KLSAgPC9UYXJnZXQ+DQotICA8VGFyZ2V0IE5hbWU9IkNsZWFuIj4NCi0gICAgPENh
bGxUYXJnZXQgVGFyZ2V0cz0iZ3Rlc3Q6Q2xlYW47Z3Rlc3RfbWFpbjpDbGVhbjtndGVzdF91bml0
dGVzdDpDbGVhbiIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPFRhcmdldCBOYW1lPSJNYWtlIj4NCi0g
ICAgPENhbGxUYXJnZXQgVGFyZ2V0cz0iZ3Rlc3Q6TWFrZTtndGVzdF9tYWluOk1ha2U7Z3Rlc3Rf
dW5pdHRlc3Q6TWFrZSIgLz4NCi0gIDwvVGFyZ2V0Pg0KLSAgPEltcG9ydCBDb25kaXRpb249IkV4
aXN0cygnJChNU0J1aWxkQmluUGF0aClcQm9ybGFuZC5Hcm91cC5UYXJnZXRzJykiIFByb2plY3Q9
IiQoTVNCdWlsZEJpblBhdGgpXEJvcmxhbmQuR3JvdXAuVGFyZ2V0cyIgLz4NCi08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29k
ZWdlYXIvZ3Rlc3RfYWxsLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfYWxsLmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjFiMmQ4MGU4M2UuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9hbGwuY2MKKysrIC9kZXYvbnVsbApAQCAt
MSwzOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4NCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLg0KLS8vDQotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KLS8v
IG1ldDoNCi0vLw0KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUNCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyDQotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQ0KLS8vIGRpc3RyaWJ1dGlvbi4NCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzDQotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20NCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLg0KLS8vDQotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SDQotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsDQotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KLS8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQ0KLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQotLy8NCi0vLyBBdXRob3I6IEpvc2ggS2VsbGV5
IChqb3Noa2VsQGdtYWlsLmNvbSkNCi0vLw0KLS8vIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgKEdvb2dsZSBUZXN0KQ0KLS8vDQotLy8gQysrQnVpbGRlcidzIElERSBjYW5ub3QgYnVpbGQg
YSBzdGF0aWMgbGlicmFyeSBmcm9tIGZpbGVzIHdpdGggaHlwaGVucw0KLS8vIGluIHRoZWlyIG5h
bWUuICBTZWUgaHR0cDovL3FjLmNvZGVnZWFyLmNvbS93Yy9xY21haW4uYXNweD9kPTcwOTc3IC4N
Ci0vLyBUaGlzIGZpbGUgc2VydmVzIGFzIGEgd29ya2Fyb3VuZC4NCi0NCi0jaW5jbHVkZSAic3Jj
L2d0ZXN0LWFsbC5jYyINCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF9s
aW5rLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTE4ZWNjZDE5YjdkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbGluay5jYworKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLg0KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuDQotLy8NCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCi0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQotLy8gbWV0Og0KLS8v
DQotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQNCi0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQ0KLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIN
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlDQotLy8gZGlzdHJpYnV0aW9uLg0KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KLS8v
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
DQotLy8NCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTDQotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVA0KLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwNCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
DQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4NCi0vLw0KLS8vIEF1dGhvcjogSm9zaCBLZWxsZXkgKGpvc2hrZWxA
Z21haWwuY29tKQ0KLS8vDQotLy8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpDQotLy8NCi0vLyBMaW5rcyBndGVzdC5saWIgYW5kIGd0ZXN0X21haW4ubGliIGludG8g
dGhlIGN1cnJlbnQgcHJvamVjdCBpbiBDKytCdWlsZGVyLg0KLS8vIFRoaXMgbWVhbnMgdGhhdCB0
aGVzZSBsaWJyYXJpZXMgY2FuJ3QgYmUgcmVuYW1lZCwgYnV0IGl0J3MgdGhlIG9ubHkgd2F5IHRv
DQotLy8gZW5zdXJlIHRoYXQgRGVidWcgdmVyc3VzIFJlbGVhc2UgdGVzdCBidWlsZHMgYXJlIGxp
bmtlZCBhZ2FpbnN0IHRoZQ0KLS8vIGFwcHJvcHJpYXRlIERlYnVnIG9yIFJlbGVhc2UgYnVpbGQg
b2YgdGhlIGxpYnJhcmllcy4NCi0NCi0jcHJhZ21hIGxpbmsgImd0ZXN0LmxpYiINCi0jcHJhZ21h
IGxpbmsgImd0ZXN0X21haW4ubGliIg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFy
L2d0ZXN0X21haW4uY2Jwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29kZWdlYXIvZ3Rlc3RfbWFpbi5jYnBy
b2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmNlMTM5OGZmMy4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVnZWFyL2d0ZXN0X21haW4uY2Jwcm9qCisrKyAvZGV2
L251bGwKQEAgLTEsODIgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4NCi08UHJvamVjdCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9k
ZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4NCi0gIDxQcm9wZXJ0eUdyb3VwPg0KLSAgICA8UHJvamVj
dEd1aWQ+e2JjYTM3YTcyLTViMDctNDZjZi1iNDRlLTg5ZjhlMDY0NTFhMn08L1Byb2plY3RHdWlk
Pg0KLSAgICA8Q29uZmlnIENvbmRpdGlvbj0iJyQoQ29uZmlnKSc9PScnIj5SZWxlYXNlPC9Db25m
aWc+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZyknPT0nQmFzZScgb3IgJyQoQmFzZSknIT0nJyI+DQotICAgIDxCYXNlPnRydWU8L0Jh
c2U+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249Iick
KENvbmZpZyknPT0nRGVidWcnIG9yICckKENmZ18xKSchPScnIj4NCi0gICAgPEJhc2U+dHJ1ZTwv
QmFzZT4NCi0gICAgPENmZ18xPnRydWU8L0NmZ18xPg0KLSAgICA8Q2ZnUGFyZW50PkJhc2U8L0Nm
Z1BhcmVudD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlv
bj0iJyQoQ29uZmlnKSc9PSdSZWxlYXNlJyBvciAnJChDZmdfMiknIT0nJyI+DQotICAgIDxCYXNl
PnRydWU8L0Jhc2U+DQotICAgIDxDZmdfMj50cnVlPC9DZmdfMj4NCi0gICAgPENmZ1BhcmVudD5C
YXNlPC9DZmdQYXJlbnQ+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBD
b25kaXRpb249IickKEJhc2UpJyE9JyciPg0KLSAgICA8QkNDX09wdGltaXplRm9yU3BlZWQ+dHJ1
ZTwvQkNDX09wdGltaXplRm9yU3BlZWQ+DQotICAgIDxPdXRwdXRFeHQ+bGliPC9PdXRwdXRFeHQ+
DQotICAgIDxEQ0NfQ0J1aWxkZXJPdXRwdXQ+SlBITkU8L0RDQ19DQnVpbGRlck91dHB1dD4NCi0g
ICAgPERlZmluZXM+Tk9fU1RSSUNUPC9EZWZpbmVzPg0KLSAgICA8RHluYW1pY1JUTD50cnVlPC9E
eW5hbWljUlRMPg0KLSAgICA8VXNlUGFja2FnZXM+dHJ1ZTwvVXNlUGFja2FnZXM+DQotICAgIDxQ
cm9qZWN0VHlwZT5DcHBTdGF0aWNMaWJyYXJ5PC9Qcm9qZWN0VHlwZT4NCi0gICAgPEJDQ19DUFBD
b21waWxlQWx3YXlzPnRydWU8L0JDQ19DUFBDb21waWxlQWx3YXlzPg0KLSAgICA8UGFja2FnZUlt
cG9ydHM+cnRsLmJwaTt2Y2wuYnBpO2JjYmllLmJwaTt2Y2x4LmJwaTt2Y2xhY3RuYmFuZC5icGk7
eG1scnRsLmJwaTtiY2JzbXAuYnBpO2RicnRsLmJwaTt2Y2xkYi5icGk7YmRlcnRsLmJwaTt2Y2xk
YnguYnBpO2RzbmFwLmJwaTtkc25hcGNvbi5icGk7dmNsaWIuYnBpO2lieHByZXNzLmJwaTthZG9y
dGwuYnBpO2RieGNkcy5icGk7ZGJleHByZXNzLmJwaTtEYnhDb21tb25Ecml2ZXIuYnBpO3dlYnNu
YXAuYnBpO3ZjbGllLmJwaTt3ZWJkc25hcC5icGk7aW5ldC5icGk7aW5ldGRiYmRlLmJwaTtpbmV0
ZGJ4cHJlc3MuYnBpO3NvYXBydGwuYnBpO1JhdmU3NVZDTC5icGk7dGVlVUkuYnBpO3RlZS5icGk7
dGVlZGIuYnBpO0luZHlDb3JlLmJwaTtJbmR5U3lzdGVtLmJwaTtJbmR5UHJvdG9jb2xzLmJwaTtJ
bnRyYXdlYkRCXzkwXzEwMC5icGk7SW50cmF3ZWJfOTBfMTAwLmJwaTtkY2xaaXBGb3JnZWQxMS5i
cGk7dmNsWmlwRm9yZ2VkMTEuYnBpO0dSMzJfQkRTMjAwNi5icGk7R1IzMl9EU0dOX0JEUzIwMDYu
YnBpO0pjbC5icGk7SmNsVmNsLmJwaTtKdkNvcmVEMTFSLmJwaTtKdlN5c3RlbUQxMVIuYnBpO0p2
U3RkQ3RybHNEMTFSLmJwaTtKdkFwcEZybUQxMVIuYnBpO0p2QmFuZHNEMTFSLmJwaTtKdkRCRDEx
Ui5icGk7SnZEbGdzRDExUi5icGk7SnZCREVEMTFSLmJwaTtKdkNtcEQxMVIuYnBpO0p2Q3J5cHRE
MTFSLmJwaTtKdkN0cmxzRDExUi5icGk7SnZDdXN0b21EMTFSLmJwaTtKdkRvY2tpbmdEMTFSLmJw
aTtKdkRvdE5ldEN0cmxzRDExUi5icGk7SnZFRElEMTFSLmJwaTtKdkdsb2J1c0QxMVIuYnBpO0p2
SE1JRDExUi5icGk7SnZJbnRlcnByZXRlckQxMVIuYnBpO0p2SmFuc0QxMVIuYnBpO0p2TWFuYWdl
ZFRocmVhZHNEMTFSLmJwaTtKdk1NRDExUi5icGk7SnZOZXREMTFSLmJwaTtKdlBhZ2VDb21wc0Qx
MVIuYnBpO0p2UGx1Z2luRDExUi5icGk7SnZQcmludFByZXZpZXdEMTFSLmJwaTtKdlJ1bnRpbWVE
ZXNpZ25EMTFSLmJwaTtKdlRpbWVGcmFtZXdvcmtEMTFSLmJwaTtKdlZhbGlkYXRvcnNEMTFSLmJw
aTtKdldpemFyZEQxMVIuYnBpO0p2WFBDdHJsc0QxMVIuYnBpO1ZjbFNtcC5icGk7Q0V4Y2VwdGlv
bkV4cGVydDExLmJwaTwvUGFja2FnZUltcG9ydHM+DQotICAgIDxCQ0Nfd3Bhcj5mYWxzZTwvQkND
X3dwYXI+DQotICAgIDxJbmNsdWRlUGF0aD4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxk
aW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5caW5jbHVkZTsuLjwvSW5jbHVk
ZVBhdGg+DQotICAgIDxBbGxQYWNrYWdlTGlicz5ydGwubGliO3ZjbC5saWI8L0FsbFBhY2thZ2VM
aWJzPg0KLSAgICA8VExJQl9QYWdlU2l6ZT4zMjwvVExJQl9QYWdlU2l6ZT4NCi0gICAgPElMSU5L
X0xpYnJhcnlQYXRoPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrPC9J
TElOS19MaWJyYXJ5UGF0aD4NCi0gIDwvUHJvcGVydHlHcm91cD4NCi0gIDxQcm9wZXJ0eUdyb3Vw
IENvbmRpdGlvbj0iJyQoQ2ZnXzEpJyE9JyciPg0KLSAgICA8QkNDX09wdGltaXplRm9yU3BlZWQ+
ZmFsc2U8L0JDQ19PcHRpbWl6ZUZvclNwZWVkPg0KLSAgICA8RENDX09wdGltaXplPmZhbHNlPC9E
Q0NfT3B0aW1pemU+DQotICAgIDxEQ0NfRGVidWdJbmZvSW5FeGU+dHJ1ZTwvRENDX0RlYnVnSW5m
b0luRXhlPg0KLSAgICA8RGVmaW5lcz5fREVCVUc7JChEZWZpbmVzKTwvRGVmaW5lcz4NCi0gICAg
PElMSU5LX0Z1bGxEZWJ1Z0luZm8+dHJ1ZTwvSUxJTktfRnVsbERlYnVnSW5mbz4NCi0gICAgPEJD
Q19JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5mYWxzZTwvQkNDX0lubGluZUZ1bmN0aW9uRXhwYW5z
aW9uPg0KLSAgICA8SUxJTktfRGlzYWJsZUluY3JlbWVudGFsTGlua2luZz50cnVlPC9JTElOS19E
aXNhYmxlSW5jcmVtZW50YWxMaW5raW5nPg0KLSAgICA8QkNDX1VzZVJlZ2lzdGVyVmFyaWFibGVz
Pk5vbmU8L0JDQ19Vc2VSZWdpc3RlclZhcmlhYmxlcz4NCi0gICAgPERDQ19EZWZpbmU+REVCVUc8
L0RDQ19EZWZpbmU+DQotICAgIDxCQ0NfRGVidWdMaW5lTnVtYmVycz50cnVlPC9CQ0NfRGVidWdM
aW5lTnVtYmVycz4NCi0gICAgPEludGVybWVkaWF0ZU91dHB1dERpcj5EZWJ1ZzwvSW50ZXJtZWRp
YXRlT3V0cHV0RGlyPg0KLSAgICA8VEFTTV9EaXNwbGF5U291cmNlTGluZXM+dHJ1ZTwvVEFTTV9E
aXNwbGF5U291cmNlTGluZXM+DQotICAgIDxCQ0NfU3RhY2tGcmFtZXM+dHJ1ZTwvQkNDX1N0YWNr
RnJhbWVzPg0KLSAgICA8QkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPnRydWU8L0JDQ19EaXNhYmxl
T3B0aW1pemF0aW9ucz4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQoQkRTKVxsaWJcZGVidWc7
JChJTElOS19MaWJyYXJ5UGF0aCk8L0lMSU5LX0xpYnJhcnlQYXRoPg0KLSAgICA8VEFTTV9EZWJ1
Z2dpbmc+RnVsbDwvVEFTTV9EZWJ1Z2dpbmc+DQotICAgIDxCQ0NfU291cmNlRGVidWdnaW5nT24+
dHJ1ZTwvQkNDX1NvdXJjZURlYnVnZ2luZ09uPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFBy
b3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDZmdfMiknIT0nJyI+DQotICAgIDxEZWZpbmVzPk5E
RUJVRzskKERlZmluZXMpPC9EZWZpbmVzPg0KLSAgICA8SW50ZXJtZWRpYXRlT3V0cHV0RGlyPlJl
bGVhc2U8L0ludGVybWVkaWF0ZU91dHB1dERpcj4NCi0gICAgPElMSU5LX0xpYnJhcnlQYXRoPiQo
QkRTKVxsaWJccmVsZWFzZTskKElMSU5LX0xpYnJhcnlQYXRoKTwvSUxJTktfTGlicmFyeVBhdGg+
DQotICAgIDxUQVNNX0RlYnVnZ2luZz5Ob25lPC9UQVNNX0RlYnVnZ2luZz4NCi0gIDwvUHJvcGVy
dHlHcm91cD4NCi0gIDxQcm9qZWN0RXh0ZW5zaW9ucz4NCi0gICAgPEJvcmxhbmQuUGVyc29uYWxp
dHk+Q1BsdXNQbHVzQnVpbGRlci5QZXJzb25hbGl0eTwvQm9ybGFuZC5QZXJzb25hbGl0eT4NCi0g
ICAgPEJvcmxhbmQuUHJvamVjdFR5cGU+Q3BwU3RhdGljTGlicmFyeTwvQm9ybGFuZC5Qcm9qZWN0
VHlwZT4NCi0gICAgPEJvcmxhbmRQcm9qZWN0Pg0KLTxCb3JsYW5kUHJvamVjdD48Q1BsdXNQbHVz
QnVpbGRlci5QZXJzb25hbGl0eT48VmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkluY2x1
ZGVWZXJJbmZvIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkF1dG9JbmNC
dWlsZCI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJNYWpvclZlciI+MTwv
VmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9Ik1pbm9yVmVyIj4wPC9WZXJzaW9uSW5mbz48
VmVyc2lvbkluZm8gTmFtZT0iUmVsZWFzZSI+MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5h
bWU9IkJ1aWxkIj4wPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iRGVidWciPkZhbHNl
PC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iUHJlUmVsZWFzZSI+RmFsc2U8L1ZlcnNp
b25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJTcGVjaWFsIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZl
cnNpb25JbmZvIE5hbWU9IlByaXZhdGUiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8g
TmFtZT0iRExMIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkxvY2FsZSI+
MTAzMzwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkNvZGVQYWdlIj4xMjUyPC9WZXJz
aW9uSW5mbz48L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBO
YW1lPSJDb21wYW55TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1l
PSJGaWxlRGVzY3JpcHRpb24iPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFt
ZT0iRmlsZVZlcnNpb24iPjEuMC4wLjA8L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlz
IE5hbWU9IkludGVybmFsTmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBO
YW1lPSJMZWdhbENvcHlyaWdodCI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBO
YW1lPSJMZWdhbFRyYWRlbWFya3MiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMg
TmFtZT0iT3JpZ2luYWxGaWxlbmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5
cyBOYW1lPSJQcm9kdWN0TmFtZSI+PC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBO
YW1lPSJQcm9kdWN0VmVyc2lvbiI+MS4wLjAuMDwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5m
b0tleXMgTmFtZT0iQ29tbWVudHMiPjwvVmVyc2lvbkluZm9LZXlzPjwvVmVyc2lvbkluZm9LZXlz
PjxEZWJ1Z2dpbmc+PERlYnVnZ2luZyBOYW1lPSJEZWJ1Z1NvdXJjZURpcnMiPjwvRGVidWdnaW5n
PjwvRGVidWdnaW5nPjxQYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJ1blBhcmFtcyI+PC9Q
YXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IkxhdW5jaGVyIj48L1BhcmFtZXRlcnM+PFBhcmFt
ZXRlcnMgTmFtZT0iVXNlTGF1bmNoZXIiPkZhbHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5h
bWU9IkRlYnVnQ1dEIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iSG9zdEFwcGxpY2F0
aW9uIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlSG9zdCI+PC9QYXJhbWV0
ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZVBhdGgiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVy
cyBOYW1lPSJSZW1vdGVQYXJhbXMiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1v
dGVMYXVuY2hlciI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlVzZVJlbW90ZUxhdW5j
aGVyIj5GYWxzZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVDV0QiPjwvUGFy
YW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSZW1vdGVEZWJ1ZyI+RmFsc2U8L1BhcmFtZXRlcnM+
PFBhcmFtZXRlcnMgTmFtZT0iRGVidWcgU3ltYm9scyBTZWFyY2ggUGF0aCI+PC9QYXJhbWV0ZXJz
PjxQYXJhbWV0ZXJzIE5hbWU9IkxvYWRBbGxTeW1ib2xzIj5UcnVlPC9QYXJhbWV0ZXJzPjxQYXJh
bWV0ZXJzIE5hbWU9IkxvYWRVbnNwZWNpZmllZFN5bWJvbHMiPkZhbHNlPC9QYXJhbWV0ZXJzPjwv
UGFyYW1ldGVycz48RXhjbHVkZWRfUGFja2FnZXM+DQotICAgICAgPEV4Y2x1ZGVkX1BhY2thZ2Vz
IE5hbWU9IiQoQkRTKVxiaW5cYmNib2ZmaWNlMmsxMDAuYnBsIj5Db2RlR2VhciBDKytCdWlsZGVy
IE9mZmljZSAyMDAwIFNlcnZlcnMgUGFja2FnZTwvRXhjbHVkZWRfUGFja2FnZXM+DQotICAgICAg
PEV4Y2x1ZGVkX1BhY2thZ2VzIE5hbWU9IiQoQkRTKVxiaW5cYmNib2ZmaWNleHAxMDAuYnBsIj5D
b2RlR2VhciBDKytCdWlsZGVyIE9mZmljZSBYUCBTZXJ2ZXJzIFBhY2thZ2U8L0V4Y2x1ZGVkX1Bh
Y2thZ2VzPg0KLSAgICA8L0V4Y2x1ZGVkX1BhY2thZ2VzPjxMaW5rZXI+PExpbmtlciBOYW1lPSJM
aWJQcmVmaXgiPjwvTGlua2VyPjxMaW5rZXIgTmFtZT0iTGliU3VmZml4Ij48L0xpbmtlcj48TGlu
a2VyIE5hbWU9IkxpYlZlcnNpb24iPjwvTGlua2VyPjwvTGlua2VyPjxQcm9qZWN0UHJvcGVydGll
cz48UHJvamVjdFByb3BlcnRpZXMgTmFtZT0iQXV0b1Nob3dEZXBzIj5GYWxzZTwvUHJvamVjdFBy
b3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5hbWU9Ik1hbmFnZVBhdGhzIj5UcnVlPC9Qcm9q
ZWN0UHJvcGVydGllcz48UHJvamVjdFByb3BlcnRpZXMgTmFtZT0iVmVyaWZ5UGFja2FnZXMiPlRy
dWU8L1Byb2plY3RQcm9wZXJ0aWVzPjwvUHJvamVjdFByb3BlcnRpZXM+PEhpc3RvcnlMaXN0c19o
bEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRlUGF0aCBOYW1lPSJDb3VudCI+Mzwv
SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5h
bWU9Ikl0ZW0wIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRT
KVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5caW5jbHVkZTsuLjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVk
ZVBhdGg+PEhpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0xIj4kKEJEUylcaW5j
bHVkZTskKEJEUylcaW5jbHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7
Li5caW5jbHVkZTsuLjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlMaXN0c19o
bEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0yIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5jbHVkZVxk
aW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxzcmM7Li5cc3JjOy4uXGluY2x1ZGU8L0hp
c3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhp
c3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxJTElOS19MaWJy
YXJ5UGF0aCBOYW1lPSJDb3VudCI+MTwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGg+
PEhpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0wIj4kKEJEUylcbGli
OyQoQkRTKVxsaWJcb2JqOyQoQkRTKVxsaWJccHNkazwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGli
cmFyeVBhdGg+PC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3Rz
X2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJDb3VudCI+MTwvSGlzdG9y
eUxpc3RzX2hsRGVmaW5lcz48SGlzdG9yeUxpc3RzX2hsRGVmaW5lcyBOYW1lPSJJdGVtMCI+Tk9f
U1RSSUNUPC9IaXN0b3J5TGlzdHNfaGxEZWZpbmVzPjwvSGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48
SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6
ZSBOYW1lPSJDb3VudCI+MTwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6ZT48SGlzdG9yeUxp
c3RzX2hsVExJQl9QYWdlU2l6ZSBOYW1lPSJJdGVtMCI+MzI8L0hpc3RvcnlMaXN0c19obFRMSUJf
UGFnZVNpemU+PEhpc3RvcnlMaXN0c19obFRMSUJfUGFnZVNpemUgTmFtZT0iSXRlbTEiPjE2PC9I
aXN0b3J5TGlzdHNfaGxUTElCX1BhZ2VTaXplPjwvSGlzdG9yeUxpc3RzX2hsVExJQl9QYWdlU2l6
ZT48L0NQbHVzUGx1c0J1aWxkZXIuUGVyc29uYWxpdHk+PC9Cb3JsYW5kUHJvamVjdD48L0Jvcmxh
bmRQcm9qZWN0Pg0KLSAgPC9Qcm9qZWN0RXh0ZW5zaW9ucz4NCi0gIDxJbXBvcnQgUHJvamVjdD0i
JChNU0J1aWxkQmluUGF0aClcQm9ybGFuZC5DcHAuVGFyZ2V0cyIgLz4NCi0gIDxJdGVtR3JvdXA+
DQotICAgIDxDcHBDb21waWxlIEluY2x1ZGU9Ii4uXHNyY1xndGVzdF9tYWluLmNjIj4NCi0gICAg
ICA8QnVpbGRPcmRlcj4wPC9CdWlsZE9yZGVyPg0KLSAgICA8L0NwcENvbXBpbGU+DQotICAgIDxC
dWlsZENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWciPg0KLSAgICAgIDxLZXk+Q2ZnXzE8L0tl
eT4NCi0gICAgPC9CdWlsZENvbmZpZ3VyYXRpb24+DQotICAgIDxCdWlsZENvbmZpZ3VyYXRpb24g
SW5jbHVkZT0iUmVsZWFzZSI+DQotICAgICAgPEtleT5DZmdfMjwvS2V5Pg0KLSAgICA8L0J1aWxk
Q29uZmlndXJhdGlvbj4NCi0gIDwvSXRlbUdyb3VwPg0KLTwvUHJvamVjdD4NCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9jb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2ogYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9jb2RlZ2Vhci9ndGVzdF91bml0dGVzdC5jYnByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRjNWRiOGU0ZGE1OS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvZGVn
ZWFyL2d0ZXN0X3VuaXR0ZXN0LmNicHJvagorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAK
Le+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+DQotPFByb2plY3QgeG1s
bnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+
DQotICA8UHJvcGVydHlHcm91cD4NCi0gICAgPFByb2plY3RHdWlkPntlZWE2MzM5My01YWM1LTRi
OWMtODkwOS1kNzVmZWYyZGFhNDF9PC9Qcm9qZWN0R3VpZD4NCi0gICAgPENvbmZpZyBDb25kaXRp
b249IickKENvbmZpZyknPT0nJyI+UmVsZWFzZTwvQ29uZmlnPg0KLSAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J0Jhc2UnIG9yICck
KEJhc2UpJyE9JyciPg0KLSAgICA8QmFzZT50cnVlPC9CYXNlPg0KLSAgPC9Qcm9wZXJ0eUdyb3Vw
Pg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWcpJz09J0RlYnVnJyBvciAn
JChDZmdfMSknIT0nJyI+DQotICAgIDxCYXNlPnRydWU8L0Jhc2U+DQotICAgIDxDZmdfMT50cnVl
PC9DZmdfMT4NCi0gICAgPENmZ1BhcmVudD5CYXNlPC9DZmdQYXJlbnQ+DQotICA8L1Byb3BlcnR5
R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZyknPT0nUmVsZWFz
ZScgb3IgJyQoQ2ZnXzIpJyE9JyciPg0KLSAgICA8QmFzZT50cnVlPC9CYXNlPg0KLSAgICA8Q2Zn
XzI+dHJ1ZTwvQ2ZnXzI+DQotICAgIDxDZmdQYXJlbnQ+QmFzZTwvQ2ZnUGFyZW50Pg0KLSAgPC9Q
cm9wZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChCYXNlKSchPScn
Ij4NCi0gICAgPE91dHB1dEV4dD5leGU8L091dHB1dEV4dD4NCi0gICAgPEJDQ19PcHRpbWl6ZUZv
clNwZWVkPnRydWU8L0JDQ19PcHRpbWl6ZUZvclNwZWVkPg0KLSAgICA8RGVmaW5lcz5OT19TVFJJ
Q1Q8L0RlZmluZXM+DQotICAgIDxEQ0NfQ0J1aWxkZXJPdXRwdXQ+SlBITkU8L0RDQ19DQnVpbGRl
ck91dHB1dD4NCi0gICAgPER5bmFtaWNSVEw+dHJ1ZTwvRHluYW1pY1JUTD4NCi0gICAgPElMSU5L
X09iamVjdFNlYXJjaFBhdGg+Li5cdGVzdDwvSUxJTktfT2JqZWN0U2VhcmNoUGF0aD4NCi0gICAg
PFVzZVBhY2thZ2VzPnRydWU8L1VzZVBhY2thZ2VzPg0KLSAgICA8UHJvamVjdFR5cGU+Q3BwQ29u
c29sZUFwcGxpY2F0aW9uPC9Qcm9qZWN0VHlwZT4NCi0gICAgPE5vVkNMPnRydWU8L05vVkNMPg0K
LSAgICA8QkNDX0NQUENvbXBpbGVBbHdheXM+dHJ1ZTwvQkNDX0NQUENvbXBpbGVBbHdheXM+DQot
ICAgIDxQYWNrYWdlSW1wb3J0cz5ydGwuYnBpO3ZjbC5icGk7YmNiaWUuYnBpO3ZjbHguYnBpO3Zj
bGFjdG5iYW5kLmJwaTt4bWxydGwuYnBpO2JjYnNtcC5icGk7ZGJydGwuYnBpO3ZjbGRiLmJwaTti
ZGVydGwuYnBpO3ZjbGRieC5icGk7ZHNuYXAuYnBpO2RzbmFwY29uLmJwaTt2Y2xpYi5icGk7aWJ4
cHJlc3MuYnBpO2Fkb3J0bC5icGk7ZGJ4Y2RzLmJwaTtkYmV4cHJlc3MuYnBpO0RieENvbW1vbkRy
aXZlci5icGk7d2Vic25hcC5icGk7dmNsaWUuYnBpO3dlYmRzbmFwLmJwaTtpbmV0LmJwaTtpbmV0
ZGJiZGUuYnBpO2luZXRkYnhwcmVzcy5icGk7c29hcHJ0bC5icGk7UmF2ZTc1VkNMLmJwaTt0ZWVV
SS5icGk7dGVlLmJwaTt0ZWVkYi5icGk7SW5keUNvcmUuYnBpO0luZHlTeXN0ZW0uYnBpO0luZHlQ
cm90b2NvbHMuYnBpO0ludHJhd2ViREJfOTBfMTAwLmJwaTtJbnRyYXdlYl85MF8xMDAuYnBpO0pj
bC5icGk7SmNsVmNsLmJwaTtKdkNvcmVEMTFSLmJwaTtKdlN5c3RlbUQxMVIuYnBpO0p2U3RkQ3Ry
bHNEMTFSLmJwaTtKdkFwcEZybUQxMVIuYnBpO0p2QmFuZHNEMTFSLmJwaTtKdkRCRDExUi5icGk7
SnZEbGdzRDExUi5icGk7SnZCREVEMTFSLmJwaTtKdkNtcEQxMVIuYnBpO0p2Q3J5cHREMTFSLmJw
aTtKdkN0cmxzRDExUi5icGk7SnZDdXN0b21EMTFSLmJwaTtKdkRvY2tpbmdEMTFSLmJwaTtKdkRv
dE5ldEN0cmxzRDExUi5icGk7SnZFRElEMTFSLmJwaTtKdkdsb2J1c0QxMVIuYnBpO0p2SE1JRDEx
Ui5icGk7SnZJbnRlcnByZXRlckQxMVIuYnBpO0p2SmFuc0QxMVIuYnBpO0p2TWFuYWdlZFRocmVh
ZHNEMTFSLmJwaTtKdk1NRDExUi5icGk7SnZOZXREMTFSLmJwaTtKdlBhZ2VDb21wc0QxMVIuYnBp
O0p2UGx1Z2luRDExUi5icGk7SnZQcmludFByZXZpZXdEMTFSLmJwaTtKdlJ1bnRpbWVEZXNpZ25E
MTFSLmJwaTtKdlRpbWVGcmFtZXdvcmtEMTFSLmJwaTtKdlZhbGlkYXRvcnNEMTFSLmJwaTtKdldp
emFyZEQxMVIuYnBpO0p2WFBDdHJsc0QxMVIuYnBpO1ZjbFNtcC5icGk8L1BhY2thZ2VJbXBvcnRz
Pg0KLSAgICA8QkNDX3dwYXI+ZmFsc2U8L0JDQ193cGFyPg0KLSAgICA8SW5jbHVkZVBhdGg+JChC
RFMpXGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vtd2FyZTskKEJEUylcaW5jbHVkZVx2Y2w7
Li5caW5jbHVkZTsuLlx0ZXN0Oy4uPC9JbmNsdWRlUGF0aD4NCi0gICAgPElMSU5LX0xpYnJhcnlQ
YXRoPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2RrOy4uXHRlc3Q8L0lM
SU5LX0xpYnJhcnlQYXRoPg0KLSAgICA8TXVsdGl0aHJlYWRlZD50cnVlPC9NdWx0aXRocmVhZGVk
Pg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChD
ZmdfMSknIT0nJyI+DQotICAgIDxCQ0NfT3B0aW1pemVGb3JTcGVlZD5mYWxzZTwvQkNDX09wdGlt
aXplRm9yU3BlZWQ+DQotICAgIDxEQ0NfT3B0aW1pemU+ZmFsc2U8L0RDQ19PcHRpbWl6ZT4NCi0g
ICAgPERDQ19EZWJ1Z0luZm9JbkV4ZT50cnVlPC9EQ0NfRGVidWdJbmZvSW5FeGU+DQotICAgIDxE
ZWZpbmVzPl9ERUJVRzskKERlZmluZXMpPC9EZWZpbmVzPg0KLSAgICA8SUxJTktfRnVsbERlYnVn
SW5mbz50cnVlPC9JTElOS19GdWxsRGVidWdJbmZvPg0KLSAgICA8QkNDX0lubGluZUZ1bmN0aW9u
RXhwYW5zaW9uPmZhbHNlPC9CQ0NfSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+DQotICAgIDxJTElO
S19EaXNhYmxlSW5jcmVtZW50YWxMaW5raW5nPnRydWU8L0lMSU5LX0Rpc2FibGVJbmNyZW1lbnRh
bExpbmtpbmc+DQotICAgIDxCQ0NfVXNlUmVnaXN0ZXJWYXJpYWJsZXM+Tm9uZTwvQkNDX1VzZVJl
Z2lzdGVyVmFyaWFibGVzPg0KLSAgICA8RENDX0RlZmluZT5ERUJVRzwvRENDX0RlZmluZT4NCi0g
ICAgPEJDQ19EZWJ1Z0xpbmVOdW1iZXJzPnRydWU8L0JDQ19EZWJ1Z0xpbmVOdW1iZXJzPg0KLSAg
ICA8SW50ZXJtZWRpYXRlT3V0cHV0RGlyPkRlYnVnPC9JbnRlcm1lZGlhdGVPdXRwdXREaXI+DQot
ICAgIDxUQVNNX0Rpc3BsYXlTb3VyY2VMaW5lcz50cnVlPC9UQVNNX0Rpc3BsYXlTb3VyY2VMaW5l
cz4NCi0gICAgPEJDQ19TdGFja0ZyYW1lcz50cnVlPC9CQ0NfU3RhY2tGcmFtZXM+DQotICAgIDxC
Q0NfRGlzYWJsZU9wdGltaXphdGlvbnM+dHJ1ZTwvQkNDX0Rpc2FibGVPcHRpbWl6YXRpb25zPg0K
LSAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYlxkZWJ1ZzskKElMSU5LX0xpYnJhcnlQ
YXRoKTwvSUxJTktfTGlicmFyeVBhdGg+DQotICAgIDxUQVNNX0RlYnVnZ2luZz5GdWxsPC9UQVNN
X0RlYnVnZ2luZz4NCi0gICAgPEJDQ19Tb3VyY2VEZWJ1Z2dpbmdPbj50cnVlPC9CQ0NfU291cmNl
RGVidWdnaW5nT24+DQotICA8L1Byb3BlcnR5R3JvdXA+DQotICA8UHJvcGVydHlHcm91cCBDb25k
aXRpb249IickKENmZ18yKSchPScnIj4NCi0gICAgPERlZmluZXM+TkRFQlVHOyQoRGVmaW5lcyk8
L0RlZmluZXM+DQotICAgIDxJbnRlcm1lZGlhdGVPdXRwdXREaXI+UmVsZWFzZTwvSW50ZXJtZWRp
YXRlT3V0cHV0RGlyPg0KLSAgICA8SUxJTktfTGlicmFyeVBhdGg+JChCRFMpXGxpYlxyZWxlYXNl
OyQoSUxJTktfTGlicmFyeVBhdGgpPC9JTElOS19MaWJyYXJ5UGF0aD4NCi0gICAgPFRBU01fRGVi
dWdnaW5nPk5vbmU8L1RBU01fRGVidWdnaW5nPg0KLSAgPC9Qcm9wZXJ0eUdyb3VwPg0KLSAgPFBy
b2plY3RFeHRlbnNpb25zPg0KLSAgICA8Qm9ybGFuZC5QZXJzb25hbGl0eT5DUGx1c1BsdXNCdWls
ZGVyLlBlcnNvbmFsaXR5PC9Cb3JsYW5kLlBlcnNvbmFsaXR5Pg0KLSAgICA8Qm9ybGFuZC5Qcm9q
ZWN0VHlwZT5DcHBDb25zb2xlQXBwbGljYXRpb248L0JvcmxhbmQuUHJvamVjdFR5cGU+DQotICAg
IDxCb3JsYW5kUHJvamVjdD4NCi08Qm9ybGFuZFByb2plY3Q+PENQbHVzUGx1c0J1aWxkZXIuUGVy
c29uYWxpdHk+PFZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJJbmNsdWRlVmVySW5mbyI+
RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJBdXRvSW5jQnVpbGQiPkZhbHNl
PC9WZXJzaW9uSW5mbz48VmVyc2lvbkluZm8gTmFtZT0iTWFqb3JWZXIiPjE8L1ZlcnNpb25JbmZv
PjxWZXJzaW9uSW5mbyBOYW1lPSJNaW5vclZlciI+MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZv
IE5hbWU9IlJlbGVhc2UiPjA8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJCdWlsZCI+
MDwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkRlYnVnIj5GYWxzZTwvVmVyc2lvbklu
Zm8+PFZlcnNpb25JbmZvIE5hbWU9IlByZVJlbGVhc2UiPkZhbHNlPC9WZXJzaW9uSW5mbz48VmVy
c2lvbkluZm8gTmFtZT0iU3BlY2lhbCI+RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBO
YW1lPSJQcml2YXRlIj5GYWxzZTwvVmVyc2lvbkluZm8+PFZlcnNpb25JbmZvIE5hbWU9IkRMTCI+
RmFsc2U8L1ZlcnNpb25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJMb2NhbGUiPjEwMzM8L1ZlcnNp
b25JbmZvPjxWZXJzaW9uSW5mbyBOYW1lPSJDb2RlUGFnZSI+MTI1MjwvVmVyc2lvbkluZm8+PC9W
ZXJzaW9uSW5mbz48VmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iQ29tcGFu
eU5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iRmlsZURlc2Ny
aXB0aW9uIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9IkZpbGVWZXJz
aW9uIj4xLjAuMC4wPC9WZXJzaW9uSW5mb0tleXM+PFZlcnNpb25JbmZvS2V5cyBOYW1lPSJJbnRl
cm5hbE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iTGVnYWxD
b3B5cmlnaHQiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iTGVnYWxU
cmFkZW1hcmtzIj48L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9Ik9yaWdp
bmFsRmlsZW5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iUHJv
ZHVjdE5hbWUiPjwvVmVyc2lvbkluZm9LZXlzPjxWZXJzaW9uSW5mb0tleXMgTmFtZT0iUHJvZHVj
dFZlcnNpb24iPjEuMC4wLjA8L1ZlcnNpb25JbmZvS2V5cz48VmVyc2lvbkluZm9LZXlzIE5hbWU9
IkNvbW1lbnRzIj48L1ZlcnNpb25JbmZvS2V5cz48L1ZlcnNpb25JbmZvS2V5cz48RGVidWdnaW5n
PjxEZWJ1Z2dpbmcgTmFtZT0iRGVidWdTb3VyY2VEaXJzIj48L0RlYnVnZ2luZz48L0RlYnVnZ2lu
Zz48UGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJSdW5QYXJhbXMiPjwvUGFyYW1ldGVycz48
UGFyYW1ldGVycyBOYW1lPSJMYXVuY2hlciI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9
IlVzZUxhdW5jaGVyIj5GYWxzZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJEZWJ1Z0NX
RCI+PC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9Ikhvc3RBcHBsaWNhdGlvbiI+PC9QYXJh
bWV0ZXJzPjxQYXJhbWV0ZXJzIE5hbWU9IlJlbW90ZUhvc3QiPjwvUGFyYW1ldGVycz48UGFyYW1l
dGVycyBOYW1lPSJSZW1vdGVQYXRoIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVt
b3RlUGFyYW1zIj48L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlTGF1bmNoZXIi
PjwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1lPSJVc2VSZW1vdGVMYXVuY2hlciI+RmFsc2U8
L1BhcmFtZXRlcnM+PFBhcmFtZXRlcnMgTmFtZT0iUmVtb3RlQ1dEIj48L1BhcmFtZXRlcnM+PFBh
cmFtZXRlcnMgTmFtZT0iUmVtb3RlRGVidWciPkZhbHNlPC9QYXJhbWV0ZXJzPjxQYXJhbWV0ZXJz
IE5hbWU9IkRlYnVnIFN5bWJvbHMgU2VhcmNoIFBhdGgiPjwvUGFyYW1ldGVycz48UGFyYW1ldGVy
cyBOYW1lPSJMb2FkQWxsU3ltYm9scyI+VHJ1ZTwvUGFyYW1ldGVycz48UGFyYW1ldGVycyBOYW1l
PSJMb2FkVW5zcGVjaWZpZWRTeW1ib2xzIj5GYWxzZTwvUGFyYW1ldGVycz48L1BhcmFtZXRlcnM+
PEV4Y2x1ZGVkX1BhY2thZ2VzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIDxFeGNsdWRlZF9Q
YWNrYWdlcyBOYW1lPSIkKEJEUylcYmluXGJjYm9mZmljZTJrMTAwLmJwbCI+Q29kZUdlYXIgQysr
QnVpbGRlciBPZmZpY2UgMjAwMCBTZXJ2ZXJzIFBhY2thZ2U8L0V4Y2x1ZGVkX1BhY2thZ2VzPg0K
LSAgICAgIDxFeGNsdWRlZF9QYWNrYWdlcyBOYW1lPSIkKEJEUylcYmluXGJjYm9mZmljZXhwMTAw
LmJwbCI+Q29kZUdlYXIgQysrQnVpbGRlciBPZmZpY2UgWFAgU2VydmVycyBQYWNrYWdlPC9FeGNs
dWRlZF9QYWNrYWdlcz4NCi0gICAgPC9FeGNsdWRlZF9QYWNrYWdlcz48TGlua2VyPjxMaW5rZXIg
TmFtZT0iTGliUHJlZml4Ij48L0xpbmtlcj48TGlua2VyIE5hbWU9IkxpYlN1ZmZpeCI+PC9MaW5r
ZXI+PExpbmtlciBOYW1lPSJMaWJWZXJzaW9uIj48L0xpbmtlcj48L0xpbmtlcj48UHJvamVjdFBy
b3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5hbWU9IkF1dG9TaG93RGVwcyI+RmFsc2U8L1By
b2plY3RQcm9wZXJ0aWVzPjxQcm9qZWN0UHJvcGVydGllcyBOYW1lPSJNYW5hZ2VQYXRocyI+VHJ1
ZTwvUHJvamVjdFByb3BlcnRpZXM+PFByb2plY3RQcm9wZXJ0aWVzIE5hbWU9IlZlcmlmeVBhY2th
Z2VzIj5UcnVlPC9Qcm9qZWN0UHJvcGVydGllcz48L1Byb2plY3RQcm9wZXJ0aWVzPjxIaXN0b3J5
TGlzdHNfaGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iQ291
bnQiPjM8L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlzdHNfaGxJbmNsdWRl
UGF0aCBOYW1lPSJJdGVtMCI+JChCRFMpXGluY2x1ZGU7JChCRFMpXGluY2x1ZGVcZGlua3Vtd2Fy
ZTskKEJEUylcaW5jbHVkZVx2Y2w7Li5caW5jbHVkZTsuLlx0ZXN0Oy4uPC9IaXN0b3J5TGlzdHNf
aGxJbmNsdWRlUGF0aD48SGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGggTmFtZT0iSXRlbTEiPiQo
QkRTKVxpbmNsdWRlOyQoQkRTKVxpbmNsdWRlXGRpbmt1bXdhcmU7JChCRFMpXGluY2x1ZGVcdmNs
Oy4uXGluY2x1ZGU7Li5cdGVzdDwvSGlzdG9yeUxpc3RzX2hsSW5jbHVkZVBhdGg+PEhpc3RvcnlM
aXN0c19obEluY2x1ZGVQYXRoIE5hbWU9Ikl0ZW0yIj4kKEJEUylcaW5jbHVkZTskKEJEUylcaW5j
bHVkZVxkaW5rdW13YXJlOyQoQkRTKVxpbmNsdWRlXHZjbDsuLlxpbmNsdWRlPC9IaXN0b3J5TGlz
dHNfaGxJbmNsdWRlUGF0aD48L0hpc3RvcnlMaXN0c19obEluY2x1ZGVQYXRoPjxIaXN0b3J5TGlz
dHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBhdGgg
TmFtZT0iQ291bnQiPjE8L0hpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5
TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aCBOYW1lPSJJdGVtMCI+JChCRFMpXGxpYjskKEJEUylc
bGliXG9iajskKEJEUylcbGliXHBzZGs7Li5cdGVzdDwvSGlzdG9yeUxpc3RzX2hsSUxJTktfTGli
cmFyeVBhdGg+PEhpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoIE5hbWU9Ikl0ZW0xIj4k
KEJEUylcbGliOyQoQkRTKVxsaWJcb2JqOyQoQkRTKVxsaWJccHNkazsuLlx0ZXN0PC9IaXN0b3J5
TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48SGlzdG9yeUxpc3RzX2hsSUxJTktfTGlicmFyeVBh
dGggTmFtZT0iSXRlbTIiPiQoQkRTKVxsaWI7JChCRFMpXGxpYlxvYmo7JChCRFMpXGxpYlxwc2Rr
OyQoT1VUUFVURElSKTsuLlx0ZXN0PC9IaXN0b3J5TGlzdHNfaGxJTElOS19MaWJyYXJ5UGF0aD48
L0hpc3RvcnlMaXN0c19obElMSU5LX0xpYnJhcnlQYXRoPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVz
PjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzIE5hbWU9IkNvdW50Ij4yPC9IaXN0b3J5TGlzdHNfaGxE
ZWZpbmVzPjxIaXN0b3J5TGlzdHNfaGxEZWZpbmVzIE5hbWU9Ikl0ZW0wIj5OT19TVFJJQ1Q8L0hp
c3RvcnlMaXN0c19obERlZmluZXM+PEhpc3RvcnlMaXN0c19obERlZmluZXMgTmFtZT0iSXRlbTEi
PlNUUklDVDwvSGlzdG9yeUxpc3RzX2hsRGVmaW5lcz48L0hpc3RvcnlMaXN0c19obERlZmluZXM+
PC9DUGx1c1BsdXNCdWlsZGVyLlBlcnNvbmFsaXR5PjwvQm9ybGFuZFByb2plY3Q+PC9Cb3JsYW5k
UHJvamVjdD4NCi0gIDwvUHJvamVjdEV4dGVuc2lvbnM+DQotICA8SW1wb3J0IFByb2plY3Q9IiQo
TVNCdWlsZEJpblBhdGgpXEJvcmxhbmQuQ3BwLlRhcmdldHMiIC8+DQotICA8SXRlbUdyb3VwPg0K
LSAgICA8Q3BwQ29tcGlsZSBJbmNsdWRlPSIuLlx0ZXN0XGd0ZXN0X3VuaXR0ZXN0LmNjIj4NCi0g
ICAgICA8QnVpbGRPcmRlcj4wPC9CdWlsZE9yZGVyPg0KLSAgICA8L0NwcENvbXBpbGU+DQotICAg
IDxDcHBDb21waWxlIEluY2x1ZGU9Imd0ZXN0X2xpbmsuY2MiPg0KLSAgICAgIDxCdWlsZE9yZGVy
PjE8L0J1aWxkT3JkZXI+DQotICAgIDwvQ3BwQ29tcGlsZT4NCi0gICAgPEJ1aWxkQ29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1ZyI+DQotICAgICAgPEtleT5DZmdfMTwvS2V5Pg0KLSAgICA8L0J1
aWxkQ29uZmlndXJhdGlvbj4NCi0gICAgPEJ1aWxkQ29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxl
YXNlIj4NCi0gICAgICA8S2V5PkNmZ18yPC9LZXk+DQotICAgIDwvQnVpbGRDb25maWd1cmF0aW9u
Pg0KLSAgPC9JdGVtR3JvdXA+DQotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2NvbmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2Nv
bmZpZ3VyZS5hYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M1OTJlMTU4MzAyLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvY29uZmlndXJlLmFjCisrKyAvZGV2L251bGwK
QEAgLTEsNjggKzAsMCBAQAotbTRfaW5jbHVkZShtNC9hY3hfcHRocmVhZC5tNCkKLQotIyBBdCB0
aGlzIHBvaW50LCB0aGUgWGNvZGUgcHJvamVjdCBhc3N1bWVzIHRoZSB2ZXJzaW9uIHN0cmluZyB3
aWxsIGJlIHRocmVlCi0jIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3Vu
ZGVkIGJ5IHNxdWFyZSBicmFja2V0cyAoZS5nLgotIyAiWzEuMC4xXSIpLiBJdCBhbHNvIGFzdW1l
cyB0aGF0IHRoZXJlIHdvbid0IGJlIGFueSBjbG9zaW5nIHBhcmVudGhlc2lzCi0jIGJldHdlZW4g
IkFDX0lOSVQoIiBhbmQgdGhlIGNsb3NpbmcgIikiIGluY2x1ZGluZyBjb21tZW50cyBhbmQgc3Ry
aW5ncy4KLUFDX0lOSVQoW0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtdLAotICAgICAgICBb
MS43LjBdLAotICAgICAgICBbZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tXSwK
LSAgICAgICAgW2d0ZXN0XSkKLQotIyBQcm92aWRlIHZhcmlvdXMgb3B0aW9ucyB0byBpbml0aWFs
aXplIHRoZSBBdXRvY29uZiBhbmQgY29uZmlndXJlIHByb2Nlc3Nlcy4KLUFDX1BSRVJFUShbMi41
OV0pCi1BQ19DT05GSUdfU1JDRElSKFsuL0xJQ0VOU0VdKQotQUNfQ09ORklHX01BQ1JPX0RJUihb
bTRdKQotQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi1BQ19DT05GSUdfSEVBREVSUyhb
YnVpbGQtYXV4L2NvbmZpZy5oXSkKLUFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQotQUNfQ09O
RklHX0ZJTEVTKFtzY3JpcHRzL2d0ZXN0LWNvbmZpZ10sIFtjaG1vZCAreCBzY3JpcHRzL2d0ZXN0
LWNvbmZpZ10pCi0KLSMgSW5pdGlhbGl6ZSBBdXRvbWFrZSB3aXRoIHZhcmlvdXMgb3B0aW9ucy4g
V2UgcmVxdWlyZSBhdCBsZWFzdCB2MS45LCBwcmV2ZW50Ci0jIHBlZGFudGljIGNvbXBsYWludHMg
YWJvdXQgcGFja2FnZSBmaWxlcywgYW5kIGVuYWJsZSB2YXJpb3VzIGRpc3RyaWJ1dGlvbgotIyB0
YXJnZXRzLgotQU1fSU5JVF9BVVRPTUFLRShbMS45IGRpc3QtYnppcDIgZGlzdC16aXAgZm9yZWln
biBzdWJkaXItb2JqZWN0c10pCi0KLSMgQ2hlY2sgZm9yIHByb2dyYW1zIHVzZWQgaW4gYnVpbGRp
bmcgR29vZ2xlIFRlc3QuCi1BQ19QUk9HX0NDCi1BQ19QUk9HX0NYWAotQUNfTEFORyhbQysrXSkK
LUFDX1BST0dfTElCVE9PTAotCi0jIFRPRE8oY2hhbmRsZXJjQGdvb2dsZS5jb20pOiBDdXJyZW50
bHkgd2UgYXJlbid0IHJ1bm5pbmcgdGhlIFB5dGhvbiB0ZXN0cwotIyBhZ2FpbnN0IHRoZSBpbnRl
cnByZXRlciBkZXRlY3RlZCBieSBBTV9QQVRIX1BZVEhPTiwgYW5kIHNvIHdlIGNvbmRpdGlvbgot
IyBIQVZFX1BZVEhPTiBieSByZXF1aXJpbmcgInB5dGhvbiIgdG8gYmUgaW4gdGhlIFBBVEgsIGFu
ZCB0aGF0IGludGVycHJldGVyJ3MKLSMgdmVyc2lvbiB0byBiZSA+PSAyLjMuIFRoaXMgd2lsbCBh
bGxvdyB0aGUgc2NyaXB0cyB0byB1c2UgYSAiL3Vzci9iaW4vZW52IgotIyBoYXNoYmFuZy4KLVBZ
VEhPTj0gICMgV2UgKmRvIG5vdCogYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIHB5dGhvbiBp
bnRlcnByZXRlcgotQUNfUEFUSF9QUk9HKFtQWVRIT05dLFtweXRob25dLFs6XSkKLUFTX0lGKFt0
ZXN0ICIkUFlUSE9OIiAhPSAiOiJdLAotICAgICAgW0FNX1BZVEhPTl9DSEVDS19WRVJTSU9OKFsk
UFlUSE9OXSxbMi4zXSxbOl0sW1BZVEhPTj0iOiJdKV0pCi1BTV9DT05ESVRJT05BTChbSEFWRV9Q
WVRIT05dLFt0ZXN0ICIkUFlUSE9OIiAhPSAiOiJdKQotCi0jIENvbmZpZ3VyZSBwdGhyZWFkcy4K
LUFDX0FSR19XSVRIKFtwdGhyZWFkc10sCi0gICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0t
d2l0aC1wdGhyZWFkc10sCi0gICAgICAgICAgICAgICBbdXNlIHB0aHJlYWRzIChkZWZhdWx0IGlz
IHllcyldKV0sCi0gICAgICAgICAgICBbd2l0aF9wdGhyZWFkcz0kd2l0aHZhbF0sCi0gICAgICAg
ICAgICBbd2l0aF9wdGhyZWFkcz1jaGVja10pCi0KLWhhdmVfcHRocmVhZHM9bm8KLUFTX0lGKFt0
ZXN0ICJ4JHdpdGhfcHRocmVhZHMiICE9ICJ4bm8iXSwKLSAgICAgIFtBQ1hfUFRIUkVBRCgKLSAg
ICAgICAgW10sCi0gICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRoX3B0aHJlYWRzIiAhPSAieGNo
ZWNrIl0sCi0gICAgICAgICAgICAgICBbQUNfTVNHX0ZBSUxVUkUoCi0gICAgICAgICAgICAgICAg
IFstLXdpdGgtcHRocmVhZHMgd2FzIHNwZWNpZmllZCwgYnV0IHVuYWJsZSB0byBiZSB1c2VkXSld
KV0pCi0gICAgICAgaGF2ZV9wdGhyZWFkcz0iJGFjeF9wdGhyZWFkX29rIl0pCi1BTV9DT05ESVRJ
T05BTChbSEFWRV9QVEhSRUFEU10sW3Rlc3QgIngkaGF2ZV9wdGhyZWFkcyIgPSAieHllcyJdKQot
QUNfU1VCU1QoUFRIUkVBRF9DRkxBR1MpCi1BQ19TVUJTVChQVEhSRUFEX0xJQlMpCi0KLSMgVE9E
TyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSkgQ2hlY2sgZm9yIHRoZSBuZWNlc3Nhcnkgc3lzdGVtIGhl
YWRlcnMuCi0KLSMgVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSkgQ2hlY2sgdGhlIHR5cGVzLCBz
dHJ1Y3R1cmVzLCBhbmQgb3RoZXIgY29tcGlsZXIKLSMgYW5kIGFyY2hpdGVjdHVyZSBjaGFyYWN0
ZXJpc3RpY3MuCi0KLSMgT3V0cHV0IHRoZSBnZW5lcmF0ZWQgZmlsZXMuIE5vIGZ1cnRoZXIgYXV0
b2NvbmYgbWFjcm9zIG1heSBiZSB1c2VkLgotQUNfT1VUUFVUCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL0FkdmFuY2VkR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0FkdmFuY2VkR3Vp
ZGUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYTY1MjAwZGFkYi4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvQWR2YW5jZWRHdWlkZS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDIxODIgKzAsMCBAQAotCi0KLU5vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1l
cl0oUHJpbWVyLm1kKSBhbmQgbGVhcm5lZCBob3cgdG8gd3JpdGUgdGVzdHMKLXVzaW5nIEdvb2ds
ZSBUZXN0LCBpdCdzIHRpbWUgdG8gbGVhcm4gc29tZSBuZXcgdHJpY2tzLiBUaGlzIGRvY3VtZW50
Ci13aWxsIHNob3cgeW91IG1vcmUgYXNzZXJ0aW9ucyBhcyB3ZWxsIGFzIGhvdyB0byBjb25zdHJ1
Y3QgY29tcGxleAotZmFpbHVyZSBtZXNzYWdlcywgcHJvcGFnYXRlIGZhdGFsIGZhaWx1cmVzLCBy
ZXVzZSBhbmQgc3BlZWQgdXAgeW91cgotdGVzdCBmaXh0dXJlcywgYW5kIHVzZSB2YXJpb3VzIGZs
YWdzIHdpdGggeW91ciB0ZXN0cy4KLQotIyBNb3JlIEFzc2VydGlvbnMgIwotCi1UaGlzIHNlY3Rp
b24gY292ZXJzIHNvbWUgbGVzcyBmcmVxdWVudGx5IHVzZWQsIGJ1dCBzdGlsbCBzaWduaWZpY2Fu
dCwKLWFzc2VydGlvbnMuCi0KLSMjIEV4cGxpY2l0IFN1Y2Nlc3MgYW5kIEZhaWx1cmUgIyMKLQot
VGhlc2UgdGhyZWUgYXNzZXJ0aW9ucyBkbyBub3QgYWN0dWFsbHkgdGVzdCBhIHZhbHVlIG9yIGV4
cHJlc3Npb24uIEluc3RlYWQsCi10aGV5IGdlbmVyYXRlIGEgc3VjY2VzcyBvciBmYWlsdXJlIGRp
cmVjdGx5LiBMaWtlIHRoZSBtYWNyb3MgdGhhdCBhY3R1YWxseQotcGVyZm9ybSBhIHRlc3QsIHlv
dSBtYXkgc3RyZWFtIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSBpbnRvIHRoZSB0aGVtLgotCi18
IGBTVUNDRUVEKCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS18Ci0KLUdlbmVyYXRlcyBhIHN1Y2Nlc3Mu
IFRoaXMgZG9lcyBOT1QgbWFrZSB0aGUgb3ZlcmFsbCB0ZXN0IHN1Y2NlZWQuIEEgdGVzdCBpcwot
Y29uc2lkZXJlZCBzdWNjZXNzZnVsIG9ubHkgaWYgbm9uZSBvZiBpdHMgYXNzZXJ0aW9ucyBmYWls
IGR1cmluZyBpdHMgZXhlY3V0aW9uLgotCi1Ob3RlOiBgU1VDQ0VFRCgpYCBpcyBwdXJlbHkgZG9j
dW1lbnRhcnkgYW5kIGN1cnJlbnRseSBkb2Vzbid0IGdlbmVyYXRlIGFueQotdXNlci12aXNpYmxl
IG91dHB1dC4gSG93ZXZlciwgd2UgbWF5IGFkZCBgU1VDQ0VFRCgpYCBtZXNzYWdlcyB0byBHb29n
bGUgVGVzdCdzCi1vdXRwdXQgaW4gdGhlIGZ1dHVyZS4KLQotfCBgRkFJTCgpO2AgIHwgYEFERF9G
QUlMVVJFKCk7YCB8IGBBRERfRkFJTFVSRV9BVCgiYF9maWxlXF9wYXRoX2AiLCBgX2xpbmVcX251
bWJlcl9gKTtgIHwKLXw6LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0KLWBGQUlMKClg
IGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHdoaWxlIGBBRERfRkFJTFVSRSgpYCBhbmQgYEFE
RF9GQUlMVVJFX0FUKClgIGdlbmVyYXRlIGEgbm9uZmF0YWwKLWZhaWx1cmUuIFRoZXNlIGFyZSB1
c2VmdWwgd2hlbiBjb250cm9sIGZsb3csIHJhdGhlciB0aGFuIGEgQm9vbGVhbiBleHByZXNzaW9u
LAotZGV0ZXJlbWluZXMgdGhlIHRlc3QncyBzdWNjZXNzIG9yIGZhaWx1cmUuIEZvciBleGFtcGxl
LCB5b3UgbWlnaHQgd2FudCB0byB3cml0ZQotc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotc3dpdGNo
KGV4cHJlc3Npb24pIHsKLSAgY2FzZSAxOiAuLi4gc29tZSBjaGVja3MgLi4uCi0gIGNhc2UgMjog
Li4uIHNvbWUgb3RoZXIgY2hlY2tzCi0gIC4uLgotICBkZWZhdWx0OiBGQUlMKCkgPDwgIldlIHNo
b3VsZG4ndCBnZXQgaGVyZS4iOwotfQotYGBgCi0KLU5vdGU6IHlvdSBjYW4gb25seSB1c2UgYEZB
SUwoKWAgaW4gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGB2b2lkYC4gU2VlIHRoZSBbQXNzZXJ0aW9u
IFBsYWNlbWVudCBzZWN0aW9uXSgjYXNzZXJ0aW9uLXBsYWNlbWVudCkgZm9yIG1vcmUgaW5mb3Jt
YXRpb24uCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBFeGNl
cHRpb24gQXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhcmUgZm9yIHZlcmlmeWluZyB0aGF0IGEgcGll
Y2Ugb2YgY29kZSB0aHJvd3MgKG9yIGRvZXMgbm90Ci10aHJvdykgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2Vy
dGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1RIUk9XKGBfc3RhdGVt
ZW50XywgX2V4Y2VwdGlvblxfdHlwZV9gKTtgICB8IGBFWFBFQ1RfVEhST1coYF9zdGF0ZW1lbnRf
LCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlv
biBvZiB0aGUgZ2l2ZW4gdHlwZSAgfAotfCBgQVNTRVJUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9g
KTtgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9BTllfVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAg
ICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIHRocm93cyBhbiBleGNlcHRpb24gb2YgYW55IHR5
cGUgICAgICAgIHwKLXwgYEFTU0VSVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgICB8IGBFWFBFQ1RfTk9fVEhST1coYF9zdGF0ZW1lbnRfYCk7YCAgICAgICAgICAgICAg
ICAgfCBfc3RhdGVtZW50XyBkb2Vzbid0IHRocm93IGFueSBleGNlcHRpb24gICAgICAgICAgICB8
Ci0KLUV4YW1wbGVzOgotCi1gYGAKLUFTU0VSVF9USFJPVyhGb28oNSksIGJhcl9leGNlcHRpb24p
OwotCi1FWFBFQ1RfTk9fVEhST1coewotICBpbnQgbiA9IDU7Ci0gIEJhcigmbik7Ci19KTsKLWBg
YAotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAx
LjEuMC4KLQotIyMgUHJlZGljYXRlIEFzc2VydGlvbnMgZm9yIEJldHRlciBFcnJvciBNZXNzYWdl
cyAjIwotCi1FdmVuIHRob3VnaCBHb29nbGUgVGVzdCBoYXMgYSByaWNoIHNldCBvZiBhc3NlcnRp
b25zLCB0aGV5IGNhbiBuZXZlciBiZQotY29tcGxldGUsIGFzIGl0J3MgaW1wb3NzaWJsZSAobm9y
IGEgZ29vZCBpZGVhKSB0byBhbnRpY2lwYXRlIGFsbCB0aGUgc2NlbmFyaW9zCi1hIHVzZXIgbWln
aHQgcnVuIGludG8uIFRoZXJlZm9yZSwgc29tZXRpbWVzIGEgdXNlciBoYXMgdG8gdXNlIGBFWFBF
Q1RfVFJVRSgpYAotdG8gY2hlY2sgYSBjb21wbGV4IGV4cHJlc3Npb24sIGZvciBsYWNrIG9mIGEg
YmV0dGVyIG1hY3JvLiBUaGlzIGhhcyB0aGUgcHJvYmxlbQotb2Ygbm90IHNob3dpbmcgeW91IHRo
ZSB2YWx1ZXMgb2YgdGhlIHBhcnRzIG9mIHRoZSBleHByZXNzaW9uLCBtYWtpbmcgaXQgaGFyZCB0
bwotdW5kZXJzdGFuZCB3aGF0IHdlbnQgd3JvbmcuIEFzIGEgd29ya2Fyb3VuZCwgc29tZSB1c2Vy
cyBjaG9vc2UgdG8gY29uc3RydWN0IHRoZQotZmFpbHVyZSBtZXNzYWdlIGJ5IHRoZW1zZWx2ZXMs
IHN0cmVhbWluZyBpdCBpbnRvIGBFWFBFQ1RfVFJVRSgpYC4gSG93ZXZlciwgdGhpcwotaXMgYXdr
d2FyZCBlc3BlY2lhbGx5IHdoZW4gdGhlIGV4cHJlc3Npb24gaGFzIHNpZGUtZWZmZWN0cyBvciBp
cyBleHBlbnNpdmUgdG8KLWV2YWx1YXRlLgotCi1Hb29nbGUgVGVzdCBnaXZlcyB5b3UgdGhyZWUg
ZGlmZmVyZW50IG9wdGlvbnMgdG8gc29sdmUgdGhpcyBwcm9ibGVtOgotCi0jIyMgVXNpbmcgYW4g
RXhpc3RpbmcgQm9vbGVhbiBGdW5jdGlvbiAjIyMKLQotSWYgeW91IGFscmVhZHkgaGF2ZSBhIGZ1
bmN0aW9uIG9yIGEgZnVuY3RvciB0aGF0IHJldHVybnMgYGJvb2xgIChvciBhIHR5cGUKLXRoYXQg
Y2FuIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGBib29sYCksIHlvdSBjYW4gdXNlIGl0IGlu
IGEgX3ByZWRpY2F0ZQotYXNzZXJ0aW9uXyB0byBnZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyBw
cmludGVkIGZvciBmcmVlOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1BSRUQxKGBfcHJl
ZDEsIHZhbDFfYCk7YCAgICAgICB8IGBFWFBFQ1RfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgIHwg
X3ByZWQxKHZhbDEpXyByZXR1cm5zIHRydWUgfAotfCBgQVNTRVJUX1BSRUQyKGBfcHJlZDIsIHZh
bDEsIHZhbDJfYCk7YCB8IGBFWFBFQ1RfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwg
IF9wcmVkMih2YWwxLCB2YWwyKV8gcmV0dXJucyB0cnVlIHwKLXwgIC4uLiAgICAgICAgICAgICAg
ICB8IC4uLiAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgfAotCi1JbiB0aGUgYWJv
dmUsIF9wcmVkbl8gaXMgYW4gX25fLWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24gb3IgZnVuY3Rvciwg
d2hlcmUKLV92YWwxXywgX3ZhbDJfLCAuLi4sIGFuZCBfdmFsbl8gYXJlIGl0cyBhcmd1bWVudHMu
IFRoZSBhc3NlcnRpb24gc3VjY2VlZHMKLWlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAg
d2hlbiBhcHBsaWVkIHRvIHRoZSBnaXZlbiBhcmd1bWVudHMsIGFuZCBmYWlscwotb3RoZXJ3aXNl
LiBXaGVuIHRoZSBhc3NlcnRpb24gZmFpbHMsIGl0IHByaW50cyB0aGUgdmFsdWUgb2YgZWFjaCBh
cmd1bWVudC4gSW4KLWVpdGhlciBjYXNlLCB0aGUgYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhh
Y3RseSBvbmNlLgotCi1IZXJlJ3MgYW4gZXhhbXBsZS4gR2l2ZW4KLQotYGBgCi0vLyBSZXR1cm5z
IHRydWUgaWZmIG0gYW5kIG4gaGF2ZSBubyBjb21tb24gZGl2aXNvcnMgZXhjZXB0IDEuCi1ib29s
IE11dHVhbGx5UHJpbWUoaW50IG0sIGludCBuKSB7IC4uLiB9Ci1jb25zdCBpbnQgYSA9IDM7Ci1j
b25zdCBpbnQgYiA9IDQ7Ci1jb25zdCBpbnQgYyA9IDEwOwotYGBgCi0KLXRoZSBhc3NlcnRpb24g
YEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBhLCBiKTtgIHdpbGwgc3VjY2VlZCwgd2hpbGUg
dGhlCi1hc3NlcnRpb24gYEVYUEVDVF9QUkVEMihNdXR1YWxseVByaW1lLCBiLCBjKTtgIHdpbGwg
ZmFpbCB3aXRoIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci0hTXV0dWFsbHlQcmltZShiLCBjKSBpcyBm
YWxzZSwgd2hlcmU8YnI+Ci1iIGlzIDQ8YnI+Ci1jIGlzIDEwPGJyPgotPC9wcmU+Ci0KLSoqTm90
ZXM6KioKLQotICAxLiBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IgIm5vIG1hdGNoaW5nIGZ1
bmN0aW9uIHRvIGNhbGwiIHdoZW4gdXNpbmcgYEFTU0VSVF9QUkVEKmAgb3IgYEVYUEVDVF9QUkVE
KmAsIHBsZWFzZSBzZWUgW3RoaXMgRkFRXShGQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1u
by1tYXRjaGluZy1mdW5jdGlvbi10by1jYWxsLXdoZW4taS11c2UtYXNzZXJ0X3ByZWRuLWhvdy1k
by1pLWZpeC1pdCkgZm9yIGhvdyB0byByZXNvbHZlIGl0LgotICAxLiBDdXJyZW50bHkgd2Ugb25s
eSBwcm92aWRlIHByZWRpY2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVk
IGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCi0KLV9BdmFpbGFiaWxpdHlf
OiBMaW51eCwgV2luZG93cywgTWFjCi0KLSMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJu
cyBhbiBBc3NlcnRpb25SZXN1bHQgIyMjCi0KLVdoaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZy
aWVuZHMgYXJlIGhhbmR5IGZvciBhIHF1aWNrIGpvYiwgdGhlCi1zeW50YXggaXMgbm90IHNhdGlz
ZmFjdG9yeTogeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCi1kaWZmZXJlbnQg
YXJpdGllcywgYW5kIGl0IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCi1gOjp0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCi0KLUFu
IGBBc3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNz
ZXJ0aW9uCi0od2hldGhlciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3Nv
Y2lhdGVkIG1lc3NhZ2UpLiAgWW91Ci1jYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVz
aW5nIG9uZSBvZiB0aGVzZSBmYWN0b3J5Ci1mdW5jdGlvbnM6Ci0KLWBgYAotbmFtZXNwYWNlIHRl
c3RpbmcgewotCi0vLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNh
dGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBzdWNjZWVkZWQuCi1Bc3NlcnRpb25SZXN1bHQg
QXNzZXJ0aW9uU3VjY2VzcygpOwotCi0vLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmpl
Y3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBmYWlsZWQuCi1Bc3NlcnRp
b25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwotCi19Ci1gYGAKLQotWW91IGNhbiB0aGVuIHVz
ZSB0aGUgYDw8YCBvcGVyYXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCi1gQXNzZXJ0aW9u
UmVzdWx0YCBvYmplY3QuCi0KLVRvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBC
b29sZWFuIGFzc2VydGlvbnMKLShlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGlj
YXRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucwotYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBg
Ym9vbGAuIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lCi1gSXNFdmVuKClgIGFzOgotCi1gYGAK
LTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAoKG4gJSAy
KSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgZWxz
ZQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMg
b2RkIjsKLX0KLWBgYAotCi1pbnN0ZWFkIG9mOgotCi1gYGAKLWJvb2wgSXNFdmVuKGludCBuKSB7
Ci0gIHJldHVybiAobiAlIDIpID09IDA7Ci19Ci1gYGAKLQotdGhlIGZhaWxlZCBhc3NlcnRpb24g
YEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKLQotPHByZT4KLVZhbHVl
IG9mOiBJc0V2ZW4oRmliKDQpKTxicj4KLUFjdHVhbDogZmFsc2UgKCozIGlzIG9kZCopPGJyPgot
RXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotaW5zdGVhZCBvZiBhIG1vcmUgb3BhcXVlCi0K
LTxwcmU+Ci1WYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+Ci1BY3R1YWw6IGZhbHNlPGJyPgot
RXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotSWYgeW91IHdhbnQgaW5mb3JtYXRpdmUgbWVz
c2FnZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCi1hcyB3ZWxsLCBhbmQg
YXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhlIHN1Y2Nlc3MK
LWNhc2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgotCi1gYGAKLTo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAoKG4gJSAyKSA9PSAwKQot
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZl
biI7Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwg
biA8PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotVGhlbiB0aGUgc3RhdGVtZW50IGBFWFBFQ1RfRkFM
U0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50Ci0KLTxwcmU+Ci1WYWx1ZSBvZjogSXNFdmVu
KEZpYig2KSk8YnI+Ci1BY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+Ci1FeHBlY3RlZDogZmFs
c2U8YnI+Ci08L3ByZT4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNp
bmNlIHZlcnNpb24gMS40LjEuCi0KLSMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMj
Ci0KLUlmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJU
fEVYUEVDVClfUFJFRCpgIGFuZAotYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0
aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCi1wcmVkaWNhdGUgZG8gbm90IHN1
cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKLWZv
bGxvd2luZyBfcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3Rv
bWl6ZSBob3cgdGhlCi1tZXNzYWdlIGlzIGZvcm1hdHRlZDoKLQotfCAqKkZhdGFsIGFzc2VydGlv
bioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwg
YEFTU0VSVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwg
YEVYUEVDVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgfCBfcHJlZFxf
Zm9ybWF0MSh2YWwxKV8gaXMgc3VjY2Vzc2Z1bCB8Ci18IGBBU1NFUlRfUFJFRF9GT1JNQVQyKGBf
cHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDIoYF9w
cmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBfcHJlZFxfZm9ybWF0Mih2YWwxLCB2YWwy
KV8gaXMgc3VjY2Vzc2Z1bCB8Ci18IGAuLi5gICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAg
ICAgICAgICAgIHwgYC4uLmAgICAgICAgIHwKLQotVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlz
IGFuZCB0aGUgcHJldmlvdXMgdHdvIGdyb3VwcyBvZiBtYWNyb3MgaXMgdGhhdCBpbnN0ZWFkIG9m
Ci1hIHByZWRpY2F0ZSwgYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgIHRha2UgYSBfcHJl
ZGljYXRlLWZvcm1hdHRlcl8KLShfcHJlZFxfZm9ybWF0bl8pLCB3aGljaCBpcyBhIGZ1bmN0aW9u
IG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgotCi1gOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgUHJlZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBgX2V4cHIxX2AsIGNvbnN0IGNo
YXIqIGBfZXhwcjJfYCwgLi4uIGNvbnN0IGNoYXIqIGBfZXhwcm5fYCwgVDEgYF92YWwxX2AsIFQy
IGBfdmFsMl9gLCAuLi4gVG4gYF92YWxuX2ApO2AKLQotd2hlcmUgX3ZhbDFfLCBfdmFsMl8sIC4u
LiwgYW5kIF92YWxuXyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlCi1hcmd1bWVudHMs
IGFuZCBfZXhwcjFfLCBfZXhwcjJfLCAuLi4sIGFuZCBfZXhwcm5fIGFyZSB0aGUgY29ycmVzcG9u
ZGluZwotZXhwcmVzc2lvbnMgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiBUaGUg
dHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQKLWBUbmAgY2FuIGJlIGVpdGhlciB2YWx1ZSB0eXBl
cyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbgotYXJndW1lbnQgaGFzIHR5
cGUgYEZvb2AsIHlvdSBjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3IgYGNvbnN0IEZv
byZgLAotd2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgotCi1BIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
cmV0dXJucyBhIGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHRvIGluZGljYXRl
Ci13aGV0aGVyIHRoZSBhc3NlcnRpb24gaGFzIHN1Y2NlZWRlZCBvciBub3QuIFRoZSBvbmx5IHdh
eSB0byBjcmVhdGUgc3VjaCBhbgotb2JqZWN0IGlzIHRvIGNhbGwgb25lIG9mIHRoZXNlIGZhY3Rv
cnkgZnVuY3Rpb25zOgotCi1BcyBhbiBleGFtcGxlLCBsZXQncyBpbXByb3ZlIHRoZSBmYWlsdXJl
IG1lc3NhZ2UgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoaWNoIHVzZXMgYEVYUEVDVF9QUkVE
MigpYDoKLQotYGBgCi0vLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21tb24gZGl2aXNv
ciBvZiBtIGFuZCBuLAotLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5IHByaW1lLgot
aW50IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBpbnQgbikgeyAuLi4gfQotCi0v
LyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBpbnRlZ2VycyBh
cmUgbXV0dWFsbHkgcHJpbWUuCi06OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBBc3NlcnRNdXR1
YWxseVByaW1lKGNvbnN0IGNoYXIqIG1fZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHByLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsKLSAgaWYgKE11dHVhbGx5UHJp
bWUobSwgbikpCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwotCi0g
IHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwgbV9leHByIDw8
ICIgYW5kICIgPDwgbl9leHByIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8IG4KLSAgICAgIDw8
ICIpIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIgPDwgImFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBk
aXZpc29yICIKLSAgICAgIDw8IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKG0sIG4pOwotfQot
YGBgCi0KLVdpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3ZSBjYW4gdXNlCi0KLWBgYAot
RVhQRUNUX1BSRURfRk9STUFUMihBc3NlcnRNdXR1YWxseVByaW1lLCBiLCBjKTsKLWBgYAotCi10
byBnZW5lcmF0ZSB0aGUgbWVzc2FnZQotCi08cHJlPgotYiBhbmQgYyAoNCBhbmQgMTApIGFyZSBu
b3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29yIDIuPGJyPgot
PC9wcmU+Ci0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFueSBvZiB0aGUgYXNzZXJ0aW9u
cyB3ZSBpbnRyb2R1Y2VkIGVhcmxpZXIgYXJlCi1zcGVjaWFsIGNhc2VzIG9mIGAoRVhQRUNUfEFT
U0VSVClfUFJFRF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQotaW5kZWVkIGRl
ZmluZWQgdXNpbmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLgotCi1fQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotCi0jIyBGbG9hdGluZy1Qb2ludCBDb21wYXJp
c29uICMjCi0KLUNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlzIHRyaWNreS4gRHVl
IHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzCi12ZXJ5IHVubGlrZWx5IHRoYXQgdHdvIGZsb2F0
aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwKLWBBU1NFUlRfRVFgICdz
IG5haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBzaW5jZSBmbG9hdGlu
Zy1wb2ludHMKLWNhbiBoYXZlIGEgd2lkZSB2YWx1ZSByYW5nZSwgbm8gc2luZ2xlIGZpeGVkIGVy
cm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0bwotY29tcGFyZSBieSBhIGZpeGVkIHJlbGF0
aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAwIGR1ZSB0bwotdGhl
IGxvc3Mgb2YgcHJlY2lzaW9uIHRoZXJlLgotCi1JbiBnZW5lcmFsLCBmb3IgZmxvYXRpbmctcG9p
bnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0bwotY2FyZWZ1bGx5
IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBvciBjYXJlIHRvLCBj
b21wYXJpbmcgaW4KLXRlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNlIChVTFBzKSBpcyBh
IGdvb2QgZGVmYXVsdCwgYW5kIEdvb2dsZSBUZXN0Ci1wcm92aWRlcyBhc3NlcnRpb25zIHRvIGRv
IHRoaXMuIEZ1bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0ZSBsb25nOyBpZiB5b3UKLXdh
bnQgdG8gbGVhcm4gbW9yZSwgc2VlCi1bdGhpcyBhcnRpY2xlIG9uIGZsb2F0IGNvbXBhcmlzb25d
KGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5nZmxvYXRzL2Nv
bXBhcmluZ2Zsb2F0cy5odG0pLgotCi0jIyMgRmxvYXRpbmctUG9pbnQgTWFjcm9zICMjIwotCi18
ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmll
cyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX0ZMT0FUX0VRKGBfdmFsMSwgdmFsMl9gKTtgICB8IGBF
WFBFQ1RfRkxPQVRfRVEoYF92YWwxLCB2YWwyX2ApO2AgfCB0aGUgdHdvIGBmbG9hdGAgdmFsdWVz
IGFyZSBhbG1vc3QgZXF1YWwgfAotfCBgQVNTRVJUX0RPVUJMRV9FUShgX3ZhbDEsIHZhbDJfYCk7
YCB8IGBFWFBFQ1RfRE9VQkxFX0VRKGBfdmFsMSwgdmFsMl9gKTtgIHwgdGhlIHR3byBgZG91Ymxl
YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Ci0KLUJ5ICJhbG1vc3QgZXF1YWwiLCB3ZSBtZWFu
IHRoZSB0d28gdmFsdWVzIGFyZSB3aXRoaW4gNCBVTFAncyBmcm9tIGVhY2gKLW90aGVyLgotCi1U
aGUgZm9sbG93aW5nIGFzc2VydGlvbnMgYWxsb3cgeW91IHRvIGNob29zZSB0aGUgYWNjZXB0YWJs
ZSBlcnJvciBib3VuZDoKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3Nl
cnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9ORUFSKGBfdmFsMSwg
dmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgYEVYUEVDVF9ORUFSYF8odmFsMSwgdmFsMiwgYWJzXF9l
cnJvcl9gKTtgIHwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfdmFsMV8gYW5kIF92YWwyXyBkb2Vz
bid0IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJzb2x1dGUgZXJyb3IgfAotCi1fQXZhaWxhYmlsaXR5Xzog
TGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIEZsb2F0aW5nLVBvaW50IFByZWRpY2F0ZS1Gb3Jt
YXQgRnVuY3Rpb25zICMjIwotCi1Tb21lIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYXJlIHVz
ZWZ1bCwgYnV0IG5vdCB0aGF0IG9mdGVuIHVzZWQuIEluIG9yZGVyCi10byBhdm9pZCBhbiBleHBs
b3Npb24gb2YgbmV3IG1hY3Jvcywgd2UgcHJvdmlkZSB0aGVtIGFzIHByZWRpY2F0ZS1mb3JtYXQK
LWZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGluIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9z
IChlLmcuCi1gRVhQRUNUX1BSRURfRk9STUFUMmAsIGV0YykuCi0KLWBgYAotRVhQRUNUX1BSRURf
Rk9STUFUMig6OnRlc3Rpbmc6OkZsb2F0TEUsIHZhbDEsIHZhbDIpOwotRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OkRvdWJsZUxFLCB2YWwxLCB2YWwyKTsKLWBgYAotCi1WZXJpZmllcyB0
aGF0IF92YWwxXyBpcyBsZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywgX3ZhbDJfLiBZb3Ug
Y2FuCi1yZXBsYWNlIGBFWFBFQ1RfUFJFRF9GT1JNQVQyYCBpbiB0aGUgYWJvdmUgdGFibGUgd2l0
aCBgQVNTRVJUX1BSRURfRk9STUFUMmAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjLgotCi0jIyBXaW5kb3dzIEhSRVNVTFQgYXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhc3Nl
cnRpb25zIHRlc3QgZm9yIGBIUkVTVUxUYCBzdWNjZXNzIG9yIGZhaWx1cmUuCi0KLXwgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAot
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Ci18IGBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBg
RVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKGBfZXhwcmVzc2lvbl9gKTtgIHwgX2V4cHJlc3Npb25f
IGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAgfAotfCBgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGBfZXhw
cmVzc2lvbl9gKTtgICAgIHwgYEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7
YCAgICB8IF9leHByZXNzaW9uXyBpcyBhIGZhaWx1cmUgYEhSRVNVTFRgIHwKLQotVGhlIGdlbmVy
YXRlZCBvdXRwdXQgY29udGFpbnMgdGhlIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UKLWFz
c29jaWF0ZWQgd2l0aCB0aGUgYEhSRVNVTFRgIGNvZGUgcmV0dXJuZWQgYnkgX2V4cHJlc3Npb25f
LgotCi1Zb3UgbWlnaHQgdXNlIHRoZW0gbGlrZSB0aGlzOgotCi1gYGAKLUNDb21QdHIgc2hlbGw7
Ci1BU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwuQ29DcmVhdGVJbnN0YW5jZShMIlNoZWxs
LkFwcGxpY2F0aW9uIikpOwotQ0NvbVZhcmlhbnQgZW1wdHk7Ci1BU1NFUlRfSFJFU1VMVF9TVUND
RUVERUQoc2hlbGwtPlNoZWxsRXhlY3V0ZShDQ29tQlNUUih1cmwpLCBlbXB0eSwgZW1wdHksIGVt
cHR5LCBlbXB0eSkpOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBXaW5kb3dzLgotCi0jIyBUeXBl
IEFzc2VydGlvbnMgIyMKLQotWW91IGNhbiBjYWxsIHRoZSBmdW5jdGlvbgotYGBgCi06OnRlc3Rp
bmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KCk7Ci1gYGAKLXRvIGFzc2VydCB0aGF0IHR5
cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRoZSBzYW1lLiAgVGhlIGZ1bmN0aW9uIGRvZXMKLW5vdGhp
bmcgaWYgdGhlIGFzc2VydGlvbiBpcyBzYXRpc2ZpZWQuICBJZiB0aGUgdHlwZXMgYXJlIGRpZmZl
cmVudCwKLXRoZSBmdW5jdGlvbiBjYWxsIHdpbGwgZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNv
bXBpbGVyIGVycm9yIG1lc3NhZ2UKLXdpbGwgbGlrZWx5IChkZXBlbmRpbmcgb24gdGhlIGNvbXBp
bGVyKSBzaG93IHlvdSB0aGUgYWN0dWFsIHZhbHVlcyBvZgotYFQxYCBhbmQgYFQyYC4gIFRoaXMg
aXMgbWFpbmx5IHVzZWZ1bCBpbnNpZGUgdGVtcGxhdGUgY29kZS4KLQotX0NhdmVhdDpfIFdoZW4g
dXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYSBjbGFzcyB0ZW1wbGF0ZSBvciBhCi1m
dW5jdGlvbiB0ZW1wbGF0ZSwgYFN0YXRpY0Fzc2VydFR5cGVFcTxUMSwgVDI+KClgIGlzIGVmZmVj
dGl2ZSBfb25seSBpZl8KLXRoZSBmdW5jdGlvbiBpcyBpbnN0YW50aWF0ZWQuICBGb3IgZXhhbXBs
ZSwgZ2l2ZW46Ci1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb28gewotIHB1Ymxp
YzoKLSAgdm9pZCBCYXIoKSB7IDo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4o
KTsgfQotfTsKLWBgYAotdGhlIGNvZGU6Ci1gYGAKLXZvaWQgVGVzdDEoKSB7IEZvbzxib29sPiBm
b287IH0KLWBgYAotd2lsbCBfbm90XyBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yLCBhcyBgRm9v
PGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIKLWFjdHVhbGx5IGluc3RhbnRpYXRlZC4gIEluc3RlYWQs
IHlvdSBuZWVkOgotYGBgCi12b2lkIFRlc3QyKCkgeyBGb288Ym9vbD4gZm9vOyBmb28uQmFyKCk7
IH0KLWBgYAotdG8gY2F1c2UgYSBjb21waWxlciBlcnJvci4KLQotX0F2YWlsYWJpbGl0eTpfIExp
bnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCi0KLSMjIEFzc2VydGlvbiBQ
bGFjZW1lbnQgIyMKLQotWW91IGNhbiB1c2UgYXNzZXJ0aW9ucyBpbiBhbnkgQysrIGZ1bmN0aW9u
LiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0Ci1oYXZlIHRvIGJlIGEgbWV0aG9kIG9mIHRoZSB0
ZXN0IGZpeHR1cmUgY2xhc3MuIFRoZSBvbmUgY29uc3RyYWludCBpcwotdGhhdCBhc3NlcnRpb25z
IHRoYXQgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlIChgRkFJTCpgIGFuZCBgQVNTRVJUXypgKQot
Y2FuIG9ubHkgYmUgdXNlZCBpbiB2b2lkLXJldHVybmluZyBmdW5jdGlvbnMuIFRoaXMgaXMgYSBj
b25zZXF1ZW5jZSBvZgotR29vZ2xlIFRlc3Qgbm90IHVzaW5nIGV4Y2VwdGlvbnMuIEJ5IHBsYWNp
bmcgaXQgaW4gYSBub24tdm9pZCBmdW5jdGlvbgoteW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21w
aWxlIGVycm9yIGxpa2UKLWAiZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3Vn
aHQgdG8gYmUiYC4KLQotSWYgeW91IG5lZWQgdG8gdXNlIGFzc2VydGlvbnMgaW4gYSBmdW5jdGlv
biB0aGF0IHJldHVybnMgbm9uLXZvaWQsIG9uZSBvcHRpb24KLWlzIHRvIG1ha2UgdGhlIGZ1bmN0
aW9uIHJldHVybiB0aGUgdmFsdWUgaW4gYW4gb3V0IHBhcmFtZXRlciBpbnN0ZWFkLiBGb3IKLWV4
YW1wbGUsIHlvdSBjYW4gcmV3cml0ZSBgVDIgRm9vKFQxIHgpYCB0byBgdm9pZCBGb28oVDEgeCwg
VDIqIHJlc3VsdClgLiBZb3UKLW5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYCpyZXN1bHRgIGNvbnRh
aW5zIHNvbWUgc2Vuc2libGUgdmFsdWUgZXZlbiB3aGVuIHRoZQotZnVuY3Rpb24gcmV0dXJucyBw
cmVtYXR1cmVseS4gQXMgdGhlIGZ1bmN0aW9uIG5vdyByZXR1cm5zIGB2b2lkYCwgeW91IGNhbiB1
c2UKLWFueSBhc3NlcnRpb24gaW5zaWRlIG9mIGl0LgotCi1JZiBjaGFuZ2luZyB0aGUgZnVuY3Rp
b24ncyB0eXBlIGlzIG5vdCBhbiBvcHRpb24sIHlvdSBzaG91bGQganVzdCB1c2UKLWFzc2VydGlv
bnMgdGhhdCBnZW5lcmF0ZSBub24tZmF0YWwgZmFpbHVyZXMsIHN1Y2ggYXMgYEFERF9GQUlMVVJF
KmAgYW5kCi1gRVhQRUNUXypgLgotCi1fTm90ZV86IENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3Rv
cnMgYXJlIG5vdCBjb25zaWRlcmVkIHZvaWQtcmV0dXJuaW5nCi1mdW5jdGlvbnMsIGFjY29yZGlu
ZyB0byB0aGUgQysrIGxhbmd1YWdlIHNwZWNpZmljYXRpb24sIGFuZCBzbyB5b3UgbWF5IG5vdCB1
c2UKLWZhdGFsIGFzc2VydGlvbnMgaW4gdGhlbS4gWW91J2xsIGdldCBhIGNvbXBpbGF0aW9uIGVy
cm9yIGlmIHlvdSB0cnkuIEEgc2ltcGxlCi13b3JrYXJvdW5kIGlzIHRvIHRyYW5zZmVyIHRoZSBl
bnRpcmUgYm9keSBvZiB0aGUgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciB0byBhCi1wcml2YXRl
IHZvaWQtcmV0dXJuaW5nIG1ldGhvZC4gSG93ZXZlciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0
IGEgZmF0YWwKLWFzc2VydGlvbiBmYWlsdXJlIGluIGEgY29uc3RydWN0b3IgZG9lcyBub3QgdGVy
bWluYXRlIHRoZSBjdXJyZW50IHRlc3QsIGFzIHlvdXIKLWludHVpdGlvbiBtaWdodCBzdWdnZXN0
OyBpdCBtZXJlbHkgcmV0dXJucyBmcm9tIHRoZSBjb25zdHJ1Y3RvciBlYXJseSwgcG9zc2libHkK
LWxlYXZpbmcgeW91ciBvYmplY3QgaW4gYSBwYXJ0aWFsbHktY29uc3RydWN0ZWQgc3RhdGUuIExp
a2V3aXNlLCBhIGZhdGFsCi1hc3NlcnRpb24gZmFpbHVyZSBpbiBhIGRlc3RydWN0b3IgbWF5IGxl
YXZlIHlvdXIgb2JqZWN0IGluIGEKLXBhcnRpYWxseS1kZXN0cnVjdGVkIHN0YXRlLiBVc2UgYXNz
ZXJ0aW9ucyBjYXJlZnVsbHkgaW4gdGhlc2Ugc2l0dWF0aW9ucyEKLQotIyBUZWFjaGluZyBHb29n
bGUgVGVzdCBIb3cgdG8gUHJpbnQgWW91ciBWYWx1ZXMgIwotCi1XaGVuIGEgdGVzdCBhc3NlcnRp
b24gc3VjaCBhcyBgRVhQRUNUX0VRYCBmYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZQotYXJn
dW1lbnQgdmFsdWVzIHRvIGhlbHAgeW91IGRlYnVnLiAgSXQgZG9lcyB0aGlzIHVzaW5nIGEKLXVz
ZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmludGVyLgotCi1UaGlzIHByaW50ZXIga25vd3MgaG93IHRv
IHByaW50IGJ1aWx0LWluIEMrKyB0eXBlcywgbmF0aXZlIGFycmF5cywgU1RMCi1jb250YWluZXJz
LCBhbmQgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZvciBvdGhl
cgotdHlwZXMsIGl0IHByaW50cyB0aGUgcmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9wZXMg
dGhhdCB5b3UgdGhlCi11c2VyIGNhbiBmaWd1cmUgaXQgb3V0LgotCi1BcyBtZW50aW9uZWQgZWFy
bGllciwgdGhlIHByaW50ZXIgaXMgX2V4dGVuc2libGVfLiAgVGhhdCBtZWFucwoteW91IGNhbiB0
ZWFjaCBpdCB0byBkbyBhIGJldHRlciBqb2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5
cGUKLXRoYW4gdG8gZHVtcCB0aGUgYnl0ZXMuICBUbyBkbyB0aGF0LCBkZWZpbmUgYDw8YCBmb3Ig
eW91ciB0eXBlOgotCi1gYGAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotbmFtZXNwYWNlIGZvbyB7
Ci0KLWNsYXNzIEJhciB7IC4uLiB9OyAgLy8gV2Ugd2FudCBHb29nbGUgVGVzdCB0byBiZSBhYmxl
IHRvIHByaW50IGluc3RhbmNlcyBvZiB0aGlzLgotCi0vLyBJdCdzIGltcG9ydGFudCB0aGF0IHRo
ZSA8PCBvcGVyYXRvciBpcyBkZWZpbmVkIGluIHRoZSBTQU1FCi0vLyBuYW1lc3BhY2UgdGhhdCBk
ZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMgcmVseSBvbiB0aGF0LgotOjpzdGQ6Om9z
dHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgewot
ICByZXR1cm4gb3MgPDwgYmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8g
cHJpbnQgYmFyIHRvIG9zCi19Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1Tb21ldGlt
ZXMsIHRoaXMgbWlnaHQgbm90IGJlIGFuIG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBp
dCBiYWQKLXN0eWxlIHRvIGhhdmUgYSBgPDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAg
bWF5IGFscmVhZHkgaGF2ZSBhCi1gPDxgIG9wZXJhdG9yIHRoYXQgZG9lc24ndCBkbyB3aGF0IHlv
dSB3YW50IChhbmQgeW91IGNhbm5vdCBjaGFuZ2UKLWl0KS4gIElmIHNvLCB5b3UgY2FuIGluc3Rl
YWQgZGVmaW5lIGEgYFByaW50VG8oKWAgZnVuY3Rpb24gbGlrZSB0aGlzOgotCi1gYGAKLSNpbmNs
dWRlIDxpb3N0cmVhbT4KLQotbmFtZXNwYWNlIGZvbyB7Ci0KLWNsYXNzIEJhciB7IC4uLiB9Owot
Ci0vLyBJdCdzIGltcG9ydGFudCB0aGF0IFByaW50VG8oKSBpcyBkZWZpbmVkIGluIHRoZSBTQU1F
Ci0vLyBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMgcmVs
eSBvbiB0aGF0Lgotdm9pZCBQcmludFRvKGNvbnN0IEJhciYgYmFyLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgKm9zIDw8IGJhci5EZWJ1Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRv
IHByaW50IGJhciB0byBvcwotfQotCi19ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQotSWYgeW91
IGhhdmUgZGVmaW5lZCBib3RoIGA8PGAgYW5kIGBQcmludFRvKClgLCB0aGUgbGF0dGVyIHdpbGwg
YmUgdXNlZAotd2hlbiBHb29nbGUgVGVzdCBpcyBjb25jZXJuZWQuICBUaGlzIGFsbG93cyB5b3Ug
dG8gY3VzdG9taXplIGhvdyB0aGUgdmFsdWUKLWFwcGVhcnMgaW4gR29vZ2xlIFRlc3QncyBvdXRw
dXQgd2l0aG91dCBhZmZlY3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUKLWJlaGF2aW9yIG9m
IGl0cyBgPDxgIG9wZXJhdG9yLgotCi1JZiB5b3Ugd2FudCB0byBwcmludCBhIHZhbHVlIGB4YCB1
c2luZyBHb29nbGUgVGVzdCdzIHZhbHVlIHByaW50ZXIKLXlvdXJzZWxmLCBqdXN0IGNhbGwgYDo6
dGVzdGluZzo6UHJpbnRUb1N0cmluZyhgX3hfYClgLCB3aGljaAotcmV0dXJucyBhbiBgc3RkOjpz
dHJpbmdgOgotCi1gYGAKLXZlY3RvcjxwYWlyPEJhciwgaW50PiA+IGJhcl9pbnRzID0gR2V0QmFy
SW50VmVjdG9yKCk7Ci0KLUVYUEVDVF9UUlVFKElzQ29ycmVjdEJhckludFZlY3RvcihiYXJfaW50
cykpCi0gICAgPDwgImJhcl9pbnRzID0gIiA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYmFy
X2ludHMpOwotYGBgCi0KLSMgRGVhdGggVGVzdHMgIwotCi1JbiBtYW55IGFwcGxpY2F0aW9ucywg
dGhlcmUgYXJlIGFzc2VydGlvbnMgdGhhdCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQot
aWYgYSBjb25kaXRpb24gaXMgbm90IG1ldC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5z
dXJlIHRoYXQgdGhlIHByb2dyYW0KLWlzIGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJl
IHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKLXNvbWUgcHJvZ3Jh
bSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElmIHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBj
b25kaXRpb24sCi10aGVuIHRoZSBwcm9ncmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBz
dGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0byBtZW1vcnkKLWNvcnJ1cHRpb24sIHNlY3VyaXR5IGhv
bGVzLCBvciB3b3JzZS4gSGVuY2UgaXQgaXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAotdGhh
dCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1lbnRzIHdvcmsgYXMgZXhwZWN0ZWQuCi0KLVNpbmNlIHRo
ZXNlIHByZWNvbmRpdGlvbiBjaGVja3MgY2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNh
bGwgc3VjaCB0ZXN0cwotX2RlYXRoIHRlc3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRo
YXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFtIHRlcm1pbmF0ZXMKLShleGNlcHQgYnkgdGhyb3dpbmcg
YW4gZXhjZXB0aW9uKSBpbiBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0
LgotCi1Ob3RlIHRoYXQgaWYgYSBwaWVjZSBvZiBjb2RlIHRocm93cyBhbiBleGNlcHRpb24sIHdl
IGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0aCIKLWZvciB0aGUgcHVycG9zZSBvZiBkZWF0aCB0ZXN0
cywgYXMgdGhlIGNhbGxlciBvZiB0aGUgY29kZSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uCi1h
bmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5b3Ugd2FudCB0byB2ZXJpZnkgZXhjZXB0aW9ucyB0aHJv
d24gYnkgeW91ciBjb2RlLAotc2VlIFtFeGNlcHRpb24gQXNzZXJ0aW9uc10oI2V4Y2VwdGlvbi1h
c3NlcnRpb25zKS4KLQotSWYgeW91IHdhbnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRfKigp
YCBmYWlsdXJlcyBpbiB5b3VyIHRlc3QgY29kZSwgc2VlIFtDYXRjaGluZyBGYWlsdXJlc10oI2Nh
dGNoaW5nLWZhaWx1cmVzKS4KLQotIyMgSG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdCAjIwotCi1H
b29nbGUgVGVzdCBoYXMgdGhlIGZvbGxvd2luZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0
czoKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoq
VmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhf
YCk7YCB8IGBFWFBFQ1RfREVBVEgoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2AgfCBfc3RhdGVtZW50
XyBjcmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yIHwKLXwgYEFTU0VSVF9ERUFUSF9JRl9TVVBQ
T1JURUQoYF9zdGF0ZW1lbnQsIHJlZ2V4X2ApO2AgfCBgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RChgX3N0YXRlbWVudCwgcmVnZXhfYCk7YCB8IGlmIGRlYXRoIHRlc3RzIGFyZSBzdXBwb3J0ZWQs
IHZlcmlmaWVzIHRoYXQgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBlcnJvcjsg
b3RoZXJ3aXNlIHZlcmlmaWVzIG5vdGhpbmcgfAotfCBgQVNTRVJUX0VYSVQoYF9zdGF0ZW1lbnQs
IHByZWRpY2F0ZSwgcmVnZXhfYCk7YCB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJlZGlj
YXRlLCByZWdleF9gKTtgIHxfc3RhdGVtZW50XyBleGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJvciBh
bmQgaXRzIGV4aXQgY29kZSBtYXRjaGVzIF9wcmVkaWNhdGVfIHwKLQotd2hlcmUgX3N0YXRlbWVu
dF8gaXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBlY3RlZCB0byBjYXVzZSB0aGUgcHJvY2VzcyB0
bwotZGllLCBfcHJlZGljYXRlXyBpcyBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIG9iamVjdCB0aGF0
IGV2YWx1YXRlcyBhbiBpbnRlZ2VyCi1leGl0IHN0YXR1cywgYW5kIF9yZWdleF8gaXMgYSByZWd1
bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJyIG91dHB1dCBvZgotX3N0YXRlbWVudF8gaXMg
ZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBfc3RhdGVtZW50XyBjYW4gYmUgX2FueSB2YWxp
ZAotc3RhdGVtZW50XyAoaW5jbHVkaW5nIF9jb21wb3VuZCBzdGF0ZW1lbnRfKSBhbmQgZG9lc24n
dCBoYXZlIHRvIGJlIGFuCi1leHByZXNzaW9uLgotCi1BcyB1c3VhbCwgdGhlIGBBU1NFUlRgIHZh
cmlhbnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3QgZnVuY3Rpb24sIHdoaWxlIHRoZQotYEVYUEVD
VGAgdmFyaWFudHMgZG8gbm90LgotCi0qKk5vdGU6KiogV2UgdXNlIHRoZSB3b3JkICJjcmFzaCIg
aGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MKLXRlcm1pbmF0ZXMgd2l0aCBhIF9ub24temVy
b18gZXhpdCBzdGF0dXMgY29kZS4gIFRoZXJlIGFyZSB0d28KLXBvc3NpYmlsaXRpZXM6IGVpdGhl
ciB0aGUgcHJvY2VzcyBoYXMgY2FsbGVkIGBleGl0KClgIG9yIGBfZXhpdCgpYAotd2l0aCBhIG5v
bi16ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2lsbGVkIGJ5IGEgc2lnbmFsLgotCi1UaGlzIG1l
YW5zIHRoYXQgaWYgX3N0YXRlbWVudF8gdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBl
eGl0Ci1jb2RlLCBpdCBpcyBfbm90XyBjb25zaWRlcmVkIGEgY3Jhc2ggYnkgYEVYUEVDVF9ERUFU
SGAuICBVc2UKLWBFWFBFQ1RfRVhJVGAgaW5zdGVhZCBpZiB0aGlzIGlzIHRoZSBjYXNlLCBvciBp
ZiB5b3Ugd2FudCB0byByZXN0cmljdAotdGhlIGV4aXQgY29kZSBtb3JlIHByZWNpc2VseS4KLQot
QSBwcmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBhbiBgaW50YCBhbmQgcmV0dXJuIGEgYGJvb2xg
LiBUaGUgZGVhdGggdGVzdAotc3VjY2VlZHMgb25seSBpZiB0aGUgcHJlZGljYXRlIHJldHVybnMg
YHRydWVgLiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgZmV3Ci1wcmVkaWNhdGVzIHRoYXQgaGFuZGxl
IHRoZSBtb3N0IGNvbW1vbiBjYXNlczoKLQotYGBgCi06OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2Rl
KGV4aXRfY29kZSkKLWBgYAotCi1UaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9n
cmFtIGV4aXRlZCBub3JtYWxseSB3aXRoIHRoZSBnaXZlbiBleGl0Ci1jb2RlLgotCi1gYGAKLTo6
dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoc2lnbmFsX251bWJlcikgIC8vIE5vdCBhdmFpbGFibGUg
b24gV2luZG93cy4KLWBgYAotCi1UaGlzIGV4cHJlc3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9n
cmFtIHdhcyBraWxsZWQgYnkgdGhlIGdpdmVuIHNpZ25hbC4KLQotVGhlIGAqX0RFQVRIYCBtYWNy
b3MgYXJlIGNvbnZlbmllbnQgd3JhcHBlcnMgZm9yIGAqX0VYSVRgIHRoYXQgdXNlIGEgcHJlZGlj
YXRlCi10aGF0IHZlcmlmaWVzIHRoZSBwcm9jZXNzJyBleGl0IGNvZGUgaXMgbm9uLXplcm8uCi0K
LU5vdGUgdGhhdCBhIGRlYXRoIHRlc3Qgb25seSBjYXJlcyBhYm91dCB0aHJlZSB0aGluZ3M6Ci0K
LSAgMS4gZG9lcyBfc3RhdGVtZW50XyBhYm9ydCBvciBleGl0IHRoZSBwcm9jZXNzPwotICAxLiAo
aW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBhbmQgYEVYUEVDVF9FWElUYCkgZG9lcyB0aGUg
ZXhpdCBzdGF0dXMgc2F0aXNmeSBfcHJlZGljYXRlXz8gIE9yIChpbiB0aGUgY2FzZSBvZiBgQVNT
RVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGApIGlzIHRoZSBleGl0IHN0YXR1cyBub24temVy
bz8gIEFuZAotICAxLiBkb2VzIHRoZSBzdGRlcnIgb3V0cHV0IG1hdGNoIF9yZWdleF8/Ci0KLUlu
IHBhcnRpY3VsYXIsIGlmIF9zdGF0ZW1lbnRfIGdlbmVyYXRlcyBhbiBgQVNTRVJUXypgIG9yIGBF
WFBFQ1RfKmAgZmFpbHVyZSwgaXQgd2lsbCAqKm5vdCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRv
IGZhaWwsIGFzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZG9uJ3QgYWJvcnQgdGhlIHByb2Nlc3Mu
Ci0KLVRvIHdyaXRlIGEgZGVhdGggdGVzdCwgc2ltcGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1h
Y3JvcyBpbnNpZGUgeW91ciB0ZXN0Ci1mdW5jdGlvbi4gRm9yIGV4YW1wbGUsCi0KLWBgYAotVEVT
VChNeURlYXRoVGVzdCwgRm9vKSB7Ci0gIC8vIFRoaXMgZGVhdGggdGVzdCB1c2VzIGEgY29tcG91
bmQgc3RhdGVtZW50LgotICBBU1NFUlRfREVBVEgoeyBpbnQgbiA9IDU7IEZvbygmbik7IH0sICJF
cnJvciBvbiBsaW5lIC4qIG9mIEZvbygpIik7Ci19Ci1URVNUKE15RGVhdGhUZXN0LCBOb3JtYWxF
eGl0KSB7Ci0gIEVYUEVDVF9FWElUKE5vcm1hbEV4aXQoKSwgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSgwKSwgIlN1Y2Nlc3MiKTsKLX0KLVRFU1QoTXlEZWF0aFRlc3QsIEtpbGxNeXNlbGYpIHsK
LSAgRVhQRUNUX0VYSVQoS2lsbE15c2VsZigpLCA6OnRlc3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJ
R0tJTEwpLCAiU2VuZGluZyBteXNlbGYgdW5ibG9ja2FibGUgc2lnbmFsIik7Ci19Ci1gYGAKLQot
dmVyaWZpZXMgdGhhdDoKLQotICAqIGNhbGxpbmcgYEZvbyg1KWAgY2F1c2VzIHRoZSBwcm9jZXNz
IHRvIGRpZSB3aXRoIHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlLAotICAqIGNhbGxpbmcgYE5vcm1h
bEV4aXQoKWAgY2F1c2VzIHRoZSBwcm9jZXNzIHRvIHByaW50IGAiU3VjY2VzcyJgIHRvIHN0ZGVy
ciBhbmQgZXhpdCB3aXRoIGV4aXQgY29kZSAwLCBhbmQKLSAgKiBjYWxsaW5nIGBLaWxsTXlzZWxm
KClgIGtpbGxzIHRoZSBwcm9jZXNzIHdpdGggc2lnbmFsIGBTSUdLSUxMYC4KLQotVGhlIHRlc3Qg
ZnVuY3Rpb24gYm9keSBtYXkgY29udGFpbiBvdGhlciBhc3NlcnRpb25zIGFuZCBzdGF0ZW1lbnRz
IGFzIHdlbGwsIGlmCi1uZWNlc3NhcnkuCi0KLV9JbXBvcnRhbnQ6XyBXZSBzdHJvbmdseSByZWNv
bW1lbmQgeW91IHRvIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBuYW1pbmcgeW91cgotdGVzdCBj
YXNlIChub3QgdGVzdCkgYCpEZWF0aFRlc3RgIHdoZW4gaXQgY29udGFpbnMgYSBkZWF0aCB0ZXN0
LCBhcwotZGVtb25zdHJhdGVkIGluIHRoZSBhYm92ZSBleGFtcGxlLiBUaGUgYERlYXRoIFRlc3Rz
IEFuZCBUaHJlYWRzYCBzZWN0aW9uIGJlbG93Ci1leHBsYWlucyB3aHkuCi0KLUlmIGEgdGVzdCBm
aXh0dXJlIGNsYXNzIGlzIHNoYXJlZCBieSBub3JtYWwgdGVzdHMgYW5kIGRlYXRoIHRlc3RzLCB5
b3UKLWNhbiB1c2UgdHlwZWRlZiB0byBpbnRyb2R1Y2UgYW4gYWxpYXMgZm9yIHRoZSBmaXh0dXJl
IGNsYXNzIGFuZCBhdm9pZAotZHVwbGljYXRpbmcgaXRzIGNvZGU6Ci1gYGAKLWNsYXNzIEZvb1Rl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07Ci0KLXR5cGVkZWYgRm9vVGVzdCBG
b29EZWF0aFRlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgewotICAvLyBub3JtYWwg
dGVzdAotfQotCi1URVNUX0YoRm9vRGVhdGhUZXN0LCBEb2VzVGhhdCkgewotICAvLyBkZWF0aCB0
ZXN0Ci19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBN
U1ZDIDguMCBvciBhYm92ZSksIEN5Z3dpbiwgYW5kIE1hYyAodGhlIGxhdHRlciB0aHJlZSBhcmUg
c3VwcG9ydGVkIHNpbmNlIHYxLjMuMCkuICBgKEFTU0VSVHxFWFBFQ1QpX0RFQVRIX0lGX1NVUFBP
UlRFRGAgYXJlIG5ldyBpbiB2MS40LjAuCi0KLSMjIFJlZ3VsYXIgRXhwcmVzc2lvbiBTeW50YXgg
IyMKLQotT24gUE9TSVggc3lzdGVtcyAoZS5nLiBMaW51eCwgQ3lnd2luLCBhbmQgTWFjKSwgR29v
Z2xlIFRlc3QgdXNlcyB0aGUKLVtQT1NJWCBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25dKGh0
dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9iYXNlZGVmcy94YmRf
Y2hhcDA5Lmh0bWwjdGFnXzA5XzA0KQotc3ludGF4IGluIGRlYXRoIHRlc3RzLiBUbyBsZWFybiBh
Ym91dCB0aGlzIHN5bnRheCwgeW91IG1heSB3YW50IHRvIHJlYWQgdGhpcyBbV2lraXBlZGlhIGVu
dHJ5XShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJ
WF9FeHRlbmRlZF9SZWd1bGFyX0V4cHJlc3Npb25zKS4KLQotT24gV2luZG93cywgR29vZ2xlIFRl
c3QgdXNlcyBpdHMgb3duIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24KLWltcGxlbWVudGF0aW9u
LiBJdCBsYWNrcyBtYW55IGZlYXR1cmVzIHlvdSBjYW4gZmluZCBpbiBQT1NJWCBleHRlbmRlZAot
cmVndWxhciBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCB3ZSBkb24ndCBzdXBwb3J0IHVuaW9u
IChgInh8eSJgKSwKLWdyb3VwaW5nIChgIih4eSkiYCksIGJyYWNrZXRzIChgIlt4eV0iYCksIGFu
ZCByZXBldGl0aW9uIGNvdW50Ci0oYCJ4ezUsN30iYCksIGFtb25nIG90aGVycy4gQmVsb3cgaXMg
d2hhdCB3ZSBkbyBzdXBwb3J0IChMZXR0ZXIgYEFgIGRlbm90ZXMgYQotbGl0ZXJhbCBjaGFyYWN0
ZXIsIHBlcmlvZCAoYC5gKSwgb3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVuY2U7IGB4YAot
YW5kIGB5YCBkZW5vdGUgcmVndWxhciBleHByZXNzaW9ucy4pOgotCi18IGBjYCB8IG1hdGNoZXMg
YW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCB8Ci18Oi0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Ci18IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdCAgICAg
ICAgIHwKLXwgYFxcRGAgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2lt
YWwgZGlnaXQgfAotfCBgXFxmYCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAgICAgICAgICB8
Ci18IGBcXG5gIHwgbWF0Y2hlcyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxccmAg
fCBtYXRjaGVzIGBccmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFxzYCB8IG1hdGNoZXMg
YW55IEFTQ0lJIHdoaXRlc3BhY2UsIGluY2x1ZGluZyBgXG5gIHwKLXwgYFxcU2AgfCBtYXRjaGVz
IGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UgfAotfCBgXFx0YCB8IG1hdGNo
ZXMgYFx0YCAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBcXHZgIHwgbWF0Y2hlcyBgXHZgICAg
ICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwg
b3IgZGVjaW1hbCBkaWdpdCB8Ci18IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQg
YFxcd2AgZG9lc24ndCBtYXRjaCB8Ci18IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFy
YWN0ZXIgYGNgLCB3aGljaCBtdXN0IGJlIGEgcHVuY3R1YXRpb24gfAotfCBgXFwuYCB8IG1hdGNo
ZXMgdGhlIGAuYCBjaGFyYWN0ZXIgICAgICAgICB8Ci18IGAuYCB8IG1hdGNoZXMgYW55IHNpbmds
ZSBjaGFyYWN0ZXIgZXhjZXB0IGBcbmAgfAotfCBgQT9gIHwgbWF0Y2hlcyAwIG9yIDEgb2NjdXJy
ZW5jZXMgb2YgYEFgIHwKLXwgYEEqYCB8IG1hdGNoZXMgMCBvciBtYW55IG9jY3VycmVuY2VzIG9m
IGBBYCB8Ci18IGBBK2AgfCBtYXRjaGVzIDEgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAot
fCBgXmAgfCBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0aGF0IG9mIGVh
Y2ggbGluZSkgfAotfCBgJGAgfCBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJpbmcgKG5vdCB0aGF0
IG9mIGVhY2ggbGluZSkgfAotfCBgeHlgIHwgbWF0Y2hlcyBgeGAgZm9sbG93ZWQgYnkgYHlgICAg
ICAgIHwKLQotVG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIGNhcGFiaWxpdHkgaXMgYXZhaWxh
YmxlIG9uIHlvdXIgc3lzdGVtLAotR29vZ2xlIFRlc3QgZGVmaW5lcyBtYWNybyBgR1RFU1RfVVNF
U19QT1NJWF9SRT0xYCB3aGVuIGl0IHVzZXMgUE9TSVgKLWV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVz
c2lvbnMsIG9yIGBHVEVTVF9VU0VTX1NJTVBMRV9SRT0xYCB3aGVuIGl0IHVzZXMKLXRoZSBzaW1w
bGUgdmVyc2lvbi4gIElmIHlvdSB3YW50IHlvdXIgZGVhdGggdGVzdHMgdG8gd29yayBpbiBib3Ro
Ci1jYXNlcywgeW91IGNhbiBlaXRoZXIgYCNpZmAgb24gdGhlc2UgbWFjcm9zIG9yIHVzZSB0aGUg
bW9yZSBsaW1pdGVkCi1zeW50YXggb25seS4KLQotIyMgSG93IEl0IFdvcmtzICMjCi0KLVVuZGVy
IHRoZSBob29kLCBgQVNTRVJUX0VYSVQoKWAgc3Bhd25zIGEgbmV3IHByb2Nlc3MgYW5kIGV4ZWN1
dGVzIHRoZQotZGVhdGggdGVzdCBzdGF0ZW1lbnQgaW4gdGhhdCBwcm9jZXNzLiBUaGUgZGV0YWls
cyBvZiBvZiBob3cgcHJlY2lzZWx5Ci10aGF0IGhhcHBlbnMgZGVwZW5kIG9uIHRoZSBwbGF0Zm9y
bSBhbmQgdGhlIHZhcmlhYmxlCi1gOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5
bGUpYCAod2hpY2ggaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUKLWNvbW1hbmQtbGluZSBmbGFnIGAt
LWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGVgKS4KLQotICAqIE9uIFBPU0lYIHN5c3RlbXMsIGBmb3Jr
KClgIChvciBgY2xvbmUoKWAgb24gTGludXgpIGlzIHVzZWQgdG8gc3Bhd24gdGhlIGNoaWxkLCBh
ZnRlciB3aGljaDoKLSAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlzIGAiZmFzdCJgLCB0
aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgaXMgaW1tZWRpYXRlbHkgZXhlY3V0ZWQuCi0gICAgKiBJ
ZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgInRocmVhZHNhZmUiYCwgdGhlIGNoaWxkIHByb2Nl
c3MgcmUtZXhlY3V0ZXMgdGhlIHVuaXQgdGVzdCBiaW5hcnkganVzdCBhcyBpdCB3YXMgb3JpZ2lu
YWxseSBpbnZva2VkLCBidXQgd2l0aCBzb21lIGV4dHJhIGZsYWdzIHRvIGNhdXNlIGp1c3QgdGhl
IHNpbmdsZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuLgotICAqIE9u
IFdpbmRvd3MsIHRoZSBjaGlsZCBpcyBzcGF3bmVkIHVzaW5nIHRoZSBgQ3JlYXRlUHJvY2Vzcygp
YCBBUEksIGFuZCByZS1leGVjdXRlcyB0aGUgYmluYXJ5IHRvIGNhdXNlIGp1c3QgdGhlIHNpbmds
ZSBkZWF0aCB0ZXN0IHVuZGVyIGNvbnNpZGVyYXRpb24gdG8gYmUgcnVuIC0gbXVjaCBsaWtlIHRo
ZSBgdGhyZWFkc2FmZWAgbW9kZSBvbiBQT1NJWC4KLQotT3RoZXIgdmFsdWVzIGZvciB0aGUgdmFy
aWFibGUgYXJlIGlsbGVnYWwgYW5kIHdpbGwgY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8KLWZhaWwu
IEN1cnJlbnRseSwgdGhlIGZsYWcncyBkZWZhdWx0IHZhbHVlIGlzIGAiZmFzdCJgLiBIb3dldmVy
LCB3ZSByZXNlcnZlIHRoZQotcmlnaHQgdG8gY2hhbmdlIGl0IGluIHRoZSBmdXR1cmUuIFRoZXJl
Zm9yZSwgeW91ciB0ZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbgotdGhpcy4KLQotSW4gZWl0aGVy
IGNhc2UsIHRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgdG8g
Y29tcGxldGUsIGFuZCBjaGVja3MgdGhhdAotCi0gIDEuIHRoZSBjaGlsZCdzIGV4aXQgc3RhdHVz
IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBhbmQKLSAgMS4gdGhlIGNoaWxkJ3Mgc3RkZXJyIG1h
dGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KLQotSWYgdGhlIGRlYXRoIHRlc3Qgc3RhdGVt
ZW50IHJ1bnMgdG8gY29tcGxldGlvbiB3aXRob3V0IGR5aW5nLCB0aGUgY2hpbGQKLXByb2Nlc3Mg
d2lsbCBub25ldGhlbGVzcyB0ZXJtaW5hdGUsIGFuZCB0aGUgYXNzZXJ0aW9uIGZhaWxzLgotCi0j
IyBEZWF0aCBUZXN0cyBBbmQgVGhyZWFkcyAjIwotCi1UaGUgcmVhc29uIGZvciB0aGUgdHdvIGRl
YXRoIHRlc3Qgc3R5bGVzIGhhcyB0byBkbyB3aXRoIHRocmVhZCBzYWZldHkuIER1ZSB0bwotd2Vs
bC1rbm93biBwcm9ibGVtcyB3aXRoIGZvcmtpbmcgaW4gdGhlIHByZXNlbmNlIG9mIHRocmVhZHMs
IGRlYXRoIHRlc3RzIHNob3VsZAotYmUgcnVuIGluIGEgc2luZ2xlLXRocmVhZGVkIGNvbnRleHQu
IFNvbWV0aW1lcywgaG93ZXZlciwgaXQgaXNuJ3QgZmVhc2libGUgdG8KLWFycmFuZ2UgdGhhdCBr
aW5kIG9mIGVudmlyb25tZW50LiBGb3IgZXhhbXBsZSwgc3RhdGljYWxseS1pbml0aWFsaXplZCBt
b2R1bGVzCi1tYXkgc3RhcnQgdGhyZWFkcyBiZWZvcmUgbWFpbiBpcyBldmVyIHJlYWNoZWQuIE9u
Y2UgdGhyZWFkcyBoYXZlIGJlZW4gY3JlYXRlZCwKLWl0IG1heSBiZSBkaWZmaWN1bHQgb3IgaW1w
b3NzaWJsZSB0byBjbGVhbiB0aGVtIHVwLgotCi1Hb29nbGUgVGVzdCBoYXMgdGhyZWUgZmVhdHVy
ZXMgaW50ZW5kZWQgdG8gcmFpc2UgYXdhcmVuZXNzIG9mIHRocmVhZGluZyBpc3N1ZXMuCi0KLSAg
MS4gQSB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgcnVubmluZyB3
aGVuIGEgZGVhdGggdGVzdCBpcyBlbmNvdW50ZXJlZC4KLSAgMS4gVGVzdCBjYXNlcyB3aXRoIGEg
bmFtZSBlbmRpbmcgaW4gIkRlYXRoVGVzdCIgYXJlIHJ1biBiZWZvcmUgYWxsIG90aGVyIHRlc3Rz
LgotICAxLiBJdCB1c2VzIGBjbG9uZSgpYCBpbnN0ZWFkIG9mIGBmb3JrKClgIHRvIHNwYXduIHRo
ZSBjaGlsZCBwcm9jZXNzIG9uIExpbnV4IChgY2xvbmUoKWAgaXMgbm90IGF2YWlsYWJsZSBvbiBD
eWd3aW4gYW5kIE1hYyksIGFzIGBmb3JrKClgIGlzIG1vcmUgbGlrZWx5IHRvIGNhdXNlIHRoZSBj
aGlsZCB0byBoYW5nIHdoZW4gdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBtdWx0aXBsZSB0aHJlYWRz
LgotCi1JdCdzIHBlcmZlY3RseSBmaW5lIHRvIGNyZWF0ZSB0aHJlYWRzIGluc2lkZSBhIGRlYXRo
IHRlc3Qgc3RhdGVtZW50OyB0aGV5IGFyZQotZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZSBwcm9jZXNz
IGFuZCBjYW5ub3QgYWZmZWN0IHRoZSBwYXJlbnQuCi0KLSMjIERlYXRoIFRlc3QgU3R5bGVzICMj
Ci0KLVRoZSAidGhyZWFkc2FmZSIgZGVhdGggdGVzdCBzdHlsZSB3YXMgaW50cm9kdWNlZCBpbiBv
cmRlciB0byBoZWxwIG1pdGlnYXRlIHRoZQotcmlza3Mgb2YgdGVzdGluZyBpbiBhIHBvc3NpYmx5
IG11bHRpdGhyZWFkZWQgZW52aXJvbm1lbnQuIEl0IHRyYWRlcyBpbmNyZWFzZWQKLXRlc3QgZXhl
Y3V0aW9uIHRpbWUgKHBvdGVudGlhbGx5IGRyYW1hdGljYWxseSBzbykgZm9yIGltcHJvdmVkIHRo
cmVhZCBzYWZldHkuCi1XZSBzdWdnZXN0IHVzaW5nIHRoZSBmYXN0ZXIsIGRlZmF1bHQgImZhc3Qi
IHN0eWxlIHVubGVzcyB5b3VyIHRlc3QgaGFzIHNwZWNpZmljCi1wcm9ibGVtcyB3aXRoIGl0Lgot
Ci1Zb3UgY2FuIGNob29zZSBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgZGVhdGggdGVzdHMgYnkgc2V0
dGluZyB0aGUgZmxhZwotcHJvZ3JhbW1hdGljYWxseToKLQotYGBgCi06OnRlc3Rpbmc6OkZMQUdT
X2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7Ci1gYGAKLQotWW91IGNhbiBk
byB0aGlzIGluIGBtYWluKClgIHRvIHNldCB0aGUgc3R5bGUgZm9yIGFsbCBkZWF0aCB0ZXN0cyBp
biB0aGUKLWJpbmFyeSwgb3IgaW4gaW5kaXZpZHVhbCB0ZXN0cy4gUmVjYWxsIHRoYXQgZmxhZ3Mg
YXJlIHNhdmVkIGJlZm9yZSBydW5uaW5nIGVhY2gKLXRlc3QgYW5kIHJlc3RvcmVkIGFmdGVyd2Fy
ZHMsIHNvIHlvdSBuZWVkIG5vdCBkbyB0aGF0IHlvdXJzZWxmLiBGb3IgZXhhbXBsZToKLQotYGBg
Ci1URVNUKE15RGVhdGhUZXN0LCBUZXN0T25lKSB7Ci0gIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3Rf
ZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKLSAgLy8gVGhpcyB0ZXN0IGlzIHJ1biBp
biB0aGUgInRocmVhZHNhZmUiIHN0eWxlOgotICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERpZSgp
LCAiIik7Ci19Ci0KLVRFU1QoTXlEZWF0aFRlc3QsIFRlc3RUd28pIHsKLSAgLy8gVGhpcyB0ZXN0
IGlzIHJ1biBpbiB0aGUgImZhc3QiIHN0eWxlOgotICBBU1NFUlRfREVBVEgoVGhpc1Nob3VsZERp
ZSgpLCAiIik7Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgOjp0ZXN0aW5nOjpGTEFHU19n
dGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gImZhc3QiOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygp
OwotfQotYGBgCi0KLSMjIENhdmVhdHMgIyMKLQotVGhlIF9zdGF0ZW1lbnRfIGFyZ3VtZW50IG9m
IGBBU1NFUlRfRVhJVCgpYCBjYW4gYmUgYW55IHZhbGlkIEMrKyBzdGF0ZW1lbnQuCi1JZiBpdCBs
ZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gdmlhIGEgYHJldHVybmAgc3RhdGVtZW50IG9yIGJ5
IHRocm93aW5nIGFuIGV4Y2VwdGlvbiwKLXRoZSBkZWF0aCB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8g
aGF2ZSBmYWlsZWQuICBTb21lIEdvb2dsZSBUZXN0IG1hY3JvcyBtYXkgcmV0dXJuCi1mcm9tIHRo
ZSBjdXJyZW50IGZ1bmN0aW9uIChlLmcuIGBBU1NFUlRfVFJVRSgpYCksIHNvIGJlIHN1cmUgdG8g
YXZvaWQgdGhlbSBpbiBfc3RhdGVtZW50Xy4KLQotU2luY2UgX3N0YXRlbWVudF8gcnVucyBpbiB0
aGUgY2hpbGQgcHJvY2VzcywgYW55IGluLW1lbW9yeSBzaWRlIGVmZmVjdCAoZS5nLgotbW9kaWZ5
aW5nIGEgdmFyaWFibGUsIHJlbGVhc2luZyBtZW1vcnksIGV0YykgaXQgY2F1c2VzIHdpbGwgX25v
dF8gYmUgb2JzZXJ2YWJsZQotaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBJbiBwYXJ0aWN1bGFyLCBp
ZiB5b3UgcmVsZWFzZSBtZW1vcnkgaW4gYSBkZWF0aCB0ZXN0LAoteW91ciBwcm9ncmFtIHdpbGwg
ZmFpbCB0aGUgaGVhcCBjaGVjayBhcyB0aGUgcGFyZW50IHByb2Nlc3Mgd2lsbCBuZXZlciBzZWUg
dGhlCi1tZW1vcnkgcmVjbGFpbWVkLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSBjYW4KLQot
ICAxLiB0cnkgbm90IHRvIGZyZWUgbWVtb3J5IGluIGEgZGVhdGggdGVzdDsKLSAgMS4gZnJlZSB0
aGUgbWVtb3J5IGFnYWluIGluIHRoZSBwYXJlbnQgcHJvY2Vzczsgb3IKLSAgMS4gZG8gbm90IHVz
ZSB0aGUgaGVhcCBjaGVja2VyIGluIHlvdXIgcHJvZ3JhbS4KLQotRHVlIHRvIGFuIGltcGxlbWVu
dGF0aW9uIGRldGFpbCwgeW91IGNhbm5vdCBwbGFjZSBtdWx0aXBsZSBkZWF0aCB0ZXN0Ci1hc3Nl
cnRpb25zIG9uIHRoZSBzYW1lIGxpbmU7IG90aGVyd2lzZSwgY29tcGlsYXRpb24gd2lsbCBmYWls
IHdpdGggYW4gdW5vYnZpb3VzCi1lcnJvciBtZXNzYWdlLgotCi1EZXNwaXRlIHRoZSBpbXByb3Zl
ZCB0aHJlYWQgc2FmZXR5IGFmZm9yZGVkIGJ5IHRoZSAidGhyZWFkc2FmZSIgc3R5bGUgb2YgZGVh
dGgKLXRlc3QsIHRocmVhZCBwcm9ibGVtcyBzdWNoIGFzIGRlYWRsb2NrIGFyZSBzdGlsbCBwb3Nz
aWJsZSBpbiB0aGUgcHJlc2VuY2Ugb2YKLWhhbmRsZXJzIHJlZ2lzdGVyZWQgd2l0aCBgcHRocmVh
ZF9hdGZvcmsoMylgLgotCi0jIFVzaW5nIEFzc2VydGlvbnMgaW4gU3ViLXJvdXRpbmVzICMKLQot
IyMgQWRkaW5nIFRyYWNlcyB0byBBc3NlcnRpb25zICMjCi0KLUlmIGEgdGVzdCBzdWItcm91dGlu
ZSBpcyBjYWxsZWQgZnJvbSBzZXZlcmFsIHBsYWNlcywgd2hlbiBhbiBhc3NlcnRpb24KLWluc2lk
ZSBpdCBmYWlscywgaXQgY2FuIGJlIGhhcmQgdG8gdGVsbCB3aGljaCBpbnZvY2F0aW9uIG9mIHRo
ZQotc3ViLXJvdXRpbmUgdGhlIGZhaWx1cmUgaXMgZnJvbS4gIFlvdSBjYW4gYWxsZXZpYXRlIHRo
aXMgcHJvYmxlbSB1c2luZwotZXh0cmEgbG9nZ2luZyBvciBjdXN0b20gZmFpbHVyZSBtZXNzYWdl
cywgYnV0IHRoYXQgdXN1YWxseSBjbHV0dGVycyB1cAoteW91ciB0ZXN0cy4gQSBiZXR0ZXIgc29s
dXRpb24gaXMgdG8gdXNlIHRoZSBgU0NPUEVEX1RSQUNFYCBtYWNybzoKLQotfCBgU0NPUEVEX1RS
QUNFKGBfbWVzc2FnZV9gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0K
LXdoZXJlIF9tZXNzYWdlXyBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBgc3RkOjpvc3Ry
ZWFtYC4gVGhpcwotbWFjcm8gd2lsbCBjYXVzZSB0aGUgY3VycmVudCBmaWxlIG5hbWUsIGxpbmUg
bnVtYmVyLCBhbmQgdGhlIGdpdmVuCi1tZXNzYWdlIHRvIGJlIGFkZGVkIGluIGV2ZXJ5IGZhaWx1
cmUgbWVzc2FnZS4gVGhlIGVmZmVjdCB3aWxsIGJlCi11bmRvbmUgd2hlbiB0aGUgY29udHJvbCBs
ZWF2ZXMgdGhlIGN1cnJlbnQgbGV4aWNhbCBzY29wZS4KLQotRm9yIGV4YW1wbGUsCi0KLWBgYAot
MTA6IHZvaWQgU3ViMShpbnQgbikgewotMTE6ICAgRVhQRUNUX0VRKDEsIEJhcihuKSk7Ci0xMjog
ICBFWFBFQ1RfRVEoMiwgQmFyKG4gKyAxKSk7Ci0xMzogfQotMTQ6Ci0xNTogVEVTVChGb29UZXN0
LCBCYXIpIHsKLTE2OiAgIHsKLTE3OiAgICAgU0NPUEVEX1RSQUNFKCJBIik7ICAvLyBUaGlzIHRy
YWNlIHBvaW50IHdpbGwgYmUgaW5jbHVkZWQgaW4KLTE4OiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBldmVyeSBmYWlsdXJlIGluIHRoaXMgc2NvcGUuCi0xOTogICAgIFN1YjEoMSk7Ci0yMDog
ICB9Ci0yMTogICAvLyBOb3cgaXQgd29uJ3QuCi0yMjogICBTdWIxKDkpOwotMjM6IH0KLWBgYAot
Ci1jb3VsZCByZXN1bHQgaW4gbWVzc2FnZXMgbGlrZSB0aGVzZToKLQotYGBgCi1wYXRoL3RvL2Zv
b190ZXN0LmNjOjExOiBGYWlsdXJlCi1WYWx1ZSBvZjogQmFyKG4pCi1FeHBlY3RlZDogMQotICBB
Y3R1YWw6IDIKLSAgIFRyYWNlOgotcGF0aC90by9mb29fdGVzdC5jYzoxNzogQQotCi1wYXRoL3Rv
L2Zvb190ZXN0LmNjOjEyOiBGYWlsdXJlCi1WYWx1ZSBvZjogQmFyKG4gKyAxKQotRXhwZWN0ZWQ6
IDIKLSAgQWN0dWFsOiAzCi1gYGAKLQotV2l0aG91dCB0aGUgdHJhY2UsIGl0IHdvdWxkJ3ZlIGJl
ZW4gZGlmZmljdWx0IHRvIGtub3cgd2hpY2ggaW52b2NhdGlvbgotb2YgYFN1YjEoKWAgdGhlIHR3
byBmYWlsdXJlcyBjb21lIGZyb20gcmVzcGVjdGl2ZWx5LiAoWW91IGNvdWxkIGFkZCBhbgotZXh0
cmEgbWVzc2FnZSB0byBlYWNoIGFzc2VydGlvbiBpbiBgU3ViMSgpYCB0byBpbmRpY2F0ZSB0aGUg
dmFsdWUgb2YKLWBuYCwgYnV0IHRoYXQncyB0ZWRpb3VzLikKLQotU29tZSB0aXBzIG9uIHVzaW5n
IGBTQ09QRURfVFJBQ0VgOgotCi0gIDEuIFdpdGggYSBzdWl0YWJsZSBtZXNzYWdlLCBpdCdzIG9m
dGVuIGVub3VnaCB0byB1c2UgYFNDT1BFRF9UUkFDRWAgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHN1
Yi1yb3V0aW5lLCBpbnN0ZWFkIG9mIGF0IGVhY2ggY2FsbCBzaXRlLgotICAxLiBXaGVuIGNhbGxp
bmcgc3ViLXJvdXRpbmVzIGluc2lkZSBhIGxvb3AsIG1ha2UgdGhlIGxvb3AgaXRlcmF0b3IgcGFy
dCBvZiB0aGUgbWVzc2FnZSBpbiBgU0NPUEVEX1RSQUNFYCBzdWNoIHRoYXQgeW91IGNhbiBrbm93
IHdoaWNoIGl0ZXJhdGlvbiB0aGUgZmFpbHVyZSBpcyBmcm9tLgotICAxLiBTb21ldGltZXMgdGhl
IGxpbmUgbnVtYmVyIG9mIHRoZSB0cmFjZSBwb2ludCBpcyBlbm91Z2ggZm9yIGlkZW50aWZ5aW5n
IHRoZSBwYXJ0aWN1bGFyIGludm9jYXRpb24gb2YgYSBzdWItcm91dGluZS4gSW4gdGhpcyBjYXNl
LCB5b3UgZG9uJ3QgaGF2ZSB0byBjaG9vc2UgYSB1bmlxdWUgbWVzc2FnZSBmb3IgYFNDT1BFRF9U
UkFDRWAuIFlvdSBjYW4gc2ltcGx5IHVzZSBgIiJgLgotICAxLiBZb3UgY2FuIHVzZSBgU0NPUEVE
X1RSQUNFYCBpbiBhbiBpbm5lciBzY29wZSB3aGVuIHRoZXJlIGlzIG9uZSBpbiB0aGUgb3V0ZXIg
c2NvcGUuIEluIHRoaXMgY2FzZSwgYWxsIGFjdGl2ZSB0cmFjZSBwb2ludHMgd2lsbCBiZSBpbmNs
dWRlZCBpbiB0aGUgZmFpbHVyZSBtZXNzYWdlcywgaW4gcmV2ZXJzZSBvcmRlciB0aGV5IGFyZSBl
bmNvdW50ZXJlZC4KLSAgMS4gVGhlIHRyYWNlIGR1bXAgaXMgY2xpY2thYmxlIGluIEVtYWNzJyBj
b21waWxhdGlvbiBidWZmZXIgLSBoaXQgcmV0dXJuIG9uIGEgbGluZSBudW1iZXIgYW5kIHlvdSds
bCBiZSB0YWtlbiB0byB0aGF0IGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlIQotCi1fQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgUHJvcGFnYXRpbmcgRmF0YWwgRmFpbHVy
ZXMgIyMKLQotQSBjb21tb24gcGl0ZmFsbCB3aGVuIHVzaW5nIGBBU1NFUlRfKmAgYW5kIGBGQUlM
KmAgaXMgbm90IHVuZGVyc3RhbmRpbmcgdGhhdAotd2hlbiB0aGV5IGZhaWwgdGhleSBvbmx5IGFi
b3J0IHRoZSBfY3VycmVudCBmdW5jdGlvbl8sIG5vdCB0aGUgZW50aXJlIHRlc3QuIEZvcgotZXhh
bXBsZSwgdGhlIGZvbGxvd2luZyB0ZXN0IHdpbGwgc2VnZmF1bHQ6Ci1gYGAKLXZvaWQgU3Vicm91
dGluZSgpIHsKLSAgLy8gR2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBhbmQgYWJvcnRzIHRoZSBj
dXJyZW50IGZ1bmN0aW9uLgotICBBU1NFUlRfRVEoMSwgMik7Ci0gIC8vIFRoZSBmb2xsb3dpbmcg
d29uJ3QgYmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotCi1URVNUKEZvb1Rlc3QsIEJhcikgewotICBT
dWJyb3V0aW5lKCk7Ci0gIC8vIFRoZSBpbnRlbmRlZCBiZWhhdmlvciBpcyBmb3IgdGhlIGZhdGFs
IGZhaWx1cmUKLSAgLy8gaW4gU3Vicm91dGluZSgpIHRvIGFib3J0IHRoZSBlbnRpcmUgdGVzdC4K
LSAgLy8gVGhlIGFjdHVhbCBiZWhhdmlvcjogdGhlIGZ1bmN0aW9uIGdvZXMgb24gYWZ0ZXIgU3Vi
cm91dGluZSgpIHJldHVybnMuCi0gIGludCogcCA9IE5VTEw7Ci0gICpwID0gMzsgLy8gU2VnZmF1
bHQhCi19Ci1gYGAKLQotU2luY2Ugd2UgZG9uJ3QgdXNlIGV4Y2VwdGlvbnMsIGl0IGlzIHRlY2hu
aWNhbGx5IGltcG9zc2libGUgdG8KLWltcGxlbWVudCB0aGUgaW50ZW5kZWQgYmVoYXZpb3IgaGVy
ZS4gIFRvIGFsbGV2aWF0ZSB0aGlzLCBHb29nbGUgVGVzdAotcHJvdmlkZXMgdHdvIHNvbHV0aW9u
cy4gIFlvdSBjb3VsZCB1c2UgZWl0aGVyIHRoZQotYChBU1NFUlR8RVhQRUNUKV9OT19GQVRBTF9G
QUlMVVJFYCBhc3NlcnRpb25zIG9yIHRoZQotYEhhc0ZhdGFsRmFpbHVyZSgpYCBmdW5jdGlvbi4g
IFRoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHR3bwotc3Vic2VjdGlvbnMuCi0K
LSMjIyBBc3NlcnRpbmcgb24gU3Vicm91dGluZXMgIyMjCi0KLUFzIHNob3duIGFib3ZlLCBpZiB5
b3VyIHRlc3QgY2FsbHMgYSBzdWJyb3V0aW5lIHRoYXQgaGFzIGFuIGBBU1NFUlRfKmAKLWZhaWx1
cmUgaW4gaXQsIHRoZSB0ZXN0IHdpbGwgY29udGludWUgYWZ0ZXIgdGhlIHN1YnJvdXRpbmUKLXJl
dHVybnMuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IHlvdSB3YW50LgotCi1PZnRlbiBwZW9wbGUgd2Fu
dCBmYXRhbCBmYWlsdXJlcyB0byBwcm9wYWdhdGUgbGlrZSBleGNlcHRpb25zLiAgRm9yCi10aGF0
IEdvb2dsZSBUZXN0IG9mZmVycyB0aGUgZm9sbG93aW5nIG1hY3JvczoKLQotfCAqKkZhdGFsIGFz
c2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LXwKLXwgYEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50X2ApO2AgfCBgRVhQRUNU
X05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3Qg
Z2VuZXJhdGUgYW55IG5ldyBmYXRhbCBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQuIHwK
LQotT25seSBmYWlsdXJlcyBpbiB0aGUgdGhyZWFkIHRoYXQgZXhlY3V0ZXMgdGhlIGFzc2VydGlv
biBhcmUgY2hlY2tlZCB0bwotZGV0ZXJtaW5lIHRoZSByZXN1bHQgb2YgdGhpcyB0eXBlIG9mIGFz
c2VydGlvbnMuICBJZiBfc3RhdGVtZW50XwotY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMg
aW4gdGhlc2UgdGhyZWFkcyBhcmUgaWdub3JlZC4KLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJU
X05PX0ZBVEFMX0ZBSUxVUkUoRm9vKCkpOwotCi1pbnQgaTsKLUVYUEVDVF9OT19GQVRBTF9GQUlM
VVJFKHsKLSAgaSA9IEJhcigpOwotfSk7Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWMuIEFzc2VydGlvbnMgZnJvbSBtdWx0aXBsZSB0aHJlYWRzCi1hcmUgY3VycmVu
dGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSMjIyBDaGVja2luZyBmb3IgRmFpbHVyZXMgaW4gdGhlIEN1
cnJlbnQgVGVzdCAjIyMKLQotYEhhc0ZhdGFsRmFpbHVyZSgpYCBpbiB0aGUgYDo6dGVzdGluZzo6
VGVzdGAgY2xhc3MgcmV0dXJucyBgdHJ1ZWAgaWYgYW4KLWFzc2VydGlvbiBpbiB0aGUgY3VycmVu
dCB0ZXN0IGhhcyBzdWZmZXJlZCBhIGZhdGFsIGZhaWx1cmUuIFRoaXMKLWFsbG93cyBmdW5jdGlv
bnMgdG8gY2F0Y2ggZmF0YWwgZmFpbHVyZXMgaW4gYSBzdWItcm91dGluZSBhbmQgcmV0dXJuCi1l
YXJseS4KLQotYGBgCi1jbGFzcyBUZXN0IHsKLSBwdWJsaWM6Ci0gIC4uLgotICBzdGF0aWMgYm9v
bCBIYXNGYXRhbEZhaWx1cmUoKTsKLX07Ci1gYGAKLQotVGhlIHR5cGljYWwgdXNhZ2UsIHdoaWNo
IGJhc2ljYWxseSBzaW11bGF0ZXMgdGhlIGJlaGF2aW9yIG9mIGEgdGhyb3duCi1leGNlcHRpb24s
IGlzOgotCi1gYGAKLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8g
QWJvcnRzIGlmIFN1YnJvdXRpbmUoKSBoYWQgYSBmYXRhbCBmYWlsdXJlLgotICBpZiAoSGFzRmF0
YWxGYWlsdXJlKCkpCi0gICAgcmV0dXJuOwotICAvLyBUaGUgZm9sbG93aW5nIHdvbid0IGJlIGV4
ZWN1dGVkLgotICAuLi4KLX0KLWBgYAotCi1JZiBgSGFzRmF0YWxGYWlsdXJlKClgIGlzIHVzZWQg
b3V0c2lkZSBvZiBgVEVTVCgpYCAsIGBURVNUX0YoKWAgLCBvciBhIHRlc3QKLWZpeHR1cmUsIHlv
dSBtdXN0IGFkZCB0aGUgYDo6dGVzdGluZzo6VGVzdDo6YCBwcmVmaXgsIGFzIGluOgotCi1gYGAK
LWlmICg6OnRlc3Rpbmc6OlRlc3Q6Okhhc0ZhdGFsRmFpbHVyZSgpKQotICByZXR1cm47Ci1gYGAK
LQotU2ltaWxhcmx5LCBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIHJldHVybnMgYHRydWVgIGlmIHRo
ZSBjdXJyZW50IHRlc3QKLWhhcyBhdCBsZWFzdCBvbmUgbm9uLWZhdGFsIGZhaWx1cmUsIGFuZCBg
SGFzRmFpbHVyZSgpYCByZXR1cm5zIGB0cnVlYAotaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYXQg
bGVhc3Qgb25lIGZhaWx1cmUgb2YgZWl0aGVyIGtpbmQuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLiAgYEhhc05vbmZhdGFsRmFpbHVyZSgpYCBhbmQKLWBIYXNGYWlsdXJl
KClgIGFyZSBhdmFpbGFibGUgc2luY2UgdmVyc2lvbiAxLjQuMC4KLQotIyBMb2dnaW5nIEFkZGl0
aW9uYWwgSW5mb3JtYXRpb24gIwotCi1JbiB5b3VyIHRlc3QgY29kZSwgeW91IGNhbiBjYWxsIGBS
ZWNvcmRQcm9wZXJ0eSgia2V5IiwgdmFsdWUpYCB0byBsb2cKLWFkZGl0aW9uYWwgaW5mb3JtYXRp
b24sIHdoZXJlIGB2YWx1ZWAgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBgaW50YC4gVGhl
IF9sYXN0XyB2YWx1ZSByZWNvcmRlZCBmb3IgYSBrZXkgd2lsbCBiZSBlbWl0dGVkIHRvIHRoZSBY
TUwgb3V0cHV0Ci1pZiB5b3Ugc3BlY2lmeSBvbmUuIEZvciBleGFtcGxlLCB0aGUgdGVzdAotCi1g
YGAKLVRFU1RfRihXaWRnZXRVc2FnZVRlc3QsIE1pbkFuZE1heFdpZGdldHMpIHsKLSAgUmVjb3Jk
UHJvcGVydHkoIk1heGltdW1XaWRnZXRzIiwgQ29tcHV0ZU1heFVzYWdlKCkpOwotICBSZWNvcmRQ
cm9wZXJ0eSgiTWluaW11bVdpZGdldHMiLCBDb21wdXRlTWluVXNhZ2UoKSk7Ci19Ci1gYGAKLQot
d2lsbCBvdXRwdXQgWE1MIGxpa2UgdGhpczoKLQotYGBgCi0uLi4KLSAgPHRlc3RjYXNlIG5hbWU9
Ik1pbkFuZE1heFdpZGdldHMiIHN0YXR1cz0icnVuIiB0aW1lPSI2IiBjbGFzc25hbWU9IldpZGdl
dFVzYWdlVGVzdCIKLSAgICAgICAgICAgIE1heGltdW1XaWRnZXRzPSIxMiIKLSAgICAgICAgICAg
IE1pbmltdW1XaWRnZXRzPSI5IiAvPgotLi4uCi1gYGAKLQotX05vdGVfOgotICAqIGBSZWNvcmRQ
cm9wZXJ0eSgpYCBpcyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIGBUZXN0YCBjbGFzcy4gVGhlcmVm
b3JlIGl0IG5lZWRzIHRvIGJlIHByZWZpeGVkIHdpdGggYDo6dGVzdGluZzo6VGVzdDo6YCBpZiB1
c2VkIG91dHNpZGUgb2YgdGhlIGBURVNUYCBib2R5IGFuZCB0aGUgdGVzdCBmaXh0dXJlIGNsYXNz
LgotICAqIGBrZXlgIG11c3QgYmUgYSB2YWxpZCBYTUwgYXR0cmlidXRlIG5hbWUsIGFuZCBjYW5u
b3QgY29uZmxpY3Qgd2l0aCB0aGUgb25lcyBhbHJlYWR5IHVzZWQgYnkgR29vZ2xlIFRlc3QgKGBu
YW1lYCwgYHN0YXR1c2AsIGB0aW1lYCwgYGNsYXNzbmFtZWAsIGB0eXBlX3BhcmFtYCwgYW5kIGB2
YWx1ZV9wYXJhbWApLgotICAqIENhbGxpbmcgYFJlY29yZFByb3BlcnR5KClgIG91dHNpZGUgb2Yg
dGhlIGxpZmVzcGFuIG9mIGEgdGVzdCBpcyBhbGxvd2VkLiBJZiBpdCdzIGNhbGxlZCBvdXRzaWRl
IG9mIGEgdGVzdCBidXQgYmV0d2VlbiBhIHRlc3QgY2FzZSdzIGBTZXRVcFRlc3RDYXNlKClgIGFu
ZCBgVGVhckRvd25UZXN0Q2FzZSgpYCBtZXRob2RzLCBpdCB3aWxsIGJlIGF0dHJpYnV0ZWQgdG8g
dGhlIFhNTCBlbGVtZW50IGZvciB0aGUgdGVzdCBjYXNlLiBJZiBpdCdzIGNhbGxlZCBvdXRzaWRl
IG9mIGFsbCB0ZXN0IGNhc2VzIChlLmcuIGluIGEgdGVzdCBlbnZpcm9ubWVudCksIGl0IHdpbGwg
YmUgYXR0cmlidXRlZCB0byB0aGUgdG9wLWxldmVsIFhNTCBlbGVtZW50LgotCi1fQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVu
IFRlc3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZSAjCi0KLQotCi1Hb29nbGUgVGVzdCBjcmVhdGVz
IGEgbmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtl
Ci10ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGlt
ZXMgdGVzdHMgdXNlIHJlc291cmNlcwotdGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFr
aW5nIHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5Ci1leHBlbnNpdmUu
Ci0KLUlmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhh
cm0gaW4gdGhlbSBzaGFyaW5nIGEKLXNpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRp
b24gdG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xlIFRlc3QKLWFsc28gc3VwcG9y
dHMgcGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6Ci0KLSAgMS4gSW4g
eW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVmaW5lIGFzIGBzdGF0
aWNgIHNvbWUgbWVtYmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgot
ICAxLiBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9p
ZCBTZXRVcFRlc3RDYXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3BlbGwgaXQgYXMg
KipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkgdG8gc2V0IHVwIHRoZSBzaGFy
ZWQgcmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKClgIGZ1bmN0
aW9uIHRvIHRlYXIgdGhlbSBkb3duLgotCi1UaGF0J3MgaXQhIEdvb2dsZSBUZXN0IGF1dG9tYXRp
Y2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhlCi1fZmlyc3Qg
dGVzdF8gaW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRo
ZSBmaXJzdAotYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgp
YCBhZnRlciBydW5uaW5nIHRoZSBfbGFzdCB0ZXN0XwotaW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRp
bmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cwotY2Fu
IHVzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4KLQotUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRl
ciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0Ci1wcmVj
ZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBu
b3QgbW9kaWZ5IHRoZQotc3RhdGUgb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkg
ZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0Ci1yZXN0b3JlIHRoZSBzdGF0ZSB0byBpdHMg
b3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4dAotdGVzdC4K
LQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93
bjoKLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCi0gIC8vIENhbGxlZCBiZWZvcmUgdGhl
IGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5v
dCBuZWVkZWQuCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgc2hhcmVkX3Jl
c291cmNlXyA9IG5ldyAuLi47Ci0gIH0KLQotICAvLyBQZXItdGVzdC1jYXNlIHRlYXItZG93bi4K
LSAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIC8v
IENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVz
dENhc2UoKSB7Ci0gICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87Ci0gICAgc2hhcmVkX3Jlc291
cmNlXyA9IE5VTEw7Ci0gIH0KLQotICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCBzZXQtdXAg
YW5kIHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAu
Li4gfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9Ci0KLSAgLy8gU29tZSBleHBl
bnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KLSAgc3RhdGljIFQqIHNoYXJlZF9y
ZXNvdXJjZV87Ci19OwotCi1UKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKLQot
VEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9y
ZXNvdXJjZSBoZXJlIC4uLgotfQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7Ci0gIC4uLiB5b3Ug
Y2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgotfQotYGBgCi0KLV9BdmFpbGFi
aWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIEdsb2JhbCBTZXQtVXAgYW5kIFRlYXIt
RG93biAjCi0KLUp1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93biBhdCB0aGUg
dGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQotbGV2ZWwsIHlvdSBjYW4gYWxzbyBkbyBpdCBh
dCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgotCi1GaXJzdCwgeW91IHN1YmNs
YXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5lIGEgdGVzdAot
ZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXItZG93bjoKLQot
YGBgCi1jbGFzcyBFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5FbnZpcm9ubWVu
dCgpIHt9Ci0gIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVu
dmlyb25tZW50LgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotICAvLyBPdmVycmlkZSB0aGlz
IHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkge30KLX07Ci1gYGAKLQotVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGluc3Rh
bmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29nbGUgVGVzdCBieQotY2FsbGlu
ZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1bmN0aW9uOgot
Ci1gYGAKLUVudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQq
IGVudik7Ci1gYGAKLQotTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwgaXQg
Zmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKLXRoZSBlbnZpcm9ubWVudCBvYmpl
Y3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBh
bmQKLWZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVudCBvYmplY3Qu
Ci0KLUl0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4g
dGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKLXdpbGwgYmUgY2FsbGVkIGluIHRoZSBvcmRlciB0
aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwgYmUKLWNhbGxl
ZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KLQotTm90ZSB0aGF0IEdvb2dsZSBUZXN0IHRha2VzIG93
bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgotVGhlcmVmb3Jl
ICoqZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCi0KLVlvdSBzaG91bGQgY2FsbCBg
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNUUygpYCBpcwot
Y2FsbGVkLCBwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3RfbWFpbmAsIHlv
dSBuZWVkIHRvICAgICAgY2FsbAotdGhpcyBiZWZvcmUgYG1haW4oKWAgc3RhcnRzIGZvciBpdCB0
byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRvCi1kZWZpbmUgYSBnbG9iYWwg
dmFyaWFibGUgbGlrZSB0aGlzOgotCi1gYGAKLTo6dGVzdGluZzo6RW52aXJvbm1lbnQqIGNvbnN0
IGZvb19lbnYgPSA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52
aXJvbm1lbnQpOwotYGBgCi0KLUhvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8g
d3JpdGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwKLWBBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoKWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsCi12YXJp
YWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZSBwcm9ibGVt
cyB3aGVuIHlvdQotcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50
IHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUKLWVudmlyb25tZW50cyBoYXZlIGRlcGVuZGVuY2ll
cyBhbW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0Ci1ndWFyYW50
ZWUgdGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJh
bnNsYXRpb24gdW5pdHMKLWFyZSBpbml0aWFsaXplZCkuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLgotCi0KLSMgVmFsdWUgUGFyYW1ldGVyaXplZCBUZXN0cyAjCi0KLV9W
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0
aCBkaWZmZXJlbnQKLXBhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBv
ZiB0aGUgc2FtZSB0ZXN0LgotCi1TdXBwb3NlIHlvdSB3cml0ZSBhIHRlc3QgZm9yIHlvdXIgY29k
ZSBhbmQgdGhlbiByZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFmZmVjdGVkIGJ5IGEgcHJlc2Vu
Y2Ugb2YgYSBCb29sZWFuIGNvbW1hbmQgbGluZSBmbGFnLgotCi1gYGAKLVRFU1QoTXlDb2RlVGVz
dCwgVGVzdEZvbykgewotICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KLX0KLWBgYAotCi1Vc3Vh
bGx5IHBlb3BsZSBmYWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8gYSBmdW5jdGlvbiB3aXRoIGEg
Qm9vbGVhbiBwYXJhbWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBUaGUgZnVuY3Rpb24gc2V0cyB0
aGUgZmxhZywgdGhlbiBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2RlLgotCi1gYGAKLXZvaWQgVGVz
dEZvb0hlbHBlcihib29sIGZsYWdfdmFsdWUpIHsKLSAgZmxhZyA9IGZsYWdfdmFsdWU7Ci0gIC8v
IEEgY29kZSB0byB0ZXN0IGZvbygpLgotfQotCi1URVNUKE15Q29kZVRlc3QsIFRlc3RGb28pIHsK
LSAgVGVzdEZvb0hlbHBlcihmYWxzZSk7Ci0gIFRlc3RGb29IZWxwZXIodHJ1ZSk7Ci19Ci1gYGAK
LQotQnV0IHRoaXMgc2V0dXAgaGFzIHNlcmlvdXMgZHJhd2JhY2tzLiBGaXJzdCwgd2hlbiBhIHRl
c3QgYXNzZXJ0aW9uIGZhaWxzIGluIHlvdXIgdGVzdHMsIGl0IGJlY29tZXMgdW5jbGVhciB3aGF0
IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXIgY2F1c2VkIGl0IHRvIGZhaWwuIFlvdSBjYW4gc3RyZWFt
IGEgY2xhcmlmeWluZyBtZXNzYWdlIGludG8geW91ciBgRVhQRUNUYC9gQVNTRVJUYCBzdGF0ZW1l
bnRzLCBidXQgaXQgeW91J2xsIGhhdmUgdG8gZG8gaXQgd2l0aCBhbGwgb2YgdGhlbS4gU2Vjb25k
LCB5b3UgaGF2ZSB0byBhZGQgb25lIHN1Y2ggaGVscGVyIGZ1bmN0aW9uIHBlciB0ZXN0LiBXaGF0
IGlmIHlvdSBoYXZlIHRlbiB0ZXN0cz8gVHdlbnR5PyBBIGh1bmRyZWQ/Ci0KLVZhbHVlLXBhcmFt
ZXRlcml6ZWQgdGVzdHMgd2lsbCBsZXQgeW91IHdyaXRlIHlvdXIgdGVzdCBvbmx5IG9uY2UgYW5k
IHRoZW4gZWFzaWx5IGluc3RhbnRpYXRlIGFuZCBydW4gaXQgd2l0aCBhbiBhcmJpdHJhcnkgbnVt
YmVyIG9mIHBhcmFtZXRlciB2YWx1ZXMuCi0KLUhlcmUgYXJlIHNvbWUgb3RoZXIgc2l0dWF0aW9u
cyB3aGVuIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgY29tZSBoYW5keToKLQotICAqIFlvdSB3
YW50IHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBvZiBhbiBPTyBpbnRlcmZhY2Uu
Ci0gICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUgb3ZlciB2YXJpb3VzIGlucHV0cyAoYS5r
LmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZlYXR1cmUgaXMgZWFzeSB0byBhYnVzZSwg
c28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5zZSB3aGVuIGRvaW5nIGl0IQotCi0jIyBI
b3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cyAjIwotCi1UbyB3cml0ZSB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1cmUK
LWNsYXNzLiAgSXQgbXVzdCBiZSBkZXJpdmVkIGZyb20gYm90aCBgOjp0ZXN0aW5nOjpUZXN0YCBh
bmQKLWA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxUPmAgKHRoZSBsYXR0ZXIgaXMgYSBw
dXJlIGludGVyZmFjZSksCi13aGVyZSBgVGAgaXMgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIg
dmFsdWVzLiAgRm9yIGNvbnZlbmllbmNlLCB5b3UKLWNhbiBqdXN0IGRlcml2ZSB0aGUgZml4dHVy
ZSBjbGFzcyBmcm9tIGA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08VD5gLAotd2hpY2ggaXRzZWxm
IGlzIGRlcml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAotYDo6dGVzdGluZzo6
V2l0aFBhcmFtSW50ZXJmYWNlPFQ+YC4gYFRgIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYK
LWl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhl
IGxpZmVzcGFuIG9mCi10aGUgcG9pbnRlZCB2YWx1ZXMuCi0KLWBgYAotY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKLSAgLy8gWW91
IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4K
LSAgLy8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20g
Y2xhc3MKLSAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KLX07Ci0KLS8vIE9yLCB3aGVuIHlvdSB3YW50
IHRvIGFkZCBwYXJhbWV0ZXJzIHRvIGEgcHJlLWV4aXN0aW5nIGZpeHR1cmUgY2xhc3M6Ci1jbGFz
cyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotICAuLi4KLX07Ci1jbGFzcyBC
YXJUZXN0IDogcHVibGljIEJhc2VUZXN0LAotICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4gewotICAuLi4KLX07Ci1gYGAKLQot
VGhlbiwgdXNlIHRoZSBgVEVTVF9QYCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRl
cm5zIHVzaW5nCi10aGlzIGZpeHR1cmUgYXMgeW91IHdhbnQuICBUaGUgYF9QYCBzdWZmaXggaXMg
Zm9yICJwYXJhbWV0ZXJpemVkIiBvcgotInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91IHByZWZlciB0
byB0aGluay4KLQotYGBgCi1URVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRl
IGEgdGVzdCwgYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1l
dGhvZAotICAvLyBvZiB0aGUgVGVzdFdpdGhQYXJhbTxUPiBjbGFzczoKLSAgRVhQRUNUX1RSVUUo
Zm9vLkJsYWgoR2V0UGFyYW0oKSkpOwotICAuLi4KLX0KLQotVEVTVF9QKEZvb1Rlc3QsIEhhc0Js
YWhCbGFoKSB7Ci0gIC4uLgotfQotYGBgCi0KLUZpbmFsbHksIHlvdSBjYW4gdXNlIGBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUGAgdG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKLWNhc2Ugd2l0aCBhbnkg
c2V0IG9mIHBhcmFtZXRlcnMgeW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBudW1iZXIg
b2YKLWZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJu
IHdoYXQgd2UgY2FsbAotKHN1cnByaXNlISkgX3BhcmFtZXRlciBnZW5lcmF0b3JzXy4gSGVyZSBp
cyBhIHN1bW1hcnkgb2YgdGhlbSwKLXdoaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0aW5nYCBuYW1l
c3BhY2U6Ci0KLXwgYFJhbmdlKGJlZ2luLCBlbmRbLCBzdGVwXSlgIHwgWWllbGRzIHZhbHVlcyBg
e2JlZ2luLCBiZWdpbitzdGVwLCBiZWdpbitzdGVwK3N0ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRv
IG5vdCBpbmNsdWRlIGBlbmRgLiBgc3RlcGAgZGVmYXVsdHMgdG8gMS4gfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKWAgICB8IFlp
ZWxkcyB2YWx1ZXMgYHt2MSwgdjIsIC4uLiwgdk59YC4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LXwgYFZhbHVlc0luKGNvbnRhaW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sIGVuZClgIHwgWWll
bGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBhcnJheSwgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciwg
b3IgYW4gaXRlcmF0b3IgcmFuZ2UgYFtiZWdpbiwgZW5kKWAuIGBjb250YWluZXJgLCBgYmVnaW5g
LCBhbmQgYGVuZGAgY2FuIGJlIGV4cHJlc3Npb25zIHdob3NlIHZhbHVlcyBhcmUgZGV0ZXJtaW5l
ZCBhdCBydW4gdGltZS4gIHwKLXwgYEJvb2woKWAgICAgICAgICAgICAgICAgICAgIHwgWWllbGRz
IHNlcXVlbmNlIGB7ZmFsc2UsIHRydWV9YC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
Q29tYmluZShnMSwgZzIsIC4uLiwgZ04pYCAgfCBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhl
IENhcnRlc2lhbiBwcm9kdWN0IGZvciB0aGUgbWF0aCBzYXZ2eSkgb2YgdGhlIHZhbHVlcyBnZW5l
cmF0ZWQgYnkgdGhlIGBOYCBnZW5lcmF0b3JzLiBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHlv
dXIgc3lzdGVtIHByb3ZpZGVzIHRoZSBgPHRyMS90dXBsZT5gIGhlYWRlci4gSWYgeW91IGFyZSBz
dXJlIHlvdXIgc3lzdGVtIGRvZXMsIGFuZCBHb29nbGUgVGVzdCBkaXNhZ3JlZXMsIHlvdSBjYW4g
b3ZlcnJpZGUgaXQgYnkgZGVmaW5pbmcgYEdURVNUX0hBU19UUjFfVFVQTEU9MWAuIFNlZSBjb21t
ZW50cyBpbiBbaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmhdKC4uL2luY2x1ZGUv
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gfAotCi1G
b3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGNvbW1lbnRzIGF0IHRoZSBkZWZpbml0aW9ucyBvZiB0
aGVzZSBmdW5jdGlvbnMgaW4gdGhlIFtzb3VyY2UgY29kZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVz
dC1wYXJhbS10ZXN0LmgpLgotCi1UaGUgZm9sbG93aW5nIHN0YXRlbWVudCB3aWxsIGluc3RhbnRp
YXRlIHRlc3RzIGZyb20gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UKLWVhY2ggd2l0aCBwYXJhbWV0
ZXIgdmFsdWVzIGAibWVlbnkiYCwgYCJtaW55ImAsIGFuZCBgIm1vZSJgLgotCi1gYGAKLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25OYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgRm9vVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVz
KCJtZWVueSIsICJtaW55IiwgIm1vZSIpKTsKLWBgYAotCi1UbyBkaXN0aW5ndWlzaCBkaWZmZXJl
bnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuICh5ZXMsIHlvdSBjYW4KLWluc3RhbnRpYXRlIGl0
IG1vcmUgdGhhbiBvbmNlKSwgdGhlIGZpcnN0IGFyZ3VtZW50IHRvCi1gSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1BgIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYWN0dWFsCi10
ZXN0IGNhc2UgbmFtZS4gUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMgZm9yIGRpZmZl
cmVudAotaW5zdGFudGlhdGlvbnMuIFRoZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFi
b3ZlIHdpbGwgaGF2ZSB0aGVzZQotbmFtZXM6Ci0KLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9v
VGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJtZWVueSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAibWlueSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zv
b1Rlc3QuRG9lc0JsYWgvMmAgZm9yIGAibW9lImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9v
VGVzdC5IYXNCbGFoQmxhaC8wYCBmb3IgYCJtZWVueSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1l
L0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAibWlueSJgCi0gICogYEluc3RhbnRpYXRpb25O
YW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMmAgZm9yIGAibW9lImAKLQotWW91IGNhbiB1c2UgdGhl
c2UgbmFtZXMgaW4gWy0tZ3Rlc3RcX2ZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRl
c3RzKS4KLQotVGhpcyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBg
Rm9vVGVzdGAgYWdhaW4sIGVhY2gKLXdpdGggcGFyYW1ldGVyIHZhbHVlcyBgImNhdCJgIGFuZCBg
ImRvZyJgOgotCi1gYGAKLWNvbnN0IGNoYXIqIHBldHNbXSA9IHsiY2F0IiwgImRvZyJ9OwotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoQW5vdGhlckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXNJbihwZXRzKSk7Ci1gYGAK
LQotVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNl
IG5hbWVzOgotCi0gICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFo
LzBgIGZvciBgImNhdCJgCi0gICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRv
ZXNCbGFoLzFgIGZvciBgImRvZyJgCi0gICogYEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgImNhdCJgCi0gICogYEFub3RoZXJJbnN0YW50aWF0aW9u
TmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzFgIGZvciBgImRvZyJgCi0KLVBsZWFzZSBub3RlIHRo
YXQgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB3aWxsIGluc3RhbnRpYXRlIF9hbGxfCi10ZXN0
cyBpbiB0aGUgZ2l2ZW4gdGVzdCBjYXNlLCB3aGV0aGVyIHRoZWlyIGRlZmluaXRpb25zIGNvbWUg
YmVmb3JlIG9yCi1fYWZ0ZXJfIHRoZSBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHN0YXRlbWVu
dC4KLQotWW91IGNhbiBzZWUKLVt0aGVzZV0oLi4vc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNj
KQotW2ZpbGVzXSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MpIGZvciBtb3JlIGV4YW1w
bGVzLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4w
IG9yIGFib3ZlKSwgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMi4wLgotCi0jIyBDcmVhdGluZyBWYWx1
ZS1QYXJhbWV0ZXJpemVkIEFic3RyYWN0IFRlc3RzICMjCi0KLUluIHRoZSBhYm92ZSwgd2UgZGVm
aW5lIGFuZCBpbnN0YW50aWF0ZSBgRm9vVGVzdGAgaW4gdGhlIHNhbWUgc291cmNlCi1maWxlLiBT
b21ldGltZXMgeW91IG1heSB3YW50IHRvIGRlZmluZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
IGluIGEKLWxpYnJhcnkgYW5kIGxldCBvdGhlciBwZW9wbGUgaW5zdGFudGlhdGUgdGhlbSBsYXRl
ci4gVGhpcyBwYXR0ZXJuIGlzCi1rbm93biBhcyA8aT5hYnN0cmFjdCB0ZXN0czwvaT4uIEFzIGFu
IGV4YW1wbGUgb2YgaXRzIGFwcGxpY2F0aW9uLCB3aGVuIHlvdQotYXJlIGRlc2lnbmluZyBhbiBp
bnRlcmZhY2UgeW91IGNhbiB3cml0ZSBhIHN0YW5kYXJkIHN1aXRlIG9mIGFic3RyYWN0Ci10ZXN0
cyAocGVyaGFwcyB1c2luZyBhIGZhY3RvcnkgZnVuY3Rpb24gYXMgdGhlIHRlc3QgcGFyYW1ldGVy
KSB0aGF0Ci1hbGwgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbnRlcmZhY2UgYXJlIGV4cGVjdGVk
IHRvIHBhc3MuIFdoZW4KLXNvbWVvbmUgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLCBoZSBjYW4g
aW5zdGFudGlhdGUgeW91ciBzdWl0ZSB0byBnZXQKLWFsbCB0aGUgaW50ZXJmYWNlLWNvbmZvcm1h
bmNlIHRlc3RzIGZvciBmcmVlLgotCi1UbyBkZWZpbmUgYWJzdHJhY3QgdGVzdHMsIHlvdSBzaG91
bGQgb3JnYW5pemUgeW91ciBjb2RlIGxpa2UgdGhpczoKLQotICAxLiBQdXQgdGhlIGRlZmluaXRp
b24gb2YgdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIGNsYXNzIChlLmcuIGBGb29UZXN0
YCkgaW4gYSBoZWFkZXIgZmlsZSwgc2F5IGBmb29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhp
cyBhcyBfZGVjbGFyaW5nXyB5b3VyIGFic3RyYWN0IHRlc3RzLgotICAxLiBQdXQgdGhlIGBURVNU
X1BgIGRlZmluaXRpb25zIGluIGBmb29fcGFyYW1fdGVzdC5jY2AsIHdoaWNoIGluY2x1ZGVzIGBm
b29fcGFyYW1fdGVzdC5oYC4gVGhpbmsgb2YgdGhpcyBhcyBfaW1wbGVtZW50aW5nXyB5b3VyIGFi
c3RyYWN0IHRlc3RzLgotCi1PbmNlIHRoZXkgYXJlIGRlZmluZWQsIHlvdSBjYW4gaW5zdGFudGlh
dGUgdGhlbSBieSBpbmNsdWRpbmcKLWBmb29fcGFyYW1fdGVzdC5oYCwgaW52b2tpbmcgYElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKClgLCBhbmQgbGlua2luZwotd2l0aCBgZm9vX3BhcmFtX3Rlc3Qu
Y2NgLiBZb3UgY2FuIGluc3RhbnRpYXRlIHRoZSBzYW1lIGFic3RyYWN0IHRlc3QKLWNhc2UgbXVs
dGlwbGUgdGltZXMsIHBvc3NpYmx5IGluIGRpZmZlcmVudCBzb3VyY2UgZmlsZXMuCi0KLSMgVHlw
ZWQgVGVzdHMgIwotCi1TdXBwb3NlIHlvdSBoYXZlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBv
ZiB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kCi13YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiB0
aGVtIHNhdGlzZnkgc29tZSBjb21tb24gcmVxdWlyZW1lbnRzLgotT3IsIHlvdSBtYXkgaGF2ZSBk
ZWZpbmVkIHNldmVyYWwgdHlwZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gY29uZm9ybSB0bwotdGhl
IHNhbWUgImNvbmNlcHQiIGFuZCB5b3Ugd2FudCB0byB2ZXJpZnkgaXQuICBJbiBib3RoIGNhc2Vz
LCB5b3Ugd2FudAotdGhlIHNhbWUgdGVzdCBsb2dpYyByZXBlYXRlZCBmb3IgZGlmZmVyZW50IHR5
cGVzLgotCi1XaGlsZSB5b3UgY2FuIHdyaXRlIG9uZSBgVEVTVGAgb3IgYFRFU1RfRmAgZm9yIGVh
Y2ggdHlwZSB5b3Ugd2FudCB0bwotdGVzdCAoYW5kIHlvdSBtYXkgZXZlbiBmYWN0b3IgdGhlIHRl
c3QgbG9naWMgaW50byBhIGZ1bmN0aW9uIHRlbXBsYXRlCi10aGF0IHlvdSBpbnZva2UgZnJvbSB0
aGUgYFRFU1RgKSwgaXQncyB0ZWRpb3VzIGFuZCBkb2Vzbid0IHNjYWxlOgotaWYgeW91IHdhbnQg
X21fIHRlc3RzIG92ZXIgX25fIHR5cGVzLCB5b3UnbGwgZW5kIHVwIHdyaXRpbmcgX21cKm5fCi1g
VEVTVGBzLgotCi1fVHlwZWQgdGVzdHNfIGFsbG93IHlvdSB0byByZXBlYXQgdGhlIHNhbWUgdGVz
dCBsb2dpYyBvdmVyIGEgbGlzdCBvZgotdHlwZXMuICBZb3Ugb25seSBuZWVkIHRvIHdyaXRlIHRo
ZSB0ZXN0IGxvZ2ljIG9uY2UsIGFsdGhvdWdoIHlvdSBtdXN0Ci1rbm93IHRoZSB0eXBlIGxpc3Qg
d2hlbiB3cml0aW5nIHR5cGVkIHRlc3RzLiAgSGVyZSdzIGhvdyB5b3UgZG8gaXQ6Ci0KLUZpcnN0
LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRl
cml6ZWQKLWJ5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIGA6OnRlc3Rpbmc6
OlRlc3RgOgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgLi4uCi0gIHR5cGVkZWYgc3RkOjps
aXN0PFQ+IExpc3Q7Ci0gIHN0YXRpYyBUIHNoYXJlZF87Ci0gIFQgdmFsdWVfOwotfTsKLWBgYAot
Ci1OZXh0LCBhc3NvY2lhdGUgYSBsaXN0IG9mIHR5cGVzIHdpdGggdGhlIHRlc3QgY2FzZSwgd2hp
Y2ggd2lsbCBiZQotcmVwZWF0ZWQgZm9yIGVhY2ggdHlwZSBpbiB0aGUgbGlzdDoKLQotYGBgCi10
eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1bnNpZ25lZCBpbnQ+IE15VHlwZXM7
Ci1UWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgTXlUeXBlcyk7Ci1gYGAKLQotVGhlIGB0eXBlZGVm
YCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBgVFlQRURfVEVTVF9DQVNFYCBtYWNybyB0byBwYXJzZQot
Y29ycmVjdGx5LiAgT3RoZXJ3aXNlIHRoZSBjb21waWxlciB3aWxsIHRoaW5rIHRoYXQgZWFjaCBj
b21tYSBpbiB0aGUKLXR5cGUgbGlzdCBpbnRyb2R1Y2VzIGEgbmV3IG1hY3JvIGFyZ3VtZW50Lgot
Ci1UaGVuLCB1c2UgYFRZUEVEX1RFU1QoKWAgaW5zdGVhZCBvZiBgVEVTVF9GKClgIHRvIGRlZmlu
ZSBhIHR5cGVkIHRlc3QKLWZvciB0aGlzIHRlc3QgY2FzZS4gIFlvdSBjYW4gcmVwZWF0IHRoaXMg
YXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKLQotYGBgCi1UWVBFRF9URVNUKEZvb1Rlc3QsIERv
ZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIHRoZSBzcGVjaWFsIG5hbWUg
VHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZQotICAvLyBwYXJhbWV0ZXIuICBTaW5jZSB3ZSBhcmUg
aW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVzCi0gIC8vIHVzIHRv
IHZpc2l0IHRoZSBtZW1iZXJzIG9mIEZvb1Rlc3QgdmlhICd0aGlzJy4KLSAgVHlwZVBhcmFtIG4g
PSB0aGlzLT52YWx1ZV87Ci0KLSAgLy8gVG8gdmlzaXQgc3RhdGljIG1lbWJlcnMgb2YgdGhlIGZp
eHR1cmUsIGFkZCB0aGUgJ1Rlc3RGaXh0dXJlOjonCi0gIC8vIHByZWZpeC4KLSAgbiArPSBUZXN0
Rml4dHVyZTo6c2hhcmVkXzsKLQotICAvLyBUbyByZWZlciB0byB0eXBlZGVmcyBpbiB0aGUgZml4
dHVyZSwgYWRkIHRoZSAndHlwZW5hbWUgVGVzdEZpeHR1cmU6OicKLSAgLy8gcHJlZml4LiAgVGhl
ICd0eXBlbmFtZScgaXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUgY29tcGlsZXIuCi0gIHR5cGVu
YW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFjayhuKTsKLSAg
Li4uCi19Ci0KLVRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAK
LQotWW91IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxl
dGUgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBN
U1ZDIDguMCBvciBhYm92ZSksIE1hYzsKLXNpbmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVHlwZS1Q
YXJhbWV0ZXJpemVkIFRlc3RzICMKLQotX1R5cGUtcGFyYW1ldGVyaXplZCB0ZXN0c18gYXJlIGxp
a2UgdHlwZWQgdGVzdHMsIGV4Y2VwdCB0aGF0IHRoZXkKLWRvbid0IHJlcXVpcmUgeW91IHRvIGtu
b3cgdGhlIGxpc3Qgb2YgdHlwZXMgYWhlYWQgb2YgdGltZS4gIEluc3RlYWQsCi15b3UgY2FuIGRl
ZmluZSB0aGUgdGVzdCBsb2dpYyBmaXJzdCBhbmQgaW5zdGFudGlhdGUgaXQgd2l0aCBkaWZmZXJl
bnQKLXR5cGUgbGlzdHMgbGF0ZXIuICBZb3UgY2FuIGV2ZW4gaW5zdGFudGlhdGUgaXQgbW9yZSB0
aGFuIG9uY2UgaW4gdGhlCi1zYW1lIHByb2dyYW0uCi0KLUlmIHlvdSBhcmUgZGVzaWduaW5nIGFu
IGludGVyZmFjZSBvciBjb25jZXB0LCB5b3UgY2FuIGRlZmluZSBhIHN1aXRlCi1vZiB0eXBlLXBh
cmFtZXRlcml6ZWQgdGVzdHMgdG8gdmVyaWZ5IHByb3BlcnRpZXMgdGhhdCBhbnkgdmFsaWQKLWlt
cGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2UvY29uY2VwdCBzaG91bGQgaGF2ZS4gIFRoZW4s
IHRoZSBhdXRob3IKLW9mIGVhY2ggaW1wbGVtZW50YXRpb24gY2FuIGp1c3QgaW5zdGFudGlhdGUg
dGhlIHRlc3Qgc3VpdGUgd2l0aCBoaXMKLXR5cGUgdG8gdmVyaWZ5IHRoYXQgaXQgY29uZm9ybXMg
dG8gdGhlIHJlcXVpcmVtZW50cywgd2l0aG91dCBoYXZpbmcgdG8KLXdyaXRlIHNpbWlsYXIgdGVz
dHMgcmVwZWF0ZWRseS4gIEhlcmUncyBhbiBleGFtcGxlOgotCi1GaXJzdCwgZGVmaW5lIGEgZml4
dHVyZSBjbGFzcyB0ZW1wbGF0ZSwgYXMgd2UgZGlkIHdpdGggdHlwZWQgdGVzdHM6Ci0KLWBgYAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7Ci0gIC4uLgotfTsKLWBgYAotCi1OZXh0LCBkZWNsYXJlIHRoYXQgeW91IHdpbGwgZGVm
aW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZToKLQotYGBgCi1UWVBFRF9URVNUX0NB
U0VfUChGb29UZXN0KTsKLWBgYAotCi1UaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJp
emVkIiBvciAicGF0dGVybiIsIHdoaWNoZXZlciB5b3UKLXByZWZlciB0byB0aGluay4KLQotVGhl
biwgdXNlIGBUWVBFRF9URVNUX1AoKWAgdG8gZGVmaW5lIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QuICBZb3UKLWNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgotCi1g
YGAKLVRZUEVEX1RFU1RfUChGb29UZXN0LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0
LCByZWZlciB0byBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlIHBhcmFtZXRlci4KLSAgVHlwZVBh
cmFtIG4gPSAwOwotICAuLi4KLX0KLQotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIEhhc1Byb3BlcnR5
QSkgeyAuLi4gfQotYGBgCi0KLU5vdyB0aGUgdHJpY2t5IHBhcnQ6IHlvdSBuZWVkIHRvIHJlZ2lz
dGVyIGFsbCB0ZXN0IHBhdHRlcm5zIHVzaW5nIHRoZQotYFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FT
RV9QYCBtYWNybyBiZWZvcmUgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtLgotVGhlIGZpcnN0IGFy
Z3VtZW50IG9mIHRoZSBtYWNybyBpcyB0aGUgdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0IGFyZQot
dGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZToKLQotYGBgCi1SRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUChGb29UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
RG9lc0JsYWgsIEhhc1Byb3BlcnR5QSk7Ci1gYGAKLQotRmluYWxseSwgeW91IGFyZSBmcmVlIHRv
IGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhlIHR5cGVzIHlvdQotd2FudC4gIElmIHlv
dSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIgZmlsZSwgeW91IGNhbiBgI2luY2x1ZGVg
Ci1pdCBpbiBtdWx0aXBsZSBDKysgc291cmNlIGZpbGVzIGFuZCBpbnN0YW50aWF0ZSBpdCBtdWx0
aXBsZSB0aW1lcy4KLQotYGBgCi10eXBlZGVmIDo6dGVzdGluZzo6VHlwZXM8Y2hhciwgaW50LCB1
bnNpZ25lZCBpbnQ+IE15VHlwZXM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
Rm9vVGVzdCwgTXlUeXBlcyk7Ci1gYGAKLQotVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3Rh
bmNlcyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0IGFyZ3VtZW50Ci10byB0aGUgYElOU1RBTlRJ
QVRFX1RZUEVEX1RFU1RfQ0FTRV9QYCBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUKLWFk
ZGVkIHRvIHRoZSBhY3R1YWwgdGVzdCBjYXNlIG5hbWUuICBSZW1lbWJlciB0byBwaWNrIHVuaXF1
ZSBwcmVmaXhlcwotZm9yIGRpZmZlcmVudCBpbnN0YW5jZXMuCi0KLUluIHRoZSBzcGVjaWFsIGNh
c2Ugd2hlcmUgdGhlIHR5cGUgbGlzdCBjb250YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UKLWNhbiB3
cml0ZSB0aGF0IHR5cGUgZGlyZWN0bHkgd2l0aG91dCBgOjp0ZXN0aW5nOjpUeXBlczwuLi4+YCwg
bGlrZSB0aGlzOgotCi1gYGAKLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29U
ZXN0LCBpbnQpOwotYGBgCi0KLVlvdSBjYW4gc2VlIGBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3Qu
Y2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7Ci1zaW5jZSB2ZXJzaW9uIDEu
MS4wLgotCi0jIFRlc3RpbmcgUHJpdmF0ZSBDb2RlICMKLQotSWYgeW91IGNoYW5nZSB5b3VyIHNv
ZnR3YXJlJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24sIHlvdXIgdGVzdHMgc2hvdWxkIG5vdAot
YnJlYWsgYXMgbG9uZyBhcyB0aGUgY2hhbmdlIGlzIG5vdCBvYnNlcnZhYmxlIGJ5IHVzZXJzLiBU
aGVyZWZvcmUsIHBlciB0aGUKLV9ibGFjay1ib3ggdGVzdGluZyBwcmluY2lwbGVfLCBtb3N0IG9m
IHRoZSB0aW1lIHlvdSBzaG91bGQgdGVzdCB5b3VyIGNvZGUKLXRocm91Z2ggaXRzIHB1YmxpYyBp
bnRlcmZhY2VzLgotCi1JZiB5b3Ugc3RpbGwgZmluZCB5b3Vyc2VsZiBuZWVkaW5nIHRvIHRlc3Qg
aW50ZXJuYWwgaW1wbGVtZW50YXRpb24gY29kZSwKLWNvbnNpZGVyIGlmIHRoZXJlJ3MgYSBiZXR0
ZXIgZGVzaWduIHRoYXQgd291bGRuJ3QgcmVxdWlyZSB5b3UgdG8gZG8gc28uIElmIHlvdQotYWJz
b2x1dGVseSBoYXZlIHRvIHRlc3Qgbm9uLXB1YmxpYyBpbnRlcmZhY2UgY29kZSB0aG91Z2gsIHlv
dSBjYW4uIFRoZXJlIGFyZQotdHdvIGNhc2VzIHRvIGNvbnNpZGVyOgotCi0gICogU3RhdGljIGZ1
bmN0aW9ucyAoX25vdF8gdGhlIHNhbWUgYXMgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMhKSBvciB1
bm5hbWVkIG5hbWVzcGFjZXMsIGFuZAotICAqIFByaXZhdGUgb3IgcHJvdGVjdGVkIGNsYXNzIG1l
bWJlcnMKLQotIyMgU3RhdGljIEZ1bmN0aW9ucyAjIwotCi1Cb3RoIHN0YXRpYyBmdW5jdGlvbnMg
YW5kIGRlZmluaXRpb25zL2RlY2xhcmF0aW9ucyBpbiBhbiB1bm5hbWVkIG5hbWVzcGFjZSBhcmUK
LW9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdC4gVG8gdGVzdCB0
aGVtLCB5b3UgY2FuIGAjaW5jbHVkZWAKLXRoZSBlbnRpcmUgYC5jY2AgZmlsZSBiZWluZyB0ZXN0
ZWQgaW4geW91ciBgKl90ZXN0LmNjYCBmaWxlLiAoYCNpbmNsdWRlYGluZyBgLmNjYAotZmlsZXMg
aXMgbm90IGEgZ29vZCB3YXkgdG8gcmV1c2UgY29kZSAtIHlvdSBzaG91bGQgbm90IGRvIHRoaXMg
aW4gcHJvZHVjdGlvbgotY29kZSEpCi0KLUhvd2V2ZXIsIGEgYmV0dGVyIGFwcHJvYWNoIGlzIHRv
IG1vdmUgdGhlIHByaXZhdGUgY29kZSBpbnRvIHRoZQotYGZvbzo6aW50ZXJuYWxgIG5hbWVzcGFj
ZSwgd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWVzcGFjZSB5b3VyIHByb2plY3Qgbm9ybWFsbHkKLXVz
ZXMsIGFuZCBwdXQgdGhlIHByaXZhdGUgZGVjbGFyYXRpb25zIGluIGEgYCotaW50ZXJuYWwuaGAg
ZmlsZS4gWW91cgotcHJvZHVjdGlvbiBgLmNjYCBmaWxlcyBhbmQgeW91ciB0ZXN0cyBhcmUgYWxs
b3dlZCB0byBpbmNsdWRlIHRoaXMgaW50ZXJuYWwKLWhlYWRlciwgYnV0IHlvdXIgY2xpZW50cyBh
cmUgbm90LiBUaGlzIHdheSwgeW91IGNhbiBmdWxseSB0ZXN0IHlvdXIgaW50ZXJuYWwKLWltcGxl
bWVudGF0aW9uIHdpdGhvdXQgbGVha2luZyBpdCB0byB5b3VyIGNsaWVudHMuCi0KLSMjIFByaXZh
dGUgQ2xhc3MgTWVtYmVycyAjIwotCi1Qcml2YXRlIGNsYXNzIG1lbWJlcnMgYXJlIG9ubHkgYWNj
ZXNzaWJsZSBmcm9tIHdpdGhpbiB0aGUgY2xhc3Mgb3IgYnkgZnJpZW5kcy4KLVRvIGFjY2VzcyBh
IGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHlvdSBjYW4gZGVjbGFyZSB5b3VyIHRlc3QgZml4dHVy
ZSBhcyBhCi1mcmllbmQgdG8gdGhlIGNsYXNzIGFuZCBkZWZpbmUgYWNjZXNzb3JzIGluIHlvdXIg
Zml4dHVyZS4gVGVzdHMgdXNpbmcgdGhlCi1maXh0dXJlIGNhbiB0aGVuIGFjY2VzcyB0aGUgcHJp
dmF0ZSBtZW1iZXJzIG9mIHlvdXIgcHJvZHVjdGlvbiBjbGFzcyB2aWEgdGhlCi1hY2Nlc3NvcnMg
aW4gdGhlIGZpeHR1cmUuIE5vdGUgdGhhdCBldmVuIHRob3VnaCB5b3VyIGZpeHR1cmUgaXMgYSBm
cmllbmQgdG8KLXlvdXIgcHJvZHVjdGlvbiBjbGFzcywgeW91ciB0ZXN0cyBhcmUgbm90IGF1dG9t
YXRpY2FsbHkgZnJpZW5kcyB0byBpdCwgYXMgdGhleQotYXJlIHRlY2huaWNhbGx5IGRlZmluZWQg
aW4gc3ViLWNsYXNzZXMgb2YgdGhlIGZpeHR1cmUuCi0KLUFub3RoZXIgd2F5IHRvIHRlc3QgcHJp
dmF0ZSBtZW1iZXJzIGlzIHRvIHJlZmFjdG9yIHRoZW0gaW50byBhbiBpbXBsZW1lbnRhdGlvbgot
Y2xhc3MsIHdoaWNoIGlzIHRoZW4gZGVjbGFyZWQgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZ
b3VyIGNsaWVudHMgYXJlbid0Ci1hbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgYnV0IHlv
dXIgdGVzdHMgY2FuLiBTdWNoIGlzIGNhbGxlZCB0aGUgUGltcGwKLShQcml2YXRlIEltcGxlbWVu
dGF0aW9uKSBpZGlvbS4KLQotT3IsIHlvdSBjYW4gZGVjbGFyZSBhbiBpbmRpdmlkdWFsIHRlc3Qg
YXMgYSBmcmllbmQgb2YgeW91ciBjbGFzcyBieSBhZGRpbmcgdGhpcwotbGluZSBpbiB0aGUgY2xh
c3MgYm9keToKLQotYGBgCi1GUklFTkRfVEVTVChUZXN0Q2FzZU5hbWUsIFRlc3ROYW1lKTsKLWBg
YAotCi1Gb3IgZXhhbXBsZSwKLWBgYAotLy8gZm9vLmgKLSNpbmNsdWRlICJndGVzdC9ndGVzdF9w
cm9kLmgiCi0KLS8vIERlZmluZXMgRlJJRU5EX1RFU1QuCi1jbGFzcyBGb28gewotICAuLi4KLSBw
cml2YXRlOgotICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXJSZXR1cm5zWmVyb09uTnVsbCk7Ci0g
IGludCBCYXIodm9pZCogeCk7Ci19OwotCi0vLyBmb29fdGVzdC5jYwotLi4uCi1URVNUKEZvb1Rl
c3QsIEJhclJldHVybnNaZXJvT25OdWxsKSB7Ci0gIEZvbyBmb287Ci0gIEVYUEVDVF9FUSgwLCBm
b28uQmFyKE5VTEwpKTsKLSAgLy8gVXNlcyBGb28ncyBwcml2YXRlIG1lbWJlciBCYXIoKS4KLX0K
LWBgYAotCi1QYXkgc3BlY2lhbCBhdHRlbnRpb24gd2hlbiB5b3VyIGNsYXNzIGlzIGRlZmluZWQg
aW4gYSBuYW1lc3BhY2UsIGFzIHlvdSBzaG91bGQKLWRlZmluZSB5b3VyIHRlc3QgZml4dHVyZXMg
YW5kIHRlc3RzIGluIHRoZSBzYW1lIG5hbWVzcGFjZSBpZiB5b3Ugd2FudCB0aGVtIHRvCi1iZSBm
cmllbmRzIG9mIHlvdXIgY2xhc3MuIEZvciBleGFtcGxlLCBpZiB0aGUgY29kZSB0byBiZSB0ZXN0
ZWQgbG9va3MgbGlrZToKLQotYGBgCi1uYW1lc3BhY2UgbXlfbmFtZXNwYWNlIHsKLQotY2xhc3Mg
Rm9vIHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJh
cik7Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJheik7Ci0gIC4uLgotICBkZWZpbml0aW9uIG9m
IHRoZSBjbGFzcyBGb28KLSAgLi4uCi19OwotCi19ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNwYWNl
Ci1gYGAKLQotWW91ciB0ZXN0IGNvZGUgc2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlOgotCi1gYGAK
LW5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLi4uCi19OwotCi1URVNUX0YoRm9vVGVzdCwgQmFy
KSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9Ci0KLX0gIC8vIG5hbWVzcGFj
ZSBteV9uYW1lc3BhY2UKLWBgYAotCi0jIENhdGNoaW5nIEZhaWx1cmVzICMKLQotSWYgeW91IGFy
ZSBidWlsZGluZyBhIHRlc3RpbmcgdXRpbGl0eSBvbiB0b3Agb2YgR29vZ2xlIFRlc3QsIHlvdSds
bAotd2FudCB0byB0ZXN0IHlvdXIgdXRpbGl0eS4gIFdoYXQgZnJhbWV3b3JrIHdvdWxkIHlvdSB1
c2UgdG8gdGVzdCBpdD8KLUdvb2dsZSBUZXN0LCBvZiBjb3Vyc2UuCi0KLVRoZSBjaGFsbGVuZ2Ug
aXMgdG8gdmVyaWZ5IHRoYXQgeW91ciB0ZXN0aW5nIHV0aWxpdHkgcmVwb3J0cyBmYWlsdXJlcwot
Y29ycmVjdGx5LiAgSW4gZnJhbWV3b3JrcyB0aGF0IHJlcG9ydCBhIGZhaWx1cmUgYnkgdGhyb3dp
bmcgYW4KLWV4Y2VwdGlvbiwgeW91IGNvdWxkIGNhdGNoIHRoZSBleGNlcHRpb24gYW5kIGFzc2Vy
dCBvbiBpdC4gIEJ1dCBHb29nbGUKLVRlc3QgZG9lc24ndCB1c2UgZXhjZXB0aW9ucywgc28gaG93
IGRvIHdlIHRlc3QgdGhhdCBhIHBpZWNlIG9mIGNvZGUKLWdlbmVyYXRlcyBhbiBleHBlY3RlZCBm
YWlsdXJlPwotCi1gImd0ZXN0L2d0ZXN0LXNwaS5oImAgY29udGFpbnMgc29tZSBjb25zdHJ1Y3Rz
IHRvIGRvIHRoaXMuICBBZnRlciAKLWAjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4g
dXNlCi0KLXwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7
YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotCi10byBhc3NlcnQgdGhhdCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBg
QVNTRVJUXypgKSBmYWlsdXJlCi13aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vi
c3RyaW5nXywgb3IgdXNlCi0KLXwgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50
LCBzdWJzdHJpbmdfYCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAotCi1pZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAo
ZS5nLiBgRVhQRUNUXypgKSBmYWlsdXJlLgotCi1Gb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJl
IGFyZSBzb21lIGNhdmVhdHM6Ci0KLSAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1l
c3NhZ2UgdG8gZWl0aGVyIG1hY3JvLgotICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoKWAgY2Fubm90IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBv
ciBub24tc3RhdGljIG1lbWJlcnMgb2YgYHRoaXNgIG9iamVjdC4KLSAgMS4gX3N0YXRlbWVudF8g
aW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KLQotX05v
dGU6XyBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gT25jZSB0
aGUKLXN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGluIGAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cG9ydC5oImAgaGF2ZQotYmVlbiBpbXBsZW1lbnRlZCwgR29vZ2xlIFRlc3Qgd2lsbCBiZWNvbWUg
dGhyZWFkLXNhZmUsIG1lYW5pbmcgdGhhdAoteW91IGNhbiB0aGVuIHVzZSBhc3NlcnRpb25zIGlu
IG11bHRpcGxlIHRocmVhZHMgY29uY3VycmVudGx5LiBCZWZvcmUKLXRoYXQsIGhvd2V2ZXIsIEdv
b2dsZSBUZXN0IG9ubHkgc3VwcG9ydHMgc2luZ2xlLXRocmVhZGVkIHVzYWdlLiBPbmNlCi10aHJl
YWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoKWAKLXdpbGwgY2FwdHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgb25s
eS4gSWYgX3N0YXRlbWVudF8KLWNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNl
IHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiBJZgoteW91IHdhbnQgdG8gY2FwdHVyZSBmYWlsdXJl
cyBmcm9tIGFsbCB0aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCi10aGUgZm9sbG93aW5n
IG1hY3JvczoKLQotfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0
ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotCi0j
IEdldHRpbmcgdGhlIEN1cnJlbnQgVGVzdCdzIE5hbWUgIwotCi1Tb21ldGltZXMgYSBmdW5jdGlv
biBtYXkgbmVlZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0
LgotRm9yIGV4YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2Yg
eW91ciB0ZXN0IGZpeHR1cmUgdG8gc2V0Ci10aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3
aGljaCB0ZXN0IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKLWNsYXNzIGhh
cyB0aGlzIGluZm9ybWF0aW9uOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotY2xhc3Mg
VGVzdEluZm8gewotIHB1YmxpYzoKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5k
IHRoZSB0ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KLSAgLy8KLSAgLy8gRG8gTk9UIGRlbGV0ZSBv
ciBmcmVlIHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCi0gIC8vIFRlc3RJ
bmZvIGNsYXNzLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OwotICBjb25z
dCBjaGFyKiBuYW1lKCkgY29uc3Q7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotYGBg
Ci0KLQotPiBUbyBvYnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBy
dW5uaW5nIHRlc3QsIGNhbGwKLWBjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0
YCBzaW5nbGV0b24gb2JqZWN0OgotCi1gYGAKLS8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhl
IGN1cnJlbnRseSBydW5uaW5nIHRlc3QuCi0vLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBv
YmplY3QgLSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgotY29uc3QgOjp0ZXN0
aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLXByaW50ZigiV2UgYXJlIGluIHRl
c3QgJXMgb2YgdGVzdCBjYXNlICVzLlxuIiwKLSAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwgdGVz
dF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLWBgYAotCi1gY3VycmVudF90ZXN0X2luZm8oKWAg
cmV0dXJucyBhIG51bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCi1wYXJ0aWN1
bGFyLCB5b3UgY2Fubm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVw
KClgLAotYFRlc3RDYXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2Ug
bmFtZSBpbXBsaWNpdGx5KSwgb3IKLWZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgotCi1fQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBFeHRlbmRpbmcgR29vZ2xlIFRl
c3QgYnkgSGFuZGxpbmcgVGVzdCBFdmVudHMgIwotCi1Hb29nbGUgVGVzdCBwcm92aWRlcyBhbiA8
Yj5ldmVudCBsaXN0ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQotbm90aWZpY2F0aW9u
cyBhYm91dCB0aGUgcHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKLWZhaWx1cmVz
LiBUaGUgZXZlbnRzIHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQg
b2YKLXRoZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBhbW9u
ZyBvdGhlcnMuIFlvdSBtYXkKLXVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhl
IHN0YW5kYXJkIGNvbnNvbGUgb3V0cHV0LAotcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJv
dmlkZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKLW91dHB1dCwgc3VjaCBhcyBhIEdV
SSBvciBhIGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCi1jaGVja3Bv
aW50cyB0byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgot
Ci1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgotCi0j
IyBEZWZpbmluZyBFdmVudCBMaXN0ZW5lcnMgIyMKLQotVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVu
ZXIsIHlvdSBzdWJjbGFzcyBlaXRoZXIKLVt0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5OTEpCi1vciBbdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRM
aXN0ZW5lcl0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0wxMDQ0KS4KLVRoZSBmb3JtZXIgaXMg
YW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhv
ZDxicj4KLWNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+IChGb3Ig
ZXhhbXBsZSwgd2hlbiBhIHRlc3QKLXN0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBtZXRob2Qg
d2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92aWRlcwotYW4gZW1wdHkgaW1wbGVtZW50
YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEKLXN1YmNs
YXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJvdXQuCi0K
LVdoZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFu
ZGxlciBmdW5jdGlvbgotYXMgYW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlw
ZXMgYXJlIHVzZWQ6Ci0gICogW1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEx
NTEpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwKLSAgKiBb
VGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNzc4KSBoYXMgaW5mb3JtYXRpb24g
YWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRlc3RzLAot
ICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2NDQpIGNvbnRhaW5zIHRo
ZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAotICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5jbHVkZS9n
dGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDcpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRl
c3QgYXNzZXJ0aW9uLgotCi1BbiBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRo
ZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCi1vdXQgaW50ZXJlc3RpbmcgaW5mb3JtYXRp
b24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKLXN0YXRlLiAgSGVyZSdz
IGFuIGV4YW1wbGU6Ci0KLWBgYAotICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6
OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotICAgIC8vIENhbGxlZCBiZWZvcmUg
YSB0ZXN0IHN0YXJ0cy4KLSAgICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0
aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVz
IHN0YXJ0aW5nLlxuIiwKLSAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwg
dGVzdF9pbmZvLm5hbWUoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVk
IGFzc2VydGlvbiBvciBhIFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBP
blRlc3RQYXJ0UmVzdWx0KAotICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0
JiB0ZXN0X3BhcnRfcmVzdWx0KSB7Ci0gICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwK
LSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6
ICJTdWNjZXNzIiwKLSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAot
ICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKLSAgICAgICAgICAg
ICB0ZXN0X3BhcnRfcmVzdWx0LnN1bW1hcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFm
dGVyIGEgdGVzdCBlbmRzLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0
aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVz
IGVuZGluZy5cbiIsCi0gICAgICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRl
c3RfaW5mby5uYW1lKCkpOwotICAgIH0KLSAgfTsKLWBgYAotCi0jIyBVc2luZyBFdmVudCBMaXN0
ZW5lcnMgIyMKLQotVG8gdXNlIHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBh
ZGQgYW4gaW5zdGFuY2Ugb2YgaXQgdG8KLXRoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBs
aXN0IChyZXByZXNlbnRlZCBieSBjbGFzcwotW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVk
ZS9ndGVzdC9ndGVzdC5oI0wxMDY0KQotLSBub3RlIHRoZSAicyIgYXQgdGhlIGVuZCBvZiB0aGUg
bmFtZSkgaW4geW91cgotYG1haW4oKWAgZnVuY3Rpb24sIGJlZm9yZSBjYWxsaW5nIGBSVU5fQUxM
X1RFU1RTKClgOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgOjp0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIC8vIEdldHMgaG9sZCBvZiB0
aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KLSAgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnMm
IGxpc3RlbmVycyA9Ci0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5s
aXN0ZW5lcnMoKTsKLSAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQuICBHb29nbGUgVGVz
dCB0YWtlcyB0aGUgb3duZXJzaGlwLgotICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBNaW5pbWFsaXN0
UHJpbnRlcik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotVGhlcmUncyBv
bmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJlc3VsdCBwcmludGVyIGlzIHN0aWxs
IGluCi1lZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2lsbCBtaW5nbGUgd2l0aCB0aGUgb3V0cHV0IGZy
b20geW91ciBtaW5pbWFsaXN0Ci1wcmludGVyLiBUbyBzdXBwcmVzcyB0aGUgZGVmYXVsdCBwcmlu
dGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUKLWV2ZW50IGxpc3RlbmVyIGxpc3QgYW5kIGRl
bGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25lIGxpbmU6Ci1gYGAKLSAgLi4uCi0g
IGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRl
cigpKTsKLSAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIpOwotICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwotYGBgCi0KLU5vdywgc2l0IGJhY2sgYW5kIGVuam95IGEgY29t
cGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20geW91cgotdGVzdHMuIEZvciBtb3JlIGRldGFp
bHMsIHlvdSBjYW4gcmVhZCB0aGlzCi1bc2FtcGxlXSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRl
c3QuY2MpLgotCi1Zb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3RlbmVyIHRvIHRoZSBs
aXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAotb3IgYE9uVGVzdFBhcnRSZXN1bHQoKWAgZXZlbnQg
aXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluCi10aGUgb3JkZXIgdGhl
eSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJlIGFkZGVkIHRvCi10
aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIgYW5kIHRoZSBkZWZh
dWx0IFhNTAotZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQgZmlyc3QpLiBBbiBgT24q
RW5kKClgIGV2ZW50IHdpbGwgYmUKLXJlY2VpdmVkIGJ5IHRoZSBsaXN0ZW5lcnMgaW4gdGhlIF9y
ZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5Ci1saXN0ZW5lcnMgYWRkZWQgbGF0
ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tIGxpc3RlbmVycyBhZGRlZAotZWFybGllci4K
LQotIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMgIyMKLQotWW91IG1heSB1c2Ug
ZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJUXyooKWAsCi1gRkFJ
TCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFyZSBzb21lIHJlc3Ry
aWN0aW9uczoKLQotICAxLiBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWlsdXJlIGluIGBPblRl
c3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBgT25UZXN0UGFydFJlc3Vs
dCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkpLgotICAxLiBBIGxpc3RlbmVyIHRoYXQgaGFu
ZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBnZW5lcmF0ZSBhbnkg
ZmFpbHVyZS4KLQotV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0byB0aGUgbGlzdGVuZXIgbGlzdCwg
eW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCi10aGF0IGhhbmRsZSBgT25UZXN0UGFydFJlc3VsdCgp
YCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJhdGUKLWZhaWx1cmVzLiBUaGlzIGVu
c3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciBhcmUKLWF0dHJpYnV0
ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZvcm1lci4KLQotV2UgaGF2ZSBhIHNhbXBsZSBv
ZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKLVtoZXJlXSguLi9zYW1wbGVzL3NhbXBsZTEwX3Vu
aXR0ZXN0LmNjKS4KLQotIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFuY2VkIE9wdGlvbnMg
IwotCi1Hb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBleGVjdXRhYmxlcy4g
T25jZSBidWlsdCwgeW91IGNhbiBydW4KLXRoZW0gZGlyZWN0bHkgYW5kIGFmZmVjdCB0aGVpciBi
ZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLWFuZC9vciBj
b21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91ciBwcm9ncmFtcyBt
dXN0IGNhbGwKLWA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9yZSBjYWxsaW5nIGBS
VU5fQUxMX1RFU1RTKClgLgotCi1UbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRlZCBmbGFncyBhbmQg
dGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0ZXN0Ci1wcm9ncmFtIHdpdGggdGhlIGAtLWhl
bHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAvP2AKLWZvciBzaG9y
dC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2ZXJzaW9uIDEuMy4wLgotCi1JZiBhbiBvcHRp
b24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIGJ5IGEK
LWZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4gIE1vc3Qgb2YgdGhlIG9wdGlvbnMg
Y2FuIGFsc28gYmUKLXNldC9yZWFkIGluIGNvZGU6IHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgY29t
bWFuZCBsaW5lIGZsYWcKLWAtLWd0ZXN0X2Zvb2AsIHdyaXRlIGA6OnRlc3Rpbmc6OkdURVNUX0ZM
QUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlzCi10byBzZXQgdGhlIHZhbHVlIG9mIGEgZmxh
ZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYAotdG8gY2hhbmdl
IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFnOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpIHsKLSAgLy8gRGlzYWJsZXMgZWxhcHNlZCB0aW1lIGJ5IGRlZmF1bHQuCi0g
IDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOwotCi0gIC8vIFRoaXMg
YWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBmbGFnIG9uIHRoZSBjb21tYW5kIGxpbmUu
Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIHJldHVybiBS
VU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgU2VsZWN0aW5nIFRlc3RzICMjCi0KLVRoaXMg
c2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMgZm9yIGNob29zaW5nIHdoaWNoIHRlc3RzIHRv
IHJ1bi4KLQotIyMjIExpc3RpbmcgVGVzdCBOYW1lcyAjIyMKLQotU29tZXRpbWVzIGl0IGlzIG5l
Y2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUgdGVzdHMgaW4gYSBwcm9ncmFtIGJlZm9yZQot
cnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIgbWF5IGJlIGFwcGxpZWQgaWYgbmVlZGVkLiBJ
bmNsdWRpbmcgdGhlIGZsYWcKLWAtLWd0ZXN0X2xpc3RfdGVzdHNgIG92ZXJyaWRlcyBhbGwgb3Ro
ZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRoZSBmb2xsb3dpbmcKLWZvcm1hdDoKLWBgYAot
VGVzdENhc2UxLgotICBUZXN0TmFtZTEKLSAgVGVzdE5hbWUyCi1UZXN0Q2FzZTIuCi0gIFRlc3RO
YW1lCi1gYGAKLQotTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1YWxseSBydW4gaWYg
dGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlzIG5vCi1jb3JyZXNwb25kaW5nIGVudmlyb25t
ZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2lu
ZG93cywgTWFjLgotCi0jIyMgUnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVzdHMgIyMjCi0KLUJ5
IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0cyB0aGUgdXNlciBo
YXMgZGVmaW5lZC4KLVNvbWV0aW1lcywgeW91IHdhbnQgdG8gcnVuIG9ubHkgYSBzdWJzZXQgb2Yg
dGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IKLXF1aWNrbHkgdmVyaWZ5aW5nIGEgY2hh
bmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUK
LW9yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3RyaW5nLCBHb29nbGUg
VGVzdCB3aWxsIG9ubHkgcnVuIHRoZQotdGVzdHMgd2hvc2UgZnVsbCBuYW1lcyAoaW4gdGhlIGZv
cm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWApIG1hdGNoIHRoZQotZmlsdGVyLgotCi1UaGUg
Zm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qgb2Ygd2lsZGNhcmQg
cGF0dGVybnMgKGNhbGxlZAotdGhlIHBvc2l0aXZlIHBhdHRlcm5zKSBvcHRpb25hbGx5IGZvbGxv
d2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKLSdgOmAnLXNlcGFyYXRlZCBwYXR0ZXJuIGxpc3Qg
KGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMpLiBBIHRlc3QgbWF0Y2hlcyB0aGUKLWZpbHRl
ciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMg
YnV0IGRvZXMgbm90Ci1tYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRlcm5zLgotCi1BIHBh
dHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNoZXMgYW55IHN0cmluZykgb3IgYCc/J2AgKG1h
dGNoZXMgYW55IHNpbmdsZQotY2hhcmFjdGVyKS4gRm9yIGNvbnZlbmllbmNlLCB0aGUgZmlsdGVy
IGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJlIGFsc28KLXdyaXR0ZW4gYXMgYCctTmVnYXRp
dmVQYXR0ZXJucydgLgotCi1Gb3IgZXhhbXBsZToKLQotICAqIGAuL2Zvb190ZXN0YCBIYXMgbm8g
ZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rl
c3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhlIHNpbmdsZSBtYXRj
aC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KLSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1G
b29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rlc3RgLgotICAqIGAu
L2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoqQ29uc3RydWN0b3IqYCBSdW5zIGFueSB0
ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAgb3IgYCJDb25zdHJ1
Y3RvciJgLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPS0qRGVhdGhUZXN0LipgIFJ1
bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KLSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj1G
b29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rl
c3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRv
d3MsIE1hYy4KLQotIyMjIFRlbXBvcmFyaWx5IERpc2FibGluZyBUZXN0cyAjIyMKLQotSWYgeW91
IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0IGF3YXksIHlvdSBj
YW4gYWRkIHRoZQotYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBUaGlzIHdpbGwgZXhj
bHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcwotYmV0dGVyIHRoYW4gY29tbWVudGluZyBv
dXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVzdHMgYXJlCi1zdGls
bCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KLQotSWYgeW91IG5lZWQgdG8gZGlzYWJs
ZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFkZCBgRElTQUJMRURf
YAotdG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3IgYWx0ZXJuYXRpdmVs
eSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCi10aGUgdGVzdCBjYXNlIG5hbWUuCi0KLUZvciBleGFt
cGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBHb29nbGUgVGVzdCwgZXZl
biB0aG91Z2ggdGhleQotd2lsbCBzdGlsbCBiZSBjb21waWxlZDoKLQotYGBgCi0vLyBUZXN0cyB0
aGF0IEZvbyBkb2VzIEFiYy4KLVRFU1QoRm9vVGVzdCwgRElTQUJMRURfRG9lc0FiYykgeyAuLi4g
fQotCi1jbGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IC4u
LiB9OwotCi0vLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4KLVRFU1RfRihESVNBQkxFRF9CYXJU
ZXN0LCBEb2VzWHl6KSB7IC4uLiB9Ci1gYGAKLQotX05vdGU6XyBUaGlzIGZlYXR1cmUgc2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ugc3RpbGwKLWhhdmUg
dG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFzIGEgcmVtaW5kZXIs
IEdvb2dsZSBUZXN0IHdpbGwKLXByaW50IGEgYmFubmVyIHdhcm5pbmcgeW91IGlmIGEgdGVzdCBw
cm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KLQotX1RpcDpfIFlvdSBjYW4gZWFz
aWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhhdmUKLXVzaW5nIGBn
cmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBtZXRyaWMgZm9yIGltcHJvdmluZyB5
b3VyCi10ZXN0IHF1YWxpdHkuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMgIyMjCi0KLVRvIGlu
Y2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9yYXJpbHktZGlzYWJsaW5nLXRlc3RzKSBpbiB0
ZXN0Ci1leGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUKLWAt
LWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0aGUKLWBHVEVTVF9B
TFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSB2YWx1ZSBv
dGhlcgotdGhhbiBgMGAuICBZb3UgY2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRoZQotWy0tZ3Rlc3Rc
X2ZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKSBmbGFnIHRvIGZ1cnRoZXIg
c2VsZWN0Ci13aGljaCBkaXNhYmxlZCB0ZXN0cyB0byBydW4uCi0KLV9BdmFpbGFiaWxpdHk6XyBM
aW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgotCi0jIyBSZXBlYXRpbmcg
dGhlIFRlc3RzICMjCi0KLU9uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGludG8gYSB0ZXN0IHdo
b3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAotd2lsbCBmYWlsIG9ubHkgMSUg
b2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1Y2UgdGhlIGJ1ZyB1
bmRlcgotYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ugb2YgZnJ1c3RyYXRp
b24uCi0KLVRoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0byByZXBlYXQgYWxs
IChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCi1pbiBhIHByb2dyYW0gbWFueSB0aW1lcy4gSG9w
ZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5kIGdpdmUKLXlvdSBh
IGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6Ci0KLXwgYCQgZm9vX3Rlc3Qg
LS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGltZXMgYW5kIGRv
bid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTFgICAgfCBBIG5lZ2F0aXZlIGNv
dW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAgICAgICAgICAgICAgIHwKLXwgYCQgZm9vX3Rl
c3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgIHwgUmVwZWF0
IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZmFpbHVyZS4gVGhp
cyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBkZWJ1Z2dlcjogd2hl
biB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3AgaW50byB0aGUgZGVidWdnZXIgYW5kIHlvdSBj
YW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQgc3RhY2tzLiB8Ci18IGAkIGZvb190ZXN0IC0t
Z3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyYCB8IFJlcGVhdCB0aGUgdGVz
dHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4gfAotCi1JZiB5b3Vy
IHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwgc2V0LXVwL3RlYXItZG93biBjb2RlIHJlZ2lz
dGVyZWQKLXVzaW5nIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAsIGl0IHdpbGwgYmUgcmVw
ZWF0ZWQgaW4gZWFjaAotaXRlcmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFraW5lc3MgbWF5IGJl
IGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQotdGhlIHJlcGVhdCBjb3VudCBieSBzZXR0aW5n
IHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFNodWZmbGluZyB0aGUgVGVzdHMgIyMKLQot
WW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChvciBzZXQgdGhlIGBH
VEVTVF9TSFVGRkxFYAotZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0byBydW4gdGhlIHRl
c3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQotb3JkZXIuIFRoaXMgaGVscHMgdG8gcmV2ZWFs
IGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0cy4KLQotQnkgZGVmYXVsdCwgR29vZ2xlIFRl
c3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3VycmVudAotdGltZS4g
VGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkgdGltZS4gVGhlIGNv
bnNvbGUKLW91dHB1dCBpbmNsdWRlcyB0aGUgcmFuZG9tIHNlZWQgdmFsdWUsIHN1Y2ggdGhhdCB5
b3UgY2FuIHJlcHJvZHVjZSBhbgotb3JkZXItcmVsYXRlZCB0ZXN0IGZhaWx1cmUgbGF0ZXIuIFRv
IHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCi1leHBsaWNpdGx5LCB1c2UgdGhlIGAtLWd0ZXN0X3Jh
bmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0aGUKLWBHVEVTVF9SQU5ET01fU0VFRGAgZW52
aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMgYW4gaW50ZWdlcgotYmV0d2VlbiAw
IGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0ZWxscyBHb29nbGUg
VGVzdAotdG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2FsY3VsYXRpbmcgdGhlIHNlZWQg
ZnJvbSB0aGUgY3VycmVudAotdGltZS4KLQotSWYgeW91IGNvbWJpbmUgdGhpcyB3aXRoIGAtLWd0
ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEKLWRpZmZlcmVudCByYW5kb20g
c2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRpb24uCi0KLV9BdmFp
bGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS40LjAuCi0KLSMjIENvbnRy
b2xsaW5nIFRlc3QgT3V0cHV0ICMjCi0KLVRoaXMgc2VjdGlvbiB0ZWFjaGVzIGhvdyB0byB0d2Vh
ayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVwb3J0ZWQuCi0KLSMjIyBDb2xvcmVkIFRlcm1p
bmFsIE91dHB1dCAjIyMKLQotR29vZ2xlIFRlc3QgY2FuIHVzZSBjb2xvcnMgaW4gaXRzIHRlcm1p
bmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90Ci10aGUgc2VwYXJhdGlvbiBiZXR3
ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBwYXNzZWQuCi0KLVlvdSBjYW4gc2V0IHRoZSBH
VEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3Igc2V0IHRoZSBgLS1ndGVzdF9jb2xv
cmAKLWNvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0b2AgKHRoZSBkZWZh
dWx0KSB0byBlbmFibGUgY29sb3JzLAotZGlzYWJsZSBjb2xvcnMsIG9yIGxldCBHb29nbGUgVGVz
dCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgR29vZ2xlCi1UZXN0IHdpbGwgdXNl
IGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0ZXJtaW5hbCBhbmQg
KG9uCi1ub24tV2luZG93cyBwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJvbm1lbnQgdmFyaWFi
bGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKLWB4dGVybS1jb2xvcmAuCi0KLV9BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgU3VwcHJlc3NpbmcgdGhlIEVsYXBzZWQgVGlt
ZSAjIyMKLQotQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSB0aW1lIGl0IHRha2Vz
IHRvIHJ1biBlYWNoIHRlc3QuICBUbwotc3VwcHJlc3MgdGhhdCwgcnVuIHRoZSB0ZXN0IHByb2dy
YW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYAotY29tbWFuZCBsaW5lIGZsYWcuICBT
ZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAgZW52aXJvbm1lbnQKLXZhcmlhYmxlIHRvIGAw
YCBoYXMgdGhlIHNhbWUgZWZmZWN0LgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBhbmQgbG93ZXIsCi10aGUgZGVmYXVsdCBiZWhh
dmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUgaXMgKipub3QqKiBwcmludGVkLikKLQotIyMj
IEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMKLQotR29vZ2xlIFRlc3QgY2FuIGVtaXQgYSBk
ZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBhZGRpdGlvbiB0byBpdHMgbm9ybWFsCi10
ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlucyB0aGUgZHVyYXRpb24gb2YgZWFjaCB0
ZXN0LCBhbmQgdGh1cyBjYW4KLWhlbHAgeW91IGlkZW50aWZ5IHNsb3cgdGVzdHMuCi0KLVRvIGdl
bmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRgIGVudmlyb25tZW50
IHZhcmlhYmxlIG9yIHRoZQotYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRoZSBzdHJpbmcgYCJ4
bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdoaWNoIHdpbGwKLWNyZWF0ZSB0aGUgZmlsZSBh
dCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0aGUgc3RyaW5nCi1g
InhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5kIGluIHRoZSBgdGVz
dF9kZXRhaWwueG1sYCBmaWxlIGluCi10aGUgY3VycmVudCBkaXJlY3RvcnkuCi0KLUlmIHlvdSBz
cGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0L2RpcmVjdG9yeS8i
YCBvbiBMaW51eCBvcgotYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBXaW5kb3dzKSwgR29v
Z2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxlIGluCi10aGF0IGRpcmVjdG9yeSwgbmFt
ZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5nLiBgZm9vX3Rlc3QueG1sYCBmb3IgdGVz
dAotcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVzdC5leGVgKS4gSWYgdGhlIGZpbGUgYWxy
ZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAotb3ZlciBmcm9tIGEgcHJldmlvdXMgcnVuKSwgR29v
Z2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50IG5hbWUgKGUuZy4KLWBmb29fdGVzdF8xLnht
bGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0LgotCi1UaGUgcmVwb3J0IHVzZXMgdGhlIGZvcm1h
dCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2VkIG9uIHRoZQotYGp1bml0cmVwb3J0YCBBbnQg
dGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQKLXN5c3Rl
bXMgbGlrZSBbSHVkc29uXShodHRwczovL2h1ZHNvbi5kZXYuamF2YS5uZXQvKS4gU2luY2UgdGhh
dCBmb3JtYXQKLXdhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRl
cnByZXRhdGlvbiBpcyByZXF1aXJlZAotdG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0
ZXN0cywgYXMgc2hvd24gaGVyZToKLQotYGBgCi08dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIg
Li4uPgotICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+Ci0gICAgPHRlc3Rj
YXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+
Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9
Ii4uLiIvPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgot
YGBgCi0KLSAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRv
IHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgotICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29y
cmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgotICAqIGA8dGVzdGNhc2U+YCBlbGVt
ZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgotCi1Gb3IgaW5z
dGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQotCi1gYGAKLVRFU1QoTWF0aFRlc3QsIEFkZGl0
aW9uKSB7IC4uLiB9Ci1URVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQotVEVTVChM
b2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KLWBgYAotCi1jb3VsZCBnZW5lcmF0
ZSB0aGlzIHJlcG9ydDoKLQotYGBgCi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9
IjM1IiBuYW1lPSJBbGxUZXN0cyI+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3Rz
PSIyIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIxNSI+Ci0gICAgPHRlc3RjYXNlIG5h
bWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgotICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gw
QTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBv
ZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+
Ci0gICAgPC90ZXN0Y2FzZT4KLSAgICA8dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1
cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0
c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9
IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRp
Y3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25hbWU9IiI+Ci0gICAgPC90ZXN0Y2Fz
ZT4KLSAgPC90ZXN0c3VpdGU+Ci08L3Rlc3RzdWl0ZXM+Ci1gYGAKLQotVGhpbmdzIHRvIG5vdGU6
Ci0KLSAgKiBUaGUgYHRlc3RzYCBhdHRyaWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRl
c3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMgaG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2ds
ZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBjYXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVz
YCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1hbnkgb2YgdGhlbSBmYWlsZWQuCi0gICogVGhlIGB0aW1l
YCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNl
LCBvciBlbnRpcmUgdGVzdCBwcm9ncmFtIGluIG1pbGxpc2Vjb25kcy4KLSAgKiBFYWNoIGA8ZmFp
bHVyZT5gIGVsZW1lbnQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0
IGFzc2VydGlvbi4KLSAgKiBTb21lIEpVbml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2ds
ZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBjb25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3Un
bGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4g
WW91IGNhbiBzYWZlbHkgaWdub3JlIHRoZXNlIHBhcnRzLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgQ29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBv
cnRlZCAjIwotCi0jIyMgVHVybmluZyBBc3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2lu
dHMgIyMjCi0KLVdoZW4gcnVubmluZyB0ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0
J3MgdmVyeSBjb252ZW5pZW50IGlmIHRoZQotZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlv
biBmYWlsdXJlIGFuZCBhdXRvbWF0aWNhbGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQotbW9kZS4g
R29vZ2xlIFRlc3QncyBfYnJlYWstb24tZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2
aW9yLgotCi1UbyBlbmFibGUgaXQsIHNldCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUKLW90aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRp
dmVseSwgeW91IGNhbiB1c2UgdGhlIGAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCi1jb21tYW5k
IGxpbmUgZmxhZy4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMj
IyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVzdC1UaHJvd24gRXhjZXB0aW9ucyAjIyMKLQotR29vZ2xl
IFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVyIHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJs
ZWQuICBJZgotYSB0ZXN0IHRocm93cyBhIEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEg
c3RydWN0dXJlZCBleGNlcHRpb24KLShTRUgpLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNo
ZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0ZXN0Ci1mYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGgg
dGhlIG5leHQgdGVzdCBtZXRob2QuICBUaGlzIG1heGltaXplcyB0aGUKLWNvdmVyYWdlIG9mIGEg
dGVzdCBydW4uICBBbHNvLCBvbiBXaW5kb3dzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCi1j
YXVzZSBhIHBvcC11cCB3aW5kb3csIHNvIGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5
b3UgdG8gcnVuCi10aGUgdGVzdHMgYXV0b21hdGljYWxseS4KLQotV2hlbiBkZWJ1Z2dpbmcgdGhl
IHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIsIHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZQotZXhjZXB0
aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRoZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhh
bWluZQotdGhlIGNhbGwgc3RhY2sgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNo
aWV2ZSB0aGF0LCBzZXQgdGhlCi1gR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQg
dmFyaWFibGUgdG8gYDBgLCBvciB1c2UgdGhlCi1gLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBg
IGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0cy4KLQotKipBdmFpbGFiaWxpdHkqKjogTGludXgs
IFdpbmRvd3MsIE1hYy4KLQotIyMjIExldHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBE
cml2ZSAjIyMKLQotSWYgeW91IHdvcmsgb24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVl
biB1c2luZyBhbm90aGVyIHRlc3RpbmcKLWZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNv
bXBsZXRlbHkgc3dpdGNoIHRvIEdvb2dsZSBUZXN0IHlldCwKLXlvdSBjYW4gZ2V0IG11Y2ggb2Yg
R29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCi15b3VyIGV4
aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFuZ2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29r
Ci1saWtlOgotCi1gYGAKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi1pbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2Zh
aWx1cmUpID0gdHJ1ZTsKLSAgLy8gSW1wb3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRp
YWxpemVkLgotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAu
Li4gd2hhdGV2ZXIgeW91ciBleGlzdGluZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4K
LX0KLWBgYAotCi1XaXRoIHRoYXQsIHlvdSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
aW4gYWRkaXRpb24gdG8gdGhlCi1uYXRpdmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3
b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBsZToKLQotYGBgCi12b2lkIFRlc3RGb29Eb2VzQmFyKCkg
ewotICBGb28gZm9vOwotICBFWFBFQ1RfTEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9uLgotICBDUFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8v
IEEgbmF0aXZlIGFzc2VydGlvbi4KLX0KLWBgYAotCi1JZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlv
biBmYWlscywgaXQgd2lsbCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZAotdGhyb3cgYW4gZXhj
ZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAot
dGVzdGluZyBmcmFtZXdvcmsuICBJZiB5b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRp
b25zIGRpc2FibGVkLAotYSBmYWlsZWQgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVh
ZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRoIGEKLW5vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxz
byBzaWduYWwgYSB0ZXN0IGZhaWx1cmUgdG8geW91ciB0ZXN0Ci1ydW5uZXIuCi0KLUlmIHlvdSBk
b24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1
ZTtgIGluCi15b3VyIGBtYWluKClgLCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMg
ZmVhdHVyZSBieSBzcGVjaWZ5aW5nCi10aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxh
ZyBvbiB0aGUgY29tbWFuZC1saW5lIG9yIHNldHRpbmcgdGhlCi1gR1RFU1RfVEhST1dfT05fRkFJ
TFVSRWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBub24temVybyB2YWx1ZS4KLQotRGVhdGgg
dGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRlZCB3aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVz
ZWQgdG8gb3JnYW5pemUgdGVzdHMuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjOyBzaW5jZSB2MS4zLjAuCi0KLSMjIERpc3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBN
dWx0aXBsZSBNYWNoaW5lcyAjIwotCi1JZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUg
eW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoteW91IG1pZ2h0IHdhbnQgdG8gcnVu
IHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0IHRoZQotcmVzdWx0IGZhc3Rl
ci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5l
Ci1pcyBjYWxsZWQgYSBfc2hhcmRfLgotCi1Hb29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGgg
dGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCi10aGlzIGZlYXR1cmUsIHlvdXIg
dGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBuZWVkcyB0byBkbwotdGhlIGZv
bGxvd2luZzoKLQotICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0
byBydW4gdGhlIHRlc3RzLgotICAxLiBPbiBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RB
TF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hh
cmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJkcy4KLSAgMS4gT24gZWFjaCBz
aGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRv
IHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWdu
ZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RF
U1RfVE9UQUxfU0hBUkRTIC0gMV1gLgotICAxLiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9u
IGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0
aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRo
ZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KLSAgMS4gV2FpdCBmb3IgYWxsIHNo
YXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgotCi1Z
b3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29n
bGUgVGVzdCBhbmQKLXRodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3Jk
ZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KLWZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0
cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlIGBHVEVTVF9T
SEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQotdGVz
dCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8K
LWFja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFy
ZSBub3QKLWltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21l
IHVzZWZ1bCBpbmZvcm1hdGlvbgotaW4gaXQgaW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQg
d2lsbCBub3QgY3JlYXRlIGl0LgotCi1IZXJlJ3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFy
LiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQotYGZvb190ZXN0YCB0aGF0IGNvbnRh
aW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKLWBgYAotVEVTVChBLCBWKQotVEVT
VChBLCBXKQotVEVTVChCLCBYKQotVEVTVChCLCBZKQotVEVTVChCLCBaKQotYGBgCi1hbmQgeW91
IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0
aW9ucyBpbgotcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8g
MyBvbiBhbGwgbWFjaGluZXMsIGFuZAotc2V0IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwg
YW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KLVRoZW4geW91IHdvdWxkIHJ1biB0
aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KLQotR29vZ2xlIFRlc3QgcmVzZXJ2
ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKLWFjcm9z
cyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBzY2VuYXJpbzoKLQotICAqIE1h
Y2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCi0gICogTWFjaGluZSAjMSBydW5zIGBBLldg
IGFuZCBgQi5ZYC4KLSAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAuCi0KLV9BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgotCi0jIEZ1c2luZyBH
b29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIwotCi1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9u
IGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBvd24KLXRlc3RzKS4gIFNvbWV0
aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEK
LWAuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5
IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhp
cyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAotUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9m
aWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4w
KS4KLUFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlv
dXIgbWFjaGluZSwganVzdAotZ28gdG8gdGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRo
b24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQg
c2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1g
Z3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmls
ZXMgY29udGFpbgotZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0
IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoteW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3Jp
dGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKLVtzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3Nj
cmlwdHMvdGVzdC9NYWtlZmlsZSkKLWZpbGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGls
ZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KLQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwot
Ci1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2ds
ZSBUZXN0IHRvb2xzIGFuZCBhcmUKLXJlYWR5IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGlu
ZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRlZXBlciwgeW91Ci1jYW4gcmVhZCB0
aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShGQVEubWQpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvZG9jcy9EZXZHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvRGV2R3VpZGUubWQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NDY3YTMyNzcxZi4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvRGV2R3VpZGUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwx
MjYgKzAsMCBAQAotCi0KLUlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB1bmRlcnN0YW5kaW5nIHRo
ZSBpbnRlcm5hbHMgb2YgR29vZ2xlIFRlc3QsCi1idWlsZGluZyBmcm9tIHNvdXJjZSwgb3IgY29u
dHJpYnV0aW5nIGlkZWFzIG9yIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi1wcm9qZWN0LCB0aGVuIHRo
aXMgZG9jdW1lbnQgaXMgZm9yIHlvdS4KLQotIyBJbnRyb2R1Y3Rpb24gIwotCi1GaXJzdCwgbGV0
J3MgZ2l2ZSB5b3Ugc29tZSBiYWNrZ3JvdW5kIG9mIHRoZSBwcm9qZWN0LgotCi0jIyBMaWNlbnNp
bmcgIyMKLQotQWxsIEdvb2dsZSBUZXN0IHNvdXJjZSBhbmQgcHJlLWJ1aWx0IHBhY2thZ2VzIGFy
ZSBwcm92aWRlZCB1bmRlciB0aGUgW05ldyBCU0QgTGljZW5zZV0oaHR0cDovL3d3dy5vcGVuc291
cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHApLgotCi0jIyBUaGUgR29vZ2xlIFRlc3Qg
Q29tbXVuaXR5ICMjCi0KLVRoZSBHb29nbGUgVGVzdCBjb21tdW5pdHkgZXhpc3RzIHByaW1hcmls
eSB0aHJvdWdoIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vwcy5nb29nbGUuY29t
L2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGFuZCB0aGUgR2l0SHViIHJlcG9zaXRvcnkuCi1Z
b3UgYXJlIGRlZmluaXRlbHkgZW5jb3VyYWdlZCB0byBjb250cmlidXRlIHRvIHRoZQotZGlzY3Vz
c2lvbiBhbmQgeW91IGNhbiBhbHNvIGhlbHAgdXMgdG8ga2VlcCB0aGUgZWZmZWN0aXZlbmVzcyBv
ZiB0aGUKLWdyb3VwIGhpZ2ggYnkgZm9sbG93aW5nIGFuZCBwcm9tb3RpbmcgdGhlIGd1aWRlbGlu
ZXMgbGlzdGVkIGhlcmUuCi0KLSMjIyBQbGVhc2UgQmUgRnJpZW5kbHkgIyMjCi0KLVNob3dpbmcg
Y291cnRlc3kgYW5kIHJlc3BlY3QgdG8gb3RoZXJzIGlzIGEgdml0YWwgcGFydCBvZiB0aGUgR29v
Z2xlCi1jdWx0dXJlLCBhbmQgd2Ugc3Ryb25nbHkgZW5jb3VyYWdlIGV2ZXJ5b25lIHBhcnRpY2lw
YXRpbmcgaW4gR29vZ2xlCi1UZXN0IGRldmVsb3BtZW50IHRvIGpvaW4gdXMgaW4gYWNjZXB0aW5n
IG5vdGhpbmcgbGVzcy4gT2YgY291cnNlLAotYmVpbmcgY291cnRlb3VzIGlzIG5vdCB0aGUgc2Ft
ZSBhcyBmYWlsaW5nIHRvIGNvbnN0cnVjdGl2ZWx5IGRpc2FncmVlCi13aXRoIGVhY2ggb3RoZXIs
IGJ1dCBpdCBkb2VzIG1lYW4gdGhhdCB3ZSBzaG91bGQgYmUgcmVzcGVjdGZ1bCBvZiBlYWNoCi1v
dGhlciB3aGVuIGVudW1lcmF0aW5nIHRoZSA0MiB0ZWNobmljYWwgcmVhc29ucyB0aGF0IGEgcGFy
dGljdWxhcgotcHJvcG9zYWwgbWF5IG5vdCBiZSB0aGUgYmVzdCBjaG9pY2UuIFRoZXJlJ3MgbmV2
ZXIgYSByZWFzb24gdG8gYmUKLWFudGFnb25pc3RpYyBvciBkaXNtaXNzaXZlIHRvd2FyZCBhbnlv
bmUgd2hvIGlzIHNpbmNlcmVseSB0cnlpbmcgdG8KLWNvbnRyaWJ1dGUgdG8gYSBkaXNjdXNzaW9u
LgotCi1TdXJlLCBDKysgdGVzdGluZyBpcyBzZXJpb3VzIGJ1c2luZXNzIGFuZCBhbGwgdGhhdCwg
YnV0IGl0J3MgYWxzbwotYSBsb3Qgb2YgZnVuLiBMZXQncyBrZWVwIGl0IHRoYXQgd2F5LiBMZXQn
cyBzdHJpdmUgdG8gYmUgb25lIG9mIHRoZQotZnJpZW5kbGllc3QgY29tbXVuaXRpZXMgaW4gYWxs
IG9mIG9wZW4gc291cmNlLgotCi1BcyBhbHdheXMsIGRpc2N1c3MgR29vZ2xlIFRlc3QgaW4gdGhl
IG9mZmljaWFsIEdvb2dsZVRlc3QgZGlzY3Vzc2lvbiBncm91cC4KLVlvdSBkb24ndCBoYXZlIHRv
IGFjdHVhbGx5IHN1Ym1pdCBjb2RlIGluIG9yZGVyIHRvIHNpZ24gdXAuIFlvdXIgcGFydGljaXBh
dGlvbgotaXRzZWxmIGlzIGEgdmFsdWFibGUgY29udHJpYnV0aW9uLgotCi0jIFdvcmtpbmcgd2l0
aCB0aGUgQ29kZSAjCi0KLUlmIHlvdSB3YW50IHRvIGdldCB5b3VyIGhhbmRzIGRpcnR5IHdpdGgg
dGhlIGNvZGUgaW5zaWRlIEdvb2dsZSBUZXN0LAotdGhpcyBpcyB0aGUgc2VjdGlvbiBmb3IgeW91
LgotCi0jIyBDb21waWxpbmcgZnJvbSBTb3VyY2UgIyMKLQotT25jZSB5b3UgY2hlY2sgb3V0IHRo
ZSBjb2RlLCB5b3UgY2FuIGZpbmQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0bwotY29tcGlsZSBpdCBp
biB0aGUgW1JFQURNRV0oLi4vUkVBRE1FLm1kKSBmaWxlLgotCi0jIyBUZXN0aW5nICMjCi0KLUEg
dGVzdGluZyBmcmFtZXdvcmsgaXMgb2Ygbm8gZ29vZCBpZiBpdHNlbGYgaXMgbm90IHRob3JvdWdo
bHkgdGVzdGVkLgotVGVzdHMgc2hvdWxkIGJlIHdyaXR0ZW4gZm9yIGFueSBuZXcgY29kZSwgYW5k
IGNoYW5nZXMgc2hvdWxkIGJlCi12ZXJpZmllZCB0byBub3QgYnJlYWsgZXhpc3RpbmcgdGVzdHMg
YmVmb3JlIHRoZXkgYXJlIHN1Ym1pdHRlZCBmb3IKLXJldmlldy4gVG8gcGVyZm9ybSB0aGUgdGVz
dHMsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluCi1bUkVBRE1FXSguLi9SRUFETUUubWQpIGFu
ZCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZmFpbHVyZXMuCi0KLSMgQ29udHJpYnV0aW5nIENv
ZGUgIwotCi1XZSBhcmUgZXhjaXRlZCB0aGF0IEdvb2dsZSBUZXN0IGlzIG5vdyBvcGVuIHNvdXJj
ZSwgYW5kIGhvcGUgdG8gZ2V0Ci1ncmVhdCBwYXRjaGVzIGZyb20gdGhlIGNvbW11bml0eS4gQmVm
b3JlIHlvdSBmaXJlIHVwIHlvdXIgZmF2b3JpdGUgSURFCi1hbmQgYmVnaW4gaGFtbWVyaW5nIGF3
YXkgYXQgdGhhdCBuZXcgZmVhdHVyZSwgdGhvdWdoLCBwbGVhc2UgdGFrZSB0aGUKLXRpbWUgdG8g
cmVhZCB0aGlzIHNlY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3MuIFdoaWxlIGl0IHNl
ZW1zCi1yaWdvcm91cywgd2Ugd2FudCB0byBrZWVwIGEgaGlnaCBzdGFuZGFyZCBvZiBxdWFsaXR5
IGluIHRoZSBjb2RlCi1iYXNlLgotCi0jIyBDb250cmlidXRvciBMaWNlbnNlIEFncmVlbWVudHMg
IyMKLQotWW91IG11c3Qgc2lnbiBhIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEp
IGJlZm9yZSB3ZSBjYW4KLWFjY2VwdCBhbnkgY29kZS4gIFRoZSBDTEEgcHJvdGVjdHMgeW91IGFu
ZCB1cy4KLQotICAqIElmIHlvdSBhcmUgYW4gaW5kaXZpZHVhbCB3cml0aW5nIG9yaWdpbmFsIHNv
dXJjZSBjb2RlIGFuZCB5b3UncmUgc3VyZSB5b3Ugb3duIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVy
dHksIHRoZW4geW91J2xsIG5lZWQgdG8gc2lnbiBhbiBbaW5kaXZpZHVhbCBDTEFdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vbGVnYWwvaW5kaXZpZHVhbC1jbGEtdjEuMC5odG1sKS4KLSAgKiBJZiB5
b3Ugd29yayBmb3IgYSBjb21wYW55IHRoYXQgd2FudHMgdG8gYWxsb3cgeW91IHRvIGNvbnRyaWJ1
dGUgeW91ciB3b3JrIHRvIEdvb2dsZSBUZXN0LCB0aGVuIHlvdSdsbCBuZWVkIHRvIHNpZ24gYSBb
Y29ycG9yYXRlIENMQV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9sZWdhbC9jb3Jwb3JhdGUtY2xh
LXYxLjAuaHRtbCkuCi0KLUZvbGxvdyBlaXRoZXIgb2YgdGhlIHR3byBsaW5rcyBhYm92ZSB0byBh
Y2Nlc3MgdGhlIGFwcHJvcHJpYXRlIENMQSBhbmQKLWluc3RydWN0aW9ucyBmb3IgaG93IHRvIHNp
Z24gYW5kIHJldHVybiBpdC4KLQotIyMgQ29kaW5nIFN0eWxlICMjCi0KLVRvIGtlZXAgdGhlIHNv
dXJjZSBjb25zaXN0ZW50LCByZWFkYWJsZSwgZGlmZmFibGUgYW5kIGVhc3kgdG8gbWVyZ2UsCi13
ZSB1c2UgYSBmYWlybHkgcmlnaWQgY29kaW5nIHN0eWxlLCBhcyBkZWZpbmVkIGJ5IHRoZSBbZ29v
Z2xlLXN0eWxlZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtc3R5bGVndWlk
ZS8pIHByb2plY3QuICBBbGwgcGF0Y2hlcyB3aWxsIGJlIGV4cGVjdGVkCi10byBjb25mb3JtIHRv
IHRoZSBzdHlsZSBvdXRsaW5lZCBbaGVyZV0oaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwpLgotCi0jIyBVcGRhdGluZyBHZW5lcmF0
ZWQgQ29kZSAjIwotCi1Tb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzIGFyZSBnZW5l
cmF0ZWQgYnkgdGhlIFB1bXAgdG9vbCAoYQotUHl0aG9uIHNjcmlwdCkuICBJZiB5b3UgbmVlZCB0
byB1cGRhdGUgc3VjaCBmaWxlcywgcGxlYXNlIG1vZGlmeSB0aGUKLXNvdXJjZSAoYGZvby5oLnB1
bXBgKSBhbmQgcmUtZ2VuZXJhdGUgdGhlIEMrKyBmaWxlIHVzaW5nIFB1bXAuICBZb3UKLWNhbiBy
ZWFkIHRoZSBQdW1wTWFudWFsIGZvciBkZXRhaWxzLgotCi0jIyBTdWJtaXR0aW5nIFBhdGNoZXMg
IyMKLQotUGxlYXNlIGRvIHN1Ym1pdCBjb2RlLiBIZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBkbzoK
LQotICAxLiBBIHN1Ym1pc3Npb24gc2hvdWxkIGJlIGEgc2V0IG9mIGNoYW5nZXMgdGhhdCBhZGRy
ZXNzZXMgb25lIGlzc3VlIGluIHRoZSBbaXNzdWUgdHJhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29t
L2dvb2dsZS9nb29nbGV0ZXN0L2lzc3VlcykuIFBsZWFzZSBkb24ndCBtaXggbW9yZSB0aGFuIG9u
ZSBsb2dpY2FsIGNoYW5nZSBwZXIgc3VibWl0dGFsLCBiZWNhdXNlIGl0IG1ha2VzIHRoZSBoaXN0
b3J5IGhhcmQgdG8gZm9sbG93LiBJZiB5b3Ugd2FudCB0byBtYWtlIGEgY2hhbmdlIHRoYXQgZG9l
c24ndCBoYXZlIGEgY29ycmVzcG9uZGluZyBpc3N1ZSBpbiB0aGUgaXNzdWUgdHJhY2tlciwgcGxl
YXNlIGNyZWF0ZSBvbmUuCi0gIDEuIEFsc28sIGNvb3JkaW5hdGUgd2l0aCB0ZWFtIG1lbWJlcnMg
dGhhdCBhcmUgbGlzdGVkIG9uIHRoZSBpc3N1ZSBpbiBxdWVzdGlvbi4gVGhpcyBlbnN1cmVzIHRo
YXQgd29yayBpc24ndCBiZWluZyBkdXBsaWNhdGVkIGFuZCBjb21tdW5pY2F0aW5nIHlvdXIgcGxh
biBlYXJseSBhbHNvIGdlbmVyYWxseSBsZWFkcyB0byBiZXR0ZXIgcGF0Y2hlcy4KLSAgMS4gRW5z
dXJlIHRoYXQgeW91ciBjb2RlIGFkaGVyZXMgdG8gdGhlIFtHb29nbGUgVGVzdCBzb3VyY2UgY29k
ZSBzdHlsZV0oI0NvZGluZ19TdHlsZS5tZCkuCi0gIDEuIEVuc3VyZSB0aGF0IHRoZXJlIGFyZSB1
bml0IHRlc3RzIGZvciB5b3VyIGNvZGUuCi0gIDEuIFNpZ24gYSBDb250cmlidXRvciBMaWNlbnNl
IEFncmVlbWVudC4KLSAgMS4gQ3JlYXRlIGEgUHVsbCBSZXF1ZXN0IGluIHRoZSB1c3VhbCB3YXku
Ci0KLSMjIEdvb2dsZSBUZXN0IENvbW1pdHRlcnMgIyMKLQotVGhlIGN1cnJlbnQgbWVtYmVycyBv
ZiB0aGUgR29vZ2xlIFRlc3QgZW5naW5lZXJpbmcgdGVhbSBhcmUgdGhlIG9ubHkKLWNvbW1pdHRl
cnMgYXQgcHJlc2VudC4gSW4gdGhlIGdyZWF0IHRyYWRpdGlvbiBvZiBlYXRpbmcgb25lJ3Mgb3du
Ci1kb2dmb29kLCB3ZSB3aWxsIGJlIHJlcXVpcmluZyBlYWNoIG5ldyBHb29nbGUgVGVzdCBlbmdp
bmVlcmluZyB0ZWFtCi1tZW1iZXIgdG8gZWFybiB0aGUgcmlnaHQgdG8gYmVjb21lIGEgY29tbWl0
dGVyIGJ5IGZvbGxvd2luZyB0aGUKLXByb2NlZHVyZXMgaW4gdGhpcyBkb2N1bWVudCwgd3JpdGlu
ZyBjb25zaXN0ZW50bHkgZ3JlYXQgY29kZSwgYW5kCi1kZW1vbnN0cmF0aW5nIHJlcGVhdGVkbHkg
dGhhdCBoZSBvciBzaGUgdHJ1bHkgZ2V0cyB0aGUgemVuIG9mIEdvb2dsZQotVGVzdC4KLQotIyBS
ZWxlYXNlIFByb2Nlc3MgIwotCi1XZSBmb2xsb3cgYSB0eXBpY2FsIHJlbGVhc2UgcHJvY2VzczoK
LQotICAxLiBBIHJlbGVhc2UgYnJhbmNoIG5hbWVkIGByZWxlYXNlLVguWWAgaXMgY3JlYXRlZC4K
LSAgMS4gQnVncyBhcmUgZml4ZWQgYW5kIGZlYXR1cmVzIGFyZSBhZGRlZCBpbiB0cnVuazsgdGhv
c2UgaW5kaXZpZHVhbCBwYXRjaGVzIGFyZSBtZXJnZWQgaW50byB0aGUgcmVsZWFzZSBicmFuY2gg
dW50aWwgaXQncyBzdGFibGUuCi0gIDEuIEFuIGluZGl2aWR1YWwgcG9pbnQgcmVsZWFzZSAodGhl
IGBaYCBpbiBgWC5ZLlpgKSBpcyBtYWRlIGJ5IGNyZWF0aW5nIGEgdGFnIGZyb20gdGhlIGJyYW5j
aC4KLSAgMS4gUmVwZWF0IHN0ZXBzIDIgYW5kIDMgdGhyb3VnaG91dCBvbmUgcmVsZWFzZSBjeWNs
ZSAoYXMgZGV0ZXJtaW5lZCBieSBmZWF0dXJlcyBvciB0aW1lKS4KLSAgMS4gR28gYmFjayB0byBz
dGVwIDEgdG8gY3JlYXRlIGFub3RoZXIgcmVsZWFzZSBicmFuY2ggYW5kIHNvIG9uLgotCi0tLS0K
LQotVGhpcyBwYWdlIGlzIGJhc2VkIG9uIHRoZSBbTWFraW5nIEdXVCBCZXR0ZXJdKGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vd2VidG9vbGtpdC9tYWtpbmdnd3RiZXR0ZXIuaHRtbCkgZ3VpZGUgZnJv
bSB0aGUgW0dvb2dsZSBXZWIgVG9vbGtpdF0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS93ZWJ0b29s
a2l0LykgcHJvamVjdC4gIEV4Y2VwdCBhcyBvdGhlcndpc2UgW25vdGVkXShodHRwOi8vY29kZS5n
b29nbGUuY29tL3BvbGljaWVzLmh0bWwjcmVzdHJpY3Rpb25zKSwgdGhlIGNvbnRlbnQgb2YgdGhp
cyBwYWdlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBbQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlv
biAyLjUgTGljZW5zZV0oaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMi41
LykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL0RvY3VtZW50YXRpb24ubWQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL0RvY3VtZW50YXRpb24ubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjYTFhYWM3NTk5My4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvRG9j
dW1lbnRhdGlvbi5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVRoaXMgcGFnZSBs
aXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZvciBHb29nbGUgVGVzdCAqKih0aGUg
U1ZOIHRydW5rIHZlcnNpb24pKioKLS0tICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24g
b2YgR29vZ2xlIFRlc3QsIHBsZWFzZSByZWFkIHRoZQotZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBz
cGVjaWZpYyB2ZXJzaW9uIGluc3RlYWQuKioKLQotICAqIFtQcmltZXJdKFByaW1lci5tZCkgLS0g
c3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KLSAgKiBbU2FtcGxlc10o
U2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFtcGxlcy4KLSAgKiBbQWR2YW5jZWRHdWlkZV0o
QWR2YW5jZWRHdWlkZS5tZCkgLS0gbGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVzdC4KLSAgKiBb
WGNvZGVHdWlkZV0oWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVzZSBHb29nbGUgVGVzdCBpbiBY
Y29kZSBvbiBNYWMuCi0gICogW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShGQVEubWQpIC0t
IGNoZWNrIGhlcmUgYmVmb3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3Qu
Ci0KLVRvIGNvbnRyaWJ1dGUgY29kZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKLQotICAqIFtEZXZH
dWlkZV0oRGV2R3VpZGUubWQpIC0tIHJlYWQgdGhpcyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmly
c3QgcGF0Y2guCi0gICogW1B1bXBNYW51YWxdKFB1bXBNYW51YWwubWQpIC0tIGhvdyB3ZSBnZW5l
cmF0ZSBzb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvRkFRLm1kIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9GQVEubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZDZjYjcy
MzhhMS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvRkFRLm1kCisrKyAvZGV2
L251bGwKQEAgLTEsMTA4NyArMCwwIEBACi0KLQotSWYgeW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3
ZXIgdG8geW91ciBxdWVzdGlvbiBoZXJlLCBhbmQgeW91IGhhdmUgcmVhZAotW1ByaW1lcl0oUHJp
bWVyLm1kKSBhbmQgW0FkdmFuY2VkR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLCBzZW5kIGl0IHRv
Ci1nb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20uCi0KLSMjIFdoeSBzaG91bGQg
SSB1c2UgR29vZ2xlIFRlc3QgaW5zdGVhZCBvZiBteSBmYXZvcml0ZSBDKysgdGVzdGluZyBmcmFt
ZXdvcms/ICMjCi0KLUZpcnN0LCBsZXQgdXMgc2F5IGNsZWFybHkgdGhhdCB3ZSBkb24ndCB3YW50
IHRvIGdldCBpbnRvIHRoZSBkZWJhdGUgb2YKLXdoaWNoIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBp
cyAqKnRoZSBiZXN0KiouICBUaGVyZSBleGlzdCBtYW55IGZpbmUKLWZyYW1ld29ya3MgZm9yIHdy
aXRpbmcgQysrIHRlc3RzLCBhbmQgd2UgaGF2ZSB0cmVtZW5kb3VzIHJlc3BlY3QgZm9yCi10aGUg
ZGV2ZWxvcGVycyBhbmQgdXNlcnMgb2YgdGhlbS4gIFdlIGRvbid0IHRoaW5rIHRoZXJlIGlzIChv
ciB3aWxsCi1iZSkgYSBzaW5nbGUgYmVzdCBmcmFtZXdvcmsgLSB5b3UgaGF2ZSB0byBwaWNrIHRo
ZSByaWdodCB0b29sIGZvciB0aGUKLXBhcnRpY3VsYXIgdGFzayB5b3UgYXJlIHRhY2tsaW5nLgot
Ci1XZSBjcmVhdGVkIEdvb2dsZSBUZXN0IGJlY2F1c2Ugd2UgY291bGRuJ3QgZmluZCB0aGUgcmln
aHQgY29tYmluYXRpb24KLW9mIGZlYXR1cmVzIGFuZCBjb252ZW5pZW5jZXMgaW4gYW4gZXhpc3Rp
bmcgZnJhbWV3b3JrIHRvIHNhdGlzZnkgX291cl8KLW5lZWRzLiAgVGhlIGZvbGxvd2luZyBpcyBh
IGxpc3Qgb2YgdGhpbmdzIHRoYXQgX3dlXyBsaWtlIGFib3V0IEdvb2dsZQotVGVzdC4gIFdlIGRv
bid0IGNsYWltIHRoZW0gdG8gYmUgdW5pcXVlIHRvIEdvb2dsZSBUZXN0IC0gcmF0aGVyLCB0aGUK
LWNvbWJpbmF0aW9uIG9mIHRoZW0gbWFrZXMgR29vZ2xlIFRlc3QgdGhlIGNob2ljZSBmb3IgdXMu
ICBXZSBob3BlIHRoaXMKLWxpc3QgY2FuIGhlbHAgeW91IGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZv
ciB5b3UgdG9vLgotCi0gICogR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgcG9ydGFibGU6
IGl0IGRvZXNuJ3QgcmVxdWlyZSBleGNlcHRpb25zIG9yIFJUVEk7IGl0IHdvcmtzIGFyb3VuZCB2
YXJpb3VzIGJ1Z3MgaW4gdmFyaW91cyBjb21waWxlcnMgYW5kIGVudmlyb25tZW50czsgZXRjLiAg
QXMgYSByZXN1bHQsIGl0IHdvcmtzIG9uIExpbnV4LCBNYWMgT1MgWCwgV2luZG93cyBhbmQgc2V2
ZXJhbCBlbWJlZGRlZCBvcGVyYXRpbmcgc3lzdGVtcy4KLSAgKiBOb25mYXRhbCBhc3NlcnRpb25z
IChgRVhQRUNUXypgKSBoYXZlIHByb3ZlbiB0byBiZSBncmVhdCB0aW1lIHNhdmVycywgYXMgdGhl
eSBhbGxvdyBhIHRlc3QgdG8gcmVwb3J0IG11bHRpcGxlIGZhaWx1cmVzIGluIGEgc2luZ2xlIGVk
aXQtY29tcGlsZS10ZXN0IGN5Y2xlLgotICAqIEl0J3MgZWFzeSB0byB3cml0ZSBhc3NlcnRpb25z
IHRoYXQgZ2VuZXJhdGUgaW5mb3JtYXRpdmUgbWVzc2FnZXM6IHlvdSBqdXN0IHVzZSB0aGUgc3Ry
ZWFtIHN5bnRheCB0byBhcHBlbmQgYW55IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGUuZy4gYEFT
U0VSVF9FUSg1LCBGb28oaSkpIDw8ICIgd2hlcmUgaSA9ICIgPDwgaTtgLiAgSXQgZG9lc24ndCBy
ZXF1aXJlIGEgbmV3IHNldCBvZiBtYWNyb3Mgb3Igc3BlY2lhbCBmdW5jdGlvbnMuCi0gICogR29v
Z2xlIFRlc3QgYXV0b21hdGljYWxseSBkZXRlY3RzIHlvdXIgdGVzdHMgYW5kIGRvZXNuJ3QgcmVx
dWlyZSB5b3UgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCi0gICogRGVh
dGggdGVzdHMgYXJlIHByZXR0eSBoYW5keSBmb3IgZW5zdXJpbmcgdGhhdCB5b3VyIGFzc2VydHMg
aW4gcHJvZHVjdGlvbiBjb2RlIGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHJpZ2h0IGNvbmRpdGlvbnMu
Ci0gICogYFNDT1BFRF9UUkFDRWAgaGVscHMgeW91IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2Yg
YW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBpdCBjb21lcyBmcm9tIGluc2lkZSBhIHN1Yi1yb3V0
aW5lIG9yIGxvb3AuCi0gICogWW91IGNhbiBkZWNpZGUgd2hpY2ggdGVzdHMgdG8gcnVuIHVzaW5n
IG5hbWUgcGF0dGVybnMuICBUaGlzIHNhdmVzIHRpbWUgd2hlbiB5b3Ugd2FudCB0byBxdWlja2x5
IHJlcHJvZHVjZSBhIHRlc3QgZmFpbHVyZS4KLSAgKiBHb29nbGUgVGVzdCBjYW4gZ2VuZXJhdGUg
WE1MIHRlc3QgcmVzdWx0IHJlcG9ydHMgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IHBvcHVsYXIgY29u
dGludW91cyBidWlsZCBzeXN0ZW0gbGlrZSBIdWRzb24uCi0gICogU2ltcGxlIHRoaW5ncyBhcmUg
ZWFzeSBpbiBHb29nbGUgVGVzdCwgd2hpbGUgaGFyZCB0aGluZ3MgYXJlIHBvc3NpYmxlOiBpbiBh
ZGRpdGlvbiB0byBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlIFtnbG9iYWwgdGVzdCBlbnZpcm9ubWVu
dHNdKEFkdmFuY2VkR3VpZGUubWQjZ2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3duKSBhbmQgdGVz
dHMgcGFyYW1ldGVyaXplZCBieSBbdmFsdWVzXShBZHZhbmNlZEd1aWRlLm1kI3ZhbHVlLXBhcmFt
ZXRlcml6ZWQtdGVzdHMpIG9yIFt0eXBlc10oZG9jcy9BZHZhbmNlZEd1aWRlLm1kI3R5cGVkLXRl
c3RzKSwgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgdmFyaW91cyB3YXlzIGZvciB0aGUgdXNlciB0byBl
eHRlbmQgdGhlIGZyYW1ld29yayAtLSBpZiBHb29nbGUgVGVzdCBkb2Vzbid0IGRvIHNvbWV0aGlu
ZyBvdXQgb2YgdGhlIGJveCwgY2hhbmNlcyBhcmUgdGhhdCBhIHVzZXIgY2FuIGltcGxlbWVudCB0
aGUgZmVhdHVyZSB1c2luZyBHb29nbGUgVGVzdCdzIHB1YmxpYyBBUEksIHdpdGhvdXQgY2hhbmdp
bmcgR29vZ2xlIFRlc3QgaXRzZWxmLiAgSW4gcGFydGljdWxhciwgeW91IGNhbjoKLSAgICAqIGV4
cGFuZCB5b3VyIHRlc3Rpbmcgdm9jYWJ1bGFyeSBieSBkZWZpbmluZyBbY3VzdG9tIHByZWRpY2F0
ZXNdKEFkdmFuY2VkR3VpZGUubWQjcHJlZGljYXRlLWFzc2VydGlvbnMtZm9yLWJldHRlci1lcnJv
ci1tZXNzYWdlcyksCi0gICAgKiB0ZWFjaCBHb29nbGUgVGVzdCBob3cgdG8gW3ByaW50IHlvdXIg
dHlwZXNdKEFkdmFuY2VkR3VpZGUubWQjdGVhY2hpbmctZ29vZ2xlLXRlc3QtaG93LXRvLXByaW50
LXlvdXItdmFsdWVzKSwKLSAgICAqIGRlZmluZSB5b3VyIG93biB0ZXN0aW5nIG1hY3JvcyBvciB1
dGlsaXRpZXMgYW5kIHZlcmlmeSB0aGVtIHVzaW5nIEdvb2dsZSBUZXN0J3MgW1NlcnZpY2UgUHJv
dmlkZXIgSW50ZXJmYWNlXShBZHZhbmNlZEd1aWRlLm1kI2NhdGNoaW5nLWZhaWx1cmVzKSwgYW5k
Ci0gICAgKiByZWZsZWN0IG9uIHRoZSB0ZXN0IGNhc2VzIG9yIGNoYW5nZSB0aGUgdGVzdCBvdXRw
dXQgZm9ybWF0IGJ5IGludGVyY2VwdGluZyB0aGUgW3Rlc3QgZXZlbnRzXShBZHZhbmNlZEd1aWRl
Lm1kI2V4dGVuZGluZy1nb29nbGUtdGVzdC1ieS1oYW5kbGluZy10ZXN0LWV2ZW50cykuCi0KLSMj
IEknbSBnZXR0aW5nIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LiAgV291bGQg
eW91IGZpeCB0aGVtPyAjIwotCi1XZSBzdHJpdmUgdG8gbWluaW1pemUgY29tcGlsZXIgd2Fybmlu
Z3MgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzLiAgQmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9u
LCB3ZSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUgd2FybmluZ3Mg
d2hlbiBjb21waWxlZCB1c2luZyBpdHMgQ01ha2Ugc2NyaXB0IG9uIFdpbmRvd3MsIExpbnV4LCBh
bmQgTWFjIE9TLgotCi1VbmZvcnR1bmF0ZWx5LCB0aGlzIGRvZXNuJ3QgbWVhbiB5b3UgYXJlIGd1
YXJhbnRlZWQgdG8gc2VlIG5vIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGlu
IHlvdXIgZW52aXJvbm1lbnQ6Ci0KLSAgKiBZb3UgbWF5IGJlIHVzaW5nIGEgZGlmZmVyZW50IGNv
bXBpbGVyIGFzIHdlIHVzZSwgb3IgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiB0aGUgc2FtZSBjb21w
aWxlci4gIFdlIGNhbm5vdCBwb3NzaWJseSB0ZXN0IGZvciBhbGwgY29tcGlsZXJzLgotICAqIFlv
dSBtYXkgYmUgY29tcGlsaW5nIG9uIGEgZGlmZmVyZW50IHBsYXRmb3JtIGFzIHdlIGRvLgotICAq
IFlvdXIgcHJvamVjdCBtYXkgYmUgdXNpbmcgZGlmZmVyZW50IGNvbXBpbGVyIGZsYWdzIGFzIHdl
IGRvLgotCi1JdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd2Fy
bmluZy1mcmVlIGZvciBldmVyeW9uZS4gIE9yLCBpdCBtYXkgbm90IGJlIGRlc2lyYWJsZSBpZiB0
aGUgd2FybmluZyBpcyByYXJlbHkgZW5hYmxlZCBhbmQgZml4aW5nIHRoZSB2aW9sYXRpb25zIG1h
a2VzIHRoZSBjb2RlIG1vcmUgY29tcGxleC4KLQotSWYgeW91IHNlZSB3YXJuaW5ncyB3aGVuIGNv
bXBpbGluZyBHb29nbGUgVGVzdCwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSB1c2UgdGhlIGAtaXN5c3Rl
bWAgZmxhZyAoYXNzdW1pbmcgeW91ciBhcmUgdXNpbmcgR0NDKSB0byBtYXJrIEdvb2dsZSBUZXN0
IGhlYWRlcnMgYXMgc3lzdGVtIGhlYWRlcnMuICBUaGF0J2xsIHN1cHByZXNzIHdhcm5pbmdzIGZy
b20gR29vZ2xlIFRlc3QgaGVhZGVycy4KLQotIyMgV2h5IHNob3VsZCBub3QgdGVzdCBjYXNlIG5h
bWVzIGFuZCB0ZXN0IG5hbWVzIGNvbnRhaW4gdW5kZXJzY29yZT8gIyMKLQotVW5kZXJzY29yZSAo
YF9gKSBpcyBzcGVjaWFsLCBhcyBDKysgcmVzZXJ2ZXMgdGhlIGZvbGxvd2luZyB0byBiZSB1c2Vk
IGJ5Ci10aGUgY29tcGlsZXIgYW5kIHRoZSBzdGFuZGFyZCBsaWJyYXJ5OgotCi0gIDEuIGFueSBp
ZGVudGlmaWVyIHRoYXQgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5IGFuIHVwcGVyLWNh
c2UgbGV0dGVyLCBhbmQKLSAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBjb250YWluZXJzIHR3byBj
b25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoaS5lLiBgX19gKSBfYW55d2hlcmVfIGluIGl0cyBuYW1l
LgotCi1Vc2VyIGNvZGUgaXMgX3Byb2hpYml0ZWRfIGZyb20gdXNpbmcgc3VjaCBpZGVudGlmaWVy
cy4KLQotTm93IGxldCdzIGxvb2sgYXQgd2hhdCB0aGlzIG1lYW5zIGZvciBgVEVTVGAgYW5kIGBU
RVNUX0ZgLgotCi1DdXJyZW50bHkgYFRFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSlgIGdlbmVy
YXRlcyBhIGNsYXNzIG5hbWVkCi1gVGVzdENhc2VOYW1lX1Rlc3ROYW1lX1Rlc3RgLiAgV2hhdCBo
YXBwZW5zIGlmIGBUZXN0Q2FzZU5hbWVgIG9yIGBUZXN0TmFtZWAKLWNvbnRhaW5zIGBfYD8KLQot
ICAxLiBJZiBgVGVzdENhc2VOYW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgZm9sbG93ZWQgYnkgYW4g
dXBwZXItY2FzZSBsZXR0ZXIgKHNheSwgYF9Gb29gKSwgd2UgZW5kIHVwIHdpdGggYF9Gb29fVGVz
dE5hbWVfVGVzdGAsIHdoaWNoIGlzIHJlc2VydmVkIGFuZCB0aHVzIGludmFsaWQuCi0gIDEuIElm
IGBUZXN0Q2FzZU5hbWVgIGVuZHMgd2l0aCBhbiBgX2AgKHNheSwgYEZvb19gKSwgd2UgZ2V0IGBG
b29fX1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgotICAxLiBJZiBgVGVzdE5hbWVg
IHN0YXJ0cyB3aXRoIGFuIGBfYCAoc2F5LCBgX0JhcmApLCB3ZSBnZXQgYFRlc3RDYXNlTmFtZV9f
QmFyX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgotICAxLiBJZiBgVGVzdE5hbWVgIGVuZHMgd2l0
aCBhbiBgX2AgKHNheSwgYEJhcl9gKSwgd2UgZ2V0IGBUZXN0Q2FzZU5hbWVfQmFyX19UZXN0YCwg
d2hpY2ggaXMgaW52YWxpZC4KLQotU28gY2xlYXJseSBgVGVzdENhc2VOYW1lYCBhbmQgYFRlc3RO
YW1lYCBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYF9gCi0oQWN0dWFsbHksIGBUZXN0Q2FzZU5h
bWVgIGNhbiBzdGFydCB3aXRoIGBfYCAtLSBhcyBsb25nIGFzIHRoZSBgX2AgaXNuJ3QKLWZvbGxv
d2VkIGJ5IGFuIHVwcGVyLWNhc2UgbGV0dGVyLiAgQnV0IHRoYXQncyBnZXR0aW5nIGNvbXBsaWNh
dGVkLiAgU28KLWZvciBzaW1wbGljaXR5IHdlIGp1c3Qgc2F5IHRoYXQgaXQgY2Fubm90IHN0YXJ0
IHdpdGggYF9gLikuCi0KLUl0IG1heSBzZWVtIGZpbmUgZm9yIGBUZXN0Q2FzZU5hbWVgIGFuZCBg
VGVzdE5hbWVgIHRvIGNvbnRhaW4gYF9gIGluIHRoZQotbWlkZGxlLiAgSG93ZXZlciwgY29uc2lk
ZXIgdGhpczoKLWBgYCBjcHAKLVRFU1QoVGltZSwgRmxpZXNfTGlrZV9Bbl9BcnJvdykgeyAuLi4g
fQotVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7IC4uLiB9Ci1gYGAKLQotTm93LCB0
aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRoZSBzYW1lIGNsYXNzCi0oYFRpbWVf
RmlsZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuICBUaGF0J3Mgbm90IGdvb2QuCi0KLVNvIGZvciBz
aW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2Fz
ZU5hbWVgCi1hbmQgYFRlc3ROYW1lYC4gIFRoZSBydWxlIGlzIG1vcmUgY29uc3RyYWluaW5nIHRo
YW4gbmVjZXNzYXJ5LCBidXQgaXQncwotc2ltcGxlIGFuZCBlYXN5IHRvIHJlbWVtYmVyLiAgSXQg
YWxzbyBnaXZlcyBHb29nbGUgVGVzdCBzb21lIHdpZ2dsZQotcm9vbSBpbiBjYXNlIGl0cyBpbXBs
ZW1lbnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLQotSWYgeW91IHZpb2xh
dGUgdGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1tZWRpYXRlbHkgY29uc2VxdWVuY2VzLAot
YnV0IHlvdXIgdGVzdCBtYXkgKGp1c3QgbWF5KSBicmVhayB3aXRoIGEgbmV3IGNvbXBpbGVyIChv
ciBhIG5ldwotdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgeW91IGFyZSB1c2luZykgb3Igd2l0aCBh
IG5ldyB2ZXJzaW9uIG9mIEdvb2dsZQotVGVzdC4gIFRoZXJlZm9yZSBpdCdzIGJlc3QgdG8gZm9s
bG93IHRoZSBydWxlLgotCi0jIyBXaHkgaXMgaXQgbm90IHJlY29tbWVuZGVkIHRvIGluc3RhbGwg
YSBwcmUtY29tcGlsZWQgY29weSBvZiBHb29nbGUgVGVzdCAoZm9yIGV4YW1wbGUsIGludG8gL3Vz
ci9sb2NhbCk/ICMjCi0KLUluIHRoZSBlYXJseSBkYXlzLCB3ZSBzYWlkIHRoYXQgeW91IGNvdWxk
IGluc3RhbGwKLWNvbXBpbGVkIEdvb2dsZSBUZXN0IGxpYnJhcmllcyBvbiBgKmBuaXggc3lzdGVt
cyB1c2luZyBgbWFrZSBpbnN0YWxsYC4KLVRoZW4gZXZlcnkgdXNlciBvZiB5b3VyIG1hY2hpbmUg
Y2FuIHdyaXRlIHRlc3RzIHdpdGhvdXQKLXJlY29tcGlsaW5nIEdvb2dsZSBUZXN0LgotCi1UaGlz
IHNlZW1lZCBsaWtlIGEgZ29vZCBpZGVhLCBidXQgaXQgaGFzIGEKLWdvdC1jaGE6IGV2ZXJ5IHVz
ZXIgbmVlZHMgdG8gY29tcGlsZSBoaXMgdGVzdHMgdXNpbmcgdGhlIF9zYW1lXyBjb21waWxlcgot
ZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoZSBpbnN0YWxsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVz
OyBvdGhlcndpc2UKLWhlIG1heSBydW4gaW50byB1bmRlZmluZWQgYmVoYXZpb3JzIChpLmUuIHRo
ZSB0ZXN0cyBjYW4gYmVoYXZlCi1zdHJhbmdlbHkgYW5kIG1heSBldmVuIGNyYXNoIGZvciBubyBv
YnZpb3VzIHJlYXNvbnMpLgotCi1XaHk/ICBCZWNhdXNlIEMrKyBoYXMgdGhpcyB0aGluZyBjYWxs
ZWQgdGhlIE9uZS1EZWZpbml0aW9uIFJ1bGU6IGlmCi10d28gQysrIHNvdXJjZSBmaWxlcyBjb250
YWluIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2FtZQotY2xhc3MvZnVuY3Rpb24vdmFy
aWFibGUsIGFuZCB5b3UgbGluayB0aGVtIHRvZ2V0aGVyLCB5b3UgdmlvbGF0ZSB0aGUKLXJ1bGUu
ICBUaGUgbGlua2VyIG1heSBvciBtYXkgbm90IGNhdGNoIHRoZSBlcnJvciAoaW4gbWFueSBjYXNl
cyBpdCdzCi1ub3QgcmVxdWlyZWQgYnkgdGhlIEMrKyBzdGFuZGFyZCB0byBjYXRjaCB0aGUgdmlv
bGF0aW9uKS4gIElmIGl0Ci1kb2Vzbid0LCB5b3UgZ2V0IHN0cmFuZ2UgcnVuLXRpbWUgYmVoYXZp
b3JzIHRoYXQgYXJlIHVuZXhwZWN0ZWQgYW5kCi1oYXJkIHRvIGRlYnVnLgotCi1JZiB5b3UgY29t
cGlsZSBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0IGNvZGUgdXNpbmcgZGlmZmVyZW50IGNvbXBp
bGVyCi1mbGFncywgdGhleSBtYXkgc2VlIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2Ft
ZQotY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUgKGUuZy4gZHVlIHRvIHRoZSB1c2Ugb2YgYCNpZmAg
aW4gR29vZ2xlIFRlc3QpLgotVGhlcmVmb3JlLCBmb3IgeW91ciBzYW5pdHksIHdlIHJlY29tbWVu
ZCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1jb21waWxlZAotR29vZ2xlIFRlc3QgbGlicmFyaWVz
LiAgSW5zdGVhZCwgZWFjaCBwcm9qZWN0IHNob3VsZCBjb21waWxlCi1Hb29nbGUgVGVzdCBpdHNl
bGYgc3VjaCB0aGF0IGl0IGNhbiBiZSBzdXJlIHRoYXQgdGhlIHNhbWUgZmxhZ3MgYXJlCi11c2Vk
IGZvciBib3RoIEdvb2dsZSBUZXN0IGFuZCB0aGUgdGVzdHMuCi0KLSMjIEhvdyBkbyBJIGdlbmVy
YXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1c2luZyBWaXN1YWwgU3R1ZGlvIDIwMDgp
PyAjIwotCi0oQW5zd2VyZWQgYnkgVHJldm9yIFJvYmluc29uKQotCi1Mb2FkIHRoZSBzdXBwbGll
ZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVpdGhlciBgbXN2Y1xndGVzdC1tZC5zbG5g
IG9yCi1gbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdoIHRoZSBtaWdyYXRpb24gd2l6YXJkIHRv
IG1pZ3JhdGUgdGhlCi1zb2x1dGlvbiBhbmQgcHJvamVjdCBmaWxlcyB0byBWaXN1YWwgU3R1ZGlv
IDIwMDguIFNlbGVjdAotYENvbmZpZ3VyYXRpb24gTWFuYWdlci4uLmAgZnJvbSB0aGUgYEJ1aWxk
YCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCi10aGUgYEFjdGl2ZSBzb2x1dGlvbiBwbGF0
Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJvbSB0aGUgbmV3Ci1wbGF0Zm9ybSBkcm9w
ZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAgc2V0IHRvIGBXaW4zMmAgYW5kCi1gQ3Jl
YXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tlZCwgdGhlbiBjbGljayBgT0tgLiBZb3Ug
bm93IGhhdmUKLWBXaW4zMmAgYW5kIGB4NjRgIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLCBzZWxl
Y3RhYmxlIGZyb20gdGhlCi1gU3RhbmRhcmRgIHRvb2xiYXIsIHdoaWNoIGFsbG93IHlvdSB0byB0
b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IKLTY0LWJpdCBiaW5hcmllcyAob3IgYm90
aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KLQotSW4gb3JkZXIgdG8gcHJldmVudCBidWls
ZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBvbmUgYW5vdGhlciwKLXlvdSdsbCBuZWVk
IHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmdzIGZvciB0aGUK
LW5ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBhY3Jvc3MgYWxsIHRoZSBwcm9q
ZWN0cy4gVG8gZG8KLXRoaXMsIG11bHRpLXNlbGVjdCAoZS5nLiB1c2luZyBzaGlmdC1jbGljaykg
YWxsIHByb2plY3RzIChidXQgbm90IHRoZQotc29sdXRpb24pIGluIHRoZSBgU29sdXRpb24gRXhw
bG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBhbmQKLXNlbGVjdCBgUHJvcGVydGllc2Au
IEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzYCwKLWFu
ZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRvd24sIHNlbGVjdCBgQWxsIENvbmZpZ3Vy
YXRpb25zYC4KLU1ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgcGxhdGZvcm0gaXMgYHg2NGAuIEZvciB0
aGUKLWBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5nLCBjaGFuZ2UgdGhlIHZhbHVlIGZy
b20KLWAkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlgIHRvCi1gJChPdXREaXIp
XCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQgdGhlbiBidWlsZCB0aGUKLXNvbHV0aW9u
LiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhlIDY0LWJpdCBiaW5hcmllcyB3aWxsIGJl
IGluCi10aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3RvcnkuCi0KLSMjIENhbiBJIHVzZSBHb29n
bGUgVGVzdCBvbiBNaW5HVz8gIyMKLQotV2UgaGF2ZW4ndCB0ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMs
IGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0IGhlCi13YXMgYWJsZSB0byBjb21waWxl
IGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3NmdWxseSB3aGVuIHVzaW5nCi1NaW5HVyBm
cm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBpdCB3aXRoOgotCi1gUEFUSC9U
Ty9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIgQ1hYPSJnKysgLW1uby1jeWd3aW4iYAot
Ci1Zb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGUgYC1tbm8tY3lnd2luYCBvcHRpb24g
d2l0aCBkaXJlY3QgbGlua3MKLXRvIHRoZSByZWFsIE1pbkdXIGJpbmFyaWVzLCBidXQgd2UgaGF2
ZW4ndCB0cmllZCB0aGF0LgotCi1DYXZlYXRzOgotCi0gICogVGhlcmUgYXJlIG1hbnkgd2Fybmlu
Z3Mgd2hlbiBjb21waWxpbmcuCi0gICogYG1ha2UgY2hlY2tgIHdpbGwgcHJvZHVjZSBzb21lIGVy
cm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYgYXJlIGNvbXBhdGli
bGUgd2l0aCBNaW5HVy4KLQotV2UgYWxzbyBoYXZlIHJlcG9ydHMgb24gc3VjY2Vzc2Z1bCBjcm9z
cyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdAotTWluR1cgYmluYXJpZXMgb24gTGludXggdXNp
bmcKLVt0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHA6Ly93aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3Mt
Q29tcGlsaW5nX1VuZGVyX0xpbnV4I0Nyb3NzLWNvbXBpbGluZ191bmRlcl9MaW51eF9mb3JfTVNf
V2luZG93cykKLW9uIHRoZSBXeFdpZGdldHMgc2l0ZS4KLQotUGxlYXNlIGNvbnRhY3QgYGdvb2ds
ZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYgeW91IGFyZQotaW50ZXJlc3RlZCBp
biBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdXLgotCi0jIyBXaHkgZG9lcyBHb29nbGUg
VGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9FUShOVUxMLCBw
dHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX05FKE5VTEwsIHB0
cik/ICMjCi0KLUR1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMrKywgaXQgcmVxdWlyZXMgc29t
ZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQotbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdG8gc3VwcG9y
dCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlCi1gRVhQRUNUX1hYKClgIGFuZCBg
QVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8gaXQgd2hlcmUKLWl0J3Mg
bW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHb29n
bGUgVGVzdAotaGFyZGVyIHRvIG1haW50YWluIGFuZCBtb3JlIGVycm9yLXByb25lIHRoYW4gbmVj
ZXNzYXJ5KS4KLQotVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8gdGFrZXMgdGhlIF9leHBlY3RlZF8g
dmFsdWUgYXMgaXRzIGZpcnN0Ci1hcmd1bWVudCBhbmQgdGhlIF9hY3R1YWxfIHZhbHVlIGFzIHRo
ZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Ci1zb21lb25lIHdhbnRzIHRvIHdyaXRlIGBF
WFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFuZCB0aGlzCi1pbmRlZWQgd2FzIHJl
cXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCi0KLVRo
ZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcu
IFdoZW4gdGhlCi1hc3NlcnRpb24gZmFpbHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBt
dXN0IGJlIGBOVUxMYCwgc28gaXQKLWRvZXNuJ3QgYWRkIGFueSBpbmZvcm1hdGlvbiB0byBwcmlu
dCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCi1gRVhQRUNUX1RSVUUocHRyICE9IE5VTEwp
YCB3b3JrcyBqdXN0IGFzIHdlbGwuCi0KLUlmIHdlIHdlcmUgdG8gc3VwcG9ydCBgRVhQRUNUX05F
KE5VTEwsIHB0cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwKLWhhdmUgdG8gc3VwcG9ydCBgRVhQ
RUNUX05FKHB0ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlrZSBgRVhQRUNUX0VRYCwKLXdlIGRv
bid0IGhhdmUgYSBjb252ZW50aW9uIG9uIHRoZSBvcmRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cyBm
b3IKLWBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nIHRoZSB0ZW1wbGF0ZSBtZXRhIHByb2dy
YW1taW5nIHRyaWNrcwotdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBtYWtpbmcgaXQgZXZl
biBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQKLW1haW50YWluLiBXZSBiZWxpZXZlIHRoZSBiZW5l
Zml0IGRvZXNuJ3QganVzdGlmeSB0aGUgY29zdC4KLQotRmluYWxseSwgd2l0aCB0aGUgZ3Jvd3Ro
IG9mIEdvb2dsZSBNb2NrJ3MgW21hdGNoZXJdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9v
ay5tZCN1c2luZy1tYXRjaGVycy1pbi1nb29nbGUtdGVzdC1hc3NlcnRpb25zKSBsaWJyYXJ5LCB3
ZSBhcmUKLWVuY291cmFnaW5nIHBlb3BsZSB0byB1c2UgdGhlIHVuaWZpZWQgYEVYUEVDVF9USEFU
KHZhbHVlLCBtYXRjaGVyKWAKLXN5bnRheCBtb3JlIG9mdGVuIGluIHRlc3RzLiBPbmUgc2lnbmlm
aWNhbnQgYWR2YW50YWdlIG9mIHRoZSBtYXRjaGVyCi1hcHByb2FjaCBpcyB0aGF0IG1hdGNoZXJz
IGNhbiBiZSBlYXNpbHkgY29tYmluZWQgdG8gZm9ybSBuZXcgbWF0Y2hlcnMsCi13aGlsZSB0aGUg
YEVYUEVDVF9ORWAsIGV0YywgbWFjcm9zIGNhbm5vdCBiZSBlYXNpbHkKLWNvbWJpbmVkLiBUaGVy
ZWZvcmUgd2Ugd2FudCB0byBpbnZlc3QgbW9yZSBpbiB0aGUgbWF0Y2hlcnMgdGhhbiBpbiB0aGUK
LWBFWFBFQ1RfWFgoKWAgbWFjcm9zLgotCi0jIyBEb2VzIEdvb2dsZSBUZXN0IHN1cHBvcnQgcnVu
bmluZyB0ZXN0cyBpbiBwYXJhbGxlbD8gIyMKLQotVGVzdCBydW5uZXJzIHRlbmQgdG8gYmUgdGln
aHRseSBjb3VwbGVkIHdpdGggdGhlIGJ1aWxkL3Rlc3QKLWVudmlyb25tZW50LCBhbmQgR29vZ2xl
IFRlc3QgZG9lc24ndCB0cnkgdG8gc29sdmUgdGhlIHByb2JsZW0gb2YKLXJ1bm5pbmcgdGVzdHMg
aW4gcGFyYWxsZWwuICBJbnN0ZWFkLCB3ZSB0cmllZCB0byBtYWtlIEdvb2dsZSBUZXN0IHdvcmsK
LW5pY2VseSB3aXRoIHRlc3QgcnVubmVycy4gIEZvciBleGFtcGxlLCBHb29nbGUgVGVzdCdzIFhN
TCByZXBvcnQKLWNvbnRhaW5zIHRoZSB0aW1lIHNwZW50IG9uIGVhY2ggdGVzdCwgYW5kIGl0cyBg
Z3Rlc3RfbGlzdF90ZXN0c2AgYW5kCi1gZ3Rlc3RfZmlsdGVyYCBmbGFncyBjYW4gYmUgdXNlZCBm
b3Igc3BsaXR0aW5nIHRoZSBleGVjdXRpb24gb2YgdGVzdAotbWV0aG9kcyBpbnRvIG11bHRpcGxl
IHByb2Nlc3Nlcy4gIFRoZXNlIGZ1bmN0aW9uYWxpdGllcyBjYW4gaGVscCB0aGUKLXRlc3QgcnVu
bmVyIHJ1biB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCi0KLSMjIFdoeSBkb24ndCBHb29nbGUgVGVz
dCBydW4gdGhlIHRlc3RzIGluIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNwZWVkIHRoaW5ncyB1cD8g
IyMKLQotSXQncyBkaWZmaWN1bHQgdG8gd3JpdGUgdGhyZWFkLXNhZmUgY29kZS4gIE1vc3QgdGVz
dHMgYXJlIG5vdCB3cml0dGVuCi13aXRoIHRocmVhZC1zYWZldHkgaW4gbWluZCwgYW5kIHRodXMg
bWF5IG5vdCB3b3JrIGNvcnJlY3RseSBpbiBhCi1tdWx0aS10aHJlYWRlZCBzZXR0aW5nLgotCi1J
ZiB5b3UgdGhpbmsgYWJvdXQgaXQsIGl0J3MgYWxyZWFkeSBoYXJkIHRvIG1ha2UgeW91ciBjb2Rl
IHdvcmsgd2hlbgoteW91IGtub3cgd2hhdCBvdGhlciB0aHJlYWRzIGFyZSBkb2luZy4gIEl0J3Mg
bXVjaCBoYXJkZXIsIGFuZAotc29tZXRpbWVzIGV2ZW4gaW1wb3NzaWJsZSwgdG8gbWFrZSB5b3Vy
IGNvZGUgd29yayB3aGVuIHlvdSBkb24ndCBrbm93Ci13aGF0IG90aGVyIHRocmVhZHMgYXJlIGRv
aW5nIChyZW1lbWJlciB0aGF0IHRlc3QgbWV0aG9kcyBjYW4gYmUgYWRkZWQsCi1kZWxldGVkLCBv
ciBtb2RpZmllZCBhZnRlciB5b3VyIHRlc3Qgd2FzIHdyaXR0ZW4pLiAgSWYgeW91IHdhbnQgdG8g
cnVuCi10aGUgdGVzdHMgaW4gcGFyYWxsZWwsIHlvdSdkIGJldHRlciBydW4gdGhlbSBpbiBkaWZm
ZXJlbnQgcHJvY2Vzc2VzLgotCi0jIyBXaHkgYXJlbid0IEdvb2dsZSBUZXN0IGFzc2VydGlvbnMg
aW1wbGVtZW50ZWQgdXNpbmcgZXhjZXB0aW9ucz8gIyMKLQotT3VyIG9yaWdpbmFsIG1vdGl2YXRp
b24gd2FzIHRvIGJlIGFibGUgdG8gdXNlIEdvb2dsZSBUZXN0IGluIHByb2plY3RzCi10aGF0IGRp
c2FibGUgZXhjZXB0aW9ucy4gIExhdGVyIHdlIHJlYWxpemVkIHNvbWUgYWRkaXRpb25hbCBiZW5l
Zml0cwotb2YgdGhpcyBhcHByb2FjaDoKLQotICAxLiBUaHJvd2luZyBpbiBhIGRlc3RydWN0b3Ig
aXMgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEMrKy4gIE5vdCB1c2luZyBleGNlcHRpb25zIG1lYW5z
IEdvb2dsZSBUZXN0J3MgYXNzZXJ0aW9ucyBhcmUgc2FmZSB0byB1c2UgaW4gZGVzdHJ1Y3RvcnMu
Ci0gIDEuIFRoZSBgRVhQRUNUXypgIGZhbWlseSBvZiBtYWNyb3Mgd2lsbCBjb250aW51ZSBldmVu
IGFmdGVyIGEgZmFpbHVyZSwgYWxsb3dpbmcgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBgVEVTVGAg
dG8gYmUgcmVwb3J0ZWQgaW4gYSBzaW5nbGUgcnVuLiBUaGlzIGlzIGEgcG9wdWxhciBmZWF0dXJl
LCBhcyBpbiBDKysgdGhlIGVkaXQtY29tcGlsZS10ZXN0IGN5Y2xlIGlzIHVzdWFsbHkgcXVpdGUg
bG9uZyBhbmQgYmVpbmcgYWJsZSB0byBmaXhpbmcgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBhIHRp
bWUgaXMgYSBibGVzc2luZy4KLSAgMS4gSWYgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNp
bmcgZXhjZXB0aW9ucywgYSB0ZXN0IG1heSBmYWxzZWx5IGlnbm9yZSBhIGZhaWx1cmUgaWYgaXQn
cyBjYXVnaHQgYnkgdXNlciBjb2RlOgotYGBgIGNwcAotdHJ5IHsgLi4uIEFTU0VSVF9UUlVFKC4u
LikgLi4uIH0KLWNhdGNoICguLi4pIHsgLi4uIH0KLWBgYAotVGhlIGFib3ZlIGNvZGUgd2lsbCBw
YXNzIGV2ZW4gaWYgdGhlIGBBU1NFUlRfVFJVRWAgdGhyb3dzLiAgV2hpbGUgaXQncyB1bmxpa2Vs
eSBmb3Igc29tZW9uZSB0byB3cml0ZSB0aGlzIGluIGEgdGVzdCwgaXQncyBwb3NzaWJsZSB0byBy
dW4gaW50byB0aGlzIHBhdHRlcm4gd2hlbiB5b3Ugd3JpdGUgYXNzZXJ0aW9ucyBpbiBjYWxsYmFj
a3MgdGhhdCBhcmUgY2FsbGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCi0KLVRoZSBkb3duc2lk
ZSBvZiBub3QgdXNpbmcgZXhjZXB0aW9ucyBpcyB0aGF0IGBBU1NFUlRfKmAgKGltcGxlbWVudGVk
Ci11c2luZyBgcmV0dXJuYCkgd2lsbCBvbmx5IGFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBu
b3QgdGhlIGN1cnJlbnQKLWBURVNUYC4KLQotIyMgV2h5IGRvIHdlIHVzZSB0d28gZGlmZmVyZW50
IG1hY3JvcyBmb3IgdGVzdHMgd2l0aCBhbmQgd2l0aG91dCBmaXh0dXJlcz8gIyMKLQotVW5mb3J0
dW5hdGVseSwgQysrJ3MgbWFjcm8gc3lzdGVtIGRvZXNuJ3QgYWxsb3cgdXMgdG8gdXNlIHRoZSBz
YW1lCi1tYWNybyBmb3IgYm90aCBjYXNlcy4gIE9uZSBwb3NzaWJpbGl0eSBpcyB0byBwcm92aWRl
IG9ubHkgb25lIG1hY3JvCi1mb3IgdGVzdHMgd2l0aCBmaXh0dXJlcywgYW5kIHJlcXVpcmUgdGhl
IHVzZXIgdG8gZGVmaW5lIGFuIGVtcHR5Ci1maXh0dXJlIHNvbWV0aW1lczoKLQotYGBgIGNwcAot
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1RfRihGb29U
ZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotYGBgCi1vcgotYGBgIGNwcAotdHlwZWRlZiA6OnRlc3Rp
bmc6OlRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIERvZXNUaGF0KSB7IC4uLiB9Ci1g
YGAKLQotWWV0LCBtYW55IHBlb3BsZSB0aGluayB0aGlzIGlzIG9uZSBsaW5lIHRvbyBtYW55LiA6
LSkgT3VyIGdvYWwgd2FzIHRvCi1tYWtlIGl0IHJlYWxseSBlYXN5IHRvIHdyaXRlIHRlc3RzLCBz
byB3ZSB0cmllZCB0byBtYWtlIHNpbXBsZSB0ZXN0cwotdHJpdmlhbCB0byBjcmVhdGUuICBUaGF0
IG1lYW5zIHVzaW5nIGEgc2VwYXJhdGUgbWFjcm8gZm9yIHN1Y2ggdGVzdHMuCi0KLVdlIHRoaW5r
IG5laXRoZXIgYXBwcm9hY2ggaXMgaWRlYWwsIHlldCBlaXRoZXIgb2YgdGhlbSBpcyByZWFzb25h
YmxlLgotSW4gdGhlIGVuZCwgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgbXVjaCBlaXRoZXIg
d2F5LgotCi0jIyBXaHkgZG9uJ3Qgd2UgdXNlIHN0cnVjdHMgYXMgdGVzdCBmaXh0dXJlcz8gIyMK
LQotV2UgbGlrZSB0byB1c2Ugc3RydWN0cyBvbmx5IHdoZW4gcmVwcmVzZW50aW5nIHBhc3NpdmUg
ZGF0YS4gIFRoaXMKLWRpc3RpbmN0aW9uIGJldHdlZW4gc3RydWN0cyBhbmQgY2xhc3NlcyBpcyBn
b29kIGZvciBkb2N1bWVudGluZyB0aGUKLWludGVudCBvZiB0aGUgY29kZSdzIGF1dGhvci4gIFNp
bmNlIHRlc3QgZml4dHVyZXMgaGF2ZSBsb2dpYyBsaWtlCi1gU2V0VXAoKWAgYW5kIGBUZWFyRG93
bigpYCwgdGhleSBhcmUgYmV0dGVyIGRlZmluZWQgYXMgY2xhc3Nlcy4KLQotIyMgV2h5IGFyZSBk
ZWF0aCB0ZXN0cyBpbXBsZW1lbnRlZCBhcyBhc3NlcnRpb25zIGluc3RlYWQgb2YgdXNpbmcgYSB0
ZXN0IHJ1bm5lcj8gIyMKLQotT3VyIGdvYWwgd2FzIHRvIG1ha2UgZGVhdGggdGVzdHMgYXMgY29u
dmVuaWVudCBmb3IgYSB1c2VyIGFzIEMrKwotcG9zc2libHkgYWxsb3dzLiAgSW4gcGFydGljdWxh
cjoKLQotICAqIFRoZSBydW5uZXItc3R5bGUgcmVxdWlyZXMgdG8gc3BsaXQgdGhlIGluZm9ybWF0
aW9uIGludG8gdHdvIHBpZWNlczogdGhlIGRlZmluaXRpb24gb2YgdGhlIGRlYXRoIHRlc3QgaXRz
ZWxmLCBhbmQgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBydW5uZXIgb24gaG93IHRvIHJ1biB0
aGUgZGVhdGggdGVzdCBhbmQgd2hhdCB0byBleHBlY3QuICBUaGUgZGVhdGggdGVzdCB3b3VsZCBi
ZSB3cml0dGVuIGluIEMrKywgd2hpbGUgdGhlIHJ1bm5lciBzcGVjIG1heSBvciBtYXkgbm90IGJl
LiAgQSB1c2VyIG5lZWRzIHRvIGNhcmVmdWxseSBrZWVwIHRoZSB0d28gaW4gc3luYy4gYEFTU0VS
VF9ERUFUSChzdGF0ZW1lbnQsIGV4cGVjdGVkX21lc3NhZ2UpYCBzcGVjaWZpZXMgYWxsIG5lY2Vz
c2FyeSBpbmZvcm1hdGlvbiBpbiBvbmUgcGxhY2UsIGluIG9uZSBsYW5ndWFnZSwgd2l0aG91dCBi
b2lsZXJwbGF0ZSBjb2RlLiBJdCBpcyB2ZXJ5IGRlY2xhcmF0aXZlLgotICAqIGBBU1NFUlRfREVB
VEhgIGhhcyBhIHNpbWlsYXIgc3ludGF4IGFuZCBlcnJvci1yZXBvcnRpbmcgc2VtYW50aWNzIGFz
IG90aGVyIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMsIGFuZCB0aHVzIGlzIGVhc3kgdG8gbGVhcm4u
Ci0gICogYEFTU0VSVF9ERUFUSGAgY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBh
bmQgb3RoZXIgbG9naWMgYXQgeW91ciB3aWxsLiAgWW91IGFyZSBub3QgbGltaXRlZCB0byBvbmUg
ZGVhdGggdGVzdCBwZXIgdGVzdCBtZXRob2QuIEZvciBleGFtcGxlLCB5b3UgY2FuIHdyaXRlIHNv
bWV0aGluZyBsaWtlOgotYGBgIGNwcAotICAgIGlmIChGb29Db25kaXRpb24oKSkgewotICAgICAg
QVNTRVJUX0RFQVRIKEJhcigpLCAiYmxhaCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBBU1NFUlRf
RVEoNSwgQmFyKCkpOwotICAgIH0KLWBgYAotSWYgeW91IHByZWZlciBvbmUgZGVhdGggdGVzdCBw
ZXIgdGVzdCBtZXRob2QsIHlvdSBjYW4gd3JpdGUgeW91ciB0ZXN0cyBpbiB0aGF0IHN0eWxlIHRv
bywgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW1wb3NlIHRoYXQgb24gdGhlIHVzZXJzLiAgVGhlIGZl
d2VyIGFydGlmaWNpYWwgbGltaXRhdGlvbnMgdGhlIGJldHRlci4KLSAgKiBgQVNTRVJUX0RFQVRI
YCBjYW4gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiwg
YW5kIHlvdSBjYW4gZGVjaWRlIGhvdyBtYW55IGRlYXRoIHRlc3RzIHlvdSB3YW50IGJhc2VkIG9u
IHJ1bi10aW1lIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsCi1gYGAgY3BwCi0gICAgY29uc3Qg
aW50IGNvdW50ID0gR2V0Q291bnQoKTsgIC8vIE9ubHkga25vd24gYXQgcnVuIHRpbWUuCi0gICAg
Zm9yIChpbnQgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykgewotICAgICAgQVNTRVJUX0RFQVRIKHsK
LSAgICAgICAgZG91YmxlKiBidWZmZXIgPSBuZXcgZG91YmxlW2ldOwotICAgICAgICAuLi4gaW5p
dGlhbGl6ZXMgYnVmZmVyIC4uLgotICAgICAgICBGb28oYnVmZmVyLCBpKQotICAgICAgfSwgImJs
YWggYmxhaCIpOwotICAgIH0KLWBgYAotVGhlIHJ1bm5lci1iYXNlZCBhcHByb2FjaCB0ZW5kcyB0
byBiZSBtb3JlIHN0YXRpYyBhbmQgbGVzcyBmbGV4aWJsZSwgb3IgcmVxdWlyZXMgbW9yZSB1c2Vy
IGVmZm9ydCB0byBnZXQgdGhpcyBraW5kIG9mIGZsZXhpYmlsaXR5LgotCi1Bbm90aGVyIGludGVy
ZXN0aW5nIHRoaW5nIGFib3V0IGBBU1NFUlRfREVBVEhgIGlzIHRoYXQgaXQgY2FsbHMgYGZvcmso
KWAKLXRvIGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhp
cyBpcyBsaWdodGVuaW5nCi1mYXN0LCBhcyBgZm9yaygpYCB1c2VzIGNvcHktb24td3JpdGUgcGFn
ZXMgYW5kIGluY3VycyBhbG1vc3QgemVybwotb3ZlcmhlYWQsIGFuZCB0aGUgY2hpbGQgcHJvY2Vz
cyBzdGFydHMgZnJvbSB0aGUgdXNlci1zdXBwbGllZAotc3RhdGVtZW50IGRpcmVjdGx5LCBza2lw
cGluZyBhbGwgZ2xvYmFsIGFuZCBsb2NhbCBpbml0aWFsaXphdGlvbiBhbmQKLWFueSBjb2RlIGxl
YWRpbmcgdG8gdGhlIGdpdmVuIHN0YXRlbWVudC4gIElmIHlvdSBsYXVuY2ggdGhlIGNoaWxkCi1w
cm9jZXNzIGZyb20gc2NyYXRjaCwgaXQgY2FuIHRha2Ugc2Vjb25kcyBqdXN0IHRvIGxvYWQgZXZl
cnl0aGluZyBhbmQKLXN0YXJ0IHJ1bm5pbmcgaWYgdGhlIHRlc3QgbGlua3MgdG8gbWFueSBsaWJy
YXJpZXMgZHluYW1pY2FsbHkuCi0KLSMjIE15IGRlYXRoIHRlc3QgbW9kaWZpZXMgc29tZSBzdGF0
ZSwgYnV0IHRoZSBjaGFuZ2Ugc2VlbXMgbG9zdCBhZnRlciB0aGUgZGVhdGggdGVzdCBmaW5pc2hl
cy4gV2h5PyAjIwotCi1EZWF0aCB0ZXN0cyAoYEVYUEVDVF9ERUFUSGAsIGV0YykgYXJlIGV4ZWN1
dGVkIGluIGEgc3ViLXByb2Nlc3Mgcy50LiB0aGUKLWV4cGVjdGVkIGNyYXNoIHdvbid0IGtpbGwg
dGhlIHRlc3QgcHJvZ3JhbSAoaS5lLiB0aGUgcGFyZW50IHByb2Nlc3MpLiBBcyBhCi1yZXN1bHQs
IGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3RzIHRoZXkgaW5jdXIgYXJlIG9ic2VydmFibGUgaW4g
dGhlaXIKLXJlc3BlY3RpdmUgc3ViLXByb2Nlc3NlcywgYnV0IG5vdCBpbiB0aGUgcGFyZW50IHBy
b2Nlc3MuIFlvdSBjYW4gdGhpbmsgb2YgdGhlbQotYXMgcnVubmluZyBpbiBhIHBhcmFsbGVsIHVu
aXZlcnNlLCBtb3JlIG9yIGxlc3MuCi0KLSMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQg
InVuZGVmaW5lZCByZWZlcmVuY2VzIiB0byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFi
bGVzLCBidXQgSSBkaWQgZGVmaW5lIHRoZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9u
Zz8gIyMKLQotSWYgeW91ciBjbGFzcyBoYXMgYSBzdGF0aWMgZGF0YSBtZW1iZXI6Ci0KLWBgYCBj
cHAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSAgc3RhdGljIGNvbnN0IGludCBrQmFy
ID0gMTAwOwotfTsKLWBgYAotCi1Zb3UgYWxzbyBuZWVkIHRvIGRlZmluZSBpdCBfb3V0c2lkZV8g
b2YgdGhlIGNsYXNzIGJvZHkgaW4gYGZvby5jY2A6Ci0KLWBgYCBjcHAKLWNvbnN0IGludCBGb286
OmtCYXI7ICAvLyBObyBpbml0aWFsaXplciBoZXJlLgotYGBgCi0KLU90aGVyd2lzZSB5b3VyIGNv
ZGUgaXMgKippbnZhbGlkIEMrKyoqLCBhbmQgbWF5IGJyZWFrIGluIHVuZXhwZWN0ZWQgd2F5cy4g
SW4KLXBhcnRpY3VsYXIsIHVzaW5nIGl0IGluIEdvb2dsZSBUZXN0IGNvbXBhcmlzb24gYXNzZXJ0
aW9ucyAoYEVYUEVDVF9FUWAsIGV0YykKLXdpbGwgZ2VuZXJhdGUgYW4gInVuZGVmaW5lZCByZWZl
cmVuY2UiIGxpbmtlciBlcnJvci4KLQotIyMgSSBoYXZlIGFuIGludGVyZmFjZSB0aGF0IGhhcyBz
ZXZlcmFsIGltcGxlbWVudGF0aW9ucy4gQ2FuIEkgd3JpdGUgYSBzZXQgb2YgdGVzdHMgb25jZSBh
bmQgcmVwZWF0IHRoZW0gb3ZlciBhbGwgdGhlIGltcGxlbWVudGF0aW9ucz8gIyMKLQotR29vZ2xl
IFRlc3QgZG9lc24ndCB5ZXQgaGF2ZSBnb29kIHN1cHBvcnQgZm9yIHRoaXMga2luZCBvZiB0ZXN0
cywgb3IKLWRhdGEtZHJpdmVuIHRlc3RzIGluIGdlbmVyYWwuIFdlIGhvcGUgdG8gYmUgYWJsZSB0
byBtYWtlIGltcHJvdmVtZW50cyBpbiB0aGlzCi1hcmVhIHNvb24uCi0KLSMjIENhbiBJIGRlcml2
ZSBhIHRlc3QgZml4dHVyZSBmcm9tIGFub3RoZXI/ICMjCi0KLVllcy4KLQotRWFjaCB0ZXN0IGZp
eHR1cmUgaGFzIGEgY29ycmVzcG9uZGluZyBhbmQgc2FtZSBuYW1lZCB0ZXN0IGNhc2UuIFRoaXMg
bWVhbnMgb25seQotb25lIHRlc3QgY2FzZSBjYW4gdXNlIGEgcGFydGljdWxhciBmaXh0dXJlLiBT
b21ldGltZXMsIGhvd2V2ZXIsIG11bHRpcGxlIHRlc3QKLWNhc2VzIG1heSB3YW50IHRvIHVzZSB0
aGUgc2FtZSBvciBzbGlnaHRseSBkaWZmZXJlbnQgZml4dHVyZXMuIEZvciBleGFtcGxlLCB5b3UK
LW1heSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCBvZiBhIEdVSSBsaWJyYXJ5J3MgdGVzdCBj
YXNlcyBkb24ndCBsZWFrCi1pbXBvcnRhbnQgc3lzdGVtIHJlc291cmNlcyBsaWtlIGZvbnRzIGFu
ZCBicnVzaGVzLgotCi1JbiBHb29nbGUgVGVzdCwgeW91IHNoYXJlIGEgZml4dHVyZSBhbW9uZyB0
ZXN0IGNhc2VzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZAotbG9naWMgaW4gYSBiYXNlIHRlc3QgZml4
dHVyZSwgdGhlbiBkZXJpdmluZyBmcm9tIHRoYXQgYmFzZSBhIHNlcGFyYXRlIGZpeHR1cmUKLWZv
ciBlYWNoIHRlc3QgY2FzZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzIGNvbW1vbiBsb2dpYy4gWW91
IHRoZW4gdXNlIGBURVNUX0YoKWAKLXRvIHdyaXRlIHRlc3RzIHVzaW5nIGVhY2ggZGVyaXZlZCBm
aXh0dXJlLgotCi1UeXBpY2FsbHksIHlvdXIgY29kZSBsb29rcyBsaWtlIHRoaXM6Ci0KLWBgYCBj
cHAKLS8vIERlZmluZXMgYSBiYXNlIHRlc3QgZml4dHVyZS4KLWNsYXNzIEJhc2VUZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAgIC4uLgotfTsKLQotLy8gRGVy
aXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VUZXN0LgotY2xhc3MgRm9vVGVzdCA6IHB1
YmxpYyBCYXNlVGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
Ci0gICAgICBCYXNlVGVzdDo6U2V0VXAoKTsgIC8vIFNldHMgdXAgdGhlIGJhc2UgZml4dHVyZSBm
aXJzdC4KLSAgICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3JrIC4uLgotICAgIH0KLSAgICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgICAuLi4gY2xlYW4tdXAgd29yayBmb3IgRm9v
VGVzdCAuLi4KLSAgICAgIEJhc2VUZXN0OjpUZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVh
ciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEKLSAgICB9Ci0gICAgLi4uIGZ1bmN0aW9ucyBhbmQg
dmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgotfTsKLQotLy8gVGVzdHMgdGhhdCB1c2UgdGhlIGZp
eHR1cmUgRm9vVGVzdC4KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29U
ZXN0LCBCYXopIHsgLi4uIH0KLQotLi4uIGFkZGl0aW9uYWwgZml4dHVyZXMgZGVyaXZlZCBmcm9t
IEJhc2VUZXN0IC4uLgotYGBgCi0KLUlmIG5lY2Vzc2FyeSwgeW91IGNhbiBjb250aW51ZSB0byBk
ZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0dXJlLgotR29vZ2xlIFRlc3Qg
aGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkgY2FuIGJlLgotCi1Gb3IgYSBj
b21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2ZWQgdGVzdCBmaXh0dXJlcywgc2VlCi1bc2FtcGxl
NV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKS4KLQotIyMgTXkgY29tcGlsZXIgY29t
cGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlLiIgV2hhdCBk
b2VzIHRoaXMgbWVhbj8gIyMKLQotWW91J3JlIHByb2JhYmx5IHVzaW5nIGFuIGBBU1NFUlRfKigp
YCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYHZvaWRgLgotYEFTU0VSVF8qKClg
IGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRgIGZ1bmN0aW9ucy4KLQotIyMgTXkgZGVhdGggdGVz
dCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZpeCBpdD8gIyMKLQotSW4gR29vZ2xl
IFRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4gaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCB0aGUgd2F5
IHRoZXkgd29yayBpcwotZGVsaWNhdGUuIFRvIHdyaXRlIGRlYXRoIHRlc3RzIHlvdSByZWFsbHkg
bmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuCi1QbGVhc2UgbWFrZSBzdXJlIHlvdSBo
YXZlIHJlYWQgdGhpcy4KLQotSW4gcGFydGljdWxhciwgZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBo
YXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0aGUgcGFyZW50Ci1wcm9jZXNzLiBTbyB0aGUgZmly
c3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8gZWxpbWluYXRlIGNyZWF0aW5nIHRocmVhZHMKLW91
dHNpZGUgb2YgYEVYUEVDVF9ERUFUSCgpYC4KLQotU29tZXRpbWVzIHRoaXMgaXMgaW1wb3NzaWJs
ZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwotdGhyZWFkcyBi
ZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gdHJ5
IHRvIG1pbmltaXplCi10aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5nIGFz
IG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKLWBFWFBFQ1RfREVBVEgoKWAgKGlu
IHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUpLCBv
cgotbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3UgY2Fu
IHRyeSB0byBzZXQgdGhlIGRlYXRoCi10ZXN0IHN0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3aGlj
aCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgotCi1JZiB5b3UgZ28g
d2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVuIHRo
ZSB0ZXN0Ci1wcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4g
VGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCi1wcm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRlIHdp
dGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgotCi1JbiB0aGUgZW5kLCB0aGlzIGJvaWxz
IGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtlCi1z
dXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4geW91
ciBwcm9ncmFtLiBObyBzaWx2ZXIKLWJ1bGxldCAtIHNvcnJ5IQotCi0jIyBTaG91bGQgSSB1c2Ug
dGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBvciB0aGUgc2V0
LXVwL3RlYXItZG93biBmdW5jdGlvbj8gIyMKLQotVGhlIGZpcnN0IHRoaW5nIHRvIHJlbWVtYmVy
IGlzIHRoYXQgR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlCi1zYW1lIHRlc3QgZml4dHVy
ZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRlc3RzLiBGb3IgZWFjaCBgVEVTVF9GYCwKLUdvb2ds
ZSBUZXN0IHdpbGwgY3JlYXRlIGEgZnJlc2ggdGVzdCBmaXh0dXJlIG9iamVjdCwgX2ltbWVkaWF0
ZWx5XwotY2FsbCBgU2V0VXAoKWAsIHJ1biB0aGUgdGVzdCBib2R5LCBjYWxsIGBUZWFyRG93bigp
YCwgYW5kIHRoZW4KLV9pbW1lZGlhdGVseV8gZGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUgb2JqZWN0
LgotCi1XaGVuIHlvdSBuZWVkIHRvIHdyaXRlIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3du
IGxvZ2ljLCB5b3UgaGF2ZQotdGhlIGNob2ljZSBiZXR3ZWVuIHVzaW5nIHRoZSB0ZXN0IGZpeHR1
cmUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBvcgotYFNldFVwKCkvVGVhckRvd24oKWAuIFRoZSBm
b3JtZXIgaXMgdXN1YWxseSBwcmVmZXJyZWQsIGFzIGl0IGhhcyB0aGUKLWZvbGxvd2luZyBiZW5l
Zml0czoKLQotICAqIEJ5IGluaXRpYWxpemluZyBhIG1lbWJlciB2YXJpYWJsZSBpbiB0aGUgY29u
c3RydWN0b3IsIHdlIGhhdmUgdGhlIG9wdGlvbiB0byBtYWtlIGl0IGBjb25zdGAsIHdoaWNoIGhl
bHBzIHByZXZlbnQgYWNjaWRlbnRhbCBjaGFuZ2VzIHRvIGl0cyB2YWx1ZSBhbmQgbWFrZXMgdGhl
IHRlc3RzIG1vcmUgb2J2aW91c2x5IGNvcnJlY3QuCi0gICogSW4gY2FzZSB3ZSBuZWVkIHRvIHN1
YmNsYXNzIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIHRoZSBzdWJjbGFzcycgY29uc3RydWN0b3Ig
aXMgZ3VhcmFudGVlZCB0byBjYWxsIHRoZSBiYXNlIGNsYXNzJyBjb25zdHJ1Y3RvciBmaXJzdCwg
YW5kIHRoZSBzdWJjbGFzcycgZGVzdHJ1Y3RvciBpcyBndWFyYW50ZWVkIHRvIGNhbGwgdGhlIGJh
c2UgY2xhc3MnIGRlc3RydWN0b3IgYWZ0ZXJ3YXJkLiBXaXRoIGBTZXRVcCgpL1RlYXJEb3duKClg
LCBhIHN1YmNsYXNzIG1heSBtYWtlIHRoZSBtaXN0YWtlIG9mIGZvcmdldHRpbmcgdG8gY2FsbCB0
aGUgYmFzZSBjbGFzcycgYFNldFVwKCkvVGVhckRvd24oKWAgb3IgY2FsbCB0aGVtIGF0IHRoZSB3
cm9uZyBtb21lbnQuCi0KLVlvdSBtYXkgc3RpbGwgd2FudCB0byB1c2UgYFNldFVwKCkvVGVhckRv
d24oKWAgaW4gdGhlIGZvbGxvd2luZyByYXJlIGNhc2VzOgotICAqIElmIHRoZSB0ZWFyLWRvd24g
b3BlcmF0aW9uIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiwgeW91IG11c3QgdXNlIGBUZWFyRG93
bigpYCBhcyBvcHBvc2VkIHRvIHRoZSBkZXN0cnVjdG9yLCBhcyB0aHJvd2luZyBpbiBhIGRlc3Ry
dWN0b3IgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB1c3VhbGx5IHdpbGwga2lsbCB5
b3VyIHByb2dyYW0gcmlnaHQgYXdheS4gTm90ZSB0aGF0IG1hbnkgc3RhbmRhcmQgbGlicmFyaWVz
IChsaWtlIFNUTCkgbWF5IHRocm93IHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUg
Y29tcGlsZXIuIFRoZXJlZm9yZSB5b3Ugc2hvdWxkIHByZWZlciBgVGVhckRvd24oKWAgaWYgeW91
IHdhbnQgdG8gd3JpdGUgcG9ydGFibGUgdGVzdHMgdGhhdCB3b3JrIHdpdGggb3Igd2l0aG91dCBl
eGNlcHRpb25zLgotICAqIFRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IGFuIGV4Y2VwdGlvbiB3
aGVuIGZsYWcgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgaXMgc3BlY2lmaWVkLiBUaGVyZWZv
cmUsIHlvdSBzaG91bGRuJ3QgdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYSBkZXN0cnVj
dG9yIGlmIHlvdSBwbGFuIHRvIHJ1biB5b3VyIHRlc3RzIHdpdGggdGhpcyBmbGFnLgotICAqIElu
IGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBm
dW5jdGlvbiBjYWxsIG9uIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEgbWV0aG9kIGRlY2xh
cmVkIGFzIHZpcnR1YWwsIGJ1dCBpdCB3aWxsIGJlIHN0YXRpY2FsbHkgYm91bmQuKSBUaGVyZWZv
cmUsIGlmIHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3aWxsIGJlIG92ZXJyaWRlbiBp
biBhIGRlcml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYC4K
LQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2Fs
bCIgd2hlbiBJIHVzZSBBU1NFUlRcX1BSRURuLiBIb3cgZG8gSSBmaXggaXQ/ICMjCi0KLUlmIHRo
ZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNU
X1BSRUQqYCBpcwotb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0aGUgY29tcGlsZXIgd2lsbCBo
YXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCi1vdmVybG9hZGVkIHZlcnNpb24gaXQgc2hv
dWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAotYEVYUEVDVF9QUkVEX0ZPUk1BVCpg
IGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgotCi1JZiB5b3Ugc2VlIHRoaXMgZXJyb3IsIHlvdSBt
aWdodCB3YW50IHRvIHN3aXRjaCB0bwotYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgLCB3
aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVyZQotbWVzc2FnZS4gSWYsIGhv
d2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVt
IGJ5Ci1leHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24gdG8gcGlj
ay4KLQotRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKLQotYGBgIGNwcAotYm9vbCBJc1Bv
c2l0aXZlKGludCBuKSB7Ci0gIHJldHVybiBuID4gMDsKLX0KLWJvb2wgSXNQb3NpdGl2ZShkb3Vi
bGUgeCkgewotICByZXR1cm4geCA+IDA7Ci19Ci1gYGAKLQoteW91IHdpbGwgZ2V0IGEgY29tcGls
ZXIgZXJyb3IgaWYgeW91IHdyaXRlCi0KLWBgYCBjcHAKLUVYUEVDVF9QUkVEMShJc1Bvc2l0aXZl
LCA1KTsKLWBgYAotCi1Ib3dldmVyLCB0aGlzIHdpbGwgd29yazoKLQotYGBgIGNwcAotRVhQRUNU
X1BSRUQxKCpzdGF0aWNfY2FzdDxib29sICgqKShpbnQpPiooSXNQb3NpdGl2ZSksIDUpOwotYGBg
Ci0KLShUaGUgc3R1ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBgc3RhdGlj
X2Nhc3RgIG9wZXJhdG9yIGlzIHRoZQotdHlwZSBvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3Ig
dGhlIGBpbnRgLXZlcnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQotCi1BcyBhbm90aGVyIGV4YW1w
bGUsIHdoZW4geW91IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgotCi1gYGAgY3BwCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWJvb2wgSXNOZWdhdGl2ZShUIHgpIHsKLSAgcmV0dXJuIHggPCAwOwot
fQotYGBgCi0KLXlvdSBjYW4gdXNlIGl0IGluIGEgcHJlZGljYXRlIGFzc2VydGlvbiBsaWtlIHRo
aXM6Ci0KLWBgYCBjcHAKLUFTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOwotYGBg
Ci0KLVRoaW5ncyBhcmUgbW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3Jl
IHRoYW4gb25lIHBhcmFtZXRlcnMuIFRoZQotZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6Ci0KLWBg
YCBjcHAKLUFTU0VSVF9QUkVEMigqR3JlYXRlclRoYW48aW50LCBpbnQ+KiwgNSwgMCk7Ci1gYGAK
LQotCi1hcyB0aGUgQysrIHByZS1wcm9jZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NF
UlRfUFJFRDJgIDQgYXJndW1lbnRzLAotd2hpY2ggaXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4g
VGhlIHdvcmthcm91bmQgaXMgdG8gd3JhcCB0aGUgcHJlZGljYXRlCi1mdW5jdGlvbiBpbiBwYXJl
bnRoZXNlczoKLQotYGBgIGNwcAotQVNTRVJUX1BSRUQyKCooR3JlYXRlclRoYW48aW50LCBpbnQ+
KSosIDUsIDApOwotYGBgCi0KLQotIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJpZ25v
cmluZyByZXR1cm4gdmFsdWUiIHdoZW4gSSBjYWxsIFJVTlxfQUxMXF9URVNUUygpLiBXaHk/ICMj
Ci0KLVNvbWUgcGVvcGxlIGhhZCBiZWVuIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJV
Tl9BTExfVEVTVFMoKWAuIFRoYXQgaXMsCi1pbnN0ZWFkIG9mCi0KLWBgYCBjcHAKLXJldHVybiBS
VU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotdGhleSB3cml0ZQotCi1gYGAgY3BwCi1SVU5fQUxMX1RF
U1RTKCk7Ci1gYGAKLQotVGhpcyBpcyB3cm9uZyBhbmQgZGFuZ2Vyb3VzLiBBIHRlc3QgcnVubmVy
IG5lZWRzIHRvIHNlZSB0aGUgcmV0dXJuIHZhbHVlIG9mCi1gUlVOX0FMTF9URVNUUygpYCBpbiBv
cmRlciB0byBkZXRlcm1pbmUgaWYgYSB0ZXN0IGhhcyBwYXNzZWQuIElmIHlvdXIgYG1haW4oKWAK
LWZ1bmN0aW9uIGlnbm9yZXMgaXQsIHlvdXIgdGVzdCB3aWxsIGJlIGNvbnNpZGVyZWQgc3VjY2Vz
c2Z1bCBldmVuIGlmIGl0IGhhcyBhCi1Hb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVy
eSBiYWQuCi0KLVRvIGhlbHAgdGhlIHVzZXJzIGF2b2lkIHRoaXMgZGFuZ2Vyb3VzIGJ1ZywgdGhl
IGltcGxlbWVudGF0aW9uIG9mCi1gUlVOX0FMTF9URVNUUygpYCBjYXVzZXMgZ2NjIHRvIHJhaXNl
IHRoaXMgd2FybmluZywgd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzCi1pZ25vcmVkLiBJZiB5b3Ug
c2VlIHRoaXMgd2FybmluZywgdGhlIGZpeCBpcyBzaW1wbGU6IGp1c3QgbWFrZSBzdXJlIGl0cyB2
YWx1ZQotaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtYWluKClgLgotCi0jIyBNeSBj
b21waWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSBjYW5u
b3QgcmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8gIyMKLQotRHVlIHRvIGEgcGVjdWxp
YXJpdHkgb2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzeW50YXggZm9yIHN0cmVhbWlu
ZwotbWVzc2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgotCi1gYGAgY3BwCi1BU1NFUlRfRVEo
MSwgRm9vKCkpIDw8ICJibGFoIGJsYWgiIDw8IGZvbzsKLWBgYAotCi13ZSBoYWQgdG8gZ2l2ZSB1
cCB1c2luZyBgQVNTRVJUKmAgYW5kIGBGQUlMKmAgKGJ1dCBub3QgYEVYUEVDVCpgIGFuZAotYEFE
RF9GQUlMVVJFKmApIGluIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuIFRoZSB3b3JrYXJv
dW5kIGlzIHRvIG1vdmUgdGhlCi1jb250ZW50IG9mIHlvdXIgY29uc3RydWN0b3IvZGVzdHJ1Y3Rv
ciB0byBhIHByaXZhdGUgdm9pZCBtZW1iZXIgZnVuY3Rpb24sIG9yCi1zd2l0Y2ggdG8gYEVYUEVD
VF8qKClgIGlmIHRoYXQgd29ya3MuIFRoaXMgc2VjdGlvbiBpbiB0aGUgdXNlcidzIGd1aWRlIGV4
cGxhaW5zCi1pdC4KLQotIyMgTXkgc2V0LXVwIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuIFdoeT8g
IyMKLQotQysrIGlzIGNhc2Utc2Vuc2l0aXZlLiBJdCBzaG91bGQgYmUgc3BlbGxlZCBhcyBgU2V0
VXAoKWAuICBEaWQgeW91Ci1zcGVsbCBpdCBhcyBgU2V0dXAoKWA/Ci0KLVNpbWlsYXJseSwgc29t
ZXRpbWVzIHBlb3BsZSBzcGVsbCBgU2V0VXBUZXN0Q2FzZSgpYCBhcyBgU2V0dXBUZXN0Q2FzZSgp
YCBhbmQKLXdvbmRlciB3aHkgaXQncyBuZXZlciBjYWxsZWQuCi0KLSMjIEhvdyBkbyBJIGp1bXAg
dG8gdGhlIGxpbmUgb2YgYSBmYWlsdXJlIGluIEVtYWNzIGRpcmVjdGx5PyAjIwotCi1Hb29nbGUg
VGVzdCdzIGZhaWx1cmUgbWVzc2FnZSBmb3JtYXQgaXMgdW5kZXJzdG9vZCBieSBFbWFjcyBhbmQg
bWFueSBvdGhlcgotSURFcywgbGlrZSBhY21lIGFuZCBYQ29kZS4gSWYgYSBHb29nbGUgVGVzdCBt
ZXNzYWdlIGlzIGluIGEgY29tcGlsYXRpb24gYnVmZmVyCi1pbiBFbWFjcywgdGhlbiBpdCdzIGNs
aWNrYWJsZS4gWW91IGNhbiBub3cgaGl0IGBlbnRlcmAgb24gYSBtZXNzYWdlIHRvIGp1bXAgdG8K
LXRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCBvciB1c2UgYEMteCBgYCB0byBqdW1wIHRv
IHRoZSBuZXh0IGZhaWx1cmUuCi0KLSMjIEkgaGF2ZSBzZXZlcmFsIHRlc3QgY2FzZXMgd2hpY2gg
c2hhcmUgdGhlIHNhbWUgdGVzdCBmaXh0dXJlIGxvZ2ljLCBkbyBJIGhhdmUgdG8gZGVmaW5lIGEg
bmV3IHRlc3QgZml4dHVyZSBjbGFzcyBmb3IgZWFjaCBvZiB0aGVtPyBUaGlzIHNlZW1zIHByZXR0
eSB0ZWRpb3VzLiAjIwotCi1Zb3UgZG9uJ3QgaGF2ZSB0by4gSW5zdGVhZCBvZgotCi1gYGAgY3Bw
Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OwotCi1URVNUX0YoRm9vVGVzdCwg
QWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9Ci0KLWNsYXNzIEJhclRl
c3QgOiBwdWJsaWMgQmFzZVRlc3Qge307Ci0KLVRFU1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0K
LVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KLWBgYAotCi15b3UgY2FuIHNpbXBseSBgdHlw
ZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6Ci1gYGAgY3BwCi10eXBlZGVmIEJhc2VUZXN0IEZvb1Rl
c3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBEZWYp
IHsgLi4uIH0KLQotdHlwZWRlZiBCYXNlVGVzdCBCYXJUZXN0OwotCi1URVNUX0YoQmFyVGVzdCwg
QWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9Ci1gYGAKLQotIyMgVGhl
IEdvb2dsZSBUZXN0IG91dHB1dCBpcyBidXJpZWQgaW4gYSB3aG9sZSBidW5jaCBvZiBsb2cgbWVz
c2FnZXMuIFdoYXQgZG8gSSBkbz8gIyMKLQotVGhlIEdvb2dsZSBUZXN0IG91dHB1dCBpcyBtZWFu
dCB0byBiZSBhIGNvbmNpc2UgYW5kIGh1bWFuLWZyaWVuZGx5IHJlcG9ydC4gSWYKLXlvdXIgdGVz
dCBnZW5lcmF0ZXMgdGV4dHVhbCBvdXRwdXQgaXRzZWxmLCBpdCB3aWxsIG1peCB3aXRoIHRoZSBH
b29nbGUgVGVzdAotb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dldmVyLCB0aGVy
ZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKLXByb2JsZW0uCi0KLVNpbmNlIG1vc3QgbG9n
IG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgR29vZ2xlIFRlc3Qgb3V0
cHV0IGdvCi10byBzdGRvdXQuIFRoaXMgd2F5LCB5b3UgY2FuIGVhc2lseSBzZXBhcmF0ZSB0aGUg
dHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKLWV4YW1wbGU6Ci1gYGAKLS4vbXlfdGVzdCA+IGdv
b2dsZXRlc3Rfb3V0cHV0LnR4dAotYGBgCi0KLSMjIFdoeSBzaG91bGQgSSBwcmVmZXIgdGVzdCBm
aXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/ICMjCi0KLVRoZXJlIGFyZSBzZXZlcmFsIGdv
b2QgcmVhc29uczoKLSAgMS4gSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5nZSB0
aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIG1ha2VzIGl0IGRpZmZpY3Vs
dCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVzY2FwaW5nIG9uZSB0ZXN0IGFuZCBjb250YW1p
bmF0aW5nIG90aGVycywgbWFraW5nIGRlYnVnZ2luZyBkaWZmaWN1bHQuIEJ5IHVzaW5nIGZpeHR1
cmVzLCBlYWNoIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlhYmxlcyB0aGF0J3MgZGlmZmVy
ZW50IChidXQgd2l0aCB0aGUgc2FtZSBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBrZXB0IGluZGVw
ZW5kZW50IG9mIGVhY2ggb3RoZXIuCi0gIDEuIEdsb2JhbCB2YXJpYWJsZXMgcG9sbHV0ZSB0aGUg
Z2xvYmFsIG5hbWVzcGFjZS4KLSAgMS4gVGVzdCBmaXh0dXJlcyBjYW4gYmUgcmV1c2VkIHZpYSBz
dWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFzaWx5IHdpdGggZ2xvYmFsIHZhcmlh
Ymxlcy4gVGhpcyBpcyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29tZXRoaW5nIGlu
IGNvbW1vbi4KLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIG1lbWJlcnMgd2l0aG91
dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKLQotWW91IHNob3VsZCB0cnkgdG8gd3JpdGUg
dGVzdGFibGUgY29kZSwgd2hpY2ggbWVhbnMgY2xhc3NlcyBzaG91bGQgYmUgZWFzaWx5Ci10ZXN0
ZWQgZnJvbSB0aGVpciBwdWJsaWMgaW50ZXJmYWNlLiBPbmUgd2F5IHRvIGFjaGlldmUgdGhpcyBp
cyB0aGUgUGltcGwgaWRpb206Ci15b3UgbW92ZSBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xh
c3MgaW50byBhIGhlbHBlciBjbGFzcywgYW5kIG1ha2UgYWxsCi1tZW1iZXJzIG9mIHRoZSBoZWxw
ZXIgY2xhc3MgcHVibGljLgotCi1Zb3UgaGF2ZSBzZXZlcmFsIG90aGVyIG9wdGlvbnMgdGhhdCBk
b24ndCByZXF1aXJlIHVzaW5nIGBGUklFTkRfVEVTVGA6Ci0gICogV3JpdGUgdGhlIHRlc3RzIGFz
IG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3M6Ci1gYGAgY3BwCi1jbGFzcyBGb28gewotICBm
cmllbmQgY2xhc3MgRm9vVGVzdDsKLSAgLi4uCi19OwotCi1jbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLSAgdm9pZCBUZXN0MSgpIHsu
Li59IC8vIFRoaXMgYWNjZXNzZXMgcHJpdmF0ZSBtZW1iZXJzIG9mIGNsYXNzIEZvby4KLSAgdm9p
ZCBUZXN0MigpIHsuLi59IC8vIFNvIGRvZXMgdGhpcyBvbmUuCi19OwotCi1URVNUX0YoRm9vVGVz
dCwgVGVzdDEpIHsKLSAgVGVzdDEoKTsKLX0KLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7Ci0g
IFRlc3QyKCk7Ci19Ci1gYGAKLSAgKiBJbiB0aGUgZml4dHVyZSBjbGFzcywgd3JpdGUgYWNjZXNz
b3JzIGZvciB0aGUgdGVzdGVkIGNsYXNzJyBwcml2YXRlIG1lbWJlcnMsIHRoZW4gdXNlIHRoZSBh
Y2Nlc3NvcnMgaW4geW91ciB0ZXN0czoKLWBgYCBjcHAKLWNsYXNzIEZvbyB7Ci0gIGZyaWVuZCBj
bGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICBUMSBnZXRfcHJpdmF0ZV9tZW1iZXIx
KEZvbyogb2JqKSB7Ci0gICAgcmV0dXJuIG9iai0+cHJpdmF0ZV9tZW1iZXIxXzsKLSAgfQotfTsK
LQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLgotICBnZXRfcHJpdmF0ZV9tZW1iZXIx
KHgpCi0gIC4uLgotfQotYGBgCi0gICogSWYgdGhlIG1ldGhvZHMgYXJlIGRlY2xhcmVkICoqcHJv
dGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFjY2VzcyBsZXZlbCBpbiBhIHRlc3Qtb25s
eSBzdWJjbGFzczoKLWBgYCBjcHAKLWNsYXNzIFlvdXJDbGFzcyB7Ci0gIC4uLgotIHByb3RlY3Rl
ZDogLy8gcHJvdGVjdGVkIGFjY2VzcyBmb3IgdGVzdGFiaWxpdHkuCi0gIGludCBEb1NvbWV0aGlu
Z1JldHVybmluZ0ludCgpOwotICAuLi4KLX07Ci0KLS8vIGluIHRoZSB5b3VyX2NsYXNzX3Rlc3Qu
Y2MgZmlsZToKLWNsYXNzIFRlc3RhYmxlWW91ckNsYXNzIDogcHVibGljIFlvdXJDbGFzcyB7Ci0g
IC4uLgotIHB1YmxpYzogdXNpbmcgWW91ckNsYXNzOjpEb1NvbWV0aGluZ1JldHVybmluZ0ludDsg
Ly8gY2hhbmdlcyBhY2Nlc3MgcmlnaHRzCi0gIC4uLgotfTsKLQotVEVTVF9GKFlvdXJDbGFzc1Rl
c3QsIERvU29tZXRoaW5nVGVzdCkgewotICBUZXN0YWJsZVlvdXJDbGFzcyBvYmo7Ci0gIGFzc2Vy
dEVxdWFscyhleHBlY3RlZF92YWx1ZSwgb2JqLkRvU29tZXRoaW5nUmV0dXJuaW5nSW50KCkpOwot
fQotYGBgCi0KLSMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBzdGF0aWMgbWVtYmVycyB3
aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1XZSBmaW5kIHByaXZhdGUgc3Rh
dGljIG1ldGhvZHMgY2x1dHRlciB0aGUgaGVhZGVyIGZpbGUuICBUaGV5IGFyZQotaW1wbGVtZW50
YXRpb24gZGV0YWlscyBhbmQgaWRlYWxseSBzaG91bGQgYmUga2VwdCBvdXQgb2YgYSAuaC4gU28g
b2Z0ZW4gSSBtYWtlCi10aGVtIGZyZWUgZnVuY3Rpb25zIGluc3RlYWQuCi0KLUluc3RlYWQgb2Y6
Ci1gYGAgY3BwCi0vLyBmb28uaAotY2xhc3MgRm9vIHsKLSAgLi4uCi0gcHJpdmF0ZToKLSAgc3Rh
dGljIGJvb2wgRnVuYyhpbnQgbik7Ci19OwotCi0vLyBmb28uY2MKLWJvb2wgRm9vOjpGdW5jKGlu
dCBuKSB7IC4uLiB9Ci0KLS8vIGZvb190ZXN0LmNjCi1FWFBFQ1RfVFJVRShGb286OkZ1bmMoMTIz
NDUpKTsKLWBgYAotCi1Zb3UgcHJvYmFibHkgc2hvdWxkIGJldHRlciB3cml0ZToKLWBgYCBjcHAK
LS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLX07Ci0KLS8vIGZvby5jYwotbmFtZXNwYWNl
IGludGVybmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Ci19Ci0KLS8vIGZvb190ZXN0
LmNjCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotICBib29sIEZ1bmMoaW50IG4pOwotfQotCi1FWFBF
Q1RfVFJVRShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOwotYGBgCi0KLSMjIEkgd291bGQgbGlrZSB0
byBydW4gYSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycy4gRG8g
SSBuZWVkIHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/ICMjCi0KLU5vLiBZ
b3UgY2FuIHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXShB
ZHZhbmNlZEd1aWRlLm1kI1ZhbHVlX1BhcmFtZXRlcml6ZWRfVGVzdHMpIHdoaWNoCi1sZXRzIHlv
dSByZXBlYXQgeW91ciB0ZXN0cyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLCB3aXRob3V0IGRl
ZmluaW5nIGl0IG1vcmUgdGhhbiBvbmNlLgotCi0jIyBIb3cgZG8gSSB0ZXN0IGEgZmlsZSB0aGF0
IGRlZmluZXMgbWFpbigpPyAjIwotCi1UbyB0ZXN0IGEgYGZvby5jY2AgZmlsZSwgeW91IG5lZWQg
dG8gY29tcGlsZSBhbmQgbGluayBpdCBpbnRvIHlvdXIgdW5pdCB0ZXN0Ci1wcm9ncmFtLiBIb3dl
dmVyLCB3aGVuIHRoZSBmaWxlIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGBtYWluKClg
Ci1mdW5jdGlvbiwgaXQgd2lsbCBjbGFzaCB3aXRoIHRoZSBgbWFpbigpYCBvZiB5b3VyIHVuaXQg
dGVzdCwgYW5kIHdpbGwgcmVzdWx0IGluCi1hIGJ1aWxkIGVycm9yLgotCi1UaGUgcmlnaHQgc29s
dXRpb24gaXMgdG8gc3BsaXQgaXQgaW50byB0aHJlZSBmaWxlczoKLSAgMS4gYGZvby5oYCB3aGlj
aCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zLAotICAxLiBgZm9vLmNjYCB3aGljaCBjb250YWlu
cyB0aGUgZGVmaW5pdGlvbnMgZXhjZXB0IGBtYWluKClgLCBhbmQKLSAgMS4gYGZvb19tYWluLmNj
YCB3aGljaCBjb250YWlucyBub3RoaW5nIGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiBgbWFpbigpYC4K
LQotVGhlbiBgZm9vLmNjYCBjYW4gYmUgZWFzaWx5IHRlc3RlZC4KLQotSWYgeW91IGFyZSBhZGRp
bmcgdGVzdHMgdG8gYW4gZXhpc3RpbmcgZmlsZSBhbmQgZG9uJ3Qgd2FudCBhbiBpbnRydXNpdmUg
Y2hhbmdlCi1saWtlIHRoaXMsIHRoZXJlIGlzIGEgaGFjazoganVzdCBpbmNsdWRlIHRoZSBlbnRp
cmUgYGZvby5jY2AgZmlsZSBpbiB5b3VyIHVuaXQKLXRlc3QuIEZvciBleGFtcGxlOgotYGBgIGNw
cAotLy8gRmlsZSBmb29fdW5pdHRlc3QuY2MKLQotLy8gVGhlIGhlYWRlcnMgc2VjdGlvbgotLi4u
Ci0KLS8vIFJlbmFtZXMgbWFpbigpIGluIGZvby5jYyB0byBtYWtlIHJvb20gZm9yIHRoZSB1bml0
IHRlc3QgbWFpbigpCi0jZGVmaW5lIG1haW4gRm9vTWFpbgotCi0jaW5jbHVkZSAiYS9iL2Zvby5j
YyIKLQotLy8gVGhlIHRlc3RzIHN0YXJ0IGhlcmUuCi0uLi4KLWBgYAotCi0KLUhvd2V2ZXIsIHBs
ZWFzZSByZW1lbWJlciB0aGlzIGlzIGEgaGFjayBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyB0
aGUgbGFzdAotcmVzb3J0LgotCi0jIyBXaGF0IGNhbiB0aGUgc3RhdGVtZW50IGFyZ3VtZW50IGlu
IEFTU0VSVFxfREVBVEgoKSBiZT8gIyMKLQotYEFTU0VSVF9ERUFUSChfc3RhdGVtZW50XywgX3Jl
Z2V4XylgIChvciBhbnkgZGVhdGggYXNzZXJ0aW9uIG1hY3JvKSBjYW4gYmUgdXNlZAotd2hlcmV2
ZXIgYF9zdGF0ZW1lbnRfYCBpcyB2YWxpZC4gU28gYmFzaWNhbGx5IGBfc3RhdGVtZW50X2AgY2Fu
IGJlIGFueSBDKysKLXN0YXRlbWVudCB0aGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjdXJyZW50IGNv
bnRleHQuIEluIHBhcnRpY3VsYXIsIGl0IGNhbgotcmVmZXJlbmNlIGdsb2JhbCBhbmQvb3IgbG9j
YWwgdmFyaWFibGVzLCBhbmQgY2FuIGJlOgotICAqIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwgKG9m
dGVuIHRoZSBjYXNlKSwKLSAgKiBhIGNvbXBsZXggZXhwcmVzc2lvbiwgb3IKLSAgKiBhIGNvbXBv
dW5kIHN0YXRlbWVudC4KLQotU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVyZToKLQotYGBgIGNw
cAotLy8gQSBkZWF0aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgotVEVTVChN
eURlYXRoVGVzdCwgRnVuY3Rpb25DYWxsKSB7Ci0gIEFTU0VSVF9ERUFUSChYeXooNSksICJYeXog
ZmFpbGVkIik7Ci19Ci0KLS8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVmZXJlbmNl
cyB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBsZXhFeHBy
ZXNzaW9uKSB7Ci0gIGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOwotICBBU1NFUlRfREVBVEgo
KGMgPyBGdW5jMSgwKSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAotICAgICAgICAgICAgICAg
IihGdW5jMXxNZXRob2QpIGZhaWxlZCIpOwotfQotCi0vLyBEZWF0aCBhc3NlcnRpb25zIGNhbiBi
ZSB1c2VkIGFueSB3aGVyZSBpbiBhIGZ1bmN0aW9uLiBJbgotLy8gcGFydGljdWxhciwgdGhleSBj
YW4gYmUgaW5zaWRlIGEgbG9vcC4KLVRFU1QoTXlEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKLSAg
Ly8gVmVyaWZpZXMgdGhhdCBGb28oMCksIEZvbygxKSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUu
Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIX00oRm9v
KGkpLCAiRm9vIGhhcyBcXGQrIGVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5n
OjpNZXNzYWdlKCkgPDwgIndoZXJlIGkgaXMgIiA8PCBpKTsKLSAgfQotfQotCi0vLyBBIGRlYXRo
IGFzc2VydGlvbiBjYW4gY29udGFpbiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KLVRFU1QoTXlEZWF0
aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Ci0gIC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ug
b25lIG9mIEJhcigwKSwgQmFyKDEpLCAuLi4sIGFuZAotICAvLyBCYXIoNCkgZGllcy4KLSAgQVNT
RVJUX0RFQVRIKHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewotICAgICAgQmFy
KGkpOwotICAgIH0KLSAgfSwKLSAgIkJhciBoYXMgXFxkKyBlcnJvcnMiKTt9Ci1gYGAKLQotYGdv
b2dsZXRlc3RfdW5pdHRlc3QuY2NgIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91IGFyZSBp
bnRlcmVzdGVkLgotCi0jIyBXaGF0IHN5bnRheCBkb2VzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24g
aW4gQVNTRVJUXF9ERUFUSCB1c2U/ICMjCi0KLU9uIFBPU0lYIHN5c3RlbXMsIEdvb2dsZSBUZXN0
IHVzZXMgdGhlIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIKLWV4cHJlc3Npb24gc3ludGF4Ci0oaHR0
cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5k
ZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCi1PbiBXaW5kb3dzLCBpdCB1c2VzIGEgbGltaXRlZCB2
YXJpYW50IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbgotc3ludGF4LiBGb3IgbW9yZSBkZXRhaWxzLCBz
ZWUgdGhlCi1bcmVndWxhciBleHByZXNzaW9uIHN5bnRheF0oQWR2YW5jZWRHdWlkZS5tZCNSZWd1
bGFyX0V4cHJlc3Npb25fU3ludGF4KS4KLQotIyMgSSBoYXZlIGEgZml4dHVyZSBjbGFzcyBGb28s
IGJ1dCBURVNUXF9GKEZvbywgQmFyKSBnaXZlcyBtZSBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rp
b24gZm9yIGNhbGwgdG8gRm9vOjpGb28oKSIuIFdoeT8gIyMKLQotR29vZ2xlIFRlc3QgbmVlZHMg
dG8gYmUgYWJsZSB0byBjcmVhdGUgb2JqZWN0cyBvZiB5b3VyIHRlc3QgZml4dHVyZSBjbGFzcywg
c28KLWl0IG11c3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuIE5vcm1hbGx5IHRoZSBjb21w
aWxlciB3aWxsIGRlZmluZSBvbmUgZm9yCi15b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBjYXNlcyB3
aGVyZSB5b3UgaGF2ZSB0byBkZWZpbmUgeW91ciBvd246Ci0gICogSWYgeW91IGV4cGxpY2l0bHkg
ZGVjbGFyZSBhIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBjbGFzcyBgRm9vYCwgdGhlbiB5
b3UgbmVlZCB0byBkZWZpbmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLCBldmVuIGlmIGl0IHdvdWxk
IGJlIGVtcHR5LgotICAqIElmIGBGb29gIGhhcyBhIGNvbnN0IG5vbi1zdGF0aWMgZGF0YSBtZW1i
ZXIsIHRoZW4geW91IGhhdmUgdG8gZGVmaW5lIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIF9hbmRf
IGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlciBpbiB0aGUgaW5pdGlhbGl6ZXIgbGlzdCBvZiB0
aGUgY29uc3RydWN0b3IuIChFYXJseSB2ZXJzaW9ucyBvZiBgZ2NjYCBkb2Vzbid0IGZvcmNlIHlv
dSB0byBpbml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIuIEl0J3MgYSBidWcgdGhhdCBoYXMgYmVl
biBmaXhlZCBpbiBgZ2NjIDRgLikKLQotIyMgV2h5IGRvZXMgQVNTRVJUXF9ERUFUSCBjb21wbGFp
biBhYm91dCBwcmV2aW91cyB0aHJlYWRzIHRoYXQgd2VyZSBhbHJlYWR5IGpvaW5lZD8gIyMKLQot
V2l0aCB0aGUgTGludXggcHRocmVhZCBsaWJyYXJ5LCB0aGVyZSBpcyBubyB0dXJuaW5nIGJhY2sg
b25jZSB5b3UgY3Jvc3MgdGhlCi1saW5lIGZyb20gc2luZ2xlIHRocmVhZCB0byBtdWx0aXBsZSB0
aHJlYWRzLiBUaGUgZmlyc3QgdGltZSB5b3UgY3JlYXRlIGEKLXRocmVhZCwgYSBtYW5hZ2VyIHRo
cmVhZCBpcyBjcmVhdGVkIGluIGFkZGl0aW9uLCBzbyB5b3UgZ2V0IDMsIG5vdCAyLCB0aHJlYWRz
LgotTGF0ZXIgd2hlbiB0aGUgdGhyZWFkIHlvdSBjcmVhdGUgam9pbnMgdGhlIG1haW4gdGhyZWFk
LCB0aGUgdGhyZWFkIGNvdW50Ci1kZWNyZW1lbnRzIGJ5IDEsIGJ1dCB0aGUgbWFuYWdlciB0aHJl
YWQgd2lsbCBuZXZlciBiZSBraWxsZWQsIHNvIHlvdSBzdGlsbCBoYXZlCi0yIHRocmVhZHMsIHdo
aWNoIG1lYW5zIHlvdSBjYW5ub3Qgc2FmZWx5IHJ1biBhIGRlYXRoIHRlc3QuCi0KLVRoZSBuZXcg
TlBUTCB0aHJlYWQgbGlicmFyeSBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoaXMgcHJvYmxlbSwgYXMg
aXQgZG9lc24ndAotY3JlYXRlIGEgbWFuYWdlciB0aHJlYWQuIEhvd2V2ZXIsIGlmIHlvdSBkb24n
dCBjb250cm9sIHdoaWNoIG1hY2hpbmUgeW91ciB0ZXN0Ci1ydW5zIG9uLCB5b3Ugc2hvdWxkbid0
IGRlcGVuZCBvbiB0aGlzLgotCi0jIyBXaHkgZG9lcyBHb29nbGUgVGVzdCByZXF1aXJlIHRoZSBl
bnRpcmUgdGVzdCBjYXNlLCBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgdGVzdHMsIHRvIGJlIG5hbWVk
IEZPT0RlYXRoVGVzdCB3aGVuIGl0IHVzZXMgQVNTRVJUXF9ERUFUSD8gIyMKLQotR29vZ2xlIFRl
c3QgZG9lcyBub3QgaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLiBU
aGF0IGlzLCBpdAotcnVucyBhbGwgdGVzdHMgaW4gb25lIHRlc3QgY2FzZSBmaXJzdCwgYW5kIHRo
ZW4gcnVucyBhbGwgdGVzdHMgaW4gdGhlIG5leHQgdGVzdAotY2FzZSwgYW5kIHNvIG9uLiBHb29n
bGUgVGVzdCBkb2VzIHRoaXMgYmVjYXVzZSBpdCBuZWVkcyB0byBzZXQgdXAgYSB0ZXN0IGNhc2UK
LWJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiBpdCBpcyBydW4sIGFuZCB0ZWFyIGl0IGRvd24gYWZ0
ZXJ3b3Jkcy4gU3BsaXR0aW5nIHVwCi10aGUgdGVzdCBjYXNlIHdvdWxkIHJlcXVpcmUgbXVsdGlw
bGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gcHJvY2Vzc2VzLCB3aGljaCBpcwotaW5lZmZpY2llbnQg
YW5kIG1ha2VzIHRoZSBzZW1hbnRpY3MgdW5jbGVhbi4KLQotSWYgd2Ugd2VyZSB0byBkZXRlcm1p
bmUgdGhlIG9yZGVyIG9mIHRlc3RzIGJhc2VkIG9uIHRlc3QgbmFtZSBpbnN0ZWFkIG9mIHRlc3QK
LWNhc2UgbmFtZSwgdGhlbiB3ZSB3b3VsZCBoYXZlIGEgcHJvYmxlbSB3aXRoIHRoZSBmb2xsb3dp
bmcgc2l0dWF0aW9uOgotCi1gYGAgY3BwCi1URVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhUZXN0KSB7
IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9Ci0KLVRFU1RfRihCYXJUZXN0LCBE
ZWZEZWF0aFRlc3QpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0KLWBgYAot
Ci1TaW5jZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUgYEJhclRl
c3QuWHl6YCwgYW5kIHdlIGRvbid0Ci1pbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKLWBGb29UZXN0YCBjYXNl
IGJlZm9yZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhpcyBjb250
cmFkaWN0cwotd2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRlYXRoVGVz
dGAgYmVmb3JlIGBGb29UZXN0LlV2d2AuCi0KLSMjIEJ1dCBJIGRvbid0IGxpa2UgY2FsbGluZyBt
eSBlbnRpcmUgdGVzdCBjYXNlIEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5zIGJvdGggZGVh
dGggdGVzdHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPyAjIwotCi1Zb3UgZG9u
J3QgaGF2ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRoZSB0ZXN0IGNh
c2UgaW50bwotYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhlIG5hbWVzIG1h
a2UgaXQgY2xlYXIgdGhhdCB0aGV5IGFyZQotcmVsYXRlZDoKLQotYGBgIGNwcAotY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQotVEVTVF9GKEZvb1Rlc3Qs
IEFiYykgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEZv
b1Rlc3QgRm9vRGVhdGhUZXN0OwotCi1URVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4uIEVY
UEVDVF9ERUFUSCguLi4pIC4uLiB9Ci1URVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4uIEFT
U0VSVF9ERUFUSCguLi4pIC4uLiB9Ci1gYGAKLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyBh
Ym91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRpb24u
IFdoYXQgZ2l2ZXM/ICMjCi0KLUlmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9vVHlw
ZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKLXRoZXJlIGlzIGFuIGBzdGQ6
Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBmdW5j
dGlvbgotZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5cGVg
LgotCi1JbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBzcGFj
ZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbwotbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgX3Nh
bWVfIG5hbWUgc3BhY2UuCi0KLSMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVhayBt
ZXNzYWdlcyBvbiBXaW5kb3dzPyAjIwotCi1TaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFsaXpl
ZCBHb29nbGUgVGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KLXRoZSBoZWFw
LCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1vcnkg
bGVha3MgYXQgdGhlCi1lbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkgdG8g
YXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCi1gX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0NydE1l
bUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55Ci1zdGF0aWNhbGx5
IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBhbmQg
YWRkaXRpb25hbAotaGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KLQotIyMgSSBhbSBidWlsZGlu
ZyBteSBwcm9qZWN0IHdpdGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxsIEkn
bSBnZXR0aW5nIGlzIGEgYnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBIZWxw
ISAjIwotCi1Zb3UgbWF5IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBlcnJv
ciBvciB3YXJuaW5ncyBpZiB5b3UKLWF0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVjdCB3
aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IHdoZW4KLXlvdXIgcHJvamVjdCBhbmQgdGhlIGFy
ZSBub3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCi0KLSAgKiBMTksy
MDA1OiBzeW1ib2wgYWxyZWFkeSBkZWZpbmVkIGluIG9iamVjdAotICAqIExOSzQyMTc6IGxvY2Fs
bHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0aW9u
JwotICAqIExOSzQwNDk6IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQK
LQotVGhlIEdvb2dsZSBUZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50aW1l
IExpYnJhcnkgb3B0aW9uCi1zZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGljIGxp
YnJhcmllcywgL01UZCBmb3IgZGVidWcpLiBJZgoteW91ciBwcm9qZWN0IHVzZXMgc29tZXRoaW5n
IGVsc2UsIGZvciBleGFtcGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCi1ETExzLCAvTURkIGZv
ciBkZWJ1ZyksIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xlCi1U
ZXN0IHByb2plY3QgdG8gbWF0Y2ggeW91ciBwcm9qZWN0J3MuCi0KLVRvIHVwZGF0ZSB0aGlzIHNl
dHRpbmcgb3BlbiB0aGUgcHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKLVN0dWRpbyBJ
REUgdGhlbiBzZWxlY3QgdGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBDL0Mr
KyB8Ci1Db2RlIEdlbmVyYXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExpYnJh
cnkiLiAgWW91IG1heSBhbHNvIHRyeQotdXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQgb2Yg
Z3Rlc3QudmNwcm9qLgotCi0jIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdvb2ds
ZSBUZXN0IGRvZXNuJ3QgcnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCi1IYXZlIHlvdSBy
ZWFkIGEKLVt3YXJuaW5nXShQcmltZXIubWQjaW1wb3J0YW50LW5vdGUtZm9yLXZpc3VhbC1jLXVz
ZXJzKSBvbgotdGhlIEdvb2dsZSBUZXN0IFByaW1lciBwYWdlPwotCi0jIyBJIHdhbnQgdG8gdXNl
IEdvb2dsZSBUZXN0IHdpdGggVmlzdWFsIFN0dWRpbyBidXQgZG9uJ3Qga25vdyB3aGVyZSB0byBz
dGFydC4gIyMKLU1hbnkgcGVvcGxlIGFyZSBpbiB5b3VyIHBvc2l0aW9uIGFuZCBvbmUgb2YgdGhl
IHBvc3RlZCBoaXMgc29sdXRpb24gdG8KLW91ciBtYWlsaW5nIGxpc3QuCi0KLSMjIEkgYW0gc2Vl
aW5nIGNvbXBpbGUgZXJyb3JzIG1lbnRpb25pbmcgc3RkOjp0eXBlXF90cmFpdHMgd2hlbiBJIHRy
eSB0byB1c2UgR29vZ2xlIFRlc3Qgb24gU29sYXJpcy4gIyMKLUdvb2dsZSBUZXN0IHVzZXMgcGFy
dHMgb2YgdGhlIHN0YW5kYXJkIEMrKyBsaWJyYXJ5IHRoYXQgU3VuU3R1ZGlvIGRvZXMgbm90IHN1
cHBvcnQuCi1PdXIgdXNlcnMgcmVwb3J0ZWQgc3VjY2VzcyB1c2luZyBhbHRlcm5hdGl2ZSBpbXBs
ZW1lbnRhdGlvbnMuIFRyeSBydW5uaW5nIHRoZSBidWlsZCBhZnRlciBydW5pbmcgdGhpcyBjb21t
YWQ6Ci0KLWBleHBvcnQgQ0M9Y2MgQ1hYPUNDIENYWEZMQUdTPSctbGlicmFyeT1zdGxwb3J0NCdg
Ci0KLSMjIEhvdyBjYW4gbXkgY29kZSBkZXRlY3QgaWYgaXQgaXMgcnVubmluZyBpbiBhIHRlc3Q/
ICMjCi0KLUlmIHlvdSB3cml0ZSBjb2RlIHRoYXQgc25pZmZzIHdoZXRoZXIgaXQncyBydW5uaW5n
IGluIGEgdGVzdCBhbmQgZG9lcwotZGlmZmVyZW50IHRoaW5ncyBhY2NvcmRpbmdseSwgeW91IGFy
ZSBsZWFraW5nIHRlc3Qtb25seSBsb2dpYyBpbnRvCi1wcm9kdWN0aW9uIGNvZGUgYW5kIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZSB0ZXN0LW9ubHkKLWNvZGUgcGF0aHMg
YXJlbid0IHJ1biBieSBtaXN0YWtlIGluIHByb2R1Y3Rpb24uICBTdWNoIGNsZXZlcm5lc3MgYWxz
bwotbGVhZHMgdG8KLVtIZWlzZW5idWdzXShodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Vu
dXN1YWxfc29mdHdhcmVfYnVnI0hlaXNlbmJ1ZykuCi1UaGVyZWZvcmUgd2Ugc3Ryb25nbHkgYWR2
aXNlIGFnYWluc3QgdGhlIHByYWN0aWNlLCBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndAotcHJvdmlk
ZSBhIHdheSB0byBkbyBpdC4KLQotSW4gZ2VuZXJhbCwgdGhlIHJlY29tbWVuZGVkIHdheSB0byBj
YXVzZSB0aGUgY29kZSB0byBiZWhhdmUKLWRpZmZlcmVudGx5IHVuZGVyIHRlc3QgaXMgW2RlcGVu
ZGVuY3kgaW5qZWN0aW9uXShodHRwOi8vamFtZXNzaG9yZS5jb20vQmxvZy9EZXBlbmRlbmN5LUlu
amVjdGlvbi1EZW15c3RpZmllZC5odG1sKS4KLVlvdSBjYW4gaW5qZWN0IGRpZmZlcmVudCBmdW5j
dGlvbmFsaXR5IGZyb20gdGhlIHRlc3QgYW5kIGZyb20gdGhlCi1wcm9kdWN0aW9uIGNvZGUuICBT
aW5jZSB5b3VyIHByb2R1Y3Rpb24gY29kZSBkb2Vzbid0IGxpbmsgaW4gdGhlCi1mb3ItdGVzdCBs
b2dpYyBhdCBhbGwsIHRoZXJlIGlzIG5vIGRhbmdlciBpbiBhY2NpZGVudGFsbHkgcnVubmluZyBp
dC4KLQotSG93ZXZlciwgaWYgeW91IF9yZWFsbHlfLCBfcmVhbGx5XywgX3JlYWxseV8gaGF2ZSBu
byBjaG9pY2UsIGFuZCBpZgoteW91IGZvbGxvdyB0aGUgcnVsZSBvZiBlbmRpbmcgeW91ciB0ZXN0
IHByb2dyYW0gbmFtZXMgd2l0aCBgX3Rlc3RgLAoteW91IGNhbiB1c2UgdGhlIF9ob3JyaWJsZV8g
aGFjayBvZiBzbmlmZmluZyB5b3VyIGV4ZWN1dGFibGUgbmFtZQotKGBhcmd2WzBdYCBpbiBgbWFp
bigpYCkgdG8ga25vdyB3aGV0aGVyIHRoZSBjb2RlIGlzIHVuZGVyIHRlc3QuCi0KLSMjIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBtYWNybyB0aGF0IGNsYXNoZXMgd2l0aCBvbmUgZGVmaW5lZCBieSBh
bm90aGVyIGxpYnJhcnkuIEhvdyBkbyBJIGRlYWwgd2l0aCB0aGF0PyAjIwotCi1JbiBDKyssIG1h
Y3JvcyBkb24ndCBvYmV5IG5hbWVzcGFjZXMuICBUaGVyZWZvcmUgdHdvIGxpYnJhcmllcyB0aGF0
Ci1ib3RoIGRlZmluZSBhIG1hY3JvIG9mIHRoZSBzYW1lIG5hbWUgd2lsbCBjbGFzaCBpZiB5b3Ug
YCNpbmNsdWRlYCBib3RoCi1kZWZpbml0aW9ucy4gIEluIGNhc2UgYSBHb29nbGUgVGVzdCBtYWNy
byBjbGFzaGVzIHdpdGggYW5vdGhlcgotbGlicmFyeSwgeW91IGNhbiBmb3JjZSBHb29nbGUgVGVz
dCB0byByZW5hbWUgaXRzIG1hY3JvIHRvIGF2b2lkIHRoZQotY29uZmxpY3QuCi0KLVNwZWNpZmlj
YWxseSwgaWYgYm90aCBHb29nbGUgVGVzdCBhbmQgc29tZSBvdGhlciBjb2RlIGRlZmluZSBtYWNy
bwotYEZPT2AsIHlvdSBjYW4gYWRkCi1gYGAKLSAgLURHVEVTVF9ET05UX0RFRklORV9GT089MQot
YGBgCi10byB0aGUgY29tcGlsZXIgZmxhZ3MgdG8gdGVsbCBHb29nbGUgVGVzdCB0byBjaGFuZ2Ug
dGhlIG1hY3JvJ3MgbmFtZQotZnJvbSBgRk9PYCB0byBgR1RFU1RfRk9PYC4gRm9yIGV4YW1wbGUs
IHdpdGggYC1ER1RFU1RfRE9OVF9ERUZJTkVfVEVTVD0xYCwgeW91J2xsIG5lZWQgdG8gd3JpdGUK
LWBgYCBjcHAKLSAgR1RFU1RfVEVTVChTb21lVGVzdCwgRG9lc1RoaXMpIHsgLi4uIH0KLWBgYAot
aW5zdGVhZCBvZgotYGBgIGNwcAotICBURVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQot
YGBgCi1pbiBvcmRlciB0byBkZWZpbmUgYSB0ZXN0LgotCi1DdXJyZW50bHksIHRoZSBmb2xsb3dp
bmcgYFRFU1RgLCBgRkFJTGAsIGBTVUNDRUVEYCwgYW5kIHRoZSBiYXNpYyBjb21wYXJpc29uIGFz
c2VydGlvbiBtYWNyb3MgY2FuIGhhdmUgYWx0ZXJuYXRpdmUgbmFtZXMuIFlvdSBjYW4gc2VlIHRo
ZSBmdWxsIGxpc3Qgb2YgY292ZXJlZCBtYWNyb3MgW2hlcmVdKGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS9jb2Rlc2VhcmNoP3E9aWYrIUdURVNUX0RPTlRfREVGSU5FX1x3JTJCK3BhY2thZ2U6aHR0cDov
L2dvb2dsZXRlc3RcLmdvb2dsZWNvZGVcLmNvbStmaWxlOi9pbmNsdWRlL2d0ZXN0L2d0ZXN0Lmgp
LiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgIkF2b2lkaW5nIE1hY3JvIE5h
bWUgQ2xhc2hlcyIgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGZpbGUuCi0KLQotIyMgSXMgaXQgT0sg
aWYgSSBoYXZlIHR3byBzZXBhcmF0ZSBgVEVTVChGb28sIEJhcilgIHRlc3QgbWV0aG9kcyBkZWZp
bmVkIGluIGRpZmZlcmVudCBuYW1lc3BhY2VzPyAjIwotCi1ZZXMuCi0KLVRoZSBydWxlIGlzICoq
YWxsIHRlc3QgbWV0aG9kcyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUg
Zml4dHVyZSBjbGFzcyoqLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBpcyAqKmFsbG93
ZWQqKiBiZWNhdXNlIGJvdGggdGVzdHMgdXNlIHRoZSBzYW1lIGZpeHR1cmUgY2xhc3MgKGA6OnRl
c3Rpbmc6OlRlc3RgKS4KLQotYGBgIGNwcAotbmFtZXNwYWNlIGZvbyB7Ci1URVNUKENvb2xUZXN0
LCBEb1NvbWV0aGluZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgZm9vCi0K
LW5hbWVzcGFjZSBiYXIgewotVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKLSAgU1VDQ0VF
RCgpOwotfQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBgCi0KLUhvd2V2ZXIsIHRoZSBmb2xsb3dp
bmcgY29kZSBpcyAqKm5vdCBhbGxvd2VkKiogYW5kIHdpbGwgcHJvZHVjZSBhIHJ1bnRpbWUgZXJy
b3IgZnJvbSBHb29nbGUgVGVzdCBiZWNhdXNlIHRoZSB0ZXN0IG1ldGhvZHMgYXJlIHVzaW5nIGRp
ZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3NlcyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1l
LgotCi1gYGAgY3BwCi1uYW1lc3BhY2UgZm9vIHsKLWNsYXNzIENvb2xUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmUgZm9vOjpDb29sVGVzdAotVEVTVF9GKENvb2xU
ZXN0LCBEb1NvbWV0aGluZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgZm9v
Ci0KLW5hbWVzcGFjZSBiYXIgewotY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHt9OyAgLy8gRml4dHVyZTogYmFyOjpDb29sVGVzdAotVEVTVF9GKENvb2xUZXN0LCBEb1Nv
bWV0aGluZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQot
IyMgSG93IGRvIEkgYnVpbGQgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIHdpdGggWGNvZGUgND8g
IyMKLQotSWYgeW91IHRyeSB0byBidWlsZCBHb29nbGUgVGVzdCdzIFhjb2RlIHByb2plY3Qgd2l0
aCBYY29kZSA0LjAgb3IgbGF0ZXIsIHlvdSBtYXkgZW5jb3VudGVyIGFuIGVycm9yIG1lc3NhZ2Ug
dGhhdCBsb29rcyBsaWtlCi0iTWlzc2luZyBTREsgaW4gdGFyZ2V0IGd0ZXN0XF9mcmFtZXdvcms6
IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsiLiBUaGF0IG1lYW5zIHRoYXQgWGNvZGUg
ZG9lcyBub3Qgc3VwcG9ydCB0aGUgU0RLIHRoZSBwcm9qZWN0IGlzIHRhcmdldGluZy4gU2VlIHRo
ZSBYY29kZSBzZWN0aW9uIGluIHRoZSBbUkVBRE1FXSguLi9SRUFETUUubWQpIGZpbGUgb24gaG93
IHRvIHJlc29sdmUgdGhpcy4KLQotIyMgTXkgcXVlc3Rpb24gaXMgbm90IGNvdmVyZWQgaW4geW91
ciBGQVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVlc3Rp
b24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNvdXJjZXMgeW91IGNhbiB1
c2U6Ci0KLSAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oLi4vZG9jcyksCi0gIDEuIHNlYXJj
aCB0aGUgbWFpbGluZyBsaXN0IFthcmNoaXZlXShodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2Zv
cnVtLyMhZm9ydW0vZ29vZ2xldGVzdGZyYW1ld29yayksCi0gIDEuIGFzayBpdCBvbiBbZ29vZ2xl
dGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29y
a0Bnb29nbGVncm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVu
dCBzcGFtLCB3ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0
cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5
b3UgY2FuIHBvc3QuKS4KLQotUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0
aGUKLVtpc3N1ZSB0cmFja2VyXShodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3Qv
aXNzdWVzKSBpcyBfbm90XwotYSBnb29kIHdheSB0byBnZXQgeW91ciBhbnN3ZXIsIGFzIGl0IGlz
IG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQotdmVyeSBzbWFsbCBudW1iZXIgb2YgcGVvcGxl
LgotCi1XaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdzIGhlbHBmdWwgdG8gcHJvdmlkZSBhcyBt
dWNoIG9mIHRoZQotZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIChwZW9wbGUgY2Fu
bm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKLW5vdCBlbm91Z2ggaW5mb3JtYXRpb24gaW4geW91ciBx
dWVzdGlvbik6Ci0KLSAgKiB0aGUgdmVyc2lvbiAob3IgdGhlIGNvbW1pdCBoYXNoIGlmIHlvdSBj
aGVjayBvdXQgZnJvbSBHaXQgZGlyZWN0bHkpIG9mIEdvb2dsZSBUZXN0IHlvdSB1c2UgKEdvb2ds
ZSBUZXN0IGlzIHVuZGVyIGFjdGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0
IHlvdXIgcHJvYmxlbSBoYXMgYmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5
b3VyIG9wZXJhdGluZyBzeXN0ZW0sCi0gICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBj
b21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRv
IHlvdXIgY29tcGlsZXIsCi0gICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2Vz
IChpZiB0aGUgcXVlc3Rpb24gaXMgYWJvdXQgY29tcGlsYXRpb24pLAotICAqIHRoZSBfYWN0dWFs
XyBjb2RlIChpZGVhbGx5LCBhIG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFz
IHRoZSBwcm9ibGVtIHlvdSBlbmNvdW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2Nz
L1ByaW1lci5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvUHJpbWVyLm1kCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0NzRjMWQyYWI2MzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL1ByaW1lci5tZAorKysgL2Rldi9udWxsCkBAIC0xLDUwMiArMCwwIEBACi0KLQotIyBJ
bnRyb2R1Y3Rpb246IFdoeSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCi0KLV9Hb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0
cy4KLQotTm8gbWF0dGVyIHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEg
TWFjLCBpZiB5b3Ugd3JpdGUgQysrIGNvZGUsCi1Hb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCi0K
LVNvIHdoYXQgbWFrZXMgYSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrIGZpdCBpbj8gV2UgYmVsaWV2ZToKLSAgMS4gVGVzdHMgc2hvdWxkIGJlIF9p
bmRlcGVuZGVudF8gYW5kIF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0
IHRoYXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVh
Y2ggb2YgdGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29n
bGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlv
biBmb3IgcXVpY2sgZGVidWdnaW5nLgotICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5p
emVkXyBhbmQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNh
c2VzIHRoYXQgY2FuIHNoYXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0
ZXJuIGlzIGVhc3kgdG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWlu
LiBTdWNoIGNvbnNpc3RlbmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0
Y2ggcHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgotICAxLiBU
ZXN0cyBzaG91bGQgYmUgX3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNl
IGNvbW11bml0eSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0
cyB0ZXN0cyBzaG91bGQgYWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0
aW5nIEZyYW1ld29yayB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29t
cGlsZXJzIChnY2MsIE1TVkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9u
cywgc28gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsg
d2l0aCBhIHZhcmlldHkgb2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50
IHJlbGVhc2Ugb25seSBjb250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBh
Y3RpdmVseSB3b3JraW5nIG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCi0gIDEuIFdo
ZW4gdGVzdHMgZmFpbCwgdGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8g
YWJvdXQgdGhlIHByb2JsZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cmsgZG9lc24ndCBzdG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9u
bHkgc3RvcHMgdGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlv
dSBjYW4gYWxzbyBzZXQgdXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFm
dGVyIHdoaWNoIHRoZSBjdXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVj
dCBhbmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNs
ZS4KLSAgMS4gVGhlIHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRl
cnMgZnJvbSBob3VzZWtlZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVz
dCBfY29udGVudF8uICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkg
a2VlcHMgdHJhY2sgb2YgYWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhl
IHVzZXIgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCi0gIDEuIFRlc3Rz
IHNob3VsZCBiZSBfZmFzdF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91
IGNhbiByZXVzZSBzaGFyZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUg
c2V0LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBv
biBlYWNoIG90aGVyLgotCi1TaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJh
c2VkIG9uIHRoZSBwb3B1bGFyIHhVbml0Ci1hcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0
IGF0IGhvbWUgaWYgeW91J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KLUlmIG5vdCwg
aXQgd2lsbCB0YWtlIHlvdSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5k
IGdldCBzdGFydGVkLgotU28gbGV0J3MgZ28hCi0KLV9Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVy
IHRvIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQotYXMgX0dvb2dsZSBU
ZXN0Xy4KLQotIyBTZXR0aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCi0KLVRvIHdyaXRlIGEg
dGVzdCBwcm9ncmFtIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2ds
ZQotVGVzdCBpbnRvIGEgbGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHBy
b3ZpZGUgYnVpbGQKLWZpbGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtczogYG1zdmMv
YCBmb3IgVmlzdWFsIFN0dWRpbywKLWB4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9y
IEdOVSBtYWtlLCBgY29kZWdlYXIvYCBmb3IgQm9ybGFuZAotQysrIEJ1aWxkZXIsIGFuZCB0aGUg
YXV0b3Rvb2xzIHNjcmlwdCAoZGVwcmVjYXRlZCkgYW5kCi1gQ01ha2VMaXN0cy50eHRgIGZvciBD
TWFrZSAocmVjb21tZW5kZWQpIGluIHRoZSBHb29nbGUgVGVzdCByb290Ci1kaXJlY3RvcnkuICBJ
ZiB5b3VyIGJ1aWxkIHN5c3RlbSBpcyBub3Qgb24gdGhpcyBsaXN0LCB5b3UgY2FuIHRha2UgYQot
bG9vayBhdCBgbWFrZS9NYWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0IHNob3VsZCBi
ZSBjb21waWxlZAotKGJhc2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxs
LmNjYCB3aXRoIGBHVEVTVF9ST09UYAotYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBo
ZWFkZXIgc2VhcmNoIHBhdGgsIHdoZXJlIGBHVEVTVF9ST09UYAotaXMgdGhlIEdvb2dsZSBUZXN0
IHJvb3QgZGlyZWN0b3J5KS4KLQotT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29v
Z2xlIFRlc3QgbGlicmFyeSwgeW91IHNob3VsZAotY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0
YXJnZXQgZm9yIHlvdXIgdGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQotaGF2ZSBgR1RFU1Rf
Uk9PVC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCi1jb21w
aWxlciBjYW4gZmluZCBgImd0ZXN0L2d0ZXN0LmgiYCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3Qu
ICBTZXQgdXAKLXlvdXIgdGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3Qg
bGlicmFyeSAoZm9yIGV4YW1wbGUsCi1pbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkg
YWRkaW5nIGEgZGVwZW5kZW5jeSBvbgotYGd0ZXN0LnZjcHJvamApLgotCi1JZiB5b3Ugc3RpbGwg
aGF2ZSBxdWVzdGlvbnMsIHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgotdGVz
dHMgYXJlIGJ1aWx0IGFuZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KLQotIyBCYXNpYyBDb25jZXB0
cyAjCi0KLVdoZW4gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3Nl
cnRpb25zXywgd2hpY2ggYXJlIHN0YXRlbWVudHMKLXRoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRp
dGlvbiBpcyB0cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKLV9u
b25mYXRhbCBmYWlsdXJlXywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUg
b2NjdXJzLCBpdCBhYm9ydHMKLXRoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHBy
b2dyYW0gY29udGludWVzIG5vcm1hbGx5LgotCi1fVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZl
cmlmeSB0aGUgdGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKLW9yIGhh
cyBhIGZhaWxlZCBhc3NlcnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNj
ZWVkc18uCi0KLUEgX3Rlc3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBz
aG91bGQgZ3JvdXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKLWNhc2VzIHRoYXQgcmVmbGVjdCB0aGUg
c3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCi10
ZXN0IGNhc2UgbmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlv
dSBjYW4gcHV0IHRoZW0gaW50byBhCi1fdGVzdCBmaXh0dXJlXyBjbGFzcy4KLQotQSBfdGVzdCBw
cm9ncmFtXyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgotCi1XZSdsbCBub3cgZXhw
bGFpbiBob3cgdG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlk
dWFsCi1hc3NlcnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNh
c2VzLgotCi0jIEFzc2VydGlvbnMgIwotCi1Hb29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNy
b3MgdGhhdCByZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQotY2xhc3Mgb3IgZnVu
Y3Rpb24gYnkgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFz
c2VydGlvbgotZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNl
IGZpbGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0aW9uLAotYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVz
c2FnZS4gWW91IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKLXdoaWNo
IHdpbGwgYmUgYXBwZW5kZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgotCi1UaGUgYXNzZXJ0
aW9ucyBjb21lIGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZm
ZXJlbnQKLWVmZmVjdHMgb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lv
bnMgZ2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMKLXdoZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0
aGUgY3VycmVudCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCi1ub25m
YXRhbCBmYWlsdXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVz
dWFsbHkgYEVYUEVDVF8qYAotYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4g
b25lIGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KLUhvd2V2ZXIsIHlvdSBzaG91
bGQgdXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdo
ZW4KLXRoZSBhc3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCi0KLVNpbmNlIGEgZmFpbGVkIGBB
U1NFUlRfKmAgcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAot
cG9zc2libHkgc2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBt
YXkgY2F1c2UgYSBzcGFjZSBsZWFrLgotRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxl
YWssIGl0IG1heSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCi1rZWVwIHRoaXMgaW4g
bWluZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2Vy
dGlvbgotZXJyb3JzLgotCi1UbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2lt
cGx5IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKLWA8PGAgb3BlcmF0b3IsIG9y
IGEgc2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6Ci1gYGAKLUFTU0VSVF9F
USh4LnNpemUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwg
bGVuZ3RoIjsKLQotZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7Ci0gIEVYUEVD
VF9FUSh4W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8
IGk7Ci19Ci1gYGAKLQotQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJl
YW1gIGNhbiBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KLW1hY3JvLS1pbiBwYXJ0aWN1bGFy
LCBDIHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKLShgd2No
YXJfdCpgLCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3
c3RyaW5nYCkgaXMKLXN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xh
dGVkIHRvIFVURi04IHdoZW4gcHJpbnRlZC4KLQotIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIwotCi1U
aGVzZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCi0K
LXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlm
aWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICB8IGBFWFBF
Q1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0cnVlIHwKLXwgYEFT
U0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShgX2NvbmRpdGlvbl9g
KWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKLQotUmVtZW1iZXIsIHdoZW4gdGhleSBmYWls
LCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCi1yZXR1cm5zIGZyb20gdGhl
IGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEgbm9uZmF0YWwKLWZh
aWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5uaW5nLiBJbiBlaXRo
ZXIgY2FzZSwgYW4KLWFzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250YWluaW5nIHRlc3Qg
ZmFpbHMuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBCaW5h
cnkgQ29tcGFyaXNvbiAjIwotCi1UaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFzc2VydGlvbnMgdGhh
dCBjb21wYXJlIHR3byB2YWx1ZXMuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0
YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18YEFTU0VSVF9FUShgX3Zh
bDFfYCwgYF92YWwyX2ApO2B8YEVYUEVDVF9FUShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwx
XyBgPT1gIF92YWwyXyB8Ci18YEFTU0VSVF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVD
VF9ORShgX3ZhbDFfYCwgYF92YWwyX2ApO2B8IF92YWwxXyBgIT1gIF92YWwyXyB8Ci18YEFTU0VS
VF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2B8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2Ap
O2B8IF92YWwxXyBgPGAgX3ZhbDJfIHwKLXxgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHwgX3ZhbDFfIGA8PWAgX3ZhbDJfIHwK
LXxgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YHxgRVhQRUNUX0dUKGBfdmFsMV9gLCBg
X3ZhbDJfYCk7YHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAotfGBBU1NFUlRfR0UoYF92YWwxX2AsIGBf
dmFsMl9gKTtgfGBFWFBFQ1RfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgfCBfdmFsMV8gYD49YCBf
dmFsMl8gfAotCi1JbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMg
Ym90aCBfdmFsMV8gYW5kIF92YWwyXy4KLQotVmFsdWUgYXJndW1lbnRzIG11c3QgYmUgY29tcGFy
YWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbgotb3BlcmF0b3Igb3IgeW91J2xsIGdl
dCBhIGNvbXBpbGVyIGVycm9yLiAgV2UgdXNlZCB0byByZXF1aXJlIHRoZQotYXJndW1lbnRzIHRv
IHN1cHBvcnQgdGhlIGA8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0byBhbiBgb3N0cmVhbWAs
Ci1idXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHNpbmNlIHYxLjYuMCAoaWYgYDw8YCBpcyBz
dXBwb3J0ZWQsIGl0Ci13aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUgYXJndW1lbnRzIHdoZW4g
dGhlIGFzc2VydGlvbiBmYWlsczsKLW90aGVyd2lzZSBHb29nbGUgVGVzdCB3aWxsIGF0dGVtcHQg
dG8gcHJpbnQgdGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQKLWNhbi4gRm9yIG1vcmUgZGV0YWlscyBh
bmQgaG93IHRvIGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlCi1hcmd1bWVudHMsIHNlZSB0
aGlzIEdvb2dsZSBNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2svZG9jcy9Db29rQm9vay5t
ZCN0ZWFjaGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12YWx1ZXMpLikuCi0KLVRo
ZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5lZCB0eXBlLCBidXQgb25s
eSBpZiB5b3UgZGVmaW5lIHRoZQotY29ycmVzcG9uZGluZyBjb21wYXJpc29uIG9wZXJhdG9yIChl
LmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNwb25kaW5nCi1vcGVyYXRvciBpcyBk
ZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigpYCBtYWNyb3MgYmVjYXVzZSB0aGV5
IHdpbGwKLXByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uLCBi
dXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgotCi1Bcmd1bWVudHMgYXJlIGFsd2F5cyBldmFs
dWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9yIHRoZQotYXJndW1lbnRz
IHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFueSBvcmRpbmFyeSBDL0Mr
KyBmdW5jdGlvbiwKLXRoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3JkZXIgaXMgdW5kZWZpbmVk
IChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCi1jaG9vc2UgYW55IG9yZGVyKSBhbmQgeW91
ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGFyZ3VtZW50Ci1ldmFs
dWF0aW9uIG9yZGVyLgotCi1gQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRlciBlcXVhbGl0eSBvbiBw
b2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAotdGVzdHMgaWYgdGhleSBhcmUg
aW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZh
bHVlLgotVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMgc3RyaW5ncyAoZS5nLiBg
Y29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCi1gQVNTRVJUX1NUUkVRKClgICwgd2hpY2ggd2ls
bCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRvIGFzc2VydAotdGhhdCBh
IEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoTlVMTCwgY19zdHJpbmcpYCAu
IEhvd2V2ZXIsIHRvCi1jb21wYXJlIHR3byBgc3RyaW5nYCBvYmplY3RzLCB5b3Ugc2hvdWxkIHVz
ZSBgQVNTRVJUX0VRYC4KLQotTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3b3JrIHdpdGggYm90aCBu
YXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCi1hbmQgYHdzdHJpbmdgKS4K
LQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLV9IaXN0b3JpY2FsIG5v
dGVfOiBCZWZvcmUgRmVicnVhcnkgMjAxNiBgKl9FUWAgaGFkIGEgY29udmVudGlvbiBvZiBjYWxs
aW5nIGl0IGFzCi1gQVNTRVJUX0VRKGV4cGVjdGVkLCBhY3R1YWwpYCwgc28gbG90cyBvZiBleGlz
dGluZyBjb2RlIHVzZXMgdGhpcyBvcmRlci4KLU5vdyBgKl9FUWAgdHJlYXRzIGJvdGggcGFyYW1l
dGVycyBpbiB0aGUgc2FtZSB3YXkuCi0KLSMjIFN0cmluZyBDb21wYXJpc29uICMjCi0KLVRoZSBh
c3NlcnRpb25zIGluIHRoaXMgZ3JvdXAgY29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91
IHdhbnQgdG8gY29tcGFyZQotdHdvIGBzdHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwg
YEVYUEVDVF9ORWAsIGFuZCBldGMgaW5zdGVhZC4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VS
VF9TVFJFUShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVRKGBfc3RyMV9g
LCBgX3N0cl8yYCk7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGNvbnRl
bnQgfAotfCBgQVNTRVJUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICB8IGBFWFBFQ1Rf
U1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUg
ZGlmZmVyZW50IGNvbnRlbnQgfAotfCBgQVNTRVJUX1NUUkNBU0VFUShgX3N0cjFfYCwgYF9zdHIy
X2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCB8IHRoZSB0d28g
QyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Ci18IGBBU1NF
UlRfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29u
dGVudCwgaWdub3JpbmcgY2FzZSB8Ci0KLU5vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9u
IG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCi0KLWAqU1RSRVEqYCBhbmQgYCpTVFJO
RSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQotY29tcGFy
aXNvbiBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmlu
dGVkIGFzIFVURi04Ci1uYXJyb3cgc3RyaW5ncy4KLQotQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4g
ZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgotCi1fQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21w
YXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCi1yZWd1bGFyIGV4
cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xl
IFRlc3QgR3VpZGVdKEFkdmFuY2VkR3VpZGUubWQpLgotCi0jIFNpbXBsZSBUZXN0cyAjCi0KLVRv
IGNyZWF0ZSBhIHRlc3Q6Ci0gIDEuIFVzZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFu
ZCBuYW1lIGEgdGVzdCBmdW5jdGlvbiwgVGhlc2UgYXJlIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMg
dGhhdCBkb24ndCByZXR1cm4gYSB2YWx1ZS4KLSAgMS4gSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcg
d2l0aCBhbnkgdmFsaWQgQysrIHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwgdXNlIHRo
ZSB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgotICAxLiBU
aGUgdGVzdCdzIHJlc3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkg
YXNzZXJ0aW9uIGluIHRoZSB0ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxs
eSksIG9yIGlmIHRoZSB0ZXN0IGNyYXNoZXMsIHRoZSBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3
aXNlLCBpdCBzdWNjZWVkcy4KLQotYGBgCi1URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IHsKLSAuLi4gdGVzdCBib2R5IC4uLgotfQotYGBgCi0KLQotYFRFU1QoKWAgYXJndW1lbnRzIGdv
IGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYy4gVGhlIF9maXJzdF8gYXJndW1lbnQgaXMgdGhlCi1u
YW1lIG9mIHRoZSB0ZXN0IGNhc2UsIGFuZCB0aGUgX3NlY29uZF8gYXJndW1lbnQgaXMgdGhlIHRl
c3QncyBuYW1lIHdpdGhpbiB0aGUKLXRlc3QgY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJlIHZhbGlk
IEMrKyBpZGVudGlmaWVycywgYW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluIHVuZGVyc2NvcmUg
KGBfYCkuIEEgdGVzdCdzIF9mdWxsIG5hbWVfIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRl
c3QgY2FzZSBhbmQgaXRzCi1pbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMgY2FuIGhhdmUgdGhlIHNhbWUgaW5kaXZpZHVhbAotbmFtZS4KLQotRm9yIGV4YW1w
bGUsIGxldCdzIHRha2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKLWBgYAotaW50IEZhY3Rv
cmlhbChpbnQgbik7IC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCi1gYGAKLQotQSB0ZXN0
IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgotYGBgCi0vLyBUZXN0cyBm
YWN0b3JpYWwgb2YgMC4KLVRFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgewot
ICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKLX0KLQotLy8gVGVzdHMgZmFjdG9yaWFsIG9m
IHBvc2l0aXZlIG51bWJlcnMuCi1URVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlu
cHV0KSB7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkpOwotICBFWFBFQ1RfRVEoMiwgRmFj
dG9yaWFsKDIpKTsKLSAgRVhQRUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7Ci0gIEVYUEVDVF9FUSg0
MDMyMCwgRmFjdG9yaWFsKDgpKTsKLX0KLWBgYAotCi1Hb29nbGUgVGVzdCBncm91cHMgdGhlIHRl
c3QgcmVzdWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cwotc2hv
dWxkIGJlIGluIHRoZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBh
cmd1bWVudCB0byB0aGVpcgotYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJv
dmUgZXhhbXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMsCi1gSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBI
YW5kbGVzUG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QKLWNhc2Ug
YEZhY3RvcmlhbFRlc3RgLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4K
LQotIyBUZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9y
IE11bHRpcGxlIFRlc3RzICMKLQotSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3Ig
bW9yZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2ltaWxhciBkYXRhLAoteW91IGNhbiB1c2UgYSBf
dGVzdCBmaXh0dXJlXy4gSXQgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0
aW9uIG9mCi1vYmplY3RzIGZvciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KLQotVG8gY3JlYXRl
IGEgZml4dHVyZSwganVzdDoKLSAgMS4gRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpU
ZXN0YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3
ZSdsbCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KLSAg
MS4gSW5zaWRlIHRoZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2Uu
Ci0gIDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRV
cCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBvYmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29t
bW9uIG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVwKClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21h
bGwgYHVgIC0gZG9uJ3QgbGV0IHRoYXQgaGFwcGVuIHRvIHlvdS4KLSAgMS4gSWYgbmVjZXNzYXJ5
LCB3cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2Ug
YW55IHJlc291cmNlcyB5b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4g
eW91IHNob3VsZCB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNo
b3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAsIHJlYWQgdGhpcyBbRkFRIGVudHJ5XShGQVEu
bWQjc2hvdWxkLWktdXNlLXRoZS1jb25zdHJ1Y3RvcmRlc3RydWN0b3Itb2YtdGhlLXRlc3QtZml4
dHVyZS1vci10aGUtc2V0LXVwdGVhci1kb3duLWZ1bmN0aW9uKS4KLSAgMS4gSWYgbmVlZGVkLCBk
ZWZpbmUgc3Vicm91dGluZXMgZm9yIHlvdXIgdGVzdHMgdG8gc2hhcmUuCi0KLVdoZW4gdXNpbmcg
YSBmaXh0dXJlLCB1c2UgYFRFU1RfRigpYCBpbnN0ZWFkIG9mIGBURVNUKClgIGFzIGl0IGFsbG93
cyB5b3UgdG8KLWFjY2VzcyBvYmplY3RzIGFuZCBzdWJyb3V0aW5lcyBpbiB0aGUgdGVzdCBmaXh0
dXJlOgotYGBgCi1URVNUX0YodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgewotIC4uLiB0ZXN0
IGJvZHkgLi4uCi19Ci1gYGAKLQotTGlrZSBgVEVTVCgpYCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlz
IHRoZSB0ZXN0IGNhc2UgbmFtZSwgYnV0IGZvciBgVEVTVF9GKClgCi10aGlzIG11c3QgYmUgdGhl
IG5hbWUgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gWW91J3ZlIHByb2JhYmx5IGd1ZXNzZWQ6
IGBfRmAKLWlzIGZvciBmaXh0dXJlLgotCi1VbmZvcnR1bmF0ZWx5LCB0aGUgQysrIG1hY3JvIHN5
c3RlbSBkb2VzIG5vdCBhbGxvdyB1cyB0byBjcmVhdGUgYSBzaW5nbGUgbWFjcm8KLXRoYXQgY2Fu
IGhhbmRsZSBib3RoIHR5cGVzIG9mIHRlc3RzLiBVc2luZyB0aGUgd3JvbmcgbWFjcm8gY2F1c2Vz
IGEgY29tcGlsZXIKLWVycm9yLgotCi1BbHNvLCB5b3UgbXVzdCBmaXJzdCBkZWZpbmUgYSB0ZXN0
IGZpeHR1cmUgY2xhc3MgYmVmb3JlIHVzaW5nIGl0IGluIGEKLWBURVNUX0YoKWAsIG9yIHlvdSds
bCBnZXQgdGhlIGNvbXBpbGVyIGVycm9yICJgdmlydHVhbCBvdXRzaWRlIGNsYXNzCi1kZWNsYXJh
dGlvbmAiLgotCi1Gb3IgZWFjaCB0ZXN0IGRlZmluZWQgd2l0aCBgVEVTVF9GKClgLCBHb29nbGUg
VGVzdCB3aWxsOgotICAxLiBDcmVhdGUgYSBfZnJlc2hfIHRlc3QgZml4dHVyZSBhdCBydW50aW1l
Ci0gIDEuIEltbWVkaWF0ZWx5IGluaXRpYWxpemUgaXQgdmlhIGBTZXRVcCgpYCAsCi0gIDEuIFJ1
biB0aGUgdGVzdAotICAxLiBDbGVhbiB1cCBieSBjYWxsaW5nIGBUZWFyRG93bigpYAotICAxLiBE
ZWxldGUgdGhlIHRlc3QgZml4dHVyZS4gIE5vdGUgdGhhdCBkaWZmZXJlbnQgdGVzdHMgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIGhhdmUgZGlmZmVyZW50IHRlc3QgZml4dHVyZSBvYmplY3RzLCBhbmQg
R29vZ2xlIFRlc3QgYWx3YXlzIGRlbGV0ZXMgYSB0ZXN0IGZpeHR1cmUgYmVmb3JlIGl0IGNyZWF0
ZXMgdGhlIG5leHQgb25lLiBHb29nbGUgVGVzdCBkb2VzIG5vdCByZXVzZSB0aGUgc2FtZSB0ZXN0
IGZpeHR1cmUgZm9yIG11bHRpcGxlIHRlc3RzLiBBbnkgY2hhbmdlcyBvbmUgdGVzdCBtYWtlcyB0
byB0aGUgZml4dHVyZSBkbyBub3QgYWZmZWN0IG90aGVyIHRlc3RzLgotCi1BcyBhbiBleGFtcGxl
LCBsZXQncyB3cml0ZSB0ZXN0cyBmb3IgYSBGSUZPIHF1ZXVlIGNsYXNzIG5hbWVkIGBRdWV1ZWAs
IHdoaWNoCi1oYXMgdGhlIGZvbGxvd2luZyBpbnRlcmZhY2U6Ci1gYGAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBFPiAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCi1jbGFzcyBRdWV1ZSB7Ci0gcHVibGlj
OgotICBRdWV1ZSgpOwotICB2b2lkIEVucXVldWUoY29uc3QgRSYgZWxlbWVudCk7Ci0gIEUqIERl
cXVldWUoKTsgLy8gUmV0dXJucyBOVUxMIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgc2l6ZV90
IHNpemUoKSBjb25zdDsKLSAgLi4uCi19OwotYGBgCi0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJl
IGNsYXNzLiBCeSBjb252ZW50aW9uLCB5b3Ugc2hvdWxkIGdpdmUgaXQgdGhlIG5hbWUKLWBGb29U
ZXN0YCB3aGVyZSBgRm9vYCBpcyB0aGUgY2xhc3MgYmVpbmcgdGVzdGVkLgotYGBgCi1jbGFzcyBR
dWV1ZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBxMV8uRW5xdWV1ZSgxKTsKLSAgICBxMl8uRW5xdWV1ZSgy
KTsKLSAgICBxMl8uRW5xdWV1ZSgzKTsKLSAgfQotCi0gIC8vIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHt9Ci0KLSAgUXVldWU8aW50PiBxMF87Ci0gIFF1ZXVlPGludD4gcTFfOwotICBRdWV1ZTxp
bnQ+IHEyXzsKLX07Ci1gYGAKLQotSW4gdGhpcyBjYXNlLCBgVGVhckRvd24oKWAgaXMgbm90IG5l
ZWRlZCBzaW5jZSB3ZSBkb24ndCBoYXZlIHRvIGNsZWFuIHVwIGFmdGVyCi1lYWNoIHRlc3QsIG90
aGVyIHRoYW4gd2hhdCdzIGFscmVhZHkgZG9uZSBieSB0aGUgZGVzdHJ1Y3Rvci4KLQotTm93IHdl
J2xsIHdyaXRlIHRlc3RzIHVzaW5nIGBURVNUX0YoKWAgYW5kIHRoaXMgZml4dHVyZS4KLWBgYAot
VEVTVF9GKFF1ZXVlVGVzdCwgSXNFbXB0eUluaXRpYWxseSkgewotICBFWFBFQ1RfRVEoMCwgcTBf
LnNpemUoKSk7Ci19Ci0KLVRFU1RfRihRdWV1ZVRlc3QsIERlcXVldWVXb3JrcykgewotICBpbnQq
IG4gPSBxMF8uRGVxdWV1ZSgpOwotICBFWFBFQ1RfRVEoTlVMTCwgbik7Ci0KLSAgbiA9IHExXy5E
ZXF1ZXVlKCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgxLCAqbik7
Ci0gIEVYUEVDVF9FUSgwLCBxMV8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci0KLSAgbiA9IHEyXy5E
ZXF1ZXVlKCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgyLCAqbik7
Ci0gIEVYUEVDVF9FUSgxLCBxMl8uc2l6ZSgpKTsKLSAgZGVsZXRlIG47Ci19Ci1gYGAKLQotVGhl
IGFib3ZlIHVzZXMgYm90aCBgQVNTRVJUXypgIGFuZCBgRVhQRUNUXypgIGFzc2VydGlvbnMuIFRo
ZSBydWxlIG9mIHRodW1iIGlzCi10byB1c2UgYEVYUEVDVF8qYCB3aGVuIHlvdSB3YW50IHRoZSB0
ZXN0IHRvIGNvbnRpbnVlIHRvIHJldmVhbCBtb3JlIGVycm9ycwotYWZ0ZXIgdGhlIGFzc2VydGlv
biBmYWlsdXJlLCBhbmQgdXNlIGBBU1NFUlRfKmAgd2hlbiBjb250aW51aW5nIGFmdGVyIGZhaWx1
cmUKLWRvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIGV4YW1wbGUsIHRoZSBzZWNvbmQgYXNzZXJ0aW9u
IGluIHRoZSBgRGVxdWV1ZWAgdGVzdCBpcwotYEFTU0VSVF9UUlVFKG4gIT0gTlVMTClgLCBhcyB3
ZSBuZWVkIHRvIGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIGBuYCBsYXRlciwKLXdoaWNoIHdvdWxk
IGxlYWQgdG8gYSBzZWdmYXVsdCB3aGVuIGBuYCBpcyBgTlVMTGAuCi0KLVdoZW4gdGhlc2UgdGVz
dHMgcnVuLCB0aGUgZm9sbG93aW5nIGhhcHBlbnM6Ci0gIDEuIEdvb2dsZSBUZXN0IGNvbnN0cnVj
dHMgYSBgUXVldWVUZXN0YCBvYmplY3QgKGxldCdzIGNhbGwgaXQgYHQxYCApLgotICAxLiBgdDEu
U2V0VXAoKWAgaW5pdGlhbGl6ZXMgYHQxYCAuCi0gIDEuIFRoZSBmaXJzdCB0ZXN0ICggYElzRW1w
dHlJbml0aWFsbHlgICkgcnVucyBvbiBgdDFgIC4KLSAgMS4gYHQxLlRlYXJEb3duKClgIGNsZWFu
cyB1cCBhZnRlciB0aGUgdGVzdCBmaW5pc2hlcy4KLSAgMS4gYHQxYCBpcyBkZXN0cnVjdGVkLgot
ICAxLiBUaGUgYWJvdmUgc3RlcHMgYXJlIHJlcGVhdGVkIG9uIGFub3RoZXIgYFF1ZXVlVGVzdGAg
b2JqZWN0LCB0aGlzIHRpbWUgcnVubmluZyB0aGUgYERlcXVldWVXb3Jrc2AgdGVzdC4KLQotX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLV9Ob3RlXzogR29vZ2xlIFRlc3Qg
YXV0b21hdGljYWxseSBzYXZlcyBhbGwgX0dvb2dsZSBUZXN0XyBmbGFncyB3aGVuIGEgdGVzdAot
b2JqZWN0IGlzIGNvbnN0cnVjdGVkLCBhbmQgcmVzdG9yZXMgdGhlbSB3aGVuIGl0IGlzIGRlc3Ry
dWN0ZWQuCi0KLSMgSW52b2tpbmcgdGhlIFRlc3RzICMKLQotYFRFU1QoKWAgYW5kIGBURVNUX0Yo
KWAgaW1wbGljaXRseSByZWdpc3RlciB0aGVpciB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiBTbywg
dW5saWtlIHdpdGggbWFueSBvdGhlciBDKysgdGVzdGluZyBmcmFtZXdvcmtzLCB5b3UgZG9uJ3Qg
aGF2ZSB0byByZS1saXN0IGFsbCB5b3VyIGRlZmluZWQgdGVzdHMgaW4gb3JkZXIgdG8gcnVuIHRo
ZW0uCi0KLUFmdGVyIGRlZmluaW5nIHlvdXIgdGVzdHMsIHlvdSBjYW4gcnVuIHRoZW0gd2l0aCBg
UlVOX0FMTF9URVNUUygpYCAsIHdoaWNoIHJldHVybnMgYDBgIGlmIGFsbCB0aGUgdGVzdHMgYXJl
IHN1Y2Nlc3NmdWwsIG9yIGAxYCBvdGhlcndpc2UuIE5vdGUgdGhhdCBgUlVOX0FMTF9URVNUUygp
YCBydW5zIF9hbGwgdGVzdHNfIGluIHlvdXIgbGluayB1bml0IC0tIHRoZXkgY2FuIGJlIGZyb20g
ZGlmZmVyZW50IHRlc3QgY2FzZXMsIG9yIGV2ZW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQot
V2hlbiBpbnZva2VkLCB0aGUgYFJVTl9BTExfVEVTVFMoKWAgbWFjcm86Ci0gIDEuIFNhdmVzIHRo
ZSBzdGF0ZSBvZiBhbGwgIEdvb2dsZSBUZXN0IGZsYWdzLgotICAxLiBDcmVhdGVzIGEgdGVzdCBm
aXh0dXJlIG9iamVjdCBmb3IgdGhlIGZpcnN0IHRlc3QuCi0gIDEuIEluaXRpYWxpemVzIGl0IHZp
YSBgU2V0VXAoKWAuCi0gIDEuIFJ1bnMgdGhlIHRlc3Qgb24gdGhlIGZpeHR1cmUgb2JqZWN0Lgot
ICAxLiBDbGVhbnMgdXAgdGhlIGZpeHR1cmUgdmlhIGBUZWFyRG93bigpYC4KLSAgMS4gRGVsZXRl
cyB0aGUgZml4dHVyZS4KLSAgMS4gUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGFsbCBHb29nbGUgVGVz
dCBmbGFncy4KLSAgMS4gUmVwZWF0cyB0aGUgYWJvdmUgc3RlcHMgZm9yIHRoZSBuZXh0IHRlc3Qs
IHVudGlsIGFsbCB0ZXN0cyBoYXZlIHJ1bi4KLQotSW4gYWRkaXRpb24sIGlmIHRoZSB0ZXh0IGZp
eHR1cmUncyBjb25zdHJ1Y3RvciBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlIGluCi1zdGVwIDIs
IHRoZXJlIGlzIG5vIHBvaW50IGZvciBzdGVwIDMgLSA1IGFuZCB0aGV5IGFyZSB0aHVzIHNraXBw
ZWQuIFNpbWlsYXJseSwKLWlmIHN0ZXAgMyBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLCBzdGVw
IDQgd2lsbCBiZSBza2lwcGVkLgotCi1fSW1wb3J0YW50XzogWW91IG11c3Qgbm90IGlnbm9yZSB0
aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLCBvciBgZ2NjYAotd2lsbCBnaXZl
IHlvdSBhIGNvbXBpbGVyIGVycm9yLiBUaGUgcmF0aW9uYWxlIGZvciB0aGlzIGRlc2lnbiBpcyB0
aGF0IHRoZQotYXV0b21hdGVkIHRlc3Rpbmcgc2VydmljZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0
ZXN0IGhhcyBwYXNzZWQgYmFzZWQgb24gaXRzCi1leGl0IGNvZGUsIG5vdCBvbiBpdHMgc3Rkb3V0
L3N0ZGVyciBvdXRwdXQ7IHRodXMgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBtdXN0Ci1yZXR1cm4g
dGhlIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLgotCi1BbHNvLCB5b3Ugc2hvdWxkIGNhbGwg
YFJVTl9BTExfVEVTVFMoKWAgb25seSAqKm9uY2UqKi4gQ2FsbGluZyBpdCBtb3JlIHRoYW4gb25j
ZQotY29uZmxpY3RzIHdpdGggc29tZSBhZHZhbmNlZCBHb29nbGUgVGVzdCBmZWF0dXJlcyAoZS5n
LiB0aHJlYWQtc2FmZSBkZWF0aAotdGVzdHMpIGFuZCB0aHVzIGlzIG5vdCBzdXBwb3J0ZWQuCi0K
LV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIFdyaXRpbmcgdGhlIG1h
aW4oKSBGdW5jdGlvbiAjCi0KLVlvdSBjYW4gc3RhcnQgZnJvbSB0aGlzIGJvaWxlcnBsYXRlOgot
YGBgCi0jaW5jbHVkZSAidGhpcy9wYWNrYWdlL2Zvby5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCi0KLW5hbWVzcGFjZSB7Ci0KLS8vIFRoZSBmaXh0dXJlIGZvciB0ZXN0aW5nIGNsYXNzIEZv
by4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIC8vIFlvdSBjYW4gcmVtb3ZlIGFueSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlv
bnMgaWYgaXRzIGJvZHkKLSAgLy8gaXMgZW1wdHkuCi0KLSAgRm9vVGVzdCgpIHsKLSAgICAvLyBZ
b3UgY2FuIGRvIHNldC11cCB3b3JrIGZvciBlYWNoIHRlc3QgaGVyZS4KLSAgfQotCi0gIHZpcnR1
YWwgfkZvb1Rlc3QoKSB7Ci0gICAgLy8gWW91IGNhbiBkbyBjbGVhbi11cCB3b3JrIHRoYXQgZG9l
c24ndCB0aHJvdyBleGNlcHRpb25zIGhlcmUuCi0gIH0KLQotICAvLyBJZiB0aGUgY29uc3RydWN0
b3IgYW5kIGRlc3RydWN0b3IgYXJlIG5vdCBlbm91Z2ggZm9yIHNldHRpbmcgdXAKLSAgLy8gYW5k
IGNsZWFuaW5nIHVwIGVhY2ggdGVzdCwgeW91IGNhbiBkZWZpbmUgdGhlIGZvbGxvd2luZyBtZXRo
b2RzOgotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBi
ZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yIChyaWdodAotICAgIC8v
IGJlZm9yZSBlYWNoIHRlc3QpLgotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewot
ICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIHRl
c3QgKHJpZ2h0Ci0gICAgLy8gYmVmb3JlIHRoZSBkZXN0cnVjdG9yKS4KLSAgfQotCi0gIC8vIE9i
amVjdHMgZGVjbGFyZWQgaGVyZSBjYW4gYmUgdXNlZCBieSBhbGwgdGVzdHMgaW4gdGhlIHRlc3Qg
Y2FzZSBmb3IgRm9vLgotfTsKLQotLy8gVGVzdHMgdGhhdCB0aGUgRm9vOjpCYXIoKSBtZXRob2Qg
ZG9lcyBBYmMuCi1URVNUX0YoRm9vVGVzdCwgTWV0aG9kQmFyRG9lc0FiYykgewotICBjb25zdCBz
dHJpbmcgaW5wdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rlc3RkYXRhL215aW5wdXRmaWxl
LmRhdCI7Ci0gIGNvbnN0IHN0cmluZyBvdXRwdXRfZmlsZXBhdGggPSAidGhpcy9wYWNrYWdlL3Rl
c3RkYXRhL215b3V0cHV0ZmlsZS5kYXQiOwotICBGb28gZjsKLSAgRVhQRUNUX0VRKDAsIGYuQmFy
KGlucHV0X2ZpbGVwYXRoLCBvdXRwdXRfZmlsZXBhdGgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBG
b28gZG9lcyBYeXouCi1URVNUX0YoRm9vVGVzdCwgRG9lc1h5eikgewotICAvLyBFeGVyY2lzZXMg
dGhlIFh5eiBmZWF0dXJlIG9mIEZvby4KLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWlu
KGludCBhcmdjLCBjaGFyICoqYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZh
cmdjLCBhcmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGUgYDo6
dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAgZnVuY3Rpb24gcGFyc2VzIHRoZSBjb21tYW5kIGxp
bmUgZm9yIEdvb2dsZQotVGVzdCBmbGFncywgYW5kIHJlbW92ZXMgYWxsIHJlY29nbml6ZWQgZmxh
Z3MuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbnRyb2wgYQotdGVzdCBwcm9ncmFtJ3MgYmVo
YXZpb3IgdmlhIHZhcmlvdXMgZmxhZ3MsIHdoaWNoIHdlJ2xsIGNvdmVyIGluIFtBZHZhbmNlZEd1
aWRlXShBZHZhbmNlZEd1aWRlLm1kKS4KLVlvdSBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZv
cmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdzCi13b24ndCBiZSBwcm9w
ZXJseSBpbml0aWFsaXplZC4KLQotT24gV2luZG93cywgYEluaXRHb29nbGVUZXN0KClgIGFsc28g
d29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2VkCi1pbiBwcm9ncmFtcyBj
b21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgotCi1CdXQgbWF5YmUgeW91IHRoaW5r
IHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBpcyB0b28gbXVjaCB3b3Jr
PyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mgd2h5IEdvb2dsZSBUZXN0
IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigpLiBJZiBpdCBmaXRzIHlv
dXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0ZXN0XF9tYWluIGxpYnJh
cnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KLQotIyMgSW1wb3J0YW50IG5vdGUgZm9yIFZpc3Vh
bCBDKysgdXNlcnMgIyMKLUlmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRvIGEgbGlicmFyeSBhbmQg
eW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5IG9yIGluIHlv
dXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRoZSByZWFzb24gaXMgYSBb
YnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFjay92aWV3ZmVlZGJhY2su
YXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1YWwgQysrLiBXaGVuIHlv
dSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBjZXJ0YWluIHN0YXRpYyBv
YmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJlIG5vdCByZWZlcmVuY2Vk
IGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJlIHN0aWxsIHN1cHBvc2Vk
IHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQgbm90aGluZyBpbiB0aGUg
bGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0IHRocm93cyB0aGUgbGli
cmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJhcnkgd2l0aCB0ZXN0cyBm
cm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcg
aXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91ciBsaWJyYXJ5IGNvZGUg
ZGVjbGFyZSBhIGZ1bmN0aW9uOgotYGBgCi1fX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFB1bGxJ
bk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KLWBgYAotSWYgeW91IHB1dCB5b3VyIHRlc3RzIGlu
IGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNwZWMoZGxsZXhwb3J0KWAg
aXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFtLCB3cml0ZSBhIGNvZGUg
dGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246Ci1gYGAKLWludCBQdWxsSW5NeUxpYnJhcnkoKTsK
LXN0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKLWBgYAotVGhpcyB3aWxsIGtl
ZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhlbSByZWdpc3RlciB0aGVt
c2VsdmVzIGF0IHN0YXJ0dXAuCi0KLUluIGFkZGl0aW9uLCBpZiB5b3UgZGVmaW5lIHlvdXIgdGVz
dHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0byB5b3VyIG1haW4gcHJv
Z3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURFLCBnbyB0byB5b3VyIC5l
eGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVydGllcy9MaW5rZXIvT3B0
aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBLZWVwIFVucmVmZXJlbmNl
ZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3VhbCBDKysgbGlua2VyIGZy
b20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVkIGJ5IHlvdXIgdGVzdHMg
ZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KLQotVGhlcmUgaXMgb25lIG1vcmUgcGl0ZmFsbCwg
dGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGljIGxpYnJhcnkgKHRoYXQn
cyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIgdGVzdHMgbXVzdCBhbHNv
IHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0byBoYXZlIHRoZW0gaW4g
YSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1aWxkIGludG8gYSBETEwg
YXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVuIGNvcnJlY3RseSBvciB3
aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9uIGhlcmUgaXM6IG1ha2Ug
eW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3RzIGluIGxpYnJhcmllcyEK
LQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBs
ZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3RhcnQgd3JpdGluZwotYW5k
IHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2FtcGxlc10oU2FtcGxlcy5t
ZCksIG9yIGNvbnRpbnVlIHdpdGgKLVtBZHZhbmNlZEd1aWRlXShBZHZhbmNlZEd1aWRlLm1kKSwg
d2hpY2ggZGVzY3JpYmVzIG1hbnkgbW9yZSB1c2VmdWwgR29vZ2xlIFRlc3QgZmVhdHVyZXMuCi0K
LSMgS25vd24gTGltaXRhdGlvbnMgIwotCi1Hb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSB0
aHJlYWQtc2FmZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcwotdGhyZWFkLXNhZmUgb24gc3lzdGVt
cyB3aGVyZSB0aGUgYHB0aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gIEl0Ci1pcyBjdXJy
ZW50bHkgX3Vuc2FmZV8gdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJvbSB0d28gdGhy
ZWFkcwotY29uY3VycmVudGx5IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cykuICBJbiBt
b3N0IHRlc3RzIHRoaXMgaXMKLW5vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5IHRoZSBhc3NlcnRpb25z
IGFyZSBkb25lIGluIHRoZSBtYWluIHRocmVhZC4gSWYKLXlvdSB3YW50IHRvIGhlbHAsIHlvdSBj
YW4gdm9sdW50ZWVyIHRvIGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5Ci1zeW5jaHJvbml6YXRpb24g
cHJpbWl0aXZlcyBpbiBgZ3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvUHVtcE1hbnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvUHVt
cE1hbnVhbC5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE4NGYxNTNjYTJlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9QdW1wTWFudWFsLm1kCisrKyAvZGV2
L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLQotCi08Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVs
IGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCi0KLSMgVGhlIFByb2JsZW0gIwot
Ci1UZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkg
Y2xhc3NlcywKLWZ1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qg
b25seSkgaW4gdGhlIG51bWJlciBvZgotYXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBv
ZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKLWVycm9yLXByb25lIHdvcmsuCi0KLVZhcmlh
ZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2Js
ZW0uCi1Ib3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysg
Y29tbWl0dGVlLCBuZWl0aGVyCi1pcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBw
b3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5Ci1hcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9p
Y2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKLXBvcnRhYmxlLiBBbmQg
dGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgotCi1BcyBhIHJlc3VsdCwgYXV0
aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KLWdl
bmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0
aGF0IGl0J3MKLXRlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJl
ZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgotdGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJl
IG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCi1leGFtcGxlLCBhIHNtYWxsIGNoYW5n
ZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKLW5vbi1pbnR1
aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lh
bGx5Ci1wYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2RlLgotCi0jIE91ciBT
b2x1dGlvbiAjCi0KLVB1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWlu
ZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQotUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGls
aXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Ci1wcmVmZXIpIGlzIGEgc2lt
cGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKLXBy
b2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2Rl
IHBsdXMgbWV0YQotY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEg
Y29kZSBjYW4gaGFuZGxlCi1pdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlv
bnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKLWRlZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywg
YW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCi12aWV3IGl0IGFzIGEgc21hbGwg
RG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBpcwotZGVzaWduZWQg
dG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9k
ZSwKLWZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUg
YW5kIGVhc3kgdG8KLW1haW50YWluLgotCi0jIyBIaWdobGlnaHRzICMjCi0KLSAgKiBUaGUgaW1w
bGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBw
b3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3Mg
Y3Jvc3MgcGxhdGZvcm1zLgotICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0
IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0
aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAg
Y29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgotICAq
IFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4K
LSAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9k
ZS4KLQotIyMgRXhhbXBsZXMgIyMKLQotVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1l
dGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tl
dHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGlu
ZSk6Ci0KLWBgYAotJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4K
LSRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkg
KGluY2x1c2l2ZSkuCi0kZm9yIGkgW1sKLSAgICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KLS8v
IEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCi0kcmFuZ2UgaiAxLi5pCi10
ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KLWNsYXNzIEZvbyRp
IHsKLSRpZiBpID09IDAgW1sKLSAgYmxhaCBhOwotXV0gJGVsaWYgaSA8PSAyIFtbCi0gIGJsYWgg
YjsKLV1dICRlbHNlIFtbCi0gIGJsYWggYzsKLV1dCi19OwotCi1dXQotYGBgCi0KLXdpbGwgYmUg
dHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKLQotYGBgCi0vLyBGb28wIGRvZXMg
YmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNsYXNzIEZv
bzAgewotICBibGFoIGE7Ci19OwotCi0vLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGlj
YXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Ci1jbGFzcyBGb28xIHsKLSAg
YmxhaCBiOwotfTsKLQotLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCi10
ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLWNsYXNzIEZvbzIg
ewotICBibGFoIGI7Ci19OwotCi0vLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRl
cy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFt
ZSBBMz4KLWNsYXNzIEZvbzMgewotICBibGFoIGM7Ci19OwotYGBgCi0KLUluIGFub3RoZXIgZXhh
bXBsZSwKLQotYGBgCi0kcmFuZ2UgaSAxLi5uCi1GdW5jKCRmb3IgaSArIFtbYSRpXV0pOwotJCQg
VGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0
aW9ucy4KLWBgYAotCi13aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3
aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgotCi1g
YGAKLUZ1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KLUZ1bmMoYTEpOyAgICAgICAg
ICAgIC8vIElmIG4gaXMgMS4KLUZ1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KLUZ1
bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KLS8vIEFuZCBzbyBvbi4uLgotYGBgCi0K
LSMjIENvbnN0cnVjdHMgIyMKLQotV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3Jh
bW1pbmcgY29uc3RydWN0czoKLQotfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQg
Y29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVu
dCBtZXRhIGxleGljYWwgYmxvY2suIHwKLXw6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGAkcmFuZ2UgaWQgZXhwLi5leHBgIHwgU2V0
cyB0aGUgcmFuZ2Ugb2YgYW4gaXRlcmF0aW9uIHZhcmlhYmxlLCB3aGljaCBjYW4gYmUgcmV1c2Vk
IGluIG11bHRpcGxlIGxvb3BzIGxhdGVyLiAgICAgICAgICB8Ci18IGAkZm9yIGlkIHNlcCBbWyBj
b2RlIF1dYCB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVm
aW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAotfCBgJCgk
KWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwg
YCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlv
biB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
Ci18IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAotfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGlj
YWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMr
KyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkJCBjb21tZW50YCAgICB8IE1l
dGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0qKk5vdGU6KiogVG8gZ2l2
ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKLWNv
ZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVy
IGAkZm9yIGZvb2AKLW9yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5
b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCi12ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRo
ZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5Ci1uZWVkIHRvIGlu
c2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBz
aG93Ci11cCBpbiB5b3VyIG91dHB1dC4KLQotIyMgR3JhbW1hciAjIwotCi1gYGAKLWNvZGUgOjo9
IGF0b21pY19jb2RlKgotYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKLSAgICB8ICR2YXIg
aWQgPSBbWyBjb2RlIF1dCi0gICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKLSAgICB8ICRmb3IgaWQg
c2VwIFtbIGNvZGUgXV0KLSAgICB8ICQoJCkKLSAgICB8ICRpZAotICAgIHwgJChleHApCi0gICAg
fCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKLSAgICB8IFtbIGNvZGUgXV0KLSAgICB8
IGNwcF9jb2RlCi1zZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCi1lbHNlX2JyYW5jaCA6
Oj0gJGVsc2UgW1sgY29kZSBdXQotICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFu
Y2gKLSAgICB8IGVtcHR5X3N0cmluZwotZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRo
b25fc3ludGF4Ci1gYGAKLQotIyMgQ29kZSAjIwotCi1Zb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBj
b2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oLi4vc2NyaXB0cy9wdW1wLnB5KS4gSXQg
aXMgc3RpbGwKLXZlcnkgdW5wb2xpc2hlZCBhbmQgbGFja3MgYXV0b21hdGVkIHRlc3RzLCBhbHRo
b3VnaCBpdCBoYXMgYmVlbgotc3VjY2Vzc2Z1bGx5IHVzZWQgbWFueSB0aW1lcy4gSWYgeW91IGZp
bmQgYSBjaGFuY2UgdG8gdXNlIGl0IGluIHlvdXIKLXByb2plY3QsIHBsZWFzZSBsZXQgdXMga25v
dyB3aGF0IHlvdSB0aGluayEgIFdlIGFsc28gd2VsY29tZSBoZWxwIG9uCi1pbXByb3ZpbmcgUHVt
cC4KLQotIyMgUmVhbCBFeGFtcGxlcyAjIwotCi1Zb3UgY2FuIGZpbmQgcmVhbC13b3JsZCBhcHBs
aWNhdGlvbnMgb2YgUHVtcCBpbiBbR29vZ2xlIFRlc3RdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9j
b2Rlc2VhcmNoP3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUzQSUyRiUyRmdvb2ds
ZXRlc3RcLmdvb2dsZWNvZGVcLmNvbSkgYW5kIFtHb29nbGUgTW9ja10oaHR0cDovL3d3dy5nb29n
bGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNBJTJG
JTJGZ29vZ2xlbW9ja1wuZ29vZ2xlY29kZVwuY29tKS4gIFRoZSBzb3VyY2UgZmlsZSBgZm9vLmgu
cHVtcGAgZ2VuZXJhdGVzIGBmb28uaGAuCi0KLSMjIFRpcHMgIyMKLQotICAqIElmIGEgbWV0YSB2
YXJpYWJsZSBpcyBmb2xsb3dlZCBieSBhIGxldHRlciBvciBkaWdpdCwgeW91IGNhbiBzZXBhcmF0
ZSB0aGVtIHVzaW5nIGBbW11dYCwgd2hpY2ggaW5zZXJ0cyBhbiBlbXB0eSBzdHJpbmcuIEZvciBl
eGFtcGxlIGBGb28kaltbXV1IZWxwZXJgIGdlbmVyYXRlIGBGb28xSGVscGVyYCB3aGVuIGBqYCBp
cyAxLgotICAqIFRvIGF2b2lkIGV4dHJhLWxvbmcgUHVtcCBzb3VyY2UgbGluZXMsIHlvdSBjYW4g
YnJlYWsgYSBsaW5lIGFueXdoZXJlIHlvdSB3YW50IGJ5IGluc2VydGluZyBgW1tdXWAgZm9sbG93
ZWQgYnkgYSBuZXcgbGluZS4gU2luY2UgYW55IG5ldy1saW5lIGNoYXJhY3RlciBuZXh0IHRvIGBb
W2Agb3IgYF1dYCBpcyBpZ25vcmVkLCB0aGUgZ2VuZXJhdGVkIGNvZGUgd29uJ3QgY29udGFpbiB0
aGlzIG5ldyBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9TYW1wbGVzLm1kIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9TYW1wbGVzLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmMjFkMjAwNTY3MzUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1NhbXBs
ZXMubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1JZiB5b3UncmUgbGlrZSB1cywg
eW91J2QgbGlrZSB0byBsb29rIGF0IHNvbWUgR29vZ2xlIFRlc3Qgc2FtcGxlIGNvZGUuICBUaGUK
LVtzYW1wbGVzIGZvbGRlcl0oLi4vc2FtcGxlcykgaGFzIGEgbnVtYmVyIG9mIHdlbGwtY29tbWVu
dGVkIHNhbXBsZXMgc2hvd2luZyBob3cgdG8gdXNlIGEKLXZhcmlldHkgb2YgR29vZ2xlIFRlc3Qg
ZmVhdHVyZXMuCi0KLSAgKiBbU2FtcGxlICMxXSguLi9zYW1wbGVzL3NhbXBsZTFfdW5pdHRlc3Qu
Y2MpIHNob3dzIHRoZSBiYXNpYyBzdGVwcyBvZiB1c2luZyBHb29nbGUgVGVzdCB0byB0ZXN0IEMr
KyBmdW5jdGlvbnMuCi0gICogW1NhbXBsZSAjMl0oLi4vc2FtcGxlcy9zYW1wbGUyX3VuaXR0ZXN0
LmNjKSBzaG93cyBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEgY2xhc3Mgd2l0aCBtdWx0
aXBsZSBtZW1iZXIgZnVuY3Rpb25zLgotICAqIFtTYW1wbGUgIzNdKC4uL3NhbXBsZXMvc2FtcGxl
M191bml0dGVzdC5jYykgdXNlcyBhIHRlc3QgZml4dHVyZS4KLSAgKiBbU2FtcGxlICM0XSguLi9z
YW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MpIGlzIGFub3RoZXIgYmFzaWMgZXhhbXBsZSBvZiB1
c2luZyBHb29nbGUgVGVzdC4KLSAgKiBbU2FtcGxlICM1XSguLi9zYW1wbGVzL3NhbXBsZTVfdW5p
dHRlc3QuY2MpIHRlYWNoZXMgaG93IHRvIHJldXNlIGEgdGVzdCBmaXh0dXJlIGluIG11bHRpcGxl
IHRlc3QgY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZpeHR1cmVzIGZyb20gaXQuCi0gICogW1NhbXBs
ZSAjNl0oLi4vc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjKSBkZW1vbnN0cmF0ZXMgdHlwZS1w
YXJhbWV0ZXJpemVkIHRlc3RzLgotICAqIFtTYW1wbGUgIzddKC4uL3NhbXBsZXMvc2FtcGxlN191
bml0dGVzdC5jYykgdGVhY2hlcyB0aGUgYmFzaWNzIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHMuCi0gICogW1NhbXBsZSAjOF0oLi4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBzaG93
cyB1c2luZyBgQ29tYmluZSgpYCBpbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotICAqIFtT
YW1wbGUgIzldKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykgc2hvd3MgdXNlIG9mIHRo
ZSBsaXN0ZW5lciBBUEkgdG8gbW9kaWZ5IEdvb2dsZSBUZXN0J3MgY29uc29sZSBvdXRwdXQgYW5k
IHRoZSB1c2Ugb2YgaXRzIHJlZmxlY3Rpb24gQVBJIHRvIGluc3BlY3QgdGVzdCByZXN1bHRzLgot
ICAqIFtTYW1wbGUgIzEwXSguLi9zYW1wbGVzL3NhbXBsZTEwX3VuaXR0ZXN0LmNjKSBzaG93cyB1
c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQgYSBwcmltaXRpdmUgbWVtb3J5IGxl
YWsgY2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9BZHZhbmNlZEd1
aWRlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0FkdmFuY2VkR3VpZGUubWQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZTE5YzI2ZmRmZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2RvY3MvVjFfNV9BZHZhbmNlZEd1aWRlLm1kCisrKyAvZGV2L251bGwKQEAgLTEs
MjA5NiArMCwwIEBACi0KLQotTm93IHRoYXQgeW91IGhhdmUgcmVhZCBbUHJpbWVyXShWMV81X1By
aW1lci5tZCkgYW5kIGxlYXJuZWQgaG93IHRvIHdyaXRlIHRlc3RzCi11c2luZyBHb29nbGUgVGVz
dCwgaXQncyB0aW1lIHRvIGxlYXJuIHNvbWUgbmV3IHRyaWNrcy4gVGhpcyBkb2N1bWVudAotd2ls
bCBzaG93IHlvdSBtb3JlIGFzc2VydGlvbnMgYXMgd2VsbCBhcyBob3cgdG8gY29uc3RydWN0IGNv
bXBsZXgKLWZhaWx1cmUgbWVzc2FnZXMsIHByb3BhZ2F0ZSBmYXRhbCBmYWlsdXJlcywgcmV1c2Ug
YW5kIHNwZWVkIHVwIHlvdXIKLXRlc3QgZml4dHVyZXMsIGFuZCB1c2UgdmFyaW91cyBmbGFncyB3
aXRoIHlvdXIgdGVzdHMuCi0KLSMgTW9yZSBBc3NlcnRpb25zICMKLQotVGhpcyBzZWN0aW9uIGNv
dmVycyBzb21lIGxlc3MgZnJlcXVlbnRseSB1c2VkLCBidXQgc3RpbGwgc2lnbmlmaWNhbnQsCi1h
c3NlcnRpb25zLgotCi0jIyBFeHBsaWNpdCBTdWNjZXNzIGFuZCBGYWlsdXJlICMjCi0KLVRoZXNl
IHRocmVlIGFzc2VydGlvbnMgZG8gbm90IGFjdHVhbGx5IHRlc3QgYSB2YWx1ZSBvciBleHByZXNz
aW9uLiBJbnN0ZWFkLAotdGhleSBnZW5lcmF0ZSBhIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBkaXJlY3Rs
eS4gTGlrZSB0aGUgbWFjcm9zIHRoYXQgYWN0dWFsbHkKLXBlcmZvcm0gYSB0ZXN0LCB5b3UgbWF5
IHN0cmVhbSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UgaW50byB0aGUgdGhlbS4KLQotfCBgU1VD
Q0VFRCgpO2AgfAotfDotLS0tLS0tLS0tLS0tfAotCi1HZW5lcmF0ZXMgYSBzdWNjZXNzLiBUaGlz
IGRvZXMgTk9UIG1ha2UgdGhlIG92ZXJhbGwgdGVzdCBzdWNjZWVkLiBBIHRlc3QgaXMKLWNvbnNp
ZGVyZWQgc3VjY2Vzc2Z1bCBvbmx5IGlmIG5vbmUgb2YgaXRzIGFzc2VydGlvbnMgZmFpbCBkdXJp
bmcgaXRzIGV4ZWN1dGlvbi4KLQotTm90ZTogYFNVQ0NFRUQoKWAgaXMgcHVyZWx5IGRvY3VtZW50
YXJ5IGFuZCBjdXJyZW50bHkgZG9lc24ndCBnZW5lcmF0ZSBhbnkKLXVzZXItdmlzaWJsZSBvdXRw
dXQuIEhvd2V2ZXIsIHdlIG1heSBhZGQgYFNVQ0NFRUQoKWAgbWVzc2FnZXMgdG8gR29vZ2xlIFRl
c3Qncwotb3V0cHV0IGluIHRoZSBmdXR1cmUuCi0KLXwgYEZBSUwoKTtgICB8IGBBRERfRkFJTFVS
RSgpO2AgfAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18Ci0KLWBGQUlMKmAgZ2Vu
ZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSB3aGlsZSBgQUREX0ZBSUxVUkUqYCBnZW5lcmF0ZXMgYSBu
b25mYXRhbAotZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0
aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Npb24sCi1kZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1
Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCi1z
b21ldGhpbmcgbGlrZToKLQotYGBgCi1zd2l0Y2goZXhwcmVzc2lvbikgewotICBjYXNlIDE6IC4u
LiBzb21lIGNoZWNrcyAuLi4KLSAgY2FzZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKLSAgLi4u
Ci0gIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Ci19Ci1gYGAK
LQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIEV4Y2VwdGlvbiBB
c3NlcnRpb25zICMjCi0KLVRoZXNlIGFyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBj
b2RlIHRocm93cyAob3IgZG9lcyBub3QKLXRocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVu
IHR5cGU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiog
fCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBf
ZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNl
cHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRo
ZSBnaXZlbiB0eXBlICB8Ci18IGBBU1NFUlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAg
ICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAg
ICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAg
ICAgfAotfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAg
IHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9z
dGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKLQotRXhh
bXBsZXM6Ci0KLWBgYAotQVNTRVJUX1RIUk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7Ci0KLUVY
UEVDVF9OT19USFJPVyh7Ci0gIGludCBuID0gNTsKLSAgQmFyKCZuKTsKLX0pOwotYGBgCi0KLV9B
dmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgot
Ci0jIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCi0K
LUV2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRo
ZXkgY2FuIG5ldmVyIGJlCi1jb21wbGV0ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29k
IGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2VuYXJpb3MKLWEgdXNlciBtaWdodCBydW4g
aW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVF
KClgCi10byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIg
bWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCi1vZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVl
cyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCi11bmRl
cnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29z
ZSB0byBjb25zdHJ1Y3QgdGhlCi1mYWlsdXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFt
aW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVyLCB0aGlzCi1pcyBhd2t3YXJkIGVz
cGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVu
c2l2ZSB0bwotZXZhbHVhdGUuCi0KLUdvb2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJl
bnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06Ci0KLSMjIyBVc2luZyBhbiBFeGlzdGlu
ZyBCb29sZWFuIEZ1bmN0aW9uICMjIwotCi1JZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24g
b3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAgKG9yIGEgdHlwZQotdGhhdCBjYW4gYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJl
ZGljYXRlCi1hc3NlcnRpb25fIHRvIGdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQg
Zm9yIGZyZWU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFs
MV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEo
dmFsMSlfIHJldHVybnMgdHJ1ZSB8Ci18IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFs
Ml9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQy
KHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAotfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4u
ICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICB8Ci0KLUluIHRoZSBhYm92ZSwgX3By
ZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQot
X3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFz
c2VydGlvbiBzdWNjZWVkcwotaWYgdGhlIHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFw
cGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5kIGZhaWxzCi1vdGhlcndpc2UuIFdoZW4g
dGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50
LiBJbgotZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9u
Y2UuCi0KLUhlcmUncyBhbiBleGFtcGxlLiBHaXZlbgotCi1gYGAKLS8vIFJldHVybnMgdHJ1ZSBp
ZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBleGNlcHQgMS4KLWJvb2wgTXV0dWFs
bHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KLWNvbnN0IGludCBhID0gMzsKLWNvbnN0IGlu
dCBiID0gNDsKLWNvbnN0IGludCBjID0gMTA7Ci1gYGAKLQotdGhlIGFzc2VydGlvbiBgRVhQRUNU
X1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKLWFz
c2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdp
dGggdGhlIG1lc3NhZ2UKLQotPHByZT4KLSFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3
aGVyZTxicj4KLWIgaXMgNDxicj4KLWMgaXMgMTA8YnI+Ci08L3ByZT4KLQotKipOb3RlczoqKgot
Ci0gIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24g
dG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxl
YXNlIHNlZSBbdGhpc10oVjFfNV9GQVEubWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11
bmRlZmluZWQtcmVmZXJlbmNlcy10by1zb21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVz
LWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1pbi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9y
IGhvdyB0byByZXNvbHZlIGl0LgotICAxLiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRp
Y2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5
IGFzc2VydGlvbiwgbGV0IHVzIGtub3cuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjCi0KLSMjIyBVc2luZyBhIEZ1bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25S
ZXN1bHQgIyMjCi0KLVdoaWxlIGBFWFBFQ1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5
IGZvciBhIHF1aWNrIGpvYiwgdGhlCi1zeW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhh
dmUgdG8gdXNlIGRpZmZlcmVudCBtYWNyb3MgZm9yCi1kaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0
IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRoYW4gQysrLiAgVGhlCi1gOjp0ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0aGlzIHByb2JsZW0uCi0KLUFuIGBBc3NlcnRpb25SZXN1
bHRgIG9iamVjdCByZXByZXNlbnRzIHRoZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCi0od2hldGhl
ciBpdCdzIGEgc3VjY2VzcyBvciBhIGZhaWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2Up
LiAgWW91Ci1jYW4gY3JlYXRlIGFuIGBBc3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVz
ZSBmYWN0b3J5Ci1mdW5jdGlvbnM6Ci0KLWBgYAotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBS
ZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3Nl
cnRpb24gaGFzCi0vLyBzdWNjZWVkZWQuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2Vz
cygpOwotCi0vLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUg
dGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBmYWlsZWQuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0
aW9uRmFpbHVyZSgpOwotCi19Ci1gYGAKLQotWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVy
YXRvciB0byBzdHJlYW0gbWVzc2FnZXMgdG8gdGhlCi1gQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3Qu
Ci0KLVRvIHByb3ZpZGUgbW9yZSByZWFkYWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlv
bnMKLShlLmcuIGBFWFBFQ1RfVFJVRSgpYCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRo
YXQgcmV0dXJucwotYEFzc2VydGlvblJlc3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFt
cGxlLCBpZiB5b3UgZGVmaW5lCi1gSXNFdmVuKClgIGFzOgotCi1gYGAKLTo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAoKG4gJSAyKSA9PSAwKQotICAgIHJl
dHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgZWxzZQotICAgIHJldHVybiA6
OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKLX0KLWBgYAot
Ci1pbnN0ZWFkIG9mOgotCi1gYGAKLWJvb2wgSXNFdmVuKGludCBuKSB7Ci0gIHJldHVybiAobiAl
IDIpID09IDA7Ci19Ci1gYGAKLQotdGhlIGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElz
RXZlbihGaWIoNCkpKWAgd2lsbCBwcmludDoKLQotPHByZT4KLVZhbHVlIG9mOiAhSXNFdmVuKEZp
Yig0KSk8YnI+Ci1BY3R1YWw6IGZhbHNlICgqMyBpcyBvZGQqKTxicj4KLUV4cGVjdGVkOiB0cnVl
PGJyPgotPC9wcmU+Ci0KLWluc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQotCi08cHJlPgotVmFsdWUg
b2Y6ICFJc0V2ZW4oRmliKDQpKTxicj4KLUFjdHVhbDogZmFsc2U8YnI+Ci1FeHBlY3RlZDogdHJ1
ZTxicj4KLTwvcHJlPgotCi1JZiB5b3Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBpbiBgRVhQ
RUNUX0ZBTFNFYCBhbmQgYEFTU0VSVF9GQUxTRWAKLWFzIHdlbGwsIGFuZCBhcmUgZmluZSB3aXRo
IG1ha2luZyB0aGUgcHJlZGljYXRlIHNsb3dlciBpbiB0aGUgc3VjY2VzcwotY2FzZSwgeW91IGNh
biBzdXBwbHkgYSBzdWNjZXNzIG1lc3NhZ2U6Ci0KLWBgYAotOjp0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgSXNFdmVuKGludCBuKSB7Ci0gIGlmICgobiAlIDIpID09IDApCi0gICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8IG4gPDwgIiBpcyBldmVuIjsKLSAgZWxzZQot
ICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2Rk
IjsKLX0KLWBgYAotCi1UaGVuIHRoZSBzdGF0ZW1lbnQgYEVYUEVDVF9GQUxTRShJc0V2ZW4oRmli
KDYpKSlgIHdpbGwgcHJpbnQKLQotPHByZT4KLVZhbHVlIG9mOiAhSXNFdmVuKEZpYig2KSk8YnI+
Ci1BY3R1YWw6IHRydWUgKDggaXMgZXZlbik8YnI+Ci1FeHBlY3RlZDogZmFsc2U8YnI+Ci08L3By
ZT4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24g
MS40LjEuCi0KLSMjIyBVc2luZyBhIFByZWRpY2F0ZS1Gb3JtYXR0ZXIgIyMjCi0KLUlmIHlvdSBm
aW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJF
RCpgIGFuZAotYChBU1NFUlR8RVhQRUNUKV8oVFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBv
ciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCi1wcmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFt
aW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBpbnN0ZWFkIHVzZSB0aGUKLWZvbGxvd2luZyBfcHJl
ZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25zXyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhl
Ci1tZXNzYWdlIGlzIGZvcm1hdHRlZDoKLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25m
YXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVE
X0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEp
XyBpcyBzdWNjZXNzZnVsIHwKLXwgYEFTU0VSVF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQy
LCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNUX1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIs
IHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9mb3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNz
ZnVsIHwKLXwgYC4uLmAgICAgICAgICAgICAgICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBg
Li4uYCAgICAgICAgfAotCi1UaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2
aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBpcyB0aGF0IGluc3RlYWQgb2YKLWEgcHJlZGljYXRl
LCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0
dGVyXwotKF9wcmVkXF9mb3JtYXRuXyksIHdoaWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3
aXRoIHRoZSBzaWduYXR1cmU6Ci0KLWA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNh
dGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBfZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9g
LCAuLi4gY29uc3QgY2hhciogYF9leHBybl9gLCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4u
LiBUbiBgX3ZhbG5fYCk7YAotCi13aGVyZSBfdmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5f
IGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVkaWNhdGUKLWFyZ3VtZW50cywgYW5kIF9leHByMV8s
IF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8gYXJlIHRoZSBjb3JyZXNwb25kaW5nCi1leHByZXNz
aW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBg
VDJgLCAuLi4sIGFuZAotYFRuYCBjYW4gYmUgZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5j
ZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFuCi1hcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91
IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBgRm9vYCBvciBgY29uc3QgRm9vJmAsCi13aGljaGV2
ZXIgaXMgYXBwcm9wcmlhdGUuCi0KLUEgcHJlZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgdG8gaW5kaWNhdGUKLXdoZXRoZXIgdGhl
IGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9yIG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBz
dWNoIGFuCi1vYmplY3QgaXMgdG8gY2FsbCBvbmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6
Ci0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGltcHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0
aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2ggdXNlcyBgRVhQRUNUX1BSRUQyKClgOgotCi1gYGAK
LS8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHByaW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4s
Ci0vLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUgbXV0dWFsbHkgcHJpbWUuCi1pbnQgU21hbGxlc3RQ
cmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGludCBuKSB7IC4uLiB9Ci0KLS8vIEEgcHJlZGljYXRl
LWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRoYXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBw
cmltZS4KLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29u
c3QgY2hhciogbV9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbikgewotICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKLSAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIDo6dGVz
dGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBu
X2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5kICIgPDwgbgotICAgICAgPDwgIikgYXJlIG5vdCBt
dXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgotICAg
ICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IobSwgbik7Ci19Ci1gYGAKLQotV2l0aCB0
aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdlIGNhbiB1c2UKLQotYGBgCi1FWFBFQ1RfUFJFRF9G
T1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUsIGIsIGMpOwotYGBgCi0KLXRvIGdlbmVyYXRlIHRo
ZSBtZXNzYWdlCi0KLTxwcmU+Ci1iIGFuZCBjICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBw
cmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgMi48YnI+Ci08L3ByZT4KLQotQXMg
eW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVj
ZWQgZWFybGllciBhcmUKLXNwZWNpYWwgY2FzZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZP
Uk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRoZW0gYXJlCi1pbmRlZWQgZGVmaW5lZCB1c2luZyBg
KEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFUKmAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgotCi0KLSMjIEZsb2F0aW5nLVBvaW50IENvbXBhcmlzb24gIyMKLQotQ29t
cGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2Zm
IGVycm9ycywgaXQgaXMKLXZlcnkgdW5saWtlbHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdp
bGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3JlLAotYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFy
aXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4gQW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cwotY2Fu
IGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBubyBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29y
a3MuIEl0J3MgYmV0dGVyIHRvCi1jb21wYXJlIGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91
bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3NlIHRvIDAgZHVlIHRvCi10aGUgbG9zcyBvZiBwcmVj
aXNpb24gdGhlcmUuCi0KLUluIGdlbmVyYWwsIGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29u
IHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5lZWRzIHRvCi1jYXJlZnVsbHkgY2hvb3NlIHRoZSBl
cnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgot
dGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3QgUGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0
LCBhbmQgR29vZ2xlIFRlc3QKLXByb3ZpZGVzIGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBk
ZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRlIGxvbmc7IGlmIHlvdQotd2FudCB0byBsZWFybiBt
b3JlLCBzZWUKLVt0aGlzIGFydGljbGUgb24gZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5j
eWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9jb21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRz
Lmh0bSkuCi0KLSMjIyBGbG9hdGluZy1Qb2ludCBNYWNyb3MgIyMjCi0KLXwgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Ci18IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9G
TE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMg
YXJlIGFsbW9zdCBlcXVhbCB8Ci18IGBBU1NFUlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVh
bF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUg
dHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFsIHwKLQotQnkgImFsbW9zdCBlcXVh
bCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMgYXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAot
b3RoZXIuCi0KLVRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRo
ZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5v
bmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05F
QVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2
YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQg
X3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBnaXZlbiBhYnNvbHV0ZSBlcnJvciB8Ci0KLV9BdmFp
bGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgRmxvYXRpbmctUG9pbnQgUHJl
ZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMjCi0KLVNvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0
aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRoYXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKLXRvIGF2
b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFjcm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGlj
YXRlLWZvcm1hdAotZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2Vy
dGlvbiBtYWNyb3MgKGUuZy4KLWBFWFBFQ1RfUFJFRF9GT1JNQVQyYCwgZXRjKS4KLQotYGBgCi1F
WFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7Ci1FWFBF
Q1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6RG91YmxlTEUsIHZhbDEsIHZhbDIpOwotYGBgCi0K
LVZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxlc3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBf
dmFsMl8uIFlvdSBjYW4KLXJlcGxhY2UgYEVYUEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92
ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9GT1JNQVQyYC4KLQotX0F2YWlsYWJpbGl0eV86IExp
bnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFdpbmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCi0K
LVRoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3IgYEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4K
LQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVy
aWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Np
b25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBf
ZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBIUkVTVUxUYCB8Ci18IGBBU1NFUlRfSFJFU1VMVF9G
QUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAgfCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhw
cmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Npb25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAot
Ci1UaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3Ig
bWVzc2FnZQotYXNzb2NpYXRlZCB3aXRoIHRoZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBf
ZXhwcmVzc2lvbl8uCi0KLVlvdSBtaWdodCB1c2UgdGhlbSBsaWtlIHRoaXM6Ci0KLWBgYAotQ0Nv
bVB0ciBzaGVsbDsKLUFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3Rh
bmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7Ci1DQ29tVmFyaWFudCBlbXB0eTsKLUFTU0VSVF9I
UkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hlbGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5
LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7Ci1gYGAKLQotX0F2YWlsYWJpbGl0eV86IFdpbmRvd3Mu
Ci0KLSMjIFR5cGUgQXNzZXJ0aW9ucyAjIwotCi1Zb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCi1g
YGAKLTo6dGVzdGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKTsKLWBgYAotdG8gYXNz
ZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQyYCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24g
ZG9lcwotbm90aGluZyBpZiB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBl
cyBhcmUgZGlmZmVyZW50LAotdGhlIGZ1bmN0aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUs
IGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZQotd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBv
biB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRoZSBhY3R1YWwgdmFsdWVzIG9mCi1gVDFgIGFuZCBg
VDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVsIGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgotCi1fQ2F2
ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1lbWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBs
YXRlIG9yIGEKLWZ1bmN0aW9uIHRlbXBsYXRlLCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4o
KWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwotdGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4g
IEZvciBleGFtcGxlLCBnaXZlbjoKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
byB7Ci0gcHVibGljOgotICB2b2lkIEJhcigpIHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBl
RXE8aW50LCBUPigpOyB9Ci19OwotYGBgCi10aGUgY29kZToKLWBgYAotdm9pZCBUZXN0MSgpIHsg
Rm9vPGJvb2w+IGZvbzsgfQotYGBgCi13aWxsIF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJy
b3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBpcyBuZXZlcgotYWN0dWFsbHkgaW5zdGFudGlhdGVk
LiAgSW5zdGVhZCwgeW91IG5lZWQ6Ci1gYGAKLXZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287
IGZvby5CYXIoKTsgfQotYGBgCi10byBjYXVzZSBhIGNvbXBpbGVyIGVycm9yLgotCi1fQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KLQotIyMg
QXNzZXJ0aW9uIFBsYWNlbWVudCAjIwotCi1Zb3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBD
KysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QKLWhhdmUgdG8gYmUgYSBtZXRo
b2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCi10aGF0
IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBhIGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBB
U1NFUlRfKmApCi1jYW4gb25seSBiZSB1c2VkIGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4g
VGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCi1Hb29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9u
cy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12b2lkIGZ1bmN0aW9uCi15b3UnbGwgZ2V0IGEgY29u
ZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQotYCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3Jl
ZCBhcyBpdCBvdWdodCB0byBiZSJgLgotCi1JZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBp
biBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub24tdm9pZCwgb25lIG9wdGlvbgotaXMgdG8gbWFr
ZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3Rl
YWQuIEZvcgotZXhhbXBsZSwgeW91IGNhbiByZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lk
IEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlvdQotbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJl
c3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJsZSB2YWx1ZSBldmVuIHdoZW4gdGhlCi1mdW5jdGlv
biByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRg
LCB5b3UgY2FuIHVzZQotYW55IGFzc2VydGlvbiBpbnNpZGUgb2YgaXQuCi0KLUlmIGNoYW5naW5n
IHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVz
ZQotYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBg
QUREX0ZBSUxVUkUqYCBhbmQKLWBFWFBFQ1RfKmAuCi0KLV9Ob3RlXzogQ29uc3RydWN0b3JzIGFu
ZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNpZGVyZWQgdm9pZC1yZXR1cm5pbmcKLWZ1bmN0aW9u
cywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlv
dSBtYXkgbm90IHVzZQotZmF0YWwgYXNzZXJ0aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29t
cGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4gQSBzaW1wbGUKLXdvcmthcm91bmQgaXMgdG8gdHJh
bnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRv
IGEKLXByaXZhdGUgdm9pZC1yZXR1cm5pbmcgbWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJl
IGF3YXJlIHRoYXQgYSBmYXRhbAotYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBk
b2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQgdGVzdCwgYXMgeW91cgotaW50dWl0aW9uIG1p
Z2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5
LCBwb3NzaWJseQotbGVhdmluZyB5b3VyIG9iamVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3Rl
ZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwKLWFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1
Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3QgaW4gYQotcGFydGlhbGx5LWRlc3RydWN0ZWQgc3Rh
dGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxseSBpbiB0aGVzZSBzaXR1YXRpb25zIQotCi0jIERl
YXRoIFRlc3RzICMKLQotSW4gbWFueSBhcHBsaWNhdGlvbnMsIHRoZXJlIGFyZSBhc3NlcnRpb25z
IHRoYXQgY2FuIGNhdXNlIGFwcGxpY2F0aW9uIGZhaWx1cmUKLWlmIGEgY29uZGl0aW9uIGlzIG5v
dCBtZXQuIFRoZXNlIHNhbml0eSBjaGVja3MsIHdoaWNoIGVuc3VyZSB0aGF0IHRoZSBwcm9ncmFt
Ci1pcyBpbiBhIGtub3duIGdvb2Qgc3RhdGUsIGFyZSB0aGVyZSB0byBmYWlsIGF0IHRoZSBlYXJs
aWVzdCBwb3NzaWJsZSB0aW1lIGFmdGVyCi1zb21lIHByb2dyYW0gc3RhdGUgaXMgY29ycnVwdGVk
LiBJZiB0aGUgYXNzZXJ0aW9uIGNoZWNrcyB0aGUgd3JvbmcgY29uZGl0aW9uLAotdGhlbiB0aGUg
cHJvZ3JhbSBtYXkgcHJvY2VlZCBpbiBhbiBlcnJvbmVvdXMgc3RhdGUsIHdoaWNoIGNvdWxkIGxl
YWQgdG8gbWVtb3J5Ci1jb3JydXB0aW9uLCBzZWN1cml0eSBob2xlcywgb3Igd29yc2UuIEhlbmNl
IGl0IGlzIHZpdGFsbHkgaW1wb3J0YW50IHRvIHRlc3QKLXRoYXQgc3VjaCBhc3NlcnRpb24gc3Rh
dGVtZW50cyB3b3JrIGFzIGV4cGVjdGVkLgotCi1TaW5jZSB0aGVzZSBwcmVjb25kaXRpb24gY2hl
Y2tzIGNhdXNlIHRoZSBwcm9jZXNzZXMgdG8gZGllLCB3ZSBjYWxsIHN1Y2ggdGVzdHMKLV9kZWF0
aCB0ZXN0c18uIE1vcmUgZ2VuZXJhbGx5LCBhbnkgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IGEgcHJv
Z3JhbSB0ZXJtaW5hdGVzCi1pbiBhbiBleHBlY3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0
ZXN0LgotCi1JZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1
cmVzIGluIHlvdXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmct
ZmFpbHVyZXMpLgotCi0jIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0ICMjCi0KLUdvb2dsZSBU
ZXN0IGhhcyB0aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgotCi18
ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmll
cyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDot
LS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBg
RVhQRUNUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3RhdGVtZW50XyBjcmFzaGVz
IHdpdGggdGhlIGdpdmVuIGVycm9yIHwKLXwgYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9z
dGF0ZW1lbnQsIHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVt
ZW50LCByZWdleF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0
aGF0IF9zdGF0ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2
ZXJpZmllcyBub3RoaW5nIHwKLXwgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUs
IHJlZ2V4X2ApOyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9g
KTsgfF9zdGF0ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBj
b2RlIG1hdGNoZXMgX3ByZWRpY2F0ZV8gfAotCi13aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRl
bWVudCB0aGF0IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNzIHRvCi1kaWUsIF9wcmVk
aWNhdGVfIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFu
IGludGVnZXIKLWV4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lv
biB0aGF0IHRoZSBzdGRlcnIgb3V0cHV0IG9mCi1fc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBt
YXRjaC4gTm90ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZhbGlkCi1zdGF0ZW1lbnRf
IChpbmNsdWRpbmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUg
YW4KLWV4cHJlc3Npb24uCi0KLUFzIHVzdWFsLCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQg
dGhlIGN1cnJlbnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCi1gRVhQRUNUYCB2YXJpYW50cyBk
byBub3QuCi0KLSoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4g
dGhhdCB0aGUgcHJvY2VzcwotdGVybWluYXRlcyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1
cyBjb2RlLiAgVGhlcmUgYXJlIHR3bwotcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNz
IGhhcyBjYWxsZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCi13aXRoIGEgbm9uLXplcm8gdmFsdWUs
IG9yIGl0IG1heSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCi0KLVRoaXMgbWVhbnMgdGhhdCBpZiBf
c3RhdGVtZW50XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAwIGV4aXQKLWNvZGUsIGl0
IGlzIF9ub3RfIGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQotYEVY
UEVDVF9FWElUYCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRv
IHJlc3RyaWN0Ci10aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5LgotCi1BIHByZWRpY2F0ZSBo
ZXJlIG11c3QgYWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0
ZXN0Ci1zdWNjZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2ds
ZSBUZXN0IGRlZmluZXMgYSBmZXcKLXByZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29t
bW9uIGNhc2VzOgotCi1gYGAKLTo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQot
YGBgCi0KLVRoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5v
cm1hbGx5IHdpdGggdGhlIGdpdmVuIGV4aXQKLWNvZGUuCi0KLWBgYAotOjp0ZXN0aW5nOjpLaWxs
ZWRCeVNpZ25hbChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgot
YGBgCi0KLVRoaXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxl
ZCBieSB0aGUgZ2l2ZW4gc2lnbmFsLgotCi1UaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVu
aWVudCB3cmFwcGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKLXRoYXQgdmVy
aWZpZXMgdGhlIHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4KLQotTm90ZSB0aGF0IGEg
ZGVhdGggdGVzdCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoKLQotICAxLiBkb2VzIF9z
dGF0ZW1lbnRfIGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Ci0gIDEuIChpbiB0aGUgY2FzZSBv
ZiBgQVNTRVJUX0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBz
YXRpc2Z5IF9wcmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFu
ZCBgRVhQRUNUX0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCi0gIDEu
IGRvZXMgdGhlIHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KLQotSW4gcGFydGljdWxhciwg
aWYgX3N0YXRlbWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWls
dXJlLCBpdCB3aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4KLQotVG8gd3JpdGUg
YSBkZWF0aCB0ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5
b3VyIHRlc3QKLWZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1URVNUKE15KkRlYXRoVGVz
dCosIEZvbykgewotICAvLyBUaGlzIGRlYXRoIHRlc3QgdXNlcyBhIGNvbXBvdW5kIHN0YXRlbWVu
dC4KLSAgQVNTRVJUX0RFQVRIKHsgaW50IG4gPSA1OyBGb28oJm4pOyB9LCAiRXJyb3Igb24gbGlu
ZSAuKiBvZiBGb28oKSIpOwotfQotVEVTVChNeURlYXRoVGVzdCwgTm9ybWFsRXhpdCkgewotICBF
WFBFQ1RfRVhJVChOb3JtYWxFeGl0KCksIDo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCksICJT
dWNjZXNzIik7Ci19Ci1URVNUKE15RGVhdGhUZXN0LCBLaWxsTXlzZWxmKSB7Ci0gIEVYUEVDVF9F
WElUKEtpbGxNeXNlbGYoKSwgOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdLSUxMKSwgIlNl
bmRpbmcgbXlzZWxmIHVuYmxvY2thYmxlIHNpZ25hbCIpOwotfQotYGBgCi0KLXZlcmlmaWVzIHRo
YXQ6Ci0KLSAgKiBjYWxsaW5nIGBGb28oNSlgIGNhdXNlcyB0aGUgcHJvY2VzcyB0byBkaWUgd2l0
aCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSwKLSAgKiBjYWxsaW5nIGBOb3JtYWxFeGl0KClgIGNh
dXNlcyB0aGUgcHJvY2VzcyB0byBwcmludCBgIlN1Y2Nlc3MiYCB0byBzdGRlcnIgYW5kIGV4aXQg
d2l0aCBleGl0IGNvZGUgMCwgYW5kCi0gICogY2FsbGluZyBgS2lsbE15c2VsZigpYCBraWxscyB0
aGUgcHJvY2VzcyB3aXRoIHNpZ25hbCBgU0lHS0lMTGAuCi0KLVRoZSB0ZXN0IGZ1bmN0aW9uIGJv
ZHkgbWF5IGNvbnRhaW4gb3RoZXIgYXNzZXJ0aW9ucyBhbmQgc3RhdGVtZW50cyBhcyB3ZWxsLCBp
ZgotbmVjZXNzYXJ5LgotCi1fSW1wb3J0YW50Ol8gV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0
byBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2YgbmFtaW5nIHlvdXIKLXRlc3QgY2FzZSAobm90IHRl
c3QpIGAqRGVhdGhUZXN0YCB3aGVuIGl0IGNvbnRhaW5zIGEgZGVhdGggdGVzdCwgYXMKLWRlbW9u
c3RyYXRlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gVGhlIGBEZWF0aCBUZXN0cyBBbmQgVGhyZWFk
c2Agc2VjdGlvbiBiZWxvdwotZXhwbGFpbnMgd2h5LgotCi1JZiBhIHRlc3QgZml4dHVyZSBjbGFz
cyBpcyBzaGFyZWQgYnkgbm9ybWFsIHRlc3RzIGFuZCBkZWF0aCB0ZXN0cywgeW91Ci1jYW4gdXNl
IHR5cGVkZWYgdG8gaW50cm9kdWNlIGFuIGFsaWFzIGZvciB0aGUgZml4dHVyZSBjbGFzcyBhbmQg
YXZvaWQKLWR1cGxpY2F0aW5nIGl0cyBjb2RlOgotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OwotCi10eXBlZGVmIEZvb1Rlc3QgRm9vRGVhdGhUZXN0
OwotCi1URVNUX0YoRm9vVGVzdCwgRG9lc1RoaXMpIHsKLSAgLy8gbm9ybWFsIHRlc3QKLX0KLQot
VEVTVF9GKEZvb0RlYXRoVGVzdCwgRG9lc1RoYXQpIHsKLSAgLy8gZGVhdGggdGVzdAotfQotYGBg
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3Ig
YWJvdmUpLCBDeWd3aW4sIGFuZCBNYWMgKHRoZSBsYXR0ZXIgdGhyZWUgYXJlIHN1cHBvcnRlZCBz
aW5jZSB2MS4zLjApLiAgYChBU1NFUlR8RVhQRUNUKV9ERUFUSF9JRl9TVVBQT1JURURgIGFyZSBu
ZXcgaW4gdjEuNC4wLgotCi0jIyBSZWd1bGFyIEV4cHJlc3Npb24gU3ludGF4ICMjCi0KLU9uIFBP
U0lYIHN5c3RlbXMgKGUuZy4gTGludXgsIEN5Z3dpbiwgYW5kIE1hYyksIEdvb2dsZSBUZXN0IHVz
ZXMgdGhlCi1bUE9TSVggZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uXShodHRwOi8vd3d3Lm9w
ZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvYmFzZWRlZnMveGJkX2NoYXAwOS5odG1s
I3RhZ18wOV8wNCkKLXN5bnRheCBpbiBkZWF0aCB0ZXN0cy4gVG8gbGVhcm4gYWJvdXQgdGhpcyBz
eW50YXgsIHlvdSBtYXkgd2FudCB0byByZWFkIHRoaXMgW1dpa2lwZWRpYSBlbnRyeV0oaHR0cDov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRf
UmVndWxhcl9FeHByZXNzaW9ucykuCi0KLU9uIFdpbmRvd3MsIEdvb2dsZSBUZXN0IHVzZXMgaXRz
IG93biBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uCi1pbXBsZW1lbnRhdGlvbi4gSXQgbGFja3Mg
bWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUE9TSVggZXh0ZW5kZWQKLXJlZ3VsYXIgZXhw
cmVzc2lvbnMuICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydCB1bmlvbiAoYCJ4fHkiYCks
Ci1ncm91cGluZyAoYCIoeHkpImApLCBicmFja2V0cyAoYCJbeHldImApLCBhbmQgcmVwZXRpdGlv
biBjb3VudAotKGAieHs1LDd9ImApLCBhbW9uZyBvdGhlcnMuIEJlbG93IGlzIHdoYXQgd2UgZG8g
c3VwcG9ydCAoYEFgIGRlbm90ZXMgYQotbGl0ZXJhbCBjaGFyYWN0ZXIsIHBlcmlvZCAoYC5gKSwg
b3IgYSBzaW5nbGUgYFxcYCBlc2NhcGUgc2VxdWVuY2U7IGB4YAotYW5kIGB5YCBkZW5vdGUgcmVn
dWxhciBleHByZXNzaW9ucy4pOgotCi18IGBjYCB8IG1hdGNoZXMgYW55IGxpdGVyYWwgY2hhcmFj
dGVyIGBjYCB8Ci18Oi0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18
IGBcXGRgIHwgbWF0Y2hlcyBhbnkgZGVjaW1hbCBkaWdpdCAgICAgICAgIHwKLXwgYFxcRGAgfCBt
YXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2ltYWwgZGlnaXQgfAotfCBgXFxm
YCB8IG1hdGNoZXMgYFxmYCAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBcXG5gIHwgbWF0Y2hl
cyBgXG5gICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxccmAgfCBtYXRjaGVzIGBccmAgICAg
ICAgICAgICAgICAgICAgICAgfAotfCBgXFxzYCB8IG1hdGNoZXMgYW55IEFTQ0lJIHdoaXRlc3Bh
Y2UsIGluY2x1ZGluZyBgXG5gIHwKLXwgYFxcU2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhh
dCdzIG5vdCBhIHdoaXRlc3BhY2UgfAotfCBgXFx0YCB8IG1hdGNoZXMgYFx0YCAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBcXHZgIHwgbWF0Y2hlcyBgXHZgICAgICAgICAgICAgICAgICAgICAg
IHwKLXwgYFxcd2AgfCBtYXRjaGVzIGFueSBsZXR0ZXIsIGBfYCwgb3IgZGVjaW1hbCBkaWdpdCB8
Ci18IGBcXFdgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZG9lc24ndCBtYXRj
aCB8Ci18IGBcXGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIgYGNgLCB3aGljaCBt
dXN0IGJlIGEgcHVuY3R1YXRpb24gfAotfCBgLmAgfCBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFj
dGVyIGV4Y2VwdCBgXG5gIHwKLXwgYEE/YCB8IG1hdGNoZXMgMCBvciAxIG9jY3VycmVuY2VzIG9m
IGBBYCB8Ci18IGBBKmAgfCBtYXRjaGVzIDAgb3IgbWFueSBvY2N1cnJlbmNlcyBvZiBgQWAgfAot
fCBgQStgIHwgbWF0Y2hlcyAxIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYF5gIHwg
bWF0Y2hlcyB0aGUgYmVnaW5uaW5nIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNoIGxpbmUp
IHwKLXwgYCRgIHwgbWF0Y2hlcyB0aGUgZW5kIG9mIGEgc3RyaW5nIChub3QgdGhhdCBvZiBlYWNo
IGxpbmUpIHwKLXwgYHh5YCB8IG1hdGNoZXMgYHhgIGZvbGxvd2VkIGJ5IGB5YCAgICAgICB8Ci0K
LVRvIGhlbHAgeW91IGRldGVybWluZSB3aGljaCBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSBvbiB5
b3VyIHN5c3RlbSwKLUdvb2dsZSBUZXN0IGRlZmluZXMgbWFjcm8gYEdURVNUX1VTRVNfUE9TSVhf
UkU9MWAgd2hlbiBpdCB1c2VzIFBPU0lYCi1leHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb25zLCBv
ciBgR1RFU1RfVVNFU19TSU1QTEVfUkU9MWAgd2hlbiBpdCB1c2VzCi10aGUgc2ltcGxlIHZlcnNp
b24uICBJZiB5b3Ugd2FudCB5b3VyIGRlYXRoIHRlc3RzIHRvIHdvcmsgaW4gYm90aAotY2FzZXMs
IHlvdSBjYW4gZWl0aGVyIGAjaWZgIG9uIHRoZXNlIG1hY3JvcyBvciB1c2UgdGhlIG1vcmUgbGlt
aXRlZAotc3ludGF4IG9ubHkuCi0KLSMjIEhvdyBJdCBXb3JrcyAjIwotCi1VbmRlciB0aGUgaG9v
ZCwgYEFTU0VSVF9FWElUKClgIHNwYXducyBhIG5ldyBwcm9jZXNzIGFuZCBleGVjdXRlcyB0aGUK
LWRlYXRoIHRlc3Qgc3RhdGVtZW50IGluIHRoYXQgcHJvY2Vzcy4gVGhlIGRldGFpbHMgb2Ygb2Yg
aG93IHByZWNpc2VseQotdGhhdCBoYXBwZW5zIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gYW5kIHRo
ZSB2YXJpYWJsZQotYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKWAgKHdo
aWNoIGlzIGluaXRpYWxpemVkIGZyb20gdGhlCi1jb21tYW5kLWxpbmUgZmxhZyBgLS1ndGVzdF9k
ZWF0aF90ZXN0X3N0eWxlYCkuCi0KLSAgKiBPbiBQT1NJWCBzeXN0ZW1zLCBgZm9yaygpYCAob3Ig
YGNsb25lKClgIG9uIExpbnV4KSBpcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCwgYWZ0ZXIgd2hp
Y2g6Ci0gICAgKiBJZiB0aGUgdmFyaWFibGUncyB2YWx1ZSBpcyBgImZhc3QiYCwgdGhlIGRlYXRo
IHRlc3Qgc3RhdGVtZW50IGlzIGltbWVkaWF0ZWx5IGV4ZWN1dGVkLgotICAgICogSWYgdGhlIHZh
cmlhYmxlJ3MgdmFsdWUgaXMgYCJ0aHJlYWRzYWZlImAsIHRoZSBjaGlsZCBwcm9jZXNzIHJlLWV4
ZWN1dGVzIHRoZSB1bml0IHRlc3QgYmluYXJ5IGp1c3QgYXMgaXQgd2FzIG9yaWdpbmFsbHkgaW52
b2tlZCwgYnV0IHdpdGggc29tZSBleHRyYSBmbGFncyB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUg
ZGVhdGggdGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1bi4KLSAgKiBPbiBXaW5kb3dz
LCB0aGUgY2hpbGQgaXMgc3Bhd25lZCB1c2luZyB0aGUgYENyZWF0ZVByb2Nlc3MoKWAgQVBJLCBh
bmQgcmUtZXhlY3V0ZXMgdGhlIGJpbmFyeSB0byBjYXVzZSBqdXN0IHRoZSBzaW5nbGUgZGVhdGgg
dGVzdCB1bmRlciBjb25zaWRlcmF0aW9uIHRvIGJlIHJ1biAtIG11Y2ggbGlrZSB0aGUgYHRocmVh
ZHNhZmVgIG1vZGUgb24gUE9TSVguCi0KLU90aGVyIHZhbHVlcyBmb3IgdGhlIHZhcmlhYmxlIGFy
ZSBpbGxlZ2FsIGFuZCB3aWxsIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvCi1mYWlsLiBDdXJyZW50
bHksIHRoZSBmbGFnJ3MgZGVmYXVsdCB2YWx1ZSBpcyBgImZhc3QiYC4gSG93ZXZlciwgd2UgcmVz
ZXJ2ZSB0aGUKLXJpZ2h0IHRvIGNoYW5nZSBpdCBpbiB0aGUgZnV0dXJlLiBUaGVyZWZvcmUsIHlv
dXIgdGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24KLXRoaXMuCi0KLUluIGVpdGhlciBjYXNlLCB0
aGUgcGFyZW50IHByb2Nlc3Mgd2FpdHMgZm9yIHRoZSBjaGlsZCBwcm9jZXNzIHRvIGNvbXBsZXRl
LCBhbmQgY2hlY2tzIHRoYXQKLQotICAxLiB0aGUgY2hpbGQncyBleGl0IHN0YXR1cyBzYXRpc2Zp
ZXMgdGhlIHByZWRpY2F0ZSwgYW5kCi0gIDEuIHRoZSBjaGlsZCdzIHN0ZGVyciBtYXRjaGVzIHRo
ZSByZWd1bGFyIGV4cHJlc3Npb24uCi0KLUlmIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBydW5z
IHRvIGNvbXBsZXRpb24gd2l0aG91dCBkeWluZywgdGhlIGNoaWxkCi1wcm9jZXNzIHdpbGwgbm9u
ZXRoZWxlc3MgdGVybWluYXRlLCBhbmQgdGhlIGFzc2VydGlvbiBmYWlscy4KLQotIyMgRGVhdGgg
VGVzdHMgQW5kIFRocmVhZHMgIyMKLQotVGhlIHJlYXNvbiBmb3IgdGhlIHR3byBkZWF0aCB0ZXN0
IHN0eWxlcyBoYXMgdG8gZG8gd2l0aCB0aHJlYWQgc2FmZXR5LiBEdWUgdG8KLXdlbGwta25vd24g
cHJvYmxlbXMgd2l0aCBmb3JraW5nIGluIHRoZSBwcmVzZW5jZSBvZiB0aHJlYWRzLCBkZWF0aCB0
ZXN0cyBzaG91bGQKLWJlIHJ1biBpbiBhIHNpbmdsZS10aHJlYWRlZCBjb250ZXh0LiBTb21ldGlt
ZXMsIGhvd2V2ZXIsIGl0IGlzbid0IGZlYXNpYmxlIHRvCi1hcnJhbmdlIHRoYXQga2luZCBvZiBl
bnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsIHN0YXRpY2FsbHktaW5pdGlhbGl6ZWQgbW9kdWxlcwot
bWF5IHN0YXJ0IHRocmVhZHMgYmVmb3JlIG1haW4gaXMgZXZlciByZWFjaGVkLiBPbmNlIHRocmVh
ZHMgaGF2ZSBiZWVuIGNyZWF0ZWQsCi1pdCBtYXkgYmUgZGlmZmljdWx0IG9yIGltcG9zc2libGUg
dG8gY2xlYW4gdGhlbSB1cC4KLQotR29vZ2xlIFRlc3QgaGFzIHRocmVlIGZlYXR1cmVzIGludGVu
ZGVkIHRvIHJhaXNlIGF3YXJlbmVzcyBvZiB0aHJlYWRpbmcgaXNzdWVzLgotCi0gIDEuIEEgd2Fy
bmluZyBpcyBlbWl0dGVkIGlmIG11bHRpcGxlIHRocmVhZHMgYXJlIHJ1bm5pbmcgd2hlbiBhIGRl
YXRoIHRlc3QgaXMgZW5jb3VudGVyZWQuCi0gIDEuIFRlc3QgY2FzZXMgd2l0aCBhIG5hbWUgZW5k
aW5nIGluICJEZWF0aFRlc3QiIGFyZSBydW4gYmVmb3JlIGFsbCBvdGhlciB0ZXN0cy4KLSAgMS4g
SXQgdXNlcyBgY2xvbmUoKWAgaW5zdGVhZCBvZiBgZm9yaygpYCB0byBzcGF3biB0aGUgY2hpbGQg
cHJvY2VzcyBvbiBMaW51eCAoYGNsb25lKClgIGlzIG5vdCBhdmFpbGFibGUgb24gQ3lnd2luIGFu
ZCBNYWMpLCBhcyBgZm9yaygpYCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZSB0aGUgY2hpbGQgdG8g
aGFuZyB3aGVuIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgbXVsdGlwbGUgdGhyZWFkcy4KLQotSXQn
cyBwZXJmZWN0bHkgZmluZSB0byBjcmVhdGUgdGhyZWFkcyBpbnNpZGUgYSBkZWF0aCB0ZXN0IHN0
YXRlbWVudDsgdGhleSBhcmUKLWV4ZWN1dGVkIGluIGEgc2VwYXJhdGUgcHJvY2VzcyBhbmQgY2Fu
bm90IGFmZmVjdCB0aGUgcGFyZW50LgotCi0jIyBEZWF0aCBUZXN0IFN0eWxlcyAjIwotCi1UaGUg
InRocmVhZHNhZmUiIGRlYXRoIHRlc3Qgc3R5bGUgd2FzIGludHJvZHVjZWQgaW4gb3JkZXIgdG8g
aGVscCBtaXRpZ2F0ZSB0aGUKLXJpc2tzIG9mIHRlc3RpbmcgaW4gYSBwb3NzaWJseSBtdWx0aXRo
cmVhZGVkIGVudmlyb25tZW50LiBJdCB0cmFkZXMgaW5jcmVhc2VkCi10ZXN0IGV4ZWN1dGlvbiB0
aW1lIChwb3RlbnRpYWxseSBkcmFtYXRpY2FsbHkgc28pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2Fm
ZXR5LgotV2Ugc3VnZ2VzdCB1c2luZyB0aGUgZmFzdGVyLCBkZWZhdWx0ICJmYXN0IiBzdHlsZSB1
bmxlc3MgeW91ciB0ZXN0IGhhcyBzcGVjaWZpYwotcHJvYmxlbXMgd2l0aCBpdC4KLQotWW91IGNh
biBjaG9vc2UgYSBwYXJ0aWN1bGFyIHN0eWxlIG9mIGRlYXRoIHRlc3RzIGJ5IHNldHRpbmcgdGhl
IGZsYWcKLXByb2dyYW1tYXRpY2FsbHk6Ci0KLWBgYAotOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9k
ZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOwotYGBgCi0KLVlvdSBjYW4gZG8gdGhpcyBp
biBgbWFpbigpYCB0byBzZXQgdGhlIHN0eWxlIGZvciBhbGwgZGVhdGggdGVzdHMgaW4gdGhlCi1i
aW5hcnksIG9yIGluIGluZGl2aWR1YWwgdGVzdHMuIFJlY2FsbCB0aGF0IGZsYWdzIGFyZSBzYXZl
ZCBiZWZvcmUgcnVubmluZyBlYWNoCi10ZXN0IGFuZCByZXN0b3JlZCBhZnRlcndhcmRzLCBzbyB5
b3UgbmVlZCBub3QgZG8gdGhhdCB5b3Vyc2VsZi4gRm9yIGV4YW1wbGU6Ci0KLWBgYAotVEVTVChN
eURlYXRoVGVzdCwgVGVzdE9uZSkgewotICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rl
c3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7Ci0gIC8vIFRoaXMgdGVzdCBpcyBydW4gaW4gdGhlICJ0
aHJlYWRzYWZlIiBzdHlsZToKLSAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIpOwot
fQotCi1URVNUKE15RGVhdGhUZXN0LCBUZXN0VHdvKSB7Ci0gIC8vIFRoaXMgdGVzdCBpcyBydW4g
aW4gdGhlICJmYXN0IiBzdHlsZToKLSAgQVNTRVJUX0RFQVRIKFRoaXNTaG91bGREaWUoKSwgIiIp
OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJ
bml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVh
dGhfdGVzdF9zdHlsZSA9ICJmYXN0IjsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KLWBg
YAotCi0jIyBDYXZlYXRzICMjCi0KLVRoZSBfc3RhdGVtZW50XyBhcmd1bWVudCBvZiBgQVNTRVJU
X0VYSVQoKWAgY2FuIGJlIGFueSB2YWxpZCBDKysgc3RhdGVtZW50Ci1leGNlcHQgdGhhdCBpdCBj
YW4gbm90IHJldHVybiBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiBUaGlzIG1lYW5zCi1fc3Rh
dGVtZW50XyBzaG91bGQgbm90IGNvbnRhaW4gYHJldHVybmAgb3IgYSBtYWNybyB0aGF0IG1pZ2h0
IHJldHVybiAoZS5nLgotYEFTU0VSVF9UUlVFKClgICkuIElmIF9zdGF0ZW1lbnRfIHJldHVybnMg
YmVmb3JlIGl0IGNyYXNoZXMsIEdvb2dsZSBUZXN0IHdpbGwKLXByaW50IGFuIGVycm9yIG1lc3Nh
Z2UsIGFuZCB0aGUgdGVzdCB3aWxsIGZhaWwuCi0KLVNpbmNlIF9zdGF0ZW1lbnRfIHJ1bnMgaW4g
dGhlIGNoaWxkIHByb2Nlc3MsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3QgKGUuZy4KLW1vZGlm
eWluZyBhIHZhcmlhYmxlLCByZWxlYXNpbmcgbWVtb3J5LCBldGMpIGl0IGNhdXNlcyB3aWxsIF9u
b3RfIGJlIG9ic2VydmFibGUKLWluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gcGFydGljdWxhciwg
aWYgeW91IHJlbGVhc2UgbWVtb3J5IGluIGEgZGVhdGggdGVzdCwKLXlvdXIgcHJvZ3JhbSB3aWxs
IGZhaWwgdGhlIGhlYXAgY2hlY2sgYXMgdGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbmV2ZXIgc2Vl
IHRoZQotbWVtb3J5IHJlY2xhaW1lZC4gVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB5b3UgY2FuCi0K
LSAgMS4gdHJ5IG5vdCB0byBmcmVlIG1lbW9yeSBpbiBhIGRlYXRoIHRlc3Q7Ci0gIDEuIGZyZWUg
dGhlIG1lbW9yeSBhZ2FpbiBpbiB0aGUgcGFyZW50IHByb2Nlc3M7IG9yCi0gIDEuIGRvIG5vdCB1
c2UgdGhlIGhlYXAgY2hlY2tlciBpbiB5b3VyIHByb2dyYW0uCi0KLUR1ZSB0byBhbiBpbXBsZW1l
bnRhdGlvbiBkZXRhaWwsIHlvdSBjYW5ub3QgcGxhY2UgbXVsdGlwbGUgZGVhdGggdGVzdAotYXNz
ZXJ0aW9ucyBvbiB0aGUgc2FtZSBsaW5lOyBvdGhlcndpc2UsIGNvbXBpbGF0aW9uIHdpbGwgZmFp
bCB3aXRoIGFuIHVub2J2aW91cwotZXJyb3IgbWVzc2FnZS4KLQotRGVzcGl0ZSB0aGUgaW1wcm92
ZWQgdGhyZWFkIHNhZmV0eSBhZmZvcmRlZCBieSB0aGUgInRocmVhZHNhZmUiIHN0eWxlIG9mIGRl
YXRoCi10ZXN0LCB0aHJlYWQgcHJvYmxlbXMgc3VjaCBhcyBkZWFkbG9jayBhcmUgc3RpbGwgcG9z
c2libGUgaW4gdGhlIHByZXNlbmNlIG9mCi1oYW5kbGVycyByZWdpc3RlcmVkIHdpdGggYHB0aHJl
YWRfYXRmb3JrKDMpYC4KLQotIyBVc2luZyBBc3NlcnRpb25zIGluIFN1Yi1yb3V0aW5lcyAjCi0K
LSMjIEFkZGluZyBUcmFjZXMgdG8gQXNzZXJ0aW9ucyAjIwotCi1JZiBhIHRlc3Qgc3ViLXJvdXRp
bmUgaXMgY2FsbGVkIGZyb20gc2V2ZXJhbCBwbGFjZXMsIHdoZW4gYW4gYXNzZXJ0aW9uCi1pbnNp
ZGUgaXQgZmFpbHMsIGl0IGNhbiBiZSBoYXJkIHRvIHRlbGwgd2hpY2ggaW52b2NhdGlvbiBvZiB0
aGUKLXN1Yi1yb3V0aW5lIHRoZSBmYWlsdXJlIGlzIGZyb20uICBZb3UgY2FuIGFsbGV2aWF0ZSB0
aGlzIHByb2JsZW0gdXNpbmcKLWV4dHJhIGxvZ2dpbmcgb3IgY3VzdG9tIGZhaWx1cmUgbWVzc2Fn
ZXMsIGJ1dCB0aGF0IHVzdWFsbHkgY2x1dHRlcnMgdXAKLXlvdXIgdGVzdHMuIEEgYmV0dGVyIHNv
bHV0aW9uIGlzIHRvIHVzZSB0aGUgYFNDT1BFRF9UUkFDRWAgbWFjcm86Ci0KLXwgYFNDT1BFRF9U
UkFDRShgX21lc3NhZ2VfYCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAot
Ci13aGVyZSBfbWVzc2FnZV8gY2FuIGJlIGFueXRoaW5nIHN0cmVhbWFibGUgdG8gYHN0ZDo6b3N0
cmVhbWAuIFRoaXMKLW1hY3JvIHdpbGwgY2F1c2UgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCBsaW5l
IG51bWJlciwgYW5kIHRoZSBnaXZlbgotbWVzc2FnZSB0byBiZSBhZGRlZCBpbiBldmVyeSBmYWls
dXJlIG1lc3NhZ2UuIFRoZSBlZmZlY3Qgd2lsbCBiZQotdW5kb25lIHdoZW4gdGhlIGNvbnRyb2wg
bGVhdmVzIHRoZSBjdXJyZW50IGxleGljYWwgc2NvcGUuCi0KLUZvciBleGFtcGxlLAotCi1gYGAK
LTEwOiB2b2lkIFN1YjEoaW50IG4pIHsKLTExOiAgIEVYUEVDVF9FUSgxLCBCYXIobikpOwotMTI6
ICAgRVhQRUNUX0VRKDIsIEJhcihuICsgMSkpOwotMTM6IH0KLTE0OgotMTU6IFRFU1QoRm9vVGVz
dCwgQmFyKSB7Ci0xNjogICB7Ci0xNzogICAgIFNDT1BFRF9UUkFDRSgiQSIpOyAgLy8gVGhpcyB0
cmFjZSBwb2ludCB3aWxsIGJlIGluY2x1ZGVkIGluCi0xODogICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZXZlcnkgZmFpbHVyZSBpbiB0aGlzIHNjb3BlLgotMTk6ICAgICBTdWIxKDEpOwotMjA6
ICAgfQotMjE6ICAgLy8gTm93IGl0IHdvbid0LgotMjI6ICAgU3ViMSg5KTsKLTIzOiB9Ci1gYGAK
LQotY291bGQgcmVzdWx0IGluIG1lc3NhZ2VzIGxpa2UgdGhlc2U6Ci0KLWBgYAotcGF0aC90by9m
b29fdGVzdC5jYzoxMTogRmFpbHVyZQotVmFsdWUgb2Y6IEJhcihuKQotRXhwZWN0ZWQ6IDEKLSAg
QWN0dWFsOiAyCi0gICBUcmFjZToKLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTc6IEEKLQotcGF0aC90
by9mb29fdGVzdC5jYzoxMjogRmFpbHVyZQotVmFsdWUgb2Y6IEJhcihuICsgMSkKLUV4cGVjdGVk
OiAyCi0gIEFjdHVhbDogMwotYGBgCi0KLVdpdGhvdXQgdGhlIHRyYWNlLCBpdCB3b3VsZCd2ZSBi
ZWVuIGRpZmZpY3VsdCB0byBrbm93IHdoaWNoIGludm9jYXRpb24KLW9mIGBTdWIxKClgIHRoZSB0
d28gZmFpbHVyZXMgY29tZSBmcm9tIHJlc3BlY3RpdmVseS4gKFlvdSBjb3VsZCBhZGQgYW4KLWV4
dHJhIG1lc3NhZ2UgdG8gZWFjaCBhc3NlcnRpb24gaW4gYFN1YjEoKWAgdG8gaW5kaWNhdGUgdGhl
IHZhbHVlIG9mCi1gbmAsIGJ1dCB0aGF0J3MgdGVkaW91cy4pCi0KLVNvbWUgdGlwcyBvbiB1c2lu
ZyBgU0NPUEVEX1RSQUNFYDoKLQotICAxLiBXaXRoIGEgc3VpdGFibGUgbWVzc2FnZSwgaXQncyBv
ZnRlbiBlbm91Z2ggdG8gdXNlIGBTQ09QRURfVFJBQ0VgIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBz
dWItcm91dGluZSwgaW5zdGVhZCBvZiBhdCBlYWNoIGNhbGwgc2l0ZS4KLSAgMS4gV2hlbiBjYWxs
aW5nIHN1Yi1yb3V0aW5lcyBpbnNpZGUgYSBsb29wLCBtYWtlIHRoZSBsb29wIGl0ZXJhdG9yIHBh
cnQgb2YgdGhlIG1lc3NhZ2UgaW4gYFNDT1BFRF9UUkFDRWAgc3VjaCB0aGF0IHlvdSBjYW4ga25v
dyB3aGljaCBpdGVyYXRpb24gdGhlIGZhaWx1cmUgaXMgZnJvbS4KLSAgMS4gU29tZXRpbWVzIHRo
ZSBsaW5lIG51bWJlciBvZiB0aGUgdHJhY2UgcG9pbnQgaXMgZW5vdWdoIGZvciBpZGVudGlmeWlu
ZyB0aGUgcGFydGljdWxhciBpbnZvY2F0aW9uIG9mIGEgc3ViLXJvdXRpbmUuIEluIHRoaXMgY2Fz
ZSwgeW91IGRvbid0IGhhdmUgdG8gY2hvb3NlIGEgdW5pcXVlIG1lc3NhZ2UgZm9yIGBTQ09QRURf
VFJBQ0VgLiBZb3UgY2FuIHNpbXBseSB1c2UgYCIiYC4KLSAgMS4gWW91IGNhbiB1c2UgYFNDT1BF
RF9UUkFDRWAgaW4gYW4gaW5uZXIgc2NvcGUgd2hlbiB0aGVyZSBpcyBvbmUgaW4gdGhlIG91dGVy
IHNjb3BlLiBJbiB0aGlzIGNhc2UsIGFsbCBhY3RpdmUgdHJhY2UgcG9pbnRzIHdpbGwgYmUgaW5j
bHVkZWQgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZXMsIGluIHJldmVyc2Ugb3JkZXIgdGhleSBhcmUg
ZW5jb3VudGVyZWQuCi0gIDEuIFRoZSB0cmFjZSBkdW1wIGlzIGNsaWNrYWJsZSBpbiBFbWFjcycg
Y29tcGlsYXRpb24gYnVmZmVyIC0gaGl0IHJldHVybiBvbiBhIGxpbmUgbnVtYmVyIGFuZCB5b3Un
bGwgYmUgdGFrZW4gdG8gdGhhdCBsaW5lIGluIHRoZSBzb3VyY2UgZmlsZSEKLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFByb3BhZ2F0aW5nIEZhdGFsIEZhaWx1
cmVzICMjCi0KLUEgY29tbW9uIHBpdGZhbGwgd2hlbiB1c2luZyBgQVNTRVJUXypgIGFuZCBgRkFJ
TCpgIGlzIG5vdCB1bmRlcnN0YW5kaW5nIHRoYXQKLXdoZW4gdGhleSBmYWlsIHRoZXkgb25seSBh
Ym9ydCB0aGUgX2N1cnJlbnQgZnVuY3Rpb25fLCBub3QgdGhlIGVudGlyZSB0ZXN0LiBGb3IKLWV4
YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVzdCB3aWxsIHNlZ2ZhdWx0OgotYGBgCi12b2lkIFN1YnJv
dXRpbmUoKSB7Ci0gIC8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgYW5kIGFib3J0cyB0aGUg
Y3VycmVudCBmdW5jdGlvbi4KLSAgQVNTRVJUX0VRKDEsIDIpOwotICAvLyBUaGUgZm9sbG93aW5n
IHdvbid0IGJlIGV4ZWN1dGVkLgotICAuLi4KLX0KLQotVEVTVChGb29UZXN0LCBCYXIpIHsKLSAg
U3Vicm91dGluZSgpOwotICAvLyBUaGUgaW50ZW5kZWQgYmVoYXZpb3IgaXMgZm9yIHRoZSBmYXRh
bCBmYWlsdXJlCi0gIC8vIGluIFN1YnJvdXRpbmUoKSB0byBhYm9ydCB0aGUgZW50aXJlIHRlc3Qu
Ci0gIC8vIFRoZSBhY3R1YWwgYmVoYXZpb3I6IHRoZSBmdW5jdGlvbiBnb2VzIG9uIGFmdGVyIFN1
YnJvdXRpbmUoKSByZXR1cm5zLgotICBpbnQqIHAgPSBOVUxMOwotICAqcCA9IDM7IC8vIFNlZ2Zh
dWx0IQotfQotYGBgCi0KLVNpbmNlIHdlIGRvbid0IHVzZSBleGNlcHRpb25zLCBpdCBpcyB0ZWNo
bmljYWxseSBpbXBvc3NpYmxlIHRvCi1pbXBsZW1lbnQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGhl
cmUuICBUbyBhbGxldmlhdGUgdGhpcywgR29vZ2xlIFRlc3QKLXByb3ZpZGVzIHR3byBzb2x1dGlv
bnMuICBZb3UgY291bGQgdXNlIGVpdGhlciB0aGUKLWAoQVNTRVJUfEVYUEVDVClfTk9fRkFUQUxf
RkFJTFVSRWAgYXNzZXJ0aW9ucyBvciB0aGUKLWBIYXNGYXRhbEZhaWx1cmUoKWAgZnVuY3Rpb24u
ICBUaGV5IGFyZSBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZyB0d28KLXN1YnNlY3Rpb25zLgot
Ci0KLQotIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0aW5lcyAjIyMKLQotQXMgc2hvd24gYWJvdmUs
IGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAot
ZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGlu
ZQotcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdoYXQgeW91IHdhbnQuCi0KLU9mdGVuIHBlb3Bs
ZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IK
LXRoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgbWFjcm9zOgotCi18ICoqRmF0
YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwK
LXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0t
LS0tLS0tfAotfCBgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBF
WFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9l
c24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVh
ZC4gfAotCi1Pbmx5IGZhaWx1cmVzIGluIHRoZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNz
ZXJ0aW9uIGFyZSBjaGVja2VkIHRvCi1kZXRlcm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUg
b2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRfCi1jcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWls
dXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25vcmVkLgotCi1FeGFtcGxlczoKLQotYGBgCi1B
U1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7Ci0KLWludCBpOwotRVhQRUNUX05PX0ZBVEFM
X0ZBSUxVUkUoewotICBpID0gQmFyKCk7Ci19KTsKLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBmcm9tIG11bHRpcGxlIHRocmVhZHMKLWFyZSBj
dXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotIyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0
aGUgQ3VycmVudCBUZXN0ICMjIwotCi1gSGFzRmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0
aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVlYCBpZiBhbgotYXNzZXJ0aW9uIGluIHRoZSBj
dXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0YWwgZmFpbHVyZS4gVGhpcwotYWxsb3dzIGZ1
bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1
cm4KLWVhcmx5LgotCi1gYGAKLWNsYXNzIFRlc3QgewotIHB1YmxpYzoKLSAgLi4uCi0gIHN0YXRp
YyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwotfTsKLWBgYAotCi1UaGUgdHlwaWNhbCB1c2FnZSwg
d2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KLWV4Y2Vw
dGlvbiwgaXM6Ci0KLWBgYAotVEVTVChGb29UZXN0LCBCYXIpIHsKLSAgU3Vicm91dGluZSgpOwot
ICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhhZCBhIGZhdGFsIGZhaWx1cmUuCi0gIGlmIChI
YXNGYXRhbEZhaWx1cmUoKSkKLSAgICByZXR1cm47Ci0gIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3Qg
YmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotYGBgCi0KLUlmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMg
dXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRFU1RfRigpYCAsIG9yIGEgdGVzdAotZml4dHVy
ZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46Ci0K
LWBgYAotaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpCi0gIHJldHVybjsK
LWBgYAotCi1TaW1pbGFybHksIGBIYXNOb25mYXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAg
aWYgdGhlIGN1cnJlbnQgdGVzdAotaGFzIGF0IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwg
YW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRydWVgCi1pZiB0aGUgY3VycmVudCB0ZXN0IGhh
cyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRoZXIga2luZC4KLQotX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9uZmF0YWxGYWlsdXJlKClgIGFuZAotYEhhc0Zh
aWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuNC4wLgotCi0jIExvZ2dpbmcg
QWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCi0KLUluIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNh
bGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1ZSlgIHRvIGxvZwotYWRkaXRpb25hbCBpbmZv
cm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUgZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSAzMi1i
aXQKLWludGVnZXIuIFRoZSBfbGFzdF8gdmFsdWUgcmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUg
ZW1pdHRlZCB0byB0aGUgWE1MIG91dHB1dAotaWYgeW91IHNwZWNpZnkgb25lLiBGb3IgZXhhbXBs
ZSwgdGhlIHRlc3QKLQotYGBgCi1URVNUX0YoV2lkZ2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRn
ZXRzKSB7Ci0gIFJlY29yZFByb3BlcnR5KCJNYXhpbXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2Fn
ZSgpKTsKLSAgUmVjb3JkUHJvcGVydHkoIk1pbmltdW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdl
KCkpOwotfQotYGBgCi0KLXdpbGwgb3V0cHV0IFhNTCBsaWtlIHRoaXM6Ci0KLWBgYAotLi4uCi0g
IDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRnZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iNiIg
Y2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiCi0gICAgICAgICAgICBNYXhpbXVtV2lkZ2V0cz0i
MTIiCi0gICAgICAgICAgICBNaW5pbXVtV2lkZ2V0cz0iOSIgLz4KLS4uLgotYGBgCi0KLV9Ob3Rl
XzoKLSAgKiBgUmVjb3JkUHJvcGVydHkoKWAgaXMgYSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBgVGVz
dGAgY2xhc3MuIFRoZXJlZm9yZSBpdCBuZWVkcyB0byBiZSBwcmVmaXhlZCB3aXRoIGA6OnRlc3Rp
bmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9mIHRoZSBgVEVTVGAgYm9keSBhbmQgdGhlIHRl
c3QgZml4dHVyZSBjbGFzcy4KLSAgKiBga2V5YCBtdXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0
ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdpdGggdGhlIG9uZXMgYWxyZWFkeSB1c2VkIGJ5
IEdvb2dsZSBUZXN0IChgbmFtZWAsIGBzdGF0dXNgLCAgICAgYHRpbWVgLCBhbmQgYGNsYXNzbmFt
ZWApLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBTaGFyaW5n
IFJlc291cmNlcyBCZXR3ZWVuIFRlc3RzIGluIHRoZSBTYW1lIFRlc3QgQ2FzZSAjCi0KLQotCi1H
b29nbGUgVGVzdCBjcmVhdGVzIGEgbmV3IHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVz
dCBpbiBvcmRlciB0byBtYWtlCi10ZXN0cyBpbmRlcGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVn
LiBIb3dldmVyLCBzb21ldGltZXMgdGVzdHMgdXNlIHJlc291cmNlcwotdGhhdCBhcmUgZXhwZW5z
aXZlIHRvIHNldCB1cCwgbWFraW5nIHRoZSBvbmUtY29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJp
dGl2ZWx5Ci1leHBlbnNpdmUuCi0KLUlmIHRoZSB0ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291
cmNlLCB0aGVyZSdzIG5vIGhhcm0gaW4gdGhlbSBzaGFyaW5nIGEKLXNpbmdsZSByZXNvdXJjZSBj
b3B5LiBTbywgaW4gYWRkaXRpb24gdG8gcGVyLXRlc3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xl
IFRlc3QKLWFsc28gc3VwcG9ydHMgcGVyLXRlc3QtY2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1
c2UgaXQ6Ci0KLSAgMS4gSW4geW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAg
KSwgZGVmaW5lIGFzIGBzdGF0aWNgIHNvbWUgbWVtYmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBz
aGFyZWQgcmVzb3VyY2VzLgotICAxLiBJbiB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRl
ZmluZSBhIGBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBu
b3QgdG8gc3BlbGwgaXQgYXMgKipgU2V0dXBUZXN0Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkg
dG8gc2V0IHVwIHRoZSBzaGFyZWQgcmVzb3VyY2VzIGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93
blRlc3RDYXNlKClgIGZ1bmN0aW9uIHRvIHRlYXIgdGhlbSBkb3duLgotCi1UaGF0J3MgaXQhIEdv
b2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgY2FsbHMgYFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1
bm5pbmcgdGhlCi1fZmlyc3QgdGVzdF8gaW4gdGhlIGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4g
YmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdAotYEZvb1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBg
VGVhckRvd25UZXN0Q2FzZSgpYCBhZnRlciBydW5uaW5nIHRoZSBfbGFzdCB0ZXN0XwotaW4gaXQg
KGkuZS4gYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgYEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdl
ZW4sIHRoZSB0ZXN0cwotY2FuIHVzZSB0aGUgc2hhcmVkIHJlc291cmNlcy4KLQotUmVtZW1iZXIg
dGhhdCB0aGUgdGVzdCBvcmRlciBpcyB1bmRlZmluZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBl
bmQgb24gYSB0ZXN0Ci1wcmVjZWRpbmcgb3IgZm9sbG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0
ZXN0cyBtdXN0IGVpdGhlciBub3QgbW9kaWZ5IHRoZQotc3RhdGUgb2YgYW55IHNoYXJlZCByZXNv
dXJjZSwgb3IsIGlmIHRoZXkgZG8gbW9kaWZ5IHRoZSBzdGF0ZSwgdGhleSBtdXN0Ci1yZXN0b3Jl
IHRoZSBzdGF0ZSB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0
byB0aGUgbmV4dAotdGVzdC4KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBz
ZXQtdXAgYW5kIHRlYXItZG93bjoKLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8gUGVyLXRlc3QtY2FzZSBzZXQtdXAuCi0gIC8v
IENhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIC8vIENh
biBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2Uo
KSB7Ci0gICAgc2hhcmVkX3Jlc291cmNlXyA9IG5ldyAuLi47Ci0gIH0KLQotICAvLyBQZXItdGVz
dC1jYXNlIHRlYXItZG93bi4KLSAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhp
cyB0ZXN0IGNhc2UuCi0gIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCi0gIHN0YXRp
YyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87
Ci0gICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7Ci0gIH0KLQotICAvLyBZb3UgY2FuIGRlZmlu
ZSBwZXItdGVzdCBzZXQtdXAgYW5kIHRlYXItZG93biBsb2dpYyBhcyB1c3VhbC4KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgeyAuLi4gfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9
Ci0KLSAgLy8gU29tZSBleHBlbnNpdmUgcmVzb3VyY2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KLSAg
c3RhdGljIFQqIHNoYXJlZF9yZXNvdXJjZV87Ci19OwotCi1UKiBGb29UZXN0OjpzaGFyZWRfcmVz
b3VyY2VfID0gTlVMTDsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLiB5b3UgY2Fu
IHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgotfQotVEVTVF9GKEZvb1Rlc3QsIFRl
c3QyKSB7Ci0gIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgot
fQotYGBgCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIEdsb2Jh
bCBTZXQtVXAgYW5kIFRlYXItRG93biAjCi0KLUp1c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5k
IHRlYXItZG93biBhdCB0aGUgdGVzdCBsZXZlbCBhbmQgdGhlIHRlc3QgY2FzZQotbGV2ZWwsIHlv
dSBjYW4gYWxzbyBkbyBpdCBhdCB0aGUgdGVzdCBwcm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93Lgot
Ci1GaXJzdCwgeW91IHN1YmNsYXNzIHRoZSBgOjp0ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3Mg
dG8gZGVmaW5lIGEgdGVzdAotZW52aXJvbm1lbnQsIHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAg
YW5kIHRlYXItZG93bjoKLQotYGBgCi1jbGFzcyBFbnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2
aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9Ci0gIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhv
dyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50LgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQot
ICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBob3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9u
bWVudC4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KLX07Ci1gYGAKLQotVGhlbiwgeW91
IHJlZ2lzdGVyIGFuIGluc3RhbmNlIG9mIHlvdXIgZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29n
bGUgVGVzdCBieQotY2FsbGluZyB0aGUgYDo6dGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25t
ZW50KClgIGZ1bmN0aW9uOgotCi1gYGAKLUVudmlyb25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJv
bm1lbnQoRW52aXJvbm1lbnQqIGVudik7Ci1gYGAKLQotTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RT
KClgIGlzIGNhbGxlZCwgaXQgZmlyc3QgY2FsbHMgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKLXRo
ZSBlbnZpcm9ubWVudCBvYmplY3QsIHRoZW4gcnVucyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5v
IGZhdGFsIGZhaWx1cmVzLCBhbmQKLWZpbmFsbHkgY2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBl
bnZpcm9ubWVudCBvYmplY3QuCi0KLUl0J3MgT0sgdG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJv
bm1lbnQgb2JqZWN0cy4gSW4gdGhpcyBjYXNlLCB0aGVpciBgU2V0VXAoKWAKLXdpbGwgYmUgY2Fs
bGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWdpc3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3du
KClgIHdpbGwgYmUKLWNhbGxlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KLQotTm90ZSB0aGF0IEdv
b2dsZSBUZXN0IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBv
YmplY3RzLgotVGhlcmVmb3JlICoqZG8gbm90IGRlbGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCi0K
LVlvdSBzaG91bGQgY2FsbCBgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVO
X0FMTF9URVNUUygpYCBpcwotY2FsbGVkLCBwcm9iYWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVz
ZSBgZ3Rlc3RfbWFpbmAsIHlvdSBuZWVkIHRvICAgICAgY2FsbAotdGhpcyBiZWZvcmUgYG1haW4o
KWAgc3RhcnRzIGZvciBpdCB0byB0YWtlIGVmZmVjdC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRv
Ci1kZWZpbmUgYSBnbG9iYWwgdmFyaWFibGUgbGlrZSB0aGlzOgotCi1gYGAKLTo6dGVzdGluZzo6
RW52aXJvbm1lbnQqIGNvbnN0IGZvb19lbnYgPSA6OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZp
cm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOwotYGBgCi0KLUhvd2V2ZXIsIHdlIHN0cm9uZ2x5
IHJlY29tbWVuZCB5b3UgdG8gd3JpdGUgeW91ciBvd24gYG1haW4oKWAgYW5kIGNhbGwKLWBBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRp
b24gb2YgZ2xvYmFsCi12YXJpYWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5k
IG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHlvdQotcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1l
bnRzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFuZCB0aGUKLWVudmlyb25tZW50
cyBoYXZlIGRlcGVuZGVuY2llcyBhbW9uZyB0aGVtIChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxl
ciBkb2Vzbid0Ci1ndWFyYW50ZWUgdGhlIG9yZGVyIGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMg
ZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMKLWFyZSBpbml0aWFsaXplZCkuCi0KLV9B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0KLSMgVmFsdWUgUGFyYW1ldGVy
aXplZCBUZXN0cyAjCi0KLV9WYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8g
dGVzdCB5b3VyIGNvZGUgd2l0aCBkaWZmZXJlbnQKLXBhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5n
IG11bHRpcGxlIGNvcGllcyBvZiB0aGUgc2FtZSB0ZXN0LgotCi1TdXBwb3NlIHlvdSB3cml0ZSBh
IHRlc3QgZm9yIHlvdXIgY29kZSBhbmQgdGhlbiByZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFm
ZmVjdGVkIGJ5IGEgcHJlc2VuY2Ugb2YgYSBCb29sZWFuIGNvbW1hbmQgbGluZSBmbGFnLgotCi1g
YGAKLVRFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykgewotICAvLyBBIGNvZGUgdG8gdGVzdCBmb28o
KS4KLX0KLWBgYAotCi1Vc3VhbGx5IHBlb3BsZSBmYWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8g
YSBmdW5jdGlvbiB3aXRoIGEgQm9vbGVhbiBwYXJhbWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBU
aGUgZnVuY3Rpb24gc2V0cyB0aGUgZmxhZywgdGhlbiBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2Rl
LgotCi1gYGAKLXZvaWQgVGVzdEZvb0hlbHBlcihib29sIGZsYWdfdmFsdWUpIHsKLSAgZmxhZyA9
IGZsYWdfdmFsdWU7Ci0gIC8vIEEgY29kZSB0byB0ZXN0IGZvbygpLgotfQotCi1URVNUKE15Q29k
ZVRlc3QsIFRlc3RGb29vKSB7Ci0gIFRlc3RGb29IZWxwZXIoZmFsc2UpOwotICBUZXN0Rm9vSGVs
cGVyKHRydWUpOwotfQotYGBgCi0KLUJ1dCB0aGlzIHNldHVwIGhhcyBzZXJpb3VzIGRyYXdiYWNr
cy4gRmlyc3QsIHdoZW4gYSB0ZXN0IGFzc2VydGlvbiBmYWlscyBpbiB5b3VyIHRlc3RzLCBpdCBi
ZWNvbWVzIHVuY2xlYXIgd2hhdCB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyIGNhdXNlZCBpdCB0byBm
YWlsLiBZb3UgY2FuIHN0cmVhbSBhIGNsYXJpZnlpbmcgbWVzc2FnZSBpbnRvIHlvdXIgYEVYUEVD
VGAvYEFTU0VSVGAgc3RhdGVtZW50cywgYnV0IGl0IHlvdSdsbCBoYXZlIHRvIGRvIGl0IHdpdGgg
YWxsIG9mIHRoZW0uIFNlY29uZCwgeW91IGhhdmUgdG8gYWRkIG9uZSBzdWNoIGhlbHBlciBmdW5j
dGlvbiBwZXIgdGVzdC4gV2hhdCBpZiB5b3UgaGF2ZSB0ZW4gdGVzdHM/IFR3ZW50eT8gQSBodW5k
cmVkPwotCi1WYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHdpbGwgbGV0IHlvdSB3cml0ZSB5b3Vy
IHRlc3Qgb25seSBvbmNlIGFuZCB0aGVuIGVhc2lseSBpbnN0YW50aWF0ZSBhbmQgcnVuIGl0IHdp
dGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwYXJhbWV0ZXIgdmFsdWVzLgotCi1IZXJlIGFyZSBz
b21lIG90aGVyIHNpdHVhdGlvbnMgd2hlbiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNvbWUg
aGFuZHk6Ci0KLSAgKiBZb3Ugd2FuIHRvIHRlc3QgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBv
ZiBhbiBPTyBpbnRlcmZhY2UuCi0gICogWW91IHdhbnQgdG8gdGVzdCB5b3VyIGNvZGUgb3ZlciB2
YXJpb3VzIGlucHV0cyAoYS5rLmEuIGRhdGEtZHJpdmVuIHRlc3RpbmcpLiBUaGlzIGZlYXR1cmUg
aXMgZWFzeSB0byBhYnVzZSwgc28gcGxlYXNlIGV4ZXJjaXNlIHlvdXIgZ29vZCBzZW5zZSB3aGVu
IGRvaW5nIGl0IQotCi0jIyBIb3cgdG8gV3JpdGUgVmFsdWUtUGFyYW1ldGVyaXplZCBUZXN0cyAj
IwotCi1UbyB3cml0ZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxk
IGRlZmluZSBhIGZpeHR1cmUKLWNsYXNzLiBJdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBgOjp0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPFQ+YCwgd2hlcmUgYFRgCi1pcyB0aGUgdHlwZSBvZiB5b3VyIHBh
cmFtZXRlciB2YWx1ZXMuIGBUZXN0V2l0aFBhcmFtPFQ+YCBpcyBpdHNlbGYKLWRlcml2ZWQgZnJv
bSBgOjp0ZXN0aW5nOjpUZXN0YC4gYFRgIGNhbiBiZSBhbnkgY29weWFibGUgdHlwZS4gSWYgaXQn
cwotYSByYXcgcG9pbnRlciwgeW91IGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIGxp
ZmVzcGFuIG9mIHRoZQotcG9pbnRlZCB2YWx1ZXMuCi0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1
YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Y29uc3QgY2hhcio+IHsKLSAgLy8gWW91IGNh
biBpbXBsZW1lbnQgYWxsIHRoZSB1c3VhbCBmaXh0dXJlIGNsYXNzIG1lbWJlcnMgaGVyZS4KLSAg
Ly8gVG8gYWNjZXNzIHRoZSB0ZXN0IHBhcmFtZXRlciwgY2FsbCBHZXRQYXJhbSgpIGZyb20gY2xh
c3MKLSAgLy8gVGVzdFdpdGhQYXJhbTxUPi4KLX07Ci1gYGAKLQotVGhlbiwgdXNlIHRoZSBgVEVT
VF9QYCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSB0ZXN0IHBhdHRlcm5zIHVzaW5nCi10aGlzIGZp
eHR1cmUgYXMgeW91IHdhbnQuICBUaGUgYF9QYCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVk
IiBvcgotInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KLQotYGBgCi1U
RVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgYWNjZXNzIHRo
ZSB0ZXN0IHBhcmFtZXRlciB3aXRoIHRoZSBHZXRQYXJhbSgpIG1ldGhvZAotICAvLyBvZiB0aGUg
VGVzdFdpdGhQYXJhbTxUPiBjbGFzczoKLSAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0o
KSkpOwotICAuLi4KLX0KLQotVEVTVF9QKEZvb1Rlc3QsIEhhc0JsYWhCbGFoKSB7Ci0gIC4uLgot
fQotYGBgCi0KLUZpbmFsbHksIHlvdSBjYW4gdXNlIGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAg
dG8gaW5zdGFudGlhdGUgdGhlIHRlc3QKLWNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMg
eW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBudW1iZXIgb2YKLWZ1bmN0aW9ucyBmb3Ig
Z2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAotKHN1
cnByaXNlISkgX3BhcmFtZXRlciBnZW5lcmF0b3JzXy4gSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhl
bSwKLXdoaWNoIGFyZSBhbGwgaW4gdGhlIGB0ZXN0aW5nYCBuYW1lc3BhY2U6Ci0KLXwgYFJhbmdl
KGJlZ2luLCBlbmRbLCBzdGVwXSlgIHwgWWllbGRzIHZhbHVlcyBge2JlZ2luLCBiZWdpbitzdGVw
LCBiZWdpbitzdGVwK3N0ZXAsIC4uLn1gLiBUaGUgdmFsdWVzIGRvIG5vdCBpbmNsdWRlIGBlbmRg
LiBgc3RlcGAgZGVmYXVsdHMgdG8gMS4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Ci18IGBWYWx1ZXModjEsIHYyLCAuLi4sIHZOKWAgICB8IFlpZWxkcyB2YWx1ZXMgYHt2MSwg
djIsIC4uLiwgdk59YC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFZhbHVlc0luKGNvbnRh
aW5lcilgIGFuZCBgVmFsdWVzSW4oYmVnaW4sIGVuZClgIHwgWWllbGRzIHZhbHVlcyBmcm9tIGEg
Qy1zdHlsZSBhcnJheSwgYW4gU1RMLXN0eWxlIGNvbnRhaW5lciwgb3IgYW4gaXRlcmF0b3IgcmFu
Z2UgYFtiZWdpbiwgZW5kKWAuICAgICAgICAgICAgICAgICAgfAotfCBgQm9vbCgpYCAgICAgICAg
ICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1ZX1gLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci18IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBnTilgICB8IFlpZWxkcyBh
bGwgY29tYmluYXRpb25zICh0aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9yIHRoZSBtYXRoIHNhdnZ5
KSBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVyYXRvcnMuIFRoaXMgaXMg
b25seSBhdmFpbGFibGUgaWYgeW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhlIGA8dHIxL3R1cGxlPmAg
aGVhZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91ciBzeXN0ZW0gZG9lcywgYW5kIEdvb2dsZSBUZXN0
IGRpc2FncmVlcywgeW91IGNhbiBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBgR1RFU1RfSEFTX1RS
MV9UVVBMRT0xYC4gU2VlIGNvbW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgpIGZvciBtb3Jl
IGluZm9ybWF0aW9uLiB8Ci0KLUZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgY29tbWVudHMgYXQg
dGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgW3NvdXJjZSBjb2RlXSgu
Li9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCkuCi0KLVRoZSBmb2xsb3dpbmcgc3Rh
dGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZvb1Rlc3RgIHRlc3QgY2Fz
ZQotZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBgIm1pbnkiYCwgYW5kIGAi
bW9lImAuCi0KLWBgYAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5zdGFudGlhdGlvbk5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9lIikpOwotYGBgCi0KLVRv
IGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBhdHRlcm4gKHllcywgeW91
IGNhbgotaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUgZmlyc3QgYXJndW1lbnQg
dG8KLWBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFk
ZGVkIHRvIHRoZSBhY3R1YWwKLXRlc3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1
ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50Ci1pbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20g
dGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlCi1uYW1lczoKLQotICAqIGBJ
bnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAgKiBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3IgYCJtaW55ImAKLSAgKiBg
SW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3IgYCJtb2UiYAotICAqIGBJ
bnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZvciBgIm1lZW55ImAKLSAg
KiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJtaW55ImAK
LSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8yYCBmb3IgYCJtb2Ui
YAotCi1Zb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFwtZmlsdGVyXSgjcnVubmlu
Zy1hLXN1YnNldC1vZi10aGUtdGVzdHMpLgotCi1UaGlzIHN0YXRlbWVudCB3aWxsIGluc3RhbnRp
YXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaAotd2l0aCBwYXJhbWV0ZXIg
dmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6Ci0KLWBgYAotY29uc3QgY2hhciogcGV0c1tdID0g
eyJjYXQiLCAiZG9nIn07Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbm90aGVySW5zdGFudGlh
dGlvbk5hbWUsIEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZh
bHVlc0luKHBldHMpKTsKLWBgYAotCi1UaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBh
Ym92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6Ci0KLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25O
YW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAKLSAgKiBgQW5vdGhlcklu
c3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBg
QW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMWAgZm9yIGAiZG9n
ImAKLQotUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1BgIHdpbGwgaW5z
dGFudGlhdGUgX2FsbF8KLXRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhl
aXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKLV9hZnRlcl8gdGhlIGBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUGAgc3RhdGVtZW50LgotCi1Zb3UgY2FuIHNlZQotW3RoZXNlXSguLi9zYW1wbGVz
L3NhbXBsZTdfdW5pdHRlc3QuY2MpCi1bZmlsZXNdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVz
dC5jYykgZm9yIG1vcmUgZXhhbXBsZXMuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4yLjAu
Ci0KLSMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJhY3QgVGVzdHMgIyMKLQot
SW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBGb29UZXN0YCBpbiB0aGUg
c2FtZSBzb3VyY2UKLWZpbGUuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdG8gZGVmaW5lIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgaW4gYQotbGlicmFyeSBhbmQgbGV0IG90aGVyIHBlb3BsZSBp
bnN0YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMKLWtub3duIGFzIDxpPmFic3Ry
YWN0IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGljYXRpb24sIHdoZW4geW91
Ci1hcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuIHdyaXRlIGEgc3RhbmRhcmQgc3Vp
dGUgb2YgYWJzdHJhY3QKLXRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFjdG9yeSBmdW5jdGlvbiBh
cyB0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQKLWFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGlu
dGVyZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFzcy4gV2hlbgotc29tZW9uZSBpbXBsZW1lbnRzIHRo
ZSBpbnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRlIHRvIGdldAotYWxsIHRo
ZSBpbnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCi0KLVRvIGRlZmluZSBhYnN0
cmFjdCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUgbGlrZSB0aGlzOgotCi0g
IDEuIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZpeHR1cmUg
Y2xhc3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBhIGhlYWRlciBmaWxlLCBzYXkgYGZvb19wYXJhbV90
ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMu
Ci0gIDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZvb19wYXJhbV90ZXN0LmNj
YCwgd2hpY2ggaW5jbHVkZXMgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9p
bXBsZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0KLU9uY2UgdGhleSBhcmUgZGVmaW5l
ZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZwotYGZvb19wYXJhbV90ZXN0
LmhgLCBpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAsIGFuZCBsaW5raW5nCi13
aXRoIGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhlIHNhbWUgYWJz
dHJhY3QgdGVzdAotY2FzZSBtdWx0aXBsZSB0aW1lcywgcG9zc2libHkgaW4gZGlmZmVyZW50IHNv
dXJjZSBmaWxlcy4KLQotIyBUeXBlZCBUZXN0cyAjCi0KLVN1cHBvc2UgeW91IGhhdmUgbXVsdGlw
bGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBhbmQKLXdhbnQgdG8gbWFr
ZSBzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMu
Ci1PciwgeW91IG1heSBoYXZlIGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0aGF0IGFyZSBzdXBwb3Nl
ZCB0byBjb25mb3JtIHRvCi10aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlvdSB3YW50IHRvIHZlcmlm
eSBpdC4gIEluIGJvdGggY2FzZXMsIHlvdSB3YW50Ci10aGUgc2FtZSB0ZXN0IGxvZ2ljIHJlcGVh
dGVkIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0KLVdoaWxlIHlvdSBjYW4gd3JpdGUgb25lIGBURVNU
YCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvCi10ZXN0IChhbmQgeW91IG1h
eSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rpb24gdGVtcGxhdGUKLXRo
YXQgeW91IGludm9rZSBmcm9tIHRoZSBgVEVTVGApLCBpdCdzIHRlZGlvdXMgYW5kIGRvZXNuJ3Qg
c2NhbGU6Ci1pZiB5b3Ugd2FudCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlwZXMsIHlvdSdsbCBlbmQg
dXAgd3JpdGluZyBfbVwqbl8KLWBURVNUYHMuCi0KLV9UeXBlZCB0ZXN0c18gYWxsb3cgeW91IHRv
IHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9mCi10eXBlcy4gIFlvdSBv
bmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0aG91Z2ggeW91IG11c3QK
LWtub3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVzdHMuICBIZXJlJ3MgaG93
IHlvdSBkbyBpdDoKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUuICBJ
dCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZAotYnkgYSB0eXBlLiAgUmVtZW1iZXIgdG8gZGVyaXZl
IGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6Ci0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHVibGljOgotICAu
Li4KLSAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKLSAgc3RhdGljIFQgc2hhcmVkXzsKLSAg
VCB2YWx1ZV87Ci19OwotYGBgCi0KLU5leHQsIGFzc29jaWF0ZSBhIGxpc3Qgb2YgdHlwZXMgd2l0
aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlCi1yZXBlYXRlZCBmb3IgZWFjaCB0eXBlIGlu
IHRoZSBsaXN0OgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVu
c2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsK
LWBgYAotCi1UaGUgYHR5cGVkZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGBUWVBFRF9URVNUX0NB
U0VgIG1hY3JvIHRvIHBhcnNlCi1jb3JyZWN0bHkuICBPdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdp
bGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluIHRoZQotdHlwZSBsaXN0IGludHJvZHVjZXMgYSBu
ZXcgbWFjcm8gYXJndW1lbnQuCi0KLVRoZW4sIHVzZSBgVFlQRURfVEVTVCgpYCBpbnN0ZWFkIG9m
IGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdAotZm9yIHRoaXMgdGVzdCBjYXNlLiAg
WW91IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3YW50OgotCi1gYGAKLVRZ
UEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIg
dG8gdGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0eXBlCi0gIC8vIHBhcmFt
ZXRlci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNzIHRlbXBsYXRlLCBDKysg
cmVxdWlyZXMKLSAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2YgRm9vVGVzdCB2aWEgJ3Ro
aXMnLgotICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKLQotICAvLyBUbyB2aXNpdCBzdGF0
aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZpeHR1cmU6OicKLSAgLy8g
cHJlZml4LgotICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOwotCi0gIC8vIFRvIHJlZmVyIHRv
IHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
JwotICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJlZCB0byBzYXRpc2Z5IHRo
ZSBjb21waWxlci4KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3QgdmFsdWVzOwotICB2YWx1
ZXMucHVzaF9iYWNrKG4pOwotICAuLi4KLX0KLQotVFlQRURfVEVTVChGb29UZXN0LCBIYXNQcm9w
ZXJ0eUEpIHsgLi4uIH0KLWBgYAotCi1Zb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0
ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgs
IFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOwotc2luY2UgdmVyc2lv
biAxLjEuMC4KLQotIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIwotCi1fVHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3RzXyBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0IHRoYXQgdGhleQotZG9u
J3QgcmVxdWlyZSB5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBhaGVhZCBvZiB0aW1lLiAg
SW5zdGVhZCwKLXlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZpcnN0IGFuZCBpbnN0YW50
aWF0ZSBpdCB3aXRoIGRpZmZlcmVudAotdHlwZSBsaXN0cyBsYXRlci4gIFlvdSBjYW4gZXZlbiBp
bnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUKLXNhbWUgcHJvZ3JhbS4KLQotSWYg
eW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQsIHlvdSBjYW4gZGVmaW5l
IGEgc3VpdGUKLW9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2ZXJpZnkgcHJvcGVydGll
cyB0aGF0IGFueSB2YWxpZAotaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVyZmFjZS9jb25jZXB0
IHNob3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1dGhvcgotb2YgZWFjaCBpbXBsZW1lbnRhdGlvbiBj
YW4ganVzdCBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhpcwotdHlwZSB0byB2ZXJp
ZnkgdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0
bwotd3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0K
LUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBhcyB3ZSBkaWQgd2l0aCB0
eXBlZCB0ZXN0czoKLQotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgLi4uCi19OwotYGBgCi0KLU5leHQsIGRlY2xh
cmUgdGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlOgot
Ci1gYGAKLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotYGBgCi0KLVRoZSBgX1BgIHN1ZmZp
eCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdQotcHJl
ZmVyIHRvIHRoaW5rLgotCi1UaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgpYCB0byBkZWZpbmUgYSB0
eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlvdQotY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGlt
ZXMgYXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQRURfVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7
Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUg
cGFyYW1ldGVyLgotICBUeXBlUGFyYW0gbiA9IDA7Ci0gIC4uLgotfQotCi1UWVBFRF9URVNUX1Ao
Rm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAKLQotTm93IHRoZSB0cmlja3kgcGFy
dDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMgdXNpbmcgdGhlCi1gUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3UgY2FuIGluc3RhbnRpYXRl
IHRoZW0uCi1UaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZSB0ZXN0IGNhc2Ug
bmFtZTsgdGhlIHJlc3QgYXJlCi10aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdCBj
YXNlOgotCi1gYGAKLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKLWBgYAotCi1GaW5h
bGx5LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRlcm4gd2l0aCB0aGUgdHlw
ZXMgeW91Ci13YW50LiAgSWYgeW91IHB1dCB0aGUgYWJvdmUgY29kZSBpbiBhIGhlYWRlciBmaWxl
LCB5b3UgY2FuIGAjaW5jbHVkZWAKLWl0IGluIG11bHRpcGxlIEMrKyBzb3VyY2UgZmlsZXMgYW5k
IGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5n
OjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLUlOU1RBTlRJQVRFX1RZ
UEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKLWBgYAotCi1UbyBkaXN0aW5n
dWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0aGUgZmlyc3QgYXJndW1l
bnQKLXRvIHRoZSBgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGlzIGEgcHJl
Zml4IHRoYXQgd2lsbCBiZQotYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0IGNhc2UgbmFtZS4gIFJl
bWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzCi1mb3IgZGlmZmVyZW50IGluc3RhbmNlcy4K
LQotSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9ubHkg
b25lIHR5cGUsIHlvdQotY2FuIHdyaXRlIHRoYXQgdHlwZSBkaXJlY3RseSB3aXRob3V0IGA6OnRl
c3Rpbmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6Ci0KLWBgYAotSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7Ci1gYGAKLQotWW91IGNhbiBzZWUgYHNhbXBs
ZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhhbXBsZS4KLQotX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSksIE1h
YzsKLXNpbmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVGVzdGluZyBQcml2YXRlIENvZGUgIwotCi1J
ZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiwgeW91
ciB0ZXN0cyBzaG91bGQgbm90Ci1icmVhayBhcyBsb25nIGFzIHRoZSBjaGFuZ2UgaXMgbm90IG9i
c2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwgcGVyIHRoZQotX2JsYWNrLWJveCB0ZXN0aW5n
IHByaW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0ZXN0IHlvdXIgY29kZQot
dGhyb3VnaCBpdHMgcHVibGljIGludGVyZmFjZXMuCi0KLUlmIHlvdSBzdGlsbCBmaW5kIHlvdXJz
ZWxmIG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBjb2RlLAotY29uc2lk
ZXIgaWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24gdGhhdCB3b3VsZG4ndCByZXF1aXJlIHlvdSB0
byBkbyBzby4gSWYgeW91Ci1hYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBub24tcHVibGljIGludGVy
ZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUgYXJlCi10d28gY2FzZXMgdG8gY29uc2lk
ZXI6Ci0KLSAgKiBTdGF0aWMgZnVuY3Rpb25zIChfbm90XyB0aGUgc2FtZSBhcyBzdGF0aWMgbWVt
YmVyIGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQgbmFtZXNwYWNlcywgYW5kCi0gICogUHJpdmF0ZSBv
ciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycwotCi0jIyBTdGF0aWMgRnVuY3Rpb25zICMjCi0KLUJv
dGggc3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGluIGFuIHVu
bmFtZWQgbmFtZXNwYWNlIGFyZQotb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2xh
dGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRlYAotdGhlIGVudGlyZSBg
LmNjYCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2NgIGZpbGUuIChgI2luY2x1
ZGVgaW5nIGAuY2NgCi1maWxlcyBpcyBub3QgYSBnb29kIHdheSB0byByZXVzZSBjb2RlIC0geW91
IHNob3VsZCBub3QgZG8gdGhpcyBpbiBwcm9kdWN0aW9uCi1jb2RlISkKLQotSG93ZXZlciwgYSBi
ZXR0ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2RlIGludG8gdGhlCi1gZm9v
OjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUgbmFtZXNwYWNlIHlvdXIg
cHJvamVjdCBub3JtYWxseQotdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMg
aW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCi1wcm9kdWN0aW9uIGAuY2NgIGZpbGVzIGFu
ZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBpbnRlcm5hbAotaGVhZGVy
LCBidXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5LCB5b3UgY2FuIGZ1bGx5IHRlc3Qg
eW91ciBpbnRlcm5hbAotaW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFraW5nIGl0IHRvIHlvdXIg
Y2xpZW50cy4KLQotIyMgUHJpdmF0ZSBDbGFzcyBNZW1iZXJzICMjCi0KLVByaXZhdGUgY2xhc3Mg
bWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBjbGFzcyBvciBieSBm
cmllbmRzLgotVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgeW91IGNhbiBkZWNs
YXJlIHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEKLWZyaWVuZCB0byB0aGUgY2xhc3MgYW5kIGRlZmlu
ZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0aGUKLWZpeHR1cmUgY2Fu
IHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBwcm9kdWN0aW9uIGNsYXNz
IHZpYSB0aGUKLWFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdo
IHlvdXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0bwoteW91ciBwcm9kdWN0aW9uIGNsYXNzLCB5b3Vy
IHRlc3RzIGFyZSBub3QgYXV0b21hdGljYWxseSBmcmllbmRzIHRvIGl0LCBhcyB0aGV5Ci1hcmUg
dGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUgZml4dHVyZS4KLQotQW5v
dGhlciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVmYWN0b3IgdGhlbSBpbnRv
IGFuIGltcGxlbWVudGF0aW9uCi1jbGFzcywgd2hpY2ggaXMgdGhlbiBkZWNsYXJlZCBpbiBhIGAq
LWludGVybmFsLmhgIGZpbGUuIFlvdXIgY2xpZW50cyBhcmVuJ3QKLWFsbG93ZWQgdG8gaW5jbHVk
ZSB0aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMgY2FsbGVkIHRoZSBQaW1w
bAotKFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgotCi1PciwgeW91IGNhbiBkZWNsYXJl
IGFuIGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNsYXNzIGJ5IGFkZGluZyB0
aGlzCi1saW5lIGluIHRoZSBjbGFzcyBib2R5OgotCi1gYGAKLUZSSUVORF9URVNUKFRlc3RDYXNl
TmFtZSwgVGVzdE5hbWUpOwotYGBgCi0KLUZvciBleGFtcGxlLAotYGBgCi0vLyBmb28uaAotI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0X3Byb2QuaD4KLQotLy8gRGVmaW5lcyBGUklFTkRfVEVTVC4KLWNs
YXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIEZSSUVORF9URVNUKEZvb1Rlc3QsIEJhclJl
dHVybnNaZXJvT25OdWxsKTsKLSAgaW50IEJhcih2b2lkKiB4KTsKLX07Ci0KLS8vIGZvb190ZXN0
LmNjCi0uLi4KLVRFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpIHsKLSAgRm9vIGZv
bzsKLSAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOwotICAvLyBVc2VzIEZvbydzIHByaXZh
dGUgbWVtYmVyIEJhcigpLgotfQotYGBgCi0KLVBheSBzcGVjaWFsIGF0dGVudGlvbiB3aGVuIHlv
dXIgY2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91IHNob3VsZAotZGVmaW5l
IHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUgbmFtZXNwYWNlIGlmIHlv
dSB3YW50IHRoZW0gdG8KLWJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4gRm9yIGV4YW1wbGUsIGlm
IHRoZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29rcyBsaWtlOgotCi1gYGAKLW5hbWVzcGFjZSBteV9u
YW1lc3BhY2UgewotCi1jbGFzcyBGb28gewotICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKLSAgRlJJ
RU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKLSAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmF6KTsKLSAg
Li4uCi0gIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbwotICAuLi4KLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZSBteV9uYW1lc3BhY2UKLWBgYAotCi1Zb3VyIHRlc3QgY29kZSBzaG91bGQgYmUgc29t
ZXRoaW5nIGxpa2U6Ci0KLWBgYAotbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7Ci1jbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLX07Ci0K
LVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4u
IH0KLQotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotYGBgCi0KLSMgQ2F0Y2hpbmcgRmFp
bHVyZXMgIwotCi1JZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1dGlsaXR5IG9uIHRvcCBv
ZiBHb29nbGUgVGVzdCwgeW91J2xsCi13YW50IHRvIHRlc3QgeW91ciB1dGlsaXR5LiAgV2hhdCBm
cmFtZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PwotR29vZ2xlIFRlc3QsIG9mIGNvdXJz
ZS4KLQotVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3VyIHRlc3RpbmcgdXRpbGl0
eSByZXBvcnRzIGZhaWx1cmVzCi1jb3JyZWN0bHkuICBJbiBmcmFtZXdvcmtzIHRoYXQgcmVwb3J0
IGEgZmFpbHVyZSBieSB0aHJvd2luZyBhbgotZXhjZXB0aW9uLCB5b3UgY291bGQgY2F0Y2ggdGhl
IGV4Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQotVGVzdCBkb2Vzbid0IHVz
ZSBleGNlcHRpb25zLCBzbyBob3cgZG8gd2UgdGVzdCB0aGF0IGEgcGllY2Ugb2YgY29kZQotZ2Vu
ZXJhdGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/Ci0KLWA8Z3Rlc3QvZ3Rlc3Qtc3BpLmg+YCBjb250
YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gIEFmdGVyCi1gI2luY2x1ZGVgaW5nIHRo
aXMgaGVhZGVyLCB5b3UgY2FuIHVzZQotCi18IGBFWFBFQ1RfRkFUQUxfRkFJTFVSRShgX3N0YXRl
bWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotdG8gYXNzZXJ0IHRoYXQgX3N0YXRlbWVudF8gZ2VuZXJh
dGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQotd2hvc2UgbWVzc2FnZSBjb250
YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQotCi18IGBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotaWYgeW91IGFyZSBleHBl
Y3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVyZS4KLQotRm9yIHRlY2hu
aWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgotCi0gIDEuIFlvdSBjYW5ub3Qg
c3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4KLSAgMS4gX3N0YXRlbWVu
dF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZlcmVuY2UgbG9jYWwgbm9u
LXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9mIGB0aGlzYCBvYmplY3Qu
Ci0gIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpYCBjYW5ub3QgcmV0
dXJuIGEgdmFsdWUuCi0KLV9Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVzaWduZWQgd2l0aCB0aHJl
YWRzIGluIG1pbmQuICBPbmNlIHRoZQotc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYDxn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0Lmg+YCBoYXZlCi1iZWVuIGltcGxlbWVudGVkLCBHb29n
bGUgVGVzdCB3aWxsIGJlY29tZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0aGF0Ci15b3UgY2FuIHRo
ZW4gdXNlIGFzc2VydGlvbnMgaW4gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHkuICBCZWZv
cmUKLQotdGhhdCwgaG93ZXZlciwgR29vZ2xlIFRlc3Qgb25seSBzdXBwb3J0cyBzaW5nbGUtdGhy
ZWFkZWQgdXNhZ2UuICBPbmNlCi10aHJlYWQtc2FmZSwgYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClg
IGFuZCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKWAKLXdpbGwgY2FwdHVyZSBmYWlsdXJlcyBp
biB0aGUgY3VycmVudCB0aHJlYWQgb25seS4gSWYgX3N0YXRlbWVudF8KLWNyZWF0ZXMgbmV3IHRo
cmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgd2lsbCBiZSBpZ25vcmVkLiAgSWYKLXlv
dSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFkcyBpbnN0ZWFkLCB5b3Ug
c2hvdWxkIHVzZQotdGhlIGZvbGxvd2luZyBtYWNyb3M6Ci0KLXwgYEVYUEVDVF9GQVRBTF9GQUlM
VVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Ci18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfAotfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1l
bnQsIHN1YnN0cmluZ19gKTtgIHwKLQotIyBHZXR0aW5nIHRoZSBDdXJyZW50IFRlc3QncyBOYW1l
ICMKLQotU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBvZiB0
aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KLUZvciBleGFtcGxlLCB5b3UgbWF5IGJlIHVzaW5n
IHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJlIHRvIHNldAotdGhlIGdv
bGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5uaW5nLiBUaGUgYDo6dGVz
dGluZzo6VGVzdEluZm9gCi1jbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlvbjoKLQotYGBgCi1uYW1l
c3BhY2UgdGVzdGluZyB7Ci0KLWNsYXNzIFRlc3RJbmZvIHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVy
bnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCByZXNwZWN0aXZlbHkuCi0g
IC8vCi0gIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJuIHZhbHVlIC0gaXQncyBt
YW5hZ2VkIGJ5IHRoZQotICAvLyBUZXN0SW5mbyBjbGFzcy4KLSAgY29uc3QgY2hhciogdGVzdF9j
YXNlX25hbWUoKSBjb25zdDsKLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0OwotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLWBgYAotCi0KLT4gVG8gb2J0YWluIGEgYFRlc3RJbmZvYCBv
YmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxsCi1gY3VycmVudF90ZXN0
X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVjdDoKLQotYGBgCi0vLyBH
ZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgotLy8gRG8g
Tk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5hZ2VkIGJ5IHRoZSBVbml0
VGVzdCBjbGFzcy4KLWNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9
Ci0gIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZv
KCk7Ci1wcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2FzZSAlcy5cbiIsCi0gICAg
ICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci1gYGAK
LQotYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBvaW50ZXIgaWYgbm8gdGVz
dCBpcyBydW5uaW5nLiBJbgotcGFydGljdWxhciwgeW91IGNhbm5vdCBmaW5kIHRoZSB0ZXN0IGNh
c2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKLWBUZXN0Q2FzZVRlYXJEb3duKClgICh3aGVy
ZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSksIG9yCi1mdW5jdGlvbnMg
Y2FsbGVkIGZyb20gdGhlbS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
Ci0KLSMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRlc3QgRXZlbnRzICMKLQot
R29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIgQVBJPC9iPiB0byBsZXQg
eW91IHJlY2VpdmUKLW5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dyZXNzIG9mIGEgdGVzdCBw
cm9ncmFtIGFuZCB0ZXN0Ci1mYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3UgY2FuIGxpc3RlbiB0byBp
bmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCi10aGUgdGVzdCBwcm9ncmFtLCBhIHRlc3QgY2Fz
ZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5Ci11c2UgdGhpcyBBUEkg
dG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xlIG91dHB1dCwKLXJlcGxh
Y2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmb3Jt
IG9mCi1vdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4gWW91IGNhbiBhbHNvIHVz
ZSB0ZXN0IGV2ZW50cyBhcwotY2hlY2twb2ludHMgdG8gaW1wbGVtZW50IGEgcmVzb3VyY2UgbGVh
ayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgRGVmaW5pbmcgRXZlbnQgTGlzdGVuZXJzICMjCi0K
LVRvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3MgZWl0aGVyCi1bdGVzdGlu
Zzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMODU1KQotb3Ig
W3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qu
aCNMOTA1KS4KLVRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRlcmZhY2UsIHdoZXJlIDxp
PmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZDxicj4KLWNhbiBiZSBvdmVycmlkZGVuIHRvIGhhbmRs
ZSBhIHRlc3QgZXZlbnQ8L2k+IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRlc3QKLXN0YXJ0cywgdGhl
IGBPblRlc3RTdGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4gVGhlIGxhdHRlciBwcm92
aWRlcwotYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhvZHMgaW4gdGhlIGludGVy
ZmFjZSwgc3VjaCB0aGF0IGEKLXN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gb3ZlcnJpZGUgdGhlIG1l
dGhvZHMgaXQgY2FyZXMgYWJvdXQuCi0KLVdoZW4gYW4gZXZlbnQgaXMgZmlyZWQsIGl0cyBjb250
ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbgotYXMgYW4gYXJndW1lbnQuIFRo
ZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6Ci0gICogW1VuaXRUZXN0XSguLi9p
bmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZW50
aXJlIHRlc3QgcHJvZ3JhbSwKLSAgKiBbVGVzdENhc2VdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qu
aCNMNjg5KSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGNhc2UsIHdoaWNoIGNhbiBjb250
YWluIG9uZSBvciBtb3JlIHRlc3RzLAotICAqIFtUZXN0SW5mb10oLi4vaW5jbHVkZS9ndGVzdC9n
dGVzdC5oI0w1OTkpIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3QsIGFuZAotICAqIFtUZXN0
UGFydFJlc3VsdF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaCNMNDIpIHJlcHJl
c2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNzZXJ0aW9uLgotCi1BbiBldmVudCBoYW5kbGVy
IGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1bWVudCBpdCByZWNlaXZlcyB0byBmaW5kCi1v
dXQgaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50IGFuZCB0aGUgdGVzdCBw
cm9ncmFtJ3MKLXN0YXRlLiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBgYAotICBjbGFzcyBNaW5p
bWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXIg
ewotICAgIC8vIENhbGxlZCBiZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KLSAgICB2aXJ0dWFsIHZvaWQg
T25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAg
ICBwcmludGYoIioqKiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKLSAgICAgICAgICAgICB0ZXN0
X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7Ci0gICAgfQotCi0gICAg
Ly8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNVQ0NFU1MoKS4KLSAgICB2
aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdCgKLSAgICAgICAgY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICAgICAgcHJpbnRmKCIlcyBpbiAl
czolZFxuJXNcbiIsCi0gICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5mYWlsZWQoKSA/ICIq
KiogRmFpbHVyZSIgOiAiU3VjY2VzcyIsCi0gICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5m
aWxlX25hbWUoKSwKLSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCks
Ci0gICAgICAgICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5zdW1tYXJ5KCkpOwotICAgIH0KLQotICAg
IC8vIENhbGxlZCBhZnRlciBhIHRlc3QgZW5kcy4KLSAgICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5k
KGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8mIHRlc3RfaW5mbykgewotICAgICAgcHJpbnRmKCIq
KiogVGVzdCAlcy4lcyBlbmRpbmcuXG4iLAotICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nh
c2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgICB9Ci0gIH07Ci1gYGAKLQotIyMgVXNp
bmcgRXZlbnQgTGlzdGVuZXJzICMjCi0KLVRvIHVzZSB0aGUgZXZlbnQgbGlzdGVuZXIgeW91IGhh
dmUgZGVmaW5lZCwgYWRkIGFuIGluc3RhbmNlIG9mIGl0IHRvCi10aGUgR29vZ2xlIFRlc3QgZXZl
bnQgbGlzdGVuZXIgbGlzdCAocmVwcmVzZW50ZWQgYnkgY2xhc3MKLVtUZXN0RXZlbnRMaXN0ZW5l
cnNdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTI5KQotLSBub3RlIHRoZSAicyIgYXQgdGhl
IGVuZCBvZiB0aGUgbmFtZSkgaW4geW91cgotYG1haW4oKWAgZnVuY3Rpb24sIGJlZm9yZSBjYWxs
aW5nIGBSVU5fQUxMX1RFU1RTKClgOgotYGBgCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIC8vIEdl
dHMgaG9sZCBvZiB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KLSAgOjp0ZXN0aW5nOjpUZXN0RXZl
bnRMaXN0ZW5lcnMmIGxpc3RlbmVycyA9Ci0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJ
bnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKLSAgLy8gQWRkcyBhIGxpc3RlbmVyIHRvIHRoZSBlbmQu
ICBHb29nbGUgVGVzdCB0YWtlcyB0aGUgb3duZXJzaGlwLgotICBsaXN0ZW5lcnMuQXBwZW5kKG5l
dyBNaW5pbWFsaXN0UHJpbnRlcik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAK
LQotVGhlcmUncyBvbmx5IG9uZSBwcm9ibGVtOiB0aGUgZGVmYXVsdCB0ZXN0IHJlc3VsdCBwcmlu
dGVyIGlzIHN0aWxsIGluCi1lZmZlY3QsIHNvIGl0cyBvdXRwdXQgd2lsbCBtaW5nbGUgd2l0aCB0
aGUgb3V0cHV0IGZyb20geW91ciBtaW5pbWFsaXN0Ci1wcmludGVyLiBUbyBzdXBwcmVzcyB0aGUg
ZGVmYXVsdCBwcmludGVyLCBqdXN0IHJlbGVhc2UgaXQgZnJvbSB0aGUKLWV2ZW50IGxpc3RlbmVy
IGxpc3QgYW5kIGRlbGV0ZSBpdC4gWW91IGNhbiBkbyBzbyBieSBhZGRpbmcgb25lIGxpbmU6Ci1g
YGAKLSAgLi4uCi0gIGRlbGV0ZSBsaXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcnMuZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcigpKTsKLSAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50
ZXIpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotYGBgCi0KLU5vdywgc2l0IGJhY2sgYW5k
IGVuam95IGEgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0IGZyb20geW91cgotdGVzdHMuIEZv
ciBtb3JlIGRldGFpbHMsIHlvdSBjYW4gcmVhZCB0aGlzCi1bc2FtcGxlXSguLi9zYW1wbGVzL3Nh
bXBsZTlfdW5pdHRlc3QuY2MpLgotCi1Zb3UgbWF5IGFwcGVuZCBtb3JlIHRoYW4gb25lIGxpc3Rl
bmVyIHRvIHRoZSBsaXN0LiBXaGVuIGFuIGBPbipTdGFydCgpYAotb3IgYE9uVGVzdFBhcnRSZXN1
bHQoKWAgZXZlbnQgaXMgZmlyZWQsIHRoZSBsaXN0ZW5lcnMgd2lsbCByZWNlaXZlIGl0IGluCi10
aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIGxpc3QgKHNpbmNlIG5ldyBsaXN0ZW5lcnMgYXJl
IGFkZGVkIHRvCi10aGUgZW5kIG9mIHRoZSBsaXN0LCB0aGUgZGVmYXVsdCB0ZXh0IHByaW50ZXIg
YW5kIHRoZSBkZWZhdWx0IFhNTAotZ2VuZXJhdG9yIHdpbGwgcmVjZWl2ZSB0aGUgZXZlbnQgZmly
c3QpLiBBbiBgT24qRW5kKClgIGV2ZW50IHdpbGwgYmUKLXJlY2VpdmVkIGJ5IHRoZSBsaXN0ZW5l
cnMgaW4gdGhlIF9yZXZlcnNlXyBvcmRlci4gVGhpcyBhbGxvd3Mgb3V0cHV0IGJ5Ci1saXN0ZW5l
cnMgYWRkZWQgbGF0ZXIgdG8gYmUgZnJhbWVkIGJ5IG91dHB1dCBmcm9tIGxpc3RlbmVycyBhZGRl
ZAotZWFybGllci4KLQotIyMgR2VuZXJhdGluZyBGYWlsdXJlcyBpbiBMaXN0ZW5lcnMgIyMKLQot
WW91IG1heSB1c2UgZmFpbHVyZS1yYWlzaW5nIG1hY3JvcyAoYEVYUEVDVF8qKClgLCBgQVNTRVJU
XyooKWAsCi1gRkFJTCgpYCwgZXRjKSB3aGVuIHByb2Nlc3NpbmcgYW4gZXZlbnQuIFRoZXJlIGFy
ZSBzb21lIHJlc3RyaWN0aW9uczoKLQotICAxLiBZb3UgY2Fubm90IGdlbmVyYXRlIGFueSBmYWls
dXJlIGluIGBPblRlc3RQYXJ0UmVzdWx0KClgIChvdGhlcndpc2UgaXQgd2lsbCBjYXVzZSBgT25U
ZXN0UGFydFJlc3VsdCgpYCB0byBiZSBjYWxsZWQgcmVjdXJzaXZlbHkpLgotICAxLiBBIGxpc3Rl
bmVyIHRoYXQgaGFuZGxlcyBgT25UZXN0UGFydFJlc3VsdCgpYCBpcyBub3QgYWxsb3dlZCB0byBn
ZW5lcmF0ZSBhbnkgZmFpbHVyZS4KLQotV2hlbiB5b3UgYWRkIGxpc3RlbmVycyB0byB0aGUgbGlz
dGVuZXIgbGlzdCwgeW91IHNob3VsZCBwdXQgbGlzdGVuZXJzCi10aGF0IGhhbmRsZSBgT25UZXN0
UGFydFJlc3VsdCgpYCBfYmVmb3JlXyBsaXN0ZW5lcnMgdGhhdCBjYW4gZ2VuZXJhdGUKLWZhaWx1
cmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgdGhlIGxhdHRlciBh
cmUKLWF0dHJpYnV0ZWQgdG8gdGhlIHJpZ2h0IHRlc3QgYnkgdGhlIGZvcm1lci4KLQotV2UgaGF2
ZSBhIHNhbXBsZSBvZiBmYWlsdXJlLXJhaXNpbmcgbGlzdGVuZXIKLVtoZXJlXSguLi9zYW1wbGVz
L3NhbXBsZTEwX3VuaXR0ZXN0LmNjKS4KLQotIyBSdW5uaW5nIFRlc3QgUHJvZ3JhbXM6IEFkdmFu
Y2VkIE9wdGlvbnMgIwotCi1Hb29nbGUgVGVzdCB0ZXN0IHByb2dyYW1zIGFyZSBvcmRpbmFyeSBl
eGVjdXRhYmxlcy4gT25jZSBidWlsdCwgeW91IGNhbiBydW4KLXRoZW0gZGlyZWN0bHkgYW5kIGFm
ZmVjdCB0aGVpciBiZWhhdmlvciB2aWEgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJs
ZXMKLWFuZC9vciBjb21tYW5kIGxpbmUgZmxhZ3MuIEZvciB0aGUgZmxhZ3MgdG8gd29yaywgeW91
ciBwcm9ncmFtcyBtdXN0IGNhbGwKLWA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGJlZm9y
ZSBjYWxsaW5nIGBSVU5fQUxMX1RFU1RTKClgLgotCi1UbyBzZWUgYSBsaXN0IG9mIHN1cHBvcnRl
ZCBmbGFncyBhbmQgdGhlaXIgdXNhZ2UsIHBsZWFzZSBydW4geW91ciB0ZXN0Ci1wcm9ncmFtIHdp
dGggdGhlIGAtLWhlbHBgIGZsYWcuICBZb3UgY2FuIGFsc28gdXNlIGAtaGAsIGAtP2AsIG9yIGAv
P2AKLWZvciBzaG9ydC4gIFRoaXMgZmVhdHVyZSBpcyBhZGRlZCBpbiB2ZXJzaW9uIDEuMy4wLgot
Ci1JZiBhbiBvcHRpb24gaXMgc3BlY2lmaWVkIGJvdGggYnkgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUgYW5kIGJ5IGEKLWZsYWcsIHRoZSBsYXR0ZXIgdGFrZXMgcHJlY2VkZW5jZS4gIE1vc3Qgb2Yg
dGhlIG9wdGlvbnMgY2FuIGFsc28gYmUKLXNldC9yZWFkIGluIGNvZGU6IHRvIGFjY2VzcyB0aGUg
dmFsdWUgb2YgY29tbWFuZCBsaW5lIGZsYWcKLWAtLWd0ZXN0X2Zvb2AsIHdyaXRlIGA6OnRlc3Rp
bmc6OkdURVNUX0ZMQUcoZm9vKWAuICBBIGNvbW1vbiBwYXR0ZXJuIGlzCi10byBzZXQgdGhlIHZh
bHVlIG9mIGEgZmxhZyBiZWZvcmUgY2FsbGluZyBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgp
YAotdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmbGFnOgotYGBgCi1pbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgLy8gRGlzYWJsZXMgZWxhcHNlZCB0aW1lIGJ5
IGRlZmF1bHQuCi0gIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOwot
Ci0gIC8vIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBmbGFnIG9uIHRoZSBj
b21tYW5kIGxpbmUuCi0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwot
Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgU2VsZWN0aW5nIFRlc3Rz
ICMjCi0KLVRoaXMgc2VjdGlvbiBzaG93cyB2YXJpb3VzIG9wdGlvbnMgZm9yIGNob29zaW5nIHdo
aWNoIHRlc3RzIHRvIHJ1bi4KLQotIyMjIExpc3RpbmcgVGVzdCBOYW1lcyAjIyMKLQotU29tZXRp
bWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBsaXN0IHRoZSBhdmFpbGFibGUgdGVzdHMgaW4gYSBwcm9n
cmFtIGJlZm9yZQotcnVubmluZyB0aGVtIHNvIHRoYXQgYSBmaWx0ZXIgbWF5IGJlIGFwcGxpZWQg
aWYgbmVlZGVkLiBJbmNsdWRpbmcgdGhlIGZsYWcKLWAtLWd0ZXN0X2xpc3RfdGVzdHNgIG92ZXJy
aWRlcyBhbGwgb3RoZXIgZmxhZ3MgYW5kIGxpc3RzIHRlc3RzIGluIHRoZSBmb2xsb3dpbmcKLWZv
cm1hdDoKLWBgYAotVGVzdENhc2UxLgotICBUZXN0TmFtZTEKLSAgVGVzdE5hbWUyCi1UZXN0Q2Fz
ZTIuCi0gIFRlc3ROYW1lCi1gYGAKLQotTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVkIGFyZSBhY3R1
YWxseSBydW4gaWYgdGhlIGZsYWcgaXMgcHJvdmlkZWQuIFRoZXJlIGlzIG5vCi1jb3JyZXNwb25k
aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGlzIGZsYWcuCi0KLV9BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgUnVubmluZyBhIFN1YnNldCBvZiB0aGUgVGVz
dHMgIyMjCi0KLUJ5IGRlZmF1bHQsIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSBydW5zIGFsbCB0ZXN0
cyB0aGUgdXNlciBoYXMgZGVmaW5lZC4KLVNvbWV0aW1lcywgeW91IHdhbnQgdG8gcnVuIG9ubHkg
YSBzdWJzZXQgb2YgdGhlIHRlc3RzIChlLmcuIGZvciBkZWJ1Z2dpbmcgb3IKLXF1aWNrbHkgdmVy
aWZ5aW5nIGEgY2hhbmdlKS4gSWYgeW91IHNldCB0aGUgYEdURVNUX0ZJTFRFUmAgZW52aXJvbm1l
bnQgdmFyaWFibGUKLW9yIHRoZSBgLS1ndGVzdF9maWx0ZXJgIGZsYWcgdG8gYSBmaWx0ZXIgc3Ry
aW5nLCBHb29nbGUgVGVzdCB3aWxsIG9ubHkgcnVuIHRoZQotdGVzdHMgd2hvc2UgZnVsbCBuYW1l
cyAoaW4gdGhlIGZvcm0gb2YgYFRlc3RDYXNlTmFtZS5UZXN0TmFtZWApIG1hdGNoIHRoZQotZmls
dGVyLgotCi1UaGUgZm9ybWF0IG9mIGEgZmlsdGVyIGlzIGEgJ2A6YCctc2VwYXJhdGVkIGxpc3Qg
b2Ygd2lsZGNhcmQgcGF0dGVybnMgKGNhbGxlZAotdGhlIHBvc2l0aXZlIHBhdHRlcm5zKSBvcHRp
b25hbGx5IGZvbGxvd2VkIGJ5IGEgJ2AtYCcgYW5kIGFub3RoZXIKLSdgOmAnLXNlcGFyYXRlZCBw
YXR0ZXJuIGxpc3QgKGNhbGxlZCB0aGUgbmVnYXRpdmUgcGF0dGVybnMpLiBBIHRlc3QgbWF0Y2hl
cyB0aGUKLWZpbHRlciBpZiBhbmQgb25seSBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgcG9zaXRp
dmUgcGF0dGVybnMgYnV0IGRvZXMgbm90Ci1tYXRjaCBhbnkgb2YgdGhlIG5lZ2F0aXZlIHBhdHRl
cm5zLgotCi1BIHBhdHRlcm4gbWF5IGNvbnRhaW4gYCcqJ2AgKG1hdGNoZXMgYW55IHN0cmluZykg
b3IgYCc/J2AgKG1hdGNoZXMgYW55IHNpbmdsZQotY2hhcmFjdGVyKS4gRm9yIGNvbnZlbmllbmNl
LCB0aGUgZmlsdGVyIGAnKi1OZWdhdGl2ZVBhdHRlcm5zJ2AgY2FuIGJlIGFsc28KLXdyaXR0ZW4g
YXMgYCctTmVnYXRpdmVQYXR0ZXJucydgLgotCi1Gb3IgZXhhbXBsZToKLQotICAqIGAuL2Zvb190
ZXN0YCBIYXMgbm8gZmxhZywgYW5kIHRodXMgcnVucyBhbGwgaXRzIHRlc3RzLgotICAqIGAuL2Zv
b190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpgIEFsc28gcnVucyBldmVyeXRoaW5nLCBkdWUgdG8gdGhl
IHNpbmdsZSBtYXRjaC1ldmVyeXRoaW5nIGAqYCB2YWx1ZS4KLSAgKiBgLi9mb29fdGVzdCAtLWd0
ZXN0X2ZpbHRlcj1Gb29UZXN0LipgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0IGNhc2UgYEZvb1Rl
c3RgLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPSpOdWxsKjoqQ29uc3RydWN0b3Iq
YCBSdW5zIGFueSB0ZXN0IHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyBlaXRoZXIgYCJOdWxsImAg
b3IgYCJDb25zdHJ1Y3RvciJgLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPS0qRGVh
dGhUZXN0LipgIFJ1bnMgYWxsIG5vbi1kZWF0aCB0ZXN0cy4KLSAgKiBgLi9mb29fdGVzdCAtLWd0
ZXN0X2ZpbHRlcj1Gb29UZXN0LiotRm9vVGVzdC5CYXJgIFJ1bnMgZXZlcnl0aGluZyBpbiB0ZXN0
IGNhc2UgYEZvb1Rlc3RgIGV4Y2VwdCBgRm9vVGVzdC5CYXJgLgotCi1fQXZhaWxhYmlsaXR5Ol8g
TGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIFRlbXBvcmFyaWx5IERpc2FibGluZyBUZXN0cyAj
IyMKLQotSWYgeW91IGhhdmUgYSBicm9rZW4gdGVzdCB0aGF0IHlvdSBjYW5ub3QgZml4IHJpZ2h0
IGF3YXksIHlvdSBjYW4gYWRkIHRoZQotYERJU0FCTEVEX2AgcHJlZml4IHRvIGl0cyBuYW1lLiBU
aGlzIHdpbGwgZXhjbHVkZSBpdCBmcm9tIGV4ZWN1dGlvbi4gVGhpcyBpcwotYmV0dGVyIHRoYW4g
Y29tbWVudGluZyBvdXQgdGhlIGNvZGUgb3IgdXNpbmcgYCNpZiAwYCwgYXMgZGlzYWJsZWQgdGVz
dHMgYXJlCi1zdGlsbCBjb21waWxlZCAoYW5kIHRodXMgd29uJ3Qgcm90KS4KLQotSWYgeW91IG5l
ZWQgdG8gZGlzYWJsZSBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UsIHlvdSBjYW4gZWl0aGVyIGFk
ZCBgRElTQUJMRURfYAotdG8gdGhlIGZyb250IG9mIHRoZSBuYW1lIG9mIGVhY2ggdGVzdCwgb3Ig
YWx0ZXJuYXRpdmVseSBhZGQgaXQgdG8gdGhlIGZyb250IG9mCi10aGUgdGVzdCBjYXNlIG5hbWUu
Ci0KLUZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3RzIHdvbid0IGJlIHJ1biBieSBHb29n
bGUgVGVzdCwgZXZlbiB0aG91Z2ggdGhleQotd2lsbCBzdGlsbCBiZSBjb21waWxlZDoKLQotYGBg
Ci0vLyBUZXN0cyB0aGF0IEZvbyBkb2VzIEFiYy4KLVRFU1QoRm9vVGVzdCwgRElTQUJMRURfRG9l
c0FiYykgeyAuLi4gfQotCi1jbGFzcyBESVNBQkxFRF9CYXJUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7IC4uLiB9OwotCi0vLyBUZXN0cyB0aGF0IEJhciBkb2VzIFh5ei4KLVRFU1RfRihE
SVNBQkxFRF9CYXJUZXN0LCBEb2VzWHl6KSB7IC4uLiB9Ci1gYGAKLQotX05vdGU6XyBUaGlzIGZl
YXR1cmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IHBhaW4tcmVsaWVmLiBZb3Ug
c3RpbGwKLWhhdmUgdG8gZml4IHRoZSBkaXNhYmxlZCB0ZXN0cyBhdCBhIGxhdGVyIGRhdGUuIEFz
IGEgcmVtaW5kZXIsIEdvb2dsZSBUZXN0IHdpbGwKLXByaW50IGEgYmFubmVyIHdhcm5pbmcgeW91
IGlmIGEgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIGFueSBkaXNhYmxlZCB0ZXN0cy4KLQotX1RpcDpf
IFlvdSBjYW4gZWFzaWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgeW91IGhh
dmUKLXVzaW5nIGBncmVwYC4gVGhpcyBudW1iZXIgY2FuIGJlIHVzZWQgYXMgYSBtZXRyaWMgZm9y
IGltcHJvdmluZyB5b3VyCi10ZXN0IHF1YWxpdHkuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwg
V2luZG93cywgTWFjLgotCi0jIyMgVGVtcG9yYXJpbHkgRW5hYmxpbmcgRGlzYWJsZWQgVGVzdHMg
IyMjCi0KLVRvIGluY2x1ZGUgW2Rpc2FibGVkIHRlc3RzXSgjdGVtcG9yYXJpbHktZGlzYWJsaW5n
LXRlc3RzKSBpbiB0ZXN0Ci1leGVjdXRpb24sIGp1c3QgaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0g
d2l0aCB0aGUKLWAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzYCBmbGFnIG9yIHNldCB0
aGUKLWBHVEVTVF9BTFNPX1JVTl9ESVNBQkxFRF9URVNUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gYSB2YWx1ZSBvdGhlcgotdGhhbiBgMGAuICBZb3UgY2FuIGNvbWJpbmUgdGhpcyB3aXRoIHRo
ZQotWy0tZ3Rlc3RcX2ZpbHRlcl0oI3J1bm5pbmctYS1zdWJzZXQtb2YtdGhlLXRlc3RzKSBmbGFn
IHRvIGZ1cnRoZXIgc2VsZWN0Ci13aGljaCBkaXNhYmxlZCB0ZXN0cyB0byBydW4uCi0KLV9BdmFp
bGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMy4wLgotCi0j
IyBSZXBlYXRpbmcgdGhlIFRlc3RzICMjCi0KLU9uY2UgaW4gYSB3aGlsZSB5b3UnbGwgcnVuIGlu
dG8gYSB0ZXN0IHdob3NlIHJlc3VsdCBpcyBoaXQtb3ItbWlzcy4gUGVyaGFwcyBpdAotd2lsbCBm
YWlsIG9ubHkgMSUgb2YgdGhlIHRpbWUsIG1ha2luZyBpdCByYXRoZXIgaGFyZCB0byByZXByb2R1
Y2UgdGhlIGJ1ZyB1bmRlcgotYSBkZWJ1Z2dlci4gVGhpcyBjYW4gYmUgYSBtYWpvciBzb3VyY2Ug
b2YgZnJ1c3RyYXRpb24uCi0KLVRoZSBgLS1ndGVzdF9yZXBlYXRgIGZsYWcgYWxsb3dzIHlvdSB0
byByZXBlYXQgYWxsIChvciBzZWxlY3RlZCkgdGVzdCBtZXRob2RzCi1pbiBhIHByb2dyYW0gbWFu
eSB0aW1lcy4gSG9wZWZ1bGx5LCBhIGZsYWt5IHRlc3Qgd2lsbCBldmVudHVhbGx5IGZhaWwgYW5k
IGdpdmUKLXlvdSBhIGNoYW5jZSB0byBkZWJ1Zy4gSGVyZSdzIGhvdyB0byB1c2UgaXQ6Ci0KLXwg
YCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMGAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAg
dGltZXMgYW5kIGRvbid0IHN0b3AgYXQgZmFpbHVyZXMuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKLXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9LTFgICAgfCBB
IG5lZ2F0aXZlIGNvdW50IG1lYW5zIHJlcGVhdGluZyBmb3JldmVyLiAgICAgICAgICAgICAgIHwK
LXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmVgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzLCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qg
ZmFpbHVyZS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgdW5kZXIgYSBk
ZWJ1Z2dlcjogd2hlbiB0aGUgdGVzdGZhaWxzLCBpdCB3aWxsIGRyb3AgaW50byB0aGUgZGVidWdn
ZXIgYW5kIHlvdSBjYW4gdGhlbiBpbnNwZWN0IHZhcmlhYmxlcyBhbmQgc3RhY2tzLiB8Ci18IGAk
IGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9maWx0ZXI9Rm9vQmFyYCB8IFJl
cGVhdCB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBmaWx0ZXIgMTAwMCB0aW1lcy4g
fAotCi1JZiB5b3VyIHRlc3QgcHJvZ3JhbSBjb250YWlucyBnbG9iYWwgc2V0LXVwL3RlYXItZG93
biBjb2RlIHJlZ2lzdGVyZWQKLXVzaW5nIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAsIGl0
IHdpbGwgYmUgcmVwZWF0ZWQgaW4gZWFjaAotaXRlcmF0aW9uIGFzIHdlbGwsIGFzIHRoZSBmbGFr
aW5lc3MgbWF5IGJlIGluIGl0LiBZb3UgY2FuIGFsc28gc3BlY2lmeQotdGhlIHJlcGVhdCBjb3Vu
dCBieSBzZXR0aW5nIHRoZSBgR1RFU1RfUkVQRUFUYCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQot
X0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFNodWZmbGluZyB0aGUg
VGVzdHMgIyMKLQotWW91IGNhbiBzcGVjaWZ5IHRoZSBgLS1ndGVzdF9zaHVmZmxlYCBmbGFnIChv
ciBzZXQgdGhlIGBHVEVTVF9TSFVGRkxFYAotZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDFgKSB0
byBydW4gdGhlIHRlc3RzIGluIGEgcHJvZ3JhbSBpbiBhIHJhbmRvbQotb3JkZXIuIFRoaXMgaGVs
cHMgdG8gcmV2ZWFsIGJhZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0ZXN0cy4KLQotQnkgZGVmYXVs
dCwgR29vZ2xlIFRlc3QgdXNlcyBhIHJhbmRvbSBzZWVkIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3Vy
cmVudAotdGltZS4gVGhlcmVmb3JlIHlvdSdsbCBnZXQgYSBkaWZmZXJlbnQgb3JkZXIgZXZlcnkg
dGltZS4gVGhlIGNvbnNvbGUKLW91dHB1dCBpbmNsdWRlcyB0aGUgcmFuZG9tIHNlZWQgdmFsdWUs
IHN1Y2ggdGhhdCB5b3UgY2FuIHJlcHJvZHVjZSBhbgotb3JkZXItcmVsYXRlZCB0ZXN0IGZhaWx1
cmUgbGF0ZXIuIFRvIHNwZWNpZnkgdGhlIHJhbmRvbSBzZWVkCi1leHBsaWNpdGx5LCB1c2UgdGhl
IGAtLWd0ZXN0X3JhbmRvbV9zZWVkPVNFRURgIGZsYWcgKG9yIHNldCB0aGUKLWBHVEVTVF9SQU5E
T01fU0VFRGAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCB3aGVyZSBgU0VFRGAgaXMgYW4gaW50ZWdl
cgotYmV0d2VlbiAwIGFuZCA5OTk5OS4gVGhlIHNlZWQgdmFsdWUgMCBpcyBzcGVjaWFsOiBpdCB0
ZWxscyBHb29nbGUgVGVzdAotdG8gZG8gdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2FsY3VsYXRp
bmcgdGhlIHNlZWQgZnJvbSB0aGUgY3VycmVudAotdGltZS4KLQotSWYgeW91IGNvbWJpbmUgdGhp
cyB3aXRoIGAtLWd0ZXN0X3JlcGVhdD1OYCwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEKLWRpZmZl
cmVudCByYW5kb20gc2VlZCBhbmQgcmUtc2h1ZmZsZSB0aGUgdGVzdHMgaW4gZWFjaCBpdGVyYXRp
b24uCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS40LjAu
Ci0KLSMjIENvbnRyb2xsaW5nIFRlc3QgT3V0cHV0ICMjCi0KLVRoaXMgc2VjdGlvbiB0ZWFjaGVz
IGhvdyB0byB0d2VhayB0aGUgd2F5IHRlc3QgcmVzdWx0cyBhcmUgcmVwb3J0ZWQuCi0KLSMjIyBD
b2xvcmVkIFRlcm1pbmFsIE91dHB1dCAjIyMKLQotR29vZ2xlIFRlc3QgY2FuIHVzZSBjb2xvcnMg
aW4gaXRzIHRlcm1pbmFsIG91dHB1dCB0byBtYWtlIGl0IGVhc2llciB0byBzcG90Ci10aGUgc2Vw
YXJhdGlvbiBiZXR3ZWVuIHRlc3RzLCBhbmQgd2hldGhlciB0ZXN0cyBwYXNzZWQuCi0KLVlvdSBj
YW4gc2V0IHRoZSBHVEVTVFxfQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGUgb3Igc2V0IHRoZSBg
LS1ndGVzdF9jb2xvcmAKLWNvbW1hbmQgbGluZSBmbGFnIHRvIGB5ZXNgLCBgbm9gLCBvciBgYXV0
b2AgKHRoZSBkZWZhdWx0KSB0byBlbmFibGUgY29sb3JzLAotZGlzYWJsZSBjb2xvcnMsIG9yIGxl
dCBHb29nbGUgVGVzdCBkZWNpZGUuIFdoZW4gdGhlIHZhbHVlIGlzIGBhdXRvYCwgR29vZ2xlCi1U
ZXN0IHdpbGwgdXNlIGNvbG9ycyBpZiBhbmQgb25seSBpZiB0aGUgb3V0cHV0IGdvZXMgdG8gYSB0
ZXJtaW5hbCBhbmQgKG9uCi1ub24tV2luZG93cyBwbGF0Zm9ybXMpIHRoZSBgVEVSTWAgZW52aXJv
bm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvIGB4dGVybWAgb3IKLWB4dGVybS1jb2xvcmAuCi0KLV9B
dmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgU3VwcHJlc3NpbmcgdGhl
IEVsYXBzZWQgVGltZSAjIyMKLQotQnkgZGVmYXVsdCwgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSB0
aW1lIGl0IHRha2VzIHRvIHJ1biBlYWNoIHRlc3QuICBUbwotc3VwcHJlc3MgdGhhdCwgcnVuIHRo
ZSB0ZXN0IHByb2dyYW0gd2l0aCB0aGUgYC0tZ3Rlc3RfcHJpbnRfdGltZT0wYAotY29tbWFuZCBs
aW5lIGZsYWcuICBTZXR0aW5nIHRoZSBgR1RFU1RfUFJJTlRfVElNRWAgZW52aXJvbm1lbnQKLXZh
cmlhYmxlIHRvIGAwYCBoYXMgdGhlIHNhbWUgZWZmZWN0LgotCi1fQXZhaWxhYmlsaXR5Ol8gTGlu
dXgsIFdpbmRvd3MsIE1hYy4gIChJbiBHb29nbGUgVGVzdCAxLjMuMCBhbmQgbG93ZXIsCi10aGUg
ZGVmYXVsdCBiZWhhdmlvciBpcyB0aGF0IHRoZSBlbGFwc2VkIHRpbWUgaXMgKipub3QqKiBwcmlu
dGVkLikKLQotIyMjIEdlbmVyYXRpbmcgYW4gWE1MIFJlcG9ydCAjIyMKLQotR29vZ2xlIFRlc3Qg
Y2FuIGVtaXQgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZSBpbiBhZGRpdGlvbiB0byBp
dHMgbm9ybWFsCi10ZXh0dWFsIG91dHB1dC4gVGhlIHJlcG9ydCBjb250YWlucyB0aGUgZHVyYXRp
b24gb2YgZWFjaCB0ZXN0LCBhbmQgdGh1cyBjYW4KLWhlbHAgeW91IGlkZW50aWZ5IHNsb3cgdGVz
dHMuCi0KLVRvIGdlbmVyYXRlIHRoZSBYTUwgcmVwb3J0LCBzZXQgdGhlIGBHVEVTVF9PVVRQVVRg
IGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZQotYC0tZ3Rlc3Rfb3V0cHV0YCBmbGFnIHRvIHRo
ZSBzdHJpbmcgYCJ4bWw6X3BhdGhfdG9fb3V0cHV0X2ZpbGVfImAsIHdoaWNoIHdpbGwKLWNyZWF0
ZSB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uIFlvdSBjYW4gYWxzbyBqdXN0IHVzZSB0
aGUgc3RyaW5nCi1gInhtbCJgLCBpbiB3aGljaCBjYXNlIHRoZSBvdXRwdXQgY2FuIGJlIGZvdW5k
IGluIHRoZSBgdGVzdF9kZXRhaWwueG1sYCBmaWxlIGluCi10aGUgY3VycmVudCBkaXJlY3Rvcnku
Ci0KLUlmIHlvdSBzcGVjaWZ5IGEgZGlyZWN0b3J5IChmb3IgZXhhbXBsZSwgYCJ4bWw6b3V0cHV0
L2RpcmVjdG9yeS8iYCBvbiBMaW51eCBvcgotYCJ4bWw6b3V0cHV0XGRpcmVjdG9yeVwiYCBvbiBX
aW5kb3dzKSwgR29vZ2xlIFRlc3Qgd2lsbCBjcmVhdGUgdGhlIFhNTCBmaWxlIGluCi10aGF0IGRp
cmVjdG9yeSwgbmFtZWQgYWZ0ZXIgdGhlIHRlc3QgZXhlY3V0YWJsZSAoZS5nLiBgZm9vX3Rlc3Qu
eG1sYCBmb3IgdGVzdAotcHJvZ3JhbSBgZm9vX3Rlc3RgIG9yIGBmb29fdGVzdC5leGVgKS4gSWYg
dGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgKHBlcmhhcHMgbGVmdAotb3ZlciBmcm9tIGEgcHJldmlv
dXMgcnVuKSwgR29vZ2xlIFRlc3Qgd2lsbCBwaWNrIGEgZGlmZmVyZW50IG5hbWUgKGUuZy4KLWBm
b29fdGVzdF8xLnhtbGApIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGl0LgotCi1UaGUgcmVwb3J0IHVz
ZXMgdGhlIGZvcm1hdCBkZXNjcmliZWQgaGVyZS4gIEl0IGlzIGJhc2VkIG9uIHRoZQotYGp1bml0
cmVwb3J0YCBBbnQgdGFzayBhbmQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVvdXMg
YnVpbGQKLXN5c3RlbXMgbGlrZSBbSHVkc29uXShodHRwczovL2h1ZHNvbi5kZXYuamF2YS5uZXQv
KS4gU2luY2UgdGhhdCBmb3JtYXQKLXdhcyBvcmlnaW5hbGx5IGludGVuZGVkIGZvciBKYXZhLCBh
IGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAotdG8gbWFrZSBpdCBhcHBseSB0byBH
b29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKLQotYGBgCi08dGVzdHN1aXRlcyBuYW1l
PSJBbGxUZXN0cyIgLi4uPgotICA8dGVzdHN1aXRlIG5hbWU9InRlc3RfY2FzZV9uYW1lIiAuLi4+
Ci0gICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4uPgotICAgICAgPGZhaWx1cmUgbWVz
c2FnZT0iLi4uIi8+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4KLSAgICAgIDxmYWls
dXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRlPgotPC90
ZXN0c3VpdGVzPgotYGBgCi0KLSAgKiBUaGUgcm9vdCBgPHRlc3RzdWl0ZXM+YCBlbGVtZW50IGNv
cnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLgotICAqIGA8dGVzdHN1aXRlPmAg
ZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGNhc2VzLgotICAqIGA8dGVz
dGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2dsZSBUZXN0IHRlc3QgZnVuY3Rpb25z
LgotCi1Gb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbQotCi1gYGAKLVRFU1QoTWF0
aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9Ci1URVNUKE1hdGhUZXN0LCBTdWJ0cmFjdGlvbikgeyAu
Li4gfQotVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rpb24pIHsgLi4uIH0KLWBgYAotCi1j
b3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKLQotYGBgCi08P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjMiIGZhaWx1cmVzPSIxIiBlcnJv
cnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iTWF0
aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIqIGVycm9ycz0iMCIgdGltZT0iMTUiPgotICAg
IDx0ZXN0Y2FzZSBuYW1lPSJBZGRpdGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjciIGNsYXNzbmFt
ZT0iIj4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsg
QWN0dWFsOiAzJiN4MEE7RXhwZWN0ZWQ6IDIiIHR5cGU9IiIvPgotICAgICAgPGZhaWx1cmUgbWVz
c2FnZT0iVmFsdWUgb2Y6IGFkZCgxLCAtMSkmI3gwQTsgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6
IDAiIHR5cGU9IiIvPgotICAgIDwvdGVzdGNhc2U+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRy
YWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgotICAgIDwvdGVzdGNh
c2U+Ci0gIDwvdGVzdHN1aXRlPgotICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9
IjEiIGZhaWx1cmVzPSIwIiBlcnJvcnM9IjAiIHRpbWU9IjUiPgotICAgIDx0ZXN0Y2FzZSBuYW1l
PSJOb25Db250cmFkaWN0aW9uIiBzdGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgot
ICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotYGBgCi0KLVRo
aW5ncyB0byBub3RlOgotCi0gICogVGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0c3Vp
dGVzPmAgb3IgYDx0ZXN0c3VpdGU+YCBlbGVtZW50IHRlbGxzIGhvdyBtYW55IHRlc3QgZnVuY3Rp
b25zIHRoZSBHb29nbGUgVGVzdCBwcm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUg
dGhlIGBmYWlsdXJlc2AgYXR0cmlidXRlIHRlbGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgot
ICAqIFRoZSBgdGltZWAgYXR0cmlidXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRl
c3QsIHRlc3QgY2FzZSwgb3IgZW50aXJlIHRlc3QgcHJvZ3JhbSBpbiBtaWxsaXNlY29uZHMuCi0g
ICogRWFjaCBgPGZhaWx1cmU+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxl
ZCBHb29nbGUgVGVzdCBhc3NlcnRpb24uCi0gICogU29tZSBKVW5pdCBjb25jZXB0cyBkb24ndCBh
cHBseSB0byBHb29nbGUgVGVzdCwgeWV0IHdlIGhhdmUgdG8gY29uZm9ybSB0byB0aGUgRFRELiBU
aGVyZWZvcmUgeW91J2xsIHNlZSBzb21lIGR1bW15IGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGlu
IHRoZSByZXBvcnQuIFlvdSBjYW4gc2FmZWx5IGlnbm9yZSB0aGVzZSBwYXJ0cy4KLQotX0F2YWls
YWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIENvbnRyb2xsaW5nIEhvdyBGYWls
dXJlcyBBcmUgUmVwb3J0ZWQgIyMKLQotIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGlu
dG8gQnJlYWstUG9pbnRzICMjIwotCi1XaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBh
IGRlYnVnZ2VyLCBpdCdzIHZlcnkgY29udmVuaWVudCBpZiB0aGUKLWRlYnVnZ2VyIGNhbiBjYXRj
aCBhbiBhc3NlcnRpb24gZmFpbHVyZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJh
Y3RpdmUKLW1vZGUuIEdvb2dsZSBUZXN0J3MgX2JyZWFrLW9uLWZhaWx1cmVfIG1vZGUgc3VwcG9y
dHMgdGhpcyBiZWhhdmlvci4KLQotVG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19P
Tl9GQUlMVVJFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlCi1vdGhlciB0aGFuIGAw
YCAuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWls
dXJlYAotY29tbWFuZCBsaW5lIGZsYWcuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93
cywgTWFjLgotCi0jIyMgU3VwcHJlc3NpbmcgUG9wLXVwcyBDYXVzZWQgYnkgRXhjZXB0aW9ucyAj
IyMKLQotT24gV2luZG93cywgR29vZ2xlIFRlc3QgbWF5IGJlIHVzZWQgd2l0aCBleGNlcHRpb25z
IGVuYWJsZWQuIEV2ZW4gd2hlbgotZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQsIGFuIGFwcGxpY2F0
aW9uIGNhbiBzdGlsbCB0aHJvdyBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbnMKLShTRUgncykuIElmIGEg
dGVzdCB0aHJvd3MgYW4gZXhjZXB0aW9uLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGRvZXNuJ3Qg
dHJ5IHRvCi1jYXRjaCBpdC4gSW5zdGVhZCwgeW91J2xsIHNlZSBhIHBvcC11cCBkaWFsb2csIGF0
IHdoaWNoIHBvaW50IHlvdSBjYW4gYXR0YWNoCi10aGUgcHJvY2VzcyB0byBhIGRlYnVnZ2VyIGFu
ZCBlYXNpbHkgZmluZCBvdXQgd2hhdCB3ZW50IHdyb25nLgotCi1Ib3dldmVyLCBpZiB5b3UgZG9u
J3Qgd2FudCB0byBzZWUgdGhlIHBvcC11cHMgKGZvciBleGFtcGxlLCBpZiB5b3UgcnVuIHRoZQot
dGVzdHMgaW4gYSBiYXRjaCBqb2IpLCBzZXQgdGhlIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYCBl
bnZpcm9ubWVudCB2YXJpYWJsZSB0bwotYSBub24tIGAwYCB2YWx1ZSwgb3IgdXNlIHRoZSBgLS1n
dGVzdF9jYXRjaF9leGNlcHRpb25zYCBmbGFnLiBHb29nbGUgVGVzdCBub3cKLWNhdGNoZXMgYWxs
IHRlc3QtdGhyb3duIGV4Y2VwdGlvbnMgYW5kIGxvZ3MgdGhlbSBhcyBmYWlsdXJlcy4KLQotX0F2
YWlsYWJpbGl0eTpfIFdpbmRvd3MuIGBHVEVTVF9DQVRDSF9FWENFUFRJT05TYCBhbmQKLWAtLWd0
ZXN0X2NhdGNoX2V4Y2VwdGlvbnNgIGhhdmUgbm8gZWZmZWN0IG9uIEdvb2dsZSBUZXN0J3MgYmVo
YXZpb3Igb24gTGludXggb3IKLU1hYywgZXZlbiBpZiBleGNlcHRpb25zIGFyZSBlbmFibGVkLiBJ
dCBpcyBwb3NzaWJsZSB0byBhZGQgc3VwcG9ydCBmb3IgY2F0Y2hpbmcKLWV4Y2VwdGlvbnMgb24g
dGhlc2UgcGxhdGZvcm1zLCBidXQgaXQgaXMgbm90IGltcGxlbWVudGVkIHlldC4KLQotIyMjIExl
dHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKLQotSWYgeW91IHdvcmsg
b24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcK
LWZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2ds
ZSBUZXN0IHlldCwKLXlvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5
IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCi15b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFu
Z2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCi1saWtlOgotCi1gYGAKLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAg
Ojp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgLy8gSW1w
b3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgotICA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGlu
ZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KLX0KLWBgYAotCi1XaXRoIHRoYXQsIHlv
dSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCi1uYXRp
dmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBs
ZToKLQotYGBgCi12b2lkIFRlc3RGb29Eb2VzQmFyKCkgewotICBGb28gZm9vOwotICBFWFBFQ1Rf
TEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgotICBD
UFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KLX0K
LWBgYAotCi1JZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBh
biBlcnJvciBtZXNzYWdlIGFuZAotdGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRy
ZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAotdGVzdGluZyBmcmFtZXdvcmsuICBJZiB5
b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAotYSBmYWlsZWQg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRo
IGEKLW5vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUg
dG8geW91ciB0ZXN0Ci1ydW5uZXIuCi0KLUlmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCi15b3VyIGBtYWluKClgLCB5
b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCi10
aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9y
IHNldHRpbmcgdGhlCi1gR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFi
bGUgdG8gYSBub24temVybyB2YWx1ZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWM7IHNpbmNlIHYxLjMuMC4KLQotIyMgRGlzdHJpYnV0aW5nIFRlc3QgRnVuY3Rpb25zIHRv
IE11bHRpcGxlIE1hY2hpbmVzICMjCi0KLUlmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgbWFjaGlu
ZSB5b3UgY2FuIHVzZSB0byBydW4gYSB0ZXN0IHByb2dyYW0sCi15b3UgbWlnaHQgd2FudCB0byBy
dW4gdGhlIHRlc3QgZnVuY3Rpb25zIGluIHBhcmFsbGVsIGFuZCBnZXQgdGhlCi1yZXN1bHQgZmFz
dGVyLiAgV2UgY2FsbCB0aGlzIHRlY2huaXF1ZSBfc2hhcmRpbmdfLCB3aGVyZSBlYWNoIG1hY2hp
bmUKLWlzIGNhbGxlZCBhIF9zaGFyZF8uCi0KLUdvb2dsZSBUZXN0IGlzIGNvbXBhdGlibGUgd2l0
aCB0ZXN0IHNoYXJkaW5nLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKLXRoaXMgZmVhdHVyZSwgeW91
ciB0ZXN0IHJ1bm5lciAobm90IHBhcnQgb2YgR29vZ2xlIFRlc3QpIG5lZWRzIHRvIGRvCi10aGUg
Zm9sbG93aW5nOgotCi0gIDEuIEFsbG9jYXRlIGEgbnVtYmVyIG9mIG1hY2hpbmVzIChzaGFyZHMp
IHRvIHJ1biB0aGUgdGVzdHMuCi0gIDEuIE9uIGVhY2ggc2hhcmQsIHNldCB0aGUgYEdURVNUX1RP
VEFMX1NIQVJEU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBz
aGFyZHMuICBJdCBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgc2hhcmRzLgotICAxLiBPbiBlYWNo
IHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9TSEFSRF9JTkRFWGAgZW52aXJvbm1lbnQgdmFyaWFibGUg
dG8gdGhlIGluZGV4IG9mIHRoZSBzaGFyZC4gIERpZmZlcmVudCBzaGFyZHMgbXVzdCBiZSBhc3Np
Z25lZCBkaWZmZXJlbnQgaW5kaWNlcywgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgYFswLCBH
VEVTVF9UT1RBTF9TSEFSRFMgLSAxXWAuCi0gIDEuIFJ1biB0aGUgc2FtZSB0ZXN0IHByb2dyYW0g
b24gYWxsIHNoYXJkcy4gIFdoZW4gR29vZ2xlIFRlc3Qgc2VlcyB0aGUgYWJvdmUgdHdvIGVudmly
b25tZW50IHZhcmlhYmxlcywgaXQgd2lsbCBzZWxlY3QgYSBzdWJzZXQgb2YgdGhlIHRlc3QgZnVu
Y3Rpb25zIHRvIHJ1bi4gIEFjcm9zcyBhbGwgc2hhcmRzLCBlYWNoIHRlc3QgZnVuY3Rpb24gaW4g
dGhlIHByb2dyYW0gd2lsbCBiZSBydW4gZXhhY3RseSBvbmNlLgotICAxLiBXYWl0IGZvciBhbGwg
c2hhcmRzIHRvIGZpbmlzaCwgdGhlbiBjb2xsZWN0IGFuZCByZXBvcnQgdGhlIHJlc3VsdHMuCi0K
LVlvdXIgcHJvamVjdCBtYXkgaGF2ZSB0ZXN0cyB0aGF0IHdlcmUgd3JpdHRlbiB3aXRob3V0IEdv
b2dsZSBUZXN0IGFuZAotdGh1cyBkb24ndCB1bmRlcnN0YW5kIHRoaXMgcHJvdG9jb2wuICBJbiBv
cmRlciBmb3IgeW91ciB0ZXN0IHJ1bm5lciB0bwotZmlndXJlIG91dCB3aGljaCB0ZXN0IHN1cHBv
cnRzIHNoYXJkaW5nLCBpdCBjYW4gc2V0IHRoZSBlbnZpcm9ubWVudAotdmFyaWFibGUgYEdURVNU
X1NIQVJEX1NUQVRVU19GSUxFYCB0byBhIG5vbi1leGlzdGVudCBmaWxlIHBhdGguICBJZiBhCi10
ZXN0IHByb2dyYW0gc3VwcG9ydHMgc2hhcmRpbmcsIGl0IHdpbGwgY3JlYXRlIHRoaXMgZmlsZSB0
bwotYWNrbm93bGVkZ2UgdGhlIGZhY3QgKHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIGZpbGUg
YXJlIG5vdAotaW1wb3J0YW50IGF0IHRoaXMgdGltZTsgYWx0aG91Z2ggd2UgbWF5IHN0aWNrIHNv
bWUgdXNlZnVsIGluZm9ybWF0aW9uCi1pbiBpdCBpbiB0aGUgZnV0dXJlLik7IG90aGVyd2lzZSBp
dCB3aWxsIG5vdCBjcmVhdGUgaXQuCi0KLUhlcmUncyBhbiBleGFtcGxlIHRvIG1ha2UgaXQgY2xl
YXIuICBTdXBwb3NlIHlvdSBoYXZlIGEgdGVzdCBwcm9ncmFtCi1gZm9vX3Rlc3RgIHRoYXQgY29u
dGFpbnMgdGhlIGZvbGxvd2luZyA1IHRlc3QgZnVuY3Rpb25zOgotYGBgCi1URVNUKEEsIFYpCi1U
RVNUKEEsIFcpCi1URVNUKEIsIFgpCi1URVNUKEIsIFkpCi1URVNUKEIsIFopCi1gYGAKLWFuZCB5
b3UgaGF2ZSAzIG1hY2hpbmVzIGF0IHlvdXIgZGlzcG9zYWwuICBUbyBydW4gdGhlIHRlc3QgZnVu
Y3Rpb25zIGluCi1wYXJhbGxlbCwgeW91IHdvdWxkIHNldCBgR1RFU1RfVE9UQUxfU0hBUkRTYCB0
byAzIG9uIGFsbCBtYWNoaW5lcywgYW5kCi1zZXQgYEdURVNUX1NIQVJEX0lOREVYYCB0byAwLCAx
LCBhbmQgMiBvbiB0aGUgbWFjaGluZXMgcmVzcGVjdGl2ZWx5LgotVGhlbiB5b3Ugd291bGQgcnVu
IHRoZSBzYW1lIGBmb29fdGVzdGAgb24gZWFjaCBtYWNoaW5lLgotCi1Hb29nbGUgVGVzdCByZXNl
cnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIGhvdyB0aGUgd29yayBpcyBkaXN0cmlidXRlZAotYWNy
b3NzIHRoZSBzaGFyZHMsIGJ1dCBoZXJlJ3Mgb25lIHBvc3NpYmxlIHNjZW5hcmlvOgotCi0gICog
TWFjaGluZSAjMCBydW5zIGBBLlZgIGFuZCBgQi5YYC4KLSAgKiBNYWNoaW5lICMxIHJ1bnMgYEEu
V2AgYW5kIGBCLllgLgotICAqIE1hY2hpbmUgIzIgcnVucyBgQi5aYC4KLQotX0F2YWlsYWJpbGl0
eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS4zLjAuCi0KLSMgRnVzaW5n
IEdvb2dsZSBUZXN0IFNvdXJjZSBGaWxlcyAjCi0KLUdvb2dsZSBUZXN0J3MgaW1wbGVtZW50YXRp
b24gY29uc2lzdHMgb2YgfjMwIGZpbGVzIChleGNsdWRpbmcgaXRzIG93bgotdGVzdHMpLiAgU29t
ZXRpbWVzIHlvdSBtYXkgd2FudCB0aGVtIHRvIGJlIHBhY2thZ2VkIHVwIGluIHR3byBmaWxlcyAo
YQotYC5oYCBhbmQgYSBgLmNjYCkgaW5zdGVhZCwgc3VjaCB0aGF0IHlvdSBjYW4gZWFzaWx5IGNv
cHkgdGhlbSB0byBhIG5ldwotbWFjaGluZSBhbmQgc3RhcnQgaGFja2luZyB0aGVyZS4gIEZvciB0
aGlzIHdlIHByb3ZpZGUgYW4gZXhwZXJpbWVudGFsCi1QeXRob24gc2NyaXB0IGBmdXNlX2d0ZXN0
X2ZpbGVzLnB5YCBpbiB0aGUgYHNjcmlwdHMvYCBkaXJlY3RvcnkgKHNpbmNlIHJlbGVhc2UgMS4z
LjApLgotQXNzdW1pbmcgeW91IGhhdmUgUHl0aG9uIDIuNCBvciBhYm92ZSBpbnN0YWxsZWQgb24g
eW91ciBtYWNoaW5lLCBqdXN0Ci1nbyB0byB0aGF0IGRpcmVjdG9yeSBhbmQgcnVuCi1gYGAKLXB5
dGhvbiBmdXNlX2d0ZXN0X2ZpbGVzLnB5IE9VVFBVVF9ESVIKLWBgYAotCi1hbmQgeW91IHNob3Vs
ZCBzZWUgYW4gYE9VVFBVVF9ESVJgIGRpcmVjdG9yeSBiZWluZyBjcmVhdGVkIHdpdGggZmlsZXMK
LWBndGVzdC9ndGVzdC5oYCBhbmQgYGd0ZXN0L2d0ZXN0LWFsbC5jY2AgaW4gaXQuICBUaGVzZSBm
aWxlcyBjb250YWluCi1ldmVyeXRoaW5nIHlvdSBuZWVkIHRvIHVzZSBHb29nbGUgVGVzdC4gIEp1
c3QgY29weSB0aGVtIHRvIGFueXdoZXJlCi15b3Ugd2FudCBhbmQgeW91IGFyZSByZWFkeSB0byB3
cml0ZSB0ZXN0cy4gIFlvdSBjYW4gdXNlIHRoZQotW3NjcnB0cy90ZXN0L01ha2VmaWxlXSguLi9z
Y3JpcHRzL3Rlc3QvTWFrZWZpbGUpCi1maWxlIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGNvbXBp
bGUgeW91ciB0ZXN0cyBhZ2FpbnN0IHRoZW0uCi0KLSMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMK
LQotQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbm93IGxlYXJuZWQgbW9yZSBhZHZhbmNlZCBHb29n
bGUgVGVzdCB0b29scyBhbmQgYXJlCi1yZWFkeSB0byB0YWNrbGUgbW9yZSBjb21wbGV4IHRlc3Rp
bmcgdGFza3MuIElmIHlvdSB3YW50IHRvIGRpdmUgZXZlbiBkZWVwZXIsIHlvdQotY2FuIHJlYWQg
dGhlIFtGQVFdKFYxXzVfRkFRLm1kKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFf
NV9Eb2N1bWVudGF0aW9uLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X0RvY3VtZW50YXRpb24u
bWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YmJhMmVjODZlNi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9Eb2N1bWVudGF0aW9uLm1kCisrKyAvZGV2
L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyBwYWdlIGxpc3RzIGFsbCBvZmZpY2lhbCBkb2N1
bWVudGF0aW9uIHdpa2kgcGFnZXMgZm9yIEdvb2dsZSBUZXN0ICoqMS41LjAqKiAtLSAqKmlmIHlv
dSB1c2UgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBHb29nbGUgVGVzdCwgbWFrZSBzdXJlIHRvIHJl
YWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgdmVyc2lvbiBpbnN0ZWFkLioqCi0KLSAgKiBb
UHJpbWVyXShWMV81X1ByaW1lci5tZCkgLS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBH
b29nbGUgVGVzdC4KLSAgKiBbU2FtcGxlc10oU2FtcGxlcy5tZCkgLS0gbGVhcm4gZnJvbSBleGFt
cGxlcy4KLSAgKiBbQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSAtLSBsZWFy
biBtb3JlIGFib3V0IEdvb2dsZSBUZXN0LgotICAqIFtYY29kZUd1aWRlXShWMV81X1hjb2RlR3Vp
ZGUubWQpIC0tIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgaW4gWGNvZGUgb24gTWFjLgotICAqIFtG
cmVxdWVudGx5LUFza2VkIFF1ZXN0aW9uc10oVjFfNV9GQVEubWQpIC0tIGNoZWNrIGhlcmUgYmVm
b3JlIGFza2luZyBhIHF1ZXN0aW9uIG9uIHRoZSBtYWlsaW5nIGxpc3QuCi0KLVRvIGNvbnRyaWJ1
dGUgY29kZSB0byBHb29nbGUgVGVzdCwgcmVhZDoKLQotICAqIERldkd1aWRlIC0tIHJlYWQgdGhp
cyBfYmVmb3JlXyB3cml0aW5nIHlvdXIgZmlyc3QgcGF0Y2guCi0gICogW1B1bXBNYW51YWxdKFYx
XzVfUHVtcE1hbnVhbC5tZCkgLS0gaG93IHdlIGdlbmVyYXRlIHNvbWUgb2YgR29vZ2xlIFRlc3Qn
cyBzb3VyY2UgZmlsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV81X0ZBUS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9GQVEu
bWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzBhZmYwMDA3Zi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9GQVEubWQKKysrIC9kZXYvbnVsbApAQCAt
MSw4ODYgKzAsMCBAQAotCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIg
cXVlc3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJlYWQKLVtQcmltZXJdKFYxXzVfUHJpbWVyLm1k
KSBhbmQgW0FkdmFuY2VkR3VpZGVdKFYxXzVfQWR2YW5jZWRHdWlkZS5tZCksIHNlbmQgaXQgdG8K
LWdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4KLQotIyMgV2h5IHNob3VsZCBJ
IHVzZSBHb29nbGUgVGVzdCBpbnN0ZWFkIG9mIG15IGZhdm9yaXRlIEMrKyB0ZXN0aW5nIGZyYW1l
d29yaz8gIyMKLQotRmlyc3QsIGxldCdzIHNheSBjbGVhcmx5IHRoYXQgd2UgZG9uJ3Qgd2FudCB0
byBnZXQgaW50byB0aGUgZGViYXRlIG9mCi13aGljaCBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMg
Kip0aGUgYmVzdCoqLiAgVGhlcmUgZXhpc3QgbWFueSBmaW5lCi1mcmFtZXdvcmtzIGZvciB3cml0
aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhhdmUgdHJlbWVuZG91cyByZXNwZWN0IGZvcgotdGhlIGRl
dmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRoZW0uICBXZSBkb24ndCB0aGluayB0aGVyZSBpcyAob3Ig
d2lsbAotYmUpIGEgc2luZ2xlIGJlc3QgZnJhbWV3b3JrIC0geW91IGhhdmUgdG8gcGljayB0aGUg
cmlnaHQgdG9vbCBmb3IgdGhlCi1wYXJ0aWN1bGFyIHRhc2sgeW91IGFyZSB0YWNrbGluZy4KLQot
V2UgY3JlYXRlZCBHb29nbGUgVGVzdCBiZWNhdXNlIHdlIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0
IGNvbWJpbmF0aW9uCi1vZiBmZWF0dXJlcyBhbmQgY29udmVuaWVuY2VzIGluIGFuIGV4aXN0aW5n
IGZyYW1ld29yayB0byBzYXRpc2Z5IF9vdXJfCi1uZWVkcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBs
aXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8gbGlrZSBhYm91dCBHb29nbGUKLVRlc3QuICBXZSBkb24n
dCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1ZSB0byBHb29nbGUgVGVzdCAtIHJhdGhlciwgdGhlCi1j
b21iaW5hdGlvbiBvZiB0aGVtIG1ha2VzIEdvb2dsZSBUZXN0IHRoZSBjaG9pY2UgZm9yIHVzLiAg
V2UgaG9wZSB0aGlzCi1saXN0IGNhbiBoZWxwIHlvdSBkZWNpZGUgd2hldGhlciBpdCBpcyBmb3Ig
eW91IHRvby4KLQotICAqIEdvb2dsZSBUZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlLiAg
SXQgd29ya3Mgd2hlcmUgbWFueSBTVEwgdHlwZXMgKGUuZy4gYHN0ZDo6c3RyaW5nYCBhbmQgYHN0
ZDo6dmVjdG9yYCkgZG9uJ3QgY29tcGlsZS4gIEl0IGRvZXNuJ3QgcmVxdWlyZSBleGNlcHRpb25z
IG9yIFJUVEkuICBBcyBhIHJlc3VsdCwgaXQgcnVucyBvbiBMaW51eCwgTWFjIE9TIFgsIFdpbmRv
d3MgYW5kIHNldmVyYWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5c3RlbXMuCi0gICogTm9uZmF0YWwg
YXNzZXJ0aW9ucyAoYEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4gdG8gYmUgZ3JlYXQgdGltZSBzYXZl
cnMsIGFzIHRoZXkgYWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBtdWx0aXBsZSBmYWlsdXJlcyBpbiBh
IHNpbmdsZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZS4KLSAgKiBJdCdzIGVhc3kgdG8gd3JpdGUg
YXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZlIG1lc3NhZ2VzOiB5b3UganVzdCB1
c2UgdGhlIHN0cmVhbSBzeW50YXggdG8gYXBwZW5kIGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
LCBlLmcuIGBBU1NFUlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdoZXJlIGkgPSAiIDw8IGk7YC4gIEl0
IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9zIG9yIHNwZWNpYWwgZnVuY3Rpb25z
LgotICAqIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB5b3VyIHRlc3RzIGFuZCBk
b2Vzbid0IHJlcXVpcmUgeW91IHRvIGVudW1lcmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVt
LgotICAqIE5vIGZyYW1ld29yayBjYW4gYW50aWNpcGF0ZSBhbGwgeW91ciBuZWVkcywgc28gR29v
Z2xlIFRlc3QgcHJvdmlkZXMgYEVYUEVDVF9QUkVEKmAgdG8gbWFrZSBpdCBlYXN5IHRvIGV4dGVu
ZCB5b3VyIGFzc2VydGlvbiB2b2NhYnVsYXJ5LiAgRm9yIGEgbmljZXIgc3ludGF4LCB5b3UgY2Fu
IGRlZmluZSB5b3VyIG93biBhc3NlcnRpb24gbWFjcm9zIHRyaXZpYWxseSBpbiB0ZXJtcyBvZiBg
RVhQRUNUX1BSRUQqYC4KLSAgKiBEZWF0aCB0ZXN0cyBhcmUgcHJldHR5IGhhbmR5IGZvciBlbnN1
cmluZyB0aGF0IHlvdXIgYXNzZXJ0cyBpbiBwcm9kdWN0aW9uIGNvZGUgYXJlIHRyaWdnZXJlZCBi
eSB0aGUgcmlnaHQgY29uZGl0aW9ucy4KLSAgKiBgU0NPUEVEX1RSQUNFYCBoZWxwcyB5b3UgdW5k
ZXJzdGFuZCB0aGUgY29udGV4dCBvZiBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aGVuIGl0IGNvbWVz
IGZyb20gaW5zaWRlIGEgc3ViLXJvdXRpbmUgb3IgbG9vcC4KLSAgKiBZb3UgY2FuIGRlY2lkZSB3
aGljaCB0ZXN0cyB0byBydW4gdXNpbmcgbmFtZSBwYXR0ZXJucy4gIFRoaXMgc2F2ZXMgdGltZSB3
aGVuIHlvdSB3YW50IHRvIHF1aWNrbHkgcmVwcm9kdWNlIGEgdGVzdCBmYWlsdXJlLgotCi0jIyBI
b3cgZG8gSSBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNpbmcgVmlzdWFs
IFN0dWRpbyAyMDA4KT8gIyMKLQotKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNvbikKLQotTG9h
ZCB0aGUgc3VwcGxpZWQgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRoZXIgYG1zdmNc
Z3Rlc3QtbWQuc2xuYCBvcgotYG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0aGUgbWlncmF0
aW9uIHdpemFyZCB0byBtaWdyYXRlIHRoZQotc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgdG8g
VmlzdWFsIFN0dWRpbyAyMDA4LiBTZWxlY3QKLWBDb25maWd1cmF0aW9uIE1hbmFnZXIuLi5gIGZy
b20gdGhlIGBCdWlsZGAgbWVudS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQotdGhlIGBBY3RpdmUg
c29sdXRpb24gcGxhdGZvcm1gIGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20gdGhlIG5ldwot
cGxhdGZvcm0gZHJvcGRvd24sIGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNldCB0byBgV2lu
MzJgIGFuZAotYENyZWF0ZSBuZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQsIHRoZW4gY2xp
Y2sgYE9LYC4gWW91IG5vdyBoYXZlCi1gV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9ybSBjb25maWd1
cmF0aW9ucywgc2VsZWN0YWJsZSBmcm9tIHRoZQotYFN0YW5kYXJkYCB0b29sYmFyLCB3aGljaCBh
bGxvdyB5b3UgdG8gdG9nZ2xlIGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCi02NC1iaXQgYmlu
YXJpZXMgKG9yIGJvdGggYXQgb25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCi0KLUluIG9yZGVyIHRv
IHByZXZlbnQgYnVpbGQgb3V0cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25lIGFub3RoZXIs
Ci15b3UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0
aW5ncyBmb3IgdGhlCi1uZXdseSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gYWNyb3Nz
IGFsbCB0aGUgcHJvamVjdHMuIFRvIGRvCi10aGlzLCBtdWx0aS1zZWxlY3QgKGUuZy4gdXNpbmcg
c2hpZnQtY2xpY2spIGFsbCBwcm9qZWN0cyAoYnV0IG5vdCB0aGUKLXNvbHV0aW9uKSBpbiB0aGUg
YFNvbHV0aW9uIEV4cGxvcmVyYC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5kCi1zZWxlY3Qg
YFByb3BlcnRpZXNgLiBJbiB0aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3VyYXRpb24gUHJv
cGVydGllc2AsCi1hbmQgZnJvbSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3duLCBzZWxlY3Qg
YEFsbCBDb25maWd1cmF0aW9uc2AuCi1NYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBsYXRmb3JtIGlz
IGB4NjRgLiBGb3IgdGhlCi1gSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGluZywgY2hhbmdl
IHRoZSB2YWx1ZSBmcm9tCi1gJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpYCB0
bwotYCQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRoZW4gYnVpbGQg
dGhlCi1zb2x1dGlvbi4gV2hlbiB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2NC1iaXQgYmlu
YXJpZXMgd2lsbCBiZSBpbgotdGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5LgotCi0jIyBD
YW4gSSB1c2UgR29vZ2xlIFRlc3Qgb24gTWluR1c/ICMjCi0KLVdlIGhhdmVuJ3QgdGVzdGVkIHRo
aXMgb3Vyc2VsdmVzLCBidXQgUGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBoZQotd2FzIGFi
bGUgdG8gY29tcGlsZSBhbmQgaW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVsbHkgd2hlbiB1
c2luZwotTWluR1cgZnJvbSBDeWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1cmUgaXQgd2l0
aDoKLQotYFBBVEgvVE8vY29uZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENYWD0iZysrIC1t
bm8tY3lnd2luImAKLQotWW91IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhlIGAtbW5vLWN5
Z3dpbmAgb3B0aW9uIHdpdGggZGlyZWN0IGxpbmtzCi10byB0aGUgcmVhbCBNaW5HVyBiaW5hcmll
cywgYnV0IHdlIGhhdmVuJ3QgdHJpZWQgdGhhdC4KLQotQ2F2ZWF0czoKLQotICAqIFRoZXJlIGFy
ZSBtYW55IHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nLgotICAqIGBtYWtlIGNoZWNrYCB3aWxsIHBy
b2R1Y2Ugc29tZSBlcnJvcnMgYXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxm
IGFyZSBjb21wYXRpYmxlIHdpdGggTWluR1cuCi0KLVdlIGFsc28gaGF2ZSByZXBvcnRzIG9uIHN1
Y2Nlc3NmdWwgY3Jvc3MgY29tcGlsYXRpb24gb2YgR29vZ2xlIFRlc3QgTWluR1cgYmluYXJpZXMg
b24gTGludXggdXNpbmcgW3RoZXNlIGluc3RydWN0aW9uc10oaHR0cDovL3dpa2kud3h3aWRnZXRz
Lm9yZy9Dcm9zcy1Db21waWxpbmdfVW5kZXJfTGludXgjQ3Jvc3MtY29tcGlsaW5nX3VuZGVyX0xp
bnV4X2Zvcl9NU19XaW5kb3dzKSBvbiB0aGUgV3hXaWRnZXRzIHNpdGUuCi0KLVBsZWFzZSBjb250
YWN0IGBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlmIHlvdSBhcmUKLWlu
dGVyZXN0ZWQgaW4gaW1wcm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4KLQotIyMgV2h5IGRv
ZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikgYW5kIEFTU0VSVFxf
RVEoTlVMTCwgcHRyKSBidXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9O
RShOVUxMLCBwdHIpPyAjIwotCi1EdWUgdG8gc29tZSBwZWN1bGlhcml0eSBvZiBDKyssIGl0IHJl
cXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUKLW1ldGEgcHJvZ3JhbW1pbmcgdHJpY2tz
IHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRoZQotYEVYUEVDVF9Y
WCgpYCBhbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBvbmx5IGRvIGl0IHdo
ZXJlCi1pdCdzIG1vc3QgbmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUgaW1wbGVtZW50YXRp
b24gb2YgR29vZ2xlIFRlc3QKLWhhcmRlciB0byBtYWludGFpbiBhbmQgbW9yZSBlcnJvci1wcm9u
ZSB0aGFuIG5lY2Vzc2FyeSkuCi0KLVRoZSBgRVhQRUNUX0VRKClgIG1hY3JvIHRha2VzIHRoZSBf
ZXhwZWN0ZWRfIHZhbHVlIGFzIGl0cyBmaXJzdAotYXJndW1lbnQgYW5kIHRoZSBfYWN0dWFsXyB2
YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAotc29tZW9uZSB3YW50cyB0
byB3cml0ZSBgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBhbmQgdGhpcwotaW5k
ZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdlIGltcGxlbWVudGVk
IGl0LgotCi1UaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBpc24ndCBuZWFybHkg
YXMgc3Ryb25nLiBXaGVuIHRoZQotYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxyZWFkeSBrbm93IHRo
YXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0Ci1kb2Vzbid0IGFkZCBhbnkgaW5mb3JtYXRp
b24gdG8gcHJpbnQgcHRyIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucwotYEVYUEVDVF9UUlVFKHB0
ciAhIE5VTEwpYCB3b3JrcyBqdXN0IGFzIHdlbGwuCi0KLUlmIHdlIHdlcmUgdG8gc3VwcG9ydCBg
RVhQRUNUX05FKE5VTEwsIHB0cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwKLWhhdmUgdG8gc3Vw
cG9ydCBgRVhQRUNUX05FKHB0ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlrZSBgRVhQRUNUX0VR
YCwKLXdlIGRvbid0IGhhdmUgYSBjb252ZW50aW9uIG9uIHRoZSBvcmRlciBvZiB0aGUgdHdvIGFy
Z3VtZW50cyBmb3IKLWBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nIHRoZSB0ZW1wbGF0ZSBt
ZXRhIHByb2dyYW1taW5nIHRyaWNrcwotdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBtYWtp
bmcgaXQgZXZlbiBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQKLW1haW50YWluLiBXZSBiZWxpZXZl
IHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUgY29zdC4KLQotRmluYWxseSwgd2l0aCB0
aGUgZ3Jvd3RoIG9mIEdvb2dsZSBNb2NrJ3MgW21hdGNoZXJdKC4uLy4uL0Nvb2tCb29rLm1kI3Vz
aW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGxpYnJhcnksIHdlIGFyZQot
ZW5jb3VyYWdpbmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmllZCBgRVhQRUNUX1RIQVQodmFsdWUs
IG1hdGNoZXIpYAotc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZSBzaWduaWZpY2FudCBh
ZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIKLWFwcHJvYWNoIGlzIHRoYXQgbWF0Y2hlcnMgY2FuIGJl
IGVhc2lseSBjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywKLXdoaWxlIHRoZSBgRVhQRUNU
X05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQotY29tYmluZWQuIFRoZXJlZm9yZSB3
ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRoZQotYEVYUEVD
VF9YWCgpYCBtYWNyb3MuCi0KLSMjIERvZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBydW5uaW5nIHRl
c3RzIGluIHBhcmFsbGVsPyAjIwotCi1UZXN0IHJ1bm5lcnMgdGVuZCB0byBiZSB0aWdodGx5IGNv
dXBsZWQgd2l0aCB0aGUgYnVpbGQvdGVzdAotZW52aXJvbm1lbnQsIGFuZCBHb29nbGUgVGVzdCBk
b2Vzbid0IHRyeSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgotcnVubmluZyB0ZXN0cyBpbiBwYXJh
bGxlbC4gIEluc3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd29yawotbmljZWx5
IHdpdGggdGVzdCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBUZXN0J3MgWE1MIHJlcG9y
dAotY29udGFpbnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0ZXN0LCBhbmQgaXRzIGBndGVzdF9s
aXN0X3Rlc3RzYCBhbmQKLWBndGVzdF9maWx0ZXJgIGZsYWdzIGNhbiBiZSB1c2VkIGZvciBzcGxp
dHRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0Ci1tZXRob2RzIGludG8gbXVsdGlwbGUgcHJvY2Vz
c2VzLiAgVGhlc2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxwIHRoZQotdGVzdCBydW5uZXIgcnVu
IHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KLQotIyMgV2h5IGRvbid0IEdvb2dsZSBUZXN0IHJ1biB0
aGUgdGVzdHMgaW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3BlZWQgdGhpbmdzIHVwPyAjIwotCi1J
dCdzIGRpZmZpY3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBjb2RlLiAgTW9zdCB0ZXN0cyBhcmUg
bm90IHdyaXR0ZW4KLXdpdGggdGhyZWFkLXNhZmV0eSBpbiBtaW5kLCBhbmQgdGh1cyBtYXkgbm90
IHdvcmsgY29ycmVjdGx5IGluIGEKLW11bHRpLXRocmVhZGVkIHNldHRpbmcuCi0KLUlmIHlvdSB0
aGluayBhYm91dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3
aGVuCi15b3Uga25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nLiAgSXQncyBtdWNoIGhh
cmRlciwgYW5kCi1zb21ldGltZXMgZXZlbiBpbXBvc3NpYmxlLCB0byBtYWtlIHlvdXIgY29kZSB3
b3JrIHdoZW4geW91IGRvbid0IGtub3cKLXdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcgKHJl
bWVtYmVyIHRoYXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRlZCwKLWRlbGV0ZWQsIG9yIG1vZGlm
aWVkIGFmdGVyIHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJZiB5b3Ugd2FudCB0byBydW4KLXRo
ZSB0ZXN0cyBpbiBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1biB0aGVtIGluIGRpZmZlcmVudCBw
cm9jZXNzZXMuCi0KLSMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbXBsZW1l
bnRlZCB1c2luZyBleGNlcHRpb25zPyAjIwotCi1PdXIgb3JpZ2luYWwgbW90aXZhdGlvbiB3YXMg
dG8gYmUgYWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJvamVjdHMKLXRoYXQgZGlzYWJsZSBl
eGNlcHRpb25zLiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBhZGRpdGlvbmFsIGJlbmVmaXRzCi1v
ZiB0aGlzIGFwcHJvYWNoOgotCi0gIDEuIFRocm93aW5nIGluIGEgZGVzdHJ1Y3RvciBpcyB1bmRl
ZmluZWQgYmVoYXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4Y2VwdGlvbnMgbWVhbnMgR29vZ2xl
IFRlc3QncyBhc3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBpbiBkZXN0cnVjdG9ycy4KLSAgMS4g
VGhlIGBFWFBFQ1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxsIGNvbnRpbnVlIGV2ZW4gYWZ0ZXIg
YSBmYWlsdXJlLCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIGBURVNUYCB0byBiZSBy
ZXBvcnRlZCBpbiBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBwb3B1bGFyIGZlYXR1cmUsIGFzIGlu
IEMrKyB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMgdXN1YWxseSBxdWl0ZSBsb25nIGFu
ZCBiZWluZyBhYmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25lIHRoaW5nIGF0IGEgdGltZSBpcyBh
IGJsZXNzaW5nLgotICAxLiBJZiBhc3NlcnRpb25zIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBleGNl
cHRpb25zLCBhIHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEgZmFpbHVyZSBpZiBpdCdzIGNhdWdo
dCBieSB1c2VyIGNvZGU6Ci1gYGAKLXRyeSB7IC4uLiBBU1NFUlRfVFJVRSguLi4pIC4uLiB9Ci1j
YXRjaCAoLi4uKSB7IC4uLiB9Ci1gYGAKLVRoZSBhYm92ZSBjb2RlIHdpbGwgcGFzcyBldmVuIGlm
IHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0J3MgdW5saWtlbHkgZm9yIHNvbWVv
bmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9zc2libGUgdG8gcnVuIGludG8gdGhp
cyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMgaW4gY2FsbGJhY2tzIHRoYXQgYXJl
IGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgotCi1UaGUgZG93bnNpZGUgb2Ygbm90IHVz
aW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChpbXBsZW1lbnRlZAotdXNpbmcgYHJl
dHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbiwgbm90IHRoZSBjdXJy
ZW50Ci1gVEVTVGAuCi0KLSMjIFdoeSBkbyB3ZSB1c2UgdHdvIGRpZmZlcmVudCBtYWNyb3MgZm9y
IHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMjCi0KLVVuZm9ydHVuYXRlbHksIEMr
KydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRvIHVzZSB0aGUgc2FtZQotbWFjcm8g
Zm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMgdG8gcHJvdmlkZSBvbmx5IG9uZSBt
YWNybwotZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCByZXF1aXJlIHRoZSB1c2VyIHRvIGRl
ZmluZSBhbiBlbXB0eQotZml4dHVyZSBzb21ldGltZXM6Ci0KLWBgYAotY2xhc3MgRm9vVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1RfRihGb29UZXN0LCBEb2VzVGhpcykg
eyAuLi4gfQotYGBgCi1vcgotYGBgCi10eXBlZGVmIDo6dGVzdGluZzo6VGVzdCBGb29UZXN0Owot
Ci1URVNUX0YoRm9vVGVzdCwgRG9lc1RoYXQpIHsgLi4uIH0KLWBgYAotCi1ZZXQsIG1hbnkgcGVv
cGxlIHRoaW5rIHRoaXMgaXMgb25lIGxpbmUgdG9vIG1hbnkuIDotKSBPdXIgZ29hbCB3YXMgdG8K
LW1ha2UgaXQgcmVhbGx5IGVhc3kgdG8gd3JpdGUgdGVzdHMsIHNvIHdlIHRyaWVkIHRvIG1ha2Ug
c2ltcGxlIHRlc3RzCi10cml2aWFsIHRvIGNyZWF0ZS4gIFRoYXQgbWVhbnMgdXNpbmcgYSBzZXBh
cmF0ZSBtYWNybyBmb3Igc3VjaCB0ZXN0cy4KLQotV2UgdGhpbmsgbmVpdGhlciBhcHByb2FjaCBp
cyBpZGVhbCwgeWV0IGVpdGhlciBvZiB0aGVtIGlzIHJlYXNvbmFibGUuCi1JbiB0aGUgZW5kLCBp
dCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciBtdWNoIGVpdGhlciB3YXkuCi0KLSMjIFdoeSBkb24n
dCB3ZSB1c2Ugc3RydWN0cyBhcyB0ZXN0IGZpeHR1cmVzPyAjIwotCi1XZSBsaWtlIHRvIHVzZSBz
dHJ1Y3RzIG9ubHkgd2hlbiByZXByZXNlbnRpbmcgcGFzc2l2ZSBkYXRhLiAgVGhpcwotZGlzdGlu
Y3Rpb24gYmV0d2VlbiBzdHJ1Y3RzIGFuZCBjbGFzc2VzIGlzIGdvb2QgZm9yIGRvY3VtZW50aW5n
IHRoZQotaW50ZW50IG9mIHRoZSBjb2RlJ3MgYXV0aG9yLiAgU2luY2UgdGVzdCBmaXh0dXJlcyBo
YXZlIGxvZ2ljIGxpa2UKLWBTZXRVcCgpYCBhbmQgYFRlYXJEb3duKClgLCB0aGV5IGFyZSBiZXR0
ZXIgZGVmaW5lZCBhcyBjbGFzc2VzLgotCi0jIyBXaHkgYXJlIGRlYXRoIHRlc3RzIGltcGxlbWVu
dGVkIGFzIGFzc2VydGlvbnMgaW5zdGVhZCBvZiB1c2luZyBhIHRlc3QgcnVubmVyPyAjIwotCi1P
dXIgZ29hbCB3YXMgdG8gbWFrZSBkZWF0aCB0ZXN0cyBhcyBjb252ZW5pZW50IGZvciBhIHVzZXIg
YXMgQysrCi1wb3NzaWJseSBhbGxvd3MuICBJbiBwYXJ0aWN1bGFyOgotCi0gICogVGhlIHJ1bm5l
ci1zdHlsZSByZXF1aXJlcyB0byBzcGxpdCB0aGUgaW5mb3JtYXRpb24gaW50byB0d28gcGllY2Vz
OiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVhdGggdGVzdCBpdHNlbGYsIGFuZCB0aGUgc3BlY2lm
aWNhdGlvbiBmb3IgdGhlIHJ1bm5lciBvbiBob3cgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0IGFuZCB3
aGF0IHRvIGV4cGVjdC4gIFRoZSBkZWF0aCB0ZXN0IHdvdWxkIGJlIHdyaXR0ZW4gaW4gQysrLCB3
aGlsZSB0aGUgcnVubmVyIHNwZWMgbWF5IG9yIG1heSBub3QgYmUuICBBIHVzZXIgbmVlZHMgdG8g
Y2FyZWZ1bGx5IGtlZXAgdGhlIHR3byBpbiBzeW5jLiBgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwg
ZXhwZWN0ZWRfbWVzc2FnZSlgIHNwZWNpZmllcyBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGlu
IG9uZSBwbGFjZSwgaW4gb25lIGxhbmd1YWdlLCB3aXRob3V0IGJvaWxlcnBsYXRlIGNvZGUuIEl0
IGlzIHZlcnkgZGVjbGFyYXRpdmUuCi0gICogYEFTU0VSVF9ERUFUSGAgaGFzIGEgc2ltaWxhciBz
eW50YXggYW5kIGVycm9yLXJlcG9ydGluZyBzZW1hbnRpY3MgYXMgb3RoZXIgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucywgYW5kIHRodXMgaXMgZWFzeSB0byBsZWFybi4KLSAgKiBgQVNTRVJUX0RFQVRI
YCBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciBhc3NlcnRpb25zIGFuZCBvdGhlciBsb2dpYyBhdCB5
b3VyIHdpbGwuICBZb3UgYXJlIG5vdCBsaW1pdGVkIHRvIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0
IG1ldGhvZC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGxpa2U6Ci1gYGAK
LSAgICBpZiAoRm9vQ29uZGl0aW9uKCkpIHsKLSAgICAgIEFTU0VSVF9ERUFUSChCYXIoKSwgImJs
YWgiKTsKLSAgICB9IGVsc2UgewotICAgICAgQVNTRVJUX0VRKDUsIEJhcigpKTsKLSAgICB9Ci1g
YGAKLUlmIHlvdSBwcmVmZXIgb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLCB5b3UgY2Fu
IHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhhdCBzdHlsZSB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRv
IGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vycy4gIFRoZSBmZXdlciBhcnRpZmljaWFsIGxpbWl0YXRp
b25zIHRoZSBiZXR0ZXIuCi0gICogYEFTU0VSVF9ERUFUSGAgY2FuIHJlZmVyZW5jZSBsb2NhbCB2
YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIGFuZCB5b3UgY2FuIGRlY2lkZSBob3cg
bWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2FudCBiYXNlZCBvbiBydW4tdGltZSBpbmZvcm1hdGlvbi4g
IEZvciBleGFtcGxlLAotYGBgCi0gICAgY29uc3QgaW50IGNvdW50ID0gR2V0Q291bnQoKTsgIC8v
IE9ubHkga25vd24gYXQgcnVuIHRpbWUuCi0gICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gY291bnQ7
IGkrKykgewotICAgICAgQVNTRVJUX0RFQVRIKHsKLSAgICAgICAgZG91YmxlKiBidWZmZXIgPSBu
ZXcgZG91YmxlW2ldOwotICAgICAgICAuLi4gaW5pdGlhbGl6ZXMgYnVmZmVyIC4uLgotICAgICAg
ICBGb28oYnVmZmVyLCBpKQotICAgICAgfSwgImJsYWggYmxhaCIpOwotICAgIH0KLWBgYAotVGhl
IHJ1bm5lci1iYXNlZCBhcHByb2FjaCB0ZW5kcyB0byBiZSBtb3JlIHN0YXRpYyBhbmQgbGVzcyBm
bGV4aWJsZSwgb3IgcmVxdWlyZXMgbW9yZSB1c2VyIGVmZm9ydCB0byBnZXQgdGhpcyBraW5kIG9m
IGZsZXhpYmlsaXR5LgotCi1Bbm90aGVyIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IGBBU1NFUlRf
REVBVEhgIGlzIHRoYXQgaXQgY2FsbHMgYGZvcmsoKWAKLXRvIGNyZWF0ZSBhIGNoaWxkIHByb2Nl
c3MgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhpcyBpcyBsaWdodGVuaW5nCi1mYXN0LCBhcyBg
Zm9yaygpYCB1c2VzIGNvcHktb24td3JpdGUgcGFnZXMgYW5kIGluY3VycyBhbG1vc3QgemVybwot
b3ZlcmhlYWQsIGFuZCB0aGUgY2hpbGQgcHJvY2VzcyBzdGFydHMgZnJvbSB0aGUgdXNlci1zdXBw
bGllZAotc3RhdGVtZW50IGRpcmVjdGx5LCBza2lwcGluZyBhbGwgZ2xvYmFsIGFuZCBsb2NhbCBp
bml0aWFsaXphdGlvbiBhbmQKLWFueSBjb2RlIGxlYWRpbmcgdG8gdGhlIGdpdmVuIHN0YXRlbWVu
dC4gIElmIHlvdSBsYXVuY2ggdGhlIGNoaWxkCi1wcm9jZXNzIGZyb20gc2NyYXRjaCwgaXQgY2Fu
IHRha2Ugc2Vjb25kcyBqdXN0IHRvIGxvYWQgZXZlcnl0aGluZyBhbmQKLXN0YXJ0IHJ1bm5pbmcg
aWYgdGhlIHRlc3QgbGlua3MgdG8gbWFueSBsaWJyYXJpZXMgZHluYW1pY2FsbHkuCi0KLSMjIE15
IGRlYXRoIHRlc3QgbW9kaWZpZXMgc29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFuZ2Ugc2VlbXMgbG9z
dCBhZnRlciB0aGUgZGVhdGggdGVzdCBmaW5pc2hlcy4gV2h5PyAjIwotCi1EZWF0aCB0ZXN0cyAo
YEVYUEVDVF9ERUFUSGAsIGV0YykgYXJlIGV4ZWN1dGVkIGluIGEgc3ViLXByb2Nlc3Mgcy50LiB0
aGUKLWV4cGVjdGVkIGNyYXNoIHdvbid0IGtpbGwgdGhlIHRlc3QgcHJvZ3JhbSAoaS5lLiB0aGUg
cGFyZW50IHByb2Nlc3MpLiBBcyBhCi1yZXN1bHQsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3Rz
IHRoZXkgaW5jdXIgYXJlIG9ic2VydmFibGUgaW4gdGhlaXIKLXJlc3BlY3RpdmUgc3ViLXByb2Nl
c3NlcywgYnV0IG5vdCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuIFlvdSBjYW4gdGhpbmsgb2YgdGhl
bQotYXMgcnVubmluZyBpbiBhIHBhcmFsbGVsIHVuaXZlcnNlLCBtb3JlIG9yIGxlc3MuCi0KLSMj
IFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZlcmVuY2VzIiB0byBz
b21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQgZGVmaW5lIHRoZW0g
aW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8gIyMKLQotSWYgeW91ciBjbGFzcyBoYXMg
YSBzdGF0aWMgZGF0YSBtZW1iZXI6Ci0KLWBgYAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4u
LgotICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Ci19OwotYGBgCi0KLVlvdSBhbHNvIG5l
ZWQgdG8gZGVmaW5lIGl0IF9vdXRzaWRlXyBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNjYDoK
LQotYGBgCi1jb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVyZS4KLWBg
YAotCi1PdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1heSBicmVh
ayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCi1wYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBHb29nbGUg
VGVzdCBjb21wYXJpc29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpCi13aWxsIGdlbmVy
YXRlIGFuICJ1bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCi0KLSMjIEkgaGF2ZSBh
biBpbnRlcmZhY2UgdGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMuIENhbiBJIHdyaXRl
IGEgc2V0IG9mIHRlc3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxsIHRoZSBpbXBsZW1l
bnRhdGlvbnM/ICMjCi0KLUdvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUgZ29vZCBzdXBwb3J0
IGZvciB0aGlzIGtpbmQgb2YgdGVzdHMsIG9yCi1kYXRhLWRyaXZlbiB0ZXN0cyBpbiBnZW5lcmFs
LiBXZSBob3BlIHRvIGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4gdGhpcwotYXJlYSBz
b29uLgotCi0jIyBDYW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPyAjIwot
Ci1ZZXMuCi0KLUVhY2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUg
bmFtZWQgdGVzdCBjYXNlLiBUaGlzIG1lYW5zIG9ubHkKLW9uZSB0ZXN0IGNhc2UgY2FuIHVzZSBh
IHBhcnRpY3VsYXIgZml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0Ci1j
YXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1
cmVzLiBGb3IgZXhhbXBsZSwgeW91Ci1tYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2Yg
YSBHVUkgbGlicmFyeSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhawotaW1wb3J0YW50IHN5c3RlbSBy
ZXNvdXJjZXMgbGlrZSBmb250cyBhbmQgYnJ1c2hlcy4KLQotSW4gR29vZ2xlIFRlc3QsIHlvdSBz
aGFyZSBhIGZpeHR1cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQKLWxv
Z2ljIGluIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2Ug
YSBzZXBhcmF0ZSBmaXh0dXJlCi1mb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2Ug
dGhpcyBjb21tb24gbG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCi10byB3cml0ZSB0ZXN0
cyB1c2luZyBlYWNoIGRlcml2ZWQgZml4dHVyZS4KLQotVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9v
a3MgbGlrZSB0aGlzOgotCi1gYGAKLS8vIERlZmluZXMgYSBiYXNlIHRlc3QgZml4dHVyZS4KLWNs
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAg
IC4uLgotfTsKLQotLy8gRGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VUZXN0Lgot
Y2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgICBCYXNlVGVzdDo6U2V0VXAoKTsgIC8vIFNldHMgdXAg
dGhlIGJhc2UgZml4dHVyZSBmaXJzdC4KLSAgICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3Jr
IC4uLgotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgICAuLi4gY2xl
YW4tdXAgd29yayBmb3IgRm9vVGVzdCAuLi4KLSAgICAgIEJhc2VUZXN0OjpUZWFyRG93bigpOyAg
Ly8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEKLSAgICB9Ci0gICAg
Li4uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgotfTsKLQotLy8gVGVz
dHMgdGhhdCB1c2UgdGhlIGZpeHR1cmUgRm9vVGVzdC4KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsg
Li4uIH0KLVRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KLQotLi4uIGFkZGl0aW9uYWwgZml4
dHVyZXMgZGVyaXZlZCBmcm9tIEJhc2VUZXN0IC4uLgotYGBgCi0KLUlmIG5lY2Vzc2FyeSwgeW91
IGNhbiBjb250aW51ZSB0byBkZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0
dXJlLgotR29vZ2xlIFRlc3QgaGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkg
Y2FuIGJlLgotCi1Gb3IgYSBjb21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2ZWQgdGVzdCBmaXh0
dXJlcywgc2VlCi1gc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjYC4KLQotIyMgTXkgY29tcGls
ZXIgY29tcGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJlLiIg
V2hhdCBkb2VzIHRoaXMgbWVhbj8gIyMKLQotWW91J3JlIHByb2JhYmx5IHVzaW5nIGFuIGBBU1NF
UlRfKigpYCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYHZvaWRgLgotYEFTU0VS
VF8qKClgIGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRgIGZ1bmN0aW9ucy4KLQotIyMgTXkgZGVh
dGggdGVzdCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZpeCBpdD8gIyMKLQotSW4g
R29vZ2xlIFRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4gaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCB0
aGUgd2F5IHRoZXkgd29yayBpcwotZGVsaWNhdGUuIFRvIHdyaXRlIGRlYXRoIHRlc3RzIHlvdSBy
ZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuCi1QbGVhc2UgbWFrZSBzdXJl
IHlvdSBoYXZlIHJlYWQgdGhpcy4KLQotSW4gcGFydGljdWxhciwgZGVhdGggdGVzdHMgZG9uJ3Qg
bGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0aGUgcGFyZW50Ci1wcm9jZXNzLiBTbyB0
aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8gZWxpbWluYXRlIGNyZWF0aW5nIHRocmVh
ZHMKLW91dHNpZGUgb2YgYEVYUEVDVF9ERUFUSCgpYC4KLQotU29tZXRpbWVzIHRoaXMgaXMgaW1w
b3NzaWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwotdGhy
ZWFkcyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBj
YW4gdHJ5IHRvIG1pbmltaXplCi10aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIgbW92
aW5nIGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKLWBFWFBFQ1RfREVBVEgo
KWAgKGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNp
ZGUpLCBvcgotbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5
b3UgY2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoCi10ZXN0IHN0eWxlIHRvIGAidGhyZWFkc2FmZSJg
LCB3aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgotCi1JZiB5
b3UgZ28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJl
cnVuIHRoZSB0ZXN0Ci1wcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQgcHJv
Y2Vzcy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCi1wcm9ncmFtIGNhbiBydW4gc2lkZS1ieS1z
aWRlIHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgotCi1JbiB0aGUgZW5kLCB0aGlz
IGJvaWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0byBt
YWtlCi1zdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9ja3Mg
aW4geW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKLWJ1bGxldCAtIHNvcnJ5IQotCi0jIyBTaG91bGQg
SSB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBvciB0
aGUgc2V0LXVwL3RlYXItZG93biBmdW5jdGlvbj8gIyMKLQotVGhlIGZpcnN0IHRoaW5nIHRvIHJl
bWVtYmVyIGlzIHRoYXQgR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlCi1zYW1lIHRlc3Qg
Zml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRlc3RzLiBGb3IgZWFjaCBgVEVTVF9GYCwK
LUdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIGEgZnJlc2ggdGVzdCBmaXh0dXJlIG9iamVjdCwgX2lt
bWVkaWF0ZWx5XwotY2FsbCBgU2V0VXAoKWAsIHJ1biB0aGUgdGVzdCwgY2FsbCBgVGVhckRvd24o
KWAsIGFuZCB0aGVuCi1faW1tZWRpYXRlbHlfIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlIG9iamVj
dC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubwotbmVlZCB0byB3cml0ZSBhIGBTZXRVcCgpYCBvciBg
VGVhckRvd24oKWAgZnVuY3Rpb24gaWYgdGhlIGNvbnN0cnVjdG9yCi1vciBkZXN0cnVjdG9yIGFs
cmVhZHkgZG9lcyB0aGUgam9iLgotCi1Zb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRVcCgp
L1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6Ci0gICogSWYgdGhlIHRlYXItZG93
biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UgYFRlYXJE
b3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93aW5nIGluIGEgZGVz
dHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHVzdWFsbHkgd2lsbCBraWxs
IHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJyYXJp
ZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGluIHRo
ZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJlZmVyIGBUZWFyRG93bigpYCBpZiB5
b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0
IGV4Y2VwdGlvbnMuCi0gICogVGhlIEdvb2dsZSBUZXN0IHRlYW0gaXMgY29uc2lkZXJpbmcgbWFr
aW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9uIHBsYXRmb3JtcyB3aGVyZSBleGNlcHRp
b25zIGFyZSBlbmFibGVkIChlLmcuIFdpbmRvd3MsIE1hYyBPUywgYW5kIExpbnV4IGNsaWVudC1z
aWRlKSwgd2hpY2ggd2lsbCBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHRoZSB1c2VyIHRvIHByb3Bh
Z2F0ZSBmYWlsdXJlcyBmcm9tIGEgc3Vicm91dGluZSB0byBpdHMgY2FsbGVyLiBUaGVyZWZvcmUs
IHlvdSBzaG91bGRuJ3QgdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYSBkZXN0cnVjdG9y
IGlmIHlvdXIgY29kZSBjb3VsZCBydW4gb24gc3VjaCBhIHBsYXRmb3JtLgotICAqIEluIGEgY29u
c3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91IGNhbm5vdCBtYWtlIGEgdmlydHVhbCBmdW5jdGlv
biBjYWxsIG9uIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBjYWxsIGEgbWV0aG9kIGRlY2xhcmVkIGFz
IHZpcnR1YWwsIGJ1dCBpdCB3aWxsIGJlIHN0YXRpY2FsbHkgYm91bmQuKSBUaGVyZWZvcmUsIGlm
IHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3aWxsIGJlIG92ZXJyaWRlbiBpbiBhIGRl
cml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYC4KLQotIyMg
VGhlIGNvbXBpbGVyIGNvbXBsYWlucyAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hl
biBJIHVzZSBBU1NFUlRcX1BSRURuLiBIb3cgZG8gSSBmaXggaXQ/ICMjCi0KLUlmIHRoZSBwcmVk
aWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQq
YCBpcwotb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0aGUgY29tcGlsZXIgd2lsbCBoYXZlIHRy
b3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCi1vdmVybG9hZGVkIHZlcnNpb24gaXQgc2hvdWxkIHVz
ZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAotYEVYUEVDVF9QUkVEX0ZPUk1BVCpgIGRvbid0
IGhhdmUgdGhpcyBwcm9ibGVtLgotCi1JZiB5b3Ugc2VlIHRoaXMgZXJyb3IsIHlvdSBtaWdodCB3
YW50IHRvIHN3aXRjaCB0bwotYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgLCB3aGljaCB3
aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVyZQotbWVzc2FnZS4gSWYsIGhvd2V2ZXIs
IHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVtIGJ5Ci1l
eHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdoaWNoIHZlcnNpb24gdG8gcGljay4KLQot
Rm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKLQotYGBgCi1ib29sIElzUG9zaXRpdmUoaW50
IG4pIHsKLSAgcmV0dXJuIG4gPiAwOwotfQotYm9vbCBJc1Bvc2l0aXZlKGRvdWJsZSB4KSB7Ci0g
IHJldHVybiB4ID4gMDsKLX0KLWBgYAotCi15b3Ugd2lsbCBnZXQgYSBjb21waWxlciBlcnJvciBp
ZiB5b3Ugd3JpdGUKLQotYGBgCi1FWFBFQ1RfUFJFRDEoSXNQb3NpdGl2ZSwgNSk7Ci1gYGAKLQot
SG93ZXZlciwgdGhpcyB3aWxsIHdvcms6Ci0KLWBgYAotRVhQRUNUX1BSRUQxKCpzdGF0aWNfY2Fz
dDxib29sICgqKShpbnQpPiooSXNQb3NpdGl2ZSksIDUpOwotYGBgCi0KLShUaGUgc3R1ZmYgaW5z
aWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBgc3RhdGljX2Nhc3RgIG9wZXJhdG9yIGlz
IHRoZQotdHlwZSBvZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBmb3IgdGhlIGBpbnRgLXZlcnNpb24g
b2YgYElzUG9zaXRpdmUoKWAuKQotCi1BcyBhbm90aGVyIGV4YW1wbGUsIHdoZW4geW91IGhhdmUg
YSB0ZW1wbGF0ZSBmdW5jdGlvbgotCi1gYGAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBJ
c05lZ2F0aXZlKFQgeCkgewotICByZXR1cm4geCA8IDA7Ci19Ci1gYGAKLQoteW91IGNhbiB1c2Ug
aXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2UgdGhpczoKLQotYGBgCi1BU1NFUlRfUFJF
RDEoSXNOZWdhdGl2ZSo8aW50PiosIC01KTsKLWBgYAotCi1UaGluZ3MgYXJlIG1vcmUgaW50ZXJl
c3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUK
LWZvbGxvd2luZyB3b24ndCBjb21waWxlOgotCi1gYGAKLUFTU0VSVF9QUkVEMigqR3JlYXRlclRo
YW48aW50LCBpbnQ+KiwgNSwgMCk7Ci1gYGAKLQotCi1hcyB0aGUgQysrIHByZS1wcm9jZXNzb3Ig
dGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NFUlRfUFJFRDJgIDQgYXJndW1lbnRzLAotd2hpY2gg
aXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4gVGhlIHdvcmthcm91bmQgaXMgdG8gd3JhcCB0aGUg
cHJlZGljYXRlCi1mdW5jdGlvbiBpbiBwYXJlbnRoZXNlczoKLQotYGBgCi1BU1NFUlRfUFJFRDIo
KihHcmVhdGVyVGhhbjxpbnQsIGludD4pKiwgNSwgMCk7Ci1gYGAKLQotCi0jIyBNeSBjb21waWxl
ciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVybiB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVO
XF9BTExcX1RFU1RTKCkuIFdoeT8gIyMKLQotU29tZSBwZW9wbGUgaGFkIGJlZW4gaWdub3Jpbmcg
dGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4gVGhhdCBpcywKLWluc3RlYWQg
b2YKLQotYGBgCi1yZXR1cm4gUlVOX0FMTF9URVNUUygpOwotYGBgCi0KLXRoZXkgd3JpdGUKLQot
YGBgCi1SVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotVGhpcyBpcyB3cm9uZyBhbmQgZGFuZ2Vyb3Vz
LiBBIHRlc3QgcnVubmVyIG5lZWRzIHRvIHNlZSB0aGUgcmV0dXJuIHZhbHVlIG9mCi1gUlVOX0FM
TF9URVNUUygpYCBpbiBvcmRlciB0byBkZXRlcm1pbmUgaWYgYSB0ZXN0IGhhcyBwYXNzZWQuIElm
IHlvdXIgYG1haW4oKWAKLWZ1bmN0aW9uIGlnbm9yZXMgaXQsIHlvdXIgdGVzdCB3aWxsIGJlIGNv
bnNpZGVyZWQgc3VjY2Vzc2Z1bCBldmVuIGlmIGl0IGhhcyBhCi1Hb29nbGUgVGVzdCBhc3NlcnRp
b24gZmFpbHVyZS4gVmVyeSBiYWQuCi0KLVRvIGhlbHAgdGhlIHVzZXJzIGF2b2lkIHRoaXMgZGFu
Z2Vyb3VzIGJ1ZywgdGhlIGltcGxlbWVudGF0aW9uIG9mCi1gUlVOX0FMTF9URVNUUygpYCBjYXVz
ZXMgZ2NjIHRvIHJhaXNlIHRoaXMgd2FybmluZywgd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzCi1p
Z25vcmVkLiBJZiB5b3Ugc2VlIHRoaXMgd2FybmluZywgdGhlIGZpeCBpcyBzaW1wbGU6IGp1c3Qg
bWFrZSBzdXJlIGl0cyB2YWx1ZQotaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBtYWlu
KClgLgotCi0jIyBNeSBjb21waWxlciBjb21wbGFpbnMgdGhhdCBhIGNvbnN0cnVjdG9yIChvciBk
ZXN0cnVjdG9yKSBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuIFdoYXQncyBnb2luZyBvbj8gIyMKLQot
RHVlIHRvIGEgcGVjdWxpYXJpdHkgb2YgQysrLCBpbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzeW50
YXggZm9yIHN0cmVhbWluZwotbWVzc2FnZXMgdG8gYW4gYEFTU0VSVF8qYCwgZS5nLgotCi1gYGAK
LUFTU0VSVF9FUSgxLCBGb28oKSkgPDwgImJsYWggYmxhaCIgPDwgZm9vOwotYGBgCi0KLXdlIGhh
ZCB0byBnaXZlIHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQgYEZBSUwqYCAoYnV0IG5vdCBgRVhQRUNU
KmAgYW5kCi1gQUREX0ZBSUxVUkUqYCkgaW4gY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4g
VGhlIHdvcmthcm91bmQgaXMgdG8gbW92ZSB0aGUKLWNvbnRlbnQgb2YgeW91ciBjb25zdHJ1Y3Rv
ci9kZXN0cnVjdG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1lbWJlciBmdW5jdGlvbiwgb3IKLXN3aXRj
aCB0byBgRVhQRUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4gVGhpcyBzZWN0aW9uIGluIHRoZSB1c2Vy
J3MgZ3VpZGUgZXhwbGFpbnMKLWl0LgotCi0jIyBNeSBzZXQtdXAgZnVuY3Rpb24gaXMgbm90IGNh
bGxlZC4gV2h5PyAjIwotCi1DKysgaXMgY2FzZS1zZW5zaXRpdmUuIEl0IHNob3VsZCBiZSBzcGVs
bGVkIGFzIGBTZXRVcCgpYC4gIERpZCB5b3UKLXNwZWxsIGl0IGFzIGBTZXR1cCgpYD8KLQotU2lt
aWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBTZXRVcFRlc3RDYXNlKClgIGFzIGBTZXR1
cFRlc3RDYXNlKClgIGFuZAotd29uZGVyIHdoeSBpdCdzIG5ldmVyIGNhbGxlZC4KLQotIyMgSG93
IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1cmUgaW4gRW1hY3MgZGlyZWN0bHk/ICMj
Ci0KLUdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5
IEVtYWNzIGFuZCBtYW55IG90aGVyCi1JREVzLCBsaWtlIGFjbWUgYW5kIFhDb2RlLiBJZiBhIEdv
b2dsZSBUZXN0IG1lc3NhZ2UgaXMgaW4gYSBjb21waWxhdGlvbiBidWZmZXIKLWluIEVtYWNzLCB0
aGVuIGl0J3MgY2xpY2thYmxlLiBZb3UgY2FuIG5vdyBoaXQgYGVudGVyYCBvbiBhIG1lc3NhZ2Ug
dG8ganVtcCB0bwotdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIG9yIHVzZSBgQy14IGBg
IHRvIGp1bXAgdG8gdGhlIG5leHQgZmFpbHVyZS4KLQotIyMgSSBoYXZlIHNldmVyYWwgdGVzdCBj
YXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0
byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNzIGZvciBlYWNoIG9mIHRoZW0/IFRoaXMg
c2VlbXMgcHJldHR5IHRlZGlvdXMuICMjCi0KLVlvdSBkb24ndCBoYXZlIHRvLiBJbnN0ZWFkIG9m
Ci0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7fTsKLQotVEVTVF9GKEZv
b1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi1jbGFz
cyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9OwotCi1URVNUX0YoQmFyVGVzdCwgQWJjKSB7
IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9Ci1gYGAKLQoteW91IGNhbiBzaW1w
bHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgotYGBgCi10eXBlZGVmIEJhc2VUZXN0IEZv
b1Rlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBE
ZWYpIHsgLi4uIH0KLQotdHlwZWRlZiBCYXNlVGVzdCBCYXJUZXN0OwotCi1URVNUX0YoQmFyVGVz
dCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4uLiB9Ci1gYGAKLQotIyMg
VGhlIEdvb2dsZSBUZXN0IG91dHB1dCBpcyBidXJpZWQgaW4gYSB3aG9sZSBidW5jaCBvZiBsb2cg
bWVzc2FnZXMuIFdoYXQgZG8gSSBkbz8gIyMKLQotVGhlIEdvb2dsZSBUZXN0IG91dHB1dCBpcyBt
ZWFudCB0byBiZSBhIGNvbmNpc2UgYW5kIGh1bWFuLWZyaWVuZGx5IHJlcG9ydC4gSWYKLXlvdXIg
dGVzdCBnZW5lcmF0ZXMgdGV4dHVhbCBvdXRwdXQgaXRzZWxmLCBpdCB3aWxsIG1peCB3aXRoIHRo
ZSBHb29nbGUgVGVzdAotb3V0cHV0LCBtYWtpbmcgaXQgaGFyZCB0byByZWFkLiBIb3dldmVyLCB0
aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMKLXByb2JsZW0uCi0KLVNpbmNlIG1vc3Qg
bG9nIG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVjaWRlZCB0byBsZXQgR29vZ2xlIFRlc3Qg
b3V0cHV0IGdvCi10byBzdGRvdXQuIFRoaXMgd2F5LCB5b3UgY2FuIGVhc2lseSBzZXBhcmF0ZSB0
aGUgdHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKLWV4YW1wbGU6Ci1gYGAKLS4vbXlfdGVzdCA+
IGdvb2dsZXRlc3Rfb3V0cHV0LnR4dAotYGBgCi0KLSMjIFdoeSBzaG91bGQgSSBwcmVmZXIgdGVz
dCBmaXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/ICMjCi0KLVRoZXJlIGFyZSBzZXZlcmFs
IGdvb2QgcmVhc29uczoKLSAgMS4gSXQncyBsaWtlbHkgeW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5n
ZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIG1ha2VzIGl0IGRpZmZp
Y3VsdCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVzY2FwaW5nIG9uZSB0ZXN0IGFuZCBjb250
YW1pbmF0aW5nIG90aGVycywgbWFraW5nIGRlYnVnZ2luZyBkaWZmaWN1bHQuIEJ5IHVzaW5nIGZp
eHR1cmVzLCBlYWNoIHRlc3QgaGFzIGEgZnJlc2ggc2V0IG9mIHZhcmlhYmxlcyB0aGF0J3MgZGlm
ZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZSBuYW1lcykuIFRodXMsIHRlc3RzIGFyZSBrZXB0IGlu
ZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIuCi0gIDEuIEdsb2JhbCB2YXJpYWJsZXMgcG9sbHV0ZSB0
aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLSAgMS4gVGVzdCBmaXh0dXJlcyBjYW4gYmUgcmV1c2VkIHZp
YSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRvbmUgZWFzaWx5IHdpdGggZ2xvYmFsIHZh
cmlhYmxlcy4gVGhpcyBpcyB1c2VmdWwgaWYgbWFueSB0ZXN0IGNhc2VzIGhhdmUgc29tZXRoaW5n
IGluIGNvbW1vbi4KLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIG1lbWJlcnMgd2l0
aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMKLQotWW91IHNob3VsZCB0cnkgdG8gd3Jp
dGUgdGVzdGFibGUgY29kZSwgd2hpY2ggbWVhbnMgY2xhc3NlcyBzaG91bGQgYmUgZWFzaWx5Ci10
ZXN0ZWQgZnJvbSB0aGVpciBwdWJsaWMgaW50ZXJmYWNlLiBPbmUgd2F5IHRvIGFjaGlldmUgdGhp
cyBpcyB0aGUgUGltcGwgaWRpb206Ci15b3UgbW92ZSBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEg
Y2xhc3MgaW50byBhIGhlbHBlciBjbGFzcywgYW5kIG1ha2UgYWxsCi1tZW1iZXJzIG9mIHRoZSBo
ZWxwZXIgY2xhc3MgcHVibGljLgotCi1Zb3UgaGF2ZSBzZXZlcmFsIG90aGVyIG9wdGlvbnMgdGhh
dCBkb24ndCByZXF1aXJlIHVzaW5nIGBGUklFTkRfVEVTVGA6Ci0gICogV3JpdGUgdGhlIHRlc3Rz
IGFzIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3M6Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIGZy
aWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICB2b2lkIFRlc3QxKCkgey4u
Ln0gLy8gVGhpcyBhY2Nlc3NlcyBwcml2YXRlIG1lbWJlcnMgb2YgY2xhc3MgRm9vLgotICB2b2lk
IFRlc3QyKCkgey4uLn0gLy8gU28gZG9lcyB0aGlzIG9uZS4KLX07Ci0KLVRFU1RfRihGb29UZXN0
LCBUZXN0MSkgewotICBUZXN0MSgpOwotfQotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKLSAg
VGVzdDIoKTsKLX0KLWBgYAotICAqIEluIHRoZSBmaXh0dXJlIGNsYXNzLCB3cml0ZSBhY2Nlc3Nv
cnMgZm9yIHRoZSB0ZXN0ZWQgY2xhc3MnIHByaXZhdGUgbWVtYmVycywgdGhlbiB1c2UgdGhlIGFj
Y2Vzc29ycyBpbiB5b3VyIHRlc3RzOgotYGBgCi1jbGFzcyBGb28gewotICBmcmllbmQgY2xhc3Mg
Rm9vVGVzdDsKLSAgLi4uCi19OwotCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLSAgVDEgZ2V0X3ByaXZhdGVfbWVtYmVyMShGb28q
IG9iaikgewotICAgIHJldHVybiBvYmotPnByaXZhdGVfbWVtYmVyMV87Ci0gIH0KLX07Ci0KLVRF
U1RfRihGb29UZXN0LCBUZXN0MSkgewotICAuLi4KLSAgZ2V0X3ByaXZhdGVfbWVtYmVyMSh4KQot
ICAuLi4KLX0KLWBgYAotICAqIElmIHRoZSBtZXRob2RzIGFyZSBkZWNsYXJlZCAqKnByb3RlY3Rl
ZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3MgbGV2ZWwgaW4gYSB0ZXN0LW9ubHkgc3Vi
Y2xhc3M6Ci1gYGAKLWNsYXNzIFlvdXJDbGFzcyB7Ci0gIC4uLgotIHByb3RlY3RlZDogLy8gcHJv
dGVjdGVkIGFjY2VzcyBmb3IgdGVzdGFiaWxpdHkuCi0gIGludCBEb1NvbWV0aGluZ1JldHVybmlu
Z0ludCgpOwotICAuLi4KLX07Ci0KLS8vIGluIHRoZSB5b3VyX2NsYXNzX3Rlc3QuY2MgZmlsZToK
LWNsYXNzIFRlc3RhYmxlWW91ckNsYXNzIDogcHVibGljIFlvdXJDbGFzcyB7Ci0gIC4uLgotIHB1
YmxpYzogdXNpbmcgWW91ckNsYXNzOjpEb1NvbWV0aGluZ1JldHVybmluZ0ludDsgLy8gY2hhbmdl
cyBhY2Nlc3MgcmlnaHRzCi0gIC4uLgotfTsKLQotVEVTVF9GKFlvdXJDbGFzc1Rlc3QsIERvU29t
ZXRoaW5nVGVzdCkgewotICBUZXN0YWJsZVlvdXJDbGFzcyBvYmo7Ci0gIGFzc2VydEVxdWFscyhl
eHBlY3RlZF92YWx1ZSwgb2JqLkRvU29tZXRoaW5nUmV0dXJuaW5nSW50KCkpOwotfQotYGBgCi0K
LSMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBzdGF0aWMgbWVtYmVycyB3aXRob3V0IHdy
aXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1XZSBmaW5kIHByaXZhdGUgc3RhdGljIG1ldGhv
ZHMgY2x1dHRlciB0aGUgaGVhZGVyIGZpbGUuICBUaGV5IGFyZQotaW1wbGVtZW50YXRpb24gZGV0
YWlscyBhbmQgaWRlYWxseSBzaG91bGQgYmUga2VwdCBvdXQgb2YgYSAuaC4gU28gb2Z0ZW4gSSBt
YWtlCi10aGVtIGZyZWUgZnVuY3Rpb25zIGluc3RlYWQuCi0KLUluc3RlYWQgb2Y6Ci1gYGAKLS8v
IGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSBwcml2YXRlOgotICBzdGF0aWMgYm9vbCBGdW5j
KGludCBuKTsKLX07Ci0KLS8vIGZvby5jYwotYm9vbCBGb286OkZ1bmMoaW50IG4pIHsgLi4uIH0K
LQotLy8gZm9vX3Rlc3QuY2MKLUVYUEVDVF9UUlVFKEZvbzo6RnVuYygxMjM0NSkpOwotYGBgCi0K
LVlvdSBwcm9iYWJseSBzaG91bGQgYmV0dGVyIHdyaXRlOgotYGBgCi0vLyBmb28uaAotY2xhc3Mg
Rm9vIHsKLSAgLi4uCi19OwotCi0vLyBmb28uY2MKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0gIGJv
b2wgRnVuYyhpbnQgbikgeyAuLi4gfQotfQotCi0vLyBmb29fdGVzdC5jYwotbmFtZXNwYWNlIGlu
dGVybmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKTsKLX0KLQotRVhQRUNUX1RSVUUoaW50ZXJuYWw6
OkZ1bmMoMTIzNDUpKTsKLWBgYAotCi0jIyBJIHdvdWxkIGxpa2UgdG8gcnVuIGEgdGVzdCBzZXZl
cmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMuIERvIEkgbmVlZCB0byB3cml0ZSBz
ZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAjIwotCi1Oby4gWW91IGNhbiB1c2UgYSBmZWF0
dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0c10oVjFfNV9BZHZhbmNlZEd1aWRl
Lm1kI1ZhbHVlX1BhcmFtZXRlcml6ZWRfVGVzdHMpIHdoaWNoCi1sZXRzIHlvdSByZXBlYXQgeW91
ciB0ZXN0cyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLCB3aXRob3V0IGRlZmluaW5nIGl0IG1v
cmUgdGhhbiBvbmNlLgotCi0jIyBIb3cgZG8gSSB0ZXN0IGEgZmlsZSB0aGF0IGRlZmluZXMgbWFp
bigpPyAjIwotCi1UbyB0ZXN0IGEgYGZvby5jY2AgZmlsZSwgeW91IG5lZWQgdG8gY29tcGlsZSBh
bmQgbGluayBpdCBpbnRvIHlvdXIgdW5pdCB0ZXN0Ci1wcm9ncmFtLiBIb3dldmVyLCB3aGVuIHRo
ZSBmaWxlIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgdGhlIGBtYWluKClgCi1mdW5jdGlvbiwg
aXQgd2lsbCBjbGFzaCB3aXRoIHRoZSBgbWFpbigpYCBvZiB5b3VyIHVuaXQgdGVzdCwgYW5kIHdp
bGwgcmVzdWx0IGluCi1hIGJ1aWxkIGVycm9yLgotCi1UaGUgcmlnaHQgc29sdXRpb24gaXMgdG8g
c3BsaXQgaXQgaW50byB0aHJlZSBmaWxlczoKLSAgMS4gYGZvby5oYCB3aGljaCBjb250YWlucyB0
aGUgZGVjbGFyYXRpb25zLAotICAxLiBgZm9vLmNjYCB3aGljaCBjb250YWlucyB0aGUgZGVmaW5p
dGlvbnMgZXhjZXB0IGBtYWluKClgLCBhbmQKLSAgMS4gYGZvb19tYWluLmNjYCB3aGljaCBjb250
YWlucyBub3RoaW5nIGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiBgbWFpbigpYC4KLQotVGhlbiBgZm9v
LmNjYCBjYW4gYmUgZWFzaWx5IHRlc3RlZC4KLQotSWYgeW91IGFyZSBhZGRpbmcgdGVzdHMgdG8g
YW4gZXhpc3RpbmcgZmlsZSBhbmQgZG9uJ3Qgd2FudCBhbiBpbnRydXNpdmUgY2hhbmdlCi1saWtl
IHRoaXMsIHRoZXJlIGlzIGEgaGFjazoganVzdCBpbmNsdWRlIHRoZSBlbnRpcmUgYGZvby5jY2Ag
ZmlsZSBpbiB5b3VyIHVuaXQKLXRlc3QuIEZvciBleGFtcGxlOgotYGBgCi0vLyBGaWxlIGZvb191
bml0dGVzdC5jYwotCi0vLyBUaGUgaGVhZGVycyBzZWN0aW9uCi0uLi4KLQotLy8gUmVuYW1lcyBt
YWluKCkgaW4gZm9vLmNjIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHVuaXQgdGVzdCBtYWluKCkKLSNk
ZWZpbmUgbWFpbiBGb29NYWluCi0KLSNpbmNsdWRlICJhL2IvZm9vLmNjIgotCi0vLyBUaGUgdGVz
dHMgc3RhcnQgaGVyZS4KLS4uLgotYGBgCi0KLQotSG93ZXZlciwgcGxlYXNlIHJlbWVtYmVyIHRo
aXMgaXMgYSBoYWNrIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGFzIHRoZSBsYXN0Ci1yZXNvcnQu
Ci0KLSMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1lbnQgYXJndW1lbnQgaW4gQVNTRVJUXF9ERUFUSCgp
IGJlPyAjIwotCi1gQVNTRVJUX0RFQVRIKF9zdGF0ZW1lbnRfLCBfcmVnZXhfKWAgKG9yIGFueSBk
ZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2VkCi13aGVyZXZlciBgX3N0YXRlbWVudF9g
IGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYF9zdGF0ZW1lbnRfYCBjYW4gYmUgYW55IEMrKwotc3Rh
dGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4gSW4gcGFydGlj
dWxhciwgaXQgY2FuCi1yZWZlcmVuY2UgZ2xvYmFsIGFuZC9vciBsb2NhbCB2YXJpYWJsZXMsIGFu
ZCBjYW4gYmU6Ci0gICogYSBzaW1wbGUgZnVuY3Rpb24gY2FsbCAob2Z0ZW4gdGhlIGNhc2UpLAot
ICAqIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgotICAqIGEgY29tcG91bmQgc3RhdGVtZW50Lgot
Ci0+IFNvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6Ci0KLWBgYAotLy8gQSBkZWF0aCB0ZXN0
IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgotVEVTVChNeURlYXRoVGVzdCwgRnVuY3Rp
b25DYWxsKSB7Ci0gIEFTU0VSVF9ERUFUSChYeXooNSksICJYeXogZmFpbGVkIik7Ci19Ci0KLS8v
IE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVmZXJlbmNlcyB2YXJpYWJsZXMgYW5kIGZ1
bmN0aW9ucy4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBsZXhFeHByZXNzaW9uKSB7Ci0gIGNvbnN0
IGJvb2wgYyA9IENvbmRpdGlvbigpOwotICBBU1NFUlRfREVBVEgoKGMgPyBGdW5jMSgwKSA6IG9i
amVjdDIuTWV0aG9kKCJ0ZXN0IikpLAotICAgICAgICAgICAgICAgIihGdW5jMXxNZXRob2QpIGZh
aWxlZCIpOwotfQotCi0vLyBEZWF0aCBhc3NlcnRpb25zIGNhbiBiZSB1c2VkIGFueSB3aGVyZSBp
biBhIGZ1bmN0aW9uLiBJbgotLy8gcGFydGljdWxhciwgdGhleSBjYW4gYmUgaW5zaWRlIGEgbG9v
cC4KLVRFU1QoTXlEZWF0aFRlc3QsIEluc2lkZUxvb3ApIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBG
b28oMCksIEZvbygxKSwgLi4uLCBhbmQgRm9vKDQpIGFsbCBkaWUuCi0gIGZvciAoaW50IGkgPSAw
OyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRIX00oRm9vKGkpLCAiRm9vIGhhcyBcXGQr
IGVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIndo
ZXJlIGkgaXMgIiA8PCBpKTsKLSAgfQotfQotCi0vLyBBIGRlYXRoIGFzc2VydGlvbiBjYW4gY29u
dGFpbiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBvdW5kU3Rh
dGVtZW50KSB7Ci0gIC8vIFZlcmlmaWVzIHRoYXQgYXQgbGVhc2Ugb25lIG9mIEJhcigwKSwgQmFy
KDEpLCAuLi4sIGFuZAotICAvLyBCYXIoNCkgZGllcy4KLSAgQVNTRVJUX0RFQVRIKHsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewotICAgICAgQmFyKGkpOwotICAgIH0KLSAgfSwK
LSAgIkJhciBoYXMgXFxkKyBlcnJvcnMiKTt9Ci1gYGAKLQotYGdvb2dsZXRlc3RfdW5pdHRlc3Qu
Y2NgIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91IGFyZSBpbnRlcmVzdGVkLgotCi0jIyBX
aGF0IHN5bnRheCBkb2VzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gaW4gQVNTRVJUXF9ERUFUSCB1
c2U/ICMjCi0KLU9uIFBPU0lYIHN5c3RlbXMsIEdvb2dsZSBUZXN0IHVzZXMgdGhlIFBPU0lYIEV4
dGVuZGVkIHJlZ3VsYXIKLWV4cHJlc3Npb24gc3ludGF4Ci0oaHR0cDovL2VuLndpa2lwZWRpYS5v
cmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhfRXh0ZW5kZWRfUmVndWxhcl9FeHByZXNz
aW9ucykuIE9uCi1XaW5kb3dzLCBpdCB1c2VzIGEgbGltaXRlZCB2YXJpYW50IG9mIHJlZ3VsYXIg
ZXhwcmVzc2lvbiBzeW50YXguIEZvcgotbW9yZSBkZXRhaWxzLCBzZWUgdGhlIFtyZWd1bGFyIGV4
cHJlc3Npb24gc3ludGF4XShWMV81X0FkdmFuY2VkR3VpZGUubWQjUmVndWxhcl9FeHByZXNzaW9u
X1N5bnRheCkuCi0KLSMjIEkgaGF2ZSBhIGZpeHR1cmUgY2xhc3MgRm9vLCBidXQgVEVTVFxfRihG
b28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRv
IEZvbzo6Rm9vKCkiLiBXaHk/ICMjCi0KLUdvb2dsZSBUZXN0IG5lZWRzIHRvIGJlIGFibGUgdG8g
Y3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNvCi1pdCBtdXN0IGhh
dmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGlsZXIgd2lsbCBkZWZp
bmUgb25lIGZvcgoteW91LiBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgeW91IGhhdmUg
dG8gZGVmaW5lIHlvdXIgb3duOgotICAqIElmIHlvdSBleHBsaWNpdGx5IGRlY2xhcmUgYSBub24t
ZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZvb2AsIHRoZW4geW91IG5lZWQgdG8gZGVm
aW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBpZiBpdCB3b3VsZCBiZSBlbXB0eS4KLSAg
KiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEgbWVtYmVyLCB0aGVuIHlvdSBo
YXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBfYW5kXyBpbml0aWFsaXplIHRo
ZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVyIGxpc3Qgb2YgdGhlIGNvbnN0cnVjdG9y
LiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24ndCBmb3JjZSB5b3UgdG8gaW5pdGlhbGl6
ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4gYGdj
YyA0YC4pCi0KLSMjIFdoeSBkb2VzIEFTU0VSVFxfREVBVEggY29tcGxhaW4gYWJvdXQgcHJldmlv
dXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2luZWQ/ICMjCi0KLVdpdGggdGhlIExpbnV4
IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVybmluZyBiYWNrIG9uY2UgeW91IGNyb3Nz
IHRoZQotbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8gbXVsdGlwbGUgdGhyZWFkcy4gVGhlIGZp
cnN0IHRpbWUgeW91IGNyZWF0ZSBhCi10aHJlYWQsIGEgbWFuYWdlciB0aHJlYWQgaXMgY3JlYXRl
ZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3QgMiwgdGhyZWFkcy4KLUxhdGVyIHdoZW4g
dGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBtYWluIHRocmVhZCwgdGhlIHRocmVhZCBj
b3VudAotZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1hbmFnZXIgdGhyZWFkIHdpbGwgbmV2ZXIg
YmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQotMiB0aHJlYWRzLCB3aGljaCBtZWFucyB5b3Ug
Y2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0LgotCi1UaGUgbmV3IE5QVEwgdGhyZWFkIGxp
YnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHByb2JsZW0sIGFzIGl0IGRvZXNuJ3QKLWNy
ZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3QgY29udHJvbCB3aGlj
aCBtYWNoaW5lIHlvdXIgdGVzdAotcnVucyBvbiwgeW91IHNob3VsZG4ndCBkZXBlbmQgb24gdGhp
cy4KLQotIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVxdWlyZSB0aGUgZW50aXJlIHRlc3QgY2Fz
ZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0byBiZSBuYW1lZCBGT09EZWF0aFRlc3Qg
d2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCi0KLUdvb2dsZSBUZXN0IGRvZXMgbm90IGlu
dGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcy4gVGhhdCBpcywgaXQKLXJ1
bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3QsIGFuZCB0aGVuIHJ1bnMgYWxsIHRl
c3RzIGluIHRoZSBuZXh0IHRlc3QKLWNhc2UsIGFuZCBzbyBvbi4gR29vZ2xlIFRlc3QgZG9lcyB0
aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEgdGVzdCBjYXNlCi1iZWZvcmUgdGhlIGZp
cnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBpdCBkb3duIGFmdGVyd29yZHMuIFNwbGl0
dGluZyB1cAotdGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1aXJlIG11bHRpcGxlIHNldC11cCBhbmQg
dGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKLWluZWZmaWNpZW50IGFuZCBtYWtlcyB0aGUg
c2VtYW50aWNzIHVuY2xlYW4uCi0KLUlmIHdlIHdlcmUgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlciBv
ZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVhZCBvZiB0ZXN0Ci1jYXNlIG5hbWUsIHRo
ZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbjoK
LQotYGBgCi1URVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhUZXN0KSB7IC4uLiB9Ci1URVNUX0YoRm9v
VGVzdCwgVXZ3KSB7IC4uLiB9Ci0KLVRFU1RfRihCYXJUZXN0LCBEZWZEZWF0aFRlc3QpIHsgLi4u
IH0KLVRFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0KLWBgYAotCi1TaW5jZSBgRm9vVGVzdC5B
YmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUgYEJhclRlc3QuWHl6YCwgYW5kIHdlIGRv
bid0Ci1pbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMsIHdlIG5lZWQg
dG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKLWBGb29UZXN0YCBjYXNlIGJlZm9yZSBydW5uaW5nIGFu
eSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhpcyBjb250cmFkaWN0cwotd2l0aCB0aGUg
cmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRlYXRoVGVzdGAgYmVmb3JlIGBGb29UZXN0
LlV2d2AuCi0KLSMjIEJ1dCBJIGRvbid0IGxpa2UgY2FsbGluZyBteSBlbnRpcmUgdGVzdCBjYXNl
IEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5zIGJvdGggZGVhdGggdGVzdHMgYW5kIG5vbi1k
ZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPyAjIwotCi1Zb3UgZG9uJ3QgaGF2ZSB0bywgYnV0IGlm
IHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRoZSB0ZXN0IGNhc2UgaW50bwotYEZvb1Rlc3Rg
IGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhlIG5hbWVzIG1ha2UgaXQgY2xlYXIgdGhhdCB0
aGV5IGFyZQotcmVsYXRlZDoKLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7IC4uLiB9OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0Yo
Rm9vVGVzdCwgRGVmKSB7IC4uLiB9Ci0KLXR5cGVkZWYgRm9vVGVzdCBGb29EZWF0aFRlc3Q7Ci0K
LVRFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAuLi4gRVhQRUNUX0RFQVRIKC4uLikgLi4uIH0K
LVRFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAuLi4gQVNTRVJUX0RFQVRIKC4uLikgLi4uIH0K
LWBgYAotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBtYXRjaCBmb3IgJ29w
ZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZlcz8gIyMKLQotSWYg
eW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBhc3NlcnRpb24sIHlv
dSBtdXN0IG1ha2Ugc3VyZQotdGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCi1kZWZpbmVkIHN1Y2ggdGhh
dCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCi0KLUluIGFkZGl0aW9uLCBpZiBg
Rm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8YCBvcGVyYXRvciBh
bHNvCi1uZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSBfc2FtZV8gbmFtZSBzcGFjZS4KLQotIyMg
SG93IGRvIEkgc3VwcHJlc3MgdGhlIG1lbW9yeSBsZWFrIG1lc3NhZ2VzIG9uIFdpbmRvd3M/ICMj
Ci0KLVNpbmNlIHRoZSBzdGF0aWNhbGx5IGluaXRpYWxpemVkIEdvb2dsZSBUZXN0IHNpbmdsZXRv
biByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgotdGhlIGhlYXAsIHRoZSBWaXN1YWwgQysrIG1lbW9y
eSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0aGUKLWVuZCBvZiB0
aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0byBhdm9pZCB0aGlzIGlzIHRvIHVzZSB0
aGUKLWBfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9iamVjdHNTaW5jZWAg
Y2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKLXN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgaGVhcCBvYmpl
Y3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFsCi1oZWFwIGNoZWNr
L2RlYnVnIHJvdXRpbmVzLgotCi0jIyBJIGFtIGJ1aWxkaW5nIG15IHByb2plY3Qgd2l0aCBHb29n
bGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlvIGFuZCBhbGwgSSdtIGdldHRpbmcgaXMgYSBidW5jaCBv
ZiBsaW5rZXIgZXJyb3JzIChvciB3YXJuaW5ncykuIEhlbHAhICMjCi0KLVlvdSBtYXkgZ2V0IGEg
bnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcgbGlua2VyIGVycm9yIG9yIHdhcm5pbmdzIGlmIHlvdQot
YXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVzdCBwcm9qZWN0IHdpdGggdGhlIEdvb2dsZSBUZXN0IGxp
YnJhcnkgd2hlbgoteW91ciBwcm9qZWN0IGFuZCB0aGUgYXJlIG5vdCBidWlsdCB1c2luZyB0aGUg
c2FtZSBjb21waWxlciBzZXR0aW5ncy4KLQotICAqIExOSzIwMDU6IHN5bWJvbCBhbHJlYWR5IGRl
ZmluZWQgaW4gb2JqZWN0Ci0gICogTE5LNDIxNzogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3lt
Ym9sJyBpbXBvcnRlZCBpbiBmdW5jdGlvbiAnZnVuY3Rpb24nCi0gICogTE5LNDA0OTogbG9jYWxs
eSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZAotCi1UaGUgR29vZ2xlIFRlc3QgcHJv
amVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMgdGhlIFJ1bnRpbWUgTGlicmFyeSBvcHRpb24KLXNldCB0
byAvTVQgKHVzZSBtdWx0aS10aHJlYWRlZCBzdGF0aWMgbGlicmFyaWVzLCAvTVRkIGZvciBkZWJ1
ZykuIElmCi15b3VyIHByb2plY3QgdXNlcyBzb21ldGhpbmcgZWxzZSwgZm9yIGV4YW1wbGUgL01E
ICh1c2UgbXVsdGktdGhyZWFkZWQKLURMTHMsIC9NRGQgZm9yIGRlYnVnKSwgeW91IG5lZWQgdG8g
Y2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBHb29nbGUKLVRlc3QgcHJvamVjdCB0byBtYXRjaCB5
b3VyIHByb2plY3Qncy4KLQotVG8gdXBkYXRlIHRoaXMgc2V0dGluZyBvcGVuIHRoZSBwcm9qZWN0
IHByb3BlcnRpZXMgaW4gdGhlIFZpc3VhbAotU3R1ZGlvIElERSB0aGVuIHNlbGVjdCB0aGUgYnJh
bmNoIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcyB8IEMvQysrIHwKLUNvZGUgR2VuZXJhdGlvbiBh
bmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1bnRpbWUgTGlicmFyeSIuICBZb3UgbWF5IGFsc28gdHJ5
Ci11c2luZyBndGVzdC1tZC52Y3Byb2ogaW5zdGVhZCBvZiBndGVzdC52Y3Byb2ouCi0KLSMjIEkg
cHV0IG15IHRlc3RzIGluIGEgbGlicmFyeSBhbmQgR29vZ2xlIFRlc3QgZG9lc24ndCBydW4gdGhl
bS4gV2hhdCdzIGhhcHBlbmluZz8gIyMKLUhhdmUgeW91IHJlYWQgYQotW3dhcm5pbmddKFYxXzVf
UHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12aXN1YWwtYy11c2Vycykgb24KLXRoZSBHb29n
bGUgVGVzdCBQcmltZXIgcGFnZT8KLQotIyMgSSB3YW50IHRvIHVzZSBHb29nbGUgVGVzdCB3aXRo
IFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cgd2hlcmUgdG8gc3RhcnQuICMjCi1NYW55IHBl
b3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQgb25lIG9mIHRoZSBwb3N0ZWQgaGlzIHNvbHV0
aW9uIHRvCi1vdXIgbWFpbGluZyBsaXN0LiBIZXJlIGlzIGhpcyBsaW5rOgotaHR0cDovL2hhc3Nh
bmphbWlsYWhtYWQuYmxvZ3Nwb3QuY29tLzIwMDkvMDcvZ3Rlc3Qtc3RhcnRlcnMtaGVscC5odG1s
LgotCi0jIyBNeSBxdWVzdGlvbiBpcyBub3QgY292ZXJlZCBpbiB5b3VyIEZBUSEgIyMKLQotSWYg
eW91IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpbiB0aGlzIEZBUSwg
dGhlcmUgYXJlCi1zb21lIG90aGVyIHJlc291cmNlcyB5b3UgY2FuIHVzZToKLQotICAxLiByZWFk
IG90aGVyIFt3aWtpIHBhZ2VzXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93
L2xpc3QpLAotICAxLiBzZWFyY2ggdGhlIG1haWxpbmcgbGlzdCBbYXJjaGl2ZV0oaHR0cDovL2dy
b3Vwcy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmsvdG9waWNzKSwKLSAgMS4g
YXNrIGl0IG9uIFtnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21dKG1haWx0bzpn
b29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20pIGFuZCBzb21lb25lIHdpbGwgYW5z
d2VyIGl0ICh0byBwcmV2ZW50IHNwYW0sIHdlIHJlcXVpcmUgeW91IHRvIGpvaW4gdGhlIFtkaXNj
dXNzaW9uIGdyb3VwXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZy
YW1ld29yaykgYmVmb3JlIHlvdSBjYW4gcG9zdC4pLgotCi1QbGVhc2Ugbm90ZSB0aGF0IGNyZWF0
aW5nIGFuIGlzc3VlIGluIHRoZQotW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9nb29nbGV0ZXN0L2lzc3Vlcy9saXN0KSBpcyBfbm90XwotYSBnb29kIHdheSB0byBnZXQg
eW91ciBhbnN3ZXIsIGFzIGl0IGlzIG1vbml0b3JlZCBpbmZyZXF1ZW50bHkgYnkgYQotdmVyeSBz
bWFsbCBudW1iZXIgb2YgcGVvcGxlLgotCi1XaGVuIGFza2luZyBhIHF1ZXN0aW9uLCBpdCdzIGhl
bHBmdWwgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZQotZm9sbG93aW5nIGluZm9ybWF0aW9uIGFz
IHBvc3NpYmxlIChwZW9wbGUgY2Fubm90IGhlbHAgeW91IGlmIHRoZXJlJ3MKLW5vdCBlbm91Z2gg
aW5mb3JtYXRpb24gaW4geW91ciBxdWVzdGlvbik6Ci0KLSAgKiB0aGUgdmVyc2lvbiAob3IgdGhl
IHJldmlzaW9uIG51bWJlciBpZiB5b3UgY2hlY2sgb3V0IGZyb20gU1ZOIGRpcmVjdGx5KSBvZiBH
b29nbGUgVGVzdCB5b3UgdXNlIChHb29nbGUgVGVzdCBpcyB1bmRlciBhY3RpdmUgZGV2ZWxvcG1l
bnQsIHNvIGl0J3MgcG9zc2libGUgdGhhdCB5b3VyIHByb2JsZW0gaGFzIGJlZW4gc29sdmVkIGlu
IGEgbGF0ZXIgdmVyc2lvbiksCi0gICogeW91ciBvcGVyYXRpbmcgc3lzdGVtLAotICAqIHRoZSBu
YW1lIGFuZCB2ZXJzaW9uIG9mIHlvdXIgY29tcGlsZXIsCi0gICogdGhlIGNvbXBsZXRlIGNvbW1h
bmQgbGluZSBmbGFncyB5b3UgZ2l2ZSB0byB5b3VyIGNvbXBpbGVyLAotICAqIHRoZSBjb21wbGV0
ZSBjb21waWxlciBlcnJvciBtZXNzYWdlcyAoaWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGNvbXBp
bGF0aW9uKSwKLSAgKiB0aGUgX2FjdHVhbF8gY29kZSAoaWRlYWxseSwgYSBtaW5pbWFsIGJ1dCBj
b21wbGV0ZSBwcm9ncmFtKSB0aGF0IGhhcyB0aGUgcHJvYmxlbSB5b3UgZW5jb3VudGVyLu+cgQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X1ByaW1lci5tZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfNV9QcmltZXIubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NjBk
MmNlNGMzNC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9QcmltZXIu
bWQKKysrIC9kZXYvbnVsbApAQCAtMSw0OTcgKzAsMCBAQAotCi0KLSMgSW50cm9kdWN0aW9uOiBX
aHkgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaz8gIwotCi1fR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29ya18gaGVscHMgeW91IHdyaXRlIGJldHRlciBDKysgdGVzdHMuCi0KLU5vIG1hdHRl
ciB3aGV0aGVyIHlvdSB3b3JrIG9uIExpbnV4LCBXaW5kb3dzLCBvciBhIE1hYywgaWYgeW91IHdy
aXRlIEMrKyBjb2RlLAotR29vZ2xlIFRlc3QgY2FuIGhlbHAgeW91LgotCi1TbyB3aGF0IG1ha2Vz
IGEgZ29vZCB0ZXN0LCBhbmQgaG93IGRvZXMgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBm
aXQgaW4/IFdlIGJlbGlldmU6Ci0gIDEuIFRlc3RzIHNob3VsZCBiZSBfaW5kZXBlbmRlbnRfIGFu
ZCBfcmVwZWF0YWJsZV8uIEl0J3MgYSBwYWluIHRvIGRlYnVnIGEgdGVzdCB0aGF0IHN1Y2NlZWRz
IG9yIGZhaWxzIGFzIGEgcmVzdWx0IG9mIG90aGVyIHRlc3RzLiAgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayBpc29sYXRlcyB0aGUgdGVzdHMgYnkgcnVubmluZyBlYWNoIG9mIHRoZW0gb24g
YSBkaWZmZXJlbnQgb2JqZWN0LiBXaGVuIGEgdGVzdCBmYWlscywgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayBhbGxvd3MgeW91IHRvIHJ1biBpdCBpbiBpc29sYXRpb24gZm9yIHF1aWNrIGRl
YnVnZ2luZy4KLSAgMS4gVGVzdHMgc2hvdWxkIGJlIHdlbGwgX29yZ2FuaXplZF8gYW5kIHJlZmxl
Y3QgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdGVzdGVkIGNvZGUuICBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGdyb3VwcyByZWxhdGVkIHRlc3RzIGludG8gdGVzdCBjYXNlcyB0aGF0IGNhbiBz
aGFyZSBkYXRhIGFuZCBzdWJyb3V0aW5lcy4gVGhpcyBjb21tb24gcGF0dGVybiBpcyBlYXN5IHRv
IHJlY29nbml6ZSBhbmQgbWFrZXMgdGVzdHMgZWFzeSB0byBtYWludGFpbi4gU3VjaCBjb25zaXN0
ZW5jeSBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBwZW9wbGUgc3dpdGNoIHByb2plY3RzIGFu
ZCBzdGFydCB0byB3b3JrIG9uIGEgbmV3IGNvZGUgYmFzZS4KLSAgMS4gVGVzdHMgc2hvdWxkIGJl
IF9wb3J0YWJsZV8gYW5kIF9yZXVzYWJsZV8uIFRoZSBvcGVuLXNvdXJjZSBjb21tdW5pdHkgaGFz
IGEgbG90IG9mIGNvZGUgdGhhdCBpcyBwbGF0Zm9ybS1uZXV0cmFsLCBpdHMgdGVzdHMgc2hvdWxk
IGFsc28gYmUgcGxhdGZvcm0tbmV1dHJhbC4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
d29ya3Mgb24gZGlmZmVyZW50IE9TZXMsIHdpdGggZGlmZmVyZW50IGNvbXBpbGVycyAoZ2NjLCBN
U1ZDLCBhbmQgb3RoZXJzKSwgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMsIHNvIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgdGVzdHMgY2FuIGVhc2lseSB3b3JrIHdpdGggYSB2YXJpZXR5
IG9mIGNvbmZpZ3VyYXRpb25zLiAgKE5vdGUgdGhhdCB0aGUgY3VycmVudCByZWxlYXNlIG9ubHkg
Y29udGFpbnMgYnVpbGQgc2NyaXB0cyBmb3IgTGludXggLSB3ZSBhcmUgYWN0aXZlbHkgd29ya2lu
ZyBvbiBzY3JpcHRzIGZvciBvdGhlciBwbGF0Zm9ybXMuKQotICAxLiBXaGVuIHRlc3RzIGZhaWws
IHRoZXkgc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBfaW5mb3JtYXRpb25fIGFib3V0IHRoZSBwcm9i
bGVtIGFzIHBvc3NpYmxlLiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGRvZXNuJ3Qgc3Rv
cCBhdCB0aGUgZmlyc3QgdGVzdCBmYWlsdXJlLiBJbnN0ZWFkLCBpdCBvbmx5IHN0b3BzIHRoZSBj
dXJyZW50IHRlc3QgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0LiBZb3UgY2FuIGFsc28gc2V0
IHVwIHRlc3RzIHRoYXQgcmVwb3J0IG5vbi1mYXRhbCBmYWlsdXJlcyBhZnRlciB3aGljaCB0aGUg
Y3VycmVudCB0ZXN0IGNvbnRpbnVlcy4gVGh1cywgeW91IGNhbiBkZXRlY3QgYW5kIGZpeCBtdWx0
aXBsZSBidWdzIGluIGEgc2luZ2xlIHJ1bi1lZGl0LWNvbXBpbGUgY3ljbGUuCi0gIDEuIFRoZSB0
ZXN0aW5nIGZyYW1ld29yayBzaG91bGQgbGliZXJhdGUgdGVzdCB3cml0ZXJzIGZyb20gaG91c2Vr
ZWVwaW5nIGNob3JlcyBhbmQgbGV0IHRoZW0gZm9jdXMgb24gdGhlIHRlc3QgX2NvbnRlbnRfLiAg
R29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBhdXRvbWF0aWNhbGx5IGtlZXBzIHRyYWNrIG9m
IGFsbCB0ZXN0cyBkZWZpbmVkLCBhbmQgZG9lc24ndCByZXF1aXJlIHRoZSB1c2VyIHRvIGVudW1l
cmF0ZSB0aGVtIGluIG9yZGVyIHRvIHJ1biB0aGVtLgotICAxLiBUZXN0cyBzaG91bGQgYmUgX2Zh
c3RfLiBXaXRoIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmssIHlvdSBjYW4gcmV1c2Ugc2hh
cmVkIHJlc291cmNlcyBhY3Jvc3MgdGVzdHMgYW5kIHBheSBmb3IgdGhlIHNldC11cC90ZWFyLWRv
d24gb25seSBvbmNlLCB3aXRob3V0IG1ha2luZyB0ZXN0cyBkZXBlbmQgb24gZWFjaCBvdGhlci4K
LQotU2luY2UgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpcyBiYXNlZCBvbiB0aGUgcG9w
dWxhciB4VW5pdAotYXJjaGl0ZWN0dXJlLCB5b3UnbGwgZmVlbCByaWdodCBhdCBob21lIGlmIHlv
dSd2ZSB1c2VkIEpVbml0IG9yIFB5VW5pdCBiZWZvcmUuCi1JZiBub3QsIGl0IHdpbGwgdGFrZSB5
b3UgYWJvdXQgMTAgbWludXRlcyB0byBsZWFybiB0aGUgYmFzaWNzIGFuZCBnZXQgc3RhcnRlZC4K
LVNvIGxldCdzIGdvIQotCi1fTm90ZTpfIFdlIHNvbWV0aW1lcyByZWZlciB0byBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIGluZm9ybWFsbHkKLWFzIF9Hb29nbGUgVGVzdF8uCi0KLSMgU2V0
dGluZyB1cCBhIE5ldyBUZXN0IFByb2plY3QgIwotCi1UbyB3cml0ZSBhIHRlc3QgcHJvZ3JhbSB1
c2luZyBHb29nbGUgVGVzdCwgeW91IG5lZWQgdG8gY29tcGlsZSBHb29nbGUKLVRlc3QgaW50byBh
IGxpYnJhcnkgYW5kIGxpbmsgeW91ciB0ZXN0IHdpdGggaXQuICBXZSBwcm92aWRlIGJ1aWxkCi1m
aWxlcyBmb3Igc29tZSBwb3B1bGFyIGJ1aWxkIHN5c3RlbXMgKGBtc3ZjL2AgZm9yIFZpc3VhbCBT
dHVkaW8sCi1geGNvZGUvYCBmb3IgTWFjIFhjb2RlLCBgbWFrZS9gIGZvciBHTlUgbWFrZSwgYGNv
ZGVnZWFyL2AgZm9yIEJvcmxhbmQKLUMrKyBCdWlsZGVyLCBhbmQgdGhlIGF1dG90b29scyBzY3Jp
cHQgaW4gdGhlCi1Hb29nbGUgVGVzdCByb290IGRpcmVjdG9yeSkuICBJZiB5b3VyIGJ1aWxkIHN5
c3RlbSBpcyBub3Qgb24gdGhpcwotbGlzdCwgeW91IGNhbiB0YWtlIGEgbG9vayBhdCBgbWFrZS9N
YWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0Ci1zaG91bGQgYmUgY29tcGlsZWQgKGJh
c2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxsLmNjYAotd2l0aCBgR1RF
U1RfUk9PVGAgYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBh
dGgsCi13aGVyZSBgR1RFU1RfUk9PVGAgaXMgdGhlIEdvb2dsZSBUZXN0IHJvb3QgZGlyZWN0b3J5
KS4KLQotT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29vZ2xlIFRlc3QgbGlicmFy
eSwgeW91IHNob3VsZAotY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0YXJnZXQgZm9yIHlvdXIg
dGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQotaGF2ZSBgR1RFU1RfUk9PVC9pbmNsdWRlYCBp
biB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCi1jb21waWxlciBjYW4gZmluZCBg
PGd0ZXN0L2d0ZXN0Lmg+YCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3QuICBTZXQgdXAKLXlvdXIg
dGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGlicmFyeSAoZm9yIGV4
YW1wbGUsCi1pbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkgYWRkaW5nIGEgZGVwZW5k
ZW5jeSBvbgotYGd0ZXN0LnZjcHJvamApLgotCi1JZiB5b3Ugc3RpbGwgaGF2ZSBxdWVzdGlvbnMs
IHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgotdGVzdHMgYXJlIGJ1aWx0IGFu
ZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KLQotIyBCYXNpYyBDb25jZXB0cyAjCi0KLVdoZW4gdXNp
bmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3NlcnRpb25zXywgd2hpY2gg
YXJlIHN0YXRlbWVudHMKLXRoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlvbiBpcyB0cnVlLiBB
biBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKLV9ub25mYXRhbCBmYWlsdXJl
Xywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2NjdXJzLCBpdCBhYm9y
dHMKLXRoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dyYW0gY29udGludWVz
IG5vcm1hbGx5LgotCi1fVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlmeSB0aGUgdGVzdGVk
IGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKLW9yIGhhcyBhIGZhaWxlZCBhc3Nl
cnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNjZWVkc18uCi0KLUEgX3Rl
c3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91bGQgZ3JvdXAgeW91
ciB0ZXN0cyBpbnRvIHRlc3QKLWNhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRo
ZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCi10ZXN0IGNhc2UgbmVlZCB0
byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBjYW4gcHV0IHRoZW0g
aW50byBhCi1fdGVzdCBmaXh0dXJlXyBjbGFzcy4KLQotQSBfdGVzdCBwcm9ncmFtXyBjYW4gY29u
dGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgotCi1XZSdsbCBub3cgZXhwbGFpbiBob3cgdG8gd3Jp
dGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFsCi1hc3NlcnRpb24g
bGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2VzLgotCi0jIEFzc2Vy
dGlvbnMgIwotCi1Hb29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3MgdGhhdCByZXNlbWJs
ZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQotY2xhc3Mgb3IgZnVuY3Rpb24gYnkgbWFraW5n
IGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2VydGlvbgotZmFpbHMs
IEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZpbGUgYW5kIGxpbmUg
bnVtYmVyIGxvY2F0aW9uLAotYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVzc2FnZS4gWW91IG1heSBh
bHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKLXdoaWNoIHdpbGwgYmUgYXBwZW5k
ZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgotCi1UaGUgYXNzZXJ0aW9ucyBjb21lIGluIHBh
aXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJlbnQKLWVmZmVjdHMg
b24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMgZ2VuZXJhdGUgZmF0
YWwgZmFpbHVyZXMKLXdoZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0aGUgY3VycmVudCBmdW5j
dGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCi1ub25mYXRhbCBmYWlsdXJlcywg
d2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFsbHkgYEVYUEVDVF8q
YAotYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25lIGZhaWx1cmVzIHRv
IGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KLUhvd2V2ZXIsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRf
KmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4KLXRoZSBhc3NlcnRp
b24gaW4gcXVlc3Rpb24gZmFpbHMuCi0KLVNpbmNlIGEgZmFpbGVkIGBBU1NFUlRfKmAgcmV0dXJu
cyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAotcG9zc2libHkgc2tpcHBp
bmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkgY2F1c2UgYSBzcGFj
ZSBsZWFrLgotRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWssIGl0IG1heSBvciBt
YXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCi1rZWVwIHRoaXMgaW4gbWluZCBpZiB5b3UgZ2V0
IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlvbgotZXJyb3JzLgot
Ci1UbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5IHN0cmVhbSBpdCBp
bnRvIHRoZSBtYWNybyB1c2luZyB0aGUKLWA8PGAgb3BlcmF0b3IsIG9yIGEgc2VxdWVuY2Ugb2Yg
c3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6Ci1gYGAKLUFTU0VSVF9FUSh4LnNpemUoKSwgeS5z
aXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoIjsKLQotZm9y
IChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7Ci0gIEVYUEVDVF9FUSh4W2ldLCB5W2ld
KSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7Ci19Ci1gYGAKLQot
QW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1gIGNhbiBiZSBzdHJl
YW1lZCB0byBhbiBhc3NlcnRpb24KLW1hY3JvLS1pbiBwYXJ0aWN1bGFyLCBDIHN0cmluZ3MgYW5k
IGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKLShgd2NoYXJfdCpgLCBgVENIQVIq
YCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3RyaW5nYCkgaXMKLXN0
cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIFVURi04IHdo
ZW4gcHJpbnRlZC4KLQotIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhc3NlcnRpb25z
IGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCi18ICoqRmF0YWwgYXNzZXJ0
aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAot
fCBgQVNTRVJUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgfCBgRVhQRUNUX1RSVUUoYF9jb25kaXRp
b25fYClgOyAgIHwgX2NvbmRpdGlvbl8gaXMgdHJ1ZSB8Ci18IGBBU1NFUlRfRkFMU0UoYF9jb25k
aXRpb25fYClgOyB8IGBFWFBFQ1RfRkFMU0UoYF9jb25kaXRpb25fYClgOyAgfCBfY29uZGl0aW9u
XyBpcyBmYWxzZSB8Ci0KLVJlbWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFTU0VSVF8qYCB5aWVs
ZHMgYSBmYXRhbCBmYWlsdXJlIGFuZAotcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9u
LCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBhIG5vbmZhdGFsCi1mYWlsdXJlLCBhbGxvd2luZyB0
aGUgZnVuY3Rpb24gdG8gY29udGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNhc2UsIGFuCi1hc3Nl
cnRpb24gZmFpbHVyZSBtZWFucyBpdHMgY29udGFpbmluZyB0ZXN0IGZhaWxzLgotCi1fQXZhaWxh
YmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgQmluYXJ5IENvbXBhcmlzb24gIyMK
LQotVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29tcGFyZSB0d28gdmFs
dWVzLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwg
KipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfGBBU1NFUlRfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVh
bF9gKTtgfGBFWFBFQ1RfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtgfCBfZXhwZWN0ZWRf
IGA9PWAgX2FjdHVhbF8gfAotfGBBU1NFUlRfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAg
fGBFWFBFQ1RfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYCE9YCBfdmFs
Ml8gfAotfGBBU1NFUlRfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfTFQo
YF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDxgIF92YWwyXyB8Ci18YEFTU0VS
VF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MRShgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPD1gIF92YWwyXyB8Ci18YEFTU0VSVF9HVChgX3ZhbDFf
YCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAg
ICB8IF92YWwxXyBgPmAgX3ZhbDJfIHwKLXxgQVNTRVJUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7
YCAgICAgIHxgRVhQRUNUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+
PWAgX3ZhbDJfIHwKLQotSW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgR29vZ2xlIFRlc3QgcHJp
bnRzIGJvdGggX3ZhbDFfIGFuZCBfdmFsMl8KLS4gSW4gYEFTU0VSVF9FUSpgIGFuZCBgRVhQRUNU
X0VRKmAgKGFuZCBhbGwgb3RoZXIgZXF1YWxpdHkgYXNzZXJ0aW9ucwotd2UnbGwgaW50cm9kdWNl
IGxhdGVyKSwgeW91IHNob3VsZCBwdXQgdGhlIGV4cHJlc3Npb24geW91IHdhbnQgdG8gdGVzdAot
aW4gdGhlIHBvc2l0aW9uIG9mIF9hY3R1YWxfLCBhbmQgcHV0IGl0cyBleHBlY3RlZCB2YWx1ZSBp
biBfZXhwZWN0ZWRfLAotYXMgR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2VzIGFyZSBvcHRp
bWl6ZWQgZm9yIHRoaXMgY29udmVudGlvbi4KLQotVmFsdWUgYXJndW1lbnRzIG11c3QgYmUgY29t
cGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbiBvcGVyYXRvciBvcgoteW91J2xs
IGdldCBhIGNvbXBpbGVyIGVycm9yLiBWYWx1ZXMgbXVzdCBhbHNvIHN1cHBvcnQgdGhlIGA8PGAg
b3BlcmF0b3IgZm9yCi1zdHJlYW1pbmcgdG8gYW4gYG9zdHJlYW1gLiBBbGwgYnVpbHQtaW4gdHlw
ZXMgc3VwcG9ydCB0aGlzLgotCi1UaGVzZSBhc3NlcnRpb25zIGNhbiB3b3JrIHdpdGggYSB1c2Vy
LWRlZmluZWQgdHlwZSwgYnV0IG9ubHkgaWYgeW91IGRlZmluZSB0aGUKLWNvcnJlc3BvbmRpbmcg
Y29tcGFyaXNvbiBvcGVyYXRvciAoZS5nLiBgPT1gLCBgPGAsIGV0YykuICBJZiB0aGUgY29ycmVz
cG9uZGluZwotb3BlcmF0b3IgaXMgZGVmaW5lZCwgcHJlZmVyIHVzaW5nIHRoZSBgQVNTRVJUXyoo
KWAgbWFjcm9zIGJlY2F1c2UgdGhleSB3aWxsCi1wcmludCBvdXQgbm90IG9ubHkgdGhlIHJlc3Vs
dCBvZiB0aGUgY29tcGFyaXNvbiwgYnV0IHRoZSB0d28gb3BlcmFuZHMgYXMgd2VsbC4KLQotQXJn
dW1lbnRzIGFyZSBhbHdheXMgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4gVGhlcmVmb3JlLCBpdCdz
IE9LIGZvciB0aGUKLWFyZ3VtZW50cyB0byBoYXZlIHNpZGUgZWZmZWN0cy4gSG93ZXZlciwgYXMg
d2l0aCBhbnkgb3JkaW5hcnkgQy9DKysgZnVuY3Rpb24sCi10aGUgYXJndW1lbnRzJyBldmFsdWF0
aW9uIG9yZGVyIGlzIHVuZGVmaW5lZCAoaS5lLiB0aGUgY29tcGlsZXIgaXMgZnJlZSB0bwotY2hv
b3NlIGFueSBvcmRlcikgYW5kIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnkgcGFy
dGljdWxhciBhcmd1bWVudAotZXZhbHVhdGlvbiBvcmRlci4KLQotYEFTU0VSVF9FUSgpYCBkb2Vz
IHBvaW50ZXIgZXF1YWxpdHkgb24gcG9pbnRlcnMuIElmIHVzZWQgb24gdHdvIEMgc3RyaW5ncywg
aXQKLXRlc3RzIGlmIHRoZXkgYXJlIGluIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbiwgbm90IGlm
IHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KLVRoZXJlZm9yZSwgaWYgeW91IHdhbnQgdG8gY29t
cGFyZSBDIHN0cmluZ3MgKGUuZy4gYGNvbnN0IGNoYXIqYCkgYnkgdmFsdWUsIHVzZQotYEFTU0VS
VF9TVFJFUSgpYCAsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyIG9uLiBJbiBwYXJ0aWN1
bGFyLCB0byBhc3NlcnQKLXRoYXQgYSBDIHN0cmluZyBpcyBgTlVMTGAsIHVzZSBgQVNTRVJUX1NU
UkVRKE5VTEwsIGNfc3RyaW5nKWAgLiBIb3dldmVyLCB0bwotY29tcGFyZSB0d28gYHN0cmluZ2Ag
b2JqZWN0cywgeW91IHNob3VsZCB1c2UgYEFTU0VSVF9FUWAuCi0KLU1hY3JvcyBpbiB0aGlzIHNl
Y3Rpb24gd29yayB3aXRoIGJvdGggbmFycm93IGFuZCB3aWRlIHN0cmluZyBvYmplY3RzIChgc3Ry
aW5nYAotYW5kIGB3c3RyaW5nYCkuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIyBTdHJpbmcgQ29tcGFyaXNvbiAjIwotCi1UaGUgYXNzZXJ0aW9ucyBpbiB0aGlz
IGdyb3VwIGNvbXBhcmUgdHdvICoqQyBzdHJpbmdzKiouIElmIHlvdSB3YW50IHRvIGNvbXBhcmUK
LXR3byBgc3RyaW5nYCBvYmplY3RzLCB1c2UgYEVYUEVDVF9FUWAsIGBFWFBFQ1RfTkVgLCBhbmQg
ZXRjIGluc3RlYWQuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfU1RSRVEoYF9leHBlY3Rl
ZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICB8IGBFWFBFQ1RfU1RSRVEoYF9leHBlY3Rl
ZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCAgICAgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZl
IHRoZSBzYW1lIGNvbnRlbnQgfAotfCBgQVNTRVJUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7
YCAgICB8IGBFWFBFQ1RfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgICB8IHRoZSB0d28g
QyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQgfAotfCBgQVNTRVJUX1NUUkNBU0VFUShg
X2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VFUShg
X2V4cGVjdGVkXF9zdHJfYCwgYF9hY3R1YWxcX3N0cl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3Mg
aGF2ZSB0aGUgc2FtZSBjb250ZW50LCBpZ25vcmluZyBjYXNlIHwKLXwgYEFTU0VSVF9TVFJDQVNF
TkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgfCBgRVhQRUNUX1NUUkNBU0VORShgX3N0cjFfYCwgYF9z
dHIyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50LCBpZ25v
cmluZyBjYXNlIHwKLQotTm90ZSB0aGF0ICJDQVNFIiBpbiBhbiBhc3NlcnRpb24gbmFtZSBtZWFu
cyB0aGF0IGNhc2UgaXMgaWdub3JlZC4KLQotYCpTVFJFUSpgIGFuZCBgKlNUUk5FKmAgYWxzbyBh
Y2NlcHQgd2lkZSBDIHN0cmluZ3MgKGB3Y2hhcl90KmApLiBJZiBhCi1jb21wYXJpc29uIG9mIHR3
byB3aWRlIHN0cmluZ3MgZmFpbHMsIHRoZWlyIHZhbHVlcyB3aWxsIGJlIHByaW50ZWQgYXMgVVRG
LTgKLW5hcnJvdyBzdHJpbmdzLgotCi1BIGBOVUxMYCBwb2ludGVyIGFuZCBhbiBlbXB0eSBzdHJp
bmcgYXJlIGNvbnNpZGVyZWQgX2RpZmZlcmVudF8uCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwg
V2luZG93cywgTWFjLgotCi1TZWUgYWxzbzogRm9yIG1vcmUgc3RyaW5nIGNvbXBhcmlzb24gdHJp
Y2tzIChzdWJzdHJpbmcsIHByZWZpeCwgc3VmZml4LCBhbmQKLXJlZ3VsYXIgZXhwcmVzc2lvbiBt
YXRjaGluZywgZm9yIGV4YW1wbGUpLCBzZWUgdGhlIFtBZHZhbmNlZEd1aWRlIEFkdmFuY2VkCi1H
b29nbGUgVGVzdCBHdWlkZV0uCi0KLSMgU2ltcGxlIFRlc3RzICMKLQotVG8gY3JlYXRlIGEgdGVz
dDoKLSAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZpbmUgYW5kIG5hbWUgYSB0ZXN0
IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJl
dHVybiBhIHZhbHVlLgotICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIGFueSB2YWxp
ZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1c2UgdGhlIHZhcmlvdXMgR29v
Z2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCi0gIDEuIFRoZSB0ZXN0J3MgcmVz
dWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlmIGFueSBhc3NlcnRpb24gaW4g
dGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1mYXRhbGx5KSwgb3IgaWYgdGhl
IHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBPdGhlcndpc2UsIGl0IHN1Y2Nl
ZWRzLgotCi1gYGAKLVRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgewotIC4uLiB0ZXN0
IGJvZHkgLi4uCi19Ci1gYGAKLQotCi1gVEVTVCgpYCBhcmd1bWVudHMgZ28gZnJvbSBnZW5lcmFs
IHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0aGUKLW5hbWUgb2YgdGhlIHRl
c3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0aGUgdGVzdCdzIG5hbWUgd2l0
aGluIHRoZQotdGVzdCBjYXNlLiBSZW1lbWJlciB0aGF0IGEgdGVzdCBjYXNlIGNhbiBjb250YWlu
IGFueSBudW1iZXIgb2YgaW5kaXZpZHVhbAotdGVzdHMuIEEgdGVzdCdzIF9mdWxsIG5hbWVfIGNv
bnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2FzZSBhbmQgaXRzCi1pbmRpdmlkdWFsIG5h
bWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMgY2FuIGhhdmUgdGhlIHNhbWUgaW5k
aXZpZHVhbAotbmFtZS4KLQotRm9yIGV4YW1wbGUsIGxldCdzIHRha2UgYSBzaW1wbGUgaW50ZWdl
ciBmdW5jdGlvbjoKLWBgYAotaW50IEZhY3RvcmlhbChpbnQgbik7IC8vIFJldHVybnMgdGhlIGZh
Y3RvcmlhbCBvZiBuCi1gYGAKLQotQSB0ZXN0IGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gbWlnaHQg
bG9vayBsaWtlOgotYGBgCi0vLyBUZXN0cyBmYWN0b3JpYWwgb2YgMC4KLVRFU1QoRmFjdG9yaWFs
VGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgewotICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsK
LX0KLQotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51bWJlcnMuCi1URVNUKEZhY3Rv
cmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3Jp
YWwoMSkpOwotICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsKLSAgRVhQRUNUX0VRKDYsIEZh
Y3RvcmlhbCgzKSk7Ci0gIEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9yaWFsKDgpKTsKLX0KLWBgYAot
Ci1Hb29nbGUgVGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBieSB0ZXN0IGNhc2VzLCBzbyBs
b2dpY2FsbHktcmVsYXRlZCB0ZXN0cwotc2hvdWxkIGJlIGluIHRoZSBzYW1lIHRlc3QgY2FzZTsg
aW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGVpcgotYFRFU1QoKWAgc2hv
dWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgd2UgaGF2ZSB0d28gdGVzdHMs
Ci1gSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRpdmVJbnB1dGAsIHRoYXQgYmVs
b25nIHRvIHRoZSBzYW1lIHRlc3QKLWNhc2UgYEZhY3RvcmlhbFRlc3RgLgotCi1fQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBUZXN0IEZpeHR1cmVzOiBVc2luZyB0aGUg
U2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRlc3RzICMKLQotSWYgeW91IGZp
bmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0aGF0IG9wZXJhdGUgb24gc2lt
aWxhciBkYXRhLAoteW91IGNhbiB1c2UgYSBfdGVzdCBmaXh0dXJlXy4gSXQgYWxsb3dzIHlvdSB0
byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCi1vYmplY3RzIGZvciBzZXZlcmFsIGRp
ZmZlcmVudCB0ZXN0cy4KLQotVG8gY3JlYXRlIGEgZml4dHVyZSwganVzdDoKLSAgMS4gRGVyaXZl
IGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YCAuIFN0YXJ0IGl0cyBib2R5IHdpdGggYHBy
b3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSdsbCB3YW50IHRvIGFjY2VzcyBmaXh0dXJlIG1l
bWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KLSAgMS4gSW5zaWRlIHRoZSBjbGFzcywgZGVjbGFyZSBh
bnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCi0gIDEuIElmIG5lY2Vzc2FyeSwgd3JpdGUgYSBk
ZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBv
YmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8gc3BlbGwgYFNldFVw
KClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21hbGwgYHVgIC0gZG9uJ3QgbGV0IHRoYXQgaGFwcGVu
IHRvIHlvdS4KLSAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlc3RydWN0b3Igb3IgYFRlYXJE
b3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55IHJlc291cmNlcyB5b3UgYWxsb2NhdGVkIGlu
IGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1c2UgdGhlIGNvbnN0cnVjdG9y
L2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1c2UgYFNldFVwKCkvVGVhckRvd24oKWAs
IHJlYWQgdGhpcyBbRkFRIGVudHJ5XShWMV81X0ZBUS5tZCNzaG91bGQtaS11c2UtdGhlLWNvbnN0
cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9yLXRoZS1zZXQtdXB0ZWFyLWRv
d24tZnVuY3Rpb24pLgotICAxLiBJZiBuZWVkZWQsIGRlZmluZSBzdWJyb3V0aW5lcyBmb3IgeW91
ciB0ZXN0cyB0byBzaGFyZS4KLQotV2hlbiB1c2luZyBhIGZpeHR1cmUsIHVzZSBgVEVTVF9GKClg
IGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0bwotYWNjZXNzIG9iamVjdHMg
YW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6Ci1gYGAKLVRFU1RfRih0ZXN0X2Nh
c2VfbmFtZSwgdGVzdF9uYW1lKSB7Ci0gLi4uIHRlc3QgYm9keSAuLi4KLX0KLWBgYAotCi1MaWtl
IGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRlc3QgY2FzZSBuYW1lLCBidXQg
Zm9yIGBURVNUX0YoKWAKLXRoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCBmaXh0dXJl
IGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAotaXMgZm9yIGZpeHR1cmUuCi0K
LVVuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRvZXMgbm90IGFsbG93IHVzIHRv
IGNyZWF0ZSBhIHNpbmdsZSBtYWNybwotdGhhdCBjYW4gaGFuZGxlIGJvdGggdHlwZXMgb2YgdGVz
dHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21waWxlcgotZXJyb3IuCi0KLUFs
c28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVyZSBjbGFzcyBiZWZvcmUgdXNp
bmcgaXQgaW4gYQotYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0aGUgY29tcGlsZXIgZXJyb3Ig
ImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKLWRlY2xhcmF0aW9uYCIuCi0KLUZvciBlYWNoIHRlc3Qg
ZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdpbGw6Ci0gIDEuIENyZWF0ZSBh
IF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKLSAgMS4gSW1tZWRpYXRlbHkgaW5pdGlh
bGl6ZSBpdCB2aWEgYFNldFVwKClgICwKLSAgMS4gUnVuIHRoZSB0ZXN0Ci0gIDEuIENsZWFuIHVw
IGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCi0gIDEuIERlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlLiAg
Tm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgaGF2ZSBkaWZm
ZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUgVGVzdCBhbHdheXMgZGVsZXRl
cyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUgbmV4dCBvbmUuIEdvb2dsZSBU
ZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBmb3IgbXVsdGlwbGUgdGVz
dHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBmaXh0dXJlIGRvIG5vdCBhZmZl
Y3Qgb3RoZXIgdGVzdHMuCi0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIHdyaXRlIHRlc3RzIGZvciBh
IEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gKLWhhcyB0aGUgZm9sbG93aW5n
IGludGVyZmFjZToKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEU+IC8vIEUgaXMgdGhlIGVsZW1l
bnQgdHlwZS4KLWNsYXNzIFF1ZXVlIHsKLSBwdWJsaWM6Ci0gIFF1ZXVlKCk7Ci0gIHZvaWQgRW5x
dWV1ZShjb25zdCBFJiBlbGVtZW50KTsKLSAgRSogRGVxdWV1ZSgpOyAvLyBSZXR1cm5zIE5VTEwg
aWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgotICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAuLi4KLX07
Ci1gYGAKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3MuIEJ5IGNvbnZlbnRpb24sIHlv
dSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQotYEZvb1Rlc3RgIHdoZXJlIGBGb29gIGlzIHRoZSBj
bGFzcyBiZWluZyB0ZXN0ZWQuCi1gYGAKLWNsYXNzIFF1ZXVlVGVzdCA6IHB1YmxpYyA6OnRlc3Rp
bmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIHEx
Xy5FbnF1ZXVlKDEpOwotICAgIHEyXy5FbnF1ZXVlKDIpOwotICAgIHEyXy5FbnF1ZXVlKDMpOwot
ICB9Ci0KLSAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30KLQotICBRdWV1ZTxpbnQ+IHEw
XzsKLSAgUXVldWU8aW50PiBxMV87Ci0gIFF1ZXVlPGludD4gcTJfOwotfTsKLWBgYAotCi1JbiB0
aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNpbmNlIHdlIGRvbid0IGhhdmUg
dG8gY2xlYW4gdXAgYWZ0ZXIKLWVhY2ggdGVzdCwgb3RoZXIgdGhhbiB3aGF0J3MgYWxyZWFkeSBk
b25lIGJ5IHRoZSBkZXN0cnVjdG9yLgotCi1Ob3cgd2UnbGwgd3JpdGUgdGVzdHMgdXNpbmcgYFRF
U1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgotYGBgCi1URVNUX0YoUXVldWVUZXN0LCBJc0VtcHR5
SW5pdGlhbGx5KSB7Ci0gIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgpKTsKLX0KLQotVEVTVF9GKFF1
ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7Ci0gIGludCogbiA9IHEwXy5EZXF1ZXVlKCk7Ci0gIEVY
UEVDVF9FUShOVUxMLCBuKTsKLQotICBuID0gcTFfLkRlcXVldWUoKTsKLSAgQVNTRVJUX1RSVUUo
biAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDEsICpuKTsKLSAgRVhQRUNUX0VRKDAsIHExXy5zaXpl
KCkpOwotICBkZWxldGUgbjsKLQotICBuID0gcTJfLkRlcXVldWUoKTsKLSAgQVNTRVJUX1RSVUUo
biAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDIsICpuKTsKLSAgRVhQRUNUX0VRKDEsIHEyXy5zaXpl
KCkpOwotICBkZWxldGUgbjsKLX0KLWBgYAotCi1UaGUgYWJvdmUgdXNlcyBib3RoIGBBU1NFUlRf
KmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUgb2YgdGh1bWIgaXMKLXRvIHVz
ZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8gY29udGludWUgdG8gcmV2ZWFs
IG1vcmUgZXJyb3JzCi1hZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUsIGFuZCB1c2UgYEFTU0VS
VF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQotZG9lc24ndCBtYWtlIHNlbnNlLiBG
b3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhlIGBEZXF1ZXVlYCB0ZXN0IGlz
Ci1gQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQgdG8gZGVyZWZlcmVuY2UgdGhl
IHBvaW50ZXIgYG5gIGxhdGVyLAotd2hpY2ggd291bGQgbGVhZCB0byBhIHNlZ2ZhdWx0IHdoZW4g
YG5gIGlzIGBOVUxMYC4KLQotV2hlbiB0aGVzZSB0ZXN0cyBydW4sIHRoZSBmb2xsb3dpbmcgaGFw
cGVuczoKLSAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBRdWV1ZVRlc3RgIG9iamVjdCAo
bGV0J3MgY2FsbCBpdCBgdDFgICkuCi0gIDEuIGB0MS5TZXRVcCgpYCBpbml0aWFsaXplcyBgdDFg
IC4KLSAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRpYWxseWAgKSBydW5zIG9uIGB0
MWAgLgotICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFmdGVyIHRoZSB0ZXN0IGZpbmlz
aGVzLgotICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCi0gIDEuIFRoZSBhYm92ZSBzdGVwcyBhcmUg
cmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3QsIHRoaXMgdGltZSBydW5uaW5n
IHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRv
d3MsIE1hYy4KLQotX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0aWNhbGx5IHNhdmVzIGFsbCBf
R29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0Ci1vYmplY3QgaXMgY29uc3RydWN0ZWQsIGFu
ZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4KLQotIyBJbnZva2luZyB0aGUg
VGVzdHMgIwotCi1gVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBsaWNpdGx5IHJlZ2lzdGVyIHRo
ZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ugd2l0aCBtYW55IG90aGVyIEMr
KyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRvIHJlLWxpc3QgYWxsIHlvdXIg
ZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KLQotQWZ0ZXIgZGVmaW5pbmcgeW91
ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxMX1RFU1RTKClgICwgd2hpY2gg
cmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vzc2Z1bCwgb3IgYDFgIG90aGVy
d2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMgX2FsbCB0ZXN0c18gaW4geW91
ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcywgb3Ig
ZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgotCi1XaGVuIGludm9rZWQsIHRoZSBgUlVOX0FM
TF9URVNUUygpYCBtYWNybzoKLSAgMS4gU2F2ZXMgdGhlIHN0YXRlIG9mIGFsbCAgR29vZ2xlIFRl
c3QgZmxhZ3MuCi0gIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUgb2JqZWN0IGZvciB0aGUgZmly
c3QgdGVzdC4KLSAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRVcCgpYC4KLSAgMS4gUnVucyB0
aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCi0gIDEuIENsZWFucyB1cCB0aGUgZml4dHVy
ZSB2aWEgYFRlYXJEb3duKClgLgotICAxLiBEZWxldGVzIHRoZSBmaXh0dXJlLgotICAxLiBSZXN0
b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzLgotICAxLiBSZXBlYXRzIHRo
ZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwgYWxsIHRlc3RzIGhhdmUgcnVu
LgotCi1JbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdzIGNvbnN0cnVjdG9yIGdlbmVy
YXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KLXN0ZXAgMiwgdGhlcmUgaXMgbm8gcG9pbnQgZm9yIHN0
ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2ltaWxhcmx5LAotaWYgc3RlcCAz
IGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxsIGJlIHNraXBwZWQuCi0KLV9J
bXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUgb2YgYFJVTl9B
TExfVEVTVFMoKWAsIG9yIGBnY2NgCi13aWxsIGdpdmUgeW91IGEgY29tcGlsZXIgZXJyb3IuIFRo
ZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhlCi1hdXRvbWF0ZWQgdGVzdGlu
ZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFzIHBhc3NlZCBiYXNlZCBvbiBp
dHMKLWV4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJyIG91dHB1dDsgdGh1cyB5b3Vy
IGBtYWluKClgIGZ1bmN0aW9uIG11c3QKLXJldHVybiB0aGUgdmFsdWUgb2YgYFJVTl9BTExfVEVT
VFMoKWAuCi0KLUFsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FMTF9URVNUUygpYCBvbmx5ICoq
b25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCi1jb25mbGljdHMgd2l0aCBzb21lIGFk
dmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVhZC1zYWZlIGRlYXRoCi10ZXN0
cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBX
aW5kb3dzLCBNYWMuCi0KLSMgV3JpdGluZyB0aGUgbWFpbigpIEZ1bmN0aW9uICMKLQotWW91IGNh
biBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6Ci1gYGAKLSNpbmNsdWRlICJ0aGlzL3BhY2th
Z2UvZm9vLmgiCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotbmFtZXNwYWNlIHsKLQotLy8g
VGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgotY2xhc3MgRm9vVGVzdCA6IHB1Ymxp
YyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8gWW91IGNhbiByZW1vdmUgYW55
IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBpdHMgYm9keQotICAvLyBpcyBl
bXB0eS4KLQotICBGb29UZXN0KCkgewotICAgIC8vIFlvdSBjYW4gZG8gc2V0LXVwIHdvcmsgZm9y
IGVhY2ggdGVzdCBoZXJlLgotICB9Ci0KLSAgdmlydHVhbCB+Rm9vVGVzdCgpIHsKLSAgICAvLyBZ
b3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRocm93IGV4Y2VwdGlvbnMgaGVy
ZS4KLSAgfQotCi0gIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBhcmUgbm90
IGVub3VnaCBmb3Igc2V0dGluZyB1cAotICAvLyBhbmQgY2xlYW5pbmcgdXAgZWFjaCB0ZXN0LCB5
b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRl
ciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0Ci0gICAgLy8gYmVmb3JlIGVhY2ggdGVzdCkuCi0gIH0K
LQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgLy8gQ29kZSBoZXJlIHdpbGwgYmUg
Y2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmlnaHQKLSAgICAvLyBiZWZvcmUg
dGhlIGRlc3RydWN0b3IpLgotICB9Ci0KLSAgLy8gT2JqZWN0cyBkZWNsYXJlZCBoZXJlIGNhbiBi
ZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZvciBGb28uCi19OwotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFiYy4KLVRFU1RfRihGb29UZXN0
LCBNZXRob2RCYXJEb2VzQWJjKSB7Ci0gIGNvbnN0IHN0cmluZyBpbnB1dF9maWxlcGF0aCA9ICJ0
aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsKLSAgY29uc3Qgc3RyaW5nIG91
dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlvdXRwdXRmaWxlLmRhdCI7
Ci0gIEZvbyBmOwotICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRfZmlsZXBhdGgsIG91dHB1dF9m
aWxlcGF0aCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEZvbyBkb2VzIFh5ei4KLVRFU1RfRihGb29U
ZXN0LCBEb2VzWHl6KSB7Ci0gIC8vIEV4ZXJjaXNlcyB0aGUgWHl6IGZlYXR1cmUgb2YgRm9vLgot
fQotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7
Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwotfQotYGBgCi0KLVRoZSBgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgp
YCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3IgR29vZ2xlCi1UZXN0IGZsYWdz
LCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhpcyBhbGxvd3MgdGhlIHVzZXIg
dG8gY29udHJvbCBhCi10ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2aWEgdmFyaW91cyBmbGFncywg
d2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKFYxXzVfQWR2YW5jZWRHdWlkZS5t
ZCkuCi1Zb3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExf
VEVTVFMoKWAsIG9yIHRoZSBmbGFncwotd29uJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCi0K
LU9uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdvcmtzIHdpdGggd2lkZSBzdHJp
bmdzLCBzbyBpdCBjYW4gYmUgdXNlZAotaW4gcHJvZ3JhbXMgY29tcGlsZWQgaW4gYFVOSUNPREVg
IG1vZGUgYXMgd2VsbC4KLQotQnV0IG1heWJlIHlvdSB0aGluayB0aGF0IHdyaXRpbmcgYWxsIHRo
b3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8gV2UgYWdyZWUgd2l0aCB5b3Ug
Y29tcGxldGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUgVGVzdCBwcm92aWRlcyBhIGJhc2ljIGlt
cGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3VyIG5lZWRzLCB0aGVuIGp1c3Qg
bGluayB5b3VyIHRlc3Qgd2l0aCBndGVzdFxfbWFpbiBsaWJyYXJ5IGFuZCB5b3UgYXJlIGdvb2Qg
dG8gZ28uCi0KLSMjIEltcG9ydGFudCBub3RlIGZvciBWaXN1YWwgQysrIHVzZXJzICMjCi1JZiB5
b3UgcHV0IHlvdXIgdGVzdHMgaW50byBhIGxpYnJhcnkgYW5kIHlvdXIgYG1haW4oKWAgZnVuY3Rp
b24gaXMgaW4gYSBkaWZmZXJlbnQgbGlicmFyeSBvciBpbiB5b3VyIC5leGUgZmlsZSwgdGhvc2Ug
dGVzdHMgd2lsbCBub3QgcnVuLiBUaGUgcmVhc29uIGlzIGEgW2J1Z10oaHR0cHM6Ly9jb25uZWN0
Lm1pY3Jvc29mdC5jb20vZmVlZGJhY2svdmlld2ZlZWRiYWNrLmFzcHg/RmVlZGJhY2tJRD0yNDQ0
MTAmc2l0ZWlkPTIxMCkgaW4gVmlzdWFsIEMrKy4gV2hlbiB5b3UgZGVmaW5lIHlvdXIgdGVzdHMs
IEdvb2dsZSBUZXN0IGNyZWF0ZXMgY2VydGFpbiBzdGF0aWMgb2JqZWN0cyB0byByZWdpc3RlciB0
aGVtLiBUaGVzZSBvYmplY3RzIGFyZSBub3QgcmVmZXJlbmNlZCBmcm9tIGVsc2V3aGVyZSBidXQg
dGhlaXIgY29uc3RydWN0b3JzIGFyZSBzdGlsbCBzdXBwb3NlZCB0byBydW4uIFdoZW4gVmlzdWFs
IEMrKyBsaW5rZXIgc2VlcyB0aGF0IG5vdGhpbmcgaW4gdGhlIGxpYnJhcnkgaXMgcmVmZXJlbmNl
ZCBmcm9tIG90aGVyIHBsYWNlcyBpdCB0aHJvd3MgdGhlIGxpYnJhcnkgb3V0LiBZb3UgaGF2ZSB0
byByZWZlcmVuY2UgeW91ciBsaWJyYXJ5IHdpdGggdGVzdHMgZnJvbSB5b3VyIG1haW4gcHJvZ3Jh
bSB0byBrZWVwIHRoZSBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGl0LiBIZXJlIGlzIGhvdyB0byBk
byBpdC4gU29tZXdoZXJlIGluIHlvdXIgbGlicmFyeSBjb2RlIGRlY2xhcmUgYSBmdW5jdGlvbjoK
LWBgYAotX19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBQdWxsSW5NeUxpYnJhcnkoKSB7IHJldHVy
biAwOyB9Ci1gYGAKLUlmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbiBhIHN0YXRpYyBsaWJyYXJ5IChu
b3QgRExMKSB0aGVuIGBfX2RlY2xzcGVjKGRsbGV4cG9ydClgIGlzIG5vdCByZXF1aXJlZC4gTm93
LCBpbiB5b3VyIG1haW4gcHJvZ3JhbSwgd3JpdGUgYSBjb2RlIHRoYXQgaW52b2tlcyB0aGF0IGZ1
bmN0aW9uOgotYGBgCi1pbnQgUHVsbEluTXlMaWJyYXJ5KCk7Ci1zdGF0aWMgaW50IGR1bW15ID0g
UHVsbEluTXlMaWJyYXJ5KCk7Ci1gYGAKLVRoaXMgd2lsbCBrZWVwIHlvdXIgdGVzdHMgcmVmZXJl
bmNlZCBhbmQgd2lsbCBtYWtlIHRoZW0gcmVnaXN0ZXIgdGhlbXNlbHZlcyBhdCBzdGFydHVwLgot
Ci1JbiBhZGRpdGlvbiwgaWYgeW91IGRlZmluZSB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJh
cnksIGFkZCBgL09QVDpOT1JFRmAgdG8geW91ciBtYWluIHByb2dyYW0gbGlua2VyIG9wdGlvbnMu
IElmIHlvdSB1c2UgTVNWQysrIElERSwgZ28gdG8geW91ciAuZXhlIHByb2plY3QgcHJvcGVydGll
cy9Db25maWd1cmF0aW9uIFByb3BlcnRpZXMvTGlua2VyL09wdGltaXphdGlvbiBhbmQgc2V0IFJl
ZmVyZW5jZXMgc2V0dGluZyB0byBgS2VlcCBVbnJlZmVyZW5jZWQgRGF0YSAoL09QVDpOT1JFRilg
LiBUaGlzIHdpbGwga2VlcCBWaXN1YWwgQysrIGxpbmtlciBmcm9tIGRpc2NhcmRpbmcgaW5kaXZp
ZHVhbCBzeW1ib2xzIGdlbmVyYXRlZCBieSB5b3VyIHRlc3RzIGZyb20gdGhlIGZpbmFsIGV4ZWN1
dGFibGUuCi0KLVRoZXJlIGlzIG9uZSBtb3JlIHBpdGZhbGwsIHRob3VnaC4gSWYgeW91IHVzZSBH
b29nbGUgVGVzdCBhcyBhIHN0YXRpYyBsaWJyYXJ5ICh0aGF0J3MgaG93IGl0IGlzIGRlZmluZWQg
aW4gZ3Rlc3QudmNwcm9qKSB5b3VyIHRlc3RzIG11c3QgYWxzbyByZXNpZGUgaW4gYSBzdGF0aWMg
bGlicmFyeS4gSWYgeW91IGhhdmUgdG8gaGF2ZSB0aGVtIGluIGEgRExMLCB5b3UgX211c3RfIGNo
YW5nZSBHb29nbGUgVGVzdCB0byBidWlsZCBpbnRvIGEgRExMIGFzIHdlbGwuIE90aGVyd2lzZSB5
b3VyIHRlc3RzIHdpbGwgbm90IHJ1biBjb3JyZWN0bHkgb3Igd2lsbCBub3QgcnVuIGF0IGFsbC4g
VGhlIGdlbmVyYWwgY29uY2x1c2lvbiBoZXJlIGlzOiBtYWtlIHlvdXIgbGlmZSBlYXNpZXIgLSBk
byBub3Qgd3JpdGUgeW91ciB0ZXN0cyBpbiBsaWJyYXJpZXMhCi0KLSMgV2hlcmUgdG8gR28gZnJv
bSBIZXJlICMKLQotQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbGVhcm5lZCB0aGUgR29vZ2xlIFRl
c3QgYmFzaWNzLiBZb3UgY2FuIHN0YXJ0IHdyaXRpbmcKLWFuZCBydW5uaW5nIEdvb2dsZSBUZXN0
IHRlc3RzLCByZWFkIHNvbWUgW3NhbXBsZXNdKFNhbXBsZXMubWQpLCBvciBjb250aW51ZSB3aXRo
Ci1bQWR2YW5jZWRHdWlkZV0oVjFfNV9BZHZhbmNlZEd1aWRlLm1kKSwgd2hpY2ggZGVzY3JpYmVz
IG1hbnkgbW9yZSB1c2VmdWwgR29vZ2xlIFRlc3QgZmVhdHVyZXMuCi0KLSMgS25vd24gTGltaXRh
dGlvbnMgIwotCi1Hb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSB0aHJlYWQtc2FmZS4gIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcwotdGhyZWFkLXNhZmUgb24gc3lzdGVtcyB3aGVyZSB0aGUgYHB0
aHJlYWRzYCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4gIEl0Ci1pcyBjdXJyZW50bHkgX3Vuc2FmZV8g
dG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgZnJvbSB0d28gdGhyZWFkcwotY29uY3VycmVu
dGx5IG9uIG90aGVyIHN5c3RlbXMgKGUuZy4gV2luZG93cykuICBJbiBtb3N0IHRlc3RzIHRoaXMg
aXMKLW5vdCBhbiBpc3N1ZSBhcyB1c3VhbGx5IHRoZSBhc3NlcnRpb25zIGFyZSBkb25lIGluIHRo
ZSBtYWluIHRocmVhZC4gSWYKLXlvdSB3YW50IHRvIGhlbHAsIHlvdSBjYW4gdm9sdW50ZWVyIHRv
IGltcGxlbWVudCB0aGUgbmVjZXNzYXJ5Ci1zeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBpbiBg
Z3Rlc3QtcG9ydC5oYCBmb3IgeW91ciBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X1B1bXBNYW51
YWwubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NzEwNzg5ZGRkMS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNV9QdW1wTWFudWFsLm1kCisrKyAvZGV2
L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLQotCi08Yj5QPC9iPnVtcCBpcyA8Yj5VPC9iPnNlZnVs
IGZvciA8Yj5NPC9iPmV0YSA8Yj5QPC9iPnJvZ3JhbW1pbmcuCi0KLSMgVGhlIFByb2JsZW0gIwot
Ci1UZW1wbGF0ZSBhbmQgbWFjcm8gbGlicmFyaWVzIG9mdGVuIG5lZWQgdG8gZGVmaW5lIG1hbnkg
Y2xhc3NlcywKLWZ1bmN0aW9ucywgb3IgbWFjcm9zIHRoYXQgdmFyeSBvbmx5IChvciBhbG1vc3Qg
b25seSkgaW4gdGhlIG51bWJlciBvZgotYXJndW1lbnRzIHRoZXkgdGFrZS4gSXQncyBhIGxvdCBv
ZiByZXBldGl0aXZlLCBtZWNoYW5pY2FsLCBhbmQKLWVycm9yLXByb25lIHdvcmsuCi0KLVZhcmlh
ZGljIHRlbXBsYXRlcyBhbmQgdmFyaWFkaWMgbWFjcm9zIGNhbiBhbGxldmlhdGUgdGhlIHByb2Js
ZW0uCi1Ib3dldmVyLCB3aGlsZSBib3RoIGFyZSBiZWluZyBjb25zaWRlcmVkIGJ5IHRoZSBDKysg
Y29tbWl0dGVlLCBuZWl0aGVyCi1pcyBpbiB0aGUgc3RhbmRhcmQgeWV0IG9yIHdpZGVseSBzdXBw
b3J0ZWQgYnkgY29tcGlsZXJzLiAgVGh1cyB0aGV5Ci1hcmUgb2Z0ZW4gbm90IGEgZ29vZCBjaG9p
Y2UsIGVzcGVjaWFsbHkgd2hlbiB5b3VyIGNvZGUgbmVlZHMgdG8gYmUKLXBvcnRhYmxlLiBBbmQg
dGhlaXIgY2FwYWJpbGl0aWVzIGFyZSBzdGlsbCBsaW1pdGVkLgotCi1BcyBhIHJlc3VsdCwgYXV0
aG9ycyBvZiBzdWNoIGxpYnJhcmllcyBvZnRlbiBoYXZlIHRvIHdyaXRlIHNjcmlwdHMgdG8KLWdl
bmVyYXRlIHRoZWlyIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCBvdXIgZXhwZXJpZW5jZSBpcyB0
aGF0IGl0J3MKLXRlZGlvdXMgdG8gd3JpdGUgc3VjaCBzY3JpcHRzLCB3aGljaCB0ZW5kIHRvIHJl
ZmxlY3QgdGhlIHN0cnVjdHVyZSBvZgotdGhlIGdlbmVyYXRlZCBjb2RlIHBvb3JseSBhbmQgYXJl
IG9mdGVuIGhhcmQgdG8gcmVhZCBhbmQgZWRpdC4gRm9yCi1leGFtcGxlLCBhIHNtYWxsIGNoYW5n
ZSBuZWVkZWQgaW4gdGhlIGdlbmVyYXRlZCBjb2RlIG1heSByZXF1aXJlIHNvbWUKLW5vbi1pbnR1
aXRpdmUsIG5vbi10cml2aWFsIGNoYW5nZXMgaW4gdGhlIHNjcmlwdC4gVGhpcyBpcyBlc3BlY2lh
bGx5Ci1wYWluZnVsIHdoZW4gZXhwZXJpbWVudGluZyB3aXRoIHRoZSBjb2RlLgotCi0jIE91ciBT
b2x1dGlvbiAjCi0KLVB1bXAgKGZvciBQdW1wIGlzIFVzZWZ1bCBmb3IgTWV0YSBQcm9ncmFtbWlu
ZywgUHJldHR5IFVzZWZ1bCBmb3IgTWV0YQotUHJvZ3JhbW1pbmcsIG9yIFByYWN0aWNhbCBVdGls
aXR5IGZvciBNZXRhIFByb2dyYW1taW5nLCB3aGljaGV2ZXIgeW91Ci1wcmVmZXIpIGlzIGEgc2lt
cGxlIG1ldGEtcHJvZ3JhbW1pbmcgdG9vbCBmb3IgQysrLiBUaGUgaWRlYSBpcyB0aGF0IGEKLXBy
b2dyYW1tZXIgd3JpdGVzIGEgYGZvby5wdW1wYCBmaWxlIHdoaWNoIGNvbnRhaW5zIEMrKyBjb2Rl
IHBsdXMgbWV0YQotY29kZSB0aGF0IG1hbmlwdWxhdGVzIHRoZSBDKysgY29kZS4gVGhlIG1ldGEg
Y29kZSBjYW4gaGFuZGxlCi1pdGVyYXRpb25zIG92ZXIgYSByYW5nZSwgbmVzdGVkIGl0ZXJhdGlv
bnMsIGxvY2FsIG1ldGEgdmFyaWFibGUKLWRlZmluaXRpb25zLCBzaW1wbGUgYXJpdGhtZXRpYywg
YW5kIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zLiBZb3UgY2FuCi12aWV3IGl0IGFzIGEgc21hbGwg
RG9tYWluLVNwZWNpZmljIExhbmd1YWdlLiBUaGUgbWV0YSBsYW5ndWFnZSBpcwotZGVzaWduZWQg
dG8gYmUgbm9uLWludHJ1c2l2ZSAocy50LiBpdCB3b24ndCBjb25mdXNlIEVtYWNzJyBDKysgbW9k
ZSwKLWZvciBleGFtcGxlKSBhbmQgY29uY2lzZSwgbWFraW5nIFB1bXAgY29kZSBpbnR1aXRpdmUg
YW5kIGVhc3kgdG8KLW1haW50YWluLgotCi0jIyBIaWdobGlnaHRzICMjCi0KLSAgKiBUaGUgaW1w
bGVtZW50YXRpb24gaXMgaW4gYSBzaW5nbGUgUHl0aG9uIHNjcmlwdCBhbmQgdGh1cyB1bHRyYSBw
b3J0YWJsZTogbm8gYnVpbGQgb3IgaW5zdGFsbGF0aW9uIGlzIG5lZWRlZCBhbmQgaXQgd29ya3Mg
Y3Jvc3MgcGxhdGZvcm1zLgotICAqIFB1bXAgdHJpZXMgdG8gYmUgc21hcnQgd2l0aCByZXNwZWN0
IHRvIFtHb29nbGUncyBzdHlsZSBndWlkZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2ds
ZS1zdHlsZWd1aWRlLyk6IGl0IGJyZWFrcyBsb25nIGxpbmVzIChlYXN5IHRvIGhhdmUgd2hlbiB0
aGV5IGFyZSBnZW5lcmF0ZWQpIGF0IGFjY2VwdGFibGUgcGxhY2VzIHRvIGZpdCB3aXRoaW4gODAg
Y29sdW1ucyBhbmQgaW5kZW50IHRoZSBjb250aW51YXRpb24gbGluZXMgY29ycmVjdGx5LgotICAq
IFRoZSBmb3JtYXQgaXMgaHVtYW4tcmVhZGFibGUgYW5kIG1vcmUgY29uY2lzZSB0aGFuIFhNTC4K
LSAgKiBUaGUgZm9ybWF0IHdvcmtzIHJlbGF0aXZlbHkgd2VsbCB3aXRoIEVtYWNzJyBDKysgbW9k
ZS4KLQotIyMgRXhhbXBsZXMgIyMKLQotVGhlIGZvbGxvd2luZyBQdW1wIGNvZGUgKHdoZXJlIG1l
dGEga2V5d29yZHMgc3RhcnQgd2l0aCBgJGAsIGBbW2AgYW5kIGBdXWAgYXJlIG1ldGEgYnJhY2tl
dHMsIGFuZCBgJCRgIHN0YXJ0cyBhIG1ldGEgY29tbWVudCB0aGF0IGVuZHMgd2l0aCB0aGUgbGlu
ZSk6Ci0KLWBgYAotJHZhciBuID0gMyAgICAgJCQgRGVmaW5lcyBhIG1ldGEgdmFyaWFibGUgbi4K
LSRyYW5nZSBpIDAuLm4gICQkIERlY2xhcmVzIHRoZSByYW5nZSBvZiBtZXRhIGl0ZXJhdG9yIGkg
KGluY2x1c2l2ZSkuCi0kZm9yIGkgW1sKLSAgICAgICAgICAgICAgICQkIE1ldGEgbG9vcC4KLS8v
IEZvbyRpIGRvZXMgYmxhaCBmb3IgJGktYXJ5IHByZWRpY2F0ZXMuCi0kcmFuZ2UgaiAxLi5pCi10
ZW1wbGF0ZSA8c2l6ZV90IE4gJGZvciBqIFtbLCB0eXBlbmFtZSBBJGpdXT4KLWNsYXNzIEZvbyRp
IHsKLSRpZiBpID09IDAgW1sKLSAgYmxhaCBhOwotXV0gJGVsaWYgaSA8PSAyIFtbCi0gIGJsYWgg
YjsKLV1dICRlbHNlIFtbCi0gIGJsYWggYzsKLV1dCi19OwotCi1dXQotYGBgCi0KLXdpbGwgYmUg
dHJhbnNsYXRlZCBieSB0aGUgUHVtcCBjb21waWxlciB0bzoKLQotYGBgCi0vLyBGb28wIGRvZXMg
YmxhaCBmb3IgMC1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNsYXNzIEZv
bzAgewotICBibGFoIGE7Ci19OwotCi0vLyBGb28xIGRvZXMgYmxhaCBmb3IgMS1hcnkgcHJlZGlj
YXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTE+Ci1jbGFzcyBGb28xIHsKLSAg
YmxhaCBiOwotfTsKLQotLy8gRm9vMiBkb2VzIGJsYWggZm9yIDItYXJ5IHByZWRpY2F0ZXMuCi10
ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLWNsYXNzIEZvbzIg
ewotICBibGFoIGI7Ci19OwotCi0vLyBGb28zIGRvZXMgYmxhaCBmb3IgMy1hcnkgcHJlZGljYXRl
cy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFt
ZSBBMz4KLWNsYXNzIEZvbzMgewotICBibGFoIGM7Ci19OwotYGBgCi0KLUluIGFub3RoZXIgZXhh
bXBsZSwKLQotYGBgCi0kcmFuZ2UgaSAxLi5uCi1GdW5jKCRmb3IgaSArIFtbYSRpXV0pOwotJCQg
VGhlIHRleHQgYmV0d2VlbiBpIGFuZCBbWyBpcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gaXRlcmF0
aW9ucy4KLWBgYAotCi13aWxsIGdlbmVyYXRlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzICh3
aXRob3V0IHRoZSBjb21tZW50cyksIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYG5gOgotCi1g
YGAKLUZ1bmMoKTsgICAgICAgICAgICAgIC8vIElmIG4gaXMgMC4KLUZ1bmMoYTEpOyAgICAgICAg
ICAgIC8vIElmIG4gaXMgMS4KLUZ1bmMoYTEgKyBhMik7ICAgICAgIC8vIElmIG4gaXMgMi4KLUZ1
bmMoYTEgKyBhMiArIGEzKTsgIC8vIElmIG4gaXMgMy4KLS8vIEFuZCBzbyBvbi4uLgotYGBgCi0K
LSMjIENvbnN0cnVjdHMgIyMKLQotV2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGEgcHJvZ3Jh
bW1pbmcgY29uc3RydWN0czoKLQotfCBgJHZhciBpZCA9IGV4cGAgfCBEZWZpbmVzIGEgbmFtZWQg
Y29uc3RhbnQgdmFsdWUuIGAkaWRgIGlzIHZhbGlkIHV0aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVu
dCBtZXRhIGxleGljYWwgYmxvY2suIHwKLXw6LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18ICRyYW5nZSBpZCBleHAuLmV4cCB8IFNldHMg
dGhlIHJhbmdlIG9mIGFuIGl0ZXJhdGlvbiB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBp
biBtdWx0aXBsZSBsb29wcyBsYXRlci4gICAgICAgICAgfAotfCAkZm9yIGlkIHNlcCBbW2NvZGUg
XSgubWQpXSB8IEl0ZXJhdGlvbi4gVGhlIHJhbmdlIG9mIGBpZGAgbXVzdCBoYXZlIGJlZW4gZGVm
aW5lZCBlYXJsaWVyLiBgJGlkYCBpcyB2YWxpZCBpbiBgY29kZWAuICAgICAgICAgfAotfCBgJCgk
KWAgICAgICAgICAgfCBHZW5lcmF0ZXMgYSBzaW5nbGUgYCRgIGNoYXJhY3Rlci4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwg
YCRpZGAgICAgICAgICAgIHwgVmFsdWUgb2YgdGhlIG5hbWVkIGNvbnN0YW50IG9yIGl0ZXJhdGlv
biB2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
Ci18IGAkKGV4cClgICAgICAgICB8IFZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAotfCBgJGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoYCB8IENvbmRpdGlvbmFsLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgW1sgY29kZSBdXWAgICAgfCBNZXRhIGxleGlj
YWwgYmxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYGNwcF9jb2RlYCAgICAgIHwgUmF3IEMr
KyBjb2RlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkJCBjb21tZW50YCAgICB8IE1l
dGEgY29tbWVudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0qKk5vdGU6KiogVG8gZ2l2
ZSB0aGUgdXNlciBzb21lIGZyZWVkb20gaW4gZm9ybWF0dGluZyB0aGUgUHVtcCBzb3VyY2UKLWNv
ZGUsIFB1bXAgaWdub3JlcyBhIG5ldy1saW5lIGNoYXJhY3RlciBpZiBpdCdzIHJpZ2h0IGFmdGVy
IGAkZm9yIGZvb2AKLW9yIG5leHQgdG8gYFtbYCBvciBgXV1gLiBXaXRob3V0IHRoaXMgcnVsZSB5
b3UnbGwgb2Z0ZW4gYmUgZm9yY2VkIHRvIHdyaXRlCi12ZXJ5IGxvbmcgbGluZXMgdG8gZ2V0IHRo
ZSBkZXNpcmVkIG91dHB1dC4gVGhlcmVmb3JlIHNvbWV0aW1lcyB5b3UgbWF5Ci1uZWVkIHRvIGlu
c2VydCBhbiBleHRyYSBuZXctbGluZSBpbiBzdWNoIHBsYWNlcyBmb3IgYSBuZXctbGluZSB0byBz
aG93Ci11cCBpbiB5b3VyIG91dHB1dC4KLQotIyMgR3JhbW1hciAjIwotCi1gYGAKLWNvZGUgOjo9
IGF0b21pY19jb2RlKgotYXRvbWljX2NvZGUgOjo9ICR2YXIgaWQgPSBleHAKLSAgICB8ICR2YXIg
aWQgPSBbWyBjb2RlIF1dCi0gICAgfCAkcmFuZ2UgaWQgZXhwLi5leHAKLSAgICB8ICRmb3IgaWQg
c2VwIFtbIGNvZGUgXV0KLSAgICB8ICQoJCkKLSAgICB8ICRpZAotICAgIHwgJChleHApCi0gICAg
fCAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFuY2gKLSAgICB8IFtbIGNvZGUgXV0KLSAgICB8
IGNwcF9jb2RlCi1zZXAgOjo9IGNwcF9jb2RlIHwgZW1wdHlfc3RyaW5nCi1lbHNlX2JyYW5jaCA6
Oj0gJGVsc2UgW1sgY29kZSBdXQotICAgIHwgJGVsaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9icmFu
Y2gKLSAgICB8IGVtcHR5X3N0cmluZwotZXhwIDo6PSBzaW1wbGVfZXhwcmVzc2lvbl9pbl9QeXRo
b25fc3ludGF4Ci1gYGAKLQotIyMgQ29kZSAjIwotCi1Zb3UgY2FuIGZpbmQgdGhlIHNvdXJjZSBj
b2RlIG9mIFB1bXAgaW4gW3NjcmlwdHMvcHVtcC5weV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZXRlc3Qvc291cmNlL2Jyb3dzZS90cnVuay9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBz
dGlsbAotdmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNrcyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdo
IGl0IGhhcyBiZWVuCi1zdWNjZXNzZnVsbHkgdXNlZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBh
IGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgotcHJvamVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdo
YXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21lIGhlbHAgb24KLWltcHJvdmluZyBQdW1wLgot
Ci0jIyBSZWFsIEV4YW1wbGVzICMjCi0KLVlvdSBjYW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0
aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0oaHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVz
ZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2thZ2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVz
dFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2dsZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5j
b20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZn
b29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAgVGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1w
YCBnZW5lcmF0ZXMgYGZvby5oYC4KLQotIyMgVGlwcyAjIwotCi0gICogSWYgYSBtZXRhIHZhcmlh
YmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRo
ZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRzIGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1w
bGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUgYEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEu
Ci0gICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1wIHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVh
ayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkgaW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBi
eSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxpbmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBv
ciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMg
bmV3IGxpbmUuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvZG9jcy9WMV81X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzVfWGNv
ZGVHdWlkZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyNGJmNTFiZmM0Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV81X1hjb2RlR3VpZGUubWQKKysr
IC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0KLQotVGhpcyBndWlkZSB3aWxsIGV4cGxhaW4g
aG93IHRvIHVzZSB0aGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlvdXIgWGNvZGUgcHJv
amVjdHMgb24gTWFjIE9TIFguIFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1aWNrbHkgZXhwbGFp
bmluZyB3aGF0IHRvIGRvIGZvciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIgdGhlIHF1aWNrIHN0
YXJ0LCB0aGUgZ3VpZGUgZ29lcyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxhbmF0aW9uIGFib3V0
IGVhY2ggc3RlcC4KLQotIyBRdWljayBTdGFydCAjCi0KLUhlcmUgaXMgdGhlIHF1aWNrIGd1aWRl
IGZvciB1c2luZyBHb29nbGUgVGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3QuCi0KLSAgMS4gRG93
bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBbd2Vic2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNv
bS9wL2dvb2dsZXRlc3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVja291dCBodHRwOi8v
Z29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5
YAotICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUgYGdvb2dsZXRlc3Qt
cmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5IGFuZCBidWlsZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
LgotICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldCBpbiB5b3VyIFhjb2RlIHBy
b2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtlICJVbml0VGVzdHMiCi0gIDEuIEFkZCB0aGUgZ3Rl
c3QuZnJhbWV3b3JrIHRvIHlvdXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRoZSAiTGluayBCaW5h
cnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMiCi0gIDEuIEFkZCB5
b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291cmNlcyIgYnVpbGQg
cGhhc2Ugb2YgIlVuaXRUZXN0cyIKLSAgMS4gRWRpdCB0aGUgIlVuaXRUZXN0cyIgZXhlY3V0YWJs
ZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkICJEWUxEXF9GUkFNRVdPUktc
X1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0byB0aGUgcGF0aCB0byB0aGUgZnJhbWV3b3JrIGNv
bnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yayByZWxhdGl2ZSB0byB0aGUgY29tcGlsZWQgZXhl
Y3V0YWJsZS4KLSAgMS4gQnVpbGQgYW5kIEdvCi0KLVRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZnVy
dGhlciBleHBsYWluIGVhY2ggb2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBpbiBkZXB0aCwgZGVz
Y3JpYmluZyBpbiBtb3JlIGRldGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5jbHVkaW5nIHNvbWUg
dmFyaWF0aW9ucy4KLQotIyBHZXQgdGhlIFNvdXJjZSAjCi0KLUN1cnJlbnRseSwgdGhlIGd0ZXN0
LmZyYW1ld29yayBkaXNjdXNzZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4gYSB0YWdnZWQgcmVs
ZWFzZSBvZiBHb29nbGUgVGVzdCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHRydW5rLiBB
cyBleHBsYWluZWQgYXQgdGhlIEdvb2dsZSBUZXN0IFtzaXRlXShodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xldGVzdC9zb3VyY2UvY2hlY2tvdXQiPnN2biksIHlvdSBjYW4gZ2V0IHRoZSBj
b2RlIGZyb20gYW5vbnltb3VzIFNWTiB3aXRoIHRoaXMgY29tbWFuZDoKLQotYGBgCi1zdm4gY2hl
Y2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0
ZXN0LXJlYWQtb25seQotYGBgCi0KLUFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgd29ya2luZyB3
aXRoIFN1YnZlcnNpb24gaW4geW91ciBvd24gY29kZSBiYXNlLCB5b3UgY2FuIGFkZCBHb29nbGUg
VGVzdCBhcyBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IHRvIHlvdXIgb3duIFN1YnZlcnNpb24gcmVw
b3NpdG9yeS4gQnkgZm9sbG93aW5nIHRoaXMgYXBwcm9hY2gsIGV2ZXJ5b25lIHRoYXQgY2hlY2tz
IG91dCB5b3VyIHN2biByZXBvc2l0b3J5IHdpbGwgYWxzbyByZWNlaXZlIGEgY29weSBvZiBHb29n
bGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJzaW9uLCBpZiB5b3Ugd2lzaCkgd2l0aG91dCBoYXZpbmcg
dG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0bHkuIFRoaXMgbWFrZXMgdGhlIHNldCB1cCBvZiB5b3Vy
IHByb2plY3Qgc2ltcGxlciBhbmQgcmVkdWNlcyB0aGUgY29waWVkIGNvZGUgaW4gdGhlIHJlcG9z
aXRvcnkuCi0KLVRvIHVzZSBgc3ZuOmV4dGVybmFsc2AsIGRlY2lkZSB3aGVyZSB5b3Ugd291bGQg
bGlrZSB0byBoYXZlIHRoZSBleHRlcm5hbCBzb3VyY2UgcmVzaWRlLiBZb3UgbWlnaHQgY2hvb3Nl
IHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291cmNlIGluc2lkZSB0aGUgdHJ1bmssIGJlY2F1c2UgeW91
IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0aGUgYnJhbmNoIHdoZW4geW91IG1ha2UgYSByZWxlYXNl
LiBIb3dldmVyLCBrZWVwaW5nIGl0IG91dHNpZGUgdGhlIHRydW5rIGluIGEgdmVyc2lvbi10YWdn
ZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21ldGhpbmcgbGlrZSBgdGhpcmQtcGFydHkvZ29vZ2xldGVz
dC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0aW9uLiBPbmNlIHRoZSBsb2NhdGlvbiBpcyBlc3RhYmxp
c2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQgc3ZuOmV4dGVybmFscyBfZGlyZWN0b3J5X2AgdG8gc2V0
IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IG9uIGEgZGlyZWN0b3J5IGluIHlvdXIgcmVwb3Np
dG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29uJ3QgY29udGFpbiB0aGUgY29kZSwgYnV0IGJlIGl0cyB2
ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9yeS4KLQotVGhlIGNvbW1hbmQgYHN2biBwcm9wZWRpdGAg
d2lsbCBicmluZyB1cCB5b3VyIFN1YnZlcnNpb24gZWRpdG9yLCBtYWtpbmcgZWRpdGluZyB0aGUg
bG9uZywgKHBvdGVudGlhbGx5IG11bHRpLWxpbmUpIHByb3BlcnR5IHNpbXBsZXIuIFRoaXMgc2Ft
ZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IGEgdGFnZ2VkIGJyYW5jaCwgYnkgdXNp
bmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAoZS5nLiBgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29k
ZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjAuMWApLiBBZGRpdGlvbmFsbHksIHRoZSBzdm46ZXh0
ZXJuYWxzIHByb3BlcnR5IGFsbG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIHBhcnRpY3VsYXIg
cmV2aXNpb24gb2YgdGhlIHRydW5rIHdpdGggdGhlIGAtcl8jI19gIG9wdGlvbiAoZS5nLiBgZXh0
ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IC1yNjAgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5j
b20vc3ZuL3RydW5rYCkuCi0KLUhlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc3ZuOmV4
dGVybmFscyBwcm9wZXJ0aWVzIG9uIGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4gcHJvcGdldGApIG9m
IGEgcHJvamVjdC4gVGhpcyB2YWx1ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBHb29nbGUgVGVzdCBp
bnRvIHRoZSBgdHJ1bmsvZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0L2AgZGlyZWN0b3J5LgotCi1g
YGAKLVtDb21wdXRlcjpzdm5dIHVzZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgdHJ1bmsK
LWV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsKLWBgYAotCi0jIEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlvdXIgUHJvamVjdCAj
Ci0KLVRoZSBuZXh0IHN0ZXAgaXMgdG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IHRvIHlvdXIgb3duIHByb2plY3QuIFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3byBjb21tb24gd2F5
cyBiZWxvdy4KLQotICAqICoqT3B0aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0IHdheSB0byBhZGQg
R29vZ2xlIFRlc3QgdG8geW91ciBvd24gcHJvamVjdCwgaXMgdG8gb3BlbiBndGVzdC54Y29kZXBy
b2ogKGZvdW5kIGluIHRoZSB4Y29kZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29nbGUgVGVzdCB0cnVu
aykgYW5kIGJ1aWxkIHRoZSBmcmFtZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFkZCB0aGUgYnVpbHQg
ZnJhbWV3b3JrIGludG8geW91ciBwcm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5FeGlzdGluZyBGcmFt
ZXdvcmsuLi4iIGZyb20gdGhlIGNvbnRleHQgbWVudSBvciAiUHJvamVjdC0+QWRkLi4uIiBmcm9t
IHRoZSBtYWluIG1lbnUuIFRoZSBndGVzdC5mcmFtZXdvcmsgaXMgcmVsb2NhdGFibGUgYW5kIGNv
bnRhaW5zIHRoZSBoZWFkZXJzIGFuZCBvYmplY3QgY29kZSB0aGF0IHlvdSdsbCBuZWVkIHRvIG1h
a2UgdGVzdHMuIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZlcnkgdGltZSB5b3Ug
dXBncmFkZSBHb29nbGUgVGVzdCBpbiB5b3VyIHByb2plY3QuCi0gICogKipPcHRpb24gMioqIC0t
LSBJZiB5b3UgYXJlIGdvaW5nIHRvIGJlIGxpdmluZyBvZmYgdGhlIHRydW5rIG9mIEdvb2dsZSBU
ZXN0LCBpbmNvcnBvcmF0aW5nIGl0cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5b3VyIHVuaXQgdGVz
dHMgKG9yIGFyZSBhIEdvb2dsZSBUZXN0IGRldmVsb3BlciB5b3Vyc2VsZikuIFlvdSdsbCB3YW50
IHRvIHJlYnVpbGQgdGhlIGZyYW1ld29yayBldmVyeSB0aW1lIHRoZSBzb3VyY2UgdXBkYXRlcy4g
dG8gZG8gdGhpcywgeW91J2xsIG5lZWQgdG8gYWRkIHRoZSBndGVzdC54Y29kZXByb2ogZmlsZSwg
bm90IHRoZSBmcmFtZXdvcmsgaXRzZWxmLCB0byB5b3VyIG93biBYY29kZSBwcm9qZWN0LiBUaGVu
LCBmcm9tIHRoZSBidWlsZCBwcm9kdWN0cyB0aGF0IGFyZSByZXZlYWxlZCBieSB0aGUgcHJvamVj
dCdzIGRpc2Nsb3N1cmUgdHJpYW5nbGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
LCB3aGljaCBjYW4gYmUgYWRkZWQgdG8geW91ciB0YXJnZXRzIChkaXNjdXNzZWQgYmVsb3cpLgot
Ci0jIE1ha2UgYSBUZXN0IFRhcmdldCAjCi0KLVRvIHN0YXJ0IHdyaXRpbmcgdGVzdHMsIG1ha2Ug
YSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldC4gVGhpcyB0YXJnZXQgdGVtcGxhdGUgaXMgYXZhaWxh
YmxlIHVuZGVyIEJTRCwgQ29jb2EsIG9yIENhcmJvbi4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJj
ZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiB0aGUgdGFyZ2V0
LgotCi1OZXh0LCB5b3UnbGwgd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3JrIGluIHR3byBkaWZm
ZXJlbnQgd2F5cywgZGVwZW5kaW5nIHVwb24gd2hpY2ggb3B0aW9uIHlvdSBjaG9zZSBhYm92ZS4K
LQotICAqICoqT3B0aW9uIDEqKiAtLS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBYY29kZSB3aWxsIG5l
ZWQgdG8ga25vdyB0aGF0IHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IHRoZSBndGVzdC5mcmFtZXdv
cmsuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHRoZSAiTGluayBCaW5hcnkgd2l0aCBMaWJy
YXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMgd2lsbCBpbmNsdWRl
IHRoZSBHb29nbGUgVGVzdCBoZWFkZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJjaCBwYXRoLCBhbmQg
d2lsbCB0ZWxsIHRoZSBsaW5rZXIgd2hlcmUgdG8gZmluZCB0aGUgbGlicmFyeS4KLSAgKiAqKk9w
dGlvbiAyKiogLS0tIElmIHlvdXIgd29ya2luZyBvdXQgb2YgdGhlIHRydW5rLCB5b3UnbGwgYWxz
byB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgdG8geW91ciAiTGluayBCaW5hcnkgd2l0aCBM
aWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIEluIGFkZGl0aW9uLCB5
b3UnbGwgIHdhbnQgdG8gYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBkZXBlbmRlbmN5IHRv
IHlvdXIgdW5pdCB0ZXN0IHRhcmdldC4gVGhpcyB3YXksIFhjb2RlIHdpbGwgbWFrZSBzdXJlIHRo
YXQgZ3Rlc3QuZnJhbWV3b3JrIGlzIHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUgeW91ciBidWlsZCB5
b3VyIHRhcmdldC4gRmluYWxseSwgaWYgeW91IGRvbid0IHNoYXJlIGJ1aWxkIGRpcmVjdG9yaWVz
IHdpdGggR29vZ2xlIFRlc3QsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0ZXN0LmZyYW1ld29y
ayBpbnRvIHlvdXIgb3duIGJ1aWxkIHByb2R1Y3RzIGRpcmVjdG9yeSB1c2luZyBhICJSdW4gU2Ny
aXB0IiBidWlsZCBwaGFzZS4KLQotIyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUgUnVuIEVudmlyb25t
ZW50ICMKLQotU2luY2UgdGhlIHVuaXQgdGVzdCBleGVjdXRhYmxlIGlzIGEgc2hlbGwgdG9vbCwg
aXQgZG9lc24ndCBoYXZlIGEgYnVuZGxlIHdpdGggYSBgQ29udGVudHMvRnJhbWV3b3Jrc2AgZGly
ZWN0b3J5LCBpbiB3aGljaCB0byBwbGFjZSBndGVzdC5mcmFtZXdvcmsuIEluc3RlYWQsIHRoZSBk
eW5hbWljIGxpbmtlciBtdXN0IGJlIHRvbGQgYXQgcnVudGltZSB0byBzZWFyY2ggZm9yIHRoZSBm
cmFtZXdvcmsgaW4gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5
IHNldHRpbmcgdGhlICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIGVudmlyb25tZW50IHZhcmlhYmxl
IGluIHRoZSAiRWRpdCBBY3RpdmUgRXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50cyB0YWIsIHVuZGVy
ICJWYXJpYWJsZXMgdG8gYmUgc2V0IGluIHRoZSBlbnZpcm9ubWVudDoiLiBUaGUgcGF0aCBmb3Ig
dGhpcyB2YWx1ZSBpcyB0aGUgcGF0aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIG9mIHRoZSBkaXJl
Y3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgotCi1JZiB5b3UgaGF2ZW4ndCBz
ZXQgdXAgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSCwgY29ycmVjdGx5LCB5b3UgbWlnaHQgZ2V0
IGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0KLWBgYAotW1Nlc3Npb24gc3RhcnRlZCBhdCAyMDA4LTA4
LTE1IDA2OjIzOjU3IC0wNjAwLl0KLSAgZHlsZDogTGlicmFyeSBub3QgbG9hZGVkOiBAbG9hZGVy
X3BhdGgvLi4vRnJhbWV3b3Jrcy9ndGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ndGVzdAotICAg
IFJlZmVyZW5jZWQgZnJvbTogL1VzZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9TYW5kYm94L2d0ZXN0
U2FtcGxlL2J1aWxkL0RlYnVnL1dpZGdldEZyYW1ld29ya1Rlc3QKLSAgICBSZWFzb246IGltYWdl
IG5vdCBmb3VuZAotYGBgCi0KLVRvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBnb3QgdG8gdGhlIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5hbWVkIGluICJSZWZlcmVuY2VkIGZy
b206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92ZS4gVGhlbiwgd2l0aCB0aGUgdGVy
bWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4gVGhhdCBpcyB0aGUgdmFsdWUg
eW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BBVEguCi0KLSMgQnVp
bGQgYW5kIEdvICMKLQotTm93LCB3aGVuIHlvdSBjbGljayAiQnVpbGQgYW5kIEdvIiwgdGhlIHRl
c3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29tZXRoaW5nIGxpa2UgdGhpczoKLQot
YGBgCi1bU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYgMDY6MzY6MTMgLTA2MDAuXQotWz09
PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1d
IEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAyIHRlc3RzIGZy
b20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0Ci1bIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJU
ZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyAgICAgICBPSyBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5U
ZXN0Q29uc3RydWN0b3IKLVsgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENv
bnZlcnNpb24KLVsgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnZlcnNp
b24KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd24KLVs9PT09
PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFTU0VEICBdIDIgdGVz
dHMuCi0KLVRoZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGggc3RhdHVzIDAuICAKLWBgYAotCi0j
IFN1bW1hcnkgIwotCi1Vbml0IHRlc3RpbmcgaXMgYSB2YWx1YWJsZSB3YXkgdG8gZW5zdXJlIHlv
dXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmluZyByYXBpZCBkZXZlbG9wbWVudCBv
ciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpcyBhIGdyZWF0IHVu
aXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3aGljaCBpbnRlZ3JhdGVzIHdlbGwg
d2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfQWR2YW5jZWRHdWlk
ZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9BZHZhbmNlZEd1aWRlLm1kCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3ODg2NGIxNjY3YzEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzZfQWR2YW5jZWRHdWlkZS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDIx
NzggKzAsMCBAQAotCi0KLU5vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1lcl0oVjFfNl9Qcmlt
ZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0ZXN0cwotdXNpbmcgR29vZ2xlIFRlc3Qs
IGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9jdW1lbnQKLXdpbGwg
c2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNvbnN0cnVjdCBjb21w
bGV4Ci1mYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVyZXMsIHJldXNlIGFu
ZCBzcGVlZCB1cCB5b3VyCi10ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlvdXMgZmxhZ3Mgd2l0
aCB5b3VyIHRlc3RzLgotCi0jIE1vcmUgQXNzZXJ0aW9ucyAjCi0KLVRoaXMgc2VjdGlvbiBjb3Zl
cnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25pZmljYW50LAotYXNz
ZXJ0aW9ucy4KLQotIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAjIwotCi1UaGVzZSB0
aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUgb3IgZXhwcmVzc2lv
bi4gSW5zdGVhZCwKLXRoZXkgZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1cmUgZGlyZWN0bHku
IExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Ci1wZXJmb3JtIGEgdGVzdCwgeW91IG1heSBz
dHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlIHRoZW0uCi0KLXwgYFNVQ0NF
RUQoKTtgIHwKLXw6LS0tLS0tLS0tLS0tLXwKLQotR2VuZXJhdGVzIGEgc3VjY2Vzcy4gVGhpcyBk
b2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0IGlzCi1jb25zaWRl
cmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25zIGZhaWwgZHVyaW5n
IGl0cyBleGVjdXRpb24uCi0KLU5vdGU6IGBTVUNDRUVEKClgIGlzIHB1cmVseSBkb2N1bWVudGFy
eSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Ci11c2VyLXZpc2libGUgb3V0cHV0
LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRvIEdvb2dsZSBUZXN0
J3MKLW91dHB1dCBpbiB0aGUgZnV0dXJlLgotCi18IGBGQUlMKCk7YCAgfCBgQUREX0ZBSUxVUkUo
KTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGluZVxfbnVtYmVyX2Ap
O2AgfAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotYEZBSUwoKWAgZ2VuZXJh
dGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFuZCBgQUREX0ZBSUxV
UkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAotZmFpbHVyZS4gVGhlc2UgYXJlIHVzZWZ1bCB3
aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJlc3Npb24sCi1kZXRl
cmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBt
aWdodCB3YW50IHRvIHdyaXRlCi1zb21ldGhpbmcgbGlrZToKLQotYGBgCi1zd2l0Y2goZXhwcmVz
c2lvbikgewotICBjYXNlIDE6IC4uLiBzb21lIGNoZWNrcyAuLi4KLSAgY2FzZSAyOiAuLi4gc29t
ZSBvdGhlciBjaGVja3MKLSAgLi4uCi0gIGRlZmF1bHQ6IEZBSUwoKSA8PCAiV2Ugc2hvdWxkbid0
IGdldCBoZXJlLiI7Ci19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBN
YWMuCi0KLSMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCi0KLVRoZXNlIGFyZSBmb3IgdmVyaWZ5
aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QKLXRocm93KSBhbiBl
eGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoq
Tm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRf
VEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwgYEVYUEVDVF9USFJP
VyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3RhdGVtZW50XyB0aHJv
d3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Ci18IGBBU1NFUlRfQU5ZX1RIUk9X
KGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FOWV9USFJPVyhgX3N0
YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAotfCBgQVNTRVJUX05PX1RIUk9XKGBfc3RhdGVtZW50
X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0YXRlbWVudF9gKTtg
ICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2VwdGlv
biAgICAgICAgICAgIHwKLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJUX1RIUk9XKEZvbyg1KSwg
YmFyX2V4Y2VwdGlvbik7Ci0KLUVYUEVDVF9OT19USFJPVyh7Ci0gIGludCBuID0gNTsKLSAgQmFy
KCZuKTsKLX0pOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjOyBz
aW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIyBQcmVkaWNhdGUgQXNzZXJ0aW9ucyBmb3IgQmV0dGVy
IEVycm9yIE1lc3NhZ2VzICMjCi0KLUV2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0IGhhcyBhIHJpY2gg
c2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCi1jb21wbGV0ZSwgYXMgaXQncyBp
bXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxsIHRoZSBzY2VuYXJp
b3MKLWEgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGltZXMgYSB1c2VyIGhh
cyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCi10byBjaGVjayBhIGNvbXBsZXggZXhwcmVzc2lvbiwg
Zm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9ibGVtCi1vZiBub3Qg
c2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4cHJlc3Npb24sIG1h
a2luZyBpdCBoYXJkIHRvCi11bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4gQXMgYSB3b3JrYXJv
dW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCi1mYWlsdXJlIG1lc3NhZ2Ug
YnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVFKClgLiBIb3dldmVy
LCB0aGlzCi1pcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVzc2lvbiBoYXMgc2lk
ZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bwotZXZhbHVhdGUuCi0KLUdvb2dsZSBUZXN0IGdp
dmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlzIHByb2JsZW06Ci0K
LSMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIwotCi1JZiB5b3UgYWxy
ZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJucyBgYm9vbGAgKG9y
IGEgdHlwZQotdGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYGJvb2xgKSwgeW91
IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCi1hc3NlcnRpb25fIHRvIGdldCB0aGUgZnVuY3Rp
b24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6Ci0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8
ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NF
UlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9QUkVEMShgX3ByZWQx
LCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Ci18IGBBU1NFUlRfUFJF
RDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihgX3ByZWQyLCB2YWwx
LCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRydWUgfAotfCAgLi4u
ICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4uLiAgICAgICAgICB8
Ci0KLUluIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRpY2F0ZSBmdW5jdGlv
biBvciBmdW5jdG9yLCB3aGVyZQotX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUg
aXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcwotaWYgdGhlIHByZWRpY2F0ZSBy
ZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3VtZW50cywgYW5kIGZh
aWxzCi1vdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQgcHJpbnRzIHRoZSB2
YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgotZWl0aGVyIGNhc2UsIHRoZSBhcmd1bWVudHMgYXJl
IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi0KLUhlcmUncyBhbiBleGFtcGxlLiBHaXZlbgotCi1g
YGAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1vbiBkaXZpc29ycyBl
eGNlcHQgMS4KLWJvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsgLi4uIH0KLWNvbnN0
IGludCBhID0gMzsKLWNvbnN0IGludCBiID0gNDsKLWNvbnN0IGludCBjID0gMTA7Ci1gYGAKLQot
dGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEsIGIpO2Agd2lsbCBz
dWNjZWVkLCB3aGlsZSB0aGUKLWFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUs
IGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKLQotPHByZT4KLSFNdXR1YWxseVBy
aW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KLWIgaXMgNDxicj4KLWMgaXMgMTA8YnI+Ci08
L3ByZT4KLQotKipOb3RlczoqKgotCi0gIDEuIElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvciAi
bm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNTRVJUX1BSRUQqYCBv
ciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpc10odjFfNl9GQVEubWQjaXRoZS1jb21w
aWxlci1jb21wbGFpbnMtYWJvdXQtdW5kZWZpbmVkLXJlZmVyZW5jZXMtdG8tc29tZS1zdGF0aWMt
Y29uc3QtbWVtYmVyLXZhcmlhYmxlcy1idXQtaS1kaWQtZGVmaW5lLXRoZW0taW4tdGhlLWNsYXNz
LWJvZHktd2hhdHMtd3JvbmcpIGZvciBob3cgdG8gcmVzb2x2ZSBpdC4KLSAgMS4gQ3VycmVudGx5
IHdlIG9ubHkgcHJvdmlkZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyBvZiBhcml0eSA8PSA1LiBJZiB5
b3UgbmVlZCBhIGhpZ2hlci1hcml0eSBhc3NlcnRpb24sIGxldCB1cyBrbm93LgotCi1fQXZhaWxh
YmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYwotCi0jIyMgVXNpbmcgYSBGdW5jdGlvbiBUaGF0
IFJldHVybnMgYW4gQXNzZXJ0aW9uUmVzdWx0ICMjIwotCi1XaGlsZSBgRVhQRUNUX1BSRUQqKClg
IGFuZCBmcmllbmRzIGFyZSBoYW5keSBmb3IgYSBxdWljayBqb2IsIHRoZQotc3ludGF4IGlzIG5v
dCBzYXRpc2ZhY3Rvcnk6IHlvdSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgbWFjcm9zIGZvcgotZGlm
ZmVyZW50IGFyaXRpZXMsIGFuZCBpdCBmZWVscyBtb3JlIGxpa2UgTGlzcCB0aGFuIEMrKy4gIFRo
ZQotYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBjbGFzcyBzb2x2ZXMgdGhpcyBwcm9ibGVt
LgotCi1BbiBgQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9m
IGFuIGFzc2VydGlvbgotKHdoZXRoZXIgaXQncyBhIHN1Y2Nlc3Mgb3IgYSBmYWlsdXJlLCBhbmQg
YW4gYXNzb2NpYXRlZCBtZXNzYWdlKS4gIFlvdQotY2FuIGNyZWF0ZSBhbiBgQXNzZXJ0aW9uUmVz
dWx0YCB1c2luZyBvbmUgb2YgdGhlc2UgZmFjdG9yeQotZnVuY3Rpb25zOgotCi1gYGAKLW5hbWVz
cGFjZSB0ZXN0aW5nIHsKLQotLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgb2JqZWN0IHRv
IGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwotLy8gc3VjY2VlZGVkLgotQXNzZXJ0aW9u
UmVzdWx0IEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotLy8gUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1
bHQgb2JqZWN0IHRvIGluZGljYXRlIHRoYXQgYW4gYXNzZXJ0aW9uIGhhcwotLy8gZmFpbGVkLgot
QXNzZXJ0aW9uUmVzdWx0IEFzc2VydGlvbkZhaWx1cmUoKTsKLQotfQotYGBgCi0KLVlvdSBjYW4g
dGhlbiB1c2UgdGhlIGA8PGAgb3BlcmF0b3IgdG8gc3RyZWFtIG1lc3NhZ2VzIHRvIHRoZQotYEFz
c2VydGlvblJlc3VsdGAgb2JqZWN0LgotCi1UbyBwcm92aWRlIG1vcmUgcmVhZGFibGUgbWVzc2Fn
ZXMgaW4gQm9vbGVhbiBhc3NlcnRpb25zCi0oZS5nLiBgRVhQRUNUX1RSVUUoKWApLCB3cml0ZSBh
IHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMKLWBBc3NlcnRpb25SZXN1bHRgIGluc3Rl
YWQgb2YgYGJvb2xgLiBGb3IgZXhhbXBsZSwgaWYgeW91IGRlZmluZQotYElzRXZlbigpYCBhczoK
LQotYGBgCi06OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBJc0V2ZW4oaW50IG4pIHsKLSAgaWYg
KChuICUgMikgPT0gMCkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7
Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8
PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotaW5zdGVhZCBvZjoKLQotYGBgCi1ib29sIElzRXZlbihp
bnQgbikgewotICByZXR1cm4gKG4gJSAyKSA9PSAwOwotfQotYGBgCi0KLXRoZSBmYWlsZWQgYXNz
ZXJ0aW9uIGBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDQpKSlgIHdpbGwgcHJpbnQ6Ci0KLTxwcmU+
Ci1WYWx1ZSBvZjogIUlzRXZlbihGaWIoNCkpPGJyPgotQWN0dWFsOiBmYWxzZSAoKjMgaXMgb2Rk
Kik8YnI+Ci1FeHBlY3RlZDogdHJ1ZTxicj4KLTwvcHJlPgotCi1pbnN0ZWFkIG9mIGEgbW9yZSBv
cGFxdWUKLQotPHByZT4KLVZhbHVlIG9mOiAhSXNFdmVuKEZpYig0KSk8YnI+Ci1BY3R1YWw6IGZh
bHNlPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotSWYgeW91IHdhbnQgaW5mb3Jt
YXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFMU0VgCi1hcyB3
ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93ZXIgaW4gdGhl
IHN1Y2Nlc3MKLWNhc2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdlOgotCi1gYGAK
LTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBpZiAoKG4gJSAy
KSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8
ICIgaXMgZXZlbiI7Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotVGhlbiB0aGUgc3RhdGVtZW50IGBF
WFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50Ci0KLTxwcmU+Ci1WYWx1ZSBv
ZjogIUlzRXZlbihGaWIoNikpPGJyPgotQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pPGJyPgotRXhw
ZWN0ZWQ6IGZhbHNlPGJyPgotPC9wcmU+Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93
cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuNC4xLgotCi0jIyMgVXNpbmcgYSBQcmVkaWNhdGUtRm9y
bWF0dGVyICMjIwotCi1JZiB5b3UgZmluZCB0aGUgZGVmYXVsdCBtZXNzYWdlIGdlbmVyYXRlZCBi
eSBgKEFTU0VSVHxFWFBFQ1QpX1BSRUQqYCBhbmQKLWAoQVNTRVJUfEVYUEVDVClfKFRSVUV8RkFM
U0UpYCB1bnNhdGlzZmFjdG9yeSwgb3Igc29tZSBhcmd1bWVudHMgdG8geW91cgotcHJlZGljYXRl
IGRvIG5vdCBzdXBwb3J0IHN0cmVhbWluZyB0byBgb3N0cmVhbWAsIHlvdSBjYW4gaW5zdGVhZCB1
c2UgdGhlCi1mb2xsb3dpbmcgX3ByZWRpY2F0ZS1mb3JtYXR0ZXIgYXNzZXJ0aW9uc18gdG8gX2Z1
bGx5XyBjdXN0b21pemUgaG93IHRoZQotbWVzc2FnZSBpcyBmb3JtYXR0ZWQ6Ci0KLXwgKipGYXRh
bCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAot
fDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0t
LS0tLS18Ci18IGBBU1NFUlRfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTtg
ICAgICAgICB8IGBFWFBFQ1RfUFJFRF9GT1JNQVQxKGBfcHJlZFxfZm9ybWF0MSwgdmFsMV9gKTsg
fCBfcHJlZFxfZm9ybWF0MSh2YWwxKV8gaXMgc3VjY2Vzc2Z1bCB8Ci18IGBBU1NFUlRfUFJFRF9G
T1JNQVQyKGBfcHJlZFxfZm9ybWF0MiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEX0ZP
Uk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBfcHJlZFxfZm9ybWF0Mih2
YWwxLCB2YWwyKV8gaXMgc3VjY2Vzc2Z1bCB8Ci18IGAuLi5gICAgICAgICAgICAgICAgfCBgLi4u
YCAgICAgICAgICAgICAgICAgIHwgYC4uLmAgICAgICAgIHwKLQotVGhlIGRpZmZlcmVuY2UgYmV0
d2VlbiB0aGlzIGFuZCB0aGUgcHJldmlvdXMgdHdvIGdyb3VwcyBvZiBtYWNyb3MgaXMgdGhhdCBp
bnN0ZWFkIG9mCi1hIHByZWRpY2F0ZSwgYChBU1NFUlR8RVhQRUNUKV9QUkVEX0ZPUk1BVCpgIHRh
a2UgYSBfcHJlZGljYXRlLWZvcm1hdHRlcl8KLShfcHJlZFxfZm9ybWF0bl8pLCB3aGljaCBpcyBh
IGZ1bmN0aW9uIG9yIGZ1bmN0b3Igd2l0aCB0aGUgc2lnbmF0dXJlOgotCi1gOjp0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgUHJlZGljYXRlRm9ybWF0dGVybihjb25zdCBjaGFyKiBgX2V4cHIxX2As
IGNvbnN0IGNoYXIqIGBfZXhwcjJfYCwgLi4uIGNvbnN0IGNoYXIqIGBfZXhwcm5fYCwgVDEgYF92
YWwxX2AsIFQyIGBfdmFsMl9gLCAuLi4gVG4gYF92YWxuX2ApO2AKLQotd2hlcmUgX3ZhbDFfLCBf
dmFsMl8sIC4uLiwgYW5kIF92YWxuXyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgcHJlZGljYXRlCi1h
cmd1bWVudHMsIGFuZCBfZXhwcjFfLCBfZXhwcjJfLCAuLi4sIGFuZCBfZXhwcm5fIGFyZSB0aGUg
Y29ycmVzcG9uZGluZwotZXhwcmVzc2lvbnMgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBj
b2RlLiBUaGUgdHlwZXMgYFQxYCwgYFQyYCwgLi4uLCBhbmQKLWBUbmAgY2FuIGJlIGVpdGhlciB2
YWx1ZSB0eXBlcyBvciByZWZlcmVuY2UgdHlwZXMuIEZvciBleGFtcGxlLCBpZiBhbgotYXJndW1l
bnQgaGFzIHR5cGUgYEZvb2AsIHlvdSBjYW4gZGVjbGFyZSBpdCBhcyBlaXRoZXIgYEZvb2Agb3Ig
YGNvbnN0IEZvbyZgLAotd2hpY2hldmVyIGlzIGFwcHJvcHJpYXRlLgotCi1BIHByZWRpY2F0ZS1m
b3JtYXR0ZXIgcmV0dXJucyBhIGA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdGAgb2JqZWN0IHRv
IGluZGljYXRlCi13aGV0aGVyIHRoZSBhc3NlcnRpb24gaGFzIHN1Y2NlZWRlZCBvciBub3QuIFRo
ZSBvbmx5IHdheSB0byBjcmVhdGUgc3VjaCBhbgotb2JqZWN0IGlzIHRvIGNhbGwgb25lIG9mIHRo
ZXNlIGZhY3RvcnkgZnVuY3Rpb25zOgotCi1BcyBhbiBleGFtcGxlLCBsZXQncyBpbXByb3ZlIHRo
ZSBmYWlsdXJlIG1lc3NhZ2UgaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoaWNoIHVzZXMgYEVY
UEVDVF9QUkVEMigpYDoKLQotYGBgCi0vLyBSZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBjb21t
b24gZGl2aXNvciBvZiBtIGFuZCBuLAotLy8gb3IgMSB3aGVuIG0gYW5kIG4gYXJlIG11dHVhbGx5
IHByaW1lLgotaW50IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKGludCBtLCBpbnQgbikgeyAu
Li4gfQotCi0vLyBBIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZm9yIGFzc2VydGluZyB0aGF0IHR3byBp
bnRlZ2VycyBhcmUgbXV0dWFsbHkgcHJpbWUuCi06OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBB
c3NlcnRNdXR1YWxseVByaW1lKGNvbnN0IGNoYXIqIG1fZXhwciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbl9leHByLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG4pIHsKLSAgaWYgKE11
dHVhbGx5UHJpbWUobSwgbikpCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vz
cygpOwotCi0gIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgPDwg
bV9leHByIDw8ICIgYW5kICIgPDwgbl9leHByIDw8ICIgKCIgPDwgbSA8PCAiIGFuZCAiIDw8IG4K
LSAgICAgIDw8ICIpIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsICIgPDwgImFzIHRoZXkgaGF2ZSBh
IGNvbW1vbiBkaXZpc29yICIKLSAgICAgIDw8IFNtYWxsZXN0UHJpbWVDb21tb25EaXZpc29yKG0s
IG4pOwotfQotYGBgCi0KLVdpdGggdGhpcyBwcmVkaWNhdGUtZm9ybWF0dGVyLCB3ZSBjYW4gdXNl
Ci0KLWBgYAotRVhQRUNUX1BSRURfRk9STUFUMihBc3NlcnRNdXR1YWxseVByaW1lLCBiLCBjKTsK
LWBgYAotCi10byBnZW5lcmF0ZSB0aGUgbWVzc2FnZQotCi08cHJlPgotYiBhbmQgYyAoNCBhbmQg
MTApIGFyZSBub3QgbXV0dWFsbHkgcHJpbWUsIGFzIHRoZXkgaGF2ZSBhIGNvbW1vbiBkaXZpc29y
IDIuPGJyPgotPC9wcmU+Ci0KLUFzIHlvdSBtYXkgaGF2ZSByZWFsaXplZCwgbWFueSBvZiB0aGUg
YXNzZXJ0aW9ucyB3ZSBpbnRyb2R1Y2VkIGVhcmxpZXIgYXJlCi1zcGVjaWFsIGNhc2VzIG9mIGAo
RVhQRUNUfEFTU0VSVClfUFJFRF9GT1JNQVQqYC4gSW4gZmFjdCwgbW9zdCBvZiB0aGVtIGFyZQot
aW5kZWVkIGRlZmluZWQgdXNpbmcgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLgotCi1f
QXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotCi0jIyBGbG9hdGluZy1Qb2lu
dCBDb21wYXJpc29uICMjCi0KLUNvbXBhcmluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGlzIHRy
aWNreS4gRHVlIHRvIHJvdW5kLW9mZiBlcnJvcnMsIGl0IGlzCi12ZXJ5IHVubGlrZWx5IHRoYXQg
dHdvIGZsb2F0aW5nLXBvaW50cyB3aWxsIG1hdGNoIGV4YWN0bHkuIFRoZXJlZm9yZSwKLWBBU1NF
UlRfRVFgICdzIG5haXZlIGNvbXBhcmlzb24gdXN1YWxseSBkb2Vzbid0IHdvcmsuIEFuZCBzaW5j
ZSBmbG9hdGluZy1wb2ludHMKLWNhbiBoYXZlIGEgd2lkZSB2YWx1ZSByYW5nZSwgbm8gc2luZ2xl
IGZpeGVkIGVycm9yIGJvdW5kIHdvcmtzLiBJdCdzIGJldHRlciB0bwotY29tcGFyZSBieSBhIGZp
eGVkIHJlbGF0aXZlIGVycm9yIGJvdW5kLCBleGNlcHQgZm9yIHZhbHVlcyBjbG9zZSB0byAwIGR1
ZSB0bwotdGhlIGxvc3Mgb2YgcHJlY2lzaW9uIHRoZXJlLgotCi1JbiBnZW5lcmFsLCBmb3IgZmxv
YXRpbmctcG9pbnQgY29tcGFyaXNvbiB0byBtYWtlIHNlbnNlLCB0aGUgdXNlciBuZWVkcyB0bwot
Y2FyZWZ1bGx5IGNob29zZSB0aGUgZXJyb3IgYm91bmQuIElmIHRoZXkgZG9uJ3Qgd2FudCBvciBj
YXJlIHRvLCBjb21wYXJpbmcgaW4KLXRlcm1zIG9mIFVuaXRzIGluIHRoZSBMYXN0IFBsYWNlIChV
TFBzKSBpcyBhIGdvb2QgZGVmYXVsdCwgYW5kIEdvb2dsZSBUZXN0Ci1wcm92aWRlcyBhc3NlcnRp
b25zIHRvIGRvIHRoaXMuIEZ1bGwgZGV0YWlscyBhYm91dCBVTFBzIGFyZSBxdWl0ZSBsb25nOyBp
ZiB5b3UKLXdhbnQgdG8gbGVhcm4gbW9yZSwgc2VlCi1bdGhpcyBhcnRpY2xlIG9uIGZsb2F0IGNv
bXBhcmlzb25dKGh0dHA6Ly93d3cuY3lnbnVzLXNvZnR3YXJlLmNvbS9wYXBlcnMvY29tcGFyaW5n
ZmxvYXRzL2NvbXBhcmluZ2Zsb2F0cy5odG0pLgotCi0jIyMgRmxvYXRpbmctUG9pbnQgTWFjcm9z
ICMjIwotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwg
KipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX0ZMT0FUX0VRKGBfZXhwZWN0ZWQsIGFj
dHVhbF9gKTtgICB8IGBFWFBFQ1RfRkxPQVRfRVEoYF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0
aGUgdHdvIGBmbG9hdGAgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwgfAotfCBgQVNTRVJUX0RPVUJM
RV9FUShgX2V4cGVjdGVkLCBhY3R1YWxfYCk7YCB8IGBFWFBFQ1RfRE9VQkxFX0VRKGBfZXhwZWN0
ZWQsIGFjdHVhbF9gKTtgIHwgdGhlIHR3byBgZG91YmxlYCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVh
bCB8Ci0KLUJ5ICJhbG1vc3QgZXF1YWwiLCB3ZSBtZWFuIHRoZSB0d28gdmFsdWVzIGFyZSB3aXRo
aW4gNCBVTFAncyBmcm9tIGVhY2gKLW90aGVyLgotCi1UaGUgZm9sbG93aW5nIGFzc2VydGlvbnMg
YWxsb3cgeW91IHRvIGNob29zZSB0aGUgYWNjZXB0YWJsZSBlcnJvciBib3VuZDoKLQotfCAqKkZh
dGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8
Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0t
LS0tLS0tLXwKLXwgYEFTU0VSVF9ORUFSKGBfdmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwg
YEVYUEVDVF9ORUFSYF8odmFsMSwgdmFsMiwgYWJzXF9lcnJvcl9gKTtgIHwgdGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiBfdmFsMV8gYW5kIF92YWwyXyBkb2Vzbid0IGV4Y2VlZCB0aGUgZ2l2ZW4gYWJz
b2x1dGUgZXJyb3IgfAotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQot
IyMjIEZsb2F0aW5nLVBvaW50IFByZWRpY2F0ZS1Gb3JtYXQgRnVuY3Rpb25zICMjIwotCi1Tb21l
IGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYXJlIHVzZWZ1bCwgYnV0IG5vdCB0aGF0IG9mdGVu
IHVzZWQuIEluIG9yZGVyCi10byBhdm9pZCBhbiBleHBsb3Npb24gb2YgbmV3IG1hY3Jvcywgd2Ug
cHJvdmlkZSB0aGVtIGFzIHByZWRpY2F0ZS1mb3JtYXQKLWZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1
c2VkIGluIHByZWRpY2F0ZSBhc3NlcnRpb24gbWFjcm9zIChlLmcuCi1gRVhQRUNUX1BSRURfRk9S
TUFUMmAsIGV0YykuCi0KLWBgYAotRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkZsb2F0
TEUsIHZhbDEsIHZhbDIpOwotRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OkRvdWJsZUxF
LCB2YWwxLCB2YWwyKTsKLWBgYAotCi1WZXJpZmllcyB0aGF0IF92YWwxXyBpcyBsZXNzIHRoYW4s
IG9yIGFsbW9zdCBlcXVhbCB0bywgX3ZhbDJfLiBZb3UgY2FuCi1yZXBsYWNlIGBFWFBFQ1RfUFJF
RF9GT1JNQVQyYCBpbiB0aGUgYWJvdmUgdGFibGUgd2l0aCBgQVNTRVJUX1BSRURfRk9STUFUMmAu
Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyBXaW5kb3dzIEhS
RVNVTFQgYXNzZXJ0aW9ucyAjIwotCi1UaGVzZSBhc3NlcnRpb25zIHRlc3QgZm9yIGBIUkVTVUxU
YCBzdWNjZXNzIG9yIGZhaWx1cmUuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0
YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfSFJFU1VM
VF9TVUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVE
KGBfZXhwcmVzc2lvbl9gKTtgIHwgX2V4cHJlc3Npb25fIGlzIGEgc3VjY2VzcyBgSFJFU1VMVGAg
fAotfCBgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgYEVYUEVD
VF9IUkVTVUxUX0ZBSUxFRChgX2V4cHJlc3Npb25fYCk7YCAgICB8IF9leHByZXNzaW9uXyBpcyBh
IGZhaWx1cmUgYEhSRVNVTFRgIHwKLQotVGhlIGdlbmVyYXRlZCBvdXRwdXQgY29udGFpbnMgdGhl
IGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UKLWFzc29jaWF0ZWQgd2l0aCB0aGUgYEhSRVNV
TFRgIGNvZGUgcmV0dXJuZWQgYnkgX2V4cHJlc3Npb25fLgotCi1Zb3UgbWlnaHQgdXNlIHRoZW0g
bGlrZSB0aGlzOgotCi1gYGAKLUNDb21QdHIgc2hlbGw7Ci1BU1NFUlRfSFJFU1VMVF9TVUNDRUVE
RUQoc2hlbGwuQ29DcmVhdGVJbnN0YW5jZShMIlNoZWxsLkFwcGxpY2F0aW9uIikpOwotQ0NvbVZh
cmlhbnQgZW1wdHk7Ci1BU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoc2hlbGwtPlNoZWxsRXhlY3V0
ZShDQ29tQlNUUih1cmwpLCBlbXB0eSwgZW1wdHksIGVtcHR5LCBlbXB0eSkpOwotYGBgCi0KLV9B
dmFpbGFiaWxpdHlfOiBXaW5kb3dzLgotCi0jIyBUeXBlIEFzc2VydGlvbnMgIyMKLQotWW91IGNh
biBjYWxsIHRoZSBmdW5jdGlvbgotYGBgCi06OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5cGVFcTxU
MSwgVDI+KCk7Ci1gYGAKLXRvIGFzc2VydCB0aGF0IHR5cGVzIGBUMWAgYW5kIGBUMmAgYXJlIHRo
ZSBzYW1lLiAgVGhlIGZ1bmN0aW9uIGRvZXMKLW5vdGhpbmcgaWYgdGhlIGFzc2VydGlvbiBpcyBz
YXRpc2ZpZWQuICBJZiB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudCwKLXRoZSBmdW5jdGlvbiBjYWxs
IHdpbGwgZmFpbCB0byBjb21waWxlLCBhbmQgdGhlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2UKLXdp
bGwgbGlrZWx5IChkZXBlbmRpbmcgb24gdGhlIGNvbXBpbGVyKSBzaG93IHlvdSB0aGUgYWN0dWFs
IHZhbHVlcyBvZgotYFQxYCBhbmQgYFQyYC4gIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBpbnNpZGUg
dGVtcGxhdGUgY29kZS4KLQotX0NhdmVhdDpfIFdoZW4gdXNlZCBpbnNpZGUgYSBtZW1iZXIgZnVu
Y3Rpb24gb2YgYSBjbGFzcyB0ZW1wbGF0ZSBvciBhCi1mdW5jdGlvbiB0ZW1wbGF0ZSwgYFN0YXRp
Y0Fzc2VydFR5cGVFcTxUMSwgVDI+KClgIGlzIGVmZmVjdGl2ZSBfb25seSBpZl8KLXRoZSBmdW5j
dGlvbiBpcyBpbnN0YW50aWF0ZWQuICBGb3IgZXhhbXBsZSwgZ2l2ZW46Ci1gYGAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBGb28gewotIHB1YmxpYzoKLSAgdm9pZCBCYXIoKSB7IDo6dGVz
dGluZzo6U3RhdGljQXNzZXJ0VHlwZUVxPGludCwgVD4oKTsgfQotfTsKLWBgYAotdGhlIGNvZGU6
Ci1gYGAKLXZvaWQgVGVzdDEoKSB7IEZvbzxib29sPiBmb287IH0KLWBgYAotd2lsbCBfbm90XyBn
ZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yLCBhcyBgRm9vPGJvb2w+OjpCYXIoKWAgaXMgbmV2ZXIK
LWFjdHVhbGx5IGluc3RhbnRpYXRlZC4gIEluc3RlYWQsIHlvdSBuZWVkOgotYGBgCi12b2lkIFRl
c3QyKCkgeyBGb288Ym9vbD4gZm9vOyBmb28uQmFyKCk7IH0KLWBgYAotdG8gY2F1c2UgYSBjb21w
aWxlciBlcnJvci4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNl
IHZlcnNpb24gMS4zLjAuCi0KLSMjIEFzc2VydGlvbiBQbGFjZW1lbnQgIyMKLQotWW91IGNhbiB1
c2UgYXNzZXJ0aW9ucyBpbiBhbnkgQysrIGZ1bmN0aW9uLiBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vz
bid0Ci1oYXZlIHRvIGJlIGEgbWV0aG9kIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFRoZSBv
bmUgY29uc3RyYWludCBpcwotdGhhdCBhc3NlcnRpb25zIHRoYXQgZ2VuZXJhdGUgYSBmYXRhbCBm
YWlsdXJlIChgRkFJTCpgIGFuZCBgQVNTRVJUXypgKQotY2FuIG9ubHkgYmUgdXNlZCBpbiB2b2lk
LXJldHVybmluZyBmdW5jdGlvbnMuIFRoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZgotR29vZ2xlIFRl
c3Qgbm90IHVzaW5nIGV4Y2VwdGlvbnMuIEJ5IHBsYWNpbmcgaXQgaW4gYSBub24tdm9pZCBmdW5j
dGlvbgoteW91J2xsIGdldCBhIGNvbmZ1c2luZyBjb21waWxlIGVycm9yIGxpa2UKLWAiZXJyb3I6
IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUiYC4KLQotSWYgeW91IG5l
ZWQgdG8gdXNlIGFzc2VydGlvbnMgaW4gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm9uLXZvaWQs
IG9uZSBvcHRpb24KLWlzIHRvIG1ha2UgdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgaW4g
YW4gb3V0IHBhcmFtZXRlciBpbnN0ZWFkLiBGb3IKLWV4YW1wbGUsIHlvdSBjYW4gcmV3cml0ZSBg
VDIgRm9vKFQxIHgpYCB0byBgdm9pZCBGb28oVDEgeCwgVDIqIHJlc3VsdClgLiBZb3UKLW5lZWQg
dG8gbWFrZSBzdXJlIHRoYXQgYCpyZXN1bHRgIGNvbnRhaW5zIHNvbWUgc2Vuc2libGUgdmFsdWUg
ZXZlbiB3aGVuIHRoZQotZnVuY3Rpb24gcmV0dXJucyBwcmVtYXR1cmVseS4gQXMgdGhlIGZ1bmN0
aW9uIG5vdyByZXR1cm5zIGB2b2lkYCwgeW91IGNhbiB1c2UKLWFueSBhc3NlcnRpb24gaW5zaWRl
IG9mIGl0LgotCi1JZiBjaGFuZ2luZyB0aGUgZnVuY3Rpb24ncyB0eXBlIGlzIG5vdCBhbiBvcHRp
b24sIHlvdSBzaG91bGQganVzdCB1c2UKLWFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBub24tZmF0
YWwgZmFpbHVyZXMsIHN1Y2ggYXMgYEFERF9GQUlMVVJFKmAgYW5kCi1gRVhQRUNUXypgLgotCi1f
Tm90ZV86IENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBjb25zaWRlcmVkIHZv
aWQtcmV0dXJuaW5nCi1mdW5jdGlvbnMsIGFjY29yZGluZyB0byB0aGUgQysrIGxhbmd1YWdlIHNw
ZWNpZmljYXRpb24sIGFuZCBzbyB5b3UgbWF5IG5vdCB1c2UKLWZhdGFsIGFzc2VydGlvbnMgaW4g
dGhlbS4gWW91J2xsIGdldCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIHlvdSB0cnkuIEEgc2ltcGxl
Ci13b3JrYXJvdW5kIGlzIHRvIHRyYW5zZmVyIHRoZSBlbnRpcmUgYm9keSBvZiB0aGUgY29uc3Ry
dWN0b3Igb3IgZGVzdHJ1Y3RvciB0byBhCi1wcml2YXRlIHZvaWQtcmV0dXJuaW5nIG1ldGhvZC4g
SG93ZXZlciwgeW91IHNob3VsZCBiZSBhd2FyZSB0aGF0IGEgZmF0YWwKLWFzc2VydGlvbiBmYWls
dXJlIGluIGEgY29uc3RydWN0b3IgZG9lcyBub3QgdGVybWluYXRlIHRoZSBjdXJyZW50IHRlc3Qs
IGFzIHlvdXIKLWludHVpdGlvbiBtaWdodCBzdWdnZXN0OyBpdCBtZXJlbHkgcmV0dXJucyBmcm9t
IHRoZSBjb25zdHJ1Y3RvciBlYXJseSwgcG9zc2libHkKLWxlYXZpbmcgeW91ciBvYmplY3QgaW4g
YSBwYXJ0aWFsbHktY29uc3RydWN0ZWQgc3RhdGUuIExpa2V3aXNlLCBhIGZhdGFsCi1hc3NlcnRp
b24gZmFpbHVyZSBpbiBhIGRlc3RydWN0b3IgbWF5IGxlYXZlIHlvdXIgb2JqZWN0IGluIGEKLXBh
cnRpYWxseS1kZXN0cnVjdGVkIHN0YXRlLiBVc2UgYXNzZXJ0aW9ucyBjYXJlZnVsbHkgaW4gdGhl
c2Ugc2l0dWF0aW9ucyEKLQotIyBUZWFjaGluZyBHb29nbGUgVGVzdCBIb3cgdG8gUHJpbnQgWW91
ciBWYWx1ZXMgIwotCi1XaGVuIGEgdGVzdCBhc3NlcnRpb24gc3VjaCBhcyBgRVhQRUNUX0VRYCBm
YWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZQotYXJndW1lbnQgdmFsdWVzIHRvIGhlbHAgeW91
IGRlYnVnLiAgSXQgZG9lcyB0aGlzIHVzaW5nIGEKLXVzZXItZXh0ZW5zaWJsZSB2YWx1ZSBwcmlu
dGVyLgotCi1UaGlzIHByaW50ZXIga25vd3MgaG93IHRvIHByaW50IGJ1aWx0LWluIEMrKyB0eXBl
cywgbmF0aXZlIGFycmF5cywgU1RMCi1jb250YWluZXJzLCBhbmQgYW55IHR5cGUgdGhhdCBzdXBw
b3J0cyB0aGUgYDw8YCBvcGVyYXRvci4gIEZvciBvdGhlcgotdHlwZXMsIGl0IHByaW50cyB0aGUg
cmF3IGJ5dGVzIGluIHRoZSB2YWx1ZSBhbmQgaG9wZXMgdGhhdCB5b3UgdGhlCi11c2VyIGNhbiBm
aWd1cmUgaXQgb3V0LgotCi1BcyBtZW50aW9uZWQgZWFybGllciwgdGhlIHByaW50ZXIgaXMgX2V4
dGVuc2libGVfLiAgVGhhdCBtZWFucwoteW91IGNhbiB0ZWFjaCBpdCB0byBkbyBhIGJldHRlciBq
b2IgYXQgcHJpbnRpbmcgeW91ciBwYXJ0aWN1bGFyIHR5cGUKLXRoYW4gdG8gZHVtcCB0aGUgYnl0
ZXMuICBUbyBkbyB0aGF0LCBkZWZpbmUgYDw8YCBmb3IgeW91ciB0eXBlOgotCi1gYGAKLSNpbmNs
dWRlIDxpb3N0cmVhbT4KLQotbmFtZXNwYWNlIGZvbyB7Ci0KLWNsYXNzIEJhciB7IC4uLiB9OyAg
Ly8gV2Ugd2FudCBHb29nbGUgVGVzdCB0byBiZSBhYmxlIHRvIHByaW50IGluc3RhbmNlcyBvZiB0
aGlzLgotCi0vLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoZSA8PCBvcGVyYXRvciBpcyBkZWZpbmVk
IGluIHRoZSBTQU1FCi0vLyBuYW1lc3BhY2UgdGhhdCBkZWZpbmVzIEJhci4gIEMrKydzIGxvb2st
dXAgcnVsZXMgcmVseSBvbiB0aGF0LgotOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpzdGQ6
Om9zdHJlYW0mIG9zLCBjb25zdCBCYXImIGJhcikgewotICByZXR1cm4gb3MgPDwgYmFyLkRlYnVn
U3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9zCi19Ci0KLX0g
IC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1Tb21ldGltZXMsIHRoaXMgbWlnaHQgbm90IGJlIGFu
IG9wdGlvbjogeW91ciB0ZWFtIG1heSBjb25zaWRlciBpdCBiYWQKLXN0eWxlIHRvIGhhdmUgYSBg
PDxgIG9wZXJhdG9yIGZvciBgQmFyYCwgb3IgYEJhcmAgbWF5IGFscmVhZHkgaGF2ZSBhCi1gPDxg
IG9wZXJhdG9yIHRoYXQgZG9lc24ndCBkbyB3aGF0IHlvdSB3YW50IChhbmQgeW91IGNhbm5vdCBj
aGFuZ2UKLWl0KS4gIElmIHNvLCB5b3UgY2FuIGluc3RlYWQgZGVmaW5lIGEgYFByaW50VG8oKWAg
ZnVuY3Rpb24gbGlrZSB0aGlzOgotCi1gYGAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotbmFtZXNw
YWNlIGZvbyB7Ci0KLWNsYXNzIEJhciB7IC4uLiB9OwotCi0vLyBJdCdzIGltcG9ydGFudCB0aGF0
IFByaW50VG8oKSBpcyBkZWZpbmVkIGluIHRoZSBTQU1FCi0vLyBuYW1lc3BhY2UgdGhhdCBkZWZp
bmVzIEJhci4gIEMrKydzIGxvb2stdXAgcnVsZXMgcmVseSBvbiB0aGF0Lgotdm9pZCBQcmludFRv
KGNvbnN0IEJhciYgYmFyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgKm9zIDw8IGJhci5EZWJ1
Z1N0cmluZygpOyAgLy8gd2hhdGV2ZXIgbmVlZGVkIHRvIHByaW50IGJhciB0byBvcwotfQotCi19
ICAvLyBuYW1lc3BhY2UgZm9vCi1gYGAKLQotSWYgeW91IGhhdmUgZGVmaW5lZCBib3RoIGA8PGAg
YW5kIGBQcmludFRvKClgLCB0aGUgbGF0dGVyIHdpbGwgYmUgdXNlZAotd2hlbiBHb29nbGUgVGVz
dCBpcyBjb25jZXJuZWQuICBUaGlzIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIGhvdyB0aGUgdmFs
dWUKLWFwcGVhcnMgaW4gR29vZ2xlIFRlc3QncyBvdXRwdXQgd2l0aG91dCBhZmZlY3RpbmcgY29k
ZSB0aGF0IHJlbGllcyBvbiB0aGUKLWJlaGF2aW9yIG9mIGl0cyBgPDxgIG9wZXJhdG9yLgotCi1J
ZiB5b3Ugd2FudCB0byBwcmludCBhIHZhbHVlIGB4YCB1c2luZyBHb29nbGUgVGVzdCdzIHZhbHVl
IHByaW50ZXIKLXlvdXJzZWxmLCBqdXN0IGNhbGwgYDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhg
X3hfYClgLCB3aGljaAotcmV0dXJucyBhbiBgc3RkOjpzdHJpbmdgOgotCi1gYGAKLXZlY3Rvcjxw
YWlyPEJhciwgaW50PiA+IGJhcl9pbnRzID0gR2V0QmFySW50VmVjdG9yKCk7Ci0KLUVYUEVDVF9U
UlVFKElzQ29ycmVjdEJhckludFZlY3RvcihiYXJfaW50cykpCi0gICAgPDwgImJhcl9pbnRzID0g
IiA8PCA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoYmFyX2ludHMpOwotYGBgCi0KLSMgRGVhdGgg
VGVzdHMgIwotCi1JbiBtYW55IGFwcGxpY2F0aW9ucywgdGhlcmUgYXJlIGFzc2VydGlvbnMgdGhh
dCBjYW4gY2F1c2UgYXBwbGljYXRpb24gZmFpbHVyZQotaWYgYSBjb25kaXRpb24gaXMgbm90IG1l
dC4gVGhlc2Ugc2FuaXR5IGNoZWNrcywgd2hpY2ggZW5zdXJlIHRoYXQgdGhlIHByb2dyYW0KLWlz
IGluIGEga25vd24gZ29vZCBzdGF0ZSwgYXJlIHRoZXJlIHRvIGZhaWwgYXQgdGhlIGVhcmxpZXN0
IHBvc3NpYmxlIHRpbWUgYWZ0ZXIKLXNvbWUgcHJvZ3JhbSBzdGF0ZSBpcyBjb3JydXB0ZWQuIElm
IHRoZSBhc3NlcnRpb24gY2hlY2tzIHRoZSB3cm9uZyBjb25kaXRpb24sCi10aGVuIHRoZSBwcm9n
cmFtIG1heSBwcm9jZWVkIGluIGFuIGVycm9uZW91cyBzdGF0ZSwgd2hpY2ggY291bGQgbGVhZCB0
byBtZW1vcnkKLWNvcnJ1cHRpb24sIHNlY3VyaXR5IGhvbGVzLCBvciB3b3JzZS4gSGVuY2UgaXQg
aXMgdml0YWxseSBpbXBvcnRhbnQgdG8gdGVzdAotdGhhdCBzdWNoIGFzc2VydGlvbiBzdGF0ZW1l
bnRzIHdvcmsgYXMgZXhwZWN0ZWQuCi0KLVNpbmNlIHRoZXNlIHByZWNvbmRpdGlvbiBjaGVja3Mg
Y2F1c2UgdGhlIHByb2Nlc3NlcyB0byBkaWUsIHdlIGNhbGwgc3VjaCB0ZXN0cwotX2RlYXRoIHRl
c3RzXy4gTW9yZSBnZW5lcmFsbHksIGFueSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgYSBwcm9ncmFt
IHRlcm1pbmF0ZXMKLShleGNlcHQgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uKSBpbiBhbiBleHBl
Y3RlZCBmYXNoaW9uIGlzIGFsc28gYSBkZWF0aCB0ZXN0LgotCi1Ob3RlIHRoYXQgaWYgYSBwaWVj
ZSBvZiBjb2RlIHRocm93cyBhbiBleGNlcHRpb24sIHdlIGRvbid0IGNvbnNpZGVyIGl0ICJkZWF0
aCIKLWZvciB0aGUgcHVycG9zZSBvZiBkZWF0aCB0ZXN0cywgYXMgdGhlIGNhbGxlciBvZiB0aGUg
Y29kZSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uCi1hbmQgYXZvaWQgdGhlIGNyYXNoLiBJZiB5
b3Ugd2FudCB0byB2ZXJpZnkgZXhjZXB0aW9ucyB0aHJvd24gYnkgeW91ciBjb2RlLAotc2VlIFtF
eGNlcHRpb24gQXNzZXJ0aW9uc10oI2V4Y2VwdGlvbi1hc3NlcnRpb25zKS4KLQotSWYgeW91IHdh
bnQgdG8gdGVzdCBgRVhQRUNUXyooKS9BU1NFUlRfKigpYCBmYWlsdXJlcyBpbiB5b3VyIHRlc3Qg
Y29kZSwgc2VlIFtDYXRjaGluZyBGYWlsdXJlc10oI2NhdGNoaW5nLWZhaWx1cmVzKS4KLQotIyMg
SG93IHRvIFdyaXRlIGEgRGVhdGggVGVzdCAjIwotCi1Hb29nbGUgVGVzdCBoYXMgdGhlIGZvbGxv
d2luZyBtYWNyb3MgdG8gc3VwcG9ydCBkZWF0aCB0ZXN0czoKLQotfCAqKkZhdGFsIGFzc2VydGlv
bioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0t
LS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwg
YEFTU0VSVF9ERUFUSChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwgYEVYUEVDVF9ERUFUSChgX3N0
YXRlbWVudCwgcmVnZXhfYCk7IHwgX3N0YXRlbWVudF8gY3Jhc2hlcyB3aXRoIHRoZSBnaXZlbiBl
cnJvciB8Ci18IGBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdleF9g
KTsgfCBgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChgX3N0YXRlbWVudCwgcmVnZXhfYCk7IHwg
aWYgZGVhdGggdGVzdHMgYXJlIHN1cHBvcnRlZCwgdmVyaWZpZXMgdGhhdCBfc3RhdGVtZW50XyBj
cmFzaGVzIHdpdGggdGhlIGdpdmVuIGVycm9yOyBvdGhlcndpc2UgdmVyaWZpZXMgbm90aGluZyB8
Ci18IGBBU1NFUlRfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTsgfCBgRVhQ
RUNUX0VYSVQoYF9zdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXhfYCk7IHxfc3RhdGVtZW50XyBl
eGl0cyB3aXRoIHRoZSBnaXZlbiBlcnJvciBhbmQgaXRzIGV4aXQgY29kZSBtYXRjaGVzIF9wcmVk
aWNhdGVfIHwKLQotd2hlcmUgX3N0YXRlbWVudF8gaXMgYSBzdGF0ZW1lbnQgdGhhdCBpcyBleHBl
Y3RlZCB0byBjYXVzZSB0aGUgcHJvY2VzcyB0bwotZGllLCBfcHJlZGljYXRlXyBpcyBhIGZ1bmN0
aW9uIG9yIGZ1bmN0aW9uIG9iamVjdCB0aGF0IGV2YWx1YXRlcyBhbiBpbnRlZ2VyCi1leGl0IHN0
YXR1cywgYW5kIF9yZWdleF8gaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB0aGUgc3RkZXJy
IG91dHB1dCBvZgotX3N0YXRlbWVudF8gaXMgZXhwZWN0ZWQgdG8gbWF0Y2guIE5vdGUgdGhhdCBf
c3RhdGVtZW50XyBjYW4gYmUgX2FueSB2YWxpZAotc3RhdGVtZW50XyAoaW5jbHVkaW5nIF9jb21w
b3VuZCBzdGF0ZW1lbnRfKSBhbmQgZG9lc24ndCBoYXZlIHRvIGJlIGFuCi1leHByZXNzaW9uLgot
Ci1BcyB1c3VhbCwgdGhlIGBBU1NFUlRgIHZhcmlhbnRzIGFib3J0IHRoZSBjdXJyZW50IHRlc3Qg
ZnVuY3Rpb24sIHdoaWxlIHRoZQotYEVYUEVDVGAgdmFyaWFudHMgZG8gbm90LgotCi0qKk5vdGU6
KiogV2UgdXNlIHRoZSB3b3JkICJjcmFzaCIgaGVyZSB0byBtZWFuIHRoYXQgdGhlIHByb2Nlc3MK
LXRlcm1pbmF0ZXMgd2l0aCBhIF9ub24temVyb18gZXhpdCBzdGF0dXMgY29kZS4gIFRoZXJlIGFy
ZSB0d28KLXBvc3NpYmlsaXRpZXM6IGVpdGhlciB0aGUgcHJvY2VzcyBoYXMgY2FsbGVkIGBleGl0
KClgIG9yIGBfZXhpdCgpYAotd2l0aCBhIG5vbi16ZXJvIHZhbHVlLCBvciBpdCBtYXkgYmUga2ls
bGVkIGJ5IGEgc2lnbmFsLgotCi1UaGlzIG1lYW5zIHRoYXQgaWYgX3N0YXRlbWVudF8gdGVybWlu
YXRlcyB0aGUgcHJvY2VzcyB3aXRoIGEgMCBleGl0Ci1jb2RlLCBpdCBpcyBfbm90XyBjb25zaWRl
cmVkIGEgY3Jhc2ggYnkgYEVYUEVDVF9ERUFUSGAuICBVc2UKLWBFWFBFQ1RfRVhJVGAgaW5zdGVh
ZCBpZiB0aGlzIGlzIHRoZSBjYXNlLCBvciBpZiB5b3Ugd2FudCB0byByZXN0cmljdAotdGhlIGV4
aXQgY29kZSBtb3JlIHByZWNpc2VseS4KLQotQSBwcmVkaWNhdGUgaGVyZSBtdXN0IGFjY2VwdCBh
biBgaW50YCBhbmQgcmV0dXJuIGEgYGJvb2xgLiBUaGUgZGVhdGggdGVzdAotc3VjY2VlZHMgb25s
eSBpZiB0aGUgcHJlZGljYXRlIHJldHVybnMgYHRydWVgLiBHb29nbGUgVGVzdCBkZWZpbmVzIGEg
ZmV3Ci1wcmVkaWNhdGVzIHRoYXQgaGFuZGxlIHRoZSBtb3N0IGNvbW1vbiBjYXNlczoKLQotYGBg
Ci06OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKGV4aXRfY29kZSkKLWBgYAotCi1UaGlzIGV4cHJl
c3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIGV4aXRlZCBub3JtYWxseSB3aXRoIHRoZSBn
aXZlbiBleGl0Ci1jb2RlLgotCi1gYGAKLTo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoc2lnbmFs
X251bWJlcikgIC8vIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KLWBgYAotCi1UaGlzIGV4cHJl
c3Npb24gaXMgYHRydWVgIGlmIHRoZSBwcm9ncmFtIHdhcyBraWxsZWQgYnkgdGhlIGdpdmVuIHNp
Z25hbC4KLQotVGhlIGAqX0RFQVRIYCBtYWNyb3MgYXJlIGNvbnZlbmllbnQgd3JhcHBlcnMgZm9y
IGAqX0VYSVRgIHRoYXQgdXNlIGEgcHJlZGljYXRlCi10aGF0IHZlcmlmaWVzIHRoZSBwcm9jZXNz
JyBleGl0IGNvZGUgaXMgbm9uLXplcm8uCi0KLU5vdGUgdGhhdCBhIGRlYXRoIHRlc3Qgb25seSBj
YXJlcyBhYm91dCB0aHJlZSB0aGluZ3M6Ci0KLSAgMS4gZG9lcyBfc3RhdGVtZW50XyBhYm9ydCBv
ciBleGl0IHRoZSBwcm9jZXNzPwotICAxLiAoaW4gdGhlIGNhc2Ugb2YgYEFTU0VSVF9FWElUYCBh
bmQgYEVYUEVDVF9FWElUYCkgZG9lcyB0aGUgZXhpdCBzdGF0dXMgc2F0aXNmeSBfcHJlZGljYXRl
Xz8gIE9yIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJUX0RFQVRIYCBhbmQgYEVYUEVDVF9ERUFUSGAp
IGlzIHRoZSBleGl0IHN0YXR1cyBub24temVybz8gIEFuZAotICAxLiBkb2VzIHRoZSBzdGRlcnIg
b3V0cHV0IG1hdGNoIF9yZWdleF8/Ci0KLUluIHBhcnRpY3VsYXIsIGlmIF9zdGF0ZW1lbnRfIGdl
bmVyYXRlcyBhbiBgQVNTRVJUXypgIG9yIGBFWFBFQ1RfKmAgZmFpbHVyZSwgaXQgd2lsbCAqKm5v
dCoqIGNhdXNlIHRoZSBkZWF0aCB0ZXN0IHRvIGZhaWwsIGFzIEdvb2dsZSBUZXN0IGFzc2VydGlv
bnMgZG9uJ3QgYWJvcnQgdGhlIHByb2Nlc3MuCi0KLVRvIHdyaXRlIGEgZGVhdGggdGVzdCwgc2lt
cGx5IHVzZSBvbmUgb2YgdGhlIGFib3ZlIG1hY3JvcyBpbnNpZGUgeW91ciB0ZXN0Ci1mdW5jdGlv
bi4gRm9yIGV4YW1wbGUsCi0KLWBgYAotVEVTVChNeSpEZWF0aFRlc3QqLCBGb28pIHsKLSAgLy8g
VGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCi0gIEFTU0VSVF9ERUFU
SCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9vKCkiKTsK
LX0KLVRFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKLSAgRVhQRUNUX0VYSVQoTm9ybWFs
RXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwotfQotVEVT
VChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgewotICBFWFBFQ1RfRVhJVChLaWxsTXlzZWxmKCks
IDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15c2VsZiB1bmJs
b2NrYWJsZSBzaWduYWwiKTsKLX0KLWBgYAotCi12ZXJpZmllcyB0aGF0OgotCi0gICogY2FsbGlu
ZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVuIGVycm9y
IG1lc3NhZ2UsCi0gICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHByb2Nlc3Mg
dG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhpdCBjb2RlIDAs
IGFuZAotICAqIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mgd2l0aCBz
aWduYWwgYFNJR0tJTExgLgotCi1UaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250YWluIG90
aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKLW5lY2Vzc2FyeS4KLQot
X0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93IHRoZSBjb252
ZW50aW9uIG9mIG5hbWluZyB5b3VyCi10ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRoVGVzdGAg
d2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCi1kZW1vbnN0cmF0ZWQgaW4gdGhlIGFi
b3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rpb24gYmVsb3cK
LWV4cGxhaW5zIHdoeS4KLQotSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVkIGJ5IG5v
cm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlvdQotY2FuIHVzZSB0eXBlZGVmIHRvIGludHJv
ZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCi1kdXBsaWNhdGlu
ZyBpdHMgY29kZToKLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qg
eyAuLi4gfTsKLQotdHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKLQotVEVTVF9GKEZvb1Rl
c3QsIERvZXNUaGlzKSB7Ci0gIC8vIG5vcm1hbCB0ZXN0Ci19Ci0KLVRFU1RfRihGb29EZWF0aFRl
c3QsIERvZXNUaGF0KSB7Ci0gIC8vIGRlYXRoIHRlc3QKLX0KLWBgYAotCi1fQXZhaWxhYmlsaXR5
Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3lnd2luLCBh
bmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4wKS4gIGAo
QVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYxLjQuMC4KLQot
IyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheCAjIwotCi1PbiBQT1NJWCBzeXN0ZW1zIChlLmcu
IExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQotW1BPU0lYIGV4
dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGlu
ZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQpCi1zeW50
YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3UgbWF5IHdh
bnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhwcmVzc2lv
bnMpLgotCi1PbiBXaW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2ltcGxlIHJlZ3Vs
YXIgZXhwcmVzc2lvbgotaW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVhdHVyZXMgeW91
IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVkCi1yZWd1bGFyIGV4cHJlc3Npb25zLiAgRm9yIGV4
YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAotZ3JvdXBpbmcgKGAiKHh5
KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQKLShgInh7NSw3
fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKGBBYCBkZW5v
dGVzIGEKLWxpdGVyYWwgY2hhcmFjdGVyLCBwZXJpb2QgKGAuYCksIG9yIGEgc2luZ2xlIGBcXGAg
ZXNjYXBlIHNlcXVlbmNlOyBgeGAKLWFuZCBgeWAgZGVub3RlIHJlZ3VsYXIgZXhwcmVzc2lvbnMu
KToKLQotfCBgY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AgfAotfDotLS0t
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgXFxkYCB8IG1hdGNoZXMg
YW55IGRlY2ltYWwgZGlnaXQgICAgICAgICB8Ci18IGBcXERgIHwgbWF0Y2hlcyBhbnkgY2hhcmFj
dGVyIHRoYXQncyBub3QgYSBkZWNpbWFsIGRpZ2l0IHwKLXwgYFxcZmAgfCBtYXRjaGVzIGBcZmAg
ICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFxuYCB8IG1hdGNoZXMgYFxuYCAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBcXHJgIHwgbWF0Y2hlcyBgXHJgICAgICAgICAgICAgICAgICAgICAg
IHwKLXwgYFxcc2AgfCBtYXRjaGVzIGFueSBBU0NJSSB3aGl0ZXNwYWNlLCBpbmNsdWRpbmcgYFxu
YCB8Ci18IGBcXFNgIHwgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIHRoYXQncyBub3QgYSB3aGl0ZXNw
YWNlIHwKLXwgYFxcdGAgfCBtYXRjaGVzIGBcdGAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
XFx2YCB8IG1hdGNoZXMgYFx2YCAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBcXHdgIHwgbWF0
Y2hlcyBhbnkgbGV0dGVyLCBgX2AsIG9yIGRlY2ltYWwgZGlnaXQgfAotfCBgXFxXYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0IGBcXHdgIGRvZXNuJ3QgbWF0Y2ggfAotfCBgXFxjYCB8IG1h
dGNoZXMgYW55IGxpdGVyYWwgY2hhcmFjdGVyIGBjYCwgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0
aW9uIHwKLXwgYC5gIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxuYCB8
Ci18IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAotfCBgQSpgIHwg
bWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYEErYCB8IG1hdGNoZXMg
MSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8Ci18IGBeYCB8IG1hdGNoZXMgdGhlIGJlZ2lu
bmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGAkYCB8IG1hdGNo
ZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGB4eWAg
fCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAgICAgICAgfAotCi1UbyBoZWxwIHlvdSBkZXRl
cm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0sCi1Hb29n
bGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQgdXNl
cyBQT1NJWAotZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNUX1VTRVNfU0lN
UExFX1JFPTFgIHdoZW4gaXQgdXNlcwotdGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdhbnQg
eW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJvdGgKLWNhc2VzLCB5b3UgY2FuIGVpdGhlciBg
I2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKLXN5bnRheCBvbmx5
LgotCi0jIyBIb3cgSXQgV29ya3MgIyMKLQotVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJVCgp
YCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCi1kZWF0aCB0ZXN0IHN0YXRl
bWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkKLXRo
YXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFibGUKLWA6OnRl
c3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBpbml0aWFsaXpl
ZCBmcm9tIHRoZQotY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZWAp
LgotCi0gICogT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBMaW51
eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgotICAgICogSWYgdGhl
IHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVudCBp
cyBpbW1lZGlhdGVseSBleGVjdXRlZC4KLSAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz
IGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0aGUgdW5pdCB0
ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRoIHNv
bWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIg
Y29uc2lkZXJhdGlvbiB0byBiZSBydW4uCi0gICogT24gV2luZG93cywgdGhlIGNoaWxkIGlzIHNw
YXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVzIHRo
ZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29uc2lk
ZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9uIFBP
U0lYLgotCi1PdGhlciB2YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQgd2ls
bCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bwotZmFpbC4gQ3VycmVudGx5LCB0aGUgZmxhZydzIGRl
ZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhlCi1yaWdodCB0
byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNob3VsZCBu
b3QgZGVwZW5kIG9uCi10aGlzLgotCi1JbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9jZXNz
IHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0aGF0
Ci0KLSAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUs
IGFuZAotICAxLiB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNz
aW9uLgotCi1JZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9uIHdp
dGhvdXQgZHlpbmcsIHRoZSBjaGlsZAotcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1pbmF0
ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCi0KLSMjIERlYXRoIFRlc3RzIEFuZCBUaHJlYWRz
ICMjCi0KLVRoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRvIGRv
IHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCi13ZWxsLWtub3duIHByb2JsZW1zIHdpdGggZm9y
a2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCi1iZSBy
dW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBpdCBp
c24ndCBmZWFzaWJsZSB0bwotYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZvciBl
eGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKLW1heSBzdGFydCB0aHJlYWRz
IGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBjcmVh
dGVkLAotaXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0gdXAu
Ci0KLUdvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBhd2Fy
ZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KLQotICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRlZCBp
ZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVuY291
bnRlcmVkLgotICAxLiBUZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhUZXN0
IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCi0gIDEuIEl0IHVzZXMgYGNsb25lKClg
IGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGludXgg
KGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZvcmso
KWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUgcGFy
ZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVhZHMuCi0KLUl0J3MgcGVyZmVjdGx5IGZpbmUg
dG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkgYXJl
Ci1leGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhlIHBh
cmVudC4KLQotIyMgRGVhdGggVGVzdCBTdHlsZXMgIyMKLQotVGhlICJ0aHJlYWRzYWZlIiBkZWF0
aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUgdGhl
Ci1yaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9ubWVu
dC4gSXQgdHJhZGVzIGluY3JlYXNlZAotdGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFsbHkg
ZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KLVdlIHN1Z2dlc3Qg
dXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVzdCBo
YXMgc3BlY2lmaWMKLXByb2JsZW1zIHdpdGggaXQuCi0KLVlvdSBjYW4gY2hvb3NlIGEgcGFydGlj
dWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCi1wcm9ncmFtbWF0
aWNhbGx5OgotCi1gYGAKLTo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9
ICJ0aHJlYWRzYWZlIjsKLWBgYAotCi1Zb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8gc2V0
IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3RzIGluIHRoZQotYmluYXJ5LCBvciBpbiBpbmRp
dmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5pbmcg
ZWFjaAotdGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRvIHRo
YXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgotCi1gYGAKLVRFU1QoTXlEZWF0aFRlc3QsIFRlc3RP
bmUpIHsKLSAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVh
ZHNhZmUiOwotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5bGU6
Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotVEVTVChNeURlYXRo
VGVzdCwgVGVzdFR3bykgewotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIgc3R5
bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAi
ZmFzdCI7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgQ2F2ZWF0cyAj
IwotCi1UaGUgX3N0YXRlbWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBiZSBh
bnkgdmFsaWQgQysrIHN0YXRlbWVudC4KLUlmIGl0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlv
biB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLAot
dGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNvbWUgR29vZ2xl
IFRlc3QgbWFjcm9zIG1heSByZXR1cm4KLWZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUuZy4g
YEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1lbnRf
LgotCi1TaW5jZSBfc3RhdGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkgaW4t
bWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCi1tb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFzaW5n
IG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCi1pbiB0aGUg
cGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBpbiBh
IGRlYXRoIHRlc3QsCi15b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFzIHRo
ZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNlZSB0aGUKLW1lbW9yeSByZWNsYWltZWQuIFRv
IHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgotCi0gIDEuIHRyeSBub3QgdG8gZnJlZSBtZW1v
cnkgaW4gYSBkZWF0aCB0ZXN0OwotICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhlIHBh
cmVudCBwcm9jZXNzOyBvcgotICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4geW91
ciBwcm9ncmFtLgotCi1EdWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fubm90
IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKLWFzc2VydGlvbnMgb24gdGhlIHNhbWUgbGluZTsg
b3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKLWVycm9y
IG1lc3NhZ2UuCi0KLURlc3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3JkZWQg
YnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBkZWF0aAotdGVzdCwgdGhyZWFkIHByb2JsZW1z
IHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBvZgot
aGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCi0KLSMgVXNpbmcg
QXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwotCi0jIyBBZGRpbmcgVHJhY2VzIHRvIEFzc2Vy
dGlvbnMgIyMKLQotSWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVyYWwg
cGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgotaW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUgaGFy
ZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2YgdGhlCi1zdWItcm91dGluZSB0aGUgZmFpbHVy
ZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCi1leHRyYSBs
b2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNsdXR0
ZXJzIHVwCi15b3VyIHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBTQ09Q
RURfVFJBQ0VgIG1hY3JvOgotCi18IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotd2hlcmUgX21lc3NhZ2VfIGNhbiBiZSBh
bnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCi1tYWNybyB3aWxsIGNh
dXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4KLW1l
c3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0IHdp
bGwgYmUKLXVuZG9uZSB3aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhpY2Fs
IHNjb3BlLgotCi1Gb3IgZXhhbXBsZSwKLQotYGBgCi0xMDogdm9pZCBTdWIxKGludCBuKSB7Ci0x
MTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKLTEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiArIDEp
KTsKLTEzOiB9Ci0xNDoKLTE1OiBURVNUKEZvb1Rlc3QsIEJhcikgewotMTY6ICAgewotMTc6ICAg
ICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNsdWRl
ZCBpbgotMTg6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4gdGhp
cyBzY29wZS4KLTE5OiAgICAgU3ViMSgxKTsKLTIwOiAgIH0KLTIxOiAgIC8vIE5vdyBpdCB3b24n
dC4KLTIyOiAgIFN1YjEoOSk7Ci0yMzogfQotYGBgCi0KLWNvdWxkIHJlc3VsdCBpbiBtZXNzYWdl
cyBsaWtlIHRoZXNlOgotCi1gYGAKLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUKLVZh
bHVlIG9mOiBCYXIobikKLUV4cGVjdGVkOiAxCi0gIEFjdHVhbDogMgotICAgVHJhY2U6Ci1wYXRo
L3RvL2Zvb190ZXN0LmNjOjE3OiBBCi0KLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1cmUK
LVZhbHVlIG9mOiBCYXIobiArIDEpCi1FeHBlY3RlZDogMgotICBBY3R1YWw6IDMKLWBgYAotCi1X
aXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3aGlj
aCBpbnZvY2F0aW9uCi1vZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSByZXNw
ZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCi1leHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNzZXJ0
aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgotYG5gLCBidXQgdGhhdCdz
IHRlZGlvdXMuKQotCi1Tb21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6Ci0KLSAgMS4g
V2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NPUEVE
X1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2YgYXQg
ZWFjaCBjYWxsIHNpdGUuCi0gIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRlIGEg
bG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBTQ09Q
RURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBmYWls
dXJlIGlzIGZyb20uCi0gIDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRyYWNl
IHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2NhdGlv
biBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNob29z
ZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkgdXNl
IGAiImAuCi0gIDEuIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNjb3Bl
IHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBhbGwg
YWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1lc3Nh
Z2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgotICAxLiBUaGUgdHJh
Y2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhpdCBy
ZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGluZSBp
biB0aGUgc291cmNlIGZpbGUhCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJlcyAjIwotCi1BIGNvbW1vbiBwaXRmYWxs
IHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGluZyB0
aGF0Ci13aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0aW9u
Xywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCi1leGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Qg
d2lsbCBzZWdmYXVsdDoKLWBgYAotdm9pZCBTdWJyb3V0aW5lKCkgewotICAvLyBHZW5lcmF0ZXMg
YSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0gIEFTU0VS
VF9FUSgxLCAyKTsKLSAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KLSAgLi4u
Ci19Ci0KLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gVGhlIGlu
dGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQotICAvLyBpbiBTdWJyb3V0
aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0LgotICAvLyBUaGUgYWN0dWFsIGJlaGF2aW9y
OiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KLSAgaW50
KiBwID0gTlVMTDsKLSAgKnAgPSAzOyAvLyBTZWdmYXVsdCEKLX0KLWBgYAotCi1TaW5jZSB3ZSBk
b24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bwotaW1w
bGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMsIEdv
b2dsZSBUZXN0Ci1wcm92aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRoZXIg
dGhlCi1gKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3IgdGhl
Ci1gSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGluIHRo
ZSBmb2xsb3dpbmcgdHdvCi1zdWJzZWN0aW9ucy4KLQotIyMjIEFzc2VydGluZyBvbiBTdWJyb3V0
aW5lcyAjIyMKLQotQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJvdXRp
bmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAotZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2lsbCBj
b250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQotcmV0dXJucy4gVGhpcyBtYXkgbm90IGJlIHdo
YXQgeW91IHdhbnQuCi0KLU9mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHByb3Bh
Z2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKLXRoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRoZSBm
b2xsb3dpbmcgbWFjcm9zOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05PX0ZBVEFMX0ZB
SUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0YXRl
bWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFsIGZh
aWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4gfAotCi1Pbmx5IGZhaWx1cmVzIGluIHRoZSB0
aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvCi1kZXRlcm1p
bmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1lbnRf
Ci1jcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBpZ25v
cmVkLgotCi1FeGFtcGxlczoKLQotYGBgCi1BU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28oKSk7
Ci0KLWludCBpOwotRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoewotICBpID0gQmFyKCk7Ci19KTsK
LWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9ucyBm
cm9tIG11bHRpcGxlIHRocmVhZHMKLWFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotIyMj
IENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIwotCi1gSGFzRmF0
YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0cnVl
YCBpZiBhbgotYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEgZmF0
YWwgZmFpbHVyZS4gVGhpcwotYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWlsdXJl
cyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4KLWVhcmx5LgotCi1gYGAKLWNsYXNzIFRlc3Qg
ewotIHB1YmxpYzoKLSAgLi4uCi0gIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwotfTsK
LWBgYAotCi1UaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0aGUg
YmVoYXZpb3Igb2YgYSB0aHJvd24KLWV4Y2VwdGlvbiwgaXM6Ci0KLWBgYAotVEVTVChGb29UZXN0
LCBCYXIpIHsKLSAgU3Vicm91dGluZSgpOwotICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgpIGhh
ZCBhIGZhdGFsIGZhaWx1cmUuCi0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKLSAgICByZXR1cm47
Ci0gIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotYGBgCi0K
LUlmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwgYFRF
U1RfRigpYCAsIG9yIGEgdGVzdAotZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0aW5n
OjpUZXN0OjpgIHByZWZpeCwgYXMgaW46Ci0KLWBgYAotaWYgKDo6dGVzdGluZzo6VGVzdDo6SGFz
RmF0YWxGYWlsdXJlKCkpCi0gIHJldHVybjsKLWBgYAotCi1TaW1pbGFybHksIGBIYXNOb25mYXRh
bEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAotaGFzIGF0IGxl
YXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMgYHRy
dWVgCi1pZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBlaXRo
ZXIga2luZC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFzTm9u
ZmF0YWxGYWlsdXJlKClgIGFuZAotYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5jZSB2
ZXJzaW9uIDEuNC4wLgotCi0jIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCi0KLUlu
IHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2YWx1
ZSlgIHRvIGxvZwotYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4gYmUg
ZWl0aGVyIGEgQyBzdHJpbmcgb3IgYSAzMi1iaXQKLWludGVnZXIuIFRoZSBfbGFzdF8gdmFsdWUg
cmVjb3JkZWQgZm9yIGEga2V5IHdpbGwgYmUgZW1pdHRlZCB0byB0aGUgWE1MIG91dHB1dAotaWYg
eW91IHNwZWNpZnkgb25lLiBGb3IgZXhhbXBsZSwgdGhlIHRlc3QKLQotYGBgCi1URVNUX0YoV2lk
Z2V0VXNhZ2VUZXN0LCBNaW5BbmRNYXhXaWRnZXRzKSB7Ci0gIFJlY29yZFByb3BlcnR5KCJNYXhp
bXVtV2lkZ2V0cyIsIENvbXB1dGVNYXhVc2FnZSgpKTsKLSAgUmVjb3JkUHJvcGVydHkoIk1pbmlt
dW1XaWRnZXRzIiwgQ29tcHV0ZU1pblVzYWdlKCkpOwotfQotYGBgCi0KLXdpbGwgb3V0cHV0IFhN
TCBsaWtlIHRoaXM6Ci0KLWBgYAotLi4uCi0gIDx0ZXN0Y2FzZSBuYW1lPSJNaW5BbmRNYXhXaWRn
ZXRzIiBzdGF0dXM9InJ1biIgdGltZT0iNiIgY2xhc3NuYW1lPSJXaWRnZXRVc2FnZVRlc3QiCi0g
ICAgICAgICAgICBNYXhpbXVtV2lkZ2V0cz0iMTIiCi0gICAgICAgICAgICBNaW5pbXVtV2lkZ2V0
cz0iOSIgLz4KLS4uLgotYGBgCi0KLV9Ob3RlXzoKLSAgKiBgUmVjb3JkUHJvcGVydHkoKWAgaXMg
YSBzdGF0aWMgbWVtYmVyIG9mIHRoZSBgVGVzdGAgY2xhc3MuIFRoZXJlZm9yZSBpdCBuZWVkcyB0
byBiZSBwcmVmaXhlZCB3aXRoIGA6OnRlc3Rpbmc6OlRlc3Q6OmAgaWYgdXNlZCBvdXRzaWRlIG9m
IHRoZSBgVEVTVGAgYm9keSBhbmQgdGhlIHRlc3QgZml4dHVyZSBjbGFzcy4KLSAgKiBga2V5YCBt
dXN0IGJlIGEgdmFsaWQgWE1MIGF0dHJpYnV0ZSBuYW1lLCBhbmQgY2Fubm90IGNvbmZsaWN0IHdp
dGggdGhlIG9uZXMgYWxyZWFkeSB1c2VkIGJ5IEdvb2dsZSBUZXN0IChgbmFtZWAsIGBzdGF0dXNg
LCAgICAgYHRpbWVgLCBhbmQgYGNsYXNzbmFtZWApLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgs
IFdpbmRvd3MsIE1hYy4KLQotIyBTaGFyaW5nIFJlc291cmNlcyBCZXR3ZWVuIFRlc3RzIGluIHRo
ZSBTYW1lIFRlc3QgQ2FzZSAjCi0KLQotCi1Hb29nbGUgVGVzdCBjcmVhdGVzIGEgbmV3IHRlc3Qg
Zml4dHVyZSBvYmplY3QgZm9yIGVhY2ggdGVzdCBpbiBvcmRlciB0byBtYWtlCi10ZXN0cyBpbmRl
cGVuZGVudCBhbmQgZWFzaWVyIHRvIGRlYnVnLiBIb3dldmVyLCBzb21ldGltZXMgdGVzdHMgdXNl
IHJlc291cmNlcwotdGhhdCBhcmUgZXhwZW5zaXZlIHRvIHNldCB1cCwgbWFraW5nIHRoZSBvbmUt
Y29weS1wZXItdGVzdCBtb2RlbCBwcm9oaWJpdGl2ZWx5Ci1leHBlbnNpdmUuCi0KLUlmIHRoZSB0
ZXN0cyBkb24ndCBjaGFuZ2UgdGhlIHJlc291cmNlLCB0aGVyZSdzIG5vIGhhcm0gaW4gdGhlbSBz
aGFyaW5nIGEKLXNpbmdsZSByZXNvdXJjZSBjb3B5LiBTbywgaW4gYWRkaXRpb24gdG8gcGVyLXRl
c3Qgc2V0LXVwL3RlYXItZG93biwgR29vZ2xlIFRlc3QKLWFsc28gc3VwcG9ydHMgcGVyLXRlc3Qt
Y2FzZSBzZXQtdXAvdGVhci1kb3duLiBUbyB1c2UgaXQ6Ci0KLSAgMS4gSW4geW91ciB0ZXN0IGZp
eHR1cmUgY2xhc3MgKHNheSBgRm9vVGVzdGAgKSwgZGVmaW5lIGFzIGBzdGF0aWNgIHNvbWUgbWVt
YmVyIHZhcmlhYmxlcyB0byBob2xkIHRoZSBzaGFyZWQgcmVzb3VyY2VzLgotICAxLiBJbiB0aGUg
c2FtZSB0ZXN0IGZpeHR1cmUgY2xhc3MsIGRlZmluZSBhIGBzdGF0aWMgdm9pZCBTZXRVcFRlc3RD
YXNlKClgIGZ1bmN0aW9uIChyZW1lbWJlciBub3QgdG8gc3BlbGwgaXQgYXMgKipgU2V0dXBUZXN0
Q2FzZWAqKiB3aXRoIGEgc21hbGwgYHVgISkgdG8gc2V0IHVwIHRoZSBzaGFyZWQgcmVzb3VyY2Vz
IGFuZCBhIGBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKClgIGZ1bmN0aW9uIHRvIHRlYXIg
dGhlbSBkb3duLgotCi1UaGF0J3MgaXQhIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgY2FsbHMg
YFNldFVwVGVzdENhc2UoKWAgYmVmb3JlIHJ1bm5pbmcgdGhlCi1fZmlyc3QgdGVzdF8gaW4gdGhl
IGBGb29UZXN0YCB0ZXN0IGNhc2UgKGkuZS4gYmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdAotYEZv
b1Rlc3RgIG9iamVjdCksIGFuZCBjYWxscyBgVGVhckRvd25UZXN0Q2FzZSgpYCBhZnRlciBydW5u
aW5nIHRoZSBfbGFzdCB0ZXN0XwotaW4gaXQgKGkuZS4gYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3Qg
YEZvb1Rlc3RgIG9iamVjdCkuIEluIGJldHdlZW4sIHRoZSB0ZXN0cwotY2FuIHVzZSB0aGUgc2hh
cmVkIHJlc291cmNlcy4KLQotUmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBvcmRlciBpcyB1bmRlZmlu
ZWQsIHNvIHlvdXIgY29kZSBjYW4ndCBkZXBlbmQgb24gYSB0ZXN0Ci1wcmVjZWRpbmcgb3IgZm9s
bG93aW5nIGFub3RoZXIuIEFsc28sIHRoZSB0ZXN0cyBtdXN0IGVpdGhlciBub3QgbW9kaWZ5IHRo
ZQotc3RhdGUgb2YgYW55IHNoYXJlZCByZXNvdXJjZSwgb3IsIGlmIHRoZXkgZG8gbW9kaWZ5IHRo
ZSBzdGF0ZSwgdGhleSBtdXN0Ci1yZXN0b3JlIHRoZSBzdGF0ZSB0byBpdHMgb3JpZ2luYWwgdmFs
dWUgYmVmb3JlIHBhc3NpbmcgY29udHJvbCB0byB0aGUgbmV4dAotdGVzdC4KLQotSGVyZSdzIGFu
IGV4YW1wbGUgb2YgcGVyLXRlc3QtY2FzZSBzZXQtdXAgYW5kIHRlYXItZG93bjoKLWBgYAotY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8g
UGVyLXRlc3QtY2FzZSBzZXQtdXAuCi0gIC8vIENhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHRlc3Qg
aW4gdGhpcyB0ZXN0IGNhc2UuCi0gIC8vIENhbiBiZSBvbWl0dGVkIGlmIG5vdCBuZWVkZWQuCi0g
IHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgc2hhcmVkX3Jlc291cmNlXyA9IG5l
dyAuLi47Ci0gIH0KLQotICAvLyBQZXItdGVzdC1jYXNlIHRlYXItZG93bi4KLSAgLy8gQ2FsbGVk
IGFmdGVyIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIC8vIENhbiBiZSBvbWl0
dGVkIGlmIG5vdCBuZWVkZWQuCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0g
ICAgZGVsZXRlIHNoYXJlZF9yZXNvdXJjZV87Ci0gICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7
Ci0gIH0KLQotICAvLyBZb3UgY2FuIGRlZmluZSBwZXItdGVzdCBzZXQtdXAgYW5kIHRlYXItZG93
biBsb2dpYyBhcyB1c3VhbC4KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyAuLi4gfQotICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7IC4uLiB9Ci0KLSAgLy8gU29tZSBleHBlbnNpdmUgcmVzb3Vy
Y2Ugc2hhcmVkIGJ5IGFsbCB0ZXN0cy4KLSAgc3RhdGljIFQqIHNoYXJlZF9yZXNvdXJjZV87Ci19
OwotCi1UKiBGb29UZXN0OjpzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKLQotVEVTVF9GKEZvb1Rl
c3QsIFRlc3QxKSB7Ci0gIC4uLiB5b3UgY2FuIHJlZmVyIHRvIHNoYXJlZF9yZXNvdXJjZSBoZXJl
IC4uLgotfQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QyKSB7Ci0gIC4uLiB5b3UgY2FuIHJlZmVyIHRv
IHNoYXJlZF9yZXNvdXJjZSBoZXJlIC4uLgotfQotYGBgCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLgotCi0jIEdsb2JhbCBTZXQtVXAgYW5kIFRlYXItRG93biAjCi0KLUp1
c3QgYXMgeW91IGNhbiBkbyBzZXQtdXAgYW5kIHRlYXItZG93biBhdCB0aGUgdGVzdCBsZXZlbCBh
bmQgdGhlIHRlc3QgY2FzZQotbGV2ZWwsIHlvdSBjYW4gYWxzbyBkbyBpdCBhdCB0aGUgdGVzdCBw
cm9ncmFtIGxldmVsLiBIZXJlJ3MgaG93LgotCi1GaXJzdCwgeW91IHN1YmNsYXNzIHRoZSBgOjp0
ZXN0aW5nOjpFbnZpcm9ubWVudGAgY2xhc3MgdG8gZGVmaW5lIGEgdGVzdAotZW52aXJvbm1lbnQs
IHdoaWNoIGtub3dzIGhvdyB0byBzZXQtdXAgYW5kIHRlYXItZG93bjoKLQotYGBgCi1jbGFzcyBF
bnZpcm9ubWVudCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIH5FbnZpcm9ubWVudCgpIHt9Ci0gIC8v
IE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Lgot
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotICAvLyBPdmVycmlkZSB0aGlzIHRvIGRlZmluZSBo
b3cgdG8gdGVhciBkb3duIHRoZSBlbnZpcm9ubWVudC4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkge30KLX07Ci1gYGAKLQotVGhlbiwgeW91IHJlZ2lzdGVyIGFuIGluc3RhbmNlIG9mIHlvdXIg
ZW52aXJvbm1lbnQgY2xhc3Mgd2l0aCBHb29nbGUgVGVzdCBieQotY2FsbGluZyB0aGUgYDo6dGVz
dGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgIGZ1bmN0aW9uOgotCi1gYGAKLUVudmly
b25tZW50KiBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7Ci1gYGAK
LQotTm93LCB3aGVuIGBSVU5fQUxMX1RFU1RTKClgIGlzIGNhbGxlZCwgaXQgZmlyc3QgY2FsbHMg
dGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YKLXRoZSBlbnZpcm9ubWVudCBvYmplY3QsIHRoZW4gcnVu
cyB0aGUgdGVzdHMgaWYgdGhlcmUgd2FzIG5vIGZhdGFsIGZhaWx1cmVzLCBhbmQKLWZpbmFsbHkg
Y2FsbHMgYFRlYXJEb3duKClgIG9mIHRoZSBlbnZpcm9ubWVudCBvYmplY3QuCi0KLUl0J3MgT0sg
dG8gcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnQgb2JqZWN0cy4gSW4gdGhpcyBjYXNlLCB0
aGVpciBgU2V0VXAoKWAKLXdpbGwgYmUgY2FsbGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSByZWdp
c3RlcmVkLCBhbmQgdGhlaXIgYFRlYXJEb3duKClgIHdpbGwgYmUKLWNhbGxlZCBpbiB0aGUgcmV2
ZXJzZSBvcmRlci4KLQotTm90ZSB0aGF0IEdvb2dsZSBUZXN0IHRha2VzIG93bmVyc2hpcCBvZiB0
aGUgcmVnaXN0ZXJlZCBlbnZpcm9ubWVudCBvYmplY3RzLgotVGhlcmVmb3JlICoqZG8gbm90IGRl
bGV0ZSB0aGVtKiogYnkgeW91cnNlbGYuCi0KLVlvdSBzaG91bGQgY2FsbCBgQWRkR2xvYmFsVGVz
dEVudmlyb25tZW50KClgIGJlZm9yZSBgUlVOX0FMTF9URVNUUygpYCBpcwotY2FsbGVkLCBwcm9i
YWJseSBpbiBgbWFpbigpYC4gSWYgeW91IHVzZSBgZ3Rlc3RfbWFpbmAsIHlvdSBuZWVkIHRvICAg
ICAgY2FsbAotdGhpcyBiZWZvcmUgYG1haW4oKWAgc3RhcnRzIGZvciBpdCB0byB0YWtlIGVmZmVj
dC4gT25lIHdheSB0byBkbyB0aGlzIGlzIHRvCi1kZWZpbmUgYSBnbG9iYWwgdmFyaWFibGUgbGlr
ZSB0aGlzOgotCi1gYGAKLTo6dGVzdGluZzo6RW52aXJvbm1lbnQqIGNvbnN0IGZvb19lbnYgPSA6
OnRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRm9vRW52aXJvbm1lbnQpOwot
YGBgCi0KLUhvd2V2ZXIsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gd3JpdGUgeW91ciBv
d24gYG1haW4oKWAgYW5kIGNhbGwKLWBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgdGhlcmUs
IGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsCi12YXJpYWJsZXMgbWFrZXMg
dGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHlvdQot
cmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9u
IHVuaXRzIGFuZCB0aGUKLWVudmlyb25tZW50cyBoYXZlIGRlcGVuZGVuY2llcyBhbW9uZyB0aGVt
IChyZW1lbWJlciB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0Ci1ndWFyYW50ZWUgdGhlIG9yZGVy
IGluIHdoaWNoIGdsb2JhbCB2YXJpYWJsZXMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5p
dHMKLWFyZSBpbml0aWFsaXplZCkuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgotCi0KLSMgVmFsdWUgUGFyYW1ldGVyaXplZCBUZXN0cyAjCi0KLV9WYWx1ZS1wYXJhbWV0
ZXJpemVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gdGVzdCB5b3VyIGNvZGUgd2l0aCBkaWZmZXJlbnQK
LXBhcmFtZXRlcnMgd2l0aG91dCB3cml0aW5nIG11bHRpcGxlIGNvcGllcyBvZiB0aGUgc2FtZSB0
ZXN0LgotCi1TdXBwb3NlIHlvdSB3cml0ZSBhIHRlc3QgZm9yIHlvdXIgY29kZSBhbmQgdGhlbiBy
ZWFsaXplIHRoYXQgeW91ciBjb2RlIGlzIGFmZmVjdGVkIGJ5IGEgcHJlc2VuY2Ugb2YgYSBCb29s
ZWFuIGNvbW1hbmQgbGluZSBmbGFnLgotCi1gYGAKLVRFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykg
ewotICAvLyBBIGNvZGUgdG8gdGVzdCBmb28oKS4KLX0KLWBgYAotCi1Vc3VhbGx5IHBlb3BsZSBm
YWN0b3IgdGhlaXIgdGVzdCBjb2RlIGludG8gYSBmdW5jdGlvbiB3aXRoIGEgQm9vbGVhbiBwYXJh
bWV0ZXIgaW4gc3VjaCBzaXR1YXRpb25zLiBUaGUgZnVuY3Rpb24gc2V0cyB0aGUgZmxhZywgdGhl
biBleGVjdXRlcyB0aGUgdGVzdGluZyBjb2RlLgotCi1gYGAKLXZvaWQgVGVzdEZvb0hlbHBlcihi
b29sIGZsYWdfdmFsdWUpIHsKLSAgZmxhZyA9IGZsYWdfdmFsdWU7Ci0gIC8vIEEgY29kZSB0byB0
ZXN0IGZvbygpLgotfQotCi1URVNUKE15Q29kZVRlc3QsIFRlc3RGb29vKSB7Ci0gIFRlc3RGb29I
ZWxwZXIoZmFsc2UpOwotICBUZXN0Rm9vSGVscGVyKHRydWUpOwotfQotYGBgCi0KLUJ1dCB0aGlz
IHNldHVwIGhhcyBzZXJpb3VzIGRyYXdiYWNrcy4gRmlyc3QsIHdoZW4gYSB0ZXN0IGFzc2VydGlv
biBmYWlscyBpbiB5b3VyIHRlc3RzLCBpdCBiZWNvbWVzIHVuY2xlYXIgd2hhdCB2YWx1ZSBvZiB0
aGUgcGFyYW1ldGVyIGNhdXNlZCBpdCB0byBmYWlsLiBZb3UgY2FuIHN0cmVhbSBhIGNsYXJpZnlp
bmcgbWVzc2FnZSBpbnRvIHlvdXIgYEVYUEVDVGAvYEFTU0VSVGAgc3RhdGVtZW50cywgYnV0IGl0
IHlvdSdsbCBoYXZlIHRvIGRvIGl0IHdpdGggYWxsIG9mIHRoZW0uIFNlY29uZCwgeW91IGhhdmUg
dG8gYWRkIG9uZSBzdWNoIGhlbHBlciBmdW5jdGlvbiBwZXIgdGVzdC4gV2hhdCBpZiB5b3UgaGF2
ZSB0ZW4gdGVzdHM/IFR3ZW50eT8gQSBodW5kcmVkPwotCi1WYWx1ZS1wYXJhbWV0ZXJpemVkIHRl
c3RzIHdpbGwgbGV0IHlvdSB3cml0ZSB5b3VyIHRlc3Qgb25seSBvbmNlIGFuZCB0aGVuIGVhc2ls
eSBpbnN0YW50aWF0ZSBhbmQgcnVuIGl0IHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwYXJh
bWV0ZXIgdmFsdWVzLgotCi1IZXJlIGFyZSBzb21lIG90aGVyIHNpdHVhdGlvbnMgd2hlbiB2YWx1
ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGNvbWUgaGFuZHk6Ci0KLSAgKiBZb3Ugd2FudCB0byB0ZXN0
IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYW4gT08gaW50ZXJmYWNlLgotICAqIFlvdSB3
YW50IHRvIHRlc3QgeW91ciBjb2RlIG92ZXIgdmFyaW91cyBpbnB1dHMgKGEuay5hLiBkYXRhLWRy
aXZlbiB0ZXN0aW5nKS4gVGhpcyBmZWF0dXJlIGlzIGVhc3kgdG8gYWJ1c2UsIHNvIHBsZWFzZSBl
eGVyY2lzZSB5b3VyIGdvb2Qgc2Vuc2Ugd2hlbiBkb2luZyBpdCEKLQotIyMgSG93IHRvIFdyaXRl
IFZhbHVlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIyMKLQotVG8gd3JpdGUgdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cywgZmlyc3QgeW91IHNob3VsZCBkZWZpbmUgYSBmaXh0dXJlCi1jbGFzcy4gIEl0
IG11c3QgYmUgZGVyaXZlZCBmcm9tIGJvdGggYDo6dGVzdGluZzo6VGVzdGAgYW5kCi1gOjp0ZXN0
aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5gICh0aGUgbGF0dGVyIGlzIGEgcHVyZSBpbnRlcmZh
Y2UpLAotd2hlcmUgYFRgIGlzIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4gIEZv
ciBjb252ZW5pZW5jZSwgeW91Ci1jYW4ganVzdCBkZXJpdmUgdGhlIGZpeHR1cmUgY2xhc3MgZnJv
bSBgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFQ+YCwKLXdoaWNoIGl0c2VsZiBpcyBkZXJpdmVk
IGZyb20gYm90aCBgOjp0ZXN0aW5nOjpUZXN0YCBhbmQKLWA6OnRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZTxUPmAuIGBUYCBjYW4gYmUgYW55IGNvcHlhYmxlIHR5cGUuIElmCi1pdCdzIGEgcmF3
IHBvaW50ZXIsIHlvdSBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBsaWZlc3BhbiBv
ZgotdGhlIHBvaW50ZWQgdmFsdWVzLgotCi1gYGAKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGNvbnN0IGNoYXIqPiB7Ci0gIC8vIFlvdSBjYW4gaW1wbGVt
ZW50IGFsbCB0aGUgdXN1YWwgZml4dHVyZSBjbGFzcyBtZW1iZXJzIGhlcmUuCi0gIC8vIFRvIGFj
Y2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIsIGNhbGwgR2V0UGFyYW0oKSBmcm9tIGNsYXNzCi0gIC8v
IFRlc3RXaXRoUGFyYW08VD4uCi19OwotCi0vLyBPciwgd2hlbiB5b3Ugd2FudCB0byBhZGQgcGFy
YW1ldGVycyB0byBhIHByZS1leGlzdGluZyBmaXh0dXJlIGNsYXNzOgotY2xhc3MgQmFzZVRlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgLi4uCi19OwotY2xhc3MgQmFyVGVzdCA6IHB1
YmxpYyBCYXNlVGVzdCwKLSAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8Y29uc3QgY2hhcio+IHsKLSAgLi4uCi19OwotYGBgCi0KLVRoZW4sIHVzZSB0
aGUgYFRFU1RfUGAgbWFjcm8gdG8gZGVmaW5lIGFzIG1hbnkgdGVzdCBwYXR0ZXJucyB1c2luZwot
dGhpcyBmaXh0dXJlIGFzIHlvdSB3YW50LiAgVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1l
dGVyaXplZCIgb3IKLSJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCi0K
LWBgYAotVEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIGFj
Y2VzcyB0aGUgdGVzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKLSAgLy8g
b2YgdGhlIFRlc3RXaXRoUGFyYW08VD4gY2xhc3M6Ci0gIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdl
dFBhcmFtKCkpKTsKLSAgLi4uCi19Ci0KLVRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewot
ICAuLi4KLX0KLWBgYAotCi1GaW5hbGx5LCB5b3UgY2FuIHVzZSBgSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1BgIHRvIGluc3RhbnRpYXRlIHRoZSB0ZXN0Ci1jYXNlIHdpdGggYW55IHNldCBvZiBwYXJh
bWV0ZXJzIHlvdSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyIG9mCi1mdW5jdGlv
bnMgZm9yIGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNh
bGwKLShzdXJwcmlzZSEpIF9wYXJhbWV0ZXIgZ2VuZXJhdG9yc18uIEhlcmUgaXMgYSBzdW1tYXJ5
IG9mIHRoZW0sCi13aGljaCBhcmUgYWxsIGluIHRoZSBgdGVzdGluZ2AgbmFtZXNwYWNlOgotCi18
IGBSYW5nZShiZWdpbiwgZW5kWywgc3RlcF0pYCB8IFlpZWxkcyB2YWx1ZXMgYHtiZWdpbiwgYmVn
aW4rc3RlcCwgYmVnaW4rc3RlcCtzdGVwLCAuLi59YC4gVGhlIHZhbHVlcyBkbyBub3QgaW5jbHVk
ZSBgZW5kYC4gYHN0ZXBgIGRlZmF1bHRzIHRvIDEuIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfCBgVmFsdWVzKHYxLCB2MiwgLi4uLCB2TilgICAgfCBZaWVsZHMgdmFsdWVz
IGB7djEsIHYyLCAuLi4sIHZOfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBWYWx1ZXNJ
bihjb250YWluZXIpYCBhbmQgYFZhbHVlc0luKGJlZ2luLCBlbmQpYCB8IFlpZWxkcyB2YWx1ZXMg
ZnJvbSBhIEMtc3R5bGUgYXJyYXksIGFuIFNUTC1zdHlsZSBjb250YWluZXIsIG9yIGFuIGl0ZXJh
dG9yIHJhbmdlIGBbYmVnaW4sIGVuZClgLiBgY29udGFpbmVyYCwgYGJlZ2luYCwgYW5kIGBlbmRg
IGNhbiBiZSBleHByZXNzaW9ucyB3aG9zZSB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgcnVuIHRp
bWUuICB8Ci18IGBCb29sKClgICAgICAgICAgICAgICAgICAgICB8IFlpZWxkcyBzZXF1ZW5jZSBg
e2ZhbHNlLCB0cnVlfWAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYENvbWJpbmUoZzEs
IGcyLCAuLi4sIGdOKWAgIHwgWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNpYW4g
cHJvZHVjdCBmb3IgdGhlIG1hdGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkIGJ5IHRo
ZSBgTmAgZ2VuZXJhdG9ycy4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB5b3VyIHN5c3RlbSBw
cm92aWRlcyB0aGUgYDx0cjEvdHVwbGU+YCBoZWFkZXIuIElmIHlvdSBhcmUgc3VyZSB5b3VyIHN5
c3RlbSBkb2VzLCBhbmQgR29vZ2xlIFRlc3QgZGlzYWdyZWVzLCB5b3UgY2FuIG92ZXJyaWRlIGl0
IGJ5IGRlZmluaW5nIGBHVEVTVF9IQVNfVFIxX1RVUExFPTFgLiBTZWUgY29tbWVudHMgaW4gW2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oXSguLi9pbmNsdWRlL2d0ZXN0L2ludGVy
bmFsL2d0ZXN0LXBvcnQuaCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwKLQotRm9yIG1vcmUgZGV0
YWlscywgc2VlIHRoZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rp
b25zIGluIHRoZSBbc291cmNlIGNvZGVdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVz
dC5oKS4KLQotVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0cyBm
cm9tIHRoZSBgRm9vVGVzdGAgdGVzdCBjYXNlCi1lYWNoIHdpdGggcGFyYW1ldGVyIHZhbHVlcyBg
Im1lZW55ImAsIGAibWlueSJgLCBhbmQgYCJtb2UiYC4KLQotYGBgCi1JTlNUQU5USUFURV9URVNU
X0NBU0VfUChJbnN0YW50aWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZvb1Rl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlZhbHVlcygibWVlbnkiLCAi
bWlueSIsICJtb2UiKSk7Ci1gYGAKLQotVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNl
cyBvZiB0aGUgcGF0dGVybiAoeWVzLCB5b3UgY2FuCi1pbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4g
b25jZSksIHRoZSBmaXJzdCBhcmd1bWVudCB0bwotYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBp
cyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGFjdHVhbAotdGVzdCBjYXNlIG5h
bWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZmZXJlbnQKLWluc3Rh
bnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhh
dmUgdGhlc2UKLW5hbWVzOgotCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0Js
YWgvMGAgZm9yIGAibWVlbnkiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNC
bGFoLzFgIGZvciBgIm1pbnkiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNC
bGFoLzJgIGZvciBgIm1vZSJgCi0gICogYEluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxh
aEJsYWgvMGAgZm9yIGAibWVlbnkiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhh
c0JsYWhCbGFoLzFgIGZvciBgIm1pbnkiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0
Lkhhc0JsYWhCbGFoLzJgIGZvciBgIm1vZSJgCi0KLVlvdSBjYW4gdXNlIHRoZXNlIG5hbWVzIGlu
IFstLWd0ZXN0XC1maWx0ZXJdKCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZS10ZXN0cykuCi0KLVRo
aXMgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgYWxsIHRlc3RzIGZyb20gYEZvb1Rlc3RgIGFn
YWluLCBlYWNoCi13aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJjYXQiYCBhbmQgYCJkb2ciYDoKLQot
YGBgCi1jb25zdCBjaGFyKiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDo6dGVzdGluZzo6VmFsdWVzSW4ocGV0cykpOwotYGBgCi0KLVRoZSB0ZXN0
cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1lczoKLQot
ICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wYCBmb3IgYCJj
YXQiYAotICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBm
b3IgYCJkb2ciYAotICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFo
QmxhaC8wYCBmb3IgYCJjYXQiYAotICAqIGBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5IYXNCbGFoQmxhaC8xYCBmb3IgYCJkb2ciYAotCi1QbGVhc2Ugbm90ZSB0aGF0IGBJTlNUQU5U
SUFURV9URVNUX0NBU0VfUGAgd2lsbCBpbnN0YW50aWF0ZSBfYWxsXwotdGVzdHMgaW4gdGhlIGdp
dmVuIHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21lIGJlZm9yZSBvcgot
X2FmdGVyXyB0aGUgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCBzdGF0ZW1lbnQuCi0KLVlvdSBj
YW4gc2VlCi1bdGhlc2VdKC4uL3NhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYykKLVtmaWxlc10o
Li4vc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjKSBmb3IgbW9yZSBleGFtcGxlcy4KLQotX0F2
YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDguMCBvciBhYm92ZSks
IE1hYzsgc2luY2UgdmVyc2lvbiAxLjIuMC4KLQotIyMgQ3JlYXRpbmcgVmFsdWUtUGFyYW1ldGVy
aXplZCBBYnN0cmFjdCBUZXN0cyAjIwotCi1JbiB0aGUgYWJvdmUsIHdlIGRlZmluZSBhbmQgaW5z
dGFudGlhdGUgYEZvb1Rlc3RgIGluIHRoZSBzYW1lIHNvdXJjZQotZmlsZS4gU29tZXRpbWVzIHlv
dSBtYXkgd2FudCB0byBkZWZpbmUgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBhCi1saWJy
YXJ5IGFuZCBsZXQgb3RoZXIgcGVvcGxlIGluc3RhbnRpYXRlIHRoZW0gbGF0ZXIuIFRoaXMgcGF0
dGVybiBpcwota25vd24gYXMgPGk+YWJzdHJhY3QgdGVzdHM8L2k+LiBBcyBhbiBleGFtcGxlIG9m
IGl0cyBhcHBsaWNhdGlvbiwgd2hlbiB5b3UKLWFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIHlv
dSBjYW4gd3JpdGUgYSBzdGFuZGFyZCBzdWl0ZSBvZiBhYnN0cmFjdAotdGVzdHMgKHBlcmhhcHMg
dXNpbmcgYSBmYWN0b3J5IGZ1bmN0aW9uIGFzIHRoZSB0ZXN0IHBhcmFtZXRlcikgdGhhdAotYWxs
IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW50ZXJmYWNlIGFyZSBleHBlY3RlZCB0byBwYXNzLiBX
aGVuCi1zb21lb25lIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSwgaGUgY2FuIGluc3RhbnRpYXRl
IHlvdXIgc3VpdGUgdG8gZ2V0Ci1hbGwgdGhlIGludGVyZmFjZS1jb25mb3JtYW5jZSB0ZXN0cyBm
b3IgZnJlZS4KLQotVG8gZGVmaW5lIGFic3RyYWN0IHRlc3RzLCB5b3Ugc2hvdWxkIG9yZ2FuaXpl
IHlvdXIgY29kZSBsaWtlIHRoaXM6Ci0KLSAgMS4gUHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSBw
YXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBjbGFzcyAoZS5nLiBgRm9vVGVzdGApIGluIGEgaGVh
ZGVyIGZpbGUsIHNheSBgZm9vX3BhcmFtX3Rlc3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2RlY2xh
cmluZ18geW91ciBhYnN0cmFjdCB0ZXN0cy4KLSAgMS4gUHV0IHRoZSBgVEVTVF9QYCBkZWZpbml0
aW9ucyBpbiBgZm9vX3BhcmFtX3Rlc3QuY2NgLCB3aGljaCBpbmNsdWRlcyBgZm9vX3BhcmFtX3Rl
c3QuaGAuIFRoaW5rIG9mIHRoaXMgYXMgX2ltcGxlbWVudGluZ18geW91ciBhYnN0cmFjdCB0ZXN0
cy4KLQotT25jZSB0aGV5IGFyZSBkZWZpbmVkLCB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0gYnkg
aW5jbHVkaW5nCi1gZm9vX3BhcmFtX3Rlc3QuaGAsIGludm9raW5nIGBJTlNUQU5USUFURV9URVNU
X0NBU0VfUCgpYCwgYW5kIGxpbmtpbmcKLXdpdGggYGZvb19wYXJhbV90ZXN0LmNjYC4gWW91IGNh
biBpbnN0YW50aWF0ZSB0aGUgc2FtZSBhYnN0cmFjdCB0ZXN0Ci1jYXNlIG11bHRpcGxlIHRpbWVz
LCBwb3NzaWJseSBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgotCi0jIFR5cGVkIFRlc3RzICMK
LQotU3VwcG9zZSB5b3UgaGF2ZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUg
aW50ZXJmYWNlIGFuZAotd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgdGhlbSBzYXRpc2Z5
IHNvbWUgY29tbW9uIHJlcXVpcmVtZW50cy4KLU9yLCB5b3UgbWF5IGhhdmUgZGVmaW5lZCBzZXZl
cmFsIHR5cGVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbmZvcm0gdG8KLXRoZSBzYW1lICJjb25j
ZXB0IiBhbmQgeW91IHdhbnQgdG8gdmVyaWZ5IGl0LiAgSW4gYm90aCBjYXNlcywgeW91IHdhbnQK
LXRoZSBzYW1lIHRlc3QgbG9naWMgcmVwZWF0ZWQgZm9yIGRpZmZlcmVudCB0eXBlcy4KLQotV2hp
bGUgeW91IGNhbiB3cml0ZSBvbmUgYFRFU1RgIG9yIGBURVNUX0ZgIGZvciBlYWNoIHR5cGUgeW91
IHdhbnQgdG8KLXRlc3QgKGFuZCB5b3UgbWF5IGV2ZW4gZmFjdG9yIHRoZSB0ZXN0IGxvZ2ljIGlu
dG8gYSBmdW5jdGlvbiB0ZW1wbGF0ZQotdGhhdCB5b3UgaW52b2tlIGZyb20gdGhlIGBURVNUYCks
IGl0J3MgdGVkaW91cyBhbmQgZG9lc24ndCBzY2FsZToKLWlmIHlvdSB3YW50IF9tXyB0ZXN0cyBv
dmVyIF9uXyB0eXBlcywgeW91J2xsIGVuZCB1cCB3cml0aW5nIF9tXCpuXwotYFRFU1Rgcy4KLQot
X1R5cGVkIHRlc3RzXyBhbGxvdyB5b3UgdG8gcmVwZWF0IHRoZSBzYW1lIHRlc3QgbG9naWMgb3Zl
ciBhIGxpc3Qgb2YKLXR5cGVzLiAgWW91IG9ubHkgbmVlZCB0byB3cml0ZSB0aGUgdGVzdCBsb2dp
YyBvbmNlLCBhbHRob3VnaCB5b3UgbXVzdAota25vdyB0aGUgdHlwZSBsaXN0IHdoZW4gd3JpdGlu
ZyB0eXBlZCB0ZXN0cy4gIEhlcmUncyBob3cgeW91IGRvIGl0OgotCi1GaXJzdCwgZGVmaW5lIGEg
Zml4dHVyZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJhbWV0ZXJpemVkCi1ieSBh
IHR5cGUuICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YDoKLQot
YGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKLSBwdWJsaWM6Ci0gIC4uLgotICB0eXBlZGVmIHN0ZDo6bGlzdDxUPiBMaXN0
OwotICBzdGF0aWMgVCBzaGFyZWRfOwotICBUIHZhbHVlXzsKLX07Ci1gYGAKLQotTmV4dCwgYXNz
b2NpYXRlIGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwgYmUK
LXJlcGVhdGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3Q6Ci0KLWBgYAotdHlwZWRlZiA6OnRl
c3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOwotVFlQRURfVEVT
VF9DQVNFKEZvb1Rlc3QsIE15VHlwZXMpOwotYGBgCi0KLVRoZSBgdHlwZWRlZmAgaXMgbmVjZXNz
YXJ5IGZvciB0aGUgYFRZUEVEX1RFU1RfQ0FTRWAgbWFjcm8gdG8gcGFyc2UKLWNvcnJlY3RseS4g
IE90aGVyd2lzZSB0aGUgY29tcGlsZXIgd2lsbCB0aGluayB0aGF0IGVhY2ggY29tbWEgaW4gdGhl
Ci10eXBlIGxpc3QgaW50cm9kdWNlcyBhIG5ldyBtYWNybyBhcmd1bWVudC4KLQotVGhlbiwgdXNl
IGBUWVBFRF9URVNUKClgIGluc3RlYWQgb2YgYFRFU1RfRigpYCB0byBkZWZpbmUgYSB0eXBlZCB0
ZXN0Ci1mb3IgdGhpcyB0ZXN0IGNhc2UuICBZb3UgY2FuIHJlcGVhdCB0aGlzIGFzIG1hbnkgdGlt
ZXMgYXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQRURfVEVTVChGb29UZXN0LCBEb2VzQmxhaCkgewot
ICAvLyBJbnNpZGUgYSB0ZXN0LCByZWZlciB0byB0aGUgc3BlY2lhbCBuYW1lIFR5cGVQYXJhbSB0
byBnZXQgdGhlIHR5cGUKLSAgLy8gcGFyYW1ldGVyLiAgU2luY2Ugd2UgYXJlIGluc2lkZSBhIGRl
cml2ZWQgY2xhc3MgdGVtcGxhdGUsIEMrKyByZXF1aXJlcwotICAvLyB1cyB0byB2aXNpdCB0aGUg
bWVtYmVycyBvZiBGb29UZXN0IHZpYSAndGhpcycuCi0gIFR5cGVQYXJhbSBuID0gdGhpcy0+dmFs
dWVfOwotCi0gIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlLCBhZGQg
dGhlICdUZXN0Rml4dHVyZTo6JwotICAvLyBwcmVmaXguCi0gIG4gKz0gVGVzdEZpeHR1cmU6OnNo
YXJlZF87Ci0KLSAgLy8gVG8gcmVmZXIgdG8gdHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUsIGFkZCB0
aGUgJ3R5cGVuYW1lIFRlc3RGaXh0dXJlOjonCi0gIC8vIHByZWZpeC4gIFRoZSAndHlwZW5hbWUn
IGlzIHJlcXVpcmVkIHRvIHNhdGlzZnkgdGhlIGNvbXBpbGVyLgotICB0eXBlbmFtZSBUZXN0Rml4
dHVyZTo6TGlzdCB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2sobik7Ci0gIC4uLgotfQotCi1U
WVBFRF9URVNUKEZvb1Rlc3QsIEhhc1Byb3BlcnR5QSkgeyAuLi4gfQotYGBgCi0KLVlvdSBjYW4g
c2VlIGBzYW1wbGVzL3NhbXBsZTZfdW5pdHRlc3QuY2NgIGZvciBhIGNvbXBsZXRlIGV4YW1wbGUu
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3Ig
YWJvdmUpLCBNYWM7Ci1zaW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIFR5cGUtUGFyYW1ldGVyaXpl
ZCBUZXN0cyAjCi0KLV9UeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHNfIGFyZSBsaWtlIHR5cGVkIHRl
c3RzLCBleGNlcHQgdGhhdCB0aGV5Ci1kb24ndCByZXF1aXJlIHlvdSB0byBrbm93IHRoZSBsaXN0
IG9mIHR5cGVzIGFoZWFkIG9mIHRpbWUuICBJbnN0ZWFkLAoteW91IGNhbiBkZWZpbmUgdGhlIHRl
c3QgbG9naWMgZmlyc3QgYW5kIGluc3RhbnRpYXRlIGl0IHdpdGggZGlmZmVyZW50Ci10eXBlIGxp
c3RzIGxhdGVyLiAgWW91IGNhbiBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGlu
IHRoZQotc2FtZSBwcm9ncmFtLgotCi1JZiB5b3UgYXJlIGRlc2lnbmluZyBhbiBpbnRlcmZhY2Ug
b3IgY29uY2VwdCwgeW91IGNhbiBkZWZpbmUgYSBzdWl0ZQotb2YgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQgYW55IHZhbGlkCi1pbXBsZW1lbnRhdGlv
biBvZiB0aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hvdWxkIGhhdmUuICBUaGVuLCB0aGUgYXV0aG9y
Ci1vZiBlYWNoIGltcGxlbWVudGF0aW9uIGNhbiBqdXN0IGluc3RhbnRpYXRlIHRoZSB0ZXN0IHN1
aXRlIHdpdGggaGlzCi10eXBlIHRvIHZlcmlmeSB0aGF0IGl0IGNvbmZvcm1zIHRvIHRoZSByZXF1
aXJlbWVudHMsIHdpdGhvdXQgaGF2aW5nIHRvCi13cml0ZSBzaW1pbGFyIHRlc3RzIHJlcGVhdGVk
bHkuICBIZXJlJ3MgYW4gZXhhbXBsZToKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3Mg
dGVtcGxhdGUsIGFzIHdlIGRpZCB3aXRoIHR5cGVkIHRlc3RzOgotCi1gYGAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotICAu
Li4KLX07Ci1gYGAKLQotTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRlZmluZSBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0IGNhc2U6Ci0KLWBgYAotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVz
dCk7Ci1gYGAKLQotVGhlIGBfUGAgc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBh
dHRlcm4iLCB3aGljaGV2ZXIgeW91Ci1wcmVmZXIgdG8gdGhpbmsuCi0KLVRoZW4sIHVzZSBgVFlQ
RURfVEVTVF9QKClgIHRvIGRlZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LiAgWW91Ci1j
YW4gcmVwZWF0IHRoaXMgYXMgbWFueSB0aW1lcyBhcyB5b3Ugd2FudDoKLQotYGBgCi1UWVBFRF9U
RVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8g
VHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCi0gIFR5cGVQYXJhbSBuID0gMDsK
LSAgLi4uCi19Ci0KLVRZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0K
LWBgYAotCi1Ob3cgdGhlIHRyaWNreSBwYXJ0OiB5b3UgbmVlZCB0byByZWdpc3RlciBhbGwgdGVz
dCBwYXR0ZXJucyB1c2luZyB0aGUKLWBSRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUGAgbWFjcm8g
YmVmb3JlIHlvdSBjYW4gaW5zdGFudGlhdGUgdGhlbS4KLVRoZSBmaXJzdCBhcmd1bWVudCBvZiB0
aGUgbWFjcm8gaXMgdGhlIHRlc3QgY2FzZSBuYW1lOyB0aGUgcmVzdCBhcmUKLXRoZSBuYW1lcyBv
ZiB0aGUgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2U6Ci0KLWBgYAotUkVHSVNURVJfVFlQRURfVEVT
VF9DQVNFX1AoRm9vVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIERvZXNCbGFoLCBI
YXNQcm9wZXJ0eUEpOwotYGBgCi0KLUZpbmFsbHksIHlvdSBhcmUgZnJlZSB0byBpbnN0YW50aWF0
ZSB0aGUgcGF0dGVybiB3aXRoIHRoZSB0eXBlcyB5b3UKLXdhbnQuICBJZiB5b3UgcHV0IHRoZSBh
Ym92ZSBjb2RlIGluIGEgaGVhZGVyIGZpbGUsIHlvdSBjYW4gYCNpbmNsdWRlYAotaXQgaW4gbXVs
dGlwbGUgQysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQgbXVsdGlwbGUgdGltZXMu
Ci0KLWBgYAotdHlwZWRlZiA6OnRlc3Rpbmc6OlR5cGVzPGNoYXIsIGludCwgdW5zaWduZWQgaW50
PiBNeVR5cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIE15
VHlwZXMpOwotYGBgCi0KLVRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhl
IHBhdHRlcm4sIHRoZSBmaXJzdCBhcmd1bWVudAotdG8gdGhlIGBJTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUGAgbWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlCi1hZGRlZCB0byB0aGUg
YWN0dWFsIHRlc3QgY2FzZSBuYW1lLiAgUmVtZW1iZXIgdG8gcGljayB1bmlxdWUgcHJlZml4ZXMK
LWZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLgotCi1JbiB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRo
ZSB0eXBlIGxpc3QgY29udGFpbnMgb25seSBvbmUgdHlwZSwgeW91Ci1jYW4gd3JpdGUgdGhhdCB0
eXBlIGRpcmVjdGx5IHdpdGhvdXQgYDo6dGVzdGluZzo6VHlwZXM8Li4uPmAsIGxpa2UgdGhpczoK
LQotYGBgCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgRm9vVGVzdCwgaW50KTsK
LWBgYAotCi1Zb3UgY2FuIHNlZSBgc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBj
b21wbGV0ZSBleGFtcGxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVp
cmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFjOwotc2luY2UgdmVyc2lvbiAxLjEuMC4KLQotIyBU
ZXN0aW5nIFByaXZhdGUgQ29kZSAjCi0KLUlmIHlvdSBjaGFuZ2UgeW91ciBzb2Z0d2FyZSdzIGlu
dGVybmFsIGltcGxlbWVudGF0aW9uLCB5b3VyIHRlc3RzIHNob3VsZCBub3QKLWJyZWFrIGFzIGxv
bmcgYXMgdGhlIGNoYW5nZSBpcyBub3Qgb2JzZXJ2YWJsZSBieSB1c2Vycy4gVGhlcmVmb3JlLCBw
ZXIgdGhlCi1fYmxhY2stYm94IHRlc3RpbmcgcHJpbmNpcGxlXywgbW9zdCBvZiB0aGUgdGltZSB5
b3Ugc2hvdWxkIHRlc3QgeW91ciBjb2RlCi10aHJvdWdoIGl0cyBwdWJsaWMgaW50ZXJmYWNlcy4K
LQotSWYgeW91IHN0aWxsIGZpbmQgeW91cnNlbGYgbmVlZGluZyB0byB0ZXN0IGludGVybmFsIGlt
cGxlbWVudGF0aW9uIGNvZGUsCi1jb25zaWRlciBpZiB0aGVyZSdzIGEgYmV0dGVyIGRlc2lnbiB0
aGF0IHdvdWxkbid0IHJlcXVpcmUgeW91IHRvIGRvIHNvLiBJZiB5b3UKLWFic29sdXRlbHkgaGF2
ZSB0byB0ZXN0IG5vbi1wdWJsaWMgaW50ZXJmYWNlIGNvZGUgdGhvdWdoLCB5b3UgY2FuLiBUaGVy
ZSBhcmUKLXR3byBjYXNlcyB0byBjb25zaWRlcjoKLQotICAqIFN0YXRpYyBmdW5jdGlvbnMgKF9u
b3RfIHRoZSBzYW1lIGFzIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zISkgb3IgdW5uYW1lZCBuYW1l
c3BhY2VzLCBhbmQKLSAgKiBQcml2YXRlIG9yIHByb3RlY3RlZCBjbGFzcyBtZW1iZXJzCi0KLSMj
IFN0YXRpYyBGdW5jdGlvbnMgIyMKLQotQm90aCBzdGF0aWMgZnVuY3Rpb25zIGFuZCBkZWZpbml0
aW9ucy9kZWNsYXJhdGlvbnMgaW4gYW4gdW5uYW1lZCBuYW1lc3BhY2UgYXJlCi1vbmx5IHZpc2li
bGUgd2l0aGluIHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuIFRvIHRlc3QgdGhlbSwgeW91IGNh
biBgI2luY2x1ZGVgCi10aGUgZW50aXJlIGAuY2NgIGZpbGUgYmVpbmcgdGVzdGVkIGluIHlvdXIg
YCpfdGVzdC5jY2AgZmlsZS4gKGAjaW5jbHVkZWBpbmcgYC5jY2AKLWZpbGVzIGlzIG5vdCBhIGdv
b2Qgd2F5IHRvIHJldXNlIGNvZGUgLSB5b3Ugc2hvdWxkIG5vdCBkbyB0aGlzIGluIHByb2R1Y3Rp
b24KLWNvZGUhKQotCi1Ib3dldmVyLCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBtb3ZlIHRoZSBw
cml2YXRlIGNvZGUgaW50byB0aGUKLWBmb286OmludGVybmFsYCBuYW1lc3BhY2UsIHdoZXJlIGBm
b29gIGlzIHRoZSBuYW1lc3BhY2UgeW91ciBwcm9qZWN0IG5vcm1hbGx5Ci11c2VzLCBhbmQgcHV0
IHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIK
LXByb2R1Y3Rpb24gYC5jY2AgZmlsZXMgYW5kIHlvdXIgdGVzdHMgYXJlIGFsbG93ZWQgdG8gaW5j
bHVkZSB0aGlzIGludGVybmFsCi1oZWFkZXIsIGJ1dCB5b3VyIGNsaWVudHMgYXJlIG5vdC4gVGhp
cyB3YXksIHlvdSBjYW4gZnVsbHkgdGVzdCB5b3VyIGludGVybmFsCi1pbXBsZW1lbnRhdGlvbiB3
aXRob3V0IGxlYWtpbmcgaXQgdG8geW91ciBjbGllbnRzLgotCi0jIyBQcml2YXRlIENsYXNzIE1l
bWJlcnMgIyMKLQotUHJpdmF0ZSBjbGFzcyBtZW1iZXJzIGFyZSBvbmx5IGFjY2Vzc2libGUgZnJv
bSB3aXRoaW4gdGhlIGNsYXNzIG9yIGJ5IGZyaWVuZHMuCi1UbyBhY2Nlc3MgYSBjbGFzcycgcHJp
dmF0ZSBtZW1iZXJzLCB5b3UgY2FuIGRlY2xhcmUgeW91ciB0ZXN0IGZpeHR1cmUgYXMgYQotZnJp
ZW5kIHRvIHRoZSBjbGFzcyBhbmQgZGVmaW5lIGFjY2Vzc29ycyBpbiB5b3VyIGZpeHR1cmUuIFRl
c3RzIHVzaW5nIHRoZQotZml4dHVyZSBjYW4gdGhlbiBhY2Nlc3MgdGhlIHByaXZhdGUgbWVtYmVy
cyBvZiB5b3VyIHByb2R1Y3Rpb24gY2xhc3MgdmlhIHRoZQotYWNjZXNzb3JzIGluIHRoZSBmaXh0
dXJlLiBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggeW91ciBmaXh0dXJlIGlzIGEgZnJpZW5kIHRvCi15
b3VyIHByb2R1Y3Rpb24gY2xhc3MsIHlvdXIgdGVzdHMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGZy
aWVuZHMgdG8gaXQsIGFzIHRoZXkKLWFyZSB0ZWNobmljYWxseSBkZWZpbmVkIGluIHN1Yi1jbGFz
c2VzIG9mIHRoZSBmaXh0dXJlLgotCi1Bbm90aGVyIHdheSB0byB0ZXN0IHByaXZhdGUgbWVtYmVy
cyBpcyB0byByZWZhY3RvciB0aGVtIGludG8gYW4gaW1wbGVtZW50YXRpb24KLWNsYXNzLCB3aGlj
aCBpcyB0aGVuIGRlY2xhcmVkIGluIGEgYCotaW50ZXJuYWwuaGAgZmlsZS4gWW91ciBjbGllbnRz
IGFyZW4ndAotYWxsb3dlZCB0byBpbmNsdWRlIHRoaXMgaGVhZGVyIGJ1dCB5b3VyIHRlc3RzIGNh
bi4gU3VjaCBpcyBjYWxsZWQgdGhlIFBpbXBsCi0oUHJpdmF0ZSBJbXBsZW1lbnRhdGlvbikgaWRp
b20uCi0KLU9yLCB5b3UgY2FuIGRlY2xhcmUgYW4gaW5kaXZpZHVhbCB0ZXN0IGFzIGEgZnJpZW5k
IG9mIHlvdXIgY2xhc3MgYnkgYWRkaW5nIHRoaXMKLWxpbmUgaW4gdGhlIGNsYXNzIGJvZHk6Ci0K
LWBgYAotRlJJRU5EX1RFU1QoVGVzdENhc2VOYW1lLCBUZXN0TmFtZSk7Ci1gYGAKLQotRm9yIGV4
YW1wbGUsCi1gYGAKLS8vIGZvby5oCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3RfcHJvZC5oIgotCi0v
LyBEZWZpbmVzIEZSSUVORF9URVNULgotY2xhc3MgRm9vIHsKLSAgLi4uCi0gcHJpdmF0ZToKLSAg
RlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51bGwpOwotICBpbnQgQmFyKHZv
aWQqIHgpOwotfTsKLQotLy8gZm9vX3Rlc3QuY2MKLS4uLgotVEVTVChGb29UZXN0LCBCYXJSZXR1
cm5zWmVyb09uTnVsbCkgewotICBGb28gZm9vOwotICBFWFBFQ1RfRVEoMCwgZm9vLkJhcihOVUxM
KSk7Ci0gIC8vIFVzZXMgRm9vJ3MgcHJpdmF0ZSBtZW1iZXIgQmFyKCkuCi19Ci1gYGAKLQotUGF5
IHNwZWNpYWwgYXR0ZW50aW9uIHdoZW4geW91ciBjbGFzcyBpcyBkZWZpbmVkIGluIGEgbmFtZXNw
YWNlLCBhcyB5b3Ugc2hvdWxkCi1kZWZpbmUgeW91ciB0ZXN0IGZpeHR1cmVzIGFuZCB0ZXN0cyBp
biB0aGUgc2FtZSBuYW1lc3BhY2UgaWYgeW91IHdhbnQgdGhlbSB0bwotYmUgZnJpZW5kcyBvZiB5
b3VyIGNsYXNzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvZGUgdG8gYmUgdGVzdGVkIGxvb2tzIGxp
a2U6Ci0KLWBgYAotbmFtZXNwYWNlIG15X25hbWVzcGFjZSB7Ci0KLWNsYXNzIEZvbyB7Ci0gIGZy
aWVuZCBjbGFzcyBGb29UZXN0OwotICBGUklFTkRfVEVTVChGb29UZXN0LCBCYXIpOwotICBGUklF
TkRfVEVTVChGb29UZXN0LCBCYXopOwotICAuLi4KLSAgZGVmaW5pdGlvbiBvZiB0aGUgY2xhc3Mg
Rm9vCi0gIC4uLgotfTsKLQotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotYGBgCi0KLVlv
dXIgdGVzdCBjb2RlIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZToKLQotYGBgCi1uYW1lc3BhY2Ug
bXlfbmFtZXNwYWNlIHsKLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsK
LSBwcm90ZWN0ZWQ6Ci0gIC4uLgotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIEJhcikgeyAuLi4gfQot
VEVTVF9GKEZvb1Rlc3QsIEJheikgeyAuLi4gfQotCi19ICAvLyBuYW1lc3BhY2UgbXlfbmFtZXNw
YWNlCi1gYGAKLQotIyBDYXRjaGluZyBGYWlsdXJlcyAjCi0KLUlmIHlvdSBhcmUgYnVpbGRpbmcg
YSB0ZXN0aW5nIHV0aWxpdHkgb24gdG9wIG9mIEdvb2dsZSBUZXN0LCB5b3UnbGwKLXdhbnQgdG8g
dGVzdCB5b3VyIHV0aWxpdHkuICBXaGF0IGZyYW1ld29yayB3b3VsZCB5b3UgdXNlIHRvIHRlc3Qg
aXQ/Ci1Hb29nbGUgVGVzdCwgb2YgY291cnNlLgotCi1UaGUgY2hhbGxlbmdlIGlzIHRvIHZlcmlm
eSB0aGF0IHlvdXIgdGVzdGluZyB1dGlsaXR5IHJlcG9ydHMgZmFpbHVyZXMKLWNvcnJlY3RseS4g
IEluIGZyYW1ld29ya3MgdGhhdCByZXBvcnQgYSBmYWlsdXJlIGJ5IHRocm93aW5nIGFuCi1leGNl
cHRpb24sIHlvdSBjb3VsZCBjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCBhc3NlcnQgb24gaXQuICBC
dXQgR29vZ2xlCi1UZXN0IGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMsIHNvIGhvdyBkbyB3ZSB0ZXN0
IHRoYXQgYSBwaWVjZSBvZiBjb2RlCi1nZW5lcmF0ZXMgYW4gZXhwZWN0ZWQgZmFpbHVyZT8KLQot
YCJndGVzdC9ndGVzdC1zcGkuaCJgIGNvbnRhaW5zIHNvbWUgY29uc3RydWN0cyB0byBkbyB0aGlz
LiAgQWZ0ZXIKLWAjaW5jbHVkZWBpbmcgdGhpcyBoZWFkZXIsIHlvdSBjYW4gdXNlCi0KLXwgYEVY
UEVDVF9GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdfYCk7YCB8Ci18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotCi10byBhc3Nl
cnQgdGhhdCBfc3RhdGVtZW50XyBnZW5lcmF0ZXMgYSBmYXRhbCAoZS5nLiBgQVNTRVJUXypgKSBm
YWlsdXJlCi13aG9zZSBtZXNzYWdlIGNvbnRhaW5zIHRoZSBnaXZlbiBfc3Vic3RyaW5nXywgb3Ig
dXNlCi0KLXwgYEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdf
YCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfAotCi1pZiB5b3UgYXJlIGV4cGVjdGluZyBhIG5vbi1mYXRhbCAoZS5nLiBgRVhQRUNU
XypgKSBmYWlsdXJlLgotCi1Gb3IgdGVjaG5pY2FsIHJlYXNvbnMsIHRoZXJlIGFyZSBzb21lIGNh
dmVhdHM6Ci0KLSAgMS4gWW91IGNhbm5vdCBzdHJlYW0gYSBmYWlsdXJlIG1lc3NhZ2UgdG8gZWl0
aGVyIG1hY3JvLgotICAxLiBfc3RhdGVtZW50XyBpbiBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAg
Y2Fubm90IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBvciBub24tc3RhdGlj
IG1lbWJlcnMgb2YgYHRoaXNgIG9iamVjdC4KLSAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9G
QVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4KLQotX05vdGU6XyBHb29nbGUg
VGVzdCBpcyBkZXNpZ25lZCB3aXRoIHRocmVhZHMgaW4gbWluZC4gIE9uY2UgdGhlCi1zeW5jaHJv
bml6YXRpb24gcHJpbWl0aXZlcyBpbiBgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCJgIGhh
dmUKLWJlZW4gaW1wbGVtZW50ZWQsIEdvb2dsZSBUZXN0IHdpbGwgYmVjb21lIHRocmVhZC1zYWZl
LCBtZWFuaW5nIHRoYXQKLXlvdSBjYW4gdGhlbiB1c2UgYXNzZXJ0aW9ucyBpbiBtdWx0aXBsZSB0
aHJlYWRzIGNvbmN1cnJlbnRseS4gIEJlZm9yZQotCi10aGF0LCBob3dldmVyLCBHb29nbGUgVGVz
dCBvbmx5IHN1cHBvcnRzIHNpbmdsZS10aHJlYWRlZCB1c2FnZS4gIE9uY2UKLXRocmVhZC1zYWZl
LCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKWAgYW5kIGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgp
YAotd2lsbCBjYXB0dXJlIGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZCBvbmx5LiBJZiBf
c3RhdGVtZW50XwotY3JlYXRlcyBuZXcgdGhyZWFkcywgZmFpbHVyZXMgaW4gdGhlc2UgdGhyZWFk
cyB3aWxsIGJlIGlnbm9yZWQuICBJZgoteW91IHdhbnQgdG8gY2FwdHVyZSBmYWlsdXJlcyBmcm9t
IGFsbCB0aHJlYWRzIGluc3RlYWQsIHlvdSBzaG91bGQgdXNlCi10aGUgZm9sbG93aW5nIG1hY3Jv
czoKLQotfCBgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoYF9zdGF0ZW1lbnQs
IHN1YnN0cmluZ19gKTtgIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18IGBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RV9PTl9BTExfVEhSRUFEUyhgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotCi0jIEdldHRp
bmcgdGhlIEN1cnJlbnQgVGVzdCdzIE5hbWUgIwotCi1Tb21ldGltZXMgYSBmdW5jdGlvbiBtYXkg
bmVlZCB0byBrbm93IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LgotRm9y
IGV4YW1wbGUsIHlvdSBtYXkgYmUgdXNpbmcgdGhlIGBTZXRVcCgpYCBtZXRob2Qgb2YgeW91ciB0
ZXN0IGZpeHR1cmUgdG8gc2V0Ci10aGUgZ29sZGVuIGZpbGUgbmFtZSBiYXNlZCBvbiB3aGljaCB0
ZXN0IGlzIHJ1bm5pbmcuIFRoZSBgOjp0ZXN0aW5nOjpUZXN0SW5mb2AKLWNsYXNzIGhhcyB0aGlz
IGluZm9ybWF0aW9uOgotCi1gYGAKLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotY2xhc3MgVGVzdElu
Zm8gewotIHB1YmxpYzoKLSAgLy8gUmV0dXJucyB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIHRoZSB0
ZXN0IG5hbWUsIHJlc3BlY3RpdmVseS4KLSAgLy8KLSAgLy8gRG8gTk9UIGRlbGV0ZSBvciBmcmVl
IHRoZSByZXR1cm4gdmFsdWUgLSBpdCdzIG1hbmFnZWQgYnkgdGhlCi0gIC8vIFRlc3RJbmZvIGNs
YXNzLgotICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSgpIGNvbnN0OwotICBjb25zdCBjaGFy
KiBuYW1lKCkgY29uc3Q7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotYGBgCi0KLQot
PiBUbyBvYnRhaW4gYSBgVGVzdEluZm9gIG9iamVjdCBmb3IgdGhlIGN1cnJlbnRseSBydW5uaW5n
IHRlc3QsIGNhbGwKLWBjdXJyZW50X3Rlc3RfaW5mbygpYCBvbiB0aGUgYFVuaXRUZXN0YCBzaW5n
bGV0b24gb2JqZWN0OgotCi1gYGAKLS8vIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJl
bnRseSBydW5uaW5nIHRlc3QuCi0vLyBEbyBOT1QgZGVsZXRlIHRoZSByZXR1cm5lZCBvYmplY3Qg
LSBpdCdzIG1hbmFnZWQgYnkgdGhlIFVuaXRUZXN0IGNsYXNzLgotY29uc3QgOjp0ZXN0aW5nOjpU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLXByaW50ZigiV2UgYXJlIGluIHRlc3QgJXMg
b2YgdGVzdCBjYXNlICVzLlxuIiwKLSAgICAgICB0ZXN0X2luZm8tPm5hbWUoKSwgdGVzdF9pbmZv
LT50ZXN0X2Nhc2VfbmFtZSgpKTsKLWBgYAotCi1gY3VycmVudF90ZXN0X2luZm8oKWAgcmV0dXJu
cyBhIG51bGwgcG9pbnRlciBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcuIEluCi1wYXJ0aWN1bGFyLCB5
b3UgY2Fubm90IGZpbmQgdGhlIHRlc3QgY2FzZSBuYW1lIGluIGBUZXN0Q2FzZVNldFVwKClgLAot
YFRlc3RDYXNlVGVhckRvd24oKWAgKHdoZXJlIHlvdSBrbm93IHRoZSB0ZXN0IGNhc2UgbmFtZSBp
bXBsaWNpdGx5KSwgb3IKLWZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGVtLgotCi1fQXZhaWxhYmls
aXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBFeHRlbmRpbmcgR29vZ2xlIFRlc3QgYnkg
SGFuZGxpbmcgVGVzdCBFdmVudHMgIwotCi1Hb29nbGUgVGVzdCBwcm92aWRlcyBhbiA8Yj5ldmVu
dCBsaXN0ZW5lciBBUEk8L2I+IHRvIGxldCB5b3UgcmVjZWl2ZQotbm90aWZpY2F0aW9ucyBhYm91
dCB0aGUgcHJvZ3Jlc3Mgb2YgYSB0ZXN0IHByb2dyYW0gYW5kIHRlc3QKLWZhaWx1cmVzLiBUaGUg
ZXZlbnRzIHlvdSBjYW4gbGlzdGVuIHRvIGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YKLXRo
ZSB0ZXN0IHByb2dyYW0sIGEgdGVzdCBjYXNlLCBvciBhIHRlc3QgbWV0aG9kLCBhbW9uZyBvdGhl
cnMuIFlvdSBtYXkKLXVzZSB0aGlzIEFQSSB0byBhdWdtZW50IG9yIHJlcGxhY2UgdGhlIHN0YW5k
YXJkIGNvbnNvbGUgb3V0cHV0LAotcmVwbGFjZSB0aGUgWE1MIG91dHB1dCwgb3IgcHJvdmlkZSBh
IGNvbXBsZXRlbHkgZGlmZmVyZW50IGZvcm0gb2YKLW91dHB1dCwgc3VjaCBhcyBhIEdVSSBvciBh
IGRhdGFiYXNlLiBZb3UgY2FuIGFsc28gdXNlIHRlc3QgZXZlbnRzIGFzCi1jaGVja3BvaW50cyB0
byBpbXBsZW1lbnQgYSByZXNvdXJjZSBsZWFrIGNoZWNrZXIsIGZvciBleGFtcGxlLgotCi1fQXZh
aWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgotCi0jIyBEZWZp
bmluZyBFdmVudCBMaXN0ZW5lcnMgIyMKLQotVG8gZGVmaW5lIGEgZXZlbnQgbGlzdGVuZXIsIHlv
dSBzdWJjbGFzcyBlaXRoZXIKLVt0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcl0oLi4vaW5jbHVk
ZS9ndGVzdC9ndGVzdC5oI0w4NTUpCi1vciBbdGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5l
cl0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5MDUpLgotVGhlIGZvcm1lciBpcyBhbiAoYWJz
dHJhY3QpIGludGVyZmFjZSwgd2hlcmUgPGk+ZWFjaCBwdXJlIHZpcnR1YWwgbWV0aG9kPGJyPgot
Y2FuIGJlIG92ZXJyaWRkZW4gdG8gaGFuZGxlIGEgdGVzdCBldmVudDwvaT4gKEZvciBleGFtcGxl
LCB3aGVuIGEgdGVzdAotc3RhcnRzLCB0aGUgYE9uVGVzdFN0YXJ0KClgIG1ldGhvZCB3aWxsIGJl
IGNhbGxlZC4pLiBUaGUgbGF0dGVyIHByb3ZpZGVzCi1hbiBlbXB0eSBpbXBsZW1lbnRhdGlvbiBv
ZiBhbGwgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlLCBzdWNoIHRoYXQgYQotc3ViY2xhc3Mgb25s
eSBuZWVkcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kcyBpdCBjYXJlcyBhYm91dC4KLQotV2hlbiBh
biBldmVudCBpcyBmaXJlZCwgaXRzIGNvbnRleHQgaXMgcGFzc2VkIHRvIHRoZSBoYW5kbGVyIGZ1
bmN0aW9uCi1hcyBhbiBhcmd1bWVudC4gVGhlIGZvbGxvd2luZyBhcmd1bWVudCB0eXBlcyBhcmUg
dXNlZDoKLSAgKiBbVW5pdFRlc3RdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCNMMTAwNykgcmVm
bGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFtLAotICAqIFtUZXN0Q2Fz
ZV0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w2ODkpIGhhcyBpbmZvcm1hdGlvbiBhYm91dCBh
IHRlc3QgY2FzZSwgd2hpY2ggY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgdGVzdHMsCi0gICogW1Rl
c3RJbmZvXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDU5OSkgY29udGFpbnMgdGhlIHN0YXRl
IG9mIGEgdGVzdCwgYW5kCi0gICogW1Rlc3RQYXJ0UmVzdWx0XSguLi9pbmNsdWRlL2d0ZXN0L2d0
ZXN0LXRlc3QtcGFydC5oI0w0MikgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGEgdGVzdCBhc3Nl
cnRpb24uCi0KLUFuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FuIGV4YW1pbmUgdGhlIGFyZ3Vt
ZW50IGl0IHJlY2VpdmVzIHRvIGZpbmQKLW91dCBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgZXZlbnQgYW5kIHRoZSB0ZXN0IHByb2dyYW0ncwotc3RhdGUuICBIZXJlJ3MgYW4gZXhh
bXBsZToKLQotYGBgCi0gIGNsYXNzIE1pbmltYWxpc3RQcmludGVyIDogcHVibGljIDo6dGVzdGlu
Zzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gICAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qg
c3RhcnRzLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCA6OnRlc3Rpbmc6OlRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgc3RhcnRp
bmcuXG4iLAotICAgICAgICAgICAgIHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2lu
Zm8ubmFtZSgpKTsKLSAgICB9Ci0KLSAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBmYWlsZWQgYXNzZXJ0
aW9uIG9yIGEgU1VDQ0VFRCgpIGludm9jYXRpb24uCi0gICAgdmlydHVhbCB2b2lkIE9uVGVzdFBh
cnRSZXN1bHQoCi0gICAgICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQmIHRlc3Rf
cGFydF9yZXN1bHQpIHsKLSAgICAgIHByaW50ZigiJXMgaW4gJXM6JWRcbiVzXG4iLAotICAgICAg
ICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmFpbGVkKCkgPyAiKioqIEZhaWx1cmUiIDogIlN1Y2Nl
c3MiLAotICAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCi0gICAgICAg
ICAgICAgdGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpLAotICAgICAgICAgICAgIHRlc3Rf
cGFydF9yZXN1bHQuc3VtbWFyeSgpKTsKLSAgICB9Ci0KLSAgICAvLyBDYWxsZWQgYWZ0ZXIgYSB0
ZXN0IGVuZHMuCi0gICAgdmlydHVhbCB2b2lkIE9uVGVzdEVuZChjb25zdCA6OnRlc3Rpbmc6OlRl
c3RJbmZvJiB0ZXN0X2luZm8pIHsKLSAgICAgIHByaW50ZigiKioqIFRlc3QgJXMuJXMgZW5kaW5n
LlxuIiwKLSAgICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZv
Lm5hbWUoKSk7Ci0gICAgfQotICB9OwotYGBgCi0KLSMjIFVzaW5nIEV2ZW50IExpc3RlbmVycyAj
IwotCi1UbyB1c2UgdGhlIGV2ZW50IGxpc3RlbmVyIHlvdSBoYXZlIGRlZmluZWQsIGFkZCBhbiBp
bnN0YW5jZSBvZiBpdCB0bwotdGhlIEdvb2dsZSBUZXN0IGV2ZW50IGxpc3RlbmVyIGxpc3QgKHJl
cHJlc2VudGVkIGJ5IGNsYXNzCi1bVGVzdEV2ZW50TGlzdGVuZXJzXSguLi9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LmgjTDkyOSkKLS0gbm90ZSB0aGUgInMiIGF0IHRoZSBlbmQgb2YgdGhlIG5hbWUpIGlu
IHlvdXIKLWBtYWluKClgIGZ1bmN0aW9uLCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygp
YDoKLWBgYAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICAvLyBHZXRzIGhvbGQgb2YgdGhlIGV2ZW50
IGxpc3RlbmVyIGxpc3QuCi0gIDo6dGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5l
cnMgPQotICAgICAgOjp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJz
KCk7Ci0gIC8vIEFkZHMgYSBsaXN0ZW5lciB0byB0aGUgZW5kLiAgR29vZ2xlIFRlc3QgdGFrZXMg
dGhlIG93bmVyc2hpcC4KLSAgbGlzdGVuZXJzLkFwcGVuZChuZXcgTWluaW1hbGlzdFByaW50ZXIp
OwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotYGBgCi0KLVRoZXJlJ3Mgb25seSBvbmUg
cHJvYmxlbTogdGhlIGRlZmF1bHQgdGVzdCByZXN1bHQgcHJpbnRlciBpcyBzdGlsbCBpbgotZWZm
ZWN0LCBzbyBpdHMgb3V0cHV0IHdpbGwgbWluZ2xlIHdpdGggdGhlIG91dHB1dCBmcm9tIHlvdXIg
bWluaW1hbGlzdAotcHJpbnRlci4gVG8gc3VwcHJlc3MgdGhlIGRlZmF1bHQgcHJpbnRlciwganVz
dCByZWxlYXNlIGl0IGZyb20gdGhlCi1ldmVudCBsaXN0ZW5lciBsaXN0IGFuZCBkZWxldGUgaXQu
IFlvdSBjYW4gZG8gc28gYnkgYWRkaW5nIG9uZSBsaW5lOgotYGBgCi0gIC4uLgotICBkZWxldGUg
bGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7Ci0g
IGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKLSAgcmV0dXJuIFJVTl9B
TExfVEVTVFMoKTsKLWBgYAotCi1Ob3csIHNpdCBiYWNrIGFuZCBlbmpveSBhIGNvbXBsZXRlbHkg
ZGlmZmVyZW50IG91dHB1dCBmcm9tIHlvdXIKLXRlc3RzLiBGb3IgbW9yZSBkZXRhaWxzLCB5b3Ug
Y2FuIHJlYWQgdGhpcwotW3NhbXBsZV0oLi4vc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjKS4K
LQotWW91IG1heSBhcHBlbmQgbW9yZSB0aGFuIG9uZSBsaXN0ZW5lciB0byB0aGUgbGlzdC4gV2hl
biBhbiBgT24qU3RhcnQoKWAKLW9yIGBPblRlc3RQYXJ0UmVzdWx0KClgIGV2ZW50IGlzIGZpcmVk
LCB0aGUgbGlzdGVuZXJzIHdpbGwgcmVjZWl2ZSBpdCBpbgotdGhlIG9yZGVyIHRoZXkgYXBwZWFy
IGluIHRoZSBsaXN0IChzaW5jZSBuZXcgbGlzdGVuZXJzIGFyZSBhZGRlZCB0bwotdGhlIGVuZCBv
ZiB0aGUgbGlzdCwgdGhlIGRlZmF1bHQgdGV4dCBwcmludGVyIGFuZCB0aGUgZGVmYXVsdCBYTUwK
LWdlbmVyYXRvciB3aWxsIHJlY2VpdmUgdGhlIGV2ZW50IGZpcnN0KS4gQW4gYE9uKkVuZCgpYCBl
dmVudCB3aWxsIGJlCi1yZWNlaXZlZCBieSB0aGUgbGlzdGVuZXJzIGluIHRoZSBfcmV2ZXJzZV8g
b3JkZXIuIFRoaXMgYWxsb3dzIG91dHB1dCBieQotbGlzdGVuZXJzIGFkZGVkIGxhdGVyIHRvIGJl
IGZyYW1lZCBieSBvdXRwdXQgZnJvbSBsaXN0ZW5lcnMgYWRkZWQKLWVhcmxpZXIuCi0KLSMjIEdl
bmVyYXRpbmcgRmFpbHVyZXMgaW4gTGlzdGVuZXJzICMjCi0KLVlvdSBtYXkgdXNlIGZhaWx1cmUt
cmFpc2luZyBtYWNyb3MgKGBFWFBFQ1RfKigpYCwgYEFTU0VSVF8qKClgLAotYEZBSUwoKWAsIGV0
Yykgd2hlbiBwcm9jZXNzaW5nIGFuIGV2ZW50LiBUaGVyZSBhcmUgc29tZSByZXN0cmljdGlvbnM6
Ci0KLSAgMS4gWW91IGNhbm5vdCBnZW5lcmF0ZSBhbnkgZmFpbHVyZSBpbiBgT25UZXN0UGFydFJl
c3VsdCgpYCAob3RoZXJ3aXNlIGl0IHdpbGwgY2F1c2UgYE9uVGVzdFBhcnRSZXN1bHQoKWAgdG8g
YmUgY2FsbGVkIHJlY3Vyc2l2ZWx5KS4KLSAgMS4gQSBsaXN0ZW5lciB0aGF0IGhhbmRsZXMgYE9u
VGVzdFBhcnRSZXN1bHQoKWAgaXMgbm90IGFsbG93ZWQgdG8gZ2VuZXJhdGUgYW55IGZhaWx1cmUu
Ci0KLVdoZW4geW91IGFkZCBsaXN0ZW5lcnMgdG8gdGhlIGxpc3RlbmVyIGxpc3QsIHlvdSBzaG91
bGQgcHV0IGxpc3RlbmVycwotdGhhdCBoYW5kbGUgYE9uVGVzdFBhcnRSZXN1bHQoKWAgX2JlZm9y
ZV8gbGlzdGVuZXJzIHRoYXQgY2FuIGdlbmVyYXRlCi1mYWlsdXJlcy4gVGhpcyBlbnN1cmVzIHRo
YXQgZmFpbHVyZXMgZ2VuZXJhdGVkIGJ5IHRoZSBsYXR0ZXIgYXJlCi1hdHRyaWJ1dGVkIHRvIHRo
ZSByaWdodCB0ZXN0IGJ5IHRoZSBmb3JtZXIuCi0KLVdlIGhhdmUgYSBzYW1wbGUgb2YgZmFpbHVy
ZS1yYWlzaW5nIGxpc3RlbmVyCi1baGVyZV0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5j
YykuCi0KLSMgUnVubmluZyBUZXN0IFByb2dyYW1zOiBBZHZhbmNlZCBPcHRpb25zICMKLQotR29v
Z2xlIFRlc3QgdGVzdCBwcm9ncmFtcyBhcmUgb3JkaW5hcnkgZXhlY3V0YWJsZXMuIE9uY2UgYnVp
bHQsIHlvdSBjYW4gcnVuCi10aGVtIGRpcmVjdGx5IGFuZCBhZmZlY3QgdGhlaXIgYmVoYXZpb3Ig
dmlhIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCi1hbmQvb3IgY29tbWFuZCBs
aW5lIGZsYWdzLiBGb3IgdGhlIGZsYWdzIHRvIHdvcmssIHlvdXIgcHJvZ3JhbXMgbXVzdCBjYWxs
Ci1gOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpYCBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9U
RVNUUygpYC4KLQotVG8gc2VlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZmxhZ3MgYW5kIHRoZWlyIHVz
YWdlLCBwbGVhc2UgcnVuIHlvdXIgdGVzdAotcHJvZ3JhbSB3aXRoIHRoZSBgLS1oZWxwYCBmbGFn
LiAgWW91IGNhbiBhbHNvIHVzZSBgLWhgLCBgLT9gLCBvciBgLz9gCi1mb3Igc2hvcnQuICBUaGlz
IGZlYXR1cmUgaXMgYWRkZWQgaW4gdmVyc2lvbiAxLjMuMC4KLQotSWYgYW4gb3B0aW9uIGlzIHNw
ZWNpZmllZCBib3RoIGJ5IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCBieSBhCi1mbGFnLCB0
aGUgbGF0dGVyIHRha2VzIHByZWNlZGVuY2UuICBNb3N0IG9mIHRoZSBvcHRpb25zIGNhbiBhbHNv
IGJlCi1zZXQvcmVhZCBpbiBjb2RlOiB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGNvbW1hbmQgbGlu
ZSBmbGFnCi1gLS1ndGVzdF9mb29gLCB3cml0ZSBgOjp0ZXN0aW5nOjpHVEVTVF9GTEFHKGZvbylg
LiAgQSBjb21tb24gcGF0dGVybiBpcwotdG8gc2V0IHRoZSB2YWx1ZSBvZiBhIGZsYWcgYmVmb3Jl
IGNhbGxpbmcgYDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoKWAKLXRvIGNoYW5nZSB0aGUgZGVm
YXVsdCB2YWx1ZSBvZiB0aGUgZmxhZzoKLWBgYAotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KSB7Ci0gIC8vIERpc2FibGVzIGVsYXBzZWQgdGltZSBieSBkZWZhdWx0LgotICA6OnRlc3Rp
bmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkgPSBmYWxzZTsKLQotICAvLyBUaGlzIGFsbG93cyB0
aGUgdXNlciB0byBvdmVycmlkZSB0aGUgZmxhZyBvbiB0aGUgY29tbWFuZCBsaW5lLgotICA6OnRl
c3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOwotfQotYGBgCi0KLSMjIFNlbGVjdGluZyBUZXN0cyAjIwotCi1UaGlzIHNlY3Rpb24g
c2hvd3MgdmFyaW91cyBvcHRpb25zIGZvciBjaG9vc2luZyB3aGljaCB0ZXN0cyB0byBydW4uCi0K
LSMjIyBMaXN0aW5nIFRlc3QgTmFtZXMgIyMjCi0KLVNvbWV0aW1lcyBpdCBpcyBuZWNlc3Nhcnkg
dG8gbGlzdCB0aGUgYXZhaWxhYmxlIHRlc3RzIGluIGEgcHJvZ3JhbSBiZWZvcmUKLXJ1bm5pbmcg
dGhlbSBzbyB0aGF0IGEgZmlsdGVyIG1heSBiZSBhcHBsaWVkIGlmIG5lZWRlZC4gSW5jbHVkaW5n
IHRoZSBmbGFnCi1gLS1ndGVzdF9saXN0X3Rlc3RzYCBvdmVycmlkZXMgYWxsIG90aGVyIGZsYWdz
IGFuZCBsaXN0cyB0ZXN0cyBpbiB0aGUgZm9sbG93aW5nCi1mb3JtYXQ6Ci1gYGAKLVRlc3RDYXNl
MS4KLSAgVGVzdE5hbWUxCi0gIFRlc3ROYW1lMgotVGVzdENhc2UyLgotICBUZXN0TmFtZQotYGBg
Ci0KLU5vbmUgb2YgdGhlIHRlc3RzIGxpc3RlZCBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFn
IGlzIHByb3ZpZGVkLiBUaGVyZSBpcyBubwotY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJp
YWJsZSBmb3IgdGhpcyBmbGFnLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yy4KLQotIyMjIFJ1bm5pbmcgYSBTdWJzZXQgb2YgdGhlIFRlc3RzICMjIwotCi1CeSBkZWZhdWx0
LCBhIEdvb2dsZSBUZXN0IHByb2dyYW0gcnVucyBhbGwgdGVzdHMgdGhlIHVzZXIgaGFzIGRlZmlu
ZWQuCi1Tb21ldGltZXMsIHlvdSB3YW50IHRvIHJ1biBvbmx5IGEgc3Vic2V0IG9mIHRoZSB0ZXN0
cyAoZS5nLiBmb3IgZGVidWdnaW5nIG9yCi1xdWlja2x5IHZlcmlmeWluZyBhIGNoYW5nZSkuIElm
IHlvdSBzZXQgdGhlIGBHVEVTVF9GSUxURVJgIGVudmlyb25tZW50IHZhcmlhYmxlCi1vciB0aGUg
YC0tZ3Rlc3RfZmlsdGVyYCBmbGFnIHRvIGEgZmlsdGVyIHN0cmluZywgR29vZ2xlIFRlc3Qgd2ls
bCBvbmx5IHJ1biB0aGUKLXRlc3RzIHdob3NlIGZ1bGwgbmFtZXMgKGluIHRoZSBmb3JtIG9mIGBU
ZXN0Q2FzZU5hbWUuVGVzdE5hbWVgKSBtYXRjaCB0aGUKLWZpbHRlci4KLQotVGhlIGZvcm1hdCBv
ZiBhIGZpbHRlciBpcyBhICdgOmAnLXNlcGFyYXRlZCBsaXN0IG9mIHdpbGRjYXJkIHBhdHRlcm5z
IChjYWxsZWQKLXRoZSBwb3NpdGl2ZSBwYXR0ZXJucykgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBh
ICdgLWAnIGFuZCBhbm90aGVyCi0nYDpgJy1zZXBhcmF0ZWQgcGF0dGVybiBsaXN0IChjYWxsZWQg
dGhlIG5lZ2F0aXZlIHBhdHRlcm5zKS4gQSB0ZXN0IG1hdGNoZXMgdGhlCi1maWx0ZXIgaWYgYW5k
IG9ubHkgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIHBvc2l0aXZlIHBhdHRlcm5zIGJ1dCBkb2Vz
IG5vdAotbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KLQotQSBwYXR0ZXJuIG1h
eSBjb250YWluIGAnKidgIChtYXRjaGVzIGFueSBzdHJpbmcpIG9yIGAnPydgIChtYXRjaGVzIGFu
eSBzaW5nbGUKLWNoYXJhY3RlcikuIEZvciBjb252ZW5pZW5jZSwgdGhlIGZpbHRlciBgJyotTmVn
YXRpdmVQYXR0ZXJucydgIGNhbiBiZSBhbHNvCi13cml0dGVuIGFzIGAnLU5lZ2F0aXZlUGF0dGVy
bnMnYC4KLQotRm9yIGV4YW1wbGU6Ci0KLSAgKiBgLi9mb29fdGVzdGAgSGFzIG5vIGZsYWcsIGFu
ZCB0aHVzIHJ1bnMgYWxsIGl0cyB0ZXN0cy4KLSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRl
cj0qYCBBbHNvIHJ1bnMgZXZlcnl0aGluZywgZHVlIHRvIHRoZSBzaW5nbGUgbWF0Y2gtZXZlcnl0
aGluZyBgKmAgdmFsdWUuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4q
YCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YC4KLSAgKiBgLi9mb29fdGVz
dCAtLWd0ZXN0X2ZpbHRlcj0qTnVsbCo6KkNvbnN0cnVjdG9yKmAgUnVucyBhbnkgdGVzdCB3aG9z
ZSBmdWxsIG5hbWUgY29udGFpbnMgZWl0aGVyIGAiTnVsbCJgIG9yIGAiQ29uc3RydWN0b3IiYC4K
LSAgKiBgLi9mb29fdGVzdCAtLWd0ZXN0X2ZpbHRlcj0tKkRlYXRoVGVzdC4qYCBSdW5zIGFsbCBu
b24tZGVhdGggdGVzdHMuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9Rm9vVGVzdC4q
LUZvb1Rlc3QuQmFyYCBSdW5zIGV2ZXJ5dGhpbmcgaW4gdGVzdCBjYXNlIGBGb29UZXN0YCBleGNl
cHQgYEZvb1Rlc3QuQmFyYC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMu
Ci0KLSMjIyBUZW1wb3JhcmlseSBEaXNhYmxpbmcgVGVzdHMgIyMjCi0KLUlmIHlvdSBoYXZlIGEg
YnJva2VuIHRlc3QgdGhhdCB5b3UgY2Fubm90IGZpeCByaWdodCBhd2F5LCB5b3UgY2FuIGFkZCB0
aGUKLWBESVNBQkxFRF9gIHByZWZpeCB0byBpdHMgbmFtZS4gVGhpcyB3aWxsIGV4Y2x1ZGUgaXQg
ZnJvbSBleGVjdXRpb24uIFRoaXMgaXMKLWJldHRlciB0aGFuIGNvbW1lbnRpbmcgb3V0IHRoZSBj
b2RlIG9yIHVzaW5nIGAjaWYgMGAsIGFzIGRpc2FibGVkIHRlc3RzIGFyZQotc3RpbGwgY29tcGls
ZWQgKGFuZCB0aHVzIHdvbid0IHJvdCkuCi0KLUlmIHlvdSBuZWVkIHRvIGRpc2FibGUgYWxsIHRl
c3RzIGluIGEgdGVzdCBjYXNlLCB5b3UgY2FuIGVpdGhlciBhZGQgYERJU0FCTEVEX2AKLXRvIHRo
ZSBmcm9udCBvZiB0aGUgbmFtZSBvZiBlYWNoIHRlc3QsIG9yIGFsdGVybmF0aXZlbHkgYWRkIGl0
IHRvIHRoZSBmcm9udCBvZgotdGhlIHRlc3QgY2FzZSBuYW1lLgotCi1Gb3IgZXhhbXBsZSwgdGhl
IGZvbGxvd2luZyB0ZXN0cyB3b24ndCBiZSBydW4gYnkgR29vZ2xlIFRlc3QsIGV2ZW4gdGhvdWdo
IHRoZXkKLXdpbGwgc3RpbGwgYmUgY29tcGlsZWQ6Ci0KLWBgYAotLy8gVGVzdHMgdGhhdCBGb28g
ZG9lcyBBYmMuCi1URVNUKEZvb1Rlc3QsIERJU0FCTEVEX0RvZXNBYmMpIHsgLi4uIH0KLQotY2xh
c3MgRElTQUJMRURfQmFyVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQot
Ly8gVGVzdHMgdGhhdCBCYXIgZG9lcyBYeXouCi1URVNUX0YoRElTQUJMRURfQmFyVGVzdCwgRG9l
c1h5eikgeyAuLi4gfQotYGBgCi0KLV9Ob3RlOl8gVGhpcyBmZWF0dXJlIHNob3VsZCBvbmx5IGJl
IHVzZWQgZm9yIHRlbXBvcmFyeSBwYWluLXJlbGllZi4gWW91IHN0aWxsCi1oYXZlIHRvIGZpeCB0
aGUgZGlzYWJsZWQgdGVzdHMgYXQgYSBsYXRlciBkYXRlLiBBcyBhIHJlbWluZGVyLCBHb29nbGUg
VGVzdCB3aWxsCi1wcmludCBhIGJhbm5lciB3YXJuaW5nIHlvdSBpZiBhIHRlc3QgcHJvZ3JhbSBj
b250YWlucyBhbnkgZGlzYWJsZWQgdGVzdHMuCi0KLV9UaXA6XyBZb3UgY2FuIGVhc2lseSBjb3Vu
dCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3RzIHlvdSBoYXZlCi11c2luZyBgZ3JlcGAuIFRo
aXMgbnVtYmVyIGNhbiBiZSB1c2VkIGFzIGEgbWV0cmljIGZvciBpbXByb3ZpbmcgeW91cgotdGVz
dCBxdWFsaXR5LgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMj
IFRlbXBvcmFyaWx5IEVuYWJsaW5nIERpc2FibGVkIFRlc3RzICMjIwotCi1UbyBpbmNsdWRlIFtk
aXNhYmxlZCB0ZXN0c10oI3RlbXBvcmFyaWx5LWRpc2FibGluZy10ZXN0cykgaW4gdGVzdAotZXhl
Y3V0aW9uLCBqdXN0IGludm9rZSB0aGUgdGVzdCBwcm9ncmFtIHdpdGggdGhlCi1gLS1ndGVzdF9h
bHNvX3J1bl9kaXNhYmxlZF90ZXN0c2AgZmxhZyBvciBzZXQgdGhlCi1gR1RFU1RfQUxTT19SVU5f
RElTQUJMRURfVEVTVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgdmFsdWUgb3RoZXIKLXRo
YW4gYDBgLiAgWW91IGNhbiBjb21iaW5lIHRoaXMgd2l0aCB0aGUKLVstLWd0ZXN0XC1maWx0ZXJd
KCNydW5uaW5nLWEtc3Vic2V0LW9mLXRoZV90ZXN0cykgZmxhZyB0byBmdXJ0aGVyIHNlbGVjdAot
d2hpY2ggZGlzYWJsZWQgdGVzdHMgdG8gcnVuLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdp
bmRvd3MsIE1hYzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KLQotIyMgUmVwZWF0aW5nIHRoZSBUZXN0
cyAjIwotCi1PbmNlIGluIGEgd2hpbGUgeW91J2xsIHJ1biBpbnRvIGEgdGVzdCB3aG9zZSByZXN1
bHQgaXMgaGl0LW9yLW1pc3MuIFBlcmhhcHMgaXQKLXdpbGwgZmFpbCBvbmx5IDElIG9mIHRoZSB0
aW1lLCBtYWtpbmcgaXQgcmF0aGVyIGhhcmQgdG8gcmVwcm9kdWNlIHRoZSBidWcgdW5kZXIKLWEg
ZGVidWdnZXIuIFRoaXMgY2FuIGJlIGEgbWFqb3Igc291cmNlIG9mIGZydXN0cmF0aW9uLgotCi1U
aGUgYC0tZ3Rlc3RfcmVwZWF0YCBmbGFnIGFsbG93cyB5b3UgdG8gcmVwZWF0IGFsbCAob3Igc2Vs
ZWN0ZWQpIHRlc3QgbWV0aG9kcwotaW4gYSBwcm9ncmFtIG1hbnkgdGltZXMuIEhvcGVmdWxseSwg
YSBmbGFreSB0ZXN0IHdpbGwgZXZlbnR1YWxseSBmYWlsIGFuZCBnaXZlCi15b3UgYSBjaGFuY2Ug
dG8gZGVidWcuIEhlcmUncyBob3cgdG8gdXNlIGl0OgotCi18IGAkIGZvb190ZXN0IC0tZ3Rlc3Rf
cmVwZWF0PTEwMDBgIHwgUmVwZWF0IGZvb1xfdGVzdCAxMDAwIHRpbWVzIGFuZCBkb24ndCBzdG9w
IGF0IGZhaWx1cmVzLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci18
IGAkIGZvb190ZXN0IC0tZ3Rlc3RfcmVwZWF0PS0xYCAgIHwgQSBuZWdhdGl2ZSBjb3VudCBtZWFu
cyByZXBlYXRpbmcgZm9yZXZlci4gICAgICAgICAgICAgICB8Ci18IGAkIGZvb190ZXN0IC0tZ3Rl
c3RfcmVwZWF0PTEwMDAgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYCB8IFJlcGVhdCBmb29cX3Rl
c3QgMTAwMCB0aW1lcywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZhaWx1cmUuIFRoaXMgaXMgZXNw
ZWNpYWxseSB1c2VmdWwgd2hlbiBydW5uaW5nIHVuZGVyIGEgZGVidWdnZXI6IHdoZW4gdGhlIHRl
c3RmYWlscywgaXQgd2lsbCBkcm9wIGludG8gdGhlIGRlYnVnZ2VyIGFuZCB5b3UgY2FuIHRoZW4g
aW5zcGVjdCB2YXJpYWJsZXMgYW5kIHN0YWNrcy4gfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3Jl
cGVhdD0xMDAwIC0tZ3Rlc3RfZmlsdGVyPUZvb0JhcmAgfCBSZXBlYXQgdGhlIHRlc3RzIHdob3Nl
IG5hbWUgbWF0Y2hlcyB0aGUgZmlsdGVyIDEwMDAgdGltZXMuIHwKLQotSWYgeW91ciB0ZXN0IHBy
b2dyYW0gY29udGFpbnMgZ2xvYmFsIHNldC11cC90ZWFyLWRvd24gY29kZSByZWdpc3RlcmVkCi11
c2luZyBgQWRkR2xvYmFsVGVzdEVudmlyb25tZW50KClgLCBpdCB3aWxsIGJlIHJlcGVhdGVkIGlu
IGVhY2gKLWl0ZXJhdGlvbiBhcyB3ZWxsLCBhcyB0aGUgZmxha2luZXNzIG1heSBiZSBpbiBpdC4g
WW91IGNhbiBhbHNvIHNwZWNpZnkKLXRoZSByZXBlYXQgY291bnQgYnkgc2V0dGluZyB0aGUgYEdU
RVNUX1JFUEVBVGAgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51
eCwgV2luZG93cywgTWFjLgotCi0jIyBTaHVmZmxpbmcgdGhlIFRlc3RzICMjCi0KLVlvdSBjYW4g
c3BlY2lmeSB0aGUgYC0tZ3Rlc3Rfc2h1ZmZsZWAgZmxhZyAob3Igc2V0IHRoZSBgR1RFU1RfU0hV
RkZMRWAKLWVudmlyb25tZW50IHZhcmlhYmxlIHRvIGAxYCkgdG8gcnVuIHRoZSB0ZXN0cyBpbiBh
IHByb2dyYW0gaW4gYSByYW5kb20KLW9yZGVyLiBUaGlzIGhlbHBzIHRvIHJldmVhbCBiYWQgZGVw
ZW5kZW5jaWVzIGJldHdlZW4gdGVzdHMuCi0KLUJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHVzZXMg
YSByYW5kb20gc2VlZCBjYWxjdWxhdGVkIGZyb20gdGhlIGN1cnJlbnQKLXRpbWUuIFRoZXJlZm9y
ZSB5b3UnbGwgZ2V0IGEgZGlmZmVyZW50IG9yZGVyIGV2ZXJ5IHRpbWUuIFRoZSBjb25zb2xlCi1v
dXRwdXQgaW5jbHVkZXMgdGhlIHJhbmRvbSBzZWVkIHZhbHVlLCBzdWNoIHRoYXQgeW91IGNhbiBy
ZXByb2R1Y2UgYW4KLW9yZGVyLXJlbGF0ZWQgdGVzdCBmYWlsdXJlIGxhdGVyLiBUbyBzcGVjaWZ5
IHRoZSByYW5kb20gc2VlZAotZXhwbGljaXRseSwgdXNlIHRoZSBgLS1ndGVzdF9yYW5kb21fc2Vl
ZD1TRUVEYCBmbGFnIChvciBzZXQgdGhlCi1gR1RFU1RfUkFORE9NX1NFRURgIGVudmlyb25tZW50
IHZhcmlhYmxlKSwgd2hlcmUgYFNFRURgIGlzIGFuIGludGVnZXIKLWJldHdlZW4gMCBhbmQgOTk5
OTkuIFRoZSBzZWVkIHZhbHVlIDAgaXMgc3BlY2lhbDogaXQgdGVsbHMgR29vZ2xlIFRlc3QKLXRv
IGRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNhbGN1bGF0aW5nIHRoZSBzZWVkIGZyb20gdGhl
IGN1cnJlbnQKLXRpbWUuCi0KLUlmIHlvdSBjb21iaW5lIHRoaXMgd2l0aCBgLS1ndGVzdF9yZXBl
YXQ9TmAsIEdvb2dsZSBUZXN0IHdpbGwgcGljayBhCi1kaWZmZXJlbnQgcmFuZG9tIHNlZWQgYW5k
IHJlLXNodWZmbGUgdGhlIHRlc3RzIGluIGVhY2ggaXRlcmF0aW9uLgotCi1fQXZhaWxhYmlsaXR5
Ol8gTGludXgsIFdpbmRvd3MsIE1hYzsgc2luY2UgdjEuNC4wLgotCi0jIyBDb250cm9sbGluZyBU
ZXN0IE91dHB1dCAjIwotCi1UaGlzIHNlY3Rpb24gdGVhY2hlcyBob3cgdG8gdHdlYWsgdGhlIHdh
eSB0ZXN0IHJlc3VsdHMgYXJlIHJlcG9ydGVkLgotCi0jIyMgQ29sb3JlZCBUZXJtaW5hbCBPdXRw
dXQgIyMjCi0KLUdvb2dsZSBUZXN0IGNhbiB1c2UgY29sb3JzIGluIGl0cyB0ZXJtaW5hbCBvdXRw
dXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BvdAotdGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0ZXN0
cywgYW5kIHdoZXRoZXIgdGVzdHMgcGFzc2VkLgotCi1Zb3UgY2FuIHNldCB0aGUgR1RFU1RcX0NP
TE9SIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHNldCB0aGUgYC0tZ3Rlc3RfY29sb3JgCi1jb21t
YW5kIGxpbmUgZmxhZyB0byBgeWVzYCwgYG5vYCwgb3IgYGF1dG9gICh0aGUgZGVmYXVsdCkgdG8g
ZW5hYmxlIGNvbG9ycywKLWRpc2FibGUgY29sb3JzLCBvciBsZXQgR29vZ2xlIFRlc3QgZGVjaWRl
LiBXaGVuIHRoZSB2YWx1ZSBpcyBgYXV0b2AsIEdvb2dsZQotVGVzdCB3aWxsIHVzZSBjb2xvcnMg
aWYgYW5kIG9ubHkgaWYgdGhlIG91dHB1dCBnb2VzIHRvIGEgdGVybWluYWwgYW5kIChvbgotbm9u
LVdpbmRvd3MgcGxhdGZvcm1zKSB0aGUgYFRFUk1gIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNl
dCB0byBgeHRlcm1gIG9yCi1geHRlcm0tY29sb3JgLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgs
IFdpbmRvd3MsIE1hYy4KLQotIyMjIFN1cHByZXNzaW5nIHRoZSBFbGFwc2VkIFRpbWUgIyMjCi0K
LUJ5IGRlZmF1bHQsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgdGltZSBpdCB0YWtlcyB0byBydW4g
ZWFjaCB0ZXN0LiAgVG8KLXN1cHByZXNzIHRoYXQsIHJ1biB0aGUgdGVzdCBwcm9ncmFtIHdpdGgg
dGhlIGAtLWd0ZXN0X3ByaW50X3RpbWU9MGAKLWNvbW1hbmQgbGluZSBmbGFnLiAgU2V0dGluZyB0
aGUgYEdURVNUX1BSSU5UX1RJTUVgIGVudmlyb25tZW50Ci12YXJpYWJsZSB0byBgMGAgaGFzIHRo
ZSBzYW1lIGVmZmVjdC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICAo
SW4gR29vZ2xlIFRlc3QgMS4zLjAgYW5kIGxvd2VyLAotdGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMg
dGhhdCB0aGUgZWxhcHNlZCB0aW1lIGlzICoqbm90KiogcHJpbnRlZC4pCi0KLSMjIyBHZW5lcmF0
aW5nIGFuIFhNTCBSZXBvcnQgIyMjCi0KLUdvb2dsZSBUZXN0IGNhbiBlbWl0IGEgZGV0YWlsZWQg
WE1MIHJlcG9ydCB0byBhIGZpbGUgaW4gYWRkaXRpb24gdG8gaXRzIG5vcm1hbAotdGV4dHVhbCBv
dXRwdXQuIFRoZSByZXBvcnQgY29udGFpbnMgdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdCwgYW5k
IHRodXMgY2FuCi1oZWxwIHlvdSBpZGVudGlmeSBzbG93IHRlc3RzLgotCi1UbyBnZW5lcmF0ZSB0
aGUgWE1MIHJlcG9ydCwgc2V0IHRoZSBgR1RFU1RfT1VUUFVUYCBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBvciB0aGUKLWAtLWd0ZXN0X291dHB1dGAgZmxhZyB0byB0aGUgc3RyaW5nIGAieG1sOl9wYXRo
X3RvX291dHB1dF9maWxlXyJgLCB3aGljaCB3aWxsCi1jcmVhdGUgdGhlIGZpbGUgYXQgdGhlIGdp
dmVuIGxvY2F0aW9uLiBZb3UgY2FuIGFsc28ganVzdCB1c2UgdGhlIHN0cmluZwotYCJ4bWwiYCwg
aW4gd2hpY2ggY2FzZSB0aGUgb3V0cHV0IGNhbiBiZSBmb3VuZCBpbiB0aGUgYHRlc3RfZGV0YWls
LnhtbGAgZmlsZSBpbgotdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotCi1JZiB5b3Ugc3BlY2lmeSBh
IGRpcmVjdG9yeSAoZm9yIGV4YW1wbGUsIGAieG1sOm91dHB1dC9kaXJlY3RvcnkvImAgb24gTGlu
dXggb3IKLWAieG1sOm91dHB1dFxkaXJlY3RvcnlcImAgb24gV2luZG93cyksIEdvb2dsZSBUZXN0
IHdpbGwgY3JlYXRlIHRoZSBYTUwgZmlsZSBpbgotdGhhdCBkaXJlY3RvcnksIG5hbWVkIGFmdGVy
IHRoZSB0ZXN0IGV4ZWN1dGFibGUgKGUuZy4gYGZvb190ZXN0LnhtbGAgZm9yIHRlc3QKLXByb2dy
YW0gYGZvb190ZXN0YCBvciBgZm9vX3Rlc3QuZXhlYCkuIElmIHRoZSBmaWxlIGFscmVhZHkgZXhp
c3RzIChwZXJoYXBzIGxlZnQKLW92ZXIgZnJvbSBhIHByZXZpb3VzIHJ1biksIEdvb2dsZSBUZXN0
IHdpbGwgcGljayBhIGRpZmZlcmVudCBuYW1lIChlLmcuCi1gZm9vX3Rlc3RfMS54bWxgKSB0byBh
dm9pZCBvdmVyd3JpdGluZyBpdC4KLQotVGhlIHJlcG9ydCB1c2VzIHRoZSBmb3JtYXQgZGVzY3Jp
YmVkIGhlcmUuICBJdCBpcyBiYXNlZCBvbiB0aGUKLWBqdW5pdHJlcG9ydGAgQW50IHRhc2sgYW5k
IGNhbiBiZSBwYXJzZWQgYnkgcG9wdWxhciBjb250aW51b3VzIGJ1aWxkCi1zeXN0ZW1zIGxpa2Ug
W0h1ZHNvbl0oaHR0cHM6Ly9odWRzb24uZGV2LmphdmEubmV0LykuIFNpbmNlIHRoYXQgZm9ybWF0
Ci13YXMgb3JpZ2luYWxseSBpbnRlbmRlZCBmb3IgSmF2YSwgYSBsaXR0bGUgaW50ZXJwcmV0YXRp
b24gaXMgcmVxdWlyZWQKLXRvIG1ha2UgaXQgYXBwbHkgdG8gR29vZ2xlIFRlc3QgdGVzdHMsIGFz
IHNob3duIGhlcmU6Ci0KLWBgYAotPHRlc3RzdWl0ZXMgbmFtZT0iQWxsVGVzdHMiIC4uLj4KLSAg
PHRlc3RzdWl0ZSBuYW1lPSJ0ZXN0X2Nhc2VfbmFtZSIgLi4uPgotICAgIDx0ZXN0Y2FzZSBuYW1l
PSJ0ZXN0X25hbWUiIC4uLj4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSIuLi4iLz4K
LSAgICA8L3Rlc3RjYXNlPgotICA8L3Rlc3RzdWl0ZT4KLTwvdGVzdHN1aXRlcz4KLWBgYAotCi0g
ICogVGhlIHJvb3QgYDx0ZXN0c3VpdGVzPmAgZWxlbWVudCBjb3JyZXNwb25kcyB0byB0aGUgZW50
aXJlIHRlc3QgcHJvZ3JhbS4KLSAgKiBgPHRlc3RzdWl0ZT5gIGVsZW1lbnRzIGNvcnJlc3BvbmQg
dG8gR29vZ2xlIFRlc3QgdGVzdCBjYXNlcy4KLSAgKiBgPHRlc3RjYXNlPmAgZWxlbWVudHMgY29y
cmVzcG9uZCB0byBHb29nbGUgVGVzdCB0ZXN0IGZ1bmN0aW9ucy4KLQotRm9yIGluc3RhbmNlLCB0
aGUgZm9sbG93aW5nIHByb2dyYW0KLQotYGBgCi1URVNUKE1hdGhUZXN0LCBBZGRpdGlvbikgeyAu
Li4gfQotVEVTVChNYXRoVGVzdCwgU3VidHJhY3Rpb24pIHsgLi4uIH0KLVRFU1QoTG9naWNUZXN0
LCBOb25Db250cmFkaWN0aW9uKSB7IC4uLiB9Ci1gYGAKLQotY291bGQgZ2VuZXJhdGUgdGhpcyBy
ZXBvcnQ6Ci0KLWBgYAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTx0
ZXN0c3VpdGVzIHRlc3RzPSIzIiBmYWlsdXJlcz0iMSIgZXJyb3JzPSIwIiB0aW1lPSIzNSIgbmFt
ZT0iQWxsVGVzdHMiPgotICA8dGVzdHN1aXRlIG5hbWU9Ik1hdGhUZXN0IiB0ZXN0cz0iMiIgZmFp
bHVyZXM9IjEiIGVycm9ycz0iMCIgdGltZT0iMTUiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJBZGRp
dGlvbiIgc3RhdHVzPSJydW4iIHRpbWU9IjciIGNsYXNzbmFtZT0iIj4KLSAgICAgIDxmYWlsdXJl
IG1lc3NhZ2U9IlZhbHVlIG9mOiBhZGQoMSwgMSkmI3gwQTsgQWN0dWFsOiAzJiN4MEE7RXhwZWN0
ZWQ6IDIiIHR5cGU9IiIvPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUgb2Y6IGFkZCgx
LCAtMSkmI3gwQTsgQWN0dWFsOiAxJiN4MEE7RXhwZWN0ZWQ6IDAiIHR5cGU9IiIvPgotICAgIDwv
dGVzdGNhc2U+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlN1YnRyYWN0aW9uIiBzdGF0dXM9InJ1biIg
dGltZT0iNSIgY2xhc3NuYW1lPSIiPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwvdGVzdHN1aXRlPgot
ICA8dGVzdHN1aXRlIG5hbWU9IkxvZ2ljVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBlcnJv
cnM9IjAiIHRpbWU9IjUiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJOb25Db250cmFkaWN0aW9uIiBz
dGF0dXM9InJ1biIgdGltZT0iNSIgY2xhc3NuYW1lPSIiPgotICAgIDwvdGVzdGNhc2U+Ci0gIDwv
dGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotYGBgCi0KLVRoaW5ncyB0byBub3RlOgotCi0gICog
VGhlIGB0ZXN0c2AgYXR0cmlidXRlIG9mIGEgYDx0ZXN0c3VpdGVzPmAgb3IgYDx0ZXN0c3VpdGU+
YCBlbGVtZW50IHRlbGxzIGhvdyBtYW55IHRlc3QgZnVuY3Rpb25zIHRoZSBHb29nbGUgVGVzdCBw
cm9ncmFtIG9yIHRlc3QgY2FzZSBjb250YWlucywgd2hpbGUgdGhlIGBmYWlsdXJlc2AgYXR0cmli
dXRlIHRlbGxzIGhvdyBtYW55IG9mIHRoZW0gZmFpbGVkLgotICAqIFRoZSBgdGltZWAgYXR0cmli
dXRlIGV4cHJlc3NlcyB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QsIHRlc3QgY2FzZSwgb3IgZW50
aXJlIHRlc3QgcHJvZ3JhbSBpbiBtaWxsaXNlY29uZHMuCi0gICogRWFjaCBgPGZhaWx1cmU+YCBl
bGVtZW50IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZhaWxlZCBHb29nbGUgVGVzdCBhc3NlcnRp
b24uCi0gICogU29tZSBKVW5pdCBjb25jZXB0cyBkb24ndCBhcHBseSB0byBHb29nbGUgVGVzdCwg
eWV0IHdlIGhhdmUgdG8gY29uZm9ybSB0byB0aGUgRFRELiBUaGVyZWZvcmUgeW91J2xsIHNlZSBz
b21lIGR1bW15IGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIGluIHRoZSByZXBvcnQuIFlvdSBjYW4g
c2FmZWx5IGlnbm9yZSB0aGVzZSBwYXJ0cy4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5k
b3dzLCBNYWMuCi0KLSMjIENvbnRyb2xsaW5nIEhvdyBGYWlsdXJlcyBBcmUgUmVwb3J0ZWQgIyMK
LQotIyMjIFR1cm5pbmcgQXNzZXJ0aW9uIEZhaWx1cmVzIGludG8gQnJlYWstUG9pbnRzICMjIwot
Ci1XaGVuIHJ1bm5pbmcgdGVzdCBwcm9ncmFtcyB1bmRlciBhIGRlYnVnZ2VyLCBpdCdzIHZlcnkg
Y29udmVuaWVudCBpZiB0aGUKLWRlYnVnZ2VyIGNhbiBjYXRjaCBhbiBhc3NlcnRpb24gZmFpbHVy
ZSBhbmQgYXV0b21hdGljYWxseSBkcm9wIGludG8gaW50ZXJhY3RpdmUKLW1vZGUuIEdvb2dsZSBU
ZXN0J3MgX2JyZWFrLW9uLWZhaWx1cmVfIG1vZGUgc3VwcG9ydHMgdGhpcyBiZWhhdmlvci4KLQot
VG8gZW5hYmxlIGl0LCBzZXQgdGhlIGBHVEVTVF9CUkVBS19PTl9GQUlMVVJFYCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBhIHZhbHVlCi1vdGhlciB0aGFuIGAwYCAuIEFsdGVybmF0aXZlbHksIHlv
dSBjYW4gdXNlIHRoZSBgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlYAotY29tbWFuZCBsaW5lIGZs
YWcuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgRGlzYWJs
aW5nIENhdGNoaW5nIFRlc3QtVGhyb3duIEV4Y2VwdGlvbnMgIyMjCi0KLUdvb2dsZSBUZXN0IGNh
biBiZSB1c2VkIGVpdGhlciB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucyBlbmFibGVkLiAgSWYK
LWEgdGVzdCB0aHJvd3MgYSBDKysgZXhjZXB0aW9uIG9yIChvbiBXaW5kb3dzKSBhIHN0cnVjdHVy
ZWQgZXhjZXB0aW9uCi0oU0VIKSwgYnkgZGVmYXVsdCBHb29nbGUgVGVzdCBjYXRjaGVzIGl0LCBy
ZXBvcnRzIGl0IGFzIGEgdGVzdAotZmFpbHVyZSwgYW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0
IHRlc3QgbWV0aG9kLiAgVGhpcyBtYXhpbWl6ZXMgdGhlCi1jb3ZlcmFnZSBvZiBhIHRlc3QgcnVu
LiAgQWxzbywgb24gV2luZG93cyBhbiB1bmNhdWdodCBleGNlcHRpb24gd2lsbAotY2F1c2UgYSBw
b3AtdXAgd2luZG93LCBzbyBjYXRjaGluZyB0aGUgZXhjZXB0aW9ucyBhbGxvd3MgeW91IHRvIHJ1
bgotdGhlIHRlc3RzIGF1dG9tYXRpY2FsbHkuCi0KLVdoZW4gZGVidWdnaW5nIHRoZSB0ZXN0IGZh
aWx1cmVzLCBob3dldmVyLCB5b3UgbWF5IGluc3RlYWQgd2FudCB0aGUKLWV4Y2VwdGlvbnMgdG8g
YmUgaGFuZGxlZCBieSB0aGUgZGVidWdnZXIsIHN1Y2ggdGhhdCB5b3UgY2FuIGV4YW1pbmUKLXRo
ZSBjYWxsIHN0YWNrIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4gIFRvIGFjaGlldmUgdGhh
dCwgc2V0IHRoZQotYEdURVNUX0NBVENIX0VYQ0VQVElPTlNgIGVudmlyb25tZW50IHZhcmlhYmxl
IHRvIGAwYCwgb3IgdXNlIHRoZQotYC0tZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucz0wYCBmbGFnIHdo
ZW4gcnVubmluZyB0aGUgdGVzdHMuCi0KLSoqQXZhaWxhYmlsaXR5Kio6IExpbnV4LCBXaW5kb3dz
LCBNYWMuCi0KLSMjIyBMZXR0aW5nIEFub3RoZXIgVGVzdGluZyBGcmFtZXdvcmsgRHJpdmUgIyMj
Ci0KLUlmIHlvdSB3b3JrIG9uIGEgcHJvamVjdCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXNpbmcg
YW5vdGhlciB0ZXN0aW5nCi1mcmFtZXdvcmsgYW5kIGlzIG5vdCByZWFkeSB0byBjb21wbGV0ZWx5
IHN3aXRjaCB0byBHb29nbGUgVGVzdCB5ZXQsCi15b3UgY2FuIGdldCBtdWNoIG9mIEdvb2dsZSBU
ZXN0J3MgYmVuZWZpdCBieSB1c2luZyBpdHMgYXNzZXJ0aW9ucyBpbgoteW91ciBleGlzdGluZyB0
ZXN0cy4gIEp1c3QgY2hhbmdlIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gdG8gbG9vawotbGlrZToK
LQotYGBgCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9
IHRydWU7Ci0gIC8vIEltcG9ydGFudDogR29vZ2xlIFRlc3QgbXVzdCBiZSBpbml0aWFsaXplZC4K
LSAgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLi4uIHdoYXRl
dmVyIHlvdXIgZXhpc3RpbmcgdGVzdGluZyBmcmFtZXdvcmsgcmVxdWlyZXMgLi4uCi19Ci1gYGAK
LQotV2l0aCB0aGF0LCB5b3UgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluIGFkZGl0
aW9uIHRvIHRoZQotbmF0aXZlIGFzc2VydGlvbnMgeW91ciB0ZXN0aW5nIGZyYW1ld29yayBwcm92
aWRlcywgZm9yIGV4YW1wbGU6Ci0KLWBgYAotdm9pZCBUZXN0Rm9vRG9lc0JhcigpIHsKLSAgRm9v
IGZvbzsKLSAgRVhQRUNUX0xFKGZvby5CYXIoMSksIDEwMCk7ICAgICAvLyBBIEdvb2dsZSBUZXN0
IGFzc2VydGlvbi4KLSAgQ1BQVU5JVF9BU1NFUlQoZm9vLklzRW1wdHkoKSk7ICAvLyBBIG5hdGl2
ZSBhc3NlcnRpb24uCi19Ci1gYGAKLQotSWYgYSBHb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHMs
IGl0IHdpbGwgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBhbmQKLXRocm93IGFuIGV4Y2VwdGlvbiwg
d2hpY2ggd2lsbCBiZSB0cmVhdGVkIGFzIGEgZmFpbHVyZSBieSB5b3VyIGhvc3QKLXRlc3Rpbmcg
ZnJhbWV3b3JrLiAgSWYgeW91IGNvbXBpbGUgeW91ciBjb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNh
YmxlZCwKLWEgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbiB3aWxsIGluc3RlYWQgZXhpdCB5
b3VyIHByb2dyYW0gd2l0aCBhCi1ub24temVybyBjb2RlLCB3aGljaCB3aWxsIGFsc28gc2lnbmFs
IGEgdGVzdCBmYWlsdXJlIHRvIHlvdXIgdGVzdAotcnVubmVyLgotCi1JZiB5b3UgZG9uJ3Qgd3Jp
dGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSA9IHRydWU7YCBpbgot
eW91ciBgbWFpbigpYCwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IGVuYWJsZSB0aGlzIGZlYXR1cmUg
Ynkgc3BlY2lmeWluZwotdGhlIGAtLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmVgIGZsYWcgb24gdGhl
IGNvbW1hbmQtbGluZSBvciBzZXR0aW5nIHRoZQotYEdURVNUX1RIUk9XX09OX0ZBSUxVUkVgIGVu
dmlyb25tZW50IHZhcmlhYmxlIHRvIGEgbm9uLXplcm8gdmFsdWUuCi0KLV9BdmFpbGFiaWxpdHk6
XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS4zLjAuCi0KLSMjIERpc3RyaWJ1dGluZyBU
ZXN0IEZ1bmN0aW9ucyB0byBNdWx0aXBsZSBNYWNoaW5lcyAjIwotCi1JZiB5b3UgaGF2ZSBtb3Jl
IHRoYW4gb25lIG1hY2hpbmUgeW91IGNhbiB1c2UgdG8gcnVuIGEgdGVzdCBwcm9ncmFtLAoteW91
IG1pZ2h0IHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBhbmQgZ2V0
IHRoZQotcmVzdWx0IGZhc3Rlci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlxdWUgX3NoYXJkaW5nXywg
d2hlcmUgZWFjaCBtYWNoaW5lCi1pcyBjYWxsZWQgYSBfc2hhcmRfLgotCi1Hb29nbGUgVGVzdCBp
cyBjb21wYXRpYmxlIHdpdGggdGVzdCBzaGFyZGluZy4gIFRvIHRha2UgYWR2YW50YWdlIG9mCi10
aGlzIGZlYXR1cmUsIHlvdXIgdGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9mIEdvb2dsZSBUZXN0KSBu
ZWVkcyB0byBkbwotdGhlIGZvbGxvd2luZzoKLQotICAxLiBBbGxvY2F0ZSBhIG51bWJlciBvZiBt
YWNoaW5lcyAoc2hhcmRzKSB0byBydW4gdGhlIHRlc3RzLgotICAxLiBPbiBlYWNoIHNoYXJkLCBz
ZXQgdGhlIGBHVEVTVF9UT1RBTF9TSEFSRFNgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSB0
b3RhbCBudW1iZXIgb2Ygc2hhcmRzLiAgSXQgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIHNoYXJk
cy4KLSAgMS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hBUkRfSU5ERVhgIGVudmly
b25tZW50IHZhcmlhYmxlIHRvIHRoZSBpbmRleCBvZiB0aGUgc2hhcmQuICBEaWZmZXJlbnQgc2hh
cmRzIG11c3QgYmUgYXNzaWduZWQgZGlmZmVyZW50IGluZGljZXMsIHdoaWNoIG11c3QgYmUgaW4g
dGhlIHJhbmdlIGBbMCwgR1RFU1RfVE9UQUxfU0hBUkRTIC0gMV1gLgotICAxLiBSdW4gdGhlIHNh
bWUgdGVzdCBwcm9ncmFtIG9uIGFsbCBzaGFyZHMuICBXaGVuIEdvb2dsZSBUZXN0IHNlZXMgdGhl
IGFib3ZlIHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGl0IHdpbGwgc2VsZWN0IGEgc3Vic2V0
IG9mIHRoZSB0ZXN0IGZ1bmN0aW9ucyB0byBydW4uICBBY3Jvc3MgYWxsIHNoYXJkcywgZWFjaCB0
ZXN0IGZ1bmN0aW9uIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4YWN0bHkgb25jZS4KLSAg
MS4gV2FpdCBmb3IgYWxsIHNoYXJkcyB0byBmaW5pc2gsIHRoZW4gY29sbGVjdCBhbmQgcmVwb3J0
IHRoZSByZXN1bHRzLgotCi1Zb3VyIHByb2plY3QgbWF5IGhhdmUgdGVzdHMgdGhhdCB3ZXJlIHdy
aXR0ZW4gd2l0aG91dCBHb29nbGUgVGVzdCBhbmQKLXRodXMgZG9uJ3QgdW5kZXJzdGFuZCB0aGlz
IHByb3RvY29sLiAgSW4gb3JkZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIgdG8KLWZpZ3VyZSBvdXQg
d2hpY2ggdGVzdCBzdXBwb3J0cyBzaGFyZGluZywgaXQgY2FuIHNldCB0aGUgZW52aXJvbm1lbnQK
LXZhcmlhYmxlIGBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRWAgdG8gYSBub24tZXhpc3RlbnQgZmls
ZSBwYXRoLiAgSWYgYQotdGVzdCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJkaW5nLCBpdCB3aWxsIGNy
ZWF0ZSB0aGlzIGZpbGUgdG8KLWFja25vd2xlZGdlIHRoZSBmYWN0ICh0aGUgYWN0dWFsIGNvbnRl
bnRzIG9mIHRoZSBmaWxlIGFyZSBub3QKLWltcG9ydGFudCBhdCB0aGlzIHRpbWU7IGFsdGhvdWdo
IHdlIG1heSBzdGljayBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbgotaW4gaXQgaW4gdGhlIGZ1dHVy
ZS4pOyBvdGhlcndpc2UgaXQgd2lsbCBub3QgY3JlYXRlIGl0LgotCi1IZXJlJ3MgYW4gZXhhbXBs
ZSB0byBtYWtlIGl0IGNsZWFyLiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRlc3QgcHJvZ3JhbQotYGZv
b190ZXN0YCB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0IGZ1bmN0aW9uczoKLWBg
YAotVEVTVChBLCBWKQotVEVTVChBLCBXKQotVEVTVChCLCBYKQotVEVTVChCLCBZKQotVEVTVChC
LCBaKQotYGBgCi1hbmQgeW91IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3VyIGRpc3Bvc2FsLiAgVG8g
cnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbgotcGFyYWxsZWwsIHlvdSB3b3VsZCBzZXQgYEdURVNU
X1RPVEFMX1NIQVJEU2AgdG8gMyBvbiBhbGwgbWFjaGluZXMsIGFuZAotc2V0IGBHVEVTVF9TSEFS
RF9JTkRFWGAgdG8gMCwgMSwgYW5kIDIgb24gdGhlIG1hY2hpbmVzIHJlc3BlY3RpdmVseS4KLVRo
ZW4geW91IHdvdWxkIHJ1biB0aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVhY2ggbWFjaGluZS4KLQot
R29vZ2xlIFRlc3QgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBob3cgdGhlIHdvcmsgaXMg
ZGlzdHJpYnV0ZWQKLWFjcm9zcyB0aGUgc2hhcmRzLCBidXQgaGVyZSdzIG9uZSBwb3NzaWJsZSBz
Y2VuYXJpbzoKLQotICAqIE1hY2hpbmUgIzAgcnVucyBgQS5WYCBhbmQgYEIuWGAuCi0gICogTWFj
aGluZSAjMSBydW5zIGBBLldgIGFuZCBgQi5ZYC4KLSAgKiBNYWNoaW5lICMyIHJ1bnMgYEIuWmAu
Ci0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEu
My4wLgotCi0jIEZ1c2luZyBHb29nbGUgVGVzdCBTb3VyY2UgRmlsZXMgIwotCi1Hb29nbGUgVGVz
dCdzIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAoZXhjbHVkaW5nIGl0cyBv
d24KLXRlc3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0byBiZSBwYWNrYWdlZCB1
cCBpbiB0d28gZmlsZXMgKGEKLWAuaGAgYW5kIGEgYC5jY2ApIGluc3RlYWQsIHN1Y2ggdGhhdCB5
b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUgYW5kIHN0YXJ0IGhhY2tp
bmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1lbnRhbAotUHl0aG9uIHNj
cmlwdCBgZnVzZV9ndGVzdF9maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRzL2AgZGlyZWN0b3J5IChz
aW5jZSByZWxlYXNlIDEuMy4wKS4KLUFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjQgb3IgYWJv
dmUgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdAotZ28gdG8gdGhhdCBkaXJlY3Rvcnkg
YW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9ndGVzdF9maWxlcy5weSBPVVRQVVRfRElSCi1gYGAK
LQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJlY3RvcnkgYmVpbmcgY3Jl
YXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVzdC9ndGVzdC1hbGwuY2Ng
IGluIGl0LiAgVGhlc2UgZmlsZXMgY29udGFpbgotZXZlcnl0aGluZyB5b3UgbmVlZCB0byB1c2Ug
R29vZ2xlIFRlc3QuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZQoteW91IHdhbnQgYW5kIHlv
dSBhcmUgcmVhZHkgdG8gd3JpdGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0aGUKLVtzY3JpcHRzL3Rl
c3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKLWZpbGUgYXMgYW4gZXhhbXBs
ZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhlbS4KLQotIyBXaGVyZSB0
byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2ZSBub3cgbGVhcm5lZCBt
b3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKLXJlYWR5IHRvIHRhY2tsZSBt
b3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8gZGl2ZSBldmVuIGRlZXBl
ciwgeW91Ci1jYW4gcmVhZCB0aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVlc3Rpb25zXShWMV82X0ZB
US5tZCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfRG9jdW1lbnRhdGlvbi5t
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9Eb2N1bWVudGF0aW9uLm1kCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYTkyNDY2MGEzZGMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzZfRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICsw
LDAgQEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3aWtpIHBhZ2VzIGZvciBH
b29nbGUgVGVzdCAqKjEuNioqCi0tLSAqKmlmIHlvdSB1c2UgYSByZWxlYXNlZCB2ZXJzaW9uIG9m
IEdvb2dsZSBUZXN0LCBwbGVhc2UgcmVhZCB0aGUKLWRvY3VtZW50YXRpb24gZm9yIHRoYXQgc3Bl
Y2lmaWMgdmVyc2lvbiBpbnN0ZWFkLioqCi0KLSAgKiBbUHJpbWVyXShWMV82X1ByaW1lci5tZCkg
LS0gc3RhcnQgaGVyZSBpZiB5b3UgYXJlIG5ldyB0byBHb29nbGUgVGVzdC4KLSAgKiBbU2FtcGxl
c10oVjFfNl9TYW1wbGVzLm1kKSAtLSBsZWFybiBmcm9tIGV4YW1wbGVzLgotICAqIFtBZHZhbmNl
ZEd1aWRlXShWMV82X0FkdmFuY2VkR3VpZGUubWQpIC0tIGxlYXJuIG1vcmUgYWJvdXQgR29vZ2xl
IFRlc3QuCi0gICogW1hjb2RlR3VpZGVdKFYxXzZfWGNvZGVHdWlkZS5tZCkgLS0gaG93IHRvIHVz
ZSBHb29nbGUgVGVzdCBpbiBYY29kZSBvbiBNYWMuCi0gICogW0ZyZXF1ZW50bHktQXNrZWQgUXVl
c3Rpb25zXShWMV82X0ZBUS5tZCkgLS0gY2hlY2sgaGVyZSBiZWZvcmUgYXNraW5nIGEgcXVlc3Rp
b24gb24gdGhlIG1haWxpbmcgbGlzdC4KLQotVG8gY29udHJpYnV0ZSBjb2RlIHRvIEdvb2dsZSBU
ZXN0LCByZWFkOgotCi0gICogW0Rldkd1aWRlXShEZXZHdWlkZS5tZCkgLS0gcmVhZCB0aGlzIF9i
ZWZvcmVfIHdyaXRpbmcgeW91ciBmaXJzdCBwYXRjaC4KLSAgKiBbUHVtcE1hbnVhbF0oVjFfNl9Q
dW1wTWFudWFsLm1kKSAtLSBob3cgd2UgZ2VuZXJhdGUgc29tZSBvZiBHb29nbGUgVGVzdCdzIHNv
dXJjZSBmaWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzZfRkFRLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0ZBUS5tZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3Zjc4NDA3NzIyLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X0ZBUS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MzggKzAsMCBAQAotCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2VyIHRvIHlvdXIgcXVl
c3Rpb24gaGVyZSwgYW5kIHlvdSBoYXZlIHJlYWQKLVtQcmltZXJdKFYxXzZfUHJpbWVyLm1kKSBh
bmQgW0FkdmFuY2VkR3VpZGVdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCksIHNlbmQgaXQgdG8KLWdv
b2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbS4KLQotIyMgV2h5IHNob3VsZCBJIHVz
ZSBHb29nbGUgVGVzdCBpbnN0ZWFkIG9mIG15IGZhdm9yaXRlIEMrKyB0ZXN0aW5nIGZyYW1ld29y
az8gIyMKLQotRmlyc3QsIGxldCB1cyBzYXkgY2xlYXJseSB0aGF0IHdlIGRvbid0IHdhbnQgdG8g
Z2V0IGludG8gdGhlIGRlYmF0ZSBvZgotd2hpY2ggQysrIHRlc3RpbmcgZnJhbWV3b3JrIGlzICoq
dGhlIGJlc3QqKi4gIFRoZXJlIGV4aXN0IG1hbnkgZmluZQotZnJhbWV3b3JrcyBmb3Igd3JpdGlu
ZyBDKysgdGVzdHMsIGFuZCB3ZSBoYXZlIHRyZW1lbmRvdXMgcmVzcGVjdCBmb3IKLXRoZSBkZXZl
bG9wZXJzIGFuZCB1c2VycyBvZiB0aGVtLiAgV2UgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgKG9yIHdp
bGwKLWJlKSBhIHNpbmdsZSBiZXN0IGZyYW1ld29yayAtIHlvdSBoYXZlIHRvIHBpY2sgdGhlIHJp
Z2h0IHRvb2wgZm9yIHRoZQotcGFydGljdWxhciB0YXNrIHlvdSBhcmUgdGFja2xpbmcuCi0KLVdl
IGNyZWF0ZWQgR29vZ2xlIFRlc3QgYmVjYXVzZSB3ZSBjb3VsZG4ndCBmaW5kIHRoZSByaWdodCBj
b21iaW5hdGlvbgotb2YgZmVhdHVyZXMgYW5kIGNvbnZlbmllbmNlcyBpbiBhbiBleGlzdGluZyBm
cmFtZXdvcmsgdG8gc2F0aXNmeSBfb3VyXwotbmVlZHMuICBUaGUgZm9sbG93aW5nIGlzIGEgbGlz
dCBvZiB0aGluZ3MgdGhhdCBfd2VfIGxpa2UgYWJvdXQgR29vZ2xlCi1UZXN0LiAgV2UgZG9uJ3Qg
Y2xhaW0gdGhlbSB0byBiZSB1bmlxdWUgdG8gR29vZ2xlIFRlc3QgLSByYXRoZXIsIHRoZQotY29t
YmluYXRpb24gb2YgdGhlbSBtYWtlcyBHb29nbGUgVGVzdCB0aGUgY2hvaWNlIGZvciB1cy4gIFdl
IGhvcGUgdGhpcwotbGlzdCBjYW4gaGVscCB5b3UgZGVjaWRlIHdoZXRoZXIgaXQgaXMgZm9yIHlv
dSB0b28uCi0KLSAgKiBHb29nbGUgVGVzdCBpcyBkZXNpZ25lZCB0byBiZSBwb3J0YWJsZTogaXQg
ZG9lc24ndCByZXF1aXJlIGV4Y2VwdGlvbnMgb3IgUlRUSTsgaXQgd29ya3MgYXJvdW5kIHZhcmlv
dXMgYnVncyBpbiB2YXJpb3VzIGNvbXBpbGVycyBhbmQgZW52aXJvbm1lbnRzOyBldGMuICBBcyBh
IHJlc3VsdCwgaXQgd29ya3Mgb24gTGludXgsIE1hYyBPUyBYLCBXaW5kb3dzIGFuZCBzZXZlcmFs
IGVtYmVkZGVkIG9wZXJhdGluZyBzeXN0ZW1zLgotICAqIE5vbmZhdGFsIGFzc2VydGlvbnMgKGBF
WFBFQ1RfKmApIGhhdmUgcHJvdmVuIHRvIGJlIGdyZWF0IHRpbWUgc2F2ZXJzLCBhcyB0aGV5IGFs
bG93IGEgdGVzdCB0byByZXBvcnQgbXVsdGlwbGUgZmFpbHVyZXMgaW4gYSBzaW5nbGUgZWRpdC1j
b21waWxlLXRlc3QgY3ljbGUuCi0gICogSXQncyBlYXN5IHRvIHdyaXRlIGFzc2VydGlvbnMgdGhh
dCBnZW5lcmF0ZSBpbmZvcm1hdGl2ZSBtZXNzYWdlczogeW91IGp1c3QgdXNlIHRoZSBzdHJlYW0g
c3ludGF4IHRvIGFwcGVuZCBhbnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgZS5nLiBgQVNTRVJU
X0VRKDUsIEZvbyhpKSkgPDwgIiB3aGVyZSBpID0gIiA8PCBpO2AuICBJdCBkb2Vzbid0IHJlcXVp
cmUgYSBuZXcgc2V0IG9mIG1hY3JvcyBvciBzcGVjaWFsIGZ1bmN0aW9ucy4KLSAgKiBHb29nbGUg
VGVzdCBhdXRvbWF0aWNhbGx5IGRldGVjdHMgeW91ciB0ZXN0cyBhbmQgZG9lc24ndCByZXF1aXJl
IHlvdSB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhlbS4KLSAgKiBEZWF0aCB0
ZXN0cyBhcmUgcHJldHR5IGhhbmR5IGZvciBlbnN1cmluZyB0aGF0IHlvdXIgYXNzZXJ0cyBpbiBw
cm9kdWN0aW9uIGNvZGUgYXJlIHRyaWdnZXJlZCBieSB0aGUgcmlnaHQgY29uZGl0aW9ucy4KLSAg
KiBgU0NPUEVEX1RSQUNFYCBoZWxwcyB5b3UgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBhbiBh
c3NlcnRpb24gZmFpbHVyZSB3aGVuIGl0IGNvbWVzIGZyb20gaW5zaWRlIGEgc3ViLXJvdXRpbmUg
b3IgbG9vcC4KLSAgKiBZb3UgY2FuIGRlY2lkZSB3aGljaCB0ZXN0cyB0byBydW4gdXNpbmcgbmFt
ZSBwYXR0ZXJucy4gIFRoaXMgc2F2ZXMgdGltZSB3aGVuIHlvdSB3YW50IHRvIHF1aWNrbHkgcmVw
cm9kdWNlIGEgdGVzdCBmYWlsdXJlLgotICAqIEdvb2dsZSBUZXN0IGNhbiBnZW5lcmF0ZSBYTUwg
dGVzdCByZXN1bHQgcmVwb3J0cyB0aGF0IGNhbiBiZSBwYXJzZWQgYnkgcG9wdWxhciBjb250aW51
b3VzIGJ1aWxkIHN5c3RlbSBsaWtlIEh1ZHNvbi4KLSAgKiBTaW1wbGUgdGhpbmdzIGFyZSBlYXN5
IGluIEdvb2dsZSBUZXN0LCB3aGlsZSBoYXJkIHRoaW5ncyBhcmUgcG9zc2libGU6IGluIGFkZGl0
aW9uIHRvIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgW2dsb2JhbCB0ZXN0IGVudmlyb25tZW50c10o
VjFfNl9BZHZhbmNlZEd1aWRlLm1kI0dsb2JhbF9TZXQtVXBfYW5kX1RlYXItRG93bikgYW5kIHRl
c3RzIHBhcmFtZXRlcml6ZWQgYnkgW3ZhbHVlc10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI3ZhbHVl
LXBhcmFtZXRlcml6ZWQtdGVzdHMpIG9yIFt0eXBlc10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI3R5
cGVkLXRlc3RzKSwgR29vZ2xlIFRlc3Qgc3VwcG9ydHMgdmFyaW91cyB3YXlzIGZvciB0aGUgdXNl
ciB0byBleHRlbmQgdGhlIGZyYW1ld29yayAtLSBpZiBHb29nbGUgVGVzdCBkb2Vzbid0IGRvIHNv
bWV0aGluZyBvdXQgb2YgdGhlIGJveCwgY2hhbmNlcyBhcmUgdGhhdCBhIHVzZXIgY2FuIGltcGxl
bWVudCB0aGUgZmVhdHVyZSB1c2luZyBHb29nbGUgVGVzdCdzIHB1YmxpYyBBUEksIHdpdGhvdXQg
Y2hhbmdpbmcgR29vZ2xlIFRlc3QgaXRzZWxmLiAgSW4gcGFydGljdWxhciwgeW91IGNhbjoKLSAg
ICAqIGV4cGFuZCB5b3VyIHRlc3Rpbmcgdm9jYWJ1bGFyeSBieSBkZWZpbmluZyBbY3VzdG9tIHBy
ZWRpY2F0ZXNdKFYxXzZfQWR2YW5jZWRHdWlkZS5tZCNwcmVkaWNhdGUtYXNzZXJ0aW9ucy1mb3It
YmV0dGVyLWVycm9yLW1lc3NhZ2VzKSwKLSAgICAqIHRlYWNoIEdvb2dsZSBUZXN0IGhvdyB0byBb
cHJpbnQgeW91ciB0eXBlc10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI3RlYWNoaW5nLWdvb2dsZS10
ZXN0LWhvdy10by1wcmludC15b3VyLXZhbHVlcyksCi0gICAgKiBkZWZpbmUgeW91ciBvd24gdGVz
dGluZyBtYWNyb3Mgb3IgdXRpbGl0aWVzIGFuZCB2ZXJpZnkgdGhlbSB1c2luZyBHb29nbGUgVGVz
dCdzIFtTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZV0oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI2Nh
dGNoaW5nLWZhaWx1cmVzKSwgYW5kCi0gICAgKiByZWZsZWN0IG9uIHRoZSB0ZXN0IGNhc2VzIG9y
IGNoYW5nZSB0aGUgdGVzdCBvdXRwdXQgZm9ybWF0IGJ5IGludGVyY2VwdGluZyB0aGUgW3Rlc3Qg
ZXZlbnRzXShWMV82X0FkdmFuY2VkR3VpZGUubWQjZXh0ZW5kaW5nLWdvb2dsZS10ZXN0LWJ5LWhh
bmRsaW5nLXRlc3QtZXZlbnRzKS4KLQotIyMgSSdtIGdldHRpbmcgd2FybmluZ3Mgd2hlbiBjb21w
aWxpbmcgR29vZ2xlIFRlc3QuICBXb3VsZCB5b3UgZml4IHRoZW0/ICMjCi0KLVdlIHN0cml2ZSB0
byBtaW5pbWl6ZSBjb21waWxlciB3YXJuaW5ncyBHb29nbGUgVGVzdCBnZW5lcmF0ZXMuICBCZWZv
cmUgcmVsZWFzaW5nIGEgbmV3IHZlcnNpb24sIHdlIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaXQg
ZG9lc24ndCBnZW5lcmF0ZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHVzaW5nIGl0cyBDTWFrZSBz
Y3JpcHQgb24gV2luZG93cywgTGludXgsIGFuZCBNYWMgT1MuCi0KLVVuZm9ydHVuYXRlbHksIHRo
aXMgZG9lc24ndCBtZWFuIHlvdSBhcmUgZ3VhcmFudGVlZCB0byBzZWUgbm8gd2FybmluZ3Mgd2hl
biBjb21waWxpbmcgR29vZ2xlIFRlc3QgaW4geW91ciBlbnZpcm9ubWVudDoKLQotICAqIFlvdSBt
YXkgYmUgdXNpbmcgYSBkaWZmZXJlbnQgY29tcGlsZXIgYXMgd2UgdXNlLCBvciBhIGRpZmZlcmVu
dCB2ZXJzaW9uIG9mIHRoZSBzYW1lIGNvbXBpbGVyLiAgV2UgY2Fubm90IHBvc3NpYmx5IHRlc3Qg
Zm9yIGFsbCBjb21waWxlcnMuCi0gICogWW91IG1heSBiZSBjb21waWxpbmcgb24gYSBkaWZmZXJl
bnQgcGxhdGZvcm0gYXMgd2UgZG8uCi0gICogWW91ciBwcm9qZWN0IG1heSBiZSB1c2luZyBkaWZm
ZXJlbnQgY29tcGlsZXIgZmxhZ3MgYXMgd2UgZG8uCi0KLUl0IGlzIG5vdCBhbHdheXMgcG9zc2li
bGUgdG8gbWFrZSBHb29nbGUgVGVzdCB3YXJuaW5nLWZyZWUgZm9yIGV2ZXJ5b25lLiAgT3IsIGl0
IG1heSBub3QgYmUgZGVzaXJhYmxlIGlmIHRoZSB3YXJuaW5nIGlzIHJhcmVseSBlbmFibGVkIGFu
ZCBmaXhpbmcgdGhlIHZpb2xhdGlvbnMgbWFrZXMgdGhlIGNvZGUgbW9yZSBjb21wbGV4LgotCi1J
ZiB5b3Ugc2VlIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0LCB3ZSBzdWdnZXN0
IHRoYXQgeW91IHVzZSB0aGUgYC1pc3lzdGVtYCBmbGFnIChhc3N1bWluZyB5b3VyIGFyZSB1c2lu
ZyBHQ0MpIHRvIG1hcmsgR29vZ2xlIFRlc3QgaGVhZGVycyBhcyBzeXN0ZW0gaGVhZGVycy4gIFRo
YXQnbGwgc3VwcHJlc3Mgd2FybmluZ3MgZnJvbSBHb29nbGUgVGVzdCBoZWFkZXJzLgotCi0jIyBX
aHkgc2hvdWxkIG5vdCB0ZXN0IGNhc2UgbmFtZXMgYW5kIHRlc3QgbmFtZXMgY29udGFpbiB1bmRl
cnNjb3JlPyAjIwotCi1VbmRlcnNjb3JlIChgX2ApIGlzIHNwZWNpYWwsIGFzIEMrKyByZXNlcnZl
cyB0aGUgZm9sbG93aW5nIHRvIGJlIHVzZWQgYnkKLXRoZSBjb21waWxlciBhbmQgdGhlIHN0YW5k
YXJkIGxpYnJhcnk6Ci0KLSAgMS4gYW55IGlkZW50aWZpZXIgdGhhdCBzdGFydHMgd2l0aCBhbiBg
X2AgZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIsIGFuZAotICAxLiBhbnkgaWRlbnRp
ZmllciB0aGF0IGNvbnRhaW5lcnMgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChpLmUuIGBf
X2ApIF9hbnl3aGVyZV8gaW4gaXRzIG5hbWUuCi0KLVVzZXIgY29kZSBpcyBfcHJvaGliaXRlZF8g
ZnJvbSB1c2luZyBzdWNoIGlkZW50aWZpZXJzLgotCi1Ob3cgbGV0J3MgbG9vayBhdCB3aGF0IHRo
aXMgbWVhbnMgZm9yIGBURVNUYCBhbmQgYFRFU1RfRmAuCi0KLUN1cnJlbnRseSBgVEVTVChUZXN0
Q2FzZU5hbWUsIFRlc3ROYW1lKWAgZ2VuZXJhdGVzIGEgY2xhc3MgbmFtZWQKLWBUZXN0Q2FzZU5h
bWVfVGVzdE5hbWVfVGVzdGAuICBXaGF0IGhhcHBlbnMgaWYgYFRlc3RDYXNlTmFtZWAgb3IgYFRl
c3ROYW1lYAotY29udGFpbnMgYF9gPwotCi0gIDEuIElmIGBUZXN0Q2FzZU5hbWVgIHN0YXJ0cyB3
aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlciAoc2F5LCBgX0Zvb2Ap
LCB3ZSBlbmQgdXAgd2l0aCBgX0Zvb19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgcmVzZXJ2ZWQg
YW5kIHRodXMgaW52YWxpZC4KLSAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgZW5kcyB3aXRoIGFuIGBf
YCAoc2F5LCBgRm9vX2ApLCB3ZSBnZXQgYEZvb19fVGVzdE5hbWVfVGVzdGAsIHdoaWNoIGlzIGlu
dmFsaWQuCi0gIDEuIElmIGBUZXN0TmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIChzYXksIGBfQmFy
YCksIHdlIGdldCBgVGVzdENhc2VOYW1lX19CYXJfVGVzdGAsIHdoaWNoIGlzIGludmFsaWQuCi0g
IDEuIElmIGBUZXN0TmFtZWAgZW5kcyB3aXRoIGFuIGBfYCAoc2F5LCBgQmFyX2ApLCB3ZSBnZXQg
YFRlc3RDYXNlTmFtZV9CYXJfX1Rlc3RgLCB3aGljaCBpcyBpbnZhbGlkLgotCi1TbyBjbGVhcmx5
IGBUZXN0Q2FzZU5hbWVgIGFuZCBgVGVzdE5hbWVgIGNhbm5vdCBzdGFydCBvciBlbmQgd2l0aCBg
X2AKLShBY3R1YWxseSwgYFRlc3RDYXNlTmFtZWAgY2FuIHN0YXJ0IHdpdGggYF9gIC0tIGFzIGxv
bmcgYXMgdGhlIGBfYCBpc24ndAotZm9sbG93ZWQgYnkgYW4gdXBwZXItY2FzZSBsZXR0ZXIuICBC
dXQgdGhhdCdzIGdldHRpbmcgY29tcGxpY2F0ZWQuICBTbwotZm9yIHNpbXBsaWNpdHkgd2UganVz
dCBzYXkgdGhhdCBpdCBjYW5ub3Qgc3RhcnQgd2l0aCBgX2AuKS4KLQotSXQgbWF5IHNlZW0gZmlu
ZSBmb3IgYFRlc3RDYXNlTmFtZWAgYW5kIGBUZXN0TmFtZWAgdG8gY29udGFpbiBgX2AgaW4gdGhl
Ci1taWRkbGUuICBIb3dldmVyLCBjb25zaWRlciB0aGlzOgotYGBgCi1URVNUKFRpbWUsIEZsaWVz
X0xpa2VfQW5fQXJyb3cpIHsgLi4uIH0KLVRFU1QoVGltZV9GbGllcywgTGlrZV9Bbl9BcnJvdykg
eyAuLi4gfQotYGBgCi0KLU5vdywgdGhlIHR3byBgVEVTVGBzIHdpbGwgYm90aCBnZW5lcmF0ZSB0
aGUgc2FtZSBjbGFzcwotKGBUaW1lX0ZpbGVzX0xpa2VfQW5fQXJyb3dfVGVzdGApLiAgVGhhdCdz
IG5vdCBnb29kLgotCi1TbyBmb3Igc2ltcGxpY2l0eSwgd2UganVzdCBhc2sgdGhlIHVzZXJzIHRv
IGF2b2lkIGBfYCBpbiBgVGVzdENhc2VOYW1lYAotYW5kIGBUZXN0TmFtZWAuICBUaGUgcnVsZSBp
cyBtb3JlIGNvbnN0cmFpbmluZyB0aGFuIG5lY2Vzc2FyeSwgYnV0IGl0J3MKLXNpbXBsZSBhbmQg
ZWFzeSB0byByZW1lbWJlci4gIEl0IGFsc28gZ2l2ZXMgR29vZ2xlIFRlc3Qgc29tZSB3aWdnbGUK
LXJvb20gaW4gY2FzZSBpdHMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gY2hhbmdlIGluIHRoZSBm
dXR1cmUuCi0KLUlmIHlvdSB2aW9sYXRlIHRoZSBydWxlLCB0aGVyZSBtYXkgbm90IGJlIGltbWVk
aWF0ZWx5IGNvbnNlcXVlbmNlcywKLWJ1dCB5b3VyIHRlc3QgbWF5IChqdXN0IG1heSkgYnJlYWsg
d2l0aCBhIG5ldyBjb21waWxlciAob3IgYSBuZXcKLXZlcnNpb24gb2YgdGhlIGNvbXBpbGVyIHlv
dSBhcmUgdXNpbmcpIG9yIHdpdGggYSBuZXcgdmVyc2lvbiBvZiBHb29nbGUKLVRlc3QuICBUaGVy
ZWZvcmUgaXQncyBiZXN0IHRvIGZvbGxvdyB0aGUgcnVsZS4KLQotIyMgV2h5IGlzIGl0IG5vdCBy
ZWNvbW1lbmRlZCB0byBpbnN0YWxsIGEgcHJlLWNvbXBpbGVkIGNvcHkgb2YgR29vZ2xlIFRlc3Qg
KGZvciBleGFtcGxlLCBpbnRvIC91c3IvbG9jYWwpPyAjIwotCi1JbiB0aGUgZWFybHkgZGF5cywg
d2Ugc2FpZCB0aGF0IHlvdSBjb3VsZCBpbnN0YWxsCi1jb21waWxlZCBHb29nbGUgVGVzdCBsaWJy
YXJpZXMgb24gYCpgbml4IHN5c3RlbXMgdXNpbmcgYG1ha2UgaW5zdGFsbGAuCi1UaGVuIGV2ZXJ5
IHVzZXIgb2YgeW91ciBtYWNoaW5lIGNhbiB3cml0ZSB0ZXN0cyB3aXRob3V0Ci1yZWNvbXBpbGlu
ZyBHb29nbGUgVGVzdC4KLQotVGhpcyBzZWVtZWQgbGlrZSBhIGdvb2QgaWRlYSwgYnV0IGl0IGhh
cyBhCi1nb3QtY2hhOiBldmVyeSB1c2VyIG5lZWRzIHRvIGNvbXBpbGUgaGlzIHRlc3RzIHVzaW5n
IHRoZSBfc2FtZV8gY29tcGlsZXIKLWZsYWdzIHVzZWQgdG8gY29tcGlsZSB0aGUgaW5zdGFsbGVk
IEdvb2dsZSBUZXN0IGxpYnJhcmllczsgb3RoZXJ3aXNlCi1oZSBtYXkgcnVuIGludG8gdW5kZWZp
bmVkIGJlaGF2aW9ycyAoaS5lLiB0aGUgdGVzdHMgY2FuIGJlaGF2ZQotc3RyYW5nZWx5IGFuZCBt
YXkgZXZlbiBjcmFzaCBmb3Igbm8gb2J2aW91cyByZWFzb25zKS4KLQotV2h5PyAgQmVjYXVzZSBD
KysgaGFzIHRoaXMgdGhpbmcgY2FsbGVkIHRoZSBPbmUtRGVmaW5pdGlvbiBSdWxlOiBpZgotdHdv
IEMrKyBzb3VyY2UgZmlsZXMgY29udGFpbiBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgdGhlIHNh
bWUKLWNsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxlLCBhbmQgeW91IGxpbmsgdGhlbSB0b2dldGhlciwg
eW91IHZpb2xhdGUgdGhlCi1ydWxlLiAgVGhlIGxpbmtlciBtYXkgb3IgbWF5IG5vdCBjYXRjaCB0
aGUgZXJyb3IgKGluIG1hbnkgY2FzZXMgaXQncwotbm90IHJlcXVpcmVkIGJ5IHRoZSBDKysgc3Rh
bmRhcmQgdG8gY2F0Y2ggdGhlIHZpb2xhdGlvbikuICBJZiBpdAotZG9lc24ndCwgeW91IGdldCBz
dHJhbmdlIHJ1bi10aW1lIGJlaGF2aW9ycyB0aGF0IGFyZSB1bmV4cGVjdGVkIGFuZAotaGFyZCB0
byBkZWJ1Zy4KLQotSWYgeW91IGNvbXBpbGUgR29vZ2xlIFRlc3QgYW5kIHlvdXIgdGVzdCBjb2Rl
IHVzaW5nIGRpZmZlcmVudCBjb21waWxlcgotZmxhZ3MsIHRoZXkgbWF5IHNlZSBkaWZmZXJlbnQg
ZGVmaW5pdGlvbnMgb2YgdGhlIHNhbWUKLWNsYXNzL2Z1bmN0aW9uL3ZhcmlhYmxlIChlLmcuIGR1
ZSB0byB0aGUgdXNlIG9mIGAjaWZgIGluIEdvb2dsZSBUZXN0KS4KLVRoZXJlZm9yZSwgZm9yIHlv
dXIgc2FuaXR5LCB3ZSByZWNvbW1lbmQgdG8gYXZvaWQgaW5zdGFsbGluZyBwcmUtY29tcGlsZWQK
LUdvb2dsZSBUZXN0IGxpYnJhcmllcy4gIEluc3RlYWQsIGVhY2ggcHJvamVjdCBzaG91bGQgY29t
cGlsZQotR29vZ2xlIFRlc3QgaXRzZWxmIHN1Y2ggdGhhdCBpdCBjYW4gYmUgc3VyZSB0aGF0IHRo
ZSBzYW1lIGZsYWdzIGFyZQotdXNlZCBmb3IgYm90aCBHb29nbGUgVGVzdCBhbmQgdGhlIHRlc3Rz
LgotCi0jIyBIb3cgZG8gSSBnZW5lcmF0ZSA2NC1iaXQgYmluYXJpZXMgb24gV2luZG93cyAodXNp
bmcgVmlzdWFsIFN0dWRpbyAyMDA4KT8gIyMKLQotKEFuc3dlcmVkIGJ5IFRyZXZvciBSb2JpbnNv
bikKLQotTG9hZCB0aGUgc3VwcGxpZWQgVmlzdWFsIFN0dWRpbyBzb2x1dGlvbiBmaWxlLCBlaXRo
ZXIgYG1zdmNcZ3Rlc3QtbWQuc2xuYCBvcgotYG1zdmNcZ3Rlc3Quc2xuYC4gR28gdGhyb3VnaCB0
aGUgbWlncmF0aW9uIHdpemFyZCB0byBtaWdyYXRlIHRoZQotc29sdXRpb24gYW5kIHByb2plY3Qg
ZmlsZXMgdG8gVmlzdWFsIFN0dWRpbyAyMDA4LiBTZWxlY3QKLWBDb25maWd1cmF0aW9uIE1hbmFn
ZXIuLi5gIGZyb20gdGhlIGBCdWlsZGAgbWVudS4gU2VsZWN0IGA8TmV3Li4uPmAgZnJvbQotdGhl
IGBBY3RpdmUgc29sdXRpb24gcGxhdGZvcm1gIGRyb3Bkb3duLiAgU2VsZWN0IGB4NjRgIGZyb20g
dGhlIG5ldwotcGxhdGZvcm0gZHJvcGRvd24sIGxlYXZlIGBDb3B5IHNldHRpbmdzIGZyb21gIHNl
dCB0byBgV2luMzJgIGFuZAotYENyZWF0ZSBuZXcgcHJvamVjdCBwbGF0Zm9ybXNgIGNoZWNrZWQs
IHRoZW4gY2xpY2sgYE9LYC4gWW91IG5vdyBoYXZlCi1gV2luMzJgIGFuZCBgeDY0YCBwbGF0Zm9y
bSBjb25maWd1cmF0aW9ucywgc2VsZWN0YWJsZSBmcm9tIHRoZQotYFN0YW5kYXJkYCB0b29sYmFy
LCB3aGljaCBhbGxvdyB5b3UgdG8gdG9nZ2xlIGJldHdlZW4gYnVpbGRpbmcgMzItYml0IG9yCi02
NC1iaXQgYmluYXJpZXMgKG9yIGJvdGggYXQgb25jZSB1c2luZyBCYXRjaCBCdWlsZCkuCi0KLUlu
IG9yZGVyIHRvIHByZXZlbnQgYnVpbGQgb3V0cHV0IGZpbGVzIGZyb20gb3ZlcndyaXRpbmcgb25l
IGFub3RoZXIsCi15b3UnbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGBJbnRlcm1lZGlhdGUgRGlyZWN0
b3J5YCBzZXR0aW5ncyBmb3IgdGhlCi1uZXdseSBjcmVhdGVkIHBsYXRmb3JtIGNvbmZpZ3VyYXRp
b24gYWNyb3NzIGFsbCB0aGUgcHJvamVjdHMuIFRvIGRvCi10aGlzLCBtdWx0aS1zZWxlY3QgKGUu
Zy4gdXNpbmcgc2hpZnQtY2xpY2spIGFsbCBwcm9qZWN0cyAoYnV0IG5vdCB0aGUKLXNvbHV0aW9u
KSBpbiB0aGUgYFNvbHV0aW9uIEV4cGxvcmVyYC4gUmlnaHQtY2xpY2sgb25lIG9mIHRoZW0gYW5k
Ci1zZWxlY3QgYFByb3BlcnRpZXNgLiBJbiB0aGUgbGVmdCBwYW5lLCBzZWxlY3QgYENvbmZpZ3Vy
YXRpb24gUHJvcGVydGllc2AsCi1hbmQgZnJvbSB0aGUgYENvbmZpZ3VyYXRpb25gIGRyb3Bkb3du
LCBzZWxlY3QgYEFsbCBDb25maWd1cmF0aW9uc2AuCi1NYWtlIHN1cmUgdGhlIHNlbGVjdGVkIHBs
YXRmb3JtIGlzIGB4NjRgLiBGb3IgdGhlCi1gSW50ZXJtZWRpYXRlIERpcmVjdG9yeWAgc2V0dGlu
ZywgY2hhbmdlIHRoZSB2YWx1ZSBmcm9tCi1gJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlv
bk5hbWUpYCB0bwotYCQoT3V0RGlyKVwkKFByb2plY3ROYW1lKWAuIENsaWNrIGBPS2AgYW5kIHRo
ZW4gYnVpbGQgdGhlCi1zb2x1dGlvbi4gV2hlbiB0aGUgYnVpbGQgaXMgY29tcGxldGUsIHRoZSA2
NC1iaXQgYmluYXJpZXMgd2lsbCBiZSBpbgotdGhlIGBtc3ZjXHg2NFxEZWJ1Z2AgZGlyZWN0b3J5
LgotCi0jIyBDYW4gSSB1c2UgR29vZ2xlIFRlc3Qgb24gTWluR1c/ICMjCi0KLVdlIGhhdmVuJ3Qg
dGVzdGVkIHRoaXMgb3Vyc2VsdmVzLCBidXQgUGVyIEFicmFoYW1zZW4gcmVwb3J0ZWQgdGhhdCBo
ZQotd2FzIGFibGUgdG8gY29tcGlsZSBhbmQgaW5zdGFsbCBHb29nbGUgVGVzdCBzdWNjZXNzZnVs
bHkgd2hlbiB1c2luZwotTWluR1cgZnJvbSBDeWd3aW4uICBZb3UnbGwgbmVlZCB0byBjb25maWd1
cmUgaXQgd2l0aDoKLQotYFBBVEgvVE8vY29uZmlndXJlIENDPSJnY2MgLW1uby1jeWd3aW4iIENY
WD0iZysrIC1tbm8tY3lnd2luImAKLQotWW91IHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhl
IGAtbW5vLWN5Z3dpbmAgb3B0aW9uIHdpdGggZGlyZWN0IGxpbmtzCi10byB0aGUgcmVhbCBNaW5H
VyBiaW5hcmllcywgYnV0IHdlIGhhdmVuJ3QgdHJpZWQgdGhhdC4KLQotQ2F2ZWF0czoKLQotICAq
IFRoZXJlIGFyZSBtYW55IHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nLgotICAqIGBtYWtlIGNoZWNr
YCB3aWxsIHByb2R1Y2Ugc29tZSBlcnJvcnMgYXMgbm90IGFsbCB0ZXN0cyBmb3IgR29vZ2xlIFRl
c3QgaXRzZWxmIGFyZSBjb21wYXRpYmxlIHdpdGggTWluR1cuCi0KLVdlIGFsc28gaGF2ZSByZXBv
cnRzIG9uIHN1Y2Nlc3NmdWwgY3Jvc3MgY29tcGlsYXRpb24gb2YgR29vZ2xlIFRlc3QKLU1pbkdX
IGJpbmFyaWVzIG9uIExpbnV4IHVzaW5nCi1bdGhlc2UgaW5zdHJ1Y3Rpb25zXShodHRwOi8vd2lr
aS53eHdpZGdldHMub3JnL0Nyb3NzLUNvbXBpbGluZ19VbmRlcl9MaW51eCNDcm9zcy1jb21waWxp
bmdfdW5kZXJfTGludXhfZm9yX01TX1dpbmRvd3MpCi1vbiB0aGUgV3hXaWRnZXRzIHNpdGUuCi0K
LVBsZWFzZSBjb250YWN0IGBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb21gIGlm
IHlvdSBhcmUKLWludGVyZXN0ZWQgaW4gaW1wcm92aW5nIHRoZSBzdXBwb3J0IGZvciBNaW5HVy4K
LQotIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBFWFBFQ1RcX0VRKE5VTEwsIHB0cikg
YW5kIEFTU0VSVFxfRVEoTlVMTCwgcHRyKSBidXQgbm90IEVYUEVDVFxfTkUoTlVMTCwgcHRyKSBh
bmQgQVNTRVJUXF9ORShOVUxMLCBwdHIpPyAjIwotCi1EdWUgdG8gc29tZSBwZWN1bGlhcml0eSBv
ZiBDKyssIGl0IHJlcXVpcmVzIHNvbWUgbm9uLXRyaXZpYWwgdGVtcGxhdGUKLW1ldGEgcHJvZ3Jh
bW1pbmcgdHJpY2tzIHRvIHN1cHBvcnQgdXNpbmcgYE5VTExgIGFzIGFuIGFyZ3VtZW50IG9mIHRo
ZQotYEVYUEVDVF9YWCgpYCBhbmQgYEFTU0VSVF9YWCgpYCBtYWNyb3MuIFRoZXJlZm9yZSB3ZSBv
bmx5IGRvIGl0IHdoZXJlCi1pdCdzIG1vc3QgbmVlZGVkIChvdGhlcndpc2Ugd2UgbWFrZSB0aGUg
aW1wbGVtZW50YXRpb24gb2YgR29vZ2xlIFRlc3QKLWhhcmRlciB0byBtYWludGFpbiBhbmQgbW9y
ZSBlcnJvci1wcm9uZSB0aGFuIG5lY2Vzc2FyeSkuCi0KLVRoZSBgRVhQRUNUX0VRKClgIG1hY3Jv
IHRha2VzIHRoZSBfZXhwZWN0ZWRfIHZhbHVlIGFzIGl0cyBmaXJzdAotYXJndW1lbnQgYW5kIHRo
ZSBfYWN0dWFsXyB2YWx1ZSBhcyB0aGUgc2Vjb25kLiBJdCdzIHJlYXNvbmFibGUgdGhhdAotc29t
ZW9uZSB3YW50cyB0byB3cml0ZSBgRVhQRUNUX0VRKE5VTEwsIHNvbWVfZXhwcmVzc2lvbilgLCBh
bmQgdGhpcwotaW5kZWVkIHdhcyByZXF1ZXN0ZWQgc2V2ZXJhbCB0aW1lcy4gVGhlcmVmb3JlIHdl
IGltcGxlbWVudGVkIGl0LgotCi1UaGUgbmVlZCBmb3IgYEVYUEVDVF9ORShOVUxMLCBwdHIpYCBp
c24ndCBuZWFybHkgYXMgc3Ryb25nLiBXaGVuIHRoZQotYXNzZXJ0aW9uIGZhaWxzLCB5b3UgYWxy
ZWFkeSBrbm93IHRoYXQgYHB0cmAgbXVzdCBiZSBgTlVMTGAsIHNvIGl0Ci1kb2Vzbid0IGFkZCBh
bnkgaW5mb3JtYXRpb24gdG8gcHJpbnQgcHRyIGluIHRoaXMgY2FzZS4gVGhhdCBtZWFucwotYEVY
UEVDVF9UUlVFKHB0ciAhIE5VTEwpYCB3b3JrcyBqdXN0IGFzIHdlbGwuCi0KLUlmIHdlIHdlcmUg
dG8gc3VwcG9ydCBgRVhQRUNUX05FKE5VTEwsIHB0cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwK
LWhhdmUgdG8gc3VwcG9ydCBgRVhQRUNUX05FKHB0ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlr
ZSBgRVhQRUNUX0VRYCwKLXdlIGRvbid0IGhhdmUgYSBjb252ZW50aW9uIG9uIHRoZSBvcmRlciBv
ZiB0aGUgdHdvIGFyZ3VtZW50cyBmb3IKLWBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nIHRo
ZSB0ZW1wbGF0ZSBtZXRhIHByb2dyYW1taW5nIHRyaWNrcwotdHdpY2UgaW4gdGhlIGltcGxlbWVu
dGF0aW9uLCBtYWtpbmcgaXQgZXZlbiBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQKLW1haW50YWlu
LiBXZSBiZWxpZXZlIHRoZSBiZW5lZml0IGRvZXNuJ3QganVzdGlmeSB0aGUgY29zdC4KLQotRmlu
YWxseSwgd2l0aCB0aGUgZ3Jvd3RoIG9mIEdvb2dsZSBNb2NrJ3MgW21hdGNoZXJdKC4uLy4uL0Nv
b2tCb29rLm1kI3VzaW5nLW1hdGNoZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGxpYnJh
cnksIHdlIGFyZQotZW5jb3VyYWdpbmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmllZCBgRVhQRUNU
X1RIQVQodmFsdWUsIG1hdGNoZXIpYAotc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZSBz
aWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdGhlIG1hdGNoZXIKLWFwcHJvYWNoIGlzIHRoYXQgbWF0
Y2hlcnMgY2FuIGJlIGVhc2lseSBjb21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywKLXdoaWxl
IHRoZSBgRVhQRUNUX05FYCwgZXRjLCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQotY29tYmluZWQu
IFRoZXJlZm9yZSB3ZSB3YW50IHRvIGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGlu
IHRoZQotYEVYUEVDVF9YWCgpYCBtYWNyb3MuCi0KLSMjIERvZXMgR29vZ2xlIFRlc3Qgc3VwcG9y
dCBydW5uaW5nIHRlc3RzIGluIHBhcmFsbGVsPyAjIwotCi1UZXN0IHJ1bm5lcnMgdGVuZCB0byBi
ZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgYnVpbGQvdGVzdAotZW52aXJvbm1lbnQsIGFuZCBH
b29nbGUgVGVzdCBkb2Vzbid0IHRyeSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgotcnVubmluZyB0
ZXN0cyBpbiBwYXJhbGxlbC4gIEluc3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29vZ2xlIFRlc3Qg
d29yawotbmljZWx5IHdpdGggdGVzdCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBUZXN0
J3MgWE1MIHJlcG9ydAotY29udGFpbnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0ZXN0LCBhbmQg
aXRzIGBndGVzdF9saXN0X3Rlc3RzYCBhbmQKLWBndGVzdF9maWx0ZXJgIGZsYWdzIGNhbiBiZSB1
c2VkIGZvciBzcGxpdHRpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0Ci1tZXRob2RzIGludG8gbXVs
dGlwbGUgcHJvY2Vzc2VzLiAgVGhlc2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxwIHRoZQotdGVz
dCBydW5uZXIgcnVuIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KLQotIyMgV2h5IGRvbid0IEdvb2ds
ZSBUZXN0IHJ1biB0aGUgdGVzdHMgaW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3BlZWQgdGhpbmdz
IHVwPyAjIwotCi1JdCdzIGRpZmZpY3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBjb2RlLiAgTW9z
dCB0ZXN0cyBhcmUgbm90IHdyaXR0ZW4KLXdpdGggdGhyZWFkLXNhZmV0eSBpbiBtaW5kLCBhbmQg
dGh1cyBtYXkgbm90IHdvcmsgY29ycmVjdGx5IGluIGEKLW11bHRpLXRocmVhZGVkIHNldHRpbmcu
Ci0KLUlmIHlvdSB0aGluayBhYm91dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8gbWFrZSB5b3Vy
IGNvZGUgd29yayB3aGVuCi15b3Uga25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nLiAg
SXQncyBtdWNoIGhhcmRlciwgYW5kCi1zb21ldGltZXMgZXZlbiBpbXBvc3NpYmxlLCB0byBtYWtl
IHlvdXIgY29kZSB3b3JrIHdoZW4geW91IGRvbid0IGtub3cKLXdoYXQgb3RoZXIgdGhyZWFkcyBh
cmUgZG9pbmcgKHJlbWVtYmVyIHRoYXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRlZCwKLWRlbGV0
ZWQsIG9yIG1vZGlmaWVkIGFmdGVyIHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJZiB5b3Ugd2Fu
dCB0byBydW4KLXRoZSB0ZXN0cyBpbiBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1biB0aGVtIGlu
IGRpZmZlcmVudCBwcm9jZXNzZXMuCi0KLSMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRlc3QgYXNzZXJ0
aW9ucyBpbXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zPyAjIwotCi1PdXIgb3JpZ2luYWwgbW90
aXZhdGlvbiB3YXMgdG8gYmUgYWJsZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJvamVjdHMKLXRo
YXQgZGlzYWJsZSBleGNlcHRpb25zLiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBhZGRpdGlvbmFs
IGJlbmVmaXRzCi1vZiB0aGlzIGFwcHJvYWNoOgotCi0gIDEuIFRocm93aW5nIGluIGEgZGVzdHJ1
Y3RvciBpcyB1bmRlZmluZWQgYmVoYXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4Y2VwdGlvbnMg
bWVhbnMgR29vZ2xlIFRlc3QncyBhc3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBpbiBkZXN0cnVj
dG9ycy4KLSAgMS4gVGhlIGBFWFBFQ1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxsIGNvbnRpbnVl
IGV2ZW4gYWZ0ZXIgYSBmYWlsdXJlLCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIGBU
RVNUYCB0byBiZSByZXBvcnRlZCBpbiBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBwb3B1bGFyIGZl
YXR1cmUsIGFzIGluIEMrKyB0aGUgZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMgdXN1YWxseSBx
dWl0ZSBsb25nIGFuZCBiZWluZyBhYmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25lIHRoaW5nIGF0
IGEgdGltZSBpcyBhIGJsZXNzaW5nLgotICAxLiBJZiBhc3NlcnRpb25zIGFyZSBpbXBsZW1lbnRl
ZCB1c2luZyBleGNlcHRpb25zLCBhIHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEgZmFpbHVyZSBp
ZiBpdCdzIGNhdWdodCBieSB1c2VyIGNvZGU6Ci1gYGAKLXRyeSB7IC4uLiBBU1NFUlRfVFJVRSgu
Li4pIC4uLiB9Ci1jYXRjaCAoLi4uKSB7IC4uLiB9Ci1gYGAKLVRoZSBhYm92ZSBjb2RlIHdpbGwg
cGFzcyBldmVuIGlmIHRoZSBgQVNTRVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0J3MgdW5saWtl
bHkgZm9yIHNvbWVvbmUgdG8gd3JpdGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9zc2libGUgdG8g
cnVuIGludG8gdGhpcyBwYXR0ZXJuIHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMgaW4gY2FsbGJh
Y2tzIHRoYXQgYXJlIGNhbGxlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgotCi1UaGUgZG93bnNp
ZGUgb2Ygbm90IHVzaW5nIGV4Y2VwdGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChpbXBsZW1lbnRl
ZAotdXNpbmcgYHJldHVybmApIHdpbGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbiwg
bm90IHRoZSBjdXJyZW50Ci1gVEVTVGAuCi0KLSMjIFdoeSBkbyB3ZSB1c2UgdHdvIGRpZmZlcmVu
dCBtYWNyb3MgZm9yIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMjCi0KLVVuZm9y
dHVuYXRlbHksIEMrKydzIG1hY3JvIHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRvIHVzZSB0aGUg
c2FtZQotbWFjcm8gZm9yIGJvdGggY2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMgdG8gcHJvdmlk
ZSBvbmx5IG9uZSBtYWNybwotZm9yIHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCByZXF1aXJlIHRo
ZSB1c2VyIHRvIGRlZmluZSBhbiBlbXB0eQotZml4dHVyZSBzb21ldGltZXM6Ci0KLWBgYAotY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1RfRihGb29UZXN0
LCBEb2VzVGhpcykgeyAuLi4gfQotYGBgCi1vcgotYGBgCi10eXBlZGVmIDo6dGVzdGluZzo6VGVz
dCBGb29UZXN0OwotCi1URVNUX0YoRm9vVGVzdCwgRG9lc1RoYXQpIHsgLi4uIH0KLWBgYAotCi1Z
ZXQsIG1hbnkgcGVvcGxlIHRoaW5rIHRoaXMgaXMgb25lIGxpbmUgdG9vIG1hbnkuIDotKSBPdXIg
Z29hbCB3YXMgdG8KLW1ha2UgaXQgcmVhbGx5IGVhc3kgdG8gd3JpdGUgdGVzdHMsIHNvIHdlIHRy
aWVkIHRvIG1ha2Ugc2ltcGxlIHRlc3RzCi10cml2aWFsIHRvIGNyZWF0ZS4gIFRoYXQgbWVhbnMg
dXNpbmcgYSBzZXBhcmF0ZSBtYWNybyBmb3Igc3VjaCB0ZXN0cy4KLQotV2UgdGhpbmsgbmVpdGhl
ciBhcHByb2FjaCBpcyBpZGVhbCwgeWV0IGVpdGhlciBvZiB0aGVtIGlzIHJlYXNvbmFibGUuCi1J
biB0aGUgZW5kLCBpdCBwcm9iYWJseSBkb2Vzbid0IG1hdHRlciBtdWNoIGVpdGhlciB3YXkuCi0K
LSMjIFdoeSBkb24ndCB3ZSB1c2Ugc3RydWN0cyBhcyB0ZXN0IGZpeHR1cmVzPyAjIwotCi1XZSBs
aWtlIHRvIHVzZSBzdHJ1Y3RzIG9ubHkgd2hlbiByZXByZXNlbnRpbmcgcGFzc2l2ZSBkYXRhLiAg
VGhpcwotZGlzdGluY3Rpb24gYmV0d2VlbiBzdHJ1Y3RzIGFuZCBjbGFzc2VzIGlzIGdvb2QgZm9y
IGRvY3VtZW50aW5nIHRoZQotaW50ZW50IG9mIHRoZSBjb2RlJ3MgYXV0aG9yLiAgU2luY2UgdGVz
dCBmaXh0dXJlcyBoYXZlIGxvZ2ljIGxpa2UKLWBTZXRVcCgpYCBhbmQgYFRlYXJEb3duKClgLCB0
aGV5IGFyZSBiZXR0ZXIgZGVmaW5lZCBhcyBjbGFzc2VzLgotCi0jIyBXaHkgYXJlIGRlYXRoIHRl
c3RzIGltcGxlbWVudGVkIGFzIGFzc2VydGlvbnMgaW5zdGVhZCBvZiB1c2luZyBhIHRlc3QgcnVu
bmVyPyAjIwotCi1PdXIgZ29hbCB3YXMgdG8gbWFrZSBkZWF0aCB0ZXN0cyBhcyBjb252ZW5pZW50
IGZvciBhIHVzZXIgYXMgQysrCi1wb3NzaWJseSBhbGxvd3MuICBJbiBwYXJ0aWN1bGFyOgotCi0g
ICogVGhlIHJ1bm5lci1zdHlsZSByZXF1aXJlcyB0byBzcGxpdCB0aGUgaW5mb3JtYXRpb24gaW50
byB0d28gcGllY2VzOiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVhdGggdGVzdCBpdHNlbGYsIGFu
ZCB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIHJ1bm5lciBvbiBob3cgdG8gcnVuIHRoZSBkZWF0
aCB0ZXN0IGFuZCB3aGF0IHRvIGV4cGVjdC4gIFRoZSBkZWF0aCB0ZXN0IHdvdWxkIGJlIHdyaXR0
ZW4gaW4gQysrLCB3aGlsZSB0aGUgcnVubmVyIHNwZWMgbWF5IG9yIG1heSBub3QgYmUuICBBIHVz
ZXIgbmVlZHMgdG8gY2FyZWZ1bGx5IGtlZXAgdGhlIHR3byBpbiBzeW5jLiBgQVNTRVJUX0RFQVRI
KHN0YXRlbWVudCwgZXhwZWN0ZWRfbWVzc2FnZSlgIHNwZWNpZmllcyBhbGwgbmVjZXNzYXJ5IGlu
Zm9ybWF0aW9uIGluIG9uZSBwbGFjZSwgaW4gb25lIGxhbmd1YWdlLCB3aXRob3V0IGJvaWxlcnBs
YXRlIGNvZGUuIEl0IGlzIHZlcnkgZGVjbGFyYXRpdmUuCi0gICogYEFTU0VSVF9ERUFUSGAgaGFz
IGEgc2ltaWxhciBzeW50YXggYW5kIGVycm9yLXJlcG9ydGluZyBzZW1hbnRpY3MgYXMgb3RoZXIg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9ucywgYW5kIHRodXMgaXMgZWFzeSB0byBsZWFybi4KLSAgKiBg
QVNTRVJUX0RFQVRIYCBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciBhc3NlcnRpb25zIGFuZCBvdGhl
ciBsb2dpYyBhdCB5b3VyIHdpbGwuICBZb3UgYXJlIG5vdCBsaW1pdGVkIHRvIG9uZSBkZWF0aCB0
ZXN0IHBlciB0ZXN0IG1ldGhvZC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5n
IGxpa2U6Ci1gYGAKLSAgICBpZiAoRm9vQ29uZGl0aW9uKCkpIHsKLSAgICAgIEFTU0VSVF9ERUFU
SChCYXIoKSwgImJsYWgiKTsKLSAgICB9IGVsc2UgewotICAgICAgQVNTRVJUX0VRKDUsIEJhcigp
KTsKLSAgICB9Ci1gYGAKLUlmIHlvdSBwcmVmZXIgb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0
aG9kLCB5b3UgY2FuIHdyaXRlIHlvdXIgdGVzdHMgaW4gdGhhdCBzdHlsZSB0b28sIGJ1dCB3ZSBk
b24ndCB3YW50IHRvIGltcG9zZSB0aGF0IG9uIHRoZSB1c2Vycy4gIFRoZSBmZXdlciBhcnRpZmlj
aWFsIGxpbWl0YXRpb25zIHRoZSBiZXR0ZXIuCi0gICogYEFTU0VSVF9ERUFUSGAgY2FuIHJlZmVy
ZW5jZSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIGFuZCB5b3UgY2Fu
IGRlY2lkZSBob3cgbWFueSBkZWF0aCB0ZXN0cyB5b3Ugd2FudCBiYXNlZCBvbiBydW4tdGltZSBp
bmZvcm1hdGlvbi4gIEZvciBleGFtcGxlLAotYGBgCi0gICAgY29uc3QgaW50IGNvdW50ID0gR2V0
Q291bnQoKTsgIC8vIE9ubHkga25vd24gYXQgcnVuIHRpbWUuCi0gICAgZm9yIChpbnQgaSA9IDE7
IGkgPD0gY291bnQ7IGkrKykgewotICAgICAgQVNTRVJUX0RFQVRIKHsKLSAgICAgICAgZG91Ymxl
KiBidWZmZXIgPSBuZXcgZG91YmxlW2ldOwotICAgICAgICAuLi4gaW5pdGlhbGl6ZXMgYnVmZmVy
IC4uLgotICAgICAgICBGb28oYnVmZmVyLCBpKQotICAgICAgfSwgImJsYWggYmxhaCIpOwotICAg
IH0KLWBgYAotVGhlIHJ1bm5lci1iYXNlZCBhcHByb2FjaCB0ZW5kcyB0byBiZSBtb3JlIHN0YXRp
YyBhbmQgbGVzcyBmbGV4aWJsZSwgb3IgcmVxdWlyZXMgbW9yZSB1c2VyIGVmZm9ydCB0byBnZXQg
dGhpcyBraW5kIG9mIGZsZXhpYmlsaXR5LgotCi1Bbm90aGVyIGludGVyZXN0aW5nIHRoaW5nIGFi
b3V0IGBBU1NFUlRfREVBVEhgIGlzIHRoYXQgaXQgY2FsbHMgYGZvcmsoKWAKLXRvIGNyZWF0ZSBh
IGNoaWxkIHByb2Nlc3MgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhpcyBpcyBsaWdodGVuaW5n
Ci1mYXN0LCBhcyBgZm9yaygpYCB1c2VzIGNvcHktb24td3JpdGUgcGFnZXMgYW5kIGluY3VycyBh
bG1vc3QgemVybwotb3ZlcmhlYWQsIGFuZCB0aGUgY2hpbGQgcHJvY2VzcyBzdGFydHMgZnJvbSB0
aGUgdXNlci1zdXBwbGllZAotc3RhdGVtZW50IGRpcmVjdGx5LCBza2lwcGluZyBhbGwgZ2xvYmFs
IGFuZCBsb2NhbCBpbml0aWFsaXphdGlvbiBhbmQKLWFueSBjb2RlIGxlYWRpbmcgdG8gdGhlIGdp
dmVuIHN0YXRlbWVudC4gIElmIHlvdSBsYXVuY2ggdGhlIGNoaWxkCi1wcm9jZXNzIGZyb20gc2Ny
YXRjaCwgaXQgY2FuIHRha2Ugc2Vjb25kcyBqdXN0IHRvIGxvYWQgZXZlcnl0aGluZyBhbmQKLXN0
YXJ0IHJ1bm5pbmcgaWYgdGhlIHRlc3QgbGlua3MgdG8gbWFueSBsaWJyYXJpZXMgZHluYW1pY2Fs
bHkuCi0KLSMjIE15IGRlYXRoIHRlc3QgbW9kaWZpZXMgc29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFu
Z2Ugc2VlbXMgbG9zdCBhZnRlciB0aGUgZGVhdGggdGVzdCBmaW5pc2hlcy4gV2h5PyAjIwotCi1E
ZWF0aCB0ZXN0cyAoYEVYUEVDVF9ERUFUSGAsIGV0YykgYXJlIGV4ZWN1dGVkIGluIGEgc3ViLXBy
b2Nlc3Mgcy50LiB0aGUKLWV4cGVjdGVkIGNyYXNoIHdvbid0IGtpbGwgdGhlIHRlc3QgcHJvZ3Jh
bSAoaS5lLiB0aGUgcGFyZW50IHByb2Nlc3MpLiBBcyBhCi1yZXN1bHQsIGFueSBpbi1tZW1vcnkg
c2lkZSBlZmZlY3RzIHRoZXkgaW5jdXIgYXJlIG9ic2VydmFibGUgaW4gdGhlaXIKLXJlc3BlY3Rp
dmUgc3ViLXByb2Nlc3NlcywgYnV0IG5vdCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuIFlvdSBjYW4g
dGhpbmsgb2YgdGhlbQotYXMgcnVubmluZyBpbiBhIHBhcmFsbGVsIHVuaXZlcnNlLCBtb3JlIG9y
IGxlc3MuCi0KLSMjIFRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZl
cmVuY2VzIiB0byBzb21lIHN0YXRpYyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQg
ZGVmaW5lIHRoZW0gaW4gdGhlIGNsYXNzIGJvZHkuIFdoYXQncyB3cm9uZz8gIyMKLQotSWYgeW91
ciBjbGFzcyBoYXMgYSBzdGF0aWMgZGF0YSBtZW1iZXI6Ci0KLWBgYAotLy8gZm9vLmgKLWNsYXNz
IEZvbyB7Ci0gIC4uLgotICBzdGF0aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Ci19OwotYGBgCi0K
LVlvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIGl0IF9vdXRzaWRlXyBvZiB0aGUgY2xhc3MgYm9keSBp
biBgZm9vLmNjYDoKLQotYGBgCi1jb25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6
ZXIgaGVyZS4KLWBgYAotCi1PdGhlcndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwg
YW5kIG1heSBicmVhayBpbiB1bmV4cGVjdGVkIHdheXMuIEluCi1wYXJ0aWN1bGFyLCB1c2luZyBp
dCBpbiBHb29nbGUgVGVzdCBjb21wYXJpc29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMp
Ci13aWxsIGdlbmVyYXRlIGFuICJ1bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCi0K
LSMjIEkgaGF2ZSBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMu
IENhbiBJIHdyaXRlIGEgc2V0IG9mIHRlc3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxs
IHRoZSBpbXBsZW1lbnRhdGlvbnM/ICMjCi0KLUdvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUg
Z29vZCBzdXBwb3J0IGZvciB0aGlzIGtpbmQgb2YgdGVzdHMsIG9yCi1kYXRhLWRyaXZlbiB0ZXN0
cyBpbiBnZW5lcmFsLiBXZSBob3BlIHRvIGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4g
dGhpcwotYXJlYSBzb29uLgotCi0jIyBDYW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBh
bm90aGVyPyAjIwotCi1ZZXMuCi0KLUVhY2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRp
bmcgYW5kIHNhbWUgbmFtZWQgdGVzdCBjYXNlLiBUaGlzIG1lYW5zIG9ubHkKLW9uZSB0ZXN0IGNh
c2UgY2FuIHVzZSBhIHBhcnRpY3VsYXIgZml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0
aXBsZSB0ZXN0Ci1jYXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlm
ZmVyZW50IGZpeHR1cmVzLiBGb3IgZXhhbXBsZSwgeW91Ci1tYXkgd2FudCB0byBtYWtlIHN1cmUg
dGhhdCBhbGwgb2YgYSBHVUkgbGlicmFyeSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhawotaW1wb3J0
YW50IHN5c3RlbSByZXNvdXJjZXMgbGlrZSBmb250cyBhbmQgYnJ1c2hlcy4KLQotSW4gR29vZ2xl
IFRlc3QsIHlvdSBzaGFyZSBhIGZpeHR1cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRo
ZSBzaGFyZWQKLWxvZ2ljIGluIGEgYmFzZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJv
bSB0aGF0IGJhc2UgYSBzZXBhcmF0ZSBmaXh0dXJlCi1mb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3
YW50cyB0byB1c2UgdGhpcyBjb21tb24gbG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCi10
byB3cml0ZSB0ZXN0cyB1c2luZyBlYWNoIGRlcml2ZWQgZml4dHVyZS4KLQotVHlwaWNhbGx5LCB5
b3VyIGNvZGUgbG9va3MgbGlrZSB0aGlzOgotCi1gYGAKLS8vIERlZmluZXMgYSBiYXNlIHRlc3Qg
Zml4dHVyZS4KLWNsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIHBy
b3RlY3RlZDoKLSAgIC4uLgotfTsKLQotLy8gRGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9t
IEJhc2VUZXN0LgotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7Ci0gIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgICBCYXNlVGVzdDo6U2V0VXAoKTsg
IC8vIFNldHMgdXAgdGhlIGJhc2UgZml4dHVyZSBmaXJzdC4KLSAgICAgIC4uLiBhZGRpdGlvbmFs
IHNldC11cCB3b3JrIC4uLgotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0g
ICAgICAuLi4gY2xlYW4tdXAgd29yayBmb3IgRm9vVGVzdCAuLi4KLSAgICAgIEJhc2VUZXN0OjpU
ZWFyRG93bigpOyAgLy8gUmVtZW1iZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEK
LSAgICB9Ci0gICAgLi4uIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgot
fTsKLQotLy8gVGVzdHMgdGhhdCB1c2UgdGhlIGZpeHR1cmUgRm9vVGVzdC4KLVRFU1RfRihGb29U
ZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KLQotLi4uIGFk
ZGl0aW9uYWwgZml4dHVyZXMgZGVyaXZlZCBmcm9tIEJhc2VUZXN0IC4uLgotYGBgCi0KLUlmIG5l
Y2Vzc2FyeSwgeW91IGNhbiBjb250aW51ZSB0byBkZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEg
ZGVyaXZlZCBmaXh0dXJlLgotR29vZ2xlIFRlc3QgaGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRo
ZSBoaWVyYXJjaHkgY2FuIGJlLgotCi1Gb3IgYSBjb21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2
ZWQgdGVzdCBmaXh0dXJlcywgc2VlCi1bc2FtcGxlNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0
ZXN0LmNjKS4KLQotIyMgTXkgY29tcGlsZXIgY29tcGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25v
cmVkIGFzIGl0IG91Z2h0IHRvIGJlLiIgV2hhdCBkb2VzIHRoaXMgbWVhbj8gIyMKLQotWW91J3Jl
IHByb2JhYmx5IHVzaW5nIGFuIGBBU1NFUlRfKigpYCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24n
dCByZXR1cm4gYHZvaWRgLgotYEFTU0VSVF8qKClgIGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRg
IGZ1bmN0aW9ucy4KLQotIyMgTXkgZGVhdGggdGVzdCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhv
dyBkbyBJIGZpeCBpdD8gIyMKLQotSW4gR29vZ2xlIFRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4g
aW4gYSBjaGlsZCBwcm9jZXNzIGFuZCB0aGUgd2F5IHRoZXkgd29yayBpcwotZGVsaWNhdGUuIFRv
IHdyaXRlIGRlYXRoIHRlc3RzIHlvdSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5
IHdvcmsuCi1QbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlIHJlYWQgdGhpcy4KLQotSW4gcGFydGlj
dWxhciwgZGVhdGggdGVzdHMgZG9uJ3QgbGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0
aGUgcGFyZW50Ci1wcm9jZXNzLiBTbyB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8g
ZWxpbWluYXRlIGNyZWF0aW5nIHRocmVhZHMKLW91dHNpZGUgb2YgYEVYUEVDVF9ERUFUSCgpYC4K
LQotU29tZXRpbWVzIHRoaXMgaXMgaW1wb3NzaWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3Qg
dXNlIG1heSBiZSBjcmVhdGluZwotdGhyZWFkcyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFj
aGVkLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gdHJ5IHRvIG1pbmltaXplCi10aGUgY2hhbmNlIG9m
IGNvbmZsaWN0cyBieSBlaXRoZXIgbW92aW5nIGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJs
ZSBpbnNpZGUKLWBFWFBFQ1RfREVBVEgoKWAgKGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50
IHRvIG1vdmUgZXZlcnl0aGluZyBpbnNpZGUpLCBvcgotbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFz
IHBvc3NpYmxlIGluIGl0LiBBbHNvLCB5b3UgY2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoCi10ZXN0
IHN0eWxlIHRvIGAidGhyZWFkc2FmZSJgLCB3aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQg
c2VlIGlmIGl0IGhlbHBzLgotCi1JZiB5b3UgZ28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0
cywgcmVtZW1iZXIgdGhhdCB0aGV5IHJlcnVuIHRoZSB0ZXN0Ci1wcm9ncmFtIGZyb20gdGhlIGJl
Z2lubmluZyBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCi1w
cm9ncmFtIGNhbiBydW4gc2lkZS1ieS1zaWRlIHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlz
dGljLgotCi1JbiB0aGUgZW5kLCB0aGlzIGJvaWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHBy
b2dyYW1taW5nLiBZb3UgaGF2ZSB0byBtYWtlCi1zdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBj
b25kaXRpb25zIG9yIGRlYWQgbG9ja3MgaW4geW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKLWJ1bGxl
dCAtIHNvcnJ5IQotCi0jIyBTaG91bGQgSSB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Ig
b2YgdGhlIHRlc3QgZml4dHVyZSBvciB0aGUgc2V0LXVwL3RlYXItZG93biBmdW5jdGlvbj8gIyMK
LQotVGhlIGZpcnN0IHRoaW5nIHRvIHJlbWVtYmVyIGlzIHRoYXQgR29vZ2xlIFRlc3QgZG9lcyBu
b3QgcmV1c2UgdGhlCi1zYW1lIHRlc3QgZml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRl
c3RzLiBGb3IgZWFjaCBgVEVTVF9GYCwKLUdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIGEgZnJlc2gg
dGVzdCBmaXh0dXJlIG9iamVjdCwgX2ltbWVkaWF0ZWx5XwotY2FsbCBgU2V0VXAoKWAsIHJ1biB0
aGUgdGVzdCwgY2FsbCBgVGVhckRvd24oKWAsIGFuZCB0aGVuCi1faW1tZWRpYXRlbHlfIGRlbGV0
ZSB0aGUgdGVzdCBmaXh0dXJlIG9iamVjdC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubwotbmVlZCB0
byB3cml0ZSBhIGBTZXRVcCgpYCBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gaWYgdGhlIGNvbnN0
cnVjdG9yCi1vciBkZXN0cnVjdG9yIGFscmVhZHkgZG9lcyB0aGUgam9iLgotCi1Zb3UgbWF5IHN0
aWxsIHdhbnQgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgY2Fz
ZXM6Ci0gICogSWYgdGhlIHRlYXItZG93biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0
aW9uLCB5b3UgbXVzdCB1c2UgYFRlYXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0
b3IsIGFzIHRocm93aW5nIGluIGEgZGVzdHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZp
b3IgYW5kIHVzdWFsbHkgd2lsbCBraWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRo
YXQgbWFueSBzdGFuZGFyZCBsaWJyYXJpZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNl
cHRpb25zIGFyZSBlbmFibGVkIGluIHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQg
cHJlZmVyIGBUZWFyRG93bigpYCBpZiB5b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0
aGF0IHdvcmsgd2l0aCBvciB3aXRob3V0IGV4Y2VwdGlvbnMuCi0gICogVGhlIEdvb2dsZSBUZXN0
IHRlYW0gaXMgY29uc2lkZXJpbmcgbWFraW5nIHRoZSBhc3NlcnRpb24gbWFjcm9zIHRocm93IG9u
IHBsYXRmb3JtcyB3aGVyZSBleGNlcHRpb25zIGFyZSBlbmFibGVkIChlLmcuIFdpbmRvd3MsIE1h
YyBPUywgYW5kIExpbnV4IGNsaWVudC1zaWRlKSwgd2hpY2ggd2lsbCBlbGltaW5hdGUgdGhlIG5l
ZWQgZm9yIHRoZSB1c2VyIHRvIHByb3BhZ2F0ZSBmYWlsdXJlcyBmcm9tIGEgc3Vicm91dGluZSB0
byBpdHMgY2FsbGVyLiBUaGVyZWZvcmUsIHlvdSBzaG91bGRuJ3QgdXNlIEdvb2dsZSBUZXN0IGFz
c2VydGlvbnMgaW4gYSBkZXN0cnVjdG9yIGlmIHlvdXIgY29kZSBjb3VsZCBydW4gb24gc3VjaCBh
IHBsYXRmb3JtLgotICAqIEluIGEgY29uc3RydWN0b3Igb3IgZGVzdHJ1Y3RvciwgeW91IGNhbm5v
dCBtYWtlIGEgdmlydHVhbCBmdW5jdGlvbiBjYWxsIG9uIHRoaXMgb2JqZWN0LiAoWW91IGNhbiBj
YWxsIGEgbWV0aG9kIGRlY2xhcmVkIGFzIHZpcnR1YWwsIGJ1dCBpdCB3aWxsIGJlIHN0YXRpY2Fs
bHkgYm91bmQuKSBUaGVyZWZvcmUsIGlmIHlvdSBuZWVkIHRvIGNhbGwgYSBtZXRob2QgdGhhdCB3
aWxsIGJlIG92ZXJyaWRlbiBpbiBhIGRlcml2ZWQgY2xhc3MsIHlvdSBoYXZlIHRvIHVzZSBgU2V0
VXAoKS9UZWFyRG93bigpYC4KLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlucyAibm8gbWF0Y2hp
bmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiBJIHVzZSBBU1NFUlRcX1BSRURuLiBIb3cgZG8gSSBm
aXggaXQ/ICMjCi0KLUlmIHRoZSBwcmVkaWNhdGUgZnVuY3Rpb24geW91IHVzZSBpbiBgQVNTRVJU
X1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCBpcwotb3ZlcmxvYWRlZCBvciBhIHRlbXBsYXRlLCB0
aGUgY29tcGlsZXIgd2lsbCBoYXZlIHRyb3VibGUgZmlndXJpbmcgb3V0IHdoaWNoCi1vdmVybG9h
ZGVkIHZlcnNpb24gaXQgc2hvdWxkIHVzZS4gYEFTU0VSVF9QUkVEX0ZPUk1BVCpgIGFuZAotYEVY
UEVDVF9QUkVEX0ZPUk1BVCpgIGRvbid0IGhhdmUgdGhpcyBwcm9ibGVtLgotCi1JZiB5b3Ugc2Vl
IHRoaXMgZXJyb3IsIHlvdSBtaWdodCB3YW50IHRvIHN3aXRjaCB0bwotYChBU1NFUlR8RVhQRUNU
KV9QUkVEX0ZPUk1BVCpgLCB3aGljaCB3aWxsIGFsc28gZ2l2ZSB5b3UgYSBiZXR0ZXIgZmFpbHVy
ZQotbWVzc2FnZS4gSWYsIGhvd2V2ZXIsIHRoYXQgaXMgbm90IGFuIG9wdGlvbiwgeW91IGNhbiBy
ZXNvbHZlIHRoZSBwcm9ibGVtIGJ5Ci1leHBsaWNpdGx5IHRlbGxpbmcgdGhlIGNvbXBpbGVyIHdo
aWNoIHZlcnNpb24gdG8gcGljay4KLQotRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKLQot
YGBgCi1ib29sIElzUG9zaXRpdmUoaW50IG4pIHsKLSAgcmV0dXJuIG4gPiAwOwotfQotYm9vbCBJ
c1Bvc2l0aXZlKGRvdWJsZSB4KSB7Ci0gIHJldHVybiB4ID4gMDsKLX0KLWBgYAotCi15b3Ugd2ls
bCBnZXQgYSBjb21waWxlciBlcnJvciBpZiB5b3Ugd3JpdGUKLQotYGBgCi1FWFBFQ1RfUFJFRDEo
SXNQb3NpdGl2ZSwgNSk7Ci1gYGAKLQotSG93ZXZlciwgdGhpcyB3aWxsIHdvcms6Ci0KLWBgYAot
RVhQRUNUX1BSRUQxKCpzdGF0aWNfY2FzdDxib29sICgqKShpbnQpPiooSXNQb3NpdGl2ZSksIDUp
OwotYGBgCi0KLShUaGUgc3R1ZmYgaW5zaWRlIHRoZSBhbmdsZWQgYnJhY2tldHMgZm9yIHRoZSBg
c3RhdGljX2Nhc3RgIG9wZXJhdG9yIGlzIHRoZQotdHlwZSBvZiB0aGUgZnVuY3Rpb24gcG9pbnRl
ciBmb3IgdGhlIGBpbnRgLXZlcnNpb24gb2YgYElzUG9zaXRpdmUoKWAuKQotCi1BcyBhbm90aGVy
IGV4YW1wbGUsIHdoZW4geW91IGhhdmUgYSB0ZW1wbGF0ZSBmdW5jdGlvbgotCi1gYGAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotYm9vbCBJc05lZ2F0aXZlKFQgeCkgewotICByZXR1cm4geCA8IDA7
Ci19Ci1gYGAKLQoteW91IGNhbiB1c2UgaXQgaW4gYSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGxpa2Ug
dGhpczoKLQotYGBgCi1BU1NFUlRfUFJFRDEoSXNOZWdhdGl2ZSo8aW50PiosIC01KTsKLWBgYAot
Ci1UaGluZ3MgYXJlIG1vcmUgaW50ZXJlc3RpbmcgaWYgeW91ciB0ZW1wbGF0ZSBoYXMgbW9yZSB0
aGFuIG9uZSBwYXJhbWV0ZXJzLiBUaGUKLWZvbGxvd2luZyB3b24ndCBjb21waWxlOgotCi1gYGAK
LUFTU0VSVF9QUkVEMigqR3JlYXRlclRoYW48aW50LCBpbnQ+KiwgNSwgMCk7Ci1gYGAKLQotCi1h
cyB0aGUgQysrIHByZS1wcm9jZXNzb3IgdGhpbmtzIHlvdSBhcmUgZ2l2aW5nIGBBU1NFUlRfUFJF
RDJgIDQgYXJndW1lbnRzLAotd2hpY2ggaXMgb25lIG1vcmUgdGhhbiBleHBlY3RlZC4gVGhlIHdv
cmthcm91bmQgaXMgdG8gd3JhcCB0aGUgcHJlZGljYXRlCi1mdW5jdGlvbiBpbiBwYXJlbnRoZXNl
czoKLQotYGBgCi1BU1NFUlRfUFJFRDIoKihHcmVhdGVyVGhhbjxpbnQsIGludD4pKiwgNSwgMCk7
Ci1gYGAKLQotCi0jIyBNeSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgImlnbm9yaW5nIHJldHVy
biB2YWx1ZSIgd2hlbiBJIGNhbGwgUlVOXF9BTExcX1RFU1RTKCkuIFdoeT8gIyMKLQotU29tZSBw
ZW9wbGUgaGFkIGJlZW4gaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNU
UygpYC4gVGhhdCBpcywKLWluc3RlYWQgb2YKLQotYGBgCi1yZXR1cm4gUlVOX0FMTF9URVNUUygp
OwotYGBgCi0KLXRoZXkgd3JpdGUKLQotYGBgCi1SVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotVGhp
cyBpcyB3cm9uZyBhbmQgZGFuZ2Vyb3VzLiBBIHRlc3QgcnVubmVyIG5lZWRzIHRvIHNlZSB0aGUg
cmV0dXJuIHZhbHVlIG9mCi1gUlVOX0FMTF9URVNUUygpYCBpbiBvcmRlciB0byBkZXRlcm1pbmUg
aWYgYSB0ZXN0IGhhcyBwYXNzZWQuIElmIHlvdXIgYG1haW4oKWAKLWZ1bmN0aW9uIGlnbm9yZXMg
aXQsIHlvdXIgdGVzdCB3aWxsIGJlIGNvbnNpZGVyZWQgc3VjY2Vzc2Z1bCBldmVuIGlmIGl0IGhh
cyBhCi1Hb29nbGUgVGVzdCBhc3NlcnRpb24gZmFpbHVyZS4gVmVyeSBiYWQuCi0KLVRvIGhlbHAg
dGhlIHVzZXJzIGF2b2lkIHRoaXMgZGFuZ2Vyb3VzIGJ1ZywgdGhlIGltcGxlbWVudGF0aW9uIG9m
Ci1gUlVOX0FMTF9URVNUUygpYCBjYXVzZXMgZ2NjIHRvIHJhaXNlIHRoaXMgd2FybmluZywgd2hl
biB0aGUgcmV0dXJuIHZhbHVlIGlzCi1pZ25vcmVkLiBJZiB5b3Ugc2VlIHRoaXMgd2FybmluZywg
dGhlIGZpeCBpcyBzaW1wbGU6IGp1c3QgbWFrZSBzdXJlIGl0cyB2YWx1ZQotaXMgdXNlZCBhcyB0
aGUgcmV0dXJuIHZhbHVlIG9mIGBtYWluKClgLgotCi0jIyBNeSBjb21waWxlciBjb21wbGFpbnMg
dGhhdCBhIGNvbnN0cnVjdG9yIChvciBkZXN0cnVjdG9yKSBjYW5ub3QgcmV0dXJuIGEgdmFsdWUu
IFdoYXQncyBnb2luZyBvbj8gIyMKLQotRHVlIHRvIGEgcGVjdWxpYXJpdHkgb2YgQysrLCBpbiBv
cmRlciB0byBzdXBwb3J0IHRoZSBzeW50YXggZm9yIHN0cmVhbWluZwotbWVzc2FnZXMgdG8gYW4g
YEFTU0VSVF8qYCwgZS5nLgotCi1gYGAKLUFTU0VSVF9FUSgxLCBGb28oKSkgPDwgImJsYWggYmxh
aCIgPDwgZm9vOwotYGBgCi0KLXdlIGhhZCB0byBnaXZlIHVwIHVzaW5nIGBBU1NFUlQqYCBhbmQg
YEZBSUwqYCAoYnV0IG5vdCBgRVhQRUNUKmAgYW5kCi1gQUREX0ZBSUxVUkUqYCkgaW4gY29uc3Ry
dWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4gVGhlIHdvcmthcm91bmQgaXMgdG8gbW92ZSB0aGUKLWNv
bnRlbnQgb2YgeW91ciBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHRvIGEgcHJpdmF0ZSB2b2lkIG1l
bWJlciBmdW5jdGlvbiwgb3IKLXN3aXRjaCB0byBgRVhQRUNUXyooKWAgaWYgdGhhdCB3b3Jrcy4g
VGhpcyBzZWN0aW9uIGluIHRoZSB1c2VyJ3MgZ3VpZGUgZXhwbGFpbnMKLWl0LgotCi0jIyBNeSBz
ZXQtdXAgZnVuY3Rpb24gaXMgbm90IGNhbGxlZC4gV2h5PyAjIwotCi1DKysgaXMgY2FzZS1zZW5z
aXRpdmUuIEl0IHNob3VsZCBiZSBzcGVsbGVkIGFzIGBTZXRVcCgpYC4gIERpZCB5b3UKLXNwZWxs
IGl0IGFzIGBTZXR1cCgpYD8KLQotU2ltaWxhcmx5LCBzb21ldGltZXMgcGVvcGxlIHNwZWxsIGBT
ZXRVcFRlc3RDYXNlKClgIGFzIGBTZXR1cFRlc3RDYXNlKClgIGFuZAotd29uZGVyIHdoeSBpdCdz
IG5ldmVyIGNhbGxlZC4KLQotIyMgSG93IGRvIEkganVtcCB0byB0aGUgbGluZSBvZiBhIGZhaWx1
cmUgaW4gRW1hY3MgZGlyZWN0bHk/ICMjCi0KLUdvb2dsZSBUZXN0J3MgZmFpbHVyZSBtZXNzYWdl
IGZvcm1hdCBpcyB1bmRlcnN0b29kIGJ5IEVtYWNzIGFuZCBtYW55IG90aGVyCi1JREVzLCBsaWtl
IGFjbWUgYW5kIFhDb2RlLiBJZiBhIEdvb2dsZSBUZXN0IG1lc3NhZ2UgaXMgaW4gYSBjb21waWxh
dGlvbiBidWZmZXIKLWluIEVtYWNzLCB0aGVuIGl0J3MgY2xpY2thYmxlLiBZb3UgY2FuIG5vdyBo
aXQgYGVudGVyYCBvbiBhIG1lc3NhZ2UgdG8ganVtcCB0bwotdGhlIGNvcnJlc3BvbmRpbmcgc291
cmNlIGNvZGUsIG9yIHVzZSBgQy14IGBgIHRvIGp1bXAgdG8gdGhlIG5leHQgZmFpbHVyZS4KLQot
IyMgSSBoYXZlIHNldmVyYWwgdGVzdCBjYXNlcyB3aGljaCBzaGFyZSB0aGUgc2FtZSB0ZXN0IGZp
eHR1cmUgbG9naWMsIGRvIEkgaGF2ZSB0byBkZWZpbmUgYSBuZXcgdGVzdCBmaXh0dXJlIGNsYXNz
IGZvciBlYWNoIG9mIHRoZW0/IFRoaXMgc2VlbXMgcHJldHR5IHRlZGlvdXMuICMjCi0KLVlvdSBk
b24ndCBoYXZlIHRvLiBJbnN0ZWFkIG9mCi0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyBC
YXNlVGVzdCB7fTsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9GKEZvb1Rl
c3QsIERlZikgeyAuLi4gfQotCi1jbGFzcyBCYXJUZXN0IDogcHVibGljIEJhc2VUZXN0IHt9Owot
Ci1URVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgRGVmKSB7IC4u
LiB9Ci1gYGAKLQoteW91IGNhbiBzaW1wbHkgYHR5cGVkZWZgIHRoZSB0ZXN0IGZpeHR1cmVzOgot
YGBgCi10eXBlZGVmIEJhc2VUZXN0IEZvb1Rlc3Q7Ci0KLVRFU1RfRihGb29UZXN0LCBBYmMpIHsg
Li4uIH0KLVRFU1RfRihGb29UZXN0LCBEZWYpIHsgLi4uIH0KLQotdHlwZWRlZiBCYXNlVGVzdCBC
YXJUZXN0OwotCi1URVNUX0YoQmFyVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwg
RGVmKSB7IC4uLiB9Ci1gYGAKLQotIyMgVGhlIEdvb2dsZSBUZXN0IG91dHB1dCBpcyBidXJpZWQg
aW4gYSB3aG9sZSBidW5jaCBvZiBsb2cgbWVzc2FnZXMuIFdoYXQgZG8gSSBkbz8gIyMKLQotVGhl
IEdvb2dsZSBUZXN0IG91dHB1dCBpcyBtZWFudCB0byBiZSBhIGNvbmNpc2UgYW5kIGh1bWFuLWZy
aWVuZGx5IHJlcG9ydC4gSWYKLXlvdXIgdGVzdCBnZW5lcmF0ZXMgdGV4dHVhbCBvdXRwdXQgaXRz
ZWxmLCBpdCB3aWxsIG1peCB3aXRoIHRoZSBHb29nbGUgVGVzdAotb3V0cHV0LCBtYWtpbmcgaXQg
aGFyZCB0byByZWFkLiBIb3dldmVyLCB0aGVyZSBpcyBhbiBlYXN5IHNvbHV0aW9uIHRvIHRoaXMK
LXByb2JsZW0uCi0KLVNpbmNlIG1vc3QgbG9nIG1lc3NhZ2VzIGdvIHRvIHN0ZGVyciwgd2UgZGVj
aWRlZCB0byBsZXQgR29vZ2xlIFRlc3Qgb3V0cHV0IGdvCi10byBzdGRvdXQuIFRoaXMgd2F5LCB5
b3UgY2FuIGVhc2lseSBzZXBhcmF0ZSB0aGUgdHdvIHVzaW5nIHJlZGlyZWN0aW9uLiBGb3IKLWV4
YW1wbGU6Ci1gYGAKLS4vbXlfdGVzdCA+IGdvb2dsZXRlc3Rfb3V0cHV0LnR4dAotYGBgCi0KLSMj
IFdoeSBzaG91bGQgSSBwcmVmZXIgdGVzdCBmaXh0dXJlcyBvdmVyIGdsb2JhbCB2YXJpYWJsZXM/
ICMjCi0KLVRoZXJlIGFyZSBzZXZlcmFsIGdvb2QgcmVhc29uczoKLSAgMS4gSXQncyBsaWtlbHkg
eW91ciB0ZXN0IG5lZWRzIHRvIGNoYW5nZSB0aGUgc3RhdGVzIG9mIGl0cyBnbG9iYWwgdmFyaWFi
bGVzLiBUaGlzIG1ha2VzIGl0IGRpZmZpY3VsdCB0byBrZWVwIHNpZGUgZWZmZWN0cyBmcm9tIGVz
Y2FwaW5nIG9uZSB0ZXN0IGFuZCBjb250YW1pbmF0aW5nIG90aGVycywgbWFraW5nIGRlYnVnZ2lu
ZyBkaWZmaWN1bHQuIEJ5IHVzaW5nIGZpeHR1cmVzLCBlYWNoIHRlc3QgaGFzIGEgZnJlc2ggc2V0
IG9mIHZhcmlhYmxlcyB0aGF0J3MgZGlmZmVyZW50IChidXQgd2l0aCB0aGUgc2FtZSBuYW1lcyku
IFRodXMsIHRlc3RzIGFyZSBrZXB0IGluZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIuCi0gIDEuIEds
b2JhbCB2YXJpYWJsZXMgcG9sbHV0ZSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLSAgMS4gVGVzdCBm
aXh0dXJlcyBjYW4gYmUgcmV1c2VkIHZpYSBzdWJjbGFzc2luZywgd2hpY2ggY2Fubm90IGJlIGRv
bmUgZWFzaWx5IHdpdGggZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBpcyB1c2VmdWwgaWYgbWFueSB0
ZXN0IGNhc2VzIGhhdmUgc29tZXRoaW5nIGluIGNvbW1vbi4KLQotIyMgSG93IGRvIEkgdGVzdCBw
cml2YXRlIGNsYXNzIG1lbWJlcnMgd2l0aG91dCB3cml0aW5nIEZSSUVORFxfVEVTVCgpcz8gIyMK
LQotWW91IHNob3VsZCB0cnkgdG8gd3JpdGUgdGVzdGFibGUgY29kZSwgd2hpY2ggbWVhbnMgY2xh
c3NlcyBzaG91bGQgYmUgZWFzaWx5Ci10ZXN0ZWQgZnJvbSB0aGVpciBwdWJsaWMgaW50ZXJmYWNl
LiBPbmUgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0aGUgUGltcGwgaWRpb206Ci15b3UgbW92ZSBh
bGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xhc3MgaW50byBhIGhlbHBlciBjbGFzcywgYW5kIG1h
a2UgYWxsCi1tZW1iZXJzIG9mIHRoZSBoZWxwZXIgY2xhc3MgcHVibGljLgotCi1Zb3UgaGF2ZSBz
ZXZlcmFsIG90aGVyIG9wdGlvbnMgdGhhdCBkb24ndCByZXF1aXJlIHVzaW5nIGBGUklFTkRfVEVT
VGA6Ci0gICogV3JpdGUgdGhlIHRlc3RzIGFzIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3M6
Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIGZyaWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0K
LWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IC4uLgotICB2b2lkIFRlc3QxKCkgey4uLn0gLy8gVGhpcyBhY2Nlc3NlcyBwcml2YXRlIG1lbWJl
cnMgb2YgY2xhc3MgRm9vLgotICB2b2lkIFRlc3QyKCkgey4uLn0gLy8gU28gZG9lcyB0aGlzIG9u
ZS4KLX07Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotICBUZXN0MSgpOwotfQotCi1URVNU
X0YoRm9vVGVzdCwgVGVzdDIpIHsKLSAgVGVzdDIoKTsKLX0KLWBgYAotICAqIEluIHRoZSBmaXh0
dXJlIGNsYXNzLCB3cml0ZSBhY2Nlc3NvcnMgZm9yIHRoZSB0ZXN0ZWQgY2xhc3MnIHByaXZhdGUg
bWVtYmVycywgdGhlbiB1c2UgdGhlIGFjY2Vzc29ycyBpbiB5b3VyIHRlc3RzOgotYGBgCi1jbGFz
cyBGb28gewotICBmcmllbmQgY2xhc3MgRm9vVGVzdDsKLSAgLi4uCi19OwotCi1jbGFzcyBGb29U
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAuLi4KLSAgVDEg
Z2V0X3ByaXZhdGVfbWVtYmVyMShGb28qIG9iaikgewotICAgIHJldHVybiBvYmotPnByaXZhdGVf
bWVtYmVyMV87Ci0gIH0KLX07Ci0KLVRFU1RfRihGb29UZXN0LCBUZXN0MSkgewotICAuLi4KLSAg
Z2V0X3ByaXZhdGVfbWVtYmVyMSh4KQotICAuLi4KLX0KLWBgYAotICAqIElmIHRoZSBtZXRob2Rz
IGFyZSBkZWNsYXJlZCAqKnByb3RlY3RlZCoqLCB5b3UgY2FuIGNoYW5nZSB0aGVpciBhY2Nlc3Mg
bGV2ZWwgaW4gYSB0ZXN0LW9ubHkgc3ViY2xhc3M6Ci1gYGAKLWNsYXNzIFlvdXJDbGFzcyB7Ci0g
IC4uLgotIHByb3RlY3RlZDogLy8gcHJvdGVjdGVkIGFjY2VzcyBmb3IgdGVzdGFiaWxpdHkuCi0g
IGludCBEb1NvbWV0aGluZ1JldHVybmluZ0ludCgpOwotICAuLi4KLX07Ci0KLS8vIGluIHRoZSB5
b3VyX2NsYXNzX3Rlc3QuY2MgZmlsZToKLWNsYXNzIFRlc3RhYmxlWW91ckNsYXNzIDogcHVibGlj
IFlvdXJDbGFzcyB7Ci0gIC4uLgotIHB1YmxpYzogdXNpbmcgWW91ckNsYXNzOjpEb1NvbWV0aGlu
Z1JldHVybmluZ0ludDsgLy8gY2hhbmdlcyBhY2Nlc3MgcmlnaHRzCi0gIC4uLgotfTsKLQotVEVT
VF9GKFlvdXJDbGFzc1Rlc3QsIERvU29tZXRoaW5nVGVzdCkgewotICBUZXN0YWJsZVlvdXJDbGFz
cyBvYmo7Ci0gIGFzc2VydEVxdWFscyhleHBlY3RlZF92YWx1ZSwgb2JqLkRvU29tZXRoaW5nUmV0
dXJuaW5nSW50KCkpOwotfQotYGBgCi0KLSMjIEhvdyBkbyBJIHRlc3QgcHJpdmF0ZSBjbGFzcyBz
dGF0aWMgbWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1XZSBm
aW5kIHByaXZhdGUgc3RhdGljIG1ldGhvZHMgY2x1dHRlciB0aGUgaGVhZGVyIGZpbGUuICBUaGV5
IGFyZQotaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgaWRlYWxseSBzaG91bGQgYmUga2VwdCBv
dXQgb2YgYSAuaC4gU28gb2Z0ZW4gSSBtYWtlCi10aGVtIGZyZWUgZnVuY3Rpb25zIGluc3RlYWQu
Ci0KLUluc3RlYWQgb2Y6Ci1gYGAKLS8vIGZvby5oCi1jbGFzcyBGb28gewotICAuLi4KLSBwcml2
YXRlOgotICBzdGF0aWMgYm9vbCBGdW5jKGludCBuKTsKLX07Ci0KLS8vIGZvby5jYwotYm9vbCBG
b286OkZ1bmMoaW50IG4pIHsgLi4uIH0KLQotLy8gZm9vX3Rlc3QuY2MKLUVYUEVDVF9UUlVFKEZv
bzo6RnVuYygxMjM0NSkpOwotYGBgCi0KLVlvdSBwcm9iYWJseSBzaG91bGQgYmV0dGVyIHdyaXRl
OgotYGBgCi0vLyBmb28uaAotY2xhc3MgRm9vIHsKLSAgLi4uCi19OwotCi0vLyBmb28uY2MKLW5h
bWVzcGFjZSBpbnRlcm5hbCB7Ci0gIGJvb2wgRnVuYyhpbnQgbikgeyAuLi4gfQotfQotCi0vLyBm
b29fdGVzdC5jYwotbmFtZXNwYWNlIGludGVybmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKTsKLX0K
LQotRVhQRUNUX1RSVUUoaW50ZXJuYWw6OkZ1bmMoMTIzNDUpKTsKLWBgYAotCi0jIyBJIHdvdWxk
IGxpa2UgdG8gcnVuIGEgdGVzdCBzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRl
cnMuIERvIEkgbmVlZCB0byB3cml0ZSBzZXZlcmFsIHNpbWlsYXIgY29waWVzIG9mIGl0PyAjIwot
Ci1Oby4gWW91IGNhbiB1c2UgYSBmZWF0dXJlIGNhbGxlZCBbdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0c10oVjFfNl9BZHZhbmNlZEd1aWRlLm1kI1ZhbHVlX1BhcmFtZXRlcml6ZWRfVGVzdHMpIHdo
aWNoCi1sZXRzIHlvdSByZXBlYXQgeW91ciB0ZXN0cyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJz
LCB3aXRob3V0IGRlZmluaW5nIGl0IG1vcmUgdGhhbiBvbmNlLgotCi0jIyBIb3cgZG8gSSB0ZXN0
IGEgZmlsZSB0aGF0IGRlZmluZXMgbWFpbigpPyAjIwotCi1UbyB0ZXN0IGEgYGZvby5jY2AgZmls
ZSwgeW91IG5lZWQgdG8gY29tcGlsZSBhbmQgbGluayBpdCBpbnRvIHlvdXIgdW5pdCB0ZXN0Ci1w
cm9ncmFtLiBIb3dldmVyLCB3aGVuIHRoZSBmaWxlIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3Ig
dGhlIGBtYWluKClgCi1mdW5jdGlvbiwgaXQgd2lsbCBjbGFzaCB3aXRoIHRoZSBgbWFpbigpYCBv
ZiB5b3VyIHVuaXQgdGVzdCwgYW5kIHdpbGwgcmVzdWx0IGluCi1hIGJ1aWxkIGVycm9yLgotCi1U
aGUgcmlnaHQgc29sdXRpb24gaXMgdG8gc3BsaXQgaXQgaW50byB0aHJlZSBmaWxlczoKLSAgMS4g
YGZvby5oYCB3aGljaCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zLAotICAxLiBgZm9vLmNjYCB3
aGljaCBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZXhjZXB0IGBtYWluKClgLCBhbmQKLSAgMS4g
YGZvb19tYWluLmNjYCB3aGljaCBjb250YWlucyBub3RoaW5nIGJ1dCB0aGUgZGVmaW5pdGlvbiBv
ZiBgbWFpbigpYC4KLQotVGhlbiBgZm9vLmNjYCBjYW4gYmUgZWFzaWx5IHRlc3RlZC4KLQotSWYg
eW91IGFyZSBhZGRpbmcgdGVzdHMgdG8gYW4gZXhpc3RpbmcgZmlsZSBhbmQgZG9uJ3Qgd2FudCBh
biBpbnRydXNpdmUgY2hhbmdlCi1saWtlIHRoaXMsIHRoZXJlIGlzIGEgaGFjazoganVzdCBpbmNs
dWRlIHRoZSBlbnRpcmUgYGZvby5jY2AgZmlsZSBpbiB5b3VyIHVuaXQKLXRlc3QuIEZvciBleGFt
cGxlOgotYGBgCi0vLyBGaWxlIGZvb191bml0dGVzdC5jYwotCi0vLyBUaGUgaGVhZGVycyBzZWN0
aW9uCi0uLi4KLQotLy8gUmVuYW1lcyBtYWluKCkgaW4gZm9vLmNjIHRvIG1ha2Ugcm9vbSBmb3Ig
dGhlIHVuaXQgdGVzdCBtYWluKCkKLSNkZWZpbmUgbWFpbiBGb29NYWluCi0KLSNpbmNsdWRlICJh
L2IvZm9vLmNjIgotCi0vLyBUaGUgdGVzdHMgc3RhcnQgaGVyZS4KLS4uLgotYGBgCi0KLQotSG93
ZXZlciwgcGxlYXNlIHJlbWVtYmVyIHRoaXMgaXMgYSBoYWNrIGFuZCBzaG91bGQgb25seSBiZSB1
c2VkIGFzIHRoZSBsYXN0Ci1yZXNvcnQuCi0KLSMjIFdoYXQgY2FuIHRoZSBzdGF0ZW1lbnQgYXJn
dW1lbnQgaW4gQVNTRVJUXF9ERUFUSCgpIGJlPyAjIwotCi1gQVNTRVJUX0RFQVRIKF9zdGF0ZW1l
bnRfLCBfcmVnZXhfKWAgKG9yIGFueSBkZWF0aCBhc3NlcnRpb24gbWFjcm8pIGNhbiBiZSB1c2Vk
Ci13aGVyZXZlciBgX3N0YXRlbWVudF9gIGlzIHZhbGlkLiBTbyBiYXNpY2FsbHkgYF9zdGF0ZW1l
bnRfYCBjYW4gYmUgYW55IEMrKwotc3RhdGVtZW50IHRoYXQgbWFrZXMgc2Vuc2UgaW4gdGhlIGN1
cnJlbnQgY29udGV4dC4gSW4gcGFydGljdWxhciwgaXQgY2FuCi1yZWZlcmVuY2UgZ2xvYmFsIGFu
ZC9vciBsb2NhbCB2YXJpYWJsZXMsIGFuZCBjYW4gYmU6Ci0gICogYSBzaW1wbGUgZnVuY3Rpb24g
Y2FsbCAob2Z0ZW4gdGhlIGNhc2UpLAotICAqIGEgY29tcGxleCBleHByZXNzaW9uLCBvcgotICAq
IGEgY29tcG91bmQgc3RhdGVtZW50LgotCi0+IFNvbWUgZXhhbXBsZXMgYXJlIHNob3duIGhlcmU6
Ci0KLWBgYAotLy8gQSBkZWF0aCB0ZXN0IGNhbiBiZSBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsLgot
VEVTVChNeURlYXRoVGVzdCwgRnVuY3Rpb25DYWxsKSB7Ci0gIEFTU0VSVF9ERUFUSChYeXooNSks
ICJYeXogZmFpbGVkIik7Ci19Ci0KLS8vIE9yIGEgY29tcGxleCBleHByZXNzaW9uIHRoYXQgcmVm
ZXJlbmNlcyB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4KLVRFU1QoTXlEZWF0aFRlc3QsIENvbXBs
ZXhFeHByZXNzaW9uKSB7Ci0gIGNvbnN0IGJvb2wgYyA9IENvbmRpdGlvbigpOwotICBBU1NFUlRf
REVBVEgoKGMgPyBGdW5jMSgwKSA6IG9iamVjdDIuTWV0aG9kKCJ0ZXN0IikpLAotICAgICAgICAg
ICAgICAgIihGdW5jMXxNZXRob2QpIGZhaWxlZCIpOwotfQotCi0vLyBEZWF0aCBhc3NlcnRpb25z
IGNhbiBiZSB1c2VkIGFueSB3aGVyZSBpbiBhIGZ1bmN0aW9uLiBJbgotLy8gcGFydGljdWxhciwg
dGhleSBjYW4gYmUgaW5zaWRlIGEgbG9vcC4KLVRFU1QoTXlEZWF0aFRlc3QsIEluc2lkZUxvb3Ap
IHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBGb28oMCksIEZvbygxKSwgLi4uLCBhbmQgRm9vKDQpIGFs
bCBkaWUuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RFQVRI
X00oRm9vKGkpLCAiRm9vIGhhcyBcXGQrIGVycm9ycyIsCi0gICAgICAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjpNZXNzYWdlKCkgPDwgIndoZXJlIGkgaXMgIiA8PCBpKTsKLSAgfQotfQotCi0vLyBB
IGRlYXRoIGFzc2VydGlvbiBjYW4gY29udGFpbiBhIGNvbXBvdW5kIHN0YXRlbWVudC4KLVRFU1Qo
TXlEZWF0aFRlc3QsIENvbXBvdW5kU3RhdGVtZW50KSB7Ci0gIC8vIFZlcmlmaWVzIHRoYXQgYXQg
bGVhc2Ugb25lIG9mIEJhcigwKSwgQmFyKDEpLCAuLi4sIGFuZAotICAvLyBCYXIoNCkgZGllcy4K
LSAgQVNTRVJUX0RFQVRIKHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgewotICAg
ICAgQmFyKGkpOwotICAgIH0KLSAgfSwKLSAgIkJhciBoYXMgXFxkKyBlcnJvcnMiKTt9Ci1gYGAK
LQotYGdvb2dsZXRlc3RfdW5pdHRlc3QuY2NgIGNvbnRhaW5zIG1vcmUgZXhhbXBsZXMgaWYgeW91
IGFyZSBpbnRlcmVzdGVkLgotCi0jIyBXaGF0IHN5bnRheCBkb2VzIHRoZSByZWd1bGFyIGV4cHJl
c3Npb24gaW4gQVNTRVJUXF9ERUFUSCB1c2U/ICMjCi0KLU9uIFBPU0lYIHN5c3RlbXMsIEdvb2ds
ZSBUZXN0IHVzZXMgdGhlIFBPU0lYIEV4dGVuZGVkIHJlZ3VsYXIKLWV4cHJlc3Npb24gc3ludGF4
Ci0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWd1bGFyX2V4cHJlc3Npb24jUE9TSVhf
RXh0ZW5kZWRfUmVndWxhcl9FeHByZXNzaW9ucykuCi1PbiBXaW5kb3dzLCBpdCB1c2VzIGEgbGlt
aXRlZCB2YXJpYW50IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbgotc3ludGF4LiBGb3IgbW9yZSBkZXRh
aWxzLCBzZWUgdGhlCi1bcmVndWxhciBleHByZXNzaW9uIHN5bnRheF0oVjFfNl9BZHZhbmNlZEd1
aWRlLm1kI1JlZ3VsYXJfRXhwcmVzc2lvbl9TeW50YXgpLgotCi0jIyBJIGhhdmUgYSBmaXh0dXJl
IGNsYXNzIEZvbywgYnV0IFRFU1RcX0YoRm9vLCBCYXIpIGdpdmVzIG1lIGVycm9yICJubyBtYXRj
aGluZyBmdW5jdGlvbiBmb3IgY2FsbCB0byBGb286OkZvbygpIi4gV2h5PyAjIwotCi1Hb29nbGUg
VGVzdCBuZWVkcyB0byBiZSBhYmxlIHRvIGNyZWF0ZSBvYmplY3RzIG9mIHlvdXIgdGVzdCBmaXh0
dXJlIGNsYXNzLCBzbwotaXQgbXVzdCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gTm9ybWFs
bHkgdGhlIGNvbXBpbGVyIHdpbGwgZGVmaW5lIG9uZSBmb3IKLXlvdS4gSG93ZXZlciwgdGhlcmUg
YXJlIGNhc2VzIHdoZXJlIHlvdSBoYXZlIHRvIGRlZmluZSB5b3VyIG93bjoKLSAgKiBJZiB5b3Ug
ZXhwbGljaXRseSBkZWNsYXJlIGEgbm9uLWRlZmF1bHQgY29uc3RydWN0b3IgZm9yIGNsYXNzIGBG
b29gLCB0aGVuIHlvdSBuZWVkIHRvIGRlZmluZSBhIGRlZmF1bHQgY29uc3RydWN0b3IsIGV2ZW4g
aWYgaXQgd291bGQgYmUgZW1wdHkuCi0gICogSWYgYEZvb2AgaGFzIGEgY29uc3Qgbm9uLXN0YXRp
YyBkYXRhIG1lbWJlciwgdGhlbiB5b3UgaGF2ZSB0byBkZWZpbmUgdGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgX2FuZF8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyIGluIHRoZSBpbml0aWFsaXpl
ciBsaXN0IG9mIHRoZSBjb25zdHJ1Y3Rvci4gKEVhcmx5IHZlcnNpb25zIG9mIGBnY2NgIGRvZXNu
J3QgZm9yY2UgeW91IHRvIGluaXRpYWxpemUgdGhlIGNvbnN0IG1lbWJlci4gSXQncyBhIGJ1ZyB0
aGF0IGhhcyBiZWVuIGZpeGVkIGluIGBnY2MgNGAuKQotCi0jIyBXaHkgZG9lcyBBU1NFUlRcX0RF
QVRIIGNvbXBsYWluIGFib3V0IHByZXZpb3VzIHRocmVhZHMgdGhhdCB3ZXJlIGFscmVhZHkgam9p
bmVkPyAjIwotCi1XaXRoIHRoZSBMaW51eCBwdGhyZWFkIGxpYnJhcnksIHRoZXJlIGlzIG5vIHR1
cm5pbmcgYmFjayBvbmNlIHlvdSBjcm9zcyB0aGUKLWxpbmUgZnJvbSBzaW5nbGUgdGhyZWFkIHRv
IG11bHRpcGxlIHRocmVhZHMuIFRoZSBmaXJzdCB0aW1lIHlvdSBjcmVhdGUgYQotdGhyZWFkLCBh
IG1hbmFnZXIgdGhyZWFkIGlzIGNyZWF0ZWQgaW4gYWRkaXRpb24sIHNvIHlvdSBnZXQgMywgbm90
IDIsIHRocmVhZHMuCi1MYXRlciB3aGVuIHRoZSB0aHJlYWQgeW91IGNyZWF0ZSBqb2lucyB0aGUg
bWFpbiB0aHJlYWQsIHRoZSB0aHJlYWQgY291bnQKLWRlY3JlbWVudHMgYnkgMSwgYnV0IHRoZSBt
YW5hZ2VyIHRocmVhZCB3aWxsIG5ldmVyIGJlIGtpbGxlZCwgc28geW91IHN0aWxsIGhhdmUKLTIg
dGhyZWFkcywgd2hpY2ggbWVhbnMgeW91IGNhbm5vdCBzYWZlbHkgcnVuIGEgZGVhdGggdGVzdC4K
LQotVGhlIG5ldyBOUFRMIHRocmVhZCBsaWJyYXJ5IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhpcyBw
cm9ibGVtLCBhcyBpdCBkb2Vzbid0Ci1jcmVhdGUgYSBtYW5hZ2VyIHRocmVhZC4gSG93ZXZlciwg
aWYgeW91IGRvbid0IGNvbnRyb2wgd2hpY2ggbWFjaGluZSB5b3VyIHRlc3QKLXJ1bnMgb24sIHlv
dSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoaXMuCi0KLSMjIFdoeSBkb2VzIEdvb2dsZSBUZXN0IHJl
cXVpcmUgdGhlIGVudGlyZSB0ZXN0IGNhc2UsIGluc3RlYWQgb2YgaW5kaXZpZHVhbCB0ZXN0cywg
dG8gYmUgbmFtZWQgRk9PRGVhdGhUZXN0IHdoZW4gaXQgdXNlcyBBU1NFUlRcX0RFQVRIPyAjIwot
Ci1Hb29nbGUgVGVzdCBkb2VzIG5vdCBpbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRl
c3QgY2FzZXMuIFRoYXQgaXMsIGl0Ci1ydW5zIGFsbCB0ZXN0cyBpbiBvbmUgdGVzdCBjYXNlIGZp
cnN0LCBhbmQgdGhlbiBydW5zIGFsbCB0ZXN0cyBpbiB0aGUgbmV4dCB0ZXN0Ci1jYXNlLCBhbmQg
c28gb24uIEdvb2dsZSBUZXN0IGRvZXMgdGhpcyBiZWNhdXNlIGl0IG5lZWRzIHRvIHNldCB1cCBh
IHRlc3QgY2FzZQotYmVmb3JlIHRoZSBmaXJzdCB0ZXN0IGluIGl0IGlzIHJ1biwgYW5kIHRlYXIg
aXQgZG93biBhZnRlcndvcmRzLiBTcGxpdHRpbmcgdXAKLXRoZSB0ZXN0IGNhc2Ugd291bGQgcmVx
dWlyZSBtdWx0aXBsZSBzZXQtdXAgYW5kIHRlYXItZG93biBwcm9jZXNzZXMsIHdoaWNoIGlzCi1p
bmVmZmljaWVudCBhbmQgbWFrZXMgdGhlIHNlbWFudGljcyB1bmNsZWFuLgotCi1JZiB3ZSB3ZXJl
IHRvIGRldGVybWluZSB0aGUgb3JkZXIgb2YgdGVzdHMgYmFzZWQgb24gdGVzdCBuYW1lIGluc3Rl
YWQgb2YgdGVzdAotY2FzZSBuYW1lLCB0aGVuIHdlIHdvdWxkIGhhdmUgYSBwcm9ibGVtIHdpdGgg
dGhlIGZvbGxvd2luZyBzaXR1YXRpb246Ci0KLWBgYAotVEVTVF9GKEZvb1Rlc3QsIEFiY0RlYXRo
VGVzdCkgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIFV2dykgeyAuLi4gfQotCi1URVNUX0YoQmFy
VGVzdCwgRGVmRGVhdGhUZXN0KSB7IC4uLiB9Ci1URVNUX0YoQmFyVGVzdCwgWHl6KSB7IC4uLiB9
Ci1gYGAKLQotU2luY2UgYEZvb1Rlc3QuQWJjRGVhdGhUZXN0YCBuZWVkcyB0byBydW4gYmVmb3Jl
IGBCYXJUZXN0Llh5emAsIGFuZCB3ZSBkb24ndAotaW50ZXJsZWF2ZSB0ZXN0cyBmcm9tIGRpZmZl
cmVudCB0ZXN0IGNhc2VzLCB3ZSBuZWVkIHRvIHJ1biBhbGwgdGVzdHMgaW4gdGhlCi1gRm9vVGVz
dGAgY2FzZSBiZWZvcmUgcnVubmluZyBhbnkgdGVzdCBpbiB0aGUgYEJhclRlc3RgIGNhc2UuIFRo
aXMgY29udHJhZGljdHMKLXdpdGggdGhlIHJlcXVpcmVtZW50IHRvIHJ1biBgQmFyVGVzdC5EZWZE
ZWF0aFRlc3RgIGJlZm9yZSBgRm9vVGVzdC5VdndgLgotCi0jIyBCdXQgSSBkb24ndCBsaWtlIGNh
bGxpbmcgbXkgZW50aXJlIHRlc3QgY2FzZSBGT09EZWF0aFRlc3Qgd2hlbiBpdCBjb250YWlucyBi
b3RoIGRlYXRoIHRlc3RzIGFuZCBub24tZGVhdGggdGVzdHMuIFdoYXQgZG8gSSBkbz8gIyMKLQot
WW91IGRvbid0IGhhdmUgdG8sIGJ1dCBpZiB5b3UgbGlrZSwgeW91IG1heSBzcGxpdCB1cCB0aGUg
dGVzdCBjYXNlIGludG8KLWBGb29UZXN0YCBhbmQgYEZvb0RlYXRoVGVzdGAsIHdoZXJlIHRoZSBu
YW1lcyBtYWtlIGl0IGNsZWFyIHRoYXQgdGhleSBhcmUKLXJlbGF0ZWQ6Ci0KLWBgYAotY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeyAuLi4gfTsKLQotVEVTVF9GKEZvb1Rl
c3QsIEFiYykgeyAuLi4gfQotVEVTVF9GKEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVm
IEZvb1Rlc3QgRm9vRGVhdGhUZXN0OwotCi1URVNUX0YoRm9vRGVhdGhUZXN0LCBVdncpIHsgLi4u
IEVYUEVDVF9ERUFUSCguLi4pIC4uLiB9Ci1URVNUX0YoRm9vRGVhdGhUZXN0LCBYeXopIHsgLi4u
IEFTU0VSVF9ERUFUSCguLi4pIC4uLiB9Ci1gYGAKLQotIyMgVGhlIGNvbXBpbGVyIGNvbXBsYWlu
cyBhYm91dCAibm8gbWF0Y2ggZm9yICdvcGVyYXRvcjw8JyIgd2hlbiBJIHVzZSBhbiBhc3NlcnRp
b24uIFdoYXQgZ2l2ZXM/ICMjCi0KLUlmIHlvdSB1c2UgYSB1c2VyLWRlZmluZWQgdHlwZSBgRm9v
VHlwZWAgaW4gYW4gYXNzZXJ0aW9uLCB5b3UgbXVzdCBtYWtlIHN1cmUKLXRoZXJlIGlzIGFuIGBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiwgY29uc3QgRm9vVHlwZSYpYCBm
dW5jdGlvbgotZGVmaW5lZCBzdWNoIHRoYXQgd2UgY2FuIHByaW50IGEgdmFsdWUgb2YgYEZvb1R5
cGVgLgotCi1JbiBhZGRpdGlvbiwgaWYgYEZvb1R5cGVgIGlzIGRlY2xhcmVkIGluIGEgbmFtZSBz
cGFjZSwgdGhlIGA8PGAgb3BlcmF0b3IgYWxzbwotbmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUg
X3NhbWVfIG5hbWUgc3BhY2UuCi0KLSMjIEhvdyBkbyBJIHN1cHByZXNzIHRoZSBtZW1vcnkgbGVh
ayBtZXNzYWdlcyBvbiBXaW5kb3dzPyAjIwotCi1TaW5jZSB0aGUgc3RhdGljYWxseSBpbml0aWFs
aXplZCBHb29nbGUgVGVzdCBzaW5nbGV0b24gcmVxdWlyZXMgYWxsb2NhdGlvbnMgb24KLXRoZSBo
ZWFwLCB0aGUgVmlzdWFsIEMrKyBtZW1vcnkgbGVhayBkZXRlY3RvciB3aWxsIHJlcG9ydCBtZW1v
cnkgbGVha3MgYXQgdGhlCi1lbmQgb2YgdGhlIHByb2dyYW0gcnVuLiBUaGUgZWFzaWVzdCB3YXkg
dG8gYXZvaWQgdGhpcyBpcyB0byB1c2UgdGhlCi1gX0NydE1lbUNoZWNrcG9pbnRgIGFuZCBgX0Ny
dE1lbUR1bXBBbGxPYmplY3RzU2luY2VgIGNhbGxzIHRvIG5vdCByZXBvcnQgYW55Ci1zdGF0aWNh
bGx5IGluaXRpYWxpemVkIGhlYXAgb2JqZWN0cy4gU2VlIE1TRE4gZm9yIG1vcmUgZGV0YWlscyBh
bmQgYWRkaXRpb25hbAotaGVhcCBjaGVjay9kZWJ1ZyByb3V0aW5lcy4KLQotIyMgSSBhbSBidWls
ZGluZyBteSBwcm9qZWN0IHdpdGggR29vZ2xlIFRlc3QgaW4gVmlzdWFsIFN0dWRpbyBhbmQgYWxs
IEknbSBnZXR0aW5nIGlzIGEgYnVuY2ggb2YgbGlua2VyIGVycm9ycyAob3Igd2FybmluZ3MpLiBI
ZWxwISAjIwotCi1Zb3UgbWF5IGdldCBhIG51bWJlciBvZiB0aGUgZm9sbG93aW5nIGxpbmtlciBl
cnJvciBvciB3YXJuaW5ncyBpZiB5b3UKLWF0dGVtcHQgdG8gbGluayB5b3VyIHRlc3QgcHJvamVj
dCB3aXRoIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5IHdoZW4KLXlvdXIgcHJvamVjdCBhbmQgdGhl
IGFyZSBub3QgYnVpbHQgdXNpbmcgdGhlIHNhbWUgY29tcGlsZXIgc2V0dGluZ3MuCi0KLSAgKiBM
TksyMDA1OiBzeW1ib2wgYWxyZWFkeSBkZWZpbmVkIGluIG9iamVjdAotICAqIExOSzQyMTc6IGxv
Y2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0ZWQgaW4gZnVuY3Rpb24gJ2Z1bmN0
aW9uJwotICAqIExOSzQwNDk6IGxvY2FsbHkgZGVmaW5lZCBzeW1ib2wgJ3N5bWJvbCcgaW1wb3J0
ZWQKLQotVGhlIEdvb2dsZSBUZXN0IHByb2plY3QgKGd0ZXN0LnZjcHJvaikgaGFzIHRoZSBSdW50
aW1lIExpYnJhcnkgb3B0aW9uCi1zZXQgdG8gL01UICh1c2UgbXVsdGktdGhyZWFkZWQgc3RhdGlj
IGxpYnJhcmllcywgL01UZCBmb3IgZGVidWcpLiBJZgoteW91ciBwcm9qZWN0IHVzZXMgc29tZXRo
aW5nIGVsc2UsIGZvciBleGFtcGxlIC9NRCAodXNlIG11bHRpLXRocmVhZGVkCi1ETExzLCAvTURk
IGZvciBkZWJ1ZyksIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2V0dGluZyBpbiB0aGUgR29vZ2xl
Ci1UZXN0IHByb2plY3QgdG8gbWF0Y2ggeW91ciBwcm9qZWN0J3MuCi0KLVRvIHVwZGF0ZSB0aGlz
IHNldHRpbmcgb3BlbiB0aGUgcHJvamVjdCBwcm9wZXJ0aWVzIGluIHRoZSBWaXN1YWwKLVN0dWRp
byBJREUgdGhlbiBzZWxlY3QgdGhlIGJyYW5jaCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXMgfCBD
L0MrKyB8Ci1Db2RlIEdlbmVyYXRpb24gYW5kIGNoYW5nZSB0aGUgb3B0aW9uICJSdW50aW1lIExp
YnJhcnkiLiAgWW91IG1heSBhbHNvIHRyeQotdXNpbmcgZ3Rlc3QtbWQudmNwcm9qIGluc3RlYWQg
b2YgZ3Rlc3QudmNwcm9qLgotCi0jIyBJIHB1dCBteSB0ZXN0cyBpbiBhIGxpYnJhcnkgYW5kIEdv
b2dsZSBUZXN0IGRvZXNuJ3QgcnVuIHRoZW0uIFdoYXQncyBoYXBwZW5pbmc/ICMjCi1IYXZlIHlv
dSByZWFkIGEKLVt3YXJuaW5nXShWMV82X1ByaW1lci5tZCNpbXBvcnRhbnQtbm90ZS1mb3Itdmlz
dWFsLWMtdXNlcnMpIG9uCi10aGUgR29vZ2xlIFRlc3QgUHJpbWVyIHBhZ2U/Ci0KLSMjIEkgd2Fu
dCB0byB1c2UgR29vZ2xlIFRlc3Qgd2l0aCBWaXN1YWwgU3R1ZGlvIGJ1dCBkb24ndCBrbm93IHdo
ZXJlIHRvIHN0YXJ0LiAjIwotTWFueSBwZW9wbGUgYXJlIGluIHlvdXIgcG9zaXRpb24gYW5kIG9u
ZSBvZiB0aGUgcG9zdGVkIGhpcyBzb2x1dGlvbiB0bwotb3VyIG1haWxpbmcgbGlzdC4gSGVyZSBp
cyBoaXMgbGluazoKLWh0dHA6Ly9oYXNzYW5qYW1pbGFobWFkLmJsb2dzcG90LmNvbS8yMDA5LzA3
L2d0ZXN0LXN0YXJ0ZXJzLWhlbHAuaHRtbC4KLQotIyMgSSBhbSBzZWVpbmcgY29tcGlsZSBlcnJv
cnMgbWVudGlvbmluZyBzdGQ6OnR5cGVcX3RyYWl0cyB3aGVuIEkgdHJ5IHRvIHVzZSBHb29nbGUg
VGVzdCBvbiBTb2xhcmlzLiAjIwotR29vZ2xlIFRlc3QgdXNlcyBwYXJ0cyBvZiB0aGUgc3RhbmRh
cmQgQysrIGxpYnJhcnkgdGhhdCBTdW5TdHVkaW8gZG9lcyBub3Qgc3VwcG9ydC4KLU91ciB1c2Vy
cyByZXBvcnRlZCBzdWNjZXNzIHVzaW5nIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9ucy4gVHJ5
IHJ1bm5pbmcgdGhlIGJ1aWxkIGFmdGVyIHJ1bmluZyB0aGlzIGNvbW1hZDoKLQotYGV4cG9ydCBD
Qz1jYyBDWFg9Q0MgQ1hYRkxBR1M9Jy1saWJyYXJ5PXN0bHBvcnQ0J2AKLQotIyMgSG93IGNhbiBt
eSBjb2RlIGRldGVjdCBpZiBpdCBpcyBydW5uaW5nIGluIGEgdGVzdD8gIyMKLQotSWYgeW91IHdy
aXRlIGNvZGUgdGhhdCBzbmlmZnMgd2hldGhlciBpdCdzIHJ1bm5pbmcgaW4gYSB0ZXN0IGFuZCBk
b2VzCi1kaWZmZXJlbnQgdGhpbmdzIGFjY29yZGluZ2x5LCB5b3UgYXJlIGxlYWtpbmcgdGVzdC1v
bmx5IGxvZ2ljIGludG8KLXByb2R1Y3Rpb24gY29kZSBhbmQgdGhlcmUgaXMgbm8gZWFzeSB3YXkg
dG8gZW5zdXJlIHRoYXQgdGhlIHRlc3Qtb25seQotY29kZSBwYXRocyBhcmVuJ3QgcnVuIGJ5IG1p
c3Rha2UgaW4gcHJvZHVjdGlvbi4gIFN1Y2ggY2xldmVybmVzcyBhbHNvCi1sZWFkcyB0bwotW0hl
aXNlbmJ1Z3NdKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW51c3VhbF9zb2Z0d2FyZV9i
dWcjSGVpc2VuYnVnKS4KLVRoZXJlZm9yZSB3ZSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCB0aGUg
cHJhY3RpY2UsIGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0Ci1wcm92aWRlIGEgd2F5IHRvIGRvIGl0
LgotCi1JbiBnZW5lcmFsLCB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGNhdXNlIHRoZSBjb2RlIHRv
IGJlaGF2ZQotZGlmZmVyZW50bHkgdW5kZXIgdGVzdCBpcyBbZGVwZW5kZW5jeSBpbmplY3Rpb25d
KGh0dHA6Ly9qYW1lc3Nob3JlLmNvbS9CbG9nL0RlcGVuZGVuY3ktSW5qZWN0aW9uLURlbXlzdGlm
aWVkLmh0bWwpLgotWW91IGNhbiBpbmplY3QgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZnJvbSB0
aGUgdGVzdCBhbmQgZnJvbSB0aGUKLXByb2R1Y3Rpb24gY29kZS4gIFNpbmNlIHlvdXIgcHJvZHVj
dGlvbiBjb2RlIGRvZXNuJ3QgbGluayBpbiB0aGUKLWZvci10ZXN0IGxvZ2ljIGF0IGFsbCwgdGhl
cmUgaXMgbm8gZGFuZ2VyIGluIGFjY2lkZW50YWxseSBydW5uaW5nIGl0LgotCi1Ib3dldmVyLCBp
ZiB5b3UgX3JlYWxseV8sIF9yZWFsbHlfLCBfcmVhbGx5XyBoYXZlIG5vIGNob2ljZSwgYW5kIGlm
Ci15b3UgZm9sbG93IHRoZSBydWxlIG9mIGVuZGluZyB5b3VyIHRlc3QgcHJvZ3JhbSBuYW1lcyB3
aXRoIGBfdGVzdGAsCi15b3UgY2FuIHVzZSB0aGUgX2hvcnJpYmxlXyBoYWNrIG9mIHNuaWZmaW5n
IHlvdXIgZXhlY3V0YWJsZSBuYW1lCi0oYGFyZ3ZbMF1gIGluIGBtYWluKClgKSB0byBrbm93IHdo
ZXRoZXIgdGhlIGNvZGUgaXMgdW5kZXIgdGVzdC4KLQotIyMgR29vZ2xlIFRlc3QgZGVmaW5lcyBh
IG1hY3JvIHRoYXQgY2xhc2hlcyB3aXRoIG9uZSBkZWZpbmVkIGJ5IGFub3RoZXIgbGlicmFyeS4g
SG93IGRvIEkgZGVhbCB3aXRoIHRoYXQ/ICMjCi0KLUluIEMrKywgbWFjcm9zIGRvbid0IG9iZXkg
bmFtZXNwYWNlcy4gIFRoZXJlZm9yZSB0d28gbGlicmFyaWVzIHRoYXQKLWJvdGggZGVmaW5lIGEg
bWFjcm8gb2YgdGhlIHNhbWUgbmFtZSB3aWxsIGNsYXNoIGlmIHlvdSBgI2luY2x1ZGVgIGJvdGgK
LWRlZmluaXRpb25zLiAgSW4gY2FzZSBhIEdvb2dsZSBUZXN0IG1hY3JvIGNsYXNoZXMgd2l0aCBh
bm90aGVyCi1saWJyYXJ5LCB5b3UgY2FuIGZvcmNlIEdvb2dsZSBUZXN0IHRvIHJlbmFtZSBpdHMg
bWFjcm8gdG8gYXZvaWQgdGhlCi1jb25mbGljdC4KLQotU3BlY2lmaWNhbGx5LCBpZiBib3RoIEdv
b2dsZSBUZXN0IGFuZCBzb21lIG90aGVyIGNvZGUgZGVmaW5lIG1hY3JvCi1gRk9PYCwgeW91IGNh
biBhZGQKLWBgYAotICAtREdURVNUX0RPTlRfREVGSU5FX0ZPTz0xCi1gYGAKLXRvIHRoZSBjb21w
aWxlciBmbGFncyB0byB0ZWxsIEdvb2dsZSBUZXN0IHRvIGNoYW5nZSB0aGUgbWFjcm8ncyBuYW1l
Ci1mcm9tIGBGT09gIHRvIGBHVEVTVF9GT09gLiBGb3IgZXhhbXBsZSwgd2l0aCBgLURHVEVTVF9E
T05UX0RFRklORV9URVNUPTFgLCB5b3UnbGwgbmVlZCB0byB3cml0ZQotYGBgCi0gIEdURVNUX1RF
U1QoU29tZVRlc3QsIERvZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLWluc3RlYWQgb2YKLWBgYAotICBU
RVNUKFNvbWVUZXN0LCBEb2VzVGhpcykgeyAuLi4gfQotYGBgCi1pbiBvcmRlciB0byBkZWZpbmUg
YSB0ZXN0LgotCi1DdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgYFRFU1RgLCBgRkFJTGAsIGBTVUND
RUVEYCwgYW5kIHRoZSBiYXNpYyBjb21wYXJpc29uIGFzc2VydGlvbiBtYWNyb3MgY2FuIGhhdmUg
YWx0ZXJuYXRpdmUgbmFtZXMuIFlvdSBjYW4gc2VlIHRoZSBmdWxsIGxpc3Qgb2YgY292ZXJlZCBt
YWNyb3MgW2hlcmVdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNoP3E9aWYrIUdURVNU
X0RPTlRfREVGSU5FX1x3JTJCK3BhY2thZ2U6aHR0cDovL2dvb2dsZXRlc3RcLmdvb2dsZWNvZGVc
LmNvbStmaWxlOi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgpLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgIkF2b2lkaW5nIE1hY3JvIE5hbWUgQ2xhc2hlcyIgc2VjdGlvbiBvZiB0
aGUgUkVBRE1FIGZpbGUuCi0KLSMjIE15IHF1ZXN0aW9uIGlzIG5vdCBjb3ZlcmVkIGluIHlvdXIg
RkFRISAjIwotCi1JZiB5b3UgY2Fubm90IGZpbmQgdGhlIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9u
IGluIHRoaXMgRkFRLCB0aGVyZSBhcmUKLXNvbWUgb3RoZXIgcmVzb3VyY2VzIHlvdSBjYW4gdXNl
OgotCi0gIDEuIHJlYWQgb3RoZXIgW3dpa2kgcGFnZXNdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20v
cC9nb29nbGV0ZXN0L3cvbGlzdCksCi0gIDEuIHNlYXJjaCB0aGUgbWFpbGluZyBsaXN0IFthcmNo
aXZlXShodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvZ29vZ2xldGVzdGZyYW1ld29yay90
b3BpY3MpLAotICAxLiBhc2sgaXQgb24gW2dvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBz
LmNvbV0obWFpbHRvOmdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbSkgYW5kIHNv
bWVvbmUgd2lsbCBhbnN3ZXIgaXQgKHRvIHByZXZlbnQgc3BhbSwgd2UgcmVxdWlyZSB5b3UgdG8g
am9pbiB0aGUgW2Rpc2N1c3Npb24gZ3JvdXBdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91
cC9nb29nbGV0ZXN0ZnJhbWV3b3JrKSBiZWZvcmUgeW91IGNhbiBwb3N0LikuCi0KLVBsZWFzZSBu
b3RlIHRoYXQgY3JlYXRpbmcgYW4gaXNzdWUgaW4gdGhlCi1baXNzdWUgdHJhY2tlcl0oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QvaXNzdWVzL2xpc3QpIGlzIF9ub3RfCi1hIGdv
b2Qgd2F5IHRvIGdldCB5b3VyIGFuc3dlciwgYXMgaXQgaXMgbW9uaXRvcmVkIGluZnJlcXVlbnRs
eSBieSBhCi12ZXJ5IHNtYWxsIG51bWJlciBvZiBwZW9wbGUuCi0KLVdoZW4gYXNraW5nIGEgcXVl
c3Rpb24sIGl0J3MgaGVscGZ1bCB0byBwcm92aWRlIGFzIG11Y2ggb2YgdGhlCi1mb2xsb3dpbmcg
aW5mb3JtYXRpb24gYXMgcG9zc2libGUgKHBlb3BsZSBjYW5ub3QgaGVscCB5b3UgaWYgdGhlcmUn
cwotbm90IGVub3VnaCBpbmZvcm1hdGlvbiBpbiB5b3VyIHF1ZXN0aW9uKToKLQotICAqIHRoZSB2
ZXJzaW9uIChvciB0aGUgcmV2aXNpb24gbnVtYmVyIGlmIHlvdSBjaGVjayBvdXQgZnJvbSBTVk4g
ZGlyZWN0bHkpIG9mIEdvb2dsZSBUZXN0IHlvdSB1c2UgKEdvb2dsZSBUZXN0IGlzIHVuZGVyIGFj
dGl2ZSBkZXZlbG9wbWVudCwgc28gaXQncyBwb3NzaWJsZSB0aGF0IHlvdXIgcHJvYmxlbSBoYXMg
YmVlbiBzb2x2ZWQgaW4gYSBsYXRlciB2ZXJzaW9uKSwKLSAgKiB5b3VyIG9wZXJhdGluZyBzeXN0
ZW0sCi0gICogdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgeW91ciBjb21waWxlciwKLSAgKiB0aGUg
Y29tcGxldGUgY29tbWFuZCBsaW5lIGZsYWdzIHlvdSBnaXZlIHRvIHlvdXIgY29tcGlsZXIsCi0g
ICogdGhlIGNvbXBsZXRlIGNvbXBpbGVyIGVycm9yIG1lc3NhZ2VzIChpZiB0aGUgcXVlc3Rpb24g
aXMgYWJvdXQgY29tcGlsYXRpb24pLAotICAqIHRoZSBfYWN0dWFsXyBjb2RlIChpZGVhbGx5LCBh
IG1pbmltYWwgYnV0IGNvbXBsZXRlIHByb2dyYW0pIHRoYXQgaGFzIHRoZSBwcm9ibGVtIHlvdSBl
bmNvdW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfUHJpbWVyLm1kIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvZG9jcy9WMV82X1ByaW1lci5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGQ4NDBlZjQ1YjljLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9W
MV82X1ByaW1lci5tZAorKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBACi0KLQotIyBJbnRy
b2R1Y3Rpb246IFdoeSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrPyAjCi0KLV9Hb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrXyBoZWxwcyB5b3Ugd3JpdGUgYmV0dGVyIEMrKyB0ZXN0cy4K
LQotTm8gbWF0dGVyIHdoZXRoZXIgeW91IHdvcmsgb24gTGludXgsIFdpbmRvd3MsIG9yIGEgTWFj
LCBpZiB5b3Ugd3JpdGUgQysrIGNvZGUsCi1Hb29nbGUgVGVzdCBjYW4gaGVscCB5b3UuCi0KLVNv
IHdoYXQgbWFrZXMgYSBnb29kIHRlc3QsIGFuZCBob3cgZG9lcyBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrIGZpdCBpbj8gV2UgYmVsaWV2ZToKLSAgMS4gVGVzdHMgc2hvdWxkIGJlIF9pbmRl
cGVuZGVudF8gYW5kIF9yZXBlYXRhYmxlXy4gSXQncyBhIHBhaW4gdG8gZGVidWcgYSB0ZXN0IHRo
YXQgc3VjY2VlZHMgb3IgZmFpbHMgYXMgYSByZXN1bHQgb2Ygb3RoZXIgdGVzdHMuICBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzb2xhdGVzIHRoZSB0ZXN0cyBieSBydW5uaW5nIGVhY2gg
b2YgdGhlbSBvbiBhIGRpZmZlcmVudCBvYmplY3QuIFdoZW4gYSB0ZXN0IGZhaWxzLCBHb29nbGUg
QysrIFRlc3RpbmcgRnJhbWV3b3JrIGFsbG93cyB5b3UgdG8gcnVuIGl0IGluIGlzb2xhdGlvbiBm
b3IgcXVpY2sgZGVidWdnaW5nLgotICAxLiBUZXN0cyBzaG91bGQgYmUgd2VsbCBfb3JnYW5pemVk
XyBhbmQgcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gIEdvb2dsZSBD
KysgVGVzdGluZyBGcmFtZXdvcmsgZ3JvdXBzIHJlbGF0ZWQgdGVzdHMgaW50byB0ZXN0IGNhc2Vz
IHRoYXQgY2FuIHNoYXJlIGRhdGEgYW5kIHN1YnJvdXRpbmVzLiBUaGlzIGNvbW1vbiBwYXR0ZXJu
IGlzIGVhc3kgdG8gcmVjb2duaXplIGFuZCBtYWtlcyB0ZXN0cyBlYXN5IHRvIG1haW50YWluLiBT
dWNoIGNvbnNpc3RlbmN5IGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB3aGVuIHBlb3BsZSBzd2l0Y2gg
cHJvamVjdHMgYW5kIHN0YXJ0IHRvIHdvcmsgb24gYSBuZXcgY29kZSBiYXNlLgotICAxLiBUZXN0
cyBzaG91bGQgYmUgX3BvcnRhYmxlXyBhbmQgX3JldXNhYmxlXy4gVGhlIG9wZW4tc291cmNlIGNv
bW11bml0eSBoYXMgYSBsb3Qgb2YgY29kZSB0aGF0IGlzIHBsYXRmb3JtLW5ldXRyYWwsIGl0cyB0
ZXN0cyBzaG91bGQgYWxzbyBiZSBwbGF0Zm9ybS1uZXV0cmFsLiAgR29vZ2xlIEMrKyBUZXN0aW5n
IEZyYW1ld29yayB3b3JrcyBvbiBkaWZmZXJlbnQgT1Nlcywgd2l0aCBkaWZmZXJlbnQgY29tcGls
ZXJzIChnY2MsIE1TVkMsIGFuZCBvdGhlcnMpLCB3aXRoIG9yIHdpdGhvdXQgZXhjZXB0aW9ucywg
c28gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayB0ZXN0cyBjYW4gZWFzaWx5IHdvcmsgd2l0
aCBhIHZhcmlldHkgb2YgY29uZmlndXJhdGlvbnMuICAoTm90ZSB0aGF0IHRoZSBjdXJyZW50IHJl
bGVhc2Ugb25seSBjb250YWlucyBidWlsZCBzY3JpcHRzIGZvciBMaW51eCAtIHdlIGFyZSBhY3Rp
dmVseSB3b3JraW5nIG9uIHNjcmlwdHMgZm9yIG90aGVyIHBsYXRmb3Jtcy4pCi0gIDEuIFdoZW4g
dGVzdHMgZmFpbCwgdGhleSBzaG91bGQgcHJvdmlkZSBhcyBtdWNoIF9pbmZvcm1hdGlvbl8gYWJv
dXQgdGhlIHByb2JsZW0gYXMgcG9zc2libGUuIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
ZG9lc24ndCBzdG9wIGF0IHRoZSBmaXJzdCB0ZXN0IGZhaWx1cmUuIEluc3RlYWQsIGl0IG9ubHkg
c3RvcHMgdGhlIGN1cnJlbnQgdGVzdCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQuIFlvdSBj
YW4gYWxzbyBzZXQgdXAgdGVzdHMgdGhhdCByZXBvcnQgbm9uLWZhdGFsIGZhaWx1cmVzIGFmdGVy
IHdoaWNoIHRoZSBjdXJyZW50IHRlc3QgY29udGludWVzLiBUaHVzLCB5b3UgY2FuIGRldGVjdCBh
bmQgZml4IG11bHRpcGxlIGJ1Z3MgaW4gYSBzaW5nbGUgcnVuLWVkaXQtY29tcGlsZSBjeWNsZS4K
LSAgMS4gVGhlIHRlc3RpbmcgZnJhbWV3b3JrIHNob3VsZCBsaWJlcmF0ZSB0ZXN0IHdyaXRlcnMg
ZnJvbSBob3VzZWtlZXBpbmcgY2hvcmVzIGFuZCBsZXQgdGhlbSBmb2N1cyBvbiB0aGUgdGVzdCBf
Y29udGVudF8uICBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGF1dG9tYXRpY2FsbHkga2Vl
cHMgdHJhY2sgb2YgYWxsIHRlc3RzIGRlZmluZWQsIGFuZCBkb2Vzbid0IHJlcXVpcmUgdGhlIHVz
ZXIgdG8gZW51bWVyYXRlIHRoZW0gaW4gb3JkZXIgdG8gcnVuIHRoZW0uCi0gIDEuIFRlc3RzIHNo
b3VsZCBiZSBfZmFzdF8uIFdpdGggR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yaywgeW91IGNh
biByZXVzZSBzaGFyZWQgcmVzb3VyY2VzIGFjcm9zcyB0ZXN0cyBhbmQgcGF5IGZvciB0aGUgc2V0
LXVwL3RlYXItZG93biBvbmx5IG9uY2UsIHdpdGhvdXQgbWFraW5nIHRlc3RzIGRlcGVuZCBvbiBl
YWNoIG90aGVyLgotCi1TaW5jZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIGlzIGJhc2Vk
IG9uIHRoZSBwb3B1bGFyIHhVbml0Ci1hcmNoaXRlY3R1cmUsIHlvdSdsbCBmZWVsIHJpZ2h0IGF0
IGhvbWUgaWYgeW91J3ZlIHVzZWQgSlVuaXQgb3IgUHlVbml0IGJlZm9yZS4KLUlmIG5vdCwgaXQg
d2lsbCB0YWtlIHlvdSBhYm91dCAxMCBtaW51dGVzIHRvIGxlYXJuIHRoZSBiYXNpY3MgYW5kIGdl
dCBzdGFydGVkLgotU28gbGV0J3MgZ28hCi0KLV9Ob3RlOl8gV2Ugc29tZXRpbWVzIHJlZmVyIHRv
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaW5mb3JtYWxseQotYXMgX0dvb2dsZSBUZXN0
Xy4KLQotIyBTZXR0aW5nIHVwIGEgTmV3IFRlc3QgUHJvamVjdCAjCi0KLVRvIHdyaXRlIGEgdGVz
dCBwcm9ncmFtIHVzaW5nIEdvb2dsZSBUZXN0LCB5b3UgbmVlZCB0byBjb21waWxlIEdvb2dsZQot
VGVzdCBpbnRvIGEgbGlicmFyeSBhbmQgbGluayB5b3VyIHRlc3Qgd2l0aCBpdC4gIFdlIHByb3Zp
ZGUgYnVpbGQKLWZpbGVzIGZvciBzb21lIHBvcHVsYXIgYnVpbGQgc3lzdGVtczogYG1zdmMvYCBm
b3IgVmlzdWFsIFN0dWRpbywKLWB4Y29kZS9gIGZvciBNYWMgWGNvZGUsIGBtYWtlL2AgZm9yIEdO
VSBtYWtlLCBgY29kZWdlYXIvYCBmb3IgQm9ybGFuZAotQysrIEJ1aWxkZXIsIGFuZCB0aGUgYXV0
b3Rvb2xzIHNjcmlwdCAoZGVwcmVjYXRlZCkgYW5kCi1gQ01ha2VMaXN0cy50eHRgIGZvciBDTWFr
ZSAocmVjb21tZW5kZWQpIGluIHRoZSBHb29nbGUgVGVzdCByb290Ci1kaXJlY3RvcnkuICBJZiB5
b3VyIGJ1aWxkIHN5c3RlbSBpcyBub3Qgb24gdGhpcyBsaXN0LCB5b3UgY2FuIHRha2UgYQotbG9v
ayBhdCBgbWFrZS9NYWtlZmlsZWAgdG8gbGVhcm4gaG93IEdvb2dsZSBUZXN0IHNob3VsZCBiZSBj
b21waWxlZAotKGJhc2ljYWxseSB5b3Ugd2FudCB0byBjb21waWxlIGBzcmMvZ3Rlc3QtYWxsLmNj
YCB3aXRoIGBHVEVTVF9ST09UYAotYW5kIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFk
ZXIgc2VhcmNoIHBhdGgsIHdoZXJlIGBHVEVTVF9ST09UYAotaXMgdGhlIEdvb2dsZSBUZXN0IHJv
b3QgZGlyZWN0b3J5KS4KLQotT25jZSB5b3UgYXJlIGFibGUgdG8gY29tcGlsZSB0aGUgR29vZ2xl
IFRlc3QgbGlicmFyeSwgeW91IHNob3VsZAotY3JlYXRlIGEgcHJvamVjdCBvciBidWlsZCB0YXJn
ZXQgZm9yIHlvdXIgdGVzdCBwcm9ncmFtLiAgTWFrZSBzdXJlIHlvdQotaGF2ZSBgR1RFU1RfUk9P
VC9pbmNsdWRlYCBpbiB0aGUgaGVhZGVyIHNlYXJjaCBwYXRoIHNvIHRoYXQgdGhlCi1jb21waWxl
ciBjYW4gZmluZCBgImd0ZXN0L2d0ZXN0LmgiYCB3aGVuIGNvbXBpbGluZyB5b3VyIHRlc3QuICBT
ZXQgdXAKLXlvdXIgdGVzdCBwcm9qZWN0IHRvIGxpbmsgd2l0aCB0aGUgR29vZ2xlIFRlc3QgbGli
cmFyeSAoZm9yIGV4YW1wbGUsCi1pbiBWaXN1YWwgU3R1ZGlvLCB0aGlzIGlzIGRvbmUgYnkgYWRk
aW5nIGEgZGVwZW5kZW5jeSBvbgotYGd0ZXN0LnZjcHJvamApLgotCi1JZiB5b3Ugc3RpbGwgaGF2
ZSBxdWVzdGlvbnMsIHRha2UgYSBsb29rIGF0IGhvdyBHb29nbGUgVGVzdCdzIG93bgotdGVzdHMg
YXJlIGJ1aWx0IGFuZCB1c2UgdGhlbSBhcyBleGFtcGxlcy4KLQotIyBCYXNpYyBDb25jZXB0cyAj
Ci0KLVdoZW4gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBzdGFydCBieSB3cml0aW5nIF9hc3NlcnRp
b25zXywgd2hpY2ggYXJlIHN0YXRlbWVudHMKLXRoYXQgY2hlY2sgd2hldGhlciBhIGNvbmRpdGlv
biBpcyB0cnVlLiBBbiBhc3NlcnRpb24ncyByZXN1bHQgY2FuIGJlIF9zdWNjZXNzXywKLV9ub25m
YXRhbCBmYWlsdXJlXywgb3IgX2ZhdGFsIGZhaWx1cmVfLiBJZiBhIGZhdGFsIGZhaWx1cmUgb2Nj
dXJzLCBpdCBhYm9ydHMKLXRoZSBjdXJyZW50IGZ1bmN0aW9uOyBvdGhlcndpc2UgdGhlIHByb2dy
YW0gY29udGludWVzIG5vcm1hbGx5LgotCi1fVGVzdHNfIHVzZSBhc3NlcnRpb25zIHRvIHZlcmlm
eSB0aGUgdGVzdGVkIGNvZGUncyBiZWhhdmlvci4gSWYgYSB0ZXN0IGNyYXNoZXMKLW9yIGhhcyBh
IGZhaWxlZCBhc3NlcnRpb24sIHRoZW4gaXQgX2ZhaWxzXzsgb3RoZXJ3aXNlIGl0IF9zdWNjZWVk
c18uCi0KLUEgX3Rlc3QgY2FzZV8gY29udGFpbnMgb25lIG9yIG1hbnkgdGVzdHMuIFlvdSBzaG91
bGQgZ3JvdXAgeW91ciB0ZXN0cyBpbnRvIHRlc3QKLWNhc2VzIHRoYXQgcmVmbGVjdCB0aGUgc3Ry
dWN0dXJlIG9mIHRoZSB0ZXN0ZWQgY29kZS4gV2hlbiBtdWx0aXBsZSB0ZXN0cyBpbiBhCi10ZXN0
IGNhc2UgbmVlZCB0byBzaGFyZSBjb21tb24gb2JqZWN0cyBhbmQgc3Vicm91dGluZXMsIHlvdSBj
YW4gcHV0IHRoZW0gaW50byBhCi1fdGVzdCBmaXh0dXJlXyBjbGFzcy4KLQotQSBfdGVzdCBwcm9n
cmFtXyBjYW4gY29udGFpbiBtdWx0aXBsZSB0ZXN0IGNhc2VzLgotCi1XZSdsbCBub3cgZXhwbGFp
biBob3cgdG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0sIHN0YXJ0aW5nIGF0IHRoZSBpbmRpdmlkdWFs
Ci1hc3NlcnRpb24gbGV2ZWwgYW5kIGJ1aWxkaW5nIHVwIHRvIHRlc3RzIGFuZCB0ZXN0IGNhc2Vz
LgotCi0jIEFzc2VydGlvbnMgIwotCi1Hb29nbGUgVGVzdCBhc3NlcnRpb25zIGFyZSBtYWNyb3Mg
dGhhdCByZXNlbWJsZSBmdW5jdGlvbiBjYWxscy4gWW91IHRlc3QgYQotY2xhc3Mgb3IgZnVuY3Rp
b24gYnkgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaXRzIGJlaGF2aW9yLiBXaGVuIGFuIGFzc2Vy
dGlvbgotZmFpbHMsIEdvb2dsZSBUZXN0IHByaW50cyB0aGUgYXNzZXJ0aW9uJ3Mgc291cmNlIGZp
bGUgYW5kIGxpbmUgbnVtYmVyIGxvY2F0aW9uLAotYWxvbmcgd2l0aCBhIGZhaWx1cmUgbWVzc2Fn
ZS4gWW91IG1heSBhbHNvIHN1cHBseSBhIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2UKLXdoaWNoIHdp
bGwgYmUgYXBwZW5kZWQgdG8gR29vZ2xlIFRlc3QncyBtZXNzYWdlLgotCi1UaGUgYXNzZXJ0aW9u
cyBjb21lIGluIHBhaXJzIHRoYXQgdGVzdCB0aGUgc2FtZSB0aGluZyBidXQgaGF2ZSBkaWZmZXJl
bnQKLWVmZmVjdHMgb24gdGhlIGN1cnJlbnQgZnVuY3Rpb24uIGBBU1NFUlRfKmAgdmVyc2lvbnMg
Z2VuZXJhdGUgZmF0YWwgZmFpbHVyZXMKLXdoZW4gdGhleSBmYWlsLCBhbmQgKiphYm9ydCB0aGUg
Y3VycmVudCBmdW5jdGlvbioqLiBgRVhQRUNUXypgIHZlcnNpb25zIGdlbmVyYXRlCi1ub25mYXRh
bCBmYWlsdXJlcywgd2hpY2ggZG9uJ3QgYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uIFVzdWFs
bHkgYEVYUEVDVF8qYAotYXJlIHByZWZlcnJlZCwgYXMgdGhleSBhbGxvdyBtb3JlIHRoYW4gb25l
IGZhaWx1cmVzIHRvIGJlIHJlcG9ydGVkIGluIGEgdGVzdC4KLUhvd2V2ZXIsIHlvdSBzaG91bGQg
dXNlIGBBU1NFUlRfKmAgaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIHdoZW4K
LXRoZSBhc3NlcnRpb24gaW4gcXVlc3Rpb24gZmFpbHMuCi0KLVNpbmNlIGEgZmFpbGVkIGBBU1NF
UlRfKmAgcmV0dXJucyBmcm9tIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGltbWVkaWF0ZWx5LAotcG9z
c2libHkgc2tpcHBpbmcgY2xlYW4tdXAgY29kZSB0aGF0IGNvbWVzIGFmdGVyIGl0LCBpdCBtYXkg
Y2F1c2UgYSBzcGFjZSBsZWFrLgotRGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGxlYWss
IGl0IG1heSBvciBtYXkgbm90IGJlIHdvcnRoIGZpeGluZyAtIHNvCi1rZWVwIHRoaXMgaW4gbWlu
ZCBpZiB5b3UgZ2V0IGEgaGVhcCBjaGVja2VyIGVycm9yIGluIGFkZGl0aW9uIHRvIGFzc2VydGlv
bgotZXJyb3JzLgotCi1UbyBwcm92aWRlIGEgY3VzdG9tIGZhaWx1cmUgbWVzc2FnZSwgc2ltcGx5
IHN0cmVhbSBpdCBpbnRvIHRoZSBtYWNybyB1c2luZyB0aGUKLWA8PGAgb3BlcmF0b3IsIG9yIGEg
c2VxdWVuY2Ugb2Ygc3VjaCBvcGVyYXRvcnMuIEFuIGV4YW1wbGU6Ci1gYGAKLUFTU0VSVF9FUSh4
LnNpemUoKSwgeS5zaXplKCkpIDw8ICJWZWN0b3JzIHggYW5kIHkgYXJlIG9mIHVuZXF1YWwgbGVu
Z3RoIjsKLQotZm9yIChpbnQgaSA9IDA7IGkgPCB4LnNpemUoKTsgKytpKSB7Ci0gIEVYUEVDVF9F
USh4W2ldLCB5W2ldKSA8PCAiVmVjdG9ycyB4IGFuZCB5IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7
Ci19Ci1gYGAKLQotQW55dGhpbmcgdGhhdCBjYW4gYmUgc3RyZWFtZWQgdG8gYW4gYG9zdHJlYW1g
IGNhbiBiZSBzdHJlYW1lZCB0byBhbiBhc3NlcnRpb24KLW1hY3JvLS1pbiBwYXJ0aWN1bGFyLCBD
IHN0cmluZ3MgYW5kIGBzdHJpbmdgIG9iamVjdHMuIElmIGEgd2lkZSBzdHJpbmcKLShgd2NoYXJf
dCpgLCBgVENIQVIqYCBpbiBgVU5JQ09ERWAgbW9kZSBvbiBXaW5kb3dzLCBvciBgc3RkOjp3c3Ry
aW5nYCkgaXMKLXN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbiwgaXQgd2lsbCBiZSB0cmFuc2xhdGVk
IHRvIFVURi04IHdoZW4gcHJpbnRlZC4KLQotIyMgQmFzaWMgQXNzZXJ0aW9ucyAjIwotCi1UaGVz
ZSBhc3NlcnRpb25zIGRvIGJhc2ljIHRydWUvZmFsc2UgY29uZGl0aW9uIHRlc3RpbmcuCi18ICoq
RmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoq
IHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0t
LS0tLS0tLS0tfAotfCBgQVNTRVJUX1RSVUUoYF9jb25kaXRpb25fYClgOyAgfCBgRVhQRUNUX1RS
VUUoYF9jb25kaXRpb25fYClgOyAgIHwgX2NvbmRpdGlvbl8gaXMgdHJ1ZSB8Ci18IGBBU1NFUlRf
RkFMU0UoYF9jb25kaXRpb25fYClgOyB8IGBFWFBFQ1RfRkFMU0UoYF9jb25kaXRpb25fYClgOyAg
fCBfY29uZGl0aW9uXyBpcyBmYWxzZSB8Ci0KLVJlbWVtYmVyLCB3aGVuIHRoZXkgZmFpbCwgYEFT
U0VSVF8qYCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlIGFuZAotcmV0dXJucyBmcm9tIHRoZSBjdXJy
ZW50IGZ1bmN0aW9uLCB3aGlsZSBgRVhQRUNUXypgIHlpZWxkcyBhIG5vbmZhdGFsCi1mYWlsdXJl
LCBhbGxvd2luZyB0aGUgZnVuY3Rpb24gdG8gY29udGludWUgcnVubmluZy4gSW4gZWl0aGVyIGNh
c2UsIGFuCi1hc3NlcnRpb24gZmFpbHVyZSBtZWFucyBpdHMgY29udGFpbmluZyB0ZXN0IGZhaWxz
LgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMgQmluYXJ5IENv
bXBhcmlzb24gIyMKLQotVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBhc3NlcnRpb25zIHRoYXQgY29t
cGFyZSB0d28gdmFsdWVzLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFz
c2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfGBBU1NFUlRfRVEoYF9leHBlY3Rl
ZF9gLCBgX2FjdHVhbF9gKTtgfGBFWFBFQ1RfRVEoYF9leHBlY3RlZF9gLCBgX2FjdHVhbF9gKTtg
fCBfZXhwZWN0ZWRfIGA9PWAgX2FjdHVhbF8gfAotfGBBU1NFUlRfTkUoYF92YWwxX2AsIGBfdmFs
Ml9gKTtgICAgICAgfGBFWFBFQ1RfTkUoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFs
MV8gYCE9YCBfdmFsMl8gfAotfGBBU1NFUlRfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAg
fGBFWFBFQ1RfTFQoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYDxgIF92YWwy
XyB8Ci18YEFTU0VSVF9MRShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MRShg
X3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPD1gIF92YWwyXyB8Ci18YEFTU0VS
VF9HVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9HVChgX3ZhbDFfYCwgYF92
YWwyX2ApO2AgICAgICB8IF92YWwxXyBgPmAgX3ZhbDJfIHwKLXxgQVNTRVJUX0dFKGBfdmFsMV9g
LCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNUX0dFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAg
IHwgX3ZhbDFfIGA+PWAgX3ZhbDJfIHwKLQotSW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgR29v
Z2xlIFRlc3QgcHJpbnRzIGJvdGggX3ZhbDFfIGFuZCBfdmFsMl8KLS4gSW4gYEFTU0VSVF9FUSpg
IGFuZCBgRVhQRUNUX0VRKmAgKGFuZCBhbGwgb3RoZXIgZXF1YWxpdHkgYXNzZXJ0aW9ucwotd2Un
bGwgaW50cm9kdWNlIGxhdGVyKSwgeW91IHNob3VsZCBwdXQgdGhlIGV4cHJlc3Npb24geW91IHdh
bnQgdG8gdGVzdAotaW4gdGhlIHBvc2l0aW9uIG9mIF9hY3R1YWxfLCBhbmQgcHV0IGl0cyBleHBl
Y3RlZCB2YWx1ZSBpbiBfZXhwZWN0ZWRfLAotYXMgR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3Nh
Z2VzIGFyZSBvcHRpbWl6ZWQgZm9yIHRoaXMgY29udmVudGlvbi4KLQotVmFsdWUgYXJndW1lbnRz
IG11c3QgYmUgY29tcGFyYWJsZSBieSB0aGUgYXNzZXJ0aW9uJ3MgY29tcGFyaXNvbgotb3BlcmF0
b3Igb3IgeW91J2xsIGdldCBhIGNvbXBpbGVyIGVycm9yLiAgV2UgdXNlZCB0byByZXF1aXJlIHRo
ZQotYXJndW1lbnRzIHRvIHN1cHBvcnQgdGhlIGA8PGAgb3BlcmF0b3IgZm9yIHN0cmVhbWluZyB0
byBhbiBgb3N0cmVhbWAsCi1idXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHNpbmNlIHYxLjYu
MCAoaWYgYDw8YCBpcyBzdXBwb3J0ZWQsIGl0Ci13aWxsIGJlIGNhbGxlZCB0byBwcmludCB0aGUg
YXJndW1lbnRzIHdoZW4gdGhlIGFzc2VydGlvbiBmYWlsczsKLW90aGVyd2lzZSBHb29nbGUgVGVz
dCB3aWxsIGF0dGVtcHQgdG8gcHJpbnQgdGhlbSBpbiB0aGUgYmVzdCB3YXkgaXQKLWNhbi4gRm9y
IG1vcmUgZGV0YWlscyBhbmQgaG93IHRvIGN1c3RvbWl6ZSB0aGUgcHJpbnRpbmcgb2YgdGhlCi1h
cmd1bWVudHMsIHNlZSB0aGlzIEdvb2dsZSBNb2NrIFtyZWNpcGVdKC4uLy4uL2dvb2dsZW1vY2sv
ZG9jcy9Db29rQm9vay5tZCN0ZWFjaGluZy1nb29nbGUtbW9jay1ob3ctdG8tcHJpbnQteW91ci12
YWx1ZXMpLikuCi0KLVRoZXNlIGFzc2VydGlvbnMgY2FuIHdvcmsgd2l0aCBhIHVzZXItZGVmaW5l
ZCB0eXBlLCBidXQgb25seSBpZiB5b3UgZGVmaW5lIHRoZQotY29ycmVzcG9uZGluZyBjb21wYXJp
c29uIG9wZXJhdG9yIChlLmcuIGA9PWAsIGA8YCwgZXRjKS4gIElmIHRoZSBjb3JyZXNwb25kaW5n
Ci1vcGVyYXRvciBpcyBkZWZpbmVkLCBwcmVmZXIgdXNpbmcgdGhlIGBBU1NFUlRfKigpYCBtYWNy
b3MgYmVjYXVzZSB0aGV5IHdpbGwKLXByaW50IG91dCBub3Qgb25seSB0aGUgcmVzdWx0IG9mIHRo
ZSBjb21wYXJpc29uLCBidXQgdGhlIHR3byBvcGVyYW5kcyBhcyB3ZWxsLgotCi1Bcmd1bWVudHMg
YXJlIGFsd2F5cyBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiBUaGVyZWZvcmUsIGl0J3MgT0sgZm9y
IHRoZQotYXJndW1lbnRzIHRvIGhhdmUgc2lkZSBlZmZlY3RzLiBIb3dldmVyLCBhcyB3aXRoIGFu
eSBvcmRpbmFyeSBDL0MrKyBmdW5jdGlvbiwKLXRoZSBhcmd1bWVudHMnIGV2YWx1YXRpb24gb3Jk
ZXIgaXMgdW5kZWZpbmVkIChpLmUuIHRoZSBjb21waWxlciBpcyBmcmVlIHRvCi1jaG9vc2UgYW55
IG9yZGVyKSBhbmQgeW91ciBjb2RlIHNob3VsZCBub3QgZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFy
IGFyZ3VtZW50Ci1ldmFsdWF0aW9uIG9yZGVyLgotCi1gQVNTRVJUX0VRKClgIGRvZXMgcG9pbnRl
ciBlcXVhbGl0eSBvbiBwb2ludGVycy4gSWYgdXNlZCBvbiB0d28gQyBzdHJpbmdzLCBpdAotdGVz
dHMgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgbWVtb3J5IGxvY2F0aW9uLCBub3QgaWYgdGhleSBo
YXZlIHRoZSBzYW1lIHZhbHVlLgotVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0byBjb21wYXJlIEMg
c3RyaW5ncyAoZS5nLiBgY29uc3QgY2hhcipgKSBieSB2YWx1ZSwgdXNlCi1gQVNTRVJUX1NUUkVR
KClgICwgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIgb24uIEluIHBhcnRpY3VsYXIsIHRv
IGFzc2VydAotdGhhdCBhIEMgc3RyaW5nIGlzIGBOVUxMYCwgdXNlIGBBU1NFUlRfU1RSRVEoTlVM
TCwgY19zdHJpbmcpYCAuIEhvd2V2ZXIsIHRvCi1jb21wYXJlIHR3byBgc3RyaW5nYCBvYmplY3Rz
LCB5b3Ugc2hvdWxkIHVzZSBgQVNTRVJUX0VRYC4KLQotTWFjcm9zIGluIHRoaXMgc2VjdGlvbiB3
b3JrIHdpdGggYm90aCBuYXJyb3cgYW5kIHdpZGUgc3RyaW5nIG9iamVjdHMgKGBzdHJpbmdgCi1h
bmQgYHdzdHJpbmdgKS4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0K
LSMjIFN0cmluZyBDb21wYXJpc29uICMjCi0KLVRoZSBhc3NlcnRpb25zIGluIHRoaXMgZ3JvdXAg
Y29tcGFyZSB0d28gKipDIHN0cmluZ3MqKi4gSWYgeW91IHdhbnQgdG8gY29tcGFyZQotdHdvIGBz
dHJpbmdgIG9iamVjdHMsIHVzZSBgRVhQRUNUX0VRYCwgYEVYUEVDVF9ORWAsIGFuZCBldGMgaW5z
dGVhZC4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8
ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJf
YCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgIHwgYEVYUEVDVF9TVFJFUShgX2V4cGVjdGVkXF9zdHJf
YCwgYF9hY3R1YWxcX3N0cl9gKTtgICAgICB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgdGhlIHNh
bWUgY29udGVudCB8Ci18IGBBU1NFUlRfU1RSTkUoYF9zdHIxX2AsIGBfc3RyMl9gKTtgICAgIHwg
YEVYUEVDVF9TVFJORShgX3N0cjFfYCwgYF9zdHIyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0cmlu
Z3MgaGF2ZSBkaWZmZXJlbnQgY29udGVudCB8Ci18IGBBU1NFUlRfU1RSQ0FTRUVRKGBfZXhwZWN0
ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRUVRKGBfZXhwZWN0
ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgfCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnQsIGlnbm9yaW5nIGNhc2UgfAotfCBgQVNTRVJUX1NUUkNBU0VORShgX3N0
cjFfYCwgYF9zdHIyX2ApO2B8IGBFWFBFQ1RfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7
YCB8IHRoZSB0d28gQyBzdHJpbmdzIGhhdmUgZGlmZmVyZW50IGNvbnRlbnQsIGlnbm9yaW5nIGNh
c2UgfAotCi1Ob3RlIHRoYXQgIkNBU0UiIGluIGFuIGFzc2VydGlvbiBuYW1lIG1lYW5zIHRoYXQg
Y2FzZSBpcyBpZ25vcmVkLgotCi1gKlNUUkVRKmAgYW5kIGAqU1RSTkUqYCBhbHNvIGFjY2VwdCB3
aWRlIEMgc3RyaW5ncyAoYHdjaGFyX3QqYCkuIElmIGEKLWNvbXBhcmlzb24gb2YgdHdvIHdpZGUg
c3RyaW5ncyBmYWlscywgdGhlaXIgdmFsdWVzIHdpbGwgYmUgcHJpbnRlZCBhcyBVVEYtOAotbmFy
cm93IHN0cmluZ3MuCi0KLUEgYE5VTExgIHBvaW50ZXIgYW5kIGFuIGVtcHR5IHN0cmluZyBhcmUg
Y29uc2lkZXJlZCBfZGlmZmVyZW50Xy4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dz
LCBNYWMuCi0KLVNlZSBhbHNvOiBGb3IgbW9yZSBzdHJpbmcgY29tcGFyaXNvbiB0cmlja3MgKHN1
YnN0cmluZywgcHJlZml4LCBzdWZmaXgsIGFuZAotcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5n
LCBmb3IgZXhhbXBsZSksIHNlZSB0aGUgW0FkdmFuY2VkIEdvb2dsZSBUZXN0IEd1aWRlXShWMV82
X0FkdmFuY2VkR3VpZGUubWQpLgotCi0jIFNpbXBsZSBUZXN0cyAjCi0KLVRvIGNyZWF0ZSBhIHRl
c3Q6Ci0gIDEuIFVzZSB0aGUgYFRFU1QoKWAgbWFjcm8gdG8gZGVmaW5lIGFuZCBuYW1lIGEgdGVz
dCBmdW5jdGlvbiwgVGhlc2UgYXJlIG9yZGluYXJ5IEMrKyBmdW5jdGlvbnMgdGhhdCBkb24ndCBy
ZXR1cm4gYSB2YWx1ZS4KLSAgMS4gSW4gdGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBhbnkgdmFs
aWQgQysrIHN0YXRlbWVudHMgeW91IHdhbnQgdG8gaW5jbHVkZSwgdXNlIHRoZSB2YXJpb3VzIEdv
b2dsZSBUZXN0IGFzc2VydGlvbnMgdG8gY2hlY2sgdmFsdWVzLgotICAxLiBUaGUgdGVzdCdzIHJl
c3VsdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBhc3NlcnRpb25zOyBpZiBhbnkgYXNzZXJ0aW9uIGlu
IHRoZSB0ZXN0IGZhaWxzIChlaXRoZXIgZmF0YWxseSBvciBub24tZmF0YWxseSksIG9yIGlmIHRo
ZSB0ZXN0IGNyYXNoZXMsIHRoZSBlbnRpcmUgdGVzdCBmYWlscy4gT3RoZXJ3aXNlLCBpdCBzdWNj
ZWVkcy4KLQotYGBgCi1URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsKLSAuLi4gdGVz
dCBib2R5IC4uLgotfQotYGBgCi0KLQotYFRFU1QoKWAgYXJndW1lbnRzIGdvIGZyb20gZ2VuZXJh
bCB0byBzcGVjaWZpYy4gVGhlIF9maXJzdF8gYXJndW1lbnQgaXMgdGhlCi1uYW1lIG9mIHRoZSB0
ZXN0IGNhc2UsIGFuZCB0aGUgX3NlY29uZF8gYXJndW1lbnQgaXMgdGhlIHRlc3QncyBuYW1lIHdp
dGhpbiB0aGUKLXRlc3QgY2FzZS4gQm90aCBuYW1lcyBtdXN0IGJlIHZhbGlkIEMrKyBpZGVudGlm
aWVycywgYW5kIHRoZXkgc2hvdWxkIG5vdCBjb250YWluIHVuZGVyc2NvcmUgKGBfYCkuIEEgdGVz
dCdzIF9mdWxsIG5hbWVfIGNvbnNpc3RzIG9mIGl0cyBjb250YWluaW5nIHRlc3QgY2FzZSBhbmQg
aXRzCi1pbmRpdmlkdWFsIG5hbWUuIFRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2FzZXMgY2Fu
IGhhdmUgdGhlIHNhbWUgaW5kaXZpZHVhbAotbmFtZS4KLQotRm9yIGV4YW1wbGUsIGxldCdzIHRh
a2UgYSBzaW1wbGUgaW50ZWdlciBmdW5jdGlvbjoKLWBgYAotaW50IEZhY3RvcmlhbChpbnQgbik7
IC8vIFJldHVybnMgdGhlIGZhY3RvcmlhbCBvZiBuCi1gYGAKLQotQSB0ZXN0IGNhc2UgZm9yIHRo
aXMgZnVuY3Rpb24gbWlnaHQgbG9vayBsaWtlOgotYGBgCi0vLyBUZXN0cyBmYWN0b3JpYWwgb2Yg
MC4KLVRFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1plcm9JbnB1dCkgewotICBFWFBFQ1RfRVEo
MSwgRmFjdG9yaWFsKDApKTsKLX0KLQotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIHBvc2l0aXZlIG51
bWJlcnMuCi1URVNUKEZhY3RvcmlhbFRlc3QsIEhhbmRsZXNQb3NpdGl2ZUlucHV0KSB7Ci0gIEVY
UEVDVF9FUSgxLCBGYWN0b3JpYWwoMSkpOwotICBFWFBFQ1RfRVEoMiwgRmFjdG9yaWFsKDIpKTsK
LSAgRVhQRUNUX0VRKDYsIEZhY3RvcmlhbCgzKSk7Ci0gIEVYUEVDVF9FUSg0MDMyMCwgRmFjdG9y
aWFsKDgpKTsKLX0KLWBgYAotCi1Hb29nbGUgVGVzdCBncm91cHMgdGhlIHRlc3QgcmVzdWx0cyBi
eSB0ZXN0IGNhc2VzLCBzbyBsb2dpY2FsbHktcmVsYXRlZCB0ZXN0cwotc2hvdWxkIGJlIGluIHRo
ZSBzYW1lIHRlc3QgY2FzZTsgaW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0
aGVpcgotYFRFU1QoKWAgc2hvdWxkIGJlIHRoZSBzYW1lLiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwg
d2UgaGF2ZSB0d28gdGVzdHMsCi1gSGFuZGxlc1plcm9JbnB1dGAgYW5kIGBIYW5kbGVzUG9zaXRp
dmVJbnB1dGAsIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIHRlc3QKLWNhc2UgYEZhY3RvcmlhbFRl
c3RgLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBUZXN0IEZp
eHR1cmVzOiBVc2luZyB0aGUgU2FtZSBEYXRhIENvbmZpZ3VyYXRpb24gZm9yIE11bHRpcGxlIFRl
c3RzICMKLQotSWYgeW91IGZpbmQgeW91cnNlbGYgd3JpdGluZyB0d28gb3IgbW9yZSB0ZXN0cyB0
aGF0IG9wZXJhdGUgb24gc2ltaWxhciBkYXRhLAoteW91IGNhbiB1c2UgYSBfdGVzdCBmaXh0dXJl
Xy4gSXQgYWxsb3dzIHlvdSB0byByZXVzZSB0aGUgc2FtZSBjb25maWd1cmF0aW9uIG9mCi1vYmpl
Y3RzIGZvciBzZXZlcmFsIGRpZmZlcmVudCB0ZXN0cy4KLQotVG8gY3JlYXRlIGEgZml4dHVyZSwg
anVzdDoKLSAgMS4gRGVyaXZlIGEgY2xhc3MgZnJvbSBgOjp0ZXN0aW5nOjpUZXN0YCAuIFN0YXJ0
IGl0cyBib2R5IHdpdGggYHByb3RlY3RlZDpgIG9yIGBwdWJsaWM6YCBhcyB3ZSdsbCB3YW50IHRv
IGFjY2VzcyBmaXh0dXJlIG1lbWJlcnMgZnJvbSBzdWItY2xhc3Nlcy4KLSAgMS4gSW5zaWRlIHRo
ZSBjbGFzcywgZGVjbGFyZSBhbnkgb2JqZWN0cyB5b3UgcGxhbiB0byB1c2UuCi0gIDEuIElmIG5l
Y2Vzc2FyeSwgd3JpdGUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yIG9yIGBTZXRVcCgpYCBmdW5jdGlv
biB0byBwcmVwYXJlIHRoZSBvYmplY3RzIGZvciBlYWNoIHRlc3QuIEEgY29tbW9uIG1pc3Rha2Ug
aXMgdG8gc3BlbGwgYFNldFVwKClgIGFzIGBTZXR1cCgpYCB3aXRoIGEgc21hbGwgYHVgIC0gZG9u
J3QgbGV0IHRoYXQgaGFwcGVuIHRvIHlvdS4KLSAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRl
c3RydWN0b3Igb3IgYFRlYXJEb3duKClgIGZ1bmN0aW9uIHRvIHJlbGVhc2UgYW55IHJlc291cmNl
cyB5b3UgYWxsb2NhdGVkIGluIGBTZXRVcCgpYCAuIFRvIGxlYXJuIHdoZW4geW91IHNob3VsZCB1
c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgYW5kIHdoZW4geW91IHNob3VsZCB1c2UgYFNl
dFVwKCkvVGVhckRvd24oKWAsIHJlYWQgdGhpcyBbRkFRIGVudHJ5XShWMV82X0ZBUS5tZCNzaG91
bGQtaS11c2UtdGhlLWNvbnN0cnVjdG9yZGVzdHJ1Y3Rvci1vZi10aGUtdGVzdC1maXh0dXJlLW9y
LXRoZS1zZXQtdXB0ZWFyLWRvd24tZnVuY3Rpb24pLgotICAxLiBJZiBuZWVkZWQsIGRlZmluZSBz
dWJyb3V0aW5lcyBmb3IgeW91ciB0ZXN0cyB0byBzaGFyZS4KLQotV2hlbiB1c2luZyBhIGZpeHR1
cmUsIHVzZSBgVEVTVF9GKClgIGluc3RlYWQgb2YgYFRFU1QoKWAgYXMgaXQgYWxsb3dzIHlvdSB0
bwotYWNjZXNzIG9iamVjdHMgYW5kIHN1YnJvdXRpbmVzIGluIHRoZSB0ZXN0IGZpeHR1cmU6Ci1g
YGAKLVRFU1RfRih0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSB7Ci0gLi4uIHRlc3QgYm9keSAu
Li4KLX0KLWBgYAotCi1MaWtlIGBURVNUKClgLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHRl
c3QgY2FzZSBuYW1lLCBidXQgZm9yIGBURVNUX0YoKWAKLXRoaXMgbXVzdCBiZSB0aGUgbmFtZSBv
ZiB0aGUgdGVzdCBmaXh0dXJlIGNsYXNzLiBZb3UndmUgcHJvYmFibHkgZ3Vlc3NlZDogYF9GYAot
aXMgZm9yIGZpeHR1cmUuCi0KLVVuZm9ydHVuYXRlbHksIHRoZSBDKysgbWFjcm8gc3lzdGVtIGRv
ZXMgbm90IGFsbG93IHVzIHRvIGNyZWF0ZSBhIHNpbmdsZSBtYWNybwotdGhhdCBjYW4gaGFuZGxl
IGJvdGggdHlwZXMgb2YgdGVzdHMuIFVzaW5nIHRoZSB3cm9uZyBtYWNybyBjYXVzZXMgYSBjb21w
aWxlcgotZXJyb3IuCi0KLUFsc28sIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIHRlc3QgZml4dHVy
ZSBjbGFzcyBiZWZvcmUgdXNpbmcgaXQgaW4gYQotYFRFU1RfRigpYCwgb3IgeW91J2xsIGdldCB0
aGUgY29tcGlsZXIgZXJyb3IgImB2aXJ0dWFsIG91dHNpZGUgY2xhc3MKLWRlY2xhcmF0aW9uYCIu
Ci0KLUZvciBlYWNoIHRlc3QgZGVmaW5lZCB3aXRoIGBURVNUX0YoKWAsIEdvb2dsZSBUZXN0IHdp
bGw6Ci0gIDEuIENyZWF0ZSBhIF9mcmVzaF8gdGVzdCBmaXh0dXJlIGF0IHJ1bnRpbWUKLSAgMS4g
SW1tZWRpYXRlbHkgaW5pdGlhbGl6ZSBpdCB2aWEgYFNldFVwKClgICwKLSAgMS4gUnVuIHRoZSB0
ZXN0Ci0gIDEuIENsZWFuIHVwIGJ5IGNhbGxpbmcgYFRlYXJEb3duKClgCi0gIDEuIERlbGV0ZSB0
aGUgdGVzdCBmaXh0dXJlLiAgTm90ZSB0aGF0IGRpZmZlcmVudCB0ZXN0cyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UgaGF2ZSBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIG9iamVjdHMsIGFuZCBHb29nbGUg
VGVzdCBhbHdheXMgZGVsZXRlcyBhIHRlc3QgZml4dHVyZSBiZWZvcmUgaXQgY3JlYXRlcyB0aGUg
bmV4dCBvbmUuIEdvb2dsZSBUZXN0IGRvZXMgbm90IHJldXNlIHRoZSBzYW1lIHRlc3QgZml4dHVy
ZSBmb3IgbXVsdGlwbGUgdGVzdHMuIEFueSBjaGFuZ2VzIG9uZSB0ZXN0IG1ha2VzIHRvIHRoZSBm
aXh0dXJlIGRvIG5vdCBhZmZlY3Qgb3RoZXIgdGVzdHMuCi0KLUFzIGFuIGV4YW1wbGUsIGxldCdz
IHdyaXRlIHRlc3RzIGZvciBhIEZJRk8gcXVldWUgY2xhc3MgbmFtZWQgYFF1ZXVlYCwgd2hpY2gK
LWhhcyB0aGUgZm9sbG93aW5nIGludGVyZmFjZToKLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1lIEU+
IC8vIEUgaXMgdGhlIGVsZW1lbnQgdHlwZS4KLWNsYXNzIFF1ZXVlIHsKLSBwdWJsaWM6Ci0gIFF1
ZXVlKCk7Ci0gIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVtZW50KTsKLSAgRSogRGVxdWV1ZSgp
OyAvLyBSZXR1cm5zIE5VTEwgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgotICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwotICAuLi4KLX07Ci1gYGAKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xhc3Mu
IEJ5IGNvbnZlbnRpb24sIHlvdSBzaG91bGQgZ2l2ZSBpdCB0aGUgbmFtZQotYEZvb1Rlc3RgIHdo
ZXJlIGBGb29gIGlzIHRoZSBjbGFzcyBiZWluZyB0ZXN0ZWQuCi1gYGAKLWNsYXNzIFF1ZXVlVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lk
IFNldFVwKCkgewotICAgIHExXy5FbnF1ZXVlKDEpOwotICAgIHEyXy5FbnF1ZXVlKDIpOwotICAg
IHEyXy5FbnF1ZXVlKDMpOwotICB9Ci0KLSAgLy8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkge30K
LQotICBRdWV1ZTxpbnQ+IHEwXzsKLSAgUXVldWU8aW50PiBxMV87Ci0gIFF1ZXVlPGludD4gcTJf
OwotfTsKLWBgYAotCi1JbiB0aGlzIGNhc2UsIGBUZWFyRG93bigpYCBpcyBub3QgbmVlZGVkIHNp
bmNlIHdlIGRvbid0IGhhdmUgdG8gY2xlYW4gdXAgYWZ0ZXIKLWVhY2ggdGVzdCwgb3RoZXIgdGhh
biB3aGF0J3MgYWxyZWFkeSBkb25lIGJ5IHRoZSBkZXN0cnVjdG9yLgotCi1Ob3cgd2UnbGwgd3Jp
dGUgdGVzdHMgdXNpbmcgYFRFU1RfRigpYCBhbmQgdGhpcyBmaXh0dXJlLgotYGBgCi1URVNUX0Yo
UXVldWVUZXN0LCBJc0VtcHR5SW5pdGlhbGx5KSB7Ci0gIEVYUEVDVF9FUSgwLCBxMF8uc2l6ZSgp
KTsKLX0KLQotVEVTVF9GKFF1ZXVlVGVzdCwgRGVxdWV1ZVdvcmtzKSB7Ci0gIGludCogbiA9IHEw
Xy5EZXF1ZXVlKCk7Ci0gIEVYUEVDVF9FUShOVUxMLCBuKTsKLQotICBuID0gcTFfLkRlcXVldWUo
KTsKLSAgQVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDEsICpuKTsKLSAgRVhQ
RUNUX0VRKDAsIHExXy5zaXplKCkpOwotICBkZWxldGUgbjsKLQotICBuID0gcTJfLkRlcXVldWUo
KTsKLSAgQVNTRVJUX1RSVUUobiAhPSBOVUxMKTsKLSAgRVhQRUNUX0VRKDIsICpuKTsKLSAgRVhQ
RUNUX0VRKDEsIHEyXy5zaXplKCkpOwotICBkZWxldGUgbjsKLX0KLWBgYAotCi1UaGUgYWJvdmUg
dXNlcyBib3RoIGBBU1NFUlRfKmAgYW5kIGBFWFBFQ1RfKmAgYXNzZXJ0aW9ucy4gVGhlIHJ1bGUg
b2YgdGh1bWIgaXMKLXRvIHVzZSBgRVhQRUNUXypgIHdoZW4geW91IHdhbnQgdGhlIHRlc3QgdG8g
Y29udGludWUgdG8gcmV2ZWFsIG1vcmUgZXJyb3JzCi1hZnRlciB0aGUgYXNzZXJ0aW9uIGZhaWx1
cmUsIGFuZCB1c2UgYEFTU0VSVF8qYCB3aGVuIGNvbnRpbnVpbmcgYWZ0ZXIgZmFpbHVyZQotZG9l
c24ndCBtYWtlIHNlbnNlLiBGb3IgZXhhbXBsZSwgdGhlIHNlY29uZCBhc3NlcnRpb24gaW4gdGhl
IGBEZXF1ZXVlYCB0ZXN0IGlzCi1gQVNTRVJUX1RSVUUobiAhPSBOVUxMKWAsIGFzIHdlIG5lZWQg
dG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIgYG5gIGxhdGVyLAotd2hpY2ggd291bGQgbGVhZCB0
byBhIHNlZ2ZhdWx0IHdoZW4gYG5gIGlzIGBOVUxMYC4KLQotV2hlbiB0aGVzZSB0ZXN0cyBydW4s
IHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKLSAgMS4gR29vZ2xlIFRlc3QgY29uc3RydWN0cyBhIGBR
dWV1ZVRlc3RgIG9iamVjdCAobGV0J3MgY2FsbCBpdCBgdDFgICkuCi0gIDEuIGB0MS5TZXRVcCgp
YCBpbml0aWFsaXplcyBgdDFgIC4KLSAgMS4gVGhlIGZpcnN0IHRlc3QgKCBgSXNFbXB0eUluaXRp
YWxseWAgKSBydW5zIG9uIGB0MWAgLgotICAxLiBgdDEuVGVhckRvd24oKWAgY2xlYW5zIHVwIGFm
dGVyIHRoZSB0ZXN0IGZpbmlzaGVzLgotICAxLiBgdDFgIGlzIGRlc3RydWN0ZWQuCi0gIDEuIFRo
ZSBhYm92ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24gYW5vdGhlciBgUXVldWVUZXN0YCBvYmplY3Qs
IHRoaXMgdGltZSBydW5uaW5nIHRoZSBgRGVxdWV1ZVdvcmtzYCB0ZXN0LgotCi1fQXZhaWxhYmls
aXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotX05vdGVfOiBHb29nbGUgVGVzdCBhdXRvbWF0
aWNhbGx5IHNhdmVzIGFsbCBfR29vZ2xlIFRlc3RfIGZsYWdzIHdoZW4gYSB0ZXN0Ci1vYmplY3Qg
aXMgY29uc3RydWN0ZWQsIGFuZCByZXN0b3JlcyB0aGVtIHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4K
LQotIyBJbnZva2luZyB0aGUgVGVzdHMgIwotCi1gVEVTVCgpYCBhbmQgYFRFU1RfRigpYCBpbXBs
aWNpdGx5IHJlZ2lzdGVyIHRoZWlyIHRlc3RzIHdpdGggR29vZ2xlIFRlc3QuIFNvLCB1bmxpa2Ug
d2l0aCBtYW55IG90aGVyIEMrKyB0ZXN0aW5nIGZyYW1ld29ya3MsIHlvdSBkb24ndCBoYXZlIHRv
IHJlLWxpc3QgYWxsIHlvdXIgZGVmaW5lZCB0ZXN0cyBpbiBvcmRlciB0byBydW4gdGhlbS4KLQot
QWZ0ZXIgZGVmaW5pbmcgeW91ciB0ZXN0cywgeW91IGNhbiBydW4gdGhlbSB3aXRoIGBSVU5fQUxM
X1RFU1RTKClgICwgd2hpY2ggcmV0dXJucyBgMGAgaWYgYWxsIHRoZSB0ZXN0cyBhcmUgc3VjY2Vz
c2Z1bCwgb3IgYDFgIG90aGVyd2lzZS4gTm90ZSB0aGF0IGBSVU5fQUxMX1RFU1RTKClgIHJ1bnMg
X2FsbCB0ZXN0c18gaW4geW91ciBsaW5rIHVuaXQgLS0gdGhleSBjYW4gYmUgZnJvbSBkaWZmZXJl
bnQgdGVzdCBjYXNlcywgb3IgZXZlbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgotCi1XaGVuIGlu
dm9rZWQsIHRoZSBgUlVOX0FMTF9URVNUUygpYCBtYWNybzoKLSAgMS4gU2F2ZXMgdGhlIHN0YXRl
IG9mIGFsbCAgR29vZ2xlIFRlc3QgZmxhZ3MuCi0gIDEuIENyZWF0ZXMgYSB0ZXN0IGZpeHR1cmUg
b2JqZWN0IGZvciB0aGUgZmlyc3QgdGVzdC4KLSAgMS4gSW5pdGlhbGl6ZXMgaXQgdmlhIGBTZXRV
cCgpYC4KLSAgMS4gUnVucyB0aGUgdGVzdCBvbiB0aGUgZml4dHVyZSBvYmplY3QuCi0gIDEuIENs
ZWFucyB1cCB0aGUgZml4dHVyZSB2aWEgYFRlYXJEb3duKClgLgotICAxLiBEZWxldGVzIHRoZSBm
aXh0dXJlLgotICAxLiBSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdz
LgotICAxLiBSZXBlYXRzIHRoZSBhYm92ZSBzdGVwcyBmb3IgdGhlIG5leHQgdGVzdCwgdW50aWwg
YWxsIHRlc3RzIGhhdmUgcnVuLgotCi1JbiBhZGRpdGlvbiwgaWYgdGhlIHRleHQgZml4dHVyZSdz
IGNvbnN0cnVjdG9yIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgaW4KLXN0ZXAgMiwgdGhlcmUg
aXMgbm8gcG9pbnQgZm9yIHN0ZXAgMyAtIDUgYW5kIHRoZXkgYXJlIHRodXMgc2tpcHBlZC4gU2lt
aWxhcmx5LAotaWYgc3RlcCAzIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUsIHN0ZXAgNCB3aWxs
IGJlIHNraXBwZWQuCi0KLV9JbXBvcnRhbnRfOiBZb3UgbXVzdCBub3QgaWdub3JlIHRoZSByZXR1
cm4gdmFsdWUgb2YgYFJVTl9BTExfVEVTVFMoKWAsIG9yIGBnY2NgCi13aWxsIGdpdmUgeW91IGEg
Y29tcGlsZXIgZXJyb3IuIFRoZSByYXRpb25hbGUgZm9yIHRoaXMgZGVzaWduIGlzIHRoYXQgdGhl
Ci1hdXRvbWF0ZWQgdGVzdGluZyBzZXJ2aWNlIGRldGVybWluZXMgd2hldGhlciBhIHRlc3QgaGFz
IHBhc3NlZCBiYXNlZCBvbiBpdHMKLWV4aXQgY29kZSwgbm90IG9uIGl0cyBzdGRvdXQvc3RkZXJy
IG91dHB1dDsgdGh1cyB5b3VyIGBtYWluKClgIGZ1bmN0aW9uIG11c3QKLXJldHVybiB0aGUgdmFs
dWUgb2YgYFJVTl9BTExfVEVTVFMoKWAuCi0KLUFsc28sIHlvdSBzaG91bGQgY2FsbCBgUlVOX0FM
TF9URVNUUygpYCBvbmx5ICoqb25jZSoqLiBDYWxsaW5nIGl0IG1vcmUgdGhhbiBvbmNlCi1jb25m
bGljdHMgd2l0aCBzb21lIGFkdmFuY2VkIEdvb2dsZSBUZXN0IGZlYXR1cmVzIChlLmcuIHRocmVh
ZC1zYWZlIGRlYXRoCi10ZXN0cykgYW5kIHRodXMgaXMgbm90IHN1cHBvcnRlZC4KLQotX0F2YWls
YWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMgV3JpdGluZyB0aGUgbWFpbigpIEZ1
bmN0aW9uICMKLQotWW91IGNhbiBzdGFydCBmcm9tIHRoaXMgYm9pbGVycGxhdGU6Ci1gYGAKLSNp
bmNsdWRlICJ0aGlzL3BhY2thZ2UvZm9vLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQot
bmFtZXNwYWNlIHsKLQotLy8gVGhlIGZpeHR1cmUgZm9yIHRlc3RpbmcgY2xhc3MgRm9vLgotY2xh
c3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLy8g
WW91IGNhbiByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpZiBp
dHMgYm9keQotICAvLyBpcyBlbXB0eS4KLQotICBGb29UZXN0KCkgewotICAgIC8vIFlvdSBjYW4g
ZG8gc2V0LXVwIHdvcmsgZm9yIGVhY2ggdGVzdCBoZXJlLgotICB9Ci0KLSAgdmlydHVhbCB+Rm9v
VGVzdCgpIHsKLSAgICAvLyBZb3UgY2FuIGRvIGNsZWFuLXVwIHdvcmsgdGhhdCBkb2Vzbid0IHRo
cm93IGV4Y2VwdGlvbnMgaGVyZS4KLSAgfQotCi0gIC8vIElmIHRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvciBhcmUgbm90IGVub3VnaCBmb3Igc2V0dGluZyB1cAotICAvLyBhbmQgY2xlYW5p
bmcgdXAgZWFjaCB0ZXN0LCB5b3UgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0K
LSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIC8vIENvZGUgaGVyZSB3aWxsIGJlIGNhbGxl
ZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29uc3RydWN0b3IgKHJpZ2h0Ci0gICAgLy8gYmVmb3Jl
IGVhY2ggdGVzdCkuCi0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgLy8g
Q29kZSBoZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGVhY2ggdGVzdCAocmln
aHQKLSAgICAvLyBiZWZvcmUgdGhlIGRlc3RydWN0b3IpLgotICB9Ci0KLSAgLy8gT2JqZWN0cyBk
ZWNsYXJlZCBoZXJlIGNhbiBiZSB1c2VkIGJ5IGFsbCB0ZXN0cyBpbiB0aGUgdGVzdCBjYXNlIGZv
ciBGb28uCi19OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBGb286OkJhcigpIG1ldGhvZCBkb2VzIEFi
Yy4KLVRFU1RfRihGb29UZXN0LCBNZXRob2RCYXJEb2VzQWJjKSB7Ci0gIGNvbnN0IHN0cmluZyBp
bnB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEvbXlpbnB1dGZpbGUuZGF0IjsK
LSAgY29uc3Qgc3RyaW5nIG91dHB1dF9maWxlcGF0aCA9ICJ0aGlzL3BhY2thZ2UvdGVzdGRhdGEv
bXlvdXRwdXRmaWxlLmRhdCI7Ci0gIEZvbyBmOwotICBFWFBFQ1RfRVEoMCwgZi5CYXIoaW5wdXRf
ZmlsZXBhdGgsIG91dHB1dF9maWxlcGF0aCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEZvbyBkb2Vz
IFh5ei4KLVRFU1RfRihGb29UZXN0LCBEb2VzWHl6KSB7Ci0gIC8vIEV4ZXJjaXNlcyB0aGUgWHl6
IGZlYXR1cmUgb2YgRm9vLgotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQotYGBgCi0KLVRoZSBgOjp0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdCgpYCBmdW5jdGlvbiBwYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBmb3Ig
R29vZ2xlCi1UZXN0IGZsYWdzLCBhbmQgcmVtb3ZlcyBhbGwgcmVjb2duaXplZCBmbGFncy4gVGhp
cyBhbGxvd3MgdGhlIHVzZXIgdG8gY29udHJvbCBhCi10ZXN0IHByb2dyYW0ncyBiZWhhdmlvciB2
aWEgdmFyaW91cyBmbGFncywgd2hpY2ggd2UnbGwgY292ZXIgaW4gW0FkdmFuY2VkR3VpZGVdKFYx
XzZfQWR2YW5jZWRHdWlkZS5tZCkuCi1Zb3UgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3Jl
IGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAsIG9yIHRoZSBmbGFncwotd29uJ3QgYmUgcHJvcGVy
bHkgaW5pdGlhbGl6ZWQuCi0KLU9uIFdpbmRvd3MsIGBJbml0R29vZ2xlVGVzdCgpYCBhbHNvIHdv
cmtzIHdpdGggd2lkZSBzdHJpbmdzLCBzbyBpdCBjYW4gYmUgdXNlZAotaW4gcHJvZ3JhbXMgY29t
cGlsZWQgaW4gYFVOSUNPREVgIG1vZGUgYXMgd2VsbC4KLQotQnV0IG1heWJlIHlvdSB0aGluayB0
aGF0IHdyaXRpbmcgYWxsIHRob3NlIG1haW4oKSBmdW5jdGlvbnMgaXMgdG9vIG11Y2ggd29yaz8g
V2UgYWdyZWUgd2l0aCB5b3UgY29tcGxldGVseSBhbmQgdGhhdCdzIHdoeSBHb29nbGUgVGVzdCBw
cm92aWRlcyBhIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIG1haW4oKS4gSWYgaXQgZml0cyB5b3Vy
IG5lZWRzLCB0aGVuIGp1c3QgbGluayB5b3VyIHRlc3Qgd2l0aCBndGVzdFxfbWFpbiBsaWJyYXJ5
IGFuZCB5b3UgYXJlIGdvb2QgdG8gZ28uCi0KLSMjIEltcG9ydGFudCBub3RlIGZvciBWaXN1YWwg
QysrIHVzZXJzICMjCi1JZiB5b3UgcHV0IHlvdXIgdGVzdHMgaW50byBhIGxpYnJhcnkgYW5kIHlv
dXIgYG1haW4oKWAgZnVuY3Rpb24gaXMgaW4gYSBkaWZmZXJlbnQgbGlicmFyeSBvciBpbiB5b3Vy
IC5leGUgZmlsZSwgdGhvc2UgdGVzdHMgd2lsbCBub3QgcnVuLiBUaGUgcmVhc29uIGlzIGEgW2J1
Z10oaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vZmVlZGJhY2svdmlld2ZlZWRiYWNrLmFz
cHg/RmVlZGJhY2tJRD0yNDQ0MTAmc2l0ZWlkPTIxMCkgaW4gVmlzdWFsIEMrKy4gV2hlbiB5b3Ug
ZGVmaW5lIHlvdXIgdGVzdHMsIEdvb2dsZSBUZXN0IGNyZWF0ZXMgY2VydGFpbiBzdGF0aWMgb2Jq
ZWN0cyB0byByZWdpc3RlciB0aGVtLiBUaGVzZSBvYmplY3RzIGFyZSBub3QgcmVmZXJlbmNlZCBm
cm9tIGVsc2V3aGVyZSBidXQgdGhlaXIgY29uc3RydWN0b3JzIGFyZSBzdGlsbCBzdXBwb3NlZCB0
byBydW4uIFdoZW4gVmlzdWFsIEMrKyBsaW5rZXIgc2VlcyB0aGF0IG5vdGhpbmcgaW4gdGhlIGxp
YnJhcnkgaXMgcmVmZXJlbmNlZCBmcm9tIG90aGVyIHBsYWNlcyBpdCB0aHJvd3MgdGhlIGxpYnJh
cnkgb3V0LiBZb3UgaGF2ZSB0byByZWZlcmVuY2UgeW91ciBsaWJyYXJ5IHdpdGggdGVzdHMgZnJv
bSB5b3VyIG1haW4gcHJvZ3JhbSB0byBrZWVwIHRoZSBsaW5rZXIgZnJvbSBkaXNjYXJkaW5nIGl0
LiBIZXJlIGlzIGhvdyB0byBkbyBpdC4gU29tZXdoZXJlIGluIHlvdXIgbGlicmFyeSBjb2RlIGRl
Y2xhcmUgYSBmdW5jdGlvbjoKLWBgYAotX19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBQdWxsSW5N
eUxpYnJhcnkoKSB7IHJldHVybiAwOyB9Ci1gYGAKLUlmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbiBh
IHN0YXRpYyBsaWJyYXJ5IChub3QgRExMKSB0aGVuIGBfX2RlY2xzcGVjKGRsbGV4cG9ydClgIGlz
IG5vdCByZXF1aXJlZC4gTm93LCBpbiB5b3VyIG1haW4gcHJvZ3JhbSwgd3JpdGUgYSBjb2RlIHRo
YXQgaW52b2tlcyB0aGF0IGZ1bmN0aW9uOgotYGBgCi1pbnQgUHVsbEluTXlMaWJyYXJ5KCk7Ci1z
dGF0aWMgaW50IGR1bW15ID0gUHVsbEluTXlMaWJyYXJ5KCk7Ci1gYGAKLVRoaXMgd2lsbCBrZWVw
IHlvdXIgdGVzdHMgcmVmZXJlbmNlZCBhbmQgd2lsbCBtYWtlIHRoZW0gcmVnaXN0ZXIgdGhlbXNl
bHZlcyBhdCBzdGFydHVwLgotCi1JbiBhZGRpdGlvbiwgaWYgeW91IGRlZmluZSB5b3VyIHRlc3Rz
IGluIGEgc3RhdGljIGxpYnJhcnksIGFkZCBgL09QVDpOT1JFRmAgdG8geW91ciBtYWluIHByb2dy
YW0gbGlua2VyIG9wdGlvbnMuIElmIHlvdSB1c2UgTVNWQysrIElERSwgZ28gdG8geW91ciAuZXhl
IHByb2plY3QgcHJvcGVydGllcy9Db25maWd1cmF0aW9uIFByb3BlcnRpZXMvTGlua2VyL09wdGlt
aXphdGlvbiBhbmQgc2V0IFJlZmVyZW5jZXMgc2V0dGluZyB0byBgS2VlcCBVbnJlZmVyZW5jZWQg
RGF0YSAoL09QVDpOT1JFRilgLiBUaGlzIHdpbGwga2VlcCBWaXN1YWwgQysrIGxpbmtlciBmcm9t
IGRpc2NhcmRpbmcgaW5kaXZpZHVhbCBzeW1ib2xzIGdlbmVyYXRlZCBieSB5b3VyIHRlc3RzIGZy
b20gdGhlIGZpbmFsIGV4ZWN1dGFibGUuCi0KLVRoZXJlIGlzIG9uZSBtb3JlIHBpdGZhbGwsIHRo
b3VnaC4gSWYgeW91IHVzZSBHb29nbGUgVGVzdCBhcyBhIHN0YXRpYyBsaWJyYXJ5ICh0aGF0J3Mg
aG93IGl0IGlzIGRlZmluZWQgaW4gZ3Rlc3QudmNwcm9qKSB5b3VyIHRlc3RzIG11c3QgYWxzbyBy
ZXNpZGUgaW4gYSBzdGF0aWMgbGlicmFyeS4gSWYgeW91IGhhdmUgdG8gaGF2ZSB0aGVtIGluIGEg
RExMLCB5b3UgX211c3RfIGNoYW5nZSBHb29nbGUgVGVzdCB0byBidWlsZCBpbnRvIGEgRExMIGFz
IHdlbGwuIE90aGVyd2lzZSB5b3VyIHRlc3RzIHdpbGwgbm90IHJ1biBjb3JyZWN0bHkgb3Igd2ls
bCBub3QgcnVuIGF0IGFsbC4gVGhlIGdlbmVyYWwgY29uY2x1c2lvbiBoZXJlIGlzOiBtYWtlIHlv
dXIgbGlmZSBlYXNpZXIgLSBkbyBub3Qgd3JpdGUgeW91ciB0ZXN0cyBpbiBsaWJyYXJpZXMhCi0K
LSMgV2hlcmUgdG8gR28gZnJvbSBIZXJlICMKLQotQ29uZ3JhdHVsYXRpb25zISBZb3UndmUgbGVh
cm5lZCB0aGUgR29vZ2xlIFRlc3QgYmFzaWNzLiBZb3UgY2FuIHN0YXJ0IHdyaXRpbmcKLWFuZCBy
dW5uaW5nIEdvb2dsZSBUZXN0IHRlc3RzLCByZWFkIHNvbWUgW3NhbXBsZXNdKFYxXzZfU2FtcGxl
cy5tZCksIG9yIGNvbnRpbnVlIHdpdGgKLVtBZHZhbmNlZEd1aWRlXShWMV82X0FkdmFuY2VkR3Vp
ZGUubWQpLCB3aGljaCBkZXNjcmliZXMgbWFueSBtb3JlIHVzZWZ1bCBHb29nbGUgVGVzdCBmZWF0
dXJlcy4KLQotIyBLbm93biBMaW1pdGF0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IGlzIGRlc2lnbmVk
IHRvIGJlIHRocmVhZC1zYWZlLiAgVGhlIGltcGxlbWVudGF0aW9uIGlzCi10aHJlYWQtc2FmZSBv
biBzeXN0ZW1zIHdoZXJlIHRoZSBgcHRocmVhZHNgIGxpYnJhcnkgaXMgYXZhaWxhYmxlLiAgSXQK
LWlzIGN1cnJlbnRseSBfdW5zYWZlXyB0byB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBmcm9t
IHR3byB0aHJlYWRzCi1jb25jdXJyZW50bHkgb24gb3RoZXIgc3lzdGVtcyAoZS5nLiBXaW5kb3dz
KS4gIEluIG1vc3QgdGVzdHMgdGhpcyBpcwotbm90IGFuIGlzc3VlIGFzIHVzdWFsbHkgdGhlIGFz
c2VydGlvbnMgYXJlIGRvbmUgaW4gdGhlIG1haW4gdGhyZWFkLiBJZgoteW91IHdhbnQgdG8gaGVs
cCwgeW91IGNhbiB2b2x1bnRlZXIgdG8gaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKLXN5bmNocm9u
aXphdGlvbiBwcmltaXRpdmVzIGluIGBndGVzdC1wb3J0LmhgIGZvciB5b3VyIHBsYXRmb3JtLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X1B1bXBNYW51YWwubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzZfUHVtcE1hbnVhbC5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODE4NGYxNTNjYTJlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82
X1B1bXBNYW51YWwubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotCi0KLTxiPlA8
L2I+dW1wIGlzIDxiPlU8L2I+c2VmdWwgZm9yIDxiPk08L2I+ZXRhIDxiPlA8L2I+cm9ncmFtbWlu
Zy4KLQotIyBUaGUgUHJvYmxlbSAjCi0KLVRlbXBsYXRlIGFuZCBtYWNybyBsaWJyYXJpZXMgb2Z0
ZW4gbmVlZCB0byBkZWZpbmUgbWFueSBjbGFzc2VzLAotZnVuY3Rpb25zLCBvciBtYWNyb3MgdGhh
dCB2YXJ5IG9ubHkgKG9yIGFsbW9zdCBvbmx5KSBpbiB0aGUgbnVtYmVyIG9mCi1hcmd1bWVudHMg
dGhleSB0YWtlLiBJdCdzIGEgbG90IG9mIHJlcGV0aXRpdmUsIG1lY2hhbmljYWwsIGFuZAotZXJy
b3ItcHJvbmUgd29yay4KLQotVmFyaWFkaWMgdGVtcGxhdGVzIGFuZCB2YXJpYWRpYyBtYWNyb3Mg
Y2FuIGFsbGV2aWF0ZSB0aGUgcHJvYmxlbS4KLUhvd2V2ZXIsIHdoaWxlIGJvdGggYXJlIGJlaW5n
IGNvbnNpZGVyZWQgYnkgdGhlIEMrKyBjb21taXR0ZWUsIG5laXRoZXIKLWlzIGluIHRoZSBzdGFu
ZGFyZCB5ZXQgb3Igd2lkZWx5IHN1cHBvcnRlZCBieSBjb21waWxlcnMuICBUaHVzIHRoZXkKLWFy
ZSBvZnRlbiBub3QgYSBnb29kIGNob2ljZSwgZXNwZWNpYWxseSB3aGVuIHlvdXIgY29kZSBuZWVk
cyB0byBiZQotcG9ydGFibGUuIEFuZCB0aGVpciBjYXBhYmlsaXRpZXMgYXJlIHN0aWxsIGxpbWl0
ZWQuCi0KLUFzIGEgcmVzdWx0LCBhdXRob3JzIG9mIHN1Y2ggbGlicmFyaWVzIG9mdGVuIGhhdmUg
dG8gd3JpdGUgc2NyaXB0cyB0bwotZ2VuZXJhdGUgdGhlaXIgaW1wbGVtZW50YXRpb24uIEhvd2V2
ZXIsIG91ciBleHBlcmllbmNlIGlzIHRoYXQgaXQncwotdGVkaW91cyB0byB3cml0ZSBzdWNoIHNj
cmlwdHMsIHdoaWNoIHRlbmQgdG8gcmVmbGVjdCB0aGUgc3RydWN0dXJlIG9mCi10aGUgZ2VuZXJh
dGVkIGNvZGUgcG9vcmx5IGFuZCBhcmUgb2Z0ZW4gaGFyZCB0byByZWFkIGFuZCBlZGl0LiBGb3IK
LWV4YW1wbGUsIGEgc21hbGwgY2hhbmdlIG5lZWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgbWF5
IHJlcXVpcmUgc29tZQotbm9uLWludHVpdGl2ZSwgbm9uLXRyaXZpYWwgY2hhbmdlcyBpbiB0aGUg
c2NyaXB0LiBUaGlzIGlzIGVzcGVjaWFsbHkKLXBhaW5mdWwgd2hlbiBleHBlcmltZW50aW5nIHdp
dGggdGhlIGNvZGUuCi0KLSMgT3VyIFNvbHV0aW9uICMKLQotUHVtcCAoZm9yIFB1bXAgaXMgVXNl
ZnVsIGZvciBNZXRhIFByb2dyYW1taW5nLCBQcmV0dHkgVXNlZnVsIGZvciBNZXRhCi1Qcm9ncmFt
bWluZywgb3IgUHJhY3RpY2FsIFV0aWxpdHkgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIHdoaWNoZXZl
ciB5b3UKLXByZWZlcikgaXMgYSBzaW1wbGUgbWV0YS1wcm9ncmFtbWluZyB0b29sIGZvciBDKysu
IFRoZSBpZGVhIGlzIHRoYXQgYQotcHJvZ3JhbW1lciB3cml0ZXMgYSBgZm9vLnB1bXBgIGZpbGUg
d2hpY2ggY29udGFpbnMgQysrIGNvZGUgcGx1cyBtZXRhCi1jb2RlIHRoYXQgbWFuaXB1bGF0ZXMg
dGhlIEMrKyBjb2RlLiBUaGUgbWV0YSBjb2RlIGNhbiBoYW5kbGUKLWl0ZXJhdGlvbnMgb3ZlciBh
IHJhbmdlLCBuZXN0ZWQgaXRlcmF0aW9ucywgbG9jYWwgbWV0YSB2YXJpYWJsZQotZGVmaW5pdGlv
bnMsIHNpbXBsZSBhcml0aG1ldGljLCBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMuIFlvdSBj
YW4KLXZpZXcgaXQgYXMgYSBzbWFsbCBEb21haW4tU3BlY2lmaWMgTGFuZ3VhZ2UuIFRoZSBtZXRh
IGxhbmd1YWdlIGlzCi1kZXNpZ25lZCB0byBiZSBub24taW50cnVzaXZlIChzLnQuIGl0IHdvbid0
IGNvbmZ1c2UgRW1hY3MnIEMrKyBtb2RlLAotZm9yIGV4YW1wbGUpIGFuZCBjb25jaXNlLCBtYWtp
bmcgUHVtcCBjb2RlIGludHVpdGl2ZSBhbmQgZWFzeSB0bwotbWFpbnRhaW4uCi0KLSMjIEhpZ2hs
aWdodHMgIyMKLQotICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBpbiBhIHNpbmdsZSBQeXRob24g
c2NyaXB0IGFuZCB0aHVzIHVsdHJhIHBvcnRhYmxlOiBubyBidWlsZCBvciBpbnN0YWxsYXRpb24g
aXMgbmVlZGVkIGFuZCBpdCB3b3JrcyBjcm9zcyBwbGF0Zm9ybXMuCi0gICogUHVtcCB0cmllcyB0
byBiZSBzbWFydCB3aXRoIHJlc3BlY3QgdG8gW0dvb2dsZSdzIHN0eWxlIGd1aWRlXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXN0eWxlZ3VpZGUvKTogaXQgYnJlYWtzIGxvbmcgbGlu
ZXMgKGVhc3kgdG8gaGF2ZSB3aGVuIHRoZXkgYXJlIGdlbmVyYXRlZCkgYXQgYWNjZXB0YWJsZSBw
bGFjZXMgdG8gZml0IHdpdGhpbiA4MCBjb2x1bW5zIGFuZCBpbmRlbnQgdGhlIGNvbnRpbnVhdGlv
biBsaW5lcyBjb3JyZWN0bHkuCi0gICogVGhlIGZvcm1hdCBpcyBodW1hbi1yZWFkYWJsZSBhbmQg
bW9yZSBjb25jaXNlIHRoYW4gWE1MLgotICAqIFRoZSBmb3JtYXQgd29ya3MgcmVsYXRpdmVseSB3
ZWxsIHdpdGggRW1hY3MnIEMrKyBtb2RlLgotCi0jIyBFeGFtcGxlcyAjIwotCi1UaGUgZm9sbG93
aW5nIFB1bXAgY29kZSAod2hlcmUgbWV0YSBrZXl3b3JkcyBzdGFydCB3aXRoIGAkYCwgYFtbYCBh
bmQgYF1dYCBhcmUgbWV0YSBicmFja2V0cywgYW5kIGAkJGAgc3RhcnRzIGEgbWV0YSBjb21tZW50
IHRoYXQgZW5kcyB3aXRoIHRoZSBsaW5lKToKLQotYGBgCi0kdmFyIG4gPSAzICAgICAkJCBEZWZp
bmVzIGEgbWV0YSB2YXJpYWJsZSBuLgotJHJhbmdlIGkgMC4ubiAgJCQgRGVjbGFyZXMgdGhlIHJh
bmdlIG9mIG1ldGEgaXRlcmF0b3IgaSAoaW5jbHVzaXZlKS4KLSRmb3IgaSBbWwotICAgICAgICAg
ICAgICAgJCQgTWV0YSBsb29wLgotLy8gRm9vJGkgZG9lcyBibGFoIGZvciAkaS1hcnkgcHJlZGlj
YXRlcy4KLSRyYW5nZSBqIDEuLmkKLXRlbXBsYXRlIDxzaXplX3QgTiAkZm9yIGogW1ssIHR5cGVu
YW1lIEEkal1dPgotY2xhc3MgRm9vJGkgewotJGlmIGkgPT0gMCBbWwotICBibGFoIGE7Ci1dXSAk
ZWxpZiBpIDw9IDIgW1sKLSAgYmxhaCBiOwotXV0gJGVsc2UgW1sKLSAgYmxhaCBjOwotXV0KLX07
Ci0KLV1dCi1gYGAKLQotd2lsbCBiZSB0cmFuc2xhdGVkIGJ5IHRoZSBQdW1wIGNvbXBpbGVyIHRv
OgotCi1gYGAKLS8vIEZvbzAgZG9lcyBibGFoIGZvciAwLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxh
dGUgPHNpemVfdCBOPgotY2xhc3MgRm9vMCB7Ci0gIGJsYWggYTsKLX07Ci0KLS8vIEZvbzEgZG9l
cyBibGFoIGZvciAxLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFt
ZSBBMT4KLWNsYXNzIEZvbzEgewotICBibGFoIGI7Ci19OwotCi0vLyBGb28yIGRvZXMgYmxhaCBm
b3IgMi1hcnkgcHJlZGljYXRlcy4KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyPgotY2xhc3MgRm9vMiB7Ci0gIGJsYWggYjsKLX07Ci0KLS8vIEZvbzMgZG9lcyBi
bGFoIGZvciAzLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBB
MSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzPgotY2xhc3MgRm9vMyB7Ci0gIGJsYWggYzsKLX07
Ci1gYGAKLQotSW4gYW5vdGhlciBleGFtcGxlLAotCi1gYGAKLSRyYW5nZSBpIDEuLm4KLUZ1bmMo
JGZvciBpICsgW1thJGldXSk7Ci0kJCBUaGUgdGV4dCBiZXR3ZWVuIGkgYW5kIFtbIGlzIHRoZSBz
ZXBhcmF0b3IgYmV0d2VlbiBpdGVyYXRpb25zLgotYGBgCi0KLXdpbGwgZ2VuZXJhdGUgb25lIG9m
IHRoZSBmb2xsb3dpbmcgbGluZXMgKHdpdGhvdXQgdGhlIGNvbW1lbnRzKSwgZGVwZW5kaW5nIG9u
IHRoZSB2YWx1ZSBvZiBgbmA6Ci0KLWBgYAotRnVuYygpOyAgICAgICAgICAgICAgLy8gSWYgbiBp
cyAwLgotRnVuYyhhMSk7ICAgICAgICAgICAgLy8gSWYgbiBpcyAxLgotRnVuYyhhMSArIGEyKTsg
ICAgICAgLy8gSWYgbiBpcyAyLgotRnVuYyhhMSArIGEyICsgYTMpOyAgLy8gSWYgbiBpcyAzLgot
Ly8gQW5kIHNvIG9uLi4uCi1gYGAKLQotIyMgQ29uc3RydWN0cyAjIwotCi1XZSBzdXBwb3J0IHRo
ZSBmb2xsb3dpbmcgbWV0YSBwcm9ncmFtbWluZyBjb25zdHJ1Y3RzOgotCi18IGAkdmFyIGlkID0g
ZXhwYCB8IERlZmluZXMgYSBuYW1lZCBjb25zdGFudCB2YWx1ZS4gYCRpZGAgaXMgdmFsaWQgdXRp
bCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IG1ldGEgbGV4aWNhbCBibG9jay4gfAotfDotLS0tLS0t
LS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYCRy
YW5nZSBpZCBleHAuLmV4cGAgfCBTZXRzIHRoZSByYW5nZSBvZiBhbiBpdGVyYXRpb24gdmFyaWFi
bGUsIHdoaWNoIGNhbiBiZSByZXVzZWQgaW4gbXVsdGlwbGUgbG9vcHMgbGF0ZXIuICAgICAgICAg
IHwKLXwgYCRmb3IgaWQgc2VwIFtbIGNvZGUgXV1gIHwgSXRlcmF0aW9uLiBUaGUgcmFuZ2Ugb2Yg
YGlkYCBtdXN0IGhhdmUgYmVlbiBkZWZpbmVkIGVhcmxpZXIuIGAkaWRgIGlzIHZhbGlkIGluIGBj
b2RlYC4gICAgICAgICB8Ci18IGAkKCQpYCAgICAgICAgICB8IEdlbmVyYXRlcyBhIHNpbmdsZSBg
JGAgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotfCBgJGlkYCAgICAgICAgICAgfCBWYWx1ZSBvZiB0aGUgbmFt
ZWQgY29uc3RhbnQgb3IgaXRlcmF0aW9uIHZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYCQoZXhwKWAgICAgICAgIHwgVmFsdWUgb2YgdGhl
IGV4cHJlc3Npb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkaWYgZXhwIFtbIGNvZGUgXV0gZWxzZV9i
cmFuY2hgIHwgQ29uZGl0aW9uYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBbWyBj
b2RlIF1dYCAgICB8IE1ldGEgbGV4aWNhbCBibG9jay4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBg
Y3BwX2NvZGVgICAgICAgfCBSYXcgQysrIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LXwgYCQkIGNvbW1lbnRgICAgIHwgTWV0YSBjb21tZW50LiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8Ci0KLSoqTm90ZToqKiBUbyBnaXZlIHRoZSB1c2VyIHNvbWUgZnJlZWRvbSBpbiBmb3JtYXR0
aW5nIHRoZSBQdW1wIHNvdXJjZQotY29kZSwgUHVtcCBpZ25vcmVzIGEgbmV3LWxpbmUgY2hhcmFj
dGVyIGlmIGl0J3MgcmlnaHQgYWZ0ZXIgYCRmb3IgZm9vYAotb3IgbmV4dCB0byBgW1tgIG9yIGBd
XWAuIFdpdGhvdXQgdGhpcyBydWxlIHlvdSdsbCBvZnRlbiBiZSBmb3JjZWQgdG8gd3JpdGUKLXZl
cnkgbG9uZyBsaW5lcyB0byBnZXQgdGhlIGRlc2lyZWQgb3V0cHV0LiBUaGVyZWZvcmUgc29tZXRp
bWVzIHlvdSBtYXkKLW5lZWQgdG8gaW5zZXJ0IGFuIGV4dHJhIG5ldy1saW5lIGluIHN1Y2ggcGxh
Y2VzIGZvciBhIG5ldy1saW5lIHRvIHNob3cKLXVwIGluIHlvdXIgb3V0cHV0LgotCi0jIyBHcmFt
bWFyICMjCi0KLWBgYAotY29kZSA6Oj0gYXRvbWljX2NvZGUqCi1hdG9taWNfY29kZSA6Oj0gJHZh
ciBpZCA9IGV4cAotICAgIHwgJHZhciBpZCA9IFtbIGNvZGUgXV0KLSAgICB8ICRyYW5nZSBpZCBl
eHAuLmV4cAotICAgIHwgJGZvciBpZCBzZXAgW1sgY29kZSBdXQotICAgIHwgJCgkKQotICAgIHwg
JGlkCi0gICAgfCAkKGV4cCkKLSAgICB8ICRpZiBleHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAot
ICAgIHwgW1sgY29kZSBdXQotICAgIHwgY3BwX2NvZGUKLXNlcCA6Oj0gY3BwX2NvZGUgfCBlbXB0
eV9zdHJpbmcKLWVsc2VfYnJhbmNoIDo6PSAkZWxzZSBbWyBjb2RlIF1dCi0gICAgfCAkZWxpZiBl
eHAgW1sgY29kZSBdXSBlbHNlX2JyYW5jaAotICAgIHwgZW1wdHlfc3RyaW5nCi1leHAgOjo9IHNp
bXBsZV9leHByZXNzaW9uX2luX1B5dGhvbl9zeW50YXgKLWBgYAotCi0jIyBDb2RlICMjCi0KLVlv
dSBjYW4gZmluZCB0aGUgc291cmNlIGNvZGUgb2YgUHVtcCBpbiBbc2NyaXB0cy9wdW1wLnB5XSgu
Li9zY3JpcHRzL3B1bXAucHkpLiBJdCBpcyBzdGlsbAotdmVyeSB1bnBvbGlzaGVkIGFuZCBsYWNr
cyBhdXRvbWF0ZWQgdGVzdHMsIGFsdGhvdWdoIGl0IGhhcyBiZWVuCi1zdWNjZXNzZnVsbHkgdXNl
ZCBtYW55IHRpbWVzLiBJZiB5b3UgZmluZCBhIGNoYW5jZSB0byB1c2UgaXQgaW4geW91cgotcHJv
amVjdCwgcGxlYXNlIGxldCB1cyBrbm93IHdoYXQgeW91IHRoaW5rISAgV2UgYWxzbyB3ZWxjb21l
IGhlbHAgb24KLWltcHJvdmluZyBQdW1wLgotCi0jIyBSZWFsIEV4YW1wbGVzICMjCi0KLVlvdSBj
YW4gZmluZCByZWFsLXdvcmxkIGFwcGxpY2F0aW9ucyBvZiBQdW1wIGluIFtHb29nbGUgVGVzdF0o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1maWxlJTNBXC5wdW1wJTI0K3BhY2th
Z2UlM0FodHRwJTNBJTJGJTJGZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tKSBhbmQgW0dvb2ds
ZSBNb2NrXShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUlM0FcLnB1bXAl
MjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGVtb2NrXC5nb29nbGVjb2RlXC5jb20pLiAg
VGhlIHNvdXJjZSBmaWxlIGBmb28uaC5wdW1wYCBnZW5lcmF0ZXMgYGZvby5oYC4KLQotIyMgVGlw
cyAjIwotCi0gICogSWYgYSBtZXRhIHZhcmlhYmxlIGlzIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9y
IGRpZ2l0LCB5b3UgY2FuIHNlcGFyYXRlIHRoZW0gdXNpbmcgYFtbXV1gLCB3aGljaCBpbnNlcnRz
IGFuIGVtcHR5IHN0cmluZy4gRm9yIGV4YW1wbGUgYEZvbyRqW1tdXUhlbHBlcmAgZ2VuZXJhdGUg
YEZvbzFIZWxwZXJgIHdoZW4gYGpgIGlzIDEuCi0gICogVG8gYXZvaWQgZXh0cmEtbG9uZyBQdW1w
IHNvdXJjZSBsaW5lcywgeW91IGNhbiBicmVhayBhIGxpbmUgYW55d2hlcmUgeW91IHdhbnQgYnkg
aW5zZXJ0aW5nIGBbW11dYCBmb2xsb3dlZCBieSBhIG5ldyBsaW5lLiBTaW5jZSBhbnkgbmV3LWxp
bmUgY2hhcmFjdGVyIG5leHQgdG8gYFtbYCBvciBgXV1gIGlzIGlnbm9yZWQsIHRoZSBnZW5lcmF0
ZWQgY29kZSB3b24ndCBjb250YWluIHRoaXMgbmV3IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfNl9TYW1wbGVz
Lm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjFkMjAwNTY3MzUuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzZfU2FtcGxlcy5tZAorKysgL2Rldi9udWxs
CkBAIC0xLDE0ICswLDAgQEAKLUlmIHlvdSdyZSBsaWtlIHVzLCB5b3UnZCBsaWtlIHRvIGxvb2sg
YXQgc29tZSBHb29nbGUgVGVzdCBzYW1wbGUgY29kZS4gIFRoZQotW3NhbXBsZXMgZm9sZGVyXSgu
Li9zYW1wbGVzKSBoYXMgYSBudW1iZXIgb2Ygd2VsbC1jb21tZW50ZWQgc2FtcGxlcyBzaG93aW5n
IGhvdyB0byB1c2UgYQotdmFyaWV0eSBvZiBHb29nbGUgVGVzdCBmZWF0dXJlcy4KLQotICAqIFtT
YW1wbGUgIzFdKC4uL3NhbXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYykgc2hvd3MgdGhlIGJhc2lj
IHN0ZXBzIG9mIHVzaW5nIEdvb2dsZSBUZXN0IHRvIHRlc3QgQysrIGZ1bmN0aW9ucy4KLSAgKiBb
U2FtcGxlICMyXSguLi9zYW1wbGVzL3NhbXBsZTJfdW5pdHRlc3QuY2MpIHNob3dzIGEgbW9yZSBj
b21wbGV4IHVuaXQgdGVzdCBmb3IgYSBjbGFzcyB3aXRoIG11bHRpcGxlIG1lbWJlciBmdW5jdGlv
bnMuCi0gICogW1NhbXBsZSAjM10oLi4vc2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjKSB1c2Vz
IGEgdGVzdCBmaXh0dXJlLgotICAqIFtTYW1wbGUgIzRdKC4uL3NhbXBsZXMvc2FtcGxlNF91bml0
dGVzdC5jYykgaXMgYW5vdGhlciBiYXNpYyBleGFtcGxlIG9mIHVzaW5nIEdvb2dsZSBUZXN0Lgot
ICAqIFtTYW1wbGUgIzVdKC4uL3NhbXBsZXMvc2FtcGxlNV91bml0dGVzdC5jYykgdGVhY2hlcyBo
b3cgdG8gcmV1c2UgYSB0ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdCBjYXNlcyBieSBkZXJp
dmluZyBzdWItZml4dHVyZXMgZnJvbSBpdC4KLSAgKiBbU2FtcGxlICM2XSguLi9zYW1wbGVzL3Nh
bXBsZTZfdW5pdHRlc3QuY2MpIGRlbW9uc3RyYXRlcyB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMu
Ci0gICogW1NhbXBsZSAjN10oLi4vc2FtcGxlcy9zYW1wbGU3X3VuaXR0ZXN0LmNjKSB0ZWFjaGVz
IHRoZSBiYXNpY3Mgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSAgKiBbU2FtcGxlICM4
XSguLi9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MpIHNob3dzIHVzaW5nIGBDb21iaW5lKClg
IGluIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0gICogW1NhbXBsZSAjOV0oLi4vc2FtcGxl
cy9zYW1wbGU5X3VuaXR0ZXN0LmNjKSBzaG93cyB1c2Ugb2YgdGhlIGxpc3RlbmVyIEFQSSB0byBt
b2RpZnkgR29vZ2xlIFRlc3QncyBjb25zb2xlIG91dHB1dCBhbmQgdGhlIHVzZSBvZiBpdHMgcmVm
bGVjdGlvbiBBUEkgdG8gaW5zcGVjdCB0ZXN0IHJlc3VsdHMuCi0gICogW1NhbXBsZSAjMTBdKC4u
L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUgbGlzdGVuZXIg
QVBJIHRvIGltcGxlbWVudCBhIHByaW1pdGl2ZSBtZW1vcnkgbGVhayBjaGVja2VyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X1hjb2RlR3VpZGUubWQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9k
b2NzL1YxXzZfWGNvZGVHdWlkZS5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYy
NGJmNTFiZmM0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9WMV82X1hjb2Rl
R3VpZGUubWQKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0KLQotVGhpcyBndWlkZSB3
aWxsIGV4cGxhaW4gaG93IHRvIHVzZSB0aGUgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIGluIHlv
dXIgWGNvZGUgcHJvamVjdHMgb24gTWFjIE9TIFguIFRoaXMgdHV0b3JpYWwgYmVnaW5zIGJ5IHF1
aWNrbHkgZXhwbGFpbmluZyB3aGF0IHRvIGRvIGZvciBleHBlcmllbmNlZCB1c2Vycy4gQWZ0ZXIg
dGhlIHF1aWNrIHN0YXJ0LCB0aGUgZ3VpZGUgZ29lcyBwcm92aWRlcyBhZGRpdGlvbmFsIGV4cGxh
bmF0aW9uIGFib3V0IGVhY2ggc3RlcC4KLQotIyBRdWljayBTdGFydCAjCi0KLUhlcmUgaXMgdGhl
IHF1aWNrIGd1aWRlIGZvciB1c2luZyBHb29nbGUgVGVzdCBpbiB5b3VyIFhjb2RlIHByb2plY3Qu
Ci0KLSAgMS4gRG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBbd2Vic2l0ZV0oaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3QpIHVzaW5nIHRoaXMgY29tbWFuZDogYHN2biBjaGVj
a291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRl
c3QtcmVhZC1vbmx5YAotICAxLiBPcGVuIHVwIHRoZSBgZ3Rlc3QueGNvZGVwcm9qYCBpbiB0aGUg
YGdvb2dsZXRlc3QtcmVhZC1vbmx5L3hjb2RlL2AgZGlyZWN0b3J5IGFuZCBidWlsZCB0aGUgZ3Rl
c3QuZnJhbWV3b3JrLgotICAxLiBDcmVhdGUgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldCBpbiB5
b3VyIFhjb2RlIHByb2plY3QgY2FsbGVkIHNvbWV0aGluZyBsaWtlICJVbml0VGVzdHMiCi0gIDEu
IEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgcHJvamVjdCBhbmQgYWRkIGl0IHRvIHRo
ZSAiTGluayBCaW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0VGVzdHMi
Ci0gIDEuIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUgIkNvbXBpbGUgU291
cmNlcyIgYnVpbGQgcGhhc2Ugb2YgIlVuaXRUZXN0cyIKLSAgMS4gRWRpdCB0aGUgIlVuaXRUZXN0
cyIgZXhlY3V0YWJsZSBhbmQgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkICJEWUxE
XF9GUkFNRVdPUktcX1BBVEgiIHdpdGggYSB2YWx1ZSBlcXVhbCB0byB0aGUgcGF0aCB0byB0aGUg
ZnJhbWV3b3JrIGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yayByZWxhdGl2ZSB0byB0aGUg
Y29tcGlsZWQgZXhlY3V0YWJsZS4KLSAgMS4gQnVpbGQgYW5kIEdvCi0KLVRoZSBmb2xsb3dpbmcg
c2VjdGlvbnMgZnVydGhlciBleHBsYWluIGVhY2ggb2YgdGhlIHN0ZXBzIGxpc3RlZCBhYm92ZSBp
biBkZXB0aCwgZGVzY3JpYmluZyBpbiBtb3JlIGRldGFpbCBob3cgdG8gY29tcGxldGUgaXQgaW5j
bHVkaW5nIHNvbWUgdmFyaWF0aW9ucy4KLQotIyBHZXQgdGhlIFNvdXJjZSAjCi0KLUN1cnJlbnRs
eSwgdGhlIGd0ZXN0LmZyYW1ld29yayBkaXNjdXNzZWQgaGVyZSBpc24ndCBhdmFpbGFibGUgaW4g
YSB0YWdnZWQgcmVsZWFzZSBvZiBHb29nbGUgVGVzdCwgaXQgaXMgb25seSBhdmFpbGFibGUgaW4g
dGhlIHRydW5rLiBBcyBleHBsYWluZWQgYXQgdGhlIEdvb2dsZSBUZXN0IFtzaXRlXShodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9zb3VyY2UvY2hlY2tvdXQiPnN2biksIHlvdSBj
YW4gZ2V0IHRoZSBjb2RlIGZyb20gYW5vbnltb3VzIFNWTiB3aXRoIHRoaXMgY29tbWFuZDoKLQot
YGBgCi1zdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3Ry
dW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seQotYGBgCi0KLUFsdGVybmF0aXZlbHksIGlmIHlvdSBh
cmUgd29ya2luZyB3aXRoIFN1YnZlcnNpb24gaW4geW91ciBvd24gY29kZSBiYXNlLCB5b3UgY2Fu
IGFkZCBHb29nbGUgVGVzdCBhcyBhbiBleHRlcm5hbCBkZXBlbmRlbmN5IHRvIHlvdXIgb3duIFN1
YnZlcnNpb24gcmVwb3NpdG9yeS4gQnkgZm9sbG93aW5nIHRoaXMgYXBwcm9hY2gsIGV2ZXJ5b25l
IHRoYXQgY2hlY2tzIG91dCB5b3VyIHN2biByZXBvc2l0b3J5IHdpbGwgYWxzbyByZWNlaXZlIGEg
Y29weSBvZiBHb29nbGUgVGVzdCAoYSBzcGVjaWZpYyB2ZXJzaW9uLCBpZiB5b3Ugd2lzaCkgd2l0
aG91dCBoYXZpbmcgdG8gY2hlY2sgaXQgb3V0IGV4cGxpY2l0bHkuIFRoaXMgbWFrZXMgdGhlIHNl
dCB1cCBvZiB5b3VyIHByb2plY3Qgc2ltcGxlciBhbmQgcmVkdWNlcyB0aGUgY29waWVkIGNvZGUg
aW4gdGhlIHJlcG9zaXRvcnkuCi0KLVRvIHVzZSBgc3ZuOmV4dGVybmFsc2AsIGRlY2lkZSB3aGVy
ZSB5b3Ugd291bGQgbGlrZSB0byBoYXZlIHRoZSBleHRlcm5hbCBzb3VyY2UgcmVzaWRlLiBZb3Ug
bWlnaHQgY2hvb3NlIHRvIHB1dCB0aGUgZXh0ZXJuYWwgc291cmNlIGluc2lkZSB0aGUgdHJ1bmss
IGJlY2F1c2UgeW91IHdhbnQgaXQgdG8gYmUgcGFydCBvZiB0aGUgYnJhbmNoIHdoZW4geW91IG1h
a2UgYSByZWxlYXNlLiBIb3dldmVyLCBrZWVwaW5nIGl0IG91dHNpZGUgdGhlIHRydW5rIGluIGEg
dmVyc2lvbi10YWdnZWQgZGlyZWN0b3J5IGNhbGxlZCBzb21ldGhpbmcgbGlrZSBgdGhpcmQtcGFy
dHkvZ29vZ2xldGVzdC8xLjAuMWAsIGlzIGFub3RoZXIgb3B0aW9uLiBPbmNlIHRoZSBsb2NhdGlv
biBpcyBlc3RhYmxpc2hlZCwgdXNlIGBzdm4gcHJvcGVkaXQgc3ZuOmV4dGVybmFscyBfZGlyZWN0
b3J5X2AgdG8gc2V0IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IG9uIGEgZGlyZWN0b3J5IGlu
IHlvdXIgcmVwb3NpdG9yeS4gVGhpcyBkaXJlY3Rvcnkgd29uJ3QgY29udGFpbiB0aGUgY29kZSwg
YnV0IGJlIGl0cyB2ZXJzaW9uZWQgcGFyZW50IGRpcmVjdG9yeS4KLQotVGhlIGNvbW1hbmQgYHN2
biBwcm9wZWRpdGAgd2lsbCBicmluZyB1cCB5b3VyIFN1YnZlcnNpb24gZWRpdG9yLCBtYWtpbmcg
ZWRpdGluZyB0aGUgbG9uZywgKHBvdGVudGlhbGx5IG11bHRpLWxpbmUpIHByb3BlcnR5IHNpbXBs
ZXIuIFRoaXMgc2FtZSBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hlY2sgb3V0IGEgdGFnZ2VkIGJy
YW5jaCwgYnkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFVSTCAoZS5nLiBgaHR0cDovL2dvb2dsZXRl
c3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RhZ3MvcmVsZWFzZS0xLjAuMWApLiBBZGRpdGlvbmFsbHks
IHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnR5IGFsbG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZiBh
IHBhcnRpY3VsYXIgcmV2aXNpb24gb2YgdGhlIHRydW5rIHdpdGggdGhlIGAtcl8jI19gIG9wdGlv
biAoZS5nLiBgZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IC1yNjAgaHR0cDovL2dvb2dsZXRlc3Qu
Z29vZ2xlY29kZS5jb20vc3ZuL3RydW5rYCkuCi0KLUhlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2lu
ZyB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0aWVzIG9uIGEgdHJ1bmsgKHJlYWQgdmlhIGBzdm4g
cHJvcGdldGApIG9mIGEgcHJvamVjdC4gVGhpcyB2YWx1ZSBjaGVja3Mgb3V0IGEgY29weSBvZiBH
b29nbGUgVGVzdCBpbnRvIHRoZSBgdHJ1bmsvZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0L2AgZGly
ZWN0b3J5LgotCi1gYGAKLVtDb21wdXRlcjpzdm5dIHVzZXIkIHN2biBwcm9wZ2V0IHN2bjpleHRl
cm5hbHMgdHJ1bmsKLWV4dGVybmFscy9zcmMvZ29vZ2xldGVzdCBodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsKLWBgYAotCi0jIEFkZCB0aGUgRnJhbWV3b3JrIHRvIFlv
dXIgUHJvamVjdCAjCi0KLVRoZSBuZXh0IHN0ZXAgaXMgdG8gYnVpbGQgYW5kIGFkZCB0aGUgZ3Rl
c3QuZnJhbWV3b3JrIHRvIHlvdXIgb3duIHByb2plY3QuIFRoaXMgZ3VpZGUgZGVzY3JpYmVzIHR3
byBjb21tb24gd2F5cyBiZWxvdy4KLQotICAqICoqT3B0aW9uIDEqKiAtLS0gVGhlIHNpbXBsZXN0
IHdheSB0byBhZGQgR29vZ2xlIFRlc3QgdG8geW91ciBvd24gcHJvamVjdCwgaXMgdG8gb3BlbiBn
dGVzdC54Y29kZXByb2ogKGZvdW5kIGluIHRoZSB4Y29kZS8gZGlyZWN0b3J5IG9mIHRoZSBHb29n
bGUgVGVzdCB0cnVuaykgYW5kIGJ1aWxkIHRoZSBmcmFtZXdvcmsgbWFudWFsbHkuIFRoZW4sIGFk
ZCB0aGUgYnVpbHQgZnJhbWV3b3JrIGludG8geW91ciBwcm9qZWN0IHVzaW5nIHRoZSAiQWRkLT5F
eGlzdGluZyBGcmFtZXdvcmsuLi4iIGZyb20gdGhlIGNvbnRleHQgbWVudSBvciAiUHJvamVjdC0+
QWRkLi4uIiBmcm9tIHRoZSBtYWluIG1lbnUuIFRoZSBndGVzdC5mcmFtZXdvcmsgaXMgcmVsb2Nh
dGFibGUgYW5kIGNvbnRhaW5zIHRoZSBoZWFkZXJzIGFuZCBvYmplY3QgY29kZSB0aGF0IHlvdSds
bCBuZWVkIHRvIG1ha2UgdGVzdHMuIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHJlYnVpbGRpbmcgZXZl
cnkgdGltZSB5b3UgdXBncmFkZSBHb29nbGUgVGVzdCBpbiB5b3VyIHByb2plY3QuCi0gICogKipP
cHRpb24gMioqIC0tLSBJZiB5b3UgYXJlIGdvaW5nIHRvIGJlIGxpdmluZyBvZmYgdGhlIHRydW5r
IG9mIEdvb2dsZSBUZXN0LCBpbmNvcnBvcmF0aW5nIGl0cyBsYXRlc3QgZmVhdHVyZXMgaW50byB5
b3VyIHVuaXQgdGVzdHMgKG9yIGFyZSBhIEdvb2dsZSBUZXN0IGRldmVsb3BlciB5b3Vyc2VsZiku
IFlvdSdsbCB3YW50IHRvIHJlYnVpbGQgdGhlIGZyYW1ld29yayBldmVyeSB0aW1lIHRoZSBzb3Vy
Y2UgdXBkYXRlcy4gdG8gZG8gdGhpcywgeW91J2xsIG5lZWQgdG8gYWRkIHRoZSBndGVzdC54Y29k
ZXByb2ogZmlsZSwgbm90IHRoZSBmcmFtZXdvcmsgaXRzZWxmLCB0byB5b3VyIG93biBYY29kZSBw
cm9qZWN0LiBUaGVuLCBmcm9tIHRoZSBidWlsZCBwcm9kdWN0cyB0aGF0IGFyZSByZXZlYWxlZCBi
eSB0aGUgcHJvamVjdCdzIGRpc2Nsb3N1cmUgdHJpYW5nbGUsIHlvdSBjYW4gZmluZCB0aGUgZ3Rl
c3QuZnJhbWV3b3JrLCB3aGljaCBjYW4gYmUgYWRkZWQgdG8geW91ciB0YXJnZXRzIChkaXNjdXNz
ZWQgYmVsb3cpLgotCi0jIE1ha2UgYSBUZXN0IFRhcmdldCAjCi0KLVRvIHN0YXJ0IHdyaXRpbmcg
dGVzdHMsIG1ha2UgYSBuZXcgIlNoZWxsIFRvb2wiIHRhcmdldC4gVGhpcyB0YXJnZXQgdGVtcGxh
dGUgaXMgYXZhaWxhYmxlIHVuZGVyIEJTRCwgQ29jb2EsIG9yIENhcmJvbi4gQWRkIHlvdXIgdW5p
dCB0ZXN0IHNvdXJjZSBjb2RlIHRvIHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBv
ZiB0aGUgdGFyZ2V0LgotCi1OZXh0LCB5b3UnbGwgd2FudCB0byBhZGQgZ3Rlc3QuZnJhbWV3b3Jr
IGluIHR3byBkaWZmZXJlbnQgd2F5cywgZGVwZW5kaW5nIHVwb24gd2hpY2ggb3B0aW9uIHlvdSBj
aG9zZSBhYm92ZS4KLQotICAqICoqT3B0aW9uIDEqKiAtLS0gRHVyaW5nIGNvbXBpbGF0aW9uLCBY
Y29kZSB3aWxsIG5lZWQgdG8ga25vdyB0aGF0IHlvdSBhcmUgbGlua2luZyBhZ2FpbnN0IHRoZSBn
dGVzdC5mcmFtZXdvcmsuIEFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIHRvIHRoZSAiTGluayBCaW5h
cnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIFRoaXMg
d2lsbCBpbmNsdWRlIHRoZSBHb29nbGUgVGVzdCBoZWFkZXJzIGluIHlvdXIgaGVhZGVyIHNlYXJj
aCBwYXRoLCBhbmQgd2lsbCB0ZWxsIHRoZSBsaW5rZXIgd2hlcmUgdG8gZmluZCB0aGUgbGlicmFy
eS4KLSAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdXIgd29ya2luZyBvdXQgb2YgdGhlIHRydW5r
LCB5b3UnbGwgYWxzbyB3YW50IHRvIGFkZCBndGVzdC5mcmFtZXdvcmsgdG8geW91ciAiTGluayBC
aW5hcnkgd2l0aCBMaWJyYXJpZXMiIGJ1aWxkIHBoYXNlIG9mIHlvdXIgdGVzdCB0YXJnZXQuIElu
IGFkZGl0aW9uLCB5b3UnbGwgIHdhbnQgdG8gYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgYXMgYSBk
ZXBlbmRlbmN5IHRvIHlvdXIgdW5pdCB0ZXN0IHRhcmdldC4gVGhpcyB3YXksIFhjb2RlIHdpbGwg
bWFrZSBzdXJlIHRoYXQgZ3Rlc3QuZnJhbWV3b3JrIGlzIHVwIHRvIGRhdGUsIGV2ZXJ5IHRpbWUg
eW91ciBidWlsZCB5b3VyIHRhcmdldC4gRmluYWxseSwgaWYgeW91IGRvbid0IHNoYXJlIGJ1aWxk
IGRpcmVjdG9yaWVzIHdpdGggR29vZ2xlIFRlc3QsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlIGd0
ZXN0LmZyYW1ld29yayBpbnRvIHlvdXIgb3duIGJ1aWxkIHByb2R1Y3RzIGRpcmVjdG9yeSB1c2lu
ZyBhICJSdW4gU2NyaXB0IiBidWlsZCBwaGFzZS4KLQotIyBTZXQgVXAgdGhlIEV4ZWN1dGFibGUg
UnVuIEVudmlyb25tZW50ICMKLQotU2luY2UgdGhlIHVuaXQgdGVzdCBleGVjdXRhYmxlIGlzIGEg
c2hlbGwgdG9vbCwgaXQgZG9lc24ndCBoYXZlIGEgYnVuZGxlIHdpdGggYSBgQ29udGVudHMvRnJh
bWV3b3Jrc2AgZGlyZWN0b3J5LCBpbiB3aGljaCB0byBwbGFjZSBndGVzdC5mcmFtZXdvcmsuIElu
c3RlYWQsIHRoZSBkeW5hbWljIGxpbmtlciBtdXN0IGJlIHRvbGQgYXQgcnVudGltZSB0byBzZWFy
Y2ggZm9yIHRoZSBmcmFtZXdvcmsgaW4gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBjYW4gYmUgYWNj
b21wbGlzaGVkIGJ5IHNldHRpbmcgdGhlICJEWUxEXF9GUkFNRVdPUktcX1BBVEgiIGVudmlyb25t
ZW50IHZhcmlhYmxlIGluIHRoZSAiRWRpdCBBY3RpdmUgRXhlY3V0YWJsZSAuLi4iIEFyZ3VtZW50
cyB0YWIsIHVuZGVyICJWYXJpYWJsZXMgdG8gYmUgc2V0IGluIHRoZSBlbnZpcm9ubWVudDoiLiBU
aGUgcGF0aCBmb3IgdGhpcyB2YWx1ZSBpcyB0aGUgcGF0aCAocmVsYXRpdmUgb3IgYWJzb2x1dGUp
IG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3JrLgotCi1JZiB5
b3UgaGF2ZW4ndCBzZXQgdXAgdGhlIERZTERcX0ZSQU1FV09SS1xfUEFUSCwgY29ycmVjdGx5LCB5
b3UgbWlnaHQgZ2V0IGEgbWVzc2FnZSBsaWtlIHRoaXM6Ci0KLWBgYAotW1Nlc3Npb24gc3RhcnRl
ZCBhdCAyMDA4LTA4LTE1IDA2OjIzOjU3IC0wNjAwLl0KLSAgZHlsZDogTGlicmFyeSBub3QgbG9h
ZGVkOiBAbG9hZGVyX3BhdGgvLi4vRnJhbWV3b3Jrcy9ndGVzdC5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9ndGVzdAotICAgIFJlZmVyZW5jZWQgZnJvbTogL1VzZXJzL3VzZXJuYW1lL0RvY3VtZW50cy9T
YW5kYm94L2d0ZXN0U2FtcGxlL2J1aWxkL0RlYnVnL1dpZGdldEZyYW1ld29ya1Rlc3QKLSAgICBS
ZWFzb246IGltYWdlIG5vdCBmb3VuZAotYGBgCi0KLVRvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLCBn
b3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIG5hbWVkIGluICJS
ZWZlcmVuY2VkIGZyb206IiB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBhYm92ZS4gVGhlbiwg
d2l0aCB0aGUgdGVybWluYWwgaW4gdGhpcyBsb2NhdGlvbiwgZmluZCB0aGUgcmVsYXRpdmUgcGF0
aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGd0ZXN0LmZyYW1ld29yay4gVGhhdCBp
cyB0aGUgdmFsdWUgeW91J2xsIG5lZWQgdG8gc2V0IGFzIHRoZSBEWUxEXF9GUkFNRVdPUktcX1BB
VEguCi0KLSMgQnVpbGQgYW5kIEdvICMKLQotTm93LCB3aGVuIHlvdSBjbGljayAiQnVpbGQgYW5k
IEdvIiwgdGhlIHRlc3Qgd2lsbCBiZSBleGVjdXRlZC4gRHVtcGluZyBvdXQgc29tZXRoaW5nIGxp
a2UgdGhpczoKLQotYGBgCi1bU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMDYgMDY6MzY6MTMg
LTA2MDAuXQotWz09PT09PT09PT1dIFJ1bm5pbmcgMiB0ZXN0cyBmcm9tIDEgdGVzdCBjYXNlLgot
Wy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0t
XSAyIHRlc3RzIGZyb20gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0Ci1bIFJVTiAgICAgIF0gV2lkZ2V0
SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyAgICAgICBPSyBdIFdpZGdldEluaXRp
YWxpemVyVGVzdC5UZXN0Q29uc3RydWN0b3IKLVsgUlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXpl
clRlc3QuVGVzdENvbnZlcnNpb24KLVsgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3Qu
VGVzdENvbnZlcnNpb24KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFy
LWRvd24KLVs9PT09PT09PT09XSAyIHRlc3RzIGZyb20gMSB0ZXN0IGNhc2UgcmFuLgotWyAgUEFT
U0VEICBdIDIgdGVzdHMuCi0KLVRoZSBEZWJ1Z2dlciBoYXMgZXhpdGVkIHdpdGggc3RhdHVzIDAu
ICAKLWBgYAotCi0jIFN1bW1hcnkgIwotCi1Vbml0IHRlc3RpbmcgaXMgYSB2YWx1YWJsZSB3YXkg
dG8gZW5zdXJlIHlvdXIgZGF0YSBtb2RlbCBzdGF5cyB2YWxpZCBldmVuIGR1cmluZyByYXBpZCBk
ZXZlbG9wbWVudCBvciByZWZhY3RvcmluZy4gVGhlIEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBp
cyBhIGdyZWF0IHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgYW5kIEMrKyB3aGljaCBpbnRl
Z3JhdGVzIHdlbGwgd2l0aCBhbiBYY29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdf
QWR2YW5jZWRHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19BZHZhbmNlZEd1aWRlLm1k
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDRhZjhmMzY2YWEuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfQWR2YW5jZWRHdWlkZS5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDIxODEgKzAsMCBAQAotCi0KLU5vdyB0aGF0IHlvdSBoYXZlIHJlYWQgW1ByaW1l
cl0oVjFfN19QcmltZXIubWQpIGFuZCBsZWFybmVkIGhvdyB0byB3cml0ZSB0ZXN0cwotdXNpbmcg
R29vZ2xlIFRlc3QsIGl0J3MgdGltZSB0byBsZWFybiBzb21lIG5ldyB0cmlja3MuIFRoaXMgZG9j
dW1lbnQKLXdpbGwgc2hvdyB5b3UgbW9yZSBhc3NlcnRpb25zIGFzIHdlbGwgYXMgaG93IHRvIGNv
bnN0cnVjdCBjb21wbGV4Ci1mYWlsdXJlIG1lc3NhZ2VzLCBwcm9wYWdhdGUgZmF0YWwgZmFpbHVy
ZXMsIHJldXNlIGFuZCBzcGVlZCB1cCB5b3VyCi10ZXN0IGZpeHR1cmVzLCBhbmQgdXNlIHZhcmlv
dXMgZmxhZ3Mgd2l0aCB5b3VyIHRlc3RzLgotCi0jIE1vcmUgQXNzZXJ0aW9ucyAjCi0KLVRoaXMg
c2VjdGlvbiBjb3ZlcnMgc29tZSBsZXNzIGZyZXF1ZW50bHkgdXNlZCwgYnV0IHN0aWxsIHNpZ25p
ZmljYW50LAotYXNzZXJ0aW9ucy4KLQotIyMgRXhwbGljaXQgU3VjY2VzcyBhbmQgRmFpbHVyZSAj
IwotCi1UaGVzZSB0aHJlZSBhc3NlcnRpb25zIGRvIG5vdCBhY3R1YWxseSB0ZXN0IGEgdmFsdWUg
b3IgZXhwcmVzc2lvbi4gSW5zdGVhZCwKLXRoZXkgZ2VuZXJhdGUgYSBzdWNjZXNzIG9yIGZhaWx1
cmUgZGlyZWN0bHkuIExpa2UgdGhlIG1hY3JvcyB0aGF0IGFjdHVhbGx5Ci1wZXJmb3JtIGEgdGVz
dCwgeW91IG1heSBzdHJlYW0gYSBjdXN0b20gZmFpbHVyZSBtZXNzYWdlIGludG8gdGhlIHRoZW0u
Ci0KLXwgYFNVQ0NFRUQoKTtgIHwKLXw6LS0tLS0tLS0tLS0tLXwKLQotR2VuZXJhdGVzIGEgc3Vj
Y2Vzcy4gVGhpcyBkb2VzIE5PVCBtYWtlIHRoZSBvdmVyYWxsIHRlc3Qgc3VjY2VlZC4gQSB0ZXN0
IGlzCi1jb25zaWRlcmVkIHN1Y2Nlc3NmdWwgb25seSBpZiBub25lIG9mIGl0cyBhc3NlcnRpb25z
IGZhaWwgZHVyaW5nIGl0cyBleGVjdXRpb24uCi0KLU5vdGU6IGBTVUNDRUVEKClgIGlzIHB1cmVs
eSBkb2N1bWVudGFyeSBhbmQgY3VycmVudGx5IGRvZXNuJ3QgZ2VuZXJhdGUgYW55Ci11c2VyLXZp
c2libGUgb3V0cHV0LiBIb3dldmVyLCB3ZSBtYXkgYWRkIGBTVUNDRUVEKClgIG1lc3NhZ2VzIHRv
IEdvb2dsZSBUZXN0J3MKLW91dHB1dCBpbiB0aGUgZnV0dXJlLgotCi18IGBGQUlMKCk7YCAgfCBg
QUREX0ZBSUxVUkUoKTtgIHwgYEFERF9GQUlMVVJFX0FUKCJgX2ZpbGVcX3BhdGhfYCIsIGBfbGlu
ZVxfbnVtYmVyX2ApO2AgfAotfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotYEZB
SUwoKWAgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSwgd2hpbGUgYEFERF9GQUlMVVJFKClgIGFu
ZCBgQUREX0ZBSUxVUkVfQVQoKWAgZ2VuZXJhdGUgYSBub25mYXRhbAotZmFpbHVyZS4gVGhlc2Ug
YXJlIHVzZWZ1bCB3aGVuIGNvbnRyb2wgZmxvdywgcmF0aGVyIHRoYW4gYSBCb29sZWFuIGV4cHJl
c3Npb24sCi1kZXRlcmVtaW5lcyB0aGUgdGVzdCdzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gRm9yIGV4
YW1wbGUsIHlvdSBtaWdodCB3YW50IHRvIHdyaXRlCi1zb21ldGhpbmcgbGlrZToKLQotYGBgCi1z
d2l0Y2goZXhwcmVzc2lvbikgewotICBjYXNlIDE6IC4uLiBzb21lIGNoZWNrcyAuLi4KLSAgY2Fz
ZSAyOiAuLi4gc29tZSBvdGhlciBjaGVja3MKLSAgLi4uCi0gIGRlZmF1bHQ6IEZBSUwoKSA8PCAi
V2Ugc2hvdWxkbid0IGdldCBoZXJlLiI7Ci19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWMuCi0KLSMjIEV4Y2VwdGlvbiBBc3NlcnRpb25zICMjCi0KLVRoZXNlIGFy
ZSBmb3IgdmVyaWZ5aW5nIHRoYXQgYSBwaWVjZSBvZiBjb2RlIHRocm93cyAob3IgZG9lcyBub3QK
LXRocm93KSBhbiBleGNlcHRpb24gb2YgdGhlIGdpdmVuIHR5cGU6Ci0KLXwgKipGYXRhbCBhc3Nl
cnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0t
LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18
Ci18IGBBU1NFUlRfVEhST1coYF9zdGF0ZW1lbnRfLCBfZXhjZXB0aW9uXF90eXBlX2ApO2AgIHwg
YEVYUEVDVF9USFJPVyhgX3N0YXRlbWVudF8sIF9leGNlcHRpb25cX3R5cGVfYCk7YCAgfCBfc3Rh
dGVtZW50XyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHRoZSBnaXZlbiB0eXBlICB8Ci18IGBBU1NF
UlRfQU5ZX1RIUk9XKGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgfCBgRVhQRUNUX0FO
WV9USFJPVyhgX3N0YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgIHwgX3N0YXRlbWVudF8gdGhy
b3dzIGFuIGV4Y2VwdGlvbiBvZiBhbnkgdHlwZSAgICAgICAgfAotfCBgQVNTRVJUX05PX1RIUk9X
KGBfc3RhdGVtZW50X2ApO2AgICAgICAgICAgICAgICAgIHwgYEVYUEVDVF9OT19USFJPVyhgX3N0
YXRlbWVudF9gKTtgICAgICAgICAgICAgICAgICB8IF9zdGF0ZW1lbnRfIGRvZXNuJ3QgdGhyb3cg
YW55IGV4Y2VwdGlvbiAgICAgICAgICAgIHwKLQotRXhhbXBsZXM6Ci0KLWBgYAotQVNTRVJUX1RI
Uk9XKEZvbyg1KSwgYmFyX2V4Y2VwdGlvbik7Ci0KLUVYUEVDVF9OT19USFJPVyh7Ci0gIGludCBu
ID0gNTsKLSAgQmFyKCZuKTsKLX0pOwotYGBgCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2lu
ZG93cywgTWFjOyBzaW5jZSB2ZXJzaW9uIDEuMS4wLgotCi0jIyBQcmVkaWNhdGUgQXNzZXJ0aW9u
cyBmb3IgQmV0dGVyIEVycm9yIE1lc3NhZ2VzICMjCi0KLUV2ZW4gdGhvdWdoIEdvb2dsZSBUZXN0
IGhhcyBhIHJpY2ggc2V0IG9mIGFzc2VydGlvbnMsIHRoZXkgY2FuIG5ldmVyIGJlCi1jb21wbGV0
ZSwgYXMgaXQncyBpbXBvc3NpYmxlIChub3IgYSBnb29kIGlkZWEpIHRvIGFudGljaXBhdGUgYWxs
IHRoZSBzY2VuYXJpb3MKLWEgdXNlciBtaWdodCBydW4gaW50by4gVGhlcmVmb3JlLCBzb21ldGlt
ZXMgYSB1c2VyIGhhcyB0byB1c2UgYEVYUEVDVF9UUlVFKClgCi10byBjaGVjayBhIGNvbXBsZXgg
ZXhwcmVzc2lvbiwgZm9yIGxhY2sgb2YgYSBiZXR0ZXIgbWFjcm8uIFRoaXMgaGFzIHRoZSBwcm9i
bGVtCi1vZiBub3Qgc2hvd2luZyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgcGFydHMgb2YgdGhlIGV4
cHJlc3Npb24sIG1ha2luZyBpdCBoYXJkIHRvCi11bmRlcnN0YW5kIHdoYXQgd2VudCB3cm9uZy4g
QXMgYSB3b3JrYXJvdW5kLCBzb21lIHVzZXJzIGNob29zZSB0byBjb25zdHJ1Y3QgdGhlCi1mYWls
dXJlIG1lc3NhZ2UgYnkgdGhlbXNlbHZlcywgc3RyZWFtaW5nIGl0IGludG8gYEVYUEVDVF9UUlVF
KClgLiBIb3dldmVyLCB0aGlzCi1pcyBhd2t3YXJkIGVzcGVjaWFsbHkgd2hlbiB0aGUgZXhwcmVz
c2lvbiBoYXMgc2lkZS1lZmZlY3RzIG9yIGlzIGV4cGVuc2l2ZSB0bwotZXZhbHVhdGUuCi0KLUdv
b2dsZSBUZXN0IGdpdmVzIHlvdSB0aHJlZSBkaWZmZXJlbnQgb3B0aW9ucyB0byBzb2x2ZSB0aGlz
IHByb2JsZW06Ci0KLSMjIyBVc2luZyBhbiBFeGlzdGluZyBCb29sZWFuIEZ1bmN0aW9uICMjIwot
Ci1JZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnVuY3Rpb24gb3IgYSBmdW5jdG9yIHRoYXQgcmV0dXJu
cyBgYm9vbGAgKG9yIGEgdHlwZQotdGhhdCBjYW4gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8g
YGJvb2xgKSwgeW91IGNhbiB1c2UgaXQgaW4gYSBfcHJlZGljYXRlCi1hc3NlcnRpb25fIHRvIGdl
dCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzIHByaW50ZWQgZm9yIGZyZWU6Ci0KLXwgKipGYXRhbCBh
c3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0t
LS18Ci18IGBBU1NFUlRfUFJFRDEoYF9wcmVkMSwgdmFsMV9gKTtgICAgICAgIHwgYEVYUEVDVF9Q
UkVEMShgX3ByZWQxLCB2YWwxX2ApO2AgfCBfcHJlZDEodmFsMSlfIHJldHVybnMgdHJ1ZSB8Ci18
IGBBU1NFUlRfUFJFRDIoYF9wcmVkMiwgdmFsMSwgdmFsMl9gKTtgIHwgYEVYUEVDVF9QUkVEMihg
X3ByZWQyLCB2YWwxLCB2YWwyX2ApO2AgfCAgX3ByZWQyKHZhbDEsIHZhbDIpXyByZXR1cm5zIHRy
dWUgfAotfCAgLi4uICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICB8IC4u
LiAgICAgICAgICB8Ci0KLUluIHRoZSBhYm92ZSwgX3ByZWRuXyBpcyBhbiBfbl8tYXJ5IHByZWRp
Y2F0ZSBmdW5jdGlvbiBvciBmdW5jdG9yLCB3aGVyZQotX3ZhbDFfLCBfdmFsMl8sIC4uLiwgYW5k
IF92YWxuXyBhcmUgaXRzIGFyZ3VtZW50cy4gVGhlIGFzc2VydGlvbiBzdWNjZWVkcwotaWYgdGhl
IHByZWRpY2F0ZSByZXR1cm5zIGB0cnVlYCB3aGVuIGFwcGxpZWQgdG8gdGhlIGdpdmVuIGFyZ3Vt
ZW50cywgYW5kIGZhaWxzCi1vdGhlcndpc2UuIFdoZW4gdGhlIGFzc2VydGlvbiBmYWlscywgaXQg
cHJpbnRzIHRoZSB2YWx1ZSBvZiBlYWNoIGFyZ3VtZW50LiBJbgotZWl0aGVyIGNhc2UsIHRoZSBh
cmd1bWVudHMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuCi0KLUhlcmUncyBhbiBleGFtcGxl
LiBHaXZlbgotCi1gYGAKLS8vIFJldHVybnMgdHJ1ZSBpZmYgbSBhbmQgbiBoYXZlIG5vIGNvbW1v
biBkaXZpc29ycyBleGNlcHQgMS4KLWJvb2wgTXV0dWFsbHlQcmltZShpbnQgbSwgaW50IG4pIHsg
Li4uIH0KLWNvbnN0IGludCBhID0gMzsKLWNvbnN0IGludCBiID0gNDsKLWNvbnN0IGludCBjID0g
MTA7Ci1gYGAKLQotdGhlIGFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11dHVhbGx5UHJpbWUsIGEs
IGIpO2Agd2lsbCBzdWNjZWVkLCB3aGlsZSB0aGUKLWFzc2VydGlvbiBgRVhQRUNUX1BSRUQyKE11
dHVhbGx5UHJpbWUsIGIsIGMpO2Agd2lsbCBmYWlsIHdpdGggdGhlIG1lc3NhZ2UKLQotPHByZT4K
LSFNdXR1YWxseVByaW1lKGIsIGMpIGlzIGZhbHNlLCB3aGVyZTxicj4KLWIgaXMgNDxicj4KLWMg
aXMgMTA8YnI+Ci08L3ByZT4KLQotKipOb3RlczoqKgotCi0gIDEuIElmIHlvdSBzZWUgYSBjb21w
aWxlciBlcnJvciAibm8gbWF0Y2hpbmcgZnVuY3Rpb24gdG8gY2FsbCIgd2hlbiB1c2luZyBgQVNT
RVJUX1BSRUQqYCBvciBgRVhQRUNUX1BSRUQqYCwgcGxlYXNlIHNlZSBbdGhpc10oVjFfN19GQVEu
bWQjdGhlLWNvbXBpbGVyLWNvbXBsYWlucy1hYm91dC11bmRlZmluZWQtcmVmZXJlbmNlcy10by1z
b21lLXN0YXRpYy1jb25zdC1tZW1iZXItdmFyaWFibGVzLWJ1dC1pLWRpZC1kZWZpbmUtdGhlbS1p
bi10aGUtY2xhc3MtYm9keS13aGF0cy13cm9uZykgZm9yIGhvdyB0byByZXNvbHZlIGl0LgotICAx
LiBDdXJyZW50bHkgd2Ugb25seSBwcm92aWRlIHByZWRpY2F0ZSBhc3NlcnRpb25zIG9mIGFyaXR5
IDw9IDUuIElmIHlvdSBuZWVkIGEgaGlnaGVyLWFyaXR5IGFzc2VydGlvbiwgbGV0IHVzIGtub3cu
Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjCi0KLSMjIyBVc2luZyBhIEZ1
bmN0aW9uIFRoYXQgUmV0dXJucyBhbiBBc3NlcnRpb25SZXN1bHQgIyMjCi0KLVdoaWxlIGBFWFBF
Q1RfUFJFRCooKWAgYW5kIGZyaWVuZHMgYXJlIGhhbmR5IGZvciBhIHF1aWNrIGpvYiwgdGhlCi1z
eW50YXggaXMgbm90IHNhdGlzZmFjdG9yeTogeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBtYWNy
b3MgZm9yCi1kaWZmZXJlbnQgYXJpdGllcywgYW5kIGl0IGZlZWxzIG1vcmUgbGlrZSBMaXNwIHRo
YW4gQysrLiAgVGhlCi1gOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHRgIGNsYXNzIHNvbHZlcyB0
aGlzIHByb2JsZW0uCi0KLUFuIGBBc3NlcnRpb25SZXN1bHRgIG9iamVjdCByZXByZXNlbnRzIHRo
ZSByZXN1bHQgb2YgYW4gYXNzZXJ0aW9uCi0od2hldGhlciBpdCdzIGEgc3VjY2VzcyBvciBhIGZh
aWx1cmUsIGFuZCBhbiBhc3NvY2lhdGVkIG1lc3NhZ2UpLiAgWW91Ci1jYW4gY3JlYXRlIGFuIGBB
c3NlcnRpb25SZXN1bHRgIHVzaW5nIG9uZSBvZiB0aGVzZSBmYWN0b3J5Ci1mdW5jdGlvbnM6Ci0K
LWBgYAotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBSZXR1cm5zIGFuIEFzc2VydGlvblJlc3Vs
dCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0vLyBzdWNjZWVkZWQu
Ci1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0vLyBSZXR1cm5zIGFuIEFz
c2VydGlvblJlc3VsdCBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBhbiBhc3NlcnRpb24gaGFzCi0v
LyBmYWlsZWQuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwotCi19Ci1gYGAK
LQotWW91IGNhbiB0aGVuIHVzZSB0aGUgYDw8YCBvcGVyYXRvciB0byBzdHJlYW0gbWVzc2FnZXMg
dG8gdGhlCi1gQXNzZXJ0aW9uUmVzdWx0YCBvYmplY3QuCi0KLVRvIHByb3ZpZGUgbW9yZSByZWFk
YWJsZSBtZXNzYWdlcyBpbiBCb29sZWFuIGFzc2VydGlvbnMKLShlLmcuIGBFWFBFQ1RfVFJVRSgp
YCksIHdyaXRlIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucwotYEFzc2VydGlvblJl
c3VsdGAgaW5zdGVhZCBvZiBgYm9vbGAuIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lCi1gSXNF
dmVuKClgIGFzOgotCi1gYGAKLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQg
bikgewotICBpZiAoKG4gJSAyKSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlv
blN1Y2Nlc3MoKTsKLSAgZWxzZQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1
cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKLX0KLWBgYAotCi1pbnN0ZWFkIG9mOgotCi1gYGAKLWJv
b2wgSXNFdmVuKGludCBuKSB7Ci0gIHJldHVybiAobiAlIDIpID09IDA7Ci19Ci1gYGAKLQotdGhl
IGZhaWxlZCBhc3NlcnRpb24gYEVYUEVDVF9UUlVFKElzRXZlbihGaWIoNCkpKWAgd2lsbCBwcmlu
dDoKLQotPHByZT4KLVZhbHVlIG9mOiBJc0V2ZW4oRmliKDQpKTxicj4KLUFjdHVhbDogZmFsc2Ug
KCozIGlzIG9kZCopPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotaW5zdGVhZCBv
ZiBhIG1vcmUgb3BhcXVlCi0KLTxwcmU+Ci1WYWx1ZSBvZjogSXNFdmVuKEZpYig0KSk8YnI+Ci1B
Y3R1YWw6IGZhbHNlPGJyPgotRXhwZWN0ZWQ6IHRydWU8YnI+Ci08L3ByZT4KLQotSWYgeW91IHdh
bnQgaW5mb3JtYXRpdmUgbWVzc2FnZXMgaW4gYEVYUEVDVF9GQUxTRWAgYW5kIGBBU1NFUlRfRkFM
U0VgCi1hcyB3ZWxsLCBhbmQgYXJlIGZpbmUgd2l0aCBtYWtpbmcgdGhlIHByZWRpY2F0ZSBzbG93
ZXIgaW4gdGhlIHN1Y2Nlc3MKLWNhc2UsIHlvdSBjYW4gc3VwcGx5IGEgc3VjY2VzcyBtZXNzYWdl
OgotCi1gYGAKLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IElzRXZlbihpbnQgbikgewotICBp
ZiAoKG4gJSAyKSA9PSAwKQotICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KSA8PCBuIDw8ICIgaXMgZXZlbiI7Ci0gIGVsc2UKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7Ci19Ci1gYGAKLQotVGhlbiB0aGUgc3Rh
dGVtZW50IGBFWFBFQ1RfRkFMU0UoSXNFdmVuKEZpYig2KSkpYCB3aWxsIHByaW50Ci0KLTxwcmU+
Ci1WYWx1ZSBvZjogSXNFdmVuKEZpYig2KSk8YnI+Ci1BY3R1YWw6IHRydWUgKDggaXMgZXZlbik8
YnI+Ci1FeHBlY3RlZDogZmFsc2U8YnI+Ci08L3ByZT4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4
LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHZlcnNpb24gMS40LjEuCi0KLSMjIyBVc2luZyBhIFByZWRp
Y2F0ZS1Gb3JtYXR0ZXIgIyMjCi0KLUlmIHlvdSBmaW5kIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZ2Vu
ZXJhdGVkIGJ5IGAoQVNTRVJUfEVYUEVDVClfUFJFRCpgIGFuZAotYChBU1NFUlR8RVhQRUNUKV8o
VFJVRXxGQUxTRSlgIHVuc2F0aXNmYWN0b3J5LCBvciBzb21lIGFyZ3VtZW50cyB0byB5b3VyCi1w
cmVkaWNhdGUgZG8gbm90IHN1cHBvcnQgc3RyZWFtaW5nIHRvIGBvc3RyZWFtYCwgeW91IGNhbiBp
bnN0ZWFkIHVzZSB0aGUKLWZvbGxvd2luZyBfcHJlZGljYXRlLWZvcm1hdHRlciBhc3NlcnRpb25z
XyB0byBfZnVsbHlfIGN1c3RvbWl6ZSBob3cgdGhlCi1tZXNzYWdlIGlzIGZvcm1hdHRlZDoKLQot
fCAqKkZhdGFsIGFzc2VydGlvbioqIHwgKipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZp
ZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6
LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VSVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2
YWwxX2ApO2AgICAgICAgIHwgYEVYUEVDVF9QUkVEX0ZPUk1BVDEoYF9wcmVkXF9mb3JtYXQxLCB2
YWwxX2ApOyB8IF9wcmVkXF9mb3JtYXQxKHZhbDEpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYEFTU0VS
VF9QUkVEX0ZPUk1BVDIoYF9wcmVkXF9mb3JtYXQyLCB2YWwxLCB2YWwyX2ApO2AgfCBgRVhQRUNU
X1BSRURfRk9STUFUMihgX3ByZWRcX2Zvcm1hdDIsIHZhbDEsIHZhbDJfYCk7YCB8IF9wcmVkXF9m
b3JtYXQyKHZhbDEsIHZhbDIpXyBpcyBzdWNjZXNzZnVsIHwKLXwgYC4uLmAgICAgICAgICAgICAg
ICB8IGAuLi5gICAgICAgICAgICAgICAgICAgfCBgLi4uYCAgICAgICAgfAotCi1UaGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBwcmV2aW91cyB0d28gZ3JvdXBzIG9mIG1hY3JvcyBp
cyB0aGF0IGluc3RlYWQgb2YKLWEgcHJlZGljYXRlLCBgKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9S
TUFUKmAgdGFrZSBhIF9wcmVkaWNhdGUtZm9ybWF0dGVyXwotKF9wcmVkXF9mb3JtYXRuXyksIHdo
aWNoIGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB3aXRoIHRoZSBzaWduYXR1cmU6Ci0KLWA6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkaWNhdGVGb3JtYXR0ZXJuKGNvbnN0IGNoYXIqIGBf
ZXhwcjFfYCwgY29uc3QgY2hhciogYF9leHByMl9gLCAuLi4gY29uc3QgY2hhciogYF9leHBybl9g
LCBUMSBgX3ZhbDFfYCwgVDIgYF92YWwyX2AsIC4uLiBUbiBgX3ZhbG5fYCk7YAotCi13aGVyZSBf
dmFsMV8sIF92YWwyXywgLi4uLCBhbmQgX3ZhbG5fIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBwcmVk
aWNhdGUKLWFyZ3VtZW50cywgYW5kIF9leHByMV8sIF9leHByMl8sIC4uLiwgYW5kIF9leHBybl8g
YXJlIHRoZSBjb3JyZXNwb25kaW5nCi1leHByZXNzaW9ucyBhcyB0aGV5IGFwcGVhciBpbiB0aGUg
c291cmNlIGNvZGUuIFRoZSB0eXBlcyBgVDFgLCBgVDJgLCAuLi4sIGFuZAotYFRuYCBjYW4gYmUg
ZWl0aGVyIHZhbHVlIHR5cGVzIG9yIHJlZmVyZW5jZSB0eXBlcy4gRm9yIGV4YW1wbGUsIGlmIGFu
Ci1hcmd1bWVudCBoYXMgdHlwZSBgRm9vYCwgeW91IGNhbiBkZWNsYXJlIGl0IGFzIGVpdGhlciBg
Rm9vYCBvciBgY29uc3QgRm9vJmAsCi13aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGUuCi0KLUEgcHJl
ZGljYXRlLWZvcm1hdHRlciByZXR1cm5zIGEgYDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0YCBv
YmplY3QgdG8gaW5kaWNhdGUKLXdoZXRoZXIgdGhlIGFzc2VydGlvbiBoYXMgc3VjY2VlZGVkIG9y
IG5vdC4gVGhlIG9ubHkgd2F5IHRvIGNyZWF0ZSBzdWNoIGFuCi1vYmplY3QgaXMgdG8gY2FsbCBv
bmUgb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnM6Ci0KLUFzIGFuIGV4YW1wbGUsIGxldCdzIGlt
cHJvdmUgdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgd2hpY2gg
dXNlcyBgRVhQRUNUX1BSRUQyKClgOgotCi1gYGAKLS8vIFJldHVybnMgdGhlIHNtYWxsZXN0IHBy
aW1lIGNvbW1vbiBkaXZpc29yIG9mIG0gYW5kIG4sCi0vLyBvciAxIHdoZW4gbSBhbmQgbiBhcmUg
bXV0dWFsbHkgcHJpbWUuCi1pbnQgU21hbGxlc3RQcmltZUNvbW1vbkRpdmlzb3IoaW50IG0sIGlu
dCBuKSB7IC4uLiB9Ci0KLS8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmb3IgYXNzZXJ0aW5nIHRo
YXQgdHdvIGludGVnZXJzIGFyZSBtdXR1YWxseSBwcmltZS4KLTo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IEFzc2VydE11dHVhbGx5UHJpbWUoY29uc3QgY2hhciogbV9leHByLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuX2V4cHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbikgewot
ICBpZiAoTXV0dWFsbHlQcmltZShtLCBuKSkKLSAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0g
ICAgICA8PCBtX2V4cHIgPDwgIiBhbmQgIiA8PCBuX2V4cHIgPDwgIiAoIiA8PCBtIDw8ICIgYW5k
ICIgPDwgbgotICAgICAgPDwgIikgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgIiA8PCAiYXMgdGhl
eSBoYXZlIGEgY29tbW9uIGRpdmlzb3IgIgotICAgICAgPDwgU21hbGxlc3RQcmltZUNvbW1vbkRp
dmlzb3IobSwgbik7Ci19Ci1gYGAKLQotV2l0aCB0aGlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIsIHdl
IGNhbiB1c2UKLQotYGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKEFzc2VydE11dHVhbGx5UHJpbWUs
IGIsIGMpOwotYGBgCi0KLXRvIGdlbmVyYXRlIHRoZSBtZXNzYWdlCi0KLTxwcmU+Ci1iIGFuZCBj
ICg0IGFuZCAxMCkgYXJlIG5vdCBtdXR1YWxseSBwcmltZSwgYXMgdGhleSBoYXZlIGEgY29tbW9u
IGRpdmlzb3IgMi48YnI+Ci08L3ByZT4KLQotQXMgeW91IG1heSBoYXZlIHJlYWxpemVkLCBtYW55
IG9mIHRoZSBhc3NlcnRpb25zIHdlIGludHJvZHVjZWQgZWFybGllciBhcmUKLXNwZWNpYWwgY2Fz
ZXMgb2YgYChFWFBFQ1R8QVNTRVJUKV9QUkVEX0ZPUk1BVCpgLiBJbiBmYWN0LCBtb3N0IG9mIHRo
ZW0gYXJlCi1pbmRlZWQgZGVmaW5lZCB1c2luZyBgKEVYUEVDVHxBU1NFUlQpX1BSRURfRk9STUFU
KmAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi0KLSMjIEZsb2F0
aW5nLVBvaW50IENvbXBhcmlzb24gIyMKLQotQ29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMgaXMgdHJpY2t5LiBEdWUgdG8gcm91bmQtb2ZmIGVycm9ycywgaXQgaXMKLXZlcnkgdW5saWtl
bHkgdGhhdCB0d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgbWF0Y2ggZXhhY3RseS4gVGhlcmVmb3Jl
LAotYEFTU0VSVF9FUWAgJ3MgbmFpdmUgY29tcGFyaXNvbiB1c3VhbGx5IGRvZXNuJ3Qgd29yay4g
QW5kIHNpbmNlIGZsb2F0aW5nLXBvaW50cwotY2FuIGhhdmUgYSB3aWRlIHZhbHVlIHJhbmdlLCBu
byBzaW5nbGUgZml4ZWQgZXJyb3IgYm91bmQgd29ya3MuIEl0J3MgYmV0dGVyIHRvCi1jb21wYXJl
IGJ5IGEgZml4ZWQgcmVsYXRpdmUgZXJyb3IgYm91bmQsIGV4Y2VwdCBmb3IgdmFsdWVzIGNsb3Nl
IHRvIDAgZHVlIHRvCi10aGUgbG9zcyBvZiBwcmVjaXNpb24gdGhlcmUuCi0KLUluIGdlbmVyYWws
IGZvciBmbG9hdGluZy1wb2ludCBjb21wYXJpc29uIHRvIG1ha2Ugc2Vuc2UsIHRoZSB1c2VyIG5l
ZWRzIHRvCi1jYXJlZnVsbHkgY2hvb3NlIHRoZSBlcnJvciBib3VuZC4gSWYgdGhleSBkb24ndCB3
YW50IG9yIGNhcmUgdG8sIGNvbXBhcmluZyBpbgotdGVybXMgb2YgVW5pdHMgaW4gdGhlIExhc3Qg
UGxhY2UgKFVMUHMpIGlzIGEgZ29vZCBkZWZhdWx0LCBhbmQgR29vZ2xlIFRlc3QKLXByb3ZpZGVz
IGFzc2VydGlvbnMgdG8gZG8gdGhpcy4gRnVsbCBkZXRhaWxzIGFib3V0IFVMUHMgYXJlIHF1aXRl
IGxvbmc7IGlmIHlvdQotd2FudCB0byBsZWFybiBtb3JlLCBzZWUKLVt0aGlzIGFydGljbGUgb24g
ZmxvYXQgY29tcGFyaXNvbl0oaHR0cDovL3d3dy5jeWdudXMtc29mdHdhcmUuY29tL3BhcGVycy9j
b21wYXJpbmdmbG9hdHMvY29tcGFyaW5nZmxvYXRzLmh0bSkuCi0KLSMjIyBGbG9hdGluZy1Qb2lu
dCBNYWNyb3MgIyMjCi0KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0
aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfRkxPQVRfRVEoYF9leHBl
Y3RlZCwgYWN0dWFsX2ApO2AgIHwgYEVYUEVDVF9GTE9BVF9FUShgX2V4cGVjdGVkLCBhY3R1YWxf
YCk7YCB8IHRoZSB0d28gYGZsb2F0YCB2YWx1ZXMgYXJlIGFsbW9zdCBlcXVhbCB8Ci18IGBBU1NF
UlRfRE9VQkxFX0VRKGBfZXhwZWN0ZWQsIGFjdHVhbF9gKTtgIHwgYEVYUEVDVF9ET1VCTEVfRVEo
YF9leHBlY3RlZCwgYWN0dWFsX2ApO2AgfCB0aGUgdHdvIGBkb3VibGVgIHZhbHVlcyBhcmUgYWxt
b3N0IGVxdWFsIHwKLQotQnkgImFsbW9zdCBlcXVhbCIsIHdlIG1lYW4gdGhlIHR3byB2YWx1ZXMg
YXJlIHdpdGhpbiA0IFVMUCdzIGZyb20gZWFjaAotb3RoZXIuCi0KLVRoZSBmb2xsb3dpbmcgYXNz
ZXJ0aW9ucyBhbGxvdyB5b3UgdG8gY2hvb3NlIHRoZSBhY2NlcHRhYmxlIGVycm9yIGJvdW5kOgot
Ci18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJp
ZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05FQVIoYF92YWwxLCB2YWwyLCBhYnNcX2Vycm9y
X2ApO2AgfCBgRVhQRUNUX05FQVJgXyh2YWwxLCB2YWwyLCBhYnNcX2Vycm9yX2ApO2AgfCB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIF92YWwxXyBhbmQgX3ZhbDJfIGRvZXNuJ3QgZXhjZWVkIHRoZSBn
aXZlbiBhYnNvbHV0ZSBlcnJvciB8Ci0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIyMgRmxvYXRpbmctUG9pbnQgUHJlZGljYXRlLUZvcm1hdCBGdW5jdGlvbnMgIyMj
Ci0KLVNvbWUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyBhcmUgdXNlZnVsLCBidXQgbm90IHRo
YXQgb2Z0ZW4gdXNlZC4gSW4gb3JkZXIKLXRvIGF2b2lkIGFuIGV4cGxvc2lvbiBvZiBuZXcgbWFj
cm9zLCB3ZSBwcm92aWRlIHRoZW0gYXMgcHJlZGljYXRlLWZvcm1hdAotZnVuY3Rpb25zIHRoYXQg
Y2FuIGJlIHVzZWQgaW4gcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MgKGUuZy4KLWBFWFBFQ1Rf
UFJFRF9GT1JNQVQyYCwgZXRjKS4KLQotYGBgCi1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGlu
Zzo6RmxvYXRMRSwgdmFsMSwgdmFsMik7Ci1FWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6
RG91YmxlTEUsIHZhbDEsIHZhbDIpOwotYGBgCi0KLVZlcmlmaWVzIHRoYXQgX3ZhbDFfIGlzIGxl
c3MgdGhhbiwgb3IgYWxtb3N0IGVxdWFsIHRvLCBfdmFsMl8uIFlvdSBjYW4KLXJlcGxhY2UgYEVY
UEVDVF9QUkVEX0ZPUk1BVDJgIGluIHRoZSBhYm92ZSB0YWJsZSB3aXRoIGBBU1NFUlRfUFJFRF9G
T1JNQVQyYC4KLQotX0F2YWlsYWJpbGl0eV86IExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIFdp
bmRvd3MgSFJFU1VMVCBhc3NlcnRpb25zICMjCi0KLVRoZXNlIGFzc2VydGlvbnMgdGVzdCBmb3Ig
YEhSRVNVTFRgIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KLQotfCAqKkZhdGFsIGFzc2VydGlvbioqIHwg
KipOb25mYXRhbCBhc3NlcnRpb24qKiB8ICoqVmVyaWZpZXMqKiB8Ci18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLXwKLXwgYEFTU0VS
VF9IUkVTVUxUX1NVQ0NFRURFRChgX2V4cHJlc3Npb25fYCk7YCB8IGBFWFBFQ1RfSFJFU1VMVF9T
VUNDRUVERUQoYF9leHByZXNzaW9uX2ApO2AgfCBfZXhwcmVzc2lvbl8gaXMgYSBzdWNjZXNzIGBI
UkVTVUxUYCB8Ci18IGBBU1NFUlRfSFJFU1VMVF9GQUlMRUQoYF9leHByZXNzaW9uX2ApO2AgICAg
fCBgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKGBfZXhwcmVzc2lvbl9gKTtgICAgIHwgX2V4cHJlc3Np
b25fIGlzIGEgZmFpbHVyZSBgSFJFU1VMVGAgfAotCi1UaGUgZ2VuZXJhdGVkIG91dHB1dCBjb250
YWlucyB0aGUgaHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZQotYXNzb2NpYXRlZCB3aXRoIHRo
ZSBgSFJFU1VMVGAgY29kZSByZXR1cm5lZCBieSBfZXhwcmVzc2lvbl8uCi0KLVlvdSBtaWdodCB1
c2UgdGhlbSBsaWtlIHRoaXM6Ci0KLWBgYAotQ0NvbVB0ciBzaGVsbDsKLUFTU0VSVF9IUkVTVUxU
X1NVQ0NFRURFRChzaGVsbC5Db0NyZWF0ZUluc3RhbmNlKEwiU2hlbGwuQXBwbGljYXRpb24iKSk7
Ci1DQ29tVmFyaWFudCBlbXB0eTsKLUFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChzaGVsbC0+U2hl
bGxFeGVjdXRlKENDb21CU1RSKHVybCksIGVtcHR5LCBlbXB0eSwgZW1wdHksIGVtcHR5KSk7Ci1g
YGAKLQotX0F2YWlsYWJpbGl0eV86IFdpbmRvd3MuCi0KLSMjIFR5cGUgQXNzZXJ0aW9ucyAjIwot
Ci1Zb3UgY2FuIGNhbGwgdGhlIGZ1bmN0aW9uCi1gYGAKLTo6dGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxPFQxLCBUMj4oKTsKLWBgYAotdG8gYXNzZXJ0IHRoYXQgdHlwZXMgYFQxYCBhbmQgYFQy
YCBhcmUgdGhlIHNhbWUuICBUaGUgZnVuY3Rpb24gZG9lcwotbm90aGluZyBpZiB0aGUgYXNzZXJ0
aW9uIGlzIHNhdGlzZmllZC4gIElmIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LAotdGhlIGZ1bmN0
aW9uIGNhbGwgd2lsbCBmYWlsIHRvIGNvbXBpbGUsIGFuZCB0aGUgY29tcGlsZXIgZXJyb3IgbWVz
c2FnZQotd2lsbCBsaWtlbHkgKGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIpIHNob3cgeW91IHRo
ZSBhY3R1YWwgdmFsdWVzIG9mCi1gVDFgIGFuZCBgVDJgLiAgVGhpcyBpcyBtYWlubHkgdXNlZnVs
IGluc2lkZSB0ZW1wbGF0ZSBjb2RlLgotCi1fQ2F2ZWF0Ol8gV2hlbiB1c2VkIGluc2lkZSBhIG1l
bWJlciBmdW5jdGlvbiBvZiBhIGNsYXNzIHRlbXBsYXRlIG9yIGEKLWZ1bmN0aW9uIHRlbXBsYXRl
LCBgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4oKWAgaXMgZWZmZWN0aXZlIF9vbmx5IGlmXwot
dGhlIGZ1bmN0aW9uIGlzIGluc3RhbnRpYXRlZC4gIEZvciBleGFtcGxlLCBnaXZlbjoKLWBgYAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0gcHVibGljOgotICB2b2lkIEJhcigp
IHsgOjp0ZXN0aW5nOjpTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Ci19OwotYGBgCi10
aGUgY29kZToKLWBgYAotdm9pZCBUZXN0MSgpIHsgRm9vPGJvb2w+IGZvbzsgfQotYGBgCi13aWxs
IF9ub3RfIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IsIGFzIGBGb288Ym9vbD46OkJhcigpYCBp
cyBuZXZlcgotYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAgSW5zdGVhZCwgeW91IG5lZWQ6Ci1gYGAK
LXZvaWQgVGVzdDIoKSB7IEZvbzxib29sPiBmb287IGZvby5CYXIoKTsgfQotYGBgCi10byBjYXVz
ZSBhIGNvbXBpbGVyIGVycm9yLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1h
Yzsgc2luY2UgdmVyc2lvbiAxLjMuMC4KLQotIyMgQXNzZXJ0aW9uIFBsYWNlbWVudCAjIwotCi1Z
b3UgY2FuIHVzZSBhc3NlcnRpb25zIGluIGFueSBDKysgZnVuY3Rpb24uIEluIHBhcnRpY3VsYXIs
IGl0IGRvZXNuJ3QKLWhhdmUgdG8gYmUgYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFz
cy4gVGhlIG9uZSBjb25zdHJhaW50IGlzCi10aGF0IGFzc2VydGlvbnMgdGhhdCBnZW5lcmF0ZSBh
IGZhdGFsIGZhaWx1cmUgKGBGQUlMKmAgYW5kIGBBU1NFUlRfKmApCi1jYW4gb25seSBiZSB1c2Vk
IGluIHZvaWQtcmV0dXJuaW5nIGZ1bmN0aW9ucy4gVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mCi1H
b29nbGUgVGVzdCBub3QgdXNpbmcgZXhjZXB0aW9ucy4gQnkgcGxhY2luZyBpdCBpbiBhIG5vbi12
b2lkIGZ1bmN0aW9uCi15b3UnbGwgZ2V0IGEgY29uZnVzaW5nIGNvbXBpbGUgZXJyb3IgbGlrZQot
YCJlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBiZSJgLgotCi1J
ZiB5b3UgbmVlZCB0byB1c2UgYXNzZXJ0aW9ucyBpbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBu
b24tdm9pZCwgb25lIG9wdGlvbgotaXMgdG8gbWFrZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2
YWx1ZSBpbiBhbiBvdXQgcGFyYW1ldGVyIGluc3RlYWQuIEZvcgotZXhhbXBsZSwgeW91IGNhbiBy
ZXdyaXRlIGBUMiBGb28oVDEgeClgIHRvIGB2b2lkIEZvbyhUMSB4LCBUMiogcmVzdWx0KWAuIFlv
dQotbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgKnJlc3VsdGAgY29udGFpbnMgc29tZSBzZW5zaWJs
ZSB2YWx1ZSBldmVuIHdoZW4gdGhlCi1mdW5jdGlvbiByZXR1cm5zIHByZW1hdHVyZWx5LiBBcyB0
aGUgZnVuY3Rpb24gbm93IHJldHVybnMgYHZvaWRgLCB5b3UgY2FuIHVzZQotYW55IGFzc2VydGlv
biBpbnNpZGUgb2YgaXQuCi0KLUlmIGNoYW5naW5nIHRoZSBmdW5jdGlvbidzIHR5cGUgaXMgbm90
IGFuIG9wdGlvbiwgeW91IHNob3VsZCBqdXN0IHVzZQotYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRl
IG5vbi1mYXRhbCBmYWlsdXJlcywgc3VjaCBhcyBgQUREX0ZBSUxVUkUqYCBhbmQKLWBFWFBFQ1Rf
KmAuCi0KLV9Ob3RlXzogQ29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgbm90IGNvbnNp
ZGVyZWQgdm9pZC1yZXR1cm5pbmcKLWZ1bmN0aW9ucywgYWNjb3JkaW5nIHRvIHRoZSBDKysgbGFu
Z3VhZ2Ugc3BlY2lmaWNhdGlvbiwgYW5kIHNvIHlvdSBtYXkgbm90IHVzZQotZmF0YWwgYXNzZXJ0
aW9ucyBpbiB0aGVtLiBZb3UnbGwgZ2V0IGEgY29tcGlsYXRpb24gZXJyb3IgaWYgeW91IHRyeS4g
QSBzaW1wbGUKLXdvcmthcm91bmQgaXMgdG8gdHJhbnNmZXIgdGhlIGVudGlyZSBib2R5IG9mIHRo
ZSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yIHRvIGEKLXByaXZhdGUgdm9pZC1yZXR1cm5pbmcg
bWV0aG9kLiBIb3dldmVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgYSBmYXRhbAotYXNzZXJ0
aW9uIGZhaWx1cmUgaW4gYSBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIGN1cnJl
bnQgdGVzdCwgYXMgeW91cgotaW50dWl0aW9uIG1pZ2h0IHN1Z2dlc3Q7IGl0IG1lcmVseSByZXR1
cm5zIGZyb20gdGhlIGNvbnN0cnVjdG9yIGVhcmx5LCBwb3NzaWJseQotbGVhdmluZyB5b3VyIG9i
amVjdCBpbiBhIHBhcnRpYWxseS1jb25zdHJ1Y3RlZCBzdGF0ZS4gTGlrZXdpc2UsIGEgZmF0YWwK
LWFzc2VydGlvbiBmYWlsdXJlIGluIGEgZGVzdHJ1Y3RvciBtYXkgbGVhdmUgeW91ciBvYmplY3Qg
aW4gYQotcGFydGlhbGx5LWRlc3RydWN0ZWQgc3RhdGUuIFVzZSBhc3NlcnRpb25zIGNhcmVmdWxs
eSBpbiB0aGVzZSBzaXR1YXRpb25zIQotCi0jIFRlYWNoaW5nIEdvb2dsZSBUZXN0IEhvdyB0byBQ
cmludCBZb3VyIFZhbHVlcyAjCi0KLVdoZW4gYSB0ZXN0IGFzc2VydGlvbiBzdWNoIGFzIGBFWFBF
Q1RfRVFgIGZhaWxzLCBHb29nbGUgVGVzdCBwcmludHMgdGhlCi1hcmd1bWVudCB2YWx1ZXMgdG8g
aGVscCB5b3UgZGVidWcuICBJdCBkb2VzIHRoaXMgdXNpbmcgYQotdXNlci1leHRlbnNpYmxlIHZh
bHVlIHByaW50ZXIuCi0KLVRoaXMgcHJpbnRlciBrbm93cyBob3cgdG8gcHJpbnQgYnVpbHQtaW4g
QysrIHR5cGVzLCBuYXRpdmUgYXJyYXlzLCBTVEwKLWNvbnRhaW5lcnMsIGFuZCBhbnkgdHlwZSB0
aGF0IHN1cHBvcnRzIHRoZSBgPDxgIG9wZXJhdG9yLiAgRm9yIG90aGVyCi10eXBlcywgaXQgcHJp
bnRzIHRoZSByYXcgYnl0ZXMgaW4gdGhlIHZhbHVlIGFuZCBob3BlcyB0aGF0IHlvdSB0aGUKLXVz
ZXIgY2FuIGZpZ3VyZSBpdCBvdXQuCi0KLUFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgcHJpbnRl
ciBpcyBfZXh0ZW5zaWJsZV8uICBUaGF0IG1lYW5zCi15b3UgY2FuIHRlYWNoIGl0IHRvIGRvIGEg
YmV0dGVyIGpvYiBhdCBwcmludGluZyB5b3VyIHBhcnRpY3VsYXIgdHlwZQotdGhhbiB0byBkdW1w
IHRoZSBieXRlcy4gIFRvIGRvIHRoYXQsIGRlZmluZSBgPDxgIGZvciB5b3VyIHR5cGU6Ci0KLWBg
YAotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgQmFyIHsg
Li4uIH07ICAvLyBXZSB3YW50IEdvb2dsZSBUZXN0IHRvIGJlIGFibGUgdG8gcHJpbnQgaW5zdGFu
Y2VzIG9mIHRoaXMuCi0KLS8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIDw8IG9wZXJhdG9yIGlz
IGRlZmluZWQgaW4gdGhlIFNBTUUKLS8vIG5hbWVzcGFjZSB0aGF0IGRlZmluZXMgQmFyLiAgQysr
J3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCi06OnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJhciYgYmFyKSB7Ci0gIHJldHVybiBvcyA8PCBi
YXIuRGVidWdTdHJpbmcoKTsgIC8vIHdoYXRldmVyIG5lZWRlZCB0byBwcmludCBiYXIgdG8gb3MK
LX0KLQotfSAgLy8gbmFtZXNwYWNlIGZvbwotYGBgCi0KLVNvbWV0aW1lcywgdGhpcyBtaWdodCBu
b3QgYmUgYW4gb3B0aW9uOiB5b3VyIHRlYW0gbWF5IGNvbnNpZGVyIGl0IGJhZAotc3R5bGUgdG8g
aGF2ZSBhIGA8PGAgb3BlcmF0b3IgZm9yIGBCYXJgLCBvciBgQmFyYCBtYXkgYWxyZWFkeSBoYXZl
IGEKLWA8PGAgb3BlcmF0b3IgdGhhdCBkb2Vzbid0IGRvIHdoYXQgeW91IHdhbnQgKGFuZCB5b3Ug
Y2Fubm90IGNoYW5nZQotaXQpLiAgSWYgc28sIHlvdSBjYW4gaW5zdGVhZCBkZWZpbmUgYSBgUHJp
bnRUbygpYCBmdW5jdGlvbiBsaWtlIHRoaXM6Ci0KLWBgYAotI2luY2x1ZGUgPGlvc3RyZWFtPgot
Ci1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgQmFyIHsgLi4uIH07Ci0KLS8vIEl0J3MgaW1wb3J0
YW50IHRoYXQgUHJpbnRUbygpIGlzIGRlZmluZWQgaW4gdGhlIFNBTUUKLS8vIG5hbWVzcGFjZSB0
aGF0IGRlZmluZXMgQmFyLiAgQysrJ3MgbG9vay11cCBydWxlcyByZWx5IG9uIHRoYXQuCi12b2lk
IFByaW50VG8oY29uc3QgQmFyJiBiYXIsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwg
YmFyLkRlYnVnU3RyaW5nKCk7ICAvLyB3aGF0ZXZlciBuZWVkZWQgdG8gcHJpbnQgYmFyIHRvIG9z
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1JZiB5b3UgaGF2ZSBkZWZpbmVkIGJv
dGggYDw8YCBhbmQgYFByaW50VG8oKWAsIHRoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkCi13aGVuIEdv
b2dsZSBUZXN0IGlzIGNvbmNlcm5lZC4gIFRoaXMgYWxsb3dzIHlvdSB0byBjdXN0b21pemUgaG93
IHRoZSB2YWx1ZQotYXBwZWFycyBpbiBHb29nbGUgVGVzdCdzIG91dHB1dCB3aXRob3V0IGFmZmVj
dGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZQotYmVoYXZpb3Igb2YgaXRzIGA8PGAgb3BlcmF0
b3IuCi0KLUlmIHlvdSB3YW50IHRvIHByaW50IGEgdmFsdWUgYHhgIHVzaW5nIEdvb2dsZSBUZXN0
J3MgdmFsdWUgcHJpbnRlcgoteW91cnNlbGYsIGp1c3QgY2FsbCBgOjp0ZXN0aW5nOjpQcmludFRv
U3RyaW5nKGBfeF9gKWAsIHdoaWNoCi1yZXR1cm5zIGFuIGBzdGQ6OnN0cmluZ2A6Ci0KLWBgYAot
dmVjdG9yPHBhaXI8QmFyLCBpbnQ+ID4gYmFyX2ludHMgPSBHZXRCYXJJbnRWZWN0b3IoKTsKLQot
RVhQRUNUX1RSVUUoSXNDb3JyZWN0QmFySW50VmVjdG9yKGJhcl9pbnRzKSkKLSAgICA8PCAiYmFy
X2ludHMgPSAiIDw8IDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhiYXJfaW50cyk7Ci1gYGAKLQot
IyBEZWF0aCBUZXN0cyAjCi0KLUluIG1hbnkgYXBwbGljYXRpb25zLCB0aGVyZSBhcmUgYXNzZXJ0
aW9ucyB0aGF0IGNhbiBjYXVzZSBhcHBsaWNhdGlvbiBmYWlsdXJlCi1pZiBhIGNvbmRpdGlvbiBp
cyBub3QgbWV0LiBUaGVzZSBzYW5pdHkgY2hlY2tzLCB3aGljaCBlbnN1cmUgdGhhdCB0aGUgcHJv
Z3JhbQotaXMgaW4gYSBrbm93biBnb29kIHN0YXRlLCBhcmUgdGhlcmUgdG8gZmFpbCBhdCB0aGUg
ZWFybGllc3QgcG9zc2libGUgdGltZSBhZnRlcgotc29tZSBwcm9ncmFtIHN0YXRlIGlzIGNvcnJ1
cHRlZC4gSWYgdGhlIGFzc2VydGlvbiBjaGVja3MgdGhlIHdyb25nIGNvbmRpdGlvbiwKLXRoZW4g
dGhlIHByb2dyYW0gbWF5IHByb2NlZWQgaW4gYW4gZXJyb25lb3VzIHN0YXRlLCB3aGljaCBjb3Vs
ZCBsZWFkIHRvIG1lbW9yeQotY29ycnVwdGlvbiwgc2VjdXJpdHkgaG9sZXMsIG9yIHdvcnNlLiBI
ZW5jZSBpdCBpcyB2aXRhbGx5IGltcG9ydGFudCB0byB0ZXN0Ci10aGF0IHN1Y2ggYXNzZXJ0aW9u
IHN0YXRlbWVudHMgd29yayBhcyBleHBlY3RlZC4KLQotU2luY2UgdGhlc2UgcHJlY29uZGl0aW9u
IGNoZWNrcyBjYXVzZSB0aGUgcHJvY2Vzc2VzIHRvIGRpZSwgd2UgY2FsbCBzdWNoIHRlc3RzCi1f
ZGVhdGggdGVzdHNfLiBNb3JlIGdlbmVyYWxseSwgYW55IHRlc3QgdGhhdCBjaGVja3MgdGhhdCBh
IHByb2dyYW0gdGVybWluYXRlcwotKGV4Y2VwdCBieSB0aHJvd2luZyBhbiBleGNlcHRpb24pIGlu
IGFuIGV4cGVjdGVkIGZhc2hpb24gaXMgYWxzbyBhIGRlYXRoIHRlc3QuCi0KLU5vdGUgdGhhdCBp
ZiBhIHBpZWNlIG9mIGNvZGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgd2UgZG9uJ3QgY29uc2lkZXIg
aXQgImRlYXRoIgotZm9yIHRoZSBwdXJwb3NlIG9mIGRlYXRoIHRlc3RzLCBhcyB0aGUgY2FsbGVy
IG9mIHRoZSBjb2RlIGNvdWxkIGNhdGNoIHRoZSBleGNlcHRpb24KLWFuZCBhdm9pZCB0aGUgY3Jh
c2guIElmIHlvdSB3YW50IHRvIHZlcmlmeSBleGNlcHRpb25zIHRocm93biBieSB5b3VyIGNvZGUs
Ci1zZWUgW0V4Y2VwdGlvbiBBc3NlcnRpb25zXSgjZXhjZXB0aW9uLWFzc2VydGlvbnMpLgotCi1J
ZiB5b3Ugd2FudCB0byB0ZXN0IGBFWFBFQ1RfKigpL0FTU0VSVF8qKClgIGZhaWx1cmVzIGluIHlv
dXIgdGVzdCBjb2RlLCBzZWUgW0NhdGNoaW5nIEZhaWx1cmVzXSgjY2F0Y2hpbmctZmFpbHVyZXMp
LgotCi0jIyBIb3cgdG8gV3JpdGUgYSBEZWF0aCBUZXN0ICMjCi0KLUdvb2dsZSBUZXN0IGhhcyB0
aGUgZm9sbG93aW5nIG1hY3JvcyB0byBzdXBwb3J0IGRlYXRoIHRlc3RzOgotCi18ICoqRmF0YWwg
YXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6
LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0t
LS0tfAotfCBgQVNTRVJUX0RFQVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBgRVhQRUNUX0RF
QVRIKGBfc3RhdGVtZW50LCByZWdleF9gKTsgfCBfc3RhdGVtZW50XyBjcmFzaGVzIHdpdGggdGhl
IGdpdmVuIGVycm9yIHwKLXwgYEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoYF9zdGF0ZW1lbnQs
IHJlZ2V4X2ApOyB8IGBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKGBfc3RhdGVtZW50LCByZWdl
eF9gKTsgfCBpZiBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkLCB2ZXJpZmllcyB0aGF0IF9zdGF0
ZW1lbnRfIGNyYXNoZXMgd2l0aCB0aGUgZ2l2ZW4gZXJyb3I7IG90aGVyd2lzZSB2ZXJpZmllcyBu
b3RoaW5nIHwKLXwgYEFTU0VSVF9FWElUKGBfc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4X2Ap
OyB8IGBFWFBFQ1RfRVhJVChgX3N0YXRlbWVudCwgcHJlZGljYXRlLCByZWdleF9gKTsgfF9zdGF0
ZW1lbnRfIGV4aXRzIHdpdGggdGhlIGdpdmVuIGVycm9yIGFuZCBpdHMgZXhpdCBjb2RlIG1hdGNo
ZXMgX3ByZWRpY2F0ZV8gfAotCi13aGVyZSBfc3RhdGVtZW50XyBpcyBhIHN0YXRlbWVudCB0aGF0
IGlzIGV4cGVjdGVkIHRvIGNhdXNlIHRoZSBwcm9jZXNzIHRvCi1kaWUsIF9wcmVkaWNhdGVfIGlz
IGEgZnVuY3Rpb24gb3IgZnVuY3Rpb24gb2JqZWN0IHRoYXQgZXZhbHVhdGVzIGFuIGludGVnZXIK
LWV4aXQgc3RhdHVzLCBhbmQgX3JlZ2V4XyBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IHRo
ZSBzdGRlcnIgb3V0cHV0IG9mCi1fc3RhdGVtZW50XyBpcyBleHBlY3RlZCB0byBtYXRjaC4gTm90
ZSB0aGF0IF9zdGF0ZW1lbnRfIGNhbiBiZSBfYW55IHZhbGlkCi1zdGF0ZW1lbnRfIChpbmNsdWRp
bmcgX2NvbXBvdW5kIHN0YXRlbWVudF8pIGFuZCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4KLWV4cHJl
c3Npb24uCi0KLUFzIHVzdWFsLCB0aGUgYEFTU0VSVGAgdmFyaWFudHMgYWJvcnQgdGhlIGN1cnJl
bnQgdGVzdCBmdW5jdGlvbiwgd2hpbGUgdGhlCi1gRVhQRUNUYCB2YXJpYW50cyBkbyBub3QuCi0K
LSoqTm90ZToqKiBXZSB1c2UgdGhlIHdvcmQgImNyYXNoIiBoZXJlIHRvIG1lYW4gdGhhdCB0aGUg
cHJvY2VzcwotdGVybWluYXRlcyB3aXRoIGEgX25vbi16ZXJvXyBleGl0IHN0YXR1cyBjb2RlLiAg
VGhlcmUgYXJlIHR3bwotcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBwcm9jZXNzIGhhcyBjYWxs
ZWQgYGV4aXQoKWAgb3IgYF9leGl0KClgCi13aXRoIGEgbm9uLXplcm8gdmFsdWUsIG9yIGl0IG1h
eSBiZSBraWxsZWQgYnkgYSBzaWduYWwuCi0KLVRoaXMgbWVhbnMgdGhhdCBpZiBfc3RhdGVtZW50
XyB0ZXJtaW5hdGVzIHRoZSBwcm9jZXNzIHdpdGggYSAwIGV4aXQKLWNvZGUsIGl0IGlzIF9ub3Rf
IGNvbnNpZGVyZWQgYSBjcmFzaCBieSBgRVhQRUNUX0RFQVRIYC4gIFVzZQotYEVYUEVDVF9FWElU
YCBpbnN0ZWFkIGlmIHRoaXMgaXMgdGhlIGNhc2UsIG9yIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0
Ci10aGUgZXhpdCBjb2RlIG1vcmUgcHJlY2lzZWx5LgotCi1BIHByZWRpY2F0ZSBoZXJlIG11c3Qg
YWNjZXB0IGFuIGBpbnRgIGFuZCByZXR1cm4gYSBgYm9vbGAuIFRoZSBkZWF0aCB0ZXN0Ci1zdWNj
ZWVkcyBvbmx5IGlmIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBgdHJ1ZWAuIEdvb2dsZSBUZXN0IGRl
ZmluZXMgYSBmZXcKLXByZWRpY2F0ZXMgdGhhdCBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2Vz
OgotCi1gYGAKLTo6dGVzdGluZzo6RXhpdGVkV2l0aENvZGUoZXhpdF9jb2RlKQotYGBgCi0KLVRo
aXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gZXhpdGVkIG5vcm1hbGx5IHdp
dGggdGhlIGdpdmVuIGV4aXQKLWNvZGUuCi0KLWBgYAotOjp0ZXN0aW5nOjpLaWxsZWRCeVNpZ25h
bChzaWduYWxfbnVtYmVyKSAgLy8gTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotYGBgCi0KLVRo
aXMgZXhwcmVzc2lvbiBpcyBgdHJ1ZWAgaWYgdGhlIHByb2dyYW0gd2FzIGtpbGxlZCBieSB0aGUg
Z2l2ZW4gc2lnbmFsLgotCi1UaGUgYCpfREVBVEhgIG1hY3JvcyBhcmUgY29udmVuaWVudCB3cmFw
cGVycyBmb3IgYCpfRVhJVGAgdGhhdCB1c2UgYSBwcmVkaWNhdGUKLXRoYXQgdmVyaWZpZXMgdGhl
IHByb2Nlc3MnIGV4aXQgY29kZSBpcyBub24temVyby4KLQotTm90ZSB0aGF0IGEgZGVhdGggdGVz
dCBvbmx5IGNhcmVzIGFib3V0IHRocmVlIHRoaW5nczoKLQotICAxLiBkb2VzIF9zdGF0ZW1lbnRf
IGFib3J0IG9yIGV4aXQgdGhlIHByb2Nlc3M/Ci0gIDEuIChpbiB0aGUgY2FzZSBvZiBgQVNTRVJU
X0VYSVRgIGFuZCBgRVhQRUNUX0VYSVRgKSBkb2VzIHRoZSBleGl0IHN0YXR1cyBzYXRpc2Z5IF9w
cmVkaWNhdGVfPyAgT3IgKGluIHRoZSBjYXNlIG9mIGBBU1NFUlRfREVBVEhgIGFuZCBgRVhQRUNU
X0RFQVRIYCkgaXMgdGhlIGV4aXQgc3RhdHVzIG5vbi16ZXJvPyAgQW5kCi0gIDEuIGRvZXMgdGhl
IHN0ZGVyciBvdXRwdXQgbWF0Y2ggX3JlZ2V4Xz8KLQotSW4gcGFydGljdWxhciwgaWYgX3N0YXRl
bWVudF8gZ2VuZXJhdGVzIGFuIGBBU1NFUlRfKmAgb3IgYEVYUEVDVF8qYCBmYWlsdXJlLCBpdCB3
aWxsICoqbm90KiogY2F1c2UgdGhlIGRlYXRoIHRlc3QgdG8gZmFpbCwgYXMgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBkb24ndCBhYm9ydCB0aGUgcHJvY2Vzcy4KLQotVG8gd3JpdGUgYSBkZWF0aCB0
ZXN0LCBzaW1wbHkgdXNlIG9uZSBvZiB0aGUgYWJvdmUgbWFjcm9zIGluc2lkZSB5b3VyIHRlc3QK
LWZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwKLQotYGBgCi1URVNUKE15RGVhdGhUZXN0LCBGb28pIHsK
LSAgLy8gVGhpcyBkZWF0aCB0ZXN0IHVzZXMgYSBjb21wb3VuZCBzdGF0ZW1lbnQuCi0gIEFTU0VS
VF9ERUFUSCh7IGludCBuID0gNTsgRm9vKCZuKTsgfSwgIkVycm9yIG9uIGxpbmUgLiogb2YgRm9v
KCkiKTsKLX0KLVRFU1QoTXlEZWF0aFRlc3QsIE5vcm1hbEV4aXQpIHsKLSAgRVhQRUNUX0VYSVQo
Tm9ybWFsRXhpdCgpLCA6OnRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiU3VjY2VzcyIpOwot
fQotVEVTVChNeURlYXRoVGVzdCwgS2lsbE15c2VsZikgewotICBFWFBFQ1RfRVhJVChLaWxsTXlz
ZWxmKCksIDo6dGVzdGluZzo6S2lsbGVkQnlTaWduYWwoU0lHS0lMTCksICJTZW5kaW5nIG15c2Vs
ZiB1bmJsb2NrYWJsZSBzaWduYWwiKTsKLX0KLWBgYAotCi12ZXJpZmllcyB0aGF0OgotCi0gICog
Y2FsbGluZyBgRm9vKDUpYCBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gZGllIHdpdGggdGhlIGdpdmVu
IGVycm9yIG1lc3NhZ2UsCi0gICogY2FsbGluZyBgTm9ybWFsRXhpdCgpYCBjYXVzZXMgdGhlIHBy
b2Nlc3MgdG8gcHJpbnQgYCJTdWNjZXNzImAgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggZXhpdCBj
b2RlIDAsIGFuZAotICAqIGNhbGxpbmcgYEtpbGxNeXNlbGYoKWAga2lsbHMgdGhlIHByb2Nlc3Mg
d2l0aCBzaWduYWwgYFNJR0tJTExgLgotCi1UaGUgdGVzdCBmdW5jdGlvbiBib2R5IG1heSBjb250
YWluIG90aGVyIGFzc2VydGlvbnMgYW5kIHN0YXRlbWVudHMgYXMgd2VsbCwgaWYKLW5lY2Vzc2Fy
eS4KLQotX0ltcG9ydGFudDpfIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB5b3UgdG8gZm9sbG93IHRo
ZSBjb252ZW50aW9uIG9mIG5hbWluZyB5b3VyCi10ZXN0IGNhc2UgKG5vdCB0ZXN0KSBgKkRlYXRo
VGVzdGAgd2hlbiBpdCBjb250YWlucyBhIGRlYXRoIHRlc3QsIGFzCi1kZW1vbnN0cmF0ZWQgaW4g
dGhlIGFib3ZlIGV4YW1wbGUuIFRoZSBgRGVhdGggVGVzdHMgQW5kIFRocmVhZHNgIHNlY3Rpb24g
YmVsb3cKLWV4cGxhaW5zIHdoeS4KLQotSWYgYSB0ZXN0IGZpeHR1cmUgY2xhc3MgaXMgc2hhcmVk
IGJ5IG5vcm1hbCB0ZXN0cyBhbmQgZGVhdGggdGVzdHMsIHlvdQotY2FuIHVzZSB0eXBlZGVmIHRv
IGludHJvZHVjZSBhbiBhbGlhcyBmb3IgdGhlIGZpeHR1cmUgY2xhc3MgYW5kIGF2b2lkCi1kdXBs
aWNhdGluZyBpdHMgY29kZToKLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgeyAuLi4gfTsKLQotdHlwZWRlZiBGb29UZXN0IEZvb0RlYXRoVGVzdDsKLQotVEVTVF9G
KEZvb1Rlc3QsIERvZXNUaGlzKSB7Ci0gIC8vIG5vcm1hbCB0ZXN0Ci19Ci0KLVRFU1RfRihGb29E
ZWF0aFRlc3QsIERvZXNUaGF0KSB7Ci0gIC8vIGRlYXRoIHRlc3QKLX0KLWBgYAotCi1fQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgQ3ln
d2luLCBhbmQgTWFjICh0aGUgbGF0dGVyIHRocmVlIGFyZSBzdXBwb3J0ZWQgc2luY2UgdjEuMy4w
KS4gIGAoQVNTRVJUfEVYUEVDVClfREVBVEhfSUZfU1VQUE9SVEVEYCBhcmUgbmV3IGluIHYxLjQu
MC4KLQotIyMgUmVndWxhciBFeHByZXNzaW9uIFN5bnRheCAjIwotCi1PbiBQT1NJWCBzeXN0ZW1z
IChlLmcuIExpbnV4LCBDeWd3aW4sIGFuZCBNYWMpLCBHb29nbGUgVGVzdCB1c2VzIHRoZQotW1BP
U0lYIGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbl0oaHR0cDovL3d3dy5vcGVuZ3JvdXAub3Jn
L29ubGluZXB1YnMvMDA5Njk1Mzk5L2Jhc2VkZWZzL3hiZF9jaGFwMDkuaHRtbCN0YWdfMDlfMDQp
Ci1zeW50YXggaW4gZGVhdGggdGVzdHMuIFRvIGxlYXJuIGFib3V0IHRoaXMgc3ludGF4LCB5b3Ug
bWF5IHdhbnQgdG8gcmVhZCB0aGlzIFtXaWtpcGVkaWEgZW50cnldKGh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvUmVndWxhcl9leHByZXNzaW9uI1BPU0lYX0V4dGVuZGVkX1JlZ3VsYXJfRXhw
cmVzc2lvbnMpLgotCi1PbiBXaW5kb3dzLCBHb29nbGUgVGVzdCB1c2VzIGl0cyBvd24gc2ltcGxl
IHJlZ3VsYXIgZXhwcmVzc2lvbgotaW1wbGVtZW50YXRpb24uIEl0IGxhY2tzIG1hbnkgZmVhdHVy
ZXMgeW91IGNhbiBmaW5kIGluIFBPU0lYIGV4dGVuZGVkCi1yZWd1bGFyIGV4cHJlc3Npb25zLiAg
Rm9yIGV4YW1wbGUsIHdlIGRvbid0IHN1cHBvcnQgdW5pb24gKGAieHx5ImApLAotZ3JvdXBpbmcg
KGAiKHh5KSJgKSwgYnJhY2tldHMgKGAiW3h5XSJgKSwgYW5kIHJlcGV0aXRpb24gY291bnQKLShg
Inh7NSw3fSJgKSwgYW1vbmcgb3RoZXJzLiBCZWxvdyBpcyB3aGF0IHdlIGRvIHN1cHBvcnQgKExl
dHRlciBgQWAgZGVub3RlcyBhCi1saXRlcmFsIGNoYXJhY3RlciwgcGVyaW9kIChgLmApLCBvciBh
IHNpbmdsZSBgXFxgIGVzY2FwZSBzZXF1ZW5jZTsgYHhgCi1hbmQgYHlgIGRlbm90ZSByZWd1bGFy
IGV4cHJlc3Npb25zLik6Ci0KLXwgYGNgIHwgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0ZXIg
YGNgIHwKLXw6LS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgYFxc
ZGAgfCBtYXRjaGVzIGFueSBkZWNpbWFsIGRpZ2l0ICAgICAgICAgfAotfCBgXFxEYCB8IG1hdGNo
ZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mgbm90IGEgZGVjaW1hbCBkaWdpdCB8Ci18IGBcXGZgIHwg
bWF0Y2hlcyBgXGZgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYFxcbmAgfCBtYXRjaGVzIGBc
bmAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgXFxyYCB8IG1hdGNoZXMgYFxyYCAgICAgICAg
ICAgICAgICAgICAgICB8Ci18IGBcXHNgIHwgbWF0Y2hlcyBhbnkgQVNDSUkgd2hpdGVzcGFjZSwg
aW5jbHVkaW5nIGBcbmAgfAotfCBgXFxTYCB8IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0J3Mg
bm90IGEgd2hpdGVzcGFjZSB8Ci18IGBcXHRgIHwgbWF0Y2hlcyBgXHRgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXwgYFxcdmAgfCBtYXRjaGVzIGBcdmAgICAgICAgICAgICAgICAgICAgICAgfAot
fCBgXFx3YCB8IG1hdGNoZXMgYW55IGxldHRlciwgYF9gLCBvciBkZWNpbWFsIGRpZ2l0IHwKLXwg
YFxcV2AgfCBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCBgXFx3YCBkb2Vzbid0IG1hdGNoIHwK
LXwgYFxcY2AgfCBtYXRjaGVzIGFueSBsaXRlcmFsIGNoYXJhY3RlciBgY2AsIHdoaWNoIG11c3Qg
YmUgYSBwdW5jdHVhdGlvbiB8Ci18IGBcXC5gIHwgbWF0Y2hlcyB0aGUgYC5gIGNoYXJhY3RlciAg
ICAgICAgIHwKLXwgYC5gIHwgbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgYFxu
YCB8Ci18IGBBP2AgfCBtYXRjaGVzIDAgb3IgMSBvY2N1cnJlbmNlcyBvZiBgQWAgfAotfCBgQSpg
IHwgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJyZW5jZXMgb2YgYEFgIHwKLXwgYEErYCB8IG1hdGNo
ZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9mIGBBYCB8Ci18IGBeYCB8IG1hdGNoZXMgdGhlIGJl
Z2lubmluZyBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGAkYCB8IG1h
dGNoZXMgdGhlIGVuZCBvZiBhIHN0cmluZyAobm90IHRoYXQgb2YgZWFjaCBsaW5lKSB8Ci18IGB4
eWAgfCBtYXRjaGVzIGB4YCBmb2xsb3dlZCBieSBgeWAgICAgICAgfAotCi1UbyBoZWxwIHlvdSBk
ZXRlcm1pbmUgd2hpY2ggY2FwYWJpbGl0eSBpcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0sCi1H
b29nbGUgVGVzdCBkZWZpbmVzIG1hY3JvIGBHVEVTVF9VU0VTX1BPU0lYX1JFPTFgIHdoZW4gaXQg
dXNlcyBQT1NJWAotZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9ucywgb3IgYEdURVNUX1VTRVNf
U0lNUExFX1JFPTFgIHdoZW4gaXQgdXNlcwotdGhlIHNpbXBsZSB2ZXJzaW9uLiAgSWYgeW91IHdh
bnQgeW91ciBkZWF0aCB0ZXN0cyB0byB3b3JrIGluIGJvdGgKLWNhc2VzLCB5b3UgY2FuIGVpdGhl
ciBgI2lmYCBvbiB0aGVzZSBtYWNyb3Mgb3IgdXNlIHRoZSBtb3JlIGxpbWl0ZWQKLXN5bnRheCBv
bmx5LgotCi0jIyBIb3cgSXQgV29ya3MgIyMKLQotVW5kZXIgdGhlIGhvb2QsIGBBU1NFUlRfRVhJ
VCgpYCBzcGF3bnMgYSBuZXcgcHJvY2VzcyBhbmQgZXhlY3V0ZXMgdGhlCi1kZWF0aCB0ZXN0IHN0
YXRlbWVudCBpbiB0aGF0IHByb2Nlc3MuIFRoZSBkZXRhaWxzIG9mIG9mIGhvdyBwcmVjaXNlbHkK
LXRoYXQgaGFwcGVucyBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGFuZCB0aGUgdmFyaWFibGUKLWA6
OnRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSlgICh3aGljaCBpcyBpbml0aWFs
aXplZCBmcm9tIHRoZQotY29tbWFuZC1saW5lIGZsYWcgYC0tZ3Rlc3RfZGVhdGhfdGVzdF9zdHls
ZWApLgotCi0gICogT24gUE9TSVggc3lzdGVtcywgYGZvcmsoKWAgKG9yIGBjbG9uZSgpYCBvbiBM
aW51eCkgaXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQsIGFmdGVyIHdoaWNoOgotICAgICogSWYg
dGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYCJmYXN0ImAsIHRoZSBkZWF0aCB0ZXN0IHN0YXRlbWVu
dCBpcyBpbW1lZGlhdGVseSBleGVjdXRlZC4KLSAgICAqIElmIHRoZSB2YXJpYWJsZSdzIHZhbHVl
IGlzIGAidGhyZWFkc2FmZSJgLCB0aGUgY2hpbGQgcHJvY2VzcyByZS1leGVjdXRlcyB0aGUgdW5p
dCB0ZXN0IGJpbmFyeSBqdXN0IGFzIGl0IHdhcyBvcmlnaW5hbGx5IGludm9rZWQsIGJ1dCB3aXRo
IHNvbWUgZXh0cmEgZmxhZ3MgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5k
ZXIgY29uc2lkZXJhdGlvbiB0byBiZSBydW4uCi0gICogT24gV2luZG93cywgdGhlIGNoaWxkIGlz
IHNwYXduZWQgdXNpbmcgdGhlIGBDcmVhdGVQcm9jZXNzKClgIEFQSSwgYW5kIHJlLWV4ZWN1dGVz
IHRoZSBiaW5hcnkgdG8gY2F1c2UganVzdCB0aGUgc2luZ2xlIGRlYXRoIHRlc3QgdW5kZXIgY29u
c2lkZXJhdGlvbiB0byBiZSBydW4gLSBtdWNoIGxpa2UgdGhlIGB0aHJlYWRzYWZlYCBtb2RlIG9u
IFBPU0lYLgotCi1PdGhlciB2YWx1ZXMgZm9yIHRoZSB2YXJpYWJsZSBhcmUgaWxsZWdhbCBhbmQg
d2lsbCBjYXVzZSB0aGUgZGVhdGggdGVzdCB0bwotZmFpbC4gQ3VycmVudGx5LCB0aGUgZmxhZydz
IGRlZmF1bHQgdmFsdWUgaXMgYCJmYXN0ImAuIEhvd2V2ZXIsIHdlIHJlc2VydmUgdGhlCi1yaWdo
dCB0byBjaGFuZ2UgaXQgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB5b3VyIHRlc3RzIHNob3Vs
ZCBub3QgZGVwZW5kIG9uCi10aGlzLgotCi1JbiBlaXRoZXIgY2FzZSwgdGhlIHBhcmVudCBwcm9j
ZXNzIHdhaXRzIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBjb21wbGV0ZSwgYW5kIGNoZWNrcyB0
aGF0Ci0KLSAgMS4gdGhlIGNoaWxkJ3MgZXhpdCBzdGF0dXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNh
dGUsIGFuZAotICAxLiB0aGUgY2hpbGQncyBzdGRlcnIgbWF0Y2hlcyB0aGUgcmVndWxhciBleHBy
ZXNzaW9uLgotCi1JZiB0aGUgZGVhdGggdGVzdCBzdGF0ZW1lbnQgcnVucyB0byBjb21wbGV0aW9u
IHdpdGhvdXQgZHlpbmcsIHRoZSBjaGlsZAotcHJvY2VzcyB3aWxsIG5vbmV0aGVsZXNzIHRlcm1p
bmF0ZSwgYW5kIHRoZSBhc3NlcnRpb24gZmFpbHMuCi0KLSMjIERlYXRoIFRlc3RzIEFuZCBUaHJl
YWRzICMjCi0KLVRoZSByZWFzb24gZm9yIHRoZSB0d28gZGVhdGggdGVzdCBzdHlsZXMgaGFzIHRv
IGRvIHdpdGggdGhyZWFkIHNhZmV0eS4gRHVlIHRvCi13ZWxsLWtub3duIHByb2JsZW1zIHdpdGgg
Zm9ya2luZyBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhyZWFkcywgZGVhdGggdGVzdHMgc2hvdWxkCi1i
ZSBydW4gaW4gYSBzaW5nbGUtdGhyZWFkZWQgY29udGV4dC4gU29tZXRpbWVzLCBob3dldmVyLCBp
dCBpc24ndCBmZWFzaWJsZSB0bwotYXJyYW5nZSB0aGF0IGtpbmQgb2YgZW52aXJvbm1lbnQuIEZv
ciBleGFtcGxlLCBzdGF0aWNhbGx5LWluaXRpYWxpemVkIG1vZHVsZXMKLW1heSBzdGFydCB0aHJl
YWRzIGJlZm9yZSBtYWluIGlzIGV2ZXIgcmVhY2hlZC4gT25jZSB0aHJlYWRzIGhhdmUgYmVlbiBj
cmVhdGVkLAotaXQgbWF5IGJlIGRpZmZpY3VsdCBvciBpbXBvc3NpYmxlIHRvIGNsZWFuIHRoZW0g
dXAuCi0KLUdvb2dsZSBUZXN0IGhhcyB0aHJlZSBmZWF0dXJlcyBpbnRlbmRlZCB0byByYWlzZSBh
d2FyZW5lc3Mgb2YgdGhyZWFkaW5nIGlzc3Vlcy4KLQotICAxLiBBIHdhcm5pbmcgaXMgZW1pdHRl
ZCBpZiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gYSBkZWF0aCB0ZXN0IGlzIGVu
Y291bnRlcmVkLgotICAxLiBUZXN0IGNhc2VzIHdpdGggYSBuYW1lIGVuZGluZyBpbiAiRGVhdGhU
ZXN0IiBhcmUgcnVuIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMuCi0gIDEuIEl0IHVzZXMgYGNsb25l
KClgIGluc3RlYWQgb2YgYGZvcmsoKWAgdG8gc3Bhd24gdGhlIGNoaWxkIHByb2Nlc3Mgb24gTGlu
dXggKGBjbG9uZSgpYCBpcyBub3QgYXZhaWxhYmxlIG9uIEN5Z3dpbiBhbmQgTWFjKSwgYXMgYGZv
cmsoKWAgaXMgbW9yZSBsaWtlbHkgdG8gY2F1c2UgdGhlIGNoaWxkIHRvIGhhbmcgd2hlbiB0aGUg
cGFyZW50IHByb2Nlc3MgaGFzIG11bHRpcGxlIHRocmVhZHMuCi0KLUl0J3MgcGVyZmVjdGx5IGZp
bmUgdG8gY3JlYXRlIHRocmVhZHMgaW5zaWRlIGEgZGVhdGggdGVzdCBzdGF0ZW1lbnQ7IHRoZXkg
YXJlCi1leGVjdXRlZCBpbiBhIHNlcGFyYXRlIHByb2Nlc3MgYW5kIGNhbm5vdCBhZmZlY3QgdGhl
IHBhcmVudC4KLQotIyMgRGVhdGggVGVzdCBTdHlsZXMgIyMKLQotVGhlICJ0aHJlYWRzYWZlIiBk
ZWF0aCB0ZXN0IHN0eWxlIHdhcyBpbnRyb2R1Y2VkIGluIG9yZGVyIHRvIGhlbHAgbWl0aWdhdGUg
dGhlCi1yaXNrcyBvZiB0ZXN0aW5nIGluIGEgcG9zc2libHkgbXVsdGl0aHJlYWRlZCBlbnZpcm9u
bWVudC4gSXQgdHJhZGVzIGluY3JlYXNlZAotdGVzdCBleGVjdXRpb24gdGltZSAocG90ZW50aWFs
bHkgZHJhbWF0aWNhbGx5IHNvKSBmb3IgaW1wcm92ZWQgdGhyZWFkIHNhZmV0eS4KLVdlIHN1Z2dl
c3QgdXNpbmcgdGhlIGZhc3RlciwgZGVmYXVsdCAiZmFzdCIgc3R5bGUgdW5sZXNzIHlvdXIgdGVz
dCBoYXMgc3BlY2lmaWMKLXByb2JsZW1zIHdpdGggaXQuCi0KLVlvdSBjYW4gY2hvb3NlIGEgcGFy
dGljdWxhciBzdHlsZSBvZiBkZWF0aCB0ZXN0cyBieSBzZXR0aW5nIHRoZSBmbGFnCi1wcm9ncmFt
bWF0aWNhbGx5OgotCi1gYGAKLTo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHls
ZSA9ICJ0aHJlYWRzYWZlIjsKLWBgYAotCi1Zb3UgY2FuIGRvIHRoaXMgaW4gYG1haW4oKWAgdG8g
c2V0IHRoZSBzdHlsZSBmb3IgYWxsIGRlYXRoIHRlc3RzIGluIHRoZQotYmluYXJ5LCBvciBpbiBp
bmRpdmlkdWFsIHRlc3RzLiBSZWNhbGwgdGhhdCBmbGFncyBhcmUgc2F2ZWQgYmVmb3JlIHJ1bm5p
bmcgZWFjaAotdGVzdCBhbmQgcmVzdG9yZWQgYWZ0ZXJ3YXJkcywgc28geW91IG5lZWQgbm90IGRv
IHRoYXQgeW91cnNlbGYuIEZvciBleGFtcGxlOgotCi1gYGAKLVRFU1QoTXlEZWF0aFRlc3QsIFRl
c3RPbmUpIHsKLSAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRo
cmVhZHNhZmUiOwotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAidGhyZWFkc2FmZSIgc3R5
bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotVEVTVChNeURl
YXRoVGVzdCwgVGVzdFR3bykgewotICAvLyBUaGlzIHRlc3QgaXMgcnVuIGluIHRoZSAiZmFzdCIg
c3R5bGU6Ci0gIEFTU0VSVF9ERUFUSChUaGlzU2hvdWxkRGllKCksICIiKTsKLX0KLQotaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3Qo
JmFyZ2MsIGFyZ3YpOwotICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUg
PSAiZmFzdCI7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAKLQotIyMgQ2F2ZWF0
cyAjIwotCi1UaGUgX3N0YXRlbWVudF8gYXJndW1lbnQgb2YgYEFTU0VSVF9FWElUKClgIGNhbiBi
ZSBhbnkgdmFsaWQgQysrIHN0YXRlbWVudC4KLUlmIGl0IGxlYXZlcyB0aGUgY3VycmVudCBmdW5j
dGlvbiB2aWEgYSBgcmV0dXJuYCBzdGF0ZW1lbnQgb3IgYnkgdGhyb3dpbmcgYW4gZXhjZXB0aW9u
LAotdGhlIGRlYXRoIHRlc3QgaXMgY29uc2lkZXJlZCB0byBoYXZlIGZhaWxlZC4gIFNvbWUgR29v
Z2xlIFRlc3QgbWFjcm9zIG1heSByZXR1cm4KLWZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKGUu
Zy4gYEFTU0VSVF9UUlVFKClgKSwgc28gYmUgc3VyZSB0byBhdm9pZCB0aGVtIGluIF9zdGF0ZW1l
bnRfLgotCi1TaW5jZSBfc3RhdGVtZW50XyBydW5zIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBhbnkg
aW4tbWVtb3J5IHNpZGUgZWZmZWN0IChlLmcuCi1tb2RpZnlpbmcgYSB2YXJpYWJsZSwgcmVsZWFz
aW5nIG1lbW9yeSwgZXRjKSBpdCBjYXVzZXMgd2lsbCBfbm90XyBiZSBvYnNlcnZhYmxlCi1pbiB0
aGUgcGFyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIGlmIHlvdSByZWxlYXNlIG1lbW9yeSBp
biBhIGRlYXRoIHRlc3QsCi15b3VyIHByb2dyYW0gd2lsbCBmYWlsIHRoZSBoZWFwIGNoZWNrIGFz
IHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIG5ldmVyIHNlZSB0aGUKLW1lbW9yeSByZWNsYWltZWQu
IFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgeW91IGNhbgotCi0gIDEuIHRyeSBub3QgdG8gZnJlZSBt
ZW1vcnkgaW4gYSBkZWF0aCB0ZXN0OwotICAxLiBmcmVlIHRoZSBtZW1vcnkgYWdhaW4gaW4gdGhl
IHBhcmVudCBwcm9jZXNzOyBvcgotICAxLiBkbyBub3QgdXNlIHRoZSBoZWFwIGNoZWNrZXIgaW4g
eW91ciBwcm9ncmFtLgotCi1EdWUgdG8gYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCB5b3UgY2Fu
bm90IHBsYWNlIG11bHRpcGxlIGRlYXRoIHRlc3QKLWFzc2VydGlvbnMgb24gdGhlIHNhbWUgbGlu
ZTsgb3RoZXJ3aXNlLCBjb21waWxhdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiB1bm9idmlvdXMKLWVy
cm9yIG1lc3NhZ2UuCi0KLURlc3BpdGUgdGhlIGltcHJvdmVkIHRocmVhZCBzYWZldHkgYWZmb3Jk
ZWQgYnkgdGhlICJ0aHJlYWRzYWZlIiBzdHlsZSBvZiBkZWF0aAotdGVzdCwgdGhyZWFkIHByb2Js
ZW1zIHN1Y2ggYXMgZGVhZGxvY2sgYXJlIHN0aWxsIHBvc3NpYmxlIGluIHRoZSBwcmVzZW5jZSBv
ZgotaGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIGBwdGhyZWFkX2F0Zm9yaygzKWAuCi0KLSMgVXNp
bmcgQXNzZXJ0aW9ucyBpbiBTdWItcm91dGluZXMgIwotCi0jIyBBZGRpbmcgVHJhY2VzIHRvIEFz
c2VydGlvbnMgIyMKLQotSWYgYSB0ZXN0IHN1Yi1yb3V0aW5lIGlzIGNhbGxlZCBmcm9tIHNldmVy
YWwgcGxhY2VzLCB3aGVuIGFuIGFzc2VydGlvbgotaW5zaWRlIGl0IGZhaWxzLCBpdCBjYW4gYmUg
aGFyZCB0byB0ZWxsIHdoaWNoIGludm9jYXRpb24gb2YgdGhlCi1zdWItcm91dGluZSB0aGUgZmFp
bHVyZSBpcyBmcm9tLiAgWW91IGNhbiBhbGxldmlhdGUgdGhpcyBwcm9ibGVtIHVzaW5nCi1leHRy
YSBsb2dnaW5nIG9yIGN1c3RvbSBmYWlsdXJlIG1lc3NhZ2VzLCBidXQgdGhhdCB1c3VhbGx5IGNs
dXR0ZXJzIHVwCi15b3VyIHRlc3RzLiBBIGJldHRlciBzb2x1dGlvbiBpcyB0byB1c2UgdGhlIGBT
Q09QRURfVFJBQ0VgIG1hY3JvOgotCi18IGBTQ09QRURfVFJBQ0UoYF9tZXNzYWdlX2ApO2AgfAot
fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotd2hlcmUgX21lc3NhZ2VfIGNhbiBi
ZSBhbnl0aGluZyBzdHJlYW1hYmxlIHRvIGBzdGQ6Om9zdHJlYW1gLiBUaGlzCi1tYWNybyB3aWxs
IGNhdXNlIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0aGUgZ2l2ZW4K
LW1lc3NhZ2UgdG8gYmUgYWRkZWQgaW4gZXZlcnkgZmFpbHVyZSBtZXNzYWdlLiBUaGUgZWZmZWN0
IHdpbGwgYmUKLXVuZG9uZSB3aGVuIHRoZSBjb250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBsZXhp
Y2FsIHNjb3BlLgotCi1Gb3IgZXhhbXBsZSwKLQotYGBgCi0xMDogdm9pZCBTdWIxKGludCBuKSB7
Ci0xMTogICBFWFBFQ1RfRVEoMSwgQmFyKG4pKTsKLTEyOiAgIEVYUEVDVF9FUSgyLCBCYXIobiAr
IDEpKTsKLTEzOiB9Ci0xNDoKLTE1OiBURVNUKEZvb1Rlc3QsIEJhcikgewotMTY6ICAgewotMTc6
ICAgICBTQ09QRURfVFJBQ0UoIkEiKTsgIC8vIFRoaXMgdHJhY2UgcG9pbnQgd2lsbCBiZSBpbmNs
dWRlZCBpbgotMTg6ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGZhaWx1cmUgaW4g
dGhpcyBzY29wZS4KLTE5OiAgICAgU3ViMSgxKTsKLTIwOiAgIH0KLTIxOiAgIC8vIE5vdyBpdCB3
b24ndC4KLTIyOiAgIFN1YjEoOSk7Ci0yMzogfQotYGBgCi0KLWNvdWxkIHJlc3VsdCBpbiBtZXNz
YWdlcyBsaWtlIHRoZXNlOgotCi1gYGAKLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTE6IEZhaWx1cmUK
LVZhbHVlIG9mOiBCYXIobikKLUV4cGVjdGVkOiAxCi0gIEFjdHVhbDogMgotICAgVHJhY2U6Ci1w
YXRoL3RvL2Zvb190ZXN0LmNjOjE3OiBBCi0KLXBhdGgvdG8vZm9vX3Rlc3QuY2M6MTI6IEZhaWx1
cmUKLVZhbHVlIG9mOiBCYXIobiArIDEpCi1FeHBlY3RlZDogMgotICBBY3R1YWw6IDMKLWBgYAot
Ci1XaXRob3V0IHRoZSB0cmFjZSwgaXQgd291bGQndmUgYmVlbiBkaWZmaWN1bHQgdG8ga25vdyB3
aGljaCBpbnZvY2F0aW9uCi1vZiBgU3ViMSgpYCB0aGUgdHdvIGZhaWx1cmVzIGNvbWUgZnJvbSBy
ZXNwZWN0aXZlbHkuIChZb3UgY291bGQgYWRkIGFuCi1leHRyYSBtZXNzYWdlIHRvIGVhY2ggYXNz
ZXJ0aW9uIGluIGBTdWIxKClgIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBvZgotYG5gLCBidXQgdGhh
dCdzIHRlZGlvdXMuKQotCi1Tb21lIHRpcHMgb24gdXNpbmcgYFNDT1BFRF9UUkFDRWA6Ci0KLSAg
MS4gV2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2UsIGl0J3Mgb2Z0ZW4gZW5vdWdoIHRvIHVzZSBgU0NP
UEVEX1RSQUNFYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgc3ViLXJvdXRpbmUsIGluc3RlYWQgb2Yg
YXQgZWFjaCBjYWxsIHNpdGUuCi0gIDEuIFdoZW4gY2FsbGluZyBzdWItcm91dGluZXMgaW5zaWRl
IGEgbG9vcCwgbWFrZSB0aGUgbG9vcCBpdGVyYXRvciBwYXJ0IG9mIHRoZSBtZXNzYWdlIGluIGBT
Q09QRURfVFJBQ0VgIHN1Y2ggdGhhdCB5b3UgY2FuIGtub3cgd2hpY2ggaXRlcmF0aW9uIHRoZSBm
YWlsdXJlIGlzIGZyb20uCi0gIDEuIFNvbWV0aW1lcyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHRy
YWNlIHBvaW50IGlzIGVub3VnaCBmb3IgaWRlbnRpZnlpbmcgdGhlIHBhcnRpY3VsYXIgaW52b2Nh
dGlvbiBvZiBhIHN1Yi1yb3V0aW5lLiBJbiB0aGlzIGNhc2UsIHlvdSBkb24ndCBoYXZlIHRvIGNo
b29zZSBhIHVuaXF1ZSBtZXNzYWdlIGZvciBgU0NPUEVEX1RSQUNFYC4gWW91IGNhbiBzaW1wbHkg
dXNlIGAiImAuCi0gIDEuIFlvdSBjYW4gdXNlIGBTQ09QRURfVFJBQ0VgIGluIGFuIGlubmVyIHNj
b3BlIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBvdXRlciBzY29wZS4gSW4gdGhpcyBjYXNlLCBh
bGwgYWN0aXZlIHRyYWNlIHBvaW50cyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBmYWlsdXJlIG1l
c3NhZ2VzLCBpbiByZXZlcnNlIG9yZGVyIHRoZXkgYXJlIGVuY291bnRlcmVkLgotICAxLiBUaGUg
dHJhY2UgZHVtcCBpcyBjbGlja2FibGUgaW4gRW1hY3MnIGNvbXBpbGF0aW9uIGJ1ZmZlciAtIGhp
dCByZXR1cm4gb24gYSBsaW5lIG51bWJlciBhbmQgeW91J2xsIGJlIHRha2VuIHRvIHRoYXQgbGlu
ZSBpbiB0aGUgc291cmNlIGZpbGUhCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIyBQcm9wYWdhdGluZyBGYXRhbCBGYWlsdXJlcyAjIwotCi1BIGNvbW1vbiBwaXRm
YWxsIHdoZW4gdXNpbmcgYEFTU0VSVF8qYCBhbmQgYEZBSUwqYCBpcyBub3QgdW5kZXJzdGFuZGlu
ZyB0aGF0Ci13aGVuIHRoZXkgZmFpbCB0aGV5IG9ubHkgYWJvcnQgdGhlIF9jdXJyZW50IGZ1bmN0
aW9uXywgbm90IHRoZSBlbnRpcmUgdGVzdC4gRm9yCi1leGFtcGxlLCB0aGUgZm9sbG93aW5nIHRl
c3Qgd2lsbCBzZWdmYXVsdDoKLWBgYAotdm9pZCBTdWJyb3V0aW5lKCkgewotICAvLyBHZW5lcmF0
ZXMgYSBmYXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCi0gIEFT
U0VSVF9FUSgxLCAyKTsKLSAgLy8gVGhlIGZvbGxvd2luZyB3b24ndCBiZSBleGVjdXRlZC4KLSAg
Li4uCi19Ci0KLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIFN1YnJvdXRpbmUoKTsKLSAgLy8gVGhl
IGludGVuZGVkIGJlaGF2aW9yIGlzIGZvciB0aGUgZmF0YWwgZmFpbHVyZQotICAvLyBpbiBTdWJy
b3V0aW5lKCkgdG8gYWJvcnQgdGhlIGVudGlyZSB0ZXN0LgotICAvLyBUaGUgYWN0dWFsIGJlaGF2
aW9yOiB0aGUgZnVuY3Rpb24gZ29lcyBvbiBhZnRlciBTdWJyb3V0aW5lKCkgcmV0dXJucy4KLSAg
aW50KiBwID0gTlVMTDsKLSAgKnAgPSAzOyAvLyBTZWdmYXVsdCEKLX0KLWBgYAotCi1TaW5jZSB3
ZSBkb24ndCB1c2UgZXhjZXB0aW9ucywgaXQgaXMgdGVjaG5pY2FsbHkgaW1wb3NzaWJsZSB0bwot
aW1wbGVtZW50IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBoZXJlLiAgVG8gYWxsZXZpYXRlIHRoaXMs
IEdvb2dsZSBUZXN0Ci1wcm92aWRlcyB0d28gc29sdXRpb25zLiAgWW91IGNvdWxkIHVzZSBlaXRo
ZXIgdGhlCi1gKEFTU0VSVHxFWFBFQ1QpX05PX0ZBVEFMX0ZBSUxVUkVgIGFzc2VydGlvbnMgb3Ig
dGhlCi1gSGFzRmF0YWxGYWlsdXJlKClgIGZ1bmN0aW9uLiAgVGhleSBhcmUgZGVzY3JpYmVkIGlu
IHRoZSBmb2xsb3dpbmcgdHdvCi1zdWJzZWN0aW9ucy4KLQotIyMjIEFzc2VydGluZyBvbiBTdWJy
b3V0aW5lcyAjIyMKLQotQXMgc2hvd24gYWJvdmUsIGlmIHlvdXIgdGVzdCBjYWxscyBhIHN1YnJv
dXRpbmUgdGhhdCBoYXMgYW4gYEFTU0VSVF8qYAotZmFpbHVyZSBpbiBpdCwgdGhlIHRlc3Qgd2ls
bCBjb250aW51ZSBhZnRlciB0aGUgc3Vicm91dGluZQotcmV0dXJucy4gVGhpcyBtYXkgbm90IGJl
IHdoYXQgeW91IHdhbnQuCi0KLU9mdGVuIHBlb3BsZSB3YW50IGZhdGFsIGZhaWx1cmVzIHRvIHBy
b3BhZ2F0ZSBsaWtlIGV4Y2VwdGlvbnMuICBGb3IKLXRoYXQgR29vZ2xlIFRlc3Qgb2ZmZXJzIHRo
ZSBmb2xsb3dpbmcgbWFjcm9zOgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZhdGFs
IGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX05PX0ZBVEFM
X0ZBSUxVUkUoYF9zdGF0ZW1lbnRfYCk7YCB8IGBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRShgX3N0
YXRlbWVudF9gKTtgIHwgX3N0YXRlbWVudF8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgbmV3IGZhdGFs
IGZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVhZC4gfAotCi1Pbmx5IGZhaWx1cmVzIGluIHRo
ZSB0aHJlYWQgdGhhdCBleGVjdXRlcyB0aGUgYXNzZXJ0aW9uIGFyZSBjaGVja2VkIHRvCi1kZXRl
cm1pbmUgdGhlIHJlc3VsdCBvZiB0aGlzIHR5cGUgb2YgYXNzZXJ0aW9ucy4gIElmIF9zdGF0ZW1l
bnRfCi1jcmVhdGVzIG5ldyB0aHJlYWRzLCBmYWlsdXJlcyBpbiB0aGVzZSB0aHJlYWRzIGFyZSBp
Z25vcmVkLgotCi1FeGFtcGxlczoKLQotYGBgCi1BU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShGb28o
KSk7Ci0KLWludCBpOwotRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoewotICBpID0gQmFyKCk7Ci19
KTsKLWBgYAotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4gQXNzZXJ0aW9u
cyBmcm9tIG11bHRpcGxlIHRocmVhZHMKLWFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQot
IyMjIENoZWNraW5nIGZvciBGYWlsdXJlcyBpbiB0aGUgQ3VycmVudCBUZXN0ICMjIwotCi1gSGFz
RmF0YWxGYWlsdXJlKClgIGluIHRoZSBgOjp0ZXN0aW5nOjpUZXN0YCBjbGFzcyByZXR1cm5zIGB0
cnVlYCBpZiBhbgotYXNzZXJ0aW9uIGluIHRoZSBjdXJyZW50IHRlc3QgaGFzIHN1ZmZlcmVkIGEg
ZmF0YWwgZmFpbHVyZS4gVGhpcwotYWxsb3dzIGZ1bmN0aW9ucyB0byBjYXRjaCBmYXRhbCBmYWls
dXJlcyBpbiBhIHN1Yi1yb3V0aW5lIGFuZCByZXR1cm4KLWVhcmx5LgotCi1gYGAKLWNsYXNzIFRl
c3QgewotIHB1YmxpYzoKLSAgLi4uCi0gIHN0YXRpYyBib29sIEhhc0ZhdGFsRmFpbHVyZSgpOwot
fTsKLWBgYAotCi1UaGUgdHlwaWNhbCB1c2FnZSwgd2hpY2ggYmFzaWNhbGx5IHNpbXVsYXRlcyB0
aGUgYmVoYXZpb3Igb2YgYSB0aHJvd24KLWV4Y2VwdGlvbiwgaXM6Ci0KLWBgYAotVEVTVChGb29U
ZXN0LCBCYXIpIHsKLSAgU3Vicm91dGluZSgpOwotICAvLyBBYm9ydHMgaWYgU3Vicm91dGluZSgp
IGhhZCBhIGZhdGFsIGZhaWx1cmUuCi0gIGlmIChIYXNGYXRhbEZhaWx1cmUoKSkKLSAgICByZXR1
cm47Ci0gIC8vIFRoZSBmb2xsb3dpbmcgd29uJ3QgYmUgZXhlY3V0ZWQuCi0gIC4uLgotfQotYGBg
Ci0KLUlmIGBIYXNGYXRhbEZhaWx1cmUoKWAgaXMgdXNlZCBvdXRzaWRlIG9mIGBURVNUKClgICwg
YFRFU1RfRigpYCAsIG9yIGEgdGVzdAotZml4dHVyZSwgeW91IG11c3QgYWRkIHRoZSBgOjp0ZXN0
aW5nOjpUZXN0OjpgIHByZWZpeCwgYXMgaW46Ci0KLWBgYAotaWYgKDo6dGVzdGluZzo6VGVzdDo6
SGFzRmF0YWxGYWlsdXJlKCkpCi0gIHJldHVybjsKLWBgYAotCi1TaW1pbGFybHksIGBIYXNOb25m
YXRhbEZhaWx1cmUoKWAgcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGN1cnJlbnQgdGVzdAotaGFzIGF0
IGxlYXN0IG9uZSBub24tZmF0YWwgZmFpbHVyZSwgYW5kIGBIYXNGYWlsdXJlKClgIHJldHVybnMg
YHRydWVgCi1pZiB0aGUgY3VycmVudCB0ZXN0IGhhcyBhdCBsZWFzdCBvbmUgZmFpbHVyZSBvZiBl
aXRoZXIga2luZC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuICBgSGFz
Tm9uZmF0YWxGYWlsdXJlKClgIGFuZAotYEhhc0ZhaWx1cmUoKWAgYXJlIGF2YWlsYWJsZSBzaW5j
ZSB2ZXJzaW9uIDEuNC4wLgotCi0jIExvZ2dpbmcgQWRkaXRpb25hbCBJbmZvcm1hdGlvbiAjCi0K
LUluIHlvdXIgdGVzdCBjb2RlLCB5b3UgY2FuIGNhbGwgYFJlY29yZFByb3BlcnR5KCJrZXkiLCB2
YWx1ZSlgIHRvIGxvZwotYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgd2hlcmUgYHZhbHVlYCBjYW4g
YmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIGBpbnRgLiBUaGUgX2xhc3RfIHZhbHVlIHJlY29yZGVk
IGZvciBhIGtleSB3aWxsIGJlIGVtaXR0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKLWlmIHlvdSBzcGVj
aWZ5IG9uZS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0Ci0KLWBgYAotVEVTVF9GKFdpZGdldFVzYWdl
VGVzdCwgTWluQW5kTWF4V2lkZ2V0cykgewotICBSZWNvcmRQcm9wZXJ0eSgiTWF4aW11bVdpZGdl
dHMiLCBDb21wdXRlTWF4VXNhZ2UoKSk7Ci0gIFJlY29yZFByb3BlcnR5KCJNaW5pbXVtV2lkZ2V0
cyIsIENvbXB1dGVNaW5Vc2FnZSgpKTsKLX0KLWBgYAotCi13aWxsIG91dHB1dCBYTUwgbGlrZSB0
aGlzOgotCi1gYGAKLS4uLgotICA8dGVzdGNhc2UgbmFtZT0iTWluQW5kTWF4V2lkZ2V0cyIgc3Rh
dHVzPSJydW4iIHRpbWU9IjYiIGNsYXNzbmFtZT0iV2lkZ2V0VXNhZ2VUZXN0IgotICAgICAgICAg
ICAgTWF4aW11bVdpZGdldHM9IjEyIgotICAgICAgICAgICAgTWluaW11bVdpZGdldHM9IjkiIC8+
Ci0uLi4KLWBgYAotCi1fTm90ZV86Ci0gICogYFJlY29yZFByb3BlcnR5KClgIGlzIGEgc3RhdGlj
IG1lbWJlciBvZiB0aGUgYFRlc3RgIGNsYXNzLiBUaGVyZWZvcmUgaXQgbmVlZHMgdG8gYmUgcHJl
Zml4ZWQgd2l0aCBgOjp0ZXN0aW5nOjpUZXN0OjpgIGlmIHVzZWQgb3V0c2lkZSBvZiB0aGUgYFRF
U1RgIGJvZHkgYW5kIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuCi0gICogYGtleWAgbXVzdCBiZSBh
IHZhbGlkIFhNTCBhdHRyaWJ1dGUgbmFtZSwgYW5kIGNhbm5vdCBjb25mbGljdCB3aXRoIHRoZSBv
bmVzIGFscmVhZHkgdXNlZCBieSBHb29nbGUgVGVzdCAoYG5hbWVgLCBgc3RhdHVzYCwgYHRpbWVg
LCBgY2xhc3NuYW1lYCwgYHR5cGVfcGFyYW1gLCBhbmQgYHZhbHVlX3BhcmFtYCkuCi0gICogQ2Fs
bGluZyBgUmVjb3JkUHJvcGVydHkoKWAgb3V0c2lkZSBvZiB0aGUgbGlmZXNwYW4gb2YgYSB0ZXN0
IGlzIGFsbG93ZWQuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYSB0ZXN0IGJ1dCBiZXR3ZWVu
IGEgdGVzdCBjYXNlJ3MgYFNldFVwVGVzdENhc2UoKWAgYW5kIGBUZWFyRG93blRlc3RDYXNlKClg
IG1ldGhvZHMsIGl0IHdpbGwgYmUgYXR0cmlidXRlZCB0byB0aGUgWE1MIGVsZW1lbnQgZm9yIHRo
ZSB0ZXN0IGNhc2UuIElmIGl0J3MgY2FsbGVkIG91dHNpZGUgb2YgYWxsIHRlc3QgY2FzZXMgKGUu
Zy4gaW4gYSB0ZXN0IGVudmlyb25tZW50KSwgaXQgd2lsbCBiZSBhdHRyaWJ1dGVkIHRvIHRoZSB0
b3AtbGV2ZWwgWE1MIGVsZW1lbnQuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIFNoYXJpbmcgUmVzb3VyY2VzIEJldHdlZW4gVGVzdHMgaW4gdGhlIFNhbWUgVGVz
dCBDYXNlICMKLQotCi0KLUdvb2dsZSBUZXN0IGNyZWF0ZXMgYSBuZXcgdGVzdCBmaXh0dXJlIG9i
amVjdCBmb3IgZWFjaCB0ZXN0IGluIG9yZGVyIHRvIG1ha2UKLXRlc3RzIGluZGVwZW5kZW50IGFu
ZCBlYXNpZXIgdG8gZGVidWcuIEhvd2V2ZXIsIHNvbWV0aW1lcyB0ZXN0cyB1c2UgcmVzb3VyY2Vz
Ci10aGF0IGFyZSBleHBlbnNpdmUgdG8gc2V0IHVwLCBtYWtpbmcgdGhlIG9uZS1jb3B5LXBlci10
ZXN0IG1vZGVsIHByb2hpYml0aXZlbHkKLWV4cGVuc2l2ZS4KLQotSWYgdGhlIHRlc3RzIGRvbid0
IGNoYW5nZSB0aGUgcmVzb3VyY2UsIHRoZXJlJ3Mgbm8gaGFybSBpbiB0aGVtIHNoYXJpbmcgYQot
c2luZ2xlIHJlc291cmNlIGNvcHkuIFNvLCBpbiBhZGRpdGlvbiB0byBwZXItdGVzdCBzZXQtdXAv
dGVhci1kb3duLCBHb29nbGUgVGVzdAotYWxzbyBzdXBwb3J0cyBwZXItdGVzdC1jYXNlIHNldC11
cC90ZWFyLWRvd24uIFRvIHVzZSBpdDoKLQotICAxLiBJbiB5b3VyIHRlc3QgZml4dHVyZSBjbGFz
cyAoc2F5IGBGb29UZXN0YCApLCBkZWZpbmUgYXMgYHN0YXRpY2Agc29tZSBtZW1iZXIgdmFyaWFi
bGVzIHRvIGhvbGQgdGhlIHNoYXJlZCByZXNvdXJjZXMuCi0gIDEuIEluIHRoZSBzYW1lIHRlc3Qg
Zml4dHVyZSBjbGFzcywgZGVmaW5lIGEgYHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKWAgZnVu
Y3Rpb24gKHJlbWVtYmVyIG5vdCB0byBzcGVsbCBpdCBhcyAqKmBTZXR1cFRlc3RDYXNlYCoqIHdp
dGggYSBzbWFsbCBgdWAhKSB0byBzZXQgdXAgdGhlIHNoYXJlZCByZXNvdXJjZXMgYW5kIGEgYHN0
YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKWAgZnVuY3Rpb24gdG8gdGVhciB0aGVtIGRvd24u
Ci0KLVRoYXQncyBpdCEgR29vZ2xlIFRlc3QgYXV0b21hdGljYWxseSBjYWxscyBgU2V0VXBUZXN0
Q2FzZSgpYCBiZWZvcmUgcnVubmluZyB0aGUKLV9maXJzdCB0ZXN0XyBpbiB0aGUgYEZvb1Rlc3Rg
IHRlc3QgY2FzZSAoaS5lLiBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0Ci1gRm9vVGVzdGAgb2Jq
ZWN0KSwgYW5kIGNhbGxzIGBUZWFyRG93blRlc3RDYXNlKClgIGFmdGVyIHJ1bm5pbmcgdGhlIF9s
YXN0IHRlc3RfCi1pbiBpdCAoaS5lLiBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBgRm9vVGVzdGAg
b2JqZWN0KS4gSW4gYmV0d2VlbiwgdGhlIHRlc3RzCi1jYW4gdXNlIHRoZSBzaGFyZWQgcmVzb3Vy
Y2VzLgotCi1SZW1lbWJlciB0aGF0IHRoZSB0ZXN0IG9yZGVyIGlzIHVuZGVmaW5lZCwgc28geW91
ciBjb2RlIGNhbid0IGRlcGVuZCBvbiBhIHRlc3QKLXByZWNlZGluZyBvciBmb2xsb3dpbmcgYW5v
dGhlci4gQWxzbywgdGhlIHRlc3RzIG11c3QgZWl0aGVyIG5vdCBtb2RpZnkgdGhlCi1zdGF0ZSBv
ZiBhbnkgc2hhcmVkIHJlc291cmNlLCBvciwgaWYgdGhleSBkbyBtb2RpZnkgdGhlIHN0YXRlLCB0
aGV5IG11c3QKLXJlc3RvcmUgdGhlIHN0YXRlIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBiZWZvcmUg
cGFzc2luZyBjb250cm9sIHRvIHRoZSBuZXh0Ci10ZXN0LgotCi1IZXJlJ3MgYW4gZXhhbXBsZSBv
ZiBwZXItdGVzdC1jYXNlIHNldC11cCBhbmQgdGVhci1kb3duOgotYGBgCi1jbGFzcyBGb29UZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBQZXItdGVzdC1j
YXNlIHNldC11cC4KLSAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdGVzdCBpbiB0aGlzIHRl
c3QgY2FzZS4KLSAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90IG5lZWRlZC4KLSAgc3RhdGljIHZv
aWQgU2V0VXBUZXN0Q2FzZSgpIHsKLSAgICBzaGFyZWRfcmVzb3VyY2VfID0gbmV3IC4uLjsKLSAg
fQotCi0gIC8vIFBlci10ZXN0LWNhc2UgdGVhci1kb3duLgotICAvLyBDYWxsZWQgYWZ0ZXIgdGhl
IGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgLy8gQ2FuIGJlIG9taXR0ZWQgaWYgbm90
IG5lZWRlZC4KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUg
c2hhcmVkX3Jlc291cmNlXzsKLSAgICBzaGFyZWRfcmVzb3VyY2VfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFlvdSBjYW4gZGVmaW5lIHBlci10ZXN0IHNldC11cCBhbmQgdGVhci1kb3duIGxvZ2ljIGFz
IHVzdWFsLgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7IC4uLiB9Ci0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsgLi4uIH0KLQotICAvLyBTb21lIGV4cGVuc2l2ZSByZXNvdXJjZSBzaGFyZWQg
YnkgYWxsIHRlc3RzLgotICBzdGF0aWMgVCogc2hhcmVkX3Jlc291cmNlXzsKLX07Ci0KLVQqIEZv
b1Rlc3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwotCi1URVNUX0YoRm9vVGVzdCwgVGVzdDEp
IHsKLSAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jlc291cmNlIGhlcmUgLi4uCi19Ci1U
RVNUX0YoRm9vVGVzdCwgVGVzdDIpIHsKLSAgLi4uIHlvdSBjYW4gcmVmZXIgdG8gc2hhcmVkX3Jl
c291cmNlIGhlcmUgLi4uCi19Ci1gYGAKLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dz
LCBNYWMuCi0KLSMgR2xvYmFsIFNldC1VcCBhbmQgVGVhci1Eb3duICMKLQotSnVzdCBhcyB5b3Ug
Y2FuIGRvIHNldC11cCBhbmQgdGVhci1kb3duIGF0IHRoZSB0ZXN0IGxldmVsIGFuZCB0aGUgdGVz
dCBjYXNlCi1sZXZlbCwgeW91IGNhbiBhbHNvIGRvIGl0IGF0IHRoZSB0ZXN0IHByb2dyYW0gbGV2
ZWwuIEhlcmUncyBob3cuCi0KLUZpcnN0LCB5b3Ugc3ViY2xhc3MgdGhlIGA6OnRlc3Rpbmc6OkVu
dmlyb25tZW50YCBjbGFzcyB0byBkZWZpbmUgYSB0ZXN0Ci1lbnZpcm9ubWVudCwgd2hpY2gga25v
d3MgaG93IHRvIHNldC11cCBhbmQgdGVhci1kb3duOgotCi1gYGAKLWNsYXNzIEVudmlyb25tZW50
IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgfkVudmlyb25tZW50KCkge30KLSAgLy8gT3ZlcnJpZGUg
dGhpcyB0byBkZWZpbmUgaG93IHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQuCi0gIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHt9Ci0gIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFy
IGRvd24gdGhlIGVudmlyb25tZW50LgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQotfTsK
LWBgYAotCi1UaGVuLCB5b3UgcmVnaXN0ZXIgYW4gaW5zdGFuY2Ugb2YgeW91ciBlbnZpcm9ubWVu
dCBjbGFzcyB3aXRoIEdvb2dsZSBUZXN0IGJ5Ci1jYWxsaW5nIHRoZSBgOjp0ZXN0aW5nOjpBZGRH
bG9iYWxUZXN0RW52aXJvbm1lbnQoKWAgZnVuY3Rpb246Ci0KLWBgYAotRW52aXJvbm1lbnQqIEFk
ZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52KTsKLWBgYAotCi1Ob3csIHdo
ZW4gYFJVTl9BTExfVEVTVFMoKWAgaXMgY2FsbGVkLCBpdCBmaXJzdCBjYWxscyB0aGUgYFNldFVw
KClgIG1ldGhvZCBvZgotdGhlIGVudmlyb25tZW50IG9iamVjdCwgdGhlbiBydW5zIHRoZSB0ZXN0
cyBpZiB0aGVyZSB3YXMgbm8gZmF0YWwgZmFpbHVyZXMsIGFuZAotZmluYWxseSBjYWxscyBgVGVh
ckRvd24oKWAgb2YgdGhlIGVudmlyb25tZW50IG9iamVjdC4KLQotSXQncyBPSyB0byByZWdpc3Rl
ciBtdWx0aXBsZSBlbnZpcm9ubWVudCBvYmplY3RzLiBJbiB0aGlzIGNhc2UsIHRoZWlyIGBTZXRV
cCgpYAotd2lsbCBiZSBjYWxsZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlZ2lzdGVyZWQsIGFu
ZCB0aGVpciBgVGVhckRvd24oKWAgd2lsbCBiZQotY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVy
LgotCi1Ob3RlIHRoYXQgR29vZ2xlIFRlc3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSByZWdpc3Rl
cmVkIGVudmlyb25tZW50IG9iamVjdHMuCi1UaGVyZWZvcmUgKipkbyBub3QgZGVsZXRlIHRoZW0q
KiBieSB5b3Vyc2VsZi4KLQotWW91IHNob3VsZCBjYWxsIGBBZGRHbG9iYWxUZXN0RW52aXJvbm1l
bnQoKWAgYmVmb3JlIGBSVU5fQUxMX1RFU1RTKClgIGlzCi1jYWxsZWQsIHByb2JhYmx5IGluIGBt
YWluKClgLiBJZiB5b3UgdXNlIGBndGVzdF9tYWluYCwgeW91IG5lZWQgdG8gICAgICBjYWxsCi10
aGlzIGJlZm9yZSBgbWFpbigpYCBzdGFydHMgZm9yIGl0IHRvIHRha2UgZWZmZWN0LiBPbmUgd2F5
IHRvIGRvIHRoaXMgaXMgdG8KLWRlZmluZSBhIGdsb2JhbCB2YXJpYWJsZSBsaWtlIHRoaXM6Ci0K
LWBgYAotOjp0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9vX2VudiA9IDo6dGVzdGluZzo6
QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyBGb29FbnZpcm9ubWVudCk7Ci1gYGAKLQotSG93
ZXZlciwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHlvdSB0byB3cml0ZSB5b3VyIG93biBgbWFpbigp
YCBhbmQgY2FsbAotYEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgpYCB0aGVyZSwgYXMgcmVseWlu
ZyBvbiBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwKLXZhcmlhYmxlcyBtYWtlcyB0aGUgY29kZSBo
YXJkZXIgdG8gcmVhZCBhbmQgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4geW91Ci1yZWdpc3RlciBt
dWx0aXBsZSBlbnZpcm9ubWVudHMgZnJvbSBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgYW5k
IHRoZQotZW52aXJvbm1lbnRzIGhhdmUgZGVwZW5kZW5jaWVzIGFtb25nIHRoZW0gKHJlbWVtYmVy
IHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3QKLWd1YXJhbnRlZSB0aGUgb3JkZXIgaW4gd2hpY2gg
Z2xvYmFsIHZhcmlhYmxlcyBmcm9tIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cwotYXJlIGlu
aXRpYWxpemVkKS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLQot
IyBWYWx1ZSBQYXJhbWV0ZXJpemVkIFRlc3RzICMKLQotX1ZhbHVlLXBhcmFtZXRlcml6ZWQgdGVz
dHNfIGFsbG93IHlvdSB0byB0ZXN0IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAotcGFyYW1ldGVy
cyB3aXRob3V0IHdyaXRpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCi0KLVN1
cHBvc2UgeW91IHdyaXRlIGEgdGVzdCBmb3IgeW91ciBjb2RlIGFuZCB0aGVuIHJlYWxpemUgdGhh
dCB5b3VyIGNvZGUgaXMgYWZmZWN0ZWQgYnkgYSBwcmVzZW5jZSBvZiBhIEJvb2xlYW4gY29tbWFu
ZCBsaW5lIGZsYWcuCi0KLWBgYAotVEVTVChNeUNvZGVUZXN0LCBUZXN0Rm9vKSB7Ci0gIC8vIEEg
Y29kZSB0byB0ZXN0IGZvbygpLgotfQotYGBgCi0KLVVzdWFsbHkgcGVvcGxlIGZhY3RvciB0aGVp
ciB0ZXN0IGNvZGUgaW50byBhIGZ1bmN0aW9uIHdpdGggYSBCb29sZWFuIHBhcmFtZXRlciBpbiBz
dWNoIHNpdHVhdGlvbnMuIFRoZSBmdW5jdGlvbiBzZXRzIHRoZSBmbGFnLCB0aGVuIGV4ZWN1dGVz
IHRoZSB0ZXN0aW5nIGNvZGUuCi0KLWBgYAotdm9pZCBUZXN0Rm9vSGVscGVyKGJvb2wgZmxhZ192
YWx1ZSkgewotICBmbGFnID0gZmxhZ192YWx1ZTsKLSAgLy8gQSBjb2RlIHRvIHRlc3QgZm9vKCku
Ci19Ci0KLVRFU1QoTXlDb2RlVGVzdCwgVGVzdEZvbykgewotICBUZXN0Rm9vSGVscGVyKGZhbHNl
KTsKLSAgVGVzdEZvb0hlbHBlcih0cnVlKTsKLX0KLWBgYAotCi1CdXQgdGhpcyBzZXR1cCBoYXMg
c2VyaW91cyBkcmF3YmFja3MuIEZpcnN0LCB3aGVuIGEgdGVzdCBhc3NlcnRpb24gZmFpbHMgaW4g
eW91ciB0ZXN0cywgaXQgYmVjb21lcyB1bmNsZWFyIHdoYXQgdmFsdWUgb2YgdGhlIHBhcmFtZXRl
ciBjYXVzZWQgaXQgdG8gZmFpbC4gWW91IGNhbiBzdHJlYW0gYSBjbGFyaWZ5aW5nIG1lc3NhZ2Ug
aW50byB5b3VyIGBFWFBFQ1RgL2BBU1NFUlRgIHN0YXRlbWVudHMsIGJ1dCBpdCB5b3UnbGwgaGF2
ZSB0byBkbyBpdCB3aXRoIGFsbCBvZiB0aGVtLiBTZWNvbmQsIHlvdSBoYXZlIHRvIGFkZCBvbmUg
c3VjaCBoZWxwZXIgZnVuY3Rpb24gcGVyIHRlc3QuIFdoYXQgaWYgeW91IGhhdmUgdGVuIHRlc3Rz
PyBUd2VudHk/IEEgaHVuZHJlZD8KLQotVmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aWxsIGxl
dCB5b3Ugd3JpdGUgeW91ciB0ZXN0IG9ubHkgb25jZSBhbmQgdGhlbiBlYXNpbHkgaW5zdGFudGlh
dGUgYW5kIHJ1biBpdCB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVyIHZhbHVl
cy4KLQotSGVyZSBhcmUgc29tZSBvdGhlciBzaXR1YXRpb25zIHdoZW4gdmFsdWUtcGFyYW1ldGVy
aXplZCB0ZXN0cyBjb21lIGhhbmR5OgotCi0gICogWW91IHdhbnQgdG8gdGVzdCBkaWZmZXJlbnQg
aW1wbGVtZW50YXRpb25zIG9mIGFuIE9PIGludGVyZmFjZS4KLSAgKiBZb3Ugd2FudCB0byB0ZXN0
IHlvdXIgY29kZSBvdmVyIHZhcmlvdXMgaW5wdXRzIChhLmsuYS4gZGF0YS1kcml2ZW4gdGVzdGlu
ZykuIFRoaXMgZmVhdHVyZSBpcyBlYXN5IHRvIGFidXNlLCBzbyBwbGVhc2UgZXhlcmNpc2UgeW91
ciBnb29kIHNlbnNlIHdoZW4gZG9pbmcgaXQhCi0KLSMjIEhvdyB0byBXcml0ZSBWYWx1ZS1QYXJh
bWV0ZXJpemVkIFRlc3RzICMjCi0KLVRvIHdyaXRlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMs
IGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4dHVyZQotY2xhc3MuICBJdCBtdXN0IGJlIGRl
cml2ZWQgZnJvbSBib3RoIGA6OnRlc3Rpbmc6OlRlc3RgIGFuZAotYDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPFQ+YCAodGhlIGxhdHRlciBpcyBhIHB1cmUgaW50ZXJmYWNlKSwKLXdoZXJl
IGBUYCBpcyB0aGUgdHlwZSBvZiB5b3VyIHBhcmFtZXRlciB2YWx1ZXMuICBGb3IgY29udmVuaWVu
Y2UsIHlvdQotY2FuIGp1c3QgZGVyaXZlIHRoZSBmaXh0dXJlIGNsYXNzIGZyb20gYDo6dGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTxUPmAsCi13aGljaCBpdHNlbGYgaXMgZGVyaXZlZCBmcm9tIGJvdGgg
YDo6dGVzdGluZzo6VGVzdGAgYW5kCi1gOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VD5g
LiBgVGAgY2FuIGJlIGFueSBjb3B5YWJsZSB0eXBlLiBJZgotaXQncyBhIHJhdyBwb2ludGVyLCB5
b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUgbGlmZXNwYW4gb2YKLXRoZSBwb2lu
dGVkIHZhbHVlcy4KLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxjb25zdCBjaGFyKj4gewotICAvLyBZb3UgY2FuIGltcGxlbWVudCBhbGwgdGhl
IHVzdWFsIGZpeHR1cmUgY2xhc3MgbWVtYmVycyBoZXJlLgotICAvLyBUbyBhY2Nlc3MgdGhlIHRl
c3QgcGFyYW1ldGVyLCBjYWxsIEdldFBhcmFtKCkgZnJvbSBjbGFzcwotICAvLyBUZXN0V2l0aFBh
cmFtPFQ+LgotfTsKLQotLy8gT3IsIHdoZW4geW91IHdhbnQgdG8gYWRkIHBhcmFtZXRlcnMgdG8g
YSBwcmUtZXhpc3RpbmcgZml4dHVyZSBjbGFzczoKLWNsYXNzIEJhc2VUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7Ci0gIC4uLgotfTsKLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRl
c3QsCi0gICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNl
PGNvbnN0IGNoYXIqPiB7Ci0gIC4uLgotfTsKLWBgYAotCi1UaGVuLCB1c2UgdGhlIGBURVNUX1Bg
IG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHRlc3QgcGF0dGVybnMgdXNpbmcKLXRoaXMgZml4dHVy
ZSBhcyB5b3Ugd2FudC4gIFRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9y
Ci0icGF0dGVybiIsIHdoaWNoZXZlciB5b3UgcHJlZmVyIHRvIHRoaW5rLgotCi1gYGAKLVRFU1Rf
UChGb29UZXN0LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhlIHRl
c3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCi0gIC8vIG9mIHRoZSBUZXN0
V2l0aFBhcmFtPFQ+IGNsYXNzOgotICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgpKSk7
Ci0gIC4uLgotfQotCi1URVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKLSAgLi4uCi19Ci1g
YGAKLQotRmluYWxseSwgeW91IGNhbiB1c2UgYElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QYCB0byBp
bnN0YW50aWF0ZSB0aGUgdGVzdAotY2FzZSB3aXRoIGFueSBzZXQgb2YgcGFyYW1ldGVycyB5b3Ug
d2FudC4gR29vZ2xlIFRlc3QgZGVmaW5lcyBhIG51bWJlciBvZgotZnVuY3Rpb25zIGZvciBnZW5l
cmF0aW5nIHRlc3QgcGFyYW1ldGVycy4gVGhleSByZXR1cm4gd2hhdCB3ZSBjYWxsCi0oc3VycHJp
c2UhKSBfcGFyYW1ldGVyIGdlbmVyYXRvcnNfLiBIZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGVtLAot
d2hpY2ggYXJlIGFsbCBpbiB0aGUgYHRlc3RpbmdgIG5hbWVzcGFjZToKLQotfCBgUmFuZ2UoYmVn
aW4sIGVuZFssIHN0ZXBdKWAgfCBZaWVsZHMgdmFsdWVzIGB7YmVnaW4sIGJlZ2luK3N0ZXAsIGJl
Z2luK3N0ZXArc3RlcCwgLi4ufWAuIFRoZSB2YWx1ZXMgZG8gbm90IGluY2x1ZGUgYGVuZGAuIGBz
dGVwYCBkZWZhdWx0cyB0byAxLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwK
LXwgYFZhbHVlcyh2MSwgdjIsIC4uLiwgdk4pYCAgIHwgWWllbGRzIHZhbHVlcyBge3YxLCB2Miwg
Li4uLCB2Tn1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgVmFsdWVzSW4oY29udGFpbmVy
KWAgYW5kIGBWYWx1ZXNJbihiZWdpbiwgZW5kKWAgfCBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0
eWxlIGFycmF5LCBhbiBTVEwtc3R5bGUgY29udGFpbmVyLCBvciBhbiBpdGVyYXRvciByYW5nZSBg
W2JlZ2luLCBlbmQpYC4gYGNvbnRhaW5lcmAsIGBiZWdpbmAsIGFuZCBgZW5kYCBjYW4gYmUgZXhw
cmVzc2lvbnMgd2hvc2UgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGF0IHJ1biB0aW1lLiAgfAotfCBg
Qm9vbCgpYCAgICAgICAgICAgICAgICAgICAgfCBZaWVsZHMgc2VxdWVuY2UgYHtmYWxzZSwgdHJ1
ZX1gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGBDb21iaW5lKGcxLCBnMiwgLi4uLCBn
TilgICB8IFlpZWxkcyBhbGwgY29tYmluYXRpb25zICh0aGUgQ2FydGVzaWFuIHByb2R1Y3QgZm9y
IHRoZSBtYXRoIHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZCBieSB0aGUgYE5gIGdlbmVy
YXRvcnMuIFRoaXMgaXMgb25seSBhdmFpbGFibGUgaWYgeW91ciBzeXN0ZW0gcHJvdmlkZXMgdGhl
IGA8dHIxL3R1cGxlPmAgaGVhZGVyLiBJZiB5b3UgYXJlIHN1cmUgeW91ciBzeXN0ZW0gZG9lcywg
YW5kIEdvb2dsZSBUZXN0IGRpc2FncmVlcywgeW91IGNhbiBvdmVycmlkZSBpdCBieSBkZWZpbmlu
ZyBgR1RFU1RfSEFTX1RSMV9UVVBMRT0xYC4gU2VlIGNvbW1lbnRzIGluIFtpbmNsdWRlL2d0ZXN0
L2ludGVybmFsL2d0ZXN0LXBvcnQuaF0oLi4vaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgpIGZvciBtb3JlIGluZm9ybWF0aW9uLiB8Ci0KLUZvciBtb3JlIGRldGFpbHMsIHNlZSB0
aGUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUg
W3NvdXJjZSBjb2RlXSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaCkuCi0KLVRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5zdGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgYEZv
b1Rlc3RgIHRlc3QgY2FzZQotZWFjaCB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgYCJtZWVueSJgLCBg
Im1pbnkiYCwgYW5kIGAibW9lImAuCi0KLWBgYAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5z
dGFudGlhdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBGb29UZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgOjp0ZXN0aW5nOjpWYWx1ZXMoIm1lZW55IiwgIm1pbnkiLCAibW9l
IikpOwotYGBgCi0KLVRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2YgdGhlIHBh
dHRlcm4gKHllcywgeW91IGNhbgotaW5zdGFudGlhdGUgaXQgbW9yZSB0aGFuIG9uY2UpLCB0aGUg
Zmlyc3QgYXJndW1lbnQgdG8KLWBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgaXMgYSBwcmVmaXgg
dGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhY3R1YWwKLXRlc3QgY2FzZSBuYW1lLiBSZW1lbWJl
ciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVyZW50Ci1pbnN0YW50aWF0aW9ucy4g
VGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24gYWJvdmUgd2lsbCBoYXZlIHRoZXNlCi1u
YW1lczoKLQotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzBgIGZvciBg
Im1lZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8xYCBmb3Ig
YCJtaW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8yYCBmb3Ig
YCJtb2UiYAotICAqIGBJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzBgIGZv
ciBgIm1lZW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8x
YCBmb3IgYCJtaW55ImAKLSAgKiBgSW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxh
aC8yYCBmb3IgYCJtb2UiYAotCi1Zb3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiBbLS1ndGVzdFxf
ZmlsdGVyXSgjcnVubmluZy1hLXN1YnNldC1vZi10aGUtdGVzdHMpLgotCi1UaGlzIHN0YXRlbWVu
dCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIGBGb29UZXN0YCBhZ2FpbiwgZWFjaAot
d2l0aCBwYXJhbWV0ZXIgdmFsdWVzIGAiY2F0ImAgYW5kIGAiZG9nImA6Ci0KLWBgYAotY29uc3Qg
Y2hhciogcGV0c1tdID0geyJjYXQiLCAiZG9nIn07Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChB
bm90aGVySW5zdGFudGlhdGlvbk5hbWUsIEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICA6OnRlc3Rpbmc6OlZhbHVlc0luKHBldHMpKTsKLWBgYAotCi1UaGUgdGVzdHMgZnJvbSB0aGUg
aW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6Ci0KLSAgKiBgQW5vdGhl
ckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMGAgZm9yIGAiY2F0ImAKLSAgKiBg
QW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMWAgZm9yIGAiZG9nImAK
LSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMGAgZm9y
IGAiY2F0ImAKLSAgKiBgQW5vdGhlckluc3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJs
YWgvMWAgZm9yIGAiZG9nImAKLQotUGxlYXNlIG5vdGUgdGhhdCBgSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1BgIHdpbGwgaW5zdGFudGlhdGUgX2FsbF8KLXRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0IGNh
c2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBiZWZvcmUgb3IKLV9hZnRlcl8gdGhl
IGBJTlNUQU5USUFURV9URVNUX0NBU0VfUGAgc3RhdGVtZW50LgotCi1Zb3UgY2FuIHNlZQotW3Ro
ZXNlXSguLi9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MpCi1bZmlsZXNdKC4uL3NhbXBsZXMv
c2FtcGxlOF91bml0dGVzdC5jYykgZm9yIG1vcmUgZXhhbXBsZXMuCi0KLV9BdmFpbGFiaWxpdHlf
OiBMaW51eCwgV2luZG93cyAocmVxdWlyZXMgTVNWQyA4LjAgb3IgYWJvdmUpLCBNYWM7IHNpbmNl
IHZlcnNpb24gMS4yLjAuCi0KLSMjIENyZWF0aW5nIFZhbHVlLVBhcmFtZXRlcml6ZWQgQWJzdHJh
Y3QgVGVzdHMgIyMKLQotSW4gdGhlIGFib3ZlLCB3ZSBkZWZpbmUgYW5kIGluc3RhbnRpYXRlIGBG
b29UZXN0YCBpbiB0aGUgc2FtZSBzb3VyY2UKLWZpbGUuIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQg
dG8gZGVmaW5lIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgaW4gYQotbGlicmFyeSBhbmQgbGV0
IG90aGVyIHBlb3BsZSBpbnN0YW50aWF0ZSB0aGVtIGxhdGVyLiBUaGlzIHBhdHRlcm4gaXMKLWtu
b3duIGFzIDxpPmFic3RyYWN0IHRlc3RzPC9pPi4gQXMgYW4gZXhhbXBsZSBvZiBpdHMgYXBwbGlj
YXRpb24sIHdoZW4geW91Ci1hcmUgZGVzaWduaW5nIGFuIGludGVyZmFjZSB5b3UgY2FuIHdyaXRl
IGEgc3RhbmRhcmQgc3VpdGUgb2YgYWJzdHJhY3QKLXRlc3RzIChwZXJoYXBzIHVzaW5nIGEgZmFj
dG9yeSBmdW5jdGlvbiBhcyB0aGUgdGVzdCBwYXJhbWV0ZXIpIHRoYXQKLWFsbCBpbXBsZW1lbnRh
dGlvbnMgb2YgdGhlIGludGVyZmFjZSBhcmUgZXhwZWN0ZWQgdG8gcGFzcy4gV2hlbgotc29tZW9u
ZSBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UsIGhlIGNhbiBpbnN0YW50aWF0ZSB5b3VyIHN1aXRl
IHRvIGdldAotYWxsIHRoZSBpbnRlcmZhY2UtY29uZm9ybWFuY2UgdGVzdHMgZm9yIGZyZWUuCi0K
LVRvIGRlZmluZSBhYnN0cmFjdCB0ZXN0cywgeW91IHNob3VsZCBvcmdhbml6ZSB5b3VyIGNvZGUg
bGlrZSB0aGlzOgotCi0gIDEuIFB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcGFyYW1ldGVyaXpl
ZCB0ZXN0IGZpeHR1cmUgY2xhc3MgKGUuZy4gYEZvb1Rlc3RgKSBpbiBhIGhlYWRlciBmaWxlLCBz
YXkgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGluayBvZiB0aGlzIGFzIF9kZWNsYXJpbmdfIHlvdXIg
YWJzdHJhY3QgdGVzdHMuCi0gIDEuIFB1dCB0aGUgYFRFU1RfUGAgZGVmaW5pdGlvbnMgaW4gYGZv
b19wYXJhbV90ZXN0LmNjYCwgd2hpY2ggaW5jbHVkZXMgYGZvb19wYXJhbV90ZXN0LmhgLiBUaGlu
ayBvZiB0aGlzIGFzIF9pbXBsZW1lbnRpbmdfIHlvdXIgYWJzdHJhY3QgdGVzdHMuCi0KLU9uY2Ug
dGhleSBhcmUgZGVmaW5lZCwgeW91IGNhbiBpbnN0YW50aWF0ZSB0aGVtIGJ5IGluY2x1ZGluZwot
YGZvb19wYXJhbV90ZXN0LmhgLCBpbnZva2luZyBgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoKWAs
IGFuZCBsaW5raW5nCi13aXRoIGBmb29fcGFyYW1fdGVzdC5jY2AuIFlvdSBjYW4gaW5zdGFudGlh
dGUgdGhlIHNhbWUgYWJzdHJhY3QgdGVzdAotY2FzZSBtdWx0aXBsZSB0aW1lcywgcG9zc2libHkg
aW4gZGlmZmVyZW50IHNvdXJjZSBmaWxlcy4KLQotIyBUeXBlZCBUZXN0cyAjCi0KLVN1cHBvc2Ug
eW91IGhhdmUgbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lIGludGVyZmFjZSBh
bmQKLXdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZW0gc2F0aXNmeSBzb21lIGNvbW1v
biByZXF1aXJlbWVudHMuCi1PciwgeW91IG1heSBoYXZlIGRlZmluZWQgc2V2ZXJhbCB0eXBlcyB0
aGF0IGFyZSBzdXBwb3NlZCB0byBjb25mb3JtIHRvCi10aGUgc2FtZSAiY29uY2VwdCIgYW5kIHlv
dSB3YW50IHRvIHZlcmlmeSBpdC4gIEluIGJvdGggY2FzZXMsIHlvdSB3YW50Ci10aGUgc2FtZSB0
ZXN0IGxvZ2ljIHJlcGVhdGVkIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0KLVdoaWxlIHlvdSBjYW4g
d3JpdGUgb25lIGBURVNUYCBvciBgVEVTVF9GYCBmb3IgZWFjaCB0eXBlIHlvdSB3YW50IHRvCi10
ZXN0IChhbmQgeW91IG1heSBldmVuIGZhY3RvciB0aGUgdGVzdCBsb2dpYyBpbnRvIGEgZnVuY3Rp
b24gdGVtcGxhdGUKLXRoYXQgeW91IGludm9rZSBmcm9tIHRoZSBgVEVTVGApLCBpdCdzIHRlZGlv
dXMgYW5kIGRvZXNuJ3Qgc2NhbGU6Ci1pZiB5b3Ugd2FudCBfbV8gdGVzdHMgb3ZlciBfbl8gdHlw
ZXMsIHlvdSdsbCBlbmQgdXAgd3JpdGluZyBfbVwqbl8KLWBURVNUYHMuCi0KLV9UeXBlZCB0ZXN0
c18gYWxsb3cgeW91IHRvIHJlcGVhdCB0aGUgc2FtZSB0ZXN0IGxvZ2ljIG92ZXIgYSBsaXN0IG9m
Ci10eXBlcy4gIFlvdSBvbmx5IG5lZWQgdG8gd3JpdGUgdGhlIHRlc3QgbG9naWMgb25jZSwgYWx0
aG91Z2ggeW91IG11c3QKLWtub3cgdGhlIHR5cGUgbGlzdCB3aGVuIHdyaXRpbmcgdHlwZWQgdGVz
dHMuICBIZXJlJ3MgaG93IHlvdSBkbyBpdDoKLQotRmlyc3QsIGRlZmluZSBhIGZpeHR1cmUgY2xh
c3MgdGVtcGxhdGUuICBJdCBzaG91bGQgYmUgcGFyYW1ldGVyaXplZAotYnkgYSB0eXBlLiAgUmVt
ZW1iZXIgdG8gZGVyaXZlIGl0IGZyb20gYDo6dGVzdGluZzo6VGVzdGA6Ci0KLWBgYAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7
Ci0gcHVibGljOgotICAuLi4KLSAgdHlwZWRlZiBzdGQ6Omxpc3Q8VD4gTGlzdDsKLSAgc3RhdGlj
IFQgc2hhcmVkXzsKLSAgVCB2YWx1ZV87Ci19OwotYGBgCi0KLU5leHQsIGFzc29jaWF0ZSBhIGxp
c3Qgb2YgdHlwZXMgd2l0aCB0aGUgdGVzdCBjYXNlLCB3aGljaCB3aWxsIGJlCi1yZXBlYXRlZCBm
b3IgZWFjaCB0eXBlIGluIHRoZSBsaXN0OgotCi1gYGAKLXR5cGVkZWYgOjp0ZXN0aW5nOjpUeXBl
czxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVEX1RFU1RfQ0FTRShGb29U
ZXN0LCBNeVR5cGVzKTsKLWBgYAotCi1UaGUgYHR5cGVkZWZgIGlzIG5lY2Vzc2FyeSBmb3IgdGhl
IGBUWVBFRF9URVNUX0NBU0VgIG1hY3JvIHRvIHBhcnNlCi1jb3JyZWN0bHkuICBPdGhlcndpc2Ug
dGhlIGNvbXBpbGVyIHdpbGwgdGhpbmsgdGhhdCBlYWNoIGNvbW1hIGluIHRoZQotdHlwZSBsaXN0
IGludHJvZHVjZXMgYSBuZXcgbWFjcm8gYXJndW1lbnQuCi0KLVRoZW4sIHVzZSBgVFlQRURfVEVT
VCgpYCBpbnN0ZWFkIG9mIGBURVNUX0YoKWAgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdAotZm9yIHRo
aXMgdGVzdCBjYXNlLiAgWW91IGNhbiByZXBlYXQgdGhpcyBhcyBtYW55IHRpbWVzIGFzIHlvdSB3
YW50OgotCi1gYGAKLVRZUEVEX1RFU1QoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRl
IGEgdGVzdCwgcmVmZXIgdG8gdGhlIHNwZWNpYWwgbmFtZSBUeXBlUGFyYW0gdG8gZ2V0IHRoZSB0
eXBlCi0gIC8vIHBhcmFtZXRlci4gIFNpbmNlIHdlIGFyZSBpbnNpZGUgYSBkZXJpdmVkIGNsYXNz
IHRlbXBsYXRlLCBDKysgcmVxdWlyZXMKLSAgLy8gdXMgdG8gdmlzaXQgdGhlIG1lbWJlcnMgb2Yg
Rm9vVGVzdCB2aWEgJ3RoaXMnLgotICBUeXBlUGFyYW0gbiA9IHRoaXMtPnZhbHVlXzsKLQotICAv
LyBUbyB2aXNpdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSwgYWRkIHRoZSAnVGVzdEZp
eHR1cmU6OicKLSAgLy8gcHJlZml4LgotICBuICs9IFRlc3RGaXh0dXJlOjpzaGFyZWRfOwotCi0g
IC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRoZSBmaXh0dXJlLCBhZGQgdGhlICd0eXBlbmFt
ZSBUZXN0Rml4dHVyZTo6JwotICAvLyBwcmVmaXguICBUaGUgJ3R5cGVuYW1lJyBpcyByZXF1aXJl
ZCB0byBzYXRpc2Z5IHRoZSBjb21waWxlci4KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6Okxpc3Qg
dmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNrKG4pOwotICAuLi4KLX0KLQotVFlQRURfVEVTVChG
b29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0KLWBgYAotCi1Zb3UgY2FuIHNlZSBgc2FtcGxl
cy9zYW1wbGU2X3VuaXR0ZXN0LmNjYCBmb3IgYSBjb21wbGV0ZSBleGFtcGxlLgotCi1fQXZhaWxh
YmlsaXR5Ol8gTGludXgsIFdpbmRvd3MgKHJlcXVpcmVzIE1TVkMgOC4wIG9yIGFib3ZlKSwgTWFj
Owotc2luY2UgdmVyc2lvbiAxLjEuMC4KLQotIyBUeXBlLVBhcmFtZXRlcml6ZWQgVGVzdHMgIwot
Ci1fVHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzXyBhcmUgbGlrZSB0eXBlZCB0ZXN0cywgZXhjZXB0
IHRoYXQgdGhleQotZG9uJ3QgcmVxdWlyZSB5b3UgdG8ga25vdyB0aGUgbGlzdCBvZiB0eXBlcyBh
aGVhZCBvZiB0aW1lLiAgSW5zdGVhZCwKLXlvdSBjYW4gZGVmaW5lIHRoZSB0ZXN0IGxvZ2ljIGZp
cnN0IGFuZCBpbnN0YW50aWF0ZSBpdCB3aXRoIGRpZmZlcmVudAotdHlwZSBsaXN0cyBsYXRlci4g
IFlvdSBjYW4gZXZlbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoYW4gb25jZSBpbiB0aGUKLXNhbWUg
cHJvZ3JhbS4KLQotSWYgeW91IGFyZSBkZXNpZ25pbmcgYW4gaW50ZXJmYWNlIG9yIGNvbmNlcHQs
IHlvdSBjYW4gZGVmaW5lIGEgc3VpdGUKLW9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB0byB2
ZXJpZnkgcHJvcGVydGllcyB0aGF0IGFueSB2YWxpZAotaW1wbGVtZW50YXRpb24gb2YgdGhlIGlu
dGVyZmFjZS9jb25jZXB0IHNob3VsZCBoYXZlLiAgVGhlbiwgdGhlIGF1dGhvcgotb2YgZWFjaCBp
bXBsZW1lbnRhdGlvbiBjYW4ganVzdCBpbnN0YW50aWF0ZSB0aGUgdGVzdCBzdWl0ZSB3aXRoIGhp
cwotdHlwZSB0byB2ZXJpZnkgdGhhdCBpdCBjb25mb3JtcyB0byB0aGUgcmVxdWlyZW1lbnRzLCB3
aXRob3V0IGhhdmluZyB0bwotd3JpdGUgc2ltaWxhciB0ZXN0cyByZXBlYXRlZGx5LiAgSGVyZSdz
IGFuIGV4YW1wbGU6Ci0KLUZpcnN0LCBkZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLCBh
cyB3ZSBkaWQgd2l0aCB0eXBlZCB0ZXN0czoKLQotYGBgCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKLSAgLi4uCi19OwotYGBg
Ci0KLU5leHQsIGRlY2xhcmUgdGhhdCB5b3Ugd2lsbCBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlOgotCi1gYGAKLVRZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QpOwotYGBgCi0K
LVRoZSBgX1BgIHN1ZmZpeCBpcyBmb3IgInBhcmFtZXRlcml6ZWQiIG9yICJwYXR0ZXJuIiwgd2hp
Y2hldmVyIHlvdQotcHJlZmVyIHRvIHRoaW5rLgotCi1UaGVuLCB1c2UgYFRZUEVEX1RFU1RfUCgp
YCB0byBkZWZpbmUgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4gIFlvdQotY2FuIHJlcGVhdCB0
aGlzIGFzIG1hbnkgdGltZXMgYXMgeW91IHdhbnQ6Ci0KLWBgYAotVFlQRURfVEVTVF9QKEZvb1Rl
c3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJlZmVyIHRvIFR5cGVQYXJhbSB0
byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgotICBUeXBlUGFyYW0gbiA9IDA7Ci0gIC4uLgotfQot
Ci1UWVBFRF9URVNUX1AoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4uLiB9Ci1gYGAKLQotTm93
IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3QgcGF0dGVybnMg
dXNpbmcgdGhlCi1gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1BgIG1hY3JvIGJlZm9yZSB5b3Ug
Y2FuIGluc3RhbnRpYXRlIHRoZW0uCi1UaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIG1hY3JvIGlz
IHRoZSB0ZXN0IGNhc2UgbmFtZTsgdGhlIHJlc3QgYXJlCi10aGUgbmFtZXMgb2YgdGhlIHRlc3Rz
IGluIHRoaXMgdGVzdCBjYXNlOgotCi1gYGAKLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZv
b1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBEb2VzQmxhaCwgSGFzUHJvcGVydHlB
KTsKLWBgYAotCi1GaW5hbGx5LCB5b3UgYXJlIGZyZWUgdG8gaW5zdGFudGlhdGUgdGhlIHBhdHRl
cm4gd2l0aCB0aGUgdHlwZXMgeW91Ci13YW50LiAgSWYgeW91IHB1dCB0aGUgYWJvdmUgY29kZSBp
biBhIGhlYWRlciBmaWxlLCB5b3UgY2FuIGAjaW5jbHVkZWAKLWl0IGluIG11bHRpcGxlIEMrKyBz
b3VyY2UgZmlsZXMgYW5kIGluc3RhbnRpYXRlIGl0IG11bHRpcGxlIHRpbWVzLgotCi1gYGAKLXR5
cGVkZWYgOjp0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsK
LUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29UZXN0LCBNeVR5cGVzKTsKLWBg
YAotCi1UbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXR0ZXJuLCB0
aGUgZmlyc3QgYXJndW1lbnQKLXRvIHRoZSBgSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Bg
IG1hY3JvIGlzIGEgcHJlZml4IHRoYXQgd2lsbCBiZQotYWRkZWQgdG8gdGhlIGFjdHVhbCB0ZXN0
IGNhc2UgbmFtZS4gIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzCi1mb3IgZGlmZmVy
ZW50IGluc3RhbmNlcy4KLQotSW4gdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgdHlwZSBsaXN0
IGNvbnRhaW5zIG9ubHkgb25lIHR5cGUsIHlvdQotY2FuIHdyaXRlIHRoYXQgdHlwZSBkaXJlY3Rs
eSB3aXRob3V0IGA6OnRlc3Rpbmc6OlR5cGVzPC4uLj5gLCBsaWtlIHRoaXM6Ci0KLWBgYAotSU5T
VEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIEZvb1Rlc3QsIGludCk7Ci1gYGAKLQotWW91
IGNhbiBzZWUgYHNhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jY2AgZm9yIGEgY29tcGxldGUgZXhh
bXBsZS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzIChyZXF1aXJlcyBNU1ZDIDgu
MCBvciBhYm92ZSksIE1hYzsKLXNpbmNlIHZlcnNpb24gMS4xLjAuCi0KLSMgVGVzdGluZyBQcml2
YXRlIENvZGUgIwotCi1JZiB5b3UgY2hhbmdlIHlvdXIgc29mdHdhcmUncyBpbnRlcm5hbCBpbXBs
ZW1lbnRhdGlvbiwgeW91ciB0ZXN0cyBzaG91bGQgbm90Ci1icmVhayBhcyBsb25nIGFzIHRoZSBj
aGFuZ2UgaXMgbm90IG9ic2VydmFibGUgYnkgdXNlcnMuIFRoZXJlZm9yZSwgcGVyIHRoZQotX2Js
YWNrLWJveCB0ZXN0aW5nIHByaW5jaXBsZV8sIG1vc3Qgb2YgdGhlIHRpbWUgeW91IHNob3VsZCB0
ZXN0IHlvdXIgY29kZQotdGhyb3VnaCBpdHMgcHVibGljIGludGVyZmFjZXMuCi0KLUlmIHlvdSBz
dGlsbCBmaW5kIHlvdXJzZWxmIG5lZWRpbmcgdG8gdGVzdCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlv
biBjb2RlLAotY29uc2lkZXIgaWYgdGhlcmUncyBhIGJldHRlciBkZXNpZ24gdGhhdCB3b3VsZG4n
dCByZXF1aXJlIHlvdSB0byBkbyBzby4gSWYgeW91Ci1hYnNvbHV0ZWx5IGhhdmUgdG8gdGVzdCBu
b24tcHVibGljIGludGVyZmFjZSBjb2RlIHRob3VnaCwgeW91IGNhbi4gVGhlcmUgYXJlCi10d28g
Y2FzZXMgdG8gY29uc2lkZXI6Ci0KLSAgKiBTdGF0aWMgZnVuY3Rpb25zIChfbm90XyB0aGUgc2Ft
ZSBhcyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyEpIG9yIHVubmFtZWQgbmFtZXNwYWNlcywgYW5k
Ci0gICogUHJpdmF0ZSBvciBwcm90ZWN0ZWQgY2xhc3MgbWVtYmVycwotCi0jIyBTdGF0aWMgRnVu
Y3Rpb25zICMjCi0KLUJvdGggc3RhdGljIGZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMvZGVjbGFy
YXRpb25zIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlIGFyZQotb25seSB2aXNpYmxlIHdpdGhpbiB0
aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LiBUbyB0ZXN0IHRoZW0sIHlvdSBjYW4gYCNpbmNsdWRl
YAotdGhlIGVudGlyZSBgLmNjYCBmaWxlIGJlaW5nIHRlc3RlZCBpbiB5b3VyIGAqX3Rlc3QuY2Ng
IGZpbGUuIChgI2luY2x1ZGVgaW5nIGAuY2NgCi1maWxlcyBpcyBub3QgYSBnb29kIHdheSB0byBy
ZXVzZSBjb2RlIC0geW91IHNob3VsZCBub3QgZG8gdGhpcyBpbiBwcm9kdWN0aW9uCi1jb2RlISkK
LQotSG93ZXZlciwgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gbW92ZSB0aGUgcHJpdmF0ZSBjb2Rl
IGludG8gdGhlCi1gZm9vOjppbnRlcm5hbGAgbmFtZXNwYWNlLCB3aGVyZSBgZm9vYCBpcyB0aGUg
bmFtZXNwYWNlIHlvdXIgcHJvamVjdCBub3JtYWxseQotdXNlcywgYW5kIHB1dCB0aGUgcHJpdmF0
ZSBkZWNsYXJhdGlvbnMgaW4gYSBgKi1pbnRlcm5hbC5oYCBmaWxlLiBZb3VyCi1wcm9kdWN0aW9u
IGAuY2NgIGZpbGVzIGFuZCB5b3VyIHRlc3RzIGFyZSBhbGxvd2VkIHRvIGluY2x1ZGUgdGhpcyBp
bnRlcm5hbAotaGVhZGVyLCBidXQgeW91ciBjbGllbnRzIGFyZSBub3QuIFRoaXMgd2F5LCB5b3Ug
Y2FuIGZ1bGx5IHRlc3QgeW91ciBpbnRlcm5hbAotaW1wbGVtZW50YXRpb24gd2l0aG91dCBsZWFr
aW5nIGl0IHRvIHlvdXIgY2xpZW50cy4KLQotIyMgUHJpdmF0ZSBDbGFzcyBNZW1iZXJzICMjCi0K
LVByaXZhdGUgY2xhc3MgbWVtYmVycyBhcmUgb25seSBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRo
ZSBjbGFzcyBvciBieSBmcmllbmRzLgotVG8gYWNjZXNzIGEgY2xhc3MnIHByaXZhdGUgbWVtYmVy
cywgeW91IGNhbiBkZWNsYXJlIHlvdXIgdGVzdCBmaXh0dXJlIGFzIGEKLWZyaWVuZCB0byB0aGUg
Y2xhc3MgYW5kIGRlZmluZSBhY2Nlc3NvcnMgaW4geW91ciBmaXh0dXJlLiBUZXN0cyB1c2luZyB0
aGUKLWZpeHR1cmUgY2FuIHRoZW4gYWNjZXNzIHRoZSBwcml2YXRlIG1lbWJlcnMgb2YgeW91ciBw
cm9kdWN0aW9uIGNsYXNzIHZpYSB0aGUKLWFjY2Vzc29ycyBpbiB0aGUgZml4dHVyZS4gTm90ZSB0
aGF0IGV2ZW4gdGhvdWdoIHlvdXIgZml4dHVyZSBpcyBhIGZyaWVuZCB0bwoteW91ciBwcm9kdWN0
aW9uIGNsYXNzLCB5b3VyIHRlc3RzIGFyZSBub3QgYXV0b21hdGljYWxseSBmcmllbmRzIHRvIGl0
LCBhcyB0aGV5Ci1hcmUgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBzdWItY2xhc3NlcyBvZiB0aGUg
Zml4dHVyZS4KLQotQW5vdGhlciB3YXkgdG8gdGVzdCBwcml2YXRlIG1lbWJlcnMgaXMgdG8gcmVm
YWN0b3IgdGhlbSBpbnRvIGFuIGltcGxlbWVudGF0aW9uCi1jbGFzcywgd2hpY2ggaXMgdGhlbiBk
ZWNsYXJlZCBpbiBhIGAqLWludGVybmFsLmhgIGZpbGUuIFlvdXIgY2xpZW50cyBhcmVuJ3QKLWFs
bG93ZWQgdG8gaW5jbHVkZSB0aGlzIGhlYWRlciBidXQgeW91ciB0ZXN0cyBjYW4uIFN1Y2ggaXMg
Y2FsbGVkIHRoZSBQaW1wbAotKFByaXZhdGUgSW1wbGVtZW50YXRpb24pIGlkaW9tLgotCi1Pciwg
eW91IGNhbiBkZWNsYXJlIGFuIGluZGl2aWR1YWwgdGVzdCBhcyBhIGZyaWVuZCBvZiB5b3VyIGNs
YXNzIGJ5IGFkZGluZyB0aGlzCi1saW5lIGluIHRoZSBjbGFzcyBib2R5OgotCi1gYGAKLUZSSUVO
RF9URVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpOwotYGBgCi0KLUZvciBleGFtcGxlLAotYGBg
Ci0vLyBmb28uaAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0X3Byb2QuaCIKLQotLy8gRGVmaW5lcyBG
UklFTkRfVEVTVC4KLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIEZSSUVORF9URVNU
KEZvb1Rlc3QsIEJhclJldHVybnNaZXJvT25OdWxsKTsKLSAgaW50IEJhcih2b2lkKiB4KTsKLX07
Ci0KLS8vIGZvb190ZXN0LmNjCi0uLi4KLVRFU1QoRm9vVGVzdCwgQmFyUmV0dXJuc1plcm9Pbk51
bGwpIHsKLSAgRm9vIGZvbzsKLSAgRVhQRUNUX0VRKDAsIGZvby5CYXIoTlVMTCkpOwotICAvLyBV
c2VzIEZvbydzIHByaXZhdGUgbWVtYmVyIEJhcigpLgotfQotYGBgCi0KLVBheSBzcGVjaWFsIGF0
dGVudGlvbiB3aGVuIHlvdXIgY2xhc3MgaXMgZGVmaW5lZCBpbiBhIG5hbWVzcGFjZSwgYXMgeW91
IHNob3VsZAotZGVmaW5lIHlvdXIgdGVzdCBmaXh0dXJlcyBhbmQgdGVzdHMgaW4gdGhlIHNhbWUg
bmFtZXNwYWNlIGlmIHlvdSB3YW50IHRoZW0gdG8KLWJlIGZyaWVuZHMgb2YgeW91ciBjbGFzcy4g
Rm9yIGV4YW1wbGUsIGlmIHRoZSBjb2RlIHRvIGJlIHRlc3RlZCBsb29rcyBsaWtlOgotCi1gYGAK
LW5hbWVzcGFjZSBteV9uYW1lc3BhY2UgewotCi1jbGFzcyBGb28gewotICBmcmllbmQgY2xhc3Mg
Rm9vVGVzdDsKLSAgRlJJRU5EX1RFU1QoRm9vVGVzdCwgQmFyKTsKLSAgRlJJRU5EX1RFU1QoRm9v
VGVzdCwgQmF6KTsKLSAgLi4uCi0gIGRlZmluaXRpb24gb2YgdGhlIGNsYXNzIEZvbwotICAuLi4K
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBteV9uYW1lc3BhY2UKLWBgYAotCi1Zb3VyIHRlc3QgY29k
ZSBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2U6Ci0KLWBgYAotbmFtZXNwYWNlIG15X25hbWVzcGFj
ZSB7Ci1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVk
OgotICAuLi4KLX07Ci0KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRFU1RfRihGb29U
ZXN0LCBCYXopIHsgLi4uIH0KLQotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotYGBgCi0K
LSMgQ2F0Y2hpbmcgRmFpbHVyZXMgIwotCi1JZiB5b3UgYXJlIGJ1aWxkaW5nIGEgdGVzdGluZyB1
dGlsaXR5IG9uIHRvcCBvZiBHb29nbGUgVGVzdCwgeW91J2xsCi13YW50IHRvIHRlc3QgeW91ciB1
dGlsaXR5LiAgV2hhdCBmcmFtZXdvcmsgd291bGQgeW91IHVzZSB0byB0ZXN0IGl0PwotR29vZ2xl
IFRlc3QsIG9mIGNvdXJzZS4KLQotVGhlIGNoYWxsZW5nZSBpcyB0byB2ZXJpZnkgdGhhdCB5b3Vy
IHRlc3RpbmcgdXRpbGl0eSByZXBvcnRzIGZhaWx1cmVzCi1jb3JyZWN0bHkuICBJbiBmcmFtZXdv
cmtzIHRoYXQgcmVwb3J0IGEgZmFpbHVyZSBieSB0aHJvd2luZyBhbgotZXhjZXB0aW9uLCB5b3Ug
Y291bGQgY2F0Y2ggdGhlIGV4Y2VwdGlvbiBhbmQgYXNzZXJ0IG9uIGl0LiAgQnV0IEdvb2dsZQot
VGVzdCBkb2Vzbid0IHVzZSBleGNlcHRpb25zLCBzbyBob3cgZG8gd2UgdGVzdCB0aGF0IGEgcGll
Y2Ugb2YgY29kZQotZ2VuZXJhdGVzIGFuIGV4cGVjdGVkIGZhaWx1cmU/Ci0KLWAiZ3Rlc3QvZ3Rl
c3Qtc3BpLmgiYCBjb250YWlucyBzb21lIGNvbnN0cnVjdHMgdG8gZG8gdGhpcy4gIEFmdGVyCi1g
I2luY2x1ZGVgaW5nIHRoaXMgaGVhZGVyLCB5b3UgY2FuIHVzZQotCi18IGBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQotdG8gYXNzZXJ0IHRoYXQgX3N0
YXRlbWVudF8gZ2VuZXJhdGVzIGEgZmF0YWwgKGUuZy4gYEFTU0VSVF8qYCkgZmFpbHVyZQotd2hv
c2UgbWVzc2FnZSBjb250YWlucyB0aGUgZ2l2ZW4gX3N1YnN0cmluZ18sIG9yIHVzZQotCi18IGBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShgX3N0YXRlbWVudCwgc3Vic3RyaW5nX2ApO2AgfAotfDot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLQot
aWYgeW91IGFyZSBleHBlY3RpbmcgYSBub24tZmF0YWwgKGUuZy4gYEVYUEVDVF8qYCkgZmFpbHVy
ZS4KLQotRm9yIHRlY2huaWNhbCByZWFzb25zLCB0aGVyZSBhcmUgc29tZSBjYXZlYXRzOgotCi0g
IDEuIFlvdSBjYW5ub3Qgc3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIGVpdGhlciBtYWNyby4K
LSAgMS4gX3N0YXRlbWVudF8gaW4gYEVYUEVDVF9GQVRBTF9GQUlMVVJFKClgIGNhbm5vdCByZWZl
cmVuY2UgbG9jYWwgbm9uLXN0YXRpYyB2YXJpYWJsZXMgb3Igbm9uLXN0YXRpYyBtZW1iZXJzIG9m
IGB0aGlzYCBvYmplY3QuCi0gIDEuIF9zdGF0ZW1lbnRfIGluIGBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSgpYCBjYW5ub3QgcmV0dXJuIGEgdmFsdWUuCi0KLV9Ob3RlOl8gR29vZ2xlIFRlc3QgaXMgZGVz
aWduZWQgd2l0aCB0aHJlYWRzIGluIG1pbmQuICBPbmNlIHRoZQotc3luY2hyb25pemF0aW9uIHBy
aW1pdGl2ZXMgaW4gYCJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiYCBoYXZlCi1iZWVuIGlt
cGxlbWVudGVkLCBHb29nbGUgVGVzdCB3aWxsIGJlY29tZSB0aHJlYWQtc2FmZSwgbWVhbmluZyB0
aGF0Ci15b3UgY2FuIHRoZW4gdXNlIGFzc2VydGlvbnMgaW4gbXVsdGlwbGUgdGhyZWFkcyBjb25j
dXJyZW50bHkuICBCZWZvcmUKLQotdGhhdCwgaG93ZXZlciwgR29vZ2xlIFRlc3Qgb25seSBzdXBw
b3J0cyBzaW5nbGUtdGhyZWFkZWQgdXNhZ2UuICBPbmNlCi10aHJlYWQtc2FmZSwgYEVYUEVDVF9G
QVRBTF9GQUlMVVJFKClgIGFuZCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKWAKLXdpbGwgY2Fw
dHVyZSBmYWlsdXJlcyBpbiB0aGUgY3VycmVudCB0aHJlYWQgb25seS4gSWYgX3N0YXRlbWVudF8K
LWNyZWF0ZXMgbmV3IHRocmVhZHMsIGZhaWx1cmVzIGluIHRoZXNlIHRocmVhZHMgd2lsbCBiZSBp
Z25vcmVkLiAgSWYKLXlvdSB3YW50IHRvIGNhcHR1cmUgZmFpbHVyZXMgZnJvbSBhbGwgdGhyZWFk
cyBpbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZQotdGhlIGZvbGxvd2luZyBtYWNyb3M6Ci0KLXwgYEVY
UEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKGBfc3RhdGVtZW50LCBzdWJzdHJpbmdf
YCk7YCB8Ci18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoYF9zdGF0ZW1lbnQsIHN1YnN0cmluZ19gKTtgIHwKLQotIyBHZXR0aW5nIHRoZSBDdXJy
ZW50IFRlc3QncyBOYW1lICMKLQotU29tZXRpbWVzIGEgZnVuY3Rpb24gbWF5IG5lZWQgdG8ga25v
dyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGVzdC4KLUZvciBleGFtcGxlLCB5
b3UgbWF5IGJlIHVzaW5nIHRoZSBgU2V0VXAoKWAgbWV0aG9kIG9mIHlvdXIgdGVzdCBmaXh0dXJl
IHRvIHNldAotdGhlIGdvbGRlbiBmaWxlIG5hbWUgYmFzZWQgb24gd2hpY2ggdGVzdCBpcyBydW5u
aW5nLiBUaGUgYDo6dGVzdGluZzo6VGVzdEluZm9gCi1jbGFzcyBoYXMgdGhpcyBpbmZvcm1hdGlv
bjoKLQotYGBgCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLWNsYXNzIFRlc3RJbmZvIHsKLSBwdWJs
aWM6Ci0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBuYW1lIGFuZCB0aGUgdGVzdCBuYW1lLCBy
ZXNwZWN0aXZlbHkuCi0gIC8vCi0gIC8vIERvIE5PVCBkZWxldGUgb3IgZnJlZSB0aGUgcmV0dXJu
IHZhbHVlIC0gaXQncyBtYW5hZ2VkIGJ5IHRoZQotICAvLyBUZXN0SW5mbyBjbGFzcy4KLSAgY29u
c3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdDsKLSAgY29uc3QgY2hhciogbmFtZSgpIGNv
bnN0OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLWBgYAotCi0KLT4gVG8gb2J0YWlu
IGEgYFRlc3RJbmZvYCBvYmplY3QgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LCBjYWxs
Ci1gY3VycmVudF90ZXN0X2luZm8oKWAgb24gdGhlIGBVbml0VGVzdGAgc2luZ2xldG9uIG9iamVj
dDoKLQotYGBgCi0vLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgcnVubmlu
ZyB0ZXN0LgotLy8gRG8gTk9UIGRlbGV0ZSB0aGUgcmV0dXJuZWQgb2JqZWN0IC0gaXQncyBtYW5h
Z2VkIGJ5IHRoZSBVbml0VGVzdCBjbGFzcy4KLWNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNv
bnN0IHRlc3RfaW5mbyA9Ci0gIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1
cnJlbnRfdGVzdF9pbmZvKCk7Ci1wcmludGYoIldlIGFyZSBpbiB0ZXN0ICVzIG9mIHRlc3QgY2Fz
ZSAlcy5cbiIsCi0gICAgICAgdGVzdF9pbmZvLT5uYW1lKCksIHRlc3RfaW5mby0+dGVzdF9jYXNl
X25hbWUoKSk7Ci1gYGAKLQotYGN1cnJlbnRfdGVzdF9pbmZvKClgIHJldHVybnMgYSBudWxsIHBv
aW50ZXIgaWYgbm8gdGVzdCBpcyBydW5uaW5nLiBJbgotcGFydGljdWxhciwgeW91IGNhbm5vdCBm
aW5kIHRoZSB0ZXN0IGNhc2UgbmFtZSBpbiBgVGVzdENhc2VTZXRVcCgpYCwKLWBUZXN0Q2FzZVRl
YXJEb3duKClgICh3aGVyZSB5b3Uga25vdyB0aGUgdGVzdCBjYXNlIG5hbWUgaW1wbGljaXRseSks
IG9yCi1mdW5jdGlvbnMgY2FsbGVkIGZyb20gdGhlbS4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4
LCBXaW5kb3dzLCBNYWMuCi0KLSMgRXh0ZW5kaW5nIEdvb2dsZSBUZXN0IGJ5IEhhbmRsaW5nIFRl
c3QgRXZlbnRzICMKLQotR29vZ2xlIFRlc3QgcHJvdmlkZXMgYW4gPGI+ZXZlbnQgbGlzdGVuZXIg
QVBJPC9iPiB0byBsZXQgeW91IHJlY2VpdmUKLW5vdGlmaWNhdGlvbnMgYWJvdXQgdGhlIHByb2dy
ZXNzIG9mIGEgdGVzdCBwcm9ncmFtIGFuZCB0ZXN0Ci1mYWlsdXJlcy4gVGhlIGV2ZW50cyB5b3Ug
Y2FuIGxpc3RlbiB0byBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIG9mCi10aGUgdGVzdCBwcm9n
cmFtLCBhIHRlc3QgY2FzZSwgb3IgYSB0ZXN0IG1ldGhvZCwgYW1vbmcgb3RoZXJzLiBZb3UgbWF5
Ci11c2UgdGhpcyBBUEkgdG8gYXVnbWVudCBvciByZXBsYWNlIHRoZSBzdGFuZGFyZCBjb25zb2xl
IG91dHB1dCwKLXJlcGxhY2UgdGhlIFhNTCBvdXRwdXQsIG9yIHByb3ZpZGUgYSBjb21wbGV0ZWx5
IGRpZmZlcmVudCBmb3JtIG9mCi1vdXRwdXQsIHN1Y2ggYXMgYSBHVUkgb3IgYSBkYXRhYmFzZS4g
WW91IGNhbiBhbHNvIHVzZSB0ZXN0IGV2ZW50cyBhcwotY2hlY2twb2ludHMgdG8gaW1wbGVtZW50
IGEgcmVzb3VyY2UgbGVhayBjaGVja2VyLCBmb3IgZXhhbXBsZS4KLQotX0F2YWlsYWJpbGl0eTpf
IExpbnV4LCBXaW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgRGVmaW5pbmcgRXZlbnQg
TGlzdGVuZXJzICMjCi0KLVRvIGRlZmluZSBhIGV2ZW50IGxpc3RlbmVyLCB5b3Ugc3ViY2xhc3Mg
ZWl0aGVyCi1bdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QuaCNMODU1KQotb3IgW3Rlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVuZXJdKC4uL2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QuaCNMOTA1KS4KLVRoZSBmb3JtZXIgaXMgYW4gKGFic3RyYWN0KSBpbnRl
cmZhY2UsIHdoZXJlIDxpPmVhY2ggcHVyZSB2aXJ0dWFsIG1ldGhvZDxicj4KLWNhbiBiZSBvdmVy
cmlkZGVuIHRvIGhhbmRsZSBhIHRlc3QgZXZlbnQ8L2k+IChGb3IgZXhhbXBsZSwgd2hlbiBhIHRl
c3QKLXN0YXJ0cywgdGhlIGBPblRlc3RTdGFydCgpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuKS4g
VGhlIGxhdHRlciBwcm92aWRlcwotYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1ldGhv
ZHMgaW4gdGhlIGludGVyZmFjZSwgc3VjaCB0aGF0IGEKLXN1YmNsYXNzIG9ubHkgbmVlZHMgdG8g
b3ZlcnJpZGUgdGhlIG1ldGhvZHMgaXQgY2FyZXMgYWJvdXQuCi0KLVdoZW4gYW4gZXZlbnQgaXMg
ZmlyZWQsIGl0cyBjb250ZXh0IGlzIHBhc3NlZCB0byB0aGUgaGFuZGxlciBmdW5jdGlvbgotYXMg
YW4gYXJndW1lbnQuIFRoZSBmb2xsb3dpbmcgYXJndW1lbnQgdHlwZXMgYXJlIHVzZWQ6Ci0gICog
W1VuaXRUZXN0XSguLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgjTDEwMDcpIHJlZmxlY3RzIHRoZSBz
dGF0ZSBvZiB0aGUgZW50aXJlIHRlc3QgcHJvZ3JhbSwKLSAgKiBbVGVzdENhc2VdKC4uL2luY2x1
ZGUvZ3Rlc3QvZ3Rlc3QuaCNMNjg5KSBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSB0ZXN0IGNhc2Us
IHdoaWNoIGNhbiBjb250YWluIG9uZSBvciBtb3JlIHRlc3RzLAotICAqIFtUZXN0SW5mb10oLi4v
aW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w1OTkpIGNvbnRhaW5zIHRoZSBzdGF0ZSBvZiBhIHRlc3Qs
IGFuZAotICAqIFtUZXN0UGFydFJlc3VsdF0oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBh
cnQuaCNMNDIpIHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBhIHRlc3QgYXNzZXJ0aW9uLgotCi1B
biBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGNhbiBleGFtaW5lIHRoZSBhcmd1bWVudCBpdCByZWNl
aXZlcyB0byBmaW5kCi1vdXQgaW50ZXJlc3RpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50
IGFuZCB0aGUgdGVzdCBwcm9ncmFtJ3MKLXN0YXRlLiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLWBg
YAotICBjbGFzcyBNaW5pbWFsaXN0UHJpbnRlciA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXIgewotICAgIC8vIENhbGxlZCBiZWZvcmUgYSB0ZXN0IHN0YXJ0cy4KLSAg
ICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVz
dF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIHN0YXJ0aW5nLlxuIiwKLSAg
ICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9jYXNlX25hbWUoKSwgdGVzdF9pbmZvLm5hbWUoKSk7
Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBhIFNV
Q0NFRUQoKSBpbnZvY2F0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KAot
ICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0
KSB7Ci0gICAgICBwcmludGYoIiVzIGluICVzOiVkXG4lc1xuIiwKLSAgICAgICAgICAgICB0ZXN0
X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNjZXNzIiwKLSAgICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZpbGVfbmFtZSgpLAotICAgICAgICAgICAgIHRlc3Rf
cGFydF9yZXN1bHQubGluZV9udW1iZXIoKSwKLSAgICAgICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0
LnN1bW1hcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgdGVzdCBlbmRzLgot
ICAgIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyYgdGVz
dF9pbmZvKSB7Ci0gICAgICBwcmludGYoIioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCi0gICAg
ICAgICAgICAgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1lKCkpOwot
ICAgIH0KLSAgfTsKLWBgYAotCi0jIyBVc2luZyBFdmVudCBMaXN0ZW5lcnMgIyMKLQotVG8gdXNl
IHRoZSBldmVudCBsaXN0ZW5lciB5b3UgaGF2ZSBkZWZpbmVkLCBhZGQgYW4gaW5zdGFuY2Ugb2Yg
aXQgdG8KLXRoZSBHb29nbGUgVGVzdCBldmVudCBsaXN0ZW5lciBsaXN0IChyZXByZXNlbnRlZCBi
eSBjbGFzcwotW1Rlc3RFdmVudExpc3RlbmVyc10oLi4vaW5jbHVkZS9ndGVzdC9ndGVzdC5oI0w5
MjkpCi0tIG5vdGUgdGhlICJzIiBhdCB0aGUgZW5kIG9mIHRoZSBuYW1lKSBpbiB5b3VyCi1gbWFp
bigpYCBmdW5jdGlvbiwgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWA6Ci1gYGAKLWlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKLSAgLy8gR2V0cyBob2xkIG9mIHRoZSBldmVudCBsaXN0ZW5lciBs
aXN0LgotICA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0KLSAgICAg
IDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpOwotICAvLyBB
ZGRzIGEgbGlzdGVuZXIgdG8gdGhlIGVuZC4gIEdvb2dsZSBUZXN0IHRha2VzIHRoZSBvd25lcnNo
aXAuCi0gIGxpc3RlbmVycy5BcHBlbmQobmV3IE1pbmltYWxpc3RQcmludGVyKTsKLSAgcmV0dXJu
IFJVTl9BTExfVEVTVFMoKTsKLX0KLWBgYAotCi1UaGVyZSdzIG9ubHkgb25lIHByb2JsZW06IHRo
ZSBkZWZhdWx0IHRlc3QgcmVzdWx0IHByaW50ZXIgaXMgc3RpbGwgaW4KLWVmZmVjdCwgc28gaXRz
IG91dHB1dCB3aWxsIG1pbmdsZSB3aXRoIHRoZSBvdXRwdXQgZnJvbSB5b3VyIG1pbmltYWxpc3QK
LXByaW50ZXIuIFRvIHN1cHByZXNzIHRoZSBkZWZhdWx0IHByaW50ZXIsIGp1c3QgcmVsZWFzZSBp
dCBmcm9tIHRoZQotZXZlbnQgbGlzdGVuZXIgbGlzdCBhbmQgZGVsZXRlIGl0LiBZb3UgY2FuIGRv
IHNvIGJ5IGFkZGluZyBvbmUgbGluZToKLWBgYAotICAuLi4KLSAgZGVsZXRlIGxpc3RlbmVycy5S
ZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOwotICBsaXN0ZW5lcnMu
QXBwZW5kKG5ldyBNaW5pbWFsaXN0UHJpbnRlcik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7
Ci1gYGAKLQotTm93LCBzaXQgYmFjayBhbmQgZW5qb3kgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBv
dXRwdXQgZnJvbSB5b3VyCi10ZXN0cy4gRm9yIG1vcmUgZGV0YWlscywgeW91IGNhbiByZWFkIHRo
aXMKLVtzYW1wbGVdKC4uL3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYykuCi0KLVlvdSBtYXkg
YXBwZW5kIG1vcmUgdGhhbiBvbmUgbGlzdGVuZXIgdG8gdGhlIGxpc3QuIFdoZW4gYW4gYE9uKlN0
YXJ0KClgCi1vciBgT25UZXN0UGFydFJlc3VsdCgpYCBldmVudCBpcyBmaXJlZCwgdGhlIGxpc3Rl
bmVycyB3aWxsIHJlY2VpdmUgaXQgaW4KLXRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgbGlz
dCAoc2luY2UgbmV3IGxpc3RlbmVycyBhcmUgYWRkZWQgdG8KLXRoZSBlbmQgb2YgdGhlIGxpc3Qs
IHRoZSBkZWZhdWx0IHRleHQgcHJpbnRlciBhbmQgdGhlIGRlZmF1bHQgWE1MCi1nZW5lcmF0b3Ig
d2lsbCByZWNlaXZlIHRoZSBldmVudCBmaXJzdCkuIEFuIGBPbipFbmQoKWAgZXZlbnQgd2lsbCBi
ZQotcmVjZWl2ZWQgYnkgdGhlIGxpc3RlbmVycyBpbiB0aGUgX3JldmVyc2VfIG9yZGVyLiBUaGlz
IGFsbG93cyBvdXRwdXQgYnkKLWxpc3RlbmVycyBhZGRlZCBsYXRlciB0byBiZSBmcmFtZWQgYnkg
b3V0cHV0IGZyb20gbGlzdGVuZXJzIGFkZGVkCi1lYXJsaWVyLgotCi0jIyBHZW5lcmF0aW5nIEZh
aWx1cmVzIGluIExpc3RlbmVycyAjIwotCi1Zb3UgbWF5IHVzZSBmYWlsdXJlLXJhaXNpbmcgbWFj
cm9zIChgRVhQRUNUXyooKWAsIGBBU1NFUlRfKigpYCwKLWBGQUlMKClgLCBldGMpIHdoZW4gcHJv
Y2Vzc2luZyBhbiBldmVudC4gVGhlcmUgYXJlIHNvbWUgcmVzdHJpY3Rpb25zOgotCi0gIDEuIFlv
dSBjYW5ub3QgZ2VuZXJhdGUgYW55IGZhaWx1cmUgaW4gYE9uVGVzdFBhcnRSZXN1bHQoKWAgKG90
aGVyd2lzZSBpdCB3aWxsIGNhdXNlIGBPblRlc3RQYXJ0UmVzdWx0KClgIHRvIGJlIGNhbGxlZCBy
ZWN1cnNpdmVseSkuCi0gIDEuIEEgbGlzdGVuZXIgdGhhdCBoYW5kbGVzIGBPblRlc3RQYXJ0UmVz
dWx0KClgIGlzIG5vdCBhbGxvd2VkIHRvIGdlbmVyYXRlIGFueSBmYWlsdXJlLgotCi1XaGVuIHlv
dSBhZGQgbGlzdGVuZXJzIHRvIHRoZSBsaXN0ZW5lciBsaXN0LCB5b3Ugc2hvdWxkIHB1dCBsaXN0
ZW5lcnMKLXRoYXQgaGFuZGxlIGBPblRlc3RQYXJ0UmVzdWx0KClgIF9iZWZvcmVfIGxpc3RlbmVy
cyB0aGF0IGNhbiBnZW5lcmF0ZQotZmFpbHVyZXMuIFRoaXMgZW5zdXJlcyB0aGF0IGZhaWx1cmVz
IGdlbmVyYXRlZCBieSB0aGUgbGF0dGVyIGFyZQotYXR0cmlidXRlZCB0byB0aGUgcmlnaHQgdGVz
dCBieSB0aGUgZm9ybWVyLgotCi1XZSBoYXZlIGEgc2FtcGxlIG9mIGZhaWx1cmUtcmFpc2luZyBs
aXN0ZW5lcgotW2hlcmVdKC4uL3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MpLgotCi0jIFJ1
bm5pbmcgVGVzdCBQcm9ncmFtczogQWR2YW5jZWQgT3B0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IHRl
c3QgcHJvZ3JhbXMgYXJlIG9yZGluYXJ5IGV4ZWN1dGFibGVzLiBPbmNlIGJ1aWx0LCB5b3UgY2Fu
IHJ1bgotdGhlbSBkaXJlY3RseSBhbmQgYWZmZWN0IHRoZWlyIGJlaGF2aW9yIHZpYSB0aGUgZm9s
bG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwotYW5kL29yIGNvbW1hbmQgbGluZSBmbGFncy4g
Rm9yIHRoZSBmbGFncyB0byB3b3JrLCB5b3VyIHByb2dyYW1zIG11c3QgY2FsbAotYDo6dGVzdGlu
Zzo6SW5pdEdvb2dsZVRlc3QoKWAgYmVmb3JlIGNhbGxpbmcgYFJVTl9BTExfVEVTVFMoKWAuCi0K
LVRvIHNlZSBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZsYWdzIGFuZCB0aGVpciB1c2FnZSwgcGxlYXNl
IHJ1biB5b3VyIHRlc3QKLXByb2dyYW0gd2l0aCB0aGUgYC0taGVscGAgZmxhZy4gIFlvdSBjYW4g
YWxzbyB1c2UgYC1oYCwgYC0/YCwgb3IgYC8/YAotZm9yIHNob3J0LiAgVGhpcyBmZWF0dXJlIGlz
IGFkZGVkIGluIHZlcnNpb24gMS4zLjAuCi0KLUlmIGFuIG9wdGlvbiBpcyBzcGVjaWZpZWQgYm90
aCBieSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgYnkgYQotZmxhZywgdGhlIGxhdHRlciB0
YWtlcyBwcmVjZWRlbmNlLiAgTW9zdCBvZiB0aGUgb3B0aW9ucyBjYW4gYWxzbyBiZQotc2V0L3Jl
YWQgaW4gY29kZTogdG8gYWNjZXNzIHRoZSB2YWx1ZSBvZiBjb21tYW5kIGxpbmUgZmxhZwotYC0t
Z3Rlc3RfZm9vYCwgd3JpdGUgYDo6dGVzdGluZzo6R1RFU1RfRkxBRyhmb28pYC4gIEEgY29tbW9u
IHBhdHRlcm4gaXMKLXRvIHNldCB0aGUgdmFsdWUgb2YgYSBmbGFnIGJlZm9yZSBjYWxsaW5nIGA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgCi10byBjaGFuZ2UgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgdGhlIGZsYWc6Ci1gYGAKLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICAv
LyBEaXNhYmxlcyBlbGFwc2VkIHRpbWUgYnkgZGVmYXVsdC4KLSAgOjp0ZXN0aW5nOjpHVEVTVF9G
TEFHKHByaW50X3RpbWUpID0gZmFsc2U7Ci0KLSAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8g
b3ZlcnJpZGUgdGhlIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgOjp0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0K
LWBgYAotCi0jIyBTZWxlY3RpbmcgVGVzdHMgIyMKLQotVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlv
dXMgb3B0aW9ucyBmb3IgY2hvb3Npbmcgd2hpY2ggdGVzdHMgdG8gcnVuLgotCi0jIyMgTGlzdGlu
ZyBUZXN0IE5hbWVzICMjIwotCi1Tb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGxpc3QgdGhl
IGF2YWlsYWJsZSB0ZXN0cyBpbiBhIHByb2dyYW0gYmVmb3JlCi1ydW5uaW5nIHRoZW0gc28gdGhh
dCBhIGZpbHRlciBtYXkgYmUgYXBwbGllZCBpZiBuZWVkZWQuIEluY2x1ZGluZyB0aGUgZmxhZwot
YC0tZ3Rlc3RfbGlzdF90ZXN0c2Agb3ZlcnJpZGVzIGFsbCBvdGhlciBmbGFncyBhbmQgbGlzdHMg
dGVzdHMgaW4gdGhlIGZvbGxvd2luZwotZm9ybWF0OgotYGBgCi1UZXN0Q2FzZTEuCi0gIFRlc3RO
YW1lMQotICBUZXN0TmFtZTIKLVRlc3RDYXNlMi4KLSAgVGVzdE5hbWUKLWBgYAotCi1Ob25lIG9m
IHRoZSB0ZXN0cyBsaXN0ZWQgYXJlIGFjdHVhbGx5IHJ1biBpZiB0aGUgZmxhZyBpcyBwcm92aWRl
ZC4gVGhlcmUgaXMgbm8KLWNvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRo
aXMgZmxhZy4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBS
dW5uaW5nIGEgU3Vic2V0IG9mIHRoZSBUZXN0cyAjIyMKLQotQnkgZGVmYXVsdCwgYSBHb29nbGUg
VGVzdCBwcm9ncmFtIHJ1bnMgYWxsIHRlc3RzIHRoZSB1c2VyIGhhcyBkZWZpbmVkLgotU29tZXRp
bWVzLCB5b3Ugd2FudCB0byBydW4gb25seSBhIHN1YnNldCBvZiB0aGUgdGVzdHMgKGUuZy4gZm9y
IGRlYnVnZ2luZyBvcgotcXVpY2tseSB2ZXJpZnlpbmcgYSBjaGFuZ2UpLiBJZiB5b3Ugc2V0IHRo
ZSBgR1RFU1RfRklMVEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZQotb3IgdGhlIGAtLWd0ZXN0X2Zp
bHRlcmAgZmxhZyB0byBhIGZpbHRlciBzdHJpbmcsIEdvb2dsZSBUZXN0IHdpbGwgb25seSBydW4g
dGhlCi10ZXN0cyB3aG9zZSBmdWxsIG5hbWVzIChpbiB0aGUgZm9ybSBvZiBgVGVzdENhc2VOYW1l
LlRlc3ROYW1lYCkgbWF0Y2ggdGhlCi1maWx0ZXIuCi0KLVRoZSBmb3JtYXQgb2YgYSBmaWx0ZXIg
aXMgYSAnYDpgJy1zZXBhcmF0ZWQgbGlzdCBvZiB3aWxkY2FyZCBwYXR0ZXJucyAoY2FsbGVkCi10
aGUgcG9zaXRpdmUgcGF0dGVybnMpIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAnYC1gJyBhbmQg
YW5vdGhlcgotJ2A6YCctc2VwYXJhdGVkIHBhdHRlcm4gbGlzdCAoY2FsbGVkIHRoZSBuZWdhdGl2
ZSBwYXR0ZXJucykuIEEgdGVzdCBtYXRjaGVzIHRoZQotZmlsdGVyIGlmIGFuZCBvbmx5IGlmIGl0
IG1hdGNoZXMgYW55IG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBidXQgZG9lcyBub3QKLW1hdGNo
IGFueSBvZiB0aGUgbmVnYXRpdmUgcGF0dGVybnMuCi0KLUEgcGF0dGVybiBtYXkgY29udGFpbiBg
JyonYCAobWF0Y2hlcyBhbnkgc3RyaW5nKSBvciBgJz8nYCAobWF0Y2hlcyBhbnkgc2luZ2xlCi1j
aGFyYWN0ZXIpLiBGb3IgY29udmVuaWVuY2UsIHRoZSBmaWx0ZXIgYCcqLU5lZ2F0aXZlUGF0dGVy
bnMnYCBjYW4gYmUgYWxzbwotd3JpdHRlbiBhcyBgJy1OZWdhdGl2ZVBhdHRlcm5zJ2AuCi0KLUZv
ciBleGFtcGxlOgotCi0gICogYC4vZm9vX3Rlc3RgIEhhcyBubyBmbGFnLCBhbmQgdGh1cyBydW5z
IGFsbCBpdHMgdGVzdHMuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9maWx0ZXI9KmAgQWxzbyBy
dW5zIGV2ZXJ5dGhpbmcsIGR1ZSB0byB0aGUgc2luZ2xlIG1hdGNoLWV2ZXJ5dGhpbmcgYCpgIHZh
bHVlLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKmAgUnVucyBldmVy
eXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAuCi0gICogYC4vZm9vX3Rlc3QgLS1ndGVzdF9m
aWx0ZXI9Kk51bGwqOipDb25zdHJ1Y3RvcipgIFJ1bnMgYW55IHRlc3Qgd2hvc2UgZnVsbCBuYW1l
IGNvbnRhaW5zIGVpdGhlciBgIk51bGwiYCBvciBgIkNvbnN0cnVjdG9yImAuCi0gICogYC4vZm9v
X3Rlc3QgLS1ndGVzdF9maWx0ZXI9LSpEZWF0aFRlc3QuKmAgUnVucyBhbGwgbm9uLWRlYXRoIHRl
c3RzLgotICAqIGAuL2Zvb190ZXN0IC0tZ3Rlc3RfZmlsdGVyPUZvb1Rlc3QuKi1Gb29UZXN0LkJh
cmAgUnVucyBldmVyeXRoaW5nIGluIHRlc3QgY2FzZSBgRm9vVGVzdGAgZXhjZXB0IGBGb29UZXN0
LkJhcmAuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLgotCi0jIyMgVGVt
cG9yYXJpbHkgRGlzYWJsaW5nIFRlc3RzICMjIwotCi1JZiB5b3UgaGF2ZSBhIGJyb2tlbiB0ZXN0
IHRoYXQgeW91IGNhbm5vdCBmaXggcmlnaHQgYXdheSwgeW91IGNhbiBhZGQgdGhlCi1gRElTQUJM
RURfYCBwcmVmaXggdG8gaXRzIG5hbWUuIFRoaXMgd2lsbCBleGNsdWRlIGl0IGZyb20gZXhlY3V0
aW9uLiBUaGlzIGlzCi1iZXR0ZXIgdGhhbiBjb21tZW50aW5nIG91dCB0aGUgY29kZSBvciB1c2lu
ZyBgI2lmIDBgLCBhcyBkaXNhYmxlZCB0ZXN0cyBhcmUKLXN0aWxsIGNvbXBpbGVkIChhbmQgdGh1
cyB3b24ndCByb3QpLgotCi1JZiB5b3UgbmVlZCB0byBkaXNhYmxlIGFsbCB0ZXN0cyBpbiBhIHRl
c3QgY2FzZSwgeW91IGNhbiBlaXRoZXIgYWRkIGBESVNBQkxFRF9gCi10byB0aGUgZnJvbnQgb2Yg
dGhlIG5hbWUgb2YgZWFjaCB0ZXN0LCBvciBhbHRlcm5hdGl2ZWx5IGFkZCBpdCB0byB0aGUgZnJv
bnQgb2YKLXRoZSB0ZXN0IGNhc2UgbmFtZS4KLQotRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcg
dGVzdHMgd29uJ3QgYmUgcnVuIGJ5IEdvb2dsZSBUZXN0LCBldmVuIHRob3VnaCB0aGV5Ci13aWxs
IHN0aWxsIGJlIGNvbXBpbGVkOgotCi1gYGAKLS8vIFRlc3RzIHRoYXQgRm9vIGRvZXMgQWJjLgot
VEVTVChGb29UZXN0LCBESVNBQkxFRF9Eb2VzQWJjKSB7IC4uLiB9Ci0KLWNsYXNzIERJU0FCTEVE
X0JhclRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsgLi4uIH07Ci0KLS8vIFRlc3RzIHRo
YXQgQmFyIGRvZXMgWHl6LgotVEVTVF9GKERJU0FCTEVEX0JhclRlc3QsIERvZXNYeXopIHsgLi4u
IH0KLWBgYAotCi1fTm90ZTpfIFRoaXMgZmVhdHVyZSBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0
ZW1wb3JhcnkgcGFpbi1yZWxpZWYuIFlvdSBzdGlsbAotaGF2ZSB0byBmaXggdGhlIGRpc2FibGVk
IHRlc3RzIGF0IGEgbGF0ZXIgZGF0ZS4gQXMgYSByZW1pbmRlciwgR29vZ2xlIFRlc3Qgd2lsbAot
cHJpbnQgYSBiYW5uZXIgd2FybmluZyB5b3UgaWYgYSB0ZXN0IHByb2dyYW0gY29udGFpbnMgYW55
IGRpc2FibGVkIHRlc3RzLgotCi1fVGlwOl8gWW91IGNhbiBlYXNpbHkgY291bnQgdGhlIG51bWJl
ciBvZiBkaXNhYmxlZCB0ZXN0cyB5b3UgaGF2ZQotdXNpbmcgYGdyZXBgLiBUaGlzIG51bWJlciBj
YW4gYmUgdXNlZCBhcyBhIG1ldHJpYyBmb3IgaW1wcm92aW5nIHlvdXIKLXRlc3QgcXVhbGl0eS4K
LQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBUZW1wb3Jhcmls
eSBFbmFibGluZyBEaXNhYmxlZCBUZXN0cyAjIyMKLQotVG8gaW5jbHVkZSBbZGlzYWJsZWQgdGVz
dHNdKCN0ZW1wb3JhcmlseS1kaXNhYmxpbmctdGVzdHMpIGluIHRlc3QKLWV4ZWN1dGlvbiwganVz
dCBpbnZva2UgdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZQotYC0tZ3Rlc3RfYWxzb19ydW5fZGlz
YWJsZWRfdGVzdHNgIGZsYWcgb3Igc2V0IHRoZQotYEdURVNUX0FMU09fUlVOX0RJU0FCTEVEX1RF
U1RTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIHZhbHVlIG90aGVyCi10aGFuIGAwYC4gIFlv
dSBjYW4gY29tYmluZSB0aGlzIHdpdGggdGhlCi1bLS1ndGVzdFxfZmlsdGVyXSgjcnVubmluZy1h
LXN1YnNldC1vZi10aGUtdGVzdHMpIGZsYWcgdG8gZnVydGhlciBzZWxlY3QKLXdoaWNoIGRpc2Fi
bGVkIHRlc3RzIHRvIHJ1bi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWM7
IHNpbmNlIHZlcnNpb24gMS4zLjAuCi0KLSMjIFJlcGVhdGluZyB0aGUgVGVzdHMgIyMKLQotT25j
ZSBpbiBhIHdoaWxlIHlvdSdsbCBydW4gaW50byBhIHRlc3Qgd2hvc2UgcmVzdWx0IGlzIGhpdC1v
ci1taXNzLiBQZXJoYXBzIGl0Ci13aWxsIGZhaWwgb25seSAxJSBvZiB0aGUgdGltZSwgbWFraW5n
IGl0IHJhdGhlciBoYXJkIHRvIHJlcHJvZHVjZSB0aGUgYnVnIHVuZGVyCi1hIGRlYnVnZ2VyLiBU
aGlzIGNhbiBiZSBhIG1ham9yIHNvdXJjZSBvZiBmcnVzdHJhdGlvbi4KLQotVGhlIGAtLWd0ZXN0
X3JlcGVhdGAgZmxhZyBhbGxvd3MgeW91IHRvIHJlcGVhdCBhbGwgKG9yIHNlbGVjdGVkKSB0ZXN0
IG1ldGhvZHMKLWluIGEgcHJvZ3JhbSBtYW55IHRpbWVzLiBIb3BlZnVsbHksIGEgZmxha3kgdGVz
dCB3aWxsIGV2ZW50dWFsbHkgZmFpbCBhbmQgZ2l2ZQoteW91IGEgY2hhbmNlIHRvIGRlYnVnLiBI
ZXJlJ3MgaG93IHRvIHVzZSBpdDoKLQotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0xMDAw
YCB8IFJlcGVhdCBmb29cX3Rlc3QgMTAwMCB0aW1lcyBhbmQgZG9uJ3Qgc3RvcCBhdCBmYWlsdXJl
cy4gfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotfCBgJCBmb29fdGVz
dCAtLWd0ZXN0X3JlcGVhdD0tMWAgICB8IEEgbmVnYXRpdmUgY291bnQgbWVhbnMgcmVwZWF0aW5n
IGZvcmV2ZXIuICAgICAgICAgICAgICAgfAotfCBgJCBmb29fdGVzdCAtLWd0ZXN0X3JlcGVhdD0x
MDAwIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZWAgfCBSZXBlYXQgZm9vXF90ZXN0IDEwMDAgdGlt
ZXMsIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmYWlsdXJlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNl
ZnVsIHdoZW4gcnVubmluZyB1bmRlciBhIGRlYnVnZ2VyOiB3aGVuIHRoZSB0ZXN0ZmFpbHMsIGl0
IHdpbGwgZHJvcCBpbnRvIHRoZSBkZWJ1Z2dlciBhbmQgeW91IGNhbiB0aGVuIGluc3BlY3QgdmFy
aWFibGVzIGFuZCBzdGFja3MuIHwKLXwgYCQgZm9vX3Rlc3QgLS1ndGVzdF9yZXBlYXQ9MTAwMCAt
LWd0ZXN0X2ZpbHRlcj1Gb29CYXJgIHwgUmVwZWF0IHRoZSB0ZXN0cyB3aG9zZSBuYW1lIG1hdGNo
ZXMgdGhlIGZpbHRlciAxMDAwIHRpbWVzLiB8Ci0KLUlmIHlvdXIgdGVzdCBwcm9ncmFtIGNvbnRh
aW5zIGdsb2JhbCBzZXQtdXAvdGVhci1kb3duIGNvZGUgcmVnaXN0ZXJlZAotdXNpbmcgYEFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudCgpYCwgaXQgd2lsbCBiZSByZXBlYXRlZCBpbiBlYWNoCi1pdGVy
YXRpb24gYXMgd2VsbCwgYXMgdGhlIGZsYWtpbmVzcyBtYXkgYmUgaW4gaXQuIFlvdSBjYW4gYWxz
byBzcGVjaWZ5Ci10aGUgcmVwZWF0IGNvdW50IGJ5IHNldHRpbmcgdGhlIGBHVEVTVF9SRVBFQVRg
IGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3Ms
IE1hYy4KLQotIyMgU2h1ZmZsaW5nIHRoZSBUZXN0cyAjIwotCi1Zb3UgY2FuIHNwZWNpZnkgdGhl
IGAtLWd0ZXN0X3NodWZmbGVgIGZsYWcgKG9yIHNldCB0aGUgYEdURVNUX1NIVUZGTEVgCi1lbnZp
cm9ubWVudCB2YXJpYWJsZSB0byBgMWApIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSBwcm9ncmFtIGlu
IGEgcmFuZG9tCi1vcmRlci4gVGhpcyBoZWxwcyB0byByZXZlYWwgYmFkIGRlcGVuZGVuY2llcyBi
ZXR3ZWVuIHRlc3RzLgotCi1CeSBkZWZhdWx0LCBHb29nbGUgVGVzdCB1c2VzIGEgcmFuZG9tIHNl
ZWQgY2FsY3VsYXRlZCBmcm9tIHRoZSBjdXJyZW50Ci10aW1lLiBUaGVyZWZvcmUgeW91J2xsIGdl
dCBhIGRpZmZlcmVudCBvcmRlciBldmVyeSB0aW1lLiBUaGUgY29uc29sZQotb3V0cHV0IGluY2x1
ZGVzIHRoZSByYW5kb20gc2VlZCB2YWx1ZSwgc3VjaCB0aGF0IHlvdSBjYW4gcmVwcm9kdWNlIGFu
Ci1vcmRlci1yZWxhdGVkIHRlc3QgZmFpbHVyZSBsYXRlci4gVG8gc3BlY2lmeSB0aGUgcmFuZG9t
IHNlZWQKLWV4cGxpY2l0bHksIHVzZSB0aGUgYC0tZ3Rlc3RfcmFuZG9tX3NlZWQ9U0VFRGAgZmxh
ZyAob3Igc2V0IHRoZQotYEdURVNUX1JBTkRPTV9TRUVEYCBlbnZpcm9ubWVudCB2YXJpYWJsZSks
IHdoZXJlIGBTRUVEYCBpcyBhbiBpbnRlZ2VyCi1iZXR3ZWVuIDAgYW5kIDk5OTk5LiBUaGUgc2Vl
ZCB2YWx1ZSAwIGlzIHNwZWNpYWw6IGl0IHRlbGxzIEdvb2dsZSBUZXN0Ci10byBkbyB0aGUgZGVm
YXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgc2VlZCBmcm9tIHRoZSBjdXJyZW50Ci10
aW1lLgotCi1JZiB5b3UgY29tYmluZSB0aGlzIHdpdGggYC0tZ3Rlc3RfcmVwZWF0PU5gLCBHb29n
bGUgVGVzdCB3aWxsIHBpY2sgYQotZGlmZmVyZW50IHJhbmRvbSBzZWVkIGFuZCByZS1zaHVmZmxl
IHRoZSB0ZXN0cyBpbiBlYWNoIGl0ZXJhdGlvbi4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBX
aW5kb3dzLCBNYWM7IHNpbmNlIHYxLjQuMC4KLQotIyMgQ29udHJvbGxpbmcgVGVzdCBPdXRwdXQg
IyMKLQotVGhpcyBzZWN0aW9uIHRlYWNoZXMgaG93IHRvIHR3ZWFrIHRoZSB3YXkgdGVzdCByZXN1
bHRzIGFyZSByZXBvcnRlZC4KLQotIyMjIENvbG9yZWQgVGVybWluYWwgT3V0cHV0ICMjIwotCi1H
b29nbGUgVGVzdCBjYW4gdXNlIGNvbG9ycyBpbiBpdHMgdGVybWluYWwgb3V0cHV0IHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHNwb3QKLXRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGVzdHMsIGFuZCB3aGV0
aGVyIHRlc3RzIHBhc3NlZC4KLQotWW91IGNhbiBzZXQgdGhlIEdURVNUXF9DT0xPUiBlbnZpcm9u
bWVudCB2YXJpYWJsZSBvciBzZXQgdGhlIGAtLWd0ZXN0X2NvbG9yYAotY29tbWFuZCBsaW5lIGZs
YWcgdG8gYHllc2AsIGBub2AsIG9yIGBhdXRvYCAodGhlIGRlZmF1bHQpIHRvIGVuYWJsZSBjb2xv
cnMsCi1kaXNhYmxlIGNvbG9ycywgb3IgbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4gV2hlbiB0aGUg
dmFsdWUgaXMgYGF1dG9gLCBHb29nbGUKLVRlc3Qgd2lsbCB1c2UgY29sb3JzIGlmIGFuZCBvbmx5
IGlmIHRoZSBvdXRwdXQgZ29lcyB0byBhIHRlcm1pbmFsIGFuZCAob24KLW5vbi1XaW5kb3dzIHBs
YXRmb3JtcykgdGhlIGBURVJNYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYHh0ZXJt
YCBvcgotYHh0ZXJtLWNvbG9yYC4KLQotX0F2YWlsYWJpbGl0eTpfIExpbnV4LCBXaW5kb3dzLCBN
YWMuCi0KLSMjIyBTdXBwcmVzc2luZyB0aGUgRWxhcHNlZCBUaW1lICMjIwotCi1CeSBkZWZhdWx0
LCBHb29nbGUgVGVzdCBwcmludHMgdGhlIHRpbWUgaXQgdGFrZXMgdG8gcnVuIGVhY2ggdGVzdC4g
IFRvCi1zdXBwcmVzcyB0aGF0LCBydW4gdGhlIHRlc3QgcHJvZ3JhbSB3aXRoIHRoZSBgLS1ndGVz
dF9wcmludF90aW1lPTBgCi1jb21tYW5kIGxpbmUgZmxhZy4gIFNldHRpbmcgdGhlIGBHVEVTVF9Q
UklOVF9USU1FYCBlbnZpcm9ubWVudAotdmFyaWFibGUgdG8gYDBgIGhhcyB0aGUgc2FtZSBlZmZl
Y3QuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjLiAgKEluIEdvb2dsZSBU
ZXN0IDEuMy4wIGFuZCBsb3dlciwKLXRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoYXQgdGhlIGVs
YXBzZWQgdGltZSBpcyAqKm5vdCoqIHByaW50ZWQuKQotCi0jIyMgR2VuZXJhdGluZyBhbiBYTUwg
UmVwb3J0ICMjIwotCi1Hb29nbGUgVGVzdCBjYW4gZW1pdCBhIGRldGFpbGVkIFhNTCByZXBvcnQg
dG8gYSBmaWxlIGluIGFkZGl0aW9uIHRvIGl0cyBub3JtYWwKLXRleHR1YWwgb3V0cHV0LiBUaGUg
cmVwb3J0IGNvbnRhaW5zIHRoZSBkdXJhdGlvbiBvZiBlYWNoIHRlc3QsIGFuZCB0aHVzIGNhbgot
aGVscCB5b3UgaWRlbnRpZnkgc2xvdyB0ZXN0cy4KLQotVG8gZ2VuZXJhdGUgdGhlIFhNTCByZXBv
cnQsIHNldCB0aGUgYEdURVNUX09VVFBVVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlCi1g
LS1ndGVzdF9vdXRwdXRgIGZsYWcgdG8gdGhlIHN0cmluZyBgInhtbDpfcGF0aF90b19vdXRwdXRf
ZmlsZV8iYCwgd2hpY2ggd2lsbAotY3JlYXRlIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlv
bi4gWW91IGNhbiBhbHNvIGp1c3QgdXNlIHRoZSBzdHJpbmcKLWAieG1sImAsIGluIHdoaWNoIGNh
c2UgdGhlIG91dHB1dCBjYW4gYmUgZm91bmQgaW4gdGhlIGB0ZXN0X2RldGFpbC54bWxgIGZpbGUg
aW4KLXRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotSWYgeW91IHNwZWNpZnkgYSBkaXJlY3Rvcnkg
KGZvciBleGFtcGxlLCBgInhtbDpvdXRwdXQvZGlyZWN0b3J5LyJgIG9uIExpbnV4IG9yCi1gInht
bDpvdXRwdXRcZGlyZWN0b3J5XCJgIG9uIFdpbmRvd3MpLCBHb29nbGUgVGVzdCB3aWxsIGNyZWF0
ZSB0aGUgWE1MIGZpbGUgaW4KLXRoYXQgZGlyZWN0b3J5LCBuYW1lZCBhZnRlciB0aGUgdGVzdCBl
eGVjdXRhYmxlIChlLmcuIGBmb29fdGVzdC54bWxgIGZvciB0ZXN0Ci1wcm9ncmFtIGBmb29fdGVz
dGAgb3IgYGZvb190ZXN0LmV4ZWApLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cyAocGVyaGFw
cyBsZWZ0Ci1vdmVyIGZyb20gYSBwcmV2aW91cyBydW4pLCBHb29nbGUgVGVzdCB3aWxsIHBpY2sg
YSBkaWZmZXJlbnQgbmFtZSAoZS5nLgotYGZvb190ZXN0XzEueG1sYCkgdG8gYXZvaWQgb3Zlcndy
aXRpbmcgaXQuCi0KLVRoZSByZXBvcnQgdXNlcyB0aGUgZm9ybWF0IGRlc2NyaWJlZCBoZXJlLiAg
SXQgaXMgYmFzZWQgb24gdGhlCi1ganVuaXRyZXBvcnRgIEFudCB0YXNrIGFuZCBjYW4gYmUgcGFy
c2VkIGJ5IHBvcHVsYXIgY29udGludW91cyBidWlsZAotc3lzdGVtcyBsaWtlIFtKZW5raW5zXSho
dHRwOi8vamVua2lucy1jaS5vcmcvKS4gU2luY2UgdGhhdCBmb3JtYXQKLXdhcyBvcmlnaW5hbGx5
IGludGVuZGVkIGZvciBKYXZhLCBhIGxpdHRsZSBpbnRlcnByZXRhdGlvbiBpcyByZXF1aXJlZAot
dG8gbWFrZSBpdCBhcHBseSB0byBHb29nbGUgVGVzdCB0ZXN0cywgYXMgc2hvd24gaGVyZToKLQot
YGBgCi08dGVzdHN1aXRlcyBuYW1lPSJBbGxUZXN0cyIgLi4uPgotICA8dGVzdHN1aXRlIG5hbWU9
InRlc3RfY2FzZV9uYW1lIiAuLi4+Ci0gICAgPHRlc3RjYXNlIG5hbWU9InRlc3RfbmFtZSIgLi4u
PgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iLi4uIi8+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iLz4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiIvPgotICAgIDwvdGVzdGNhc2U+
Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotYGBgCi0KLSAgKiBUaGUgcm9vdCBgPHRl
c3RzdWl0ZXM+YCBlbGVtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBlbnRpcmUgdGVzdCBwcm9ncmFt
LgotICAqIGA8dGVzdHN1aXRlPmAgZWxlbWVudHMgY29ycmVzcG9uZCB0byBHb29nbGUgVGVzdCB0
ZXN0IGNhc2VzLgotICAqIGA8dGVzdGNhc2U+YCBlbGVtZW50cyBjb3JyZXNwb25kIHRvIEdvb2ds
ZSBUZXN0IHRlc3QgZnVuY3Rpb25zLgotCi1Gb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJv
Z3JhbQotCi1gYGAKLVRFU1QoTWF0aFRlc3QsIEFkZGl0aW9uKSB7IC4uLiB9Ci1URVNUKE1hdGhU
ZXN0LCBTdWJ0cmFjdGlvbikgeyAuLi4gfQotVEVTVChMb2dpY1Rlc3QsIE5vbkNvbnRyYWRpY3Rp
b24pIHsgLi4uIH0KLWBgYAotCi1jb3VsZCBnZW5lcmF0ZSB0aGlzIHJlcG9ydDoKLQotYGBgCi08
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9
IjMiIGZhaWx1cmVzPSIxIiBlcnJvcnM9IjAiIHRpbWU9IjM1IiBuYW1lPSJBbGxUZXN0cyI+Ci0g
IDx0ZXN0c3VpdGUgbmFtZT0iTWF0aFRlc3QiIHRlc3RzPSIyIiBmYWlsdXJlcz0iMSIgZXJyb3Jz
PSIwIiB0aW1lPSIxNSI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IkFkZGl0aW9uIiBzdGF0dXM9InJ1
biIgdGltZT0iNyIgY2xhc3NuYW1lPSIiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iVmFsdWUg
b2Y6IGFkZCgxLCAxKSYjeDBBOyBBY3R1YWw6IDMmI3gwQTtFeHBlY3RlZDogMiIgdHlwZT0iIi8+
Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJWYWx1ZSBvZjogYWRkKDEsIC0xKSYjeDBBOyBBY3R1
YWw6IDEmI3gwQTtFeHBlY3RlZDogMCIgdHlwZT0iIi8+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgICA8
dGVzdGNhc2UgbmFtZT0iU3VidHJhY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1lPSI1IiBjbGFzc25h
bWU9IiI+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFt
ZT0iTG9naWNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGVycm9ycz0iMCIgdGltZT0iNSI+
Ci0gICAgPHRlc3RjYXNlIG5hbWU9Ik5vbkNvbnRyYWRpY3Rpb24iIHN0YXR1cz0icnVuIiB0aW1l
PSI1IiBjbGFzc25hbWU9IiI+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci08L3Rl
c3RzdWl0ZXM+Ci1gYGAKLQotVGhpbmdzIHRvIG5vdGU6Ci0KLSAgKiBUaGUgYHRlc3RzYCBhdHRy
aWJ1dGUgb2YgYSBgPHRlc3RzdWl0ZXM+YCBvciBgPHRlc3RzdWl0ZT5gIGVsZW1lbnQgdGVsbHMg
aG93IG1hbnkgdGVzdCBmdW5jdGlvbnMgdGhlIEdvb2dsZSBUZXN0IHByb2dyYW0gb3IgdGVzdCBj
YXNlIGNvbnRhaW5zLCB3aGlsZSB0aGUgYGZhaWx1cmVzYCBhdHRyaWJ1dGUgdGVsbHMgaG93IG1h
bnkgb2YgdGhlbSBmYWlsZWQuCi0gICogVGhlIGB0aW1lYCBhdHRyaWJ1dGUgZXhwcmVzc2VzIHRo
ZSBkdXJhdGlvbiBvZiB0aGUgdGVzdCwgdGVzdCBjYXNlLCBvciBlbnRpcmUgdGVzdCBwcm9ncmFt
IGluIG1pbGxpc2Vjb25kcy4KLSAgKiBFYWNoIGA8ZmFpbHVyZT5gIGVsZW1lbnQgY29ycmVzcG9u
ZHMgdG8gYSBzaW5nbGUgZmFpbGVkIEdvb2dsZSBUZXN0IGFzc2VydGlvbi4KLSAgKiBTb21lIEpV
bml0IGNvbmNlcHRzIGRvbid0IGFwcGx5IHRvIEdvb2dsZSBUZXN0LCB5ZXQgd2UgaGF2ZSB0byBj
b25mb3JtIHRvIHRoZSBEVEQuIFRoZXJlZm9yZSB5b3UnbGwgc2VlIHNvbWUgZHVtbXkgZWxlbWVu
dHMgYW5kIGF0dHJpYnV0ZXMgaW4gdGhlIHJlcG9ydC4gWW91IGNhbiBzYWZlbHkgaWdub3JlIHRo
ZXNlIHBhcnRzLgotCi1fQXZhaWxhYmlsaXR5Ol8gTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMg
Q29udHJvbGxpbmcgSG93IEZhaWx1cmVzIEFyZSBSZXBvcnRlZCAjIwotCi0jIyMgVHVybmluZyBB
c3NlcnRpb24gRmFpbHVyZXMgaW50byBCcmVhay1Qb2ludHMgIyMjCi0KLVdoZW4gcnVubmluZyB0
ZXN0IHByb2dyYW1zIHVuZGVyIGEgZGVidWdnZXIsIGl0J3MgdmVyeSBjb252ZW5pZW50IGlmIHRo
ZQotZGVidWdnZXIgY2FuIGNhdGNoIGFuIGFzc2VydGlvbiBmYWlsdXJlIGFuZCBhdXRvbWF0aWNh
bGx5IGRyb3AgaW50byBpbnRlcmFjdGl2ZQotbW9kZS4gR29vZ2xlIFRlc3QncyBfYnJlYWstb24t
ZmFpbHVyZV8gbW9kZSBzdXBwb3J0cyB0aGlzIGJlaGF2aW9yLgotCi1UbyBlbmFibGUgaXQsIHNl
dCB0aGUgYEdURVNUX0JSRUFLX09OX0ZBSUxVUkVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEg
dmFsdWUKLW90aGVyIHRoYW4gYDBgIC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGAt
LWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmVgCi1jb21tYW5kIGxpbmUgZmxhZy4KLQotX0F2YWlsYWJp
bGl0eTpfIExpbnV4LCBXaW5kb3dzLCBNYWMuCi0KLSMjIyBEaXNhYmxpbmcgQ2F0Y2hpbmcgVGVz
dC1UaHJvd24gRXhjZXB0aW9ucyAjIyMKLQotR29vZ2xlIFRlc3QgY2FuIGJlIHVzZWQgZWl0aGVy
IHdpdGggb3Igd2l0aG91dCBleGNlcHRpb25zIGVuYWJsZWQuICBJZgotYSB0ZXN0IHRocm93cyBh
IEMrKyBleGNlcHRpb24gb3IgKG9uIFdpbmRvd3MpIGEgc3RydWN0dXJlZCBleGNlcHRpb24KLShT
RUgpLCBieSBkZWZhdWx0IEdvb2dsZSBUZXN0IGNhdGNoZXMgaXQsIHJlcG9ydHMgaXQgYXMgYSB0
ZXN0Ci1mYWlsdXJlLCBhbmQgY29udGludWVzIHdpdGggdGhlIG5leHQgdGVzdCBtZXRob2QuICBU
aGlzIG1heGltaXplcyB0aGUKLWNvdmVyYWdlIG9mIGEgdGVzdCBydW4uICBBbHNvLCBvbiBXaW5k
b3dzIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiB3aWxsCi1jYXVzZSBhIHBvcC11cCB3aW5kb3csIHNv
IGNhdGNoaW5nIHRoZSBleGNlcHRpb25zIGFsbG93cyB5b3UgdG8gcnVuCi10aGUgdGVzdHMgYXV0
b21hdGljYWxseS4KLQotV2hlbiBkZWJ1Z2dpbmcgdGhlIHRlc3QgZmFpbHVyZXMsIGhvd2V2ZXIs
IHlvdSBtYXkgaW5zdGVhZCB3YW50IHRoZQotZXhjZXB0aW9ucyB0byBiZSBoYW5kbGVkIGJ5IHRo
ZSBkZWJ1Z2dlciwgc3VjaCB0aGF0IHlvdSBjYW4gZXhhbWluZQotdGhlIGNhbGwgc3RhY2sgd2hl
biBhbiBleGNlcHRpb24gaXMgdGhyb3duLiAgVG8gYWNoaWV2ZSB0aGF0LCBzZXQgdGhlCi1gR1RF
U1RfQ0FUQ0hfRVhDRVBUSU9OU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYDBgLCBvciB1c2Ug
dGhlCi1gLS1ndGVzdF9jYXRjaF9leGNlcHRpb25zPTBgIGZsYWcgd2hlbiBydW5uaW5nIHRoZSB0
ZXN0cy4KLQotKipBdmFpbGFiaWxpdHkqKjogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyMjIExl
dHRpbmcgQW5vdGhlciBUZXN0aW5nIEZyYW1ld29yayBEcml2ZSAjIyMKLQotSWYgeW91IHdvcmsg
b24gYSBwcm9qZWN0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1c2luZyBhbm90aGVyIHRlc3RpbmcK
LWZyYW1ld29yayBhbmQgaXMgbm90IHJlYWR5IHRvIGNvbXBsZXRlbHkgc3dpdGNoIHRvIEdvb2ds
ZSBUZXN0IHlldCwKLXlvdSBjYW4gZ2V0IG11Y2ggb2YgR29vZ2xlIFRlc3QncyBiZW5lZml0IGJ5
IHVzaW5nIGl0cyBhc3NlcnRpb25zIGluCi15b3VyIGV4aXN0aW5nIHRlc3RzLiAgSnVzdCBjaGFu
Z2UgeW91ciBgbWFpbigpYCBmdW5jdGlvbiB0byBsb29rCi1saWtlOgotCi1gYGAKLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAg
Ojp0ZXN0aW5nOjpHVEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgLy8gSW1w
b3J0YW50OiBHb29nbGUgVGVzdCBtdXN0IGJlIGluaXRpYWxpemVkLgotICA6OnRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAuLi4gd2hhdGV2ZXIgeW91ciBleGlzdGlu
ZyB0ZXN0aW5nIGZyYW1ld29yayByZXF1aXJlcyAuLi4KLX0KLWBgYAotCi1XaXRoIHRoYXQsIHlv
dSBjYW4gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gYWRkaXRpb24gdG8gdGhlCi1uYXRp
dmUgYXNzZXJ0aW9ucyB5b3VyIHRlc3RpbmcgZnJhbWV3b3JrIHByb3ZpZGVzLCBmb3IgZXhhbXBs
ZToKLQotYGBgCi12b2lkIFRlc3RGb29Eb2VzQmFyKCkgewotICBGb28gZm9vOwotICBFWFBFQ1Rf
TEUoZm9vLkJhcigxKSwgMTAwKTsgICAgIC8vIEEgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uLgotICBD
UFBVTklUX0FTU0VSVChmb28uSXNFbXB0eSgpKTsgIC8vIEEgbmF0aXZlIGFzc2VydGlvbi4KLX0K
LWBgYAotCi1JZiBhIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBmYWlscywgaXQgd2lsbCBwcmludCBh
biBlcnJvciBtZXNzYWdlIGFuZAotdGhyb3cgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIHRy
ZWF0ZWQgYXMgYSBmYWlsdXJlIGJ5IHlvdXIgaG9zdAotdGVzdGluZyBmcmFtZXdvcmsuICBJZiB5
b3UgY29tcGlsZSB5b3VyIGNvZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLAotYSBmYWlsZWQg
R29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHdpbGwgaW5zdGVhZCBleGl0IHlvdXIgcHJvZ3JhbSB3aXRo
IGEKLW5vbi16ZXJvIGNvZGUsIHdoaWNoIHdpbGwgYWxzbyBzaWduYWwgYSB0ZXN0IGZhaWx1cmUg
dG8geW91ciB0ZXN0Ci1ydW5uZXIuCi0KLUlmIHlvdSBkb24ndCB3cml0ZSBgOjp0ZXN0aW5nOjpH
VEVTVF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gdHJ1ZTtgIGluCi15b3VyIGBtYWluKClgLCB5
b3UgY2FuIGFsdGVybmF0aXZlbHkgZW5hYmxlIHRoaXMgZmVhdHVyZSBieSBzcGVjaWZ5aW5nCi10
aGUgYC0tZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZWAgZmxhZyBvbiB0aGUgY29tbWFuZC1saW5lIG9y
IHNldHRpbmcgdGhlCi1gR1RFU1RfVEhST1dfT05fRkFJTFVSRWAgZW52aXJvbm1lbnQgdmFyaWFi
bGUgdG8gYSBub24temVybyB2YWx1ZS4KLQotRGVhdGggdGVzdHMgYXJlIF9ub3RfIHN1cHBvcnRl
ZCB3aGVuIG90aGVyIHRlc3QgZnJhbWV3b3JrIGlzIHVzZWQgdG8gb3JnYW5pemUgdGVzdHMuCi0K
LV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBzaW5jZSB2MS4zLjAuCi0KLSMj
IERpc3RyaWJ1dGluZyBUZXN0IEZ1bmN0aW9ucyB0byBNdWx0aXBsZSBNYWNoaW5lcyAjIwotCi1J
ZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIG1hY2hpbmUgeW91IGNhbiB1c2UgdG8gcnVuIGEgdGVz
dCBwcm9ncmFtLAoteW91IG1pZ2h0IHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbiBw
YXJhbGxlbCBhbmQgZ2V0IHRoZQotcmVzdWx0IGZhc3Rlci4gIFdlIGNhbGwgdGhpcyB0ZWNobmlx
dWUgX3NoYXJkaW5nXywgd2hlcmUgZWFjaCBtYWNoaW5lCi1pcyBjYWxsZWQgYSBfc2hhcmRfLgot
Ci1Hb29nbGUgVGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGVzdCBzaGFyZGluZy4gIFRvIHRha2Ug
YWR2YW50YWdlIG9mCi10aGlzIGZlYXR1cmUsIHlvdXIgdGVzdCBydW5uZXIgKG5vdCBwYXJ0IG9m
IEdvb2dsZSBUZXN0KSBuZWVkcyB0byBkbwotdGhlIGZvbGxvd2luZzoKLQotICAxLiBBbGxvY2F0
ZSBhIG51bWJlciBvZiBtYWNoaW5lcyAoc2hhcmRzKSB0byBydW4gdGhlIHRlc3RzLgotICAxLiBP
biBlYWNoIHNoYXJkLCBzZXQgdGhlIGBHVEVTVF9UT1RBTF9TSEFSRFNgIGVudmlyb25tZW50IHZh
cmlhYmxlIHRvIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzLiAgSXQgbXVzdCBiZSB0aGUgc2Ft
ZSBmb3IgYWxsIHNoYXJkcy4KLSAgMS4gT24gZWFjaCBzaGFyZCwgc2V0IHRoZSBgR1RFU1RfU0hB
UkRfSU5ERVhgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBpbmRleCBvZiB0aGUgc2hhcmQu
ICBEaWZmZXJlbnQgc2hhcmRzIG11c3QgYmUgYXNzaWduZWQgZGlmZmVyZW50IGluZGljZXMsIHdo
aWNoIG11c3QgYmUgaW4gdGhlIHJhbmdlIGBbMCwgR1RFU1RfVE9UQUxfU0hBUkRTIC0gMV1gLgot
ICAxLiBSdW4gdGhlIHNhbWUgdGVzdCBwcm9ncmFtIG9uIGFsbCBzaGFyZHMuICBXaGVuIEdvb2ds
ZSBUZXN0IHNlZXMgdGhlIGFib3ZlIHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGl0IHdpbGwg
c2VsZWN0IGEgc3Vic2V0IG9mIHRoZSB0ZXN0IGZ1bmN0aW9ucyB0byBydW4uICBBY3Jvc3MgYWxs
IHNoYXJkcywgZWFjaCB0ZXN0IGZ1bmN0aW9uIGluIHRoZSBwcm9ncmFtIHdpbGwgYmUgcnVuIGV4
YWN0bHkgb25jZS4KLSAgMS4gV2FpdCBmb3IgYWxsIHNoYXJkcyB0byBmaW5pc2gsIHRoZW4gY29s
bGVjdCBhbmQgcmVwb3J0IHRoZSByZXN1bHRzLgotCi1Zb3VyIHByb2plY3QgbWF5IGhhdmUgdGVz
dHMgdGhhdCB3ZXJlIHdyaXR0ZW4gd2l0aG91dCBHb29nbGUgVGVzdCBhbmQKLXRodXMgZG9uJ3Qg
dW5kZXJzdGFuZCB0aGlzIHByb3RvY29sLiAgSW4gb3JkZXIgZm9yIHlvdXIgdGVzdCBydW5uZXIg
dG8KLWZpZ3VyZSBvdXQgd2hpY2ggdGVzdCBzdXBwb3J0cyBzaGFyZGluZywgaXQgY2FuIHNldCB0
aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlIGBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRWAgdG8gYSBu
b24tZXhpc3RlbnQgZmlsZSBwYXRoLiAgSWYgYQotdGVzdCBwcm9ncmFtIHN1cHBvcnRzIHNoYXJk
aW5nLCBpdCB3aWxsIGNyZWF0ZSB0aGlzIGZpbGUgdG8KLWFja25vd2xlZGdlIHRoZSBmYWN0ICh0
aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZSBub3QKLWltcG9ydGFudCBhdCB0aGlz
IHRpbWU7IGFsdGhvdWdoIHdlIG1heSBzdGljayBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbgotaW4g
aXQgaW4gdGhlIGZ1dHVyZS4pOyBvdGhlcndpc2UgaXQgd2lsbCBub3QgY3JlYXRlIGl0LgotCi1I
ZXJlJ3MgYW4gZXhhbXBsZSB0byBtYWtlIGl0IGNsZWFyLiAgU3VwcG9zZSB5b3UgaGF2ZSBhIHRl
c3QgcHJvZ3JhbQotYGZvb190ZXN0YCB0aGF0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgNSB0ZXN0
IGZ1bmN0aW9uczoKLWBgYAotVEVTVChBLCBWKQotVEVTVChBLCBXKQotVEVTVChCLCBYKQotVEVT
VChCLCBZKQotVEVTVChCLCBaKQotYGBgCi1hbmQgeW91IGhhdmUgMyBtYWNoaW5lcyBhdCB5b3Vy
IGRpc3Bvc2FsLiAgVG8gcnVuIHRoZSB0ZXN0IGZ1bmN0aW9ucyBpbgotcGFyYWxsZWwsIHlvdSB3
b3VsZCBzZXQgYEdURVNUX1RPVEFMX1NIQVJEU2AgdG8gMyBvbiBhbGwgbWFjaGluZXMsIGFuZAot
c2V0IGBHVEVTVF9TSEFSRF9JTkRFWGAgdG8gMCwgMSwgYW5kIDIgb24gdGhlIG1hY2hpbmVzIHJl
c3BlY3RpdmVseS4KLVRoZW4geW91IHdvdWxkIHJ1biB0aGUgc2FtZSBgZm9vX3Rlc3RgIG9uIGVh
Y2ggbWFjaGluZS4KLQotR29vZ2xlIFRlc3QgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIGNoYW5nZSBo
b3cgdGhlIHdvcmsgaXMgZGlzdHJpYnV0ZWQKLWFjcm9zcyB0aGUgc2hhcmRzLCBidXQgaGVyZSdz
IG9uZSBwb3NzaWJsZSBzY2VuYXJpbzoKLQotICAqIE1hY2hpbmUgIzAgcnVucyBgQS5WYCBhbmQg
YEIuWGAuCi0gICogTWFjaGluZSAjMSBydW5zIGBBLldgIGFuZCBgQi5ZYC4KLSAgKiBNYWNoaW5l
ICMyIHJ1bnMgYEIuWmAuCi0KLV9BdmFpbGFiaWxpdHk6XyBMaW51eCwgV2luZG93cywgTWFjOyBz
aW5jZSB2ZXJzaW9uIDEuMy4wLgotCi0jIEZ1c2luZyBHb29nbGUgVGVzdCBTb3VyY2UgRmlsZXMg
IwotCi1Hb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIH4zMCBmaWxlcyAo
ZXhjbHVkaW5nIGl0cyBvd24KLXRlc3RzKS4gIFNvbWV0aW1lcyB5b3UgbWF5IHdhbnQgdGhlbSB0
byBiZSBwYWNrYWdlZCB1cCBpbiB0d28gZmlsZXMgKGEKLWAuaGAgYW5kIGEgYC5jY2ApIGluc3Rl
YWQsIHN1Y2ggdGhhdCB5b3UgY2FuIGVhc2lseSBjb3B5IHRoZW0gdG8gYSBuZXcKLW1hY2hpbmUg
YW5kIHN0YXJ0IGhhY2tpbmcgdGhlcmUuICBGb3IgdGhpcyB3ZSBwcm92aWRlIGFuIGV4cGVyaW1l
bnRhbAotUHl0aG9uIHNjcmlwdCBgZnVzZV9ndGVzdF9maWxlcy5weWAgaW4gdGhlIGBzY3JpcHRz
L2AgZGlyZWN0b3J5IChzaW5jZSByZWxlYXNlIDEuMy4wKS4KLUFzc3VtaW5nIHlvdSBoYXZlIFB5
dGhvbiAyLjQgb3IgYWJvdmUgaW5zdGFsbGVkIG9uIHlvdXIgbWFjaGluZSwganVzdAotZ28gdG8g
dGhhdCBkaXJlY3RvcnkgYW5kIHJ1bgotYGBgCi1weXRob24gZnVzZV9ndGVzdF9maWxlcy5weSBP
VVRQVVRfRElSCi1gYGAKLQotYW5kIHlvdSBzaG91bGQgc2VlIGFuIGBPVVRQVVRfRElSYCBkaXJl
Y3RvcnkgYmVpbmcgY3JlYXRlZCB3aXRoIGZpbGVzCi1gZ3Rlc3QvZ3Rlc3QuaGAgYW5kIGBndGVz
dC9ndGVzdC1hbGwuY2NgIGluIGl0LiAgVGhlc2UgZmlsZXMgY29udGFpbgotZXZlcnl0aGluZyB5
b3UgbmVlZCB0byB1c2UgR29vZ2xlIFRlc3QuICBKdXN0IGNvcHkgdGhlbSB0byBhbnl3aGVyZQot
eW91IHdhbnQgYW5kIHlvdSBhcmUgcmVhZHkgdG8gd3JpdGUgdGVzdHMuICBZb3UgY2FuIHVzZSB0
aGUKLVtzY3JpcHRzL3Rlc3QvTWFrZWZpbGVdKC4uL3NjcmlwdHMvdGVzdC9NYWtlZmlsZSkKLWZp
bGUgYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29tcGlsZSB5b3VyIHRlc3RzIGFnYWluc3QgdGhl
bS4KLQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxhdGlvbnMhIFlvdSd2
ZSBub3cgbGVhcm5lZCBtb3JlIGFkdmFuY2VkIEdvb2dsZSBUZXN0IHRvb2xzIGFuZCBhcmUKLXJl
YWR5IHRvIHRhY2tsZSBtb3JlIGNvbXBsZXggdGVzdGluZyB0YXNrcy4gSWYgeW91IHdhbnQgdG8g
ZGl2ZSBldmVuIGRlZXBlciwgeW91Ci1jYW4gcmVhZCB0aGUgW0ZyZXF1ZW50bHktQXNrZWQgUXVl
c3Rpb25zXShWMV83X0ZBUS5tZCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdf
RG9jdW1lbnRhdGlvbi5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19Eb2N1bWVudGF0aW9uLm1k
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODI2OTdhNTBiOWEuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfRG9jdW1lbnRhdGlvbi5tZAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0ICswLDAgQEAKLVRoaXMgcGFnZSBsaXN0cyBhbGwgZG9jdW1lbnRhdGlvbiB3
aWtpIHBhZ2VzIGZvciBHb29nbGUgVGVzdCAqKih0aGUgU1ZOIHRydW5rIHZlcnNpb24pKioKLS0t
ICoqaWYgeW91IHVzZSBhIHJlbGVhc2VkIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QsIHBsZWFzZSBy
ZWFkIHRoZQotZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBzcGVjaWZpYyB2ZXJzaW9uIGluc3RlYWQu
KioKLQotICAqIFtQcmltZXJdKFYxXzdfUHJpbWVyLm1kKSAtLSBzdGFydCBoZXJlIGlmIHlvdSBh
cmUgbmV3IHRvIEdvb2dsZSBUZXN0LgotICAqIFtTYW1wbGVzXShWMV83X1NhbXBsZXMubWQpIC0t
IGxlYXJuIGZyb20gZXhhbXBsZXMuCi0gICogW0FkdmFuY2VkR3VpZGVdKFYxXzdfQWR2YW5jZWRH
dWlkZS5tZCkgLS0gbGVhcm4gbW9yZSBhYm91dCBHb29nbGUgVGVzdC4KLSAgKiBbWGNvZGVHdWlk
ZV0oVjFfN19YY29kZUd1aWRlLm1kKSAtLSBob3cgdG8gdXNlIEdvb2dsZSBUZXN0IGluIFhjb2Rl
IG9uIE1hYy4KLSAgKiBbRnJlcXVlbnRseS1Bc2tlZCBRdWVzdGlvbnNdKFYxXzdfRkFRLm1kKSAt
LSBjaGVjayBoZXJlIGJlZm9yZSBhc2tpbmcgYSBxdWVzdGlvbiBvbiB0aGUgbWFpbGluZyBsaXN0
LgotCi1UbyBjb250cmlidXRlIGNvZGUgdG8gR29vZ2xlIFRlc3QsIHJlYWQ6Ci0KLSAgKiBbRGV2
R3VpZGVdKERldkd1aWRlLm1kKSAtLSByZWFkIHRoaXMgX2JlZm9yZV8gd3JpdGluZyB5b3VyIGZp
cnN0IHBhdGNoLgotICAqIFtQdW1wTWFudWFsXShWMV83X1B1bXBNYW51YWwubWQpIC0tIGhvdyB3
ZSBnZW5lcmF0ZSBzb21lIG9mIEdvb2dsZSBUZXN0J3Mgc291cmNlIGZpbGVzLgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19GQVEu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfRkFRLm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZGQ5MTRkY2YxNmEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2Nz
L1YxXzdfRkFRLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTA4MiArMCwwIEBACi0KLQotSWYgeW91
IGNhbm5vdCBmaW5kIHRoZSBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBoZXJlLCBhbmQgeW91IGhh
dmUgcmVhZAotW1ByaW1lcl0oVjFfN19QcmltZXIubWQpIGFuZCBbQWR2YW5jZWRHdWlkZV0oVjFf
N19BZHZhbmNlZEd1aWRlLm1kKSwgc2VuZCBpdCB0bwotZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29n
bGVncm91cHMuY29tLgotCi0jIyBXaHkgc2hvdWxkIEkgdXNlIEdvb2dsZSBUZXN0IGluc3RlYWQg
b2YgbXkgZmF2b3JpdGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrPyAjIwotCi1GaXJzdCwgbGV0IHVz
IHNheSBjbGVhcmx5IHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBnZXQgaW50byB0aGUgZGViYXRlIG9m
Ci13aGljaCBDKysgdGVzdGluZyBmcmFtZXdvcmsgaXMgKip0aGUgYmVzdCoqLiAgVGhlcmUgZXhp
c3QgbWFueSBmaW5lCi1mcmFtZXdvcmtzIGZvciB3cml0aW5nIEMrKyB0ZXN0cywgYW5kIHdlIGhh
dmUgdHJlbWVuZG91cyByZXNwZWN0IGZvcgotdGhlIGRldmVsb3BlcnMgYW5kIHVzZXJzIG9mIHRo
ZW0uICBXZSBkb24ndCB0aGluayB0aGVyZSBpcyAob3Igd2lsbAotYmUpIGEgc2luZ2xlIGJlc3Qg
ZnJhbWV3b3JrIC0geW91IGhhdmUgdG8gcGljayB0aGUgcmlnaHQgdG9vbCBmb3IgdGhlCi1wYXJ0
aWN1bGFyIHRhc2sgeW91IGFyZSB0YWNrbGluZy4KLQotV2UgY3JlYXRlZCBHb29nbGUgVGVzdCBi
ZWNhdXNlIHdlIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0IGNvbWJpbmF0aW9uCi1vZiBmZWF0dXJl
cyBhbmQgY29udmVuaWVuY2VzIGluIGFuIGV4aXN0aW5nIGZyYW1ld29yayB0byBzYXRpc2Z5IF9v
dXJfCi1uZWVkcy4gIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHRoaW5ncyB0aGF0IF93ZV8g
bGlrZSBhYm91dCBHb29nbGUKLVRlc3QuICBXZSBkb24ndCBjbGFpbSB0aGVtIHRvIGJlIHVuaXF1
ZSB0byBHb29nbGUgVGVzdCAtIHJhdGhlciwgdGhlCi1jb21iaW5hdGlvbiBvZiB0aGVtIG1ha2Vz
IEdvb2dsZSBUZXN0IHRoZSBjaG9pY2UgZm9yIHVzLiAgV2UgaG9wZSB0aGlzCi1saXN0IGNhbiBo
ZWxwIHlvdSBkZWNpZGUgd2hldGhlciBpdCBpcyBmb3IgeW91IHRvby4KLQotICAqIEdvb2dsZSBU
ZXN0IGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlOiBpdCBkb2Vzbid0IHJlcXVpcmUgZXhjZXB0
aW9ucyBvciBSVFRJOyBpdCB3b3JrcyBhcm91bmQgdmFyaW91cyBidWdzIGluIHZhcmlvdXMgY29t
cGlsZXJzIGFuZCBlbnZpcm9ubWVudHM7IGV0Yy4gIEFzIGEgcmVzdWx0LCBpdCB3b3JrcyBvbiBM
aW51eCwgTWFjIE9TIFgsIFdpbmRvd3MgYW5kIHNldmVyYWwgZW1iZWRkZWQgb3BlcmF0aW5nIHN5
c3RlbXMuCi0gICogTm9uZmF0YWwgYXNzZXJ0aW9ucyAoYEVYUEVDVF8qYCkgaGF2ZSBwcm92ZW4g
dG8gYmUgZ3JlYXQgdGltZSBzYXZlcnMsIGFzIHRoZXkgYWxsb3cgYSB0ZXN0IHRvIHJlcG9ydCBt
dWx0aXBsZSBmYWlsdXJlcyBpbiBhIHNpbmdsZSBlZGl0LWNvbXBpbGUtdGVzdCBjeWNsZS4KLSAg
KiBJdCdzIGVhc3kgdG8gd3JpdGUgYXNzZXJ0aW9ucyB0aGF0IGdlbmVyYXRlIGluZm9ybWF0aXZl
IG1lc3NhZ2VzOiB5b3UganVzdCB1c2UgdGhlIHN0cmVhbSBzeW50YXggdG8gYXBwZW5kIGFueSBh
ZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBlLmcuIGBBU1NFUlRfRVEoNSwgRm9vKGkpKSA8PCAiIHdo
ZXJlIGkgPSAiIDw8IGk7YC4gIEl0IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBzZXQgb2YgbWFjcm9z
IG9yIHNwZWNpYWwgZnVuY3Rpb25zLgotICAqIEdvb2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgZGV0
ZWN0cyB5b3VyIHRlc3RzIGFuZCBkb2Vzbid0IHJlcXVpcmUgeW91IHRvIGVudW1lcmF0ZSB0aGVt
IGluIG9yZGVyIHRvIHJ1biB0aGVtLgotICAqIERlYXRoIHRlc3RzIGFyZSBwcmV0dHkgaGFuZHkg
Zm9yIGVuc3VyaW5nIHRoYXQgeW91ciBhc3NlcnRzIGluIHByb2R1Y3Rpb24gY29kZSBhcmUgdHJp
Z2dlcmVkIGJ5IHRoZSByaWdodCBjb25kaXRpb25zLgotICAqIGBTQ09QRURfVFJBQ0VgIGhlbHBz
IHlvdSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4g
aXQgY29tZXMgZnJvbSBpbnNpZGUgYSBzdWItcm91dGluZSBvciBsb29wLgotICAqIFlvdSBjYW4g
ZGVjaWRlIHdoaWNoIHRlc3RzIHRvIHJ1biB1c2luZyBuYW1lIHBhdHRlcm5zLiAgVGhpcyBzYXZl
cyB0aW1lIHdoZW4geW91IHdhbnQgdG8gcXVpY2tseSByZXByb2R1Y2UgYSB0ZXN0IGZhaWx1cmUu
Ci0gICogR29vZ2xlIFRlc3QgY2FuIGdlbmVyYXRlIFhNTCB0ZXN0IHJlc3VsdCByZXBvcnRzIHRo
YXQgY2FuIGJlIHBhcnNlZCBieSBwb3B1bGFyIGNvbnRpbnVvdXMgYnVpbGQgc3lzdGVtIGxpa2Ug
SHVkc29uLgotICAqIFNpbXBsZSB0aGluZ3MgYXJlIGVhc3kgaW4gR29vZ2xlIFRlc3QsIHdoaWxl
IGhhcmQgdGhpbmdzIGFyZSBwb3NzaWJsZTogaW4gYWRkaXRpb24gdG8gYWR2YW5jZWQgZmVhdHVy
ZXMgbGlrZSBbZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzXShWMV83X0FkdmFuY2VkR3VpZGUubWQj
Z2xvYmFsLXNldC11cC1hbmQtdGVhci1kb3duKSBhbmQgdGVzdHMgcGFyYW1ldGVyaXplZCBieSBb
dmFsdWVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjdmFsdWUtcGFyYW1ldGVyaXplZC10ZXN0cykg
b3IgW3R5cGVzXShWMV83X0FkdmFuY2VkR3VpZGUubWQjdHlwZWQtdGVzdHMpLCBHb29nbGUgVGVz
dCBzdXBwb3J0cyB2YXJpb3VzIHdheXMgZm9yIHRoZSB1c2VyIHRvIGV4dGVuZCB0aGUgZnJhbWV3
b3JrIC0tIGlmIEdvb2dsZSBUZXN0IGRvZXNuJ3QgZG8gc29tZXRoaW5nIG91dCBvZiB0aGUgYm94
LCBjaGFuY2VzIGFyZSB0aGF0IGEgdXNlciBjYW4gaW1wbGVtZW50IHRoZSBmZWF0dXJlIHVzaW5n
IEdvb2dsZSBUZXN0J3MgcHVibGljIEFQSSwgd2l0aG91dCBjaGFuZ2luZyBHb29nbGUgVGVzdCBp
dHNlbGYuICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuOgotICAgICogZXhwYW5kIHlvdXIgdGVzdGlu
ZyB2b2NhYnVsYXJ5IGJ5IGRlZmluaW5nIFtjdXN0b20gcHJlZGljYXRlc10oVjFfN19BZHZhbmNl
ZEd1aWRlLm1kI3ByZWRpY2F0ZS1hc3NlcnRpb25zLWZvci1iZXR0ZXItZXJyb3ItbWVzc2FnZXMp
LAotICAgICogdGVhY2ggR29vZ2xlIFRlc3QgaG93IHRvIFtwcmludCB5b3VyIHR5cGVzXShWMV83
X0FkdmFuY2VkR3VpZGUubWQjdGVhY2hpbmctZ29vZ2xlLXRlc3QtaG93LXRvLXByaW50LXlvdXIt
dmFsdWVzKSwKLSAgICAqIGRlZmluZSB5b3VyIG93biB0ZXN0aW5nIG1hY3JvcyBvciB1dGlsaXRp
ZXMgYW5kIHZlcmlmeSB0aGVtIHVzaW5nIEdvb2dsZSBUZXN0J3MgW1NlcnZpY2UgUHJvdmlkZXIg
SW50ZXJmYWNlXShWMV83X0FkdmFuY2VkR3VpZGUubWQjY2F0Y2hpbmctZmFpbHVyZXMpLCBhbmQK
LSAgICAqIHJlZmxlY3Qgb24gdGhlIHRlc3QgY2FzZXMgb3IgY2hhbmdlIHRoZSB0ZXN0IG91dHB1
dCBmb3JtYXQgYnkgaW50ZXJjZXB0aW5nIHRoZSBbdGVzdCBldmVudHNdKFYxXzdfQWR2YW5jZWRH
dWlkZS5tZCNleHRlbmRpbmctZ29vZ2xlLXRlc3QtYnktaGFuZGxpbmctdGVzdC1ldmVudHMpLgot
Ci0jIyBJJ20gZ2V0dGluZyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVzdC4gIFdv
dWxkIHlvdSBmaXggdGhlbT8gIyMKLQotV2Ugc3RyaXZlIHRvIG1pbmltaXplIGNvbXBpbGVyIHdh
cm5pbmdzIEdvb2dsZSBUZXN0IGdlbmVyYXRlcy4gIEJlZm9yZSByZWxlYXNpbmcgYSBuZXcgdmVy
c2lvbiwgd2UgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBpdCBkb2Vzbid0IGdlbmVyYXRlIHdhcm5p
bmdzIHdoZW4gY29tcGlsZWQgdXNpbmcgaXRzIENNYWtlIHNjcmlwdCBvbiBXaW5kb3dzLCBMaW51
eCwgYW5kIE1hYyBPUy4KLQotVW5mb3J0dW5hdGVseSwgdGhpcyBkb2Vzbid0IG1lYW4geW91IGFy
ZSBndWFyYW50ZWVkIHRvIHNlZSBubyB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBHb29nbGUgVGVz
dCBpbiB5b3VyIGVudmlyb25tZW50OgotCi0gICogWW91IG1heSBiZSB1c2luZyBhIGRpZmZlcmVu
dCBjb21waWxlciBhcyB3ZSB1c2UsIG9yIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlIHNhbWUg
Y29tcGlsZXIuICBXZSBjYW5ub3QgcG9zc2libHkgdGVzdCBmb3IgYWxsIGNvbXBpbGVycy4KLSAg
KiBZb3UgbWF5IGJlIGNvbXBpbGluZyBvbiBhIGRpZmZlcmVudCBwbGF0Zm9ybSBhcyB3ZSBkby4K
LSAgKiBZb3VyIHByb2plY3QgbWF5IGJlIHVzaW5nIGRpZmZlcmVudCBjb21waWxlciBmbGFncyBh
cyB3ZSBkby4KLQotSXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBtYWtlIEdvb2dsZSBUZXN0
IHdhcm5pbmctZnJlZSBmb3IgZXZlcnlvbmUuICBPciwgaXQgbWF5IG5vdCBiZSBkZXNpcmFibGUg
aWYgdGhlIHdhcm5pbmcgaXMgcmFyZWx5IGVuYWJsZWQgYW5kIGZpeGluZyB0aGUgdmlvbGF0aW9u
cyBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbXBsZXguCi0KLUlmIHlvdSBzZWUgd2FybmluZ3Mgd2hl
biBjb21waWxpbmcgR29vZ2xlIFRlc3QsIHdlIHN1Z2dlc3QgdGhhdCB5b3UgdXNlIHRoZSBgLWlz
eXN0ZW1gIGZsYWcgKGFzc3VtaW5nIHlvdXIgYXJlIHVzaW5nIEdDQykgdG8gbWFyayBHb29nbGUg
VGVzdCBoZWFkZXJzIGFzIHN5c3RlbSBoZWFkZXJzLiAgVGhhdCdsbCBzdXBwcmVzcyB3YXJuaW5n
cyBmcm9tIEdvb2dsZSBUZXN0IGhlYWRlcnMuCi0KLSMjIFdoeSBzaG91bGQgbm90IHRlc3QgY2Fz
ZSBuYW1lcyBhbmQgdGVzdCBuYW1lcyBjb250YWluIHVuZGVyc2NvcmU/ICMjCi0KLVVuZGVyc2Nv
cmUgKGBfYCkgaXMgc3BlY2lhbCwgYXMgQysrIHJlc2VydmVzIHRoZSBmb2xsb3dpbmcgdG8gYmUg
dXNlZCBieQotdGhlIGNvbXBpbGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeToKLQotICAxLiBh
bnkgaWRlbnRpZmllciB0aGF0IHN0YXJ0cyB3aXRoIGFuIGBfYCBmb2xsb3dlZCBieSBhbiB1cHBl
ci1jYXNlIGxldHRlciwgYW5kCi0gIDEuIGFueSBpZGVudGlmaWVyIHRoYXQgY29udGFpbmVycyB0
d28gY29uc2VjdXRpdmUgdW5kZXJzY29yZXMgKGkuZS4gYF9fYCkgX2FueXdoZXJlXyBpbiBpdHMg
bmFtZS4KLQotVXNlciBjb2RlIGlzIF9wcm9oaWJpdGVkXyBmcm9tIHVzaW5nIHN1Y2ggaWRlbnRp
ZmllcnMuCi0KLU5vdyBsZXQncyBsb29rIGF0IHdoYXQgdGhpcyBtZWFucyBmb3IgYFRFU1RgIGFu
ZCBgVEVTVF9GYC4KLQotQ3VycmVudGx5IGBURVNUKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpYCBn
ZW5lcmF0ZXMgYSBjbGFzcyBuYW1lZAotYFRlc3RDYXNlTmFtZV9UZXN0TmFtZV9UZXN0YC4gIFdo
YXQgaGFwcGVucyBpZiBgVGVzdENhc2VOYW1lYCBvciBgVGVzdE5hbWVgCi1jb250YWlucyBgX2A/
Ci0KLSAgMS4gSWYgYFRlc3RDYXNlTmFtZWAgc3RhcnRzIHdpdGggYW4gYF9gIGZvbGxvd2VkIGJ5
IGFuIHVwcGVyLWNhc2UgbGV0dGVyIChzYXksIGBfRm9vYCksIHdlIGVuZCB1cCB3aXRoIGBfRm9v
X1Rlc3ROYW1lX1Rlc3RgLCB3aGljaCBpcyByZXNlcnZlZCBhbmQgdGh1cyBpbnZhbGlkLgotICAx
LiBJZiBgVGVzdENhc2VOYW1lYCBlbmRzIHdpdGggYW4gYF9gIChzYXksIGBGb29fYCksIHdlIGdl
dCBgRm9vX19UZXN0TmFtZV9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KLSAgMS4gSWYgYFRlc3RO
YW1lYCBzdGFydHMgd2l0aCBhbiBgX2AgKHNheSwgYF9CYXJgKSwgd2UgZ2V0IGBUZXN0Q2FzZU5h
bWVfX0Jhcl9UZXN0YCwgd2hpY2ggaXMgaW52YWxpZC4KLSAgMS4gSWYgYFRlc3ROYW1lYCBlbmRz
IHdpdGggYW4gYF9gIChzYXksIGBCYXJfYCksIHdlIGdldCBgVGVzdENhc2VOYW1lX0Jhcl9fVGVz
dGAsIHdoaWNoIGlzIGludmFsaWQuCi0KLVNvIGNsZWFybHkgYFRlc3RDYXNlTmFtZWAgYW5kIGBU
ZXN0TmFtZWAgY2Fubm90IHN0YXJ0IG9yIGVuZCB3aXRoIGBfYAotKEFjdHVhbGx5LCBgVGVzdENh
c2VOYW1lYCBjYW4gc3RhcnQgd2l0aCBgX2AgLS0gYXMgbG9uZyBhcyB0aGUgYF9gIGlzbid0Ci1m
b2xsb3dlZCBieSBhbiB1cHBlci1jYXNlIGxldHRlci4gIEJ1dCB0aGF0J3MgZ2V0dGluZyBjb21w
bGljYXRlZC4gIFNvCi1mb3Igc2ltcGxpY2l0eSB3ZSBqdXN0IHNheSB0aGF0IGl0IGNhbm5vdCBz
dGFydCB3aXRoIGBfYC4pLgotCi1JdCBtYXkgc2VlbSBmaW5lIGZvciBgVGVzdENhc2VOYW1lYCBh
bmQgYFRlc3ROYW1lYCB0byBjb250YWluIGBfYCBpbiB0aGUKLW1pZGRsZS4gIEhvd2V2ZXIsIGNv
bnNpZGVyIHRoaXM6Ci1gYGAKLVRFU1QoVGltZSwgRmxpZXNfTGlrZV9Bbl9BcnJvdykgeyAuLi4g
fQotVEVTVChUaW1lX0ZsaWVzLCBMaWtlX0FuX0Fycm93KSB7IC4uLiB9Ci1gYGAKLQotTm93LCB0
aGUgdHdvIGBURVNUYHMgd2lsbCBib3RoIGdlbmVyYXRlIHRoZSBzYW1lIGNsYXNzCi0oYFRpbWVf
RmlsZXNfTGlrZV9Bbl9BcnJvd19UZXN0YCkuICBUaGF0J3Mgbm90IGdvb2QuCi0KLVNvIGZvciBz
aW1wbGljaXR5LCB3ZSBqdXN0IGFzayB0aGUgdXNlcnMgdG8gYXZvaWQgYF9gIGluIGBUZXN0Q2Fz
ZU5hbWVgCi1hbmQgYFRlc3ROYW1lYC4gIFRoZSBydWxlIGlzIG1vcmUgY29uc3RyYWluaW5nIHRo
YW4gbmVjZXNzYXJ5LCBidXQgaXQncwotc2ltcGxlIGFuZCBlYXN5IHRvIHJlbWVtYmVyLiAgSXQg
YWxzbyBnaXZlcyBHb29nbGUgVGVzdCBzb21lIHdpZ2dsZQotcm9vbSBpbiBjYXNlIGl0cyBpbXBs
ZW1lbnRhdGlvbiBuZWVkcyB0byBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLQotSWYgeW91IHZpb2xh
dGUgdGhlIHJ1bGUsIHRoZXJlIG1heSBub3QgYmUgaW1tZWRpYXRlbHkgY29uc2VxdWVuY2VzLAot
YnV0IHlvdXIgdGVzdCBtYXkgKGp1c3QgbWF5KSBicmVhayB3aXRoIGEgbmV3IGNvbXBpbGVyIChv
ciBhIG5ldwotdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgeW91IGFyZSB1c2luZykgb3Igd2l0aCBh
IG5ldyB2ZXJzaW9uIG9mIEdvb2dsZQotVGVzdC4gIFRoZXJlZm9yZSBpdCdzIGJlc3QgdG8gZm9s
bG93IHRoZSBydWxlLgotCi0jIyBXaHkgaXMgaXQgbm90IHJlY29tbWVuZGVkIHRvIGluc3RhbGwg
YSBwcmUtY29tcGlsZWQgY29weSBvZiBHb29nbGUgVGVzdCAoZm9yIGV4YW1wbGUsIGludG8gL3Vz
ci9sb2NhbCk/ICMjCi0KLUluIHRoZSBlYXJseSBkYXlzLCB3ZSBzYWlkIHRoYXQgeW91IGNvdWxk
IGluc3RhbGwKLWNvbXBpbGVkIEdvb2dsZSBUZXN0IGxpYnJhcmllcyBvbiBgKmBuaXggc3lzdGVt
cyB1c2luZyBgbWFrZSBpbnN0YWxsYC4KLVRoZW4gZXZlcnkgdXNlciBvZiB5b3VyIG1hY2hpbmUg
Y2FuIHdyaXRlIHRlc3RzIHdpdGhvdXQKLXJlY29tcGlsaW5nIEdvb2dsZSBUZXN0LgotCi1UaGlz
IHNlZW1lZCBsaWtlIGEgZ29vZCBpZGVhLCBidXQgaXQgaGFzIGEKLWdvdC1jaGE6IGV2ZXJ5IHVz
ZXIgbmVlZHMgdG8gY29tcGlsZSBoaXMgdGVzdHMgdXNpbmcgdGhlIF9zYW1lXyBjb21waWxlcgot
ZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoZSBpbnN0YWxsZWQgR29vZ2xlIFRlc3QgbGlicmFyaWVz
OyBvdGhlcndpc2UKLWhlIG1heSBydW4gaW50byB1bmRlZmluZWQgYmVoYXZpb3JzIChpLmUuIHRo
ZSB0ZXN0cyBjYW4gYmVoYXZlCi1zdHJhbmdlbHkgYW5kIG1heSBldmVuIGNyYXNoIGZvciBubyBv
YnZpb3VzIHJlYXNvbnMpLgotCi1XaHk/ICBCZWNhdXNlIEMrKyBoYXMgdGhpcyB0aGluZyBjYWxs
ZWQgdGhlIE9uZS1EZWZpbml0aW9uIFJ1bGU6IGlmCi10d28gQysrIHNvdXJjZSBmaWxlcyBjb250
YWluIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2FtZQotY2xhc3MvZnVuY3Rpb24vdmFy
aWFibGUsIGFuZCB5b3UgbGluayB0aGVtIHRvZ2V0aGVyLCB5b3UgdmlvbGF0ZSB0aGUKLXJ1bGUu
ICBUaGUgbGlua2VyIG1heSBvciBtYXkgbm90IGNhdGNoIHRoZSBlcnJvciAoaW4gbWFueSBjYXNl
cyBpdCdzCi1ub3QgcmVxdWlyZWQgYnkgdGhlIEMrKyBzdGFuZGFyZCB0byBjYXRjaCB0aGUgdmlv
bGF0aW9uKS4gIElmIGl0Ci1kb2Vzbid0LCB5b3UgZ2V0IHN0cmFuZ2UgcnVuLXRpbWUgYmVoYXZp
b3JzIHRoYXQgYXJlIHVuZXhwZWN0ZWQgYW5kCi1oYXJkIHRvIGRlYnVnLgotCi1JZiB5b3UgY29t
cGlsZSBHb29nbGUgVGVzdCBhbmQgeW91ciB0ZXN0IGNvZGUgdXNpbmcgZGlmZmVyZW50IGNvbXBp
bGVyCi1mbGFncywgdGhleSBtYXkgc2VlIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiB0aGUgc2Ft
ZQotY2xhc3MvZnVuY3Rpb24vdmFyaWFibGUgKGUuZy4gZHVlIHRvIHRoZSB1c2Ugb2YgYCNpZmAg
aW4gR29vZ2xlIFRlc3QpLgotVGhlcmVmb3JlLCBmb3IgeW91ciBzYW5pdHksIHdlIHJlY29tbWVu
ZCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1jb21waWxlZAotR29vZ2xlIFRlc3QgbGlicmFyaWVz
LiAgSW5zdGVhZCwgZWFjaCBwcm9qZWN0IHNob3VsZCBjb21waWxlCi1Hb29nbGUgVGVzdCBpdHNl
bGYgc3VjaCB0aGF0IGl0IGNhbiBiZSBzdXJlIHRoYXQgdGhlIHNhbWUgZmxhZ3MgYXJlCi11c2Vk
IGZvciBib3RoIEdvb2dsZSBUZXN0IGFuZCB0aGUgdGVzdHMuCi0KLSMjIEhvdyBkbyBJIGdlbmVy
YXRlIDY0LWJpdCBiaW5hcmllcyBvbiBXaW5kb3dzICh1c2luZyBWaXN1YWwgU3R1ZGlvIDIwMDgp
PyAjIwotCi0oQW5zd2VyZWQgYnkgVHJldm9yIFJvYmluc29uKQotCi1Mb2FkIHRoZSBzdXBwbGll
ZCBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGZpbGUsIGVpdGhlciBgbXN2Y1xndGVzdC1tZC5zbG5g
IG9yCi1gbXN2Y1xndGVzdC5zbG5gLiBHbyB0aHJvdWdoIHRoZSBtaWdyYXRpb24gd2l6YXJkIHRv
IG1pZ3JhdGUgdGhlCi1zb2x1dGlvbiBhbmQgcHJvamVjdCBmaWxlcyB0byBWaXN1YWwgU3R1ZGlv
IDIwMDguIFNlbGVjdAotYENvbmZpZ3VyYXRpb24gTWFuYWdlci4uLmAgZnJvbSB0aGUgYEJ1aWxk
YCBtZW51LiBTZWxlY3QgYDxOZXcuLi4+YCBmcm9tCi10aGUgYEFjdGl2ZSBzb2x1dGlvbiBwbGF0
Zm9ybWAgZHJvcGRvd24uICBTZWxlY3QgYHg2NGAgZnJvbSB0aGUgbmV3Ci1wbGF0Zm9ybSBkcm9w
ZG93biwgbGVhdmUgYENvcHkgc2V0dGluZ3MgZnJvbWAgc2V0IHRvIGBXaW4zMmAgYW5kCi1gQ3Jl
YXRlIG5ldyBwcm9qZWN0IHBsYXRmb3Jtc2AgY2hlY2tlZCwgdGhlbiBjbGljayBgT0tgLiBZb3Ug
bm93IGhhdmUKLWBXaW4zMmAgYW5kIGB4NjRgIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLCBzZWxl
Y3RhYmxlIGZyb20gdGhlCi1gU3RhbmRhcmRgIHRvb2xiYXIsIHdoaWNoIGFsbG93IHlvdSB0byB0
b2dnbGUgYmV0d2VlbiBidWlsZGluZyAzMi1iaXQgb3IKLTY0LWJpdCBiaW5hcmllcyAob3IgYm90
aCBhdCBvbmNlIHVzaW5nIEJhdGNoIEJ1aWxkKS4KLQotSW4gb3JkZXIgdG8gcHJldmVudCBidWls
ZCBvdXRwdXQgZmlsZXMgZnJvbSBvdmVyd3JpdGluZyBvbmUgYW5vdGhlciwKLXlvdSdsbCBuZWVk
IHRvIGNoYW5nZSB0aGUgYEludGVybWVkaWF0ZSBEaXJlY3RvcnlgIHNldHRpbmdzIGZvciB0aGUK
LW5ld2x5IGNyZWF0ZWQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBhY3Jvc3MgYWxsIHRoZSBwcm9q
ZWN0cy4gVG8gZG8KLXRoaXMsIG11bHRpLXNlbGVjdCAoZS5nLiB1c2luZyBzaGlmdC1jbGljaykg
YWxsIHByb2plY3RzIChidXQgbm90IHRoZQotc29sdXRpb24pIGluIHRoZSBgU29sdXRpb24gRXhw
bG9yZXJgLiBSaWdodC1jbGljayBvbmUgb2YgdGhlbSBhbmQKLXNlbGVjdCBgUHJvcGVydGllc2Au
IEluIHRoZSBsZWZ0IHBhbmUsIHNlbGVjdCBgQ29uZmlndXJhdGlvbiBQcm9wZXJ0aWVzYCwKLWFu
ZCBmcm9tIHRoZSBgQ29uZmlndXJhdGlvbmAgZHJvcGRvd24sIHNlbGVjdCBgQWxsIENvbmZpZ3Vy
YXRpb25zYC4KLU1ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgcGxhdGZvcm0gaXMgYHg2NGAuIEZvciB0
aGUKLWBJbnRlcm1lZGlhdGUgRGlyZWN0b3J5YCBzZXR0aW5nLCBjaGFuZ2UgdGhlIHZhbHVlIGZy
b20KLWAkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSlgIHRvCi1gJChPdXREaXIp
XCQoUHJvamVjdE5hbWUpYC4gQ2xpY2sgYE9LYCBhbmQgdGhlbiBidWlsZCB0aGUKLXNvbHV0aW9u
LiBXaGVuIHRoZSBidWlsZCBpcyBjb21wbGV0ZSwgdGhlIDY0LWJpdCBiaW5hcmllcyB3aWxsIGJl
IGluCi10aGUgYG1zdmNceDY0XERlYnVnYCBkaXJlY3RvcnkuCi0KLSMjIENhbiBJIHVzZSBHb29n
bGUgVGVzdCBvbiBNaW5HVz8gIyMKLQotV2UgaGF2ZW4ndCB0ZXN0ZWQgdGhpcyBvdXJzZWx2ZXMs
IGJ1dCBQZXIgQWJyYWhhbXNlbiByZXBvcnRlZCB0aGF0IGhlCi13YXMgYWJsZSB0byBjb21waWxl
IGFuZCBpbnN0YWxsIEdvb2dsZSBUZXN0IHN1Y2Nlc3NmdWxseSB3aGVuIHVzaW5nCi1NaW5HVyBm
cm9tIEN5Z3dpbi4gIFlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBpdCB3aXRoOgotCi1gUEFUSC9U
Ty9jb25maWd1cmUgQ0M9ImdjYyAtbW5vLWN5Z3dpbiIgQ1hYPSJnKysgLW1uby1jeWd3aW4iYAot
Ci1Zb3Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGUgYC1tbm8tY3lnd2luYCBvcHRpb24g
d2l0aCBkaXJlY3QgbGlua3MKLXRvIHRoZSByZWFsIE1pbkdXIGJpbmFyaWVzLCBidXQgd2UgaGF2
ZW4ndCB0cmllZCB0aGF0LgotCi1DYXZlYXRzOgotCi0gICogVGhlcmUgYXJlIG1hbnkgd2Fybmlu
Z3Mgd2hlbiBjb21waWxpbmcuCi0gICogYG1ha2UgY2hlY2tgIHdpbGwgcHJvZHVjZSBzb21lIGVy
cm9ycyBhcyBub3QgYWxsIHRlc3RzIGZvciBHb29nbGUgVGVzdCBpdHNlbGYgYXJlIGNvbXBhdGli
bGUgd2l0aCBNaW5HVy4KLQotV2UgYWxzbyBoYXZlIHJlcG9ydHMgb24gc3VjY2Vzc2Z1bCBjcm9z
cyBjb21waWxhdGlvbiBvZiBHb29nbGUgVGVzdAotTWluR1cgYmluYXJpZXMgb24gTGludXggdXNp
bmcKLVt0aGVzZSBpbnN0cnVjdGlvbnNdKGh0dHA6Ly93aWtpLnd4d2lkZ2V0cy5vcmcvQ3Jvc3Mt
Q29tcGlsaW5nX1VuZGVyX0xpbnV4I0Nyb3NzLWNvbXBpbGluZ191bmRlcl9MaW51eF9mb3JfTVNf
V2luZG93cykKLW9uIHRoZSBXeFdpZGdldHMgc2l0ZS4KLQotUGxlYXNlIGNvbnRhY3QgYGdvb2ds
ZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNvbWAgaWYgeW91IGFyZQotaW50ZXJlc3RlZCBp
biBpbXByb3ZpbmcgdGhlIHN1cHBvcnQgZm9yIE1pbkdXLgotCi0jIyBXaHkgZG9lcyBHb29nbGUg
VGVzdCBzdXBwb3J0IEVYUEVDVFxfRVEoTlVMTCwgcHRyKSBhbmQgQVNTRVJUXF9FUShOVUxMLCBw
dHIpIGJ1dCBub3QgRVhQRUNUXF9ORShOVUxMLCBwdHIpIGFuZCBBU1NFUlRcX05FKE5VTEwsIHB0
cik/ICMjCi0KLUR1ZSB0byBzb21lIHBlY3VsaWFyaXR5IG9mIEMrKywgaXQgcmVxdWlyZXMgc29t
ZSBub24tdHJpdmlhbCB0ZW1wbGF0ZQotbWV0YSBwcm9ncmFtbWluZyB0cmlja3MgdG8gc3VwcG9y
dCB1c2luZyBgTlVMTGAgYXMgYW4gYXJndW1lbnQgb2YgdGhlCi1gRVhQRUNUX1hYKClgIGFuZCBg
QVNTRVJUX1hYKClgIG1hY3Jvcy4gVGhlcmVmb3JlIHdlIG9ubHkgZG8gaXQgd2hlcmUKLWl0J3Mg
bW9zdCBuZWVkZWQgKG90aGVyd2lzZSB3ZSBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHb29n
bGUgVGVzdAotaGFyZGVyIHRvIG1haW50YWluIGFuZCBtb3JlIGVycm9yLXByb25lIHRoYW4gbmVj
ZXNzYXJ5KS4KLQotVGhlIGBFWFBFQ1RfRVEoKWAgbWFjcm8gdGFrZXMgdGhlIF9leHBlY3RlZF8g
dmFsdWUgYXMgaXRzIGZpcnN0Ci1hcmd1bWVudCBhbmQgdGhlIF9hY3R1YWxfIHZhbHVlIGFzIHRo
ZSBzZWNvbmQuIEl0J3MgcmVhc29uYWJsZSB0aGF0Ci1zb21lb25lIHdhbnRzIHRvIHdyaXRlIGBF
WFBFQ1RfRVEoTlVMTCwgc29tZV9leHByZXNzaW9uKWAsIGFuZCB0aGlzCi1pbmRlZWQgd2FzIHJl
cXVlc3RlZCBzZXZlcmFsIHRpbWVzLiBUaGVyZWZvcmUgd2UgaW1wbGVtZW50ZWQgaXQuCi0KLVRo
ZSBuZWVkIGZvciBgRVhQRUNUX05FKE5VTEwsIHB0cilgIGlzbid0IG5lYXJseSBhcyBzdHJvbmcu
IFdoZW4gdGhlCi1hc3NlcnRpb24gZmFpbHMsIHlvdSBhbHJlYWR5IGtub3cgdGhhdCBgcHRyYCBt
dXN0IGJlIGBOVUxMYCwgc28gaXQKLWRvZXNuJ3QgYWRkIGFueSBpbmZvcm1hdGlvbiB0byBwcmlu
dCBwdHIgaW4gdGhpcyBjYXNlLiBUaGF0IG1lYW5zCi1gRVhQRUNUX1RSVUUocHRyICE9IE5VTEwp
YCB3b3JrcyBqdXN0IGFzIHdlbGwuCi0KLUlmIHdlIHdlcmUgdG8gc3VwcG9ydCBgRVhQRUNUX05F
KE5VTEwsIHB0cilgLCBmb3IgY29uc2lzdGVuY3kgd2UnbGwKLWhhdmUgdG8gc3VwcG9ydCBgRVhQ
RUNUX05FKHB0ciwgTlVMTClgIGFzIHdlbGwsIGFzIHVubGlrZSBgRVhQRUNUX0VRYCwKLXdlIGRv
bid0IGhhdmUgYSBjb252ZW50aW9uIG9uIHRoZSBvcmRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cyBm
b3IKLWBFWFBFQ1RfTkVgLiBUaGlzIG1lYW5zIHVzaW5nIHRoZSB0ZW1wbGF0ZSBtZXRhIHByb2dy
YW1taW5nIHRyaWNrcwotdHdpY2UgaW4gdGhlIGltcGxlbWVudGF0aW9uLCBtYWtpbmcgaXQgZXZl
biBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQKLW1haW50YWluLiBXZSBiZWxpZXZlIHRoZSBiZW5l
Zml0IGRvZXNuJ3QganVzdGlmeSB0aGUgY29zdC4KLQotRmluYWxseSwgd2l0aCB0aGUgZ3Jvd3Ro
IG9mIEdvb2dsZSBNb2NrJ3MgW21hdGNoZXJdKC4uLy4uL0Nvb2tCb29rLm1kI3VzaW5nLW1hdGNo
ZXJzLWluLWdvb2dsZS10ZXN0LWFzc2VydGlvbnMpIGxpYnJhcnksIHdlIGFyZQotZW5jb3VyYWdp
bmcgcGVvcGxlIHRvIHVzZSB0aGUgdW5pZmllZCBgRVhQRUNUX1RIQVQodmFsdWUsIG1hdGNoZXIp
YAotc3ludGF4IG1vcmUgb2Z0ZW4gaW4gdGVzdHMuIE9uZSBzaWduaWZpY2FudCBhZHZhbnRhZ2Ug
b2YgdGhlIG1hdGNoZXIKLWFwcHJvYWNoIGlzIHRoYXQgbWF0Y2hlcnMgY2FuIGJlIGVhc2lseSBj
b21iaW5lZCB0byBmb3JtIG5ldyBtYXRjaGVycywKLXdoaWxlIHRoZSBgRVhQRUNUX05FYCwgZXRj
LCBtYWNyb3MgY2Fubm90IGJlIGVhc2lseQotY29tYmluZWQuIFRoZXJlZm9yZSB3ZSB3YW50IHRv
IGludmVzdCBtb3JlIGluIHRoZSBtYXRjaGVycyB0aGFuIGluIHRoZQotYEVYUEVDVF9YWCgpYCBt
YWNyb3MuCi0KLSMjIERvZXMgR29vZ2xlIFRlc3Qgc3VwcG9ydCBydW5uaW5nIHRlc3RzIGluIHBh
cmFsbGVsPyAjIwotCi1UZXN0IHJ1bm5lcnMgdGVuZCB0byBiZSB0aWdodGx5IGNvdXBsZWQgd2l0
aCB0aGUgYnVpbGQvdGVzdAotZW52aXJvbm1lbnQsIGFuZCBHb29nbGUgVGVzdCBkb2Vzbid0IHRy
eSB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZgotcnVubmluZyB0ZXN0cyBpbiBwYXJhbGxlbC4gIElu
c3RlYWQsIHdlIHRyaWVkIHRvIG1ha2UgR29vZ2xlIFRlc3Qgd29yawotbmljZWx5IHdpdGggdGVz
dCBydW5uZXJzLiAgRm9yIGV4YW1wbGUsIEdvb2dsZSBUZXN0J3MgWE1MIHJlcG9ydAotY29udGFp
bnMgdGhlIHRpbWUgc3BlbnQgb24gZWFjaCB0ZXN0LCBhbmQgaXRzIGBndGVzdF9saXN0X3Rlc3Rz
YCBhbmQKLWBndGVzdF9maWx0ZXJgIGZsYWdzIGNhbiBiZSB1c2VkIGZvciBzcGxpdHRpbmcgdGhl
IGV4ZWN1dGlvbiBvZiB0ZXN0Ci1tZXRob2RzIGludG8gbXVsdGlwbGUgcHJvY2Vzc2VzLiAgVGhl
c2UgZnVuY3Rpb25hbGl0aWVzIGNhbiBoZWxwIHRoZQotdGVzdCBydW5uZXIgcnVuIHRoZSB0ZXN0
cyBpbiBwYXJhbGxlbC4KLQotIyMgV2h5IGRvbid0IEdvb2dsZSBUZXN0IHJ1biB0aGUgdGVzdHMg
aW4gZGlmZmVyZW50IHRocmVhZHMgdG8gc3BlZWQgdGhpbmdzIHVwPyAjIwotCi1JdCdzIGRpZmZp
Y3VsdCB0byB3cml0ZSB0aHJlYWQtc2FmZSBjb2RlLiAgTW9zdCB0ZXN0cyBhcmUgbm90IHdyaXR0
ZW4KLXdpdGggdGhyZWFkLXNhZmV0eSBpbiBtaW5kLCBhbmQgdGh1cyBtYXkgbm90IHdvcmsgY29y
cmVjdGx5IGluIGEKLW11bHRpLXRocmVhZGVkIHNldHRpbmcuCi0KLUlmIHlvdSB0aGluayBhYm91
dCBpdCwgaXQncyBhbHJlYWR5IGhhcmQgdG8gbWFrZSB5b3VyIGNvZGUgd29yayB3aGVuCi15b3Ug
a25vdyB3aGF0IG90aGVyIHRocmVhZHMgYXJlIGRvaW5nLiAgSXQncyBtdWNoIGhhcmRlciwgYW5k
Ci1zb21ldGltZXMgZXZlbiBpbXBvc3NpYmxlLCB0byBtYWtlIHlvdXIgY29kZSB3b3JrIHdoZW4g
eW91IGRvbid0IGtub3cKLXdoYXQgb3RoZXIgdGhyZWFkcyBhcmUgZG9pbmcgKHJlbWVtYmVyIHRo
YXQgdGVzdCBtZXRob2RzIGNhbiBiZSBhZGRlZCwKLWRlbGV0ZWQsIG9yIG1vZGlmaWVkIGFmdGVy
IHlvdXIgdGVzdCB3YXMgd3JpdHRlbikuICBJZiB5b3Ugd2FudCB0byBydW4KLXRoZSB0ZXN0cyBp
biBwYXJhbGxlbCwgeW91J2QgYmV0dGVyIHJ1biB0aGVtIGluIGRpZmZlcmVudCBwcm9jZXNzZXMu
Ci0KLSMjIFdoeSBhcmVuJ3QgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbXBsZW1lbnRlZCB1c2lu
ZyBleGNlcHRpb25zPyAjIwotCi1PdXIgb3JpZ2luYWwgbW90aXZhdGlvbiB3YXMgdG8gYmUgYWJs
ZSB0byB1c2UgR29vZ2xlIFRlc3QgaW4gcHJvamVjdHMKLXRoYXQgZGlzYWJsZSBleGNlcHRpb25z
LiAgTGF0ZXIgd2UgcmVhbGl6ZWQgc29tZSBhZGRpdGlvbmFsIGJlbmVmaXRzCi1vZiB0aGlzIGFw
cHJvYWNoOgotCi0gIDEuIFRocm93aW5nIGluIGEgZGVzdHJ1Y3RvciBpcyB1bmRlZmluZWQgYmVo
YXZpb3IgaW4gQysrLiAgTm90IHVzaW5nIGV4Y2VwdGlvbnMgbWVhbnMgR29vZ2xlIFRlc3QncyBh
c3NlcnRpb25zIGFyZSBzYWZlIHRvIHVzZSBpbiBkZXN0cnVjdG9ycy4KLSAgMS4gVGhlIGBFWFBF
Q1RfKmAgZmFtaWx5IG9mIG1hY3JvcyB3aWxsIGNvbnRpbnVlIGV2ZW4gYWZ0ZXIgYSBmYWlsdXJl
LCBhbGxvd2luZyBtdWx0aXBsZSBmYWlsdXJlcyBpbiBhIGBURVNUYCB0byBiZSByZXBvcnRlZCBp
biBhIHNpbmdsZSBydW4uIFRoaXMgaXMgYSBwb3B1bGFyIGZlYXR1cmUsIGFzIGluIEMrKyB0aGUg
ZWRpdC1jb21waWxlLXRlc3QgY3ljbGUgaXMgdXN1YWxseSBxdWl0ZSBsb25nIGFuZCBiZWluZyBh
YmxlIHRvIGZpeGluZyBtb3JlIHRoYW4gb25lIHRoaW5nIGF0IGEgdGltZSBpcyBhIGJsZXNzaW5n
LgotICAxLiBJZiBhc3NlcnRpb25zIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBleGNlcHRpb25zLCBh
IHRlc3QgbWF5IGZhbHNlbHkgaWdub3JlIGEgZmFpbHVyZSBpZiBpdCdzIGNhdWdodCBieSB1c2Vy
IGNvZGU6Ci1gYGAKLXRyeSB7IC4uLiBBU1NFUlRfVFJVRSguLi4pIC4uLiB9Ci1jYXRjaCAoLi4u
KSB7IC4uLiB9Ci1gYGAKLVRoZSBhYm92ZSBjb2RlIHdpbGwgcGFzcyBldmVuIGlmIHRoZSBgQVNT
RVJUX1RSVUVgIHRocm93cy4gIFdoaWxlIGl0J3MgdW5saWtlbHkgZm9yIHNvbWVvbmUgdG8gd3Jp
dGUgdGhpcyBpbiBhIHRlc3QsIGl0J3MgcG9zc2libGUgdG8gcnVuIGludG8gdGhpcyBwYXR0ZXJu
IHdoZW4geW91IHdyaXRlIGFzc2VydGlvbnMgaW4gY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBi
eSB0aGUgY29kZSB1bmRlciB0ZXN0LgotCi1UaGUgZG93bnNpZGUgb2Ygbm90IHVzaW5nIGV4Y2Vw
dGlvbnMgaXMgdGhhdCBgQVNTRVJUXypgIChpbXBsZW1lbnRlZAotdXNpbmcgYHJldHVybmApIHdp
bGwgb25seSBhYm9ydCB0aGUgY3VycmVudCBmdW5jdGlvbiwgbm90IHRoZSBjdXJyZW50Ci1gVEVT
VGAuCi0KLSMjIFdoeSBkbyB3ZSB1c2UgdHdvIGRpZmZlcmVudCBtYWNyb3MgZm9yIHRlc3RzIHdp
dGggYW5kIHdpdGhvdXQgZml4dHVyZXM/ICMjCi0KLVVuZm9ydHVuYXRlbHksIEMrKydzIG1hY3Jv
IHN5c3RlbSBkb2Vzbid0IGFsbG93IHVzIHRvIHVzZSB0aGUgc2FtZQotbWFjcm8gZm9yIGJvdGgg
Y2FzZXMuICBPbmUgcG9zc2liaWxpdHkgaXMgdG8gcHJvdmlkZSBvbmx5IG9uZSBtYWNybwotZm9y
IHRlc3RzIHdpdGggZml4dHVyZXMsIGFuZCByZXF1aXJlIHRoZSB1c2VyIHRvIGRlZmluZSBhbiBl
bXB0eQotZml4dHVyZSBzb21ldGltZXM6Ci0KLWBgYAotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3Qge307Ci0KLVRFU1RfRihGb29UZXN0LCBEb2VzVGhpcykgeyAuLi4gfQot
YGBgCi1vcgotYGBgCi10eXBlZGVmIDo6dGVzdGluZzo6VGVzdCBGb29UZXN0OwotCi1URVNUX0Yo
Rm9vVGVzdCwgRG9lc1RoYXQpIHsgLi4uIH0KLWBgYAotCi1ZZXQsIG1hbnkgcGVvcGxlIHRoaW5r
IHRoaXMgaXMgb25lIGxpbmUgdG9vIG1hbnkuIDotKSBPdXIgZ29hbCB3YXMgdG8KLW1ha2UgaXQg
cmVhbGx5IGVhc3kgdG8gd3JpdGUgdGVzdHMsIHNvIHdlIHRyaWVkIHRvIG1ha2Ugc2ltcGxlIHRl
c3RzCi10cml2aWFsIHRvIGNyZWF0ZS4gIFRoYXQgbWVhbnMgdXNpbmcgYSBzZXBhcmF0ZSBtYWNy
byBmb3Igc3VjaCB0ZXN0cy4KLQotV2UgdGhpbmsgbmVpdGhlciBhcHByb2FjaCBpcyBpZGVhbCwg
eWV0IGVpdGhlciBvZiB0aGVtIGlzIHJlYXNvbmFibGUuCi1JbiB0aGUgZW5kLCBpdCBwcm9iYWJs
eSBkb2Vzbid0IG1hdHRlciBtdWNoIGVpdGhlciB3YXkuCi0KLSMjIFdoeSBkb24ndCB3ZSB1c2Ug
c3RydWN0cyBhcyB0ZXN0IGZpeHR1cmVzPyAjIwotCi1XZSBsaWtlIHRvIHVzZSBzdHJ1Y3RzIG9u
bHkgd2hlbiByZXByZXNlbnRpbmcgcGFzc2l2ZSBkYXRhLiAgVGhpcwotZGlzdGluY3Rpb24gYmV0
d2VlbiBzdHJ1Y3RzIGFuZCBjbGFzc2VzIGlzIGdvb2QgZm9yIGRvY3VtZW50aW5nIHRoZQotaW50
ZW50IG9mIHRoZSBjb2RlJ3MgYXV0aG9yLiAgU2luY2UgdGVzdCBmaXh0dXJlcyBoYXZlIGxvZ2lj
IGxpa2UKLWBTZXRVcCgpYCBhbmQgYFRlYXJEb3duKClgLCB0aGV5IGFyZSBiZXR0ZXIgZGVmaW5l
ZCBhcyBjbGFzc2VzLgotCi0jIyBXaHkgYXJlIGRlYXRoIHRlc3RzIGltcGxlbWVudGVkIGFzIGFz
c2VydGlvbnMgaW5zdGVhZCBvZiB1c2luZyBhIHRlc3QgcnVubmVyPyAjIwotCi1PdXIgZ29hbCB3
YXMgdG8gbWFrZSBkZWF0aCB0ZXN0cyBhcyBjb252ZW5pZW50IGZvciBhIHVzZXIgYXMgQysrCi1w
b3NzaWJseSBhbGxvd3MuICBJbiBwYXJ0aWN1bGFyOgotCi0gICogVGhlIHJ1bm5lci1zdHlsZSBy
ZXF1aXJlcyB0byBzcGxpdCB0aGUgaW5mb3JtYXRpb24gaW50byB0d28gcGllY2VzOiB0aGUgZGVm
aW5pdGlvbiBvZiB0aGUgZGVhdGggdGVzdCBpdHNlbGYsIGFuZCB0aGUgc3BlY2lmaWNhdGlvbiBm
b3IgdGhlIHJ1bm5lciBvbiBob3cgdG8gcnVuIHRoZSBkZWF0aCB0ZXN0IGFuZCB3aGF0IHRvIGV4
cGVjdC4gIFRoZSBkZWF0aCB0ZXN0IHdvdWxkIGJlIHdyaXR0ZW4gaW4gQysrLCB3aGlsZSB0aGUg
cnVubmVyIHNwZWMgbWF5IG9yIG1heSBub3QgYmUuICBBIHVzZXIgbmVlZHMgdG8gY2FyZWZ1bGx5
IGtlZXAgdGhlIHR3byBpbiBzeW5jLiBgQVNTRVJUX0RFQVRIKHN0YXRlbWVudCwgZXhwZWN0ZWRf
bWVzc2FnZSlgIHNwZWNpZmllcyBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGluIG9uZSBwbGFj
ZSwgaW4gb25lIGxhbmd1YWdlLCB3aXRob3V0IGJvaWxlcnBsYXRlIGNvZGUuIEl0IGlzIHZlcnkg
ZGVjbGFyYXRpdmUuCi0gICogYEFTU0VSVF9ERUFUSGAgaGFzIGEgc2ltaWxhciBzeW50YXggYW5k
IGVycm9yLXJlcG9ydGluZyBzZW1hbnRpY3MgYXMgb3RoZXIgR29vZ2xlIFRlc3QgYXNzZXJ0aW9u
cywgYW5kIHRodXMgaXMgZWFzeSB0byBsZWFybi4KLSAgKiBgQVNTRVJUX0RFQVRIYCBjYW4gYmUg
bWl4ZWQgd2l0aCBvdGhlciBhc3NlcnRpb25zIGFuZCBvdGhlciBsb2dpYyBhdCB5b3VyIHdpbGwu
ICBZb3UgYXJlIG5vdCBsaW1pdGVkIHRvIG9uZSBkZWF0aCB0ZXN0IHBlciB0ZXN0IG1ldGhvZC4g
Rm9yIGV4YW1wbGUsIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGxpa2U6Ci1gYGAKLSAgICBpZiAo
Rm9vQ29uZGl0aW9uKCkpIHsKLSAgICAgIEFTU0VSVF9ERUFUSChCYXIoKSwgImJsYWgiKTsKLSAg
ICB9IGVsc2UgewotICAgICAgQVNTRVJUX0VRKDUsIEJhcigpKTsKLSAgICB9Ci1gYGAKLUlmIHlv
dSBwcmVmZXIgb25lIGRlYXRoIHRlc3QgcGVyIHRlc3QgbWV0aG9kLCB5b3UgY2FuIHdyaXRlIHlv
dXIgdGVzdHMgaW4gdGhhdCBzdHlsZSB0b28sIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGltcG9zZSB0
aGF0IG9uIHRoZSB1c2Vycy4gIFRoZSBmZXdlciBhcnRpZmljaWFsIGxpbWl0YXRpb25zIHRoZSBi
ZXR0ZXIuCi0gICogYEFTU0VSVF9ERUFUSGAgY2FuIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMg
aW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIGFuZCB5b3UgY2FuIGRlY2lkZSBob3cgbWFueSBkZWF0
aCB0ZXN0cyB5b3Ugd2FudCBiYXNlZCBvbiBydW4tdGltZSBpbmZvcm1hdGlvbi4gIEZvciBleGFt
cGxlLAotYGBgCi0gICAgY29uc3QgaW50IGNvdW50ID0gR2V0Q291bnQoKTsgIC8vIE9ubHkga25v
d24gYXQgcnVuIHRpbWUuCi0gICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gY291bnQ7IGkrKykgewot
ICAgICAgQVNTRVJUX0RFQVRIKHsKLSAgICAgICAgZG91YmxlKiBidWZmZXIgPSBuZXcgZG91Ymxl
W2ldOwotICAgICAgICAuLi4gaW5pdGlhbGl6ZXMgYnVmZmVyIC4uLgotICAgICAgICBGb28oYnVm
ZmVyLCBpKQotICAgICAgfSwgImJsYWggYmxhaCIpOwotICAgIH0KLWBgYAotVGhlIHJ1bm5lci1i
YXNlZCBhcHByb2FjaCB0ZW5kcyB0byBiZSBtb3JlIHN0YXRpYyBhbmQgbGVzcyBmbGV4aWJsZSwg
b3IgcmVxdWlyZXMgbW9yZSB1c2VyIGVmZm9ydCB0byBnZXQgdGhpcyBraW5kIG9mIGZsZXhpYmls
aXR5LgotCi1Bbm90aGVyIGludGVyZXN0aW5nIHRoaW5nIGFib3V0IGBBU1NFUlRfREVBVEhgIGlz
IHRoYXQgaXQgY2FsbHMgYGZvcmsoKWAKLXRvIGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MgdG8gcnVu
IHRoZSBkZWF0aCB0ZXN0LiAgVGhpcyBpcyBsaWdodGVuaW5nCi1mYXN0LCBhcyBgZm9yaygpYCB1
c2VzIGNvcHktb24td3JpdGUgcGFnZXMgYW5kIGluY3VycyBhbG1vc3QgemVybwotb3ZlcmhlYWQs
IGFuZCB0aGUgY2hpbGQgcHJvY2VzcyBzdGFydHMgZnJvbSB0aGUgdXNlci1zdXBwbGllZAotc3Rh
dGVtZW50IGRpcmVjdGx5LCBza2lwcGluZyBhbGwgZ2xvYmFsIGFuZCBsb2NhbCBpbml0aWFsaXph
dGlvbiBhbmQKLWFueSBjb2RlIGxlYWRpbmcgdG8gdGhlIGdpdmVuIHN0YXRlbWVudC4gIElmIHlv
dSBsYXVuY2ggdGhlIGNoaWxkCi1wcm9jZXNzIGZyb20gc2NyYXRjaCwgaXQgY2FuIHRha2Ugc2Vj
b25kcyBqdXN0IHRvIGxvYWQgZXZlcnl0aGluZyBhbmQKLXN0YXJ0IHJ1bm5pbmcgaWYgdGhlIHRl
c3QgbGlua3MgdG8gbWFueSBsaWJyYXJpZXMgZHluYW1pY2FsbHkuCi0KLSMjIE15IGRlYXRoIHRl
c3QgbW9kaWZpZXMgc29tZSBzdGF0ZSwgYnV0IHRoZSBjaGFuZ2Ugc2VlbXMgbG9zdCBhZnRlciB0
aGUgZGVhdGggdGVzdCBmaW5pc2hlcy4gV2h5PyAjIwotCi1EZWF0aCB0ZXN0cyAoYEVYUEVDVF9E
RUFUSGAsIGV0YykgYXJlIGV4ZWN1dGVkIGluIGEgc3ViLXByb2Nlc3Mgcy50LiB0aGUKLWV4cGVj
dGVkIGNyYXNoIHdvbid0IGtpbGwgdGhlIHRlc3QgcHJvZ3JhbSAoaS5lLiB0aGUgcGFyZW50IHBy
b2Nlc3MpLiBBcyBhCi1yZXN1bHQsIGFueSBpbi1tZW1vcnkgc2lkZSBlZmZlY3RzIHRoZXkgaW5j
dXIgYXJlIG9ic2VydmFibGUgaW4gdGhlaXIKLXJlc3BlY3RpdmUgc3ViLXByb2Nlc3NlcywgYnV0
IG5vdCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuIFlvdSBjYW4gdGhpbmsgb2YgdGhlbQotYXMgcnVu
bmluZyBpbiBhIHBhcmFsbGVsIHVuaXZlcnNlLCBtb3JlIG9yIGxlc3MuCi0KLSMjIFRoZSBjb21w
aWxlciBjb21wbGFpbnMgYWJvdXQgInVuZGVmaW5lZCByZWZlcmVuY2VzIiB0byBzb21lIHN0YXRp
YyBjb25zdCBtZW1iZXIgdmFyaWFibGVzLCBidXQgSSBkaWQgZGVmaW5lIHRoZW0gaW4gdGhlIGNs
YXNzIGJvZHkuIFdoYXQncyB3cm9uZz8gIyMKLQotSWYgeW91ciBjbGFzcyBoYXMgYSBzdGF0aWMg
ZGF0YSBtZW1iZXI6Ci0KLWBgYAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotICBzdGF0
aWMgY29uc3QgaW50IGtCYXIgPSAxMDA7Ci19OwotYGBgCi0KLVlvdSBhbHNvIG5lZWQgdG8gZGVm
aW5lIGl0IF9vdXRzaWRlXyBvZiB0aGUgY2xhc3MgYm9keSBpbiBgZm9vLmNjYDoKLQotYGBgCi1j
b25zdCBpbnQgRm9vOjprQmFyOyAgLy8gTm8gaW5pdGlhbGl6ZXIgaGVyZS4KLWBgYAotCi1PdGhl
cndpc2UgeW91ciBjb2RlIGlzICoqaW52YWxpZCBDKysqKiwgYW5kIG1heSBicmVhayBpbiB1bmV4
cGVjdGVkIHdheXMuIEluCi1wYXJ0aWN1bGFyLCB1c2luZyBpdCBpbiBHb29nbGUgVGVzdCBjb21w
YXJpc29uIGFzc2VydGlvbnMgKGBFWFBFQ1RfRVFgLCBldGMpCi13aWxsIGdlbmVyYXRlIGFuICJ1
bmRlZmluZWQgcmVmZXJlbmNlIiBsaW5rZXIgZXJyb3IuCi0KLSMjIEkgaGF2ZSBhbiBpbnRlcmZh
Y2UgdGhhdCBoYXMgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMuIENhbiBJIHdyaXRlIGEgc2V0IG9m
IHRlc3RzIG9uY2UgYW5kIHJlcGVhdCB0aGVtIG92ZXIgYWxsIHRoZSBpbXBsZW1lbnRhdGlvbnM/
ICMjCi0KLUdvb2dsZSBUZXN0IGRvZXNuJ3QgeWV0IGhhdmUgZ29vZCBzdXBwb3J0IGZvciB0aGlz
IGtpbmQgb2YgdGVzdHMsIG9yCi1kYXRhLWRyaXZlbiB0ZXN0cyBpbiBnZW5lcmFsLiBXZSBob3Bl
IHRvIGJlIGFibGUgdG8gbWFrZSBpbXByb3ZlbWVudHMgaW4gdGhpcwotYXJlYSBzb29uLgotCi0j
IyBDYW4gSSBkZXJpdmUgYSB0ZXN0IGZpeHR1cmUgZnJvbSBhbm90aGVyPyAjIwotCi1ZZXMuCi0K
LUVhY2ggdGVzdCBmaXh0dXJlIGhhcyBhIGNvcnJlc3BvbmRpbmcgYW5kIHNhbWUgbmFtZWQgdGVz
dCBjYXNlLiBUaGlzIG1lYW5zIG9ubHkKLW9uZSB0ZXN0IGNhc2UgY2FuIHVzZSBhIHBhcnRpY3Vs
YXIgZml4dHVyZS4gU29tZXRpbWVzLCBob3dldmVyLCBtdWx0aXBsZSB0ZXN0Ci1jYXNlcyBtYXkg
d2FudCB0byB1c2UgdGhlIHNhbWUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZpeHR1cmVzLiBGb3Ig
ZXhhbXBsZSwgeW91Ci1tYXkgd2FudCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb2YgYSBHVUkgbGli
cmFyeSdzIHRlc3QgY2FzZXMgZG9uJ3QgbGVhawotaW1wb3J0YW50IHN5c3RlbSByZXNvdXJjZXMg
bGlrZSBmb250cyBhbmQgYnJ1c2hlcy4KLQotSW4gR29vZ2xlIFRlc3QsIHlvdSBzaGFyZSBhIGZp
eHR1cmUgYW1vbmcgdGVzdCBjYXNlcyBieSBwdXR0aW5nIHRoZSBzaGFyZWQKLWxvZ2ljIGluIGEg
YmFzZSB0ZXN0IGZpeHR1cmUsIHRoZW4gZGVyaXZpbmcgZnJvbSB0aGF0IGJhc2UgYSBzZXBhcmF0
ZSBmaXh0dXJlCi1mb3IgZWFjaCB0ZXN0IGNhc2UgdGhhdCB3YW50cyB0byB1c2UgdGhpcyBjb21t
b24gbG9naWMuIFlvdSB0aGVuIHVzZSBgVEVTVF9GKClgCi10byB3cml0ZSB0ZXN0cyB1c2luZyBl
YWNoIGRlcml2ZWQgZml4dHVyZS4KLQotVHlwaWNhbGx5LCB5b3VyIGNvZGUgbG9va3MgbGlrZSB0
aGlzOgotCi1gYGAKLS8vIERlZmluZXMgYSBiYXNlIHRlc3QgZml4dHVyZS4KLWNsYXNzIEJhc2VU
ZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAgIC4uLgotfTsK
LQotLy8gRGVyaXZlcyBhIGZpeHR1cmUgRm9vVGVzdCBmcm9tIEJhc2VUZXN0LgotY2xhc3MgRm9v
VGVzdCA6IHB1YmxpYyBCYXNlVGVzdCB7Ci0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKSB7Ci0gICAgICBCYXNlVGVzdDo6U2V0VXAoKTsgIC8vIFNldHMgdXAgdGhlIGJhc2Ug
Zml4dHVyZSBmaXJzdC4KLSAgICAgIC4uLiBhZGRpdGlvbmFsIHNldC11cCB3b3JrIC4uLgotICAg
IH0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgICAuLi4gY2xlYW4tdXAgd29y
ayBmb3IgRm9vVGVzdCAuLi4KLSAgICAgIEJhc2VUZXN0OjpUZWFyRG93bigpOyAgLy8gUmVtZW1i
ZXIgdG8gdGVhciBkb3duIHRoZSBiYXNlIGZpeHR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWZ0ZXIgY2xlYW5pbmcgdXAgRm9vVGVzdCEKLSAgICB9Ci0gICAgLi4uIGZ1bmN0
aW9ucyBhbmQgdmFyaWFibGVzIGZvciBGb29UZXN0IC4uLgotfTsKLQotLy8gVGVzdHMgdGhhdCB1
c2UgdGhlIGZpeHR1cmUgRm9vVGVzdC4KLVRFU1RfRihGb29UZXN0LCBCYXIpIHsgLi4uIH0KLVRF
U1RfRihGb29UZXN0LCBCYXopIHsgLi4uIH0KLQotLi4uIGFkZGl0aW9uYWwgZml4dHVyZXMgZGVy
aXZlZCBmcm9tIEJhc2VUZXN0IC4uLgotYGBgCi0KLUlmIG5lY2Vzc2FyeSwgeW91IGNhbiBjb250
aW51ZSB0byBkZXJpdmUgdGVzdCBmaXh0dXJlcyBmcm9tIGEgZGVyaXZlZCBmaXh0dXJlLgotR29v
Z2xlIFRlc3QgaGFzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkgY2FuIGJlLgot
Ci1Gb3IgYSBjb21wbGV0ZSBleGFtcGxlIHVzaW5nIGRlcml2ZWQgdGVzdCBmaXh0dXJlcywgc2Vl
Ci1bc2FtcGxlNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjKS4KLQotIyMgTXkgY29t
cGlsZXIgY29tcGxhaW5zICJ2b2lkIHZhbHVlIG5vdCBpZ25vcmVkIGFzIGl0IG91Z2h0IHRvIGJl
LiIgV2hhdCBkb2VzIHRoaXMgbWVhbj8gIyMKLQotWW91J3JlIHByb2JhYmx5IHVzaW5nIGFuIGBB
U1NFUlRfKigpYCBpbiBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYHZvaWRgLgotYEFT
U0VSVF8qKClgIGNhbiBvbmx5IGJlIHVzZWQgaW4gYHZvaWRgIGZ1bmN0aW9ucy4KLQotIyMgTXkg
ZGVhdGggdGVzdCBoYW5ncyAob3Igc2VnLWZhdWx0cykuIEhvdyBkbyBJIGZpeCBpdD8gIyMKLQot
SW4gR29vZ2xlIFRlc3QsIGRlYXRoIHRlc3RzIGFyZSBydW4gaW4gYSBjaGlsZCBwcm9jZXNzIGFu
ZCB0aGUgd2F5IHRoZXkgd29yayBpcwotZGVsaWNhdGUuIFRvIHdyaXRlIGRlYXRoIHRlc3RzIHlv
dSByZWFsbHkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IHdvcmsuCi1QbGVhc2UgbWFrZSBz
dXJlIHlvdSBoYXZlIHJlYWQgdGhpcy4KLQotSW4gcGFydGljdWxhciwgZGVhdGggdGVzdHMgZG9u
J3QgbGlrZSBoYXZpbmcgbXVsdGlwbGUgdGhyZWFkcyBpbiB0aGUgcGFyZW50Ci1wcm9jZXNzLiBT
byB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiB0cnkgaXMgdG8gZWxpbWluYXRlIGNyZWF0aW5nIHRo
cmVhZHMKLW91dHNpZGUgb2YgYEVYUEVDVF9ERUFUSCgpYC4KLQotU29tZXRpbWVzIHRoaXMgaXMg
aW1wb3NzaWJsZSBhcyBzb21lIGxpYnJhcnkgeW91IG11c3QgdXNlIG1heSBiZSBjcmVhdGluZwot
dGhyZWFkcyBiZWZvcmUgYG1haW4oKWAgaXMgZXZlbiByZWFjaGVkLiBJbiB0aGlzIGNhc2UsIHlv
dSBjYW4gdHJ5IHRvIG1pbmltaXplCi10aGUgY2hhbmNlIG9mIGNvbmZsaWN0cyBieSBlaXRoZXIg
bW92aW5nIGFzIG1hbnkgYWN0aXZpdGllcyBhcyBwb3NzaWJsZSBpbnNpZGUKLWBFWFBFQ1RfREVB
VEgoKWAgKGluIHRoZSBleHRyZW1lIGNhc2UsIHlvdSB3YW50IHRvIG1vdmUgZXZlcnl0aGluZyBp
bnNpZGUpLCBvcgotbGVhdmluZyBhcyBmZXcgdGhpbmdzIGFzIHBvc3NpYmxlIGluIGl0LiBBbHNv
LCB5b3UgY2FuIHRyeSB0byBzZXQgdGhlIGRlYXRoCi10ZXN0IHN0eWxlIHRvIGAidGhyZWFkc2Fm
ZSJgLCB3aGljaCBpcyBzYWZlciBidXQgc2xvd2VyLCBhbmQgc2VlIGlmIGl0IGhlbHBzLgotCi1J
ZiB5b3UgZ28gd2l0aCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgcmVtZW1iZXIgdGhhdCB0aGV5
IHJlcnVuIHRoZSB0ZXN0Ci1wcm9ncmFtIGZyb20gdGhlIGJlZ2lubmluZyBpbiB0aGUgY2hpbGQg
cHJvY2Vzcy4gVGhlcmVmb3JlIG1ha2Ugc3VyZSB5b3VyCi1wcm9ncmFtIGNhbiBydW4gc2lkZS1i
eS1zaWRlIHdpdGggaXRzZWxmIGFuZCBpcyBkZXRlcm1pbmlzdGljLgotCi1JbiB0aGUgZW5kLCB0
aGlzIGJvaWxzIGRvd24gdG8gZ29vZCBjb25jdXJyZW50IHByb2dyYW1taW5nLiBZb3UgaGF2ZSB0
byBtYWtlCi1zdXJlIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb25zIG9yIGRlYWQgbG9j
a3MgaW4geW91ciBwcm9ncmFtLiBObyBzaWx2ZXIKLWJ1bGxldCAtIHNvcnJ5IQotCi0jIyBTaG91
bGQgSSB1c2UgdGhlIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2YgdGhlIHRlc3QgZml4dHVyZSBv
ciB0aGUgc2V0LXVwL3RlYXItZG93biBmdW5jdGlvbj8gIyMKLQotVGhlIGZpcnN0IHRoaW5nIHRv
IHJlbWVtYmVyIGlzIHRoYXQgR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhlCi1zYW1lIHRl
c3QgZml4dHVyZSBvYmplY3QgYWNyb3NzIG11bHRpcGxlIHRlc3RzLiBGb3IgZWFjaCBgVEVTVF9G
YCwKLUdvb2dsZSBUZXN0IHdpbGwgY3JlYXRlIGEgZnJlc2ggdGVzdCBmaXh0dXJlIG9iamVjdCwg
X2ltbWVkaWF0ZWx5XwotY2FsbCBgU2V0VXAoKWAsIHJ1biB0aGUgdGVzdCwgY2FsbCBgVGVhckRv
d24oKWAsIGFuZCB0aGVuCi1faW1tZWRpYXRlbHlfIGRlbGV0ZSB0aGUgdGVzdCBmaXh0dXJlIG9i
amVjdC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubwotbmVlZCB0byB3cml0ZSBhIGBTZXRVcCgpYCBv
ciBgVGVhckRvd24oKWAgZnVuY3Rpb24gaWYgdGhlIGNvbnN0cnVjdG9yCi1vciBkZXN0cnVjdG9y
IGFscmVhZHkgZG9lcyB0aGUgam9iLgotCi1Zb3UgbWF5IHN0aWxsIHdhbnQgdG8gdXNlIGBTZXRV
cCgpL1RlYXJEb3duKClgIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6Ci0gICogSWYgdGhlIHRlYXIt
ZG93biBvcGVyYXRpb24gY291bGQgdGhyb3cgYW4gZXhjZXB0aW9uLCB5b3UgbXVzdCB1c2UgYFRl
YXJEb3duKClgIGFzIG9wcG9zZWQgdG8gdGhlIGRlc3RydWN0b3IsIGFzIHRocm93aW5nIGluIGEg
ZGVzdHJ1Y3RvciBsZWFkcyB0byB1bmRlZmluZWQgYmVoYXZpb3IgYW5kIHVzdWFsbHkgd2lsbCBr
aWxsIHlvdXIgcHJvZ3JhbSByaWdodCBhd2F5LiBOb3RlIHRoYXQgbWFueSBzdGFuZGFyZCBsaWJy
YXJpZXMgKGxpa2UgU1RMKSBtYXkgdGhyb3cgd2hlbiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGlu
IHRoZSBjb21waWxlci4gVGhlcmVmb3JlIHlvdSBzaG91bGQgcHJlZmVyIGBUZWFyRG93bigpYCBp
ZiB5b3Ugd2FudCB0byB3cml0ZSBwb3J0YWJsZSB0ZXN0cyB0aGF0IHdvcmsgd2l0aCBvciB3aXRo
b3V0IGV4Y2VwdGlvbnMuCi0gICogVGhlIGFzc2VydGlvbiBtYWNyb3MgdGhyb3cgYW4gZXhjZXB0
aW9uIHdoZW4gZmxhZyBgLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlYCBpcyBzcGVjaWZpZWQuIFRo
ZXJlZm9yZSwgeW91IHNob3VsZG4ndCB1c2UgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyBpbiBhIGRl
c3RydWN0b3IgaWYgeW91IHBsYW4gdG8gcnVuIHlvdXIgdGVzdHMgd2l0aCB0aGlzIGZsYWcuCi0g
ICogSW4gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLCB5b3UgY2Fubm90IG1ha2UgYSB2aXJ0
dWFsIGZ1bmN0aW9uIGNhbGwgb24gdGhpcyBvYmplY3QuIChZb3UgY2FuIGNhbGwgYSBtZXRob2Qg
ZGVjbGFyZWQgYXMgdmlydHVhbCwgYnV0IGl0IHdpbGwgYmUgc3RhdGljYWxseSBib3VuZC4pIFRo
ZXJlZm9yZSwgaWYgeW91IG5lZWQgdG8gY2FsbCBhIG1ldGhvZCB0aGF0IHdpbGwgYmUgb3ZlcnJp
ZGVuIGluIGEgZGVyaXZlZCBjbGFzcywgeW91IGhhdmUgdG8gdXNlIGBTZXRVcCgpL1RlYXJEb3du
KClgLgotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zICJubyBtYXRjaGluZyBmdW5jdGlvbiB0
byBjYWxsIiB3aGVuIEkgdXNlIEFTU0VSVFxfUFJFRG4uIEhvdyBkbyBJIGZpeCBpdD8gIyMKLQot
SWYgdGhlIHByZWRpY2F0ZSBmdW5jdGlvbiB5b3UgdXNlIGluIGBBU1NFUlRfUFJFRCpgIG9yIGBF
WFBFQ1RfUFJFRCpgIGlzCi1vdmVybG9hZGVkIG9yIGEgdGVtcGxhdGUsIHRoZSBjb21waWxlciB3
aWxsIGhhdmUgdHJvdWJsZSBmaWd1cmluZyBvdXQgd2hpY2gKLW92ZXJsb2FkZWQgdmVyc2lvbiBp
dCBzaG91bGQgdXNlLiBgQVNTRVJUX1BSRURfRk9STUFUKmAgYW5kCi1gRVhQRUNUX1BSRURfRk9S
TUFUKmAgZG9uJ3QgaGF2ZSB0aGlzIHByb2JsZW0uCi0KLUlmIHlvdSBzZWUgdGhpcyBlcnJvciwg
eW91IG1pZ2h0IHdhbnQgdG8gc3dpdGNoIHRvCi1gKEFTU0VSVHxFWFBFQ1QpX1BSRURfRk9STUFU
KmAsIHdoaWNoIHdpbGwgYWxzbyBnaXZlIHlvdSBhIGJldHRlciBmYWlsdXJlCi1tZXNzYWdlLiBJ
ZiwgaG93ZXZlciwgdGhhdCBpcyBub3QgYW4gb3B0aW9uLCB5b3UgY2FuIHJlc29sdmUgdGhlIHBy
b2JsZW0gYnkKLWV4cGxpY2l0bHkgdGVsbGluZyB0aGUgY29tcGlsZXIgd2hpY2ggdmVyc2lvbiB0
byBwaWNrLgotCi1Gb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZQotCi1gYGAKLWJvb2wgSXNQ
b3NpdGl2ZShpbnQgbikgewotICByZXR1cm4gbiA+IDA7Ci19Ci1ib29sIElzUG9zaXRpdmUoZG91
YmxlIHgpIHsKLSAgcmV0dXJuIHggPiAwOwotfQotYGBgCi0KLXlvdSB3aWxsIGdldCBhIGNvbXBp
bGVyIGVycm9yIGlmIHlvdSB3cml0ZQotCi1gYGAKLUVYUEVDVF9QUkVEMShJc1Bvc2l0aXZlLCA1
KTsKLWBgYAotCi1Ib3dldmVyLCB0aGlzIHdpbGwgd29yazoKLQotYGBgCi1FWFBFQ1RfUFJFRDEo
KnN0YXRpY19jYXN0PGJvb2wgKCopKGludCk+KihJc1Bvc2l0aXZlKSwgNSk7Ci1gYGAKLQotKFRo
ZSBzdHVmZiBpbnNpZGUgdGhlIGFuZ2xlZCBicmFja2V0cyBmb3IgdGhlIGBzdGF0aWNfY2FzdGAg
b3BlcmF0b3IgaXMgdGhlCi10eXBlIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVyIGZvciB0aGUgYGlu
dGAtdmVyc2lvbiBvZiBgSXNQb3NpdGl2ZSgpYC4pCi0KLUFzIGFub3RoZXIgZXhhbXBsZSwgd2hl
biB5b3UgaGF2ZSBhIHRlbXBsYXRlIGZ1bmN0aW9uCi0KLWBgYAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1ib29sIElzTmVnYXRpdmUoVCB4KSB7Ci0gIHJldHVybiB4IDwgMDsKLX0KLWBgYAotCi15
b3UgY2FuIHVzZSBpdCBpbiBhIHByZWRpY2F0ZSBhc3NlcnRpb24gbGlrZSB0aGlzOgotCi1gYGAK
LUFTU0VSVF9QUkVEMShJc05lZ2F0aXZlKjxpbnQ+KiwgLTUpOwotYGBgCi0KLVRoaW5ncyBhcmUg
bW9yZSBpbnRlcmVzdGluZyBpZiB5b3VyIHRlbXBsYXRlIGhhcyBtb3JlIHRoYW4gb25lIHBhcmFt
ZXRlcnMuIFRoZQotZm9sbG93aW5nIHdvbid0IGNvbXBpbGU6Ci0KLWBgYAotQVNTRVJUX1BSRUQy
KCpHcmVhdGVyVGhhbjxpbnQsIGludD4qLCA1LCAwKTsKLWBgYAotCi0KLWFzIHRoZSBDKysgcHJl
LXByb2Nlc3NvciB0aGlua3MgeW91IGFyZSBnaXZpbmcgYEFTU0VSVF9QUkVEMmAgNCBhcmd1bWVu
dHMsCi13aGljaCBpcyBvbmUgbW9yZSB0aGFuIGV4cGVjdGVkLiBUaGUgd29ya2Fyb3VuZCBpcyB0
byB3cmFwIHRoZSBwcmVkaWNhdGUKLWZ1bmN0aW9uIGluIHBhcmVudGhlc2VzOgotCi1gYGAKLUFT
U0VSVF9QUkVEMigqKEdyZWF0ZXJUaGFuPGludCwgaW50PikqLCA1LCAwKTsKLWBgYAotCi0KLSMj
IE15IGNvbXBpbGVyIGNvbXBsYWlucyBhYm91dCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiB3aGVu
IEkgY2FsbCBSVU5cX0FMTFxfVEVTVFMoKS4gV2h5PyAjIwotCi1Tb21lIHBlb3BsZSBoYWQgYmVl
biBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBSVU5fQUxMX1RFU1RTKClgLiBUaGF0IGlz
LAotaW5zdGVhZCBvZgotCi1gYGAKLXJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci1gYGAKLQotdGhl
eSB3cml0ZQotCi1gYGAKLVJVTl9BTExfVEVTVFMoKTsKLWBgYAotCi1UaGlzIGlzIHdyb25nIGFu
ZCBkYW5nZXJvdXMuIEEgdGVzdCBydW5uZXIgbmVlZHMgdG8gc2VlIHRoZSByZXR1cm4gdmFsdWUg
b2YKLWBSVU5fQUxMX1RFU1RTKClgIGluIG9yZGVyIHRvIGRldGVybWluZSBpZiBhIHRlc3QgaGFz
IHBhc3NlZC4gSWYgeW91ciBgbWFpbigpYAotZnVuY3Rpb24gaWdub3JlcyBpdCwgeW91ciB0ZXN0
IHdpbGwgYmUgY29uc2lkZXJlZCBzdWNjZXNzZnVsIGV2ZW4gaWYgaXQgaGFzIGEKLUdvb2dsZSBU
ZXN0IGFzc2VydGlvbiBmYWlsdXJlLiBWZXJ5IGJhZC4KLQotVG8gaGVscCB0aGUgdXNlcnMgYXZv
aWQgdGhpcyBkYW5nZXJvdXMgYnVnLCB0aGUgaW1wbGVtZW50YXRpb24gb2YKLWBSVU5fQUxMX1RF
U1RTKClgIGNhdXNlcyBnY2MgdG8gcmFpc2UgdGhpcyB3YXJuaW5nLCB3aGVuIHRoZSByZXR1cm4g
dmFsdWUgaXMKLWlnbm9yZWQuIElmIHlvdSBzZWUgdGhpcyB3YXJuaW5nLCB0aGUgZml4IGlzIHNp
bXBsZToganVzdCBtYWtlIHN1cmUgaXRzIHZhbHVlCi1pcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFs
dWUgb2YgYG1haW4oKWAuCi0KLSMjIE15IGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0IGEgY29uc3Ry
dWN0b3IgKG9yIGRlc3RydWN0b3IpIGNhbm5vdCByZXR1cm4gYSB2YWx1ZS4gV2hhdCdzIGdvaW5n
IG9uPyAjIwotCi1EdWUgdG8gYSBwZWN1bGlhcml0eSBvZiBDKyssIGluIG9yZGVyIHRvIHN1cHBv
cnQgdGhlIHN5bnRheCBmb3Igc3RyZWFtaW5nCi1tZXNzYWdlcyB0byBhbiBgQVNTRVJUXypgLCBl
LmcuCi0KLWBgYAotQVNTRVJUX0VRKDEsIEZvbygpKSA8PCAiYmxhaCBibGFoIiA8PCBmb287Ci1g
YGAKLQotd2UgaGFkIHRvIGdpdmUgdXAgdXNpbmcgYEFTU0VSVCpgIGFuZCBgRkFJTCpgIChidXQg
bm90IGBFWFBFQ1QqYCBhbmQKLWBBRERfRkFJTFVSRSpgKSBpbiBjb25zdHJ1Y3RvcnMgYW5kIGRl
c3RydWN0b3JzLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBtb3ZlIHRoZQotY29udGVudCBvZiB5b3Vy
IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gYSBwcml2YXRlIHZvaWQgbWVtYmVyIGZ1bmN0aW9u
LCBvcgotc3dpdGNoIHRvIGBFWFBFQ1RfKigpYCBpZiB0aGF0IHdvcmtzLiBUaGlzIHNlY3Rpb24g
aW4gdGhlIHVzZXIncyBndWlkZSBleHBsYWlucwotaXQuCi0KLSMjIE15IHNldC11cCBmdW5jdGlv
biBpcyBub3QgY2FsbGVkLiBXaHk/ICMjCi0KLUMrKyBpcyBjYXNlLXNlbnNpdGl2ZS4gSXQgc2hv
dWxkIGJlIHNwZWxsZWQgYXMgYFNldFVwKClgLiAgRGlkIHlvdQotc3BlbGwgaXQgYXMgYFNldHVw
KClgPwotCi1TaW1pbGFybHksIHNvbWV0aW1lcyBwZW9wbGUgc3BlbGwgYFNldFVwVGVzdENhc2Uo
KWAgYXMgYFNldHVwVGVzdENhc2UoKWAgYW5kCi13b25kZXIgd2h5IGl0J3MgbmV2ZXIgY2FsbGVk
LgotCi0jIyBIb3cgZG8gSSBqdW1wIHRvIHRoZSBsaW5lIG9mIGEgZmFpbHVyZSBpbiBFbWFjcyBk
aXJlY3RseT8gIyMKLQotR29vZ2xlIFRlc3QncyBmYWlsdXJlIG1lc3NhZ2UgZm9ybWF0IGlzIHVu
ZGVyc3Rvb2QgYnkgRW1hY3MgYW5kIG1hbnkgb3RoZXIKLUlERXMsIGxpa2UgYWNtZSBhbmQgWENv
ZGUuIElmIGEgR29vZ2xlIFRlc3QgbWVzc2FnZSBpcyBpbiBhIGNvbXBpbGF0aW9uIGJ1ZmZlcgot
aW4gRW1hY3MsIHRoZW4gaXQncyBjbGlja2FibGUuIFlvdSBjYW4gbm93IGhpdCBgZW50ZXJgIG9u
IGEgbWVzc2FnZSB0byBqdW1wIHRvCi10aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgb3Ig
dXNlIGBDLXggYGAgdG8ganVtcCB0byB0aGUgbmV4dCBmYWlsdXJlLgotCi0jIyBJIGhhdmUgc2V2
ZXJhbCB0ZXN0IGNhc2VzIHdoaWNoIHNoYXJlIHRoZSBzYW1lIHRlc3QgZml4dHVyZSBsb2dpYywg
ZG8gSSBoYXZlIHRvIGRlZmluZSBhIG5ldyB0ZXN0IGZpeHR1cmUgY2xhc3MgZm9yIGVhY2ggb2Yg
dGhlbT8gVGhpcyBzZWVtcyBwcmV0dHkgdGVkaW91cy4gIyMKLQotWW91IGRvbid0IGhhdmUgdG8u
IEluc3RlYWQgb2YKLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVibGljIEJhc2VUZXN0IHt9Owot
Ci1URVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4uLiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4u
LiB9Ci0KLWNsYXNzIEJhclRlc3QgOiBwdWJsaWMgQmFzZVRlc3Qge307Ci0KLVRFU1RfRihCYXJU
ZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0KLWBgYAotCi15
b3UgY2FuIHNpbXBseSBgdHlwZWRlZmAgdGhlIHRlc3QgZml4dHVyZXM6Ci1gYGAKLXR5cGVkZWYg
QmFzZVRlc3QgRm9vVGVzdDsKLQotVEVTVF9GKEZvb1Rlc3QsIEFiYykgeyAuLi4gfQotVEVTVF9G
KEZvb1Rlc3QsIERlZikgeyAuLi4gfQotCi10eXBlZGVmIEJhc2VUZXN0IEJhclRlc3Q7Ci0KLVRF
U1RfRihCYXJUZXN0LCBBYmMpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBEZWYpIHsgLi4uIH0K
LWBgYAotCi0jIyBUaGUgR29vZ2xlIFRlc3Qgb3V0cHV0IGlzIGJ1cmllZCBpbiBhIHdob2xlIGJ1
bmNoIG9mIGxvZyBtZXNzYWdlcy4gV2hhdCBkbyBJIGRvPyAjIwotCi1UaGUgR29vZ2xlIFRlc3Qg
b3V0cHV0IGlzIG1lYW50IHRvIGJlIGEgY29uY2lzZSBhbmQgaHVtYW4tZnJpZW5kbHkgcmVwb3J0
LiBJZgoteW91ciB0ZXN0IGdlbmVyYXRlcyB0ZXh0dWFsIG91dHB1dCBpdHNlbGYsIGl0IHdpbGwg
bWl4IHdpdGggdGhlIEdvb2dsZSBUZXN0Ci1vdXRwdXQsIG1ha2luZyBpdCBoYXJkIHRvIHJlYWQu
IEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGVhc3kgc29sdXRpb24gdG8gdGhpcwotcHJvYmxlbS4KLQot
U2luY2UgbW9zdCBsb2cgbWVzc2FnZXMgZ28gdG8gc3RkZXJyLCB3ZSBkZWNpZGVkIHRvIGxldCBH
b29nbGUgVGVzdCBvdXRwdXQgZ28KLXRvIHN0ZG91dC4gVGhpcyB3YXksIHlvdSBjYW4gZWFzaWx5
IHNlcGFyYXRlIHRoZSB0d28gdXNpbmcgcmVkaXJlY3Rpb24uIEZvcgotZXhhbXBsZToKLWBgYAot
Li9teV90ZXN0ID4gZ29vZ2xldGVzdF9vdXRwdXQudHh0Ci1gYGAKLQotIyMgV2h5IHNob3VsZCBJ
IHByZWZlciB0ZXN0IGZpeHR1cmVzIG92ZXIgZ2xvYmFsIHZhcmlhYmxlcz8gIyMKLQotVGhlcmUg
YXJlIHNldmVyYWwgZ29vZCByZWFzb25zOgotICAxLiBJdCdzIGxpa2VseSB5b3VyIHRlc3QgbmVl
ZHMgdG8gY2hhbmdlIHRoZSBzdGF0ZXMgb2YgaXRzIGdsb2JhbCB2YXJpYWJsZXMuIFRoaXMgbWFr
ZXMgaXQgZGlmZmljdWx0IHRvIGtlZXAgc2lkZSBlZmZlY3RzIGZyb20gZXNjYXBpbmcgb25lIHRl
c3QgYW5kIGNvbnRhbWluYXRpbmcgb3RoZXJzLCBtYWtpbmcgZGVidWdnaW5nIGRpZmZpY3VsdC4g
QnkgdXNpbmcgZml4dHVyZXMsIGVhY2ggdGVzdCBoYXMgYSBmcmVzaCBzZXQgb2YgdmFyaWFibGVz
IHRoYXQncyBkaWZmZXJlbnQgKGJ1dCB3aXRoIHRoZSBzYW1lIG5hbWVzKS4gVGh1cywgdGVzdHMg
YXJlIGtlcHQgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlci4KLSAgMS4gR2xvYmFsIHZhcmlhYmxl
cyBwb2xsdXRlIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotICAxLiBUZXN0IGZpeHR1cmVzIGNhbiBi
ZSByZXVzZWQgdmlhIHN1YmNsYXNzaW5nLCB3aGljaCBjYW5ub3QgYmUgZG9uZSBlYXNpbHkgd2l0
aCBnbG9iYWwgdmFyaWFibGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiBtYW55IHRlc3QgY2FzZXMgaGF2
ZSBzb21ldGhpbmcgaW4gY29tbW9uLgotCi0jIyBIb3cgZG8gSSB0ZXN0IHByaXZhdGUgY2xhc3Mg
bWVtYmVycyB3aXRob3V0IHdyaXRpbmcgRlJJRU5EXF9URVNUKClzPyAjIwotCi1Zb3Ugc2hvdWxk
IHRyeSB0byB3cml0ZSB0ZXN0YWJsZSBjb2RlLCB3aGljaCBtZWFucyBjbGFzc2VzIHNob3VsZCBi
ZSBlYXNpbHkKLXRlc3RlZCBmcm9tIHRoZWlyIHB1YmxpYyBpbnRlcmZhY2UuIE9uZSB3YXkgdG8g
YWNoaWV2ZSB0aGlzIGlzIHRoZSBQaW1wbCBpZGlvbToKLXlvdSBtb3ZlIGFsbCBwcml2YXRlIG1l
bWJlcnMgb2YgYSBjbGFzcyBpbnRvIGEgaGVscGVyIGNsYXNzLCBhbmQgbWFrZSBhbGwKLW1lbWJl
cnMgb2YgdGhlIGhlbHBlciBjbGFzcyBwdWJsaWMuCi0KLVlvdSBoYXZlIHNldmVyYWwgb3RoZXIg
b3B0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgdXNpbmcgYEZSSUVORF9URVNUYDoKLSAgKiBXcml0
ZSB0aGUgdGVzdHMgYXMgbWVtYmVycyBvZiB0aGUgZml4dHVyZSBjbGFzczoKLWBgYAotY2xhc3Mg
Rm9vIHsKLSAgZnJpZW5kIGNsYXNzIEZvb1Rlc3Q7Ci0gIC4uLgotfTsKLQotY2xhc3MgRm9vVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgLi4uCi0gIHZvaWQg
VGVzdDEoKSB7Li4ufSAvLyBUaGlzIGFjY2Vzc2VzIHByaXZhdGUgbWVtYmVycyBvZiBjbGFzcyBG
b28uCi0gIHZvaWQgVGVzdDIoKSB7Li4ufSAvLyBTbyBkb2VzIHRoaXMgb25lLgotfTsKLQotVEVT
VF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIFRlc3QxKCk7Ci19Ci0KLVRFU1RfRihGb29UZXN0LCBU
ZXN0MikgewotICBUZXN0MigpOwotfQotYGBgCi0gICogSW4gdGhlIGZpeHR1cmUgY2xhc3MsIHdy
aXRlIGFjY2Vzc29ycyBmb3IgdGhlIHRlc3RlZCBjbGFzcycgcHJpdmF0ZSBtZW1iZXJzLCB0aGVu
IHVzZSB0aGUgYWNjZXNzb3JzIGluIHlvdXIgdGVzdHM6Ci1gYGAKLWNsYXNzIEZvbyB7Ci0gIGZy
aWVuZCBjbGFzcyBGb29UZXN0OwotICAuLi4KLX07Ci0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC4uLgotICBUMSBnZXRfcHJpdmF0ZV9t
ZW1iZXIxKEZvbyogb2JqKSB7Ci0gICAgcmV0dXJuIG9iai0+cHJpdmF0ZV9tZW1iZXIxXzsKLSAg
fQotfTsKLQotVEVTVF9GKEZvb1Rlc3QsIFRlc3QxKSB7Ci0gIC4uLgotICBnZXRfcHJpdmF0ZV9t
ZW1iZXIxKHgpCi0gIC4uLgotfQotYGBgCi0gICogSWYgdGhlIG1ldGhvZHMgYXJlIGRlY2xhcmVk
ICoqcHJvdGVjdGVkKiosIHlvdSBjYW4gY2hhbmdlIHRoZWlyIGFjY2VzcyBsZXZlbCBpbiBhIHRl
c3Qtb25seSBzdWJjbGFzczoKLWBgYAotY2xhc3MgWW91ckNsYXNzIHsKLSAgLi4uCi0gcHJvdGVj
dGVkOiAvLyBwcm90ZWN0ZWQgYWNjZXNzIGZvciB0ZXN0YWJpbGl0eS4KLSAgaW50IERvU29tZXRo
aW5nUmV0dXJuaW5nSW50KCk7Ci0gIC4uLgotfTsKLQotLy8gaW4gdGhlIHlvdXJfY2xhc3NfdGVz
dC5jYyBmaWxlOgotY2xhc3MgVGVzdGFibGVZb3VyQ2xhc3MgOiBwdWJsaWMgWW91ckNsYXNzIHsK
LSAgLi4uCi0gcHVibGljOiB1c2luZyBZb3VyQ2xhc3M6OkRvU29tZXRoaW5nUmV0dXJuaW5nSW50
OyAvLyBjaGFuZ2VzIGFjY2VzcyByaWdodHMKLSAgLi4uCi19OwotCi1URVNUX0YoWW91ckNsYXNz
VGVzdCwgRG9Tb21ldGhpbmdUZXN0KSB7Ci0gIFRlc3RhYmxlWW91ckNsYXNzIG9iajsKLSAgYXNz
ZXJ0RXF1YWxzKGV4cGVjdGVkX3ZhbHVlLCBvYmouRG9Tb21ldGhpbmdSZXR1cm5pbmdJbnQoKSk7
Ci19Ci1gYGAKLQotIyMgSG93IGRvIEkgdGVzdCBwcml2YXRlIGNsYXNzIHN0YXRpYyBtZW1iZXJz
IHdpdGhvdXQgd3JpdGluZyBGUklFTkRcX1RFU1QoKXM/ICMjCi0KLVdlIGZpbmQgcHJpdmF0ZSBz
dGF0aWMgbWV0aG9kcyBjbHV0dGVyIHRoZSBoZWFkZXIgZmlsZS4gIFRoZXkgYXJlCi1pbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIGFuZCBpZGVhbGx5IHNob3VsZCBiZSBrZXB0IG91dCBvZiBhIC5oLiBT
byBvZnRlbiBJIG1ha2UKLXRoZW0gZnJlZSBmdW5jdGlvbnMgaW5zdGVhZC4KLQotSW5zdGVhZCBv
ZjoKLWBgYAotLy8gZm9vLmgKLWNsYXNzIEZvbyB7Ci0gIC4uLgotIHByaXZhdGU6Ci0gIHN0YXRp
YyBib29sIEZ1bmMoaW50IG4pOwotfTsKLQotLy8gZm9vLmNjCi1ib29sIEZvbzo6RnVuYyhpbnQg
bikgeyAuLi4gfQotCi0vLyBmb29fdGVzdC5jYwotRVhQRUNUX1RSVUUoRm9vOjpGdW5jKDEyMzQ1
KSk7Ci1gYGAKLQotWW91IHByb2JhYmx5IHNob3VsZCBiZXR0ZXIgd3JpdGU6Ci1gYGAKLS8vIGZv
by5oCi1jbGFzcyBGb28gewotICAuLi4KLX07Ci0KLS8vIGZvby5jYwotbmFtZXNwYWNlIGludGVy
bmFsIHsKLSAgYm9vbCBGdW5jKGludCBuKSB7IC4uLiB9Ci19Ci0KLS8vIGZvb190ZXN0LmNjCi1u
YW1lc3BhY2UgaW50ZXJuYWwgewotICBib29sIEZ1bmMoaW50IG4pOwotfQotCi1FWFBFQ1RfVFJV
RShpbnRlcm5hbDo6RnVuYygxMjM0NSkpOwotYGBgCi0KLSMjIEkgd291bGQgbGlrZSB0byBydW4g
YSB0ZXN0IHNldmVyYWwgdGltZXMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycy4gRG8gSSBuZWVk
IHRvIHdyaXRlIHNldmVyYWwgc2ltaWxhciBjb3BpZXMgb2YgaXQ/ICMjCi0KLU5vLiBZb3UgY2Fu
IHVzZSBhIGZlYXR1cmUgY2FsbGVkIFt2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzXShWMV83X0Fk
dmFuY2VkR3VpZGUubWQjVmFsdWVfUGFyYW1ldGVyaXplZF9UZXN0cykgd2hpY2gKLWxldHMgeW91
IHJlcGVhdCB5b3VyIHRlc3RzIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMsIHdpdGhvdXQgZGVm
aW5pbmcgaXQgbW9yZSB0aGFuIG9uY2UuCi0KLSMjIEhvdyBkbyBJIHRlc3QgYSBmaWxlIHRoYXQg
ZGVmaW5lcyBtYWluKCk/ICMjCi0KLVRvIHRlc3QgYSBgZm9vLmNjYCBmaWxlLCB5b3UgbmVlZCB0
byBjb21waWxlIGFuZCBsaW5rIGl0IGludG8geW91ciB1bml0IHRlc3QKLXByb2dyYW0uIEhvd2V2
ZXIsIHdoZW4gdGhlIGZpbGUgY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciB0aGUgYG1haW4oKWAK
LWZ1bmN0aW9uLCBpdCB3aWxsIGNsYXNoIHdpdGggdGhlIGBtYWluKClgIG9mIHlvdXIgdW5pdCB0
ZXN0LCBhbmQgd2lsbCByZXN1bHQgaW4KLWEgYnVpbGQgZXJyb3IuCi0KLVRoZSByaWdodCBzb2x1
dGlvbiBpcyB0byBzcGxpdCBpdCBpbnRvIHRocmVlIGZpbGVzOgotICAxLiBgZm9vLmhgIHdoaWNo
IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMsCi0gIDEuIGBmb28uY2NgIHdoaWNoIGNvbnRhaW5z
IHRoZSBkZWZpbml0aW9ucyBleGNlcHQgYG1haW4oKWAsIGFuZAotICAxLiBgZm9vX21haW4uY2Ng
IHdoaWNoIGNvbnRhaW5zIG5vdGhpbmcgYnV0IHRoZSBkZWZpbml0aW9uIG9mIGBtYWluKClgLgot
Ci1UaGVuIGBmb28uY2NgIGNhbiBiZSBlYXNpbHkgdGVzdGVkLgotCi1JZiB5b3UgYXJlIGFkZGlu
ZyB0ZXN0cyB0byBhbiBleGlzdGluZyBmaWxlIGFuZCBkb24ndCB3YW50IGFuIGludHJ1c2l2ZSBj
aGFuZ2UKLWxpa2UgdGhpcywgdGhlcmUgaXMgYSBoYWNrOiBqdXN0IGluY2x1ZGUgdGhlIGVudGly
ZSBgZm9vLmNjYCBmaWxlIGluIHlvdXIgdW5pdAotdGVzdC4gRm9yIGV4YW1wbGU6Ci1gYGAKLS8v
IEZpbGUgZm9vX3VuaXR0ZXN0LmNjCi0KLS8vIFRoZSBoZWFkZXJzIHNlY3Rpb24KLS4uLgotCi0v
LyBSZW5hbWVzIG1haW4oKSBpbiBmb28uY2MgdG8gbWFrZSByb29tIGZvciB0aGUgdW5pdCB0ZXN0
IG1haW4oKQotI2RlZmluZSBtYWluIEZvb01haW4KLQotI2luY2x1ZGUgImEvYi9mb28uY2MiCi0K
LS8vIFRoZSB0ZXN0cyBzdGFydCBoZXJlLgotLi4uCi1gYGAKLQotCi1Ib3dldmVyLCBwbGVhc2Ug
cmVtZW1iZXIgdGhpcyBpcyBhIGhhY2sgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgYXMgdGhlIGxh
c3QKLXJlc29ydC4KLQotIyMgV2hhdCBjYW4gdGhlIHN0YXRlbWVudCBhcmd1bWVudCBpbiBBU1NF
UlRcX0RFQVRIKCkgYmU/ICMjCi0KLWBBU1NFUlRfREVBVEgoX3N0YXRlbWVudF8sIF9yZWdleF8p
YCAob3IgYW55IGRlYXRoIGFzc2VydGlvbiBtYWNybykgY2FuIGJlIHVzZWQKLXdoZXJldmVyIGBf
c3RhdGVtZW50X2AgaXMgdmFsaWQuIFNvIGJhc2ljYWxseSBgX3N0YXRlbWVudF9gIGNhbiBiZSBh
bnkgQysrCi1zdGF0ZW1lbnQgdGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY3VycmVudCBjb250ZXh0
LiBJbiBwYXJ0aWN1bGFyLCBpdCBjYW4KLXJlZmVyZW5jZSBnbG9iYWwgYW5kL29yIGxvY2FsIHZh
cmlhYmxlcywgYW5kIGNhbiBiZToKLSAgKiBhIHNpbXBsZSBmdW5jdGlvbiBjYWxsIChvZnRlbiB0
aGUgY2FzZSksCi0gICogYSBjb21wbGV4IGV4cHJlc3Npb24sIG9yCi0gICogYSBjb21wb3VuZCBz
dGF0ZW1lbnQuCi0KLT4gU29tZSBleGFtcGxlcyBhcmUgc2hvd24gaGVyZToKLQotYGBgCi0vLyBB
IGRlYXRoIHRlc3QgY2FuIGJlIGEgc2ltcGxlIGZ1bmN0aW9uIGNhbGwuCi1URVNUKE15RGVhdGhU
ZXN0LCBGdW5jdGlvbkNhbGwpIHsKLSAgQVNTRVJUX0RFQVRIKFh5eig1KSwgIlh5eiBmYWlsZWQi
KTsKLX0KLQotLy8gT3IgYSBjb21wbGV4IGV4cHJlc3Npb24gdGhhdCByZWZlcmVuY2VzIHZhcmlh
YmxlcyBhbmQgZnVuY3Rpb25zLgotVEVTVChNeURlYXRoVGVzdCwgQ29tcGxleEV4cHJlc3Npb24p
IHsKLSAgY29uc3QgYm9vbCBjID0gQ29uZGl0aW9uKCk7Ci0gIEFTU0VSVF9ERUFUSCgoYyA/IEZ1
bmMxKDApIDogb2JqZWN0Mi5NZXRob2QoInRlc3QiKSksCi0gICAgICAgICAgICAgICAiKEZ1bmMx
fE1ldGhvZCkgZmFpbGVkIik7Ci19Ci0KLS8vIERlYXRoIGFzc2VydGlvbnMgY2FuIGJlIHVzZWQg
YW55IHdoZXJlIGluIGEgZnVuY3Rpb24uIEluCi0vLyBwYXJ0aWN1bGFyLCB0aGV5IGNhbiBiZSBp
bnNpZGUgYSBsb29wLgotVEVTVChNeURlYXRoVGVzdCwgSW5zaWRlTG9vcCkgewotICAvLyBWZXJp
ZmllcyB0aGF0IEZvbygwKSwgRm9vKDEpLCAuLi4sIGFuZCBGb28oNCkgYWxsIGRpZS4KLSAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICBFWFBFQ1RfREVBVEhfTShGb28oaSksICJG
b28gaGFzIFxcZCsgZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6Ok1lc3Nh
Z2UoKSA8PCAid2hlcmUgaSBpcyAiIDw8IGkpOwotICB9Ci19Ci0KLS8vIEEgZGVhdGggYXNzZXJ0
aW9uIGNhbiBjb250YWluIGEgY29tcG91bmQgc3RhdGVtZW50LgotVEVTVChNeURlYXRoVGVzdCwg
Q29tcG91bmRTdGF0ZW1lbnQpIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBhdCBsZWFzZSBvbmUgb2Yg
QmFyKDApLCBCYXIoMSksIC4uLiwgYW5kCi0gIC8vIEJhcig0KSBkaWVzLgotICBBU1NFUlRfREVB
VEgoewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgICBCYXIoaSk7Ci0g
ICAgfQotICB9LAotICAiQmFyIGhhcyBcXGQrIGVycm9ycyIpO30KLWBgYAotCi1gZ29vZ2xldGVz
dF91bml0dGVzdC5jY2AgY29udGFpbnMgbW9yZSBleGFtcGxlcyBpZiB5b3UgYXJlIGludGVyZXN0
ZWQuCi0KLSMjIFdoYXQgc3ludGF4IGRvZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbiBBU1NF
UlRcX0RFQVRIIHVzZT8gIyMKLQotT24gUE9TSVggc3lzdGVtcywgR29vZ2xlIFRlc3QgdXNlcyB0
aGUgUE9TSVggRXh0ZW5kZWQgcmVndWxhcgotZXhwcmVzc2lvbiBzeW50YXgKLShodHRwOi8vZW4u
d2lraXBlZGlhLm9yZy93aWtpL1JlZ3VsYXJfZXhwcmVzc2lvbiNQT1NJWF9FeHRlbmRlZF9SZWd1
bGFyX0V4cHJlc3Npb25zKS4KLU9uIFdpbmRvd3MsIGl0IHVzZXMgYSBsaW1pdGVkIHZhcmlhbnQg
b2YgcmVndWxhciBleHByZXNzaW9uCi1zeW50YXguIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUK
LVtyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4XShWMV83X0FkdmFuY2VkR3VpZGUubWQjUmVndWxh
cl9FeHByZXNzaW9uX1N5bnRheCkuCi0KLSMjIEkgaGF2ZSBhIGZpeHR1cmUgY2xhc3MgRm9vLCBi
dXQgVEVTVFxfRihGb28sIEJhcikgZ2l2ZXMgbWUgZXJyb3IgIm5vIG1hdGNoaW5nIGZ1bmN0aW9u
IGZvciBjYWxsIHRvIEZvbzo6Rm9vKCkiLiBXaHk/ICMjCi0KLUdvb2dsZSBUZXN0IG5lZWRzIHRv
IGJlIGFibGUgdG8gY3JlYXRlIG9iamVjdHMgb2YgeW91ciB0ZXN0IGZpeHR1cmUgY2xhc3MsIHNv
Ci1pdCBtdXN0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBOb3JtYWxseSB0aGUgY29tcGls
ZXIgd2lsbCBkZWZpbmUgb25lIGZvcgoteW91LiBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMgd2hl
cmUgeW91IGhhdmUgdG8gZGVmaW5lIHlvdXIgb3duOgotICAqIElmIHlvdSBleHBsaWNpdGx5IGRl
Y2xhcmUgYSBub24tZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgYEZvb2AsIHRoZW4geW91
IG5lZWQgdG8gZGVmaW5lIGEgZGVmYXVsdCBjb25zdHJ1Y3RvciwgZXZlbiBpZiBpdCB3b3VsZCBi
ZSBlbXB0eS4KLSAgKiBJZiBgRm9vYCBoYXMgYSBjb25zdCBub24tc3RhdGljIGRhdGEgbWVtYmVy
LCB0aGVuIHlvdSBoYXZlIHRvIGRlZmluZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBfYW5kXyBp
bml0aWFsaXplIHRoZSBjb25zdCBtZW1iZXIgaW4gdGhlIGluaXRpYWxpemVyIGxpc3Qgb2YgdGhl
IGNvbnN0cnVjdG9yLiAoRWFybHkgdmVyc2lvbnMgb2YgYGdjY2AgZG9lc24ndCBmb3JjZSB5b3Ug
dG8gaW5pdGlhbGl6ZSB0aGUgY29uc3QgbWVtYmVyLiBJdCdzIGEgYnVnIHRoYXQgaGFzIGJlZW4g
Zml4ZWQgaW4gYGdjYyA0YC4pCi0KLSMjIFdoeSBkb2VzIEFTU0VSVFxfREVBVEggY29tcGxhaW4g
YWJvdXQgcHJldmlvdXMgdGhyZWFkcyB0aGF0IHdlcmUgYWxyZWFkeSBqb2luZWQ/ICMjCi0KLVdp
dGggdGhlIExpbnV4IHB0aHJlYWQgbGlicmFyeSwgdGhlcmUgaXMgbm8gdHVybmluZyBiYWNrIG9u
Y2UgeW91IGNyb3NzIHRoZQotbGluZSBmcm9tIHNpbmdsZSB0aHJlYWQgdG8gbXVsdGlwbGUgdGhy
ZWFkcy4gVGhlIGZpcnN0IHRpbWUgeW91IGNyZWF0ZSBhCi10aHJlYWQsIGEgbWFuYWdlciB0aHJl
YWQgaXMgY3JlYXRlZCBpbiBhZGRpdGlvbiwgc28geW91IGdldCAzLCBub3QgMiwgdGhyZWFkcy4K
LUxhdGVyIHdoZW4gdGhlIHRocmVhZCB5b3UgY3JlYXRlIGpvaW5zIHRoZSBtYWluIHRocmVhZCwg
dGhlIHRocmVhZCBjb3VudAotZGVjcmVtZW50cyBieSAxLCBidXQgdGhlIG1hbmFnZXIgdGhyZWFk
IHdpbGwgbmV2ZXIgYmUga2lsbGVkLCBzbyB5b3Ugc3RpbGwgaGF2ZQotMiB0aHJlYWRzLCB3aGlj
aCBtZWFucyB5b3UgY2Fubm90IHNhZmVseSBydW4gYSBkZWF0aCB0ZXN0LgotCi1UaGUgbmV3IE5Q
VEwgdGhyZWFkIGxpYnJhcnkgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGlzIHByb2JsZW0sIGFzIGl0
IGRvZXNuJ3QKLWNyZWF0ZSBhIG1hbmFnZXIgdGhyZWFkLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qg
Y29udHJvbCB3aGljaCBtYWNoaW5lIHlvdXIgdGVzdAotcnVucyBvbiwgeW91IHNob3VsZG4ndCBk
ZXBlbmQgb24gdGhpcy4KLQotIyMgV2h5IGRvZXMgR29vZ2xlIFRlc3QgcmVxdWlyZSB0aGUgZW50
aXJlIHRlc3QgY2FzZSwgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIHRlc3RzLCB0byBiZSBuYW1lZCBG
T09EZWF0aFRlc3Qgd2hlbiBpdCB1c2VzIEFTU0VSVFxfREVBVEg/ICMjCi0KLUdvb2dsZSBUZXN0
IGRvZXMgbm90IGludGVybGVhdmUgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdGVzdCBjYXNlcy4gVGhh
dCBpcywgaXQKLXJ1bnMgYWxsIHRlc3RzIGluIG9uZSB0ZXN0IGNhc2UgZmlyc3QsIGFuZCB0aGVu
IHJ1bnMgYWxsIHRlc3RzIGluIHRoZSBuZXh0IHRlc3QKLWNhc2UsIGFuZCBzbyBvbi4gR29vZ2xl
IFRlc3QgZG9lcyB0aGlzIGJlY2F1c2UgaXQgbmVlZHMgdG8gc2V0IHVwIGEgdGVzdCBjYXNlCi1i
ZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gaXQgaXMgcnVuLCBhbmQgdGVhciBpdCBkb3duIGFmdGVy
d29yZHMuIFNwbGl0dGluZyB1cAotdGhlIHRlc3QgY2FzZSB3b3VsZCByZXF1aXJlIG11bHRpcGxl
IHNldC11cCBhbmQgdGVhci1kb3duIHByb2Nlc3Nlcywgd2hpY2ggaXMKLWluZWZmaWNpZW50IGFu
ZCBtYWtlcyB0aGUgc2VtYW50aWNzIHVuY2xlYW4uCi0KLUlmIHdlIHdlcmUgdG8gZGV0ZXJtaW5l
IHRoZSBvcmRlciBvZiB0ZXN0cyBiYXNlZCBvbiB0ZXN0IG5hbWUgaW5zdGVhZCBvZiB0ZXN0Ci1j
YXNlIG5hbWUsIHRoZW4gd2Ugd291bGQgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGUgZm9sbG93aW5n
IHNpdHVhdGlvbjoKLQotYGBgCi1URVNUX0YoRm9vVGVzdCwgQWJjRGVhdGhUZXN0KSB7IC4uLiB9
Ci1URVNUX0YoRm9vVGVzdCwgVXZ3KSB7IC4uLiB9Ci0KLVRFU1RfRihCYXJUZXN0LCBEZWZEZWF0
aFRlc3QpIHsgLi4uIH0KLVRFU1RfRihCYXJUZXN0LCBYeXopIHsgLi4uIH0KLWBgYAotCi1TaW5j
ZSBgRm9vVGVzdC5BYmNEZWF0aFRlc3RgIG5lZWRzIHRvIHJ1biBiZWZvcmUgYEJhclRlc3QuWHl6
YCwgYW5kIHdlIGRvbid0Ci1pbnRlcmxlYXZlIHRlc3RzIGZyb20gZGlmZmVyZW50IHRlc3QgY2Fz
ZXMsIHdlIG5lZWQgdG8gcnVuIGFsbCB0ZXN0cyBpbiB0aGUKLWBGb29UZXN0YCBjYXNlIGJlZm9y
ZSBydW5uaW5nIGFueSB0ZXN0IGluIHRoZSBgQmFyVGVzdGAgY2FzZS4gVGhpcyBjb250cmFkaWN0
cwotd2l0aCB0aGUgcmVxdWlyZW1lbnQgdG8gcnVuIGBCYXJUZXN0LkRlZkRlYXRoVGVzdGAgYmVm
b3JlIGBGb29UZXN0LlV2d2AuCi0KLSMjIEJ1dCBJIGRvbid0IGxpa2UgY2FsbGluZyBteSBlbnRp
cmUgdGVzdCBjYXNlIEZPT0RlYXRoVGVzdCB3aGVuIGl0IGNvbnRhaW5zIGJvdGggZGVhdGggdGVz
dHMgYW5kIG5vbi1kZWF0aCB0ZXN0cy4gV2hhdCBkbyBJIGRvPyAjIwotCi1Zb3UgZG9uJ3QgaGF2
ZSB0bywgYnV0IGlmIHlvdSBsaWtlLCB5b3UgbWF5IHNwbGl0IHVwIHRoZSB0ZXN0IGNhc2UgaW50
bwotYEZvb1Rlc3RgIGFuZCBgRm9vRGVhdGhUZXN0YCwgd2hlcmUgdGhlIG5hbWVzIG1ha2UgaXQg
Y2xlYXIgdGhhdCB0aGV5IGFyZQotcmVsYXRlZDoKLQotYGBgCi1jbGFzcyBGb29UZXN0IDogcHVi
bGljIDo6dGVzdGluZzo6VGVzdCB7IC4uLiB9OwotCi1URVNUX0YoRm9vVGVzdCwgQWJjKSB7IC4u
LiB9Ci1URVNUX0YoRm9vVGVzdCwgRGVmKSB7IC4uLiB9Ci0KLXR5cGVkZWYgRm9vVGVzdCBGb29E
ZWF0aFRlc3Q7Ci0KLVRFU1RfRihGb29EZWF0aFRlc3QsIFV2dykgeyAuLi4gRVhQRUNUX0RFQVRI
KC4uLikgLi4uIH0KLVRFU1RfRihGb29EZWF0aFRlc3QsIFh5eikgeyAuLi4gQVNTRVJUX0RFQVRI
KC4uLikgLi4uIH0KLWBgYAotCi0jIyBUaGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0ICJubyBt
YXRjaCBmb3IgJ29wZXJhdG9yPDwnIiB3aGVuIEkgdXNlIGFuIGFzc2VydGlvbi4gV2hhdCBnaXZl
cz8gIyMKLQotSWYgeW91IHVzZSBhIHVzZXItZGVmaW5lZCB0eXBlIGBGb29UeXBlYCBpbiBhbiBh
c3NlcnRpb24sIHlvdSBtdXN0IG1ha2Ugc3VyZQotdGhlcmUgaXMgYW4gYHN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25zdCBGb29UeXBlJilgIGZ1bmN0aW9uCi1kZWZp
bmVkIHN1Y2ggdGhhdCB3ZSBjYW4gcHJpbnQgYSB2YWx1ZSBvZiBgRm9vVHlwZWAuCi0KLUluIGFk
ZGl0aW9uLCBpZiBgRm9vVHlwZWAgaXMgZGVjbGFyZWQgaW4gYSBuYW1lIHNwYWNlLCB0aGUgYDw8
YCBvcGVyYXRvciBhbHNvCi1uZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoZSBfc2FtZV8gbmFtZSBz
cGFjZS4KLQotIyMgSG93IGRvIEkgc3VwcHJlc3MgdGhlIG1lbW9yeSBsZWFrIG1lc3NhZ2VzIG9u
IFdpbmRvd3M/ICMjCi0KLVNpbmNlIHRoZSBzdGF0aWNhbGx5IGluaXRpYWxpemVkIEdvb2dsZSBU
ZXN0IHNpbmdsZXRvbiByZXF1aXJlcyBhbGxvY2F0aW9ucyBvbgotdGhlIGhlYXAsIHRoZSBWaXN1
YWwgQysrIG1lbW9yeSBsZWFrIGRldGVjdG9yIHdpbGwgcmVwb3J0IG1lbW9yeSBsZWFrcyBhdCB0
aGUKLWVuZCBvZiB0aGUgcHJvZ3JhbSBydW4uIFRoZSBlYXNpZXN0IHdheSB0byBhdm9pZCB0aGlz
IGlzIHRvIHVzZSB0aGUKLWBfQ3J0TWVtQ2hlY2twb2ludGAgYW5kIGBfQ3J0TWVtRHVtcEFsbE9i
amVjdHNTaW5jZWAgY2FsbHMgdG8gbm90IHJlcG9ydCBhbnkKLXN0YXRpY2FsbHkgaW5pdGlhbGl6
ZWQgaGVhcCBvYmplY3RzLiBTZWUgTVNETiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBhZGRpdGlvbmFs
Ci1oZWFwIGNoZWNrL2RlYnVnIHJvdXRpbmVzLgotCi0jIyBJIGFtIGJ1aWxkaW5nIG15IHByb2pl
Y3Qgd2l0aCBHb29nbGUgVGVzdCBpbiBWaXN1YWwgU3R1ZGlvIGFuZCBhbGwgSSdtIGdldHRpbmcg
aXMgYSBidW5jaCBvZiBsaW5rZXIgZXJyb3JzIChvciB3YXJuaW5ncykuIEhlbHAhICMjCi0KLVlv
dSBtYXkgZ2V0IGEgbnVtYmVyIG9mIHRoZSBmb2xsb3dpbmcgbGlua2VyIGVycm9yIG9yIHdhcm5p
bmdzIGlmIHlvdQotYXR0ZW1wdCB0byBsaW5rIHlvdXIgdGVzdCBwcm9qZWN0IHdpdGggdGhlIEdv
b2dsZSBUZXN0IGxpYnJhcnkgd2hlbgoteW91ciBwcm9qZWN0IGFuZCB0aGUgYXJlIG5vdCBidWls
dCB1c2luZyB0aGUgc2FtZSBjb21waWxlciBzZXR0aW5ncy4KLQotICAqIExOSzIwMDU6IHN5bWJv
bCBhbHJlYWR5IGRlZmluZWQgaW4gb2JqZWN0Ci0gICogTE5LNDIxNzogbG9jYWxseSBkZWZpbmVk
IHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZCBpbiBmdW5jdGlvbiAnZnVuY3Rpb24nCi0gICogTE5L
NDA0OTogbG9jYWxseSBkZWZpbmVkIHN5bWJvbCAnc3ltYm9sJyBpbXBvcnRlZAotCi1UaGUgR29v
Z2xlIFRlc3QgcHJvamVjdCAoZ3Rlc3QudmNwcm9qKSBoYXMgdGhlIFJ1bnRpbWUgTGlicmFyeSBv
cHRpb24KLXNldCB0byAvTVQgKHVzZSBtdWx0aS10aHJlYWRlZCBzdGF0aWMgbGlicmFyaWVzLCAv
TVRkIGZvciBkZWJ1ZykuIElmCi15b3VyIHByb2plY3QgdXNlcyBzb21ldGhpbmcgZWxzZSwgZm9y
IGV4YW1wbGUgL01EICh1c2UgbXVsdGktdGhyZWFkZWQKLURMTHMsIC9NRGQgZm9yIGRlYnVnKSwg
eW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIGluIHRoZSBHb29nbGUKLVRlc3QgcHJvamVj
dCB0byBtYXRjaCB5b3VyIHByb2plY3Qncy4KLQotVG8gdXBkYXRlIHRoaXMgc2V0dGluZyBvcGVu
IHRoZSBwcm9qZWN0IHByb3BlcnRpZXMgaW4gdGhlIFZpc3VhbAotU3R1ZGlvIElERSB0aGVuIHNl
bGVjdCB0aGUgYnJhbmNoIENvbmZpZ3VyYXRpb24gUHJvcGVydGllcyB8IEMvQysrIHwKLUNvZGUg
R2VuZXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBvcHRpb24gIlJ1bnRpbWUgTGlicmFyeSIuICBZb3Ug
bWF5IGFsc28gdHJ5Ci11c2luZyBndGVzdC1tZC52Y3Byb2ogaW5zdGVhZCBvZiBndGVzdC52Y3By
b2ouCi0KLSMjIEkgcHV0IG15IHRlc3RzIGluIGEgbGlicmFyeSBhbmQgR29vZ2xlIFRlc3QgZG9l
c24ndCBydW4gdGhlbS4gV2hhdCdzIGhhcHBlbmluZz8gIyMKLUhhdmUgeW91IHJlYWQgYQotW3dh
cm5pbmddKFYxXzdfUHJpbWVyLm1kI2ltcG9ydGFudC1ub3RlLWZvci12aXN1YWwtYy11c2Vycykg
b24KLXRoZSBHb29nbGUgVGVzdCBQcmltZXIgcGFnZT8KLQotIyMgSSB3YW50IHRvIHVzZSBHb29n
bGUgVGVzdCB3aXRoIFZpc3VhbCBTdHVkaW8gYnV0IGRvbid0IGtub3cgd2hlcmUgdG8gc3RhcnQu
ICMjCi1NYW55IHBlb3BsZSBhcmUgaW4geW91ciBwb3NpdGlvbiBhbmQgb25lIG9mIHRoZSBwb3N0
ZWQgaGlzIHNvbHV0aW9uIHRvCi1vdXIgbWFpbGluZyBsaXN0LiBIZXJlIGlzIGhpcyBsaW5rOgot
aHR0cDovL2hhc3NhbmphbWlsYWhtYWQuYmxvZ3Nwb3QuY29tLzIwMDkvMDcvZ3Rlc3Qtc3RhcnRl
cnMtaGVscC5odG1sLgotCi0jIyBJIGFtIHNlZWluZyBjb21waWxlIGVycm9ycyBtZW50aW9uaW5n
IHN0ZDo6dHlwZVxfdHJhaXRzIHdoZW4gSSB0cnkgdG8gdXNlIEdvb2dsZSBUZXN0IG9uIFNvbGFy
aXMuICMjCi1Hb29nbGUgVGVzdCB1c2VzIHBhcnRzIG9mIHRoZSBzdGFuZGFyZCBDKysgbGlicmFy
eSB0aGF0IFN1blN0dWRpbyBkb2VzIG5vdCBzdXBwb3J0LgotT3VyIHVzZXJzIHJlcG9ydGVkIHN1
Y2Nlc3MgdXNpbmcgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zLiBUcnkgcnVubmluZyB0aGUg
YnVpbGQgYWZ0ZXIgcnVuaW5nIHRoaXMgY29tbWFkOgotCi1gZXhwb3J0IENDPWNjIENYWD1DQyBD
WFhGTEFHUz0nLWxpYnJhcnk9c3RscG9ydDQnYAotCi0jIyBIb3cgY2FuIG15IGNvZGUgZGV0ZWN0
IGlmIGl0IGlzIHJ1bm5pbmcgaW4gYSB0ZXN0PyAjIwotCi1JZiB5b3Ugd3JpdGUgY29kZSB0aGF0
IHNuaWZmcyB3aGV0aGVyIGl0J3MgcnVubmluZyBpbiBhIHRlc3QgYW5kIGRvZXMKLWRpZmZlcmVu
dCB0aGluZ3MgYWNjb3JkaW5nbHksIHlvdSBhcmUgbGVha2luZyB0ZXN0LW9ubHkgbG9naWMgaW50
bwotcHJvZHVjdGlvbiBjb2RlIGFuZCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBlbnN1cmUgdGhh
dCB0aGUgdGVzdC1vbmx5Ci1jb2RlIHBhdGhzIGFyZW4ndCBydW4gYnkgbWlzdGFrZSBpbiBwcm9k
dWN0aW9uLiAgU3VjaCBjbGV2ZXJuZXNzIGFsc28KLWxlYWRzIHRvCi1bSGVpc2VuYnVnc10oaHR0
cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbnVzdWFsX3NvZnR3YXJlX2J1ZyNIZWlzZW5idWcp
LgotVGhlcmVmb3JlIHdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHRoZSBwcmFjdGljZSwgYW5k
IEdvb2dsZSBUZXN0IGRvZXNuJ3QKLXByb3ZpZGUgYSB3YXkgdG8gZG8gaXQuCi0KLUluIGdlbmVy
YWwsIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gY2F1c2UgdGhlIGNvZGUgdG8gYmVoYXZlCi1kaWZm
ZXJlbnRseSB1bmRlciB0ZXN0IGlzIFtkZXBlbmRlbmN5IGluamVjdGlvbl0oaHR0cDovL2phbWVz
c2hvcmUuY29tL0Jsb2cvRGVwZW5kZW5jeS1JbmplY3Rpb24tRGVteXN0aWZpZWQuaHRtbCkuCi1Z
b3UgY2FuIGluamVjdCBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSB0ZXN0IGFuZCBm
cm9tIHRoZQotcHJvZHVjdGlvbiBjb2RlLiAgU2luY2UgeW91ciBwcm9kdWN0aW9uIGNvZGUgZG9l
c24ndCBsaW5rIGluIHRoZQotZm9yLXRlc3QgbG9naWMgYXQgYWxsLCB0aGVyZSBpcyBubyBkYW5n
ZXIgaW4gYWNjaWRlbnRhbGx5IHJ1bm5pbmcgaXQuCi0KLUhvd2V2ZXIsIGlmIHlvdSBfcmVhbGx5
XywgX3JlYWxseV8sIF9yZWFsbHlfIGhhdmUgbm8gY2hvaWNlLCBhbmQgaWYKLXlvdSBmb2xsb3cg
dGhlIHJ1bGUgb2YgZW5kaW5nIHlvdXIgdGVzdCBwcm9ncmFtIG5hbWVzIHdpdGggYF90ZXN0YCwK
LXlvdSBjYW4gdXNlIHRoZSBfaG9ycmlibGVfIGhhY2sgb2Ygc25pZmZpbmcgeW91ciBleGVjdXRh
YmxlIG5hbWUKLShgYXJndlswXWAgaW4gYG1haW4oKWApIHRvIGtub3cgd2hldGhlciB0aGUgY29k
ZSBpcyB1bmRlciB0ZXN0LgotCi0jIyBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbWFjcm8gdGhhdCBj
bGFzaGVzIHdpdGggb25lIGRlZmluZWQgYnkgYW5vdGhlciBsaWJyYXJ5LiBIb3cgZG8gSSBkZWFs
IHdpdGggdGhhdD8gIyMKLQotSW4gQysrLCBtYWNyb3MgZG9uJ3Qgb2JleSBuYW1lc3BhY2VzLiAg
VGhlcmVmb3JlIHR3byBsaWJyYXJpZXMgdGhhdAotYm90aCBkZWZpbmUgYSBtYWNybyBvZiB0aGUg
c2FtZSBuYW1lIHdpbGwgY2xhc2ggaWYgeW91IGAjaW5jbHVkZWAgYm90aAotZGVmaW5pdGlvbnMu
ICBJbiBjYXNlIGEgR29vZ2xlIFRlc3QgbWFjcm8gY2xhc2hlcyB3aXRoIGFub3RoZXIKLWxpYnJh
cnksIHlvdSBjYW4gZm9yY2UgR29vZ2xlIFRlc3QgdG8gcmVuYW1lIGl0cyBtYWNybyB0byBhdm9p
ZCB0aGUKLWNvbmZsaWN0LgotCi1TcGVjaWZpY2FsbHksIGlmIGJvdGggR29vZ2xlIFRlc3QgYW5k
IHNvbWUgb3RoZXIgY29kZSBkZWZpbmUgbWFjcm8KLWBGT09gLCB5b3UgY2FuIGFkZAotYGBgCi0g
IC1ER1RFU1RfRE9OVF9ERUZJTkVfRk9PPTEKLWBgYAotdG8gdGhlIGNvbXBpbGVyIGZsYWdzIHRv
IHRlbGwgR29vZ2xlIFRlc3QgdG8gY2hhbmdlIHRoZSBtYWNybydzIG5hbWUKLWZyb20gYEZPT2Ag
dG8gYEdURVNUX0ZPT2AuIEZvciBleGFtcGxlLCB3aXRoIGAtREdURVNUX0RPTlRfREVGSU5FX1RF
U1Q9MWAsIHlvdSdsbCBuZWVkIHRvIHdyaXRlCi1gYGAKLSAgR1RFU1RfVEVTVChTb21lVGVzdCwg
RG9lc1RoaXMpIHsgLi4uIH0KLWBgYAotaW5zdGVhZCBvZgotYGBgCi0gIFRFU1QoU29tZVRlc3Qs
IERvZXNUaGlzKSB7IC4uLiB9Ci1gYGAKLWluIG9yZGVyIHRvIGRlZmluZSBhIHRlc3QuCi0KLUN1
cnJlbnRseSwgdGhlIGZvbGxvd2luZyBgVEVTVGAsIGBGQUlMYCwgYFNVQ0NFRURgLCBhbmQgdGhl
IGJhc2ljIGNvbXBhcmlzb24gYXNzZXJ0aW9uIG1hY3JvcyBjYW4gaGF2ZSBhbHRlcm5hdGl2ZSBu
YW1lcy4gWW91IGNhbiBzZWUgdGhlIGZ1bGwgbGlzdCBvZiBjb3ZlcmVkIG1hY3JvcyBbaGVyZV0o
aHR0cDovL3d3dy5nb29nbGUuY29tL2NvZGVzZWFyY2g/cT1pZishR1RFU1RfRE9OVF9ERUZJTkVf
XHclMkIrcGFja2FnZTpodHRwOi8vZ29vZ2xldGVzdFwuZ29vZ2xlY29kZVwuY29tK2ZpbGU6L2lu
Y2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCkuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRo
ZSAiQXZvaWRpbmcgTWFjcm8gTmFtZSBDbGFzaGVzIiBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZmls
ZS4KLQotCi0jIyBJcyBpdCBPSyBpZiBJIGhhdmUgdHdvIHNlcGFyYXRlIGBURVNUKEZvbywgQmFy
KWAgdGVzdCBtZXRob2RzIGRlZmluZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXM/ICMjCi0KLVll
cy4KLQotVGhlIHJ1bGUgaXMgKiphbGwgdGVzdCBtZXRob2RzIGluIHRoZSBzYW1lIHRlc3QgY2Fz
ZSBtdXN0IHVzZSB0aGUgc2FtZSBmaXh0dXJlIGNsYXNzKiouIFRoaXMgbWVhbnMgdGhhdCB0aGUg
Zm9sbG93aW5nIGlzICoqYWxsb3dlZCoqIGJlY2F1c2UgYm90aCB0ZXN0cyB1c2UgdGhlIHNhbWUg
Zml4dHVyZSBjbGFzcyAoYDo6dGVzdGluZzo6VGVzdGApLgotCi1gYGAKLW5hbWVzcGFjZSBmb28g
ewotVEVTVChDb29sVGVzdCwgRG9Tb21ldGhpbmcpIHsKLSAgU1VDQ0VFRCgpOwotfQotfSAgLy8g
bmFtZXNwYWNlIGZvbwotCi1uYW1lc3BhY2UgYmFyIHsKLVRFU1QoQ29vbFRlc3QsIERvU29tZXRo
aW5nKSB7Ci0gIFNVQ0NFRUQoKTsKLX0KLX0gIC8vIG5hbWVzcGFjZSBmb28KLWBgYAotCi1Ib3dl
dmVyLCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgKipub3QgYWxsb3dlZCoqIGFuZCB3aWxsIHByb2R1
Y2UgYSBydW50aW1lIGVycm9yIGZyb20gR29vZ2xlIFRlc3QgYmVjYXVzZSB0aGUgdGVzdCBtZXRo
b2RzIGFyZSB1c2luZyBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMgd2l0aCB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgbmFtZS4KLQotYGBgCi1uYW1lc3BhY2UgZm9vIHsKLWNsYXNzIENvb2xUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7fTsgIC8vIEZpeHR1cmUgZm9vOjpDb29sVGVzdAot
VEVTVF9GKENvb2xUZXN0LCBEb1NvbWV0aGluZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBu
YW1lc3BhY2UgZm9vCi0KLW5hbWVzcGFjZSBiYXIgewotY2xhc3MgQ29vbFRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OyAgLy8gRml4dHVyZTogYmFyOjpDb29sVGVzdAotVEVTVF9GKENv
b2xUZXN0LCBEb1NvbWV0aGluZykgewotICBTVUNDRUVEKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2Ug
Zm9vCi1gYGAKLQotIyMgSG93IGRvIEkgYnVpbGQgR29vZ2xlIFRlc3RpbmcgRnJhbWV3b3JrIHdp
dGggWGNvZGUgND8gIyMKLQotSWYgeW91IHRyeSB0byBidWlsZCBHb29nbGUgVGVzdCdzIFhjb2Rl
IHByb2plY3Qgd2l0aCBYY29kZSA0LjAgb3IgbGF0ZXIsIHlvdSBtYXkgZW5jb3VudGVyIGFuIGVy
cm9yIG1lc3NhZ2UgdGhhdCBsb29rcyBsaWtlCi0iTWlzc2luZyBTREsgaW4gdGFyZ2V0IGd0ZXN0
XF9mcmFtZXdvcms6IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsiLiBUaGF0IG1lYW5z
IHRoYXQgWGNvZGUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgU0RLIHRoZSBwcm9qZWN0IGlzIHRhcmdl
dGluZy4gU2VlIHRoZSBYY29kZSBzZWN0aW9uIGluIHRoZSBbUkVBRE1FXSguLi8uLi9SRUFETUUu
TUQpIGZpbGUgb24gaG93IHRvIHJlc29sdmUgdGhpcy4KLQotIyMgTXkgcXVlc3Rpb24gaXMgbm90
IGNvdmVyZWQgaW4geW91ciBGQVEhICMjCi0KLUlmIHlvdSBjYW5ub3QgZmluZCB0aGUgYW5zd2Vy
IHRvIHlvdXIgcXVlc3Rpb24gaW4gdGhpcyBGQVEsIHRoZXJlIGFyZQotc29tZSBvdGhlciByZXNv
dXJjZXMgeW91IGNhbiB1c2U6Ci0KLSAgMS4gcmVhZCBvdGhlciBbd2lraSBwYWdlc10oaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRlc3Qvdy9saXN0KSwKLSAgMS4gc2VhcmNoIHRoZSBt
YWlsaW5nIGxpc3QgW2FyY2hpdmVdKGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9nb29n
bGV0ZXN0ZnJhbWV3b3JrL3RvcGljcyksCi0gIDEuIGFzayBpdCBvbiBbZ29vZ2xldGVzdGZyYW1l
d29ya0Bnb29nbGVncm91cHMuY29tXShtYWlsdG86Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tKSBhbmQgc29tZW9uZSB3aWxsIGFuc3dlciBpdCAodG8gcHJldmVudCBzcGFtLCB3
ZSByZXF1aXJlIHlvdSB0byBqb2luIHRoZSBbZGlzY3Vzc2lvbiBncm91cF0oaHR0cDovL2dyb3Vw
cy5nb29nbGUuY29tL2dyb3VwL2dvb2dsZXRlc3RmcmFtZXdvcmspIGJlZm9yZSB5b3UgY2FuIHBv
c3QuKS4KLQotUGxlYXNlIG5vdGUgdGhhdCBjcmVhdGluZyBhbiBpc3N1ZSBpbiB0aGUKLVtpc3N1
ZSB0cmFja2VyXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC9pc3N1ZXMvbGlz
dCkgaXMgX25vdF8KLWEgZ29vZCB3YXkgdG8gZ2V0IHlvdXIgYW5zd2VyLCBhcyBpdCBpcyBtb25p
dG9yZWQgaW5mcmVxdWVudGx5IGJ5IGEKLXZlcnkgc21hbGwgbnVtYmVyIG9mIHBlb3BsZS4KLQot
V2hlbiBhc2tpbmcgYSBxdWVzdGlvbiwgaXQncyBoZWxwZnVsIHRvIHByb3ZpZGUgYXMgbXVjaCBv
ZiB0aGUKLWZvbGxvd2luZyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSAocGVvcGxlIGNhbm5vdCBo
ZWxwIHlvdSBpZiB0aGVyZSdzCi1ub3QgZW5vdWdoIGluZm9ybWF0aW9uIGluIHlvdXIgcXVlc3Rp
b24pOgotCi0gICogdGhlIHZlcnNpb24gKG9yIHRoZSByZXZpc2lvbiBudW1iZXIgaWYgeW91IGNo
ZWNrIG91dCBmcm9tIFNWTiBkaXJlY3RseSkgb2YgR29vZ2xlIFRlc3QgeW91IHVzZSAoR29vZ2xl
IFRlc3QgaXMgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50LCBzbyBpdCdzIHBvc3NpYmxlIHRoYXQg
eW91ciBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBpbiBhIGxhdGVyIHZlcnNpb24pLAotICAqIHlv
dXIgb3BlcmF0aW5nIHN5c3RlbSwKLSAgKiB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiB5b3VyIGNv
bXBpbGVyLAotICAqIHRoZSBjb21wbGV0ZSBjb21tYW5kIGxpbmUgZmxhZ3MgeW91IGdpdmUgdG8g
eW91ciBjb21waWxlciwKLSAgKiB0aGUgY29tcGxldGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZXMg
KGlmIHRoZSBxdWVzdGlvbiBpcyBhYm91dCBjb21waWxhdGlvbiksCi0gICogdGhlIF9hY3R1YWxf
IGNvZGUgKGlkZWFsbHksIGEgbWluaW1hbCBidXQgY29tcGxldGUgcHJvZ3JhbSkgdGhhdCBoYXMg
dGhlIHByb2JsZW0geW91IGVuY291bnRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3Mv
VjFfN19QcmltZXIubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfUHJpbWVyLm1kCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTgyN2M3MzU1ODEuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9kb2NzL1YxXzdfUHJpbWVyLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNTAxICsw
LDAgQEAKLQotCi0jIEludHJvZHVjdGlvbjogV2h5IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdv
cms/ICMKLQotX0dvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmtfIGhlbHBzIHlvdSB3cml0ZSBi
ZXR0ZXIgQysrIHRlc3RzLgotCi1ObyBtYXR0ZXIgd2hldGhlciB5b3Ugd29yayBvbiBMaW51eCwg
V2luZG93cywgb3IgYSBNYWMsIGlmIHlvdSB3cml0ZSBDKysgY29kZSwKLUdvb2dsZSBUZXN0IGNh
biBoZWxwIHlvdS4KLQotU28gd2hhdCBtYWtlcyBhIGdvb2QgdGVzdCwgYW5kIGhvdyBkb2VzIEdv
b2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgZml0IGluPyBXZSBiZWxpZXZlOgotICAxLiBUZXN0
cyBzaG91bGQgYmUgX2luZGVwZW5kZW50XyBhbmQgX3JlcGVhdGFibGVfLiBJdCdzIGEgcGFpbiB0
byBkZWJ1ZyBhIHRlc3QgdGhhdCBzdWNjZWVkcyBvciBmYWlscyBhcyBhIHJlc3VsdCBvZiBvdGhl
ciB0ZXN0cy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgaXNvbGF0ZXMgdGhlIHRlc3Rz
IGJ5IHJ1bm5pbmcgZWFjaCBvZiB0aGVtIG9uIGEgZGlmZmVyZW50IG9iamVjdC4gV2hlbiBhIHRl
c3QgZmFpbHMsIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgYWxsb3dzIHlvdSB0byBydW4g
aXQgaW4gaXNvbGF0aW9uIGZvciBxdWljayBkZWJ1Z2dpbmcuCi0gIDEuIFRlc3RzIHNob3VsZCBi
ZSB3ZWxsIF9vcmdhbml6ZWRfIGFuZCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3Rl
ZCBjb2RlLiAgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBncm91cHMgcmVsYXRlZCB0ZXN0
cyBpbnRvIHRlc3QgY2FzZXMgdGhhdCBjYW4gc2hhcmUgZGF0YSBhbmQgc3Vicm91dGluZXMuIFRo
aXMgY29tbW9uIHBhdHRlcm4gaXMgZWFzeSB0byByZWNvZ25pemUgYW5kIG1ha2VzIHRlc3RzIGVh
c3kgdG8gbWFpbnRhaW4uIFN1Y2ggY29uc2lzdGVuY3kgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdo
ZW4gcGVvcGxlIHN3aXRjaCBwcm9qZWN0cyBhbmQgc3RhcnQgdG8gd29yayBvbiBhIG5ldyBjb2Rl
IGJhc2UuCi0gIDEuIFRlc3RzIHNob3VsZCBiZSBfcG9ydGFibGVfIGFuZCBfcmV1c2FibGVfLiBU
aGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5IGhhcyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgcGxhdGZv
cm0tbmV1dHJhbCwgaXRzIHRlc3RzIHNob3VsZCBhbHNvIGJlIHBsYXRmb3JtLW5ldXRyYWwuICBH
b29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHdvcmtzIG9uIGRpZmZlcmVudCBPU2VzLCB3aXRo
IGRpZmZlcmVudCBjb21waWxlcnMgKGdjYywgTVNWQywgYW5kIG90aGVycyksIHdpdGggb3Igd2l0
aG91dCBleGNlcHRpb25zLCBzbyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIHRlc3RzIGNh
biBlYXNpbHkgd29yayB3aXRoIGEgdmFyaWV0eSBvZiBjb25maWd1cmF0aW9ucy4gIChOb3RlIHRo
YXQgdGhlIGN1cnJlbnQgcmVsZWFzZSBvbmx5IGNvbnRhaW5zIGJ1aWxkIHNjcmlwdHMgZm9yIExp
bnV4IC0gd2UgYXJlIGFjdGl2ZWx5IHdvcmtpbmcgb24gc2NyaXB0cyBmb3Igb3RoZXIgcGxhdGZv
cm1zLikKLSAgMS4gV2hlbiB0ZXN0cyBmYWlsLCB0aGV5IHNob3VsZCBwcm92aWRlIGFzIG11Y2gg
X2luZm9ybWF0aW9uXyBhYm91dCB0aGUgcHJvYmxlbSBhcyBwb3NzaWJsZS4gR29vZ2xlIEMrKyBU
ZXN0aW5nIEZyYW1ld29yayBkb2Vzbid0IHN0b3AgYXQgdGhlIGZpcnN0IHRlc3QgZmFpbHVyZS4g
SW5zdGVhZCwgaXQgb25seSBzdG9wcyB0aGUgY3VycmVudCB0ZXN0IGFuZCBjb250aW51ZXMgd2l0
aCB0aGUgbmV4dC4gWW91IGNhbiBhbHNvIHNldCB1cCB0ZXN0cyB0aGF0IHJlcG9ydCBub24tZmF0
YWwgZmFpbHVyZXMgYWZ0ZXIgd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBjb250aW51ZXMuIFRodXMs
IHlvdSBjYW4gZGV0ZWN0IGFuZCBmaXggbXVsdGlwbGUgYnVncyBpbiBhIHNpbmdsZSBydW4tZWRp
dC1jb21waWxlIGN5Y2xlLgotICAxLiBUaGUgdGVzdGluZyBmcmFtZXdvcmsgc2hvdWxkIGxpYmVy
YXRlIHRlc3Qgd3JpdGVycyBmcm9tIGhvdXNla2VlcGluZyBjaG9yZXMgYW5kIGxldCB0aGVtIGZv
Y3VzIG9uIHRoZSB0ZXN0IF9jb250ZW50Xy4gIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
YXV0b21hdGljYWxseSBrZWVwcyB0cmFjayBvZiBhbGwgdGVzdHMgZGVmaW5lZCwgYW5kIGRvZXNu
J3QgcmVxdWlyZSB0aGUgdXNlciB0byBlbnVtZXJhdGUgdGhlbSBpbiBvcmRlciB0byBydW4gdGhl
bS4KLSAgMS4gVGVzdHMgc2hvdWxkIGJlIF9mYXN0Xy4gV2l0aCBHb29nbGUgQysrIFRlc3Rpbmcg
RnJhbWV3b3JrLCB5b3UgY2FuIHJldXNlIHNoYXJlZCByZXNvdXJjZXMgYWNyb3NzIHRlc3RzIGFu
ZCBwYXkgZm9yIHRoZSBzZXQtdXAvdGVhci1kb3duIG9ubHkgb25jZSwgd2l0aG91dCBtYWtpbmcg
dGVzdHMgZGVwZW5kIG9uIGVhY2ggb3RoZXIuCi0KLVNpbmNlIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsgaXMgYmFzZWQgb24gdGhlIHBvcHVsYXIgeFVuaXQKLWFyY2hpdGVjdHVyZSwgeW91
J2xsIGZlZWwgcmlnaHQgYXQgaG9tZSBpZiB5b3UndmUgdXNlZCBKVW5pdCBvciBQeVVuaXQgYmVm
b3JlLgotSWYgbm90LCBpdCB3aWxsIHRha2UgeW91IGFib3V0IDEwIG1pbnV0ZXMgdG8gbGVhcm4g
dGhlIGJhc2ljcyBhbmQgZ2V0IHN0YXJ0ZWQuCi1TbyBsZXQncyBnbyEKLQotX05vdGU6XyBXZSBz
b21ldGltZXMgcmVmZXIgdG8gR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayBpbmZvcm1hbGx5
Ci1hcyBfR29vZ2xlIFRlc3RfLgotCi0jIFNldHRpbmcgdXAgYSBOZXcgVGVzdCBQcm9qZWN0ICMK
LQotVG8gd3JpdGUgYSB0ZXN0IHByb2dyYW0gdXNpbmcgR29vZ2xlIFRlc3QsIHlvdSBuZWVkIHRv
IGNvbXBpbGUgR29vZ2xlCi1UZXN0IGludG8gYSBsaWJyYXJ5IGFuZCBsaW5rIHlvdXIgdGVzdCB3
aXRoIGl0LiAgV2UgcHJvdmlkZSBidWlsZAotZmlsZXMgZm9yIHNvbWUgcG9wdWxhciBidWlsZCBz
eXN0ZW1zOiBgbXN2Yy9gIGZvciBWaXN1YWwgU3R1ZGlvLAotYHhjb2RlL2AgZm9yIE1hYyBYY29k
ZSwgYG1ha2UvYCBmb3IgR05VIG1ha2UsIGBjb2RlZ2Vhci9gIGZvciBCb3JsYW5kCi1DKysgQnVp
bGRlciwgYW5kIHRoZSBhdXRvdG9vbHMgc2NyaXB0IChkZXByZWNhdGVkKSBhbmQKLWBDTWFrZUxp
c3RzLnR4dGAgZm9yIENNYWtlIChyZWNvbW1lbmRlZCkgaW4gdGhlIEdvb2dsZSBUZXN0IHJvb3QK
LWRpcmVjdG9yeS4gIElmIHlvdXIgYnVpbGQgc3lzdGVtIGlzIG5vdCBvbiB0aGlzIGxpc3QsIHlv
dSBjYW4gdGFrZSBhCi1sb29rIGF0IGBtYWtlL01ha2VmaWxlYCB0byBsZWFybiBob3cgR29vZ2xl
IFRlc3Qgc2hvdWxkIGJlIGNvbXBpbGVkCi0oYmFzaWNhbGx5IHlvdSB3YW50IHRvIGNvbXBpbGUg
YHNyYy9ndGVzdC1hbGwuY2NgIHdpdGggYEdURVNUX1JPT1RgCi1hbmQgYEdURVNUX1JPT1QvaW5j
bHVkZWAgaW4gdGhlIGhlYWRlciBzZWFyY2ggcGF0aCwgd2hlcmUgYEdURVNUX1JPT1RgCi1pcyB0
aGUgR29vZ2xlIFRlc3Qgcm9vdCBkaXJlY3RvcnkpLgotCi1PbmNlIHlvdSBhcmUgYWJsZSB0byBj
b21waWxlIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCB5b3Ugc2hvdWxkCi1jcmVhdGUgYSBwcm9q
ZWN0IG9yIGJ1aWxkIHRhcmdldCBmb3IgeW91ciB0ZXN0IHByb2dyYW0uICBNYWtlIHN1cmUgeW91
Ci1oYXZlIGBHVEVTVF9ST09UL2luY2x1ZGVgIGluIHRoZSBoZWFkZXIgc2VhcmNoIHBhdGggc28g
dGhhdCB0aGUKLWNvbXBpbGVyIGNhbiBmaW5kIGAiZ3Rlc3QvZ3Rlc3QuaCJgIHdoZW4gY29tcGls
aW5nIHlvdXIgdGVzdC4gIFNldCB1cAoteW91ciB0ZXN0IHByb2plY3QgdG8gbGluayB3aXRoIHRo
ZSBHb29nbGUgVGVzdCBsaWJyYXJ5IChmb3IgZXhhbXBsZSwKLWluIFZpc3VhbCBTdHVkaW8sIHRo
aXMgaXMgZG9uZSBieSBhZGRpbmcgYSBkZXBlbmRlbmN5IG9uCi1gZ3Rlc3QudmNwcm9qYCkuCi0K
LUlmIHlvdSBzdGlsbCBoYXZlIHF1ZXN0aW9ucywgdGFrZSBhIGxvb2sgYXQgaG93IEdvb2dsZSBU
ZXN0J3Mgb3duCi10ZXN0cyBhcmUgYnVpbHQgYW5kIHVzZSB0aGVtIGFzIGV4YW1wbGVzLgotCi0j
IEJhc2ljIENvbmNlcHRzICMKLQotV2hlbiB1c2luZyBHb29nbGUgVGVzdCwgeW91IHN0YXJ0IGJ5
IHdyaXRpbmcgX2Fzc2VydGlvbnNfLCB3aGljaCBhcmUgc3RhdGVtZW50cwotdGhhdCBjaGVjayB3
aGV0aGVyIGEgY29uZGl0aW9uIGlzIHRydWUuIEFuIGFzc2VydGlvbidzIHJlc3VsdCBjYW4gYmUg
X3N1Y2Nlc3NfLAotX25vbmZhdGFsIGZhaWx1cmVfLCBvciBfZmF0YWwgZmFpbHVyZV8uIElmIGEg
ZmF0YWwgZmFpbHVyZSBvY2N1cnMsIGl0IGFib3J0cwotdGhlIGN1cnJlbnQgZnVuY3Rpb247IG90
aGVyd2lzZSB0aGUgcHJvZ3JhbSBjb250aW51ZXMgbm9ybWFsbHkuCi0KLV9UZXN0c18gdXNlIGFz
c2VydGlvbnMgdG8gdmVyaWZ5IHRoZSB0ZXN0ZWQgY29kZSdzIGJlaGF2aW9yLiBJZiBhIHRlc3Qg
Y3Jhc2hlcwotb3IgaGFzIGEgZmFpbGVkIGFzc2VydGlvbiwgdGhlbiBpdCBfZmFpbHNfOyBvdGhl
cndpc2UgaXQgX3N1Y2NlZWRzXy4KLQotQSBfdGVzdCBjYXNlXyBjb250YWlucyBvbmUgb3IgbWFu
eSB0ZXN0cy4gWW91IHNob3VsZCBncm91cCB5b3VyIHRlc3RzIGludG8gdGVzdAotY2FzZXMgdGhh
dCByZWZsZWN0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRlc3RlZCBjb2RlLiBXaGVuIG11bHRpcGxl
IHRlc3RzIGluIGEKLXRlc3QgY2FzZSBuZWVkIHRvIHNoYXJlIGNvbW1vbiBvYmplY3RzIGFuZCBz
dWJyb3V0aW5lcywgeW91IGNhbiBwdXQgdGhlbSBpbnRvIGEKLV90ZXN0IGZpeHR1cmVfIGNsYXNz
LgotCi1BIF90ZXN0IHByb2dyYW1fIGNhbiBjb250YWluIG11bHRpcGxlIHRlc3QgY2FzZXMuCi0K
LVdlJ2xsIG5vdyBleHBsYWluIGhvdyB0byB3cml0ZSBhIHRlc3QgcHJvZ3JhbSwgc3RhcnRpbmcg
YXQgdGhlIGluZGl2aWR1YWwKLWFzc2VydGlvbiBsZXZlbCBhbmQgYnVpbGRpbmcgdXAgdG8gdGVz
dHMgYW5kIHRlc3QgY2FzZXMuCi0KLSMgQXNzZXJ0aW9ucyAjCi0KLUdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMgYXJlIG1hY3JvcyB0aGF0IHJlc2VtYmxlIGZ1bmN0aW9uIGNhbGxzLiBZb3UgdGVzdCBh
Ci1jbGFzcyBvciBmdW5jdGlvbiBieSBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBpdHMgYmVoYXZp
b3IuIFdoZW4gYW4gYXNzZXJ0aW9uCi1mYWlscywgR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSBhc3Nl
cnRpb24ncyBzb3VyY2UgZmlsZSBhbmQgbGluZSBudW1iZXIgbG9jYXRpb24sCi1hbG9uZyB3aXRo
IGEgZmFpbHVyZSBtZXNzYWdlLiBZb3UgbWF5IGFsc28gc3VwcGx5IGEgY3VzdG9tIGZhaWx1cmUg
bWVzc2FnZQotd2hpY2ggd2lsbCBiZSBhcHBlbmRlZCB0byBHb29nbGUgVGVzdCdzIG1lc3NhZ2Uu
Ci0KLVRoZSBhc3NlcnRpb25zIGNvbWUgaW4gcGFpcnMgdGhhdCB0ZXN0IHRoZSBzYW1lIHRoaW5n
IGJ1dCBoYXZlIGRpZmZlcmVudAotZWZmZWN0cyBvbiB0aGUgY3VycmVudCBmdW5jdGlvbi4gYEFT
U0VSVF8qYCB2ZXJzaW9ucyBnZW5lcmF0ZSBmYXRhbCBmYWlsdXJlcwotd2hlbiB0aGV5IGZhaWws
IGFuZCAqKmFib3J0IHRoZSBjdXJyZW50IGZ1bmN0aW9uKiouIGBFWFBFQ1RfKmAgdmVyc2lvbnMg
Z2VuZXJhdGUKLW5vbmZhdGFsIGZhaWx1cmVzLCB3aGljaCBkb24ndCBhYm9ydCB0aGUgY3VycmVu
dCBmdW5jdGlvbi4gVXN1YWxseSBgRVhQRUNUXypgCi1hcmUgcHJlZmVycmVkLCBhcyB0aGV5IGFs
bG93IG1vcmUgdGhhbiBvbmUgZmFpbHVyZXMgdG8gYmUgcmVwb3J0ZWQgaW4gYSB0ZXN0LgotSG93
ZXZlciwgeW91IHNob3VsZCB1c2UgYEFTU0VSVF8qYCBpZiBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gY29udGludWUgd2hlbgotdGhlIGFzc2VydGlvbiBpbiBxdWVzdGlvbiBmYWlscy4KLQotU2lu
Y2UgYSBmYWlsZWQgYEFTU0VSVF8qYCByZXR1cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24g
aW1tZWRpYXRlbHksCi1wb3NzaWJseSBza2lwcGluZyBjbGVhbi11cCBjb2RlIHRoYXQgY29tZXMg
YWZ0ZXIgaXQsIGl0IG1heSBjYXVzZSBhIHNwYWNlIGxlYWsuCi1EZXBlbmRpbmcgb24gdGhlIG5h
dHVyZSBvZiB0aGUgbGVhaywgaXQgbWF5IG9yIG1heSBub3QgYmUgd29ydGggZml4aW5nIC0gc28K
LWtlZXAgdGhpcyBpbiBtaW5kIGlmIHlvdSBnZXQgYSBoZWFwIGNoZWNrZXIgZXJyb3IgaW4gYWRk
aXRpb24gdG8gYXNzZXJ0aW9uCi1lcnJvcnMuCi0KLVRvIHByb3ZpZGUgYSBjdXN0b20gZmFpbHVy
ZSBtZXNzYWdlLCBzaW1wbHkgc3RyZWFtIGl0IGludG8gdGhlIG1hY3JvIHVzaW5nIHRoZQotYDw8
YCBvcGVyYXRvciwgb3IgYSBzZXF1ZW5jZSBvZiBzdWNoIG9wZXJhdG9ycy4gQW4gZXhhbXBsZToK
LWBgYAotQVNTRVJUX0VRKHguc2l6ZSgpLCB5LnNpemUoKSkgPDwgIlZlY3RvcnMgeCBhbmQgeSBh
cmUgb2YgdW5lcXVhbCBsZW5ndGgiOwotCi1mb3IgKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyAr
K2kpIHsKLSAgRVhQRUNUX0VRKHhbaV0sIHlbaV0pIDw8ICJWZWN0b3JzIHggYW5kIHkgZGlmZmVy
IGF0IGluZGV4ICIgPDwgaTsKLX0KLWBgYAotCi1Bbnl0aGluZyB0aGF0IGNhbiBiZSBzdHJlYW1l
ZCB0byBhbiBgb3N0cmVhbWAgY2FuIGJlIHN0cmVhbWVkIHRvIGFuIGFzc2VydGlvbgotbWFjcm8t
LWluIHBhcnRpY3VsYXIsIEMgc3RyaW5ncyBhbmQgYHN0cmluZ2Agb2JqZWN0cy4gSWYgYSB3aWRl
IHN0cmluZwotKGB3Y2hhcl90KmAsIGBUQ0hBUipgIGluIGBVTklDT0RFYCBtb2RlIG9uIFdpbmRv
d3MsIG9yIGBzdGQ6OndzdHJpbmdgKSBpcwotc3RyZWFtZWQgdG8gYW4gYXNzZXJ0aW9uLCBpdCB3
aWxsIGJlIHRyYW5zbGF0ZWQgdG8gVVRGLTggd2hlbiBwcmludGVkLgotCi0jIyBCYXNpYyBBc3Nl
cnRpb25zICMjCi0KLVRoZXNlIGFzc2VydGlvbnMgZG8gYmFzaWMgdHJ1ZS9mYWxzZSBjb25kaXRp
b24gdGVzdGluZy4KLXwgKipGYXRhbCBhc3NlcnRpb24qKiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9u
KiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18IGBBU1NFUlRfVFJVRShgX2NvbmRpdGlvbl9g
KWA7ICB8IGBFWFBFQ1RfVFJVRShgX2NvbmRpdGlvbl9gKWA7ICAgfCBfY29uZGl0aW9uXyBpcyB0
cnVlIHwKLXwgYEFTU0VSVF9GQUxTRShgX2NvbmRpdGlvbl9gKWA7IHwgYEVYUEVDVF9GQUxTRShg
X2NvbmRpdGlvbl9gKWA7ICB8IF9jb25kaXRpb25fIGlzIGZhbHNlIHwKLQotUmVtZW1iZXIsIHdo
ZW4gdGhleSBmYWlsLCBgQVNTRVJUXypgIHlpZWxkcyBhIGZhdGFsIGZhaWx1cmUgYW5kCi1yZXR1
cm5zIGZyb20gdGhlIGN1cnJlbnQgZnVuY3Rpb24sIHdoaWxlIGBFWFBFQ1RfKmAgeWllbGRzIGEg
bm9uZmF0YWwKLWZhaWx1cmUsIGFsbG93aW5nIHRoZSBmdW5jdGlvbiB0byBjb250aW51ZSBydW5u
aW5nLiBJbiBlaXRoZXIgY2FzZSwgYW4KLWFzc2VydGlvbiBmYWlsdXJlIG1lYW5zIGl0cyBjb250
YWluaW5nIHRlc3QgZmFpbHMuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFj
LgotCi0jIyBCaW5hcnkgQ29tcGFyaXNvbiAjIwotCi1UaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGFz
c2VydGlvbnMgdGhhdCBjb21wYXJlIHR3byB2YWx1ZXMuCi0KLXwgKipGYXRhbCBhc3NlcnRpb24q
KiB8ICoqTm9uZmF0YWwgYXNzZXJ0aW9uKiogfCAqKlZlcmlmaWVzKiogfAotfDotLS0tLS0tLS0t
LS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS18Ci18YEFT
U0VSVF9FUShgX2V4cGVjdGVkX2AsIGBfYWN0dWFsX2ApO2B8YEVYUEVDVF9FUShgX2V4cGVjdGVk
X2AsIGBfYWN0dWFsX2ApO2B8IF9leHBlY3RlZF8gYD09YCBfYWN0dWFsXyB8Ci18YEFTU0VSVF9O
RShgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9ORShgX3ZhbDFfYCwgYF92YWwy
X2ApO2AgICAgICB8IF92YWwxXyBgIT1gIF92YWwyXyB8Ci18YEFTU0VSVF9MVChgX3ZhbDFfYCwg
YF92YWwyX2ApO2AgICAgICB8YEVYUEVDVF9MVChgX3ZhbDFfYCwgYF92YWwyX2ApO2AgICAgICB8
IF92YWwxXyBgPGAgX3ZhbDJfIHwKLXxgQVNTRVJUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAg
ICAgIHxgRVhQRUNUX0xFKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA8PWAg
X3ZhbDJfIHwKLXxgQVNTRVJUX0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHxgRVhQRUNU
X0dUKGBfdmFsMV9gLCBgX3ZhbDJfYCk7YCAgICAgIHwgX3ZhbDFfIGA+YCBfdmFsMl8gfAotfGBB
U1NFUlRfR0UoYF92YWwxX2AsIGBfdmFsMl9gKTtgICAgICAgfGBFWFBFQ1RfR0UoYF92YWwxX2As
IGBfdmFsMl9gKTtgICAgICAgfCBfdmFsMV8gYD49YCBfdmFsMl8gfAotCi1JbiB0aGUgZXZlbnQg
b2YgYSBmYWlsdXJlLCBHb29nbGUgVGVzdCBwcmludHMgYm90aCBfdmFsMV8gYW5kIF92YWwyXwot
LiBJbiBgQVNTRVJUX0VRKmAgYW5kIGBFWFBFQ1RfRVEqYCAoYW5kIGFsbCBvdGhlciBlcXVhbGl0
eSBhc3NlcnRpb25zCi13ZSdsbCBpbnRyb2R1Y2UgbGF0ZXIpLCB5b3Ugc2hvdWxkIHB1dCB0aGUg
ZXhwcmVzc2lvbiB5b3Ugd2FudCB0byB0ZXN0Ci1pbiB0aGUgcG9zaXRpb24gb2YgX2FjdHVhbF8s
IGFuZCBwdXQgaXRzIGV4cGVjdGVkIHZhbHVlIGluIF9leHBlY3RlZF8sCi1hcyBHb29nbGUgVGVz
dCdzIGZhaWx1cmUgbWVzc2FnZXMgYXJlIG9wdGltaXplZCBmb3IgdGhpcyBjb252ZW50aW9uLgot
Ci1WYWx1ZSBhcmd1bWVudHMgbXVzdCBiZSBjb21wYXJhYmxlIGJ5IHRoZSBhc3NlcnRpb24ncyBj
b21wYXJpc29uCi1vcGVyYXRvciBvciB5b3UnbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBXZSB1
c2VkIHRvIHJlcXVpcmUgdGhlCi1hcmd1bWVudHMgdG8gc3VwcG9ydCB0aGUgYDw8YCBvcGVyYXRv
ciBmb3Igc3RyZWFtaW5nIHRvIGFuIGBvc3RyZWFtYCwKLWJ1dCBpdCdzIG5vIGxvbmdlciBuZWNl
c3Nhcnkgc2luY2UgdjEuNi4wIChpZiBgPDxgIGlzIHN1cHBvcnRlZCwgaXQKLXdpbGwgYmUgY2Fs
bGVkIHRvIHByaW50IHRoZSBhcmd1bWVudHMgd2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzOwotb3Ro
ZXJ3aXNlIEdvb2dsZSBUZXN0IHdpbGwgYXR0ZW1wdCB0byBwcmludCB0aGVtIGluIHRoZSBiZXN0
IHdheSBpdAotY2FuLiBGb3IgbW9yZSBkZXRhaWxzIGFuZCBob3cgdG8gY3VzdG9taXplIHRoZSBw
cmludGluZyBvZiB0aGUKLWFyZ3VtZW50cywgc2VlIHRoaXMgR29vZ2xlIE1vY2sgW3JlY2lwZV0o
Li4vLi4vZ29vZ2xlbW9jay9kb2NzL0Nvb2tCb29rLm1kI3RlYWNoaW5nLWdvb2dsZS1tb2NrLWhv
dy10by1wcmludC15b3VyLXZhbHVlcykuKS4KLQotVGhlc2UgYXNzZXJ0aW9ucyBjYW4gd29yayB3
aXRoIGEgdXNlci1kZWZpbmVkIHR5cGUsIGJ1dCBvbmx5IGlmIHlvdSBkZWZpbmUgdGhlCi1jb3Jy
ZXNwb25kaW5nIGNvbXBhcmlzb24gb3BlcmF0b3IgKGUuZy4gYD09YCwgYDxgLCBldGMpLiAgSWYg
dGhlIGNvcnJlc3BvbmRpbmcKLW9wZXJhdG9yIGlzIGRlZmluZWQsIHByZWZlciB1c2luZyB0aGUg
YEFTU0VSVF8qKClgIG1hY3JvcyBiZWNhdXNlIHRoZXkgd2lsbAotcHJpbnQgb3V0IG5vdCBvbmx5
IHRoZSByZXN1bHQgb2YgdGhlIGNvbXBhcmlzb24sIGJ1dCB0aGUgdHdvIG9wZXJhbmRzIGFzIHdl
bGwuCi0KLUFyZ3VtZW50cyBhcmUgYWx3YXlzIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIFRoZXJl
Zm9yZSwgaXQncyBPSyBmb3IgdGhlCi1hcmd1bWVudHMgdG8gaGF2ZSBzaWRlIGVmZmVjdHMuIEhv
d2V2ZXIsIGFzIHdpdGggYW55IG9yZGluYXJ5IEMvQysrIGZ1bmN0aW9uLAotdGhlIGFyZ3VtZW50
cycgZXZhbHVhdGlvbiBvcmRlciBpcyB1bmRlZmluZWQgKGkuZS4gdGhlIGNvbXBpbGVyIGlzIGZy
ZWUgdG8KLWNob29zZSBhbnkgb3JkZXIpIGFuZCB5b3VyIGNvZGUgc2hvdWxkIG5vdCBkZXBlbmQg
b24gYW55IHBhcnRpY3VsYXIgYXJndW1lbnQKLWV2YWx1YXRpb24gb3JkZXIuCi0KLWBBU1NFUlRf
RVEoKWAgZG9lcyBwb2ludGVyIGVxdWFsaXR5IG9uIHBvaW50ZXJzLiBJZiB1c2VkIG9uIHR3byBD
IHN0cmluZ3MsIGl0Ci10ZXN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBtZW1vcnkgbG9jYXRp
b24sIG5vdCBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgdmFsdWUuCi1UaGVyZWZvcmUsIGlmIHlvdSB3
YW50IHRvIGNvbXBhcmUgQyBzdHJpbmdzIChlLmcuIGBjb25zdCBjaGFyKmApIGJ5IHZhbHVlLCB1
c2UKLWBBU1NFUlRfU1RSRVEoKWAgLCB3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlciBvbi4g
SW4gcGFydGljdWxhciwgdG8gYXNzZXJ0Ci10aGF0IGEgQyBzdHJpbmcgaXMgYE5VTExgLCB1c2Ug
YEFTU0VSVF9TVFJFUShOVUxMLCBjX3N0cmluZylgIC4gSG93ZXZlciwgdG8KLWNvbXBhcmUgdHdv
IGBzdHJpbmdgIG9iamVjdHMsIHlvdSBzaG91bGQgdXNlIGBBU1NFUlRfRVFgLgotCi1NYWNyb3Mg
aW4gdGhpcyBzZWN0aW9uIHdvcmsgd2l0aCBib3RoIG5hcnJvdyBhbmQgd2lkZSBzdHJpbmcgb2Jq
ZWN0cyAoYHN0cmluZ2AKLWFuZCBgd3N0cmluZ2ApLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgs
IFdpbmRvd3MsIE1hYy4KLQotIyMgU3RyaW5nIENvbXBhcmlzb24gIyMKLQotVGhlIGFzc2VydGlv
bnMgaW4gdGhpcyBncm91cCBjb21wYXJlIHR3byAqKkMgc3RyaW5ncyoqLiBJZiB5b3Ugd2FudCB0
byBjb21wYXJlCi10d28gYHN0cmluZ2Agb2JqZWN0cywgdXNlIGBFWFBFQ1RfRVFgLCBgRVhQRUNU
X05FYCwgYW5kIGV0YyBpbnN0ZWFkLgotCi18ICoqRmF0YWwgYXNzZXJ0aW9uKiogfCAqKk5vbmZh
dGFsIGFzc2VydGlvbioqIHwgKipWZXJpZmllcyoqIHwKLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS18
Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tfAotfCBgQVNTRVJUX1NUUkVR
KGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgfCBgRVhQRUNUX1NUUkVR
KGBfZXhwZWN0ZWRcX3N0cl9gLCBgX2FjdHVhbFxfc3RyX2ApO2AgICAgIHwgdGhlIHR3byBDIHN0
cmluZ3MgaGF2ZSB0aGUgc2FtZSBjb250ZW50IHwKLXwgYEFTU0VSVF9TVFJORShgX3N0cjFfYCwg
YF9zdHIyX2ApO2AgICAgfCBgRVhQRUNUX1NUUk5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YCAgICAg
fCB0aGUgdHdvIEMgc3RyaW5ncyBoYXZlIGRpZmZlcmVudCBjb250ZW50IHwKLXwgYEFTU0VSVF9T
VFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YHwgYEVYUEVDVF9T
VFJDQVNFRVEoYF9leHBlY3RlZFxfc3RyX2AsIGBfYWN0dWFsXF9zdHJfYCk7YCB8IHRoZSB0d28g
QyBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgY29udGVudCwgaWdub3JpbmcgY2FzZSB8Ci18IGBBU1NF
UlRfU1RSQ0FTRU5FKGBfc3RyMV9gLCBgX3N0cjJfYCk7YHwgYEVYUEVDVF9TVFJDQVNFTkUoYF9z
dHIxX2AsIGBfc3RyMl9gKTtgIHwgdGhlIHR3byBDIHN0cmluZ3MgaGF2ZSBkaWZmZXJlbnQgY29u
dGVudCwgaWdub3JpbmcgY2FzZSB8Ci0KLU5vdGUgdGhhdCAiQ0FTRSIgaW4gYW4gYXNzZXJ0aW9u
IG5hbWUgbWVhbnMgdGhhdCBjYXNlIGlzIGlnbm9yZWQuCi0KLWAqU1RSRVEqYCBhbmQgYCpTVFJO
RSpgIGFsc28gYWNjZXB0IHdpZGUgQyBzdHJpbmdzIChgd2NoYXJfdCpgKS4gSWYgYQotY29tcGFy
aXNvbiBvZiB0d28gd2lkZSBzdHJpbmdzIGZhaWxzLCB0aGVpciB2YWx1ZXMgd2lsbCBiZSBwcmlu
dGVkIGFzIFVURi04Ci1uYXJyb3cgc3RyaW5ncy4KLQotQSBgTlVMTGAgcG9pbnRlciBhbmQgYW4g
ZW1wdHkgc3RyaW5nIGFyZSBjb25zaWRlcmVkIF9kaWZmZXJlbnRfLgotCi1fQXZhaWxhYmlsaXR5
XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotU2VlIGFsc286IEZvciBtb3JlIHN0cmluZyBjb21w
YXJpc29uIHRyaWNrcyAoc3Vic3RyaW5nLCBwcmVmaXgsIHN1ZmZpeCwgYW5kCi1yZWd1bGFyIGV4
cHJlc3Npb24gbWF0Y2hpbmcsIGZvciBleGFtcGxlKSwgc2VlIHRoZSBbQWR2YW5jZWQgR29vZ2xl
IFRlc3QgR3VpZGVdKFYxXzdfQWR2YW5jZWRHdWlkZS5tZCkuCi0KLSMgU2ltcGxlIFRlc3RzICMK
LQotVG8gY3JlYXRlIGEgdGVzdDoKLSAgMS4gVXNlIHRoZSBgVEVTVCgpYCBtYWNybyB0byBkZWZp
bmUgYW5kIG5hbWUgYSB0ZXN0IGZ1bmN0aW9uLCBUaGVzZSBhcmUgb3JkaW5hcnkgQysrIGZ1bmN0
aW9ucyB0aGF0IGRvbid0IHJldHVybiBhIHZhbHVlLgotICAxLiBJbiB0aGlzIGZ1bmN0aW9uLCBh
bG9uZyB3aXRoIGFueSB2YWxpZCBDKysgc3RhdGVtZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlLCB1
c2UgdGhlIHZhcmlvdXMgR29vZ2xlIFRlc3QgYXNzZXJ0aW9ucyB0byBjaGVjayB2YWx1ZXMuCi0g
IDEuIFRoZSB0ZXN0J3MgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIGFzc2VydGlvbnM7IGlm
IGFueSBhc3NlcnRpb24gaW4gdGhlIHRlc3QgZmFpbHMgKGVpdGhlciBmYXRhbGx5IG9yIG5vbi1m
YXRhbGx5KSwgb3IgaWYgdGhlIHRlc3QgY3Jhc2hlcywgdGhlIGVudGlyZSB0ZXN0IGZhaWxzLiBP
dGhlcndpc2UsIGl0IHN1Y2NlZWRzLgotCi1gYGAKLVRFU1QodGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSkgewotIC4uLiB0ZXN0IGJvZHkgLi4uCi19Ci1gYGAKLQotCi1gVEVTVCgpYCBhcmd1bWVu
dHMgZ28gZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljLiBUaGUgX2ZpcnN0XyBhcmd1bWVudCBpcyB0
aGUKLW5hbWUgb2YgdGhlIHRlc3QgY2FzZSwgYW5kIHRoZSBfc2Vjb25kXyBhcmd1bWVudCBpcyB0
aGUgdGVzdCdzIG5hbWUgd2l0aGluIHRoZQotdGVzdCBjYXNlLiBCb3RoIG5hbWVzIG11c3QgYmUg
dmFsaWQgQysrIGlkZW50aWZpZXJzLCBhbmQgdGhleSBzaG91bGQgbm90IGNvbnRhaW4gdW5kZXJz
Y29yZSAoYF9gKS4gQSB0ZXN0J3MgX2Z1bGwgbmFtZV8gY29uc2lzdHMgb2YgaXRzIGNvbnRhaW5p
bmcgdGVzdCBjYXNlIGFuZCBpdHMKLWluZGl2aWR1YWwgbmFtZS4gVGVzdHMgZnJvbSBkaWZmZXJl
bnQgdGVzdCBjYXNlcyBjYW4gaGF2ZSB0aGUgc2FtZSBpbmRpdmlkdWFsCi1uYW1lLgotCi1Gb3Ig
ZXhhbXBsZSwgbGV0J3MgdGFrZSBhIHNpbXBsZSBpbnRlZ2VyIGZ1bmN0aW9uOgotYGBgCi1pbnQg
RmFjdG9yaWFsKGludCBuKTsgLy8gUmV0dXJucyB0aGUgZmFjdG9yaWFsIG9mIG4KLWBgYAotCi1B
IHRlc3QgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiBtaWdodCBsb29rIGxpa2U6Ci1gYGAKLS8vIFRl
c3RzIGZhY3RvcmlhbCBvZiAwLgotVEVTVChGYWN0b3JpYWxUZXN0LCBIYW5kbGVzWmVyb0lucHV0
KSB7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwoMCkpOwotfQotCi0vLyBUZXN0cyBmYWN0b3Jp
YWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KLVRFU1QoRmFjdG9yaWFsVGVzdCwgSGFuZGxlc1Bvc2l0
aXZlSW5wdXQpIHsKLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7Ci0gIEVYUEVDVF9FUSgy
LCBGYWN0b3JpYWwoMikpOwotICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFsKDMpKTsKLSAgRVhQRUNU
X0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOwotfQotYGBgCi0KLUdvb2dsZSBUZXN0IGdyb3VwcyB0
aGUgdGVzdCByZXN1bHRzIGJ5IHRlc3QgY2FzZXMsIHNvIGxvZ2ljYWxseS1yZWxhdGVkIHRlc3Rz
Ci1zaG91bGQgYmUgaW4gdGhlIHNhbWUgdGVzdCBjYXNlOyBpbiBvdGhlciB3b3JkcywgdGhlIGZp
cnN0IGFyZ3VtZW50IHRvIHRoZWlyCi1gVEVTVCgpYCBzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRo
ZSBhYm92ZSBleGFtcGxlLCB3ZSBoYXZlIHR3byB0ZXN0cywKLWBIYW5kbGVzWmVyb0lucHV0YCBh
bmQgYEhhbmRsZXNQb3NpdGl2ZUlucHV0YCwgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgdGVzdAot
Y2FzZSBgRmFjdG9yaWFsVGVzdGAuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywg
TWFjLgotCi0jIFRlc3QgRml4dHVyZXM6IFVzaW5nIHRoZSBTYW1lIERhdGEgQ29uZmlndXJhdGlv
biBmb3IgTXVsdGlwbGUgVGVzdHMgIwotCi1JZiB5b3UgZmluZCB5b3Vyc2VsZiB3cml0aW5nIHR3
byBvciBtb3JlIHRlc3RzIHRoYXQgb3BlcmF0ZSBvbiBzaW1pbGFyIGRhdGEsCi15b3UgY2FuIHVz
ZSBhIF90ZXN0IGZpeHR1cmVfLiBJdCBhbGxvd3MgeW91IHRvIHJldXNlIHRoZSBzYW1lIGNvbmZp
Z3VyYXRpb24gb2YKLW9iamVjdHMgZm9yIHNldmVyYWwgZGlmZmVyZW50IHRlc3RzLgotCi1UbyBj
cmVhdGUgYSBmaXh0dXJlLCBqdXN0OgotICAxLiBEZXJpdmUgYSBjbGFzcyBmcm9tIGA6OnRlc3Rp
bmc6OlRlc3RgIC4gU3RhcnQgaXRzIGJvZHkgd2l0aCBgcHJvdGVjdGVkOmAgb3IgYHB1YmxpYzpg
IGFzIHdlJ2xsIHdhbnQgdG8gYWNjZXNzIGZpeHR1cmUgbWVtYmVycyBmcm9tIHN1Yi1jbGFzc2Vz
LgotICAxLiBJbnNpZGUgdGhlIGNsYXNzLCBkZWNsYXJlIGFueSBvYmplY3RzIHlvdSBwbGFuIHRv
IHVzZS4KLSAgMS4gSWYgbmVjZXNzYXJ5LCB3cml0ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Igb3Ig
YFNldFVwKClgIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIG9iamVjdHMgZm9yIGVhY2ggdGVzdC4g
QSBjb21tb24gbWlzdGFrZSBpcyB0byBzcGVsbCBgU2V0VXAoKWAgYXMgYFNldHVwKClgIHdpdGgg
YSBzbWFsbCBgdWAgLSBkb24ndCBsZXQgdGhhdCBoYXBwZW4gdG8geW91LgotICAxLiBJZiBuZWNl
c3NhcnksIHdyaXRlIGEgZGVzdHJ1Y3RvciBvciBgVGVhckRvd24oKWAgZnVuY3Rpb24gdG8gcmVs
ZWFzZSBhbnkgcmVzb3VyY2VzIHlvdSBhbGxvY2F0ZWQgaW4gYFNldFVwKClgIC4gVG8gbGVhcm4g
d2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBhbmQgd2hlbiB5
b3Ugc2hvdWxkIHVzZSBgU2V0VXAoKS9UZWFyRG93bigpYCwgcmVhZCB0aGlzIFtGQVEgZW50cnld
KFYxXzdfRkFRLm1kI3Nob3VsZC1pLXVzZS10aGUtY29uc3RydWN0b3JkZXN0cnVjdG9yLW9mLXRo
ZS10ZXN0LWZpeHR1cmUtb3ItdGhlLXNldC11cHRlYXItZG93bi1mdW5jdGlvbikuCi0gIDEuIElm
IG5lZWRlZCwgZGVmaW5lIHN1YnJvdXRpbmVzIGZvciB5b3VyIHRlc3RzIHRvIHNoYXJlLgotCi1X
aGVuIHVzaW5nIGEgZml4dHVyZSwgdXNlIGBURVNUX0YoKWAgaW5zdGVhZCBvZiBgVEVTVCgpYCBh
cyBpdCBhbGxvd3MgeW91IHRvCi1hY2Nlc3Mgb2JqZWN0cyBhbmQgc3Vicm91dGluZXMgaW4gdGhl
IHRlc3QgZml4dHVyZToKLWBgYAotVEVTVF9GKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpIHsK
LSAuLi4gdGVzdCBib2R5IC4uLgotfQotYGBgCi0KLUxpa2UgYFRFU1QoKWAsIHRoZSBmaXJzdCBh
cmd1bWVudCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUsIGJ1dCBmb3IgYFRFU1RfRigpYAotdGhpcyBt
dXN0IGJlIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGZpeHR1cmUgY2xhc3MuIFlvdSd2ZSBwcm9iYWJs
eSBndWVzc2VkOiBgX0ZgCi1pcyBmb3IgZml4dHVyZS4KLQotVW5mb3J0dW5hdGVseSwgdGhlIEMr
KyBtYWNybyBzeXN0ZW0gZG9lcyBub3QgYWxsb3cgdXMgdG8gY3JlYXRlIGEgc2luZ2xlIG1hY3Jv
Ci10aGF0IGNhbiBoYW5kbGUgYm90aCB0eXBlcyBvZiB0ZXN0cy4gVXNpbmcgdGhlIHdyb25nIG1h
Y3JvIGNhdXNlcyBhIGNvbXBpbGVyCi1lcnJvci4KLQotQWxzbywgeW91IG11c3QgZmlyc3QgZGVm
aW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIGJlZm9yZSB1c2luZyBpdCBpbiBhCi1gVEVTVF9GKClg
LCBvciB5b3UnbGwgZ2V0IHRoZSBjb21waWxlciBlcnJvciAiYHZpcnR1YWwgb3V0c2lkZSBjbGFz
cwotZGVjbGFyYXRpb25gIi4KLQotRm9yIGVhY2ggdGVzdCBkZWZpbmVkIHdpdGggYFRFU1RfRigp
YCwgR29vZ2xlIFRlc3Qgd2lsbDoKLSAgMS4gQ3JlYXRlIGEgX2ZyZXNoXyB0ZXN0IGZpeHR1cmUg
YXQgcnVudGltZQotICAxLiBJbW1lZGlhdGVseSBpbml0aWFsaXplIGl0IHZpYSBgU2V0VXAoKWAg
LAotICAxLiBSdW4gdGhlIHRlc3QKLSAgMS4gQ2xlYW4gdXAgYnkgY2FsbGluZyBgVGVhckRvd24o
KWAKLSAgMS4gRGVsZXRlIHRoZSB0ZXN0IGZpeHR1cmUuICBOb3RlIHRoYXQgZGlmZmVyZW50IHRl
c3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBoYXZlIGRpZmZlcmVudCB0ZXN0IGZpeHR1cmUgb2Jq
ZWN0cywgYW5kIEdvb2dsZSBUZXN0IGFsd2F5cyBkZWxldGVzIGEgdGVzdCBmaXh0dXJlIGJlZm9y
ZSBpdCBjcmVhdGVzIHRoZSBuZXh0IG9uZS4gR29vZ2xlIFRlc3QgZG9lcyBub3QgcmV1c2UgdGhl
IHNhbWUgdGVzdCBmaXh0dXJlIGZvciBtdWx0aXBsZSB0ZXN0cy4gQW55IGNoYW5nZXMgb25lIHRl
c3QgbWFrZXMgdG8gdGhlIGZpeHR1cmUgZG8gbm90IGFmZmVjdCBvdGhlciB0ZXN0cy4KLQotQXMg
YW4gZXhhbXBsZSwgbGV0J3Mgd3JpdGUgdGVzdHMgZm9yIGEgRklGTyBxdWV1ZSBjbGFzcyBuYW1l
ZCBgUXVldWVgLCB3aGljaAotaGFzIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOgotYGBgCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgRT4gLy8gRSBpcyB0aGUgZWxlbWVudCB0eXBlLgotY2xhc3MgUXVldWUg
ewotIHB1YmxpYzoKLSAgUXVldWUoKTsKLSAgdm9pZCBFbnF1ZXVlKGNvbnN0IEUmIGVsZW1lbnQp
OwotICBFKiBEZXF1ZXVlKCk7IC8vIFJldHVybnMgTlVMTCBpZiB0aGUgcXVldWUgaXMgZW1wdHku
Ci0gIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gIC4uLgotfTsKLWBgYAotCi1GaXJzdCwgZGVmaW5l
IGEgZml4dHVyZSBjbGFzcy4gQnkgY29udmVudGlvbiwgeW91IHNob3VsZCBnaXZlIGl0IHRoZSBu
YW1lCi1gRm9vVGVzdGAgd2hlcmUgYEZvb2AgaXMgdGhlIGNsYXNzIGJlaW5nIHRlc3RlZC4KLWBg
YAotY2xhc3MgUXVldWVUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVk
OgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcTFfLkVucXVldWUoMSk7Ci0gICAgcTJf
LkVucXVldWUoMik7Ci0gICAgcTJfLkVucXVldWUoMyk7Ci0gIH0KLQotICAvLyB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKSB7fQotCi0gIFF1ZXVlPGludD4gcTBfOwotICBRdWV1ZTxpbnQ+IHExXzsK
LSAgUXVldWU8aW50PiBxMl87Ci19OwotYGBgCi0KLUluIHRoaXMgY2FzZSwgYFRlYXJEb3duKClg
IGlzIG5vdCBuZWVkZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0byBjbGVhbiB1cCBhZnRlcgotZWFj
aCB0ZXN0LCBvdGhlciB0aGFuIHdoYXQncyBhbHJlYWR5IGRvbmUgYnkgdGhlIGRlc3RydWN0b3Iu
Ci0KLU5vdyB3ZSdsbCB3cml0ZSB0ZXN0cyB1c2luZyBgVEVTVF9GKClgIGFuZCB0aGlzIGZpeHR1
cmUuCi1gYGAKLVRFU1RfRihRdWV1ZVRlc3QsIElzRW1wdHlJbml0aWFsbHkpIHsKLSAgRVhQRUNU
X0VRKDAsIHEwXy5zaXplKCkpOwotfQotCi1URVNUX0YoUXVldWVUZXN0LCBEZXF1ZXVlV29ya3Mp
IHsKLSAgaW50KiBuID0gcTBfLkRlcXVldWUoKTsKLSAgRVhQRUNUX0VRKE5VTEwsIG4pOwotCi0g
IG4gPSBxMV8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBFQ1Rf
RVEoMSwgKm4pOwotICBFWFBFQ1RfRVEoMCwgcTFfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotCi0g
IG4gPSBxMl8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBFQ1Rf
RVEoMiwgKm4pOwotICBFWFBFQ1RfRVEoMSwgcTJfLnNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotfQot
YGBgCi0KLVRoZSBhYm92ZSB1c2VzIGJvdGggYEFTU0VSVF8qYCBhbmQgYEVYUEVDVF8qYCBhc3Nl
cnRpb25zLiBUaGUgcnVsZSBvZiB0aHVtYiBpcwotdG8gdXNlIGBFWFBFQ1RfKmAgd2hlbiB5b3Ug
d2FudCB0aGUgdGVzdCB0byBjb250aW51ZSB0byByZXZlYWwgbW9yZSBlcnJvcnMKLWFmdGVyIHRo
ZSBhc3NlcnRpb24gZmFpbHVyZSwgYW5kIHVzZSBgQVNTRVJUXypgIHdoZW4gY29udGludWluZyBh
ZnRlciBmYWlsdXJlCi1kb2Vzbid0IG1ha2Ugc2Vuc2UuIEZvciBleGFtcGxlLCB0aGUgc2Vjb25k
IGFzc2VydGlvbiBpbiB0aGUgYERlcXVldWVgIHRlc3QgaXMKLWBBU1NFUlRfVFJVRShuICE9IE5V
TEwpYCwgYXMgd2UgbmVlZCB0byBkZXJlZmVyZW5jZSB0aGUgcG9pbnRlciBgbmAgbGF0ZXIsCi13
aGljaCB3b3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQgd2hlbiBgbmAgaXMgYE5VTExgLgotCi1XaGVu
IHRoZXNlIHRlc3RzIHJ1biwgdGhlIGZvbGxvd2luZyBoYXBwZW5zOgotICAxLiBHb29nbGUgVGVz
dCBjb25zdHJ1Y3RzIGEgYFF1ZXVlVGVzdGAgb2JqZWN0IChsZXQncyBjYWxsIGl0IGB0MWAgKS4K
LSAgMS4gYHQxLlNldFVwKClgIGluaXRpYWxpemVzIGB0MWAgLgotICAxLiBUaGUgZmlyc3QgdGVz
dCAoIGBJc0VtcHR5SW5pdGlhbGx5YCApIHJ1bnMgb24gYHQxYCAuCi0gIDEuIGB0MS5UZWFyRG93
bigpYCBjbGVhbnMgdXAgYWZ0ZXIgdGhlIHRlc3QgZmluaXNoZXMuCi0gIDEuIGB0MWAgaXMgZGVz
dHJ1Y3RlZC4KLSAgMS4gVGhlIGFib3ZlIHN0ZXBzIGFyZSByZXBlYXRlZCBvbiBhbm90aGVyIGBR
dWV1ZVRlc3RgIG9iamVjdCwgdGhpcyB0aW1lIHJ1bm5pbmcgdGhlIGBEZXF1ZXVlV29ya3NgIHRl
c3QuCi0KLV9BdmFpbGFiaWxpdHlfOiBMaW51eCwgV2luZG93cywgTWFjLgotCi1fTm90ZV86IEdv
b2dsZSBUZXN0IGF1dG9tYXRpY2FsbHkgc2F2ZXMgYWxsIF9Hb29nbGUgVGVzdF8gZmxhZ3Mgd2hl
biBhIHRlc3QKLW9iamVjdCBpcyBjb25zdHJ1Y3RlZCwgYW5kIHJlc3RvcmVzIHRoZW0gd2hlbiBp
dCBpcyBkZXN0cnVjdGVkLgotCi0jIEludm9raW5nIHRoZSBUZXN0cyAjCi0KLWBURVNUKClgIGFu
ZCBgVEVTVF9GKClgIGltcGxpY2l0bHkgcmVnaXN0ZXIgdGhlaXIgdGVzdHMgd2l0aCBHb29nbGUg
VGVzdC4gU28sIHVubGlrZSB3aXRoIG1hbnkgb3RoZXIgQysrIHRlc3RpbmcgZnJhbWV3b3Jrcywg
eW91IGRvbid0IGhhdmUgdG8gcmUtbGlzdCBhbGwgeW91ciBkZWZpbmVkIHRlc3RzIGluIG9yZGVy
IHRvIHJ1biB0aGVtLgotCi1BZnRlciBkZWZpbmluZyB5b3VyIHRlc3RzLCB5b3UgY2FuIHJ1biB0
aGVtIHdpdGggYFJVTl9BTExfVEVTVFMoKWAgLCB3aGljaCByZXR1cm5zIGAwYCBpZiBhbGwgdGhl
IHRlc3RzIGFyZSBzdWNjZXNzZnVsLCBvciBgMWAgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYFJVTl9B
TExfVEVTVFMoKWAgcnVucyBfYWxsIHRlc3RzXyBpbiB5b3VyIGxpbmsgdW5pdCAtLSB0aGV5IGNh
biBiZSBmcm9tIGRpZmZlcmVudCB0ZXN0IGNhc2VzLCBvciBldmVuIGRpZmZlcmVudCBzb3VyY2Ug
ZmlsZXMuCi0KLVdoZW4gaW52b2tlZCwgdGhlIGBSVU5fQUxMX1RFU1RTKClgIG1hY3JvOgotICAx
LiBTYXZlcyB0aGUgc3RhdGUgb2YgYWxsICBHb29nbGUgVGVzdCBmbGFncy4KLSAgMS4gQ3JlYXRl
cyBhIHRlc3QgZml4dHVyZSBvYmplY3QgZm9yIHRoZSBmaXJzdCB0ZXN0LgotICAxLiBJbml0aWFs
aXplcyBpdCB2aWEgYFNldFVwKClgLgotICAxLiBSdW5zIHRoZSB0ZXN0IG9uIHRoZSBmaXh0dXJl
IG9iamVjdC4KLSAgMS4gQ2xlYW5zIHVwIHRoZSBmaXh0dXJlIHZpYSBgVGVhckRvd24oKWAuCi0g
IDEuIERlbGV0ZXMgdGhlIGZpeHR1cmUuCi0gIDEuIFJlc3RvcmVzIHRoZSBzdGF0ZSBvZiBhbGwg
R29vZ2xlIFRlc3QgZmxhZ3MuCi0gIDEuIFJlcGVhdHMgdGhlIGFib3ZlIHN0ZXBzIGZvciB0aGUg
bmV4dCB0ZXN0LCB1bnRpbCBhbGwgdGVzdHMgaGF2ZSBydW4uCi0KLUluIGFkZGl0aW9uLCBpZiB0
aGUgdGV4dCBmaXh0dXJlJ3MgY29uc3RydWN0b3IgZ2VuZXJhdGVzIGEgZmF0YWwgZmFpbHVyZSBp
bgotc3RlcCAyLCB0aGVyZSBpcyBubyBwb2ludCBmb3Igc3RlcCAzIC0gNSBhbmQgdGhleSBhcmUg
dGh1cyBza2lwcGVkLiBTaW1pbGFybHksCi1pZiBzdGVwIDMgZ2VuZXJhdGVzIGEgZmF0YWwgZmFp
bHVyZSwgc3RlcCA0IHdpbGwgYmUgc2tpcHBlZC4KLQotX0ltcG9ydGFudF86IFlvdSBtdXN0IG5v
dCBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYCwgb3IgYGdjY2AK
LXdpbGwgZ2l2ZSB5b3UgYSBjb21waWxlciBlcnJvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBk
ZXNpZ24gaXMgdGhhdCB0aGUKLWF1dG9tYXRlZCB0ZXN0aW5nIHNlcnZpY2UgZGV0ZXJtaW5lcyB3
aGV0aGVyIGEgdGVzdCBoYXMgcGFzc2VkIGJhc2VkIG9uIGl0cwotZXhpdCBjb2RlLCBub3Qgb24g
aXRzIHN0ZG91dC9zdGRlcnIgb3V0cHV0OyB0aHVzIHlvdXIgYG1haW4oKWAgZnVuY3Rpb24gbXVz
dAotcmV0dXJuIHRoZSB2YWx1ZSBvZiBgUlVOX0FMTF9URVNUUygpYC4KLQotQWxzbywgeW91IHNo
b3VsZCBjYWxsIGBSVU5fQUxMX1RFU1RTKClgIG9ubHkgKipvbmNlKiouIENhbGxpbmcgaXQgbW9y
ZSB0aGFuIG9uY2UKLWNvbmZsaWN0cyB3aXRoIHNvbWUgYWR2YW5jZWQgR29vZ2xlIFRlc3QgZmVh
dHVyZXMgKGUuZy4gdGhyZWFkLXNhZmUgZGVhdGgKLXRlc3RzKSBhbmQgdGh1cyBpcyBub3Qgc3Vw
cG9ydGVkLgotCi1fQXZhaWxhYmlsaXR5XzogTGludXgsIFdpbmRvd3MsIE1hYy4KLQotIyBXcml0
aW5nIHRoZSBtYWluKCkgRnVuY3Rpb24gIwotCi1Zb3UgY2FuIHN0YXJ0IGZyb20gdGhpcyBib2ls
ZXJwbGF0ZToKLWBgYAotI2luY2x1ZGUgInRoaXMvcGFja2FnZS9mb28uaCIKLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi0vLyBUaGUgZml4dHVyZSBmb3IgdGVzdGlu
ZyBjbGFzcyBGb28uCi1jbGFzcyBGb29UZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0g
cHJvdGVjdGVkOgotICAvLyBZb3UgY2FuIHJlbW92ZSBhbnkgb3IgYWxsIG9mIHRoZSBmb2xsb3dp
bmcgZnVuY3Rpb25zIGlmIGl0cyBib2R5Ci0gIC8vIGlzIGVtcHR5LgotCi0gIEZvb1Rlc3QoKSB7
Ci0gICAgLy8gWW91IGNhbiBkbyBzZXQtdXAgd29yayBmb3IgZWFjaCB0ZXN0IGhlcmUuCi0gIH0K
LQotICB2aXJ0dWFsIH5Gb29UZXN0KCkgewotICAgIC8vIFlvdSBjYW4gZG8gY2xlYW4tdXAgd29y
ayB0aGF0IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucyBoZXJlLgotICB9Ci0KLSAgLy8gSWYgdGhl
IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGFyZSBub3QgZW5vdWdoIGZvciBzZXR0aW5nIHVw
Ci0gIC8vIGFuZCBjbGVhbmluZyB1cCBlYWNoIHRlc3QsIHlvdSBjYW4gZGVmaW5lIHRoZSBmb2xs
b3dpbmcgbWV0aG9kczoKLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgLy8gQ29kZSBo
ZXJlIHdpbGwgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb25zdHJ1Y3RvciAocmln
aHQKLSAgICAvLyBiZWZvcmUgZWFjaCB0ZXN0KS4KLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpIHsKLSAgICAvLyBDb2RlIGhlcmUgd2lsbCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0
ZXIgZWFjaCB0ZXN0IChyaWdodAotICAgIC8vIGJlZm9yZSB0aGUgZGVzdHJ1Y3RvcikuCi0gIH0K
LQotICAvLyBPYmplY3RzIGRlY2xhcmVkIGhlcmUgY2FuIGJlIHVzZWQgYnkgYWxsIHRlc3RzIGlu
IHRoZSB0ZXN0IGNhc2UgZm9yIEZvby4KLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEZvbzo6QmFy
KCkgbWV0aG9kIGRvZXMgQWJjLgotVEVTVF9GKEZvb1Rlc3QsIE1ldGhvZEJhckRvZXNBYmMpIHsK
LSAgY29uc3Qgc3RyaW5nIGlucHV0X2ZpbGVwYXRoID0gInRoaXMvcGFja2FnZS90ZXN0ZGF0YS9t
eWlucHV0ZmlsZS5kYXQiOwotICBjb25zdCBzdHJpbmcgb3V0cHV0X2ZpbGVwYXRoID0gInRoaXMv
cGFja2FnZS90ZXN0ZGF0YS9teW91dHB1dGZpbGUuZGF0IjsKLSAgRm9vIGY7Ci0gIEVYUEVDVF9F
USgwLCBmLkJhcihpbnB1dF9maWxlcGF0aCwgb3V0cHV0X2ZpbGVwYXRoKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgRm9vIGRvZXMgWHl6LgotVEVTVF9GKEZvb1Rlc3QsIERvZXNYeXopIHsKLSAgLy8g
RXhlcmNpc2VzIHRoZSBYeXogZmVhdHVyZSBvZiBGb28uCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgOjp0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19Ci1gYGAK
LQotVGhlIGA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KClgIGZ1bmN0aW9uIHBhcnNlcyB0aGUg
Y29tbWFuZCBsaW5lIGZvciBHb29nbGUKLVRlc3QgZmxhZ3MsIGFuZCByZW1vdmVzIGFsbCByZWNv
Z25pemVkIGZsYWdzLiBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBjb250cm9sIGEKLXRlc3QgcHJv
Z3JhbSdzIGJlaGF2aW9yIHZpYSB2YXJpb3VzIGZsYWdzLCB3aGljaCB3ZSdsbCBjb3ZlciBpbiBb
QWR2YW5jZWRHdWlkZV0oVjFfN19BZHZhbmNlZEd1aWRlLm1kKS4KLVlvdSBtdXN0IGNhbGwgdGhp
cyBmdW5jdGlvbiBiZWZvcmUgY2FsbGluZyBgUlVOX0FMTF9URVNUUygpYCwgb3IgdGhlIGZsYWdz
Ci13b24ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4KLQotT24gV2luZG93cywgYEluaXRHb29n
bGVUZXN0KClgIGFsc28gd29ya3Mgd2l0aCB3aWRlIHN0cmluZ3MsIHNvIGl0IGNhbiBiZSB1c2Vk
Ci1pbiBwcm9ncmFtcyBjb21waWxlZCBpbiBgVU5JQ09ERWAgbW9kZSBhcyB3ZWxsLgotCi1CdXQg
bWF5YmUgeW91IHRoaW5rIHRoYXQgd3JpdGluZyBhbGwgdGhvc2UgbWFpbigpIGZ1bmN0aW9ucyBp
cyB0b28gbXVjaCB3b3JrPyBXZSBhZ3JlZSB3aXRoIHlvdSBjb21wbGV0ZWx5IGFuZCB0aGF0J3Mg
d2h5IEdvb2dsZSBUZXN0IHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgbWFpbigp
LiBJZiBpdCBmaXRzIHlvdXIgbmVlZHMsIHRoZW4ganVzdCBsaW5rIHlvdXIgdGVzdCB3aXRoIGd0
ZXN0XF9tYWluIGxpYnJhcnkgYW5kIHlvdSBhcmUgZ29vZCB0byBnby4KLQotIyMgSW1wb3J0YW50
IG5vdGUgZm9yIFZpc3VhbCBDKysgdXNlcnMgIyMKLUlmIHlvdSBwdXQgeW91ciB0ZXN0cyBpbnRv
IGEgbGlicmFyeSBhbmQgeW91ciBgbWFpbigpYCBmdW5jdGlvbiBpcyBpbiBhIGRpZmZlcmVudCBs
aWJyYXJ5IG9yIGluIHlvdXIgLmV4ZSBmaWxlLCB0aG9zZSB0ZXN0cyB3aWxsIG5vdCBydW4uIFRo
ZSByZWFzb24gaXMgYSBbYnVnXShodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9mZWVkYmFj
ay92aWV3ZmVlZGJhY2suYXNweD9GZWVkYmFja0lEPTI0NDQxMCZzaXRlaWQ9MjEwKSBpbiBWaXN1
YWwgQysrLiBXaGVuIHlvdSBkZWZpbmUgeW91ciB0ZXN0cywgR29vZ2xlIFRlc3QgY3JlYXRlcyBj
ZXJ0YWluIHN0YXRpYyBvYmplY3RzIHRvIHJlZ2lzdGVyIHRoZW0uIFRoZXNlIG9iamVjdHMgYXJl
IG5vdCByZWZlcmVuY2VkIGZyb20gZWxzZXdoZXJlIGJ1dCB0aGVpciBjb25zdHJ1Y3RvcnMgYXJl
IHN0aWxsIHN1cHBvc2VkIHRvIHJ1bi4gV2hlbiBWaXN1YWwgQysrIGxpbmtlciBzZWVzIHRoYXQg
bm90aGluZyBpbiB0aGUgbGlicmFyeSBpcyByZWZlcmVuY2VkIGZyb20gb3RoZXIgcGxhY2VzIGl0
IHRocm93cyB0aGUgbGlicmFyeSBvdXQuIFlvdSBoYXZlIHRvIHJlZmVyZW5jZSB5b3VyIGxpYnJh
cnkgd2l0aCB0ZXN0cyBmcm9tIHlvdXIgbWFpbiBwcm9ncmFtIHRvIGtlZXAgdGhlIGxpbmtlciBm
cm9tIGRpc2NhcmRpbmcgaXQuIEhlcmUgaXMgaG93IHRvIGRvIGl0LiBTb21ld2hlcmUgaW4geW91
ciBsaWJyYXJ5IGNvZGUgZGVjbGFyZSBhIGZ1bmN0aW9uOgotYGBgCi1fX2RlY2xzcGVjKGRsbGV4
cG9ydCkgaW50IFB1bGxJbk15TGlicmFyeSgpIHsgcmV0dXJuIDA7IH0KLWBgYAotSWYgeW91IHB1
dCB5b3VyIHRlc3RzIGluIGEgc3RhdGljIGxpYnJhcnkgKG5vdCBETEwpIHRoZW4gYF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KWAgaXMgbm90IHJlcXVpcmVkLiBOb3csIGluIHlvdXIgbWFpbiBwcm9ncmFt
LCB3cml0ZSBhIGNvZGUgdGhhdCBpbnZva2VzIHRoYXQgZnVuY3Rpb246Ci1gYGAKLWludCBQdWxs
SW5NeUxpYnJhcnkoKTsKLXN0YXRpYyBpbnQgZHVtbXkgPSBQdWxsSW5NeUxpYnJhcnkoKTsKLWBg
YAotVGhpcyB3aWxsIGtlZXAgeW91ciB0ZXN0cyByZWZlcmVuY2VkIGFuZCB3aWxsIG1ha2UgdGhl
bSByZWdpc3RlciB0aGVtc2VsdmVzIGF0IHN0YXJ0dXAuCi0KLUluIGFkZGl0aW9uLCBpZiB5b3Ug
ZGVmaW5lIHlvdXIgdGVzdHMgaW4gYSBzdGF0aWMgbGlicmFyeSwgYWRkIGAvT1BUOk5PUkVGYCB0
byB5b3VyIG1haW4gcHJvZ3JhbSBsaW5rZXIgb3B0aW9ucy4gSWYgeW91IHVzZSBNU1ZDKysgSURF
LCBnbyB0byB5b3VyIC5leGUgcHJvamVjdCBwcm9wZXJ0aWVzL0NvbmZpZ3VyYXRpb24gUHJvcGVy
dGllcy9MaW5rZXIvT3B0aW1pemF0aW9uIGFuZCBzZXQgUmVmZXJlbmNlcyBzZXR0aW5nIHRvIGBL
ZWVwIFVucmVmZXJlbmNlZCBEYXRhICgvT1BUOk5PUkVGKWAuIFRoaXMgd2lsbCBrZWVwIFZpc3Vh
bCBDKysgbGlua2VyIGZyb20gZGlzY2FyZGluZyBpbmRpdmlkdWFsIHN5bWJvbHMgZ2VuZXJhdGVk
IGJ5IHlvdXIgdGVzdHMgZnJvbSB0aGUgZmluYWwgZXhlY3V0YWJsZS4KLQotVGhlcmUgaXMgb25l
IG1vcmUgcGl0ZmFsbCwgdGhvdWdoLiBJZiB5b3UgdXNlIEdvb2dsZSBUZXN0IGFzIGEgc3RhdGlj
IGxpYnJhcnkgKHRoYXQncyBob3cgaXQgaXMgZGVmaW5lZCBpbiBndGVzdC52Y3Byb2opIHlvdXIg
dGVzdHMgbXVzdCBhbHNvIHJlc2lkZSBpbiBhIHN0YXRpYyBsaWJyYXJ5LiBJZiB5b3UgaGF2ZSB0
byBoYXZlIHRoZW0gaW4gYSBETEwsIHlvdSBfbXVzdF8gY2hhbmdlIEdvb2dsZSBUZXN0IHRvIGJ1
aWxkIGludG8gYSBETEwgYXMgd2VsbC4gT3RoZXJ3aXNlIHlvdXIgdGVzdHMgd2lsbCBub3QgcnVu
IGNvcnJlY3RseSBvciB3aWxsIG5vdCBydW4gYXQgYWxsLiBUaGUgZ2VuZXJhbCBjb25jbHVzaW9u
IGhlcmUgaXM6IG1ha2UgeW91ciBsaWZlIGVhc2llciAtIGRvIG5vdCB3cml0ZSB5b3VyIHRlc3Rz
IGluIGxpYnJhcmllcyEKLQotIyBXaGVyZSB0byBHbyBmcm9tIEhlcmUgIwotCi1Db25ncmF0dWxh
dGlvbnMhIFlvdSd2ZSBsZWFybmVkIHRoZSBHb29nbGUgVGVzdCBiYXNpY3MuIFlvdSBjYW4gc3Rh
cnQgd3JpdGluZwotYW5kIHJ1bm5pbmcgR29vZ2xlIFRlc3QgdGVzdHMsIHJlYWQgc29tZSBbc2Ft
cGxlc10oVjFfN19TYW1wbGVzLm1kKSwgb3IgY29udGludWUgd2l0aAotW0FkdmFuY2VkR3VpZGVd
KFYxXzdfQWR2YW5jZWRHdWlkZS5tZCksIHdoaWNoIGRlc2NyaWJlcyBtYW55IG1vcmUgdXNlZnVs
IEdvb2dsZSBUZXN0IGZlYXR1cmVzLgotCi0jIEtub3duIExpbWl0YXRpb25zICMKLQotR29vZ2xl
IFRlc3QgaXMgZGVzaWduZWQgdG8gYmUgdGhyZWFkLXNhZmUuICBUaGUgaW1wbGVtZW50YXRpb24g
aXMKLXRocmVhZC1zYWZlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGBwdGhyZWFkc2AgbGlicmFyeSBp
cyBhdmFpbGFibGUuICBJdAotaXMgY3VycmVudGx5IF91bnNhZmVfIHRvIHVzZSBHb29nbGUgVGVz
dCBhc3NlcnRpb25zIGZyb20gdHdvIHRocmVhZHMKLWNvbmN1cnJlbnRseSBvbiBvdGhlciBzeXN0
ZW1zIChlLmcuIFdpbmRvd3MpLiAgSW4gbW9zdCB0ZXN0cyB0aGlzIGlzCi1ub3QgYW4gaXNzdWUg
YXMgdXN1YWxseSB0aGUgYXNzZXJ0aW9ucyBhcmUgZG9uZSBpbiB0aGUgbWFpbiB0aHJlYWQuIElm
Ci15b3Ugd2FudCB0byBoZWxwLCB5b3UgY2FuIHZvbHVudGVlciB0byBpbXBsZW1lbnQgdGhlIG5l
Y2Vzc2FyeQotc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW4gYGd0ZXN0LXBvcnQuaGAgZm9y
IHlvdXIgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfUHVtcE1h
bnVhbC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19QdW1wTWFudWFsLm1kCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MTg0ZjE1M2NhMmUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9kb2NzL1YxXzdfUHVtcE1hbnVhbC5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyAr
MCwwIEBACi0KLQotPGI+UDwvYj51bXAgaXMgPGI+VTwvYj5zZWZ1bCBmb3IgPGI+TTwvYj5ldGEg
PGI+UDwvYj5yb2dyYW1taW5nLgotCi0jIFRoZSBQcm9ibGVtICMKLQotVGVtcGxhdGUgYW5kIG1h
Y3JvIGxpYnJhcmllcyBvZnRlbiBuZWVkIHRvIGRlZmluZSBtYW55IGNsYXNzZXMsCi1mdW5jdGlv
bnMsIG9yIG1hY3JvcyB0aGF0IHZhcnkgb25seSAob3IgYWxtb3N0IG9ubHkpIGluIHRoZSBudW1i
ZXIgb2YKLWFyZ3VtZW50cyB0aGV5IHRha2UuIEl0J3MgYSBsb3Qgb2YgcmVwZXRpdGl2ZSwgbWVj
aGFuaWNhbCwgYW5kCi1lcnJvci1wcm9uZSB3b3JrLgotCi1WYXJpYWRpYyB0ZW1wbGF0ZXMgYW5k
IHZhcmlhZGljIG1hY3JvcyBjYW4gYWxsZXZpYXRlIHRoZSBwcm9ibGVtLgotSG93ZXZlciwgd2hp
bGUgYm90aCBhcmUgYmVpbmcgY29uc2lkZXJlZCBieSB0aGUgQysrIGNvbW1pdHRlZSwgbmVpdGhl
cgotaXMgaW4gdGhlIHN0YW5kYXJkIHlldCBvciB3aWRlbHkgc3VwcG9ydGVkIGJ5IGNvbXBpbGVy
cy4gIFRodXMgdGhleQotYXJlIG9mdGVuIG5vdCBhIGdvb2QgY2hvaWNlLCBlc3BlY2lhbGx5IHdo
ZW4geW91ciBjb2RlIG5lZWRzIHRvIGJlCi1wb3J0YWJsZS4gQW5kIHRoZWlyIGNhcGFiaWxpdGll
cyBhcmUgc3RpbGwgbGltaXRlZC4KLQotQXMgYSByZXN1bHQsIGF1dGhvcnMgb2Ygc3VjaCBsaWJy
YXJpZXMgb2Z0ZW4gaGF2ZSB0byB3cml0ZSBzY3JpcHRzIHRvCi1nZW5lcmF0ZSB0aGVpciBpbXBs
ZW1lbnRhdGlvbi4gSG93ZXZlciwgb3VyIGV4cGVyaWVuY2UgaXMgdGhhdCBpdCdzCi10ZWRpb3Vz
IHRvIHdyaXRlIHN1Y2ggc2NyaXB0cywgd2hpY2ggdGVuZCB0byByZWZsZWN0IHRoZSBzdHJ1Y3R1
cmUgb2YKLXRoZSBnZW5lcmF0ZWQgY29kZSBwb29ybHkgYW5kIGFyZSBvZnRlbiBoYXJkIHRvIHJl
YWQgYW5kIGVkaXQuIEZvcgotZXhhbXBsZSwgYSBzbWFsbCBjaGFuZ2UgbmVlZGVkIGluIHRoZSBn
ZW5lcmF0ZWQgY29kZSBtYXkgcmVxdWlyZSBzb21lCi1ub24taW50dWl0aXZlLCBub24tdHJpdmlh
bCBjaGFuZ2VzIGluIHRoZSBzY3JpcHQuIFRoaXMgaXMgZXNwZWNpYWxseQotcGFpbmZ1bCB3aGVu
IGV4cGVyaW1lbnRpbmcgd2l0aCB0aGUgY29kZS4KLQotIyBPdXIgU29sdXRpb24gIwotCi1QdW1w
IChmb3IgUHVtcCBpcyBVc2VmdWwgZm9yIE1ldGEgUHJvZ3JhbW1pbmcsIFByZXR0eSBVc2VmdWwg
Zm9yIE1ldGEKLVByb2dyYW1taW5nLCBvciBQcmFjdGljYWwgVXRpbGl0eSBmb3IgTWV0YSBQcm9n
cmFtbWluZywgd2hpY2hldmVyIHlvdQotcHJlZmVyKSBpcyBhIHNpbXBsZSBtZXRhLXByb2dyYW1t
aW5nIHRvb2wgZm9yIEMrKy4gVGhlIGlkZWEgaXMgdGhhdCBhCi1wcm9ncmFtbWVyIHdyaXRlcyBh
IGBmb28ucHVtcGAgZmlsZSB3aGljaCBjb250YWlucyBDKysgY29kZSBwbHVzIG1ldGEKLWNvZGUg
dGhhdCBtYW5pcHVsYXRlcyB0aGUgQysrIGNvZGUuIFRoZSBtZXRhIGNvZGUgY2FuIGhhbmRsZQot
aXRlcmF0aW9ucyBvdmVyIGEgcmFuZ2UsIG5lc3RlZCBpdGVyYXRpb25zLCBsb2NhbCBtZXRhIHZh
cmlhYmxlCi1kZWZpbml0aW9ucywgc2ltcGxlIGFyaXRobWV0aWMsIGFuZCBjb25kaXRpb25hbCBl
eHByZXNzaW9ucy4gWW91IGNhbgotdmlldyBpdCBhcyBhIHNtYWxsIERvbWFpbi1TcGVjaWZpYyBM
YW5ndWFnZS4gVGhlIG1ldGEgbGFuZ3VhZ2UgaXMKLWRlc2lnbmVkIHRvIGJlIG5vbi1pbnRydXNp
dmUgKHMudC4gaXQgd29uJ3QgY29uZnVzZSBFbWFjcycgQysrIG1vZGUsCi1mb3IgZXhhbXBsZSkg
YW5kIGNvbmNpc2UsIG1ha2luZyBQdW1wIGNvZGUgaW50dWl0aXZlIGFuZCBlYXN5IHRvCi1tYWlu
dGFpbi4KLQotIyMgSGlnaGxpZ2h0cyAjIwotCi0gICogVGhlIGltcGxlbWVudGF0aW9uIGlzIGlu
IGEgc2luZ2xlIFB5dGhvbiBzY3JpcHQgYW5kIHRodXMgdWx0cmEgcG9ydGFibGU6IG5vIGJ1aWxk
IG9yIGluc3RhbGxhdGlvbiBpcyBuZWVkZWQgYW5kIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3Jtcy4K
LSAgKiBQdW1wIHRyaWVzIHRvIGJlIHNtYXJ0IHdpdGggcmVzcGVjdCB0byBbR29vZ2xlJ3Mgc3R5
bGUgZ3VpZGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtc3R5bGVndWlkZS8pOiBp
dCBicmVha3MgbG9uZyBsaW5lcyAoZWFzeSB0byBoYXZlIHdoZW4gdGhleSBhcmUgZ2VuZXJhdGVk
KSBhdCBhY2NlcHRhYmxlIHBsYWNlcyB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMgYW5kIGluZGVu
dCB0aGUgY29udGludWF0aW9uIGxpbmVzIGNvcnJlY3RseS4KLSAgKiBUaGUgZm9ybWF0IGlzIGh1
bWFuLXJlYWRhYmxlIGFuZCBtb3JlIGNvbmNpc2UgdGhhbiBYTUwuCi0gICogVGhlIGZvcm1hdCB3
b3JrcyByZWxhdGl2ZWx5IHdlbGwgd2l0aCBFbWFjcycgQysrIG1vZGUuCi0KLSMjIEV4YW1wbGVz
ICMjCi0KLVRoZSBmb2xsb3dpbmcgUHVtcCBjb2RlICh3aGVyZSBtZXRhIGtleXdvcmRzIHN0YXJ0
IHdpdGggYCRgLCBgW1tgIGFuZCBgXV1gIGFyZSBtZXRhIGJyYWNrZXRzLCBhbmQgYCQkYCBzdGFy
dHMgYSBtZXRhIGNvbW1lbnQgdGhhdCBlbmRzIHdpdGggdGhlIGxpbmUpOgotCi1gYGAKLSR2YXIg
biA9IDMgICAgICQkIERlZmluZXMgYSBtZXRhIHZhcmlhYmxlIG4uCi0kcmFuZ2UgaSAwLi5uICAk
JCBEZWNsYXJlcyB0aGUgcmFuZ2Ugb2YgbWV0YSBpdGVyYXRvciBpIChpbmNsdXNpdmUpLgotJGZv
ciBpIFtbCi0gICAgICAgICAgICAgICAkJCBNZXRhIGxvb3AuCi0vLyBGb28kaSBkb2VzIGJsYWgg
Zm9yICRpLWFyeSBwcmVkaWNhdGVzLgotJHJhbmdlIGogMS4uaQotdGVtcGxhdGUgPHNpemVfdCBO
ICRmb3IgaiBbWywgdHlwZW5hbWUgQSRqXV0+Ci1jbGFzcyBGb28kaSB7Ci0kaWYgaSA9PSAwIFtb
Ci0gIGJsYWggYTsKLV1dICRlbGlmIGkgPD0gMiBbWwotICBibGFoIGI7Ci1dXSAkZWxzZSBbWwot
ICBibGFoIGM7Ci1dXQotfTsKLQotXV0KLWBgYAotCi13aWxsIGJlIHRyYW5zbGF0ZWQgYnkgdGhl
IFB1bXAgY29tcGlsZXIgdG86Ci0KLWBgYAotLy8gRm9vMCBkb2VzIGJsYWggZm9yIDAtYXJ5IHBy
ZWRpY2F0ZXMuCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1jbGFzcyBGb28wIHsKLSAgYmxhaCBhOwot
fTsKLQotLy8gRm9vMSBkb2VzIGJsYWggZm9yIDEtYXJ5IHByZWRpY2F0ZXMuCi10ZW1wbGF0ZSA8
c2l6ZV90IE4sIHR5cGVuYW1lIEExPgotY2xhc3MgRm9vMSB7Ci0gIGJsYWggYjsKLX07Ci0KLS8v
IEZvbzIgZG9lcyBibGFoIGZvciAyLWFyeSBwcmVkaWNhdGVzLgotdGVtcGxhdGUgPHNpemVfdCBO
LCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci1jbGFzcyBGb28yIHsKLSAgYmxhaCBiOwotfTsK
LQotLy8gRm9vMyBkb2VzIGJsYWggZm9yIDMtYXJ5IHByZWRpY2F0ZXMuCi10ZW1wbGF0ZSA8c2l6
ZV90IE4sIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTM+Ci1jbGFzcyBGb28z
IHsKLSAgYmxhaCBjOwotfTsKLWBgYAotCi1JbiBhbm90aGVyIGV4YW1wbGUsCi0KLWBgYAotJHJh
bmdlIGkgMS4ubgotRnVuYygkZm9yIGkgKyBbW2EkaV1dKTsKLSQkIFRoZSB0ZXh0IGJldHdlZW4g
aSBhbmQgW1sgaXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGl0ZXJhdGlvbnMuCi1gYGAKLQotd2ls
bCBnZW5lcmF0ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcyAod2l0aG91dCB0aGUgY29tbWVu
dHMpLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBuYDoKLQotYGBgCi1GdW5jKCk7ICAgICAg
ICAgICAgICAvLyBJZiBuIGlzIDAuCi1GdW5jKGExKTsgICAgICAgICAgICAvLyBJZiBuIGlzIDEu
Ci1GdW5jKGExICsgYTIpOyAgICAgICAvLyBJZiBuIGlzIDIuCi1GdW5jKGExICsgYTIgKyBhMyk7
ICAvLyBJZiBuIGlzIDMuCi0vLyBBbmQgc28gb24uLi4KLWBgYAotCi0jIyBDb25zdHJ1Y3RzICMj
Ci0KLVdlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRhIHByb2dyYW1taW5nIGNvbnN0cnVjdHM6
Ci0KLXwgYCR2YXIgaWQgPSBleHBgIHwgRGVmaW5lcyBhIG5hbWVkIGNvbnN0YW50IHZhbHVlLiBg
JGlkYCBpcyB2YWxpZCB1dGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWV0YSBsZXhpY2FsIGJs
b2NrLiB8Ci18Oi0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotfCBgJHJhbmdlIGlkIGV4cC4uZXhwYCB8IFNldHMgdGhlIHJhbmdlIG9mIGFu
IGl0ZXJhdGlvbiB2YXJpYWJsZSwgd2hpY2ggY2FuIGJlIHJldXNlZCBpbiBtdWx0aXBsZSBsb29w
cyBsYXRlci4gICAgICAgICAgfAotfCBgJGZvciBpZCBzZXAgW1sgY29kZSBdXWAgfCBJdGVyYXRp
b24uIFRoZSByYW5nZSBvZiBgaWRgIG11c3QgaGF2ZSBiZWVuIGRlZmluZWQgZWFybGllci4gYCRp
ZGAgaXMgdmFsaWQgaW4gYGNvZGVgLiAgICAgICAgIHwKLXwgYCQoJClgICAgICAgICAgIHwgR2Vu
ZXJhdGVzIGEgc2luZ2xlIGAkYCBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IGAkaWRgICAgICAgICAgICB8
IFZhbHVlIG9mIHRoZSBuYW1lZCBjb25zdGFudCBvciBpdGVyYXRpb24gdmFyaWFibGUuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCBgJChleHApYCAgICAg
ICAgfCBWYWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgYCRpZiBleHAg
W1sgY29kZSBdXSBlbHNlX2JyYW5jaGAgfCBDb25kaXRpb25hbC4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLXwgYFtbIGNvZGUgXV1gICAgIHwgTWV0YSBsZXhpY2FsIGJsb2NrLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8Ci18IGBjcHBfY29kZWAgICAgICB8IFJhdyBDKysgY29kZS4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAotfCBgJCQgY29tbWVudGAgICAgfCBNZXRhIGNvbW1lbnQuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKLQotKipOb3RlOioqIFRvIGdpdmUgdGhlIHVzZXIgc29tZSBm
cmVlZG9tIGluIGZvcm1hdHRpbmcgdGhlIFB1bXAgc291cmNlCi1jb2RlLCBQdW1wIGlnbm9yZXMg
YSBuZXctbGluZSBjaGFyYWN0ZXIgaWYgaXQncyByaWdodCBhZnRlciBgJGZvciBmb29gCi1vciBu
ZXh0IHRvIGBbW2Agb3IgYF1dYC4gV2l0aG91dCB0aGlzIHJ1bGUgeW91J2xsIG9mdGVuIGJlIGZv
cmNlZCB0byB3cml0ZQotdmVyeSBsb25nIGxpbmVzIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQu
IFRoZXJlZm9yZSBzb21ldGltZXMgeW91IG1heQotbmVlZCB0byBpbnNlcnQgYW4gZXh0cmEgbmV3
LWxpbmUgaW4gc3VjaCBwbGFjZXMgZm9yIGEgbmV3LWxpbmUgdG8gc2hvdwotdXAgaW4geW91ciBv
dXRwdXQuCi0KLSMjIEdyYW1tYXIgIyMKLQotYGBgCi1jb2RlIDo6PSBhdG9taWNfY29kZSoKLWF0
b21pY19jb2RlIDo6PSAkdmFyIGlkID0gZXhwCi0gICAgfCAkdmFyIGlkID0gW1sgY29kZSBdXQot
ICAgIHwgJHJhbmdlIGlkIGV4cC4uZXhwCi0gICAgfCAkZm9yIGlkIHNlcCBbWyBjb2RlIF1dCi0g
ICAgfCAkKCQpCi0gICAgfCAkaWQKLSAgICB8ICQoZXhwKQotICAgIHwgJGlmIGV4cCBbWyBjb2Rl
IF1dIGVsc2VfYnJhbmNoCi0gICAgfCBbWyBjb2RlIF1dCi0gICAgfCBjcHBfY29kZQotc2VwIDo6
PSBjcHBfY29kZSB8IGVtcHR5X3N0cmluZwotZWxzZV9icmFuY2ggOjo9ICRlbHNlIFtbIGNvZGUg
XV0KLSAgICB8ICRlbGlmIGV4cCBbWyBjb2RlIF1dIGVsc2VfYnJhbmNoCi0gICAgfCBlbXB0eV9z
dHJpbmcKLWV4cCA6Oj0gc2ltcGxlX2V4cHJlc3Npb25faW5fUHl0aG9uX3N5bnRheAotYGBgCi0K
LSMjIENvZGUgIyMKLQotWW91IGNhbiBmaW5kIHRoZSBzb3VyY2UgY29kZSBvZiBQdW1wIGluIFtz
Y3JpcHRzL3B1bXAucHldKC4uL3NjcmlwdHMvcHVtcC5weSkuIEl0IGlzIHN0aWxsCi12ZXJ5IHVu
cG9saXNoZWQgYW5kIGxhY2tzIGF1dG9tYXRlZCB0ZXN0cywgYWx0aG91Z2ggaXQgaGFzIGJlZW4K
LXN1Y2Nlc3NmdWxseSB1c2VkIG1hbnkgdGltZXMuIElmIHlvdSBmaW5kIGEgY2hhbmNlIHRvIHVz
ZSBpdCBpbiB5b3VyCi1wcm9qZWN0LCBwbGVhc2UgbGV0IHVzIGtub3cgd2hhdCB5b3UgdGhpbmsh
ICBXZSBhbHNvIHdlbGNvbWUgaGVscCBvbgotaW1wcm92aW5nIFB1bXAuCi0KLSMjIFJlYWwgRXhh
bXBsZXMgIyMKLQotWW91IGNhbiBmaW5kIHJlYWwtd29ybGQgYXBwbGljYXRpb25zIG9mIFB1bXAg
aW4gW0dvb2dsZSBUZXN0XShodHRwOi8vd3d3Lmdvb2dsZS5jb20vY29kZXNlYXJjaD9xPWZpbGUl
M0FcLnB1bXAlMjQrcGFja2FnZSUzQWh0dHAlM0ElMkYlMkZnb29nbGV0ZXN0XC5nb29nbGVjb2Rl
XC5jb20pIGFuZCBbR29vZ2xlIE1vY2tdKGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9jb2Rlc2VhcmNo
P3E9ZmlsZSUzQVwucHVtcCUyNCtwYWNrYWdlJTNBaHR0cCUzQSUyRiUyRmdvb2dsZW1vY2tcLmdv
b2dsZWNvZGVcLmNvbSkuICBUaGUgc291cmNlIGZpbGUgYGZvby5oLnB1bXBgIGdlbmVyYXRlcyBg
Zm9vLmhgLgotCi0jIyBUaXBzICMjCi0KLSAgKiBJZiBhIG1ldGEgdmFyaWFibGUgaXMgZm9sbG93
ZWQgYnkgYSBsZXR0ZXIgb3IgZGlnaXQsIHlvdSBjYW4gc2VwYXJhdGUgdGhlbSB1c2luZyBgW1td
XWAsIHdoaWNoIGluc2VydHMgYW4gZW1wdHkgc3RyaW5nLiBGb3IgZXhhbXBsZSBgRm9vJGpbW11d
SGVscGVyYCBnZW5lcmF0ZSBgRm9vMUhlbHBlcmAgd2hlbiBgamAgaXMgMS4KLSAgKiBUbyBhdm9p
ZCBleHRyYS1sb25nIFB1bXAgc291cmNlIGxpbmVzLCB5b3UgY2FuIGJyZWFrIGEgbGluZSBhbnl3
aGVyZSB5b3Ugd2FudCBieSBpbnNlcnRpbmcgYFtbXV1gIGZvbGxvd2VkIGJ5IGEgbmV3IGxpbmUu
IFNpbmNlIGFueSBuZXctbGluZSBjaGFyYWN0ZXIgbmV4dCB0byBgW1tgIG9yIGBdXWAgaXMgaWdu
b3JlZCwgdGhlIGdlbmVyYXRlZCBjb2RlIHdvbid0IGNvbnRhaW4gdGhpcyBuZXcgbGluZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19TYW1wbGVzLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
ZG9jcy9WMV83X1NhbXBsZXMubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMWQy
MDA1NjczNS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19TYW1wbGVz
Lm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSWYgeW91J3JlIGxpa2UgdXMsIHlv
dSdkIGxpa2UgdG8gbG9vayBhdCBzb21lIEdvb2dsZSBUZXN0IHNhbXBsZSBjb2RlLiAgVGhlCi1b
c2FtcGxlcyBmb2xkZXJdKC4uL3NhbXBsZXMpIGhhcyBhIG51bWJlciBvZiB3ZWxsLWNvbW1lbnRl
ZCBzYW1wbGVzIHNob3dpbmcgaG93IHRvIHVzZSBhCi12YXJpZXR5IG9mIEdvb2dsZSBUZXN0IGZl
YXR1cmVzLgotCi0gICogW1NhbXBsZSAjMV0oLi4vc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNj
KSBzaG93cyB0aGUgYmFzaWMgc3RlcHMgb2YgdXNpbmcgR29vZ2xlIFRlc3QgdG8gdGVzdCBDKysg
ZnVuY3Rpb25zLgotICAqIFtTYW1wbGUgIzJdKC4uL3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5j
Yykgc2hvd3MgYSBtb3JlIGNvbXBsZXggdW5pdCB0ZXN0IGZvciBhIGNsYXNzIHdpdGggbXVsdGlw
bGUgbWVtYmVyIGZ1bmN0aW9ucy4KLSAgKiBbU2FtcGxlICMzXSguLi9zYW1wbGVzL3NhbXBsZTNf
dW5pdHRlc3QuY2MpIHVzZXMgYSB0ZXN0IGZpeHR1cmUuCi0gICogW1NhbXBsZSAjNF0oLi4vc2Ft
cGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjKSBpcyBhbm90aGVyIGJhc2ljIGV4YW1wbGUgb2YgdXNp
bmcgR29vZ2xlIFRlc3QuCi0gICogW1NhbXBsZSAjNV0oLi4vc2FtcGxlcy9zYW1wbGU1X3VuaXR0
ZXN0LmNjKSB0ZWFjaGVzIGhvdyB0byByZXVzZSBhIHRlc3QgZml4dHVyZSBpbiBtdWx0aXBsZSB0
ZXN0IGNhc2VzIGJ5IGRlcml2aW5nIHN1Yi1maXh0dXJlcyBmcm9tIGl0LgotICAqIFtTYW1wbGUg
IzZdKC4uL3NhbXBsZXMvc2FtcGxlNl91bml0dGVzdC5jYykgZGVtb25zdHJhdGVzIHR5cGUtcGFy
YW1ldGVyaXplZCB0ZXN0cy4KLSAgKiBbU2FtcGxlICM3XSguLi9zYW1wbGVzL3NhbXBsZTdfdW5p
dHRlc3QuY2MpIHRlYWNoZXMgdGhlIGJhc2ljcyBvZiB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
LgotICAqIFtTYW1wbGUgIzhdKC4uL3NhbXBsZXMvc2FtcGxlOF91bml0dGVzdC5jYykgc2hvd3Mg
dXNpbmcgYENvbWJpbmUoKWAgaW4gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSAgKiBbU2Ft
cGxlICM5XSguLi9zYW1wbGVzL3NhbXBsZTlfdW5pdHRlc3QuY2MpIHNob3dzIHVzZSBvZiB0aGUg
bGlzdGVuZXIgQVBJIHRvIG1vZGlmeSBHb29nbGUgVGVzdCdzIGNvbnNvbGUgb3V0cHV0IGFuZCB0
aGUgdXNlIG9mIGl0cyByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QgcmVzdWx0cy4KLSAg
KiBbU2FtcGxlICMxMF0oLi4vc2FtcGxlcy9zYW1wbGUxMF91bml0dGVzdC5jYykgc2hvd3MgdXNl
IG9mIHRoZSBsaXN0ZW5lciBBUEkgdG8gaW1wbGVtZW50IGEgcHJpbWl0aXZlIG1lbW9yeSBsZWFr
IGNoZWNrZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9kb2NzL1YxXzdfWGNvZGVHdWlkZS5t
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2RvY3MvVjFfN19YY29kZUd1aWRlLm1kCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZjI0YmY1MWJmYzQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9kb2NzL1YxXzdfWGNvZGVHdWlkZS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAK
LQotCi1UaGlzIGd1aWRlIHdpbGwgZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBHb29nbGUgVGVzdGlu
ZyBGcmFtZXdvcmsgaW4geW91ciBYY29kZSBwcm9qZWN0cyBvbiBNYWMgT1MgWC4gVGhpcyB0dXRv
cmlhbCBiZWdpbnMgYnkgcXVpY2tseSBleHBsYWluaW5nIHdoYXQgdG8gZG8gZm9yIGV4cGVyaWVu
Y2VkIHVzZXJzLiBBZnRlciB0aGUgcXVpY2sgc3RhcnQsIHRoZSBndWlkZSBnb2VzIHByb3ZpZGVz
IGFkZGl0aW9uYWwgZXhwbGFuYXRpb24gYWJvdXQgZWFjaCBzdGVwLgotCi0jIFF1aWNrIFN0YXJ0
ICMKLQotSGVyZSBpcyB0aGUgcXVpY2sgZ3VpZGUgZm9yIHVzaW5nIEdvb2dsZSBUZXN0IGluIHlv
dXIgWGNvZGUgcHJvamVjdC4KLQotICAxLiBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIFt3
ZWJzaXRlXShodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdCkgdXNpbmcgdGhpcyBj
b21tYW5kOiBgc3ZuIGNoZWNrb3V0IGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2
bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHlgCi0gIDEuIE9wZW4gdXAgdGhlIGBndGVzdC54
Y29kZXByb2pgIGluIHRoZSBgZ29vZ2xldGVzdC1yZWFkLW9ubHkveGNvZGUvYCBkaXJlY3Rvcnkg
YW5kIGJ1aWxkIHRoZSBndGVzdC5mcmFtZXdvcmsuCi0gIDEuIENyZWF0ZSBhIG5ldyAiU2hlbGwg
VG9vbCIgdGFyZ2V0IGluIHlvdXIgWGNvZGUgcHJvamVjdCBjYWxsZWQgc29tZXRoaW5nIGxpa2Ug
IlVuaXRUZXN0cyIKLSAgMS4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBwcm9qZWN0
IGFuZCBhZGQgaXQgdG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhh
c2Ugb2YgIlVuaXRUZXN0cyIKLSAgMS4gQWRkIHlvdXIgdW5pdCB0ZXN0IHNvdXJjZSBjb2RlIHRv
IHRoZSAiQ29tcGlsZSBTb3VyY2VzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgotICAxLiBF
ZGl0IHRoZSAiVW5pdFRlc3RzIiBleGVjdXRhYmxlIGFuZCBhZGQgYW4gZW52aXJvbm1lbnQgdmFy
aWFibGUgbmFtZWQgIkRZTERcX0ZSQU1FV09SS1xfUEFUSCIgd2l0aCBhIHZhbHVlIGVxdWFsIHRv
IHRoZSBwYXRoIHRvIHRoZSBmcmFtZXdvcmsgY29udGFpbmluZyB0aGUgZ3Rlc3QuZnJhbWV3b3Jr
IHJlbGF0aXZlIHRvIHRoZSBjb21waWxlZCBleGVjdXRhYmxlLgotICAxLiBCdWlsZCBhbmQgR28K
LQotVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBmdXJ0aGVyIGV4cGxhaW4gZWFjaCBvZiB0aGUgc3Rl
cHMgbGlzdGVkIGFib3ZlIGluIGRlcHRoLCBkZXNjcmliaW5nIGluIG1vcmUgZGV0YWlsIGhvdyB0
byBjb21wbGV0ZSBpdCBpbmNsdWRpbmcgc29tZSB2YXJpYXRpb25zLgotCi0jIEdldCB0aGUgU291
cmNlICMKLQotQ3VycmVudGx5LCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGRpc2N1c3NlZCBoZXJlIGlz
bid0IGF2YWlsYWJsZSBpbiBhIHRhZ2dlZCByZWxlYXNlIG9mIEdvb2dsZSBUZXN0LCBpdCBpcyBv
bmx5IGF2YWlsYWJsZSBpbiB0aGUgdHJ1bmsuIEFzIGV4cGxhaW5lZCBhdCB0aGUgR29vZ2xlIFRl
c3QgW3NpdGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0L3NvdXJjZS9jaGVj
a291dCI+c3ZuKSwgeW91IGNhbiBnZXQgdGhlIGNvZGUgZnJvbSBhbm9ueW1vdXMgU1ZOIHdpdGgg
dGhpcyBjb21tYW5kOgotCi1gYGAKLXN2biBjaGVja291dCBodHRwOi8vZ29vZ2xldGVzdC5nb29n
bGVjb2RlLmNvbS9zdm4vdHJ1bmsvIGdvb2dsZXRlc3QtcmVhZC1vbmx5Ci1gYGAKLQotQWx0ZXJu
YXRpdmVseSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggU3VidmVyc2lvbiBpbiB5b3VyIG93biBj
b2RlIGJhc2UsIHlvdSBjYW4gYWRkIEdvb2dsZSBUZXN0IGFzIGFuIGV4dGVybmFsIGRlcGVuZGVu
Y3kgdG8geW91ciBvd24gU3VidmVyc2lvbiByZXBvc2l0b3J5LiBCeSBmb2xsb3dpbmcgdGhpcyBh
cHByb2FjaCwgZXZlcnlvbmUgdGhhdCBjaGVja3Mgb3V0IHlvdXIgc3ZuIHJlcG9zaXRvcnkgd2ls
bCBhbHNvIHJlY2VpdmUgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IChhIHNwZWNpZmljIHZlcnNpb24s
IGlmIHlvdSB3aXNoKSB3aXRob3V0IGhhdmluZyB0byBjaGVjayBpdCBvdXQgZXhwbGljaXRseS4g
VGhpcyBtYWtlcyB0aGUgc2V0IHVwIG9mIHlvdXIgcHJvamVjdCBzaW1wbGVyIGFuZCByZWR1Y2Vz
IHRoZSBjb3BpZWQgY29kZSBpbiB0aGUgcmVwb3NpdG9yeS4KLQotVG8gdXNlIGBzdm46ZXh0ZXJu
YWxzYCwgZGVjaWRlIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvIGhhdmUgdGhlIGV4dGVybmFsIHNv
dXJjZSByZXNpZGUuIFlvdSBtaWdodCBjaG9vc2UgdG8gcHV0IHRoZSBleHRlcm5hbCBzb3VyY2Ug
aW5zaWRlIHRoZSB0cnVuaywgYmVjYXVzZSB5b3Ugd2FudCBpdCB0byBiZSBwYXJ0IG9mIHRoZSBi
cmFuY2ggd2hlbiB5b3UgbWFrZSBhIHJlbGVhc2UuIEhvd2V2ZXIsIGtlZXBpbmcgaXQgb3V0c2lk
ZSB0aGUgdHJ1bmsgaW4gYSB2ZXJzaW9uLXRhZ2dlZCBkaXJlY3RvcnkgY2FsbGVkIHNvbWV0aGlu
ZyBsaWtlIGB0aGlyZC1wYXJ0eS9nb29nbGV0ZXN0LzEuMC4xYCwgaXMgYW5vdGhlciBvcHRpb24u
IE9uY2UgdGhlIGxvY2F0aW9uIGlzIGVzdGFibGlzaGVkLCB1c2UgYHN2biBwcm9wZWRpdCBzdm46
ZXh0ZXJuYWxzIF9kaXJlY3RvcnlfYCB0byBzZXQgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkg
b24gYSBkaXJlY3RvcnkgaW4geW91ciByZXBvc2l0b3J5LiBUaGlzIGRpcmVjdG9yeSB3b24ndCBj
b250YWluIHRoZSBjb2RlLCBidXQgYmUgaXRzIHZlcnNpb25lZCBwYXJlbnQgZGlyZWN0b3J5Lgot
Ci1UaGUgY29tbWFuZCBgc3ZuIHByb3BlZGl0YCB3aWxsIGJyaW5nIHVwIHlvdXIgU3VidmVyc2lv
biBlZGl0b3IsIG1ha2luZyBlZGl0aW5nIHRoZSBsb25nLCAocG90ZW50aWFsbHkgbXVsdGktbGlu
ZSkgcHJvcGVydHkgc2ltcGxlci4gVGhpcyBzYW1lIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjaGVj
ayBvdXQgYSB0YWdnZWQgYnJhbmNoLCBieSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgVVJMIChlLmcu
IGBodHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdGFncy9yZWxlYXNlLTEuMC4x
YCkuIEFkZGl0aW9uYWxseSwgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVydHkgYWxsb3dzIHRoZSBz
cGVjaWZpY2F0aW9uIG9mIGEgcGFydGljdWxhciByZXZpc2lvbiBvZiB0aGUgdHJ1bmsgd2l0aCB0
aGUgYC1yXyMjX2Agb3B0aW9uIChlLmcuIGBleHRlcm5hbHMvc3JjL2dvb2dsZXRlc3QgLXI2MCBo
dHRwOi8vZ29vZ2xldGVzdC5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtgKS4KLQotSGVyZSBpcyBh
biBleGFtcGxlIG9mIHVzaW5nIHRoZSBzdm46ZXh0ZXJuYWxzIHByb3BlcnRpZXMgb24gYSB0cnVu
ayAocmVhZCB2aWEgYHN2biBwcm9wZ2V0YCkgb2YgYSBwcm9qZWN0LiBUaGlzIHZhbHVlIGNoZWNr
cyBvdXQgYSBjb3B5IG9mIEdvb2dsZSBUZXN0IGludG8gdGhlIGB0cnVuay9leHRlcm5hbHMvc3Jj
L2dvb2dsZXRlc3QvYCBkaXJlY3RvcnkuCi0KLWBgYAotW0NvbXB1dGVyOnN2bl0gdXNlciQgc3Zu
IHByb3BnZXQgc3ZuOmV4dGVybmFscyB0cnVuawotZXh0ZXJuYWxzL3NyYy9nb29nbGV0ZXN0IGh0
dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuawotYGBgCi0KLSMgQWRkIHRo
ZSBGcmFtZXdvcmsgdG8gWW91ciBQcm9qZWN0ICMKLQotVGhlIG5leHQgc3RlcCBpcyB0byBidWls
ZCBhbmQgYWRkIHRoZSBndGVzdC5mcmFtZXdvcmsgdG8geW91ciBvd24gcHJvamVjdC4gVGhpcyBn
dWlkZSBkZXNjcmliZXMgdHdvIGNvbW1vbiB3YXlzIGJlbG93LgotCi0gICogKipPcHRpb24gMSoq
IC0tLSBUaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBHb29nbGUgVGVzdCB0byB5b3VyIG93biBwcm9q
ZWN0LCBpcyB0byBvcGVuIGd0ZXN0Lnhjb2RlcHJvaiAoZm91bmQgaW4gdGhlIHhjb2RlLyBkaXJl
Y3Rvcnkgb2YgdGhlIEdvb2dsZSBUZXN0IHRydW5rKSBhbmQgYnVpbGQgdGhlIGZyYW1ld29yayBt
YW51YWxseS4gVGhlbiwgYWRkIHRoZSBidWlsdCBmcmFtZXdvcmsgaW50byB5b3VyIHByb2plY3Qg
dXNpbmcgdGhlICJBZGQtPkV4aXN0aW5nIEZyYW1ld29yay4uLiIgZnJvbSB0aGUgY29udGV4dCBt
ZW51IG9yICJQcm9qZWN0LT5BZGQuLi4iIGZyb20gdGhlIG1haW4gbWVudS4gVGhlIGd0ZXN0LmZy
YW1ld29yayBpcyByZWxvY2F0YWJsZSBhbmQgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIG9iamVj
dCBjb2RlIHRoYXQgeW91J2xsIG5lZWQgdG8gbWFrZSB0ZXN0cy4gVGhpcyBtZXRob2QgcmVxdWly
ZXMgcmVidWlsZGluZyBldmVyeSB0aW1lIHlvdSB1cGdyYWRlIEdvb2dsZSBUZXN0IGluIHlvdXIg
cHJvamVjdC4KLSAgKiAqKk9wdGlvbiAyKiogLS0tIElmIHlvdSBhcmUgZ29pbmcgdG8gYmUgbGl2
aW5nIG9mZiB0aGUgdHJ1bmsgb2YgR29vZ2xlIFRlc3QsIGluY29ycG9yYXRpbmcgaXRzIGxhdGVz
dCBmZWF0dXJlcyBpbnRvIHlvdXIgdW5pdCB0ZXN0cyAob3IgYXJlIGEgR29vZ2xlIFRlc3QgZGV2
ZWxvcGVyIHlvdXJzZWxmKS4gWW91J2xsIHdhbnQgdG8gcmVidWlsZCB0aGUgZnJhbWV3b3JrIGV2
ZXJ5IHRpbWUgdGhlIHNvdXJjZSB1cGRhdGVzLiB0byBkbyB0aGlzLCB5b3UnbGwgbmVlZCB0byBh
ZGQgdGhlIGd0ZXN0Lnhjb2RlcHJvaiBmaWxlLCBub3QgdGhlIGZyYW1ld29yayBpdHNlbGYsIHRv
IHlvdXIgb3duIFhjb2RlIHByb2plY3QuIFRoZW4sIGZyb20gdGhlIGJ1aWxkIHByb2R1Y3RzIHRo
YXQgYXJlIHJldmVhbGVkIGJ5IHRoZSBwcm9qZWN0J3MgZGlzY2xvc3VyZSB0cmlhbmdsZSwgeW91
IGNhbiBmaW5kIHRoZSBndGVzdC5mcmFtZXdvcmssIHdoaWNoIGNhbiBiZSBhZGRlZCB0byB5b3Vy
IHRhcmdldHMgKGRpc2N1c3NlZCBiZWxvdykuCi0KLSMgTWFrZSBhIFRlc3QgVGFyZ2V0ICMKLQot
VG8gc3RhcnQgd3JpdGluZyB0ZXN0cywgbWFrZSBhIG5ldyAiU2hlbGwgVG9vbCIgdGFyZ2V0LiBU
aGlzIHRhcmdldCB0ZW1wbGF0ZSBpcyBhdmFpbGFibGUgdW5kZXIgQlNELCBDb2NvYSwgb3IgQ2Fy
Ym9uLiBBZGQgeW91ciB1bml0IHRlc3Qgc291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJj
ZXMiIGJ1aWxkIHBoYXNlIG9mIHRoZSB0YXJnZXQuCi0KLU5leHQsIHlvdSdsbCB3YW50IHRvIGFk
ZCBndGVzdC5mcmFtZXdvcmsgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgdXBvbiB3
aGljaCBvcHRpb24geW91IGNob3NlIGFib3ZlLgotCi0gICogKipPcHRpb24gMSoqIC0tLSBEdXJp
bmcgY29tcGlsYXRpb24sIFhjb2RlIHdpbGwgbmVlZCB0byBrbm93IHRoYXQgeW91IGFyZSBsaW5r
aW5nIGFnYWluc3QgdGhlIGd0ZXN0LmZyYW1ld29yay4gQWRkIHRoZSBndGVzdC5mcmFtZXdvcmsg
dG8gdGhlICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91ciB0
ZXN0IHRhcmdldC4gVGhpcyB3aWxsIGluY2x1ZGUgdGhlIEdvb2dsZSBUZXN0IGhlYWRlcnMgaW4g
eW91ciBoZWFkZXIgc2VhcmNoIHBhdGgsIGFuZCB3aWxsIHRlbGwgdGhlIGxpbmtlciB3aGVyZSB0
byBmaW5kIHRoZSBsaWJyYXJ5LgotICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91ciB3b3JraW5n
IG91dCBvZiB0aGUgdHJ1bmssIHlvdSdsbCBhbHNvIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29y
ayB0byB5b3VyICJMaW5rIEJpbmFyeSB3aXRoIExpYnJhcmllcyIgYnVpbGQgcGhhc2Ugb2YgeW91
ciB0ZXN0IHRhcmdldC4gSW4gYWRkaXRpb24sIHlvdSdsbCAgd2FudCB0byBhZGQgdGhlIGd0ZXN0
LmZyYW1ld29yayBhcyBhIGRlcGVuZGVuY3kgdG8geW91ciB1bml0IHRlc3QgdGFyZ2V0LiBUaGlz
IHdheSwgWGNvZGUgd2lsbCBtYWtlIHN1cmUgdGhhdCBndGVzdC5mcmFtZXdvcmsgaXMgdXAgdG8g
ZGF0ZSwgZXZlcnkgdGltZSB5b3VyIGJ1aWxkIHlvdXIgdGFyZ2V0LiBGaW5hbGx5LCBpZiB5b3Ug
ZG9uJ3Qgc2hhcmUgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aCBHb29nbGUgVGVzdCwgeW91J2xsIGhh
dmUgdG8gY29weSB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGludG8geW91ciBvd24gYnVpbGQgcHJvZHVj
dHMgZGlyZWN0b3J5IHVzaW5nIGEgIlJ1biBTY3JpcHQiIGJ1aWxkIHBoYXNlLgotCi0jIFNldCBV
cCB0aGUgRXhlY3V0YWJsZSBSdW4gRW52aXJvbm1lbnQgIwotCi1TaW5jZSB0aGUgdW5pdCB0ZXN0
IGV4ZWN1dGFibGUgaXMgYSBzaGVsbCB0b29sLCBpdCBkb2Vzbid0IGhhdmUgYSBidW5kbGUgd2l0
aCBhIGBDb250ZW50cy9GcmFtZXdvcmtzYCBkaXJlY3RvcnksIGluIHdoaWNoIHRvIHBsYWNlIGd0
ZXN0LmZyYW1ld29yay4gSW5zdGVhZCwgdGhlIGR5bmFtaWMgbGlua2VyIG11c3QgYmUgdG9sZCBh
dCBydW50aW1lIHRvIHNlYXJjaCBmb3IgdGhlIGZyYW1ld29yayBpbiBhbm90aGVyIGxvY2F0aW9u
LiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZyB0aGUgIkRZTERcX0ZSQU1FV09S
S1xfUEFUSCIgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlICJFZGl0IEFjdGl2ZSBFeGVjdXRh
YmxlIC4uLiIgQXJndW1lbnRzIHRhYiwgdW5kZXIgIlZhcmlhYmxlcyB0byBiZSBzZXQgaW4gdGhl
IGVudmlyb25tZW50OiIuIFRoZSBwYXRoIGZvciB0aGlzIHZhbHVlIGlzIHRoZSBwYXRoIChyZWxh
dGl2ZSBvciBhYnNvbHV0ZSkgb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBndGVzdC5m
cmFtZXdvcmsuCi0KLUlmIHlvdSBoYXZlbid0IHNldCB1cCB0aGUgRFlMRFxfRlJBTUVXT1JLXF9Q
QVRILCBjb3JyZWN0bHksIHlvdSBtaWdodCBnZXQgYSBtZXNzYWdlIGxpa2UgdGhpczoKLQotYGBg
Ci1bU2Vzc2lvbiBzdGFydGVkIGF0IDIwMDgtMDgtMTUgMDY6MjM6NTcgLTA2MDAuXQotICBkeWxk
OiBMaWJyYXJ5IG5vdCBsb2FkZWQ6IEBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzL2d0ZXN0LmZy
YW1ld29yay9WZXJzaW9ucy9BL2d0ZXN0Ci0gICAgUmVmZXJlbmNlZCBmcm9tOiAvVXNlcnMvdXNl
cm5hbWUvRG9jdW1lbnRzL1NhbmRib3gvZ3Rlc3RTYW1wbGUvYnVpbGQvRGVidWcvV2lkZ2V0RnJh
bWV3b3JrVGVzdAotICAgIFJlYXNvbjogaW1hZ2Ugbm90IGZvdW5kCi1gYGAKLQotVG8gY29ycmVj
dCB0aGlzIHByb2JsZW0sIGdvdCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGV4ZWN1
dGFibGUgbmFtZWQgaW4gIlJlZmVyZW5jZWQgZnJvbToiIHZhbHVlIGluIHRoZSBlcnJvciBtZXNz
YWdlIGFib3ZlLiBUaGVuLCB3aXRoIHRoZSB0ZXJtaW5hbCBpbiB0aGlzIGxvY2F0aW9uLCBmaW5k
IHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZ3Rlc3Qu
ZnJhbWV3b3JrLiBUaGF0IGlzIHRoZSB2YWx1ZSB5b3UnbGwgbmVlZCB0byBzZXQgYXMgdGhlIERZ
TERcX0ZSQU1FV09SS1xfUEFUSC4KLQotIyBCdWlsZCBhbmQgR28gIwotCi1Ob3csIHdoZW4geW91
IGNsaWNrICJCdWlsZCBhbmQgR28iLCB0aGUgdGVzdCB3aWxsIGJlIGV4ZWN1dGVkLiBEdW1waW5n
IG91dCBzb21ldGhpbmcgbGlrZSB0aGlzOgotCi1gYGAKLVtTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAw
OC0wOC0wNiAwNjozNjoxMyAtMDYwMC5dCi1bPT09PT09PT09PV0gUnVubmluZyAyIHRlc3RzIGZy
b20gMSB0ZXN0IGNhc2UuCi1bLS0tLS0tLS0tLV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgc2V0
LXVwLgotWy0tLS0tLS0tLS1dIDIgdGVzdHMgZnJvbSBXaWRnZXRJbml0aWFsaXplclRlc3QKLVsg
UlVOICAgICAgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9yCi1bICAgICAg
IE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb25zdHJ1Y3RvcgotWyBSVU4gICAgICBd
IFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgotWyAgICAgICBPSyBdIFdpZGdl
dEluaXRpYWxpemVyVGVzdC5UZXN0Q29udmVyc2lvbgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDIgdGVzdHMgZnJvbSAxIHRlc3Qg
Y2FzZSByYW4uCi1bICBQQVNTRUQgIF0gMiB0ZXN0cy4KLQotVGhlIERlYnVnZ2VyIGhhcyBleGl0
ZWQgd2l0aCBzdGF0dXMgMC4gIAotYGBgCi0KLSMgU3VtbWFyeSAjCi0KLVVuaXQgdGVzdGluZyBp
cyBhIHZhbHVhYmxlIHdheSB0byBlbnN1cmUgeW91ciBkYXRhIG1vZGVsIHN0YXlzIHZhbGlkIGV2
ZW4gZHVyaW5nIHJhcGlkIGRldmVsb3BtZW50IG9yIHJlZmFjdG9yaW5nLiBUaGUgR29vZ2xlIFRl
c3RpbmcgRnJhbWV3b3JrIGlzIGEgZ3JlYXQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBh
bmQgQysrIHdoaWNoIGludGVncmF0ZXMgd2VsbCB3aXRoIGFuIFhjb2RlIGRldmVsb3BtZW50IGVu
dmlyb25tZW50LgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2RvY3MvWGNvZGVHdWlkZS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2RvY3MvWGNvZGVHdWlkZS5t
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyNGJmNTFiZmM0Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvZG9jcy9YY29kZUd1aWRlLm1kCisrKyAvZGV2L251bGwKQEAg
LTEsOTMgKzAsMCBAQAotCi0KLVRoaXMgZ3VpZGUgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhl
IEdvb2dsZSBUZXN0aW5nIEZyYW1ld29yayBpbiB5b3VyIFhjb2RlIHByb2plY3RzIG9uIE1hYyBP
UyBYLiBUaGlzIHR1dG9yaWFsIGJlZ2lucyBieSBxdWlja2x5IGV4cGxhaW5pbmcgd2hhdCB0byBk
byBmb3IgZXhwZXJpZW5jZWQgdXNlcnMuIEFmdGVyIHRoZSBxdWljayBzdGFydCwgdGhlIGd1aWRl
IGdvZXMgcHJvdmlkZXMgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBhYm91dCBlYWNoIHN0ZXAuCi0K
LSMgUXVpY2sgU3RhcnQgIwotCi1IZXJlIGlzIHRoZSBxdWljayBndWlkZSBmb3IgdXNpbmcgR29v
Z2xlIFRlc3QgaW4geW91ciBYY29kZSBwcm9qZWN0LgotCi0gIDEuIERvd25sb2FkIHRoZSBzb3Vy
Y2UgZnJvbSB0aGUgW3dlYnNpdGVdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGV0ZXN0
KSB1c2luZyB0aGlzIGNvbW1hbmQ6IGBzdm4gY2hlY2tvdXQgaHR0cDovL2dvb2dsZXRlc3QuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rLyBnb29nbGV0ZXN0LXJlYWQtb25seWAKLSAgMS4gT3BlbiB1
cCB0aGUgYGd0ZXN0Lnhjb2RlcHJvamAgaW4gdGhlIGBnb29nbGV0ZXN0LXJlYWQtb25seS94Y29k
ZS9gIGRpcmVjdG9yeSBhbmQgYnVpbGQgdGhlIGd0ZXN0LmZyYW1ld29yay4KLSAgMS4gQ3JlYXRl
IGEgbmV3ICJTaGVsbCBUb29sIiB0YXJnZXQgaW4geW91ciBYY29kZSBwcm9qZWN0IGNhbGxlZCBz
b21ldGhpbmcgbGlrZSAiVW5pdFRlc3RzIgotICAxLiBBZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0
byB5b3VyIHByb2plY3QgYW5kIGFkZCBpdCB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFy
aWVzIiBidWlsZCBwaGFzZSBvZiAiVW5pdFRlc3RzIgotICAxLiBBZGQgeW91ciB1bml0IHRlc3Qg
c291cmNlIGNvZGUgdG8gdGhlICJDb21waWxlIFNvdXJjZXMiIGJ1aWxkIHBoYXNlIG9mICJVbml0
VGVzdHMiCi0gIDEuIEVkaXQgdGhlICJVbml0VGVzdHMiIGV4ZWN1dGFibGUgYW5kIGFkZCBhbiBl
bnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCAiRFlMRFxfRlJBTUVXT1JLXF9QQVRIIiB3aXRoIGEg
dmFsdWUgZXF1YWwgdG8gdGhlIHBhdGggdG8gdGhlIGZyYW1ld29yayBjb250YWluaW5nIHRoZSBn
dGVzdC5mcmFtZXdvcmsgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVkIGV4ZWN1dGFibGUuCi0gIDEu
IEJ1aWxkIGFuZCBHbwotCi1UaGUgZm9sbG93aW5nIHNlY3Rpb25zIGZ1cnRoZXIgZXhwbGFpbiBl
YWNoIG9mIHRoZSBzdGVwcyBsaXN0ZWQgYWJvdmUgaW4gZGVwdGgsIGRlc2NyaWJpbmcgaW4gbW9y
ZSBkZXRhaWwgaG93IHRvIGNvbXBsZXRlIGl0IGluY2x1ZGluZyBzb21lIHZhcmlhdGlvbnMuCi0K
LSMgR2V0IHRoZSBTb3VyY2UgIwotCi1DdXJyZW50bHksIHRoZSBndGVzdC5mcmFtZXdvcmsgZGlz
Y3Vzc2VkIGhlcmUgaXNuJ3QgYXZhaWxhYmxlIGluIGEgdGFnZ2VkIHJlbGVhc2Ugb2YgR29vZ2xl
IFRlc3QsIGl0IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSB0cnVuay4gQXMgZXhwbGFpbmVkIGF0
IHRoZSBHb29nbGUgVGVzdCBbc2l0ZV0oaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRl
c3Qvc291cmNlL2NoZWNrb3V0Ij5zdm4pLCB5b3UgY2FuIGdldCB0aGUgY29kZSBmcm9tIGFub255
bW91cyBTVk4gd2l0aCB0aGlzIGNvbW1hbmQ6Ci0KLWBgYAotc3ZuIGNoZWNrb3V0IGh0dHA6Ly9n
b29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay8gZ29vZ2xldGVzdC1yZWFkLW9ubHkK
LWBgYAotCi1BbHRlcm5hdGl2ZWx5LCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBTdWJ2ZXJzaW9u
IGluIHlvdXIgb3duIGNvZGUgYmFzZSwgeW91IGNhbiBhZGQgR29vZ2xlIFRlc3QgYXMgYW4gZXh0
ZXJuYWwgZGVwZW5kZW5jeSB0byB5b3VyIG93biBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnkuIEJ5IGZv
bGxvd2luZyB0aGlzIGFwcHJvYWNoLCBldmVyeW9uZSB0aGF0IGNoZWNrcyBvdXQgeW91ciBzdm4g
cmVwb3NpdG9yeSB3aWxsIGFsc28gcmVjZWl2ZSBhIGNvcHkgb2YgR29vZ2xlIFRlc3QgKGEgc3Bl
Y2lmaWMgdmVyc2lvbiwgaWYgeW91IHdpc2gpIHdpdGhvdXQgaGF2aW5nIHRvIGNoZWNrIGl0IG91
dCBleHBsaWNpdGx5LiBUaGlzIG1ha2VzIHRoZSBzZXQgdXAgb2YgeW91ciBwcm9qZWN0IHNpbXBs
ZXIgYW5kIHJlZHVjZXMgdGhlIGNvcGllZCBjb2RlIGluIHRoZSByZXBvc2l0b3J5LgotCi1UbyB1
c2UgYHN2bjpleHRlcm5hbHNgLCBkZWNpZGUgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSB0
aGUgZXh0ZXJuYWwgc291cmNlIHJlc2lkZS4gWW91IG1pZ2h0IGNob29zZSB0byBwdXQgdGhlIGV4
dGVybmFsIHNvdXJjZSBpbnNpZGUgdGhlIHRydW5rLCBiZWNhdXNlIHlvdSB3YW50IGl0IHRvIGJl
IHBhcnQgb2YgdGhlIGJyYW5jaCB3aGVuIHlvdSBtYWtlIGEgcmVsZWFzZS4gSG93ZXZlciwga2Vl
cGluZyBpdCBvdXRzaWRlIHRoZSB0cnVuayBpbiBhIHZlcnNpb24tdGFnZ2VkIGRpcmVjdG9yeSBj
YWxsZWQgc29tZXRoaW5nIGxpa2UgYHRoaXJkLXBhcnR5L2dvb2dsZXRlc3QvMS4wLjFgLCBpcyBh
bm90aGVyIG9wdGlvbi4gT25jZSB0aGUgbG9jYXRpb24gaXMgZXN0YWJsaXNoZWQsIHVzZSBgc3Zu
IHByb3BlZGl0IHN2bjpleHRlcm5hbHMgX2RpcmVjdG9yeV9gIHRvIHNldCB0aGUgc3ZuOmV4dGVy
bmFscyBwcm9wZXJ0eSBvbiBhIGRpcmVjdG9yeSBpbiB5b3VyIHJlcG9zaXRvcnkuIFRoaXMgZGly
ZWN0b3J5IHdvbid0IGNvbnRhaW4gdGhlIGNvZGUsIGJ1dCBiZSBpdHMgdmVyc2lvbmVkIHBhcmVu
dCBkaXJlY3RvcnkuCi0KLVRoZSBjb21tYW5kIGBzdm4gcHJvcGVkaXRgIHdpbGwgYnJpbmcgdXAg
eW91ciBTdWJ2ZXJzaW9uIGVkaXRvciwgbWFraW5nIGVkaXRpbmcgdGhlIGxvbmcsIChwb3RlbnRp
YWxseSBtdWx0aS1saW5lKSBwcm9wZXJ0eSBzaW1wbGVyLiBUaGlzIHNhbWUgbWV0aG9kIGNhbiBi
ZSB1c2VkIHRvIGNoZWNrIG91dCBhIHRhZ2dlZCBicmFuY2gsIGJ5IHVzaW5nIHRoZSBhcHByb3By
aWF0ZSBVUkwgKGUuZy4gYGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90YWdz
L3JlbGVhc2UtMS4wLjFgKS4gQWRkaXRpb25hbGx5LCB0aGUgc3ZuOmV4dGVybmFscyBwcm9wZXJ0
eSBhbGxvd3MgdGhlIHNwZWNpZmljYXRpb24gb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uIG9mIHRo
ZSB0cnVuayB3aXRoIHRoZSBgLXJfIyNfYCBvcHRpb24gKGUuZy4gYGV4dGVybmFscy9zcmMvZ29v
Z2xldGVzdCAtcjYwIGh0dHA6Ly9nb29nbGV0ZXN0Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVua2Ap
LgotCi1IZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgdGhlIHN2bjpleHRlcm5hbHMgcHJvcGVy
dGllcyBvbiBhIHRydW5rIChyZWFkIHZpYSBgc3ZuIHByb3BnZXRgKSBvZiBhIHByb2plY3QuIFRo
aXMgdmFsdWUgY2hlY2tzIG91dCBhIGNvcHkgb2YgR29vZ2xlIFRlc3QgaW50byB0aGUgYHRydW5r
L2V4dGVybmFscy9zcmMvZ29vZ2xldGVzdC9gIGRpcmVjdG9yeS4KLQotYGBgCi1bQ29tcHV0ZXI6
c3ZuXSB1c2VyJCBzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHRydW5rCi1leHRlcm5hbHMvc3Jj
L2dvb2dsZXRlc3QgaHR0cDovL2dvb2dsZXRlc3QuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rCi1g
YGAKLQotIyBBZGQgdGhlIEZyYW1ld29yayB0byBZb3VyIFByb2plY3QgIwotCi1UaGUgbmV4dCBz
dGVwIGlzIHRvIGJ1aWxkIGFuZCBhZGQgdGhlIGd0ZXN0LmZyYW1ld29yayB0byB5b3VyIG93biBw
cm9qZWN0LiBUaGlzIGd1aWRlIGRlc2NyaWJlcyB0d28gY29tbW9uIHdheXMgYmVsb3cuCi0KLSAg
KiAqKk9wdGlvbiAxKiogLS0tIFRoZSBzaW1wbGVzdCB3YXkgdG8gYWRkIEdvb2dsZSBUZXN0IHRv
IHlvdXIgb3duIHByb2plY3QsIGlzIHRvIG9wZW4gZ3Rlc3QueGNvZGVwcm9qIChmb3VuZCBpbiB0
aGUgeGNvZGUvIGRpcmVjdG9yeSBvZiB0aGUgR29vZ2xlIFRlc3QgdHJ1bmspIGFuZCBidWlsZCB0
aGUgZnJhbWV3b3JrIG1hbnVhbGx5LiBUaGVuLCBhZGQgdGhlIGJ1aWx0IGZyYW1ld29yayBpbnRv
IHlvdXIgcHJvamVjdCB1c2luZyB0aGUgIkFkZC0+RXhpc3RpbmcgRnJhbWV3b3JrLi4uIiBmcm9t
IHRoZSBjb250ZXh0IG1lbnUgb3IgIlByb2plY3QtPkFkZC4uLiIgZnJvbSB0aGUgbWFpbiBtZW51
LiBUaGUgZ3Rlc3QuZnJhbWV3b3JrIGlzIHJlbG9jYXRhYmxlIGFuZCBjb250YWlucyB0aGUgaGVh
ZGVycyBhbmQgb2JqZWN0IGNvZGUgdGhhdCB5b3UnbGwgbmVlZCB0byBtYWtlIHRlc3RzLiBUaGlz
IG1ldGhvZCByZXF1aXJlcyByZWJ1aWxkaW5nIGV2ZXJ5IHRpbWUgeW91IHVwZ3JhZGUgR29vZ2xl
IFRlc3QgaW4geW91ciBwcm9qZWN0LgotICAqICoqT3B0aW9uIDIqKiAtLS0gSWYgeW91IGFyZSBn
b2luZyB0byBiZSBsaXZpbmcgb2ZmIHRoZSB0cnVuayBvZiBHb29nbGUgVGVzdCwgaW5jb3Jwb3Jh
dGluZyBpdHMgbGF0ZXN0IGZlYXR1cmVzIGludG8geW91ciB1bml0IHRlc3RzIChvciBhcmUgYSBH
b29nbGUgVGVzdCBkZXZlbG9wZXIgeW91cnNlbGYpLiBZb3UnbGwgd2FudCB0byByZWJ1aWxkIHRo
ZSBmcmFtZXdvcmsgZXZlcnkgdGltZSB0aGUgc291cmNlIHVwZGF0ZXMuIHRvIGRvIHRoaXMsIHlv
dSdsbCBuZWVkIHRvIGFkZCB0aGUgZ3Rlc3QueGNvZGVwcm9qIGZpbGUsIG5vdCB0aGUgZnJhbWV3
b3JrIGl0c2VsZiwgdG8geW91ciBvd24gWGNvZGUgcHJvamVjdC4gVGhlbiwgZnJvbSB0aGUgYnVp
bGQgcHJvZHVjdHMgdGhhdCBhcmUgcmV2ZWFsZWQgYnkgdGhlIHByb2plY3QncyBkaXNjbG9zdXJl
IHRyaWFuZ2xlLCB5b3UgY2FuIGZpbmQgdGhlIGd0ZXN0LmZyYW1ld29yaywgd2hpY2ggY2FuIGJl
IGFkZGVkIHRvIHlvdXIgdGFyZ2V0cyAoZGlzY3Vzc2VkIGJlbG93KS4KLQotIyBNYWtlIGEgVGVz
dCBUYXJnZXQgIwotCi1UbyBzdGFydCB3cml0aW5nIHRlc3RzLCBtYWtlIGEgbmV3ICJTaGVsbCBU
b29sIiB0YXJnZXQuIFRoaXMgdGFyZ2V0IHRlbXBsYXRlIGlzIGF2YWlsYWJsZSB1bmRlciBCU0Qs
IENvY29hLCBvciBDYXJib24uIEFkZCB5b3VyIHVuaXQgdGVzdCBzb3VyY2UgY29kZSB0byB0aGUg
IkNvbXBpbGUgU291cmNlcyIgYnVpbGQgcGhhc2Ugb2YgdGhlIHRhcmdldC4KLQotTmV4dCwgeW91
J2xsIHdhbnQgdG8gYWRkIGd0ZXN0LmZyYW1ld29yayBpbiB0d28gZGlmZmVyZW50IHdheXMsIGRl
cGVuZGluZyB1cG9uIHdoaWNoIG9wdGlvbiB5b3UgY2hvc2UgYWJvdmUuCi0KLSAgKiAqKk9wdGlv
biAxKiogLS0tIER1cmluZyBjb21waWxhdGlvbiwgWGNvZGUgd2lsbCBuZWVkIHRvIGtub3cgdGhh
dCB5b3UgYXJlIGxpbmtpbmcgYWdhaW5zdCB0aGUgZ3Rlc3QuZnJhbWV3b3JrLiBBZGQgdGhlIGd0
ZXN0LmZyYW1ld29yayB0byB0aGUgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWlsZCBw
aGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBUaGlzIHdpbGwgaW5jbHVkZSB0aGUgR29vZ2xlIFRl
c3QgaGVhZGVycyBpbiB5b3VyIGhlYWRlciBzZWFyY2ggcGF0aCwgYW5kIHdpbGwgdGVsbCB0aGUg
bGlua2VyIHdoZXJlIHRvIGZpbmQgdGhlIGxpYnJhcnkuCi0gICogKipPcHRpb24gMioqIC0tLSBJ
ZiB5b3VyIHdvcmtpbmcgb3V0IG9mIHRoZSB0cnVuaywgeW91J2xsIGFsc28gd2FudCB0byBhZGQg
Z3Rlc3QuZnJhbWV3b3JrIHRvIHlvdXIgIkxpbmsgQmluYXJ5IHdpdGggTGlicmFyaWVzIiBidWls
ZCBwaGFzZSBvZiB5b3VyIHRlc3QgdGFyZ2V0LiBJbiBhZGRpdGlvbiwgeW91J2xsICB3YW50IHRv
IGFkZCB0aGUgZ3Rlc3QuZnJhbWV3b3JrIGFzIGEgZGVwZW5kZW5jeSB0byB5b3VyIHVuaXQgdGVz
dCB0YXJnZXQuIFRoaXMgd2F5LCBYY29kZSB3aWxsIG1ha2Ugc3VyZSB0aGF0IGd0ZXN0LmZyYW1l
d29yayBpcyB1cCB0byBkYXRlLCBldmVyeSB0aW1lIHlvdXIgYnVpbGQgeW91ciB0YXJnZXQuIEZp
bmFsbHksIGlmIHlvdSBkb24ndCBzaGFyZSBidWlsZCBkaXJlY3RvcmllcyB3aXRoIEdvb2dsZSBU
ZXN0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZSBndGVzdC5mcmFtZXdvcmsgaW50byB5b3VyIG93
biBidWlsZCBwcm9kdWN0cyBkaXJlY3RvcnkgdXNpbmcgYSAiUnVuIFNjcmlwdCIgYnVpbGQgcGhh
c2UuCi0KLSMgU2V0IFVwIHRoZSBFeGVjdXRhYmxlIFJ1biBFbnZpcm9ubWVudCAjCi0KLVNpbmNl
IHRoZSB1bml0IHRlc3QgZXhlY3V0YWJsZSBpcyBhIHNoZWxsIHRvb2wsIGl0IGRvZXNuJ3QgaGF2
ZSBhIGJ1bmRsZSB3aXRoIGEgYENvbnRlbnRzL0ZyYW1ld29ya3NgIGRpcmVjdG9yeSwgaW4gd2hp
Y2ggdG8gcGxhY2UgZ3Rlc3QuZnJhbWV3b3JrLiBJbnN0ZWFkLCB0aGUgZHluYW1pYyBsaW5rZXIg
bXVzdCBiZSB0b2xkIGF0IHJ1bnRpbWUgdG8gc2VhcmNoIGZvciB0aGUgZnJhbWV3b3JrIGluIGFu
b3RoZXIgbG9jYXRpb24uIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZSAi
RFlMRFxfRlJBTUVXT1JLXF9QQVRIIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiB0aGUgIkVkaXQg
QWN0aXZlIEV4ZWN1dGFibGUgLi4uIiBBcmd1bWVudHMgdGFiLCB1bmRlciAiVmFyaWFibGVzIHRv
IGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQ6Ii4gVGhlIHBhdGggZm9yIHRoaXMgdmFsdWUgaXMg
dGhlIHBhdGggKHJlbGF0aXZlIG9yIGFic29sdXRlKSBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5p
bmcgdGhlIGd0ZXN0LmZyYW1ld29yay4KLQotSWYgeW91IGhhdmVuJ3Qgc2V0IHVwIHRoZSBEWUxE
XF9GUkFNRVdPUktcX1BBVEgsIGNvcnJlY3RseSwgeW91IG1pZ2h0IGdldCBhIG1lc3NhZ2UgbGlr
ZSB0aGlzOgotCi1gYGAKLVtTZXNzaW9uIHN0YXJ0ZWQgYXQgMjAwOC0wOC0xNSAwNjoyMzo1NyAt
MDYwMC5dCi0gIGR5bGQ6IExpYnJhcnkgbm90IGxvYWRlZDogQGxvYWRlcl9wYXRoLy4uL0ZyYW1l
d29ya3MvZ3Rlc3QuZnJhbWV3b3JrL1ZlcnNpb25zL0EvZ3Rlc3QKLSAgICBSZWZlcmVuY2VkIGZy
b206IC9Vc2Vycy91c2VybmFtZS9Eb2N1bWVudHMvU2FuZGJveC9ndGVzdFNhbXBsZS9idWlsZC9E
ZWJ1Zy9XaWRnZXRGcmFtZXdvcmtUZXN0Ci0gICAgUmVhc29uOiBpbWFnZSBub3QgZm91bmQKLWBg
YAotCi1UbyBjb3JyZWN0IHRoaXMgcHJvYmxlbSwgZ290IHRvIHRoZSBkaXJlY3RvcnkgY29udGFp
bmluZyB0aGUgZXhlY3V0YWJsZSBuYW1lZCBpbiAiUmVmZXJlbmNlZCBmcm9tOiIgdmFsdWUgaW4g
dGhlIGVycm9yIG1lc3NhZ2UgYWJvdmUuIFRoZW4sIHdpdGggdGhlIHRlcm1pbmFsIGluIHRoaXMg
bG9jYXRpb24sIGZpbmQgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWlu
aW5nIHRoZSBndGVzdC5mcmFtZXdvcmsuIFRoYXQgaXMgdGhlIHZhbHVlIHlvdSdsbCBuZWVkIHRv
IHNldCBhcyB0aGUgRFlMRFxfRlJBTUVXT1JLXF9QQVRILgotCi0jIEJ1aWxkIGFuZCBHbyAjCi0K
LU5vdywgd2hlbiB5b3UgY2xpY2sgIkJ1aWxkIGFuZCBHbyIsIHRoZSB0ZXN0IHdpbGwgYmUgZXhl
Y3V0ZWQuIER1bXBpbmcgb3V0IHNvbWV0aGluZyBsaWtlIHRoaXM6Ci0KLWBgYAotW1Nlc3Npb24g
c3RhcnRlZCBhdCAyMDA4LTA4LTA2IDA2OjM2OjEzIC0wNjAwLl0KLVs9PT09PT09PT09XSBSdW5u
aW5nIDIgdGVzdHMgZnJvbSAxIHRlc3QgY2FzZS4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBl
bnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0tLS0tLV0gMiB0ZXN0cyBmcm9tIFdpZGdldEluaXRp
YWxpemVyVGVzdAotWyBSVU4gICAgICBdIFdpZGdldEluaXRpYWxpemVyVGVzdC5UZXN0Q29uc3Ry
dWN0b3IKLVsgICAgICAgT0sgXSBXaWRnZXRJbml0aWFsaXplclRlc3QuVGVzdENvbnN0cnVjdG9y
Ci1bIFJVTiAgICAgIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCi1bICAg
ICAgIE9LIF0gV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LlRlc3RDb252ZXJzaW9uCi1bLS0tLS0tLS0t
LV0gR2xvYmFsIHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gMiB0ZXN0
cyBmcm9tIDEgdGVzdCBjYXNlIHJhbi4KLVsgIFBBU1NFRCAgXSAyIHRlc3RzLgotCi1UaGUgRGVi
dWdnZXIgaGFzIGV4aXRlZCB3aXRoIHN0YXR1cyAwLiAgCi1gYGAKLQotIyBTdW1tYXJ5ICMKLQot
VW5pdCB0ZXN0aW5nIGlzIGEgdmFsdWFibGUgd2F5IHRvIGVuc3VyZSB5b3VyIGRhdGEgbW9kZWwg
c3RheXMgdmFsaWQgZXZlbiBkdXJpbmcgcmFwaWQgZGV2ZWxvcG1lbnQgb3IgcmVmYWN0b3Jpbmcu
IFRoZSBHb29nbGUgVGVzdGluZyBGcmFtZXdvcmsgaXMgYSBncmVhdCB1bml0IHRlc3RpbmcgZnJh
bWV3b3JrIGZvciBDIGFuZCBDKysgd2hpY2ggaW50ZWdyYXRlcyB3ZWxsIHdpdGggYW4gWGNvZGUg
ZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTU3YTY5YzZhOWU3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1kZWF0aC10ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyOTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBU
aGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhp
cyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBkZWF0aCB0ZXN0cy4gIEl0
IGlzCi0vLyAjaW5jbHVkZWQgYnkgZ3Rlc3QuaCBzbyBhIHVzZXIgZG9lc24ndCBuZWVkIHRvIGlu
Y2x1ZGUgdGhpcwotLy8gZGlyZWN0bHkuCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9H
VEVTVF9ERUFUSF9URVNUX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfREVB
VEhfVEVTVF9IXwotCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZGVhdGgtdGVzdC1p
bnRlcm5hbC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIFRoaXMgZmxhZyBjb250cm9s
cyB0aGUgc3R5bGUgb2YgZGVhdGggdGVzdHMuICBWYWxpZCB2YWx1ZXMgYXJlICJ0aHJlYWRzYWZl
IiwKLS8vIG1lYW5pbmcgdGhhdCB0aGUgZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzIHdpbGwgcmUt
ZXhlY3V0ZSB0aGUgdGVzdCBiaW5hcnkKLS8vIGZyb20gdGhlIHN0YXJ0LCBydW5uaW5nIG9ubHkg
YSBzaW5nbGUgZGVhdGggdGVzdCwgb3IgImZhc3QiLAotLy8gbWVhbmluZyB0aGF0IHRoZSBjaGls
ZCBwcm9jZXNzIHdpbGwgZXhlY3V0ZSB0aGUgdGVzdCBsb2dpYyBpbW1lZGlhdGVseQotLy8gYWZ0
ZXIgZm9ya2luZy4KLUdURVNUX0RFQ0xBUkVfc3RyaW5nXyhkZWF0aF90ZXN0X3N0eWxlKTsKLQot
I2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFJl
dHVybnMgYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2FsbGVyIGlzIGN1
cnJlbnRseQotLy8gZXhlY3V0aW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkZWF0aCB0ZXN0IGNo
aWxkIHByb2Nlc3MuICBUb29scyBzdWNoIGFzCi0vLyBWYWxncmluZCBoZWFwIGNoZWNrZXJzIG1h
eSBuZWVkIHRoaXMgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2aW9yIGluIGRlYXRoCi0vLyB0ZXN0cy4g
IElNUE9SVEFOVDogVGhpcyBpcyBhbiBpbnRlcm5hbCB1dGlsaXR5LiAgVXNpbmcgaXQgbWF5IGJy
ZWFrIHRoZQotLy8gaW1wbGVtZW50YXRpb24gb2YgZGVhdGggdGVzdHMuICBVc2VyIGNvZGUgTVVT
VCBOT1QgdXNlIGl0LgotR1RFU1RfQVBJXyBib29sIEluRGVhdGhUZXN0Q2hpbGQoKTsKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSB1c2Vm
dWwgZm9yIHdyaXRpbmcgZGVhdGggdGVzdHMuCi0KLS8vIEhlcmUncyB3aGF0IGhhcHBlbnMgd2hl
biBhbiBBU1NFUlRfREVBVEgqIG9yIEVYUEVDVF9ERUFUSCogaXMKLS8vIGV4ZWN1dGVkOgotLy8K
LS8vICAgMS4gSXQgZ2VuZXJhdGVzIGEgd2FybmluZyBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25l
IGFjdGl2ZQotLy8gICB0aHJlYWQuICBUaGlzIGlzIGJlY2F1c2UgaXQncyBzYWZlIHRvIGZvcmso
KSBvciBjbG9uZSgpIG9ubHkKLS8vICAgd2hlbiB0aGVyZSBpcyBhIHNpbmdsZSB0aHJlYWQuCi0v
LwotLy8gICAyLiBUaGUgcGFyZW50IHByb2Nlc3MgY2xvbmUoKXMgYSBzdWItcHJvY2VzcyBhbmQg
cnVucyB0aGUgZGVhdGgKLS8vICAgdGVzdCBpbiBpdDsgdGhlIHN1Yi1wcm9jZXNzIGV4aXRzIHdp
dGggY29kZSAwIGF0IHRoZSBlbmQgb2YgdGhlCi0vLyAgIGRlYXRoIHRlc3QsIGlmIGl0IGhhc24n
dCBleGl0ZWQgYWxyZWFkeS4KLS8vCi0vLyAgIDMuIFRoZSBwYXJlbnQgcHJvY2VzcyB3YWl0cyBm
b3IgdGhlIHN1Yi1wcm9jZXNzIHRvIHRlcm1pbmF0ZS4KLS8vCi0vLyAgIDQuIFRoZSBwYXJlbnQg
cHJvY2VzcyBjaGVja3MgdGhlIGV4aXQgY29kZSBhbmQgZXJyb3IgbWVzc2FnZSBvZgotLy8gICB0
aGUgc3ViLXByb2Nlc3MuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLwotLy8gICBBU1NFUlRfREVBVEgo
c2VydmVyLlNlbmRNZXNzYWdlKDU2LCAiSGVsbG8iKSwgIkludmFsaWQgcG9ydCBudW1iZXIiKTsK
LS8vICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKLS8vICAgICBFWFBFQ1RfREVBVEgo
c2VydmVyLlByb2Nlc3NSZXF1ZXN0KGkpLAotLy8gICAgICAgICAgICAgICAgICAiSW52YWxpZCBy
ZXF1ZXN0IC4qIGluIFByb2Nlc3NSZXF1ZXN0KCkiKQotLy8gICAgICAgICAgICAgICAgICA8PCAi
RmFpbGVkIHRvIGRpZSBvbiByZXF1ZXN0ICIgPDwgaTsKLS8vICAgfQotLy8KLS8vICAgQVNTRVJU
X0VYSVQoc2VydmVyLkV4aXROb3coKSwgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgwKSwgIkV4
aXRpbmciKTsKLS8vCi0vLyAgIGJvb2wgS2lsbGVkQnlTSUdIVVAoaW50IGV4aXRfY29kZSkgewot
Ly8gICAgIHJldHVybiBXSUZTSUdOQUxFRChleGl0X2NvZGUpICYmIFdURVJNU0lHKGV4aXRfY29k
ZSkgPT0gU0lHSFVQOwotLy8gICB9Ci0vLwotLy8gICBBU1NFUlRfRVhJVChjbGllbnQuSGFuZ1Vw
U2VydmVyKCksIEtpbGxlZEJ5U0lHSFVQLCAiSGFuZ2luZyB1cCEiKTsKLS8vCi0vLyBPbiB0aGUg
cmVndWxhciBleHByZXNzaW9ucyB1c2VkIGluIGRlYXRoIHRlc3RzOgotLy8KLS8vICAgT24gUE9T
SVgtY29tcGxpYW50IHN5c3RlbXMgKCpuaXgpLCB3ZSB1c2UgdGhlIDxyZWdleC5oPiBsaWJyYXJ5
LAotLy8gICB3aGljaCB1c2VzIHRoZSBQT1NJWCBleHRlbmRlZCByZWdleCBzeW50YXguCi0vLwot
Ly8gICBPbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gV2luZG93cyksIHdlIG9ubHkgc3VwcG9ydCBh
IHNpbXBsZSByZWdleAotLy8gICBzeW50YXggaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHb29nbGUg
VGVzdC4gIFRoaXMgbGltaXRlZAotLy8gICBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgZW5vdWdo
IG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiB3cml0aW5nCi0vLyAgIGRlYXRoIHRlc3RzOyB0aG91Z2gg
aXQgbGFja3MgbWFueSBmZWF0dXJlcyB5b3UgY2FuIGZpbmQgaW4gUENSRQotLy8gICBvciBQT1NJ
WCBleHRlbmRlZCByZWdleCBzeW50YXguICBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qgc3VwcG9ydAot
Ly8gICB1bmlvbiAoInh8eSIpLCBncm91cGluZyAoIih4eSkiKSwgYnJhY2tldHMgKCJbeHldIiks
IGFuZAotLy8gICByZXBldGl0aW9uIGNvdW50ICgieHs1LDd9IiksIGFtb25nIG90aGVycy4KLS8v
Ci0vLyAgIEJlbG93IGlzIHRoZSBzeW50YXggdGhhdCB3ZSBkbyBzdXBwb3J0LiAgV2UgY2hvc2Ug
aXQgdG8gYmUgYQotLy8gICBzdWJzZXQgb2YgYm90aCBQQ1JFIGFuZCBQT1NJWCBleHRlbmRlZCBy
ZWdleCwgc28gaXQncyBlYXN5IHRvCi0vLyAgIGxlYXJuIHdoZXJldmVyIHlvdSBjb21lIGZyb20u
ICBJbiB0aGUgZm9sbG93aW5nOiAnQScgZGVub3RlcyBhCi0vLyAgIGxpdGVyYWwgY2hhcmFjdGVy
LCBwZXJpb2QgKC4pLCBvciBhIHNpbmdsZSBcXCBlc2NhcGUgc2VxdWVuY2U7Ci0vLyAgICd4JyBh
bmQgJ3knIGRlbm90ZSByZWd1bGFyIGV4cHJlc3Npb25zOyAnbScgYW5kICduJyBhcmUgZm9yCi0v
LyAgIG5hdHVyYWwgbnVtYmVycy4KLS8vCi0vLyAgICAgYyAgICAgbWF0Y2hlcyBhbnkgbGl0ZXJh
bCBjaGFyYWN0ZXIgYwotLy8gICAgIFxcZCAgIG1hdGNoZXMgYW55IGRlY2ltYWwgZGlnaXQKLS8v
ICAgICBcXEQgICBtYXRjaGVzIGFueSBjaGFyYWN0ZXIgdGhhdCdzIG5vdCBhIGRlY2ltYWwgZGln
aXQKLS8vICAgICBcXGYgICBtYXRjaGVzIFxmCi0vLyAgICAgXFxuICAgbWF0Y2hlcyBcbgotLy8g
ICAgIFxcciAgIG1hdGNoZXMgXHIKLS8vICAgICBcXHMgICBtYXRjaGVzIGFueSBBU0NJSSB3aGl0
ZXNwYWNlLCBpbmNsdWRpbmcgXG4KLS8vICAgICBcXFMgICBtYXRjaGVzIGFueSBjaGFyYWN0ZXIg
dGhhdCdzIG5vdCBhIHdoaXRlc3BhY2UKLS8vICAgICBcXHQgICBtYXRjaGVzIFx0Ci0vLyAgICAg
XFx2ICAgbWF0Y2hlcyBcdgotLy8gICAgIFxcdyAgIG1hdGNoZXMgYW55IGxldHRlciwgXywgb3Ig
ZGVjaW1hbCBkaWdpdAotLy8gICAgIFxcVyAgIG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IFxc
dyBkb2Vzbid0IG1hdGNoCi0vLyAgICAgXFxjICAgbWF0Y2hlcyBhbnkgbGl0ZXJhbCBjaGFyYWN0
ZXIgYywgd2hpY2ggbXVzdCBiZSBhIHB1bmN0dWF0aW9uCi0vLyAgICAgLiAgICAgbWF0Y2hlcyBh
bnkgc2luZ2xlIGNoYXJhY3RlciBleGNlcHQgXG4KLS8vICAgICBBPyAgICBtYXRjaGVzIDAgb3Ig
MSBvY2N1cnJlbmNlcyBvZiBBCi0vLyAgICAgQSogICAgbWF0Y2hlcyAwIG9yIG1hbnkgb2NjdXJy
ZW5jZXMgb2YgQQotLy8gICAgIEErICAgIG1hdGNoZXMgMSBvciBtYW55IG9jY3VycmVuY2VzIG9m
IEEKLS8vICAgICBeICAgICBtYXRjaGVzIHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJpbmcgKG5vdCB0
aGF0IG9mIGVhY2ggbGluZSkKLS8vICAgICAkICAgICBtYXRjaGVzIHRoZSBlbmQgb2YgYSBzdHJp
bmcgKG5vdCB0aGF0IG9mIGVhY2ggbGluZSkKLS8vICAgICB4eSAgICBtYXRjaGVzIHggZm9sbG93
ZWQgYnkgeQotLy8KLS8vICAgSWYgeW91IGFjY2lkZW50YWxseSB1c2UgUENSRSBvciBQT1NJWCBl
eHRlbmRlZCByZWdleCBmZWF0dXJlcwotLy8gICBub3QgaW1wbGVtZW50ZWQgYnkgdXMsIHlvdSB3
aWxsIGdldCBhIHJ1bi10aW1lIGZhaWx1cmUuICBJbiB0aGF0Ci0vLyAgIGNhc2UsIHBsZWFzZSB0
cnkgdG8gcmV3cml0ZSB5b3VyIHJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoaW4gdGhlCi0vLyAgIGFi
b3ZlIHN5bnRheC4KLS8vCi0vLyAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgKm5vdCogbWVhbnQg
dG8gYmUgYXMgaGlnaGx5IHR1bmVkIG9yIHJvYnVzdAotLy8gICBhcyBhIGNvbXBpbGVkIHJlZ2V4
IGxpYnJhcnksIGJ1dCBzaG91bGQgcGVyZm9ybSB3ZWxsIGVub3VnaCBmb3IgYQotLy8gICBkZWF0
aCB0ZXN0LCB3aGljaCBhbHJlYWR5IGluY3VycyBzaWduaWZpY2FudCBvdmVyaGVhZCBieSBsYXVu
Y2hpbmcKLS8vICAgYSBjaGlsZCBwcm9jZXNzLgotLy8KLS8vIEtub3duIGNhdmVhdHM6Ci0vLwot
Ly8gICBBICJ0aHJlYWRzYWZlIiBzdHlsZSBkZWF0aCB0ZXN0IG9idGFpbnMgdGhlIHBhdGggdG8g
dGhlIHRlc3QKLS8vICAgcHJvZ3JhbSBmcm9tIGFyZ3ZbMF0gYW5kIHJlLWV4ZWN1dGVzIGl0IGlu
IHRoZSBzdWItcHJvY2Vzcy4gIEZvcgotLy8gICBzaW1wbGljaXR5LCB0aGUgY3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBkb2Vzbid0IHNlYXJjaCB0aGUgUEFUSAotLy8gICB3aGVuIGxhdW5jaGluZyB0
aGUgc3ViLXByb2Nlc3MuICBUaGlzIG1lYW5zIHRoYXQgdGhlIHVzZXIgbXVzdAotLy8gICBpbnZv
a2UgdGhlIHRlc3QgcHJvZ3JhbSB2aWEgYSBwYXRoIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25l
Ci0vLyAgIHBhdGggc2VwYXJhdG9yIChlLmcuIHBhdGgvdG8vZm9vX3Rlc3QgYW5kCi0vLyAgIC9h
YnNvbHV0ZS9wYXRoL3RvL2Jhcl90ZXN0IGFyZSBmaW5lLCBidXQgZm9vX3Rlc3QgaXMgbm90KS4g
IFRoaXMKLS8vICAgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBwZW9wbGUgdXN1YWxseSBkb24ndCBw
dXQgdGhlIHRlc3QgYmluYXJ5Ci0vLyAgIGRpcmVjdG9yeSBpbiBQQVRILgotLy8KLS8vIFRPRE8o
d2FuQGdvb2dsZS5jb20pOiBtYWtlIHRocmVhZC1zYWZlIGRlYXRoIHRlc3RzIHNlYXJjaCB0aGUg
UEFUSC4KLQotLy8gQXNzZXJ0cyB0aGF0IGEgZ2l2ZW4gc3RhdGVtZW50IGNhdXNlcyB0aGUgcHJv
Z3JhbSB0byBleGl0LCB3aXRoIGFuCi0vLyBpbnRlZ2VyIGV4aXQgc3RhdHVzIHRoYXQgc2F0aXNm
aWVzIHByZWRpY2F0ZSwgYW5kIGVtaXR0aW5nIGVycm9yIG91dHB1dAotLy8gdGhhdCBtYXRjaGVz
IHJlZ2V4LgotIyBkZWZpbmUgQVNTRVJUX0VYSVQoc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4
KSBcCi0gICAgR1RFU1RfREVBVEhfVEVTVF8oc3RhdGVtZW50LCBwcmVkaWNhdGUsIHJlZ2V4LCBH
VEVTVF9GQVRBTF9GQUlMVVJFXykKLQotLy8gTGlrZSBBU1NFUlRfRVhJVCwgYnV0IGNvbnRpbnVl
cyBvbiB0byBzdWNjZXNzaXZlIHRlc3RzIGluIHRoZQotLy8gdGVzdCBjYXNlLCBpZiBhbnk6Ci0j
IGRlZmluZSBFWFBFQ1RfRVhJVChzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgpIFwKLSAgICBH
VEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIEdURVNUX05PTkZB
VEFMX0ZBSUxVUkVfKQotCi0vLyBBc3NlcnRzIHRoYXQgYSBnaXZlbiBzdGF0ZW1lbnQgY2F1c2Vz
IHRoZSBwcm9ncmFtIHRvIGV4aXQsIGVpdGhlciBieQotLy8gZXhwbGljaXRseSBleGl0aW5nIHdp
dGggYSBub256ZXJvIGV4aXQgY29kZSBvciBiZWluZyBraWxsZWQgYnkgYQotLy8gc2lnbmFsLCBh
bmQgZW1pdHRpbmcgZXJyb3Igb3V0cHV0IHRoYXQgbWF0Y2hlcyByZWdleC4KLSMgZGVmaW5lIEFT
U0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gICAgQVNTRVJUX0VYSVQoc3RhdGVtZW50
LCA6OnRlc3Rpbmc6OmludGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCi0KLS8v
IExpa2UgQVNTRVJUX0RFQVRILCBidXQgY29udGludWVzIG9uIHRvIHN1Y2Nlc3NpdmUgdGVzdHMg
aW4gdGhlCi0vLyB0ZXN0IGNhc2UsIGlmIGFueToKLSMgZGVmaW5lIEVYUEVDVF9ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCi0gICAgRVhQRUNUX0VYSVQoc3RhdGVtZW50LCA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpFeGl0ZWRVbnN1Y2Nlc3NmdWxseSwgcmVnZXgpCi0KLS8vIFR3byBwcmVkaWNhdGUg
Y2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIGluIHtBU1NFUlQsRVhQRUNUfV9FWElUKjoKLQotLy8g
VGVzdHMgdGhhdCBhbiBleGl0IGNvZGUgZGVzY3JpYmVzIGEgbm9ybWFsIGV4aXQgd2l0aCBhIGdp
dmVuIGV4aXQgY29kZS4KLWNsYXNzIEdURVNUX0FQSV8gRXhpdGVkV2l0aENvZGUgewotIHB1Ymxp
YzoKLSAgZXhwbGljaXQgRXhpdGVkV2l0aENvZGUoaW50IGV4aXRfY29kZSk7Ci0gIGJvb2wgb3Bl
cmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0OwotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgRXhpdGVkV2l0aENvZGUmIG90aGVyKTsKLQotICBjb25zdCBpbnQgZXhpdF9jb2RlXzsK
LX07Ci0KLSMgaWYgIUdURVNUX09TX1dJTkRPV1MKLS8vIFRlc3RzIHRoYXQgYW4gZXhpdCBjb2Rl
IGRlc2NyaWJlcyBhbiBleGl0IGR1ZSB0byB0ZXJtaW5hdGlvbiBieSBhCi0vLyBnaXZlbiBzaWdu
YWwuCi1jbGFzcyBHVEVTVF9BUElfIEtpbGxlZEJ5U2lnbmFsIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEtpbGxlZEJ5U2lnbmFsKGludCBzaWdudW0pOwotICBib29sIG9wZXJhdG9yKCkoaW50IGV4
aXRfc3RhdHVzKSBjb25zdDsKLSBwcml2YXRlOgotICBjb25zdCBpbnQgc2lnbnVtXzsKLX07Ci0j
IGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwotCi0vLyBFWFBFQ1RfREVCVUdfREVBVEggYXNz
ZXJ0cyB0aGF0IHRoZSBnaXZlbiBzdGF0ZW1lbnRzIGRpZSBpbiBkZWJ1ZyBtb2RlLgotLy8gVGhl
IGRlYXRoIHRlc3RpbmcgZnJhbWV3b3JrIGNhdXNlcyB0aGlzIHRvIGhhdmUgaW50ZXJlc3Rpbmcg
c2VtYW50aWNzLAotLy8gc2luY2UgdGhlIHNpZGVlZmZlY3RzIG9mIHRoZSBjYWxsIGFyZSBvbmx5
IHZpc2libGUgaW4gb3B0IG1vZGUsIGFuZCBub3QKLS8vIGluIGRlYnVnIG1vZGUuCi0vLwotLy8g
SW4gcHJhY3RpY2UsIHRoaXMgY2FuIGJlIHVzZWQgdG8gdGVzdCBmdW5jdGlvbnMgdGhhdCB1dGls
aXplIHRoZQotLy8gTE9HKERGQVRBTCkgbWFjcm8gdXNpbmcgdGhlIGZvbGxvd2luZyBzdHlsZToK
LS8vCi0vLyBpbnQgRGllSW5EZWJ1Z09yMTIoaW50KiBzaWRlZWZmZWN0KSB7Ci0vLyAgIGlmIChz
aWRlZWZmZWN0KSB7Ci0vLyAgICAgKnNpZGVlZmZlY3QgPSAxMjsKLS8vICAgfQotLy8gICBMT0co
REZBVEFMKSA8PCAiZGVhdGgiOwotLy8gICByZXR1cm4gMTI7Ci0vLyB9Ci0vLwotLy8gVEVTVChU
ZXN0Q2FzZSwgVGVzdERpZU9yMTJXb3Jrc0luRGdiQW5kT3B0KSB7Ci0vLyAgIGludCBzaWRlZWZm
ZWN0ID0gMDsKLS8vICAgLy8gT25seSBhc3NlcnRzIGluIGRiZy4KLS8vICAgRVhQRUNUX0RFQlVH
X0RFQVRIKERpZUluRGVidWdPcjEyKCZzaWRlZWZmZWN0KSwgImRlYXRoIik7Ci0vLwotLy8gI2lm
ZGVmIE5ERUJVRwotLy8gICAvLyBvcHQtbW9kZSBoYXMgc2lkZWVmZmVjdCB2aXNpYmxlLgotLy8g
ICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotLy8gI2Vsc2UKLS8vICAgLy8gZGJnLW1vZGUg
bm8gdmlzaWJsZSBzaWRlZWZmZWN0LgotLy8gICBFWFBFQ1RfRVEoMCwgc2lkZWVmZmVjdCk7Ci0v
LyAjZW5kaWYKLS8vIH0KLS8vCi0vLyBUaGlzIHdpbGwgYXNzZXJ0IHRoYXQgRGllSW5EZWJ1Z1Jl
dHVybjEySW5PcHQoKSBjcmFzaGVzIGluIGRlYnVnCi0vLyBtb2RlLCB1c3VhbGx5IGR1ZSB0byBh
IERDSEVDSyBvciBMT0coREZBVEFMKSwgYnV0IHJldHVybnMgdGhlCi0vLyBhcHByb3ByaWF0ZSBm
YWxsYmFjayB2YWx1ZSAoMTIgaW4gdGhpcyBjYXNlKSBpbiBvcHQgbW9kZS4gSWYgeW91Ci0vLyBu
ZWVkIHRvIHRlc3QgdGhhdCBhIGZ1bmN0aW9uIGhhcyBhcHByb3ByaWF0ZSBzaWRlLWVmZmVjdHMg
aW4gb3B0Ci0vLyBtb2RlLCBpbmNsdWRlIGFzc2VydGlvbnMgYWdhaW5zdCB0aGUgc2lkZS1lZmZl
Y3RzLiAgQSBnZW5lcmFsCi0vLyBwYXR0ZXJuIGZvciB0aGlzIGlzOgotLy8KLS8vIEVYUEVDVF9E
RUJVR19ERUFUSCh7Ci0vLyAgIC8vIFNpZGUtZWZmZWN0cyBoZXJlIHdpbGwgaGF2ZSBhbiBlZmZl
Y3QgYWZ0ZXIgdGhpcyBzdGF0ZW1lbnQgaW4KLS8vICAgLy8gb3B0IG1vZGUsIGJ1dCBub25lIGlu
IGRlYnVnIG1vZGUuCi0vLyAgIEVYUEVDVF9FUSgxMiwgRGllSW5EZWJ1Z09yMTIoJnNpZGVlZmZl
Y3QpKTsKLS8vIH0sICJkZWF0aCIpOwotLy8KLSMgaWZkZWYgTkRFQlVHCi0KLSMgIGRlZmluZSBF
WFBFQ1RfREVCVUdfREVBVEgoc3RhdGVtZW50LCByZWdleCkgXAotICBHVEVTVF9FWEVDVVRFX1NU
QVRFTUVOVF8oc3RhdGVtZW50LCByZWdleCkKLQotIyAgZGVmaW5lIEFTU0VSVF9ERUJVR19ERUFU
SChzdGF0ZW1lbnQsIHJlZ2V4KSBcCi0gIEdURVNUX0VYRUNVVEVfU1RBVEVNRU5UXyhzdGF0ZW1l
bnQsIHJlZ2V4KQotCi0jIGVsc2UKLQotIyAgZGVmaW5lIEVYUEVDVF9ERUJVR19ERUFUSChzdGF0
ZW1lbnQsIHJlZ2V4KSBcCi0gIEVYUEVDVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQotCi0jICBk
ZWZpbmUgQVNTRVJUX0RFQlVHX0RFQVRIKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgQVNTRVJUX0RF
QVRIKHN0YXRlbWVudCwgcmVnZXgpCi0KLSMgZW5kaWYgIC8vIE5ERUJVRyBmb3IgRVhQRUNUX0RF
QlVHX0RFQVRICi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLS8vIEVYUEVDVF9E
RUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgYW5kCi0vLyBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIGV4cGFuZCB0byByZWFsIGRlYXRoIHRlc3Rz
IGlmCi0vLyBkZWF0aCB0ZXN0cyBhcmUgc3VwcG9ydGVkOyBvdGhlcndpc2UgdGhleSBqdXN0IGlz
c3VlIGEgd2FybmluZy4gIFRoaXMgaXMKLS8vIHVzZWZ1bCB3aGVuIHlvdSBhcmUgY29tYmluaW5n
IGRlYXRoIHRlc3QgYXNzZXJ0aW9ucyB3aXRoIG5vcm1hbCB0ZXN0Ci0vLyBhc3NlcnRpb25zIGlu
IG9uZSB0ZXN0LgotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0jIGRlZmluZSBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgICBFWFBFQ1RfREVBVEgoc3Rh
dGVtZW50LCByZWdleCkKLSMgZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVt
ZW50LCByZWdleCkgXAotICAgIEFTU0VSVF9ERUFUSChzdGF0ZW1lbnQsIHJlZ2V4KQotI2Vsc2UK
LSMgZGVmaW5lIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAot
ICAgIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsICkKLSMg
ZGVmaW5lIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoc3RhdGVtZW50LCByZWdleCkgXAotICAg
IEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RFU1RfKHN0YXRlbWVudCwgcmVnZXgsIHJldHVybikK
LSNlbmRpZgotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdURVNUX0lO
Q0xVREVfR1RFU1RfR1RFU1RfREVBVEhfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdC1tZXNzYWdlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0
L2d0ZXN0LW1lc3NhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4NzliY2E3
OTI3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1t
ZXNzYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29y
ayAoR29vZ2xlIFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBNZXNz
YWdlIGNsYXNzLgotLy8KLS8vIElNUE9SVEFOVCBOT1RFOiBEdWUgdG8gbGltaXRhdGlvbiBvZiB0
aGUgQysrIGxhbmd1YWdlLCB3ZSBoYXZlIHRvCi0vLyBsZWF2ZSBzb21lIGludGVybmFsIGltcGxl
bWVudGF0aW9uIGRldGFpbHMgaW4gdGhpcyBoZWFkZXIgZmlsZS4KLS8vIFRoZXkgYXJlIGNsZWFy
bHkgbWFya2VkIGJ5IGNvbW1lbnRzIGxpa2UgdGhpczoKLS8vCi0vLyAgIC8vIElOVEVSTkFMIElN
UExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLS8vCi0vLyBTdWNo
IGNvZGUgaXMgTk9UIG1lYW50IHRvIGJlIHVzZWQgYnkgYSB1c2VyIGRpcmVjdGx5LCBhbmQgaXMg
c3ViamVjdAotLy8gdG8gQ0hBTkdFIFdJVEhPVVQgTk9USUNFLiAgVGhlcmVmb3JlIERPIE5PVCBE
RVBFTkQgT04gSVQgaW4gYSB1c2VyCi0vLyBwcm9ncmFtIQotCi0jaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfR1RFU1RfTUVTU0FHRV9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dU
RVNUX01FU1NBR0VfSF8KLQotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2luY2x1ZGUgImd0ZXN0L2lu
dGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotLy8gRW5zdXJlcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBvcGVyYXRvcjw8IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgotLy8gU2VlIE1lc3NhZ2Um
IG9wZXJhdG9yPDwoLi4uKSBiZWxvdyBmb3Igd2h5Lgotdm9pZCBvcGVyYXRvcjw8KGNvbnN0IHRl
c3Rpbmc6OmludGVybmFsOjpTZWNyZXQmLCBpbnQpOwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0K
LS8vIFRoZSBNZXNzYWdlIGNsYXNzIHdvcmtzIGxpa2UgYW4gb3N0cmVhbSByZXBlYXRlci4KLS8v
Ci0vLyBUeXBpY2FsIHVzYWdlOgotLy8KLS8vICAgMS4gWW91IHN0cmVhbSBhIGJ1bmNoIG9mIHZh
bHVlcyB0byBhIE1lc3NhZ2Ugb2JqZWN0LgotLy8gICAgICBJdCB3aWxsIHJlbWVtYmVyIHRoZSB0
ZXh0IGluIGEgc3RyaW5nc3RyZWFtLgotLy8gICAyLiBUaGVuIHlvdSBzdHJlYW0gdGhlIE1lc3Nh
Z2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCi0vLyAgICAgIFRoaXMgY2F1c2VzIHRoZSB0ZXh0IGlu
IHRoZSBNZXNzYWdlIHRvIGJlIHN0cmVhbWVkCi0vLyAgICAgIHRvIHRoZSBvc3RyZWFtLgotLy8K
LS8vIEZvciBleGFtcGxlOwotLy8KLS8vICAgdGVzdGluZzo6TWVzc2FnZSBmb287Ci0vLyAgIGZv
byA8PCAxIDw8ICIgIT0gIiA8PCAyOwotLy8gICBzdGQ6OmNvdXQgPDwgZm9vOwotLy8KLS8vIHdp
bGwgcHJpbnQgIjEgIT0gMiIuCi0vLwotLy8gTWVzc2FnZSBpcyBub3QgaW50ZW5kZWQgdG8gYmUg
aW5oZXJpdGVkIGZyb20uICBJbiBwYXJ0aWN1bGFyLCBpdHMKLS8vIGRlc3RydWN0b3IgaXMgbm90
IHZpcnR1YWwuCi0vLwotLy8gTm90ZSB0aGF0IHN0cmluZ3N0cmVhbSBiZWhhdmVzIGRpZmZlcmVu
dGx5IGluIGdjYyBhbmQgaW4gTVNWQy4gIFlvdQotLy8gY2FuIHN0cmVhbSBhIE5VTEwgY2hhciBw
b2ludGVyIHRvIGl0IGluIHRoZSBmb3JtZXIsIGJ1dCBub3QgaW4gdGhlCi0vLyBsYXR0ZXIgKGl0
IGNhdXNlcyBhbiBhY2Nlc3MgdmlvbGF0aW9uIGlmIHlvdSBkbykuICBUaGUgTWVzc2FnZQotLy8g
Y2xhc3MgaGlkZXMgdGhpcyBkaWZmZXJlbmNlIGJ5IHRyZWF0aW5nIGEgTlVMTCBjaGFyIHBvaW50
ZXIgYXMKLS8vICIobnVsbCkiLgotY2xhc3MgR1RFU1RfQVBJXyBNZXNzYWdlIHsKLSBwcml2YXRl
OgotICAvLyBUaGUgdHlwZSBvZiBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgKGVuZGwsIGVuZHMsIGFu
ZCBmbHVzaCkgZm9yCi0gIC8vIG5hcnJvdyBzdHJlYW1zLgotICB0eXBlZGVmIHN0ZDo6b3N0cmVh
bSYgKCpCYXNpY05hcnJvd0lvTWFuaXApKHN0ZDo6b3N0cmVhbSYpOwotCi0gcHVibGljOgotICAv
LyBDb25zdHJ1Y3RzIGFuIGVtcHR5IE1lc3NhZ2UuCi0gIE1lc3NhZ2UoKTsKLQotICAvLyBDb3B5
IGNvbnN0cnVjdG9yLgotICBNZXNzYWdlKGNvbnN0IE1lc3NhZ2UmIG1zZykgOiBzc18obmV3IDo6
c3RkOjpzdHJpbmdzdHJlYW0pIHsgIC8vIE5PTElOVAotICAgICpzc18gPDwgbXNnLkdldFN0cmlu
ZygpOwotICB9Ci0KLSAgLy8gQ29uc3RydWN0cyBhIE1lc3NhZ2UgZnJvbSBhIEMtc3RyaW5nLgot
ICBleHBsaWNpdCBNZXNzYWdlKGNvbnN0IGNoYXIqIHN0cikgOiBzc18obmV3IDo6c3RkOjpzdHJp
bmdzdHJlYW0pIHsKLSAgICAqc3NfIDw8IHN0cjsKLSAgfQotCi0jaWYgR1RFU1RfT1NfU1lNQklB
TgotICAvLyBTdHJlYW1zIGEgdmFsdWUgKGVpdGhlciBhIHBvaW50ZXIgb3Igbm90KSB0byB0aGlz
IG9iamVjdC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIGlubGluZSBNZXNzYWdlJiBvcGVy
YXRvciA8PChjb25zdCBUJiB2YWx1ZSkgewotICAgIFN0cmVhbUhlbHBlcih0eXBlbmFtZSBpbnRl
cm5hbDo6aXNfcG9pbnRlcjxUPjo6dHlwZSgpLCB2YWx1ZSk7Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0jZWxzZQotICAvLyBTdHJlYW1zIGEgbm9uLXBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmpl
Y3QuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgTWVzc2FnZSYgb3BlcmF0b3Ig
PDwoY29uc3QgVCYgdmFsKSB7Ci0gICAgLy8gU29tZSBsaWJyYXJpZXMgb3ZlcmxvYWQgPDwgZm9y
IFNUTCBjb250YWluZXJzLiAgVGhlc2UKLSAgICAvLyBvdmVybG9hZHMgYXJlIGRlZmluZWQgaW4g
dGhlIGdsb2JhbCBuYW1lc3BhY2UgaW5zdGVhZCBvZiA6OnN0ZC4KLSAgICAvLwotICAgIC8vIEMr
KydzIHN5bWJvbCBsb29rdXAgcnVsZSAoaS5lLiBLb2VuaWcgbG9va3VwKSBzYXlzIHRoYXQgdGhl
c2UKLSAgICAvLyBvdmVybG9hZHMgYXJlIHZpc2libGUgaW4gZWl0aGVyIHRoZSBzdGQgbmFtZXNw
YWNlIG9yIHRoZSBnbG9iYWwKLSAgICAvLyBuYW1lc3BhY2UsIGJ1dCBub3Qgb3RoZXIgbmFtZXNw
YWNlcywgaW5jbHVkaW5nIHRoZSB0ZXN0aW5nCi0gICAgLy8gbmFtZXNwYWNlIHdoaWNoIEdvb2ds
ZSBUZXN0J3MgTWVzc2FnZSBjbGFzcyBpcyBpbi4KLSAgICAvLwotICAgIC8vIFRvIGFsbG93IFNU
TCBjb250YWluZXJzIChhbmQgb3RoZXIgdHlwZXMgdGhhdCBoYXMgYSA8PCBvcGVyYXRvcgotICAg
IC8vIGRlZmluZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UpIHRvIGJlIHVzZWQgaW4gR29vZ2xl
IFRlc3QKLSAgICAvLyBhc3NlcnRpb25zLCB0ZXN0aW5nOjpNZXNzYWdlIG11c3QgYWNjZXNzIHRo
ZSBjdXN0b20gPDwgb3BlcmF0b3IKLSAgICAvLyBmcm9tIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAg
V2l0aCB0aGlzIHVzaW5nIGRlY2xhcmF0aW9uLAotICAgIC8vIG92ZXJsb2FkcyBvZiA8PCBkZWZp
bmVkIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGFuZCB0aG9zZQotICAgIC8vIHZpc2libGUgdmlh
IEtvZW5pZyBsb29rdXAgYXJlIGJvdGggZXhwb3NlZCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIHVz
aW5nIDo6b3BlcmF0b3IgPDw7Ci0gICAgKnNzXyA8PCB2YWw7Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0KLSAgLy8gU3RyZWFtcyBhIHBvaW50ZXIgdmFsdWUgdG8gdGhpcyBvYmplY3QuCi0gIC8v
Ci0gIC8vIFRoaXMgZnVuY3Rpb24gaXMgYW4gb3ZlcmxvYWQgb2YgdGhlIHByZXZpb3VzIG9uZS4g
IFdoZW4geW91Ci0gIC8vIHN0cmVhbSBhIHBvaW50ZXIgdG8gYSBNZXNzYWdlLCB0aGlzIGRlZmlu
aXRpb24gd2lsbCBiZSB1c2VkIGFzIGl0Ci0gIC8vIGlzIG1vcmUgc3BlY2lhbGl6ZWQuICAoVGhl
IEMrKyBTdGFuZGFyZCwgc2VjdGlvbgotICAvLyBbdGVtcC5mdW5jLm9yZGVyXS4pICBJZiB5b3Ug
c3RyZWFtIGEgbm9uLXBvaW50ZXIsIHRoZW4gdGhlCi0gIC8vIHByZXZpb3VzIGRlZmluaXRpb24g
d2lsbCBiZSB1c2VkLgotICAvLwotICAvLyBUaGUgcmVhc29uIGZvciB0aGlzIG92ZXJsb2FkIGlz
IHRoYXQgc3RyZWFtaW5nIGEgTlVMTCBwb2ludGVyIHRvCi0gIC8vIG9zdHJlYW0gaXMgdW5kZWZp
bmVkIGJlaGF2aW9yLiAgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciwgeW91Ci0gIC8vIG1heSBn
ZXQgIjAiLCAiKG5pbCkiLCAiKG51bGwpIiwgb3IgYW4gYWNjZXNzIHZpb2xhdGlvbi4gIFRvCi0g
IC8vIGVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdCBhY3Jvc3MgY29tcGlsZXJzLCB3ZSBhbHdheXMg
dHJlYXQgTlVMTAotICAvLyBhcyAiKG51bGwpIi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IGlubGluZSBNZXNzYWdlJiBvcGVyYXRvciA8PChUKiBjb25zdCYgcG9pbnRlcikgeyAgLy8gTk9M
SU5UCi0gICAgaWYgKHBvaW50ZXIgPT0gTlVMTCkgewotICAgICAgKnNzXyA8PCAiKG51bGwpIjsK
LSAgICB9IGVsc2UgewotICAgICAgKnNzXyA8PCBwb2ludGVyOwotICAgIH0KLSAgICByZXR1cm4g
KnRoaXM7Ci0gIH0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfU1lNQklBTgotCi0gIC8vIFNpbmNlIHRo
ZSBiYXNpYyBJTyBtYW5pcHVsYXRvcnMgYXJlIG92ZXJsb2FkZWQgZm9yIGJvdGggbmFycm93Ci0g
IC8vIGFuZCB3aWRlIHN0cmVhbXMsIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGlzIHNwZWNpYWxpemVk
IGRlZmluaXRpb24KLSAgLy8gb2Ygb3BlcmF0b3IgPDwsIGV2ZW4gdGhvdWdoIGl0cyBib2R5IGlz
IHRoZSBzYW1lIGFzIHRoZQotICAvLyB0ZW1wbGF0aXplZCB2ZXJzaW9uIGFib3ZlLiAgV2l0aG91
dCB0aGlzIGRlZmluaXRpb24sIHN0cmVhbWluZwotICAvLyBlbmRsIG9yIG90aGVyIGJhc2ljIElP
IG1hbmlwdWxhdG9ycyB0byBNZXNzYWdlIHdpbGwgY29uZnVzZSB0aGUKLSAgLy8gY29tcGlsZXIu
Ci0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KEJhc2ljTmFycm93SW9NYW5pcCB2YWwpIHsKLSAgICAq
c3NfIDw8IHZhbDsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBJbnN0ZWFkIG9mIDEv
MCwgd2Ugd2FudCB0byBzZWUgdHJ1ZS9mYWxzZSBmb3IgYm9vbCB2YWx1ZXMuCi0gIE1lc3NhZ2Um
IG9wZXJhdG9yIDw8KGJvb2wgYikgewotICAgIHJldHVybiAqdGhpcyA8PCAoYiA/ICJ0cnVlIiA6
ICJmYWxzZSIpOwotICB9Ci0KLSAgLy8gVGhlc2UgdHdvIG92ZXJsb2FkcyBhbGxvdyBzdHJlYW1p
bmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQotICAvLyB1c2luZyB0aGUgVVRGLTggZW5j
b2RpbmcuCi0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IHdjaGFyX3QqIHdpZGVfY19zdHIp
OwotICBNZXNzYWdlJiBvcGVyYXRvciA8PCh3Y2hhcl90KiB3aWRlX2Nfc3RyKTsKLQotI2lmIEdU
RVNUX0hBU19TVERfV1NUUklORwotICAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcg
dG8gYSBuYXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAotICAvLyBlbmNvZGluZywgYW5kIHN0
cmVhbXMgdGhlIHJlc3VsdCB0byB0aGlzIE1lc3NhZ2Ugb2JqZWN0LgotICBNZXNzYWdlJiBvcGVy
YXRvciA8PChjb25zdCA6OnN0ZDo6d3N0cmluZyYgd3N0cik7Ci0jZW5kaWYgIC8vIEdURVNUX0hB
U19TVERfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0gIC8vIENvbnZl
cnRzIHRoZSBnaXZlbiB3aWRlIHN0cmluZyB0byBhIG5hcnJvdyBzdHJpbmcgdXNpbmcgdGhlIFVU
Ri04Ci0gIC8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVzc2Fn
ZSBvYmplY3QuCi0gIE1lc3NhZ2UmIG9wZXJhdG9yIDw8KGNvbnN0IDo6d3N0cmluZyYgd3N0cik7
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0gIC8vIEdldHMgdGhlIHRl
eHQgc3RyZWFtZWQgdG8gdGhpcyBvYmplY3Qgc28gZmFyIGFzIGFuIHN0ZDo6c3RyaW5nLgotICAv
LyBFYWNoICdcMCcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIgaXMgcmVwbGFjZWQgd2l0aCAiXFww
Ii4KLSAgLy8KLSAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEg
VVNFUiBQUk9HUkFNLgotICBzdGQ6OnN0cmluZyBHZXRTdHJpbmcoKSBjb25zdDsKLQotIHByaXZh
dGU6Ci0KLSNpZiBHVEVTVF9PU19TWU1CSUFOCi0gIC8vIFRoZXNlIGFyZSBuZWVkZWQgYXMgdGhl
IE5va2lhIFN5bWJpYW4gQ29tcGlsZXIgY2Fubm90IGRlY2lkZSBiZXR3ZWVuCi0gIC8vIGNvbnN0
IFQmIGFuZCBjb25zdCBUKiBpbiBhIGZ1bmN0aW9uIHRlbXBsYXRlLiBUaGUgTm9raWEgY29tcGls
ZXIgX2Nhbl8KLSAgLy8gZGVjaWRlIGJldHdlZW4gY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRp
b25zIGZvciBUIGFuZCBUKiwgc28gYQotICAvLyB0cjE6OnR5cGVfdHJhaXRzLWxpa2UgaXNfcG9p
bnRlciB3b3JrcywgYW5kIHdlIGNhbiBvdmVybG9hZCBvbiB0aGF0LgotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgU3RyZWFtSGVscGVyKGludGVybmFsOjp0cnVlX3R5cGUg
Lyppc19wb2ludGVyKi8sIFQqIHBvaW50ZXIpIHsKLSAgICBpZiAocG9pbnRlciA9PSBOVUxMKSB7
Ci0gICAgICAqc3NfIDw8ICIobnVsbCkiOwotICAgIH0gZWxzZSB7Ci0gICAgICAqc3NfIDw8IHBv
aW50ZXI7Ci0gICAgfQotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9p
ZCBTdHJlYW1IZWxwZXIoaW50ZXJuYWw6OmZhbHNlX3R5cGUgLyppc19wb2ludGVyKi8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiB2YWx1ZSkgewotICAgIC8vIFNlZSB0aGUg
Y29tbWVudHMgaW4gTWVzc2FnZSYgb3BlcmF0b3IgPDwoY29uc3QgVCYpIGFib3ZlIGZvciB3aHkK
LSAgICAvLyB3ZSBuZWVkIHRoaXMgdXNpbmcgc3RhdGVtZW50LgotICAgIHVzaW5nIDo6b3BlcmF0
b3IgPDw7Ci0gICAgKnNzXyA8PCB2YWx1ZTsKLSAgfQotI2VuZGlmICAvLyBHVEVTVF9PU19TWU1C
SUFOCi0KLSAgLy8gV2UnbGwgaG9sZCB0aGUgdGV4dCBzdHJlYW1lZCB0byB0aGlzIG9iamVjdCBo
ZXJlLgotICBjb25zdCBpbnRlcm5hbDo6c2NvcGVkX3B0cjwgOjpzdGQ6OnN0cmluZ3N0cmVhbT4g
c3NfOwotCi0gIC8vIFdlIGRlY2xhcmUgKGJ1dCBkb24ndCBpbXBsZW1lbnQpIHRoaXMgdG8gcHJl
dmVudCB0aGUgY29tcGlsZXIKLSAgLy8gZnJvbSBpbXBsZW1lbnRpbmcgdGhlIGFzc2lnbm1lbnQg
b3BlcmF0b3IuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE1lc3NhZ2UmKTsKLX07Ci0KLS8vIFN0
cmVhbXMgYSBNZXNzYWdlIHRvIGFuIG9zdHJlYW0uCi1pbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvciA8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBNZXNzYWdlJiBzYikgewotICByZXR1cm4g
b3MgPDwgc2IuR2V0U3RyaW5nKCk7Ci19Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIENv
bnZlcnRzIGEgc3RyZWFtYWJsZSB2YWx1ZSB0byBhbiBzdGQ6OnN0cmluZy4gIEEgTlVMTCBwb2lu
dGVyIGlzCi0vLyBjb252ZXJ0ZWQgdG8gIihudWxsKSIuICBXaGVuIHRoZSBpbnB1dCB2YWx1ZSBp
cyBhIDo6c3RyaW5nLAotLy8gOjpzdGQ6OnN0cmluZywgOjp3c3RyaW5nLCBvciA6OnN0ZDo6d3N0
cmluZyBvYmplY3QsIGVhY2ggTlVMCi0vLyBjaGFyYWN0ZXIgaW4gaXQgaXMgcmVwbGFjZWQgd2l0
aCAiXFwwIi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjpzdHJpbmcgU3RyZWFtYWJsZVRv
U3RyaW5nKGNvbnN0IFQmIHN0cmVhbWFibGUpIHsKLSAgcmV0dXJuIChNZXNzYWdlKCkgPDwgc3Ry
ZWFtYWJsZSkuR2V0U3RyaW5nKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dU
RVNUX01FU1NBR0VfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rl
c3QtcGFyYW0tdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJhbS10
ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOGY5YmE3OWViMy4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTQ0NCArMCwwIEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVS
QVRFRCBieSBjb21tYW5kOgotLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAK
LS8vIERPIE5PVCBFRElUIEJZIEhBTkQhISEKLQotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQg
TG9zZXYpCi0vLwotLy8gTWFjcm9zIGFuZCBmdW5jdGlvbnMgZm9yIGltcGxlbWVudGluZyBwYXJh
bWV0ZXJpemVkIHRlc3RzCi0vLyBpbiBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29n
bGUgVGVzdCkKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8g
Tk9UIEVESVQgQlkgSEFORCEKLS8vCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1Rf
UEFSQU1fVEVTVF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RF
U1RfSF8KLQotCi0vLyBWYWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzIGFsbG93IHlvdSB0byB0ZXN0
IHlvdXIgY29kZSB3aXRoIGRpZmZlcmVudAotLy8gcGFyYW1ldGVycyB3aXRob3V0IHdyaXRpbmcg
bXVsdGlwbGUgY29waWVzIG9mIHRoZSBzYW1lIHRlc3QuCi0vLwotLy8gSGVyZSBpcyBob3cgeW91
IHVzZSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzOgotCi0jaWYgMAotCi0vLyBUbyB3cml0ZSB2
YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCBmaXJzdCB5b3Ugc2hvdWxkIGRlZmluZSBhIGZpeHR1
cmUKLS8vIGNsYXNzLiBJdCBpcyB1c3VhbGx5IGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0V2l0
aFBhcmFtPFQ+IChzZWUgYmVsb3cgZm9yCi0vLyBhbm90aGVyIGluaGVyaXRhbmNlIHNjaGVtZSB0
aGF0J3Mgc29tZXRpbWVzIHVzZWZ1bCBpbiBtb3JlIGNvbXBsaWNhdGVkCi0vLyBjbGFzcyBoaWVy
YXJjaGllcyksIHdoZXJlIHRoZSB0eXBlIG9mIHlvdXIgcGFyYW1ldGVyIHZhbHVlcy4KLS8vIFRl
c3RXaXRoUGFyYW08VD4gaXMgaXRzZWxmIGRlcml2ZWQgZnJvbSB0ZXN0aW5nOjpUZXN0LiBUIGNh
biBiZSBhbnkKLS8vIGNvcHlhYmxlIHR5cGUuIElmIGl0J3MgYSByYXcgcG9pbnRlciwgeW91IGFy
ZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlCi0vLyBsaWZlc3BhbiBvZiB0aGUgcG9pbnRl
ZCB2YWx1ZXMuCi0KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGNvbnN0IGNoYXIqPiB7Ci0gIC8vIFlvdSBjYW4gaW1wbGVtZW50IGFsbCB0aGUgdXN1YWwg
Y2xhc3MgZml4dHVyZSBtZW1iZXJzIGhlcmUuCi19OwotCi0vLyBUaGVuLCB1c2UgdGhlIFRFU1Rf
UCBtYWNybyB0byBkZWZpbmUgYXMgbWFueSBwYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBmb3IgdGhp
cyBmaXh0dXJlIGFzIHlvdSB3YW50LiBUaGUgX1Agc3VmZml4IGlzIGZvciAicGFyYW1ldGVyaXpl
ZCIKLS8vIG9yICJwYXR0ZXJuIiwgd2hpY2hldmVyIHlvdSBwcmVmZXIgdG8gdGhpbmsuCi0KLVRF
U1RfUChGb29UZXN0LCBEb2VzQmxhaCkgewotICAvLyBJbnNpZGUgYSB0ZXN0LCBhY2Nlc3MgdGhl
IHRlc3QgcGFyYW1ldGVyIHdpdGggdGhlIEdldFBhcmFtKCkgbWV0aG9kCi0gIC8vIG9mIHRoZSBU
ZXN0V2l0aFBhcmFtPFQ+IGNsYXNzOgotICBFWFBFQ1RfVFJVRShmb28uQmxhaChHZXRQYXJhbSgp
KSk7Ci0gIC4uLgotfQotCi1URVNUX1AoRm9vVGVzdCwgSGFzQmxhaEJsYWgpIHsKLSAgLi4uCi19
Ci0KLS8vIEZpbmFsbHksIHlvdSBjYW4gdXNlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHRvIGlu
c3RhbnRpYXRlIHRoZSB0ZXN0Ci0vLyBjYXNlIHdpdGggYW55IHNldCBvZiBwYXJhbWV0ZXJzIHlv
dSB3YW50LiBHb29nbGUgVGVzdCBkZWZpbmVzIGEgbnVtYmVyCi0vLyBvZiBmdW5jdGlvbnMgZm9y
IGdlbmVyYXRpbmcgdGVzdCBwYXJhbWV0ZXJzLiBUaGV5IHJldHVybiB3aGF0IHdlIGNhbGwKLS8v
IChzdXJwcmlzZSEpIHBhcmFtZXRlciBnZW5lcmF0b3JzLiBIZXJlIGlzIGEgIHN1bW1hcnkgb2Yg
dGhlbSwgd2hpY2gKLS8vIGFyZSBhbGwgaW4gdGhlIHRlc3RpbmcgbmFtZXNwYWNlOgotLy8KLS8v
Ci0vLyAgUmFuZ2UoYmVnaW4sIGVuZCBbLCBzdGVwXSkgLSBZaWVsZHMgdmFsdWVzIHtiZWdpbiwg
YmVnaW4rc3RlcCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luK3N0ZXAr
c3RlcCwgLi4ufS4gVGhlIHZhbHVlcyBkbyBub3QKLS8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluY2x1ZGUgZW5kLiBzdGVwIGRlZmF1bHRzIHRvIDEuCi0vLyAgVmFsdWVzKHYxLCB2
MiwgLi4uLCB2TikgICAgLSBZaWVsZHMgdmFsdWVzIHt2MSwgdjIsIC4uLiwgdk59LgotLy8gIFZh
bHVlc0luKGNvbnRhaW5lcikgICAgICAgIC0gWWllbGRzIHZhbHVlcyBmcm9tIGEgQy1zdHlsZSBh
cnJheSwgYW4gU1RMCi0vLyAgVmFsdWVzSW4oYmVnaW4sZW5kKSAgICAgICAgICBjb250YWluZXIs
IG9yIGFuIGl0ZXJhdG9yIHJhbmdlIFtiZWdpbiwgZW5kKS4KLS8vICBCb29sKCkgICAgICAgICAg
ICAgICAgICAgICAtIFlpZWxkcyBzZXF1ZW5jZSB7ZmFsc2UsIHRydWV9LgotLy8gIENvbWJpbmUo
ZzEsIGcyLCAuLi4sIGdOKSAgIC0gWWllbGRzIGFsbCBjb21iaW5hdGlvbnMgKHRoZSBDYXJ0ZXNp
YW4gcHJvZHVjdAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBtYXRo
IHNhdnZ5KSBvZiB0aGUgdmFsdWVzIGdlbmVyYXRlZAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnkgdGhlIE4gZ2VuZXJhdG9ycy4KLS8vCi0vLyBGb3IgbW9yZSBkZXRhaWxzLCBz
ZWUgY29tbWVudHMgYXQgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBiZWxvdwot
Ly8gaW4gdGhpcyBmaWxlLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IHdpbGwgaW5z
dGFudGlhdGUgdGVzdHMgZnJvbSB0aGUgRm9vVGVzdCB0ZXN0IGNhc2UKLS8vIGVhY2ggd2l0aCBw
YXJhbWV0ZXIgdmFsdWVzICJtZWVueSIsICJtaW55IiwgYW5kICJtb2UiLgotCi1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChJbnN0YW50aWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoIm1lZW55IiwgIm1pbnki
LCAibW9lIikpOwotCi0vLyBUbyBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRo
ZSBwYXR0ZXJuLCAoeWVzLCB5b3UKLS8vIGNhbiBpbnN0YW50aWF0ZSBpdCBtb3JlIHRoZW4gb25j
ZSkgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZQotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ag
bWFjcm8gaXMgYSBwcmVmaXggdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQotLy8gYWN0dWFsIHRl
c3QgY2FzZSBuYW1lLiBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IgZGlmZmVy
ZW50Ci0vLyBpbnN0YW50aWF0aW9ucy4gVGhlIHRlc3RzIGZyb20gdGhlIGluc3RhbnRpYXRpb24g
YWJvdmUgd2lsbCBoYXZlCi0vLyB0aGVzZSBuYW1lczoKLS8vCi0vLyAgICAqIEluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMCBmb3IgIm1lZW55IgotLy8gICAgKiBJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzEgZm9yICJtaW55IgotLy8gICAgKiBJbnN0YW50aWF0
aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFoLzIgZm9yICJtb2UiCi0vLyAgICAqIEluc3RhbnRpYXRp
b25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMCBmb3IgIm1lZW55IgotLy8gICAgKiBJbnN0YW50
aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzEgZm9yICJtaW55IgotLy8gICAgKiBJbnN0
YW50aWF0aW9uTmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzIgZm9yICJtb2UiCi0vLwotLy8gWW91
IGNhbiB1c2UgdGhlc2UgbmFtZXMgaW4gLS1ndGVzdF9maWx0ZXIuCi0vLwotLy8gVGhpcyBzdGF0
ZW1lbnQgd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMgZnJvbSBGb29UZXN0IGFnYWluLCBlYWNo
Ci0vLyB3aXRoIHBhcmFtZXRlciB2YWx1ZXMgImNhdCIgYW5kICJkb2ciOgotCi1jb25zdCBjaGFy
KiBwZXRzW10gPSB7ImNhdCIsICJkb2cifTsKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFub3Ro
ZXJJbnN0YW50aWF0aW9uTmFtZSwgRm9vVGVzdCwgVmFsdWVzSW4ocGV0cykpOwotCi0vLyBUaGUg
dGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlvbiBhYm92ZSB3aWxsIGhhdmUgdGhlc2UgbmFtZXM6
Ci0vLwotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8w
IGZvciAiY2F0IgotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVzdC5Eb2Vz
QmxhaC8xIGZvciAiZG9nIgotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5hbWUvRm9vVGVz
dC5IYXNCbGFoQmxhaC8wIGZvciAiY2F0IgotLy8gICAgKiBBbm90aGVySW5zdGFudGlhdGlvbk5h
bWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8xIGZvciAiZG9nIgotLy8KLS8vIFBsZWFzZSBub3RlIHRo
YXQgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBpbnN0YW50aWF0ZSBhbGwgdGVzdHMKLS8v
IGluIHRoZSBnaXZlbiB0ZXN0IGNhc2UsIHdoZXRoZXIgdGhlaXIgZGVmaW5pdGlvbnMgY29tZSBi
ZWZvcmUgb3IKLS8vIEFGVEVSIHRoZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBzdGF0ZW1lbnQu
Ci0vLwotLy8gUGxlYXNlIGFsc28gbm90ZSB0aGF0IGdlbmVyYXRvciBleHByZXNzaW9ucyAoaW5j
bHVkaW5nIHBhcmFtZXRlcnMgdG8gdGhlCi0vLyBnZW5lcmF0b3JzKSBhcmUgZXZhbHVhdGVkIGlu
IEluaXRHb29nbGVUZXN0KCksIGFmdGVyIG1haW4oKSBoYXMgc3RhcnRlZC4KLS8vIFRoaXMgYWxs
b3dzIHRoZSB1c2VyIG9uIG9uZSBoYW5kLCB0byBhZGp1c3QgZ2VuZXJhdG9yIHBhcmFtZXRlcnMg
aW4gb3JkZXIKLS8vIHRvIGR5bmFtaWNhbGx5IGRldGVybWluZSBhIHNldCBvZiB0ZXN0cyB0byBy
dW4gYW5kIG9uIHRoZSBvdGhlciBoYW5kLAotLy8gZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0byBp
bnNwZWN0IHRoZSBnZW5lcmF0ZWQgdGVzdHMgd2l0aCBHb29nbGUgVGVzdAotLy8gcmVmbGVjdGlv
biBBUEkgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBleGVjdXRlZC4KLS8vCi0vLyBZb3UgY2Fu
IHNlZSBzYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MgYW5kIHNhbXBsZXMvc2FtcGxlOF91bml0
dGVzdC5jYwotLy8gZm9yIG1vcmUgZXhhbXBsZXMuCi0vLwotLy8gSW4gdGhlIGZ1dHVyZSwgd2Ug
cGxhbiB0byBwdWJsaXNoIHRoZSBBUEkgZm9yIGRlZmluaW5nIG5ldyBwYXJhbWV0ZXIKLS8vIGdl
bmVyYXRvcnMuIEJ1dCBmb3Igbm93IHRoaXMgaW50ZXJmYWNlIHJlbWFpbnMgcGFydCBvZiB0aGUg
aW50ZXJuYWwKLS8vIGltcGxlbWVudGF0aW9uIGFuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KLS8v
Ci0vLwotLy8gQSBwYXJhbWV0ZXJpemVkIHRlc3QgZml4dHVyZSBtdXN0IGJlIGRlcml2ZWQgZnJv
bSB0ZXN0aW5nOjpUZXN0IGFuZCBmcm9tCi0vLyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8
VD4sIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlcgotLy8gdmFsdWVzLiBJbmhl
cml0aW5nIGZyb20gVGVzdFdpdGhQYXJhbTxUPiBzYXRpc2ZpZXMgdGhhdCByZXF1aXJlbWVudCBi
ZWNhdXNlCi0vLyBUZXN0V2l0aFBhcmFtPFQ+IGluaGVyaXRzIGZyb20gYm90aCBUZXN0IGFuZCBX
aXRoUGFyYW1JbnRlcmZhY2UuIEluIG1vcmUKLS8vIGNvbXBsaWNhdGVkIGhpZXJhcmNoaWVzLCBo
b3dldmVyLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIHRvIGluaGVyaXQKLS8vIHNlcGFyYXRl
bHkgZnJvbSBUZXN0IGFuZCBXaXRoUGFyYW1JbnRlcmZhY2UuIEZvciBleGFtcGxlOgotCi1jbGFz
cyBCYXNlVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewotICAvLyBZb3UgY2FuIGluaGVy
aXQgYWxsIHRoZSB1c3VhbCBtZW1iZXJzIGZvciBhIG5vbi1wYXJhbWV0ZXJpemVkIHRlc3QKLSAg
Ly8gZml4dHVyZSBoZXJlLgotfTsKLQotY2xhc3MgRGVyaXZlZFRlc3QgOiBwdWJsaWMgQmFzZVRl
c3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+IHsKLSAgLy8gVGhl
IHVzdWFsIHRlc3QgZml4dHVyZSBtZW1iZXJzIGdvIGhlcmUgdG9vLgotfTsKLQotVEVTVF9GKEJh
c2VUZXN0LCBIYXNGb28pIHsKLSAgLy8gVGhpcyBpcyBhbiBvcmRpbmFyeSBub24tcGFyYW1ldGVy
aXplZCB0ZXN0LgotfQotCi1URVNUX1AoRGVyaXZlZFRlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEdl
dFBhcmFtIHdvcmtzIGp1c3QgdGhlIHNhbWUgaGVyZSBhcyBpZiB5b3UgaW5oZXJpdCBmcm9tIFRl
c3RXaXRoUGFyYW0uCi0gIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFtKCkpKTsKLX0KLQot
I2VuZGlmICAvLyAwCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0K
LSNpZiAhR1RFU1RfT1NfU1lNQklBTgotIyBpbmNsdWRlIDx1dGlsaXR5PgotI2VuZGlmCi0KLS8v
IHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRlciBiZWlu
ZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNlICNpbmNs
dWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1Qu
Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLSNpbmNsdWRlICJn
dGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9U
RVNUCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRnVuY3Rpb25zIHByb2R1Y2luZyBwYXJh
bWV0ZXIgZ2VuZXJhdG9ycy4KLS8vCi0vLyBHb29nbGUgVGVzdCB1c2VzIHRoZXNlIGdlbmVyYXRv
cnMgdG8gcHJvZHVjZSBwYXJhbWV0ZXJzIGZvciB2YWx1ZS0KLS8vIHBhcmFtZXRlcml6ZWQgdGVz
dHMuIFdoZW4gYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBpcyBpbnN0YW50aWF0ZWQKLS8vIHdp
dGggYSBwYXJ0aWN1bGFyIGdlbmVyYXRvciwgR29vZ2xlIFRlc3QgY3JlYXRlcyBhbmQgcnVucyB0
ZXN0cwotLy8gZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhl
IGdlbmVyYXRvci4KLS8vCi0vLyBJbiB0aGUgZm9sbG93aW5nIHNhbXBsZSwgdGVzdHMgZnJvbSB0
ZXN0IGNhc2UgRm9vVGVzdCBhcmUgaW5zdGFudGlhdGVkCi0vLyBlYWNoIHRocmVlIHRpbWVzIHdp
dGggcGFyYW1ldGVyIHZhbHVlcyAzLCA1LCBhbmQgODoKLS8vCi0vLyBjbGFzcyBGb29UZXN0IDog
cHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7IC4uLiB9OwotLy8KLS8vIFRFU1RfUChGb29UZXN0
LCBUZXN0VGhpcykgewotLy8gfQotLy8gVEVTVF9QKEZvb1Rlc3QsIFRlc3RUaGF0KSB7Ci0vLyB9
Ci0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChUZXN0U2VxdWVuY2UsIEZvb1Rlc3QsIFZhbHVl
cygzLCA1LCA4KSk7Ci0vLwotCi0vLyBSYW5nZSgpIHJldHVybnMgZ2VuZXJhdG9ycyBwcm92aWRp
bmcgc2VxdWVuY2VzIG9mIHZhbHVlcyBpbiBhIHJhbmdlLgotLy8KLS8vIFN5bm9wc2lzOgotLy8g
UmFuZ2Uoc3RhcnQsIGVuZCkKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBh
IHNlcXVlbmNlIG9mIHZhbHVlcyB7c3RhcnQsIHN0YXJ0KzEsCi0vLyAgICAgc3RhcnQrMiwgLi4u
LCB9LgotLy8gUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCkKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJh
dG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB7c3RhcnQsIHN0YXJ0K3N0ZXAsCi0v
LyAgICAgc3RhcnQrc3RlcCtzdGVwLCAuLi4sIH0uCi0vLyBOb3RlczoKLS8vICAgKiBUaGUgZ2Vu
ZXJhdGVkIHNlcXVlbmNlcyBuZXZlciBpbmNsdWRlIGVuZC4gRm9yIGV4YW1wbGUsIFJhbmdlKDEs
IDUpCi0vLyAgICAgcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgYSBzZXF1ZW5jZSB7MSwg
MiwgMywgNH0uIFJhbmdlKDEsIDksIDIpCi0vLyAgICAgcmV0dXJucyBhIGdlbmVyYXRvciBwcm9k
dWNpbmcgezEsIDMsIDUsIDd9LgotLy8gICAqIHN0YXJ0IGFuZCBlbmQgbXVzdCBoYXZlIHRoZSBz
YW1lIHR5cGUuIFRoYXQgdHlwZSBtYXkgYmUgYW55IGludGVncmFsIG9yCi0vLyAgICAgZmxvYXRp
bmctcG9pbnQgdHlwZSBvciBhIHVzZXIgZGVmaW5lZCB0eXBlIHNhdGlzZnlpbmcgdGhlc2UgY29u
ZGl0aW9uczoKLS8vICAgICAqIEl0IG11c3QgYmUgYXNzaWduYWJsZSAoaGF2ZSBvcGVyYXRvcj0o
KSBkZWZpbmVkKS4KLS8vICAgICAqIEl0IG11c3QgaGF2ZSBvcGVyYXRvcisoKSAob3BlcmF0b3Ir
KGludC1jb21wYXRpYmxlIHR5cGUpIGZvcgotLy8gICAgICAgdHdvLW9wZXJhbmQgdmVyc2lvbiku
Ci0vLyAgICAgKiBJdCBtdXN0IGhhdmUgb3BlcmF0b3I8KCkgZGVmaW5lZC4KLS8vICAgICBFbGVt
ZW50cyBpbiB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlcyB3aWxsIGFsc28gaGF2ZSB0aGF0IHR5cGUu
Ci0vLyAgICogQ29uZGl0aW9uIHN0YXJ0IDwgZW5kIG11c3QgYmUgc2F0aXNmaWVkIGluIG9yZGVy
IGZvciByZXN1bHRpbmcgc2VxdWVuY2VzCi0vLyAgICAgdG8gY29udGFpbiBhbnkgZWxlbWVudHMu
Ci0vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEluY3JlbWVudFQ+Ci1pbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQsIEluY3JlbWVudFQgc3Rl
cCkgewotICByZXR1cm4gaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+KAotICAgICAgbmV3IGlu
dGVybmFsOjpSYW5nZUdlbmVyYXRvcjxULCBJbmNyZW1lbnRUPihzdGFydCwgZW5kLCBzdGVwKSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+
IFJhbmdlKFQgc3RhcnQsIFQgZW5kKSB7Ci0gIHJldHVybiBSYW5nZShzdGFydCwgZW5kLCAxKTsK
LX0KLQotLy8gVmFsdWVzSW4oKSBmdW5jdGlvbiBhbGxvd3MgZ2VuZXJhdGlvbiBvZiB0ZXN0cyB3
aXRoIHBhcmFtZXRlcnMgY29taW5nIGZyb20KLS8vIGEgY29udGFpbmVyLgotLy8KLS8vIFN5bm9w
c2lzOgotLy8gVmFsdWVzSW4oY29uc3QgVCAoJmFycmF5KVtOXSkKLS8vICAgLSByZXR1cm5zIGEg
Z2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBmcm9tCi0vLyAgICAg
YSBDLXN0eWxlIGFycmF5LgotLy8gVmFsdWVzSW4oY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIp
Ci0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxl
bWVudHMgZnJvbQotLy8gICAgIGFuIFNUTC1zdHlsZSBjb250YWluZXIuCi0vLyBWYWx1ZXNJbihJ
dGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3Ig
cHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KLS8vICAgICBhIHJhbmdlIFti
ZWdpbiwgZW5kKSBkZWZpbmVkIGJ5IGEgcGFpciBvZiBTVEwtc3R5bGUgaXRlcmF0b3JzLiBUaGVz
ZQotLy8gICAgIGl0ZXJhdG9ycyBjYW4gYWxzbyBiZSBwbGFpbiBDIHBvaW50ZXJzLgotLy8KLS8v
IFBsZWFzZSBub3RlIHRoYXQgVmFsdWVzSW4gY29waWVzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgY29u
dGFpbmVycwotLy8gcGFzc2VkIGluIGFuZCBrZWVwcyB0aGVtIHRvIGdlbmVyYXRlIHRlc3RzIGlu
IFJVTl9BTExfVEVTVFMoKS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyBUaGlzIGluc3RhbnRp
YXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdHJpbmdUZXN0Ci0vLyBlYWNoIHdpdGggQy1zdHJp
bmcgdmFsdWVzIG9mICJmb28iLCAiYmFyIiwgYW5kICJiYXoiOgotLy8KLS8vIGNvbnN0IGNoYXIq
IHN0cmluZ3NbXSA9IHsiZm9vIiwgImJhciIsICJiYXoifTsKLS8vIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKFN0cmluZ1NlcXVlbmNlLCBTcnRpbmdUZXN0LCBWYWx1ZXNJbihzdHJpbmdzKSk7Ci0v
LwotLy8gVGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgU3RsU3RyaW5nVGVz
dAotLy8gZWFjaCB3aXRoIFNUTCBzdHJpbmdzIHdpdGggdmFsdWVzICJhIiBhbmQgImIiOgotLy8K
LS8vIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IEdldFBhcmFtZXRlclN0cmluZ3MoKSB7
Ci0vLyAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+IHY7Ci0vLyAgIHYucHVzaF9iYWNr
KCJhIik7Ci0vLyAgIHYucHVzaF9iYWNrKCJiIik7Ci0vLyAgIHJldHVybiB2OwotLy8gfQotLy8K
LS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENoYXJTZXF1ZW5jZSwKLS8vICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0bFN0cmluZ1Rlc3QsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXNJbihHZXRQYXJhbWV0ZXJTdHJpbmdzKCkpKTsKLS8vCi0vLwotLy8gVGhpcyB3aWxsIGFs
c28gaW5zdGFudGlhdGUgdGVzdHMgZnJvbSBDaGFyVGVzdAotLy8gZWFjaCB3aXRoIHBhcmFtZXRl
ciB2YWx1ZXMgJ2EnIGFuZCAnYic6Ci0vLwotLy8gOjpzdGQ6Omxpc3Q8Y2hhcj4gR2V0UGFyYW1l
dGVyQ2hhcnMoKSB7Ci0vLyAgIDo6c3RkOjpsaXN0PGNoYXI+IGxpc3Q7Ci0vLyAgIGxpc3QucHVz
aF9iYWNrKCdhJyk7Ci0vLyAgIGxpc3QucHVzaF9iYWNrKCdiJyk7Ci0vLyAgIHJldHVybiBsaXN0
OwotLy8gfQotLy8gOjpzdGQ6Omxpc3Q8Y2hhcj4gbCA9IEdldFBhcmFtZXRlckNoYXJzKCk7Ci0v
LyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChDaGFyU2VxdWVuY2UyLAotLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgQ2hhclRlc3QsCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNJ
bihsLmJlZ2luKCksIGwuZW5kKCkpKTsKLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0
ZXJhdG9yPgotaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6
OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgot
VmFsdWVzSW4oRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKSB7Ci0g
IHR5cGVkZWYgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXRlcmF0b3JUcmFpdHM8Rm9y
d2FyZEl0ZXJhdG9yPgotICAgICAgOjp2YWx1ZV90eXBlIFBhcmFtVHlwZTsKLSAgcmV0dXJuIGlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KAotICAgICAgbmV3IGludGVybmFsOjpW
YWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0b3I8UGFyYW1UeXBlPihiZWdpbiwgZW5kKSk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLWludGVybmFsOjpQYXJhbUdlbmVy
YXRvcjxUPiBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKSB7Ci0gIHJldHVybiBWYWx1ZXNJ
bihhcnJheSwgYXJyYXkgKyBOKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KLWlu
dGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU+IFZh
bHVlc0luKAotICAgIGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyKSB7Ci0gIHJldHVybiBWYWx1
ZXNJbihjb250YWluZXIuYmVnaW4oKSwgY29udGFpbmVyLmVuZCgpKTsKLX0KLQotLy8gVmFsdWVz
KCkgYWxsb3dzIGdlbmVyYXRpbmcgdGVzdHMgZnJvbSBleHBsaWNpdGx5IHNwZWNpZmllZCBsaXN0
IG9mCi0vLyBwYXJhbWV0ZXJzLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gVmFsdWVzKFQgdjEsIFQg
djIsIC4uLiwgVCB2TikKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1
ZW5jZXMgd2l0aCBlbGVtZW50cyB2MSwgdjIsIC4uLiwgdk4uCi0vLwotLy8gRm9yIGV4YW1wbGUs
IHRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIEJhclRlc3QgZWFjaAotLy8g
d2l0aCB2YWx1ZXMgIm9uZSIsICJ0d28iLCBhbmQgInRocmVlIjoKLS8vCi0vLyBJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChOdW1TZXF1ZW5jZSwgQmFyVGVzdCwgVmFsdWVzKCJvbmUiLCAidHdvIiwg
InRocmVlIikpOwotLy8KLS8vIFRoaXMgaW5zdGFudGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNl
IEJhelRlc3QgZWFjaCB3aXRoIHZhbHVlcyAxLCAyLCAzLjUuCi0vLyBUaGUgZXhhY3QgdHlwZSBv
ZiB2YWx1ZXMgd2lsbCBkZXBlbmQgb24gdGhlIHR5cGUgb2YgcGFyYW1ldGVyIGluIEJhelRlc3Qu
Ci0vLwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRpbmdOdW1iZXJzLCBCYXpUZXN0
LCBWYWx1ZXMoMSwgMiwgMy41KSk7Ci0vLwotLy8gQ3VycmVudGx5LCBWYWx1ZXMoKSBzdXBwb3J0
cyBmcm9tIDEgdG8gNTAgcGFyYW1ldGVycy4KLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci1p
bnRlcm5hbDo6VmFsdWVBcnJheTE8VDE+IFZhbHVlcyhUMSB2MSkgewotICByZXR1cm4gaW50ZXJu
YWw6OlZhbHVlQXJyYXkxPFQxPih2MSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTI8VDEsIFQyPiBWYWx1ZXMoVDEgdjEsIFQy
IHYyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTI8VDEsIFQyPih2MSwgdjIpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5MzxUMSwgVDIsIFQzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2
MykgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkzPFQxLCBUMiwgVDM+KHYxLCB2Miwg
djMpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQ+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTQ8VDEsIFQyLCBUMywgVDQ+IFZh
bHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCkgewotICByZXR1cm4gaW50ZXJuYWw6OlZh
bHVlQXJyYXk0PFQxLCBUMiwgVDMsIFQ0Pih2MSwgdjIsIHYzLCB2NCk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDU+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTU8VDEsIFQyLCBUMywgVDQsIFQ1PiBWYWx1
ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsCi0gICAgVDUgdjUpIHsKLSAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5NTxUMSwgVDIsIFQzLCBUNCwgVDU+KHYxLCB2MiwgdjMsIHY0LCB2
NSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDY+Ci1pbnRlcm5hbDo6
VmFsdWVBcnJheTY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gVmFsdWVzKFQxIHYxLCBUMiB2Miwg
VDMgdjMsCi0gICAgVDQgdjQsIFQ1IHY1LCBUNiB2NikgewotICByZXR1cm4gaW50ZXJuYWw6OlZh
bHVlQXJyYXk2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4K
LWludGVybmFsOjpWYWx1ZUFycmF5NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gVmFsdWVz
KFQxIHYxLCBUMiB2MiwgVDMgdjMsCi0gICAgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcpIHsK
LSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
Nz4odjEsIHYyLCB2MywgdjQsIHY1LAotICAgICAgdjYsIHY3KTsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotaW50ZXJu
YWw6OlZhbHVlQXJyYXk4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gVmFsdWVzKFQx
IHYxLCBUMiB2MiwKLSAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTg8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4Pih2MSwgdjIsIHYzLCB2NCwKLSAgICAgIHY1LCB2NiwgdjcsIHY4KTsKLX0KLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOT4KLWludGVybmFsOjpWYWx1ZUFycmF5OTxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLAotICAgIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5KSB7Ci0gIHJldHVybiBpbnRlcm5h
bDo6VmFsdWVBcnJheTk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4odjEsIHYy
LCB2MywKLSAgICAgIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjkpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTA+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTEwPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gVmFsdWVzKFQxIHYxLAotICAgIFQyIHYyLCBUMyB2
MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCkgewot
ICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTA+KHYxLAotICAgICAgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5
LCB2MTApOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExPgotaW50ZXJuYWw6OlZhbHVlQXJyYXkxMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsCi0gICAgVDExPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQg
djQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEwLCBUMTEg
djExKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTExPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwKLSAgICAgIFQxMT4odjEsIHYyLCB2MywgdjQsIHY1LCB2
NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTI+Ci1pbnRlcm5hbDo6VmFsdWVB
cnJheTEyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAg
IFQxMj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3
IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMikgewotICBy
ZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMj4odjEsIHYyLCB2MywgdjQsIHY1LCB2Niwgdjcs
IHY4LCB2OSwgdjEwLCB2MTEsIHYxMik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzPgotaW50
ZXJuYWw6OlZhbHVlQXJyYXkxMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLAotICAgIFQxMz4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYx
MSwgVDEyIHYxMiwgVDEzIHYxMykgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxMzxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwg
VDEzPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2
MTMpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0PgotaW50ZXJuYWw6
OlZhbHVlQXJyYXkxNDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsCi0gICAgVDE0PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQs
IFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVB
cnJheTE0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAg
ICAgVDEyLCBUMTMsIFQxND4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEw
LCB2MTEsIHYxMiwgdjEzLAotICAgICAgdjE0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkxNTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAg
VDE0LCBUMTU+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywgVDggdjgsCi0gICAgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5
MTU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBU
MTIsIFQxMywgVDE0LCBUMTU+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwgdjExLCB2MTIsCi0gICAgICB2MTMsIHYxNCwgdjE1KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNj4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5MTY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTY+IFZhbHVlcyhUMSB2MSwgVDIg
djIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywKLSAgICBUOCB2OCwgVDkgdjks
IFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCi0g
ICAgVDE2IHYxNikgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkxNjxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQs
IFQxNSwgVDE2Pih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwK
LSAgICAgIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkxNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3PiBW
YWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsCi0g
ICAgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQg
djE0LCBUMTUgdjE1LAotICAgIFQxNiB2MTYsIFQxNyB2MTcpIHsKLSAgcmV0dXJuIGludGVybmFs
OjpWYWx1ZUFycmF5MTc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Pih2MSwgdjIsIHYzLCB2NCwg
djUsIHY2LCB2NywgdjgsIHY5LCB2MTAsCi0gICAgICB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwg
djE2LCB2MTcpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4K
LWludGVybmFsOjpWYWx1ZUFycmF5MTg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4PiBWYWx1
ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwKLSAgICBUNyB2Nywg
VDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0
LCBUMTUgdjE1LAotICAgIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgpIHsKLSAgcmV0dXJuIGlu
dGVybmFsOjpWYWx1ZUFycmF5MTg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTg+KHYxLCB2
MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksCi0gICAgICB2MTAsIHYxMSwgdjEyLCB2MTMs
IHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOT4KLWludGVybmFsOjpWYWx1ZUFycmF5MTk8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAg
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTk+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYz
LCBUNCB2NCwgVDUgdjUsCi0gICAgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAs
IFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsCi0gICAgVDE1IHYxNSwgVDE2IHYx
NiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVl
QXJyYXkxOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAg
ICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Pih2MSwgdjIsIHYzLCB2
NCwgdjUsIHY2LCB2NywgdjgsCi0gICAgICB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYx
NSwgdjE2LCB2MTcsIHYxOCwgdjE5KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwPgotaW50ZXJuYWw6OlZhbHVl
QXJyYXkyMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwPiBWYWx1ZXMoVDEg
djEsIFQyIHYyLCBUMyB2MywgVDQgdjQsCi0gICAgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgs
IFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLAotICAgIFQxNCB2MTQs
IFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjApIHsK
LSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MjA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwPih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywKLSAgICAgIHY4LCB2
OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxPgotaW50ZXJuYWw6OlZhbHVlQXJy
YXkyMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjE+IFZhbHVlcyhU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwKLSAgICBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2
OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsCi0gICAgVDE0IHYx
NCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwg
VDIxIHYyMSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyMTxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMT4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwK
LSAgICAgIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3
LCB2MTgsIHYxOSwgdjIwLCB2MjEpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5
cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIx
LCB0eXBlbmFtZSBUMjI+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTIyPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2
MywKLSAgICBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEw
LCBUMTEgdjExLCBUMTIgdjEyLAotICAgIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2
MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsCi0gICAgVDIxIHYyMSwgVDIy
IHYyMikgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyMjxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyPih2MSwgdjIsIHYzLCB2NCwKLSAgICAg
IHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2
MTcsIHYxOCwgdjE5LAotICAgICAgdjIwLCB2MjEsIHYyMik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzPgotaW50ZXJuYWw6OlZh
bHVlQXJyYXkyMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwg
VDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLAotICAgIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLAotICAg
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2MTgsIFQx
OSB2MTksIFQyMCB2MjAsCi0gICAgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMykgewotICByZXR1
cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+KHYxLCB2MiwgdjMsCi0gICAgICB2NCwgdjUsIHY2LCB2
NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2
MTksCi0gICAgICB2MjAsIHYyMSwgdjIyLCB2MjMpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0PgotaW50
ZXJuYWw6OlZhbHVlQXJyYXkyNDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQ+IFZhbHVlcyhUMSB2MSwgVDIgdjIsCi0gICAgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEs
IFQxMiB2MTIsCi0gICAgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYx
NywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwKLSAgICBUMjEgdjIxLCBUMjIgdjIyLCBUMjMg
djIzLCBUMjQgdjI0KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTI0PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0Pih2MSwg
djIsCi0gICAgICB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEz
LCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwKLSAgICAgIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIz
LCB2MjQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjU+Ci1pbnRlcm5hbDo6VmFs
dWVBcnJheTI1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1PiBWYWx1ZXMoVDEgdjEsCi0gICAgVDIgdjIsIFQzIHYzLCBUNCB2NCwg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLAotICAg
IFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsIFQx
OCB2MTgsIFQxOSB2MTksCi0gICAgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywg
VDI0IHYyNCwgVDI1IHYyNSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyNTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1Pih2MSwKLSAgICAgIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEs
IHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcsCi0gICAgICB2MTgsIHYxOSwgdjIwLCB2MjEs
IHYyMiwgdjIzLCB2MjQsIHYyNSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
LSAgICB0eXBlbmFtZSBUMjY+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTI2PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgIFQy
Nj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3
LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAot
ICAgIFQyNiB2MjYpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MjY8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwK
LSAgICAgIFQyNj4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEs
IHYxMiwgdjEzLCB2MTQsIHYxNSwKLSAgICAgIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEs
IHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3PgotaW50ZXJuYWw6OlZhbHVlQXJy
YXkyNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LAotICAgIFQyNz4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYx
NywKLSAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMg
djIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgIFQyNiB2MjYsIFQyNyB2MjcpIHsKLSAgcmV0dXJu
IGludGVybmFsOjpWYWx1ZUFycmF5Mjc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3Pih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwKLSAg
ICAgIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
LCB2MjYsIHYyNyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5
cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4
LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1l
IFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBl
bmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4PgotaW50ZXJuYWw6OlZhbHVlQXJy
YXkyODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgVDI4PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2
MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICBUMTAgdjEw
LCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBU
MTcgdjE3LAotICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIs
IFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYy
OCkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkyODxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2
LCBUMjcsIFQyOD4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEs
IHYxMiwgdjEzLAotICAgICAgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEs
IHYyMiwgdjIzLCB2MjQsIHYyNSwgdjI2LCB2MjcsCi0gICAgICB2MjgpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkyOTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsIFQyOCwKLSAgICBUMjk+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2
MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcs
Ci0gICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYy
MywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkg
djI5KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTI5PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBU
MjYsIFQyNywgVDI4LCBUMjk+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYx
MCwgdjExLCB2MTIsCi0gICAgICB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYy
MCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwKLSAgICAgIHYyNywgdjI4LCB2MjkpOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0
eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0g
ICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5
LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1l
IFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBl
bmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzA+Ci1pbnRl
cm5hbDo6VmFsdWVBcnJheTMwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwPiBW
YWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4
IHY4LAotICAgIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQg
djE0LCBUMTUgdjE1LCBUMTYgdjE2LAotICAgIFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQy
MCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsCi0gICAgVDI1IHYyNSwg
VDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCkgewotICByZXR1cm4g
aW50ZXJuYWw6OlZhbHVlQXJyYXkzMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5
LCBUMzA+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLAotICAg
ICAgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIs
IHYyMywgdjI0LCB2MjUsCi0gICAgICB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCk7Ci19Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFt
ZSBUMzE+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTMxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAg
IFQyOSwgVDMwLCBUMzE+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUs
IFQ2IHY2LCBUNyB2NywKLSAgICBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2
MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCi0gICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4
IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKLSAgICBU
MjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAg
djMwLCBUMzEgdjMxKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTMxPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQx
NCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
Ci0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxPih2MSwgdjIsIHYzLCB2NCwgdjUs
IHY2LCB2NywgdjgsIHY5LCB2MTAsCi0gICAgICB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2
LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwKLSAgICAgIHYyNSwgdjI2
LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1l
IFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBl
bmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMj4K
LWludGVybmFsOjpWYWx1ZUFycmF5MzI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBU
MzAsIFQzMSwgVDMyPiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsCi0gICAgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LAotICAgIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2
MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsCi0gICAgVDI0
IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYz
MCwgVDMxIHYzMSwKLSAgICBUMzIgdjMyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJh
eTMyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAg
VDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzI+KHYx
LCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksCi0gICAgICB2MTAsIHYxMSwgdjEyLCB2
MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKLSAg
ICAgIHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUg
VDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFt
ZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlw
ZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBl
bmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywg
dHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBU
MjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5h
bWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMz4KLWludGVybmFsOjpWYWx1ZUFycmF5
MzM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+IFZh
bHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LAotICAgIFQ3IHY3
LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2
MTQsIFQxNSB2MTUsCi0gICAgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIw
IHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywKLSAgICBUMjQgdjI0LCBUMjUgdjI1LCBU
MjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAotICAg
IFQzMiB2MzIsIFQzMyB2MzMpIHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5MzM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQx
MywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzPih2MSwg
djIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsCi0gICAgICB2OSwgdjEwLCB2MTEsIHYxMiwgdjEz
LCB2MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsCi0gICAg
ICB2MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQy
MywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFt
ZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlw
ZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0PgotaW50
ZXJuYWw6OlZhbHVlQXJyYXkzNDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1
IHY1LAotICAgIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBU
MTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LAotICAgIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcs
IFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsCi0gICAgVDIzIHYy
MywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwg
VDMwIHYzMCwKLSAgICBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0KSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTM0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4
LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0Pih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2
NywKLSAgICAgIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcs
IHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLAotICAgICAgdjIzLCB2MjQsIHYyNSwgdjI2LCB2Mjcs
IHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAg
ICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQs
IHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUg
VDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVu
YW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNT4KLWludGVy
bmFsOjpWYWx1ZUFycmF5MzU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQs
Ci0gICAgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLAotICAgIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2
MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsCi0gICAgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYy
OSwKLSAgICBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUg
djM1KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTM1PFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBU
MjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzU+KHYxLCB2Miwg
djMsIHY0LCB2NSwgdjYsCi0gICAgICB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYx
NCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLAotICAgICAgdjIyLCB2MjMsIHYy
NCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0g
ICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0
LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2PgotaW50ZXJuYWw6OlZhbHVlQXJyYXkz
NjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
Ci0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNj4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LAotICAgIFQ1IHY1
LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMywKLSAgICBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLAotICAgIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2
MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksCi0gICAgVDMw
IHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYz
NikgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkzNjxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2
LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+KHYxLCB2
MiwgdjMsIHY0LAotICAgICAgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMs
IHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksCi0gICAgICB2MjAsIHYyMSwgdjIyLCB2MjMs
IHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywKLSAgICAg
IHYzNCwgdjM1LCB2MzYpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1l
IFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBl
bmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAg
dHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0
eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQz
MywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFt
ZSBUMzc+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTM3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAg
IFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzc+IFZhbHVlcyhUMSB2
MSwgVDIgdjIsIFQzIHYzLAotICAgIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsCi0gICAgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwKLSAg
ICBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2LCBU
MjcgdjI3LCBUMjggdjI4LAotICAgIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIs
IFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsCi0gICAgVDM3IHYzNykgewotICBy
ZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXkzNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQy
OCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNz4odjEsIHYyLCB2
MywKLSAgICAgIHY0LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0
LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwKLSAgICAgIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0
LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLAotICAgICAgdjM0
LCB2MzUsIHYzNiwgdjM3KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAot
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQx
NCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFt
ZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlw
ZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAg
IHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwg
dHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBU
MzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5h
bWUgVDM3LCB0eXBlbmFtZSBUMzg+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTM4PFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBU
MzcsIFQzOD4gVmFsdWVzKFQxIHYxLCBUMiB2MiwKLSAgICBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwKLSAg
ICBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBU
MTkgdjE5LCBUMjAgdjIwLAotICAgIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQs
IFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsCi0gICAgVDI5IHYyOSwgVDMwIHYz
MCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwK
LSAgICBUMzcgdjM3LCBUMzggdjM4KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTM4
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEy
LCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzUsIFQzNiwgVDM3LCBUMzg+KHYxLCB2MiwKLSAgICAgIHYzLCB2NCwgdjUsIHY2LCB2
NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LAot
ICAgICAgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2
MjksIHYzMCwgdjMxLCB2MzIsCi0gICAgICB2MzMsIHYzNCwgdjM1LCB2MzYsIHYzNywgdjM4KTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwg
dHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAot
ICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQx
OSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFt
ZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlw
ZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAg
IHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwg
dHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBU
MzgsIHR5cGVuYW1lIFQzOT4KLWludGVybmFsOjpWYWx1ZUFycmF5Mzk8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBUMzk+IFZhbHVlcyhUMSB2MSwgVDIgdjIsCi0gICAgVDMgdjMsIFQ0IHY0LCBUNSB2NSwg
VDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsCi0g
ICAgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwg
VDE5IHYxOSwgVDIwIHYyMCwKLSAgICBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0
LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LAotICAgIFQyOSB2MjksIFQzMCB2
MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYs
Ci0gICAgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSkgewotICByZXR1cm4gaW50ZXJuYWw6OlZh
bHVlQXJyYXkzOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwK
LSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwg
VDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwg
VDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+KHYxLAotICAgICAgdjIsIHYz
LCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2
MTYsIHYxNywKLSAgICAgIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1LCB2
MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLAotICAgICAgdjMyLCB2MzMsIHYzNCwgdjM1LCB2
MzYsIHYzNywgdjM4LCB2MzkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
Ci0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0
eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0g
ICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5
LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1l
IFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBl
bmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDA+Ci1pbnRl
cm5hbDo6VmFsdWVBcnJheTQwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDA+IFZhbHVlcyhU
MSB2MSwKLSAgICBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2
OCwgVDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsCi0gICAgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYx
NCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwKLSAgICBUMjAg
djIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2
LCBUMjcgdjI3LAotICAgIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2
MzIsIFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsCi0gICAgVDM2IHYzNiwgVDM3IHYzNywgVDM4
IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXk0
MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQx
MiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAgICBUNDA+KHYxLCB2MiwgdjMsIHY0
LCB2NSwgdjYsIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LCB2MTUsCi0gICAg
ICB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwg
djI3LCB2MjgsIHYyOSwKLSAgICAgIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwg
djM3LCB2MzgsIHYzOSwgdjQwKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQy
OSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFt
ZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlw
ZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAg
IHR5cGVuYW1lIFQ0MT4KLWludGVybmFsOjpWYWx1ZUFycmF5NDE8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBU
MjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MCwKLSAgICBUNDE+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwg
VDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2MTEs
IFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0g
ICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywg
VDI0IHYyNCwgVDI1IHYyNSwKLSAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5
LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgIFQzNCB2MzQsIFQzNSB2
MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2NDEp
IHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDE8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwg
VDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LAotICAgICAgVDQwLCBUNDE+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYsIHY3LCB2OCwg
djksIHYxMCwgdjExLCB2MTIsIHYxMywgdjE0LAotICAgICAgdjE1LCB2MTYsIHYxNywgdjE4LCB2
MTksIHYyMCwgdjIxLCB2MjIsIHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsCi0gICAgICB2
MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwgdjM3LCB2MzgsIHYzOSwgdjQw
LCB2NDEpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5
cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQx
LCB0eXBlbmFtZSBUNDI+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTQyPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LCBUNDAsIFQ0MSwKLSAgICBUNDI+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBU
NCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQx
MSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2
MTcsCi0gICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBU
MjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgIFQzNCB2MzQs
IFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0
MSB2NDEsCi0gICAgVDQyIHY0MikgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXk0MjxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwg
VDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQz
NCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAgICBUNDAsIFQ0MSwgVDQyPih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsCi0gICAgICB2
MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwgdjI1
LCB2MjYsIHYyNywKLSAgICAgIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1
LCB2MzYsIHYzNywgdjM4LCB2MzksIHY0MCwgdjQxLAotICAgICAgdjQyKTsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVu
YW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0
eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQz
MSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1
LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1l
IFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBl
bmFtZSBUNDM+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTQzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAot
ICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5
LCBUNDAsIFQ0MSwgVDQyLAotICAgIFQ0Mz4gVmFsdWVzKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0
IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYx
NywKLSAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMg
djIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQy
OSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgVDM0IHYzNCwg
VDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQx
IHY0MSwKLSAgICBUNDIgdjQyLCBUNDMgdjQzKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVB
cnJheTQzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAg
ICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIs
IFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwKLSAgICAgIFQ0MCwgVDQxLCBUNDIs
IFQ0Mz4odjEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsIHYxMiwK
LSAgICAgIHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwg
djIzLCB2MjQsIHYyNSwgdjI2LAotICAgICAgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwg
djMzLCB2MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5LCB2NDAsCi0gICAgICB2NDEsIHY0Miwg
djQzKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUg
VDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVu
YW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0
eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQy
NiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMw
LAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1l
IFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBl
bmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwg
dHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0ND4KLWludGVybmFsOjpWYWx1
ZUFycmF5NDQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywKLSAg
ICBUNDQ+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAotICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2
MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgVDE4IHYxOCwgVDE5
IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYy
NSwKLSAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEg
djMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQz
NyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2NDEsCi0gICAgVDQyIHY0Miwg
VDQzIHY0MywgVDQ0IHY0NCkgewotICByZXR1cm4gaW50ZXJuYWw6OlZhbHVlQXJyYXk0NDxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAgICBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0ND4o
djEsIHYyLCB2MywgdjQsIHY1LCB2NiwgdjcsIHY4LCB2OSwgdjEwLCB2MTEsCi0gICAgICB2MTIs
IHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsIHYyMiwgdjIzLCB2
MjQsIHYyNSwKLSAgICAgIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2
MzQsIHYzNSwgdjM2LCB2MzcsIHYzOCwgdjM5LAotICAgICAgdjQwLCB2NDEsIHY0MiwgdjQzLCB2
NDQpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5
cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2
LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAs
Ci0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUg
VDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVu
YW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0
eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDU+Ci1p
bnRlcm5hbDo6VmFsdWVBcnJheTQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMw
LCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwg
VDQyLCBUNDMsCi0gICAgVDQ0LCBUNDU+IFZhbHVlcyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsCi0gICAgVDkgdjksIFQxMCB2MTAsIFQxMSB2
MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsCi0gICAgVDE3
IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYy
MywgVDI0IHYyNCwKLSAgICBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkg
djI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLAotICAgIFQzMyB2MzMsIFQzNCB2MzQsIFQz
NSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsCi0gICAg
VDQxIHY0MSwgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSkgewotICByZXR1cm4g
aW50ZXJuYWw6OlZhbHVlQXJyYXk0NTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwKLSAgICAgIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAotICAgICAgVDI2LCBUMjcsIFQyOCwgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksCi0gICAg
ICBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1Pih2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2
NywgdjgsIHY5LCB2MTAsCi0gICAgICB2MTEsIHYxMiwgdjEzLCB2MTQsIHYxNSwgdjE2LCB2MTcs
IHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsIHYyNCwKLSAgICAgIHYyNSwgdjI2LCB2Mjcs
IHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1LCB2MzYsIHYzNywgdjM4LAot
ICAgICAgdjM5LCB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCwgdjQ1KTsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1l
IFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBl
bmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwg
dHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAot
ICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQz
OSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFt
ZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0Nj4KLWlu
dGVybmFsOjpWYWx1ZUFycmF5NDY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLAotICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBU
NDIsIFQ0MywKLSAgICBUNDQsIFQ0NSwgVDQ2PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2Mywg
VDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsCi0gICAgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBU
MTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LAotICAgIFQxNiB2MTYs
IFQxNyB2MTcsIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQy
MyB2MjMsCi0gICAgVDI0IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwg
VDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwKLSAgICBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0
LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LAotICAgIFQ0MCB2
NDAsIFQ0MSB2NDEsIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYp
IHsKLSAgcmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDY8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwg
VDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LAotICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2Pih2MSwgdjIs
IHYzLCB2NCwgdjUsIHY2LCB2NywgdjgsIHY5LAotICAgICAgdjEwLCB2MTEsIHYxMiwgdjEzLCB2
MTQsIHYxNSwgdjE2LCB2MTcsIHYxOCwgdjE5LCB2MjAsIHYyMSwgdjIyLCB2MjMsCi0gICAgICB2
MjQsIHYyNSwgdjI2LCB2MjcsIHYyOCwgdjI5LCB2MzAsIHYzMSwgdjMyLCB2MzMsIHYzNCwgdjM1
LCB2MzYsIHYzNywKLSAgICAgIHYzOCwgdjM5LCB2NDAsIHY0MSwgdjQyLCB2NDMsIHY0NCwgdjQ1
LCB2NDYpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5h
bWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5
cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQx
LCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUs
Ci0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDc+Ci1pbnRlcm5hbDo6VmFsdWVBcnJheTQ3
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywK
LSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgVDQ0LCBU
NDUsIFQ0NiwgVDQ3PiBWYWx1ZXMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsCi0gICAgVDggdjgsIFQ5IHY5LCBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LAotICAgIFQxNiB2MTYsIFQxNyB2MTcsIFQxOCB2
MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsCi0gICAgVDI0
IHYyNCwgVDI1IHYyNSwgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYz
MCwgVDMxIHYzMSwKLSAgICBUMzIgdjMyLCBUMzMgdjMzLCBUMzQgdjM0LCBUMzUgdjM1LCBUMzYg
djM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LAotICAgIFQ0MCB2NDAsIFQ0MSB2NDEsIFQ0
MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcpIHsKLSAg
cmV0dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NDc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBU
MjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5
LAotICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDc+KHYxLCB2Miwg
djMsIHY0LCB2NSwgdjYsIHY3LCB2OCwKLSAgICAgIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYx
NCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsIHYyMywKLSAgICAgIHYy
NCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUs
IHYzNiwgdjM3LAotICAgICAgdjM4LCB2MzksIHY0MCwgdjQxLCB2NDIsIHY0MywgdjQ0LCB2NDUs
IHY0NiwgdjQ3KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVu
YW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5h
bWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5
cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3
LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1l
IFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUg
VDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDg+Ci1pbnRl
cm5hbDo6VmFsdWVBcnJheTQ4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIFQyOSwgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQy
LCBUNDMsCi0gICAgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+IFZhbHVlcyhUMSB2MSwgVDIgdjIs
IFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LAotICAgIFQ3IHY3LCBUOCB2OCwgVDkgdjksIFQx
MCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsCi0gICAg
VDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIy
IHYyMiwgVDIzIHYyMywKLSAgICBUMjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2LCBUMjcgdjI3LCBU
MjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLAotICAgIFQzMiB2MzIsIFQzMyB2MzMs
IFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksCi0g
ICAgVDQwIHY0MCwgVDQxIHY0MSwgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSwg
VDQ2IHY0NiwgVDQ3IHY0NywKLSAgICBUNDggdjQ4KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFs
dWVBcnJheTQ4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAot
ICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwKLSAgICAgIFQ0MCwgVDQxLCBU
NDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+KHYxLCB2MiwgdjMsIHY0LCB2NSwgdjYs
IHY3LAotICAgICAgdjgsIHY5LCB2MTAsIHYxMSwgdjEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYx
NywgdjE4LCB2MTksIHYyMCwgdjIxLCB2MjIsCi0gICAgICB2MjMsIHYyNCwgdjI1LCB2MjYsIHYy
NywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYzMywgdjM0LCB2MzUsIHYzNiwKLSAgICAgIHYz
NywgdjM4LCB2MzksIHY0MCwgdjQxLCB2NDIsIHY0MywgdjQ0LCB2NDUsIHY0NiwgdjQ3LCB2NDgp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0g
ICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0
LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1l
IFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBl
bmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAg
dHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Pgot
aW50ZXJuYWw6OlZhbHVlQXJyYXk0OTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEs
IFQ0MiwgVDQzLAotICAgIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBUNDk+IFZhbHVlcyhUMSB2
MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsCi0gICAgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsCi0gICAg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIx
IHYyMSwgVDIyIHYyMiwKLSAgICBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LCBUMjYgdjI2LCBU
MjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLAotICAgIFQzMSB2MzEsIFQzMiB2MzIs
IFQzMyB2MzMsIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsCi0g
ICAgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwg
VDQ1IHY0NSwgVDQ2IHY0NiwKLSAgICBUNDcgdjQ3LCBUNDggdjQ4LCBUNDkgdjQ5KSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheTQ5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsCi0gICAgICBUMjYsIFQyNywgVDI4
LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwK
LSAgICAgIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4o
djEsIHYyLCB2MywgdjQsIHY1LCB2NiwKLSAgICAgIHY3LCB2OCwgdjksIHYxMCwgdjExLCB2MTIs
IHYxMywgdjE0LCB2MTUsIHYxNiwgdjE3LCB2MTgsIHYxOSwgdjIwLCB2MjEsCi0gICAgICB2MjIs
IHYyMywgdjI0LCB2MjUsIHYyNiwgdjI3LCB2MjgsIHYyOSwgdjMwLCB2MzEsIHYzMiwgdjMzLCB2
MzQsIHYzNSwKLSAgICAgIHYzNiwgdjM3LCB2MzgsIHYzOSwgdjQwLCB2NDEsIHY0MiwgdjQzLCB2
NDQsIHY0NSwgdjQ2LCB2NDcsIHY0OCwgdjQ5KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVu
YW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5h
bWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5
cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMy
LCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1l
IFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUg
VDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVu
YW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0
eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUgVDUwPgotaW50ZXJuYWw6OlZhbHVl
QXJyYXk1MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQz
MywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAg
IFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4LCBUNDksIFQ1MD4gVmFsdWVzKFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LAotICAgIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwgVDEw
IHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywKLSAgICBUMTQgdjE0LCBUMTUgdjE1LCBU
MTYgdjE2LCBUMTcgdjE3LCBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLAotICAg
IFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsIFQyNiB2MjYsIFQyNyB2MjcsIFQy
OCB2MjgsIFQyOSB2MjksCi0gICAgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywg
VDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywKLSAgICBUMzggdjM4LCBUMzkgdjM5
LCBUNDAgdjQwLCBUNDEgdjQxLCBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LAot
ICAgIFQ0NiB2NDYsIFQ0NyB2NDcsIFQ0OCB2NDgsIFQ0OSB2NDksIFQ1MCB2NTApIHsKLSAgcmV0
dXJuIGludGVybmFsOjpWYWx1ZUFycmF5NTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsCi0gICAgICBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwKLSAgICAgIFQyNiwgVDI3LCBUMjgs
IFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LAot
ICAgICAgVDQwLCBUNDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBU
NTA+KHYxLCB2MiwgdjMsIHY0LAotICAgICAgdjUsIHY2LCB2NywgdjgsIHY5LCB2MTAsIHYxMSwg
djEyLCB2MTMsIHYxNCwgdjE1LCB2MTYsIHYxNywgdjE4LCB2MTksCi0gICAgICB2MjAsIHYyMSwg
djIyLCB2MjMsIHYyNCwgdjI1LCB2MjYsIHYyNywgdjI4LCB2MjksIHYzMCwgdjMxLCB2MzIsIHYz
MywKLSAgICAgIHYzNCwgdjM1LCB2MzYsIHYzNywgdjM4LCB2MzksIHY0MCwgdjQxLCB2NDIsIHY0
MywgdjQ0LCB2NDUsIHY0NiwgdjQ3LAotICAgICAgdjQ4LCB2NDksIHY1MCk7Ci19Ci0KLS8vIEJv
b2woKSBhbGxvd3MgZ2VuZXJhdGluZyB0ZXN0cyB3aXRoIHBhcmFtZXRlcnMgaW4gYSBzZXQgb2Yg
KGZhbHNlLCB0cnVlKS4KLS8vCi0vLyBTeW5vcHNpczoKLS8vIEJvb2woKQotLy8gICAtIHJldHVy
bnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIHtmYWxzZSwg
dHJ1ZX0uCi0vLwotLy8gSXQgaXMgdXNlZnVsIHdoZW4gdGVzdGluZyBjb2RlIHRoYXQgZGVwZW5k
cyBvbiBCb29sZWFuIGZsYWdzLiBDb21iaW5hdGlvbnMKLS8vIG9mIG11bHRpcGxlIGZsYWdzIGNh
biBiZSB0ZXN0ZWQgd2hlbiBzZXZlcmFsIEJvb2woKSdzIGFyZSBjb21iaW5lZCB1c2luZwotLy8g
Q29tYmluZSgpIGZ1bmN0aW9uLgotLy8KLS8vIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBhbGwg
dGVzdHMgaW4gdGhlIHRlc3QgY2FzZSBGbGFnRGVwZW5kZW50VGVzdAotLy8gd2lsbCBiZSBpbnN0
YW50aWF0ZWQgdHdpY2Ugd2l0aCBwYXJhbWV0ZXJzIGZhbHNlIGFuZCB0cnVlLgotLy8KLS8vIGNs
YXNzIEZsYWdEZXBlbmRlbnRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08Ym9v
bD4gewotLy8gICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0vLyAgICAgZXh0ZXJuYWxfZmxhZyA9
IEdldFBhcmFtKCk7Ci0vLyAgIH0KLS8vIH0KLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEJv
b2xTZXF1ZW5jZSwgRmxhZ0RlcGVuZGVudFRlc3QsIEJvb2woKSk7Ci0vLwotaW5saW5lIGludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxib29sPiBCb29sKCkgewotICByZXR1cm4gVmFsdWVzKGZhbHNl
LCB0cnVlKTsKLX0KLQotIyBpZiBHVEVTVF9IQVNfQ09NQklORQotLy8gQ29tYmluZSgpIGFsbG93
cyB0aGUgdXNlciB0byBjb21iaW5lIHR3byBvciBtb3JlIHNlcXVlbmNlcyB0byBwcm9kdWNlCi0v
LyB2YWx1ZXMgb2YgYSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aG9zZSBzZXF1ZW5jZXMnIGVsZW1l
bnRzLgotLy8KLS8vIFN5bm9wc2lzOgotLy8gQ29tYmluZShnZW4xLCBnZW4yLCAuLi4sIGdlbk4p
Ci0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxl
bWVudHMgY29taW5nIGZyb20KLS8vICAgICB0aGUgQ2FydGVzaWFuIHByb2R1Y3Qgb2YgZWxlbWVu
dHMgZnJvbSB0aGUgc2VxdWVuY2VzIGdlbmVyYXRlZCBieQotLy8gICAgIGdlbjEsIGdlbjIsIC4u
LiwgZ2VuTi4gVGhlIHNlcXVlbmNlIGVsZW1lbnRzIHdpbGwgaGF2ZSBhIHR5cGUgb2YKLS8vICAg
ICB0dXBsZTxUMSwgVDIsIC4uLiwgVE4+IHdoZXJlIFQxLCBUMiwgLi4uLCBUTiBhcmUgdGhlIHR5
cGVzCi0vLyAgICAgb2YgZWxlbWVudHMgZnJvbSBzZXF1ZW5jZXMgcHJvZHVjZXMgYnkgZ2VuMSwg
Z2VuMiwgLi4uLCBnZW5OLgotLy8KLS8vIENvbWJpbmUgY2FuIGhhdmUgdXAgdG8gMTAgYXJndW1l
bnRzLiBUaGlzIG51bWJlciBpcyBjdXJyZW50bHkgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0dXBsZSBpbXBsZW1lbnRhdGlvbiB1c2VkIGJ5IEdv
b2dsZQotLy8gVGVzdC4KLS8vCi0vLyBFeGFtcGxlOgotLy8KLS8vIFRoaXMgd2lsbCBpbnN0YW50
aWF0ZSB0ZXN0cyBpbiB0ZXN0IGNhc2UgQW5pbWFsVGVzdCBlYWNoIG9uZSB3aXRoCi0vLyB0aGUg
cGFyYW1ldGVyIHZhbHVlcyB0dXBsZSgiY2F0IiwgQkxBQ0spLCB0dXBsZSgiY2F0IiwgV0hJVEUp
LAotLy8gdHVwbGUoImRvZyIsIEJMQUNLKSwgYW5kIHR1cGxlKCJkb2ciLCBXSElURSk6Ci0vLwot
Ly8gZW51bSBDb2xvciB7IEJMQUNLLCBHUkFZLCBXSElURSB9OwotLy8gY2xhc3MgQW5pbWFsVGVz
dAotLy8gICAgIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGU8Y29uc3QgY2hh
ciosIENvbG9yPiA+IHsuLi59OwotLy8KLS8vIFRFU1RfUChBbmltYWxUZXN0LCBBbmltYWxMb29r
c05pY2UpIHsuLi59Ci0vLwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5pbWFsVmFyaWF0
aW9ucywgQW5pbWFsVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoVmFs
dWVzKCJjYXQiLCAiZG9nIiksCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlcyhCTEFDSywgV0hJVEUpKSk7Ci0vLwotLy8gVGhpcyB3aWxsIGluc3RhbnRpYXRlIHRlc3Rz
IGluIEZsYWdEZXBlbmRlbnRUZXN0IHdpdGggYWxsIHZhcmlhdGlvbnMgb2YgdHdvCi0vLyBCb29s
ZWFuIGZsYWdzOgotLy8KLS8vIGNsYXNzIEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxib29sLCBib29sPiA+IHsKLS8vICAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewotLy8gICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFu
ZCBleHRlcm5hbF9mbGFnXzIgdmFsdWVzIGZyb20gdGhlIHR1cGxlLgotLy8gICAgIHRpZShleHRl
cm5hbF9mbGFnXzEsIGV4dGVybmFsX2ZsYWdfMikgPSBHZXRQYXJhbSgpOwotLy8gICB9Ci0vLyB9
OwotLy8KLS8vIFRFU1RfUChGbGFnRGVwZW5kZW50VGVzdCwgVGVzdEZlYXR1cmUxKSB7Ci0vLyAg
IC8vIFRlc3QgeW91ciBjb2RlIHVzaW5nIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxh
Z18yIGhlcmUuCi0vLyB9Ci0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChUd29Cb29sU2VxdWVu
Y2UsIEZsYWdEZXBlbmRlbnRUZXN0LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmlu
ZShCb29sKCksIEJvb2woKSkpOwotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IxLCB0
eXBlbmFtZSBHZW5lcmF0b3IyPgotaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIyPEdl
bmVyYXRvcjEsIEdlbmVyYXRvcjI+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9yMSYgZzEs
IGNvbnN0IEdlbmVyYXRvcjImIGcyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJv
ZHVjdEhvbGRlcjI8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMj4oCi0gICAgICBnMSwgZzIpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwgdHlw
ZW5hbWUgR2VuZXJhdG9yMz4KLWludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMzxHZW5l
cmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzPiBDb21iaW5lKAotICAgIGNvbnN0IEdlbmVy
YXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9yMyYgZzMpIHsK
LSAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMzxHZW5lcmF0b3IxLCBH
ZW5lcmF0b3IyLCBHZW5lcmF0b3IzPigKLSAgICAgIGcxLCBnMiwgZzMpOwotfQotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwgdHlwZW5hbWUgR2Vu
ZXJhdG9yMywKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3I0PgotaW50ZXJuYWw6OkNhcnRlc2lhblBy
b2R1Y3RIb2xkZXI0PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgR2Vu
ZXJhdG9yND4gQ29tYmluZSgKLSAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJh
dG9yMiYgZzIsIGNvbnN0IEdlbmVyYXRvcjMmIGczLAotICAgICAgICBjb25zdCBHZW5lcmF0b3I0
JiBnNCkgewotICByZXR1cm4gaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI0PEdlbmVy
YXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgICBHZW5lcmF0b3I0PigKLSAgICAg
IGcxLCBnMiwgZzMsIGc0KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5
cGVuYW1lIEdlbmVyYXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCi0gICAgdHlwZW5hbWUgR2Vu
ZXJhdG9yNCwgdHlwZW5hbWUgR2VuZXJhdG9yNT4KLWludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyNTxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgIEdlbmVyYXRv
cjQsIEdlbmVyYXRvcjU+IENvbWJpbmUoCi0gICAgY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0
IEdlbmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBnMywKLSAgICAgICAgY29uc3QgR2Vu
ZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjU8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKLSAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjU+KAotICAgICAgZzEsIGcyLCBnMywgZzQs
IGc1KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcjEsIHR5cGVuYW1lIEdlbmVy
YXRvcjIsIHR5cGVuYW1lIEdlbmVyYXRvcjMsCi0gICAgdHlwZW5hbWUgR2VuZXJhdG9yNCwgdHlw
ZW5hbWUgR2VuZXJhdG9yNSwgdHlwZW5hbWUgR2VuZXJhdG9yNj4KLWludGVybmFsOjpDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyNjxHZW5lcmF0b3IxLCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAg
IEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjY+IENvbWJpbmUoCi0gICAgY29uc3Qg
R2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLCBjb25zdCBHZW5lcmF0b3IzJiBn
MywKLSAgICAgICAgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LCBj
b25zdCBHZW5lcmF0b3I2JiBnNikgewotICByZXR1cm4gaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1
Y3RIb2xkZXI2PEdlbmVyYXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgICBHZW5l
cmF0b3I0LCBHZW5lcmF0b3I1LCBHZW5lcmF0b3I2PigKLSAgICAgIGcxLCBnMiwgZzMsIGc0LCBn
NSwgZzYpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2Vu
ZXJhdG9yMiwgdHlwZW5hbWUgR2VuZXJhdG9yMywKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0
eXBlbmFtZSBHZW5lcmF0b3I1LCB0eXBlbmFtZSBHZW5lcmF0b3I2LAotICAgIHR5cGVuYW1lIEdl
bmVyYXRvcjc+Ci1pbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjc8R2VuZXJhdG9yMSwg
R2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKLSAgICBHZW5lcmF0b3I0LCBHZW5lcmF0b3I1LCBHZW5l
cmF0b3I2LCBHZW5lcmF0b3I3PiBDb21iaW5lKAotICAgIGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBj
b25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9yMyYgZzMsCi0gICAgICAgIGNvbnN0
IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwgY29uc3QgR2VuZXJhdG9yNiYg
ZzYsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjcmIGc3KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjc8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKLSAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjc+
KAotICAgICAgZzEsIGcyLCBnMywgZzQsIGc1LCBnNiwgZzcpOwotfQotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yMSwgdHlwZW5hbWUgR2VuZXJhdG9yMiwgdHlwZW5hbWUgR2VuZXJhdG9y
MywKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3I0LCB0eXBlbmFtZSBHZW5lcmF0b3I1LCB0eXBlbmFt
ZSBHZW5lcmF0b3I2LAotICAgIHR5cGVuYW1lIEdlbmVyYXRvcjcsIHR5cGVuYW1lIEdlbmVyYXRv
cjg+Ci1pbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjg8R2VuZXJhdG9yMSwgR2VuZXJh
dG9yMiwgR2VuZXJhdG9yMywKLSAgICBHZW5lcmF0b3I0LCBHZW5lcmF0b3I1LCBHZW5lcmF0b3I2
LCBHZW5lcmF0b3I3LCBHZW5lcmF0b3I4PiBDb21iaW5lKAotICAgIGNvbnN0IEdlbmVyYXRvcjEm
IGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9yMyYgZzMsCi0gICAgICAg
IGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwgY29uc3QgR2VuZXJh
dG9yNiYgZzYsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjcmIGc3LCBjb25zdCBHZW5lcmF0b3I4
JiBnOCkgewotICByZXR1cm4gaW50ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXI4PEdlbmVy
YXRvcjEsIEdlbmVyYXRvcjIsIEdlbmVyYXRvcjMsCi0gICAgICBHZW5lcmF0b3I0LCBHZW5lcmF0
b3I1LCBHZW5lcmF0b3I2LCBHZW5lcmF0b3I3LCBHZW5lcmF0b3I4PigKLSAgICAgIGcxLCBnMiwg
ZzMsIGc0LCBnNSwgZzYsIGc3LCBnOCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAotICAgIHR5cGVu
YW1lIEdlbmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVyYXRvcjUsIHR5cGVuYW1lIEdlbmVyYXRvcjYs
Ci0gICAgdHlwZW5hbWUgR2VuZXJhdG9yNywgdHlwZW5hbWUgR2VuZXJhdG9yOCwgdHlwZW5hbWUg
R2VuZXJhdG9yOT4KLWludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOTxHZW5lcmF0b3Ix
LCBHZW5lcmF0b3IyLCBHZW5lcmF0b3IzLAotICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdl
bmVyYXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjgsCi0gICAgR2VuZXJhdG9yOT4gQ29tYmlu
ZSgKLSAgICBjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsIGNvbnN0
IEdlbmVyYXRvcjMmIGczLAotICAgICAgICBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3QgR2Vu
ZXJhdG9yNSYgZzUsIGNvbnN0IEdlbmVyYXRvcjYmIGc2LAotICAgICAgICBjb25zdCBHZW5lcmF0
b3I3JiBnNywgY29uc3QgR2VuZXJhdG9yOCYgZzgsIGNvbnN0IEdlbmVyYXRvcjkmIGc5KSB7Ci0g
IHJldHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlcjk8R2VuZXJhdG9yMSwgR2Vu
ZXJhdG9yMiwgR2VuZXJhdG9yMywKLSAgICAgIEdlbmVyYXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVy
YXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjgsIEdlbmVyYXRvcjk+KAotICAgICAgZzEsIGcy
LCBnMywgZzQsIGc1LCBnNiwgZzcsIGc4LCBnOSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IxLCB0eXBlbmFtZSBHZW5lcmF0b3IyLCB0eXBlbmFtZSBHZW5lcmF0b3IzLAotICAg
IHR5cGVuYW1lIEdlbmVyYXRvcjQsIHR5cGVuYW1lIEdlbmVyYXRvcjUsIHR5cGVuYW1lIEdlbmVy
YXRvcjYsCi0gICAgdHlwZW5hbWUgR2VuZXJhdG9yNywgdHlwZW5hbWUgR2VuZXJhdG9yOCwgdHlw
ZW5hbWUgR2VuZXJhdG9yOSwKLSAgICB0eXBlbmFtZSBHZW5lcmF0b3IxMD4KLWludGVybmFsOjpD
YXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9y
MywKLSAgICBHZW5lcmF0b3I0LCBHZW5lcmF0b3I1LCBHZW5lcmF0b3I2LCBHZW5lcmF0b3I3LCBH
ZW5lcmF0b3I4LCBHZW5lcmF0b3I5LAotICAgIEdlbmVyYXRvcjEwPiBDb21iaW5lKAotICAgIGNv
bnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwgY29uc3QgR2VuZXJhdG9y
MyYgZzMsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBn
NSwgY29uc3QgR2VuZXJhdG9yNiYgZzYsCi0gICAgICAgIGNvbnN0IEdlbmVyYXRvcjcmIGc3LCBj
b25zdCBHZW5lcmF0b3I4JiBnOCwgY29uc3QgR2VuZXJhdG9yOSYgZzksCi0gICAgICAgIGNvbnN0
IEdlbmVyYXRvcjEwJiBnMTApIHsKLSAgcmV0dXJuIGludGVybmFsOjpDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyMTA8R2VuZXJhdG9yMSwgR2VuZXJhdG9yMiwgR2VuZXJhdG9yMywKLSAgICAgIEdlbmVy
YXRvcjQsIEdlbmVyYXRvcjUsIEdlbmVyYXRvcjYsIEdlbmVyYXRvcjcsIEdlbmVyYXRvcjgsIEdl
bmVyYXRvcjksCi0gICAgICBHZW5lcmF0b3IxMD4oCi0gICAgICBnMSwgZzIsIGczLCBnNCwgZzUs
IGc2LCBnNywgZzgsIGc5LCBnMTApOwotfQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUK
LQotCi0KLSMgZGVmaW5lIFRFU1RfUCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBcCi0gIGNs
YXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSkgXAot
ICAgICAgOiBwdWJsaWMgdGVzdF9jYXNlX25hbWUgeyBcCi0gICBwdWJsaWM6IFwKLSAgICBHVEVT
VF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKCkge30gXAotICAg
IHZpcnR1YWwgdm9pZCBUZXN0Qm9keSgpOyBcCi0gICBwcml2YXRlOiBcCi0gICAgc3RhdGljIGlu
dCBBZGRUb1JlZ2lzdHJ5KCkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnkoKS4gXAotICAgICAgICAgIEdldFRl
c3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2VfbmFtZT4oXAotICAgICAgICAgICAgICAjdGVz
dF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxv
Y2F0aW9uKFwKLSAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0
UGF0dGVybihcCi0gICAgICAgICAgICAgICAgICAgICAgI3Rlc3RfY2FzZV9uYW1lLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgI3Rlc3RfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgICAgIG5l
dyA6OnRlc3Rpbmc6OmludGVybmFsOjpUZXN0TWV0YUZhY3Rvcnk8IFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyhcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKT4oKSk7IFwKLSAgICAgIHJldHVy
biAwOyBcCi0gICAgfSBcCi0gICAgc3RhdGljIGludCBndGVzdF9yZWdpc3RlcmluZ19kdW1teV8g
R1RFU1RfQVRUUklCVVRFX1VOVVNFRF87IFwKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKFwKLSAgICAgICAgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwg
dGVzdF9uYW1lKSk7IFwKLSAgfTsgXAotICBpbnQgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0
X2Nhc2VfbmFtZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWUpOjpn
dGVzdF9yZWdpc3RlcmluZ19kdW1teV8gPSBcCi0gICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpBZGRUb1JlZ2lzdHJ5KCk7IFwKLSAgdm9pZCBH
VEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpOjpUZXN0Qm9k
eSgpCi0KLS8vIFRoZSBvcHRpb25hbCBsYXN0IGFyZ3VtZW50IHRvIElOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QIGFsbG93cyB0aGUgdXNlcgotLy8gdG8gc3BlY2lmeSBhIGZ1bmN0aW9uIG9yIGZ1bmN0
b3IgdGhhdCBnZW5lcmF0ZXMgY3VzdG9tIHRlc3QgbmFtZSBzdWZmaXhlcwotLy8gYmFzZWQgb24g
dGhlIHRlc3QgcGFyYW1ldGVycy4gVGhlIGZ1bmN0aW9uIHNob3VsZCBhY2NlcHQgb25lIGFyZ3Vt
ZW50IG9mCi0vLyB0eXBlIHRlc3Rpbmc6OlRlc3RQYXJhbUluZm88Y2xhc3MgUGFyYW1UeXBlPiwg
YW5kIHJldHVybiBzdGQ6OnN0cmluZy4KLS8vCi0vLyB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFy
YW1OYW1lIGlzIGEgYnVpbHRpbiB0ZXN0IHN1ZmZpeCBnZW5lcmF0b3IgdGhhdAotLy8gcmV0dXJu
cyB0aGUgdmFsdWUgb2YgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhHZXRQYXJhbSgpKS4gSXQgZG9l
cyBub3Qgd29yawotLy8gZm9yIHN0ZDo6c3RyaW5nIG9yIEMgc3RyaW5ncy4KLS8vCi0vLyBOb3Rl
OiB0ZXN0IG5hbWVzIG11c3QgYmUgbm9uLWVtcHR5LCB1bmlxdWUsIGFuZCBtYXkgb25seSBjb250
YWluIEFTQ0lJCi0vLyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciB1bmRlcnNjb3JlLgotCi0j
IGRlZmluZSBJTlNUQU5USUFURV9URVNUX0NBU0VfUChwcmVmaXgsIHRlc3RfY2FzZV9uYW1lLCBn
ZW5lcmF0b3IsIC4uLikgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpQYXJhbUdlbmVyYXRvcjx0
ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCi0gICAgICBndGVzdF8jI3ByZWZpeCMjdGVzdF9j
YXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXygpIHsgcmV0dXJuIGdlbmVyYXRvcjsgfSBcCi0gIDo6
c3RkOjpzdHJpbmcgZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRl
TmFtZV8oIFwKLSAgICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzx0ZXN0X2Nhc2Vf
bmFtZTo6UGFyYW1UeXBlPiYgaW5mbykgeyBcCi0gICAgcmV0dXJuIDo6dGVzdGluZzo6aW50ZXJu
YWw6OkdldFBhcmFtTmFtZUdlbjx0ZXN0X2Nhc2VfbmFtZTo6UGFyYW1UeXBlPiBcCi0gICAgICAg
IChfX1ZBX0FSR1NfXykoaW5mbyk7IFwKLSAgfSBcCi0gIGludCBndGVzdF8jI3ByZWZpeCMjdGVz
dF9jYXNlX25hbWUjI19kdW1teV8gR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCi0gICAgICA6
OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5wYXJhbWV0ZXJpemVkX3Rlc3RfcmVn
aXN0cnkoKS4gXAotICAgICAgICAgIEdldFRlc3RDYXNlUGF0dGVybkhvbGRlcjx0ZXN0X2Nhc2Vf
bmFtZT4oXAotICAgICAgICAgICAgICAjdGVzdF9jYXNlX25hbWUsIFwKLSAgICAgICAgICAgICAg
Ojp0ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKFwKLSAgICAgICAgICAgICAgICAgIF9f
RklMRV9fLCBfX0xJTkVfXykpLT5BZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oXAotICAgICAgICAg
ICAgICAgICAgICAgICNwcmVmaXgsIFwKLSAgICAgICAgICAgICAgICAgICAgICAmZ3Rlc3RfIyNw
cmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRvcl8sIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAmZ3Rlc3RfIyNwcmVmaXgjI3Rlc3RfY2FzZV9uYW1lIyNfRXZhbEdlbmVyYXRlTmFt
ZV8sIFwKLSAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pCi0KLX0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQot
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BBUkFNX1RFU1RfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdC5oLnB1bXAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDc4ZDZkMmExOWQuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC5wdW1wCisrKyAv
ZGV2L251bGwKQEAgLTEsNTEwICswLDAgQEAKLSQkIC0qLSBtb2RlOiBjKys7IC0qLQotJHZhciBu
ID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIFZhbHVlcyBhcmd1bWVudHMgd2Ugd2FudCB0byBz
dXBwb3J0LgotJHZhciBtYXh0dXBsZSA9IDEwICAkJCBNYXhpbXVtIG51bWJlciBvZiBDb21iaW5l
IGFyZ3VtZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxh
ZCBMb3NldikKLS8vCi0vLyBNYWNyb3MgYW5kIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIHBh
cmFtZXRlcml6ZWQgdGVzdHMKLS8vIGluIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdv
b2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBE
TyBOT1QgRURJVCBCWSBIQU5EIQotLy8KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVT
VF9QQVJBTV9URVNUX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1f
VEVTVF9IXwotCi0KLS8vIFZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYWxsb3cgeW91IHRvIHRl
c3QgeW91ciBjb2RlIHdpdGggZGlmZmVyZW50Ci0vLyBwYXJhbWV0ZXJzIHdpdGhvdXQgd3JpdGlu
ZyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgdGVzdC4KLS8vCi0vLyBIZXJlIGlzIGhvdyB5
b3UgdXNlIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHM6Ci0KLSNpZiAwCi0KLS8vIFRvIHdyaXRl
IHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMsIGZpcnN0IHlvdSBzaG91bGQgZGVmaW5lIGEgZml4
dHVyZQotLy8gY2xhc3MuIEl0IGlzIHVzdWFsbHkgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08VD4gKHNlZSBiZWxvdyBmb3IKLS8vIGFub3RoZXIgaW5oZXJpdGFuY2Ugc2NoZW1l
IHRoYXQncyBzb21ldGltZXMgdXNlZnVsIGluIG1vcmUgY29tcGxpY2F0ZWQKLS8vIGNsYXNzIGhp
ZXJhcmNoaWVzKSwgd2hlcmUgdGhlIHR5cGUgb2YgeW91ciBwYXJhbWV0ZXIgdmFsdWVzLgotLy8g
VGVzdFdpdGhQYXJhbTxUPiBpcyBpdHNlbGYgZGVyaXZlZCBmcm9tIHRlc3Rpbmc6OlRlc3QuIFQg
Y2FuIGJlIGFueQotLy8gY29weWFibGUgdHlwZS4gSWYgaXQncyBhIHJhdyBwb2ludGVyLCB5b3Ug
YXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGUKLS8vIGxpZmVzcGFuIG9mIHRoZSBwb2lu
dGVkIHZhbHVlcy4KLQotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRo
UGFyYW08Y29uc3QgY2hhcio+IHsKLSAgLy8gWW91IGNhbiBpbXBsZW1lbnQgYWxsIHRoZSB1c3Vh
bCBjbGFzcyBmaXh0dXJlIG1lbWJlcnMgaGVyZS4KLX07Ci0KLS8vIFRoZW4sIHVzZSB0aGUgVEVT
VF9QIG1hY3JvIHRvIGRlZmluZSBhcyBtYW55IHBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGZvciB0
aGlzIGZpeHR1cmUgYXMgeW91IHdhbnQuIFRoZSBfUCBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJp
emVkIgotLy8gb3IgInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91IHByZWZlciB0byB0aGluay4KLQot
VEVTVF9QKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIGFjY2VzcyB0
aGUgdGVzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgR2V0UGFyYW0oKSBtZXRob2QKLSAgLy8gb2YgdGhl
IFRlc3RXaXRoUGFyYW08VD4gY2xhc3M6Ci0gIEVYUEVDVF9UUlVFKGZvby5CbGFoKEdldFBhcmFt
KCkpKTsKLSAgLi4uCi19Ci0KLVRFU1RfUChGb29UZXN0LCBIYXNCbGFoQmxhaCkgewotICAuLi4K
LX0KLQotLy8gRmluYWxseSwgeW91IGNhbiB1c2UgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgdG8g
aW5zdGFudGlhdGUgdGhlIHRlc3QKLS8vIGNhc2Ugd2l0aCBhbnkgc2V0IG9mIHBhcmFtZXRlcnMg
eW91IHdhbnQuIEdvb2dsZSBUZXN0IGRlZmluZXMgYSBudW1iZXIKLS8vIG9mIGZ1bmN0aW9ucyBm
b3IgZ2VuZXJhdGluZyB0ZXN0IHBhcmFtZXRlcnMuIFRoZXkgcmV0dXJuIHdoYXQgd2UgY2FsbAot
Ly8gKHN1cnByaXNlISkgcGFyYW1ldGVyIGdlbmVyYXRvcnMuIEhlcmUgaXMgYSAgc3VtbWFyeSBv
ZiB0aGVtLCB3aGljaAotLy8gYXJlIGFsbCBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2U6Ci0vLwot
Ly8KLS8vICBSYW5nZShiZWdpbiwgZW5kIFssIHN0ZXBdKSAtIFlpZWxkcyB2YWx1ZXMge2JlZ2lu
LCBiZWdpbitzdGVwLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4rc3Rl
cCtzdGVwLCAuLi59LiBUaGUgdmFsdWVzIGRvIG5vdAotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZSBlbmQuIHN0ZXAgZGVmYXVsdHMgdG8gMS4KLS8vICBWYWx1ZXModjEs
IHYyLCAuLi4sIHZOKSAgICAtIFlpZWxkcyB2YWx1ZXMge3YxLCB2MiwgLi4uLCB2Tn0uCi0vLyAg
VmFsdWVzSW4oY29udGFpbmVyKSAgICAgICAgLSBZaWVsZHMgdmFsdWVzIGZyb20gYSBDLXN0eWxl
IGFycmF5LCBhbiBTVEwKLS8vICBWYWx1ZXNJbihiZWdpbixlbmQpICAgICAgICAgIGNvbnRhaW5l
ciwgb3IgYW4gaXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpLgotLy8gIEJvb2woKSAgICAgICAg
ICAgICAgICAgICAgIC0gWWllbGRzIHNlcXVlbmNlIHtmYWxzZSwgdHJ1ZX0uCi0vLyAgQ29tYmlu
ZShnMSwgZzIsIC4uLiwgZ04pICAgLSBZaWVsZHMgYWxsIGNvbWJpbmF0aW9ucyAodGhlIENhcnRl
c2lhbiBwcm9kdWN0Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1h
dGggc2F2dnkpIG9mIHRoZSB2YWx1ZXMgZ2VuZXJhdGVkCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBieSB0aGUgTiBnZW5lcmF0b3JzLgotLy8KLS8vIEZvciBtb3JlIGRldGFpbHMs
IHNlZSBjb21tZW50cyBhdCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlc2UgZnVuY3Rpb25zIGJlbG93
Ci0vLyBpbiB0aGlzIGZpbGUuCi0vLwotLy8gVGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgd2lsbCBp
bnN0YW50aWF0ZSB0ZXN0cyBmcm9tIHRoZSBGb29UZXN0IHRlc3QgY2FzZQotLy8gZWFjaCB3aXRo
IHBhcmFtZXRlciB2YWx1ZXMgIm1lZW55IiwgIm1pbnkiLCBhbmQgIm1vZSIuCi0KLUlOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25OYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgRm9vVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygibWVlbnkiLCAibWlu
eSIsICJtb2UiKSk7Ci0KLS8vIFRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBpbnN0YW5jZXMgb2Yg
dGhlIHBhdHRlcm4sICh5ZXMsIHlvdQotLy8gY2FuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhlbiBv
bmNlKSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UCBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCi0vLyBhY3R1YWwg
dGVzdCBjYXNlIG5hbWUuIFJlbWVtYmVyIHRvIHBpY2sgdW5pcXVlIHByZWZpeGVzIGZvciBkaWZm
ZXJlbnQKLS8vIGluc3RhbnRpYXRpb25zLiBUaGUgdGVzdHMgZnJvbSB0aGUgaW5zdGFudGlhdGlv
biBhYm92ZSB3aWxsIGhhdmUKLS8vIHRoZXNlIG5hbWVzOgotLy8KLS8vICAgICogSW5zdGFudGlh
dGlvbk5hbWUvRm9vVGVzdC5Eb2VzQmxhaC8wIGZvciAibWVlbnkiCi0vLyAgICAqIEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMSBmb3IgIm1pbnkiCi0vLyAgICAqIEluc3RhbnRp
YXRpb25OYW1lL0Zvb1Rlc3QuRG9lc0JsYWgvMiBmb3IgIm1vZSIKLS8vICAgICogSW5zdGFudGlh
dGlvbk5hbWUvRm9vVGVzdC5IYXNCbGFoQmxhaC8wIGZvciAibWVlbnkiCi0vLyAgICAqIEluc3Rh
bnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMSBmb3IgIm1pbnkiCi0vLyAgICAqIElu
c3RhbnRpYXRpb25OYW1lL0Zvb1Rlc3QuSGFzQmxhaEJsYWgvMiBmb3IgIm1vZSIKLS8vCi0vLyBZ
b3UgY2FuIHVzZSB0aGVzZSBuYW1lcyBpbiAtLWd0ZXN0X2ZpbHRlci4KLS8vCi0vLyBUaGlzIHN0
YXRlbWVudCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cyBmcm9tIEZvb1Rlc3QgYWdhaW4sIGVh
Y2gKLS8vIHdpdGggcGFyYW1ldGVyIHZhbHVlcyAiY2F0IiBhbmQgImRvZyI6Ci0KLWNvbnN0IGNo
YXIqIHBldHNbXSA9IHsiY2F0IiwgImRvZyJ9OwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5v
dGhlckluc3RhbnRpYXRpb25OYW1lLCBGb29UZXN0LCBWYWx1ZXNJbihwZXRzKSk7Ci0KLS8vIFRo
ZSB0ZXN0cyBmcm9tIHRoZSBpbnN0YW50aWF0aW9uIGFib3ZlIHdpbGwgaGF2ZSB0aGVzZSBuYW1l
czoKLS8vCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRvZXNCbGFo
LzAgZm9yICJjYXQiCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29UZXN0LkRv
ZXNCbGFoLzEgZm9yICJkb2ciCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9uTmFtZS9Gb29U
ZXN0Lkhhc0JsYWhCbGFoLzAgZm9yICJjYXQiCi0vLyAgICAqIEFub3RoZXJJbnN0YW50aWF0aW9u
TmFtZS9Gb29UZXN0Lkhhc0JsYWhCbGFoLzEgZm9yICJkb2ciCi0vLwotLy8gUGxlYXNlIG5vdGUg
dGhhdCBJTlNUQU5USUFURV9URVNUX0NBU0VfUCB3aWxsIGluc3RhbnRpYXRlIGFsbCB0ZXN0cwot
Ly8gaW4gdGhlIGdpdmVuIHRlc3QgY2FzZSwgd2hldGhlciB0aGVpciBkZWZpbml0aW9ucyBjb21l
IGJlZm9yZSBvcgotLy8gQUZURVIgdGhlIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIHN0YXRlbWVu
dC4KLS8vCi0vLyBQbGVhc2UgYWxzbyBub3RlIHRoYXQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIChp
bmNsdWRpbmcgcGFyYW1ldGVycyB0byB0aGUKLS8vIGdlbmVyYXRvcnMpIGFyZSBldmFsdWF0ZWQg
aW4gSW5pdEdvb2dsZVRlc3QoKSwgYWZ0ZXIgbWFpbigpIGhhcyBzdGFydGVkLgotLy8gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgb24gb25lIGhhbmQsIHRvIGFkanVzdCBnZW5lcmF0b3IgcGFyYW1ldGVy
cyBpbiBvcmRlcgotLy8gdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lIGEgc2V0IG9mIHRlc3RzIHRv
IHJ1biBhbmQgb24gdGhlIG90aGVyIGhhbmQsCi0vLyBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRv
IGluc3BlY3QgdGhlIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0Ci0vLyByZWZsZWN0
aW9uIEFQSSBiZWZvcmUgUlVOX0FMTF9URVNUUygpIGlzIGV4ZWN1dGVkLgotLy8KLS8vIFlvdSBj
YW4gc2VlIHNhbXBsZXMvc2FtcGxlN191bml0dGVzdC5jYyBhbmQgc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjCi0vLyBmb3IgbW9yZSBleGFtcGxlcy4KLS8vCi0vLyBJbiB0aGUgZnV0dXJlLCB3
ZSBwbGFuIHRvIHB1Ymxpc2ggdGhlIEFQSSBmb3IgZGVmaW5pbmcgbmV3IHBhcmFtZXRlcgotLy8g
Z2VuZXJhdG9ycy4gQnV0IGZvciBub3cgdGhpcyBpbnRlcmZhY2UgcmVtYWlucyBwYXJ0IG9mIHRo
ZSBpbnRlcm5hbAotLy8gaW1wbGVtZW50YXRpb24gYW5kIGlzIHN1YmplY3QgdG8gY2hhbmdlLgot
Ly8KLS8vCi0vLyBBIHBhcmFtZXRlcml6ZWQgdGVzdCBmaXh0dXJlIG11c3QgYmUgZGVyaXZlZCBm
cm9tIHRlc3Rpbmc6OlRlc3QgYW5kIGZyb20KLS8vIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFj
ZTxUPiwgd2hlcmUgVCBpcyB0aGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVyCi0vLyB2YWx1ZXMuIElu
aGVyaXRpbmcgZnJvbSBUZXN0V2l0aFBhcmFtPFQ+IHNhdGlzZmllcyB0aGF0IHJlcXVpcmVtZW50
IGJlY2F1c2UKLS8vIFRlc3RXaXRoUGFyYW08VD4gaW5oZXJpdHMgZnJvbSBib3RoIFRlc3QgYW5k
IFdpdGhQYXJhbUludGVyZmFjZS4gSW4gbW9yZQotLy8gY29tcGxpY2F0ZWQgaGllcmFyY2hpZXMs
IGhvd2V2ZXIsIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwgdG8gaW5oZXJpdAotLy8gc2VwYXJh
dGVseSBmcm9tIFRlc3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZS4gRm9yIGV4YW1wbGU6Ci0KLWNs
YXNzIEJhc2VUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7Ci0gIC8vIFlvdSBjYW4gaW5o
ZXJpdCBhbGwgdGhlIHVzdWFsIG1lbWJlcnMgZm9yIGEgbm9uLXBhcmFtZXRlcml6ZWQgdGVzdAot
ICAvLyBmaXh0dXJlIGhlcmUuCi19OwotCi1jbGFzcyBEZXJpdmVkVGVzdCA6IHB1YmxpYyBCYXNl
VGVzdCwgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4gewotICAvLyBU
aGUgdXN1YWwgdGVzdCBmaXh0dXJlIG1lbWJlcnMgZ28gaGVyZSB0b28uCi19OwotCi1URVNUX0Yo
QmFzZVRlc3QsIEhhc0ZvbykgewotICAvLyBUaGlzIGlzIGFuIG9yZGluYXJ5IG5vbi1wYXJhbWV0
ZXJpemVkIHRlc3QuCi19Ci0KLVRFU1RfUChEZXJpdmVkVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8g
R2V0UGFyYW0gd29ya3MganVzdCB0aGUgc2FtZSBoZXJlIGFzIGlmIHlvdSBpbmhlcml0IGZyb20g
VGVzdFdpdGhQYXJhbS4KLSAgRVhQRUNUX1RSVUUoZm9vLkJsYWgoR2V0UGFyYW0oKSkpOwotfQot
Ci0jZW5kaWYgIC8vIDAKLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIK
LQotI2lmICFHVEVTVF9PU19TWU1CSUFOCi0jIGluY2x1ZGUgPHV0aWxpdHk+Ci0jZW5kaWYKLQot
Ly8gc2NyaXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJl
aW5nICNpbmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2lu
Y2x1ZGVzIGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVT
VC4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgotI2luY2x1ZGUg
Imd0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRl
cm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oIgotCi0jaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBGdW5jdGlvbnMgcHJvZHVjaW5nIHBh
cmFtZXRlciBnZW5lcmF0b3JzLgotLy8KLS8vIEdvb2dsZSBUZXN0IHVzZXMgdGhlc2UgZ2VuZXJh
dG9ycyB0byBwcm9kdWNlIHBhcmFtZXRlcnMgZm9yIHZhbHVlLQotLy8gcGFyYW1ldGVyaXplZCB0
ZXN0cy4gV2hlbiBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGlzIGluc3RhbnRpYXRlZAotLy8g
d2l0aCBhIHBhcnRpY3VsYXIgZ2VuZXJhdG9yLCBHb29nbGUgVGVzdCBjcmVhdGVzIGFuZCBydW5z
IHRlc3RzCi0vLyBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0
aGUgZ2VuZXJhdG9yLgotLy8KLS8vIEluIHRoZSBmb2xsb3dpbmcgc2FtcGxlLCB0ZXN0cyBmcm9t
IHRlc3QgY2FzZSBGb29UZXN0IGFyZSBpbnN0YW50aWF0ZWQKLS8vIGVhY2ggdGhyZWUgdGltZXMg
d2l0aCBwYXJhbWV0ZXIgdmFsdWVzIDMsIDUsIGFuZCA4OgotLy8KLS8vIGNsYXNzIEZvb1Rlc3Qg
OiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHsgLi4uIH07Ci0vLwotLy8gVEVTVF9QKEZvb1Rl
c3QsIFRlc3RUaGlzKSB7Ci0vLyB9Ci0vLyBURVNUX1AoRm9vVGVzdCwgVGVzdFRoYXQpIHsKLS8v
IH0KLS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFRlc3RTZXF1ZW5jZSwgRm9vVGVzdCwgVmFs
dWVzKDMsIDUsIDgpKTsKLS8vCi0KLS8vIFJhbmdlKCkgcmV0dXJucyBnZW5lcmF0b3JzIHByb3Zp
ZGluZyBzZXF1ZW5jZXMgb2YgdmFsdWVzIGluIGEgcmFuZ2UuCi0vLwotLy8gU3lub3BzaXM6Ci0v
LyBSYW5nZShzdGFydCwgZW5kKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5n
IGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHtzdGFydCwgc3RhcnQrMSwKLS8vICAgICBzdGFydCsyLCAu
Li4sIH0uCi0vLyBSYW5nZShzdGFydCwgZW5kLCBzdGVwKQotLy8gICAtIHJldHVybnMgYSBnZW5l
cmF0b3IgcHJvZHVjaW5nIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHtzdGFydCwgc3RhcnQrc3RlcCwK
LS8vICAgICBzdGFydCtzdGVwK3N0ZXAsIC4uLiwgfS4KLS8vIE5vdGVzOgotLy8gICAqIFRoZSBn
ZW5lcmF0ZWQgc2VxdWVuY2VzIG5ldmVyIGluY2x1ZGUgZW5kLiBGb3IgZXhhbXBsZSwgUmFuZ2Uo
MSwgNSkKLS8vICAgICByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBhIHNlcXVlbmNlIHsx
LCAyLCAzLCA0fS4gUmFuZ2UoMSwgOSwgMikKLS8vICAgICByZXR1cm5zIGEgZ2VuZXJhdG9yIHBy
b2R1Y2luZyB7MSwgMywgNSwgN30uCi0vLyAgICogc3RhcnQgYW5kIGVuZCBtdXN0IGhhdmUgdGhl
IHNhbWUgdHlwZS4gVGhhdCB0eXBlIG1heSBiZSBhbnkgaW50ZWdyYWwgb3IKLS8vICAgICBmbG9h
dGluZy1wb2ludCB0eXBlIG9yIGEgdXNlciBkZWZpbmVkIHR5cGUgc2F0aXNmeWluZyB0aGVzZSBj
b25kaXRpb25zOgotLy8gICAgICogSXQgbXVzdCBiZSBhc3NpZ25hYmxlIChoYXZlIG9wZXJhdG9y
PSgpIGRlZmluZWQpLgotLy8gICAgICogSXQgbXVzdCBoYXZlIG9wZXJhdG9yKygpIChvcGVyYXRv
cisoaW50LWNvbXBhdGlibGUgdHlwZSkgZm9yCi0vLyAgICAgICB0d28tb3BlcmFuZCB2ZXJzaW9u
KS4KLS8vICAgICAqIEl0IG11c3QgaGF2ZSBvcGVyYXRvcjwoKSBkZWZpbmVkLgotLy8gICAgIEVs
ZW1lbnRzIGluIHRoZSByZXN1bHRpbmcgc2VxdWVuY2VzIHdpbGwgYWxzbyBoYXZlIHRoYXQgdHlw
ZS4KLS8vICAgKiBDb25kaXRpb24gc3RhcnQgPCBlbmQgbXVzdCBiZSBzYXRpc2ZpZWQgaW4gb3Jk
ZXIgZm9yIHJlc3VsdGluZyBzZXF1ZW5jZXMKLS8vICAgICB0byBjb250YWluIGFueSBlbGVtZW50
cy4KLS8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW5jcmVtZW50VD4KLWludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjxUPiBSYW5nZShUIHN0YXJ0LCBUIGVuZCwgSW5jcmVtZW50VCBz
dGVwKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8VD4oCi0gICAgICBuZXcg
aW50ZXJuYWw6OlJhbmdlR2VuZXJhdG9yPFQsIEluY3JlbWVudFQ+KHN0YXJ0LCBlbmQsIHN0ZXAp
KTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8
VD4gUmFuZ2UoVCBzdGFydCwgVCBlbmQpIHsKLSAgcmV0dXJuIFJhbmdlKHN0YXJ0LCBlbmQsIDEp
OwotfQotCi0vLyBWYWx1ZXNJbigpIGZ1bmN0aW9uIGFsbG93cyBnZW5lcmF0aW9uIG9mIHRlc3Rz
IHdpdGggcGFyYW1ldGVycyBjb21pbmcgZnJvbQotLy8gYSBjb250YWluZXIuCi0vLwotLy8gU3lu
b3BzaXM6Ci0vLyBWYWx1ZXNJbihjb25zdCBUICgmYXJyYXkpW05dKQotLy8gICAtIHJldHVybnMg
YSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNlcXVlbmNlcyB3aXRoIGVsZW1lbnRzIGZyb20KLS8vICAg
ICBhIEMtc3R5bGUgYXJyYXkuCi0vLyBWYWx1ZXNJbihjb25zdCBDb250YWluZXImIGNvbnRhaW5l
cikKLS8vICAgLSByZXR1cm5zIGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBl
bGVtZW50cyBmcm9tCi0vLyAgICAgYW4gU1RMLXN0eWxlIGNvbnRhaW5lci4KLS8vIFZhbHVlc0lu
KEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCi0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRv
ciBwcm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMgZnJvbQotLy8gICAgIGEgcmFuZ2Ug
W2JlZ2luLCBlbmQpIGRlZmluZWQgYnkgYSBwYWlyIG9mIFNUTC1zdHlsZSBpdGVyYXRvcnMuIFRo
ZXNlCi0vLyAgICAgaXRlcmF0b3JzIGNhbiBhbHNvIGJlIHBsYWluIEMgcG9pbnRlcnMuCi0vLwot
Ly8gUGxlYXNlIG5vdGUgdGhhdCBWYWx1ZXNJbiBjb3BpZXMgdGhlIHZhbHVlcyBmcm9tIHRoZSBj
b250YWluZXJzCi0vLyBwYXNzZWQgaW4gYW5kIGtlZXBzIHRoZW0gdG8gZ2VuZXJhdGUgdGVzdHMg
aW4gUlVOX0FMTF9URVNUUygpLgotLy8KLS8vIEV4YW1wbGVzOgotLy8KLS8vIFRoaXMgaW5zdGFu
dGlhdGVzIHRlc3RzIGZyb20gdGVzdCBjYXNlIFN0cmluZ1Rlc3QKLS8vIGVhY2ggd2l0aCBDLXN0
cmluZyB2YWx1ZXMgb2YgImZvbyIsICJiYXIiLCBhbmQgImJheiI6Ci0vLwotLy8gY29uc3QgY2hh
ciogc3RyaW5nc1tdID0geyJmb28iLCAiYmFyIiwgImJheiJ9OwotLy8gSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoU3RyaW5nU2VxdWVuY2UsIFNydGluZ1Rlc3QsIFZhbHVlc0luKHN0cmluZ3MpKTsK
LS8vCi0vLyBUaGlzIGluc3RhbnRpYXRlcyB0ZXN0cyBmcm9tIHRlc3QgY2FzZSBTdGxTdHJpbmdU
ZXN0Ci0vLyBlYWNoIHdpdGggU1RMIHN0cmluZ3Mgd2l0aCB2YWx1ZXMgImEiIGFuZCAiYiI6Ci0v
LwotLy8gOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gR2V0UGFyYW1ldGVyU3RyaW5ncygp
IHsKLS8vICAgOjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4gdjsKLS8vICAgdi5wdXNoX2Jh
Y2soImEiKTsKLS8vICAgdi5wdXNoX2JhY2soImIiKTsKLS8vICAgcmV0dXJuIHY7Ci0vLyB9Ci0v
LwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ2hhclNlcXVlbmNlLAotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgU3RsU3RyaW5nVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbHVlc0luKEdldFBhcmFtZXRlclN0cmluZ3MoKSkpOwotLy8KLS8vCi0vLyBUaGlzIHdpbGwg
YWxzbyBpbnN0YW50aWF0ZSB0ZXN0cyBmcm9tIENoYXJUZXN0Ci0vLyBlYWNoIHdpdGggcGFyYW1l
dGVyIHZhbHVlcyAnYScgYW5kICdiJzoKLS8vCi0vLyA6OnN0ZDo6bGlzdDxjaGFyPiBHZXRQYXJh
bWV0ZXJDaGFycygpIHsKLS8vICAgOjpzdGQ6Omxpc3Q8Y2hhcj4gbGlzdDsKLS8vICAgbGlzdC5w
dXNoX2JhY2soJ2EnKTsKLS8vICAgbGlzdC5wdXNoX2JhY2soJ2InKTsKLS8vICAgcmV0dXJuIGxp
c3Q7Ci0vLyB9Ci0vLyA6OnN0ZDo6bGlzdDxjaGFyPiBsID0gR2V0UGFyYW1ldGVyQ2hhcnMoKTsK
LS8vIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENoYXJTZXF1ZW5jZTIsCi0vLyAgICAgICAgICAg
ICAgICAgICAgICAgICBDaGFyVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVl
c0luKGwuYmVnaW4oKSwgbC5lbmQoKSkpOwotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJk
SXRlcmF0b3I+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gIHR5cGVuYW1lIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGU+
Ci1WYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJdGVyYXRvciBlbmQpIHsK
LSAgdHlwZWRlZiB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRvclRyYWl0czxG
b3J3YXJkSXRlcmF0b3I+Ci0gICAgICA6OnZhbHVlX3R5cGUgUGFyYW1UeXBlOwotICByZXR1cm4g
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFBhcmFtVHlwZT4oCi0gICAgICBuZXcgaW50ZXJuYWw6
OlZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVyYXRvcjxQYXJhbVR5cGU+KGJlZ2luLCBlbmQpKTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotaW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0IFQgKCZhcnJheSlbTl0pIHsKLSAgcmV0dXJuIFZhbHVl
c0luKGFycmF5LCBhcnJheSArIE4pOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgot
aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4g
VmFsdWVzSW4oCi0gICAgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpIHsKLSAgcmV0dXJuIFZh
bHVlc0luKGNvbnRhaW5lci5iZWdpbigpLCBjb250YWluZXIuZW5kKCkpOwotfQotCi0vLyBWYWx1
ZXMoKSBhbGxvd3MgZ2VuZXJhdGluZyB0ZXN0cyBmcm9tIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGxp
c3Qgb2YKLS8vIHBhcmFtZXRlcnMuCi0vLwotLy8gU3lub3BzaXM6Ci0vLyBWYWx1ZXMoVCB2MSwg
VCB2MiwgLi4uLCBUIHZOKQotLy8gICAtIHJldHVybnMgYSBnZW5lcmF0b3IgcHJvZHVjaW5nIHNl
cXVlbmNlcyB3aXRoIGVsZW1lbnRzIHYxLCB2MiwgLi4uLCB2Ti4KLS8vCi0vLyBGb3IgZXhhbXBs
ZSwgdGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNhc2UgQmFyVGVzdCBlYWNoCi0v
LyB3aXRoIHZhbHVlcyAib25lIiwgInR3byIsIGFuZCAidGhyZWUiOgotLy8KLS8vIElOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKE51bVNlcXVlbmNlLCBCYXJUZXN0LCBWYWx1ZXMoIm9uZSIsICJ0d28i
LCAidGhyZWUiKSk7Ci0vLwotLy8gVGhpcyBpbnN0YW50aWF0ZXMgdGVzdHMgZnJvbSB0ZXN0IGNh
c2UgQmF6VGVzdCBlYWNoIHdpdGggdmFsdWVzIDEsIDIsIDMuNS4KLS8vIFRoZSBleGFjdCB0eXBl
IG9mIHZhbHVlcyB3aWxsIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiBwYXJhbWV0ZXIgaW4gQmF6VGVz
dC4KLS8vCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChGbG9hdGluZ051bWJlcnMsIEJhelRl
c3QsIFZhbHVlcygxLCAyLCAzLjUpKTsKLS8vCi0vLyBDdXJyZW50bHksIFZhbHVlcygpIHN1cHBv
cnRzIGZyb20gMSB0byAkbiBwYXJhbWV0ZXJzLgotLy8KLSRyYW5nZSBpIDEuLm4KLSRmb3IgaSBb
WwotJHJhbmdlIGogMS4uaQotCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgot
aW50ZXJuYWw6OlZhbHVlQXJyYXkkaTwkZm9yIGosIFtbVCRqXV0+IFZhbHVlcygkZm9yIGosIFtb
VCRqIHYkal1dKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6VmFsdWVBcnJheSRpPCRmb3IgaiwgW1tU
JGpdXT4oJGZvciBqLCBbW3Ykal1dKTsKLX0KLQotXV0KLQotLy8gQm9vbCgpIGFsbG93cyBnZW5l
cmF0aW5nIHRlc3RzIHdpdGggcGFyYW1ldGVycyBpbiBhIHNldCBvZiAoZmFsc2UsIHRydWUpLgot
Ly8KLS8vIFN5bm9wc2lzOgotLy8gQm9vbCgpCi0vLyAgIC0gcmV0dXJucyBhIGdlbmVyYXRvciBw
cm9kdWNpbmcgc2VxdWVuY2VzIHdpdGggZWxlbWVudHMge2ZhbHNlLCB0cnVlfS4KLS8vCi0vLyBJ
dCBpcyB1c2VmdWwgd2hlbiB0ZXN0aW5nIGNvZGUgdGhhdCBkZXBlbmRzIG9uIEJvb2xlYW4gZmxh
Z3MuIENvbWJpbmF0aW9ucwotLy8gb2YgbXVsdGlwbGUgZmxhZ3MgY2FuIGJlIHRlc3RlZCB3aGVu
IHNldmVyYWwgQm9vbCgpJ3MgYXJlIGNvbWJpbmVkIHVzaW5nCi0vLyBDb21iaW5lKCkgZnVuY3Rp
b24uCi0vLwotLy8gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIGFsbCB0ZXN0cyBpbiB0aGUgdGVz
dCBjYXNlIEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyB3aWxsIGJlIGluc3RhbnRpYXRlZCB0d2ljZSB3
aXRoIHBhcmFtZXRlcnMgZmFsc2UgYW5kIHRydWUuCi0vLwotLy8gY2xhc3MgRmxhZ0RlcGVuZGVu
dFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxib29sPiB7Ci0vLyAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLS8vICAgICBleHRlcm5hbF9mbGFnID0gR2V0UGFyYW0oKTsKLS8v
ICAgfQotLy8gfQotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQm9vbFNlcXVlbmNlLCBGbGFn
RGVwZW5kZW50VGVzdCwgQm9vbCgpKTsKLS8vCi1pbmxpbmUgaW50ZXJuYWw6OlBhcmFtR2VuZXJh
dG9yPGJvb2w+IEJvb2woKSB7Ci0gIHJldHVybiBWYWx1ZXMoZmFsc2UsIHRydWUpOwotfQotCi0j
IGlmIEdURVNUX0hBU19DT01CSU5FCi0vLyBDb21iaW5lKCkgYWxsb3dzIHRoZSB1c2VyIHRvIGNv
bWJpbmUgdHdvIG9yIG1vcmUgc2VxdWVuY2VzIHRvIHByb2R1Y2UKLS8vIHZhbHVlcyBvZiBhIENh
cnRlc2lhbiBwcm9kdWN0IG9mIHRob3NlIHNlcXVlbmNlcycgZWxlbWVudHMuCi0vLwotLy8gU3lu
b3BzaXM6Ci0vLyBDb21iaW5lKGdlbjEsIGdlbjIsIC4uLiwgZ2VuTikKLS8vICAgLSByZXR1cm5z
IGEgZ2VuZXJhdG9yIHByb2R1Y2luZyBzZXF1ZW5jZXMgd2l0aCBlbGVtZW50cyBjb21pbmcgZnJv
bQotLy8gICAgIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiBlbGVtZW50cyBmcm9tIHRoZSBzZXF1
ZW5jZXMgZ2VuZXJhdGVkIGJ5Ci0vLyAgICAgZ2VuMSwgZ2VuMiwgLi4uLCBnZW5OLiBUaGUgc2Vx
dWVuY2UgZWxlbWVudHMgd2lsbCBoYXZlIGEgdHlwZSBvZgotLy8gICAgIHR1cGxlPFQxLCBUMiwg
Li4uLCBUTj4gd2hlcmUgVDEsIFQyLCAuLi4sIFROIGFyZSB0aGUgdHlwZXMKLS8vICAgICBvZiBl
bGVtZW50cyBmcm9tIHNlcXVlbmNlcyBwcm9kdWNlcyBieSBnZW4xLCBnZW4yLCAuLi4sIGdlbk4u
Ci0vLwotLy8gQ29tYmluZSBjYW4gaGF2ZSB1cCB0byAkbWF4dHVwbGUgYXJndW1lbnRzLiBUaGlz
IG51bWJlciBpcyBjdXJyZW50bHkgbGltaXRlZAotLy8gYnkgdGhlIG1heGltdW0gbnVtYmVyIG9m
IGVsZW1lbnRzIGluIHRoZSB0dXBsZSBpbXBsZW1lbnRhdGlvbiB1c2VkIGJ5IEdvb2dsZQotLy8g
VGVzdC4KLS8vCi0vLyBFeGFtcGxlOgotLy8KLS8vIFRoaXMgd2lsbCBpbnN0YW50aWF0ZSB0ZXN0
cyBpbiB0ZXN0IGNhc2UgQW5pbWFsVGVzdCBlYWNoIG9uZSB3aXRoCi0vLyB0aGUgcGFyYW1ldGVy
IHZhbHVlcyB0dXBsZSgiY2F0IiwgQkxBQ0spLCB0dXBsZSgiY2F0IiwgV0hJVEUpLAotLy8gdHVw
bGUoImRvZyIsIEJMQUNLKSwgYW5kIHR1cGxlKCJkb2ciLCBXSElURSk6Ci0vLwotLy8gZW51bSBD
b2xvciB7IEJMQUNLLCBHUkFZLCBXSElURSB9OwotLy8gY2xhc3MgQW5pbWFsVGVzdAotLy8gICAg
IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08dHVwbGU8Y29uc3QgY2hhciosIENvbG9y
PiA+IHsuLi59OwotLy8KLS8vIFRFU1RfUChBbmltYWxUZXN0LCBBbmltYWxMb29rc05pY2UpIHsu
Li59Ci0vLwotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQW5pbWFsVmFyaWF0aW9ucywgQW5p
bWFsVGVzdCwKLS8vICAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKCJjYXQi
LCAiZG9nIiksCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhCTEFD
SywgV0hJVEUpKSk7Ci0vLwotLy8gVGhpcyB3aWxsIGluc3RhbnRpYXRlIHRlc3RzIGluIEZsYWdE
ZXBlbmRlbnRUZXN0IHdpdGggYWxsIHZhcmlhdGlvbnMgb2YgdHdvCi0vLyBCb29sZWFuIGZsYWdz
OgotLy8KLS8vIGNsYXNzIEZsYWdEZXBlbmRlbnRUZXN0Ci0vLyAgICAgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdFdpdGhQYXJhbTx0dXBsZTxib29sLCBib29sPiA+IHsKLS8vICAgdmlydHVhbCB2b2lk
IFNldFVwKCkgewotLy8gICAgIC8vIEFzc2lnbnMgZXh0ZXJuYWxfZmxhZ18xIGFuZCBleHRlcm5h
bF9mbGFnXzIgdmFsdWVzIGZyb20gdGhlIHR1cGxlLgotLy8gICAgIHRpZShleHRlcm5hbF9mbGFn
XzEsIGV4dGVybmFsX2ZsYWdfMikgPSBHZXRQYXJhbSgpOwotLy8gICB9Ci0vLyB9OwotLy8KLS8v
IFRFU1RfUChGbGFnRGVwZW5kZW50VGVzdCwgVGVzdEZlYXR1cmUxKSB7Ci0vLyAgIC8vIFRlc3Qg
eW91ciBjb2RlIHVzaW5nIGV4dGVybmFsX2ZsYWdfMSBhbmQgZXh0ZXJuYWxfZmxhZ18yIGhlcmUu
Ci0vLyB9Ci0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUChUd29Cb29sU2VxdWVuY2UsIEZsYWdE
ZXBlbmRlbnRUZXN0LAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShCb29sKCks
IEJvb2woKSkpOwotLy8KLSRyYW5nZSBpIDIuLm1heHR1cGxlCi0kZm9yIGkgW1sKLSRyYW5nZSBq
IDEuLmkKLQotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBHZW5lcmF0b3Ikal1dPgotaW50
ZXJuYWw6OkNhcnRlc2lhblByb2R1Y3RIb2xkZXIkaTwkZm9yIGosIFtbR2VuZXJhdG9yJGpdXT4g
Q29tYmluZSgKLSAgICAkZm9yIGosIFtbY29uc3QgR2VuZXJhdG9yJGomIGckal1dKSB7Ci0gIHJl
dHVybiBpbnRlcm5hbDo6Q2FydGVzaWFuUHJvZHVjdEhvbGRlciRpPCRmb3IgaiwgW1tHZW5lcmF0
b3Ikal1dPigKLSAgICAgICRmb3IgaiwgW1tnJGpdXSk7Ci19Ci0KLV1dCi0jIGVuZGlmICAvLyBH
VEVTVF9IQVNfQ09NQklORQotCi0KLQotIyBkZWZpbmUgVEVTVF9QKHRlc3RfY2FzZV9uYW1lLCB0
ZXN0X25hbWUpIFwKLSAgY2xhc3MgR1RFU1RfVEVTVF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFt
ZSwgdGVzdF9uYW1lKSBcCi0gICAgICA6IHB1YmxpYyB0ZXN0X2Nhc2VfbmFtZSB7IFwKLSAgIHB1
YmxpYzogXAotICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3Rf
bmFtZSkoKSB7fSBcCi0gICAgdmlydHVhbCB2b2lkIFRlc3RCb2R5KCk7IFwKLSAgIHByaXZhdGU6
IFwKLSAgICBzdGF0aWMgaW50IEFkZFRvUmVnaXN0cnkoKSB7IFwKLSAgICAgIDo6dGVzdGluZzo6
VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpLiBc
Ci0gICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRlc3RfY2FzZV9uYW1lPihcCi0g
ICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAotICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAotICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fKSktPkFkZFRlc3RQYXR0ZXJuKFwKLSAgICAgICAgICAgICAgICAgICAgICAjdGVzdF9j
YXNlX25hbWUsIFwKLSAgICAgICAgICAgICAgICAgICAgICAjdGVzdF9uYW1lLCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgbmV3IDo6dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RNZXRhRmFjdG9yeTwg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpPigp
KTsgXAotICAgICAgcmV0dXJuIDA7IFwKLSAgICB9IFwKLSAgICBzdGF0aWMgaW50IGd0ZXN0X3Jl
Z2lzdGVyaW5nX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXzsgXAotICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oXAotICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVf
KHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUpKTsgXAotICB9OyBcCi0gIGludCBHVEVTVF9URVNU
X0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfbmFtZSk6Omd0ZXN0X3JlZ2lzdGVyaW5nX2R1bW15XyA9IFwKLSAgICAgIEdURVNU
X1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OkFkZFRvUmVnaXN0
cnkoKTsgXAotICB2b2lkIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRl
c3RfbmFtZSk6OlRlc3RCb2R5KCkKLQotLy8gVGhlIG9wdGlvbmFsIGxhc3QgYXJndW1lbnQgdG8g
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgYWxsb3dzIHRoZSB1c2VyCi0vLyB0byBzcGVjaWZ5IGEg
ZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IGdlbmVyYXRlcyBjdXN0b20gdGVzdCBuYW1lIHN1ZmZp
eGVzCi0vLyBiYXNlZCBvbiB0aGUgdGVzdCBwYXJhbWV0ZXJzLiBUaGUgZnVuY3Rpb24gc2hvdWxk
IGFjY2VwdCBvbmUgYXJndW1lbnQgb2YKLS8vIHR5cGUgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxj
bGFzcyBQYXJhbVR5cGU+LCBhbmQgcmV0dXJuIHN0ZDo6c3RyaW5nLgotLy8KLS8vIHRlc3Rpbmc6
OlByaW50VG9TdHJpbmdQYXJhbU5hbWUgaXMgYSBidWlsdGluIHRlc3Qgc3VmZml4IGdlbmVyYXRv
ciB0aGF0Ci0vLyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKEdl
dFBhcmFtKCkpLgotLy8KLS8vIE5vdGU6IHRlc3QgbmFtZXMgbXVzdCBiZSBub24tZW1wdHksIHVu
aXF1ZSwgYW5kIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkKLS8vIGFscGhhbnVtZXJpYyBjaGFyYWN0
ZXJzIG9yIHVuZGVyc2NvcmUuIEJlY2F1c2UgUHJpbnRUb1N0cmluZyBhZGRzIHF1b3RlcwotLy8g
dG8gc3RkOjpzdHJpbmcgYW5kIEMgc3RyaW5ncywgaXQgd29uJ3Qgd29yayBmb3IgdGhlc2UgdHlw
ZXMuCi0KLSMgZGVmaW5lIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKHByZWZpeCwgdGVzdF9jYXNl
X25hbWUsIGdlbmVyYXRvciwgLi4uKSBcCi0gIDo6dGVzdGluZzo6aW50ZXJuYWw6OlBhcmFtR2Vu
ZXJhdG9yPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwKLSAgICAgIGd0ZXN0XyMjcHJlZml4
IyN0ZXN0X2Nhc2VfbmFtZSMjX0V2YWxHZW5lcmF0b3JfKCkgeyByZXR1cm4gZ2VuZXJhdG9yOyB9
IFwKLSAgOjpzdGQ6OnN0cmluZyBndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFs
R2VuZXJhdGVOYW1lXyggXAotICAgICAgY29uc3QgOjp0ZXN0aW5nOjpUZXN0UGFyYW1JbmZvPHRl
c3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+JiBpbmZvKSB7IFwKLSAgICByZXR1cm4gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6R2V0UGFyYW1OYW1lR2VuPHRlc3RfY2FzZV9uYW1lOjpQYXJhbVR5cGU+IFwK
LSAgICAgICAgKF9fVkFfQVJHU19fKShpbmZvKTsgXAotICB9IFwKLSAgaW50IGd0ZXN0XyMjcHJl
Zml4IyN0ZXN0X2Nhc2VfbmFtZSMjX2R1bW15XyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwK
LSAgICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPnBhcmFtZXRlcml6ZWRf
dGVzdF9yZWdpc3RyeSgpLiBcCi0gICAgICAgICAgR2V0VGVzdENhc2VQYXR0ZXJuSG9sZGVyPHRl
c3RfY2FzZV9uYW1lPihcCi0gICAgICAgICAgICAgICN0ZXN0X2Nhc2VfbmFtZSwgXAotICAgICAg
ICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpDb2RlTG9jYXRpb24oXAotICAgICAgICAgICAg
ICAgICAgX19GSUxFX18sIF9fTElORV9fKSktPkFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbihcCi0g
ICAgICAgICAgICAgICAgICAgICAgI3ByZWZpeCwgXAotICAgICAgICAgICAgICAgICAgICAgICZn
dGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2VuZXJhdG9yXywgXAotICAgICAg
ICAgICAgICAgICAgICAgICZndGVzdF8jI3ByZWZpeCMjdGVzdF9jYXNlX25hbWUjI19FdmFsR2Vu
ZXJhdGVOYW1lXywgXAotICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXykK
LQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1f
VEVTVAotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUEFSQU1fVEVTVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1wcmludGVycy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlODUwZDYwNTQyMGEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXByaW50ZXJzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDA2ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIEdv
b2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsKLS8vCi0vLyBUaGlz
IGZpbGUgaW1wbGVtZW50cyBhIHVuaXZlcnNhbCB2YWx1ZSBwcmludGVyIHRoYXQgY2FuIHByaW50
IGEKLS8vIHZhbHVlIG9mIGFueSB0eXBlIFQ6Ci0vLwotLy8gICB2b2lkIDo6dGVzdGluZzo6aW50
ZXJuYWw6OlVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cik7Ci0v
LwotLy8gQSB1c2VyIGNhbiB0ZWFjaCB0aGlzIGZ1bmN0aW9uIGhvdyB0byBwcmludCBhIGNsYXNz
IHR5cGUgVCBieQotLy8gZGVmaW5pbmcgZWl0aGVyIG9wZXJhdG9yPDwoKSBvciBQcmludFRvKCkg
aW4gdGhlIG5hbWVzcGFjZSB0aGF0Ci0vLyBkZWZpbmVzIFQuICBNb3JlIHNwZWNpZmljYWxseSwg
dGhlIEZJUlNUIGRlZmluZWQgZnVuY3Rpb24gaW4gdGhlCi0vLyBmb2xsb3dpbmcgbGlzdCB3aWxs
IGJlIHVzZWQgKGFzc3VtaW5nIFQgaXMgZGVmaW5lZCBpbiBuYW1lc3BhY2UKLS8vIGZvbyk6Ci0v
LwotLy8gICAxLiBmb286OlByaW50VG8oY29uc3QgVCYsIG9zdHJlYW0qKQotLy8gICAyLiBvcGVy
YXRvcjw8KG9zdHJlYW0mLCBjb25zdCBUJikgZGVmaW5lZCBpbiBlaXRoZXIgZm9vIG9yIHRoZQot
Ly8gICAgICBnbG9iYWwgbmFtZXNwYWNlLgotLy8KLS8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIGlz
IGRlZmluZWQsIGl0IHdpbGwgcHJpbnQgdGhlIGRlYnVnIHN0cmluZyBvZgotLy8gdGhlIHZhbHVl
IGlmIGl0IGlzIGEgcHJvdG9jb2wgYnVmZmVyLCBvciBwcmludCB0aGUgcmF3IGJ5dGVzIGluIHRo
ZQotLy8gdmFsdWUgb3RoZXJ3aXNlLgotLy8KLS8vIFRvIGFpZCBkZWJ1Z2dpbmc6IHdoZW4gVCBp
cyBhIHJlZmVyZW5jZSB0eXBlLCB0aGUgYWRkcmVzcyBvZiB0aGUKLS8vIHZhbHVlIGlzIGFsc28g
cHJpbnRlZDsgd2hlbiBUIGlzIGEgKGNvbnN0KSBjaGFyIHBvaW50ZXIsIGJvdGggdGhlCi0vLyBw
b2ludGVyIHZhbHVlIGFuZCB0aGUgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGl0IHBvaW50cyB0byBh
cmUKLS8vIHByaW50ZWQuCi0vLwotLy8gV2UgYWxzbyBwcm92aWRlIHNvbWUgY29udmVuaWVudCB3
cmFwcGVyczoKLS8vCi0vLyAgIC8vIFByaW50cyBhIHZhbHVlIHRvIGEgc3RyaW5nLiAgRm9yIGEg
KGNvbnN0IG9yIG5vdCkgY2hhcgotLy8gICAvLyBwb2ludGVyLCB0aGUgTlVMLXRlcm1pbmF0ZWQg
c3RyaW5nIChidXQgbm90IHRoZSBwb2ludGVyKSBpcwotLy8gICAvLyBwcmludGVkLgotLy8gICBz
dGQ6OnN0cmluZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmcoY29uc3QgVCYgdmFsdWUpOwotLy8K
LS8vICAgLy8gUHJpbnRzIGEgdmFsdWUgdGVyc2VseTogZm9yIGEgcmVmZXJlbmNlIHR5cGUsIHRo
ZSByZWZlcmVuY2VkCi0vLyAgIC8vIHZhbHVlIChidXQgbm90IHRoZSBhZGRyZXNzKSBpcyBwcmlu
dGVkOyBmb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyCi0vLyAgIC8vIHBvaW50ZXIsIHRoZSBOVUwt
dGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzCi0vLyAgIC8vIHByaW50
ZWQuCi0vLyAgIHZvaWQgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsVGVyc2VQcmludChj
b25zdCBUJiB2YWx1ZSwgb3N0cmVhbSopOwotLy8KLS8vICAgLy8gUHJpbnRzIHZhbHVlIHVzaW5n
IHRoZSB0eXBlIGluZmVycmVkIGJ5IHRoZSBjb21waWxlci4gIFRoZSBkaWZmZXJlbmNlCi0vLyAg
IC8vIGZyb20gVW5pdmVyc2FsVGVyc2VQcmludCgpIGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBwcmlu
dHMgYm90aCB0aGUKLS8vICAgLy8gcG9pbnRlciBhbmQgdGhlIE5VTC10ZXJtaW5hdGVkIHN0cmlu
ZyBmb3IgYSAoY29uc3Qgb3Igbm90KSBjaGFyIHBvaW50ZXIuCi0vLyAgIHZvaWQgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIG9zdHJlYW0qKTsKLS8v
Ci0vLyAgIC8vIFByaW50cyB0aGUgZmllbGRzIG9mIGEgdHVwbGUgdGVyc2VseSB0byBhIHN0cmlu
ZyB2ZWN0b3IsIG9uZQotLy8gICAvLyBlbGVtZW50IGZvciBlYWNoIGZpZWxkLiBUdXBsZSBzdXBw
b3J0IG11c3QgYmUgZW5hYmxlZCBpbgotLy8gICAvLyBndGVzdC1wb3J0LmguCi0vLyAgIHN0ZDo6
dmVjdG9yPHN0cmluZz4gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAot
Ly8gICAgICAgY29uc3QgVHVwbGUmIHZhbHVlKTsKLS8vCi0vLyBLbm93biBsaW1pdGF0aW9uOgot
Ly8KLS8vIFRoZSBwcmludCBwcmltaXRpdmVzIHByaW50IHRoZSBlbGVtZW50cyBvZiBhbiBTVEwt
c3R5bGUgY29udGFpbmVyCi0vLyB1c2luZyB0aGUgY29tcGlsZXItaW5mZXJyZWQgdHlwZSBvZiAq
aXRlciB3aGVyZSBpdGVyIGlzIGEKLS8vIGNvbnN0X2l0ZXJhdG9yIG9mIHRoZSBjb250YWluZXIu
ICBXaGVuIGNvbnN0X2l0ZXJhdG9yIGlzIGFuIGlucHV0Ci0vLyBpdGVyYXRvciBidXQgbm90IGEg
Zm9yd2FyZCBpdGVyYXRvciwgdGhpcyBpbmZlcnJlZCB0eXBlIG1heSBub3QKLS8vIG1hdGNoIHZh
bHVlX3R5cGUsIGFuZCB0aGUgcHJpbnQgb3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuICBJbgotLy8g
cHJhY3RpY2UsIHRoaXMgaXMgcmFyZWx5IGEgcHJvYmxlbSBhcyBmb3IgbW9zdCBjb250YWluZXJz
Ci0vLyBjb25zdF9pdGVyYXRvciBpcyBhIGZvcndhcmQgaXRlcmF0b3IuICBXZSdsbCBmaXggdGhp
cyBpZiB0aGVyZSdzIGFuCi0vLyBhY3R1YWwgbmVlZCBmb3IgaXQuICBOb3RlIHRoYXQgdGhpcyBm
aXggY2Fubm90IHJlbHkgb24gdmFsdWVfdHlwZQotLy8gYmVpbmcgZGVmaW5lZCBhcyBtYW55IHVz
ZXItZGVmaW5lZCBjb250YWluZXIgdHlwZXMgZG9uJ3QgaGF2ZQotLy8gdmFsdWVfdHlwZS4KLQot
I2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCi0jZGVmaW5lIEdU
RVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJJTlRFUlNfSF8KLQotI2luY2x1ZGUgPG9zdHJlYW0+
ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNs
dWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC1wb3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aCIKLQotI2lmIEdURVNUX0hBU19TVERfVFVQTEVfCi0jIGluY2x1ZGUgPHR1cGxlPgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gRGVmaW5pdGlvbnMgaW4gdGhlICdpbnRlcm5h
bCcgYW5kICdpbnRlcm5hbDInIG5hbWUgc3BhY2VzIGFyZQotLy8gc3ViamVjdCB0byBjaGFuZ2Ug
d2l0aG91dCBub3RpY2UuICBETyBOT1QgVVNFIFRIRU0gSU4gVVNFUiBDT0RFIQotbmFtZXNwYWNl
IGludGVybmFsMiB7Ci0KLS8vIFByaW50cyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGluIHRo
ZSBnaXZlbiBvYmplY3QgdG8gdGhlIGdpdmVuCi0vLyBvc3RyZWFtLgotR1RFU1RfQVBJXyB2b2lk
IFByaW50Qnl0ZXNJbk9iamVjdFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLQotLy8g
Rm9yIHNlbGVjdGluZyB3aGljaCBwcmludGVyIHRvIHVzZSB3aGVuIGEgZ2l2ZW4gdHlwZSBoYXMg
bmVpdGhlciA8PAotLy8gbm9yIFByaW50VG8oKS4KLWVudW0gVHlwZUtpbmQgewotICBrUHJvdG9i
dWYsICAgICAgICAgICAgICAvLyBhIHByb3RvYnVmIHR5cGUKLSAga0NvbnZlcnRpYmxlVG9JbnRl
Z2VyLCAgLy8gYSB0eXBlIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQmlnZ2VzdEludAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiBhIG5hbWVkIG9yIHVubmFtZWQgZW51bSB0
eXBlKQotICBrT3RoZXJUeXBlICAgICAgICAgICAgICAvLyBhbnl0aGluZyBlbHNlCi19OwotCi0v
LyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrVHlwZUtpbmQ+OjpQcmludFZhbHVlKHZhbHVlLCBv
cykgaXMgY2FsbGVkCi0vLyBieSB0aGUgdW5pdmVyc2FsIHByaW50ZXIgdG8gcHJpbnQgYSB2YWx1
ZSBvZiB0eXBlIFQgd2hlbiBuZWl0aGVyCi0vLyBvcGVyYXRvcjw8IG5vciBQcmludFRvKCkgaXMg
ZGVmaW5lZCBmb3IgVCwgd2hlcmUga1R5cGVLaW5kIGlzIHRoZQotLy8gImtpbmQiIG9mIFQgYXMg
ZGVmaW5lZCBieSBlbnVtIFR5cGVLaW5kLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFR5cGVLaW5k
IGtUeXBlS2luZD4KLWNsYXNzIFR5cGVXaXRob3V0Rm9ybWF0dGVyIHsKLSBwdWJsaWM6Ci0gIC8v
IFRoaXMgZGVmYXVsdCB2ZXJzaW9uIGlzIGNhbGxlZCB3aGVuIGtUeXBlS2luZCBpcyBrT3RoZXJU
eXBlLgotICBzdGF0aWMgdm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKLSAgICBQcmludEJ5dGVzSW5PYmplY3RUbyhyZWludGVycHJldF9jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPigmdmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVvZih2YWx1ZSksIG9zKTsKLSAgfQotfTsKLQotLy8gV2UgcHJpbnQgYSBwcm90b2J1ZiB1c2lu
ZyBpdHMgU2hvcnREZWJ1Z1N0cmluZygpIHdoZW4gdGhlIHN0cmluZwotLy8gZG9lc24ndCBleGNl
ZWQgdGhpcyBtYW55IGNoYXJhY3RlcnM7IG90aGVyd2lzZSB3ZSBwcmludCBpdCB1c2luZwotLy8g
RGVidWdTdHJpbmcoKSBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LgotY29uc3Qgc2l6ZV90IGtQcm90
b2J1Zk9uZUxpbmVyTWF4TGVuZ3RoID0gNTA7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3MgVHlwZVdpdGhvdXRGb3JtYXR0ZXI8VCwga1Byb3RvYnVmPiB7Ci0gcHVibGljOgotICBzdGF0
aWMgdm9pZCBQcmludFZhbHVlKGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsK
LSAgICBzdGQ6OnN0cmluZyBwcmV0dHlfc3RyID0gdmFsdWUuU2hvcnREZWJ1Z1N0cmluZygpOwot
ICAgIGlmIChwcmV0dHlfc3RyLmxlbmd0aCgpID4ga1Byb3RvYnVmT25lTGluZXJNYXhMZW5ndGgp
IHsKLSAgICAgIHByZXR0eV9zdHIgPSAiXG4iICsgdmFsdWUuRGVidWdTdHJpbmcoKTsKLSAgICB9
Ci0gICAgKm9zIDw8ICgiPCIgKyBwcmV0dHlfc3RyICsgIj4iKTsKLSAgfQotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUeXBlV2l0aG91dEZvcm1hdHRlcjxULCBrQ29udmVydGli
bGVUb0ludGVnZXI+IHsKLSBwdWJsaWM6Ci0gIC8vIFNpbmNlIFQgaGFzIG5vIDw8IG9wZXJhdG9y
IG9yIFByaW50VG8oKSBidXQgY2FuIGJlIGltcGxpY2l0bHkKLSAgLy8gY29udmVydGVkIHRvIEJp
Z2dlc3RJbnQsIHdlIHByaW50IGl0IGFzIGEgQmlnZ2VzdEludC4KLSAgLy8KLSAgLy8gTW9zdCBs
aWtlbHkgVCBpcyBhbiBlbnVtIHR5cGUgKGVpdGhlciBuYW1lZCBvciB1bm5hbWVkKSwgaW4gd2hp
Y2gKLSAgLy8gY2FzZSBwcmludGluZyBpdCBhcyBhbiBpbnRlZ2VyIGlzIHRoZSBkZXNpcmVkIGJl
aGF2aW9yLiAgSW4gY2FzZQotICAvLyBUIGlzIG5vdCBhbiBlbnVtLCBwcmludGluZyBpdCBhcyBh
biBpbnRlZ2VyIGlzIHRoZSBiZXN0IHdlIGNhbiBkbwotICAvLyBnaXZlbiB0aGF0IGl0IGhhcyBu
byB1c2VyLWRlZmluZWQgcHJpbnRlci4KLSAgc3RhdGljIHZvaWQgUHJpbnRWYWx1ZShjb25zdCBU
JiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgY29uc3QgaW50ZXJuYWw6OkJpZ2dl
c3RJbnQga0JpZ0ludCA9IHZhbHVlOwotICAgICpvcyA8PCBrQmlnSW50OwotICB9Ci19OwotCi0v
LyBQcmludHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBvc3RyZWFtLiAgSWYgdGhlIHZh
bHVlIGlzIGEKLS8vIHByb3RvY29sIG1lc3NhZ2UsIGl0cyBkZWJ1ZyBzdHJpbmcgaXMgcHJpbnRl
ZDsgaWYgaXQncyBhbiBlbnVtIG9yCi0vLyBvZiBhIHR5cGUgaW1wbGljaXRseSBjb252ZXJ0aWJs
ZSB0byBCaWdnZXN0SW50LCBpdCdzIHByaW50ZWQgYXMgYW4KLS8vIGludGVnZXI7IG90aGVyd2lz
ZSB0aGUgYnl0ZXMgaW4gdGhlIHZhbHVlIGFyZSBwcmludGVkLiAgVGhpcyBpcwotLy8gd2hhdCBV
bml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCgpIGRvZXMgd2hlbiBpdCBrbm93cyBub3RoaW5nIGFi
b3V0Ci0vLyB0eXBlIFQgYW5kIFQgaGFzIG5laXRoZXIgPDwgb3BlcmF0b3Igbm9yIFByaW50VG8o
KS4KLS8vCi0vLyBBIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3Mg
dHlwZSBGb28gYnkgZGVmaW5pbmcKLS8vIGEgPDwgb3BlcmF0b3IgaW4gdGhlIG5hbWVzcGFjZSB3
aGVyZSBGb28gaXMgZGVmaW5lZC4KLS8vCi0vLyBXZSBwdXQgdGhpcyBvcGVyYXRvciBpbiBuYW1l
c3BhY2UgJ2ludGVybmFsMicgaW5zdGVhZCBvZiAnaW50ZXJuYWwnCi0vLyB0byBzaW1wbGlmeSB0
aGUgaW1wbGVtZW50YXRpb24sIGFzIG11Y2ggY29kZSBpbiAnaW50ZXJuYWwnIG5lZWRzIHRvCi0v
LyB1c2UgPDwgaW4gU1RMLCB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIG91ciBvd24gPDwgd2Vy
ZSBpdCBkZWZpbmVkCi0vLyBpbiAnaW50ZXJuYWwnLgotLy8KLS8vIE5vdGUgdGhhdCB0aGlzIG9w
ZXJhdG9yPDwgdGFrZXMgYSBnZW5lcmljIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLAotLy8gQ2hh
clRyYWl0cz4gdHlwZSBpbnN0ZWFkIG9mIHRoZSBtb3JlIHJlc3RyaWN0ZWQgc3RkOjpvc3RyZWFt
LiAgSWYKLS8vIHdlIGRlZmluZSBpdCB0byB0YWtlIGFuIHN0ZDo6b3N0cmVhbSBpbnN0ZWFkLCB3
ZSdsbCBnZXQgYW4KLS8vICJhbWJpZ3VvdXMgb3ZlcmxvYWRzIiBjb21waWxlciBlcnJvciB3aGVu
IHRyeWluZyB0byBwcmludCBhIHR5cGUKLS8vIEZvbyB0aGF0IHN1cHBvcnRzIHN0cmVhbWluZyB0
byBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwKLS8vIENoYXJUcmFpdHM+LCBhcyB0aGUgY29tcGls
ZXIgY2Fubm90IHRlbGwgd2hldGhlcgotLy8gb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBjb25z
dCBUJikgb3IKLS8vIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19zdHJlYW08Q2hhciwgQ2hhclRyYWl0
cz4sIGNvbnN0IEZvbyYpIGlzIG1vcmUKLS8vIHNwZWNpZmljLgotdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Ci06OnN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3BlcmF0b3I8PCgKLSAgICA6OnN0ZDo6YmFzaWNfb3N0
cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHgpIHsKLSAgVHlwZVdpdGhvdXRG
b3JtYXR0ZXI8VCwKLSAgICAgIChpbnRlcm5hbDo6SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1
ZSA/IGtQcm90b2J1ZiA6Ci0gICAgICAgaW50ZXJuYWw6OkltcGxpY2l0bHlDb252ZXJ0aWJsZTxj
b25zdCBUJiwgaW50ZXJuYWw6OkJpZ2dlc3RJbnQ+Ojp2YWx1ZSA/Ci0gICAgICAga0NvbnZlcnRp
YmxlVG9JbnRlZ2VyIDoga090aGVyVHlwZSk+OjpQcmludFZhbHVlKHgsICZvcyk7Ci0gIHJldHVy
biBvczsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsMgotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKLQotLy8gVGhpcyBuYW1lc3BhY2UgTVVTVCBOT1QgQkUgTkVTVEVEIElOIDo6dGVzdGlu
Zywgb3IgdGhlIG5hbWUgbG9vay11cAotLy8gbWFnaWMgbmVlZGVkIGZvciBpbXBsZW1lbnRpbmcg
VW5pdmVyc2FsUHJpbnRlciB3b24ndCB3b3JrLgotbmFtZXNwYWNlIHRlc3RpbmdfaW50ZXJuYWwg
ewotCi0vLyBVc2VkIHRvIHByaW50IGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gU1RMLXN0eWxlIGNv
bnRhaW5lciB3aGVuIHRoZQotLy8gdXNlciBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludE5vbkNvbnRhaW5lclRv
KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgLy8gV2l0aCB0aGUgZm9s
bG93aW5nIHN0YXRlbWVudCwgZHVyaW5nIHVucXVhbGlmaWVkIG5hbWUgbG9va3VwLAotICAvLyB0
ZXN0aW5nOjppbnRlcm5hbDI6Om9wZXJhdG9yPDwgYXBwZWFycyBhcyBpZiBpdCB3YXMgZGVjbGFy
ZWQgaW4KLSAgLy8gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5z
IGJvdGgKLSAgLy8gOjp0ZXN0aW5nX2ludGVybmFsIGFuZCA6OnRlc3Rpbmc6OmludGVybmFsMiwg
aS5lLiB0aGUgZ2xvYmFsCi0gIC8vIG5hbWVzcGFjZS4gIEZvciBtb3JlIGRldGFpbHMsIHJlZmVy
IHRvIHRoZSBDKysgU3RhbmRhcmQgc2VjdGlvbgotICAvLyA3LjMuNC0xIFtuYW1lc3BhY2UudWRp
cl0uICBUaGlzIGFsbG93cyB1cyB0byBmYWxsIGJhY2sgb250bwotICAvLyB0ZXN0aW5nOjppbnRl
cm5hbDI6Om9wZXJhdG9yPDwgaW4gY2FzZSBUIGRvZXNuJ3QgY29tZSB3aXRoIGEgPDwKLSAgLy8g
b3BlcmF0b3IuCi0gIC8vCi0gIC8vIFdlIGNhbm5vdCB3cml0ZSAndXNpbmcgOjp0ZXN0aW5nOjpp
bnRlcm5hbDI6Om9wZXJhdG9yPDw7Jywgd2hpY2gKLSAgLy8gZ2NjIDMuMyBmYWlscyB0byBjb21w
aWxlIGR1ZSB0byBhIGNvbXBpbGVyIGJ1Zy4KLSAgdXNpbmcgbmFtZXNwYWNlIDo6dGVzdGluZzo6
aW50ZXJuYWwyOyAgLy8gTk9MSU5UCi0KLSAgLy8gQXNzdW1pbmcgVCBpcyBkZWZpbmVkIGluIG5h
bWVzcGFjZSBmb28sIGluIHRoZSBuZXh0IHN0YXRlbWVudCwKLSAgLy8gdGhlIGNvbXBpbGVyIHdp
bGwgY29uc2lkZXIgYWxsIG9mOgotICAvLwotICAvLyAgIDEuIGZvbzo6b3BlcmF0b3I8PCAodGhh
bmtzIHRvIEtvZW5pZyBsb29rLXVwKSwKLSAgLy8gICAyLiA6Om9wZXJhdG9yPDwgKGFzIHRoZSBj
dXJyZW50IG5hbWVzcGFjZSBpcyBlbmNsb3NlZCBpbiA6OiksCi0gIC8vICAgMy4gdGVzdGluZzo6
aW50ZXJuYWwyOjpvcGVyYXRvcjw8ICh0aGFua3MgdG8gdGhlIHVzaW5nIHN0YXRlbWVudCBhYm92
ZSkuCi0gIC8vCi0gIC8vIFRoZSBvcGVyYXRvcjw8IHdob3NlIHR5cGUgbWF0Y2hlcyBUIGJlc3Qg
d2lsbCBiZSBwaWNrZWQuCi0gIC8vCi0gIC8vIFdlIGRlbGliZXJhdGVseSBhbGxvdyAjMiB0byBi
ZSBhIGNhbmRpZGF0ZSwgYXMgc29tZXRpbWVzIGl0J3MKLSAgLy8gaW1wb3NzaWJsZSB0byBkZWZp
bmUgIzEgKGUuZy4gd2hlbiBmb28gaXMgOjpzdGQsIGRlZmluaW5nCi0gIC8vIGFueXRoaW5nIGlu
IGl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvciB1bmxlc3MgeW91IGFyZSBhIGNvbXBpbGVyCi0gIC8v
IHZlbmRvci4pLgotICAqb3MgPDwgdmFsdWU7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
X2ludGVybmFsCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0K
LS8vIEZvcm1hdEZvckNvbXBhcmlzb248VG9QcmludCwgT3RoZXJPcGVyYW5kPjo6Rm9ybWF0KHZh
bHVlKSBmb3JtYXRzIGEKLS8vIHZhbHVlIG9mIHR5cGUgVG9QcmludCB0aGF0IGlzIGFuIG9wZXJh
bmQgb2YgYSBjb21wYXJpc29uIGFzc2VydGlvbgotLy8gKGUuZy4gQVNTRVJUX0VRKS4gIE90aGVy
T3BlcmFuZCBpcyB0aGUgdHlwZSBvZiB0aGUgb3RoZXIgb3BlcmFuZCBpbgotLy8gdGhlIGNvbXBh
cmlzb24sIGFuZCBpcyB1c2VkIHRvIGhlbHAgZGV0ZXJtaW5lIHRoZSBiZXN0IHdheSB0bwotLy8g
Zm9ybWF0IHRoZSB2YWx1ZS4gIEluIHBhcnRpY3VsYXIsIHdoZW4gdGhlIHZhbHVlIGlzIGEgQyBz
dHJpbmcKLS8vIChjaGFyIHBvaW50ZXIpIGFuZCB0aGUgb3RoZXIgb3BlcmFuZCBpcyBhbiBTVEwg
c3RyaW5nIG9iamVjdCwgd2UKLS8vIHdhbnQgdG8gZm9ybWF0IHRoZSBDIHN0cmluZyBhcyBhIHN0
cmluZywgc2luY2Ugd2Uga25vdyBpdCBpcwotLy8gY29tcGFyZWQgYnkgdmFsdWUgd2l0aCB0aGUg
c3RyaW5nIG9iamVjdC4gIElmIHRoZSB2YWx1ZSBpcyBhIGNoYXIKLS8vIHBvaW50ZXIgYnV0IHRo
ZSBvdGhlciBvcGVyYW5kIGlzIG5vdCBhbiBTVEwgc3RyaW5nIG9iamVjdCwgd2UgZG9uJ3QKLS8v
IGtub3cgd2hldGhlciB0aGUgcG9pbnRlciBpcyBzdXBwb3NlZCB0byBwb2ludCB0byBhIE5VTC10
ZXJtaW5hdGVkCi0vLyBzdHJpbmcsIGFuZCB0aHVzIHdhbnQgdG8gcHJpbnQgaXQgYXMgYSBwb2lu
dGVyIHRvIGJlIHNhZmUuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1Qg
VVNFIElOIEEgVVNFUiBQUk9HUkFNLgotCi0vLyBUaGUgZGVmYXVsdCBjYXNlLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFRvUHJpbnQsIHR5cGVuYW1lIE90aGVyT3BlcmFuZD4KLWNsYXNzIEZvcm1hdEZv
ckNvbXBhcmlzb24gewotIHB1YmxpYzoKLSAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9ybWF0KGNv
bnN0IFRvUHJpbnQmIHZhbHVlKSB7Ci0gICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmlu
Zyh2YWx1ZSk7Ci0gIH0KLX07Ci0KLS8vIEFycmF5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFRvUHJp
bnQsIHNpemVfdCBOLCB0eXBlbmFtZSBPdGhlck9wZXJhbmQ+Ci1jbGFzcyBGb3JtYXRGb3JDb21w
YXJpc29uPFRvUHJpbnRbTl0sIE90aGVyT3BlcmFuZD4gewotIHB1YmxpYzoKLSAgc3RhdGljIDo6
c3RkOjpzdHJpbmcgRm9ybWF0KGNvbnN0IFRvUHJpbnQqIHZhbHVlKSB7Ci0gICAgcmV0dXJuIEZv
cm1hdEZvckNvbXBhcmlzb248Y29uc3QgVG9QcmludCosIE90aGVyT3BlcmFuZD46OkZvcm1hdCh2
YWx1ZSk7Ci0gIH0KLX07Ci0KLS8vIEJ5IGRlZmF1bHQsIHByaW50IEMgc3RyaW5nIGFzIHBvaW50
ZXJzIHRvIGJlIHNhZmUsIGFzIHdlIGRvbid0IGtub3cKLS8vIHdoZXRoZXIgdGhleSBhY3R1YWxs
eSBwb2ludCB0byBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KLQotI2RlZmluZSBHVEVTVF9JTVBM
X0ZPUk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyhDaGFyVHlwZSkgICAgICAgICAgICAgICAgXAot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3RoZXJPcGVyYW5kPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICBjbGFzcyBGb3JtYXRGb3JDb21wYXJpc29uPENoYXJUeXBlKiwg
T3RoZXJPcGVyYW5kPiB7ICAgICAgICAgICAgICAgICAgXAotICAgcHVibGljOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IHN0YXRpYyA6OnN0ZDo6c3RyaW5nIEZvcm1hdChDaGFyVHlwZSogdmFsdWUpIHsgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgcmV0dXJuIDo6dGVzdGluZzo6UHJpbnRUb1N0cmluZyhzdGF0
aWNfY2FzdDxjb25zdCB2b2lkKj4odmFsdWUpKTsgXAotICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0K
LUdURVNUX0lNUExfRk9STUFUX0NfU1RSSU5HX0FTX1BPSU5URVJfKGNoYXIpOwotR1RFU1RfSU1Q
TF9GT1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8oY29uc3QgY2hhcik7Ci1HVEVTVF9JTVBMX0ZP
Uk1BVF9DX1NUUklOR19BU19QT0lOVEVSXyh3Y2hhcl90KTsKLUdURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1BPSU5URVJfKGNvbnN0IHdjaGFyX3QpOwotCi0jdW5kZWYgR1RFU1RfSU1QTF9G
T1JNQVRfQ19TVFJJTkdfQVNfUE9JTlRFUl8KLQotLy8gSWYgYSBDIHN0cmluZyBpcyBjb21wYXJl
ZCB3aXRoIGFuIFNUTCBzdHJpbmcgb2JqZWN0LCB3ZSBrbm93IGl0J3MgbWVhbnQKLS8vIHRvIHBv
aW50IHRvIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLCBhbmQgdGh1cyBjYW4gcHJpbnQgaXQgYXMg
YSBzdHJpbmcuCi0KLSNkZWZpbmUgR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5H
XyhDaGFyVHlwZSwgT3RoZXJTdHJpbmdUeXBlKSBcCi0gIHRlbXBsYXRlIDw+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGNsYXNz
IEZvcm1hdEZvckNvbXBhcmlzb248Q2hhclR5cGUqLCBPdGhlclN0cmluZ1R5cGU+IHsgICAgICAg
ICAgICAgICBcCi0gICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIDo6c3RkOjpzdHJpbmcgRm9y
bWF0KENoYXJUeXBlKiB2YWx1ZSkgeyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXR1
cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0KLQotR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJ
TkdfQVNfU1RSSU5HXyhjaGFyLCA6OnN0ZDo6c3RyaW5nKTsKLUdURVNUX0lNUExfRk9STUFUX0Nf
U1RSSU5HX0FTX1NUUklOR18oY29uc3QgY2hhciwgOjpzdGQ6OnN0cmluZyk7Ci0KLSNpZiBHVEVT
VF9IQVNfR0xPQkFMX1NUUklORwotR1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5H
XyhjaGFyLCA6OnN0cmluZyk7Ci1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdf
KGNvbnN0IGNoYXIsIDo6c3RyaW5nKTsKLSNlbmRpZgotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9X
U1RSSU5HCi1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKHdjaGFyX3QsIDo6
d3N0cmluZyk7Ci1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdj
aGFyX3QsIDo6d3N0cmluZyk7Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwot
R1RFU1RfSU1QTF9GT1JNQVRfQ19TVFJJTkdfQVNfU1RSSU5HXyh3Y2hhcl90LCA6OnN0ZDo6d3N0
cmluZyk7Ci1HVEVTVF9JTVBMX0ZPUk1BVF9DX1NUUklOR19BU19TVFJJTkdfKGNvbnN0IHdjaGFy
X3QsIDo6c3RkOjp3c3RyaW5nKTsKLSNlbmRpZgotCi0jdW5kZWYgR1RFU1RfSU1QTF9GT1JNQVRf
Q19TVFJJTkdfQVNfU1RSSU5HXwotCi0vLyBGb3JtYXRzIGEgY29tcGFyaXNvbiBhc3NlcnRpb24g
KGUuZy4gQVNTRVJUX0VRLCBFWFBFQ1RfTFQsIGFuZCBldGMpCi0vLyBvcGVyYW5kIHRvIGJlIHVz
ZWQgaW4gYSBmYWlsdXJlIG1lc3NhZ2UuICBUaGUgdHlwZSAoYnV0IG5vdCB2YWx1ZSkKLS8vIG9m
IHRoZSBvdGhlciBvcGVyYW5kIG1heSBhZmZlY3QgdGhlIGZvcm1hdC4gIFRoaXMgYWxsb3dzIHVz
IHRvCi0vLyBwcmludCBhIGNoYXIqIGFzIGEgcmF3IHBvaW50ZXIgd2hlbiBpdCBpcyBjb21wYXJl
ZCBhZ2FpbnN0IGFub3RoZXIKLS8vIGNoYXIqIG9yIHZvaWQqLCBhbmQgcHJpbnQgaXQgYXMgYSBD
IHN0cmluZyB3aGVuIGl0IGlzIGNvbXBhcmVkCi0vLyBhZ2FpbnN0IGFuIHN0ZDo6c3RyaW5nIG9i
amVjdCwgZm9yIGV4YW1wbGUuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBO
T1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4KLXN0ZDo6c3RyaW5nIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgKLSAg
ICBjb25zdCBUMSYgdmFsdWUsIGNvbnN0IFQyJiAvKiBvdGhlcl9vcGVyYW5kICovKSB7Ci0gIHJl
dHVybiBGb3JtYXRGb3JDb21wYXJpc29uPFQxLCBUMj46OkZvcm1hdCh2YWx1ZSk7Ci19Ci0KLS8v
IFVuaXZlcnNhbFByaW50ZXI8VD46OlByaW50KHZhbHVlLCBvc3RyZWFtX3B0cikgcHJpbnRzIHRo
ZSBnaXZlbgotLy8gdmFsdWUgdG8gdGhlIGdpdmVuIG9zdHJlYW0uICBUaGUgY2FsbGVyIG11c3Qg
ZW5zdXJlIHRoYXQKLS8vICdvc3RyZWFtX3B0cicgaXMgbm90IE5VTEwsIG9yIHRoZSBiZWhhdmlv
ciBpcyB1bmRlZmluZWQuCi0vLwotLy8gV2UgZGVmaW5lIFVuaXZlcnNhbFByaW50ZXIgYXMgYSBj
bGFzcyB0ZW1wbGF0ZSAoYXMgb3Bwb3NlZCB0byBhCi0vLyBmdW5jdGlvbiB0ZW1wbGF0ZSksIGFz
IHdlIG5lZWQgdG8gcGFydGlhbGx5IHNwZWNpYWxpemUgaXQgZm9yCi0vLyByZWZlcmVuY2UgdHlw
ZXMsIHdoaWNoIGNhbm5vdCBiZSBkb25lIHdpdGggZnVuY3Rpb24gdGVtcGxhdGVzLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVbml2ZXJzYWxQcmludGVyOwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLXZvaWQgVW5pdmVyc2FsUHJpbnQoY29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3Ry
ZWFtKiBvcyk7Ci0KLWVudW0gRGVmYXVsdFByaW50ZXJUeXBlIHsKLSAga1ByaW50Q29udGFpbmVy
LAotICBrUHJpbnRQb2ludGVyLAotICBrUHJpbnRGdW5jdGlvblBvaW50ZXIsCi0gIGtQcmludE90
aGVyLAotfTsKLXRlbXBsYXRlIDxEZWZhdWx0UHJpbnRlclR5cGUgdHlwZT4gc3RydWN0IFdyYXBQ
cmludGVyVHlwZSB7fTsKLQotLy8gVXNlZCB0byBwcmludCBhbiBTVEwtc3R5bGUgY29udGFpbmVy
IHdoZW4gdGhlIHVzZXIgZG9lc24ndCBkZWZpbmUKLS8vIGEgUHJpbnRUbygpIGZvciBpdC4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBDPgotdm9pZCBEZWZhdWx0UHJpbnRUbyhXcmFwUHJpbnRlclR5cGU8
a1ByaW50Q29udGFpbmVyPiAvKiBkdW1teSAqLywKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QyYgY29udGFpbmVyLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgY29uc3Qgc2l6ZV90IGtNYXhD
b3VudCA9IDMyOyAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHByaW50Lgot
ICAqb3MgPDwgJ3snOwotICBzaXplX3QgY291bnQgPSAwOwotICBmb3IgKHR5cGVuYW1lIEM6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gY29udGFpbmVyLmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gY29udGFp
bmVyLmVuZCgpOyArK2l0LCArK2NvdW50KSB7Ci0gICAgaWYgKGNvdW50ID4gMCkgewotICAgICAg
Km9zIDw8ICcsJzsKLSAgICAgIGlmIChjb3VudCA9PSBrTWF4Q291bnQpIHsgIC8vIEVub3VnaCBo
YXMgYmVlbiBwcmludGVkLgotICAgICAgICAqb3MgPDwgIiAuLi4iOwotICAgICAgICBicmVhazsK
LSAgICAgIH0KLSAgICB9Ci0gICAgKm9zIDw8ICcgJzsKLSAgICAvLyBXZSBjYW5ub3QgY2FsbCBQ
cmludFRvKCppdCwgb3MpIGhlcmUgYXMgUHJpbnRUbygpIGRvZXNuJ3QKLSAgICAvLyBoYW5kbGUg
Kml0IGJlaW5nIGEgbmF0aXZlIGFycmF5LgotICAgIGludGVybmFsOjpVbml2ZXJzYWxQcmludCgq
aXQsIG9zKTsKLSAgfQotCi0gIGlmIChjb3VudCA+IDApIHsKLSAgICAqb3MgPDwgJyAnOwotICB9
Ci0gICpvcyA8PCAnfSc7Ci19Ci0KLS8vIFVzZWQgdG8gcHJpbnQgYSBwb2ludGVyIHRoYXQgaXMg
bmVpdGhlciBhIGNoYXIgcG9pbnRlciBub3IgYSBtZW1iZXIKLS8vIHBvaW50ZXIsIHdoZW4gdGhl
IHVzZXIgZG9lc24ndCBkZWZpbmUgUHJpbnRUbygpIGZvciBpdC4gIChBIG1lbWJlcgotLy8gdmFy
aWFibGUgcG9pbnRlciBvciBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlciBkb2Vzbid0IHJlYWxseSBw
b2ludCB0bwotLy8gYSBsb2NhdGlvbiBpbiB0aGUgYWRkcmVzcyBzcGFjZS4gIFRoZWlyIHJlcHJl
c2VudGF0aW9uIGlzCi0vLyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiAgVGhlcmVmb3JlIHRoZXkg
d2lsbCBiZSBwcmludGVkIGFzIHJhdwotLy8gYnl0ZXMuKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci12b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVyVHlwZTxrUHJpbnRQb2ludGVyPiAvKiBk
dW1teSAqLywKLSAgICAgICAgICAgICAgICAgICAgVCogcCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7
Ci0gIGlmIChwID09IE5VTEwpIHsKLSAgICAqb3MgPDwgIk5VTEwiOwotICB9IGVsc2UgewotICAg
IC8vIFQgaXMgbm90IGEgZnVuY3Rpb24gdHlwZS4gIFdlIGp1c3QgY2FsbCA8PCB0byBwcmludCBw
LAotICAgIC8vIHJlbHlpbmcgb24gQURMIHRvIHBpY2sgdXAgdXNlci1kZWZpbmVkIDw8IGZvciB0
aGVpciBwb2ludGVyCi0gICAgLy8gdHlwZXMsIGlmIGFueS4KLSAgICAqb3MgPDwgcDsKLSAgfQot
fQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVy
VHlwZTxrUHJpbnRGdW5jdGlvblBvaW50ZXI+IC8qIGR1bW15ICovLAotICAgICAgICAgICAgICAg
ICAgICBUKiBwLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgaWYgKHAgPT0gTlVMTCkgewotICAg
ICpvcyA8PCAiTlVMTCI7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gVCBpcyBhIGZ1bmN0aW9uIHR5cGUs
IHNvICcqb3MgPDwgcCcgZG9lc24ndCBkbyB3aGF0IHdlIHdhbnQKLSAgICAvLyAoaXQganVzdCBw
cmludHMgcCBhcyBib29sKS4gIFdlIHdhbnQgdG8gcHJpbnQgcCBhcyBhIGNvbnN0Ci0gICAgLy8g
dm9pZCouICBIb3dldmVyLCB3ZSBjYW5ub3QgY2FzdCBpdCB0byBjb25zdCB2b2lkKiBkaXJlY3Rs
eSwKLSAgICAvLyBldmVuIHVzaW5nIHJlaW50ZXJwcmV0X2Nhc3QsIGFzIGVhcmxpZXIgdmVyc2lv
bnMgb2YgZ2NjCi0gICAgLy8gKGUuZy4gMy40LjUpIGNhbm5vdCBjb21waWxlIHRoZSBjYXN0IHdo
ZW4gcCBpcyBhIGZ1bmN0aW9uCi0gICAgLy8gcG9pbnRlci4gIENhc3RpbmcgdG8gVUludDY0IGZp
cnN0IHNvbHZlcyB0aGUgcHJvYmxlbS4KLSAgICAqb3MgPDwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4oCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8aW50ZXJuYWw6OlVJbnQ2ND4ocCkp
OwotICB9Ci19Ci0KLS8vIFVzZWQgdG8gcHJpbnQgYSBub24tY29udGFpbmVyLCBub24tcG9pbnRl
ciB2YWx1ZSB3aGVuIHRoZSB1c2VyCi0vLyBkb2Vzbid0IGRlZmluZSBQcmludFRvKCkgZm9yIGl0
LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIERlZmF1bHRQcmludFRvKFdyYXBQcmludGVy
VHlwZTxrUHJpbnRPdGhlcj4gLyogZHVtbXkgKi8sCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgOjp0ZXN0aW5nX2ludGVybmFsOjpE
ZWZhdWx0UHJpbnROb25Db250YWluZXJUbyh2YWx1ZSwgb3MpOwotfQotCi0vLyBQcmludHMgdGhl
IGdpdmVuIHZhbHVlIHVzaW5nIHRoZSA8PCBvcGVyYXRvciBpZiBpdCBoYXMgb25lOwotLy8gb3Ro
ZXJ3aXNlIHByaW50cyB0aGUgYnl0ZXMgaW4gaXQuICBUaGlzIGlzIHdoYXQKLS8vIFVuaXZlcnNh
bFByaW50ZXI8VD46OlByaW50KCkgZG9lcyB3aGVuIFByaW50VG8oKSBpcyBub3Qgc3BlY2lhbGl6
ZWQKLS8vIG9yIG92ZXJsb2FkZWQgZm9yIHR5cGUgVC4KLS8vCi0vLyBBIHVzZXIgY2FuIG92ZXJy
aWRlIHRoaXMgYmVoYXZpb3IgZm9yIGEgY2xhc3MgdHlwZSBGb28gYnkgZGVmaW5pbmcKLS8vIGFu
IG92ZXJsb2FkIG9mIFByaW50VG8oKSBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIEZvbyBpcyBkZWZp
bmVkLiAgV2UKLS8vIGdpdmUgdGhlIHVzZXIgdGhpcyBvcHRpb24gYXMgc29tZXRpbWVzIGRlZmlu
aW5nIGEgPDwgb3BlcmF0b3IgZm9yCi0vLyBGb28gaXMgbm90IGRlc2lyYWJsZSAoZS5nLiB0aGUg
Y29kaW5nIHN0eWxlIG1heSBwcmV2ZW50IGRvaW5nIGl0LAotLy8gb3IgdGhlcmUgaXMgYWxyZWFk
eSBhIDw8IG9wZXJhdG9yIGJ1dCBpdCBkb2Vzbid0IGRvIHdoYXQgdGhlIHVzZXIKLS8vIHdhbnRz
KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBQcmludFRvKGNvbnN0IFQmIHZhbHVlLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgLy8gRGVmYXVsdFByaW50VG8oKSBpcyBvdmVybG9hZGVk
LiAgVGhlIHR5cGUgb2YgaXRzIGZpcnN0IGFyZ3VtZW50Ci0gIC8vIGRldGVybWluZXMgd2hpY2gg
dmVyc2lvbiB3aWxsIGJlIHBpY2tlZC4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IHdlIGNoZWNrIGZv
ciBjb250YWluZXIgdHlwZXMgaGVyZSwgcHJpb3IgdG8gd2UgY2hlY2sKLSAgLy8gZm9yIHByb3Rv
Y29sIG1lc3NhZ2UgdHlwZXMgaW4gb3VyIG9wZXJhdG9yPDwuICBUaGUgcmF0aW9uYWxlIGlzOgot
ICAvLwotICAvLyBGb3IgcHJvdG9jb2wgbWVzc2FnZXMsIHdlIHdhbnQgdG8gZ2l2ZSBwZW9wbGUg
YSBjaGFuY2UgdG8KLSAgLy8gb3ZlcnJpZGUgR29vZ2xlIE1vY2sncyBmb3JtYXQgYnkgZGVmaW5p
bmcgYSBQcmludFRvKCkgb3IKLSAgLy8gb3BlcmF0b3I8PC4gIEZvciBTVEwgY29udGFpbmVycywg
b3RoZXIgZm9ybWF0cyBjYW4gYmUKLSAgLy8gaW5jb21wYXRpYmxlIHdpdGggR29vZ2xlIE1vY2sn
cyBmb3JtYXQgZm9yIHRoZSBjb250YWluZXIKLSAgLy8gZWxlbWVudHM7IHRoZXJlZm9yZSB3ZSBj
aGVjayBmb3IgY29udGFpbmVyIHR5cGVzIGhlcmUgdG8gZW5zdXJlCi0gIC8vIHRoYXQgb3VyIGZv
cm1hdCBpcyB1c2VkLgotICAvLwotICAvLyBOb3RlIHRoYXQgTVNWQyBhbmQgY2xhbmctY2wgZG8g
YWxsb3cgYW4gaW1wbGljaXQgY29udmVyc2lvbiBmcm9tCi0gIC8vIHBvaW50ZXItdG8tZnVuY3Rp
b24gdG8gcG9pbnRlci10by1vYmplY3QsIGJ1dCBjbGFuZy1jbCB3YXJucyBvbiBpdC4KLSAgLy8g
U28gZG9uJ3QgdXNlIEltcGxpY2l0bHlDb252ZXJ0aWJsZSBpZiBpdCBjYW4gYmUgaGVscGVkIHNp
bmNlIGl0IHdpbGwKLSAgLy8gY2F1c2UgdGhpcyB3YXJuaW5nLCBhbmQgdXNlIGEgc2VwYXJhdGUg
b3ZlcmxvYWQgb2YgRGVmYXVsdFByaW50VG8gZm9yCi0gIC8vIGZ1bmN0aW9uIHBvaW50ZXJzIHNv
IHRoYXQgdGhlIGAqb3MgPDwgcGAgaW4gdGhlIG9iamVjdCBwb2ludGVyIG92ZXJsb2FkCi0gIC8v
IGRvZXNuJ3QgY2F1c2UgdGhhdCB3YXJuaW5nIGVpdGhlci4KLSAgRGVmYXVsdFByaW50VG8oCi0g
ICAgICBXcmFwUHJpbnRlclR5cGU8c2l6ZW9mKElzQ29udGFpbmVyVGVzdDxUPigwKSkgPT0gc2l6
ZW9mKElzQ29udGFpbmVyKQotICAgICAgICAgID8ga1ByaW50Q29udGFpbmVyIDogIWlzX3BvaW50
ZXI8VD46OnZhbHVlCi0gICAgICAgICAgICAgICAgPyBrUHJpbnRPdGhlcgotI2lmIEdURVNUX0xB
TkdfQ1hYMTEKLSAgICAgICAgICAgICAgICA6IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlCi0jZWxzZQotICAgICAgICAgICAgICAg
IDogIWludGVybmFsOjpJbXBsaWNpdGx5Q29udmVydGlibGU8VCwgY29uc3Qgdm9pZCo+Ojp2YWx1
ZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgPyBrUHJpbnRGdW5jdGlvblBvaW50ZXIK
LSAgICAgICAgICAgICAgICAgICAgICA6IGtQcmludFBvaW50ZXI+KCksCi0gICAgICB2YWx1ZSwg
b3MpOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgUHJpbnRUbygpIG92ZXJsb2FkcyB0
ZWxscwotLy8gVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQoKSBob3cgdG8gcHJpbnQgc3RhbmRh
cmQgdHlwZXMgKGJ1aWx0LWluCi0vLyB0eXBlcywgc3RyaW5ncywgcGxhaW4gYXJyYXlzLCBhbmQg
cG9pbnRlcnMpLgotCi0vLyBPdmVybG9hZHMgZm9yIHZhcmlvdXMgY2hhciB0eXBlcy4KLUdURVNU
X0FQSV8gdm9pZCBQcmludFRvKHVuc2lnbmVkIGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsK
LUdURVNUX0FQSV8gdm9pZCBQcmludFRvKHNpZ25lZCBjaGFyIGMsIDo6c3RkOjpvc3RyZWFtKiBv
cyk7Ci1pbmxpbmUgdm9pZCBQcmludFRvKGNoYXIgYywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0g
IC8vIFdoZW4gcHJpbnRpbmcgYSBwbGFpbiBjaGFyLCB3ZSBhbHdheXMgdHJlYXQgaXQgYXMgdW5z
aWduZWQuICBUaGlzCi0gIC8vIHdheSwgdGhlIG91dHB1dCB3b24ndCBiZSBhZmZlY3RlZCBieSB3
aGV0aGVyIHRoZSBjb21waWxlciB0aGlua3MKLSAgLy8gY2hhciBpcyBzaWduZWQgb3Igbm90Lgot
ICBQcmludFRvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpLCBvcyk7Ci19Ci0KLS8vIE92
ZXJsb2FkcyBmb3Igb3RoZXIgc2ltcGxlIGJ1aWx0LWluIHR5cGVzLgotaW5saW5lIHZvaWQgUHJp
bnRUbyhib29sIHgsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgKHggPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKLX0KLQotLy8gT3ZlcmxvYWQgZm9yIHdjaGFyX3QgdHlwZS4KLS8vIFByaW50
cyBhIHdjaGFyX3QgYXMgYSBzeW1ib2wgaWYgaXQgaXMgcHJpbnRhYmxlIG9yIGFzIGl0cyBpbnRl
cm5hbAotLy8gY29kZSBvdGhlcndpc2UgYW5kIGFsc28gYXMgaXRzIGRlY2ltYWwgY29kZSAoZXhj
ZXB0IGZvciBMJ1wwJykuCi0vLyBUaGUgTCdcMCcgY2hhciBpcyBwcmludGVkIGFzICJMJ1xcMCci
LiBUaGUgZGVjaW1hbCBjb2RlIGlzIHByaW50ZWQKLS8vIGFzIHNpZ25lZCBpbnRlZ2VyIHdoZW4g
d2NoYXJfdCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgY29tcGlsZXIKLS8vIGFzIGEgc2lnbmVkIHR5
cGUgYW5kIGlzIHByaW50ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciB3aGVuIHdjaGFyX3QKLS8v
IGlzIGltcGxlbWVudGVkIGFzIGFuIHVuc2lnbmVkIHR5cGUuCi1HVEVTVF9BUElfIHZvaWQgUHJp
bnRUbyh3Y2hhcl90IHdjLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotCi0vLyBPdmVybG9hZHMgZm9y
IEMgc3RyaW5ncy4KLUdURVNUX0FQSV8gdm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcyk7Ci1pbmxpbmUgdm9pZCBQcmludFRvKGNoYXIqIHMsIDo6c3RkOjpvc3Ry
ZWFtKiBvcykgewotICBQcmludFRvKEltcGxpY2l0Q2FzdF88Y29uc3QgY2hhcio+KHMpLCBvcyk7
Ci19Ci0KLS8vIHNpZ25lZC91bnNpZ25lZCBjaGFyIGlzIG9mdGVuIHVzZWQgZm9yIHJlcHJlc2Vu
dGluZyBiaW5hcnkgZGF0YSwgc28KLS8vIHdlIHByaW50IHBvaW50ZXJzIHRvIGl0IGFzIHZvaWQq
IHRvIGJlIHNhZmUuCi1pbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IHNpZ25lZCBjaGFyKiBzLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUbyhJbXBsaWNpdENhc3RfPGNvbnN0IHZvaWQq
PihzKSwgb3MpOwotfQotaW5saW5lIHZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciogcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyks
IG9zKTsKLX0KLWlubGluZSB2b2lkIFByaW50VG8oY29uc3QgdW5zaWduZWQgY2hhciogcywgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4o
cyksIG9zKTsKLX0KLWlubGluZSB2b2lkIFByaW50VG8odW5zaWduZWQgY2hhciogcywgOjpzdGQ6
Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VG8oSW1wbGljaXRDYXN0Xzxjb25zdCB2b2lkKj4ocyks
IG9zKTsKLX0KLQotLy8gTVNWQyBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2NoYXJfdCBh
cyBhIHR5cGVkZWYgb2YgdW5zaWduZWQKLS8vIHNob3J0LiAgSXQgZGVmaW5lcyBfTkFUSVZFX1dD
SEFSX1RfREVGSU5FRCB3aGVuIHdjaGFyX3QgaXMgYSBuYXRpdmUKLS8vIHR5cGUuICBXaGVuIHdj
aGFyX3QgaXMgYSB0eXBlZGVmLCBkZWZpbmluZyBhbiBvdmVybG9hZCBmb3IgY29uc3QKLS8vIHdj
aGFyX3QqIHdvdWxkIGNhdXNlIHVuc2lnbmVkIHNob3J0KiBiZSBwcmludGVkIGFzIGEgd2lkZSBz
dHJpbmcsCi0vLyBwb3NzaWJseSBjYXVzaW5nIGludmFsaWQgbWVtb3J5IGFjY2Vzc2VzLgotI2lm
ICFkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQot
Ly8gT3ZlcmxvYWRzIGZvciB3aWRlIEMgc3RyaW5ncwotR1RFU1RfQVBJXyB2b2lkIFByaW50VG8o
Y29uc3Qgd2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLWlubGluZSB2b2lkIFByaW50
VG8od2NoYXJfdCogcywgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50VG8oSW1wbGljaXRD
YXN0Xzxjb25zdCB3Y2hhcl90Kj4ocyksIG9zKTsKLX0KLSNlbmRpZgotCi0vLyBPdmVybG9hZCBm
b3IgQyBhcnJheXMuICBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHByaW50ZWQKLS8vIHBy
b3Blcmx5LgotCi0vLyBQcmludHMgdGhlIGdpdmVuIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBh
cnJheSwgd2l0aG91dCBwcmludGluZwotLy8gdGhlIGN1cmx5IGJyYWNlcy4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotdm9pZCBQcmludFJhd0FycmF5VG8oY29uc3QgVCBhW10sIHNpemVfdCBjb3Vu
dCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFVuaXZlcnNhbFByaW50KGFbMF0sIG9zKTsKLSAg
Zm9yIChzaXplX3QgaSA9IDE7IGkgIT0gY291bnQ7IGkrKykgewotICAgICpvcyA8PCAiLCAiOwot
ICAgIFVuaXZlcnNhbFByaW50KGFbaV0sIG9zKTsKLSAgfQotfQotCi0vLyBPdmVybG9hZHMgZm9y
IDo6c3RyaW5nIGFuZCA6OnN0ZDo6c3RyaW5nLgotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci1HVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdUbyhjb25zdCA6OnN0cmluZyZzLCA6OnN0ZDo6
b3N0cmVhbSogb3MpOwotaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OnN0cmluZyYgcywgOjpz
dGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50U3RyaW5nVG8ocywgb3MpOwotfQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi1HVEVTVF9BUElfIHZvaWQgUHJpbnRTdHJpbmdU
byhjb25zdCA6OnN0ZDo6c3RyaW5nJnMsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci1pbmxpbmUgdm9p
ZCBQcmludFRvKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewot
ICBQcmludFN0cmluZ1RvKHMsIG9zKTsKLX0KLQotLy8gT3ZlcmxvYWRzIGZvciA6OndzdHJpbmcg
YW5kIDo6c3RkOjp3c3RyaW5nLgotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotR1RFU1Rf
QVBJXyB2b2lkIFByaW50V2lkZVN0cmluZ1RvKGNvbnN0IDo6d3N0cmluZyZzLCA6OnN0ZDo6b3N0
cmVhbSogb3MpOwotaW5saW5lIHZvaWQgUHJpbnRUbyhjb25zdCA6OndzdHJpbmcmIHMsIDo6c3Rk
Ojpvc3RyZWFtKiBvcykgewotICBQcmludFdpZGVTdHJpbmdUbyhzLCBvcyk7Ci19Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5H
Ci1HVEVTVF9BUElfIHZvaWQgUHJpbnRXaWRlU3RyaW5nVG8oY29uc3QgOjpzdGQ6OndzdHJpbmcm
cywgOjpzdGQ6Om9zdHJlYW0qIG9zKTsKLWlubGluZSB2b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OndzdHJpbmcmIHMsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFdpZGVTdHJpbmdUbyhz
LCBvcyk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0jaWYgR1RFU1Rf
SEFTX1RSMV9UVVBMRSB8fCBHVEVTVF9IQVNfU1REX1RVUExFXwotLy8gSGVscGVyIGZ1bmN0aW9u
IGZvciBwcmludGluZyBhIHR1cGxlLiAgVCBtdXN0IGJlIGluc3RhbnRpYXRlZCB3aXRoCi0vLyBh
IHR1cGxlIHR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUHJpbnRUdXBsZVRvKGNv
bnN0IFQmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcyk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFf
VFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotI2lmIEdURVNUX0hBU19UUjFfVFVQTEUK
LS8vIE92ZXJsb2FkIGZvciA6OnN0ZDo6dHIxOjp0dXBsZS4gIE5lZWRlZCBmb3IgcHJpbnRpbmcg
ZnVuY3Rpb24gYXJndW1lbnRzLAotLy8gd2hpY2ggYXJlIHBhY2tlZCBhcyB0dXBsZXMuCi0KLS8v
IE92ZXJsb2FkZWQgUHJpbnRUbygpIGZvciB0dXBsZXMgb2YgdmFyaW91cyBhcml0aWVzLiAgV2Ug
c3VwcG9ydAotLy8gdHVwbGVzIG9mIHVwLXRvIDEwIGZpZWxkcy4gIFRoZSBmb2xsb3dpbmcgaW1w
bGVtZW50YXRpb24gd29ya3MKLS8vIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0cjE6OnR1cGxlIGlz
IGltcGxlbWVudGVkIHVzaW5nIHRoZQotLy8gbm9uLXN0YW5kYXJkIHZhcmlhZGljIHRlbXBsYXRl
IGZlYXR1cmUgb3Igbm90LgotCi1pbmxpbmUgdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6
OnR1cGxlPD4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3Mp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDE+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRv
KHQsIG9zKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXZvaWQg
UHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDI+JiB0LCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQsIG9zKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6
OnRyMTo6dHVwbGU8VDEsIFQyLCBUMz4mIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmlu
dFR1cGxlVG8odCwgb3MpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnRy
MTo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJp
bnRUdXBsZVRvKHQsIG9zKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLXZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+JiB0LAotICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2Pgotdm9pZCBQcmludFRvKGNv
bnN0IDo6c3RkOjp0cjE6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+JiB0LAotICAgICAg
ICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4K
LXZvaWQgUHJpbnRUbyhjb25zdCA6OnN0ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNz4mIHQsCi0gICAgICAgICAgICAgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gIFByaW50
VHVwbGVUbyh0LCBvcyk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgICAgICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLXZvaWQgUHJpbnRUbyhjb25zdCA6OnN0
ZDo6dHIxOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+JiB0LAotICAgICAg
ICAgICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgotdm9pZCBQcmludFRvKGNvbnN0IDo6c3RkOjp0cjE6
OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiB0LAotICAgICAgICAg
ICAgIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICBQcmludFR1cGxlVG8odCwgb3MpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlw
ZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci12b2lkIFByaW50VG8oCi0gICAg
Y29uc3QgOjpzdGQ6OnRyMTo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwPiYgdCwKLSAgICA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRUdXBsZVRvKHQs
IG9zKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9UVVBMRQotCi0jaWYgR1RFU1RfSEFT
X1NURF9UVVBMRV8KLXRlbXBsYXRlIDx0eXBlbmFtZS4uLiBUeXBlcz4KLXZvaWQgUHJpbnRUbyhj
b25zdCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+JiB0LCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
UHJpbnRUdXBsZVRvKHQsIG9zKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8K
LQotLy8gT3ZlcmxvYWQgZm9yIHN0ZDo6cGFpci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDI+Ci12b2lkIFByaW50VG8oY29uc3QgOjpzdGQ6OnBhaXI8VDEsIFQyPiYgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAqb3MgPDwgJygnOwotICAvLyBXZSBjYW5ub3QgdXNl
IFVuaXZlcnNhbFByaW50KHZhbHVlLmZpcnN0LCBvcykgaGVyZSwgYXMgVDEgbWF5IGJlCi0gIC8v
IGEgcmVmZXJlbmNlIHR5cGUuICBUaGUgc2FtZSBmb3IgcHJpbnRpbmcgdmFsdWUuc2Vjb25kLgot
ICBVbml2ZXJzYWxQcmludGVyPFQxPjo6UHJpbnQodmFsdWUuZmlyc3QsIG9zKTsKLSAgKm9zIDw8
ICIsICI7Ci0gIFVuaXZlcnNhbFByaW50ZXI8VDI+OjpQcmludCh2YWx1ZS5zZWNvbmQsIG9zKTsK
LSAgKm9zIDw8ICcpJzsKLX0KLQotLy8gSW1wbGVtZW50cyBwcmludGluZyBhIG5vbi1yZWZlcmVu
Y2UgdHlwZSBUIGJ5IGxldHRpbmcgdGhlIGNvbXBpbGVyCi0vLyBwaWNrIHRoZSByaWdodCBvdmVy
bG9hZCBvZiBQcmludFRvKCkgZm9yIFQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFVu
aXZlcnNhbFByaW50ZXIgewotIHB1YmxpYzoKLSAgLy8gTVNWQyB3YXJucyBhYm91dCBhZGRpbmcg
Y29uc3QgdG8gYSBmdW5jdGlvbiB0eXBlLCBzbyB3ZSB3YW50IHRvCi0gIC8vIGRpc2FibGUgdGhl
IHdhcm5pbmcuCi0gIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hfKDQxODApCi0KLSAg
Ly8gTm90ZTogd2UgZGVsaWJlcmF0ZWx5IGRvbid0IGNhbGwgdGhpcyBQcmludFRvKCksIGFzIHRo
YXQgbmFtZQotICAvLyBjb25mbGljdHMgd2l0aCA6OnRlc3Rpbmc6OmludGVybmFsOjpQcmludFRv
IGluIHRoZSBib2R5IG9mIHRoZQotICAvLyBmdW5jdGlvbi4KLSAgc3RhdGljIHZvaWQgUHJpbnQo
Y29uc3QgVCYgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAgIC8vIEJ5IGRlZmF1bHQs
IDo6dGVzdGluZzo6aW50ZXJuYWw6OlByaW50VG8oKSBpcyB1c2VkIGZvciBwcmludGluZwotICAg
IC8vIHRoZSB2YWx1ZS4KLSAgICAvLwotICAgIC8vIFRoYW5rcyB0byBLb2VuaWcgbG9vay11cCwg
aWYgVCBpcyBhIGNsYXNzIGFuZCBoYXMgaXRzIG93bgotICAgIC8vIFByaW50VG8oKSBmdW5jdGlv
biBkZWZpbmVkIGluIGl0cyBuYW1lc3BhY2UsIHRoYXQgZnVuY3Rpb24gd2lsbAotICAgIC8vIGJl
IHZpc2libGUgaGVyZS4gIFNpbmNlIGl0IGlzIG1vcmUgc3BlY2lmaWMgdGhhbiB0aGUgZ2VuZXJp
YyBvbmVzCi0gICAgLy8gaW4gOjp0ZXN0aW5nOjppbnRlcm5hbCwgaXQgd2lsbCBiZSBwaWNrZWQg
YnkgdGhlIGNvbXBpbGVyIGluIHRoZQotICAgIC8vIGZvbGxvd2luZyBzdGF0ZW1lbnQgLSBleGFj
dGx5IHdoYXQgd2Ugd2FudC4KLSAgICBQcmludFRvKHZhbHVlLCBvcyk7Ci0gIH0KLQotICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLX07Ci0KLS8vIFVuaXZlcnNhbFByaW50QXJy
YXkoYmVnaW4sIGxlbiwgb3MpIHByaW50cyBhbiBhcnJheSBvZiAnbGVuJwotLy8gZWxlbWVudHMs
IHN0YXJ0aW5nIGF0IGFkZHJlc3MgJ2JlZ2luJy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9p
ZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IFQqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6
b3N0cmVhbSogb3MpIHsKLSAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgKm9zIDw8ICJ7fSI7Ci0gIH0g
ZWxzZSB7Ci0gICAgKm9zIDw8ICJ7ICI7Ci0gICAgY29uc3Qgc2l6ZV90IGtUaHJlc2hvbGQgPSAx
ODsKLSAgICBjb25zdCBzaXplX3Qga0NodW5rU2l6ZSA9IDg7Ci0gICAgLy8gSWYgdGhlIGFycmF5
IGhhcyBtb3JlIHRoYW4ga1RocmVzaG9sZCBlbGVtZW50cywgd2UnbGwgaGF2ZSB0bwotICAgIC8v
IG9taXQgc29tZSBkZXRhaWxzIGJ5IHByaW50aW5nIG9ubHkgdGhlIGZpcnN0IGFuZCB0aGUgbGFz
dAotICAgIC8vIGtDaHVua1NpemUgZWxlbWVudHMuCi0gICAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNv
bSk6IGxldCB0aGUgdXNlciBjb250cm9sIHRoZSB0aHJlc2hvbGQgdXNpbmcgYSBmbGFnLgotICAg
IGlmIChsZW4gPD0ga1RocmVzaG9sZCkgewotICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBs
ZW4sIG9zKTsKLSAgICB9IGVsc2UgewotICAgICAgUHJpbnRSYXdBcnJheVRvKGJlZ2luLCBrQ2h1
bmtTaXplLCBvcyk7Ci0gICAgICAqb3MgPDwgIiwgLi4uLCAiOwotICAgICAgUHJpbnRSYXdBcnJh
eVRvKGJlZ2luICsgbGVuIC0ga0NodW5rU2l6ZSwga0NodW5rU2l6ZSwgb3MpOwotICAgIH0KLSAg
ICAqb3MgPDwgIiB9IjsKLSAgfQotfQotLy8gVGhpcyBvdmVybG9hZCBwcmludHMgYSAoY29uc3Qp
IGNoYXIgYXJyYXkgY29tcGFjdGx5LgotR1RFU1RfQVBJXyB2b2lkIFVuaXZlcnNhbFByaW50QXJy
YXkoCi0gICAgY29uc3QgY2hhciogYmVnaW4sIHNpemVfdCBsZW4sIDo6c3RkOjpvc3RyZWFtKiBv
cyk7Ci0KLS8vIFRoaXMgb3ZlcmxvYWQgcHJpbnRzIGEgKGNvbnN0KSB3Y2hhcl90IGFycmF5IGNv
bXBhY3RseS4KLUdURVNUX0FQSV8gdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KAotICAgIGNvbnN0
IHdjaGFyX3QqIGJlZ2luLCBzaXplX3QgbGVuLCA6OnN0ZDo6b3N0cmVhbSogb3MpOwotCi0vLyBJ
bXBsZW1lbnRzIHByaW50aW5nIGFuIGFycmF5IHR5cGUgVFtOXS4KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgTj4KLWNsYXNzIFVuaXZlcnNhbFByaW50ZXI8VFtOXT4gewotIHB1YmxpYzoK
LSAgLy8gUHJpbnRzIHRoZSBnaXZlbiBhcnJheSwgb21pdHRpbmcgc29tZSBlbGVtZW50cyB3aGVu
IHRoZXJlIGFyZSB0b28KLSAgLy8gbWFueS4KLSAgc3RhdGljIHZvaWQgUHJpbnQoY29uc3QgVCAo
JmEpW05dLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgICBVbml2ZXJzYWxQcmludEFycmF5KGEs
IE4sIG9zKTsKLSAgfQotfTsKLQotLy8gSW1wbGVtZW50cyBwcmludGluZyBhIHJlZmVyZW5jZSB0
eXBlIFQmLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVbml2ZXJzYWxQcmludGVyPFQm
PiB7Ci0gcHVibGljOgotICAvLyBNU1ZDIHdhcm5zIGFib3V0IGFkZGluZyBjb25zdCB0byBhIGZ1
bmN0aW9uIHR5cGUsIHNvIHdlIHdhbnQgdG8KLSAgLy8gZGlzYWJsZSB0aGUgd2FybmluZy4KLSAg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDE4MCkKLQotICBzdGF0aWMgdm9pZCBQ
cmludChjb25zdCBUJiB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgLy8gUHJpbnRz
IHRoZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZS4gIFdlIHVzZSByZWludGVycHJldF9jYXN0IGhlcmUK
LSAgICAvLyBhcyBzdGF0aWNfY2FzdCBkb2Vzbid0IGNvbXBpbGUgd2hlbiBUIGlzIGEgZnVuY3Rp
b24gdHlwZS4KLSAgICAqb3MgPDwgIkAiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KCZ2YWx1ZSkgPDwgIiAiOwotCi0gICAgLy8gVGhlbiBwcmludHMgdGhlIHZhbHVlIGl0c2VsZi4K
LSAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOwotICB9Ci0KLSAgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUE9QXygpCi19OwotCi0vLyBQcmludHMgYSB2YWx1ZSB0ZXJzZWx5OiBmb3Ig
YSByZWZlcmVuY2UgdHlwZSwgdGhlIHJlZmVyZW5jZWQgdmFsdWUKLS8vIChidXQgbm90IHRoZSBh
ZGRyZXNzKSBpcyBwcmludGVkOyBmb3IgYSAoY29uc3QpIGNoYXIgcG9pbnRlciwgdGhlCi0vLyBO
VUwtdGVybWluYXRlZCBzdHJpbmcgKGJ1dCBub3QgdGhlIHBvaW50ZXIpIGlzIHByaW50ZWQuCi0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyIHsKLSBw
dWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVh
bSogb3MpIHsKLSAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOwotICB9Ci19OwotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8VCY+IHsKLSBwdWJs
aWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSog
b3MpIHsKLSAgICBVbml2ZXJzYWxQcmludCh2YWx1ZSwgb3MpOwotICB9Ci19OwotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHNpemVfdCBOPgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmludGVyPFRbTl0+
IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNvbnN0IFQgKCZ2YWx1ZSlbTl0sIDo6
c3RkOjpvc3RyZWFtKiBvcykgewotICAgIFVuaXZlcnNhbFByaW50ZXI8VFtOXT46OlByaW50KHZh
bHVlLCBvcyk7Ci0gIH0KLX07Ci10ZW1wbGF0ZSA8PgotY2xhc3MgVW5pdmVyc2FsVGVyc2VQcmlu
dGVyPGNvbnN0IGNoYXIqPiB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBQcmludChjb25zdCBj
aGFyKiBzdHIsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAgIGlmIChzdHIgPT0gTlVMTCkgewot
ICAgICAgKm9zIDw8ICJOVUxMIjsKLSAgICB9IGVsc2UgewotICAgICAgVW5pdmVyc2FsUHJpbnQo
c3RkOjpzdHJpbmcoc3RyKSwgb3MpOwotICAgIH0KLSAgfQotfTsKLXRlbXBsYXRlIDw+Ci1jbGFz
cyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8Y2hhcio+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lk
IFByaW50KGNoYXIqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgVW5pdmVyc2FsVGVy
c2VQcmludGVyPGNvbnN0IGNoYXIqPjo6UHJpbnQoc3RyLCBvcyk7Ci0gIH0KLX07Ci0KLSNpZiBH
VEVTVF9IQVNfU1REX1dTVFJJTkcKLXRlbXBsYXRlIDw+Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVBy
aW50ZXI8Y29uc3Qgd2NoYXJfdCo+IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KGNv
bnN0IHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICAgaWYgKHN0ciA9PSBO
VUxMKSB7Ci0gICAgICAqb3MgPDwgIk5VTEwiOwotICAgIH0gZWxzZSB7Ci0gICAgICBVbml2ZXJz
YWxQcmludCg6OnN0ZDo6d3N0cmluZyhzdHIpLCBvcyk7Ci0gICAgfQotICB9Ci19OwotI2VuZGlm
Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBVbml2ZXJzYWxUZXJzZVByaW50ZXI8d2NoYXJfdCo+IHsK
LSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFByaW50KHdjaGFyX3QqIHN0ciwgOjpzdGQ6Om9zdHJl
YW0qIG9zKSB7Ci0gICAgVW5pdmVyc2FsVGVyc2VQcmludGVyPGNvbnN0IHdjaGFyX3QqPjo6UHJp
bnQoc3RyLCBvcyk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBVbml2
ZXJzYWxUZXJzZVByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
VW5pdmVyc2FsVGVyc2VQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3MpOwotfQotCi0vLyBQcmlu
dHMgYSB2YWx1ZSB1c2luZyB0aGUgdHlwZSBpbmZlcnJlZCBieSB0aGUgY29tcGlsZXIuICBUaGUK
LS8vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCBVbml2ZXJzYWxUZXJzZVByaW50KCkgaXMg
dGhhdCBmb3IgYQotLy8gKGNvbnN0KSBjaGFyIHBvaW50ZXIsIHRoaXMgcHJpbnRzIGJvdGggdGhl
IHBvaW50ZXIgYW5kIHRoZQotLy8gTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLgotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci12b2lkIFVuaXZlcnNhbFByaW50KGNvbnN0IFQmIHZhbHVlLCA6OnN0ZDo6b3N0
cmVhbSogb3MpIHsKLSAgLy8gQSB3b3JrYXJvbmQgZm9yIHRoZSBidWcgaW4gVkMrKyA3LjEgdGhh
dCBwcmV2ZW50cyB1cyBmcm9tIGluc3RhbnRpYXRpbmcKLSAgLy8gVW5pdmVyc2FsUHJpbnRlciB3
aXRoIFQgZGlyZWN0bHkuCi0gIHR5cGVkZWYgVCBUMTsKLSAgVW5pdmVyc2FsUHJpbnRlcjxUMT46
OlByaW50KHZhbHVlLCBvcyk7Ci19Ci0KLXR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxzdHJpbmc+IFN0
cmluZ3M7Ci0KLS8vIFR1cGxlUG9saWN5PFR1cGxlVD4gbXVzdCBwcm92aWRlOgotLy8gLSB0dXBs
ZV9zaXplCi0vLyAgICAgc2l6ZSBvZiB0dXBsZSBUdXBsZVQuCi0vLyAtIGdldDxzaXplX3QgST4o
Y29uc3QgVHVwbGVUJiB0KQotLy8gICAgIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0aW5nIGVsZW1l
bnQgSSBvZiB0dXBsZSBUdXBsZVQuCi0vLyAtIHR1cGxlX2VsZW1lbnQ8c2l6ZV90IEk+Ojp0eXBl
Ci0vLyAgICAgdHlwZSBvZiBlbGVtZW50IEkgb2YgdHVwbGUgVHVwbGVULgotdGVtcGxhdGUgPHR5
cGVuYW1lIFR1cGxlVD4KLXN0cnVjdCBUdXBsZVBvbGljeTsKLQotI2lmIEdURVNUX0hBU19UUjFf
VFVQTEUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZVQ+Ci1zdHJ1Y3QgVHVwbGVQb2xpY3kgewot
ICB0eXBlZGVmIFR1cGxlVCBUdXBsZTsKLSAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9zaXpl
ID0gOjpzdGQ6OnRyMTo6dHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlOwotCi0gIHRlbXBsYXRlIDxz
aXplX3QgST4KLSAgc3RydWN0IHR1cGxlX2VsZW1lbnQgOiA6OnN0ZDo6dHIxOjp0dXBsZV9lbGVt
ZW50PEksIFR1cGxlPiB7fTsKLQotICB0ZW1wbGF0ZSA8c2l6ZV90IEk+Ci0gIHN0YXRpYyB0eXBl
bmFtZSBBZGRSZWZlcmVuY2U8Ci0gICAgICBjb25zdCB0eXBlbmFtZSA6OnN0ZDo6dHIxOjp0dXBs
ZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZT46OnR5cGUgZ2V0KAotICAgICAgY29uc3QgVHVwbGUm
IHR1cGxlKSB7Ci0gICAgcmV0dXJuIDo6c3RkOjp0cjE6OmdldDxJPih0dXBsZSk7Ci0gIH0KLX07
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGVUPgotY29uc3Qgc2l6ZV90IFR1cGxlUG9saWN5PFR1
cGxlVD46OnR1cGxlX3NpemU7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKLQotI2lm
IEdURVNUX0hBU19TVERfVFVQTEVfCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gVHlwZXM+Ci1zdHJ1
Y3QgVHVwbGVQb2xpY3k8IDo6c3RkOjp0dXBsZTxUeXBlcy4uLj4gPiB7Ci0gIHR5cGVkZWYgOjpz
dGQ6OnR1cGxlPFR5cGVzLi4uPiBUdXBsZTsKLSAgc3RhdGljIGNvbnN0IHNpemVfdCB0dXBsZV9z
aXplID0gOjpzdGQ6OnR1cGxlX3NpemU8VHVwbGU+Ojp2YWx1ZTsKLQotICB0ZW1wbGF0ZSA8c2l6
ZV90IEk+Ci0gIHN0cnVjdCB0dXBsZV9lbGVtZW50IDogOjpzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwg
VHVwbGU+IHt9OwotCi0gIHRlbXBsYXRlIDxzaXplX3QgST4KLSAgc3RhdGljIGNvbnN0IHR5cGVu
YW1lIDo6c3RkOjp0dXBsZV9lbGVtZW50PEksIFR1cGxlPjo6dHlwZSYgZ2V0KAotICAgICAgY29u
c3QgVHVwbGUmIHR1cGxlKSB7Ci0gICAgcmV0dXJuIDo6c3RkOjpnZXQ8ST4odHVwbGUpOwotICB9
Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIFR5cGVzPgotY29uc3Qgc2l6ZV90IFR1cGxlUG9s
aWN5PCA6OnN0ZDo6dHVwbGU8VHlwZXMuLi4+ID46OnR1cGxlX3NpemU7Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfVFVQTEVfCi0KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hB
U19TVERfVFVQTEVfCi0vLyBUaGlzIGhlbHBlciB0ZW1wbGF0ZSBhbGxvd3MgUHJpbnRUbygpIGZv
ciB0dXBsZXMgYW5kCi0vLyBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3Mo
KSB0byBiZSBkZWZpbmVkIGJ5Ci0vLyBpbmR1Y3Rpb24gb24gdGhlIG51bWJlciBvZiB0dXBsZSBm
aWVsZHMuICBUaGUgaWRlYSBpcyB0aGF0Ci0vLyBUdXBsZVByZWZpeFByaW50ZXI8Tj46OlByaW50
UHJlZml4VG8odCwgb3MpIHByaW50cyB0aGUgZmlyc3QgTgotLy8gZmllbGRzIGluIHR1cGxlIHQs
IGFuZCBjYW4gYmUgZGVmaW5lZCBpbiB0ZXJtcyBvZgotLy8gVHVwbGVQcmVmaXhQcmludGVyPE4g
LSAxPi4KLS8vCi0vLyBUaGUgaW5kdWN0aXZlIGNhc2UuCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1z
dHJ1Y3QgVHVwbGVQcmVmaXhQcmludGVyIHsKLSAgLy8gUHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxk
cyBvZiBhIHR1cGxlLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIHN0YXRpYyB2b2lk
IFByaW50UHJlZml4VG8oY29uc3QgVHVwbGUmIHQsIDo6c3RkOjpvc3RyZWFtKiBvcykgewotICAg
IFR1cGxlUHJlZml4UHJpbnRlcjxOIC0gMT46OlByaW50UHJlZml4VG8odCwgb3MpOwotICAgIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQotICAgIGlmIChOID4gMSkgewotICAg
IEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpCi0gICAgICAqb3MgPDwgIiwgIjsK
LSAgICB9Ci0gICAgVW5pdmVyc2FsUHJpbnRlcjwKLSAgICAgICAgdHlwZW5hbWUgVHVwbGVQb2xp
Y3k8VHVwbGU+Ojp0ZW1wbGF0ZSB0dXBsZV9lbGVtZW50PE4gLSAxPjo6dHlwZT4KLSAgICAgICAg
OjpQcmludChUdXBsZVBvbGljeTxUdXBsZT46OnRlbXBsYXRlIGdldDxOIC0gMT4odCksIG9zKTsK
LSAgfQotCi0gIC8vIFRlcnNlbHkgcHJpbnRzIHRoZSBmaXJzdCBOIGZpZWxkcyBvZiBhIHR1cGxl
IHRvIGEgc3RyaW5nIHZlY3RvciwKLSAgLy8gb25lIGVsZW1lbnQgZm9yIGVhY2ggZmllbGQuCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KLSAgc3RhdGljIHZvaWQgVGVyc2VQcmludFByZWZp
eFRvU3RyaW5ncyhjb25zdCBUdXBsZSYgdCwgU3RyaW5ncyogc3RyaW5ncykgewotICAgIFR1cGxl
UHJlZml4UHJpbnRlcjxOIC0gMT46OlRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3ModCwgc3RyaW5n
cyk7Ci0gICAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgICBVbml2ZXJzYWxUZXJzZVByaW50
KFR1cGxlUG9saWN5PFR1cGxlPjo6dGVtcGxhdGUgZ2V0PE4gLSAxPih0KSwgJnNzKTsKLSAgICBz
dHJpbmdzLT5wdXNoX2JhY2soc3Muc3RyKCkpOwotICB9Ci19OwotCi0vLyBCYXNlIGNhc2UuCi10
ZW1wbGF0ZSA8Pgotc3RydWN0IFR1cGxlUHJlZml4UHJpbnRlcjwwPiB7Ci0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBUdXBsZT4KLSAgc3RhdGljIHZvaWQgUHJpbnRQcmVmaXhUbyhjb25zdCBUdXBsZSYs
IDo6c3RkOjpvc3RyZWFtKikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci0gIHN0
YXRpYyB2b2lkIFRlcnNlUHJpbnRQcmVmaXhUb1N0cmluZ3MoY29uc3QgVHVwbGUmLCBTdHJpbmdz
Kikge30KLX07Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgYSB0dXBsZS4KLS8v
IFR1cGxlIG11c3QgYmUgZWl0aGVyIHN0ZDo6dHIxOjp0dXBsZSBvciBzdGQ6OnR1cGxlIHR5cGUu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHVwbGU+Ci12b2lkIFByaW50VHVwbGVUbyhjb25zdCBUdXBs
ZSYgdCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCAiKCI7Ci0gIFR1cGxlUHJlZml4
UHJpbnRlcjxUdXBsZVBvbGljeTxUdXBsZT46OnR1cGxlX3NpemU+OjpQcmludFByZWZpeFRvKHQs
IG9zKTsKLSAgKm9zIDw8ICIpIjsKLX0KLQotLy8gUHJpbnRzIHRoZSBmaWVsZHMgb2YgYSB0dXBs
ZSB0ZXJzZWx5IHRvIGEgc3RyaW5nIHZlY3Rvciwgb25lCi0vLyBlbGVtZW50IGZvciBlYWNoIGZp
ZWxkLiAgU2VlIHRoZSBjb21tZW50IGJlZm9yZQotLy8gVW5pdmVyc2FsVGVyc2VQcmludCgpIGZv
ciBob3cgd2UgZGVmaW5lICJ0ZXJzZWx5Ii4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4KLVN0
cmluZ3MgVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKGNvbnN0IFR1cGxl
JiB2YWx1ZSkgewotICBTdHJpbmdzIHJlc3VsdDsKLSAgVHVwbGVQcmVmaXhQcmludGVyPFR1cGxl
UG9saWN5PFR1cGxlPjo6dHVwbGVfc2l6ZT46OgotICAgICAgVGVyc2VQcmludFByZWZpeFRvU3Ry
aW5ncyh2YWx1ZSwgJnJlc3VsdCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgIC8vIEdU
RVNUX0hBU19UUjFfVFVQTEUgfHwgR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotfSAgLy8gbmFtZXNw
YWNlIGludGVybmFsCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotOjpzdGQ6OnN0cmluZyBQcmlu
dFRvU3RyaW5nKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0g
IGludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50ZXI8VD46OlByaW50KHZhbHVlLCAmc3MpOwot
ICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8vIElu
Y2x1ZGUgYW55IGN1c3RvbSBwcmludGVyIGFkZGVkIGJ5IHRoZSBsb2NhbCBpbnN0YWxsYXRpb24u
Ci0vLyBXZSBtdXN0IGluY2x1ZGUgdGhpcyBoZWFkZXIgYXQgdGhlIGVuZCB0byBtYWtlIHN1cmUg
aXQgY2FuIHVzZSB0aGUKLS8vIGRlY2xhcmF0aW9ucyBmcm9tIHRoaXMgZmlsZS4KLSNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCIKLQotI2VuZGlmICAvLyBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1BSSU5URVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXNwaS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC1zcGkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU1YzEwY2Y3Y2Q3
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC1zcGku
aAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhh
bnlvbmcgV2FuKQotLy8KLS8vIFV0aWxpdGllcyBmb3IgdGVzdGluZyBHb29nbGUgVGVzdCBpdHNl
bGYgYW5kIGNvZGUgdGhhdCB1c2VzIEdvb2dsZSBUZXN0Ci0vLyAoZS5nLiBmcmFtZXdvcmtzIGJ1
aWx0IG9uIHRvcCBvZiBHb29nbGUgVGVzdCkuCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVT
VF9HVEVTVF9TUElfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9TUElfSF8K
LQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8g
VGhpcyBoZWxwZXIgY2xhc3MgY2FuIGJlIHVzZWQgdG8gbW9jayBvdXQgR29vZ2xlIFRlc3QgZmFp
bHVyZSByZXBvcnRpbmcKLS8vIHNvIHRoYXQgd2UgY2FuIHRlc3QgR29vZ2xlIFRlc3Qgb3IgY29k
ZSB0aGF0IGJ1aWxkcyBvbiBHb29nbGUgVGVzdC4KLS8vCi0vLyBBbiBvYmplY3Qgb2YgdGhpcyBj
bGFzcyBhcHBlbmRzIGEgVGVzdFBhcnRSZXN1bHQgb2JqZWN0IHRvIHRoZQotLy8gVGVzdFBhcnRS
ZXN1bHRBcnJheSBvYmplY3QgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yIHdoZW5ldmVyIGEgR29v
Z2xlIFRlc3QKLS8vIGZhaWx1cmUgaXMgcmVwb3J0ZWQuIEl0IGNhbiBlaXRoZXIgaW50ZXJjZXB0
IG9ubHkgZmFpbHVyZXMgdGhhdCBhcmUKLS8vIGdlbmVyYXRlZCBpbiB0aGUgc2FtZSB0aHJlYWQg
dGhhdCBjcmVhdGVkIHRoaXMgb2JqZWN0IG9yIGl0IGNhbiBpbnRlcmNlcHQKLS8vIGFsbCBnZW5l
cmF0ZWQgZmFpbHVyZXMuIFRoZSBzY29wZSBvZiB0aGlzIG1vY2sgb2JqZWN0IGNhbiBiZSBjb250
cm9sbGVkIHdpdGgKLS8vIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIHR3byBhcmd1bWVudHMg
Y29uc3RydWN0b3IuCi1jbGFzcyBHVEVTVF9BUElfIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJl
cG9ydGVyCi0gICAgOiBwdWJsaWMgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSB7Ci0g
cHVibGljOgotICAvLyBUaGUgdHdvIHBvc3NpYmxlIG1vY2tpbmcgbW9kZXMgb2YgdGhpcyBvYmpl
Y3QuCi0gIGVudW0gSW50ZXJjZXB0TW9kZSB7Ci0gICAgSU5URVJDRVBUX09OTFlfQ1VSUkVOVF9U
SFJFQUQsICAvLyBJbnRlcmNlcHRzIG9ubHkgdGhyZWFkIGxvY2FsIGZhaWx1cmVzLgotICAgIElO
VEVSQ0VQVF9BTExfVEhSRUFEUyAgICAgICAgICAgLy8gSW50ZXJjZXB0cyBhbGwgZmFpbHVyZXMu
Ci0gIH07Ci0KLSAgLy8gVGhlIGMndG9yIHNldHMgdGhpcyBvYmplY3QgYXMgdGhlIHRlc3QgcGFy
dCByZXN1bHQgcmVwb3J0ZXIgdXNlZAotICAvLyBieSBHb29nbGUgVGVzdC4gIFRoZSAncmVzdWx0
JyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXJlIHRvIHJlcG9ydCB0aGUKLSAgLy8gcmVzdWx0cy4g
VGhpcyByZXBvcnRlciB3aWxsIG9ubHkgY2F0Y2ggZmFpbHVyZXMgZ2VuZXJhdGVkIGluIHRoZSBj
dXJyZW50Ci0gIC8vIHRocmVhZC4gREVQUkVDQVRFRAotICBleHBsaWNpdCBTY29wZWRGYWtlVGVz
dFBhcnRSZXN1bHRSZXBvcnRlcihUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHQpOwotCi0gIC8v
IFNhbWUgYXMgYWJvdmUsIGJ1dCB5b3UgY2FuIGNob29zZSB0aGUgaW50ZXJjZXB0aW9uIHNjb3Bl
IG9mIHRoaXMgb2JqZWN0LgotICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcihJbnRl
cmNlcHRNb2RlIGludGVyY2VwdF9tb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHQpOwotCi0gIC8vIFRoZSBkJ3RvciByZXN0
b3JlcyB0aGUgcHJldmlvdXMgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlci4KLSAgdmlydHVhbCB+
U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoKTsKLQotICAvLyBBcHBlbmRzIHRoZSBU
ZXN0UGFydFJlc3VsdCBvYmplY3QgdG8gdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkKLSAgLy8gcmVj
ZWl2ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAvLwotICAvLyBUaGlzIG1ldGhvZCBpcyBmcm9t
IHRoZSBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlCi0gIC8vIGludGVyZmFjZS4KLSAg
dmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBy
ZXN1bHQpOwotIHByaXZhdGU6Ci0gIHZvaWQgSW5pdCgpOwotCi0gIGNvbnN0IEludGVyY2VwdE1v
ZGUgaW50ZXJjZXB0X21vZGVfOwotICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKiBv
bGRfcmVwb3J0ZXJfOwotICBUZXN0UGFydFJlc3VsdEFycmF5KiBjb25zdCByZXN1bHRfOwotCi0g
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0
UmVwb3J0ZXIpOwotfTsKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gQSBoZWxwZXIgY2xh
c3MgZm9yIGltcGxlbWVudGluZyBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGFuZAotLy8gRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKS4gIEl0cyBkZXN0cnVjdG9yIHZlcmlmaWVzIHRoYXQgdGhlIGdp
dmVuCi0vLyBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIGV4YWN0bHkgb25lIGZhaWx1cmUg
dGhhdCBoYXMgdGhlIGdpdmVuCi0vLyB0eXBlIGFuZCBjb250YWlucyB0aGUgZ2l2ZW4gc3Vic3Ry
aW5nLiAgSWYgdGhhdCdzIG5vdCB0aGUgY2FzZSwgYQotLy8gbm9uLWZhdGFsIGZhaWx1cmUgd2ls
bCBiZSBnZW5lcmF0ZWQuCi1jbGFzcyBHVEVTVF9BUElfIFNpbmdsZUZhaWx1cmVDaGVja2VyIHsK
LSBwdWJsaWM6Ci0gIC8vIFRoZSBjb25zdHJ1Y3RvciByZW1lbWJlcnMgdGhlIGFyZ3VtZW50cy4K
LSAgU2luZ2xlRmFpbHVyZUNoZWNrZXIoY29uc3QgVGVzdFBhcnRSZXN1bHRBcnJheSogcmVzdWx0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OlR5cGUgdHlwZSwgY29u
c3Qgc3RkOjpzdHJpbmcmIHN1YnN0cik7Ci0gIH5TaW5nbGVGYWlsdXJlQ2hlY2tlcigpOwotIHBy
aXZhdGU6Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0QXJyYXkqIGNvbnN0IHJlc3VsdHNfOwotICBj
b25zdCBUZXN0UGFydFJlc3VsdDo6VHlwZSB0eXBlXzsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgc3Vi
c3RyXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNpbmdsZUZhaWx1cmVD
aGVja2VyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi19ICAvLyBuYW1lc3Bh
Y2UgdGVzdGluZwotCi0vLyBBIHNldCBvZiBtYWNyb3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3Qg
YXNzZXJ0aW9ucyBvciBjb2RlIHRoYXQncyBleHBlY3RlZAotLy8gdG8gZ2VuZXJhdGUgR29vZ2xl
IFRlc3QgZmF0YWwgZmFpbHVyZXMuICBJdCB2ZXJpZmllcyB0aGF0IHRoZSBnaXZlbgotLy8gc3Rh
dGVtZW50IHdpbGwgY2F1c2UgZXhhY3RseSBvbmUgZmF0YWwgR29vZ2xlIFRlc3QgZmFpbHVyZSB3
aXRoICdzdWJzdHInCi0vLyBiZWluZyBwYXJ0IG9mIHRoZSBmYWlsdXJlIG1lc3NhZ2UuCi0vLwot
Ly8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhpcyBtYWNyby4gRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUgb25seQotLy8gYWZmZWN0cyBhbmQgY29uc2lkZXJzIGZhaWx1cmVzIGdl
bmVyYXRlZCBpbiB0aGUgY3VycmVudCB0aHJlYWQgYW5kCi0vLyBFWFBFQ1RfRkFUQUxfRkFJTFVS
RV9PTl9BTExfVEhSRUFEUyBkb2VzIHRoZSBzYW1lIGJ1dCBmb3IgYWxsIHRocmVhZHMuCi0vLwot
Ly8gVGhlIHZlcmlmaWNhdGlvbiBvZiB0aGUgYXNzZXJ0aW9uIGlzIGRvbmUgY29ycmVjdGx5IGV2
ZW4gd2hlbiB0aGUgc3RhdGVtZW50Ci0vLyB0aHJvd3MgYW4gZXhjZXB0aW9uIG9yIGFib3J0cyB0
aGUgY3VycmVudCBmdW5jdGlvbi4KLS8vCi0vLyBLbm93biByZXN0cmljdGlvbnM6Ci0vLyAgIC0g
J3N0YXRlbWVudCcgY2Fubm90IHJlZmVyZW5jZSBsb2NhbCBub24tc3RhdGljIHZhcmlhYmxlcyBv
cgotLy8gICAgIG5vbi1zdGF0aWMgbWVtYmVycyBvZiB0aGUgY3VycmVudCBvYmplY3QuCi0vLyAg
IC0gJ3N0YXRlbWVudCcgY2Fubm90IHJldHVybiBhIHZhbHVlLgotLy8gICAtIFlvdSBjYW5ub3Qg
c3RyZWFtIGEgZmFpbHVyZSBtZXNzYWdlIHRvIHRoaXMgbWFjcm8uCi0vLwotLy8gTm90ZSB0aGF0
IGV2ZW4gdGhvdWdoIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZvbGxvd2luZyB0d28KLS8v
IG1hY3JvcyBhcmUgbXVjaCBhbGlrZSwgd2UgY2Fubm90IHJlZmFjdG9yIHRoZW0gdG8gdXNlIGEg
Y29tbW9uCi0vLyBoZWxwZXIgbWFjcm8sIGR1ZSB0byBzb21lIHBlY3VsaWFyaXR5IGluIGhvdyB0
aGUgcHJlcHJvY2Vzc29yCi0vLyB3b3Jrcy4gIFRoZSBBY2NlcHRzTWFjcm9UaGF0RXhwYW5kc1Rv
VW5wcm90ZWN0ZWRDb21tYSB0ZXN0IGluCi0vLyBndGVzdF91bml0dGVzdC5jYyB3aWxsIGZhaWwg
dG8gY29tcGlsZSBpZiB3ZSBkbyB0aGF0LgotI2RlZmluZSBFWFBFQ1RfRkFUQUxfRkFJTFVSRShz
dGF0ZW1lbnQsIHN1YnN0cikgXAotICBkbyB7IFwKLSAgICBjbGFzcyBHVGVzdEV4cGVjdEZhdGFs
RmFpbHVyZUhlbHBlciB7XAotICAgICBwdWJsaWM6XAotICAgICAgc3RhdGljIHZvaWQgRXhlY3V0
ZSgpIHsgc3RhdGVtZW50OyB9XAotICAgIH07XAotICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1
bHRBcnJheSBndGVzdF9mYWlsdXJlcztcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U2luZ2xl
RmFpbHVyZUNoZWNrZXIgZ3Rlc3RfY2hlY2tlcihcCi0gICAgICAgICZndGVzdF9mYWlsdXJlcywg
Ojp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgKHN1YnN0cikpO1wKLSAg
ICB7XAotICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBn
dGVzdF9yZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6IFwKLSAgICAgICAgICBJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVB
RCwgJmd0ZXN0X2ZhaWx1cmVzKTtcCi0gICAgICBHVGVzdEV4cGVjdEZhdGFsRmFpbHVyZUhlbHBl
cjo6RXhlY3V0ZSgpO1wKLSAgICB9XAotICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpB
bHdheXNGYWxzZSgpKQotCi0jZGVmaW5lIEVYUEVDVF9GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJF
QURTKHN0YXRlbWVudCwgc3Vic3RyKSBcCi0gIGRvIHsgXAotICAgIGNsYXNzIEdUZXN0RXhwZWN0
RmF0YWxGYWlsdXJlSGVscGVyIHtcCi0gICAgIHB1YmxpYzpcCi0gICAgICBzdGF0aWMgdm9pZCBF
eGVjdXRlKCkgeyBzdGF0ZW1lbnQ7IH1cCi0gICAgfTtcCi0gICAgOjp0ZXN0aW5nOjpUZXN0UGFy
dFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1cmVzO1wKLSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpT
aW5nbGVGYWlsdXJlQ2hlY2tlciBndGVzdF9jaGVja2VyKFwKLSAgICAgICAgJmd0ZXN0X2ZhaWx1
cmVzLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAoc3Vic3RyKSk7
XAotICAgIHtcCi0gICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9y
dGVyIGd0ZXN0X3JlcG9ydGVyKFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0
UGFydFJlc3VsdFJlcG9ydGVyOjogXAotICAgICAgICAgIElOVEVSQ0VQVF9BTExfVEhSRUFEUywg
Jmd0ZXN0X2ZhaWx1cmVzKTtcCi0gICAgICBHVGVzdEV4cGVjdEZhdGFsRmFpbHVyZUhlbHBlcjo6
RXhlY3V0ZSgpO1wKLSAgICB9XAotICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQotCi0vLyBBIG1hY3JvIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGFzc2VydGlv
bnMgb3IgY29kZSB0aGF0J3MgZXhwZWN0ZWQgdG8KLS8vIGdlbmVyYXRlIEdvb2dsZSBUZXN0IG5v
bi1mYXRhbCBmYWlsdXJlcy4gIEl0IGFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4KLS8vIHN0YXRlbWVu
dCB3aWxsIGNhdXNlIGV4YWN0bHkgb25lIG5vbi1mYXRhbCBHb29nbGUgVGVzdCBmYWlsdXJlIHdp
dGggJ3N1YnN0cicKLS8vIGJlaW5nIHBhcnQgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZS4KLS8vCi0v
LyBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGlzIG1hY3JvLiBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSBvbmx5Ci0vLyBhZmZlY3RzIGFuZCBjb25zaWRlcnMgZmFpbHVyZXMg
Z2VuZXJhdGVkIGluIHRoZSBjdXJyZW50IHRocmVhZCBhbmQKLS8vIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTIGRvZXMgdGhlIHNhbWUgYnV0IGZvciBhbGwgdGhyZWFkcy4K
LS8vCi0vLyAnc3RhdGVtZW50JyBpcyBhbGxvd2VkIHRvIHJlZmVyZW5jZSBsb2NhbCB2YXJpYWJs
ZXMgYW5kIG1lbWJlcnMgb2YKLS8vIHRoZSBjdXJyZW50IG9iamVjdC4KLS8vCi0vLyBUaGUgdmVy
aWZpY2F0aW9uIG9mIHRoZSBhc3NlcnRpb24gaXMgZG9uZSBjb3JyZWN0bHkgZXZlbiB3aGVuIHRo
ZSBzdGF0ZW1lbnQKLS8vIHRocm93cyBhbiBleGNlcHRpb24gb3IgYWJvcnRzIHRoZSBjdXJyZW50
IGZ1bmN0aW9uLgotLy8KLS8vIEtub3duIHJlc3RyaWN0aW9uczoKLS8vICAgLSBZb3UgY2Fubm90
IHN0cmVhbSBhIGZhaWx1cmUgbWVzc2FnZSB0byB0aGlzIG1hY3JvLgotLy8KLS8vIE5vdGUgdGhh
dCBldmVuIHRob3VnaCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBmb2xsb3dpbmcgdHdvCi0v
LyBtYWNyb3MgYXJlIG11Y2ggYWxpa2UsIHdlIGNhbm5vdCByZWZhY3RvciB0aGVtIHRvIHVzZSBh
IGNvbW1vbgotLy8gaGVscGVyIG1hY3JvLCBkdWUgdG8gc29tZSBwZWN1bGlhcml0eSBpbiBob3cg
dGhlIHByZXByb2Nlc3NvcgotLy8gd29ya3MuICBJZiB3ZSBkbyB0aGF0LCB0aGUgY29kZSB3b24n
dCBjb21waWxlIHdoZW4gdGhlIHVzZXIgZ2l2ZXMKLS8vIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KCkgYSBzdGF0ZW1lbnQgdGhhdCBjb250YWlucyBhIG1hY3JvIHRoYXQKLS8vIGV4cGFuZHMgdG8g
Y29kZSBjb250YWluaW5nIGFuIHVucHJvdGVjdGVkIGNvbW1hLiAgVGhlCi0vLyBBY2NlcHRzTWFj
cm9UaGF0RXhwYW5kc1RvVW5wcm90ZWN0ZWRDb21tYSB0ZXN0IGluIGd0ZXN0X3VuaXR0ZXN0LmNj
Ci0vLyBjYXRjaGVzIHRoYXQuCi0vLwotLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiwgd2UgaGF2ZSB0
byB3cml0ZQotLy8gICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0
YXRlbWVudDsgfQotLy8gaW5zdGVhZCBvZgotLy8gICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCkKLS8vIHRvIGF2b2lkIGFuIE1TVkMgd2Fy
bmluZyBvbiB1bnJlYWNoYWJsZSBjb2RlLgotI2RlZmluZSBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShzdGF0ZW1lbnQsIHN1YnN0cikgXAotICBkbyB7XAotICAgIDo6dGVzdGluZzo6VGVzdFBhcnRS
ZXN1bHRBcnJheSBndGVzdF9mYWlsdXJlcztcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6U2lu
Z2xlRmFpbHVyZUNoZWNrZXIgZ3Rlc3RfY2hlY2tlcihcCi0gICAgICAgICZndGVzdF9mYWlsdXJl
cywgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgXAotICAgICAg
ICAoc3Vic3RyKSk7XAotICAgIHtcCi0gICAgICA6OnRlc3Rpbmc6OlNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OlNj
b3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjogXAotICAgICAgICAgIElOVEVSQ0VQVF9P
TkxZX0NVUlJFTlRfVEhSRUFELCAmZ3Rlc3RfZmFpbHVyZXMpO1wKLSAgICAgIGlmICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgc3RhdGVtZW50OyB9XAotICAgIH1cCi0gIH0g
d2hpbGUgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlKCkpCi0KLSNkZWZpbmUgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoc3RhdGVtZW50LCBzdWJzdHIpIFwK
LSAgZG8ge1wKLSAgICA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0QXJyYXkgZ3Rlc3RfZmFpbHVy
ZXM7XAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OlNpbmdsZUZhaWx1cmVDaGVja2VyIGd0ZXN0
X2NoZWNrZXIoXAotICAgICAgICAmZ3Rlc3RfZmFpbHVyZXMsIDo6dGVzdGluZzo6VGVzdFBhcnRS
ZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIFwKLSAgICAgICAgKHN1YnN0cikpO1wKLSAgICB7XAot
ICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciBndGVzdF9y
ZXBvcnRlcihcCi0gICAgICAgICAgOjp0ZXN0aW5nOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcjo6SU5URVJDRVBUX0FMTF9USFJFQURTLCBcCi0gICAgICAgICAgJmd0ZXN0X2ZhaWx1
cmVzKTtcCi0gICAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IHN0
YXRlbWVudDsgfVwKLSAgICB9XAotICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdh
eXNGYWxzZSgpKQotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfU1BJX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LXRlc3QtcGFydC5o
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzdlYjg0NDgzOWQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10ZXN0LXBhcnQuaAorKysgL2Rldi9udWxsCkBA
IC0xLDE3OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiBtaGV1bGVAZ29vZ2xlLmNvbSAoTWFya3VzIEhldWxlKQotLy8K
LQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwotI2RlZmlu
ZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwotCi0jaW5jbHVkZSA8aW9z
ZndkPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1p
bnRlcm5hbC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0cmluZy5oIgotCi1u
YW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8vIEEgY29weWFibGUgb2JqZWN0IHJlcHJlc2VudGluZyB0
aGUgcmVzdWx0IG9mIGEgdGVzdCBwYXJ0IChpLmUuIGFuCi0vLyBhc3NlcnRpb24gb3IgYW4gZXhw
bGljaXQgRkFJTCgpLCBBRERfRkFJTFVSRSgpLCBvciBTVUNDRVNTKCkpLgotLy8KLS8vIERvbid0
IGluaGVyaXQgZnJvbSBUZXN0UGFydFJlc3VsdCBhcyBpdHMgZGVzdHJ1Y3RvciBpcyBub3Qgdmly
dHVhbC4KLWNsYXNzIEdURVNUX0FQSV8gVGVzdFBhcnRSZXN1bHQgewotIHB1YmxpYzoKLSAgLy8g
VGhlIHBvc3NpYmxlIG91dGNvbWVzIG9mIGEgdGVzdCBwYXJ0IChpLmUuIGFuIGFzc2VydGlvbiBv
ciBhbgotICAvLyBleHBsaWNpdCBTVUNDRUVEKCksIEZBSUwoKSwgb3IgQUREX0ZBSUxVUkUoKSku
Ci0gIGVudW0gVHlwZSB7Ci0gICAga1N1Y2Nlc3MsICAgICAgICAgIC8vIFN1Y2NlZWRlZC4KLSAg
ICBrTm9uRmF0YWxGYWlsdXJlLCAgLy8gRmFpbGVkIGJ1dCB0aGUgdGVzdCBjYW4gY29udGludWUu
Ci0gICAga0ZhdGFsRmFpbHVyZSAgICAgIC8vIEZhaWxlZCBhbmQgdGhlIHRlc3Qgc2hvdWxkIGJl
IHRlcm1pbmF0ZWQuCi0gIH07Ci0KLSAgLy8gQyd0b3IuICBUZXN0UGFydFJlc3VsdCBkb2VzIE5P
VCBoYXZlIGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgLy8gQWx3YXlzIHVzZSB0aGlzIGNvbnN0
cnVjdG9yICh3aXRoIHBhcmFtZXRlcnMpIHRvIGNyZWF0ZSBhCi0gIC8vIFRlc3RQYXJ0UmVzdWx0
IG9iamVjdC4KLSAgVGVzdFBhcnRSZXN1bHQoVHlwZSBhX3R5cGUsCi0gICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFfZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICBpbnQgYV9saW5lX251
bWJlciwKLSAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYV9tZXNzYWdlKQotICAgICAgOiB0
eXBlXyhhX3R5cGUpLAotICAgICAgICBmaWxlX25hbWVfKGFfZmlsZV9uYW1lID09IE5VTEwgPyAi
IiA6IGFfZmlsZV9uYW1lKSwKLSAgICAgICAgbGluZV9udW1iZXJfKGFfbGluZV9udW1iZXIpLAot
ICAgICAgICBzdW1tYXJ5XyhFeHRyYWN0U3VtbWFyeShhX21lc3NhZ2UpKSwKLSAgICAgICAgbWVz
c2FnZV8oYV9tZXNzYWdlKSB7Ci0gIH0KLQotICAvLyBHZXRzIHRoZSBvdXRjb21lIG9mIHRoZSB0
ZXN0IHBhcnQuCi0gIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfOyB9Ci0KLSAgLy8g
R2V0cyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29r
IHBsYWNlLCBvcgotICAvLyBOVUxMIGlmIGl0J3MgdW5rbm93bi4KLSAgY29uc3QgY2hhciogZmls
ZV9uYW1lKCkgY29uc3QgewotICAgIHJldHVybiBmaWxlX25hbWVfLmVtcHR5KCkgPyBOVUxMIDog
ZmlsZV9uYW1lXy5jX3N0cigpOwotICB9Ci0KLSAgLy8gR2V0cyB0aGUgbGluZSBpbiB0aGUgc291
cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3QgcGFydCB0b29rIHBsYWNlLAotICAvLyBvciAtMSBpZiBp
dCdzIHVua25vd24uCi0gIGludCBsaW5lX251bWJlcigpIGNvbnN0IHsgcmV0dXJuIGxpbmVfbnVt
YmVyXzsgfQotCi0gIC8vIEdldHMgdGhlIHN1bW1hcnkgb2YgdGhlIGZhaWx1cmUgbWVzc2FnZS4K
LSAgY29uc3QgY2hhciogc3VtbWFyeSgpIGNvbnN0IHsgcmV0dXJuIHN1bW1hcnlfLmNfc3RyKCk7
IH0KLQotICAvLyBHZXRzIHRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGVzdCBwYXJ0
LgotICBjb25zdCBjaGFyKiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZV8uY19zdHIo
KTsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBwYXNzZWQuCi0gIGJv
b2wgcGFzc2VkKCkgY29uc3QgeyByZXR1cm4gdHlwZV8gPT0ga1N1Y2Nlc3M7IH0KLQotICAvLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmFpbGVkLgotICBib29sIGZhaWxlZCgpIGNv
bnN0IHsgcmV0dXJuIHR5cGVfICE9IGtTdWNjZXNzOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGUgdGVzdCBwYXJ0IG5vbi1mYXRhbGx5IGZhaWxlZC4KLSAgYm9vbCBub25mYXRhbGx5X2Zh
aWxlZCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVfID09IGtOb25GYXRhbEZhaWx1cmU7IH0KLQotICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgZmF0YWxseSBmYWlsZWQuCi0gIGJvb2wg
ZmF0YWxseV9mYWlsZWQoKSBjb25zdCB7IHJldHVybiB0eXBlXyA9PSBrRmF0YWxGYWlsdXJlOyB9
Ci0KLSBwcml2YXRlOgotICBUeXBlIHR5cGVfOwotCi0gIC8vIEdldHMgdGhlIHN1bW1hcnkgb2Yg
dGhlIGZhaWx1cmUgbWVzc2FnZSBieSBvbWl0dGluZyB0aGUgc3RhY2sKLSAgLy8gdHJhY2UgaW4g
aXQuCi0gIHN0YXRpYyBzdGQ6OnN0cmluZyBFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNz
YWdlKTsKLQotICAvLyBUaGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhlIHRlc3Qg
cGFydCB0b29rIHBsYWNlLCBvcgotICAvLyAiIiBpZiB0aGUgc291cmNlIGZpbGUgaXMgdW5rbm93
bi4KLSAgc3RkOjpzdHJpbmcgZmlsZV9uYW1lXzsKLSAgLy8gVGhlIGxpbmUgaW4gdGhlIHNvdXJj
ZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IHBhcnQgdG9vayBwbGFjZSwgb3IgLTEKLSAgLy8gaWYgdGhl
IGxpbmUgbnVtYmVyIGlzIHVua25vd24uCi0gIGludCBsaW5lX251bWJlcl87Ci0gIHN0ZDo6c3Ry
aW5nIHN1bW1hcnlfOyAgLy8gVGhlIHRlc3QgZmFpbHVyZSBzdW1tYXJ5LgotICBzdGQ6OnN0cmlu
ZyBtZXNzYWdlXzsgIC8vIFRoZSB0ZXN0IGZhaWx1cmUgbWVzc2FnZS4KLX07Ci0KLS8vIFByaW50
cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCBjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KTsKLQotLy8gQW4gYXJy
YXkgb2YgVGVzdFBhcnRSZXN1bHQgb2JqZWN0cy4KLS8vCi0vLyBEb24ndCBpbmhlcml0IGZyb20g
VGVzdFBhcnRSZXN1bHRBcnJheSBhcyBpdHMgZGVzdHJ1Y3RvciBpcyBub3QKLS8vIHZpcnR1YWwu
Ci1jbGFzcyBHVEVTVF9BUElfIFRlc3RQYXJ0UmVzdWx0QXJyYXkgewotIHB1YmxpYzoKLSAgVGVz
dFBhcnRSZXN1bHRBcnJheSgpIHt9Ci0KLSAgLy8gQXBwZW5kcyB0aGUgZ2l2ZW4gVGVzdFBhcnRS
ZXN1bHQgdG8gdGhlIGFycmF5LgotICB2b2lkIEFwcGVuZChjb25zdCBUZXN0UGFydFJlc3VsdCYg
cmVzdWx0KTsKLQotICAvLyBSZXR1cm5zIHRoZSBUZXN0UGFydFJlc3VsdCBhdCB0aGUgZ2l2ZW4g
aW5kZXggKDAtYmFzZWQpLgotICBjb25zdCBUZXN0UGFydFJlc3VsdCYgR2V0VGVzdFBhcnRSZXN1
bHQoaW50IGluZGV4KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgVGVzdFBh
cnRSZXN1bHQgb2JqZWN0cyBpbiB0aGUgYXJyYXkuCi0gIGludCBzaXplKCkgY29uc3Q7Ci0KLSBw
cml2YXRlOgotICBzdGQ6OnZlY3RvcjxUZXN0UGFydFJlc3VsdD4gYXJyYXlfOwotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdFBhcnRSZXN1bHRBcnJheSk7Ci19OwotCi0v
LyBUaGlzIGludGVyZmFjZSBrbm93cyBob3cgdG8gcmVwb3J0IGEgdGVzdCBwYXJ0IHJlc3VsdC4K
LWNsYXNzIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdmly
dHVhbCB+VGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSgpIHt9Ci0KLSAgdmlydHVhbCB2
b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpID0g
MDsKLX07Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFRoaXMgaGVscGVyIGNsYXNzIGlz
IHVzZWQgYnkge0FTU0VSVHxFWFBFQ1R9X05PX0ZBVEFMX0ZBSUxVUkUgdG8gY2hlY2sgaWYgYQot
Ly8gc3RhdGVtZW50IGdlbmVyYXRlcyBuZXcgZmF0YWwgZmFpbHVyZXMuIFRvIGRvIHNvIGl0IHJl
Z2lzdGVycyBpdHNlbGYgYXMgdGhlCi0vLyBjdXJyZW50IHRlc3QgcGFydCByZXN1bHQgcmVwb3J0
ZXIuIEJlc2lkZXMgY2hlY2tpbmcgaWYgZmF0YWwgZmFpbHVyZXMgd2VyZQotLy8gcmVwb3J0ZWQs
IGl0IG9ubHkgZGVsZWdhdGVzIHRoZSByZXBvcnRpbmcgdG8gdGhlIGZvcm1lciByZXN1bHQgcmVw
b3J0ZXIuCi0vLyBUaGUgb3JpZ2luYWwgcmVzdWx0IHJlcG9ydGVyIGlzIHJlc3RvcmVkIGluIHRo
ZSBkZXN0cnVjdG9yLgotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgotY2xhc3MgR1RFU1RfQVBJXyBIYXNOZXdGYXRhbEZhaWx1cmVIZWxw
ZXIKLSAgICA6IHB1YmxpYyBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlIHsKLSBwdWJs
aWM6Ci0gIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlcigpOwotICB2aXJ0dWFsIH5IYXNOZXdGYXRh
bEZhaWx1cmVIZWxwZXIoKTsKLSAgdmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNv
bnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpOwotICBib29sIGhhc19uZXdfZmF0YWxfZmFpbHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc19uZXdfZmF0YWxfZmFpbHVyZV87IH0KLSBwcml2YXRlOgot
ICBib29sIGhhc19uZXdfZmF0YWxfZmFpbHVyZV87Ci0gIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJ
bnRlcmZhY2UqIG9yaWdpbmFsX3JlcG9ydGVyXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlcik7Ci19OwotCi19ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKLQotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVT
VF9JTkNMVURFX0dURVNUX0dURVNUX1RFU1RfUEFSVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9ndGVzdC10eXBlZC10ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2d0ZXN0LXR5cGVkLXRlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjA3MjZiMmNkNWJmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVz
dC9ndGVzdC10eXBlZC10ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjQgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfVFlQRURfVEVTVF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNU
X1RZUEVEX1RFU1RfSF8KLQotLy8gVGhpcyBoZWFkZXIgaW1wbGVtZW50cyB0eXBlZCB0ZXN0cyBh
bmQgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotCi0vLyBUeXBlZCAoYWthIHR5cGUtZHJpdmVu
KSB0ZXN0cyByZXBlYXQgdGhlIHNhbWUgdGVzdCBmb3IgdHlwZXMgaW4gYQotLy8gbGlzdC4gIFlv
dSBtdXN0IGtub3cgd2hpY2ggdHlwZXMgeW91IHdhbnQgdG8gdGVzdCB3aXRoIHdoZW4gd3JpdGlu
ZwotLy8gdHlwZWQgdGVzdHMuIEhlcmUncyBob3cgeW91IGRvIGl0OgotCi0jaWYgMAotCi0vLyBG
aXJzdCwgZGVmaW5lIGEgZml4dHVyZSBjbGFzcyB0ZW1wbGF0ZS4gIEl0IHNob3VsZCBiZSBwYXJh
bWV0ZXJpemVkCi0vLyBieSBhIHR5cGUuICBSZW1lbWJlciB0byBkZXJpdmUgaXQgZnJvbSB0ZXN0
aW5nOjpUZXN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGb29UZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotIHB1YmxpYzoKLSAgLi4uCi0gIHR5cGVkZWYgc3RkOjpsaXN0PFQ+
IExpc3Q7Ci0gIHN0YXRpYyBUIHNoYXJlZF87Ci0gIFQgdmFsdWVfOwotfTsKLQotLy8gTmV4dCwg
YXNzb2NpYXRlIGEgbGlzdCBvZiB0eXBlcyB3aXRoIHRoZSB0ZXN0IGNhc2UsIHdoaWNoIHdpbGwg
YmUKLS8vIHJlcGVhdGVkIGZvciBlYWNoIHR5cGUgaW4gdGhlIGxpc3QuICBUaGUgdHlwZWRlZiBp
cyBuZWNlc3NhcnkgZm9yCi0vLyB0aGUgbWFjcm8gdG8gcGFyc2UgY29ycmVjdGx5LgotdHlwZWRl
ZiB0ZXN0aW5nOjpUeXBlczxjaGFyLCBpbnQsIHVuc2lnbmVkIGludD4gTXlUeXBlczsKLVRZUEVE
X1RFU1RfQ0FTRShGb29UZXN0LCBNeVR5cGVzKTsKLQotLy8gSWYgdGhlIHR5cGUgbGlzdCBjb250
YWlucyBvbmx5IG9uZSB0eXBlLCB5b3UgY2FuIHdyaXRlIHRoYXQgdHlwZQotLy8gZGlyZWN0bHkg
d2l0aG91dCBUeXBlczwuLi4+OgotLy8gICBUWVBFRF9URVNUX0NBU0UoRm9vVGVzdCwgaW50KTsK
LQotLy8gVGhlbiwgdXNlIFRZUEVEX1RFU1QoKSBpbnN0ZWFkIG9mIFRFU1RfRigpIHRvIGRlZmlu
ZSBhcyBtYW55IHR5cGVkCi0vLyB0ZXN0cyBmb3IgdGhpcyB0ZXN0IGNhc2UgYXMgeW91IHdhbnQu
Ci1UWVBFRF9URVNUKEZvb1Rlc3QsIERvZXNCbGFoKSB7Ci0gIC8vIEluc2lkZSBhIHRlc3QsIHJl
ZmVyIHRvIFR5cGVQYXJhbSB0byBnZXQgdGhlIHR5cGUgcGFyYW1ldGVyLgotICAvLyBTaW5jZSB3
ZSBhcmUgaW5zaWRlIGEgZGVyaXZlZCBjbGFzcyB0ZW1wbGF0ZSwgQysrIHJlcXVpcmVzIHVzZSB0
bwotICAvLyB2aXNpdCB0aGUgbWVtYmVycyBvZiBGb29UZXN0IHZpYSAndGhpcycuCi0gIFR5cGVQ
YXJhbSBuID0gdGhpcy0+dmFsdWVfOwotCi0gIC8vIFRvIHZpc2l0IHN0YXRpYyBtZW1iZXJzIG9m
IHRoZSBmaXh0dXJlLCBhZGQgdGhlIFRlc3RGaXh0dXJlOjoKLSAgLy8gcHJlZml4LgotICBuICs9
IFRlc3RGaXh0dXJlOjpzaGFyZWRfOwotCi0gIC8vIFRvIHJlZmVyIHRvIHR5cGVkZWZzIGluIHRo
ZSBmaXh0dXJlLCBhZGQgdGhlICJ0eXBlbmFtZQotICAvLyBUZXN0Rml4dHVyZTo6IiBwcmVmaXgu
Ci0gIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpMaXN0IHZhbHVlczsKLSAgdmFsdWVzLnB1c2hfYmFj
ayhuKTsKLSAgLi4uCi19Ci0KLVRZUEVEX1RFU1QoRm9vVGVzdCwgSGFzUHJvcGVydHlBKSB7IC4u
LiB9Ci0KLSNlbmRpZiAgLy8gMAotCi0vLyBUeXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGFi
c3RyYWN0IHRlc3QgcGF0dGVybnMgcGFyYW1ldGVyaXplZAotLy8gYnkgYSB0eXBlLiAgQ29tcGFy
ZWQgd2l0aCB0eXBlZCB0ZXN0cywgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzCi0vLyBhbGxvdyB5
b3UgdG8gZGVmaW5lIHRoZSB0ZXN0IHBhdHRlcm4gd2l0aG91dCBrbm93aW5nIHdoYXQgdGhlIHR5
cGUKLS8vIHBhcmFtZXRlcnMgYXJlLiAgVGhlIGRlZmluZWQgcGF0dGVybiBjYW4gYmUgaW5zdGFu
dGlhdGVkIHdpdGgKLS8vIGRpZmZlcmVudCB0eXBlcyBhbnkgbnVtYmVyIG9mIHRpbWVzLCBpbiBh
bnkgbnVtYmVyIG9mIHRyYW5zbGF0aW9uCi0vLyB1bml0cy4KLS8vCi0vLyBJZiB5b3UgYXJlIGRl
c2lnbmluZyBhbiBpbnRlcmZhY2Ugb3IgY29uY2VwdCwgeW91IGNhbiBkZWZpbmUgYQotLy8gc3Vp
dGUgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIHRvIHZlcmlmeSBwcm9wZXJ0aWVzIHRoYXQg
YW55Ci0vLyB2YWxpZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlL2NvbmNlcHQgc2hv
dWxkIGhhdmUuICBUaGVuLAotLy8gZWFjaCBpbXBsZW1lbnRhdGlvbiBjYW4gZWFzaWx5IGluc3Rh
bnRpYXRlIHRoZSB0ZXN0IHN1aXRlIHRvIHZlcmlmeQotLy8gdGhhdCBpdCBjb25mb3JtcyB0byB0
aGUgcmVxdWlyZW1lbnRzLCB3aXRob3V0IGhhdmluZyB0byB3cml0ZQotLy8gc2ltaWxhciB0ZXN0
cyByZXBlYXRlZGx5LiAgSGVyZSdzIGFuIGV4YW1wbGU6Ci0KLSNpZiAwCi0KLS8vIEZpcnN0LCBk
ZWZpbmUgYSBmaXh0dXJlIGNsYXNzIHRlbXBsYXRlLiAgSXQgc2hvdWxkIGJlIHBhcmFtZXRlcml6
ZWQKLS8vIGJ5IGEgdHlwZS4gIFJlbWVtYmVyIHRvIGRlcml2ZSBpdCBmcm9tIHRlc3Rpbmc6OlRl
c3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci0gIC4uLgotfTsKLQotLy8gTmV4dCwgZGVjbGFyZSB0aGF0IHlvdSB3aWxsIGRl
ZmluZSBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UKLS8vICh0aGUgX1Agc3VmZml4IGlz
IGZvciAicGFyYW1ldGVyaXplZCIgb3IgInBhdHRlcm4iLCB3aGljaGV2ZXIgeW91Ci0vLyBwcmVm
ZXIpOgotVFlQRURfVEVTVF9DQVNFX1AoRm9vVGVzdCk7Ci0KLS8vIFRoZW4sIHVzZSBUWVBFRF9U
RVNUX1AoKSB0byBkZWZpbmUgYXMgbWFueSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdHMKLS8vIGZv
ciB0aGlzIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgYXMgeW91IHdhbnQuCi1UWVBFRF9U
RVNUX1AoRm9vVGVzdCwgRG9lc0JsYWgpIHsKLSAgLy8gSW5zaWRlIGEgdGVzdCwgcmVmZXIgdG8g
VHlwZVBhcmFtIHRvIGdldCB0aGUgdHlwZSBwYXJhbWV0ZXIuCi0gIFR5cGVQYXJhbSBuID0gMDsK
LSAgLi4uCi19Ci0KLVRZUEVEX1RFU1RfUChGb29UZXN0LCBIYXNQcm9wZXJ0eUEpIHsgLi4uIH0K
LQotLy8gTm93IHRoZSB0cmlja3kgcGFydDogeW91IG5lZWQgdG8gcmVnaXN0ZXIgYWxsIHRlc3Qg
cGF0dGVybnMgYmVmb3JlCi0vLyB5b3UgY2FuIGluc3RhbnRpYXRlIHRoZW0uICBUaGUgZmlyc3Qg
YXJndW1lbnQgb2YgdGhlIG1hY3JvIGlzIHRoZQotLy8gdGVzdCBjYXNlIG5hbWU7IHRoZSByZXN0
IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHRlc3RzIGluIHRoaXMgdGVzdAotLy8gY2FzZS4KLVJFR0lT
VEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEZvb1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb2VzQmxhaCwgSGFzUHJvcGVydHlBKTsKLQotLy8gRmluYWxseSwgeW91IGFyZSBmcmVlIHRv
IGluc3RhbnRpYXRlIHRoZSBwYXR0ZXJuIHdpdGggdGhlIHR5cGVzIHlvdQotLy8gd2FudC4gIElm
IHlvdSBwdXQgdGhlIGFib3ZlIGNvZGUgaW4gYSBoZWFkZXIgZmlsZSwgeW91IGNhbiAjaW5jbHVk
ZQotLy8gaXQgaW4gbXVsdGlwbGUgQysrIHNvdXJjZSBmaWxlcyBhbmQgaW5zdGFudGlhdGUgaXQg
bXVsdGlwbGUgdGltZXMuCi0vLwotLy8gVG8gZGlzdGluZ3Vpc2ggZGlmZmVyZW50IGluc3RhbmNl
cyBvZiB0aGUgcGF0dGVybiwgdGhlIGZpcnN0Ci0vLyBhcmd1bWVudCB0byB0aGUgSU5TVEFOVElB
VEVfKiBtYWNybyBpcyBhIHByZWZpeCB0aGF0IHdpbGwgYmUgYWRkZWQKLS8vIHRvIHRoZSBhY3R1
YWwgdGVzdCBjYXNlIG5hbWUuICBSZW1lbWJlciB0byBwaWNrIHVuaXF1ZSBwcmVmaXhlcyBmb3IK
LS8vIGRpZmZlcmVudCBpbnN0YW5jZXMuCi10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGNoYXIsIGlu
dCwgdW5zaWduZWQgaW50PiBNeVR5cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIEZvb1Rlc3QsIE15VHlwZXMpOwotCi0vLyBJZiB0aGUgdHlwZSBsaXN0IGNvbnRhaW5zIG9u
bHkgb25lIHR5cGUsIHlvdSBjYW4gd3JpdGUgdGhhdCB0eXBlCi0vLyBkaXJlY3RseSB3aXRob3V0
IFR5cGVzPC4uLj46Ci0vLyAgIElOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBGb29U
ZXN0LCBpbnQpOwotCi0jZW5kaWYgIC8vIDAKLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0
ZXN0LXBvcnQuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwuaCIK
LQotLy8gSW1wbGVtZW50cyB0eXBlZCB0ZXN0cy4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUu
Ci0vLwotLy8gRXhwYW5kcyB0byB0aGUgbmFtZSBvZiB0aGUgdHlwZWRlZiBmb3IgdGhlIHR5cGUg
cGFyYW1ldGVycyBvZiB0aGUKLS8vIGdpdmVuIHRlc3QgY2FzZS4KLSMgZGVmaW5lIEdURVNUX1RZ
UEVfUEFSQU1TXyhUZXN0Q2FzZU5hbWUpIGd0ZXN0X3R5cGVfcGFyYW1zXyMjVGVzdENhc2VOYW1l
IyNfCi0KLS8vIFRoZSAnVHlwZXMnIHRlbXBsYXRlIGFyZ3VtZW50IGJlbG93IG11c3QgaGF2ZSBz
cGFjZXMgYXJvdW5kIGl0Ci0vLyBzaW5jZSBzb21lIGNvbXBpbGVycyBtYXkgY2hva2Ugb24gJz4+
JyB3aGVuIHBhc3NpbmcgYSB0ZW1wbGF0ZQotLy8gaW5zdGFuY2UgKGUuZy4gVHlwZXM8aW50PikK
LSMgZGVmaW5lIFRZUEVEX1RFU1RfQ0FTRShDYXNlTmFtZSwgVHlwZXMpIFwKLSAgdHlwZWRlZiA6
OnRlc3Rpbmc6OmludGVybmFsOjpUeXBlTGlzdDwgVHlwZXMgPjo6dHlwZSBcCi0gICAgICBHVEVT
VF9UWVBFX1BBUkFNU18oQ2FzZU5hbWUpCi0KLSMgZGVmaW5lIFRZUEVEX1RFU1QoQ2FzZU5hbWUs
IFRlc3ROYW1lKSBcCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBndGVzdF9UeXBlUGFyYW1fPiBcCi0g
IGNsYXNzIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKSBcCi0gICAg
ICA6IHB1YmxpYyBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiB7IFwKLSAgIHByaXZhdGU6IFwK
LSAgICB0eXBlZGVmIENhc2VOYW1lPGd0ZXN0X1R5cGVQYXJhbV8+IFRlc3RGaXh0dXJlOyBcCi0g
ICAgdHlwZWRlZiBndGVzdF9UeXBlUGFyYW1fIFR5cGVQYXJhbTsgXAotICAgIHZpcnR1YWwgdm9p
ZCBUZXN0Qm9keSgpOyBcCi0gIH07IFwKLSAgYm9vbCBndGVzdF8jI0Nhc2VOYW1lIyNfIyNUZXN0
TmFtZSMjX3JlZ2lzdGVyZWRfIEdURVNUX0FUVFJJQlVURV9VTlVTRURfID0gXAotICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VHlwZVBhcmFtZXRlcml6ZWRUZXN0PCBcCi0gICAgICAgICAgQ2Fz
ZU5hbWUsIFwKLSAgICAgICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpUZW1wbGF0ZVNlbDwgXAot
ICAgICAgICAgICAgICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKENhc2VOYW1lLCBUZXN0TmFtZSk+
LCBcCi0gICAgICAgICAgR1RFU1RfVFlQRV9QQVJBTVNfKENhc2VOYW1lKT46OlJlZ2lzdGVyKFwK
LSAgICAgICAgICAgICAgIiIsIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvZGVMb2NhdGlvbihfX0ZJ
TEVfXywgX19MSU5FX18pLCBcCi0gICAgICAgICAgICAgICNDYXNlTmFtZSwgI1Rlc3ROYW1lLCAw
KTsgXAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lkIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8oQ2FzZU5hbWUsIFRlc3ROYW1lKTxndGVzdF9UeXBlUGFyYW1f
Pjo6VGVzdEJvZHkoKQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIElt
cGxlbWVudHMgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotCi0jaWYgR1RFU1RfSEFTX1RZUEVE
X1RFU1RfUAotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNF
UiBDT0RFLgotLy8KLS8vIEV4cGFuZHMgdG8gdGhlIG5hbWVzcGFjZSBuYW1lIHRoYXQgdGhlIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBmb3IKLS8vIHRoZSBnaXZlbiB0eXBlLXBhcmFtZXRlcml6
ZWQgdGVzdCBjYXNlIGFyZSBkZWZpbmVkIGluLiAgVGhlIGV4YWN0Ci0vLyBuYW1lIG9mIHRoZSBu
YW1lc3BhY2UgaXMgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuCi0jIGRlZmluZSBH
VEVTVF9DQVNFX05BTUVTUEFDRV8oVGVzdENhc2VOYW1lKSBcCi0gIGd0ZXN0X2Nhc2VfIyNUZXN0
Q2FzZU5hbWUjI18KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KLS8vCi0vLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB1
c2VkIHRvIHJlbWVtYmVyIHRoZSBuYW1lcyBvZgotLy8gdGhlIGRlZmluZWQgdGVzdHMgaW4gdGhl
IGdpdmVuIHRlc3QgY2FzZS4KLSMgZGVmaW5lIEdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRF
XyhUZXN0Q2FzZU5hbWUpIFwKLSAgZ3Rlc3RfdHlwZWRfdGVzdF9jYXNlX3Bfc3RhdGVfIyNUZXN0
Q2FzZU5hbWUjI18KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERSBESVJFQ1RMWS4KLS8vCi0vLyBFeHBhbmRzIHRvIHRoZSBuYW1lIG9mIHRoZSB2
YXJpYWJsZSB1c2VkIHRvIHJlbWVtYmVyIHRoZSBuYW1lcyBvZgotLy8gdGhlIHJlZ2lzdGVyZWQg
dGVzdHMgaW4gdGhlIGdpdmVuIHRlc3QgY2FzZS4KLSMgZGVmaW5lIEdURVNUX1JFR0lTVEVSRURf
VEVTVF9OQU1FU18oVGVzdENhc2VOYW1lKSBcCi0gIGd0ZXN0X3JlZ2lzdGVyZWRfdGVzdF9uYW1l
c18jI1Rlc3RDYXNlTmFtZSMjXwotCi0vLyBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0IG1hY3JvcyBhcmUKLS8vIHN0YXRpYyBhcyB0eXBpY2FsbHkg
dGhlc2UgbWFjcm9zIGFyZSB1c2VkIGluIGEgLmggZmlsZSB0aGF0IGNhbiBiZQotLy8gI2luY2x1
ZGVkIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzIGxpbmtlZCB0b2dldGhlci4KLSMgZGVm
aW5lIFRZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lKSBcCi0gIHN0YXRpYyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpUeXBlZFRlc3RDYXNlUFN0YXRlIFwKLSAgICAgIEdURVNUX1RZUEVEX1RFU1RfQ0FT
RV9QX1NUQVRFXyhDYXNlTmFtZSkKLQotIyBkZWZpbmUgVFlQRURfVEVTVF9QKENhc2VOYW1lLCBU
ZXN0TmFtZSkgXAotICBuYW1lc3BhY2UgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKSB7
IFwKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIGd0ZXN0X1R5cGVQYXJhbV8+IFwKLSAgY2xhc3MgVGVz
dE5hbWUgOiBwdWJsaWMgQ2FzZU5hbWU8Z3Rlc3RfVHlwZVBhcmFtXz4geyBcCi0gICBwcml2YXRl
OiBcCi0gICAgdHlwZWRlZiBDYXNlTmFtZTxndGVzdF9UeXBlUGFyYW1fPiBUZXN0Rml4dHVyZTsg
XAotICAgIHR5cGVkZWYgZ3Rlc3RfVHlwZVBhcmFtXyBUeXBlUGFyYW07IFwKLSAgICB2aXJ0dWFs
IHZvaWQgVGVzdEJvZHkoKTsgXAotICB9OyBcCi0gIHN0YXRpYyBib29sIGd0ZXN0XyMjVGVzdE5h
bWUjI19kZWZpbmVkXyBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyA9IFwKLSAgICAgIEdURVNUX1RZ
UEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSkuQWRkVGVzdE5hbWUoXAotICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXywgI0Nhc2VOYW1lLCAjVGVzdE5hbWUpOyBcCi0gIH0gXAotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgZ3Rlc3RfVHlwZVBhcmFtXz4gXAotICB2b2lkIEdURVNUX0NBU0Vf
TkFNRVNQQUNFXyhDYXNlTmFtZSk6OlRlc3ROYW1lPGd0ZXN0X1R5cGVQYXJhbV8+OjpUZXN0Qm9k
eSgpCi0KLSMgZGVmaW5lIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKENhc2VOYW1lLCAuLi4p
IFwKLSAgbmFtZXNwYWNlIEdURVNUX0NBU0VfTkFNRVNQQUNFXyhDYXNlTmFtZSkgeyBcCi0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVtcGxhdGVzPF9fVkFfQVJHU19fPjo6dHlwZSBn
dGVzdF9BbGxUZXN0c187IFwKLSAgfSBcCi0gIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBHVEVT
VF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENhc2VOYW1lKSBcCi0gICAgICBHVEVTVF9BVFRSSUJV
VEVfVU5VU0VEXyA9IFwKLSAgICAgICAgICBHVEVTVF9UWVBFRF9URVNUX0NBU0VfUF9TVEFURV8o
Q2FzZU5hbWUpLlZlcmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoXAotICAgICAgICAgICAgICBfX0ZJ
TEVfXywgX19MSU5FX18sICNfX1ZBX0FSR1NfXykKLQotLy8gVGhlICdUeXBlcycgdGVtcGxhdGUg
YXJndW1lbnQgYmVsb3cgbXVzdCBoYXZlIHNwYWNlcyBhcm91bmQgaXQKLS8vIHNpbmNlIHNvbWUg
Y29tcGlsZXJzIG1heSBjaG9rZSBvbiAnPj4nIHdoZW4gcGFzc2luZyBhIHRlbXBsYXRlCi0vLyBp
bnN0YW5jZSAoZS5nLiBUeXBlczxpbnQ+KQotIyBkZWZpbmUgSU5TVEFOVElBVEVfVFlQRURfVEVT
VF9DQVNFX1AoUHJlZml4LCBDYXNlTmFtZSwgVHlwZXMpIFwKLSAgYm9vbCBndGVzdF8jI1ByZWZp
eCMjXyMjQ2FzZU5hbWUgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPSBcCi0gICAgICA6OnRlc3Rp
bmc6OmludGVybmFsOjpUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPENhc2VOYW1lLCBcCi0gICAg
ICAgICAgR1RFU1RfQ0FTRV9OQU1FU1BBQ0VfKENhc2VOYW1lKTo6Z3Rlc3RfQWxsVGVzdHNfLCBc
Ci0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VHlwZUxpc3Q8IFR5cGVzID46OnR5cGU+
OjpSZWdpc3RlcihcCi0gICAgICAgICAgICAgICNQcmVmaXgsIFwKLSAgICAgICAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKLSAg
ICAgICAgICAgICAgJkdURVNUX1RZUEVEX1RFU1RfQ0FTRV9QX1NUQVRFXyhDYXNlTmFtZSksIFwK
LSAgICAgICAgICAgICAgI0Nhc2VOYW1lLCBHVEVTVF9SRUdJU1RFUkVEX1RFU1RfTkFNRVNfKENh
c2VOYW1lKSkKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9UWVBFRF9URVNUX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0
ZXN0L2d0ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxY2Q2OWFiNDY2Yy4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaAorKysg
L2Rldi9udWxsCkBAIC0xLDIyNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25n
IFdhbikKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRl
c3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBwdWJsaWMgQVBJIGZvciBH
b29nbGUgVGVzdC4gIEl0IHNob3VsZCBiZQotLy8gaW5jbHVkZWQgYnkgYW55IHRlc3QgcHJvZ3Jh
bSB0aGF0IHVzZXMgR29vZ2xlIFRlc3QuCi0vLwotLy8gSU1QT1JUQU5UIE5PVEU6IER1ZSB0byBs
aW1pdGF0aW9uIG9mIHRoZSBDKysgbGFuZ3VhZ2UsIHdlIGhhdmUgdG8KLS8vIGxlYXZlIHNvbWUg
aW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBpbiB0aGlzIGhlYWRlciBmaWxlLgotLy8g
VGhleSBhcmUgY2xlYXJseSBtYXJrZWQgYnkgY29tbWVudHMgbGlrZSB0aGlzOgotLy8KLS8vICAg
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotLy8KLS8vIFN1Y2ggY29kZSBpcyBOT1QgbWVhbnQgdG8gYmUgdXNlZCBieSBhIHVzZXIgZGly
ZWN0bHksIGFuZCBpcyBzdWJqZWN0Ci0vLyB0byBDSEFOR0UgV0lUSE9VVCBOT1RJQ0UuICBUaGVy
ZWZvcmUgRE8gTk9UIERFUEVORCBPTiBJVCBpbiBhIHVzZXIKLS8vIHByb2dyYW0hCi0vLwotLy8g
QWNrbm93bGVkZ21lbnQ6IEdvb2dsZSBUZXN0IGJvcnJvd2VkIHRoZSBpZGVhIG9mIGF1dG9tYXRp
YyB0ZXN0Ci0vLyByZWdpc3RyYXRpb24gZnJvbSBCYXJ0aGVsZW15IERhZ2VuYWlzJyAoYmFydGhl
bGVteUBwcm9sb2dpcXVlLmNvbSkKLS8vIGVhc3lVbml0IGZyYW1ld29yay4KLQotI2lmbmRlZiBH
VEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1Rf
R1RFU1RfSF8KLQotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxvc3RyZWFtPgotI2luY2x1
ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgi
Ci0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LW1lc3NhZ2UuaCIK
LSNpbmNsdWRlICJndGVzdC9ndGVzdC1wYXJhbS10ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QtcHJpbnRlcnMuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgiCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtdHlwZWQtdGVz
dC5oIgotCi0vLyBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBkaWZmZXJlbnQgc3RyaW5nIGNs
YXNzZXMgYXJlIGF2YWlsYWJsZS4KLS8vIE9uIExpbnV4LCBpbiBhZGRpdGlvbiB0byA6OnN0ZDo6
c3RyaW5nLCBHb29nbGUgYWxzbyBtYWtlcyB1c2Ugb2YKLS8vIGNsYXNzIDo6c3RyaW5nLCB3aGlj
aCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIDo6c3RkOjpzdHJpbmcsIGJ1dAotLy8gaGFzIGEg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgotLy8KLS8vIFlvdSBjYW4gZGVmaW5lIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HIHRvIDEgdG8gaW5kaWNhdGUgdGhhdAotLy8gOjpzdHJpbmcgaXMgYXZh
aWxhYmxlIEFORCBpcyBhIGRpc3RpbmN0IHR5cGUgdG8gOjpzdGQ6OnN0cmluZywgb3IKLS8vIGRl
ZmluZSBpdCB0byAwIHRvIGluZGljYXRlIG90aGVyd2lzZS4KLS8vCi0vLyBJZiA6OnN0ZDo6c3Ry
aW5nIGFuZCA6OnN0cmluZyBhcmUgdGhlIHNhbWUgY2xhc3Mgb24geW91ciBwbGF0Zm9ybQotLy8g
ZHVlIHRvIGFsaWFzaW5nLCB5b3Ugc2hvdWxkIGRlZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklO
RyB0byAwLgotLy8KLS8vIElmIHlvdSBkbyBub3QgZGVmaW5lIEdURVNUX0hBU19HTE9CQUxfU1RS
SU5HLCBpdCBpcyBkZWZpbmVkCi0vLyBoZXVyaXN0aWNhbGx5LgotCi1uYW1lc3BhY2UgdGVzdGlu
ZyB7Ci0KLS8vIERlY2xhcmVzIHRoZSBmbGFncy4KLQotLy8gVGhpcyBmbGFnIHRlbXBvcmFyeSBl
bmFibGVzIHRoZSBkaXNhYmxlZCB0ZXN0cy4KLUdURVNUX0RFQ0xBUkVfYm9vbF8oYWxzb19ydW5f
ZGlzYWJsZWRfdGVzdHMpOwotCi0vLyBUaGlzIGZsYWcgYnJpbmdzIHRoZSBkZWJ1Z2dlciBvbiBh
biBhc3NlcnRpb24gZmFpbHVyZS4KLUdURVNUX0RFQ0xBUkVfYm9vbF8oYnJlYWtfb25fZmFpbHVy
ZSk7Ci0KLS8vIFRoaXMgZmxhZyBjb250cm9scyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhdGNoZXMg
YWxsIHRlc3QtdGhyb3duIGV4Y2VwdGlvbnMKLS8vIGFuZCBsb2dzIHRoZW0gYXMgZmFpbHVyZXMu
Ci1HVEVTVF9ERUNMQVJFX2Jvb2xfKGNhdGNoX2V4Y2VwdGlvbnMpOwotCi0vLyBUaGlzIGZsYWcg
ZW5hYmxlcyB1c2luZyBjb2xvcnMgaW4gdGVybWluYWwgb3V0cHV0LiBBdmFpbGFibGUgdmFsdWVz
IGFyZQotLy8gInllcyIgdG8gZW5hYmxlIGNvbG9ycywgIm5vIiAoZGlzYWJsZSBjb2xvcnMpLCBv
ciAiYXV0byIgKHRoZSBkZWZhdWx0KQotLy8gdG8gbGV0IEdvb2dsZSBUZXN0IGRlY2lkZS4KLUdU
RVNUX0RFQ0xBUkVfc3RyaW5nXyhjb2xvcik7Ci0KLS8vIFRoaXMgZmxhZyBzZXRzIHVwIHRoZSBm
aWx0ZXIgdG8gc2VsZWN0IGJ5IG5hbWUgdXNpbmcgYSBnbG9iIHBhdHRlcm4KLS8vIHRoZSB0ZXN0
cyB0byBydW4uIElmIHRoZSBmaWx0ZXIgaXMgbm90IGdpdmVuIGFsbCB0ZXN0cyBhcmUgZXhlY3V0
ZWQuCi1HVEVTVF9ERUNMQVJFX3N0cmluZ18oZmlsdGVyKTsKLQotLy8gVGhpcyBmbGFnIGNhdXNl
cyB0aGUgR29vZ2xlIFRlc3QgdG8gbGlzdCB0ZXN0cy4gTm9uZSBvZiB0aGUgdGVzdHMgbGlzdGVk
Ci0vLyBhcmUgYWN0dWFsbHkgcnVuIGlmIHRoZSBmbGFnIGlzIHByb3ZpZGVkLgotR1RFU1RfREVD
TEFSRV9ib29sXyhsaXN0X3Rlc3RzKTsKLQotLy8gVGhpcyBmbGFnIGNvbnRyb2xzIHdoZXRoZXIg
R29vZ2xlIFRlc3QgZW1pdHMgYSBkZXRhaWxlZCBYTUwgcmVwb3J0IHRvIGEgZmlsZQotLy8gaW4g
YWRkaXRpb24gdG8gaXRzIG5vcm1hbCB0ZXh0dWFsIG91dHB1dC4KLUdURVNUX0RFQ0xBUkVfc3Ry
aW5nXyhvdXRwdXQpOwotCi0vLyBUaGlzIGZsYWdzIGNvbnRyb2wgd2hldGhlciBHb29nbGUgVGVz
dCBwcmludHMgdGhlIGVsYXBzZWQgdGltZSBmb3IgZWFjaAotLy8gdGVzdC4KLUdURVNUX0RFQ0xB
UkVfYm9vbF8ocHJpbnRfdGltZSk7Ci0KLS8vIFRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIHJhbmRv
bSBudW1iZXIgc2VlZC4KLUdURVNUX0RFQ0xBUkVfaW50MzJfKHJhbmRvbV9zZWVkKTsKLQotLy8g
VGhpcyBmbGFnIHNldHMgaG93IG1hbnkgdGltZXMgdGhlIHRlc3RzIGFyZSByZXBlYXRlZC4gVGhl
IGRlZmF1bHQgdmFsdWUKLS8vIGlzIDEuIElmIHRoZSB2YWx1ZSBpcyAtMSB0aGUgdGVzdHMgYXJl
IHJlcGVhdGluZyBmb3JldmVyLgotR1RFU1RfREVDTEFSRV9pbnQzMl8ocmVwZWF0KTsKLQotLy8g
VGhpcyBmbGFnIGNvbnRyb2xzIHdoZXRoZXIgR29vZ2xlIFRlc3QgaW5jbHVkZXMgR29vZ2xlIFRl
c3QgaW50ZXJuYWwKLS8vIHN0YWNrIGZyYW1lcyBpbiBmYWlsdXJlIHN0YWNrIHRyYWNlcy4KLUdU
RVNUX0RFQ0xBUkVfYm9vbF8oc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMpOwotCi0vLyBXaGVu
IHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIHRlc3RzJyBvcmRlciBpcyByYW5kb21pemVkIG9uIGV2
ZXJ5IGl0ZXJhdGlvbi4KLUdURVNUX0RFQ0xBUkVfYm9vbF8oc2h1ZmZsZSk7Ci0KLS8vIFRoaXMg
ZmxhZyBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZQot
Ly8gcHJpbnRlZCBpbiBhIGZhaWx1cmUgbWVzc2FnZS4KLUdURVNUX0RFQ0xBUkVfaW50MzJfKHN0
YWNrX3RyYWNlX2RlcHRoKTsKLQotLy8gV2hlbiB0aGlzIGZsYWcgaXMgc3BlY2lmaWVkLCBhIGZh
aWxlZCBhc3NlcnRpb24gd2lsbCB0aHJvdyBhbgotLy8gZXhjZXB0aW9uIGlmIGV4Y2VwdGlvbnMg
YXJlIGVuYWJsZWQsIG9yIGV4aXQgdGhlIHByb2dyYW0gd2l0aCBhCi0vLyBub24temVybyBjb2Rl
IG90aGVyd2lzZS4KLUdURVNUX0RFQ0xBUkVfYm9vbF8odGhyb3dfb25fZmFpbHVyZSk7Ci0KLS8v
IFdoZW4gdGhpcyBmbGFnIGlzIHNldCB3aXRoIGEgImhvc3Q6cG9ydCIgc3RyaW5nLCBvbiBzdXBw
b3J0ZWQKLS8vIHBsYXRmb3JtcyB0ZXN0IHJlc3VsdHMgYXJlIHN0cmVhbWVkIHRvIHRoZSBzcGVj
aWZpZWQgcG9ydCBvbgotLy8gdGhlIHNwZWNpZmllZCBob3N0IG1hY2hpbmUuCi1HVEVTVF9ERUNM
QVJFX3N0cmluZ18oc3RyZWFtX3Jlc3VsdF90byk7Ci0KLS8vIFRoZSB1cHBlciBsaW1pdCBmb3Ig
dmFsaWQgc3RhY2sgdHJhY2UgZGVwdGhzLgotY29uc3QgaW50IGtNYXhTdGFja1RyYWNlRGVwdGgg
PSAxMDA7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLWNsYXNzIEFzc2VydEhlbHBlcjsKLWNs
YXNzIERlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwotY2xhc3MgRXhlY0RlYXRo
VGVzdDsKLWNsYXNzIE5vRXhlY0RlYXRoVGVzdDsKLWNsYXNzIEZpbmFsU3VjY2Vzc0NoZWNrZXI7
Ci1jbGFzcyBHVGVzdEZsYWdTYXZlcjsKLWNsYXNzIFN0cmVhbWluZ0xpc3RlbmVyVGVzdDsKLWNs
YXNzIFRlc3RSZXN1bHRBY2Nlc3NvcjsKLWNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29y
OwotY2xhc3MgVGVzdEV2ZW50UmVwZWF0ZXI7Ci1jbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEhlbHBlcjsKLWNsYXNzIFdpbmRvd3NEZWF0aFRlc3Q7Ci1jbGFzcyBVbml0VGVzdEltcGwq
IEdldFVuaXRUZXN0SW1wbCgpOwotdm9pZCBSZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24o
VGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7Ci0KLX0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotCi0vLyBUaGUgZnJpZW5kIHJlbGF0aW9uc2hpcCBvZiBzb21lIG9mIHRo
ZXNlIGNsYXNzZXMgaXMgY3ljbGljLgotLy8gSWYgd2UgZG9uJ3QgZm9yd2FyZCBkZWNsYXJlIHRo
ZW0gdGhlIGNvbXBpbGVyIG1pZ2h0IGNvbmZ1c2UgdGhlIGNsYXNzZXMKLS8vIGluIGZyaWVuZHNo
aXAgY2xhdXNlcyB3aXRoIHNhbWUgbmFtZWQgY2xhc3NlcyBvbiB0aGUgc2NvcGUuCi1jbGFzcyBU
ZXN0OwotY2xhc3MgVGVzdENhc2U7Ci1jbGFzcyBUZXN0SW5mbzsKLWNsYXNzIFVuaXRUZXN0Owot
Ci0vLyBBIGNsYXNzIGZvciBpbmRpY2F0aW5nIHdoZXRoZXIgYW4gYXNzZXJ0aW9uIHdhcyBzdWNj
ZXNzZnVsLiAgV2hlbgotLy8gdGhlIGFzc2VydGlvbiB3YXNuJ3Qgc3VjY2Vzc2Z1bCwgdGhlIEFz
c2VydGlvblJlc3VsdCBvYmplY3QKLS8vIHJlbWVtYmVycyBhIG5vbi1lbXB0eSBtZXNzYWdlIHRo
YXQgZGVzY3JpYmVzIGhvdyBpdCBmYWlsZWQuCi0vLwotLy8gVG8gY3JlYXRlIGFuIGluc3RhbmNl
IG9mIHRoaXMgY2xhc3MsIHVzZSBvbmUgb2YgdGhlIGZhY3RvcnkgZnVuY3Rpb25zCi0vLyAoQXNz
ZXJ0aW9uU3VjY2VzcygpIGFuZCBBc3NlcnRpb25GYWlsdXJlKCkpLgotLy8KLS8vIFRoaXMgY2xh
c3MgaXMgdXNlZnVsIGZvciB0d28gcHVycG9zZXM6Ci0vLyAgIDEuIERlZmluaW5nIHByZWRpY2F0
ZSBmdW5jdGlvbnMgdG8gYmUgdXNlZCB3aXRoIEJvb2xlYW4gdGVzdCBhc3NlcnRpb25zCi0vLyAg
ICAgIEVYUEVDVF9UUlVFL0VYUEVDVF9GQUxTRSBhbmQgdGhlaXIgQVNTRVJUXyBjb3VudGVycGFy
dHMKLS8vICAgMi4gRGVmaW5pbmcgcHJlZGljYXRlLWZvcm1hdCBmdW5jdGlvbnMgdG8gYmUKLS8v
ICAgICAgdXNlZCB3aXRoIHByZWRpY2F0ZSBhc3NlcnRpb25zIChBU1NFUlRfUFJFRF9GT1JNQVQq
LCBldGMpLgotLy8KLS8vIEZvciBleGFtcGxlLCBpZiB5b3UgZGVmaW5lIElzRXZlbiBwcmVkaWNh
dGU6Ci0vLwotLy8gICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgSXNFdmVuKGludCBuKSB7Ci0v
LyAgICAgaWYgKChuICUgMikgPT0gMCkKLS8vICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRp
b25TdWNjZXNzKCk7Ci0vLyAgICAgZWxzZQotLy8gICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2Vy
dGlvbkZhaWx1cmUoKSA8PCBuIDw8ICIgaXMgb2RkIjsKLS8vICAgfQotLy8KLS8vIFRoZW4gdGhl
IGZhaWxlZCBleHBlY3RhdGlvbiBFWFBFQ1RfVFJVRShJc0V2ZW4oRmliKDUpKSkKLS8vIHdpbGwg
cHJpbnQgdGhlIG1lc3NhZ2UKLS8vCi0vLyAgIFZhbHVlIG9mOiBJc0V2ZW4oRmliKDUpKQotLy8g
ICAgIEFjdHVhbDogZmFsc2UgKDUgaXMgb2RkKQotLy8gICBFeHBlY3RlZDogdHJ1ZQotLy8KLS8v
IGluc3RlYWQgb2YgYSBtb3JlIG9wYXF1ZQotLy8KLS8vICAgVmFsdWUgb2Y6IElzRXZlbihGaWIo
NSkpCi0vLyAgICAgQWN0dWFsOiBmYWxzZQotLy8gICBFeHBlY3RlZDogdHJ1ZQotLy8KLS8vIGlu
IGNhc2UgSXNFdmVuIGlzIGEgc2ltcGxlIEJvb2xlYW4gcHJlZGljYXRlLgotLy8KLS8vIElmIHlv
dSBleHBlY3QgeW91ciBwcmVkaWNhdGUgdG8gYmUgcmV1c2VkIGFuZCB3YW50IHRvIHN1cHBvcnQg
aW5mb3JtYXRpdmUKLS8vIG1lc3NhZ2VzIGluIEVYUEVDVF9GQUxTRSBhbmQgQVNTRVJUX0ZBTFNF
IChuZWdhdGl2ZSBhc3NlcnRpb25zIHNob3cgdXAKLS8vIGFib3V0IGhhbGYgYXMgb2Z0ZW4gYXMg
cG9zaXRpdmUgb25lcyBpbiBvdXIgdGVzdHMpLCBzdXBwbHkgbWVzc2FnZXMgZm9yCi0vLyBib3Ro
IHN1Y2Nlc3MgYW5kIGZhaWx1cmUgY2FzZXM6Ci0vLwotLy8gICB0ZXN0aW5nOjpBc3NlcnRpb25S
ZXN1bHQgSXNFdmVuKGludCBuKSB7Ci0vLyAgICAgaWYgKChuICUgMikgPT0gMCkKLS8vICAgICAg
IHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCkgPDwgbiA8PCAiIGlzIGV2ZW4iOwot
Ly8gICAgIGVsc2UKLS8vICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkg
PDwgbiA8PCAiIGlzIG9kZCI7Ci0vLyAgIH0KLS8vCi0vLyBUaGVuIGEgc3RhdGVtZW50IEVYUEVD
VF9GQUxTRShJc0V2ZW4oRmliKDYpKSkgd2lsbCBwcmludAotLy8KLS8vICAgVmFsdWUgb2Y6IElz
RXZlbihGaWIoNikpCi0vLyAgICAgQWN0dWFsOiB0cnVlICg4IGlzIGV2ZW4pCi0vLyAgIEV4cGVj
dGVkOiBmYWxzZQotLy8KLS8vIE5COiBQcmVkaWNhdGVzIHRoYXQgc3VwcG9ydCBuZWdhdGl2ZSBC
b29sZWFuIGFzc2VydGlvbnMgaGF2ZSByZWR1Y2VkCi0vLyBwZXJmb3JtYW5jZSBpbiBwb3NpdGl2
ZSBvbmVzIHNvIGJlIGNhcmVmdWwgbm90IHRvIHVzZSB0aGVtIGluIHRlc3RzCi0vLyB0aGF0IGhh
dmUgbG90cyAodGVucyBvZiB0aG91c2FuZHMpIG9mIHBvc2l0aXZlIEJvb2xlYW4gYXNzZXJ0aW9u
cy4KLS8vCi0vLyBUbyB1c2UgdGhpcyBjbGFzcyB3aXRoIEVYUEVDVF9QUkVEX0ZPUk1BVCBhc3Nl
cnRpb25zIHN1Y2ggYXM6Ci0vLwotLy8gICAvLyBWZXJpZmllcyB0aGF0IEZvbygpIHJldHVybnMg
YW4gZXZlbiBudW1iZXIuCi0vLyAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEoSXNFdmVuLCBGb28oKSk7
Ci0vLwotLy8geW91IG5lZWQgdG8gZGVmaW5lOgotLy8KLS8vICAgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IElzRXZlbihjb25zdCBjaGFyKiBleHByLCBpbnQgbikgewotLy8gICAgIGlmICgobiAl
IDIpID09IDApCi0vLyAgICAgICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwot
Ly8gICAgIGVsc2UKLS8vICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkK
LS8vICAgICAgICAgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cHIgPDwgIiBpcyBldmVuXG4gIEFjdHVh
bDogaXQncyAiIDw8IG47Ci0vLyAgIH0KLS8vCi0vLyBJZiBGb28oKSByZXR1cm5zIDUsIHlvdSB3
aWxsIHNlZSB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6Ci0vLwotLy8gICBFeHBlY3RlZDogRm9vKCkg
aXMgZXZlbgotLy8gICAgIEFjdHVhbDogaXQncyA1Ci0vLwotY2xhc3MgR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgewotIHB1YmxpYzoKLSAgLy8gQ29weSBjb25zdHJ1Y3Rvci4KLSAgLy8gVXNl
ZCBpbiBFWFBFQ1RfVFJVRS9GQUxTRShhc3NlcnRpb25fcmVzdWx0KS4KLSAgQXNzZXJ0aW9uUmVz
dWx0KGNvbnN0IEFzc2VydGlvblJlc3VsdCYgb3RoZXIpOwotCi0gIEdURVNUX0RJU0FCTEVfTVND
X1dBUk5JTkdTX1BVU0hfKDQ4MDAgLyogZm9yY2luZyB2YWx1ZSB0byBib29sICovKQotCi0gIC8v
IFVzZWQgaW4gdGhlIEVYUEVDVF9UUlVFL0ZBTFNFKGJvb2xfZXhwcmVzc2lvbikuCi0gIC8vCi0g
IC8vIFQgbXVzdCBiZSBjb250ZXh0dWFsbHkgY29udmVydGlibGUgdG8gYm9vbC4KLSAgLy8KLSAg
Ly8gVGhlIHNlY29uZCBwYXJhbWV0ZXIgcHJldmVudHMgdGhpcyBvdmVybG9hZCBmcm9tIGJlaW5n
IGNvbnNpZGVyZWQgaWYKLSAgLy8gdGhlIGFyZ3VtZW50IGlzIGltcGxpY2l0bHkgY29udmVydGli
bGUgdG8gQXNzZXJ0aW9uUmVzdWx0LiBJbiB0aGF0IGNhc2UKLSAgLy8gd2Ugd2FudCBBc3NlcnRp
b25SZXN1bHQncyBjb3B5IGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQuCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBleHBsaWNpdCBBc3NlcnRpb25SZXN1bHQoCi0gICAgICBjb25zdCBUJiBzdWNj
ZXNzLAotICAgICAgdHlwZW5hbWUgaW50ZXJuYWw6OkVuYWJsZUlmPAotICAgICAgICAgICFpbnRl
cm5hbDo6SW1wbGljaXRseUNvbnZlcnRpYmxlPFQsIEFzc2VydGlvblJlc3VsdD46OnZhbHVlPjo6
dHlwZSoKLSAgICAgICAgICAvKmVuYWJsZXIqLyA9IE5VTEwpCi0gICAgICA6IHN1Y2Nlc3NfKHN1
Y2Nlc3MpIHt9Ci0KLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi0KLSAgLy8g
QXNzaWdubWVudCBvcGVyYXRvci4KLSAgQXNzZXJ0aW9uUmVzdWx0JiBvcGVyYXRvcj0oQXNzZXJ0
aW9uUmVzdWx0IG90aGVyKSB7Ci0gICAgc3dhcChvdGhlcik7Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgYXNzZXJ0aW9uIHN1Y2NlZWRlZC4KLSAg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHN1Y2Nlc3NfOyB9ICAvLyBOT0xJTlQKLQot
ICAvLyBSZXR1cm5zIHRoZSBhc3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3aXRoIEVYUEVDVC9B
U1NFUlRfRkFMU0UuCi0gIEFzc2VydGlvblJlc3VsdCBvcGVyYXRvciEoKSBjb25zdDsKLQotICAv
LyBSZXR1cm5zIHRoZSB0ZXh0IHN0cmVhbWVkIGludG8gdGhpcyBBc3NlcnRpb25SZXN1bHQuIFRl
c3QgYXNzZXJ0aW9ucwotICAvLyB1c2UgaXQgd2hlbiB0aGV5IGZhaWwgKGkuZS4sIHRoZSBwcmVk
aWNhdGUncyBvdXRjb21lIGRvZXNuJ3QgbWF0Y2ggdGhlCi0gIC8vIGFzc2VydGlvbidzIGV4cGVj
dGF0aW9uKS4gV2hlbiBub3RoaW5nIGhhcyBiZWVuIHN0cmVhbWVkIGludG8gdGhlCi0gIC8vIG9i
amVjdCwgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCi0gIGNvbnN0IGNoYXIqIG1lc3NhZ2UoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIG1lc3NhZ2VfLmdldCgpICE9IE5VTEwgPyAgbWVzc2FnZV8tPmNf
c3RyKCkgOiAiIjsKLSAgfQotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1vdmUgdGhp
cyBhZnRlciBtYWtpbmcgc3VyZSBubyBjbGllbnRzIHVzZSBpdC4KLSAgLy8gRGVwcmVjYXRlZDsg
cGxlYXNlIHVzZSBtZXNzYWdlKCkgaW5zdGVhZC4KLSAgY29uc3QgY2hhciogZmFpbHVyZV9tZXNz
YWdlKCkgY29uc3QgeyByZXR1cm4gbWVzc2FnZSgpOyB9Ci0KLSAgLy8gU3RyZWFtcyBhIGN1c3Rv
bSBmYWlsdXJlIG1lc3NhZ2UgaW50byB0aGlzIG9iamVjdC4KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IEFzc2VydGlvblJlc3VsdCYgb3BlcmF0b3I8PChjb25zdCBUJiB2YWx1ZSkgewotICAgIEFw
cGVuZE1lc3NhZ2UoTWVzc2FnZSgpIDw8IHZhbHVlKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LQotICAvLyBBbGxvd3Mgc3RyZWFtaW5nIGJhc2ljIG91dHB1dCBtYW5pcHVsYXRvcnMgc3VjaCBh
cyBlbmRsIG9yIGZsdXNoIGludG8KLSAgLy8gdGhpcyBvYmplY3QuCi0gIEFzc2VydGlvblJlc3Vs
dCYgb3BlcmF0b3I8PCgKLSAgICAgIDo6c3RkOjpvc3RyZWFtJiAoKmJhc2ljX21hbmlwdWxhdG9y
KSg6OnN0ZDo6b3N0cmVhbSYgc3RyZWFtKSkgewotICAgIEFwcGVuZE1lc3NhZ2UoTWVzc2FnZSgp
IDw8IGJhc2ljX21hbmlwdWxhdG9yKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotIHByaXZh
dGU6Ci0gIC8vIEFwcGVuZHMgdGhlIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gbWVzc2FnZV8uCi0g
IHZvaWQgQXBwZW5kTWVzc2FnZShjb25zdCBNZXNzYWdlJiBhX21lc3NhZ2UpIHsKLSAgICBpZiAo
bWVzc2FnZV8uZ2V0KCkgPT0gTlVMTCkKLSAgICAgIG1lc3NhZ2VfLnJlc2V0KG5ldyA6OnN0ZDo6
c3RyaW5nKTsKLSAgICBtZXNzYWdlXy0+YXBwZW5kKGFfbWVzc2FnZS5HZXRTdHJpbmcoKS5jX3N0
cigpKTsKLSAgfQotCi0gIC8vIFN3YXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMgQXNzZXJ0aW9uUmVz
dWx0IHdpdGggb3RoZXIuCi0gIHZvaWQgc3dhcChBc3NlcnRpb25SZXN1bHQmIG90aGVyKTsKLQot
ICAvLyBTdG9yZXMgcmVzdWx0IG9mIHRoZSBhc3NlcnRpb24gcHJlZGljYXRlLgotICBib29sIHN1
Y2Nlc3NfOwotICAvLyBTdG9yZXMgdGhlIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgY29uZGl0aW9u
IGluIGNhc2UgdGhlIGV4cGVjdGF0aW9uCi0gIC8vIGNvbnN0cnVjdCBpcyBub3Qgc2F0aXNmaWVk
IHdpdGggdGhlIHByZWRpY2F0ZSdzIG91dGNvbWUuCi0gIC8vIFJlZmVyZW5jZWQgdmlhIGEgcG9p
bnRlciB0byBhdm9pZCB0YWtpbmcgdG9vIG11Y2ggc3RhY2sgZnJhbWUgc3BhY2UKLSAgLy8gd2l0
aCB0ZXN0IGFzc2VydGlvbnMuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPCA6OnN0ZDo6c3RyaW5n
PiBtZXNzYWdlXzsKLX07Ci0KLS8vIE1ha2VzIGEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gcmVzdWx0
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0vLyBN
YWtlcyBhIGZhaWxlZCBhc3NlcnRpb24gcmVzdWx0LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1
bHQgQXNzZXJ0aW9uRmFpbHVyZSgpOwotCi0vLyBNYWtlcyBhIGZhaWxlZCBhc3NlcnRpb24gcmVz
dWx0IHdpdGggdGhlIGdpdmVuIGZhaWx1cmUgbWVzc2FnZS4KLS8vIERlcHJlY2F0ZWQ7IHVzZSBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQXNz
ZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtc2cpOwotCi0vLyBUaGUgYWJzdHJhY3QgY2xh
c3MgdGhhdCBhbGwgdGVzdHMgaW5oZXJpdCBmcm9tLgotLy8KLS8vIEluIEdvb2dsZSBUZXN0LCBh
IHVuaXQgdGVzdCBwcm9ncmFtIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RDYXNlcywgYW5kCi0v
LyBlYWNoIFRlc3RDYXNlIGNvbnRhaW5zIG9uZSBvciBtYW55IFRlc3RzLgotLy8KLS8vIFdoZW4g
eW91IGRlZmluZSBhIHRlc3QgdXNpbmcgdGhlIFRFU1QgbWFjcm8sIHlvdSBkb24ndCBuZWVkIHRv
Ci0vLyBleHBsaWNpdGx5IGRlcml2ZSBmcm9tIFRlc3QgLSB0aGUgVEVTVCBtYWNybyBhdXRvbWF0
aWNhbGx5IGRvZXMKLS8vIHRoaXMgZm9yIHlvdS4KLS8vCi0vLyBUaGUgb25seSB0aW1lIHlvdSBk
ZXJpdmUgZnJvbSBUZXN0IGlzIHdoZW4gZGVmaW5pbmcgYSB0ZXN0IGZpeHR1cmUKLS8vIHRvIGJl
IHVzZWQgYSBURVNUX0YuICBGb3IgZXhhbXBsZToKLS8vCi0vLyAgIGNsYXNzIEZvb1Rlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0vLyAgICBwcm90ZWN0ZWQ6Ci0vLyAgICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlIHsgLi4uIH0KLS8vICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyAu
Li4gfQotLy8gICAgIC4uLgotLy8gICB9OwotLy8KLS8vICAgVEVTVF9GKEZvb1Rlc3QsIEJhcikg
eyAuLi4gfQotLy8gICBURVNUX0YoRm9vVGVzdCwgQmF6KSB7IC4uLiB9Ci0vLwotLy8gVGVzdCBp
cyBub3QgY29weWFibGUuCi1jbGFzcyBHVEVTVF9BUElfIFRlc3QgewotIHB1YmxpYzoKLSAgZnJp
ZW5kIGNsYXNzIFRlc3RJbmZvOwotCi0gIC8vIERlZmluZXMgdHlwZXMgZm9yIHBvaW50ZXJzIHRv
IGZ1bmN0aW9ucyB0aGF0IHNldCB1cCBhbmQgdGVhciBkb3duCi0gIC8vIGEgdGVzdCBjYXNlLgot
ICB0eXBlZGVmIGludGVybmFsOjpTZXRVcFRlc3RDYXNlRnVuYyBTZXRVcFRlc3RDYXNlRnVuYzsK
LSAgdHlwZWRlZiBpbnRlcm5hbDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgVGVhckRvd25UZXN0Q2Fz
ZUZ1bmM7Ci0KLSAgLy8gVGhlIGQndG9yIGlzIHZpcnR1YWwgYXMgd2UgaW50ZW5kIHRvIGluaGVy
aXQgZnJvbSBUZXN0LgotICB2aXJ0dWFsIH5UZXN0KCk7Ci0KLSAgLy8gU2V0cyB1cCB0aGUgc3R1
ZmYgc2hhcmVkIGJ5IGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgLy8KLSAgLy8gR29v
Z2xlIFRlc3Qgd2lsbCBjYWxsIEZvbzo6U2V0VXBUZXN0Q2FzZSgpIGJlZm9yZSBydW5uaW5nIHRo
ZSBmaXJzdAotICAvLyB0ZXN0IGluIHRlc3QgY2FzZSBGb28uICBIZW5jZSBhIHN1Yi1jbGFzcyBj
YW4gZGVmaW5lIGl0cyBvd24KLSAgLy8gU2V0VXBUZXN0Q2FzZSgpIG1ldGhvZCB0byBzaGFkb3cg
dGhlIG9uZSBkZWZpbmVkIGluIHRoZSBzdXBlcgotICAvLyBjbGFzcy4KLSAgc3RhdGljIHZvaWQg
U2V0VXBUZXN0Q2FzZSgpIHt9Ci0KLSAgLy8gVGVhcnMgZG93biB0aGUgc3R1ZmYgc2hhcmVkIGJ5
IGFsbCB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgLy8KLSAgLy8gR29vZ2xlIFRlc3Qgd2ls
bCBjYWxsIEZvbzo6VGVhckRvd25UZXN0Q2FzZSgpIGFmdGVyIHJ1bm5pbmcgdGhlIGxhc3QKLSAg
Ly8gdGVzdCBpbiB0ZXN0IGNhc2UgRm9vLiAgSGVuY2UgYSBzdWItY2xhc3MgY2FuIGRlZmluZSBp
dHMgb3duCi0gIC8vIFRlYXJEb3duVGVzdENhc2UoKSBtZXRob2QgdG8gc2hhZG93IHRoZSBvbmUg
ZGVmaW5lZCBpbiB0aGUgc3VwZXIKLSAgLy8gY2xhc3MuCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7fQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBo
YXMgYSBmYXRhbCBmYWlsdXJlLgotICBzdGF0aWMgYm9vbCBIYXNGYXRhbEZhaWx1cmUoKTsKLQot
ICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBjdXJyZW50IHRlc3QgaGFzIGEgbm9uLWZhdGFsIGZh
aWx1cmUuCi0gIHN0YXRpYyBib29sIEhhc05vbmZhdGFsRmFpbHVyZSgpOwotCi0gIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSAoZWl0aGVyIGZhdGFsIG9yCi0gIC8v
IG5vbi1mYXRhbCkgZmFpbHVyZS4KLSAgc3RhdGljIGJvb2wgSGFzRmFpbHVyZSgpIHsgcmV0dXJu
IEhhc0ZhdGFsRmFpbHVyZSgpIHx8IEhhc05vbmZhdGFsRmFpbHVyZSgpOyB9Ci0KLSAgLy8gTG9n
cyBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB0ZXN0LCB0ZXN0IGNhc2UsIG9yIGZvciB0aGUg
ZW50aXJlCi0gIC8vIGludm9jYXRpb24gb2YgdGhlIHRlc3QgcHJvZ3JhbSB3aGVuIHVzZWQgb3V0
c2lkZSBvZiB0aGUgY29udGV4dCBvZiBhCi0gIC8vIHRlc3QgY2FzZS4gIE9ubHkgdGhlIGxhc3Qg
dmFsdWUgZm9yIGEgZ2l2ZW4ga2V5IGlzIHJlbWVtYmVyZWQuICBUaGVzZQotICAvLyBhcmUgcHVi
bGljIHN0YXRpYyBzbyB0aGV5IGNhbiBiZSBjYWxsZWQgZnJvbSB1dGlsaXR5IGZ1bmN0aW9ucyB0
aGF0IGFyZQotICAvLyBub3QgbWVtYmVycyBvZiB0aGUgdGVzdCBmaXh0dXJlLiAgQ2FsbHMgdG8g
UmVjb3JkUHJvcGVydHkgbWFkZSBkdXJpbmcKLSAgLy8gbGlmZXNwYW4gb2YgdGhlIHRlc3QgKGZy
b20gdGhlIG1vbWVudCBpdHMgY29uc3RydWN0b3Igc3RhcnRzIHRvIHRoZQotICAvLyBtb21lbnQg
aXRzIGRlc3RydWN0b3IgZmluaXNoZXMpIHdpbGwgYmUgb3V0cHV0IGluIFhNTCBhcyBhdHRyaWJ1
dGVzIG9mCi0gIC8vIHRoZSA8dGVzdGNhc2U+IGVsZW1lbnQuICBQcm9wZXJ0aWVzIHJlY29yZGVk
IGZyb20gZml4dHVyZSdzCi0gIC8vIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25UZXN0Q2FzZSBh
cmUgbG9nZ2VkIGFzIGF0dHJpYnV0ZXMgb2YgdGhlCi0gIC8vIGNvcnJlc3BvbmRpbmcgPHRlc3Rz
dWl0ZT4gZWxlbWVudC4gIENhbGxzIHRvIFJlY29yZFByb3BlcnR5IG1hZGUgaW4gdGhlCi0gIC8v
IGdsb2JhbCBjb250ZXh0IChiZWZvcmUgb3IgYWZ0ZXIgaW52b2NhdGlvbiBvZiBSVU5fQUxMX1RF
U1RTIGFuZCBmcm9tCi0gIC8vIFNldFVwL1RlYXJEb3duIG1ldGhvZCBvZiBFbnZpcm9ubWVudCBv
YmplY3RzIHJlZ2lzdGVyZWQgd2l0aCBHb29nbGUKLSAgLy8gVGVzdCkgd2lsbCBiZSBvdXRwdXQg
YXMgYXR0cmlidXRlcyBvZiB0aGUgPHRlc3RzdWl0ZXM+IGVsZW1lbnQuCi0gIHN0YXRpYyB2b2lk
IFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZSk7Ci0gIHN0YXRpYyB2b2lkIFJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5n
JiBrZXksIGludCB2YWx1ZSk7Ci0KLSBwcm90ZWN0ZWQ6Ci0gIC8vIENyZWF0ZXMgYSBUZXN0IG9i
amVjdC4KLSAgVGVzdCgpOwotCi0gIC8vIFNldHMgdXAgdGhlIHRlc3QgZml4dHVyZS4KLSAgdmly
dHVhbCB2b2lkIFNldFVwKCk7Ci0KLSAgLy8gVGVhcnMgZG93biB0aGUgdGVzdCBmaXh0dXJlLgot
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKTsKLQotIHByaXZhdGU6Ci0gIC8vIFJldHVybnMgdHJ1
ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgdGhlIHNhbWUgZml4dHVyZSBjbGFzcyBhcwotICAv
LyB0aGUgZmlyc3QgdGVzdCBpbiB0aGUgY3VycmVudCB0ZXN0IGNhc2UuCi0gIHN0YXRpYyBib29s
IEhhc1NhbWVGaXh0dXJlQ2xhc3MoKTsKLQotICAvLyBSdW5zIHRoZSB0ZXN0IGFmdGVyIHRoZSB0
ZXN0IGZpeHR1cmUgaGFzIGJlZW4gc2V0IHVwLgotICAvLwotICAvLyBBIHN1Yi1jbGFzcyBtdXN0
IGltcGxlbWVudCB0aGlzIHRvIGRlZmluZSB0aGUgdGVzdCBsb2dpYy4KLSAgLy8KLSAgLy8gRE8g
Tk9UIE9WRVJSSURFIFRISVMgRlVOQ1RJT04gRElSRUNUTFkgSU4gQSBVU0VSIFBST0dSQU0uCi0g
IC8vIEluc3RlYWQsIHVzZSB0aGUgVEVTVCBvciBURVNUX0YgbWFjcm8uCi0gIHZpcnR1YWwgdm9p
ZCBUZXN0Qm9keSgpID0gMDsKLQotICAvLyBTZXRzIHVwLCBleGVjdXRlcywgYW5kIHRlYXJzIGRv
d24gdGhlIHRlc3QuCi0gIHZvaWQgUnVuKCk7Ci0KLSAgLy8gRGVsZXRlcyBzZWxmLiAgV2UgZGVs
aWJlcmF0ZWx5IHBpY2sgYW4gdW51c3VhbCBuYW1lIGZvciB0aGlzCi0gIC8vIGludGVybmFsIG1l
dGhvZCB0byBhdm9pZCBjbGFzaGluZyB3aXRoIG5hbWVzIHVzZWQgaW4gdXNlciBURVNUcy4KLSAg
dm9pZCBEZWxldGVTZWxmXygpIHsgZGVsZXRlIHRoaXM7IH0KLQotICBjb25zdCBpbnRlcm5hbDo6
c2NvcGVkX3B0cjwgR1RFU1RfRkxBR19TQVZFUl8gPiBndGVzdF9mbGFnX3NhdmVyXzsKLQotICAv
LyBPZnRlbiBhIHVzZXIgbWlzc3BlbGxzIFNldFVwKCkgYXMgU2V0dXAoKSBhbmQgc3BlbmRzIGEg
bG9uZyB0aW1lCi0gIC8vIHdvbmRlcmluZyB3aHkgaXQgaXMgbmV2ZXIgY2FsbGVkIGJ5IEdvb2ds
ZSBUZXN0LiAgVGhlIGRlY2xhcmF0aW9uIG9mCi0gIC8vIHRoZSBmb2xsb3dpbmcgbWV0aG9kIGlz
IHNvbGVseSBmb3IgY2F0Y2hpbmcgc3VjaCBhbiBlcnJvciBhdAotICAvLyBjb21waWxlIHRpbWU6
Ci0gIC8vCi0gIC8vICAgLSBUaGUgcmV0dXJuIHR5cGUgaXMgZGVsaWJlcmF0ZWx5IGNob3NlbiB0
byBiZSBub3Qgdm9pZCwgc28gaXQKLSAgLy8gICB3aWxsIGJlIGEgY29uZmxpY3QgaWYgdm9pZCBT
ZXR1cCgpIGlzIGRlY2xhcmVkIGluIHRoZSB1c2VyJ3MKLSAgLy8gICB0ZXN0IGZpeHR1cmUuCi0g
IC8vCi0gIC8vICAgLSBUaGlzIG1ldGhvZCBpcyBwcml2YXRlLCBzbyBpdCB3aWxsIGJlIGFub3Ro
ZXIgY29tcGlsZXIgZXJyb3IKLSAgLy8gICBpZiB0aGUgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRo
ZSB1c2VyJ3MgdGVzdCBmaXh0dXJlLgotICAvLwotICAvLyBETyBOT1QgT1ZFUlJJREUgVEhJUyBG
VU5DVElPTi4KLSAgLy8KLSAgLy8gSWYgeW91IHNlZSBhbiBlcnJvciBhYm91dCBvdmVycmlkaW5n
IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gb3IKLSAgLy8gYWJvdXQgaXQgYmVpbmcgcHJpdmF0ZSwg
eW91IGhhdmUgbWlzLXNwZWxsZWQgU2V0VXAoKSBhcyBTZXR1cCgpLgotICBzdHJ1Y3QgU2V0dXBf
c2hvdWxkX2JlX3NwZWxsZWRfU2V0VXAge307Ci0gIHZpcnR1YWwgU2V0dXBfc2hvdWxkX2JlX3Nw
ZWxsZWRfU2V0VXAqIFNldHVwKCkgeyByZXR1cm4gTlVMTDsgfQotCi0gIC8vIFdlIGRpc2FsbG93
IGNvcHlpbmcgVGVzdHMuCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdCk7
Ci19OwotCi10eXBlZGVmIGludGVybmFsOjpUaW1lSW5NaWxsaXMgVGltZUluTWlsbGlzOwotCi0v
LyBBIGNvcHlhYmxlIG9iamVjdCByZXByZXNlbnRpbmcgYSB1c2VyIHNwZWNpZmllZCB0ZXN0IHBy
b3BlcnR5IHdoaWNoIGNhbiBiZQotLy8gb3V0cHV0IGFzIGEga2V5L3ZhbHVlIHN0cmluZyBwYWly
LgotLy8KLS8vIERvbid0IGluaGVyaXQgZnJvbSBUZXN0UHJvcGVydHkgYXMgaXRzIGRlc3RydWN0
b3IgaXMgbm90IHZpcnR1YWwuCi1jbGFzcyBUZXN0UHJvcGVydHkgewotIHB1YmxpYzoKLSAgLy8g
Qyd0b3IuICBUZXN0UHJvcGVydHkgZG9lcyBOT1QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3Iu
Ci0gIC8vIEFsd2F5cyB1c2UgdGhpcyBjb25zdHJ1Y3RvciAod2l0aCBwYXJhbWV0ZXJzKSB0byBj
cmVhdGUgYQotICAvLyBUZXN0UHJvcGVydHkgb2JqZWN0LgotICBUZXN0UHJvcGVydHkoY29uc3Qg
c3RkOjpzdHJpbmcmIGFfa2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgYV92YWx1ZSkgOgotICAgIGtl
eV8oYV9rZXkpLCB2YWx1ZV8oYV92YWx1ZSkgewotICB9Ci0KLSAgLy8gR2V0cyB0aGUgdXNlciBz
dXBwbGllZCBrZXkuCi0gIGNvbnN0IGNoYXIqIGtleSgpIGNvbnN0IHsKLSAgICByZXR1cm4ga2V5
Xy5jX3N0cigpOwotICB9Ci0KLSAgLy8gR2V0cyB0aGUgdXNlciBzdXBwbGllZCB2YWx1ZS4KLSAg
Y29uc3QgY2hhciogdmFsdWUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXy5jX3N0cigpOwot
ICB9Ci0KLSAgLy8gU2V0cyBhIG5ldyB2YWx1ZSwgb3ZlcnJpZGluZyB0aGUgb25lIHN1cHBsaWVk
IGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgdm9pZCBTZXRWYWx1ZShjb25zdCBzdGQ6OnN0cmluZyYg
bmV3X3ZhbHVlKSB7Ci0gICAgdmFsdWVfID0gbmV3X3ZhbHVlOwotICB9Ci0KLSBwcml2YXRlOgot
ICAvLyBUaGUga2V5IHN1cHBsaWVkIGJ5IHRoZSB1c2VyLgotICBzdGQ6OnN0cmluZyBrZXlfOwot
ICAvLyBUaGUgdmFsdWUgc3VwcGxpZWQgYnkgdGhlIHVzZXIuCi0gIHN0ZDo6c3RyaW5nIHZhbHVl
XzsKLX07Ci0KLS8vIFRoZSByZXN1bHQgb2YgYSBzaW5nbGUgVGVzdC4gIFRoaXMgaW5jbHVkZXMg
YSBsaXN0IG9mCi0vLyBUZXN0UGFydFJlc3VsdHMsIGEgbGlzdCBvZiBUZXN0UHJvcGVydGllcywg
YSBjb3VudCBvZiBob3cgbWFueQotLy8gZGVhdGggdGVzdHMgdGhlcmUgYXJlIGluIHRoZSBUZXN0
LCBhbmQgaG93IG11Y2ggdGltZSBpdCB0b29rIHRvIHJ1bgotLy8gdGhlIFRlc3QuCi0vLwotLy8g
VGVzdFJlc3VsdCBpcyBub3QgY29weWFibGUuCi1jbGFzcyBHVEVTVF9BUElfIFRlc3RSZXN1bHQg
ewotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBUZXN0UmVzdWx0LgotICBUZXN0UmVz
dWx0KCk7Ci0KLSAgLy8gRCd0b3IuICBEbyBub3QgaW5oZXJpdCBmcm9tIFRlc3RSZXN1bHQuCi0g
IH5UZXN0UmVzdWx0KCk7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0IHBhcnRz
LiAgVGhpcyBpcyB0aGUgc3VtIG9mIHRoZSBudW1iZXIKLSAgLy8gb2Ygc3VjY2Vzc2Z1bCB0ZXN0
IHBhcnRzIGFuZCB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0IHBhcnRzLgotICBpbnQgdG90YWxf
cGFydF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgdGVz
dCBwcm9wZXJ0aWVzLgotICBpbnQgdGVzdF9wcm9wZXJ0eV9jb3VudCgpIGNvbnN0OwotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFzc2VkIChpLmUuIG5vIHRlc3QgcGFydCBmYWls
ZWQpLgotICBib29sIFBhc3NlZCgpIGNvbnN0IHsgcmV0dXJuICFGYWlsZWQoKTsgfQotCi0gIC8v
IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgZmFpbGVkLgotICBib29sIEZhaWxlZCgpIGNvbnN0
OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgZmF0YWxseSBmYWlsZWQuCi0gIGJv
b2wgSGFzRmF0YWxGYWlsdXJlKCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUg
dGVzdCBoYXMgYSBub24tZmF0YWwgZmFpbHVyZS4KLSAgYm9vbCBIYXNOb25mYXRhbEZhaWx1cmUo
KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBlbGFwc2VkIHRpbWUsIGluIG1pbGxpc2Vjb25k
cy4KLSAgVGltZUluTWlsbGlzIGVsYXBzZWRfdGltZSgpIGNvbnN0IHsgcmV0dXJuIGVsYXBzZWRf
dGltZV87IH0KLQotICAvLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgcGFydCByZXN1bHQgYW1vbmcg
YWxsIHRoZSByZXN1bHRzLiBpIGNhbiByYW5nZQotICAvLyBmcm9tIDAgdG8gdGVzdF9wcm9wZXJ0
eV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgYWJvcnRzCi0gIC8vIHRo
ZSBwcm9ncmFtLgotICBjb25zdCBUZXN0UGFydFJlc3VsdCYgR2V0VGVzdFBhcnRSZXN1bHQoaW50
IGkpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdGhlIGktdGggdGVzdCBwcm9wZXJ0eS4gaSBjYW4g
cmFuZ2UgZnJvbSAwIHRvCi0gIC8vIHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEuIElmIGkgaXMg
bm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cyB0aGUKLSAgLy8gcHJvZ3JhbS4KLSAgY29uc3QgVGVz
dFByb3BlcnR5JiBHZXRUZXN0UHJvcGVydHkoaW50IGkpIGNvbnN0OwotCi0gcHJpdmF0ZToKLSAg
ZnJpZW5kIGNsYXNzIFRlc3RJbmZvOwotICBmcmllbmQgY2xhc3MgVGVzdENhc2U7Ci0gIGZyaWVu
ZCBjbGFzcyBVbml0VGVzdDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpEZWZhdWx0R2xvYmFs
VGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpFeGVjRGVh
dGhUZXN0OwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKLSAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpVbml0VGVzdEltcGw7Ci0gIGZyaWVuZCBjbGFzcyBpbnRl
cm5hbDo6V2luZG93c0RlYXRoVGVzdDsKLQotICAvLyBHZXRzIHRoZSB2ZWN0b3Igb2YgVGVzdFBh
cnRSZXN1bHRzLgotICBjb25zdCBzdGQ6OnZlY3RvcjxUZXN0UGFydFJlc3VsdD4mIHRlc3RfcGFy
dF9yZXN1bHRzKCkgY29uc3QgewotICAgIHJldHVybiB0ZXN0X3BhcnRfcmVzdWx0c187Ci0gIH0K
LQotICAvLyBHZXRzIHRoZSB2ZWN0b3Igb2YgVGVzdFByb3BlcnRpZXMuCi0gIGNvbnN0IHN0ZDo6
dmVjdG9yPFRlc3RQcm9wZXJ0eT4mIHRlc3RfcHJvcGVydGllcygpIGNvbnN0IHsKLSAgICByZXR1
cm4gdGVzdF9wcm9wZXJ0aWVzXzsKLSAgfQotCi0gIC8vIFNldHMgdGhlIGVsYXBzZWQgdGltZS4K
LSAgdm9pZCBzZXRfZWxhcHNlZF90aW1lKFRpbWVJbk1pbGxpcyBlbGFwc2VkKSB7IGVsYXBzZWRf
dGltZV8gPSBlbGFwc2VkOyB9Ci0KLSAgLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhlIGxp
c3QuIFRoZSBwcm9wZXJ0eSBpcyB2YWxpZGF0ZWQgYW5kIG1heSBhZGQKLSAgLy8gYSBub24tZmF0
YWwgZmFpbHVyZSBpZiBpbnZhbGlkIChlLmcuLCBpZiBpdCBjb25mbGljdHMgd2l0aCByZXNlcnZl
ZAotICAvLyBrZXkgbmFtZXMpLiBJZiBhIHByb3BlcnR5IGlzIGFscmVhZHkgcmVjb3JkZWQgZm9y
IHRoZSBzYW1lIGtleSwgdGhlCi0gIC8vIHZhbHVlIHdpbGwgYmUgdXBkYXRlZCwgcmF0aGVyIHRo
YW4gc3RvcmluZyBtdWx0aXBsZSB2YWx1ZXMgZm9yIHRoZSBzYW1lCi0gIC8vIGtleS4gIHhtbF9l
bGVtZW50IHNwZWNpZmllcyB0aGUgZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3BlcnR5IGlzIGJl
aW5nCi0gIC8vIHJlY29yZGVkIGFuZCBpcyB1c2VkIGZvciB2YWxpZGF0aW9uLgotICB2b2lkIFJl
Y29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKLSAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOwotCi0gIC8vIEFk
ZHMgYSBmYWlsdXJlIGlmIHRoZSBrZXkgaXMgYSByZXNlcnZlZCBhdHRyaWJ1dGUgb2YgR29vZ2xl
IFRlc3QKLSAgLy8gdGVzdGNhc2UgdGFncy4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkg
aXMgdmFsaWQuCi0gIC8vIFRPRE8ocnVzc3IpOiBWYWxpZGF0ZSBhdHRyaWJ1dGUgbmFtZXMgYXJl
IGxlZ2FsIGFuZCBodW1hbiByZWFkYWJsZS4KLSAgc3RhdGljIGJvb2wgVmFsaWRhdGVUZXN0UHJv
cGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpOwotCi0g
IC8vIEFkZHMgYSB0ZXN0IHBhcnQgcmVzdWx0IHRvIHRoZSBsaXN0LgotICB2b2lkIEFkZFRlc3RQ
YXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0X3BhcnRfcmVzdWx0KTsKLQotICAv
LyBSZXR1cm5zIHRoZSBkZWF0aCB0ZXN0IGNvdW50LgotICBpbnQgZGVhdGhfdGVzdF9jb3VudCgp
IGNvbnN0IHsgcmV0dXJuIGRlYXRoX3Rlc3RfY291bnRfOyB9Ci0KLSAgLy8gSW5jcmVtZW50cyB0
aGUgZGVhdGggdGVzdCBjb3VudCwgcmV0dXJuaW5nIHRoZSBuZXcgY291bnQuCi0gIGludCBpbmNy
ZW1lbnRfZGVhdGhfdGVzdF9jb3VudCgpIHsgcmV0dXJuICsrZGVhdGhfdGVzdF9jb3VudF87IH0K
LQotICAvLyBDbGVhcnMgdGhlIHRlc3QgcGFydCByZXN1bHRzLgotICB2b2lkIENsZWFyVGVzdFBh
cnRSZXN1bHRzKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSBvYmplY3QuCi0gIHZvaWQgQ2xlYXIoKTsK
LQotICAvLyBQcm90ZWN0cyBtdXRhYmxlIHN0YXRlIG9mIHRoZSBwcm9wZXJ0eSB2ZWN0b3IgYW5k
IG9mIG93bmVkCi0gIC8vIHByb3BlcnRpZXMsIHdob3NlIHZhbHVlcyBtYXkgYmUgdXBkYXRlZC4K
LSAgaW50ZXJuYWw6Ok11dGV4IHRlc3RfcHJvcGVyaXRlc19tdXRleF87Ci0KLSAgLy8gVGhlIHZl
Y3RvciBvZiBUZXN0UGFydFJlc3VsdHMKLSAgc3RkOjp2ZWN0b3I8VGVzdFBhcnRSZXN1bHQ+IHRl
c3RfcGFydF9yZXN1bHRzXzsKLSAgLy8gVGhlIHZlY3RvciBvZiBUZXN0UHJvcGVydGllcwotICBz
dGQ6OnZlY3RvcjxUZXN0UHJvcGVydHk+IHRlc3RfcHJvcGVydGllc187Ci0gIC8vIFJ1bm5pbmcg
Y291bnQgb2YgZGVhdGggdGVzdHMuCi0gIGludCBkZWF0aF90ZXN0X2NvdW50XzsKLSAgLy8gVGhl
IGVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgotICBUaW1lSW5NaWxsaXMgZWxhcHNlZF90
aW1lXzsKLQotICAvLyBXZSBkaXNhbGxvdyBjb3B5aW5nIFRlc3RSZXN1bHQuCi0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdFJlc3VsdCk7Ci19OyAgLy8gY2xhc3MgVGVzdFJl
c3VsdAotCi0vLyBBIFRlc3RJbmZvIG9iamVjdCBzdG9yZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1h
dGlvbiBhYm91dCBhIHRlc3Q6Ci0vLwotLy8gICBUZXN0IGNhc2UgbmFtZQotLy8gICBUZXN0IG5h
bWUKLS8vICAgV2hldGhlciB0aGUgdGVzdCBzaG91bGQgYmUgcnVuCi0vLyAgIEEgZnVuY3Rpb24g
cG9pbnRlciB0aGF0IGNyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0IHdoZW4gaW52b2tlZAotLy8gICBU
ZXN0IHJlc3VsdAotLy8KLS8vIFRoZSBjb25zdHJ1Y3RvciBvZiBUZXN0SW5mbyByZWdpc3RlcnMg
aXRzZWxmIHdpdGggdGhlIFVuaXRUZXN0Ci0vLyBzaW5nbGV0b24gc3VjaCB0aGF0IHRoZSBSVU5f
QUxMX1RFU1RTKCkgbWFjcm8ga25vd3Mgd2hpY2ggdGVzdHMgdG8KLS8vIHJ1bi4KLWNsYXNzIEdU
RVNUX0FQSV8gVGVzdEluZm8gewotIHB1YmxpYzoKLSAgLy8gRGVzdHJ1Y3RzIGEgVGVzdEluZm8g
b2JqZWN0LiAgVGhpcyBmdW5jdGlvbiBpcyBub3QgdmlydHVhbCwgc28KLSAgLy8gZG9uJ3QgaW5o
ZXJpdCBmcm9tIFRlc3RJbmZvLgotICB+VGVzdEluZm8oKTsKLQotICAvLyBSZXR1cm5zIHRoZSB0
ZXN0IGNhc2UgbmFtZS4KLSAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUoKSBjb25zdCB7IHJl
dHVybiB0ZXN0X2Nhc2VfbmFtZV8uY19zdHIoKTsgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3Qg
bmFtZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNfc3RyKCk7
IH0KLQotICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVM
TCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVkCi0gIC8vIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRl
c3QuCi0gIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7Ci0gICAgaWYgKHR5cGVfcGFy
YW1fLmdldCgpICE9IE5VTEwpCi0gICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3RyKCk7Ci0g
ICAgcmV0dXJuIE5VTEw7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRoZSB0ZXh0IHJlcHJlc2VudGF0
aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcwotICAvLyBpcyBub3Qg
YSB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCi0gIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtKCkg
Y29uc3QgewotICAgIGlmICh2YWx1ZV9wYXJhbV8uZ2V0KCkgIT0gTlVMTCkKLSAgICAgIHJldHVy
biB2YWx1ZV9wYXJhbV8tPmNfc3RyKCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLQotICAvLyBS
ZXR1cm5zIHRoZSBmaWxlIG5hbWUgd2hlcmUgdGhpcyB0ZXN0IGlzIGRlZmluZWQuCi0gIGNvbnN0
IGNoYXIqIGZpbGUoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbl8uZmlsZS5jX3N0cigpOyB9Ci0K
LSAgLy8gUmV0dXJucyB0aGUgbGluZSB3aGVyZSB0aGlzIHRlc3QgaXMgZGVmaW5lZC4KLSAgaW50
IGxpbmUoKSBjb25zdCB7IHJldHVybiBsb2NhdGlvbl8ubGluZTsgfQotCi0gIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIHJ1biwgdGhhdCBpcyBpZiB0aGUgdGVzdCBpcyBub3QK
LSAgLy8gZGlzYWJsZWQgKG9yIGl0IGlzIGRpc2FibGVkIGJ1dCB0aGUgYWxzb19ydW5fZGlzYWJs
ZWRfdGVzdHMgZmxhZyBoYXMKLSAgLy8gYmVlbiBzcGVjaWZpZWQpIGFuZCBpdHMgZnVsbCBuYW1l
IG1hdGNoZXMgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAgLy8KLSAgLy8gR29vZ2xlIFRl
c3QgYWxsb3dzIHRoZSB1c2VyIHRvIGZpbHRlciB0aGUgdGVzdHMgYnkgdGhlaXIgZnVsbCBuYW1l
cy4KLSAgLy8gVGhlIGZ1bGwgbmFtZSBvZiBhIHRlc3QgQmFyIGluIHRlc3QgY2FzZSBGb28gaXMg
ZGVmaW5lZCBhcwotICAvLyAiRm9vLkJhciIuICBPbmx5IHRoZSB0ZXN0cyB0aGF0IG1hdGNoIHRo
ZSBmaWx0ZXIgd2lsbCBydW4uCi0gIC8vCi0gIC8vIEEgZmlsdGVyIGlzIGEgY29sb24tc2VwYXJh
dGVkIGxpc3Qgb2YgZ2xvYiAobm90IHJlZ2V4KSBwYXR0ZXJucywKLSAgLy8gb3B0aW9uYWxseSBm
b2xsb3dlZCBieSBhICctJyBhbmQgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZgotICAvLyBuZWdh
dGl2ZSBwYXR0ZXJucyAodGVzdHMgdG8gZXhjbHVkZSkuICBBIHRlc3QgaXMgcnVuIGlmIGl0Ci0g
IC8vIG1hdGNoZXMgb25lIG9mIHRoZSBwb3NpdGl2ZSBwYXR0ZXJucyBhbmQgZG9lcyBub3QgbWF0
Y2ggYW55IG9mCi0gIC8vIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4KLSAgLy8KLSAgLy8gRm9yIGV4
YW1wbGUsICpBKjpGb28uKiBpcyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgYW55IHN0cmluZyB0aGF0
Ci0gIC8vIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ0EnIG9yIHN0YXJ0cyB3aXRoICJGb28uIi4K
LSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1cm4gc2hvdWxkX3J1bl87IH0KLQotICAv
LyBSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGVzdCB3aWxsIGFwcGVhciBpbiB0aGUgWE1MIHJlcG9y
dC4KLSAgYm9vbCBpc19yZXBvcnRhYmxlKCkgY29uc3QgewotICAgIC8vIEZvciBub3csIHRoZSBY
TUwgcmVwb3J0IGluY2x1ZGVzIGFsbCB0ZXN0cyBtYXRjaGluZyB0aGUgZmlsdGVyLgotICAgIC8v
IEluIHRoZSBmdXR1cmUsIHdlIG1heSB0cmltIHRlc3RzIHRoYXQgYXJlIGV4Y2x1ZGVkIGJlY2F1
c2Ugb2YKLSAgICAvLyBzaGFyZGluZy4KLSAgICByZXR1cm4gbWF0Y2hlc19maWx0ZXJfOwotICB9
Ci0KLSAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0LgotICBjb25zdCBUZXN0UmVz
dWx0KiByZXN1bHQoKSBjb25zdCB7IHJldHVybiAmcmVzdWx0XzsgfQotCi0gcHJpdmF0ZToKLSNp
ZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkRlZmF1bHRE
ZWF0aFRlc3RGYWN0b3J5OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotICBmcmll
bmQgY2xhc3MgVGVzdDsKLSAgZnJpZW5kIGNsYXNzIFRlc3RDYXNlOwotICBmcmllbmQgY2xhc3Mg
aW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKLSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpTdHJlYW1p
bmdMaXN0ZW5lclRlc3Q7Ci0gIGZyaWVuZCBUZXN0SW5mbyogaW50ZXJuYWw6Ok1ha2VBbmRSZWdp
c3RlclRlc3RJbmZvKAotICAgICAgY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0gICAgICBj
b25zdCBjaGFyKiBuYW1lLAotICAgICAgY29uc3QgY2hhciogdHlwZV9wYXJhbSwKLSAgICAgIGNv
bnN0IGNoYXIqIHZhbHVlX3BhcmFtLAotICAgICAgaW50ZXJuYWw6OkNvZGVMb2NhdGlvbiBjb2Rl
X2xvY2F0aW9uLAotICAgICAgaW50ZXJuYWw6OlR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAg
ICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAotICAgICAgVGVzdDo6VGVhckRv
d25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3RjLAotICAgICAgaW50ZXJuYWw6OlRlc3RGYWN0b3J5
QmFzZSogZmFjdG9yeSk7Ci0KLSAgLy8gQ29uc3RydWN0cyBhIFRlc3RJbmZvIG9iamVjdC4gVGhl
IG5ld2x5IGNvbnN0cnVjdGVkIGluc3RhbmNlIGFzc3VtZXMKLSAgLy8gb3duZXJzaGlwIG9mIHRo
ZSBmYWN0b3J5IG9iamVjdC4KLSAgVGVzdEluZm8oY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfY2Fz
ZV9uYW1lLAotICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAg
Y29uc3QgY2hhciogYV90eXBlX3BhcmFtLCAgIC8vIE5VTEwgaWYgbm90IGEgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QKLSAgICAgICAgICAgY29uc3QgY2hhciogYV92YWx1ZV9wYXJhbSwgIC8vIE5V
TEwgaWYgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0Ci0gICAgICAgICAgIGludGVybmFs
OjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAotICAgICAgICAgICBpbnRlcm5hbDo6VHlw
ZUlkIGZpeHR1cmVfY2xhc3NfaWQsCi0gICAgICAgICAgIGludGVybmFsOjpUZXN0RmFjdG9yeUJh
c2UqIGZhY3RvcnkpOwotCi0gIC8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiBkZWF0aCB0ZXN0
cyBlbmNvdW50ZXJlZCBpbiB0aGlzIHRlc3Qgc28KLSAgLy8gZmFyLgotICBpbnQgaW5jcmVtZW50
X2RlYXRoX3Rlc3RfY291bnQoKSB7Ci0gICAgcmV0dXJuIHJlc3VsdF8uaW5jcmVtZW50X2RlYXRo
X3Rlc3RfY291bnQoKTsKLSAgfQotCi0gIC8vIENyZWF0ZXMgdGhlIHRlc3Qgb2JqZWN0LCBydW5z
IGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCi0gIC8vIGRlbGV0ZXMgaXQuCi0gIHZv
aWQgUnVuKCk7Ci0KLSAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UmVzdWx0KFRlc3RJbmZvKiB0ZXN0
X2luZm8pIHsKLSAgICB0ZXN0X2luZm8tPnJlc3VsdF8uQ2xlYXIoKTsKLSAgfQotCi0gIC8vIFRo
ZXNlIGZpZWxkcyBhcmUgaW1tdXRhYmxlIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QuCi0gIGNvbnN0
IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9uYW1lXzsgICAgIC8vIFRlc3QgY2FzZSBuYW1lCi0gIGNv
bnN0IHN0ZDo6c3RyaW5nIG5hbWVfOyAgICAgICAgICAgICAgIC8vIFRlc3QgbmFtZQotICAvLyBO
YW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5cGVk
IG9yIGEKLSAgLy8gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QuCi0gIGNvbnN0IGludGVybmFsOjpz
Y29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHR5cGVfcGFyYW1fOwotICAvLyBUZXh0IHJl
cHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYgdGhpcyBpcyBu
b3QgYQotICAvLyB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3QuCi0gIGNvbnN0IGludGVybmFsOjpz
Y29wZWRfcHRyPGNvbnN0IDo6c3RkOjpzdHJpbmc+IHZhbHVlX3BhcmFtXzsKLSAgaW50ZXJuYWw6
OkNvZGVMb2NhdGlvbiBsb2NhdGlvbl87Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgZml4dHVy
ZV9jbGFzc19pZF87ICAgLy8gSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwotICBib29sIHNo
b3VsZF9ydW5fOyAgICAgICAgICAgICAgICAgLy8gVHJ1ZSBpZmYgdGhpcyB0ZXN0IHNob3VsZCBy
dW4KLSAgYm9vbCBpc19kaXNhYmxlZF87ICAgICAgICAgICAgICAgIC8vIFRydWUgaWZmIHRoaXMg
dGVzdCBpcyBkaXNhYmxlZAotICBib29sIG1hdGNoZXNfZmlsdGVyXzsgICAgICAgICAgICAgLy8g
VHJ1ZSBpZiB0aGlzIHRlc3QgbWF0Y2hlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHVzZXItc3BlY2lmaWVkIGZpbHRlci4KLSAgaW50ZXJuYWw6OlRlc3RGYWN0
b3J5QmFzZSogY29uc3QgZmFjdG9yeV87ICAvLyBUaGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdGVzdCBv
YmplY3QKLQotICAvLyBUaGlzIGZpZWxkIGlzIG11dGFibGUgYW5kIG5lZWRzIHRvIGJlIHJlc2V0
IGJlZm9yZSBydW5uaW5nIHRoZQotICAvLyB0ZXN0IGZvciB0aGUgc2Vjb25kIHRpbWUuCi0gIFRl
c3RSZXN1bHQgcmVzdWx0XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRl
c3RJbmZvKTsKLX07Ci0KLS8vIEEgdGVzdCBjYXNlLCB3aGljaCBjb25zaXN0cyBvZiBhIHZlY3Rv
ciBvZiBUZXN0SW5mb3MuCi0vLwotLy8gVGVzdENhc2UgaXMgbm90IGNvcHlhYmxlLgotY2xhc3Mg
R1RFU1RfQVBJXyBUZXN0Q2FzZSB7Ci0gcHVibGljOgotICAvLyBDcmVhdGVzIGEgVGVzdENhc2Ug
d2l0aCB0aGUgZ2l2ZW4gbmFtZS4KLSAgLy8KLSAgLy8gVGVzdENhc2UgZG9lcyBOT1QgaGF2ZSBh
IGRlZmF1bHQgY29uc3RydWN0b3IuICBBbHdheXMgdXNlIHRoaXMKLSAgLy8gY29uc3RydWN0b3Ig
dG8gY3JlYXRlIGEgVGVzdENhc2Ugb2JqZWN0LgotICAvLwotICAvLyBBcmd1bWVudHM6Ci0gIC8v
Ci0gIC8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKLSAgLy8gICBhX3R5
cGVfcGFyYW06IHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwg
aWYKLSAgLy8gICAgICAgICAgICAgICAgIHRoaXMgaXMgbm90IGEgdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3QuCi0gIC8vICAgc2V0X3VwX3RjOiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0
IHNldHMgdXAgdGhlIHRlc3QgY2FzZQotICAvLyAgIHRlYXJfZG93bl90YzogcG9pbnRlciB0byB0
aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UKLSAgVGVzdENhc2UoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogYV90eXBlX3BhcmFtLAotICAgICAgICAgICBUZXN0
OjpTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCi0gICAgICAgICAgIFRlc3Q6OlRlYXJEb3du
VGVzdENhc2VGdW5jIHRlYXJfZG93bl90Yyk7Ci0KLSAgLy8gRGVzdHJ1Y3RvciBvZiBUZXN0Q2Fz
ZS4KLSAgdmlydHVhbCB+VGVzdENhc2UoKTsKLQotICAvLyBHZXRzIHRoZSBuYW1lIG9mIHRoZSBU
ZXN0Q2FzZS4KLSAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWVfLmNfc3Ry
KCk7IH0KLQotICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdHlwZSwgb3Ig
TlVMTCBpZiB0aGlzIGlzIG5vdCBhCi0gIC8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Uu
Ci0gIGNvbnN0IGNoYXIqIHR5cGVfcGFyYW0oKSBjb25zdCB7Ci0gICAgaWYgKHR5cGVfcGFyYW1f
LmdldCgpICE9IE5VTEwpCi0gICAgICByZXR1cm4gdHlwZV9wYXJhbV8tPmNfc3RyKCk7Ci0gICAg
cmV0dXJuIE5VTEw7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IHRlc3QgaW4gdGhp
cyB0ZXN0IGNhc2Ugc2hvdWxkIHJ1bi4KLSAgYm9vbCBzaG91bGRfcnVuKCkgY29uc3QgeyByZXR1
cm4gc2hvdWxkX3J1bl87IH0KLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZS4KLSAgaW50IHN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNv
bnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0
IGNhc2UuCi0gIGludCBmYWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhl
IG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCi0gIGludCByZXBvcnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsK
LQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgaW4gdGhpcyB0ZXN0IGNh
c2UuCi0gIGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUg
bnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi0gIGludCBy
ZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXQgdGhlIG51bWJlciBvZiB0
ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0IHNob3VsZCBydW4uCi0gIGludCB0ZXN0X3RvX3J1
bl9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdHMgaW4g
dGhpcyB0ZXN0IGNhc2UuCi0gIGludCB0b3RhbF90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8g
UmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBjYXNlIHBhc3NlZC4KLSAgYm9vbCBQYXNzZWQoKSBj
b25zdCB7IHJldHVybiAhRmFpbGVkKCk7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0
ZXN0IGNhc2UgZmFpbGVkLgotICBib29sIEZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhaWxlZF90
ZXN0X2NvdW50KCkgPiAwOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBt
aWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJldHVy
biBlbGFwc2VkX3RpbWVfOyB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IGFtb25nIGFs
bCB0aGUgdGVzdHMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwotICAvLyB0b3RhbF90ZXN0X2NvdW50
KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCi0gIGNvbnN0
IFRlc3RJbmZvKiBHZXRUZXN0SW5mbyhpbnQgaSkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0aGUg
VGVzdFJlc3VsdCB0aGF0IGhvbGRzIHRlc3QgcHJvcGVydGllcyByZWNvcmRlZCBkdXJpbmcKLSAg
Ly8gZXhlY3V0aW9uIG9mIFNldFVwVGVzdENhc2UgYW5kIFRlYXJEb3duVGVzdENhc2UuCi0gIGNv
bnN0IFRlc3RSZXN1bHQmIGFkX2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIGFkX2hv
Y190ZXN0X3Jlc3VsdF87IH0KLQotIHByaXZhdGU6Ci0gIGZyaWVuZCBjbGFzcyBUZXN0OwotICBm
cmllbmQgY2xhc3MgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbDsKLQotICAvLyBHZXRzIHRoZSAobXV0
YWJsZSkgdmVjdG9yIG9mIFRlc3RJbmZvcyBpbiB0aGlzIFRlc3RDYXNlLgotICBzdGQ6OnZlY3Rv
cjxUZXN0SW5mbyo+JiB0ZXN0X2luZm9fbGlzdCgpIHsgcmV0dXJuIHRlc3RfaW5mb19saXN0Xzsg
fQotCi0gIC8vIEdldHMgdGhlIChpbW11dGFibGUpIHZlY3RvciBvZiBUZXN0SW5mb3MgaW4gdGhp
cyBUZXN0Q2FzZS4KLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdEluZm8qPiYgdGVzdF9pbmZvX2xp
c3QoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mb19saXN0XzsKLSAgfQotCi0gIC8vIFJl
dHVybnMgdGhlIGktdGggdGVzdCBhbW9uZyBhbGwgdGhlIHRlc3RzLiBpIGNhbiByYW5nZSBmcm9t
IDAgdG8KLSAgLy8gdG90YWxfdGVzdF9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCBy
YW5nZSwgcmV0dXJucyBOVUxMLgotICBUZXN0SW5mbyogR2V0TXV0YWJsZVRlc3RJbmZvKGludCBp
KTsKLQotICAvLyBTZXRzIHRoZSBzaG91bGRfcnVuIG1lbWJlci4KLSAgdm9pZCBzZXRfc2hvdWxk
X3J1bihib29sIHNob3VsZCkgeyBzaG91bGRfcnVuXyA9IHNob3VsZDsgfQotCi0gIC8vIEFkZHMg
YSBUZXN0SW5mbyB0byB0aGlzIHRlc3QgY2FzZS4gIFdpbGwgZGVsZXRlIHRoZSBUZXN0SW5mbyB1
cG9uCi0gIC8vIGRlc3RydWN0aW9uIG9mIHRoZSBUZXN0Q2FzZSBvYmplY3QuCi0gIHZvaWQgQWRk
VGVzdEluZm8oVGVzdEluZm8gKiB0ZXN0X2luZm8pOwotCi0gIC8vIENsZWFycyB0aGUgcmVzdWx0
cyBvZiBhbGwgdGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIHZvaWQgQ2xlYXJSZXN1bHQoKTsK
LQotICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzIGluIHRoZSBnaXZlbiB0ZXN0
IGNhc2UuCi0gIHN0YXRpYyB2b2lkIENsZWFyVGVzdENhc2VSZXN1bHQoVGVzdENhc2UqIHRlc3Rf
Y2FzZSkgewotICAgIHRlc3RfY2FzZS0+Q2xlYXJSZXN1bHQoKTsKLSAgfQotCi0gIC8vIFJ1bnMg
ZXZlcnkgdGVzdCBpbiB0aGlzIFRlc3RDYXNlLgotICB2b2lkIFJ1bigpOwotCi0gIC8vIFJ1bnMg
U2V0VXBUZXN0Q2FzZSgpIGZvciB0aGlzIFRlc3RDYXNlLiAgVGhpcyB3cmFwcGVyIGlzIG5lZWRl
ZAotICAvLyBmb3IgY2F0Y2hpbmcgZXhjZXB0aW9ucyB0aHJvd24gZnJvbSBTZXRVcFRlc3RDYXNl
KCkuCi0gIHZvaWQgUnVuU2V0VXBUZXN0Q2FzZSgpIHsgKCpzZXRfdXBfdGNfKSgpOyB9Ci0KLSAg
Ly8gUnVucyBUZWFyRG93blRlc3RDYXNlKCkgZm9yIHRoaXMgVGVzdENhc2UuICBUaGlzIHdyYXBw
ZXIgaXMKLSAgLy8gbmVlZGVkIGZvciBjYXRjaGluZyBleGNlcHRpb25zIHRocm93biBmcm9tIFRl
YXJEb3duVGVzdENhc2UoKS4KLSAgdm9pZCBSdW5UZWFyRG93blRlc3RDYXNlKCkgeyAoKnRlYXJf
ZG93bl90Y18pKCk7IH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgcGFzc2VkLgotICBz
dGF0aWMgYm9vbCBUZXN0UGFzc2VkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAgICBy
ZXR1cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCkgJiYgdGVzdF9pbmZvLT5yZXN1bHQoKS0+UGFz
c2VkKCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgZmFpbGVkLgotICBzdGF0
aWMgYm9vbCBUZXN0RmFpbGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAgICByZXR1
cm4gdGVzdF9pbmZvLT5zaG91bGRfcnVuKCkgJiYgdGVzdF9pbmZvLT5yZXN1bHQoKS0+RmFpbGVk
KCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGlzIGRpc2FibGVkIGFu
ZCB3aWxsIGJlIHJlcG9ydGVkIGluIHRoZSBYTUwKLSAgLy8gcmVwb3J0LgotICBzdGF0aWMgYm9v
bCBUZXN0UmVwb3J0YWJsZURpc2FibGVkKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAg
ICByZXR1cm4gdGVzdF9pbmZvLT5pc19yZXBvcnRhYmxlKCkgJiYgdGVzdF9pbmZvLT5pc19kaXNh
YmxlZF87Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRlc3QgaXMgZGlzYWJsZWQuCi0g
IHN0YXRpYyBib29sIFRlc3REaXNhYmxlZChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7Ci0g
ICAgcmV0dXJuIHRlc3RfaW5mby0+aXNfZGlzYWJsZWRfOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0
cnVlIGlmZiB0aGlzIHRlc3Qgd2lsbCBhcHBlYXIgaW4gdGhlIFhNTCByZXBvcnQuCi0gIHN0YXRp
YyBib29sIFRlc3RSZXBvcnRhYmxlKGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAgICBy
ZXR1cm4gdGVzdF9pbmZvLT5pc19yZXBvcnRhYmxlKCk7Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGdpdmVuIHRlc3Qgc2hvdWxkIHJ1bi4KLSAgc3RhdGljIGJvb2wgU2hvdWxkUnVu
VGVzdChjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvKSB7Ci0gICAgcmV0dXJuIHRlc3RfaW5mby0+
c2hvdWxkX3J1bigpOwotICB9Ci0KLSAgLy8gU2h1ZmZsZXMgdGhlIHRlc3RzIGluIHRoaXMgdGVz
dCBjYXNlLgotICB2b2lkIFNodWZmbGVUZXN0cyhpbnRlcm5hbDo6UmFuZG9tKiByYW5kb20pOwot
Ci0gIC8vIFJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIHRvIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZs
ZS4KLSAgdm9pZCBVbnNodWZmbGVUZXN0cygpOwotCi0gIC8vIE5hbWUgb2YgdGhlIHRlc3QgY2Fz
ZS4KLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci0gIC8vIE5hbWUgb2YgdGhlIHBhcmFtZXRlciB0eXBl
LCBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdHlwZWQgb3IgYQotICAvLyB0eXBlLXBhcmFtZXRl
cml6ZWQgdGVzdC4KLSAgY29uc3QgaW50ZXJuYWw6OnNjb3BlZF9wdHI8Y29uc3QgOjpzdGQ6OnN0
cmluZz4gdHlwZV9wYXJhbV87Ci0gIC8vIFRoZSB2ZWN0b3Igb2YgVGVzdEluZm9zIGluIHRoZWly
IG9yaWdpbmFsIG9yZGVyLiAgSXQgb3ducyB0aGUKLSAgLy8gZWxlbWVudHMgaW4gdGhlIHZlY3Rv
ci4KLSAgc3RkOjp2ZWN0b3I8VGVzdEluZm8qPiB0ZXN0X2luZm9fbGlzdF87Ci0gIC8vIFByb3Zp
ZGVzIGEgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gZm9yIHRoZSB0ZXN0IGxpc3QgdG8gYWxsb3cgZWFz
eQotICAvLyBzaHVmZmxpbmcgYW5kIHJlc3RvcmluZyB0aGUgdGVzdCBvcmRlci4gIFRoZSBpLXRo
IGVsZW1lbnQgaW4gdGhpcwotICAvLyB2ZWN0b3IgaXMgdGhlIGluZGV4IG9mIHRoZSBpLXRoIHRl
c3QgaW4gdGhlIHNodWZmbGVkIHRlc3QgbGlzdC4KLSAgc3RkOjp2ZWN0b3I8aW50PiB0ZXN0X2lu
ZGljZXNfOwotICAvLyBQb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRl
c3QgY2FzZS4KLSAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjXzsKLSAgLy8gUG9p
bnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCB0ZWFycyBkb3duIHRoZSB0ZXN0IGNhc2UuCi0gIFRl
c3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90Y187Ci0gIC8vIFRydWUgaWZmIGFu
eSB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlIHNob3VsZCBydW4uCi0gIGJvb2wgc2hvdWxkX3J1bl87
Ci0gIC8vIEVsYXBzZWQgdGltZSwgaW4gbWlsbGlzZWNvbmRzLgotICBUaW1lSW5NaWxsaXMgZWxh
cHNlZF90aW1lXzsKLSAgLy8gSG9sZHMgdGVzdCBwcm9wZXJ0aWVzIHJlY29yZGVkIGR1cmluZyBl
eGVjdXRpb24gb2YgU2V0VXBUZXN0Q2FzZSBhbmQKLSAgLy8gVGVhckRvd25UZXN0Q2FzZS4KLSAg
VGVzdFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwotCi0gIC8vIFdlIGRpc2FsbG93IGNvcHlp
bmcgVGVzdENhc2VzLgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RDYXNl
KTsKLX07Ci0KLS8vIEFuIEVudmlyb25tZW50IG9iamVjdCBpcyBjYXBhYmxlIG9mIHNldHRpbmcg
dXAgYW5kIHRlYXJpbmcgZG93biBhbgotLy8gZW52aXJvbm1lbnQuICBZb3Ugc2hvdWxkIHN1YmNs
YXNzIHRoaXMgdG8gZGVmaW5lIHlvdXIgb3duCi0vLyBlbnZpcm9ubWVudChzKS4KLS8vCi0vLyBB
biBFbnZpcm9ubWVudCBvYmplY3QgZG9lcyB0aGUgc2V0LXVwIGFuZCB0ZWFyLWRvd24gaW4gdmly
dHVhbAotLy8gbWV0aG9kcyBTZXRVcCgpIGFuZCBUZWFyRG93bigpIGluc3RlYWQgb2YgdGhlIGNv
bnN0cnVjdG9yIGFuZCB0aGUKLS8vIGRlc3RydWN0b3IsIGFzOgotLy8KLS8vICAgMS4gWW91IGNh
bm5vdCBzYWZlbHkgdGhyb3cgZnJvbSBhIGRlc3RydWN0b3IuICBUaGlzIGlzIGEgcHJvYmxlbQot
Ly8gICAgICBhcyBpbiBzb21lIGNhc2VzIEdvb2dsZSBUZXN0IGlzIHVzZWQgd2hlcmUgZXhjZXB0
aW9ucyBhcmUgZW5hYmxlZCwgYW5kCi0vLyAgICAgIHdlIG1heSB3YW50IHRvIGltcGxlbWVudCBB
U1NFUlRfKiB1c2luZyBleGNlcHRpb25zIHdoZXJlIHRoZXkgYXJlCi0vLyAgICAgIGF2YWlsYWJs
ZS4KLS8vICAgMi4gWW91IGNhbm5vdCB1c2UgQVNTRVJUXyogZGlyZWN0bHkgaW4gYSBjb25zdHJ1
Y3RvciBvcgotLy8gICAgICBkZXN0cnVjdG9yLgotY2xhc3MgRW52aXJvbm1lbnQgewotIHB1Ymxp
YzoKLSAgLy8gVGhlIGQndG9yIGlzIHZpcnR1YWwgYXMgd2UgbmVlZCB0byBzdWJjbGFzcyBFbnZp
cm9ubWVudC4KLSAgdmlydHVhbCB+RW52aXJvbm1lbnQoKSB7fQotCi0gIC8vIE92ZXJyaWRlIHRo
aXMgdG8gZGVmaW5lIGhvdyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50LgotICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7fQotCi0gIC8vIE92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGhvdyB0byB0ZWFy
IGRvd24gdGhlIGVudmlyb25tZW50LgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7fQotIHBy
aXZhdGU6Ci0gIC8vIElmIHlvdSBzZWUgYW4gZXJyb3IgYWJvdXQgb3ZlcnJpZGluZyB0aGUgZm9s
bG93aW5nIGZ1bmN0aW9uIG9yCi0gIC8vIGFib3V0IGl0IGJlaW5nIHByaXZhdGUsIHlvdSBoYXZl
IG1pcy1zcGVsbGVkIFNldFVwKCkgYXMgU2V0dXAoKS4KLSAgc3RydWN0IFNldHVwX3Nob3VsZF9i
ZV9zcGVsbGVkX1NldFVwIHt9OwotICB2aXJ0dWFsIFNldHVwX3Nob3VsZF9iZV9zcGVsbGVkX1Nl
dFVwKiBTZXR1cCgpIHsgcmV0dXJuIE5VTEw7IH0KLX07Ci0KLS8vIFRoZSBpbnRlcmZhY2UgZm9y
IHRyYWNpbmcgZXhlY3V0aW9uIG9mIHRlc3RzLiBUaGUgbWV0aG9kcyBhcmUgb3JnYW5pemVkIGlu
Ci0vLyB0aGUgb3JkZXIgdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnRzIGFyZSBmaXJlZC4KLWNsYXNz
IFRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflRlc3RFdmVudExpc3Rl
bmVyKCkge30KLQotICAvLyBGaXJlZCBiZWZvcmUgYW55IHRlc3QgYWN0aXZpdHkgc3RhcnRzLgot
ICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QpID0gMDsKLQotICAvLyBGaXJlZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24gb2YgdGVzdHMgc3Rh
cnRzLiAgVGhlcmUgbWF5IGJlIG1vcmUgdGhhbgotICAvLyBvbmUgaXRlcmF0aW9uIGlmIEdURVNU
X0ZMQUcocmVwZWF0KSBpcyBzZXQuIGl0ZXJhdGlvbiBpcyB0aGUgaXRlcmF0aW9uCi0gIC8vIGlu
ZGV4LCBzdGFydGluZyBmcm9tIDAuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFy
dChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGl0ZXJhdGlvbikgPSAwOwotCi0gIC8vIEZpcmVkIGJlZm9yZSBlbnZpcm9u
bWVudCBzZXQtdXAgZm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIHN0YXJ0cy4KLSAgdmlydHVh
bCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0
KSA9IDA7Ci0KLSAgLy8gRmlyZWQgYWZ0ZXIgZW52aXJvbm1lbnQgc2V0LXVwIGZvciBlYWNoIGl0
ZXJhdGlvbiBvZiB0ZXN0cyBlbmRzLgotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRV
cEVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSA9IDA7Ci0KLSAgLy8gRmlyZWQgYmVmb3Jl
IHRoZSB0ZXN0IGNhc2Ugc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQgT25UZXN0Q2FzZVN0YXJ0KGNv
bnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpID0gMDsKLQotICAvLyBGaXJlZCBiZWZvcmUgdGhlIHRl
c3Qgc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQgT25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIHRl
c3RfaW5mbykgPSAwOwotCi0gIC8vIEZpcmVkIGFmdGVyIGEgZmFpbGVkIGFzc2VydGlvbiBvciBh
IFNVQ0NFRUQoKSBpbnZvY2F0aW9uLgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UGFydFJlc3VsdChj
b25zdCBUZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCkgPSAwOwotCi0gIC8vIEZpcmVk
IGFmdGVyIHRoZSB0ZXN0IGVuZHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVz
dEluZm8mIHRlc3RfaW5mbykgPSAwOwotCi0gIC8vIEZpcmVkIGFmdGVyIHRoZSB0ZXN0IGNhc2Ug
ZW5kcy4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIHRlc3Rf
Y2FzZSkgPSAwOwotCi0gIC8vIEZpcmVkIGJlZm9yZSBlbnZpcm9ubWVudCB0ZWFyLWRvd24gZm9y
IGVhY2ggaXRlcmF0aW9uIG9mIHRlc3RzIHN0YXJ0cy4KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSA9IDA7Ci0KLSAg
Ly8gRmlyZWQgYWZ0ZXIgZW52aXJvbm1lbnQgdGVhci1kb3duIGZvciBlYWNoIGl0ZXJhdGlvbiBv
ZiB0ZXN0cyBlbmRzLgotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSA9IDA7Ci0KLSAgLy8gRmlyZWQgYWZ0ZXIgZWFjaCBp
dGVyYXRpb24gb2YgdGVzdHMgZmluaXNoZXMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVyYXRp
b25FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaXRlcmF0aW9uKSA9IDA7Ci0KLSAgLy8gRmlyZWQgYWZ0ZXIgYWxsIHRl
c3QgYWN0aXZpdGllcyBoYXZlIGVuZGVkLgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVu
ZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSA9IDA7Ci19OwotCi0vLyBUaGUgY29udmVuaWVu
Y2UgY2xhc3MgZm9yIHVzZXJzIHdobyBuZWVkIHRvIG92ZXJyaWRlIGp1c3Qgb25lIG9yIHR3bwot
Ly8gbWV0aG9kcyBhbmQgYXJlIG5vdCBjb25jZXJuZWQgdGhhdCBhIHBvc3NpYmxlIGNoYW5nZSB0
byBhIHNpZ25hdHVyZSBvZgotLy8gdGhlIG1ldGhvZHMgdGhleSBvdmVycmlkZSB3aWxsIG5vdCBi
ZSBjYXVnaHQgZHVyaW5nIHRoZSBidWlsZC4gIEZvcgotLy8gY29tbWVudHMgYWJvdXQgZWFjaCBt
ZXRob2QgcGxlYXNlIHNlZSB0aGUgZGVmaW5pdGlvbiBvZiBUZXN0RXZlbnRMaXN0ZW5lcgotLy8g
YWJvdmUuCi1jbGFzcyBFbXB0eVRlc3RFdmVudExpc3RlbmVyIDogcHVibGljIFRlc3RFdmVudExp
c3RlbmVyIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RQcm9ncmFtU3RhcnQoY29u
c3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RJdGVy
YXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAvKml0ZXJhdGlvbiovKSB7fQotICB2aXJ0dWFsIHZv
aWQgT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCov
KSB7fQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNTZXRVcEVuZChjb25zdCBVbml0VGVz
dCYgLyp1bml0X3Rlc3QqLykge30KLSAgdmlydHVhbCB2b2lkIE9uVGVzdENhc2VTdGFydChjb25z
dCBUZXN0Q2FzZSYgLyp0ZXN0X2Nhc2UqLykge30KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFN0YXJ0
KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7fQotICB2aXJ0dWFsIHZvaWQgT25UZXN0
UGFydFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgLyp0ZXN0X3BhcnRfcmVzdWx0Ki8pIHt9
Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8p
IHt9Ci0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiAvKnRlc3Rf
Y2FzZSovKSB7fQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNv
bnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7fQotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9u
bWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykge30KLSAgdmly
dHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3Qq
LywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppdGVyYXRpb24qLykg
e30KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5p
dF90ZXN0Ki8pIHt9Ci19OwotCi0vLyBUZXN0RXZlbnRMaXN0ZW5lcnMgbGV0cyB1c2VycyBhZGQg
bGlzdGVuZXJzIHRvIHRyYWNrIGV2ZW50cyBpbiBHb29nbGUgVGVzdC4KLWNsYXNzIEdURVNUX0FQ
SV8gVGVzdEV2ZW50TGlzdGVuZXJzIHsKLSBwdWJsaWM6Ci0gIFRlc3RFdmVudExpc3RlbmVycygp
OwotICB+VGVzdEV2ZW50TGlzdGVuZXJzKCk7Ci0KLSAgLy8gQXBwZW5kcyBhbiBldmVudCBsaXN0
ZW5lciB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiBHb29nbGUgVGVzdCBhc3N1bWVzCi0gIC8vIHRo
ZSBvd25lcnNoaXAgb2YgdGhlIGxpc3RlbmVyIChpLmUuIGl0IHdpbGwgZGVsZXRlIHRoZSBsaXN0
ZW5lciB3aGVuCi0gIC8vIHRoZSB0ZXN0IHByb2dyYW0gZmluaXNoZXMpLgotICB2b2lkIEFwcGVu
ZChUZXN0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpOwotCi0gIC8vIFJlbW92ZXMgdGhlIGdpdmVu
IGV2ZW50IGxpc3RlbmVyIGZyb20gdGhlIGxpc3QgYW5kIHJldHVybnMgaXQuICBJdCB0aGVuCi0g
IC8vIGJlY29tZXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGRlbGV0ZSB0aGUgbGlz
dGVuZXIuIFJldHVybnMKLSAgLy8gTlVMTCBpZiB0aGUgbGlzdGVuZXIgaXMgbm90IGZvdW5kIGlu
IHRoZSBsaXN0LgotICBUZXN0RXZlbnRMaXN0ZW5lciogUmVsZWFzZShUZXN0RXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIpOwotCi0gIC8vIFJldHVybnMgdGhlIHN0YW5kYXJkIGxpc3RlbmVyIHJlc3Bv
bnNpYmxlIGZvciB0aGUgZGVmYXVsdCBjb25zb2xlCi0gIC8vIG91dHB1dC4gIENhbiBiZSByZW1v
dmVkIGZyb20gdGhlIGxpc3RlbmVycyBsaXN0IHRvIHNodXQgZG93biBkZWZhdWx0Ci0gIC8vIGNv
bnNvbGUgb3V0cHV0LiAgTm90ZSB0aGF0IHJlbW92aW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGxp
c3RlbmVyIGxpc3QKLSAgLy8gd2l0aCBSZWxlYXNlIHRyYW5zZmVycyBpdHMgb3duZXJzaGlwIHRv
IHRoZSBjYWxsZXIgYW5kIG1ha2VzIHRoaXMKLSAgLy8gZnVuY3Rpb24gcmV0dXJuIE5VTEwgdGhl
IG5leHQgdGltZS4KLSAgVGVzdEV2ZW50TGlzdGVuZXIqIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXIo
KSBjb25zdCB7Ci0gICAgcmV0dXJuIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfOwotICB9Ci0KLSAg
Ly8gUmV0dXJucyB0aGUgc3RhbmRhcmQgbGlzdGVuZXIgcmVzcG9uc2libGUgZm9yIHRoZSBkZWZh
dWx0IFhNTCBvdXRwdXQKLSAgLy8gY29udHJvbGxlZCBieSB0aGUgLS1ndGVzdF9vdXRwdXQ9eG1s
IGZsYWcuICBDYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZQotICAvLyBsaXN0ZW5lcnMgbGlzdCBieSB1
c2VycyB3aG8gd2FudCB0byBzaHV0IGRvd24gdGhlIGRlZmF1bHQgWE1MIG91dHB1dAotICAvLyBj
b250cm9sbGVkIGJ5IHRoaXMgZmxhZyBhbmQgc3Vic3RpdHV0ZSBpdCB3aXRoIGN1c3RvbSBvbmUu
ICBOb3RlIHRoYXQKLSAgLy8gcmVtb3ZpbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgbGlzdGVuZXIg
bGlzdCB3aXRoIFJlbGVhc2UgdHJhbnNmZXJzIGl0cwotICAvLyBvd25lcnNoaXAgdG8gdGhlIGNh
bGxlciBhbmQgbWFrZXMgdGhpcyBmdW5jdGlvbiByZXR1cm4gTlVMTCB0aGUgbmV4dAotICAvLyB0
aW1lLgotICBUZXN0RXZlbnRMaXN0ZW5lciogZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkgY29uc3Qg
ewotICAgIHJldHVybiBkZWZhdWx0X3htbF9nZW5lcmF0b3JfOwotICB9Ci0KLSBwcml2YXRlOgot
ICBmcmllbmQgY2xhc3MgVGVzdENhc2U7Ci0gIGZyaWVuZCBjbGFzcyBUZXN0SW5mbzsKLSAgZnJp
ZW5kIGNsYXNzIGludGVybmFsOjpEZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjsK
LSAgZnJpZW5kIGNsYXNzIGludGVybmFsOjpOb0V4ZWNEZWF0aFRlc3Q7Ci0gIGZyaWVuZCBjbGFz
cyBpbnRlcm5hbDo6VGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I7Ci0gIGZyaWVuZCBjbGFzcyBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsOwotCi0gIC8vIFJldHVybnMgcmVwZWF0ZXIgdGhhdCBicm9h
ZGNhc3RzIHRoZSBUZXN0RXZlbnRMaXN0ZW5lciBldmVudHMgdG8gYWxsCi0gIC8vIHN1YnNjcmli
ZXJzLgotICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIoKTsKLQotICAvLyBTZXRzIHRoZSBk
ZWZhdWx0X3Jlc3VsdF9wcmludGVyIGF0dHJpYnV0ZSB0byB0aGUgcHJvdmlkZWQgbGlzdGVuZXIu
Ci0gIC8vIFRoZSBsaXN0ZW5lciBpcyBhbHNvIGFkZGVkIHRvIHRoZSBsaXN0ZW5lciBsaXN0IGFu
ZCBwcmV2aW91cwotICAvLyBkZWZhdWx0X3Jlc3VsdF9wcmludGVyIGlzIHJlbW92ZWQgZnJvbSBp
dCBhbmQgZGVsZXRlZC4gVGhlIGxpc3RlbmVyIGNhbgotICAvLyBhbHNvIGJlIE5VTEwgaW4gd2hp
Y2ggY2FzZSBpdCB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgbGlzdC4gRG9lcwotICAvLyBub3Ro
aW5nIGlmIHRoZSBwcmV2aW91cyBhbmQgdGhlIGN1cnJlbnQgbGlzdGVuZXIgb2JqZWN0cyBhcmUg
dGhlIHNhbWUuCi0gIHZvaWQgU2V0RGVmYXVsdFJlc3VsdFByaW50ZXIoVGVzdEV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyKTsKLQotICAvLyBTZXRzIHRoZSBkZWZhdWx0X3htbF9nZW5lcmF0b3IgYXR0
cmlidXRlIHRvIHRoZSBwcm92aWRlZCBsaXN0ZW5lci4gIFRoZQotICAvLyBsaXN0ZW5lciBpcyBh
bHNvIGFkZGVkIHRvIHRoZSBsaXN0ZW5lciBsaXN0IGFuZCBwcmV2aW91cwotICAvLyBkZWZhdWx0
X3htbF9nZW5lcmF0b3IgaXMgcmVtb3ZlZCBmcm9tIGl0IGFuZCBkZWxldGVkLiBUaGUgbGlzdGVu
ZXIgY2FuCi0gIC8vIGFsc28gYmUgTlVMTCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgbm90IGJlIGFk
ZGVkIHRvIHRoZSBsaXN0LiBEb2VzCi0gIC8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3VzIGFuZCB0
aGUgY3VycmVudCBsaXN0ZW5lciBvYmplY3RzIGFyZSB0aGUgc2FtZS4KLSAgdm9pZCBTZXREZWZh
dWx0WG1sR2VuZXJhdG9yKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcik7Ci0KLSAgLy8gQ29u
dHJvbHMgd2hldGhlciBldmVudHMgd2lsbCBiZSBmb3J3YXJkZWQgYnkgdGhlIHJlcGVhdGVyIHRv
IHRoZQotICAvLyBsaXN0ZW5lcnMgaW4gdGhlIGxpc3QuCi0gIGJvb2wgRXZlbnRGb3J3YXJkaW5n
RW5hYmxlZCgpIGNvbnN0OwotICB2b2lkIFN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKCk7Ci0KLSAg
Ly8gVGhlIGFjdHVhbCBsaXN0IG9mIGxpc3RlbmVycy4KLSAgaW50ZXJuYWw6OlRlc3RFdmVudFJl
cGVhdGVyKiByZXBlYXRlcl87Ci0gIC8vIExpc3RlbmVyIHJlc3BvbnNpYmxlIGZvciB0aGUgc3Rh
bmRhcmQgcmVzdWx0IG91dHB1dC4KLSAgVGVzdEV2ZW50TGlzdGVuZXIqIGRlZmF1bHRfcmVzdWx0
X3ByaW50ZXJfOwotICAvLyBMaXN0ZW5lciByZXNwb25zaWJsZSBmb3IgdGhlIGNyZWF0aW9uIG9m
IHRoZSBYTUwgb3V0cHV0IGZpbGUuCi0gIFRlc3RFdmVudExpc3RlbmVyKiBkZWZhdWx0X3htbF9n
ZW5lcmF0b3JfOwotCi0gIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVGVzdEV2ZW50TGlzdGVuZXJz
LgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RFdmVudExpc3RlbmVycyk7
Ci19OwotCi0vLyBBIFVuaXRUZXN0IGNvbnNpc3RzIG9mIGEgdmVjdG9yIG9mIFRlc3RDYXNlcy4K
LS8vCi0vLyBUaGlzIGlzIGEgc2luZ2xldG9uIGNsYXNzLiAgVGhlIG9ubHkgaW5zdGFuY2Ugb2Yg
VW5pdFRlc3QgaXMKLS8vIGNyZWF0ZWQgd2hlbiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSBpcyBm
aXJzdCBjYWxsZWQuICBUaGlzCi0vLyBpbnN0YW5jZSBpcyBuZXZlciBkZWxldGVkLgotLy8KLS8v
IFVuaXRUZXN0IGlzIG5vdCBjb3B5YWJsZS4KLS8vCi0vLyBUaGlzIGNsYXNzIGlzIHRocmVhZC1z
YWZlIGFzIGxvbmcgYXMgdGhlIG1ldGhvZHMgYXJlIGNhbGxlZAotLy8gYWNjb3JkaW5nIHRvIHRo
ZWlyIHNwZWNpZmljYXRpb24uCi1jbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0IHsKLSBwdWJsaWM6
Ci0gIC8vIEdldHMgdGhlIHNpbmdsZXRvbiBVbml0VGVzdCBvYmplY3QuICBUaGUgZmlyc3QgdGlt
ZSB0aGlzIG1ldGhvZAotICAvLyBpcyBjYWxsZWQsIGEgVW5pdFRlc3Qgb2JqZWN0IGlzIGNvbnN0
cnVjdGVkIGFuZCByZXR1cm5lZC4KLSAgLy8gQ29uc2VjdXRpdmUgY2FsbHMgd2lsbCByZXR1cm4g
dGhlIHNhbWUgb2JqZWN0LgotICBzdGF0aWMgVW5pdFRlc3QqIEdldEluc3RhbmNlKCk7Ci0KLSAg
Ly8gUnVucyBhbGwgdGVzdHMgaW4gdGhpcyBVbml0VGVzdCBvYmplY3QgYW5kIHByaW50cyB0aGUg
cmVzdWx0LgotICAvLyBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCi0g
IC8vCi0gIC8vIFRoaXMgbWV0aG9kIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KLSAgLy8KLSAgLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IEEgVVNFUiBQUk9HUkFNLgotICBpbnQgUnVuKCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKLQot
ICAvLyBSZXR1cm5zIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSBmaXJzdCBURVNUKCkg
b3IgVEVTVF9GKCkKLSAgLy8gd2FzIGV4ZWN1dGVkLiAgVGhlIFVuaXRUZXN0IG9iamVjdCBvd25z
IHRoZSBzdHJpbmcuCi0gIGNvbnN0IGNoYXIqIG9yaWdpbmFsX3dvcmtpbmdfZGlyKCkgY29uc3Q7
Ci0KLSAgLy8gUmV0dXJucyB0aGUgVGVzdENhc2Ugb2JqZWN0IGZvciB0aGUgdGVzdCB0aGF0J3Mg
Y3VycmVudGx5IHJ1bm5pbmcsCi0gIC8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgot
ICBjb25zdCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdAotICAgICAgR1RFU1Rf
TE9DS19FWENMVURFRF8obXV0ZXhfKTsKLQotICAvLyBSZXR1cm5zIHRoZSBUZXN0SW5mbyBvYmpl
Y3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywKLSAgLy8gb3IgTlVMTCBp
ZiBubyB0ZXN0IGlzIHJ1bm5pbmcuCi0gIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5m
bygpIGNvbnN0Ci0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRleF8pOwotCi0gIC8vIFJl
dHVybnMgdGhlIHJhbmRvbSBzZWVkIHVzZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRl
c3QgcnVuLgotICBpbnQgcmFuZG9tX3NlZWQoKSBjb25zdDsKLQotI2lmIEdURVNUX0hBU19QQVJB
TV9URVNUCi0gIC8vIFJldHVybnMgdGhlIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IG9i
amVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKLSAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0
cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi0gIC8vCi0gIC8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLSAgaW50ZXJu
YWw6OlBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5JiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVn
aXN0cnkoKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8obXV0ZXhfKTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1
bCB0ZXN0IGNhc2VzLgotICBpbnQgc3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdDsK
LQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3QgY2FzZXMuCi0gIGludCBmYWls
ZWRfdGVzdF9jYXNlX2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFs
bCB0ZXN0IGNhc2VzLgotICBpbnQgdG90YWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3Q7Ci0KLSAg
Ly8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0IGNhc2VzIHRoYXQgY29udGFpbiBhdCBsZWFz
dCBvbmUgdGVzdAotICAvLyB0aGF0IHNob3VsZCBydW4uCi0gIGludCB0ZXN0X2Nhc2VfdG9fcnVu
X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVz
dHMuCi0gIGludCBzdWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRo
ZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgotICBpbnQgZmFpbGVkX3Rlc3RfY291bnQoKSBjb25z
dDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJl
IHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgotICBpbnQgcmVwb3J0YWJsZV9kaXNhYmxlZF90
ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRl
c3RzLgotICBpbnQgZGlzYWJsZWRfdGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhl
IG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBYTUwgcmVwb3J0LgotICBpbnQg
cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGFsbCB0ZXN0cy4KLSAgaW50IHRvdGFsX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgotICBpbnQgdGVzdF90b19ydW5f
Y291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0g
c3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0IG9mIHRoZQotICAvLyBVTklYIGVwb2NoLgotICBU
aW1lSW5NaWxsaXMgc3RhcnRfdGltZXN0YW1wKCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgZWxh
cHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUo
KSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSB1bml0IHRlc3QgcGFzc2VkIChp
LmUuIGFsbCB0ZXN0IGNhc2VzIHBhc3NlZCkuCi0gIGJvb2wgUGFzc2VkKCkgY29uc3Q7Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdW5pdCB0ZXN0IGZhaWxlZCAoaS5lLiBzb21lIHRlc3Qg
Y2FzZSBmYWlsZWQKLSAgLy8gb3Igc29tZXRoaW5nIG91dHNpZGUgb2YgYWxsIHRlc3RzIGZhaWxl
ZCkuCi0gIGJvb2wgRmFpbGVkKCkgY29uc3Q7Ci0KLSAgLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNh
c2UgYW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLSAgLy8g
dG90YWxfdGVzdF9jYXNlX2NvdW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCBy
ZXR1cm5zIE5VTEwuCi0gIGNvbnN0IFRlc3RDYXNlKiBHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3Q7
Ci0KLSAgLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250YWluaW5nIGluZm9ybWF0aW9uIG9u
IHRlc3QgZmFpbHVyZXMgYW5kCi0gIC8vIHByb3BlcnRpZXMgbG9nZ2VkIG91dHNpZGUgb2YgaW5k
aXZpZHVhbCB0ZXN0IGNhc2VzLgotICBjb25zdCBUZXN0UmVzdWx0JiBhZF9ob2NfdGVzdF9yZXN1
bHQoKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRoZSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0
aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cwotICAvLyBpbnNpZGUgR29vZ2xlIFRlc3Qu
Ci0gIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzKCk7Ci0KLSBwcml2YXRlOgotICAvLyBS
ZWdpc3RlcnMgYW5kIHJldHVybnMgYSBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudC4gIFdoZW4gYSB0
ZXN0Ci0gIC8vIHByb2dyYW0gaXMgcnVuLCBhbGwgZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzIHdp
bGwgYmUgc2V0LXVwIGluCi0gIC8vIHRoZSBvcmRlciB0aGV5IHdlcmUgcmVnaXN0ZXJlZC4gIEFm
dGVyIGFsbCB0ZXN0cyBpbiB0aGUgcHJvZ3JhbQotICAvLyBoYXZlIGZpbmlzaGVkLCBhbGwgZ2xv
YmFsIHRlc3QgZW52aXJvbm1lbnRzIHdpbGwgYmUgdG9ybi1kb3duIGluCi0gIC8vIHRoZSAqcmV2
ZXJzZSogb3JkZXIgdGhleSB3ZXJlIHJlZ2lzdGVyZWQuCi0gIC8vCi0gIC8vIFRoZSBVbml0VGVz
dCBvYmplY3QgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBnaXZlbiBlbnZpcm9ubWVudC4KLSAgLy8K
LSAgLy8gVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgotICBFbnZpcm9ubWVudCogQWRkRW52aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudik7Ci0KLSAg
Ly8gQWRkcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0
LiAgQWxsCi0gIC8vIEdvb2dsZSBUZXN0IGFzc2VydGlvbiBtYWNyb3MgKGUuZy4gQVNTRVJUX1RS
VUUsIEVYUEVDVF9FUSwgZXRjKQotICAvLyBldmVudHVhbGx5IGNhbGwgdGhpcyB0byByZXBvcnQg
dGhlaXIgcmVzdWx0cy4gIFRoZSB1c2VyIGNvZGUKLSAgLy8gc2hvdWxkIHVzZSB0aGUgYXNzZXJ0
aW9uIG1hY3JvcyBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJlY3RseS4KLSAgdm9pZCBBZGRU
ZXN0UGFydFJlc3VsdChUZXN0UGFydFJlc3VsdDo6VHlwZSByZXN1bHRfdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxpbmVfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBvc19zdGFja190cmFjZSkKLSAgICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKG11
dGV4Xyk7Ci0KLSAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVz
dWx0IG9iamVjdCB3aGVuIGludm9rZWQgZnJvbQotICAvLyBpbnNpZGUgYSB0ZXN0LCB0byBjdXJy
ZW50IFRlc3RDYXNlJ3MgYWRfaG9jX3Rlc3RfcmVzdWx0XyB3aGVuIGludm9rZWQKLSAgLy8gZnJv
bSBTZXRVcFRlc3RDYXNlIG9yIFRlYXJEb3duVGVzdENhc2UsIG9yIHRvIHRoZSBnbG9iYWwgcHJv
cGVydHkgc2V0Ci0gIC8vIHdoZW4gaW52b2tlZCBlbHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFs
cmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRoCi0gIC8vIHRoZSBzYW1lIGtleSwgdGhlIHZh
bHVlIHdpbGwgYmUgdXBkYXRlZC4KLSAgdm9pZCBSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpOwotCi0gIC8vIEdldHMgdGhlIGkt
dGggdGVzdCBjYXNlIGFtb25nIGFsbCB0aGUgdGVzdCBjYXNlcy4gaSBjYW4gcmFuZ2UgZnJvbSAw
IHRvCi0gIC8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhh
dCByYW5nZSwgcmV0dXJucyBOVUxMLgotICBUZXN0Q2FzZSogR2V0TXV0YWJsZVRlc3RDYXNlKGlu
dCBpKTsKLQotICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuCi0g
IGludGVybmFsOjpVbml0VGVzdEltcGwqIGltcGwoKSB7IHJldHVybiBpbXBsXzsgfQotICBjb25z
dCBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gaW1wbF87IH0K
LQotICAvLyBUaGVzZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgYXJlIGZyaWVuZHMgYXMgdGhleSBu
ZWVkIHRvIGFjY2VzcyBwcml2YXRlCi0gIC8vIG1lbWJlcnMgb2YgVW5pdFRlc3QuCi0gIGZyaWVu
ZCBjbGFzcyBUZXN0OwotICBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OkFzc2VydEhlbHBlcjsKLSAg
ZnJpZW5kIGNsYXNzIGludGVybmFsOjpTY29wZWRUcmFjZTsKLSAgZnJpZW5kIGNsYXNzIGludGVy
bmFsOjpTdHJlYW1pbmdMaXN0ZW5lclRlc3Q7Ci0gIGZyaWVuZCBjbGFzcyBpbnRlcm5hbDo6VW5p
dFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3RIZWxwZXI7Ci0gIGZyaWVuZCBFbnZpcm9ubWVudCogQWRk
R2xvYmFsVGVzdEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpOwotICBmcmllbmQgaW50ZXJu
YWw6OlVuaXRUZXN0SW1wbCogaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwotICBmcmllbmQg
dm9pZCBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKAotICAgICAgVGVz
dFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0X3R5cGUsCi0gICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVzc2FnZSk7Ci0KLSAgLy8gQ3JlYXRlcyBhbiBlbXB0eSBVbml0VGVzdC4KLSAgVW5pdFRlc3Qo
KTsKLQotICAvLyBEJ3RvcgotICB2aXJ0dWFsIH5Vbml0VGVzdCgpOwotCi0gIC8vIFB1c2hlcyBh
IHRyYWNlIGRlZmluZWQgYnkgU0NPUEVEX1RSQUNFKCkgb24gdG8gdGhlIHBlci10aHJlYWQKLSAg
Ly8gR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0gIHZvaWQgUHVzaEdUZXN0VHJhY2UoY29uc3Qg
aW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UpCi0gICAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXyht
dXRleF8pOwotCi0gIC8vIFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBU
ZXN0IHRyYWNlIHN0YWNrLgotICB2b2lkIFBvcEdUZXN0VHJhY2UoKQotICAgICAgR1RFU1RfTE9D
S19FWENMVURFRF8obXV0ZXhfKTsKLQotICAvLyBQcm90ZWN0cyBtdXRhYmxlIHN0YXRlIGluICpp
bXBsXy4gIFRoaXMgaXMgbXV0YWJsZSBhcyBzb21lIGNvbnN0Ci0gIC8vIG1ldGhvZHMgbmVlZCB0
byBsb2NrIGl0IHRvby4KLSAgbXV0YWJsZSBpbnRlcm5hbDo6TXV0ZXggbXV0ZXhfOwotCi0gIC8v
IE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvYmplY3QuICBUaGlzIGZpZWxkIGlzIG5ldmVyIGNoYW5n
ZWQgb25jZQotICAvLyB0aGUgb2JqZWN0IGlzIGNvbnN0cnVjdGVkLiAgV2UgZG9uJ3QgbWFyayBp
dCBhcyBjb25zdCBoZXJlLCBhcwotICAvLyBkb2luZyBzbyB3aWxsIGNhdXNlIGEgd2FybmluZyBp
biB0aGUgY29uc3RydWN0b3Igb2YgVW5pdFRlc3QuCi0gIC8vIE11dGFibGUgc3RhdGUgaW4gKmlt
cGxfIGlzIHByb3RlY3RlZCBieSBtdXRleF8uCi0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGlt
cGxfOwotCi0gIC8vIFdlIGRpc2FsbG93IGNvcHlpbmcgVW5pdFRlc3QuCi0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oVW5pdFRlc3QpOwotfTsKLQotLy8gQSBjb252ZW5pZW50IHdy
YXBwZXIgZm9yIGFkZGluZyBhbiBlbnZpcm9ubWVudCBmb3IgdGhlIHRlc3QKLS8vIHByb2dyYW0u
Ci0vLwotLy8gWW91IHNob3VsZCBjYWxsIHRoaXMgYmVmb3JlIFJVTl9BTExfVEVTVFMoKSBpcyBj
YWxsZWQsIHByb2JhYmx5IGluCi0vLyBtYWluKCkuICBJZiB5b3UgdXNlIGd0ZXN0X21haW4sIHlv
dSBuZWVkIHRvIGNhbGwgdGhpcyBiZWZvcmUgbWFpbigpCi0vLyBzdGFydHMgZm9yIGl0IHRvIHRh
a2UgZWZmZWN0LiAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZGVmaW5lIGEgZ2xvYmFsCi0vLyB2YXJp
YWJsZSBsaWtlIHRoaXM6Ci0vLwotLy8gICB0ZXN0aW5nOjpFbnZpcm9ubWVudCogY29uc3QgZm9v
X2VudiA9Ci0vLyAgICAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEZv
b0Vudmlyb25tZW50KTsKLS8vCi0vLyBIb3dldmVyLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgeW91
IHRvIHdyaXRlIHlvdXIgb3duIG1haW4oKSBhbmQKLS8vIGNhbGwgQWRkR2xvYmFsVGVzdEVudmly
b25tZW50KCkgdGhlcmUsIGFzIHJlbHlpbmcgb24gaW5pdGlhbGl6YXRpb24KLS8vIG9mIGdsb2Jh
bCB2YXJpYWJsZXMgbWFrZXMgdGhlIGNvZGUgaGFyZGVyIHRvIHJlYWQgYW5kIG1heSBjYXVzZQot
Ly8gcHJvYmxlbXMgd2hlbiB5b3UgcmVnaXN0ZXIgbXVsdGlwbGUgZW52aXJvbm1lbnRzIGZyb20g
ZGlmZmVyZW50Ci0vLyB0cmFuc2xhdGlvbiB1bml0cyBhbmQgdGhlIGVudmlyb25tZW50cyBoYXZl
IGRlcGVuZGVuY2llcyBhbW9uZyB0aGVtCi0vLyAocmVtZW1iZXIgdGhhdCB0aGUgY29tcGlsZXIg
ZG9lc24ndCBndWFyYW50ZWUgdGhlIG9yZGVyIGluIHdoaWNoCi0vLyBnbG9iYWwgdmFyaWFibGVz
IGZyb20gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIGFyZSBpbml0aWFsaXplZCkuCi1pbmxp
bmUgRW52aXJvbm1lbnQqIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChFbnZpcm9ubWVudCogZW52
KSB7Ci0gIHJldHVybiBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+QWRkRW52aXJvbm1lbnQoZW52
KTsKLX0KLQotLy8gSW5pdGlhbGl6ZXMgR29vZ2xlIFRlc3QuICBUaGlzIG11c3QgYmUgY2FsbGVk
IGJlZm9yZSBjYWxsaW5nCi0vLyBSVU5fQUxMX1RFU1RTKCkuICBJbiBwYXJ0aWN1bGFyLCBpdCBw
YXJzZXMgYSBjb21tYW5kIGxpbmUgZm9yIHRoZQotLy8gZmxhZ3MgdGhhdCBHb29nbGUgVGVzdCBy
ZWNvZ25pemVzLiAgV2hlbmV2ZXIgYSBHb29nbGUgVGVzdCBmbGFnIGlzCi0vLyBzZWVuLCBpdCBp
cyByZW1vdmVkIGZyb20gYXJndiwgYW5kICphcmdjIGlzIGRlY3JlbWVudGVkLgotLy8KLS8vIE5v
IHZhbHVlIGlzIHJldHVybmVkLiAgSW5zdGVhZCwgdGhlIEdvb2dsZSBUZXN0IGZsYWcgdmFyaWFi
bGVzIGFyZQotLy8gdXBkYXRlZC4KLS8vCi0vLyBDYWxsaW5nIHRoZSBmdW5jdGlvbiBmb3IgdGhl
IHNlY29uZCB0aW1lIGhhcyBubyB1c2VyLXZpc2libGUgZWZmZWN0LgotR1RFU1RfQVBJXyB2b2lk
IEluaXRHb29nbGVUZXN0KGludCogYXJnYywgY2hhcioqIGFyZ3YpOwotCi0vLyBUaGlzIG92ZXJs
b2FkZWQgdmVyc2lvbiBjYW4gYmUgdXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGlu
Ci0vLyBVTklDT0RFIG1vZGUuCi1HVEVTVF9BUElfIHZvaWQgSW5pdEdvb2dsZVRlc3QoaW50KiBh
cmdjLCB3Y2hhcl90KiogYXJndik7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFNlcGFy
YXRlIHRoZSBlcnJvciBnZW5lcmF0aW5nIGNvZGUgZnJvbSB0aGUgY29kZSBwYXRoIHRvIHJlZHVj
ZSB0aGUgc3RhY2sKLS8vIGZyYW1lIHNpemUgb2YgQ21wSGVscGVyRVEuIFRoaXMgaGVscHMgcmVk
dWNlIHRoZSBvdmVyaGVhZCBvZiBzb21lIHNhbml0aXplcnMKLS8vIHdoZW4gY2FsbGluZyBFWFBF
Q1RfKiBpbiBhIHRpZ2h0IGxvb3AuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
PgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRRmFpbHVyZShjb25zdCBjaGFyKiBsaHNfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
cmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQxJiBsaHMsIGNvbnN0IFQyJiByaHMpIHsKLSAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICAgICByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UobGhzLCByaHMpLAotICAgICAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShyaHMsIGxocyks
Ci0gICAgICAgICAgICAgICAgICAgZmFsc2UpOwotfQotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9u
IGZvciB7QVNTRVJUfEVYUEVDVH1fRVEuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlckVRKGNvbnN0IGNoYXIqIGxoc19leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiBsaHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHJocykgewotR1RFU1RfRElTQUJMRV9NU0Nf
V0FSTklOR1NfUFVTSF8oNDM4OSAvKiBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2ggKi8pCi0gIGlm
IChsaHMgPT0gcmhzKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgfQotR1RF
U1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi0KLSAgcmV0dXJuIENtcEhlbHBlckVRRmFp
bHVyZShsaHNfZXhwcmVzc2lvbiwgcmhzX2V4cHJlc3Npb24sIGxocywgcmhzKTsKLX0KLQotLy8g
V2l0aCB0aGlzIG92ZXJsb2FkZWQgdmVyc2lvbiwgd2UgYWxsb3cgYW5vbnltb3VzIGVudW1zIHRv
IGJlIHVzZWQKLS8vIGluIHtBU1NFUlR8RVhQRUNUfV9FUSB3aGVuIGNvbXBpbGVkIHdpdGggZ2Nj
IDQsIGFzIGFub255bW91cyBlbnVtcwotLy8gY2FuIGJlIGltcGxpY2l0bHkgY2FzdCB0byBCaWdn
ZXN0SW50LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyRVEoY29uc3QgY2hh
ciogbGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJpZ2dlc3RJbnQgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQmlnZ2VzdEludCByaHMpOwotCi0vLyBUaGUgaGVscGVyIGNsYXNzIGZvciB7
QVNTRVJUfEVYUEVDVH1fRVEuICBUaGUgdGVtcGxhdGUgYXJndW1lbnQKLS8vIGxoc19pc19udWxs
X2xpdGVyYWwgaXMgdHJ1ZSBpZmYgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIEFTU0VSVF9FUSgpCi0v
LyBpcyBhIG51bGwgcG9pbnRlciBsaXRlcmFsLiAgVGhlIGZvbGxvd2luZyBkZWZhdWx0IGltcGxl
bWVudGF0aW9uIGlzCi0vLyBmb3IgbGhzX2lzX251bGxfbGl0ZXJhbCBiZWluZyBmYWxzZS4KLXRl
bXBsYXRlIDxib29sIGxoc19pc19udWxsX2xpdGVyYWw+Ci1jbGFzcyBFcUhlbHBlciB7Ci0gcHVi
bGljOgotICAvLyBUaGlzIHRlbXBsYXRpemVkIHZlcnNpb24gaXMgZm9yIHRoZSBnZW5lcmFsIGNh
c2UuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gIHN0YXRpYyBBc3Nl
cnRpb25SZXN1bHQgQ29tcGFyZShjb25zdCBjaGFyKiBsaHNfZXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIGxocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiByaHMpIHsKLSAgICByZXR1cm4gQ21wSGVs
cGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7Ci0gIH0KLQot
ICAvLyBXaXRoIHRoaXMgb3ZlcmxvYWRlZCB2ZXJzaW9uLCB3ZSBhbGxvdyBhbm9ueW1vdXMgZW51
bXMgdG8gYmUgdXNlZAotICAvLyBpbiB7QVNTRVJUfEVYUEVDVH1fRVEgd2hlbiBjb21waWxlZCB3
aXRoIGdjYyA0LCBhcyBhbm9ueW1vdXMKLSAgLy8gZW51bXMgY2FuIGJlIGltcGxpY2l0bHkgY2Fz
dCB0byBCaWdnZXN0SW50LgotICAvLwotICAvLyBFdmVuIHRob3VnaCBpdHMgYm9keSBsb29rcyB0
aGUgc2FtZSBhcyB0aGUgYWJvdmUgdmVyc2lvbiwgd2UKLSAgLy8gY2Fubm90IG1lcmdlIHRoZSB0
d28sIGFzIGl0IHdpbGwgbWFrZSBhbm9ueW1vdXMgZW51bXMgdW5oYXBweS4KLSAgc3RhdGljIEFz
c2VydGlvblJlc3VsdCBDb21wYXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ2dlc3RJbnQgcmhzKSB7Ci0gICAgcmV0dXJuIENt
cEhlbHBlckVRKGxoc19leHByZXNzaW9uLCByaHNfZXhwcmVzc2lvbiwgbGhzLCByaHMpOwotICB9
Ci19OwotCi0vLyBUaGlzIHNwZWNpYWxpemF0aW9uIGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgYXJn
dW1lbnQgdG8gQVNTRVJUX0VRKCkKLS8vIGlzIGEgbnVsbCBwb2ludGVyIGxpdGVyYWwsIGxpa2Ug
TlVMTCwgZmFsc2UsIG9yIDAuCi10ZW1wbGF0ZSA8PgotY2xhc3MgRXFIZWxwZXI8dHJ1ZT4gewot
IHB1YmxpYzoKLSAgLy8gV2UgZGVmaW5lIHR3byBvdmVybG9hZGVkIHZlcnNpb25zIG9mIENvbXBh
cmUoKS4gIFRoZSBmaXJzdAotICAvLyB2ZXJzaW9uIHdpbGwgYmUgcGlja2VkIHdoZW4gdGhlIHNl
Y29uZCBhcmd1bWVudCB0byBBU1NFUlRfRVEoKSBpcwotICAvLyBOT1QgYSBwb2ludGVyLCBlLmcu
IEFTU0VSVF9FUSgwLCBBbkludEZ1bmN0aW9uKCkpIG9yCi0gIC8vIEVYUEVDVF9FUShmYWxzZSwg
YV9ib29sKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgc3RhdGlj
IEFzc2VydGlvblJlc3VsdCBDb21wYXJlKAotICAgICAgY29uc3QgY2hhciogbGhzX2V4cHJlc3Np
b24sCi0gICAgICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAgICAgIGNvbnN0IFQxJiBs
aHMsCi0gICAgICBjb25zdCBUMiYgcmhzLAotICAgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lIHBy
ZXZlbnRzIHRoaXMgb3ZlcmxvYWQgZnJvbSBiZWluZyBjb25zaWRlcmVkIGlmIFQyCi0gICAgICAv
LyBpcyBub3QgYSBwb2ludGVyIHR5cGUuICBXZSBuZWVkIHRoaXMgYmVjYXVzZSBBU1NFUlRfRVEo
TlVMTCwgbXlfcHRyKQotICAgICAgLy8gZXhwYW5kcyB0byBDb21wYXJlKCIiLCAiIiwgTlVMTCwg
bXlfcHRyKSwgd2hpY2ggcmVxdWlyZXMgYSBjb252ZXJzaW9uCi0gICAgICAvLyB0byBtYXRjaCB0
aGUgU2VjcmV0KiBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBt
YWtlCi0gICAgICAvLyB0aGlzIHRlbXBsYXRlIG1hdGNoIGJldHRlci4KLSAgICAgIHR5cGVuYW1l
IEVuYWJsZUlmPCFpc19wb2ludGVyPFQyPjo6dmFsdWU+Ojp0eXBlKiA9IDApIHsKLSAgICByZXR1
cm4gQ21wSGVscGVyRVEobGhzX2V4cHJlc3Npb24sIHJoc19leHByZXNzaW9uLCBsaHMsIHJocyk7
Ci0gIH0KLQotICAvLyBUaGlzIHZlcnNpb24gd2lsbCBiZSBwaWNrZWQgd2hlbiB0aGUgc2Vjb25k
IGFyZ3VtZW50IHRvIEFTU0VSVF9FUSgpIGlzIGEKLSAgLy8gcG9pbnRlciwgZS5nLiBBU1NFUlRf
RVEoTlVMTCwgYV9wb2ludGVyKS4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0YXRpYyBB
c3NlcnRpb25SZXN1bHQgQ29tcGFyZSgKLSAgICAgIGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9u
LAotICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAvLyBXZSB1c2VkIHRv
IGhhdmUgYSBzZWNvbmQgdGVtcGxhdGUgcGFyYW1ldGVyIGluc3RlYWQgb2YgU2VjcmV0Ki4gIFRo
YXQKLSAgICAgIC8vIHRlbXBsYXRlIHBhcmFtZXRlciB3b3VsZCBkZWR1Y2UgdG8gJ2xvbmcnLCBt
YWtpbmcgdGhpcyBhIGJldHRlciBtYXRjaAotICAgICAgLy8gdGhhbiB0aGUgZmlyc3Qgb3Zlcmxv
YWQgZXZlbiB3aXRob3V0IHRoZSBmaXJzdCBvdmVybG9hZCdzIEVuYWJsZUlmLgotICAgICAgLy8g
VW5mb3J0dW5hdGVseSwgZ2NjIHdpdGggLVdjb252ZXJzaW9uLW51bGwgd2FybnMgd2hlbiAicGFz
c2luZyBOVUxMIHRvCi0gICAgICAvLyBub24tcG9pbnRlciBhcmd1bWVudCIgKGV2ZW4gYSBkZWR1
Y2VkIGludGVncmFsIGFyZ3VtZW50KSwgc28gdGhlIG9sZAotICAgICAgLy8gaW1wbGVtZW50YXRp
b24gY2F1c2VkIHdhcm5pbmdzIGluIHVzZXIgY29kZS4KLSAgICAgIFNlY3JldCogLyogbGhzIChO
VUxMKSAqLywKLSAgICAgIFQqIHJocykgewotICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0ICds
aHMnIGlzIGEgbnVsbCBwb2ludGVyLgotICAgIHJldHVybiBDbXBIZWxwZXJFUShsaHNfZXhwcmVz
c2lvbiwgcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFQqPihOVUxMKSwgcmhzKTsKLSAgfQotfTsKLQotLy8gU2VwYXJhdGUgdGhlIGVycm9yIGdlbmVy
YXRpbmcgY29kZSBmcm9tIHRoZSBjb2RlIHBhdGggdG8gcmVkdWNlIHRoZSBzdGFjawotLy8gZnJh
bWUgc2l6ZSBvZiBDbXBIZWxwZXJPUC4gVGhpcyBoZWxwcyByZWR1Y2UgdGhlIG92ZXJoZWFkIG9m
IHNvbWUgc2FuaXRpemVycwotLy8gd2hlbiBjYWxsaW5nIEVYUEVDVF9PUCBpbiBhIHRpZ2h0IGxv
b3AuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVzdWx0
IENtcEhlbHBlck9wRmFpbHVyZShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2YWwxLCBjb25z
dCBUMiYgdmFsMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogb3ApIHsKLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgICAgPDwgIkV4cGVj
dGVkOiAoIiA8PCBleHByMSA8PCAiKSAiIDw8IG9wIDw8ICIgKCIgPDwgZXhwcjIKLSAgICAgICAg
IDw8ICIpLCBhY3R1YWw6ICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKHZh
bDEsIHZhbDIpCi0gICAgICAgICA8PCAiIHZzICIgPDwgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKHZhbDIsIHZhbDEpOwotfQotCi0vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcg
dGhlIGhlbHBlciBmdW5jdGlvbnMgbmVlZGVkIHRvIGltcGxlbWVudAotLy8gQVNTRVJUXz8/IGFu
ZCBFWFBFQ1RfPz8uICBJdCBpcyBoZXJlIGp1c3QgdG8gYXZvaWQgY29weS1hbmQtcGFzdGUKLS8v
IG9mIHNpbWlsYXIgY29kZS4KLS8vCi0vLyBGb3IgZWFjaCB0ZW1wbGF0aXplZCBoZWxwZXIgZnVu
Y3Rpb24sIHdlIGFsc28gZGVmaW5lIGFuIG92ZXJsb2FkZWQKLS8vIHZlcnNpb24gZm9yIEJpZ2dl
c3RJbnQgaW4gb3JkZXIgdG8gcmVkdWNlIGNvZGUgYmxvYXQgYW5kIGFsbG93Ci0vLyBhbm9ueW1v
dXMgZW51bXMgdG8gYmUgdXNlZCB3aXRoIHtBU1NFUlR8RVhQRUNUfV8/PyB3aGVuIGNvbXBpbGVk
Ci0vLyB3aXRoIGdjYyA0LgotLy8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9U
IFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLQotI2RlZmluZSBHVEVTVF9JTVBMX0NNUF9IRUxQRVJf
KG9wX25hbWUsIG9wKVwKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+XAotQXNz
ZXJ0aW9uUmVzdWx0IENtcEhlbHBlciMjb3BfbmFtZShjb25zdCBjaGFyKiBleHByMSwgY29uc3Qg
Y2hhciogZXhwcjIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VDEmIHZhbDEsIGNvbnN0IFQyJiB2YWwyKSB7XAotICBpZiAodmFsMSBvcCB2YWwyKSB7XAotICAg
IHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7XAotICB9IGVsc2Uge1wKLSAgICByZXR1cm4gQ21w
SGVscGVyT3BGYWlsdXJlKGV4cHIxLCBleHByMiwgdmFsMSwgdmFsMiwgI29wKTtcCi0gIH1cCi19
XAotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKFwKLSAgICBj
b25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsIEJpZ2dlc3RJbnQgdmFsMSwgQmln
Z2VzdEludCB2YWwyKQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0Ug
SU4gQSBVU0VSIFBST0dSQU0uCi0KLS8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBm
b3Ige0FTU0VSVHxFWFBFQ1R9X05FCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSk7Ci0v
LyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9MRQot
R1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMRSwgPD0pOwotLy8gSW1wbGVtZW50cyB0aGUgaGVscGVy
IGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8o
TFQsIDwpOwotLy8gSW1wbGVtZW50cyB0aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVY
UEVDVH1fR0UKLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oR0UsID49KTsKLS8vIEltcGxlbWVudHMg
dGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dUCi1HVEVTVF9JTVBMX0NN
UF9IRUxQRVJfKEdULCA+KTsKLQotI3VuZGVmIEdURVNUX0lNUExfQ01QX0hFTFBFUl8KLQotLy8g
VGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NUUkVRLgotLy8KLS8vIElO
VEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIgUFJPR1JBTS4KLUdU
RVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkVRKGNvbnN0IGNoYXIqIHMxX2V4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzMik7Ci0KLS8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFRVEuCi0vLwotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJ
T04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFNLgotR1RFU1RfQVBJXyBBc3NlcnRpb25S
ZXN1bHQgQ21wSGVscGVyU1RSQ0FTRUVRKGNvbnN0IGNoYXIqIHMxX2V4cHJlc3Npb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBzMik7Ci0KLS8vIFRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtB
U1NFUlR8RVhQRUNUfV9TVFJORS4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERP
IE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBD
bXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIp
OwotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSQ0FTRU5F
LgotLy8KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBBIFVTRVIg
UFJPR1JBTS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VORShj
b25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczIpOwot
Ci0KLS8vIEhlbHBlciBmdW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCi0vLwot
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyU1RSRVEoY29uc3QgY2hhciog
czFfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIHMyX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHMyKTsKLQotLy8gSGVscGVyIGZ1bmN0
aW9uIGZvciAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1F
TlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBVU0VSIFBST0dSQU0uCi1HVEVTVF9BUElfIEFzc2Vy
dGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBzMV9leHByZXNzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHdjaGFyX3QqIHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgd2NoYXJfdCogczIpOwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gSXNT
dWJzdHJpbmcoKSBhbmQgSXNOb3RTdWJzdHJpbmcoKSBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBh
cyB0aGUKLS8vIGZpcnN0IGFyZ3VtZW50IHRvIHtFWFBFQ1QsQVNTRVJUfV9QUkVEX0ZPUk1BVDIo
KSwgbm90IGJ5Ci0vLyB0aGVtc2VsdmVzLiAgVGhleSBjaGVjayB3aGV0aGVyIG5lZWRsZSBpcyBh
IHN1YnN0cmluZyBvZiBoYXlzdGFjawotLy8gKE5VTEwgaXMgY29uc2lkZXJlZCBhIHN1YnN0cmlu
ZyBvZiBpdHNlbGYgb25seSksIGFuZCByZXR1cm4gYW4KLS8vIGFwcHJvcHJpYXRlIGVycm9yIG1l
c3NhZ2Ugd2hlbiB0aGV5IGZhaWwuCi0vLwotLy8gVGhlIHtuZWVkbGUsaGF5c3RhY2t9X2V4cHIg
YXJndW1lbnRzIGFyZSB0aGUgc3RyaW5naWZpZWQKLS8vIGV4cHJlc3Npb25zIHRoYXQgZ2VuZXJh
dGVkIHRoZSB0d28gcmVhbCBhcmd1bWVudHMuCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJ
c1N1YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5
c3RhY2tfZXhwciwKLSAgICBjb25zdCBjaGFyKiBuZWVkbGUsIGNvbnN0IGNoYXIqIGhheXN0YWNr
KTsKLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0IGNo
YXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IHdj
aGFyX3QqIG5lZWRsZSwgY29uc3Qgd2NoYXJfdCogaGF5c3RhY2spOwotR1RFU1RfQVBJXyBBc3Nl
cnRpb25SZXN1bHQgSXNOb3RTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIs
IGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgY2hhciogbmVlZGxlLCBjb25z
dCBjaGFyKiBoYXlzdGFjayk7Ci1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0
cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tf
ZXhwciwKLSAgICBjb25zdCB3Y2hhcl90KiBuZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0YWNr
KTsKLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0IGNo
YXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IDo6
c3RkOjpzdHJpbmcmIG5lZWRsZSwgY29uc3QgOjpzdGQ6OnN0cmluZyYgaGF5c3RhY2spOwotR1RF
U1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgSXNOb3RTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciog
bmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgOjpzdGQ6
OnN0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6c3RyaW5nJiBoYXlzdGFjayk7Ci0KLSNpZiBH
VEVTVF9IQVNfU1REX1dTVFJJTkcKLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3Ry
aW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19l
eHByLAotICAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjp3c3Ry
aW5nJiBoYXlzdGFjayk7Ci1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmlu
ZygKLSAgICBjb25zdCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhw
ciwKLSAgICBjb25zdCA6OnN0ZDo6d3N0cmluZyYgbmVlZGxlLCBjb25zdCA6OnN0ZDo6d3N0cmlu
ZyYgaGF5c3RhY2spOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotbmFtZXNw
YWNlIGludGVybmFsIHsKLQotLy8gSGVscGVyIHRlbXBsYXRlIGZ1bmN0aW9uIGZvciBjb21wYXJp
bmcgZmxvYXRpbmctcG9pbnRzLgotLy8KLS8vIFRlbXBsYXRlIHBhcmFtZXRlcjoKLS8vCi0vLyAg
IFJhd1R5cGU6IHRoZSByYXcgZmxvYXRpbmctcG9pbnQgdHlwZSAoZWl0aGVyIGZsb2F0IG9yIGRv
dWJsZSkKLS8vCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gQSBV
U0VSIFBST0dSQU0uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3VHlwZT4KLUFzc2VydGlvblJlc3Vs
dCBDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJoc19l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdU
eXBlIGxoc192YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmF3VHlwZSByaHNfdmFsdWUpIHsKLSAgY29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBlPiBsaHMo
bGhzX3ZhbHVlKSwgcmhzKHJoc192YWx1ZSk7Ci0KLSAgaWYgKGxocy5BbG1vc3RFcXVhbHMocmhz
KSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLQotICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIGxoc19zczsKLSAgbGhzX3NzIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVt
ZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAgICAgICAgIDw8IGxoc192YWx1
ZTsKLQotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHJoc19zczsKLSAgcmhzX3NzIDw8IHN0ZDo6c2V0
cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikKLSAg
ICAgICAgIDw8IHJoc192YWx1ZTsKLQotICByZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9u
LAotICAgICAgICAgICAgICAgICAgIHJoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAg
IFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZsaHNfc3MpLAotICAgICAgICAgICAgICAgICAgIFN0cmlu
Z1N0cmVhbVRvU3RyaW5nKCZyaHNfc3MpLAotICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLX0K
LQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcgQVNTRVJUX05FQVIuCi0vLwot
Ly8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIEEgVVNFUiBQUk9HUkFN
LgotR1RFU1RfQVBJXyBBc3NlcnRpb25SZXN1bHQgRG91YmxlTmVhclByZWRGb3JtYXQoY29uc3Qg
Y2hhciogZXhwcjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBleHByMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFic19lcnJvcl9leHByLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbDEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhYnNf
ZXJyb3IpOwotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNF
UiBDT0RFLgotLy8gQSBjbGFzcyB0aGF0IGVuYWJsZXMgb25lIHRvIHN0cmVhbSBtZXNzYWdlcyB0
byBhc3NlcnRpb24gbWFjcm9zCi1jbGFzcyBHVEVTVF9BUElfIEFzc2VydEhlbHBlciB7Ci0gcHVi
bGljOgotICAvLyBDb25zdHJ1Y3Rvci4KLSAgQXNzZXJ0SGVscGVyKFRlc3RQYXJ0UmVzdWx0OjpU
eXBlIHR5cGUsCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAg
ICAgaW50IGxpbmUsCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLSAgfkFz
c2VydEhlbHBlcigpOwotCi0gIC8vIE1lc3NhZ2UgYXNzaWdubWVudCBpcyBhIHNlbWFudGljIHRy
aWNrIHRvIGVuYWJsZSBhc3NlcnRpb24KLSAgLy8gc3RyZWFtaW5nOyBzZWUgdGhlIEdURVNUX01F
U1NBR0VfIG1hY3JvIGJlbG93LgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBNZXNzYWdlJiBtZXNz
YWdlKSBjb25zdDsKLQotIHByaXZhdGU6Ci0gIC8vIFdlIHB1dCBvdXIgZGF0YSBpbiBhIHN0cnVj
dCBzbyB0aGF0IHRoZSBzaXplIG9mIHRoZSBBc3NlcnRIZWxwZXIgY2xhc3MgY2FuCi0gIC8vIGJl
IGFzIHNtYWxsIGFzIHBvc3NpYmxlLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBnY2MgaXMg
aW5jYXBhYmxlIG9mCi0gIC8vIHJlLXVzaW5nIHN0YWNrIHNwYWNlIGV2ZW4gZm9yIHRlbXBvcmFy
eSB2YXJpYWJsZXMsIHNvIGV2ZXJ5IEVYUEVDVF9FUQotICAvLyByZXNlcnZlcyBzdGFjayBzcGFj
ZSBmb3IgYW5vdGhlciBBc3NlcnRIZWxwZXIuCi0gIHN0cnVjdCBBc3NlcnRIZWxwZXJEYXRhIHsK
LSAgICBBc3NlcnRIZWxwZXJEYXRhKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHQsCi0gICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBzcmNmaWxlLAotICAgICAgICAgICAgICAgICAgICAgaW50
IGxpbmVfbnVtLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbXNnKQotICAgICAg
ICA6IHR5cGUodCksIGZpbGUoc3JjZmlsZSksIGxpbmUobGluZV9udW0pLCBtZXNzYWdlKG1zZykg
eyB9Ci0KLSAgICBUZXN0UGFydFJlc3VsdDo6VHlwZSBjb25zdCB0eXBlOwotICAgIGNvbnN0IGNo
YXIqIGNvbnN0IGZpbGU7Ci0gICAgaW50IGNvbnN0IGxpbmU7Ci0gICAgc3RkOjpzdHJpbmcgY29u
c3QgbWVzc2FnZTsKLQotICAgcHJpdmF0ZToKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9B
U1NJR05fKEFzc2VydEhlbHBlckRhdGEpOwotICB9OwotCi0gIEFzc2VydEhlbHBlckRhdGEqIGNv
bnN0IGRhdGFfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oQXNzZXJ0SGVs
cGVyKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0jaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QKLS8vIFRoZSBwdXJlIGludGVyZmFjZSBjbGFzcyB0aGF0IGFsbCB2YWx1ZS1wYXJh
bWV0ZXJpemVkIHRlc3RzIGluaGVyaXQgZnJvbS4KLS8vIEEgdmFsdWUtcGFyYW1ldGVyaXplZCBj
bGFzcyBtdXN0IGluaGVyaXQgZnJvbSBib3RoIDo6dGVzdGluZzo6VGVzdCBhbmQKLS8vIDo6dGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlLiBJbiBtb3N0IGNhc2VzIHRoYXQganVzdCBtZWFucyBp
bmhlcml0aW5nCi0vLyBmcm9tIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbSwgYnV0IG1vcmUgY29t
cGxpY2F0ZWQgdGVzdCBoaWVyYXJjaGllcwotLy8gbWF5IG5lZWQgdG8gaW5oZXJpdCBmcm9tIFRl
c3QgYW5kIFdpdGhQYXJhbUludGVyZmFjZSBhdCBkaWZmZXJlbnQgbGV2ZWxzLgotLy8KLS8vIFRo
aXMgaW50ZXJmYWNlIGhhcyBzdXBwb3J0IGZvciBhY2Nlc3NpbmcgdGhlIHRlc3QgcGFyYW1ldGVy
IHZhbHVlIHZpYQotLy8gdGhlIEdldFBhcmFtKCkgbWV0aG9kLgotLy8KLS8vIFVzZSBpdCB3aXRo
IG9uZSBvZiB0aGUgcGFyYW1ldGVyIGdlbmVyYXRvciBkZWZpbmluZyBmdW5jdGlvbnMsIGxpa2Ug
UmFuZ2UoKSwKLS8vIFZhbHVlcygpLCBWYWx1ZXNJbigpLCBCb29sKCksIGFuZCBDb21iaW5lKCku
Ci0vLwotLy8gY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
aW50PiB7Ci0vLyAgcHJvdGVjdGVkOgotLy8gICBGb29UZXN0KCkgewotLy8gICAgIC8vIENhbiB1
c2UgR2V0UGFyYW0oKSBoZXJlLgotLy8gICB9Ci0vLyAgIHZpcnR1YWwgfkZvb1Rlc3QoKSB7Ci0v
LyAgICAgLy8gQ2FuIHVzZSBHZXRQYXJhbSgpIGhlcmUuCi0vLyAgIH0KLS8vICAgdmlydHVhbCB2
b2lkIFNldFVwKCkgewotLy8gICAgIC8vIENhbiB1c2UgR2V0UGFyYW0oKSBoZXJlLgotLy8gICB9
Ci0vLyAgIHZpcnR1YWwgdm9pZCBUZWFyRG93biB7Ci0vLyAgICAgLy8gQ2FuIHVzZSBHZXRQYXJh
bSgpIGhlcmUuCi0vLyAgIH0KLS8vIH07Ci0vLyBURVNUX1AoRm9vVGVzdCwgRG9lc0Jhcikgewot
Ly8gICAvLyBDYW4gdXNlIEdldFBhcmFtKCkgbWV0aG9kIGhlcmUuCi0vLyAgIEZvbyBmb287Ci0v
LyAgIEFTU0VSVF9UUlVFKGZvby5Eb2VzQmFyKEdldFBhcmFtKCkpKTsKLS8vIH0KLS8vIElOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKE9uZVRvVGVuUmFuZ2UsIEZvb1Rlc3QsIDo6dGVzdGluZzo6UmFu
Z2UoMSwgMTApKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBXaXRoUGFyYW1JbnRl
cmZhY2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBUIFBhcmFtVHlwZTsKLSAgdmlydHVhbCB+V2l0
aFBhcmFtSW50ZXJmYWNlKCkge30KLQotICAvLyBUaGUgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWUu
IElzIGFsc28gYXZhaWxhYmxlIGluIHRoZSB0ZXN0IGZpeHR1cmUncwotICAvLyBjb25zdHJ1Y3Rv
ci4gVGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgbm9uLXN0YXRpYywgZXZlbiB0aG91Z2ggaXQgb25s
eQotICAvLyByZWZlcmVuY2VzIHN0YXRpYyBkYXRhLCB0byByZWR1Y2UgdGhlIG9wcG9ydHVuaXR5
IGZvciBpbmNvcnJlY3QgdXNlcwotICAvLyBsaWtlIHdyaXRpbmcgJ1dpdGhQYXJhbUludGVyZmFj
ZTxib29sPjo6R2V0UGFyYW0oKScgZm9yIGEgdGVzdCB0aGF0Ci0gIC8vIHVzZXMgYSBmaXh0dXJl
IHdob3NlIHBhcmFtZXRlciB0eXBlIGlzIGludC4KLSAgY29uc3QgUGFyYW1UeXBlJiBHZXRQYXJh
bSgpIGNvbnN0IHsKLSAgICBHVEVTVF9DSEVDS18ocGFyYW1ldGVyXyAhPSBOVUxMKQotICAgICAg
ICA8PCAiR2V0UGFyYW0oKSBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgdmFsdWUtcGFyYW1l
dGVyaXplZCB0ZXN0ICIKLSAgICAgICAgPDwgIi0tIGRpZCB5b3UgaW50ZW5kIHRvIHdyaXRlIFRF
U1RfUCBpbnN0ZWFkIG9mIFRFU1RfRj8iOwotICAgIHJldHVybiAqcGFyYW1ldGVyXzsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgLy8gU2V0cyBwYXJhbWV0ZXIgdmFsdWUuIFRoZSBjYWxsZXIgaXMgcmVz
cG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoZSB2YWx1ZQotICAvLyByZW1haW5zIGFsaXZlIGFu
ZCB1bmNoYW5nZWQgdGhyb3VnaG91dCB0aGUgY3VycmVudCB0ZXN0LgotICBzdGF0aWMgdm9pZCBT
ZXRQYXJhbShjb25zdCBQYXJhbVR5cGUqIHBhcmFtZXRlcikgewotICAgIHBhcmFtZXRlcl8gPSBw
YXJhbWV0ZXI7Ci0gIH0KLQotICAvLyBTdGF0aWMgdmFsdWUgdXNlZCBmb3IgYWNjZXNzaW5nIHBh
cmFtZXRlciBkdXJpbmcgYSB0ZXN0IGxpZmV0aW1lLgotICBzdGF0aWMgY29uc3QgUGFyYW1UeXBl
KiBwYXJhbWV0ZXJfOwotCi0gIC8vIFRlc3RDbGFzcyBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgV2l0
aFBhcmFtSW50ZXJmYWNlPFQ+IGFuZCBUZXN0LgotICB0ZW1wbGF0ZSA8Y2xhc3MgVGVzdENsYXNz
PiBmcmllbmQgY2xhc3MgaW50ZXJuYWw6OlBhcmFtZXRlcml6ZWRUZXN0RmFjdG9yeTsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY29uc3QgVCogV2l0aFBhcmFtSW50ZXJmYWNlPFQ+Ojpw
YXJhbWV0ZXJfID0gTlVMTDsKLQotLy8gTW9zdCB2YWx1ZS1wYXJhbWV0ZXJpemVkIGNsYXNzZXMg
Y2FuIGlnbm9yZSB0aGUgZXhpc3RlbmNlIG9mCi0vLyBXaXRoUGFyYW1JbnRlcmZhY2UsIGFuZCBj
YW4ganVzdCBpbmhlcml0IGZyb20gOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtLgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRlc3RXaXRoUGFyYW0gOiBwdWJsaWMgVGVzdCwgcHVibGlj
IFdpdGhQYXJhbUludGVyZmFjZTxUPiB7Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJB
TV9URVNUCi0KLS8vIE1hY3JvcyBmb3IgaW5kaWNhdGluZyBzdWNjZXNzL2ZhaWx1cmUgaW4gdGVz
dCBjb2RlLgotCi0vLyBBRERfRkFJTFVSRSB1bmNvbmRpdGlvbmFsbHkgYWRkcyBhIGZhaWx1cmUg
dG8gdGhlIGN1cnJlbnQgdGVzdC4KLS8vIFNVQ0NFRUQgZ2VuZXJhdGVzIGEgc3VjY2VzcyAtIGl0
IGRvZXNuJ3QgYXV0b21hdGljYWxseSBtYWtlIHRoZQotLy8gY3VycmVudCB0ZXN0IHN1Y2Nlc3Nm
dWwsIGFzIGEgdGVzdCBpcyBvbmx5IHN1Y2Nlc3NmdWwgd2hlbiBpdCBoYXMKLS8vIG5vIGZhaWx1
cmUuCi0vLwotLy8gRVhQRUNUXyogdmVyaWZpZXMgdGhhdCBhIGNlcnRhaW4gY29uZGl0aW9uIGlz
IHNhdGlzZmllZC4gIElmIG5vdCwKLS8vIGl0IGJlaGF2ZXMgbGlrZSBBRERfRkFJTFVSRS4gIElu
IHBhcnRpY3VsYXI6Ci0vLwotLy8gICBFWFBFQ1RfVFJVRSAgdmVyaWZpZXMgdGhhdCBhIEJvb2xl
YW4gY29uZGl0aW9uIGlzIHRydWUuCi0vLyAgIEVYUEVDVF9GQUxTRSB2ZXJpZmllcyB0aGF0IGEg
Qm9vbGVhbiBjb25kaXRpb24gaXMgZmFsc2UuCi0vLwotLy8gRkFJTCBhbmQgQVNTRVJUXyogYXJl
IHNpbWlsYXIgdG8gQUREX0ZBSUxVUkUgYW5kIEVYUEVDVF8qLCBleGNlcHQKLS8vIHRoYXQgdGhl
eSB3aWxsIGFsc28gYWJvcnQgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb24gZmFpbHVyZS4gIFBlb3Bs
ZQotLy8gdXN1YWxseSB3YW50IHRoZSBmYWlsLWZhc3QgYmVoYXZpb3Igb2YgRkFJTCBhbmQgQVNT
RVJUXyosIGJ1dCB0aG9zZQotLy8gd3JpdGluZyBkYXRhLWRyaXZlbiB0ZXN0cyBvZnRlbiBmaW5k
IHRoZW1zZWx2ZXMgdXNpbmcgQUREX0ZBSUxVUkUKLS8vIGFuZCBFWFBFQ1RfKiBtb3JlLgotCi0v
LyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlIHdpdGggYSBnZW5lcmljIG1lc3NhZ2UuCi0j
ZGVmaW5lIEFERF9GQUlMVVJFKCkgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8oIkZhaWxlZCIpCi0K
LS8vIEdlbmVyYXRlcyBhIG5vbmZhdGFsIGZhaWx1cmUgYXQgdGhlIGdpdmVuIHNvdXJjZSBmaWxl
IGxvY2F0aW9uIHdpdGgKLS8vIGEgZ2VuZXJpYyBtZXNzYWdlLgotI2RlZmluZSBBRERfRkFJTFVS
RV9BVChmaWxlLCBsaW5lKSBcCi0gIEdURVNUX01FU1NBR0VfQVRfKGZpbGUsIGxpbmUsICJGYWls
ZWQiLCBcCi0gICAgICAgICAgICAgICAgICAgIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtO
b25GYXRhbEZhaWx1cmUpCi0KLS8vIEdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1cmUgd2l0aCBhIGdl
bmVyaWMgbWVzc2FnZS4KLSNkZWZpbmUgR1RFU1RfRkFJTCgpIEdURVNUX0ZBVEFMX0ZBSUxVUkVf
KCJGYWlsZWQiKQotCi0vLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmlu
aXRpb24gb2YgRkFJTCgpLCB3aGljaCBpcyBhCi0vLyBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMg
d2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KLSNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfRkFJTAot
IyBkZWZpbmUgRkFJTCgpIEdURVNUX0ZBSUwoKQotI2VuZGlmCi0KLS8vIEdlbmVyYXRlcyBhIHN1
Y2Nlc3Mgd2l0aCBhIGdlbmVyaWMgbWVzc2FnZS4KLSNkZWZpbmUgR1RFU1RfU1VDQ0VFRCgpIEdU
RVNUX1NVQ0NFU1NfKCJTdWNjZWVkZWQiKQotCi0vLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRv
IG9taXQgdGhlIGRlZmluaXRpb24gb2YgU1VDQ0VFRCgpLCB3aGljaAotLy8gaXMgYSBnZW5lcmlj
IG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21lIG90aGVyIGxpYnJhcmllcy4KLSNpZiAhR1RFU1Rf
RE9OVF9ERUZJTkVfU1VDQ0VFRAotIyBkZWZpbmUgU1VDQ0VFRCgpIEdURVNUX1NVQ0NFRUQoKQot
I2VuZGlmCi0KLS8vIE1hY3JvcyBmb3IgdGVzdGluZyBleGNlcHRpb25zLgotLy8KLS8vICAgICog
e0FTU0VSVHxFWFBFQ1R9X1RIUk9XKHN0YXRlbWVudCwgZXhwZWN0ZWRfZXhjZXB0aW9uKToKLS8v
ICAgICAgICAgVGVzdHMgdGhhdCB0aGUgc3RhdGVtZW50IHRocm93cyB0aGUgZXhwZWN0ZWQgZXhj
ZXB0aW9uLgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fTk9fVEhST1coc3RhdGVtZW50KToKLS8v
ICAgICAgICAgVGVzdHMgdGhhdCB0aGUgc3RhdGVtZW50IGRvZXNuJ3QgdGhyb3cgYW55IGV4Y2Vw
dGlvbi4KLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X0FOWV9USFJPVyhzdGF0ZW1lbnQpOgotLy8g
ICAgICAgICBUZXN0cyB0aGF0IHRoZSBzdGF0ZW1lbnQgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KLQot
I2RlZmluZSBFWFBFQ1RfVEhST1coc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24pIFwKLSAg
R1RFU1RfVEVTVF9USFJPV18oc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24sIEdURVNUX05P
TkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBFWFBFQ1RfTk9fVEhST1coc3RhdGVtZW50KSBcCi0g
IEdURVNUX1RFU1RfTk9fVEhST1dfKHN0YXRlbWVudCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8p
Ci0jZGVmaW5lIEVYUEVDVF9BTllfVEhST1coc3RhdGVtZW50KSBcCi0gIEdURVNUX1RFU1RfQU5Z
X1RIUk9XXyhzdGF0ZW1lbnQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NF
UlRfVEhST1coc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24pIFwKLSAgR1RFU1RfVEVTVF9U
SFJPV18oc3RhdGVtZW50LCBleHBlY3RlZF9leGNlcHRpb24sIEdURVNUX0ZBVEFMX0ZBSUxVUkVf
KQotI2RlZmluZSBBU1NFUlRfTk9fVEhST1coc3RhdGVtZW50KSBcCi0gIEdURVNUX1RFU1RfTk9f
VEhST1dfKHN0YXRlbWVudCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VSVF9B
TllfVEhST1coc3RhdGVtZW50KSBcCi0gIEdURVNUX1RFU1RfQU5ZX1RIUk9XXyhzdGF0ZW1lbnQs
IEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotCi0vLyBCb29sZWFuIGFzc2VydGlvbnMuIENvbmRpdGlv
biBjYW4gYmUgZWl0aGVyIGEgQm9vbGVhbiBleHByZXNzaW9uIG9yIGFuCi0vLyBBc3NlcnRpb25S
ZXN1bHQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgQXNzZXJ0aW9uUmVzdWx0
IHdpdGgKLS8vIHRoZXNlIG1hY3JvcyBzZWUgY29tbWVudHMgb24gdGhhdCBjbGFzcy4KLSNkZWZp
bmUgRVhQRUNUX1RSVUUoY29uZGl0aW9uKSBcCi0gIEdURVNUX1RFU1RfQk9PTEVBTl8oKGNvbmRp
dGlvbiksICNjb25kaXRpb24sIGZhbHNlLCB0cnVlLCBcCi0gICAgICAgICAgICAgICAgICAgICAg
R1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEVYUEVDVF9GQUxTRShjb25kaXRpb24p
IFwKLSAgR1RFU1RfVEVTVF9CT09MRUFOXyghKGNvbmRpdGlvbiksICNjb25kaXRpb24sIHRydWUs
IGZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8p
Ci0jZGVmaW5lIEFTU0VSVF9UUlVFKGNvbmRpdGlvbikgXAotICBHVEVTVF9URVNUX0JPT0xFQU5f
KChjb25kaXRpb24pLCAjY29uZGl0aW9uLCBmYWxzZSwgdHJ1ZSwgXAotICAgICAgICAgICAgICAg
ICAgICAgIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfRkFMU0UoY29uZGl0
aW9uKSBcCi0gIEdURVNUX1RFU1RfQk9PTEVBTl8oIShjb25kaXRpb24pLCAjY29uZGl0aW9uLCB0
cnVlLCBmYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgIEdURVNUX0ZBVEFMX0ZBSUxVUkVf
KQotCi0vLyBJbmNsdWRlcyB0aGUgYXV0by1nZW5lcmF0ZWQgaGVhZGVyIHRoYXQgaW1wbGVtZW50
cyBhIGZhbWlseSBvZgotLy8gZ2VuZXJpYyBwcmVkaWNhdGUgYXNzZXJ0aW9uIG1hY3Jvcy4KLSNp
bmNsdWRlICJndGVzdC9ndGVzdF9wcmVkX2ltcGwuaCIKLQotLy8gTWFjcm9zIGZvciB0ZXN0aW5n
IGVxdWFsaXRpZXMgYW5kIGluZXF1YWxpdGllcy4KLS8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9FUSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxID09IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9ORSh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxICE9IHYyCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNU
fV9MVCh2MSwgdjIpOiBUZXN0cyB0aGF0IHYxIDwgdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9
X0xFKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPD0gdjIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9
X0dUKHYxLCB2Mik6IFRlc3RzIHRoYXQgdjEgPiB2MgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1f
R0UodjEsIHYyKTogVGVzdHMgdGhhdCB2MSA+PSB2MgotLy8KLS8vIFdoZW4gdGhleSBhcmUgbm90
LCBHb29nbGUgVGVzdCBwcmludHMgYm90aCB0aGUgdGVzdGVkIGV4cHJlc3Npb25zIGFuZAotLy8g
dGhlaXIgYWN0dWFsIHZhbHVlcy4gIFRoZSB2YWx1ZXMgbXVzdCBiZSBjb21wYXRpYmxlIGJ1aWx0
LWluIHR5cGVzLAotLy8gb3IgeW91IHdpbGwgZ2V0IGEgY29tcGlsZXIgZXJyb3IuICBCeSAiY29t
cGF0aWJsZSIgd2UgbWVhbiB0aGF0IHRoZQotLy8gdmFsdWVzIGNhbiBiZSBjb21wYXJlZCBieSB0
aGUgcmVzcGVjdGl2ZSBvcGVyYXRvci4KLS8vCi0vLyBOb3RlOgotLy8KLS8vICAgMS4gSXQgaXMg
cG9zc2libGUgdG8gbWFrZSBhIHVzZXItZGVmaW5lZCB0eXBlIHdvcmsgd2l0aAotLy8gICB7QVNT
RVJUfEVYUEVDVH1fPz8oKSwgYnV0IHRoYXQgcmVxdWlyZXMgb3ZlcmxvYWRpbmcgdGhlCi0vLyAg
IGNvbXBhcmlzb24gb3BlcmF0b3JzIGFuZCBpcyB0aHVzIGRpc2NvdXJhZ2VkIGJ5IHRoZSBHb29n
bGUgQysrCi0vLyAgIFVzYWdlIEd1aWRlLiAgVGhlcmVmb3JlLCB5b3UgYXJlIGFkdmlzZWQgdG8g
dXNlIHRoZQotLy8gICB7QVNTRVJUfEVYUEVDVH1fVFJVRSgpIG1hY3JvIHRvIGFzc2VydCB0aGF0
IHR3byBvYmplY3RzIGFyZQotLy8gICBlcXVhbC4KLS8vCi0vLyAgIDIuIFRoZSB7QVNTRVJUfEVY
UEVDVH1fPz8oKSBtYWNyb3MgZG8gcG9pbnRlciBjb21wYXJpc29ucyBvbgotLy8gICBwb2ludGVy
cyAoaW4gcGFydGljdWxhciwgQyBzdHJpbmdzKS4gIFRoZXJlZm9yZSwgaWYgeW91IHVzZSBpdAot
Ly8gICB3aXRoIHR3byBDIHN0cmluZ3MsIHlvdSBhcmUgdGVzdGluZyBob3cgdGhlaXIgbG9jYXRp
b25zIGluIG1lbW9yeQotLy8gICBhcmUgcmVsYXRlZCwgbm90IGhvdyB0aGVpciBjb250ZW50IGlz
IHJlbGF0ZWQuICBUbyBjb21wYXJlIHR3byBDCi0vLyAgIHN0cmluZ3MgYnkgY29udGVudCwgdXNl
IHtBU1NFUlR8RVhQRUNUfV9TVFIqKCkuCi0vLwotLy8gICAzLiB7QVNTRVJUfEVYUEVDVH1fRVEo
djEsIHYyKSBpcyBwcmVmZXJyZWQgdG8KLS8vICAge0FTU0VSVHxFWFBFQ1R9X1RSVUUodjEgPT0g
djIpLCBhcyB0aGUgZm9ybWVyIHRlbGxzIHlvdQotLy8gICB3aGF0IHRoZSBhY3R1YWwgdmFsdWUg
aXMgd2hlbiBpdCBmYWlscywgYW5kIHNpbWlsYXJseSBmb3IgdGhlCi0vLyAgIG90aGVyIGNvbXBh
cmlzb25zLgotLy8KLS8vICAgNC4gRG8gbm90IGRlcGVuZCBvbiB0aGUgb3JkZXIgaW4gd2hpY2gg
e0FTU0VSVHxFWFBFQ1R9Xz8/KCkKLS8vICAgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzLCB3aGlj
aCBpcyB1bmRlZmluZWQuCi0vLwotLy8gICA1LiBUaGVzZSBtYWNyb3MgZXZhbHVhdGUgdGhlaXIg
YXJndW1lbnRzIGV4YWN0bHkgb25jZS4KLS8vCi0vLyBFeGFtcGxlczoKLS8vCi0vLyAgIEVYUEVD
VF9ORSg1LCBGb28oKSk7Ci0vLyAgIEVYUEVDVF9FUShOVUxMLCBhX3BvaW50ZXIpOwotLy8gICBB
U1NFUlRfTFQoaSwgYXJyYXlfc2l6ZSk7Ci0vLyAgIEFTU0VSVF9HVChyZWNvcmRzLnNpemUoKSwg
MCkgPDwgIlRoZXJlIGlzIG5vIHJlY29yZCBsZWZ0LiI7Ci0KLSNkZWZpbmUgRVhQRUNUX0VRKHZh
bDEsIHZhbDIpIFwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjog
XAotICAgICAgICAgICAgICAgICAgICAgIEVxSGVscGVyPEdURVNUX0lTX05VTExfTElURVJBTF8o
dmFsMSk+OjpDb21wYXJlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikKLSNk
ZWZpbmUgRVhQRUNUX05FKHZhbDEsIHZhbDIpIFwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRl
c3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJORSwgdmFsMSwgdmFsMikKLSNkZWZpbmUgRVhQRUNU
X0xFKHZhbDEsIHZhbDIpIFwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVy
bmFsOjpDbXBIZWxwZXJMRSwgdmFsMSwgdmFsMikKLSNkZWZpbmUgRVhQRUNUX0xUKHZhbDEsIHZh
bDIpIFwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxw
ZXJMVCwgdmFsMSwgdmFsMikKLSNkZWZpbmUgRVhQRUNUX0dFKHZhbDEsIHZhbDIpIFwKLSAgRVhQ
RUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHRSwgdmFsMSwg
dmFsMikKLSNkZWZpbmUgRVhQRUNUX0dUKHZhbDEsIHZhbDIpIFwKLSAgRVhQRUNUX1BSRURfRk9S
TUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJHVCwgdmFsMSwgdmFsMikKLQotI2Rl
ZmluZSBHVEVTVF9BU1NFUlRfRVEodmFsMSwgdmFsMikgXAotICBBU1NFUlRfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OiBcCi0gICAgICAgICAgICAgICAgICAgICAgRXFIZWxwZXI8
R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh2YWwxKT46OkNvbXBhcmUsIFwKLSAgICAgICAgICAgICAg
ICAgICAgICB2YWwxLCB2YWwyKQotI2RlZmluZSBHVEVTVF9BU1NFUlRfTkUodmFsMSwgdmFsMikg
XAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlck5F
LCB2YWwxLCB2YWwyKQotI2RlZmluZSBHVEVTVF9BU1NFUlRfTEUodmFsMSwgdmFsMikgXAotICBB
U1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxFLCB2YWwx
LCB2YWwyKQotI2RlZmluZSBHVEVTVF9BU1NFUlRfTFQodmFsMSwgdmFsMikgXAotICBBU1NFUlRf
UFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckxULCB2YWwxLCB2YWwy
KQotI2RlZmluZSBHVEVTVF9BU1NFUlRfR0UodmFsMSwgdmFsMikgXAotICBBU1NFUlRfUFJFRF9G
T1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdFLCB2YWwxLCB2YWwyKQotI2Rl
ZmluZSBHVEVTVF9BU1NFUlRfR1QodmFsMSwgdmFsMikgXAotICBBU1NFUlRfUFJFRF9GT1JNQVQy
KDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckdULCB2YWwxLCB2YWwyKQotCi0vLyBEZWZp
bmUgbWFjcm8gR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX1hZIHRvIDEgdG8gb21pdCB0aGUgZGVm
aW5pdGlvbiBvZgotLy8gQVNTRVJUX1hZKCksIHdoaWNoIGNsYXNoZXMgd2l0aCBzb21lIHVzZXJz
JyBvd24gY29kZS4KLQotI2lmICFHVEVTVF9ET05UX0RFRklORV9BU1NFUlRfRVEKLSMgZGVmaW5l
IEFTU0VSVF9FUSh2YWwxLCB2YWwyKSBHVEVTVF9BU1NFUlRfRVEodmFsMSwgdmFsMikKLSNlbmRp
ZgotCi0jaWYgIUdURVNUX0RPTlRfREVGSU5FX0FTU0VSVF9ORQotIyBkZWZpbmUgQVNTRVJUX05F
KHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9ORSh2YWwxLCB2YWwyKQotI2VuZGlmCi0KLSNpZiAh
R1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0xFCi0jIGRlZmluZSBBU1NFUlRfTEUodmFsMSwgdmFs
MikgR1RFU1RfQVNTRVJUX0xFKHZhbDEsIHZhbDIpCi0jZW5kaWYKLQotI2lmICFHVEVTVF9ET05U
X0RFRklORV9BU1NFUlRfTFQKLSMgZGVmaW5lIEFTU0VSVF9MVCh2YWwxLCB2YWwyKSBHVEVTVF9B
U1NFUlRfTFQodmFsMSwgdmFsMikKLSNlbmRpZgotCi0jaWYgIUdURVNUX0RPTlRfREVGSU5FX0FT
U0VSVF9HRQotIyBkZWZpbmUgQVNTRVJUX0dFKHZhbDEsIHZhbDIpIEdURVNUX0FTU0VSVF9HRSh2
YWwxLCB2YWwyKQotI2VuZGlmCi0KLSNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfQVNTRVJUX0dUCi0j
IGRlZmluZSBBU1NFUlRfR1QodmFsMSwgdmFsMikgR1RFU1RfQVNTRVJUX0dUKHZhbDEsIHZhbDIp
Ci0jZW5kaWYKLQotLy8gQy1zdHJpbmcgQ29tcGFyaXNvbnMuICBBbGwgdGVzdHMgdHJlYXQgTlVM
TCBhbmQgYW55IG5vbi1OVUxMIHN0cmluZwotLy8gYXMgZGlmZmVyZW50LiAgVHdvIE5VTExzIGFy
ZSBlcXVhbC4KLS8vCi0vLyAgICAqIHtBU1NFUlR8RVhQRUNUfV9TVFJFUShzMSwgczIpOiAgICAg
VGVzdHMgdGhhdCBzMSA9PSBzMgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fU1RSTkUoczEsIHMy
KTogICAgIFRlc3RzIHRoYXQgczEgIT0gczIKLS8vICAgICoge0FTU0VSVHxFWFBFQ1R9X1NUUkNB
U0VFUShzMSwgczIpOiBUZXN0cyB0aGF0IHMxID09IHMyLCBpZ25vcmluZyBjYXNlCi0vLyAgICAq
IHtBU1NFUlR8RVhQRUNUfV9TVFJDQVNFTkUoczEsIHMyKTogVGVzdHMgdGhhdCBzMSAhPSBzMiwg
aWdub3JpbmcgY2FzZQotLy8KLS8vIEZvciB3aWRlIG9yIG5hcnJvdyBzdHJpbmcgb2JqZWN0cywg
eW91IGNhbiB1c2UgdGhlCi0vLyB7QVNTRVJUfEVYUEVDVH1fPz8oKSBtYWNyb3MuCi0vLwotLy8g
RG9uJ3QgZGVwZW5kIG9uIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgYXJndW1lbnRzIGFyZSBldmFs
dWF0ZWQsCi0vLyB3aGljaCBpcyB1bmRlZmluZWQuCi0vLwotLy8gVGhlc2UgbWFjcm9zIGV2YWx1
YXRlIHRoZWlyIGFyZ3VtZW50cyBleGFjdGx5IG9uY2UuCi0KLSNkZWZpbmUgRVhQRUNUX1NUUkVR
KHMxLCBzMikgXAotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNt
cEhlbHBlclNUUkVRLCBzMSwgczIpCi0jZGVmaW5lIEVYUEVDVF9TVFJORShzMSwgczIpIFwKLSAg
RVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFsOjpDbXBIZWxwZXJTVFJORSwg
czEsIHMyKQotI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRUVRKHMxLCBzMikgXAotICBFWFBFQ1RfUFJF
RF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkNBU0VFUSwgczEsIHMy
KQotI2RlZmluZSBFWFBFQ1RfU1RSQ0FTRU5FKHMxLCBzMilcCi0gIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FTRU5FLCBzMSwgczIpCi0KLSNk
ZWZpbmUgQVNTRVJUX1NUUkVRKHMxLCBzMikgXAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVz
dGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRLCBzMSwgczIpCi0jZGVmaW5lIEFTU0VSVF9T
VFJORShzMSwgczIpIFwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFs
OjpDbXBIZWxwZXJTVFJORSwgczEsIHMyKQotI2RlZmluZSBBU1NFUlRfU1RSQ0FTRUVRKHMxLCBz
MikgXAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBl
clNUUkNBU0VFUSwgczEsIHMyKQotI2RlZmluZSBBU1NFUlRfU1RSQ0FTRU5FKHMxLCBzMilcCi0g
IEFTU0VSVF9QUkVEX0ZPUk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSQ0FT
RU5FLCBzMSwgczIpCi0KLS8vIE1hY3JvcyBmb3IgY29tcGFyaW5nIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMuCi0vLwotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRkxPQVRfRVEodmFsMSwgdmFsMik6
Ci0vLyAgICAgICAgIFRlc3RzIHRoYXQgdHdvIGZsb2F0IHZhbHVlcyBhcmUgYWxtb3N0IGVxdWFs
LgotLy8gICAgKiB7QVNTRVJUfEVYUEVDVH1fRE9VQkxFX0VRKHZhbDEsIHZhbDIpOgotLy8gICAg
ICAgICBUZXN0cyB0aGF0IHR3byBkb3VibGUgdmFsdWVzIGFyZSBhbG1vc3QgZXF1YWwuCi0vLyAg
ICAqIHtBU1NFUlR8RVhQRUNUfV9ORUFSKHYxLCB2MiwgYWJzX2Vycm9yKToKLS8vICAgICAgICAg
VGVzdHMgdGhhdCB2MSBhbmQgdjIgYXJlIHdpdGhpbiB0aGUgZ2l2ZW4gZGlzdGFuY2UgdG8gZWFj
aCBvdGhlci4KLS8vCi0vLyBHb29nbGUgVGVzdCB1c2VzIFVMUC1iYXNlZCBjb21wYXJpc29uIHRv
IGF1dG9tYXRpY2FsbHkgcGljayBhIGRlZmF1bHQKLS8vIGVycm9yIGJvdW5kIHRoYXQgaXMgYXBw
cm9wcmlhdGUgZm9yIHRoZSBvcGVyYW5kcy4gIFNlZSB0aGUKLS8vIEZsb2F0aW5nUG9pbnQgdGVt
cGxhdGUgY2xhc3MgaW4gZ3Rlc3QtaW50ZXJuYWwuaCBpZiB5b3UgYXJlCi0vLyBpbnRlcmVzdGVk
IGluIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgotCi0jZGVmaW5lIEVYUEVDVF9GTE9BVF9F
USh2YWwxLCB2YWwyKVwKLSAgRVhQRUNUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6OmludGVybmFs
OjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZmxvYXQ+LCBcCi0gICAgICAgICAgICAgICAgICAg
ICAgdmFsMSwgdmFsMikKLQotI2RlZmluZSBFWFBFQ1RfRE9VQkxFX0VRKHZhbDEsIHZhbDIpXAot
ICBFWFBFQ1RfUFJFRF9GT1JNQVQyKDo6dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlckZsb2F0
aW5nUG9pbnRFUTxkb3VibGU+LCBcCi0gICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMikK
LQotI2RlZmluZSBBU1NFUlRfRkxPQVRfRVEodmFsMSwgdmFsMilcCi0gIEFTU0VSVF9QUkVEX0ZP
Uk1BVDIoOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyRmxvYXRpbmdQb2ludEVRPGZsb2F0
PiwgXAotICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZhbDIpCi0KLSNkZWZpbmUgQVNTRVJU
X0RPVUJMRV9FUSh2YWwxLCB2YWwyKVwKLSAgQVNTRVJUX1BSRURfRk9STUFUMig6OnRlc3Rpbmc6
OmludGVybmFsOjpDbXBIZWxwZXJGbG9hdGluZ1BvaW50RVE8ZG91YmxlPiwgXAotICAgICAgICAg
ICAgICAgICAgICAgIHZhbDEsIHZhbDIpCi0KLSNkZWZpbmUgRVhQRUNUX05FQVIodmFsMSwgdmFs
MiwgYWJzX2Vycm9yKVwKLSAgRVhQRUNUX1BSRURfRk9STUFUMyg6OnRlc3Rpbmc6OmludGVybmFs
OjpEb3VibGVOZWFyUHJlZEZvcm1hdCwgXAotICAgICAgICAgICAgICAgICAgICAgIHZhbDEsIHZh
bDIsIGFic19lcnJvcikKLQotI2RlZmluZSBBU1NFUlRfTkVBUih2YWwxLCB2YWwyLCBhYnNfZXJy
b3IpXAotICBBU1NFUlRfUFJFRF9GT1JNQVQzKDo6dGVzdGluZzo6aW50ZXJuYWw6OkRvdWJsZU5l
YXJQcmVkRm9ybWF0LCBcCi0gICAgICAgICAgICAgICAgICAgICAgdmFsMSwgdmFsMiwgYWJzX2Vy
cm9yKQotCi0vLyBUaGVzZSBwcmVkaWNhdGUgZm9ybWF0IGZ1bmN0aW9ucyB3b3JrIG9uIGZsb2F0
aW5nLXBvaW50IHZhbHVlcywgYW5kCi0vLyBjYW4gYmUgdXNlZCBpbiB7QVNTRVJUfEVYUEVDVH1f
UFJFRF9GT1JNQVQyKigpLCBlLmcuCi0vLwotLy8gICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rp
bmc6OkRvdWJsZUxFLCBGb28oKSwgNS4wKTsKLQotLy8gQXNzZXJ0cyB0aGF0IHZhbDEgaXMgbGVz
cyB0aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIHZhbDIuICBGYWlscwotLy8gb3RoZXJ3aXNlLiAg
SW4gcGFydGljdWxhciwgaXQgZmFpbHMgaWYgZWl0aGVyIHZhbDEgb3IgdmFsMiBpcyBOYU4uCi1H
VEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBGbG9hdExFKGNvbnN0IGNoYXIqIGV4cHIxLCBjb25z
dCBjaGFyKiBleHByMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dmFsMSwgZmxvYXQgdmFsMik7Ci1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBEb3VibGVMRShj
b25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgdmFsMSwgZG91YmxlIHZhbDIpOwotCi0KLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0KLS8vIE1hY3JvcyB0aGF0IHRlc3QgZm9yIEhSRVNVTFQgZmFpbHVyZSBh
bmQgc3VjY2VzcywgdGhlc2UgYXJlIG9ubHkgdXNlZnVsCi0vLyBvbiBXaW5kb3dzLCBhbmQgcmVs
eSBvbiBXaW5kb3dzIFNESyBtYWNyb3MgYW5kIEFQSXMgdG8gY29tcGlsZS4KLS8vCi0vLyAgICAq
IHtBU1NFUlR8RVhQRUNUfV9IUkVTVUxUX3tTVUNDRUVERUR8RkFJTEVEfShleHByKQotLy8KLS8v
IFdoZW4gZXhwciB1bmV4cGVjdGVkbHkgZmFpbHMgb3Igc3VjY2VlZHMsIEdvb2dsZSBUZXN0IHBy
aW50cyB0aGUKLS8vIGV4cGVjdGVkIHJlc3VsdCBhbmQgdGhlIGFjdHVhbCByZXN1bHQgd2l0aCBi
b3RoIGEgaHVtYW4tcmVhZGFibGUKLS8vIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJy
b3IsIGlmIGF2YWlsYWJsZSwgYXMgd2VsbCBhcyB0aGUKLS8vIGhleCByZXN1bHQgY29kZS4KLSMg
ZGVmaW5lIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCi0gICAgRVhQRUNUX1BSRURf
Rk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikpCi0K
LSMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChleHByKSBcCi0gICAgQVNTRVJUX1BS
RURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRTdWNjZXNzLCAoZXhwcikp
Ci0KLSMgZGVmaW5lIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCi0gICAgRVhQRUNUX1BS
RURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikp
Ci0KLSMgZGVmaW5lIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChleHByKSBcCi0gICAgQVNTRVJUX1BS
RURfRk9STUFUMSg6OnRlc3Rpbmc6OmludGVybmFsOjpJc0hSRVNVTFRGYWlsdXJlLCAoZXhwcikp
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBNYWNyb3MgdGhhdCBleGVjdXRl
IHN0YXRlbWVudCBhbmQgY2hlY2sgdGhhdCBpdCBkb2Vzbid0IGdlbmVyYXRlIG5ldyBmYXRhbAot
Ly8gZmFpbHVyZXMgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLgotLy8KLS8vICAgKiB7QVNTRVJUfEVY
UEVDVH1fTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpOwotLy8KLS8vIEV4YW1wbGVzOgotLy8K
LS8vICAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoUHJvY2VzcygpKTsKLS8vICAgQVNTRVJUX05P
X0ZBVEFMX0ZBSUxVUkUoUHJvY2VzcygpKSA8PCAiUHJvY2VzcygpIGZhaWxlZCI7Ci0vLwotI2Rl
ZmluZSBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShzdGF0ZW1lbnQpIFwKLSAgICBHVEVTVF9URVNU
X05PX0ZBVEFMX0ZBSUxVUkVfKHN0YXRlbWVudCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVm
aW5lIEVYUEVDVF9OT19GQVRBTF9GQUlMVVJFKHN0YXRlbWVudCkgXAotICAgIEdURVNUX1RFU1Rf
Tk9fRkFUQUxfRkFJTFVSRV8oc3RhdGVtZW50LCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLQot
Ly8gQ2F1c2VzIGEgdHJhY2UgKGluY2x1ZGluZyB0aGUgc291cmNlIGZpbGUgcGF0aCwgdGhlIGN1
cnJlbnQgbGluZQotLy8gbnVtYmVyLCBhbmQgdGhlIGdpdmVuIG1lc3NhZ2UpIHRvIGJlIGluY2x1
ZGVkIGluIGV2ZXJ5IHRlc3QgZmFpbHVyZQotLy8gbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29kZSBp
biB0aGUgY3VycmVudCBzY29wZS4gIFRoZSBlZmZlY3QgaXMKLS8vIHVuZG9uZSB3aGVuIHRoZSBj
b250cm9sIGxlYXZlcyB0aGUgY3VycmVudCBzY29wZS4KLS8vCi0vLyBUaGUgbWVzc2FnZSBhcmd1
bWVudCBjYW4gYmUgYW55dGhpbmcgc3RyZWFtYWJsZSB0byBzdGQ6Om9zdHJlYW0uCi0vLwotLy8g
SW4gdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBpbmNsdWRlIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVy
IGFzIHBhcnQKLS8vIG9mIHRoZSBkdW1teSB2YXJpYWJsZSBuYW1lLCB0aHVzIGFsbG93aW5nIG11
bHRpcGxlIFNDT1BFRF9UUkFDRSgpcwotLy8gdG8gYXBwZWFyIGluIHRoZSBzYW1lIGJsb2NrIC0g
YXMgbG9uZyBhcyB0aGV5IGFyZSBvbiBkaWZmZXJlbnQKLS8vIGxpbmVzLgotI2RlZmluZSBTQ09Q
RURfVFJBQ0UobWVzc2FnZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpTY29wZWRUcmFjZSBH
VEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X3RyYWNlXywgX19MSU5FX18pKFwKLSAgICBfX0ZJTEVf
XywgX19MSU5FX18sIDo6dGVzdGluZzo6TWVzc2FnZSgpIDw8IChtZXNzYWdlKSkKLQotLy8gQ29t
cGlsZS10aW1lIGFzc2VydGlvbiBmb3IgdHlwZSBlcXVhbGl0eS4KLS8vIFN0YXRpY0Fzc2VydFR5
cGVFcTx0eXBlMSwgdHlwZTI+KCkgY29tcGlsZXMgaWZmIHR5cGUxIGFuZCB0eXBlMiBhcmUKLS8v
IHRoZSBzYW1lIHR5cGUuICBUaGUgdmFsdWUgaXQgcmV0dXJucyBpcyBub3QgaW50ZXJlc3Rpbmcu
Ci0vLwotLy8gSW5zdGVhZCBvZiBtYWtpbmcgU3RhdGljQXNzZXJ0VHlwZUVxIGEgY2xhc3MgdGVt
cGxhdGUsIHdlIG1ha2UgaXQgYQotLy8gZnVuY3Rpb24gdGVtcGxhdGUgdGhhdCBpbnZva2VzIGEg
aGVscGVyIGNsYXNzIHRlbXBsYXRlLiAgVGhpcwotLy8gcHJldmVudHMgYSB1c2VyIGZyb20gbWlz
dXNpbmcgU3RhdGljQXNzZXJ0VHlwZUVxPFQxLCBUMj4gYnkKLS8vIGRlZmluaW5nIG9iamVjdHMg
b2YgdGhhdCB0eXBlLgotLy8KLS8vIENBVkVBVDoKLS8vCi0vLyBXaGVuIHVzZWQgaW5zaWRlIGEg
bWV0aG9kIG9mIGEgY2xhc3MgdGVtcGxhdGUsCi0vLyBTdGF0aWNBc3NlcnRUeXBlRXE8VDEsIFQy
PigpIGlzIGVmZmVjdGl2ZSBPTkxZIElGIHRoZSBtZXRob2QgaXMKLS8vIGluc3RhbnRpYXRlZC4g
IEZvciBleGFtcGxlLCBnaXZlbjoKLS8vCi0vLyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBGb28gewotLy8gICAgcHVibGljOgotLy8gICAgIHZvaWQgQmFyKCkgeyB0ZXN0aW5nOjpTdGF0
aWNBc3NlcnRUeXBlRXE8aW50LCBUPigpOyB9Ci0vLyAgIH07Ci0vLwotLy8gdGhlIGNvZGU6Ci0v
LwotLy8gICB2b2lkIFRlc3QxKCkgeyBGb288Ym9vbD4gZm9vOyB9Ci0vLwotLy8gd2lsbCBOT1Qg
Z2VuZXJhdGUgYSBjb21waWxlciBlcnJvciwgYXMgRm9vPGJvb2w+OjpCYXIoKSBpcyBuZXZlcgot
Ly8gYWN0dWFsbHkgaW5zdGFudGlhdGVkLiAgSW5zdGVhZCwgeW91IG5lZWQ6Ci0vLwotLy8gICB2
b2lkIFRlc3QyKCkgeyBGb288Ym9vbD4gZm9vOyBmb28uQmFyKCk7IH0KLS8vCi0vLyB0byBjYXVz
ZSBhIGNvbXBpbGVyIGVycm9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
LWJvb2wgU3RhdGljQXNzZXJ0VHlwZUVxKCkgewotICAodm9pZClpbnRlcm5hbDo6U3RhdGljQXNz
ZXJ0VHlwZUVxSGVscGVyPFQxLCBUMj4oKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIERlZmlu
ZXMgYSB0ZXN0LgotLy8KLS8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgY2FzZSwgYW5kIHRoZSBzZWNvbmQKLS8vIHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0
aGUgdGVzdCB3aXRoaW4gdGhlIHRlc3QgY2FzZS4KLS8vCi0vLyBUaGUgY29udmVudGlvbiBpcyB0
byBlbmQgdGhlIHRlc3QgY2FzZSBuYW1lIHdpdGggIlRlc3QiLiAgRm9yCi0vLyBleGFtcGxlLCBh
IHRlc3QgY2FzZSBmb3IgdGhlIEZvbyBjbGFzcyBjYW4gYmUgbmFtZWQgRm9vVGVzdC4KLS8vCi0v
LyBUZXN0IGNvZGUgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIGJyYWNlcyBhZnRlciBhbiBpbnZvY2F0
aW9uIG9mCi0vLyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKLS8vCi0vLyAgIFRFU1QoRm9vVGVzdCwg
SW5pdGlhbGl6ZXNDb3JyZWN0bHkpIHsKLS8vICAgICBGb28gZm9vOwotLy8gICAgIEVYUEVDVF9U
UlVFKGZvby5TdGF0dXNJc09LKCkpOwotLy8gICB9Ci0KLS8vIE5vdGUgdGhhdCB3ZSBjYWxsIEdl
dFRlc3RUeXBlSWQoKSBpbnN0ZWFkIG9mIEdldFR5cGVJZDwKLS8vIDo6dGVzdGluZzo6VGVzdD4o
KSBoZXJlIHRvIGdldCB0aGUgdHlwZSBJRCBvZiB0ZXN0aW5nOjpUZXN0LiAgVGhpcwotLy8gaXMg
dG8gd29yayBhcm91bmQgYSBzdXNwZWN0ZWQgbGlua2VyIGJ1ZyB3aGVuIHVzaW5nIEdvb2dsZSBU
ZXN0IGFzCi0vLyBhIGZyYW1ld29yayBvbiBNYWMgT1MgWC4gIFRoZSBidWcgY2F1c2VzIEdldFR5
cGVJZDwKLS8vIDo6dGVzdGluZzo6VGVzdD4oKSB0byByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBk
ZXBlbmRpbmcgb24gd2hldGhlcgotLy8gdGhlIGNhbGwgaXMgZnJvbSB0aGUgR29vZ2xlIFRlc3Qg
ZnJhbWV3b3JrIGl0c2VsZiBvciBmcm9tIHVzZXIgdGVzdAotLy8gY29kZS4gIEdldFRlc3RUeXBl
SWQoKSBpcyBndWFyYW50ZWVkIHRvIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUKLS8vIHZhbHVlLCBh
cyBpdCBhbHdheXMgY2FsbHMgR2V0VHlwZUlkPD4oKSBmcm9tIHRoZSBHb29nbGUgVGVzdAotLy8g
ZnJhbWV3b3JrLgotI2RlZmluZSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
XAotICBHVEVTVF9URVNUXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lLCBcCi0gICAgICAgICAg
ICAgIDo6dGVzdGluZzo6VGVzdCwgOjp0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGVzdFR5cGVJZCgp
KQotCi0vLyBEZWZpbmUgdGhpcyBtYWNybyB0byAxIHRvIG9taXQgdGhlIGRlZmluaXRpb24gb2Yg
VEVTVCgpLCB3aGljaAotLy8gaXMgYSBnZW5lcmljIG5hbWUgYW5kIGNsYXNoZXMgd2l0aCBzb21l
IG90aGVyIGxpYnJhcmllcy4KLSNpZiAhR1RFU1RfRE9OVF9ERUZJTkVfVEVTVAotIyBkZWZpbmUg
VEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSBHVEVTVF9URVNUKHRlc3RfY2FzZV9uYW1l
LCB0ZXN0X25hbWUpCi0jZW5kaWYKLQotLy8gRGVmaW5lcyBhIHRlc3QgdGhhdCB1c2VzIGEgdGVz
dCBmaXh0dXJlLgotLy8KLS8vIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgZml4dHVyZSBjbGFzcywgd2hpY2gKLS8vIGFsc28gZG91YmxlcyBhcyB0aGUgdGVzdCBj
YXNlIG5hbWUuICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUKLS8vIG5hbWUgb2YgdGhlIHRl
c3Qgd2l0aGluIHRoZSB0ZXN0IGNhc2UuCi0vLwotLy8gQSB0ZXN0IGZpeHR1cmUgY2xhc3MgbXVz
dCBiZSBkZWNsYXJlZCBlYXJsaWVyLiAgVGhlIHVzZXIgc2hvdWxkIHB1dAotLy8gdGhlIHRlc3Qg
Y29kZSBiZXR3ZWVuIGJyYWNlcyBhZnRlciB1c2luZyB0aGlzIG1hY3JvLiAgRXhhbXBsZToKLS8v
Ci0vLyAgIGNsYXNzIEZvb1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0vLyAgICBwcm90
ZWN0ZWQ6Ci0vLyAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyBiXy5BZGRFbGVtZW50KDMpOyB9
Ci0vLwotLy8gICAgIEZvbyBhXzsKLS8vICAgICBGb28gYl87Ci0vLyAgIH07Ci0vLwotLy8gICBU
RVNUX0YoRm9vVGVzdCwgSW5pdGlhbGl6ZXNDb3JyZWN0bHkpIHsKLS8vICAgICBFWFBFQ1RfVFJV
RShhXy5TdGF0dXNJc09LKCkpOwotLy8gICB9Ci0vLwotLy8gICBURVNUX0YoRm9vVGVzdCwgUmV0
dXJuc0VsZW1lbnRDb3VudENvcnJlY3RseSkgewotLy8gICAgIEVYUEVDVF9FUSgwLCBhXy5zaXpl
KCkpOwotLy8gICAgIEVYUEVDVF9FUSgxLCBiXy5zaXplKCkpOwotLy8gICB9Ci0KLSNkZWZpbmUg
VEVTVF9GKHRlc3RfZml4dHVyZSwgdGVzdF9uYW1lKVwKLSAgR1RFU1RfVEVTVF8odGVzdF9maXh0
dXJlLCB0ZXN0X25hbWUsIHRlc3RfZml4dHVyZSwgXAotICAgICAgICAgICAgICA6OnRlc3Rpbmc6
OmludGVybmFsOjpHZXRUeXBlSWQ8dGVzdF9maXh0dXJlPigpKQotCi0vLyBSZXR1cm5zIGEgcGF0
aCB0byB0ZW1wb3JhcnkgZGlyZWN0b3J5LgotLy8gVHJpZXMgdG8gZGV0ZXJtaW5lIGFuIGFwcHJv
cHJpYXRlIGRpcmVjdG9yeSBmb3IgdGhlIHBsYXRmb3JtLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmlu
ZyBUZW1wRGlyKCk7Ci0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLS8vIFVzZSB0aGlzIGZ1
bmN0aW9uIGluIG1haW4oKSB0byBydW4gYWxsIHRlc3RzLiAgSXQgcmV0dXJucyAwIGlmIGFsbAot
Ly8gdGVzdHMgYXJlIHN1Y2Nlc3NmdWwsIG9yIDEgb3RoZXJ3aXNlLgotLy8KLS8vIFJVTl9BTExf
VEVTVFMoKSBzaG91bGQgYmUgaW52b2tlZCBhZnRlciB0aGUgY29tbWFuZCBsaW5lIGhhcyBiZWVu
Ci0vLyBwYXJzZWQgYnkgSW5pdEdvb2dsZVRlc3QoKS4KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIHdh
cyBmb3JtZXJseSBhIG1hY3JvOyB0aHVzLCBpdCBpcyBpbiB0aGUgZ2xvYmFsCi0vLyBuYW1lc3Bh
Y2UgYW5kIGhhcyBhbiBhbGwtY2FwcyBuYW1lLgotaW50IFJVTl9BTExfVEVTVFMoKSBHVEVTVF9N
VVNUX1VTRV9SRVNVTFRfOwotCi1pbmxpbmUgaW50IFJVTl9BTExfVEVTVFMoKSB7Ci0gIHJldHVy
biA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SdW4oKTsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9n
dGVzdC9ndGVzdF9wcmVkX2ltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBh
ZTcxMmY1MGVkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9n
dGVzdF9wcmVkX2ltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIFRoaXMgZmlsZSBpcyBB
VVRPTUFUSUNBTExZIEdFTkVSQVRFRCBvbiAxMC8zMS8yMDExIGJ5IGNvbW1hbmQKLS8vICdnZW5f
Z3Rlc3RfcHJlZF9pbXBsLnB5IDUnLiAgRE8gTk9UIEVESVQgQlkgSEFORCEKLS8vCi0vLyBJbXBs
ZW1lbnRzIGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0K
LSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KLSNkZWZpbmUg
R1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KLQotLy8gTWFrZXMgc3VyZSB0
aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgYmVmb3JlIGd0ZXN0LmguCi0jaWZuZGVmIEdURVNU
X0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLSMgZXJyb3IgRG8gbm90IGluY2x1ZGUgZ3Rlc3RfcHJl
ZF9pbXBsLmggZGlyZWN0bHkuICBJbmNsdWRlIGd0ZXN0LmggaW5zdGVhZC4KLSNlbmRpZiAgLy8g
R1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9IXwotCi0vLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRz
IGEgZmFtaWx5IG9mIGdlbmVyaWMgcHJlZGljYXRlIGFzc2VydGlvbgotLy8gbWFjcm9zOgotLy8K
LS8vICAgQVNTRVJUX1BSRURfRk9STUFUMShwcmVkX2Zvcm1hdCwgdjEpCi0vLyAgIEFTU0VSVF9Q
UkVEX0ZPUk1BVDIocHJlZF9mb3JtYXQsIHYxLCB2MikKLS8vICAgLi4uCi0vLwotLy8gd2hlcmUg
cHJlZF9mb3JtYXQgaXMgYSBmdW5jdGlvbiBvciBmdW5jdG9yIHRoYXQgdGFrZXMgbiAoaW4gdGhl
Ci0vLyBjYXNlIG9mIEFTU0VSVF9QUkVEX0ZPUk1BVG4pIHZhbHVlcyBhbmQgdGhlaXIgc291cmNl
IGV4cHJlc3Npb24KLS8vIHRleHQsIGFuZCByZXR1cm5zIGEgdGVzdGluZzo6QXNzZXJ0aW9uUmVz
dWx0LiAgU2VlIHRoZSBkZWZpbml0aW9uCi0vLyBvZiBBU1NFUlRfRVEgaW4gZ3Rlc3QuaCBmb3Ig
YW4gZXhhbXBsZS4KLS8vCi0vLyBJZiB5b3UgZG9uJ3QgY2FyZSBhYm91dCBmb3JtYXR0aW5nLCB5
b3UgY2FuIHVzZSB0aGUgbW9yZQotLy8gcmVzdHJpY3RpdmUgdmVyc2lvbjoKLS8vCi0vLyAgIEFT
U0VSVF9QUkVEMShwcmVkLCB2MSkKLS8vICAgQVNTRVJUX1BSRUQyKHByZWQsIHYxLCB2MikKLS8v
ICAgLi4uCi0vLwotLy8gd2hlcmUgcHJlZCBpcyBhbiBuLWFyeSBmdW5jdGlvbiBvciBmdW5jdG9y
IHRoYXQgcmV0dXJucyBib29sLAotLy8gYW5kIHRoZSB2YWx1ZXMgdjEsIHYyLCAuLi4sIG11c3Qg
c3VwcG9ydCB0aGUgPDwgb3BlcmF0b3IgZm9yCi0vLyBzdHJlYW1pbmcgdG8gc3RkOjpvc3RyZWFt
LgotLy8KLS8vIFdlIGFsc28gZGVmaW5lIHRoZSBFWFBFQ1RfKiB2YXJpYXRpb25zLgotLy8KLS8v
IEZvciBub3cgd2Ugb25seSBzdXBwb3J0IHByZWRpY2F0ZXMgd2hvc2UgYXJpdHkgaXMgYXQgbW9z
dCA1LgotLy8gUGxlYXNlIGVtYWlsIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29vZ2xlZ3JvdXBzLmNv
bSBpZiB5b3UgbmVlZAotLy8gc3VwcG9ydCBmb3IgaGlnaGVyIGFyaXRpZXMuCi0KLS8vIEdURVNU
X0FTU0VSVF8gaXMgdGhlIGJhc2ljIHN0YXRlbWVudCB0byB3aGljaCBhbGwgb2YgdGhlIGFzc2Vy
dGlvbnMKLS8vIGluIHRoaXMgZmlsZSByZWR1Y2UuICBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNv
ZGUuCi0KLSNkZWZpbmUgR1RFU1RfQVNTRVJUXyhleHByZXNzaW9uLCBvbl9mYWlsdXJlKSBcCi0g
IEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgaWYgKGNvbnN0IDo6dGVzdGluZzo6
QXNzZXJ0aW9uUmVzdWx0IGd0ZXN0X2FyID0gKGV4cHJlc3Npb24pKSBcCi0gICAgOyBcCi0gIGVs
c2UgXAotICAgIG9uX2ZhaWx1cmUoZ3Rlc3RfYXIuZmFpbHVyZV9tZXNzYWdlKCkpCi0KLQotLy8g
SGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQxLiAg
RG9uJ3QgdXNlCi0vLyB0aGlzIGluIHlvdXIgY29kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQcmVk
LAotICAgICAgICAgIHR5cGVuYW1lIFQxPgotQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQxSGVs
cGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cmVkIHByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYx
KSB7Ci0gIGlmIChwcmVkKHYxKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1
cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCBlMSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2MTsKLX0KLQotLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNU
fEFTU0VSVH1fUFJFRF9GT1JNQVQxLgotLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgot
I2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgb25fZmFpbHVyZSlc
Ci0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoI3YxLCB2MSksIFwKLSAgICAgICAgICAgICAg
ICBvbl9mYWlsdXJlKQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBF
Q1R8QVNTRVJUfV9QUkVEMS4gIERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3VyIGNvZGUuCi0jZGVm
aW5lIEdURVNUX1BSRUQxXyhwcmVkLCB2MSwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8o
Ojp0ZXN0aW5nOjpBc3NlcnRQcmVkMUhlbHBlcigjcHJlZCwgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgI3YxLCBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVkLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2MSksIG9uX2ZhaWx1cmUpCi0KLS8vIFVuYXJ5IHByZWRpY2F0
ZSBhc3NlcnRpb24gbWFjcm9zLgotI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQxKHByZWRfZm9y
bWF0LCB2MSkgXAotICBHVEVTVF9QUkVEX0ZPUk1BVDFfKHByZWRfZm9ybWF0LCB2MSwgR1RFU1Rf
Tk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEVYUEVDVF9QUkVEMShwcmVkLCB2MSkgXAotICBH
VEVTVF9QUkVEMV8ocHJlZCwgdjEsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBB
U1NFUlRfUFJFRF9GT1JNQVQxKHByZWRfZm9ybWF0LCB2MSkgXAotICBHVEVTVF9QUkVEX0ZPUk1B
VDFfKHByZWRfZm9ybWF0LCB2MSwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEFTU0VS
VF9QUkVEMShwcmVkLCB2MSkgXAotICBHVEVTVF9QUkVEMV8ocHJlZCwgdjEsIEdURVNUX0ZBVEFM
X0ZBSUxVUkVfKQotCi0KLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VY
UEVDVHxBU1NFUlR9X1BSRUQyLiAgRG9uJ3QgdXNlCi0vLyB0aGlzIGluIHlvdXIgY29kZS4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBQcmVkLAotICAgICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICAg
IHR5cGVuYW1lIFQyPgotQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQySGVscGVyKGNvbnN0IGNo
YXIqIHByZWRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkIHByZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MikgewotICBpZiAocHJlZCh2MSwgdjIpKSBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkg
PDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUxIDw8
ICIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMiA8PCAiKSBldmFsdWF0ZXMg
dG8gZmFsc2UsIHdoZXJlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwg
ZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MjsKLX0KLQotLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQyLgot
Ly8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1B
VDJfKHByZWRfZm9ybWF0LCB2MSwgdjIsIG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHBy
ZWRfZm9ybWF0KCN2MSwgI3YyLCB2MSwgdjIpLCBcCi0gICAgICAgICAgICAgICAgb25fZmFpbHVy
ZSkKLQotLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRDIuICBEb24ndCB1c2UKLS8vIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9Q
UkVEMl8ocHJlZCwgdjEsIHYyLCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJUXyg6OnRlc3Rp
bmc6OkFzc2VydFByZWQySGVscGVyKCNwcmVkLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICN2MiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHYyKSwgb25fZmFpbHVyZSkKLQotLy8gQmluYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb24gbWFj
cm9zLgotI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQyKHByZWRfZm9ybWF0LCB2MSwgdjIpIFwK
LSAgR1RFU1RfUFJFRF9GT1JNQVQyXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCBHVEVTVF9OT05GQVRB
TF9GQUlMVVJFXykKLSNkZWZpbmUgRVhQRUNUX1BSRUQyKHByZWQsIHYxLCB2MikgXAotICBHVEVT
VF9QUkVEMl8ocHJlZCwgdjEsIHYyLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUg
QVNTRVJUX1BSRURfRk9STUFUMihwcmVkX2Zvcm1hdCwgdjEsIHYyKSBcCi0gIEdURVNUX1BSRURf
Rk9STUFUMl8ocHJlZF9mb3JtYXQsIHYxLCB2MiwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0jZGVm
aW5lIEFTU0VSVF9QUkVEMihwcmVkLCB2MSwgdjIpIFwKLSAgR1RFU1RfUFJFRDJfKHByZWQsIHYx
LCB2MiwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0KLQotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9y
IGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDMuICBEb24ndCB1c2UKLS8vIHRoaXMg
aW4geW91ciBjb2RlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFByZWQsCi0gICAgICAgICAgdHlwZW5h
bWUgVDEsCi0gICAgICAgICAgdHlwZW5hbWUgVDIsCi0gICAgICAgICAgdHlwZW5hbWUgVDM+Ci1B
c3NlcnRpb25SZXN1bHQgQXNzZXJ0UHJlZDNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByZWQgcHJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVDImIHYyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2
MykgewotICBpZiAocHJlZCh2MSwgdjIsIHYzKSkgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
LQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8PCAiLCAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGUz
IDw8ICIpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmUiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxuIiA8PCBlMSA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYxCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMiA8PCAiIGV2YWx1YXRlcyB0byAiIDw8IHYy
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIiA8PCBlMyA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IHYzOwotfQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtF
WFBFQ1R8QVNTRVJUfV9QUkVEX0ZPUk1BVDMuCi0vLyBEb24ndCB1c2UgdGhpcyBpbiB5b3VyIGNv
ZGUuCi0jZGVmaW5lIEdURVNUX1BSRURfRk9STUFUM18ocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMs
IG9uX2ZhaWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMs
IHYxLCB2MiwgdjMpLCBcCi0gICAgICAgICAgICAgICAgb25fZmFpbHVyZSkKLQotLy8gSW50ZXJu
YWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRDMuICBEb24ndCB1
c2UKLS8vIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVEM18ocHJlZCwgdjEs
IHYyLCB2Mywgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3NlcnRQ
cmVkM0hlbHBlcigjcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgI3YxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjdjIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICN2MywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
ZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEsIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYyLCBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MyksIG9uX2ZhaWx1cmUp
Ci0KLS8vIFRlcm5hcnkgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jZGVmaW5lIEVYUEVD
VF9QUkVEX0ZPUk1BVDMocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMpIFwKLSAgR1RFU1RfUFJFRF9G
T1JNQVQzXyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MywgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8p
Ci0jZGVmaW5lIEVYUEVDVF9QUkVEMyhwcmVkLCB2MSwgdjIsIHYzKSBcCi0gIEdURVNUX1BSRUQz
XyhwcmVkLCB2MSwgdjIsIHYzLCBHVEVTVF9OT05GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNT
RVJUX1BSRURfRk9STUFUMyhwcmVkX2Zvcm1hdCwgdjEsIHYyLCB2MykgXAotICBHVEVTVF9QUkVE
X0ZPUk1BVDNfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCBHVEVTVF9GQVRBTF9GQUlMVVJFXykK
LSNkZWZpbmUgQVNTRVJUX1BSRUQzKHByZWQsIHYxLCB2MiwgdjMpIFwKLSAgR1RFU1RfUFJFRDNf
KHByZWQsIHYxLCB2MiwgdjMsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotCi0KLQotLy8gSGVscGVy
IGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ0LiAgRG9uJ3Qg
dXNlCi0vLyB0aGlzIGluIHlvdXIgY29kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQcmVkLAotICAg
ICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICAgIHR5cGVuYW1lIFQyLAotICAgICAgICAgIHR5
cGVuYW1lIFQzLAotICAgICAgICAgIHR5cGVuYW1lIFQ0PgotQXNzZXJ0aW9uUmVzdWx0IEFzc2Vy
dFByZWQ0SGVscGVyKGNvbnN0IGNoYXIqIHByZWRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBlNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkIHByZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDQmIHY0KSB7Ci0gIGlmIChwcmVkKHYxLCB2MiwgdjMsIHY0KSkg
cmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgp
IDw8IHByZWRfdGV4dCA8PCAiKCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlMSA8
PCAiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTIgPDwgIiwgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGUzIDw8ICIsICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8PCBlNCA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2
MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBldmFsdWF0
ZXMgdG8gIiA8PCB2MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTMg
PDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NDsKLX0KLQotLy8gSW50ZXJuYWwg
bWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgotLy8g
RG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVDRf
KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgb25fZmFpbHVyZSlcCi0gIEdURVNUX0FTU0VS
VF8ocHJlZF9mb3JtYXQoI3YxLCAjdjIsICN2MywgI3Y0LCB2MSwgdjIsIHYzLCB2NCksIFwKLSAg
ICAgICAgICAgICAgICBvbl9mYWlsdXJlKQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVt
ZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVENC4gIERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3Vy
IGNvZGUuCi0jZGVmaW5lIEdURVNUX1BSRUQ0XyhwcmVkLCB2MSwgdjIsIHYzLCB2NCwgb25fZmFp
bHVyZSlcCi0gIEdURVNUX0FTU0VSVF8oOjp0ZXN0aW5nOjpBc3NlcnRQcmVkNEhlbHBlcigjcHJl
ZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3YxLCBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjIsIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2MywgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3Y0LCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkLCBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MSwgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdjIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHYzLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2NCksIG9uX2ZhaWx1cmUpCi0KLS8vIDQtYXJ5IHByZWRpY2F0ZSBh
c3NlcnRpb24gbWFjcm9zLgotI2RlZmluZSBFWFBFQ1RfUFJFRF9GT1JNQVQ0KHByZWRfZm9ybWF0
LCB2MSwgdjIsIHYzLCB2NCkgXAotICBHVEVTVF9QUkVEX0ZPUk1BVDRfKHByZWRfZm9ybWF0LCB2
MSwgdjIsIHYzLCB2NCwgR1RFU1RfTk9ORkFUQUxfRkFJTFVSRV8pCi0jZGVmaW5lIEVYUEVDVF9Q
UkVENChwcmVkLCB2MSwgdjIsIHYzLCB2NCkgXAotICBHVEVTVF9QUkVENF8ocHJlZCwgdjEsIHYy
LCB2MywgdjQsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfUFJFRF9G
T1JNQVQ0KHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCkgXAotICBHVEVTVF9QUkVEX0ZPUk1B
VDRfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgR1RFU1RfRkFUQUxfRkFJTFVSRV8pCi0j
ZGVmaW5lIEFTU0VSVF9QUkVENChwcmVkLCB2MSwgdjIsIHYzLCB2NCkgXAotICBHVEVTVF9QUkVE
NF8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIEdURVNUX0ZBVEFMX0ZBSUxVUkVfKQotCi0KLQotLy8g
SGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcge0VYUEVDVHxBU1NFUlR9X1BSRUQ1LiAg
RG9uJ3QgdXNlCi0vLyB0aGlzIGluIHlvdXIgY29kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQcmVk
LAotICAgICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICAgIHR5cGVuYW1lIFQyLAotICAgICAg
ICAgIHR5cGVuYW1lIFQzLAotICAgICAgICAgIHR5cGVuYW1lIFQ0LAotICAgICAgICAgIHR5cGVu
YW1lIFQ1PgotQXNzZXJ0aW9uUmVzdWx0IEFzc2VydFByZWQ1SGVscGVyKGNvbnN0IGNoYXIqIHBy
ZWRfdGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcmVkIHByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHY0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2NSkgewotICBpZiAocHJlZCh2
MSwgdjIsIHYzLCB2NCwgdjUpKSByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKCkgPDwgcHJlZF90ZXh0IDw8ICIoIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8IGUxIDw8ICIsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBlMiA8PCAiLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZTMgPDwgIiwgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGU0IDw8ICIsICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCBlNSA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTEgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2MQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTIgPDwgIiBl
dmFsdWF0ZXMgdG8gIiA8PCB2MgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIg
PDwgZTMgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2MwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcbiIgPDwgZTQgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJcbiIgPDwgZTUgPDwgIiBldmFsdWF0ZXMgdG8gIiA8PCB2NTsK
LX0KLQotLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1f
UFJFRF9GT1JNQVQ1LgotLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBH
VEVTVF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUsIG9uX2Zh
aWx1cmUpXAotICBHVEVTVF9BU1NFUlRfKHByZWRfZm9ybWF0KCN2MSwgI3YyLCAjdjMsICN2NCwg
I3Y1LCB2MSwgdjIsIHYzLCB2NCwgdjUpLCBcCi0gICAgICAgICAgICAgICAgb25fZmFpbHVyZSkK
LQotLy8gSW50ZXJuYWwgbWFjcm8gZm9yIGltcGxlbWVudGluZyB7RVhQRUNUfEFTU0VSVH1fUFJF
RDUuICBEb24ndCB1c2UKLS8vIHRoaXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVE
NV8ocHJlZCwgdjEsIHYyLCB2MywgdjQsIHY1LCBvbl9mYWlsdXJlKVwKLSAgR1RFU1RfQVNTRVJU
Xyg6OnRlc3Rpbmc6OkFzc2VydFByZWQ1SGVscGVyKCNwcmVkLCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdjEsIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICN2MiwgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgI3YzLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjdjQsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICN2NSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJlZCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHYyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Mywg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjQsIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY1KSwgb25fZmFpbHVy
ZSkKLQotLy8gNS1hcnkgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0jZGVmaW5lIEVYUEVD
VF9QUkVEX0ZPUk1BVDUocHJlZF9mb3JtYXQsIHYxLCB2MiwgdjMsIHY0LCB2NSkgXAotICBHVEVT
VF9QUkVEX0ZPUk1BVDVfKHByZWRfZm9ybWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUsIEdURVNUX05P
TkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBFWFBFQ1RfUFJFRDUocHJlZCwgdjEsIHYyLCB2Mywg
djQsIHY1KSBcCi0gIEdURVNUX1BSRUQ1XyhwcmVkLCB2MSwgdjIsIHYzLCB2NCwgdjUsIEdURVNU
X05PTkZBVEFMX0ZBSUxVUkVfKQotI2RlZmluZSBBU1NFUlRfUFJFRF9GT1JNQVQ1KHByZWRfZm9y
bWF0LCB2MSwgdjIsIHYzLCB2NCwgdjUpIFwKLSAgR1RFU1RfUFJFRF9GT1JNQVQ1XyhwcmVkX2Zv
cm1hdCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLSNkZWZpbmUg
QVNTRVJUX1BSRUQ1KHByZWQsIHYxLCB2MiwgdjMsIHY0LCB2NSkgXAotICBHVEVTVF9QUkVENV8o
cHJlZCwgdjEsIHYyLCB2MywgdjQsIHY1LCBHVEVTVF9GQVRBTF9GQUlMVVJFXykKLQotCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVEX0lNUExfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3RfcHJvZC5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9ndGVzdF9wcm9kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRhODBkZGM2YzcwZS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rl
c3QvZ3Rlc3RfcHJvZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8vCi0vLyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3
b3JrIGRlZmluaXRpb25zIHVzZWZ1bCBpbiBwcm9kdWN0aW9uIGNvZGUuCi0KLSNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUk9EX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfR1RFU1RfUFJPRF9IXwotCi0vLyBXaGVuIHlvdSBuZWVkIHRvIHRlc3QgdGhlIHByaXZhdGUg
b3IgcHJvdGVjdGVkIG1lbWJlcnMgb2YgYSBjbGFzcywKLS8vIHVzZSB0aGUgRlJJRU5EX1RFU1Qg
bWFjcm8gdG8gZGVjbGFyZSB5b3VyIHRlc3RzIGFzIGZyaWVuZHMgb2YgdGhlCi0vLyBjbGFzcy4g
IEZvciBleGFtcGxlOgotLy8KLS8vIGNsYXNzIE15Q2xhc3MgewotLy8gIHByaXZhdGU6Ci0vLyAg
IHZvaWQgTXlNZXRob2QoKTsKLS8vICAgRlJJRU5EX1RFU1QoTXlDbGFzc1Rlc3QsIE15TWV0aG9k
KTsKLS8vIH07Ci0vLwotLy8gY2xhc3MgTXlDbGFzc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0vLyAgIC8vIC4uLgotLy8gfTsKLS8vCi0vLyBURVNUX0YoTXlDbGFzc1Rlc3QsIE15TWV0
aG9kKSB7Ci0vLyAgIC8vIENhbiBjYWxsIE15Q2xhc3M6Ok15TWV0aG9kKCkgaGVyZS4KLS8vIH0K
LQotI2RlZmluZSBGUklFTkRfVEVTVCh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKVwKLWZyaWVu
ZCBjbGFzcyB0ZXN0X2Nhc2VfbmFtZSMjXyMjdGVzdF9uYW1lIyNfVGVzdAotCi0jZW5kaWYgIC8v
IEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJPRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjODVmNWQ1ODQ3N2IuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gSW5qZWN0aW9uIHBvaW50IGZvciBjdXN0b20gdXNlciBjb25m
aWd1cmF0aW9ucy4KLS8vIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSBkZWZpbmVkOgotLy8K
LS8vICAgRmxhZyByZWxhdGVkIG1hY3JvczoKLS8vICAgICBHVEVTVF9GTEFHKGZsYWdfbmFtZSkK
LS8vICAgICBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfICAtIERlZmluZSB0byAwIHdoZW4g
dGhlIHN5c3RlbSBwcm92aWRlcyBpdHMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG93biBmbGFnZmlsZSBmbGFnIHBhcnNpbmcuCi0vLyAgICAgR1RFU1RfREVDTEFSRV9i
b29sXyhuYW1lKQotLy8gICAgIEdURVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpCi0vLyAgICAgR1RF
U1RfREVDTEFSRV9zdHJpbmdfKG5hbWUpCi0vLyAgICAgR1RFU1RfREVGSU5FX2Jvb2xfKG5hbWUs
IGRlZmF1bHRfdmFsLCBkb2MpCi0vLyAgICAgR1RFU1RfREVGSU5FX2ludDMyXyhuYW1lLCBkZWZh
dWx0X3ZhbCwgZG9jKQotLy8gICAgIEdURVNUX0RFRklORV9zdHJpbmdfKG5hbWUsIGRlZmF1bHRf
dmFsLCBkb2MpCi0vLwotLy8gICBUZXN0IGZpbHRlcmluZzoKLS8vICAgICBHVEVTVF9URVNUX0ZJ
TFRFUl9FTlZfVkFSXyAtIFRoZSBuYW1lIG9mIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdXNlZCBpZiAtLUdU
RVNUX0ZMQUcodGVzdF9maWx0ZXIpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcyBub3QgcHJvdmlkZWQuCi0vLwotLy8gICBMb2dnaW5nOgotLy8gICAgIEdURVNUX0xPR18o
c2V2ZXJpdHkpCi0vLyAgICAgR1RFU1RfQ0hFQ0tfKGNvbmRpdGlvbikKLS8vICAgICBGdW5jdGlv
bnMgTG9nVG9TdGRlcnIoKSBhbmQgRmx1c2hJbmZvTG9nKCkgaGF2ZSB0byBiZSBwcm92aWRlZCB0
b28uCi0vLwotLy8gICBUaHJlYWRpbmc6Ci0vLyAgICAgR1RFU1RfSEFTX05PVElGSUNBVElPTl8g
LSBFbmFibGVkIGlmIE5vdGlmaWNhdGlvbiBpcyBhbHJlYWR5IHByb3ZpZGVkLgotLy8gICAgIEdU
RVNUX0hBU19NVVRFWF9BTkRfVEhSRUFEX0xPQ0FMXyAtIEVuYWJsZWQgaWYgTXV0ZXggYW5kIFRo
cmVhZExvY2FsIGFyZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFscmVhZHkgcHJvdmlkZWQuCi0vLyAgICAgTXVzdCBhbHNvIHByb3ZpZGUgR1RFU1RfREVDTEFS
RV9TVEFUSUNfTVVURVhfKG11dGV4KSBhbmQKLS8vICAgICBHVEVTVF9ERUZJTkVfU1RBVElDX01V
VEVYXyhtdXRleCkKLS8vCi0vLyAgICAgR1RFU1RfRVhDTFVTSVZFX0xPQ0tfUkVRVUlSRURfKGxv
Y2tzKQotLy8gICAgIEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKQotLy8KLS8vICAgRXhwb3J0
aW5nIEFQSSBzeW1ib2xzOgotLy8gICAgIEdURVNUX0FQSV8gLSBTcGVjaWZpZXIgZm9yIGV4cG9y
dGVkIHN5bWJvbHMuCi0vLwotLy8gKiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJl
ICoqCi0KLSNpZm5kZWYgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1Rf
UE9SVF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVT
VF9QT1JUX0hfCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNU
T01fR1RFU1RfUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9jdXN0b20vZ3Rlc3QtcHJpbnRlcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rl
c3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYwYzFlYTA1MGI2MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LXByaW50ZXJzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNSwgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gVGhpcyBmaWxlIHByb3ZpZGVzIGFuIGluamVjdGlvbiBwb2ludCBmb3Ig
Y3VzdG9tIHByaW50ZXJzIGluIGEgbG9jYWwKLS8vIGluc3RhbGxhdGlvbiBvZiBnVGVzdC4KLS8v
IEl0IHdpbGwgYmUgaW5jbHVkZWQgZnJvbSBndGVzdC1wcmludGVycy5oIGFuZCB0aGUgb3ZlcnJp
ZGVzIGluIHRoaXMgZmlsZQotLy8gd2lsbCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lLgotLy8gU2Vl
IGRvY3VtZW50YXRpb24gYXQgZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCBmb3IgZGV0YWlscyBvbiBo
b3cgdG8gZGVmaW5lIGEKLS8vIGN1c3RvbSBwcmludGVyLgotLy8KLS8vICoqIEN1c3RvbSBpbXBs
ZW1lbnRhdGlvbiBzdGFydHMgaGVyZSAqKgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1Rf
SU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVf
R1RFU1RfSU5URVJOQUxfQ1VTVE9NX0dURVNUX1BSSU5URVJTX0hfCi0KLSNlbmRpZiAgLy8gR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfUFJJTlRFUlNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0Lmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ExYzBiN2Q5YTkuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTUsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEluamVjdGlvbiBwb2ludCBmb3IgY3VzdG9tIHVzZXIgY29u
ZmlndXJhdGlvbnMuCi0vLyBUaGUgZm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgZGVmaW5lZDoKLS8v
Ci0vLyBHVEVTVF9PU19TVEFDS19UUkFDRV9HRVRURVJfICAtIFRoZSBuYW1lIG9mIGFuIGltcGxl
bWVudGF0aW9uIG9mCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9zU3RhY2tU
cmFjZUdldHRlckludGVyZmFjZS4KLS8vCi0vLyBHVEVTVF9DVVNUT01fVEVNUERJUl9GVU5DVElP
Tl8gLSBBbiBvdmVycmlkZSBmb3IgdGVzdGluZzo6VGVtcERpcigpLgotLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VlIHRlc3Rpbmc6OlRlbXBEaXIgZm9yIHNlbWFudGljcyBh
bmQKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS4KLS8vIAot
Ly8gKiogQ3VzdG9tIGltcGxlbWVudGF0aW9uIHN0YXJ0cyBoZXJlICoqCi0KLSNpZm5kZWYgR1RF
U1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KLSNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9DVVNUT01fR1RFU1RfSF8KLQotI2VuZGlmICAvLyBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0NVU1RPTV9HVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1kZWF0aC10ZXN0LWludGVybmFs
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LWRlYXRoLXRlc3Qt
aW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIzYTc4ZjViZjg2Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVz
dC1kZWF0aC10ZXN0LWludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMTkgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cnM6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFu
IE1jYWZlZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIGludGVybmFsIHV0aWxpdGll
cyBuZWVkZWQgZm9yIGltcGxlbWVudGluZwotLy8gZGVhdGggdGVzdHMuICBUaGV5IGFyZSBzdWJq
ZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dU
RVNUX0lOVEVSTkFMX0dURVNUX0RFQVRIX1RFU1RfSU5URVJOQUxfSF8KLSNkZWZpbmUgR1RFU1Rf
SU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9ERUFUSF9URVNUX0lOVEVSTkFMX0hfCi0KLSNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5hbC5oIgotCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotR1RF
U1RfREVDTEFSRV9zdHJpbmdfKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KTsKLQotLy8gTmFtZXMg
b2YgdGhlIGZsYWdzIChuZWVkZWQgZm9yIHBhcnNpbmcgR29vZ2xlIFRlc3QgZmxhZ3MpLgotY29u
c3QgY2hhciBrRGVhdGhUZXN0U3R5bGVGbGFnW10gPSAiZGVhdGhfdGVzdF9zdHlsZSI7Ci1jb25z
dCBjaGFyIGtEZWF0aFRlc3RVc2VGb3JrW10gPSAiZGVhdGhfdGVzdF91c2VfZm9yayI7Ci1jb25z
dCBjaGFyIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWdbXSA9ICJpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCI7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBEZWF0aFRlc3QgaXMgYSBj
bGFzcyB0aGF0IGhpZGVzIG11Y2ggb2YgdGhlIGNvbXBsZXhpdHkgb2YgdGhlCi0vLyBHVEVTVF9E
RUFUSF9URVNUXyBtYWNyby4gIEl0IGlzIGFic3RyYWN0OyBpdHMgc3RhdGljIENyZWF0ZSBtZXRo
b2QKLS8vIHJldHVybnMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGRlcGVuZHMgb24gdGhlIHByZXZh
aWxpbmcgZGVhdGggdGVzdAotLy8gc3R5bGUsIGFzIGRlZmluZWQgYnkgdGhlIC0tZ3Rlc3RfZGVh
dGhfdGVzdF9zdHlsZSBhbmQvb3IKLS8vIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qg
ZmxhZ3MuCi0KLS8vIEluIGRlc2NyaWJpbmcgdGhlIHJlc3VsdHMgb2YgZGVhdGggdGVzdHMsIHRo
ZXNlIHRlcm1zIGFyZSB1c2VkIHdpdGgKLS8vIHRoZSBjb3JyZXNwb25kaW5nIGRlZmluaXRpb25z
OgotLy8KLS8vIGV4aXQgc3RhdHVzOiAgVGhlIGludGVnZXIgZXhpdCBpbmZvcm1hdGlvbiBpbiB0
aGUgZm9ybWF0IHNwZWNpZmllZAotLy8gICAgICAgICAgICAgICBieSB3YWl0KDIpCi0vLyBleGl0
IGNvZGU6ICAgIFRoZSBpbnRlZ2VyIGNvZGUgcGFzc2VkIHRvIGV4aXQoMyksIF9leGl0KDIpLCBv
cgotLy8gICAgICAgICAgICAgICByZXR1cm5lZCBmcm9tIG1haW4oKQotY2xhc3MgR1RFU1RfQVBJ
XyBEZWF0aFRlc3QgewotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlIHJldHVybnMgZmFsc2UgaWYgdGhl
cmUgd2FzIGFuIGVycm9yIGRldGVybWluaW5nIHRoZQotICAvLyBhcHByb3ByaWF0ZSBhY3Rpb24g
dG8gdGFrZSBmb3IgdGhlIGN1cnJlbnQgZGVhdGggdGVzdDsgZm9yIGV4YW1wbGUsCi0gIC8vIGlm
IHRoZSBndGVzdF9kZWF0aF90ZXN0X3N0eWxlIGZsYWcgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFs
dWUuCi0gIC8vIFRoZSBMYXN0TWVzc2FnZSBtZXRob2Qgd2lsbCByZXR1cm4gYSBtb3JlIGRldGFp
bGVkIG1lc3NhZ2UgaW4gdGhhdAotICAvLyBjYXNlLiAgT3RoZXJ3aXNlLCB0aGUgRGVhdGhUZXN0
IHBvaW50ZXIgcG9pbnRlZCB0byBieSB0aGUgInRlc3QiCi0gIC8vIGFyZ3VtZW50IGlzIHNldC4g
IElmIHRoZSBkZWF0aCB0ZXN0IHNob3VsZCBiZSBza2lwcGVkLCB0aGUgcG9pbnRlcgotICAvLyBp
cyBzZXQgdG8gTlVMTDsgb3RoZXJ3aXNlLCBpdCBpcyBzZXQgdG8gdGhlIGFkZHJlc3Mgb2YgYSBu
ZXcgY29uY3JldGUKLSAgLy8gRGVhdGhUZXN0IG9iamVjdCB0aGF0IGNvbnRyb2xzIHRoZSBleGVj
dXRpb24gb2YgdGhlIGN1cnJlbnQgdGVzdC4KLSAgc3RhdGljIGJvb2wgQ3JlYXRlKGNvbnN0IGNo
YXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOwotICBEZWF0aFRlc3Qo
KTsKLSAgdmlydHVhbCB+RGVhdGhUZXN0KCkgeyB9Ci0KLSAgLy8gQSBoZWxwZXIgY2xhc3MgdGhh
dCBhYm9ydHMgYSBkZWF0aCB0ZXN0IHdoZW4gaXQncyBkZWxldGVkLgotICBjbGFzcyBSZXR1cm5T
ZW50aW5lbCB7Ci0gICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmV0dXJuU2VudGluZWwoRGVhdGhU
ZXN0KiB0ZXN0KSA6IHRlc3RfKHRlc3QpIHsgfQotICAgIH5SZXR1cm5TZW50aW5lbCgpIHsgdGVz
dF8tPkFib3J0KFRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCk7IH0KLSAgIHByaXZh
dGU6Ci0gICAgRGVhdGhUZXN0KiBjb25zdCB0ZXN0XzsKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZ
X0FORF9BU1NJR05fKFJldHVyblNlbnRpbmVsKTsKLSAgfSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VE
XzsKLQotICAvLyBBbiBlbnVtZXJhdGlvbiBvZiBwb3NzaWJsZSByb2xlcyB0aGF0IG1heSBiZSB0
YWtlbiB3aGVuIGEgZGVhdGgKLSAgLy8gdGVzdCBpcyBlbmNvdW50ZXJlZC4gIEVYRUNVVEUgbWVh
bnMgdGhhdCB0aGUgZGVhdGggdGVzdCBsb2dpYyBzaG91bGQKLSAgLy8gYmUgZXhlY3V0ZWQgaW1t
ZWRpYXRlbHkuICBPVkVSU0VFIG1lYW5zIHRoYXQgdGhlIHByb2dyYW0gc2hvdWxkIHByZXBhcmUK
LSAgLy8gdGhlIGFwcHJvcHJpYXRlIGVudmlyb25tZW50IGZvciBhIGNoaWxkIHByb2Nlc3MgdG8g
ZXhlY3V0ZSB0aGUgZGVhdGgKLSAgLy8gdGVzdCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0
ZS4KLSAgZW51bSBUZXN0Um9sZSB7IE9WRVJTRUVfVEVTVCwgRVhFQ1VURV9URVNUIH07Ci0KLSAg
Ly8gQW4gZW51bWVyYXRpb24gb2YgdGhlIHRocmVlIHJlYXNvbnMgdGhhdCBhIHRlc3QgbWlnaHQg
YmUgYWJvcnRlZC4KLSAgZW51bSBBYm9ydFJlYXNvbiB7Ci0gICAgVEVTVF9FTkNPVU5URVJFRF9S
RVRVUk5fU1RBVEVNRU5ULAotICAgIFRFU1RfVEhSRVdfRVhDRVBUSU9OLAotICAgIFRFU1RfRElE
X05PVF9ESUUKLSAgfTsKLQotICAvLyBBc3N1bWVzIG9uZSBvZiB0aGUgYWJvdmUgcm9sZXMuCi0g
IHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpID0gMDsKLQotICAvLyBXYWl0cyBmb3IgdGhl
IGRlYXRoIHRlc3QgdG8gZmluaXNoIGFuZCByZXR1cm5zIGl0cyBzdGF0dXMuCi0gIHZpcnR1YWwg
aW50IFdhaXQoKSA9IDA7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBkZWF0aCB0ZXN0IHBh
c3NlZDsgdGhhdCBpcywgdGhlIHRlc3QgcHJvY2VzcwotICAvLyBleGl0ZWQgZHVyaW5nIHRoZSB0
ZXN0LCBpdHMgZXhpdCBzdGF0dXMgbWF0Y2hlcyBhIHVzZXItc3VwcGxpZWQKLSAgLy8gcHJlZGlj
YXRlLCBhbmQgaXRzIHN0ZGVyciBvdXRwdXQgbWF0Y2hlcyBhIHVzZXItc3VwcGxpZWQgcmVndWxh
cgotICAvLyBleHByZXNzaW9uLgotICAvLyBUaGUgdXNlci1zdXBwbGllZCBwcmVkaWNhdGUgbWF5
IGJlIGEgbWFjcm8gZXhwcmVzc2lvbiByYXRoZXIKLSAgLy8gdGhhbiBhIGZ1bmN0aW9uIHBvaW50
ZXIgb3IgZnVuY3Rvciwgb3IgZWxzZSBXYWl0IGFuZCBQYXNzZWQgY291bGQKLSAgLy8gYmUgY29t
YmluZWQuCi0gIHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1c19vaykgPSAwOwot
Ci0gIC8vIFNpZ25hbHMgdGhhdCB0aGUgZGVhdGggdGVzdCBkaWQgbm90IGRpZSBhcyBleHBlY3Rl
ZC4KLSAgdmlydHVhbCB2b2lkIEFib3J0KEFib3J0UmVhc29uIHJlYXNvbikgPSAwOwotCi0gIC8v
IFJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBvdXRjb21lIG1lc3NhZ2UgcmVnYXJkaW5nIHRoZSBv
dXRjb21lIG9mCi0gIC8vIHRoZSBsYXN0IGRlYXRoIHRlc3QuCi0gIHN0YXRpYyBjb25zdCBjaGFy
KiBMYXN0TWVzc2FnZSgpOwotCi0gIHN0YXRpYyB2b2lkIHNldF9sYXN0X2RlYXRoX3Rlc3RfbWVz
c2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSk7Ci0KLSBwcml2YXRlOgotICAvLyBBIHN0
cmluZyBjb250YWluaW5nIGEgZGVzY3JpcHRpb24gb2YgdGhlIG91dGNvbWUgb2YgdGhlIGxhc3Qg
ZGVhdGggdGVzdC4KLSAgc3RhdGljIHN0ZDo6c3RyaW5nIGxhc3RfZGVhdGhfdGVzdF9tZXNzYWdl
XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERlYXRoVGVzdCk7Ci19Owot
Ci0vLyBGYWN0b3J5IGludGVyZmFjZSBmb3IgZGVhdGggdGVzdHMuICBNYXkgYmUgbW9ja2VkIG91
dCBmb3IgdGVzdGluZy4KLWNsYXNzIERlYXRoVGVzdEZhY3RvcnkgewotIHB1YmxpYzoKLSAgdmly
dHVhbCB+RGVhdGhUZXN0RmFjdG9yeSgpIHsgfQotICB2aXJ0dWFsIGJvb2wgQ3JlYXRlKGNvbnN0
IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBEZWF0aFRlc3QqKiB0ZXN0KSA9IDA7Ci19Owot
Ci0vLyBBIGNvbmNyZXRlIERlYXRoVGVzdEZhY3RvcnkgaW1wbGVtZW50YXRpb24gZm9yIG5vcm1h
bCB1c2UuCi1jbGFzcyBEZWZhdWx0RGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RG
YWN0b3J5IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUoY29uc3QgY2hhciogc3Rh
dGVtZW50LCBjb25zdCBSRSogcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZmlsZSwgaW50IGxpbmUsIERlYXRoVGVzdCoqIHRlc3QpOwotfTsKLQotLy8gUmV0dXJucyB0
cnVlIGlmIGV4aXRfc3RhdHVzIGRlc2NyaWJlcyBhIHByb2Nlc3MgdGhhdCB3YXMgdGVybWluYXRl
ZAotLy8gYnkgYSBzaWduYWwsIG9yIGV4aXRlZCBub3JtYWxseSB3aXRoIGEgbm9uemVybyBleGl0
IGNvZGUuCi1HVEVTVF9BUElfIGJvb2wgRXhpdGVkVW5zdWNjZXNzZnVsbHkoaW50IGV4aXRfc3Rh
dHVzKTsKLQotLy8gVHJhcHMgQysrIGV4Y2VwdGlvbnMgZXNjYXBpbmcgc3RhdGVtZW50IGFuZCBy
ZXBvcnRzIHRoZW0gYXMgdGVzdAotLy8gZmFpbHVyZXMuIE5vdGUgdGhhdCB0cmFwcGluZyBTRUgg
ZXhjZXB0aW9ucyBpcyBub3QgaW1wbGVtZW50ZWQgaGVyZS4KLSMgaWYgR1RFU1RfSEFTX0VYQ0VQ
VElPTlMKLSMgIGRlZmluZSBHVEVTVF9FWEVDVVRFX0RFQVRIX1RFU1RfU1RBVEVNRU5UXyhzdGF0
ZW1lbnQsIGRlYXRoX3Rlc3QpIFwKLSAgdHJ5IHsgXAotICAgIEdURVNUX1NVUFBSRVNTX1VOUkVB
Q0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oc3RhdGVtZW50KTsgXAotICB9IGNhdGNoIChjb25z
dCA6OnN0ZDo6ZXhjZXB0aW9uJiBndGVzdF9leGNlcHRpb24pIHsgXAotICAgIGZwcmludGYoXAot
ICAgICAgICBzdGRlcnIsIFwKLSAgICAgICAgIlxuJXM6IENhdWdodCBzdGQ6OmV4Y2VwdGlvbi1k
ZXJpdmVkIGV4Y2VwdGlvbiBlc2NhcGluZyB0aGUgIiBcCi0gICAgICAgICJkZWF0aCB0ZXN0IHN0
YXRlbWVudC4gRXhjZXB0aW9uIG1lc3NhZ2U6ICVzXG4iLCBcCi0gICAgICAgIDo6dGVzdGluZzo6
aW50ZXJuYWw6OkZvcm1hdEZpbGVMb2NhdGlvbihfX0ZJTEVfXywgX19MSU5FX18pLmNfc3RyKCks
IFwKLSAgICAgICAgZ3Rlc3RfZXhjZXB0aW9uLndoYXQoKSk7IFwKLSAgICBmZmx1c2goc3RkZXJy
KTsgXAotICAgIGRlYXRoX3Rlc3QtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dDo6VEVTVF9USFJFV19FWENFUFRJT04pOyBcCi0gIH0gY2F0Y2ggKC4uLikgeyBcCi0gICAgZGVh
dGhfdGVzdC0+QWJvcnQoOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpURVNUX1RIUkVX
X0VYQ0VQVElPTik7IFwKLSAgfQotCi0jIGVsc2UKLSMgIGRlZmluZSBHVEVTVF9FWEVDVVRFX0RF
QVRIX1RFU1RfU1RBVEVNRU5UXyhzdGF0ZW1lbnQsIGRlYXRoX3Rlc3QpIFwKLSAgR1RFU1RfU1VQ
UFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQpCi0KLSMgZW5k
aWYKLQotLy8gVGhpcyBtYWNybyBpcyBmb3IgaW1wbGVtZW50aW5nIEFTU0VSVF9ERUFUSCosIEVY
UEVDVF9ERUFUSCosCi0vLyBBU1NFUlRfRVhJVCosIGFuZCBFWFBFQ1RfRVhJVCouCi0jIGRlZmlu
ZSBHVEVTVF9ERUFUSF9URVNUXyhzdGF0ZW1lbnQsIHByZWRpY2F0ZSwgcmVnZXgsIGZhaWwpIFwK
LSAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAoOjp0ZXN0aW5nOjppbnRl
cm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKLSAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpS
RSYgZ3Rlc3RfcmVnZXggPSAocmVnZXgpOyBcCi0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVh
dGhUZXN0KiBndGVzdF9kdDsgXAotICAgIGlmICghOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhU
ZXN0OjpDcmVhdGUoI3N0YXRlbWVudCwgJmd0ZXN0X3JlZ2V4LCBcCi0gICAgICAgIF9fRklMRV9f
LCBfX0xJTkVfXywgJmd0ZXN0X2R0KSkgeyBcCi0gICAgICBnb3RvIEdURVNUX0NPTkNBVF9UT0tF
Tl8oZ3Rlc3RfbGFiZWxfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgICBpZiAoZ3Rlc3RfZHQg
IT0gTlVMTCkgeyBcCi0gICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpzY29wZWRfcHRyPCA6OnRl
c3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q+IFwKLSAgICAgICAgICBndGVzdF9kdF9wdHIoZ3Rl
c3RfZHQpOyBcCi0gICAgICBzd2l0Y2ggKGd0ZXN0X2R0LT5Bc3N1bWVSb2xlKCkpIHsgXAotICAg
ICAgICBjYXNlIDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVzdDo6T1ZFUlNFRV9URVNUOiBc
Ci0gICAgICAgICAgaWYgKCFndGVzdF9kdC0+UGFzc2VkKHByZWRpY2F0ZShndGVzdF9kdC0+V2Fp
dCgpKSkpIHsgXAotICAgICAgICAgICAgZ290byBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xh
YmVsXywgX19MSU5FX18pOyBcCi0gICAgICAgICAgfSBcCi0gICAgICAgICAgYnJlYWs7IFwKLSAg
ICAgICAgY2FzZSA6OnRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3Q6OkVYRUNVVEVfVEVTVDog
eyBcCi0gICAgICAgICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6RGVhdGhUZXN0OjpSZXR1cm5TZW50
aW5lbCBcCi0gICAgICAgICAgICAgIGd0ZXN0X3NlbnRpbmVsKGd0ZXN0X2R0KTsgXAotICAgICAg
ICAgIEdURVNUX0VYRUNVVEVfREVBVEhfVEVTVF9TVEFURU1FTlRfKHN0YXRlbWVudCwgZ3Rlc3Rf
ZHQpOyBcCi0gICAgICAgICAgZ3Rlc3RfZHQtPkFib3J0KDo6dGVzdGluZzo6aW50ZXJuYWw6OkRl
YXRoVGVzdDo6VEVTVF9ESURfTk9UX0RJRSk7IFwKLSAgICAgICAgICBicmVhazsgXAotICAgICAg
ICB9IFwKLSAgICAgICAgZGVmYXVsdDogXAotICAgICAgICAgIGJyZWFrOyBcCi0gICAgICB9IFwK
LSAgICB9IFwKLSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVs
XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKDo6dGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dDo6TGFzdE1lc3NhZ2UoKSkKLS8vIFRoZSBzeW1ib2wgImZhaWwiIGhlcmUgZXhwYW5kcyB0byBz
b21ldGhpbmcgaW50byB3aGljaCBhIG1lc3NhZ2UKLS8vIGNhbiBiZSBzdHJlYW1lZC4KLQotLy8g
VGhpcyBtYWNybyBpcyBmb3IgaW1wbGVtZW50aW5nIEFTU0VSVC9FWFBFQ1RfREVCVUdfREVBVEgg
d2hlbiBjb21waWxlZCBpbgotLy8gTkRFQlVHIG1vZGUuIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRo
ZSBzdGF0ZW1lbnRzIHRvIGJlIGV4ZWN1dGVkLCB0aGUgcmVnZXggaXMKLS8vIGlnbm9yZWQsIGFu
ZCB0aGUgbWFjcm8gbXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIGV2ZW4gdGhvdWdoIHRo
ZSBtZXNzYWdlCi0vLyBpcyBuZXZlciBwcmludGVkLgotIyBkZWZpbmUgR1RFU1RfRVhFQ1VURV9T
VEFURU1FTlRfKHN0YXRlbWVudCwgcmVnZXgpIFwKLSAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxP
Q0tFUl8gXAotICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzVHJ1ZSgpKSB7IFwKLSAg
ICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1l
bnQpOyBcCi0gIH0gZWxzZSBcCi0gICAgOjp0ZXN0aW5nOjpNZXNzYWdlKCkKLQotLy8gQSBjbGFz
cyByZXByZXNlbnRpbmcgdGhlIHBhcnNlZCBjb250ZW50cyBvZiB0aGUKLS8vIC0tZ3Rlc3RfaW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZywgYXMgaXQgZXhpc3RlZCB3aGVuCi0vLyBSVU5fQUxM
X1RFU1RTIHdhcyBjYWxsZWQuCi1jbGFzcyBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcgewotIHB1
YmxpYzoKLSAgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2Zp
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYV9saW5lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGFuX2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGFfd3JpdGVfZmQpCi0gICAgICA6IGZpbGVfKGFfZmlsZSksIGxpbmVfKGFfbGluZSksIGlu
ZGV4Xyhhbl9pbmRleCksCi0gICAgICAgIHdyaXRlX2ZkXyhhX3dyaXRlX2ZkKSB7fQotCi0gIH5J
bnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSB7Ci0gICAgaWYgKHdyaXRlX2ZkXyA+PSAwKQotICAg
ICAgcG9zaXg6OkNsb3NlKHdyaXRlX2ZkXyk7Ci0gIH0KLQotICBjb25zdCBzdGQ6OnN0cmluZyYg
ZmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGVfOyB9Ci0gIGludCBsaW5lKCkgY29uc3QgeyByZXR1
cm4gbGluZV87IH0KLSAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gaW5kZXhfOyB9Ci0gIGlu
dCB3cml0ZV9mZCgpIGNvbnN0IHsgcmV0dXJuIHdyaXRlX2ZkXzsgfQotCi0gcHJpdmF0ZToKLSAg
c3RkOjpzdHJpbmcgZmlsZV87Ci0gIGludCBsaW5lXzsKLSAgaW50IGluZGV4XzsKLSAgaW50IHdy
aXRlX2ZkXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKEludGVybmFsUnVu
RGVhdGhUZXN0RmxhZyk7Ci19OwotCi0vLyBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBJbnRlcm5h
bFJ1bkRlYXRoVGVzdEZsYWcgb2JqZWN0IHdpdGggZmllbGRzCi0vLyBpbml0aWFsaXplZCBmcm9t
IHRoZSBHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSBmbGFnIGlmCi0vLyB0aGUg
ZmxhZyBpcyBzcGVjaWZpZWQ7IG90aGVyd2lzZSByZXR1cm5zIE5VTEwuCi1JbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcqIFBhcnNlSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKCk7Ci0KLSNlbHNlICAv
LyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUaGlzIG1hY3JvIGlzIHVzZWQgZm9yIGltcGxl
bWVudGluZyBtYWNyb3Mgc3VjaCBhcwotLy8gRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCBhbmQg
QVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCBvbiBzeXN0ZW1zIHdoZXJlCi0vLyBkZWF0aCB0ZXN0
cyBhcmUgbm90IHN1cHBvcnRlZC4gVGhvc2UgbWFjcm9zIG11c3QgY29tcGlsZSBvbiBzdWNoIHN5
c3RlbXMKLS8vIGlmZiBFWFBFQ1RfREVBVEggYW5kIEFTU0VSVF9ERUFUSCBjb21waWxlIHdpdGgg
dGhlIHNhbWUgcGFyYW1ldGVycyBvbgotLy8gc3lzdGVtcyB0aGF0IHN1cHBvcnQgZGVhdGggdGVz
dHMuIFRoaXMgYWxsb3dzIG9uZSB0byB3cml0ZSBzdWNoIGEgbWFjcm8KLS8vIG9uIGEgc3lzdGVt
IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBkZWF0aCB0ZXN0cyBhbmQgYmUgc3VyZSB0aGF0IGl0IHdp
bGwKLS8vIGNvbXBpbGUgb24gYSBkZWF0aC10ZXN0IHN1cHBvcnRpbmcgc3lzdGVtLgotLy8KLS8v
IFBhcmFtZXRlcnM6Ci0vLyAgIHN0YXRlbWVudCAtICBBIHN0YXRlbWVudCB0aGF0IGEgbWFjcm8g
c3VjaCBhcyBFWFBFQ1RfREVBVEggd291bGQgdGVzdAotLy8gICAgICAgICAgICAgICAgZm9yIHBy
b2dyYW0gdGVybWluYXRpb24uIFRoaXMgbWFjcm8gaGFzIHRvIG1ha2Ugc3VyZSB0aGlzCi0vLyAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnQgaXMgY29tcGlsZWQgYnV0IG5vdCBleGVjdXRlZCwgdG8g
ZW5zdXJlIHRoYXQKLS8vICAgICAgICAgICAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQg
Y29tcGlsZXMgd2l0aCBhIGNlcnRhaW4KLS8vICAgICAgICAgICAgICAgIHBhcmFtZXRlciBpZmYg
RVhQRUNUX0RFQVRIIGNvbXBpbGVzIHdpdGggaXQuCi0vLyAgIHJlZ2V4ICAgICAtICBBIHJlZ2V4
IHRoYXQgYSBtYWNybyBzdWNoIGFzIEVYUEVDVF9ERUFUSCB3b3VsZCB1c2UgdG8gdGVzdAotLy8g
ICAgICAgICAgICAgICAgdGhlIG91dHB1dCBvZiBzdGF0ZW1lbnQuICBUaGlzIHBhcmFtZXRlciBo
YXMgdG8gYmUKLS8vICAgICAgICAgICAgICAgIGNvbXBpbGVkIGJ1dCBub3QgZXZhbHVhdGVkIGJ5
IHRoaXMgbWFjcm8sIHRvIGVuc3VyZSB0aGF0Ci0vLyAgICAgICAgICAgICAgICB0aGlzIG1hY3Jv
IG9ubHkgYWNjZXB0cyBleHByZXNzaW9ucyB0aGF0IGEgbWFjcm8gc3VjaCBhcwotLy8gICAgICAg
ICAgICAgICAgRVhQRUNUX0RFQVRIIHdvdWxkIGFjY2VwdC4KLS8vICAgdGVybWluYXRvciAtIE11
c3QgYmUgYW4gZW1wdHkgc3RhdGVtZW50IGZvciBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVECi0v
LyAgICAgICAgICAgICAgICBhbmQgYSByZXR1cm4gc3RhdGVtZW50IGZvciBBU1NFUlRfREVBVEhf
SUZfU1VQUE9SVEVELgotLy8gICAgICAgICAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgQVNTRVJU
X0RFQVRIX0lGX1NVUFBPUlRFRCB3aWxsIG5vdAotLy8gICAgICAgICAgICAgICAgY29tcGlsZSBp
bnNpZGUgZnVuY3Rpb25zIHdoZXJlIEFTU0VSVF9ERUFUSCBkb2Vzbid0Ci0vLyAgICAgICAgICAg
ICAgICBjb21waWxlLgotLy8KLS8vICBUaGUgYnJhbmNoIHRoYXQgaGFzIGFuIGFsd2F5cyBmYWxz
ZSBjb25kaXRpb24gaXMgdXNlZCB0byBlbnN1cmUgdGhhdAotLy8gIHN0YXRlbWVudCBhbmQgcmVn
ZXggYXJlIGNvbXBpbGVkIChhbmQgdGh1cyBzeW50YWN0aWNhbGx5IGNvcnJlY3QpIGJ1dAotLy8g
IG5ldmVyIGV4ZWN1dGVkLiBUaGUgdW5yZWFjaGFibGUgY29kZSBtYWNybyBwcm90ZWN0cyB0aGUg
dGVybWluYXRvcgotLy8gIHN0YXRlbWVudCBmcm9tIGdlbmVyYXRpbmcgYW4gJ3VucmVhY2hhYmxl
IGNvZGUnIHdhcm5pbmcgaW4gY2FzZQotLy8gIHN0YXRlbWVudCB1bmNvbmRpdGlvbmFsbHkgcmV0
dXJucyBvciB0aHJvd3MuIFRoZSBNZXNzYWdlIGNvbnN0cnVjdG9yIGF0Ci0vLyAgdGhlIGVuZCBh
bGxvd3MgdGhlIHN5bnRheCBvZiBzdHJlYW1pbmcgYWRkaXRpb25hbCBtZXNzYWdlcyBpbnRvIHRo
ZQotLy8gIG1hY3JvLCBmb3IgY29tcGlsYXRpb25hbCBjb21wYXRpYmlsaXR5IHdpdGggRVhQRUNU
X0RFQVRIL0FTU0VSVF9ERUFUSC4KLSMgZGVmaW5lIEdURVNUX1VOU1VQUE9SVEVEX0RFQVRIX1RF
U1RfKHN0YXRlbWVudCwgcmVnZXgsIHRlcm1pbmF0b3IpIFwKLSAgICBHVEVTVF9BTUJJR1VPVVNf
RUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUo
KSkgeyBcCi0gICAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIFwKLSAgICAgICAgICA8PCAiRGVhdGgg
dGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiIgXAotICAgICAgICAg
IDw8ICJTdGF0ZW1lbnQgJyIgI3N0YXRlbWVudCAiJyBjYW5ub3QgYmUgdmVyaWZpZWQuIjsgXAot
ICAgIH0gZWxzZSBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkgeyBcCi0g
ICAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpSRTo6UGFydGlhbE1hdGNoKCIuKiIsIChyZWdleCkp
OyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1df
KHN0YXRlbWVudCk7IFwKLSAgICAgIHRlcm1pbmF0b3I7IFwKLSAgICB9IGVsc2UgXAotICAgICAg
Ojp0ZXN0aW5nOjpNZXNzYWdlKCkKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9ERUFUSF9URVNUX0lO
VEVSTkFMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFs
L2d0ZXN0LWZpbGVwYXRoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0
ZXN0LWZpbGVwYXRoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMTNiNGIwZGU2
MC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtZmlsZXBhdGguaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNiArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBrZWl0
aC5yYXlAZ21haWwuY29tIChLZWl0aCBSYXkpCi0vLwotLy8gR29vZ2xlIFRlc3QgZmlsZXBhdGgg
dXRpbGl0aWVzCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyBjbGFzc2VzIGFuZCBm
dW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBpcyAjaW5j
bHVkZWQgaW4gPGd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmg+LgotLy8gRG8gbm90IGlu
Y2x1ZGUgdGhpcyBoZWFkZXIgZmlsZSBzZXBhcmF0ZWx5IQotCi0jaWZuZGVmIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9GSUxFUEFUSF9IXwotCi0jaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBp
bnRlcm5hbCB7Ci0KLS8vIEZpbGVQYXRoIC0gYSBjbGFzcyBmb3IgZmlsZSBhbmQgZGlyZWN0b3J5
IHBhdGhuYW1lIG1hbmlwdWxhdGlvbiB3aGljaAotLy8gaGFuZGxlcyBwbGF0Zm9ybS1zcGVjaWZp
YyBjb252ZW50aW9ucyAobGlrZSB0aGUgcGF0aG5hbWUgc2VwYXJhdG9yKS4KLS8vIFVzZWQgZm9y
IGhlbHBlciBmdW5jdGlvbnMgZm9yIG5hbWluZyBmaWxlcyBpbiBhIGRpcmVjdG9yeSBmb3IgeG1s
IG91dHB1dC4KLS8vIEV4Y2VwdCBmb3IgU2V0IG1ldGhvZHMsIGFsbCBtZXRob2RzIGFyZSBjb25z
dCBvciBzdGF0aWMsIHdoaWNoIHByb3ZpZGVzIGFuCi0vLyAiaW1tdXRhYmxlIHZhbHVlIG9iamVj
dCIgLS0gdXNlZnVsIGZvciBwZWFjZSBvZiBtaW5kLgotLy8gQSBGaWxlUGF0aCB3aXRoIGEgdmFs
dWUgZW5kaW5nIGluIGEgcGF0aCBzZXBhcmF0b3IgKCJsaWtlL3RoaXMvIikgcmVwcmVzZW50cwot
Ly8gYSBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBhc3N1bWVkIHRvIHJlcHJlc2VudCBhIGZp
bGUuIEluIGVpdGhlciBjYXNlLAotLy8gaXQgbWF5IG9yIG1heSBub3QgcmVwcmVzZW50IGFuIGFj
dHVhbCBmaWxlIG9yIGRpcmVjdG9yeSBpbiB0aGUgZmlsZSBzeXN0ZW0uCi0vLyBOYW1lcyBhcmUg
Tk9UIGNoZWNrZWQgZm9yIHN5bnRheCBjb3JyZWN0bmVzcyAtLSBubyBjaGVja2luZyBmb3IgaWxs
ZWdhbAotLy8gY2hhcmFjdGVycywgbWFsZm9ybWVkIHBhdGhzLCBldGMuCi0KLWNsYXNzIEdURVNU
X0FQSV8gRmlsZVBhdGggewotIHB1YmxpYzoKLSAgRmlsZVBhdGgoKSA6IHBhdGhuYW1lXygiIikg
eyB9Ci0gIEZpbGVQYXRoKGNvbnN0IEZpbGVQYXRoJiByaHMpIDogcGF0aG5hbWVfKHJocy5wYXRo
bmFtZV8pIHsgfQotCi0gIGV4cGxpY2l0IEZpbGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRo
bmFtZSkgOiBwYXRobmFtZV8ocGF0aG5hbWUpIHsKLSAgICBOb3JtYWxpemUoKTsKLSAgfQotCi0g
IEZpbGVQYXRoJiBvcGVyYXRvcj0oY29uc3QgRmlsZVBhdGgmIHJocykgewotICAgIFNldChyaHMp
OwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIHZvaWQgU2V0KGNvbnN0IEZpbGVQYXRoJiBy
aHMpIHsKLSAgICBwYXRobmFtZV8gPSByaHMucGF0aG5hbWVfOwotICB9Ci0KLSAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXzsgfQotICBjb25zdCBj
aGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0dXJuIHBhdGhuYW1lXy5jX3N0cigpOyB9Ci0KLSAgLy8g
UmV0dXJucyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgb3IgIiIgaWYgdW5zdWNjZXNz
ZnVsLgotICBzdGF0aWMgRmlsZVBhdGggR2V0Q3VycmVudERpcigpOwotCi0gIC8vIEdpdmVuIGRp
cmVjdG9yeSA9ICJkaXIiLCBiYXNlX25hbWUgPSAidGVzdCIsIG51bWJlciA9IDAsCi0gIC8vIGV4
dGVuc2lvbiA9ICJ4bWwiLCByZXR1cm5zICJkaXIvdGVzdC54bWwiLiBJZiBudW1iZXIgaXMgZ3Jl
YXRlcgotICAvLyB0aGFuIHplcm8gKGUuZy4sIDEyKSwgcmV0dXJucyAiZGlyL3Rlc3RfMTIueG1s
Ii4KLSAgLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0
aGVyIHRoYW4gLy4KLSAgc3RhdGljIEZpbGVQYXRoIE1ha2VGaWxlTmFtZShjb25zdCBGaWxlUGF0
aCYgZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQ
YXRoJiBiYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHRlbnNpb24p
OwotCi0gIC8vIEdpdmVuIGRpcmVjdG9yeSA9ICJkaXIiLCByZWxhdGl2ZV9wYXRoID0gInRlc3Qu
eG1sIiwKLSAgLy8gcmV0dXJucyAiZGlyL3Rlc3QueG1sIi4KLSAgLy8gT24gV2luZG93cywgdXNl
cyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVyIHRoYW4gLy4KLSAgc3RhdGljIEZpbGVQYXRoIENv
bmNhdFBhdGhzKGNvbnN0IEZpbGVQYXRoJiBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGaWxlUGF0aCYgcmVsYXRpdmVfcGF0aCk7Ci0KLSAgLy8gUmV0dXJu
cyBhIHBhdGhuYW1lIGZvciBhIGZpbGUgdGhhdCBkb2VzIG5vdCBjdXJyZW50bHkgZXhpc3QuIFRo
ZSBwYXRobmFtZQotICAvLyB3aWxsIGJlIGRpcmVjdG9yeS9iYXNlX25hbWUuZXh0ZW5zaW9uIG9y
Ci0gIC8vIGRpcmVjdG9yeS9iYXNlX25hbWVfPG51bWJlcj4uZXh0ZW5zaW9uIGlmIGRpcmVjdG9y
eS9iYXNlX25hbWUuZXh0ZW5zaW9uCi0gIC8vIGFscmVhZHkgZXhpc3RzLiBUaGUgbnVtYmVyIHdp
bGwgYmUgaW5jcmVtZW50ZWQgdW50aWwgYSBwYXRobmFtZSBpcyBmb3VuZAotICAvLyB0aGF0IGRv
ZXMgbm90IGFscmVhZHkgZXhpc3QuCi0gIC8vIEV4YW1wbGVzOiAnZGlyL2Zvb190ZXN0LnhtbCcg
b3IgJ2Rpci9mb29fdGVzdF8xLnhtbCcuCi0gIC8vIFRoZXJlIGNvdWxkIGJlIGEgcmFjZSBjb25k
aXRpb24gaWYgdHdvIG9yIG1vcmUgcHJvY2Vzc2VzIGFyZSBjYWxsaW5nIHRoaXMKLSAgLy8gZnVu
Y3Rpb24gYXQgdGhlIHNhbWUgdGltZSAtLSB0aGV5IGNvdWxkIGJvdGggcGljayB0aGUgc2FtZSBm
aWxlbmFtZS4KLSAgc3RhdGljIEZpbGVQYXRoIEdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoY29uc3Qg
RmlsZVBhdGgmIGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uKTsKLQotICAvLyBSZXR1cm5z
IHRydWUgaWZmIHRoZSBwYXRoIGlzICIiLgotICBib29sIElzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBwYXRobmFtZV8uZW1wdHkoKTsgfQotCi0gIC8vIElmIGlucHV0IG5hbWUgaGFzIGEgdHJhaWxp
bmcgc2VwYXJhdG9yIGNoYXJhY3RlciwgcmVtb3ZlcyBpdCBhbmQgcmV0dXJucwotICAvLyB0aGUg
bmFtZSwgb3RoZXJ3aXNlIHJldHVybiB0aGUgbmFtZSBzdHJpbmcgdW5tb2RpZmllZC4KLSAgLy8g
T24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IsIG90aGVyIHBsYXRm
b3JtcyB1c2UgLy4KLSAgRmlsZVBhdGggUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkgY29u
c3Q7Ci0KLSAgLy8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIEZpbGVQYXRoIHdpdGggdGhlIGRpcmVj
dG9yeSBwYXJ0IHJlbW92ZWQuCi0gIC8vIEV4YW1wbGU6IEZpbGVQYXRoKCJwYXRoL3RvL2ZpbGUi
KS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkgcmV0dXJucwotICAvLyBGaWxlUGF0aCgiZmlsZSIpLiBJ
ZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgcGFydCAoImp1c3RfYV9maWxlIiksIGl0IHJldHVybnMK
LSAgLy8gdGhlIEZpbGVQYXRoIHVubW9kaWZpZWQuIElmIHRoZXJlIGlzIG5vIGZpbGUgcGFydCAo
Imp1c3RfYV9kaXIvIikgaXQKLSAgLy8gcmV0dXJucyBhbiBlbXB0eSBGaWxlUGF0aCAoIiIpLgot
ICAvLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhl
cndpc2UgaXQgaXMgJy8nLgotICBGaWxlUGF0aCBSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29uc3Q7
Ci0KLSAgLy8gUmVtb3ZlRmlsZU5hbWUgcmV0dXJucyB0aGUgZGlyZWN0b3J5IHBhdGggd2l0aCB0
aGUgZmlsZW5hbWUgcmVtb3ZlZC4KLSAgLy8gRXhhbXBsZTogRmlsZVBhdGgoInBhdGgvdG8vZmls
ZSIpLlJlbW92ZUZpbGVOYW1lKCkgcmV0dXJucyAicGF0aC90by8iLgotICAvLyBJZiB0aGUgRmls
ZVBhdGggaXMgImFfZmlsZSIgb3IgIi9hX2ZpbGUiLCBSZW1vdmVGaWxlTmFtZSByZXR1cm5zCi0g
IC8vIEZpbGVQYXRoKCIuLyIpIG9yLCBvbiBXaW5kb3dzLCBGaWxlUGF0aCgiLlxcIikuIElmIHRo
ZSBmaWxlcGF0aCBkb2VzCi0gIC8vIG5vdCBoYXZlIGEgZmlsZSwgbGlrZSAianVzdC9hL2Rpci8i
LCBpdCByZXR1cm5zIHRoZSBGaWxlUGF0aCB1bm1vZGlmaWVkLgotICAvLyBPbiBXaW5kb3dzIHBs
YXRmb3JtLCAnXCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgot
ICBGaWxlUGF0aCBSZW1vdmVGaWxlTmFtZSgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgYSBjb3B5
IG9mIHRoZSBGaWxlUGF0aCB3aXRoIHRoZSBjYXNlLWluc2Vuc2l0aXZlIGV4dGVuc2lvbiByZW1v
dmVkLgotICAvLyBFeGFtcGxlOiBGaWxlUGF0aCgiZGlyL2ZpbGUuZXhlIikuUmVtb3ZlRXh0ZW5z
aW9uKCJFWEUiKSByZXR1cm5zCi0gIC8vIEZpbGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2Ut
aW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlzIG5vdAotICAvLyBmb3VuZCwgcmV0dXJucyBhIGNvcHkg
b2YgdGhlIG9yaWdpbmFsIEZpbGVQYXRoLgotICBGaWxlUGF0aCBSZW1vdmVFeHRlbnNpb24oY29u
c3QgY2hhciogZXh0ZW5zaW9uKSBjb25zdDsKLQotICAvLyBDcmVhdGVzIGRpcmVjdG9yaWVzIHNv
IHRoYXQgcGF0aCBleGlzdHMuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsIG9yIGlmCi0gIC8v
IHRoZSBkaXJlY3RvcmllcyBhbHJlYWR5IGV4aXN0OyByZXR1cm5zIGZhbHNlIGlmIHVuYWJsZSB0
byBjcmVhdGUKLSAgLy8gZGlyZWN0b3JpZXMgZm9yIGFueSByZWFzb24uIFdpbGwgYWxzbyByZXR1
cm4gZmFsc2UgaWYgdGhlIEZpbGVQYXRoIGRvZXMKLSAgLy8gbm90IHJlcHJlc2VudCBhIGRpcmVj
dG9yeSAodGhhdCBpcywgaXQgZG9lc24ndCBlbmQgd2l0aCBhIHBhdGggc2VwYXJhdG9yKS4KLSAg
Ym9vbCBDcmVhdGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkgY29uc3Q7Ci0KLSAgLy8gQ3JlYXRl
IHRoZSBkaXJlY3Rvcnkgc28gdGhhdCBwYXRoIGV4aXN0cy4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nl
c3NmdWwgb3IKLSAgLy8gaWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0czsgcmV0dXJucyBm
YWxzZSBpZiB1bmFibGUgdG8gY3JlYXRlIHRoZQotICAvLyBkaXJlY3RvcnkgZm9yIGFueSByZWFz
b24sIGluY2x1ZGluZyBpZiB0aGUgcGFyZW50IGRpcmVjdG9yeSBkb2VzIG5vdAotICAvLyBleGlz
dC4gTm90IG5hbWVkICJDcmVhdGVEaXJlY3RvcnkiIGJlY2F1c2UgdGhhdCdzIGEgbWFjcm8gb24g
V2luZG93cy4KLSAgYm9vbCBDcmVhdGVGb2xkZXIoKSBjb25zdDsKLQotICAvLyBSZXR1cm5zIHRy
dWUgaWYgRmlsZVBhdGggZGVzY3JpYmVzIHNvbWV0aGluZyBpbiB0aGUgZmlsZS1zeXN0ZW0sCi0g
IC8vIGVpdGhlciBhIGZpbGUsIGRpcmVjdG9yeSwgb3Igd2hhdGV2ZXIsIGFuZCB0aGF0IHNvbWV0
aGluZyBleGlzdHMuCi0gIGJvb2wgRmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkgY29uc3Q7Ci0KLSAg
Ly8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBhIGRpcmVjdG9yeSBpbiB0aGUg
ZmlsZS1zeXN0ZW0KLSAgLy8gdGhhdCBleGlzdHMuCi0gIGJvb2wgRGlyZWN0b3J5RXhpc3RzKCkg
Y29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIEZpbGVQYXRoIGVuZHMgd2l0aCBhIHBhdGgg
c2VwYXJhdG9yLCB3aGljaCBpbmRpY2F0ZXMgdGhhdAotICAvLyBpdCBpcyBpbnRlbmRlZCB0byBy
ZXByZXNlbnQgYSBkaXJlY3RvcnkuIFJldHVybnMgZmFsc2Ugb3RoZXJ3aXNlLgotICAvLyBUaGlz
IGRvZXMgTk9UIGNoZWNrIHRoYXQgYSBkaXJlY3RvcnkgKG9yIGZpbGUpIGFjdHVhbGx5IGV4aXN0
cy4KLSAgYm9vbCBJc0RpcmVjdG9yeSgpIGNvbnN0OwotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZiBw
YXRobmFtZSBkZXNjcmliZXMgYSByb290IGRpcmVjdG9yeS4gKFdpbmRvd3MgaGFzIG9uZQotICAv
LyByb290IGRpcmVjdG9yeSBwZXIgZGlzayBkcml2ZS4pCi0gIGJvb2wgSXNSb290RGlyZWN0b3J5
KCkgY29uc3Q7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBhbiBh
YnNvbHV0ZSBwYXRoLgotICBib29sIElzQWJzb2x1dGVQYXRoKCkgY29uc3Q7Ci0KLSBwcml2YXRl
OgotICAvLyBSZXBsYWNlcyBtdWx0aXBsZSBjb25zZWN1dGl2ZSBzZXBhcmF0b3JzIHdpdGggYSBz
aW5nbGUgc2VwYXJhdG9yLgotICAvLyBGb3IgZXhhbXBsZSwgImJhci8vL2ZvbyIgYmVjb21lcyAi
YmFyL2ZvbyIuIERvZXMgbm90IGVsaW1pbmF0ZSBvdGhlcgotICAvLyByZWR1bmRhbmNpZXMgdGhh
dCBtaWdodCBiZSBpbiBhIHBhdGhuYW1lIGludm9sdmluZyAiLiIgb3IgIi4uIi4KLSAgLy8KLSAg
Ly8gQSBwYXRobmFtZSB3aXRoIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNlcGFyYXRvcnMgbWF5IG9j
Y3VyIGVpdGhlciB0aHJvdWdoCi0gIC8vIHVzZXIgZXJyb3Igb3IgYXMgYSByZXN1bHQgb2Ygc29t
ZSBzY3JpcHRzIG9yIEFQSXMgdGhhdCBnZW5lcmF0ZSBhIHBhdGhuYW1lCi0gIC8vIHdpdGggYSB0
cmFpbGluZyBzZXBhcmF0b3IuIE9uIG90aGVyIHBsYXRmb3JtcyB0aGUgc2FtZSBBUEkgb3Igc2Ny
aXB0Ci0gIC8vIG1heSBOT1QgZ2VuZXJhdGUgYSBwYXRobmFtZSB3aXRoIGEgdHJhaWxpbmcgIi8i
LiBUaGVuIGVsc2V3aGVyZSB0aGF0Ci0gIC8vIHBhdGhuYW1lIG1heSBoYXZlIGFub3RoZXIgIi8i
IGFuZCBwYXRobmFtZSBjb21wb25lbnRzIGFkZGVkIHRvIGl0LAotICAvLyB3aXRob3V0IGNoZWNr
aW5nIGZvciB0aGUgc2VwYXJhdG9yIGFscmVhZHkgYmVpbmcgdGhlcmUuCi0gIC8vIFRoZSBzY3Jp
cHQgbGFuZ3VhZ2UgYW5kIG9wZXJhdGluZyBzeXN0ZW0gbWF5IGFsbG93IHBhdGhzIGxpa2UgImZv
by8vYmFyIgotICAvLyBidXQgc29tZSBvZiB0aGUgZnVuY3Rpb25zIGluIEZpbGVQYXRoIHdpbGwg
bm90IGhhbmRsZSB0aGF0IGNvcnJlY3RseS4gSW4KLSAgLy8gcGFydGljdWxhciwgUmVtb3ZlVHJh
aWxpbmdQYXRoU2VwYXJhdG9yKCkgb25seSByZW1vdmVzIG9uZSBzZXBhcmF0b3IsIGFuZAotICAv
LyBpdCBpcyBjYWxsZWQgaW4gQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpIGFzc3VtaW5n
IHRoYXQgaXQgd2lsbCBjaGFuZ2UKLSAgLy8gYSBwYXRobmFtZSBmcm9tIGRpcmVjdG9yeSBzeW50
YXggKHRyYWlsaW5nIHNlcGFyYXRvcikgdG8gZmlsZW5hbWUgc3ludGF4LgotICAvLwotICAvLyBP
biBXaW5kb3dzIHRoaXMgbWV0aG9kIGFsc28gcmVwbGFjZXMgdGhlIGFsdGVybmF0ZSBwYXRoIHNl
cGFyYXRvciAnLycgd2l0aAotICAvLyB0aGUgcHJpbWFyeSBwYXRoIHNlcGFyYXRvciAnXFwnLCBz
byB0aGF0IGZvciBleGFtcGxlICJiYXJcXC9cXGZvbyIgYmVjb21lcwotICAvLyAiYmFyXFxmb28i
LgotCi0gIHZvaWQgTm9ybWFsaXplKCk7Ci0KLSAgLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhl
IGxhc3Qgb2NjdXJlbmNlIG9mIGEgdmFsaWQgcGF0aCBzZXBhcmF0b3IgaW4KLSAgLy8gdGhlIEZp
bGVQYXRoLiBPbiBXaW5kb3dzLCBmb3IgZXhhbXBsZSwgYm90aCAnLycgYW5kICdcJyBhcmUgdmFs
aWQgcGF0aAotICAvLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBzZXBhcmF0
b3Igd2FzIGZvdW5kLgotICBjb25zdCBjaGFyKiBGaW5kTGFzdFBhdGhTZXBhcmF0b3IoKSBjb25z
dDsKLQotICBzdGQ6OnN0cmluZyBwYXRobmFtZV87Ci19OyAgLy8gY2xhc3MgRmlsZVBhdGgKLQot
fSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi0jZW5k
aWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfRklMRVBBVEhfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJu
YWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRhNWFiNDZkM2FhLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1pbnRlcm5h
bC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwg
R29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbiksIGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotLy8KLS8vIFRo
ZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlz
IGhlYWRlciBmaWxlIGRlY2xhcmVzIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIHVzZWQgaW50ZXJuYWxs
eSBieQotLy8gR29vZ2xlIFRlc3QuICBUaGV5IGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0
IG5vdGljZS4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lO
VEVSTkFMX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfSU5U
RVJOQUxfSF8KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2lm
IEdURVNUX09TX0xJTlVYCi0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyBpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KLSMgaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5k
aWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotIyBpbmNs
dWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8
ZmxvYXQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxpb21hbmlwPgotI2luY2x1
ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC1tZXNzYWdl
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCi0jaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBhdGguaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaCIKLQotLy8gRHVlIHRvIEMrKyBwcmVwcm9jZXNzb3Igd2VpcmRu
ZXNzLCB3ZSBuZWVkIGRvdWJsZSBpbmRpcmVjdGlvbiB0bwotLy8gY29uY2F0ZW5hdGUgdHdvIHRv
a2VucyB3aGVuIG9uZSBvZiB0aGVtIGlzIF9fTElORV9fLiAgV3JpdGluZwotLy8KLS8vICAgZm9v
ICMjIF9fTElORV9fCi0vLwotLy8gd2lsbCByZXN1bHQgaW4gdGhlIHRva2VuIGZvb19fTElORV9f
LCBpbnN0ZWFkIG9mIGZvbyBmb2xsb3dlZCBieQotLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXIu
ICBGb3IgbW9yZSBkZXRhaWxzLCBzZWUKLS8vIGh0dHA6Ly93d3cucGFyYXNoaWZ0LmNvbS9jKyst
ZmFxLWxpdGUvbWlzYy10ZWNobmljYWwtaXNzdWVzLmh0bWwjZmFxLTM5LjYKLSNkZWZpbmUgR1RF
U1RfQ09OQ0FUX1RPS0VOXyhmb28sIGJhcikgR1RFU1RfQ09OQ0FUX1RPS0VOX0lNUExfKGZvbywg
YmFyKQotI2RlZmluZSBHVEVTVF9DT05DQVRfVE9LRU5fSU1QTF8oZm9vLCBiYXIpIGZvbyAjIyBi
YXIKLQotY2xhc3MgUHJvdG9jb2xNZXNzYWdlOwotbmFtZXNwYWNlIHByb3RvMiB7IGNsYXNzIE1l
c3NhZ2U7IH0KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9u
cy4KLQotY2xhc3MgQXNzZXJ0aW9uUmVzdWx0OyAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9m
IGFuIGFzc2VydGlvbi4KLWNsYXNzIE1lc3NhZ2U7ICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJlcHJlc2VudHMgYSBmYWlsdXJlIG1lc3NhZ2UuCi1jbGFzcyBUZXN0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZXByZXNlbnRzIGEgdGVzdC4KLWNsYXNzIFRlc3RJbmZvOyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGEgdGVzdC4KLWNsYXNzIFRl
c3RQYXJ0UmVzdWx0OyAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBhIHRlc3QgcGFydC4K
LWNsYXNzIFVuaXRUZXN0OyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgY29sbGVjdGlvbiBv
ZiB0ZXN0IGNhc2VzLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLTo6c3RkOjpzdHJpbmcgUHJp
bnRUb1N0cmluZyhjb25zdCBUJiB2YWx1ZSk7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLXN0
cnVjdCBUcmFjZUluZm87ICAgICAgICAgICAgICAgICAgICAgIC8vIEluZm9ybWF0aW9uIGFib3V0
IGEgdHJhY2UgcG9pbnQuCi1jbGFzcyBTY29wZWRUcmFjZTsgICAgICAgICAgICAgICAgICAgICAv
LyBJbXBsZW1lbnRzIHNjb3BlZCB0cmFjZS4KLWNsYXNzIFRlc3RJbmZvSW1wbDsgICAgICAgICAg
ICAgICAgICAgIC8vIE9wYXF1ZSBpbXBsZW1lbnRhdGlvbiBvZiBUZXN0SW5mbwotY2xhc3MgVW5p
dFRlc3RJbXBsOyAgICAgICAgICAgICAgICAgICAgLy8gT3BhcXVlIGltcGxlbWVudGF0aW9uIG9m
IFVuaXRUZXN0Ci0KLS8vIFRoZSB0ZXh0IHVzZWQgaW4gZmFpbHVyZSBtZXNzYWdlcyB0byBpbmRp
Y2F0ZSB0aGUgc3RhcnQgb2YgdGhlCi0vLyBzdGFjayB0cmFjZS4KLUdURVNUX0FQSV8gZXh0ZXJu
IGNvbnN0IGNoYXIga1N0YWNrVHJhY2VNYXJrZXJbXTsKLQotLy8gVHdvIG92ZXJsb2FkZWQgaGVs
cGVycyBmb3IgY2hlY2tpbmcgYXQgY29tcGlsZSB0aW1lIHdoZXRoZXIgYW4KLS8vIGV4cHJlc3Np
b24gaXMgYSBudWxsIHBvaW50ZXIgbGl0ZXJhbCAoaS5lLiBOVUxMIG9yIGFueSAwLXZhbHVlZAot
Ly8gY29tcGlsZS10aW1lIGludGVncmFsIGNvbnN0YW50KS4gIFRoZWlyIHJldHVybiB2YWx1ZXMg
aGF2ZQotLy8gZGlmZmVyZW50IHNpemVzLCBzbyB3ZSBjYW4gdXNlIHNpemVvZigpIHRvIHRlc3Qg
d2hpY2ggdmVyc2lvbiBpcwotLy8gcGlja2VkIGJ5IHRoZSBjb21waWxlci4gIFRoZXNlIGhlbHBl
cnMgaGF2ZSBubyBpbXBsZW1lbnRhdGlvbnMsIGFzCi0vLyB3ZSBvbmx5IG5lZWQgdGhlaXIgc2ln
bmF0dXJlcy4KLS8vCi0vLyBHaXZlbiBJc051bGxMaXRlcmFsSGVscGVyKHgpLCB0aGUgY29tcGls
ZXIgd2lsbCBwaWNrIHRoZSBmaXJzdAotLy8gdmVyc2lvbiBpZiB4IGNhbiBiZSBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byBTZWNyZXQqLCBhbmQgcGljayB0aGUKLS8vIHNlY29uZCB2ZXJzaW9uIG90
aGVyd2lzZS4gIFNpbmNlIFNlY3JldCBpcyBhIHNlY3JldCBhbmQgaW5jb21wbGV0ZQotLy8gdHlw
ZSwgdGhlIG9ubHkgZXhwcmVzc2lvbiBhIHVzZXIgY2FuIHdyaXRlIHRoYXQgaGFzIHR5cGUgU2Vj
cmV0KiBpcwotLy8gYSBudWxsIHBvaW50ZXIgbGl0ZXJhbC4gIFRoZXJlZm9yZSwgd2Uga25vdyB0
aGF0IHggaXMgYSBudWxsCi0vLyBwb2ludGVyIGxpdGVyYWwgaWYgYW5kIG9ubHkgaWYgdGhlIGZp
cnN0IHZlcnNpb24gaXMgcGlja2VkIGJ5IHRoZQotLy8gY29tcGlsZXIuCi1jaGFyIElzTnVsbExp
dGVyYWxIZWxwZXIoU2VjcmV0KiBwKTsKLWNoYXIgKCZJc051bGxMaXRlcmFsSGVscGVyKC4uLikp
WzJdOyAgLy8gTk9MSU5UCi0KLS8vIEEgY29tcGlsZS10aW1lIGJvb2wgY29uc3RhbnQgdGhhdCBp
cyB0cnVlIGlmIGFuZCBvbmx5IGlmIHggaXMgYQotLy8gbnVsbCBwb2ludGVyIGxpdGVyYWwgKGku
ZS4gTlVMTCBvciBhbnkgMC12YWx1ZWQgY29tcGlsZS10aW1lCi0vLyBpbnRlZ3JhbCBjb25zdGFu
dCkuCi0jaWZkZWYgR1RFU1RfRUxMSVBTSVNfTkVFRFNfUE9EXwotLy8gV2UgbG9zZSBzdXBwb3J0
IGZvciBOVUxMIGRldGVjdGlvbiB3aGVyZSB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlCi0vLyBw
YXNzaW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pLgotIyBkZWZpbmUg
R1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBmYWxzZQotI2Vsc2UKLSMgZGVmaW5lIEdURVNUX0lT
X05VTExfTElURVJBTF8oeCkgXAotICAgIChzaXplb2YoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNO
dWxsTGl0ZXJhbEhlbHBlcih4KSkgPT0gMSkKLSNlbmRpZiAgLy8gR1RFU1RfRUxMSVBTSVNfTkVF
RFNfUE9EXwotCi0vLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8gdGhlIEdv
b2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBBcHBl
bmRVc2VyTWVzc2FnZSgKLSAgICBjb25zdCBzdGQ6OnN0cmluZyYgZ3Rlc3RfbXNnLCBjb25zdCBN
ZXNzYWdlJiB1c2VyX21zZyk7Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBUaGlz
IGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgKGFuZCBvbmx5IGJ5KSBhIGZhaWxlZCBHb29nbGUgVGVz
dAotLy8gYXNzZXJ0aW9uIHdoZW4gR1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSBpcyB0cnVl
IChpZiBleGNlcHRpb25zCi0vLyBhcmUgZW5hYmxlZCkuICBXZSBkZXJpdmUgaXQgZnJvbSBzdGQ6
OnJ1bnRpbWVfZXJyb3IsIHdoaWNoIGlzIGZvcgotLy8gZXJyb3JzIHByZXN1bWFibHkgZGV0ZWN0
YWJsZSBvbmx5IGF0IHJ1biB0aW1lLiAgU2luY2UKLS8vIHN0ZDo6cnVudGltZV9lcnJvciBpbmhl
cml0cyBmcm9tIHN0ZDo6ZXhjZXB0aW9uLCBtYW55IHRlc3RpbmcKLS8vIGZyYW1ld29ya3Mga25v
dyBob3cgdG8gZXh0cmFjdCBhbmQgcHJpbnQgdGhlIG1lc3NhZ2UgaW5zaWRlIGl0LgotY2xhc3Mg
R1RFU1RfQVBJXyBHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbiA6IHB1YmxpYyA6OnN0ZDo6cnVu
dGltZV9lcnJvciB7Ci0gcHVibGljOgotICBleHBsaWNpdCBHb29nbGVUZXN0RmFpbHVyZUV4Y2Vw
dGlvbihjb25zdCBUZXN0UGFydFJlc3VsdCYgZmFpbHVyZSk7Ci19OwotCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19FWENFUFRJT05TCi0KLS8vIEEgaGVscGVyIGNsYXNzIGZvciBjcmVhdGluZyBzY29w
ZWQgdHJhY2VzIGluIHVzZXIgcHJvZ3JhbXMuCi1jbGFzcyBHVEVTVF9BUElfIFNjb3BlZFRyYWNl
IHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjJ3RvciBwdXNoZXMgdGhlIGdpdmVuIHNvdXJjZSBmaWxl
IGxvY2F0aW9uIGFuZCBtZXNzYWdlIG9udG8KLSAgLy8gYSB0cmFjZSBzdGFjayBtYWludGFpbmVk
IGJ5IEdvb2dsZSBUZXN0LgotICBTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSk7Ci0KLSAgLy8gVGhlIGQndG9yIHBvcHMgdGhlIGlu
Zm8gcHVzaGVkIGJ5IHRoZSBjJ3Rvci4KLSAgLy8KLSAgLy8gTm90ZSB0aGF0IHRoZSBkJ3RvciBp
cyBub3QgdmlydHVhbCBpbiBvcmRlciB0byBiZSBlZmZpY2llbnQuCi0gIC8vIERvbid0IGluaGVy
aXQgZnJvbSBTY29wZWRUcmFjZSEKLSAgflNjb3BlZFRyYWNlKCk7Ci0KLSBwcml2YXRlOgotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNjb3BlZFRyYWNlKTsKLX0gR1RFU1RfQVRU
UklCVVRFX1VOVVNFRF87ICAvLyBBIFNjb3BlZFRyYWNlIG9iamVjdCBkb2VzIGl0cyBqb2IgaW4g
aXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYyd0b3IgYW5kIGQndG9yLiAgVGhl
cmVmb3JlIGl0IGRvZXNuJ3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRv
IGJlIHVzZWQgb3RoZXJ3aXNlLgotCi1uYW1lc3BhY2UgZWRpdF9kaXN0YW5jZSB7Ci0vLyBSZXR1
cm5zIHRoZSBvcHRpbWFsIGVkaXRzIHRvIGdvIGZyb20gJ2xlZnQnIHRvICdyaWdodCcuCi0vLyBB
bGwgZWRpdHMgY29zdCB0aGUgc2FtZSwgd2l0aCByZXBsYWNlIGhhdmluZyBsb3dlciBwcmlvcml0
eSB0aGFuCi0vLyBhZGQvcmVtb3ZlLgotLy8gU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBX
YWduZXLigJNGaXNjaGVyIGFsZ29yaXRobS4KLS8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1dhZ25lci1GaXNjaGVyX2FsZ29yaXRobQotZW51bSBFZGl0VHlwZSB7IGtNYXRjaCwg
a0FkZCwga1JlbW92ZSwga1JlcGxhY2UgfTsKLUdURVNUX0FQSV8gc3RkOjp2ZWN0b3I8RWRpdFR5
cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+
JiBsZWZ0LCBjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiByaWdodCk7Ci0KLS8vIFNhbWUgYXMg
YWJvdmUsIGJ1dCB0aGUgaW5wdXQgaXMgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncy4KLUdURVNUX0FQ
SV8gc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0ZU9wdGltYWxFZGl0cygKLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+JiByaWdodCk7Ci0KLS8vIENyZWF0ZSBhIGRpZmYgb2YgdGhlIGlucHV0IHN0
cmluZ3MgaW4gVW5pZmllZCBkaWZmIGZvcm1hdC4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgQ3Jl
YXRlVW5pZmllZERpZmYoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBsZWZ0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4mIHJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgY29udGV4dCA9IDIpOwotCi19ICAvLyBuYW1lc3BhY2UgZWRpdF9kaXN0YW5j
ZQotCi0vLyBDYWxjdWxhdGUgdGhlIGRpZmYgYmV0d2VlbiAnbGVmdCcgYW5kICdyaWdodCcgYW5k
IHJldHVybiBpdCBpbiB1bmlmaWVkIGRpZmYKLS8vIGZvcm1hdC4KLS8vIElmIG5vdCBudWxsLCBz
dG9yZXMgaW4gJ3RvdGFsX2xpbmVfY291bnQnIHRoZSB0b3RhbCBudW1iZXIgb2YgbGluZXMgZm91
bmQKLS8vIGluIGxlZnQgKyByaWdodC4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgRGlmZlN0cmlu
Z3MoY29uc3Qgc3RkOjpzdHJpbmcmIGxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90KiB0b3RhbF9saW5lX2NvdW50KTsKLQotLy8gQ29uc3RydWN0cyBh
bmQgcmV0dXJucyB0aGUgbWVzc2FnZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCi0vLyAoZS5n
LiBBU1NFUlRfRVEsIEVYUEVDVF9TVFJFUSwgZXRjKSBmYWlsdXJlLgotLy8KLS8vIFRoZSBmaXJz
dCBmb3VyIHBhcmFtZXRlcnMgYXJlIHRoZSBleHByZXNzaW9ucyB1c2VkIGluIHRoZSBhc3NlcnRp
b24KLS8vIGFuZCB0aGVpciB2YWx1ZXMsIGFzIHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFT
U0VSVF9FUShmb28sIGJhcikKLS8vIHdoZXJlIGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2
ZToKLS8vCi0vLyAgIGV4cGVjdGVkX2V4cHJlc3Npb246ICJmb28iCi0vLyAgIGFjdHVhbF9leHBy
ZXNzaW9uOiAgICJiYXIiCi0vLyAgIGV4cGVjdGVkX3ZhbHVlOiAgICAgICI1IgotLy8gICBhY3R1
YWxfdmFsdWU6ICAgICAgICAiNiIKLS8vCi0vLyBUaGUgaWdub3JpbmdfY2FzZSBwYXJhbWV0ZXIg
aXMgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBhCi0vLyAqX1NUUkNBU0VFUSouICBXaGVuIGl0
J3MgdHJ1ZSwgdGhlIHN0cmluZyAiIChpZ25vcmluZyBjYXNlKSIgd2lsbAotLy8gYmUgaW5zZXJ0
ZWQgaW50byB0aGUgbWVzc2FnZS4KLUdURVNUX0FQSV8gQXNzZXJ0aW9uUmVzdWx0IEVxRmFpbHVy
ZShjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZF92
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgYWN0dWFsX3ZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaWdub3JpbmdfY2FzZSk7Ci0KLS8vIENvbnN0cnVjdHMgYSBmYWlsdXJlIG1lc3NhZ2Ug
Zm9yIEJvb2xlYW4gYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVDVF9UUlVFLgotR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCi0gICAgY29uc3QgQXNz
ZXJ0aW9uUmVzdWx0JiBhc3NlcnRpb25fcmVzdWx0LAotICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Np
b25fdGV4dCwKLSAgICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSk7Ci0KLS8vIFRoaXMgdGVtcGxhdGUg
Y2xhc3MgcmVwcmVzZW50cyBhbiBJRUVFIGZsb2F0aW5nLXBvaW50IG51bWJlcgotLy8gKGVpdGhl
ciBzaW5nbGUtcHJlY2lzaW9uIG9yIGRvdWJsZS1wcmVjaXNpb24sIGRlcGVuZGluZyBvbiB0aGUK
LS8vIHRlbXBsYXRlIHBhcmFtZXRlcnMpLgotLy8KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2xh
c3MgaXMgdG8gZG8gbW9yZSBzb3BoaXN0aWNhdGVkIG51bWJlcgotLy8gY29tcGFyaXNvbi4gIChE
dWUgdG8gcm91bmQtb2ZmIGVycm9yLCBldGMsIGl0J3MgdmVyeSB1bmxpa2VseSB0aGF0Ci0vLyB0
d28gZmxvYXRpbmctcG9pbnRzIHdpbGwgYmUgZXF1YWwgZXhhY3RseS4gIEhlbmNlIGEgbmFpdmUK
LS8vIGNvbXBhcmlzb24gYnkgdGhlID09IG9wZXJhdGlvbiBvZnRlbiBkb2Vzbid0IHdvcmsuKQot
Ly8KLS8vIEZvcm1hdCBvZiBJRUVFIGZsb2F0aW5nLXBvaW50OgotLy8KLS8vICAgVGhlIG1vc3Qt
c2lnbmlmaWNhbnQgYml0IGJlaW5nIHRoZSBsZWZ0bW9zdCwgYW4gSUVFRQotLy8gICBmbG9hdGlu
Zy1wb2ludCBsb29rcyBsaWtlCi0vLwotLy8gICAgIHNpZ25fYml0IGV4cG9uZW50X2JpdHMgZnJh
Y3Rpb25fYml0cwotLy8KLS8vICAgSGVyZSwgc2lnbl9iaXQgaXMgYSBzaW5nbGUgYml0IHRoYXQg
ZGVzaWduYXRlcyB0aGUgc2lnbiBvZiB0aGUKLS8vICAgbnVtYmVyLgotLy8KLS8vICAgRm9yIGZs
b2F0LCB0aGVyZSBhcmUgOCBleHBvbmVudCBiaXRzIGFuZCAyMyBmcmFjdGlvbiBiaXRzLgotLy8K
LS8vICAgRm9yIGRvdWJsZSwgdGhlcmUgYXJlIDExIGV4cG9uZW50IGJpdHMgYW5kIDUyIGZyYWN0
aW9uIGJpdHMuCi0vLwotLy8gICBNb3JlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGF0Ci0vLyAgIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZy1wb2ludF9zdGFuZGFyZC4K
LS8vCi0vLyBUZW1wbGF0ZSBwYXJhbWV0ZXI6Ci0vLwotLy8gICBSYXdUeXBlOiB0aGUgcmF3IGZs
b2F0aW5nLXBvaW50IHR5cGUgKGVpdGhlciBmbG9hdCBvciBkb3VibGUpCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmF3VHlwZT4KLWNsYXNzIEZsb2F0aW5nUG9pbnQgewotIHB1YmxpYzoKLSAgLy8gRGVm
aW5lcyB0aGUgdW5zaWduZWQgaW50ZWdlciB0eXBlIHRoYXQgaGFzIHRoZSBzYW1lIHNpemUgYXMg
dGhlCi0gIC8vIGZsb2F0aW5nIHBvaW50IG51bWJlci4KLSAgdHlwZWRlZiB0eXBlbmFtZSBUeXBl
V2l0aFNpemU8c2l6ZW9mKFJhd1R5cGUpPjo6VUludCBCaXRzOwotCi0gIC8vIENvbnN0YW50cy4K
LQotICAvLyAjIG9mIGJpdHMgaW4gYSBudW1iZXIuCi0gIHN0YXRpYyBjb25zdCBzaXplX3Qga0Jp
dENvdW50ID0gOCpzaXplb2YoUmF3VHlwZSk7Ci0KLSAgLy8gIyBvZiBmcmFjdGlvbiBiaXRzIGlu
IGEgbnVtYmVyLgotICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtGcmFjdGlvbkJpdENvdW50ID0KLSAg
ICBzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+OjpkaWdpdHMgLSAxOwotCi0gIC8vICMgb2Yg
ZXhwb25lbnQgYml0cyBpbiBhIG51bWJlci4KLSAgc3RhdGljIGNvbnN0IHNpemVfdCBrRXhwb25l
bnRCaXRDb3VudCA9IGtCaXRDb3VudCAtIDEgLSBrRnJhY3Rpb25CaXRDb3VudDsKLQotICAvLyBU
aGUgbWFzayBmb3IgdGhlIHNpZ24gYml0LgotICBzdGF0aWMgY29uc3QgQml0cyBrU2lnbkJpdE1h
c2sgPSBzdGF0aWNfY2FzdDxCaXRzPigxKSA8PCAoa0JpdENvdW50IC0gMSk7Ci0KLSAgLy8gVGhl
IG1hc2sgZm9yIHRoZSBmcmFjdGlvbiBiaXRzLgotICBzdGF0aWMgY29uc3QgQml0cyBrRnJhY3Rp
b25CaXRNYXNrID0KLSAgICB+c3RhdGljX2Nhc3Q8Qml0cz4oMCkgPj4gKGtFeHBvbmVudEJpdENv
dW50ICsgMSk7Ci0KLSAgLy8gVGhlIG1hc2sgZm9yIHRoZSBleHBvbmVudCBiaXRzLgotICBzdGF0
aWMgY29uc3QgQml0cyBrRXhwb25lbnRCaXRNYXNrID0gfihrU2lnbkJpdE1hc2sgfCBrRnJhY3Rp
b25CaXRNYXNrKTsKLQotICAvLyBIb3cgbWFueSBVTFAncyAoVW5pdHMgaW4gdGhlIExhc3QgUGxh
Y2UpIHdlIHdhbnQgdG8gdG9sZXJhdGUgd2hlbgotICAvLyBjb21wYXJpbmcgdHdvIG51bWJlcnMu
ICBUaGUgbGFyZ2VyIHRoZSB2YWx1ZSwgdGhlIG1vcmUgZXJyb3Igd2UKLSAgLy8gYWxsb3cuICBB
IDAgdmFsdWUgbWVhbnMgdGhhdCB0d28gbnVtYmVycyBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUK
LSAgLy8gdG8gYmUgY29uc2lkZXJlZCBlcXVhbC4KLSAgLy8KLSAgLy8gVGhlIG1heGltdW0gZXJy
b3Igb2YgYSBzaW5nbGUgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzIDAuNQotICAvLyB1bml0
cyBpbiB0aGUgbGFzdCBwbGFjZS4gIE9uIEludGVsIENQVSdzLCBhbGwgZmxvYXRpbmctcG9pbnQK
LSAgLy8gY2FsY3VsYXRpb25zIGFyZSBkb25lIHdpdGggODAtYml0IHByZWNpc2lvbiwgd2hpbGUg
ZG91YmxlIGhhcyA2NAotICAvLyBiaXRzLiAgVGhlcmVmb3JlLCA0IHNob3VsZCBiZSBlbm91Z2gg
Zm9yIG9yZGluYXJ5IHVzZS4KLSAgLy8KLSAgLy8gU2VlIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSBm
b3IgbW9yZSBkZXRhaWxzIG9uIFVMUDoKLSAgLy8gaHR0cDovL3JhbmRvbWFzY2lpLndvcmRwcmVz
cy5jb20vMjAxMi8wMi8yNS9jb21wYXJpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVycy0yMDEyLWVk
aXRpb24vCi0gIHN0YXRpYyBjb25zdCBzaXplX3Qga01heFVscHMgPSA0OwotCi0gIC8vIENvbnN0
cnVjdHMgYSBGbG9hdGluZ1BvaW50IGZyb20gYSByYXcgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgot
ICAvLwotICAvLyBPbiBhbiBJbnRlbCBDUFUsIHBhc3NpbmcgYSBub24tbm9ybWFsaXplZCBOQU4g
KE5vdCBhIE51bWJlcikKLSAgLy8gYXJvdW5kIG1heSBjaGFuZ2UgaXRzIGJpdHMsIGFsdGhvdWdo
IHRoZSBuZXcgdmFsdWUgaXMgZ3VhcmFudGVlZAotICAvLyB0byBiZSBhbHNvIGEgTkFOLiAgVGhl
cmVmb3JlLCBkb24ndCBleHBlY3QgdGhpcyBjb25zdHJ1Y3RvciB0bwotICAvLyBwcmVzZXJ2ZSB0
aGUgYml0cyBpbiB4IHdoZW4geCBpcyBhIE5BTi4KLSAgZXhwbGljaXQgRmxvYXRpbmdQb2ludChj
b25zdCBSYXdUeXBlJiB4KSB7IHVfLnZhbHVlXyA9IHg7IH0KLQotICAvLyBTdGF0aWMgbWV0aG9k
cwotCi0gIC8vIFJlaW50ZXJwcmV0cyBhIGJpdCBwYXR0ZXJuIGFzIGEgZmxvYXRpbmctcG9pbnQg
bnVtYmVyLgotICAvLwotICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCB0byB0ZXN0IHRoZSBB
bG1vc3RFcXVhbHMoKSBtZXRob2QuCi0gIHN0YXRpYyBSYXdUeXBlIFJlaW50ZXJwcmV0Qml0cyhj
b25zdCBCaXRzIGJpdHMpIHsKLSAgICBGbG9hdGluZ1BvaW50IGZwKDApOwotICAgIGZwLnVfLmJp
dHNfID0gYml0czsKLSAgICByZXR1cm4gZnAudV8udmFsdWVfOwotICB9Ci0KLSAgLy8gUmV0dXJu
cyB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRoYXQgcmVwcmVzZW50IHBvc2l0aXZlIGluZmlu
aXR5LgotICBzdGF0aWMgUmF3VHlwZSBJbmZpbml0eSgpIHsKLSAgICByZXR1cm4gUmVpbnRlcnBy
ZXRCaXRzKGtFeHBvbmVudEJpdE1hc2spOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0aGUgbWF4aW11
bSByZXByZXNlbnRhYmxlIGZpbml0ZSBmbG9hdGluZy1wb2ludCBudW1iZXIuCi0gIHN0YXRpYyBS
YXdUeXBlIE1heCgpOwotCi0gIC8vIE5vbi1zdGF0aWMgbWV0aG9kcwotCi0gIC8vIFJldHVybnMg
dGhlIGJpdHMgdGhhdCByZXByZXNlbnRzIHRoaXMgbnVtYmVyLgotICBjb25zdCBCaXRzICZiaXRz
KCkgY29uc3QgeyByZXR1cm4gdV8uYml0c187IH0KLQotICAvLyBSZXR1cm5zIHRoZSBleHBvbmVu
dCBiaXRzIG9mIHRoaXMgbnVtYmVyLgotICBCaXRzIGV4cG9uZW50X2JpdHMoKSBjb25zdCB7IHJl
dHVybiBrRXhwb25lbnRCaXRNYXNrICYgdV8uYml0c187IH0KLQotICAvLyBSZXR1cm5zIHRoZSBm
cmFjdGlvbiBiaXRzIG9mIHRoaXMgbnVtYmVyLgotICBCaXRzIGZyYWN0aW9uX2JpdHMoKSBjb25z
dCB7IHJldHVybiBrRnJhY3Rpb25CaXRNYXNrICYgdV8uYml0c187IH0KLQotICAvLyBSZXR1cm5z
IHRoZSBzaWduIGJpdCBvZiB0aGlzIG51bWJlci4KLSAgQml0cyBzaWduX2JpdCgpIGNvbnN0IHsg
cmV0dXJuIGtTaWduQml0TWFzayAmIHVfLmJpdHNfOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlm
ZiB0aGlzIGlzIE5BTiAobm90IGEgbnVtYmVyKS4KLSAgYm9vbCBpc19uYW4oKSBjb25zdCB7Ci0g
ICAgLy8gSXQncyBhIE5BTiBpZiB0aGUgZXhwb25lbnQgYml0cyBhcmUgYWxsIG9uZXMgYW5kIHRo
ZSBmcmFjdGlvbgotICAgIC8vIGJpdHMgYXJlIG5vdCBlbnRpcmVseSB6ZXJvcy4KLSAgICByZXR1
cm4gKGV4cG9uZW50X2JpdHMoKSA9PSBrRXhwb25lbnRCaXRNYXNrKSAmJiAoZnJhY3Rpb25fYml0
cygpICE9IDApOwotICB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGlzIG51bWJlciBpcyBh
dCBtb3N0IGtNYXhVbHBzIFVMUCdzIGF3YXkgZnJvbQotICAvLyByaHMuICBJbiBwYXJ0aWN1bGFy
LCB0aGlzIGZ1bmN0aW9uOgotICAvLwotICAvLyAgIC0gcmV0dXJucyBmYWxzZSBpZiBlaXRoZXIg
bnVtYmVyIGlzIChvciBib3RoIGFyZSkgTkFOLgotICAvLyAgIC0gdHJlYXRzIHJlYWxseSBsYXJn
ZSBudW1iZXJzIGFzIGFsbW9zdCBlcXVhbCB0byBpbmZpbml0eS4KLSAgLy8gICAtIHRoaW5rcyAr
MC4wIGFuZCAtMC4wIGFyZSAwIERMUCdzIGFwYXJ0LgotICBib29sIEFsbW9zdEVxdWFscyhjb25z
dCBGbG9hdGluZ1BvaW50JiByaHMpIGNvbnN0IHsKLSAgICAvLyBUaGUgSUVFRSBzdGFuZGFyZCBz
YXlzIHRoYXQgYW55IGNvbXBhcmlzb24gb3BlcmF0aW9uIGludm9sdmluZwotICAgIC8vIGEgTkFO
IG11c3QgcmV0dXJuIGZhbHNlLgotICAgIGlmIChpc19uYW4oKSB8fCByaHMuaXNfbmFuKCkpIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBEaXN0YW5jZUJldHdlZW5TaWduQW5kTWFnbml0dWRl
TnVtYmVycyh1Xy5iaXRzXywgcmhzLnVfLmJpdHNfKQotICAgICAgICA8PSBrTWF4VWxwczsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIGRhdGEgdHlwZSB1c2VkIHRvIHN0b3JlIHRoZSBhY3R1
YWwgZmxvYXRpbmctcG9pbnQgbnVtYmVyLgotICB1bmlvbiBGbG9hdGluZ1BvaW50VW5pb24gewot
ICAgIFJhd1R5cGUgdmFsdWVfOyAgLy8gVGhlIHJhdyBmbG9hdGluZy1wb2ludCBudW1iZXIuCi0g
ICAgQml0cyBiaXRzXzsgICAgICAvLyBUaGUgYml0cyB0aGF0IHJlcHJlc2VudCB0aGUgbnVtYmVy
LgotICB9OwotCi0gIC8vIENvbnZlcnRzIGFuIGludGVnZXIgZnJvbSB0aGUgc2lnbi1hbmQtbWFn
bml0dWRlIHJlcHJlc2VudGF0aW9uIHRvCi0gIC8vIHRoZSBiaWFzZWQgcmVwcmVzZW50YXRpb24u
ICBNb3JlIHByZWNpc2VseSwgbGV0IE4gYmUgMiB0byB0aGUKLSAgLy8gcG93ZXIgb2YgKGtCaXRD
b3VudCAtIDEpLCBhbiBpbnRlZ2VyIHggaXMgcmVwcmVzZW50ZWQgYnkgdGhlCi0gIC8vIHVuc2ln
bmVkIG51bWJlciB4ICsgTi4KLSAgLy8KLSAgLy8gRm9yIGluc3RhbmNlLAotICAvLwotICAvLyAg
IC1OICsgMSAodGhlIG1vc3QgbmVnYXRpdmUgbnVtYmVyIHJlcHJlc2VudGFibGUgdXNpbmcKLSAg
Ly8gICAgICAgICAgc2lnbi1hbmQtbWFnbml0dWRlKSBpcyByZXByZXNlbnRlZCBieSAxOwotICAv
LyAgIDAgICAgICBpcyByZXByZXNlbnRlZCBieSBOOyBhbmQKLSAgLy8gICBOIC0gMSAgKHRoZSBi
aWdnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIHVzaW5nCi0gIC8vICAgICAgICAgIHNpZ24tYW5k
LW1hZ25pdHVkZSkgaXMgcmVwcmVzZW50ZWQgYnkgMk4gLSAxLgotICAvLwotICAvLyBSZWFkIGh0
dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lnbmVkX251bWJlcl9yZXByZXNlbnRhdGlvbnMK
LSAgLy8gZm9yIG1vcmUgZGV0YWlscyBvbiBzaWduZWQgbnVtYmVyIHJlcHJlc2VudGF0aW9ucy4K
LSAgc3RhdGljIEJpdHMgU2lnbkFuZE1hZ25pdHVkZVRvQmlhc2VkKGNvbnN0IEJpdHMgJnNhbSkg
ewotICAgIGlmIChrU2lnbkJpdE1hc2sgJiBzYW0pIHsKLSAgICAgIC8vIHNhbSByZXByZXNlbnRz
IGEgbmVnYXRpdmUgbnVtYmVyLgotICAgICAgcmV0dXJuIH5zYW0gKyAxOwotICAgIH0gZWxzZSB7
Ci0gICAgICAvLyBzYW0gcmVwcmVzZW50cyBhIHBvc2l0aXZlIG51bWJlci4KLSAgICAgIHJldHVy
biBrU2lnbkJpdE1hc2sgfCBzYW07Ci0gICAgfQotICB9Ci0KLSAgLy8gR2l2ZW4gdHdvIG51bWJl
cnMgaW4gdGhlIHNpZ24tYW5kLW1hZ25pdHVkZSByZXByZXNlbnRhdGlvbiwKLSAgLy8gcmV0dXJu
cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGVtIGFzIGFuIHVuc2lnbmVkIG51bWJlci4KLSAgc3Rh
dGljIEJpdHMgRGlzdGFuY2VCZXR3ZWVuU2lnbkFuZE1hZ25pdHVkZU51bWJlcnMoY29uc3QgQml0
cyAmc2FtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQml0cyAmc2FtMikgewotICAgIGNvbnN0IEJpdHMgYmlhc2VkMSA9IFNpZ25B
bmRNYWduaXR1ZGVUb0JpYXNlZChzYW0xKTsKLSAgICBjb25zdCBCaXRzIGJpYXNlZDIgPSBTaWdu
QW5kTWFnbml0dWRlVG9CaWFzZWQoc2FtMik7Ci0gICAgcmV0dXJuIChiaWFzZWQxID49IGJpYXNl
ZDIpID8gKGJpYXNlZDEgLSBiaWFzZWQyKSA6IChiaWFzZWQyIC0gYmlhc2VkMSk7Ci0gIH0KLQot
ICBGbG9hdGluZ1BvaW50VW5pb24gdV87Ci19OwotCi0vLyBXZSBjYW5ub3QgdXNlIHN0ZDo6bnVt
ZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUgbWF4KCkKLS8vIG1h
Y3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCi10ZW1wbGF0ZSA8PgotaW5saW5lIGZsb2F0IEZs
b2F0aW5nUG9pbnQ8ZmxvYXQ+OjpNYXgoKSB7IHJldHVybiBGTFRfTUFYOyB9Ci10ZW1wbGF0ZSA8
PgotaW5saW5lIGRvdWJsZSBGbG9hdGluZ1BvaW50PGRvdWJsZT46Ok1heCgpIHsgcmV0dXJuIERC
TF9NQVg7IH0KLQotLy8gVHlwZWRlZnMgdGhlIGluc3RhbmNlcyBvZiB0aGUgRmxvYXRpbmdQb2lu
dCB0ZW1wbGF0ZSBjbGFzcyB0aGF0IHdlCi0vLyBjYXJlIHRvIHVzZS4KLXR5cGVkZWYgRmxvYXRp
bmdQb2ludDxmbG9hdD4gRmxvYXQ7Ci10eXBlZGVmIEZsb2F0aW5nUG9pbnQ8ZG91YmxlPiBEb3Vi
bGU7Ci0KLS8vIEluIG9yZGVyIHRvIGNhdGNoIHRoZSBtaXN0YWtlIG9mIHB1dHRpbmcgdGVzdHMg
dGhhdCB1c2UgZGlmZmVyZW50Ci0vLyB0ZXN0IGZpeHR1cmUgY2xhc3NlcyBpbiB0aGUgc2FtZSB0
ZXN0IGNhc2UsIHdlIG5lZWQgdG8gYXNzaWduCi0vLyB1bmlxdWUgSURzIHRvIGZpeHR1cmUgY2xh
c3NlcyBhbmQgY29tcGFyZSB0aGVtLiAgVGhlIFR5cGVJZCB0eXBlIGlzCi0vLyB1c2VkIHRvIGhv
bGQgc3VjaCBJRHMuICBUaGUgdXNlciBzaG91bGQgdHJlYXQgVHlwZUlkIGFzIGFuIG9wYXF1ZQot
Ly8gdHlwZTogdGhlIG9ubHkgb3BlcmF0aW9uIGFsbG93ZWQgb24gVHlwZUlkIHZhbHVlcyBpcyB0
byBjb21wYXJlCi0vLyB0aGVtIGZvciBlcXVhbGl0eSB1c2luZyB0aGUgPT0gb3BlcmF0b3IuCi10
eXBlZGVmIGNvbnN0IHZvaWQqIFR5cGVJZDsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBUeXBlSWRIZWxwZXIgewotIHB1YmxpYzoKLSAgLy8gZHVtbXlfIG11c3Qgbm90IGhhdmUgYSBj
b25zdCB0eXBlLiAgT3RoZXJ3aXNlIGFuIG92ZXJseSBlYWdlcgotICAvLyBjb21waWxlciAoZS5n
LiBNU1ZDIDcuMSAmIDguMCkgbWF5IHRyeSB0byBtZXJnZQotICAvLyBUeXBlSWRIZWxwZXI8VD46
OmR1bW15XyBmb3IgZGlmZmVyZW50IFRzIGFzIGFuICJvcHRpbWl6YXRpb24iLgotICBzdGF0aWMg
Ym9vbCBkdW1teV87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWJvb2wgVHlwZUlkSGVs
cGVyPFQ+OjpkdW1teV8gPSBmYWxzZTsKLQotLy8gR2V0VHlwZUlkPFQ+KCkgcmV0dXJucyB0aGUg
SUQgb2YgdHlwZSBULiAgRGlmZmVyZW50IHZhbHVlcyB3aWxsIGJlCi0vLyByZXR1cm5lZCBmb3Ig
ZGlmZmVyZW50IHR5cGVzLiAgQ2FsbGluZyB0aGUgZnVuY3Rpb24gdHdpY2Ugd2l0aCB0aGUKLS8v
IHNhbWUgdHlwZSBhcmd1bWVudCBpcyBndWFyYW50ZWVkIHRvIHJldHVybiB0aGUgc2FtZSBJRC4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotVHlwZUlkIEdldFR5cGVJZCgpIHsKLSAgLy8gVGhlIGNv
bXBpbGVyIGlzIHJlcXVpcmVkIHRvIGFsbG9jYXRlIGEgZGlmZmVyZW50Ci0gIC8vIFR5cGVJZEhl
bHBlcjxUPjo6ZHVtbXlfIHZhcmlhYmxlIGZvciBlYWNoIFQgdXNlZCB0byBpbnN0YW50aWF0ZQot
ICAvLyB0aGUgdGVtcGxhdGUuICBUaGVyZWZvcmUsIHRoZSBhZGRyZXNzIG9mIGR1bW15XyBpcyBn
dWFyYW50ZWVkIHRvCi0gIC8vIGJlIHVuaXF1ZS4KLSAgcmV0dXJuICYoVHlwZUlkSGVscGVyPFQ+
OjpkdW1teV8pOwotfQotCi0vLyBSZXR1cm5zIHRoZSB0eXBlIElEIG9mIDo6dGVzdGluZzo6VGVz
dC4gIEFsd2F5cyBjYWxsIHRoaXMgaW5zdGVhZAotLy8gb2YgR2V0VHlwZUlkPCA6OnRlc3Rpbmc6
OlRlc3Q+KCkgdG8gZ2V0IHRoZSB0eXBlIElEIG9mCi0vLyA6OnRlc3Rpbmc6OlRlc3QsIGFzIHRo
ZSBsYXR0ZXIgbWF5IGdpdmUgdGhlIHdyb25nIHJlc3VsdCBkdWUgdG8gYQotLy8gc3VzcGVjdGVk
IGxpbmtlciBidWcgd2hlbiBjb21waWxpbmcgR29vZ2xlIFRlc3QgYXMgYSBNYWMgT1MgWAotLy8g
ZnJhbWV3b3JrLgotR1RFU1RfQVBJXyBUeXBlSWQgR2V0VGVzdFR5cGVJZCgpOwotCi0vLyBEZWZp
bmVzIHRoZSBhYnN0cmFjdCBmYWN0b3J5IGludGVyZmFjZSB0aGF0IGNyZWF0ZXMgaW5zdGFuY2Vz
Ci0vLyBvZiBhIFRlc3Qgb2JqZWN0LgotY2xhc3MgVGVzdEZhY3RvcnlCYXNlIHsKLSBwdWJsaWM6
Ci0gIHZpcnR1YWwgflRlc3RGYWN0b3J5QmFzZSgpIHt9Ci0KLSAgLy8gQ3JlYXRlcyBhIHRlc3Qg
aW5zdGFuY2UgdG8gcnVuLiBUaGUgaW5zdGFuY2UgaXMgYm90aCBjcmVhdGVkIGFuZCBkZXN0cm95
ZWQKLSAgLy8gd2l0aGluIFRlc3RJbmZvSW1wbDo6UnVuKCkKLSAgdmlydHVhbCBUZXN0KiBDcmVh
dGVUZXN0KCkgPSAwOwotCi0gcHJvdGVjdGVkOgotICBUZXN0RmFjdG9yeUJhc2UoKSB7fQotCi0g
cHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0RmFjdG9yeUJh
c2UpOwotfTsKLQotLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBpbXBsZW1lbnRhdGlvbiBvZiBUZWFz
dEZhY3RvcnlCYXNlIGludGVyZmFjZS4KLS8vIEl0IGlzIHVzZWQgaW4gVEVTVCBhbmQgVEVTVF9G
IG1hY3Jvcy4KLXRlbXBsYXRlIDxjbGFzcyBUZXN0Q2xhc3M+Ci1jbGFzcyBUZXN0RmFjdG9yeUlt
cGwgOiBwdWJsaWMgVGVzdEZhY3RvcnlCYXNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgVGVzdCog
Q3JlYXRlVGVzdCgpIHsgcmV0dXJuIG5ldyBUZXN0Q2xhc3M7IH0KLX07Ci0KLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0KLS8vIFByZWRpY2F0ZS1mb3JtYXR0ZXJzIGZvciBpbXBsZW1lbnRpbmcgdGhl
IEhSRVNVTFQgY2hlY2tpbmcgbWFjcm9zCi0vLyB7QVNTRVJUfEVYUEVDVH1fSFJFU1VMVF97U1VD
Q0VFREVEfEZBSUxFRH0KLS8vIFdlIHBhc3MgYSBsb25nIGluc3RlYWQgb2YgSFJFU1VMVCB0byBh
dm9pZCBjYXVzaW5nIGFuCi0vLyBpbmNsdWRlIGRlcGVuZGVuY3kgZm9yIHRoZSBIUkVTVUxUIHR5
cGUuCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRTdWNjZXNzKGNvbnN0IGNo
YXIqIGV4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgaHIpOyAgLy8gTk9MSU5UCi1HVEVTVF9BUElfIEFzc2VydGlvblJlc3VsdCBJc0hSRVNVTFRG
YWlsdXJlKGNvbnN0IGNoYXIqIGV4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvbmcgaHIpOyAgLy8gTk9MSU5UCi0KLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
V0lORE9XUwotCi0vLyBUeXBlcyBvZiBTZXRVcFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENh
c2UoKSBmdW5jdGlvbnMuCi10eXBlZGVmIHZvaWQgKCpTZXRVcFRlc3RDYXNlRnVuYykoKTsKLXR5
cGVkZWYgdm9pZCAoKlRlYXJEb3duVGVzdENhc2VGdW5jKSgpOwotCi1zdHJ1Y3QgQ29kZUxvY2F0
aW9uIHsKLSAgQ29kZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBhX2ZpbGUsIGludCBhX2xp
bmUpCi0gICAgICA6IGZpbGUoYV9maWxlKSwgbGluZShhX2xpbmUpIHt9Ci0KLSAgc3RkOjpzdHJp
bmcgZmlsZTsKLSAgaW50IGxpbmU7Ci19OwotCi0vLyBDcmVhdGVzIGEgbmV3IFRlc3RJbmZvIG9i
amVjdCBhbmQgcmVnaXN0ZXJzIGl0IHdpdGggR29vZ2xlIFRlc3Q7Ci0vLyByZXR1cm5zIHRoZSBj
cmVhdGVkIG9iamVjdC4KLS8vCi0vLyBBcmd1bWVudHM6Ci0vLwotLy8gICB0ZXN0X2Nhc2VfbmFt
ZTogICBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKLS8vICAgbmFtZTogICAgICAgICAgICAgbmFtZSBv
ZiB0aGUgdGVzdAotLy8gICB0eXBlX3BhcmFtICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdGVzdCdz
IHR5cGUgcGFyYW1ldGVyLCBvciBOVUxMIGlmCi0vLyAgICAgICAgICAgICAgICAgICAgIHRoaXMg
aXMgbm90IGEgdHlwZWQgb3IgYSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdC4KLS8vICAgdmFsdWVf
cGFyYW0gICAgICAgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGVzdCdzIHZhbHVlIHBhcmFt
ZXRlciwKLS8vICAgICAgICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotLy8gICBjb2RlX2xvY2F0aW9uOiAgICBjb2RlIGxvY2F0
aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRlZmluZWQKLS8vICAgZml4dHVyZV9jbGFzc19pZDogSUQg
b2YgdGhlIHRlc3QgZml4dHVyZSBjbGFzcwotLy8gICBzZXRfdXBfdGM6ICAgICAgICBwb2ludGVy
IHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQotLy8gICB0ZWFyX2Rv
d25fdGM6ICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRl
c3QgY2FzZQotLy8gICBmYWN0b3J5OiAgICAgICAgICBwb2ludGVyIHRvIHRoZSBmYWN0b3J5IHRo
YXQgY3JlYXRlcyBhIHRlc3Qgb2JqZWN0LgotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgbmV3
bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0YW5jZSB3aWxsIGFzc3VtZQotLy8gICAgICAgICAgICAg
ICAgICAgICBvd25lcnNoaXAgb2YgdGhlIGZhY3Rvcnkgb2JqZWN0LgotR1RFU1RfQVBJXyBUZXN0
SW5mbyogTWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oCi0gICAgY29uc3QgY2hhciogdGVzdF9jYXNl
X25hbWUsCi0gICAgY29uc3QgY2hhciogbmFtZSwKLSAgICBjb25zdCBjaGFyKiB0eXBlX3BhcmFt
LAotICAgIGNvbnN0IGNoYXIqIHZhbHVlX3BhcmFtLAotICAgIENvZGVMb2NhdGlvbiBjb2RlX2xv
Y2F0aW9uLAotICAgIFR5cGVJZCBmaXh0dXJlX2NsYXNzX2lkLAotICAgIFNldFVwVGVzdENhc2VG
dW5jIHNldF91cF90YywKLSAgICBUZWFyRG93blRlc3RDYXNlRnVuYyB0ZWFyX2Rvd25fdGMsCi0g
ICAgVGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KTsKLQotLy8gSWYgKnBzdHIgc3RhcnRzIHdpdGgg
dGhlIGdpdmVuIHByZWZpeCwgbW9kaWZpZXMgKnBzdHIgdG8gYmUgcmlnaHQKLS8vIHBhc3QgdGhl
IHByZWZpeCBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICpwc3RyIHVuY2hhbmdl
ZAotLy8gYW5kIHJldHVybnMgZmFsc2UuICBOb25lIG9mIHBzdHIsICpwc3RyLCBhbmQgcHJlZml4
IGNhbiBiZSBOVUxMLgotR1RFU1RfQVBJXyBib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJl
Zml4LCBjb25zdCBjaGFyKiogcHN0cik7Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBH
VEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8vIFN0YXRlIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEg
dHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KLWNsYXNzIEdURVNUX0FQSV8gVHlwZWRUZXN0
Q2FzZVBTdGF0ZSB7Ci0gcHVibGljOgotICBUeXBlZFRlc3RDYXNlUFN0YXRlKCkgOiByZWdpc3Rl
cmVkXyhmYWxzZSkge30KLQotICAvLyBBZGRzIHRoZSBnaXZlbiB0ZXN0IG5hbWUgdG8gZGVmaW5l
ZF90ZXN0X25hbWVzXyBhbmQgcmV0dXJuIHRydWUKLSAgLy8gaWYgdGhlIHRlc3QgY2FzZSBoYXNu
J3QgYmVlbiByZWdpc3RlcmVkOyBvdGhlcndpc2UgYWJvcnRzIHRoZQotICAvLyBwcm9ncmFtLgot
ICBib29sIEFkZFRlc3ROYW1lKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFy
KiBjYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9uYW1lKSB7
Ci0gICAgaWYgKHJlZ2lzdGVyZWRfKSB7Ci0gICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIFRlc3Qg
JXMgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSAiCi0gICAgICAgICAgICAgICJSRUdJU1RFUl9UWVBF
RF9URVNUX0NBU0VfUCglcywgLi4uKS5cbiIsCi0gICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2Nh
dGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLCB0ZXN0X25hbWUsIGNhc2VfbmFtZSk7Ci0gICAgICBm
Zmx1c2goc3RkZXJyKTsKLSAgICAgIHBvc2l4OjpBYm9ydCgpOwotICAgIH0KLSAgICByZWdpc3Rl
cmVkX3Rlc3RzXy5pbnNlcnQoCi0gICAgICAgIDo6c3RkOjptYWtlX3BhaXIodGVzdF9uYW1lLCBD
b2RlTG9jYXRpb24oZmlsZSwgbGluZSkpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIGJv
b2wgVGVzdEV4aXN0cyhjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lKSBjb25zdCB7Ci0gICAg
cmV0dXJuIHJlZ2lzdGVyZWRfdGVzdHNfLmNvdW50KHRlc3RfbmFtZSkgPiAwOwotICB9Ci0KLSAg
Y29uc3QgQ29kZUxvY2F0aW9uJiBHZXRDb2RlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RfbmFtZSkgY29uc3QgewotICAgIFJlZ2lzdGVyZWRUZXN0c01hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5maW5kKHRlc3RfbmFtZSk7Ci0gICAgR1RFU1RfQ0hFQ0tf
KGl0ICE9IHJlZ2lzdGVyZWRfdGVzdHNfLmVuZCgpKTsKLSAgICByZXR1cm4gaXQtPnNlY29uZDsK
LSAgfQotCi0gIC8vIFZlcmlmaWVzIHRoYXQgcmVnaXN0ZXJlZF90ZXN0cyBtYXRjaCB0aGUgdGVz
dCBuYW1lcyBpbgotICAvLyBkZWZpbmVkX3Rlc3RfbmFtZXNfOyByZXR1cm5zIHJlZ2lzdGVyZWRf
dGVzdHMgaWYgc3VjY2Vzc2Z1bCwgb3IKLSAgLy8gYWJvcnRzIHRoZSBwcm9ncmFtIG90aGVyd2lz
ZS4KLSAgY29uc3QgY2hhciogVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygKLSAgICAgIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKTsKLQot
IHByaXZhdGU6Ci0gIHR5cGVkZWYgOjpzdGQ6Om1hcDxzdGQ6OnN0cmluZywgQ29kZUxvY2F0aW9u
PiBSZWdpc3RlcmVkVGVzdHNNYXA7Ci0KLSAgYm9vbCByZWdpc3RlcmVkXzsKLSAgUmVnaXN0ZXJl
ZFRlc3RzTWFwIHJlZ2lzdGVyZWRfdGVzdHNfOwotfTsKLQotLy8gU2tpcHMgdG8gdGhlIGZpcnN0
IG5vbi1zcGFjZSBjaGFyIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiAnc3RyJzsKLS8vIHJldHVy
bnMgTlVMTCBpZiBubyBjb21tYSBpcyBmb3VuZCBpbiAnc3RyJy4KLWlubGluZSBjb25zdCBjaGFy
KiBTa2lwQ29tbWEoY29uc3QgY2hhciogc3RyKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbW1hID0gc3Ry
Y2hyKHN0ciwgJywnKTsKLSAgaWYgKGNvbW1hID09IE5VTEwpIHsKLSAgICByZXR1cm4gTlVMTDsK
LSAgfQotICB3aGlsZSAoSXNTcGFjZSgqKCsrY29tbWEpKSkge30KLSAgcmV0dXJuIGNvbW1hOwot
fQotCi0vLyBSZXR1cm5zIHRoZSBwcmVmaXggb2YgJ3N0cicgYmVmb3JlIHRoZSBmaXJzdCBjb21t
YSBpbiBpdDsgcmV0dXJucwotLy8gdGhlIGVudGlyZSBzdHJpbmcgaWYgaXQgY29udGFpbnMgbm8g
Y29tbWEuCi1pbmxpbmUgc3RkOjpzdHJpbmcgR2V0UHJlZml4VW50aWxDb21tYShjb25zdCBjaGFy
KiBzdHIpIHsKLSAgY29uc3QgY2hhciogY29tbWEgPSBzdHJjaHIoc3RyLCAnLCcpOwotICByZXR1
cm4gY29tbWEgPT0gTlVMTCA/IHN0ciA6IHN0ZDo6c3RyaW5nKHN0ciwgY29tbWEpOwotfQotCi0v
LyBTcGxpdHMgYSBnaXZlbiBzdHJpbmcgb24gYSBnaXZlbiBkZWxpbWl0ZXIsIHBvcHVsYXRpbmcg
YSBnaXZlbgotLy8gdmVjdG9yIHdpdGggdGhlIGZpZWxkcy4KLXZvaWQgU3BsaXRTdHJpbmcoY29u
c3QgOjpzdGQ6OnN0cmluZyYgc3RyLCBjaGFyIGRlbGltaXRlciwKLSAgICAgICAgICAgICAgICAg
OjpzdGQ6OnZlY3RvcjwgOjpzdGQ6OnN0cmluZz4qIGRlc3QpOwotCi0vLyBUeXBlUGFyYW1ldGVy
aXplZFRlc3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXM+OjpSZWdpc3RlcigpCi0vLyByZWdpc3Rl
cnMgYSBsaXN0IG9mIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aXRoIEdvb2dsZSBUZXN0LiAg
VGhlCi0vLyByZXR1cm4gdmFsdWUgaXMgaW5zaWduaWZpY2FudCAtIHdlIGp1c3QgbmVlZCB0byBy
ZXR1cm4gc29tZXRoaW5nCi0vLyBzdWNoIHRoYXQgd2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBp
biBhIG5hbWVzcGFjZSBzY29wZS4KLS8vCi0vLyBJbXBsZW1lbnRhdGlvbiBub3RlOiBUaGUgR1RF
U1RfVEVNUExBVEVfIG1hY3JvIGRlY2xhcmVzIGEgdGVtcGxhdGUKLS8vIHRlbXBsYXRlIHBhcmFt
ZXRlci4gIEl0J3MgZGVmaW5lZCBpbiBndGVzdC10eXBlLXV0aWwuaC4KLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gRml4dHVyZSwgY2xhc3MgVGVzdFNlbCwgdHlwZW5hbWUgVHlwZXM+Ci1jbGFz
cyBUeXBlUGFyYW1ldGVyaXplZFRlc3QgewotIHB1YmxpYzoKLSAgLy8gJ2luZGV4JyBpcyB0aGUg
aW5kZXggb2YgdGhlIHRlc3QgaW4gdGhlIHR5cGUgbGlzdCAnVHlwZXMnCi0gIC8vIHNwZWNpZmll
ZCBpbiBJTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChQcmVmaXgsIFRlc3RDYXNlLAotICAv
LyBUeXBlcykuICBWYWxpZCB2YWx1ZXMgZm9yICdpbmRleCcgYXJlIFswLCBOIC0gMV0gd2hlcmUg
TiBpcyB0aGUKLSAgLy8gbGVuZ3RoIG9mIFR5cGVzLgotICBzdGF0aWMgYm9vbCBSZWdpc3Rlcihj
b25zdCBjaGFyKiBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBj
b2RlX2xvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjYXNlX25h
bWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBp
bmRleCkgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM6OkhlYWQgVHlwZTsKLSAgICB0eXBl
ZGVmIEZpeHR1cmU8VHlwZT4gRml4dHVyZUNsYXNzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgR1RF
U1RfQklORF8oVGVzdFNlbCwgVHlwZSkgVGVzdENsYXNzOwotCi0gICAgLy8gRmlyc3QsIHJlZ2lz
dGVycyB0aGUgZmlyc3QgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgaW4gdGhlIHR5cGUKLSAgICAv
LyBsaXN0LgotICAgIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAgICAgICAoc3RkOjpzdHJp
bmcocHJlZml4KSArIChwcmVmaXhbMF0gPT0gJ1wwJyA/ICIiIDogIi8iKSArIGNhc2VfbmFtZSAr
ICIvIgotICAgICAgICAgKyBTdHJlYW1hYmxlVG9TdHJpbmcoaW5kZXgpKS5jX3N0cigpLAotICAg
ICAgICBTdHJpcFRyYWlsaW5nU3BhY2VzKEdldFByZWZpeFVudGlsQ29tbWEodGVzdF9uYW1lcykp
LmNfc3RyKCksCi0gICAgICAgIEdldFR5cGVOYW1lPFR5cGU+KCkuY19zdHIoKSwKLSAgICAgICAg
TlVMTCwgIC8vIE5vIHZhbHVlIHBhcmFtZXRlci4KLSAgICAgICAgY29kZV9sb2NhdGlvbiwKLSAg
ICAgICAgR2V0VHlwZUlkPEZpeHR1cmVDbGFzcz4oKSwKLSAgICAgICAgVGVzdENsYXNzOjpTZXRV
cFRlc3RDYXNlLAotICAgICAgICBUZXN0Q2xhc3M6OlRlYXJEb3duVGVzdENhc2UsCi0gICAgICAg
IG5ldyBUZXN0RmFjdG9yeUltcGw8VGVzdENsYXNzPik7Ci0KLSAgICAvLyBOZXh0LCByZWN1cnNl
cyAoYXQgY29tcGlsZSB0aW1lKSB3aXRoIHRoZSB0YWlsIG9mIHRoZSB0eXBlIGxpc3QuCi0gICAg
cmV0dXJuIFR5cGVQYXJhbWV0ZXJpemVkVGVzdDxGaXh0dXJlLCBUZXN0U2VsLCB0eXBlbmFtZSBU
eXBlczo6VGFpbD4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVmaXgsIGNvZGVfbG9jYXRpb24sIGNh
c2VfbmFtZSwgdGVzdF9uYW1lcywgaW5kZXggKyAxKTsKLSAgfQotfTsKLQotLy8gVGhlIGJhc2Ug
Y2FzZSBmb3IgdGhlIGNvbXBpbGUgdGltZSByZWN1cnNpb24uCi10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIEZpeHR1cmUsIGNsYXNzIFRlc3RTZWw+Ci1jbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRl
c3Q8Rml4dHVyZSwgVGVzdFNlbCwgVHlwZXMwPiB7Ci0gcHVibGljOgotICBzdGF0aWMgYm9vbCBS
ZWdpc3Rlcihjb25zdCBjaGFyKiAvKnByZWZpeCovLCBDb2RlTG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8qdGVz
dF9uYW1lcyovLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgLyppbmRleCovKSB7Ci0gICAg
cmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLS8vIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2U8Rml4
dHVyZSwgVGVzdHMsIFR5cGVzPjo6UmVnaXN0ZXIoKQotLy8gcmVnaXN0ZXJzICphbGwgY29tYmlu
YXRpb25zKiBvZiAnVGVzdHMnIGFuZCAnVHlwZXMnIHdpdGggR29vZ2xlCi0vLyBUZXN0LiAgVGhl
IHJldHVybiB2YWx1ZSBpcyBpbnNpZ25pZmljYW50IC0gd2UganVzdCBuZWVkIHRvIHJldHVybgot
Ly8gc29tZXRoaW5nIHN1Y2ggdGhhdCB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGluIGEgbmFt
ZXNwYWNlIHNjb3BlLgotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBGaXh0dXJlLCB0eXBlbmFt
ZSBUZXN0cywgdHlwZW5hbWUgVHlwZXM+Ci1jbGFzcyBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNl
IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBib29sIFJlZ2lzdGVyKGNvbnN0IGNoYXIqIHByZWZpeCwg
Q29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFR5cGVkVGVzdENhc2VQU3RhdGUqIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBjYXNlX25hbWUsIGNvbnN0IGNoYXIqIHRlc3RfbmFtZXMpIHsKLSAgICBzdGQ6OnN0
cmluZyB0ZXN0X25hbWUgPSBTdHJpcFRyYWlsaW5nU3BhY2VzKAotICAgICAgICBHZXRQcmVmaXhV
bnRpbENvbW1hKHRlc3RfbmFtZXMpKTsKLSAgICBpZiAoIXN0YXRlLT5UZXN0RXhpc3RzKHRlc3Rf
bmFtZSkpIHsKLSAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBjb2RlIGxvY2F0
aW9uIGZvciB0ZXN0ICVzLiVzIGF0ICVzLiIsCi0gICAgICAgICAgICAgIGNhc2VfbmFtZSwgdGVz
dF9uYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgIEZvcm1hdEZpbGVMb2NhdGlvbihjb2RlX2xv
Y2F0aW9uLmZpbGUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVfbG9jYXRpb24ubGluZSkuY19zdHIoKSk7Ci0gICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICAg
IHBvc2l4OjpBYm9ydCgpOwotICAgIH0KLSAgICBjb25zdCBDb2RlTG9jYXRpb24mIHRlc3RfbG9j
YXRpb24gPSBzdGF0ZS0+R2V0Q29kZUxvY2F0aW9uKHRlc3RfbmFtZSk7Ci0KLSAgICB0eXBlZGVm
IHR5cGVuYW1lIFRlc3RzOjpIZWFkIEhlYWQ7Ci0KLSAgICAvLyBGaXJzdCwgcmVnaXN0ZXIgdGhl
IGZpcnN0IHRlc3QgaW4gJ1Rlc3QnIGZvciBlYWNoIHR5cGUgaW4gJ1R5cGVzJy4KLSAgICBUeXBl
UGFyYW1ldGVyaXplZFRlc3Q8Rml4dHVyZSwgSGVhZCwgVHlwZXM+OjpSZWdpc3RlcigKLSAgICAg
ICAgcHJlZml4LCB0ZXN0X2xvY2F0aW9uLCBjYXNlX25hbWUsIHRlc3RfbmFtZXMsIDApOwotCi0g
ICAgLy8gTmV4dCwgcmVjdXJzZXMgKGF0IGNvbXBpbGUgdGltZSkgd2l0aCB0aGUgdGFpbCBvZiB0
aGUgdGVzdCBsaXN0LgotICAgIHJldHVybiBUeXBlUGFyYW1ldGVyaXplZFRlc3RDYXNlPEZpeHR1
cmUsIHR5cGVuYW1lIFRlc3RzOjpUYWlsLCBUeXBlcz4KLSAgICAgICAgOjpSZWdpc3RlcihwcmVm
aXgsIGNvZGVfbG9jYXRpb24sIHN0YXRlLAotICAgICAgICAgICAgICAgICAgIGNhc2VfbmFtZSwg
U2tpcENvbW1hKHRlc3RfbmFtZXMpKTsKLSAgfQotfTsKLQotLy8gVGhlIGJhc2UgY2FzZSBmb3Ig
dGhlIGNvbXBpbGUgdGltZSByZWN1cnNpb24uCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIEZp
eHR1cmUsIHR5cGVuYW1lIFR5cGVzPgotY2xhc3MgVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZTxG
aXh0dXJlLCBUZW1wbGF0ZXMwLCBUeXBlcz4gewotIHB1YmxpYzoKLSAgc3RhdGljIGJvb2wgUmVn
aXN0ZXIoY29uc3QgY2hhciogLypwcmVmaXgqLywgQ29kZUxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUeXBlZFRlc3RDYXNlUFN0YXRlKiAvKnN0YXRlKi8sCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qY2FzZV9uYW1lKi8sIGNvbnN0IGNoYXIqIC8q
dGVzdF9uYW1lcyovKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0vLyBSZXR1
cm5zIHRoZSBjdXJyZW50IE9TIHN0YWNrIHRyYWNlIGFzIGFuIHN0ZDo6c3RyaW5nLgotLy8KLS8v
IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQgaXMgc3Bl
Y2lmaWVkIGJ5Ci0vLyB0aGUgZ3Rlc3Rfc3RhY2tfdHJhY2VfZGVwdGggZmxhZy4gIFRoZSBza2lw
X2NvdW50IHBhcmFtZXRlcgotLy8gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdG9wIGZyYW1lcyB0
byBiZSBza2lwcGVkLCB3aGljaCBkb2Vzbid0Ci0vLyBjb3VudCBhZ2FpbnN0IHRoZSBudW1iZXIg
b2YgZnJhbWVzIHRvIGJlIGluY2x1ZGVkLgotLy8KLS8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBj
YWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxscwotLy8gR2V0Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcCguLi4sIDEpLCBGb28oKSB3aWxsIGJlIGluY2x1ZGVkIGluCi0vLyB0aGUgdHJh
Y2UgYnV0IEJhcigpIGFuZCBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3Qu
Ci1HVEVTVF9BUElfIHN0ZDo6c3RyaW5nIEdldEN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3Ao
Ci0gICAgVW5pdFRlc3QqIHVuaXRfdGVzdCwgaW50IHNraXBfY291bnQpOwotCi0vLyBIZWxwZXJz
IGZvciBzdXBwcmVzc2luZyB3YXJuaW5ncyBvbiB1bnJlYWNoYWJsZSBjb2RlIG9yIGNvbnN0YW50
Ci0vLyBjb25kaXRpb24uCi0KLS8vIEFsd2F5cyByZXR1cm5zIHRydWUuCi1HVEVTVF9BUElfIGJv
b2wgQWx3YXlzVHJ1ZSgpOwotCi0vLyBBbHdheXMgcmV0dXJucyBmYWxzZS4KLWlubGluZSBib29s
IEFsd2F5c0ZhbHNlKCkgeyByZXR1cm4gIUFsd2F5c1RydWUoKTsgfQotCi0vLyBIZWxwZXIgZm9y
IHN1cHByZXNzaW5nIGZhbHNlIHdhcm5pbmcgZnJvbSBDbGFuZyBvbiBhIGNvbnN0IGNoYXIqCi0v
LyB2YXJpYWJsZSBkZWNsYXJlZCBpbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYWx3YXlzIGJl
aW5nIE5VTEwgaW4KLS8vIHRoZSBlbHNlIGJyYW5jaC4KLXN0cnVjdCBHVEVTVF9BUElfIENvbnN0
Q2hhclB0ciB7Ci0gIENvbnN0Q2hhclB0cihjb25zdCBjaGFyKiBzdHIpIDogdmFsdWUoc3RyKSB7
fQotICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICBjb25zdCBjaGFy
KiB2YWx1ZTsKLX07Ci0KLS8vIEEgc2ltcGxlIExpbmVhciBDb25ncnVlbnRpYWwgR2VuZXJhdG9y
IGZvciBnZW5lcmF0aW5nIHJhbmRvbQotLy8gbnVtYmVycyB3aXRoIGEgdW5pZm9ybSBkaXN0cmli
dXRpb24uICBVbmxpa2UgcmFuZCgpIGFuZCBzcmFuZCgpLCBpdAotLy8gZG9lc24ndCB1c2UgZ2xv
YmFsIHN0YXRlIChhbmQgdGhlcmVmb3JlIGNhbid0IGludGVyZmVyZSB3aXRoIHVzZXIKLS8vIGNv
ZGUpLiAgVW5saWtlIHJhbmRfcigpLCBpdCdzIHBvcnRhYmxlLiAgQW4gTENHIGlzbid0IHZlcnkg
cmFuZG9tLAotLy8gYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLWNsYXNz
IEdURVNUX0FQSV8gUmFuZG9tIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdCBVSW50MzIga01h
eFJhbmdlID0gMXUgPDwgMzE7Ci0KLSAgZXhwbGljaXQgUmFuZG9tKFVJbnQzMiBzZWVkKSA6IHN0
YXRlXyhzZWVkKSB7fQotCi0gIHZvaWQgUmVzZWVkKFVJbnQzMiBzZWVkKSB7IHN0YXRlXyA9IHNl
ZWQ7IH0KLQotICAvLyBHZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIGZyb20gWzAsIHJhbmdlKS4g
IENyYXNoZXMgaWYgJ3JhbmdlJyBpcwotICAvLyAwIG9yIGdyZWF0ZXIgdGhhbiBrTWF4UmFuZ2Uu
Ci0gIFVJbnQzMiBHZW5lcmF0ZShVSW50MzIgcmFuZ2UpOwotCi0gcHJpdmF0ZToKLSAgVUludDMy
IHN0YXRlXzsKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhSYW5kb20pOwotfTsK
LQotLy8gRGVmaW5pbmcgYSB2YXJpYWJsZSBvZiB0eXBlIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PFQxLCBUMj4gd2lsbCBjYXVzZSBhCi0vLyBjb21waWxlciBlcnJvciBpZmYgVDEgYW5kIFQyIGFy
ZSBkaWZmZXJlbnQgdHlwZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgot
c3RydWN0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxULCBUPiB7Ci19OwotCi0vLyBSZW1vdmVz
IHRoZSByZWZlcmVuY2UgZnJvbSBhIHR5cGUgaWYgaXQgaXMgYSByZWZlcmVuY2UgdHlwZSwKLS8v
IG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcwotLy8g
dHIxOjpyZW1vdmVfcmVmZXJlbmNlLCB3aGljaCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBSZW1vdmVSZWZlcmVuY2UgeyB0eXBlZGVm
IFQgdHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVt
b3ZlUmVmZXJlbmNlPFQmPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgLy8gTk9MSU5UCi0KLS8vIEEg
aGFuZHkgd3JhcHBlciBhcm91bmQgUmVtb3ZlUmVmZXJlbmNlIHRoYXQgd29ya3Mgd2hlbiB0aGUg
YXJndW1lbnQKLS8vIFQgZGVwZW5kcyBvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgotI2RlZmluZSBH
VEVTVF9SRU1PVkVfUkVGRVJFTkNFXyhUKSBcCi0gICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRl
cm5hbDo6UmVtb3ZlUmVmZXJlbmNlPFQ+Ojp0eXBlCi0KLS8vIFJlbW92ZXMgY29uc3QgZnJvbSBh
IHR5cGUgaWYgaXQgaXMgYSBjb25zdCB0eXBlLCBvdGhlcndpc2UgbGVhdmVzCi0vLyBpdCB1bmNo
YW5nZWQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRyMTo6cmVtb3ZlX2NvbnN0LCB3aGljaCBpcyBu
b3QKLS8vIHdpZGVseSBhdmFpbGFibGUgeWV0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgUmVtb3ZlQ29uc3QgeyB0eXBlZGVmIFQgdHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgUmVtb3ZlQ29uc3Q8Y29uc3QgVD4geyB0eXBlZGVmIFQgdHlw
ZTsgfTsgIC8vIE5PTElOVAotCi0vLyBNU1ZDIDguMCwgU3VuIEMrKywgYW5kIElCTSBYTCBDKysg
aGF2ZSBhIGJ1ZyB3aGljaCBjYXVzZXMgdGhlIGFib3ZlCi0vLyBkZWZpbml0aW9uIHRvIGZhaWwg
dG8gcmVtb3ZlIHRoZSBjb25zdCBpbiAnY29uc3QgaW50WzNdJyBhbmQgJ2NvbnN0Ci0vLyBjaGFy
WzNdWzRdJy4gIFRoZSBmb2xsb3dpbmcgc3BlY2lhbGl6YXRpb24gd29ya3MgYXJvdW5kIHRoZSBi
dWcuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1zdHJ1Y3QgUmVtb3ZlQ29uc3Q8
Y29uc3QgVFtOXT4gewotICB0eXBlZGVmIHR5cGVuYW1lIFJlbW92ZUNvbnN0PFQ+Ojp0eXBlIHR5
cGVbTl07Ci19OwotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxNDAwCi0v
LyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpYWxpemF0aW9uIHRoYXQgYWxsb3dzIFZDKysgNy4xIHRv
IHJlbW92ZSBjb25zdCBpbgotLy8gJ2NvbnN0IGludFszXSBhbmQgJ2NvbnN0IGludFszXVs0XScu
ICBIb3dldmVyLCBpdCBjYXVzZXMgdHJvdWJsZSB3aXRoIEdDQwotLy8gYW5kIHRodXMgbmVlZHMg
dG8gYmUgY29uZGl0aW9uYWxseSBjb21waWxlZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXpl
X3QgTj4KLXN0cnVjdCBSZW1vdmVDb25zdDxUW05dPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgUmVt
b3ZlQ29uc3Q8VD46OnR5cGUgdHlwZVtOXTsKLX07Ci0jZW5kaWYKLQotLy8gQSBoYW5keSB3cmFw
cGVyIGFyb3VuZCBSZW1vdmVDb25zdCB0aGF0IHdvcmtzIHdoZW4gdGhlIGFyZ3VtZW50Ci0vLyBU
IGRlcGVuZHMgb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KLSNkZWZpbmUgR1RFU1RfUkVNT1ZFX0NP
TlNUXyhUKSBcCi0gICAgdHlwZW5hbWUgOjp0ZXN0aW5nOjppbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8
VD46OnR5cGUKLQotLy8gVHVybnMgY29uc3QgVSYsIFUmLCBjb25zdCBVLCBhbmQgVSBhbGwgaW50
byBVLgotI2RlZmluZSBHVEVTVF9SRU1PVkVfUkVGRVJFTkNFX0FORF9DT05TVF8oVCkgXAotICAg
IEdURVNUX1JFTU9WRV9DT05TVF8oR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVCkpCi0KLS8vIEFk
ZHMgcmVmZXJlbmNlIHRvIGEgdHlwZSBpZiBpdCBpcyBub3QgYSByZWZlcmVuY2UgdHlwZSwKLS8v
IG90aGVyd2lzZSBsZWF2ZXMgaXQgdW5jaGFuZ2VkLiAgVGhpcyBpcyB0aGUgc2FtZSBhcwotLy8g
dHIxOjphZGRfcmVmZXJlbmNlLCB3aGljaCBpcyBub3Qgd2lkZWx5IGF2YWlsYWJsZSB5ZXQuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBZGRSZWZlcmVuY2UgeyB0eXBlZGVmIFQmIHR5
cGU7IH07ICAvLyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFkZFJlZmVy
ZW5jZTxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3
cmFwcGVyIGFyb3VuZCBBZGRSZWZlcmVuY2UgdGhhdCB3b3JrcyB3aGVuIHRoZSBhcmd1bWVudCBU
Ci0vLyBkZXBlbmRzIG9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCi0jZGVmaW5lIEdURVNUX0FERF9S
RUZFUkVOQ0VfKFQpIFwKLSAgICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpBZGRSZWZl
cmVuY2U8VD46OnR5cGUKLQotLy8gQWRkcyBhIHJlZmVyZW5jZSB0byBjb25zdCBvbiB0b3Agb2Yg
VCBhcyBuZWNlc3NhcnkuICBGb3IgZXhhbXBsZSwKLS8vIGl0IHRyYW5zZm9ybXMKLS8vCi0vLyAg
IGNoYXIgICAgICAgICA9PT4gY29uc3QgY2hhciYKLS8vICAgY29uc3QgY2hhciAgID09PiBjb25z
dCBjaGFyJgotLy8gICBjaGFyJiAgICAgICAgPT0+IGNvbnN0IGNoYXImCi0vLyAgIGNvbnN0IGNo
YXImICA9PT4gY29uc3QgY2hhciYKLS8vCi0vLyBUaGUgYXJndW1lbnQgVCBtdXN0IGRlcGVuZCBv
biBzb21lIHRlbXBsYXRlIHBhcmFtZXRlcnMuCi0jZGVmaW5lIEdURVNUX1JFRkVSRU5DRV9UT19D
T05TVF8oVCkgXAotICAgIEdURVNUX0FERF9SRUZFUkVOQ0VfKGNvbnN0IEdURVNUX1JFTU9WRV9S
RUZFUkVOQ0VfKFQpKQotCi0vLyBJbXBsaWNpdGx5Q29udmVydGlibGU8RnJvbSwgVG8+Ojp2YWx1
ZSBpcyBhIGNvbXBpbGUtdGltZSBib29sCi0vLyBjb25zdGFudCB0aGF0J3MgdHJ1ZSBpZmYgdHlw
ZSBGcm9tIGNhbiBiZSBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0bwotLy8gdHlwZSBUby4KLXRlbXBs
YXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLWNsYXNzIEltcGxpY2l0bHlDb252ZXJ0
aWJsZSB7Ci0gcHJpdmF0ZToKLSAgLy8gV2UgbmVlZCB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5j
dGlvbnMgb25seSBmb3IgdGhlaXIgdHlwZXMuCi0gIC8vIFRoZXkgaGF2ZSBubyBpbXBsZW1lbnRh
dGlvbnMuCi0KLSAgLy8gTWFrZUZyb20oKSBpcyBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgaXMg
RnJvbS4gIFdlIGNhbm5vdCBzaW1wbHkKLSAgLy8gdXNlIEZyb20oKSwgYXMgdGhlIHR5cGUgRnJv
bSBtYXkgbm90IGhhdmUgYSBwdWJsaWMgZGVmYXVsdAotICAvLyBjb25zdHJ1Y3Rvci4KLSAgc3Rh
dGljIHR5cGVuYW1lIEFkZFJlZmVyZW5jZTxGcm9tPjo6dHlwZSBNYWtlRnJvbSgpOwotCi0gIC8v
IFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92ZXJsb2FkZWQuICBHaXZlbiBhbiBleHByZXNzaW9u
Ci0gIC8vIEhlbHBlcih4KSwgdGhlIGNvbXBpbGVyIHdpbGwgcGljayB0aGUgZmlyc3QgdmVyc2lv
biBpZiB4IGNhbiBiZQotICAvLyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB0eXBlIFRvOyBvdGhl
cndpc2UgaXQgd2lsbCBwaWNrIHRoZQotICAvLyBzZWNvbmQgdmVyc2lvbi4KLSAgLy8KLSAgLy8g
VGhlIGZpcnN0IHZlcnNpb24gcmV0dXJucyBhIHZhbHVlIG9mIHNpemUgMSwgYW5kIHRoZSBzZWNv
bmQKLSAgLy8gdmVyc2lvbiByZXR1cm5zIGEgdmFsdWUgb2Ygc2l6ZSAyLiAgVGhlcmVmb3JlLCBi
eSBjaGVja2luZyB0aGUKLSAgLy8gc2l6ZSBvZiBIZWxwZXIoeCksIHdoaWNoIGNhbiBiZSBkb25l
IGF0IGNvbXBpbGUgdGltZSwgd2UgY2FuIHRlbGwKLSAgLy8gd2hpY2ggdmVyc2lvbiBvZiBIZWxw
ZXIoKSBpcyB1c2VkLCBhbmQgaGVuY2Ugd2hldGhlciB4IGNhbiBiZQotICAvLyBpbXBsaWNpdGx5
IGNvbnZlcnRlZCB0byB0eXBlIFRvLgotICBzdGF0aWMgY2hhciBIZWxwZXIoVG8pOwotICBzdGF0
aWMgY2hhciAoJkhlbHBlciguLi4pKVsyXTsgIC8vIE5PTElOVAotCi0gIC8vIFdlIGhhdmUgdG8g
cHV0IHRoZSAncHVibGljJyBzZWN0aW9uIGFmdGVyIHRoZSAncHJpdmF0ZScgc2VjdGlvbiwKLSAg
Ly8gb3IgTVNWQyByZWZ1c2VzIHRvIGNvbXBpbGUgdGhlIGNvZGUuCi0gcHVibGljOgotI2lmIGRl
ZmluZWQoX19CT1JMQU5EQ19fKQotICAvLyBDKytCdWlsZGVyIGNhbm5vdCB1c2UgbWVtYmVyIG92
ZXJsb2FkIHJlc29sdXRpb24gZHVyaW5nIHRlbXBsYXRlCi0gIC8vIGluc3RhbnRpYXRpb24uICBU
aGUgc2ltcGxlc3Qgd29ya2Fyb3VuZCBpcyB0byB1c2UgaXRzIEMrKzB4IHR5cGUgdHJhaXRzCi0g
IC8vIGZ1bmN0aW9ucyAoQysrQnVpbGRlciAyMDA5IGFuZCBhYm92ZSBvbmx5KS4KLSAgc3RhdGlj
IGNvbnN0IGJvb2wgdmFsdWUgPSBfX2lzX2NvbnZlcnRpYmxlKEZyb20sIFRvKTsKLSNlbHNlCi0g
IC8vIE1TVkMgd2FybnMgYWJvdXQgaW1wbGljaXRseSBjb252ZXJ0aW5nIGZyb20gZG91YmxlIHRv
IGludCBmb3IKLSAgLy8gcG9zc2libGUgbG9zcyBvZiBkYXRhLCBzbyB3ZSBuZWVkIHRvIHRlbXBv
cmFyaWx5IGRpc2FibGUgdGhlCi0gIC8vIHdhcm5pbmcuCi0gIEdURVNUX0RJU0FCTEVfTVNDX1dB
Uk5JTkdTX1BVU0hfKDQyNDQpCi0gIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0KLSAgICAgIHNp
emVvZihIZWxwZXIoSW1wbGljaXRseUNvbnZlcnRpYmxlOjpNYWtlRnJvbSgpKSkgPT0gMTsKLSAg
R1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi0jZW5kaWYgIC8vIF9fQk9STEFORENf
XwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLWNvbnN0IGJvb2wg
SW1wbGljaXRseUNvbnZlcnRpYmxlPEZyb20sIFRvPjo6dmFsdWU7Ci0KLS8vIElzQVByb3RvY29s
TWVzc2FnZTxUPjo6dmFsdWUgaXMgYSBjb21waWxlLXRpbWUgYm9vbCBjb25zdGFudCB0aGF0J3MK
LS8vIHRydWUgaWZmIFQgaXMgdHlwZSBQcm90b2NvbE1lc3NhZ2UsIHByb3RvMjo6TWVzc2FnZSwg
b3IgYSBzdWJjbGFzcwotLy8gb2YgdGhvc2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBJc0FQcm90b2NvbE1lc3NhZ2UKLSAgICA6IHB1YmxpYyBib29sX2NvbnN0YW50PAotICBJbXBs
aWNpdGx5Q29udmVydGlibGU8Y29uc3QgVCosIGNvbnN0IDo6UHJvdG9jb2xNZXNzYWdlKj46OnZh
bHVlIHx8Ci0gIEltcGxpY2l0bHlDb252ZXJ0aWJsZTxjb25zdCBUKiwgY29uc3QgOjpwcm90bzI6
Ok1lc3NhZ2UqPjo6dmFsdWU+IHsKLX07Ci0KLS8vIFdoZW4gdGhlIGNvbXBpbGVyIHNlZXMgZXhw
cmVzc2lvbiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCksIGlmIEMgaXMgYW4KLS8vIFNUTC1zdHlsZSBj
b250YWluZXIgY2xhc3MsIHRoZSBmaXJzdCBvdmVybG9hZCBvZiBJc0NvbnRhaW5lclRlc3QKLS8v
IHdpbGwgYmUgdmlhYmxlIChzaW5jZSBib3RoIEM6Oml0ZXJhdG9yKiBhbmQgQzo6Y29uc3RfaXRl
cmF0b3IqIGFyZQotLy8gdmFsaWQgdHlwZXMgYW5kIE5VTEwgY2FuIGJlIGltcGxpY2l0bHkgY29u
dmVydGVkIHRvIHRoZW0pLiAgSXQgd2lsbAotLy8gYmUgcGlja2VkIG92ZXIgdGhlIHNlY29uZCBv
dmVybG9hZCBhcyAnaW50JyBpcyBhIHBlcmZlY3QgbWF0Y2ggZm9yCi0vLyB0aGUgdHlwZSBvZiBh
cmd1bWVudCAwLiAgSWYgQzo6aXRlcmF0b3Igb3IgQzo6Y29uc3RfaXRlcmF0b3IgaXMgbm90Ci0v
LyBhIHZhbGlkIHR5cGUsIHRoZSBmaXJzdCBvdmVybG9hZCBpcyBub3QgdmlhYmxlLCBhbmQgdGhl
IHNlY29uZAotLy8gb3ZlcmxvYWQgd2lsbCBiZSBwaWNrZWQuICBUaGVyZWZvcmUsIHdlIGNhbiBk
ZXRlcm1pbmUgd2hldGhlciBDIGlzCi0vLyBhIGNvbnRhaW5lciBjbGFzcyBieSBjaGVja2luZyB0
aGUgdHlwZSBvZiBJc0NvbnRhaW5lclRlc3Q8Qz4oMCkuCi0vLyBUaGUgdmFsdWUgb2YgdGhlIGV4
cHJlc3Npb24gaXMgaW5zaWduaWZpY2FudC4KLS8vCi0vLyBOb3RlIHRoYXQgd2UgbG9vayBmb3Ig
Ym90aCBDOjppdGVyYXRvciBhbmQgQzo6Y29uc3RfaXRlcmF0b3IuICBUaGUKLS8vIHJlYXNvbiBp
cyB0aGF0IEMrKyBpbmplY3RzIHRoZSBuYW1lIG9mIGEgY2xhc3MgYXMgYSBtZW1iZXIgb2YgdGhl
Ci0vLyBjbGFzcyBpdHNlbGYgKGUuZy4geW91IGNhbiByZWZlciB0byBjbGFzcyBpdGVyYXRvciBh
cyBlaXRoZXIKLS8vICdpdGVyYXRvcicgb3IgJ2l0ZXJhdG9yOjppdGVyYXRvcicpLiAgSWYgd2Ug
bG9vayBmb3IgQzo6aXRlcmF0b3IKLS8vIG9ubHksIGZvciBleGFtcGxlLCB3ZSB3b3VsZCBtaXN0
YWtlbmx5IHRoaW5rIHRoYXQgYSBjbGFzcyBuYW1lZAotLy8gaXRlcmF0b3IgaXMgYW4gU1RMIGNv
bnRhaW5lci4KLS8vCi0vLyBBbHNvIG5vdGUgdGhhdCB0aGUgc2ltcGxlciBhcHByb2FjaCBvZiBv
dmVybG9hZGluZwotLy8gSXNDb250YWluZXJUZXN0KHR5cGVuYW1lIEM6OmNvbnN0X2l0ZXJhdG9y
KikgYW5kCi0vLyBJc0NvbnRhaW5lclRlc3QoLi4uKSBkb2Vzbid0IHdvcmsgd2l0aCBWaXN1YWwg
QWdlIEMrKyBhbmQgU3VuIEMrKy4KLXR5cGVkZWYgaW50IElzQ29udGFpbmVyOwotdGVtcGxhdGUg
PGNsYXNzIEM+Ci1Jc0NvbnRhaW5lciBJc0NvbnRhaW5lclRlc3QoaW50IC8qIGR1bW15ICovLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIEM6Oml0ZXJhdG9yKiAvKiBpdCAq
LyA9IE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQzo6Y29uc3Rf
aXRlcmF0b3IqIC8qIGNvbnN0X2l0ICovID0gTlVMTCkgewotICByZXR1cm4gMDsKLX0KLQotdHlw
ZWRlZiBjaGFyIElzTm90Q29udGFpbmVyOwotdGVtcGxhdGUgPGNsYXNzIEM+Ci1Jc05vdENvbnRh
aW5lciBJc0NvbnRhaW5lclRlc3QobG9uZyAvKiBkdW1teSAqLykgeyByZXR1cm4gJ1wwJzsgfQot
Ci0vLyBFbmFibGVJZjxjb25kaXRpb24+Ojp0eXBlIGlzIHZvaWQgd2hlbiAnQ29uZCcgaXMgdHJ1
ZSwgYW5kCi0vLyB1bmRlZmluZWQgd2hlbiAnQ29uZCcgaXMgZmFsc2UuICBUbyB1c2UgU0ZJTkFF
IHRvIG1ha2UgYSBmdW5jdGlvbgotLy8gb3ZlcmxvYWQgb25seSBhcHBseSB3aGVuIGEgcGFydGlj
dWxhciBleHByZXNzaW9uIGlzIHRydWUsIGFkZAotLy8gInR5cGVuYW1lIEVuYWJsZUlmPGV4cHJl
c3Npb24+Ojp0eXBlKiA9IDAiIGFzIHRoZSBsYXN0IHBhcmFtZXRlci4KLXRlbXBsYXRlPGJvb2w+
IHN0cnVjdCBFbmFibGVJZjsKLXRlbXBsYXRlPD4gc3RydWN0IEVuYWJsZUlmPHRydWU+IHsgdHlw
ZWRlZiB2b2lkIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8gVXRpbGl0aWVzIGZvciBuYXRpdmUg
YXJyYXlzLgotCi0vLyBBcnJheUVxKCkgY29tcGFyZXMgdHdvIGstZGltZW5zaW9uYWwgbmF0aXZl
IGFycmF5cyB1c2luZyB0aGUKLS8vIGVsZW1lbnRzJyBvcGVyYXRvcj09LCB3aGVyZSBrIGNhbiBi
ZSBhbnkgaW50ZWdlciA+PSAwLiAgV2hlbiBrIGlzCi0vLyAwLCBBcnJheUVxKCkgZGVnZW5lcmF0
ZXMgaW50byBjb21wYXJpbmcgYSBzaW5nbGUgcGFpciBvZiB2YWx1ZXMuCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYm9vbCBBcnJheUVxKGNvbnN0IFQqIGxocywgc2l6ZV90
IHNpemUsIGNvbnN0IFUqIHJocyk7Ci0KLS8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQg
d2hlbiBrIGlzIDAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBi
b29sIEFycmF5RXEoY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMpIHsgcmV0dXJuIGxocyA9PSBy
aHM7IH0KLQotLy8gVGhpcyBvdmVybG9hZCBpcyB1c2VkIHdoZW4gayA+PSAxLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHNpemVfdCBOPgotaW5saW5lIGJvb2wgQXJyYXlFcShj
b25zdCBUKCZsaHMpW05dLCBjb25zdCBVKCZyaHMpW05dKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6
QXJyYXlFcShsaHMsIE4sIHJocyk7Ci19Ci0KLS8vIFRoaXMgaGVscGVyIHJlZHVjZXMgY29kZSBi
bG9hdC4gIElmIHdlIGluc3RlYWQgcHV0IGl0cyBsb2dpYyBpbnNpZGUKLS8vIHRoZSBwcmV2aW91
cyBBcnJheUVxKCkgZnVuY3Rpb24sIGFycmF5cyB3aXRoIGRpZmZlcmVudCBzaXplcyB3b3VsZAot
Ly8gbGVhZCB0byBkaWZmZXJlbnQgY29waWVzIG9mIHRoZSB0ZW1wbGF0ZSBjb2RlLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1ib29sIEFycmF5RXEoY29uc3QgVCogbGhzLCBz
aXplX3Qgc2l6ZSwgY29uc3QgVSogcmhzKSB7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IHNp
emU7IGkrKykgewotICAgIGlmICghaW50ZXJuYWw6OkFycmF5RXEobGhzW2ldLCByaHNbaV0pKQot
ICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBGaW5kcyB0
aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgaXRlcmF0b3IgcmFuZ2UgW2JlZ2luLCBlbmQpIHRoYXQK
LS8vIGVxdWFscyBlbGVtLiAgRWxlbWVudCBtYXkgYmUgYSBuYXRpdmUgYXJyYXkgdHlwZSBpdHNl
bGYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlciwgdHlwZW5hbWUgRWxlbWVudD4KLUl0ZXIgQXJy
YXlBd2FyZUZpbmQoSXRlciBiZWdpbiwgSXRlciBlbmQsIGNvbnN0IEVsZW1lbnQmIGVsZW0pIHsK
LSAgZm9yIChJdGVyIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgewotICAgIGlmIChpbnRl
cm5hbDo6QXJyYXlFcSgqaXQsIGVsZW0pKQotICAgICAgcmV0dXJuIGl0OwotICB9Ci0gIHJldHVy
biBlbmQ7Ci19Ci0KLS8vIENvcHlBcnJheSgpIGNvcGllcyBhIGstZGltZW5zaW9uYWwgbmF0aXZl
IGFycmF5IHVzaW5nIHRoZSBlbGVtZW50cycKLS8vIG9wZXJhdG9yPSwgd2hlcmUgayBjYW4gYmUg
YW55IGludGVnZXIgPj0gMC4gIFdoZW4gayBpcyAwLAotLy8gQ29weUFycmF5KCkgZGVnZW5lcmF0
ZXMgaW50byBjb3B5aW5nIGEgc2luZ2xlIHZhbHVlLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KLXZvaWQgQ29weUFycmF5KGNvbnN0IFQqIGZyb20sIHNpemVfdCBzaXplLCBV
KiB0byk7Ci0KLS8vIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIGlzIHVzZWQgd2hlbiBrIGlzIDAuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSB2b2lkIENvcHlBcnJheShj
b25zdCBUJiBmcm9tLCBVKiB0bykgeyAqdG8gPSBmcm9tOyB9Ci0KLS8vIFRoaXMgb3ZlcmxvYWQg
aXMgdXNlZCB3aGVuIGsgPj0gMS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCBz
aXplX3QgTj4KLWlubGluZSB2b2lkIENvcHlBcnJheShjb25zdCBUKCZmcm9tKVtOXSwgVSgqdG8p
W05dKSB7Ci0gIGludGVybmFsOjpDb3B5QXJyYXkoZnJvbSwgTiwgKnRvKTsKLX0KLQotLy8gVGhp
cyBoZWxwZXIgcmVkdWNlcyBjb2RlIGJsb2F0LiAgSWYgd2UgaW5zdGVhZCBwdXQgaXRzIGxvZ2lj
IGluc2lkZQotLy8gdGhlIHByZXZpb3VzIENvcHlBcnJheSgpIGZ1bmN0aW9uLCBhcnJheXMgd2l0
aCBkaWZmZXJlbnQgc2l6ZXMKLS8vIHdvdWxkIGxlYWQgdG8gZGlmZmVyZW50IGNvcGllcyBvZiB0
aGUgdGVtcGxhdGUgY29kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdm9p
ZCBDb3B5QXJyYXkoY29uc3QgVCogZnJvbSwgc2l6ZV90IHNpemUsIFUqIHRvKSB7Ci0gIGZvciAo
c2l6ZV90IGkgPSAwOyBpICE9IHNpemU7IGkrKykgewotICAgIGludGVybmFsOjpDb3B5QXJyYXko
ZnJvbVtpXSwgdG8gKyBpKTsKLSAgfQotfQotCi0vLyBUaGUgcmVsYXRpb24gYmV0d2VlbiBhbiBO
YXRpdmVBcnJheSBvYmplY3QgKHNlZSBiZWxvdykgYW5kIHRoZQotLy8gbmF0aXZlIGFycmF5IGl0
IHJlcHJlc2VudHMuCi0vLyBXZSB1c2UgMiBkaWZmZXJlbnQgc3RydWN0cyB0byBhbGxvdyBub24t
Y29weWFibGUgdHlwZXMgdG8gYmUgdXNlZCwgYXMgbG9uZwotLy8gYXMgUmVsYXRpb25Ub1NvdXJj
ZVJlZmVyZW5jZSgpIGlzIHBhc3NlZC4KLXN0cnVjdCBSZWxhdGlvblRvU291cmNlUmVmZXJlbmNl
IHt9Owotc3RydWN0IFJlbGF0aW9uVG9Tb3VyY2VDb3B5IHt9OwotCi0vLyBBZGFwdHMgYSBuYXRp
dmUgYXJyYXkgdG8gYSByZWFkLW9ubHkgU1RMLXN0eWxlIGNvbnRhaW5lci4gIEluc3RlYWQKLS8v
IG9mIHRoZSBjb21wbGV0ZSBTVEwgY29udGFpbmVyIGNvbmNlcHQsIHRoaXMgYWRhcHRvciBvbmx5
IGltcGxlbWVudHMKLS8vIG1lbWJlcnMgdXNlZnVsIGZvciBHb29nbGUgTW9jaydzIGNvbnRhaW5l
ciBtYXRjaGVycy4gIE5ldyBtZW1iZXJzCi0vLyBzaG91bGQgYmUgYWRkZWQgYXMgbmVlZGVkLiAg
VG8gc2ltcGxpZnkgdGhlIGltcGxlbWVudGF0aW9uLCB3ZSBvbmx5Ci0vLyBzdXBwb3J0IEVsZW1l
bnQgYmVpbmcgYSByYXcgdHlwZSAoaS5lLiBoYXZpbmcgbm8gdG9wLWxldmVsIGNvbnN0IG9yCi0v
LyByZWZlcmVuY2UgbW9kaWZpZXIpLiAgSXQncyB0aGUgY2xpZW50J3MgcmVzcG9uc2liaWxpdHkg
dG8gc2F0aXNmeQotLy8gdGhpcyByZXF1aXJlbWVudC4gIEVsZW1lbnQgY2FuIGJlIGFuIGFycmF5
IHR5cGUgaXRzZWxmIChoZW5jZQotLy8gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBzdXBw
b3J0ZWQpLgotdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnQ+Ci1jbGFzcyBOYXRpdmVBcnJheSB7
Ci0gcHVibGljOgotICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIHR5cGVkZWZzLgotICB0eXBlZGVm
IEVsZW1lbnQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBFbGVtZW50KiBpdGVyYXRvcjsKLSAgdHlw
ZWRlZiBjb25zdCBFbGVtZW50KiBjb25zdF9pdGVyYXRvcjsKLQotICAvLyBDb25zdHJ1Y3RzIGZy
b20gYSBuYXRpdmUgYXJyYXkuIFJlZmVyZW5jZXMgdGhlIHNvdXJjZS4KLSAgTmF0aXZlQXJyYXko
Y29uc3QgRWxlbWVudCogYXJyYXksIHNpemVfdCBjb3VudCwgUmVsYXRpb25Ub1NvdXJjZVJlZmVy
ZW5jZSkgewotICAgIEluaXRSZWYoYXJyYXksIGNvdW50KTsKLSAgfQotCi0gIC8vIENvbnN0cnVj
dHMgZnJvbSBhIG5hdGl2ZSBhcnJheS4gQ29waWVzIHRoZSBzb3VyY2UuCi0gIE5hdGl2ZUFycmF5
KGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgY291bnQsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5
KSB7Ci0gICAgSW5pdENvcHkoYXJyYXksIGNvdW50KTsKLSAgfQotCi0gIC8vIENvcHkgY29uc3Ry
dWN0b3IuCi0gIE5hdGl2ZUFycmF5KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIHsKLSAgICAodGhp
cy0+KnJocy5jbG9uZV8pKHJocy5hcnJheV8sIHJocy5zaXplXyk7Ci0gIH0KLQotICB+TmF0aXZl
QXJyYXkoKSB7Ci0gICAgaWYgKGNsb25lXyAhPSAmTmF0aXZlQXJyYXk6OkluaXRSZWYpCi0gICAg
ICBkZWxldGVbXSBhcnJheV87Ci0gIH0KLQotICAvLyBTVEwtc3R5bGUgY29udGFpbmVyIG1ldGhv
ZHMuCi0gIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV87IH0KLSAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBhcnJheV87IH0KLSAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gYXJyYXlfICsgc2l6ZV87IH0KLSAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5hdGl2ZUFycmF5JiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4gc2l6ZSgpID09IHJo
cy5zaXplKCkgJiYKLSAgICAgICAgQXJyYXlFcShiZWdpbigpLCBzaXplKCksIHJocy5iZWdpbigp
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgZW51bSB7Ci0gICAga0NoZWNrVHlwZUlzTm90Q29uc3RP
ckFSZWZlcmVuY2UgPSBTdGF0aWNBc3NlcnRUeXBlRXFIZWxwZXI8Ci0gICAgICAgIEVsZW1lbnQs
IEdURVNUX1JFTU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhFbGVtZW50KT46OnZhbHVlLAotICB9
OwotCi0gIC8vIEluaXRpYWxpemVzIHRoaXMgb2JqZWN0IHdpdGggYSBjb3B5IG9mIHRoZSBpbnB1
dC4KLSAgdm9pZCBJbml0Q29weShjb25zdCBFbGVtZW50KiBhcnJheSwgc2l6ZV90IGFfc2l6ZSkg
ewotICAgIEVsZW1lbnQqIGNvbnN0IGNvcHkgPSBuZXcgRWxlbWVudFthX3NpemVdOwotICAgIENv
cHlBcnJheShhcnJheSwgYV9zaXplLCBjb3B5KTsKLSAgICBhcnJheV8gPSBjb3B5OwotICAgIHNp
emVfID0gYV9zaXplOwotICAgIGNsb25lXyA9ICZOYXRpdmVBcnJheTo6SW5pdENvcHk7Ci0gIH0K
LQotICAvLyBJbml0aWFsaXplcyB0aGlzIG9iamVjdCB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZSBp
bnB1dC4KLSAgdm9pZCBJbml0UmVmKGNvbnN0IEVsZW1lbnQqIGFycmF5LCBzaXplX3QgYV9zaXpl
KSB7Ci0gICAgYXJyYXlfID0gYXJyYXk7Ci0gICAgc2l6ZV8gPSBhX3NpemU7Ci0gICAgY2xvbmVf
ID0gJk5hdGl2ZUFycmF5OjpJbml0UmVmOwotICB9Ci0KLSAgY29uc3QgRWxlbWVudCogYXJyYXlf
OwotICBzaXplX3Qgc2l6ZV87Ci0gIHZvaWQgKE5hdGl2ZUFycmF5OjoqY2xvbmVfKShjb25zdCBF
bGVtZW50Kiwgc2l6ZV90KTsKLQotICBHVEVTVF9ESVNBTExPV19BU1NJR05fKE5hdGl2ZUFycmF5
KTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3Rp
bmcKLQotI2RlZmluZSBHVEVTVF9NRVNTQUdFX0FUXyhmaWxlLCBsaW5lLCBtZXNzYWdlLCByZXN1
bHRfdHlwZSkgXAotICA6OnRlc3Rpbmc6OmludGVybmFsOjpBc3NlcnRIZWxwZXIocmVzdWx0X3R5
cGUsIGZpbGUsIGxpbmUsIG1lc3NhZ2UpIFwKLSAgICA9IDo6dGVzdGluZzo6TWVzc2FnZSgpCi0K
LSNkZWZpbmUgR1RFU1RfTUVTU0FHRV8obWVzc2FnZSwgcmVzdWx0X3R5cGUpIFwKLSAgR1RFU1Rf
TUVTU0FHRV9BVF8oX19GSUxFX18sIF9fTElORV9fLCBtZXNzYWdlLCByZXN1bHRfdHlwZSkKLQot
I2RlZmluZSBHVEVTVF9GQVRBTF9GQUlMVVJFXyhtZXNzYWdlKSBcCi0gIHJldHVybiBHVEVTVF9N
RVNTQUdFXyhtZXNzYWdlLCA6OnRlc3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJl
KQotCi0jZGVmaW5lIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVfKG1lc3NhZ2UpIFwKLSAgR1RFU1Rf
TUVTU0FHRV8obWVzc2FnZSwgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFp
bHVyZSkKLQotI2RlZmluZSBHVEVTVF9TVUNDRVNTXyhtZXNzYWdlKSBcCi0gIEdURVNUX01FU1NB
R0VfKG1lc3NhZ2UsIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKQotCi0vLyBT
dXBwcmVzc2VzIE1TVkMgd2FybmluZ3MgNDA3MiAodW5yZWFjaGFibGUgY29kZSkgZm9yIHRoZSBj
b2RlIGZvbGxvd2luZwotLy8gc3RhdGVtZW50IGlmIGl0IHJldHVybnMgb3IgdGhyb3dzIChvciBk
b2Vzbid0IHJldHVybiBvciB0aHJvdyBpbiBzb21lCi0vLyBzaXR1YXRpb25zKS4KLSNkZWZpbmUg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
IFwKLSAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBzdGF0ZW1lbnQ7
IH0KLQotI2RlZmluZSBHVEVTVF9URVNUX1RIUk9XXyhzdGF0ZW1lbnQsIGV4cGVjdGVkX2V4Y2Vw
dGlvbiwgZmFpbCkgXAotICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmICg6
OnRlc3Rpbmc6OmludGVybmFsOjpDb25zdENoYXJQdHIgZ3Rlc3RfbXNnID0gIiIpIHsgXAotICAg
IGJvb2wgZ3Rlc3RfY2F1Z2h0X2V4cGVjdGVkID0gZmFsc2U7IFwKLSAgICB0cnkgeyBcCi0gICAg
ICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVu
dCk7IFwKLSAgICB9IFwKLSAgICBjYXRjaCAoZXhwZWN0ZWRfZXhjZXB0aW9uIGNvbnN0JikgeyBc
Ci0gICAgICBndGVzdF9jYXVnaHRfZXhwZWN0ZWQgPSB0cnVlOyBcCi0gICAgfSBcCi0gICAgY2F0
Y2ggKC4uLikgeyBcCi0gICAgICBndGVzdF9tc2cudmFsdWUgPSBcCi0gICAgICAgICAgIkV4cGVj
dGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0gICAg
ICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZl
cmVudCB0eXBlLiI7IFwKLSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJl
bF90ZXN0dGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgICBpZiAoIWd0ZXN0X2NhdWdo
dF9leHBlY3RlZCkgeyBcCi0gICAgICBndGVzdF9tc2cudmFsdWUgPSBcCi0gICAgICAgICAgIkV4
cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiB0aHJvd3MgYW4gZXhjZXB0aW9uIG9mIHR5cGUgIiBcCi0g
ICAgICAgICAgI2V4cGVjdGVkX2V4Y2VwdGlvbiAiLlxuICBBY3R1YWw6IGl0IHRocm93cyBub3Ro
aW5nLiI7IFwKLSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9sYWJlbF90ZXN0
dGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05D
QVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3R0aHJvd18sIF9fTElORV9fKTogXAotICAgICAgZmFp
bChndGVzdF9tc2cudmFsdWUpCi0KLSNkZWZpbmUgR1RFU1RfVEVTVF9OT19USFJPV18oc3RhdGVt
ZW50LCBmYWlsKSBcCi0gIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgaWYgKDo6
dGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgdHJ5IHsgXAotICAgICAg
R1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyhzdGF0ZW1lbnQp
OyBcCi0gICAgfSBcCi0gICAgY2F0Y2ggKC4uLikgeyBcCi0gICAgICBnb3RvIEdURVNUX0NPTkNB
VF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vdGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwK
LSAgfSBlbHNlIFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rub3Ro
cm93XywgX19MSU5FX18pOiBcCi0gICAgICBmYWlsKCJFeHBlY3RlZDogIiAjc3RhdGVtZW50ICIg
ZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgIiAgQWN0dWFsOiBp
dCB0aHJvd3MuIikKLQotI2RlZmluZSBHVEVTVF9URVNUX0FOWV9USFJPV18oc3RhdGVtZW50LCBm
YWlsKSBcCi0gIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFwKLSAgaWYgKDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OkFsd2F5c1RydWUoKSkgeyBcCi0gICAgYm9vbCBndGVzdF9jYXVnaHRfYW55
ID0gZmFsc2U7IFwKLSAgICB0cnkgeyBcCi0gICAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJM
RV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRlbWVudCk7IFwKLSAgICB9IFwKLSAgICBjYXRjaCAo
Li4uKSB7IFwKLSAgICAgIGd0ZXN0X2NhdWdodF9hbnkgPSB0cnVlOyBcCi0gICAgfSBcCi0gICAg
aWYgKCFndGVzdF9jYXVnaHRfYW55KSB7IFwKLSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VO
XyhndGVzdF9sYWJlbF90ZXN0YW55dGhyb3dfLCBfX0xJTkVfXyk7IFwKLSAgICB9IFwKLSAgfSBl
bHNlIFwKLSAgICBHVEVTVF9DT05DQVRfVE9LRU5fKGd0ZXN0X2xhYmVsX3Rlc3Rhbnl0aHJvd18s
IF9fTElORV9fKTogXAotICAgICAgZmFpbCgiRXhwZWN0ZWQ6ICIgI3N0YXRlbWVudCAiIHRocm93
cyBhbiBleGNlcHRpb24uXG4iIFwKLSAgICAgICAgICAgIiAgQWN0dWFsOiBpdCBkb2Vzbid0LiIp
Ci0KLQotLy8gSW1wbGVtZW50cyBCb29sZWFuIHRlc3QgYXNzZXJ0aW9ucyBzdWNoIGFzIEVYUEVD
VF9UUlVFLiBleHByZXNzaW9uIGNhbiBiZQotLy8gZWl0aGVyIGEgYm9vbGVhbiBleHByZXNzaW9u
IG9yIGFuIEFzc2VydGlvblJlc3VsdC4gdGV4dCBpcyBhIHRleHR1YWwKLS8vIHJlcHJlc2VuYXRp
b24gb2YgZXhwcmVzc2lvbiBhcyBpdCB3YXMgcGFzc2VkIGludG8gdGhlIEVYUEVDVF9UUlVFLgot
I2RlZmluZSBHVEVTVF9URVNUX0JPT0xFQU5fKGV4cHJlc3Npb24sIHRleHQsIGFjdHVhbCwgZXhw
ZWN0ZWQsIGZhaWwpIFwKLSAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tFUl8gXAotICBpZiAo
Y29uc3QgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgZ3Rlc3RfYXJfID0gXAotICAgICAgOjp0
ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQoZXhwcmVzc2lvbikpIFwKLSAgICA7IFwKLSAgZWxzZSBc
Ci0gICAgZmFpbCg6OnRlc3Rpbmc6OmludGVybmFsOjpHZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1l
c3NhZ2UoXAotICAgICAgICBndGVzdF9hcl8sIHRleHQsICNhY3R1YWwsICNleHBlY3RlZCkuY19z
dHIoKSkKLQotI2RlZmluZSBHVEVTVF9URVNUX05PX0ZBVEFMX0ZBSUxVUkVfKHN0YXRlbWVudCwg
ZmFpbCkgXAotICBHVEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gIGlmICg6OnRlc3Rp
bmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsgXAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6
Okhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlciBndGVzdF9mYXRhbF9mYWlsdXJlX2NoZWNrZXI7IFwK
LSAgICBHVEVTVF9TVVBQUkVTU19VTlJFQUNIQUJMRV9DT0RFX1dBUk5JTkdfQkVMT1dfKHN0YXRl
bWVudCk7IFwKLSAgICBpZiAoZ3Rlc3RfZmF0YWxfZmFpbHVyZV9jaGVja2VyLmhhc19uZXdfZmF0
YWxfZmFpbHVyZSgpKSB7IFwKLSAgICAgIGdvdG8gR1RFU1RfQ09OQ0FUX1RPS0VOXyhndGVzdF9s
YWJlbF90ZXN0bm9mYXRhbF8sIF9fTElORV9fKTsgXAotICAgIH0gXAotICB9IGVsc2UgXAotICAg
IEdURVNUX0NPTkNBVF9UT0tFTl8oZ3Rlc3RfbGFiZWxfdGVzdG5vZmF0YWxfLCBfX0xJTkVfXyk6
IFwKLSAgICAgIGZhaWwoIkV4cGVjdGVkOiAiICNzdGF0ZW1lbnQgIiBkb2Vzbid0IGdlbmVyYXRl
IG5ldyBmYXRhbCAiIFwKLSAgICAgICAgICAgImZhaWx1cmVzIGluIHRoZSBjdXJyZW50IHRocmVh
ZC5cbiIgXAotICAgICAgICAgICAiICBBY3R1YWw6IGl0IGRvZXMuIikKLQotLy8gRXhwYW5kcyB0
byB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBnaXZlbiB0ZXN0Lgot
I2RlZmluZSBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9uYW1lLCB0ZXN0X25hbWUp
IFwKLSAgdGVzdF9jYXNlX25hbWUjI18jI3Rlc3RfbmFtZSMjX1Rlc3QKLQotLy8gSGVscGVyIG1h
Y3JvIGZvciBkZWZpbmluZyB0ZXN0cy4KLSNkZWZpbmUgR1RFU1RfVEVTVF8odGVzdF9jYXNlX25h
bWUsIHRlc3RfbmFtZSwgcGFyZW50X2NsYXNzLCBwYXJlbnRfaWQpXAotY2xhc3MgR1RFU1RfVEVT
VF9DTEFTU19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKSA6IHB1YmxpYyBwYXJlbnRf
Y2xhc3Mge1wKLSBwdWJsaWM6XAotICBHVEVTVF9URVNUX0NMQVNTX05BTUVfKHRlc3RfY2FzZV9u
YW1lLCB0ZXN0X25hbWUpKCkge31cCi0gcHJpdmF0ZTpcCi0gIHZpcnR1YWwgdm9pZCBUZXN0Qm9k
eSgpO1wKLSAgc3RhdGljIDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mb18gR1RF
U1RfQVRUUklCVVRFX1VOVVNFRF87XAotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05f
KFwKLSAgICAgIEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFt
ZSkpO1wKLX07XAotXAotOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgR1RFU1RfVEVTVF9DTEFT
U19OQU1FXyh0ZXN0X2Nhc2VfbmFtZSwgdGVzdF9uYW1lKVwKLSAgOjp0ZXN0X2luZm9fID1cCi0g
ICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TWFrZUFuZFJlZ2lzdGVyVGVzdEluZm8oXAotICAgICAg
ICAjdGVzdF9jYXNlX25hbWUsICN0ZXN0X25hbWUsIE5VTEwsIE5VTEwsIFwKLSAgICAgICAgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6Q29kZUxvY2F0aW9uKF9fRklMRV9fLCBfX0xJTkVfXyksIFwKLSAg
ICAgICAgKHBhcmVudF9pZCksIFwKLSAgICAgICAgcGFyZW50X2NsYXNzOjpTZXRVcFRlc3RDYXNl
LCBcCi0gICAgICAgIHBhcmVudF9jbGFzczo6VGVhckRvd25UZXN0Q2FzZSwgXAotICAgICAgICBu
ZXcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VGVzdEZhY3RvcnlJbXBsPFwKLSAgICAgICAgICAgIEdU
RVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk+KTtcCi12b2lk
IEdURVNUX1RFU1RfQ0xBU1NfTkFNRV8odGVzdF9jYXNlX25hbWUsIHRlc3RfbmFtZSk6OlRlc3RC
b2R5KCkKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0lO
VEVSTkFMX0hfCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtbGlua2VkX3B0ci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1saW5rZWRfcHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MDI5
NDIyMTc0Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3QtbGlua2VkX3B0ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQzICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDAzIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8vCi0vLyBBICJzbWFydCIgcG9pbnRl
ciB0eXBlIHdpdGggcmVmZXJlbmNlIHRyYWNraW5nLiAgRXZlcnkgcG9pbnRlciB0byBhCi0vLyBw
YXJ0aWN1bGFyIG9iamVjdCBpcyBrZXB0IG9uIGEgY2lyY3VsYXIgbGlua2VkIGxpc3QuICBXaGVu
IHRoZSBsYXN0IHBvaW50ZXIKLS8vIHRvIGFuIG9iamVjdCBpcyBkZXN0cm95ZWQgb3IgcmVhc3Np
Z25lZCwgdGhlIG9iamVjdCBpcyBkZWxldGVkLgotLy8KLS8vIFVzZWQgcHJvcGVybHksIHRoaXMg
ZGVsZXRlcyB0aGUgb2JqZWN0IHdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIGdvZXMgYXdheS4KLS8v
IFRoZXJlIGFyZSBzZXZlcmFsIGNhdmVhdHM6Ci0vLyAtIExpa2UgYWxsIHJlZmVyZW5jZSBjb3Vu
dGluZyBzY2hlbWVzLCBjeWNsZXMgbGVhZCB0byBsZWFrcy4KLS8vIC0gRWFjaCBzbWFydCBwb2lu
dGVyIGlzIGFjdHVhbGx5IHR3byBwb2ludGVycyAoOCBieXRlcyBpbnN0ZWFkIG9mIDQpLgotLy8g
LSBFdmVyeSB0aW1lIGEgcG9pbnRlciBpcyBhc3NpZ25lZCwgdGhlIGVudGlyZSBsaXN0IG9mIHBv
aW50ZXJzIHRvIHRoYXQKLS8vICAgb2JqZWN0IGlzIHRyYXZlcnNlZC4gIFRoaXMgY2xhc3MgaXMg
dGhlcmVmb3JlIE5PVCBTVUlUQUJMRSB3aGVuIHRoZXJlCi0vLyAgIHdpbGwgb2Z0ZW4gYmUgbW9y
ZSB0aGFuIHR3byBvciB0aHJlZSBwb2ludGVycyB0byBhIHBhcnRpY3VsYXIgb2JqZWN0LgotLy8g
LSBSZWZlcmVuY2VzIGFyZSBvbmx5IHRyYWNrZWQgYXMgbG9uZyBhcyBsaW5rZWRfcHRyPD4gb2Jq
ZWN0cyBhcmUgY29waWVkLgotLy8gICBJZiBhIGxpbmtlZF9wdHI8PiBpcyBjb252ZXJ0ZWQgdG8g
YSByYXcgcG9pbnRlciBhbmQgYmFjaywgQkFEIFRISU5HUwotLy8gICB3aWxsIGhhcHBlbiAoZG91
YmxlIGRlbGV0aW9uKS4KLS8vCi0vLyBBIGdvb2QgdXNlIG9mIHRoaXMgY2xhc3MgaXMgc3Rvcmlu
ZyBvYmplY3QgcmVmZXJlbmNlcyBpbiBTVEwgY29udGFpbmVycy4KLS8vIFlvdSBjYW4gc2FmZWx5
IHB1dCBsaW5rZWRfcHRyPD4gaW4gYSB2ZWN0b3I8Pi4KLS8vIE90aGVyIHVzZXMgbWF5IG5vdCBi
ZSBhcyBnb29kLgotLy8KLS8vIE5vdGU6IElmIHlvdSB1c2UgYW4gaW5jb21wbGV0ZSB0eXBlIHdp
dGggbGlua2VkX3B0cjw+LCB0aGUgY2xhc3MKLS8vICpjb250YWluaW5nKiBsaW5rZWRfcHRyPD4g
bXVzdCBoYXZlIGEgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKGV2ZW4KLS8vIGlmIHRoZXkg
ZG8gbm90aGluZyEpLgotLy8KLS8vIEJpbGwgR2liYm9ucyBzdWdnZXN0ZWQgd2UgdXNlIHNvbWV0
aGluZyBsaWtlIHRoaXMuCi0vLwotLy8gVGhyZWFkIFNhZmV0eToKLS8vICAgVW5saWtlIG90aGVy
IGxpbmtlZF9wdHIgaW1wbGVtZW50YXRpb25zLCBpbiB0aGlzIGltcGxlbWVudGF0aW9uCi0vLyAg
IGEgbGlua2VkX3B0ciBvYmplY3QgaXMgdGhyZWFkLXNhZmUgaW4gdGhlIHNlbnNlIHRoYXQ6Ci0v
LyAgICAgLSBpdCdzIHNhZmUgdG8gY29weSBsaW5rZWRfcHRyIG9iamVjdHMgY29uY3VycmVudGx5
LAotLy8gICAgIC0gaXQncyBzYWZlIHRvIGNvcHkgKmZyb20qIGEgbGlua2VkX3B0ciBhbmQgcmVh
ZCBpdHMgdW5kZXJseWluZwotLy8gICAgICAgcmF3IHBvaW50ZXIgKGUuZy4gdmlhIGdldCgpKSBj
b25jdXJyZW50bHksIGFuZAotLy8gICAgIC0gaXQncyBzYWZlIHRvIHdyaXRlIHRvIHR3byBsaW5r
ZWRfcHRycyB0aGF0IHBvaW50IHRvIHRoZSBzYW1lCi0vLyAgICAgICBzaGFyZWQgb2JqZWN0IGNv
bmN1cnJlbnRseS4KLS8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiByZW5hbWUgdGhpcyB0byBzYWZl
X2xpbmtlZF9wdHIgdG8gYXZvaWQKLS8vIGNvbmZ1c2lvbiB3aXRoIG5vcm1hbCBsaW5rZWRfcHRy
LgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfTElOS0VEX1BU
Ul9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9Q
VFJfSF8KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotCi0jaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7
Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBQcm90ZWN0cyBjb3B5aW5nIG9mIGFsbCBsaW5r
ZWRfcHRyIG9iamVjdHMuCi1HVEVTVF9BUElfIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhn
X2xpbmtlZF9wdHJfbXV0ZXgpOwotCi0vLyBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSBieSBhbGwg
aW5zdGFuY2VzIG9mIGxpbmtlZF9wdHI8Pi4gIEl0IG5lZWRzIHRvIGJlCi0vLyBhIG5vbi10ZW1w
bGF0ZSBjbGFzcyBiZWNhdXNlIGRpZmZlcmVudCB0eXBlcyBvZiBsaW5rZWRfcHRyPD4gY2FuIHJl
ZmVyIHRvCi0vLyB0aGUgc2FtZSBvYmplY3QgKGxpbmtlZF9wdHI8U3VwZXJjbGFzcz4ob2JqKSB2
cyBsaW5rZWRfcHRyPFN1YmNsYXNzPihvYmopKS4KLS8vIFNvLCBpdCBuZWVkcyB0byBiZSBwb3Nz
aWJsZSBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIGxpbmtlZF9wdHIgdG8gcGFydGljaXBhdGUKLS8v
IGluIHRoZSBzYW1lIGNpcmN1bGFyIGxpbmtlZCBsaXN0LCBzbyB3ZSBuZWVkIGEgc2luZ2xlIGNs
YXNzIHR5cGUgaGVyZS4KLS8vCi0vLyBETyBOT1QgVVNFIFRISVMgQ0xBU1MgRElSRUNUTFkgWU9V
UlNFTEYuICBVc2UgbGlua2VkX3B0cjxUPi4KLWNsYXNzIGxpbmtlZF9wdHJfaW50ZXJuYWwgewot
IHB1YmxpYzoKLSAgLy8gQ3JlYXRlIGEgbmV3IGNpcmNsZSB0aGF0IGluY2x1ZGVzIG9ubHkgdGhp
cyBpbnN0YW5jZS4KLSAgdm9pZCBqb2luX25ldygpIHsKLSAgICBuZXh0XyA9IHRoaXM7Ci0gIH0K
LQotICAvLyBNYW55IGxpbmtlZF9wdHIgb3BlcmF0aW9ucyBtYXkgY2hhbmdlIHAubGlua18gZm9y
IHNvbWUgbGlua2VkX3B0cgotICAvLyB2YXJpYWJsZSBwIGluIHRoZSBzYW1lIGNpcmNsZSBhcyB0
aGlzIG9iamVjdC4gIFRoZXJlZm9yZSB3ZSBuZWVkCi0gIC8vIHRvIHByZXZlbnQgdHdvIHN1Y2gg
b3BlcmF0aW9ucyBmcm9tIG9jY3VycmluZyBjb25jdXJyZW50bHkuCi0gIC8vCi0gIC8vIE5vdGUg
dGhhdCBkaWZmZXJlbnQgdHlwZXMgb2YgbGlua2VkX3B0ciBvYmplY3RzIGNhbiBjb2V4aXN0IGlu
IGEKLSAgLy8gY2lyY2xlIChlLmcuIGxpbmtlZF9wdHI8QmFzZT4sIGxpbmtlZF9wdHI8RGVyaXZl
ZDE+LCBhbmQKLSAgLy8gbGlua2VkX3B0cjxEZXJpdmVkMj4pLiAgVGhlcmVmb3JlIHdlIG11c3Qg
dXNlIGEgc2luZ2xlIG11dGV4IHRvCi0gIC8vIHByb3RlY3QgYWxsIGxpbmtlZF9wdHIgb2JqZWN0
cy4gIFRoaXMgY2FuIGNyZWF0ZSBzZXJpb3VzCi0gIC8vIGNvbnRlbnRpb24gaW4gcHJvZHVjdGlv
biBjb2RlLCBidXQgaXMgYWNjZXB0YWJsZSBpbiBhIHRlc3RpbmcKLSAgLy8gZnJhbWV3b3JrLgot
Ci0gIC8vIEpvaW4gYW4gZXhpc3RpbmcgY2lyY2xlLgotICB2b2lkIGpvaW4obGlua2VkX3B0cl9p
bnRlcm5hbCBjb25zdCogcHRyKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRf
cHRyX211dGV4KSB7Ci0gICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7Ci0K
LSAgICBsaW5rZWRfcHRyX2ludGVybmFsIGNvbnN0KiBwID0gcHRyOwotICAgIHdoaWxlIChwLT5u
ZXh0XyAhPSBwdHIpIHsKLSAgICAgIGFzc2VydChwLT5uZXh0XyAhPSB0aGlzICYmCi0gICAgICAg
ICAgICAgIlRyeWluZyB0byBqb2luKCkgYSBsaW5rZWQgcmluZyB3ZSBhcmUgYWxyZWFkeSBpbi4g
IgotICAgICAgICAgICAgICJJcyBHTW9jayB0aHJlYWQgc2FmZXR5IGVuYWJsZWQ/Iik7Ci0gICAg
ICBwID0gcC0+bmV4dF87Ci0gICAgfQotICAgIHAtPm5leHRfID0gdGhpczsKLSAgICBuZXh0XyA9
IHB0cjsKLSAgfQotCi0gIC8vIExlYXZlIHdoYXRldmVyIGNpcmNsZSB3ZSdyZSBwYXJ0IG9mLiAg
UmV0dXJucyB0cnVlIGlmIHdlIHdlcmUgdGhlCi0gIC8vIGxhc3QgbWVtYmVyIG9mIHRoZSBjaXJj
bGUuICBPbmNlIHRoaXMgaXMgZG9uZSwgeW91IGNhbiBqb2luKCkgYW5vdGhlci4KLSAgYm9vbCBk
ZXBhcnQoKQotICAgICAgR1RFU1RfTE9DS19FWENMVURFRF8oZ19saW5rZWRfcHRyX211dGV4KSB7
Ci0gICAgTXV0ZXhMb2NrIGxvY2soJmdfbGlua2VkX3B0cl9tdXRleCk7Ci0KLSAgICBpZiAobmV4
dF8gPT0gdGhpcykgcmV0dXJuIHRydWU7Ci0gICAgbGlua2VkX3B0cl9pbnRlcm5hbCBjb25zdCog
cCA9IG5leHRfOwotICAgIHdoaWxlIChwLT5uZXh0XyAhPSB0aGlzKSB7Ci0gICAgICBhc3NlcnQo
cC0+bmV4dF8gIT0gbmV4dF8gJiYKLSAgICAgICAgICAgICAiVHJ5aW5nIHRvIGRlcGFydCgpIGEg
bGlua2VkIHJpbmcgd2UgYXJlIG5vdCBpbi4gIgotICAgICAgICAgICAgICJJcyBHTW9jayB0aHJl
YWQgc2FmZXR5IGVuYWJsZWQ/Iik7Ci0gICAgICBwID0gcC0+bmV4dF87Ci0gICAgfQotICAgIHAt
Pm5leHRfID0gbmV4dF87Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSBwcml2YXRlOgotICBt
dXRhYmxlIGxpbmtlZF9wdHJfaW50ZXJuYWwgY29uc3QqIG5leHRfOwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBsaW5rZWRfcHRyIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgVCBl
bGVtZW50X3R5cGU7Ci0KLSAgLy8gVGFrZSBvdmVyIG93bmVyc2hpcCBvZiBhIHJhdyBwb2ludGVy
LiAgVGhpcyBzaG91bGQgaGFwcGVuIGFzIHNvb24gYXMKLSAgLy8gcG9zc2libGUgYWZ0ZXIgdGhl
IG9iamVjdCBpcyBjcmVhdGVkLgotICBleHBsaWNpdCBsaW5rZWRfcHRyKFQqIHB0ciA9IE5VTEwp
IHsgY2FwdHVyZShwdHIpOyB9Ci0gIH5saW5rZWRfcHRyKCkgeyBkZXBhcnQoKTsgfQotCi0gIC8v
IENvcHkgYW4gZXhpc3RpbmcgbGlua2VkX3B0cjw+LCBhZGRpbmcgb3Vyc2VsdmVzIHRvIHRoZSBs
aXN0IG9mIHJlZmVyZW5jZXMuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBsaW5rZWRfcHRyKGxp
bmtlZF9wdHI8VT4gY29uc3QmIHB0cikgeyBjb3B5KCZwdHIpOyB9Ci0gIGxpbmtlZF9wdHIobGlu
a2VkX3B0ciBjb25zdCYgcHRyKSB7ICAvLyBOT0xJTlQKLSAgICBhc3NlcnQoJnB0ciAhPSB0aGlz
KTsKLSAgICBjb3B5KCZwdHIpOwotICB9Ci0KLSAgLy8gQXNzaWdubWVudCByZWxlYXNlcyB0aGUg
b2xkIHZhbHVlIGFuZCBhY3F1aXJlcyB0aGUgbmV3LgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4g
bGlua2VkX3B0ciYgb3BlcmF0b3I9KGxpbmtlZF9wdHI8VT4gY29uc3QmIHB0cikgewotICAgIGRl
cGFydCgpOwotICAgIGNvcHkoJnB0cik7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgbGlu
a2VkX3B0ciYgb3BlcmF0b3I9KGxpbmtlZF9wdHIgY29uc3QmIHB0cikgewotICAgIGlmICgmcHRy
ICE9IHRoaXMpIHsKLSAgICAgIGRlcGFydCgpOwotICAgICAgY29weSgmcHRyKTsKLSAgICB9Ci0g
ICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gU21hcnQgcG9pbnRlciBtZW1iZXJzLgotICB2
b2lkIHJlc2V0KFQqIHB0ciA9IE5VTEwpIHsKLSAgICBkZXBhcnQoKTsKLSAgICBjYXB0dXJlKHB0
cik7Ci0gIH0KLSAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0gIFQqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLSAgVCYgb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gKnZhbHVlXzsgfQotCi0gIGJvb2wgb3BlcmF0b3I9PShUKiBwKSBjb25zdCB7IHJl
dHVybiB2YWx1ZV8gPT0gcDsgfQotICBib29sIG9wZXJhdG9yIT0oVCogcCkgY29uc3QgeyByZXR1
cm4gdmFsdWVfICE9IHA7IH0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Ci0gIGJvb2wgb3BlcmF0
b3I9PShsaW5rZWRfcHRyPFU+IGNvbnN0JiBwdHIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVf
ID09IHB0ci5nZXQoKTsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgYm9vbCBvcGVy
YXRvciE9KGxpbmtlZF9wdHI8VT4gY29uc3QmIHB0cikgY29uc3QgewotICAgIHJldHVybiB2YWx1
ZV8gIT0gcHRyLmdldCgpOwotICB9Ci0KLSBwcml2YXRlOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4KLSAgZnJpZW5kIGNsYXNzIGxpbmtlZF9wdHI7Ci0KLSAgVCogdmFsdWVfOwotICBsaW5rZWRf
cHRyX2ludGVybmFsIGxpbmtfOwotCi0gIHZvaWQgZGVwYXJ0KCkgewotICAgIGlmIChsaW5rXy5k
ZXBhcnQoKSkgZGVsZXRlIHZhbHVlXzsKLSAgfQotCi0gIHZvaWQgY2FwdHVyZShUKiBwdHIpIHsK
LSAgICB2YWx1ZV8gPSBwdHI7Ci0gICAgbGlua18uam9pbl9uZXcoKTsKLSAgfQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPiB2b2lkIGNvcHkobGlua2VkX3B0cjxVPiBjb25zdCogcHRyKSB7Ci0g
ICAgdmFsdWVfID0gcHRyLT5nZXQoKTsKLSAgICBpZiAodmFsdWVfKQotICAgICAgbGlua18uam9p
bigmcHRyLT5saW5rXyk7Ci0gICAgZWxzZQotICAgICAgbGlua18uam9pbl9uZXcoKTsKLSAgfQot
fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lCi1ib29sIG9wZXJhdG9yPT0oVCogcHRy
LCBjb25zdCBsaW5rZWRfcHRyPFQ+JiB4KSB7Ci0gIHJldHVybiBwdHIgPT0geC5nZXQoKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lCi1ib29sIG9wZXJhdG9yIT0oVCogcHRyLCBj
b25zdCBsaW5rZWRfcHRyPFQ+JiB4KSB7Ci0gIHJldHVybiBwdHIgIT0geC5nZXQoKTsKLX0KLQot
Ly8gQSBmdW5jdGlvbiB0byBjb252ZXJ0IFQqIGludG8gbGlua2VkX3B0cjxUPgotLy8gRG9pbmcg
ZS5nLiBtYWtlX2xpbmtlZF9wdHIobmV3IEZvb0JhckJhejx0eXBlPihhcmcpKSBpcyBhIHNob3J0
ZXIgbm90YXRpb24KLS8vIGZvciBsaW5rZWRfcHRyPEZvb0JhckJhejx0eXBlPiA+KG5ldyBGb29C
YXJCYXo8dHlwZT4oYXJnKSkKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotbGlua2VkX3B0cjxUPiBt
YWtlX2xpbmtlZF9wdHIoVCogcHRyKSB7Ci0gIHJldHVybiBsaW5rZWRfcHRyPFQ+KHB0cik7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKLQot
I2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX0xJTktFRF9QVFJf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
cGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGQxZDgxZDIwZmZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVk
ZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTE0NiArMCwwIEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21t
YW5kOgotLy8gICAgIHB1bXAucHkgZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaC5wdW1wCi0v
LyBETyBOT1QgRURJVCBCWSBIQU5EISEhCi0KLS8vIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMu
Ci0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3Nl
dikKLQotLy8gVHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgcGFy
YW1ldGVyaXplZCB0ZXN0cy4KLS8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQu
ICBETyBOT1QgRURJVCBCWSBIQU5EIQotLy8KLS8vIEN1cnJlbnRseSBHb29nbGUgVGVzdCBzdXBw
b3J0cyBhdCBtb3N0IDUwIGFyZ3VtZW50cyBpbiBWYWx1ZXMsCi0vLyBhbmQgYXQgbW9zdCAxMCBh
cmd1bWVudHMgaW4gQ29tYmluZS4gUGxlYXNlIGNvbnRhY3QKLS8vIGdvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZCBtb3JlLgotLy8gUGxlYXNlIG5vdGUgdGhh
dCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBDb21iaW5lIGlzIGxpbWl0ZWQKLS8vIGJ5IHRo
ZSBtYXhpbXVtIGFyaXR5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0dXBsZSB3aGljaCBpcwot
Ly8gY3VycmVudGx5IHNldCBhdCAxMC4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lO
VEVSTkFMX0dURVNUX1BBUkFNX1VUSUxfR0VORVJBVEVEX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xV
REVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJTF9HRU5FUkFURURfSF8KLQotLy8gc2Ny
aXB0cy9mdXNlX2d0ZXN0LnB5IGRlcGVuZHMgb24gZ3Rlc3QncyBvd24gaGVhZGVyIGJlaW5nICNp
bmNsdWRlZAotLy8gKnVuY29uZGl0aW9uYWxseSouICBUaGVyZWZvcmUgdGhlc2UgI2luY2x1ZGVz
IGNhbm5vdCBiZSBtb3ZlZAotLy8gaW5zaWRlICNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVC4KLSNp
bmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQot
bmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBWYWx1ZXNJ
bigpLCB3aGljaCBpcyBpbXBsZW1lbnRlZCBpbgotLy8gaW5jbHVkZS9ndGVzdC9ndGVzdC1wYXJh
bS10ZXN0LmguCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW50ZXJuYWw6
OlBhcmFtR2VuZXJhdG9yPAotICB0eXBlbmFtZSA6OnRlc3Rpbmc6OmludGVybmFsOjpJdGVyYXRv
clRyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPgotVmFsdWVzSW4oRm9yd2FyZEl0
ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHNpemVfdCBOPgotaW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPFQ+IFZhbHVlc0luKGNvbnN0
IFQgKCZhcnJheSlbTl0pOwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotaW50ZXJuYWw6
OlBhcmFtR2VuZXJhdG9yPHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZT4gVmFsdWVzSW4o
Ci0gICAgY29uc3QgQ29udGFpbmVyJiBjb250YWluZXIpOwotCi1uYW1lc3BhY2UgaW50ZXJuYWwg
ewotCi0vLyBVc2VkIGluIHRoZSBWYWx1ZXMoKSBmdW5jdGlvbiB0byBwcm92aWRlIHBvbHltb3Jw
aGljIGNhcGFiaWxpdGllcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLWNsYXNzIFZhbHVlQXJy
YXkxIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFZhbHVlQXJyYXkxKFQxIHYxKSA6IHYxXyh2MSkg
e30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8
VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyl9
OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5v
IGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgVmFsdWVBcnJheTEmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotY2xhc3MgVmFsdWVBcnJheTIg
ewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTIoVDEgdjEsIFQyIHYyKSA6IHYxXyh2MSksIHYyXyh2
Mikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0
b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYx
XyksIHN0YXRpY19jYXN0PFQ+KHYyXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1
bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTImIG90aGVyKTsK
LQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotY2xhc3MgVmFsdWVBcnJheTMgewot
IHB1YmxpYzoKLSAgVmFsdWVBcnJheTMoVDEgdjEsIFQyIHYyLCBUMyB2MykgOiB2MV8odjEpLCB2
Ml8odjIpLCB2M18odjMpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRl
OgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0g
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEg
djFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLWNsYXNz
IFZhbHVlQXJyYXk0IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0KFQxIHYxLCBUMiB2MiwgVDMg
djMsIFQ0IHY0KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCi0gICAgICB2NF8odjQpIHt9
Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+
KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBz
dGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNf
Y2FzdDxUPih2NF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2
YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQu
Ci0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0JiBvdGhlcik7Ci0KLSAgY29uc3Qg
VDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRf
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLWNsYXNzIFZhbHVlQXJyYXk1IHsKLSBwdWJsaWM6
Ci0gIFZhbHVlQXJyYXk1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSkgOiB2MV8o
djEpLCB2Ml8odjIpLCB2M18odjMpLAotICAgICAgdjRfKHY0KSwgdjVfKHY1KSB7fQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlz
IHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NSYgb3RoZXIp
OwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0g
IGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNj4KLWNsYXNzIFZhbHVlQXJyYXk2IHsKLSBwdWJsaWM6Ci0gIFZhbHVl
QXJyYXk2KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYpIDogdjFfKHYx
KSwgdjJfKHYyKSwKLSAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2Nikge30K
LQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4o
KSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0
YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19j
YXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHY2Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0g
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTYmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87
Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNv
bnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci1jbGFzcyBWYWx1ZUFycmF5NyB7Ci0gcHVibGlj
OgotICBWYWx1ZUFycmF5NyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NykgOiB2MV8odjEpLAotICAgICAgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVf
KHY1KSwgdjZfKHY2KSwgdjdfKHY3KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKX07Ci0g
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5NyYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3Qg
VDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVf
OwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLWNsYXNzIFZh
bHVlQXJyYXk4IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk4KFQxIHYxLCBUMiB2MiwgVDMgdjMs
IFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LAotICAgICAgVDggdjgpIDogdjFfKHYxKSwgdjJf
KHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwKLSAgICAg
IHY4Xyh2OCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTgmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0g
IGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0
IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4
XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci1jbGFzcyBWYWx1ZUFycmF5OSB7Ci0gcHVibGlj
OgotICBWYWx1ZUFycmF5OShUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywgVDggdjgsCi0gICAgICBUOSB2OSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMp
LCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlf
KHY5KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVy
YXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4o
djFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwg
c3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5OSYgb3Ro
ZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187
Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNv
bnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci1jbGFzcyBWYWx1ZUFycmF5MTAgewotIHB1Ymxp
YzoKLSAgVmFsdWVBcnJheTEwKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwKSA6IHYxXyh2MSksIHYyXyh2
MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2
OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJh
eVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+
KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3Xyks
IHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRp
Y19jYXN0PFQ+KHYxMF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBw
cml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0
ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkxMCYgb3RoZXIpOwotCi0gIGNv
bnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0
IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsK
LSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMT4KLWNs
YXNzIFZhbHVlQXJyYXkxMSB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MTEoVDEgdjEsIFQyIHYy
LCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAg
IFQxMCB2MTAsIFQxMSB2MTEpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwg
djVfKHY1KSwgdjZfKHY2KSwKLSAgICAgIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8o
djEwKSwgdjExXyh2MTEpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTExJiBvdGhl
cik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsK
LSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29u
c3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEw
IHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyPgotY2xhc3MgVmFsdWVBcnJh
eTEyIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkxMihUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2
NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDEx
IHYxMSwgVDEyIHYxMikgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8o
djUpLAotICAgICAgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTAp
LCB2MTFfKHYxMSksIHYxMl8odjEyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTImIG90aGVyKTsKLQotICBjb25zdCBUMSB2
MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0g
IGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0
IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDEx
IHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTM+Ci1j
bGFzcyBWYWx1ZUFycmF5MTMgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTEzKFQxIHYxLCBUMiB2
MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAg
ICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzKSA6IHYxXyh2MSksIHYyXyh2Miks
IHYzXyh2MyksIHY0Xyh2NCksCi0gICAgICB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8o
djgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwKLSAgICAgIHYxMl8odjEyKSwgdjEz
Xyh2MTMpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJp
dmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTMmIG90aGVyKTsKLQotICBjb25z
dCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2
NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0g
IGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29u
c3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQ+Ci1jbGFzcyBWYWx1ZUFycmF5MTQg
ewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBU
NSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2Myks
Ci0gICAgICB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8o
djkpLCB2MTBfKHYxMCksCi0gICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2
MTRfKHYxNCkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1H
ZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0
PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
XyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBz
dGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRp
Y19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKX07Ci0gICAgcmV0dXJuIFZhbHVl
c0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFy
cmF5MTQmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29u
c3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYg
djZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwot
ICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwot
ICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVu
YW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTU+Ci1jbGFzcyBWYWx1ZUFycmF5MTUg
ewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTE1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBU
NSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1KSA6IHYxXyh2MSksIHYyXyh2Miks
Ci0gICAgICB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8o
djgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEz
Xyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFy
cmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTUm
IG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMg
djNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwot
ICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25z
dCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25z
dCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5
cGVuYW1lIFQxNj4KLWNsYXNzIFZhbHVlQXJyYXkxNiB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5
MTYoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2
MTQsIFQxNSB2MTUsIFQxNiB2MTYpIDogdjFfKHYxKSwKLSAgICAgIHYyXyh2MiksIHYzXyh2Myks
IHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksCi0g
ICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0
KSwgdjE1Xyh2MTUpLAotICAgICAgdjE2Xyh2MTYpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQg
YXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2Fz
dDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2
N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBz
dGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKX07
Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MTYmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNv
bnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1
IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsK
LSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0g
IGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0g
IGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUg
VDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5h
bWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5
cGVuYW1lIFQxNz4KLWNsYXNzIFZhbHVlQXJyYXkxNyB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5
MTcoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2
MTQsIFQxNSB2MTUsIFQxNiB2MTYsCi0gICAgICBUMTcgdjE3KSA6IHYxXyh2MSksIHYyXyh2Miks
IHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8o
djgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyks
IHYxNF8odjE0KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNykge30KLQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBj
b25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0
PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2
XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2
MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18p
LCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0
YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKX07Ci0gICAgcmV0dXJuIFZh
bHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1
ZUFycmF5MTcmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAg
Y29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3Qg
VDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlf
OwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJf
OwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVf
OwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOD4KLWNsYXNzIFZhbHVlQXJyYXkxOCB7Ci0gcHVi
bGljOgotICBWYWx1ZUFycmF5MTgoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBU
NiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2
MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBU
MTggdjE4KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2
Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8o
djExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwKLSAgICAgIHYxNV8odjE1KSwg
djE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBU
IGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4o
djdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwg
c3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYx
NF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2Xyks
IHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKX07Ci0g
ICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1w
bGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9y
PShjb25zdCBWYWx1ZUFycmF5MTgmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0
IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1
XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAg
Y29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNv
bnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNv
bnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNv
bnN0IFQxOCB2MThfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOT4KLWNsYXNzIFZhbHVlQXJyYXkxOSB7Ci0gcHVibGljOgotICBWYWx1
ZUFycmF5MTkoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcs
IFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMs
IFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkg
djE5KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2
NiksCi0gICAgICB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjEx
KSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksCi0gICAgICB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2
Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpIHt9Ci0KLSAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAg
IGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2
Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBz
dGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNf
Y2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nh
c3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxU
Pih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYx
OF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlz
IHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MTkmIG90aGVy
KTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwot
ICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25z
dCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAg
djEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMg
djEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYg
djE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkg
djE5XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMD4KLWNsYXNzIFZhbHVlQXJyYXkyMCB7Ci0gcHVibGljOgot
ICBWYWx1ZUFycmF5MjAoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCks
IHY1Xyh2NSksCi0gICAgICB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBf
KHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLAotICAgICAgdjEzXyh2MTMpLCB2MTRfKHYxNCks
IHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwKLSAgICAgIHYxOV8o
djE5KSwgdjIwXyh2MjApIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9y
IFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0
aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2Fz
dDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2
MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8p
LCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4o
djE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlf
KSwgc3RhdGljX2Nhc3Q8VD4odjIwXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1
bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTIwJiBvdGhlcik7
Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAg
Y29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3Qg
VDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYx
MF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYx
M187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYx
Nl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYx
OV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQy
MT4KLWNsYXNzIFZhbHVlQXJyYXkyMSB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MjEoVDEgdjEs
IFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwK
LSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2
MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBU
MjEgdjIxKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksCi0gICAgICB2NV8o
djUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8o
djExKSwKLSAgICAgIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwg
djE2Xyh2MTYpLCB2MTdfKHYxNyksCi0gICAgICB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2
MjApLCB2MjFfKHYyMSkge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRp
Y19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0
PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYx
MF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyks
IHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2
MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8p
LCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTIxJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25z
dCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2
NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0g
IGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBj
b25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBj
b25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBj
b25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBj
b25zdCBUMjEgdjIxXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMj4KLWNsYXNzIFZhbHVlQXJyYXkyMiB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MjIo
VDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBU
OSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQs
IFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAg
djIwLCBUMjEgdjIxLCBUMjIgdjIyKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCi0gICAg
ICB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2
MTBfKHYxMCksCi0gICAgICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYx
NCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYx
OV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSB7fQotCi0gIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAg
ICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4o
djJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19j
YXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8
VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyl9OwotICAgIHJldHVy
biBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0
aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
VmFsdWVBcnJheTIyJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87
Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNv
bnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5
IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIg
djEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUg
djE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTgg
djE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEg
djIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMz4KLWNsYXNzIFZhbHVlQXJyYXkyMyB7Ci0g
cHVibGljOgotICBWYWx1ZUFycmF5MjMoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1
LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQx
MiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAg
ICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzKSA6
IHYxXyh2MSksIHYyXyh2MiksCi0gICAgICB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8o
djYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAgICB2MTFfKHYx
MSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYp
LAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFf
KHYyMSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyMyYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsK
LSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29u
c3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDgg
djhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjEx
XzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0
XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3
XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIw
XzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIz
XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
LCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3
LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBU
MTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQx
NSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFt
ZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlw
ZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQ+Ci1jbGFzcyBWYWx1ZUFycmF5MjQgewotIHB1YmxpYzoK
LSAgVmFsdWVBcnJheTI0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYs
IFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBU
MTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYx
OCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCkg
OiB2MV8odjEpLAotICAgICAgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZf
KHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwKLSAgICAgIHYxMF8odjEwKSwgdjExXyh2
MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksCi0gICAgICB2
MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIx
Xyh2MjEpLAotICAgICAgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0KSB7fQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MjQmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1PgotY2xhc3MgVmFsdWVB
cnJheTI1IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXkyNShUMSB2MSwgVDIgdjIsIFQzIHYzLCBU
NCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwg
VDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3
IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIs
IFQyMyB2MjMsIFQyNCB2MjQsCi0gICAgICBUMjUgdjI1KSA6IHYxXyh2MSksIHYyXyh2MiksIHYz
Xyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgp
LCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYx
NF8odjE0KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4
KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCi0gICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIz
Xyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0
YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyl9OwotICAg
IHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxl
bWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVmFsdWVBcnJheTI1JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBU
MiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87
Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNv
bnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25z
dCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25z
dCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25z
dCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25z
dCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25z
dCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0
eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQx
MywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFt
ZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlw
ZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBl
bmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2PgotY2xhc3MgVmFsdWVBcnJheTI2IHsKLSBwdWJs
aWM6Ci0gIFZhbHVlQXJyYXkyNihUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2
IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYx
MiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQx
OCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2
MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2Myks
IHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgpLCB2OV8o
djkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0
KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5
Xyh2MTkpLCB2MjBfKHYyMCksCi0gICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMp
LCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0
IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNf
Y2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxU
Pih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8p
LCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4o
djE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZf
KSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBz
dGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIz
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwg
c3RhdGljX2Nhc3Q8VD4odjI2Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0K
LQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1
cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI2JiBvdGhlcik7Ci0K
LSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29u
c3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcg
djdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87
Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187
Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87
Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87
Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87
Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87
Ci0gIGNvbnN0IFQyNiB2MjZfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3PgotY2xhc3MgVmFsdWVBcnJheTI3IHsKLSBw
dWJsaWM6Ci0gIFZhbHVlQXJyYXkyNyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUs
IFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEy
IHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAg
IFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQy
NCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3KSA6IHYxXyh2MSksIHYyXyh2
MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksCi0gICAgICB2N18odjcpLCB2
OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYx
MyksCi0gICAgICB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYx
OF8odjE4KSwgdjE5Xyh2MTkpLAotICAgICAgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIy
KSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwKLSAgICAgIHYyNl8odjI2KSwgdjI3
Xyh2MjcpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkyNyYgb3RoZXIp
OwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0g
IGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0
IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2
MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2
MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2
MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2
MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2
MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2
MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOD4KLWNsYXNzIFZhbHVlQXJyYXkyOCB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5
MjgoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4
LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2
MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBU
MjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAg
ICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMp
LCB2NF8odjQpLCB2NV8odjUpLAotICAgICAgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlf
KHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwKLSAgICAgIHYxM18odjEzKSwg
djE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksCi0g
ICAgICB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIz
KSwgdjI0Xyh2MjQpLAotICAgICAgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4
Xyh2MjgpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2Vu
ZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxU
Pih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18p
LCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3Rh
dGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MjgmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQy
NyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1l
IFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBl
bmFtZSBUMjk+Ci1jbGFzcyBWYWx1ZUFycmF5MjkgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTI5
KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwg
VDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0
LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIw
IHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAg
IFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjkpIDogdjFfKHYxKSwgdjJfKHYyKSwg
djNfKHYzKSwgdjRfKHY0KSwKLSAgICAgIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2
OCksIHY5Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLAotICAgICAgdjEyXyh2MTIpLCB2MTNf
KHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwKLSAgICAg
IHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2
MjNfKHYyMyksCi0gICAgICB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYy
NyksIHYyOF8odjI4KSwgdjI5Xyh2MjkpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0g
IG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlb
XSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2
NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBz
dGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2Fz
dDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nh
c3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxU
Pih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTI5JiBv
dGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYz
XzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAg
Y29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3Qg
VDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3Qg
VDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3Qg
VDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3Qg
VDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3Qg
VDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3Qg
VDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3Qg
VDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVu
YW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5h
bWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5
cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwPgotY2xhc3MgVmFsdWVBcnJheTMwIHsKLSBwdWJsaWM6
Ci0gIFZhbHVlQXJyYXkzMChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2
LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwg
VDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2
MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQs
IFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAg
djMwKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCi0gICAgICB2NF8odjQpLCB2NV8odjUp
LCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAgICB2
MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2
Xyh2MTYpLAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjAp
LCB2MjFfKHYyMSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVf
KHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCi0gICAgICB2MjlfKHYyOSks
IHYzMF8odjMwKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJh
bUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nh
c3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyks
IHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0
YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRp
Y19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKX07Ci0gICAgcmV0
dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBWYWx1ZUFycmF5MzAmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYy
XzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAg
Y29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3Qg
VDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQx
MiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQx
NSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQx
OCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQy
MSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQy
NCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQy
NyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQz
MCB2MzBfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1l
IFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUg
VDMwLAotICAgIHR5cGVuYW1lIFQzMT4KLWNsYXNzIFZhbHVlQXJyYXkzMSB7Ci0gcHVibGljOgot
ICBWYWx1ZUFycmF5MzEoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2Niwg
VDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQx
MyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4
LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBU
MjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYz
MCwgVDMxIHYzMSkgOiB2MV8odjEpLCB2Ml8odjIpLAotICAgICAgdjNfKHYzKSwgdjRfKHY0KSwg
djVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLAot
ICAgICAgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYx
NSksIHYxNl8odjE2KSwKLSAgICAgIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYy
MF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksCi0gICAgICB2MjNfKHYyMyksIHYyNF8odjI0
KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2MjgpLAotICAgICAgdjI5
Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFy
cmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdf
KSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3Rh
dGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0
YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRp
Y19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nh
c3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJh
eSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVu
dCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMxJiBv
dGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYz
XzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAg
Y29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3Qg
VDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3Qg
VDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3Qg
VDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3Qg
VDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3Qg
VDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3Qg
VDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3Qg
VDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAgY29uc3Qg
VDMxIHYzMV87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzI+Ci1jbGFzcyBWYWx1ZUFycmF5
MzIgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTMyKFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0
LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEg
djExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3
LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIz
IHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2Mjgs
IFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIpIDogdjFfKHYxKSwKLSAgICAgIHYy
Xyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2
OCksIHY5Xyh2OSksCi0gICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNf
KHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAotICAgICAgdjE2Xyh2MTYpLCB2MTdfKHYxNyks
IHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwKLSAgICAgIHYyMl8o
djIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYy
NyksCi0gICAgICB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYz
Ml8odjMyKSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdl
bmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8
VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNf
KSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0
YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRp
Y19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19j
YXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8
VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzMiYg
b3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2
M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0g
IGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0
IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0
IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0
IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0
IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0
IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0
IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0
IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0
IFQzMSB2MzFfOwotICBjb25zdCBUMzIgdjMyXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQz
MiwgdHlwZW5hbWUgVDMzPgotY2xhc3MgVmFsdWVBcnJheTMzIHsKLSBwdWJsaWM6Ci0gIFZhbHVl
QXJyYXkzMyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2Nywg
VDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2
MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUs
Ci0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEg
djMxLCBUMzIgdjMyLAotICAgICAgVDMzIHYzMykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMp
LCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4KSwgdjlf
KHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYx
NCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYx
OV8odjE5KSwgdjIwXyh2MjApLAotICAgICAgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIz
KSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwKLSAgICAgIHYyN18odjI3KSwgdjI4
Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksCi0gICAg
ICB2MzNfKHYzMykge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFy
YW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19j
YXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+
KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8p
LCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0
YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBz
dGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRp
Y19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0
aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19j
YXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjMzXyl9OwotICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6
Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVBcnJheTMzJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEg
djFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwot
ICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25z
dCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQx
MSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQx
NCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQx
NyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQy
MCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQy
MyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQy
NiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQy
OSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsKLSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQz
MiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1l
IFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBl
bmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwg
dHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQ+Ci1jbGFzcyBWYWx1ZUFycmF5MzQgewotIHB1Ymxp
YzoKLSAgVmFsdWVBcnJheTM0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYg
djYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEy
LCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4
IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYy
NCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQz
MCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgICBUMzQgdjM0KSA6IHYxXyh2
MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2Nyks
Ci0gICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIp
LCB2MTNfKHYxMyksIHYxNF8odjE0KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdf
KHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCi0gICAgICB2MjFfKHYyMSks
IHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAot
ICAgICAgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYz
MSksIHYzMl8odjMyKSwKLSAgICAgIHYzM18odjMzKSwgdjM0Xyh2MzQpIHt9Ci0KLSAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qgewot
ICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxU
Pih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8p
LCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0
aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nh
c3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
N18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8
VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2
MzRfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lk
IG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzQmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87
Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNv
bnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4
IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYx
MV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYx
NF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYx
N187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYy
MF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYy
M187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYy
Nl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYy
OV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYz
Ml87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLX07Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBU
MTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQy
MCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFt
ZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlw
ZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEs
IHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNT4K
LWNsYXNzIFZhbHVlQXJyYXkzNSB7Ci0gcHVibGljOgotICBWYWx1ZUFycmF5MzUoVDEgdjEsIFQy
IHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAg
ICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUs
IFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEg
djIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwg
VDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMz
IHYzMywKLSAgICAgIFQzNCB2MzQsIFQzNSB2MzUpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYz
KSwgdjRfKHY0KSwgdjVfKHY1KSwgdjZfKHY2KSwKLSAgICAgIHY3Xyh2NyksIHY4Xyh2OCksIHY5
Xyh2OSksIHYxMF8odjEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwKLSAgICAg
IHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2
MTlfKHYxOSksCi0gICAgICB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYy
MyksIHYyNF8odjI0KSwgdjI1Xyh2MjUpLAotICAgICAgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYy
OF8odjI4KSwgdjI5Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwKLSAgICAgIHYzMl8odjMy
KSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksIHYzNV8odjM1KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25z
dCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8
VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlf
KSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+
KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2
XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwg
c3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYy
M18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1Xyks
IHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0
YXRpY19jYXN0PFQ+KHYzNV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0K
LSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzNSYgb3RoZXIpOwotCi0g
IGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0
IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3
XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwot
ICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwot
ICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwot
ICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwot
ICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwot
ICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwot
ICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwot
ICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwot
ICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwot
ICBjb25zdCBUMzUgdjM1XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
LSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjks
IHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUg
VDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzY+Ci1jbGFz
cyBWYWx1ZUFycmF5MzYgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTM2KFQxIHYxLCBUMiB2Miwg
VDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBU
MTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYg
djE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwg
VDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2
MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMs
Ci0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2KSA6IHYxXyh2MSksIHYyXyh2MiksIHYz
Xyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksCi0gICAgICB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgp
LCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLAotICAgICAgdjEzXyh2
MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4
KSwKLSAgICAgIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIz
Xyh2MjMpLCB2MjRfKHYyNCksCi0gICAgICB2MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2Mjcp
LCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLAotICAgICAgdjMxXyh2MzEpLCB2MzJf
KHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSB7fQotCi0g
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNv
bnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGlj
X2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8
VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZf
KSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYx
MV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyks
IHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0
YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRp
Y19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nh
c3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MzZfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToK
LSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2
b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5MzYmIG90aGVyKTsKLQotICBjb25zdCBUMSB2
MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0g
IGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0
IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDEx
IHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0
IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3
IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIw
IHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIz
IHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2
IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5
IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMy
IHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1
IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1l
IFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUg
VDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVu
YW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0
eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQz
NiwgdHlwZW5hbWUgVDM3PgotY2xhc3MgVmFsdWVBcnJheTM3IHsKLSBwdWJsaWM6Ci0gIFZhbHVl
QXJyYXkzNyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2Nywg
VDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywg
VDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2
MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUs
Ci0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEg
djMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwg
VDM3IHYzNykgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18odjMpLCB2NF8odjQpLAotICAgICAgdjVf
KHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFf
KHYxMSksCi0gICAgICB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSks
IHYxNl8odjE2KSwgdjE3Xyh2MTcpLAotICAgICAgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8o
djIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18odjIzKSwKLSAgICAgIHYyNF8odjI0KSwg
djI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksCi0g
ICAgICB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0
KSwgdjM1Xyh2MzUpLAotICAgICAgdjM2Xyh2MzYpLCB2MzdfKHYzNykge30KLQotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0g
ICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+
KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0Xyks
IHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRp
Y19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNf
Y2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0
PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+
KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3
XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYz
NF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2Xyks
IHN0YXRpY19jYXN0PFQ+KHYzN18pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9
Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXkzNyYgb3RoZXIpOwot
Ci0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNv
bnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3
IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBf
OwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNf
OwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZf
OwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlf
OwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJf
OwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVf
OwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2Mjhf
OwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFf
OwotICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRf
OwotICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2Mzdf
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwg
dHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAot
ICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQz
NCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFt
ZSBUMzg+Ci1jbGFzcyBWYWx1ZUFycmF5MzggewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTM4KFQx
IHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkg
djksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBU
MTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYy
MCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQy
NiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2
MzIsIFQzMyB2MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBU
MzggdjM4KSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCi0gICAgICB2NF8odjQpLCB2NV8o
djUpLCB2Nl8odjYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAg
ICB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwg
djE2Xyh2MTYpLAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2
MjApLCB2MjFfKHYyMSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2
MjVfKHYyNSksIHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCi0gICAgICB2MjlfKHYy
OSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQp
LAotICAgICAgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpIHt9Ci0K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkg
Y29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0
aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2Fz
dDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4o
djExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNf
KSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBz
dGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRp
Y19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIw
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwg
c3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0
aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3Rh
dGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNf
Y2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4Xyl9Owot
ICAgIHJldHVybiBWYWx1ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVmFsdWVBcnJheTM4JiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25z
dCBUMiB2Ml87Ci0gIGNvbnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2
NV87Ci0gIGNvbnN0IFQ2IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0g
IGNvbnN0IFQ5IHY5XzsKLSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBj
b25zdCBUMTIgdjEyXzsKLSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBj
b25zdCBUMTUgdjE1XzsKLSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBj
b25zdCBUMTggdjE4XzsKLSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBj
b25zdCBUMjEgdjIxXzsKLSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBj
b25zdCBUMjQgdjI0XzsKLSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBj
b25zdCBUMjcgdjI3XzsKLSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBj
b25zdCBUMzAgdjMwXzsKLSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBj
b25zdCBUMzMgdjMzXzsKLSAgY29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBj
b25zdCBUMzYgdjM2XzsKLSAgY29uc3QgVDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVu
YW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlw
ZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAg
IHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwg
dHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBU
MjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5h
bWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5
cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlw
ZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgs
IHR5cGVuYW1lIFQzOT4KLWNsYXNzIFZhbHVlQXJyYXkzOSB7Ci0gcHVibGljOgotICBWYWx1ZUFy
cmF5MzkoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2NiwgVDcgdjcsIFQ4
IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIsIFQxMyB2MTMsIFQx
NCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTggdjE4LCBUMTkgdjE5
LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0LCBUMjUgdjI1LAot
ICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMwIHYzMCwgVDMxIHYz
MSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQsIFQzNSB2MzUsIFQzNiB2MzYsIFQz
NyB2MzcsIFQzOCB2MzgsIFQzOSB2MzkpIDogdjFfKHYxKSwgdjJfKHYyKSwKLSAgICAgIHYzXyh2
MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSks
IHYxMF8odjEwKSwKLSAgICAgIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8o
djE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksCi0gICAgICB2MTdfKHYxNyksIHYxOF8odjE4KSwg
djE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLAotICAgICAgdjIzXyh2
MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4
KSwKLSAgICAgIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwgdjMz
Xyh2MzMpLCB2MzRfKHYzNCksCi0gICAgICB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2Mzcp
LCB2MzhfKHYzOCksIHYzOV8odjM5KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBv
cGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10g
PSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3Rh
dGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nh
c3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19j
YXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8
VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0
PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4o
djI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBf
KSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+
KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3
XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKX07
Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8g
aW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJh
dG9yPShjb25zdCBWYWx1ZUFycmF5MzkmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNv
bnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1
IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsK
LSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0g
IGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0g
IGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0g
IGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0g
IGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0g
IGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0g
IGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0g
IGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0g
IGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0g
IGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0g
IGNvbnN0IFQzOSB2MzlfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBU
NiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAot
ICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQx
NCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFt
ZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlw
ZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAg
IHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwg
dHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBU
MzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5h
bWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwPgotY2xhc3Mg
VmFsdWVBcnJheTQwIHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0MChUMSB2MSwgVDIgdjIsIFQz
IHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEw
IHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYx
NiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQy
MiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3
LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAot
ICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYz
OSwgVDQwIHY0MCkgOiB2MV8odjEpLAotICAgICAgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwg
djVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwgdjlfKHY5KSwKLSAgICAgIHYxMF8o
djEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYx
NSksCi0gICAgICB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksIHYy
MF8odjIwKSwgdjIxXyh2MjEpLAotICAgICAgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0
KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwKLSAgICAgIHYyOF8odjI4KSwgdjI5
Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksCi0gICAg
ICB2MzRfKHYzNCksIHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYzNyksIHYzOF8odjM4KSwg
djM5Xyh2MzkpLAotICAgICAgdjQwXyh2NDApIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJy
YXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxU
Pih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18p
LCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0
aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0Xyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNf
Y2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2Fz
dDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nh
c3Q8VD4odjM1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxU
Pih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
OV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlz
IHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDAmIG90aGVy
KTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwot
ICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25z
dCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAg
djEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMg
djEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYg
djE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkg
djE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIg
djIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUg
djI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjgg
djI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEg
djMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQg
djM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcg
djM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAg
djQwXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQz
MCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFt
ZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlw
ZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDE+
Ci1jbGFzcyBWYWx1ZUFycmF5NDEgewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTQxKFQxIHYxLCBU
MiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0g
ICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1
LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIx
IHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYs
IFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQz
MyB2MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4
LCBUMzkgdjM5LCBUNDAgdjQwLAotICAgICAgVDQxIHY0MSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2
M18odjMpLCB2NF8odjQpLCB2NV8odjUpLCB2Nl8odjYpLCB2N18odjcpLAotICAgICAgdjhfKHY4
KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2
MTRfKHYxNCksCi0gICAgICB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2MThfKHYx
OCksIHYxOV8odjE5KSwgdjIwXyh2MjApLAotICAgICAgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYy
M18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSksIHYyNl8odjI2KSwKLSAgICAgIHYyN18odjI3
KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiks
Ci0gICAgICB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18o
djM3KSwgdjM4Xyh2MzgpLAotICAgICAgdjM5Xyh2MzkpLCB2NDBfKHY0MCksIHY0MV8odjQxKSB7
fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxU
PigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwg
c3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGlj
X2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0
PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4o
djEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVf
KSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+
KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIy
XyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwg
c3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYy
OV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyks
IHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0
YXRpY19jYXN0PFQ+KHY0MV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0K
LSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0MSYgb3RoZXIpOwotCi0g
IGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0
IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3
XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwot
ICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwot
ICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwot
ICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwot
ICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwot
ICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwot
ICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwot
ICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwot
ICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwot
ICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2MzdfOwot
ICBjb25zdCBUMzggdjM4XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2NDBfOwot
ICBjb25zdCBUNDEgdjQxXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
LSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjks
IHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUg
VDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVu
YW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0
eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Mj4KLWNsYXNzIFZhbHVlQXJyYXk0MiB7Ci0gcHVibGlj
OgotICBWYWx1ZUFycmF5NDIoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1LCBUNiB2
NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQxMiB2MTIs
IFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAgICBUMTgg
djE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBUMjQgdjI0
LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYyOSwgVDMw
IHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQsIFQzNSB2MzUs
IFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2NDEsCi0g
ICAgICBUNDIgdjQyKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2
NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCks
IHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwKLSAgICAgIHYxNV8o
djE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYy
MCksCi0gICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYy
NV8odjI1KSwgdjI2Xyh2MjYpLAotICAgICAgdjI3Xyh2MjcpLCB2MjhfKHYyOCksIHYyOV8odjI5
KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwKLSAgICAgIHYzM18odjMzKSwgdjM0
Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksCi0gICAg
ICB2MzlfKHYzOSksIHY0MF8odjQwKSwgdjQxXyh2NDEpLCB2NDJfKHY0Mikge30KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxU
Pih2NDFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyl9OwotICAgIHJldHVybiBWYWx1
ZXNJbihhcnJheSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVmFsdWVB
cnJheTQyJiBvdGhlcik7Ci0KLSAgY29uc3QgVDEgdjFfOwotICBjb25zdCBUMiB2Ml87Ci0gIGNv
bnN0IFQzIHYzXzsKLSAgY29uc3QgVDQgdjRfOwotICBjb25zdCBUNSB2NV87Ci0gIGNvbnN0IFQ2
IHY2XzsKLSAgY29uc3QgVDcgdjdfOwotICBjb25zdCBUOCB2OF87Ci0gIGNvbnN0IFQ5IHY5XzsK
LSAgY29uc3QgVDEwIHYxMF87Ci0gIGNvbnN0IFQxMSB2MTFfOwotICBjb25zdCBUMTIgdjEyXzsK
LSAgY29uc3QgVDEzIHYxM187Ci0gIGNvbnN0IFQxNCB2MTRfOwotICBjb25zdCBUMTUgdjE1XzsK
LSAgY29uc3QgVDE2IHYxNl87Ci0gIGNvbnN0IFQxNyB2MTdfOwotICBjb25zdCBUMTggdjE4XzsK
LSAgY29uc3QgVDE5IHYxOV87Ci0gIGNvbnN0IFQyMCB2MjBfOwotICBjb25zdCBUMjEgdjIxXzsK
LSAgY29uc3QgVDIyIHYyMl87Ci0gIGNvbnN0IFQyMyB2MjNfOwotICBjb25zdCBUMjQgdjI0XzsK
LSAgY29uc3QgVDI1IHYyNV87Ci0gIGNvbnN0IFQyNiB2MjZfOwotICBjb25zdCBUMjcgdjI3XzsK
LSAgY29uc3QgVDI4IHYyOF87Ci0gIGNvbnN0IFQyOSB2MjlfOwotICBjb25zdCBUMzAgdjMwXzsK
LSAgY29uc3QgVDMxIHYzMV87Ci0gIGNvbnN0IFQzMiB2MzJfOwotICBjb25zdCBUMzMgdjMzXzsK
LSAgY29uc3QgVDM0IHYzNF87Ci0gIGNvbnN0IFQzNSB2MzVfOwotICBjb25zdCBUMzYgdjM2XzsK
LSAgY29uc3QgVDM3IHYzN187Ci0gIGNvbnN0IFQzOCB2MzhfOwotICBjb25zdCBUMzkgdjM5XzsK
LSAgY29uc3QgVDQwIHY0MF87Ci0gIGNvbnN0IFQ0MSB2NDFfOwotICBjb25zdCBUNDIgdjQyXzsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
LSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQs
IHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUg
VDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVu
YW1lIFQ0MiwgdHlwZW5hbWUgVDQzPgotY2xhc3MgVmFsdWVBcnJheTQzIHsKLSBwdWJsaWM6Ci0g
IFZhbHVlQXJyYXk0MyhUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgs
IFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQy
NSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMw
LCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICAg
IFQ0MiB2NDIsIFQ0MyB2NDMpIDogdjFfKHYxKSwgdjJfKHYyKSwgdjNfKHYzKSwgdjRfKHY0KSwg
djVfKHY1KSwgdjZfKHY2KSwKLSAgICAgIHY3Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksIHYxMF8o
djEwKSwgdjExXyh2MTEpLCB2MTJfKHYxMiksIHYxM18odjEzKSwKLSAgICAgIHYxNF8odjE0KSwg
djE1Xyh2MTUpLCB2MTZfKHYxNiksIHYxN18odjE3KSwgdjE4Xyh2MTgpLCB2MTlfKHYxOSksCi0g
ICAgICB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIpLCB2MjNfKHYyMyksIHYyNF8odjI0
KSwgdjI1Xyh2MjUpLAotICAgICAgdjI2Xyh2MjYpLCB2MjdfKHYyNyksIHYyOF8odjI4KSwgdjI5
Xyh2MjkpLCB2MzBfKHYzMCksIHYzMV8odjMxKSwKLSAgICAgIHYzMl8odjMyKSwgdjMzXyh2MzMp
LCB2MzRfKHYzNCksIHYzNV8odjM1KSwgdjM2Xyh2MzYpLCB2MzdfKHYzNyksCi0gICAgICB2Mzhf
KHYzOCksIHYzOV8odjM5KSwgdjQwXyh2NDApLCB2NDFfKHY0MSksIHY0Ml8odjQyKSwgdjQzXyh2
NDMpIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJh
dG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2
MV8pLCBzdGF0aWNfY2FzdDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBz
dGF0aWNfY2FzdDxUPih2NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2Nl8pLCBzdGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGlj
X2Nhc3Q8VD4odjExXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2Fz
dDxUPih2MTNfKSwgc3RhdGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYxNV8pLCBzdGF0aWNfY2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nh
c3Q8VD4odjIwXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxU
Pih2MjJfKSwgc3RhdGljX2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYy
NF8pLCBzdGF0aWNfY2FzdDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8
VD4odjI5XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2
MzFfKSwgc3RhdGljX2Nhc3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18p
LCBzdGF0aWNfY2FzdDxUPih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzNl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4o
djM4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBf
KSwgc3RhdGljX2Nhc3Q8VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBz
dGF0aWNfY2FzdDxUPih2NDNfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3Vw
cG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDMmIG90aGVyKTsKLQot
ICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25z
dCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2
N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsK
LSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsK
LSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsK
LSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsK
LSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsK
LSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsK
LSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsK
LSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsK
LSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsK
LSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsK
LSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsK
LSAgY29uc3QgVDQxIHY0MV87Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25zdCBUNDMgdjQzXzsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
LSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQs
IHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUg
VDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVu
YW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQ+Ci1jbGFzcyBWYWx1ZUFycmF5NDQg
ewotIHB1YmxpYzoKLSAgVmFsdWVBcnJheTQ0KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBU
NSB2NSwgVDYgdjYsIFQ3IHY3LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjEx
LCBUMTIgdjEyLCBUMTMgdjEzLCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAot
ICAgICAgVDE4IHYxOCwgVDE5IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYy
MywgVDI0IHYyNCwgVDI1IHYyNSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQy
OSB2MjksIFQzMCB2MzAsIFQzMSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgICBUMzQgdjM0
LCBUMzUgdjM1LCBUMzYgdjM2LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLCBU
NDEgdjQxLAotICAgICAgVDQyIHY0MiwgVDQzIHY0MywgVDQ0IHY0NCkgOiB2MV8odjEpLCB2Ml8o
djIpLCB2M18odjMpLCB2NF8odjQpLCB2NV8odjUpLAotICAgICAgdjZfKHY2KSwgdjdfKHY3KSwg
djhfKHY4KSwgdjlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksIHYxMl8odjEyKSwKLSAgICAg
IHYxM18odjEzKSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLCB2
MThfKHYxOCksCi0gICAgICB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYy
MiksIHYyM18odjIzKSwgdjI0Xyh2MjQpLAotICAgICAgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYy
N18odjI3KSwgdjI4Xyh2MjgpLCB2MjlfKHYyOSksIHYzMF8odjMwKSwKLSAgICAgIHYzMV8odjMx
KSwgdjMyXyh2MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLCB2MzZfKHYzNiks
Ci0gICAgICB2MzdfKHYzNyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLCB2NDBfKHY0MCksIHY0MV8o
djQxKSwgdjQyXyh2NDIpLAotICAgICAgdjQzXyh2NDMpLCB2NDRfKHY0NCkge30KLQotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7
Ci0gICAgY29uc3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0
PFQ+KHYyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0
XyksIHN0YXRpY19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0
YXRpY19jYXN0PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19j
YXN0PFQ+KHY5XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0
aWNfY2FzdDxUPih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19j
YXN0PFQ+KHYxNl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjE4XyksIHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNf
Y2FzdDxUPih2MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0
PFQ+KHYyNV8pLCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djI3XyksIHN0YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2Fz
dDxUPih2MzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+
KHYzNF8pLCBzdGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2
XyksIHN0YXRpY19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxU
Pih2NDFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0
M18pLCBzdGF0aWNfY2FzdDxUPih2NDRfKX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlz
IHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDQmIG90aGVy
KTsKLQotICBjb25zdCBUMSB2MV87Ci0gIGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwot
ICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25z
dCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAg
djEwXzsKLSAgY29uc3QgVDExIHYxMV87Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMg
djEzXzsKLSAgY29uc3QgVDE0IHYxNF87Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYg
djE2XzsKLSAgY29uc3QgVDE3IHYxN187Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkg
djE5XzsKLSAgY29uc3QgVDIwIHYyMF87Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIg
djIyXzsKLSAgY29uc3QgVDIzIHYyM187Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUg
djI1XzsKLSAgY29uc3QgVDI2IHYyNl87Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjgg
djI4XzsKLSAgY29uc3QgVDI5IHYyOV87Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEg
djMxXzsKLSAgY29uc3QgVDMyIHYzMl87Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQg
djM0XzsKLSAgY29uc3QgVDM1IHYzNV87Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcg
djM3XzsKLSAgY29uc3QgVDM4IHYzOF87Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAg
djQwXzsKLSAgY29uc3QgVDQxIHY0MV87Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25zdCBUNDMg
djQzXzsKLSAgY29uc3QgVDQ0IHY0NF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5
cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2
LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAs
Ci0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUg
VDQ0LCB0eXBlbmFtZSBUNDU+Ci1jbGFzcyBWYWx1ZUFycmF5NDUgewotIHB1YmxpYzoKLSAgVmFs
dWVBcnJheTQ1KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSwgVDYgdjYsIFQ3IHY3
LCBUOCB2OCwgVDkgdjksCi0gICAgICBUMTAgdjEwLCBUMTEgdjExLCBUMTIgdjEyLCBUMTMgdjEz
LCBUMTQgdjE0LCBUMTUgdjE1LCBUMTYgdjE2LCBUMTcgdjE3LAotICAgICAgVDE4IHYxOCwgVDE5
IHYxOSwgVDIwIHYyMCwgVDIxIHYyMSwgVDIyIHYyMiwgVDIzIHYyMywgVDI0IHYyNCwgVDI1IHYy
NSwKLSAgICAgIFQyNiB2MjYsIFQyNyB2MjcsIFQyOCB2MjgsIFQyOSB2MjksIFQzMCB2MzAsIFQz
MSB2MzEsIFQzMiB2MzIsIFQzMyB2MzMsCi0gICAgICBUMzQgdjM0LCBUMzUgdjM1LCBUMzYgdjM2
LCBUMzcgdjM3LCBUMzggdjM4LCBUMzkgdjM5LCBUNDAgdjQwLCBUNDEgdjQxLAotICAgICAgVDQy
IHY0MiwgVDQzIHY0MywgVDQ0IHY0NCwgVDQ1IHY0NSkgOiB2MV8odjEpLCB2Ml8odjIpLCB2M18o
djMpLCB2NF8odjQpLAotICAgICAgdjVfKHY1KSwgdjZfKHY2KSwgdjdfKHY3KSwgdjhfKHY4KSwg
djlfKHY5KSwgdjEwXyh2MTApLCB2MTFfKHYxMSksCi0gICAgICB2MTJfKHYxMiksIHYxM18odjEz
KSwgdjE0Xyh2MTQpLCB2MTVfKHYxNSksIHYxNl8odjE2KSwgdjE3Xyh2MTcpLAotICAgICAgdjE4
Xyh2MTgpLCB2MTlfKHYxOSksIHYyMF8odjIwKSwgdjIxXyh2MjEpLCB2MjJfKHYyMiksIHYyM18o
djIzKSwKLSAgICAgIHYyNF8odjI0KSwgdjI1Xyh2MjUpLCB2MjZfKHYyNiksIHYyN18odjI3KSwg
djI4Xyh2MjgpLCB2MjlfKHYyOSksCi0gICAgICB2MzBfKHYzMCksIHYzMV8odjMxKSwgdjMyXyh2
MzIpLCB2MzNfKHYzMyksIHYzNF8odjM0KSwgdjM1Xyh2MzUpLAotICAgICAgdjM2Xyh2MzYpLCB2
MzdfKHYzNyksIHYzOF8odjM4KSwgdjM5Xyh2MzkpLCB2NDBfKHY0MCksIHY0MV8odjQxKSwKLSAg
ICAgIHY0Ml8odjQyKSwgdjQzXyh2NDMpLCB2NDRfKHY0NCksIHY0NV8odjQ1KSB7fQotCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0
IHsKLSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nh
c3Q8VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4o
djRfKSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwg
c3RhdGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8p
LAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0
YXRpY19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGlj
X2Nhc3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRp
Y19jYXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nh
c3Q8VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19j
YXN0PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8
VD4odjM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzZfKSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0
PFQ+KHY0MV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4o
djQzXyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVf
KX07Ci0gICAgcmV0dXJuIFZhbHVlc0luKGFycmF5KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8g
Tm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9w
ZXJhdG9yPShjb25zdCBWYWx1ZUFycmF5NDUmIG90aGVyKTsKLQotICBjb25zdCBUMSB2MV87Ci0g
IGNvbnN0IFQyIHYyXzsKLSAgY29uc3QgVDMgdjNfOwotICBjb25zdCBUNCB2NF87Ci0gIGNvbnN0
IFQ1IHY1XzsKLSAgY29uc3QgVDYgdjZfOwotICBjb25zdCBUNyB2N187Ci0gIGNvbnN0IFQ4IHY4
XzsKLSAgY29uc3QgVDkgdjlfOwotICBjb25zdCBUMTAgdjEwXzsKLSAgY29uc3QgVDExIHYxMV87
Ci0gIGNvbnN0IFQxMiB2MTJfOwotICBjb25zdCBUMTMgdjEzXzsKLSAgY29uc3QgVDE0IHYxNF87
Ci0gIGNvbnN0IFQxNSB2MTVfOwotICBjb25zdCBUMTYgdjE2XzsKLSAgY29uc3QgVDE3IHYxN187
Ci0gIGNvbnN0IFQxOCB2MThfOwotICBjb25zdCBUMTkgdjE5XzsKLSAgY29uc3QgVDIwIHYyMF87
Ci0gIGNvbnN0IFQyMSB2MjFfOwotICBjb25zdCBUMjIgdjIyXzsKLSAgY29uc3QgVDIzIHYyM187
Ci0gIGNvbnN0IFQyNCB2MjRfOwotICBjb25zdCBUMjUgdjI1XzsKLSAgY29uc3QgVDI2IHYyNl87
Ci0gIGNvbnN0IFQyNyB2MjdfOwotICBjb25zdCBUMjggdjI4XzsKLSAgY29uc3QgVDI5IHYyOV87
Ci0gIGNvbnN0IFQzMCB2MzBfOwotICBjb25zdCBUMzEgdjMxXzsKLSAgY29uc3QgVDMyIHYzMl87
Ci0gIGNvbnN0IFQzMyB2MzNfOwotICBjb25zdCBUMzQgdjM0XzsKLSAgY29uc3QgVDM1IHYzNV87
Ci0gIGNvbnN0IFQzNiB2MzZfOwotICBjb25zdCBUMzcgdjM3XzsKLSAgY29uc3QgVDM4IHYzOF87
Ci0gIGNvbnN0IFQzOSB2MzlfOwotICBjb25zdCBUNDAgdjQwXzsKLSAgY29uc3QgVDQxIHY0MV87
Ci0gIGNvbnN0IFQ0MiB2NDJfOwotICBjb25zdCBUNDMgdjQzXzsKLSAgY29uc3QgVDQ0IHY0NF87
Ci0gIGNvbnN0IFQ0NSB2NDVfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQy
OSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFt
ZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlw
ZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAg
IHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwg
dHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0Nj4KLWNsYXNzIFZhbHVlQXJyYXk0NiB7Ci0g
cHVibGljOgotICBWYWx1ZUFycmF5NDYoVDEgdjEsIFQyIHYyLCBUMyB2MywgVDQgdjQsIFQ1IHY1
LCBUNiB2NiwgVDcgdjcsIFQ4IHY4LCBUOSB2OSwKLSAgICAgIFQxMCB2MTAsIFQxMSB2MTEsIFQx
MiB2MTIsIFQxMyB2MTMsIFQxNCB2MTQsIFQxNSB2MTUsIFQxNiB2MTYsIFQxNyB2MTcsCi0gICAg
ICBUMTggdjE4LCBUMTkgdjE5LCBUMjAgdjIwLCBUMjEgdjIxLCBUMjIgdjIyLCBUMjMgdjIzLCBU
MjQgdjI0LCBUMjUgdjI1LAotICAgICAgVDI2IHYyNiwgVDI3IHYyNywgVDI4IHYyOCwgVDI5IHYy
OSwgVDMwIHYzMCwgVDMxIHYzMSwgVDMyIHYzMiwgVDMzIHYzMywKLSAgICAgIFQzNCB2MzQsIFQz
NSB2MzUsIFQzNiB2MzYsIFQzNyB2MzcsIFQzOCB2MzgsIFQzOSB2MzksIFQ0MCB2NDAsIFQ0MSB2
NDEsCi0gICAgICBUNDIgdjQyLCBUNDMgdjQzLCBUNDQgdjQ0LCBUNDUgdjQ1LCBUNDYgdjQ2KSA6
IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2MyksCi0gICAgICB2NF8odjQpLCB2NV8odjUpLCB2Nl8o
djYpLCB2N18odjcpLCB2OF8odjgpLCB2OV8odjkpLCB2MTBfKHYxMCksCi0gICAgICB2MTFfKHYx
MSksIHYxMl8odjEyKSwgdjEzXyh2MTMpLCB2MTRfKHYxNCksIHYxNV8odjE1KSwgdjE2Xyh2MTYp
LAotICAgICAgdjE3Xyh2MTcpLCB2MThfKHYxOCksIHYxOV8odjE5KSwgdjIwXyh2MjApLCB2MjFf
KHYyMSksIHYyMl8odjIyKSwKLSAgICAgIHYyM18odjIzKSwgdjI0Xyh2MjQpLCB2MjVfKHYyNSks
IHYyNl8odjI2KSwgdjI3Xyh2MjcpLCB2MjhfKHYyOCksCi0gICAgICB2MjlfKHYyOSksIHYzMF8o
djMwKSwgdjMxXyh2MzEpLCB2MzJfKHYzMiksIHYzM18odjMzKSwgdjM0Xyh2MzQpLAotICAgICAg
djM1Xyh2MzUpLCB2MzZfKHYzNiksIHYzN18odjM3KSwgdjM4Xyh2MzgpLCB2MzlfKHYzOSksIHY0
MF8odjQwKSwKLSAgICAgIHY0MV8odjQxKSwgdjQyXyh2NDIpLCB2NDNfKHY0MyksIHY0NF8odjQ0
KSwgdjQ1Xyh2NDUpLCB2NDZfKHY0Nikge30KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
b3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29uc3QgVCBhcnJheVtd
ID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRpY19jYXN0PFQ+KHY1
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0PFQ+KHY3XyksIHN0
YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5XyksIHN0YXRpY19j
YXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxUPih2MTRfKSwKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYxNl8pLCBzdGF0aWNf
Y2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4XyksIHN0YXRpY19jYXN0
PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4o
djIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2MjNfKSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8pLCBzdGF0aWNfY2Fz
dDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0YXRpY19jYXN0PFQ+
KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMw
XyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBzdGF0aWNfY2FzdDxU
Pih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRpY19jYXN0PFQ+KHYz
N18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM5Xyks
IHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0aWNfY2FzdDxUPih2
NDRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19jYXN0PFQ+KHY0Nl8p
fTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0NiYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAg
Y29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3Qg
VDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhf
OwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsK
LSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsK
LSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsK
LSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsK
LSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsK
LSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsK
LSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsK
LSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwotICBjb25zdCBUMzIgdjMyXzsK
LSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwotICBjb25zdCBUMzUgdjM1XzsK
LSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2MzdfOwotICBjb25zdCBUMzggdjM4XzsK
LSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2NDBfOwotICBjb25zdCBUNDEgdjQxXzsK
LSAgY29uc3QgVDQyIHY0Ml87Ci0gIGNvbnN0IFQ0MyB2NDNfOwotICBjb25zdCBUNDQgdjQ0XzsK
LSAgY29uc3QgVDQ1IHY0NV87Ci0gIGNvbnN0IFQ0NiB2NDZfOwotfTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFt
ZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFt
ZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBl
bmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwg
dHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAot
ICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQy
NCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFt
ZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlw
ZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAg
IHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwg
dHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBU
NDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5h
bWUgVDQ3PgotY2xhc3MgVmFsdWVBcnJheTQ3IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0NyhU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2
MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBU
MjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIg
djMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywg
VDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICAgIFQ0MiB2NDIsIFQ0MyB2
NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcpIDogdjFfKHYxKSwgdjJfKHYy
KSwKLSAgICAgIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksIHY4
Xyh2OCksIHY5Xyh2OSksIHYxMF8odjEwKSwKLSAgICAgIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2
MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLCB2MTZfKHYxNiksCi0gICAgICB2MTdfKHYx
NyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwgdjIyXyh2MjIp
LAotICAgICAgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLCB2Mjdf
KHYyNyksIHYyOF8odjI4KSwKLSAgICAgIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSks
IHYzMl8odjMyKSwgdjMzXyh2MzMpLCB2MzRfKHYzNCksCi0gICAgICB2MzVfKHYzNSksIHYzNl8o
djM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5KSwgdjQwXyh2NDApLAotICAgICAg
djQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLCB2NDVfKHY0NSksIHY0
Nl8odjQ2KSwKLSAgICAgIHY0N18odjQ3KSB7fQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsKLSAgICBjb25zdCBUIGFycmF5
W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8VD4odjJfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRfKSwgc3RhdGljX2Nhc3Q8VD4o
djVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3RhdGljX2Nhc3Q8VD4odjdfKSwg
c3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjlfKSwgc3RhdGlj
X2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRpY19jYXN0PFQ+KHYxNF8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nhc3Q8VD4odjE2XyksIHN0YXRp
Y19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MThfKSwgc3RhdGljX2Nh
c3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19jYXN0PFQ+KHYyM18pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8VD4odjI1XyksIHN0YXRpY19j
YXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjdfKSwgc3RhdGljX2Nhc3Q8
VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0PFQ+KHYzMl8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4odjM0XyksIHN0YXRpY19jYXN0
PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZfKSwgc3RhdGljX2Nhc3Q8VD4o
djM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Mzlf
KSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+KHY0MV8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQzXyksIHN0YXRpY19jYXN0PFQ+
KHY0NF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwgc3RhdGljX2Nhc3Q8VD4odjQ2
XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwot
ICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMg
dW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0NyYgb3RoZXIp
OwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0g
IGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0
IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2
MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2
MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2
MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2
MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2
MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2
MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2
MjhfOwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2
MzFfOwotICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2
MzRfOwotICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2
MzdfOwotICBjb25zdCBUMzggdjM4XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2
NDBfOwotICBjb25zdCBUNDEgdjQxXzsKLSAgY29uc3QgVDQyIHY0Ml87Ci0gIGNvbnN0IFQ0MyB2
NDNfOwotICBjb25zdCBUNDQgdjQ0XzsKLSAgY29uc3QgVDQ1IHY0NV87Ci0gIGNvbnN0IFQ0NiB2
NDZfOwotICBjb25zdCBUNDcgdjQ3XzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlw
ZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlw
ZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1l
IFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBl
bmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywg
dHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBU
MjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQy
NSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFt
ZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlw
ZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYs
IHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwK
LSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBU
NDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5h
bWUgVDQ4PgotY2xhc3MgVmFsdWVBcnJheTQ4IHsKLSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0OChU
MSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5
IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwg
VDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2
MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBU
MjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIg
djMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywg
VDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICAgIFQ0MiB2NDIsIFQ0MyB2
NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcsIFQ0OCB2NDgpIDogdjFfKHYx
KSwKLSAgICAgIHYyXyh2MiksIHYzXyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3
Xyh2NyksIHY4Xyh2OCksIHY5Xyh2OSksCi0gICAgICB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEy
Xyh2MTIpLCB2MTNfKHYxMyksIHYxNF8odjE0KSwgdjE1Xyh2MTUpLAotICAgICAgdjE2Xyh2MTYp
LCB2MTdfKHYxNyksIHYxOF8odjE4KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksIHYyMV8odjIxKSwK
LSAgICAgIHYyMl8odjIyKSwgdjIzXyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2
MjYpLCB2MjdfKHYyNyksCi0gICAgICB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2
MzFfKHYzMSksIHYzMl8odjMyKSwgdjMzXyh2MzMpLAotICAgICAgdjM0Xyh2MzQpLCB2MzVfKHYz
NSksIHYzNl8odjM2KSwgdjM3Xyh2MzcpLCB2MzhfKHYzOCksIHYzOV8odjM5KSwKLSAgICAgIHY0
MF8odjQwKSwgdjQxXyh2NDEpLCB2NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLCB2NDVf
KHY0NSksCi0gICAgICB2NDZfKHY0NiksIHY0N18odjQ3KSwgdjQ4Xyh2NDgpIHt9Ci0KLSAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3Qg
ewotICAgIGNvbnN0IFQgYXJyYXlbXSA9IHtzdGF0aWNfY2FzdDxUPih2MV8pLCBzdGF0aWNfY2Fz
dDxUPih2Ml8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2M18pLCBzdGF0aWNfY2FzdDxUPih2
NF8pLCBzdGF0aWNfY2FzdDxUPih2NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2Nl8pLCBz
dGF0aWNfY2FzdDxUPih2N18pLCBzdGF0aWNfY2FzdDxUPih2OF8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxUPih2OV8pLCBzdGF0aWNfY2FzdDxUPih2MTBfKSwgc3RhdGljX2Nhc3Q8VD4odjExXyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxMl8pLCBzdGF0aWNfY2FzdDxUPih2MTNfKSwgc3Rh
dGljX2Nhc3Q8VD4odjE0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYxNV8pLCBzdGF0aWNf
Y2FzdDxUPih2MTZfKSwgc3RhdGljX2Nhc3Q8VD4odjE3XyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFQ+KHYxOF8pLCBzdGF0aWNfY2FzdDxUPih2MTlfKSwgc3RhdGljX2Nhc3Q8VD4odjIwXyksCi0g
ICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyMV8pLCBzdGF0aWNfY2FzdDxUPih2MjJfKSwgc3RhdGlj
X2Nhc3Q8VD4odjIzXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYyNF8pLCBzdGF0aWNfY2Fz
dDxUPih2MjVfKSwgc3RhdGljX2Nhc3Q8VD4odjI2XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+
KHYyN18pLCBzdGF0aWNfY2FzdDxUPih2MjhfKSwgc3RhdGljX2Nhc3Q8VD4odjI5XyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFQ+KHYzMF8pLCBzdGF0aWNfY2FzdDxUPih2MzFfKSwgc3RhdGljX2Nh
c3Q8VD4odjMyXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzM18pLCBzdGF0aWNfY2FzdDxU
Pih2MzRfKSwgc3RhdGljX2Nhc3Q8VD4odjM1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYz
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MzdfKSwgc3RhdGljX2Nhc3Q8VD4odjM4XyksCi0gICAgICAg
IHN0YXRpY19jYXN0PFQ+KHYzOV8pLCBzdGF0aWNfY2FzdDxUPih2NDBfKSwgc3RhdGljX2Nhc3Q8
VD4odjQxXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0Ml8pLCBzdGF0aWNfY2FzdDxUPih2
NDNfKSwgc3RhdGljX2Nhc3Q8VD4odjQ0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY0NV8p
LCBzdGF0aWNfY2FzdDxUPih2NDZfKSwgc3RhdGljX2Nhc3Q8VD4odjQ3XyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFQ+KHY0OF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0K
LSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0OCYgb3RoZXIpOwotCi0g
IGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0
IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3
XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwot
ICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwot
ICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwot
ICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwot
ICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwot
ICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwot
ICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwot
ICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwot
ICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwot
ICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2MzdfOwot
ICBjb25zdCBUMzggdjM4XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2NDBfOwot
ICBjb25zdCBUNDEgdjQxXzsKLSAgY29uc3QgVDQyIHY0Ml87Ci0gIGNvbnN0IFQ0MyB2NDNfOwot
ICBjb25zdCBUNDQgdjQ0XzsKLSAgY29uc3QgVDQ1IHY0NV87Ci0gIGNvbnN0IFQ0NiB2NDZfOwot
ICBjb25zdCBUNDcgdjQ3XzsKLSAgY29uc3QgVDQ4IHY0OF87Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVu
YW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0
eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0g
ICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0
LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1l
IFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBl
bmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAg
dHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0
eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0
MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFt
ZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5PgotY2xhc3MgVmFsdWVBcnJheTQ5IHsK
LSBwdWJsaWM6Ci0gIFZhbHVlQXJyYXk0OShUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUg
djUsIFQ2IHY2LCBUNyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwg
VDEyIHYxMiwgVDEzIHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAg
ICAgIFQxOCB2MTgsIFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMs
IFQyNCB2MjQsIFQyNSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkg
djI5LCBUMzAgdjMwLCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwg
VDM1IHYzNSwgVDM2IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQx
IHY0MSwKLSAgICAgIFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYs
IFQ0NyB2NDcsIFQ0OCB2NDgsCi0gICAgICBUNDkgdjQ5KSA6IHYxXyh2MSksIHYyXyh2MiksIHYz
Xyh2MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgp
LCB2OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYx
NF8odjE0KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4
KSwgdjE5Xyh2MTkpLCB2MjBfKHYyMCksCi0gICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIz
Xyh2MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAotICAgICAgdjI3Xyh2Mjcp
LCB2MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwK
LSAgICAgIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2
MzcpLCB2MzhfKHYzOCksCi0gICAgICB2MzlfKHYzOSksIHY0MF8odjQwKSwgdjQxXyh2NDEpLCB2
NDJfKHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLAotICAgICAgdjQ1Xyh2NDUpLCB2NDZfKHY0
NiksIHY0N18odjQ3KSwgdjQ4Xyh2NDgpLCB2NDlfKHY0OSkge30KLQotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8VD4oKSBjb25zdCB7Ci0gICAgY29u
c3QgVCBhcnJheVtdID0ge3N0YXRpY19jYXN0PFQ+KHYxXyksIHN0YXRpY19jYXN0PFQ+KHYyXyks
Ci0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHYzXyksIHN0YXRpY19jYXN0PFQ+KHY0XyksIHN0YXRp
Y19jYXN0PFQ+KHY1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY2XyksIHN0YXRpY19jYXN0
PFQ+KHY3XyksIHN0YXRpY19jYXN0PFQ+KHY4XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFQ+KHY5
XyksIHN0YXRpY19jYXN0PFQ+KHYxMF8pLCBzdGF0aWNfY2FzdDxUPih2MTFfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8VD4odjEyXyksIHN0YXRpY19jYXN0PFQ+KHYxM18pLCBzdGF0aWNfY2FzdDxU
Pih2MTRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE1XyksIHN0YXRpY19jYXN0PFQ+KHYx
Nl8pLCBzdGF0aWNfY2FzdDxUPih2MTdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjE4Xyks
IHN0YXRpY19jYXN0PFQ+KHYxOV8pLCBzdGF0aWNfY2FzdDxUPih2MjBfKSwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8VD4odjIxXyksIHN0YXRpY19jYXN0PFQ+KHYyMl8pLCBzdGF0aWNfY2FzdDxUPih2
MjNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI0XyksIHN0YXRpY19jYXN0PFQ+KHYyNV8p
LCBzdGF0aWNfY2FzdDxUPih2MjZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjI3XyksIHN0
YXRpY19jYXN0PFQ+KHYyOF8pLCBzdGF0aWNfY2FzdDxUPih2MjlfKSwKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8VD4odjMwXyksIHN0YXRpY19jYXN0PFQ+KHYzMV8pLCBzdGF0aWNfY2FzdDxUPih2MzJf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjMzXyksIHN0YXRpY19jYXN0PFQ+KHYzNF8pLCBz
dGF0aWNfY2FzdDxUPih2MzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjM2XyksIHN0YXRp
Y19jYXN0PFQ+KHYzN18pLCBzdGF0aWNfY2FzdDxUPih2MzhfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjM5XyksIHN0YXRpY19jYXN0PFQ+KHY0MF8pLCBzdGF0aWNfY2FzdDxUPih2NDFfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQyXyksIHN0YXRpY19jYXN0PFQ+KHY0M18pLCBzdGF0
aWNfY2FzdDxUPih2NDRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjQ1XyksIHN0YXRpY19j
YXN0PFQ+KHY0Nl8pLCBzdGF0aWNfY2FzdDxUPih2NDdfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8
VD4odjQ4XyksIHN0YXRpY19jYXN0PFQ+KHY0OV8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJy
YXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1l
bnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk0OSYg
b3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsKLSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2
M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29uc3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0g
IGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDggdjhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0
IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjExXzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0
IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0
IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0
IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIwXzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0
IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIzXzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0
IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0
IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0
IFQzMSB2MzFfOwotICBjb25zdCBUMzIgdjMyXzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0
IFQzNCB2MzRfOwotICBjb25zdCBUMzUgdjM1XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0
IFQzNyB2MzdfOwotICBjb25zdCBUMzggdjM4XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0
IFQ0MCB2NDBfOwotICBjb25zdCBUNDEgdjQxXzsKLSAgY29uc3QgVDQyIHY0Ml87Ci0gIGNvbnN0
IFQ0MyB2NDNfOwotICBjb25zdCBUNDQgdjQ0XzsKLSAgY29uc3QgVDQ1IHY0NV87Ci0gIGNvbnN0
IFQ0NiB2NDZfOwotICBjb25zdCBUNDcgdjQ3XzsKLSAgY29uc3QgVDQ4IHY0OF87Ci0gIGNvbnN0
IFQ0OSB2NDlfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVu
YW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5h
bWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5
cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3
LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1l
IFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUg
VDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVu
YW1lIFQ0OSwgdHlwZW5hbWUgVDUwPgotY2xhc3MgVmFsdWVBcnJheTUwIHsKLSBwdWJsaWM6Ci0g
IFZhbHVlQXJyYXk1MChUMSB2MSwgVDIgdjIsIFQzIHYzLCBUNCB2NCwgVDUgdjUsIFQ2IHY2LCBU
NyB2NywgVDggdjgsIFQ5IHY5LAotICAgICAgVDEwIHYxMCwgVDExIHYxMSwgVDEyIHYxMiwgVDEz
IHYxMywgVDE0IHYxNCwgVDE1IHYxNSwgVDE2IHYxNiwgVDE3IHYxNywKLSAgICAgIFQxOCB2MTgs
IFQxOSB2MTksIFQyMCB2MjAsIFQyMSB2MjEsIFQyMiB2MjIsIFQyMyB2MjMsIFQyNCB2MjQsIFQy
NSB2MjUsCi0gICAgICBUMjYgdjI2LCBUMjcgdjI3LCBUMjggdjI4LCBUMjkgdjI5LCBUMzAgdjMw
LCBUMzEgdjMxLCBUMzIgdjMyLCBUMzMgdjMzLAotICAgICAgVDM0IHYzNCwgVDM1IHYzNSwgVDM2
IHYzNiwgVDM3IHYzNywgVDM4IHYzOCwgVDM5IHYzOSwgVDQwIHY0MCwgVDQxIHY0MSwKLSAgICAg
IFQ0MiB2NDIsIFQ0MyB2NDMsIFQ0NCB2NDQsIFQ0NSB2NDUsIFQ0NiB2NDYsIFQ0NyB2NDcsIFQ0
OCB2NDgsIFQ0OSB2NDksCi0gICAgICBUNTAgdjUwKSA6IHYxXyh2MSksIHYyXyh2MiksIHYzXyh2
MyksIHY0Xyh2NCksIHY1Xyh2NSksIHY2Xyh2NiksIHY3Xyh2NyksCi0gICAgICB2OF8odjgpLCB2
OV8odjkpLCB2MTBfKHYxMCksIHYxMV8odjExKSwgdjEyXyh2MTIpLCB2MTNfKHYxMyksIHYxNF8o
djE0KSwKLSAgICAgIHYxNV8odjE1KSwgdjE2Xyh2MTYpLCB2MTdfKHYxNyksIHYxOF8odjE4KSwg
djE5Xyh2MTkpLCB2MjBfKHYyMCksCi0gICAgICB2MjFfKHYyMSksIHYyMl8odjIyKSwgdjIzXyh2
MjMpLCB2MjRfKHYyNCksIHYyNV8odjI1KSwgdjI2Xyh2MjYpLAotICAgICAgdjI3Xyh2MjcpLCB2
MjhfKHYyOCksIHYyOV8odjI5KSwgdjMwXyh2MzApLCB2MzFfKHYzMSksIHYzMl8odjMyKSwKLSAg
ICAgIHYzM18odjMzKSwgdjM0Xyh2MzQpLCB2MzVfKHYzNSksIHYzNl8odjM2KSwgdjM3Xyh2Mzcp
LCB2MzhfKHYzOCksCi0gICAgICB2MzlfKHYzOSksIHY0MF8odjQwKSwgdjQxXyh2NDEpLCB2NDJf
KHY0MiksIHY0M18odjQzKSwgdjQ0Xyh2NDQpLAotICAgICAgdjQ1Xyh2NDUpLCB2NDZfKHY0Niks
IHY0N18odjQ3KSwgdjQ4Xyh2NDgpLCB2NDlfKHY0OSksIHY1MF8odjUwKSB7fQotCi0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjxUPigpIGNvbnN0IHsK
LSAgICBjb25zdCBUIGFycmF5W10gPSB7c3RhdGljX2Nhc3Q8VD4odjFfKSwgc3RhdGljX2Nhc3Q8
VD4odjJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjNfKSwgc3RhdGljX2Nhc3Q8VD4odjRf
KSwgc3RhdGljX2Nhc3Q8VD4odjVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8VD4odjZfKSwgc3Rh
dGljX2Nhc3Q8VD4odjdfKSwgc3RhdGljX2Nhc3Q8VD4odjhfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8VD4odjlfKSwgc3RhdGljX2Nhc3Q8VD4odjEwXyksIHN0YXRpY19jYXN0PFQ+KHYxMV8pLAot
ICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTJfKSwgc3RhdGljX2Nhc3Q8VD4odjEzXyksIHN0YXRp
Y19jYXN0PFQ+KHYxNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MTVfKSwgc3RhdGljX2Nh
c3Q8VD4odjE2XyksIHN0YXRpY19jYXN0PFQ+KHYxN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxU
Pih2MThfKSwgc3RhdGljX2Nhc3Q8VD4odjE5XyksIHN0YXRpY19jYXN0PFQ+KHYyMF8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxUPih2MjFfKSwgc3RhdGljX2Nhc3Q8VD4odjIyXyksIHN0YXRpY19j
YXN0PFQ+KHYyM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MjRfKSwgc3RhdGljX2Nhc3Q8
VD4odjI1XyksIHN0YXRpY19jYXN0PFQ+KHYyNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2
MjdfKSwgc3RhdGljX2Nhc3Q8VD4odjI4XyksIHN0YXRpY19jYXN0PFQ+KHYyOV8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxUPih2MzBfKSwgc3RhdGljX2Nhc3Q8VD4odjMxXyksIHN0YXRpY19jYXN0
PFQ+KHYzMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzNfKSwgc3RhdGljX2Nhc3Q8VD4o
djM0XyksIHN0YXRpY19jYXN0PFQ+KHYzNV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2MzZf
KSwgc3RhdGljX2Nhc3Q8VD4odjM3XyksIHN0YXRpY19jYXN0PFQ+KHYzOF8pLAotICAgICAgICBz
dGF0aWNfY2FzdDxUPih2MzlfKSwgc3RhdGljX2Nhc3Q8VD4odjQwXyksIHN0YXRpY19jYXN0PFQ+
KHY0MV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDJfKSwgc3RhdGljX2Nhc3Q8VD4odjQz
XyksIHN0YXRpY19jYXN0PFQ+KHY0NF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxUPih2NDVfKSwg
c3RhdGljX2Nhc3Q8VD4odjQ2XyksIHN0YXRpY19jYXN0PFQ+KHY0N18pLAotICAgICAgICBzdGF0
aWNfY2FzdDxUPih2NDhfKSwgc3RhdGljX2Nhc3Q8VD4odjQ5XyksIHN0YXRpY19jYXN0PFQ+KHY1
MF8pfTsKLSAgICByZXR1cm4gVmFsdWVzSW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAv
LyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQg
b3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJyYXk1MCYgb3RoZXIpOwotCi0gIGNvbnN0IFQxIHYxXzsK
LSAgY29uc3QgVDIgdjJfOwotICBjb25zdCBUMyB2M187Ci0gIGNvbnN0IFQ0IHY0XzsKLSAgY29u
c3QgVDUgdjVfOwotICBjb25zdCBUNiB2Nl87Ci0gIGNvbnN0IFQ3IHY3XzsKLSAgY29uc3QgVDgg
djhfOwotICBjb25zdCBUOSB2OV87Ci0gIGNvbnN0IFQxMCB2MTBfOwotICBjb25zdCBUMTEgdjEx
XzsKLSAgY29uc3QgVDEyIHYxMl87Ci0gIGNvbnN0IFQxMyB2MTNfOwotICBjb25zdCBUMTQgdjE0
XzsKLSAgY29uc3QgVDE1IHYxNV87Ci0gIGNvbnN0IFQxNiB2MTZfOwotICBjb25zdCBUMTcgdjE3
XzsKLSAgY29uc3QgVDE4IHYxOF87Ci0gIGNvbnN0IFQxOSB2MTlfOwotICBjb25zdCBUMjAgdjIw
XzsKLSAgY29uc3QgVDIxIHYyMV87Ci0gIGNvbnN0IFQyMiB2MjJfOwotICBjb25zdCBUMjMgdjIz
XzsKLSAgY29uc3QgVDI0IHYyNF87Ci0gIGNvbnN0IFQyNSB2MjVfOwotICBjb25zdCBUMjYgdjI2
XzsKLSAgY29uc3QgVDI3IHYyN187Ci0gIGNvbnN0IFQyOCB2MjhfOwotICBjb25zdCBUMjkgdjI5
XzsKLSAgY29uc3QgVDMwIHYzMF87Ci0gIGNvbnN0IFQzMSB2MzFfOwotICBjb25zdCBUMzIgdjMy
XzsKLSAgY29uc3QgVDMzIHYzM187Ci0gIGNvbnN0IFQzNCB2MzRfOwotICBjb25zdCBUMzUgdjM1
XzsKLSAgY29uc3QgVDM2IHYzNl87Ci0gIGNvbnN0IFQzNyB2MzdfOwotICBjb25zdCBUMzggdjM4
XzsKLSAgY29uc3QgVDM5IHYzOV87Ci0gIGNvbnN0IFQ0MCB2NDBfOwotICBjb25zdCBUNDEgdjQx
XzsKLSAgY29uc3QgVDQyIHY0Ml87Ci0gIGNvbnN0IFQ0MyB2NDNfOwotICBjb25zdCBUNDQgdjQ0
XzsKLSAgY29uc3QgVDQ1IHY0NV87Ci0gIGNvbnN0IFQ0NiB2NDZfOwotICBjb25zdCBUNDcgdjQ3
XzsKLSAgY29uc3QgVDQ4IHY0OF87Ci0gIGNvbnN0IFQ0OSB2NDlfOwotICBjb25zdCBUNTAgdjUw
XzsKLX07Ci0KLSMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKLS8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gR2VuZXJhdGVzIHZhbHVlcyBm
cm9tIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB2YWx1ZXMgcHJvZHVjZWQKLS8vIGJ5IHRoZSBh
cmd1bWVudCBnZW5lcmF0b3JzLgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMgotICAgIDogcHVibGljIFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMj4gPiB7Ci0gcHVibGlj
OgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyPiBQYXJhbVR5cGU7Ci0KLSAgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKLSAg
ICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIpCi0gICAgICA6IGcxXyhnMSksIGcyXyhn
Mikge30KLSAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjIoKSB7fQotCi0gIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsK
LSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJf
LmJlZ2luKCkpOwotICB9Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBFbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcx
Xy5lbmQoKSwgZzJfLCBnMl8uZW5kKCkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBJdGVy
YXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4gewotICAgcHVi
bGljOgotICAgIEl0ZXJhdG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlw
ZT4qIGJhc2UsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29u
c3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCi0gICAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciYgY3VycmVudDIpCi0gICAgICAgIDogYmFzZV8oYmFz
ZSksCi0gICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5kKCkpLCBjdXJy
ZW50MV8oY3VycmVudDEpLAotICAgICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSksIGVuZDJfKGcy
LmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZh
bHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigp
IGNvbnN0IHsKLSAgICAgIHJldHVybiBiYXNlXzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91
bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28g
bm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhl
ci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7
Ci0gICAgICArK2N1cnJlbnQyXzsKLSAgICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAg
ICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKLSAgICAgICAgKytjdXJyZW50MV87Ci0gICAgICB9
Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVy
biBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlw
ZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1
YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBv
dGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1
YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1l
IHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJh
dG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3Jh
bSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRp
ZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0b3Iq
IHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29u
c3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMg
ZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2
ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAg
ICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQo
KSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKLSAgICAgICAgICgKLSAgICAgICAgICBjdXJy
ZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQxXyAmJgotICAgICAgICAgIGN1cnJlbnQyXyA9
PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRl
cmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2Vf
KSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8ob3RoZXIu
ZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAgICAgYmVn
aW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAotICAgICAg
ICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVl
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewotICAgICAgaWYg
KCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfKTsKLSAgICB9Ci0gICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKLSAgICAgIC8v
IFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBl
aXRoZXIgb2YgdGhlCi0gICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhhcyByZWFjaGVkIHRo
ZSBlbmQgb2YgaXRzIHJhbmdlLgotICAgICAgcmV0dXJuCi0gICAgICAgICAgY3VycmVudDFfID09
IGVuZDFfIHx8Ci0gICAgICAgICAgY3VycmVudDJfID09IGVuZDJfOwotICAgIH0KLQotICAgIC8v
IE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgICB2b2lk
IG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpOwotCi0gICAgY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87Ci0gICAgLy8gYmVnaW5baV1f
IGFuZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0ZXJhdG9yIHRyYXZlcnNl
cy4KLSAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZlcnNpbmcgaXRlcmF0b3Iu
Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBiZWdpbjFf
OwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgZW5kMV87
Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBjdXJyZW50MV87Ci0g
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBiZWdpbjJfOwot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87Ci0g
ICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJyZW50Ml87Ci0gICAg
UGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOwotICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjI6Okl0ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yMiYgb3RoZXIpOwotCi0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiBnMV87
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiBnMl87Ci19OyAgLy8gY2xhc3MgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjIKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMz4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzCi0gICAgOiBw
dWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBU
Mz4gPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMz4g
UGFyYW1UeXBlOwotCi0gIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczKQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpIHt9Ci0gIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IzKCkge30KLQotICB2
aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmVnaW4oKSBjb25zdCB7
Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5iZWdpbigpLCBnMl8sIGcy
Xy5iZWdpbigpLCBnM18sCi0gICAgICAgIGczXy5iZWdpbigpKTsKLSAgfQotICB2aXJ0dWFsIFBh
cmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkgY29uc3QgewotICAgIHJldHVy
biBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uZW5kKCksIGcyXywgZzJfLmVuZCgpLCBnM18s
IGczXy5lbmQoKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGlj
IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRl
cmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKLSAg
ICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQyPiYgZzIsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Mj46Oml0ZXJhdG9yJiBjdXJyZW50MiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYg
ZzMsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBj
dXJyZW50MykKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwKLSAgICAgICAgICBiZWdpbjFfKGcxLmJl
Z2luKCkpLCBlbmQxXyhnMS5lbmQoKSksIGN1cnJlbnQxXyhjdXJyZW50MSksCi0gICAgICAgICAg
YmVnaW4yXyhnMi5iZWdpbigpKSwgZW5kMl8oZzIuZW5kKCkpLCBjdXJyZW50Ml8oY3VycmVudDIp
LAotICAgICAgICAgIGJlZ2luM18oZzMuYmVnaW4oKSksIGVuZDNfKGczLmVuZCgpKSwgY3VycmVu
dDNfKGN1cnJlbnQzKSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQot
ICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAg
IHJldHVybiBiYXNlXzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxl
ZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0
ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFs
IHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJl
bnQzXzsKLSAgICAgIGlmIChjdXJyZW50M18gPT0gZW5kM18pIHsKLSAgICAgICAgY3VycmVudDNf
ID0gYmVnaW4zXzsKLSAgICAgICAgKytjdXJyZW50Ml87Ci0gICAgICB9Ci0gICAgICBpZiAoY3Vy
cmVudDJfID09IGVuZDJfKSB7Ci0gICAgICAgIGN1cnJlbnQyXyA9IGJlZ2luMl87Ci0gICAgICAg
ICsrY3VycmVudDFfOwotICAgICAgfQotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAg
IH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQ2xvbmUo
KSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAg
dmlydHVhbCBjb25zdCBQYXJhbVR5cGUqIEN1cnJlbnQoKSBjb25zdCB7IHJldHVybiAmY3VycmVu
dF92YWx1ZV87IH0KLSAgICB2aXJ0dWFsIGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUg
c2FtZSBiYXNlIGdlbmVyYXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBp
dGVyYXRvciBpcyBvZiB0aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBH
VEVTVF9DSEVDS18oQmFzZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAg
ICAgICAgICA8PCAiVGhlIHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIK
LSAgICAgICAgICA8PCAiZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgIGNvbnN0IEl0ZXJhdG9yKiB0eXBlZF9vdGhlciA9Ci0gICAgICAgICAgQ2hlY2tlZERv
d25jYXN0VG9BY3R1YWxUeXBlPGNvbnN0IEl0ZXJhdG9yPigmb3RoZXIpOwotICAgICAgLy8gV2Ug
bXVzdCByZXBvcnQgaXRlcmF0b3JzIGVxdWFsIGlmIHRoZXkgYm90aCBwb2ludCBiZXlvbmQgdGhl
aXIKLSAgICAgIC8vIHJlc3BlY3RpdmUgcmFuZ2VzLiBUaGF0IGNhbiBoYXBwZW4gaW4gYSB2YXJp
ZXR5IG9mIGZhc2hpb25zLAotICAgICAgLy8gc28gd2UgaGF2ZSB0byBjb25zdWx0IEF0RW5kKCku
Ci0gICAgICByZXR1cm4gKEF0RW5kKCkgJiYgdHlwZWRfb3RoZXItPkF0RW5kKCkpIHx8Ci0gICAg
ICAgICAoCi0gICAgICAgICAgY3VycmVudDFfID09IHR5cGVkX290aGVyLT5jdXJyZW50MV8gJiYK
LSAgICAgICAgICBjdXJyZW50Ml8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQyXyAmJgotICAgICAg
ICAgIGN1cnJlbnQzXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDNfKTsKLSAgICB9Ci0KLSAgIHBy
aXZhdGU6Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJh
c2VfKG90aGVyLmJhc2VfKSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAg
ICAgZW5kMV8ob3RoZXIuZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFf
KSwKLSAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIu
ZW5kMl8pLAotICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAgICAgYmVn
aW4zXyhvdGhlci5iZWdpbjNfKSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAotICAgICAg
ICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVl
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewotICAgICAgaWYg
KCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFf
LCAqY3VycmVudDJfLCAqY3VycmVudDNfKTsKLSAgICB9Ci0gICAgYm9vbCBBdEVuZCgpIGNvbnN0
IHsKLSAgICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUg
cmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhlCi0gICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhh
cyByZWFjaGVkIHRoZSBlbmQgb2YgaXRzIHJhbmdlLgotICAgICAgcmV0dXJuCi0gICAgICAgICAg
Y3VycmVudDFfID09IGVuZDFfIHx8Ci0gICAgICAgICAgY3VycmVudDJfID09IGVuZDJfIHx8Ci0g
ICAgICAgICAgY3VycmVudDNfID09IGVuZDNfOwotICAgIH0KLQotICAgIC8vIE5vIGltcGxlbWVu
dGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgICB2b2lkIG9wZXJhdG9yPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpOwotCi0gICAgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87Ci0gICAgLy8gYmVnaW5baV1fIGFuZCBlbmRbaV1f
IGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0ZXJhdG9yIHRyYXZlcnNlcy4KLSAgICAvLyBj
dXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZlcnNpbmcgaXRlcmF0b3IuCi0gICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBiZWdpbjFfOwotICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgZW5kMV87Ci0gICAgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBjdXJyZW50MV87Ci0gICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBiZWdpbjJfOwotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgZW5kMl87Ci0gICAgdHlwZW5hbWUg
UGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJyZW50Ml87Ci0gICAgY29uc3QgdHlwZW5h
bWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBiZWdpbjNfOwotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgZW5kM187Ci0gICAgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBjdXJyZW50M187Ci0gICAgUGFyYW1UeXBlIGN1cnJl
bnRfdmFsdWVfOwotICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjM6Okl0
ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9y
dGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMyYg
b3RoZXIpOwotCi0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiBnMV87Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQyPiBnMl87Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiBnM187Ci19OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjMKLQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci1jbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNAotICAgIDogcHVibGljIFBhcmFtR2VuZXJhdG9ySW50ZXJm
YWNlPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+IHsKLSBwdWJsaWM6Ci0gIHR5
cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUND4gUGFyYW1UeXBlOwotCi0gIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0g
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCkKLSAgICAgIDogZzFf
KGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSB7fQotICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Q
cm9kdWN0R2VuZXJhdG9yNCgpIHt9Ci0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIEJlZ2luKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhp
cywgZzFfLCBnMV8uYmVnaW4oKSwgZzJfLCBnMl8uYmVnaW4oKSwgZzNfLAotICAgICAgICBnM18u
YmVnaW4oKSwgZzRfLCBnNF8uYmVnaW4oKSk7Ci0gIH0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9y
SW50ZXJmYWNlPFBhcmFtVHlwZT4qIEVuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJh
dG9yKHRoaXMsIGcxXywgZzFfLmVuZCgpLCBnMl8sIGcyXy5lbmQoKSwgZzNfLCBnM18uZW5kKCks
Ci0gICAgICAgIGc0XywgZzRfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY2xhc3MgSXRl
cmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+IHsKLSAgIHB1
YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJlbnQxLAotICAg
ICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAotICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQz
Pjo6aXRlcmF0b3ImIGN1cnJlbnQzLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBn
NCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3ImIGN1
cnJlbnQ0KQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2luMV8oZzEuYmVn
aW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAgICAgICAgICBi
ZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50Miks
Ci0gICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50
M18oY3VycmVudDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVu
ZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVl
KCk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29u
c3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNv
bnN0IHsKLSAgICAgIHJldHVybiBiYXNlXzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQg
bm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8g
Y29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4K
LSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0g
ICAgICArK2N1cnJlbnQ0XzsKLSAgICAgIGlmIChjdXJyZW50NF8gPT0gZW5kNF8pIHsKLSAgICAg
ICAgY3VycmVudDRfID0gYmVnaW40XzsKLSAgICAgICAgKytjdXJyZW50M187Ci0gICAgICB9Ci0g
ICAgICBpZiAoY3VycmVudDNfID09IGVuZDNfKSB7Ci0gICAgICAgIGN1cnJlbnQzXyA9IGJlZ2lu
M187Ci0gICAgICAgICsrY3VycmVudDJfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQyXyA9
PSBlbmQyXykgewotICAgICAgICBjdXJyZW50Ml8gPSBiZWdpbjJfOwotICAgICAgICArK2N1cnJl
bnQxXzsKLSAgICAgIH0KLSAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9Ci0gICAg
dmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIENsb25lKCkgY29uc3Qg
ewotICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7Ci0gICAgfQotICAgIHZpcnR1YWwg
Y29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1cm4gJmN1cnJlbnRfdmFsdWVf
OyB9Ci0gICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFz
ZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgotICAgICAgLy8gaXRlcmF0b3Ig
aXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0LgotICAgICAgR1RFU1RfQ0hF
Q0tfKEJhc2VHZW5lcmF0b3IoKSA9PSBvdGhlci5CYXNlR2VuZXJhdG9yKCkpCi0gICAgICAgICAg
PDwgIlRoZSBwcm9ncmFtIGF0dGVtcHRlZCB0byBjb21wYXJlIGl0ZXJhdG9ycyAiCi0gICAgICAg
ICAgPDwgImZyb20gZGlmZmVyZW50IGdlbmVyYXRvcnMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICBj
b25zdCBJdGVyYXRvciogdHlwZWRfb3RoZXIgPQotICAgICAgICAgIENoZWNrZWREb3duY2FzdFRv
QWN0dWFsVHlwZTxjb25zdCBJdGVyYXRvcj4oJm90aGVyKTsKLSAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9ycyBlcXVhbCBpZiB0aGV5IGJvdGggcG9pbnQgYmV5b25kIHRoZWlyCi0gICAg
ICAvLyByZXNwZWN0aXZlIHJhbmdlcy4gVGhhdCBjYW4gaGFwcGVuIGluIGEgdmFyaWV0eSBvZiBm
YXNoaW9ucywKLSAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY29uc3VsdCBBdEVuZCgpLgotICAgICAg
cmV0dXJuIChBdEVuZCgpICYmIHR5cGVkX290aGVyLT5BdEVuZCgpKSB8fAotICAgICAgICAgKAot
ICAgICAgICAgIGN1cnJlbnQxXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDFfICYmCi0gICAgICAg
ICAgY3VycmVudDJfID09IHR5cGVkX290aGVyLT5jdXJyZW50Ml8gJiYKLSAgICAgICAgICBjdXJy
ZW50M18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQzXyAmJgotICAgICAgICAgIGN1cnJlbnQ0XyA9
PSB0eXBlZF9vdGhlci0+Y3VycmVudDRfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRl
cmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2Vf
KSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8ob3RoZXIu
ZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAgICAgYmVn
aW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAotICAgICAg
ICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdp
bjNfKSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAotICAgICAgICBjdXJyZW50M18ob3Ro
ZXIuY3VycmVudDNfKSwKLSAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKLSAgICAgICAg
ZW5kNF8ob3RoZXIuZW5kNF8pLAotICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSB7
Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRl
Q3VycmVudFZhbHVlKCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3Zh
bHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAg
ICAgICAgICAgKmN1cnJlbnQ0Xyk7Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0g
ICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdl
IHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVh
Y2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgotICAgICAgICAgIGN1cnJl
bnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAotICAgICAg
ICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAotICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XzsK
LSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBw
b3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAg
IGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwot
ICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJ
dGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2
ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6
aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46
Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0
b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRl
cmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0
ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3Ig
Y3VycmVudDJfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0
b3IgYmVnaW4zXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJh
dG9yIGVuZDNfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3Vy
cmVudDNfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3Ig
YmVnaW40XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9y
IGVuZDRfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVu
dDRfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKLSAgfTsgIC8vIGNsYXNzIENhcnRl
c2lhblByb2R1Y3RHZW5lcmF0b3I0OjpJdGVyYXRvcgotCi0gIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQmIG90aGVyKTsKLQotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOwotICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4gZzNfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOwotfTsg
IC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I0Ci0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NT4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1Ci0gICAgOiBwdWJsaWMgUGFyYW1H
ZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+
IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwg
VDU+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNShjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ0PiYgZzQsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ1PiYgZzUpCi0gICAgICA6IGcxXyhnMSks
IGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSkge30KLSAgdmlydHVhbCB+Q2FydGVz
aWFuUHJvZHVjdEdlbmVyYXRvcjUoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVy
ZmFjZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9y
KHRoaXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAg
ZzNfLmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCkpOwotICB9Ci0g
IHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7
Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBnMl8u
ZW5kKCksIGczXywgZzNfLmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQoKSwgZzVfLCBnNV8u
ZW5kKCkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4gewotICAgcHVibGljOgotICAgIEl0ZXJhdG9y
KGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGJhc2UsCi0gICAgICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUMj4mIGcyLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+Ojpp
dGVyYXRvciYgY3VycmVudDIsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLAot
ICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciYgY3VycmVu
dDMsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LAotICAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciYgY3VycmVudDQsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDU+OjppdGVyYXRvciYgY3VycmVudDUpCi0gICAgICAgIDogYmFzZV8oYmFzZSksCi0g
ICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5kKCkpLCBjdXJyZW50MV8o
Y3VycmVudDEpLAotICAgICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSksIGVuZDJfKGcyLmVuZCgp
KSwgY3VycmVudDJfKGN1cnJlbnQyKSwKLSAgICAgICAgICBiZWdpbjNfKGczLmJlZ2luKCkpLCBl
bmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhjdXJyZW50MyksCi0gICAgICAgICAgYmVnaW40Xyhn
NC5iZWdpbigpKSwgZW5kNF8oZzQuZW5kKCkpLCBjdXJyZW50NF8oY3VycmVudDQpLAotICAgICAg
ICAgIGJlZ2luNV8oZzUuYmVnaW4oKSksIGVuZDVfKGc1LmVuZCgpKSwgY3VycmVudDVfKGN1cnJl
bnQ1KSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1
YWwgfkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRl
cmZhY2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBi
YXNlXzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlv
bmQtb2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBt
dXN0IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2
YW5jZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJlbnQ1XzsKLSAg
ICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKLSAgICAgICAgY3VycmVudDVfID0gYmVnaW41
XzsKLSAgICAgICAgKytjdXJyZW50NF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRfID09
IGVuZDRfKSB7Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3VycmVu
dDNfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAgICBj
dXJyZW50M18gPSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAgICAg
IGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsK
LSAgICAgICAgKytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVl
KCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAg
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJu
ICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1J
dGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2
aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAg
ICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4K
LSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRv
cigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVy
YXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3Rk
OjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBD
aGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAg
ICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJl
eW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBp
biBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQg
QXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkg
fHwKLSAgICAgICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJl
bnQxXyAmJgotICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfICYm
Ci0gICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAgICAg
ICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAgIGN1
cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6
Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90
aGVyLmJhc2VfKSwKLSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5k
MV8ob3RoZXIuZW5kMV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAg
ICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8p
LAotICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhv
dGhlci5iZWdpbjNfKSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAotICAgICAgICBjdXJy
ZW50M18ob3RoZXIuY3VycmVudDNfKSwKLSAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwK
LSAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAotICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3Vy
cmVudDRfKSwKLSAgICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKLSAgICAgICAgZW5kNV8o
b3RoZXIuZW5kNV8pLAotICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSB7Ci0gICAg
ICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVu
dFZhbHVlKCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9
IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAg
ICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1Xyk7Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25z
dCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhl
IHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBo
YXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgotICAgICAgICAg
IGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAot
ICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAotICAgICAgICAgIGN1cnJlbnQ0XyA9PSBl
bmQ0XyB8fAotICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1XzsKLSAgICB9Ci0KLSAgICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBh
bmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMu
Ci0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsK
LSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOwot
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwotICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKLSAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwotICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKLSAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwotICAgIHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKLSAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwotICAgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKLSAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwotICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAgIFBhcmFtVHlwZSBj
dXJyZW50X3ZhbHVlXzsKLSAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1
OjpJdGVyYXRvcgotCi0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1
cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRv
cjUmIG90aGVyKTsKLQotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMj4gZzJfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
NT4gZzVfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I1Ci0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNj4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3I2Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGlu
Zzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LAotICAgICAgICBUNj4gPiB7Ci0gcHVibGljOgot
ICB0eXBlZGVmIDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4gUGFyYW1U
eXBlOwotCi0gIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I2KGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQxPiYgZzEsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4mIGczLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ2PiYgZzYpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1
XyhnNSksIGc2XyhnNikge30KLSAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYo
KSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCZWdp
bigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmJlZ2lu
KCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAgZzNfLmJlZ2luKCksIGc0XywgZzRf
LmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJlZ2luKCkpOwotICB9Ci0gIHZp
cnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBnMl8uZW5k
KCksIGczXywgZzNfLmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQoKSwgZzVfLCBnNV8uZW5k
KCksIGc2XywgZzZfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY2xhc3MgSXRlcmF0b3Ig
OiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+IHsKLSAgIHB1YmxpYzoK
LSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBi
YXNlLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJlbnQxLAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRl
cmF0b3ImIGN1cnJlbnQzLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwKLSAg
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3ImIGN1cnJlbnQ0
LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKLSAgICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJlbnQ1LAotICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJlbnQ2KQotICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAg
ICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1
cnJlbnQxKSwKLSAgICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSks
IGN1cnJlbnQyXyhjdXJyZW50MiksCi0gICAgICAgICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5k
M18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3VycmVudDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQu
YmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1cnJlbnQ0KSwKLSAgICAgICAg
ICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1XyhnNS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50
NSksCi0gICAgICAgICAgYmVnaW42XyhnNi5iZWdpbigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJy
ZW50Nl8oY3VycmVudDYpICAgIHsKLSAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9
Ci0gICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7fQotCi0gICAgdmlydHVhbCBjb25zdCBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgewotICAg
ICAgcmV0dXJuIGJhc2VfOwotICAgIH0KLSAgICAvLyBBZHZhbmNlIHNob3VsZCBub3QgYmUgY2Fs
bGVkIG9uIGJleW9uZC1vZi1yYW5nZSBpdGVyYXRvcnMKLSAgICAvLyBzbyBubyBjb21wb25lbnQg
aXRlcmF0b3JzIG11c3QgYmUgYmV5b25kIGVuZCBvZiByYW5nZSwgZWl0aGVyLgotICAgIHZpcnR1
YWwgdm9pZCBBZHZhbmNlKCkgewotICAgICAgYXNzZXJ0KCFBdEVuZCgpKTsKLSAgICAgICsrY3Vy
cmVudDZfOwotICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2XykgewotICAgICAgICBjdXJyZW50
Nl8gPSBiZWdpbjZfOwotICAgICAgICArK2N1cnJlbnQ1XzsKLSAgICAgIH0KLSAgICAgIGlmIChj
dXJyZW50NV8gPT0gZW5kNV8pIHsKLSAgICAgICAgY3VycmVudDVfID0gYmVnaW41XzsKLSAgICAg
ICAgKytjdXJyZW50NF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRfID09IGVuZDRfKSB7
Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3VycmVudDNfOwotICAg
ICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAgICBjdXJyZW50M18g
PSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJy
ZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKLSAgICAgICAg
KytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAg
fQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgp
IGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50
X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5nIHRoZSBz
YW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAgIC8vIGl0
ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAgICAgIEdU
RVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQotICAg
ICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgot
ICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVja2VkRG93
bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVp
cgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmll
dHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4K
LSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKLSAgICAg
ICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQxXyAmJgot
ICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfICYmCi0gICAgICAg
ICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAgICAgICAgICBjdXJy
ZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAgIGN1cnJlbnQ1XyA9
PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCi0gICAgICAgICAgY3VycmVudDZfID09IHR5cGVk
X290aGVyLT5jdXJyZW50Nl8pOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJdGVyYXRvcihj
b25zdCBJdGVyYXRvciYgb3RoZXIpCi0gICAgICAgIDogYmFzZV8ob3RoZXIuYmFzZV8pLAotICAg
ICAgICBiZWdpbjFfKG90aGVyLmJlZ2luMV8pLAotICAgICAgICBlbmQxXyhvdGhlci5lbmQxXyks
Ci0gICAgICAgIGN1cnJlbnQxXyhvdGhlci5jdXJyZW50MV8pLAotICAgICAgICBiZWdpbjJfKG90
aGVyLmJlZ2luMl8pLAotICAgICAgICBlbmQyXyhvdGhlci5lbmQyXyksCi0gICAgICAgIGN1cnJl
bnQyXyhvdGhlci5jdXJyZW50Ml8pLAotICAgICAgICBiZWdpbjNfKG90aGVyLmJlZ2luM18pLAot
ICAgICAgICBlbmQzXyhvdGhlci5lbmQzXyksCi0gICAgICAgIGN1cnJlbnQzXyhvdGhlci5jdXJy
ZW50M18pLAotICAgICAgICBiZWdpbjRfKG90aGVyLmJlZ2luNF8pLAotICAgICAgICBlbmQ0Xyhv
dGhlci5lbmQ0XyksCi0gICAgICAgIGN1cnJlbnQ0XyhvdGhlci5jdXJyZW50NF8pLAotICAgICAg
ICBiZWdpbjVfKG90aGVyLmJlZ2luNV8pLAotICAgICAgICBlbmQ1XyhvdGhlci5lbmQ1XyksCi0g
ICAgICAgIGN1cnJlbnQ1XyhvdGhlci5jdXJyZW50NV8pLAotICAgICAgICBiZWdpbjZfKG90aGVy
LmJlZ2luNl8pLAotICAgICAgICBlbmQ2XyhvdGhlci5lbmQ2XyksCi0gICAgICAgIGN1cnJlbnQ2
XyhvdGhlci5jdXJyZW50Nl8pIHsKLSAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7Ci0gICAgICBpZiAoIUF0RW5kKCkp
Ci0gICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50
Ml8sICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3Vy
cmVudDZfKTsKLSAgICB9Ci0gICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKLSAgICAgIC8vIFdlIG11
c3QgcmVwb3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIg
b2YgdGhlCi0gICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhhcyByZWFjaGVkIHRoZSBlbmQg
b2YgaXRzIHJhbmdlLgotICAgICAgcmV0dXJuCi0gICAgICAgICAgY3VycmVudDFfID09IGVuZDFf
IHx8Ci0gICAgICAgICAgY3VycmVudDJfID09IGVuZDJfIHx8Ci0gICAgICAgICAgY3VycmVudDNf
ID09IGVuZDNfIHx8Ci0gICAgICAgICAgY3VycmVudDRfID09IGVuZDRfIHx8Ci0gICAgICAgICAg
Y3VycmVudDVfID09IGVuZDVfIHx8Ci0gICAgICAgICAgY3VycmVudDZfID09IGVuZDZfOwotICAg
IH0KLQotICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBJdGVyYXRvciYgb3RoZXIpOwotCi0gICAgY29u
c3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogY29uc3QgYmFzZV87Ci0gICAg
Ly8gYmVnaW5baV1fIGFuZCBlbmRbaV1fIGRlZmluZSB0aGUgaS10aCByYW5nZSB0aGF0IEl0ZXJh
dG9yIHRyYXZlcnNlcy4KLSAgICAvLyBjdXJyZW50W2ldXyBpcyB0aGUgYWN0dWFsIHRyYXZlcnNp
bmcgaXRlcmF0b3IuCi0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVy
YXRvciBiZWdpbjFfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRl
cmF0b3IgZW5kMV87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciBj
dXJyZW50MV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRv
ciBiZWdpbjJfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0
b3IgZW5kMl87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+OjppdGVyYXRvciBjdXJy
ZW50Ml87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBi
ZWdpbjNfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3Ig
ZW5kM187Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciBjdXJyZW50
M187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBiZWdp
bjRfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgZW5k
NF87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciBjdXJyZW50NF87
Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBiZWdpbjVf
OwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgZW5kNV87
Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+OjppdGVyYXRvciBjdXJyZW50NV87Ci0g
ICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBiZWdpbjZfOwot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgZW5kNl87Ci0g
ICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVyYXRvciBjdXJyZW50Nl87Ci0gICAg
UGFyYW1UeXBlIGN1cnJlbnRfdmFsdWVfOwotICB9OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVj
dEdlbmVyYXRvcjY6Okl0ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25t
ZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9k
dWN0R2VuZXJhdG9yNiYgb3RoZXIpOwotCi0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiBnMV87
Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiBnMl87Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQzPiBnM187Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ0PiBnNF87Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQ1PiBnNV87Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiBnNl87Ci19OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjYKLQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RH
ZW5lcmF0b3I3Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGlu
Zzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKLSAgICAgICAgVDc+ID4gewotIHB1Ymxp
YzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
PiBQYXJhbVR5cGU7Ci0KLSAgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcoY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
ND4mIGc0LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAotICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDY+JiBnNiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+JiBnNykKLSAgICAgIDog
ZzFfKGcxKSwgZzJfKGcyKSwgZzNfKGczKSwgZzRfKGc0KSwgZzVfKGc1KSwgZzZfKGc2KSwgZzdf
KGc3KSB7fQotICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yNygpIHt9Ci0KLSAg
dmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJlZ2luKCkgY29uc3Qg
ewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uYmVnaW4oKSwgZzJfLCBn
Ml8uYmVnaW4oKSwgZzNfLAotICAgICAgICBnM18uYmVnaW4oKSwgZzRfLCBnNF8uYmVnaW4oKSwg
ZzVfLCBnNV8uYmVnaW4oKSwgZzZfLCBnNl8uYmVnaW4oKSwgZzdfLAotICAgICAgICBnN18uYmVn
aW4oKSk7Ci0gIH0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4q
IEVuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywgZzFfLmVu
ZCgpLCBnMl8sIGcyXy5lbmQoKSwgZzNfLCBnM18uZW5kKCksCi0gICAgICAgIGc0XywgZzRfLmVu
ZCgpLCBnNV8sIGc1Xy5lbmQoKSwgZzZfLCBnNl8uZW5kKCksIGc3XywgZzdfLmVuZCgpKTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+IHsKLSAgIHB1YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQx
Pjo6aXRlcmF0b3ImIGN1cnJlbnQxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBn
MiwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1
cnJlbnQyLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAotICAgICAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3ImIGN1cnJlbnQ0LAotICAgICAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8VDU+JiBnNSwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6
aXRlcmF0b3ImIGN1cnJlbnQ1LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwK
LSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJl
bnQ2LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDc+JiBnNywKLSAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3ImIGN1cnJlbnQ3KQotICAgICAgICA6
IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSksIGVuZDFfKGcxLmVu
ZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAgICAgICAgICBiZWdpbjJfKGcyLmJlZ2luKCkp
LCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50MiksCi0gICAgICAgICAgYmVnaW4z
XyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3VycmVudDMpLAotICAg
ICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwgY3VycmVudDRfKGN1
cnJlbnQ0KSwKLSAgICAgICAgICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1XyhnNS5lbmQoKSks
IGN1cnJlbnQ1XyhjdXJyZW50NSksCi0gICAgICAgICAgYmVnaW42XyhnNi5iZWdpbigpKSwgZW5k
Nl8oZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVudDYpLAotICAgICAgICAgIGJlZ2luN18oZzcu
YmVnaW4oKSksIGVuZDdfKGc3LmVuZCgpKSwgY3VycmVudDdfKGN1cnJlbnQ3KSAgICB7Ci0gICAg
ICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgfkl0ZXJhdG9yKCkg
e30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBl
PiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBiYXNlXzsKLSAgICB9Ci0g
ICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQtb2YtcmFuZ2UgaXRl
cmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0IGJlIGJleW9uZCBl
bmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAg
IGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJlbnQ3XzsKLSAgICAgIGlmIChjdXJyZW50
N18gPT0gZW5kN18pIHsKLSAgICAgICAgY3VycmVudDdfID0gYmVnaW43XzsKLSAgICAgICAgKytj
dXJyZW50Nl87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDZfID09IGVuZDZfKSB7Ci0gICAg
ICAgIGN1cnJlbnQ2XyA9IGJlZ2luNl87Ci0gICAgICAgICsrY3VycmVudDVfOwotICAgICAgfQot
ICAgICAgaWYgKGN1cnJlbnQ1XyA9PSBlbmQ1XykgewotICAgICAgICBjdXJyZW50NV8gPSBiZWdp
bjVfOwotICAgICAgICArK2N1cnJlbnQ0XzsKLSAgICAgIH0KLSAgICAgIGlmIChjdXJyZW50NF8g
PT0gZW5kNF8pIHsKLSAgICAgICAgY3VycmVudDRfID0gYmVnaW40XzsKLSAgICAgICAgKytjdXJy
ZW50M187Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDNfID09IGVuZDNfKSB7Ci0gICAgICAg
IGN1cnJlbnQzXyA9IGJlZ2luM187Ci0gICAgICAgICsrY3VycmVudDJfOwotICAgICAgfQotICAg
ICAgaWYgKGN1cnJlbnQyXyA9PSBlbmQyXykgewotICAgICAgICBjdXJyZW50Ml8gPSBiZWdpbjJf
OwotICAgICAgICArK2N1cnJlbnQxXzsKLSAgICAgIH0KLSAgICAgIENvbXB1dGVDdXJyZW50VmFs
dWUoKTsKLSAgICB9Ci0gICAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlw
ZT4qIENsb25lKCkgY29uc3QgewotICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7Ci0g
ICAgfQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1UeXBlKiBDdXJyZW50KCkgY29uc3QgeyByZXR1
cm4gJmN1cnJlbnRfdmFsdWVfOyB9Ci0gICAgdmlydHVhbCBib29sIEVxdWFscyhjb25zdCBQYXJh
bUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAvLyBI
YXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0aGF0IHRoZSBvdGhlcgot
ICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQgd2UgY2FuIGRvd25jYXN0
LgotICAgICAgR1RFU1RfQ0hFQ0tfKEJhc2VHZW5lcmF0b3IoKSA9PSBvdGhlci5CYXNlR2VuZXJh
dG9yKCkpCi0gICAgICAgICAgPDwgIlRoZSBwcm9ncmFtIGF0dGVtcHRlZCB0byBjb21wYXJlIGl0
ZXJhdG9ycyAiCi0gICAgICAgICAgPDwgImZyb20gZGlmZmVyZW50IGdlbmVyYXRvcnMuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICBjb25zdCBJdGVyYXRvciogdHlwZWRfb3RoZXIgPQotICAgICAgICAg
IENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVyYXRvcj4oJm90aGVyKTsKLSAg
ICAgIC8vIFdlIG11c3QgcmVwb3J0IGl0ZXJhdG9ycyBlcXVhbCBpZiB0aGV5IGJvdGggcG9pbnQg
YmV5b25kIHRoZWlyCi0gICAgICAvLyByZXNwZWN0aXZlIHJhbmdlcy4gVGhhdCBjYW4gaGFwcGVu
IGluIGEgdmFyaWV0eSBvZiBmYXNoaW9ucywKLSAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY29uc3Vs
dCBBdEVuZCgpLgotICAgICAgcmV0dXJuIChBdEVuZCgpICYmIHR5cGVkX290aGVyLT5BdEVuZCgp
KSB8fAotICAgICAgICAgKAotICAgICAgICAgIGN1cnJlbnQxXyA9PSB0eXBlZF9vdGhlci0+Y3Vy
cmVudDFfICYmCi0gICAgICAgICAgY3VycmVudDJfID09IHR5cGVkX290aGVyLT5jdXJyZW50Ml8g
JiYKLSAgICAgICAgICBjdXJyZW50M18gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQzXyAmJgotICAg
ICAgICAgIGN1cnJlbnQ0XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDRfICYmCi0gICAgICAgICAg
Y3VycmVudDVfID09IHR5cGVkX290aGVyLT5jdXJyZW50NV8gJiYKLSAgICAgICAgICBjdXJyZW50
Nl8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ2XyAmJgotICAgICAgICAgIGN1cnJlbnQ3XyA9PSB0
eXBlZF9vdGhlci0+Y3VycmVudDdfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRlcmF0
b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwK
LSAgICAgICAgYmVnaW4xXyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8ob3RoZXIuZW5k
MV8pLAotICAgICAgICBjdXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAgICAgYmVnaW4y
XyhvdGhlci5iZWdpbjJfKSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAotICAgICAgICBj
dXJyZW50Ml8ob3RoZXIuY3VycmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNf
KSwKLSAgICAgICAgZW5kM18ob3RoZXIuZW5kM18pLAotICAgICAgICBjdXJyZW50M18ob3RoZXIu
Y3VycmVudDNfKSwKLSAgICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKLSAgICAgICAgZW5k
NF8ob3RoZXIuZW5kNF8pLAotICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSwKLSAg
ICAgICAgYmVnaW41XyhvdGhlci5iZWdpbjVfKSwKLSAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8p
LAotICAgICAgICBjdXJyZW50NV8ob3RoZXIuY3VycmVudDVfKSwKLSAgICAgICAgYmVnaW42Xyhv
dGhlci5iZWdpbjZfKSwKLSAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAotICAgICAgICBjdXJy
ZW50Nl8ob3RoZXIuY3VycmVudDZfKSwKLSAgICAgICAgYmVnaW43XyhvdGhlci5iZWdpbjdfKSwK
LSAgICAgICAgZW5kN18ob3RoZXIuZW5kN18pLAotICAgICAgICBjdXJyZW50N18ob3RoZXIuY3Vy
cmVudDdfKSB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVu
dDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1
cnJlbnQ3Xyk7Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBt
dXN0IHJlcG9ydCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVy
IG9mIHRoZQotICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5k
IG9mIGl0cyByYW5nZS4KLSAgICAgIHJldHVybgotICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQx
XyB8fAotICAgICAgICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAotICAgICAgICAgIGN1cnJlbnQz
XyA9PSBlbmQzXyB8fAotICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAotICAgICAgICAg
IGN1cnJlbnQ1XyA9PSBlbmQ1XyB8fAotICAgICAgICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XyB8fAot
ICAgICAgICAgIGN1cnJlbnQ3XyA9PSBlbmQ3XzsKLSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1l
bnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJm
YWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ld
XyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8g
Y3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKLSAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwotICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKLSAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwotICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwotICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsK
LSAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3OjpJdGVyYXRvcgotCi0g
IC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjcmIG90aGVyKTsKLQot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mj4gZzJfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwotICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUND4gZzRfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOwotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUNj4gZzZfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4gZzdf
OwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I3Ci0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotY2xh
c3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgKLSAgICA6IHB1YmxpYyBQYXJhbUdlbmVyYXRv
ckludGVyZmFjZTwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LAotICAg
ICAgICBUNywgVDg+ID4gewotIHB1YmxpYzoKLSAgdHlwZWRlZiA6OnRlc3Rpbmc6OnR1cGxlPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gUGFyYW1UeXBlOwotCi0gIENhcnRlc2lhblBy
b2R1Y3RHZW5lcmF0b3I4KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGczLAot
ICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDU+JiBnNSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQ3PiYgZzcsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4mIGc4KQot
ICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8o
ZzYpLCBnN18oZzcpLAotICAgICAgICAgIGc4XyhnOCkge30KLSAgdmlydHVhbCB+Q2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvcjgoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRo
aXMsIGcxXywgZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAgZzNf
LmJlZ2luKCksIGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJl
Z2luKCksIGc3XywKLSAgICAgICAgZzdfLmJlZ2luKCksIGc4XywgZzhfLmJlZ2luKCkpOwotICB9
Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25z
dCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQoKSwgZzJfLCBn
Ml8uZW5kKCksIGczXywgZzNfLmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQoKSwgZzVfLCBn
NV8uZW5kKCksIGc2XywgZzZfLmVuZCgpLCBnN18sIGc3Xy5lbmQoKSwgZzhfLAotICAgICAgICBn
OF8uZW5kKCkpOwotICB9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBJdGVyYXRvciA6IHB1YmxpYyBQ
YXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4gewotICAgcHVibGljOgotICAgIEl0ZXJh
dG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGJhc2UsCi0gICAg
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4mIGcxLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFy
YW1HZW5lcmF0b3I8VDE+OjppdGVyYXRvciYgY3VycmVudDEsCi0gICAgICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUMj4mIGcyLAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDI+
OjppdGVyYXRvciYgY3VycmVudDIsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4mIGcz
LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDM+OjppdGVyYXRvciYgY3Vy
cmVudDMsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LAotICAgICAgY29uc3Qg
dHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+OjppdGVyYXRvciYgY3VycmVudDQsCi0gICAgICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1H
ZW5lcmF0b3I8VDU+OjppdGVyYXRvciYgY3VycmVudDUsCi0gICAgICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUNj4mIGc2LAotICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+Ojpp
dGVyYXRvciYgY3VycmVudDYsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4mIGc3LAot
ICAgICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRvciYgY3VycmVu
dDcsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4mIGc4LAotICAgICAgY29uc3QgdHlw
ZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciYgY3VycmVudDgpCi0gICAgICAgIDog
YmFzZV8oYmFzZSksCi0gICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwgZW5kMV8oZzEuZW5k
KCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAotICAgICAgICAgIGJlZ2luMl8oZzIuYmVnaW4oKSks
IGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSwKLSAgICAgICAgICBiZWdpbjNf
KGczLmJlZ2luKCkpLCBlbmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhjdXJyZW50MyksCi0gICAg
ICAgICAgYmVnaW40XyhnNC5iZWdpbigpKSwgZW5kNF8oZzQuZW5kKCkpLCBjdXJyZW50NF8oY3Vy
cmVudDQpLAotICAgICAgICAgIGJlZ2luNV8oZzUuYmVnaW4oKSksIGVuZDVfKGc1LmVuZCgpKSwg
Y3VycmVudDVfKGN1cnJlbnQ1KSwKLSAgICAgICAgICBiZWdpbjZfKGc2LmJlZ2luKCkpLCBlbmQ2
XyhnNi5lbmQoKSksIGN1cnJlbnQ2XyhjdXJyZW50NiksCi0gICAgICAgICAgYmVnaW43XyhnNy5i
ZWdpbigpKSwgZW5kN18oZzcuZW5kKCkpLCBjdXJyZW50N18oY3VycmVudDcpLAotICAgICAgICAg
IGJlZ2luOF8oZzguYmVnaW4oKSksIGVuZDhfKGc4LmVuZCgpKSwgY3VycmVudDhfKGN1cnJlbnQ4
KSAgICB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwg
fkl0ZXJhdG9yKCkge30KLQotICAgIHZpcnR1YWwgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZh
Y2U8UGFyYW1UeXBlPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBiYXNl
XzsKLSAgICB9Ci0gICAgLy8gQWR2YW5jZSBzaG91bGQgbm90IGJlIGNhbGxlZCBvbiBiZXlvbmQt
b2YtcmFuZ2UgaXRlcmF0b3JzCi0gICAgLy8gc28gbm8gY29tcG9uZW50IGl0ZXJhdG9ycyBtdXN0
IGJlIGJleW9uZCBlbmQgb2YgcmFuZ2UsIGVpdGhlci4KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5j
ZSgpIHsKLSAgICAgIGFzc2VydCghQXRFbmQoKSk7Ci0gICAgICArK2N1cnJlbnQ4XzsKLSAgICAg
IGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKLSAgICAgICAgY3VycmVudDhfID0gYmVnaW44XzsK
LSAgICAgICAgKytjdXJyZW50N187Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDdfID09IGVu
ZDdfKSB7Ci0gICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2luN187Ci0gICAgICAgICsrY3VycmVudDZf
OwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2XykgewotICAgICAgICBjdXJy
ZW50Nl8gPSBiZWdpbjZfOwotICAgICAgICArK2N1cnJlbnQ1XzsKLSAgICAgIH0KLSAgICAgIGlm
IChjdXJyZW50NV8gPT0gZW5kNV8pIHsKLSAgICAgICAgY3VycmVudDVfID0gYmVnaW41XzsKLSAg
ICAgICAgKytjdXJyZW50NF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRfID09IGVuZDRf
KSB7Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3VycmVudDNfOwot
ICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAgICBjdXJyZW50
M18gPSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAgICAgIGlmIChj
dXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKLSAgICAg
ICAgKytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0g
ICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9u
ZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJy
ZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5nIHRo
ZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAgIC8v
IGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAgICAg
IEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQot
ICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMg
IgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRs
OwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVja2Vk
RG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAvLyBX
ZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0
aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZh
cmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQo
KS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKLSAg
ICAgICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQxXyAm
JgotICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfICYmCi0gICAg
ICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAgICAgICAgICBj
dXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAgIGN1cnJlbnQ1
XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCi0gICAgICAgICAgY3VycmVudDZfID09IHR5
cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKLSAgICAgICAgICBjdXJyZW50N18gPT0gdHlwZWRfb3Ro
ZXItPmN1cnJlbnQ3XyAmJgotICAgICAgICAgIGN1cnJlbnQ4XyA9PSB0eXBlZF9vdGhlci0+Y3Vy
cmVudDhfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0
b3ImIG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKLSAgICAgICAgYmVnaW4x
XyhvdGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8pLAotICAgICAgICBj
dXJyZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJf
KSwKLSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAotICAgICAgICBjdXJyZW50Ml8ob3RoZXIu
Y3VycmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwKLSAgICAgICAgZW5k
M18ob3RoZXIuZW5kM18pLAotICAgICAgICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKLSAg
ICAgICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKLSAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8p
LAotICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSwKLSAgICAgICAgYmVnaW41Xyhv
dGhlci5iZWdpbjVfKSwKLSAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8pLAotICAgICAgICBjdXJy
ZW50NV8ob3RoZXIuY3VycmVudDVfKSwKLSAgICAgICAgYmVnaW42XyhvdGhlci5iZWdpbjZfKSwK
LSAgICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAotICAgICAgICBjdXJyZW50Nl8ob3RoZXIuY3Vy
cmVudDZfKSwKLSAgICAgICAgYmVnaW43XyhvdGhlci5iZWdpbjdfKSwKLSAgICAgICAgZW5kN18o
b3RoZXIuZW5kN18pLAotICAgICAgICBjdXJyZW50N18ob3RoZXIuY3VycmVudDdfKSwKLSAgICAg
ICAgYmVnaW44XyhvdGhlci5iZWdpbjhfKSwKLSAgICAgICAgZW5kOF8ob3RoZXIuZW5kOF8pLAot
ICAgICAgICBjdXJyZW50OF8ob3RoZXIuY3VycmVudDhfKSB7Ci0gICAgICBDb21wdXRlQ3VycmVu
dFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9pZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewotICAg
ICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBjdXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3Vy
cmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVudDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0Xywg
KmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1cnJlbnQ3XywgKmN1cnJlbnQ4Xyk7Ci0gICAgfQot
ICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRv
ciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAgICAgLy8g
Y29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5nZS4KLSAg
ICAgIHJldHVybgotICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAgICAgIGN1
cnJlbnQyXyA9PSBlbmQyXyB8fAotICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8fAotICAg
ICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAotICAgICAgICAgIGN1cnJlbnQ1XyA9PSBlbmQ1
XyB8fAotICAgICAgICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XyB8fAotICAgICAgICAgIGN1cnJlbnQ3
XyA9PSBlbmQ3XyB8fAotICAgICAgICAgIGN1cnJlbnQ4XyA9PSBlbmQ4XzsKLSAgICB9Ci0KLSAg
ICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAg
dm9pZCBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFt
R2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2lu
W2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2
ZXJzZXMuCi0gICAgLy8gY3VycmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJh
dG9yLgotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVn
aW4xXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVu
ZDFfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFf
OwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4y
XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJf
OwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsK
LSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwot
ICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKLSAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwotICAg
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIGNv
bnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKLSAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwotICAgIHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAgIGNvbnN0
IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKLSAgICBjb25z
dCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOwotICAgIHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOwotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKLSAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwotICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQ3Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsKLSAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGVuZDhfOwotICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0b3IgY3VycmVudDhfOwotICAgIFBhcmFtVHlwZSBjdXJy
ZW50X3ZhbHVlXzsKLSAgfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4OjpJ
dGVyYXRvcgotCi0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBv
cnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjgm
IG90aGVyKTsKLQotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMj4gZzJfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4g
ZzVfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4gZzZfOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUNz4gZzdfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOD4gZzhfOwotfTsgIC8vIGNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I4Ci0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLWNs
YXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0
b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKLSAg
ICAgICAgVDcsIFQ4LCBUOT4gPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIDo6dGVzdGluZzo6dHVw
bGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gUGFyYW1UeXBlOwotCi0gIENh
cnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5KGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxPiYgZzEsCi0g
ICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4mIGcyLCBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
Mz4mIGczLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDQ+JiBnNCwgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8VDU+JiBnNSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
OD4mIGc4LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4mIGc5KQotICAgICAgOiBnMV8oZzEpLCBn
Ml8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLCBnOF8o
ZzgpLAotICAgICAgICAgIGc5XyhnOSkge30KLSAgdmlydHVhbCB+Q2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjkoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGcxXywg
ZzFfLmJlZ2luKCksIGcyXywgZzJfLmJlZ2luKCksIGczXywKLSAgICAgICAgZzNfLmJlZ2luKCks
IGc0XywgZzRfLmJlZ2luKCksIGc1XywgZzVfLmJlZ2luKCksIGc2XywgZzZfLmJlZ2luKCksIGc3
XywKLSAgICAgICAgZzdfLmJlZ2luKCksIGc4XywgZzhfLmJlZ2luKCksIGc5XywgZzlfLmJlZ2lu
KCkpOwotICB9Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBF
bmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBnMV8sIGcxXy5lbmQo
KSwgZzJfLCBnMl8uZW5kKCksIGczXywgZzNfLmVuZCgpLAotICAgICAgICBnNF8sIGc0Xy5lbmQo
KSwgZzVfLCBnNV8uZW5kKCksIGc2XywgZzZfLmVuZCgpLCBnN18sIGc3Xy5lbmQoKSwgZzhfLAot
ICAgICAgICBnOF8uZW5kKCksIGc5XywgZzlfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAg
Y2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
IHsKLSAgIHB1YmxpYzoKLSAgICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+KiBiYXNlLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwK
LSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3ImIGN1cnJl
bnQxLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDI+JiBnMiwKLSAgICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3ImIGN1cnJlbnQyLAotICAgICAgY29u
c3QgUGFyYW1HZW5lcmF0b3I8VDM+JiBnMywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQzPjo6aXRlcmF0b3ImIGN1cnJlbnQzLAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0
b3I8VDQ+JiBnNCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ0Pjo6aXRl
cmF0b3ImIGN1cnJlbnQ0LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDU+JiBnNSwKLSAg
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3ImIGN1cnJlbnQ1
LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwKLSAgICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQ2Pjo6aXRlcmF0b3ImIGN1cnJlbnQ2LAotICAgICAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8VDc+JiBnNywKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ3Pjo6aXRlcmF0b3ImIGN1cnJlbnQ3LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDg+JiBnOCwKLSAgICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6aXRlcmF0
b3ImIGN1cnJlbnQ4LAotICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDk+JiBnOSwKLSAgICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRlcmF0b3ImIGN1cnJlbnQ5KQot
ICAgICAgICA6IGJhc2VfKGJhc2UpLAotICAgICAgICAgIGJlZ2luMV8oZzEuYmVnaW4oKSksIGVu
ZDFfKGcxLmVuZCgpKSwgY3VycmVudDFfKGN1cnJlbnQxKSwKLSAgICAgICAgICBiZWdpbjJfKGcy
LmJlZ2luKCkpLCBlbmQyXyhnMi5lbmQoKSksIGN1cnJlbnQyXyhjdXJyZW50MiksCi0gICAgICAg
ICAgYmVnaW4zXyhnMy5iZWdpbigpKSwgZW5kM18oZzMuZW5kKCkpLCBjdXJyZW50M18oY3VycmVu
dDMpLAotICAgICAgICAgIGJlZ2luNF8oZzQuYmVnaW4oKSksIGVuZDRfKGc0LmVuZCgpKSwgY3Vy
cmVudDRfKGN1cnJlbnQ0KSwKLSAgICAgICAgICBiZWdpbjVfKGc1LmJlZ2luKCkpLCBlbmQ1Xyhn
NS5lbmQoKSksIGN1cnJlbnQ1XyhjdXJyZW50NSksCi0gICAgICAgICAgYmVnaW42XyhnNi5iZWdp
bigpKSwgZW5kNl8oZzYuZW5kKCkpLCBjdXJyZW50Nl8oY3VycmVudDYpLAotICAgICAgICAgIGJl
Z2luN18oZzcuYmVnaW4oKSksIGVuZDdfKGc3LmVuZCgpKSwgY3VycmVudDdfKGN1cnJlbnQ3KSwK
LSAgICAgICAgICBiZWdpbjhfKGc4LmJlZ2luKCkpLCBlbmQ4XyhnOC5lbmQoKSksIGN1cnJlbnQ4
XyhjdXJyZW50OCksCi0gICAgICAgICAgYmVnaW45XyhnOS5iZWdpbigpKSwgZW5kOV8oZzkuZW5k
KCkpLCBjdXJyZW50OV8oY3VycmVudDkpICAgIHsKLSAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUo
KTsKLSAgICB9Ci0gICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7fQotCi0gICAgdmlydHVhbCBjb25z
dCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBCYXNlR2VuZXJhdG9yKCkgY29u
c3QgewotICAgICAgcmV0dXJuIGJhc2VfOwotICAgIH0KLSAgICAvLyBBZHZhbmNlIHNob3VsZCBu
b3QgYmUgY2FsbGVkIG9uIGJleW9uZC1vZi1yYW5nZSBpdGVyYXRvcnMKLSAgICAvLyBzbyBubyBj
b21wb25lbnQgaXRlcmF0b3JzIG11c3QgYmUgYmV5b25kIGVuZCBvZiByYW5nZSwgZWl0aGVyLgot
ICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgewotICAgICAgYXNzZXJ0KCFBdEVuZCgpKTsKLSAg
ICAgICsrY3VycmVudDlfOwotICAgICAgaWYgKGN1cnJlbnQ5XyA9PSBlbmQ5XykgewotICAgICAg
ICBjdXJyZW50OV8gPSBiZWdpbjlfOwotICAgICAgICArK2N1cnJlbnQ4XzsKLSAgICAgIH0KLSAg
ICAgIGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKLSAgICAgICAgY3VycmVudDhfID0gYmVnaW44
XzsKLSAgICAgICAgKytjdXJyZW50N187Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDdfID09
IGVuZDdfKSB7Ci0gICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2luN187Ci0gICAgICAgICsrY3VycmVu
dDZfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2XykgewotICAgICAgICBj
dXJyZW50Nl8gPSBiZWdpbjZfOwotICAgICAgICArK2N1cnJlbnQ1XzsKLSAgICAgIH0KLSAgICAg
IGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKLSAgICAgICAgY3VycmVudDVfID0gYmVnaW41XzsK
LSAgICAgICAgKytjdXJyZW50NF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRfID09IGVu
ZDRfKSB7Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3VycmVudDNf
OwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAgICBjdXJy
ZW50M18gPSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAgICAgIGlm
IChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJfID0gYmVnaW4yXzsKLSAg
ICAgICAgKytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7
Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBD
bG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0K
LSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZj
dXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVy
YXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5n
IHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAg
IC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAg
ICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigp
KQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRv
cnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVj
a2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAv
LyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9u
ZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBh
IHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRF
bmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwK
LSAgICAgICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQx
XyAmJgotICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJfICYmCi0g
ICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAgICAgICAg
ICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAgIGN1cnJl
bnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCi0gICAgICAgICAgY3VycmVudDZfID09
IHR5cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKLSAgICAgICAgICBjdXJyZW50N18gPT0gdHlwZWRf
b3RoZXItPmN1cnJlbnQ3XyAmJgotICAgICAgICAgIGN1cnJlbnQ4XyA9PSB0eXBlZF9vdGhlci0+
Y3VycmVudDhfICYmCi0gICAgICAgICAgY3VycmVudDlfID09IHR5cGVkX290aGVyLT5jdXJyZW50
OV8pOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYg
b3RoZXIpCi0gICAgICAgIDogYmFzZV8ob3RoZXIuYmFzZV8pLAotICAgICAgICBiZWdpbjFfKG90
aGVyLmJlZ2luMV8pLAotICAgICAgICBlbmQxXyhvdGhlci5lbmQxXyksCi0gICAgICAgIGN1cnJl
bnQxXyhvdGhlci5jdXJyZW50MV8pLAotICAgICAgICBiZWdpbjJfKG90aGVyLmJlZ2luMl8pLAot
ICAgICAgICBlbmQyXyhvdGhlci5lbmQyXyksCi0gICAgICAgIGN1cnJlbnQyXyhvdGhlci5jdXJy
ZW50Ml8pLAotICAgICAgICBiZWdpbjNfKG90aGVyLmJlZ2luM18pLAotICAgICAgICBlbmQzXyhv
dGhlci5lbmQzXyksCi0gICAgICAgIGN1cnJlbnQzXyhvdGhlci5jdXJyZW50M18pLAotICAgICAg
ICBiZWdpbjRfKG90aGVyLmJlZ2luNF8pLAotICAgICAgICBlbmQ0XyhvdGhlci5lbmQ0XyksCi0g
ICAgICAgIGN1cnJlbnQ0XyhvdGhlci5jdXJyZW50NF8pLAotICAgICAgICBiZWdpbjVfKG90aGVy
LmJlZ2luNV8pLAotICAgICAgICBlbmQ1XyhvdGhlci5lbmQ1XyksCi0gICAgICAgIGN1cnJlbnQ1
XyhvdGhlci5jdXJyZW50NV8pLAotICAgICAgICBiZWdpbjZfKG90aGVyLmJlZ2luNl8pLAotICAg
ICAgICBlbmQ2XyhvdGhlci5lbmQ2XyksCi0gICAgICAgIGN1cnJlbnQ2XyhvdGhlci5jdXJyZW50
Nl8pLAotICAgICAgICBiZWdpbjdfKG90aGVyLmJlZ2luN18pLAotICAgICAgICBlbmQ3XyhvdGhl
ci5lbmQ3XyksCi0gICAgICAgIGN1cnJlbnQ3XyhvdGhlci5jdXJyZW50N18pLAotICAgICAgICBi
ZWdpbjhfKG90aGVyLmJlZ2luOF8pLAotICAgICAgICBlbmQ4XyhvdGhlci5lbmQ4XyksCi0gICAg
ICAgIGN1cnJlbnQ4XyhvdGhlci5jdXJyZW50OF8pLAotICAgICAgICBiZWdpbjlfKG90aGVyLmJl
Z2luOV8pLAotICAgICAgICBlbmQ5XyhvdGhlci5lbmQ5XyksCi0gICAgICAgIGN1cnJlbnQ5Xyhv
dGhlci5jdXJyZW50OV8pIHsKLSAgICAgIENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIENvbXB1dGVDdXJyZW50VmFsdWUoKSB7Ci0gICAgICBpZiAoIUF0RW5kKCkpCi0g
ICAgICAgIGN1cnJlbnRfdmFsdWVfID0gUGFyYW1UeXBlKCpjdXJyZW50MV8sICpjdXJyZW50Ml8s
ICpjdXJyZW50M18sCi0gICAgICAgICAgICAqY3VycmVudDRfLCAqY3VycmVudDVfLCAqY3VycmVu
dDZfLCAqY3VycmVudDdfLCAqY3VycmVudDhfLAotICAgICAgICAgICAgKmN1cnJlbnQ5Xyk7Ci0g
ICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9ydCBp
dGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQotICAg
ICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyByYW5n
ZS4KLSAgICAgIHJldHVybgotICAgICAgICAgIGN1cnJlbnQxXyA9PSBlbmQxXyB8fAotICAgICAg
ICAgIGN1cnJlbnQyXyA9PSBlbmQyXyB8fAotICAgICAgICAgIGN1cnJlbnQzXyA9PSBlbmQzXyB8
fAotICAgICAgICAgIGN1cnJlbnQ0XyA9PSBlbmQ0XyB8fAotICAgICAgICAgIGN1cnJlbnQ1XyA9
PSBlbmQ1XyB8fAotICAgICAgICAgIGN1cnJlbnQ2XyA9PSBlbmQ2XyB8fAotICAgICAgICAgIGN1
cnJlbnQ3XyA9PSBlbmQ3XyB8fAotICAgICAgICAgIGN1cnJlbnQ4XyA9PSBlbmQ4XyB8fAotICAg
ICAgICAgIGN1cnJlbnQ5XyA9PSBlbmQ5XzsKLSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRh
dGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgSXRlcmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNl
PFBhcmFtVHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBk
ZWZpbmUgdGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3Vy
cmVudFtpXV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgotICAgIGNvbnN0IHR5
cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgYmVnaW4xXzsKLSAgICBjb25zdCB0
eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0ZXJhdG9yIGVuZDFfOwotICAgIHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQxPjo6aXRlcmF0b3IgY3VycmVudDFfOwotICAgIGNvbnN0IHR5cGVu
YW1lIFBhcmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgYmVnaW4yXzsKLSAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yIGVuZDJfOwotICAgIHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQyPjo6aXRlcmF0b3IgY3VycmVudDJfOwotICAgIGNvbnN0IHR5cGVuYW1l
IFBhcmFtR2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgYmVnaW4zXzsKLSAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yIGVuZDNfOwotICAgIHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQzPjo6aXRlcmF0b3IgY3VycmVudDNfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBh
cmFtR2VuZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgYmVnaW40XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQ
YXJhbUdlbmVyYXRvcjxUND46Oml0ZXJhdG9yIGVuZDRfOwotICAgIHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ0Pjo6aXRlcmF0b3IgY3VycmVudDRfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFt
R2VuZXJhdG9yPFQ1Pjo6aXRlcmF0b3IgYmVnaW41XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJh
bUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9yIGVuZDVfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ1Pjo6aXRlcmF0b3IgY3VycmVudDVfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2Vu
ZXJhdG9yPFQ2Pjo6aXRlcmF0b3IgYmVnaW42XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdl
bmVyYXRvcjxUNj46Oml0ZXJhdG9yIGVuZDZfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQ2Pjo6aXRlcmF0b3IgY3VycmVudDZfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJh
dG9yPFQ3Pjo6aXRlcmF0b3IgYmVnaW43XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUNz46Oml0ZXJhdG9yIGVuZDdfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ3
Pjo6aXRlcmF0b3IgY3VycmVudDdfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9y
PFQ4Pjo6aXRlcmF0b3IgYmVnaW44XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUOD46Oml0ZXJhdG9yIGVuZDhfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ4Pjo6
aXRlcmF0b3IgY3VycmVudDhfOwotICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5
Pjo6aXRlcmF0b3IgYmVnaW45XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
OT46Oml0ZXJhdG9yIGVuZDlfOwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQ5Pjo6aXRl
cmF0b3IgY3VycmVudDlfOwotICAgIFBhcmFtVHlwZSBjdXJyZW50X3ZhbHVlXzsKLSAgfTsgIC8v
IGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5OjpJdGVyYXRvcgotCi0gIC8vIE5vIGlt
cGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjkmIG90aGVyKTsKLQotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOwot
ICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMz4gZzNfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxU
ND4gZzRfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOwotICBjb25zdCBQYXJhbUdl
bmVyYXRvcjxUNj4gZzZfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4gZzdfOwotICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUOD4gZzhfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4gZzlf
OwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5Ci0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEw
Ci0gICAgOiBwdWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKLSAgICAgICAgVDcsIFQ4LCBUOSwgVDEwPiA+IHsKLSBw
dWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTA+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJh
dG9yMTAoY29uc3QgUGFyYW1HZW5lcmF0b3I8VDE+JiBnMSwKLSAgICAgIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9yPFQyPiYgZzIsIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25z
dCBQYXJhbUdlbmVyYXRvcjxUND4mIGc0LCBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNT4mIGc1LAot
ICAgICAgY29uc3QgUGFyYW1HZW5lcmF0b3I8VDY+JiBnNiwgY29uc3QgUGFyYW1HZW5lcmF0b3I8
VDc+JiBnNywKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ4PiYgZzgsIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPFQ5PiYgZzksCi0gICAgICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMTA+JiBnMTAp
Ci0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2
XyhnNiksIGc3XyhnNyksIGc4XyhnOCksCi0gICAgICAgICAgZzlfKGc5KSwgZzEwXyhnMTApIHt9
Ci0gIHZpcnR1YWwgfkNhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3IxMCgpIHt9Ci0KLSAgdmlydHVh
bCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJlZ2luKCkgY29uc3QgewotICAg
IHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uYmVnaW4oKSwgZzJfLCBnMl8uYmVn
aW4oKSwgZzNfLAotICAgICAgICBnM18uYmVnaW4oKSwgZzRfLCBnNF8uYmVnaW4oKSwgZzVfLCBn
NV8uYmVnaW4oKSwgZzZfLCBnNl8uYmVnaW4oKSwgZzdfLAotICAgICAgICBnN18uYmVnaW4oKSwg
ZzhfLCBnOF8uYmVnaW4oKSwgZzlfLCBnOV8uYmVnaW4oKSwgZzEwXywgZzEwXy5iZWdpbigpKTsK
LSAgfQotICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogRW5kKCkg
Y29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywgZzFfLCBnMV8uZW5kKCksIGcy
XywgZzJfLmVuZCgpLCBnM18sIGczXy5lbmQoKSwKLSAgICAgICAgZzRfLCBnNF8uZW5kKCksIGc1
XywgZzVfLmVuZCgpLCBnNl8sIGc2Xy5lbmQoKSwgZzdfLCBnN18uZW5kKCksIGc4XywKLSAgICAg
ICAgZzhfLmVuZCgpLCBnOV8sIGc5Xy5lbmQoKSwgZzEwXywgZzEwXy5lbmQoKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZh
Y2U8UGFyYW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPFQxPiYgZzEsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMT46Oml0
ZXJhdG9yJiBjdXJyZW50MSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQyPiYgZzIsCi0g
ICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46Oml0ZXJhdG9yJiBjdXJyZW50
MiwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQzPiYgZzMsCi0gICAgICBjb25zdCB0eXBl
bmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0ZXJhdG9yJiBjdXJyZW50MywKLSAgICAgIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ0PiYgZzQsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUND46Oml0ZXJhdG9yJiBjdXJyZW50NCwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9y
PFQ1PiYgZzUsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJh
dG9yJiBjdXJyZW50NSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ2PiYgZzYsCi0gICAg
ICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yJiBjdXJyZW50NiwK
LSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ3PiYgZzcsCi0gICAgICBjb25zdCB0eXBlbmFt
ZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yJiBjdXJyZW50NywKLSAgICAgIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPFQ4PiYgZzgsCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUOD46Oml0ZXJhdG9yJiBjdXJyZW50OCwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQ5
PiYgZzksCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9y
JiBjdXJyZW50OSwKLSAgICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9yPFQxMD4mIGcxMCwKLSAgICAg
IGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQxMD46Oml0ZXJhdG9yJiBjdXJyZW50MTAp
Ci0gICAgICAgIDogYmFzZV8oYmFzZSksCi0gICAgICAgICAgYmVnaW4xXyhnMS5iZWdpbigpKSwg
ZW5kMV8oZzEuZW5kKCkpLCBjdXJyZW50MV8oY3VycmVudDEpLAotICAgICAgICAgIGJlZ2luMl8o
ZzIuYmVnaW4oKSksIGVuZDJfKGcyLmVuZCgpKSwgY3VycmVudDJfKGN1cnJlbnQyKSwKLSAgICAg
ICAgICBiZWdpbjNfKGczLmJlZ2luKCkpLCBlbmQzXyhnMy5lbmQoKSksIGN1cnJlbnQzXyhjdXJy
ZW50MyksCi0gICAgICAgICAgYmVnaW40XyhnNC5iZWdpbigpKSwgZW5kNF8oZzQuZW5kKCkpLCBj
dXJyZW50NF8oY3VycmVudDQpLAotICAgICAgICAgIGJlZ2luNV8oZzUuYmVnaW4oKSksIGVuZDVf
KGc1LmVuZCgpKSwgY3VycmVudDVfKGN1cnJlbnQ1KSwKLSAgICAgICAgICBiZWdpbjZfKGc2LmJl
Z2luKCkpLCBlbmQ2XyhnNi5lbmQoKSksIGN1cnJlbnQ2XyhjdXJyZW50NiksCi0gICAgICAgICAg
YmVnaW43XyhnNy5iZWdpbigpKSwgZW5kN18oZzcuZW5kKCkpLCBjdXJyZW50N18oY3VycmVudDcp
LAotICAgICAgICAgIGJlZ2luOF8oZzguYmVnaW4oKSksIGVuZDhfKGc4LmVuZCgpKSwgY3VycmVu
dDhfKGN1cnJlbnQ4KSwKLSAgICAgICAgICBiZWdpbjlfKGc5LmJlZ2luKCkpLCBlbmQ5XyhnOS5l
bmQoKSksIGN1cnJlbnQ5XyhjdXJyZW50OSksCi0gICAgICAgICAgYmVnaW4xMF8oZzEwLmJlZ2lu
KCkpLCBlbmQxMF8oZzEwLmVuZCgpKSwgY3VycmVudDEwXyhjdXJyZW50MTApICAgIHsKLSAgICAg
IENvbXB1dGVDdXJyZW50VmFsdWUoKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+SXRlcmF0b3IoKSB7
fQotCi0gICAgdmlydHVhbCBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+
KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgewotICAgICAgcmV0dXJuIGJhc2VfOwotICAgIH0KLSAg
ICAvLyBBZHZhbmNlIHNob3VsZCBub3QgYmUgY2FsbGVkIG9uIGJleW9uZC1vZi1yYW5nZSBpdGVy
YXRvcnMKLSAgICAvLyBzbyBubyBjb21wb25lbnQgaXRlcmF0b3JzIG11c3QgYmUgYmV5b25kIGVu
ZCBvZiByYW5nZSwgZWl0aGVyLgotICAgIHZpcnR1YWwgdm9pZCBBZHZhbmNlKCkgewotICAgICAg
YXNzZXJ0KCFBdEVuZCgpKTsKLSAgICAgICsrY3VycmVudDEwXzsKLSAgICAgIGlmIChjdXJyZW50
MTBfID09IGVuZDEwXykgewotICAgICAgICBjdXJyZW50MTBfID0gYmVnaW4xMF87Ci0gICAgICAg
ICsrY3VycmVudDlfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ5XyA9PSBlbmQ5Xykgewot
ICAgICAgICBjdXJyZW50OV8gPSBiZWdpbjlfOwotICAgICAgICArK2N1cnJlbnQ4XzsKLSAgICAg
IH0KLSAgICAgIGlmIChjdXJyZW50OF8gPT0gZW5kOF8pIHsKLSAgICAgICAgY3VycmVudDhfID0g
YmVnaW44XzsKLSAgICAgICAgKytjdXJyZW50N187Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVu
dDdfID09IGVuZDdfKSB7Ci0gICAgICAgIGN1cnJlbnQ3XyA9IGJlZ2luN187Ci0gICAgICAgICsr
Y3VycmVudDZfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQ2XyA9PSBlbmQ2XykgewotICAg
ICAgICBjdXJyZW50Nl8gPSBiZWdpbjZfOwotICAgICAgICArK2N1cnJlbnQ1XzsKLSAgICAgIH0K
LSAgICAgIGlmIChjdXJyZW50NV8gPT0gZW5kNV8pIHsKLSAgICAgICAgY3VycmVudDVfID0gYmVn
aW41XzsKLSAgICAgICAgKytjdXJyZW50NF87Ci0gICAgICB9Ci0gICAgICBpZiAoY3VycmVudDRf
ID09IGVuZDRfKSB7Ci0gICAgICAgIGN1cnJlbnQ0XyA9IGJlZ2luNF87Ci0gICAgICAgICsrY3Vy
cmVudDNfOwotICAgICAgfQotICAgICAgaWYgKGN1cnJlbnQzXyA9PSBlbmQzXykgewotICAgICAg
ICBjdXJyZW50M18gPSBiZWdpbjNfOwotICAgICAgICArK2N1cnJlbnQyXzsKLSAgICAgIH0KLSAg
ICAgIGlmIChjdXJyZW50Ml8gPT0gZW5kMl8pIHsKLSAgICAgICAgY3VycmVudDJfID0gYmVnaW4y
XzsKLSAgICAgICAgKytjdXJyZW50MV87Ci0gICAgICB9Ci0gICAgICBDb21wdXRlQ3VycmVudFZh
bHVlKCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5
cGU+KiBDbG9uZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwot
ICAgIH0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0
dXJuICZjdXJyZW50X3ZhbHVlXzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8g
SGF2aW5nIHRoZSBzYW1lIGJhc2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIK
LSAgICAgIC8vIGl0ZXJhdG9yIGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2Fz
dC4KLSAgICAgIEdURVNUX0NIRUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVy
YXRvcigpKQotICAgICAgICAgIDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBp
dGVyYXRvcnMgIgotICAgICAgICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwg
c3RkOjplbmRsOwotICAgICAgY29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAg
ICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0g
ICAgICAvLyBXZSBtdXN0IHJlcG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50
IGJleW9uZCB0aGVpcgotICAgICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBl
biBpbiBhIHZhcmlldHkgb2YgZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1
bHQgQXRFbmQoKS4KLSAgICAgIHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQo
KSkgfHwKLSAgICAgICAgICgKLSAgICAgICAgICBjdXJyZW50MV8gPT0gdHlwZWRfb3RoZXItPmN1
cnJlbnQxXyAmJgotICAgICAgICAgIGN1cnJlbnQyXyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDJf
ICYmCi0gICAgICAgICAgY3VycmVudDNfID09IHR5cGVkX290aGVyLT5jdXJyZW50M18gJiYKLSAg
ICAgICAgICBjdXJyZW50NF8gPT0gdHlwZWRfb3RoZXItPmN1cnJlbnQ0XyAmJgotICAgICAgICAg
IGN1cnJlbnQ1XyA9PSB0eXBlZF9vdGhlci0+Y3VycmVudDVfICYmCi0gICAgICAgICAgY3VycmVu
dDZfID09IHR5cGVkX290aGVyLT5jdXJyZW50Nl8gJiYKLSAgICAgICAgICBjdXJyZW50N18gPT0g
dHlwZWRfb3RoZXItPmN1cnJlbnQ3XyAmJgotICAgICAgICAgIGN1cnJlbnQ4XyA9PSB0eXBlZF9v
dGhlci0+Y3VycmVudDhfICYmCi0gICAgICAgICAgY3VycmVudDlfID09IHR5cGVkX290aGVyLT5j
dXJyZW50OV8gJiYKLSAgICAgICAgICBjdXJyZW50MTBfID09IHR5cGVkX290aGVyLT5jdXJyZW50
MTBfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3Im
IG90aGVyKQotICAgICAgICA6IGJhc2VfKG90aGVyLmJhc2VfKSwKLSAgICAgICAgYmVnaW4xXyhv
dGhlci5iZWdpbjFfKSwKLSAgICAgICAgZW5kMV8ob3RoZXIuZW5kMV8pLAotICAgICAgICBjdXJy
ZW50MV8ob3RoZXIuY3VycmVudDFfKSwKLSAgICAgICAgYmVnaW4yXyhvdGhlci5iZWdpbjJfKSwK
LSAgICAgICAgZW5kMl8ob3RoZXIuZW5kMl8pLAotICAgICAgICBjdXJyZW50Ml8ob3RoZXIuY3Vy
cmVudDJfKSwKLSAgICAgICAgYmVnaW4zXyhvdGhlci5iZWdpbjNfKSwKLSAgICAgICAgZW5kM18o
b3RoZXIuZW5kM18pLAotICAgICAgICBjdXJyZW50M18ob3RoZXIuY3VycmVudDNfKSwKLSAgICAg
ICAgYmVnaW40XyhvdGhlci5iZWdpbjRfKSwKLSAgICAgICAgZW5kNF8ob3RoZXIuZW5kNF8pLAot
ICAgICAgICBjdXJyZW50NF8ob3RoZXIuY3VycmVudDRfKSwKLSAgICAgICAgYmVnaW41XyhvdGhl
ci5iZWdpbjVfKSwKLSAgICAgICAgZW5kNV8ob3RoZXIuZW5kNV8pLAotICAgICAgICBjdXJyZW50
NV8ob3RoZXIuY3VycmVudDVfKSwKLSAgICAgICAgYmVnaW42XyhvdGhlci5iZWdpbjZfKSwKLSAg
ICAgICAgZW5kNl8ob3RoZXIuZW5kNl8pLAotICAgICAgICBjdXJyZW50Nl8ob3RoZXIuY3VycmVu
dDZfKSwKLSAgICAgICAgYmVnaW43XyhvdGhlci5iZWdpbjdfKSwKLSAgICAgICAgZW5kN18ob3Ro
ZXIuZW5kN18pLAotICAgICAgICBjdXJyZW50N18ob3RoZXIuY3VycmVudDdfKSwKLSAgICAgICAg
YmVnaW44XyhvdGhlci5iZWdpbjhfKSwKLSAgICAgICAgZW5kOF8ob3RoZXIuZW5kOF8pLAotICAg
ICAgICBjdXJyZW50OF8ob3RoZXIuY3VycmVudDhfKSwKLSAgICAgICAgYmVnaW45XyhvdGhlci5i
ZWdpbjlfKSwKLSAgICAgICAgZW5kOV8ob3RoZXIuZW5kOV8pLAotICAgICAgICBjdXJyZW50OV8o
b3RoZXIuY3VycmVudDlfKSwKLSAgICAgICAgYmVnaW4xMF8ob3RoZXIuYmVnaW4xMF8pLAotICAg
ICAgICBlbmQxMF8ob3RoZXIuZW5kMTBfKSwKLSAgICAgICAgY3VycmVudDEwXyhvdGhlci5jdXJy
ZW50MTBfKSB7Ci0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBDb21wdXRlQ3VycmVudFZhbHVlKCkgewotICAgICAgaWYgKCFBdEVuZCgpKQotICAgICAgICBj
dXJyZW50X3ZhbHVlXyA9IFBhcmFtVHlwZSgqY3VycmVudDFfLCAqY3VycmVudDJfLCAqY3VycmVu
dDNfLAotICAgICAgICAgICAgKmN1cnJlbnQ0XywgKmN1cnJlbnQ1XywgKmN1cnJlbnQ2XywgKmN1
cnJlbnQ3XywgKmN1cnJlbnQ4XywKLSAgICAgICAgICAgICpjdXJyZW50OV8sICpjdXJyZW50MTBf
KTsKLSAgICB9Ci0gICAgYm9vbCBBdEVuZCgpIGNvbnN0IHsKLSAgICAgIC8vIFdlIG11c3QgcmVw
b3J0IGl0ZXJhdG9yIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2hlbiBlaXRoZXIgb2YgdGhl
Ci0gICAgICAvLyBjb21wb25lbnQgaXRlcmF0b3JzIGhhcyByZWFjaGVkIHRoZSBlbmQgb2YgaXRz
IHJhbmdlLgotICAgICAgcmV0dXJuCi0gICAgICAgICAgY3VycmVudDFfID09IGVuZDFfIHx8Ci0g
ICAgICAgICAgY3VycmVudDJfID09IGVuZDJfIHx8Ci0gICAgICAgICAgY3VycmVudDNfID09IGVu
ZDNfIHx8Ci0gICAgICAgICAgY3VycmVudDRfID09IGVuZDRfIHx8Ci0gICAgICAgICAgY3VycmVu
dDVfID09IGVuZDVfIHx8Ci0gICAgICAgICAgY3VycmVudDZfID09IGVuZDZfIHx8Ci0gICAgICAg
ICAgY3VycmVudDdfID09IGVuZDdfIHx8Ci0gICAgICAgICAgY3VycmVudDhfID09IGVuZDhfIHx8
Ci0gICAgICAgICAgY3VycmVudDlfID09IGVuZDlfIHx8Ci0gICAgICAgICAgY3VycmVudDEwXyA9
PSBlbmQxMF87Ci0gICAgfQotCi0gICAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cik7Ci0KLSAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBjb25z
dCBiYXNlXzsKLSAgICAvLyBiZWdpbltpXV8gYW5kIGVuZFtpXV8gZGVmaW5lIHRoZSBpLXRoIHJh
bmdlIHRoYXQgSXRlcmF0b3IgdHJhdmVyc2VzLgotICAgIC8vIGN1cnJlbnRbaV1fIGlzIHRoZSBh
Y3R1YWwgdHJhdmVyc2luZyBpdGVyYXRvci4KLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxUMT46Oml0ZXJhdG9yIGJlZ2luMV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5l
cmF0b3I8VDE+OjppdGVyYXRvciBlbmQxXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
MT46Oml0ZXJhdG9yIGN1cnJlbnQxXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUMj46Oml0ZXJhdG9yIGJlZ2luMl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0
b3I8VDI+OjppdGVyYXRvciBlbmQyXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMj46
Oml0ZXJhdG9yIGN1cnJlbnQyXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Mz46Oml0ZXJhdG9yIGJlZ2luM187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8
VDM+OjppdGVyYXRvciBlbmQzXzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMz46Oml0
ZXJhdG9yIGN1cnJlbnQzXzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46
Oml0ZXJhdG9yIGJlZ2luNF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDQ+
OjppdGVyYXRvciBlbmQ0XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUND46Oml0ZXJh
dG9yIGN1cnJlbnQ0XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0
ZXJhdG9yIGJlZ2luNV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDU+Ojpp
dGVyYXRvciBlbmQ1XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNT46Oml0ZXJhdG9y
IGN1cnJlbnQ1XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJh
dG9yIGJlZ2luNl87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDY+OjppdGVy
YXRvciBlbmQ2XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNj46Oml0ZXJhdG9yIGN1
cnJlbnQ2XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9y
IGJlZ2luN187Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDc+OjppdGVyYXRv
ciBlbmQ3XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUNz46Oml0ZXJhdG9yIGN1cnJl
bnQ3XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGJl
Z2luOF87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDg+OjppdGVyYXRvciBl
bmQ4XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOD46Oml0ZXJhdG9yIGN1cnJlbnQ4
XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGJlZ2lu
OV87Ci0gICAgY29uc3QgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDk+OjppdGVyYXRvciBlbmQ5
XzsKLSAgICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUOT46Oml0ZXJhdG9yIGN1cnJlbnQ5XzsK
LSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBiZWdpbjEw
XzsKLSAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUMTA+OjppdGVyYXRvciBlbmQx
MF87Ci0gICAgdHlwZW5hbWUgUGFyYW1HZW5lcmF0b3I8VDEwPjo6aXRlcmF0b3IgY3VycmVudDEw
XzsKLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBDYXJ0ZXNp
YW5Qcm9kdWN0R2VuZXJhdG9yMTA6Okl0ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24g
LSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0
ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yMTAmIG90aGVyKTsKLQotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxUMT4gZzFfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUMj4gZzJfOwotICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUMz4gZzNfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUND4gZzRfOwotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxUNT4gZzVfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNj4g
ZzZfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUNz4gZzdfOwotICBjb25zdCBQYXJhbUdlbmVy
YXRvcjxUOD4gZzhfOwotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxUOT4gZzlfOwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxUMTA+IGcxMF87Ci19OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdl
bmVyYXRvcjEwCi0KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElO
IFVTRVIgQ09ERS4KLS8vCi0vLyBIZWxwZXIgY2xhc3NlcyBwcm92aWRpbmcgQ29tYmluZSgpIHdp
dGggcG9seW1vcnBoaWMgZmVhdHVyZXMuIFRoZXkgYWxsb3cKLS8vIGNhc3RpbmcgQ2FydGVzaWFu
UHJvZHVjdEdlbmVyYXRvck48VD4gdG8gUGFyYW1HZW5lcmF0b3I8VT4gaWYgVCBpcwotLy8gY29u
dmVydGlibGUgdG8gVS4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgR2VuZXJhdG9yMSwgY2xhc3MgR2Vu
ZXJhdG9yMj4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIyIHsKLSBwdWJsaWM6Ci1DYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyMihjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMikge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6
dHVwbGU8VDEsIFQyPiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0
ZXN0aW5nOjp0dXBsZTxUMSwgVDI+ID4oCi0gICAgICAgIG5ldyBDYXJ0ZXNpYW5Qcm9kdWN0R2Vu
ZXJhdG9yMjxUMSwgVDI+KAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4g
PihnMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pKSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBp
cyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJvZHVjdEhv
bGRlcjImIG90aGVyKTsKLQotICBjb25zdCBHZW5lcmF0b3IxIGcxXzsKLSAgY29uc3QgR2VuZXJh
dG9yMiBnMl87Ci19OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjIKLQotdGVtcGxh
dGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjM+
Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyB7Ci0gcHVibGljOgotQ2FydGVzaWFuUHJv
ZHVjdEhvbGRlcjMoY29uc3QgR2VuZXJhdG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAot
ICAgIGNvbnN0IEdlbmVyYXRvcjMmIGczKQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQz
PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBs
ZTxUMSwgVDIsIFQzPiA+KAotICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjM8
VDEsIFQyLCBUMz4oCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcx
XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCi0gICAg
ICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXykpKTsKLSAgfQotCi0gcHJp
dmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVk
LgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMyYgb3RoZXIp
OwotCi0gIGNvbnN0IEdlbmVyYXRvcjEgZzFfOwotICBjb25zdCBHZW5lcmF0b3IyIGcyXzsKLSAg
Y29uc3QgR2VuZXJhdG9yMyBnM187Ci19OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjMKLQotdGVtcGxhdGUgPGNsYXNzIEdlbmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNz
IEdlbmVyYXRvcjMsCi0gICAgY2xhc3MgR2VuZXJhdG9yND4KLWNsYXNzIENhcnRlc2lhblByb2R1
Y3RIb2xkZXI0IHsKLSBwdWJsaWM6Ci1DYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNChjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCi0gICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0KQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18o
ZzMpLCBnNF8oZzQpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6dGVz
dGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQ+ID4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFBhcmFt
R2VuZXJhdG9yPCA6OnRlc3Rpbmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0PiA+KAotICAgICAgICBu
ZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjQ8VDEsIFQyLCBUMywgVDQ+KAotICAgICAgICBz
dGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAotICAgICAgICBzdGF0aWNfY2Fz
dDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMz4gPihnM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxU
ND4gPihnNF8pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0g
YXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVz
aWFuUHJvZHVjdEhvbGRlcjQmIG90aGVyKTsKLQotICBjb25zdCBHZW5lcmF0b3IxIGcxXzsKLSAg
Y29uc3QgR2VuZXJhdG9yMiBnMl87Ci0gIGNvbnN0IEdlbmVyYXRvcjMgZzNfOwotICBjb25zdCBH
ZW5lcmF0b3I0IGc0XzsKLX07ICAvLyBjbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyNAotCi10
ZW1wbGF0ZSA8Y2xhc3MgR2VuZXJhdG9yMSwgY2xhc3MgR2VuZXJhdG9yMiwgY2xhc3MgR2VuZXJh
dG9yMywKLSAgICBjbGFzcyBHZW5lcmF0b3I0LCBjbGFzcyBHZW5lcmF0b3I1PgotY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEhvbGRlcjUgewotIHB1YmxpYzoKLUNhcnRlc2lhblByb2R1Y3RIb2xkZXI1
KGNvbnN0IEdlbmVyYXRvcjEmIGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKLSAgICBjb25zdCBH
ZW5lcmF0b3IzJiBnMywgY29uc3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1
KQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpIHt9
Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6OnRlc3Rp
bmc6OnR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFy
YW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1PiA+KAotICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjU8VDEsIFQyLCBUMywgVDQsIFQ1PigK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDQ+ID4oZzRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDU+ID4oZzVfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRl
c2lhblByb2R1Y3RIb2xkZXI1JiBvdGhlcik7Ci0KLSAgY29uc3QgR2VuZXJhdG9yMSBnMV87Ci0g
IGNvbnN0IEdlbmVyYXRvcjIgZzJfOwotICBjb25zdCBHZW5lcmF0b3IzIGczXzsKLSAgY29uc3Qg
R2VuZXJhdG9yNCBnNF87Ci0gIGNvbnN0IEdlbmVyYXRvcjUgZzVfOwotfTsgIC8vIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RIb2xkZXI1Ci0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFz
cyBHZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNs
YXNzIEdlbmVyYXRvcjUsIGNsYXNzIEdlbmVyYXRvcjY+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyNiB7Ci0gcHVibGljOgotQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYoY29uc3QgR2VuZXJh
dG9yMSYgZzEsIGNvbnN0IEdlbmVyYXRvcjImIGcyLAotICAgIGNvbnN0IEdlbmVyYXRvcjMmIGcz
LCBjb25zdCBHZW5lcmF0b3I0JiBnNCwgY29uc3QgR2VuZXJhdG9yNSYgZzUsCi0gICAgY29uc3Qg
R2VuZXJhdG9yNiYgZzYpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0Xyhn
NCksIGc1XyhnNSksIGc2XyhnNikge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICAgIHR5cGVu
YW1lIFQ2PgotICBvcGVyYXRvciBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2PiA+KCkgY29uc3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRv
cjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PiA+KAotICAgICAgICBu
ZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4oCi0g
ICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQxPiA+KGcxXyksCi0gICAgICAgIHN0
YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQyPiA+KGcyXyksCi0gICAgICAgIHN0YXRpY19jYXN0
PFBhcmFtR2VuZXJhdG9yPFQzPiA+KGczXyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2Vu
ZXJhdG9yPFQ0PiA+KGc0XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ1
PiA+KGc1XyksCi0gICAgICAgIHN0YXRpY19jYXN0PFBhcmFtR2VuZXJhdG9yPFQ2PiA+KGc2Xykp
KTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50
IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyNiYgb3RoZXIpOwotCi0gIGNvbnN0IEdlbmVyYXRvcjEgZzFfOwotICBjb25zdCBHZW5l
cmF0b3IyIGcyXzsKLSAgY29uc3QgR2VuZXJhdG9yMyBnM187Ci0gIGNvbnN0IEdlbmVyYXRvcjQg
ZzRfOwotICBjb25zdCBHZW5lcmF0b3I1IGc1XzsKLSAgY29uc3QgR2VuZXJhdG9yNiBnNl87Ci19
OyAgLy8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjYKLQotdGVtcGxhdGUgPGNsYXNzIEdl
bmVyYXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjMsCi0gICAgY2xhc3Mg
R2VuZXJhdG9yNCwgY2xhc3MgR2VuZXJhdG9yNSwgY2xhc3MgR2VuZXJhdG9yNiwgY2xhc3MgR2Vu
ZXJhdG9yNz4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI3IHsKLSBwdWJsaWM6Ci1DYXJ0
ZXNpYW5Qcm9kdWN0SG9sZGVyNyhjb25zdCBHZW5lcmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9y
MiYgZzIsCi0gICAgY29uc3QgR2VuZXJhdG9yMyYgZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBj
b25zdCBHZW5lcmF0b3I1JiBnNSwKLSAgICBjb25zdCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2Vu
ZXJhdG9yNyYgZzcpCi0gICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCks
IGc1XyhnNSksIGc2XyhnNiksIGc3XyhnNykge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLSAgb3BlcmF0b3IgUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwKLSAgICAgIFQ3PiA+KCkgY29u
c3QgewotICAgIHJldHVybiBQYXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNz4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5l
cmF0b3I3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PigKLSAgICAgICAgc3RhdGljX2Nhc3Q8
UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5l
cmF0b3I8VDI+ID4oZzJfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+
ID4oZzNfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDU+ID4oZzVfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDY+ID4oZzZfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDc+ID4oZzdfKSkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBO
byBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI3JiBvdGhlcik7Ci0KLSAgY29uc3Qg
R2VuZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIgZzJfOwotICBjb25zdCBHZW5lcmF0
b3IzIGczXzsKLSAgY29uc3QgR2VuZXJhdG9yNCBnNF87Ci0gIGNvbnN0IEdlbmVyYXRvcjUgZzVf
OwotICBjb25zdCBHZW5lcmF0b3I2IGc2XzsKLSAgY29uc3QgR2VuZXJhdG9yNyBnN187Ci19OyAg
Ly8gY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRlcjcKLQotdGVtcGxhdGUgPGNsYXNzIEdlbmVy
YXRvcjEsIGNsYXNzIEdlbmVyYXRvcjIsIGNsYXNzIEdlbmVyYXRvcjMsCi0gICAgY2xhc3MgR2Vu
ZXJhdG9yNCwgY2xhc3MgR2VuZXJhdG9yNSwgY2xhc3MgR2VuZXJhdG9yNiwgY2xhc3MgR2VuZXJh
dG9yNywKLSAgICBjbGFzcyBHZW5lcmF0b3I4PgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEhvbGRl
cjggewotIHB1YmxpYzoKLUNhcnRlc2lhblByb2R1Y3RIb2xkZXI4KGNvbnN0IEdlbmVyYXRvcjEm
IGcxLCBjb25zdCBHZW5lcmF0b3IyJiBnMiwKLSAgICBjb25zdCBHZW5lcmF0b3IzJiBnMywgY29u
c3QgR2VuZXJhdG9yNCYgZzQsIGNvbnN0IEdlbmVyYXRvcjUmIGc1LAotICAgIGNvbnN0IEdlbmVy
YXRvcjYmIGc2LCBjb25zdCBHZW5lcmF0b3I3JiBnNywgY29uc3QgR2VuZXJhdG9yOCYgZzgpCi0g
ICAgICA6IGcxXyhnMSksIGcyXyhnMiksIGczXyhnMyksIGc0XyhnNCksIGc1XyhnNSksIGc2Xyhn
NiksIGc3XyhnNyksCi0gICAgICAgICAgZzhfKGc4KSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAot
ICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgb3BlcmF0b3Ig
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsCi0gICAgICBUOD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4PiA+KAotICAgICAg
ICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4PigKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDE+ID4oZzFfKSwK
LSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDI+ID4oZzJfKSwKLSAgICAgICAg
c3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDM+ID4oZzNfKSwKLSAgICAgICAgc3RhdGljX2Nh
c3Q8UGFyYW1HZW5lcmF0b3I8VDQ+ID4oZzRfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1H
ZW5lcmF0b3I8VDU+ID4oZzVfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8
VDY+ID4oZzZfKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDc+ID4oZzdf
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8UGFyYW1HZW5lcmF0b3I8VDg+ID4oZzhfKSkpOwotICB9
Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFzc2lnbm1lbnQgaXMgdW5z
dXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IENhcnRlc2lhblByb2R1Y3RIb2xkZXI4
JiBvdGhlcik7Ci0KLSAgY29uc3QgR2VuZXJhdG9yMSBnMV87Ci0gIGNvbnN0IEdlbmVyYXRvcjIg
ZzJfOwotICBjb25zdCBHZW5lcmF0b3IzIGczXzsKLSAgY29uc3QgR2VuZXJhdG9yNCBnNF87Ci0g
IGNvbnN0IEdlbmVyYXRvcjUgZzVfOwotICBjb25zdCBHZW5lcmF0b3I2IGc2XzsKLSAgY29uc3Qg
R2VuZXJhdG9yNyBnN187Ci0gIGNvbnN0IEdlbmVyYXRvcjggZzhfOwotfTsgIC8vIGNsYXNzIENh
cnRlc2lhblByb2R1Y3RIb2xkZXI4Ci0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFz
cyBHZW5lcmF0b3IyLCBjbGFzcyBHZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNs
YXNzIEdlbmVyYXRvcjUsIGNsYXNzIEdlbmVyYXRvcjYsIGNsYXNzIEdlbmVyYXRvcjcsCi0gICAg
Y2xhc3MgR2VuZXJhdG9yOCwgY2xhc3MgR2VuZXJhdG9yOT4KLWNsYXNzIENhcnRlc2lhblByb2R1
Y3RIb2xkZXI5IHsKLSBwdWJsaWM6Ci1DYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyOShjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCi0gICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwKLSAgICBjb25z
dCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRvcjgm
IGc4LAotICAgIGNvbnN0IEdlbmVyYXRvcjkmIGc5KQotICAgICAgOiBnMV8oZzEpLCBnMl8oZzIp
LCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8oZzYpLCBnN18oZzcpLCBnOF8oZzgpLAot
ICAgICAgICAgIGc5XyhnOSkge30KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5PgotICBvcGVyYXRvciBQ
YXJhbUdlbmVyYXRvcjwgOjp0ZXN0aW5nOjp0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsCi0gICAgICBUOT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8
IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LAotICAgICAg
ICBUOT4gPigKLSAgICAgICAgbmV3IENhcnRlc2lhblByb2R1Y3RHZW5lcmF0b3I5PFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+KAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdl
bmVyYXRvcjxUMT4gPihnMV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxU
Mj4gPihnMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMz4gPihnM18p
LAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUND4gPihnNF8pLAotICAgICAg
ICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNT4gPihnNV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxQYXJhbUdlbmVyYXRvcjxUNj4gPihnNl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUNz4gPihnN18pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUOD4gPihnOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUOT4gPihn
OV8pKSk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdu
bWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgQ2FydGVzaWFuUHJv
ZHVjdEhvbGRlcjkmIG90aGVyKTsKLQotICBjb25zdCBHZW5lcmF0b3IxIGcxXzsKLSAgY29uc3Qg
R2VuZXJhdG9yMiBnMl87Ci0gIGNvbnN0IEdlbmVyYXRvcjMgZzNfOwotICBjb25zdCBHZW5lcmF0
b3I0IGc0XzsKLSAgY29uc3QgR2VuZXJhdG9yNSBnNV87Ci0gIGNvbnN0IEdlbmVyYXRvcjYgZzZf
OwotICBjb25zdCBHZW5lcmF0b3I3IGc3XzsKLSAgY29uc3QgR2VuZXJhdG9yOCBnOF87Ci0gIGNv
bnN0IEdlbmVyYXRvcjkgZzlfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXI5
Ci0KLXRlbXBsYXRlIDxjbGFzcyBHZW5lcmF0b3IxLCBjbGFzcyBHZW5lcmF0b3IyLCBjbGFzcyBH
ZW5lcmF0b3IzLAotICAgIGNsYXNzIEdlbmVyYXRvcjQsIGNsYXNzIEdlbmVyYXRvcjUsIGNsYXNz
IEdlbmVyYXRvcjYsIGNsYXNzIEdlbmVyYXRvcjcsCi0gICAgY2xhc3MgR2VuZXJhdG9yOCwgY2xh
c3MgR2VuZXJhdG9yOSwgY2xhc3MgR2VuZXJhdG9yMTA+Ci1jbGFzcyBDYXJ0ZXNpYW5Qcm9kdWN0
SG9sZGVyMTAgewotIHB1YmxpYzoKLUNhcnRlc2lhblByb2R1Y3RIb2xkZXIxMChjb25zdCBHZW5l
cmF0b3IxJiBnMSwgY29uc3QgR2VuZXJhdG9yMiYgZzIsCi0gICAgY29uc3QgR2VuZXJhdG9yMyYg
ZzMsIGNvbnN0IEdlbmVyYXRvcjQmIGc0LCBjb25zdCBHZW5lcmF0b3I1JiBnNSwKLSAgICBjb25z
dCBHZW5lcmF0b3I2JiBnNiwgY29uc3QgR2VuZXJhdG9yNyYgZzcsIGNvbnN0IEdlbmVyYXRvcjgm
IGc4LAotICAgIGNvbnN0IEdlbmVyYXRvcjkmIGc5LCBjb25zdCBHZW5lcmF0b3IxMCYgZzEwKQot
ICAgICAgOiBnMV8oZzEpLCBnMl8oZzIpLCBnM18oZzMpLCBnNF8oZzQpLCBnNV8oZzUpLCBnNl8o
ZzYpLCBnN18oZzcpLCBnOF8oZzgpLAotICAgICAgICAgIGc5XyhnOSksIGcxMF8oZzEwKSB7fQot
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMD4KLSAgb3BlcmF0b3IgUGFyYW1HZW5l
cmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwKLSAgICAgIFQxMD4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFyYW1HZW5lcmF0b3I8IDo6
dGVzdGluZzo6dHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwKLSAgICAg
ICAgVDEwPiA+KAotICAgICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvcjEwPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksCi0gICAgICAgICAgICBUMTA+KAotICAgICAg
ICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUMT4gPihnMV8pLAotICAgICAgICBzdGF0aWNf
Y2FzdDxQYXJhbUdlbmVyYXRvcjxUMj4gPihnMl8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJh
bUdlbmVyYXRvcjxUMz4gPihnM18pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRv
cjxUND4gPihnNF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNT4gPihn
NV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNj4gPihnNl8pLAotICAg
ICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUNz4gPihnN18pLAotICAgICAgICBzdGF0
aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUOD4gPihnOF8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQ
YXJhbUdlbmVyYXRvcjxUOT4gPihnOV8pLAotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVy
YXRvcjxUMTA+ID4oZzEwXykpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBDYXJ0ZXNpYW5Qcm9kdWN0SG9sZGVyMTAmIG90aGVyKTsKLQotICBjb25zdCBHZW5lcmF0b3Ix
IGcxXzsKLSAgY29uc3QgR2VuZXJhdG9yMiBnMl87Ci0gIGNvbnN0IEdlbmVyYXRvcjMgZzNfOwot
ICBjb25zdCBHZW5lcmF0b3I0IGc0XzsKLSAgY29uc3QgR2VuZXJhdG9yNSBnNV87Ci0gIGNvbnN0
IEdlbmVyYXRvcjYgZzZfOwotICBjb25zdCBHZW5lcmF0b3I3IGc3XzsKLSAgY29uc3QgR2VuZXJh
dG9yOCBnOF87Ci0gIGNvbnN0IEdlbmVyYXRvcjkgZzlfOwotICBjb25zdCBHZW5lcmF0b3IxMCBn
MTBfOwotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIxMAotCi0jIGVuZGlmICAv
LyBHVEVTVF9IQVNfQ09NQklORQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5h
bWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNl
bmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0dF
TkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC1wYXJhbS11dGlsLWdlbmVyYXRlZC5oLnB1bXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9pbmNsdWRl
L2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgucHVtcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM3YzQ3YWYwYmIxLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLWdlbmVy
YXRlZC5oLnB1bXAKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotJCQgLSotIG1vZGU6
IGMrKzsgLSotCi0kdmFyIG4gPSA1MCAgJCQgTWF4aW11bSBsZW5ndGggb2YgVmFsdWVzIGFyZ3Vt
ZW50cyB3ZSB3YW50IHRvIHN1cHBvcnQuCi0kdmFyIG1heHR1cGxlID0gMTAgICQkIE1heGltdW0g
bnVtYmVyIG9mIENvbWJpbmUgYXJndW1lbnRzIHdlIHdhbnQgdG8gc3VwcG9ydC4KLS8vIENvcHly
aWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogdmxhZGxA
Z29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLQotLy8gVHlwZSBhbmQgZnVuY3Rpb24gdXRpbGl0aWVz
IGZvciBpbXBsZW1lbnRpbmcgcGFyYW1ldGVyaXplZCB0ZXN0cy4KLS8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBETyBOT1QgRURJVCBCWSBIQU5EIQotLy8KLS8vIEN1cnJl
bnRseSBHb29nbGUgVGVzdCBzdXBwb3J0cyBhdCBtb3N0ICRuIGFyZ3VtZW50cyBpbiBWYWx1ZXMs
Ci0vLyBhbmQgYXQgbW9zdCAkbWF4dHVwbGUgYXJndW1lbnRzIGluIENvbWJpbmUuIFBsZWFzZSBj
b250YWN0Ci0vLyBnb29nbGV0ZXN0ZnJhbWV3b3JrQGdvb2dsZWdyb3Vwcy5jb20gaWYgeW91IG5l
ZWQgbW9yZS4KLS8vIFBsZWFzZSBub3RlIHRoYXQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8g
Q29tYmluZSBpcyBsaW1pdGVkCi0vLyBieSB0aGUgbWF4aW11bSBhcml0eSBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgdHVwbGUgd2hpY2ggaXMKLS8vIGN1cnJlbnRseSBzZXQgYXQgJG1heHR1cGxl
LgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfUEFSQU1fVVRJ
TF9HRU5FUkFURURfSF8KLSNkZWZpbmUgR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwotCi0vLyBzY3JpcHRzL2Z1c2VfZ3Rlc3QucHkgZGVw
ZW5kcyBvbiBndGVzdCdzIG93biBoZWFkZXIgYmVpbmcgI2luY2x1ZGVkCi0vLyAqdW5jb25kaXRp
b25hbGx5Ki4gIFRoZXJlZm9yZSB0aGVzZSAjaW5jbHVkZXMgY2Fubm90IGJlIG1vdmVkCi0vLyBp
bnNpZGUgI2lmIEdURVNUX0hBU19QQVJBTV9URVNULgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFs
L2d0ZXN0LXBhcmFtLXV0aWwuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0
LmgiCi0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0K
LS8vIEZvcndhcmQgZGVjbGFyYXRpb25zIG9mIFZhbHVlc0luKCksIHdoaWNoIGlzIGltcGxlbWVu
dGVkIGluCi0vLyBpbmNsdWRlL2d0ZXN0L2d0ZXN0LXBhcmFtLXRlc3QuaC4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8Ci0gIHR5
cGVuYW1lIDo6dGVzdGluZzo6aW50ZXJuYWw6Okl0ZXJhdG9yVHJhaXRzPEZvcndhcmRJdGVyYXRv
cj46OnZhbHVlX3R5cGU+Ci1WYWx1ZXNJbihGb3J3YXJkSXRlcmF0b3IgYmVnaW4sIEZvcndhcmRJ
dGVyYXRvciBlbmQpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1pbnRlcm5h
bDo6UGFyYW1HZW5lcmF0b3I8VD4gVmFsdWVzSW4oY29uc3QgVCAoJmFycmF5KVtOXSk7Ci0KLXRl
bXBsYXRlIDxjbGFzcyBDb250YWluZXI+Ci1pbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8dHlwZW5h
bWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlPiBWYWx1ZXNJbigKLSAgICBjb25zdCBDb250YWluZXIm
IGNvbnRhaW5lcik7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFVzZWQgaW4gdGhlIFZh
bHVlcygpIGZ1bmN0aW9uIHRvIHByb3ZpZGUgcG9seW1vcnBoaWMgY2FwYWJpbGl0aWVzLgotJHJh
bmdlIGkgMS4ubgotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0KLXRlbXBsYXRlIDwkZm9yIGos
IFtbdHlwZW5hbWUgVCRqXV0+Ci1jbGFzcyBWYWx1ZUFycmF5JGkgewotIHB1YmxpYzoKLSAgJGlm
IGk9PTEgW1tleHBsaWNpdCBdXVZhbHVlQXJyYXkkaSgkZm9yIGosIFtbVCRqIHYkal1dKSA6ICRm
b3IgaiwgW1t2JChqKV8odiRqKV1dIHt9Ci0KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIG9w
ZXJhdG9yIFBhcmFtR2VuZXJhdG9yPFQ+KCkgY29uc3QgewotICAgIGNvbnN0IFQgYXJyYXlbXSA9
IHskZm9yIGosIFtbc3RhdGljX2Nhc3Q8VD4odiQoailfKV1dfTsKLSAgICByZXR1cm4gVmFsdWVz
SW4oYXJyYXkpOwotICB9Ci0KLSBwcml2YXRlOgotICAvLyBObyBpbXBsZW1lbnRhdGlvbiAtIGFz
c2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFZhbHVlQXJy
YXkkaSYgb3RoZXIpOwotCi0kZm9yIGogW1sKLQotICBjb25zdCBUJGogdiQoailfOwotXV0KLQot
fTsKLQotXV0KLQotIyBpZiBHVEVTVF9IQVNfQ09NQklORQotLy8gSU5URVJOQUwgSU1QTEVNRU5U
QVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBHZW5lcmF0ZXMgdmFsdWVz
IGZyb20gdGhlIENhcnRlc2lhbiBwcm9kdWN0IG9mIHZhbHVlcyBwcm9kdWNlZAotLy8gYnkgdGhl
IGFyZ3VtZW50IGdlbmVyYXRvcnMuCi0vLwotJHJhbmdlIGkgMi4ubWF4dHVwbGUKLSRmb3IgaSBb
WwotJHJhbmdlIGogMS4uaQotJHJhbmdlIGsgMi4uaQotCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5
cGVuYW1lIFQkal1dPgotY2xhc3MgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpCi0gICAgOiBw
dWJsaWMgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBb
W1Qkal1dPiA+IHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgOjp0ZXN0aW5nOjp0dXBsZTwkZm9yIGos
IFtbVCRqXV0+IFBhcmFtVHlwZTsKLQotICBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkoJGZv
ciBqLCBbW2NvbnN0IFBhcmFtR2VuZXJhdG9yPFQkaj4mIGckal1dKQotICAgICAgOiAkZm9yIGos
IFtbZyQoailfKGckaildXSB7fQotICB2aXJ0dWFsIH5DYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9y
JGkoKSB7fQotCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBC
ZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsICRmb3IgaiwgW1tn
JChqKV8sIGckKGopXy5iZWdpbigpXV0pOwotICB9Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxQYXJhbVR5cGU+KiBFbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRv
cih0aGlzLCAkZm9yIGosIFtbZyQoailfLCBnJChqKV8uZW5kKCldXSk7Ci0gIH0KLQotIHByaXZh
dGU6Ci0gIGNsYXNzIEl0ZXJhdG9yIDogcHVibGljIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8UGFy
YW1UeXBlPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3QgUGFyYW1HZW5lcmF0b3JJ
bnRlcmZhY2U8UGFyYW1UeXBlPiogYmFzZSwgJGZvciBqLCBbWwotCi0gICAgICBjb25zdCBQYXJh
bUdlbmVyYXRvcjxUJGo+JiBnJGosCi0gICAgICBjb25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRv
cjxUJGo+OjppdGVyYXRvciYgY3VycmVudCQoaildXSkKLSAgICAgICAgOiBiYXNlXyhiYXNlKSwK
LSRmb3IgaiwgW1sKLQotICAgICAgICAgIGJlZ2luJChqKV8oZyRqLmJlZ2luKCkpLCBlbmQkKGop
XyhnJGouZW5kKCkpLCBjdXJyZW50JChqKV8oY3VycmVudCRqKQotXV0gICAgewotICAgICAgQ29t
cHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0K
LSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFtVHlwZT4qIEJh
c2VHZW5lcmF0b3IoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gYmFzZV87Ci0gICAgfQotICAgIC8v
IEFkdmFuY2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gYmV5b25kLW9mLXJhbmdlIGl0ZXJhdG9y
cwotICAgIC8vIHNvIG5vIGNvbXBvbmVudCBpdGVyYXRvcnMgbXVzdCBiZSBiZXlvbmQgZW5kIG9m
IHJhbmdlLCBlaXRoZXIuCi0gICAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSB7Ci0gICAgICBhc3Nl
cnQoIUF0RW5kKCkpOwotICAgICAgKytjdXJyZW50JChpKV87Ci0KLSRmb3IgayBbWwotICAgICAg
aWYgKGN1cnJlbnQkKGkrMi1rKV8gPT0gZW5kJChpKzItaylfKSB7Ci0gICAgICAgIGN1cnJlbnQk
KGkrMi1rKV8gPSBiZWdpbiQoaSsyLWspXzsKLSAgICAgICAgKytjdXJyZW50JChpKzItay0xKV87
Ci0gICAgICB9Ci0KLV1dCi0gICAgICBDb21wdXRlQ3VycmVudFZhbHVlKCk7Ci0gICAgfQotICAg
IHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxQYXJhbVR5cGU+KiBDbG9uZSgpIGNvbnN0
IHsKLSAgICAgIHJldHVybiBuZXcgSXRlcmF0b3IoKnRoaXMpOwotICAgIH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFBhcmFtVHlwZSogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZjdXJyZW50X3ZhbHVl
XzsgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxQYXJhbVR5cGU+JiBvdGhlcikgY29uc3QgewotICAgICAgLy8gSGF2aW5nIHRoZSBzYW1lIGJh
c2UgZ2VuZXJhdG9yIGd1YXJhbnRlZXMgdGhhdCB0aGUgb3RoZXIKLSAgICAgIC8vIGl0ZXJhdG9y
IGlzIG9mIHRoZSBzYW1lIHR5cGUgYW5kIHdlIGNhbiBkb3duY2FzdC4KLSAgICAgIEdURVNUX0NI
RUNLXyhCYXNlR2VuZXJhdG9yKCkgPT0gb3RoZXIuQmFzZUdlbmVyYXRvcigpKQotICAgICAgICAg
IDw8ICJUaGUgcHJvZ3JhbSBhdHRlbXB0ZWQgdG8gY29tcGFyZSBpdGVyYXRvcnMgIgotICAgICAg
ICAgIDw8ICJmcm9tIGRpZmZlcmVudCBnZW5lcmF0b3JzLiIgPDwgc3RkOjplbmRsOwotICAgICAg
Y29uc3QgSXRlcmF0b3IqIHR5cGVkX290aGVyID0KLSAgICAgICAgICBDaGVja2VkRG93bmNhc3RU
b0FjdHVhbFR5cGU8Y29uc3QgSXRlcmF0b3I+KCZvdGhlcik7Ci0gICAgICAvLyBXZSBtdXN0IHJl
cG9ydCBpdGVyYXRvcnMgZXF1YWwgaWYgdGhleSBib3RoIHBvaW50IGJleW9uZCB0aGVpcgotICAg
ICAgLy8gcmVzcGVjdGl2ZSByYW5nZXMuIFRoYXQgY2FuIGhhcHBlbiBpbiBhIHZhcmlldHkgb2Yg
ZmFzaGlvbnMsCi0gICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNvbnN1bHQgQXRFbmQoKS4KLSAgICAg
IHJldHVybiAoQXRFbmQoKSAmJiB0eXBlZF9vdGhlci0+QXRFbmQoKSkgfHwKLSAgICAgICAgICgk
Zm9yIGogICYmIFtbCi0KLSAgICAgICAgICBjdXJyZW50JChqKV8gPT0gdHlwZWRfb3RoZXItPmN1
cnJlbnQkKGopXwotXV0pOwotICAgIH0KLQotICAgcHJpdmF0ZToKLSAgICBJdGVyYXRvcihjb25z
dCBJdGVyYXRvciYgb3RoZXIpCi0gICAgICAgIDogYmFzZV8ob3RoZXIuYmFzZV8pLCAkZm9yIGos
IFtbCi0KLSAgICAgICAgYmVnaW4kKGopXyhvdGhlci5iZWdpbiQoailfKSwKLSAgICAgICAgZW5k
JChqKV8ob3RoZXIuZW5kJChqKV8pLAotICAgICAgICBjdXJyZW50JChqKV8ob3RoZXIuY3VycmVu
dCQoailfKQotXV0gewotICAgICAgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpOwotICAgIH0KLQotICAg
IHZvaWQgQ29tcHV0ZUN1cnJlbnRWYWx1ZSgpIHsKLSAgICAgIGlmICghQXRFbmQoKSkKLSAgICAg
ICAgY3VycmVudF92YWx1ZV8gPSBQYXJhbVR5cGUoJGZvciBqLCBbWypjdXJyZW50JChqKV9dXSk7
Ci0gICAgfQotICAgIGJvb2wgQXRFbmQoKSBjb25zdCB7Ci0gICAgICAvLyBXZSBtdXN0IHJlcG9y
dCBpdGVyYXRvciBwYXN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlIHdoZW4gZWl0aGVyIG9mIHRoZQot
ICAgICAgLy8gY29tcG9uZW50IGl0ZXJhdG9ycyBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mIGl0cyBy
YW5nZS4KLSAgICAgIHJldHVybgotJGZvciBqICB8fCBbWwotCi0gICAgICAgICAgY3VycmVudCQo
ailfID09IGVuZCQoailfCi1dXTsKLSAgICB9Ci0KLSAgICAvLyBObyBpbXBsZW1lbnRhdGlvbiAt
IGFzc2lnbm1lbnQgaXMgdW5zdXBwb3J0ZWQuCi0gICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgSXRl
cmF0b3ImIG90aGVyKTsKLQotICAgIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFBhcmFt
VHlwZT4qIGNvbnN0IGJhc2VfOwotICAgIC8vIGJlZ2luW2ldXyBhbmQgZW5kW2ldXyBkZWZpbmUg
dGhlIGktdGggcmFuZ2UgdGhhdCBJdGVyYXRvciB0cmF2ZXJzZXMuCi0gICAgLy8gY3VycmVudFtp
XV8gaXMgdGhlIGFjdHVhbCB0cmF2ZXJzaW5nIGl0ZXJhdG9yLgotJGZvciBqIFtbCi0KLSAgICBj
b25zdCB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUJGo+OjppdGVyYXRvciBiZWdpbiQoailfOwot
ICAgIGNvbnN0IHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGVuZCQoailf
OwotICAgIHR5cGVuYW1lIFBhcmFtR2VuZXJhdG9yPFQkaj46Oml0ZXJhdG9yIGN1cnJlbnQkKGop
XzsKLV1dCi0KLSAgICBQYXJhbVR5cGUgY3VycmVudF92YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBD
YXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGk6Okl0ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50
YXRpb24gLSBhc3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25z
dCBDYXJ0ZXNpYW5Qcm9kdWN0R2VuZXJhdG9yJGkmIG90aGVyKTsKLQotCi0kZm9yIGogW1sKLSAg
Y29uc3QgUGFyYW1HZW5lcmF0b3I8VCRqPiBnJChqKV87Ci0KLV1dCi19OyAgLy8gY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpCi0KLQotXV0KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5U
QVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBIZWxwZXIgY2xhc3NlcyBw
cm92aWRpbmcgQ29tYmluZSgpIHdpdGggcG9seW1vcnBoaWMgZmVhdHVyZXMuIFRoZXkgYWxsb3cK
LS8vIGNhc3RpbmcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvck48VD4gdG8gUGFyYW1HZW5lcmF0
b3I8VT4gaWYgVCBpcwotLy8gY29udmVydGlibGUgdG8gVS4KLS8vCi0kcmFuZ2UgaSAyLi5tYXh0
dXBsZQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0KLXRlbXBsYXRlIDwkZm9yIGosIFtbY2xh
c3MgR2VuZXJhdG9yJGpdXT4KLWNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIkaSB7Ci0gcHVi
bGljOgotQ2FydGVzaWFuUHJvZHVjdEhvbGRlciRpKCRmb3IgaiwgW1tjb25zdCBHZW5lcmF0b3Ik
aiYgZyRqXV0pCi0gICAgICA6ICRmb3IgaiwgW1tnJChqKV8oZyRqKV1dIHt9Ci0gIHRlbXBsYXRl
IDwkZm9yIGosIFtbdHlwZW5hbWUgVCRqXV0+Ci0gIG9wZXJhdG9yIFBhcmFtR2VuZXJhdG9yPCA6
OnRlc3Rpbmc6OnR1cGxlPCRmb3IgaiwgW1tUJGpdXT4gPigpIGNvbnN0IHsKLSAgICByZXR1cm4g
UGFyYW1HZW5lcmF0b3I8IDo6dGVzdGluZzo6dHVwbGU8JGZvciBqLCBbW1Qkal1dPiA+KAotICAg
ICAgICBuZXcgQ2FydGVzaWFuUHJvZHVjdEdlbmVyYXRvciRpPCRmb3IgaiwgW1tUJGpdXT4oCi0k
Zm9yIGosW1sKLQotICAgICAgICBzdGF0aWNfY2FzdDxQYXJhbUdlbmVyYXRvcjxUJGo+ID4oZyQo
ailfKQotXV0pKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBh
c3NpZ25tZW50IGlzIHVuc3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBDYXJ0ZXNp
YW5Qcm9kdWN0SG9sZGVyJGkmIG90aGVyKTsKLQotCi0kZm9yIGogW1sKLSAgY29uc3QgR2VuZXJh
dG9yJGogZyQoailfOwotCi1dXQotfTsgIC8vIGNsYXNzIENhcnRlc2lhblByb2R1Y3RIb2xkZXIk
aQotCi1dXQotCi0jIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi19ICAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gIEdURVNU
X0hBU19QQVJBTV9URVNUCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5B
TF9HVEVTVF9QQVJBTV9VVElMX0dFTkVSQVRFRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
aW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBhcmFtLXV0aWwuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMzE0MmY3NDJhMDkxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wYXJhbS11dGlsLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw3MzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotCi0v
LyBUeXBlIGFuZCBmdW5jdGlvbiB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBwYXJhbWV0ZXJp
emVkIHRlc3RzLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1Rf
UEFSQU1fVVRJTF9IXwotI2RlZmluZSBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNU
X1BBUkFNX1VUSUxfSF8KLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KLSNpbmNsdWRlIDxpdGVyYXRv
cj4KLSNpbmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0b3I+
Ci0KLS8vIHNjcmlwdHMvZnVzZV9ndGVzdC5weSBkZXBlbmRzIG9uIGd0ZXN0J3Mgb3duIGhlYWRl
ciBiZWluZyAjaW5jbHVkZWQKLS8vICp1bmNvbmRpdGlvbmFsbHkqLiAgVGhlcmVmb3JlIHRoZXNl
ICNpbmNsdWRlcyBjYW5ub3QgYmUgbW92ZWQKLS8vIGluc2lkZSAjaWYgR1RFU1RfSEFTX1BBUkFN
X1RFU1QuCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaCIKLSNpbmNs
dWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1saW5rZWRfcHRyLmgiCi0jaW5jbHVkZSAiZ3Rlc3Qv
aW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXByaW50ZXJzLmgi
Ci0KLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci0KLS8v
IElucHV0IHRvIGEgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgZ2VuZXJhdG9yLCBkZXNjcmliaW5n
IGEgdGVzdCBwYXJhbWV0ZXIuCi0vLyBDb25zaXN0cyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlIGFu
ZCB0aGUgaW50ZWdlciBwYXJhbWV0ZXIgaW5kZXguCi10ZW1wbGF0ZSA8Y2xhc3MgUGFyYW1UeXBl
Pgotc3RydWN0IFRlc3RQYXJhbUluZm8gewotICBUZXN0UGFyYW1JbmZvKGNvbnN0IFBhcmFtVHlw
ZSYgYV9wYXJhbSwgc2l6ZV90IGFuX2luZGV4KSA6Ci0gICAgcGFyYW0oYV9wYXJhbSksCi0gICAg
aW5kZXgoYW5faW5kZXgpIHt9Ci0gIFBhcmFtVHlwZSBwYXJhbTsKLSAgc2l6ZV90IGluZGV4Owot
fTsKLQotLy8gQSBidWlsdGluIHBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIGdlbmVyYXRvciB3aGlj
aCByZXR1cm5zIHRoZSByZXN1bHQgb2YKLS8vIHRlc3Rpbmc6OlByaW50VG9TdHJpbmcuCi1zdHJ1
Y3QgUHJpbnRUb1N0cmluZ1BhcmFtTmFtZSB7Ci0gIHRlbXBsYXRlIDxjbGFzcyBQYXJhbVR5cGU+
Ci0gIHN0ZDo6c3RyaW5nIG9wZXJhdG9yKCkoY29uc3QgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+
JiBpbmZvKSBjb25zdCB7Ci0gICAgcmV0dXJuIFByaW50VG9TdHJpbmcoaW5mby5wYXJhbSk7Ci0g
IH0KLX07Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFU
SU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gT3V0cHV0cyBhIG1lc3NhZ2Ug
ZXhwbGFpbmluZyBpbnZhbGlkIHJlZ2lzdHJhdGlvbiBvZiBkaWZmZXJlbnQKLS8vIGZpeHR1cmUg
Y2xhc3MgZm9yIHRoZSBzYW1lIHRlc3QgY2FzZS4gVGhpcyBtYXkgaGFwcGVuIHdoZW4KLS8vIFRF
U1RfUCBtYWNybyBpcyB1c2VkIHRvIGRlZmluZSB0d28gdGVzdHMgd2l0aCB0aGUgc2FtZSBuYW1l
Ci0vLyBidXQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCi1HVEVTVF9BUElfIHZvaWQgUmVwb3J0
SW52YWxpZFRlc3RDYXNlVHlwZShjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0
aW9uKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTsKLXRlbXBsYXRlIDx0eXBlbmFtZT4gY2xhc3MgUGFyYW1HZW5lcmF0b3I7Ci0KLS8vIEludGVy
ZmFjZSBmb3IgaXRlcmF0aW5nIG92ZXIgZWxlbWVudHMgcHJvdmlkZWQgYnkgYW4gaW1wbGVtZW50
YXRpb24KLS8vIG9mIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+LgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1
YWwgflBhcmFtSXRlcmF0b3JJbnRlcmZhY2UoKSB7fQotICAvLyBBIHBvaW50ZXIgdG8gdGhlIGJh
c2UgZ2VuZXJhdG9yIGluc3RhbmNlLgotICAvLyBVc2VkIG9ubHkgZm9yIHRoZSBwdXJwb3NlcyBv
ZiBpdGVyYXRvciBjb21wYXJpc29uCi0gIC8vIHRvIG1ha2Ugc3VyZSB0aGF0IHR3byBpdGVyYXRv
cnMgYmVsb25nIHRvIHRoZSBzYW1lIGdlbmVyYXRvci4KLSAgdmlydHVhbCBjb25zdCBQYXJhbUdl
bmVyYXRvckludGVyZmFjZTxUPiogQmFzZUdlbmVyYXRvcigpIGNvbnN0ID0gMDsKLSAgLy8gQWR2
YW5jZXMgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIG5leHQgZWxlbWVudAotICAvLyBwcm92aWRl
ZCBieSB0aGUgZ2VuZXJhdG9yLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCi0gIC8vIGZvciBu
b3QgY2FsbGluZyBBZHZhbmNlKCkgb24gYW4gaXRlcmF0b3IgZXF1YWwgdG8KLSAgLy8gQmFzZUdl
bmVyYXRvcigpLT5FbmQoKS4KLSAgdmlydHVhbCB2b2lkIEFkdmFuY2UoKSA9IDA7Ci0gIC8vIENs
b25lcyB0aGUgaXRlcmF0b3Igb2JqZWN0LiBVc2VkIGZvciBpbXBsZW1lbnRpbmcgY29weSBzZW1h
bnRpY3MKLSAgLy8gb2YgUGFyYW1JdGVyYXRvcjxUPi4KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9y
SW50ZXJmYWNlKiBDbG9uZSgpIGNvbnN0ID0gMDsKLSAgLy8gRGVyZWZlcmVuY2VzIHRoZSBjdXJy
ZW50IGl0ZXJhdG9yIGFuZCBwcm92aWRlcyAocmVhZC1vbmx5KSBhY2Nlc3MKLSAgLy8gdG8gdGhl
IHBvaW50ZWQgdmFsdWUuIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSBub3QgdG8g
Y2FsbAotICAvLyBDdXJyZW50KCkgb24gYW4gaXRlcmF0b3IgZXF1YWwgdG8gQmFzZUdlbmVyYXRv
cigpLT5FbmQoKS4KLSAgLy8gVXNlZCBmb3IgaW1wbGVtZW50aW5nIFBhcmFtR2VuZXJhdG9yPFQ+
OjpvcGVyYXRvciooKS4KLSAgdmlydHVhbCBjb25zdCBUKiBDdXJyZW50KCkgY29uc3QgPSAwOwot
ICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGl0ZXJhdG9yIGFuZCBvdGhlciBwb2lu
dCB0byB0aGUgc2FtZQotICAvLyBlbGVtZW50IGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkg
dGhlIGdlbmVyYXRvci4KLSAgLy8gVXNlZCBmb3IgaW1wbGVtZW50aW5nIFBhcmFtR2VuZXJhdG9y
PFQ+OjpvcGVyYXRvcj09KCkuCi0gIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVy
YXRvckludGVyZmFjZSYgb3RoZXIpIGNvbnN0ID0gMDsKLX07Ci0KLS8vIENsYXNzIGl0ZXJhdGlu
ZyBvdmVyIGVsZW1lbnRzIHByb3ZpZGVkIGJ5IGFuIGltcGxlbWVudGF0aW9uIG9mCi0vLyBQYXJh
bUdlbmVyYXRvckludGVyZmFjZTxUPi4gSXQgd3JhcHMgUGFyYW1JdGVyYXRvckludGVyZmFjZTxU
PgotLy8gYW5kIGltcGxlbWVudHMgdGhlIGNvbnN0IGZvcndhcmQgaXRlcmF0b3IgY29uY2VwdC4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgUGFyYW1JdGVyYXRvciB7Ci0gcHVibGljOgot
ICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBUJiByZWZlcmVuY2U7Ci0g
IHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKLQotICAvLyBQYXJhbUl0ZXJhdG9y
IGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSBpbXBsXyBwb2ludGVyLgotICBQYXJhbUl0ZXJhdG9y
KGNvbnN0IFBhcmFtSXRlcmF0b3ImIG90aGVyKSA6IGltcGxfKG90aGVyLmltcGxfLT5DbG9uZSgp
KSB7fQotICBQYXJhbUl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgUGFyYW1JdGVyYXRvciYgb3Ro
ZXIpIHsKLSAgICBpZiAodGhpcyAhPSAmb3RoZXIpCi0gICAgICBpbXBsXy5yZXNldChvdGhlci5p
bXBsXy0+Q2xvbmUoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgY29uc3QgVCYgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKmltcGxfLT5DdXJyZW50KCk7IH0KLSAgY29uc3QgVCog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGltcGxfLT5DdXJyZW50KCk7IH0KLSAgLy8gUHJl
Zml4IHZlcnNpb24gb2Ygb3BlcmF0b3IrKy4KLSAgUGFyYW1JdGVyYXRvciYgb3BlcmF0b3IrKygp
IHsKLSAgICBpbXBsXy0+QWR2YW5jZSgpOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICAvLyBQ
b3N0Zml4IHZlcnNpb24gb2Ygb3BlcmF0b3IrKy4KLSAgUGFyYW1JdGVyYXRvciBvcGVyYXRvcisr
KGludCAvKnVudXNlZCovKSB7Ci0gICAgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogY2xvbmUg
PSBpbXBsXy0+Q2xvbmUoKTsKLSAgICBpbXBsXy0+QWR2YW5jZSgpOwotICAgIHJldHVybiBQYXJh
bUl0ZXJhdG9yKGNsb25lKTsKLSAgfQotICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyYW1JdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbF8uZ2V0KCkgPT0gb3RoZXIuaW1w
bF8uZ2V0KCkgfHwgaW1wbF8tPkVxdWFscygqb3RoZXIuaW1wbF8pOwotICB9Ci0gIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBQYXJhbUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgewotICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIFBhcmFt
R2VuZXJhdG9yPFQ+OwotICBleHBsaWNpdCBQYXJhbUl0ZXJhdG9yKFBhcmFtSXRlcmF0b3JJbnRl
cmZhY2U8VD4qIGltcGwpIDogaW1wbF8oaW1wbCkge30KLSAgc2NvcGVkX3B0cjxQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFQ+ID4gaW1wbF87Ci19OwotCi0vLyBQYXJhbUdlbmVyYXRvckludGVyZmFj
ZTxUPiBpcyB0aGUgYmluYXJ5IGludGVyZmFjZSB0byBhY2Nlc3MgZ2VuZXJhdG9ycwotLy8gZGVm
aW5lZCBpbiBvdGhlciB0cmFuc2xhdGlvbiB1bml0cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBUIFBh
cmFtVHlwZTsKLQotICB2aXJ0dWFsIH5QYXJhbUdlbmVyYXRvckludGVyZmFjZSgpIHt9Ci0KLSAg
Ly8gR2VuZXJhdG9yIGludGVyZmFjZSBkZWZpbml0aW9uCi0gIHZpcnR1YWwgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxUPiogQmVnaW4oKSBjb25zdCA9IDA7Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRv
ckludGVyZmFjZTxUPiogRW5kKCkgY29uc3QgPSAwOwotfTsKLQotLy8gV3JhcHMgUGFyYW1HZW5l
cmF0b3JJbnRlcmZhY2U8VD4gYW5kIHByb3ZpZGVzIGdlbmVyYWwgZ2VuZXJhdG9yIHN5bnRheAot
Ly8gY29tcGF0aWJsZSB3aXRoIHRoZSBTVEwgQ29udGFpbmVyIGNvbmNlcHQuCi0vLyBUaGlzIGNs
YXNzIGltcGxlbWVudHMgY29weSBpbml0aWFsaXphdGlvbiBzZW1hbnRpY3MgYW5kIHRoZSBjb250
YWluZWQKLS8vIFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+IGluc3RhbmNlIGlzIHNoYXJlZCBh
bW9uZyBhbGwgY29waWVzCi0vLyBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBUaGlzIGlzIHBvc3Np
YmxlIGJlY2F1c2UgdGhhdCBpbnN0YW5jZSBpcyBpbW11dGFibGUuCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotY2xhc3MgUGFyYW1HZW5lcmF0b3IgewotIHB1YmxpYzoKLSAgdHlwZWRlZiBQYXJhbUl0
ZXJhdG9yPFQ+IGl0ZXJhdG9yOwotCi0gIGV4cGxpY2l0IFBhcmFtR2VuZXJhdG9yKFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBpbXBsKSA6IGltcGxfKGltcGwpIHt9Ci0gIFBhcmFtR2VuZXJh
dG9yKGNvbnN0IFBhcmFtR2VuZXJhdG9yJiBvdGhlcikgOiBpbXBsXyhvdGhlci5pbXBsXykge30K
LQotICBQYXJhbUdlbmVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IFBhcmFtR2VuZXJhdG9yJiBvdGhl
cikgewotICAgIGltcGxfID0gb3RoZXIuaW1wbF87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0K
LSAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihpbXBsXy0+QmVnaW4o
KSk7IH0KLSAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoaW1wbF8tPkVu
ZCgpKTsgfQotCi0gcHJpdmF0ZToKLSAgbGlua2VkX3B0cjxjb25zdCBQYXJhbUdlbmVyYXRvcklu
dGVyZmFjZTxUPiA+IGltcGxfOwotfTsKLQotLy8gR2VuZXJhdGVzIHZhbHVlcyBmcm9tIGEgcmFu
Z2Ugb2YgdHdvIGNvbXBhcmFibGUgdmFsdWVzLiBDYW4gYmUgdXNlZCB0bwotLy8gZ2VuZXJhdGUg
c2VxdWVuY2VzIG9mIHVzZXItZGVmaW5lZCB0eXBlcyB0aGF0IGltcGxlbWVudCBvcGVyYXRvciso
KSBhbmQKLS8vIG9wZXJhdG9yPCgpLgotLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGluIHRoZSBSYW5n
ZSgpIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEluY3JlbWVudFQ+
Ci1jbGFzcyBSYW5nZUdlbmVyYXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxU
PiB7Ci0gcHVibGljOgotICBSYW5nZUdlbmVyYXRvcihUIGJlZ2luLCBUIGVuZCwgSW5jcmVtZW50
VCBzdGVwKQotICAgICAgOiBiZWdpbl8oYmVnaW4pLCBlbmRfKGVuZCksCi0gICAgICAgIHN0ZXBf
KHN0ZXApLCBlbmRfaW5kZXhfKENhbGN1bGF0ZUVuZEluZGV4KGJlZ2luLCBlbmQsIHN0ZXApKSB7
fQotICB2aXJ0dWFsIH5SYW5nZUdlbmVyYXRvcigpIHt9Ci0KLSAgdmlydHVhbCBQYXJhbUl0ZXJh
dG9ySW50ZXJmYWNlPFQ+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9y
KHRoaXMsIGJlZ2luXywgMCwgc3RlcF8pOwotICB9Ci0gIHZpcnR1YWwgUGFyYW1JdGVyYXRvcklu
dGVyZmFjZTxUPiogRW5kKCkgY29uc3QgewotICAgIHJldHVybiBuZXcgSXRlcmF0b3IodGhpcywg
ZW5kXywgZW5kX2luZGV4Xywgc3RlcF8pOwotICB9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBJdGVy
YXRvciA6IHB1YmxpYyBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+IHsKLSAgIHB1YmxpYzoKLSAg
ICBJdGVyYXRvcihjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogYmFzZSwgVCB2YWx1
ZSwgaW50IGluZGV4LAotICAgICAgICAgICAgIEluY3JlbWVudFQgc3RlcCkKLSAgICAgICAgOiBi
YXNlXyhiYXNlKSwgdmFsdWVfKHZhbHVlKSwgaW5kZXhfKGluZGV4KSwgc3RlcF8oc3RlcCkge30K
LSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2Vu
ZXJhdG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2VuZXJhdG9yKCkgY29uc3QgewotICAgICAgcmV0dXJu
IGJhc2VfOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgIHZhbHVl
XyA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlXyArIHN0ZXBfKTsKLSAgICAgIGluZGV4XysrOwotICAg
IH0KLSAgICB2aXJ0dWFsIFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4qIENsb25lKCkgY29uc3Qg
ewotICAgICAgcmV0dXJuIG5ldyBJdGVyYXRvcigqdGhpcyk7Ci0gICAgfQotICAgIHZpcnR1YWwg
Y29uc3QgVCogQ3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICZ2YWx1ZV87IH0KLSAgICB2aXJ0dWFs
IGJvb2wgRXF1YWxzKGNvbnN0IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4mIG90aGVyKSBjb25z
dCB7Ci0gICAgICAvLyBIYXZpbmcgdGhlIHNhbWUgYmFzZSBnZW5lcmF0b3IgZ3VhcmFudGVlcyB0
aGF0IHRoZSBvdGhlcgotICAgICAgLy8gaXRlcmF0b3IgaXMgb2YgdGhlIHNhbWUgdHlwZSBhbmQg
d2UgY2FuIGRvd25jYXN0LgotICAgICAgR1RFU1RfQ0hFQ0tfKEJhc2VHZW5lcmF0b3IoKSA9PSBv
dGhlci5CYXNlR2VuZXJhdG9yKCkpCi0gICAgICAgICAgPDwgIlRoZSBwcm9ncmFtIGF0dGVtcHRl
ZCB0byBjb21wYXJlIGl0ZXJhdG9ycyAiCi0gICAgICAgICAgPDwgImZyb20gZGlmZmVyZW50IGdl
bmVyYXRvcnMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICBjb25zdCBpbnQgb3RoZXJfaW5kZXggPQot
ICAgICAgICAgIENoZWNrZWREb3duY2FzdFRvQWN0dWFsVHlwZTxjb25zdCBJdGVyYXRvcj4oJm90
aGVyKS0+aW5kZXhfOwotICAgICAgcmV0dXJuIGluZGV4XyA9PSBvdGhlcl9pbmRleDsKLSAgICB9
Ci0KLSAgIHByaXZhdGU6Ci0gICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAg
ICAgICA6IFBhcmFtSXRlcmF0b3JJbnRlcmZhY2U8VD4oKSwKLSAgICAgICAgICBiYXNlXyhvdGhl
ci5iYXNlXyksIHZhbHVlXyhvdGhlci52YWx1ZV8pLCBpbmRleF8ob3RoZXIuaW5kZXhfKSwKLSAg
ICAgICAgICBzdGVwXyhvdGhlci5zdGVwXykge30KLQotICAgIC8vIE5vIGltcGxlbWVudGF0aW9u
IC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRlZC4KLSAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBJ
dGVyYXRvciYgb3RoZXIpOwotCi0gICAgY29uc3QgUGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4q
IGNvbnN0IGJhc2VfOwotICAgIFQgdmFsdWVfOwotICAgIGludCBpbmRleF87Ci0gICAgY29uc3Qg
SW5jcmVtZW50VCBzdGVwXzsKLSAgfTsgIC8vIGNsYXNzIFJhbmdlR2VuZXJhdG9yOjpJdGVyYXRv
cgotCi0gIHN0YXRpYyBpbnQgQ2FsY3VsYXRlRW5kSW5kZXgoY29uc3QgVCYgYmVnaW4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCYgZW5kLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEluY3JlbWVudFQmIHN0ZXApIHsKLSAgICBpbnQgZW5kX2lu
ZGV4ID0gMDsKLSAgICBmb3IgKFQgaSA9IGJlZ2luOyBpIDwgZW5kOyBpID0gc3RhdGljX2Nhc3Q8
VD4oaSArIHN0ZXApKQotICAgICAgZW5kX2luZGV4Kys7Ci0gICAgcmV0dXJuIGVuZF9pbmRleDsK
LSAgfQotCi0gIC8vIE5vIGltcGxlbWVudGF0aW9uIC0gYXNzaWdubWVudCBpcyB1bnN1cHBvcnRl
ZC4KLSAgdm9pZCBvcGVyYXRvcj0oY29uc3QgUmFuZ2VHZW5lcmF0b3ImIG90aGVyKTsKLQotICBj
b25zdCBUIGJlZ2luXzsKLSAgY29uc3QgVCBlbmRfOwotICBjb25zdCBJbmNyZW1lbnRUIHN0ZXBf
OwotICAvLyBUaGUgaW5kZXggZm9yIHRoZSBlbmQoKSBpdGVyYXRvci4gQWxsIHRoZSBlbGVtZW50
cyBpbiB0aGUgZ2VuZXJhdGVkCi0gIC8vIHNlcXVlbmNlIGFyZSBpbmRleGVkICgwLWJhc2VkKSB0
byBhaWQgaXRlcmF0b3IgY29tcGFyaXNvbi4KLSAgY29uc3QgaW50IGVuZF9pbmRleF87Ci19OyAg
Ly8gY2xhc3MgUmFuZ2VHZW5lcmF0b3IKLQotCi0vLyBHZW5lcmF0ZXMgdmFsdWVzIGZyb20gYSBw
YWlyIG9mIFNUTC1zdHlsZSBpdGVyYXRvcnMuIFVzZWQgaW4gdGhlCi0vLyBWYWx1ZXNJbigpIGZ1
bmN0aW9uLiBUaGUgZWxlbWVudHMgYXJlIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgcmFuZ2UKLS8v
IHNpbmNlIHRoZSBzb3VyY2UgY2FuIGJlIGxvY2F0ZWQgb24gdGhlIHN0YWNrLCBhbmQgdGhlIGdl
bmVyYXRvcgotLy8gaXMgbGlrZWx5IHRvIHBlcnNpc3QgYmV5b25kIHRoYXQgc3RhY2sgZnJhbWUu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFZhbHVlc0luSXRlcmF0b3JSYW5nZUdlbmVy
YXRvciA6IHB1YmxpYyBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiB7Ci0gcHVibGljOgotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotICBWYWx1ZXNJbkl0ZXJhdG9yUmFu
Z2VHZW5lcmF0b3IoRm9yd2FyZEl0ZXJhdG9yIGJlZ2luLCBGb3J3YXJkSXRlcmF0b3IgZW5kKQot
ICAgICAgOiBjb250YWluZXJfKGJlZ2luLCBlbmQpIHt9Ci0gIHZpcnR1YWwgflZhbHVlc0luSXRl
cmF0b3JSYW5nZUdlbmVyYXRvcigpIHt9Ci0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJm
YWNlPFQ+KiBCZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKHRoaXMsIGNv
bnRhaW5lcl8uYmVnaW4oKSk7Ci0gIH0KLSAgdmlydHVhbCBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNl
PFQ+KiBFbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG5ldyBJdGVyYXRvcih0aGlzLCBjb250YWlu
ZXJfLmVuZCgpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdHlwZWRlZiB0eXBlbmFtZSA6OnN0ZDo6
dmVjdG9yPFQ+IENvbnRhaW5lclR5cGU7Ci0KLSAgY2xhc3MgSXRlcmF0b3IgOiBwdWJsaWMgUGFy
YW1JdGVyYXRvckludGVyZmFjZTxUPiB7Ci0gICBwdWJsaWM6Ci0gICAgSXRlcmF0b3IoY29uc3Qg
UGFyYW1HZW5lcmF0b3JJbnRlcmZhY2U8VD4qIGJhc2UsCi0gICAgICAgICAgICAgdHlwZW5hbWUg
Q29udGFpbmVyVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3IpCi0gICAgICAgIDogYmFzZV8o
YmFzZSksIGl0ZXJhdG9yXyhpdGVyYXRvcikge30KLSAgICB2aXJ0dWFsIH5JdGVyYXRvcigpIHt9
Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFBhcmFtR2VuZXJhdG9ySW50ZXJmYWNlPFQ+KiBCYXNlR2Vu
ZXJhdG9yKCkgY29uc3QgewotICAgICAgcmV0dXJuIGJhc2VfOwotICAgIH0KLSAgICB2aXJ0dWFs
IHZvaWQgQWR2YW5jZSgpIHsKLSAgICAgICsraXRlcmF0b3JfOwotICAgICAgdmFsdWVfLnJlc2V0
KCk7Ci0gICAgfQotICAgIHZpcnR1YWwgUGFyYW1JdGVyYXRvckludGVyZmFjZTxUPiogQ2xvbmUo
KSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IEl0ZXJhdG9yKCp0aGlzKTsKLSAgICB9Ci0gICAg
Ly8gV2UgbmVlZCB0byB1c2UgY2FjaGVkIHZhbHVlIHJlZmVyZW5jZWQgYnkgaXRlcmF0b3JfIGJl
Y2F1c2UgKml0ZXJhdG9yXwotICAgIC8vIGNhbiByZXR1cm4gYSB0ZW1wb3Jhcnkgb2JqZWN0IChh
bmQgb2YgdHlwZSBvdGhlciB0aGVuIFQpLCBzbyBqdXN0Ci0gICAgLy8gaGF2aW5nICJyZXR1cm4g
JippdGVyYXRvcl87IiBkb2Vzbid0IHdvcmsuCi0gICAgLy8gdmFsdWVfIGlzIHVwZGF0ZWQgaGVy
ZSBhbmQgbm90IGluIEFkdmFuY2UoKSBiZWNhdXNlIEFkdmFuY2UoKQotICAgIC8vIGNhbiBhZHZh
bmNlIGl0ZXJhdG9yXyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGFuZCB3ZSBjYW5ub3QK
LSAgICAvLyBkZXRlY3QgdGhhdCBmYWN0LiBUaGUgY2xpZW50IGNvZGUsIG9uIHRoZSBvdGhlciBo
YW5kLCBpcwotICAgIC8vIHJlc3BvbnNpYmxlIGZvciBub3QgY2FsbGluZyBDdXJyZW50KCkgb24g
YW4gb3V0LW9mLXJhbmdlIGl0ZXJhdG9yLgotICAgIHZpcnR1YWwgY29uc3QgVCogQ3VycmVudCgp
IGNvbnN0IHsKLSAgICAgIGlmICh2YWx1ZV8uZ2V0KCkgPT0gTlVMTCkKLSAgICAgICAgdmFsdWVf
LnJlc2V0KG5ldyBUKCppdGVyYXRvcl8pKTsKLSAgICAgIHJldHVybiB2YWx1ZV8uZ2V0KCk7Ci0g
ICAgfQotICAgIHZpcnR1YWwgYm9vbCBFcXVhbHMoY29uc3QgUGFyYW1JdGVyYXRvckludGVyZmFj
ZTxUPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgIC8vIEhhdmluZyB0aGUgc2FtZSBiYXNlIGdlbmVy
YXRvciBndWFyYW50ZWVzIHRoYXQgdGhlIG90aGVyCi0gICAgICAvLyBpdGVyYXRvciBpcyBvZiB0
aGUgc2FtZSB0eXBlIGFuZCB3ZSBjYW4gZG93bmNhc3QuCi0gICAgICBHVEVTVF9DSEVDS18oQmFz
ZUdlbmVyYXRvcigpID09IG90aGVyLkJhc2VHZW5lcmF0b3IoKSkKLSAgICAgICAgICA8PCAiVGhl
IHByb2dyYW0gYXR0ZW1wdGVkIHRvIGNvbXBhcmUgaXRlcmF0b3JzICIKLSAgICAgICAgICA8PCAi
ZnJvbSBkaWZmZXJlbnQgZ2VuZXJhdG9ycy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgIHJldHVybiBp
dGVyYXRvcl8gPT0KLSAgICAgICAgICBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGU8Y29uc3Qg
SXRlcmF0b3I+KCZvdGhlciktPml0ZXJhdG9yXzsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAg
SXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImIG90aGVyKQotICAgICAgICAgIC8vIFRoZSBleHBsaWNp
dCBjb25zdHJ1Y3RvciBjYWxsIHN1cHByZXNzZXMgYSBmYWxzZSB3YXJuaW5nCi0gICAgICAgICAg
Ly8gZW1pdHRlZCBieSBnY2Mgd2hlbiBzdXBwbGllZCB3aXRoIHRoZSAtV2V4dHJhIG9wdGlvbi4K
LSAgICAgICAgOiBQYXJhbUl0ZXJhdG9ySW50ZXJmYWNlPFQ+KCksCi0gICAgICAgICAgYmFzZV8o
b3RoZXIuYmFzZV8pLAotICAgICAgICAgIGl0ZXJhdG9yXyhvdGhlci5pdGVyYXRvcl8pIHt9Ci0K
LSAgICBjb25zdCBQYXJhbUdlbmVyYXRvckludGVyZmFjZTxUPiogY29uc3QgYmFzZV87Ci0gICAg
dHlwZW5hbWUgQ29udGFpbmVyVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRlcmF0b3JfOwotICAgIC8v
IEEgY2FjaGVkIHZhbHVlIG9mICppdGVyYXRvcl8uIFdlIGtlZXAgaXQgaGVyZSB0byBhbGxvdyBh
Y2Nlc3MgYnkKLSAgICAvLyBwb2ludGVyIGluIHRoZSB3cmFwcGluZyBpdGVyYXRvcidzIG9wZXJh
dG9yLT4oKS4KLSAgICAvLyB2YWx1ZV8gbmVlZHMgdG8gYmUgbXV0YWJsZSB0byBiZSBhY2Nlc3Nl
ZCBpbiBDdXJyZW50KCkuCi0gICAgLy8gVXNlIG9mIHNjb3BlZF9wdHIgaGVscHMgbWFuYWdlIGNh
Y2hlZCB2YWx1ZSdzIGxpZmV0aW1lLAotICAgIC8vIHdoaWNoIGlzIGJvdW5kIGJ5IHRoZSBsaWZl
c3BhbiBvZiB0aGUgaXRlcmF0b3IgaXRzZWxmLgotICAgIG11dGFibGUgc2NvcGVkX3B0cjxjb25z
dCBUPiB2YWx1ZV87Ci0gIH07ICAvLyBjbGFzcyBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VHZW5lcmF0
b3I6Okl0ZXJhdG9yCi0KLSAgLy8gTm8gaW1wbGVtZW50YXRpb24gLSBhc3NpZ25tZW50IGlzIHVu
c3VwcG9ydGVkLgotICB2b2lkIG9wZXJhdG9yPShjb25zdCBWYWx1ZXNJbkl0ZXJhdG9yUmFuZ2VH
ZW5lcmF0b3ImIG90aGVyKTsKLQotICBjb25zdCBDb250YWluZXJUeXBlIGNvbnRhaW5lcl87Ci19
OyAgLy8gY2xhc3MgVmFsdWVzSW5JdGVyYXRvclJhbmdlR2VuZXJhdG9yCi0KLS8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gRGVmYXVs
dCBwYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSBnZW5lcmF0b3IsIHJldHVybnMgYSBzdHJpbmcgY29u
dGFpbmluZyB0aGUKLS8vIGludGVnZXIgdGVzdCBwYXJhbWV0ZXIgaW5kZXguCi10ZW1wbGF0ZSA8
Y2xhc3MgUGFyYW1UeXBlPgotc3RkOjpzdHJpbmcgRGVmYXVsdFBhcmFtTmFtZShjb25zdCBUZXN0
UGFyYW1JbmZvPFBhcmFtVHlwZT4mIGluZm8pIHsKLSAgTWVzc2FnZSBuYW1lX3N0cmVhbTsKLSAg
bmFtZV9zdHJlYW0gPDwgaW5mby5pbmRleDsKLSAgcmV0dXJuIG5hbWVfc3RyZWFtLkdldFN0cmlu
ZygpOwotfQotCi0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNF
UiBDT0RFLgotLy8KLS8vIFBhcmFtZXRlcml6ZWQgdGVzdCBuYW1lIG92ZXJsb2FkIGhlbHBlcnMs
IHdoaWNoIGhlbHAgdGhlCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBjaG9vc2Ug
YmV0d2VlbiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJpemVkCi0vLyB0ZXN0IG5hbWUgZ2VuZXJhdG9y
IGFuZCB1c2VyIHBhcmFtIG5hbWUgZ2VuZXJhdG9yLgotdGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlw
ZSwgY2xhc3MgUGFyYW1OYW1lR2VuRnVuY3Rvcj4KLVBhcmFtTmFtZUdlbkZ1bmN0b3IgR2V0UGFy
YW1OYW1lR2VuKFBhcmFtTmFtZUdlbkZ1bmN0b3IgZnVuYykgewotICByZXR1cm4gZnVuYzsKLX0K
LQotdGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KLXN0cnVjdCBQYXJhbU5hbWVHZW5GdW5jIHsK
LSAgdHlwZWRlZiBzdGQ6OnN0cmluZyBUeXBlKGNvbnN0IFRlc3RQYXJhbUluZm88UGFyYW1UeXBl
PiYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlwZT4KLXR5cGVuYW1lIFBhcmFtTmFt
ZUdlbkZ1bmM8UGFyYW1UeXBlPjo6VHlwZSAqR2V0UGFyYW1OYW1lR2VuKCkgewotICByZXR1cm4g
RGVmYXVsdFBhcmFtTmFtZTsKLX0KLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBETyBO
T1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBTdG9yZXMgYSBwYXJhbWV0ZXIgdmFsdWUgYW5k
IGxhdGVyIGNyZWF0ZXMgdGVzdHMgcGFyYW1ldGVyaXplZCB3aXRoIHRoYXQKLS8vIHZhbHVlLgot
dGVtcGxhdGUgPGNsYXNzIFRlc3RDbGFzcz4KLWNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0RmFjdG9y
eSA6IHB1YmxpYyBUZXN0RmFjdG9yeUJhc2UgewotIHB1YmxpYzoKLSAgdHlwZWRlZiB0eXBlbmFt
ZSBUZXN0Q2xhc3M6OlBhcmFtVHlwZSBQYXJhbVR5cGU7Ci0gIGV4cGxpY2l0IFBhcmFtZXRlcml6
ZWRUZXN0RmFjdG9yeShQYXJhbVR5cGUgcGFyYW1ldGVyKSA6Ci0gICAgICBwYXJhbWV0ZXJfKHBh
cmFtZXRlcikge30KLSAgdmlydHVhbCBUZXN0KiBDcmVhdGVUZXN0KCkgewotICAgIFRlc3RDbGFz
czo6U2V0UGFyYW0oJnBhcmFtZXRlcl8pOwotICAgIHJldHVybiBuZXcgVGVzdENsYXNzKCk7Ci0g
IH0KLQotIHByaXZhdGU6Ci0gIGNvbnN0IFBhcmFtVHlwZSBwYXJhbWV0ZXJfOwotCi0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUGFyYW1ldGVyaXplZFRlc3RGYWN0b3J5KTsKLX07
Ci0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUu
Ci0vLwotLy8gVGVzdE1ldGFGYWN0b3J5QmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIG1ldGEtZmFj
dG9yaWVzIHRoYXQgY3JlYXRlCi0vLyB0ZXN0IGZhY3RvcmllcyBmb3IgcGFzc2luZyBpbnRvIE1h
a2VBbmRSZWdpc3RlclRlc3RJbmZvIGZ1bmN0aW9uLgotdGVtcGxhdGUgPGNsYXNzIFBhcmFtVHlw
ZT4KLWNsYXNzIFRlc3RNZXRhRmFjdG9yeUJhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+VGVz
dE1ldGFGYWN0b3J5QmFzZSgpIHt9Ci0KLSAgdmlydHVhbCBUZXN0RmFjdG9yeUJhc2UqIENyZWF0
ZVRlc3RGYWN0b3J5KFBhcmFtVHlwZSBwYXJhbWV0ZXIpID0gMDsKLX07Ci0KLS8vIElOVEVSTkFM
IElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUuCi0vLwotLy8gVGVzdE1l
dGFGYWN0b3J5IGNyZWF0ZXMgdGVzdCBmYWN0b3JpZXMgZm9yIHBhc3NpbmcgaW50bwotLy8gTWFr
ZUFuZFJlZ2lzdGVyVGVzdEluZm8gZnVuY3Rpb24uIFNpbmNlIE1ha2VBbmRSZWdpc3RlclRlc3RJ
bmZvIHJlY2VpdmVzCi0vLyBvd25lcnNoaXAgb2YgdGVzdCBmYWN0b3J5IHBvaW50ZXIsIHNhbWUg
ZmFjdG9yeSBvYmplY3QgY2Fubm90IGJlIHBhc3NlZAotLy8gaW50byB0aGF0IG1ldGhvZCB0d2lj
ZS4gQnV0IFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gaXMgZ29pbmcgdG8gY2FsbAotLy8gaXQg
Zm9yIGVhY2ggVGVzdC9QYXJhbWV0ZXIgdmFsdWUgY29tYmluYXRpb24uIFRodXMgaXQgbmVlZHMg
bWV0YSBmYWN0b3J5Ci0vLyBjcmVhdG9yIGNsYXNzLgotdGVtcGxhdGUgPGNsYXNzIFRlc3RDYXNl
PgotY2xhc3MgVGVzdE1ldGFGYWN0b3J5Ci0gICAgOiBwdWJsaWMgVGVzdE1ldGFGYWN0b3J5QmFz
ZTx0eXBlbmFtZSBUZXN0Q2FzZTo6UGFyYW1UeXBlPiB7Ci0gcHVibGljOgotICB0eXBlZGVmIHR5
cGVuYW1lIFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwotCi0gIFRlc3RNZXRhRmFjdG9y
eSgpIHt9Ci0KLSAgdmlydHVhbCBUZXN0RmFjdG9yeUJhc2UqIENyZWF0ZVRlc3RGYWN0b3J5KFBh
cmFtVHlwZSBwYXJhbWV0ZXIpIHsKLSAgICByZXR1cm4gbmV3IFBhcmFtZXRlcml6ZWRUZXN0RmFj
dG9yeTxUZXN0Q2FzZT4ocGFyYW1ldGVyKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUZXN0TWV0YUZhY3RvcnkpOwotfTsKLQotLy8gSU5URVJO
QUwgSU1QTEVNRU5UQVRJT04gLSBETyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBQYXJh
bWV0ZXJpemVkVGVzdENhc2VJbmZvQmFzZSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlCi0vLyB0byBQ
YXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvIGNsYXNzZXMuIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUlu
Zm9CYXNlCi0vLyBhY2N1bXVsYXRlcyB0ZXN0IGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IFRFU1Rf
UCBtYWNybyBpbnZvY2F0aW9ucwotLy8gYW5kIGdlbmVyYXRvcnMgcHJvdmlkZWQgYnkgSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AgbWFjcm8gaW52b2NhdGlvbnMKLS8vIGFuZCB1c2VzIHRoYXQgaW5m
b3JtYXRpb24gdG8gcmVnaXN0ZXIgYWxsIHJlc3VsdGluZyB0ZXN0IGluc3RhbmNlcwotLy8gaW4g
UmVnaXN0ZXJUZXN0cyBtZXRob2QuIFRoZSBQYXJhbWV0ZXJpemVUZXN0Q2FzZVJlZ2lzdHJ5IGNs
YXNzIGhvbGRzCi0vLyBhIGNvbGxlY3Rpb24gb2YgcG9pbnRlcnMgdG8gdGhlIFBhcmFtZXRlcml6
ZWRUZXN0Q2FzZUluZm8gb2JqZWN0cwotLy8gYW5kIGNhbGxzIFJlZ2lzdGVyVGVzdHMoKSBvbiBl
YWNoIG9mIHRoZW0gd2hlbiBhc2tlZC4KLWNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9C
YXNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNl
KCkge30KLQotICAvLyBCYXNlIHBhcnQgb2YgdGVzdCBjYXNlIG5hbWUgZm9yIGRpc3BsYXkgcHVy
cG9zZXMuCi0gIHZpcnR1YWwgY29uc3Qgc3RkOjpzdHJpbmcmIEdldFRlc3RDYXNlTmFtZSgpIGNv
bnN0ID0gMDsKLSAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVudGl0eS4KLSAgdmlydHVh
bCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCA9IDA7Ci0gIC8vIFVuaXRUZXN0IGNs
YXNzIGludm9rZXMgdGhpcyBtZXRob2QgdG8gcmVnaXN0ZXIgdGVzdHMgaW4gdGhpcwotICAvLyB0
ZXN0IGNhc2UgcmlnaHQgYmVmb3JlIHJ1bm5pbmcgdGhlbSBpbiBSVU5fQUxMX1RFU1RTIG1hY3Jv
LgotICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoZW4gb25jZSBv
biBhbnkgc2luZ2xlCi0gIC8vIGluc3RhbmNlIG9mIGEgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5m
b0Jhc2UgZGVyaXZlZCBjbGFzcy4KLSAgdmlydHVhbCB2b2lkIFJlZ2lzdGVyVGVzdHMoKSA9IDA7
Ci0KLSBwcm90ZWN0ZWQ6Ci0gIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlKCkge30KLQot
IHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlSW5mb0Jhc2UpOwotfTsKLQotLy8gSU5URVJOQUwgSU1QTEVNRU5UQVRJT04gLSBE
TyBOT1QgVVNFIElOIFVTRVIgQ09ERS4KLS8vCi0vLyBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
IGFjY3VtdWxhdGVzIHRlc3RzIG9idGFpbmVkIGZyb20gVEVTVF9QCi0vLyBtYWNybyBpbnZvY2F0
aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHRlc3QgY2FzZSBhbmQgZ2VuZXJhdG9ycwotLy8gb2J0YWlu
ZWQgZnJvbSBJTlNUQU5USUFURV9URVNUX0NBU0VfUCBtYWNybyBpbnZvY2F0aW9ucyBmb3IgdGhh
dAotLy8gdGVzdCBjYXNlLiBJdCByZWdpc3RlcnMgdGVzdHMgd2l0aCBhbGwgdmFsdWVzIGdlbmVy
YXRlZCBieSBhbGwKLS8vIGdlbmVyYXRvcnMgd2hlbiBhc2tlZC4KLXRlbXBsYXRlIDxjbGFzcyBU
ZXN0Q2FzZT4KLWNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm8gOiBwdWJsaWMgUGFyYW1l
dGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UgewotIHB1YmxpYzoKLSAgLy8gUGFyYW1UeXBlIGFuZCBH
ZW5lcmF0b3JDcmVhdGlvbkZ1bmMgYXJlIHByaXZhdGUgdHlwZXMgYnV0IGFyZSByZXF1aXJlZAot
ICAvLyBmb3IgZGVjbGFyYXRpb25zIG9mIHB1YmxpYyBtZXRob2RzIEFkZFRlc3RQYXR0ZXJuKCkg
YW5kCi0gIC8vIEFkZFRlc3RDYXNlSW5zdGFudGlhdGlvbigpLgotICB0eXBlZGVmIHR5cGVuYW1l
IFRlc3RDYXNlOjpQYXJhbVR5cGUgUGFyYW1UeXBlOwotICAvLyBBIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBhbiBpbnN0YW5jZSBvZiBhcHByb3ByaWF0ZSBnZW5lcmF0b3IgdHlwZS4KLSAgdHlwZWRl
ZiBQYXJhbUdlbmVyYXRvcjxQYXJhbVR5cGU+KEdlbmVyYXRvckNyZWF0aW9uRnVuYykoKTsKLSAg
dHlwZWRlZiB0eXBlbmFtZSBQYXJhbU5hbWVHZW5GdW5jPFBhcmFtVHlwZT46OlR5cGUgUGFyYW1O
YW1lR2VuZXJhdG9yRnVuYzsKLQotICBleHBsaWNpdCBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZv
KAotICAgICAgY29uc3QgY2hhciogbmFtZSwgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24pCi0g
ICAgICA6IHRlc3RfY2FzZV9uYW1lXyhuYW1lKSwgY29kZV9sb2NhdGlvbl8oY29kZV9sb2NhdGlv
bikge30KLQotICAvLyBUZXN0IGNhc2UgYmFzZSBuYW1lIGZvciBkaXNwbGF5IHB1cnBvc2VzLgot
ICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nJiBHZXRUZXN0Q2FzZU5hbWUoKSBjb25zdCB7IHJl
dHVybiB0ZXN0X2Nhc2VfbmFtZV87IH0KLSAgLy8gVGVzdCBjYXNlIGlkIHRvIHZlcmlmeSBpZGVu
dGl0eS4KLSAgdmlydHVhbCBUeXBlSWQgR2V0VGVzdENhc2VUeXBlSWQoKSBjb25zdCB7IHJldHVy
biBHZXRUeXBlSWQ8VGVzdENhc2U+KCk7IH0KLSAgLy8gVEVTVF9QIG1hY3JvIHVzZXMgQWRkVGVz
dFBhdHRlcm4oKSB0byByZWNvcmQgaW5mb3JtYXRpb24KLSAgLy8gYWJvdXQgYSBzaW5nbGUgdGVz
dCBpbiBhIExvY2FsVGVzdEluZm8gc3RydWN0dXJlLgotICAvLyB0ZXN0X2Nhc2VfbmFtZSBpcyB0
aGUgYmFzZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UgKHdpdGhvdXQgaW52b2NhdGlvbgotICAvLyBw
cmVmaXgpLiB0ZXN0X2Jhc2VfbmFtZSBpcyB0aGUgbmFtZSBvZiBhbiBpbmRpdmlkdWFsIHRlc3Qg
d2l0aG91dAotICAvLyBwYXJhbWV0ZXIgaW5kZXguIEZvciB0aGUgdGVzdCBTZXF1ZW5jZUEvRm9v
VGVzdC5Eb0Jhci8xIEZvb1Rlc3QgaXMKLSAgLy8gdGVzdCBjYXNlIGJhc2UgbmFtZSBhbmQgRG9C
YXIgaXMgdGVzdCBiYXNlIG5hbWUuCi0gIHZvaWQgQWRkVGVzdFBhdHRlcm4oY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGVzdF9i
YXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgVGVzdE1ldGFGYWN0b3J5QmFzZTxQYXJh
bVR5cGU+KiBtZXRhX2ZhY3RvcnkpIHsKLSAgICB0ZXN0c18ucHVzaF9iYWNrKGxpbmtlZF9wdHI8
VGVzdEluZm8+KG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Jhc2VfbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRh
X2ZhY3RvcnkpKSk7Ci0gIH0KLSAgLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AgbWFjcm8gdXNl
cyBBZGRHZW5lcmF0b3IoKSB0byByZWNvcmQgaW5mb3JtYXRpb24KLSAgLy8gYWJvdXQgYSBnZW5l
cmF0b3IuCi0gIGludCBBZGRUZXN0Q2FzZUluc3RhbnRpYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcm
IGluc3RhbnRpYXRpb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0b3JDcmVhdGlvbkZ1bmMqIGZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKSB7Ci0gICAgaW5zdGFudGlhdGlv
bnNfLnB1c2hfYmFjaygKLSAgICAgICAgSW5zdGFudGlhdGlvbkluZm8oaW5zdGFudGlhdGlvbl9u
YW1lLCBmdW5jLCBuYW1lX2Z1bmMsIGZpbGUsIGxpbmUpKTsKLSAgICByZXR1cm4gMDsgIC8vIFJl
dHVybiB2YWx1ZSB1c2VkIG9ubHkgdG8gcnVuIHRoaXMgbWV0aG9kIGluIG5hbWVzcGFjZSBzY29w
ZS4KLSAgfQotICAvLyBVbml0VGVzdCBjbGFzcyBpbnZva2VzIHRoaXMgbWV0aG9kIHRvIHJlZ2lz
dGVyIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNlCi0gIC8vIHRlc3QgY2FzZXMgcmlnaHQgYmVmb3Jl
IHJ1bm5pbmcgdGVzdHMgaW4gUlVOX0FMTF9URVNUUyBtYWNyby4KLSAgLy8gVGhpcyBtZXRob2Qg
c2hvdWxkIG5vdCBiZSBjYWxsZWQgbW9yZSB0aGVuIG9uY2Ugb24gYW55IHNpbmdsZQotICAvLyBp
bnN0YW5jZSBvZiBhIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlIGRlcml2ZWQgY2xhc3Mu
Ci0gIC8vIFVuaXRUZXN0IGhhcyBhIGd1YXJkIHRvIHByZXZlbnQgZnJvbSBjYWxsaW5nIHRoaXMg
bWV0aG9kIG1vcmUgdGhlbiBvbmNlLgotICB2aXJ0dWFsIHZvaWQgUmVnaXN0ZXJUZXN0cygpIHsK
LSAgICBmb3IgKHR5cGVuYW1lIFRlc3RJbmZvQ29udGFpbmVyOjppdGVyYXRvciB0ZXN0X2l0ID0g
dGVzdHNfLmJlZ2luKCk7Ci0gICAgICAgICB0ZXN0X2l0ICE9IHRlc3RzXy5lbmQoKTsgKyt0ZXN0
X2l0KSB7Ci0gICAgICBsaW5rZWRfcHRyPFRlc3RJbmZvPiB0ZXN0X2luZm8gPSAqdGVzdF9pdDsK
LSAgICAgIGZvciAodHlwZW5hbWUgSW5zdGFudGlhdGlvbkNvbnRhaW5lcjo6aXRlcmF0b3IgZ2Vu
X2l0ID0KLSAgICAgICAgICAgICAgIGluc3RhbnRpYXRpb25zXy5iZWdpbigpOyBnZW5faXQgIT0g
aW5zdGFudGlhdGlvbnNfLmVuZCgpOwotICAgICAgICAgICAgICAgKytnZW5faXQpIHsKLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGluc3RhbnRpYXRpb25fbmFtZSA9IGdlbl9pdC0+bmFtZTsK
LSAgICAgICAgUGFyYW1HZW5lcmF0b3I8UGFyYW1UeXBlPiBnZW5lcmF0b3IoKCpnZW5faXQtPmdl
bmVyYXRvcikoKSk7Ci0gICAgICAgIFBhcmFtTmFtZUdlbmVyYXRvckZ1bmMqIG5hbWVfZnVuYyA9
IGdlbl9pdC0+bmFtZV9mdW5jOwotICAgICAgICBjb25zdCBjaGFyKiBmaWxlID0gZ2VuX2l0LT5m
aWxlOwotICAgICAgICBpbnQgbGluZSA9IGdlbl9pdC0+bGluZTsKLQotICAgICAgICBzdGQ6OnN0
cmluZyB0ZXN0X2Nhc2VfbmFtZTsKLSAgICAgICAgaWYgKCAhaW5zdGFudGlhdGlvbl9uYW1lLmVt
cHR5KCkgKQotICAgICAgICAgIHRlc3RfY2FzZV9uYW1lID0gaW5zdGFudGlhdGlvbl9uYW1lICsg
Ii8iOwotICAgICAgICB0ZXN0X2Nhc2VfbmFtZSArPSB0ZXN0X2luZm8tPnRlc3RfY2FzZV9iYXNl
X25hbWU7Ci0KLSAgICAgICAgc2l6ZV90IGkgPSAwOwotICAgICAgICBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4gdGVzdF9wYXJhbV9uYW1lczsKLSAgICAgICAgZm9yICh0eXBlbmFtZSBQYXJhbUdlbmVy
YXRvcjxQYXJhbVR5cGU+OjppdGVyYXRvciBwYXJhbV9pdCA9Ci0gICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5iZWdpbigpOwotICAgICAgICAgICAgIHBhcmFtX2l0ICE9IGdlbmVyYXRvci5lbmQo
KTsgKytwYXJhbV9pdCwgKytpKSB7Ci0gICAgICAgICAgTWVzc2FnZSB0ZXN0X25hbWVfc3RyZWFt
OwotCi0gICAgICAgICAgc3RkOjpzdHJpbmcgcGFyYW1fbmFtZSA9IG5hbWVfZnVuYygKLSAgICAg
ICAgICAgICAgVGVzdFBhcmFtSW5mbzxQYXJhbVR5cGU+KCpwYXJhbV9pdCwgaSkpOwotCi0gICAg
ICAgICAgR1RFU1RfQ0hFQ0tfKElzVmFsaWRQYXJhbU5hbWUocGFyYW1fbmFtZSkpCi0gICAgICAg
ICAgICAgIDw8ICJQYXJhbWV0ZXJpemVkIHRlc3QgbmFtZSAnIiA8PCBwYXJhbV9uYW1lCi0gICAg
ICAgICAgICAgIDw8ICInIGlzIGludmFsaWQsIGluICIgPDwgZmlsZQotICAgICAgICAgICAgICA8
PCAiIGxpbmUgIiA8PCBsaW5lIDw8IHN0ZDo6ZW5kbDsKLQotICAgICAgICAgIEdURVNUX0NIRUNL
Xyh0ZXN0X3BhcmFtX25hbWVzLmNvdW50KHBhcmFtX25hbWUpID09IDApCi0gICAgICAgICAgICAg
IDw8ICJEdXBsaWNhdGUgcGFyYW1ldGVyaXplZCB0ZXN0IG5hbWUgJyIgPDwgcGFyYW1fbmFtZQot
ICAgICAgICAgICAgICA8PCAiJywgaW4gIiA8PCBmaWxlIDw8ICIgbGluZSAiIDw8IGxpbmUgPDwg
c3RkOjplbmRsOwotCi0gICAgICAgICAgdGVzdF9wYXJhbV9uYW1lcy5pbnNlcnQocGFyYW1fbmFt
ZSk7Ci0KLSAgICAgICAgICB0ZXN0X25hbWVfc3RyZWFtIDw8IHRlc3RfaW5mby0+dGVzdF9iYXNl
X25hbWUgPDwgIi8iIDw8IHBhcmFtX25hbWU7Ci0gICAgICAgICAgTWFrZUFuZFJlZ2lzdGVyVGVz
dEluZm8oCi0gICAgICAgICAgICAgIHRlc3RfY2FzZV9uYW1lLmNfc3RyKCksCi0gICAgICAgICAg
ICAgIHRlc3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwKLSAgICAgICAgICAgICAg
TlVMTCwgIC8vIE5vIHR5cGUgcGFyYW1ldGVyLgotICAgICAgICAgICAgICBQcmludFRvU3RyaW5n
KCpwYXJhbV9pdCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgY29kZV9sb2NhdGlvbl8sCi0gICAg
ICAgICAgICAgIEdldFRlc3RDYXNlVHlwZUlkKCksCi0gICAgICAgICAgICAgIFRlc3RDYXNlOjpT
ZXRVcFRlc3RDYXNlLAotICAgICAgICAgICAgICBUZXN0Q2FzZTo6VGVhckRvd25UZXN0Q2FzZSwK
LSAgICAgICAgICAgICAgdGVzdF9pbmZvLT50ZXN0X21ldGFfZmFjdG9yeS0+Q3JlYXRlVGVzdEZh
Y3RvcnkoKnBhcmFtX2l0KSk7Ci0gICAgICAgIH0gIC8vIGZvciBwYXJhbV9pdAotICAgICAgfSAg
Ly8gZm9yIGdlbl9pdAotICAgIH0gIC8vIGZvciB0ZXN0X2l0Ci0gIH0gIC8vIFJlZ2lzdGVyVGVz
dHMKLQotIHByaXZhdGU6Ci0gIC8vIExvY2FsVGVzdEluZm8gc3RydWN0dXJlIGtlZXBzIGluZm9y
bWF0aW9uIGFib3V0IGEgc2luZ2xlIHRlc3QgcmVnaXN0ZXJlZAotICAvLyB3aXRoIFRFU1RfUCBt
YWNyby4KLSAgc3RydWN0IFRlc3RJbmZvIHsKLSAgICBUZXN0SW5mbyhjb25zdCBjaGFyKiBhX3Rl
c3RfY2FzZV9iYXNlX25hbWUsCi0gICAgICAgICAgICAgY29uc3QgY2hhciogYV90ZXN0X2Jhc2Vf
bmFtZSwKLSAgICAgICAgICAgICBUZXN0TWV0YUZhY3RvcnlCYXNlPFBhcmFtVHlwZT4qIGFfdGVz
dF9tZXRhX2ZhY3RvcnkpIDoKLSAgICAgICAgdGVzdF9jYXNlX2Jhc2VfbmFtZShhX3Rlc3RfY2Fz
ZV9iYXNlX25hbWUpLAotICAgICAgICB0ZXN0X2Jhc2VfbmFtZShhX3Rlc3RfYmFzZV9uYW1lKSwK
LSAgICAgICAgdGVzdF9tZXRhX2ZhY3RvcnkoYV90ZXN0X21ldGFfZmFjdG9yeSkge30KLQotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RfY2FzZV9iYXNlX25hbWU7Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgdGVzdF9iYXNlX25hbWU7Ci0gICAgY29uc3Qgc2NvcGVkX3B0cjxUZXN0TWV0YUZhY3Rv
cnlCYXNlPFBhcmFtVHlwZT4gPiB0ZXN0X21ldGFfZmFjdG9yeTsKLSAgfTsKLSAgdHlwZWRlZiA6
OnN0ZDo6dmVjdG9yPGxpbmtlZF9wdHI8VGVzdEluZm8+ID4gVGVzdEluZm9Db250YWluZXI7Ci0g
IC8vIFJlY29yZHMgZGF0YSByZWNlaXZlZCBmcm9tIElOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG1h
Y3JvczoKLSAgLy8gIDxJbnN0YW50aWF0aW9uIG5hbWUsIFNlcXVlbmNlIGdlbmVyYXRvciBjcmVh
dGlvbiBmdW5jdGlvbiwKLSAgLy8gICAgIE5hbWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBTb3VyY2Ug
ZmlsZSwgU291cmNlIGxpbmU+Ci0gIHN0cnVjdCBJbnN0YW50aWF0aW9uSW5mbyB7Ci0gICAgICBJ
bnN0YW50aWF0aW9uSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZV9pbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvckNyZWF0aW9uRnVuYyogZ2VuZXJhdG9yX2luLAotICAgICAg
ICAgICAgICAgICAgICAgICAgUGFyYW1OYW1lR2VuZXJhdG9yRnVuYyogbmFtZV9mdW5jX2luLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmlsZV9pbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBsaW5lX2luKQotICAgICAgICAgIDogbmFtZShuYW1lX2luKSwKLSAg
ICAgICAgICAgIGdlbmVyYXRvcihnZW5lcmF0b3JfaW4pLAotICAgICAgICAgICAgbmFtZV9mdW5j
KG5hbWVfZnVuY19pbiksCi0gICAgICAgICAgICBmaWxlKGZpbGVfaW4pLAotICAgICAgICAgICAg
bGluZShsaW5lX2luKSB7fQotCi0gICAgICBzdGQ6OnN0cmluZyBuYW1lOwotICAgICAgR2VuZXJh
dG9yQ3JlYXRpb25GdW5jKiBnZW5lcmF0b3I7Ci0gICAgICBQYXJhbU5hbWVHZW5lcmF0b3JGdW5j
KiBuYW1lX2Z1bmM7Ci0gICAgICBjb25zdCBjaGFyKiBmaWxlOwotICAgICAgaW50IGxpbmU7Ci0g
IH07Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxJbnN0YW50aWF0aW9uSW5mbz4gSW5zdGFudGlh
dGlvbkNvbnRhaW5lcjsKLQotICBzdGF0aWMgYm9vbCBJc1ZhbGlkUGFyYW1OYW1lKGNvbnN0IHN0
ZDo6c3RyaW5nJiBuYW1lKSB7Ci0gICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHN0cmluZwotICAgIGlm
IChuYW1lLmVtcHR5KCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Ig
aW52YWxpZCBjaGFyYWN0ZXJzCi0gICAgZm9yIChzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGluZGV4
ID0gMDsgaW5kZXggPCBuYW1lLnNpemUoKTsgKytpbmRleCkgewotICAgICAgaWYgKCFpc2FsbnVt
KG5hbWVbaW5kZXhdKSAmJiBuYW1lW2luZGV4XSAhPSAnXycpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5n
IHRlc3RfY2FzZV9uYW1lXzsKLSAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb25fOwotICBUZXN0
SW5mb0NvbnRhaW5lciB0ZXN0c187Ci0gIEluc3RhbnRpYXRpb25Db250YWluZXIgaW5zdGFudGlh
dGlvbnNfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oUGFyYW1ldGVyaXpl
ZFRlc3RDYXNlSW5mbyk7Ci19OyAgLy8gY2xhc3MgUGFyYW1ldGVyaXplZFRlc3RDYXNlSW5mbwot
Ci0vLyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiAtIERPIE5PVCBVU0UgSU4gVVNFUiBDT0RFLgot
Ly8KLS8vIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5IGNvbnRhaW5zIGEgbWFwIG9mIFBh
cmFtZXRlcml6ZWRUZXN0Q2FzZUluZm9CYXNlCi0vLyBjbGFzc2VzIGFjY2Vzc2VkIGJ5IHRlc3Qg
Y2FzZSBuYW1lcy4gVEVTVF9QIGFuZCBJTlNUQU5USUFURV9URVNUX0NBU0VfUAotLy8gbWFjcm9z
IHVzZSBpdCB0byBsb2NhdGUgdGhlaXIgY29ycmVzcG9uZGluZyBQYXJhbWV0ZXJpemVkVGVzdENh
c2VJbmZvCi0vLyBkZXNjcmlwdG9ycy4KLWNsYXNzIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lz
dHJ5IHsKLSBwdWJsaWM6Ci0gIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5KCkge30KLSAg
flBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5KCkgewotICAgIGZvciAoVGVzdENhc2VJbmZv
Q29udGFpbmVyOjppdGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVnaW4oKTsKLSAgICAg
ICAgIGl0ICE9IHRlc3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKLSAgICAgIGRlbGV0ZSAq
aXQ7Ci0gICAgfQotICB9Ci0KLSAgLy8gTG9va3MgdXAgb3IgY3JlYXRlcyBhbmQgcmV0dXJucyBh
IHN0cnVjdHVyZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0Ci0gIC8vIHRlc3RzIGFuZCBp
bnN0YW50aWF0aW9ucyBvZiBhIHBhcnRpY3VsYXIgdGVzdCBjYXNlLgotICB0ZW1wbGF0ZSA8Y2xh
c3MgVGVzdENhc2U+Ci0gIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KiBHZXRU
ZXN0Q2FzZVBhdHRlcm5Ib2xkZXIoCi0gICAgICBjb25zdCBjaGFyKiB0ZXN0X2Nhc2VfbmFtZSwK
LSAgICAgIENvZGVMb2NhdGlvbiBjb2RlX2xvY2F0aW9uKSB7Ci0gICAgUGFyYW1ldGVyaXplZFRl
c3RDYXNlSW5mbzxUZXN0Q2FzZT4qIHR5cGVkX3Rlc3RfaW5mbyA9IE5VTEw7Ci0gICAgZm9yIChU
ZXN0Q2FzZUluZm9Db250YWluZXI6Oml0ZXJhdG9yIGl0ID0gdGVzdF9jYXNlX2luZm9zXy5iZWdp
bigpOwotICAgICAgICAgaXQgIT0gdGVzdF9jYXNlX2luZm9zXy5lbmQoKTsgKytpdCkgewotICAg
ICAgaWYgKCgqaXQpLT5HZXRUZXN0Q2FzZU5hbWUoKSA9PSB0ZXN0X2Nhc2VfbmFtZSkgewotICAg
ICAgICBpZiAoKCppdCktPkdldFRlc3RDYXNlVHlwZUlkKCkgIT0gR2V0VHlwZUlkPFRlc3RDYXNl
PigpKSB7Ci0gICAgICAgICAgLy8gQ29tcGxhaW4gYWJvdXQgaW5jb3JyZWN0IHVzYWdlIG9mIEdv
b2dsZSBUZXN0IGZhY2lsaXRpZXMKLSAgICAgICAgICAvLyBhbmQgdGVybWluYXRlIHRoZSBwcm9n
cmFtIHNpbmNlIHdlIGNhbm5vdCBndWFyYW50eSBjb3JyZWN0Ci0gICAgICAgICAgLy8gdGVzdCBj
YXNlIHNldHVwIGFuZCB0ZWFyLWRvd24gaW4gdGhpcyBjYXNlLgotICAgICAgICAgIFJlcG9ydElu
dmFsaWRUZXN0Q2FzZVR5cGUodGVzdF9jYXNlX25hbWUsIGNvZGVfbG9jYXRpb24pOwotICAgICAg
ICAgIHBvc2l4OjpBYm9ydCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIC8vIEF0IHRo
aXMgcG9pbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGUgb2JqZWN0IHdlIGZvdW5kIGlzIG9mIHRoZSBz
YW1lCi0gICAgICAgICAgLy8gdHlwZSB3ZSBhcmUgbG9va2luZyBmb3IsIHNvIHdlIGRvd25jYXN0
IGl0IHRvIHRoYXQgdHlwZQotICAgICAgICAgIC8vIHdpdGhvdXQgZnVydGhlciBjaGVja3MuCi0g
ICAgICAgICAgdHlwZWRfdGVzdF9pbmZvID0gQ2hlY2tlZERvd25jYXN0VG9BY3R1YWxUeXBlPAot
ICAgICAgICAgICAgICBQYXJhbWV0ZXJpemVkVGVzdENhc2VJbmZvPFRlc3RDYXNlPiA+KCppdCk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICh0eXBl
ZF90ZXN0X2luZm8gPT0gTlVMTCkgewotICAgICAgdHlwZWRfdGVzdF9pbmZvID0gbmV3IFBhcmFt
ZXRlcml6ZWRUZXN0Q2FzZUluZm88VGVzdENhc2U+KAotICAgICAgICAgIHRlc3RfY2FzZV9uYW1l
LCBjb2RlX2xvY2F0aW9uKTsKLSAgICAgIHRlc3RfY2FzZV9pbmZvc18ucHVzaF9iYWNrKHR5cGVk
X3Rlc3RfaW5mbyk7Ci0gICAgfQotICAgIHJldHVybiB0eXBlZF90ZXN0X2luZm87Ci0gIH0KLSAg
dm9pZCBSZWdpc3RlclRlc3RzKCkgewotICAgIGZvciAoVGVzdENhc2VJbmZvQ29udGFpbmVyOjpp
dGVyYXRvciBpdCA9IHRlc3RfY2FzZV9pbmZvc18uYmVnaW4oKTsKLSAgICAgICAgIGl0ICE9IHRl
c3RfY2FzZV9pbmZvc18uZW5kKCk7ICsraXQpIHsKLSAgICAgICgqaXQpLT5SZWdpc3RlclRlc3Rz
KCk7Ci0gICAgfQotICB9Ci0KLSBwcml2YXRlOgotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8UGFy
YW1ldGVyaXplZFRlc3RDYXNlSW5mb0Jhc2UqPiBUZXN0Q2FzZUluZm9Db250YWluZXI7Ci0KLSAg
VGVzdENhc2VJbmZvQ29udGFpbmVyIHRlc3RfY2FzZV9pbmZvc187Ci0KLSAgR1RFU1RfRElTQUxM
T1dfQ09QWV9BTkRfQVNTSUdOXyhQYXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSk7Ci19Owot
Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNl
bmRpZiAgLy8gIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVE
RV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QQVJBTV9VVElMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJjaC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzRhYjk0OTA1N2M3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LWFyY2guaAorKysgL2Rldi9u
dWxsCkBAIC0xLDkzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE1LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xl
IFRlc3QpCi0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBHVEVTVF9PU18qIG1h
Y3JvLgotLy8gSXQgaXMgc2VwYXJhdGUgZnJvbSBndGVzdC1wb3J0Lmggc28gdGhhdCBjdXN0b20v
Z3Rlc3QtcG9ydC5oIGNhbiBpbmNsdWRlIGl0LgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RF
U1RfSU5URVJOQUxfR1RFU1RfUE9SVF9BUkNIX0hfCi0KLS8vIERldGVybWluZXMgdGhlIHBsYXRm
b3JtIG9uIHdoaWNoIEdvb2dsZSBUZXN0IGlzIGNvbXBpbGVkLgotI2lmZGVmIF9fQ1lHV0lOX18K
LSMgZGVmaW5lIEdURVNUX09TX0NZR1dJTiAxCi0jZWxpZiBkZWZpbmVkIF9fU1lNQklBTjMyX18K
LSMgZGVmaW5lIEdURVNUX09TX1NZTUJJQU4gMQotI2VsaWYgZGVmaW5lZCBfV0lOMzIKLSMgZGVm
aW5lIEdURVNUX09TX1dJTkRPV1MgMQotIyBpZmRlZiBfV0lOMzJfV0NFCi0jICBkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUgMQotIyBlbGlmIGRlZmluZWQoX19NSU5HV19fKSB8fCBkZWZp
bmVkKF9fTUlOR1czMl9fKQotIyAgZGVmaW5lIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgMQotIyBl
bGlmIGRlZmluZWQoV0lOQVBJX0ZBTUlMWSkKLSMgIGluY2x1ZGUgPHdpbmFwaWZhbWlseS5oPgot
IyAgaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lOQVBJX1BBUlRJVElPTl9ERVNLVE9QKQot
IyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1AgMQotIyAgZWxpZiBXSU5BUElfRkFN
SUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX1BIT05FX0FQUCkKLSMgICBkZWZpbmUgR1RF
U1RfT1NfV0lORE9XU19QSE9ORSAxCi0jICBlbGlmIFdJTkFQSV9GQU1JTFlfUEFSVElUSU9OKFdJ
TkFQSV9QQVJUSVRJT05fQVBQKQotIyAgIGRlZmluZSBHVEVTVF9PU19XSU5ET1dTX1JUIDEKLSMg
IGVsc2UKLSAgICAvLyBXSU5BUElfRkFNSUxZIGRlZmluZWQgYnV0IG5vIGtub3duIHBhcnRpdGlv
biBtYXRjaGVkLgotICAgIC8vIERlZmF1bHQgdG8gZGVza3RvcC4KLSMgICBkZWZpbmUgR1RFU1Rf
T1NfV0lORE9XU19ERVNLVE9QIDEKLSMgIGVuZGlmCi0jIGVsc2UKLSMgIGRlZmluZSBHVEVTVF9P
U19XSU5ET1dTX0RFU0tUT1AgMQotIyBlbmRpZiAgLy8gX1dJTjMyX1dDRQotI2VsaWYgZGVmaW5l
ZCBfX0FQUExFX18KLSMgZGVmaW5lIEdURVNUX09TX01BQyAxCi0jIGlmIFRBUkdFVF9PU19JUEhP
TkUKLSMgIGRlZmluZSBHVEVTVF9PU19JT1MgMQotIyBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0Zy
ZWVCU0RfXwotIyBkZWZpbmUgR1RFU1RfT1NfRlJFRUJTRCAxCi0jZWxpZiBkZWZpbmVkIF9fbGlu
dXhfXwotIyBkZWZpbmUgR1RFU1RfT1NfTElOVVggMQotIyBpZiBkZWZpbmVkIF9fQU5EUk9JRF9f
Ci0jICBkZWZpbmUgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAxCi0jIGVuZGlmCi0jZWxpZiBkZWZp
bmVkIF9fTVZTX18KLSMgZGVmaW5lIEdURVNUX09TX1pPUyAxCi0jZWxpZiBkZWZpbmVkKF9fc3Vu
KSAmJiBkZWZpbmVkKF9fU1ZSNCkKLSMgZGVmaW5lIEdURVNUX09TX1NPTEFSSVMgMQotI2VsaWYg
ZGVmaW5lZChfQUlYKQotIyBkZWZpbmUgR1RFU1RfT1NfQUlYIDEKLSNlbGlmIGRlZmluZWQoX19o
cHV4KQotIyBkZWZpbmUgR1RFU1RfT1NfSFBVWCAxCi0jZWxpZiBkZWZpbmVkIF9fbmF0aXZlX2Ns
aWVudF9fCi0jIGRlZmluZSBHVEVTVF9PU19OQUNMIDEKLSNlbGlmIGRlZmluZWQgX19PcGVuQlNE
X18KLSMgZGVmaW5lIEdURVNUX09TX09QRU5CU0QgMQotI2VsaWYgZGVmaW5lZCBfX1FOWF9fCi0j
IGRlZmluZSBHVEVTVF9PU19RTlggMQotI2VuZGlmICAvLyBfX0NZR1dJTl9fCi0KLSNlbmRpZiAg
Ly8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0FSQ0hfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNGY4YmE4MmFlMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjU5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LS8vCi0vLyBMb3ctbGV2ZWwgdHlwZXMgYW5kIHV0aWxpdGllcyBmb3IgcG9ydGluZyBHb29nbGUg
VGVzdCB0byB2YXJpb3VzCi0vLyBwbGF0Zm9ybXMuICBBbGwgbWFjcm9zIGVuZGluZyB3aXRoIF8g
YW5kIHN5bWJvbHMgZGVmaW5lZCBpbiBhbgotLy8gaW50ZXJuYWwgbmFtZXNwYWNlIGFyZSBzdWJq
ZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gIENvZGUKLS8vIG91dHNpZGUgR29vZ2xlIFRl
c3QgTVVTVCBOT1QgVVNFIFRIRU0gRElSRUNUTFkuICBNYWNyb3MgdGhhdCBkb24ndAotLy8gZW5k
IHdpdGggXyBhcmUgcGFydCBvZiBHb29nbGUgVGVzdCdzIHB1YmxpYyBBUEkgYW5kIGNhbiBiZSB1
c2VkIGJ5Ci0vLyBjb2RlIG91dHNpZGUgR29vZ2xlIFRlc3QuCi0vLwotLy8gVGhpcyBmaWxlIGlz
IGZ1bmRhbWVudGFsIHRvIEdvb2dsZSBUZXN0LiAgQWxsIG90aGVyIEdvb2dsZSBUZXN0IHNvdXJj
ZQotLy8gZmlsZXMgYXJlIGV4cGVjdGVkIHRvICNpbmNsdWRlIHRoaXMuICBUaGVyZWZvcmUsIGl0
IGNhbm5vdCAjaW5jbHVkZQotLy8gYW55IG90aGVyIEdvb2dsZSBUZXN0IGhlYWRlci4KLQotI2lm
bmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1BPUlRfSF8KLSNkZWZpbmUg
R1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9QT1JUX0hfCi0KLS8vIEVudmlyb25t
ZW50LWRlc2NyaWJpbmcgbWFjcm9zCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ly8KLS8vIEdvb2dsZSBUZXN0IGNhbiBiZSB1c2VkIGluIG1hbnkgZGlmZmVyZW50IGVudmlyb25t
ZW50cy4gIE1hY3JvcyBpbgotLy8gdGhpcyBzZWN0aW9uIHRlbGwgR29vZ2xlIFRlc3Qgd2hhdCBr
aW5kIG9mIGVudmlyb25tZW50IGl0IGlzIGJlaW5nCi0vLyB1c2VkIGluLCBzdWNoIHRoYXQgR29v
Z2xlIFRlc3QgY2FuIHByb3ZpZGUgZW52aXJvbm1lbnQtc3BlY2lmaWMKLS8vIGZlYXR1cmVzIGFu
ZCBpbXBsZW1lbnRhdGlvbnMuCi0vLwotLy8gR29vZ2xlIFRlc3QgdHJpZXMgdG8gYXV0b21hdGlj
YWxseSBkZXRlY3QgdGhlIHByb3BlcnRpZXMgb2YgaXRzCi0vLyBlbnZpcm9ubWVudCwgc28gdXNl
cnMgdXN1YWxseSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZXNlCi0vLyBtYWNyb3MuICBI
b3dldmVyLCB0aGUgYXV0b21hdGljIGRldGVjdGlvbiBpcyBub3QgcGVyZmVjdC4KLS8vIFNvbWV0
aW1lcyBpdCdzIG5lY2Vzc2FyeSBmb3IgYSB1c2VyIHRvIGRlZmluZSBzb21lIG9mIHRoZSBmb2xs
b3dpbmcKLS8vIG1hY3JvcyBpbiB0aGUgYnVpbGQgc2NyaXB0IHRvIG92ZXJyaWRlIEdvb2dsZSBU
ZXN0J3MgZGVjaXNpb25zLgotLy8KLS8vIElmIHRoZSB1c2VyIGRvZXNuJ3QgZGVmaW5lIGEgbWFj
cm8gaW4gdGhlIGxpc3QsIEdvb2dsZSBUZXN0IHdpbGwKLS8vIHByb3ZpZGUgYSBkZWZhdWx0IGRl
ZmluaXRpb24uICBBZnRlciB0aGlzIGhlYWRlciBpcyAjaW5jbHVkZWQsIGFsbAotLy8gbWFjcm9z
IGluIHRoaXMgbGlzdCB3aWxsIGJlIGRlZmluZWQgdG8gZWl0aGVyIDEgb3IgMC4KLS8vCi0vLyBO
b3RlcyB0byBtYWludGFpbmVyczoKLS8vICAgLSBFYWNoIG1hY3JvIGhlcmUgaXMgYSB1c2VyLXR3
ZWFrYWJsZSBrbm9iOyBkbyBub3QgZ3JvdyB0aGUgbGlzdAotLy8gICAgIGxpZ2h0bHkuCi0vLyAg
IC0gVXNlICNpZiB0byBrZXkgb2ZmIHRoZXNlIG1hY3Jvcy4gIERvbid0IHVzZSAjaWZkZWYgb3Ig
IiNpZgotLy8gICAgIGRlZmluZWQoLi4uKSIsIHdoaWNoIHdpbGwgbm90IHdvcmsgYXMgdGhlc2Ug
bWFjcm9zIGFyZSBBTFdBWVMKLS8vICAgICBkZWZpbmVkLgotLy8KLS8vICAgR1RFU1RfSEFTX0NM
T05FICAgICAgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0ZSB0aGF0IGNsb25lKDIp
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzL2lzbid0IGF2YWlsYWJsZS4KLS8v
ICAgR1RFU1RfSEFTX0VYQ0VQVElPTlMgICAgIC0gRGVmaW5lIGl0IHRvIDEvMCB0byBpbmRpY2F0
ZSB0aGF0IGV4Y2VwdGlvbnMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGVu
YWJsZWQuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HICAtIERlZmluZSBpdCB0byAxLzAg
dG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOjpzdHJpbmcsIHdoaWNoIGlzIGRpZmZlcmVudCB0byBzdGQ6OnN0
cmluZykuCi0vLyAgIEdURVNUX0hBU19HTE9CQUxfV1NUUklORyAtIERlZmluZSBpdCB0byAxLzAg
dG8gaW5kaWNhdGUgdGhhdCA6OnN0cmluZwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcy9pc24ndCBhdmFpbGFibGUgKHNvbWUgc3lzdGVtcyBkZWZpbmUKLS8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOjp3c3RyaW5nLCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gc3RkOjp3
c3RyaW5nKS4KLS8vICAgR1RFU1RfSEFTX1BPU0lYX1JFICAgICAgIC0gRGVmaW5lIGl0IHRvIDEv
MCB0byBpbmRpY2F0ZSB0aGF0IFBPU0lYIHJlZ3VsYXIKLS8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwcmVzc2lvbnMgYXJlL2FyZW4ndCBhdmFpbGFibGUuCi0vLyAgIEdURVNUX0hB
U19QVEhSRUFEICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgdGhhdCA8cHRo
cmVhZC5oPgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcy9pc24ndCBhdmFpbGFi
bGUuCi0vLyAgIEdURVNUX0hBU19SVFRJICAgICAgICAgICAtIERlZmluZSBpdCB0byAxLzAgdG8g
aW5kaWNhdGUgdGhhdCBSVFRJIGlzL2lzbid0Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuYWJsZWQuCi0vLyAgIEdURVNUX0hBU19TVERfV1NUUklORyAgICAtIERlZmluZSBpdCB0
byAxLzAgdG8gaW5kaWNhdGUgdGhhdAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OndzdHJpbmcgZG9lcy9kb2Vzbid0IHdvcmsgKEdvb2dsZSBUZXN0IGNhbgotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiZSB1c2VkIHdoZXJlIHN0ZDo6d3N0cmluZyBpcyB1bmF2
YWlsYWJsZSkuCi0vLyAgIEdURVNUX0hBU19UUjFfVFVQTEUgICAgICAtIERlZmluZSBpdCB0byAx
LzAgdG8gaW5kaWNhdGUgdHIxOjp0dXBsZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcy9pc24ndCBhdmFpbGFibGUuCi0vLyAgIEdURVNUX0hBU19TRUggICAgICAgICAgICAtIERl
ZmluZSBpdCB0byAxLzAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKLS8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tcGlsZXIgc3VwcG9ydHMgTWljcm9zb2Z0J3MgIlN0cnVjdHVyZWQK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uIEhhbmRsaW5nIi4KLS8v
ICAgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlCi0vLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIHN1cHBvcnRzIEkvTyBzdHJlYW0gcmVk
aXJlY3Rpb24gdXNpbmcKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwKCkgYW5k
IGR1cDIoKS4KLS8vICAgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgIC0gRGVmaW5lIGl0IHRvIDEv
MCB0byBpbmRpY2F0ZSB3aGV0aGVyIEdvb2dsZQotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXN0J3Mgb3duIHRyMSB0dXBsZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4gIFVudXNlZCB3aGVuIHRoZSB1c2VyIHNl
dHMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfSEFTX1RSMV9UVVBMRSB0
byAwLgotLy8gICBHVEVTVF9MQU5HX0NYWDExICAgICAgICAgLSBEZWZpbmUgaXQgdG8gMS8wIHRv
IGluZGljYXRlIHRoYXQgR29vZ2xlIFRlc3QKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXMgYnVpbGRpbmcgaW4gQysrMTEvQysrOTggbW9kZS4KLS8vICAgR1RFU1RfTElOS0VEX0FT
X1NIQVJFRF9MSUJSQVJZCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERlZmluZSB0
byAxIHdoZW4gY29tcGlsaW5nIHRlc3RzIHRoYXQgdXNlCi0vLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdvb2dsZSBUZXN0IGFzIGEgc2hhcmVkIGxpYnJhcnkgKGtub3duIGFzCi0vLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMTCBvbiBXaW5kb3dzKS4KLS8vICAgR1RFU1Rf
Q1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERl
ZmluZSB0byAxIHdoZW4gY29tcGlsaW5nIEdvb2dsZSBUZXN0IGl0c2VsZgotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcyBhIHNoYXJlZCBsaWJyYXJ5LgotCi0vLyBQbGF0Zm9ybS1p
bmRpY2F0aW5nIG1hY3JvcwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBN
YWNyb3MgaW5kaWNhdGluZyB0aGUgcGxhdGZvcm0gb24gd2hpY2ggR29vZ2xlIFRlc3QgaXMgYmVp
bmcgdXNlZAotLy8gKGEgbWFjcm8gaXMgZGVmaW5lZCB0byAxIGlmIGNvbXBpbGVkIG9uIHRoZSBn
aXZlbiBwbGF0Zm9ybTsKLS8vIG90aGVyd2lzZSBVTkRFRklORUQgLS0gaXQncyBuZXZlciBkZWZp
bmVkIHRvIDAuKS4gIEdvb2dsZSBUZXN0Ci0vLyBkZWZpbmVzIHRoZXNlIG1hY3JvcyBhdXRvbWF0
aWNhbGx5LiAgQ29kZSBvdXRzaWRlIEdvb2dsZSBUZXN0IE1VU1QKLS8vIE5PVCBkZWZpbmUgdGhl
bS4KLS8vCi0vLyAgIEdURVNUX09TX0FJWCAgICAgIC0gSUJNIEFJWAotLy8gICBHVEVTVF9PU19D
WUdXSU4gICAtIEN5Z3dpbgotLy8gICBHVEVTVF9PU19GUkVFQlNEICAtIEZyZWVCU0QKLS8vICAg
R1RFU1RfT1NfSFBVWCAgICAgLSBIUC1VWAotLy8gICBHVEVTVF9PU19MSU5VWCAgICAtIExpbnV4
Ci0vLyAgICAgR1RFU1RfT1NfTElOVVhfQU5EUk9JRCAtIEdvb2dsZSBBbmRyb2lkCi0vLyAgIEdU
RVNUX09TX01BQyAgICAgIC0gTWFjIE9TIFgKLS8vICAgICBHVEVTVF9PU19JT1MgICAgLSBpT1MK
LS8vICAgR1RFU1RfT1NfTkFDTCAgICAgLSBHb29nbGUgTmF0aXZlIENsaWVudCAoTmFDbCkKLS8v
ICAgR1RFU1RfT1NfT1BFTkJTRCAgLSBPcGVuQlNECi0vLyAgIEdURVNUX09TX1FOWCAgICAgIC0g
UU5YCi0vLyAgIEdURVNUX09TX1NPTEFSSVMgIC0gU3VuIFNvbGFyaXMKLS8vICAgR1RFU1RfT1Nf
U1lNQklBTiAgLSBTeW1iaWFuCi0vLyAgIEdURVNUX09TX1dJTkRPV1MgIC0gV2luZG93cyAoRGVz
a3RvcCwgTWluR1csIG9yIE1vYmlsZSkKLS8vICAgICBHVEVTVF9PU19XSU5ET1dTX0RFU0tUT1Ag
IC0gV2luZG93cyBEZXNrdG9wCi0vLyAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5HVyAgICAtIE1p
bkdXCi0vLyAgICAgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgICAtIFdpbmRvd3MgTW9iaWxlCi0v
LyAgICAgR1RFU1RfT1NfV0lORE9XU19QSE9ORSAgICAtIFdpbmRvd3MgUGhvbmUKLS8vICAgICBH
VEVTVF9PU19XSU5ET1dTX1JUICAgICAgIC0gV2luZG93cyBTdG9yZSBBcHAvV2luUlQKLS8vICAg
R1RFU1RfT1NfWk9TICAgICAgLSB6L09TCi0vLwotLy8gQW1vbmcgdGhlIHBsYXRmb3JtcywgQ3ln
d2luLCBMaW51eCwgTWF4IE9TIFgsIGFuZCBXaW5kb3dzIGhhdmUgdGhlCi0vLyBtb3N0IHN0YWJs
ZSBzdXBwb3J0LiAgU2luY2UgY29yZSBtZW1iZXJzIG9mIHRoZSBHb29nbGUgVGVzdCBwcm9qZWN0
Ci0vLyBkb24ndCBoYXZlIGFjY2VzcyB0byBvdGhlciBwbGF0Zm9ybXMsIHN1cHBvcnQgZm9yIHRo
ZW0gbWF5IGJlIGxlc3MKLS8vIHN0YWJsZS4gIElmIHlvdSBub3RpY2UgYW55IHByb2JsZW1zIG9u
IHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBub3RpZnkKLS8vIGdvb2dsZXRlc3RmcmFtZXdvcmtAZ29v
Z2xlZ3JvdXBzLmNvbSAocGF0Y2hlcyBmb3IgZml4aW5nIHRoZW0gYXJlCi0vLyBldmVuIG1vcmUg
d2VsY29tZSEpLgotLy8KLS8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgbm9uZSBvZiB0aGUgR1RFU1Rf
T1NfKiBtYWNyb3MgYXJlIGRlZmluZWQuCi0KLS8vIEZlYXR1cmUtaW5kaWNhdGluZyBtYWNyb3MK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCi0vLyBNYWNyb3MgaW5kaWNhdGluZyB3
aGljaCBHb29nbGUgVGVzdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIChhIG1hY3JvCi0vLyBpcyBk
ZWZpbmVkIHRvIDEgaWYgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ7Ci0v
LyBvdGhlcndpc2UgVU5ERUZJTkVEIC0tIGl0J3MgbmV2ZXIgZGVmaW5lZCB0byAwLikuICBHb29n
bGUgVGVzdAotLy8gZGVmaW5lcyB0aGVzZSBtYWNyb3MgYXV0b21hdGljYWxseS4gIENvZGUgb3V0
c2lkZSBHb29nbGUgVGVzdCBNVVNUCi0vLyBOT1QgZGVmaW5lIHRoZW0uCi0vLwotLy8gVGhlc2Ug
bWFjcm9zIGFyZSBwdWJsaWMgc28gdGhhdCBwb3J0YWJsZSB0ZXN0cyBjYW4gYmUgd3JpdHRlbi4K
LS8vIFN1Y2ggdGVzdHMgdHlwaWNhbGx5IHN1cnJvdW5kIGNvZGUgdXNpbmcgYSBmZWF0dXJlIHdp
dGggYW4gI2lmCi0vLyB3aGljaCBjb250cm9scyB0aGF0IGNvZGUuICBGb3IgZXhhbXBsZToKLS8v
Ci0vLyAjaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLS8vICAgRVhQRUNUX0RFQVRIKERvU29tZXRo
aW5nRGVhZGx5KCkpOwotLy8gI2VuZGlmCi0vLwotLy8gICBHVEVTVF9IQVNfQ09NQklORSAgICAg
IC0gdGhlIENvbWJpbmUoKSBmdW5jdGlvbiAoZm9yIHZhbHVlLXBhcmFtZXRlcml6ZWQKLS8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQotLy8gICBHVEVTVF9IQVNfREVBVEhfVEVT
VCAgIC0gZGVhdGggdGVzdHMKLS8vICAgR1RFU1RfSEFTX1BBUkFNX1RFU1QgICAtIHZhbHVlLXBh
cmFtZXRlcml6ZWQgdGVzdHMKLS8vICAgR1RFU1RfSEFTX1RZUEVEX1RFU1QgICAtIHR5cGVkIHRl
c3RzCi0vLyAgIEdURVNUX0hBU19UWVBFRF9URVNUX1AgLSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVz
dHMKLS8vICAgR1RFU1RfSVNfVEhSRUFEU0FGRSAgICAtIEdvb2dsZSBUZXN0IGlzIHRocmVhZC1z
YWZlLgotLy8gICBHVEVTVF9VU0VTX1BPU0lYX1JFICAgIC0gZW5oYW5jZWQgUE9TSVggcmVnZXgg
aXMgdXNlZC4gRG8gbm90IGNvbmZ1c2Ugd2l0aAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RFU1RfSEFTX1BPU0lYX1JFIChzZWUgYWJvdmUpIHdoaWNoIHVzZXJzIGNhbgotLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIHRoZW1zZWx2ZXMuCi0vLyAgIEdURVNUX1VT
RVNfU0lNUExFX1JFICAgLSBvdXIgb3duIHNpbXBsZSByZWdleCBpcyB1c2VkOwotLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhlIGFib3ZlIHR3byBhcmUgbXV0dWFsbHkgZXhjbHVzaXZl
LgotLy8gICBHVEVTVF9DQU5fQ09NUEFSRV9OVUxMIC0gYWNjZXB0cyB1bnR5cGVkIE5VTEwgaW4g
RVhQRUNUX0VRKCkuCi0KLS8vIE1pc2MgcHVibGljIG1hY3JvcwotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tCi0vLwotLy8gICBHVEVTVF9GTEFHKGZsYWdfbmFtZSkgIC0gcmVmZXJlbmNlcyB0aGUgdmFy
aWFibGUgY29ycmVzcG9uZGluZyB0bwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl
IGdpdmVuIEdvb2dsZSBUZXN0IGZsYWcuCi0KLS8vIEludGVybmFsIHV0aWxpdGllcwotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gVGhlIGZvbGxvd2luZyBtYWNyb3MgYW5kIHV0aWxpdGll
cyBhcmUgZm9yIEdvb2dsZSBUZXN0J3MgSU5URVJOQUwKLS8vIHVzZSBvbmx5LiAgQ29kZSBvdXRz
aWRlIEdvb2dsZSBUZXN0IE1VU1QgTk9UIFVTRSBUSEVNIERJUkVDVExZLgotLy8KLS8vIE1hY3Jv
cyBmb3IgYmFzaWMgQysrIGNvZGluZzoKLS8vICAgR1RFU1RfQU1CSUdVT1VTX0VMU0VfQkxPQ0tF
Ul8gLSBmb3IgZGlzYWJsaW5nIGEgZ2NjIHdhcm5pbmcuCi0vLyAgIEdURVNUX0FUVFJJQlVURV9V
TlVTRURfICAtIGRlY2xhcmVzIHRoYXQgYSBjbGFzcycgaW5zdGFuY2VzIG9yIGEKLS8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZG9uJ3QgaGF2ZSB0byBiZSB1c2VkLgot
Ly8gICBHVEVTVF9ESVNBTExPV19BU1NJR05fICAgLSBkaXNhYmxlcyBvcGVyYXRvcj0uCi0vLyAg
IEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8gLSBkaXNhYmxlcyBjb3B5IGN0b3IgYW5k
IG9wZXJhdG9yPS4KLS8vICAgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXyAgIC0gZGVjbGFyZXMgdGhh
dCBhIGZ1bmN0aW9uJ3MgcmVzdWx0IG11c3QgYmUgdXNlZC4KLS8vICAgR1RFU1RfSU5URU5USU9O
QUxfQ09OU1RfQ09ORF9QVVNIXyAtIHN0YXJ0IGNvZGUgc2VjdGlvbiB3aGVyZSBNU1ZDIEM0MTI3
IGlzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2Vk
IChjb25zdGFudCBjb25kaXRpb25hbCkuCi0vLyAgIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NP
TkRfUE9QXyAgLSBmaW5pc2ggY29kZSBzZWN0aW9uIHdoZXJlIE1TVkMgQzQxMjcKLS8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHN1cHByZXNzZWQuCi0vLwotLy8g
QysrMTEgZmVhdHVyZSB3cmFwcGVyczoKLS8vCi0vLyAgIHRlc3Rpbmc6OmludGVybmFsOjptb3Zl
ICAtIHBvcnRhYmlsaXR5IHdyYXBwZXIgZm9yIHN0ZDo6bW92ZS4KLS8vCi0vLyBTeW5jaHJvbml6
YXRpb246Ci0vLyAgIE11dGV4LCBNdXRleExvY2ssIFRocmVhZExvY2FsLCBHZXRUaHJlYWRDb3Vu
dCgpCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN5bmNocm9uaXphdGlvbiBwcmlt
aXRpdmVzLgotLy8KLS8vIFRlbXBsYXRlIG1ldGEgcHJvZ3JhbW1pbmc6Ci0vLyAgIGlzX3BvaW50
ZXIgICAgIC0gYXMgaW4gVFIxOyBuZWVkZWQgb24gU3ltYmlhbiBhbmQgSUJNIFhMIEMvQysrIG9u
bHkuCi0vLyAgIEl0ZXJhdG9yVHJhaXRzIC0gcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzdGQ6
Oml0ZXJhdG9yX3RyYWl0cywgd2hpY2gKLS8vICAgICAgICAgICAgICAgICAgICBpcyBub3QgYXZh
aWxhYmxlIGluIGxpYkNzdGQgd2hlbiBjb21waWxlZCB3aXRoIFN1biBDKysuCi0vLwotLy8gU21h
cnQgcG9pbnRlcnM6Ci0vLyAgIHNjb3BlZF9wdHIgICAgIC0gYXMgaW4gVFIyLgotLy8KLS8vIFJl
Z3VsYXIgZXhwcmVzc2lvbnM6Ci0vLyAgIFJFICAgICAgICAgICAgIC0gYSBzaW1wbGUgcmVndWxh
ciBleHByZXNzaW9uIGNsYXNzIHVzaW5nIHRoZSBQT1NJWAotLy8gICAgICAgICAgICAgICAgICAg
IEV4dGVuZGVkIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXggb24gVU5JWC1saWtlCi0vLyAgICAg
ICAgICAgICAgICAgICAgcGxhdGZvcm1zLCBvciBhIHJlZHVjZWQgcmVndWxhciBleGNlcHRpb24g
c3ludGF4IG9uCi0vLyAgICAgICAgICAgICAgICAgICAgb3RoZXIgcGxhdGZvcm1zLCBpbmNsdWRp
bmcgV2luZG93cy4KLS8vCi0vLyBMb2dnaW5nOgotLy8gICBHVEVTVF9MT0dfKCkgICAtIGxvZ3Mg
bWVzc2FnZXMgYXQgdGhlIHNwZWNpZmllZCBzZXZlcml0eSBsZXZlbC4KLS8vICAgTG9nVG9TdGRl
cnIoKSAgLSBkaXJlY3RzIGFsbCBsb2cgbWVzc2FnZXMgdG8gc3RkZXJyLgotLy8gICBGbHVzaElu
Zm9Mb2coKSAtIGZsdXNoZXMgaW5mb3JtYXRpb25hbCBsb2cgbWVzc2FnZXMuCi0vLwotLy8gU3Rk
b3V0IGFuZCBzdGRlcnIgY2FwdHVyaW5nOgotLy8gICBDYXB0dXJlU3Rkb3V0KCkgICAgIC0gc3Rh
cnRzIGNhcHR1cmluZyBzdGRvdXQuCi0vLyAgIEdldENhcHR1cmVkU3Rkb3V0KCkgLSBzdG9wcyBj
YXB0dXJpbmcgc3Rkb3V0IGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZAotLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nLgotLy8gICBDYXB0dXJlU3RkZXJyKCkgICAgIC0gc3RhcnRzIGNh
cHR1cmluZyBzdGRlcnIuCi0vLyAgIEdldENhcHR1cmVkU3RkZXJyKCkgLSBzdG9wcyBjYXB0dXJp
bmcgc3RkZXJyIGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZAotLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nLgotLy8KLS8vIEludGVnZXIgdHlwZXM6Ci0vLyAgIFR5cGVXaXRoU2l6ZSAg
IC0gbWFwcyBhbiBpbnRlZ2VyIHRvIGEgaW50IHR5cGUuCi0vLyAgIEludDMyLCBVSW50MzIsIElu
dDY0LCBVSW50NjQsIFRpbWVJbk1pbGxpcwotLy8gICAgICAgICAgICAgICAgICAtIGludGVnZXJz
IG9mIGtub3duIHNpemVzLgotLy8gICBCaWdnZXN0SW50ICAgICAtIHRoZSBiaWdnZXN0IHNpZ25l
ZCBpbnRlZ2VyIHR5cGUuCi0vLwotLy8gQ29tbWFuZC1saW5lIHV0aWxpdGllczoKLS8vICAgR1RF
U1RfREVDTEFSRV8qKCkgIC0gZGVjbGFyZXMgYSBmbGFnLgotLy8gICBHVEVTVF9ERUZJTkVfKigp
ICAgLSBkZWZpbmVzIGEgZmxhZy4KLS8vICAgR2V0SW5qZWN0YWJsZUFyZ3ZzKCkgLSByZXR1cm5z
IHRoZSBjb21tYW5kIGxpbmUgYXMgYSB2ZWN0b3Igb2Ygc3RyaW5ncy4KLS8vCi0vLyBFbnZpcm9u
bWVudCB2YXJpYWJsZSB1dGlsaXRpZXM6Ci0vLyAgIEdldEVudigpICAgICAgICAgICAgIC0gZ2V0
cyB0aGUgdmFsdWUgb2YgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCi0vLyAgIEJvb2xGcm9tR1Rl
c3RFbnYoKSAgIC0gcGFyc2VzIGEgYm9vbCBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLS8vICAgSW50
MzJGcm9tR1Rlc3RFbnYoKSAgLSBwYXJzZXMgYW4gSW50MzIgZW52aXJvbm1lbnQgdmFyaWFibGUu
Ci0vLyAgIFN0cmluZ0Zyb21HVGVzdEVudigpIC0gcGFyc2VzIGEgc3RyaW5nIGVudmlyb25tZW50
IHZhcmlhYmxlLgotCi0jaW5jbHVkZSA8Y3R5cGUuaD4gICAvLyBmb3IgaXNzcGFjZSwgZXRjCi0j
aW5jbHVkZSA8c3RkZGVmLmg+ICAvLyBmb3IgcHRyZGlmZl90Ci0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpZm5kZWYgX1dJTjMy
X1dDRQotIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSMgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNl
bmRpZiAgLy8gIV9XSU4zMl9XQ0UKLQotI2lmIGRlZmluZWQgX19BUFBMRV9fCi0jIGluY2x1ZGUg
PEF2YWlsYWJpbGl0eU1hY3Jvcy5oPgotIyBpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4K
LSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8aW9z
dHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzc3RyZWFtPiAgLy8gTk9MSU5UCi0jaW5jbHVk
ZSA8c3RyaW5nPiAgLy8gTk9MSU5UCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDx2ZWN0
b3I+ICAvLyBOT0xJTlQKLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQtYXJj
aC5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2N1c3RvbS9ndGVzdC1wb3J0LmgiCi0KLSNp
ZiAhZGVmaW5lZChHVEVTVF9ERVZfRU1BSUxfKQotIyBkZWZpbmUgR1RFU1RfREVWX0VNQUlMXyAi
Z29vZ2xldGVzdGZyYW1ld29ya0BAZ29vZ2xlZ3JvdXBzLmNvbSIKLSMgZGVmaW5lIEdURVNUX0ZM
QUdfUFJFRklYXyAiZ3Rlc3RfIgotIyBkZWZpbmUgR1RFU1RfRkxBR19QUkVGSVhfREFTSF8gImd0
ZXN0LSIKLSMgZGVmaW5lIEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiR1RFU1RfIgotIyBkZWZp
bmUgR1RFU1RfTkFNRV8gIkdvb2dsZSBUZXN0IgotIyBkZWZpbmUgR1RFU1RfUFJPSkVDVF9VUkxf
ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvIgotI2VuZGlmICAvLyAhZGVm
aW5lZChHVEVTVF9ERVZfRU1BSUxfKQotCi0jaWYgIWRlZmluZWQoR1RFU1RfSU5JVF9HT09HTEVf
VEVTVF9OQU1FXykKLSMgZGVmaW5lIEdURVNUX0lOSVRfR09PR0xFX1RFU1RfTkFNRV8gInRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0IgotI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9JTklUX0dPT0dM
RV9URVNUX05BTUVfKQotCi0vLyBEZXRlcm1pbmVzIHRoZSB2ZXJzaW9uIG9mIGdjYyB0aGF0IGlz
IHVzZWQgdG8gY29tcGlsZSB0aGlzLgotI2lmZGVmIF9fR05VQ19fCi0vLyA0MDMwMiBtZWFucyB2
ZXJzaW9uIDQuMy4yLgotIyBkZWZpbmUgR1RFU1RfR0NDX1ZFUl8gXAotICAgIChfX0dOVUNfXyox
MDAwMCArIF9fR05VQ19NSU5PUl9fKjEwMCArIF9fR05VQ19QQVRDSExFVkVMX18pCi0jZW5kaWYg
IC8vIF9fR05VQ19fCi0KLS8vIE1hY3JvcyBmb3IgZGlzYWJsaW5nIE1pY3Jvc29mdCBWaXN1YWwg
QysrIHdhcm5pbmdzLgotLy8KLS8vICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8o
NDgwMCA0Mzg1KQotLy8gICAvKiBjb2RlIHRoYXQgdHJpZ2dlcnMgd2FybmluZ3MgQzQ4MDAgYW5k
IEM0Mzg1ICovCi0vLyAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQotI2lmIF9N
U0NfVkVSID49IDE1MDAKLSMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hf
KHdhcm5pbmdzKSBcCi0gICAgX19wcmFnbWEod2FybmluZyhwdXNoKSkgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgX19wcmFnbWEod2FybmluZyhkaXNhYmxlOiB3YXJuaW5ncykpCi0jIGRl
ZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkgICAgICAgICAgXAotICAgIF9f
cHJhZ21hKHdhcm5pbmcocG9wKSkKLSNlbHNlCi0vLyBPbGRlciB2ZXJzaW9ucyBvZiBNU1ZDIGRv
bid0IGhhdmUgX19wcmFnbWEuCi0jIGRlZmluZSBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19Q
VVNIXyh3YXJuaW5ncykKLSMgZGVmaW5lIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8o
KQotI2VuZGlmCi0KLSNpZm5kZWYgR1RFU1RfTEFOR19DWFgxMQotLy8gZ2NjIGFuZCBjbGFuZyBk
ZWZpbmUgX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18gd2hlbgotLy8gLXN0ZD17YyxnbnV9Kyt7
MHgsMTF9IGlzIHBhc3NlZC4gIFRoZSBDKysxMSBzdGFuZGFyZCBzcGVjaWZpZXMgYQotLy8gdmFs
dWUgZm9yIF9fY3BsdXNwbHVzLCBhbmQgcmVjZW50IHZlcnNpb25zIG9mIGNsYW5nLCBnY2MsIGFu
ZAotLy8gcHJvYmFibHkgb3RoZXIgY29tcGlsZXJzIHNldCB0aGF0IHRvbyBpbiBDKysxMSBtb2Rl
LgotIyBpZiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXyB8fCBfX2NwbHVzcGx1cyA+PSAyMDEx
MDNMCi0vLyBDb21waWxpbmcgaW4gYXQgbGVhc3QgQysrMTEgbW9kZS4KLSMgIGRlZmluZSBHVEVT
VF9MQU5HX0NYWDExIDEKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0xBTkdfQ1hYMTEgMAotIyBl
bmRpZgotI2VuZGlmCi0KLS8vIERpc3RpbmN0IGZyb20gQysrMTEgbGFuZ3VhZ2Ugc3VwcG9ydCwg
c29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgcHJvdmlkZQotLy8gcHJvcGVyIEMrKzExIGxpYnJhcnkg
c3VwcG9ydC4gTm90YWJseSwgaXQncyBwb3NzaWJsZSB0byBidWlsZCBpbgotLy8gQysrMTEgbW9k
ZSB3aGVuIHRhcmdldGluZyBNYWMgT1MgWCAxMC42LCB3aGljaCBoYXMgYW4gb2xkIGxpYnN0ZGMr
KwotLy8gd2l0aCBubyBDKysxMSBzdXBwb3J0LgotLy8KLS8vIGxpYnN0ZGMrKyBoYXMgc3VmZmlj
aWVudCBDKysxMSBzdXBwb3J0IGFzIG9mIEdDQyA0LjYuMCwgX19HTElCQ1hYX18KLS8vIDIwMTEw
MzI1LCBidXQgbWFpbnRlbmFuY2UgcmVsZWFzZXMgaW4gdGhlIDQuNCBhbmQgNC41IHNlcmllcyBm
b2xsb3dlZAotLy8gdGhpcyBkYXRlLCBzbyBjaGVjayBmb3IgdGhvc2UgdmVyc2lvbnMgYnkgdGhl
aXIgZGF0ZSBzdGFtcHMuCi0vLyBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGlic3Rk
YysrL21hbnVhbC9hYmkuaHRtbCNhYmkudmVyc2lvbmluZwotI2lmIEdURVNUX0xBTkdfQ1hYMTEg
JiYgXAotICAgICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKCBcCi0gICAgICAgIF9fR0xJQkNY
WF9fID49IDIwMTEwMzI1dWwgJiYgIC8qIEdDQyA+PSA0LjYuMCAqLyBcCi0gICAgICAgIC8qIEJs
YWNrbGlzdCBvZiBwYXRjaCByZWxlYXNlcyBvZiBvbGRlciBicmFuY2hlczogKi8gXAotICAgICAg
ICBfX0dMSUJDWFhfXyAhPSAyMDExMDQxNnVsICYmICAvKiBHQ0MgNC40LjYgKi8gXAotICAgICAg
ICBfX0dMSUJDWFhfXyAhPSAyMDEyMDMxM3VsICYmICAvKiBHQ0MgNC40LjcgKi8gXAotICAgICAg
ICBfX0dMSUJDWFhfXyAhPSAyMDExMDQyOHVsICYmICAvKiBHQ0MgNC41LjMgKi8gXAotICAgICAg
ICBfX0dMSUJDWFhfXyAhPSAyMDEyMDcwMnVsKSkgICAvKiBHQ0MgNC41LjQgKi8KLSMgZGVmaW5l
IEdURVNUX1NURExJQl9DWFgxMSAxCi0jZW5kaWYKLQotLy8gT25seSB1c2UgQysrMTEgbGlicmFy
eSBmZWF0dXJlcyBpZiB0aGUgbGlicmFyeSBwcm92aWRlcyB0aGVtLgotI2lmIEdURVNUX1NURExJ
Ql9DWFgxMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9CRUdJTl9BTkRfRU5EXyAxCi0jIGRlZmlu
ZSBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9G
VU5DVElPTl8gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9JTklUSUFMSVpFUl9MSVNUXyAxCi0j
IGRlZmluZSBHVEVTVF9IQVNfU1REX01PVkVfIDEKLSMgZGVmaW5lIEdURVNUX0hBU19TVERfU0hB
UkVEX1BUUl8gMQotIyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UWVBFX1RSQUlUU18gMQotIyBkZWZp
bmUgR1RFU1RfSEFTX1NURF9VTklRVUVfUFRSXyAxCi0jZW5kaWYKLQotLy8gQysrMTEgc3BlY2lm
aWVzIHRoYXQgPHR1cGxlPiBwcm92aWRlcyBzdGQ6OnR1cGxlLgotLy8gU29tZSBwbGF0Zm9ybXMg
c3RpbGwgbWlnaHQgbm90IGhhdmUgaXQsIGhvd2V2ZXIuCi0jaWYgR1RFU1RfTEFOR19DWFgxMQot
IyBkZWZpbmUgR1RFU1RfSEFTX1NURF9UVVBMRV8gMQotIyBpZiBkZWZpbmVkKF9fY2xhbmdfXykK
LS8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9jbGFuZy5sbHZtLm9yZy9kb2NzL0xhbmd1YWdlRXh0ZW5z
aW9ucy5odG1sI19faGFzX2luY2x1ZGUKLSMgIGlmIGRlZmluZWQoX19oYXNfaW5jbHVkZSkgJiYg
IV9faGFzX2luY2x1ZGUoPHR1cGxlPikKLSMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXwot
IyAgZW5kaWYKLSMgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotLy8gSW5zcGlyZWQgYnkgYm9vc3Qv
Y29uZmlnL3N0ZGxpYi9kaW5rdW13YXJlLmhwcAotIyAgaWYgZGVmaW5lZChfQ1BQTElCX1ZFUikg
JiYgX0NQUExJQl9WRVIgPCA1MjAKLSMgICB1bmRlZiBHVEVTVF9IQVNfU1REX1RVUExFXwotIyAg
ZW5kaWYKLSMgZWxpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKQotLy8gSW5zcGlyZWQgYnkgYm9vc3Qv
Y29uZmlnL3N0ZGxpYi9saWJzdGRjcHAzLmhwcCwKLS8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9nY2Mt
NC4yL2NoYW5nZXMuaHRtbCBhbmQKLS8vIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2xp
YnN0ZGMrKy9tYW51YWwvYmswMXB0MDFjaDAxLmh0bWwjbWFudWFsLmludHJvLnN0YXR1cy5zdGFu
ZGFyZC4yMDB4Ci0jICBpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVD
X01JTk9SX18gPCAyKQotIyAgIHVuZGVmIEdURVNUX0hBU19TVERfVFVQTEVfCi0jICBlbmRpZgot
IyBlbmRpZgotI2VuZGlmCi0KLS8vIEJyaW5ncyBpbiBkZWZpbml0aW9ucyBmb3IgZnVuY3Rpb25z
IHVzZWQgaW4gdGhlIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeAotLy8gbmFtZXNwYWNlIChyZWFk
LCB3cml0ZSwgY2xvc2UsIGNoZGlyLCBpc2F0dHksIHN0YXQpLiBXZSBkbyBub3QgY3VycmVudGx5
Ci0vLyB1c2UgdGhlbSBvbiBXaW5kb3dzIE1vYmlsZS4KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0j
IGlmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotIyAgaW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jICBp
bmNsdWRlIDxpby5oPgotIyBlbmRpZgotLy8gSW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGlu
Y2x1ZGUgPHdpbmRvd3MuaD4sIHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9uCi0jaWYgR1RFU1RfT1Nf
V0lORE9XU19NSU5HVyAmJiAhZGVmaW5lZChfX01JTkdXNjRfVkVSU0lPTl9NQUpPUikKLS8vIE1p
bkdXIGRlZmluZWQgX0NSSVRJQ0FMX1NFQ1RJT04gYW5kIF9SVExfQ1JJVElDQUxfU0VDVElPTiBh
cyB0d28KLS8vIHNlcGFyYXRlIChlcXVpdmFsZW50KSBzdHJ1Y3RzLCBpbnN0ZWFkIG9mIHVzaW5n
IHR5cGVkZWYKLXR5cGVkZWYgc3RydWN0IF9DUklUSUNBTF9TRUNUSU9OIEdURVNUX0NSSVRJQ0FM
X1NFQ1RJT047Ci0jZWxzZQotLy8gQXNzdW1lIENSSVRJQ0FMX1NFQ1RJT04gaXMgYSB0eXBlZGVm
IG9mIF9SVExfQ1JJVElDQUxfU0VDVElPTi4KLS8vIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmll
ZCBieQotLy8gV2luZG93c1R5cGVzVGVzdC5DUklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FM
X1NFQ1RJT04uCi10eXBlZGVmIHN0cnVjdCBfUlRMX0NSSVRJQ0FMX1NFQ1RJT04gR1RFU1RfQ1JJ
VElDQUxfU0VDVElPTjsKLSNlbmRpZgotI2Vsc2UKLS8vIFRoaXMgYXNzdW1lcyB0aGF0IG5vbi1X
aW5kb3dzIE9TZXMgcHJvdmlkZSB1bmlzdGQuaC4gRm9yIE9TZXMgd2hlcmUgdGhpcwotLy8gaXMg
bm90IHRoZSBjYXNlLCB3ZSBuZWVkIHRvIGluY2x1ZGUgaGVhZGVycyB0aGF0IHByb3ZpZGUgdGhl
IGZ1bmN0aW9ucwotLy8gbWVudGlvbmVkIGFib3ZlLgotIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSMg
aW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSNpZiBH
VEVTVF9PU19MSU5VWF9BTkRST0lECi0vLyBVc2VkIHRvIGRlZmluZSBfX0FORFJPSURfQVBJX18g
bWF0Y2hpbmcgdGhlIHRhcmdldCBOREsgQVBJIGxldmVsLgotIyAgaW5jbHVkZSA8YW5kcm9pZC9h
cGktbGV2ZWwuaD4gIC8vIE5PTElOVAotI2VuZGlmCi0KLS8vIERlZmluZXMgdGhpcyB0byB0cnVl
IGlmZiBHb29nbGUgVGVzdCBjYW4gdXNlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi0jaWZu
ZGVmIEdURVNUX0hBU19QT1NJWF9SRQotIyBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lECi0vLyBP
biBBbmRyb2lkLCA8cmVnZXguaD4gaXMgb25seSBhdmFpbGFibGUgc3RhcnRpbmcgd2l0aCBHaW5n
ZXJicmVhZC4KLSMgIGRlZmluZSBHVEVTVF9IQVNfUE9TSVhfUkUgKF9fQU5EUk9JRF9BUElfXyA+
PSA5KQotIyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfSEFTX1BPU0lYX1JFICghR1RFU1RfT1NfV0lO
RE9XUykKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgR1RFU1RfVVNFU19QQ1JFCi0vLyBUaGUgYXBw
cm9wcmlhdGUgaGVhZGVycyBoYXZlIGFscmVhZHkgYmVlbiBpbmNsdWRlZC4KLQotI2VsaWYgR1RF
U1RfSEFTX1BPU0lYX1JFCi0KLS8vIE9uIHNvbWUgcGxhdGZvcm1zLCA8cmVnZXguaD4gbmVlZHMg
c29tZW9uZSB0byBkZWZpbmUgc2l6ZV90LCBhbmQKLS8vIHdvbid0IGNvbXBpbGUgb3RoZXJ3aXNl
LiAgV2UgY2FuICNpbmNsdWRlIGl0IGhlcmUgYXMgd2UgYWxyZWFkeQotLy8gaW5jbHVkZWQgPHN0
ZGxpYi5oPiwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBkZWZpbmUgc2l6ZV90IHRocm91Z2gKLS8v
IDxzdGRkZWYuaD4uCi0jIGluY2x1ZGUgPHJlZ2V4Lmg+ICAvLyBOT0xJTlQKLQotIyBkZWZpbmUg
R1RFU1RfVVNFU19QT1NJWF9SRSAxCi0KLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLQotLy8gPHJl
Z2V4Lmg+IGlzIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4gIFVzZSBvdXIgb3duIHNpbXBsZSBy
ZWdleAotLy8gaW1wbGVtZW50YXRpb24gaW5zdGVhZC4KLSMgZGVmaW5lIEdURVNUX1VTRVNfU0lN
UExFX1JFIDEKLQotI2Vsc2UKLQotLy8gPHJlZ2V4Lmg+IG1heSBub3QgYmUgYXZhaWxhYmxlIG9u
IHRoaXMgcGxhdGZvcm0uICBVc2Ugb3VyIG93bgotLy8gc2ltcGxlIHJlZ2V4IGltcGxlbWVudGF0
aW9uIGluc3RlYWQuCi0jIGRlZmluZSBHVEVTVF9VU0VTX1NJTVBMRV9SRSAxCi0KLSNlbmRpZiAg
Ly8gR1RFU1RfVVNFU19QQ1JFCi0KLSNpZm5kZWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIFRo
ZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCwgc28g
d2UgbmVlZAotLy8gdG8gZmlndXJlIGl0IG91dC4KLSMgaWYgZGVmaW5lZChfTVNDX1ZFUikgfHwg
ZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vLyBNU1ZDJ3MgYW5kIEMrK0J1aWxkZXIncyBpbXBsZW1l
bnRhdGlvbnMgb2YgdGhlIFNUTCB1c2UgdGhlIF9IQVNfRVhDRVBUSU9OUwotLy8gbWFjcm8gdG8g
ZW5hYmxlIGV4Y2VwdGlvbnMsIHNvIHdlJ2xsIGRvIHRoZSBzYW1lLgotLy8gQXNzdW1lcyB0aGF0
IGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSMgIGlmbmRlZiBfSEFTX0VYQ0VQ
VElPTlMKLSMgICBkZWZpbmUgX0hBU19FWENFUFRJT05TIDEKLSMgIGVuZGlmICAvLyBfSEFTX0VY
Q0VQVElPTlMKLSMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyBfSEFTX0VYQ0VQVElPTlMK
LSMgZWxpZiBkZWZpbmVkKF9fY2xhbmdfXykKLS8vIGNsYW5nIGRlZmluZXMgX19FWENFUFRJT05T
IGlmZiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGJlZm9yZSBjbGFuZyAyMjA3MTQsCi0vLyBidXQg
aWZmIGNsZWFudXBzIGFyZSBlbmFibGVkIGFmdGVyIHRoYXQuIEluIE9iai1DKysgZmlsZXMsIHRo
ZXJlIGNhbiBiZQotLy8gY2xlYW51cHMgZm9yIE9iakMgZXhjZXB0aW9ucyB3aGljaCBhbHNvIG5l
ZWQgY2xlYW51cHMsIGV2ZW4gaWYgQysrIGV4Y2VwdGlvbnMKLS8vIGFyZSBkaXNhYmxlZC4gY2xh
bmcgaGFzIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpIHdoaWNoIGNoZWNrcyBmb3IgQysr
Ci0vLyBleGNlcHRpb25zIHN0YXJ0aW5nIGF0IGNsYW5nIHIyMDYzNTIsIGJ1dCB3aGljaCBjaGVj
a2VkIGZvciBjbGVhbnVwcyBwcmlvciB0bwotLy8gdGhhdC4gVG8gcmVsaWFibHkgY2hlY2sgZm9y
IEMrKyBleGNlcHRpb24gYXZhaWxhYmlsaXR5IHdpdGggY2xhbmcsIGNoZWNrIGZvcgotLy8gX19F
WENFUFRJT05TICYmIF9faGFzX2ZlYXR1cmUoY3h4X2V4Y2VwdGlvbnMpLgotIyAgZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIChfX0VYQ0VQVElPTlMgJiYgX19oYXNfZmVhdHVyZShjeHhfZXhj
ZXB0aW9ucykpCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19FWENFUFRJT05TCi0vLyBn
Y2MgZGVmaW5lcyBfX0VYQ0VQVElPTlMgdG8gMSBpZmYgZXhjZXB0aW9ucyBhcmUgZW5hYmxlZC4K
LSMgIGRlZmluZSBHVEVTVF9IQVNfRVhDRVBUSU9OUyAxCi0jIGVsaWYgZGVmaW5lZChfX1NVTlBS
T19DQykKLS8vIFN1biBQcm8gQ0Mgc3VwcG9ydHMgZXhjZXB0aW9ucy4gIEhvd2V2ZXIsIHRoZXJl
IGlzIG5vIGNvbXBpbGUtdGltZSB3YXkgb2YKLS8vIGRldGVjdGluZyB3aGV0aGVyIHRoZXkgYXJl
IGVuYWJsZWQgb3Igbm90LiAgVGhlcmVmb3JlLCB3ZSBhc3N1bWUgdGhhdAotLy8gdGhleSBhcmUg
ZW5hYmxlZCB1bmxlc3MgdGhlIHVzZXIgdGVsbHMgdXMgb3RoZXJ3aXNlLgotIyAgZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIDEKLSMgZWxpZiBkZWZpbmVkKF9fSUJNQ1BQX18pICYmIF9fRVhD
RVBUSU9OUwotLy8geGxDIGRlZmluZXMgX19FWENFUFRJT05TIHRvIDEgaWZmIGV4Y2VwdGlvbnMg
YXJlIGVuYWJsZWQuCi0jICBkZWZpbmUgR1RFU1RfSEFTX0VYQ0VQVElPTlMgMQotIyBlbGlmIGRl
ZmluZWQoX19IUF9hQ0MpCi0vLyBFeGNlcHRpb24gaGFuZGxpbmcgaXMgaW4gZWZmZWN0IGJ5IGRl
ZmF1bHQgaW4gSFAgYUNDIGNvbXBpbGVyLiBJdCBoYXMgdG8KLS8vIGJlIHR1cm5lZCBvZiBieSAr
bm9laCBjb21waWxlciBvcHRpb24gaWYgZGVzaXJlZC4KLSMgIGRlZmluZSBHVEVTVF9IQVNfRVhD
RVBUSU9OUyAxCi0jIGVsc2UKLS8vIEZvciBvdGhlciBjb21waWxlcnMsIHdlIGFzc3VtZSBleGNl
cHRpb25zIGFyZSBkaXNhYmxlZCB0byBiZQotLy8gY29uc2VydmF0aXZlLgotIyAgZGVmaW5lIEdU
RVNUX0hBU19FWENFUFRJT05TIDAKLSMgZW5kaWYgIC8vIGRlZmluZWQoX01TQ19WRVIpIHx8IGRl
ZmluZWQoX19CT1JMQU5EQ19fKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0j
aWYgIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCi0vLyBFdmVuIHRob3VnaCB3ZSBkb24n
dCB1c2UgdGhpcyBtYWNybyBhbnkgbG9uZ2VyLCB3ZSBrZWVwIGl0IGluIGNhc2UKLS8vIHNvbWUg
Y2xpZW50cyBzdGlsbCBkZXBlbmQgb24gaXQuCi0jIGRlZmluZSBHVEVTVF9IQVNfU1REX1NUUklO
RyAxCi0jZWxpZiAhR1RFU1RfSEFTX1NURF9TVFJJTkcKLS8vIFRoZSB1c2VyIHRvbGQgdXMgdGhh
dCA6OnN0ZDo6c3RyaW5nIGlzbid0IGF2YWlsYWJsZS4KLSMgZXJyb3IgIkdvb2dsZSBUZXN0IGNh
bm5vdCBiZSB1c2VkIHdoZXJlIDo6c3RkOjpzdHJpbmcgaXNuJ3QgYXZhaWxhYmxlLiIKLSNlbmRp
ZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX1NURF9TVFJJTkcpCi0KLSNpZm5kZWYgR1RFU1RfSEFT
X0dMT0JBTF9TVFJJTkcKLS8vIFRoZSB1c2VyIGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdHJp
bmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCi0vLyB0byBmaWd1cmUgaXQgb3V0LgotCi0jIGRl
ZmluZSBHVEVTVF9IQVNfR0xPQkFMX1NUUklORyAwCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dM
T0JBTF9TVFJJTkcKLQotI2lmbmRlZiBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLS8vIFRoZSB1c2Vy
IGRpZG4ndCB0ZWxsIHVzIHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3
ZSBuZWVkCi0vLyB0byBmaWd1cmUgaXQgb3V0LgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHVz
ZXMgYXV0b2NvbmYgdG8gZGV0ZWN0IHdoZXRoZXIgOjpzdGQ6OndzdHJpbmcKLS8vICAgaXMgYXZh
aWxhYmxlLgotCi0vLyBDeWd3aW4gMS43IGFuZCBiZWxvdyBkb2Vzbid0IHN1cHBvcnQgOjpzdGQ6
OndzdHJpbmcuCi0vLyBTb2xhcmlzJyBsaWJjKysgZG9lc24ndCBzdXBwb3J0IGl0IGVpdGhlci4g
IEFuZHJvaWQgaGFzCi0vLyBubyBzdXBwb3J0IGZvciBpdCBhdCBsZWFzdCBhcyByZWNlbnQgYXMg
RnJveW8gKDIuMikuCi0jIGRlZmluZSBHVEVTVF9IQVNfU1REX1dTVFJJTkcgXAotICAgICghKEdU
RVNUX09TX0xJTlVYX0FORFJPSUQgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NPTEFS
SVMpKQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0jaWZuZGVmIEdURVNU
X0hBU19HTE9CQUxfV1NUUklORwotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hldGhlciA6
OndzdHJpbmcgaXMgYXZhaWxhYmxlLCBzbyB3ZSBuZWVkCi0vLyB0byBmaWd1cmUgaXQgb3V0Lgot
IyBkZWZpbmUgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HIFwKLSAgICAoR1RFU1RfSEFTX1NURF9X
U1RSSU5HICYmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5HKQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIFJUVEkgaXMgYXZhaWxhYmxl
LgotI2lmbmRlZiBHVEVTVF9IQVNfUlRUSQotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMgd2hl
dGhlciBSVFRJIGlzIGVuYWJsZWQsIHNvIHdlIG5lZWQgdG8KLS8vIGZpZ3VyZSBpdCBvdXQuCi0K
LSMgaWZkZWYgX01TQ19WRVIKLQotIyAgaWZkZWYgX0NQUFJUVEkgIC8vIE1TVkMgZGVmaW5lcyB0
aGlzIG1hY3JvIGlmZiBSVFRJIGlzIGVuYWJsZWQuCi0jICAgZGVmaW5lIEdURVNUX0hBU19SVFRJ
IDEKLSMgIGVsc2UKLSMgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMAotIyAgZW5kaWYKLQotLy8g
U3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDQuMy4yLCBnY2MgZGVmaW5lcyBfX0dYWF9SVFRJIGlmZiBS
VFRJIGlzIGVuYWJsZWQuCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19W
RVJfID49IDQwMzAyKQotCi0jICBpZmRlZiBfX0dYWF9SVFRJCi0vLyBXaGVuIGJ1aWxkaW5nIGFn
YWluc3QgU1RMcG9ydCB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgd2l0aAotLy8gLWZydHRpIC1m
bm8tZXhjZXB0aW9ucywgdGhlIGJ1aWxkIGZhaWxzIGF0IGxpbmsgdGltZSB3aXRoIHVuZGVmaW5l
ZAotLy8gcmVmZXJlbmNlcyB0byBfX2N4YV9iYWRfdHlwZWlkLiBOb3RlIHN1cmUgaWYgU1RMIG9y
IHRvb2xjaGFpbiBidWcsCi0vLyBzbyBkaXNhYmxlIFJUVEkgd2hlbiBkZXRlY3RlZC4KLSMgICBp
ZiBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIGRlZmluZWQoX1NUTFBPUlRfTUFKT1IpICYmIFwK
LSAgICAgICAhZGVmaW5lZChfX0VYQ0VQVElPTlMpCi0jICAgIGRlZmluZSBHVEVTVF9IQVNfUlRU
SSAwCi0jICAgZWxzZQotIyAgICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotIyAgIGVuZGlmICAv
LyBHVEVTVF9PU19MSU5VWF9BTkRST0lEICYmIF9fU1RMUE9SVF9NQUpPUiAmJiAhX19FWENFUFRJ
T05TCi0jICBlbHNlCi0jICAgZGVmaW5lIEdURVNUX0hBU19SVFRJIDAKLSMgIGVuZGlmICAvLyBf
X0dYWF9SVFRJCi0KLS8vIENsYW5nIGRlZmluZXMgX19HWFhfUlRUSSBzdGFydGluZyB3aXRoIHZl
cnNpb24gMy4wLCBidXQgaXRzIG1hbnVhbCByZWNvbW1lbmRzCi0vLyB1c2luZyBoYXNfZmVhdHVy
ZSBpbnN0ZWFkLiBoYXNfZmVhdHVyZShjeHhfcnR0aSkgaXMgc3VwcG9ydGVkIHNpbmNlIDIuNywg
dGhlCi0vLyBmaXJzdCB2ZXJzaW9uIHdpdGggQysrIHN1cHBvcnQuCi0jIGVsaWYgZGVmaW5lZChf
X2NsYW5nX18pCi0KLSMgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSBfX2hhc19mZWF0dXJlKGN4eF9y
dHRpKQotCi0vLyBTdGFydGluZyB3aXRoIHZlcnNpb24gOS4wIElCTSBWaXN1YWwgQWdlIGRlZmlu
ZXMgX19SVFRJX0FMTF9fIHRvIDEgaWYKLS8vIGJvdGggdGhlIHR5cGVpZCBhbmQgZHluYW1pY19j
YXN0IGZlYXR1cmVzIGFyZSBwcmVzZW50LgotIyBlbGlmIGRlZmluZWQoX19JQk1DUFBfXykgJiYg
KF9fSUJNQ1BQX18gPj0gOTAwKQotCi0jICBpZmRlZiBfX1JUVElfQUxMX18KLSMgICBkZWZpbmUg
R1RFU1RfSEFTX1JUVEkgMQotIyAgZWxzZQotIyAgIGRlZmluZSBHVEVTVF9IQVNfUlRUSSAwCi0j
ICBlbmRpZgotCi0jIGVsc2UKLQotLy8gRm9yIGFsbCBvdGhlciBjb21waWxlcnMsIHdlIGFzc3Vt
ZSBSVFRJIGlzIGVuYWJsZWQuCi0jICBkZWZpbmUgR1RFU1RfSEFTX1JUVEkgMQotCi0jIGVuZGlm
ICAvLyBfTVNDX1ZFUgotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCi0KLS8vIEl0J3MgdGhp
cyBoZWFkZXIncyByZXNwb25zaWJpbGl0eSB0byAjaW5jbHVkZSA8dHlwZWluZm8+IHdoZW4gUlRU
SQotLy8gaXMgZW5hYmxlZC4KLSNpZiBHVEVTVF9IQVNfUlRUSQotIyBpbmNsdWRlIDx0eXBlaW5m
bz4KLSNlbmRpZgotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgR29vZ2xlIFRlc3QgY2FuIHVzZSB0
aGUgcHRocmVhZHMgbGlicmFyeS4KLSNpZm5kZWYgR1RFU1RfSEFTX1BUSFJFQUQKLS8vIFRoZSB1
c2VyIGRpZG4ndCB0ZWxsIHVzIGV4cGxpY2l0bHksIHNvIHdlIG1ha2UgcmVhc29uYWJsZSBhc3N1
bXB0aW9ucyBhYm91dAotLy8gd2hpY2ggcGxhdGZvcm1zIGhhdmUgcHRocmVhZHMgc3VwcG9ydC4K
LS8vCi0vLyBUbyBkaXNhYmxlIHRocmVhZGluZyBzdXBwb3J0IGluIEdvb2dsZSBUZXN0LCBhZGQg
LURHVEVTVF9IQVNfUFRIUkVBRD0wCi0vLyB0byB5b3VyIGNvbXBpbGVyIGZsYWdzLgotIyBkZWZp
bmUgR1RFU1RfSEFTX1BUSFJFQUQgKEdURVNUX09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBH
VEVTVF9PU19IUFVYIFwKLSAgICB8fCBHVEVTVF9PU19RTlggfHwgR1RFU1RfT1NfRlJFRUJTRCB8
fCBHVEVTVF9PU19OQUNMKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAotCi0jaWYgR1RF
U1RfSEFTX1BUSFJFQUQKLS8vIGd0ZXN0LXBvcnQuaCBndWFyYW50ZWVzIHRvICNpbmNsdWRlIDxw
dGhyZWFkLmg+IHdoZW4gR1RFU1RfSEFTX1BUSFJFQUQgaXMKLS8vIHRydWUuCi0jIGluY2x1ZGUg
PHB0aHJlYWQuaD4gIC8vIE5PTElOVAotCi0vLyBGb3IgdGltZXNwZWMgYW5kIG5hbm9zbGVlcCwg
dXNlZCBiZWxvdy4KLSMgaW5jbHVkZSA8dGltZS5oPiAgLy8gTk9MSU5UCi0jZW5kaWYKLQotLy8g
RGV0ZXJtaW5lcyBpZiBoYXNoX21hcC9oYXNoX3NldCBhcmUgYXZhaWxhYmxlLgotLy8gT25seSB1
c2VkIGZvciB0ZXN0aW5nIGFnYWluc3QgdGhvc2UgY29udGFpbmVycy4KLSNpZiAhZGVmaW5lZChH
VEVTVF9IQVNfSEFTSF9NQVBfKQotIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIg
PCAxOTAwKQotIyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX01BUF8gMSAgLy8gSW5kaWNhdGVzIHRo
YXQgaGFzaF9tYXAgaXMgYXZhaWxhYmxlLgotIyAgZGVmaW5lIEdURVNUX0hBU19IQVNIX1NFVF8g
MSAgLy8gSW5kaWNhdGVzIHRoYXQgaGFzaF9zZXQgaXMgYXZhaWxhYmxlLgotIyBlbmRpZiAgLy8g
X01TQ19WRVIKLSNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfSEFTX0hBU0hfTUFQXykKLQotLy8g
RGV0ZXJtaW5lcyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhbiB1c2UgdHIxL3R1cGxlLiAgWW91IGNh
biBkZWZpbmUKLS8vIHRoaXMgbWFjcm8gdG8gMCB0byBwcmV2ZW50IEdvb2dsZSBUZXN0IGZyb20g
dXNpbmcgdHVwbGUgKGFueQotLy8gZmVhdHVyZSBkZXBlbmRpbmcgb24gdHVwbGUgd2l0aCBiZSBk
aXNhYmxlZCBpbiB0aGlzIG1vZGUpLgotI2lmbmRlZiBHVEVTVF9IQVNfVFIxX1RVUExFCi0jIGlm
IEdURVNUX09TX0xJTlVYX0FORFJPSUQgJiYgZGVmaW5lZChfU1RMUE9SVF9NQUpPUikKLS8vIFNU
THBvcnQsIHByb3ZpZGVkIHdpdGggdGhlIEFuZHJvaWQgTkRLLCBoYXMgbmVpdGhlciA8dHIxL3R1
cGxlPiBvciA8dHVwbGU+LgotIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMAotIyBlbHNl
Ci0vLyBUaGUgdXNlciBkaWRuJ3QgdGVsbCB1cyBub3QgdG8gZG8gaXQsIHNvIHdlIGFzc3VtZSBp
dCdzIE9LLgotIyAgZGVmaW5lIEdURVNUX0hBU19UUjFfVFVQTEUgMQotIyBlbmRpZgotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfVFIxX1RVUExFCi0KLS8vIERldGVybWluZXMgd2hldGhlciBHb29nbGUg
VGVzdCdzIG93biB0cjEgdHVwbGUgaW1wbGVtZW50YXRpb24KLS8vIHNob3VsZCBiZSB1c2VkLgot
I2lmbmRlZiBHVEVTVF9VU0VfT1dOX1RSMV9UVVBMRQotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwg
dXMsIHNvIHdlIG5lZWQgdG8gZmlndXJlIGl0IG91dC4KLQotLy8gV2UgdXNlIG91ciBvd24gVFIx
IHR1cGxlIGlmIHdlIGFyZW4ndCBzdXJlIHRoZSB1c2VyIGhhcyBhbgotLy8gaW1wbGVtZW50YXRp
b24gb2YgaXQgYWxyZWFkeS4gIEF0IHRoaXMgdGltZSwgbGlic3RkYysrIDQuMC4wKyBhbmQKLS8v
IE1TVkMgMjAxMCBhcmUgdGhlIG9ubHkgbWFpbnN0cmVhbSBzdGFuZGFyZCBsaWJyYXJpZXMgdGhh
dCBjb21lCi0vLyB3aXRoIGEgVFIxIHR1cGxlIGltcGxlbWVudGF0aW9uLiAgTlZJRElBJ3MgQ1VE
QSBOVkNDIGNvbXBpbGVyCi0vLyBwcmV0ZW5kcyB0byBiZSBHQ0MgYnkgZGVmaW5pbmcgX19HTlVD
X18gYW5kIGZyaWVuZHMsIGJ1dCBjYW5ub3QKLS8vIGNvbXBpbGUgR0NDJ3MgdHVwbGUgaW1wbGVt
ZW50YXRpb24uICBNU1ZDIDIwMDggKDkuMCkgcHJvdmlkZXMgVFIxCi0vLyB0dXBsZSBpbiBhIDMy
MyBNQiBGZWF0dXJlIFBhY2sgZG93bmxvYWQsIHdoaWNoIHdlIGNhbm5vdCBhc3N1bWUgdGhlCi0v
LyB1c2VyIGhhcy4gIFFOWCdzIFFDQyBjb21waWxlciBpcyBhIG1vZGlmaWVkIEdDQyBidXQgaXQg
ZG9lc24ndAotLy8gc3VwcG9ydCBUUjEgdHVwbGUuICBsaWJjKysgb25seSBwcm92aWRlcyBzdGQ6
OnR1cGxlLCBpbiBDKysxMSBtb2RlLAotLy8gYW5kIGl0IGNhbiBiZSB1c2VkIHdpdGggc29tZSBj
b21waWxlcnMgdGhhdCBkZWZpbmUgX19HTlVDX18uCi0jIGlmIChkZWZpbmVkKF9fR05VQ19fKSAm
JiAhZGVmaW5lZChfX0NVREFDQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gNDAwMDApIFwKLSAg
ICAgICYmICFHVEVTVF9PU19RTlggJiYgIWRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgfHwgX01T
Q19WRVIgPj0gMTYwMAotIyAgZGVmaW5lIEdURVNUX0VOVl9IQVNfVFIxX1RVUExFXyAxCi0jIGVu
ZGlmCi0KLS8vIEMrKzExIHNwZWNpZmllcyB0aGF0IDx0dXBsZT4gcHJvdmlkZXMgc3RkOjp0dXBs
ZS4gVXNlIHRoYXQgaWYgZ3Rlc3QgaXMgdXNlZAotLy8gaW4gQysrMTEgbW9kZSBhbmQgbGlic3Rk
YysrIGlzbid0IHZlcnkgb2xkIChiaW5hcmllcyB0YXJnZXRpbmcgT1MgWCAxMC42Ci0vLyBjYW4g
YnVpbGQgd2l0aCBjbGFuZyBidXQgbmVlZCB0byB1c2UgZ2NjNC4yJ3MgbGlic3RkYysrKS4KLSMg
aWYgR1RFU1RfTEFOR19DWFgxMSAmJiAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8IF9fR0xJQkNY
WF9fID4gMjAxMTAzMjUpCi0jICBkZWZpbmUgR1RFU1RfRU5WX0hBU19TVERfVFVQTEVfIDEKLSMg
ZW5kaWYKLQotIyBpZiBHVEVTVF9FTlZfSEFTX1RSMV9UVVBMRV8gfHwgR1RFU1RfRU5WX0hBU19T
VERfVFVQTEVfCi0jICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMAotIyBlbHNlCi0j
ICBkZWZpbmUgR1RFU1RfVVNFX09XTl9UUjFfVFVQTEUgMQotIyBlbmRpZgotCi0jZW5kaWYgIC8v
IEdURVNUX1VTRV9PV05fVFIxX1RVUExFCi0KLS8vIFRvIGF2b2lkIGNvbmRpdGlvbmFsIGNvbXBp
bGF0aW9uIGV2ZXJ5d2hlcmUsIHdlIG1ha2UgaXQKLS8vIGd0ZXN0LXBvcnQuaCdzIHJlc3BvbnNp
YmlsaXR5IHRvICNpbmNsdWRlIHRoZSBoZWFkZXIgaW1wbGVtZW50aW5nCi0vLyB0dXBsZS4KLSNp
ZiBHVEVTVF9IQVNfU1REX1RVUExFXwotIyBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21h
OiBleHBvcnQKLSMgZGVmaW5lIEdURVNUX1RVUExFX05BTUVTUEFDRV8gOjpzdGQKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotLy8gV2UgaW5jbHVkZSB0cjE6OnR1cGxlIGV2ZW4g
aWYgc3RkOjp0dXBsZSBpcyBhdmFpbGFibGUgdG8gZGVmaW5lIHByaW50ZXJzIGZvcgotLy8gdGhl
bS4KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCi0jIGlmbmRlZiBHVEVTVF9UVVBMRV9OQU1FU1BB
Q0VfCi0jICBkZWZpbmUgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXyA6OnN0ZDo6dHIxCi0jIGVuZGlm
ICAvLyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfCi0KLSMgaWYgR1RFU1RfVVNFX09XTl9UUjFfVFVQ
TEUKLSMgIGluY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgiICAvLyBJV1lVIHBy
YWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKLSMgZWxpZiBHVEVTVF9FTlZfSEFTX1NURF9UVVBMRV8K
LSMgIGluY2x1ZGUgPHR1cGxlPgotLy8gQysrMTEgcHV0cyBpdHMgdHVwbGUgaW50byB0aGUgOjpz
dGQgbmFtZXNwYWNlIHJhdGhlciB0aGFuCi0vLyA6OnN0ZDo6dHIxLiAgZ3Rlc3QgZXhwZWN0cyB0
dXBsZSB0byBsaXZlIGluIDo6c3RkOjp0cjEsIHNvIHB1dCBpdCB0aGVyZS4KLS8vIFRoaXMgY2F1
c2VzIHVuZGVmaW5lZCBiZWhhdmlvciwgYnV0IHN1cHBvcnRlZCBjb21waWxlcnMgcmVhY3QgaW4K
LS8vIHRoZSB3YXkgd2UgaW50ZW5kLgotbmFtZXNwYWNlIHN0ZCB7Ci1uYW1lc3BhY2UgdHIxIHsK
LXVzaW5nIDo6c3RkOjpnZXQ7Ci11c2luZyA6OnN0ZDo6bWFrZV90dXBsZTsKLXVzaW5nIDo6c3Rk
Ojp0dXBsZTsKLXVzaW5nIDo6c3RkOjp0dXBsZV9lbGVtZW50OwotdXNpbmcgOjpzdGQ6OnR1cGxl
X3NpemU7Ci19Ci19Ci0KLSMgZWxpZiBHVEVTVF9PU19TWU1CSUFOCi0KLS8vIE9uIFN5bWJpYW4s
IEJPT1NUX0hBU19UUjFfVFVQTEUgY2F1c2VzIEJvb3N0J3MgVFIxIHR1cGxlIGxpYnJhcnkgdG8K
LS8vIHVzZSBTVExwb3J0J3MgdHVwbGUgaW1wbGVtZW50YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRl
bHkgZG9lc24ndAotLy8gd29yayBhcyB0aGUgY29weSBvZiBTVExwb3J0IGRpc3RyaWJ1dGVkIHdp
dGggU3ltYmlhbiBpcyBpbmNvbXBsZXRlLgotLy8gQnkgbWFraW5nIHN1cmUgQk9PU1RfSEFTX1RS
MV9UVVBMRSBpcyB1bmRlZmluZWQsIHdlIGZvcmNlIEJvb3N0IHRvCi0vLyB1c2UgaXRzIG93biB0
dXBsZSBpbXBsZW1lbnRhdGlvbi4KLSMgIGlmZGVmIEJPT1NUX0hBU19UUjFfVFVQTEUKLSMgICB1
bmRlZiBCT09TVF9IQVNfVFIxX1RVUExFCi0jICBlbmRpZiAgLy8gQk9PU1RfSEFTX1RSMV9UVVBM
RQotCi0vLyBUaGlzIHByZXZlbnRzIDxib29zdC90cjEvZGV0YWlsL2NvbmZpZy5ocHA+LCB3aGlj
aCBkZWZpbmVzCi0vLyBCT09TVF9IQVNfVFIxX1RVUExFLCBmcm9tIGJlaW5nICNpbmNsdWRlZCBi
eSBCb29zdCdzIDx0dXBsZT4uCi0jICBkZWZpbmUgQk9PU1RfVFIxX0RFVEFJTF9DT05GSUdfSFBQ
X0lOQ0xVREVECi0jICBpbmNsdWRlIDx0dXBsZT4gIC8vIElXWVUgcHJhZ21hOiBleHBvcnQgIC8v
IE5PTElOVAotCi0jIGVsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKEdURVNUX0dDQ19WRVJfID49
IDQwMDAwKQotLy8gR0NDIDQuMCsgaW1wbGVtZW50cyB0cjEvdHVwbGUgaW4gdGhlIDx0cjEvdHVw
bGU+IGhlYWRlci4gIFRoaXMgZG9lcwotLy8gbm90IGNvbmZvcm0gdG8gdGhlIFRSMSBzcGVjLCB3
aGljaCByZXF1aXJlcyB0aGUgaGVhZGVyIHRvIGJlIDx0dXBsZT4uCi0KLSMgIGlmICFHVEVTVF9I
QVNfUlRUSSAmJiBHVEVTVF9HQ0NfVkVSXyA8IDQwMzAyCi0vLyBVbnRpbCB2ZXJzaW9uIDQuMy4y
LCBnY2MgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIDx0cjEvZnVuY3Rpb25hbD4sCi0vLyB3aGljaCBp
cyAjaW5jbHVkZWQgYnkgPHRyMS90dXBsZT4sIHRvIG5vdCBjb21waWxlIHdoZW4gUlRUSSBpcwot
Ly8gZGlzYWJsZWQuICBfVFIxX0ZVTkNUSU9OQUwgaXMgdGhlIGhlYWRlciBndWFyZCBmb3IKLS8v
IDx0cjEvZnVuY3Rpb25hbD4uICBIZW5jZSB0aGUgZm9sbG93aW5nICNkZWZpbmUgaXMgYSBoYWNr
IHRvIHByZXZlbnQKLS8vIDx0cjEvZnVuY3Rpb25hbD4gZnJvbSBiZWluZyBpbmNsdWRlZC4KLSMg
ICBkZWZpbmUgX1RSMV9GVU5DVElPTkFMIDEKLSMgICBpbmNsdWRlIDx0cjEvdHVwbGU+Ci0jICAg
dW5kZWYgX1RSMV9GVU5DVElPTkFMICAvLyBBbGxvd3MgdGhlIHVzZXIgdG8gI2luY2x1ZGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIDx0cjEvZnVuY3Rpb25hbD4gaWYgaGUgY2hvb3NlcyB0
by4KLSMgIGVsc2UKLSMgICBpbmNsdWRlIDx0cjEvdHVwbGU+ICAvLyBOT0xJTlQKLSMgIGVuZGlm
ICAvLyAhR1RFU1RfSEFTX1JUVEkgJiYgR1RFU1RfR0NDX1ZFUl8gPCA0MDMwMgotCi0jIGVsc2UK
LS8vIElmIHRoZSBjb21waWxlciBpcyBub3QgR0NDIDQuMCssIHdlIGFzc3VtZSB0aGUgdXNlciBp
cyB1c2luZyBhCi0vLyBzcGVjLWNvbmZvcm1pbmcgVFIxIGltcGxlbWVudGF0aW9uLgotIyAgaW5j
bHVkZSA8dHVwbGU+ICAvLyBJV1lVIHByYWdtYTogZXhwb3J0ICAvLyBOT0xJTlQKLSMgZW5kaWYg
IC8vIEdURVNUX1VTRV9PV05fVFIxX1RVUExFCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RSMV9U
VVBMRQotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgY2xvbmUoMikgaXMgc3VwcG9ydGVkLgotLy8g
VXN1YWxseSBpdCB3aWxsIG9ubHkgYmUgYXZhaWxhYmxlIG9uIExpbnV4LCBleGNsdWRpbmcKLS8v
IExpbnV4IG9uIHRoZSBJdGFuaXVtIGFyY2hpdGVjdHVyZS4KLS8vIEFsc28gc2VlIGh0dHA6Ly9s
aW51eC5kaWUubmV0L21hbi8yL2Nsb25lLgotI2lmbmRlZiBHVEVTVF9IQVNfQ0xPTkUKLS8vIFRo
ZSB1c2VyIGRpZG4ndCB0ZWxsIHVzLCBzbyB3ZSBuZWVkIHRvIGZpZ3VyZSBpdCBvdXQuCi0KLSMg
aWYgR1RFU1RfT1NfTElOVVggJiYgIWRlZmluZWQoX19pYTY0X18pCi0jICBpZiBHVEVTVF9PU19M
SU5VWF9BTkRST0lECi0vLyBPbiBBbmRyb2lkLCBjbG9uZSgpIGJlY2FtZSBhdmFpbGFibGUgYXQg
ZGlmZmVyZW50IEFQSSBsZXZlbHMgZm9yIGVhY2ggMzItYml0Ci0vLyBhcmNoaXRlY3R1cmUuCi0j
ICAgIGlmIGRlZmluZWQoX19MUDY0X18pIHx8IFwKLSAgICAgICAgKGRlZmluZWQoX19hcm1fXykg
JiYgX19BTkRST0lEX0FQSV9fID49IDkpIHx8IFwKLSAgICAgICAgKGRlZmluZWQoX19taXBzX18p
ICYmIF9fQU5EUk9JRF9BUElfXyA+PSAxMikgfHwgXAotICAgICAgICAoZGVmaW5lZChfX2kzODZf
XykgJiYgX19BTkRST0lEX0FQSV9fID49IDE3KQotIyAgICAgZGVmaW5lIEdURVNUX0hBU19DTE9O
RSAxCi0jICAgIGVsc2UKLSMgICAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMAotIyAgICBlbmRp
ZgotIyAgZWxzZQotIyAgIGRlZmluZSBHVEVTVF9IQVNfQ0xPTkUgMQotIyAgZW5kaWYKLSMgZWxz
ZQotIyAgZGVmaW5lIEdURVNUX0hBU19DTE9ORSAwCi0jIGVuZGlmICAvLyBHVEVTVF9PU19MSU5V
WCAmJiAhZGVmaW5lZChfX2lhNjRfXykKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKLQot
Ly8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgc3RyZWFtIHJlZGlyZWN0aW9uLiBUaGlz
IGlzIHVzZWQgdG8gdGVzdAotLy8gb3V0cHV0IGNvcnJlY3RuZXNzIGFuZCB0byBpbXBsZW1lbnQg
ZGVhdGggdGVzdHMuCi0jaWZuZGVmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLS8vIEJ5
IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGF0IHN0cmVhbSByZWRpcmVjdGlvbiBpcyBzdXBwb3J0ZWQg
b24gYWxsCi0vLyBwbGF0Zm9ybXMgZXhjZXB0IGtub3duIG1vYmlsZSBvbmVzLgotIyBpZiBHVEVT
VF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IFwKLSAgICBHVEVTVF9P
U19XSU5ET1dTX1BIT05FIHx8IEdURVNUX09TX1dJTkRPV1NfUlQKLSMgIGRlZmluZSBHVEVTVF9I
QVNfU1RSRUFNX1JFRElSRUNUSU9OIDAKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0hBU19TVFJF
QU1fUkVESVJFQ1RJT04gMQotIyBlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFICYm
ICFHVEVTVF9PU19TWU1CSUFOCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJ
T04KLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHN1cHBvcnQgZGVhdGggdGVzdHMuCi0vLyBH
b29nbGUgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IGRlYXRoIHRlc3RzIGZvciBWQyA3LjEgYW5kIGVh
cmxpZXIgYXMKLS8vIGFib3J0KCkgaW4gYSBWQyA3LjEgYXBwbGljYXRpb24gY29tcGlsZWQgYXMg
R1VJIGluIGRlYnVnIGNvbmZpZwotLy8gcG9wcyB1cCBhIGRpYWxvZyB3aW5kb3cgdGhhdCBjYW5u
b3QgYmUgc3VwcHJlc3NlZCBwcm9ncmFtbWF0aWNhbGx5LgotI2lmIChHVEVTVF9PU19MSU5VWCB8
fCBHVEVTVF9PU19DWUdXSU4gfHwgR1RFU1RfT1NfU09MQVJJUyB8fCBcCi0gICAgIChHVEVTVF9P
U19NQUMgJiYgIUdURVNUX09TX0lPUykgfHwgXAotICAgICAoR1RFU1RfT1NfV0lORE9XU19ERVNL
VE9QICYmIF9NU0NfVkVSID49IDE0MDApIHx8IFwKLSAgICAgR1RFU1RfT1NfV0lORE9XU19NSU5H
VyB8fCBHVEVTVF9PU19BSVggfHwgR1RFU1RfT1NfSFBVWCB8fCBcCi0gICAgIEdURVNUX09TX09Q
RU5CU0QgfHwgR1RFU1RfT1NfUU5YIHx8IEdURVNUX09TX0ZSRUVCU0QpCi0jIGRlZmluZSBHVEVT
VF9IQVNfREVBVEhfVEVTVCAxCi0jZW5kaWYKLQotLy8gV2UgZG9uJ3Qgc3VwcG9ydCBNU1ZDIDcu
MSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQgbm93LiAgVGhlcmVmb3JlCi0vLyBhbGwgdGhlIGNv
bXBpbGVycyB3ZSBjYXJlIGFib3V0IGFyZSBhZGVxdWF0ZSBmb3Igc3VwcG9ydGluZwotLy8gdmFs
dWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNkZWZpbmUgR1RFU1RfSEFTX1BBUkFNX1RFU1QgMQot
Ci0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc3VwcG9ydCB0eXBlLWRyaXZlbiB0ZXN0cy4KLQot
Ly8gVHlwZWQgdGVzdHMgbmVlZCA8dHlwZWluZm8+IGFuZCB2YXJpYWRpYyBtYWNyb3MsIHdoaWNo
IEdDQywgVkMrKyA4LjAsCi0vLyBTdW4gUHJvIENDLCBJQk0gVmlzdWFsIEFnZSwgYW5kIEhQIGFD
QyBzdXBwb3J0LgotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IChfTVNDX1ZFUiA+PSAxNDAwKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBcCi0gICAgZGVmaW5lZChfX0lCTUNQUF9fKSB8fCBk
ZWZpbmVkKF9fSFBfYUNDKQotIyBkZWZpbmUgR1RFU1RfSEFTX1RZUEVEX1RFU1QgMQotIyBkZWZp
bmUgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCAxCi0jZW5kaWYKLQotLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIHRvIHN1cHBvcnQgQ29tYmluZSgpLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbgotLy8g
dmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxlZC4gIFRoZSBpbXBsZW1lbnRhdGlv
biBkb2Vzbid0Ci0vLyB3b3JrIG9uIFN1biBTdHVkaW8gc2luY2UgaXQgZG9lc24ndCB1bmRlcnN0
YW5kIHRlbXBsYXRlZCBjb252ZXJzaW9uCi0vLyBvcGVyYXRvcnMuCi0jaWYgR1RFU1RfSEFTX1BB
UkFNX1RFU1QgJiYgR1RFU1RfSEFTX1RSMV9UVVBMRSAmJiAhZGVmaW5lZChfX1NVTlBST19DQykK
LSMgZGVmaW5lIEdURVNUX0hBU19DT01CSU5FIDEKLSNlbmRpZgotCi0vLyBEZXRlcm1pbmVzIHdo
ZXRoZXIgdGhlIHN5c3RlbSBjb21waWxlciB1c2VzIFVURi0xNiBmb3IgZW5jb2Rpbmcgd2lkZSBz
dHJpbmdzLgotI2RlZmluZSBHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XyBcCi0gICAgKEdU
RVNUX09TX1dJTkRPV1MgfHwgR1RFU1RfT1NfQ1lHV0lOIHx8IEdURVNUX09TX1NZTUJJQU4gfHwg
R1RFU1RfT1NfQUlYKQotCi0vLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGVzdCByZXN1bHRzIGNhbiBi
ZSBzdHJlYW1lZCB0byBhIHNvY2tldC4KLSNpZiBHVEVTVF9PU19MSU5VWAotIyBkZWZpbmUgR1RF
U1RfQ0FOX1NUUkVBTV9SRVNVTFRTXyAxCi0jZW5kaWYKLQotLy8gRGVmaW5lcyBzb21lIHV0aWxp
dHkgbWFjcm9zLgotCi0vLyBUaGUgR05VIGNvbXBpbGVyIGVtaXRzIGEgd2FybmluZyBpZiBuZXN0
ZWQgImlmIiBzdGF0ZW1lbnRzIGFyZSBmb2xsb3dlZCBieQotLy8gYW4gImVsc2UiIHN0YXRlbWVu
dCBhbmQgYnJhY2VzIGFyZSBub3QgdXNlZCB0byBleHBsaWNpdGx5IGRpc2FtYmlndWF0ZSB0aGUK
LS8vICJlbHNlIiBiaW5kaW5nLiAgVGhpcyBsZWFkcyB0byBwcm9ibGVtcyB3aXRoIGNvZGUgbGlr
ZToKLS8vCi0vLyAgIGlmIChnYXRlKQotLy8gICAgIEFTU0VSVF8qKGNvbmRpdGlvbikgPDwgIlNv
bWUgbWVzc2FnZSI7Ci0vLwotLy8gVGhlICJzd2l0Y2ggKDApIGNhc2UgMDoiIGlkaW9tIGlzIHVz
ZWQgdG8gc3VwcHJlc3MgdGhpcy4KLSNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCi0jIGRlZmluZSBH
VEVTVF9BTUJJR1VPVVNfRUxTRV9CTE9DS0VSXwotI2Vsc2UKLSMgZGVmaW5lIEdURVNUX0FNQklH
VU9VU19FTFNFX0JMT0NLRVJfIHN3aXRjaCAoMCkgY2FzZSAwOiBkZWZhdWx0OiAgLy8gTk9MSU5U
Ci0jZW5kaWYKLQotLy8gVXNlIHRoaXMgYW5ub3RhdGlvbiBhdCB0aGUgZW5kIG9mIGEgc3RydWN0
L2NsYXNzIGRlZmluaXRpb24gdG8KLS8vIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gb3B0aW1p
emluZyBhd2F5IGluc3RhbmNlcyB0aGF0IGFyZSBuZXZlcgotLy8gdXNlZC4gIFRoaXMgaXMgdXNl
ZnVsIHdoZW4gYWxsIGludGVyZXN0aW5nIGxvZ2ljIGhhcHBlbnMgaW5zaWRlIHRoZQotLy8gYyd0
b3IgYW5kIC8gb3IgZCd0b3IuICBFeGFtcGxlOgotLy8KLS8vICAgc3RydWN0IEZvbyB7Ci0vLyAg
ICAgRm9vKCkgeyAuLi4gfQotLy8gICB9IEdURVNUX0FUVFJJQlVURV9VTlVTRURfOwotLy8KLS8v
IEFsc28gdXNlIGl0IGFmdGVyIGEgdmFyaWFibGUgb3IgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIHRv
IHRlbGwgdGhlCi0vLyBjb21waWxlciB0aGUgdmFyaWFibGUvcGFyYW1ldGVyIGRvZXMgbm90IGhh
dmUgdG8gYmUgdXNlZC4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChDT01QSUxF
Ul9JQ0MpCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXyBfX2F0dHJpYnV0ZV9fICgo
dW51c2VkKSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19fKQotIyBpZiBfX2hhc19hdHRyaWJ1dGUo
dW51c2VkKQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9VTlVTRURfIF9fYXR0cmlidXRlX18g
KCh1bnVzZWQpKQotIyBlbmRpZgotI2VuZGlmCi0jaWZuZGVmIEdURVNUX0FUVFJJQlVURV9VTlVT
RURfCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXwotI2VuZGlmCi0KLS8vIFVzZSB0
aGlzIGFubm90YXRpb24gYmVmb3JlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHByaW50ZiBmb3Jt
YXQgc3RyaW5nLgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKENPTVBJTEVSX0lD
QykKLSMgaWYgZGVmaW5lZChfX01JTkdXX1BSSU5URl9GT1JNQVQpCi0vLyBNaW5HVyBoYXMgdHdv
IGRpZmZlcmVudCBwcmludGYgaW1wbGVtZW50YXRpb25zLiBFbnN1cmUgdGhlIGZvcm1hdCBtYWNy
bwotLy8gbWF0Y2hlcyB0aGUgc2VsZWN0ZWQgaW1wbGVtZW50YXRpb24uIFNlZQotLy8gaHR0cHM6
Ly9zb3VyY2Vmb3JnZS5uZXQvcC9taW5ndy13NjQvd2lraTIvZ251JTIwcHJpbnRmLy4KLSMgIGRl
ZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5kZXgsIGZpcnN0X3RvX2NoZWNr
KSBcCi0gICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX01JTkdXX1BSSU5URl9GT1JN
QVQsIHN0cmluZ19pbmRleCwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmly
c3RfdG9fY2hlY2spKSkKLSMgZWxzZQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9QUklOVEZf
KHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spIFwKLSAgICAgICBfX2F0dHJpYnV0ZV9fKChf
X2Zvcm1hdF9fKF9fcHJpbnRmX18sIHN0cmluZ19pbmRleCwgZmlyc3RfdG9fY2hlY2spKSkKLSMg
ZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfUFJJTlRGXyhzdHJpbmdfaW5k
ZXgsIGZpcnN0X3RvX2NoZWNrKQotI2VuZGlmCi0KLS8vIEEgbWFjcm8gdG8gZGlzYWxsb3cgb3Bl
cmF0b3I9Ci0vLyBUaGlzIHNob3VsZCBiZSB1c2VkIGluIHRoZSBwcml2YXRlOiBkZWNsYXJhdGlv
bnMgZm9yIGEgY2xhc3MuCi0jZGVmaW5lIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8odHlwZSlcCi0g
IHZvaWQgb3BlcmF0b3I9KHR5cGUgY29uc3QgJikKLQotLy8gQSBtYWNybyB0byBkaXNhbGxvdyBj
b3B5IGNvbnN0cnVjdG9yIGFuZCBvcGVyYXRvcj0KLS8vIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4g
dGhlIHByaXZhdGU6IGRlY2xhcmF0aW9ucyBmb3IgYSBjbGFzcy4KLSNkZWZpbmUgR1RFU1RfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOXyh0eXBlKVwKLSAgdHlwZSh0eXBlIGNvbnN0ICYpO1wKLSAg
R1RFU1RfRElTQUxMT1dfQVNTSUdOXyh0eXBlKQotCi0vLyBUZWxsIHRoZSBjb21waWxlciB0byB3
YXJuIGFib3V0IHVudXNlZCByZXR1cm4gdmFsdWVzIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQKLS8v
IHdpdGggdGhpcyBtYWNyby4gIFRoZSBtYWNybyBzaG91bGQgYmUgdXNlZCBvbiBmdW5jdGlvbiBk
ZWNsYXJhdGlvbnMKLS8vIGZvbGxvd2luZyB0aGUgYXJndW1lbnQgbGlzdDoKLS8vCi0vLyAgIFNw
cm9ja2V0KiBBbGxvY2F0ZVNwcm9ja2V0KCkgR1RFU1RfTVVTVF9VU0VfUkVTVUxUXzsKLSNpZiBk
ZWZpbmVkKF9fR05VQ19fKSAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0MDApICYmICFkZWZpbmVk
KENPTVBJTEVSX0lDQykKLSMgZGVmaW5lIEdURVNUX01VU1RfVVNFX1JFU1VMVF8gX19hdHRyaWJ1
dGVfXyAoKHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0jZWxzZQotIyBkZWZpbmUgR1RFU1RfTVVTVF9V
U0VfUkVTVUxUXwotI2VuZGlmICAvLyBfX0dOVUNfXyAmJiAoR1RFU1RfR0NDX1ZFUl8gPj0gMzA0
MDApICYmICFDT01QSUxFUl9JQ0MKLQotLy8gTVMgQysrIGNvbXBpbGVyIGVtaXRzIHdhcm5pbmcg
d2hlbiBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29tcGlsZSB0aW1lCi0vLyBjb25zdGFu
dC4gSW4gc29tZSBjb250ZXh0cyB0aGlzIHdhcm5pbmcgaXMgZmFsc2UgcG9zaXRpdmUgYW5kIG5l
ZWRzIHRvIGJlCi0vLyBzdXBwcmVzc2VkLiBVc2UgdGhlIGZvbGxvd2luZyB0d28gbWFjcm9zIGlu
IHN1Y2ggY2FzZXM6Ci0vLwotLy8gR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QVVNIXygp
Ci0vLyB3aGlsZSAodHJ1ZSkgewotLy8gR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1Bf
KCkKLS8vIH0KLSMgZGVmaW5lIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKSBc
Ci0gICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDEyNykKLSMgZGVmaW5lIEdU
RVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUE9QXygpIFwKLSAgICBHVEVTVF9ESVNBQkxFX01T
Q19XQVJOSU5HU19QT1BfKCkKLQotLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1
cHBvcnRzIE1pY3Jvc29mdCdzIFN0cnVjdHVyZWQgRXhjZXB0aW9uCi0vLyBIYW5kbGluZy4gIFRo
aXMgaXMgc3VwcG9ydGVkIGJ5IHNldmVyYWwgV2luZG93cyBjb21waWxlcnMgYnV0IGdlbmVyYWxs
eQotLy8gZG9lcyBub3QgZXhpc3Qgb24gYW55IG90aGVyIHN5c3RlbS4KLSNpZm5kZWYgR1RFU1Rf
SEFTX1NFSAotLy8gVGhlIHVzZXIgZGlkbid0IHRlbGwgdXMsIHNvIHdlIG5lZWQgdG8gZmlndXJl
IGl0IG91dC4KLQotIyBpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENf
XykKLS8vIFRoZXNlIHR3byBjb21waWxlcnMgYXJlIGtub3duIHRvIHN1cHBvcnQgU0VILgotIyAg
ZGVmaW5lIEdURVNUX0hBU19TRUggMQotIyBlbHNlCi0vLyBBc3N1bWUgbm8gU0VILgotIyAgZGVm
aW5lIEdURVNUX0hBU19TRUggMAotIyBlbmRpZgotCi0jZGVmaW5lIEdURVNUX0lTX1RIUkVBRFNB
RkUgXAotICAgIChHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8gXAotICAgICB8fCAo
R1RFU1RfT1NfV0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1Nf
V0lORE9XU19SVCkgXAotICAgICB8fCBHVEVTVF9IQVNfUFRIUkVBRCkKLQotI2VuZGlmICAvLyBH
VEVTVF9IQVNfU0VICi0KLS8vIEdURVNUX0FQSV8gcXVhbGlmaWVzIGFsbCBzeW1ib2xzIHRoYXQg
bXVzdCBiZSBleHBvcnRlZC4gVGhlIGRlZmluaXRpb25zIGJlbG93Ci0vLyBhcmUgZ3VhcmRlZCBi
eSAjaWZuZGVmIHRvIGdpdmUgZW1iZWRkZXJzIGEgY2hhbmNlIHRvIGRlZmluZSBHVEVTVF9BUElf
IGluCi0vLyBndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QtcG9ydC5oCi0jaWZuZGVmIEdURVNU
X0FQSV8KLQotI2lmZGVmIF9NU0NfVkVSCi0jIGlmIEdURVNUX0xJTktFRF9BU19TSEFSRURfTElC
UkFSWQotIyAgZGVmaW5lIEdURVNUX0FQSV8gX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jIGVsaWYg
R1RFU1RfQ1JFQVRFX1NIQVJFRF9MSUJSQVJZCi0jICBkZWZpbmUgR1RFU1RfQVBJXyBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkKLSMgZW5kaWYKLSNlbGlmIF9fR05VQ19fID49IDQgfHwgZGVmaW5lZChf
X2NsYW5nX18pCi0jIGRlZmluZSBHVEVTVF9BUElfIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQotI2VuZGlmIC8vIF9NU0NfVkVSCi0KLSNlbmRpZiAvLyBHVEVTVF9BUElf
Ci0KLSNpZm5kZWYgR1RFU1RfQVBJXwotIyBkZWZpbmUgR1RFU1RfQVBJXwotI2VuZGlmIC8vIEdU
RVNUX0FQSV8KLQotI2lmZGVmIF9fR05VQ19fCi0vLyBBc2sgdGhlIGNvbXBpbGVyIHRvIG5ldmVy
IGlubGluZSBhIGdpdmVuIGZ1bmN0aW9uLgotIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXyBfX2F0
dHJpYnV0ZV9fKChub2lubGluZSkpCi0jZWxzZQotIyBkZWZpbmUgR1RFU1RfTk9fSU5MSU5FXwot
I2VuZGlmCi0KLS8vIF9MSUJDUFBfVkVSU0lPTiBpcyBkZWZpbmVkIGJ5IHRoZSBsaWJjKysgbGli
cmFyeSBmcm9tIHRoZSBMTFZNIHByb2plY3QuCi0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwg
ZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pCi0jIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDEK
LSNlbHNlCi0jIGRlZmluZSBHVEVTVF9IQVNfQ1hYQUJJX0hfIDAKLSNlbmRpZgotCi0vLyBBIGZ1
bmN0aW9uIGxldmVsIGF0dHJpYnV0ZSB0byBkaXNhYmxlIGNoZWNraW5nIGZvciB1c2Ugb2YgdW5p
bml0aWFsaXplZAotLy8gbWVtb3J5IHdoZW4gYnVpbHQgd2l0aCBNZW1vcnlTYW5pdGl6ZXIuCi0j
aWYgZGVmaW5lZChfX2NsYW5nX18pCi0jIGlmIF9faGFzX2ZlYXR1cmUobWVtb3J5X3Nhbml0aXpl
cikKLSMgIGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfTUVNT1JZXyBcCi0gICAg
ICAgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkKLSMgZWxzZQotIyAgZGVmaW5l
IEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCi0jIGVuZGlmICAvLyBfX2hhc19m
ZWF0dXJlKG1lbW9yeV9zYW5pdGl6ZXIpCi0jZWxzZQotIyBkZWZpbmUgR1RFU1RfQVRUUklCVVRF
X05PX1NBTklUSVpFX01FTU9SWV8KLSNlbmRpZiAgLy8gX19jbGFuZ19fCi0KLS8vIEEgZnVuY3Rp
b24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgQWRkcmVzc1Nhbml0aXplciBpbnN0cnVtZW50
YXRpb24uCi0jaWYgZGVmaW5lZChfX2NsYW5nX18pCi0jIGlmIF9faGFzX2ZlYXR1cmUoYWRkcmVz
c19zYW5pdGl6ZXIpCi0jICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJF
U1NfIFwKLSAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKLSMgZWxz
ZQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXwotIyBlbmRp
ZiAgLy8gX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikKLSNlbHNlCi0jIGRlZmluZSBH
VEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KLSNlbmRpZiAgLy8gX19jbGFuZ19f
Ci0KLS8vIEEgZnVuY3Rpb24gbGV2ZWwgYXR0cmlidXRlIHRvIGRpc2FibGUgVGhyZWFkU2FuaXRp
emVyIGluc3RydW1lbnRhdGlvbi4KLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSMgaWYgX19oYXNf
ZmVhdHVyZSh0aHJlYWRfc2FuaXRpemVyKQotIyAgZGVmaW5lIEdURVNUX0FUVFJJQlVURV9OT19T
QU5JVElaRV9USFJFQURfIFwKLSAgICAgICBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV90aHJl
YWQpKQotIyBlbHNlCi0jICBkZWZpbmUgR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX1RIUkVB
RF8KLSMgZW5kaWYgIC8vIF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikKLSNlbHNlCi0j
IGRlZmluZSBHVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwotI2VuZGlmICAvLyBf
X2NsYW5nX18KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi1jbGFzcyBNZXNzYWdlOwotCi0jaWYg
ZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQotLy8gSW1wb3J0IHR1cGxlIGFuZCBmcmll
bmRzIGludG8gdGhlIDo6dGVzdGluZyBuYW1lc3BhY2UuCi0vLyBJdCBpcyBwYXJ0IG9mIG91ciBp
bnRlcmZhY2UsIGhhdmluZyB0aGVtIGluIDo6dGVzdGluZyBhbGxvd3MgdXMgdG8gY2hhbmdlCi0v
LyB0aGVpciB0eXBlcyBhcyBuZWVkZWQuCi11c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjpn
ZXQ7Ci11c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfOjptYWtlX3R1cGxlOwotdXNpbmcgR1RF
U1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGU7Ci11c2luZyBHVEVTVF9UVVBMRV9OQU1FU1BBQ0Vf
Ojp0dXBsZV9zaXplOwotdXNpbmcgR1RFU1RfVFVQTEVfTkFNRVNQQUNFXzo6dHVwbGVfZWxlbWVu
dDsKLSNlbmRpZiAgLy8gZGVmaW5lZChHVEVTVF9UVVBMRV9OQU1FU1BBQ0VfKQotCi1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBBIHNlY3JldCB0eXBlIHRoYXQgR29vZ2xlIFRlc3QgdXNlcnMg
ZG9uJ3Qga25vdyBhYm91dC4gIEl0IGhhcyBubwotLy8gZGVmaW5pdGlvbiBvbiBwdXJwb3NlLiAg
VGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQotLy8gU2VjcmV0IG9iamVjdCwg
d2hpY2ggaXMgd2hhdCB3ZSB3YW50LgotY2xhc3MgU2VjcmV0OwotCi0vLyBUaGUgR1RFU1RfQ09N
UElMRV9BU1NFUlRfIG1hY3JvIGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGF0IGEgY29tcGlsZSB0
aW1lCi0vLyBleHByZXNzaW9uIGlzIHRydWUuIEZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIGl0
IHRvIHZlcmlmeSB0aGUKLS8vIHNpemUgb2YgYSBzdGF0aWMgYXJyYXk6Ci0vLwotLy8gICBHVEVT
VF9DT01QSUxFX0FTU0VSVF8oR1RFU1RfQVJSQVlfU0laRV8obmFtZXMpID09IE5VTV9OQU1FUywK
LS8vICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX2luY29ycmVjdF9zaXplKTsKLS8vCi0v
LyBvciB0byBtYWtlIHN1cmUgYSBzdHJ1Y3QgaXMgc21hbGxlciB0aGFuIGEgY2VydGFpbiBzaXpl
OgotLy8KLS8vICAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKHNpemVvZihmb28pIDwgMTI4LCBmb29f
dG9vX2xhcmdlKTsKLS8vCi0vLyBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBtYWNybyBpcyB0
aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuIElmCi0vLyB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSwg
bW9zdCBjb21waWxlcnMgd2lsbCBpc3N1ZSBhIHdhcm5pbmcvZXJyb3IKLS8vIGNvbnRhaW5pbmcg
dGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLgotCi0jaWYgR1RFU1RfTEFOR19DWFgxMQotIyBkZWZp
bmUgR1RFU1RfQ09NUElMRV9BU1NFUlRfKGV4cHIsIG1zZykgc3RhdGljX2Fzc2VydChleHByLCAj
bXNnKQotI2Vsc2UgIC8vICFHVEVTVF9MQU5HX0NYWDExCi10ZW1wbGF0ZSA8Ym9vbD4KLSAgc3Ry
dWN0IENvbXBpbGVBc3NlcnQgewotfTsKLQotIyBkZWZpbmUgR1RFU1RfQ09NUElMRV9BU1NFUlRf
KGV4cHIsIG1zZykgXAotICB0eXBlZGVmIDo6dGVzdGluZzo6aW50ZXJuYWw6OkNvbXBpbGVBc3Nl
cnQ8KHN0YXRpY19jYXN0PGJvb2w+KGV4cHIpKT4gXAotICAgICAgbXNnW3N0YXRpY19jYXN0PGJv
b2w+KGV4cHIpID8gMSA6IC0xXSBHVEVTVF9BVFRSSUJVVEVfVU5VU0VEXwotI2VuZGlmICAvLyAh
R1RFU1RfTEFOR19DWFgxMQotCi0vLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIEdURVNUX0NP
TVBJTEVfQVNTRVJUXzoKLS8vCi0vLyAoSW4gQysrMTEsIHdlIHNpbXBseSB1c2Ugc3RhdGljX2Fz
c2VydCBpbnN0ZWFkIG9mIHRoZSBmb2xsb3dpbmcpCi0vLwotLy8gLSBHVEVTVF9DT01QSUxFX0FT
U0VSVF8gd29ya3MgYnkgZGVmaW5pbmcgYW4gYXJyYXkgdHlwZSB0aGF0IGhhcyAtMQotLy8gICBl
bGVtZW50cyAoYW5kIHRodXMgaXMgaW52YWxpZCkgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxz
ZS4KLS8vCi0vLyAtIFRoZSBzaW1wbGVyIGRlZmluaXRpb24KLS8vCi0vLyAgICAjZGVmaW5lIEdU
RVNUX0NPTVBJTEVfQVNTRVJUXyhleHByLCBtc2cpIHR5cGVkZWYgY2hhciBtc2dbKGV4cHIpID8g
MSA6IC0xXQotLy8KLS8vICAgZG9lcyBub3Qgd29yaywgYXMgZ2NjIHN1cHBvcnRzIHZhcmlhYmxl
LWxlbmd0aCBhcnJheXMgd2hvc2Ugc2l6ZXMKLS8vICAgYXJlIGRldGVybWluZWQgYXQgcnVuLXRp
bWUgKHRoaXMgaXMgZ2NjJ3MgZXh0ZW5zaW9uIGFuZCBub3QgcGFydAotLy8gICBvZiB0aGUgQysr
IHN0YW5kYXJkKS4gIEFzIGEgcmVzdWx0LCBnY2MgZmFpbHMgdG8gcmVqZWN0IHRoZQotLy8gICBm
b2xsb3dpbmcgY29kZSB3aXRoIHRoZSBzaW1wbGUgZGVmaW5pdGlvbjoKLS8vCi0vLyAgICAgaW50
IGZvbzsKLS8vICAgICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oZm9vLCBtc2cpOyAvLyBub3Qgc3Vw
cG9zZWQgdG8gY29tcGlsZSBhcyBmb28gaXMKLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuCi0vLwotLy8gLSBCeSB1
c2luZyB0aGUgdHlwZSBDb21waWxlQXNzZXJ0PChib29sKGV4cHIpKT4sIHdlIGVuc3VyZXMgdGhh
dAotLy8gICBleHByIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgKFRlbXBsYXRlIGFyZ3Vt
ZW50cyBtdXN0IGJlCi0vLyAgIGRldGVybWluZWQgYXQgY29tcGlsZS10aW1lLikKLS8vCi0vLyAt
IFRoZSBvdXR0ZXIgcGFyZW50aGVzZXMgaW4gQ29tcGlsZUFzc2VydDwoYm9vbChleHByKSk+IGFy
ZSBuZWNlc3NhcnkKLS8vICAgdG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDMuNC40IGFuZCA0
LjAuMS4gIElmIHdlIGhhZCB3cml0dGVuCi0vLwotLy8gICAgIENvbXBpbGVBc3NlcnQ8Ym9vbChl
eHByKT4KLS8vCi0vLyAgIGluc3RlYWQsIHRoZXNlIGNvbXBpbGVycyB3aWxsIHJlZnVzZSB0byBj
b21waWxlCi0vLwotLy8gICAgIEdURVNUX0NPTVBJTEVfQVNTRVJUXyg1ID4gMCwgc29tZV9tZXNz
YWdlKTsKLS8vCi0vLyAgIChUaGV5IHNlZW0gdG8gdGhpbmsgdGhlICI+IiBpbiAiNSA+IDAiIG1h
cmtzIHRoZSBlbmQgb2YgdGhlCi0vLyAgIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QuKQotLy8KLS8v
IC0gVGhlIGFycmF5IHNpemUgaXMgKGJvb2woZXhwcikgPyAxIDogLTEpLCBpbnN0ZWFkIG9mIHNp
bXBseQotLy8KLS8vICAgICAoKGV4cHIpID8gMSA6IC0xKS4KLS8vCi0vLyAgIFRoaXMgaXMgdG8g
YXZvaWQgcnVubmluZyBpbnRvIGEgYnVnIGluIE1TIFZDIDcuMSwgd2hpY2gKLS8vICAgY2F1c2Vz
ICgoMC4wKSA/IDEgOiAtMSkgdG8gaW5jb3JyZWN0bHkgZXZhbHVhdGUgdG8gMS4KLQotLy8gU3Rh
dGljQXNzZXJ0VHlwZUVxSGVscGVyIGlzIHVzZWQgYnkgU3RhdGljQXNzZXJ0VHlwZUVxIGRlZmlu
ZWQgaW4gZ3Rlc3QuaC4KLS8vCi0vLyBUaGlzIHRlbXBsYXRlIGlzIGRlY2xhcmVkLCBidXQgaW50
ZW50aW9uYWxseSB1bmRlZmluZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
Pgotc3RydWN0IFN0YXRpY0Fzc2VydFR5cGVFcUhlbHBlcjsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgU3RhdGljQXNzZXJ0VHlwZUVxSGVscGVyPFQsIFQ+IHsKLSAgZW51bSB7IHZh
bHVlID0gdHJ1ZSB9OwotfTsKLQotLy8gRXZhbHVhdGVzIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVu
dHMgaW4gJ2FycmF5Jy4KLSNkZWZpbmUgR1RFU1RfQVJSQVlfU0laRV8oYXJyYXkpIChzaXplb2Yo
YXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkKLQotI2lmIEdURVNUX0hBU19HTE9CQUxfU1RSSU5H
Ci10eXBlZGVmIDo6c3RyaW5nIHN0cmluZzsKLSNlbHNlCi10eXBlZGVmIDo6c3RkOjpzdHJpbmcg
c3RyaW5nOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0jaWYgR1RFU1Rf
SEFTX0dMT0JBTF9XU1RSSU5HCi10eXBlZGVmIDo6d3N0cmluZyB3c3RyaW5nOwotI2VsaWYgR1RF
U1RfSEFTX1NURF9XU1RSSU5HCi10eXBlZGVmIDo6c3RkOjp3c3RyaW5nIHdzdHJpbmc7Ci0jZW5k
aWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi0vLyBBIGhlbHBlciBmb3Igc3VwcHJl
c3Npbmcgd2FybmluZ3Mgb24gY29uc3RhbnQgY29uZGl0aW9uLiAgSXQganVzdAotLy8gcmV0dXJu
cyAnY29uZGl0aW9uJy4KLUdURVNUX0FQSV8gYm9vbCBJc1RydWUoYm9vbCBjb25kaXRpb24pOwot
Ci0vLyBEZWZpbmVzIHNjb3BlZF9wdHIuCi0KLS8vIFRoaXMgaW1wbGVtZW50YXRpb24gb2Ygc2Nv
cGVkX3B0ciBpcyBQQVJUSUFMIC0gaXQgb25seSBjb250YWlucwotLy8gZW5vdWdoIHN0dWZmIHRv
IHNhdGlzZnkgR29vZ2xlIFRlc3QncyBuZWVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBzY29wZWRfcHRyIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAg
ZXhwbGljaXQgc2NvcGVkX3B0cihUKiBwID0gTlVMTCkgOiBwdHJfKHApIHt9Ci0gIH5zY29wZWRf
cHRyKCkgeyByZXNldCgpOyB9Ci0KLSAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnB0
cl87IH0KLSAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KLSAgVCogZ2V0
KCkgY29uc3QgeyByZXR1cm4gcHRyXzsgfQotCi0gIFQqIHJlbGVhc2UoKSB7Ci0gICAgVCogY29u
c3QgcHRyID0gcHRyXzsKLSAgICBwdHJfID0gTlVMTDsKLSAgICByZXR1cm4gcHRyOwotICB9Ci0K
LSAgdm9pZCByZXNldChUKiBwID0gTlVMTCkgewotICAgIGlmIChwICE9IHB0cl8pIHsKLSAgICAg
IGlmIChJc1RydWUoc2l6ZW9mKFQpID4gMCkpIHsgIC8vIE1ha2VzIHN1cmUgVCBpcyBhIGNvbXBs
ZXRlIHR5cGUuCi0gICAgICAgIGRlbGV0ZSBwdHJfOwotICAgICAgfQotICAgICAgcHRyXyA9IHA7
Ci0gICAgfQotICB9Ci0KLSAgZnJpZW5kIHZvaWQgc3dhcChzY29wZWRfcHRyJiBhLCBzY29wZWRf
cHRyJiBiKSB7Ci0gICAgdXNpbmcgc3RkOjpzd2FwOwotICAgIHN3YXAoYS5wdHJfLCBiLnB0cl8p
OwotICB9Ci0KLSBwcml2YXRlOgotICBUKiBwdHJfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlf
QU5EX0FTU0lHTl8oc2NvcGVkX3B0cik7Ci19OwotCi0vLyBEZWZpbmVzIFJFLgotCi0vLyBBIHNp
bXBsZSBDKysgd3JhcHBlciBmb3IgPHJlZ2V4Lmg+LiAgSXQgdXNlcyB0aGUgUE9TSVggRXh0ZW5k
ZWQKLS8vIFJlZ3VsYXIgRXhwcmVzc2lvbiBzeW50YXguCi1jbGFzcyBHVEVTVF9BUElfIFJFIHsK
LSBwdWJsaWM6Ci0gIC8vIEEgY29weSBjb25zdHJ1Y3RvciBpcyByZXF1aXJlZCBieSB0aGUgU3Rh
bmRhcmQgdG8gaW5pdGlhbGl6ZSBvYmplY3QKLSAgLy8gcmVmZXJlbmNlcyBmcm9tIHItdmFsdWVz
LgotICBSRShjb25zdCBSRSYgb3RoZXIpIHsgSW5pdChvdGhlci5wYXR0ZXJuKCkpOyB9Ci0KLSAg
Ly8gQ29uc3RydWN0cyBhbiBSRSBmcm9tIGEgc3RyaW5nLgotICBSRShjb25zdCA6OnN0ZDo6c3Ry
aW5nJiByZWdleCkgeyBJbml0KHJlZ2V4LmNfc3RyKCkpOyB9ICAvLyBOT0xJTlQKLQotI2lmIEdU
RVNUX0hBU19HTE9CQUxfU1RSSU5HCi0KLSAgUkUoY29uc3QgOjpzdHJpbmcmIHJlZ2V4KSB7IElu
aXQocmVnZXguY19zdHIoKSk7IH0gIC8vIE5PTElOVAotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi0KLSAgUkUoY29uc3QgY2hhciogcmVnZXgpIHsgSW5pdChyZWdleCk7IH0g
IC8vIE5PTElOVAotICB+UkUoKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50
YXRpb24gb2YgdGhlIHJlZ2V4LgotICBjb25zdCBjaGFyKiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1
cm4gcGF0dGVybl87IH0KLQotICAvLyBGdWxsTWF0Y2goc3RyLCByZSkgcmV0dXJucyB0cnVlIGlm
ZiByZWd1bGFyIGV4cHJlc3Npb24gcmUgbWF0Y2hlcwotICAvLyB0aGUgZW50aXJlIHN0ci4KLSAg
Ly8gUGFydGlhbE1hdGNoKHN0ciwgcmUpIHJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNz
aW9uIHJlCi0gIC8vIG1hdGNoZXMgYSBzdWJzdHJpbmcgb2Ygc3RyIChpbmNsdWRpbmcgc3RyIGl0
c2VsZikuCi0gIC8vCi0gIC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiBtYWtlIEZ1bGxNYXRjaCgp
IGFuZCBQYXJ0aWFsTWF0Y2goKSB3b3JrCi0gIC8vIHdoZW4gc3RyIGNvbnRhaW5zIE5VTCBjaGFy
YWN0ZXJzLgotICBzdGF0aWMgYm9vbCBGdWxsTWF0Y2goY29uc3QgOjpzdGQ6OnN0cmluZyYgc3Ry
LCBjb25zdCBSRSYgcmUpIHsKLSAgICByZXR1cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7
Ci0gIH0KLSAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0
ciwgY29uc3QgUkUmIHJlKSB7Ci0gICAgcmV0dXJuIFBhcnRpYWxNYXRjaChzdHIuY19zdHIoKSwg
cmUpOwotICB9Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotCi0gIHN0YXRpYyBib29s
IEZ1bGxNYXRjaChjb25zdCA6OnN0cmluZyYgc3RyLCBjb25zdCBSRSYgcmUpIHsKLSAgICByZXR1
cm4gRnVsbE1hdGNoKHN0ci5jX3N0cigpLCByZSk7Ci0gIH0KLSAgc3RhdGljIGJvb2wgUGFydGlh
bE1hdGNoKGNvbnN0IDo6c3RyaW5nJiBzdHIsIGNvbnN0IFJFJiByZSkgewotICAgIHJldHVybiBQ
YXJ0aWFsTWF0Y2goc3RyLmNfc3RyKCksIHJlKTsKLSAgfQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19HTE9CQUxfU1RSSU5HCi0KLSAgc3RhdGljIGJvb2wgRnVsbE1hdGNoKGNvbnN0IGNoYXIqIHN0
ciwgY29uc3QgUkUmIHJlKTsKLSAgc3RhdGljIGJvb2wgUGFydGlhbE1hdGNoKGNvbnN0IGNoYXIq
IHN0ciwgY29uc3QgUkUmIHJlKTsKLQotIHByaXZhdGU6Ci0gIHZvaWQgSW5pdChjb25zdCBjaGFy
KiByZWdleCk7Ci0KLSAgLy8gV2UgdXNlIGEgY29uc3QgY2hhciogaW5zdGVhZCBvZiBhbiBzdGQ6
OnN0cmluZywgYXMgR29vZ2xlIFRlc3QgdXNlZCB0byBiZQotICAvLyB1c2VkIHdoZXJlIHN0ZDo6
c3RyaW5nIGlzIG5vdCBhdmFpbGFibGUuICBUT0RPKHdhbkBnb29nbGUuY29tKTogY2hhbmdlIHRv
Ci0gIC8vIHN0ZDo6c3RyaW5nLgotICBjb25zdCBjaGFyKiBwYXR0ZXJuXzsKLSAgYm9vbCBpc192
YWxpZF87Ci0KLSNpZiBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLSAgcmVnZXhfdCBmdWxsX3JlZ2V4
XzsgICAgIC8vIEZvciBGdWxsTWF0Y2goKS4KLSAgcmVnZXhfdCBwYXJ0aWFsX3JlZ2V4XzsgIC8v
IEZvciBQYXJ0aWFsTWF0Y2goKS4KLQotI2Vsc2UgIC8vIEdURVNUX1VTRVNfU0lNUExFX1JFCi0K
LSAgY29uc3QgY2hhciogZnVsbF9wYXR0ZXJuXzsgIC8vIEZvciBGdWxsTWF0Y2goKTsKLQotI2Vu
ZGlmCi0KLSAgR1RFU1RfRElTQUxMT1dfQVNTSUdOXyhSRSk7Ci19OwotCi0vLyBGb3JtYXRzIGEg
c291cmNlIGZpbGUgcGF0aCBhbmQgYSBsaW5lIG51bWJlciBhcyB0aGV5IHdvdWxkIGFwcGVhcgot
Ly8gaW4gYW4gZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBjb21waWxlciB1c2VkIHRvIGNvbXBpbGUg
dGhpcyBjb2RlLgotR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdEZpbGVMb2NhdGlvbihj
b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Ci0KLS8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9u
IGZvciBjb21waWxlci1pbmRlcGVuZGVudCBYTUwgb3V0cHV0LgotLy8gQWx0aG91Z2ggdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGxhdGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bwotLy8g
Rm9ybWF0RmlsZUxvY2F0aW9uIGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25z
LgotR1RFU1RfQVBJXyA6OnN0ZDo6c3RyaW5nIEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxl
TG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lKTsKLQotLy8gRGVmaW5l
cyBsb2dnaW5nIHV0aWxpdGllczoKLS8vICAgR1RFU1RfTE9HXyhzZXZlcml0eSkgLSBsb2dzIG1l
c3NhZ2VzIGF0IHRoZSBzcGVjaWZpZWQgc2V2ZXJpdHkgbGV2ZWwuIFRoZQotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgaXRzZWxmIGlzIHN0cmVhbWVkIGludG8gdGhlIG1hY3Jv
LgotLy8gICBMb2dUb1N0ZGVycigpICAtIGRpcmVjdHMgYWxsIGxvZyBtZXNzYWdlcyB0byBzdGRl
cnIuCi0vLyAgIEZsdXNoSW5mb0xvZygpIC0gZmx1c2hlcyBpbmZvcm1hdGlvbmFsIGxvZyBtZXNz
YWdlcy4KLQotZW51bSBHVGVzdExvZ1NldmVyaXR5IHsKLSAgR1RFU1RfSU5GTywKLSAgR1RFU1Rf
V0FSTklORywKLSAgR1RFU1RfRVJST1IsCi0gIEdURVNUX0ZBVEFMCi19OwotCi0vLyBGb3JtYXRz
IGxvZyBlbnRyeSBzZXZlcml0eSwgcHJvdmlkZXMgYSBzdHJlYW0gb2JqZWN0IGZvciBzdHJlYW1p
bmcgdGhlCi0vLyBsb2cgbWVzc2FnZSwgYW5kIHRlcm1pbmF0ZXMgdGhlIG1lc3NhZ2Ugd2l0aCBh
IG5ld2xpbmUgd2hlbiBnb2luZyBvdXQgb2YKLS8vIHNjb3BlLgotY2xhc3MgR1RFU1RfQVBJXyBH
VGVzdExvZyB7Ci0gcHVibGljOgotICBHVGVzdExvZyhHVGVzdExvZ1NldmVyaXR5IHNldmVyaXR5
LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7Ci0KLSAgLy8gRmx1c2hlcyB0aGUgYnVmZmVy
cyBhbmQsIGlmIHNldmVyaXR5IGlzIEdURVNUX0ZBVEFMLCBhYm9ydHMgdGhlIHByb2dyYW0uCi0g
IH5HVGVzdExvZygpOwotCi0gIDo6c3RkOjpvc3RyZWFtJiBHZXRTdHJlYW0oKSB7IHJldHVybiA6
OnN0ZDo6Y2VycjsgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgR1Rlc3RMb2dTZXZlcml0eSBzZXZl
cml0eV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhHVGVzdExvZyk7Ci19
OwotCi0jaWYgIWRlZmluZWQoR1RFU1RfTE9HXykKLQotIyBkZWZpbmUgR1RFU1RfTE9HXyhzZXZl
cml0eSkgXAotICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0TG9nKDo6dGVzdGluZzo6aW50
ZXJuYWw6OkdURVNUXyMjc2V2ZXJpdHksIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18pLkdldFN0cmVhbSgpCi0KLWlubGluZSB2b2lkIExvZ1Rv
U3RkZXJyKCkge30KLWlubGluZSB2b2lkIEZsdXNoSW5mb0xvZygpIHsgZmZsdXNoKE5VTEwpOyB9
Ci0KLSNlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfTE9HXykKLQotI2lmICFkZWZpbmVkKEdURVNU
X0NIRUNLXykKLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRS4KLS8vCi0v
LyBHVEVTVF9DSEVDS18gaXMgYW4gYWxsLW1vZGUgYXNzZXJ0LiBJdCBhYm9ydHMgdGhlIHByb2dy
YW0gaWYgdGhlIGNvbmRpdGlvbgotLy8gaXMgbm90IHNhdGlzZmllZC4KLS8vICBTeW5vcHN5czoK
LS8vICAgIEdURVNUX0NIRUNLXyhib29sZWFuX2NvbmRpdGlvbik7Ci0vLyAgICAgb3IKLS8vICAg
IEdURVNUX0NIRUNLXyhib29sZWFuX2NvbmRpdGlvbikgPDwgIkFkZGl0aW9uYWwgbWVzc2FnZSI7
Ci0vLwotLy8gICAgVGhpcyBjaGVja3MgdGhlIGNvbmRpdGlvbiBhbmQgaWYgdGhlIGNvbmRpdGlv
biBpcyBub3Qgc2F0aXNmaWVkCi0vLyAgICBpdCBwcmludHMgbWVzc2FnZSBhYm91dCB0aGUgY29u
ZGl0aW9uIHZpb2xhdGlvbiwgaW5jbHVkaW5nIHRoZQotLy8gICAgY29uZGl0aW9uIGl0c2VsZiwg
cGx1cyBhZGRpdGlvbmFsIG1lc3NhZ2Ugc3RyZWFtZWQgaW50byBpdCwgaWYgYW55LAotLy8gICAg
YW5kIHRoZW4gaXQgYWJvcnRzIHRoZSBwcm9ncmFtLiBJdCBhYm9ydHMgdGhlIHByb2dyYW0gaXJy
ZXNwZWN0aXZlIG9mCi0vLyAgICB3aGV0aGVyIGl0IGlzIGJ1aWx0IGluIHRoZSBkZWJ1ZyBtb2Rl
IG9yIG5vdC4KLSMgZGVmaW5lIEdURVNUX0NIRUNLXyhjb25kaXRpb24pIFwKLSAgICBHVEVTVF9B
TUJJR1VPVVNfRUxTRV9CTE9DS0VSXyBcCi0gICAgaWYgKDo6dGVzdGluZzo6aW50ZXJuYWw6Oklz
VHJ1ZShjb25kaXRpb24pKSBcCi0gICAgICA7IFwKLSAgICBlbHNlIFwKLSAgICAgIEdURVNUX0xP
R18oRkFUQUwpIDw8ICJDb25kaXRpb24gIiAjY29uZGl0aW9uICIgZmFpbGVkLiAiCi0jZW5kaWYg
IC8vICFkZWZpbmVkKEdURVNUX0NIRUNLXykKLQotLy8gQW4gYWxsLW1vZGUgYXNzZXJ0IHRvIHZl
cmlmeSB0aGF0IHRoZSBnaXZlbiBQT1NJWC1zdHlsZSBmdW5jdGlvbgotLy8gY2FsbCByZXR1cm5z
IDAgKGluZGljYXRpbmcgc3VjY2VzcykuICBLbm93biBsaW1pdGF0aW9uOiB0aGlzCi0vLyBkb2Vz
bid0IGV4cGFuZCB0byBhIGJhbGFuY2VkICdpZicgc3RhdGVtZW50LCBzbyBlbmNsb3NlIHRoZSBt
YWNybwotLy8gaW4ge30gaWYgeW91IG5lZWQgdG8gdXNlIGl0IGFzIHRoZSBvbmx5IHN0YXRlbWVu
dCBpbiBhbiAnaWYnCi0vLyBicmFuY2guCi0jZGVmaW5lIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NF
U1NfKHBvc2l4X2NhbGwpIFwKLSAgaWYgKGNvbnN0IGludCBndGVzdF9lcnJvciA9IChwb3NpeF9j
YWxsKSkgXAotICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICNwb3NpeF9jYWxsIDw8ICJmYWlsZWQg
d2l0aCBlcnJvciAiIFwKLSAgICAgICAgICAgICAgICAgICAgICA8PCBndGVzdF9lcnJvcgotCi0j
aWYgR1RFU1RfSEFTX1NURF9NT1ZFXwotdXNpbmcgc3RkOjptb3ZlOwotI2Vsc2UgIC8vIEdURVNU
X0hBU19TVERfTU9WRV8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY29uc3QgVCYgbW92ZShjb25z
dCBUJiB0KSB7Ci0gIHJldHVybiB0OwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX01PVkVf
Ci0KLS8vIElOVEVSTkFMIElNUExFTUVOVEFUSU9OIC0gRE8gTk9UIFVTRSBJTiBVU0VSIENPREUu
Ci0vLwotLy8gVXNlIEltcGxpY2l0Q2FzdF8gYXMgYSBzYWZlIHZlcnNpb24gb2Ygc3RhdGljX2Nh
c3QgZm9yIHVwY2FzdGluZyBpbgotLy8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuIGNhc3Rpbmcg
YSBGb28qIHRvIGEgU3VwZXJjbGFzc09mRm9vKiBvciBhCi0vLyBjb25zdCBGb28qKS4gIFdoZW4g
eW91IHVzZSBJbXBsaWNpdENhc3RfLCB0aGUgY29tcGlsZXIgY2hlY2tzIHRoYXQKLS8vIHRoZSBj
YXN0IGlzIHNhZmUuICBTdWNoIGV4cGxpY2l0IEltcGxpY2l0Q2FzdF9zIGFyZSBuZWNlc3Nhcnkg
aW4KLS8vIHN1cnByaXNpbmdseSBtYW55IHNpdHVhdGlvbnMgd2hlcmUgQysrIGRlbWFuZHMgYW4g
ZXhhY3QgdHlwZSBtYXRjaAotLy8gaW5zdGVhZCBvZiBhbiBhcmd1bWVudCB0eXBlIGNvbnZlcnRh
YmxlIHRvIGEgdGFyZ2V0IHR5cGUuCi0vLwotLy8gVGhlIHN5bnRheCBmb3IgdXNpbmcgSW1wbGlj
aXRDYXN0XyBpcyB0aGUgc2FtZSBhcyBmb3Igc3RhdGljX2Nhc3Q6Ci0vLwotLy8gICBJbXBsaWNp
dENhc3RfPFRvVHlwZT4oZXhwcikKLS8vCi0vLyBJbXBsaWNpdENhc3RfIHdvdWxkIGhhdmUgYmVl
biBwYXJ0IG9mIHRoZSBDKysgc3RhbmRhcmQgbGlicmFyeSwKLS8vIGJ1dCB0aGUgcHJvcG9zYWwg
d2FzIHN1Ym1pdHRlZCB0b28gbGF0ZS4gIEl0IHdpbGwgcHJvYmFibHkgbWFrZQotLy8gaXRzIHdh
eSBpbnRvIHRoZSBsYW5ndWFnZSBpbiB0aGUgZnV0dXJlLgotLy8KLS8vIFRoaXMgcmVsYXRpdmVs
eSB1Z2x5IG5hbWUgaXMgaW50ZW50aW9uYWwuIEl0IHByZXZlbnRzIGNsYXNoZXMgd2l0aAotLy8g
c2ltaWxhciBmdW5jdGlvbnMgdXNlcnMgbWF5IGhhdmUgKGUuZy4sIGltcGxpY2l0X2Nhc3QpLiBU
aGUgaW50ZXJuYWwKLS8vIG5hbWVzcGFjZSBhbG9uZSBpcyBub3QgZW5vdWdoIGJlY2F1c2UgdGhl
IGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCi10ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KLWlu
bGluZSBUbyBJbXBsaWNpdENhc3RfKFRvIHgpIHsgcmV0dXJuIHg7IH0KLQotLy8gV2hlbiB5b3Ug
dXBjYXN0ICh0aGF0IGlzLCBjYXN0IGEgcG9pbnRlciBmcm9tIHR5cGUgRm9vIHRvIHR5cGUKLS8v
IFN1cGVyY2xhc3NPZkZvbyksIGl0J3MgZmluZSB0byB1c2UgSW1wbGljaXRDYXN0Xzw+LCBzaW5j
ZSB1cGNhc3RzCi0vLyBhbHdheXMgc3VjY2VlZC4gIFdoZW4geW91IGRvd25jYXN0ICh0aGF0IGlz
LCBjYXN0IGEgcG9pbnRlciBmcm9tCi0vLyB0eXBlIEZvbyB0byB0eXBlIFN1YmNsYXNzT2ZGb28p
LCBzdGF0aWNfY2FzdDw+IGlzbid0IHNhZmUsIGJlY2F1c2UKLS8vIGhvdyBkbyB5b3Uga25vdyB0
aGUgcG9pbnRlciBpcyByZWFsbHkgb2YgdHlwZSBTdWJjbGFzc09mRm9vPyAgSXQKLS8vIGNvdWxk
IGJlIGEgYmFyZSBGb28sIG9yIG9mIHR5cGUgRGlmZmVyZW50U3ViY2xhc3NPZkZvby4gIFRodXMs
Ci0vLyB3aGVuIHlvdSBkb3duY2FzdCwgeW91IHNob3VsZCB1c2UgdGhpcyBtYWNyby4gIEluIGRl
YnVnIG1vZGUsIHdlCi0vLyB1c2UgZHluYW1pY19jYXN0PD4gdG8gZG91YmxlLWNoZWNrIHRoZSBk
b3duY2FzdCBpcyBsZWdhbCAod2UgZGllCi0vLyBpZiBpdCdzIG5vdCkuICBJbiBub3JtYWwgbW9k
ZSwgd2UgZG8gdGhlIGVmZmljaWVudCBzdGF0aWNfY2FzdDw+Ci0vLyBpbnN0ZWFkLiAgVGh1cywg
aXQncyBpbXBvcnRhbnQgdG8gdGVzdCBpbiBkZWJ1ZyBtb2RlIHRvIG1ha2Ugc3VyZQotLy8gdGhl
IGNhc3QgaXMgbGVnYWwhCi0vLyAgICBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIGluIHRoZSBjb2Rl
IHdlIHNob3VsZCB1c2UgZHluYW1pY19jYXN0PD4uCi0vLyBJbiBwYXJ0aWN1bGFyLCB5b3UgU0hP
VUxETidUIGJlIHVzaW5nIGR5bmFtaWNfY2FzdDw+IGluIG9yZGVyIHRvCi0vLyBkbyBSVFRJIChl
ZyBjb2RlIGxpa2UgdGhpczoKLS8vICAgIGlmIChkeW5hbWljX2Nhc3Q8U3ViY2xhc3MxPihmb28p
KSBIYW5kbGVBU3ViY2xhc3MxT2JqZWN0KGZvbyk7Ci0vLyAgICBpZiAoZHluYW1pY19jYXN0PFN1
YmNsYXNzMj4oZm9vKSkgSGFuZGxlQVN1YmNsYXNzMk9iamVjdChmb28pOwotLy8gWW91IHNob3Vs
ZCBkZXNpZ24gdGhlIGNvZGUgc29tZSBvdGhlciB3YXkgbm90IHRvIG5lZWQgdGhpcy4KLS8vCi0v
LyBUaGlzIHJlbGF0aXZlbHkgdWdseSBuYW1lIGlzIGludGVudGlvbmFsLiBJdCBwcmV2ZW50cyBj
bGFzaGVzIHdpdGgKLS8vIHNpbWlsYXIgZnVuY3Rpb25zIHVzZXJzIG1heSBoYXZlIChlLmcuLCBk
b3duX2Nhc3QpLiBUaGUgaW50ZXJuYWwKLS8vIG5hbWVzcGFjZSBhbG9uZSBpcyBub3QgZW5vdWdo
IGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBieSBBREwuCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUbywgdHlwZW5hbWUgRnJvbT4gIC8vIHVzZSBsaWtlIHRoaXM6IERvd25DYXN0XzxUKj4o
Zm9vKTsKLWlubGluZSBUbyBEb3duQ2FzdF8oRnJvbSogZikgeyAgLy8gc28gd2Ugb25seSBhY2Nl
cHQgcG9pbnRlcnMKLSAgLy8gRW5zdXJlcyB0aGF0IFRvIGlzIGEgc3ViLXR5cGUgb2YgRnJvbSAq
LiAgVGhpcyB0ZXN0IGlzIGhlcmUgb25seQotICAvLyBmb3IgY29tcGlsZS10aW1lIHR5cGUgY2hl
Y2tpbmcsIGFuZCBoYXMgbm8gb3ZlcmhlYWQgaW4gYW4KLSAgLy8gb3B0aW1pemVkIGJ1aWxkIGF0
IHJ1bi10aW1lLCBhcyBpdCB3aWxsIGJlIG9wdGltaXplZCBhd2F5Ci0gIC8vIGNvbXBsZXRlbHku
Ci0gIEdURVNUX0lOVEVOVElPTkFMX0NPTlNUX0NPTkRfUFVTSF8oKQotICBpZiAoZmFsc2UpIHsK
LSAgR1RFU1RfSU5URU5USU9OQUxfQ09OU1RfQ09ORF9QT1BfKCkKLSAgICBjb25zdCBUbyB0byA9
IE5VTEw7Ci0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxGcm9tKj4odG8p
OwotICB9Ci0KLSNpZiBHVEVTVF9IQVNfUlRUSQotICAvLyBSVFRJOiBkZWJ1ZyBtb2RlIG9ubHkh
Ci0gIEdURVNUX0NIRUNLXyhmID09IE5VTEwgfHwgZHluYW1pY19jYXN0PFRvPihmKSAhPSBOVUxM
KTsKLSNlbmRpZgotICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8+KGYpOwotfQotCi0vLyBEb3duY2Fz
dHMgdGhlIHBvaW50ZXIgb2YgdHlwZSBCYXNlIHRvIERlcml2ZWQuCi0vLyBEZXJpdmVkIG11c3Qg
YmUgYSBzdWJjbGFzcyBvZiBCYXNlLiBUaGUgcGFyYW1ldGVyIE1VU1QKLS8vIHBvaW50IHRvIGEg
Y2xhc3Mgb2YgdHlwZSBEZXJpdmVkLCBub3QgYW55IHN1YmNsYXNzIG9mIGl0LgotLy8gV2hlbiBS
VFRJIGlzIGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHBlcmZvcm1zIGEgcnVudGltZQotLy8gY2hl
Y2sgdG8gZW5mb3JjZSB0aGlzLgotdGVtcGxhdGUgPGNsYXNzIERlcml2ZWQsIGNsYXNzIEJhc2U+
Ci1EZXJpdmVkKiBDaGVja2VkRG93bmNhc3RUb0FjdHVhbFR5cGUoQmFzZSogYmFzZSkgewotI2lm
IEdURVNUX0hBU19SVFRJCi0gIEdURVNUX0NIRUNLXyh0eXBlaWQoKmJhc2UpID09IHR5cGVpZChE
ZXJpdmVkKSk7Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hBU19ET1dOQ0FTVF8KLSAgcmV0dXJuIDo6
ZG93bl9jYXN0PERlcml2ZWQqPihiYXNlKTsKLSNlbGlmIEdURVNUX0hBU19SVFRJCi0gIHJldHVy
biBkeW5hbWljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gTk9MSU5UCi0jZWxzZQotICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KGJhc2UpOyAgLy8gUG9vciBtYW4ncyBkb3duY2FzdC4K
LSNlbmRpZgotfQotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBEZWZp
bmVzIHRoZSBzdGRlcnIgY2FwdHVyZXI6Ci0vLyAgIENhcHR1cmVTdGRvdXQgICAgIC0gc3RhcnRz
IGNhcHR1cmluZyBzdGRvdXQuCi0vLyAgIEdldENhcHR1cmVkU3Rkb3V0IC0gc3RvcHMgY2FwdHVy
aW5nIHN0ZG91dCBhbmQgcmV0dXJucyB0aGUgY2FwdHVyZWQgc3RyaW5nLgotLy8gICBDYXB0dXJl
U3RkZXJyICAgICAtIHN0YXJ0cyBjYXB0dXJpbmcgc3RkZXJyLgotLy8gICBHZXRDYXB0dXJlZFN0
ZGVyciAtIHN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNhcHR1cmVkIHN0
cmluZy4KLS8vCi1HVEVTVF9BUElfIHZvaWQgQ2FwdHVyZVN0ZG91dCgpOwotR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0ZG91dCgpOwotR1RFU1RfQVBJXyB2b2lkIENhcHR1cmVT
dGRlcnIoKTsKLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdGRlcnIoKTsKLQot
I2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLS8vIFJldHVybnMgdGhl
IHNpemUgKGluIGJ5dGVzKSBvZiBhIGZpbGUuCi1HVEVTVF9BUElfIHNpemVfdCBHZXRGaWxlU2l6
ZShGSUxFKiBmaWxlKTsKLQotLy8gUmVhZHMgdGhlIGVudGlyZSBjb250ZW50IG9mIGEgZmlsZSBh
cyBhIHN0cmluZy4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgUmVhZEVudGlyZUZpbGUoRklMRSog
ZmlsZSk7Ci0KLS8vIEFsbCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgotR1RFU1RfQVBJXyBjb25z
dCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+JiBHZXRBcmd2cygpOwot
Ci0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5n
OjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0YWJsZUFyZ3ZzKCk7Ci12b2lkIFNldEluamVj
dGFibGVBcmd2cyhjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJpbmc+
KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfYXJndnMpOwotCi0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gRGVmaW5lcyBzeW5jaHJvbml6YXRpb24gcHJp
bWl0aXZlcy4KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0jIGlmIEdURVNUX0hBU19QVEhSRUFE
Ci0vLyBTbGVlcHMgZm9yIChyb3VnaGx5KSBuIG1pbGxpc2Vjb25kcy4gIFRoaXMgZnVuY3Rpb24g
aXMgb25seSBmb3IgdGVzdGluZwotLy8gR29vZ2xlIFRlc3QncyBvd24gY29uc3RydWN0cy4gIERv
bid0IHVzZSBpdCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIKLS8vIGRpcmVjdGx5IG9yIGluZGlyZWN0
bHkuCi1pbmxpbmUgdm9pZCBTbGVlcE1pbGxpc2Vjb25kcyhpbnQgbikgewotICBjb25zdCB0aW1l
c3BlYyB0aW1lID0gewotICAgIDAsICAgICAgICAgICAgICAgICAgLy8gMCBzZWNvbmRzLgotICAg
IG4gKiAxMDAwTCAqIDEwMDBMLCAgLy8gQW5kIG4gbXMuCi0gIH07Ci0gIG5hbm9zbGVlcCgmdGlt
ZSwgTlVMTCk7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9IQVNfUFRIUkVBRAotCi0jIGlmIEdURVNU
X0hBU19OT1RJRklDQVRJT05fCi0vLyBOb3RpZmljYXRpb24gaGFzIGFscmVhZHkgYmVlbiBpbXBv
cnRlZCBpbnRvIHRoZSBuYW1lc3BhY2UuCi0vLyBOb3RoaW5nIHRvIGRvIGhlcmUuCi0KLSMgZWxp
ZiBHVEVTVF9IQVNfUFRIUkVBRAotLy8gQWxsb3dzIGEgY29udHJvbGxlciB0aHJlYWQgdG8gcGF1
c2UgZXhlY3V0aW9uIG9mIG5ld2x5IGNyZWF0ZWQKLS8vIHRocmVhZHMgdW50aWwgbm90aWZpZWQu
ICBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBtdXN0IGJlIGNyZWF0ZWQKLS8vIGFuZCBkZXN0cm95
ZWQgaW4gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgotLy8KLS8vIFRoaXMgY2xhc3MgaXMgb25seSBm
b3IgdGVzdGluZyBHb29nbGUgVGVzdCdzIG93biBjb25zdHJ1Y3RzLiBEbyBub3QKLS8vIHVzZSBp
dCBpbiB1c2VyIHRlc3RzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KLWNsYXNzIE5v
dGlmaWNhdGlvbiB7Ci0gcHVibGljOgotICBOb3RpZmljYXRpb24oKSA6IG5vdGlmaWVkXyhmYWxz
ZSkgewotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgm
bXV0ZXhfLCBOVUxMKSk7Ci0gIH0KLSAgfk5vdGlmaWNhdGlvbigpIHsKLSAgICBwdGhyZWFkX211
dGV4X2Rlc3Ryb3koJm11dGV4Xyk7Ci0gIH0KLQotICAvLyBOb3RpZmllcyBhbGwgdGhyZWFkcyBj
cmVhdGVkIHdpdGggdGhpcyBub3RpZmljYXRpb24gdG8gc3RhcnQuIE11c3QKLSAgLy8gYmUgY2Fs
bGVkIGZyb20gdGhlIGNvbnRyb2xsZXIgdGhyZWFkLgotICB2b2lkIE5vdGlmeSgpIHsKLSAgICBw
dGhyZWFkX211dGV4X2xvY2soJm11dGV4Xyk7Ci0gICAgbm90aWZpZWRfID0gdHJ1ZTsKLSAgICBw
dGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXhfKTsKLSAgfQotCi0gIC8vIEJsb2NrcyB1bnRpbCB0
aGUgY29udHJvbGxlciB0aHJlYWQgbm90aWZpZXMuIE11c3QgYmUgY2FsbGVkIGZyb20gYSB0ZXN0
Ci0gIC8vIHRocmVhZC4KLSAgdm9pZCBXYWl0Rm9yTm90aWZpY2F0aW9uKCkgewotICAgIGZvciAo
OzspIHsKLSAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXhfKTsKLSAgICAgIGNvbnN0IGJv
b2wgbm90aWZpZWQgPSBub3RpZmllZF87Ci0gICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0
ZXhfKTsKLSAgICAgIGlmIChub3RpZmllZCkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBTbGVlcE1p
bGxpc2Vjb25kcygxMCk7Ci0gICAgfQotICB9Ci0KLSBwcml2YXRlOgotICBwdGhyZWFkX211dGV4
X3QgbXV0ZXhfOwotICBib29sIG5vdGlmaWVkXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKE5vdGlmaWNhdGlvbik7Ci19OwotCi0jIGVsaWYgR1RFU1RfT1NfV0lORE9XUyAm
JiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAotCi1HVEVT
VF9BUElfIHZvaWQgU2xlZXBNaWxsaXNlY29uZHMoaW50IG4pOwotCi0vLyBQcm92aWRlcyBsZWFr
LXNhZmUgV2luZG93cyBrZXJuZWwgaGFuZGxlIG93bmVyc2hpcC4KLS8vIFVzZWQgaW4gZGVhdGgg
dGVzdHMgYW5kIGluIHRocmVhZGluZyBzdXBwb3J0LgotY2xhc3MgR1RFU1RfQVBJXyBBdXRvSGFu
ZGxlIHsKLSBwdWJsaWM6Ci0gIC8vIEFzc3VtZSB0aGF0IFdpbjMyIEhBTkRMRSB0eXBlIGlzIGVx
dWl2YWxlbnQgdG8gdm9pZCouIERvaW5nIHNvIGFsbG93cyB1cyB0bwotICAvLyBhdm9pZCBpbmNs
dWRpbmcgPHdpbmRvd3MuaD4gaW4gdGhpcyBoZWFkZXIgZmlsZS4gSW5jbHVkaW5nIDx3aW5kb3dz
Lmg+IGlzCi0gIC8vIHVuZGVzaXJhYmxlIGJlY2F1c2UgaXQgZGVmaW5lcyBhIGxvdCBvZiBzeW1i
b2xzIGFuZCBtYWNyb3MgdGhhdCB0ZW5kIHRvCi0gIC8vIGNvbmZsaWN0IHdpdGggY2xpZW50IGNv
ZGUuIFRoaXMgYXNzdW1wdGlvbiBpcyB2ZXJpZmllZCBieQotICAvLyBXaW5kb3dzVHlwZXNUZXN0
LkhBTkRMRUlzVm9pZFN0YXIuCi0gIHR5cGVkZWYgdm9pZCogSGFuZGxlOwotICBBdXRvSGFuZGxl
KCk7Ci0gIGV4cGxpY2l0IEF1dG9IYW5kbGUoSGFuZGxlIGhhbmRsZSk7Ci0KLSAgfkF1dG9IYW5k
bGUoKTsKLQotICBIYW5kbGUgR2V0KCkgY29uc3Q7Ci0gIHZvaWQgUmVzZXQoKTsKLSAgdm9pZCBS
ZXNldChIYW5kbGUgaGFuZGxlKTsKLQotIHByaXZhdGU6Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZmYg
dGhlIGhhbmRsZSBpcyBhIHZhbGlkIGhhbmRsZSBvYmplY3QgdGhhdCBjYW4gYmUgY2xvc2VkLgot
ICBib29sIElzQ2xvc2VhYmxlKCkgY29uc3Q7Ci0KLSAgSGFuZGxlIGhhbmRsZV87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhBdXRvSGFuZGxlKTsKLX07Ci0KLS8vIEFsbG93
cyBhIGNvbnRyb2xsZXIgdGhyZWFkIHRvIHBhdXNlIGV4ZWN1dGlvbiBvZiBuZXdseSBjcmVhdGVk
Ci0vLyB0aHJlYWRzIHVudGlsIG5vdGlmaWVkLiAgSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgbXVz
dCBiZSBjcmVhdGVkCi0vLyBhbmQgZGVzdHJveWVkIGluIHRoZSBjb250cm9sbGVyIHRocmVhZC4K
LS8vCi0vLyBUaGlzIGNsYXNzIGlzIG9ubHkgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24g
Y29uc3RydWN0cy4gRG8gbm90Ci0vLyB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVyIGRpcmVj
dGx5IG9yIGluZGlyZWN0bHkuCi1jbGFzcyBHVEVTVF9BUElfIE5vdGlmaWNhdGlvbiB7Ci0gcHVi
bGljOgotICBOb3RpZmljYXRpb24oKTsKLSAgdm9pZCBOb3RpZnkoKTsKLSAgdm9pZCBXYWl0Rm9y
Tm90aWZpY2F0aW9uKCk7Ci0KLSBwcml2YXRlOgotICBBdXRvSGFuZGxlIGV2ZW50XzsKLQotICBH
VEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKE5vdGlmaWNhdGlvbik7Ci19OwotIyBlbmRp
ZiAgLy8gR1RFU1RfSEFTX05PVElGSUNBVElPTl8KLQotLy8gT24gTWluR1csIHdlIGNhbiBoYXZl
IGJvdGggR1RFU1RfT1NfV0lORE9XUyBhbmQgR1RFU1RfSEFTX1BUSFJFQUQKLS8vIGRlZmluZWQs
IGJ1dCB3ZSBkb24ndCB3YW50IHRvIHVzZSBNaW5HVydzIHB0aHJlYWRzIGltcGxlbWVudGF0aW9u
LCB3aGljaAotLy8gaGFzIGNvbmZvcm1hbmNlIHByb2JsZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBv
ZiB0aGUgUE9TSVggc3RhbmRhcmQuCi0jIGlmIEdURVNUX0hBU19QVEhSRUFEICYmICFHVEVTVF9P
U19XSU5ET1dTX01JTkdXCi0KLS8vIEFzIGEgQy1mdW5jdGlvbiwgVGhyZWFkRnVuY1dpdGhDTGlu
a2FnZSBjYW5ub3QgYmUgdGVtcGxhdGVkIGl0c2VsZi4KLS8vIENvbnNlcXVlbnRseSwgaXQgY2Fu
bm90IHNlbGVjdCBhIGNvcnJlY3QgaW5zdGFudGlhdGlvbiBvZiBUaHJlYWRXaXRoUGFyYW0KLS8v
IGluIG9yZGVyIHRvIGNhbGwgaXRzIFJ1bigpLiBJbnRyb2R1Y2luZyBUaHJlYWRXaXRoUGFyYW1C
YXNlIGFzIGEKLS8vIG5vbi10ZW1wbGF0ZWQgYmFzZSBjbGFzcyBmb3IgVGhyZWFkV2l0aFBhcmFt
IGFsbG93cyB1cyB0byBieXBhc3MgdGhpcwotLy8gcHJvYmxlbS4KLWNsYXNzIFRocmVhZFdpdGhQ
YXJhbUJhc2UgewotIHB1YmxpYzoKLSAgdmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpIHt9
Ci0gIHZpcnR1YWwgdm9pZCBSdW4oKSA9IDA7Ci19OwotCi0vLyBwdGhyZWFkX2NyZWF0ZSgpIGFj
Y2VwdHMgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdHlwZSB3aXRoIHRoZSBDIGxpbmthZ2UuCi0v
LyBBY2NvcmRpbmcgdG8gdGhlIFN0YW5kYXJkICg3LjUvMSksIGZ1bmN0aW9uIHR5cGVzIHdpdGgg
ZGlmZmVyZW50IGxpbmthZ2VzCi0vLyBhcmUgZGlmZmVyZW50IGV2ZW4gaWYgdGhleSBhcmUgb3Ro
ZXJ3aXNlIGlkZW50aWNhbC4gIFNvbWUgY29tcGlsZXJzIChmb3IKLS8vIGV4YW1wbGUsIFN1blN0
dWRpbykgdHJlYXQgdGhlbSBhcyBkaWZmZXJlbnQgdHlwZXMuICBTaW5jZSBjbGFzcyBtZXRob2Rz
Ci0vLyBjYW5ub3QgYmUgZGVmaW5lZCB3aXRoIEMtbGlua2FnZSB3ZSBuZWVkIHRvIGRlZmluZSBh
IGZyZWUgQy1mdW5jdGlvbiB0bwotLy8gcGFzcyBpbnRvIHB0aHJlYWRfY3JlYXRlKCkuCi1leHRl
cm4gIkMiIGlubGluZSB2b2lkKiBUaHJlYWRGdW5jV2l0aENMaW5rYWdlKHZvaWQqIHRocmVhZCkg
ewotICBzdGF0aWNfY2FzdDxUaHJlYWRXaXRoUGFyYW1CYXNlKj4odGhyZWFkKS0+UnVuKCk7Ci0g
IHJldHVybiBOVUxMOwotfQotCi0vLyBIZWxwZXIgY2xhc3MgZm9yIHRlc3RpbmcgR29vZ2xlIFRl
c3QncyBtdWx0aS10aHJlYWRpbmcgY29uc3RydWN0cy4KLS8vIFRvIHVzZSBpdCwgd3JpdGU6Ci0v
LwotLy8gICB2b2lkIFRocmVhZEZ1bmMoaW50IHBhcmFtKSB7IC8qIERvIHRoaW5ncyB3aXRoIHBh
cmFtICovIH0KLS8vICAgTm90aWZpY2F0aW9uIHRocmVhZF9jYW5fc3RhcnQ7Ci0vLyAgIC4uLgot
Ly8gICAvLyBUaGUgdGhyZWFkX2Nhbl9zdGFydCBwYXJhbWV0ZXIgaXMgb3B0aW9uYWw7IHlvdSBj
YW4gc3VwcGx5IE5VTEwuCi0vLyAgIFRocmVhZFdpdGhQYXJhbTxpbnQ+IHRocmVhZCgmVGhyZWFk
RnVuYywgNSwgJnRocmVhZF9jYW5fc3RhcnQpOwotLy8gICB0aHJlYWRfY2FuX3N0YXJ0Lk5vdGlm
eSgpOwotLy8KLS8vIFRoZXNlIGNsYXNzZXMgYXJlIG9ubHkgZm9yIHRlc3RpbmcgR29vZ2xlIFRl
c3QncyBvd24gY29uc3RydWN0cy4gRG8KLS8vIG5vdCB1c2UgdGhlbSBpbiB1c2VyIHRlc3RzLCBl
aXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xh
c3MgVGhyZWFkV2l0aFBhcmFtIDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewotIHB1Ymxp
YzoKLSAgdHlwZWRlZiB2b2lkIFVzZXJUaHJlYWRGdW5jKFQpOwotCi0gIFRocmVhZFdpdGhQYXJh
bShVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSwgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2Fu
X3N0YXJ0KQotICAgICAgOiBmdW5jXyhmdW5jKSwKLSAgICAgICAgcGFyYW1fKHBhcmFtKSwKLSAg
ICAgICAgdGhyZWFkX2Nhbl9zdGFydF8odGhyZWFkX2Nhbl9zdGFydCksCi0gICAgICAgIGZpbmlz
aGVkXyhmYWxzZSkgewotICAgIFRocmVhZFdpdGhQYXJhbUJhc2UqIGNvbnN0IGJhc2UgPSB0aGlz
OwotICAgIC8vIFRoZSB0aHJlYWQgY2FuIGJlIGNyZWF0ZWQgb25seSBhZnRlciBhbGwgZmllbGRz
IGV4Y2VwdCB0aHJlYWRfCi0gICAgLy8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLgotICAgIEdURVNU
X0NIRUNLX1BPU0lYX1NVQ0NFU1NfKAotICAgICAgICBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkXywg
MCwgJlRocmVhZEZ1bmNXaXRoQ0xpbmthZ2UsIGJhc2UpKTsKLSAgfQotICB+VGhyZWFkV2l0aFBh
cmFtKCkgeyBKb2luKCk7IH0KLQotICB2b2lkIEpvaW4oKSB7Ci0gICAgaWYgKCFmaW5pc2hlZF8p
IHsKLSAgICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfam9pbih0aHJlYWRf
LCAwKSk7Ci0gICAgICBmaW5pc2hlZF8gPSB0cnVlOwotICAgIH0KLSAgfQotCi0gIHZpcnR1YWwg
dm9pZCBSdW4oKSB7Ci0gICAgaWYgKHRocmVhZF9jYW5fc3RhcnRfICE9IE5VTEwpCi0gICAgICB0
aHJlYWRfY2FuX3N0YXJ0Xy0+V2FpdEZvck5vdGlmaWNhdGlvbigpOwotICAgIGZ1bmNfKHBhcmFt
Xyk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFVzZXJUaHJlYWRGdW5jKiBjb25zdCBmdW5jXzsgIC8v
IFVzZXItc3VwcGxpZWQgdGhyZWFkIGZ1bmN0aW9uLgotICBjb25zdCBUIHBhcmFtXzsgIC8vIFVz
ZXItc3VwcGxpZWQgcGFyYW1ldGVyIHRvIHRoZSB0aHJlYWQgZnVuY3Rpb24uCi0gIC8vIFdoZW4g
bm9uLU5VTEwsIHVzZWQgdG8gYmxvY2sgZXhlY3V0aW9uIHVudGlsIHRoZSBjb250cm9sbGVyIHRo
cmVhZAotICAvLyBub3RpZmllcy4KLSAgTm90aWZpY2F0aW9uKiBjb25zdCB0aHJlYWRfY2FuX3N0
YXJ0XzsKLSAgYm9vbCBmaW5pc2hlZF87ICAvLyB0cnVlIGlmZiB3ZSBrbm93IHRoYXQgdGhlIHRo
cmVhZCBmdW5jdGlvbiBoYXMgZmluaXNoZWQuCi0gIHB0aHJlYWRfdCB0aHJlYWRfOyAgLy8gVGhl
IG5hdGl2ZSB0aHJlYWQgb2JqZWN0LgotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oVGhyZWFkV2l0aFBhcmFtKTsKLX07Ci0jIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUyAm
JiBHVEVTVF9IQVNfUFRIUkVBRCB8fAotICAgICAgICAgLy8gR1RFU1RfSEFTX01VVEVYX0FORF9U
SFJFQURfTE9DQUxfCi0KLSMgaWYgR1RFU1RfSEFTX01VVEVYX0FORF9USFJFQURfTE9DQUxfCi0v
LyBNdXRleCBhbmQgVGhyZWFkTG9jYWwgaGF2ZSBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQgaW50byB0
aGUgbmFtZXNwYWNlLgotLy8gTm90aGluZyB0byBkbyBoZXJlLgotCi0jIGVsaWYgR1RFU1RfT1Nf
V0lORE9XUyAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19S
VAotCi0vLyBNdXRleCBpbXBsZW1lbnRzIG11dGV4IG9uIFdpbmRvd3MgcGxhdGZvcm1zLiAgSXQg
aXMgdXNlZCBpbiBjb25qdW5jdGlvbgotLy8gd2l0aCBjbGFzcyBNdXRleExvY2s6Ci0vLwotLy8g
ICBNdXRleCBtdXRleDsKLS8vICAgLi4uCi0vLyAgIE11dGV4TG9jayBsb2NrKCZtdXRleCk7ICAv
LyBBY3F1aXJlcyB0aGUgbXV0ZXggYW5kIHJlbGVhc2VzIGl0IGF0IHRoZQotLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gZW5kIG9mIHRoZSBjdXJyZW50IHNjb3BlLgotLy8KLS8vIEEg
c3RhdGljIE11dGV4ICptdXN0KiBiZSBkZWZpbmVkIG9yIGRlY2xhcmVkIHVzaW5nIG9uZSBvZiB0
aGUgZm9sbG93aW5nCi0vLyBtYWNyb3M6Ci0vLyAgIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhf
KGdfc29tZV9tdXRleCk7Ci0vLyAgIEdURVNUX0RFQ0xBUkVfU1RBVElDX01VVEVYXyhnX3NvbWVf
bXV0ZXgpOwotLy8KLS8vIChBIG5vbi1zdGF0aWMgTXV0ZXggaXMgZGVmaW5lZC9kZWNsYXJlZCBp
biB0aGUgdXN1YWwgd2F5KS4KLWNsYXNzIEdURVNUX0FQSV8gTXV0ZXggewotIHB1YmxpYzoKLSAg
ZW51bSBNdXRleFR5cGUgeyBrU3RhdGljID0gMCwga0R5bmFtaWMgPSAxIH07Ci0gIC8vIFdlIHJl
bHkgb24ga1N0YXRpY011dGV4IGJlaW5nIDAgYXMgaXQgaXMgdG8gd2hhdCB0aGUgbGlua2VyIGlu
aXRpYWxpemVzCi0gIC8vIHR5cGVfIGluIHN0YXRpYyBtdXRleGVzLiAgY3JpdGljYWxfc2VjdGlv
bl8gd2lsbCBiZSBpbml0aWFsaXplZCBsYXppbHkKLSAgLy8gaW4gVGhyZWFkU2FmZUxhenlJbml0
KCkuCi0gIGVudW0gU3RhdGljQ29uc3RydWN0b3JTZWxlY3RvciB7IGtTdGF0aWNNdXRleCA9IDAg
fTsKLQotICAvLyBUaGlzIGNvbnN0cnVjdG9yIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nLiAg
SXQgcmVsaWVzIG9uIHR5cGVfIGJlaW5nCi0gIC8vIHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdG8g
MCAoZWZmZWN0aXZlbHkgc2V0dGluZyBpdCB0byBrU3RhdGljKSBhbmQgb24KLSAgLy8gVGhyZWFk
U2FmZUxhenlJbml0KCkgdG8gbGF6aWx5IGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgdGhlIG1lbWJl
cnMuCi0gIGV4cGxpY2l0IE11dGV4KFN0YXRpY0NvbnN0cnVjdG9yU2VsZWN0b3IgLypkdW1teSov
KSB7fQotCi0gIE11dGV4KCk7Ci0gIH5NdXRleCgpOwotCi0gIHZvaWQgTG9jaygpOwotCi0gIHZv
aWQgVW5sb2NrKCk7Ci0KLSAgLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBo
b2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcwotICAvLyB3aXRoIGhpZ2ggcHJvYmFi
aWxpdHkuCi0gIHZvaWQgQXNzZXJ0SGVsZCgpOwotCi0gcHJpdmF0ZToKLSAgLy8gSW5pdGlhbGl6
ZXMgb3duZXJfdGhyZWFkX2lkXyBhbmQgY3JpdGljYWxfc2VjdGlvbl8gaW4gc3RhdGljIG11dGV4
ZXMuCi0gIHZvaWQgVGhyZWFkU2FmZUxhenlJbml0KCk7Ci0KLSAgLy8gUGVyIGh0dHA6Ly9ibG9n
cy5tc2RuLmNvbS9iL29sZG5ld3RoaW5nL2FyY2hpdmUvMjAwNC8wMi8yMy83ODM5NS5hc3B4LAot
ICAvLyB3ZSBhc3N1bWUgdGhhdCAwIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRocmVhZCBJRHMu
Ci0gIHVuc2lnbmVkIGludCBvd25lcl90aHJlYWRfaWRfOwotCi0gIC8vIEZvciBzdGF0aWMgbXV0
ZXhlcywgd2UgcmVseSBvbiB0aGVzZSBtZW1iZXJzIGJlaW5nIGluaXRpYWxpemVkIHRvIHplcm9z
Ci0gIC8vIGJ5IHRoZSBsaW5rZXIuCi0gIE11dGV4VHlwZSB0eXBlXzsKLSAgbG9uZyBjcml0aWNh
bF9zZWN0aW9uX2luaXRfcGhhc2VfOyAgLy8gTk9MSU5UCi0gIEdURVNUX0NSSVRJQ0FMX1NFQ1RJ
T04qIGNyaXRpY2FsX3NlY3Rpb25fOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lH
Tl8oTXV0ZXgpOwotfTsKLQotIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVURVhfKG11
dGV4KSBcCi0gICAgZXh0ZXJuIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4Ci0KLSMg
ZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNfTVVURVhfKG11dGV4KSBcCi0gICAgOjp0ZXN0aW5n
OjppbnRlcm5hbDo6TXV0ZXggbXV0ZXgoOjp0ZXN0aW5nOjppbnRlcm5hbDo6TXV0ZXg6OmtTdGF0
aWNNdXRleCkKLQotLy8gV2UgY2Fubm90IG5hbWUgdGhpcyBjbGFzcyBNdXRleExvY2sgYmVjYXVz
ZSB0aGUgY3RvciBkZWNsYXJhdGlvbiB3b3VsZAotLy8gY29uZmxpY3Qgd2l0aCBhIG1hY3JvIG5h
bWVkIE11dGV4TG9jaywgd2hpY2ggaXMgZGVmaW5lZCBvbiBzb21lCi0vLyBwbGF0Zm9ybXMuIFRo
YXQgbWFjcm8gaXMgdXNlZCBhcyBhIGRlZmVuc2l2ZSBtZWFzdXJlIHRvIHByZXZlbnQgYWdhaW5z
dAotLy8gaW5hZHZlcnRlbnQgbWlzdXNlcyBvZiBNdXRleExvY2sgbGlrZSAiTXV0ZXhMb2NrKCZt
dSkiIHJhdGhlciB0aGFuCi0vLyAiTXV0ZXhMb2NrIGwoJm11KSIuICBIZW5jZSB0aGUgdHlwZWRl
ZiB0cmljayBiZWxvdy4KLWNsYXNzIEdUZXN0TXV0ZXhMb2NrIHsKLSBwdWJsaWM6Ci0gIGV4cGxp
Y2l0IEdUZXN0TXV0ZXhMb2NrKE11dGV4KiBtdXRleCkKLSAgICAgIDogbXV0ZXhfKG11dGV4KSB7
IG11dGV4Xy0+TG9jaygpOyB9Ci0KLSAgfkdUZXN0TXV0ZXhMb2NrKCkgeyBtdXRleF8tPlVubG9j
aygpOyB9Ci0KLSBwcml2YXRlOgotICBNdXRleCogY29uc3QgbXV0ZXhfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RNdXRleExvY2spOwotfTsKLQotdHlwZWRlZiBH
VGVzdE11dGV4TG9jayBNdXRleExvY2s7Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIFZhbHVlSG9sZGVy
PFQ+LiAgQWxsb3dzIGEgY2FsbGVyIHRvIGhvbGQgYW5kIGRlbGV0ZSBhIHZhbHVlCi0vLyB3aXRo
b3V0IGtub3dpbmcgaXRzIHR5cGUuCi1jbGFzcyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIH5UaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSgpIHt9Ci19
OwotCi0vLyBQcm92aWRlcyBhIHdheSBmb3IgYSB0aHJlYWQgdG8gc2VuZCBub3RpZmljYXRpb25z
IHRvIGEgVGhyZWFkTG9jYWwKLS8vIHJlZ2FyZGxlc3Mgb2YgaXRzIHBhcmFtZXRlciB0eXBlLgot
Y2xhc3MgVGhyZWFkTG9jYWxCYXNlIHsKLSBwdWJsaWM6Ci0gIC8vIENyZWF0ZXMgYSBuZXcgVmFs
dWVIb2xkZXI8VD4gb2JqZWN0IGhvbGRpbmcgYSBkZWZhdWx0IHZhbHVlIHBhc3NlZCB0bwotICAv
LyB0aGlzIFRocmVhZExvY2FsPFQ+J3MgY29uc3RydWN0b3IgYW5kIHJldHVybnMgaXQuICBJdCBp
cyB0aGUgY2FsbGVyJ3MKLSAgLy8gcmVzcG9uc2liaWxpdHkgbm90IHRvIGNhbGwgdGhpcyB3aGVu
IHRoZSBUaHJlYWRMb2NhbDxUPiBpbnN0YW5jZSBhbHJlYWR5Ci0gIC8vIGhhcyBhIHZhbHVlIG9u
IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgdmlydHVhbCBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFz
ZSogTmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkgY29uc3QgPSAwOwotCi0gcHJvdGVjdGVkOgot
ICBUaHJlYWRMb2NhbEJhc2UoKSB7fQotICB2aXJ0dWFsIH5UaHJlYWRMb2NhbEJhc2UoKSB7fQot
Ci0gcHJpdmF0ZToKLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2Nh
bEJhc2UpOwotfTsKLQotLy8gTWFwcyBhIHRocmVhZCB0byBhIHNldCBvZiBUaHJlYWRMb2NhbHMg
dGhhdCBoYXZlIHZhbHVlcyBpbnN0YW50aWF0ZWQgb24gdGhhdAotLy8gdGhyZWFkIGFuZCBub3Rp
ZmllcyB0aGVtIHdoZW4gdGhlIHRocmVhZCBleGl0cy4gIEEgVGhyZWFkTG9jYWwgaW5zdGFuY2Ug
aXMKLS8vIGV4cGVjdGVkIHRvIHBlcnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzIHZhbHVl
cyBvbiBoYXZlIHRlcm1pbmF0ZWQuCi1jbGFzcyBHVEVTVF9BUElfIFRocmVhZExvY2FsUmVnaXN0
cnkgewotIHB1YmxpYzoKLSAgLy8gUmVnaXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBo
YXZpbmcgdmFsdWUgb24gdGhlIGN1cnJlbnQgdGhyZWFkLgotICAvLyBSZXR1cm5zIGEgdmFsdWUg
dGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFk
cy4KLSAgc3RhdGljIFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVu
dFRocmVhZCgKLSAgICAgIGNvbnN0IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3Rh
bmNlKTsKLQotICAvLyBJbnZva2VkIHdoZW4gYSBUaHJlYWRMb2NhbCBpbnN0YW5jZSBpcyBkZXN0
cm95ZWQuCi0gIHN0YXRpYyB2b2lkIE9uVGhyZWFkTG9jYWxEZXN0cm95ZWQoCi0gICAgICBjb25z
dCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9sb2NhbF9pbnN0YW5jZSk7Ci19OwotCi1jbGFzcyBH
VEVTVF9BUElfIFRocmVhZFdpdGhQYXJhbUJhc2UgewotIHB1YmxpYzoKLSAgdm9pZCBKb2luKCk7
Ci0KLSBwcm90ZWN0ZWQ6Ci0gIGNsYXNzIFJ1bm5hYmxlIHsKLSAgIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5SdW5uYWJsZSgpIHt9Ci0gICAgdmlydHVhbCB2b2lkIFJ1bigpID0gMDsKLSAgfTsKLQot
ICBUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5hYmxlICpydW5uYWJsZSwgTm90aWZpY2F0aW9uKiB0
aHJlYWRfY2FuX3N0YXJ0KTsKLSAgdmlydHVhbCB+VGhyZWFkV2l0aFBhcmFtQmFzZSgpOwotCi0g
cHJpdmF0ZToKLSAgQXV0b0hhbmRsZSB0aHJlYWRfOwotfTsKLQotLy8gSGVscGVyIGNsYXNzIGZv
ciB0ZXN0aW5nIEdvb2dsZSBUZXN0J3MgbXVsdGktdGhyZWFkaW5nIGNvbnN0cnVjdHMuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFRocmVhZFdpdGhQYXJhbSA6IHB1YmxpYyBUaHJlYWRX
aXRoUGFyYW1CYXNlIHsKLSBwdWJsaWM6Ci0gIHR5cGVkZWYgdm9pZCBVc2VyVGhyZWFkRnVuYyhU
KTsKLQotICBUaHJlYWRXaXRoUGFyYW0oVXNlclRocmVhZEZ1bmMqIGZ1bmMsIFQgcGFyYW0sIE5v
dGlmaWNhdGlvbiogdGhyZWFkX2Nhbl9zdGFydCkKLSAgICAgIDogVGhyZWFkV2l0aFBhcmFtQmFz
ZShuZXcgUnVubmFibGVJbXBsKGZ1bmMsIHBhcmFtKSwgdGhyZWFkX2Nhbl9zdGFydCkgewotICB9
Ci0gIHZpcnR1YWwgflRocmVhZFdpdGhQYXJhbSgpIHt9Ci0KLSBwcml2YXRlOgotICBjbGFzcyBS
dW5uYWJsZUltcGwgOiBwdWJsaWMgUnVubmFibGUgewotICAgcHVibGljOgotICAgIFJ1bm5hYmxl
SW1wbChVc2VyVGhyZWFkRnVuYyogZnVuYywgVCBwYXJhbSkKLSAgICAgICAgOiBmdW5jXyhmdW5j
KSwKLSAgICAgICAgICBwYXJhbV8ocGFyYW0pIHsKLSAgICB9Ci0gICAgdmlydHVhbCB+UnVubmFi
bGVJbXBsKCkge30KLSAgICB2aXJ0dWFsIHZvaWQgUnVuKCkgewotICAgICAgZnVuY18ocGFyYW1f
KTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgVXNlclRocmVhZEZ1bmMqIGNvbnN0IGZ1bmNf
OwotICAgIGNvbnN0IFQgcGFyYW1fOwotCi0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNT
SUdOXyhSdW5uYWJsZUltcGwpOwotICB9OwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FT
U0lHTl8oVGhyZWFkV2l0aFBhcmFtKTsKLX07Ci0KLS8vIEltcGxlbWVudHMgdGhyZWFkLWxvY2Fs
IHN0b3JhZ2Ugb24gV2luZG93cyBzeXN0ZW1zLgotLy8KLS8vICAgLy8gVGhyZWFkIDEKLS8vICAg
VGhyZWFkTG9jYWw8aW50PiB0bCgxMDApOyAgLy8gMTAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZv
ciBlYWNoIHRocmVhZC4KLS8vCi0vLyAgIC8vIFRocmVhZCAyCi0vLyAgIHRsLnNldCgxNTApOyAg
Ly8gQ2hhbmdlcyB0aGUgdmFsdWUgZm9yIHRocmVhZCAyIG9ubHkuCi0vLyAgIEVYUEVDVF9FUSgx
NTAsIHRsLmdldCgpKTsKLS8vCi0vLyAgIC8vIFRocmVhZCAxCi0vLyAgIEVYUEVDVF9FUSgxMDAs
IHRsLmdldCgpKTsgIC8vIEluIHRocmVhZCAxLCB0bCBoYXMgdGhlIG9yaWdpbmFsIHZhbHVlLgot
Ly8gICB0bC5zZXQoMjAwKTsKLS8vICAgRVhQRUNUX0VRKDIwMCwgdGwuZ2V0KCkpOwotLy8KLS8v
IFRoZSB0ZW1wbGF0ZSB0eXBlIGFyZ3VtZW50IFQgbXVzdCBoYXZlIGEgcHVibGljIGNvcHkgY29u
c3RydWN0b3IuCi0vLyBJbiBhZGRpdGlvbiwgdGhlIGRlZmF1bHQgVGhyZWFkTG9jYWwgY29uc3Ry
dWN0b3IgcmVxdWlyZXMgVCB0byBoYXZlCi0vLyBhIHB1YmxpYyBkZWZhdWx0IGNvbnN0cnVjdG9y
LgotLy8KLS8vIFRoZSB1c2VycyBvZiBhIFRoZWFkTG9jYWwgaW5zdGFuY2UgaGF2ZSB0byBtYWtl
IHN1cmUgdGhhdCBhbGwgYnV0IG9uZQotLy8gdGhyZWFkcyAoaW5jbHVkaW5nIHRoZSBtYWluIG9u
ZSkgdXNpbmcgdGhhdCBpbnN0YW5jZSBoYXZlIGV4aXRlZCBiZWZvcmUKLS8vIGRlc3Ryb3lpbmcg
aXQuIE90aGVyd2lzZSwgdGhlIHBlci10aHJlYWQgb2JqZWN0cyBtYW5hZ2VkIGZvciB0aGVtIGJ5
IHRoZQotLy8gVGhyZWFkTG9jYWwgaW5zdGFuY2UgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRl
c3Ryb3llZCBvbiBhbGwgcGxhdGZvcm1zLgotLy8KLS8vIEdvb2dsZSBUZXN0IG9ubHkgdXNlcyBn
bG9iYWwgVGhyZWFkTG9jYWwgb2JqZWN0cy4gIFRoYXQgbWVhbnMgdGhleQotLy8gd2lsbCBkaWUg
YWZ0ZXIgbWFpbigpIGhhcyByZXR1cm5lZC4gIFRoZXJlZm9yZSwgbm8gcGVyLXRocmVhZAotLy8g
b2JqZWN0IG1hbmFnZWQgYnkgR29vZ2xlIFRlc3Qgd2lsbCBiZSBsZWFrZWQgYXMgbG9uZyBhcyBh
bGwgdGhyZWFkcwotLy8gdXNpbmcgR29vZ2xlIFRlc3QgaGF2ZSBleGl0ZWQgd2hlbiBtYWluKCkg
cmV0dXJucy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVGhyZWFkTG9jYWwgOiBwdWJs
aWMgVGhyZWFkTG9jYWxCYXNlIHsKLSBwdWJsaWM6Ci0gIFRocmVhZExvY2FsKCkgOiBkZWZhdWx0
X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkpIHt9Ci0gIGV4cGxpY2l0
IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVlKQotICAgICAgOiBkZWZhdWx0X2ZhY3RvcnlfKG5l
dyBJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSh2YWx1ZSkpIHt9Ci0KLSAgflRocmVhZExvY2Fs
KCkgeyBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpPblRocmVhZExvY2FsRGVzdHJveWVkKHRoaXMpOyB9
Ci0KLSAgVCogcG9pbnRlcigpIHsgcmV0dXJuIEdldE9yQ3JlYXRlVmFsdWUoKTsgfQotICBjb25z
dCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gR2V0T3JDcmVhdGVWYWx1ZSgpOyB9Ci0gIGNv
bnN0IFQmIGdldCgpIGNvbnN0IHsgcmV0dXJuICpwb2ludGVyKCk7IH0KLSAgdm9pZCBzZXQoY29u
c3QgVCYgdmFsdWUpIHsgKnBvaW50ZXIoKSA9IHZhbHVlOyB9Ci0KLSBwcml2YXRlOgotICAvLyBI
b2xkcyBhIHZhbHVlIG9mIFQuICBDYW4gYmUgZGVsZXRlZCB2aWEgaXRzIGJhc2UgY2xhc3Mgd2l0
aG91dCB0aGUgY2FsbGVyCi0gIC8vIGtub3dpbmcgdGhlIHR5cGUgb2YgVC4KLSAgY2xhc3MgVmFs
dWVIb2xkZXIgOiBwdWJsaWMgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UgewotICAgcHVibGlj
OgotICAgIFZhbHVlSG9sZGVyKCkgOiB2YWx1ZV8oKSB7fQotICAgIGV4cGxpY2l0IFZhbHVlSG9s
ZGVyKGNvbnN0IFQmIHZhbHVlKSA6IHZhbHVlXyh2YWx1ZSkge30KLQotICAgIFQqIHBvaW50ZXIo
KSB7IHJldHVybiAmdmFsdWVfOyB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgVCB2YWx1ZV87Ci0gICAg
R1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhWYWx1ZUhvbGRlcik7Ci0gIH07Ci0KLQot
ICBUKiBHZXRPckNyZWF0ZVZhbHVlKCkgY29uc3QgewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
YWx1ZUhvbGRlcio+KAotICAgICAgICBUaHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3Vy
cmVudFRocmVhZCh0aGlzKSktPnBvaW50ZXIoKTsKLSAgfQotCi0gIHZpcnR1YWwgVGhyZWFkTG9j
YWxWYWx1ZUhvbGRlckJhc2UqIE5ld1ZhbHVlRm9yQ3VycmVudFRocmVhZCgpIGNvbnN0IHsKLSAg
ICByZXR1cm4gZGVmYXVsdF9mYWN0b3J5Xy0+TWFrZU5ld0hvbGRlcigpOwotICB9Ci0KLSAgY2xh
c3MgVmFsdWVIb2xkZXJGYWN0b3J5IHsKLSAgIHB1YmxpYzoKLSAgICBWYWx1ZUhvbGRlckZhY3Rv
cnkoKSB7fQotICAgIHZpcnR1YWwgflZhbHVlSG9sZGVyRmFjdG9yeSgpIHt9Ci0gICAgdmlydHVh
bCBWYWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0ID0gMDsKLQotICAgcHJpdmF0ZToK
LSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyRmFjdG9yeSk7
Ci0gIH07Ci0KLSAgY2xhc3MgRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSA6IHB1YmxpYyBWYWx1
ZUhvbGRlckZhY3RvcnkgewotICAgcHVibGljOgotICAgIERlZmF1bHRWYWx1ZUhvbGRlckZhY3Rv
cnkoKSB7fQotICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIoKSBjb25zdCB7
IHJldHVybiBuZXcgVmFsdWVIb2xkZXIoKTsgfQotCi0gICBwcml2YXRlOgotICAgIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVmYXVsdFZhbHVlSG9sZGVyRmFjdG9yeSk7Ci0gIH07
Ci0KLSAgY2xhc3MgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xk
ZXJGYWN0b3J5IHsKLSAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnN0YW5jZVZhbHVlSG9sZGVy
RmFjdG9yeShjb25zdCBUJiB2YWx1ZSkgOiB2YWx1ZV8odmFsdWUpIHt9Ci0gICAgdmlydHVhbCBW
YWx1ZUhvbGRlciogTWFrZU5ld0hvbGRlcigpIGNvbnN0IHsKLSAgICAgIHJldHVybiBuZXcgVmFs
dWVIb2xkZXIodmFsdWVfKTsKLSAgICB9Ci0KLSAgIHByaXZhdGU6Ci0gICAgY29uc3QgVCB2YWx1
ZV87ICAvLyBUaGUgdmFsdWUgZm9yIGVhY2ggdGhyZWFkLgotCi0gICAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhJbnN0YW5jZVZhbHVlSG9sZGVyRmFjdG9yeSk7Ci0gIH07Ci0KLSAg
c2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87Ci0KLSAgR1RF
U1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7Ci19OwotCi0jIGVsaWYg
R1RFU1RfSEFTX1BUSFJFQUQKLQotLy8gTXV0ZXhCYXNlIGFuZCBNdXRleCBpbXBsZW1lbnQgbXV0
ZXggb24gcHRocmVhZHMtYmFzZWQgcGxhdGZvcm1zLgotY2xhc3MgTXV0ZXhCYXNlIHsKLSBwdWJs
aWM6Ci0gIC8vIEFjcXVpcmVzIHRoaXMgbXV0ZXguCi0gIHZvaWQgTG9jaygpIHsKLSAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2xvY2soJm11dGV4XykpOwotICAg
IG93bmVyXyA9IHB0aHJlYWRfc2VsZigpOwotICAgIGhhc19vd25lcl8gPSB0cnVlOwotICB9Ci0K
LSAgLy8gUmVsZWFzZXMgdGhpcyBtdXRleC4KLSAgdm9pZCBVbmxvY2soKSB7Ci0gICAgLy8gU2lu
Y2UgdGhlIGxvY2sgaXMgYmVpbmcgcmVsZWFzZWQgdGhlIG93bmVyXyBmaWVsZCBzaG91bGQgbm8g
bG9uZ2VyIGJlCi0gICAgLy8gY29uc2lkZXJlZCB2YWxpZC4gV2UgZG9uJ3QgcHJvdGVjdCB3cml0
aW5nIHRvIGhhc19vd25lcl8gaGVyZSwgYXMgaXQncwotICAgIC8vIHRoZSBjYWxsZXIncyByZXNw
b25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCi0g
ICAgLy8gbXV0ZXggd2hlbiB0aGlzIGlzIGNhbGxlZC4KLSAgICBoYXNfb3duZXJfID0gZmFsc2U7
Ci0gICAgR1RFU1RfQ0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm11
dGV4XykpOwotICB9Ci0KLSAgLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRocmVhZCBo
b2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcwotICAvLyB3aXRoIGhpZ2ggcHJvYmFi
aWxpdHkuCi0gIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0IHsKLSAgICBHVEVTVF9DSEVDS18oaGFz
X293bmVyXyAmJiBwdGhyZWFkX2VxdWFsKG93bmVyXywgcHRocmVhZF9zZWxmKCkpKQotICAgICAg
ICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRoZSBtdXRleCBAIiA8PCB0
aGlzOwotICB9Ci0KLSAgLy8gQSBzdGF0aWMgbXV0ZXggbWF5IGJlIHVzZWQgYmVmb3JlIG1haW4o
KSBpcyBlbnRlcmVkLiAgSXQgbWF5IGV2ZW4KLSAgLy8gYmUgdXNlZCBiZWZvcmUgdGhlIGR5bmFt
aWMgaW5pdGlhbGl6YXRpb24gc3RhZ2UuICBUaGVyZWZvcmUgd2UKLSAgLy8gbXVzdCBiZSBhYmxl
IHRvIGluaXRpYWxpemUgYSBzdGF0aWMgbXV0ZXggb2JqZWN0IGF0IGxpbmsgdGltZS4KLSAgLy8g
VGhpcyBtZWFucyBNdXRleEJhc2UgaGFzIHRvIGJlIGEgUE9EIGFuZCBpdHMgbWVtYmVyIHZhcmlh
YmxlcwotICAvLyBoYXZlIHRvIGJlIHB1YmxpYy4KLSBwdWJsaWM6Ci0gIHB0aHJlYWRfbXV0ZXhf
dCBtdXRleF87ICAvLyBUaGUgdW5kZXJseWluZyBwdGhyZWFkIG11dGV4LgotICAvLyBoYXNfb3du
ZXJfIGluZGljYXRlcyB3aGV0aGVyIHRoZSBvd25lcl8gZmllbGQgYmVsb3cgY29udGFpbnMgYSB2
YWxpZCB0aHJlYWQKLSAgLy8gSUQgYW5kIGlzIHRoZXJlZm9yZSBzYWZlIHRvIGluc3BlY3QgKGUu
Zy4sIHRvIHVzZSBpbiBwdGhyZWFkX2VxdWFsKCkpLiBBbGwKLSAgLy8gYWNjZXNzZXMgdG8gdGhl
IG93bmVyXyBmaWVsZCBzaG91bGQgYmUgcHJvdGVjdGVkIGJ5IGEgY2hlY2sgb2YgdGhpcyBmaWVs
ZC4KLSAgLy8gQW4gYWx0ZXJuYXRpdmUgbWlnaHQgYmUgdG8gbWVtc2V0KCkgb3duZXJfIHRvIGFs
bCB6ZXJvcywgYnV0IHRoZXJlJ3Mgbm8KLSAgLy8gZ3VhcmFudGVlIHRoYXQgYSB6ZXJvJ2QgcHRo
cmVhZF90IGlzIG5lY2Vzc2FyaWx5IGludmFsaWQgb3IgZXZlbiBkaWZmZXJlbnQKLSAgLy8gZnJv
bSBwdGhyZWFkX3NlbGYoKS4KLSAgYm9vbCBoYXNfb3duZXJfOwotICBwdGhyZWFkX3Qgb3duZXJf
OyAgLy8gVGhlIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleC4KLX07Ci0KLS8vIEZvcndhcmQtZGVj
bGFyZXMgYSBzdGF0aWMgbXV0ZXguCi0jICBkZWZpbmUgR1RFU1RfREVDTEFSRV9TVEFUSUNfTVVU
RVhfKG11dGV4KSBcCi0gICAgIGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleEJhc2Ug
bXV0ZXgKLQotLy8gRGVmaW5lcyBhbmQgc3RhdGljYWxseSAoaS5lLiBhdCBsaW5rIHRpbWUpIGlu
aXRpYWxpemVzIGEgc3RhdGljIG11dGV4LgotIyAgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNf
TVVURVhfKG11dGV4KSBcCi0gICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6Ok11dGV4QmFzZSBtdXRl
eCA9IHsgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiwgZmFsc2UsIHB0aHJlYWRfdCgpIH0KLQot
Ly8gVGhlIE11dGV4IGNsYXNzIGNhbiBvbmx5IGJlIHVzZWQgZm9yIG11dGV4ZXMgY3JlYXRlZCBh
dCBydW50aW1lLiBJdAotLy8gc2hhcmVzIGl0cyBBUEkgd2l0aCBNdXRleEJhc2Ugb3RoZXJ3aXNl
LgotY2xhc3MgTXV0ZXggOiBwdWJsaWMgTXV0ZXhCYXNlIHsKLSBwdWJsaWM6Ci0gIE11dGV4KCkg
ewotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0
ZXhfLCBOVUxMKSk7Ci0gICAgaGFzX293bmVyXyA9IGZhbHNlOwotICB9Ci0gIH5NdXRleCgpIHsK
LSAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11
dGV4XykpOwotICB9Ci0KLSBwcml2YXRlOgotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJ
R05fKE11dGV4KTsKLX07Ci0KLS8vIFdlIGNhbm5vdCBuYW1lIHRoaXMgY2xhc3MgTXV0ZXhMb2Nr
IGJlY2F1c2UgdGhlIGN0b3IgZGVjbGFyYXRpb24gd291bGQKLS8vIGNvbmZsaWN0IHdpdGggYSBt
YWNybyBuYW1lZCBNdXRleExvY2ssIHdoaWNoIGlzIGRlZmluZWQgb24gc29tZQotLy8gcGxhdGZv
cm1zLiBUaGF0IG1hY3JvIGlzIHVzZWQgYXMgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50
IGFnYWluc3QKLS8vIGluYWR2ZXJ0ZW50IG1pc3VzZXMgb2YgTXV0ZXhMb2NrIGxpa2UgIk11dGV4
TG9jaygmbXUpIiByYXRoZXIgdGhhbgotLy8gIk11dGV4TG9jayBsKCZtdSkiLiAgSGVuY2UgdGhl
IHR5cGVkZWYgdHJpY2sgYmVsb3cuCi1jbGFzcyBHVGVzdE11dGV4TG9jayB7Ci0gcHVibGljOgot
ICBleHBsaWNpdCBHVGVzdE11dGV4TG9jayhNdXRleEJhc2UqIG11dGV4KQotICAgICAgOiBtdXRl
eF8obXV0ZXgpIHsgbXV0ZXhfLT5Mb2NrKCk7IH0KLQotICB+R1Rlc3RNdXRleExvY2soKSB7IG11
dGV4Xy0+VW5sb2NrKCk7IH0KLQotIHByaXZhdGU6Ci0gIE11dGV4QmFzZSogY29uc3QgbXV0ZXhf
OwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oR1Rlc3RNdXRleExvY2spOwot
fTsKLQotdHlwZWRlZiBHVGVzdE11dGV4TG9jayBNdXRleExvY2s7Ci0KLS8vIEhlbHBlcnMgZm9y
IFRocmVhZExvY2FsLgotCi0vLyBwdGhyZWFkX2tleV9jcmVhdGUoKSByZXF1aXJlcyBEZWxldGVU
aHJlYWRMb2NhbFZhbHVlKCkgdG8gaGF2ZQotLy8gQy1saW5rYWdlLiAgVGhlcmVmb3JlIGl0IGNh
bm5vdCBiZSB0ZW1wbGF0aXplZCB0byBhY2Nlc3MKLS8vIFRocmVhZExvY2FsPFQ+LiAgSGVuY2Ug
dGhlIG5lZWQgZm9yIGNsYXNzCi0vLyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZS4KLWNsYXNz
IFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgflRocmVh
ZExvY2FsVmFsdWVIb2xkZXJCYXNlKCkge30KLX07Ci0KLS8vIENhbGxlZCBieSBwdGhyZWFkIHRv
IGRlbGV0ZSB0aHJlYWQtbG9jYWwgZGF0YSBzdG9yZWQgYnkKLS8vIHB0aHJlYWRfc2V0c3BlY2lm
aWMoKS4KLWV4dGVybiAiQyIgaW5saW5lIHZvaWQgRGVsZXRlVGhyZWFkTG9jYWxWYWx1ZSh2b2lk
KiB2YWx1ZV9ob2xkZXIpIHsKLSAgZGVsZXRlIHN0YXRpY19jYXN0PFRocmVhZExvY2FsVmFsdWVI
b2xkZXJCYXNlKj4odmFsdWVfaG9sZGVyKTsKLX0KLQotLy8gSW1wbGVtZW50cyB0aHJlYWQtbG9j
YWwgc3RvcmFnZSBvbiBwdGhyZWFkcy1iYXNlZCBzeXN0ZW1zLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7Ci0gcHVibGljOgotICBUaHJlYWRMb2NhbCgpCi0gICAg
ICA6IGtleV8oQ3JlYXRlS2V5KCkpLCBkZWZhdWx0X2ZhY3RvcnlfKG5ldyBEZWZhdWx0VmFsdWVI
b2xkZXJGYWN0b3J5KCkpIHt9Ci0gIGV4cGxpY2l0IFRocmVhZExvY2FsKGNvbnN0IFQmIHZhbHVl
KQotICAgICAgOiBrZXlfKENyZWF0ZUtleSgpKSwKLSAgICAgICAgZGVmYXVsdF9mYWN0b3J5Xyhu
ZXcgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkodmFsdWUpKSB7fQotCi0gIH5UaHJlYWRMb2Nh
bCgpIHsKLSAgICAvLyBEZXN0cm95cyB0aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoZSBjdXJyZW50
IHRocmVhZCwgaWYgYW55LgotICAgIERlbGV0ZVRocmVhZExvY2FsVmFsdWUocHRocmVhZF9nZXRz
cGVjaWZpYyhrZXlfKSk7Ci0KLSAgICAvLyBSZWxlYXNlcyByZXNvdXJjZXMgYXNzb2NpYXRlZCB3
aXRoIHRoZSBrZXkuICBUaGlzIHdpbGwgKm5vdCoKLSAgICAvLyBkZWxldGUgbWFuYWdlZCBvYmpl
Y3RzIGZvciBvdGhlciB0aHJlYWRzLgotICAgIEdURVNUX0NIRUNLX1BPU0lYX1NVQ0NFU1NfKHB0
aHJlYWRfa2V5X2RlbGV0ZShrZXlfKSk7Ci0gIH0KLQotICBUKiBwb2ludGVyKCkgeyByZXR1cm4g
R2V0T3JDcmVhdGVWYWx1ZSgpOyB9Ci0gIGNvbnN0IFQqIHBvaW50ZXIoKSBjb25zdCB7IHJldHVy
biBHZXRPckNyZWF0ZVZhbHVlKCk7IH0KLSAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4g
KnBvaW50ZXIoKTsgfQotICB2b2lkIHNldChjb25zdCBUJiB2YWx1ZSkgeyAqcG9pbnRlcigpID0g
dmFsdWU7IH0KLQotIHByaXZhdGU6Ci0gIC8vIEhvbGRzIGEgdmFsdWUgb2YgdHlwZSBULgotICBj
bGFzcyBWYWx1ZUhvbGRlciA6IHB1YmxpYyBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZSB7Ci0g
ICBwdWJsaWM6Ci0gICAgVmFsdWVIb2xkZXIoKSA6IHZhbHVlXygpIHt9Ci0gICAgZXhwbGljaXQg
VmFsdWVIb2xkZXIoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQotCi0gICAgVCog
cG9pbnRlcigpIHsgcmV0dXJuICZ2YWx1ZV87IH0KLQotICAgcHJpdmF0ZToKLSAgICBUIHZhbHVl
XzsKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFZhbHVlSG9sZGVyKTsKLSAg
fTsKLQotICBzdGF0aWMgcHRocmVhZF9rZXlfdCBDcmVhdGVLZXkoKSB7Ci0gICAgcHRocmVhZF9r
ZXlfdCBrZXk7Ci0gICAgLy8gV2hlbiBhIHRocmVhZCBleGl0cywgRGVsZXRlVGhyZWFkTG9jYWxW
YWx1ZSgpIHdpbGwgYmUgY2FsbGVkIG9uCi0gICAgLy8gdGhlIG9iamVjdCBtYW5hZ2VkIGZvciB0
aGF0IHRocmVhZC4KLSAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgcHRo
cmVhZF9rZXlfY3JlYXRlKCZrZXksICZEZWxldGVUaHJlYWRMb2NhbFZhbHVlKSk7Ci0gICAgcmV0
dXJuIGtleTsKLSAgfQotCi0gIFQqIEdldE9yQ3JlYXRlVmFsdWUoKSBjb25zdCB7Ci0gICAgVGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhvbGRlciA9Ci0gICAgICAgIHN0YXRpY19j
YXN0PFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKj4ocHRocmVhZF9nZXRzcGVjaWZpYyhrZXlf
KSk7Ci0gICAgaWYgKGhvbGRlciAhPSBOVUxMKSB7Ci0gICAgICByZXR1cm4gQ2hlY2tlZERvd25j
YXN0VG9BY3R1YWxUeXBlPFZhbHVlSG9sZGVyPihob2xkZXIpLT5wb2ludGVyKCk7Ci0gICAgfQot
Ci0gICAgVmFsdWVIb2xkZXIqIGNvbnN0IG5ld19ob2xkZXIgPSBkZWZhdWx0X2ZhY3RvcnlfLT5N
YWtlTmV3SG9sZGVyKCk7Ci0gICAgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2UqIGNvbnN0IGhv
bGRlcl9iYXNlID0gbmV3X2hvbGRlcjsKLSAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhw
dGhyZWFkX3NldHNwZWNpZmljKGtleV8sIGhvbGRlcl9iYXNlKSk7Ci0gICAgcmV0dXJuIG5ld19o
b2xkZXItPnBvaW50ZXIoKTsKLSAgfQotCi0gIGNsYXNzIFZhbHVlSG9sZGVyRmFjdG9yeSB7Ci0g
ICBwdWJsaWM6Ci0gICAgVmFsdWVIb2xkZXJGYWN0b3J5KCkge30KLSAgICB2aXJ0dWFsIH5WYWx1
ZUhvbGRlckZhY3RvcnkoKSB7fQotICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xk
ZXIoKSBjb25zdCA9IDA7Ci0KLSAgIHByaXZhdGU6Ci0gICAgR1RFU1RfRElTQUxMT1dfQ09QWV9B
TkRfQVNTSUdOXyhWYWx1ZUhvbGRlckZhY3RvcnkpOwotICB9OwotCi0gIGNsYXNzIERlZmF1bHRW
YWx1ZUhvbGRlckZhY3RvcnkgOiBwdWJsaWMgVmFsdWVIb2xkZXJGYWN0b3J5IHsKLSAgIHB1Ymxp
YzoKLSAgICBEZWZhdWx0VmFsdWVIb2xkZXJGYWN0b3J5KCkge30KLSAgICB2aXJ0dWFsIFZhbHVl
SG9sZGVyKiBNYWtlTmV3SG9sZGVyKCkgY29uc3QgeyByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKCk7
IH0KLQotICAgcHJpdmF0ZToKLSAgICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKERl
ZmF1bHRWYWx1ZUhvbGRlckZhY3RvcnkpOwotICB9OwotCi0gIGNsYXNzIEluc3RhbmNlVmFsdWVI
b2xkZXJGYWN0b3J5IDogcHVibGljIFZhbHVlSG9sZGVyRmFjdG9yeSB7Ci0gICBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgSW5zdGFuY2VWYWx1ZUhvbGRlckZhY3RvcnkoY29uc3QgVCYgdmFsdWUpIDog
dmFsdWVfKHZhbHVlKSB7fQotICAgIHZpcnR1YWwgVmFsdWVIb2xkZXIqIE1ha2VOZXdIb2xkZXIo
KSBjb25zdCB7Ci0gICAgICByZXR1cm4gbmV3IFZhbHVlSG9sZGVyKHZhbHVlXyk7Ci0gICAgfQot
Ci0gICBwcml2YXRlOgotICAgIGNvbnN0IFQgdmFsdWVfOyAgLy8gVGhlIHZhbHVlIGZvciBlYWNo
IHRocmVhZC4KLQotICAgIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oSW5zdGFuY2VW
YWx1ZUhvbGRlckZhY3RvcnkpOwotICB9OwotCi0gIC8vIEEga2V5IHB0aHJlYWRzIHVzZXMgZm9y
IGxvb2tpbmcgdXAgcGVyLXRocmVhZCB2YWx1ZXMuCi0gIGNvbnN0IHB0aHJlYWRfa2V5X3Qga2V5
XzsKLSAgc2NvcGVkX3B0cjxWYWx1ZUhvbGRlckZhY3Rvcnk+IGRlZmF1bHRfZmFjdG9yeV87Ci0K
LSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhUaHJlYWRMb2NhbCk7Ci19OwotCi0j
IGVuZGlmICAvLyBHVEVTVF9IQVNfTVVURVhfQU5EX1RIUkVBRF9MT0NBTF8KLQotI2Vsc2UgIC8v
IEdURVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gQSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5j
aHJvbml6YXRpb24gcHJpbWl0aXZlcyAobXV0ZXgsIGxvY2ssCi0vLyBhbmQgdGhyZWFkLWxvY2Fs
IHZhcmlhYmxlKS4gIE5lY2Vzc2FyeSBmb3IgY29tcGlsaW5nIEdvb2dsZSBUZXN0IHdoZXJlCi0v
LyBtdXRleCBpcyBub3Qgc3VwcG9ydGVkIC0gdXNpbmcgR29vZ2xlIFRlc3QgaW4gbXVsdGlwbGUg
dGhyZWFkcyBpcyBub3QKLS8vIHN1cHBvcnRlZCBvbiBzdWNoIHBsYXRmb3Jtcy4KLQotY2xhc3Mg
TXV0ZXggewotIHB1YmxpYzoKLSAgTXV0ZXgoKSB7fQotICB2b2lkIExvY2soKSB7fQotICB2b2lk
IFVubG9jaygpIHt9Ci0gIHZvaWQgQXNzZXJ0SGVsZCgpIGNvbnN0IHt9Ci19OwotCi0jIGRlZmlu
ZSBHVEVTVF9ERUNMQVJFX1NUQVRJQ19NVVRFWF8obXV0ZXgpIFwKLSAgZXh0ZXJuIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6Ok11dGV4IG11dGV4Ci0KLSMgZGVmaW5lIEdURVNUX0RFRklORV9TVEFUSUNf
TVVURVhfKG11dGV4KSA6OnRlc3Rpbmc6OmludGVybmFsOjpNdXRleCBtdXRleAotCi0vLyBXZSBj
YW5ub3QgbmFtZSB0aGlzIGNsYXNzIE11dGV4TG9jayBiZWNhdXNlIHRoZSBjdG9yIGRlY2xhcmF0
aW9uIHdvdWxkCi0vLyBjb25mbGljdCB3aXRoIGEgbWFjcm8gbmFtZWQgTXV0ZXhMb2NrLCB3aGlj
aCBpcyBkZWZpbmVkIG9uIHNvbWUKLS8vIHBsYXRmb3Jtcy4gVGhhdCBtYWNybyBpcyB1c2VkIGFz
IGEgZGVmZW5zaXZlIG1lYXN1cmUgdG8gcHJldmVudCBhZ2FpbnN0Ci0vLyBpbmFkdmVydGVudCBt
aXN1c2VzIG9mIE11dGV4TG9jayBsaWtlICJNdXRleExvY2soJm11KSIgcmF0aGVyIHRoYW4KLS8v
ICJNdXRleExvY2sgbCgmbXUpIi4gIEhlbmNlIHRoZSB0eXBlZGVmIHRyaWNrIGJlbG93LgotY2xh
c3MgR1Rlc3RNdXRleExvY2sgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgR1Rlc3RNdXRleExvY2so
TXV0ZXgqKSB7fSAgLy8gTk9MSU5UCi19OwotCi10eXBlZGVmIEdUZXN0TXV0ZXhMb2NrIE11dGV4
TG9jazsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBUaHJlYWRMb2NhbCB7Ci0gcHVi
bGljOgotICBUaHJlYWRMb2NhbCgpIDogdmFsdWVfKCkge30KLSAgZXhwbGljaXQgVGhyZWFkTG9j
YWwoY29uc3QgVCYgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQotICBUKiBwb2ludGVyKCkgeyBy
ZXR1cm4gJnZhbHVlXzsgfQotICBjb25zdCBUKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gJnZh
bHVlXzsgfQotICBjb25zdCBUJiBnZXQoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0KLSAgdm9p
ZCBzZXQoY29uc3QgVCYgdmFsdWUpIHsgdmFsdWVfID0gdmFsdWU7IH0KLSBwcml2YXRlOgotICBU
IHZhbHVlXzsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi0vLyBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzLCBvciAwIHRv
IGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCi1HVEVTVF9BUElfIHNpemVf
dCBHZXRUaHJlYWRDb3VudCgpOwotCi0vLyBQYXNzaW5nIG5vbi1QT0QgY2xhc3NlcyB0aHJvdWdo
IGVsbGlwc2lzICguLi4pIGNyYXNoZXMgdGhlIEFSTQotLy8gY29tcGlsZXIgYW5kIGdlbmVyYXRl
cyBhIHdhcm5pbmcgaW4gU3VuIFN0dWRpby4gIFRoZSBOb2tpYSBTeW1iaWFuCi0vLyBhbmQgdGhl
IElCTSBYTCBDL0MrKyBjb21waWxlciB0cnkgdG8gaW5zdGFudGlhdGUgYSBjb3B5IGNvbnN0cnVj
dG9yCi0vLyBmb3Igb2JqZWN0cyBwYXNzZWQgdGhyb3VnaCBlbGxpcHNpcyAoLi4uKSwgZmFpbGlu
ZyBmb3IgdW5jb3B5YWJsZQotLy8gb2JqZWN0cy4gIFdlIGRlZmluZSB0aGlzIHRvIGVuc3VyZSB0
aGF0IG9ubHkgUE9EIGlzIHBhc3NlZCB0aHJvdWdoCi0vLyBlbGxpcHNpcyBvbiB0aGVzZSBzeXN0
ZW1zLgotI2lmIGRlZmluZWQoX19TWU1CSUFOMzJfXykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKSB8
fCBkZWZpbmVkKF9fU1VOUFJPX0NDKQotLy8gV2UgbG9zZSBzdXBwb3J0IGZvciBOVUxMIGRldGVj
dGlvbiB3aGVyZSB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlCi0vLyBwYXNzaW5nIG5vbi1QT0Qg
Y2xhc3NlcyB0aHJvdWdoIGVsbGlwc2lzICguLi4pLgotIyBkZWZpbmUgR1RFU1RfRUxMSVBTSVNf
TkVFRFNfUE9EXyAxCi0jZWxzZQotIyBkZWZpbmUgR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTCAxCi0j
ZW5kaWYKLQotLy8gVGhlIE5va2lhIFN5bWJpYW4gYW5kIElCTSBYTCBDL0MrKyBjb21waWxlcnMg
Y2Fubm90IGRlY2lkZSBiZXR3ZWVuCi0vLyBjb25zdCBUJiBhbmQgY29uc3QgVCogaW4gYSBmdW5j
dGlvbiB0ZW1wbGF0ZS4gIFRoZXNlIGNvbXBpbGVycwotLy8gX2Nhbl8gZGVjaWRlIGJldHdlZW4g
Y2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciBUIGFuZCBUKiwKLS8vIHNvIGEgdHIx
Ojp0eXBlX3RyYWl0cy1saWtlIGlzX3BvaW50ZXIgd29ya3MuCi0jaWYgZGVmaW5lZChfX1NZTUJJ
QU4zMl9fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jIGRlZmluZSBHVEVTVF9ORUVEU19JU19Q
T0lOVEVSXyAxCi0jZW5kaWYKLQotdGVtcGxhdGUgPGJvb2wgYm9vbF92YWx1ZT4KLXN0cnVjdCBi
b29sX2NvbnN0YW50IHsKLSAgdHlwZWRlZiBib29sX2NvbnN0YW50PGJvb2xfdmFsdWU+IHR5cGU7
Ci0gIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gYm9vbF92YWx1ZTsKLX07Ci10ZW1wbGF0ZSA8
Ym9vbCBib29sX3ZhbHVlPiBjb25zdCBib29sIGJvb2xfY29uc3RhbnQ8Ym9vbF92YWx1ZT46OnZh
bHVlOwotCi10eXBlZGVmIGJvb2xfY29uc3RhbnQ8ZmFsc2U+IGZhbHNlX3R5cGU7Ci10eXBlZGVm
IGJvb2xfY29uc3RhbnQ8dHJ1ZT4gdHJ1ZV90eXBlOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBpc19wb2ludGVyIDogcHVibGljIGZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotc3RydWN0IGlzX3BvaW50ZXI8VCo+IDogcHVibGljIHRydWVfdHlwZSB7fTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgotc3RydWN0IEl0ZXJhdG9yVHJhaXRzIHsK
LSAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotfTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXRlcmF0b3JUcmFpdHM8VCo+IHsKLSAg
dHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVj
dCBJdGVyYXRvclRyYWl0czxjb25zdCBUKj4gewotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGRlZmluZSBHVEVTVF9QQVRIX1NFUF8gIlxcIgot
IyBkZWZpbmUgR1RFU1RfSEFTX0FMVF9QQVRIX1NFUF8gMQotLy8gVGhlIGJpZ2dlc3Qgc2lnbmVk
IGludGVnZXIgdHlwZSB0aGUgY29tcGlsZXIgc3VwcG9ydHMuCi10eXBlZGVmIF9faW50NjQgQmln
Z2VzdEludDsKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9QQVRIX1NFUF8gIi8iCi0jIGRlZmluZSBH
VEVTVF9IQVNfQUxUX1BBVEhfU0VQXyAwCi10eXBlZGVmIGxvbmcgbG9uZyBCaWdnZXN0SW50OyAg
Ly8gTk9MSU5UCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVXRpbGl0aWVzIGZv
ciBjaGFyLgotCi0vLyBpc3NwYWNlKGludCBjaCkgYW5kIGZyaWVuZHMgYWNjZXB0IGFuIHVuc2ln
bmVkIGNoYXIgb3IgRU9GLiAgY2hhcgotLy8gbWF5IGJlIHNpZ25lZCwgZGVwZW5kaW5nIG9uIHRo
ZSBjb21waWxlciAob3IgY29tcGlsZXIgZmxhZ3MpLgotLy8gVGhlcmVmb3JlIHdlIG5lZWQgdG8g
Y2FzdCBhIGNoYXIgdG8gdW5zaWduZWQgY2hhciBiZWZvcmUgY2FsbGluZwotLy8gaXNzcGFjZSgp
LCBldGMuCi0KLWlubGluZSBib29sIElzQWxwaGEoY2hhciBjaCkgewotICByZXR1cm4gaXNhbHBo
YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Ci19Ci1pbmxpbmUgYm9vbCBJ
c0FsTnVtKGNoYXIgY2gpIHsKLSAgcmV0dXJuIGlzYWxudW0oc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY2gpKSAhPSAwOwotfQotaW5saW5lIGJvb2wgSXNEaWdpdChjaGFyIGNoKSB7Ci0gIHJl
dHVybiBpc2RpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKLX0KLWlu
bGluZSBib29sIElzTG93ZXIoY2hhciBjaCkgewotICByZXR1cm4gaXNsb3dlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihjaCkpICE9IDA7Ci19Ci1pbmxpbmUgYm9vbCBJc1NwYWNlKGNoYXIg
Y2gpIHsKLSAgcmV0dXJuIGlzc3BhY2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSAh
PSAwOwotfQotaW5saW5lIGJvb2wgSXNVcHBlcihjaGFyIGNoKSB7Ci0gIHJldHVybiBpc3VwcGVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkgIT0gMDsKLX0KLWlubGluZSBib29sIElz
WERpZ2l0KGNoYXIgY2gpIHsKLSAgcmV0dXJuIGlzeGRpZ2l0KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNoKSkgIT0gMDsKLX0KLWlubGluZSBib29sIElzWERpZ2l0KHdjaGFyX3QgY2gpIHsK
LSAgY29uc3QgdW5zaWduZWQgY2hhciBsb3dfYnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGNoKTsKLSAgcmV0dXJuIGNoID09IGxvd19ieXRlICYmIGlzeGRpZ2l0KGxvd19ieXRlKSAh
PSAwOwotfQotCi1pbmxpbmUgY2hhciBUb0xvd2VyKGNoYXIgY2gpIHsKLSAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNoYXI+KHRvbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Ci19
Ci1pbmxpbmUgY2hhciBUb1VwcGVyKGNoYXIgY2gpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGNo
YXI+KHRvdXBwZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2gpKSk7Ci19Ci0KLWlubGlu
ZSBzdGQ6OnN0cmluZyBTdHJpcFRyYWlsaW5nU3BhY2VzKHN0ZDo6c3RyaW5nIHN0cikgewotICBz
dGQ6OnN0cmluZzo6aXRlcmF0b3IgaXQgPSBzdHIuZW5kKCk7Ci0gIHdoaWxlIChpdCAhPSBzdHIu
YmVnaW4oKSAmJiBJc1NwYWNlKCotLWl0KSkKLSAgICBpdCA9IHN0ci5lcmFzZShpdCk7Ci0gIHJl
dHVybiBzdHI7Ci19Ci0KLS8vIFRoZSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXggbmFtZXNwYWNl
IGhvbGRzIHdyYXBwZXJzIGZvciBjb21tb24KLS8vIFBPU0lYIGZ1bmN0aW9ucy4gIFRoZXNlIHdy
YXBwZXJzIGhpZGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4KLS8vIFdpbmRvd3MvTVNWQyBhbmQg
UE9TSVggc3lzdGVtcy4gIFNpbmNlIHNvbWUgY29tcGlsZXJzIGRlZmluZSB0aGVzZQotLy8gc3Rh
bmRhcmQgZnVuY3Rpb25zIGFzIG1hY3JvcywgdGhlIHdyYXBwZXIgY2Fubm90IGhhdmUgdGhlIHNh
bWUgbmFtZQotLy8gYXMgdGhlIHdyYXBwZWQgZnVuY3Rpb24uCi0KLW5hbWVzcGFjZSBwb3NpeCB7
Ci0KLS8vIEZ1bmN0aW9ucyB3aXRoIGEgZGlmZmVyZW50IG5hbWUgb24gV2luZG93cy4KLQotI2lm
IEdURVNUX09TX1dJTkRPV1MKLQotdHlwZWRlZiBzdHJ1Y3QgX3N0YXQgU3RhdFN0cnVjdDsKLQot
IyBpZmRlZiBfX0JPUkxBTkRDX18KLWlubGluZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4g
aXNhdHR5KGZkKTsgfQotaW5saW5lIGludCBTdHJDYXNlQ21wKGNvbnN0IGNoYXIqIHMxLCBjb25z
dCBjaGFyKiBzMikgewotICByZXR1cm4gc3RyaWNtcChzMSwgczIpOwotfQotaW5saW5lIGNoYXIq
IFN0ckR1cChjb25zdCBjaGFyKiBzcmMpIHsgcmV0dXJuIHN0cmR1cChzcmMpOyB9Ci0jIGVsc2Ug
IC8vICFfX0JPUkxBTkRDX18KLSMgIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi1pbmxpbmUg
aW50IElzQVRUWShpbnQgLyogZmQgKi8pIHsgcmV0dXJuIDA7IH0KLSMgIGVsc2UKLWlubGluZSBp
bnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4gX2lzYXR0eShmZCk7IH0KLSMgIGVuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTX01PQklMRQotaW5saW5lIGludCBTdHJDYXNlQ21wKGNvbnN0IGNoYXIq
IHMxLCBjb25zdCBjaGFyKiBzMikgewotICByZXR1cm4gX3N0cmljbXAoczEsIHMyKTsKLX0KLWlu
bGluZSBjaGFyKiBTdHJEdXAoY29uc3QgY2hhciogc3JjKSB7IHJldHVybiBfc3RyZHVwKHNyYyk7
IH0KLSMgZW5kaWYgIC8vIF9fQk9STEFORENfXwotCi0jIGlmIEdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi1pbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGludD4oX2ZpbGVubyhmaWxlKSk7IH0KLS8vIFN0YXQoKSwgUm1EaXIoKSwgYW5kIElzRGly
KCkgYXJlIG5vdCBuZWVkZWQgb24gV2luZG93cyBDRSBhdCB0aGlzCi0vLyB0aW1lIGFuZCB0aHVz
IG5vdCBkZWZpbmVkIHRoZXJlLgotIyBlbHNlCi1pbmxpbmUgaW50IEZpbGVObyhGSUxFKiBmaWxl
KSB7IHJldHVybiBfZmlsZW5vKGZpbGUpOyB9Ci1pbmxpbmUgaW50IFN0YXQoY29uc3QgY2hhciog
cGF0aCwgU3RhdFN0cnVjdCogYnVmKSB7IHJldHVybiBfc3RhdChwYXRoLCBidWYpOyB9Ci1pbmxp
bmUgaW50IFJtRGlyKGNvbnN0IGNoYXIqIGRpcikgeyByZXR1cm4gX3JtZGlyKGRpcik7IH0KLWlu
bGluZSBib29sIElzRGlyKGNvbnN0IFN0YXRTdHJ1Y3QmIHN0KSB7Ci0gIHJldHVybiAoX1NfSUZE
SVIgJiBzdC5zdF9tb2RlKSAhPSAwOwotfQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKLQotI2Vsc2UKLQotdHlwZWRlZiBzdHJ1Y3Qgc3RhdCBTdGF0U3RydWN0OwotCi1pbmxp
bmUgaW50IEZpbGVObyhGSUxFKiBmaWxlKSB7IHJldHVybiBmaWxlbm8oZmlsZSk7IH0KLWlubGlu
ZSBpbnQgSXNBVFRZKGludCBmZCkgeyByZXR1cm4gaXNhdHR5KGZkKTsgfQotaW5saW5lIGludCBT
dGF0KGNvbnN0IGNoYXIqIHBhdGgsIFN0YXRTdHJ1Y3QqIGJ1ZikgeyByZXR1cm4gc3RhdChwYXRo
LCBidWYpOyB9Ci1pbmxpbmUgaW50IFN0ckNhc2VDbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNo
YXIqIHMyKSB7Ci0gIHJldHVybiBzdHJjYXNlY21wKHMxLCBzMik7Ci19Ci1pbmxpbmUgY2hhciog
U3RyRHVwKGNvbnN0IGNoYXIqIHNyYykgeyByZXR1cm4gc3RyZHVwKHNyYyk7IH0KLWlubGluZSBp
bnQgUm1EaXIoY29uc3QgY2hhciogZGlyKSB7IHJldHVybiBybWRpcihkaXIpOyB9Ci1pbmxpbmUg
Ym9vbCBJc0Rpcihjb25zdCBTdGF0U3RydWN0JiBzdCkgeyByZXR1cm4gU19JU0RJUihzdC5zdF9t
b2RlKTsgfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gRnVuY3Rpb25zIGRl
cHJlY2F0ZWQgYnkgTVNWQyA4LjAuCi0KLUdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BVU0hf
KDQ5OTYgLyogZGVwcmVjYXRlZCBmdW5jdGlvbiAqLykKLQotaW5saW5lIGNvbnN0IGNoYXIqIFN0
ck5DcHkoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgbikgewotICByZXR1cm4g
c3RybmNweShkZXN0LCBzcmMsIG4pOwotfQotCi0vLyBDaERpcigpLCBGUmVvcGVuKCksIEZET3Bl
bigpLCBSZWFkKCksIFdyaXRlKCksIENsb3NlKCksIGFuZAotLy8gU3RyRXJyb3IoKSBhcmVuJ3Qg
bmVlZGVkIG9uIFdpbmRvd3MgQ0UgYXQgdGhpcyB0aW1lIGFuZCB0aHVzIG5vdAotLy8gZGVmaW5l
ZCB0aGVyZS4KLQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lO
RE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9XU19SVAotaW5saW5lIGludCBDaERpcihjb25z
dCBjaGFyKiBkaXIpIHsgcmV0dXJuIGNoZGlyKGRpcik7IH0KLSNlbmRpZgotaW5saW5lIEZJTEUq
IEZPcGVuKGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIG1vZGUpIHsKLSAgcmV0dXJuIGZv
cGVuKHBhdGgsIG1vZGUpOwotfQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotaW5saW5l
IEZJTEUgKkZSZW9wZW4oY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogbW9kZSwgRklMRSog
c3RyZWFtKSB7Ci0gIHJldHVybiBmcmVvcGVuKHBhdGgsIG1vZGUsIHN0cmVhbSk7Ci19Ci1pbmxp
bmUgRklMRSogRkRPcGVuKGludCBmZCwgY29uc3QgY2hhciogbW9kZSkgeyByZXR1cm4gZmRvcGVu
KGZkLCBtb2RlKTsgfQotI2VuZGlmCi1pbmxpbmUgaW50IEZDbG9zZShGSUxFKiBmcCkgeyByZXR1
cm4gZmNsb3NlKGZwKTsgfQotI2lmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotaW5saW5lIGlu
dCBSZWFkKGludCBmZCwgdm9pZCogYnVmLCB1bnNpZ25lZCBpbnQgY291bnQpIHsKLSAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocmVhZChmZCwgYnVmLCBjb3VudCkpOwotfQotaW5saW5lIGludCBX
cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IGNvdW50KSB7Ci0gIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHdyaXRlKGZkLCBidWYsIGNvdW50KSk7Ci19Ci1pbmxpbmUg
aW50IENsb3NlKGludCBmZCkgeyByZXR1cm4gY2xvc2UoZmQpOyB9Ci1pbmxpbmUgY29uc3QgY2hh
ciogU3RyRXJyb3IoaW50IGVycm51bSkgeyByZXR1cm4gc3RyZXJyb3IoZXJybnVtKTsgfQotI2Vu
ZGlmCi1pbmxpbmUgY29uc3QgY2hhciogR2V0RW52KGNvbnN0IGNoYXIqIG5hbWUpIHsKLSNpZiBH
VEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19XSU5ET1dTX1BIT05FIHwgR1RFU1Rf
T1NfV0lORE9XU19SVAotICAvLyBXZSBhcmUgb24gV2luZG93cyBDRSwgd2hpY2ggaGFzIG5vIGVu
dmlyb25tZW50IHZhcmlhYmxlcy4KLSAgc3RhdGljX2Nhc3Q8dm9pZD4obmFtZSk7ICAvLyBUbyBw
cmV2ZW50ICd1bnVzZWQgYXJndW1lbnQnIHdhcm5pbmcuCi0gIHJldHVybiBOVUxMOwotI2VsaWYg
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQo
X19TdW5PU181XzkpCi0gIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCB3ZSBwcm9ncmFt
bWF0aWNhbGx5IGNsZWFyIHdpbGwgYmUgc2V0IHRvIHRoZQotICAvLyBlbXB0eSBzdHJpbmcgcmF0
aGVyIHRoYW4gdW5zZXQgKE5VTEwpLiAgSGFuZGxlIHRoYXQgY2FzZS4KLSAgY29uc3QgY2hhciog
Y29uc3QgZW52ID0gZ2V0ZW52KG5hbWUpOwotICByZXR1cm4gKGVudiAhPSBOVUxMICYmIGVudlsw
XSAhPSAnXDAnKSA/IGVudiA6IE5VTEw7Ci0jZWxzZQotICByZXR1cm4gZ2V0ZW52KG5hbWUpOwot
I2VuZGlmCi19Ci0KLUdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BPUF8oKQotCi0jaWYgR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLS8vIFdpbmRvd3MgQ0UgaGFzIG5vIEMgbGlicmFyeS4gVGhl
IGFib3J0KCkgZnVuY3Rpb24gaXMgdXNlZCBpbgotLy8gc2V2ZXJhbCBwbGFjZXMgaW4gR29vZ2xl
IFRlc3QuIFRoaXMgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgYSByZWFzb25hYmxlCi0vLyBpbWl0
YXRpb24gb2Ygc3RhbmRhcmQgYmVoYXZpb3VyLgotdm9pZCBBYm9ydCgpOwotI2Vsc2UKLWlubGlu
ZSB2b2lkIEFib3J0KCkgeyBhYm9ydCgpOyB9Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1Nf
TU9CSUxFCi0KLX0gIC8vIG5hbWVzcGFjZSBwb3NpeAotCi0vLyBNU1ZDICJkZXByZWNhdGVzIiBz
bnByaW50ZiBhbmQgaXNzdWVzIHdhcm5pbmdzIHdoZXJldmVyIGl0IGlzIHVzZWQuICBJbgotLy8g
b3JkZXIgdG8gYXZvaWQgdGhlc2Ugd2FybmluZ3MsIHdlIG5lZWQgdG8gdXNlIF9zbnByaW50ZiBv
ciBfc25wcmludGZfcyBvbgotLy8gTVNWQy1iYXNlZCBwbGF0Zm9ybXMuICBXZSBtYXAgdGhlIEdU
RVNUX1NOUFJJTlRGXyBtYWNybyB0byB0aGUgYXBwcm9wcmlhdGUKLS8vIGZ1bmN0aW9uIGluIG9y
ZGVyIHRvIGFjaGlldmUgdGhhdC4gIFdlIHVzZSBtYWNybyBkZWZpbml0aW9uIGhlcmUgYmVjYXVz
ZQotLy8gc25wcmludGYgaXMgYSB2YXJpYWRpYyBmdW5jdGlvbi4KLSNpZiBfTVNDX1ZFUiA+PSAx
NDAwICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gTVNWQyAyMDA1IGFuZCBhYm92ZSBz
dXBwb3J0IHZhcmlhZGljIG1hY3Jvcy4KLSMgZGVmaW5lIEdURVNUX1NOUFJJTlRGXyhidWZmZXIs
IHNpemUsIGZvcm1hdCwgLi4uKSBcCi0gICAgIF9zbnByaW50Zl9zKGJ1ZmZlciwgc2l6ZSwgc2l6
ZSwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0vLyBXaW5k
b3dzIENFIGRvZXMgbm90IGRlZmluZSBfc25wcmludGZfcyBhbmQgTVNWQyBwcmlvciB0byAyMDA1
IGRvZXNuJ3QKLS8vIGNvbXBsYWluIGFib3V0IF9zbnByaW50Zi4KLSMgZGVmaW5lIEdURVNUX1NO
UFJJTlRGXyBfc25wcmludGYKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9TTlBSSU5URl8gc25wcmlu
dGYKLSNlbmRpZgotCi0vLyBUaGUgbWF4aW11bSBudW1iZXIgYSBCaWdnZXN0SW50IGNhbiByZXBy
ZXNlbnQuICBUaGlzIGRlZmluaXRpb24KLS8vIHdvcmtzIG5vIG1hdHRlciBCaWdnZXN0SW50IGlz
IHJlcHJlc2VudGVkIGluIG9uZSdzIGNvbXBsZW1lbnQgb3IKLS8vIHR3bydzIGNvbXBsZW1lbnQu
Ci0vLwotLy8gV2UgY2Fubm90IHJlbHkgb24gbnVtZXJpY19saW1pdHMgaW4gU1RMLCBhcyBfX2lu
dDY0IGFuZCBsb25nIGxvbmcKLS8vIGFyZSBub3QgcGFydCBvZiBzdGFuZGFyZCBDKysgYW5kIG51
bWVyaWNfbGltaXRzIGRvZXNuJ3QgbmVlZCB0byBiZQotLy8gZGVmaW5lZCBmb3IgdGhlbS4KLWNv
bnN0IEJpZ2dlc3RJbnQga01heEJpZ2dlc3RJbnQgPQotICAgIH4oc3RhdGljX2Nhc3Q8QmlnZ2Vz
dEludD4oMSkgPDwgKDgqc2l6ZW9mKEJpZ2dlc3RJbnQpIC0gMSkpOwotCi0vLyBUaGlzIHRlbXBs
YXRlIGNsYXNzIHNlcnZlcyBhcyBhIGNvbXBpbGUtdGltZSBmdW5jdGlvbiBmcm9tIHNpemUgdG8K
LS8vIHR5cGUuICBJdCBtYXBzIGEgc2l6ZSBpbiBieXRlcyB0byBhIHByaW1pdGl2ZSB0eXBlIHdp
dGggdGhhdAotLy8gc2l6ZS4gZS5nLgotLy8KLS8vICAgVHlwZVdpdGhTaXplPDQ+OjpVSW50Ci0v
LwotLy8gaXMgdHlwZWRlZi1lZCB0byBiZSB1bnNpZ25lZCBpbnQgKHVuc2lnbmVkIGludGVnZXIg
bWFkZSB1cCBvZiA0Ci0vLyBieXRlcykuCi0vLwotLy8gU3VjaCBmdW5jdGlvbmFsaXR5IHNob3Vs
ZCBiZWxvbmcgdG8gU1RMLCBidXQgSSBjYW5ub3QgZmluZCBpdAotLy8gdGhlcmUuCi0vLwotLy8g
R29vZ2xlIFRlc3QgdXNlcyB0aGlzIGNsYXNzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBmbG9h
dGluZy1wb2ludAotLy8gY29tcGFyaXNvbi4KLS8vCi0vLyBGb3Igbm93IGl0IG9ubHkgaGFuZGxl
cyBVSW50ICh1bnNpZ25lZCBpbnQpIGFzIHRoYXQncyBhbGwgR29vZ2xlIFRlc3QKLS8vIG5lZWRz
LiAgT3RoZXIgdHlwZXMgY2FuIGJlIGVhc2lseSBhZGRlZCBpbiB0aGUgZnV0dXJlIGlmIG5lZWQK
LS8vIGFyaXNlcy4KLXRlbXBsYXRlIDxzaXplX3Qgc2l6ZT4KLWNsYXNzIFR5cGVXaXRoU2l6ZSB7
Ci0gcHVibGljOgotICAvLyBUaGlzIHByZXZlbnRzIHRoZSB1c2VyIGZyb20gdXNpbmcgVHlwZVdp
dGhTaXplPE4+IHdpdGggaW5jb3JyZWN0Ci0gIC8vIHZhbHVlcyBvZiBOLgotICB0eXBlZGVmIHZv
aWQgVUludDsKLX07Ci0KLS8vIFRoZSBzcGVjaWFsaXphdGlvbiBmb3Igc2l6ZSA0LgotdGVtcGxh
dGUgPD4KLWNsYXNzIFR5cGVXaXRoU2l6ZTw0PiB7Ci0gcHVibGljOgotICAvLyB1bnNpZ25lZCBp
bnQgaGFzIHNpemUgNCBpbiBib3RoIGdjYyBhbmQgTVNWQy4KLSAgLy8KLSAgLy8gQXMgYmFzZS9i
YXNpY3R5cGVzLmggZG9lc24ndCBjb21waWxlIG9uIFdpbmRvd3MsIHdlIGNhbm5vdCB1c2UKLSAg
Ly8gdWludDMyLCB1aW50NjQsIGFuZCBldGMgaGVyZS4KLSAgdHlwZWRlZiBpbnQgSW50OwotICB0
eXBlZGVmIHVuc2lnbmVkIGludCBVSW50OwotfTsKLQotLy8gVGhlIHNwZWNpYWxpemF0aW9uIGZv
ciBzaXplIDguCi10ZW1wbGF0ZSA8PgotY2xhc3MgVHlwZVdpdGhTaXplPDg+IHsKLSBwdWJsaWM6
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICB0eXBlZGVmIF9faW50NjQgSW50OwotICB0eXBlZGVm
IHVuc2lnbmVkIF9faW50NjQgVUludDsKLSNlbHNlCi0gIHR5cGVkZWYgbG9uZyBsb25nIEludDsg
IC8vIE5PTElOVAotICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBVSW50OyAgLy8gTk9MSU5U
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX07Ci0KLS8vIEludGVnZXIgdHlwZXMgb2Yg
a25vd24gc2l6ZXMuCi10eXBlZGVmIFR5cGVXaXRoU2l6ZTw0Pjo6SW50IEludDMyOwotdHlwZWRl
ZiBUeXBlV2l0aFNpemU8ND46OlVJbnQgVUludDMyOwotdHlwZWRlZiBUeXBlV2l0aFNpemU8OD46
OkludCBJbnQ2NDsKLXR5cGVkZWYgVHlwZVdpdGhTaXplPDg+OjpVSW50IFVJbnQ2NDsKLXR5cGVk
ZWYgVHlwZVdpdGhTaXplPDg+OjpJbnQgVGltZUluTWlsbGlzOyAgLy8gUmVwcmVzZW50cyB0aW1l
IGluIG1pbGxpc2Vjb25kcy4KLQotLy8gVXRpbGl0aWVzIGZvciBjb21tYW5kIGxpbmUgZmxhZ3Mg
YW5kIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLy8gTWFjcm8gZm9yIHJlZmVyZW5jaW5nIGZs
YWdzLgotI2lmICFkZWZpbmVkKEdURVNUX0ZMQUcpCi0jIGRlZmluZSBHVEVTVF9GTEFHKG5hbWUp
IEZMQUdTX2d0ZXN0XyMjbmFtZQotI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9GTEFHKQotCi0j
aWYgIWRlZmluZWQoR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXykKLSMgZGVmaW5lIEdURVNU
X1VTRV9PV05fRkxBR0ZJTEVfRkxBR18gMQotI2VuZGlmICAvLyAhZGVmaW5lZChHVEVTVF9VU0Vf
T1dOX0ZMQUdGSUxFX0ZMQUdfKQotCi0jaWYgIWRlZmluZWQoR1RFU1RfREVDTEFSRV9ib29sXykK
LSMgZGVmaW5lIEdURVNUX0ZMQUdfU0FWRVJfIDo6dGVzdGluZzo6aW50ZXJuYWw6OkdUZXN0Rmxh
Z1NhdmVyCi0KLS8vIE1hY3JvcyBmb3IgZGVjbGFyaW5nIGZsYWdzLgotIyBkZWZpbmUgR1RFU1Rf
REVDTEFSRV9ib29sXyhuYW1lKSBHVEVTVF9BUElfIGV4dGVybiBib29sIEdURVNUX0ZMQUcobmFt
ZSkKLSMgZGVmaW5lIEdURVNUX0RFQ0xBUkVfaW50MzJfKG5hbWUpIFwKLSAgICBHVEVTVF9BUElf
IGV4dGVybiA6OnRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiBHVEVTVF9GTEFHKG5hbWUpCi0jZGVm
aW5lIEdURVNUX0RFQ0xBUkVfc3RyaW5nXyhuYW1lKSBcCi0gICAgR1RFU1RfQVBJXyBleHRlcm4g
OjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFHKG5hbWUpCi0KLS8vIE1hY3JvcyBmb3IgZGVmaW5pbmcg
ZmxhZ3MuCi0jZGVmaW5lIEdURVNUX0RFRklORV9ib29sXyhuYW1lLCBkZWZhdWx0X3ZhbCwgZG9j
KSBcCi0gICAgR1RFU1RfQVBJXyBib29sIEdURVNUX0ZMQUcobmFtZSkgPSAoZGVmYXVsdF92YWwp
Ci0jZGVmaW5lIEdURVNUX0RFRklORV9pbnQzMl8obmFtZSwgZGVmYXVsdF92YWwsIGRvYykgXAot
ICAgIEdURVNUX0FQSV8gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW50MzIgR1RFU1RfRkxBRyhuYW1l
KSA9IChkZWZhdWx0X3ZhbCkKLSNkZWZpbmUgR1RFU1RfREVGSU5FX3N0cmluZ18obmFtZSwgZGVm
YXVsdF92YWwsIGRvYykgXAotICAgIEdURVNUX0FQSV8gOjpzdGQ6OnN0cmluZyBHVEVTVF9GTEFH
KG5hbWUpID0gKGRlZmF1bHRfdmFsKQotCi0jZW5kaWYgIC8vICFkZWZpbmVkKEdURVNUX0RFQ0xB
UkVfYm9vbF8pCi0KLS8vIFRocmVhZCBhbm5vdGF0aW9ucwotI2lmICFkZWZpbmVkKEdURVNUX0VY
Q0xVU0lWRV9MT0NLX1JFUVVJUkVEXykKLSMgZGVmaW5lIEdURVNUX0VYQ0xVU0lWRV9MT0NLX1JF
UVVJUkVEXyhsb2NrcykKLSMgZGVmaW5lIEdURVNUX0xPQ0tfRVhDTFVERURfKGxvY2tzKQotI2Vu
ZGlmICAvLyAhZGVmaW5lZChHVEVTVF9FWENMVVNJVkVfTE9DS19SRVFVSVJFRF8pCi0KLS8vIFBh
cnNlcyAnc3RyJyBmb3IgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIuICBJZiBzdWNjZXNzZnVsLCB3
cml0ZXMgdGhlIHJlc3VsdAotLy8gdG8gKnZhbHVlIGFuZCByZXR1cm5zIHRydWU7IG90aGVyd2lz
ZSBsZWF2ZXMgKnZhbHVlIHVuY2hhbmdlZCBhbmQgcmV0dXJucwotLy8gZmFsc2UuCi0vLyBUT0RP
KGNoYW5kbGVyYyk6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZmFjdG9yIGZsYWcgYW5kIGVudmly
b25tZW50IHBhcnNpbmcKLS8vIG91dCBvZiBib3RoIGd0ZXN0LXBvcnQuY2MgYW5kIGd0ZXN0LmNj
IHRvIGF2b2lkIGV4cG9ydGluZyB0aGlzIHV0aWxpdHkKLS8vIGZ1bmN0aW9uLgotYm9vbCBQYXJz
ZUludDMyKGNvbnN0IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2
YWx1ZSk7Ci0KLS8vIFBhcnNlcyBhIGJvb2wvSW50MzIvc3RyaW5nIGZyb20gdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlCi0vLyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBHb29nbGUgVGVzdCBm
bGFnLgotYm9vbCBCb29sRnJvbUdUZXN0RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVs
dF92YWwpOwotR1RFU1RfQVBJXyBJbnQzMiBJbnQzMkZyb21HVGVzdEVudihjb25zdCBjaGFyKiBm
bGFnLCBJbnQzMiBkZWZhdWx0X3ZhbCk7Ci1zdGQ6OnN0cmluZyBTdHJpbmdGcm9tR1Rlc3RFbnYo
Y29uc3QgY2hhciogZmxhZywgY29uc3QgY2hhciogZGVmYXVsdF92YWwpOwotCi19ICAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKLQotLy8gUmV0dXJucyBhIHBhdGggdG8gdGVtcG9yYXJ5IGRpcmVjdG9y
eS4KLS8vIFRyaWVzIHRvIGRldGVybWluZSBhbiBhcHByb3ByaWF0ZSBkaXJlY3RvcnkgZm9yIHRo
ZSBwbGF0Zm9ybS4KLUdURVNUX0FQSV8gc3RkOjpzdHJpbmcgVGVtcERpcigpOwotCi19ICAvLyBu
YW1lc3BhY2UgdGVzdGluZwotCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJO
QUxfR1RFU1RfUE9SVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9p
bnRlcm5hbC9ndGVzdC1zdHJpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZjFhN2Zk
ZDJjMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3Qtc3RyaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmli
dXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcnM6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pLCBlZWZhY21AZ21haWwuY29tIChTZWFuIE1jYWZl
ZSkKLS8vCi0vLyBUaGUgR29vZ2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yayAoR29vZ2xlIFRlc3Qp
Ci0vLwotLy8gVGhpcyBoZWFkZXIgZmlsZSBkZWNsYXJlcyB0aGUgU3RyaW5nIGNsYXNzIGFuZCBm
dW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1
YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLiBUaGV5IHNob3VsZCBub3QgdXNlZAotLy8g
YnkgY29kZSBleHRlcm5hbCB0byBHb29nbGUgVGVzdC4KLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxl
IGlzICNpbmNsdWRlZCBieSA8Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtaW50ZXJuYWwuaD4uCi0vLyBJ
dCBzaG91bGQgbm90IGJlICNpbmNsdWRlZCBieSBvdGhlciBmaWxlcy4KLQotI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwotI2RlZmluZSBHVEVTVF9J
TkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1NUUklOR19IXwotCi0jaWZkZWYgX19CT1JMQU5E
Q19fCi0vLyBzdHJpbmcuaCBpcyBub3QgZ3VhcmFudGVlZCB0byBwcm92aWRlIHN0cmNweSBvbiBD
KysgQnVpbGRlci4KLSMgaW5jbHVkZSA8bWVtLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmlu
Zy5oPgotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0
LXBvcnQuaCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQot
Ly8gU3RyaW5nIC0gYW4gYWJzdHJhY3QgY2xhc3MgaG9sZGluZyBzdGF0aWMgc3RyaW5nIHV0aWxp
dGllcy4KLWNsYXNzIEdURVNUX0FQSV8gU3RyaW5nIHsKLSBwdWJsaWM6Ci0gIC8vIFN0YXRpYyB1
dGlsaXR5IG1ldGhvZHMKLQotICAvLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcsIGFs
bG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4gIFRoZQotICAvLyBjYWxsZXIgaXMgcmVzcG9uc2li
bGUgZm9yIGRlbGV0aW5nIHRoZSByZXR1cm4gdmFsdWUgdXNpbmcKLSAgLy8gZGVsZXRlW10uICBS
ZXR1cm5zIHRoZSBjbG9uZWQgc3RyaW5nLCBvciBOVUxMIGlmIHRoZSBpbnB1dCBpcwotICAvLyBO
VUxMLgotICAvLwotICAvLyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHN0cmR1cCgpIGluIHN0cmlu
Zy5oLCB3aGljaCBhbGxvY2F0ZXMKLSAgLy8gbWVtb3J5IHVzaW5nIG1hbGxvYygpLgotICBzdGF0
aWMgY29uc3QgY2hhciogQ2xvbmVDU3RyaW5nKGNvbnN0IGNoYXIqIGNfc3RyKTsKLQotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFdpbmRvd3MgQ0UgZG9lcyBub3QgaGF2ZSB0aGUg
J0FOU0knIHZlcnNpb25zIG9mIFdpbjMyIEFQSXMuIFRvIGJlCi0gIC8vIGFibGUgdG8gcGFzcyBz
dHJpbmdzIHRvIFdpbjMyIEFQSXMgb24gQ0Ugd2UgbmVlZCB0byBjb252ZXJ0IHRoZW0KLSAgLy8g
dG8gJ1VuaWNvZGUnLCBVVEYtMTYuCi0KLSAgLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRlIHN0cmlu
ZyBmcm9tIHRoZSBnaXZlbiBBTlNJIHN0cmluZywgYWxsb2NhdGluZwotICAvLyBtZW1vcnkgdXNp
bmcgbmV3LiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgcmV0dXJu
Ci0gIC8vIHZhbHVlIHVzaW5nIGRlbGV0ZVtdLiBSZXR1cm5zIHRoZSB3aWRlIHN0cmluZywgb3Ig
TlVMTCBpZiB0aGUKLSAgLy8gaW5wdXQgaXMgTlVMTC4KLSAgLy8KLSAgLy8gVGhlIHdpZGUgc3Ry
aW5nIGlzIGNyZWF0ZWQgdXNpbmcgdGhlIEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgdG8KLSAgLy8g
bWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgQU5TSSB2ZXJzaW9ucyBvZiBXaW4zMiBjYWxscyBh
bmQgdGhlCi0gIC8vIEMgcnVudGltZS4KLSAgc3RhdGljIExQQ1dTVFIgQW5zaVRvVXRmMTYoY29u
c3QgY2hhciogY19zdHIpOwotCi0gIC8vIENyZWF0ZXMgYW4gQU5TSSBzdHJpbmcgZnJvbSB0aGUg
Z2l2ZW4gd2lkZSBzdHJpbmcsIGFsbG9jYXRpbmcKLSAgLy8gbWVtb3J5IHVzaW5nIG5ldy4gVGhl
IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHJldHVybgotICAvLyB2YWx1
ZSB1c2luZyBkZWxldGVbXS4gUmV0dXJucyB0aGUgQU5TSSBzdHJpbmcsIG9yIE5VTEwgaWYgdGhl
Ci0gIC8vIGlucHV0IGlzIE5VTEwuCi0gIC8vCi0gIC8vIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMg
Y3JlYXRlZCB1c2luZyB0aGUgQU5TSSBjb2RlcGFnZSAoQ1BfQUNQKSB0bwotICAvLyBtYXRjaCB0
aGUgYmVoYXZpb3VyIG9mIHRoZSBBTlNJIHZlcnNpb25zIG9mIFdpbjMyIGNhbGxzIGFuZCB0aGUK
LSAgLy8gQyBydW50aW1lLgotICBzdGF0aWMgY29uc3QgY2hhciogVXRmMTZUb0Fuc2koTFBDV1NU
UiB1dGYxNl9zdHIpOwotI2VuZGlmCi0KLSAgLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncy4gIFJl
dHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCi0gIC8vCi0gIC8vIFVu
bGlrZSBzdHJjbXAoKSwgdGhpcyBmdW5jdGlvbiBjYW4gaGFuZGxlIE5VTEwgYXJndW1lbnQocyku
ICBBCi0gIC8vIE5VTEwgQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5v
bi1OVUxMIEMgc3RyaW5nLAotICAvLyBpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZy4KLSAgc3Rh
dGljIGJvb2wgQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyKiBsaHMsIGNvbnN0IGNoYXIqIHJocyk7
Ci0KLSAgLy8gQ29udmVydHMgYSB3aWRlIEMgc3RyaW5nIHRvIGEgU3RyaW5nIHVzaW5nIHRoZSBV
VEYtOCBlbmNvZGluZy4KLSAgLy8gTlVMTCB3aWxsIGJlIGNvbnZlcnRlZCB0byAiKG51bGwpIi4g
IElmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZwotICAvLyB0aGUgY29udmVyc2lvbiwgIihmYWls
ZWQgdG8gY29udmVydCBmcm9tIHdpZGUgc3RyaW5nKSIgaXMKLSAgLy8gcmV0dXJuZWQuCi0gIHN0
YXRpYyBzdGQ6OnN0cmluZyBTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCogd2lkZV9jX3N0
cik7Ci0KLSAgLy8gQ29tcGFyZXMgdHdvIHdpZGUgQyBzdHJpbmdzLiAgUmV0dXJucyB0cnVlIGlm
ZiB0aGV5IGhhdmUgdGhlIHNhbWUKLSAgLy8gY29udGVudC4KLSAgLy8KLSAgLy8gVW5saWtlIHdj
c2NtcCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4gIEEKLSAg
Ly8gTlVMTCBDIHN0cmluZyBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwg
QyBzdHJpbmcsCi0gIC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgotICBzdGF0aWMgYm9v
bCBXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsIGNvbnN0IHdjaGFyX3QqIHJo
cyk7Ci0KLSAgLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVy
bnMgdHJ1ZSBpZmYgdGhleQotICAvLyBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCi0gIC8vCi0gIC8v
IFVubGlrZSBzdHJjYXNlY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3Vt
ZW50KHMpLgotICAvLyBBIE5VTEwgQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8g
YW55IG5vbi1OVUxMIEMgc3RyaW5nLAotICAvLyBpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZy4K
LSAgc3RhdGljIGJvb2wgQ2FzZUluc2Vuc2l0aXZlQ1N0cmluZ0VxdWFscyhjb25zdCBjaGFyKiBs
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmhzKTsKLQotICAvLyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MsIGlnbm9yaW5nIGNh
c2UuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkKLSAgLy8gaGF2ZSB0aGUgc2FtZSBjb250ZW50Lgot
ICAvLwotICAvLyBVbmxpa2Ugd2NzY2FzZWNtcCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUg
TlVMTCBhcmd1bWVudChzKS4KLSAgLy8gQSBOVUxMIEMgc3RyaW5nIGlzIGNvbnNpZGVyZWQgZGlm
ZmVyZW50IHRvIGFueSBub24tTlVMTCB3aWRlIEMgc3RyaW5nLAotICAvLyBpbmNsdWRpbmcgdGhl
IGVtcHR5IHN0cmluZy4KLSAgLy8gTkI6IFRoZSBpbXBsZW1lbnRhdGlvbnMgb24gZGlmZmVyZW50
IHBsYXRmb3JtcyBzbGlnaHRseSBkaWZmZXIuCi0gIC8vIE9uIHdpbmRvd3MsIHRoaXMgbWV0aG9k
IHVzZXMgX3djc2ljbXAgd2hpY2ggY29tcGFyZXMgYWNjb3JkaW5nIHRvIExDX0NUWVBFCi0gIC8v
IGVudmlyb25tZW50IHZhcmlhYmxlLiBPbiBHTlUgcGxhdGZvcm0gdGhpcyBtZXRob2QgdXNlcyB3
Y3NjYXNlY21wCi0gIC8vIHdoaWNoIGNvbXBhcmVzIGFjY29yZGluZyB0byBMQ19DVFlQRSBjYXRl
Z29yeSBvZiB0aGUgY3VycmVudCBsb2NhbGUuCi0gIC8vIE9uIE1hY09TIFgsIGl0IHVzZXMgdG93
bG93ZXIsIHdoaWNoIGFsc28gdXNlcyBMQ19DVFlQRSBjYXRlZ29yeSBvZiB0aGUKLSAgLy8gY3Vy
cmVudCBsb2NhbGUuCi0gIHN0YXRpYyBib29sIENhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1
YWxzKGNvbnN0IHdjaGFyX3QqIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKTsKLQotICAvLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSBnaXZlbiBzdHJpbmcgZW5kcyB3aXRoIHRoZSBnaXZlbiBzdWZmaXgsIGlnbm9yaW5n
Ci0gIC8vIGNhc2UuIEFueSBzdHJpbmcgaXMgY29uc2lkZXJlZCB0byBlbmQgd2l0aCBhbiBlbXB0
eSBzdWZmaXguCi0gIHN0YXRpYyBib29sIEVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlKAotICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCk7Ci0KLSAg
Ly8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMgIiUwMmQiLgotICBzdGF0aWMgc3RkOjpzdHJpbmcg
Rm9ybWF0SW50V2lkdGgyKGludCB2YWx1ZSk7ICAvLyAiJTAyZCIgZm9yIHdpZHRoID09IDIKLQot
ICAvLyBGb3JtYXRzIGFuIGludCB2YWx1ZSBhcyAiJVgiLgotICBzdGF0aWMgc3RkOjpzdHJpbmcg
Rm9ybWF0SGV4SW50KGludCB2YWx1ZSk7Ci0KLSAgLy8gRm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgi
LgotICBzdGF0aWMgc3RkOjpzdHJpbmcgRm9ybWF0Qnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKTsK
LQotIHByaXZhdGU6Ci0gIFN0cmluZygpOyAgLy8gTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRl
ZC4KLX07ICAvLyBjbGFzcyBTdHJpbmcKLQotLy8gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgc3Ry
aW5nc3RyZWFtJ3MgYnVmZmVyIGFzIGFuIHN0ZDo6c3RyaW5nLiAgRWFjaCAnXDAnCi0vLyBjaGFy
YWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyByZXBsYWNlZCB3aXRoICJcXDAiLgotR1RFU1RfQVBJXyBz
dGQ6OnN0cmluZyBTdHJpbmdTdHJlYW1Ub1N0cmluZyg6OnN0ZDo6c3RyaW5nc3RyZWFtKiBzdHJl
YW0pOwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9TVFJJTkdf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3Qt
dHVwbGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTliNDA1MzQwYTg1Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTAyMCArMCwwIEBACi0vLyBUaGlzIGZpbGUgd2FzIEdFTkVS
QVRFRCBieSBjb21tYW5kOgotLy8gICAgIHB1bXAucHkgZ3Rlc3QtdHVwbGUuaC5wdW1wCi0vLyBE
TyBOT1QgRURJVCBCWSBIQU5EISEhCi0KLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCi0v
LyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0v
LyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikK
LQotLy8gSW1wbGVtZW50cyBhIHN1YnNldCBvZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBU
ZXN0IGFuZCBHb29nbGUgTW9jay4KLQotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVS
TkFMX0dURVNUX1RVUExFX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxf
R1RFU1RfVFVQTEVfSF8KLQotI2luY2x1ZGUgPHV0aWxpdHk+ICAvLyBGb3IgOjpzdGQ6OnBhaXIu
Ci0KLS8vIFRoZSBjb21waWxlciB1c2VkIGluIFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVu
dHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCi0vLyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAo
aXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMgcmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlw
YXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcgdGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3
aXNlIGJlCi0vLyBwcml2YXRlIGFzIHB1YmxpYy4KLS8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAx
MiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4KLSNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8
IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBfX1NVTlBST19DQyA8IDB4NTkwKQotIyBkZWZpbmUg
R1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfIHB1YmxpYzoKLSNlbHNlCi0jIGRlZmluZSBH
VEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8gXAotICAgIHRlbXBsYXRlIDxHVEVTVF8xMF9U
WVBFTkFNRVNfKFUpPiBmcmllbmQgY2xhc3MgdHVwbGU7IFwKLSAgIHByaXZhdGU6Ci0jZW5kaWYK
LQotLy8gVmlzdWFsIFN0dWRpbyAyMDEwLCAyMDEyLCBhbmQgMjAxMyBkZWZpbmUgc3ltYm9scyBp
biBzdGQ6OnRyMSB0aGF0IGNvbmZsaWN0Ci0vLyB3aXRoIG91ciBvd24gZGVmaW5pdGlvbnMuIFRo
ZXJlZm9yZSB1c2luZyBvdXIgb3duIHR1cGxlIGRvZXMgbm90IHdvcmsgb24KLS8vIHRob3NlIGNv
bXBpbGVycy4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwICAvKiAx
NjAwIGlzIFZpc3VhbCBTdHVkaW8gMjAxMCAqLwotIyBlcnJvciAiZ3Rlc3QncyB0dXBsZSBkb2Vz
bid0IGNvbXBpbGUgb24gVmlzdWFsIFN0dWRpbyAyMDEwIG9yIGxhdGVyLiBcCi1HVEVTVF9VU0Vf
T1dOX1RSMV9UVVBMRSBtdXN0IGJlIHNldCB0byAwIG9uIHRob3NlIGNvbXBpbGVycy4iCi0jZW5k
aWYKLQotLy8gR1RFU1Rfbl9UVVBMRV8oVCkgaXMgdGhlIHR5cGUgb2YgYW4gbi10dXBsZS4KLSNk
ZWZpbmUgR1RFU1RfMF9UVVBMRV8oVCkgdHVwbGU8PgotI2RlZmluZSBHVEVTVF8xX1RVUExFXyhU
KSB0dXBsZTxUIyMwLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkLCBcCi0gICAg
dm9pZCwgdm9pZCwgdm9pZD4KLSNkZWZpbmUgR1RFU1RfMl9UVVBMRV8oVCkgdHVwbGU8VCMjMCwg
VCMjMSwgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZCwgXAotICAgIHZvaWQsIHZvaWQsIHZv
aWQ+Ci0jZGVmaW5lIEdURVNUXzNfVFVQTEVfKFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIHZv
aWQsIHZvaWQsIHZvaWQsIHZvaWQsIFwKLSAgICB2b2lkLCB2b2lkLCB2b2lkPgotI2RlZmluZSBH
VEVTVF80X1RVUExFXyhUKSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBUIyMzLCB2b2lkLCB2b2lk
LCB2b2lkLCBcCi0gICAgdm9pZCwgdm9pZCwgdm9pZD4KLSNkZWZpbmUgR1RFU1RfNV9UVVBMRV8o
VCkgdHVwbGU8VCMjMCwgVCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgdm9pZCwgdm9pZCwgXAotICAg
IHZvaWQsIHZvaWQsIHZvaWQ+Ci0jZGVmaW5lIEdURVNUXzZfVFVQTEVfKFQpIHR1cGxlPFQjIzAs
IFQjIzEsIFQjIzIsIFQjIzMsIFQjIzQsIFQjIzUsIHZvaWQsIFwKLSAgICB2b2lkLCB2b2lkLCB2
b2lkPgotI2RlZmluZSBHVEVTVF83X1RVUExFXyhUKSB0dXBsZTxUIyMwLCBUIyMxLCBUIyMyLCBU
IyMzLCBUIyM0LCBUIyM1LCBUIyM2LCBcCi0gICAgdm9pZCwgdm9pZCwgdm9pZD4KLSNkZWZpbmUg
R1RFU1RfOF9UVVBMRV8oVCkgdHVwbGU8VCMjMCwgVCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgVCMj
NSwgVCMjNiwgXAotICAgIFQjIzcsIHZvaWQsIHZvaWQ+Ci0jZGVmaW5lIEdURVNUXzlfVFVQTEVf
KFQpIHR1cGxlPFQjIzAsIFQjIzEsIFQjIzIsIFQjIzMsIFQjIzQsIFQjIzUsIFQjIzYsIFwKLSAg
ICBUIyM3LCBUIyM4LCB2b2lkPgotI2RlZmluZSBHVEVTVF8xMF9UVVBMRV8oVCkgdHVwbGU8VCMj
MCwgVCMjMSwgVCMjMiwgVCMjMywgVCMjNCwgVCMjNSwgVCMjNiwgXAotICAgIFQjIzcsIFQjIzgs
IFQjIzk+Ci0KLS8vIEdURVNUX25fVFlQRU5BTUVTXyhUKSBkZWNsYXJlcyBhIGxpc3Qgb2YgbiB0
eXBlbmFtZXMuCi0jZGVmaW5lIEdURVNUXzBfVFlQRU5BTUVTXyhUKQotI2RlZmluZSBHVEVTVF8x
X1RZUEVOQU1FU18oVCkgdHlwZW5hbWUgVCMjMAotI2RlZmluZSBHVEVTVF8yX1RZUEVOQU1FU18o
VCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMQotI2RlZmluZSBHVEVTVF8zX1RZUEVOQU1F
U18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUgVCMjMgotI2RlZmlu
ZSBHVEVTVF80X1RZUEVOQU1FU18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlw
ZW5hbWUgVCMjMiwgXAotICAgIHR5cGVuYW1lIFQjIzMKLSNkZWZpbmUgR1RFU1RfNV9UWVBFTkFN
RVNfKFQpIHR5cGVuYW1lIFQjIzAsIHR5cGVuYW1lIFQjIzEsIHR5cGVuYW1lIFQjIzIsIFwKLSAg
ICB0eXBlbmFtZSBUIyMzLCB0eXBlbmFtZSBUIyM0Ci0jZGVmaW5lIEdURVNUXzZfVFlQRU5BTUVT
XyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBUIyMxLCB0eXBlbmFtZSBUIyMyLCBcCi0gICAg
dHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNCwgdHlwZW5hbWUgVCMjNQotI2RlZmluZSBHVEVT
VF83X1RZUEVOQU1FU18oVCkgdHlwZW5hbWUgVCMjMCwgdHlwZW5hbWUgVCMjMSwgdHlwZW5hbWUg
VCMjMiwgXAotICAgIHR5cGVuYW1lIFQjIzMsIHR5cGVuYW1lIFQjIzQsIHR5cGVuYW1lIFQjIzUs
IHR5cGVuYW1lIFQjIzYKLSNkZWZpbmUgR1RFU1RfOF9UWVBFTkFNRVNfKFQpIHR5cGVuYW1lIFQj
IzAsIHR5cGVuYW1lIFQjIzEsIHR5cGVuYW1lIFQjIzIsIFwKLSAgICB0eXBlbmFtZSBUIyMzLCB0
eXBlbmFtZSBUIyM0LCB0eXBlbmFtZSBUIyM1LCB0eXBlbmFtZSBUIyM2LCB0eXBlbmFtZSBUIyM3
Ci0jZGVmaW5lIEdURVNUXzlfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0eXBlbmFtZSBU
IyMxLCB0eXBlbmFtZSBUIyMyLCBcCi0gICAgdHlwZW5hbWUgVCMjMywgdHlwZW5hbWUgVCMjNCwg
dHlwZW5hbWUgVCMjNSwgdHlwZW5hbWUgVCMjNiwgXAotICAgIHR5cGVuYW1lIFQjIzcsIHR5cGVu
YW1lIFQjIzgKLSNkZWZpbmUgR1RFU1RfMTBfVFlQRU5BTUVTXyhUKSB0eXBlbmFtZSBUIyMwLCB0
eXBlbmFtZSBUIyMxLCB0eXBlbmFtZSBUIyMyLCBcCi0gICAgdHlwZW5hbWUgVCMjMywgdHlwZW5h
bWUgVCMjNCwgdHlwZW5hbWUgVCMjNSwgdHlwZW5hbWUgVCMjNiwgXAotICAgIHR5cGVuYW1lIFQj
IzcsIHR5cGVuYW1lIFQjIzgsIHR5cGVuYW1lIFQjIzkKLQotLy8gSW4gdGhlb3J5LCBkZWZpbmlu
ZyBzdHVmZiBpbiB0aGUgOjpzdGQgbmFtZXNwYWNlIGlzIHVuZGVmaW5lZAotLy8gYmVoYXZpb3Iu
ICBXZSBjYW4gZG8gdGhpcyBhcyB3ZSBhcmUgcGxheWluZyB0aGUgcm9sZSBvZiBhIHN0YW5kYXJk
Ci0vLyBsaWJyYXJ5IHZlbmRvci4KLW5hbWVzcGFjZSBzdGQgewotbmFtZXNwYWNlIHRyMSB7Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMCA9IHZvaWQsIHR5cGVuYW1lIFQxID0gdm9pZCwgdHlwZW5h
bWUgVDIgPSB2b2lkLAotICAgIHR5cGVuYW1lIFQzID0gdm9pZCwgdHlwZW5hbWUgVDQgPSB2b2lk
LCB0eXBlbmFtZSBUNSA9IHZvaWQsCi0gICAgdHlwZW5hbWUgVDYgPSB2b2lkLCB0eXBlbmFtZSBU
NyA9IHZvaWQsIHR5cGVuYW1lIFQ4ID0gdm9pZCwKLSAgICB0eXBlbmFtZSBUOSA9IHZvaWQ+Ci1j
bGFzcyB0dXBsZTsKLQotLy8gQW55dGhpbmcgaW4gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIGlz
IEdvb2dsZSBUZXN0J3MgSU5URVJOQUwKLS8vIElNUExFTUVOVEFUSU9OIERFVEFJTCBhbmQgTVVT
VCBOT1QgQkUgVVNFRCBESVJFQ1RMWSBpbiB1c2VyIGNvZGUuCi1uYW1lc3BhY2UgZ3Rlc3RfaW50
ZXJuYWwgewotCi0vLyBCeVJlZjxUPjo6dHlwZSBpcyBUIGlmIFQgaXMgYSByZWZlcmVuY2U7IG90
aGVyd2lzZSBpdCdzIGNvbnN0IFQmLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQnlS
ZWYgeyB0eXBlZGVmIGNvbnN0IFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotc3RydWN0IEJ5UmVmPFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElO
VAotCi0vLyBBIGhhbmR5IHdyYXBwZXIgZm9yIEJ5UmVmLgotI2RlZmluZSBHVEVTVF9CWV9SRUZf
KFQpIHR5cGVuYW1lIDo6c3RkOjp0cjE6Omd0ZXN0X2ludGVybmFsOjpCeVJlZjxUPjo6dHlwZQot
Ci0vLyBBZGRSZWY8VD46OnR5cGUgaXMgVCBpZiBUIGlzIGEgcmVmZXJlbmNlOyBvdGhlcndpc2Ug
aXQncyBUJi4gIFRoaXMKLS8vIGlzIHRoZSBzYW1lIGFzIHRyMTo6YWRkX3JlZmVyZW5jZTxUPjo6
dHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IEFkZFJlZiB7IHR5cGVkZWYgVCYg
dHlwZTsgfTsgIC8vIE5PTElOVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgQWRkUmVm
PFQmPiB7IHR5cGVkZWYgVCYgdHlwZTsgfTsgIC8vIE5PTElOVAotCi0vLyBBIGhhbmR5IHdyYXBw
ZXIgZm9yIEFkZFJlZi4KLSNkZWZpbmUgR1RFU1RfQUREX1JFRl8oVCkgdHlwZW5hbWUgOjpzdGQ6
OnRyMTo6Z3Rlc3RfaW50ZXJuYWw6OkFkZFJlZjxUPjo6dHlwZQotCi0vLyBBIGhlbHBlciBmb3Ig
aW1wbGVtZW50aW5nIGdldDxrPigpLgotdGVtcGxhdGUgPGludCBrPiBjbGFzcyBHZXQ7Ci0KLS8v
IEEgaGVscGVyIGZvciBpbXBsZW1lbnRpbmcgdHVwbGVfZWxlbWVudDxrLCBUPi4gIGtJbmRleFZh
bGlkIGlzIHRydWUKLS8vIGlmZiBrIDwgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdHVwbGUgdHlw
ZSBULgotdGVtcGxhdGUgPGJvb2wga0luZGV4VmFsaWQsIGludCBrSW5kZXgsIGNsYXNzIFR1cGxl
Pgotc3RydWN0IFR1cGxlRWxlbWVudDsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDAsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUMCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDEsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUMSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDIsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDMsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUMyB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDQsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUNCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDUsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUNSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDYsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUNiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDcsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUNyB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDgsIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUOCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18o
VCk+Ci1zdHJ1Y3QgVHVwbGVFbGVtZW50PHRydWUsIDksIEdURVNUXzEwX1RVUExFXyhUKSA+IHsK
LSAgdHlwZWRlZiBUOSB0eXBlOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFs
Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyB0dXBsZTw+IHsKLSBwdWJsaWM6Ci0gIHR1cGxlKCkge30K
LSAgdHVwbGUoY29uc3QgdHVwbGUmIC8qIHQgKi8pICB7fQotICB0dXBsZSYgb3BlcmF0b3I9KGNv
bnN0IHR1cGxlJiAvKiB0ICovKSB7IHJldHVybiAqdGhpczsgfQotfTsKLQotdGVtcGxhdGUgPEdU
RVNUXzFfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIEdURVNUXzFfVFVQTEVfKFQpIHsKLSBwdWJsaWM6
Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0X2ludGVybmFsOjpHZXQ7Ci0K
LSAgdHVwbGUoKSA6IGYwXygpIHt9Ci0KLSAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhU
MCkgZjApIDogZjBfKGYwKSB7fQotCi0gIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0LmYw
Xykge30KLQotICB0ZW1wbGF0ZSA8R1RFU1RfMV9UWVBFTkFNRVNfKFUpPgotICB0dXBsZShjb25z
dCBHVEVTVF8xX1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pIHt9Ci0KLSAgdHVwbGUmIG9wZXJh
dG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KLQotICB0ZW1wbGF0
ZSA8R1RFU1RfMV9UWVBFTkFNRVNfKFUpPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNU
XzFfVFVQTEVfKFUpJiB0KSB7Ci0gICAgcmV0dXJuIENvcHlGcm9tKHQpOwotICB9Ci0KLSAgR1RF
U1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5B
TUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzFfVFVQTEVfKFUpJiB0KSB7
Ci0gICAgZjBfID0gdC5mMF87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgVDAgZjBfOwot
fTsKLQotdGVtcGxhdGUgPEdURVNUXzJfVFlQRU5BTUVTXyhUKT4KLWNsYXNzIEdURVNUXzJfVFVQ
TEVfKFQpIHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxpbnQgaz4gZnJpZW5kIGNsYXNzIGd0ZXN0
X2ludGVybmFsOjpHZXQ7Ci0KLSAgdHVwbGUoKSA6IGYwXygpLCBmMV8oKSB7fQotCi0gIGV4cGxp
Y2l0IHR1cGxlKEdURVNUX0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSkgOiBm
MF8oZjApLAotICAgICAgZjFfKGYxKSB7fQotCi0gIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYw
Xyh0LmYwXyksIGYxXyh0LmYxXykge30KLQotICB0ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNf
KFUpPgotICB0dXBsZShjb25zdCBHVEVTVF8yX1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBm
MV8odC5mMV8pIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gIHR1
cGxlKGNvbnN0IDo6c3RkOjpwYWlyPFUwLCBVMT4mIHApIDogZjBfKHAuZmlyc3QpLCBmMV8ocC5z
ZWNvbmQpIHt9Ci0KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4g
Q29weUZyb20odCk7IH0KLQotICB0ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFUpPgotICB0
dXBsZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNUXzJfVFVQTEVfKFUpJiB0KSB7Ci0gICAgcmV0dXJu
IENvcHlGcm9tKHQpOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+
Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgOjpzdGQ6OnBhaXI8VTAsIFUxPiYgcCkgewotICAg
IGYwXyA9IHAuZmlyc3Q7Ci0gICAgZjFfID0gcC5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0KLSAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdU
RVNUXzJfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzJfVFVQ
TEVfKFUpJiB0KSB7Ci0gICAgZjBfID0gdC5mMF87Ci0gICAgZjFfID0gdC5mMV87Ci0gICAgcmV0
dXJuICp0aGlzOwotICB9Ci0KLSAgVDAgZjBfOwotICBUMSBmMV87Ci19OwotCi10ZW1wbGF0ZSA8
R1RFU1RfM19UWVBFTkFNRVNfKFQpPgotY2xhc3MgR1RFU1RfM19UVVBMRV8oVCkgewotIHB1Ymxp
YzoKLSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsK
LQotICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSB7fQotCi0gIGV4cGxpY2l0IHR1cGxl
KEdURVNUX0JZX1JFRl8oVDApIGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKLSAgICAgIEdURVNU
X0JZX1JFRl8oVDIpIGYyKSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMikge30KLQotICB0dXBs
ZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pIHt9
Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RF
U1RfM19UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSB7
fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9t
KHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzNfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIG9w
ZXJhdG9yPShjb25zdCBHVEVTVF8zX1RVUExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5RnJv
bSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotCi0gIHRlbXBs
YXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5RnJvbShjb25zdCBHVEVT
VF8zX1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIGYxXyA9IHQuZjFfOwot
ICAgIGYyXyA9IHQuZjJfOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIFQwIGYwXzsKLSAg
VDEgZjFfOwotICBUMiBmMl87Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFQp
PgotY2xhc3MgR1RFU1RfNF9UVVBMRV8oVCkgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBr
PiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKLQotICB0dXBsZSgpIDogZjBfKCks
IGYxXygpLCBmMl8oKSwgZjNfKCkge30KLQotICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZf
KFQwKSBmMCwgR1RFU1RfQllfUkVGXyhUMSkgZjEsCi0gICAgICBHVEVTVF9CWV9SRUZfKFQyKSBm
MiwgR1RFU1RfQllfUkVGXyhUMykgZjMpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYyKSwKLSAg
ICAgIGYzXyhmMykge30KLQotICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBm
MV8odC5mMV8pLCBmMl8odC5mMl8pLCBmM18odC5mM18pIHt9Ci0KLSAgdGVtcGxhdGUgPEdURVNU
XzRfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29uc3QgR1RFU1RfNF9UVVBMRV8oVSkmIHQpIDog
ZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwKLSAgICAgIGYzXyh0LmYzXykge30K
LQotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHR1cGxlJiB0KSB7IHJldHVybiBDb3B5RnJvbSh0
KTsgfQotCi0gIHRlbXBsYXRlIDxHVEVTVF80X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVy
YXRvcj0oY29uc3QgR1RFU1RfNF9UVVBMRV8oVSkmIHQpIHsKLSAgICByZXR1cm4gQ29weUZyb20o
dCk7Ci0gIH0KLQotICBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KLQotICB0ZW1wbGF0
ZSA8R1RFU1RfNF9UWVBFTkFNRVNfKFUpPgotICB0dXBsZSYgQ29weUZyb20oY29uc3QgR1RFU1Rf
NF9UVVBMRV8oVSkmIHQpIHsKLSAgICBmMF8gPSB0LmYwXzsKLSAgICBmMV8gPSB0LmYxXzsKLSAg
ICBmMl8gPSB0LmYyXzsKLSAgICBmM18gPSB0LmYzXzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIgZjJfOwotICBUMyBmM187Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfNV9UWVBFTkFNRVNfKFQpPgotY2xhc3MgR1RFU1RfNV9UVVBMRV8oVCkgewot
IHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6
OkdldDsKLQotICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpIHt9
Ci0KLSAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdURVNUX0JZX1JFRl8o
VDEpIGYxLAotICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZX1JFRl8oVDMpIGYz
LAotICAgICAgR1RFU1RfQllfUkVGXyhUNCkgZjQpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYy
KSwgZjNfKGYzKSwgZjRfKGY0KSB7fQotCi0gIHR1cGxlKGNvbnN0IHR1cGxlJiB0KSA6IGYwXyh0
LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksIGYzXyh0LmYzXyksCi0gICAgICBmNF8odC5m
NF8pIHt9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzVfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUoY29u
c3QgR1RFU1RfNV9UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQu
ZjJfKSwKLSAgICAgIGYzXyh0LmYzXyksIGY0Xyh0LmY0Xykge30KLQotICB0dXBsZSYgb3BlcmF0
b3I9KGNvbnN0IHR1cGxlJiB0KSB7IHJldHVybiBDb3B5RnJvbSh0KTsgfQotCi0gIHRlbXBsYXRl
IDxHVEVTVF81X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgR1RFU1Rf
NV9UVVBMRV8oVSkmIHQpIHsKLSAgICByZXR1cm4gQ29weUZyb20odCk7Ci0gIH0KLQotICBHVEVT
VF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KLQotICB0ZW1wbGF0ZSA8R1RFU1RfNV9UWVBFTkFN
RVNfKFUpPgotICB0dXBsZSYgQ29weUZyb20oY29uc3QgR1RFU1RfNV9UVVBMRV8oVSkmIHQpIHsK
LSAgICBmMF8gPSB0LmYwXzsKLSAgICBmMV8gPSB0LmYxXzsKLSAgICBmMl8gPSB0LmYyXzsKLSAg
ICBmM18gPSB0LmYzXzsKLSAgICBmNF8gPSB0LmY0XzsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0K
LQotICBUMCBmMF87Ci0gIFQxIGYxXzsKLSAgVDIgZjJfOwotICBUMyBmM187Ci0gIFQ0IGY0XzsK
LX07Ci0KLXRlbXBsYXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVCk+Ci1jbGFzcyBHVEVTVF82X1RV
UExFXyhUKSB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8aW50IGs+IGZyaWVuZCBjbGFzcyBndGVz
dF9pbnRlcm5hbDo6R2V0OwotCi0gIHR1cGxlKCkgOiBmMF8oKSwgZjFfKCksIGYyXygpLCBmM18o
KSwgZjRfKCksIGY1XygpIHt9Ci0KLSAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkg
ZjAsIEdURVNUX0JZX1JFRl8oVDEpIGYxLAotICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdU
RVNUX0JZX1JFRl8oVDMpIGYzLCBHVEVTVF9CWV9SRUZfKFQ0KSBmNCwKLSAgICAgIEdURVNUX0JZ
X1JFRl8oVDUpIGY1KSA6IGYwXyhmMCksIGYxXyhmMSksIGYyXyhmMiksIGYzXyhmMyksIGY0Xyhm
NCksCi0gICAgICBmNV8oZjUpIHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogZjBfKHQu
ZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQuZjJfKSwgZjNfKHQuZjNfKSwKLSAgICAgIGY0Xyh0LmY0
XyksIGY1Xyh0LmY1Xykge30KLQotICB0ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNfKFUpPgot
ICB0dXBsZShjb25zdCBHVEVTVF82X1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5m
MV8pLCBmMl8odC5mMl8pLAotICAgICAgZjNfKHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVf
KSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlG
cm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzZfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUm
IG9wZXJhdG9yPShjb25zdCBHVEVTVF82X1RVUExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5
RnJvbSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotCi0gIHRl
bXBsYXRlIDxHVEVTVF82X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5RnJvbShjb25zdCBH
VEVTVF82X1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIGYxXyA9IHQuZjFf
OwotICAgIGYyXyA9IHQuZjJfOwotICAgIGYzXyA9IHQuZjNfOwotICAgIGY0XyA9IHQuZjRfOwot
ICAgIGY1XyA9IHQuZjVfOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotCi0gIFQwIGYwXzsKLSAg
VDEgZjFfOwotICBUMiBmMl87Ci0gIFQzIGYzXzsKLSAgVDQgZjRfOwotICBUNSBmNV87Ci19Owot
Ci10ZW1wbGF0ZSA8R1RFU1RfN19UWVBFTkFNRVNfKFQpPgotY2xhc3MgR1RFU1RfN19UVVBMRV8o
VCkgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50
ZXJuYWw6OkdldDsKLQotICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0
XygpLCBmNV8oKSwgZjZfKCkge30KLQotICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQw
KSBmMCwgR1RFU1RfQllfUkVGXyhUMSkgZjEsCi0gICAgICBHVEVTVF9CWV9SRUZfKFQyKSBmMiwg
R1RFU1RfQllfUkVGXyhUMykgZjMsIEdURVNUX0JZX1JFRl8oVDQpIGY0LAotICAgICAgR1RFU1Rf
QllfUkVGXyhUNSkgZjUsIEdURVNUX0JZX1JFRl8oVDYpIGY2KSA6IGYwXyhmMCksIGYxXyhmMSks
IGYyXyhmMiksCi0gICAgICBmM18oZjMpLCBmNF8oZjQpLCBmNV8oZjUpLCBmNl8oZjYpIHt9Ci0K
LSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogZjBfKHQuZjBfKSwgZjFfKHQuZjFfKSwgZjJfKHQu
ZjJfKSwgZjNfKHQuZjNfKSwKLSAgICAgIGY0Xyh0LmY0XyksIGY1Xyh0LmY1XyksIGY2Xyh0LmY2
Xykge30KLQotICB0ZW1wbGF0ZSA8R1RFU1RfN19UWVBFTkFNRVNfKFUpPgotICB0dXBsZShjb25z
dCBHVEVTVF83X1RVUExFXyhVKSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5m
Ml8pLAotICAgICAgZjNfKHQuZjNfKSwgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZf
KSB7fQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIHQpIHsgcmV0dXJuIENvcHlG
cm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUm
IG9wZXJhdG9yPShjb25zdCBHVEVTVF83X1RVUExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5
RnJvbSh0KTsKLSAgfQotCi0gIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotCi0gIHRl
bXBsYXRlIDxHVEVTVF83X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlJiBDb3B5RnJvbShjb25zdCBH
VEVTVF83X1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIGYxXyA9IHQuZjFf
OwotICAgIGYyXyA9IHQuZjJfOwotICAgIGYzXyA9IHQuZjNfOwotICAgIGY0XyA9IHQuZjRfOwot
ICAgIGY1XyA9IHQuZjVfOwotICAgIGY2XyA9IHQuZjZfOwotICAgIHJldHVybiAqdGhpczsKLSAg
fQotCi0gIFQwIGYwXzsKLSAgVDEgZjFfOwotICBUMiBmMl87Ci0gIFQzIGYzXzsKLSAgVDQgZjRf
OwotICBUNSBmNV87Ci0gIFQ2IGY2XzsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1F
U18oVCk+Ci1jbGFzcyBHVEVTVF84X1RVUExFXyhUKSB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
aW50IGs+IGZyaWVuZCBjbGFzcyBndGVzdF9pbnRlcm5hbDo6R2V0OwotCi0gIHR1cGxlKCkgOiBm
MF8oKSwgZjFfKCksIGYyXygpLCBmM18oKSwgZjRfKCksIGY1XygpLCBmNl8oKSwgZjdfKCkge30K
LQotICBleHBsaWNpdCB0dXBsZShHVEVTVF9CWV9SRUZfKFQwKSBmMCwgR1RFU1RfQllfUkVGXyhU
MSkgZjEsCi0gICAgICBHVEVTVF9CWV9SRUZfKFQyKSBmMiwgR1RFU1RfQllfUkVGXyhUMykgZjMs
IEdURVNUX0JZX1JFRl8oVDQpIGY0LAotICAgICAgR1RFU1RfQllfUkVGXyhUNSkgZjUsIEdURVNU
X0JZX1JFRl8oVDYpIGY2LAotICAgICAgR1RFU1RfQllfUkVGXyhUNykgZjcpIDogZjBfKGYwKSwg
ZjFfKGYxKSwgZjJfKGYyKSwgZjNfKGYzKSwgZjRfKGY0KSwKLSAgICAgIGY1XyhmNSksIGY2Xyhm
NiksIGY3XyhmNykge30KLQotICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBm
MV8odC5mMV8pLCBmMl8odC5mMl8pLCBmM18odC5mM18pLAotICAgICAgZjRfKHQuZjRfKSwgZjVf
KHQuZjVfKSwgZjZfKHQuZjZfKSwgZjdfKHQuZjdfKSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF84
X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlKGNvbnN0IEdURVNUXzhfVFVQTEVfKFUpJiB0KSA6IGYw
Xyh0LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksCi0gICAgICBmM18odC5mM18pLCBmNF8o
dC5mNF8pLCBmNV8odC5mNV8pLCBmNl8odC5mNl8pLCBmN18odC5mN18pIHt9Ci0KLSAgdHVwbGUm
IG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29weUZyb20odCk7IH0KLQotICB0
ZW1wbGF0ZSA8R1RFU1RfOF9UWVBFTkFNRVNfKFUpPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0
IEdURVNUXzhfVFVQTEVfKFUpJiB0KSB7Ci0gICAgcmV0dXJuIENvcHlGcm9tKHQpOwotICB9Ci0K
LSAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdURVNUXzhf
VFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXzhfVFVQTEVfKFUp
JiB0KSB7Ci0gICAgZjBfID0gdC5mMF87Ci0gICAgZjFfID0gdC5mMV87Ci0gICAgZjJfID0gdC5m
Ml87Ci0gICAgZjNfID0gdC5mM187Ci0gICAgZjRfID0gdC5mNF87Ci0gICAgZjVfID0gdC5mNV87
Ci0gICAgZjZfID0gdC5mNl87Ci0gICAgZjdfID0gdC5mN187Ci0gICAgcmV0dXJuICp0aGlzOwot
ICB9Ci0KLSAgVDAgZjBfOwotICBUMSBmMV87Ci0gIFQyIGYyXzsKLSAgVDMgZjNfOwotICBUNCBm
NF87Ci0gIFQ1IGY1XzsKLSAgVDYgZjZfOwotICBUNyBmN187Ci19OwotCi10ZW1wbGF0ZSA8R1RF
U1RfOV9UWVBFTkFNRVNfKFQpPgotY2xhc3MgR1RFU1RfOV9UVVBMRV8oVCkgewotIHB1YmxpYzoK
LSAgdGVtcGxhdGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKLQot
ICB0dXBsZSgpIDogZjBfKCksIGYxXygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBmNV8oKSwgZjZf
KCksIGY3XygpLCBmOF8oKSB7fQotCi0gIGV4cGxpY2l0IHR1cGxlKEdURVNUX0JZX1JFRl8oVDAp
IGYwLCBHVEVTVF9CWV9SRUZfKFQxKSBmMSwKLSAgICAgIEdURVNUX0JZX1JFRl8oVDIpIGYyLCBH
VEVTVF9CWV9SRUZfKFQzKSBmMywgR1RFU1RfQllfUkVGXyhUNCkgZjQsCi0gICAgICBHVEVTVF9C
WV9SRUZfKFQ1KSBmNSwgR1RFU1RfQllfUkVGXyhUNikgZjYsIEdURVNUX0JZX1JFRl8oVDcpIGY3
LAotICAgICAgR1RFU1RfQllfUkVGXyhUOCkgZjgpIDogZjBfKGYwKSwgZjFfKGYxKSwgZjJfKGYy
KSwgZjNfKGYzKSwgZjRfKGY0KSwKLSAgICAgIGY1XyhmNSksIGY2XyhmNiksIGY3XyhmNyksIGY4
XyhmOCkge30KLQotICB0dXBsZShjb25zdCB0dXBsZSYgdCkgOiBmMF8odC5mMF8pLCBmMV8odC5m
MV8pLCBmMl8odC5mMl8pLCBmM18odC5mM18pLAotICAgICAgZjRfKHQuZjRfKSwgZjVfKHQuZjVf
KSwgZjZfKHQuZjZfKSwgZjdfKHQuZjdfKSwgZjhfKHQuZjhfKSB7fQotCi0gIHRlbXBsYXRlIDxH
VEVTVF85X1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxlKGNvbnN0IEdURVNUXzlfVFVQTEVfKFUpJiB0
KSA6IGYwXyh0LmYwXyksIGYxXyh0LmYxXyksIGYyXyh0LmYyXyksCi0gICAgICBmM18odC5mM18p
LCBmNF8odC5mNF8pLCBmNV8odC5mNV8pLCBmNl8odC5mNl8pLCBmN18odC5mN18pLCBmOF8odC5m
OF8pIHt9Ci0KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29w
eUZyb20odCk7IH0KLQotICB0ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFUpPgotICB0dXBs
ZSYgb3BlcmF0b3I9KGNvbnN0IEdURVNUXzlfVFVQTEVfKFUpJiB0KSB7Ci0gICAgcmV0dXJuIENv
cHlGcm9tKHQpOwotICB9Ci0KLSAgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAg
dGVtcGxhdGUgPEdURVNUXzlfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0
IEdURVNUXzlfVFVQTEVfKFUpJiB0KSB7Ci0gICAgZjBfID0gdC5mMF87Ci0gICAgZjFfID0gdC5m
MV87Ci0gICAgZjJfID0gdC5mMl87Ci0gICAgZjNfID0gdC5mM187Ci0gICAgZjRfID0gdC5mNF87
Ci0gICAgZjVfID0gdC5mNV87Ci0gICAgZjZfID0gdC5mNl87Ci0gICAgZjdfID0gdC5mN187Ci0g
ICAgZjhfID0gdC5mOF87Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgVDAgZjBfOwotICBU
MSBmMV87Ci0gIFQyIGYyXzsKLSAgVDMgZjNfOwotICBUNCBmNF87Ci0gIFQ1IGY1XzsKLSAgVDYg
ZjZfOwotICBUNyBmN187Ci0gIFQ4IGY4XzsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF8xMF9UWVBF
TkFNRVNfKFQpPgotY2xhc3MgdHVwbGUgewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGludCBrPiBm
cmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKLQotICB0dXBsZSgpIDogZjBfKCksIGYx
XygpLCBmMl8oKSwgZjNfKCksIGY0XygpLCBmNV8oKSwgZjZfKCksIGY3XygpLCBmOF8oKSwKLSAg
ICAgIGY5XygpIHt9Ci0KLSAgZXhwbGljaXQgdHVwbGUoR1RFU1RfQllfUkVGXyhUMCkgZjAsIEdU
RVNUX0JZX1JFRl8oVDEpIGYxLAotICAgICAgR1RFU1RfQllfUkVGXyhUMikgZjIsIEdURVNUX0JZ
X1JFRl8oVDMpIGYzLCBHVEVTVF9CWV9SRUZfKFQ0KSBmNCwKLSAgICAgIEdURVNUX0JZX1JFRl8o
VDUpIGY1LCBHVEVTVF9CWV9SRUZfKFQ2KSBmNiwgR1RFU1RfQllfUkVGXyhUNykgZjcsCi0gICAg
ICBHVEVTVF9CWV9SRUZfKFQ4KSBmOCwgR1RFU1RfQllfUkVGXyhUOSkgZjkpIDogZjBfKGYwKSwg
ZjFfKGYxKSwgZjJfKGYyKSwKLSAgICAgIGYzXyhmMyksIGY0XyhmNCksIGY1XyhmNSksIGY2Xyhm
NiksIGY3XyhmNyksIGY4XyhmOCksIGY5XyhmOSkge30KLQotICB0dXBsZShjb25zdCB0dXBsZSYg
dCkgOiBmMF8odC5mMF8pLCBmMV8odC5mMV8pLCBmMl8odC5mMl8pLCBmM18odC5mM18pLAotICAg
ICAgZjRfKHQuZjRfKSwgZjVfKHQuZjVfKSwgZjZfKHQuZjZfKSwgZjdfKHQuZjdfKSwgZjhfKHQu
ZjhfKSwgZjlfKHQuZjlfKSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF8xMF9UWVBFTkFNRVNfKFUp
PgotICB0dXBsZShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHQpIDogZjBfKHQuZjBfKSwgZjFf
KHQuZjFfKSwgZjJfKHQuZjJfKSwKLSAgICAgIGYzXyh0LmYzXyksIGY0Xyh0LmY0XyksIGY1Xyh0
LmY1XyksIGY2Xyh0LmY2XyksIGY3Xyh0LmY3XyksIGY4Xyh0LmY4XyksCi0gICAgICBmOV8odC5m
OV8pIHt9Ci0KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCB0dXBsZSYgdCkgeyByZXR1cm4gQ29w
eUZyb20odCk7IH0KLQotICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KLSAgdHVw
bGUmIG9wZXJhdG9yPShjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkmIHQpIHsKLSAgICByZXR1cm4g
Q29weUZyb20odCk7Ci0gIH0KLQotICBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVORF8KLQot
ICB0ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNv
bnN0IEdURVNUXzEwX1RVUExFXyhVKSYgdCkgewotICAgIGYwXyA9IHQuZjBfOwotICAgIGYxXyA9
IHQuZjFfOwotICAgIGYyXyA9IHQuZjJfOwotICAgIGYzXyA9IHQuZjNfOwotICAgIGY0XyA9IHQu
ZjRfOwotICAgIGY1XyA9IHQuZjVfOwotICAgIGY2XyA9IHQuZjZfOwotICAgIGY3XyA9IHQuZjdf
OwotICAgIGY4XyA9IHQuZjhfOwotICAgIGY5XyA9IHQuZjlfOwotICAgIHJldHVybiAqdGhpczsK
LSAgfQotCi0gIFQwIGYwXzsKLSAgVDEgZjFfOwotICBUMiBmMl87Ci0gIFQzIGYzXzsKLSAgVDQg
ZjRfOwotICBUNSBmNV87Ci0gIFQ2IGY2XzsKLSAgVDcgZjdfOwotICBUOCBmOF87Ci0gIFQ5IGY5
XzsKLX07Ci0KLS8vIDYuMS4zLjIgVHVwbGUgY3JlYXRpb24gZnVuY3Rpb25zLgotCi0vLyBLbm93
biBsaW1pdGF0aW9uczogd2UgZG9uJ3Qgc3VwcG9ydCBwYXNzaW5nIGFuCi0vLyBzdGQ6OnRyMTo6
cmVmZXJlbmNlX3dyYXBwZXI8VD4gdG8gbWFrZV90dXBsZSgpLiAgQW5kIHdlIGRvbid0Ci0vLyBp
bXBsZW1lbnQgdGllKCkuCi0KLWlubGluZSB0dXBsZTw+IG1ha2VfdHVwbGUoKSB7IHJldHVybiB0
dXBsZTw+KCk7IH0KLQotdGVtcGxhdGUgPEdURVNUXzFfVFlQRU5BTUVTXyhUKT4KLWlubGluZSBH
VEVTVF8xX1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCkgewotICByZXR1cm4gR1RF
U1RfMV9UVVBMRV8oVCkoZjApOwotfQotCi10ZW1wbGF0ZSA8R1RFU1RfMl9UWVBFTkFNRVNfKFQp
PgotaW5saW5lIEdURVNUXzJfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25z
dCBUMSYgZjEpIHsKLSAgcmV0dXJuIEdURVNUXzJfVFVQTEVfKFQpKGYwLCBmMSk7Ci19Ci0KLXRl
bXBsYXRlIDxHVEVTVF8zX1RZUEVOQU1FU18oVCk+Ci1pbmxpbmUgR1RFU1RfM19UVVBMRV8oVCkg
bWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyKSB7Ci0g
IHJldHVybiBHVEVTVF8zX1RVUExFXyhUKShmMCwgZjEsIGYyKTsKLX0KLQotdGVtcGxhdGUgPEdU
RVNUXzRfVFlQRU5BTUVTXyhUKT4KLWlubGluZSBHVEVTVF80X1RVUExFXyhUKSBtYWtlX3R1cGxl
KGNvbnN0IFQwJiBmMCwgY29uc3QgVDEmIGYxLCBjb25zdCBUMiYgZjIsCi0gICAgY29uc3QgVDMm
IGYzKSB7Ci0gIHJldHVybiBHVEVTVF80X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMyk7Ci19Ci0K
LXRlbXBsYXRlIDxHVEVTVF81X1RZUEVOQU1FU18oVCk+Ci1pbmxpbmUgR1RFU1RfNV9UVVBMRV8o
VCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAot
ICAgIGNvbnN0IFQzJiBmMywgY29uc3QgVDQmIGY0KSB7Ci0gIHJldHVybiBHVEVTVF81X1RVUExF
XyhUKShmMCwgZjEsIGYyLCBmMywgZjQpOwotfQotCi10ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFN
RVNfKFQpPgotaW5saW5lIEdURVNUXzZfVFVQTEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYw
LCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBmMiwKLSAgICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0
JiBmNCwgY29uc3QgVDUmIGY1KSB7Ci0gIHJldHVybiBHVEVTVF82X1RVUExFXyhUKShmMCwgZjEs
IGYyLCBmMywgZjQsIGY1KTsKLX0KLQotdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhUKT4K
LWlubGluZSBHVEVTVF83X1RVUExFXyhUKSBtYWtlX3R1cGxlKGNvbnN0IFQwJiBmMCwgY29uc3Qg
VDEmIGYxLCBjb25zdCBUMiYgZjIsCi0gICAgY29uc3QgVDMmIGYzLCBjb25zdCBUNCYgZjQsIGNv
bnN0IFQ1JiBmNSwgY29uc3QgVDYmIGY2KSB7Ci0gIHJldHVybiBHVEVTVF83X1RVUExFXyhUKShm
MCwgZjEsIGYyLCBmMywgZjQsIGY1LCBmNik7Ci19Ci0KLXRlbXBsYXRlIDxHVEVTVF84X1RZUEVO
QU1FU18oVCk+Ci1pbmxpbmUgR1RFU1RfOF9UVVBMRV8oVCkgbWFrZV90dXBsZShjb25zdCBUMCYg
ZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAotICAgIGNvbnN0IFQzJiBmMywgY29uc3Qg
VDQmIGY0LCBjb25zdCBUNSYgZjUsIGNvbnN0IFQ2JiBmNiwgY29uc3QgVDcmIGY3KSB7Ci0gIHJl
dHVybiBHVEVTVF84X1RVUExFXyhUKShmMCwgZjEsIGYyLCBmMywgZjQsIGY1LCBmNiwgZjcpOwot
fQotCi10ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgotaW5saW5lIEdURVNUXzlfVFVQ
TEVfKFQpIG1ha2VfdHVwbGUoY29uc3QgVDAmIGYwLCBjb25zdCBUMSYgZjEsIGNvbnN0IFQyJiBm
MiwKLSAgICBjb25zdCBUMyYgZjMsIGNvbnN0IFQ0JiBmNCwgY29uc3QgVDUmIGY1LCBjb25zdCBU
NiYgZjYsIGNvbnN0IFQ3JiBmNywKLSAgICBjb25zdCBUOCYgZjgpIHsKLSAgcmV0dXJuIEdURVNU
XzlfVFVQTEVfKFQpKGYwLCBmMSwgZjIsIGYzLCBmNCwgZjUsIGY2LCBmNywgZjgpOwotfQotCi10
ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKT4KLWlubGluZSBHVEVTVF8xMF9UVVBMRV8o
VCkgbWFrZV90dXBsZShjb25zdCBUMCYgZjAsIGNvbnN0IFQxJiBmMSwgY29uc3QgVDImIGYyLAot
ICAgIGNvbnN0IFQzJiBmMywgY29uc3QgVDQmIGY0LCBjb25zdCBUNSYgZjUsIGNvbnN0IFQ2JiBm
NiwgY29uc3QgVDcmIGY3LAotICAgIGNvbnN0IFQ4JiBmOCwgY29uc3QgVDkmIGY5KSB7Ci0gIHJl
dHVybiBHVEVTVF8xMF9UVVBMRV8oVCkoZjAsIGYxLCBmMiwgZjMsIGY0LCBmNSwgZjYsIGY3LCBm
OCwgZjkpOwotfQotCi0vLyA2LjEuMy4zIFR1cGxlIGhlbHBlciBjbGFzc2VzLgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVHVwbGU+IHN0cnVjdCB0dXBsZV9zaXplOwotCi10ZW1wbGF0ZSA8R1RFU1Rf
MF9UWVBFTkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfMF9UVVBMRV8oVCkgPiB7
Ci0gIHN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAwOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzFf
VFlQRU5BTUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzFfVFVQTEVfKFQpID4gewot
ICBzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gMTsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF8yX1RZ
UEVOQU1FU18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8yX1RVUExFXyhUKSA+IHsKLSAg
c3RhdGljIGNvbnN0IGludCB2YWx1ZSA9IDI7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfM19UWVBF
TkFNRVNfKFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfM19UVVBMRV8oVCkgPiB7Ci0gIHN0
YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzOwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzRfVFlQRU5B
TUVTXyhUKT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzRfVFVQTEVfKFQpID4gewotICBzdGF0
aWMgY29uc3QgaW50IHZhbHVlID0gNDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF81X1RZUEVOQU1F
U18oVCk+Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF81X1RVUExFXyhUKSA+IHsKLSAgc3RhdGlj
IGNvbnN0IGludCB2YWx1ZSA9IDU7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfNl9UWVBFTkFNRVNf
KFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfNl9UVVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBj
b25zdCBpbnQgdmFsdWUgPSA2OwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzdfVFlQRU5BTUVTXyhU
KT4KLXN0cnVjdCB0dXBsZV9zaXplPEdURVNUXzdfVFVQTEVfKFQpID4gewotICBzdGF0aWMgY29u
c3QgaW50IHZhbHVlID0gNzsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF84X1RZUEVOQU1FU18oVCk+
Ci1zdHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF84X1RVUExFXyhUKSA+IHsKLSAgc3RhdGljIGNvbnN0
IGludCB2YWx1ZSA9IDg7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfOV9UWVBFTkFNRVNfKFQpPgot
c3RydWN0IHR1cGxlX3NpemU8R1RFU1RfOV9UVVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSA5OwotfTsKLQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1z
dHJ1Y3QgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVCkgPiB7Ci0gIHN0YXRpYyBjb25zdCBp
bnQgdmFsdWUgPSAxMDsKLX07Ci0KLXRlbXBsYXRlIDxpbnQgaywgY2xhc3MgVHVwbGU+Ci1zdHJ1
Y3QgdHVwbGVfZWxlbWVudCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZ3Rlc3RfaW50ZXJuYWw6OlR1
cGxlRWxlbWVudDwKLSAgICAgIGsgPCAodHVwbGVfc2l6ZTxUdXBsZT46OnZhbHVlKSwgaywgVHVw
bGU+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZGVmaW5lIEdURVNUX1RVUExFX0VMRU1FTlRfKGssIFR1
cGxlKSB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PGssIFR1cGxlID46OnR5cGUKLQotLy8gNi4xLjMu
NCBFbGVtZW50IGFjY2Vzcy4KLQotbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsIHsKLQotdGVtcGxh
dGUgPD4KLWNsYXNzIEdldDwwPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+
Ci0gIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygwLCBUdXBsZSkp
Ci0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmYwXzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVt
cGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9F
TEVNRU5UXygwLCBUdXBsZSkpCi0gIENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJu
IHQuZjBfOyB9Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR2V0PDE+IHsKLSBwdWJsaWM6Ci0g
IHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdURVNUX1RV
UExFX0VMRU1FTlRfKDEsIFR1cGxlKSkKLSAgRmllbGQoVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjFf
OyB9ICAvLyBOT0xJTlQKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVT
VF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDEsIFR1cGxlKSkKLSAgQ29uc3RGaWVsZChj
b25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mMV87IH0KLX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFz
cyBHZXQ8Mj4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMg
R1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMiwgVHVwbGUpKQotICBGaWVsZChU
dXBsZSYgdCkgeyByZXR1cm4gdC5mMl87IH0gIC8vIE5PTElOVAotCi0gIHRlbXBsYXRlIDxjbGFz
cyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oMiwg
VHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmYyXzsgfQot
fTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIEdldDwzPiB7Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8
Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5U
XygzLCBUdXBsZSkpCi0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmYzXzsgfSAgLy8gTk9M
SU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQllfUkVGXyhH
VEVTVF9UVVBMRV9FTEVNRU5UXygzLCBUdXBsZSkpCi0gIENvbnN0RmllbGQoY29uc3QgVHVwbGUm
IHQpIHsgcmV0dXJuIHQuZjNfOyB9Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xhc3MgR2V0PDQ+IHsK
LSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9S
RUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDQsIFR1cGxlKSkKLSAgRmllbGQoVHVwbGUmIHQpIHsg
cmV0dXJuIHQuZjRfOyB9ICAvLyBOT0xJTlQKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0g
IHN0YXRpYyBHVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDQsIFR1cGxlKSkKLSAg
Q29uc3RGaWVsZChjb25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mNF87IH0KLX07Ci0KLXRlbXBs
YXRlIDw+Ci1jbGFzcyBHZXQ8NT4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxl
PgotICBzdGF0aWMgR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oNSwgVHVwbGUp
KQotICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mNV87IH0gIC8vIE5PTElOVAotCi0gIHRl
bXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0JZX1JFRl8oR1RFU1RfVFVQTEVf
RUxFTUVOVF8oNSwgVHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVy
biB0LmY1XzsgfQotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIEdldDw2PiB7Ci0gcHVibGljOgot
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9BRERfUkVGXyhHVEVTVF9U
VVBMRV9FTEVNRU5UXyg2LCBUdXBsZSkpCi0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVybiB0LmY2
XzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RF
U1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg2LCBUdXBsZSkpCi0gIENvbnN0RmllbGQo
Y29uc3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjZfOyB9Ci19OwotCi10ZW1wbGF0ZSA8PgotY2xh
c3MgR2V0PDc+IHsKLSBwdWJsaWM6Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGlj
IEdURVNUX0FERF9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDcsIFR1cGxlKSkKLSAgRmllbGQo
VHVwbGUmIHQpIHsgcmV0dXJuIHQuZjdfOyB9ICAvLyBOT0xJTlQKLQotICB0ZW1wbGF0ZSA8Y2xh
c3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1FTlRfKDcs
IFR1cGxlKSkKLSAgQ29uc3RGaWVsZChjb25zdCBUdXBsZSYgdCkgeyByZXR1cm4gdC5mN187IH0K
LX07Ci0KLXRlbXBsYXRlIDw+Ci1jbGFzcyBHZXQ8OD4gewotIHB1YmxpYzoKLSAgdGVtcGxhdGUg
PGNsYXNzIFR1cGxlPgotICBzdGF0aWMgR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVO
VF8oOCwgVHVwbGUpKQotICBGaWVsZChUdXBsZSYgdCkgeyByZXR1cm4gdC5mOF87IH0gIC8vIE5P
TElOVAotCi0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0JZX1JFRl8o
R1RFU1RfVFVQTEVfRUxFTUVOVF8oOCwgVHVwbGUpKQotICBDb25zdEZpZWxkKGNvbnN0IFR1cGxl
JiB0KSB7IHJldHVybiB0LmY4XzsgfQotfTsKLQotdGVtcGxhdGUgPD4KLWNsYXNzIEdldDw5PiB7
Ci0gcHVibGljOgotICB0ZW1wbGF0ZSA8Y2xhc3MgVHVwbGU+Ci0gIHN0YXRpYyBHVEVTVF9BRERf
UkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg5LCBUdXBsZSkpCi0gIEZpZWxkKFR1cGxlJiB0KSB7
IHJldHVybiB0LmY5XzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgot
ICBzdGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXyg5LCBUdXBsZSkpCi0g
IENvbnN0RmllbGQoY29uc3QgVHVwbGUmIHQpIHsgcmV0dXJuIHQuZjlfOyB9Ci19OwotCi19ICAv
LyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKLQotdGVtcGxhdGUgPGludCBrLCBHVEVTVF8xMF9U
WVBFTkFNRVNfKFQpPgotR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVOVF8oaywgR1RF
U1RfMTBfVFVQTEVfKFQpKSkKLWdldChHVEVTVF8xMF9UVVBMRV8oVCkmIHQpIHsKLSAgcmV0dXJu
IGd0ZXN0X2ludGVybmFsOjpHZXQ8az46OkZpZWxkKHQpOwotfQotCi10ZW1wbGF0ZSA8aW50IGss
IEdURVNUXzEwX1RZUEVOQU1FU18oVCk+Ci1HVEVTVF9CWV9SRUZfKEdURVNUX1RVUExFX0VMRU1F
TlRfKGssICBHVEVTVF8xMF9UVVBMRV8oVCkpKQotZ2V0KGNvbnN0IEdURVNUXzEwX1RVUExFXyhU
KSYgdCkgewotICByZXR1cm4gZ3Rlc3RfaW50ZXJuYWw6OkdldDxrPjo6Q29uc3RGaWVsZCh0KTsK
LX0KLQotLy8gNi4xLjMuNSBSZWxhdGlvbmFsIG9wZXJhdG9ycwotCi0vLyBXZSBvbmx5IGltcGxl
bWVudCA9PSBhbmQgIT0sIGFzIHdlIGRvbid0IGhhdmUgYSBuZWVkIGZvciB0aGUgcmVzdCB5ZXQu
Ci0KLW5hbWVzcGFjZSBndGVzdF9pbnRlcm5hbCB7Ci0KLS8vIFNhbWVTaXplVHVwbGVQcmVmaXhD
b21wYXJhdG9yPGssIGs+OjpFcSh0MSwgdDIpIHJldHVybnMgdHJ1ZSBpZiB0aGUKLS8vIGZpcnN0
IGsgZmllbGRzIG9mIHQxIGVxdWFscyB0aGUgZmlyc3QgayBmaWVsZHMgb2YgdDIuCi0vLyBTYW1l
U2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcihrMSwgazIpIHdvdWxkIGJlIGEgY29tcGlsZXIgZXJy
b3IgaWYKLS8vIGsxICE9IGsyLgotdGVtcGxhdGUgPGludCBrU2l6ZTEsIGludCBrU2l6ZTI+Ci1z
dHJ1Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I7Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1
Y3QgU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3I8MCwgMD4gewotICB0ZW1wbGF0ZSA8Y2xh
c3MgVHVwbGUxLCBjbGFzcyBUdXBsZTI+Ci0gIHN0YXRpYyBib29sIEVxKGNvbnN0IFR1cGxlMSYg
LyogdDEgKi8sIGNvbnN0IFR1cGxlMiYgLyogdDIgKi8pIHsKLSAgICByZXR1cm4gdHJ1ZTsKLSAg
fQotfTsKLQotdGVtcGxhdGUgPGludCBrPgotc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21w
YXJhdG9yPGssIGs+IHsKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgot
ICBzdGF0aWMgYm9vbCBFcShjb25zdCBUdXBsZTEmIHQxLCBjb25zdCBUdXBsZTImIHQyKSB7Ci0g
ICAgcmV0dXJuIFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPGsgLSAxLCBrIC0gMT46OkVx
KHQxLCB0MikgJiYKLSAgICAgICAgOjpzdGQ6OnRyMTo6Z2V0PGsgLSAxPih0MSkgPT0gOjpzdGQ6
OnRyMTo6Z2V0PGsgLSAxPih0Mik7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBndGVzdF9p
bnRlcm5hbAotCi10ZW1wbGF0ZSA8R1RFU1RfMTBfVFlQRU5BTUVTXyhUKSwgR1RFU1RfMTBfVFlQ
RU5BTUVTXyhVKT4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR1RFU1RfMTBfVFVQTEVf
KFQpJiB0LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVEVTVF8xMF9UVVBMRV8oVSkm
IHUpIHsKLSAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFy
YXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1RfMTBfVFVQTEVfKFQpID46OnZhbHVlLAotICAg
ICAgdHVwbGVfc2l6ZTxHVEVTVF8xMF9UVVBMRV8oVSkgPjo6dmFsdWU+OjpFcSh0LCB1KTsKLX0K
LQotdGVtcGxhdGUgPEdURVNUXzEwX1RZUEVOQU1FU18oVCksIEdURVNUXzEwX1RZUEVOQU1FU18o
VSk+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdURVNUXzEwX1RVUExFXyhUKSYgdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1RFU1RfMTBfVFVQTEVfKFUpJiB1KSB7IHJl
dHVybiAhKHQgPT0gdSk7IH0KLQotLy8gNi4xLjQgUGFpcnMuCi0vLyBVbmltcGxlbWVudGVkLgot
Ci19ICAvLyBuYW1lc3BhY2UgdHIxCi19ICAvLyBuYW1lc3BhY2Ugc3RkCi0KLSN1bmRlZiBHVEVT
VF8wX1RVUExFXwotI3VuZGVmIEdURVNUXzFfVFVQTEVfCi0jdW5kZWYgR1RFU1RfMl9UVVBMRV8K
LSN1bmRlZiBHVEVTVF8zX1RVUExFXwotI3VuZGVmIEdURVNUXzRfVFVQTEVfCi0jdW5kZWYgR1RF
U1RfNV9UVVBMRV8KLSN1bmRlZiBHVEVTVF82X1RVUExFXwotI3VuZGVmIEdURVNUXzdfVFVQTEVf
Ci0jdW5kZWYgR1RFU1RfOF9UVVBMRV8KLSN1bmRlZiBHVEVTVF85X1RVUExFXwotI3VuZGVmIEdU
RVNUXzEwX1RVUExFXwotCi0jdW5kZWYgR1RFU1RfMF9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1Rf
MV9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfMl9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfM19U
WVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfNF9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfNV9UWVBF
TkFNRVNfCi0jdW5kZWYgR1RFU1RfNl9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfN19UWVBFTkFN
RVNfCi0jdW5kZWYgR1RFU1RfOF9UWVBFTkFNRVNfCi0jdW5kZWYgR1RFU1RfOV9UWVBFTkFNRVNf
Ci0jdW5kZWYgR1RFU1RfMTBfVFlQRU5BTUVTXwotCi0jdW5kZWYgR1RFU1RfREVDTEFSRV9UVVBM
RV9BU19GUklFTkRfCi0jdW5kZWYgR1RFU1RfQllfUkVGXwotI3VuZGVmIEdURVNUX0FERF9SRUZf
Ci0jdW5kZWYgR1RFU1RfVFVQTEVfRUxFTUVOVF8KLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURF
X0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9p
bmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2lu
Y2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHVwbGUuaC5wdW1wCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0MjlkZGZlZWNhYTcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9pbmNsdWRlL2d0ZXN0L2ludGVybmFsL2d0ZXN0LXR1cGxlLmgucHVtcAorKysgL2Rldi9udWxs
CkBAIC0xLDM0NyArMCwwIEBACi0kJCAtKi0gbW9kZTogYysrOyAtKi0KLSR2YXIgbiA9IDEwICAk
JCBNYXhpbXVtIG51bWJlciBvZiB0dXBsZSBmaWVsZHMgd2Ugd2FudCB0byBzdXBwb3J0LgotJCQg
VGhpcyBtZXRhIGNvbW1lbnQgZml4ZXMgYXV0by1pbmRlbnRhdGlvbiBpbiBFbWFjcy4gfX0KLS8v
IENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8K
LS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0
cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0v
LyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjog
d2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gSW1wbGVtZW50cyBhIHN1YnNldCBv
ZiBUUjEgdHVwbGUgbmVlZGVkIGJ5IEdvb2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jay4KLQotI2lm
bmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RVUExFX0hfCi0jZGVmaW5l
IEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFVQTEVfSF8KLQotI2luY2x1ZGUg
PHV0aWxpdHk+ICAvLyBGb3IgOjpzdGQ6OnBhaXIuCi0KLS8vIFRoZSBjb21waWxlciB1c2VkIGlu
IFN5bWJpYW4gaGFzIGEgYnVnIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkZWNsYXJpbmcgdGhlCi0v
LyB0dXBsZSB0ZW1wbGF0ZSBhcyBhIGZyaWVuZCAoaXQgY29tcGxhaW5zIHRoYXQgdHVwbGUgaXMg
cmVkZWZpbmVkKS4gIFRoaXMKLS8vIGhhY2sgYnlwYXNzZXMgdGhlIGJ1ZyBieSBkZWNsYXJpbmcg
dGhlIG1lbWJlcnMgdGhhdCBzaG91bGQgb3RoZXJ3aXNlIGJlCi0vLyBwcml2YXRlIGFzIHB1Ymxp
Yy4KLS8vIFN1biBTdHVkaW8gdmVyc2lvbnMgPCAxMiBhbHNvIGhhdmUgdGhlIGFib3ZlIGJ1Zy4K
LSNpZiBkZWZpbmVkKF9fU1lNQklBTjMyX18pIHx8IChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBf
X1NVTlBST19DQyA8IDB4NTkwKQotIyBkZWZpbmUgR1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklF
TkRfIHB1YmxpYzoKLSNlbHNlCi0jIGRlZmluZSBHVEVTVF9ERUNMQVJFX1RVUExFX0FTX0ZSSUVO
RF8gXAotICAgIHRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZUEVOQU1FU18oVSk+IGZyaWVuZCBjbGFz
cyB0dXBsZTsgXAotICAgcHJpdmF0ZToKLSNlbmRpZgotCi0vLyBWaXN1YWwgU3R1ZGlvIDIwMTAs
IDIwMTIsIGFuZCAyMDEzIGRlZmluZSBzeW1ib2xzIGluIHN0ZDo6dHIxIHRoYXQgY29uZmxpY3QK
LS8vIHdpdGggb3VyIG93biBkZWZpbml0aW9ucy4gVGhlcmVmb3JlIHVzaW5nIG91ciBvd24gdHVw
bGUgZG9lcyBub3Qgd29yayBvbgotLy8gdGhvc2UgY29tcGlsZXJzLgotI2lmIGRlZmluZWQoX01T
Q19WRVIpICYmIF9NU0NfVkVSID49IDE2MDAgIC8qIDE2MDAgaXMgVmlzdWFsIFN0dWRpbyAyMDEw
ICovCi0jIGVycm9yICJndGVzdCdzIHR1cGxlIGRvZXNuJ3QgY29tcGlsZSBvbiBWaXN1YWwgU3R1
ZGlvIDIwMTAgb3IgbGF0ZXIuIFwKLUdURVNUX1VTRV9PV05fVFIxX1RVUExFIG11c3QgYmUgc2V0
IHRvIDAgb24gdGhvc2UgY29tcGlsZXJzLiIKLSNlbmRpZgotCi0KLSRyYW5nZSBpIDAuLm4tMQot
JHJhbmdlIGogMC4ubgotJHJhbmdlIGsgMS4ubgotLy8gR1RFU1Rfbl9UVVBMRV8oVCkgaXMgdGhl
IHR5cGUgb2YgYW4gbi10dXBsZS4KLSNkZWZpbmUgR1RFU1RfMF9UVVBMRV8oVCkgdHVwbGU8Pgot
Ci0kZm9yIGsgW1sKLSRyYW5nZSBtIDAuLmstMQotJHJhbmdlIG0yIGsuLm4tMQotI2RlZmluZSBH
VEVTVF8kKGspX1RVUExFXyhUKSB0dXBsZTwkZm9yIG0sIFtbVCMjJG1dXSRmb3IgbTIgW1ssIHZv
aWRdXT4KLQotXV0KLQotLy8gR1RFU1Rfbl9UWVBFTkFNRVNfKFQpIGRlY2xhcmVzIGEgbGlzdCBv
ZiBuIHR5cGVuYW1lcy4KLQotJGZvciBqIFtbCi0kcmFuZ2UgbSAwLi5qLTEKLSNkZWZpbmUgR1RF
U1RfJChqKV9UWVBFTkFNRVNfKFQpICRmb3IgbSwgW1t0eXBlbmFtZSBUIyMkbV1dCi0KLQotXV0K
LQotLy8gSW4gdGhlb3J5LCBkZWZpbmluZyBzdHVmZiBpbiB0aGUgOjpzdGQgbmFtZXNwYWNlIGlz
IHVuZGVmaW5lZAotLy8gYmVoYXZpb3IuICBXZSBjYW4gZG8gdGhpcyBhcyB3ZSBhcmUgcGxheWlu
ZyB0aGUgcm9sZSBvZiBhIHN0YW5kYXJkCi0vLyBsaWJyYXJ5IHZlbmRvci4KLW5hbWVzcGFjZSBz
dGQgewotbmFtZXNwYWNlIHRyMSB7Ci0KLXRlbXBsYXRlIDwkZm9yIGksIFtbdHlwZW5hbWUgVCRp
ID0gdm9pZF1dPgotY2xhc3MgdHVwbGU7Ci0KLS8vIEFueXRoaW5nIGluIG5hbWVzcGFjZSBndGVz
dF9pbnRlcm5hbCBpcyBHb29nbGUgVGVzdCdzIElOVEVSTkFMCi0vLyBJTVBMRU1FTlRBVElPTiBE
RVRBSUwgYW5kIE1VU1QgTk9UIEJFIFVTRUQgRElSRUNUTFkgaW4gdXNlciBjb2RlLgotbmFtZXNw
YWNlIGd0ZXN0X2ludGVybmFsIHsKLQotLy8gQnlSZWY8VD46OnR5cGUgaXMgVCBpZiBUIGlzIGEg
cmVmZXJlbmNlOyBvdGhlcndpc2UgaXQncyBjb25zdCBUJi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgotc3RydWN0IEJ5UmVmIHsgdHlwZWRlZiBjb25zdCBUJiB0eXBlOyB9OyAgLy8gTk9MSU5UCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBCeVJlZjxUJj4geyB0eXBlZGVmIFQmIHR5cGU7
IH07ICAvLyBOT0xJTlQKLQotLy8gQSBoYW5keSB3cmFwcGVyIGZvciBCeVJlZi4KLSNkZWZpbmUg
R1RFU1RfQllfUkVGXyhUKSB0eXBlbmFtZSA6OnN0ZDo6dHIxOjpndGVzdF9pbnRlcm5hbDo6QnlS
ZWY8VD46OnR5cGUKLQotLy8gQWRkUmVmPFQ+Ojp0eXBlIGlzIFQgaWYgVCBpcyBhIHJlZmVyZW5j
ZTsgb3RoZXJ3aXNlIGl0J3MgVCYuICBUaGlzCi0vLyBpcyB0aGUgc2FtZSBhcyB0cjE6OmFkZF9y
ZWZlcmVuY2U8VD46OnR5cGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBZGRSZWYg
eyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RydWN0IEFkZFJlZjxUJj4geyB0eXBlZGVmIFQmIHR5cGU7IH07ICAvLyBOT0xJTlQKLQotLy8g
QSBoYW5keSB3cmFwcGVyIGZvciBBZGRSZWYuCi0jZGVmaW5lIEdURVNUX0FERF9SRUZfKFQpIHR5
cGVuYW1lIDo6c3RkOjp0cjE6Omd0ZXN0X2ludGVybmFsOjpBZGRSZWY8VD46OnR5cGUKLQotLy8g
QSBoZWxwZXIgZm9yIGltcGxlbWVudGluZyBnZXQ8az4oKS4KLXRlbXBsYXRlIDxpbnQgaz4gY2xh
c3MgR2V0OwotCi0vLyBBIGhlbHBlciBmb3IgaW1wbGVtZW50aW5nIHR1cGxlX2VsZW1lbnQ8aywg
VD4uICBrSW5kZXhWYWxpZCBpcyB0cnVlCi0vLyBpZmYgayA8IHRoZSBudW1iZXIgb2YgZmllbGRz
IGluIHR1cGxlIHR5cGUgVC4KLXRlbXBsYXRlIDxib29sIGtJbmRleFZhbGlkLCBpbnQga0luZGV4
LCBjbGFzcyBUdXBsZT4KLXN0cnVjdCBUdXBsZUVsZW1lbnQ7Ci0KLQotJGZvciBpIFtbCi10ZW1w
bGF0ZSA8R1RFU1RfJChuKV9UWVBFTkFNRVNfKFQpPgotc3RydWN0IFR1cGxlRWxlbWVudDx0cnVl
LCAkaSwgR1RFU1RfJChuKV9UVVBMRV8oVCkgPiB7Ci0gIHR5cGVkZWYgVCRpIHR5cGU7Ci19Owot
Ci0KLV1dCi19ICAvLyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKLQotdGVtcGxhdGUgPD4KLWNs
YXNzIHR1cGxlPD4gewotIHB1YmxpYzoKLSAgdHVwbGUoKSB7fQotICB0dXBsZShjb25zdCB0dXBs
ZSYgLyogdCAqLykgIHt9Ci0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3QgdHVwbGUmIC8qIHQgKi8p
IHsgcmV0dXJuICp0aGlzOyB9Ci19OwotCi0KLSRmb3IgayBbWwotJHJhbmdlIG0gMC4uay0xCi10
ZW1wbGF0ZSA8R1RFU1RfJChrKV9UWVBFTkFNRVNfKFQpPgotY2xhc3MgJGlmIGsgPCBuIFtbR1RF
U1RfJChrKV9UVVBMRV8oVCldXSAkZWxzZSBbW3R1cGxlXV0gewotIHB1YmxpYzoKLSAgdGVtcGxh
dGUgPGludCBrPiBmcmllbmQgY2xhc3MgZ3Rlc3RfaW50ZXJuYWw6OkdldDsKLQotICB0dXBsZSgp
IDogJGZvciBtLCBbW2YkKG0pXygpXV0ge30KLQotICBleHBsaWNpdCB0dXBsZSgkZm9yIG0sIFtb
R1RFU1RfQllfUkVGXyhUJG0pIGYkbV1dKSA6IFtbXV0KLSRmb3IgbSwgW1tmJChtKV8oZiRtKV1d
IHt9Ci0KLSAgdHVwbGUoY29uc3QgdHVwbGUmIHQpIDogJGZvciBtLCBbW2YkKG0pXyh0LmYkKG0p
XyldXSB7fQotCi0gIHRlbXBsYXRlIDxHVEVTVF8kKGspX1RZUEVOQU1FU18oVSk+Ci0gIHR1cGxl
KGNvbnN0IEdURVNUXyQoaylfVFVQTEVfKFUpJiB0KSA6ICRmb3IgbSwgW1tmJChtKV8odC5mJCht
KV8pXV0ge30KLQotJGlmIGsgPT0gMiBbWwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVTAsIHR5cGVu
YW1lIFUxPgotICB0dXBsZShjb25zdCA6OnN0ZDo6cGFpcjxVMCwgVTE+JiBwKSA6IGYwXyhwLmZp
cnN0KSwgZjFfKHAuc2Vjb25kKSB7fQotCi1dXQotCi0gIHR1cGxlJiBvcGVyYXRvcj0oY29uc3Qg
dHVwbGUmIHQpIHsgcmV0dXJuIENvcHlGcm9tKHQpOyB9Ci0KLSAgdGVtcGxhdGUgPEdURVNUXyQo
aylfVFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBHVEVTVF8kKGspX1RV
UExFXyhVKSYgdCkgewotICAgIHJldHVybiBDb3B5RnJvbSh0KTsKLSAgfQotCi0kaWYgayA9PSAy
IFtbCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVMCwgdHlwZW5hbWUgVTE+Ci0gIHR1cGxlJiBvcGVy
YXRvcj0oY29uc3QgOjpzdGQ6OnBhaXI8VTAsIFUxPiYgcCkgewotICAgIGYwXyA9IHAuZmlyc3Q7
Ci0gICAgZjFfID0gcC5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLV1dCi0KLSAg
R1RFU1RfREVDTEFSRV9UVVBMRV9BU19GUklFTkRfCi0KLSAgdGVtcGxhdGUgPEdURVNUXyQoaylf
VFlQRU5BTUVTXyhVKT4KLSAgdHVwbGUmIENvcHlGcm9tKGNvbnN0IEdURVNUXyQoaylfVFVQTEVf
KFUpJiB0KSB7Ci0KLSRmb3IgbSBbWwotICAgIGYkKG0pXyA9IHQuZiQobSlfOwotCi1dXQotICAg
IHJldHVybiAqdGhpczsKLSAgfQotCi0KLSRmb3IgbSBbWwotICBUJG0gZiQobSlfOwotCi1dXQot
fTsKLQotCi1dXQotLy8gNi4xLjMuMiBUdXBsZSBjcmVhdGlvbiBmdW5jdGlvbnMuCi0KLS8vIEtu
b3duIGxpbWl0YXRpb25zOiB3ZSBkb24ndCBzdXBwb3J0IHBhc3NpbmcgYW4KLS8vIHN0ZDo6dHIx
OjpyZWZlcmVuY2Vfd3JhcHBlcjxUPiB0byBtYWtlX3R1cGxlKCkuICBBbmQgd2UgZG9uJ3QKLS8v
IGltcGxlbWVudCB0aWUoKS4KLQotaW5saW5lIHR1cGxlPD4gbWFrZV90dXBsZSgpIHsgcmV0dXJu
IHR1cGxlPD4oKTsgfQotCi0kZm9yIGsgW1sKLSRyYW5nZSBtIDAuLmstMQotCi10ZW1wbGF0ZSA8
R1RFU1RfJChrKV9UWVBFTkFNRVNfKFQpPgotaW5saW5lIEdURVNUXyQoaylfVFVQTEVfKFQpIG1h
a2VfdHVwbGUoJGZvciBtLCBbW2NvbnN0IFQkbSYgZiRtXV0pIHsKLSAgcmV0dXJuIEdURVNUXyQo
aylfVFVQTEVfKFQpKCRmb3IgbSwgW1tmJG1dXSk7Ci19Ci0KLV1dCi0KLS8vIDYuMS4zLjMgVHVw
bGUgaGVscGVyIGNsYXNzZXMuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUdXBsZT4gc3RydWN0IHR1
cGxlX3NpemU7Ci0KLQotJGZvciBqIFtbCi10ZW1wbGF0ZSA8R1RFU1RfJChqKV9UWVBFTkFNRVNf
KFQpPgotc3RydWN0IHR1cGxlX3NpemU8R1RFU1RfJChqKV9UVVBMRV8oVCkgPiB7Ci0gIHN0YXRp
YyBjb25zdCBpbnQgdmFsdWUgPSAkajsKLX07Ci0KLQotXV0KLXRlbXBsYXRlIDxpbnQgaywgY2xh
c3MgVHVwbGU+Ci1zdHJ1Y3QgdHVwbGVfZWxlbWVudCB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZ3Rl
c3RfaW50ZXJuYWw6OlR1cGxlRWxlbWVudDwKLSAgICAgIGsgPCAodHVwbGVfc2l6ZTxUdXBsZT46
OnZhbHVlKSwgaywgVHVwbGU+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZGVmaW5lIEdURVNUX1RVUExF
X0VMRU1FTlRfKGssIFR1cGxlKSB0eXBlbmFtZSB0dXBsZV9lbGVtZW50PGssIFR1cGxlID46OnR5
cGUKLQotLy8gNi4xLjMuNCBFbGVtZW50IGFjY2Vzcy4KLQotbmFtZXNwYWNlIGd0ZXN0X2ludGVy
bmFsIHsKLQotCi0kZm9yIGkgW1sKLXRlbXBsYXRlIDw+Ci1jbGFzcyBHZXQ8JGk+IHsKLSBwdWJs
aWM6Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBsZT4KLSAgc3RhdGljIEdURVNUX0FERF9SRUZfKEdU
RVNUX1RVUExFX0VMRU1FTlRfKCRpLCBUdXBsZSkpCi0gIEZpZWxkKFR1cGxlJiB0KSB7IHJldHVy
biB0LmYkKGkpXzsgfSAgLy8gTk9MSU5UCi0KLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlPgotICBz
dGF0aWMgR1RFU1RfQllfUkVGXyhHVEVTVF9UVVBMRV9FTEVNRU5UXygkaSwgVHVwbGUpKQotICBD
b25zdEZpZWxkKGNvbnN0IFR1cGxlJiB0KSB7IHJldHVybiB0LmYkKGkpXzsgfQotfTsKLQotCi1d
XQotfSAgLy8gbmFtZXNwYWNlIGd0ZXN0X2ludGVybmFsCi0KLXRlbXBsYXRlIDxpbnQgaywgR1RF
U1RfJChuKV9UWVBFTkFNRVNfKFQpPgotR1RFU1RfQUREX1JFRl8oR1RFU1RfVFVQTEVfRUxFTUVO
VF8oaywgR1RFU1RfJChuKV9UVVBMRV8oVCkpKQotZ2V0KEdURVNUXyQobilfVFVQTEVfKFQpJiB0
KSB7Ci0gIHJldHVybiBndGVzdF9pbnRlcm5hbDo6R2V0PGs+OjpGaWVsZCh0KTsKLX0KLQotdGVt
cGxhdGUgPGludCBrLCBHVEVTVF8kKG4pX1RZUEVOQU1FU18oVCk+Ci1HVEVTVF9CWV9SRUZfKEdU
RVNUX1RVUExFX0VMRU1FTlRfKGssICBHVEVTVF8kKG4pX1RVUExFXyhUKSkpCi1nZXQoY29uc3Qg
R1RFU1RfJChuKV9UVVBMRV8oVCkmIHQpIHsKLSAgcmV0dXJuIGd0ZXN0X2ludGVybmFsOjpHZXQ8
az46OkNvbnN0RmllbGQodCk7Ci19Ci0KLS8vIDYuMS4zLjUgUmVsYXRpb25hbCBvcGVyYXRvcnMK
LQotLy8gV2Ugb25seSBpbXBsZW1lbnQgPT0gYW5kICE9LCBhcyB3ZSBkb24ndCBoYXZlIGEgbmVl
ZCBmb3IgdGhlIHJlc3QgeWV0LgotCi1uYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwgewotCi0vLyBT
YW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPjo6RXEodDEsIHQyKSByZXR1cm5zIHRy
dWUgaWYgdGhlCi0vLyBmaXJzdCBrIGZpZWxkcyBvZiB0MSBlcXVhbHMgdGhlIGZpcnN0IGsgZmll
bGRzIG9mIHQyLgotLy8gU2FtZVNpemVUdXBsZVByZWZpeENvbXBhcmF0b3IoazEsIGsyKSB3b3Vs
ZCBiZSBhIGNvbXBpbGVyIGVycm9yIGlmCi0vLyBrMSAhPSBrMi4KLXRlbXBsYXRlIDxpbnQga1Np
emUxLCBpbnQga1NpemUyPgotc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yOwot
Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IFNhbWVTaXplVHVwbGVQcmVmaXhDb21wYXJhdG9yPDAsIDA+
IHsKLSAgdGVtcGxhdGUgPGNsYXNzIFR1cGxlMSwgY2xhc3MgVHVwbGUyPgotICBzdGF0aWMgYm9v
bCBFcShjb25zdCBUdXBsZTEmIC8qIHQxICovLCBjb25zdCBUdXBsZTImIC8qIHQyICovKSB7Ci0g
ICAgcmV0dXJuIHRydWU7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlIDxpbnQgaz4KLXN0cnVjdCBTYW1l
U2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjxrLCBrPiB7Ci0gIHRlbXBsYXRlIDxjbGFzcyBUdXBs
ZTEsIGNsYXNzIFR1cGxlMj4KLSAgc3RhdGljIGJvb2wgRXEoY29uc3QgVHVwbGUxJiB0MSwgY29u
c3QgVHVwbGUyJiB0MikgewotICAgIHJldHVybiBTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRv
cjxrIC0gMSwgayAtIDE+OjpFcSh0MSwgdDIpICYmCi0gICAgICAgIDo6c3RkOjp0cjE6OmdldDxr
IC0gMT4odDEpID09IDo6c3RkOjp0cjE6OmdldDxrIC0gMT4odDIpOwotICB9Ci19OwotCi19ICAv
LyBuYW1lc3BhY2UgZ3Rlc3RfaW50ZXJuYWwKLQotdGVtcGxhdGUgPEdURVNUXyQobilfVFlQRU5B
TUVTXyhUKSwgR1RFU1RfJChuKV9UWVBFTkFNRVNfKFUpPgotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHVEVTVF8kKG4pX1RVUExFXyhUKSYgdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVSkmIHUpIHsKLSAgcmV0dXJuIGd0ZXN0X2ludGVybmFs
OjpTYW1lU2l6ZVR1cGxlUHJlZml4Q29tcGFyYXRvcjwKLSAgICAgIHR1cGxlX3NpemU8R1RFU1Rf
JChuKV9UVVBMRV8oVCkgPjo6dmFsdWUsCi0gICAgICB0dXBsZV9zaXplPEdURVNUXyQobilfVFVQ
TEVfKFUpID46OnZhbHVlPjo6RXEodCwgdSk7Ci19Ci0KLXRlbXBsYXRlIDxHVEVTVF8kKG4pX1RZ
UEVOQU1FU18oVCksIEdURVNUXyQobilfVFlQRU5BTUVTXyhVKT4KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgR1RFU1RfJChuKV9UVVBMRV8oVCkmIHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdURVNUXyQobilfVFVQTEVfKFUpJiB1KSB7IHJldHVybiAhKHQgPT0gdSk7IH0K
LQotLy8gNi4xLjQgUGFpcnMuCi0vLyBVbmltcGxlbWVudGVkLgotCi19ICAvLyBuYW1lc3BhY2Ug
dHIxCi19ICAvLyBuYW1lc3BhY2Ugc3RkCi0KLQotJGZvciBqIFtbCi0jdW5kZWYgR1RFU1RfJChq
KV9UVVBMRV8KLQotXV0KLQotCi0kZm9yIGogW1sKLSN1bmRlZiBHVEVTVF8kKGopX1RZUEVOQU1F
U18KLQotXV0KLQotI3VuZGVmIEdURVNUX0RFQ0xBUkVfVFVQTEVfQVNfRlJJRU5EXwotI3VuZGVm
IEdURVNUX0JZX1JFRl8KLSN1bmRlZiBHVEVTVF9BRERfUkVGXwotI3VuZGVmIEdURVNUX1RVUExF
X0VMRU1FTlRfCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9JTlRFUk5BTF9HVEVT
VF9UVVBMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5h
bC9ndGVzdC10eXBlLXV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwv
Z3Rlc3QtdHlwZS11dGlsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmY3Y2Zj
YjQ4My4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtdHlwZS11dGlsLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMxICswLDAgQEAKLS8v
IFRoaXMgZmlsZSB3YXMgR0VORVJBVEVEIGJ5IGNvbW1hbmQ6Ci0vLyAgICAgcHVtcC5weSBndGVz
dC10eXBlLXV0aWwuaC5wdW1wCi0vLyBETyBOT1QgRURJVCBCWSBIQU5EISEhCi0KLS8vIENvcHly
aWdodCAyMDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdv
b2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVHlwZSB1dGlsaXRpZXMgbmVlZGVkIGZvciBp
bXBsZW1lbnRpbmcgdHlwZWQgYW5kIHR5cGUtcGFyYW1ldGVyaXplZAotLy8gdGVzdHMuICBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGEgU0NSSVBULiAgRE8gTk9UIEVESVQgQlkgSEFORCEKLS8v
Ci0vLyBDdXJyZW50bHkgd2Ugc3VwcG9ydCBhdCBtb3N0IDUwIHR5cGVzIGluIGEgbGlzdCwgYW5k
IGF0IG1vc3QgNTAKLS8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbiBvbmUgdHlwZS1wYXJh
bWV0ZXJpemVkIHRlc3QgY2FzZS4KLS8vIFBsZWFzZSBjb250YWN0IGdvb2dsZXRlc3RmcmFtZXdv
cmtAZ29vZ2xlZ3JvdXBzLmNvbSBpZiB5b3UgbmVlZAotLy8gbW9yZS4KLQotI2lmbmRlZiBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwotI2RlZmluZSBHVEVT
VF9JTkNMVURFX0dURVNUX0lOVEVSTkFMX0dURVNUX1RZUEVfVVRJTF9IXwotCi0jaW5jbHVkZSAi
Z3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi0vLyAjaWZkZWYgX19HTlVDX18gaXMgdG9v
IGdlbmVyYWwgaGVyZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBnY2Mgd2l0aG91dCB1c2luZwot
Ly8gbGlic3RkYysrICh3aGljaCBpcyB3aGVyZSBjeHhhYmkuaCBjb21lcyBmcm9tKS4KLSMgaWYg
R1RFU1RfSEFTX0NYWEFCSV9IXwotIyAgaW5jbHVkZSA8Y3h4YWJpLmg+Ci0jIGVsaWYgZGVmaW5l
ZChfX0hQX2FDQykKLSMgIGluY2x1ZGUgPGFjeHhfZGVtYW5nbGUuaD4KLSMgZW5kaWYgIC8vIEdU
RVNUX0hBU0hfQ1hYQUJJX0hfCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBpbnRl
cm5hbCB7Ci0KLS8vIEdldFR5cGVOYW1lPFQ+KCkgcmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIG5h
bWUgb2YgdHlwZSBULgotLy8gTkI6IFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGluIEdvb2ds
ZSBNb2NrLCBzbyBkb24ndCBtb3ZlIGl0IGluc2lkZSBvZgotLy8gdGhlIHR5cGVkLXRlc3Qtb25s
eSBzZWN0aW9uIGJlbG93LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBHZXRU
eXBlTmFtZSgpIHsKLSMgaWYgR1RFU1RfSEFTX1JUVEkKLQotICBjb25zdCBjaGFyKiBjb25zdCBu
YW1lID0gdHlwZWlkKFQpLm5hbWUoKTsKLSMgIGlmIEdURVNUX0hBU19DWFhBQklfSF8gfHwgZGVm
aW5lZChfX0hQX2FDQykKLSAgaW50IHN0YXR1cyA9IDA7Ci0gIC8vIGdjYydzIGltcGxlbWVudGF0
aW9uIG9mIHR5cGVpZChUKS5uYW1lKCkgbWFuZ2xlcyB0aGUgdHlwZSBuYW1lLAotICAvLyBzbyB3
ZSBoYXZlIHRvIGRlbWFuZ2xlIGl0LgotIyAgIGlmIEdURVNUX0hBU19DWFhBQklfSF8KLSAgdXNp
bmcgYWJpOjpfX2N4YV9kZW1hbmdsZTsKLSMgICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9I
XwotICBjaGFyKiBjb25zdCByZWFkYWJsZV9uYW1lID0gX19jeGFfZGVtYW5nbGUobmFtZSwgMCwg
MCwgJnN0YXR1cyk7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVfc3RyKHN0YXR1cyA9PSAwID8g
cmVhZGFibGVfbmFtZSA6IG5hbWUpOwotICBmcmVlKHJlYWRhYmxlX25hbWUpOwotICByZXR1cm4g
bmFtZV9zdHI7Ci0jICBlbHNlCi0gIHJldHVybiBuYW1lOwotIyAgZW5kaWYgIC8vIEdURVNUX0hB
U19DWFhBQklfSF8gfHwgX19IUF9hQ0MKLQotIyBlbHNlCi0KLSAgcmV0dXJuICI8dHlwZT4iOwot
Ci0jIGVuZGlmICAvLyBHVEVTVF9IQVNfUlRUSQotfQotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RF
U1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0vLyBBc3NlcnR5VHlwZUVxPFQxLCBUMj46
OnR5cGUgaXMgZGVmaW5lZCBpZmYgVDEgYW5kIFQyIGFyZSB0aGUgc2FtZQotLy8gdHlwZS4gIFRo
aXMgY2FuIGJlIHVzZWQgYXMgYSBjb21waWxlLXRpbWUgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0
Ci0vLyB0d28gdHlwZXMgYXJlIGVxdWFsLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyPgotc3RydWN0IEFzc2VydFR5cGVFcTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgQXNzZXJ0VHlwZUVxPFQsIFQ+IHsKLSAgdHlwZWRlZiBib29sIHR5cGU7Ci19OwotCi0v
LyBBIHVuaXF1ZSB0eXBlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhcmd1bWVu
dHMgb2YgY2xhc3MKLS8vIHRlbXBsYXRlIFR5cGVzLiAgVGhpcyBhbGxvd3MgdXMgdG8gc2ltdWxh
dGUgdmFyaWFkaWMgdGVtcGxhdGVzCi0vLyAoZS5nLiBUeXBlczxpbnQ+LCBUeXBlPGludCwgZG91
YmxlPiwgYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0Ci0vLyBzdXBwb3J0IGRpcmVjdGx5Lgot
c3RydWN0IE5vbmUge307Ci0KLS8vIFRoZSBmb2xsb3dpbmcgZmFtaWx5IG9mIHN0cnVjdCBhbmQg
c3RydWN0IHRlbXBsYXRlcyBhcmUgdXNlZCB0bwotLy8gcmVwcmVzZW50IHR5cGUgbGlzdHMuICBJ
biBwYXJ0aWN1bGFyLCBUeXBlc048VDEsIFQyLCAuLi4sIFROPgotLy8gcmVwcmVzZW50cyBhIHR5
cGUgbGlzdCB3aXRoIE4gdHlwZXMgKFQxLCBUMiwgLi4uLCBhbmQgVE4pIGluIGl0LgotLy8gRXhj
ZXB0IGZvciBUeXBlczAsIGV2ZXJ5IHN0cnVjdCBpbiB0aGUgZmFtaWx5IGhhcyB0d28gbWVtYmVy
IHR5cGVzOgotLy8gSGVhZCBmb3IgdGhlIGZpcnN0IHR5cGUgaW4gdGhlIGxpc3QsIGFuZCBUYWls
IGZvciB0aGUgcmVzdCBvZiB0aGUKLS8vIGxpc3QuCi0KLS8vIFRoZSBlbXB0eSB0eXBlIGxpc3Qu
Ci1zdHJ1Y3QgVHlwZXMwIHt9OwotCi0vLyBUeXBlIGxpc3RzIG9mIGxlbmd0aCAxLCAyLCAzLCBh
bmQgc28gb24uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLXN0cnVjdCBUeXBlczEgewotICB0
eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMwIFRhaWw7Ci19OwotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBUeXBlczIgewotICB0eXBlZGVmIFQxIEhl
YWQ7Ci0gIHR5cGVkZWYgVHlwZXMxPFQyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1zdHJ1Y3QgVHlwZXMzIHsKLSAgdHlwZWRl
ZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjxUMiwgVDM+IFRhaWw7Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci1z
dHJ1Y3QgVHlwZXM0IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMzxUMiwg
VDMsIFQ0PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLXN0cnVjdCBUeXBlczUgewot
ICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM0PFQyLCBUMywgVDQsIFQ1PiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNj4KLXN0cnVjdCBUeXBl
czYgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM1PFQyLCBUMywgVDQsIFQ1
LCBUNj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3Pgotc3RydWN0IFR5cGVzNyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRl
ZiBUeXBlczY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLXN0cnVj
dCBUeXBlczggewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM3PFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLXN0cnVj
dCBUeXBlczkgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM4PFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMD4KLXN0cnVjdCBUeXBlczEwIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBl
ZGVmIFR5cGVzOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4gVGFpbDsKLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBl
bmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBl
bmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTE+Ci1z
dHJ1Y3QgVHlwZXMxMSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczEwPFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTE+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTI+Ci1zdHJ1Y3QgVHlwZXMxMiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBl
czExPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMj4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzPgotc3RydWN0IFR5cGVzMTMgewotICB0eXBlZGVm
IFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMxMjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQ+Ci1zdHJ1Y3QgVHlwZXMxNCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAg
dHlwZWRlZiBUeXBlczEzPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLCBUMTQ+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTU+Ci1zdHJ1Y3QgVHlwZXMxNSB7Ci0gIHR5cGVkZWYgVDEgSGVh
ZDsKLSAgdHlwZWRlZiBUeXBlczE0PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTU+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2
Pgotc3RydWN0IFR5cGVzMTYgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMx
NTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LCBUMTUsCi0gICAgICBUMTY+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTc+
Ci1zdHJ1Y3QgVHlwZXMxNyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczE2
PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQs
IFQxNSwKLSAgICAgIFQxNiwgVDE3PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTg+Ci1zdHJ1Y3QgVHlwZXMxOCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsK
LSAgdHlwZWRlZiBUeXBlczE3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTg+IFRhaWw7Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Pgot
c3RydWN0IFR5cGVzMTkgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMxODxU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBU
MTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1l
IFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1l
IFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVu
YW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0
eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjA+Ci1z
dHJ1Y3QgVHlwZXMyMCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczE5PFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQx
NSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwPiBUYWlsOwotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBl
bmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBl
bmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0
eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQx
NiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIw
LAotICAgIHR5cGVuYW1lIFQyMT4KLXN0cnVjdCBUeXBlczIxIHsKLSAgdHlwZWRlZiBUMSBIZWFk
OwotICB0eXBlZGVmIFR5cGVzMjA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5
cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4
LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1l
IFQyMj4KLXN0cnVjdCBUeXBlczIyIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5
cGVzMjE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyPiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjM+Ci1zdHJ1Y3QgVHlwZXMyMyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRl
ZiBUeXBlczIyPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyND4KLXN0cnVjdCBUeXBlczI0IHsKLSAgdHlw
ZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjM8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyND4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNT4KLXN0cnVjdCBUeXBlczI1IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwot
ICB0eXBlZGVmIFR5cGVzMjQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAg
ICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlw
ZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMs
IHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUg
VDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVu
YW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5h
bWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNj4KLXN0cnVjdCBUeXBlczI2IHsKLSAgdHlwZWRlZiBU
MSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjY+IFRhaWw7Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjc+Ci1z
dHJ1Y3QgVHlwZXMyNyB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczI2PFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQx
NSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjc+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1l
IFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAs
Ci0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUg
VDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVu
YW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0
eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0g
ICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOD4KLXN0cnVjdCBUeXBl
czI4IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjc8VDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgICAg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOT4KLXN0
cnVjdCBUeXBlczI5IHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzMjg8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1
LAotICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwPgotc3RydWN0IFR5cGVzMzAgewotICB0eXBl
ZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMyOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwK
LSAgICAgIFQzMD4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUg
VDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwK
LSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBU
MTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5h
bWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5
cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAg
ICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjks
IHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzE+Ci1zdHJ1Y3QgVHlwZXMzMSB7Ci0gIHR5
cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczMwPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5
LAotICAgICAgVDMwLCBUMzE+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5
cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFt
ZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlw
ZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcs
IHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUg
VDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBU
MjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5h
bWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzI+Ci1z
dHJ1Y3QgVHlwZXMzMiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczMxPFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQx
NSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMj4gVGFpbDsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1l
IFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBl
bmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzPgotc3RydWN0IFR5cGVzMzMgewot
ICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMzMjxUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
IFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQ+Ci1zdHJ1Y3QgVHlwZXMzNCB7
Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczMzPFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQy
OCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgs
IHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBU
MTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5h
bWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFt
ZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlw
ZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcs
IHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUg
VDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBU
MzU+Ci1zdHJ1Y3QgVHlwZXMzNSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBl
czM0PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0
eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5
cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMz
LCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzY+Ci1zdHJ1Y3Qg
VHlwZXMzNiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczM1PFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAg
ICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5
cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIy
LCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1l
IFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUg
VDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVu
YW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Pgot
c3RydWN0IFR5cGVzMzcgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMzNjxU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBU
MTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzUsIFQzNiwgVDM3PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQy
OSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFt
ZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlw
ZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzg+Ci1zdHJ1Y3QgVHlwZXMzOCB7Ci0gIHR5cGVkZWYgVDEg
SGVhZDsKLSAgdHlwZWRlZiBUeXBlczM3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOD4gVGFpbDsKLX07Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
LCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1l
IFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBl
bmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVu
YW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0
eXBlbmFtZSBUMzk+Ci1zdHJ1Y3QgVHlwZXMzOSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlw
ZWRlZiBUeXBlczM4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5PiBUYWlsOwotfTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVu
YW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0
eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQz
MSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1
LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1l
IFQzOSwgdHlwZW5hbWUgVDQwPgotc3RydWN0IFR5cGVzNDAgewotICB0eXBlZGVmIFQxIEhlYWQ7
Ci0gIHR5cGVkZWYgVHlwZXMzOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwPiBUYWlsOwot
fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwg
dHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAot
ICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQx
OSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFt
ZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlw
ZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAg
IHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwg
dHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBU
MzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MT4KLXN0cnVj
dCBUeXBlczQxIHsKLSAgdHlwZWRlZiBUMSBIZWFkOwotICB0eXBlZGVmIFR5cGVzNDA8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAot
ICAgICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LCBUMjksCi0gICAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5h
bWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5
cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlw
ZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyPgotc3RydWN0IFR5cGVz
NDIgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM0MTxUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgICBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0Mj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUs
Ci0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDks
IHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUg
VDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVu
YW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0
eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5
cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4
LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1l
IFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBl
bmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVu
YW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzPgot
c3RydWN0IFR5cGVzNDMgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM0MjxU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBU
MTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0Mz4gVGFpbDsK
LX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0
eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0
eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEs
IHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwK
LSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBU
MTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5h
bWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5
cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAg
ICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQs
IHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUg
VDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVu
YW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQ+Ci1zdHJ1Y3QgVHlwZXM0NCB7Ci0g
IHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczQzPFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwg
VDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgICBUNDQ+IFRhaWw7Ci19OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
Ci0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUg
VDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVu
YW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDU+Ci1zdHJ1Y3QgVHlwZXM0NSB7Ci0g
IHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczQ0PFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwg
VDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwg
VDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgICBUNDQsIFQ0NT4gVGFpbDsKLX07Ci0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1l
IFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBl
bmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVu
YW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0
eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQy
NywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFt
ZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1l
IFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBl
bmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0Miwg
dHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBU
NDY+Ci1zdHJ1Y3QgVHlwZXM0NiB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBl
czQ1PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgICBU
NDQsIFQ0NSwgVDQ2PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
LAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1l
IFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBl
bmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwg
dHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAot
ICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQy
OSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFt
ZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlw
ZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAg
IHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwg
dHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Pgotc3RydWN0IFR5
cGVzNDcgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXM0NjxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAg
ICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAgICAgVDQ0LCBUNDUsIFQ0Niwg
VDQ3PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlw
ZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5
cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlw
ZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgs
IHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUg
VDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVu
YW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5h
bWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5
cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3
LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1l
IFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUg
VDQ1LAotICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDg+Ci1zdHJ1
Y3QgVHlwZXM0OCB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczQ3PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
LSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwg
VDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgICBUNDQsIFQ0NSwg
VDQ2LCBUNDcsIFQ0OD4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
LSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBU
MjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5h
bWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5
cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAg
ICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQs
IHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUg
VDQ4LCB0eXBlbmFtZSBUNDk+Ci1zdHJ1Y3QgVHlwZXM0OSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsK
LSAgdHlwZWRlZiBUeXBlczQ4PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQy
LCBUNDMsCi0gICAgICBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5PiBUYWlsOwotfTsKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1l
IFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1l
IFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5h
bWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5
cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlw
ZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMs
IHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUg
VDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVu
YW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5h
bWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5
cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQy
LCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAotICAgIHR5cGVuYW1l
IFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OSwgdHlwZW5hbWUg
VDUwPgotc3RydWN0IFR5cGVzNTAgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlw
ZXM0OTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LCBUMTUsCi0gICAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICAgIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAgICAg
VDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPiBUYWlsOwotfTsKLQotCi19ICAvLyBu
YW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gV2UgZG9uJ3Qgd2FudCB0byByZXF1aXJlIHRoZSB1c2Vy
cyB0byB3cml0ZSBUeXBlc048Li4uPiBkaXJlY3RseSwKLS8vIGFzIHRoYXQgd291bGQgcmVxdWly
ZSB0aGVtIHRvIGNvdW50IHRoZSBsZW5ndGguICBUeXBlczwuLi4+IGlzIG11Y2gKLS8vIGVhc2ll
ciB0byB3cml0ZSwgYnV0IGdlbmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJlIGlz
IGEKLS8vIGNvbXBpbGVyIGVycm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQgZWFj
aCB0ZW1wbGF0ZQotLy8gYXJndW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZhbHVl
ICh0aGlzIG1lYW5zIFR5cGVzPGludD4KLS8vIHdpbGwgYXBwZWFyIGFzIFR5cGVzPGludCwgTm9u
ZSwgTm9uZSwgLi4uLCBOb25lPiBpbiB0aGUgY29tcGlsZXIKLS8vIGVycm9ycykuCi0vLwotLy8g
T3VyIHNvbHV0aW9uIGlzIHRvIGNvbWJpbmUgdGhlIGJlc3QgcGFydCBvZiB0aGUgdHdvIGFwcHJv
YWNoZXM6IGEKLS8vIHVzZXIgd291bGQgd3JpdGUgVHlwZXM8VDEsIC4uLiwgVE4+LCBhbmQgR29v
Z2xlIFRlc3Qgd2lsbCB0cmFuc2xhdGUKLS8vIHRoYXQgdG8gVHlwZXNOPFQxLCAuLi4sIFROPiBp
bnRlcm5hbGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMKLS8vIHJlYWRhYmxlLiAgVGhlIHRyYW5z
bGF0aW9uIGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhlCi0vLyBUeXBlcyB0ZW1w
bGF0ZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBU
MiA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQzID0gaW50ZXJuYWw6Ok5vbmUsIHR5
cGVuYW1lIFQ0ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDUgPSBpbnRlcm5hbDo6
Tm9uZSwgdHlwZW5hbWUgVDYgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUNyA9IGlu
dGVybmFsOjpOb25lLCB0eXBlbmFtZSBUOCA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1l
IFQ5ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQxMCA9IGludGVybmFsOjpOb25lLAotICAg
IHR5cGVuYW1lIFQxMSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMTIgPSBpbnRlcm5hbDo6
Tm9uZSwKLSAgICB0eXBlbmFtZSBUMTMgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDE0ID0g
aW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDE1ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVu
YW1lIFQxNiA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQxNyA9IGludGVybmFsOjpO
b25lLCB0eXBlbmFtZSBUMTggPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMTkgPSBp
bnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDIwID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5h
bWUgVDIxID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQyMiA9IGludGVybmFsOjpOb25lLAot
ICAgIHR5cGVuYW1lIFQyMyA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMjQgPSBpbnRlcm5h
bDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMjUgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDI2
ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDI3ID0gaW50ZXJuYWw6Ok5vbmUsIHR5
cGVuYW1lIFQyOCA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQyOSA9IGludGVybmFs
OjpOb25lLCB0eXBlbmFtZSBUMzAgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMzEg
PSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDMyID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlw
ZW5hbWUgVDMzID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQzNCA9IGludGVybmFsOjpOb25l
LAotICAgIHR5cGVuYW1lIFQzNSA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUMzYgPSBpbnRl
cm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUMzcgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUg
VDM4ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAgdHlwZW5hbWUgVDM5ID0gaW50ZXJuYWw6Ok5vbmUs
IHR5cGVuYW1lIFQ0MCA9IGludGVybmFsOjpOb25lLAotICAgIHR5cGVuYW1lIFQ0MSA9IGludGVy
bmFsOjpOb25lLCB0eXBlbmFtZSBUNDIgPSBpbnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBU
NDMgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5hbWUgVDQ0ID0gaW50ZXJuYWw6Ok5vbmUsCi0gICAg
dHlwZW5hbWUgVDQ1ID0gaW50ZXJuYWw6Ok5vbmUsIHR5cGVuYW1lIFQ0NiA9IGludGVybmFsOjpO
b25lLAotICAgIHR5cGVuYW1lIFQ0NyA9IGludGVybmFsOjpOb25lLCB0eXBlbmFtZSBUNDggPSBp
bnRlcm5hbDo6Tm9uZSwKLSAgICB0eXBlbmFtZSBUNDkgPSBpbnRlcm5hbDo6Tm9uZSwgdHlwZW5h
bWUgVDUwID0gaW50ZXJuYWw6Ok5vbmU+Ci1zdHJ1Y3QgVHlwZXMgewotICB0eXBlZGVmIGludGVy
bmFsOjpUeXBlczUwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMx
LCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQx
LCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OSwgVDUwPiB0eXBlOwotfTsK
LQotdGVtcGxhdGUgPD4KLXN0cnVjdCBUeXBlczxpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6
VHlwZXMwIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxPgotc3RydWN0IFR5cGVzPFQx
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBl
ZGVmIGludGVybmFsOjpUeXBlczE8VDE+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMj4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMyPFQxLCBUMj4gdHlwZTsKLX07
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXN0cnVj
dCBUeXBlczxUMSwgVDIsIFQzLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVz
MzxUMSwgVDIsIFQzPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBU
NCwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0g
IHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzNDxUMSwgVDIsIFQzLCBUND4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM1PFQx
LCBUMiwgVDMsIFQ0LCBUNT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM2PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDY+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDc+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0
eXBlZGVmIGludGVybmFsOjpUeXBlczc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+IHR5cGU7
Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJu
YWw6OlR5cGVzODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+IHR5cGU7Ci19OwotdGVt
cGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0
LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4
LCB0eXBlbmFtZSBUOT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBl
czk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gdHlwZTsKLX07Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVz
MTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiB0eXBlOwotfTsKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBU
NCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBU
OCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTE+Ci1zdHJ1Y3Qg
VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczExPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMj4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczEyPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLAotICAgICAgVDEyPiB0eXBlOwotfTsKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlw
ZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlw
ZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwg
dHlwZW5hbWUgVDEzPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczEzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCi0gICAgICBUMTM+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxND4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczE0PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBU
MTMsIFQxND4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0
eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0
eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAg
dHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0
eXBlbmFtZSBUMTU+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTU8VDEsIFQyLCBUMywg
VDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBU
MTU+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5h
bWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5h
bWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVu
YW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5h
bWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNj4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQx
NiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMTY8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0
LCBUMTUsIFQxNj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTc+Ci1zdHJ1Y3Qg
VHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMx
NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAg
ICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTc+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTg+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQx
NywgVDE4LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVk
ZWYgaW50ZXJuYWw6OlR5cGVzMTg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTg+IHR5cGU7
Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5
cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5
cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwg
dHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAot
ICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQx
OT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAg
ICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczE5PFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTk+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0
eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5h
bWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5
cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3
LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwPgotc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczIwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMD4g
dHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxPgotc3RydWN0IFR5cGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMy
MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAg
ICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMT4gdHlwZTsKLX07
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBl
bmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAg
dHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0
eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjI+Ci1zdHJ1Y3QgVHlw
ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMyMjxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyPiB0eXBlOwotfTsK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFt
ZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFt
ZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVu
YW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0
eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5
cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIz
Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczIzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBU
MTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMz4gdHlw
ZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6
VHlwZXMyNDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyND4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1l
IFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBl
bmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjU+Ci1zdHJ1
Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIs
IFQyMywgVDI0LCBUMjUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVk
ZWYgaW50ZXJuYWw6OlR5cGVzMjU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1
LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5
LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1l
IFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBl
bmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAg
dHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0
eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0g
ICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMyNjxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQs
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LAot
ICAgICAgVDI2PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYs
IHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAg
ICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQs
IHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUg
VDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVu
YW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0
eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNz4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQx
NiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4g
ewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczI3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNz4g
dHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBU
MywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBU
NywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUg
VDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBU
MTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5h
bWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5
cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2
LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOD4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAg
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsIFQyOCwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5h
bDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlw
ZWRlZiBpbnRlcm5hbDo6VHlwZXMyODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOD4gdHlw
ZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywg
dHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDEx
LCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUs
Ci0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUg
VDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVu
YW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0
eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Pgotc3RydWN0IFR5cGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlw
ZWRlZiBpbnRlcm5hbDo6VHlwZXMyOTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1l
IFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1l
IFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFt
ZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1l
IFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBl
bmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwg
dHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBU
MjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQz
MD4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAg
dHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzMDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwg
VDI5LCBUMzA+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwg
dHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAg
IHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwg
dHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBU
MTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5h
bWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5
cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlw
ZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAg
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwg
aW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzE8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAot
ICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzE+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBU
NSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBU
OSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFt
ZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlw
ZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAg
IHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwg
dHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBU
MjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5h
bWUgVDMyPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAg
ICBUMzEsIFQzMiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0g
ICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6
OlR5cGVzMzI8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQz
Mj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFt
ZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5h
bWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFt
ZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlw
ZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIs
IHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUg
VDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBU
MzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMz4KLXN0cnVj
dCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQz
MywgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6
Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJu
YWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMzMzxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0g
ICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+IHR5cGU7Ci19OwotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0
eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0
eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEy
LCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1l
IFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUg
VDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVu
YW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0
eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQz
MSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzND4KLXN0cnVjdCBUeXBl
czxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
IFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBU
MjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lPiB7Ci0gIHR5
cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzQ8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQy
OSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwK
LSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwg
dHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBU
MTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5h
bWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5
cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlw
ZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgs
IHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUg
VDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1Pgotc3RydWN0IFR5
cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwK
LSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFs
OjpUeXBlczM1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzU+IHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwLAotICAgIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVu
YW1lIFQxNCwgdHlwZW5hbWUgVDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0
eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQy
MSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1
LAotICAgIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1l
IFQyOSwgdHlwZW5hbWUgVDMwLAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBl
bmFtZSBUMzMsIHR5cGVuYW1lIFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNj4K
LXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEs
IFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAgVDMxLCBU
MzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAot
ICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6
OlR5cGVzMzY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwKLSAgICAgIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQz
MiwgVDMzLCBUMzQsIFQzNSwgVDM2PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAg
dHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVu
YW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0
eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQx
NywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFt
ZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1l
IFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBl
bmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwg
dHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBU
MzYsIHR5cGVuYW1lIFQzNz4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5
LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBpbnRlcm5hbDo6
Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25l
LCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGlu
dGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGlu
dGVybmFsOjpUeXBlczM3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5h
bWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlw
ZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYs
IHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwK
LSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBU
MjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5h
bWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5
cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAg
ICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4Pgotc3RydWN0IFR5cGVz
PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQy
NCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAg
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFs
OjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5v
bmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4g
ewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczM4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywg
VDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzg+IHR5
cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMs
IHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcs
IHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1lIFQx
MSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1
LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1l
IFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBl
bmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQyNiwg
dHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMwLAot
ICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQz
NCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFt
ZSBUMzgsIHR5cGVuYW1lIFQzOT4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwg
VDI5LCBUMzAsCi0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQz
OSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6
Ok5vbmUsIGludGVybmFsOjpOb25lPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMzk8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwKLSAgICAgIFQx
MywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LAotICAgICAgVDI3LCBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQs
IFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0g
ICAgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5
cGVuYW1lIFQxMCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEz
LCB0eXBlbmFtZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1l
IFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBl
bmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVu
YW1lIFQyNSwKLSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0
eXBlbmFtZSBUMjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQz
MiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFt
ZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1l
IFQ0MD4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAsCi0gICAg
VDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBpbnRlcm5h
bDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZT4gewot
ICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQwPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4
LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4
LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwK
LSAgICAgIFQ0MD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2
LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0g
ICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0
LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1l
IFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBl
bmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAg
dHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0
eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQz
MywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFt
ZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlw
ZW5hbWUgVDQxPgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwK
LSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0
MSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50ZXJuYWw6Ok5vbmUsIGludGVy
bmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBp
bnRlcm5hbDo6VHlwZXM0MTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwKLSAgICAg
IFQ0MT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBl
bmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlw
ZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBl
bmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwg
dHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBU
MjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5h
bWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFt
ZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlw
ZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcs
IHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUg
VDQxLCB0eXBlbmFtZSBUNDI+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQy
OSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzks
IFQ0MCwgVDQxLCBUNDIsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFsOjpOb25lLCBpbnRl
cm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLAotICAgIGludGVybmFs
OjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRl
cm5hbDo6VHlwZXM0MjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwKLSAgICAgIFQ0
MSwgVDQyPiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5
cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5
cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0
eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5
cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4
LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1l
IFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBl
bmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVu
YW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0
eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQz
NywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFt
ZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzPgotc3RydWN0IFR5cGVzPFQxLCBUMiwg
VDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUs
Ci0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2
LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgaW50ZXJuYWw6Ok5vbmUs
IGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsCi0gICAgaW50
ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVm
IGludGVybmFsOjpUeXBlczQzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAg
ICAgVDQxLCBUNDIsIFQ0Mz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAgIHR5cGVu
YW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBU
MTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5h
bWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5
cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5hbWUgVDIx
LCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFtZSBUMjUs
Ci0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUg
VDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVu
YW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUgVDM2LCB0
eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBUNDAsCi0g
ICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0
Pgotc3RydWN0IFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywgVDE0LCBUMTUsCi0gICAgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksIFQzMCwKLSAgICBUMzEs
IFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBU
NDMsIFQ0NCwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpO
b25lLCBpbnRlcm5hbDo6Tm9uZSwKLSAgICBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+
IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM0NDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcs
IFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwKLSAgICAgIFQ0MSwgVDQyLCBUNDMsIFQ0ND4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVu
YW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5
cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2
LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAs
Ci0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUg
VDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVu
YW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0
eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0g
ICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5
LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1l
IFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDU+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwK
LSAgICBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsIFQyOSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYs
IFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsCi0gICAgaW50ZXJu
YWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmUs
Ci0gICAgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM0NTxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEz
LCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwKLSAgICAgIFQ0MSwgVDQyLCBUNDMsIFQ0NCwg
VDQ1PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
YW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5hbWUgVDYsIHR5cGVu
YW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMCwKLSAgICB0eXBl
bmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQsIHR5cGVu
YW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0
eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQy
MiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwKLSAgICB0eXBlbmFt
ZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjksIHR5cGVuYW1l
IFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBl
bmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywg
dHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAgICB0eXBlbmFtZSBU
NDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQsIHR5cGVuYW1lIFQ0
NSwKLSAgICB0eXBlbmFtZSBUNDY+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQx
NywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgs
IFQyOSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBU
MzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsCi0gICAgVDQ2LCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmUsIGludGVybmFsOjpOb25lLCBpbnRlcm5hbDo6Tm9uZT4gewotICB0
eXBlZGVmIGludGVybmFsOjpUeXBlczQ2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwKLSAgICAgIFQyNywgVDI4LCBU
MjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQw
LAotICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0Nj4gdHlwZTsKLX07Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LAotICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5
cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIs
IHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUg
VDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBU
MjAsCi0gICAgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5h
bWUgVDI0LCB0eXBlbmFtZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5
cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMx
LCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUs
Ci0gICAgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUg
VDM5LCB0eXBlbmFtZSBUNDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVu
YW1lIFQ0MywgdHlwZW5hbWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0
eXBlbmFtZSBUNDc+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwgVDMw
LAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsCi0gICAgVDQ2LCBUNDcsIGludGVybmFsOjpOb25lLCBp
bnRlcm5hbDo6Tm9uZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlw
ZXM0NzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAot
ICAgICAgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwKLSAgICAgIFQ0MSwgVDQyLCBU
NDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0Nz4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LAotICAg
IHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBl
bmFtZSBUMTAsCi0gICAgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywg
dHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUsCi0gICAgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBU
MTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5LCB0eXBlbmFtZSBUMjAsCi0gICAgdHlwZW5h
bWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0LCB0eXBlbmFt
ZSBUMjUsCi0gICAgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlw
ZW5hbWUgVDI5LCB0eXBlbmFtZSBUMzAsCi0gICAgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIs
IHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0LCB0eXBlbmFtZSBUMzUsCi0gICAgdHlwZW5hbWUg
VDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5LCB0eXBlbmFtZSBU
NDAsCi0gICAgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5h
bWUgVDQ0LCB0eXBlbmFtZSBUNDUsCi0gICAgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5
cGVuYW1lIFQ0OD4KLXN0cnVjdCBUeXBlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LAotICAgIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LCBUMzAs
Ci0gICAgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBU
NDEsIFQ0MiwgVDQzLCBUNDQsIFQ0NSwKLSAgICBUNDYsIFQ0NywgVDQ4LCBpbnRlcm5hbDo6Tm9u
ZSwgaW50ZXJuYWw6Ok5vbmU+IHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXM0ODxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBU
MTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsCi0gICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1
LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwKLSAgICAgIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1
LCBUNDYsIFQ0NywgVDQ4PiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsCi0gICAgdHlwZW5h
bWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQx
MCwKLSAgICB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFt
ZSBUMTQsIHR5cGVuYW1lIFQxNSwKLSAgICB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlw
ZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMCwKLSAgICB0eXBlbmFtZSBUMjEs
IHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQsIHR5cGVuYW1lIFQyNSwK
LSAgICB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBU
MjksIHR5cGVuYW1lIFQzMCwKLSAgICB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5h
bWUgVDMzLCB0eXBlbmFtZSBUMzQsIHR5cGVuYW1lIFQzNSwKLSAgICB0eXBlbmFtZSBUMzYsIHR5
cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzksIHR5cGVuYW1lIFQ0MCwKLSAg
ICB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQs
IHR5cGVuYW1lIFQ0NSwKLSAgICB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUg
VDQ4LCB0eXBlbmFtZSBUNDk+Ci1zdHJ1Y3QgVHlwZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwKLSAgICBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQy
OSwgVDMwLAotICAgIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzks
IFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsCi0gICAgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBp
bnRlcm5hbDo6Tm9uZT4gewotICB0eXBlZGVmIGludGVybmFsOjpUeXBlczQ5PFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsCi0gICAgICBUMTMsIFQxNCwg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwKLSAgICAgIFQyNywgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQz
NiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQxLCBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0
NiwgVDQ3LCBUNDgsIFQ0OT4gdHlwZTsKLX07Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSMg
ZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MKLQotLy8g
VGhlIHRlbXBsYXRlICJzZWxlY3RvciIgc3RydWN0IFRlbXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQg
dG8KLS8vIHJlcHJlc2VudCBUbXBsLCB3aGljaCBtdXN0IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0
aCBvbmUgdHlwZQotLy8gcGFyYW1ldGVyLCBhcyBhIHR5cGUuICBUZW1wbGF0ZVNlbDxUbXBsPjo6
QmluZDxUPjo6dHlwZSBpcyBkZWZpbmVkCi0vLyBhcyB0aGUgdHlwZSBUbXBsPFQ+LiAgVGhpcyBh
bGxvd3MgdXMgdG8gYWN0dWFsbHkgaW5zdGFudGlhdGUgdGhlCi0vLyB0ZW1wbGF0ZSAic2VsZWN0
ZWQiIGJ5IFRlbXBsYXRlU2VsPFRtcGw+LgotLy8KLS8vIFRoaXMgdHJpY2sgaXMgbmVjZXNzYXJ5
IGZvciBzaW11bGF0aW5nIHR5cGVkZWYgZm9yIGNsYXNzIHRlbXBsYXRlcywKLS8vIHdoaWNoIEMr
KyBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0bHkuCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFRt
cGw+Ci1zdHJ1Y3QgVGVtcGxhdGVTZWwgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3Ry
dWN0IEJpbmQgewotICAgIHR5cGVkZWYgVG1wbDxUPiB0eXBlOwotICB9OwotfTsKLQotIyBkZWZp
bmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkgXAotICBUbXBsU2VsOjp0ZW1wbGF0ZSBCaW5kPFQ+
Ojp0eXBlCi0KLS8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1wbGF0ZSB1c2VkIGFzIHRoZSBkZWZhdWx0
IHZhbHVlIGZvciB0aGUKLS8vIGFyZ3VtZW50cyBvZiBjbGFzcyB0ZW1wbGF0ZSBUZW1wbGF0ZXMu
ICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZQotLy8gdmFyaWFkaWMgdGVtcGxhdGVzIChlLmcu
IFRlbXBsYXRlczxpbnQ+LCBUZW1wbGF0ZXM8aW50LCBkb3VibGU+LAotLy8gYW5kIGV0YyksIHdo
aWNoIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0bHkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0cnVjdCBOb25lVCB7fTsKLQotLy8gVGhlIGZvbGxvd2luZyBmYW1pbHkgb2Ygc3RydWN0IGFu
ZCBzdHJ1Y3QgdGVtcGxhdGVzIGFyZSB1c2VkIHRvCi0vLyByZXByZXNlbnQgdGVtcGxhdGUgbGlz
dHMuICBJbiBwYXJ0aWN1bGFyLCBUZW1wbGF0ZXNOPFQxLCBUMiwgLi4uLAotLy8gVE4+IHJlcHJl
c2VudHMgYSBsaXN0IG9mIE4gdGVtcGxhdGVzIChUMSwgVDIsIC4uLiwgYW5kIFROKS4gIEV4Y2Vw
dAotLy8gZm9yIFRlbXBsYXRlczAsIGV2ZXJ5IHN0cnVjdCBpbiB0aGUgZmFtaWx5IGhhcyB0d28g
bWVtYmVyIHR5cGVzOgotLy8gSGVhZCBmb3IgdGhlIHNlbGVjdG9yIG9mIHRoZSBmaXJzdCB0ZW1w
bGF0ZSBpbiB0aGUgbGlzdCwgYW5kIFRhaWwKLS8vIGZvciB0aGUgcmVzdCBvZiB0aGUgbGlzdC4K
LQotLy8gVGhlIGVtcHR5IHRlbXBsYXRlIGxpc3QuCi1zdHJ1Y3QgVGVtcGxhdGVzMCB7fTsKLQot
Ly8gVGVtcGxhdGUgbGlzdHMgb2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBvbi4KLQotdGVtcGxh
dGUgPEdURVNUX1RFTVBMQVRFXyBUMT4KLXN0cnVjdCBUZW1wbGF0ZXMxIHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMwIFRhaWw7Ci19OwotdGVt
cGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyPgotc3RydWN0IFRl
bXBsYXRlczIgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRl
bXBsYXRlczE8VDI+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBH
VEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMz4KLXN0cnVjdCBUZW1wbGF0ZXMz
IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMy
PFQyLCBUMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNU
X1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
ND4KLXN0cnVjdCBUZW1wbGF0ZXM0IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsK
LSAgdHlwZWRlZiBUZW1wbGF0ZXMzPFQyLCBUMywgVDQ+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBU
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNT4KLXN0cnVjdCBU
ZW1wbGF0ZXM1IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXM0PFQyLCBUMywgVDQsIFQ1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RF
TVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBU
Nj4KLXN0cnVjdCBUZW1wbGF0ZXM2IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsK
LSAgdHlwZWRlZiBUZW1wbGF0ZXM1PFQyLCBUMywgVDQsIFQ1LCBUNj4gVGFpbDsKLX07Ci0KLXRl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3Pgotc3RydWN0IFRlbXBs
YXRlczcgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBs
YXRlczY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDg+Ci1zdHJ1
Y3QgVGVtcGxhdGVzOCB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVzNzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4gVGFpbDsKLX07Ci0KLXRl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOT4KLXN0cnVjdCBUZW1wbGF0ZXM5IHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM4PFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFU
RV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRF
XyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwPgotc3RydWN0IFRlbXBsYXRlczEwIHsKLSAg
dHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM5PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdU
RVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBM
QVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RF
U1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRF
XyBUMTE+Ci1zdHJ1Y3QgVGVtcGxhdGVzMTEgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBI
ZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczEwPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTE+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBH
VEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExB
VEVfIFQxMj4KLXN0cnVjdCBUZW1wbGF0ZXMxMiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMz4KLXN0cnVjdCBUZW1wbGF0
ZXMxMyB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxh
dGVzMTI8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTM+
IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFU
RV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNU
X1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
NywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0Pgotc3RydWN0IFRlbXBs
YXRlczE0IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1w
bGF0ZXMxMzxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywKLSAgICAgIFQxND4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEs
IEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1Q
TEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQs
IEdURVNUX1RFTVBMQVRFXyBUMTU+Ci1zdHJ1Y3QgVGVtcGxhdGVzMTUgewotICB0eXBlZGVmIFRl
bXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczE0PFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTU+IFRh
aWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8g
VDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RF
TVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywg
R1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8g
VDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTY+Ci1zdHJ1Y3QgVGVtcGxhdGVzMTYgewotICB0
eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczE1PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAg
ICBUMTUsIFQxNj4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdU
RVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFU
RV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdU
RVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExB
VEVfIFQxNz4KLXN0cnVjdCBUZW1wbGF0ZXMxNyB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+
IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTY8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgs
IFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTc+IFRhaWw7
Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIs
IEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBM
QVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RF
U1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RF
TVBMQVRFXyBUMTg+Ci1zdHJ1Y3QgVGVtcGxhdGVzMTggewotICB0eXBlZGVmIFRlbXBsYXRlU2Vs
PFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczE3PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBU
MTg+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1Q
TEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdU
RVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1Q
TEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcs
IEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOT4KLXN0cnVjdCBU
ZW1wbGF0ZXMxOSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVzMTg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5PiBUYWlsOwotfTsKLQot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjA+Ci1zdHJ1
Y3QgVGVtcGxhdGVzMjAgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBl
ZGVmIFRlbXBsYXRlczE5PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwPiBUYWls
OwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQy
LCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1Q
TEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdU
RVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQx
NSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9U
RU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBU
MjAsIEdURVNUX1RFTVBMQVRFXyBUMjE+Ci1zdHJ1Y3QgVGVtcGxhdGVzMjEgewotICB0eXBlZGVm
IFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczIwPFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjE+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVT
VF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQy
MSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyPgotc3RydWN0IFRlbXBsYXRlczIyIHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyMTxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjI+IFRhaWw7Ci19OwotCi10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RF
U1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVf
IFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1Rf
VEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVN
UExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIz
Pgotc3RydWN0IFRlbXBsYXRlczIzIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsK
LSAgdHlwZWRlZiBUZW1wbGF0ZXMyMjxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8g
VDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBU
OSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9U
RU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBU
MTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1Rf
VEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQ+
Ci1zdHJ1Y3QgVGVtcGxhdGVzMjQgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwot
ICB0eXBlZGVmIFRlbXBsYXRlczIzPFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQ+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVT
VF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFU
RV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RF
U1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFU
RV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdU
RVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8g
VDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjU+Ci1zdHJ1Y3QgVGVtcGxhdGVzMjUgewotICB0
eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczI0PFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAg
ICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNT4g
VGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdU
RVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNj4KLXN0cnVjdCBUZW1wbGF0ZXMyNiB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjU8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAg
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjY+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1Q
TEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdU
RVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1Q
TEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcs
IEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVN
UExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIy
LCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjc+Ci1z
dHJ1Y3QgVGVtcGxhdGVzMjcgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0
eXBlZGVmIFRlbXBsYXRlczI2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBU
MTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjc+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBU
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVN
UExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBH
VEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExB
VEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBH
VEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVf
IFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVT
VF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRF
XyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOD4KLXN0
cnVjdCBUZW1wbGF0ZXMyOCB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzMjc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOD4gVGFpbDsKLX07Ci0K
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVf
IFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVT
VF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRF
XyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RF
U1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5Pgotc3RydWN0IFRlbXBsYXRlczI5IHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyODxUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsCi0gICAgICBUMjk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwg
R1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1Q
TEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYs
IEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFU
RV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdU
RVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExB
VEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMD4KLXN0cnVjdCBUZW1wbGF0ZXMzMCB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjk8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAg
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzA+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVT
VF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQy
MSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9U
RU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBU
MjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1Rf
VEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDMxPgotc3RydWN0IFRlbXBsYXRlczMxIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVh
ZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzMDxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjks
IFQzMCwgVDMxPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RF
U1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRF
XyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RF
U1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFU
RV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdU
RVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8g
VDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNU
X1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVf
IFQzMj4KLXN0cnVjdCBUZW1wbGF0ZXMzMiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5
LCBUMzAsIFQzMSwgVDMyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBU
MSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RF
TVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQx
NCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9U
RU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1Q
TEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjks
IEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVN
UExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMz4KLXN0cnVjdCBUZW1wbGF0ZXMzMyB7Ci0g
IHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzI8VDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAg
ICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1
LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzM+IFRhaWw7Ci19
OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1Rf
VEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
MCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBM
QVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwg
R1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1Q
TEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUs
IEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFU
RV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQ+Ci1zdHJ1Y3QgVGVtcGxhdGVzMzQgewot
ICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczMzPFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0g
ICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQ+IFRh
aWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8g
VDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RF
TVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywg
R1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8g
VDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNU
X1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVf
IFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVT
VF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQz
MCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9U
RU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBU
MzU+Ci1zdHJ1Y3QgVGVtcGxhdGVzMzUgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFk
OwotICB0eXBlZGVmIFRlbXBsYXRlczM0PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwg
VDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwg
VDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNT4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFU
RV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNU
X1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8g
VDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNU
X1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIx
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RF
TVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQy
NiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9U
RU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNj4K
LXN0cnVjdCBUZW1wbGF0ZXMzNiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0g
IHR5cGVkZWYgVGVtcGxhdGVzMzU8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzY+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVT
VF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQy
MSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9U
RU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBU
MjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1Rf
VEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQzNz4KLXN0cnVjdCBUZW1wbGF0ZXMzNyB7Ci0gIHR5cGVk
ZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzY8VDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQx
NSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYs
IFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYs
IFQzNz4gVGFpbDsKLX07Ci0KLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RF
TVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwg
R1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEy
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RF
TVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQx
NywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9U
RU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1Q
TEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIs
IEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVN
UExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3
LCBHVEVTVF9URU1QTEFURV8gVDM4Pgotc3RydWN0IFRlbXBsYXRlczM4IHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMzNzxUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzg+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
LCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RF
TVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQz
NywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOT4KLXN0cnVjdCBUZW1w
bGF0ZXMzOSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVt
cGxhdGVzMzg8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBU
MjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBU
MzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8
R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBU
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVN
UExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBH
VEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExB
VEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBH
VEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVf
IFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVT
VF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRF
XyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RF
U1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBU
MzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1Rf
VEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwPgotc3RydWN0IFRlbXBsYXRl
czQwIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0
ZXMzOTxUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywg
VDE0LAotICAgICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywg
VDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwPiBUYWlsOwotfTsKLQotdGVtcGxhdGUg
PEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8g
VDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RF
TVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwg
R1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBM
QVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywg
R1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRF
XyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RF
U1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFU
RV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdU
RVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8g
VDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNU
X1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVf
IFQ0MT4KLXN0cnVjdCBUZW1wbGF0ZXM0MSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDA8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVN
UExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3
LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RF
TVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
MiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBM
QVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwg
R1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1Q
TEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcs
IEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0Mj4KLXN0
cnVjdCBUZW1wbGF0ZXM0MiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzNDE8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQy
MSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQz
MSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLAotICAg
ICAgVDQyPiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBU
MTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1Rf
VEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8g
VDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNU
X1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RF
TVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQz
MiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9U
RU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQzPgotc3RydWN0IFRlbXBsYXRlczQzIHsKLSAgdHlwZWRl
ZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0MjxUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1
LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwg
VDI3LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwg
VDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0Mz4gVGFpbDsKLX07Ci0KLXRl
bXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVN
UExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBH
VEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFU
RV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVT
VF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQx
OCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9U
RU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBU
MjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1Rf
VEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVN
UExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8gVDM4
LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNUX1RF
TVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
MywgR1RFU1RfVEVNUExBVEVfIFQ0ND4KLXN0cnVjdCBUZW1wbGF0ZXM0NCB7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDM8VDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCi0gICAgICBUNDMsIFQ0ND4gVGFpbDsKLX07Ci0K
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVf
IFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVT
VF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRF
XyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RF
U1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBU
MzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1Rf
VEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1QTEFURV8g
VDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDAsIEdURVNU
X1RFTVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ0MywgR1RFU1RfVEVNUExBVEVfIFQ0NCwgR1RFU1RfVEVNUExBVEVfIFQ0NT4KLXN0cnVjdCBU
ZW1wbGF0ZXM0NSB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVzNDQ8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCi0gICAg
ICBUNDMsIFQ0NCwgVDQ1PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBU
MSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RF
TVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQx
NCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9U
RU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1Q
TEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjks
IEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVN
UExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0
LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExB
VEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0LCBH
VEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDY+Ci1zdHJ1Y3QgVGVt
cGxhdGVzNDYgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQxPiBIZWFkOwotICB0eXBlZGVmIFRl
bXBsYXRlczQ1PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAgICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLAotICAgICAg
VDQzLCBUNDQsIFQ0NSwgVDQ2PiBUYWlsOwotfTsKLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
MjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1Rf
VEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVN
UExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0
LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDYsIEdURVNUX1RF
TVBMQVRFXyBUNDc+Ci1zdHJ1Y3QgVGVtcGxhdGVzNDcgewotICB0eXBlZGVmIFRlbXBsYXRlU2Vs
PFQxPiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlczQ2PFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcs
IFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwKLSAg
ICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5
LCBUNDAsIFQ0MSwgVDQyLAotICAgICAgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDc+IFRhaWw7Ci19
OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1Rf
VEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
MCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBM
QVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwg
R1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1Q
TEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUs
IEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFU
RV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdU
RVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExB
VEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBH
VEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVNUExBVEVfIFQ0NywgR1RFU1RfVEVNUExBVEVf
IFQ0OD4KLXN0cnVjdCBUZW1wbGF0ZXM0OCB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhl
YWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDc8VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgICAgVDI5
LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwg
VDQxLCBUNDIsCi0gICAgICBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0NywgVDQ4PiBUYWlsOwotfTsK
LQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVT
VF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8g
VDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RF
TVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAs
IEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFU
RV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdU
RVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExB
VEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBH
VEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVf
IFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVT
VF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRF
XyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RF
U1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNDYsIEdURVNUX1RFTVBMQVRFXyBUNDcsIEdURVNUX1RFTVBMQVRFXyBU
NDgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0OT4KLXN0cnVjdCBUZW1wbGF0ZXM0OSB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVTZWw8VDE+IEhlYWQ7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDg8VDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICAg
IFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBU
MjYsIFQyNywgVDI4LAotICAgICAgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBU
MzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsCi0gICAgICBUNDMsIFQ0NCwgVDQ1LCBU
NDYsIFQ0NywgVDQ4LCBUNDk+IFRhaWw7Ci19OwotCi10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVf
IFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8g
VDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1Rf
VEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8g
VDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNU
X1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RF
TVBMQVRFXyBUMjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQy
OSwgR1RFU1RfVEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9U
RU1QTEFURV8gVDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzQsIEdURVNUX1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1Q
TEFURV8gVDQyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQs
IEdURVNUX1RFTVBMQVRFXyBUNDUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0NiwgR1RFU1RfVEVN
UExBVEVfIFQ0NywgR1RFU1RfVEVNUExBVEVfIFQ0OCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQ5
LCBHVEVTVF9URU1QTEFURV8gVDUwPgotc3RydWN0IFRlbXBsYXRlczUwIHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0OTxUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3
LCBUMjgsCi0gICAgICBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3
LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwKLSAgICAgIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3
LCBUNDgsIFQ0OSwgVDUwPiBUYWlsOwotfTsKLQotCi0vLyBXZSBkb24ndCB3YW50IHRvIHJlcXVp
cmUgdGhlIHVzZXJzIHRvIHdyaXRlIFRlbXBsYXRlc048Li4uPiBkaXJlY3RseSwKLS8vIGFzIHRo
YXQgd291bGQgcmVxdWlyZSB0aGVtIHRvIGNvdW50IHRoZSBsZW5ndGguICBUZW1wbGF0ZXM8Li4u
PiBpcyBtdWNoCi0vLyBlYXNpZXIgdG8gd3JpdGUsIGJ1dCBnZW5lcmF0ZXMgaG9ycmlibGUgbWVz
c2FnZXMgd2hlbiB0aGVyZSBpcyBhCi0vLyBjb21waWxlciBlcnJvciwgYXMgZ2NjIGluc2lzdHMg
b24gcHJpbnRpbmcgb3V0IGVhY2ggdGVtcGxhdGUKLS8vIGFyZ3VtZW50LCBldmVuIGlmIGl0IGhh
cyB0aGUgZGVmYXVsdCB2YWx1ZSAodGhpcyBtZWFucyBUZW1wbGF0ZXM8bGlzdD4KLS8vIHdpbGwg
YXBwZWFyIGFzIFRlbXBsYXRlczxsaXN0LCBOb25lVCwgTm9uZVQsIC4uLiwgTm9uZVQ+IGluIHRo
ZSBjb21waWxlcgotLy8gZXJyb3JzKS4KLS8vCi0vLyBPdXIgc29sdXRpb24gaXMgdG8gY29tYmlu
ZSB0aGUgYmVzdCBwYXJ0IG9mIHRoZSB0d28gYXBwcm9hY2hlczogYQotLy8gdXNlciB3b3VsZCB3
cml0ZSBUZW1wbGF0ZXM8VDEsIC4uLiwgVE4+LCBhbmQgR29vZ2xlIFRlc3Qgd2lsbCB0cmFuc2xh
dGUKLS8vIHRoYXQgdG8gVGVtcGxhdGVzTjxUMSwgLi4uLCBUTj4gaW50ZXJuYWxseSB0byBtYWtl
IGVycm9yIG1lc3NhZ2VzCi0vLyByZWFkYWJsZS4gIFRoZSB0cmFuc2xhdGlvbiBpcyBkb25lIGJ5
IHRoZSAndHlwZScgbWVtYmVyIG9mIHRoZQotLy8gVGVtcGxhdGVzIHRlbXBsYXRlLgotdGVtcGxh
dGUgPEdURVNUX1RFTVBMQVRFXyBUMSA9IE5vbmVULCBHVEVTVF9URU1QTEFURV8gVDIgPSBOb25l
VCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQ0ID0g
Tm9uZVQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ1ID0gTm9uZVQsIEdURVNUX1RFTVBMQVRFXyBU
NiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUNyA9IE5vbmVULCBHVEVTVF9URU1QTEFU
RV8gVDggPSBOb25lVCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDkgPSBOb25lVCwgR1RFU1RfVEVN
UExBVEVfIFQxMCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTEgPSBOb25lVCwgR1RF
U1RfVEVNUExBVEVfIFQxMiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMgPSBOb25l
VCwgR1RFU1RfVEVNUExBVEVfIFQxNCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTUg
PSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQxNiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTcgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQxOCA9IE5vbmVULAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTkgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQyMCA9IE5vbmVULAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjEgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQyMiA9IE5vbmVULAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMjMgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQyNCA9IE5v
bmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjUgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQy
NiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjcgPSBOb25lVCwgR1RFU1RfVEVNUExB
VEVfIFQyOCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjkgPSBOb25lVCwgR1RFU1Rf
VEVNUExBVEVfIFQzMCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEgPSBOb25lVCwg
R1RFU1RfVEVNUExBVEVfIFQzMiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzMgPSBO
b25lVCwgR1RFU1RfVEVNUExBVEVfIFQzNCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MzUgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQzNiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMzcgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQzOCA9IE5vbmVULAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzkgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQ0MCA9IE5vbmVULAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNDEgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQ0MiA9IE5vbmVU
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVfIFQ0NCA9
IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDUgPSBOb25lVCwgR1RFU1RfVEVNUExBVEVf
IFQ0NiA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDcgPSBOb25lVCwgR1RFU1RfVEVN
UExBVEVfIFQ0OCA9IE5vbmVULAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDkgPSBOb25lVCwgR1RF
U1RfVEVNUExBVEVfIFQ1MCA9IE5vbmVUPgotc3RydWN0IFRlbXBsYXRlcyB7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVzNTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEs
IFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEs
IFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAg
IFQ0MiwgVDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBUNTA+IHR5cGU7Ci19Owot
Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IFRlbXBsYXRlczxOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAg
IE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMCB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVT
VF9URU1QTEFURV8gVDE+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAg
Tm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxPFQxPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxH
VEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMj4KLXN0cnVjdCBUZW1wbGF0ZXM8
VDEsIFQyLCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAg
ICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwKLSAgICBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczI8VDEsIFQy
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzPgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczM8VDEsIFQyLCBUMz4gdHlwZTsKLX07Ci10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBM
QVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQ+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBU
MiwgVDMsIFQ0LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAg
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzNDxUMSwgVDIsIFQzLCBUND4gdHlwZTsK
LX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdU
RVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRF
XyBUNT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0
ZXM1PFQxLCBUMiwgVDMsIFQ0LCBUNT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExB
VEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVT
VF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2Pgot
c3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczY8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQx
LCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNz4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXM3PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3PiB0eXBlOwotfTsKLXRlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDg+
Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
Ci0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzODxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDg+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczk8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0g
IHR5cGVkZWYgVGVtcGxhdGVzMTA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBM
QVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RF
U1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExPgotc3RydWN0IFRlbXBsYXRlczxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAg
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5
cGVkZWYgVGVtcGxhdGVzMTE8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEw
LCBUMTE+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVN
UExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBH
VEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTI+
Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTI8VDEsIFQyLCBUMywgVDQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMj4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RF
U1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywK
LSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExB
VEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVT
VF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVf
IFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzPgotc3Ry
dWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQx
MSwgVDEyLCBUMTMsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAot
ICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxMzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzPiB0eXBlOwotfTsKLXRlbXBsYXRl
IDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVf
IFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9U
RU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgs
IEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1Q
TEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMs
IEdURVNUX1RFTVBMQVRFXyBUMTQ+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxNDxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0g
ICAgICBUMTQ+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1Rf
VEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBU
MTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1Rf
VEVNUExBVEVfIFQxNT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMxNTxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQs
IFQxNT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1Q
TEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdU
RVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1Q
TEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTY+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LAotICAgIFQxNSwgVDE2LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRl
bXBsYXRlczE2PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTY+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNU
X1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRF
XyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1Rf
VEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBU
MTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1Rf
VEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDE2LCBHVEVTVF9URU1QTEFURV8gVDE3Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBU
NCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUs
IFQxNiwgVDE3LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTc8VDEs
IFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAg
ICAgVDE0LCBUMTUsIFQxNiwgVDE3PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFU
RV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRF
XyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVT
VF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRF
XyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RF
U1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOD4KLXN0cnVjdCBUZW1wbGF0ZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1w
bGF0ZXMxODxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOD4gdHlwZTsKLX07Ci10ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEz
LCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxOT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBU
MTYsIFQxNywgVDE4LCBUMTksIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMTk8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0
LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVN
UExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1Q
TEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwg
R1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1Q
TEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYs
IEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0g
ICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAg
ICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczIwPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAg
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMD4gdHlwZTsKLX07Ci10ZW1wbGF0
ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRF
XyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1Rf
VEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4
LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVN
UExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEz
LCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExB
VEVfIFQyMT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBU
MTksIFQyMCwgVDIxLCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywg
VDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQx
LCBHVEVTVF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVN
UExBVEVfIFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0
LCBHVEVTVF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RF
TVBMQVRFXyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQx
OSwgR1RFU1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDIyPgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBU
MTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyMjxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBU
NywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyPiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjM+Ci1zdHJ1Y3QgVGVtcGxh
dGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMy
MzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMs
Ci0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjM+
IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVf
IFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9U
RU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcs
IEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVf
IFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVT
VF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRF
XyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RF
U1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyND4KLXN0cnVjdCBUZW1wbGF0ZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMyNDxUMSwg
VDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAg
ICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyND4g
dHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9URU1QTEFURV8g
VDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQsIEdURVNUX1RF
TVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNywg
R1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQxMiwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9URU1QTEFURV8g
VDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBUMTcsIEdURVNU
X1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1RfVEVNUExBVEVf
IFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDIyLCBHVEVT
VF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjU+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwg
VDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAg
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVD4gewotICB0
eXBlZGVmIFRlbXBsYXRlczI1PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjU+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RF
TVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBU
NiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVN
UExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEs
IEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVN
UExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2
LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExB
VEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2Pgot
c3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBU
MjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVt
cGxhdGVzMjY8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQx
MiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQy
MiwgVDIzLCBUMjQsIFQyNSwgVDI2PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFU
RV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRF
XyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVT
VF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRF
XyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RF
U1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBU
MjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1Rf
VEVNUExBVEVfIFQyNz4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQ+IHsK
LSAgdHlwZWRlZiBUZW1wbGF0ZXMyNzxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5
LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5
LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0gICAgICBUMjc+IHR5cGU7Ci19
OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVT
VF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8g
VDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RF
TVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAs
IEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFU
RV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdU
RVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExB
VEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBH
VEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMjg+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwg
VDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LAotICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVD4gewotICB0eXBl
ZGVmIFRlbXBsYXRlczI4PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwg
VDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4PiB0eXBlOwotfTsK
LXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1Rf
VEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1
LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1Q
TEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBH
VEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVf
IFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVT
VF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRF
XyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RF
U1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQz
LCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBU
MTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2
LCBUMjcsIFQyOCwgVDI5LAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAg
IE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMjk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3
LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAg
ICBUMjgsIFQyOT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1Rf
VEVNUExBVEVfIFQzMD4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwg
VDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywg
VDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQy
OSwKLSAgICBUMzAsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYg
VGVtcGxhdGVzMzA8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEs
IFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwPiB0eXBl
OwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RF
TVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
NSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzE+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0
LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQy
NywgVDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAg
dHlwZWRlZiBUZW1wbGF0ZXMzMTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBU
MzAsIFQzMT4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
Pgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBU
MTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIw
LCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwg
VDMxLCBUMzIsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
LCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczMyPFQxLCBU
MiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAg
IFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBU
MjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzI+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVT
VF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQz
Mz4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAs
IFQzMSwgVDMyLCBUMzMsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQs
IE5vbmVULCBOb25lVCwKLSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAg
VDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQy
NSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzPiB0eXBlOwot
fTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RF
U1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVf
IFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9U
RU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEw
LCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExB
VEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBH
VEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBM
QVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwg
R1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRF
XyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzND4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQy
LCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0g
ICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUs
IFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgTm9uZVQs
IE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewot
ICB0eXBlZGVmIFRlbXBsYXRlczM0PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjks
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRF
XyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RF
U1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFU
RV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdU
RVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBU
MywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAg
VDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQy
NiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlw
ZWRlZiBUZW1wbGF0ZXMzNTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAs
IFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1Q
TEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBM
QVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBH
VEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBM
QVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwg
R1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRF
XyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RF
U1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFU
RV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdU
RVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNj4KLXN0cnVj
dCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEs
IFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBU
MjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9u
ZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzY8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
NiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwg
VDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0g
ICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2PiB0eXBlOwot
fTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwgR1RF
U1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExBVEVf
IFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVTVF9U
RU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEw
LCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVNUExB
VEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIwLCBH
VEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RFTVBM
QVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyNSwg
R1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBMQVRF
XyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwgR1RF
U1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3Pgotc3RydWN0IFRlbXBs
YXRlczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBU
MTMsIFQxNCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywg
VDM0LCBUMzUsIFQzNiwgVDM3LCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsCi0g
ICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVU
PiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4
LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgs
IFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgs
IFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzc+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVT
VF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQz
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9U
RU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBU
Mzg+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBU
MjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMw
LCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzg8VDEsIFQyLCBUMywgVDQs
IFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUs
IFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBU
MjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBU
MzcsIFQzOD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVTVF9U
RU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDQs
IEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVfIFQx
MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVTVF9U
RU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRFXyBU
MTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RFU1Rf
VEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBUMjcs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1RfVEVN
UExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8gVDMy
LCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNUX1RF
TVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQz
NywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOT4KLXN0cnVjdCBUZW1w
bGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQy
MywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMs
IFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIE5vbmVULCBOb25lVCwgTm9uZVQsCi0gICAg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7
Ci0gIHR5cGVkZWYgVGVtcGxhdGVzMzk8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBU
OSwgVDEwLCBUMTEsIFQxMiwgVDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQx
OSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQy
OSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5PiB0eXBl
OwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRFXyBUMiwg
R1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1RfVEVNUExB
VEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3LCBHVEVT
VF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRFXyBUMTUs
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RFU1RfVEVN
UExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFURV8gVDIw
LCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdURVNUX1RF
TVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQy
NSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBHVEVTVF9U
RU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8gVDMwLAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNUX1RFTVBM
QVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVfIFQzNSwg
R1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVTVF9URU1Q
TEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDA+
Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAs
IFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBU
MzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIE5vbmVULCBO
b25lVCwgTm9uZVQsCi0gICAgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25l
VCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0MDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2
LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBU
MTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAg
ICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4
LCBUMzksIFQ0MD4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1Rf
VEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8g
VDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNU
X1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxPgotc3RydWN0IFRlbXBsYXRlczxU
MSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQx
NCwKLSAgICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQs
IFQyNSwgVDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBU
MzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIE5vbmVULCBOb25lVCwKLSAgICBOb25l
VCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVm
IFRlbXBsYXRlczQxPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDEx
LCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIx
LCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMx
LCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLAotICAgICAgVDQx
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdU
RVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8g
VDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNU
X1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVf
IFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVT
VF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDI+Ci1zdHJ1Y3Qg
VGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBU
MTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBOb25lVCwK
LSAgICBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVD4gewot
ICB0eXBlZGVmIFRlbXBsYXRlczQyPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTks
IFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjks
IFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBU
NDEsCi0gICAgICBUNDI+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwg
R1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAot
ICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBM
QVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwg
R1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1Q
TEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTks
IEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVN
UExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFU
RV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdU
RVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExB
VEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBH
VEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVf
IFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzPgotc3RydWN0IFRlbXBsYXRlczxUMSwgVDIs
IFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwKLSAg
ICBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIzLCBUMjQsIFQyNSwg
VDI2LCBUMjcsIFQyOCwgVDI5LAotICAgIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQz
NiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsIFQ0MiwgVDQzLAotICAgIE5vbmVULCBOb25lVCwg
Tm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxhdGVz
NDM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEz
LAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwgVDIz
LCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMz
LCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAgIFQ0MiwgVDQz
PiB0eXBlOwotfTsKLXRlbXBsYXRlIDxHVEVTVF9URU1QTEFURV8gVDEsIEdURVNUX1RFTVBMQVRF
XyBUMiwgR1RFU1RfVEVNUExBVEVfIFQzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUNCwgR1RFU1Rf
VEVNUExBVEVfIFQ1LCBHVEVTVF9URU1QTEFURV8gVDYsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ3
LCBHVEVTVF9URU1QTEFURV8gVDgsIEdURVNUX1RFTVBMQVRFXyBUOSwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDEwLCBHVEVTVF9URU1QTEFURV8gVDExLCBHVEVTVF9URU1QTEFURV8gVDEyLAotICAg
IEdURVNUX1RFTVBMQVRFXyBUMTMsIEdURVNUX1RFTVBMQVRFXyBUMTQsIEdURVNUX1RFTVBMQVRF
XyBUMTUsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxNiwgR1RFU1RfVEVNUExBVEVfIFQxNywgR1RF
U1RfVEVNUExBVEVfIFQxOCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE5LCBHVEVTVF9URU1QTEFU
RV8gVDIwLCBHVEVTVF9URU1QTEFURV8gVDIxLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjIsIEdU
RVNUX1RFTVBMQVRFXyBUMjMsIEdURVNUX1RFTVBMQVRFXyBUMjQsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQyNSwgR1RFU1RfVEVNUExBVEVfIFQyNiwgR1RFU1RfVEVNUExBVEVfIFQyNywKLSAgICBH
VEVTVF9URU1QTEFURV8gVDI4LCBHVEVTVF9URU1QTEFURV8gVDI5LCBHVEVTVF9URU1QTEFURV8g
VDMwLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzEsIEdURVNUX1RFTVBMQVRFXyBUMzIsIEdURVNU
X1RFTVBMQVRFXyBUMzMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzNCwgR1RFU1RfVEVNUExBVEVf
IFQzNSwgR1RFU1RfVEVNUExBVEVfIFQzNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDM3LCBHVEVT
VF9URU1QTEFURV8gVDM4LCBHVEVTVF9URU1QTEFURV8gVDM5LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUNDAsIEdURVNUX1RFTVBMQVRFXyBUNDEsIEdURVNUX1RFTVBMQVRFXyBUNDIsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQ0MywgR1RFU1RfVEVNUExBVEVfIFQ0ND4KLXN0cnVjdCBUZW1wbGF0ZXM8
VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBU
MTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwg
VDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBUNDIsIFQ0MywgVDQ0LAotICAgIE5v
bmVULCBOb25lVCwgTm9uZVQsIE5vbmVULCBOb25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1w
bGF0ZXM0NDxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEy
LCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIy
LCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywKLSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMy
LCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLAotICAgICAgVDQy
LCBUNDMsIFQ0ND4gdHlwZTsKLX07Ci10ZW1wbGF0ZSA8R1RFU1RfVEVNUExBVEVfIFQxLCBHVEVT
VF9URU1QTEFURV8gVDIsIEdURVNUX1RFTVBMQVRFXyBUMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQsIEdURVNUX1RFTVBMQVRFXyBUNSwgR1RFU1RfVEVNUExBVEVfIFQ2LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUNywgR1RFU1RfVEVNUExBVEVfIFQ4LCBHVEVTVF9URU1QTEFURV8gVDksCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQxMCwgR1RFU1RfVEVNUExBVEVfIFQxMSwgR1RFU1RfVEVNUExBVEVf
IFQxMiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDEzLCBHVEVTVF9URU1QTEFURV8gVDE0LCBHVEVT
VF9URU1QTEFURV8gVDE1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTYsIEdURVNUX1RFTVBMQVRF
XyBUMTcsIEdURVNUX1RFTVBMQVRFXyBUMTgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxOSwgR1RF
U1RfVEVNUExBVEVfIFQyMCwgR1RFU1RfVEVNUExBVEVfIFQyMSwKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDIyLCBHVEVTVF9URU1QTEFURV8gVDIzLCBHVEVTVF9URU1QTEFURV8gVDI0LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMjUsIEdURVNUX1RFTVBMQVRFXyBUMjYsIEdURVNUX1RFTVBMQVRFXyBU
MjcsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyOCwgR1RFU1RfVEVNUExBVEVfIFQyOSwgR1RFU1Rf
VEVNUExBVEVfIFQzMCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDMxLCBHVEVTVF9URU1QTEFURV8g
VDMyLCBHVEVTVF9URU1QTEFURV8gVDMzLAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzQsIEdURVNU
X1RFTVBMQVRFXyBUMzUsIEdURVNUX1RFTVBMQVRFXyBUMzYsCi0gICAgR1RFU1RfVEVNUExBVEVf
IFQzNywgR1RFU1RfVEVNUExBVEVfIFQzOCwgR1RFU1RfVEVNUExBVEVfIFQzOSwKLSAgICBHVEVT
VF9URU1QTEFURV8gVDQwLCBHVEVTVF9URU1QTEFURV8gVDQxLCBHVEVTVF9URU1QTEFURV8gVDQy
LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDMsIEdURVNUX1RFTVBMQVRFXyBUNDQsIEdURVNUX1RF
TVBMQVRFXyBUNDU+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3
LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQx
OCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjks
Ci0gICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBU
NDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwKLSAgICBUNDUsIE5vbmVULCBOb25lVCwgTm9uZVQsIE5v
bmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczQ1PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYs
IFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAot
ICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBU
MzgsIFQzOSwgVDQwLCBUNDEsCi0gICAgICBUNDIsIFQ0MywgVDQ0LCBUNDU+IHR5cGU7Ci19Owot
dGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9U
RU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUs
IEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBM
QVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdU
RVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExB
VEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBH
VEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8g
VDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNU
X1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVf
IFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVT
VF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQz
MywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9U
RU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBU
MzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1Rf
VEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8g
VDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUNDY+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYs
IFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcs
IFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBU
MjksCi0gICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5
LCBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwKLSAgICBUNDUsIFQ0NiwgTm9uZVQsIE5vbmVULCBO
b25lVCwgTm9uZVQ+IHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXM0NjxUMSwgVDIsIFQzLCBUNCwgVDUs
IFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsCi0gICAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywK
LSAgICAgIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywg
VDM4LCBUMzksIFQ0MCwgVDQxLAotICAgICAgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDY+IHR5cGU7
Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBH
VEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFU
RV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNU
X1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBU
MTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1Q
TEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAs
IEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVN
UExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1
LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RF
TVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0g
ICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExB
VEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBH
VEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBM
QVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwg
R1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVNUExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1Q
TEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAg
IEdURVNUX1RFTVBMQVRFXyBUNDYsIEdURVNUX1RFTVBMQVRFXyBUNDc+Ci1zdHJ1Y3QgVGVtcGxh
dGVzPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQx
MywgVDE0LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMs
IFQyNCwgVDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBU
MzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwKLSAg
ICBUNDUsIFQ0NiwgVDQ3LCBOb25lVCwgTm9uZVQsIE5vbmVUPiB7Ci0gIHR5cGVkZWYgVGVtcGxh
dGVzNDc8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwg
VDEzLAotICAgICAgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOSwgVDIwLCBUMjEsIFQyMiwg
VDIzLCBUMjQsIFQyNSwgVDI2LCBUMjcsCi0gICAgICBUMjgsIFQyOSwgVDMwLCBUMzEsIFQzMiwg
VDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwKLSAgICAgIFQ0Miwg
VDQzLCBUNDQsIFQ0NSwgVDQ2LCBUNDc+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBM
QVRFXyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwK
LSAgICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExB
VEVfIFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdU
RVNUX1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExB
VEVfIFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBH
VEVTVF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBM
QVRFXyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAg
R1RFU1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVf
IFQyNCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVT
VF9URU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRF
XyBUMjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RF
U1RfVEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFU
RV8gVDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdU
RVNUX1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBU
MzksCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1Rf
VEVNUExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8g
VDQ0LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDYsIEdURVNU
X1RFTVBMQVRFXyBUNDcsIEdURVNUX1RFTVBMQVRFXyBUNDg+Ci1zdHJ1Y3QgVGVtcGxhdGVzPFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0
LAotICAgIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwg
VDI1LCBUMjYsIFQyNywgVDI4LCBUMjksCi0gICAgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQz
NSwgVDM2LCBUMzcsIFQzOCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsIFQ0NCwKLSAgICBUNDUs
IFQ0NiwgVDQ3LCBUNDgsIE5vbmVULCBOb25lVD4gewotICB0eXBlZGVmIFRlbXBsYXRlczQ4PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAg
ICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQyMCwgVDIxLCBUMjIsIFQyMywgVDI0
LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQzMCwgVDMxLCBUMzIsIFQzMywgVDM0
LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEsCi0gICAgICBUNDIsIFQ0MywgVDQ0
LCBUNDUsIFQ0NiwgVDQ3LCBUNDg+IHR5cGU7Ci19OwotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRF
XyBUMSwgR1RFU1RfVEVNUExBVEVfIFQyLCBHVEVTVF9URU1QTEFURV8gVDMsCi0gICAgR1RFU1Rf
VEVNUExBVEVfIFQ0LCBHVEVTVF9URU1QTEFURV8gVDUsIEdURVNUX1RFTVBMQVRFXyBUNiwKLSAg
ICBHVEVTVF9URU1QTEFURV8gVDcsIEdURVNUX1RFTVBMQVRFXyBUOCwgR1RFU1RfVEVNUExBVEVf
IFQ5LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMTAsIEdURVNUX1RFTVBMQVRFXyBUMTEsIEdURVNU
X1RFTVBMQVRFXyBUMTIsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQxMywgR1RFU1RfVEVNUExBVEVf
IFQxNCwgR1RFU1RfVEVNUExBVEVfIFQxNSwKLSAgICBHVEVTVF9URU1QTEFURV8gVDE2LCBHVEVT
VF9URU1QTEFURV8gVDE3LCBHVEVTVF9URU1QTEFURV8gVDE4LAotICAgIEdURVNUX1RFTVBMQVRF
XyBUMTksIEdURVNUX1RFTVBMQVRFXyBUMjAsIEdURVNUX1RFTVBMQVRFXyBUMjEsCi0gICAgR1RF
U1RfVEVNUExBVEVfIFQyMiwgR1RFU1RfVEVNUExBVEVfIFQyMywgR1RFU1RfVEVNUExBVEVfIFQy
NCwKLSAgICBHVEVTVF9URU1QTEFURV8gVDI1LCBHVEVTVF9URU1QTEFURV8gVDI2LCBHVEVTVF9U
RU1QTEFURV8gVDI3LAotICAgIEdURVNUX1RFTVBMQVRFXyBUMjgsIEdURVNUX1RFTVBMQVRFXyBU
MjksIEdURVNUX1RFTVBMQVRFXyBUMzAsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQzMSwgR1RFU1Rf
VEVNUExBVEVfIFQzMiwgR1RFU1RfVEVNUExBVEVfIFQzMywKLSAgICBHVEVTVF9URU1QTEFURV8g
VDM0LCBHVEVTVF9URU1QTEFURV8gVDM1LCBHVEVTVF9URU1QTEFURV8gVDM2LAotICAgIEdURVNU
X1RFTVBMQVRFXyBUMzcsIEdURVNUX1RFTVBMQVRFXyBUMzgsIEdURVNUX1RFTVBMQVRFXyBUMzks
Ci0gICAgR1RFU1RfVEVNUExBVEVfIFQ0MCwgR1RFU1RfVEVNUExBVEVfIFQ0MSwgR1RFU1RfVEVN
UExBVEVfIFQ0MiwKLSAgICBHVEVTVF9URU1QTEFURV8gVDQzLCBHVEVTVF9URU1QTEFURV8gVDQ0
LCBHVEVTVF9URU1QTEFURV8gVDQ1LAotICAgIEdURVNUX1RFTVBMQVRFXyBUNDYsIEdURVNUX1RF
TVBMQVRFXyBUNDcsIEdURVNUX1RFTVBMQVRFXyBUNDgsCi0gICAgR1RFU1RfVEVNUExBVEVfIFQ0
OT4KLXN0cnVjdCBUZW1wbGF0ZXM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsCi0gICAgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LCBUMjgsIFQyOSwKLSAgICBUMzAs
IFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQzNywgVDM4LCBUMzksIFQ0MCwgVDQxLCBU
NDIsIFQ0MywgVDQ0LAotICAgIFQ0NSwgVDQ2LCBUNDcsIFQ0OCwgVDQ5LCBOb25lVD4gewotICB0
eXBlZGVmIFRlbXBsYXRlczQ5PFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQx
MCwgVDExLCBUMTIsIFQxMywKLSAgICAgIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTksIFQy
MCwgVDIxLCBUMjIsIFQyMywgVDI0LCBUMjUsIFQyNiwgVDI3LAotICAgICAgVDI4LCBUMjksIFQz
MCwgVDMxLCBUMzIsIFQzMywgVDM0LCBUMzUsIFQzNiwgVDM3LCBUMzgsIFQzOSwgVDQwLCBUNDEs
Ci0gICAgICBUNDIsIFQ0MywgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgsIFQ0OT4gdHlwZTsKLX07
Ci0KLS8vIFRoZSBUeXBlTGlzdCB0ZW1wbGF0ZSBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgZWl0
aGVyIGEgc2luZ2xlIHR5cGUKLS8vIG9yIGEgVHlwZXM8Li4uPiBsaXN0IGluIFRZUEVEX1RFU1Rf
Q0FTRSgpIGFuZAotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoKS4KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgewotICB0eXBlZGVmIFR5cGVzMTxUPiB0
eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUg
VDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwKLSAgICB0eXBlbmFtZSBUNiwgdHlwZW5hbWUg
VDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwLAotICAgIHR5cGVuYW1l
IFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUg
VDE1LAotICAgIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVu
YW1lIFQxOSwgdHlwZW5hbWUgVDIwLAotICAgIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0
eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNCwgdHlwZW5hbWUgVDI1LAotICAgIHR5cGVuYW1lIFQy
NiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOSwgdHlwZW5hbWUgVDMw
LAotICAgIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1l
IFQzNCwgdHlwZW5hbWUgVDM1LAotICAgIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBl
bmFtZSBUMzgsIHR5cGVuYW1lIFQzOSwgdHlwZW5hbWUgVDQwLAotICAgIHR5cGVuYW1lIFQ0MSwg
dHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NCwgdHlwZW5hbWUgVDQ1LAot
ICAgIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0
OSwgdHlwZW5hbWUgVDUwPgotc3RydWN0IFR5cGVMaXN0PFR5cGVzPFQxLCBUMiwgVDMsIFQ0LCBU
NSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywKLSAgICBUMTQsIFQxNSwgVDE2
LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsIFQyNywg
VDI4LAotICAgIFQyOSwgVDMwLCBUMzEsIFQzMiwgVDMzLCBUMzQsIFQzNSwgVDM2LCBUMzcsIFQz
OCwgVDM5LCBUNDAsIFQ0MSwgVDQyLCBUNDMsCi0gICAgVDQ0LCBUNDUsIFQ0NiwgVDQ3LCBUNDgs
IFQ0OSwgVDUwPiA+IHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczxUMSwgVDIsIFQzLCBUNCwg
VDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLAotICAgICAgVDEzLCBUMTQsIFQxNSwg
VDE2LCBUMTcsIFQxOCwgVDE5LCBUMjAsIFQyMSwgVDIyLCBUMjMsIFQyNCwgVDI1LCBUMjYsCi0g
ICAgICBUMjcsIFQyOCwgVDI5LCBUMzAsIFQzMSwgVDMyLCBUMzMsIFQzNCwgVDM1LCBUMzYsIFQz
NywgVDM4LCBUMzksIFQ0MCwKLSAgICAgIFQ0MSwgVDQyLCBUNDMsIFQ0NCwgVDQ1LCBUNDYsIFQ0
NywgVDQ4LCBUNDksIFQ1MD46OnR5cGUgdHlwZTsKLX07Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFT
X1RZUEVEX1RFU1QgfHwgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5D
TFVERV9HVEVTVF9JTlRFUk5BTF9HVEVTVF9UWVBFX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L2luY2x1ZGUvZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtdHlwZS11dGlsLmgucHVtcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUxZmRmMDI1YjJjLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC9ndGVzdC10eXBlLXV0aWwu
aC5wdW1wCisrKyAvZGV2L251bGwKQEAgLTEsMjk3ICswLDAgQEAKLSQkIC0qLSBtb2RlOiBjKys7
IC0qLQotJHZhciBuID0gNTAgICQkIE1heGltdW0gbGVuZ3RoIG9mIHR5cGUgbGlzdHMgd2Ugd2Fu
dCB0byBzdXBwb3J0LgotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6
Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8K
LS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUeXBl
IHV0aWxpdGllcyBuZWVkZWQgZm9yIGltcGxlbWVudGluZyB0eXBlZCBhbmQgdHlwZS1wYXJhbWV0
ZXJpemVkCi0vLyB0ZXN0cy4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBTQ1JJUFQuICBE
TyBOT1QgRURJVCBCWSBIQU5EIQotLy8KLS8vIEN1cnJlbnRseSB3ZSBzdXBwb3J0IGF0IG1vc3Qg
JG4gdHlwZXMgaW4gYSBsaXN0LCBhbmQgYXQgbW9zdCAkbgotLy8gdHlwZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIGluIG9uZSB0eXBlLXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlLgotLy8gUGxlYXNlIGNv
bnRhY3QgZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0v
LyBtb3JlLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQ
RV9VVElMX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfSU5URVJOQUxfR1RFU1RfVFlQ
RV9VVElMX0hfCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1wb3J0LmgiCi0KLS8v
ICNpZmRlZiBfX0dOVUNfXyBpcyB0b28gZ2VuZXJhbCBoZXJlLiAgSXQgaXMgcG9zc2libGUgdG8g
dXNlIGdjYyB3aXRob3V0IHVzaW5nCi0vLyBsaWJzdGRjKysgKHdoaWNoIGlzIHdoZXJlIGN4eGFi
aS5oIGNvbWVzIGZyb20pLgotIyBpZiBHVEVTVF9IQVNfQ1hYQUJJX0hfCi0jICBpbmNsdWRlIDxj
eHhhYmkuaD4KLSMgZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQotIyAgaW5jbHVkZSA8YWN4eF9kZW1h
bmdsZS5oPgotIyBlbmRpZiAgLy8gR1RFU1RfSEFTSF9DWFhBQklfSF8KLQotbmFtZXNwYWNlIHRl
c3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gR2V0VHlwZU5hbWU8VD4oKSByZXR1
cm5zIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0eXBlIFQuCi0vLyBOQjogVGhpcyBmdW5jdGlv
biBpcyBhbHNvIHVzZWQgaW4gR29vZ2xlIE1vY2ssIHNvIGRvbid0IG1vdmUgaXQgaW5zaWRlIG9m
Ci0vLyB0aGUgdHlwZWQtdGVzdC1vbmx5IHNlY3Rpb24gYmVsb3cuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXN0ZDo6c3RyaW5nIEdldFR5cGVOYW1lKCkgewotIyBpZiBHVEVTVF9IQVNfUlRUSQot
Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWUgPSB0eXBlaWQoVCkubmFtZSgpOwotIyAgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXyB8fCBkZWZpbmVkKF9fSFBfYUNDKQotICBpbnQgc3RhdHVzID0gMDsK
LSAgLy8gZ2NjJ3MgaW1wbGVtZW50YXRpb24gb2YgdHlwZWlkKFQpLm5hbWUoKSBtYW5nbGVzIHRo
ZSB0eXBlIG5hbWUsCi0gIC8vIHNvIHdlIGhhdmUgdG8gZGVtYW5nbGUgaXQuCi0jICAgaWYgR1RF
U1RfSEFTX0NYWEFCSV9IXwotICB1c2luZyBhYmk6Ol9fY3hhX2RlbWFuZ2xlOwotIyAgIGVuZGlm
ICAvLyBHVEVTVF9IQVNfQ1hYQUJJX0hfCi0gIGNoYXIqIGNvbnN0IHJlYWRhYmxlX25hbWUgPSBf
X2N4YV9kZW1hbmdsZShuYW1lLCAwLCAwLCAmc3RhdHVzKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
bmFtZV9zdHIoc3RhdHVzID09IDAgPyByZWFkYWJsZV9uYW1lIDogbmFtZSk7Ci0gIGZyZWUocmVh
ZGFibGVfbmFtZSk7Ci0gIHJldHVybiBuYW1lX3N0cjsKLSMgIGVsc2UKLSAgcmV0dXJuIG5hbWU7
Ci0jICBlbmRpZiAgLy8gR1RFU1RfSEFTX0NYWEFCSV9IXyB8fCBfX0hQX2FDQwotCi0jIGVsc2UK
LQotICByZXR1cm4gIjx0eXBlPiI7Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hBU19SVFRJCi19Ci0K
LSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLS8v
IEFzc2VydHlUeXBlRXE8VDEsIFQyPjo6dHlwZSBpcyBkZWZpbmVkIGlmZiBUMSBhbmQgVDIgYXJl
IHRoZSBzYW1lCi0vLyB0eXBlLiAgVGhpcyBjYW4gYmUgdXNlZCBhcyBhIGNvbXBpbGUtdGltZSBh
c3NlcnRpb24gdG8gZW5zdXJlIHRoYXQKLS8vIHR3byB0eXBlcyBhcmUgZXF1YWwuCi0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgQXNzZXJ0VHlwZUVxOwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBBc3NlcnRUeXBlRXE8VCwgVD4gewotICB0eXBl
ZGVmIGJvb2wgdHlwZTsKLX07Ci0KLS8vIEEgdW5pcXVlIHR5cGUgdXNlZCBhcyB0aGUgZGVmYXVs
dCB2YWx1ZSBmb3IgdGhlIGFyZ3VtZW50cyBvZiBjbGFzcwotLy8gdGVtcGxhdGUgVHlwZXMuICBU
aGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSB2YXJpYWRpYyB0ZW1wbGF0ZXMKLS8vIChlLmcuIFR5
cGVzPGludD4sIFR5cGU8aW50LCBkb3VibGU+LCBhbmQgZXRjKSwgd2hpY2ggQysrIGRvZXNuJ3QK
LS8vIHN1cHBvcnQgZGlyZWN0bHkuCi1zdHJ1Y3QgTm9uZSB7fTsKLQotLy8gVGhlIGZvbGxvd2lu
ZyBmYW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1Y3QgdGVtcGxhdGVzIGFyZSB1c2VkIHRvCi0vLyBy
ZXByZXNlbnQgdHlwZSBsaXN0cy4gIEluIHBhcnRpY3VsYXIsIFR5cGVzTjxUMSwgVDIsIC4uLiwg
VE4+Ci0vLyByZXByZXNlbnRzIGEgdHlwZSBsaXN0IHdpdGggTiB0eXBlcyAoVDEsIFQyLCAuLi4s
IGFuZCBUTikgaW4gaXQuCi0vLyBFeGNlcHQgZm9yIFR5cGVzMCwgZXZlcnkgc3RydWN0IGluIHRo
ZSBmYW1pbHkgaGFzIHR3byBtZW1iZXIgdHlwZXM6Ci0vLyBIZWFkIGZvciB0aGUgZmlyc3QgdHlw
ZSBpbiB0aGUgbGlzdCwgYW5kIFRhaWwgZm9yIHRoZSByZXN0IG9mIHRoZQotLy8gbGlzdC4KLQot
Ly8gVGhlIGVtcHR5IHR5cGUgbGlzdC4KLXN0cnVjdCBUeXBlczAge307Ci0KLS8vIFR5cGUgbGlz
dHMgb2YgbGVuZ3RoIDEsIDIsIDMsIGFuZCBzbyBvbi4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQx
Pgotc3RydWN0IFR5cGVzMSB7Ci0gIHR5cGVkZWYgVDEgSGVhZDsKLSAgdHlwZWRlZiBUeXBlczAg
VGFpbDsKLX07Ci0KLSRyYW5nZSBpIDIuLm4KLQotJGZvciBpIFtbCi0kcmFuZ2UgaiAxLi5pCi0k
cmFuZ2UgayAyLi5pCi10ZW1wbGF0ZSA8JGZvciBqLCBbW3R5cGVuYW1lIFQkal1dPgotc3RydWN0
IFR5cGVzJGkgewotICB0eXBlZGVmIFQxIEhlYWQ7Ci0gIHR5cGVkZWYgVHlwZXMkKGktMSk8JGZv
ciBrLCBbW1Qka11dPiBUYWlsOwotfTsKLQotCi1dXQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwKLQotLy8gV2UgZG9uJ3Qgd2FudCB0byByZXF1aXJlIHRoZSB1c2VycyB0byB3cml0ZSBUeXBl
c048Li4uPiBkaXJlY3RseSwKLS8vIGFzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVtIHRvIGNvdW50
IHRoZSBsZW5ndGguICBUeXBlczwuLi4+IGlzIG11Y2gKLS8vIGVhc2llciB0byB3cml0ZSwgYnV0
IGdlbmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJlIGlzIGEKLS8vIGNvbXBpbGVy
IGVycm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQgZWFjaCB0ZW1wbGF0ZQotLy8g
YXJndW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZhbHVlICh0aGlzIG1lYW5zIFR5
cGVzPGludD4KLS8vIHdpbGwgYXBwZWFyIGFzIFR5cGVzPGludCwgTm9uZSwgTm9uZSwgLi4uLCBO
b25lPiBpbiB0aGUgY29tcGlsZXIKLS8vIGVycm9ycykuCi0vLwotLy8gT3VyIHNvbHV0aW9uIGlz
IHRvIGNvbWJpbmUgdGhlIGJlc3QgcGFydCBvZiB0aGUgdHdvIGFwcHJvYWNoZXM6IGEKLS8vIHVz
ZXIgd291bGQgd3JpdGUgVHlwZXM8VDEsIC4uLiwgVE4+LCBhbmQgR29vZ2xlIFRlc3Qgd2lsbCB0
cmFuc2xhdGUKLS8vIHRoYXQgdG8gVHlwZXNOPFQxLCAuLi4sIFROPiBpbnRlcm5hbGx5IHRvIG1h
a2UgZXJyb3IgbWVzc2FnZXMKLS8vIHJlYWRhYmxlLiAgVGhlIHRyYW5zbGF0aW9uIGlzIGRvbmUg
YnkgdGhlICd0eXBlJyBtZW1iZXIgb2YgdGhlCi0vLyBUeXBlcyB0ZW1wbGF0ZS4KLQotJHJhbmdl
IGkgMS4ubgotdGVtcGxhdGUgPCRmb3IgaSwgW1t0eXBlbmFtZSBUJGkgPSBpbnRlcm5hbDo6Tm9u
ZV1dPgotc3RydWN0IFR5cGVzIHsKLSAgdHlwZWRlZiBpbnRlcm5hbDo6VHlwZXMkbjwkZm9yIGks
IFtbVCRpXV0+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFR5cGVzPCRmb3IgaSwg
W1tpbnRlcm5hbDo6Tm9uZV1dPiB7Ci0gIHR5cGVkZWYgaW50ZXJuYWw6OlR5cGVzMCB0eXBlOwot
fTsKLQotJHJhbmdlIGkgMS4ubi0xCi0kZm9yIGkgW1sKLSRyYW5nZSBqIDEuLmkKLSRyYW5nZSBr
IGkrMS4ubgotdGVtcGxhdGUgPCRmb3IgaiwgW1t0eXBlbmFtZSBUJGpdXT4KLXN0cnVjdCBUeXBl
czwkZm9yIGosIFtbVCRqXV0kZm9yIGtbWywgaW50ZXJuYWw6Ok5vbmVdXT4gewotICB0eXBlZGVm
IGludGVybmFsOjpUeXBlcyRpPCRmb3IgaiwgW1tUJGpdXT4gdHlwZTsKLX07Ci0KLV1dCi0KLW5h
bWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSMgZGVmaW5lIEdURVNUX1RFTVBMQVRFXyB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MKLQotLy8gVGhlIHRlbXBsYXRlICJzZWxlY3RvciIgc3RydWN0IFRl
bXBsYXRlU2VsPFRtcGw+IGlzIHVzZWQgdG8KLS8vIHJlcHJlc2VudCBUbXBsLCB3aGljaCBtdXN0
IGJlIGEgY2xhc3MgdGVtcGxhdGUgd2l0aCBvbmUgdHlwZQotLy8gcGFyYW1ldGVyLCBhcyBhIHR5
cGUuICBUZW1wbGF0ZVNlbDxUbXBsPjo6QmluZDxUPjo6dHlwZSBpcyBkZWZpbmVkCi0vLyBhcyB0
aGUgdHlwZSBUbXBsPFQ+LiAgVGhpcyBhbGxvd3MgdXMgdG8gYWN0dWFsbHkgaW5zdGFudGlhdGUg
dGhlCi0vLyB0ZW1wbGF0ZSAic2VsZWN0ZWQiIGJ5IFRlbXBsYXRlU2VsPFRtcGw+LgotLy8KLS8v
IFRoaXMgdHJpY2sgaXMgbmVjZXNzYXJ5IGZvciBzaW11bGF0aW5nIHR5cGVkZWYgZm9yIGNsYXNz
IHRlbXBsYXRlcywKLS8vIHdoaWNoIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0bHkuCi10ZW1w
bGF0ZSA8R1RFU1RfVEVNUExBVEVfIFRtcGw+Ci1zdHJ1Y3QgVGVtcGxhdGVTZWwgewotICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLSAgc3RydWN0IEJpbmQgewotICAgIHR5cGVkZWYgVG1wbDxUPiB0
eXBlOwotICB9OwotfTsKLQotIyBkZWZpbmUgR1RFU1RfQklORF8oVG1wbFNlbCwgVCkgXAotICBU
bXBsU2VsOjp0ZW1wbGF0ZSBCaW5kPFQ+Ojp0eXBlCi0KLS8vIEEgdW5pcXVlIHN0cnVjdCB0ZW1w
bGF0ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKLS8vIGFyZ3VtZW50cyBvZiBj
bGFzcyB0ZW1wbGF0ZSBUZW1wbGF0ZXMuICBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZQotLy8g
dmFyaWFkaWMgdGVtcGxhdGVzIChlLmcuIFRlbXBsYXRlczxpbnQ+LCBUZW1wbGF0ZXM8aW50LCBk
b3VibGU+LAotLy8gYW5kIGV0YyksIHdoaWNoIEMrKyBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0bHku
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBOb25lVCB7fTsKLQotLy8gVGhlIGZvbGxv
d2luZyBmYW1pbHkgb2Ygc3RydWN0IGFuZCBzdHJ1Y3QgdGVtcGxhdGVzIGFyZSB1c2VkIHRvCi0v
LyByZXByZXNlbnQgdGVtcGxhdGUgbGlzdHMuICBJbiBwYXJ0aWN1bGFyLCBUZW1wbGF0ZXNOPFQx
LCBUMiwgLi4uLAotLy8gVE4+IHJlcHJlc2VudHMgYSBsaXN0IG9mIE4gdGVtcGxhdGVzIChUMSwg
VDIsIC4uLiwgYW5kIFROKS4gIEV4Y2VwdAotLy8gZm9yIFRlbXBsYXRlczAsIGV2ZXJ5IHN0cnVj
dCBpbiB0aGUgZmFtaWx5IGhhcyB0d28gbWVtYmVyIHR5cGVzOgotLy8gSGVhZCBmb3IgdGhlIHNl
bGVjdG9yIG9mIHRoZSBmaXJzdCB0ZW1wbGF0ZSBpbiB0aGUgbGlzdCwgYW5kIFRhaWwKLS8vIGZv
ciB0aGUgcmVzdCBvZiB0aGUgbGlzdC4KLQotLy8gVGhlIGVtcHR5IHRlbXBsYXRlIGxpc3QuCi1z
dHJ1Y3QgVGVtcGxhdGVzMCB7fTsKLQotLy8gVGVtcGxhdGUgbGlzdHMgb2YgbGVuZ3RoIDEsIDIs
IDMsIGFuZCBzbyBvbi4KLQotdGVtcGxhdGUgPEdURVNUX1RFTVBMQVRFXyBUMT4KLXN0cnVjdCBU
ZW1wbGF0ZXMxIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZVNlbDxUMT4gSGVhZDsKLSAgdHlwZWRlZiBU
ZW1wbGF0ZXMwIFRhaWw7Ci19OwotCi0kcmFuZ2UgaSAyLi5uCi0KLSRmb3IgaSBbWwotJHJhbmdl
IGogMS4uaQotJHJhbmdlIGsgMi4uaQotdGVtcGxhdGUgPCRmb3IgaiwgW1tHVEVTVF9URU1QTEFU
RV8gVCRqXV0+Ci1zdHJ1Y3QgVGVtcGxhdGVzJGkgewotICB0eXBlZGVmIFRlbXBsYXRlU2VsPFQx
PiBIZWFkOwotICB0eXBlZGVmIFRlbXBsYXRlcyQoaS0xKTwkZm9yIGssIFtbVCRrXV0+IFRhaWw7
Ci19OwotCi0KLV1dCi0KLS8vIFdlIGRvbid0IHdhbnQgdG8gcmVxdWlyZSB0aGUgdXNlcnMgdG8g
d3JpdGUgVGVtcGxhdGVzTjwuLi4+IGRpcmVjdGx5LAotLy8gYXMgdGhhdCB3b3VsZCByZXF1aXJl
IHRoZW0gdG8gY291bnQgdGhlIGxlbmd0aC4gIFRlbXBsYXRlczwuLi4+IGlzIG11Y2gKLS8vIGVh
c2llciB0byB3cml0ZSwgYnV0IGdlbmVyYXRlcyBob3JyaWJsZSBtZXNzYWdlcyB3aGVuIHRoZXJl
IGlzIGEKLS8vIGNvbXBpbGVyIGVycm9yLCBhcyBnY2MgaW5zaXN0cyBvbiBwcmludGluZyBvdXQg
ZWFjaCB0ZW1wbGF0ZQotLy8gYXJndW1lbnQsIGV2ZW4gaWYgaXQgaGFzIHRoZSBkZWZhdWx0IHZh
bHVlICh0aGlzIG1lYW5zIFRlbXBsYXRlczxsaXN0PgotLy8gd2lsbCBhcHBlYXIgYXMgVGVtcGxh
dGVzPGxpc3QsIE5vbmVULCBOb25lVCwgLi4uLCBOb25lVD4gaW4gdGhlIGNvbXBpbGVyCi0vLyBl
cnJvcnMpLgotLy8KLS8vIE91ciBzb2x1dGlvbiBpcyB0byBjb21iaW5lIHRoZSBiZXN0IHBhcnQg
b2YgdGhlIHR3byBhcHByb2FjaGVzOiBhCi0vLyB1c2VyIHdvdWxkIHdyaXRlIFRlbXBsYXRlczxU
MSwgLi4uLCBUTj4sIGFuZCBHb29nbGUgVGVzdCB3aWxsIHRyYW5zbGF0ZQotLy8gdGhhdCB0byBU
ZW1wbGF0ZXNOPFQxLCAuLi4sIFROPiBpbnRlcm5hbGx5IHRvIG1ha2UgZXJyb3IgbWVzc2FnZXMK
LS8vIHJlYWRhYmxlLiAgVGhlIHRyYW5zbGF0aW9uIGlzIGRvbmUgYnkgdGhlICd0eXBlJyBtZW1i
ZXIgb2YgdGhlCi0vLyBUZW1wbGF0ZXMgdGVtcGxhdGUuCi0KLSRyYW5nZSBpIDEuLm4KLXRlbXBs
YXRlIDwkZm9yIGksIFtbR1RFU1RfVEVNUExBVEVfIFQkaSA9IE5vbmVUXV0+Ci1zdHJ1Y3QgVGVt
cGxhdGVzIHsKLSAgdHlwZWRlZiBUZW1wbGF0ZXMkbjwkZm9yIGksIFtbVCRpXV0+IHR5cGU7Ci19
OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IFRlbXBsYXRlczwkZm9yIGksIFtbTm9uZVRdXT4gewot
ICB0eXBlZGVmIFRlbXBsYXRlczAgdHlwZTsKLX07Ci0KLSRyYW5nZSBpIDEuLm4tMQotJGZvciBp
IFtbCi0kcmFuZ2UgaiAxLi5pCi0kcmFuZ2UgayBpKzEuLm4KLXRlbXBsYXRlIDwkZm9yIGosIFtb
R1RFU1RfVEVNUExBVEVfIFQkal1dPgotc3RydWN0IFRlbXBsYXRlczwkZm9yIGosIFtbVCRqXV0k
Zm9yIGtbWywgTm9uZVRdXT4gewotICB0eXBlZGVmIFRlbXBsYXRlcyRpPCRmb3IgaiwgW1tUJGpd
XT4gdHlwZTsKLX07Ci0KLV1dCi0KLS8vIFRoZSBUeXBlTGlzdCB0ZW1wbGF0ZSBtYWtlcyBpdCBw
b3NzaWJsZSB0byB1c2UgZWl0aGVyIGEgc2luZ2xlIHR5cGUKLS8vIG9yIGEgVHlwZXM8Li4uPiBs
aXN0IGluIFRZUEVEX1RFU1RfQ0FTRSgpIGFuZAotLy8gSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoKS4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVHlwZUxpc3QgewotICB0
eXBlZGVmIFR5cGVzMTxUPiB0eXBlOwotfTsKLQotCi0kcmFuZ2UgaSAxLi5uCi10ZW1wbGF0ZSA8
JGZvciBpLCBbW3R5cGVuYW1lIFQkaV1dPgotc3RydWN0IFR5cGVMaXN0PFR5cGVzPCRmb3IgaSwg
W1tUJGldXT4gPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVHlwZXM8JGZvciBpLCBbW1QkaV1dPjo6
dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVCB8fCBHVEVT
VF9IQVNfVFlQRURfVEVTVF9QCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKLQotI2VuZGlmICAvLyBHVEVTVF9JTkNMVURFX0dURVNUX0lOVEVSTkFM
X0dURVNUX1RZUEVfVVRJTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbTQvYWN4X3B0aHJl
YWQubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC9tNC9hY3hfcHRocmVhZC5tNApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmNmMjBkZTE0NGExLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
bTQvYWN4X3B0aHJlYWQubTQKKysrIC9kZXYvbnVsbApAQCAtMSwzNjMgKzAsMCBAQAotIyBUaGlz
IHdhcyByZXRyaWV2ZWQgZnJvbQotIyAgICBodHRwOi8vc3ZuLjBwb2ludGVyLmRlL3ZpZXd2Yy90
cnVuay9jb21tb24vYWN4X3B0aHJlYWQubTQ/cmV2aXNpb249MTI3NyZyb290PWF2YWhpCi0jIFNl
ZSBhbHNvIChwZXJoYXBzIGZvciBuZXcgdmVyc2lvbnM/KQotIyAgICBodHRwOi8vc3ZuLjBwb2lu
dGVyLmRlL3ZpZXd2Yy90cnVuay9jb21tb24vYWN4X3B0aHJlYWQubTQ/cm9vdD1hdmFoaQotIwot
IyBXZSd2ZSByZXdyaXR0ZW4gdGhlIGluY29uc2lzdGVuY3kgY2hlY2sgY29kZSAoZnJvbSBhdmFo
aSksIHRvIHdvcmsKLSMgbW9yZSBicm9hZGx5LiAgSW4gcGFydGljdWxhciwgaXQgbm8gbG9uZ2Vy
IGFzc3VtZXMgbGQgYWNjZXB0cyAtemRlZnMuCi0jIFRoaXMgY2F1c2VkIGEgcmVzdHJ1Y3Rpbmcg
b2YgdGhlIGNvZGUsIGJ1dCB0aGUgZnVuY3Rpb25hbGl0eSBoYXMgb25seQotIyBjaGFuZ2VkIGEg
bGl0dGxlLgotCi1kbmwgQHN5bm9wc2lzIEFDWF9QVEhSRUFEKFtBQ1RJT04tSUYtRk9VTkRbLCBB
Q1RJT04tSUYtTk9ULUZPVU5EXV0pCi1kbmwKLWRubCBAc3VtbWFyeSBmaWd1cmUgb3V0IGhvdyB0
byBidWlsZCBDIHByb2dyYW1zIHVzaW5nIFBPU0lYIHRocmVhZHMKLWRubAotZG5sIFRoaXMgbWFj
cm8gZmlndXJlcyBvdXQgaG93IHRvIGJ1aWxkIEMgcHJvZ3JhbXMgdXNpbmcgUE9TSVggdGhyZWFk
cy4KLWRubCBJdCBzZXRzIHRoZSBQVEhSRUFEX0xJQlMgb3V0cHV0IHZhcmlhYmxlIHRvIHRoZSB0
aHJlYWRzIGxpYnJhcnkgYW5kCi1kbmwgbGlua2VyIGZsYWdzLCBhbmQgdGhlIFBUSFJFQURfQ0ZM
QUdTIG91dHB1dCB2YXJpYWJsZSB0byBhbnkgc3BlY2lhbAotZG5sIEMgY29tcGlsZXIgZmxhZ3Mg
dGhhdCBhcmUgbmVlZGVkLiAoVGhlIHVzZXIgY2FuIGFsc28gZm9yY2UgY2VydGFpbgotZG5sIGNv
bXBpbGVyIGZsYWdzL2xpYnMgdG8gYmUgdGVzdGVkIGJ5IHNldHRpbmcgdGhlc2UgZW52aXJvbm1l
bnQKLWRubCB2YXJpYWJsZXMuKQotZG5sCi1kbmwgQWxzbyBzZXRzIFBUSFJFQURfQ0MgdG8gYW55
IHNwZWNpYWwgQyBjb21waWxlciB0aGF0IGlzIG5lZWRlZCBmb3IKLWRubCBtdWx0aS10aHJlYWRl
ZCBwcm9ncmFtcyAoZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIENDIG90aGVyd2lzZSkuCi1kbmwg
KFRoaXMgaXMgbmVjZXNzYXJ5IG9uIEFJWCB0byB1c2UgdGhlIHNwZWNpYWwgY2NfciBjb21waWxl
ciBhbGlhcy4pCi1kbmwKLWRubCBOT1RFOiBZb3UgYXJlIGFzc3VtZWQgdG8gbm90IG9ubHkgY29t
cGlsZSB5b3VyIHByb2dyYW0gd2l0aCB0aGVzZQotZG5sIGZsYWdzLCBidXQgYWxzbyBsaW5rIGl0
IHdpdGggdGhlbSBhcyB3ZWxsLiBlLmcuIHlvdSBzaG91bGQgbGluawotZG5sIHdpdGggJFBUSFJF
QURfQ0MgJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MgJExERkxBR1MgLi4uICRQVEhSRUFEX0xJQlMK
LWRubCAkTElCUwotZG5sCi1kbmwgSWYgeW91IGFyZSBvbmx5IGJ1aWxkaW5nIHRocmVhZHMgcHJv
Z3JhbXMsIHlvdSBtYXkgd2lzaCB0byB1c2UKLWRubCB0aGVzZSB2YXJpYWJsZXMgaW4geW91ciBk
ZWZhdWx0IExJQlMsIENGTEFHUywgYW5kIENDOgotZG5sCi1kbmwgICAgICAgIExJQlM9IiRQVEhS
RUFEX0xJQlMgJExJQlMiCi1kbmwgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxB
R1MiCi1kbmwgICAgICAgIENDPSIkUFRIUkVBRF9DQyIKLWRubAotZG5sIEluIGFkZGl0aW9uLCBp
ZiB0aGUgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUgdGhyZWFkLWF0dHJpYnV0ZQotZG5sIGNvbnN0
YW50IGhhcyBhIG5vbnN0YW5kYXJkIG5hbWUsIGRlZmluZXMgUFRIUkVBRF9DUkVBVEVfSk9JTkFC
TEUgdG8KLWRubCB0aGF0IG5hbWUgKGUuZy4gUFRIUkVBRF9DUkVBVEVfVU5ERVRBQ0hFRCBvbiBB
SVgpLgotZG5sCi1kbmwgQUNUSU9OLUlGLUZPVU5EIGlzIGEgbGlzdCBvZiBzaGVsbCBjb21tYW5k
cyB0byBydW4gaWYgYSB0aHJlYWRzCi1kbmwgbGlicmFyeSBpcyBmb3VuZCwgYW5kIEFDVElPTi1J
Ri1OT1QtRk9VTkQgaXMgYSBsaXN0IG9mIGNvbW1hbmRzIHRvCi1kbmwgcnVuIGl0IGlmIGl0IGlz
IG5vdCBmb3VuZC4gSWYgQUNUSU9OLUlGLUZPVU5EIGlzIG5vdCBzcGVjaWZpZWQsIHRoZQotZG5s
IGRlZmF1bHQgYWN0aW9uIHdpbGwgZGVmaW5lIEhBVkVfUFRIUkVBRC4KLWRubAotZG5sIFBsZWFz
ZSBsZXQgdGhlIGF1dGhvcnMga25vdyBpZiB0aGlzIG1hY3JvIGZhaWxzIG9uIGFueSBwbGF0Zm9y
bSwgb3IKLWRubCBpZiB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2VzdGlvbnMgb3IgY29tbWVudHMu
IFRoaXMgbWFjcm8gd2FzIGJhc2VkCi1kbmwgb24gd29yayBieSBTR0ogb24gYXV0b2NvbmYgc2Ny
aXB0cyBmb3IgRkZUVyAod3d3LmZmdHcub3JnKSAod2l0aAotZG5sIGhlbHAgZnJvbSBNLiBGcmln
byksIGFzIHdlbGwgYXMgYWNfcHRocmVhZCBhbmQgaGJfcHRocmVhZCBtYWNyb3MKLWRubCBwb3N0
ZWQgYnkgQWxlamFuZHJvIEZvcmVybyBDdWVydm8gdG8gdGhlIGF1dG9jb25mIG1hY3JvIHJlcG9z
aXRvcnkuCi1kbmwgV2UgYXJlIGFsc28gZ3JhdGVmdWwgZm9yIHRoZSBoZWxwZnVsIGZlZWRiYWNr
IG9mIG51bWVyb3VzIHVzZXJzLgotZG5sCi1kbmwgQGNhdGVnb3J5IEluc3RhbGxlZFBhY2thZ2Vz
Ci1kbmwgQGF1dGhvciBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+Ci1k
bmwgQHZlcnNpb24gMjAwNi0wNS0yOQotZG5sIEBsaWNlbnNlIEdQTFdpdGhBQ0V4Y2VwdGlvbgot
ZG5sIAotZG5sIENoZWNrcyBmb3IgR0NDIHNoYXJlZC9wdGhyZWFkIGluY29uc2lzdGVuY3kgYmFz
ZWQgb24gd29yayBieQotZG5sIE1hcmNpbiBPd3NpYW55IDxtYXJjaW5Ab3dzaWFueS5wbD4KLQot
Ci1BQ19ERUZVTihbQUNYX1BUSFJFQURdLCBbCi1BQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9T
VF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotYWN4X3B0aHJlYWRfb2s9bm8KLQotIyBXZSB1
c2VkIHRvIGNoZWNrIGZvciBwdGhyZWFkLmggZmlyc3QsIGJ1dCB0aGlzIGZhaWxzIGlmIHB0aHJl
YWQuaAotIyByZXF1aXJlcyBzcGVjaWFsIGNvbXBpbGVyIGZsYWdzIChlLmcuIG9uIFRydWU2NCBv
ciBTZXF1ZW50KS4KLSMgSXQgZ2V0cyBjaGVja2VkIGZvciBpbiB0aGUgbGluayB0ZXN0IGFueXdh
eS4KLQotIyBGaXJzdCBvZiBhbGwsIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBzZXQgYW55IG9mIHRo
ZSBQVEhSRUFEX0xJQlMsCi0jIGV0Y2V0ZXJhIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kIGlm
IHRocmVhZHMgbGlua2luZyB3b3JrcyB1c2luZwotIyB0aGVtOgotaWYgdGVzdCB4IiRQVEhSRUFE
X0xJQlMkUFRIUkVBRF9DRkxBR1MiICE9IHg7IHRoZW4KLSAgICAgICAgc2F2ZV9DRkxBR1M9IiRD
RkxBR1MiCi0gICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCi0gICAgICAg
IHNhdmVfTElCUz0iJExJQlMiCi0gICAgICAgIExJQlM9IiRQVEhSRUFEX0xJQlMgJExJQlMiCi0g
ICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB0aHJlYWRfam9pbiBpbiBMSUJTPSRQVEhSRUFE
X0xJQlMgd2l0aCBDRkxBR1M9JFBUSFJFQURfQ0ZMQUdTXSkKLSAgICAgICAgQUNfVFJZX0xJTktf
RlVOQyhwdGhyZWFkX2pvaW4sIGFjeF9wdGhyZWFkX29rPXllcykKLSAgICAgICAgQUNfTVNHX1JF
U1VMVCgkYWN4X3B0aHJlYWRfb2spCi0gICAgICAgIGlmIHRlc3QgeCIkYWN4X3B0aHJlYWRfb2si
ID0geG5vOyB0aGVuCi0gICAgICAgICAgICAgICAgUFRIUkVBRF9MSUJTPSIiCi0gICAgICAgICAg
ICAgICAgUFRIUkVBRF9DRkxBR1M9IiIKLSAgICAgICAgZmkKLSAgICAgICAgTElCUz0iJHNhdmVf
TElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi1maQotCi0jIFdlIG11c3QgY2hl
Y2sgZm9yIHRoZSB0aHJlYWRzIGxpYnJhcnkgdW5kZXIgYSBudW1iZXIgb2YgZGlmZmVyZW50Ci0j
IG5hbWVzOyB0aGUgb3JkZXJpbmcgaXMgdmVyeSBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHN5c3Rl
bXMKLSMgKGUuZy4gREVDKSBoYXZlIGJvdGggLWxwdGhyZWFkIGFuZCAtbHB0aHJlYWRzLCB3aGVy
ZSBvbmUgb2YgdGhlCi0jIGxpYnJhcmllcyBpcyBicm9rZW4gKG5vbi1QT1NJWCkuCi0KLSMgQ3Jl
YXRlIGEgbGlzdCBvZiB0aHJlYWQgZmxhZ3MgdG8gdHJ5LiAgSXRlbXMgc3RhcnRpbmcgd2l0aCBh
ICItIiBhcmUKLSMgQyBjb21waWxlciBmbGFncywgYW5kIG90aGVyIGl0ZW1zIGFyZSBsaWJyYXJ5
IG5hbWVzLCBleGNlcHQgZm9yICJub25lIgotIyB3aGljaCBpbmRpY2F0ZXMgdGhhdCB3ZSB0cnkg
d2l0aG91dCBhbnkgZmxhZ3MgYXQgYWxsLCBhbmQgInB0aHJlYWQtY29uZmlnIgotIyB3aGljaCBp
cyBhIHByb2dyYW0gcmV0dXJuaW5nIHRoZSBmbGFncyBmb3IgdGhlIFB0aCBlbXVsYXRpb24gbGli
cmFyeS4KLQotYWN4X3B0aHJlYWRfZmxhZ3M9InB0aHJlYWRzIG5vbmUgLUt0aHJlYWQgLWt0aHJl
YWQgbHRocmVhZCAtcHRocmVhZCAtcHRocmVhZHMgLW10aHJlYWRzIHB0aHJlYWQgLS10aHJlYWQt
c2FmZSAtbXQgcHRocmVhZC1jb25maWciCi0KLSMgVGhlIG9yZGVyaW5nICppcyogKHNvbWV0aW1l
cykgaW1wb3J0YW50LiAgU29tZSBub3RlcyBvbiB0aGUKLSMgaW5kaXZpZHVhbCBpdGVtcyBmb2xs
b3c6Ci0KLSMgcHRocmVhZHM6IEFJWCAobXVzdCBjaGVjayB0aGlzIGJlZm9yZSAtbHB0aHJlYWQp
Ci0jIG5vbmU6IGluIGNhc2UgdGhyZWFkcyBhcmUgaW4gbGliYzsgc2hvdWxkIGJlIHRyaWVkIGJl
Zm9yZSAtS3RocmVhZCBhbmQKLSMgICAgICAgb3RoZXIgY29tcGlsZXIgZmxhZ3MgdG8gcHJldmVu
dCBjb250aW51YWwgY29tcGlsZXIgd2FybmluZ3MKLSMgLUt0aHJlYWQ6IFNlcXVlbnQgKHRocmVh
ZHMgaW4gbGliYywgYnV0IC1LdGhyZWFkIG5lZWRlZCBmb3IgcHRocmVhZC5oKQotIyAta3RocmVh
ZDogRnJlZUJTRCBrZXJuZWwgdGhyZWFkcyAocHJlZmVycmVkIHRvIC1wdGhyZWFkIHNpbmNlIFNN
UC1hYmxlKQotIyBsdGhyZWFkOiBMaW51eFRocmVhZHMgcG9ydCBvbiBGcmVlQlNEIChhbHNvIHBy
ZWZlcnJlZCB0byAtcHRocmVhZCkKLSMgLXB0aHJlYWQ6IExpbnV4L2djYyAoa2VybmVsIHRocmVh
ZHMpLCBCU0QvZ2NjICh1c2VybGFuZCB0aHJlYWRzKQotIyAtcHRocmVhZHM6IFNvbGFyaXMvZ2Nj
Ci0jIC1tdGhyZWFkczogTWluZ3czMi9nY2MsIEx5bngvZ2NjCi0jIC1tdDogU3VuIFdvcmtzaG9w
IEMgKG1heSBvbmx5IGxpbmsgU3VuT1MgdGhyZWFkcyBbLWx0aHJlYWRdLCBidXQgaXQKLSMgICAg
ICBkb2Vzbid0IGh1cnQgdG8gY2hlY2sgc2luY2UgdGhpcyBzb21ldGltZXMgZGVmaW5lcyBwdGhy
ZWFkcyB0b287Ci0jICAgICAgYWxzbyBkZWZpbmVzIC1EX1JFRU5UUkFOVCkKLSMgICAgICAuLi4g
LW10IGlzIGFsc28gdGhlIHB0aHJlYWRzIGZsYWcgZm9yIEhQL2FDQwotIyBwdGhyZWFkOiBMaW51
eCwgZXRjZXRlcmEKLSMgLS10aHJlYWQtc2FmZTogS0FJIEMrKwotIyBwdGhyZWFkLWNvbmZpZzog
dXNlIHB0aHJlYWQtY29uZmlnIHByb2dyYW0gKGZvciBHTlUgUHRoIGxpYnJhcnkpCi0KLWNhc2Ug
IiR7aG9zdF9jcHV9LSR7aG9zdF9vc30iIGluCi0gICAgICAgICpzb2xhcmlzKikKLQotICAgICAg
ICAjIE9uIFNvbGFyaXMgKGF0IGxlYXN0LCBmb3Igc29tZSB2ZXJzaW9ucyksIGxpYmMgY29udGFp
bnMgc3R1YmJlZAotICAgICAgICAjIChub24tZnVuY3Rpb25hbCkgdmVyc2lvbnMgb2YgdGhlIHB0
aHJlYWRzIHJvdXRpbmVzLCBzbyBsaW5rLWJhc2VkCi0gICAgICAgICMgdGVzdHMgd2lsbCBlcnJv
bmVvdXNseSBzdWNjZWVkLiAgKFdlIG5lZWQgdG8gbGluayB3aXRoIC1wdGhyZWFkcy8tbXQvCi0g
ICAgICAgICMgLWxwdGhyZWFkLikgIChUaGUgc3R1YnMgYXJlIG1pc3NpbmcgcHRocmVhZF9jbGVh
bnVwX3B1c2gsIG9yIHJhdGhlcgotICAgICAgICAjIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoaXMg
bWFjcm8sIHNvIHdlIGNvdWxkIGNoZWNrIGZvciB0aGF0LCBidXQKLSAgICAgICAgIyB3aG8ga25v
d3Mgd2hldGhlciB0aGV5J2xsIHN0dWIgdGhhdCB0b28gaW4gYSBmdXR1cmUgbGliYy4pICBTbywK
LSAgICAgICAgIyB3ZSdsbCBqdXN0IGxvb2sgZm9yIC1wdGhyZWFkcyBhbmQgLWxwdGhyZWFkIGZp
cnN0OgotCi0gICAgICAgIGFjeF9wdGhyZWFkX2ZsYWdzPSItcHRocmVhZHMgcHRocmVhZCAtbXQg
LXB0aHJlYWQgJGFjeF9wdGhyZWFkX2ZsYWdzIgotICAgICAgICA7OwotZXNhYwotCi1pZiB0ZXN0
IHgiJGFjeF9wdGhyZWFkX29rIiA9IHhubzsgdGhlbgotZm9yIGZsYWcgaW4gJGFjeF9wdGhyZWFk
X2ZsYWdzOyBkbwotCi0gICAgICAgIGNhc2UgJGZsYWcgaW4KLSAgICAgICAgICAgICAgICBub25l
KQotICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBwdGhyZWFkcyB3b3Jr
IHdpdGhvdXQgYW55IGZsYWdzXSkKLSAgICAgICAgICAgICAgICA7OwotCi0gICAgICAgICAgICAg
ICAgLSopCi0gICAgICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHB0aHJlYWRz
IHdvcmsgd2l0aCAkZmxhZ10pCi0gICAgICAgICAgICAgICAgUFRIUkVBRF9DRkxBR1M9IiRmbGFn
IgotICAgICAgICAgICAgICAgIDs7Ci0KLQkJcHRocmVhZC1jb25maWcpCi0JCUFDX0NIRUNLX1BS
T0coYWN4X3B0aHJlYWRfY29uZmlnLCBwdGhyZWFkLWNvbmZpZywgeWVzLCBubykKLQkJaWYgdGVz
dCB4IiRhY3hfcHRocmVhZF9jb25maWciID0geG5vOyB0aGVuIGNvbnRpbnVlOyBmaQotCQlQVEhS
RUFEX0NGTEFHUz0iYHB0aHJlYWQtY29uZmlnIC0tY2ZsYWdzYCIKLQkJUFRIUkVBRF9MSUJTPSJg
cHRocmVhZC1jb25maWcgLS1sZGZsYWdzYCBgcHRocmVhZC1jb25maWcgLS1saWJzYCIKLQkJOzsK
LQotICAgICAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtm
b3IgdGhlIHB0aHJlYWRzIGxpYnJhcnkgLWwkZmxhZ10pCi0gICAgICAgICAgICAgICAgUFRIUkVB
RF9MSUJTPSItbCRmbGFnIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLQotICAg
ICAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAg
ICAgICAgTElCUz0iJFBUSFJFQURfTElCUyAkTElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdT
ICRQVEhSRUFEX0NGTEFHUyIKLQotICAgICAgICAjIENoZWNrIGZvciB2YXJpb3VzIGZ1bmN0aW9u
cy4gIFdlIG11c3QgaW5jbHVkZSBwdGhyZWFkLmgsCi0gICAgICAgICMgc2luY2Ugc29tZSBmdW5j
dGlvbnMgbWF5IGJlIG1hY3Jvcy4gIChPbiB0aGUgU2VxdWVudCwgd2UKLSAgICAgICAgIyBuZWVk
IGEgc3BlY2lhbCBmbGFnIC1LdGhyZWFkIHRvIG1ha2UgdGhpcyBoZWFkZXIgY29tcGlsZS4pCi0g
ICAgICAgICMgV2UgY2hlY2sgZm9yIHB0aHJlYWRfam9pbiBiZWNhdXNlIGl0IGlzIGluIC1scHRo
cmVhZCBvbiBJUklYCi0gICAgICAgICMgd2hpbGUgcHRocmVhZF9jcmVhdGUgaXMgaW4gbGliYy4g
IFdlIGNoZWNrIGZvciBwdGhyZWFkX2F0dHJfaW5pdAotICAgICAgICAjIGR1ZSB0byBERUMgY3Jh
emluZXNzIHdpdGggLWxwdGhyZWFkcy4gIFdlIGNoZWNrIGZvcgotICAgICAgICAjIHB0aHJlYWRf
Y2xlYW51cF9wdXNoIGJlY2F1c2UgaXQgaXMgb25lIG9mIHRoZSBmZXcgcHRocmVhZAotICAgICAg
ICAjIGZ1bmN0aW9ucyBvbiBTb2xhcmlzIHRoYXQgZG9lc24ndCBoYXZlIGEgbm9uLWZ1bmN0aW9u
YWwgbGliYyBzdHViLgotICAgICAgICAjIFdlIHRyeSBwdGhyZWFkX2NyZWF0ZSBvbiBnZW5lcmFs
IHByaW5jaXBsZXMuCi0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0s
Ci0gICAgICAgICAgICAgICAgICAgIFtwdGhyZWFkX3QgdGg7IHB0aHJlYWRfam9pbih0aCwgMCk7
Ci0gICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfaW5pdCgwKTsgcHRocmVhZF9jbGVh
bnVwX3B1c2goMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2NyZWF0ZSgwLDAs
MCwwKTsgcHRocmVhZF9jbGVhbnVwX3BvcCgwKTsgXSwKLSAgICAgICAgICAgICAgICAgICAgW2Fj
eF9wdGhyZWFkX29rPXllc10pCi0KLSAgICAgICAgTElCUz0iJHNhdmVfTElCUyIKLSAgICAgICAg
Q0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi0KLSAgICAgICAgQUNfTVNHX1JFU1VMVCgkYWN4X3B0aHJl
YWRfb2spCi0gICAgICAgIGlmIHRlc3QgIngkYWN4X3B0aHJlYWRfb2siID0geHllczsgdGhlbgot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBmaQotCi0gICAgICAgIFBUSFJFQURfTElC
Uz0iIgotICAgICAgICBQVEhSRUFEX0NGTEFHUz0iIgotZG9uZQotZmkKLQotIyBWYXJpb3VzIG90
aGVyIGNoZWNrczoKLWlmIHRlc3QgIngkYWN4X3B0aHJlYWRfb2siID0geHllczsgdGhlbgotICAg
ICAgICBzYXZlX0xJQlM9IiRMSUJTIgotICAgICAgICBMSUJTPSIkUFRIUkVBRF9MSUJTICRMSUJT
IgotICAgICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdT
ICRQVEhSRUFEX0NGTEFHUyIKLQotICAgICAgICAjIERldGVjdCBBSVggbG9zc2FnZTogSk9JTkFC
TEUgYXR0cmlidXRlIGlzIGNhbGxlZCBVTkRFVEFDSEVELgotCUFDX01TR19DSEVDS0lORyhbZm9y
IGpvaW5hYmxlIHB0aHJlYWQgYXR0cmlidXRlXSkKLQlhdHRyX25hbWU9dW5rbm93bgotCWZvciBh
dHRyIGluIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFIFBUSFJFQURfQ1JFQVRFX1VOREVUQUNIRUQ7
IGRvCi0JICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sIFtpbnQgYXR0cj0k
YXR0cjsgcmV0dXJuIGF0dHI7XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyX25hbWU9
JGF0dHI7IGJyZWFrXSkKLQlkb25lCi0gICAgICAgIEFDX01TR19SRVNVTFQoJGF0dHJfbmFtZSkK
LSAgICAgICAgaWYgdGVzdCAiJGF0dHJfbmFtZSIgIT0gUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEU7
IHRoZW4KLSAgICAgICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChQVEhSRUFEX0NSRUFURV9KT0lO
QUJMRSwgJGF0dHJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5l
IHRvIG5lY2Vzc2FyeSBzeW1ib2wgaWYgdGhpcyBjb25zdGFudAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VzIGEgbm9uLXN0YW5kYXJkIG5hbWUgb24geW91ciBzeXN0ZW0uXSkK
LSAgICAgICAgZmkKLQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIG1vcmUgc3BlY2lhbCBm
bGFncyBhcmUgcmVxdWlyZWQgZm9yIHB0aHJlYWRzXSkKLSAgICAgICAgZmxhZz1ubwotICAgICAg
ICBjYXNlICIke2hvc3RfY3B1fS0ke2hvc3Rfb3N9IiBpbgotICAgICAgICAgICAgKi1haXgqIHwg
Ki1mcmVlYnNkKiB8ICotZGFyd2luKikgZmxhZz0iLURfVEhSRUFEX1NBRkUiOzsKLSAgICAgICAg
ICAgICpzb2xhcmlzKiB8ICotb3NmKiB8ICotaHB1eCopIGZsYWc9Ii1EX1JFRU5UUkFOVCI7Owot
ICAgICAgICBlc2FjCi0gICAgICAgIEFDX01TR19SRVNVTFQoJHtmbGFnfSkKLSAgICAgICAgaWYg
dGVzdCAieCRmbGFnIiAhPSB4bm87IHRoZW4KLSAgICAgICAgICAgIFBUSFJFQURfQ0ZMQUdTPSIk
ZmxhZyAkUFRIUkVBRF9DRkxBR1MiCi0gICAgICAgIGZpCi0KLSAgICAgICAgTElCUz0iJHNhdmVf
TElCUyIKLSAgICAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCi0gICAgICAgICMgTW9yZSBBSVgg
bG9zc2FnZTogbXVzdCBjb21waWxlIHdpdGggeGxjX3Igb3IgY2NfcgotCWlmIHRlc3QgeCIkR0ND
IiAhPSB4eWVzOyB0aGVuCi0gICAgICAgICAgQUNfQ0hFQ0tfUFJPR1MoUFRIUkVBRF9DQywgeGxj
X3IgY2NfciwgJHtDQ30pCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBQVEhSRUFEX0NDPSRDQwot
CWZpCi0KLQkjIFRoZSBuZXh0IHBhcnQgdHJpZXMgdG8gZGV0ZWN0IEdDQyBpbmNvbnNpc3RlbmN5
IHdpdGggLXNoYXJlZCBvbiBzb21lCi0JIyBhcmNoaXRlY3R1cmVzIGFuZCBzeXN0ZW1zLiBUaGUg
cHJvYmxlbSBpcyB0aGF0IGluIGNlcnRhaW4KLQkjIGNvbmZpZ3VyYXRpb25zLCB3aGVuIC1zaGFy
ZWQgaXMgc3BlY2lmaWVkLCBHQ0MgImZvcmdldHMiIHRvCi0JIyBpbnRlcm5hbGx5IHVzZSB2YXJp
b3VzIGZsYWdzIHdoaWNoIGFyZSBzdGlsbCBuZWNlc3NhcnkuCi0JCi0JIwotCSMgUHJlcGFyZSB0
aGUgZmxhZ3MKLQkjCi0Jc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0Jc2F2ZV9MSUJTPSIkTElCUyIK
LQlzYXZlX0NDPSIkQ0MiCi0JCi0JIyBUcnkgd2l0aCB0aGUgZmxhZ3MgZGV0ZXJtaW5lZCBieSB0
aGUgZWFybGllciBjaGVja3MuCi0JIwotCSMgLVdsLC16LGRlZnMgZm9yY2VzIGxpbmstdGltZSBz
eW1ib2wgcmVzb2x1dGlvbiwgc28gdGhhdCB0aGUKLQkjIGxpbmtpbmcgY2hlY2tzIHdpdGggLXNo
YXJlZCBhY3R1YWxseSBoYXZlIGFueSB2YWx1ZQotCSMKLQkjIEZJWE1FOiAtZlBJQyBpcyByZXF1
aXJlZCBmb3IgLXNoYXJlZCBvbiBtYW55IGFyY2hpdGVjdHVyZXMsCi0JIyBzbyB3ZSBzcGVjaWZ5
IGl0IGhlcmUsIGJ1dCB0aGUgcmlnaHQgd2F5IHdvdWxkIHByb2JhYmx5IGJlIHRvCi0JIyBwcm9w
ZXJseSBkZXRlY3Qgd2hldGhlciBpdCBpcyBhY3R1YWxseSByZXF1aXJlZC4KLQlDRkxBR1M9Ii1z
aGFyZWQgLWZQSUMgLVdsLC16LGRlZnMgJENGTEFHUyAkUFRIUkVBRF9DRkxBR1MiCi0JTElCUz0i
JFBUSFJFQURfTElCUyAkTElCUyIKLQlDQz0iJFBUSFJFQURfQ0MiCi0JCi0JIyBJbiBvcmRlciBu
b3QgdG8gY3JlYXRlIHNldmVyYWwgbGV2ZWxzIG9mIGluZGVudGF0aW9uLCB3ZSB0ZXN0Ci0JIyB0
aGUgdmFsdWUgb2YgIiRkb25lIiB1bnRpbCB3ZSBmaW5kIHRoZSBjdXJlIG9yIHJ1biBvdXQgb2Yg
aWRlYXMuCi0JZG9uZT0ibm8iCi0JCi0JIyBGaXJzdCwgbWFrZSBzdXJlIHRoZSBDRkxBR1Mgd2Ug
YWRkZWQgYXJlIGFjdHVhbGx5IGFjY2VwdGVkIGJ5IG91cgotCSMgY29tcGlsZXIuICBJZiBub3Qg
KGFuZCBPUyBYJ3MgbGQsIGZvciBpbnN0YW5jZSwgZG9lcyBub3QgYWNjZXB0IC16KSwKLQkjIHRo
ZW4gd2UgY2FuJ3QgZG8gdGhpcyB0ZXN0LgotCWlmIHRlc3QgeCIkZG9uZSIgPSB4bm87IHRoZW4K
LQkgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gY2hlY2sgZm9yIEdDQyBwdGhyZWFkL3No
YXJlZCBpbmNvbnNpc3RlbmNpZXNdKQotCSAgIEFDX1RSWV9MSU5LKCwsICwgW2RvbmU9eWVzXSkK
LQkKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllcyA7IHRoZW4KLQkgICAgICBBQ19NU0dfUkVT
VUxUKFtub10pCi0JICAgZWxzZQotCSAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0JICAgZmkK
LQlmaQotCQotCWlmIHRlc3QgeCIkZG9uZSIgPSB4bm87IHRoZW4KLQkgICBBQ19NU0dfQ0hFQ0tJ
TkcoW3doZXRoZXIgLXB0aHJlYWQgaXMgc3VmZmljaWVudCB3aXRoIC1zaGFyZWRdKQotCSAgIEFD
X1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0JICAgICAgW3B0aHJlYWRfdCB0aDsg
cHRocmVhZF9qb2luKHRoLCAwKTsKLQkgICAgICBwdGhyZWFkX2F0dHJfaW5pdCgwKTsgcHRocmVh
ZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAgcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7IHB0
aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCi0JICAgICAgW2RvbmU9eWVzXSkKLQkgICAKLQkgICBp
ZiB0ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgotCSAgICAgIEFDX01TR19SRVNVTFQoW3llc10p
Ci0JICAgZWxzZQotCSAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKLQkgICBmaQotCWZpCi0JCi0J
IwotCSMgTGludXggZ2NjIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcyBzdWNoIGFzIG1pcHMvbWlwc2Vs
IGZvcmdldHMKLQkjIGFib3V0IC1scHRocmVhZAotCSMKLQlpZiB0ZXN0IHgiJGRvbmUiID0geG5v
OyB0aGVuCi0JICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1scHRocmVhZCBmaXhlcyB0aGF0
XSkKLQkgICBMSUJTPSItbHB0aHJlYWQgJFBUSFJFQURfTElCUyAkc2F2ZV9MSUJTIgotCSAgIEFD
X1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0JICAgICAgW3B0aHJlYWRfdCB0aDsg
cHRocmVhZF9qb2luKHRoLCAwKTsKLQkgICAgICBwdGhyZWFkX2F0dHJfaW5pdCgwKTsgcHRocmVh
ZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAgcHRocmVhZF9jcmVhdGUoMCwwLDAsMCk7IHB0
aHJlYWRfY2xlYW51cF9wb3AoMCk7IF0sCi0JICAgICAgW2RvbmU9eWVzXSkKLQkKLQkgICBpZiB0
ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgotCSAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0J
ICAgICAgUFRIUkVBRF9MSUJTPSItbHB0aHJlYWQgJFBUSFJFQURfTElCUyIKLQkgICBlbHNlCi0J
ICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotCSAgIGZpCi0JZmkKLQkjCi0JIyBGcmVlQlNEIDQu
MTAgZ2NjIGZvcmdldHMgdG8gdXNlIC1sY19yIGluc3RlYWQgb2YgLWxjCi0JIwotCWlmIHRlc3Qg
eCIkZG9uZSIgPSB4bm87IHRoZW4KLQkgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjX3Ig
Zml4ZXMgdGhhdF0pCi0JICAgTElCUz0iLWxjX3IgJFBUSFJFQURfTElCUyAkc2F2ZV9MSUJTIgot
CSAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8cHRocmVhZC5oPl0sCi0JICAgICAgIFtwdGhyZWFk
X3QgdGg7IHB0aHJlYWRfam9pbih0aCwgMCk7Ci0JICAgICAgICBwdGhyZWFkX2F0dHJfaW5pdCgw
KTsgcHRocmVhZF9jbGVhbnVwX3B1c2goMCwgMCk7Ci0JICAgICAgICBwdGhyZWFkX2NyZWF0ZSgw
LDAsMCwwKTsgcHRocmVhZF9jbGVhbnVwX3BvcCgwKTsgXSwKLQkgICAgICAgW2RvbmU9eWVzXSkK
LQkKLQkgICBpZiB0ZXN0ICJ4JGRvbmUiID0geHllczsgdGhlbgotCSAgICAgIEFDX01TR19SRVNV
TFQoW3llc10pCi0JICAgICAgUFRIUkVBRF9MSUJTPSItbGNfciAkUFRIUkVBRF9MSUJTIgotCSAg
IGVsc2UKLQkgICAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0JICAgZmkKLQlmaQotCWlmIHRlc3Qg
eCIkZG9uZSIgPSB4bm87IHRoZW4KLQkgICAjIE9LLCB3ZSBoYXZlIHJ1biBvdXQgb2YgaWRlYXMK
LQkgICBBQ19NU0dfV0FSTihbSW1wb3NzaWJsZSB0byBkZXRlcm1pbmUgaG93IHRvIHVzZSBwdGhy
ZWFkcyB3aXRoIHNoYXJlZCBsaWJyYXJpZXNdKQotCQotCSAgICMgc28gaXQncyBub3Qgc2FmZSB0
byBhc3N1bWUgdGhhdCB3ZSBtYXkgdXNlIHB0aHJlYWRzCi0JICAgYWN4X3B0aHJlYWRfb2s9bm8K
LQlmaQotCQotCUNGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotCUxJQlM9IiRzYXZlX0xJQlMiCi0JQ0M9
IiRzYXZlX0NDIgotZWxzZQotICAgICAgICBQVEhSRUFEX0NDPSIkQ0MiCi1maQotCi1BQ19TVUJT
VChQVEhSRUFEX0xJQlMpCi1BQ19TVUJTVChQVEhSRUFEX0NGTEFHUykKLUFDX1NVQlNUKFBUSFJF
QURfQ0MpCi0KLSMgRmluYWxseSwgZXhlY3V0ZSBBQ1RJT04tSUYtRk9VTkQvQUNUSU9OLUlGLU5P
VC1GT1VORDoKLWlmIHRlc3QgeCIkYWN4X3B0aHJlYWRfb2siID0geHllczsgdGhlbgotICAgICAg
ICBpZmVsc2UoWyQxXSwsQUNfREVGSU5FKEhBVkVfUFRIUkVBRCwxLFtEZWZpbmUgaWYgeW91IGhh
dmUgUE9TSVggdGhyZWFkcyBsaWJyYXJpZXMgYW5kIGhlYWRlciBmaWxlcy5dKSxbJDFdKQotICAg
ICAgICA6Ci1lbHNlCi0gICAgICAgIGFjeF9wdGhyZWFkX29rPW5vCi0gICAgICAgICQyCi1maQot
QUNfTEFOR19SRVNUT1JFCi1dKWRubCBBQ1hfUFRIUkVBRApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvbTQvZ3Rlc3QubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tNC9ndGVzdC5tNApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjU5OGJhNzVhNGQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvbTQvZ3Rlc3QubTQKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1kbmwgR1RFU1Rf
TElCX0NIRUNLKFttaW5pbXVtIHZlcnNpb24gWywKLWRubCAgICAgICAgICAgICAgICAgIGFjdGlv
biBpZiBmb3VuZCBbLGFjdGlvbiBpZiBub3QgZm91bmRdXV0pCi1kbmwKLWRubCBDaGVjayBmb3Ig
dGhlIHByZXNlbmNlIG9mIHRoZSBHb29nbGUgVGVzdCBsaWJyYXJ5LCBvcHRpb25hbGx5IGF0IGEg
bWluaW11bQotZG5sIHZlcnNpb24sIGFuZCBpbmRpY2F0ZSBhIHZpYWJsZSB2ZXJzaW9uIHdpdGgg
dGhlIEhBVkVfR1RFU1QgZmxhZy4gSXQgZGVmaW5lcwotZG5sIHN0YW5kYXJkIHZhcmlhYmxlcyBm
b3Igc3Vic3RpdHV0aW9uIGluY2x1ZGluZyBHVEVTVF9DUFBGTEFHUywKLWRubCBHVEVTVF9DWFhG
TEFHUywgR1RFU1RfTERGTEFHUywgYW5kIEdURVNUX0xJQlMuIEl0IGFsc28gZGVmaW5lcwotZG5s
IEdURVNUX1ZFUlNJT04gYXMgdGhlIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QgZm91bmQuIEZpbmFs
bHksIGl0IHByb3ZpZGVzCi1kbmwgb3B0aW9uYWwgY3VzdG9tIGFjdGlvbiBzbG90cyBpbiB0aGUg
ZXZlbnQgR1RFU1QgaXMgZm91bmQgb3Igbm90LgotQUNfREVGVU4oW0dURVNUX0xJQl9DSEVDS10s
Ci1bCi1kbmwgUHJvdmlkZSBhIGZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgR29vZ2xlIFRlc3Qg
dXNhZ2UuCi1BQ19BUkdfRU5BQkxFKFtndGVzdF0sCi0gIFtBU19IRUxQX1NUUklORyhbLS1lbmFi
bGUtZ3Rlc3RdLAotICAgICAgICAgICAgICAgICAgW0VuYWJsZSB0ZXN0cyB1c2luZyB0aGUgR29v
Z2xlIEMrKyBUZXN0aW5nIEZyYW1ld29yay4KLSAgICAgICAgICAgICAgICAgIChEZWZhdWx0IGlz
IGVuYWJsZWQuKV0pXSwKLSAgW10sCi0gIFtlbmFibGVfZ3Rlc3Q9XSkKLUFDX0FSR19WQVIoW0dU
RVNUX0NPTkZJR10sCi0gICAgICAgICAgIFtUaGUgZXhhY3QgcGF0aCBvZiBHb29nbGUgVGVzdCdz
ICdndGVzdC1jb25maWcnIHNjcmlwdC5dKQotQUNfQVJHX1ZBUihbR1RFU1RfQ1BQRkxBR1NdLAot
ICAgICAgICAgICBbQy1saWtlIHByZXByb2Nlc3NvciBmbGFncyBmb3IgR29vZ2xlIFRlc3QuXSkK
LUFDX0FSR19WQVIoW0dURVNUX0NYWEZMQUdTXSwKLSAgICAgICAgICAgW0MrKyBjb21waWxlIGZs
YWdzIGZvciBHb29nbGUgVGVzdC5dKQotQUNfQVJHX1ZBUihbR1RFU1RfTERGTEFHU10sCi0gICAg
ICAgICAgIFtMaW5rZXIgcGF0aCBhbmQgb3B0aW9uIGZsYWdzIGZvciBHb29nbGUgVGVzdC5dKQot
QUNfQVJHX1ZBUihbR1RFU1RfTElCU10sCi0gICAgICAgICAgIFtMaWJyYXJ5IGxpbmtpbmcgZmxh
Z3MgZm9yIEdvb2dsZSBUZXN0Ll0pCi1BQ19BUkdfVkFSKFtHVEVTVF9WRVJTSU9OXSwKLSAgICAg
ICAgICAgW1RoZSB2ZXJzaW9uIG9mIEdvb2dsZSBUZXN0IGF2YWlsYWJsZS5dKQotSEFWRV9HVEVT
VD0ibm8iCi1BU19JRihbdGVzdCAieCR7ZW5hYmxlX2d0ZXN0fSIgIT0gInhubyJdLAotICBbQUNf
TVNHX0NIRUNLSU5HKFtmb3IgJ2d0ZXN0LWNvbmZpZyddKQotICAgQVNfSUYoW3Rlc3QgIngke2Vu
YWJsZV9ndGVzdH0iICE9ICJ4eWVzIl0sCi0gICAgIFtBU19JRihbdGVzdCAteCAiJHtlbmFibGVf
Z3Rlc3R9L3NjcmlwdHMvZ3Rlc3QtY29uZmlnIl0sCi0gICAgICAgIFtHVEVTVF9DT05GSUc9IiR7
ZW5hYmxlX2d0ZXN0fS9zY3JpcHRzL2d0ZXN0LWNvbmZpZyJdLAotICAgICAgICBbR1RFU1RfQ09O
RklHPSIke2VuYWJsZV9ndGVzdH0vYmluL2d0ZXN0LWNvbmZpZyJdKQotICAgICAgQVNfSUYoW3Rl
c3QgLXggIiR7R1RFU1RfQ09ORklHfSJdLCBbXSwKLSAgICAgICAgW0FDX01TR19SRVNVTFQoW25v
XSkKLSAgICAgICAgIEFDX01TR19FUlJPUihbZG5sCi1VbmFibGUgdG8gbG9jYXRlIGVpdGhlciBh
IGJ1aWx0IG9yIGluc3RhbGxlZCBHb29nbGUgVGVzdC4KLVRoZSBzcGVjaWZpYyBsb2NhdGlvbiAn
JHtlbmFibGVfZ3Rlc3R9JyB3YXMgcHJvdmlkZWQgZm9yIGEgYnVpbHQgb3IgaW5zdGFsbGVkCi1H
b29nbGUgVGVzdCwgYnV0IG5vICdndGVzdC1jb25maWcnIHNjcmlwdCBjb3VsZCBiZSBmb3VuZCBh
dCB0aGlzIGxvY2F0aW9uLl0pCi0gICAgICAgICBdKV0sCi0gICAgIFtBQ19QQVRIX1BST0coW0dU
RVNUX0NPTkZJR10sIFtndGVzdC1jb25maWddKV0pCi0gICBBU19JRihbdGVzdCAteCAiJHtHVEVT
VF9DT05GSUd9Il0sCi0gICAgIFtBQ19NU0dfUkVTVUxUKFske0dURVNUX0NPTkZJR31dKQotICAg
ICAgbTRfaWZ2YWwoWyQxXSwKLSAgICAgICAgW19ndGVzdF9taW5fdmVyc2lvbj0iLS1taW4tdmVy
c2lvbj0kMSIKLSAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIEdvb2dsZSBUZXN0IGF0IGxl
YXN0IHZlcnNpb24gPj0gJDFdKV0sCi0gICAgICAgIFtfZ3Rlc3RfbWluX3ZlcnNpb249Ii0tbWlu
LXZlcnNpb249MCIKLSAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIEdvb2dsZSBUZXN0XSld
KQotICAgICAgQVNfSUYoWyR7R1RFU1RfQ09ORklHfSAke19ndGVzdF9taW5fdmVyc2lvbn1dLAot
ICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICAgIEhBVkVfR1RFU1Q9J3llcydd
LAotICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pXSwKLSAgICAgW0FDX01TR19SRVNVTFQo
W25vXSldKQotICAgQVNfSUYoW3Rlc3QgIngke0hBVkVfR1RFU1R9IiA9ICJ4eWVzIl0sCi0gICAg
IFtHVEVTVF9DUFBGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3BwZmxhZ3NgCi0gICAgICBHVEVT
VF9DWFhGTEFHUz1gJHtHVEVTVF9DT05GSUd9IC0tY3h4ZmxhZ3NgCi0gICAgICBHVEVTVF9MREZM
QUdTPWAke0dURVNUX0NPTkZJR30gLS1sZGZsYWdzYAotICAgICAgR1RFU1RfTElCUz1gJHtHVEVT
VF9DT05GSUd9IC0tbGlic2AKLSAgICAgIEdURVNUX1ZFUlNJT049YCR7R1RFU1RfQ09ORklHfSAt
LXZlcnNpb25gCi0gICAgICBBQ19ERUZJTkUoW0hBVkVfR1RFU1RdLFsxXSxbRGVmaW5lZCB3aGVu
IEdvb2dsZSBUZXN0IGlzIGF2YWlsYWJsZS5dKV0sCi0gICAgIFtBU19JRihbdGVzdCAieCR7ZW5h
YmxlX2d0ZXN0fSIgPSAieHllcyJdLAotICAgICAgICBbQUNfTVNHX0VSUk9SKFtkbmwKLUdvb2ds
ZSBUZXN0IHdhcyBlbmFibGVkLCBidXQgbm8gdmlhYmxlIHZlcnNpb24gY291bGQgYmUgZm91bmQu
XSkKLSAgICAgICAgIF0pXSldKQotQUNfU1VCU1QoW0hBVkVfR1RFU1RdKQotQU1fQ09ORElUSU9O
QUwoW0hBVkVfR1RFU1RdLFt0ZXN0ICJ4JEhBVkVfR1RFU1QiID0gInh5ZXMiXSkKLUFTX0lGKFt0
ZXN0ICJ4JEhBVkVfR1RFU1QiID0gInh5ZXMiXSwKLSAgW200X2lmdmFsKFskMl0sIFskMl0pXSwK
LSAgW200X2lmdmFsKFskM10sIFskM10pXSkKLV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9t
YWtlL01ha2VmaWxlIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbWFrZS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOWFjNzQ0OTNiYTU1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvbWFrZS9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLSMgQSBzYW1w
bGUgTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIEdvb2dsZSBUZXN0IGFuZCB1c2luZyBpdCBpbiB1c2Vy
Ci0jIHRlc3RzLiAgUGxlYXNlIHR3ZWFrIGl0IHRvIHN1aXQgeW91ciBlbnZpcm9ubWVudCBhbmQg
cHJvamVjdC4gIFlvdQotIyBtYXkgd2FudCB0byBtb3ZlIGl0IHRvIHlvdXIgcHJvamVjdCdzIHJv
b3QgZGlyZWN0b3J5LgotIwotIyBTWU5PUFNJUzoKLSMKLSMgICBtYWtlIFthbGxdICAtIG1ha2Vz
IGV2ZXJ5dGhpbmcuCi0jICAgbWFrZSBUQVJHRVQgLSBtYWtlcyB0aGUgZ2l2ZW4gdGFyZ2V0Lgot
IyAgIG1ha2UgY2xlYW4gIC0gcmVtb3ZlcyBhbGwgZmlsZXMgZ2VuZXJhdGVkIGJ5IG1ha2UuCi0K
LSMgUGxlYXNlIHR3ZWFrIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgZGVmaW5pdGlvbnMgYXMgbmVl
ZGVkIGJ5IHlvdXIKLSMgcHJvamVjdCwgZXhjZXB0IEdURVNUX0hFQURFUlMsIHdoaWNoIHlvdSBj
YW4gdXNlIGluIHlvdXIgb3duIHRhcmdldHMKLSMgYnV0IHNob3VsZG4ndCBtb2RpZnkuCi0KLSMg
UG9pbnRzIHRvIHRoZSByb290IG9mIEdvb2dsZSBUZXN0LCByZWxhdGl2ZSB0byB3aGVyZSB0aGlz
IGZpbGUgaXMuCi0jIFJlbWVtYmVyIHRvIHR3ZWFrIHRoaXMgaWYgeW91IG1vdmUgdGhpcyBmaWxl
LgotR1RFU1RfRElSID0gLi4KLQotIyBXaGVyZSB0byBmaW5kIHVzZXIgY29kZS4KLVVTRVJfRElS
ID0gLi4vc2FtcGxlcwotCi0jIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJvY2Vzc29yLgotIyBT
ZXQgR29vZ2xlIFRlc3QncyBoZWFkZXIgZGlyZWN0b3J5IGFzIGEgc3lzdGVtIGRpcmVjdG9yeSwg
c3VjaCB0aGF0Ci0jIHRoZSBjb21waWxlciBkb2Vzbid0IGdlbmVyYXRlIHdhcm5pbmdzIGluIEdv
b2dsZSBUZXN0IGhlYWRlcnMuCi1DUFBGTEFHUyArPSAtaXN5c3RlbSAkKEdURVNUX0RJUikvaW5j
bHVkZQotCi0jIEZsYWdzIHBhc3NlZCB0byB0aGUgQysrIGNvbXBpbGVyLgotQ1hYRkxBR1MgKz0g
LWcgLVdhbGwgLVdleHRyYSAtcHRocmVhZAotCi0jIEFsbCB0ZXN0cyBwcm9kdWNlZCBieSB0aGlz
IE1ha2VmaWxlLiAgUmVtZW1iZXIgdG8gYWRkIG5ldyB0ZXN0cyB5b3UKLSMgY3JlYXRlZCB0byB0
aGUgbGlzdC4KLVRFU1RTID0gc2FtcGxlMV91bml0dGVzdAotCi0jIEFsbCBHb29nbGUgVGVzdCBo
ZWFkZXJzLiAgVXN1YWxseSB5b3Ugc2hvdWxkbid0IGNoYW5nZSB0aGlzCi0jIGRlZmluaXRpb24u
Ci1HVEVTVF9IRUFERVJTID0gJChHVEVTVF9ESVIpL2luY2x1ZGUvZ3Rlc3QvKi5oIFwKLSAgICAg
ICAgICAgICAgICAkKEdURVNUX0RJUikvaW5jbHVkZS9ndGVzdC9pbnRlcm5hbC8qLmgKLQotIyBI
b3VzZS1rZWVwaW5nIGJ1aWxkIHRhcmdldHMuCi0KLWFsbCA6ICQoVEVTVFMpCi0KLWNsZWFuIDoK
LQlybSAtZiAkKFRFU1RTKSBndGVzdC5hIGd0ZXN0X21haW4uYSAqLm8KLQotIyBCdWlsZHMgZ3Rl
c3QuYSBhbmQgZ3Rlc3RfbWFpbi5hLgotCi0jIFVzdWFsbHkgeW91IHNob3VsZG4ndCB0d2VhayBz
dWNoIGludGVybmFsIHZhcmlhYmxlcywgaW5kaWNhdGVkIGJ5IGEKLSMgdHJhaWxpbmcgXy4KLUdU
RVNUX1NSQ1NfID0gJChHVEVTVF9ESVIpL3NyYy8qLmNjICQoR1RFU1RfRElSKS9zcmMvKi5oICQo
R1RFU1RfSEVBREVSUykKLQotIyBGb3Igc2ltcGxpY2l0eSBhbmQgdG8gYXZvaWQgZGVwZW5kaW5n
IG9uIEdvb2dsZSBUZXN0J3MKLSMgaW1wbGVtZW50YXRpb24gZGV0YWlscywgdGhlIGRlcGVuZGVu
Y2llcyBzcGVjaWZpZWQgYmVsb3cgYXJlCi0jIGNvbnNlcnZhdGl2ZSBhbmQgbm90IG9wdGltaXpl
ZC4gIFRoaXMgaXMgZmluZSBhcyBHb29nbGUgVGVzdAotIyBjb21waWxlcyBmYXN0IGFuZCBmb3Ig
b3JkaW5hcnkgdXNlcnMgaXRzIHNvdXJjZSByYXJlbHkgY2hhbmdlcy4KLWd0ZXN0LWFsbC5vIDog
JChHVEVTVF9TUkNTXykKLQkkKENYWCkgJChDUFBGTEFHUykgLUkkKEdURVNUX0RJUikgJChDWFhG
TEFHUykgLWMgXAotICAgICAgICAgICAgJChHVEVTVF9ESVIpL3NyYy9ndGVzdC1hbGwuY2MKLQot
Z3Rlc3RfbWFpbi5vIDogJChHVEVTVF9TUkNTXykKLQkkKENYWCkgJChDUFBGTEFHUykgLUkkKEdU
RVNUX0RJUikgJChDWFhGTEFHUykgLWMgXAotICAgICAgICAgICAgJChHVEVTVF9ESVIpL3NyYy9n
dGVzdF9tYWluLmNjCi0KLWd0ZXN0LmEgOiBndGVzdC1hbGwubwotCSQoQVIpICQoQVJGTEFHUykg
JEAgJF4KLQotZ3Rlc3RfbWFpbi5hIDogZ3Rlc3QtYWxsLm8gZ3Rlc3RfbWFpbi5vCi0JJChBUikg
JChBUkZMQUdTKSAkQCAkXgotCi0jIEJ1aWxkcyBhIHNhbXBsZSB0ZXN0LiAgQSB0ZXN0IHNob3Vs
ZCBsaW5rIHdpdGggZWl0aGVyIGd0ZXN0LmEgb3IKLSMgZ3Rlc3RfbWFpbi5hLCBkZXBlbmRpbmcg
b24gd2hldGhlciBpdCBkZWZpbmVzIGl0cyBvd24gbWFpbigpCi0jIGZ1bmN0aW9uLgotCi1zYW1w
bGUxLm8gOiAkKFVTRVJfRElSKS9zYW1wbGUxLmNjICQoVVNFUl9ESVIpL3NhbXBsZTEuaCAkKEdU
RVNUX0hFQURFUlMpCi0JJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoVVNFUl9E
SVIpL3NhbXBsZTEuY2MKLQotc2FtcGxlMV91bml0dGVzdC5vIDogJChVU0VSX0RJUikvc2FtcGxl
MV91bml0dGVzdC5jYyBcCi0gICAgICAgICAgICAgICAgICAgICAkKFVTRVJfRElSKS9zYW1wbGUx
LmggJChHVEVTVF9IRUFERVJTKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAtYyAk
KFVTRVJfRElSKS9zYW1wbGUxX3VuaXR0ZXN0LmNjCi0KLXNhbXBsZTFfdW5pdHRlc3QgOiBzYW1w
bGUxLm8gc2FtcGxlMV91bml0dGVzdC5vIGd0ZXN0X21haW4uYQotCSQoQ1hYKSAkKENQUEZMQUdT
KSAkKENYWEZMQUdTKSAtbHB0aHJlYWQgJF4gLW8gJEAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L21zdmMvZ3Rlc3QtbWQuc2xuIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdC1tZC5zbG4KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOWI0MDE5YWUzYS4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNp
b24gOC4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0i
KSA9ICJndGVzdC1tZCIsICJndGVzdC1tZC52Y3Byb2oiLCAie0M4RjZDMTcyLTU2RjItNEU3Ni1C
NUZBLUMzQjQyM0IzMUJFOH0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykg
PSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7
OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X21haW4tbWQi
LCAiZ3Rlc3RfbWFpbi1tZC52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVE
OTg2MjAzM30iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJv
amVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgt
OEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3Byb2RfdGVzdC1tZCIsICJn
dGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIiwgInsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRE
NDlCQzNFQ0J9IgotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFBy
b2plY3QKLQlFbmRQcm9qZWN0U2VjdGlvbgotRW5kUHJvamVjdAotUHJvamVjdCgiezhCQzlDRUI4
LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdF91bml0dGVzdC1tZCIsICJn
dGVzdF91bml0dGVzdC1tZC52Y3Byb2oiLCAiezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUw
RUQ0ODFBMn0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJv
amVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0
aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgotCQlEZWJ1ZyA9IERlYnVn
Ci0JCVJlbGVhc2UgPSBSZWxlYXNlCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24o
UHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCi0JCXtDOEY2QzE3Mi01NkYyLTRF
NzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXtD
OEY2QzE3Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTh9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1
Z3xXaW4zMgotCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fS5SZWxlYXNl
LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMz
QjQyM0IzMUJFOH0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7M0FGNTRDOEEt
MTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4z
MgotCQl7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfS5EZWJ1Zy5CdWlsZC4w
ID0gRGVidWd8V2luMzIKLQkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzM30u
UmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXszQUY1NEM4QS0xMEJGLTQzMzIt
OTE0Ny1GNjhFRDk4NjIwMzN9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJezI0
ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVi
dWd8V2luMzIKLQkJezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQn0uRGVidWcu
QnVpbGQuMCA9IERlYnVnfFdpbjMyCi0JCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlC
QzNFQ0J9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7MjQ4NDg1NTEtRUY0
Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNCfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMy
Ci0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9LkRlYnVnLkFjdGl2ZUNm
ZyA9IERlYnVnfFdpbjMyCi0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9
LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0Mt
RjRFRTBFRDQ4MUEyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezREOUZE
RkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFz
ZXxXaW4zMgotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlH
bG9iYWxzKSA9IHBvc3RTb2x1dGlvbgotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9u
KEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCi0JRW5kR2xvYmFsU2VjdGlvbgot
RW5kR2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LW1kLnZjcHJvaiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3QtbWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxYzE0OTZjY2JmMGMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3Zj
L2d0ZXN0LW1kLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi08P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9q
ZWN0Ci0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0iNy4xMCIKLQlOYW1lPSJn
dGVzdC1tZCIKLQlQcm9qZWN0R1VJRD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFOH0iCi0JS2V5d29yZD0iV2luMzJQcm9qIj4KLQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0K
LQkJCU5hbWU9IldpbjMyIi8+Ci0JPC9QbGF0Zm9ybXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8
Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9
IiQoU29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURp
cmVjdG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9
IjQiCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiCi0JCQlSZWZlcmVuY2VzUGF0aD0iIj4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJ
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfTElCIgotCQkJCU1pbmltYWxS
ZWJ1aWxkPSJUUlVFIgotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGli
cmFyeT0iMyIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9
IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVp
bGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJCQlPdXRw
dXRGaWxlPSIkKE91dERpcikvZ3Rlc3RkLmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01J
RExUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3Vy
Y2VDb21waWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlH
ZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRv
b2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wi
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRv
clRvb2wiLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0i
UmVsZWFzZXxXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29u
ZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQ
cm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0i
MiIKLQkJCVJlZmVyZW5jZXNQYXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1
b3Q7Ij4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19MSUIiCi0JCQkJUnVudGltZUxpYnJhcnk9
IjIiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgot
CQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkJT3V0cHV0Rmls
ZT0iJChPdXREaXIpL2d0ZXN0LmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQcmVMaW5rRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21w
aWxlclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0
b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wi
Lz4KLQkJPC9Db25maWd1cmF0aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+
Ci0JPC9SZWZlcmVuY2VzPgotCTxGaWxlcz4KLQkJPEZpbHRlcgotCQkJTmFtZT0iU291cmNlIEZp
bGVzIgotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIK
LQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEy
RkZ9Ij4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4K
LQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8
VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4K
LQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIj4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90
OzsmcXVvdDsuLlxpbmNsdWRlJnF1b3Q7Ii8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJ
CTwvRmlsZT4KLQkJPC9GaWx0ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIK
LQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmll
cj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4K
LQk8L0ZpbGVzPgotCTxHbG9iYWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVj
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3Quc2xuIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
bXN2Yy9ndGVzdC5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYjI5Mjk2NDlm
Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3Quc2xuCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24g
RmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMAotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04
RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJndGVzdCIsICJndGVzdC52Y3Byb2oiLCAie0M4RjZDMTcy
LTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERl
cGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0
Ci1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0
ZXN0X21haW4iLCAiZ3Rlc3RfbWFpbi52Y3Byb2oiLCAiezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3
LUY2OEVEOTg2MjAzMn0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBw
b3N0UHJvamVjdAotCUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1Qcm9qZWN0KCJ7OEJD
OUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImd0ZXN0X3VuaXR0ZXN0Iiwg
Imd0ZXN0X3VuaXR0ZXN0LnZjcHJvaiIsICJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBF
RDQ4MUExfSIKLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9q
ZWN0Ci0JRW5kUHJvamVjdFNlY3Rpb24KLUVuZFByb2plY3QKLVByb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZ3Rlc3RfcHJvZF90ZXN0IiwgImd0ZXN0
X3Byb2RfdGVzdC52Y3Byb2oiLCAiezI0ODQ4NTUxLUVGNEYtNDdFOC05QTlELUVBNEQ0OUJDM0VD
QX0iCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAot
CUVuZFByb2plY3RTZWN0aW9uCi1FbmRQcm9qZWN0Ci1HbG9iYWwKLQlHbG9iYWxTZWN0aW9uKFNv
bHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgotCQlEZWJ1ZyA9IERlYnVnCi0JCVJl
bGVhc2UgPSBSZWxlYXNlCi0JRW5kR2xvYmFsU2VjdGlvbgotCUdsb2JhbFNlY3Rpb24oUHJvamVj
dENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCi0JCXtDOEY2QzE3Mi01NkYyLTRFNzYtQjVG
QS1DM0I0MjNCMzFCRTd9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCi0JCXtDOEY2QzE3
Mi01NkYyLTRFNzYtQjVGQS1DM0I0MjNCMzFCRTd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4z
MgotCQl7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU3fS5SZWxlYXNlLkFjdGl2
ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJe0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0Iz
MUJFN30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgotCQl7M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgotCQl7
M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfS5EZWJ1Zy5CdWlsZC4wID0gRGVi
dWd8V2luMzIKLQkJezNBRjU0QzhBLTEwQkYtNDMzMi05MTQ3LUY2OEVEOTg2MjAzMn0uUmVsZWFz
ZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCi0JCXszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1G
NjhFRDk4NjIwMzJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKLQkJezREOUZERkI1
LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzIKLQkJezREOUZERkI1LTk4NkEtNDEzOS04MjNDLUY0RUUwRUQ0ODFBMX0uRGVidWcuQnVpbGQu
MCA9IERlYnVnfFdpbjMyCi0JCXs0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTF9
LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgotCQl7NEQ5RkRGQjUtOTg2QS00MTM5
LTgyM0MtRjRFRTBFRDQ4MUExfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCi0JCXsy
NDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVnLkFjdGl2ZUNmZyA9IERl
YnVnfFdpbjMyCi0JCXsyNDg0ODU1MS1FRjRGLTQ3RTgtOUE5RC1FQTRENDlCQzNFQ0F9LkRlYnVn
LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgotCQl7MjQ4NDg1NTEtRUY0Ri00N0U4LTlBOUQtRUE0RDQ5
QkMzRUNBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKLQkJezI0ODQ4NTUxLUVG
NEYtNDdFOC05QTlELUVBNEQ0OUJDM0VDQX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4z
MgotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxz
KSA9IHBvc3RTb2x1dGlvbgotCUVuZEdsb2JhbFNlY3Rpb24KLQlHbG9iYWxTZWN0aW9uKEV4dGVu
c2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCi0JRW5kR2xvYmFsU2VjdGlvbgotRW5kR2xv
YmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnZjcHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L21zdmMvZ3Rlc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDll
N2UwOWVhN2UuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0LnZjcHJv
agorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0Ci0JUHJvamVjdFR5
cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0iNy4xMCIKLQlOYW1lPSJndGVzdCIKLQlQcm9qZWN0
R1VJRD0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZBLUMzQjQyM0IzMUJFN30iCi0JS2V5d29yZD0i
V2luMzJQcm9qIj4KLQk8UGxhdGZvcm1zPgotCQk8UGxhdGZvcm0KLQkJCU5hbWU9IldpbjMyIi8+
Ci0JPC9QbGF0Zm9ybXM+Ci0JPENvbmZpZ3VyYXRpb25zPgotCQk8Q29uZmlndXJhdGlvbgotCQkJ
TmFtZT0iRGVidWd8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8k
KENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIp
LyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlDaGFyYWN0ZXJT
ZXQ9IjIiCi0JCQlSZWZlcmVuY2VzUGF0aD0iIj4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKLQkJCQlPcHRpbWl6YXRpb249IjAiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5p
dGlvbnM9IldJTjMyO19ERUJVRztfTElCIgotCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIgotCQkJ
CUJhc2ljUnVudGltZUNoZWNrcz0iMyIKLQkJCQlSdW50aW1lTGlicmFyeT0iNSIKLQkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRC
aXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PSI0Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikv
Z3Rlc3RkLmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZl
bnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25m
aWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJ
CU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgot
CQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlD
b25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0iMiIKLQkJCVJlZmVyZW5jZXNQ
YXRoPSImcXVvdDsuLlxpbmNsdWRlJnF1b3Q7OyZxdW90Oy4uJnF1b3Q7Ij4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0i
V0lOMzI7TkRFQlVHO19MSUIiCi0JCQkJUnVudGltZUxpYnJhcnk9IjQiCi0JCQkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9y
dGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0
LmxpYiIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJl
QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0
aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JPC9SZWZlcmVuY2VzPgot
CTxGaWxlcz4KLQkJPEZpbHRlcgotCQkJTmFtZT0iU291cmNlIEZpbGVzIgotCQkJRmlsdGVyPSJj
cHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKLQkJCVVuaXF1ZUlkZW50aWZp
ZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KLQkJCTxGaWxlCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNcZ3Rlc3QtYWxsLmNjIj4KLQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZx
dW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiLz4KLQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
Ij4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxpbmNsdWRl
JnF1b3Q7Ii8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJPC9GaWx0
ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKLQkJCUZpbHRlcj0iaDtocHA7
aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQt
NGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxHbG9i
YWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L21zdmMvZ3Rlc3RfbWFpbi1tZC52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0
ZXN0X21haW4tbWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDA5NTZj
ZDNkMjYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X21haW4tbWQu
dmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb2plY3QKLQlQcm9q
ZWN0VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI3LjEwIgotCU5hbWU9Imd0ZXN0X21haW4t
bWQiCi0JUHJvamVjdEdVSUQ9InszQUY1NEM4QS0xMEJGLTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9
IgotCUtleXdvcmQ9IldpbjMyUHJvaiI+Ci0JPFBsYXRmb3Jtcz4KLQkJPFBsYXRmb3JtCi0JCQlO
YW1lPSJXaW4zMiIvPgotCTwvUGxhdGZvcm1zPgotCTxDb25maWd1cmF0aW9ucz4KLQkJPENvbmZp
Z3VyYXRpb24KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNv
bHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rv
cnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Igot
CQkJQ2hhcmFjdGVyU2V0PSIyIgotCQkJUmVmZXJlbmNlc1BhdGg9IiI+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVByZXBy
b2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0xJQiIKLQkJCQlNaW5pbWFsUmVidWls
ZD0iVFJVRSIKLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCi0JCQkJUnVudGltZUxpYnJhcnk9
IjMiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgot
CQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iNCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCi0JCQkJT3V0cHV0Rmls
ZT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpZC5saWIiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNNSURMVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIv
PgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jl
c291cmNlQ29tcGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVBy
b3h5R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0
b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5l
cmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQkJPENvbmZpZ3VyYXRpb24KLQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25OYW1lKS8k
KENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChPdXREaXIp
LyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCi0JCQlDaGFyYWN0ZXJT
ZXQ9IjIiCi0JCQlSZWZlcmVuY2VzUGF0aD0iJnF1b3Q7Li5caW5jbHVkZSZxdW90OzsmcXVvdDsu
LiZxdW90OyI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfTElCIgotCQkJCVJ1bnRpbWVMaWJy
YXJ5PSIyIgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0i
MyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVn
SW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWls
ZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgotCQkJCU91dHB1
dEZpbGU9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKS5saWIiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNNSURMVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q1Jlc291cmNlQ29tcGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2Vydmlj
ZVByb3h5R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5l
cmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0
b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJH
ZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgot
CTxSZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJ
ZGVudGlmaWVyPSJ7QzhGNkMxNzItNTZGMi00RTc2LUI1RkEtQzNCNDIzQjMxQkU4fSIKLQkJCU5h
bWU9Imd0ZXN0LW1kIi8+Ci0JPC9SZWZlcmVuY2VzPgotCTxGaWxlcz4KLQkJPEZpbHRlcgotCQkJ
TmFtZT0iU291cmNlIEZpbGVzIgotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBq
O2JhdDthc207YXNteCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYt
QTA2Ni0yQTMyRDc1MkEyRkZ9Ij4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxzcmNc
Z3Rlc3RfbWFpbi5jYyI+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIj4KLQkJCQkJPFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90OzsmcXVvdDsuLlxp
bmNsdWRlJnF1b3Q7Ii8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIvPgotCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1l
PSJIZWFkZXIgRmlsZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJ
CVVuaXF1ZUlkZW50aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9
Ij4KLQkJPC9GaWx0ZXI+Ci0JPC9GaWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zp
c3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X21h
aW4udmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9tYWluLnZjcHJvagpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTdlOWY0MTc2ODVmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvbXN2Yy9ndGVzdF9tYWluLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDEyOSAr
MCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KLTxW
aXN1YWxTdHVkaW9Qcm9qZWN0Ci0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCi0JVmVyc2lvbj0i
Ny4xMCIKLQlOYW1lPSJndGVzdF9tYWluIgotCVByb2plY3RHVUlEPSJ7M0FGNTRDOEEtMTBCRi00
MzMyLTkxNDctRjY4RUQ5ODYyMDMyfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9y
bXM+Ci0JCTxQbGF0Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29u
ZmlndXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJ
CU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgot
CQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlD
b25maWd1cmF0aW9uVHlwZT0iNCIKLQkJCUNoYXJhY3RlclNldD0iMiIKLQkJCVJlZmVyZW5jZXNQ
YXRoPSIiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCU9wdGlt
aXphdGlvbj0iMCIKLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19M
SUIiCi0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIz
IgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSI1IgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgot
CQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9
IkZBTFNFIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaWJyYXJp
YW5Ub29sIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKWQubGliIi8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2
ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ01h
bmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0F1eGls
aWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgotCQk8L0NvbmZpZ3VyYXRpb24+Ci0J
CTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0
b3J5PSIkKFNvbHV0aW9uTmFtZSkvJChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlh
dGVEaXJlY3Rvcnk9IiQoT3V0RGlyKS8kKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25U
eXBlPSI0IgotCQkJQ2hhcmFjdGVyU2V0PSIyIgotCQkJUmVmZXJlbmNlc1BhdGg9IiZxdW90Oy4u
XGluY2x1ZGUmcXVvdDs7JnF1b3Q7Li4mcXVvdDsiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7
X0xJQiIKLQkJCQlSdW50aW1lTGlicmFyeT0iNCIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2Js
ZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+Ci0JCQk8VG9vbAot
CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGli
cmFyaWFuVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkubGli
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWls
ZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4K
LQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJW
Q01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0F1
eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgotCQk8L0NvbmZpZ3VyYXRpb24+
Ci0JPC9Db25maWd1cmF0aW9ucz4KLQk8UmVmZXJlbmNlcz4KLQkJPFByb2plY3RSZWZlcmVuY2UK
LQkJCVJlZmVyZW5jZWRQcm9qZWN0SWRlbnRpZmllcj0ie0M4RjZDMTcyLTU2RjItNEU3Ni1CNUZB
LUMzQjQyM0IzMUJFN30iCi0JCQlOYW1lPSJndGVzdCIvPgotCTwvUmVmZXJlbmNlcz4KLQk8Rmls
ZXM+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKLQkJCUZpbHRlcj0iY3BwO2M7
Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7
NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3JjXGd0ZXN0X21haW4uY2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgot
CQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVv
dDsiLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJPC9GaWxlPgotCQk8L0ZpbHRlcj4K
LQkJPEZpbHRlcgotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgotCQkJRmlsdGVyPSJoO2hwcDtoeHg7
aG07aW5sO2luYzt4c2QiCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7OTM5OTUzODAtODlCRC00YjA0
LTg4RUItNjI1RkJFNTJFQkZCfSI+Ci0JCTwvRmlsdGVyPgotCTwvRmlsZXM+Ci0JPEdsb2JhbHM+
Ci0JPC9HbG9iYWxzPgotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9n
dGVzdF9wcm9kX3Rlc3QtbWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
MDcxZDI4ZmVkMDEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X3By
b2RfdGVzdC1tZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08VmlzdWFsU3R1ZGlvUHJv
amVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249IjcuMTAiCi0JTmFtZT0i
Z3Rlc3RfcHJvZF90ZXN0LW1kIgotCVByb2plY3RHVUlEPSJ7MjQ4NDg1NTEtRUY0Ri00N0U4LTlB
OUQtRUE0RDQ5QkMzRUNCfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9ybXM+Ci0J
CTxQbGF0Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29uZmlndXJh
dGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCU91dHB1
dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50
ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1
cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCi0JCQkJTWluaW1hbFJlYnVpbGQ9
IlRSVUUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIz
IgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJ
CQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVnSW5mb3Jt
YXRpb25Gb3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wi
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1dEZpbGU9IiQo
T3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QuZXhlIgotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKLQkJ
CQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmls
ZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5wZGIiCi0JCQkJU3ViU3lzdGVtPSIxIgotCQkJ
CVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJl
TGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0
aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKLQkJCU91dHB1
dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50
ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1
cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05E
RUJVRztfQ09OU09MRSIKLQkJCQlSdW50aW1lTGlicmFyeT0iMiIKLQkJCQlVc2VQcmVjb21waWxl
ZEhlYWRlcj0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJp
bGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+Ci0J
CQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5h
bWU9IlZDTGlua2VyVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvZ3Rlc3RfcHJvZF90
ZXN0LmV4ZSIKLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9y
bWF0aW9uPSJUUlVFIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9
IjIiCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2
ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dl
YkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJH
ZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRp
b25zPgotCTxSZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFBy
b2plY3RJZGVudGlmaWVyPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMzfSIK
LQkJCU5hbWU9Imd0ZXN0X21haW4tbWQiLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8
RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7
b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0Yx
LUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
LQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4u
JnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVjb21waWxlZEhlYWRl
cj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVjb21waWxlZEhl
YWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KLQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVD
b25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0Zp
bGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiCi0JCQlG
aWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5
Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVy
PgotCTwvRmlsZXM+Ci0JPEdsb2JhbHM+Ci0JPC9HbG9iYWxzPgotPC9WaXN1YWxTdHVkaW9Qcm9q
ZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9q
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF9wcm9kX3Rlc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5OThjNzU4MDhhMTYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9tc3ZjL2d0ZXN0X3Byb2RfdGVzdC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQg
KzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Ci08
VmlzdWFsU3R1ZGlvUHJvamVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgotCVZlcnNpb249
IjcuMTAiCi0JTmFtZT0iZ3Rlc3RfcHJvZF90ZXN0IgotCVByb2plY3RHVUlEPSJ7MjQ4NDg1NTEt
RUY0Ri00N0U4LTlBOUQtRUE0RDQ5QkMzRUNBfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQ
bGF0Zm9ybXM+Ci0JCTxQbGF0Zm9ybQotCQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4K
LQk8Q29uZmlndXJhdGlvbnM+Ci0JCTxDb25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5h
bWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSki
Ci0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCi0JCQkJTWlu
aW1hbFJlYnVpbGQ9IlRSVUUiCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRp
bWVMaWJyYXJ5PSI1IgotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdM
ZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJ
CURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91
dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVzdF9wcm9kX3Rlc3QuZXhlIgotCQkJCUxpbmtJbmNyZW1l
bnRhbD0iMiIKLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCi0JCQkJUHJvZ3Jh
bURhdGFiYXNlRmlsZT0iJChPdXREaXIpL2d0ZXN0X3Byb2RfdGVzdC5wZGIiCi0JCQkJU3ViU3lz
dGVtPSIxIgotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNN
SURMVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291
cmNlQ29tcGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5
R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JU
b29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KLQkJCTxU
b29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJ
PC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5h
bWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSki
Ci0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9v
bAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKLQkJCQlSdW50aW1lTGlicmFyeT0iNCIKLQkJCQlV
c2VQcmVjb21waWxlZEhlYWRlcj0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCi0JCQkJRGV0ZWN0
NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PSIzIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+Ci0JCQk8
VG9vbAotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikv
Z3Rlc3RfcHJvZF90ZXN0LmV4ZSIKLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJh
dGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6
ZVJlZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRN
YWNoaW5lPSIxIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0i
VkNQcmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVu
dFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgot
CQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJ
CTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxp
YXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8
L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVuY2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJ
UmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVyPSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4
RUQ5ODYyMDMyfSIKLQkJCU5hbWU9Imd0ZXN0X21haW4iLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZp
bGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtj
O2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0i
ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHRlc3RcZ3Rlc3RfcHJvZF90ZXN0LmNjIj4KLQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9
IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVjb21w
aWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxwcm9kdWN0aW9uLmNjIj4KLQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgotCQkJCQk8VG9v
bAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRl
RGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0J
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8
VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0J
CQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
Ci0JCQk8L0ZpbGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmls
ZXMiCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50
aWZpZXI9Ins5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0XHByb2R1Y3Rpb24uaCI+Ci0JCQk8L0ZpbGU+Ci0J
CTwvRmlsdGVyPgotCTwvRmlsZXM+Ci0JPEdsb2JhbHM+Ci0JPC9HbG9iYWxzPgotPC9WaXN1YWxT
dHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF91bml0dGVz
dC1tZC52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9tc3ZjL2d0ZXN0X3VuaXR0ZXN0LW1kLnZjcHJvagpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUyNTkzOTc1MGQ3Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9ndGVzdF91bml0dGVzdC1tZC52Y3Byb2oKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2lu
ZG93cy0xMjUyIj8+Ci08VmlzdWFsU3R1ZGlvUHJvamVjdAotCVByb2plY3RUeXBlPSJWaXN1YWwg
QysrIgotCVZlcnNpb249IjcuMTAiCi0JTmFtZT0iZ3Rlc3RfdW5pdHRlc3QtbWQiCi0JUHJvamVj
dEdVSUQ9Ins0RDlGREZCNS05ODZBLTQxMzktODIzQy1GNEVFMEVENDgxQTJ9IgotCUtleXdvcmQ9
IldpbjMyUHJvaiI+Ci0JPFBsYXRmb3Jtcz4KLQkJPFBsYXRmb3JtCi0JCQlOYW1lPSJXaW4zMiIv
PgotCTwvUGxhdGZvcm1zPgotCTxDb25maWd1cmF0aW9ucz4KLQkJPENvbmZpZ3VyYXRpb24KLQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uTmFtZSkv
JChDb25maWd1cmF0aW9uTmFtZSkiCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoT3V0RGly
KS8kKFByb2plY3ROYW1lKSIKLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgotCQkJQ2hhcmFjdGVy
U2V0PSIyIj4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlPcHRp
bWl6YXRpb249IjAiCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztf
Q09OU09MRSIKLQkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKLQkJCQlCYXNpY1J1bnRpbWVDaGVj
a3M9IjMiCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjMiCi0JCQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9i
bGVtcz0iRkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPgotCQkJPFRvb2wK
LQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xp
bmtlclRvb2wiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LmV4ZSIK
LQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJU
UlVFIgotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9ndGVzdF91bml0dGVzdC5w
ZGIiCi0JCQkJU3ViU3lzdGVtPSIxIgotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWls
ZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJ
CQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZD
V2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hN
TERhdGFHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVu
dFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRv
b2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVy
YXRvclRvb2wiLz4KLQkJPC9Db25maWd1cmF0aW9uPgotCQk8Q29uZmlndXJhdGlvbgotCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbk5hbWUpLyQo
Q29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKE91dERpcikv
JChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKLQkJCUNoYXJhY3RlclNl
dD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKLQkJCQlSdW50aW1lTGli
cmFyeT0iMiIKLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMyIKLQkJCQlXYXJuaW5nTGV2ZWw9
IjMiCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSIKLQkJCQlEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ3VzdG9tQnVp
bGRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKLQkJCQlPdXRwdXRG
aWxlPSIkKE91dERpcikvZ3Rlc3RfdW5pdHRlc3QuZXhlIgotCQkJCUxpbmtJbmNyZW1lbnRhbD0i
MSIKLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCi0JCQkJU3ViU3lzdGVtPSIx
IgotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiIKLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIy
IgotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNNSURMVG9v
bCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgotCQkJPFRv
b2wKLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9
IlZDUHJlTGlua0V2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29t
cGlsZXJUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJh
dG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KLQkJCTxUb29sCi0J
CQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KLQkJPC9Db25m
aWd1cmF0aW9uPgotCTwvQ29uZmlndXJhdGlvbnM+Ci0JPFJlZmVyZW5jZXM+Ci0JCTxQcm9qZWN0
UmVmZXJlbmNlCi0JCQlSZWZlcmVuY2VkUHJvamVjdElkZW50aWZpZXI9InszQUY1NEM4QS0xMEJG
LTQzMzItOTE0Ny1GNjhFRDk4NjIwMzN9IgotCQkJTmFtZT0iZ3Rlc3RfbWFpbi1tZCIvPgotCTwv
UmVmZXJlbmNlcz4KLQk8RmlsZXM+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyIK
LQkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiCi0JCQlV
bmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+
Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdFxndGVzdF91bml0dGVzdC5jYyI+
Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KLQkJCQkJ
PFRvb2wKLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQlPcHRpbWl6YXRpb249
IjEiCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLiZxdW90Ozsm
cXVvdDsuLlxpbmNsdWRlJnF1b3Q7IgotCQkJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgotCQkJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCi0JCQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0
PSIzIi8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
LQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVh
ZGVyPSIwIi8+Ci0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCTwvRmlsZT4KLQkJPC9GaWx0
ZXI+Ci0JCTxGaWx0ZXIKLQkJCU5hbWU9IkhlYWRlciBGaWxlcyIKLQkJCUZpbHRlcj0iaDtocHA7
aHh4O2htO2lubDtpbmM7eHNkIgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQt
NGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iPgotCQk8L0ZpbHRlcj4KLQk8L0ZpbGVzPgotCTxHbG9i
YWxzPgotCTwvR2xvYmFscz4KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRlc3QudmNwcm9qIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvbXN2Yy9n
dGVzdF91bml0dGVzdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMmQ3
NDM0NTcxMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L21zdmMvZ3Rlc3RfdW5pdHRl
c3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgotPFZpc3VhbFN0dWRpb1Byb2plY3QKLQlQ
cm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKLQlWZXJzaW9uPSI3LjEwIgotCU5hbWU9Imd0ZXN0X3Vu
aXR0ZXN0IgotCVByb2plY3RHVUlEPSJ7NEQ5RkRGQjUtOTg2QS00MTM5LTgyM0MtRjRFRTBFRDQ4
MUExfSIKLQlLZXl3b3JkPSJXaW4zMlByb2oiPgotCTxQbGF0Zm9ybXM+Ci0JCTxQbGF0Zm9ybQot
CQkJTmFtZT0iV2luMzIiLz4KLQk8L1BsYXRmb3Jtcz4KLQk8Q29uZmlndXJhdGlvbnM+Ci0JCTxD
b25maWd1cmF0aW9uCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCU91dHB1dERpcmVjdG9yeT0i
JChTb2x1dGlvbk5hbWUpLyQoQ29uZmlndXJhdGlvbk5hbWUpIgotCQkJSW50ZXJtZWRpYXRlRGly
ZWN0b3J5PSIkKE91dERpcikvJChQcm9qZWN0TmFtZSkiCi0JCQlDb25maWd1cmF0aW9uVHlwZT0i
MSIKLQkJCUNoYXJhY3RlclNldD0iMiI+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCi0JCQkJT3B0aW1pemF0aW9uPSIwIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25z
PSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiCi0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiCi0JCQkJ
QmFzaWNSdW50aW1lQ2hlY2tzPSIzIgotCQkJCVJ1bnRpbWVMaWJyYXJ5PSI1IgotCQkJCVVzZVBy
ZWNvbXBpbGVkSGVhZGVyPSIzIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKLQkJCQlEZXRlY3Q2NEJp
dFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIgotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9
IjQiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIgotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9ndGVz
dF91bml0dGVzdC5leGUiCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIgotCQkJCUdlbmVyYXRlRGVi
dWdJbmZvcm1hdGlvbj0iVFJVRSIKLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikv
Z3Rlc3RfdW5pdHRlc3QucGRiIgotCQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlUYXJnZXRNYWNoaW5l
PSIxIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJ
TmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVC
dWlsZEV2ZW50VG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wi
Lz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRv
b2wKLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29s
Ci0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1l
PSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdy
YXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFu
YWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQkJPENvbmZp
Z3VyYXRpb24KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQo
U29sdXRpb25OYW1lKS8kKENvbmZpZ3VyYXRpb25OYW1lKSIKLQkJCUludGVybWVkaWF0ZURpcmVj
dG9yeT0iJChPdXREaXIpLyQoUHJvamVjdE5hbWUpIgotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEi
Ci0JCQlDaGFyYWN0ZXJTZXQ9IjIiPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUi
Ci0JCQkJUnVudGltZUxpYnJhcnk9IjQiCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjMiCi0J
CQkJV2FybmluZ0xldmVsPSIzIgotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0i
RkFMU0UiCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJPFRvb2wKLQkJCQlO
YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ0xpbmtlclRv
b2wiCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL2d0ZXN0X3VuaXR0ZXN0LmV4ZSIKLQkJCQlM
aW5rSW5jcmVtZW50YWw9IjEiCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgot
CQkJCVN1YlN5c3RlbT0iMSIKLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCi0JCQkJRW5hYmxl
Q09NREFURm9sZGluZz0iMiIKLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+Ci0JCQk8VG9vbAotCQkJ
CU5hbWU9IlZDTUlETFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVu
dFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgotCQkJ
PFRvb2wKLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFt
ZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYlNl
cnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KLQkJCTxUb29sCi0JCQkJTmFtZT0iVkNYTUxEYXRh
R2VuZXJhdG9yVG9vbCIvPgotCQkJPFRvb2wKLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29s
Ii8+Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+
Ci0JCQk8VG9vbAotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JU
b29sIi8+Ci0JCTwvQ29uZmlndXJhdGlvbj4KLQk8L0NvbmZpZ3VyYXRpb25zPgotCTxSZWZlcmVu
Y2VzPgotCQk8UHJvamVjdFJlZmVyZW5jZQotCQkJUmVmZXJlbmNlZFByb2plY3RJZGVudGlmaWVy
PSJ7M0FGNTRDOEEtMTBCRi00MzMyLTkxNDctRjY4RUQ5ODYyMDMyfSIKLQkJCU5hbWU9Imd0ZXN0
X21haW4iLz4KLQk8L1JlZmVyZW5jZXM+Ci0JPEZpbGVzPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJT
b3VyY2UgRmlsZXMiCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2Fz
bTthc214IgotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJB
MzJENzUyQTJGRn0iPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RcZ3Rlc3Rf
dW5pdHRlc3QuY2MiPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiI+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJ
T3B0aW1pemF0aW9uPSIxIgotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1
b3Q7Li4mcXVvdDs7JnF1b3Q7Li5caW5jbHVkZSZxdW90OyIKLQkJCQkJCUJhc2ljUnVudGltZUNo
ZWNrcz0iMCIKLQkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCQkJRGVidWdJbmZv
cm1hdGlvbkZvcm1hdD0iMyIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVD
b25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPgotCQkJCQk8VG9vbAotCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90Oy4uJnF1b3Q7OyZxdW90Oy4uXGluY2x1ZGUmcXVvdDsiCi0JCQkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0Zp
bGU+Ci0JCTwvRmlsdGVyPgotCQk8RmlsdGVyCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiCi0JCQlG
aWx0ZXI9Img7aHBwO2h4eDtobTtpbmw7aW5jO3hzZCIKLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins5
Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9Ij4KLQkJPC9GaWx0ZXI+Ci0JPC9G
aWxlcz4KLQk8R2xvYmFscz4KLQk8L0dsb2JhbHM+Ci08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3ByaW1lX3RhYmxlcy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc2FtcGxlcy9wcmltZV90YWJsZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTJjZTE2YTAxNDRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9wcmlt
ZV90YWJsZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgot
Ly8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUu
Y29tIChaaGFueW9uZyBXYW4pCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9z
ZXYpCi0KLS8vIFRoaXMgcHJvdmlkZXMgaW50ZXJmYWNlIFByaW1lVGFibGUgdGhhdCBkZXRlcm1p
bmVzIHdoZXRoZXIgYSBudW1iZXIgaXMgYQotLy8gcHJpbWUgYW5kIGRldGVybWluZXMgYSBuZXh0
IHByaW1lIG51bWJlci4gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZAotLy8gaW4gR29vZ2xlIFRlc3Qg
c2FtcGxlcyBkZW1vbnN0cmF0aW5nIHVzZSBvZiBwYXJhbWV0ZXJpemVkIHRlc3RzLgotCi0jaWZu
ZGVmIEdURVNUX1NBTVBMRVNfUFJJTUVfVEFCTEVTX0hfCi0jZGVmaW5lIEdURVNUX1NBTVBMRVNf
UFJJTUVfVEFCTEVTX0hfCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLS8vIFRoZSBwcmltZSB0
YWJsZSBpbnRlcmZhY2UuCi1jbGFzcyBQcmltZVRhYmxlIHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwg
flByaW1lVGFibGUoKSB7fQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgbiBpcyBhIHByaW1lIG51
bWJlci4KLSAgdmlydHVhbCBib29sIElzUHJpbWUoaW50IG4pIGNvbnN0ID0gMDsKLQotICAvLyBS
ZXR1cm5zIHRoZSBzbWFsbGVzdCBwcmltZSBudW1iZXIgZ3JlYXRlciB0aGFuIHA7IG9yIHJldHVy
bnMgLTEKLSAgLy8gaWYgdGhlIG5leHQgcHJpbWUgaXMgYmV5b25kIHRoZSBjYXBhY2l0eSBvZiB0
aGUgdGFibGUuCi0gIHZpcnR1YWwgaW50IEdldE5leHRQcmltZShpbnQgcCkgY29uc3QgPSAwOwot
fTsKLQotLy8gSW1wbGVtZW50YXRpb24gIzEgY2FsY3VsYXRlcyB0aGUgcHJpbWVzIG9uLXRoZS1m
bHkuCi1jbGFzcyBPblRoZUZseVByaW1lVGFibGUgOiBwdWJsaWMgUHJpbWVUYWJsZSB7Ci0gcHVi
bGljOgotICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQgbikgY29uc3QgewotICAgIGlmIChuIDw9
IDEpIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoaW50IGkgPSAyOyBpKmkgPD0gbjsgaSsrKSB7
Ci0gICAgICAvLyBuIGlzIGRpdmlzaWJsZSBieSBhbiBpbnRlZ2VyIG90aGVyIHRoYW4gMSBhbmQg
aXRzZWxmLgotICAgICAgaWYgKChuICUgaSkgPT0gMCkgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgdmlydHVhbCBpbnQgR2V0TmV4dFByaW1lKGludCBw
KSBjb25zdCB7Ci0gICAgZm9yIChpbnQgbiA9IHAgKyAxOyBuID4gMDsgbisrKSB7Ci0gICAgICBp
ZiAoSXNQcmltZShuKSkgcmV0dXJuIG47Ci0gICAgfQotCi0gICAgcmV0dXJuIC0xOwotICB9Ci19
OwotCi0vLyBJbXBsZW1lbnRhdGlvbiAjMiBwcmUtY2FsY3VsYXRlcyB0aGUgcHJpbWVzIGFuZCBz
dG9yZXMgdGhlIHJlc3VsdAotLy8gaW4gYW4gYXJyYXkuCi1jbGFzcyBQcmVDYWxjdWxhdGVkUHJp
bWVUYWJsZSA6IHB1YmxpYyBQcmltZVRhYmxlIHsKLSBwdWJsaWM6Ci0gIC8vICdtYXgnIHNwZWNp
ZmllcyB0aGUgbWF4aW11bSBudW1iZXIgdGhlIHByaW1lIHRhYmxlIGhvbGRzLgotICBleHBsaWNp
dCBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZShpbnQgbWF4KQotICAgICAgOiBpc19wcmltZV9zaXpl
XyhtYXggKyAxKSwgaXNfcHJpbWVfKG5ldyBib29sW21heCArIDFdKSB7Ci0gICAgQ2FsY3VsYXRl
UHJpbWVzVXBUbyhtYXgpOwotICB9Ci0gIHZpcnR1YWwgflByZUNhbGN1bGF0ZWRQcmltZVRhYmxl
KCkgeyBkZWxldGVbXSBpc19wcmltZV87IH0KLQotICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQg
bikgY29uc3QgewotICAgIHJldHVybiAwIDw9IG4gJiYgbiA8IGlzX3ByaW1lX3NpemVfICYmIGlz
X3ByaW1lX1tuXTsKLSAgfQotCi0gIHZpcnR1YWwgaW50IEdldE5leHRQcmltZShpbnQgcCkgY29u
c3QgewotICAgIGZvciAoaW50IG4gPSBwICsgMTsgbiA8IGlzX3ByaW1lX3NpemVfOyBuKyspIHsK
LSAgICAgIGlmIChpc19wcmltZV9bbl0pIHJldHVybiBuOwotICAgIH0KLQotICAgIHJldHVybiAt
MTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgdm9pZCBDYWxjdWxhdGVQcmltZXNVcFRvKGludCBtYXgp
IHsKLSAgICA6OnN0ZDo6ZmlsbChpc19wcmltZV8sIGlzX3ByaW1lXyArIGlzX3ByaW1lX3NpemVf
LCB0cnVlKTsKLSAgICBpc19wcmltZV9bMF0gPSBpc19wcmltZV9bMV0gPSBmYWxzZTsKLQotICAg
IGZvciAoaW50IGkgPSAyOyBpIDw9IG1heDsgaSsrKSB7Ci0gICAgICBpZiAoIWlzX3ByaW1lX1tp
XSkgY29udGludWU7Ci0KLSAgICAgIC8vIE1hcmtzIGFsbCBtdWx0aXBsZXMgb2YgaSAoZXhjZXB0
IGkgaXRzZWxmKSBhcyBub24tcHJpbWUuCi0gICAgICBmb3IgKGludCBqID0gMippOyBqIDw9IG1h
eDsgaiArPSBpKSB7Ci0gICAgICAgIGlzX3ByaW1lX1tqXSA9IGZhbHNlOwotICAgICAgfQotICAg
IH0KLSAgfQotCi0gIGNvbnN0IGludCBpc19wcmltZV9zaXplXzsKLSAgYm9vbCogY29uc3QgaXNf
cHJpbWVfOwotCi0gIC8vIERpc2FibGVzIGNvbXBpbGVyIHdhcm5pbmcgImFzc2lnbm1lbnQgb3Bl
cmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4iCi0gIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFBy
ZUNhbGN1bGF0ZWRQcmltZVRhYmxlJiByaHMpOwotfTsKLQotI2VuZGlmICAvLyBHVEVTVF9TQU1Q
TEVTX1BSSU1FX1RBQkxFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1w
bGUxLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxLmNjCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMTcxZTI2MDlkMjUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zYW1wbGVzL3NhbXBsZTEuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyBD
b3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3Ry
aWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHBy
b2dyYW0gZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUg
InNhbXBsZTEuaCIKLQotLy8gUmV0dXJucyBuISAodGhlIGZhY3RvcmlhbCBvZiBuKS4gIEZvciBu
ZWdhdGl2ZSBuLCBuISBpcyBkZWZpbmVkIHRvIGJlIDEuCi1pbnQgRmFjdG9yaWFsKGludCBuKSB7
Ci0gIGludCByZXN1bHQgPSAxOwotICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKLSAg
ICByZXN1bHQgKj0gaTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIFJldHVybnMg
dHJ1ZSBpZmYgbiBpcyBhIHByaW1lIG51bWJlci4KLWJvb2wgSXNQcmltZShpbnQgbikgewotICAv
LyBUcml2aWFsIGNhc2UgMTogc21hbGwgbnVtYmVycwotICBpZiAobiA8PSAxKSByZXR1cm4gZmFs
c2U7Ci0KLSAgLy8gVHJpdmlhbCBjYXNlIDI6IGV2ZW4gbnVtYmVycwotICBpZiAobiAlIDIgPT0g
MCkgcmV0dXJuIG4gPT0gMjsKLQotICAvLyBOb3csIHdlIGhhdmUgdGhhdCBuIGlzIG9kZCBhbmQg
biA+PSAzLgotCi0gIC8vIFRyeSB0byBkaXZpZGUgbiBieSBldmVyeSBvZGQgbnVtYmVyIGksIHN0
YXJ0aW5nIGZyb20gMwotICBmb3IgKGludCBpID0gMzsgOyBpICs9IDIpIHsKLSAgICAvLyBXZSBv
bmx5IGhhdmUgdG8gdHJ5IGkgdXAgdG8gdGhlIHNxdXJlIHJvb3Qgb2YgbgotICAgIGlmIChpID4g
bi9pKSBicmVhazsKLQotICAgIC8vIE5vdywgd2UgaGF2ZSBpIDw9IG4vaSA8IG4uCi0gICAgLy8g
SWYgbiBpcyBkaXZpc2libGUgYnkgaSwgbiBpcyBub3QgcHJpbWUuCi0gICAgaWYgKG4gJSBpID09
IDApIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIG4gaGFzIG5vIGludGVnZXIgZmFjdG9yIGlu
IHRoZSByYW5nZSAoMSwgbiksIGFuZCB0aHVzIGlzIHByaW1lLgotICByZXR1cm4gdHJ1ZTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUxLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZmViOThj
NDUwMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJ
bmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0v
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRpbmcgdXNp
bmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1QTEUxX0hf
Ci0jZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFMV9IXwotCi0vLyBSZXR1cm5zIG4hICh0aGUg
ZmFjdG9yaWFsIG9mIG4pLiAgRm9yIG5lZ2F0aXZlIG4sIG4hIGlzIGRlZmluZWQgdG8gYmUgMS4K
LWludCBGYWN0b3JpYWwoaW50IG4pOwotCi0vLyBSZXR1cm5zIHRydWUgaWZmIG4gaXMgYSBwcmlt
ZSBudW1iZXIuCi1ib29sIElzUHJpbWUoaW50IG4pOwotCi0jZW5kaWYgIC8vIEdURVNUX1NBTVBM
RVNfU0FNUExFMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxMF91
bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTFjZDVkY2Q3MS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMTBfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxNDQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0KLS8vIFRo
aXMgc2FtcGxlIHNob3dzIGhvdyB0byB1c2UgR29vZ2xlIFRlc3QgbGlzdGVuZXIgQVBJIHRvIGlt
cGxlbWVudAotLy8gYSBwcmltaXRpdmUgbGVhayBjaGVja2VyLgotCi0jaW5jbHVkZSA8c3RkaW8u
aD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLXVz
aW5nIDo6dGVzdGluZzo6RW1wdHlUZXN0RXZlbnRMaXN0ZW5lcjsKLXVzaW5nIDo6dGVzdGluZzo6
SW5pdEdvb2dsZVRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3Q7Ci11c2luZyA6OnRlc3Rpbmc6
OlRlc3RDYXNlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Ci11c2luZyA6
OnRlc3Rpbmc6OlRlc3RJbmZvOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVz
aW5nIDo6dGVzdGluZzo6VW5pdFRlc3Q7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFdlIHdpbGwgdHJh
Y2sgbWVtb3J5IHVzZWQgYnkgdGhpcyBjbGFzcy4KLWNsYXNzIFdhdGVyIHsKLSBwdWJsaWM6Ci0g
IC8vIE5vcm1hbCBXYXRlciBkZWNsYXJhdGlvbnMgZ28gaGVyZS4KLQotICAvLyBvcGVyYXRvciBu
ZXcgYW5kIG9wZXJhdG9yIGRlbGV0ZSBoZWxwIHVzIGNvbnRyb2wgd2F0ZXIgYWxsb2NhdGlvbi4K
LSAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBhbGxvY2F0aW9uX3NpemUpIHsKLSAgICBhbGxv
Y2F0ZWRfKys7Ci0gICAgcmV0dXJuIG1hbGxvYyhhbGxvY2F0aW9uX3NpemUpOwotICB9Ci0KLSAg
dm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCogYmxvY2ssIHNpemVfdCAvKiBhbGxvY2F0aW9uX3Np
emUgKi8pIHsKLSAgICBhbGxvY2F0ZWRfLS07Ci0gICAgZnJlZShibG9jayk7Ci0gIH0KLQotICBz
dGF0aWMgaW50IGFsbG9jYXRlZCgpIHsgcmV0dXJuIGFsbG9jYXRlZF87IH0KLQotIHByaXZhdGU6
Ci0gIHN0YXRpYyBpbnQgYWxsb2NhdGVkXzsKLX07Ci0KLWludCBXYXRlcjo6YWxsb2NhdGVkXyA9
IDA7Ci0KLS8vIFRoaXMgZXZlbnQgbGlzdGVuZXIgbW9uaXRvcnMgaG93IG1hbnkgV2F0ZXIgb2Jq
ZWN0cyBhcmUgY3JlYXRlZCBhbmQKLS8vIGRlc3Ryb3llZCBieSBlYWNoIHRlc3QsIGFuZCByZXBv
cnRzIGEgZmFpbHVyZSBpZiBhIHRlc3QgbGVha3Mgc29tZSBXYXRlcgotLy8gb2JqZWN0cy4gSXQg
ZG9lcyB0aGlzIGJ5IGNvbXBhcmluZyB0aGUgbnVtYmVyIG9mIGxpdmUgV2F0ZXIgb2JqZWN0cyBh
dAotLy8gdGhlIGJlZ2lubmluZyBvZiBhIHRlc3QgYW5kIGF0IHRoZSBlbmQgb2YgYSB0ZXN0Lgot
Y2xhc3MgTGVha0NoZWNrZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0ZW5lciB7Ci0gcHJp
dmF0ZToKLSAgLy8gQ2FsbGVkIGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgotICB2aXJ0dWFsIHZvaWQg
T25UZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qIHRlc3RfaW5mbyAqLykgewotICAgIGluaXRp
YWxseV9hbGxvY2F0ZWRfID0gV2F0ZXI6OmFsbG9jYXRlZCgpOwotICB9Ci0KLSAgLy8gQ2FsbGVk
IGFmdGVyIGEgdGVzdCBlbmRzLgotICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5kKGNvbnN0IFRlc3RJ
bmZvJiAvKiB0ZXN0X2luZm8gKi8pIHsKLSAgICBpbnQgZGlmZmVyZW5jZSA9IFdhdGVyOjphbGxv
Y2F0ZWQoKSAtIGluaXRpYWxseV9hbGxvY2F0ZWRfOwotCi0gICAgLy8gWW91IGNhbiBnZW5lcmF0
ZSBhIGZhaWx1cmUgaW4gYW55IGV2ZW50IGhhbmRsZXIgZXhjZXB0Ci0gICAgLy8gT25UZXN0UGFy
dFJlc3VsdC4gSnVzdCB1c2UgYW4gYXBwcm9wcmlhdGUgR29vZ2xlIFRlc3QgYXNzZXJ0aW9uIHRv
IGRvCi0gICAgLy8gaXQuCi0gICAgRVhQRUNUX0xFKGRpZmZlcmVuY2UsIDApIDw8ICJMZWFrZWQg
IiA8PCBkaWZmZXJlbmNlIDw8ICIgdW5pdChzKSBvZiBXYXRlciEiOwotICB9Ci0KLSAgaW50IGlu
aXRpYWxseV9hbGxvY2F0ZWRfOwotfTsKLQotVEVTVChMaXN0ZW5lcnNUZXN0LCBEb2VzTm90TGVh
aykgewotICBXYXRlciogd2F0ZXIgPSBuZXcgV2F0ZXI7Ci0gIGRlbGV0ZSB3YXRlcjsKLX0KLQot
Ly8gVGhpcyBzaG91bGQgZmFpbCB3aGVuIHRoZSAtLWNoZWNrX2Zvcl9sZWFrcyBjb21tYW5kIGxp
bmUgZmxhZyBpcwotLy8gc3BlY2lmaWVkLgotVEVTVChMaXN0ZW5lcnNUZXN0LCBMZWFrc1dhdGVy
KSB7Ci0gIFdhdGVyKiB3YXRlciA9IG5ldyBXYXRlcjsKLSAgRVhQRUNUX1RSVUUod2F0ZXIgIT0g
TlVMTCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGJvb2wgY2hlY2tf
Zm9yX2xlYWtzID0gZmFsc2U7Ci0gIGlmIChhcmdjID4gMSAmJiBzdHJjbXAoYXJndlsxXSwgIi0t
Y2hlY2tfZm9yX2xlYWtzIikgPT0gMCApCi0gICAgY2hlY2tfZm9yX2xlYWtzID0gdHJ1ZTsKLSAg
ZWxzZQotICAgIHByaW50ZigiJXNcbiIsICJSdW4gdGhpcyBwcm9ncmFtIHdpdGggLS1jaGVja19m
b3JfbGVha3MgdG8gZW5hYmxlICIKLSAgICAgICAgICAgImN1c3RvbSBsZWFrIGNoZWNraW5nIGlu
IHRoZSB0ZXN0cy4iKTsKLQotICAvLyBJZiB3ZSBhcmUgZ2l2ZW4gdGhlIC0tY2hlY2tfZm9yX2xl
YWtzIGNvbW1hbmQgbGluZSBmbGFnLCBpbnN0YWxscyB0aGUKLSAgLy8gbGVhayBjaGVja2VyLgot
ICBpZiAoY2hlY2tfZm9yX2xlYWtzKSB7Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5l
cnMgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlzdGVuZXJzKCk7Ci0KLSAgICAvLyBBZGRz
IHRoZSBsZWFrIGNoZWNrZXIgdG8gdGhlIGVuZCBvZiB0aGUgdGVzdCBldmVudCBsaXN0ZW5lciBs
aXN0LAotICAgIC8vIGFmdGVyIHRoZSBkZWZhdWx0IHRleHQgb3V0cHV0IHByaW50ZXIgYW5kIHRo
ZSBkZWZhdWx0IFhNTCByZXBvcnQKLSAgICAvLyBnZW5lcmF0b3IuCi0gICAgLy8KLSAgICAvLyBU
aGUgb3JkZXIgaXMgaW1wb3J0YW50IC0gaXQgZW5zdXJlcyB0aGF0IGZhaWx1cmVzIGdlbmVyYXRl
ZCBpbiB0aGUKLSAgICAvLyBsZWFrIGNoZWNrZXIncyBPblRlc3RFbmQoKSBtZXRob2QgYXJlIHBy
b2Nlc3NlZCBieSB0aGUgdGV4dCBhbmQgWE1MCi0gICAgLy8gcHJpbnRlcnMgKmJlZm9yZSogdGhl
aXIgT25UZXN0RW5kKCkgbWV0aG9kcyBhcmUgY2FsbGVkLCBzdWNoIHRoYXQKLSAgICAvLyB0aGV5
IGFyZSBhdHRyaWJ1dGVkIHRvIHRoZSByaWdodCB0ZXN0LiBSZW1lbWJlciB0aGF0IGEgbGlzdGVu
ZXIKLSAgICAvLyByZWNlaXZlcyBhbiBPblh5elN0YXJ0IGV2ZW50ICphZnRlciogbGlzdGVuZXJz
IHByZWNlZGluZyBpdCBpbiB0aGUKLSAgICAvLyBsaXN0IHJlY2VpdmVkIHRoYXQgZXZlbnQsIGFu
ZCByZWNlaXZlcyBhbiBPblh5ekVuZCBldmVudCAqYmVmb3JlKgotICAgIC8vIGxpc3RlbmVycyBw
cmVjZWRpbmcgaXQuCi0gICAgLy8KLSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0
IGRlbGV0aW5nIHRoZSBuZXcgbGlzdGVuZXIgbGF0ZXIsIGFzCi0gICAgLy8gR29vZ2xlIFRlc3Qg
d2lsbCBkbyBpdC4KLSAgICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBMZWFrQ2hlY2tlcik7Ci0gIH0K
LSAgcmV0dXJuIFJVTl9BTExfVEVTVFMoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nh
bXBsZXMvc2FtcGxlMV91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMV91
bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmYzRmMWQ4NjZlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUxX3VuaXR0ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29n
bGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8g
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5n
IHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0KLS8vIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0
byB3cml0ZSBhIHNpbXBsZSB1bml0IHRlc3QgZm9yIGEgZnVuY3Rpb24sCi0vLyB1c2luZyBHb29n
bGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIFdyaXRpbmcgYSB1bml0IHRlc3QgdXNp
bmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yayBpcyBlYXN5IGFzIDEtMi0zOgotCi0KLS8v
IFN0ZXAgMS4gSW5jbHVkZSBuZWNlc3NhcnkgaGVhZGVyIGZpbGVzIHN1Y2ggdGhhdCB0aGUgc3R1
ZmYgeW91cgotLy8gdGVzdCBsb2dpYyBuZWVkcyBpcyBkZWNsYXJlZC4KLS8vCi0vLyBEb24ndCBm
b3JnZXQgZ3Rlc3QuaCwgd2hpY2ggZGVjbGFyZXMgdGhlIHRlc3RpbmcgZnJhbWV3b3JrLgotCi0j
aW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSAic2FtcGxlMS5oIgotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0KLQotLy8gU3RlcCAyLiBVc2UgdGhlIFRFU1QgbWFjcm8gdG8gZGVmaW5lIHlv
dXIgdGVzdHMuCi0vLwotLy8gVEVTVCBoYXMgdHdvIHBhcmFtZXRlcnM6IHRoZSB0ZXN0IGNhc2Ug
bmFtZSBhbmQgdGhlIHRlc3QgbmFtZS4KLS8vIEFmdGVyIHVzaW5nIHRoZSBtYWNybywgeW91IHNo
b3VsZCBkZWZpbmUgeW91ciB0ZXN0IGxvZ2ljIGJldHdlZW4gYQotLy8gcGFpciBvZiBicmFjZXMu
ICBZb3UgY2FuIHVzZSBhIGJ1bmNoIG9mIG1hY3JvcyB0byBpbmRpY2F0ZSB0aGUKLS8vIHN1Y2Nl
c3Mgb3IgZmFpbHVyZSBvZiBhIHRlc3QuICBFWFBFQ1RfVFJVRSBhbmQgRVhQRUNUX0VRIGFyZQot
Ly8gZXhhbXBsZXMgb2Ygc3VjaCBtYWNyb3MuICBGb3IgYSBjb21wbGV0ZSBsaXN0LCBzZWUgZ3Rl
c3QuaC4KLS8vCi0vLyA8VGVjaG5pY2FsRGV0YWlscz4KLS8vCi0vLyBJbiBHb29nbGUgVGVzdCwg
dGVzdHMgYXJlIGdyb3VwZWQgaW50byB0ZXN0IGNhc2VzLiAgVGhpcyBpcyBob3cgd2UKLS8vIGtl
ZXAgdGVzdCBjb2RlIG9yZ2FuaXplZC4gIFlvdSBzaG91bGQgcHV0IGxvZ2ljYWxseSByZWxhdGVk
IHRlc3RzCi0vLyBpbnRvIHRoZSBzYW1lIHRlc3QgY2FzZS4KLS8vCi0vLyBUaGUgdGVzdCBjYXNl
IG5hbWUgYW5kIHRoZSB0ZXN0IG5hbWUgc2hvdWxkIGJvdGggYmUgdmFsaWQgQysrCi0vLyBpZGVu
dGlmaWVycy4gIEFuZCB5b3Ugc2hvdWxkIG5vdCB1c2UgdW5kZXJzY29yZSAoXykgaW4gdGhlIG5h
bWVzLgotLy8KLS8vIEdvb2dsZSBUZXN0IGd1YXJhbnRlZXMgdGhhdCBlYWNoIHRlc3QgeW91IGRl
ZmluZSBpcyBydW4gZXhhY3RseQotLy8gb25jZSwgYnV0IGl0IG1ha2VzIG5vIGd1YXJhbnRlZSBv
biB0aGUgb3JkZXIgdGhlIHRlc3RzIGFyZQotLy8gZXhlY3V0ZWQuICBUaGVyZWZvcmUsIHlvdSBz
aG91bGQgd3JpdGUgeW91ciB0ZXN0cyBpbiBzdWNoIGEgd2F5Ci0vLyB0aGF0IHRoZWlyIHJlc3Vs
dHMgZG9uJ3QgZGVwZW5kIG9uIHRoZWlyIG9yZGVyLgotLy8KLS8vIDwvVGVjaG5pY2FsRGV0YWls
cz4KLQotCi0vLyBUZXN0cyBGYWN0b3JpYWwoKS4KLQotLy8gVGVzdHMgZmFjdG9yaWFsIG9mIG5l
Z2F0aXZlIG51bWJlcnMuCi1URVNUKEZhY3RvcmlhbFRlc3QsIE5lZ2F0aXZlKSB7Ci0gIC8vIFRo
aXMgdGVzdCBpcyBuYW1lZCAiTmVnYXRpdmUiLCBhbmQgYmVsb25ncyB0byB0aGUgIkZhY3Rvcmlh
bFRlc3QiCi0gIC8vIHRlc3QgY2FzZS4KLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtNSkpOwot
ICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKC0xKSk7Ci0gIEVYUEVDVF9HVChGYWN0b3JpYWwoLTEw
KSwgMCk7Ci0KLSAgLy8gPFRlY2huaWNhbERldGFpbHM+Ci0gIC8vCi0gIC8vIEVYUEVDVF9FUShl
eHBlY3RlZCwgYWN0dWFsKSBpcyB0aGUgc2FtZSBhcwotICAvLwotICAvLyAgIEVYUEVDVF9UUlVF
KChleHBlY3RlZCkgPT0gKGFjdHVhbCkpCi0gIC8vCi0gIC8vIGV4Y2VwdCB0aGF0IGl0IHdpbGwg
cHJpbnQgYm90aCB0aGUgZXhwZWN0ZWQgdmFsdWUgYW5kIHRoZSBhY3R1YWwKLSAgLy8gdmFsdWUg
d2hlbiB0aGUgYXNzZXJ0aW9uIGZhaWxzLiAgVGhpcyBpcyB2ZXJ5IGhlbHBmdWwgZm9yCi0gIC8v
IGRlYnVnZ2luZy4gIFRoZXJlZm9yZSBpbiB0aGlzIGNhc2UgRVhQRUNUX0VRIGlzIHByZWZlcnJl
ZC4KLSAgLy8KLSAgLy8gT24gdGhlIG90aGVyIGhhbmQsIEVYUEVDVF9UUlVFIGFjY2VwdHMgYW55
IEJvb2xlYW4gZXhwcmVzc2lvbiwKLSAgLy8gYW5kIGlzIHRodXMgbW9yZSBnZW5lcmFsLgotICAv
LwotICAvLyA8L1RlY2huaWNhbERldGFpbHM+Ci19Ci0KLS8vIFRlc3RzIGZhY3RvcmlhbCBvZiAw
LgotVEVTVChGYWN0b3JpYWxUZXN0LCBaZXJvKSB7Ci0gIEVYUEVDVF9FUSgxLCBGYWN0b3JpYWwo
MCkpOwotfQotCi0vLyBUZXN0cyBmYWN0b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KLVRFU1Qo
RmFjdG9yaWFsVGVzdCwgUG9zaXRpdmUpIHsKLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7
Ci0gIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOwotICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFs
KDMpKTsKLSAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOwotfQotCi0KLS8vIFRlc3Rz
IElzUHJpbWUoKQotCi0vLyBUZXN0cyBuZWdhdGl2ZSBpbnB1dC4KLVRFU1QoSXNQcmltZVRlc3Qs
IE5lZ2F0aXZlKSB7Ci0gIC8vIFRoaXMgdGVzdCBiZWxvbmdzIHRvIHRoZSBJc1ByaW1lVGVzdCB0
ZXN0IGNhc2UuCi0KLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoLTEpKTsKLSAgRVhQRUNUX0ZBTFNF
KElzUHJpbWUoLTIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoSU5UX01JTikpOwotfQotCi0v
LyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi1URVNUKElzUHJpbWVUZXN0LCBUcml2aWFsKSB7
Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDApKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMSkp
OwotICBFWFBFQ1RfVFJVRShJc1ByaW1lKDIpKTsKLSAgRVhQRUNUX1RSVUUoSXNQcmltZSgzKSk7
Ci19Ci0KLS8vIFRlc3RzIHBvc2l0aXZlIGlucHV0LgotVEVTVChJc1ByaW1lVGVzdCwgUG9zaXRp
dmUpIHsKLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNCkpOwotICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDUpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoNikpOwotICBFWFBFQ1RfVFJVRShJc1ByaW1l
KDIzKSk7Ci19Ci0KLS8vIFN0ZXAgMy4gQ2FsbCBSVU5fQUxMX1RFU1RTKCkgaW4gbWFpbigpLgot
Ly8KLS8vIFdlIGRvIHRoaXMgYnkgbGlua2luZyBpbiBzcmMvZ3Rlc3RfbWFpbi5jYyBmaWxlLCB3
aGljaCBjb25zaXN0cyBvZgotLy8gYSBtYWluKCkgZnVuY3Rpb24gd2hpY2ggY2FsbHMgUlVOX0FM
TF9URVNUUygpIGZvciB1cy4KLS8vCi0vLyBUaGlzIHJ1bnMgYWxsIHRoZSB0ZXN0cyB5b3UndmUg
ZGVmaW5lZCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAotLy8gcmV0dXJucyAwIGlmIHN1Y2Nlc3Nm
dWwsIG9yIDEgb3RoZXJ3aXNlLgotLy8KLS8vIERpZCB5b3Ugbm90aWNlIHRoYXQgd2UgZGlkbid0
IHJlZ2lzdGVyIHRoZSB0ZXN0cz8gIFRoZQotLy8gUlVOX0FMTF9URVNUUygpIG1hY3JvIG1hZ2lj
YWxseSBrbm93cyBhYm91dCBhbGwgdGhlIHRlc3RzIHdlCi0vLyBkZWZpbmVkLiAgSXNuJ3QgdGhp
cyBjb252ZW5pZW50PwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1Zjc2M2I5YmRmOGQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1w
bGVzL3NhbXBsZTIuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vLyBDb3B5cmln
aHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0g
ZGVtb25zdHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8v
IEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgInNhbXBs
ZTIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0vLyBDbG9uZXMgYSAwLXRlcm1pbmF0ZWQg
QyBzdHJpbmcsIGFsbG9jYXRpbmcgbWVtb3J5IHVzaW5nIG5ldy4KLWNvbnN0IGNoYXIqIE15U3Ry
aW5nOjpDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cmluZykgewotICBpZiAoYV9jX3N0
cmluZyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLQotICBjb25zdCBzaXplX3QgbGVuID0gc3RybGVu
KGFfY19zdHJpbmcpOwotICBjaGFyKiBjb25zdCBjbG9uZSA9IG5ldyBjaGFyWyBsZW4gKyAxIF07
Ci0gIG1lbWNweShjbG9uZSwgYV9jX3N0cmluZywgbGVuICsgMSk7Ci0KLSAgcmV0dXJuIGNsb25l
OwotfQotCi0vLyBTZXRzIHRoZSAwLXRlcm1pbmF0ZWQgQyBzdHJpbmcgdGhpcyBNeVN0cmluZyBv
YmplY3QKLS8vIHJlcHJlc2VudHMuCi12b2lkIE15U3RyaW5nOjpTZXQoY29uc3QgY2hhciogYV9j
X3N0cmluZykgewotICAvLyBNYWtlcyBzdXJlIHRoaXMgd29ya3Mgd2hlbiBjX3N0cmluZyA9PSBj
X3N0cmluZ18KLSAgY29uc3QgY2hhciogY29uc3QgdGVtcCA9IE15U3RyaW5nOjpDbG9uZUNTdHJp
bmcoYV9jX3N0cmluZyk7Ci0gIGRlbGV0ZVtdIGNfc3RyaW5nXzsKLSAgY19zdHJpbmdfID0gdGVt
cDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMi5oIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc2FtcGxlcy9zYW1wbGUyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi
NDg1YzcwZmIzMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
Mi5oCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRp
bmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpZm5kZWYgR1RFU1RfU0FNUExFU19TQU1Q
TEUyX0hfCi0jZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFMl9IXwotCi0jaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0KLQotLy8gQSBzaW1wbGUgc3RyaW5nIGNsYXNzLgotY2xhc3MgTXlTdHJpbmcgewot
IHByaXZhdGU6Ci0gIGNvbnN0IGNoYXIqIGNfc3RyaW5nXzsKLSAgY29uc3QgTXlTdHJpbmcmIG9w
ZXJhdG9yPShjb25zdCBNeVN0cmluZyYgcmhzKTsKLQotIHB1YmxpYzoKLSAgLy8gQ2xvbmVzIGEg
MC10ZXJtaW5hdGVkIEMgc3RyaW5nLCBhbGxvY2F0aW5nIG1lbW9yeSB1c2luZyBuZXcuCi0gIHN0
YXRpYyBjb25zdCBjaGFyKiBDbG9uZUNTdHJpbmcoY29uc3QgY2hhciogYV9jX3N0cmluZyk7Ci0K
LSAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0gIC8vCi0gIC8vIEMndG9ycwotCi0gIC8vIFRoZSBkZWZhdWx0IGMndG9yIGNvbnN0
cnVjdHMgYSBOVUxMIHN0cmluZy4KLSAgTXlTdHJpbmcoKSA6IGNfc3RyaW5nXyhOVUxMKSB7fQot
Ci0gIC8vIENvbnN0cnVjdHMgYSBNeVN0cmluZyBieSBjbG9uaW5nIGEgMC10ZXJtaW5hdGVkIEMg
c3RyaW5nLgotICBleHBsaWNpdCBNeVN0cmluZyhjb25zdCBjaGFyKiBhX2Nfc3RyaW5nKSA6IGNf
c3RyaW5nXyhOVUxMKSB7Ci0gICAgU2V0KGFfY19zdHJpbmcpOwotICB9Ci0KLSAgLy8gQ29weSBj
J3RvcgotICBNeVN0cmluZyhjb25zdCBNeVN0cmluZyYgc3RyaW5nKSA6IGNfc3RyaW5nXyhOVUxM
KSB7Ci0gICAgU2V0KHN0cmluZy5jX3N0cmluZ18pOwotICB9Ci0KLSAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gIC8vCi0gIC8v
IEQndG9yLiAgTXlTdHJpbmcgaXMgaW50ZW5kZWQgdG8gYmUgYSBmaW5hbCBjbGFzcywgc28gdGhl
IGQndG9yCi0gIC8vIGRvZXNuJ3QgbmVlZCB0byBiZSB2aXJ0dWFsLgotICB+TXlTdHJpbmcoKSB7
IGRlbGV0ZVtdIGNfc3RyaW5nXzsgfQotCi0gIC8vIEdldHMgdGhlIDAtdGVybWluYXRlZCBDIHN0
cmluZyB0aGlzIE15U3RyaW5nIG9iamVjdCByZXByZXNlbnRzLgotICBjb25zdCBjaGFyKiBjX3N0
cmluZygpIGNvbnN0IHsgcmV0dXJuIGNfc3RyaW5nXzsgfQotCi0gIHNpemVfdCBMZW5ndGgoKSBj
b25zdCB7Ci0gICAgcmV0dXJuIGNfc3RyaW5nXyA9PSBOVUxMID8gMCA6IHN0cmxlbihjX3N0cmlu
Z18pOwotICB9Ci0KLSAgLy8gU2V0cyB0aGUgMC10ZXJtaW5hdGVkIEMgc3RyaW5nIHRoaXMgTXlT
dHJpbmcgb2JqZWN0IHJlcHJlc2VudHMuCi0gIHZvaWQgU2V0KGNvbnN0IGNoYXIqIGNfc3RyaW5n
KTsKLX07Ci0KLQotI2VuZGlmICAvLyBHVEVTVF9TQU1QTEVTX1NBTVBMRTJfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NhbXBsZXMvc2FtcGxlMl91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGZhMTliNzFjNzkyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9z
YW1wbGUyX3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotLy8gQSBzYW1wbGUgcHJv
Z3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdvb2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0KLS8vIFRoaXMg
c2FtcGxlIHNob3dzIGhvdyB0byB3cml0ZSBhIG1vcmUgY29tcGxleCB1bml0IHRlc3QgZm9yIGEg
Y2xhc3MKLS8vIHRoYXQgaGFzIG11bHRpcGxlIG1lbWJlciBmdW5jdGlvbnMuCi0vLwotLy8gVXN1
YWxseSwgaXQncyBhIGdvb2QgaWRlYSB0byBoYXZlIG9uZSB0ZXN0IGZvciBlYWNoIG1ldGhvZCBp
biB5b3VyCi0vLyBjbGFzcy4gIFlvdSBkb24ndCBoYXZlIHRvIGRvIHRoYXQgZXhhY3RseSwgYnV0
IGl0IGhlbHBzIHRvIGtlZXAKLS8vIHlvdXIgdGVzdHMgb3JnYW5pemVkLiAgWW91IG1heSBhbHNv
IHRocm93IGluIGFkZGl0aW9uYWwgdGVzdHMgYXMKLS8vIG5lZWRlZC4KLQotI2luY2x1ZGUgInNh
bXBsZTIuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0vLyBJbiB0aGlzIGV4YW1wbGUs
IHdlIHRlc3QgdGhlIE15U3RyaW5nIGNsYXNzIChhIHNpbXBsZSBzdHJpbmcpLgotCi0vLyBUZXN0
cyB0aGUgZGVmYXVsdCBjJ3Rvci4KLVRFU1QoTXlTdHJpbmcsIERlZmF1bHRDb25zdHJ1Y3Rvcikg
ewotICBjb25zdCBNeVN0cmluZyBzOwotCi0gIC8vIEFzc2VydHMgdGhhdCBzLmNfc3RyaW5nKCkg
cmV0dXJucyBOVUxMLgotICAvLwotICAvLyA8VGVjaG5pY2FsRGV0YWlscz4KLSAgLy8KLSAgLy8g
SWYgd2Ugd3JpdGUgTlVMTCBpbnN0ZWFkIG9mCi0gIC8vCi0gIC8vICAgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhciAqPihOVUxMKQotICAvLwotICAvLyBpbiB0aGlzIGFzc2VydGlvbiwgaXQgd2lsbCBn
ZW5lcmF0ZSBhIHdhcm5pbmcgb24gZ2NjIDMuNC4gIFRoZQotICAvLyByZWFzb24gaXMgdGhhdCBF
WFBFQ1RfRVEgbmVlZHMgdG8ga25vdyB0aGUgdHlwZXMgb2YgaXRzCi0gIC8vIGFyZ3VtZW50cyBp
biBvcmRlciB0byBwcmludCB0aGVtIHdoZW4gaXQgZmFpbHMuICBTaW5jZSBOVUxMIGlzCi0gIC8v
ICNkZWZpbmVkIGFzIDAsIHRoZSBjb21waWxlciB3aWxsIHVzZSB0aGUgZm9ybWF0dGVyIGZ1bmN0
aW9uIGZvcgotICAvLyBpbnQgdG8gcHJpbnQgaXQuICBIb3dldmVyLCBnY2MgdGhpbmtzIHRoYXQg
TlVMTCBzaG91bGQgYmUgdXNlZCBhcwotICAvLyBhIHBvaW50ZXIsIG5vdCBhbiBpbnQsIGFuZCB0
aGVyZWZvcmUgY29tcGxhaW5zLgotICAvLwotICAvLyBUaGUgcm9vdCBvZiB0aGUgcHJvYmxlbSBp
cyBDKysncyBsYWNrIG9mIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlCi0gIC8vIGludGVnZXIgbnVt
YmVyIDAgYW5kIHRoZSBudWxsIHBvaW50ZXIgY29uc3RhbnQuICBVbmZvcnR1bmF0ZWx5LAotICAv
LyB3ZSBoYXZlIHRvIGxpdmUgd2l0aCB0aGlzIGZhY3QuCi0gIC8vCi0gIC8vIDwvVGVjaG5pY2Fs
RGV0YWlscz4KLSAgRVhQRUNUX1NUUkVRKE5VTEwsIHMuY19zdHJpbmcoKSk7Ci0KLSAgRVhQRUNU
X0VRKDB1LCBzLkxlbmd0aCgpKTsKLX0KLQotY29uc3QgY2hhciBrSGVsbG9TdHJpbmdbXSA9ICJI
ZWxsbywgd29ybGQhIjsKLQotLy8gVGVzdHMgdGhlIGMndG9yIHRoYXQgYWNjZXB0cyBhIEMgc3Ry
aW5nLgotVEVTVChNeVN0cmluZywgQ29uc3RydWN0b3JGcm9tQ1N0cmluZykgewotICBjb25zdCBN
eVN0cmluZyBzKGtIZWxsb1N0cmluZyk7Ci0gIEVYUEVDVF9FUSgwLCBzdHJjbXAocy5jX3N0cmlu
ZygpLCBrSGVsbG9TdHJpbmcpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihrSGVsbG9TdHJpbmcpL3Np
emVvZihrSGVsbG9TdHJpbmdbMF0pIC0gMSwKLSAgICAgICAgICAgIHMuTGVuZ3RoKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGUgY29weSBjJ3Rvci4KLVRFU1QoTXlTdHJpbmcsIENvcHlDb25zdHJ1Y3Rv
cikgewotICBjb25zdCBNeVN0cmluZyBzMShrSGVsbG9TdHJpbmcpOwotICBjb25zdCBNeVN0cmlu
ZyBzMiA9IHMxOwotICBFWFBFQ1RfRVEoMCwgc3RyY21wKHMyLmNfc3RyaW5nKCksIGtIZWxsb1N0
cmluZykpOwotfQotCi0vLyBUZXN0cyB0aGUgU2V0IG1ldGhvZC4KLVRFU1QoTXlTdHJpbmcsIFNl
dCkgewotICBNeVN0cmluZyBzOwotCi0gIHMuU2V0KGtIZWxsb1N0cmluZyk7Ci0gIEVYUEVDVF9F
USgwLCBzdHJjbXAocy5jX3N0cmluZygpLCBrSGVsbG9TdHJpbmcpKTsKLQotICAvLyBTZXQgc2hv
dWxkIHdvcmsgd2hlbiB0aGUgaW5wdXQgcG9pbnRlciBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCi0g
IC8vIGFscmVhZHkgaW4gdGhlIE15U3RyaW5nIG9iamVjdC4KLSAgcy5TZXQocy5jX3N0cmluZygp
KTsKLSAgRVhQRUNUX0VRKDAsIHN0cmNtcChzLmNfc3RyaW5nKCksIGtIZWxsb1N0cmluZykpOwot
Ci0gIC8vIENhbiB3ZSBzZXQgdGhlIE15U3RyaW5nIHRvIE5VTEw/Ci0gIHMuU2V0KE5VTEwpOwot
ICBFWFBFQ1RfU1RSRVEoTlVMTCwgcy5jX3N0cmluZygpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NhbXBsZXMvc2FtcGxlMy1pbmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
My1pbmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UzMDg0ZDYzODVkLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUzLWlubC5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotLy8gQSBzYW1wbGUgcHJvZ3JhbSBkZW1vbnN0cmF0aW5nIHVzaW5nIEdv
b2dsZSBDKysgdGVzdGluZyBmcmFtZXdvcmsuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNv
bSAoWmhhbnlvbmcgV2FuKQotCi0jaWZuZGVmIEdURVNUX1NBTVBMRVNfU0FNUExFM19JTkxfSF8K
LSNkZWZpbmUgR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwotCi0jaW5jbHVkZSA8c3RkZGVm
Lmg+Ci0KLQotLy8gUXVldWUgaXMgYSBzaW1wbGUgcXVldWUgaW1wbGVtZW50ZWQgYXMgYSBzaW5n
bGVkLWxpbmtlZCBsaXN0LgotLy8KLS8vIFRoZSBlbGVtZW50IHR5cGUgbXVzdCBzdXBwb3J0IGNv
cHkgY29uc3RydWN0b3IuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRT4gIC8vIEUgaXMgdGhlIGVsZW1l
bnQgdHlwZQotY2xhc3MgUXVldWU7Ci0KLS8vIFF1ZXVlTm9kZSBpcyBhIG5vZGUgaW4gYSBRdWV1
ZSwgd2hpY2ggY29uc2lzdHMgb2YgYW4gZWxlbWVudCBvZgotLy8gdHlwZSBFIGFuZCBhIHBvaW50
ZXIgdG8gdGhlIG5leHQgbm9kZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBFPiAgLy8gRSBpcyB0aGUg
ZWxlbWVudCB0eXBlCi1jbGFzcyBRdWV1ZU5vZGUgewotICBmcmllbmQgY2xhc3MgUXVldWU8RT47
Ci0KLSBwdWJsaWM6Ci0gIC8vIEdldHMgdGhlIGVsZW1lbnQgaW4gdGhpcyBub2RlLgotICBjb25z
dCBFJiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZWxlbWVudF87IH0KLQotICAvLyBHZXRzIHRo
ZSBuZXh0IG5vZGUgaW4gdGhlIHF1ZXVlLgotICBRdWV1ZU5vZGUqIG5leHQoKSB7IHJldHVybiBu
ZXh0XzsgfQotICBjb25zdCBRdWV1ZU5vZGUqIG5leHQoKSBjb25zdCB7IHJldHVybiBuZXh0Xzsg
fQotCi0gcHJpdmF0ZToKLSAgLy8gQ3JlYXRlcyBhIG5vZGUgd2l0aCBhIGdpdmVuIGVsZW1lbnQg
dmFsdWUuICBUaGUgbmV4dCBwb2ludGVyIGlzCi0gIC8vIHNldCB0byBOVUxMLgotICBleHBsaWNp
dCBRdWV1ZU5vZGUoY29uc3QgRSYgYW5fZWxlbWVudCkgOiBlbGVtZW50Xyhhbl9lbGVtZW50KSwg
bmV4dF8oTlVMTCkge30KLQotICAvLyBXZSBkaXNhYmxlIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQg
b3BlcmF0b3IgYW5kIGNvcHkgYyd0b3IuCi0gIGNvbnN0IFF1ZXVlTm9kZSYgb3BlcmF0b3IgPSAo
Y29uc3QgUXVldWVOb2RlJik7Ci0gIFF1ZXVlTm9kZShjb25zdCBRdWV1ZU5vZGUmKTsKLQotICBF
IGVsZW1lbnRfOwotICBRdWV1ZU5vZGUqIG5leHRfOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IEU+ICAvLyBFIGlzIHRoZSBlbGVtZW50IHR5cGUuCi1jbGFzcyBRdWV1ZSB7Ci0gcHVibGljOgot
ICAvLyBDcmVhdGVzIGFuIGVtcHR5IHF1ZXVlLgotICBRdWV1ZSgpIDogaGVhZF8oTlVMTCksIGxh
c3RfKE5VTEwpLCBzaXplXygwKSB7fQotCi0gIC8vIEQndG9yLiAgQ2xlYXJzIHRoZSBxdWV1ZS4K
LSAgflF1ZXVlKCkgeyBDbGVhcigpOyB9Ci0KLSAgLy8gQ2xlYXJzIHRoZSBxdWV1ZS4KLSAgdm9p
ZCBDbGVhcigpIHsKLSAgICBpZiAoc2l6ZV8gPiAwKSB7Ci0gICAgICAvLyAxLiBEZWxldGVzIGV2
ZXJ5IG5vZGUuCi0gICAgICBRdWV1ZU5vZGU8RT4qIG5vZGUgPSBoZWFkXzsKLSAgICAgIFF1ZXVl
Tm9kZTxFPiogbmV4dCA9IG5vZGUtPm5leHQoKTsKLSAgICAgIGZvciAoOyA7KSB7Ci0gICAgICAg
IGRlbGV0ZSBub2RlOwotICAgICAgICBub2RlID0gbmV4dDsKLSAgICAgICAgaWYgKG5vZGUgPT0g
TlVMTCkgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBub2RlLT5uZXh0KCk7Ci0gICAgICB9Ci0KLSAg
ICAgIC8vIDIuIFJlc2V0cyB0aGUgbWVtYmVyIHZhcmlhYmxlcy4KLSAgICAgIGhlYWRfID0gbGFz
dF8gPSBOVUxMOwotICAgICAgc2l6ZV8gPSAwOwotICAgIH0KLSAgfQotCi0gIC8vIEdldHMgdGhl
IG51bWJlciBvZiBlbGVtZW50cy4KLSAgc2l6ZV90IFNpemUoKSBjb25zdCB7IHJldHVybiBzaXpl
XzsgfQotCi0gIC8vIEdldHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBvciBOVUxM
IGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgUXVldWVOb2RlPEU+KiBIZWFkKCkgeyByZXR1cm4g
aGVhZF87IH0KLSAgY29uc3QgUXVldWVOb2RlPEU+KiBIZWFkKCkgY29uc3QgeyByZXR1cm4gaGVh
ZF87IH0KLQotICAvLyBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBvciBOVUxM
IGlmIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgUXVldWVOb2RlPEU+KiBMYXN0KCkgeyByZXR1cm4g
bGFzdF87IH0KLSAgY29uc3QgUXVldWVOb2RlPEU+KiBMYXN0KCkgY29uc3QgeyByZXR1cm4gbGFz
dF87IH0KLQotICAvLyBBZGRzIGFuIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICBB
IGNvcHkgb2YgdGhlIGVsZW1lbnQgaXMKLSAgLy8gY3JlYXRlZCB1c2luZyB0aGUgY29weSBjb25z
dHJ1Y3RvciwgYW5kIHRoZW4gc3RvcmVkIGluIHRoZSBxdWV1ZS4KLSAgLy8gQ2hhbmdlcyBtYWRl
IHRvIHRoZSBlbGVtZW50IGluIHRoZSBxdWV1ZSBkb2Vzbid0IGFmZmVjdCB0aGUgc291cmNlCi0g
IC8vIG9iamVjdCwgYW5kIHZpY2UgdmVyc2EuCi0gIHZvaWQgRW5xdWV1ZShjb25zdCBFJiBlbGVt
ZW50KSB7Ci0gICAgUXVldWVOb2RlPEU+KiBuZXdfbm9kZSA9IG5ldyBRdWV1ZU5vZGU8RT4oZWxl
bWVudCk7Ci0KLSAgICBpZiAoc2l6ZV8gPT0gMCkgewotICAgICAgaGVhZF8gPSBsYXN0XyA9IG5l
d19ub2RlOwotICAgICAgc2l6ZV8gPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBsYXN0Xy0+bmV4
dF8gPSBuZXdfbm9kZTsKLSAgICAgIGxhc3RfID0gbmV3X25vZGU7Ci0gICAgICBzaXplXysrOwot
ICAgIH0KLSAgfQotCi0gIC8vIFJlbW92ZXMgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIGFuZCByZXR1
cm5zIGl0LiAgUmV0dXJucyBOVUxMIGlmCi0gIC8vIHRoZSBxdWV1ZSBpcyBlbXB0eS4KLSAgRSog
RGVxdWV1ZSgpIHsKLSAgICBpZiAoc2l6ZV8gPT0gMCkgewotICAgICAgcmV0dXJuIE5VTEw7Ci0g
ICAgfQotCi0gICAgY29uc3QgUXVldWVOb2RlPEU+KiBjb25zdCBvbGRfaGVhZCA9IGhlYWRfOwot
ICAgIGhlYWRfID0gaGVhZF8tPm5leHRfOwotICAgIHNpemVfLS07Ci0gICAgaWYgKHNpemVfID09
IDApIHsKLSAgICAgIGxhc3RfID0gTlVMTDsKLSAgICB9Ci0KLSAgICBFKiBlbGVtZW50ID0gbmV3
IEUob2xkX2hlYWQtPmVsZW1lbnQoKSk7Ci0gICAgZGVsZXRlIG9sZF9oZWFkOwotCi0gICAgcmV0
dXJuIGVsZW1lbnQ7Ci0gIH0KLQotICAvLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciBvbiBl
YWNoIGVsZW1lbnQgb2YgdGhlIHF1ZXVlLCBhbmQKLSAgLy8gcmV0dXJucyB0aGUgcmVzdWx0IGlu
IGEgbmV3IHF1ZXVlLiAgVGhlIG9yaWdpbmFsIHF1ZXVlIGlzIG5vdAotICAvLyBhZmZlY3RlZC4K
LSAgdGVtcGxhdGUgPHR5cGVuYW1lIEY+Ci0gIFF1ZXVlKiBNYXAoRiBmdW5jdGlvbikgY29uc3Qg
ewotICAgIFF1ZXVlKiBuZXdfcXVldWUgPSBuZXcgUXVldWUoKTsKLSAgICBmb3IgKGNvbnN0IFF1
ZXVlTm9kZTxFPiogbm9kZSA9IGhlYWRfOyBub2RlICE9IE5VTEw7IG5vZGUgPSBub2RlLT5uZXh0
XykgewotICAgICAgbmV3X3F1ZXVlLT5FbnF1ZXVlKGZ1bmN0aW9uKG5vZGUtPmVsZW1lbnQoKSkp
OwotICAgIH0KLQotICAgIHJldHVybiBuZXdfcXVldWU7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFF1
ZXVlTm9kZTxFPiogaGVhZF87ICAvLyBUaGUgZmlyc3Qgbm9kZSBvZiB0aGUgcXVldWUuCi0gIFF1
ZXVlTm9kZTxFPiogbGFzdF87ICAvLyBUaGUgbGFzdCBub2RlIG9mIHRoZSBxdWV1ZS4KLSAgc2l6
ZV90IHNpemVfOyAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuCi0KLSAg
Ly8gV2UgZGlzYWxsb3cgY29weWluZyBhIHF1ZXVlLgotICBRdWV1ZShjb25zdCBRdWV1ZSYpOwot
ICBjb25zdCBRdWV1ZSYgb3BlcmF0b3IgPSAoY29uc3QgUXVldWUmKTsKLX07Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfU0FNUExFU19TQU1QTEUzX0lOTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2FtcGxlcy9zYW1wbGUzX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGUz
X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjM4NzdkMDEzMjMu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTNfdW5pdHRlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdv
b2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0v
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFtIGRlbW9uc3RyYXRp
bmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0vLyBBdXRob3I6IHdh
bkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLQotLy8gSW4gdGhpcyBleGFtcGxlLCB3ZSB1
c2UgYSBtb3JlIGFkdmFuY2VkIGZlYXR1cmUgb2YgR29vZ2xlIFRlc3QgY2FsbGVkCi0vLyB0ZXN0
IGZpeHR1cmUuCi0vLwotLy8gQSB0ZXN0IGZpeHR1cmUgaXMgYSBwbGFjZSB0byBob2xkIG9iamVj
dHMgYW5kIGZ1bmN0aW9ucyBzaGFyZWQgYnkKLS8vIGFsbCB0ZXN0cyBpbiBhIHRlc3QgY2FzZS4g
IFVzaW5nIGEgdGVzdCBmaXh0dXJlIGF2b2lkcyBkdXBsaWNhdGluZwotLy8gdGhlIHRlc3QgY29k
ZSBuZWNlc3NhcnkgdG8gaW5pdGlhbGl6ZSBhbmQgY2xlYW51cCB0aG9zZSBjb21tb24KLS8vIG9i
amVjdHMgZm9yIGVhY2ggdGVzdC4gIEl0IGlzIGFsc28gdXNlZnVsIGZvciBkZWZpbmluZyBzdWIt
cm91dGluZXMKLS8vIHRoYXQgeW91ciB0ZXN0cyBuZWVkIHRvIGludm9rZSBhIGxvdC4KLS8vCi0v
LyA8VGVjaG5pY2FsRGV0YWlscz4KLS8vCi0vLyBUaGUgdGVzdHMgc2hhcmUgdGhlIHRlc3QgZml4
dHVyZSBpbiB0aGUgc2Vuc2Ugb2YgY29kZSBzaGFyaW5nLCBub3QKLS8vIGRhdGEgc2hhcmluZy4g
IEVhY2ggdGVzdCBpcyBnaXZlbiBpdHMgb3duIGZyZXNoIGNvcHkgb2YgdGhlCi0vLyBmaXh0dXJl
LiAgWW91IGNhbm5vdCBleHBlY3QgdGhlIGRhdGEgbW9kaWZpZWQgYnkgb25lIHRlc3QgdG8gYmUK
LS8vIHBhc3NlZCBvbiB0byBhbm90aGVyIHRlc3QsIHdoaWNoIGlzIGEgYmFkIGlkZWEuCi0vLwot
Ly8gVGhlIHJlYXNvbiBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdCB0ZXN0cyBzaG91bGQgYmUgaW5k
ZXBlbmRlbnQgYW5kCi0vLyByZXBlYXRhYmxlLiAgSW4gcGFydGljdWxhciwgYSB0ZXN0IHNob3Vs
ZCBub3QgZmFpbCBhcyB0aGUgcmVzdWx0IG9mCi0vLyBhbm90aGVyIHRlc3QncyBmYWlsdXJlLiAg
SWYgb25lIHRlc3QgZGVwZW5kcyBvbiBpbmZvIHByb2R1Y2VkIGJ5Ci0vLyBhbm90aGVyIHRlc3Qs
IHRoZW4gdGhlIHR3byB0ZXN0cyBzaG91bGQgcmVhbGx5IGJlIG9uZSBiaWcgdGVzdC4KLS8vCi0v
LyBUaGUgbWFjcm9zIGZvciBpbmRpY2F0aW5nIHRoZSBzdWNjZXNzL2ZhaWx1cmUgb2YgYSB0ZXN0
Ci0vLyAoRVhQRUNUX1RSVUUsIEZBSUwsIGV0YykgbmVlZCB0byBrbm93IHdoYXQgdGhlIGN1cnJl
bnQgdGVzdCBpcwotLy8gKHdoZW4gR29vZ2xlIFRlc3QgcHJpbnRzIHRoZSB0ZXN0IHJlc3VsdCwg
aXQgdGVsbHMgeW91IHdoaWNoIHRlc3QKLS8vIGVhY2ggZmFpbHVyZSBiZWxvbmdzIHRvKS4gIFRl
Y2huaWNhbGx5LCB0aGVzZSBtYWNyb3MgaW52b2tlIGEKLS8vIG1lbWJlciBmdW5jdGlvbiBvZiB0
aGUgVGVzdCBjbGFzcy4gIFRoZXJlZm9yZSwgeW91IGNhbm5vdCB1c2UgdGhlbQotLy8gaW4gYSBn
bG9iYWwgZnVuY3Rpb24uICBUaGF0J3Mgd2h5IHlvdSBzaG91bGQgcHV0IHRlc3Qgc3ViLXJvdXRp
bmVzCi0vLyBpbiBhIHRlc3QgZml4dHVyZS4KLS8vCi0vLyA8L1RlY2huaWNhbERldGFpbHM+Ci0K
LSNpbmNsdWRlICJzYW1wbGUzLWlubC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLS8v
IFRvIHVzZSBhIHRlc3QgZml4dHVyZSwgZGVyaXZlIGEgY2xhc3MgZnJvbSB0ZXN0aW5nOjpUZXN0
LgotY2xhc3MgUXVldWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDog
IC8vIFlvdSBzaG91bGQgbWFrZSB0aGUgbWVtYmVycyBwcm90ZWN0ZWQgcy50LiB0aGV5IGNhbiBi
ZQotICAgICAgICAgICAgIC8vIGFjY2Vzc2VkIGZyb20gc3ViLWNsYXNzZXMuCi0KLSAgLy8gdmly
dHVhbCB2b2lkIFNldFVwKCkgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVhY2ggdGVzdCBpcyBydW4u
ICBZb3UKLSAgLy8gc2hvdWxkIGRlZmluZSBpdCBpZiB5b3UgbmVlZCB0byBpbml0aWFsaXplIHRo
ZSB2YXJhaWJsZXMuCi0gIC8vIE90aGVyd2lzZSwgdGhpcyBjYW4gYmUgc2tpcHBlZC4KLSAgdmly
dHVhbCB2b2lkIFNldFVwKCkgewotICAgIHExXy5FbnF1ZXVlKDEpOwotICAgIHEyXy5FbnF1ZXVl
KDIpOwotICAgIHEyXy5FbnF1ZXVlKDMpOwotICB9Ci0KLSAgLy8gdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZWFjaCB0ZXN0IGlzIHJ1bi4KLSAgLy8gWW91IHNo
b3VsZCBkZWZpbmUgaXQgaWYgdGhlcmUgaXMgY2xlYW51cCB3b3JrIHRvIGRvLiAgT3RoZXJ3aXNl
LAotICAvLyB5b3UgZG9uJ3QgaGF2ZSB0byBwcm92aWRlIGl0LgotICAvLwotICAvLyB2aXJ0dWFs
IHZvaWQgVGVhckRvd24oKSB7Ci0gIC8vIH0KLQotICAvLyBBIGhlbHBlciBmdW5jdGlvbiB0aGF0
IHNvbWUgdGVzdCB1c2VzLgotICBzdGF0aWMgaW50IERvdWJsZShpbnQgbikgewotICAgIHJldHVy
biAyKm47Ci0gIH0KLQotICAvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBRdWV1ZTo6
TWFwKCkuCi0gIHZvaWQgTWFwVGVzdGVyKGNvbnN0IFF1ZXVlPGludD4gKiBxKSB7Ci0gICAgLy8g
Q3JlYXRlcyBhIG5ldyBxdWV1ZSwgd2hlcmUgZWFjaCBlbGVtZW50IGlzIHR3aWNlIGFzIGJpZyBh
cyB0aGUKLSAgICAvLyBjb3JyZXNwb25kaW5nIG9uZSBpbiBxLgotICAgIGNvbnN0IFF1ZXVlPGlu
dD4gKiBjb25zdCBuZXdfcSA9IHEtPk1hcChEb3VibGUpOwotCi0gICAgLy8gVmVyaWZpZXMgdGhh
dCB0aGUgbmV3IHF1ZXVlIGhhcyB0aGUgc2FtZSBzaXplIGFzIHEuCi0gICAgQVNTRVJUX0VRKHEt
PlNpemUoKSwgbmV3X3EtPlNpemUoKSk7Ci0KLSAgICAvLyBWZXJpZmllcyB0aGUgcmVsYXRpb25z
aGlwIGJldHdlZW4gdGhlIGVsZW1lbnRzIG9mIHRoZSB0d28gcXVldWVzLgotICAgIGZvciAoIGNv
bnN0IFF1ZXVlTm9kZTxpbnQ+ICogbjEgPSBxLT5IZWFkKCksICogbjIgPSBuZXdfcS0+SGVhZCgp
OwotICAgICAgICAgIG4xICE9IE5VTEw7IG4xID0gbjEtPm5leHQoKSwgbjIgPSBuMi0+bmV4dCgp
ICkgewotICAgICAgRVhQRUNUX0VRKDIgKiBuMS0+ZWxlbWVudCgpLCBuMi0+ZWxlbWVudCgpKTsK
LSAgICB9Ci0KLSAgICBkZWxldGUgbmV3X3E7Ci0gIH0KLQotICAvLyBEZWNsYXJlcyB0aGUgdmFy
aWFibGVzIHlvdXIgdGVzdHMgd2FudCB0byB1c2UuCi0gIFF1ZXVlPGludD4gcTBfOwotICBRdWV1
ZTxpbnQ+IHExXzsKLSAgUXVldWU8aW50PiBxMl87Ci19OwotCi0vLyBXaGVuIHlvdSBoYXZlIGEg
dGVzdCBmaXh0dXJlLCB5b3UgZGVmaW5lIGEgdGVzdCB1c2luZyBURVNUX0YKLS8vIGluc3RlYWQg
b2YgVEVTVC4KLQotLy8gVGVzdHMgdGhlIGRlZmF1bHQgYyd0b3IuCi1URVNUX0YoUXVldWVUZXN0
LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAgLy8gWW91IGNhbiBhY2Nlc3MgZGF0YSBpbiB0aGUg
dGVzdCBmaXh0dXJlIGhlcmUuCi0gIEVYUEVDVF9FUSgwdSwgcTBfLlNpemUoKSk7Ci19Ci0KLS8v
IFRlc3RzIERlcXVldWUoKS4KLVRFU1RfRihRdWV1ZVRlc3QsIERlcXVldWUpIHsKLSAgaW50ICog
biA9IHEwXy5EZXF1ZXVlKCk7Ci0gIEVYUEVDVF9UUlVFKG4gPT0gTlVMTCk7Ci0KLSAgbiA9IHEx
Xy5EZXF1ZXVlKCk7Ci0gIEFTU0VSVF9UUlVFKG4gIT0gTlVMTCk7Ci0gIEVYUEVDVF9FUSgxLCAq
bik7Ci0gIEVYUEVDVF9FUSgwdSwgcTFfLlNpemUoKSk7Ci0gIGRlbGV0ZSBuOwotCi0gIG4gPSBx
Ml8uRGVxdWV1ZSgpOwotICBBU1NFUlRfVFJVRShuICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoMiwg
Km4pOwotICBFWFBFQ1RfRVEoMXUsIHEyXy5TaXplKCkpOwotICBkZWxldGUgbjsKLX0KLQotLy8g
VGVzdHMgdGhlIFF1ZXVlOjpNYXAoKSBmdW5jdGlvbi4KLVRFU1RfRihRdWV1ZVRlc3QsIE1hcCkg
ewotICBNYXBUZXN0ZXIoJnEwXyk7Ci0gIE1hcFRlc3RlcigmcTFfKTsKLSAgTWFwVGVzdGVyKCZx
Ml8pOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZTQ0YmRhNmYxYmEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3Nh
bXBsZTQuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
NSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIEEgc2FtcGxlIHByb2dyYW0gZGVtb25z
dHJhdGluZyB1c2luZyBHb29nbGUgQysrIHRlc3RpbmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhv
cjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0K
LSNpbmNsdWRlICJzYW1wbGU0LmgiCi0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgY291bnRlciB2
YWx1ZSwgYW5kIGluY3JlbWVudHMgaXQuCi1pbnQgQ291bnRlcjo6SW5jcmVtZW50KCkgewotICBy
ZXR1cm4gY291bnRlcl8rKzsKLX0KLQotLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFs
dWUgdG8gU1RET1VULgotdm9pZCBDb3VudGVyOjpQcmludCgpIGNvbnN0IHsKLSAgcHJpbnRmKCIl
ZCIsIGNvdW50ZXJfKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxl
NC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNkNjBmMGRkMmQxOC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nh
bXBsZXMvc2FtcGxlNC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRp
b24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0v
LyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBBIHNhbXBsZSBwcm9ncmFt
IGRlbW9uc3RyYXRpbmcgdXNpbmcgR29vZ2xlIEMrKyB0ZXN0aW5nIGZyYW1ld29yay4KLS8vCi0v
LyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpZm5kZWYgR1RFU1Rf
U0FNUExFU19TQU1QTEU0X0hfCi0jZGVmaW5lIEdURVNUX1NBTVBMRVNfU0FNUExFNF9IXwotCi0v
LyBBIHNpbXBsZSBtb25vdG9uaWMgY291bnRlci4KLWNsYXNzIENvdW50ZXIgewotIHByaXZhdGU6
Ci0gIGludCBjb3VudGVyXzsKLQotIHB1YmxpYzoKLSAgLy8gQ3JlYXRlcyBhIGNvdW50ZXIgdGhh
dCBzdGFydHMgYXQgMC4KLSAgQ291bnRlcigpIDogY291bnRlcl8oMCkge30KLQotICAvLyBSZXR1
cm5zIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUsIGFuZCBpbmNyZW1lbnRzIGl0LgotICBpbnQg
SW5jcmVtZW50KCk7Ci0KLSAgLy8gUHJpbnRzIHRoZSBjdXJyZW50IGNvdW50ZXIgdmFsdWUgdG8g
U1RET1VULgotICB2b2lkIFByaW50KCkgY29uc3Q7Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX1NB
TVBMRVNfU0FNUExFNF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0
X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU0X3VuaXR0ZXN0LmNjCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTVhZmM3ZDVhMTYuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTRfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSw0NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJzYW1wbGU0LmgiCi0KLS8vIFRlc3Rz
IHRoZSBJbmNyZW1lbnQoKSBtZXRob2QuCi1URVNUKENvdW50ZXIsIEluY3JlbWVudCkgewotICBD
b3VudGVyIGM7Ci0KLSAgLy8gRVhQRUNUX0VRKCkgZXZhbHVhdGVzIGl0cyBhcmd1bWVudHMgZXhh
Y3RseSBvbmNlLCBzbyB0aGV5Ci0gIC8vIGNhbiBoYXZlIHNpZGUgZWZmZWN0cy4KLQotICBFWFBF
Q1RfRVEoMCwgYy5JbmNyZW1lbnQoKSk7Ci0gIEVYUEVDVF9FUSgxLCBjLkluY3JlbWVudCgpKTsK
LSAgRVhQRUNUX0VRKDIsIGMuSW5jcmVtZW50KCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3Qvc2FtcGxlcy9zYW1wbGU1X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1w
bGU1X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Q4ZTU3Nzc1
ODMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTVfdW5pdHRl
c3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20g
KFpoYW55b25nIFdhbikKLQotLy8gVGhpcyBzYW1wbGUgdGVhY2hlcyBob3cgdG8gcmV1c2UgYSB0
ZXN0IGZpeHR1cmUgaW4gbXVsdGlwbGUgdGVzdAotLy8gY2FzZXMgYnkgZGVyaXZpbmcgc3ViLWZp
eHR1cmVzIGZyb20gaXQuCi0vLwotLy8gV2hlbiB5b3UgZGVmaW5lIGEgdGVzdCBmaXh0dXJlLCB5
b3Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB0aGUgdGVzdAotLy8gY2FzZSB0aGF0IHdpbGwgdXNlIHRo
aXMgZml4dHVyZS4gIFRoZXJlZm9yZSwgYSB0ZXN0IGZpeHR1cmUgY2FuCi0vLyBiZSB1c2VkIGJ5
IG9ubHkgb25lIHRlc3QgY2FzZS4KLS8vCi0vLyBTb21ldGltZXMsIG1vcmUgdGhhbiBvbmUgdGVz
dCBjYXNlcyBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUgb3IKLS8vIHNsaWdodGx5IGRpZmZlcmVu
dCB0ZXN0IGZpeHR1cmVzLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgd2FudCB0bwotLy8gbWFrZSBz
dXJlIHRoYXQgYWxsIHRlc3RzIGZvciBhIEdVSSBsaWJyYXJ5IGRvbid0IGxlYWsgaW1wb3J0YW50
Ci0vLyBzeXN0ZW0gcmVzb3VyY2VzIGxpa2UgZm9udHMgYW5kIGJydXNoZXMuICBJbiBHb29nbGUg
VGVzdCwgeW91IGRvCi0vLyB0aGlzIGJ5IHB1dHRpbmcgdGhlIHNoYXJlZCBsb2dpYyBpbiBhIHN1
cGVyIChhcyBpbiAic3VwZXIgY2xhc3MiKQotLy8gdGVzdCBmaXh0dXJlLCBhbmQgdGhlbiBoYXZl
IGVhY2ggdGVzdCBjYXNlIHVzZSBhIGZpeHR1cmUgZGVyaXZlZAotLy8gZnJvbSB0aGlzIHN1cGVy
IGZpeHR1cmUuCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5j
bHVkZSAic2FtcGxlMy1pbmwuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUg
InNhbXBsZTEuaCIKLQotLy8gSW4gdGhpcyBzYW1wbGUsIHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQg
ZXZlcnkgdGVzdCBmaW5pc2hlcyB3aXRoaW4KLS8vIH41IHNlY29uZHMuICBJZiBhIHRlc3QgdGFr
ZXMgbG9uZ2VyIHRvIHJ1biwgd2UgY29uc2lkZXIgaXQgYQotLy8gZmFpbHVyZS4KLS8vCi0vLyBX
ZSBwdXQgdGhlIGNvZGUgZm9yIHRpbWluZyBhIHRlc3QgaW4gYSB0ZXN0IGZpeHR1cmUgY2FsbGVk
Ci0vLyAiUXVpY2tUZXN0Ii4gIFF1aWNrVGVzdCBpcyBpbnRlbmRlZCB0byBiZSB0aGUgc3VwZXIg
Zml4dHVyZSB0aGF0Ci0vLyBvdGhlciBmaXh0dXJlcyBkZXJpdmUgZnJvbSwgdGhlcmVmb3JlIHRo
ZXJlIGlzIG5vIHRlc3QgY2FzZSB3aXRoCi0vLyB0aGUgbmFtZSAiUXVpY2tUZXN0Ii4gIFRoaXMg
aXMgT0suCi0vLwotLy8gTGF0ZXIsIHdlIHdpbGwgZGVyaXZlIG11bHRpcGxlIHRlc3QgZml4dHVy
ZXMgZnJvbSBRdWlja1Rlc3QuCi1jbGFzcyBRdWlja1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci0gcHJvdGVjdGVkOgotICAvLyBSZW1lbWJlciB0aGF0IFNldFVwKCkgaXMgcnVuIGltbWVk
aWF0ZWx5IGJlZm9yZSBhIHRlc3Qgc3RhcnRzLgotICAvLyBUaGlzIGlzIGEgZ29vZCBwbGFjZSB0
byByZWNvcmQgdGhlIHN0YXJ0IHRpbWUuCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBz
dGFydF90aW1lXyA9IHRpbWUoTlVMTCk7Ci0gIH0KLQotICAvLyBUZWFyRG93bigpIGlzIGludm9r
ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSB0ZXN0IGZpbmlzaGVzLiAgSGVyZSB3ZQotICAvLyBjaGVj
ayBpZiB0aGUgdGVzdCB3YXMgdG9vIHNsb3cuCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsK
LSAgICAvLyBHZXRzIHRoZSB0aW1lIHdoZW4gdGhlIHRlc3QgZmluaXNoZXMKLSAgICBjb25zdCB0
aW1lX3QgZW5kX3RpbWUgPSB0aW1lKE5VTEwpOwotCi0gICAgLy8gQXNzZXJ0cyB0aGF0IHRoZSB0
ZXN0IHRvb2sgbm8gbW9yZSB0aGFuIH41IHNlY29uZHMuICBEaWQgeW91Ci0gICAgLy8ga25vdyB0
aGF0IHlvdSBjYW4gdXNlIGFzc2VydGlvbnMgaW4gU2V0VXAoKSBhbmQgVGVhckRvd24oKSBhcwot
ICAgIC8vIHdlbGw/Ci0gICAgRVhQRUNUX1RSVUUoZW5kX3RpbWUgLSBzdGFydF90aW1lXyA8PSA1
KSA8PCAiVGhlIHRlc3QgdG9vayB0b28gbG9uZy4iOwotICB9Ci0KLSAgLy8gVGhlIFVUQyB0aW1l
IChpbiBzZWNvbmRzKSB3aGVuIHRoZSB0ZXN0IHN0YXJ0cwotICB0aW1lX3Qgc3RhcnRfdGltZV87
Ci19OwotCi0KLS8vIFdlIGRlcml2ZSBhIGZpeHR1cmUgbmFtZWQgSW50ZWdlckZ1bmN0aW9uVGVz
dCBmcm9tIHRoZSBRdWlja1Rlc3QKLS8vIGZpeHR1cmUuICBBbGwgdGVzdHMgdXNpbmcgdGhpcyBm
aXh0dXJlIHdpbGwgYmUgYXV0b21hdGljYWxseQotLy8gcmVxdWlyZWQgdG8gYmUgcXVpY2suCi1j
bGFzcyBJbnRlZ2VyRnVuY3Rpb25UZXN0IDogcHVibGljIFF1aWNrVGVzdCB7Ci0gIC8vIFdlIGRv
bid0IG5lZWQgYW55IG1vcmUgbG9naWMgdGhhbiBhbHJlYWR5IGluIHRoZSBRdWlja1Rlc3QgZml4
dHVyZS4KLSAgLy8gVGhlcmVmb3JlIHRoZSBib2R5IGlzIGVtcHR5LgotfTsKLQotCi0vLyBOb3cg
d2UgY2FuIHdyaXRlIHRlc3RzIGluIHRoZSBJbnRlZ2VyRnVuY3Rpb25UZXN0IHRlc3QgY2FzZS4K
LQotLy8gVGVzdHMgRmFjdG9yaWFsKCkKLVRFU1RfRihJbnRlZ2VyRnVuY3Rpb25UZXN0LCBGYWN0
b3JpYWwpIHsKLSAgLy8gVGVzdHMgZmFjdG9yaWFsIG9mIG5lZ2F0aXZlIG51bWJlcnMuCi0gIEVY
UEVDVF9FUSgxLCBGYWN0b3JpYWwoLTUpKTsKLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgtMSkp
OwotICBFWFBFQ1RfR1QoRmFjdG9yaWFsKC0xMCksIDApOwotCi0gIC8vIFRlc3RzIGZhY3Rvcmlh
bCBvZiAwLgotICBFWFBFQ1RfRVEoMSwgRmFjdG9yaWFsKDApKTsKLQotICAvLyBUZXN0cyBmYWN0
b3JpYWwgb2YgcG9zaXRpdmUgbnVtYmVycy4KLSAgRVhQRUNUX0VRKDEsIEZhY3RvcmlhbCgxKSk7
Ci0gIEVYUEVDVF9FUSgyLCBGYWN0b3JpYWwoMikpOwotICBFWFBFQ1RfRVEoNiwgRmFjdG9yaWFs
KDMpKTsKLSAgRVhQRUNUX0VRKDQwMzIwLCBGYWN0b3JpYWwoOCkpOwotfQotCi0KLS8vIFRlc3Rz
IElzUHJpbWUoKQotVEVTVF9GKEludGVnZXJGdW5jdGlvblRlc3QsIElzUHJpbWUpIHsKLSAgLy8g
VGVzdHMgbmVnYXRpdmUgaW5wdXQuCi0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKC0xKSk7Ci0gIEVY
UEVDVF9GQUxTRShJc1ByaW1lKC0yKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKElOVF9NSU4p
KTsKLQotICAvLyBUZXN0cyBzb21lIHRyaXZpYWwgY2FzZXMuCi0gIEVYUEVDVF9GQUxTRShJc1By
aW1lKDApKTsKLSAgRVhQRUNUX0ZBTFNFKElzUHJpbWUoMSkpOwotICBFWFBFQ1RfVFJVRShJc1By
aW1lKDIpKTsKLSAgRVhQRUNUX1RSVUUoSXNQcmltZSgzKSk7Ci0KLSAgLy8gVGVzdHMgcG9zaXRp
dmUgaW5wdXQuCi0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDQpKTsKLSAgRVhQRUNUX1RSVUUoSXNQ
cmltZSg1KSk7Ci0gIEVYUEVDVF9GQUxTRShJc1ByaW1lKDYpKTsKLSAgRVhQRUNUX1RSVUUoSXNQ
cmltZSgyMykpOwotfQotCi0KLS8vIFRoZSBuZXh0IHRlc3QgY2FzZSAobmFtZWQgIlF1ZXVlVGVz
dCIpIGFsc28gbmVlZHMgdG8gYmUgcXVpY2ssIHNvCi0vLyB3ZSBkZXJpdmUgYW5vdGhlciBmaXh0
dXJlIGZyb20gUXVpY2tUZXN0LgotLy8KLS8vIFRoZSBRdWV1ZVRlc3QgdGVzdCBmaXh0dXJlIGhh
cyBzb21lIGxvZ2ljIGFuZCBzaGFyZWQgb2JqZWN0cyBpbgotLy8gYWRkaXRpb24gdG8gd2hhdCdz
IGluIFF1aWNrVGVzdCBhbHJlYWR5LiAgV2UgZGVmaW5lIHRoZSBhZGRpdGlvbmFsCi0vLyBzdHVm
ZiBpbnNpZGUgdGhlIGJvZHkgb2YgdGhlIHRlc3QgZml4dHVyZSwgYXMgdXN1YWwuCi1jbGFzcyBR
dWV1ZVRlc3QgOiBwdWJsaWMgUXVpY2tUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKLSAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBzZXQgdXAgdGhlIHN1cGVyIGZp
eHR1cmUgKFF1aWNrVGVzdCkuCi0gICAgUXVpY2tUZXN0OjpTZXRVcCgpOwotCi0gICAgLy8gU2Vj
b25kLCBzb21lIGFkZGl0aW9uYWwgc2V0dXAgZm9yIHRoaXMgZml4dHVyZS4KLSAgICBxMV8uRW5x
dWV1ZSgxKTsKLSAgICBxMl8uRW5xdWV1ZSgyKTsKLSAgICBxMl8uRW5xdWV1ZSgzKTsKLSAgfQot
Ci0gIC8vIEJ5IGRlZmF1bHQsIFRlYXJEb3duKCkgaW5oZXJpdHMgdGhlIGJlaGF2aW9yIG9mCi0g
IC8vIFF1aWNrVGVzdDo6VGVhckRvd24oKS4gIEFzIHdlIGhhdmUgbm8gYWRkaXRpb25hbCBjbGVh
bmluZyB3b3JrCi0gIC8vIGZvciBRdWV1ZVRlc3QsIHdlIG9taXQgaXQgaGVyZS4KLSAgLy8KLSAg
Ly8gdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAvLyAgIFF1aWNrVGVzdDo6VGVhckRvd24o
KTsKLSAgLy8gfQotCi0gIFF1ZXVlPGludD4gcTBfOwotICBRdWV1ZTxpbnQ+IHExXzsKLSAgUXVl
dWU8aW50PiBxMl87Ci19OwotCi0KLS8vIE5vdywgbGV0J3Mgd3JpdGUgdGVzdHMgdXNpbmcgdGhl
IFF1ZXVlVGVzdCBmaXh0dXJlLgotCi0vLyBUZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4K
LVRFU1RfRihRdWV1ZVRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikgewotICBFWFBFQ1RfRVEoMHUs
IHEwXy5TaXplKCkpOwotfQotCi0vLyBUZXN0cyBEZXF1ZXVlKCkuCi1URVNUX0YoUXVldWVUZXN0
LCBEZXF1ZXVlKSB7Ci0gIGludCogbiA9IHEwXy5EZXF1ZXVlKCk7Ci0gIEVYUEVDVF9UUlVFKG4g
PT0gTlVMTCk7Ci0KLSAgbiA9IHExXy5EZXF1ZXVlKCk7Ci0gIEVYUEVDVF9UUlVFKG4gIT0gTlVM
TCk7Ci0gIEVYUEVDVF9FUSgxLCAqbik7Ci0gIEVYUEVDVF9FUSgwdSwgcTFfLlNpemUoKSk7Ci0g
IGRlbGV0ZSBuOwotCi0gIG4gPSBxMl8uRGVxdWV1ZSgpOwotICBFWFBFQ1RfVFJVRShuICE9IE5V
TEwpOwotICBFWFBFQ1RfRVEoMiwgKm4pOwotICBFWFBFQ1RfRVEoMXUsIHEyXy5TaXplKCkpOwot
ICBkZWxldGUgbjsKLX0KLQotLy8gSWYgbmVjZXNzYXJ5LCB5b3UgY2FuIGRlcml2ZSBmdXJ0aGVy
IHRlc3QgZml4dHVyZXMgZnJvbSBhIGRlcml2ZWQKLS8vIGZpeHR1cmUgaXRzZWxmLiAgRm9yIGV4
YW1wbGUsIHlvdSBjYW4gZGVyaXZlIGFub3RoZXIgZml4dHVyZSBmcm9tCi0vLyBRdWV1ZVRlc3Qu
ICBHb29nbGUgVGVzdCBpbXBvc2VzIG5vIGxpbWl0IG9uIGhvdyBkZWVwIHRoZSBoaWVyYXJjaHkK
LS8vIGNhbiBiZS4gIEluIHByYWN0aWNlLCBob3dldmVyLCB5b3UgcHJvYmFibHkgZG9uJ3Qgd2Fu
dCBpdCB0byBiZSB0b28KLS8vIGRlZXAgYXMgdG8gYmUgY29uZnVzaW5nLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2Ft
cGxlcy9zYW1wbGU2X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
ZjIwMzZhNTE2MDguLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBs
ZTZfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8v
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlv
bi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8v
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29v
Z2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVz
dCBjb21tb24gcHJvcGVydGllcyBvZiBtdWx0aXBsZQotLy8gaW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBzYW1lIGludGVyZmFjZSAoYWthIGludGVyZmFjZSB0ZXN0cykuCi0KLS8vIFRoZSBpbnRlcmZh
Y2UgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIHRoaXMgaGVhZGVyLgotI2luY2x1ZGUg
InByaW1lX3RhYmxlcy5oIgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gRmlyc3Qs
IHdlIGRlZmluZSBzb21lIGZhY3RvcnkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBpbnN0YW5jZXMg
b2YKLS8vIHRoZSBpbXBsZW1lbnRhdGlvbnMuICBZb3UgbWF5IGJlIGFibGUgdG8gc2tpcCB0aGlz
IHN0ZXAgaWYgYWxsIHlvdXIKLS8vIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY29uc3RydWN0ZWQg
dGhlIHNhbWUgd2F5LgotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLVByaW1lVGFibGUqIENyZWF0ZVBy
aW1lVGFibGUoKTsKLQotdGVtcGxhdGUgPD4KLVByaW1lVGFibGUqIENyZWF0ZVByaW1lVGFibGU8
T25UaGVGbHlQcmltZVRhYmxlPigpIHsKLSAgcmV0dXJuIG5ldyBPblRoZUZseVByaW1lVGFibGU7
Ci19Ci0KLXRlbXBsYXRlIDw+Ci1QcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxlPFByZUNhbGN1
bGF0ZWRQcmltZVRhYmxlPigpIHsKLSAgcmV0dXJuIG5ldyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJs
ZSgxMDAwMCk7Ci19Ci0KLS8vIFRoZW4gd2UgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIHRl
bXBsYXRlLgotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1jbGFzcyBQcmltZVRhYmxlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFRoZSBjdG9yIGNhbGxzIHRoZSBm
YWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHByaW1lIHRhYmxlCi0gIC8vIGltcGxlbWVudGVk
IGJ5IFQuCi0gIFByaW1lVGFibGVUZXN0KCkgOiB0YWJsZV8oQ3JlYXRlUHJpbWVUYWJsZTxUPigp
KSB7fQotCi0gIHZpcnR1YWwgflByaW1lVGFibGVUZXN0KCkgeyBkZWxldGUgdGFibGVfOyB9Ci0K
LSAgLy8gTm90ZSB0aGF0IHdlIHRlc3QgYW4gaW1wbGVtZW50YXRpb24gdmlhIHRoZSBiYXNlIGlu
dGVyZmFjZQotICAvLyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gY2xhc3Mu
ICBUaGlzIGlzIGltcG9ydGFudAotICAvLyBmb3Iga2VlcGluZyB0aGUgdGVzdHMgY2xvc2UgdG8g
dGhlIHJlYWwgd29ybGQgc2NlbmFyaW8sIHdoZXJlIHRoZQotICAvLyBpbXBsZW1lbnRhdGlvbiBp
cyBpbnZva2VkIHZpYSB0aGUgYmFzZSBpbnRlcmZhY2UuICBJdCBhdm9pZHMKLSAgLy8gZ290LXlh
cyB3aGVyZSB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MgaGFzIGEgbWV0aG9kIHRoYXQgc2hhZG93
cwotICAvLyBhIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgKGJ1dCBzbGlnaHRseSBkaWZmZXJl
bnQgYXJndW1lbnQKLSAgLy8gdHlwZXMpIGluIHRoZSBiYXNlIGludGVyZmFjZSwgZm9yIGV4YW1w
bGUuCi0gIFByaW1lVGFibGUqIGNvbnN0IHRhYmxlXzsKLX07Ci0KLSNpZiBHVEVTVF9IQVNfVFlQ
RURfVEVTVAotCi11c2luZyB0ZXN0aW5nOjpUeXBlczsKLQotLy8gR29vZ2xlIFRlc3Qgb2ZmZXJz
IHR3byB3YXlzIGZvciByZXVzaW5nIHRlc3RzIGZvciBkaWZmZXJlbnQgdHlwZXMuCi0vLyBUaGUg
Zmlyc3QgaXMgY2FsbGVkICJ0eXBlZCB0ZXN0cyIuICBZb3Ugc2hvdWxkIHVzZSBpdCBpZiB5b3UK
LS8vIGFscmVhZHkga25vdyAqYWxsKiB0aGUgdHlwZXMgeW91IGFyZSBnb25uYSBleGVyY2lzZSB3
aGVuIHlvdSB3cml0ZQotLy8gdGhlIHRlc3RzLgotCi0vLyBUbyB3cml0ZSBhIHR5cGVkIHRlc3Qg
Y2FzZSwgZmlyc3QgdXNlCi0vLwotLy8gICBUWVBFRF9URVNUX0NBU0UoVGVzdENhc2VOYW1lLCBU
eXBlTGlzdCk7Ci0vLwotLy8gdG8gZGVjbGFyZSBpdCBhbmQgc3BlY2lmeSB0aGUgdHlwZSBwYXJh
bWV0ZXJzLiAgQXMgd2l0aCBURVNUX0YsCi0vLyBUZXN0Q2FzZU5hbWUgbXVzdCBtYXRjaCB0aGUg
dGVzdCBmaXh0dXJlIG5hbWUuCi0KLS8vIFRoZSBsaXN0IG9mIHR5cGVzIHdlIHdhbnQgdG8gdGVz
dC4KLXR5cGVkZWYgVHlwZXM8T25UaGVGbHlQcmltZVRhYmxlLCBQcmVDYWxjdWxhdGVkUHJpbWVU
YWJsZT4gSW1wbGVtZW50YXRpb25zOwotCi1UWVBFRF9URVNUX0NBU0UoUHJpbWVUYWJsZVRlc3Qs
IEltcGxlbWVudGF0aW9ucyk7Ci0KLS8vIFRoZW4gdXNlIFRZUEVEX1RFU1QoVGVzdENhc2VOYW1l
LCBUZXN0TmFtZSkgdG8gZGVmaW5lIGEgdHlwZWQgdGVzdCwKLS8vIHNpbWlsYXIgdG8gVEVTVF9G
LgotVFlQRURfVEVTVChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7
Ci0gIC8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCB5b3UgY2FuIHJlZmVyIHRvIHRoZSB0eXBlIHBh
cmFtZXRlciBieQotICAvLyBUeXBlUGFyYW0sIGFuZCByZWZlciB0byB0aGUgZml4dHVyZSBjbGFz
cyBieSBUZXN0Rml4dHVyZS4gIFdlCi0gIC8vIGRvbid0IG5lZWQgdGhlbSBpbiB0aGlzIGV4YW1w
bGUuCi0KLSAgLy8gU2luY2Ugd2UgYXJlIGluIHRoZSB0ZW1wbGF0ZSB3b3JsZCwgQysrIHJlcXVp
cmVzIGV4cGxpY2l0bHkKLSAgLy8gd3JpdGluZyAndGhpcy0+JyB3aGVuIHJlZmVycmluZyB0byBt
ZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzLgotICAvLyBUaGlzIGlzIHNvbWV0aGluZyB5b3Ug
aGF2ZSB0byBsZWFybiB0byBsaXZlIHdpdGguCi0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8t
PklzUHJpbWUoLTUpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgwKSk7
Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMSkpOwotICBFWFBFQ1RfRkFM
U0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDQpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxl
Xy0+SXNQcmltZSg2KSk7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTAw
KSk7Ci19Ci0KLVRZUEVEX1RFU1QoUHJpbWVUYWJsZVRlc3QsIFJldHVybnNUcnVlRm9yUHJpbWVz
KSB7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgyKSk7Ci0gIEVYUEVDVF9U
UlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgzKSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxl
Xy0+SXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSg3KSk7
Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgxMSkpOwotICBFWFBFQ1RfVFJV
RSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTMxKSk7Ci19Ci0KLVRZUEVEX1RFU1QoUHJpbWVUYWJs
ZVRlc3QsIENhbkdldE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwgdGhpcy0+dGFibGVfLT5H
ZXROZXh0UHJpbWUoMCkpOwotICBFWFBFQ1RfRVEoMywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJp
bWUoMikpOwotICBFWFBFQ1RfRVEoNSwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwot
ICBFWFBFQ1RfRVEoNywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoNSkpOwotICBFWFBFQ1Rf
RVEoMTEsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKLSAgRVhQRUNUX0VRKDEzMSwg
dGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8vIFRoYXQncyBpdCEgIEdv
b2dsZSBUZXN0IHdpbGwgcmVwZWF0IGVhY2ggVFlQRURfVEVTVCBmb3IgZWFjaCB0eXBlCi0vLyBp
biB0aGUgdHlwZSBsaXN0IHNwZWNpZmllZCBpbiBUWVBFRF9URVNUX0NBU0UuICBTaXQgYmFjayBh
bmQgYmUKLS8vIGhhcHB5IHRoYXQgeW91IGRvbid0IGhhdmUgdG8gZGVmaW5lIHRoZW0gbXVsdGlw
bGUgdGltZXMuCi0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQotI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUX1AKLQotdXNpbmcgdGVzdGluZzo6VHlwZXM7Ci0KLS8vIFNvbWV0aW1l
cywgaG93ZXZlciwgeW91IGRvbid0IHlldCBrbm93IGFsbCB0aGUgdHlwZXMgdGhhdCB5b3Ugd2Fu
dAotLy8gdG8gdGVzdCB3aGVuIHlvdSB3cml0ZSB0aGUgdGVzdHMuICBGb3IgZXhhbXBsZSwgaWYg
eW91IGFyZSB0aGUKLS8vIGF1dGhvciBvZiBhbiBpbnRlcmZhY2UgYW5kIGV4cGVjdCBvdGhlciBw
ZW9wbGUgdG8gaW1wbGVtZW50IGl0LCB5b3UKLS8vIG1pZ2h0IHdhbnQgdG8gd3JpdGUgYSBzZXQg
b2YgdGVzdHMgdG8gbWFrZSBzdXJlIGVhY2ggaW1wbGVtZW50YXRpb24KLS8vIGNvbmZvcm1zIHRv
IHNvbWUgYmFzaWMgcmVxdWlyZW1lbnRzLCBidXQgeW91IGRvbid0IGtub3cgd2hhdAotLy8gaW1w
bGVtZW50YXRpb25zIHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgZnV0dXJlLgotLy8KLS8vIEhvdyBj
YW4geW91IHdyaXRlIHRoZSB0ZXN0cyB3aXRob3V0IGNvbW1pdHRpbmcgdG8gdGhlIHR5cGUKLS8v
IHBhcmFtZXRlcnM/ICBUaGF0J3Mgd2hhdCAidHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzIiBjYW4g
ZG8gZm9yIHlvdS4KLS8vIEl0IGlzIGEgYml0IG1vcmUgaW52b2x2ZWQgdGhhbiB0eXBlZCB0ZXN0
cywgYnV0IGluIHJldHVybiB5b3UgZ2V0IGEKLS8vIHRlc3QgcGF0dGVybiB0aGF0IGNhbiBiZSBy
ZXVzZWQgaW4gbWFueSBjb250ZXh0cywgd2hpY2ggaXMgYSBiaWcKLS8vIHdpbi4gIEhlcmUncyBo
b3cgeW91IGRvIGl0OgotCi0vLyBGaXJzdCwgZGVmaW5lIGEgdGVzdCBmaXh0dXJlIGNsYXNzIHRl
bXBsYXRlLiAgSGVyZSB3ZSBqdXN0IHJldXNlCi0vLyB0aGUgUHJpbWVUYWJsZVRlc3QgZml4dHVy
ZSBkZWZpbmVkIGVhcmxpZXI6Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotY2xhc3MgUHJpbWVUYWJs
ZVRlc3QyIDogcHVibGljIFByaW1lVGFibGVUZXN0PFQ+IHsKLX07Ci0KLS8vIFRoZW4sIGRlY2xh
cmUgdGhlIHRlc3QgY2FzZS4gIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdGVzdAot
Ly8gZml4dHVyZSwgYW5kIGFsc28gdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSAoYXMgdXN1YWwp
LiAgVGhlIF9QCi0vLyBzdWZmaXggaXMgZm9yICJwYXJhbWV0ZXJpemVkIiBvciAicGF0dGVybiIu
Ci1UWVBFRF9URVNUX0NBU0VfUChQcmltZVRhYmxlVGVzdDIpOwotCi0vLyBOZXh0LCB1c2UgVFlQ
RURfVEVTVF9QKFRlc3RDYXNlTmFtZSwgVGVzdE5hbWUpIHRvIGRlZmluZSBhIHRlc3QsCi0vLyBz
aW1pbGFyIHRvIHdoYXQgeW91IGRvIHdpdGggVEVTVF9GLgotVFlQRURfVEVTVF9QKFByaW1lVGFi
bGVUZXN0MiwgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzKSB7Ci0gIEVYUEVDVF9GQUxTRSh0aGlz
LT50YWJsZV8tPklzUHJpbWUoLTUpKTsKLSAgRVhQRUNUX0ZBTFNFKHRoaXMtPnRhYmxlXy0+SXNQ
cmltZSgwKSk7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMSkpOwotICBF
WFBFQ1RfRkFMU0UodGhpcy0+dGFibGVfLT5Jc1ByaW1lKDQpKTsKLSAgRVhQRUNUX0ZBTFNFKHRo
aXMtPnRhYmxlXy0+SXNQcmltZSg2KSk7Ci0gIEVYUEVDVF9GQUxTRSh0aGlzLT50YWJsZV8tPklz
UHJpbWUoMTAwKSk7Ci19Ci0KLVRZUEVEX1RFU1RfUChQcmltZVRhYmxlVGVzdDIsIFJldHVybnNU
cnVlRm9yUHJpbWVzKSB7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgyKSk7
Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgzKSk7Ci0gIEVYUEVDVF9UUlVF
KHRoaXMtPnRhYmxlXy0+SXNQcmltZSg1KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+
SXNQcmltZSg3KSk7Ci0gIEVYUEVDVF9UUlVFKHRoaXMtPnRhYmxlXy0+SXNQcmltZSgxMSkpOwot
ICBFWFBFQ1RfVFJVRSh0aGlzLT50YWJsZV8tPklzUHJpbWUoMTMxKSk7Ci19Ci0KLVRZUEVEX1RF
U1RfUChQcmltZVRhYmxlVGVzdDIsIENhbkdldE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwg
dGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwotICBFWFBFQ1RfRVEoMywgdGhpcy0+dGFi
bGVfLT5HZXROZXh0UHJpbWUoMikpOwotICBFWFBFQ1RfRVEoNSwgdGhpcy0+dGFibGVfLT5HZXRO
ZXh0UHJpbWUoMykpOwotICBFWFBFQ1RfRVEoNywgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUo
NSkpOwotICBFWFBFQ1RfRVEoMTEsIHRoaXMtPnRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKLSAg
RVhQRUNUX0VRKDEzMSwgdGhpcy0+dGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8v
IFR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBpbnZvbHZlIG9uZSBleHRyYSBzdGVwOiB5b3UgaGF2
ZSB0bwotLy8gZW51bWVyYXRlIHRoZSB0ZXN0cyB5b3UgZGVmaW5lZDoKLVJFR0lTVEVSX1RZUEVE
X1RFU1RfQ0FTRV9QKAotICAgIFByaW1lVGFibGVUZXN0MiwgIC8vIFRoZSBmaXJzdCBhcmd1bWVu
dCBpcyB0aGUgdGVzdCBjYXNlIG5hbWUuCi0gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50
cyBhcmUgdGhlIHRlc3QgbmFtZXMuCi0gICAgUmV0dXJuc0ZhbHNlRm9yTm9uUHJpbWVzLCBSZXR1
cm5zVHJ1ZUZvclByaW1lcywgQ2FuR2V0TmV4dFByaW1lKTsKLQotLy8gQXQgdGhpcyBwb2ludCB0
aGUgdGVzdCBwYXR0ZXJuIGlzIGRvbmUuICBIb3dldmVyLCB5b3UgZG9uJ3QgaGF2ZQotLy8gYW55
IHJlYWwgdGVzdCB5ZXQgYXMgeW91IGhhdmVuJ3Qgc2FpZCB3aGljaCB0eXBlcyB5b3Ugd2FudCB0
byBydW4KLS8vIHRoZSB0ZXN0cyB3aXRoLgotCi0vLyBUbyB0dXJuIHRoZSBhYnN0cmFjdCB0ZXN0
IHBhdHRlcm4gaW50byByZWFsIHRlc3RzLCB5b3UgaW5zdGFudGlhdGUKLS8vIGl0IHdpdGggYSBs
aXN0IG9mIHR5cGVzLiAgVXN1YWxseSB0aGUgdGVzdCBwYXR0ZXJuIHdpbGwgYmUgZGVmaW5lZAot
Ly8gaW4gYSAuaCBmaWxlLCBhbmQgYW55b25lIGNhbiAjaW5jbHVkZSBhbmQgaW5zdGFudGlhdGUg
aXQuICBZb3UgY2FuCi0vLyBldmVuIGluc3RhbnRpYXRlIGl0IG1vcmUgdGhhbiBvbmNlIGluIHRo
ZSBzYW1lIHByb2dyYW0uICBUbyB0ZWxsCi0vLyBkaWZmZXJlbnQgaW5zdGFuY2VzIGFwYXJ0LCB5
b3UgZ2l2ZSBlYWNoIG9mIHRoZW0gYSBuYW1lLCB3aGljaCB3aWxsCi0vLyBiZWNvbWUgcGFydCBv
ZiB0aGUgdGVzdCBjYXNlIG5hbWUgYW5kIGNhbiBiZSB1c2VkIGluIHRlc3QgZmlsdGVycy4KLQot
Ly8gVGhlIGxpc3Qgb2YgdHlwZXMgd2Ugd2FudCB0byB0ZXN0LiAgTm90ZSB0aGF0IGl0IGRvZXNu
J3QgaGF2ZSB0byBiZQotLy8gZGVmaW5lZCBhdCB0aGUgdGltZSB3ZSB3cml0ZSB0aGUgVFlQRURf
VEVTVF9QKClzLgotdHlwZWRlZiBUeXBlczxPblRoZUZseVByaW1lVGFibGUsIFByZUNhbGN1bGF0
ZWRQcmltZVRhYmxlPgotICAgIFByaW1lVGFibGVJbXBsZW1lbnRhdGlvbnM7Ci1JTlNUQU5USUFU
RV9UWVBFRF9URVNUX0NBU0VfUChPblRoZUZseUFuZFByZUNhbGN1bGF0ZWQsICAgIC8vIEluc3Rh
bmNlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1lVGFibGVUZXN0Miwg
ICAgICAgICAgICAgLy8gVGVzdCBjYXNlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByaW1lVGFibGVJbXBsZW1lbnRhdGlvbnMpOyAgLy8gVHlwZSBsaXN0Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxl
cy9zYW1wbGU3X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU3X3VuaXR0
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjY1MWEyMWQ2NDkuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZTdfdW5pdHRlc3QuY2MKKysr
IC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIElu
Yy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExv
c2V2KQotCi0vLyBUaGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb21tb24gcHJvcGVydGll
cyBvZiBtdWx0aXBsZQotLy8gaW1wbGVtZW50YXRpb25zIG9mIGFuIGludGVyZmFjZSAoYWthIGlu
dGVyZmFjZSB0ZXN0cykgdXNpbmcKLS8vIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuIEVhY2gg
dGVzdCBpbiB0aGUgdGVzdCBjYXNlIGhhcwotLy8gYSBwYXJhbWV0ZXIgdGhhdCBpcyBhbiBpbnRl
cmZhY2UgcG9pbnRlciB0byBhbiBpbXBsZW1lbnRhdGlvbgotLy8gdGVzdGVkLgotCi0vLyBUaGUg
aW50ZXJmYWNlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zIGFyZSBpbiB0aGlzIGhlYWRlci4KLSNp
bmNsdWRlICJwcmltZV90YWJsZXMuaCIKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNp
ZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07
Ci11c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLQotLy8gQXMgYSBnZW5lcmFsIHJ1bGUsIHRvIHBy
ZXZlbnQgYSB0ZXN0IGZyb20gYWZmZWN0aW5nIHRoZSB0ZXN0cyB0aGF0IGNvbWUKLS8vIGFmdGVy
IGl0LCB5b3Ugc2hvdWxkIGNyZWF0ZSBhbmQgZGVzdHJveSB0aGUgdGVzdGVkIG9iamVjdHMgZm9y
IGVhY2ggdGVzdAotLy8gaW5zdGVhZCBvZiByZXVzaW5nIHRoZW0uICBJbiB0aGlzIHNhbXBsZSB3
ZSB3aWxsIGRlZmluZSBhIHNpbXBsZSBmYWN0b3J5Ci0vLyBmdW5jdGlvbiBmb3IgUHJpbWVUYWJs
ZSBvYmplY3RzLiAgV2Ugd2lsbCBpbnN0YW50aWF0ZSBvYmplY3RzIGluIHRlc3QncwotLy8gU2V0
VXAoKSBtZXRob2QgYW5kIGRlbGV0ZSB0aGVtIGluIFRlYXJEb3duKCkgbWV0aG9kLgotdHlwZWRl
ZiBQcmltZVRhYmxlKiBDcmVhdGVQcmltZVRhYmxlRnVuYygpOwotCi1QcmltZVRhYmxlKiBDcmVh
dGVPblRoZUZseVByaW1lVGFibGUoKSB7Ci0gIHJldHVybiBuZXcgT25UaGVGbHlQcmltZVRhYmxl
KCk7Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgbWF4X3ByZWNhbGN1bGF0ZWQ+Ci1QcmltZVRhYmxl
KiBDcmVhdGVQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSgpIHsKLSAgcmV0dXJuIG5ldyBQcmVDYWxj
dWxhdGVkUHJpbWVUYWJsZShtYXhfcHJlY2FsY3VsYXRlZCk7Ci19Ci0KLS8vIEluc2lkZSB0aGUg
dGVzdCBib2R5LCBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQgVGVhckRvd24oKSB5
b3UKLS8vIGNhbiByZWZlciB0byB0aGUgdGVzdCBwYXJhbWV0ZXIgYnkgR2V0UGFyYW0oKS4gIElu
IHRoaXMgY2FzZSwgdGhlIHRlc3QKLS8vIHBhcmFtZXRlciBpcyBhIGZhY3RvcnkgZnVuY3Rpb24g
d2hpY2ggd2UgY2FsbCBpbiBmaXh0dXJlJ3MgU2V0VXAoKSB0bwotLy8gY3JlYXRlIGFuZCBzdG9y
ZSBhbiBpbnN0YW5jZSBvZiBQcmltZVRhYmxlLgotY2xhc3MgUHJpbWVUYWJsZVRlc3QgOiBwdWJs
aWMgVGVzdFdpdGhQYXJhbTxDcmVhdGVQcmltZVRhYmxlRnVuYyo+IHsKLSBwdWJsaWM6Ci0gIHZp
cnR1YWwgflByaW1lVGFibGVUZXN0KCkgeyBkZWxldGUgdGFibGVfOyB9Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsgdGFibGVfID0gKCpHZXRQYXJhbSgpKSgpOyB9Ci0gIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpIHsKLSAgICBkZWxldGUgdGFibGVfOwotICAgIHRhYmxlXyA9IE5VTEw7Ci0gIH0K
LQotIHByb3RlY3RlZDoKLSAgUHJpbWVUYWJsZSogdGFibGVfOwotfTsKLQotVEVTVF9QKFByaW1l
VGFibGVUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25QcmltZXMpIHsKLSAgRVhQRUNUX0ZBTFNFKHRh
YmxlXy0+SXNQcmltZSgtNSkpOwotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDApKTsK
LSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0YWJs
ZV8tPklzUHJpbWUoNCkpOwotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDYpKTsKLSAg
RVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKLX0KLQotVEVTVF9QKFByaW1lVGFi
bGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykgewotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklz
UHJpbWUoMikpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMykpOwotICBFWFBFQ1Rf
VFJVRSh0YWJsZV8tPklzUHJpbWUoNSkpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUo
NykpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMTEpKTsKLSAgRVhQRUNUX1RSVUUo
dGFibGVfLT5Jc1ByaW1lKDEzMSkpOwotfQotCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENhbkdl
dE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwgdGFibGVfLT5HZXROZXh0UHJpbWUoMCkpOwot
ICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0UHJpbWUoMikpOwotICBFWFBFQ1RfRVEoNSwg
dGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwotICBFWFBFQ1RfRVEoNywgdGFibGVfLT5HZXROZXh0
UHJpbWUoNSkpOwotICBFWFBFQ1RfRVEoMTEsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsKLSAg
RVhQRUNUX0VRKDEzMSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8vIEluIG9y
ZGVyIHRvIHJ1biB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCB5b3UgbmVlZCB0byBpbnN0YW50
aWF0ZSB0aGVtLAotLy8gb3IgYmluZCB0aGVtIHRvIGEgbGlzdCBvZiB2YWx1ZXMgd2hpY2ggd2ls
bCBiZSB1c2VkIGFzIHRlc3QgcGFyYW1ldGVycy4KLS8vIFlvdSBjYW4gaW5zdGFudGlhdGUgdGhl
bSBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiBtb2R1bGUsIG9yIGV2ZW4KLS8vIGluc3RhbnRp
YXRlIHRoZW0gc2V2ZXJhbCB0aW1lcy4KLS8vCi0vLyBIZXJlLCB3ZSBpbnN0YW50aWF0ZSBvdXIg
dGVzdHMgd2l0aCBhIGxpc3Qgb2YgdHdvIFByaW1lVGFibGUgb2JqZWN0Ci0vLyBmYWN0b3J5IGZ1
bmN0aW9uczoKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAotICAgIE9uVGhlRmx5QW5kUHJlQ2Fs
Y3VsYXRlZCwKLSAgICBQcmltZVRhYmxlVGVzdCwKLSAgICBWYWx1ZXMoJkNyZWF0ZU9uVGhlRmx5
UHJpbWVUYWJsZSwgJkNyZWF0ZVByZUNhbGN1bGF0ZWRQcmltZVRhYmxlPDEwMDA+KSk7Ci0KLSNl
bHNlCi0KLS8vIEdvb2dsZSBUZXN0IG1heSBub3Qgc3VwcG9ydCB2YWx1ZS1wYXJhbWV0ZXJpemVk
IHRlc3RzIHdpdGggc29tZQotLy8gY29tcGlsZXJzLiBJZiB3ZSB1c2UgY29uZGl0aW9uYWwgY29t
cGlsYXRpb24gdG8gY29tcGlsZSBvdXQgYWxsCi0vLyBjb2RlIHJlZmVycmluZyB0byB0aGUgZ3Rl
c3RfbWFpbiBsaWJyYXJ5LCBNU1ZDIGxpbmtlciB3aWxsIG5vdCBsaW5rCi0vLyB0aGF0IGxpYnJh
cnkgYXQgYWxsIGFuZCBjb25zZXF1ZW50bHkgY29tcGxhaW4gYWJvdXQgbWlzc2luZyBlbnRyeQot
Ly8gcG9pbnQgZGVmaW5lZCBpbiB0aGF0IGxpYnJhcnkgKGZhdGFsIGVycm9yIExOSzE1NjE6IGVu
dHJ5IHBvaW50Ci0vLyBtdXN0IGJlIGRlZmluZWQpLiBUaGlzIGR1bW15IHRlc3Qga2VlcHMgZ3Rl
c3RfbWFpbiBsaW5rZWQgaW4uCi1URVNUKER1bW15VGVzdCwgVmFsdWVQYXJhbWV0ZXJpemVkVGVz
dHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0Zm9ybSkge30KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU4X3Vu
aXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2FtcGxlcy9zYW1wbGU4X3VuaXR0ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mjc0MzM0MDY3NDguLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zYW1wbGVzL3NhbXBsZThfdW5pdHRlc3QuY2MKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIEluYy4KLS8vIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBt
ZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
Ly8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotCi0vLyBU
aGlzIHNhbXBsZSBzaG93cyBob3cgdG8gdGVzdCBjb2RlIHJlbHlpbmcgb24gc29tZSBnbG9iYWwg
ZmxhZyB2YXJpYWJsZXMuCi0vLyBDb21iaW5lKCkgaGVscHMgd2l0aCBnZW5lcmF0aW5nIGFsbCBw
b3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygc3VjaCBmbGFncywKLS8vIGFuZCBlYWNoIHRlc3QgaXMg
Z2l2ZW4gb25lIGNvbWJpbmF0aW9uIGFzIGEgcGFyYW1ldGVyLgotCi0vLyBVc2UgY2xhc3MgZGVm
aW5pdGlvbnMgdG8gdGVzdCBmcm9tIHRoaXMgaGVhZGVyLgotI2luY2x1ZGUgInByaW1lX3RhYmxl
cy5oIgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19DT01CSU5F
Ci0KLS8vIFN1cHBvc2Ugd2Ugd2FudCB0byBpbnRyb2R1Y2UgYSBuZXcsIGltcHJvdmVkIGltcGxl
bWVudGF0aW9uIG9mIFByaW1lVGFibGUKLS8vIHdoaWNoIGNvbWJpbmVzIHNwZWVkIG9mIFByZWNh
bGNQcmltZVRhYmxlIGFuZCB2ZXJzYXRpbGl0eSBvZgotLy8gT25UaGVGbHlQcmltZVRhYmxlIChz
ZWUgcHJpbWVfdGFibGVzLmgpLiBJbnNpZGUgaXQgaW5zdGFudGlhdGVzIGJvdGgKLS8vIFByZWNh
bGNQcmltZVRhYmxlIGFuZCBPblRoZUZseVByaW1lVGFibGUgYW5kIHVzZXMgdGhlIG9uZSB0aGF0
IGlzIG1vcmUKLS8vIGFwcHJvcHJpYXRlIHVuZGVyIHRoZSBjaXJjdW1zdGFuY2VzLiBCdXQgaW4g
bG93IG1lbW9yeSBjb25kaXRpb25zLCBpdCBjYW4gYmUKLS8vIHRvbGQgdG8gaW5zdGFudGlhdGUg
d2l0aG91dCBQcmVjYWxjUHJpbWVUYWJsZSBpbnN0YW5jZSBhdCBhbGwgYW5kIHVzZSBvbmx5Ci0v
LyBPblRoZUZseVByaW1lVGFibGUuCi1jbGFzcyBIeWJyaWRQcmltZVRhYmxlIDogcHVibGljIFBy
aW1lVGFibGUgewotIHB1YmxpYzoKLSAgSHlicmlkUHJpbWVUYWJsZShib29sIGZvcmNlX29uX3Ro
ZV9mbHksIGludCBtYXhfcHJlY2FsY3VsYXRlZCkKLSAgICAgIDogb25fdGhlX2ZseV9pbXBsXyhu
ZXcgT25UaGVGbHlQcmltZVRhYmxlKSwKLSAgICAgICAgcHJlY2FsY19pbXBsXyhmb3JjZV9vbl90
aGVfZmx5ID8gTlVMTCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQcmVDYWxjdWxh
dGVkUHJpbWVUYWJsZShtYXhfcHJlY2FsY3VsYXRlZCkpLAotICAgICAgICBtYXhfcHJlY2FsY3Vs
YXRlZF8obWF4X3ByZWNhbGN1bGF0ZWQpIHt9Ci0gIHZpcnR1YWwgfkh5YnJpZFByaW1lVGFibGUo
KSB7Ci0gICAgZGVsZXRlIG9uX3RoZV9mbHlfaW1wbF87Ci0gICAgZGVsZXRlIHByZWNhbGNfaW1w
bF87Ci0gIH0KLQotICB2aXJ0dWFsIGJvb2wgSXNQcmltZShpbnQgbikgY29uc3QgewotICAgIGlm
IChwcmVjYWxjX2ltcGxfICE9IE5VTEwgJiYgbiA8IG1heF9wcmVjYWxjdWxhdGVkXykKLSAgICAg
IHJldHVybiBwcmVjYWxjX2ltcGxfLT5Jc1ByaW1lKG4pOwotICAgIGVsc2UKLSAgICAgIHJldHVy
biBvbl90aGVfZmx5X2ltcGxfLT5Jc1ByaW1lKG4pOwotICB9Ci0KLSAgdmlydHVhbCBpbnQgR2V0
TmV4dFByaW1lKGludCBwKSBjb25zdCB7Ci0gICAgaW50IG5leHRfcHJpbWUgPSAtMTsKLSAgICBp
ZiAocHJlY2FsY19pbXBsXyAhPSBOVUxMICYmIHAgPCBtYXhfcHJlY2FsY3VsYXRlZF8pCi0gICAg
ICBuZXh0X3ByaW1lID0gcHJlY2FsY19pbXBsXy0+R2V0TmV4dFByaW1lKHApOwotCi0gICAgcmV0
dXJuIG5leHRfcHJpbWUgIT0gLTEgPyBuZXh0X3ByaW1lIDogb25fdGhlX2ZseV9pbXBsXy0+R2V0
TmV4dFByaW1lKHApOwotICB9Ci0KLSBwcml2YXRlOgotICBPblRoZUZseVByaW1lVGFibGUqIG9u
X3RoZV9mbHlfaW1wbF87Ci0gIFByZUNhbGN1bGF0ZWRQcmltZVRhYmxlKiBwcmVjYWxjX2ltcGxf
OwotICBpbnQgbWF4X3ByZWNhbGN1bGF0ZWRfOwotfTsKLQotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtOwotdXNpbmcgOjp0ZXN0aW5nOjpCb29sOwotdXNpbmcgOjp0ZXN0aW5nOjpWYWx1
ZXM7Ci11c2luZyA6OnRlc3Rpbmc6OkNvbWJpbmU7Ci0KLS8vIFRvIHRlc3QgYWxsIGNvZGUgcGF0
aHMgZm9yIEh5YnJpZFByaW1lVGFibGUgd2UgbXVzdCB0ZXN0IGl0IHdpdGggbnVtYmVycwotLy8g
Ym90aCB3aXRoaW4gYW5kIG91dHNpZGUgUHJlQ2FsY3VsYXRlZFByaW1lVGFibGUncyBjYXBhY2l0
eSBhbmQgYWxzbyB3aXRoCi0vLyBQcmVDYWxjdWxhdGVkUHJpbWVUYWJsZSBkaXNhYmxlZC4gV2Ug
ZG8gdGhpcyBieSBkZWZpbmluZyBmaXh0dXJlIHdoaWNoIHdpbGwKLS8vIGFjY2VwdCBkaWZmZXJl
bnQgY29tYmluYXRpb25zIG9mIHBhcmFtZXRlcnMgZm9yIGluc3RhbnRpYXRpbmcgYQotLy8gSHli
cmlkUHJpbWVUYWJsZSBpbnN0YW5jZS4KLWNsYXNzIFByaW1lVGFibGVUZXN0IDogcHVibGljIFRl
c3RXaXRoUGFyYW08IDo6dGVzdGluZzo6dHVwbGU8Ym9vbCwgaW50PiA+IHsKLSBwcm90ZWN0ZWQ6
Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBUaGlzIGNhbiBiZSB3cml0dGVuIGFz
Ci0gICAgLy8KLSAgICAvLyBib29sIGZvcmNlX29uX3RoZV9mbHk7Ci0gICAgLy8gaW50IG1heF9w
cmVjYWxjdWxhdGVkOwotICAgIC8vIHRpZShmb3JjZV9vbl90aGVfZmx5LCBtYXhfcHJlY2FsY3Vs
YXRlZCkgPSBHZXRQYXJhbSgpOwotICAgIC8vCi0gICAgLy8gb25jZSB0aGUgR29vZ2xlIEMrKyBT
dHlsZSBHdWlkZSBhbGxvd3MgdXNlIG9mIDo6c3RkOjp0cjE6OnRpZS4KLSAgICAvLwotICAgIGJv
b2wgZm9yY2Vfb25fdGhlX2ZseSA9IDo6dGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkpOwotICAg
IGludCBtYXhfcHJlY2FsY3VsYXRlZCA9IDo6dGVzdGluZzo6Z2V0PDE+KEdldFBhcmFtKCkpOwot
ICAgIHRhYmxlXyA9IG5ldyBIeWJyaWRQcmltZVRhYmxlKGZvcmNlX29uX3RoZV9mbHksIG1heF9w
cmVjYWxjdWxhdGVkKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgZGVs
ZXRlIHRhYmxlXzsKLSAgICB0YWJsZV8gPSBOVUxMOwotICB9Ci0gIEh5YnJpZFByaW1lVGFibGUq
IHRhYmxlXzsKLX07Ci0KLVRFU1RfUChQcmltZVRhYmxlVGVzdCwgUmV0dXJuc0ZhbHNlRm9yTm9u
UHJpbWVzKSB7Ci0gIC8vIEluc2lkZSB0aGUgdGVzdCBib2R5LCB5b3UgY2FuIHJlZmVyIHRvIHRo
ZSB0ZXN0IHBhcmFtZXRlciBieSBHZXRQYXJhbSgpLgotICAvLyBJbiB0aGlzIGNhc2UsIHRoZSB0
ZXN0IHBhcmFtZXRlciBpcyBhIFByaW1lVGFibGUgaW50ZXJmYWNlIHBvaW50ZXIgd2hpY2gKLSAg
Ly8gd2UgY2FuIHVzZSBkaXJlY3RseS4KLSAgLy8gUGxlYXNlIG5vdGUgdGhhdCB5b3UgY2FuIGFs
c28gc2F2ZSBpdCBpbiB0aGUgZml4dHVyZSdzIFNldFVwKCkgbWV0aG9kCi0gIC8vIG9yIGNvbnN0
cnVjdG9yIGFuZCB1c2Ugc2F2ZWQgY29weSBpbiB0aGUgdGVzdHMuCi0KLSAgRVhQRUNUX0ZBTFNF
KHRhYmxlXy0+SXNQcmltZSgtNSkpOwotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDAp
KTsKLSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxKSk7Ci0gIEVYUEVDVF9GQUxTRSh0
YWJsZV8tPklzUHJpbWUoNCkpOwotICBFWFBFQ1RfRkFMU0UodGFibGVfLT5Jc1ByaW1lKDYpKTsK
LSAgRVhQRUNUX0ZBTFNFKHRhYmxlXy0+SXNQcmltZSgxMDApKTsKLX0KLQotVEVTVF9QKFByaW1l
VGFibGVUZXN0LCBSZXR1cm5zVHJ1ZUZvclByaW1lcykgewotICBFWFBFQ1RfVFJVRSh0YWJsZV8t
PklzUHJpbWUoMikpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMykpOwotICBFWFBF
Q1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoNSkpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJp
bWUoNykpOwotICBFWFBFQ1RfVFJVRSh0YWJsZV8tPklzUHJpbWUoMTEpKTsKLSAgRVhQRUNUX1RS
VUUodGFibGVfLT5Jc1ByaW1lKDEzMSkpOwotfQotCi1URVNUX1AoUHJpbWVUYWJsZVRlc3QsIENh
bkdldE5leHRQcmltZSkgewotICBFWFBFQ1RfRVEoMiwgdGFibGVfLT5HZXROZXh0UHJpbWUoMCkp
OwotICBFWFBFQ1RfRVEoMywgdGFibGVfLT5HZXROZXh0UHJpbWUoMikpOwotICBFWFBFQ1RfRVEo
NSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMykpOwotICBFWFBFQ1RfRVEoNywgdGFibGVfLT5HZXRO
ZXh0UHJpbWUoNSkpOwotICBFWFBFQ1RfRVEoMTEsIHRhYmxlXy0+R2V0TmV4dFByaW1lKDcpKTsK
LSAgRVhQRUNUX0VRKDEzMSwgdGFibGVfLT5HZXROZXh0UHJpbWUoMTI4KSk7Ci19Ci0KLS8vIElu
IG9yZGVyIHRvIHJ1biB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3RzLCB5b3UgbmVlZCB0byBpbnN0
YW50aWF0ZSB0aGVtLAotLy8gb3IgYmluZCB0aGVtIHRvIGEgbGlzdCBvZiB2YWx1ZXMgd2hpY2gg
d2lsbCBiZSB1c2VkIGFzIHRlc3QgcGFyYW1ldGVycy4KLS8vIFlvdSBjYW4gaW5zdGFudGlhdGUg
dGhlbSBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiBtb2R1bGUsIG9yIGV2ZW4KLS8vIGluc3Rh
bnRpYXRlIHRoZW0gc2V2ZXJhbCB0aW1lcy4KLS8vCi0vLyBIZXJlLCB3ZSBpbnN0YW50aWF0ZSBv
dXIgdGVzdHMgd2l0aCBhIGxpc3Qgb2YgcGFyYW1ldGVycy4gV2UgbXVzdCBjb21iaW5lCi0vLyBh
bGwgdmFyaWF0aW9ucyBvZiB0aGUgYm9vbGVhbiBmbGFnIHN1cHByZXNzaW5nIFByZWNhbGNQcmlt
ZVRhYmxlIGFuZCBzb21lCi0vLyBtZWFuaW5nZnVsIHZhbHVlcyBmb3IgdGVzdHMuIFdlIGNob29z
ZSBhIHNtYWxsIHZhbHVlICgxKSwgYW5kIGEgdmFsdWUgdGhhdAotLy8gd2lsbCBwdXQgc29tZSBv
ZiB0aGUgdGVzdGVkIG51bWJlcnMgYmV5b25kIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQotLy8gUHJl
Y2FsY1ByaW1lVGFibGUgaW5zdGFuY2UgYW5kIHNvbWUgaW5zaWRlIGl0ICgxMCkuIENvbWJpbmUg
d2lsbCBwcm9kdWNlIGFsbAotLy8gcG9zc2libGUgY29tYmluYXRpb25zLgotSU5TVEFOVElBVEVf
VEVTVF9DQVNFX1AoTWVhbmluZ2Z1bFRlc3RQYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgUHJpbWVUYWJsZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKEJv
b2woKSwgVmFsdWVzKDEsIDEwKSkpOwotCi0jZWxzZQotCi0vLyBHb29nbGUgVGVzdCBtYXkgbm90
IHN1cHBvcnQgQ29tYmluZSgpIHdpdGggc29tZSBjb21waWxlcnMuIElmIHdlCi0vLyB1c2UgY29u
ZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gY29tcGlsZSBvdXQgYWxsIGNvZGUgcmVmZXJyaW5nIHRv
Ci0vLyB0aGUgZ3Rlc3RfbWFpbiBsaWJyYXJ5LCBNU1ZDIGxpbmtlciB3aWxsIG5vdCBsaW5rIHRo
YXQgbGlicmFyeSBhdAotLy8gYWxsIGFuZCBjb25zZXF1ZW50bHkgY29tcGxhaW4gYWJvdXQgbWlz
c2luZyBlbnRyeSBwb2ludCBkZWZpbmVkIGluCi0vLyB0aGF0IGxpYnJhcnkgKGZhdGFsIGVycm9y
IExOSzE1NjE6IGVudHJ5IHBvaW50IG11c3QgYmUKLS8vIGRlZmluZWQpLiBUaGlzIGR1bW15IHRl
c3Qga2VlcHMgZ3Rlc3RfbWFpbiBsaW5rZWQgaW4uCi1URVNUKER1bW15VGVzdCwgQ29tYmluZUlz
Tm90U3VwcG9ydGVkT25UaGlzUGxhdGZvcm0pIHt9Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0NP
TUJJTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3NhbXBsZXMvc2FtcGxlOV91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjJlMjA3OWJmM2IzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc2FtcGxlcy9zYW1wbGU5X3VuaXR0ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTYw
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotCi0vLyBUaGlzIHNhbXBsZSBz
aG93cyBob3cgdG8gdXNlIEdvb2dsZSBUZXN0IGxpc3RlbmVyIEFQSSB0byBpbXBsZW1lbnQKLS8v
IGFuIGFsdGVybmF0aXZlIGNvbnNvbGUgb3V0cHV0IGFuZCBob3cgdG8gdXNlIHRoZSBVbml0VGVz
dCByZWZsZWN0aW9uIEFQSQotLy8gdG8gZW51bWVyYXRlIHRlc3QgY2FzZXMgYW5kIHRlc3RzIGFu
ZCB0byBpbnNwZWN0IHRoZWlyIHJlc3VsdHMuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5j
bHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotdXNpbmcgOjp0ZXN0aW5nOjpFbXB0eVRlc3RFdmVudExp
c3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5nIDo6dGVzdGlu
Zzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2luZyA6OnRlc3Rpbmc6OlRl
c3RFdmVudExpc3RlbmVyczsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdEluZm87Ci11c2luZyA6OnRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLQotbmFt
ZXNwYWNlIHsKLQotLy8gUHJvdmlkZXMgYWx0ZXJuYXRpdmUgb3V0cHV0IG1vZGUgd2hpY2ggcHJv
ZHVjZXMgbWluaW1hbCBhbW91bnQgb2YKLS8vIGluZm9ybWF0aW9uIGFib3V0IHRlc3RzLgotY2xh
c3MgVGVyc2VQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotIHByaXZh
dGU6Ci0gIC8vIENhbGxlZCBiZWZvcmUgYW55IHRlc3QgYWN0aXZpdHkgc3RhcnRzLgotICB2aXJ0
dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKiB1bml0X3Rlc3Qg
Ki8pIHt9Ci0KLSAgLy8gQ2FsbGVkIGFmdGVyIGFsbCB0ZXN0IGFjdGl2aXRpZXMgaGF2ZSBlbmRl
ZC4KLSAgdmlydHVhbCB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRf
dGVzdCkgewotICAgIGZwcmludGYoc3Rkb3V0LCAiVEVTVCAlc1xuIiwgdW5pdF90ZXN0LlBhc3Nl
ZCgpID8gIlBBU1NFRCIgOiAiRkFJTEVEIik7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLQot
ICAvLyBDYWxsZWQgYmVmb3JlIGEgdGVzdCBzdGFydHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RT
dGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgZnByaW50ZihzdGRvdXQsCi0g
ICAgICAgICAgICAiKioqIFRlc3QgJXMuJXMgc3RhcnRpbmcuXG4iLAotICAgICAgICAgICAgdGVz
dF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksCi0gICAgICAgICAgICB0ZXN0X2luZm8ubmFtZSgpKTsK
LSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgfQotCi0gIC8vIENhbGxlZCBhZnRlciBhIGZhaWxlZCBh
c3NlcnRpb24gb3IgYSBTVUNDRUVEKCkgaW52b2NhdGlvbi4KLSAgdmlydHVhbCB2b2lkIE9uVGVz
dFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAg
ICBmcHJpbnRmKHN0ZG91dCwKLSAgICAgICAgICAgICIlcyBpbiAlczolZFxuJXNcbiIsCi0gICAg
ICAgICAgICB0ZXN0X3BhcnRfcmVzdWx0LmZhaWxlZCgpID8gIioqKiBGYWlsdXJlIiA6ICJTdWNj
ZXNzIiwKLSAgICAgICAgICAgIHRlc3RfcGFydF9yZXN1bHQuZmlsZV9uYW1lKCksCi0gICAgICAg
ICAgICB0ZXN0X3BhcnRfcmVzdWx0LmxpbmVfbnVtYmVyKCksCi0gICAgICAgICAgICB0ZXN0X3Bh
cnRfcmVzdWx0LnN1bW1hcnkoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLQotICAvLyBD
YWxsZWQgYWZ0ZXIgYSB0ZXN0IGVuZHMuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RFbmQoY29uc3Qg
VGVzdEluZm8mIHRlc3RfaW5mbykgewotICAgIGZwcmludGYoc3Rkb3V0LAotICAgICAgICAgICAg
IioqKiBUZXN0ICVzLiVzIGVuZGluZy5cbiIsCi0gICAgICAgICAgICB0ZXN0X2luZm8udGVzdF9j
YXNlX25hbWUoKSwKLSAgICAgICAgICAgIHRlc3RfaW5mby5uYW1lKCkpOwotICAgIGZmbHVzaChz
dGRvdXQpOwotICB9Ci19OyAgLy8gY2xhc3MgVGVyc2VQcmludGVyCi0KLVRFU1QoQ3VzdG9tT3V0
cHV0VGVzdCwgUHJpbnRzTWVzc2FnZSkgewotICBwcmludGYoIlByaW50aW5nIHNvbWV0aGluZyBm
cm9tIHRoZSB0ZXN0IGJvZHkuLi5cbiIpOwotfQotCi1URVNUKEN1c3RvbU91dHB1dFRlc3QsIFN1
Y2NlZWRzKSB7Ci0gIFNVQ0NFRUQoKSA8PCAiU1VDQ0VFRCgpIGhhcyBiZWVuIGludm9rZWQgZnJv
bSBoZXJlIjsKLX0KLQotVEVTVChDdXN0b21PdXRwdXRUZXN0LCBGYWlscykgewotICBFWFBFQ1Rf
RVEoMSwgMikKLSAgICAgIDw8ICJUaGlzIHRlc3QgZmFpbHMgaW4gb3JkZXIgdG8gZGVtb25zdHJh
dGUgYWx0ZXJuYXRpdmUgZmFpbHVyZSBtZXNzYWdlcyI7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotCi0gIGJvb2wgdGVyc2Vfb3V0cHV0ID0gZmFsc2U7Ci0gIGlmIChhcmdjID4g
MSAmJiBzdHJjbXAoYXJndlsxXSwgIi0tdGVyc2Vfb3V0cHV0IikgPT0gMCApCi0gICAgdGVyc2Vf
b3V0cHV0ID0gdHJ1ZTsKLSAgZWxzZQotICAgIHByaW50ZigiJXNcbiIsICJSdW4gdGhpcyBwcm9n
cmFtIHdpdGggLS10ZXJzZV9vdXRwdXQgdG8gY2hhbmdlIHRoZSB3YXkgIgotICAgICAgICAgICAi
aXQgcHJpbnRzIGl0cyBvdXRwdXQuIik7Ci0KLSAgVW5pdFRlc3QmIHVuaXRfdGVzdCA9ICpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKTsKLQotICAvLyBJZiB3ZSBhcmUgZ2l2ZW4gdGhlIC0tdGVyc2Vf
b3V0cHV0IGNvbW1hbmQgbGluZSBmbGFnLCBzdXBwcmVzc2VzIHRoZQotICAvLyBzdGFuZGFyZCBv
dXRwdXQgYW5kIGF0dGFjaGVzIG93biByZXN1bHQgcHJpbnRlci4KLSAgaWYgKHRlcnNlX291dHB1
dCkgewotICAgIFRlc3RFdmVudExpc3RlbmVycyYgbGlzdGVuZXJzID0gdW5pdF90ZXN0Lmxpc3Rl
bmVycygpOwotCi0gICAgLy8gUmVtb3ZlcyB0aGUgZGVmYXVsdCBjb25zb2xlIG91dHB1dCBsaXN0
ZW5lciBmcm9tIHRoZSBsaXN0IHNvIGl0IHdpbGwKLSAgICAvLyBub3QgcmVjZWl2ZSBldmVudHMg
ZnJvbSBHb29nbGUgVGVzdCBhbmQgd29uJ3QgcHJpbnQgYW55IG91dHB1dC4gU2luY2UKLSAgICAv
LyB0aGlzIG9wZXJhdGlvbiB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBsaXN0ZW5lciB0byB0
aGUgY2FsbGVyIHdlCi0gICAgLy8gaGF2ZSB0byBkZWxldGUgaXQgYXMgd2VsbC4KLSAgICBkZWxl
dGUgbGlzdGVuZXJzLlJlbGVhc2UobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSk7
Ci0KLSAgICAvLyBBZGRzIHRoZSBjdXN0b20gb3V0cHV0IGxpc3RlbmVyIHRvIHRoZSBsaXN0LiBJ
dCB3aWxsIG5vdyByZWNlaXZlCi0gICAgLy8gZXZlbnRzIGZyb20gR29vZ2xlIFRlc3QgYW5kIHBy
aW50IHRoZSBhbHRlcm5hdGl2ZSBvdXRwdXQuIFdlIGRvbid0Ci0gICAgLy8gaGF2ZSB0byB3b3Jy
eSBhYm91dCBkZWxldGluZyBpdCBzaW5jZSBHb29nbGUgVGVzdCBhc3N1bWVzIG93bmVyc2hpcAot
ICAgIC8vIG92ZXIgaXQgYWZ0ZXIgYWRkaW5nIGl0IHRvIHRoZSBsaXN0LgotICAgIGxpc3RlbmVy
cy5BcHBlbmQobmV3IFRlcnNlUHJpbnRlcik7Ci0gIH0KLSAgaW50IHJldF92YWwgPSBSVU5fQUxM
X1RFU1RTKCk7Ci0KLSAgLy8gVGhpcyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIHRoZSBVbml0VGVz
dCByZWZsZWN0aW9uIEFQSSB0byBpbnNwZWN0IHRlc3QKLSAgLy8gcmVzdWx0cy4gSGVyZSB3ZSBk
aXNjb3VudCBmYWlsdXJlcyBmcm9tIHRoZSB0ZXN0cyB3ZSBleHBlY3RlZCB0byBmYWlsLgotICBp
bnQgdW5leHBlY3RlZGx5X2ZhaWxlZF90ZXN0cyA9IDA7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwg
dW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpIHsKLSAgICBjb25zdCBUZXN0
Q2FzZSYgdGVzdF9jYXNlID0gKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKTsKLSAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IHRlc3RfY2FzZS50b3RhbF90ZXN0X2NvdW50KCk7ICsraikgewotICAgICAg
Y29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyA9ICp0ZXN0X2Nhc2UuR2V0VGVzdEluZm8oaik7Ci0g
ICAgICAvLyBDb3VudHMgZmFpbGVkIHRlc3RzIHRoYXQgd2VyZSBub3QgbWVhbnQgdG8gZmFpbCAo
dGhvc2Ugd2l0aG91dAotICAgICAgLy8gJ0ZhaWxzJyBpbiB0aGUgbmFtZSkuCi0gICAgICBpZiAo
dGVzdF9pbmZvLnJlc3VsdCgpLT5GYWlsZWQoKSAmJgotICAgICAgICAgIHN0cmNtcCh0ZXN0X2lu
Zm8ubmFtZSgpLCAiRmFpbHMiKSAhPSAwKSB7Ci0gICAgICAgIHVuZXhwZWN0ZWRseV9mYWlsZWRf
dGVzdHMrKzsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBUZXN0IHRoYXQgd2VyZSBtZWFu
dCB0byBmYWlsIHNob3VsZCBub3QgYWZmZWN0IHRoZSB0ZXN0IHByb2dyYW0gb3V0Y29tZS4KLSAg
aWYgKHVuZXhwZWN0ZWRseV9mYWlsZWRfdGVzdHMgPT0gMCkKLSAgICByZXRfdmFsID0gMDsKLQot
ICByZXR1cm4gcmV0X3ZhbDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvY29t
bW9uLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNjMDM0N2E3NWJkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NjcmlwdHMvY29tbW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotIyBDb3B5
cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotIiIiU2hhcmVkIHV0aWxpdGllcyBmb3Igd3JpdGluZyBzY3JpcHRzIGZvciBHb29n
bGUgVGVzdC9Nb2NrLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9u
ZyBXYW4pJwotCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLQotIyBNYXRjaGVzIHRoZSBsaW5l
IGZyb20gJ3N2biBpbmZvIC4nIG91dHB1dCB0aGF0IGRlc2NyaWJlcyB3aGF0IFNWTgotIyBwYXRo
IHRoZSBjdXJyZW50IGxvY2FsIGRpcmVjdG9yeSBjb3JyZXNwb25kcyB0by4gIEZvciBleGFtcGxl
LCBpbgotIyBhIGdvb2dsZXRlc3QgU1ZOIHdvcmtzcGFjZSdzIHRydW5rL3Rlc3QgZGlyZWN0b3J5
LCB0aGUgb3V0cHV0IHdpbGwgYmU6Ci0jCi0jIFVSTDogaHR0cHM6Ly9nb29nbGV0ZXN0Lmdvb2ds
ZWNvZGUuY29tL3N2bi90cnVuay90ZXN0Ci1fU1ZOX0lORk9fVVJMX1JFID0gcmUuY29tcGlsZShy
J15VUkw6IGh0dHBzOi8vKFx3KylcLmdvb2dsZWNvZGVcLmNvbS9zdm4oLiopJykKLQotCi1kZWYg
R2V0Q29tbWFuZE91dHB1dChjb21tYW5kKToKLSAgIiIiUnVucyB0aGUgc2hlbGwgY29tbWFuZCBh
bmQgcmV0dXJucyBpdHMgc3Rkb3V0IGFzIGEgbGlzdCBvZiBsaW5lcy4iIiIKLQotICBmID0gb3Mu
cG9wZW4oY29tbWFuZCwgJ3InKQotICBsaW5lcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4g
Zi5yZWFkbGluZXMoKV0KLSAgZi5jbG9zZSgpCi0gIHJldHVybiBsaW5lcwotCi0KLWRlZiBHZXRT
dm5JbmZvKCk6Ci0gICIiIlJldHVybnMgdGhlIHByb2plY3QgbmFtZSBhbmQgdGhlIGN1cnJlbnQg
U1ZOIHdvcmtzcGFjZSdzIHJvb3QgcGF0aC4iIiIKLQotICBmb3IgbGluZSBpbiBHZXRDb21tYW5k
T3V0cHV0KCdzdm4gaW5mbyAuJyk6Ci0gICAgbSA9IF9TVk5fSU5GT19VUkxfUkUubWF0Y2gobGlu
ZSkKLSAgICBpZiBtOgotICAgICAgcHJvamVjdCA9IG0uZ3JvdXAoMSkgICMgZ29vZ2xldGVzdCBv
ciBnb29nbGVtb2NrCi0gICAgICByZWxfcGF0aCA9IG0uZ3JvdXAoMikKLSAgICAgIHJvb3QgPSBv
cy5wYXRoLnJlYWxwYXRoKHJlbF9wYXRoLmNvdW50KCcvJykgKiAnLi4vJykKLSAgICAgIHJldHVy
biBwcm9qZWN0LCByb290Ci0KLSAgcmV0dXJuIE5vbmUsIE5vbmUKLQotCi1kZWYgR2V0U3ZuVHJ1
bmsoKToKLSAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBTVk4gd29ya3NwYWNlJ3MgdHJ1bmsgcm9v
dCBwYXRoLiIiIgotCi0gIF8sIHJvb3QgPSBHZXRTdm5JbmZvKCkKLSAgcmV0dXJuIHJvb3QgKyAn
L3RydW5rJyBpZiByb290IGVsc2UgTm9uZQotCi0KLWRlZiBJc0luR1Rlc3RTdm4oKToKLSAgcHJv
amVjdCwgXyA9IEdldFN2bkluZm8oKQotICByZXR1cm4gcHJvamVjdCA9PSAnZ29vZ2xldGVzdCcK
LQotCi1kZWYgSXNJbkdNb2NrU3ZuKCk6Ci0gIHByb2plY3QsIF8gPSBHZXRTdm5JbmZvKCkKLSAg
cmV0dXJuIHByb2plY3QgPT0gJ2dvb2dsZW1vY2snCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
Y3JpcHRzL2Z1c2VfZ3Rlc3RfZmlsZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL2Z1c2VfZ3Rl
c3RfZmlsZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNmM2U5ZjM2ZDYxYi4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZnVzZV9ndGVzdF9maWxlcy5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDI1MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJmdXNlX2d0ZXN0X2ZpbGVzLnB5IHYwLjIuMAotRnVz
ZXMgR29vZ2xlIFRlc3Qgc291cmNlIGNvZGUgaW50byBhIC5oIGZpbGUgYW5kIGEgLmNjIGZpbGUu
Ci0KLVNZTk9QU0lTCi0gICAgICAgZnVzZV9ndGVzdF9maWxlcy5weSBbR1RFU1RfUk9PVF9ESVJd
IE9VVFBVVF9ESVIKLQotICAgICAgIFNjYW5zIEdURVNUX1JPT1RfRElSIGZvciBHb29nbGUgVGVz
dCBzb3VyY2UgY29kZSwgYW5kIGdlbmVyYXRlcwotICAgICAgIHR3byBmaWxlczogT1VUUFVUX0RJ
Ui9ndGVzdC9ndGVzdC5oIGFuZCBPVVRQVVRfRElSL2d0ZXN0L2d0ZXN0LWFsbC5jYy4KLSAgICAg
ICBUaGVuIHlvdSBjYW4gYnVpbGQgeW91ciB0ZXN0cyBieSBhZGRpbmcgT1VUUFVUX0RJUiB0byB0
aGUgaW5jbHVkZQotICAgICAgIHNlYXJjaCBwYXRoIGFuZCBsaW5raW5nIHdpdGggT1VUUFVUX0RJ
Ui9ndGVzdC9ndGVzdC1hbGwuY2MuICBUaGVzZQotICAgICAgIHR3byBmaWxlcyBjb250YWluIGV2
ZXJ5dGhpbmcgeW91IG5lZWQgdG8gdXNlIEdvb2dsZSBUZXN0LiAgSGVuY2UKLSAgICAgICB5b3Ug
Y2FuICJpbnN0YWxsIiBHb29nbGUgVGVzdCBieSBjb3B5aW5nIHRoZW0gdG8gd2hlcmV2ZXIgeW91
IHdhbnQuCi0KLSAgICAgICBHVEVTVF9ST09UX0RJUiBjYW4gYmUgb21pdHRlZCBhbmQgZGVmYXVs
dHMgdG8gdGhlIHBhcmVudAotICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgZGlyZWN0b3J5IGhvbGRp
bmcgdGhpcyBzY3JpcHQuCi0KLUVYQU1QTEVTCi0gICAgICAgLi9mdXNlX2d0ZXN0X2ZpbGVzLnB5
IGZ1c2VkX2d0ZXN0Ci0gICAgICAgLi9mdXNlX2d0ZXN0X2ZpbGVzLnB5IHBhdGgvdG8vdW5wYWNr
ZWQvZ3Rlc3QgZnVzZWRfZ3Rlc3QKLQotVGhpcyB0b29sIGlzIGV4cGVyaW1lbnRhbC4gIEluIHBh
cnRpY3VsYXIsIGl0IGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBubwotY29uZGl0aW9uYWwgaW5jbHVz
aW9uIG9mIEdvb2dsZSBUZXN0IGhlYWRlcnMuICBQbGVhc2UgcmVwb3J0IGFueQotcHJvYmxlbXMg
dG8gZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tLiAgWW91IGNhbiByZWFkCi1o
dHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xldGVzdC93aWtpL0dvb2dsZVRlc3RBZHZhbmNl
ZEd1aWRlIGZvcgotbW9yZSBpbmZvcm1hdGlvbi4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotdHJ5Ogot
ICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQgICMgRm9yIFB5dGhvbiAyLjMgY29tcGF0aWJp
bGl0eQotZXhjZXB0IEltcG9ydEVycm9yOgotICBwYXNzCi1pbXBvcnQgc3lzCi0KLSMgV2UgYXNz
dW1lIHRoYXQgdGhpcyBmaWxlIGlzIGluIHRoZSBzY3JpcHRzLyBkaXJlY3RvcnkgaW4gdGhlIEdv
b2dsZQotIyBUZXN0IHJvb3QgZGlyZWN0b3J5LgotREVGQVVMVF9HVEVTVF9ST09UX0RJUiA9IG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nKQotCi0jIFJlZ2V4IGZv
ciBtYXRjaGluZyAnI2luY2x1ZGUgImd0ZXN0Ly4uLiInLgotSU5DTFVERV9HVEVTVF9GSUxFX1JF
R0VYID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKiIoZ3Rlc3QvLispIicpCi0KLSMg
UmVnZXggZm9yIG1hdGNoaW5nICcjaW5jbHVkZSAic3JjLy4uLiInLgotSU5DTFVERV9TUkNfRklM
RV9SRUdFWCA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyoiKHNyYy8uKykiJykKLQot
IyBXaGVyZSB0byBmaW5kIHRoZSBzb3VyY2Ugc2VlZCBmaWxlcy4KLUdURVNUX0hfU0VFRCA9ICdp
bmNsdWRlL2d0ZXN0L2d0ZXN0LmgnCi1HVEVTVF9TUElfSF9TRUVEID0gJ2luY2x1ZGUvZ3Rlc3Qv
Z3Rlc3Qtc3BpLmgnCi1HVEVTVF9BTExfQ0NfU0VFRCA9ICdzcmMvZ3Rlc3QtYWxsLmNjJwotCi0j
IFdoZXJlIHRvIHB1dCB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotR1RFU1RfSF9PVVRQVVQgPSAnZ3Rl
c3QvZ3Rlc3QuaCcKLUdURVNUX0FMTF9DQ19PVVRQVVQgPSAnZ3Rlc3QvZ3Rlc3QtYWxsLmNjJwot
Ci0KLWRlZiBWZXJpZnlGaWxlRXhpc3RzKGRpcmVjdG9yeSwgcmVsYXRpdmVfcGF0aCk6Ci0gICIi
IlZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGZpbGUgZXhpc3RzOyBhYm9ydHMgb24gZmFpbHVyZS4K
LQotICByZWxhdGl2ZV9wYXRoIGlzIHRoZSBmaWxlIHBhdGggcmVsYXRpdmUgdG8gdGhlIGdpdmVu
IGRpcmVjdG9yeS4KLSAgIiIiCi0KLSAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9p
bihkaXJlY3RvcnksIHJlbGF0aXZlX3BhdGgpKToKLSAgICBwcmludCgnRVJST1I6IENhbm5vdCBm
aW5kICVzIGluIGRpcmVjdG9yeSAlcy4nICUgKHJlbGF0aXZlX3BhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkpKQotICAg
IHByaW50KCdQbGVhc2UgZWl0aGVyIHNwZWNpZnkgYSB2YWxpZCBwcm9qZWN0IHJvb3QgZGlyZWN0
b3J5ICcKLSAgICAgICAgICAnb3Igb21pdCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLicpCi0gICAg
c3lzLmV4aXQoMSkKLQotCi1kZWYgVmFsaWRhdGVHVGVzdFJvb3REaXIoZ3Rlc3Rfcm9vdCk6Ci0g
ICIiIk1ha2VzIHN1cmUgZ3Rlc3Rfcm9vdCBwb2ludHMgdG8gYSB2YWxpZCBndGVzdCByb290IGRp
cmVjdG9yeS4KLQotICBUaGUgZnVuY3Rpb24gYWJvcnRzIHRoZSBwcm9ncmFtIG9uIGZhaWx1cmUu
Ci0gICIiIgotCi0gIFZlcmlmeUZpbGVFeGlzdHMoZ3Rlc3Rfcm9vdCwgR1RFU1RfSF9TRUVEKQot
ICBWZXJpZnlGaWxlRXhpc3RzKGd0ZXN0X3Jvb3QsIEdURVNUX0FMTF9DQ19TRUVEKQotCi0KLWRl
ZiBWZXJpZnlPdXRwdXRGaWxlKG91dHB1dF9kaXIsIHJlbGF0aXZlX3BhdGgpOgotICAiIiJWZXJp
ZmllcyB0aGF0IHRoZSBnaXZlbiBvdXRwdXQgZmlsZSBwYXRoIGlzIHZhbGlkLgotCi0gIHJlbGF0
aXZlX3BhdGggaXMgcmVsYXRpdmUgdG8gdGhlIG91dHB1dF9kaXIgZGlyZWN0b3J5LgotICAiIiIK
LQotICAjIE1ha2VzIHN1cmUgdGhlIG91dHB1dCBmaWxlIGVpdGhlciBkb2Vzbid0IGV4aXN0IG9y
IGNhbiBiZSBvdmVyd3JpdHRlbi4KLSAgb3V0cHV0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0
X2RpciwgcmVsYXRpdmVfcGF0aCkKLSAgaWYgb3MucGF0aC5leGlzdHMob3V0cHV0X2ZpbGUpOgot
ICAgICMgVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IFRoZSBmb2xsb3dpbmcgdXNlci1pbnRlcmFjdGlv
biBkb2Vzbid0Ci0gICAgIyB3b3JrIHdpdGggYXV0b21hdGVkIHByb2Nlc3Nlcy4gIFdlIHNob3Vs
ZCBwcm92aWRlIGEgd2F5IGZvciB0aGUKLSAgICAjIE1ha2VmaWxlIHRvIGZvcmNlIG92ZXJ3cml0
aW5nIHRoZSBmaWxlcy4KLSAgICBwcmludCgnJXMgYWxyZWFkeSBleGlzdHMgaW4gZGlyZWN0b3J5
ICVzIC0gb3ZlcndyaXRlIGl0PyAoeS9OKSAnICUKLSAgICAgICAgICAocmVsYXRpdmVfcGF0aCwg
b3V0cHV0X2RpcikpCi0gICAgYW5zd2VyID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoKQot
ICAgIGlmIGFuc3dlciBub3QgaW4gWyd5JywgJ1knXToKLSAgICAgIHByaW50KCdBQk9SVEVELicp
Ci0gICAgICBzeXMuZXhpdCgxKQotCi0gICMgTWFrZXMgc3VyZSB0aGUgZGlyZWN0b3J5IGhvbGRp
bmcgdGhlIG91dHB1dCBmaWxlIGV4aXN0czsgY3JlYXRlcwotICAjIGl0IGFuZCBhbGwgaXRzIGFu
Y2VzdG9ycyBpZiBuZWNlc3NhcnkuCi0gIHBhcmVudF9kaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5h
bWUob3V0cHV0X2ZpbGUpCi0gIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhcmVudF9kaXJlY3Rvcnkp
OgotICAgIG9zLm1ha2VkaXJzKHBhcmVudF9kaXJlY3RvcnkpCi0KLQotZGVmIFZhbGlkYXRlT3V0
cHV0RGlyKG91dHB1dF9kaXIpOgotICAiIiJNYWtlcyBzdXJlIG91dHB1dF9kaXIgcG9pbnRzIHRv
IGEgdmFsaWQgb3V0cHV0IGRpcmVjdG9yeS4KLQotICBUaGUgZnVuY3Rpb24gYWJvcnRzIHRoZSBw
cm9ncmFtIG9uIGZhaWx1cmUuCi0gICIiIgotCi0gIFZlcmlmeU91dHB1dEZpbGUob3V0cHV0X2Rp
ciwgR1RFU1RfSF9PVVRQVVQpCi0gIFZlcmlmeU91dHB1dEZpbGUob3V0cHV0X2RpciwgR1RFU1Rf
QUxMX0NDX09VVFBVVCkKLQotCi1kZWYgRnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRfZGly
KToKLSAgIiIiU2NhbnMgZm9sZGVyIGd0ZXN0X3Jvb3QgdG8gZ2VuZXJhdGUgZ3Rlc3QvZ3Rlc3Qu
aCBpbiBvdXRwdXRfZGlyLiIiIgotCi0gIG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4o
b3V0cHV0X2RpciwgR1RFU1RfSF9PVVRQVVQpLCAndycpCi0gIHByb2Nlc3NlZF9maWxlcyA9IHNl
dCgpICAjIEhvbGRzIGFsbCBndGVzdCBoZWFkZXJzIHdlJ3ZlIHByb2Nlc3NlZC4KLQotICBkZWYg
UHJvY2Vzc0ZpbGUoZ3Rlc3RfaGVhZGVyX3BhdGgpOgotICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2
ZW4gZ3Rlc3QgaGVhZGVyIGZpbGUuIiIiCi0KLSAgICAjIFdlIGRvbid0IHByb2Nlc3MgdGhlIHNh
bWUgaGVhZGVyIHR3aWNlLgotICAgIGlmIGd0ZXN0X2hlYWRlcl9wYXRoIGluIHByb2Nlc3NlZF9m
aWxlczoKLSAgICAgIHJldHVybgotCi0gICAgcHJvY2Vzc2VkX2ZpbGVzLmFkZChndGVzdF9oZWFk
ZXJfcGF0aCkKLQotICAgICMgUmVhZHMgZWFjaCBsaW5lIGluIHRoZSBnaXZlbiBndGVzdCBoZWFk
ZXIuCi0gICAgZm9yIGxpbmUgaW4gb3Blbihvcy5wYXRoLmpvaW4oZ3Rlc3Rfcm9vdCwgZ3Rlc3Rf
aGVhZGVyX3BhdGgpLCAncicpOgotICAgICAgbSA9IElOQ0xVREVfR1RFU1RfRklMRV9SRUdFWC5t
YXRjaChsaW5lKQotICAgICAgaWYgbToKLSAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3Qv
Li4uIicgLSBsZXQncyBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5LgotICAgICAgICBQcm9jZXNzRmls
ZSgnaW5jbHVkZS8nICsgbS5ncm91cCgxKSkKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgT3RoZXJ3
aXNlIHdlIGNvcHkgdGhlIGxpbmUgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQgZmlsZS4KLSAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUobGluZSkKLQotICBQcm9jZXNzRmlsZShHVEVTVF9IX1NFRUQp
Ci0gIG91dHB1dF9maWxlLmNsb3NlKCkKLQotCi1kZWYgRnVzZUdUZXN0QWxsQ2NUb0ZpbGUoZ3Rl
c3Rfcm9vdCwgb3V0cHV0X2ZpbGUpOgotICAiIiJTY2FucyBmb2xkZXIgZ3Rlc3Rfcm9vdCB0byBn
ZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2ZpbGUuIiIiCi0KLSAgcHJvY2Vz
c2VkX2ZpbGVzID0gc2V0KCkKLQotICBkZWYgUHJvY2Vzc0ZpbGUoZ3Rlc3Rfc291cmNlX2ZpbGUp
OgotICAgICIiIlByb2Nlc3NlcyB0aGUgZ2l2ZW4gZ3Rlc3Qgc291cmNlIGZpbGUuIiIiCi0KLSAg
ICAjIFdlIGRvbid0IHByb2Nlc3MgdGhlIHNhbWUgI2luY2x1ZGVkIGZpbGUgdHdpY2UuCi0gICAg
aWYgZ3Rlc3Rfc291cmNlX2ZpbGUgaW4gcHJvY2Vzc2VkX2ZpbGVzOgotICAgICAgcmV0dXJuCi0K
LSAgICBwcm9jZXNzZWRfZmlsZXMuYWRkKGd0ZXN0X3NvdXJjZV9maWxlKQotCi0gICAgIyBSZWFk
cyBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIGd0ZXN0IHNvdXJjZSBmaWxlLgotICAgIGZvciBsaW5l
IGluIG9wZW4ob3MucGF0aC5qb2luKGd0ZXN0X3Jvb3QsIGd0ZXN0X3NvdXJjZV9maWxlKSwgJ3In
KToKLSAgICAgIG0gPSBJTkNMVURFX0dURVNUX0ZJTEVfUkVHRVgubWF0Y2gobGluZSkKLSAgICAg
IGlmIG06Ci0gICAgICAgIGlmICdpbmNsdWRlLycgKyBtLmdyb3VwKDEpID09IEdURVNUX1NQSV9I
X1NFRUQ6Ci0gICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiJy4g
IFRoaXMgZmlsZSBpcyBub3QKLSAgICAgICAgICAjICNpbmNsdWRlZCBieSAiZ3Rlc3QvZ3Rlc3Qu
aCIsIHNvIHdlIG5lZWQgdG8gcHJvY2VzcyBpdC4KLSAgICAgICAgICBQcm9jZXNzRmlsZShHVEVT
VF9TUElfSF9TRUVEKQotICAgICAgICBlbHNlOgotICAgICAgICAgICMgSXQncyAnI2luY2x1ZGUg
Imd0ZXN0L2Zvby5oIicgd2hlcmUgZm9vIGlzIG5vdCBndGVzdC1zcGkuCi0gICAgICAgICAgIyBX
ZSB0cmVhdCBpdCBhcyAnI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiJywgYXMgYWxsIG90aGVyCi0g
ICAgICAgICAgIyBndGVzdCBoZWFkZXJzIGFyZSBiZWluZyBmdXNlZCBpbnRvIGd0ZXN0LmggYW5k
IGNhbm5vdCBiZQotICAgICAgICAgICMgI2luY2x1ZGVkIGRpcmVjdGx5LgotCi0gICAgICAgICAg
IyBUaGVyZSBpcyBubyBuZWVkIHRvICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIiBtb3JlIHRoYW4g
b25jZS4KLSAgICAgICAgICBpZiBub3QgR1RFU1RfSF9TRUVEIGluIHByb2Nlc3NlZF9maWxlczoK
LSAgICAgICAgICAgIHByb2Nlc3NlZF9maWxlcy5hZGQoR1RFU1RfSF9TRUVEKQotICAgICAgICAg
ICAgb3V0cHV0X2ZpbGUud3JpdGUoJyNpbmNsdWRlICIlcyJcbicgJSAoR1RFU1RfSF9PVVRQVVQs
KSkKLSAgICAgIGVsc2U6Ci0gICAgICAgIG0gPSBJTkNMVURFX1NSQ19GSUxFX1JFR0VYLm1hdGNo
KGxpbmUpCi0gICAgICAgIGlmIG06Ci0gICAgICAgICAgIyBJdCdzICcjaW5jbHVkZSAic3JjL2Zv
byInIC0gbGV0J3MgcHJvY2VzcyBpdCByZWN1cnNpdmVseS4KLSAgICAgICAgICBQcm9jZXNzRmls
ZShtLmdyb3VwKDEpKQotICAgICAgICBlbHNlOgotICAgICAgICAgIG91dHB1dF9maWxlLndyaXRl
KGxpbmUpCi0KLSAgUHJvY2Vzc0ZpbGUoR1RFU1RfQUxMX0NDX1NFRUQpCi0KLQotZGVmIEZ1c2VH
VGVzdEFsbENjKGd0ZXN0X3Jvb3QsIG91dHB1dF9kaXIpOgotICAiIiJTY2FucyBmb2xkZXIgZ3Rl
c3Rfcm9vdCB0byBnZW5lcmF0ZSBndGVzdC9ndGVzdC1hbGwuY2MgaW4gb3V0cHV0X2Rpci4iIiIK
LQotICBvdXRwdXRfZmlsZSA9IG9wZW4ob3MucGF0aC5qb2luKG91dHB1dF9kaXIsIEdURVNUX0FM
TF9DQ19PVVRQVVQpLCAndycpCi0gIEZ1c2VHVGVzdEFsbENjVG9GaWxlKGd0ZXN0X3Jvb3QsIG91
dHB1dF9maWxlKQotICBvdXRwdXRfZmlsZS5jbG9zZSgpCi0KLQotZGVmIEZ1c2VHVGVzdChndGVz
dF9yb290LCBvdXRwdXRfZGlyKToKLSAgIiIiRnVzZXMgZ3Rlc3QuaCBhbmQgZ3Rlc3QtYWxsLmNj
LiIiIgotCi0gIFZhbGlkYXRlR1Rlc3RSb290RGlyKGd0ZXN0X3Jvb3QpCi0gIFZhbGlkYXRlT3V0
cHV0RGlyKG91dHB1dF9kaXIpCi0KLSAgRnVzZUdUZXN0SChndGVzdF9yb290LCBvdXRwdXRfZGly
KQotICBGdXNlR1Rlc3RBbGxDYyhndGVzdF9yb290LCBvdXRwdXRfZGlyKQotCi0KLWRlZiBtYWlu
KCk6Ci0gIGFyZ2MgPSBsZW4oc3lzLmFyZ3YpCi0gIGlmIGFyZ2MgPT0gMjoKLSAgICAjIGZ1c2Vf
Z3Rlc3RfZmlsZXMucHkgT1VUUFVUX0RJUgotICAgIEZ1c2VHVGVzdChERUZBVUxUX0dURVNUX1JP
T1RfRElSLCBzeXMuYXJndlsxXSkKLSAgZWxpZiBhcmdjID09IDM6Ci0gICAgIyBmdXNlX2d0ZXN0
X2ZpbGVzLnB5IEdURVNUX1JPT1RfRElSIE9VVFBVVF9ESVIKLSAgICBGdXNlR1Rlc3Qoc3lzLmFy
Z3ZbMV0sIHN5cy5hcmd2WzJdKQotICBlbHNlOgotICAgIHByaW50KF9fZG9jX18pCi0gICAgc3lz
LmV4aXQoMSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBtYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NjcmlwdHMvZ2VuX2d0ZXN0X3ByZWRfaW1wbC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggM2U3YWIwNDJlYWNiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
c2NyaXB0cy9nZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMwICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiImdl
bl9ndGVzdF9wcmVkX2ltcGwucHkgdjAuMQotCi1HZW5lcmF0ZXMgdGhlIGltcGxlbWVudGF0aW9u
IG9mIEdvb2dsZSBUZXN0IHByZWRpY2F0ZSBhc3NlcnRpb25zIGFuZAotYWNjb21wYW55aW5nIHRl
c3RzLgotCi1Vc2FnZToKLQotICBnZW5fZ3Rlc3RfcHJlZF9pbXBsLnB5IE1BWF9BUklUWQotCi13
aGVyZSBNQVhfQVJJVFkgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLgotCi1UaGUgY29tbWFuZCBnZW5l
cmF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHVwLXRvIE1BWF9BUklUWS1hcnkKLXByZWRpY2F0
ZSBhc3NlcnRpb25zLCBhbmQgd3JpdGVzIGl0IHRvIGZpbGUgZ3Rlc3RfcHJlZF9pbXBsLmggaW4g
dGhlCi1kaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBpcy4gIEl0IGFsc28gZ2VuZXJhdGVzIHRo
ZSBhY2NvbXBhbnlpbmcKLXVuaXQgdGVzdCBpbiBmaWxlIGd0ZXN0X3ByZWRfaW1wbF91bml0dGVz
dC5jYy4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
JwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLSMgV2hlcmUgdGhpcyBz
Y3JpcHQgaXMuCi1TQ1JJUFRfRElSID0gb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKQotCi0j
IFdoZXJlIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgaGVhZGVyLgotSEVBREVSID0gb3MucGF0aC5q
b2luKFNDUklQVF9ESVIsICcuLi9pbmNsdWRlL2d0ZXN0L2d0ZXN0X3ByZWRfaW1wbC5oJykKLQot
IyBXaGVyZSB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIHVuaXQgdGVzdC4KLVVOSVRfVEVTVCA9IG9z
LnBhdGguam9pbihTQ1JJUFRfRElSLCAnLi4vdGVzdC9ndGVzdF9wcmVkX2ltcGxfdW5pdHRlc3Qu
Y2MnKQotCi0KLWRlZiBIZWFkZXJQcmVhbWJsZShuKToKLSAgIiIiUmV0dXJucyB0aGUgcHJlYW1i
bGUgZm9yIHRoZSBoZWFkZXIgZmlsZS4KLQotICBBcmdzOgotICAgIG46ICB0aGUgbWF4aW11bSBh
cml0eSBvZiB0aGUgcHJlZGljYXRlIG1hY3JvcyB0byBiZSBnZW5lcmF0ZWQuCi0gICIiIgotCi0g
ICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0aGUgcHJlYW1ibGUgdGVt
cGxhdGUuCi0gIERFRlMgPSB7Ci0gICAgJ3RvZGF5JyA6IHRpbWUuc3RyZnRpbWUoJyVtLyVkLyVZ
JyksCi0gICAgJ3llYXInIDogdGltZS5zdHJmdGltZSgnJVknKSwKLSAgICAnY29tbWFuZCcgOiAn
JXMgJXMnICUgKG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pLCBuKSwKLSAgICAnbicgOiBu
Ci0gICAgfQotCi0gIHJldHVybiAoCi0iIiIvLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLS8vIFRoaXMgZmlsZSBpcyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCBv
biAlKHRvZGF5KXMgYnkgY29tbWFuZAotLy8gJyUoY29tbWFuZClzJy4gIERPIE5PVCBFRElUIEJZ
IEhBTkQhCi0vLwotLy8gSW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBh
c3NlcnRpb24gbWFjcm9zLgotCi0jaWZuZGVmIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJF
RF9JTVBMX0hfCi0jZGVmaW5lIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfUFJFRF9JTVBMX0hf
Ci0KLS8vIE1ha2VzIHN1cmUgdGhpcyBoZWFkZXIgaXMgbm90IGluY2x1ZGVkIGJlZm9yZSBndGVz
dC5oLgotI2lmbmRlZiBHVEVTVF9JTkNMVURFX0dURVNUX0dURVNUX0hfCi0jIGVycm9yIERvIG5v
dCBpbmNsdWRlIGd0ZXN0X3ByZWRfaW1wbC5oIGRpcmVjdGx5LiAgSW5jbHVkZSBndGVzdC5oIGlu
c3RlYWQuCi0jZW5kaWYgIC8vIEdURVNUX0lOQ0xVREVfR1RFU1RfR1RFU1RfSF8KLQotLy8gVGhp
cyBoZWFkZXIgaW1wbGVtZW50cyBhIGZhbWlseSBvZiBnZW5lcmljIHByZWRpY2F0ZSBhc3NlcnRp
b24KLS8vIG1hY3JvczoKLS8vCi0vLyAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEocHJlZF9mb3JtYXQs
IHYxKQotLy8gICBBU1NFUlRfUFJFRF9GT1JNQVQyKHByZWRfZm9ybWF0LCB2MSwgdjIpCi0vLyAg
IC4uLgotLy8KLS8vIHdoZXJlIHByZWRfZm9ybWF0IGlzIGEgZnVuY3Rpb24gb3IgZnVuY3RvciB0
aGF0IHRha2VzIG4gKGluIHRoZQotLy8gY2FzZSBvZiBBU1NFUlRfUFJFRF9GT1JNQVRuKSB2YWx1
ZXMgYW5kIHRoZWlyIHNvdXJjZSBleHByZXNzaW9uCi0vLyB0ZXh0LCBhbmQgcmV0dXJucyBhIHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdC4gIFNlZSB0aGUgZGVmaW5pdGlvbgotLy8gb2YgQVNTRVJU
X0VRIGluIGd0ZXN0LmggZm9yIGFuIGV4YW1wbGUuCi0vLwotLy8gSWYgeW91IGRvbid0IGNhcmUg
YWJvdXQgZm9ybWF0dGluZywgeW91IGNhbiB1c2UgdGhlIG1vcmUKLS8vIHJlc3RyaWN0aXZlIHZl
cnNpb246Ci0vLwotLy8gICBBU1NFUlRfUFJFRDEocHJlZCwgdjEpCi0vLyAgIEFTU0VSVF9QUkVE
MihwcmVkLCB2MSwgdjIpCi0vLyAgIC4uLgotLy8KLS8vIHdoZXJlIHByZWQgaXMgYW4gbi1hcnkg
ZnVuY3Rpb24gb3IgZnVuY3RvciB0aGF0IHJldHVybnMgYm9vbCwKLS8vIGFuZCB0aGUgdmFsdWVz
IHYxLCB2MiwgLi4uLCBtdXN0IHN1cHBvcnQgdGhlIDw8IG9wZXJhdG9yIGZvcgotLy8gc3RyZWFt
aW5nIHRvIHN0ZDo6b3N0cmVhbS4KLS8vCi0vLyBXZSBhbHNvIGRlZmluZSB0aGUgRVhQRUNUXyog
dmFyaWF0aW9ucy4KLS8vCi0vLyBGb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBwcmVkaWNhdGVzIHdo
b3NlIGFyaXR5IGlzIGF0IG1vc3QgJShuKXMuCi0vLyBQbGVhc2UgZW1haWwgZ29vZ2xldGVzdGZy
YW1ld29ya0Bnb29nbGVncm91cHMuY29tIGlmIHlvdSBuZWVkCi0vLyBzdXBwb3J0IGZvciBoaWdo
ZXIgYXJpdGllcy4KLQotLy8gR1RFU1RfQVNTRVJUXyBpcyB0aGUgYmFzaWMgc3RhdGVtZW50IHRv
IHdoaWNoIGFsbCBvZiB0aGUgYXNzZXJ0aW9ucwotLy8gaW4gdGhpcyBmaWxlIHJlZHVjZS4gIERv
bid0IHVzZSB0aGlzIGluIHlvdXIgY29kZS4KLQotI2RlZmluZSBHVEVTVF9BU1NFUlRfKGV4cHJl
c3Npb24sIG9uX2ZhaWx1cmUpIFxcCi0gIEdURVNUX0FNQklHVU9VU19FTFNFX0JMT0NLRVJfIFxc
Ci0gIGlmIChjb25zdCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBndGVzdF9hciA9IChleHBy
ZXNzaW9uKSkgXFwKLSAgICA7IFxcCi0gIGVsc2UgXFwKLSAgICBvbl9mYWlsdXJlKGd0ZXN0X2Fy
LmZhaWx1cmVfbWVzc2FnZSgpKQotIiIiICUgREVGUykKLQotCi1kZWYgQXJpdHkobik6Ci0gICIi
IlJldHVybnMgdGhlIEVuZ2xpc2ggbmFtZSBvZiB0aGUgZ2l2ZW4gYXJpdHkuIiIiCi0KLSAgaWYg
biA8IDA6Ci0gICAgcmV0dXJuIE5vbmUKLSAgZWxpZiBuIDw9IDM6Ci0gICAgcmV0dXJuIFsnbnVs
bGFyeScsICd1bmFyeScsICdiaW5hcnknLCAndGVybmFyeSddW25dCi0gIGVsc2U6Ci0gICAgcmV0
dXJuICclcy1hcnknICUgbgotCi0KLWRlZiBUaXRsZSh3b3JkKToKLSAgIiIiUmV0dXJucyB0aGUg
Z2l2ZW4gd29yZCBpbiB0aXRsZSBjYXNlLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgotICB0aGlz
IGFuZCBzdHJpbmcncyB0aXRsZSgpIG1ldGhvZCBpcyB0aGF0IFRpdGxlKCc0LWFyeScpIGlzICc0
LWFyeScKLSAgd2hpbGUgJzQtYXJ5Jy50aXRsZSgpIGlzICc0LUFyeScuIiIiCi0KLSAgcmV0dXJu
IHdvcmRbMF0udXBwZXIoKSArIHdvcmRbMTpdCi0KLQotZGVmIE9uZVRvKG4pOgotICAiIiJSZXR1
cm5zIHRoZSBsaXN0IFsxLCAyLCAzLCAuLi4sIG5dLiIiIgotCi0gIHJldHVybiByYW5nZSgxLCBu
ICsgMSkKLQotCi1kZWYgSXRlcihuLCBmb3JtYXQsIHNlcD0nJyk6Ci0gICIiIkdpdmVuIGEgcG9z
aXRpdmUgaW50ZWdlciBuLCBhIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyAwIG9yCi0gIG1v
cmUgJyVzJyBmb3JtYXQgc3BlY3MsIGFuZCBvcHRpb25hbGx5IGEgc2VwYXJhdG9yIHN0cmluZywg
cmV0dXJucwotICB0aGUgam9pbiBvZiBuIHN0cmluZ3MsIGVhY2ggZm9ybWF0dGVkIHdpdGggdGhl
IGZvcm1hdCBzdHJpbmcgb24gYW4KLSAgaXRlcmF0b3IgcmFuZ2VkIGZyb20gMSB0byBuLgotCi0g
IEV4YW1wbGU6Ci0KLSAgSXRlcigzLCAndiVzJywgc2VwPScsICcpIHJldHVybnMgJ3YxLCB2Miwg
djMnLgotICAiIiIKLQotICAjIEhvdyBtYW55ICclcycgc3BlY3MgYXJlIGluIGZvcm1hdD8KLSAg
c3BlY19jb3VudCA9IGxlbihmb3JtYXQuc3BsaXQoJyVzJykpIC0gMQotICByZXR1cm4gc2VwLmpv
aW4oW2Zvcm1hdCAlIChzcGVjX2NvdW50ICogKGksKSkgZm9yIGkgaW4gT25lVG8obildKQotCi0K
LWRlZiBJbXBsZW1lbnRhdGlvbkZvckFyaXR5KG4pOgotICAiIiJSZXR1cm5zIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiBuLWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQotICAjIEEgbWFwIHRo
ZSBkZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gdGVtcGxhdGUu
Ci0gIERFRlMgPSB7Ci0gICAgJ24nIDogc3RyKG4pLAotICAgICd2cycgOiBJdGVyKG4sICd2JXMn
LCBzZXA9JywgJyksCi0gICAgJ3Z0cycgOiBJdGVyKG4sICcjdiVzJywgc2VwPScsICcpLAotICAg
ICdhcml0eScgOiBBcml0eShuKSwKLSAgICAnQXJpdHknIDogVGl0bGUoQXJpdHkobikpCi0gICAg
fQotCi0gIGltcGwgPSAiIiIKLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcg
e0VYUEVDVHxBU1NFUlR9X1BSRUQlKG4pcy4gIERvbid0IHVzZQotLy8gdGhpcyBpbiB5b3VyIGNv
ZGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUHJlZCIiIiAlIERFRlMKLQotICBpbXBsICs9IEl0ZXIo
biwgIiIiLAotICAgICAgICAgIHR5cGVuYW1lIFQlcyIiIikKLQotICBpbXBsICs9ICIiIj4KLUFz
c2VydGlvblJlc3VsdCBBc3NlcnRQcmVkJShuKXNIZWxwZXIoY29uc3QgY2hhciogcHJlZF90ZXh0
IiIiICUgREVGUwotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZSVzIiIiKQotCi0gIGltcGwgKz0gIiIiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWQgcHJlZCIiIgotCi0gIGltcGwgKz0g
SXRlcihuLCAiIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCVz
JiB2JXMiIiIpCi0KLSAgaW1wbCArPSAiIiIpIHsKLSAgaWYgKHByZWQoJSh2cylzKSkgcmV0dXJu
IEFzc2VydGlvblN1Y2Nlc3MoKTsKLQotIiIiICUgREVGUwotCi0gIGltcGwgKz0gJyAgcmV0dXJu
IEFzc2VydGlvbkZhaWx1cmUoKSA8PCBwcmVkX3RleHQgPDwgIigiJwotCi0gIGltcGwgKz0gSXRl
cihuLCAiIiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBlJXMiIiIsIHNlcD0nIDw8
ICIsICInKQotCi0gIGltcGwgKz0gJyA8PCAiKSBldmFsdWF0ZXMgdG8gZmFsc2UsIHdoZXJlIicK
LQotICBpbXBsICs9IEl0ZXIobiwgIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IlxcbiIgPDwgZSVzIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdiVzIiIiKQotCi0gIGltcGwgKz0g
IiIiOwotfQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3IgaW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNT
RVJUfV9QUkVEX0ZPUk1BVCUobilzLgotLy8gRG9uJ3QgdXNlIHRoaXMgaW4geW91ciBjb2RlLgot
I2RlZmluZSBHVEVTVF9QUkVEX0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBvbl9m
YWlsdXJlKVxcCi0gIEdURVNUX0FTU0VSVF8ocHJlZF9mb3JtYXQoJSh2dHMpcywgJSh2cylzKSwg
XFwKLSAgICAgICAgICAgICAgICBvbl9mYWlsdXJlKQotCi0vLyBJbnRlcm5hbCBtYWNybyBmb3Ig
aW1wbGVtZW50aW5nIHtFWFBFQ1R8QVNTRVJUfV9QUkVEJShuKXMuICBEb24ndCB1c2UKLS8vIHRo
aXMgaW4geW91ciBjb2RlLgotI2RlZmluZSBHVEVTVF9QUkVEJShuKXNfKHByZWQsICUodnMpcywg
b25fZmFpbHVyZSlcXAotICBHVEVTVF9BU1NFUlRfKDo6dGVzdGluZzo6QXNzZXJ0UHJlZCUobilz
SGVscGVyKCNwcmVkIiIiICUgREVGUwotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIsIFxcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdiVzIiIiKQotCi0gIGlt
cGwgKz0gIiIiLCBcXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlZCIiIgotCi0gIGltcGwgKz0gSXRlcihuLCAiIiIsIFxcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2JXMiIiIpCi0KLSAgaW1wbCArPSAiIiIpLCBv
bl9mYWlsdXJlKQotCi0vLyAlKEFyaXR5KXMgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyb3MuCi0j
ZGVmaW5lIEVYUEVDVF9QUkVEX0ZPUk1BVCUobilzKHByZWRfZm9ybWF0LCAlKHZzKXMpIFxcCi0g
IEdURVNUX1BSRURfRk9STUFUJShuKXNfKHByZWRfZm9ybWF0LCAlKHZzKXMsIEdURVNUX05PTkZB
VEFMX0ZBSUxVUkVfKQotI2RlZmluZSBFWFBFQ1RfUFJFRCUobilzKHByZWQsICUodnMpcykgXFwK
LSAgR1RFU1RfUFJFRCUobilzXyhwcmVkLCAlKHZzKXMsIEdURVNUX05PTkZBVEFMX0ZBSUxVUkVf
KQotI2RlZmluZSBBU1NFUlRfUFJFRF9GT1JNQVQlKG4pcyhwcmVkX2Zvcm1hdCwgJSh2cylzKSBc
XAotICBHVEVTVF9QUkVEX0ZPUk1BVCUobilzXyhwcmVkX2Zvcm1hdCwgJSh2cylzLCBHVEVTVF9G
QVRBTF9GQUlMVVJFXykKLSNkZWZpbmUgQVNTRVJUX1BSRUQlKG4pcyhwcmVkLCAlKHZzKXMpIFxc
Ci0gIEdURVNUX1BSRUQlKG4pc18ocHJlZCwgJSh2cylzLCBHVEVTVF9GQVRBTF9GQUlMVVJFXykK
LQotIiIiICUgREVGUwotCi0gIHJldHVybiBpbXBsCi0KLQotZGVmIEhlYWRlclBvc3RhbWJsZSgp
OgotICAiIiJSZXR1cm5zIHRoZSBwb3N0YW1ibGUgZm9yIHRoZSBoZWFkZXIgZmlsZS4iIiIKLQot
ICByZXR1cm4gIiIiCi0KLSNlbmRpZiAgLy8gR1RFU1RfSU5DTFVERV9HVEVTVF9HVEVTVF9QUkVE
X0lNUExfSF8KLSIiIgotCi0KLWRlZiBHZW5lcmF0ZUZpbGUocGF0aCwgY29udGVudCk6Ci0gICIi
IkdpdmVuIGEgZmlsZSBwYXRoIGFuZCBhIGNvbnRlbnQgc3RyaW5nLCBvdmVyd3JpdGVzIGl0IHdp
dGggdGhlCi0gIGdpdmVuIGNvbnRlbnQuIiIiCi0KLSAgcHJpbnQgJ1VwZGF0aW5nIGZpbGUgJXMg
LiAuIC4nICUgcGF0aAotCi0gIGYgPSBmaWxlKHBhdGgsICd3KycpCi0gIHByaW50ID4+ZiwgY29u
dGVudCwKLSAgZi5jbG9zZSgpCi0KLSAgcHJpbnQgJ0ZpbGUgJXMgaGFzIGJlZW4gdXBkYXRlZC4n
ICUgcGF0aAotCi0KLWRlZiBHZW5lcmF0ZUhlYWRlcihuKToKLSAgIiIiR2l2ZW4gdGhlIG1heGlt
dW0gYXJpdHkgbiwgdXBkYXRlcyB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbXBsZW1lbnRzCi0gIHRo
ZSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4iIiIKLQotICBHZW5lcmF0ZUZpbGUoSEVBREVSLAotICAg
ICAgICAgICAgICAgSGVhZGVyUHJlYW1ibGUobikKLSAgICAgICAgICAgICAgICsgJycuam9pbihb
SW1wbGVtZW50YXRpb25Gb3JBcml0eShpKSBmb3IgaSBpbiBPbmVUbyhuKV0pCi0gICAgICAgICAg
ICAgICArIEhlYWRlclBvc3RhbWJsZSgpKQotCi0KLWRlZiBVbml0VGVzdFByZWFtYmxlKCk6Ci0g
ICIiIlJldHVybnMgdGhlIHByZWFtYmxlIGZvciB0aGUgdW5pdCB0ZXN0IGZpbGUuIiIiCi0KLSAg
IyBBIG1hcCB0aGF0IGRlZmluZXMgdGhlIHZhbHVlcyB1c2VkIGluIHRoZSBwcmVhbWJsZSB0ZW1w
bGF0ZS4KLSAgREVGUyA9IHsKLSAgICAndG9kYXknIDogdGltZS5zdHJmdGltZSgnJW0vJWQvJVkn
KSwKLSAgICAneWVhcicgOiB0aW1lLnN0cmZ0aW1lKCclWScpLAotICAgICdjb21tYW5kJyA6ICcl
cyAlcycgJSAob3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSksIHN5cy5hcmd2WzFdKSwKLSAg
ICB9Ci0KLSAgcmV0dXJuICgKLSIiIi8vIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotLy8gVGhpcyBmaWxlIGlzIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVEIG9uICUo
dG9kYXkpcyBieSBjb21tYW5kCi0vLyAnJShjb21tYW5kKXMnLiAgRE8gTk9UIEVESVQgQlkgSEFO
RCEKLQotLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBndGVzdF9wcmVkX2ltcGwuaAotLy8KLS8vIFRo
aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYSBzY3JpcHQgYW5kIHF1aXRlIGxvbmcuICBJZiB5b3Ug
aW50ZW5kIHRvCi0vLyBsZWFybiBob3cgR29vZ2xlIFRlc3Qgd29ya3MgYnkgcmVhZGluZyBpdHMg
dW5pdCB0ZXN0cywgcmVhZAotLy8gZ3Rlc3RfdW5pdHRlc3QuY2MgaW5zdGVhZC4KLS8vCi0vLyBU
aGlzIGlzIGludGVuZGVkIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgR29vZ2xlIFRlc3Qg
cHJlZGljYXRlCi0vLyBhc3NlcnRpb25zLiAgV2UgY29tcGlsZSBpdCBhcyBwYXJ0IG9mIHRoZSBn
dGVzdF91bml0dGVzdCB0YXJnZXQKLS8vIG9ubHkgdG8ga2VlcCB0aGUgaW1wbGVtZW50YXRpb24g
dGlkeSBhbmQgY29tcGFjdCwgYXMgaXQgaXMgcXVpdGUKLS8vIGludm9sdmVkIHRvIHNldCB1cCB0
aGUgc3RhZ2UgZm9yIHRlc3RpbmcgR29vZ2xlIFRlc3QgdXNpbmcgR29vZ2xlCi0vLyBUZXN0IGl0
c2VsZi4KLS8vCi0vLyBDdXJyZW50bHksIGd0ZXN0X3VuaXR0ZXN0IHRha2VzIH4xMSBzZWNvbmRz
IHRvIHJ1biBpbiB0aGUgdGVzdGluZwotLy8gZGFlbW9uLiAgSW4gdGhlIGZ1dHVyZSwgaWYgaXQg
Z3Jvd3MgdG9vIGxhcmdlIGFuZCBuZWVkcyBtdWNoIG1vcmUKLS8vIHRpbWUgdG8gZmluaXNoLCB3
ZSBzaG91bGQgY29uc2lkZXIgc2VwYXJhdGluZyB0aGlzIGZpbGUgaW50byBhCi0vLyBzdGFuZC1h
bG9uZSByZWdyZXNzaW9uIHRlc3QuCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLS8vIEEgdXNl
ci1kZWZpbmVkIGRhdGEgdHlwZS4KLXN0cnVjdCBCb29sIHsKLSAgZXhwbGljaXQgQm9vbChpbnQg
dmFsKSA6IHZhbHVlKHZhbCAhPSAwKSB7fQotCi0gIGJvb2wgb3BlcmF0b3I+KGludCBuKSBjb25z
dCB7IHJldHVybiB2YWx1ZSA+IEJvb2wobikudmFsdWU7IH0KLQotICBCb29sIG9wZXJhdG9yKyhj
b25zdCBCb29sJiByaHMpIGNvbnN0IHsgcmV0dXJuIEJvb2wodmFsdWUgKyByaHMudmFsdWUpOyB9
Ci0KLSAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvb2wmIHJocykgY29uc3QgeyByZXR1cm4gdmFs
dWUgPT0gcmhzLnZhbHVlOyB9Ci0KLSAgYm9vbCB2YWx1ZTsKLX07Ci0KLS8vIEVuYWJsZXMgQm9v
bCB0byBiZSB1c2VkIGluIGFzc2VydGlvbnMuCi1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3Rk
Ojpvc3RyZWFtJiBvcywgY29uc3QgQm9vbCYgeCkgewotICByZXR1cm4gb3MgPDwgKHgudmFsdWUg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKLX0KLQotIiIiICUgREVGUykKLQotCi1kZWYgVGVzdHNGb3JB
cml0eShuKToKLSAgIiIiUmV0dXJucyB0aGUgdGVzdHMgZm9yIG4tYXJ5IHByZWRpY2F0ZSBhc3Nl
cnRpb25zLiIiIgotCi0gICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1ZXMgdXNlZCBpbiB0
aGUgdGVtcGxhdGUgZm9yIHRoZSB0ZXN0cy4KLSAgREVGUyA9IHsKLSAgICAnbicgOiBuLAotICAg
ICdlcycgOiBJdGVyKG4sICdlJXMnLCBzZXA9JywgJyksCi0gICAgJ3ZzJyA6IEl0ZXIobiwgJ3Yl
cycsIHNlcD0nLCAnKSwKLSAgICAndnRzJyA6IEl0ZXIobiwgJyN2JXMnLCBzZXA9JywgJyksCi0g
ICAgJ3R2cycgOiBJdGVyKG4sICdUJXMgdiVzJywgc2VwPScsICcpLAotICAgICdpbnRfdnMnIDog
SXRlcihuLCAnaW50IHYlcycsIHNlcD0nLCAnKSwKLSAgICAnQm9vbF92cycgOiBJdGVyKG4sICdC
b29sIHYlcycsIHNlcD0nLCAnKSwKLSAgICAndHlwZXMnIDogSXRlcihuLCAndHlwZW5hbWUgVCVz
Jywgc2VwPScsICcpLAotICAgICd2X3N1bScgOiBJdGVyKG4sICd2JXMnLCBzZXA9JyArICcpLAot
ICAgICdhcml0eScgOiBBcml0eShuKSwKLSAgICAnQXJpdHknIDogVGl0bGUoQXJpdHkobikpLAot
ICAgIH0KLQotICB0ZXN0cyA9ICgKLSIiIi8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9y
IHRlc3RpbmcgJShhcml0eSlzIHByZWRpY2F0ZSBhc3NlcnRpb25zLgotCi0vLyBBICUoYXJpdHkp
cyBwcmVkaWNhdGUgZnVuY3Rpb24uCi10ZW1wbGF0ZSA8JSh0eXBlcylzPgotYm9vbCBQcmVkRnVu
Y3Rpb24lKG4pcyglKHR2cylzKSB7Ci0gIHJldHVybiAlKHZfc3VtKXMgPiAwOwotfQotCi0vLyBU
aGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCB0byBjaXJjdW12ZW50IGEgYnVn
IGluCi0vLyBnY2MgMi45NS4zLCB3aGljaCBzb21ldGltZXMgaGFzIHByb2JsZW0gd2l0aCB0aGUg
YWJvdmUgdGVtcGxhdGUKLS8vIGZ1bmN0aW9uLgotYm9vbCBQcmVkRnVuY3Rpb24lKG4pc0ludCgl
KGludF92cylzKSB7Ci0gIHJldHVybiAlKHZfc3VtKXMgPiAwOwotfQotYm9vbCBQcmVkRnVuY3Rp
b24lKG4pc0Jvb2woJShCb29sX3ZzKXMpIHsKLSAgcmV0dXJuICUodl9zdW0pcyA+IDA7Ci19Ci0i
IiIgJSBERUZTKQotCi0gIHRlc3RzICs9ICIiIgotLy8gQSAlKGFyaXR5KXMgcHJlZGljYXRlIGZ1
bmN0b3IuCi1zdHJ1Y3QgUHJlZEZ1bmN0b3IlKG4pcyB7Ci0gIHRlbXBsYXRlIDwlKHR5cGVzKXM+
Ci0gIGJvb2wgb3BlcmF0b3IoKSgiIiIgJSBERUZTCi0KLSAgdGVzdHMgKz0gSXRlcihuLCAnY29u
c3QgVCVzJiB2JXMnLCBzZXA9IiIiLAotICAgICAgICAgICAgICAgICAgIiIiKQotCi0gIHRlc3Rz
ICs9ICIiIikgewotICAgIHJldHVybiAlKHZfc3VtKXMgPiAwOwotICB9Ci19OwotIiIiICUgREVG
UwotCi0gIHRlc3RzICs9ICIiIgotLy8gQSAlKGFyaXR5KXMgcHJlZGljYXRlLWZvcm1hdHRlciBm
dW5jdGlvbi4KLXRlbXBsYXRlIDwlKHR5cGVzKXM+Ci10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
UHJlZEZvcm1hdEZ1bmN0aW9uJShuKXMoIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0ZXIobiwg
J2NvbnN0IGNoYXIqIGUlcycsIHNlcD0iIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIiIpCi0KLSAgdGVzdHMgKz0gSXRlcihuLCAiIiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJXMmIHYlcyIiIikK
LQotICB0ZXN0cyArPSAiIiIpIHsKLSAgaWYgKFByZWRGdW5jdGlvbiUobilzKCUodnMpcykpCi0g
ICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gdGVzdGlu
Zzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCAiIiIgJSBERUZTCi0KLSAgdGVzdHMgKz0g
SXRlcihuLCAnZSVzJywgc2VwPScgPDwgIiArICIgPDwgJykKLQotICB0ZXN0cyArPSAiIiIKLSAg
ICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUgcG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgot
ICAgICAgPDwgJSh2X3N1bSlzIDw8ICIuIjsKLX0KLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAi
IiIKLS8vIEEgJShhcml0eSlzIHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rvci4KLXN0cnVjdCBQ
cmVkRm9ybWF0RnVuY3RvciUobilzIHsKLSAgdGVtcGxhdGUgPCUodHlwZXMpcz4KLSAgdGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0
ZXIobiwgJ2NvbnN0IGNoYXIqIGUlcycsIHNlcD0iIiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIiIikKLQotICB0ZXN0cyArPSBJdGVyKG4sICIiIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCVzJiB2JXMiIiIpCi0KLSAgdGVz
dHMgKz0gIiIiKSBjb25zdCB7Ci0gICAgcmV0dXJuIFByZWRGb3JtYXRGdW5jdGlvbiUobilzKCUo
ZXMpcywgJSh2cylzKTsKLSAgfQotfTsKLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAiIiIKLS8v
IFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQlKG4pcy4KLQotY2xhc3MgUHJl
ZGljYXRlJShuKXNUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAg
dmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSB0cnVlOwot
ICAgIGZpbmlzaGVkXyA9IGZhbHNlOyIiIiAlIERFRlMKLQotICB0ZXN0cyArPSAiIiIKLSAgICAi
IiIgKyBJdGVyKG4sICduJXNfID0gJykgKyAiIiIwOwotICB9Ci0iIiIKLQotICB0ZXN0cyArPSAi
IiIKLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFj
aCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFj
dGx5IG9uY2UuIiIiCi0KLSAgdGVzdHMgKz0gJycuam9pbihbIiIiCi0gICAgRVhQRUNUX0VRKDEs
IG4lc18pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVh
dGUgYXJndW1lbnQgJXMgIgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7IiIiICUgKGksIGkgKyAx
KSBmb3IgaSBpbiBPbmVUbyhuKV0pCi0KLSAgdGVzdHMgKz0gIiIiCi0KLSAgICAvLyBWZXJpZmll
cyB0aGF0IHRoZSBjb250cm9sIGZsb3cgaW4gdGhlIHRlc3QgZnVuY3Rpb24gaXMgZXhwZWN0ZWQu
Ci0gICAgaWYgKGV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgIWZpbmlzaGVkXykgewotICAgICAgRkFJ
TCgpIDw8ICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiB1bmV4cGFjdGVkbHkgYWJvcnRlZCB0aGUg
dGVzdC4iOwotICAgIH0gZWxzZSBpZiAoIWV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgZmluaXNoZWRf
KSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBmYWlsZWQgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRu
J3QgYWJvcnQgdGhlIHRlc3QgIgotICAgICAgICAgICAgICAgICJhcyBleHBlY3RlZC4iOwotICAg
IH0KLSAgfQotCi0gIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRv
IHJ1biB0byBmaW5pc2guCi0gIHN0YXRpYyBib29sIGV4cGVjdGVkX3RvX2ZpbmlzaF87Ci0KLSAg
Ly8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gZGlkIHJ1biB0byBmaW5pc2guCi0gIHN0YXRp
YyBib29sIGZpbmlzaGVkXzsKLSIiIiAlIERFRlMKLQotICB0ZXN0cyArPSBJdGVyKG4sICIiIgot
ICBzdGF0aWMgaW50IG4lc187IiIiKQotCi0gIHRlc3RzICs9ICIiIgotfTsKLQotYm9vbCBQcmVk
aWNhdGUlKG4pc1Rlc3Q6OmV4cGVjdGVkX3RvX2ZpbmlzaF87Ci1ib29sIFByZWRpY2F0ZSUobilz
VGVzdDo6ZmluaXNoZWRfOwotIiIiICUgREVGUwotCi0gIHRlc3RzICs9IEl0ZXIobiwgIiIiaW50
IFByZWRpY2F0ZSUlKG4pc1Rlc3Q6Om4lc187Ci0iIiIpICUgREVGUwotCi0gIHRlc3RzICs9ICIi
IgotdHlwZWRlZiBQcmVkaWNhdGUlKG4pc1Rlc3QgRVhQRUNUX1BSRURfRk9STUFUJShuKXNUZXN0
OwotdHlwZWRlZiBQcmVkaWNhdGUlKG4pc1Rlc3QgQVNTRVJUX1BSRURfRk9STUFUJShuKXNUZXN0
OwotdHlwZWRlZiBQcmVkaWNhdGUlKG4pc1Rlc3QgRVhQRUNUX1BSRUQlKG4pc1Rlc3Q7Ci10eXBl
ZGVmIFByZWRpY2F0ZSUobilzVGVzdCBBU1NFUlRfUFJFRCUobilzVGVzdDsKLSIiIiAlIERFRlMK
LQotICBkZWYgR2VuVGVzdCh1c2VfZm9ybWF0LCB1c2VfYXNzZXJ0LCBleHBlY3RfZmFpbHVyZSwK
LSAgICAgICAgICAgICAgdXNlX2Z1bmN0b3IsIHVzZV91c2VyX3R5cGUpOgotICAgICIiIlJldHVy
bnMgdGhlIHRlc3QgZm9yIGEgcHJlZGljYXRlIGFzc2VydGlvbiBtYWNyby4KLQotICAgIEFyZ3M6
Ci0gICAgICB1c2VfZm9ybWF0OiAgICAgdHJ1ZSBpZmYgdGhlIGFzc2VydGlvbiBpcyBhICpfUFJF
RF9GT1JNQVQqLgotICAgICAgdXNlX2Fzc2VydDogICAgIHRydWUgaWZmIHRoZSBhc3NlcnRpb24g
aXMgYSBBU1NFUlRfKi4KLSAgICAgIGV4cGVjdF9mYWlsdXJlOiB0cnVlIGlmZiB0aGUgYXNzZXJ0
aW9uIGlzIGV4cGVjdGVkIHRvIGZhaWwuCi0gICAgICB1c2VfZnVuY3RvcjogICAgdHJ1ZSBpZmYg
dGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBhc3NlcnRpb24gaXMKLSAgICAgICAgICAgICAgICAg
ICAgICBhIGZ1bmN0b3IgKGFzIG9wcG9zZWQgdG8gYSBmdW5jdGlvbikKLSAgICAgIHVzZV91c2Vy
X3R5cGU6ICB0cnVlIGlmZiB0aGUgcHJlZGljYXRlIGZ1bmN0b3IvZnVuY3Rpb24gdGFrZXMKLSAg
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudChzKSBvZiBhIHVzZXItZGVmaW5lZCB0eXBlLgot
Ci0gICAgRXhhbXBsZToKLQotICAgICAgR2VuVGVzdCgxLCAwLCAwLCAxLCAwKSByZXR1cm5zIGEg
dGVzdCB0aGF0IHRlc3RzIHRoZSBiZWhhdmlvcgotICAgICAgb2YgYSBzdWNjZXNzZnVsIEVYUEVD
VF9QUkVEX0ZPUk1BVG4oKSB0aGF0IHRha2VzIGEgZnVuY3RvcgotICAgICAgd2hvc2UgYXJndW1l
bnRzIGhhdmUgYnVpbHQtaW4gdHlwZXMuIiIiCi0KLSAgICBpZiB1c2VfYXNzZXJ0OgotICAgICAg
YXNzcnQgPSAnQVNTRVJUJyAgIyAnYXNzZXJ0JyBpcyByZXNlcnZlZCwgc28gd2UgY2Fubm90IHVz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGF0IGlkZW50aWZpZXIgaGVyZS4KLSAgICBl
bHNlOgotICAgICAgYXNzcnQgPSAnRVhQRUNUJwotCi0gICAgYXNzZXJ0aW9uID0gYXNzcnQgKyAn
X1BSRUQnCi0KLSAgICBpZiB1c2VfZm9ybWF0OgotICAgICAgcHJlZF9mb3JtYXQgPSAnUHJlZEZv
cm1hdCcKLSAgICAgIGFzc2VydGlvbiArPSAnX0ZPUk1BVCcKLSAgICBlbHNlOgotICAgICAgcHJl
ZF9mb3JtYXQgPSAnUHJlZCcKLQotICAgIGFzc2VydGlvbiArPSAnJShuKXMnICUgREVGUwotCi0g
ICAgaWYgdXNlX2Z1bmN0b3I6Ci0gICAgICBwcmVkX2Zvcm1hdF90eXBlID0gJ2Z1bmN0b3InCi0g
ICAgICBwcmVkX2Zvcm1hdCArPSAnRnVuY3RvciUobilzKCknCi0gICAgZWxzZToKLSAgICAgIHBy
ZWRfZm9ybWF0X3R5cGUgPSAnZnVuY3Rpb24nCi0gICAgICBwcmVkX2Zvcm1hdCArPSAnRnVuY3Rp
b24lKG4pcycKLSAgICAgIGlmIG5vdCB1c2VfZm9ybWF0OgotICAgICAgICBpZiB1c2VfdXNlcl90
eXBlOgotICAgICAgICAgIHByZWRfZm9ybWF0ICs9ICdCb29sJwotICAgICAgICBlbHNlOgotICAg
ICAgICAgIHByZWRfZm9ybWF0ICs9ICdJbnQnCi0KLSAgICB0ZXN0X25hbWUgPSBwcmVkX2Zvcm1h
dF90eXBlLnRpdGxlKCkKLQotICAgIGlmIHVzZV91c2VyX3R5cGU6Ci0gICAgICBhcmdfdHlwZSA9
ICd1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCknCi0gICAgICB0ZXN0X25hbWUgKz0gJ09uVXNlclR5
cGUnCi0gICAgICBpZiBleHBlY3RfZmFpbHVyZToKLSAgICAgICAgYXJnID0gJ0Jvb2wobiVzXysr
KScKLSAgICAgIGVsc2U6Ci0gICAgICAgIGFyZyA9ICdCb29sKCsrbiVzXyknCi0gICAgZWxzZToK
LSAgICAgIGFyZ190eXBlID0gJ2J1aWx0LWluIHR5cGUgKGludCknCi0gICAgICB0ZXN0X25hbWUg
Kz0gJ09uQnVpbHRJblR5cGUnCi0gICAgICBpZiBleHBlY3RfZmFpbHVyZToKLSAgICAgICAgYXJn
ID0gJ24lc18rKycKLSAgICAgIGVsc2U6Ci0gICAgICAgIGFyZyA9ICcrK24lc18nCi0KLSAgICBp
ZiBleHBlY3RfZmFpbHVyZToKLSAgICAgIHN1Y2Nlc3NmdWxfb3JfZmFpbGVkID0gJ2ZhaWxlZCcK
LSAgICAgIGV4cGVjdGVkX29yX25vdCA9ICdleHBlY3RlZC4nCi0gICAgICB0ZXN0X25hbWUgKz0g
ICdGYWlsdXJlJwotICAgIGVsc2U6Ci0gICAgICBzdWNjZXNzZnVsX29yX2ZhaWxlZCA9ICdzdWNj
ZXNzZnVsJwotICAgICAgZXhwZWN0ZWRfb3Jfbm90ID0gJ1VORVhQRUNURUQhJwotICAgICAgdGVz
dF9uYW1lICs9ICAnU3VjY2VzcycKLQotICAgICMgQSBtYXAgdGhhdCBkZWZpbmVzIHRoZSB2YWx1
ZXMgdXNlZCBpbiB0aGUgdGVzdCB0ZW1wbGF0ZS4KLSAgICBkZWZzID0gREVGUy5jb3B5KCkKLSAg
ICBkZWZzLnVwZGF0ZSh7Ci0gICAgICAnYXNzZXJ0JyA6IGFzc3J0LAotICAgICAgJ2Fzc2VydGlv
bicgOiBhc3NlcnRpb24sCi0gICAgICAndGVzdF9uYW1lJyA6IHRlc3RfbmFtZSwKLSAgICAgICdw
Zl90eXBlJyA6IHByZWRfZm9ybWF0X3R5cGUsCi0gICAgICAncGYnIDogcHJlZF9mb3JtYXQsCi0g
ICAgICAnYXJnX3R5cGUnIDogYXJnX3R5cGUsCi0gICAgICAnYXJnJyA6IGFyZywKLSAgICAgICdz
dWNjZXNzZnVsJyA6IHN1Y2Nlc3NmdWxfb3JfZmFpbGVkLAotICAgICAgJ2V4cGVjdGVkJyA6IGV4
cGVjdGVkX29yX25vdCwKLSAgICAgIH0pCi0KLSAgICB0ZXN0ID0gIiIiCi0vLyBUZXN0cyBhICUo
c3VjY2Vzc2Z1bClzICUoYXNzZXJ0aW9uKXMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgJShwZl90eXBlKXMgb24gYSAlKGFyZ190eXBlKXMuCi1URVNUX0YoJShhc3NlcnRp
b24pc1Rlc3QsICUodGVzdF9uYW1lKXMpIHsiIiIgJSBkZWZzCi0KLSAgICBpbmRlbnQgPSAobGVu
KGFzc2VydGlvbikgKyAzKSonICcKLSAgICBleHRyYV9pbmRlbnQgPSAnJwotCi0gICAgaWYgZXhw
ZWN0X2ZhaWx1cmU6Ci0gICAgICBleHRyYV9pbmRlbnQgPSAnICAnCi0gICAgICBpZiB1c2VfYXNz
ZXJ0OgotICAgICAgICB0ZXN0ICs9ICIiIgotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVCIiIgotICAgICAgZWxzZToKLSAg
ICAgICAgdGVzdCArPSAiIiIKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
IiIiCi0KLSAgICB0ZXN0ICs9ICdcbicgKyBleHRyYV9pbmRlbnQgKyAiIiIgICUoYXNzZXJ0aW9u
KXMoJShwZilzIiIiICUgZGVmcwotCi0gICAgdGVzdCA9IHRlc3QgJSBkZWZzCi0gICAgdGVzdCAr
PSBJdGVyKG4sICcsXG4nICsgaW5kZW50ICsgZXh0cmFfaW5kZW50ICsgJyUoYXJnKXMnICUgZGVm
cykKLSAgICB0ZXN0ICs9ICcpO1xuJyArIGV4dHJhX2luZGVudCArICcgIGZpbmlzaGVkXyA9IHRy
dWU7XG4nCi0KLSAgICBpZiBleHBlY3RfZmFpbHVyZToKLSAgICAgIHRlc3QgKz0gJyAgfSwgIiIp
O1xuJwotCi0gICAgdGVzdCArPSAnfVxuJwotICAgIHJldHVybiB0ZXN0Ci0KLSAgIyBHZW5lcmF0
ZXMgdGVzdHMgZm9yIGFsbCAyKio2ID0gNjQgY29tYmluYXRpb25zLgotICB0ZXN0cyArPSAnJy5q
b2luKFtHZW5UZXN0KHVzZV9mb3JtYXQsIHVzZV9hc3NlcnQsIGV4cGVjdF9mYWlsdXJlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mdW5jdG9yLCB1c2VfdXNlcl90eXBlKQotICAg
ICAgICAgICAgICAgICAgICBmb3IgdXNlX2Zvcm1hdCBpbiBbMCwgMV0KLSAgICAgICAgICAgICAg
ICAgICAgZm9yIHVzZV9hc3NlcnQgaW4gWzAsIDFdCi0gICAgICAgICAgICAgICAgICAgIGZvciBl
eHBlY3RfZmFpbHVyZSBpbiBbMCwgMV0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHVzZV9mdW5j
dG9yIGluIFswLCAxXQotICAgICAgICAgICAgICAgICAgICBmb3IgdXNlX3VzZXJfdHlwZSBpbiBb
MCwgMV0KLSAgICAgICAgICAgICAgICAgICAgXSkKLQotICByZXR1cm4gdGVzdHMKLQotCi1kZWYg
VW5pdFRlc3RQb3N0YW1ibGUoKToKLSAgIiIiUmV0dXJucyB0aGUgcG9zdGFtYmxlIGZvciB0aGUg
dGVzdHMuIiIiCi0KLSAgcmV0dXJuICcnCi0KLQotZGVmIEdlbmVyYXRlVW5pdFRlc3Qobik6Ci0g
ICIiIlJldHVybnMgdGhlIHRlc3RzIGZvciB1cC10byBuLWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9u
cy4iIiIKLQotICBHZW5lcmF0ZUZpbGUoVU5JVF9URVNULAotICAgICAgICAgICAgICAgVW5pdFRl
c3RQcmVhbWJsZSgpCi0gICAgICAgICAgICAgICArICcnLmpvaW4oW1Rlc3RzRm9yQXJpdHkoaSkg
Zm9yIGkgaW4gT25lVG8obildKQotICAgICAgICAgICAgICAgKyBVbml0VGVzdFBvc3RhbWJsZSgp
KQotCi0KLWRlZiBfTWFpbigpOgotICAiIiJUaGUgZW50cnkgcG9pbnQgb2YgdGhlIHNjcmlwdC4g
IEdlbmVyYXRlcyB0aGUgaGVhZGVyIGZpbGUgYW5kIGl0cwotICB1bml0IHRlc3QuIiIiCi0KLSAg
aWYgbGVuKHN5cy5hcmd2KSAhPSAyOgotICAgIHByaW50IF9fZG9jX18KLSAgICBwcmludCAnQXV0
aG9yOiAnICsgX19hdXRob3JfXwotICAgIHN5cy5leGl0KDEpCi0KLSAgbiA9IGludChzeXMuYXJn
dlsxXSkKLSAgR2VuZXJhdGVIZWFkZXIobikKLSAgR2VuZXJhdGVVbml0VGVzdChuKQotCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIF9NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9ndGVzdC1j
b25maWcuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc4MGY4NDMyZWZjYy4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvZ3Rlc3QtY29uZmlnLmluCisrKyAv
ZGV2L251bGwKQEAgLTEsMjc0ICswLDAgQEAKLSMhL2Jpbi9zaAotCi0jIFRoZXNlIHZhcmlhYmxl
cyBhcmUgYXV0b21hdGljYWxseSBmaWxsZWQgaW4gYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCi1u
YW1lPSJAUEFDS0FHRV9UQVJOQU1FQCIKLXZlcnNpb249IkBQQUNLQUdFX1ZFUlNJT05AIgotCi1z
aG93X3VzYWdlKCkKLXsKLSAgZWNobyAiVXNhZ2U6IGd0ZXN0LWNvbmZpZyBbT1BUSU9OUy4uLl0i
Ci19Ci0KLXNob3dfaGVscCgpCi17Ci0gIHNob3dfdXNhZ2UKLSAgY2F0IDw8XEVPRgotCi1UaGUg
YGd0ZXN0LWNvbmZpZycgc2NyaXB0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmVjZXNzYXJ5IGNv
bXBpbGUgYW5kIGxpbmtpbmcKLWZsYWdzIHRvIGNvbm5lY3Qgd2l0aCBHb29nbGUgQysrIFRlc3Rp
bmcgRnJhbWV3b3JrLCBib3RoIGluIGEgYnVpbGQgcHJpb3IgdG8KLWluc3RhbGxhdGlvbiwgYW5k
IG9uIHRoZSBzeXN0ZW0gcHJvcGVyIGFmdGVyIGluc3RhbGxhdGlvbi4gVGhlIGluc3RhbGxhdGlv
bgotb3ZlcnJpZGVzIG1heSBiZSBpc3N1ZWQgaW4gY29tYmluYXRpb24gd2l0aCBhbnkgb3RoZXIg
cXVlcmllcywgYnV0IHdpbGwgb25seQotYWZmZWN0IGluc3RhbGxhdGlvbiBxdWVyaWVzIGlmIGNh
bGxlZCBvbiBhIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGd0ZXN0LiBUaGUKLWluc3RhbGxhdGlv
biBxdWVyaWVzIG1heSBub3QgYmUgaXNzdWVkIHdpdGggYW55IG90aGVyIHR5cGVzIG9mIHF1ZXJp
ZXMsIGFuZAotb25seSBvbmUgaW5zdGFsbGF0aW9uIHF1ZXJ5IG1heSBiZSBtYWRlIGF0IGEgdGlt
ZS4gVGhlIHZlcnNpb24gcXVlcmllcyBhbmQKLWNvbXBpbGVyIGZsYWcgcXVlcmllcyBtYXkgYmUg
Y29tYmluZWQgYXMgZGVzaXJlZCBidXQgbm90IG1peGVkLiBEaWZmZXJlbnQKLXZlcnNpb24gcXVl
cmllcyBhcmUgYWx3YXlzIGNvbWJpbmVkIHdpdGggbG9naWNhbCAiYW5kIiBzZW1hbnRpY3MsIGFu
ZCBvbmx5IHRoZQotbGFzdCBvZiBhbnkgcGFydGljdWxhciBxdWVyeSBpcyB1c2VkIHdoaWxlIGFs
bCBwcmV2aW91cyBvbmVzIGlnbm9yZWQuIEFsbAotdmVyc2lvbnMgbXVzdCBiZSBzcGVjaWZpZWQg
YXMgYSBzZXF1ZW5jZSBvZiBudW1iZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzLgotQ29tcGlsZXIg
ZmxhZyBxdWVyaWVzIG91dHB1dCB0aGUgdW5pb24gb2YgdGhlIHNldHMgb2YgZmxhZ3Mgd2hlbiBj
b21iaW5lZC4KLQotIEV4YW1wbGVzOgotICBndGVzdC1jb25maWcgLS1taW4tdmVyc2lvbj0xLjAg
fHwgZWNobyAiSW5zdWZmaWNpZW50IEdvb2dsZSBUZXN0IHZlcnNpb24uIgotCi0gIGcrKyAkKGd0
ZXN0LWNvbmZpZyAtLWNwcGZsYWdzIC0tY3h4ZmxhZ3MpIC1vIGZvby5vIC1jIGZvby5jcHAKLSAg
ZysrICQoZ3Rlc3QtY29uZmlnIC0tbGRmbGFncyAtLWxpYnMpIC1vIGZvbyBmb28ubwotCi0gICMg
V2hlbiB1c2luZyBhIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIEdvb2dsZSBUZXN0OgotICBnKysg
JCguLi8uLi9teV9ndGVzdF9idWlsZC9zY3JpcHRzL2d0ZXN0LWNvbmZpZyAuLi4pIC4uLgotCi0g
ICMgV2hlbiB1c2luZyBhbiBpbnN0YWxsZWQgR29vZ2xlIFRlc3QsIGJ1dCB3aXRoIGluc3RhbGxh
dGlvbiBvdmVycmlkZXM6Ci0gIGV4cG9ydCBHVEVTVF9QUkVGSVg9Ii9vcHQiCi0gIGcrKyAkKGd0
ZXN0LWNvbmZpZyAtLWxpYmRpcj0iL29wdC9saWI2NCIgLi4uKSAuLi4KLQotIEhlbHA6Ci0gIC0t
dXNhZ2UgICAgICAgICAgICAgICAgICAgIGJyaWVmIHVzYWdlIGluZm9ybWF0aW9uCi0gIC0taGVs
cCAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UKLQotIEluc3Rh
bGxhdGlvbiBPdmVycmlkZXM6Ci0gIC0tcHJlZml4PTxkaXI+ICAgICAgICAgICAgIG92ZXJyaWRl
cyB0aGUgaW5zdGFsbGF0aW9uIHByZWZpeAotICAtLWV4ZWMtcHJlZml4PTxkaXI+ICAgICAgICBv
dmVycmlkZXMgdGhlIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZpeAotICAtLWxpYmRpcj08
ZGlyPiAgICAgICAgICAgICBvdmVycmlkZXMgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIHByZWZp
eAotICAtLWluY2x1ZGVkaXI9PGRpcj4gICAgICAgICBvdmVycmlkZXMgdGhlIGhlYWRlciBmaWxl
IGluc3RhbGxhdGlvbiBwcmVmaXgKLQotIEluc3RhbGxhdGlvbiBRdWVyaWVzOgotICAtLXByZWZp
eCAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gcHJlZml4Ci0gIC0tZXhlYy1wcmVmaXgg
ICAgICAgICAgICAgIGV4ZWN1dGFibGUgaW5zdGFsbGF0aW9uIHByZWZpeAotICAtLWxpYmRpciAg
ICAgICAgICAgICAgICAgICBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLSAgLS1pbmNs
dWRlZGlyICAgICAgICAgICAgICAgaGVhZGVyIGZpbGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQot
ICAtLXZlcnNpb24gICAgICAgICAgICAgICAgICB0aGUgdmVyc2lvbiBvZiB0aGUgR29vZ2xlIFRl
c3QgaW5zdGFsbGF0aW9uCi0KLSBWZXJzaW9uIFF1ZXJpZXM6Ci0gIC0tbWluLXZlcnNpb249VkVS
U0lPTiAgICAgIHJldHVybiAwIGlmIHRoZSB2ZXJzaW9uIGlzIGF0IGxlYXN0IFZFUlNJT04KLSAg
LS1leGFjdC12ZXJzaW9uPVZFUlNJT04gICAgcmV0dXJuIDAgaWYgdGhlIHZlcnNpb24gaXMgZXhh
Y3RseSBWRVJTSU9OCi0gIC0tbWF4LXZlcnNpb249VkVSU0lPTiAgICAgIHJldHVybiAwIGlmIHRo
ZSB2ZXJzaW9uIGlzIGF0IG1vc3QgVkVSU0lPTgotCi0gQ29tcGlsYXRpb24gRmxhZyBRdWVyaWVz
OgotICAtLWNwcGZsYWdzICAgICAgICAgICAgICAgICBjb21waWxlIGZsYWdzIHNwZWNpZmljIHRv
IHRoZSBDLWxpa2UgcHJlcHJvY2Vzc29ycwotICAtLWN4eGZsYWdzICAgICAgICAgICAgICAgICBj
b21waWxlIGZsYWdzIGFwcHJvcHJpYXRlIGZvciBDKysgcHJvZ3JhbXMKLSAgLS1sZGZsYWdzICAg
ICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzCi0gIC0tbGlicyAgICAgICAgICAgICAgICAgICAg
IGxpYnJhcmllcyBmb3IgbGlua2luZwotCi1FT0YKLX0KLQotIyBUaGlzIGZ1bmN0aW9uIGJvdW5k
cyBvdXIgdmVyc2lvbiB3aXRoIGEgbWluIGFuZCBhIG1heC4gSXQgdXNlcyBzb21lIGNsZXZlcgot
IyBQT1NJWC1jb21wbGlhbnQgdmFyaWFibGUgZXhwYW5zaW9uIHRvIHBvcnRhYmx5IGRvIGFsbCB0
aGUgd29yayBpbiB0aGUgc2hlbGwKLSMgYW5kIGF2b2lkIGFueSBkZXBlbmRlbmN5IG9uIGEgcGFy
dGljdWxhciAic2VkIiBvciAiYXdrIiBpbXBsZW1lbnRhdGlvbi4KLSMgTm90YWJsZSBpcyB0aGF0
IGl0IHdpbGwgb25seSBldmVyIGNvbXBhcmUgdGhlIGZpcnN0IDMgY29tcG9uZW50cyBvZiB2ZXJz
aW9ucy4KLSMgRnVydGhlciBjb21wb25lbnRzIHdpbGwgYmUgY2xlYW5seSBzdHJpcHBlZCBvZmYu
IEFsbCB2ZXJzaW9ucyBtdXN0IGJlCi0jIHVuYWRvcm5lZCwgc28gInYxLjAiIHdpbGwgKm5vdCog
d29yay4gVGhlIG1pbmltdW0gdmVyc2lvbiBtdXN0IGJlIGluICQxLCBhbmQKLSMgdGhlIG1heCBp
biAkMi4gVE9ETyhjaGFuZGxlcmNAZ29vZ2xlLmNvbSk6IElmIHRoaXMgZXZlciBicmVha3MsIHdl
IHNob3VsZAotIyBpbnZlc3RpZ2F0ZSBleHBhbmRpbmcgdGhpcyB2aWEgYXV0b200dGUgZnJvbSBB
U19WRVJTSU9OX0NPTVBBUkUgcmF0aGVyIHRoYW4KLSMgY29udGludWluZyB0byBtYWludGFpbiBv
dXIgb3duIHNoZWxsIHZlcnNpb24uCi1jaGVja192ZXJzaW9ucygpCi17Ci0gIG1ham9yX3ZlcnNp
b249JHt2ZXJzaW9uJSUuKn0KLSAgbWlub3JfdmVyc2lvbj0iMCIKLSAgcG9pbnRfdmVyc2lvbj0i
MCIKLSAgaWYgdGVzdCAiJHt2ZXJzaW9uIyoufSIgIT0gIiR7dmVyc2lvbn0iOyB0aGVuCi0gICAg
bWlub3JfdmVyc2lvbj0ke3ZlcnNpb24jKi59Ci0gICAgbWlub3JfdmVyc2lvbj0ke21pbm9yX3Zl
cnNpb24lJS4qfQotICBmaQotICBpZiB0ZXN0ICIke3ZlcnNpb24jKi4qLn0iICE9ICIke3ZlcnNp
b259IjsgdGhlbgotICAgIHBvaW50X3ZlcnNpb249JHt2ZXJzaW9uIyouKi59Ci0gICAgcG9pbnRf
dmVyc2lvbj0ke3BvaW50X3ZlcnNpb24lJS4qfQotICBmaQotCi0gIG1pbl92ZXJzaW9uPSIkMSIK
LSAgbWluX21ham9yX3ZlcnNpb249JHttaW5fdmVyc2lvbiUlLip9Ci0gIG1pbl9taW5vcl92ZXJz
aW9uPSIwIgotICBtaW5fcG9pbnRfdmVyc2lvbj0iMCIKLSAgaWYgdGVzdCAiJHttaW5fdmVyc2lv
biMqLn0iICE9ICIke21pbl92ZXJzaW9ufSI7IHRoZW4KLSAgICBtaW5fbWlub3JfdmVyc2lvbj0k
e21pbl92ZXJzaW9uIyoufQotICAgIG1pbl9taW5vcl92ZXJzaW9uPSR7bWluX21pbm9yX3ZlcnNp
b24lJS4qfQotICBmaQotICBpZiB0ZXN0ICIke21pbl92ZXJzaW9uIyouKi59IiAhPSAiJHttaW5f
dmVyc2lvbn0iOyB0aGVuCi0gICAgbWluX3BvaW50X3ZlcnNpb249JHttaW5fdmVyc2lvbiMqLiou
fQotICAgIG1pbl9wb2ludF92ZXJzaW9uPSR7bWluX3BvaW50X3ZlcnNpb24lJS4qfQotICBmaQot
Ci0gIG1heF92ZXJzaW9uPSIkMiIKLSAgbWF4X21ham9yX3ZlcnNpb249JHttYXhfdmVyc2lvbiUl
Lip9Ci0gIG1heF9taW5vcl92ZXJzaW9uPSIwIgotICBtYXhfcG9pbnRfdmVyc2lvbj0iMCIKLSAg
aWYgdGVzdCAiJHttYXhfdmVyc2lvbiMqLn0iICE9ICIke21heF92ZXJzaW9ufSI7IHRoZW4KLSAg
ICBtYXhfbWlub3JfdmVyc2lvbj0ke21heF92ZXJzaW9uIyoufQotICAgIG1heF9taW5vcl92ZXJz
aW9uPSR7bWF4X21pbm9yX3ZlcnNpb24lJS4qfQotICBmaQotICBpZiB0ZXN0ICIke21heF92ZXJz
aW9uIyouKi59IiAhPSAiJHttYXhfdmVyc2lvbn0iOyB0aGVuCi0gICAgbWF4X3BvaW50X3ZlcnNp
b249JHttYXhfdmVyc2lvbiMqLioufQotICAgIG1heF9wb2ludF92ZXJzaW9uPSR7bWF4X3BvaW50
X3ZlcnNpb24lJS4qfQotICBmaQotCi0gIHRlc3QgJCgoJG1ham9yX3ZlcnNpb24pKSAtbHQgJCgo
JG1pbl9tYWpvcl92ZXJzaW9uKSkgJiYgZXhpdCAxCi0gIGlmIHRlc3QgJCgoJG1ham9yX3ZlcnNp
b24pKSAtZXEgJCgoJG1pbl9tYWpvcl92ZXJzaW9uKSk7IHRoZW4KLSAgICB0ZXN0ICQoKCRtaW5v
cl92ZXJzaW9uKSkgLWx0ICQoKCRtaW5fbWlub3JfdmVyc2lvbikpICYmIGV4aXQgMQotICAgIGlm
IHRlc3QgJCgoJG1pbm9yX3ZlcnNpb24pKSAtZXEgJCgoJG1pbl9taW5vcl92ZXJzaW9uKSk7IHRo
ZW4KLSAgICAgIHRlc3QgJCgoJHBvaW50X3ZlcnNpb24pKSAtbHQgJCgoJG1pbl9wb2ludF92ZXJz
aW9uKSkgJiYgZXhpdCAxCi0gICAgZmkKLSAgZmkKLQotICB0ZXN0ICQoKCRtYWpvcl92ZXJzaW9u
KSkgLWd0ICQoKCRtYXhfbWFqb3JfdmVyc2lvbikpICYmIGV4aXQgMQotICBpZiB0ZXN0ICQoKCRt
YWpvcl92ZXJzaW9uKSkgLWVxICQoKCRtYXhfbWFqb3JfdmVyc2lvbikpOyB0aGVuCi0gICAgdGVz
dCAkKCgkbWlub3JfdmVyc2lvbikpIC1ndCAkKCgkbWF4X21pbm9yX3ZlcnNpb24pKSAmJiBleGl0
IDEKLSAgICBpZiB0ZXN0ICQoKCRtaW5vcl92ZXJzaW9uKSkgLWVxICQoKCRtYXhfbWlub3JfdmVy
c2lvbikpOyB0aGVuCi0gICAgICB0ZXN0ICQoKCRwb2ludF92ZXJzaW9uKSkgLWd0ICQoKCRtYXhf
cG9pbnRfdmVyc2lvbikpICYmIGV4aXQgMQotICAgIGZpCi0gIGZpCi0KLSAgZXhpdCAwCi19Ci0K
LSMgU2hvdyB0aGUgdXNhZ2UgbGluZSB3aGVuIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLgot
aWYgdGVzdCAkIyAtZXEgMDsgdGhlbgotICBzaG93X3VzYWdlCi0gIGV4aXQgMQotZmkKLQotd2hp
bGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgY2FzZSAkMSBpbgotICAgIC0tdXNhZ2UpICAgICAgICAg
IHNob3dfdXNhZ2U7ICAgICAgICAgZXhpdCAwOzsKLSAgICAtLWhlbHApICAgICAgICAgICBzaG93
X2hlbHA7ICAgICAgICAgIGV4aXQgMDs7Ci0KLSAgICAjIEluc3RhbGxhdGlvbiBvdmVycmlkZXMK
LSAgICAtLXByZWZpeD0qKSAgICAgICBHVEVTVF9QUkVGSVg9JHsxIy0tcHJlZml4PX07OwotICAg
IC0tZXhlYy1wcmVmaXg9KikgIEdURVNUX0VYRUNfUFJFRklYPSR7MSMtLWV4ZWMtcHJlZml4PX07
OwotICAgIC0tbGliZGlyPSopICAgICAgIEdURVNUX0xJQkRJUj0kezEjLS1saWJkaXI9fTs7Ci0g
ICAgLS1pbmNsdWRlZGlyPSopICAgR1RFU1RfSU5DTFVERURJUj0kezEjLS1pbmNsdWRlZGlyPX07
OwotCi0gICAgIyBJbnN0YWxsYXRpb24gcXVlcmllcwotICAgIC0tcHJlZml4fC0tZXhlYy1wcmVm
aXh8LS1saWJkaXJ8LS1pbmNsdWRlZGlyfC0tdmVyc2lvbikKLSAgICAgIGlmIHRlc3QgLW4gIiR7
ZG9fcXVlcnl9IjsgdGhlbgotICAgICAgICBzaG93X3VzYWdlCi0gICAgICAgIGV4aXQgMQotICAg
ICAgZmkKLSAgICAgIGRvX3F1ZXJ5PSR7MSMtLX0KLSAgICAgIDs7Ci0KLSAgICAjIFZlcnNpb24g
Y2hlY2tpbmcKLSAgICAtLW1pbi12ZXJzaW9uPSopCi0gICAgICBkb19jaGVja192ZXJzaW9ucz15
ZXMKLSAgICAgIG1pbl92ZXJzaW9uPSR7MSMtLW1pbi12ZXJzaW9uPX0KLSAgICAgIDs7Ci0gICAg
LS1tYXgtdmVyc2lvbj0qKQotICAgICAgZG9fY2hlY2tfdmVyc2lvbnM9eWVzCi0gICAgICBtYXhf
dmVyc2lvbj0kezEjLS1tYXgtdmVyc2lvbj19Ci0gICAgICA7OwotICAgIC0tZXhhY3QtdmVyc2lv
bj0qKQotICAgICAgZG9fY2hlY2tfdmVyc2lvbnM9eWVzCi0gICAgICBleGFjdF92ZXJzaW9uPSR7
MSMtLWV4YWN0LXZlcnNpb249fQotICAgICAgOzsKLQotICAgICMgQ29tcGlsZXIgZmxhZyBvdXRw
dXQKLSAgICAtLWNwcGZsYWdzKSAgICAgICBlY2hvX2NwcGZsYWdzPXllczs7Ci0gICAgLS1jeHhm
bGFncykgICAgICAgZWNob19jeHhmbGFncz15ZXM7OwotICAgIC0tbGRmbGFncykgICAgICAgIGVj
aG9fbGRmbGFncz15ZXM7OwotICAgIC0tbGlicykgICAgICAgICAgIGVjaG9fbGlicz15ZXM7Owot
Ci0gICAgIyBFdmVyeXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKLSAgICAqKSAgICAgICAgICAgICAg
ICBzaG93X3VzYWdlOyAgICAgICAgIGV4aXQgMTs7Ci0gIGVzYWMKLSAgc2hpZnQKLWRvbmUKLQot
IyBUaGVzZSBoYXZlIGRlZmF1bHRzIGZpbGxlZCBpbiBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBi
dXQgY2FuIGFsc28gYmUKLSMgb3ZlcnJpZGRlbiBieSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Ig
Y29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCi1wcmVmaXg9IiR7R1RFU1RfUFJFRklYOi1AcHJlZml4
QH0iCi1leGVjX3ByZWZpeD0iJHtHVEVTVF9FWEVDX1BSRUZJWDotQGV4ZWNfcHJlZml4QH0iCi1s
aWJkaXI9IiR7R1RFU1RfTElCRElSOi1AbGliZGlyQH0iCi1pbmNsdWRlZGlyPSIke0dURVNUX0lO
Q0xVREVESVI6LUBpbmNsdWRlZGlyQH0iCi0KLSMgV2UgdHJ5IGFuZCBkZXRlY3QgaWYgb3VyIGJp
bmFyeSBpcyBub3QgbG9jYXRlZCBhdCBpdHMgaW5zdGFsbGVkIGxvY2F0aW9uLiBJZgotIyBpdCdz
IG5vdCwgd2UgcHJvdmlkZSB2YXJpYWJsZXMgcG9pbnRpbmcgdG8gdGhlIHNvdXJjZSBhbmQgYnVp
bGQgdHJlZSByYXRoZXIKLSMgdGhhbiB0byB0aGUgaW5zdGFsbCB0cmVlLiBUaGlzIGFsbG93cyBi
dWlsZGluZyBhZ2FpbnN0IGEganVzdC1idWlsdCBndGVzdAotIyByYXRoZXIgdGhhbiBhbiBpbnN0
YWxsZWQgZ3Rlc3QuCi1iaW5kaXI9IkBiaW5kaXJAIgotdGhpc19yZWxhdGl2ZV9iaW5kaXI9YGRp
cm5hbWUgJDBgCi10aGlzX2JpbmRpcj1gY2QgJHt0aGlzX3JlbGF0aXZlX2JpbmRpcn07IHB3ZCAt
UGAKLWlmIHRlc3QgIiR7dGhpc19iaW5kaXJ9IiA9ICIke3RoaXNfYmluZGlyJSR7YmluZGlyfX0i
OyB0aGVuCi0gICMgVGhlIHBhdGggdG8gdGhlIHNjcmlwdCBkb2Vzbid0IGVuZCBpbiB0aGUgYmlu
ZGlyIHNlcXVlbmNlIGZyb20gQXV0b2NvbmYsCi0gICMgYXNzdW1lIHRoYXQgd2UgYXJlIGluIGEg
YnVpbGQgdHJlZS4KLSAgYnVpbGRfZGlyPWBkaXJuYW1lICR7dGhpc19iaW5kaXJ9YAotICBzcmNf
ZGlyPWBjZCAke3RoaXNfYmluZGlyfTsgY2QgQHRvcF9zcmNkaXJAOyBwd2QgLVBgCi0KLSAgIyBU
T0RPKGNoYW5kbGVyY0Bnb29nbGUuY29tKTogVGhpcyBpcyBhIGRhbmdlcm91cyBkZXBlbmRlbmN5
IG9uIGxpYnRvb2wsIHdlCi0gICMgc2hvdWxkIHdvcmsgdG8gcmVtb3ZlIGl0LCBhbmQvb3IgcmVt
b3ZlIGxpYnRvb2wgYWx0b2dldGhlciwgcmVwbGFjaW5nIGl0Ci0gICMgd2l0aCBkaXJlY3QgcmVm
ZXJlbmNlcyB0byB0aGUgbGlicmFyeSBhbmQgYSBsaW5rIHBhdGguCi0gIGd0ZXN0X2xpYnM9IiR7
YnVpbGRfZGlyfS9saWIvbGliZ3Rlc3QubGEgQFBUSFJFQURfQ0ZMQUdTQCBAUFRIUkVBRF9MSUJT
QCIKLSAgZ3Rlc3RfbGRmbGFncz0iIgotCi0gICMgV2UgcHJvdmlkZSBob29rcyB0byBpbmNsdWRl
IGZyb20gZWl0aGVyIHRoZSBzb3VyY2Ugb3IgYnVpbGQgZGlyLCB3aGVyZSB0aGUKLSAgIyBidWls
ZCBkaXIgaXMgYWx3YXlzIHByZWZlcnJlZC4gVGhpcyB3aWxsIHBvdGVudGlhbGx5IGFsbG93IHVz
IHRvIHdyaXRlCi0gICMgYnVpbGQgcnVsZXMgZm9yIGdlbmVyYXRlZCBoZWFkZXJzIGFuZCBoYXZl
IHRoZW0gYXV0b21hdGljYWxseSBiZSBwcmVmZXJyZWQKLSAgIyBvdmVyIHByb3ZpZGVkIHZlcnNp
b25zLgotICBndGVzdF9jcHBmbGFncz0iLUkke2J1aWxkX2Rpcn0vaW5jbHVkZSAtSSR7c3JjX2Rp
cn0vaW5jbHVkZSIKLSAgZ3Rlc3RfY3h4ZmxhZ3M9IkBQVEhSRUFEX0NGTEFHU0AiCi1lbHNlCi0g
ICMgV2UncmUgdXNpbmcgYW4gaW5zdGFsbGVkIGd0ZXN0LCBhbHRob3VnaCBpdCBtYXkgYmUgc3Rh
Z2VkIHVuZGVyIHNvbWUKLSAgIyBwcmVmaXguIEFzc3VtZSAoYXMgb3VyIG93biBsaWJyYXJpZXMg
ZG8pIHRoYXQgd2UgY2FuIHJlc29sdmUgdGhlIHByZWZpeCwKLSAgIyBhbmQgYXJlIHByZXNlbnQg
aW4gdGhlIGR5bmFtaWMgbGluayBwYXRocy4KLSAgZ3Rlc3RfbGRmbGFncz0iLUwke2xpYmRpcn0i
Ci0gIGd0ZXN0X2xpYnM9Ii1sJHtuYW1lfSBAUFRIUkVBRF9DRkxBR1NAIEBQVEhSRUFEX0xJQlNA
IgotICBndGVzdF9jcHBmbGFncz0iLUkke2luY2x1ZGVkaXJ9IgotICBndGVzdF9jeHhmbGFncz0i
QFBUSFJFQURfQ0ZMQUdTQCIKLWZpCi0KLSMgRG8gYW4gaW5zdGFsbGF0aW9uIHF1ZXJ5IGlmIHJl
cXVlc3RlZC4KLWlmIHRlc3QgLW4gIiRkb19xdWVyeSI7IHRoZW4KLSAgY2FzZSAkZG9fcXVlcnkg
aW4KLSAgICBwcmVmaXgpICAgICAgICAgICBlY2hvICRwcmVmaXg7ICAgICAgIGV4aXQgMDs7Ci0g
ICAgZXhlYy1wcmVmaXgpICAgICAgZWNobyAkZXhlY19wcmVmaXg7ICBleGl0IDA7OwotICAgIGxp
YmRpcikgICAgICAgICAgIGVjaG8gJGxpYmRpcjsgICAgICAgZXhpdCAwOzsKLSAgICBpbmNsdWRl
ZGlyKSAgICAgICBlY2hvICRpbmNsdWRlZGlyOyAgIGV4aXQgMDs7Ci0gICAgdmVyc2lvbikgICAg
ICAgICAgZWNobyAkdmVyc2lvbjsgICAgICBleGl0IDA7OwotICAgICopICAgICAgICAgICAgICAg
IHNob3dfdXNhZ2U7ICAgICAgICAgZXhpdCAxOzsKLSAgZXNhYwotZmkKLQotIyBEbyBhIHZlcnNp
b24gY2hlY2sgaWYgcmVxdWVzdGVkLgotaWYgdGVzdCAiJGRvX2NoZWNrX3ZlcnNpb25zIiA9ICJ5
ZXMiOyB0aGVuCi0gICMgTWFrZSBzdXJlIHdlIGRpZG4ndCByZWNlaXZlIGEgYmFkIGNvbWJpbmF0
aW9uIG9mIHBhcmFtZXRlcnMuCi0gIHRlc3QgIiRlY2hvX2NwcGZsYWdzIiA9ICJ5ZXMiICYmIHNo
b3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3QgIiRlY2hvX2N4eGZsYWdzIiA9ICJ5ZXMiICYmIHNo
b3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3QgIiRlY2hvX2xkZmxhZ3MiID0gInllcyIgICYmIHNo
b3dfdXNhZ2UgJiYgZXhpdCAxCi0gIHRlc3QgIiRlY2hvX2xpYnMiID0gInllcyIgICAgICYmIHNo
b3dfdXNhZ2UgJiYgZXhpdCAxCi0KLSAgaWYgdGVzdCAiJGV4YWN0X3ZlcnNpb24iICE9ICIiOyB0
aGVuCi0gICAgY2hlY2tfdmVyc2lvbnMgJGV4YWN0X3ZlcnNpb24gJGV4YWN0X3ZlcnNpb24KLSAg
ICAjIHVucmVhY2hhYmxlCi0gIGVsc2UKLSAgICBjaGVja192ZXJzaW9ucyAke21pbl92ZXJzaW9u
Oi0wLjAuMH0gJHttYXhfdmVyc2lvbjotOTk5OS45OTk5Ljk5OTl9Ci0gICAgIyB1bnJlYWNoYWJs
ZQotICBmaQotZmkKLQotIyBEbyB0aGUgb3V0cHV0IGluIHRoZSBjb3JyZWN0IG9yZGVyIHNvIHRo
YXQgdGhlc2UgY2FuIGJlIHVzZWQgaW4tbGluZSBvZgotIyBhIGNvbXBpbGVyIGludm9jYXRpb24u
Ci1vdXRwdXQ9IiIKLXRlc3QgIiRlY2hvX2NwcGZsYWdzIiA9ICJ5ZXMiICYmIG91dHB1dD0iJG91
dHB1dCAkZ3Rlc3RfY3BwZmxhZ3MiCi10ZXN0ICIkZWNob19jeHhmbGFncyIgPSAieWVzIiAmJiBv
dXRwdXQ9IiRvdXRwdXQgJGd0ZXN0X2N4eGZsYWdzIgotdGVzdCAiJGVjaG9fbGRmbGFncyIgPSAi
eWVzIiAgJiYgb3V0cHV0PSIkb3V0cHV0ICRndGVzdF9sZGZsYWdzIgotdGVzdCAiJGVjaG9fbGli
cyIgPSAieWVzIiAgICAgJiYgb3V0cHV0PSIkb3V0cHV0ICRndGVzdF9saWJzIgotZWNobyAkb3V0
cHV0Ci0KLWV4aXQgMApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9wdW1wLnB5IGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3Qvc2NyaXB0cy9wdW1wLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCA1ZWZiNjUzYzIwN2QuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3B1
bXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NTUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIicHVtcCB2MC4yLjAgLSBQcmV0dHkgVXNlZnVs
IGZvciBNZXRhIFByb2dyYW1taW5nLgotCi1BIHRvb2wgZm9yIHByZXByb2Nlc3NvciBtZXRhIHBy
b2dyYW1taW5nLiAgVXNlZnVsIGZvciBnZW5lcmF0aW5nCi1yZXBldGl0aXZlIGJvaWxlcnBsYXRl
IGNvZGUuICBFc3BlY2lhbGx5IHVzZWZ1bCBmb3Igd3JpdGluZyBDKysKLWNsYXNzZXMsIGZ1bmN0
aW9ucywgbWFjcm9zLCBhbmQgdGVtcGxhdGVzIHRoYXQgbmVlZCB0byB3b3JrIHdpdGgKLXZhcmlv
dXMgbnVtYmVyIG9mIGFyZ3VtZW50cy4KLQotVVNBR0U6Ci0gICAgICAgcHVtcC5weSBTT1VSQ0Vf
RklMRQotCi1FWEFNUExFUzoKLSAgICAgICBwdW1wLnB5IGZvby5jYy5wdW1wCi0gICAgICAgICBD
b252ZXJ0cyBmb28uY2MucHVtcCB0byBmb28uY2MuCi0KLUdSQU1NQVI6Ci0gICAgICAgQ09ERSA6
Oj0gQVRPTUlDX0NPREUqCi0gICAgICAgQVRPTUlDX0NPREUgOjo9ICR2YXIgSUQgPSBFWFBSRVNT
SU9OCi0gICAgICAgICAgIHwgJHZhciBJRCA9IFtbIENPREUgXV0KLSAgICAgICAgICAgfCAkcmFu
Z2UgSUQgRVhQUkVTU0lPTi4uRVhQUkVTU0lPTgotICAgICAgICAgICB8ICRmb3IgSUQgU0VQQVJB
VE9SIFtbIENPREUgXV0KLSAgICAgICAgICAgfCAkKCQpCi0gICAgICAgICAgIHwgJElECi0gICAg
ICAgICAgIHwgJChFWFBSRVNTSU9OKQotICAgICAgICAgICB8ICRpZiBFWFBSRVNTSU9OIFtbIENP
REUgXV0gRUxTRV9CUkFOQ0gKLSAgICAgICAgICAgfCBbWyBDT0RFIF1dCi0gICAgICAgICAgIHwg
UkFXX0NPREUKLSAgICAgICBTRVBBUkFUT1IgOjo9IFJBV19DT0RFIHwgRU1QVFkKLSAgICAgICBF
TFNFX0JSQU5DSCA6Oj0gJGVsc2UgW1sgQ09ERSBdXQotICAgICAgICAgICB8ICRlbGlmIEVYUFJF
U1NJT04gW1sgQ09ERSBdXSBFTFNFX0JSQU5DSAotICAgICAgICAgICB8IEVNUFRZCi0gICAgICAg
RVhQUkVTU0lPTiBoYXMgUHl0aG9uIHN5bnRheC4KLSIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBn
b29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0
IHN5cwotCi0KLVRPS0VOX1RBQkxFID0gWwotICAgIChyZS5jb21waWxlKHInXCR2YXJccysnKSwg
JyR2YXInKSwKLSAgICAocmUuY29tcGlsZShyJ1wkZWxpZlxzKycpLCAnJGVsaWYnKSwKLSAgICAo
cmUuY29tcGlsZShyJ1wkZWxzZVxzKycpLCAnJGVsc2UnKSwKLSAgICAocmUuY29tcGlsZShyJ1wk
Zm9yXHMrJyksICckZm9yJyksCi0gICAgKHJlLmNvbXBpbGUocidcJGlmXHMrJyksICckaWYnKSwK
LSAgICAocmUuY29tcGlsZShyJ1wkcmFuZ2VccysnKSwgJyRyYW5nZScpLAotICAgIChyZS5jb21w
aWxlKHInXCRbX0EtWmEtel1cdyonKSwgJyRpZCcpLAotICAgIChyZS5jb21waWxlKHInXCRcKFwk
XCknKSwgJyQoJCknKSwKLSAgICAocmUuY29tcGlsZShyJ1wkJyksICckJyksCi0gICAgKHJlLmNv
bXBpbGUocidcW1xbXG4/JyksICdbWycpLAotICAgIChyZS5jb21waWxlKHInXF1cXVxuPycpLCAn
XV0nKSwKLSAgICBdCi0KLQotY2xhc3MgQ3Vyc29yOgotICAiIiJSZXByZXNlbnRzIGEgcG9zaXRp
b24gKGxpbmUgYW5kIGNvbHVtbikgaW4gYSB0ZXh0IGZpbGUuIiIiCi0KLSAgZGVmIF9faW5pdF9f
KHNlbGYsIGxpbmU9LTEsIGNvbHVtbj0tMSk6Ci0gICAgc2VsZi5saW5lID0gbGluZQotICAgIHNl
bGYuY29sdW1uID0gY29sdW1uCi0KLSAgZGVmIF9fZXFfXyhzZWxmLCByaHMpOgotICAgIHJldHVy
biBzZWxmLmxpbmUgPT0gcmhzLmxpbmUgYW5kIHNlbGYuY29sdW1uID09IHJocy5jb2x1bW4KLQot
ICBkZWYgX19uZV9fKHNlbGYsIHJocyk6Ci0gICAgcmV0dXJuIG5vdCBzZWxmID09IHJocwotCi0g
IGRlZiBfX2x0X18oc2VsZiwgcmhzKToKLSAgICByZXR1cm4gc2VsZi5saW5lIDwgcmhzLmxpbmUg
b3IgKAotICAgICAgICBzZWxmLmxpbmUgPT0gcmhzLmxpbmUgYW5kIHNlbGYuY29sdW1uIDwgcmhz
LmNvbHVtbikKLQotICBkZWYgX19sZV9fKHNlbGYsIHJocyk6Ci0gICAgcmV0dXJuIHNlbGYgPCBy
aHMgb3Igc2VsZiA9PSByaHMKLQotICBkZWYgX19ndF9fKHNlbGYsIHJocyk6Ci0gICAgcmV0dXJu
IHJocyA8IHNlbGYKLQotICBkZWYgX19nZV9fKHNlbGYsIHJocyk6Ci0gICAgcmV0dXJuIHJocyA8
PSBzZWxmCi0KLSAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgaWYgc2VsZiA9PSBFb2YoKToKLSAg
ICAgIHJldHVybiAnRU9GJwotICAgIGVsc2U6Ci0gICAgICByZXR1cm4gJyVzKCVzKScgJSAoc2Vs
Zi5saW5lICsgMSwgc2VsZi5jb2x1bW4pCi0KLSAgZGVmIF9fYWRkX18oc2VsZiwgb2Zmc2V0KToK
LSAgICByZXR1cm4gQ3Vyc29yKHNlbGYubGluZSwgc2VsZi5jb2x1bW4gKyBvZmZzZXQpCi0KLSAg
ZGVmIF9fc3ViX18oc2VsZiwgb2Zmc2V0KToKLSAgICByZXR1cm4gQ3Vyc29yKHNlbGYubGluZSwg
c2VsZi5jb2x1bW4gLSBvZmZzZXQpCi0KLSAgZGVmIENsb25lKHNlbGYpOgotICAgICIiIlJldHVy
bnMgYSBjb3B5IG9mIHNlbGYuIiIiCi0KLSAgICByZXR1cm4gQ3Vyc29yKHNlbGYubGluZSwgc2Vs
Zi5jb2x1bW4pCi0KLQotIyBTcGVjaWFsIGN1cnNvciB0byBpbmRpY2F0ZSB0aGUgZW5kLW9mLWZp
bGUuCi1kZWYgRW9mKCk6Ci0gICIiIlJldHVybnMgdGhlIHNwZWNpYWwgY3Vyc29yIHRvIGRlbm90
ZSB0aGUgZW5kLW9mLWZpbGUuIiIiCi0gIHJldHVybiBDdXJzb3IoLTEsIC0xKQotCi0KLWNsYXNz
IFRva2VuOgotICAiIiJSZXByZXNlbnRzIGEgdG9rZW4gaW4gYSBQdW1wIHNvdXJjZSBmaWxlLiIi
IgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBzdGFydD1Ob25lLCBlbmQ9Tm9uZSwgdmFsdWU9Tm9u
ZSwgdG9rZW5fdHlwZT1Ob25lKToKLSAgICBpZiBzdGFydCBpcyBOb25lOgotICAgICAgc2VsZi5z
dGFydCA9IEVvZigpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuc3RhcnQgPSBzdGFydAotICAgIGlm
IGVuZCBpcyBOb25lOgotICAgICAgc2VsZi5lbmQgPSBFb2YoKQotICAgIGVsc2U6Ci0gICAgICBz
ZWxmLmVuZCA9IGVuZAotICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgIHNlbGYudG9rZW5fdHlw
ZSA9IHRva2VuX3R5cGUKLQotICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICByZXR1cm4gJ1Rva2Vu
IEAlczogXCclc1wnIHR5cGU9JXMnICUgKAotICAgICAgICBzZWxmLnN0YXJ0LCBzZWxmLnZhbHVl
LCBzZWxmLnRva2VuX3R5cGUpCi0KLSAgZGVmIENsb25lKHNlbGYpOgotICAgICIiIlJldHVybnMg
YSBjb3B5IG9mIHNlbGYuIiIiCi0KLSAgICByZXR1cm4gVG9rZW4oc2VsZi5zdGFydC5DbG9uZSgp
LCBzZWxmLmVuZC5DbG9uZSgpLCBzZWxmLnZhbHVlLAotICAgICAgICAgICAgICAgICBzZWxmLnRv
a2VuX3R5cGUpCi0KLQotZGVmIFN0YXJ0c1dpdGgobGluZXMsIHBvcywgc3RyaW5nKToKLSAgIiIi
UmV0dXJucyBUcnVlIGlmZiB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gbGluZXMgc3RhcnRzIHdpdGgg
J3N0cmluZycuIiIiCi0KLSAgcmV0dXJuIGxpbmVzW3Bvcy5saW5lXVtwb3MuY29sdW1uOl0uc3Rh
cnRzd2l0aChzdHJpbmcpCi0KLQotZGVmIEZpbmRGaXJzdEluTGluZShsaW5lLCB0b2tlbl90YWJs
ZSk6Ci0gIGJlc3RfbWF0Y2hfc3RhcnQgPSAtMQotICBmb3IgKHJlZ2V4LCB0b2tlbl90eXBlKSBp
biB0b2tlbl90YWJsZToKLSAgICBtID0gcmVnZXguc2VhcmNoKGxpbmUpCi0gICAgaWYgbToKLSAg
ICAgICMgV2UgZm91bmQgcmVnZXggaW4gbGluZXMKLSAgICAgIGlmIGJlc3RfbWF0Y2hfc3RhcnQg
PCAwIG9yIG0uc3RhcnQoKSA8IGJlc3RfbWF0Y2hfc3RhcnQ6Ci0gICAgICAgIGJlc3RfbWF0Y2hf
c3RhcnQgPSBtLnN0YXJ0KCkKLSAgICAgICAgYmVzdF9tYXRjaF9sZW5ndGggPSBtLmVuZCgpIC0g
bS5zdGFydCgpCi0gICAgICAgIGJlc3RfbWF0Y2hfdG9rZW5fdHlwZSA9IHRva2VuX3R5cGUKLQot
ICBpZiBiZXN0X21hdGNoX3N0YXJ0IDwgMDoKLSAgICByZXR1cm4gTm9uZQotCi0gIHJldHVybiAo
YmVzdF9tYXRjaF9zdGFydCwgYmVzdF9tYXRjaF9sZW5ndGgsIGJlc3RfbWF0Y2hfdG9rZW5fdHlw
ZSkKLQotCi1kZWYgRmluZEZpcnN0KGxpbmVzLCB0b2tlbl90YWJsZSwgY3Vyc29yKToKLSAgIiIi
RmluZHMgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW55IHN0cmluZyBpbiBzdHJpbmdzIGluIGxp
bmVzLiIiIgotCi0gIHN0YXJ0ID0gY3Vyc29yLkNsb25lKCkKLSAgY3VyX2xpbmVfbnVtYmVyID0g
Y3Vyc29yLmxpbmUKLSAgZm9yIGxpbmUgaW4gbGluZXNbc3RhcnQubGluZTpdOgotICAgIGlmIGN1
cl9saW5lX251bWJlciA9PSBzdGFydC5saW5lOgotICAgICAgbGluZSA9IGxpbmVbc3RhcnQuY29s
dW1uOl0KLSAgICBtID0gRmluZEZpcnN0SW5MaW5lKGxpbmUsIHRva2VuX3RhYmxlKQotICAgIGlm
IG06Ci0gICAgICAjIFdlIGZvdW5kIGEgcmVnZXggaW4gbGluZS4KLSAgICAgIChzdGFydF9jb2x1
bW4sIGxlbmd0aCwgdG9rZW5fdHlwZSkgPSBtCi0gICAgICBpZiBjdXJfbGluZV9udW1iZXIgPT0g
c3RhcnQubGluZToKLSAgICAgICAgc3RhcnRfY29sdW1uICs9IHN0YXJ0LmNvbHVtbgotICAgICAg
Zm91bmRfc3RhcnQgPSBDdXJzb3IoY3VyX2xpbmVfbnVtYmVyLCBzdGFydF9jb2x1bW4pCi0gICAg
ICBmb3VuZF9lbmQgPSBmb3VuZF9zdGFydCArIGxlbmd0aAotICAgICAgcmV0dXJuIE1ha2VUb2tl
bihsaW5lcywgZm91bmRfc3RhcnQsIGZvdW5kX2VuZCwgdG9rZW5fdHlwZSkKLSAgICBjdXJfbGlu
ZV9udW1iZXIgKz0gMQotICAjIFdlIGZhaWxlZCB0byBmaW5kIHN0ciBpbiBsaW5lcwotICByZXR1
cm4gTm9uZQotCi0KLWRlZiBTdWJTdHJpbmcobGluZXMsIHN0YXJ0LCBlbmQpOgotICAiIiJSZXR1
cm5zIGEgc3Vic3RyaW5nIGluIGxpbmVzLiIiIgotCi0gIGlmIGVuZCA9PSBFb2YoKToKLSAgICBl
bmQgPSBDdXJzb3IobGVuKGxpbmVzKSAtIDEsIGxlbihsaW5lc1stMV0pKQotCi0gIGlmIHN0YXJ0
ID49IGVuZDoKLSAgICByZXR1cm4gJycKLQotICBpZiBzdGFydC5saW5lID09IGVuZC5saW5lOgot
ICAgIHJldHVybiBsaW5lc1tzdGFydC5saW5lXVtzdGFydC5jb2x1bW46ZW5kLmNvbHVtbl0KLQot
ICByZXN1bHRfbGluZXMgPSAoW2xpbmVzW3N0YXJ0LmxpbmVdW3N0YXJ0LmNvbHVtbjpdXSArCi0g
ICAgICAgICAgICAgICAgICBsaW5lc1tzdGFydC5saW5lICsgMTplbmQubGluZV0gKwotICAgICAg
ICAgICAgICAgICAgW2xpbmVzW2VuZC5saW5lXVs6ZW5kLmNvbHVtbl1dKQotICByZXR1cm4gJycu
am9pbihyZXN1bHRfbGluZXMpCi0KLQotZGVmIFN0cmlwTWV0YUNvbW1lbnRzKHN0cik6Ci0gICIi
IlN0cmlwIG1ldGEgY29tbWVudHMgZnJvbSBlYWNoIGxpbmUgaW4gdGhlIGdpdmVuIHN0cmluZy4i
IiIKLQotICAjIEZpcnN0LCBjb21wbGV0ZWx5IHJlbW92ZSBsaW5lcyBjb250YWluaW5nIG5vdGhp
bmcgYnV0IGEgbWV0YQotICAjIGNvbW1lbnQsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgXG4uCi0g
IHN0ciA9IHJlLnN1YihyJ15ccypcJFwkLipcbicsICcnLCBzdHIpCi0KLSAgIyBUaGVuLCByZW1v
dmUgbWV0YSBjb21tZW50cyBmcm9tIGNvbnRlbnRmdWwgbGluZXMuCi0gIHJldHVybiByZS5zdWIo
cidccypcJFwkLionLCAnJywgc3RyKQotCi0KLWRlZiBNYWtlVG9rZW4obGluZXMsIHN0YXJ0LCBl
bmQsIHRva2VuX3R5cGUpOgotICAiIiJDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFRva2VuLiIi
IgotCi0gIHJldHVybiBUb2tlbihzdGFydCwgZW5kLCBTdWJTdHJpbmcobGluZXMsIHN0YXJ0LCBl
bmQpLCB0b2tlbl90eXBlKQotCi0KLWRlZiBQYXJzZVRva2VuKGxpbmVzLCBwb3MsIHJlZ2V4LCB0
b2tlbl90eXBlKToKLSAgbGluZSA9IGxpbmVzW3Bvcy5saW5lXVtwb3MuY29sdW1uOl0KLSAgbSA9
IHJlZ2V4LnNlYXJjaChsaW5lKQotICBpZiBtIGFuZCBub3QgbS5zdGFydCgpOgotICAgIHJldHVy
biBNYWtlVG9rZW4obGluZXMsIHBvcywgcG9zICsgbS5lbmQoKSwgdG9rZW5fdHlwZSkKLSAgZWxz
ZToKLSAgICBwcmludCAnRVJST1I6ICVzIGV4cGVjdGVkIGF0ICVzLicgJSAodG9rZW5fdHlwZSwg
cG9zKQotICAgIHN5cy5leGl0KDEpCi0KLQotSURfUkVHRVggPSByZS5jb21waWxlKHInW19BLVph
LXpdXHcqJykKLUVRX1JFR0VYID0gcmUuY29tcGlsZShyJz0nKQotUkVTVF9PRl9MSU5FX1JFR0VY
ID0gcmUuY29tcGlsZShyJy4qPyg/PSR8XCRcJCknKQotT1BUSU9OQUxfV0hJVEVfU1BBQ0VTX1JF
R0VYID0gcmUuY29tcGlsZShyJ1xzKicpCi1XSElURV9TUEFDRV9SRUdFWCA9IHJlLmNvbXBpbGUo
cidccycpCi1ET1RfRE9UX1JFR0VYID0gcmUuY29tcGlsZShyJ1wuXC4nKQotCi0KLWRlZiBTa2lw
KGxpbmVzLCBwb3MsIHJlZ2V4KToKLSAgbGluZSA9IGxpbmVzW3Bvcy5saW5lXVtwb3MuY29sdW1u
Ol0KLSAgbSA9IHJlLnNlYXJjaChyZWdleCwgbGluZSkKLSAgaWYgbSBhbmQgbm90IG0uc3RhcnQo
KToKLSAgICByZXR1cm4gcG9zICsgbS5lbmQoKQotICBlbHNlOgotICAgIHJldHVybiBwb3MKLQot
Ci1kZWYgU2tpcFVudGlsKGxpbmVzLCBwb3MsIHJlZ2V4LCB0b2tlbl90eXBlKToKLSAgbGluZSA9
IGxpbmVzW3Bvcy5saW5lXVtwb3MuY29sdW1uOl0KLSAgbSA9IHJlLnNlYXJjaChyZWdleCwgbGlu
ZSkKLSAgaWYgbToKLSAgICByZXR1cm4gcG9zICsgbS5zdGFydCgpCi0gIGVsc2U6Ci0gICAgcHJp
bnQgKCdFUlJPUjogJXMgZXhwZWN0ZWQgb24gbGluZSAlcyBhZnRlciBjb2x1bW4gJXMuJyAlCi0g
ICAgICAgICAgICh0b2tlbl90eXBlLCBwb3MubGluZSArIDEsIHBvcy5jb2x1bW4pKQotICAgIHN5
cy5leGl0KDEpCi0KLQotZGVmIFBhcnNlRXhwVG9rZW5JblBhcmVucyhsaW5lcywgcG9zKToKLSAg
ZGVmIFBhcnNlSW5QYXJlbnMocG9zKToKLSAgICBwb3MgPSBTa2lwKGxpbmVzLCBwb3MsIE9QVElP
TkFMX1dISVRFX1NQQUNFU19SRUdFWCkKLSAgICBwb3MgPSBTa2lwKGxpbmVzLCBwb3MsIHInXCgn
KQotICAgIHBvcyA9IFBhcnNlKHBvcykKLSAgICBwb3MgPSBTa2lwKGxpbmVzLCBwb3MsIHInXCkn
KQotICAgIHJldHVybiBwb3MKLQotICBkZWYgUGFyc2UocG9zKToKLSAgICBwb3MgPSBTa2lwVW50
aWwobGluZXMsIHBvcywgcidcKHxcKScsICcpJykKLSAgICBpZiBTdWJTdHJpbmcobGluZXMsIHBv
cywgcG9zICsgMSkgPT0gJygnOgotICAgICAgcG9zID0gUGFyc2UocG9zICsgMSkKLSAgICAgIHBv
cyA9IFNraXAobGluZXMsIHBvcywgcidcKScpCi0gICAgICByZXR1cm4gUGFyc2UocG9zKQotICAg
IGVsc2U6Ci0gICAgICByZXR1cm4gcG9zCi0KLSAgc3RhcnQgPSBwb3MuQ2xvbmUoKQotICBwb3Mg
PSBQYXJzZUluUGFyZW5zKHBvcykKLSAgcmV0dXJuIE1ha2VUb2tlbihsaW5lcywgc3RhcnQsIHBv
cywgJ2V4cCcpCi0KLQotZGVmIFJTdHJpcE5ld0xpbmVGcm9tVG9rZW4odG9rZW4pOgotICBpZiB0
b2tlbi52YWx1ZS5lbmRzd2l0aCgnXG4nKToKLSAgICByZXR1cm4gVG9rZW4odG9rZW4uc3RhcnQs
IHRva2VuLmVuZCwgdG9rZW4udmFsdWVbOi0xXSwgdG9rZW4udG9rZW5fdHlwZSkKLSAgZWxzZToK
LSAgICByZXR1cm4gdG9rZW4KLQotCi1kZWYgVG9rZW5pemVMaW5lcyhsaW5lcywgcG9zKToKLSAg
d2hpbGUgVHJ1ZToKLSAgICBmb3VuZCA9IEZpbmRGaXJzdChsaW5lcywgVE9LRU5fVEFCTEUsIHBv
cykKLSAgICBpZiBub3QgZm91bmQ6Ci0gICAgICB5aWVsZCBNYWtlVG9rZW4obGluZXMsIHBvcywg
RW9mKCksICdjb2RlJykKLSAgICAgIHJldHVybgotCi0gICAgaWYgZm91bmQuc3RhcnQgPT0gcG9z
OgotICAgICAgcHJldl90b2tlbiA9IE5vbmUKLSAgICAgIHByZXZfdG9rZW5fcnN0cmlwcGVkID0g
Tm9uZQotICAgIGVsc2U6Ci0gICAgICBwcmV2X3Rva2VuID0gTWFrZVRva2VuKGxpbmVzLCBwb3Ms
IGZvdW5kLnN0YXJ0LCAnY29kZScpCi0gICAgICBwcmV2X3Rva2VuX3JzdHJpcHBlZCA9IFJTdHJp
cE5ld0xpbmVGcm9tVG9rZW4ocHJldl90b2tlbikKLQotICAgIGlmIGZvdW5kLnRva2VuX3R5cGUg
PT0gJyR2YXInOgotICAgICAgaWYgcHJldl90b2tlbl9yc3RyaXBwZWQ6Ci0gICAgICAgIHlpZWxk
IHByZXZfdG9rZW5fcnN0cmlwcGVkCi0gICAgICB5aWVsZCBmb3VuZAotICAgICAgaWRfdG9rZW4g
PSBQYXJzZVRva2VuKGxpbmVzLCBmb3VuZC5lbmQsIElEX1JFR0VYLCAnaWQnKQotICAgICAgeWll
bGQgaWRfdG9rZW4KLSAgICAgIHBvcyA9IFNraXAobGluZXMsIGlkX3Rva2VuLmVuZCwgT1BUSU9O
QUxfV0hJVEVfU1BBQ0VTX1JFR0VYKQotCi0gICAgICBlcV90b2tlbiA9IFBhcnNlVG9rZW4obGlu
ZXMsIHBvcywgRVFfUkVHRVgsICc9JykKLSAgICAgIHlpZWxkIGVxX3Rva2VuCi0gICAgICBwb3Mg
PSBTa2lwKGxpbmVzLCBlcV90b2tlbi5lbmQsIHInXHMqJykKLQotICAgICAgaWYgU3ViU3RyaW5n
KGxpbmVzLCBwb3MsIHBvcyArIDIpICE9ICdbWyc6Ci0gICAgICAgIGV4cF90b2tlbiA9IFBhcnNl
VG9rZW4obGluZXMsIHBvcywgUkVTVF9PRl9MSU5FX1JFR0VYLCAnZXhwJykKLSAgICAgICAgeWll
bGQgZXhwX3Rva2VuCi0gICAgICAgIHBvcyA9IEN1cnNvcihleHBfdG9rZW4uZW5kLmxpbmUgKyAx
LCAwKQotICAgIGVsaWYgZm91bmQudG9rZW5fdHlwZSA9PSAnJGZvcic6Ci0gICAgICBpZiBwcmV2
X3Rva2VuX3JzdHJpcHBlZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAg
ICAgIHlpZWxkIGZvdW5kCi0gICAgICBpZF90b2tlbiA9IFBhcnNlVG9rZW4obGluZXMsIGZvdW5k
LmVuZCwgSURfUkVHRVgsICdpZCcpCi0gICAgICB5aWVsZCBpZF90b2tlbgotICAgICAgcG9zID0g
U2tpcChsaW5lcywgaWRfdG9rZW4uZW5kLCBXSElURV9TUEFDRV9SRUdFWCkKLSAgICBlbGlmIGZv
dW5kLnRva2VuX3R5cGUgPT0gJyRyYW5nZSc6Ci0gICAgICBpZiBwcmV2X3Rva2VuX3JzdHJpcHBl
ZDoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbl9yc3RyaXBwZWQKLSAgICAgIHlpZWxkIGZvdW5k
Ci0gICAgICBpZF90b2tlbiA9IFBhcnNlVG9rZW4obGluZXMsIGZvdW5kLmVuZCwgSURfUkVHRVgs
ICdpZCcpCi0gICAgICB5aWVsZCBpZF90b2tlbgotICAgICAgcG9zID0gU2tpcChsaW5lcywgaWRf
dG9rZW4uZW5kLCBPUFRJT05BTF9XSElURV9TUEFDRVNfUkVHRVgpCi0KLSAgICAgIGRvdHNfcG9z
ID0gU2tpcFVudGlsKGxpbmVzLCBwb3MsIERPVF9ET1RfUkVHRVgsICcuLicpCi0gICAgICB5aWVs
ZCBNYWtlVG9rZW4obGluZXMsIHBvcywgZG90c19wb3MsICdleHAnKQotICAgICAgeWllbGQgTWFr
ZVRva2VuKGxpbmVzLCBkb3RzX3BvcywgZG90c19wb3MgKyAyLCAnLi4nKQotICAgICAgcG9zID0g
ZG90c19wb3MgKyAyCi0gICAgICBuZXdfcG9zID0gQ3Vyc29yKHBvcy5saW5lICsgMSwgMCkKLSAg
ICAgIHlpZWxkIE1ha2VUb2tlbihsaW5lcywgcG9zLCBuZXdfcG9zLCAnZXhwJykKLSAgICAgIHBv
cyA9IG5ld19wb3MKLSAgICBlbGlmIGZvdW5kLnRva2VuX3R5cGUgPT0gJyQnOgotICAgICAgaWYg
cHJldl90b2tlbjoKLSAgICAgICAgeWllbGQgcHJldl90b2tlbgotICAgICAgeWllbGQgZm91bmQK
LSAgICAgIGV4cF90b2tlbiA9IFBhcnNlRXhwVG9rZW5JblBhcmVucyhsaW5lcywgZm91bmQuZW5k
KQotICAgICAgeWllbGQgZXhwX3Rva2VuCi0gICAgICBwb3MgPSBleHBfdG9rZW4uZW5kCi0gICAg
ZWxpZiAoZm91bmQudG9rZW5fdHlwZSA9PSAnXV0nIG9yIGZvdW5kLnRva2VuX3R5cGUgPT0gJyRp
Zicgb3IKLSAgICAgICAgICBmb3VuZC50b2tlbl90eXBlID09ICckZWxpZicgb3IgZm91bmQudG9r
ZW5fdHlwZSA9PSAnJGVsc2UnKToKLSAgICAgIGlmIHByZXZfdG9rZW5fcnN0cmlwcGVkOgotICAg
ICAgICB5aWVsZCBwcmV2X3Rva2VuX3JzdHJpcHBlZAotICAgICAgeWllbGQgZm91bmQKLSAgICAg
IHBvcyA9IGZvdW5kLmVuZAotICAgIGVsc2U6Ci0gICAgICBpZiBwcmV2X3Rva2VuOgotICAgICAg
ICB5aWVsZCBwcmV2X3Rva2VuCi0gICAgICB5aWVsZCBmb3VuZAotICAgICAgcG9zID0gZm91bmQu
ZW5kCi0KLQotZGVmIFRva2VuaXplKHMpOgotICAiIiJBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB0
aGUgdG9rZW5zIGluIHRoZSBnaXZlbiBzdHJpbmcuIiIiCi0gIGlmIHMgIT0gJyc6Ci0gICAgbGlu
ZXMgPSBzLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICBmb3IgdG9rZW4gaW4gVG9rZW5pemVMaW5lcyhs
aW5lcywgQ3Vyc29yKDAsIDApKToKLSAgICAgIHlpZWxkIHRva2VuCi0KLQotY2xhc3MgQ29kZU5v
ZGU6Ci0gIGRlZiBfX2luaXRfXyhzZWxmLCBhdG9taWNfY29kZV9saXN0PU5vbmUpOgotICAgIHNl
bGYuYXRvbWljX2NvZGUgPSBhdG9taWNfY29kZV9saXN0Ci0KLQotY2xhc3MgVmFyTm9kZToKLSAg
ZGVmIF9faW5pdF9fKHNlbGYsIGlkZW50aWZpZXI9Tm9uZSwgYXRvbWljX2NvZGU9Tm9uZSk6Ci0g
ICAgc2VsZi5pZGVudGlmaWVyID0gaWRlbnRpZmllcgotICAgIHNlbGYuYXRvbWljX2NvZGUgPSBh
dG9taWNfY29kZQotCi0KLWNsYXNzIFJhbmdlTm9kZToKLSAgZGVmIF9faW5pdF9fKHNlbGYsIGlk
ZW50aWZpZXI9Tm9uZSwgZXhwMT1Ob25lLCBleHAyPU5vbmUpOgotICAgIHNlbGYuaWRlbnRpZmll
ciA9IGlkZW50aWZpZXIKLSAgICBzZWxmLmV4cDEgPSBleHAxCi0gICAgc2VsZi5leHAyID0gZXhw
MgotCi0KLWNsYXNzIEZvck5vZGU6Ci0gIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyPU5v
bmUsIHNlcD1Ob25lLCBjb2RlPU5vbmUpOgotICAgIHNlbGYuaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIKLSAgICBzZWxmLnNlcCA9IHNlcAotICAgIHNlbGYuY29kZSA9IGNvZGUKLQotCi1jbGFzcyBF
bHNlTm9kZToKLSAgZGVmIF9faW5pdF9fKHNlbGYsIGVsc2VfYnJhbmNoPU5vbmUpOgotICAgIHNl
bGYuZWxzZV9icmFuY2ggPSBlbHNlX2JyYW5jaAotCi0KLWNsYXNzIElmTm9kZToKLSAgZGVmIF9f
aW5pdF9fKHNlbGYsIGV4cD1Ob25lLCB0aGVuX2JyYW5jaD1Ob25lLCBlbHNlX2JyYW5jaD1Ob25l
KToKLSAgICBzZWxmLmV4cCA9IGV4cAotICAgIHNlbGYudGhlbl9icmFuY2ggPSB0aGVuX2JyYW5j
aAotICAgIHNlbGYuZWxzZV9icmFuY2ggPSBlbHNlX2JyYW5jaAotCi0KLWNsYXNzIFJhd0NvZGVO
b2RlOgotICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW49Tm9uZSk6Ci0gICAgc2VsZi5yYXdfY29k
ZSA9IHRva2VuCi0KLQotY2xhc3MgTGl0ZXJhbERvbGxhck5vZGU6Ci0gIGRlZiBfX2luaXRfXyhz
ZWxmLCB0b2tlbik6Ci0gICAgc2VsZi50b2tlbiA9IHRva2VuCi0KLQotY2xhc3MgRXhwTm9kZToK
LSAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuLCBweXRob25fZXhwKToKLSAgICBzZWxmLnRva2Vu
ID0gdG9rZW4KLSAgICBzZWxmLnB5dGhvbl9leHAgPSBweXRob25fZXhwCi0KLQotZGVmIFBvcEZy
b250KGFfbGlzdCk6Ci0gIGhlYWQgPSBhX2xpc3RbMF0KLSAgYV9saXN0WzoxXSA9IFtdCi0gIHJl
dHVybiBoZWFkCi0KLQotZGVmIFB1c2hGcm9udChhX2xpc3QsIGVsZW0pOgotICBhX2xpc3RbOjBd
ID0gW2VsZW1dCi0KLQotZGVmIFBvcFRva2VuKGFfbGlzdCwgdG9rZW5fdHlwZT1Ob25lKToKLSAg
dG9rZW4gPSBQb3BGcm9udChhX2xpc3QpCi0gIGlmIHRva2VuX3R5cGUgaXMgbm90IE5vbmUgYW5k
IHRva2VuLnRva2VuX3R5cGUgIT0gdG9rZW5fdHlwZToKLSAgICBwcmludCAnRVJST1I6ICVzIGV4
cGVjdGVkIGF0ICVzJyAlICh0b2tlbl90eXBlLCB0b2tlbi5zdGFydCkKLSAgICBwcmludCAnRVJS
T1I6ICVzIGZvdW5kIGluc3RlYWQnICUgKHRva2VuLCkKLSAgICBzeXMuZXhpdCgxKQotCi0gIHJl
dHVybiB0b2tlbgotCi0KLWRlZiBQZWVrVG9rZW4oYV9saXN0KToKLSAgaWYgbm90IGFfbGlzdDoK
LSAgICByZXR1cm4gTm9uZQotCi0gIHJldHVybiBhX2xpc3RbMF0KLQotCi1kZWYgUGFyc2VFeHBO
b2RlKHRva2VuKToKLSAgcHl0aG9uX2V4cCA9IHJlLnN1YihyJyhbX0EtWmEtel1cdyopJywgcidz
ZWxmLkdldFZhbHVlKCJcMSIpJywgdG9rZW4udmFsdWUpCi0gIHJldHVybiBFeHBOb2RlKHRva2Vu
LCBweXRob25fZXhwKQotCi0KLWRlZiBQYXJzZUVsc2VOb2RlKHRva2Vucyk6Ci0gIGRlZiBQb3Ao
dG9rZW5fdHlwZT1Ob25lKToKLSAgICByZXR1cm4gUG9wVG9rZW4odG9rZW5zLCB0b2tlbl90eXBl
KQotCi0gIG5leHQgPSBQZWVrVG9rZW4odG9rZW5zKQotICBpZiBub3QgbmV4dDoKLSAgICByZXR1
cm4gTm9uZQotICBpZiBuZXh0LnRva2VuX3R5cGUgPT0gJyRlbHNlJzoKLSAgICBQb3AoJyRlbHNl
JykKLSAgICBQb3AoJ1tbJykKLSAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykK
LSAgICBQb3AoJ11dJykKLSAgICByZXR1cm4gY29kZV9ub2RlCi0gIGVsaWYgbmV4dC50b2tlbl90
eXBlID09ICckZWxpZic6Ci0gICAgUG9wKCckZWxpZicpCi0gICAgZXhwID0gUG9wKCdjb2RlJykK
LSAgICBQb3AoJ1tbJykKLSAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykKLSAg
ICBQb3AoJ11dJykKLSAgICBpbm5lcl9lbHNlX25vZGUgPSBQYXJzZUVsc2VOb2RlKHRva2VucykK
LSAgICByZXR1cm4gQ29kZU5vZGUoW0lmTm9kZShQYXJzZUV4cE5vZGUoZXhwKSwgY29kZV9ub2Rl
LCBpbm5lcl9lbHNlX25vZGUpXSkKLSAgZWxpZiBub3QgbmV4dC52YWx1ZS5zdHJpcCgpOgotICAg
IFBvcCgnY29kZScpCi0gICAgcmV0dXJuIFBhcnNlRWxzZU5vZGUodG9rZW5zKQotICBlbHNlOgot
ICAgIHJldHVybiBOb25lCi0KLQotZGVmIFBhcnNlQXRvbWljQ29kZU5vZGUodG9rZW5zKToKLSAg
ZGVmIFBvcCh0b2tlbl90eXBlPU5vbmUpOgotICAgIHJldHVybiBQb3BUb2tlbih0b2tlbnMsIHRv
a2VuX3R5cGUpCi0KLSAgaGVhZCA9IFBvcEZyb250KHRva2VucykKLSAgdCA9IGhlYWQudG9rZW5f
dHlwZQotICBpZiB0ID09ICdjb2RlJzoKLSAgICByZXR1cm4gUmF3Q29kZU5vZGUoaGVhZCkKLSAg
ZWxpZiB0ID09ICckdmFyJzoKLSAgICBpZF90b2tlbiA9IFBvcCgnaWQnKQotICAgIFBvcCgnPScp
Ci0gICAgbmV4dCA9IFBlZWtUb2tlbih0b2tlbnMpCi0gICAgaWYgbmV4dC50b2tlbl90eXBlID09
ICdleHAnOgotICAgICAgZXhwX3Rva2VuID0gUG9wKCkKLSAgICAgIHJldHVybiBWYXJOb2RlKGlk
X3Rva2VuLCBQYXJzZUV4cE5vZGUoZXhwX3Rva2VuKSkKLSAgICBQb3AoJ1tbJykKLSAgICBjb2Rl
X25vZGUgPSBQYXJzZUNvZGVOb2RlKHRva2VucykKLSAgICBQb3AoJ11dJykKLSAgICByZXR1cm4g
VmFyTm9kZShpZF90b2tlbiwgY29kZV9ub2RlKQotICBlbGlmIHQgPT0gJyRmb3InOgotICAgIGlk
X3Rva2VuID0gUG9wKCdpZCcpCi0gICAgbmV4dF90b2tlbiA9IFBlZWtUb2tlbih0b2tlbnMpCi0g
ICAgaWYgbmV4dF90b2tlbi50b2tlbl90eXBlID09ICdjb2RlJzoKLSAgICAgIHNlcF90b2tlbiA9
IG5leHRfdG9rZW4KLSAgICAgIFBvcCgnY29kZScpCi0gICAgZWxzZToKLSAgICAgIHNlcF90b2tl
biA9IE5vbmUKLSAgICBQb3AoJ1tbJykKLSAgICBjb2RlX25vZGUgPSBQYXJzZUNvZGVOb2RlKHRv
a2VucykKLSAgICBQb3AoJ11dJykKLSAgICByZXR1cm4gRm9yTm9kZShpZF90b2tlbiwgc2VwX3Rv
a2VuLCBjb2RlX25vZGUpCi0gIGVsaWYgdCA9PSAnJGlmJzoKLSAgICBleHBfdG9rZW4gPSBQb3Ao
J2NvZGUnKQotICAgIFBvcCgnW1snKQotICAgIGNvZGVfbm9kZSA9IFBhcnNlQ29kZU5vZGUodG9r
ZW5zKQotICAgIFBvcCgnXV0nKQotICAgIGVsc2Vfbm9kZSA9IFBhcnNlRWxzZU5vZGUodG9rZW5z
KQotICAgIHJldHVybiBJZk5vZGUoUGFyc2VFeHBOb2RlKGV4cF90b2tlbiksIGNvZGVfbm9kZSwg
ZWxzZV9ub2RlKQotICBlbGlmIHQgPT0gJyRyYW5nZSc6Ci0gICAgaWRfdG9rZW4gPSBQb3AoJ2lk
JykKLSAgICBleHAxX3Rva2VuID0gUG9wKCdleHAnKQotICAgIFBvcCgnLi4nKQotICAgIGV4cDJf
dG9rZW4gPSBQb3AoJ2V4cCcpCi0gICAgcmV0dXJuIFJhbmdlTm9kZShpZF90b2tlbiwgUGFyc2VF
eHBOb2RlKGV4cDFfdG9rZW4pLAotICAgICAgICAgICAgICAgICAgICAgUGFyc2VFeHBOb2RlKGV4
cDJfdG9rZW4pKQotICBlbGlmIHQgPT0gJyRpZCc6Ci0gICAgcmV0dXJuIFBhcnNlRXhwTm9kZShU
b2tlbihoZWFkLnN0YXJ0ICsgMSwgaGVhZC5lbmQsIGhlYWQudmFsdWVbMTpdLCAnaWQnKSkKLSAg
ZWxpZiB0ID09ICckKCQpJzoKLSAgICByZXR1cm4gTGl0ZXJhbERvbGxhck5vZGUoaGVhZCkKLSAg
ZWxpZiB0ID09ICckJzoKLSAgICBleHBfdG9rZW4gPSBQb3AoJ2V4cCcpCi0gICAgcmV0dXJuIFBh
cnNlRXhwTm9kZShleHBfdG9rZW4pCi0gIGVsaWYgdCA9PSAnW1snOgotICAgIGNvZGVfbm9kZSA9
IFBhcnNlQ29kZU5vZGUodG9rZW5zKQotICAgIFBvcCgnXV0nKQotICAgIHJldHVybiBjb2RlX25v
ZGUKLSAgZWxzZToKLSAgICBQdXNoRnJvbnQodG9rZW5zLCBoZWFkKQotICAgIHJldHVybiBOb25l
Ci0KLQotZGVmIFBhcnNlQ29kZU5vZGUodG9rZW5zKToKLSAgYXRvbWljX2NvZGVfbGlzdCA9IFtd
Ci0gIHdoaWxlIFRydWU6Ci0gICAgaWYgbm90IHRva2VuczoKLSAgICAgIGJyZWFrCi0gICAgYXRv
bWljX2NvZGVfbm9kZSA9IFBhcnNlQXRvbWljQ29kZU5vZGUodG9rZW5zKQotICAgIGlmIGF0b21p
Y19jb2RlX25vZGU6Ci0gICAgICBhdG9taWNfY29kZV9saXN0LmFwcGVuZChhdG9taWNfY29kZV9u
b2RlKQotICAgIGVsc2U6Ci0gICAgICBicmVhawotICByZXR1cm4gQ29kZU5vZGUoYXRvbWljX2Nv
ZGVfbGlzdCkKLQotCi1kZWYgUGFyc2VUb0FTVChwdW1wX3NyY190ZXh0KToKLSAgIiIiQ29udmVy
dCB0aGUgZ2l2ZW4gUHVtcCBzb3VyY2UgdGV4dCBpbnRvIGFuIEFTVC4iIiIKLSAgdG9rZW5zID0g
bGlzdChUb2tlbml6ZShwdW1wX3NyY190ZXh0KSkKLSAgY29kZV9ub2RlID0gUGFyc2VDb2RlTm9k
ZSh0b2tlbnMpCi0gIHJldHVybiBjb2RlX25vZGUKLQotCi1jbGFzcyBFbnY6Ci0gIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICBzZWxmLnZhcmlhYmxlcyA9IFtdCi0gICAgc2VsZi5yYW5nZXMgPSBb
XQotCi0gIGRlZiBDbG9uZShzZWxmKToKLSAgICBjbG9uZSA9IEVudigpCi0gICAgY2xvbmUudmFy
aWFibGVzID0gc2VsZi52YXJpYWJsZXNbOl0KLSAgICBjbG9uZS5yYW5nZXMgPSBzZWxmLnJhbmdl
c1s6XQotICAgIHJldHVybiBjbG9uZQotCi0gIGRlZiBQdXNoVmFyaWFibGUoc2VsZiwgdmFyLCB2
YWx1ZSk6Ci0gICAgIyBJZiB2YWx1ZSBsb29rcyBsaWtlIGFuIGludCwgc3RvcmUgaXQgYXMgYW4g
aW50LgotICAgIHRyeToKLSAgICAgIGludF92YWx1ZSA9IGludCh2YWx1ZSkKLSAgICAgIGlmICgn
JXMnICUgaW50X3ZhbHVlKSA9PSB2YWx1ZToKLSAgICAgICAgdmFsdWUgPSBpbnRfdmFsdWUKLSAg
ICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgcGFzcwotICAgIHNlbGYudmFyaWFibGVzWzowXSA9
IFsodmFyLCB2YWx1ZSldCi0KLSAgZGVmIFBvcFZhcmlhYmxlKHNlbGYpOgotICAgIHNlbGYudmFy
aWFibGVzWzoxXSA9IFtdCi0KLSAgZGVmIFB1c2hSYW5nZShzZWxmLCB2YXIsIGxvd2VyLCB1cHBl
cik6Ci0gICAgc2VsZi5yYW5nZXNbOjBdID0gWyh2YXIsIGxvd2VyLCB1cHBlcildCi0KLSAgZGVm
IFBvcFJhbmdlKHNlbGYpOgotICAgIHNlbGYucmFuZ2VzWzoxXSA9IFtdCi0KLSAgZGVmIEdldFZh
bHVlKHNlbGYsIGlkZW50aWZpZXIpOgotICAgIGZvciAodmFyLCB2YWx1ZSkgaW4gc2VsZi52YXJp
YWJsZXM6Ci0gICAgICBpZiBpZGVudGlmaWVyID09IHZhcjoKLSAgICAgICAgcmV0dXJuIHZhbHVl
Ci0KLSAgICBwcmludCAnRVJST1I6IG1ldGEgdmFyaWFibGUgJXMgaXMgdW5kZWZpbmVkLicgJSAo
aWRlbnRpZmllciwpCi0gICAgc3lzLmV4aXQoMSkKLQotICBkZWYgRXZhbEV4cChzZWxmLCBleHAp
OgotICAgIHRyeToKLSAgICAgIHJlc3VsdCA9IGV2YWwoZXhwLnB5dGhvbl9leHApCi0gICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgIHByaW50ICdFUlJPUjogY2F1Z2h0IGV4Y2VwdGlvbiAl
czogJXMnICUgKGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKQotICAgICAgcHJpbnQgKCdFUlJPUjog
ZmFpbGVkIHRvIGV2YWx1YXRlIG1ldGEgZXhwcmVzc2lvbiAlcyBhdCAlcycgJQotICAgICAgICAg
ICAgIChleHAucHl0aG9uX2V4cCwgZXhwLnRva2VuLnN0YXJ0KSkKLSAgICAgIHN5cy5leGl0KDEp
Ci0gICAgcmV0dXJuIHJlc3VsdAotCi0gIGRlZiBHZXRSYW5nZShzZWxmLCBpZGVudGlmaWVyKToK
LSAgICBmb3IgKHZhciwgbG93ZXIsIHVwcGVyKSBpbiBzZWxmLnJhbmdlczoKLSAgICAgIGlmIGlk
ZW50aWZpZXIgPT0gdmFyOgotICAgICAgICByZXR1cm4gKGxvd2VyLCB1cHBlcikKLQotICAgIHBy
aW50ICdFUlJPUjogcmFuZ2UgJXMgaXMgdW5kZWZpbmVkLicgJSAoaWRlbnRpZmllciwpCi0gICAg
c3lzLmV4aXQoMSkKLQotCi1jbGFzcyBPdXRwdXQ6Ci0gIGRlZiBfX2luaXRfXyhzZWxmKToKLSAg
ICBzZWxmLnN0cmluZyA9ICcnCi0KLSAgZGVmIEdldExhc3RMaW5lKHNlbGYpOgotICAgIGluZGV4
ID0gc2VsZi5zdHJpbmcucmZpbmQoJ1xuJykKLSAgICBpZiBpbmRleCA8IDA6Ci0gICAgICByZXR1
cm4gJycKLQotICAgIHJldHVybiBzZWxmLnN0cmluZ1tpbmRleCArIDE6XQotCi0gIGRlZiBBcHBl
bmQoc2VsZiwgcyk6Ci0gICAgc2VsZi5zdHJpbmcgKz0gcwotCi0KLWRlZiBSdW5BdG9taWNDb2Rl
KGVudiwgbm9kZSwgb3V0cHV0KToKLSAgaWYgaXNpbnN0YW5jZShub2RlLCBWYXJOb2RlKToKLSAg
ICBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyLnZhbHVlLnN0cmlwKCkKLSAgICByZXN1bHQg
PSBPdXRwdXQoKQotICAgIFJ1bkF0b21pY0NvZGUoZW52LkNsb25lKCksIG5vZGUuYXRvbWljX2Nv
ZGUsIHJlc3VsdCkKLSAgICB2YWx1ZSA9IHJlc3VsdC5zdHJpbmcKLSAgICBlbnYuUHVzaFZhcmlh
YmxlKGlkZW50aWZpZXIsIHZhbHVlKQotICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgUmFuZ2VOb2Rl
KToKLSAgICBpZGVudGlmaWVyID0gbm9kZS5pZGVudGlmaWVyLnZhbHVlLnN0cmlwKCkKLSAgICBs
b3dlciA9IGludChlbnYuRXZhbEV4cChub2RlLmV4cDEpKQotICAgIHVwcGVyID0gaW50KGVudi5F
dmFsRXhwKG5vZGUuZXhwMikpCi0gICAgZW52LlB1c2hSYW5nZShpZGVudGlmaWVyLCBsb3dlciwg
dXBwZXIpCi0gIGVsaWYgaXNpbnN0YW5jZShub2RlLCBGb3JOb2RlKToKLSAgICBpZGVudGlmaWVy
ID0gbm9kZS5pZGVudGlmaWVyLnZhbHVlLnN0cmlwKCkKLSAgICBpZiBub2RlLnNlcCBpcyBOb25l
OgotICAgICAgc2VwID0gJycKLSAgICBlbHNlOgotICAgICAgc2VwID0gbm9kZS5zZXAudmFsdWUK
LSAgICAobG93ZXIsIHVwcGVyKSA9IGVudi5HZXRSYW5nZShpZGVudGlmaWVyKQotICAgIGZvciBp
IGluIHJhbmdlKGxvd2VyLCB1cHBlciArIDEpOgotICAgICAgbmV3X2VudiA9IGVudi5DbG9uZSgp
Ci0gICAgICBuZXdfZW52LlB1c2hWYXJpYWJsZShpZGVudGlmaWVyLCBpKQotICAgICAgUnVuQ29k
ZShuZXdfZW52LCBub2RlLmNvZGUsIG91dHB1dCkKLSAgICAgIGlmIGkgIT0gdXBwZXI6Ci0gICAg
ICAgIG91dHB1dC5BcHBlbmQoc2VwKQotICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgUmF3Q29kZU5v
ZGUpOgotICAgIG91dHB1dC5BcHBlbmQobm9kZS5yYXdfY29kZS52YWx1ZSkKLSAgZWxpZiBpc2lu
c3RhbmNlKG5vZGUsIElmTm9kZSk6Ci0gICAgY29uZCA9IGVudi5FdmFsRXhwKG5vZGUuZXhwKQot
ICAgIGlmIGNvbmQ6Ci0gICAgICBSdW5Db2RlKGVudi5DbG9uZSgpLCBub2RlLnRoZW5fYnJhbmNo
LCBvdXRwdXQpCi0gICAgZWxpZiBub2RlLmVsc2VfYnJhbmNoIGlzIG5vdCBOb25lOgotICAgICAg
UnVuQ29kZShlbnYuQ2xvbmUoKSwgbm9kZS5lbHNlX2JyYW5jaCwgb3V0cHV0KQotICBlbGlmIGlz
aW5zdGFuY2Uobm9kZSwgRXhwTm9kZSk6Ci0gICAgdmFsdWUgPSBlbnYuRXZhbEV4cChub2RlKQot
ICAgIG91dHB1dC5BcHBlbmQoJyVzJyAlICh2YWx1ZSwpKQotICBlbGlmIGlzaW5zdGFuY2Uobm9k
ZSwgTGl0ZXJhbERvbGxhck5vZGUpOgotICAgIG91dHB1dC5BcHBlbmQoJyQnKQotICBlbGlmIGlz
aW5zdGFuY2Uobm9kZSwgQ29kZU5vZGUpOgotICAgIFJ1bkNvZGUoZW52LkNsb25lKCksIG5vZGUs
IG91dHB1dCkKLSAgZWxzZToKLSAgICBwcmludCAnQkFEJwotICAgIHByaW50IG5vZGUKLSAgICBz
eXMuZXhpdCgxKQotCi0KLWRlZiBSdW5Db2RlKGVudiwgY29kZV9ub2RlLCBvdXRwdXQpOgotICBm
b3IgYXRvbWljX2NvZGUgaW4gY29kZV9ub2RlLmF0b21pY19jb2RlOgotICAgIFJ1bkF0b21pY0Nv
ZGUoZW52LCBhdG9taWNfY29kZSwgb3V0cHV0KQotCi0KLWRlZiBJc1NpbmdsZUxpbmVDb21tZW50
KGN1cl9saW5lKToKLSAgcmV0dXJuICcvLycgaW4gY3VyX2xpbmUKLQotCi1kZWYgSXNJblByZXBy
b2Nlc3NvckRpcmVjdGl2ZShwcmV2X2xpbmVzLCBjdXJfbGluZSk6Ci0gIGlmIGN1cl9saW5lLmxz
dHJpcCgpLnN0YXJ0c3dpdGgoJyMnKToKLSAgICByZXR1cm4gVHJ1ZQotICByZXR1cm4gcHJldl9s
aW5lcyBhbmQgcHJldl9saW5lc1stMV0uZW5kc3dpdGgoJ1xcJykKLQotCi1kZWYgV3JhcENvbW1l
bnQobGluZSwgb3V0cHV0KToKLSAgbG9jID0gbGluZS5maW5kKCcvLycpCi0gIGJlZm9yZV9jb21t
ZW50ID0gbGluZVs6bG9jXS5yc3RyaXAoKQotICBpZiBiZWZvcmVfY29tbWVudCA9PSAnJzoKLSAg
ICBpbmRlbnQgPSBsb2MKLSAgZWxzZToKLSAgICBvdXRwdXQuYXBwZW5kKGJlZm9yZV9jb21tZW50
KQotICAgIGluZGVudCA9IGxlbihiZWZvcmVfY29tbWVudCkgLSBsZW4oYmVmb3JlX2NvbW1lbnQu
bHN0cmlwKCkpCi0gIHByZWZpeCA9IGluZGVudConICcgKyAnLy8gJwotICBtYXhfbGVuID0gODAg
LSBsZW4ocHJlZml4KQotICBjb21tZW50ID0gbGluZVtsb2MgKyAyOl0uc3RyaXAoKQotICBzZWdz
ID0gW3NlZyBmb3Igc2VnIGluIHJlLnNwbGl0KHInKFx3K1xXKiknLCBjb21tZW50KSBpZiBzZWcg
IT0gJyddCi0gIGN1cl9saW5lID0gJycKLSAgZm9yIHNlZyBpbiBzZWdzOgotICAgIGlmIGxlbigo
Y3VyX2xpbmUgKyBzZWcpLnJzdHJpcCgpKSA8IG1heF9sZW46Ci0gICAgICBjdXJfbGluZSArPSBz
ZWcKLSAgICBlbHNlOgotICAgICAgaWYgY3VyX2xpbmUuc3RyaXAoKSAhPSAnJzoKLSAgICAgICAg
b3V0cHV0LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5yc3RyaXAoKSkKLSAgICAgIGN1cl9saW5l
ID0gc2VnLmxzdHJpcCgpCi0gIGlmIGN1cl9saW5lLnN0cmlwKCkgIT0gJyc6Ci0gICAgb3V0cHV0
LmFwcGVuZChwcmVmaXggKyBjdXJfbGluZS5zdHJpcCgpKQotCi0KLWRlZiBXcmFwQ29kZShsaW5l
LCBsaW5lX2NvbmNhdCwgb3V0cHV0KToKLSAgaW5kZW50ID0gbGVuKGxpbmUpIC0gbGVuKGxpbmUu
bHN0cmlwKCkpCi0gIHByZWZpeCA9IGluZGVudConICcgICMgUHJlZml4IG9mIHRoZSBjdXJyZW50
IGxpbmUKLSAgbWF4X2xlbiA9IDgwIC0gaW5kZW50IC0gbGVuKGxpbmVfY29uY2F0KSAgIyBNYXhp
bXVtIGxlbmd0aCBvZiB0aGUgY3VycmVudCBsaW5lCi0gIG5ld19wcmVmaXggPSBwcmVmaXggKyA0
KicgJyAgIyBQcmVmaXggb2YgYSBjb250aW51YXRpb24gbGluZQotICBuZXdfbWF4X2xlbiA9IG1h
eF9sZW4gLSA0ICAjIE1heGltdW0gbGVuZ3RoIG9mIGEgY29udGludWF0aW9uIGxpbmUKLSAgIyBQ
cmVmZXJzIHRvIHdyYXAgYSBsaW5lIGFmdGVyIGEgJywnIG9yICc7Jy4KLSAgc2VncyA9IFtzZWcg
Zm9yIHNlZyBpbiByZS5zcGxpdChyJyhbXiw7XStbLDtdPyknLCBsaW5lLnN0cmlwKCkpIGlmIHNl
ZyAhPSAnJ10KLSAgY3VyX2xpbmUgPSAnJyAgIyBUaGUgY3VycmVudCBsaW5lIHdpdGhvdXQgbGVh
ZGluZyBzcGFjZXMuCi0gIGZvciBzZWcgaW4gc2VnczoKLSAgICAjIElmIHRoZSBsaW5lIGlzIHN0
aWxsIHRvbyBsb25nLCB3cmFwIGF0IGEgc3BhY2UuCi0gICAgd2hpbGUgY3VyX2xpbmUgPT0gJycg
YW5kIGxlbihzZWcuc3RyaXAoKSkgPiBtYXhfbGVuOgotICAgICAgc2VnID0gc2VnLmxzdHJpcCgp
Ci0gICAgICBzcGxpdF9hdCA9IHNlZy5yZmluZCgnICcsIDAsIG1heF9sZW4pCi0gICAgICBvdXRw
dXQuYXBwZW5kKHByZWZpeCArIHNlZ1s6c3BsaXRfYXRdLnN0cmlwKCkgKyBsaW5lX2NvbmNhdCkK
LSAgICAgIHNlZyA9IHNlZ1tzcGxpdF9hdCArIDE6XQotICAgICAgcHJlZml4ID0gbmV3X3ByZWZp
eAotICAgICAgbWF4X2xlbiA9IG5ld19tYXhfbGVuCi0KLSAgICBpZiBsZW4oKGN1cl9saW5lICsg
c2VnKS5yc3RyaXAoKSkgPCBtYXhfbGVuOgotICAgICAgY3VyX2xpbmUgPSAoY3VyX2xpbmUgKyBz
ZWcpLmxzdHJpcCgpCi0gICAgZWxzZToKLSAgICAgIG91dHB1dC5hcHBlbmQocHJlZml4ICsgY3Vy
X2xpbmUucnN0cmlwKCkgKyBsaW5lX2NvbmNhdCkKLSAgICAgIHByZWZpeCA9IG5ld19wcmVmaXgK
LSAgICAgIG1heF9sZW4gPSBuZXdfbWF4X2xlbgotICAgICAgY3VyX2xpbmUgPSBzZWcubHN0cmlw
KCkKLSAgaWYgY3VyX2xpbmUuc3RyaXAoKSAhPSAnJzoKLSAgICBvdXRwdXQuYXBwZW5kKHByZWZp
eCArIGN1cl9saW5lLnN0cmlwKCkpCi0KLQotZGVmIFdyYXBQcmVwcm9jZXNzb3JEaXJlY3RpdmUo
bGluZSwgb3V0cHV0KToKLSAgV3JhcENvZGUobGluZSwgJyBcXCcsIG91dHB1dCkKLQotCi1kZWYg
V3JhcFBsYWluQ29kZShsaW5lLCBvdXRwdXQpOgotICBXcmFwQ29kZShsaW5lLCAnJywgb3V0cHV0
KQotCi0KLWRlZiBJc011bHRpTGluZUlXWVVQcmFnbWEobGluZSk6Ci0gIHJldHVybiByZS5zZWFy
Y2gocicvXCogSVdZVSBwcmFnbWE6ICcsIGxpbmUpCi0KLQotZGVmIElzSGVhZGVyR3VhcmRJbmNs
dWRlT3JPbmVMaW5lSVdZVVByYWdtYShsaW5lKToKLSAgcmV0dXJuIChyZS5tYXRjaChyJ14jKGlm
bmRlZnxkZWZpbmV8ZW5kaWZccyovLylccypbXHdfXStccyokJywgbGluZSkgb3IKLSAgICAgICAg
ICByZS5tYXRjaChyJ14jaW5jbHVkZVxzJywgbGluZSkgb3IKLSAgICAgICAgICAjIERvbid0IGJy
ZWFrIElXWVUgcHJhZ21hcywgZWl0aGVyOyB0aGF0IGNhdXNlcyBpd3l1LnB5IHByb2JsZW1zLgot
ICAgICAgICAgIHJlLnNlYXJjaChyJy8vIElXWVUgcHJhZ21hOiAnLCBsaW5lKSkKLQotCi1kZWYg
V3JhcExvbmdMaW5lKGxpbmUsIG91dHB1dCk6Ci0gIGxpbmUgPSBsaW5lLnJzdHJpcCgpCi0gIGlm
IGxlbihsaW5lKSA8PSA4MDoKLSAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCi0gIGVsaWYgSXNTaW5n
bGVMaW5lQ29tbWVudChsaW5lKToKLSAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25lTGlu
ZUlXWVVQcmFnbWEobGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4Y2Vw
dGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywKLSAgICAgICMgaW5jbHVkZXMg
YW5kIElXWVUgcHJhZ21hcy4KLSAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKLSAgICBlbHNlOgot
ICAgICAgV3JhcENvbW1lbnQobGluZSwgb3V0cHV0KQotICBlbGlmIElzSW5QcmVwcm9jZXNzb3JE
aXJlY3RpdmUob3V0cHV0LCBsaW5lKToKLSAgICBpZiBJc0hlYWRlckd1YXJkSW5jbHVkZU9yT25l
TGluZUlXWVVQcmFnbWEobGluZSk6Ci0gICAgICAjIFRoZSBzdHlsZSBndWlkZSBtYWRlIGFuIGV4
Y2VwdGlvbiB0byBhbGxvdyBsb25nIGhlYWRlciBndWFyZCBsaW5lcywKLSAgICAgICMgaW5jbHVk
ZXMgYW5kIElXWVUgcHJhZ21hcy4KLSAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKLSAgICBlbHNl
OgotICAgICAgV3JhcFByZXByb2Nlc3NvckRpcmVjdGl2ZShsaW5lLCBvdXRwdXQpCi0gIGVsaWYg
SXNNdWx0aUxpbmVJV1lVUHJhZ21hKGxpbmUpOgotICAgIG91dHB1dC5hcHBlbmQobGluZSkKLSAg
ZWxzZToKLSAgICBXcmFwUGxhaW5Db2RlKGxpbmUsIG91dHB1dCkKLQotCi1kZWYgQmVhdXRpZnlD
b2RlKHN0cmluZyk6Ci0gIGxpbmVzID0gc3RyaW5nLnNwbGl0bGluZXMoKQotICBvdXRwdXQgPSBb
XQotICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICBXcmFwTG9uZ0xpbmUobGluZSwgb3V0cHV0KQot
ICBvdXRwdXQyID0gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUgaW4gb3V0cHV0XQotICByZXR1cm4g
J1xuJy5qb2luKG91dHB1dDIpICsgJ1xuJwotCi0KLWRlZiBDb252ZXJ0RnJvbVB1bXBTb3VyY2Uo
c3JjX3RleHQpOgotICAiIiJSZXR1cm4gdGhlIHRleHQgZ2VuZXJhdGVkIGZyb20gdGhlIGdpdmVu
IFB1bXAgc291cmNlIHRleHQuIiIiCi0gIGFzdCA9IFBhcnNlVG9BU1QoU3RyaXBNZXRhQ29tbWVu
dHMoc3JjX3RleHQpKQotICBvdXRwdXQgPSBPdXRwdXQoKQotICBSdW5Db2RlKEVudigpLCBhc3Qs
IG91dHB1dCkKLSAgcmV0dXJuIEJlYXV0aWZ5Q29kZShvdXRwdXQuc3RyaW5nKQotCi0KLWRlZiBt
YWluKGFyZ3YpOgotICBpZiBsZW4oYXJndikgPT0gMToKLSAgICBwcmludCBfX2RvY19fCi0gICAg
c3lzLmV4aXQoMSkKLQotICBmaWxlX3BhdGggPSBhcmd2Wy0xXQotICBvdXRwdXRfc3RyID0gQ29u
dmVydEZyb21QdW1wU291cmNlKGZpbGUoZmlsZV9wYXRoLCAncicpLnJlYWQoKSkKLSAgaWYgZmls
ZV9wYXRoLmVuZHN3aXRoKCcucHVtcCcpOgotICAgIG91dHB1dF9maWxlX3BhdGggPSBmaWxlX3Bh
dGhbOi01XQotICBlbHNlOgotICAgIG91dHB1dF9maWxlX3BhdGggPSAnLScKLSAgaWYgb3V0cHV0
X2ZpbGVfcGF0aCA9PSAnLSc6Ci0gICAgcHJpbnQgb3V0cHV0X3N0ciwKLSAgZWxzZToKLSAgICBv
dXRwdXRfZmlsZSA9IGZpbGUob3V0cHV0X2ZpbGVfcGF0aCwgJ3cnKQotICAgIG91dHB1dF9maWxl
LndyaXRlKCcvLyBUaGlzIGZpbGUgd2FzIEdFTkVSQVRFRCBieSBjb21tYW5kOlxuJykKLSAgICBv
dXRwdXRfZmlsZS53cml0ZSgnLy8gICAgICVzICVzXG4nICUKLSAgICAgICAgICAgICAgICAgICAg
ICAob3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXyksIG9zLnBhdGguYmFzZW5hbWUoZmlsZV9wYXRo
KSkpCi0gICAgb3V0cHV0X2ZpbGUud3JpdGUoJy8vIERPIE5PVCBFRElUIEJZIEhBTkQhISFcblxu
JykKLSAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXRfc3RyKQotICAgIG91dHB1dF9maWxlLmNs
b3NlKCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBtYWluKHN5cy5hcmd2KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9yZWxlYXNlX2RvY3MucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC9zY3JpcHRzL3JlbGVhc2VfZG9jcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMTI5MTM0N2Y2NzRhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy9y
ZWxlYXNlX2RvY3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJTY3JpcHQgZm9yIGJyYW5jaGluZyBH
b29nbGUgVGVzdC9Nb2NrIHdpa2kgcGFnZXMgZm9yIGEgbmV3IHZlcnNpb24uCi0KLVNZTk9QU0lT
Ci0gICAgICAgcmVsZWFzZV9kb2NzLnB5IE5FV19SRUxFQVNFX1ZFUlNJT04KLQotICAgICAgIEdv
b2dsZSBUZXN0IGFuZCBHb29nbGUgTW9jaydzIGV4dGVybmFsIHVzZXIgZG9jdW1lbnRhdGlvbiBp
cyBpbgotICAgICAgIGludGVybGlua2VkIHdpa2kgZmlsZXMuICBXaGVuIHdlIHJlbGVhc2UgYSBu
ZXcgdmVyc2lvbiBvZgotICAgICAgIEdvb2dsZSBUZXN0IG9yIEdvb2dsZSBNb2NrLCB3ZSBuZWVk
IHRvIGJyYW5jaCB0aGUgd2lraSBmaWxlcwotICAgICAgIHN1Y2ggdGhhdCB1c2VycyBvZiBhIHNw
ZWNpZmljIHZlcnNpb24gb2YgR29vZ2xlIFRlc3QvTW9jayBjYW4KLSAgICAgICBsb29rIHVwIGRv
Y3VtZW5hdGlvbiByZWxldmFudCBmb3IgdGhhdCB2ZXJzaW9uLiAgVGhpcyBzY3JpcHQKLSAgICAg
ICBhdXRvbWF0ZXMgdGhhdCBwcm9jZXNzIGJ5OgotCi0gICAgICAgICAtIGJyYW5jaGluZyB0aGUg
Y3VycmVudCB3aWtpIHBhZ2VzICh3aGljaCBkb2N1bWVudCB0aGUKLSAgICAgICAgICAgYmVoYXZp
b3Igb2YgdGhlIFNWTiB0cnVuayBoZWFkKSB0byBwYWdlcyBmb3IgdGhlIHNwZWNpZmllZAotICAg
ICAgICAgICB2ZXJzaW9uIChlLmcuIGJyYW5jaGluZyBGQVEud2lraSB0byBWMl82X0ZBUS53aWtp
IHdoZW4KLSAgICAgICAgICAgTkVXX1JFTEVBU0VfVkVSU0lPTiBpcyAyLjYpOwotICAgICAgICAg
LSB1cGRhdGluZyB0aGUgbGlua3MgaW4gdGhlIGJyYW5jaGVkIGZpbGVzIHRvIHBvaW50IHRvIHRo
ZSBicmFuY2hlZAotICAgICAgICAgICB2ZXJzaW9uIChlLmcuIGEgbGluayBpbiBWMl82X0ZBUS53
aWtpIHRoYXQgcG9pbnRlZCB0bwotICAgICAgICAgICBQcmltZXIud2lraSNBbmNob3Igd2lsbCBu
b3cgcG9pbnQgdG8gVjJfNl9QcmltZXIud2lraSNBbmNob3IpLgotCi0gICAgICAgTk9URTogTkVX
X1JFTEVBU0VfVkVSU0lPTiBtdXN0IGJlIGEgTkVXIHZlcnNpb24gbnVtYmVyIGZvcgotICAgICAg
IHdoaWNoIHRoZSB3aWtpIHBhZ2VzIGRvbid0IHlldCBleGlzdDsgb3RoZXJ3aXNlIHlvdSdsbCBn
ZXQgU1ZOCi0gICAgICAgZXJyb3JzIGxpa2UgInN2bjogUGF0aCAnVjFfN19QdW1wTWFudWFsLndp
a2knIGlzIG5vdCBhCi0gICAgICAgZGlyZWN0b3J5IiB3aGVuIHJ1bm5pbmcgdGhlIHNjcmlwdC4K
LQotRVhBTVBMRQotICAgICAgICQgY2QgUEFUSC9UTy9HVEVTVF9TVk5fV09SS1NQQUNFL3RydW5r
Ci0gICAgICAgJCBzY3JpcHRzL3JlbGVhc2VfZG9jcy5weSAyLjYgICMgY3JlYXRlIHdpa2kgcGFn
ZXMgZm9yIHYyLjYKLSAgICAgICAkIHN2biBzdGF0dXMgICAgICAgICAgICAgICAgICAgIyB2ZXJp
ZnkgdGhlIGZpbGUgbGlzdAotICAgICAgICQgc3ZuIGRpZmYgICAgICAgICAgICAgICAgICAgICAj
IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cwotICAgICAgICQgc3ZuIGNvbW1pdCAtbSAicmVsZWFz
ZSB3aWtpIHBhZ2VzIGZvciB2Mi42IgotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0K
LWltcG9ydCBjb21tb24KLQotCi0jIFdpa2kgcGFnZXMgdGhhdCBzaG91bGRuJ3QgYmUgYnJhbmNo
ZWQgZm9yIGV2ZXJ5IGd0ZXN0L2dtb2NrIHJlbGVhc2UuCi1HVEVTVF9VTlZFUlNJT05FRF9XSUtJ
UyA9IFsnRGV2R3VpZGUud2lraSddCi1HTU9DS19VTlZFUlNJT05FRF9XSUtJUyA9IFsKLSAgICAn
RGVzaWduRG9jLndpa2knLAotICAgICdEZXZHdWlkZS53aWtpJywKLSAgICAnS25vd25Jc3N1ZXMu
d2lraScKLSAgICBdCi0KLQotZGVmIERyb3BXaWtpU3VmZml4KHdpa2lfZmlsZW5hbWUpOgotICAi
IiJSZW1vdmVzIHRoZSAud2lraSBzdWZmaXggKGlmIGFueSkgZnJvbSB0aGUgZ2l2ZW4gZmlsZW5h
bWUuIiIiCi0KLSAgcmV0dXJuICh3aWtpX2ZpbGVuYW1lWzotbGVuKCcud2lraScpXSBpZiB3aWtp
X2ZpbGVuYW1lLmVuZHN3aXRoKCcud2lraScpCi0gICAgICAgICAgZWxzZSB3aWtpX2ZpbGVuYW1l
KQotCi0KLWNsYXNzIFdpa2lCcmFuY2hlcihvYmplY3QpOgotICAiIiJCcmFuY2hlcyAuLi4iIiIK
LQotICBkZWYgX19pbml0X18oc2VsZiwgZG90X3ZlcnNpb24pOgotICAgIHNlbGYucHJvamVjdCwg
c3ZuX3Jvb3RfcGF0aCA9IGNvbW1vbi5HZXRTdm5JbmZvKCkKLSAgICBpZiBzZWxmLnByb2plY3Qg
bm90IGluICgnZ29vZ2xldGVzdCcsICdnb29nbGVtb2NrJyk6Ci0gICAgICBzeXMuZXhpdCgnVGhp
cyBzY3JpcHQgbXVzdCBiZSBydW4gaW4gYSBndGVzdCBvciBnbW9jayBTVk4gd29ya3NwYWNlLicp
Ci0gICAgc2VsZi53aWtpX2RpciA9IHN2bl9yb290X3BhdGggKyAnL3dpa2knCi0gICAgIyBUdXJu
ICcyLjYnIHRvICdWMl82XycuCi0gICAgc2VsZi52ZXJzaW9uX3ByZWZpeCA9ICdWJyArIGRvdF92
ZXJzaW9uLnJlcGxhY2UoJy4nLCAnXycpICsgJ18nCi0gICAgc2VsZi5maWxlc190b19icmFuY2gg
PSBzZWxmLkdldEZpbGVzVG9CcmFuY2goKQotICAgIHBhZ2VfbmFtZXMgPSBbRHJvcFdpa2lTdWZm
aXgoZikgZm9yIGYgaW4gc2VsZi5maWxlc190b19icmFuY2hdCi0gICAgIyBBIGxpbmsgdG8gRm9v
Lndpa2kgaXMgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0gICAgIyAgIFtGb28gd29y
ZHNdCi0gICAgIyAgIFtGb28jQW5jaG9yIHdvcmRzXQotICAgICMgICBbaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS8uLi4vd2lraS9Gb28gd29yZHNdCi0gICAgIyAgIFtodHRwOi8vY29kZS5nb29nbGUu
Y29tLy4uLi93aWtpL0ZvbyNBbmNob3Igd29yZHNdCi0gICAgIyBXZSB3YW50IHRvIHJlcGxhY2Ug
J0Zvbycgd2l0aCAnVjJfNl9Gb28nIGluIHRoZSBhYm92ZSBjYXNlcy4KLSAgICBzZWxmLnNlYXJj
aF9mb3JfcmUgPSByZS5jb21waWxlKAotICAgICAgICAjIFRoaXMgcmVnZXggbWF0Y2hlcyBlaXRo
ZXIKLSAgICAgICAgIyAgIFtGb28KLSAgICAgICAgIyBvcgotICAgICAgICAjICAgL3dpa2kvRm9v
Ci0gICAgICAgICMgZm9sbG93ZWQgYnkgYSBzcGFjZSBvciBhICMsIHdoZXJlIEZvbyBpcyB0aGUg
bmFtZSBvZiBhbgotICAgICAgICAjIHVudmVyc2lvbmVkIHdpa2kgcGFnZS4KLSAgICAgICAgcico
XFt8L3dpa2kvKSglcykoWyAjXSknICUgJ3wnLmpvaW4ocGFnZV9uYW1lcykpCi0gICAgc2VsZi5y
ZXBsYWNlX3dpdGggPSByJ1wxJXNcMlwzJyAlIChzZWxmLnZlcnNpb25fcHJlZml4LCkKLQotICBk
ZWYgR2V0RmlsZXNUb0JyYW5jaChzZWxmKToKLSAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiAud2lr
aSBmaWxlIG5hbWVzIHRoYXQgbmVlZCB0byBiZSBicmFuY2hlZC4iIiIKLQotICAgIHVudmVyc2lv
bmVkX3dpa2lzID0gKEdURVNUX1VOVkVSU0lPTkVEX1dJS0lTIGlmIHNlbGYucHJvamVjdCA9PSAn
Z29vZ2xldGVzdCcKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdNT0NLX1VOVkVSU0lP
TkVEX1dJS0lTKQotICAgIHJldHVybiBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYud2lraV9k
aXIpCi0gICAgICAgICAgICBpZiAoZi5lbmRzd2l0aCgnLndpa2knKSBhbmQKLSAgICAgICAgICAg
ICAgICBub3QgcmUubWF0Y2gocideVlxkJywgZikgYW5kICAjIEV4Y2x1ZGVkIHZlcnNpb25lZCAu
d2lraSBmaWxlcy4KLSAgICAgICAgICAgICAgICBmIG5vdCBpbiB1bnZlcnNpb25lZF93aWtpcyld
Ci0KLSAgZGVmIEJyYW5jaEZpbGVzKHNlbGYpOgotICAgICIiIkJyYW5jaGVzIHRoZSAud2lraSBm
aWxlcyBuZWVkZWQgdG8gYmUgYnJhbmNoZWQuIiIiCi0KLSAgICBwcmludCAnQnJhbmNoaW5nICVk
IC53aWtpIGZpbGVzOicgJSAobGVuKHNlbGYuZmlsZXNfdG9fYnJhbmNoKSwpCi0gICAgb3MuY2hk
aXIoc2VsZi53aWtpX2RpcikKLSAgICBmb3IgZiBpbiBzZWxmLmZpbGVzX3RvX2JyYW5jaDoKLSAg
ICAgIGNvbW1hbmQgPSAnc3ZuIGNwICVzICVzJXMnICUgKGYsIHNlbGYudmVyc2lvbl9wcmVmaXgs
IGYpCi0gICAgICBwcmludCBjb21tYW5kCi0gICAgICBvcy5zeXN0ZW0oY29tbWFuZCkKLQotICBk
ZWYgVXBkYXRlTGlua3NJbkJyYW5jaGVkRmlsZXMoc2VsZik6Ci0KLSAgICBmb3IgZiBpbiBzZWxm
LmZpbGVzX3RvX2JyYW5jaDoKLSAgICAgIHNvdXJjZV9maWxlID0gb3MucGF0aC5qb2luKHNlbGYu
d2lraV9kaXIsIGYpCi0gICAgICB2ZXJzaW9uZWRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndp
a2lfZGlyLCBzZWxmLnZlcnNpb25fcHJlZml4ICsgZikKLSAgICAgIHByaW50ICdVcGRhdGluZyBs
aW5rcyBpbiAlcy4nICUgKHZlcnNpb25lZF9maWxlLCkKLSAgICAgIHRleHQgPSBmaWxlKHNvdXJj
ZV9maWxlLCAncicpLnJlYWQoKQotICAgICAgbmV3X3RleHQgPSBzZWxmLnNlYXJjaF9mb3JfcmUu
c3ViKHNlbGYucmVwbGFjZV93aXRoLCB0ZXh0KQotICAgICAgZmlsZSh2ZXJzaW9uZWRfZmlsZSwg
J3cnKS53cml0ZShuZXdfdGV4dCkKLQotCi1kZWYgbWFpbigpOgotICBpZiBsZW4oc3lzLmFyZ3Yp
ICE9IDI6Ci0gICAgc3lzLmV4aXQoX19kb2NfXykKLQotICBicmFuY2hlciA9IFdpa2lCcmFuY2hl
cihzeXMuYXJndlsxXSkKLSAgYnJhbmNoZXIuQnJhbmNoRmlsZXMoKQotICBicmFuY2hlci5VcGRh
dGVMaW5rc0luQnJhbmNoZWRGaWxlcygpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zY3JpcHRzL3Rlc3QvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNkZmY1ODQ2MzdiNy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Nj
cmlwdHMvdGVzdC9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSMgQSBN
YWtlZmlsZSBmb3IgZnVzaW5nIEdvb2dsZSBUZXN0IGFuZCBidWlsZGluZyBhIHNhbXBsZSB0ZXN0
IGFnYWluc3QgaXQuCi0jCi0jIFNZTk9QU0lTOgotIwotIyAgIG1ha2UgW2FsbF0gIC0gbWFrZXMg
ZXZlcnl0aGluZy4KLSMgICBtYWtlIFRBUkdFVCAtIG1ha2VzIHRoZSBnaXZlbiB0YXJnZXQuCi0j
ICAgbWFrZSBjaGVjayAgLSBtYWtlcyBldmVyeXRoaW5nIGFuZCBydW5zIHRoZSBidWlsdCBzYW1w
bGUgdGVzdC4KLSMgICBtYWtlIGNsZWFuICAtIHJlbW92ZXMgYWxsIGZpbGVzIGdlbmVyYXRlZCBi
eSBtYWtlLgotCi0jIFBvaW50cyB0byB0aGUgcm9vdCBvZiBmdXNlZCBHb29nbGUgVGVzdCwgcmVs
YXRpdmUgdG8gd2hlcmUgdGhpcyBmaWxlIGlzLgotRlVTRURfR1RFU1RfRElSID0gb3V0cHV0Ci0K
LSMgUGF0aHMgdG8gdGhlIGZ1c2VkIGd0ZXN0IGZpbGVzLgotRlVTRURfR1RFU1RfSCA9ICQoRlVT
RURfR1RFU1RfRElSKS9ndGVzdC9ndGVzdC5oCi1GVVNFRF9HVEVTVF9BTExfQ0MgPSAkKEZVU0VE
X0dURVNUX0RJUikvZ3Rlc3QvZ3Rlc3QtYWxsLmNjCi0KLSMgV2hlcmUgdG8gZmluZCB0aGUgc2Ft
cGxlIHRlc3QuCi1TQU1QTEVfRElSID0gLi4vLi4vc2FtcGxlcwotCi0jIFdoZXJlIHRvIGZpbmQg
Z3Rlc3RfbWFpbi5jYy4KLUdURVNUX01BSU5fQ0MgPSAuLi8uLi9zcmMvZ3Rlc3RfbWFpbi5jYwot
Ci0jIEZsYWdzIHBhc3NlZCB0byB0aGUgcHJlcHJvY2Vzc29yLgotIyBXZSBoYXZlIG5vIGlkZWEg
aGVyZSB3aGV0aGVyIHB0aHJlYWRzIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLCBzbwotIyBk
aXNhYmxlIGl0cyB1c2UuCi1DUFBGTEFHUyArPSAtSSQoRlVTRURfR1RFU1RfRElSKSAtREdURVNU
X0hBU19QVEhSRUFEPTAKLQotIyBGbGFncyBwYXNzZWQgdG8gdGhlIEMrKyBjb21waWxlci4KLUNY
WEZMQUdTICs9IC1nCi0KLWFsbCA6IHNhbXBsZTFfdW5pdHRlc3QKLQotY2hlY2sgOiBhbGwKLQku
L3NhbXBsZTFfdW5pdHRlc3QKLQotY2xlYW4gOgotCXJtIC1yZiAkKEZVU0VEX0dURVNUX0RJUikg
c2FtcGxlMV91bml0dGVzdCAqLm8KLQotJChGVVNFRF9HVEVTVF9IKSA6Ci0JLi4vZnVzZV9ndGVz
dF9maWxlcy5weSAkKEZVU0VEX0dURVNUX0RJUikKLQotJChGVVNFRF9HVEVTVF9BTExfQ0MpIDoK
LQkuLi9mdXNlX2d0ZXN0X2ZpbGVzLnB5ICQoRlVTRURfR1RFU1RfRElSKQotCi1ndGVzdC1hbGwu
byA6ICQoRlVTRURfR1RFU1RfSCkgJChGVVNFRF9HVEVTVF9BTExfQ0MpCi0JJChDWFgpICQoQ1BQ
RkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoRlVTRURfR1RFU1RfRElSKS9ndGVzdC9ndGVzdC1hbGwu
Y2MKLQotZ3Rlc3RfbWFpbi5vIDogJChGVVNFRF9HVEVTVF9IKSAkKEdURVNUX01BSU5fQ0MpCi0J
JChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoR1RFU1RfTUFJTl9DQykKLQotc2Ft
cGxlMS5vIDogJChTQU1QTEVfRElSKS9zYW1wbGUxLmNjICQoU0FNUExFX0RJUikvc2FtcGxlMS5o
Ci0JJChDWFgpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpIC1jICQoU0FNUExFX0RJUikvc2FtcGxl
MS5jYwotCi1zYW1wbGUxX3VuaXR0ZXN0Lm8gOiAkKFNBTVBMRV9ESVIpL3NhbXBsZTFfdW5pdHRl
c3QuY2MgXAotICAgICAgICAgICAgICAgICAgICAgJChTQU1QTEVfRElSKS9zYW1wbGUxLmggJChG
VVNFRF9HVEVTVF9IKQotCSQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAtYyAkKFNBTVBM
RV9ESVIpL3NhbXBsZTFfdW5pdHRlc3QuY2MKLQotc2FtcGxlMV91bml0dGVzdCA6IHNhbXBsZTEu
byBzYW1wbGUxX3VuaXR0ZXN0Lm8gZ3Rlc3QtYWxsLm8gZ3Rlc3RfbWFpbi5vCi0JJChDWFgpICQo
Q1BQRkxBR1MpICQoQ1hYRkxBR1MpICReIC1vICRACmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
Y3JpcHRzL3VwbG9hZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZTZmOWExNDcxOWUuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zY3JpcHRzL3VwbG9hZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzODcgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJ
bmMuCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0jIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAotIwotIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCi0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
Ci0jIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSIiIlRv
b2wgZm9yIHVwbG9hZGluZyBkaWZmcyBmcm9tIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSB0byB0
aGUgY29kZXJldmlldyBhcHAuCi0KLVVzYWdlIHN1bW1hcnk6IHVwbG9hZC5weSBbb3B0aW9uc10g
Wy0tIGRpZmZfb3B0aW9uc10KLQotRGlmZiBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGRpZmYg
Y29tbWFuZCBvZiB0aGUgdW5kZXJseWluZyBzeXN0ZW0uCi0KLVN1cHBvcnRlZCB2ZXJzaW9uIGNv
bnRyb2wgc3lzdGVtczoKLSAgR2l0Ci0gIE1lcmN1cmlhbAotICBTdWJ2ZXJzaW9uCi0KLUl0IGlz
IGltcG9ydGFudCBmb3IgR2l0L01lcmN1cmlhbCB1c2VycyB0byBzcGVjaWZ5IGEgdHJlZS9ub2Rl
L2JyYW5jaCB0byBkaWZmCi1hZ2FpbnN0IGJ5IHVzaW5nIHRoZSAnLS1yZXYnIG9wdGlvbi4KLSIi
IgotIyBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIGFwcGNmZy5weSBpbiB0aGUgQXBwIEVuZ2lu
ZSBTREsgKG9wZW4gc291cmNlKSwKLSMgYW5kIGZyb20gQVNQTiByZWNpcGUgIzE0NjMwNi4KLQot
aW1wb3J0IGNvb2tpZWxpYgotaW1wb3J0IGdldHBhc3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
bWQ1Ci1pbXBvcnQgbWltZXR5cGVzCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0
IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0
IHVybGxpYgotaW1wb3J0IHVybGxpYjIKLWltcG9ydCB1cmxwYXJzZQotCi10cnk6Ci0gIGltcG9y
dCByZWFkbGluZQotZXhjZXB0IEltcG9ydEVycm9yOgotICBwYXNzCi0KLSMgVGhlIGxvZ2dpbmcg
dmVyYm9zaXR5OgotIyAgMDogRXJyb3JzIG9ubHkuCi0jICAxOiBTdGF0dXMgbWVzc2FnZXMuCi0j
ICAyOiBJbmZvIGxvZ3MuCi0jICAzOiBEZWJ1ZyBsb2dzLgotdmVyYm9zaXR5ID0gMQotCi0jIE1h
eCBzaXplIG9mIHBhdGNoIG9yIGJhc2UgZmlsZS4KLU1BWF9VUExPQURfU0laRSA9IDkwMCAqIDEw
MjQKLQotCi1kZWYgR2V0RW1haWwocHJvbXB0KToKLSAgIiIiUHJvbXB0cyB0aGUgdXNlciBmb3Ig
dGhlaXIgZW1haWwgYWRkcmVzcyBhbmQgcmV0dXJucyBpdC4KLQotICBUaGUgbGFzdCB1c2VkIGVt
YWlsIGFkZHJlc3MgaXMgc2F2ZWQgdG8gYSBmaWxlIGFuZCBvZmZlcmVkIHVwIGFzIGEgc3VnZ2Vz
dGlvbgotICB0byB0aGUgdXNlci4gSWYgdGhlIHVzZXIgcHJlc3NlcyBlbnRlciB3aXRob3V0IHR5
cGluZyBpbiBhbnl0aGluZyB0aGUgbGFzdAotICB1c2VkIGVtYWlsIGFkZHJlc3MgaXMgdXNlZC4g
SWYgdGhlIHVzZXIgZW50ZXJzIGEgbmV3IGFkZHJlc3MsIGl0IGlzIHNhdmVkCi0gIGZvciBuZXh0
IHRpbWUgd2UgcHJvbXB0LgotCi0gICIiIgotICBsYXN0X2VtYWlsX2ZpbGVfbmFtZSA9IG9zLnBh
dGguZXhwYW5kdXNlcigifi8ubGFzdF9jb2RlcmV2aWV3X2VtYWlsX2FkZHJlc3MiKQotICBsYXN0
X2VtYWlsID0gIiIKLSAgaWYgb3MucGF0aC5leGlzdHMobGFzdF9lbWFpbF9maWxlX25hbWUpOgot
ICAgIHRyeToKLSAgICAgIGxhc3RfZW1haWxfZmlsZSA9IG9wZW4obGFzdF9lbWFpbF9maWxlX25h
bWUsICJyIikKLSAgICAgIGxhc3RfZW1haWwgPSBsYXN0X2VtYWlsX2ZpbGUucmVhZGxpbmUoKS5z
dHJpcCgiXG4iKQotICAgICAgbGFzdF9lbWFpbF9maWxlLmNsb3NlKCkKLSAgICAgIHByb21wdCAr
PSAiIFslc10iICUgbGFzdF9lbWFpbAotICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgcGFz
cwotICBlbWFpbCA9IHJhd19pbnB1dChwcm9tcHQgKyAiOiAiKS5zdHJpcCgpCi0gIGlmIGVtYWls
OgotICAgIHRyeToKLSAgICAgIGxhc3RfZW1haWxfZmlsZSA9IG9wZW4obGFzdF9lbWFpbF9maWxl
X25hbWUsICJ3IikKLSAgICAgIGxhc3RfZW1haWxfZmlsZS53cml0ZShlbWFpbCkKLSAgICAgIGxh
c3RfZW1haWxfZmlsZS5jbG9zZSgpCi0gICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICBwYXNz
Ci0gIGVsc2U6Ci0gICAgZW1haWwgPSBsYXN0X2VtYWlsCi0gIHJldHVybiBlbWFpbAotCi0KLWRl
ZiBTdGF0dXNVcGRhdGUobXNnKToKLSAgIiIiUHJpbnQgYSBzdGF0dXMgbWVzc2FnZSB0byBzdGRv
dXQuCi0KLSAgSWYgJ3ZlcmJvc2l0eScgaXMgZ3JlYXRlciB0aGFuIDAsIHByaW50IHRoZSBtZXNz
YWdlLgotCi0gIEFyZ3M6Ci0gICAgbXNnOiBUaGUgc3RyaW5nIHRvIHByaW50LgotICAiIiIKLSAg
aWYgdmVyYm9zaXR5ID4gMDoKLSAgICBwcmludCBtc2cKLQotCi1kZWYgRXJyb3JFeGl0KG1zZyk6
Ci0gICIiIlByaW50IGFuIGVycm9yIG1lc3NhZ2UgdG8gc3RkZXJyIGFuZCBleGl0LiIiIgotICBw
cmludCA+PnN5cy5zdGRlcnIsIG1zZwotICBzeXMuZXhpdCgxKQotCi0KLWNsYXNzIENsaWVudExv
Z2luRXJyb3IodXJsbGliMi5IVFRQRXJyb3IpOgotICAiIiJSYWlzZWQgdG8gaW5kaWNhdGUgdGhl
cmUgd2FzIGFuIGVycm9yIGF1dGhlbnRpY2F0aW5nIHdpdGggQ2xpZW50TG9naW4uIiIiCi0KLSAg
ZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgY29kZSwgbXNnLCBoZWFkZXJzLCBhcmdzKToKLSAgICB1
cmxsaWIyLkhUVFBFcnJvci5fX2luaXRfXyhzZWxmLCB1cmwsIGNvZGUsIG1zZywgaGVhZGVycywg
Tm9uZSkKLSAgICBzZWxmLmFyZ3MgPSBhcmdzCi0gICAgc2VsZi5yZWFzb24gPSBhcmdzWyJFcnJv
ciJdCi0KLQotY2xhc3MgQWJzdHJhY3RScGNTZXJ2ZXIob2JqZWN0KToKLSAgIiIiUHJvdmlkZXMg
YSBjb21tb24gaW50ZXJmYWNlIGZvciBhIHNpbXBsZSBSUEMgc2VydmVyLiIiIgotCi0gIGRlZiBf
X2luaXRfXyhzZWxmLCBob3N0LCBhdXRoX2Z1bmN0aW9uLCBob3N0X292ZXJyaWRlPU5vbmUsIGV4
dHJhX2hlYWRlcnM9e30sCi0gICAgICAgICAgICAgICBzYXZlX2Nvb2tpZXM9RmFsc2UpOgotICAg
ICIiIkNyZWF0ZXMgYSBuZXcgSHR0cFJwY1NlcnZlci4KLQotICAgIEFyZ3M6Ci0gICAgICBob3N0
OiBUaGUgaG9zdCB0byBzZW5kIHJlcXVlc3RzIHRvLgotICAgICAgYXV0aF9mdW5jdGlvbjogQSBm
dW5jdGlvbiB0aGF0IHRha2VzIG5vIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBhbgotICAgICAgICAo
ZW1haWwsIHBhc3N3b3JkKSB0dXBsZSB3aGVuIGNhbGxlZC4gV2lsbCBiZSBjYWxsZWQgaWYgYXV0
aGVudGljYXRpb24KLSAgICAgICAgaXMgcmVxdWlyZWQuCi0gICAgICBob3N0X292ZXJyaWRlOiBU
aGUgaG9zdCBoZWFkZXIgdG8gc2VuZCB0byB0aGUgc2VydmVyIChkZWZhdWx0cyB0byBob3N0KS4K
LSAgICAgIGV4dHJhX2hlYWRlcnM6IEEgZGljdCBvZiBleHRyYSBoZWFkZXJzIHRvIGFwcGVuZCB0
byBldmVyeSByZXF1ZXN0LgotICAgICAgc2F2ZV9jb29raWVzOiBJZiBUcnVlLCBzYXZlIHRoZSBh
dXRoZW50aWNhdGlvbiBjb29raWVzIHRvIGxvY2FsIGRpc2suCi0gICAgICAgIElmIEZhbHNlLCB1
c2UgYW4gaW4tbWVtb3J5IGNvb2tpZWphciBpbnN0ZWFkLiAgU3ViY2xhc3NlcyBtdXN0Ci0gICAg
ICAgIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uYWxpdHkuICBEZWZhdWx0cyB0byBGYWxzZS4KLSAg
ICAiIiIKLSAgICBzZWxmLmhvc3QgPSBob3N0Ci0gICAgc2VsZi5ob3N0X292ZXJyaWRlID0gaG9z
dF9vdmVycmlkZQotICAgIHNlbGYuYXV0aF9mdW5jdGlvbiA9IGF1dGhfZnVuY3Rpb24KLSAgICBz
ZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQotICAgIHNlbGYuZXh0cmFfaGVhZGVycyA9IGV4dHJh
X2hlYWRlcnMKLSAgICBzZWxmLnNhdmVfY29va2llcyA9IHNhdmVfY29va2llcwotICAgIHNlbGYu
b3BlbmVyID0gc2VsZi5fR2V0T3BlbmVyKCkKLSAgICBpZiBzZWxmLmhvc3Rfb3ZlcnJpZGU6Ci0g
ICAgICBsb2dnaW5nLmluZm8oIlNlcnZlcjogJXM7IEhvc3Q6ICVzIiwgc2VsZi5ob3N0LCBzZWxm
Lmhvc3Rfb3ZlcnJpZGUpCi0gICAgZWxzZToKLSAgICAgIGxvZ2dpbmcuaW5mbygiU2VydmVyOiAl
cyIsIHNlbGYuaG9zdCkKLQotICBkZWYgX0dldE9wZW5lcihzZWxmKToKLSAgICAiIiJSZXR1cm5z
IGFuIE9wZW5lckRpcmVjdG9yIGZvciBtYWtpbmcgSFRUUCByZXF1ZXN0cy4KLQotICAgIFJldHVy
bnM6Ci0gICAgICBBIHVybGxpYjIuT3BlbmVyRGlyZWN0b3Igb2JqZWN0LgotICAgICIiIgotICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQotCi0gIGRlZiBfQ3JlYXRlUmVxdWVzdChzZWxm
LCB1cmwsIGRhdGE9Tm9uZSk6Ci0gICAgIiIiQ3JlYXRlcyBhIG5ldyB1cmxsaWIgcmVxdWVzdC4i
IiIKLSAgICBsb2dnaW5nLmRlYnVnKCJDcmVhdGluZyByZXF1ZXN0IGZvcjogJyVzJyB3aXRoIHBh
eWxvYWQ6XG4lcyIsIHVybCwgZGF0YSkKLSAgICByZXEgPSB1cmxsaWIyLlJlcXVlc3QodXJsLCBk
YXRhPWRhdGEpCi0gICAgaWYgc2VsZi5ob3N0X292ZXJyaWRlOgotICAgICAgcmVxLmFkZF9oZWFk
ZXIoIkhvc3QiLCBzZWxmLmhvc3Rfb3ZlcnJpZGUpCi0gICAgZm9yIGtleSwgdmFsdWUgaW4gc2Vs
Zi5leHRyYV9oZWFkZXJzLml0ZXJpdGVtcygpOgotICAgICAgcmVxLmFkZF9oZWFkZXIoa2V5LCB2
YWx1ZSkKLSAgICByZXR1cm4gcmVxCi0KLSAgZGVmIF9HZXRBdXRoVG9rZW4oc2VsZiwgZW1haWws
IHBhc3N3b3JkKToKLSAgICAiIiJVc2VzIENsaWVudExvZ2luIHRvIGF1dGhlbnRpY2F0ZSB0aGUg
dXNlciwgcmV0dXJuaW5nIGFuIGF1dGggdG9rZW4uCi0KLSAgICBBcmdzOgotICAgICAgZW1haWw6
ICAgIFRoZSB1c2VyJ3MgZW1haWwgYWRkcmVzcwotICAgICAgcGFzc3dvcmQ6IFRoZSB1c2VyJ3Mg
cGFzc3dvcmQKLQotICAgIFJhaXNlczoKLSAgICAgIENsaWVudExvZ2luRXJyb3I6IElmIHRoZXJl
IHdhcyBhbiBlcnJvciBhdXRoZW50aWNhdGluZyB3aXRoIENsaWVudExvZ2luLgotICAgICAgSFRU
UEVycm9yOiBJZiB0aGVyZSB3YXMgc29tZSBvdGhlciBmb3JtIG9mIEhUVFAgZXJyb3IuCi0KLSAg
ICBSZXR1cm5zOgotICAgICAgVGhlIGF1dGhlbnRpY2F0aW9uIHRva2VuIHJldHVybmVkIGJ5IENs
aWVudExvZ2luLgotICAgICIiIgotICAgIGFjY291bnRfdHlwZSA9ICJHT09HTEUiCi0gICAgaWYg
c2VsZi5ob3N0LmVuZHN3aXRoKCIuZ29vZ2xlLmNvbSIpOgotICAgICAgIyBOZWVkZWQgZm9yIHVz
ZSBpbnNpZGUgR29vZ2xlLgotICAgICAgYWNjb3VudF90eXBlID0gIkhPU1RFRCIKLSAgICByZXEg
PSBzZWxmLl9DcmVhdGVSZXF1ZXN0KAotICAgICAgICB1cmw9Imh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vYWNjb3VudHMvQ2xpZW50TG9naW4iLAotICAgICAgICBkYXRhPXVybGxpYi51cmxlbmNvZGUo
ewotICAgICAgICAgICAgIkVtYWlsIjogZW1haWwsCi0gICAgICAgICAgICAiUGFzc3dkIjogcGFz
c3dvcmQsCi0gICAgICAgICAgICAic2VydmljZSI6ICJhaCIsCi0gICAgICAgICAgICAic291cmNl
IjogInJpZXR2ZWxkLWNvZGVyZXZpZXctdXBsb2FkIiwKLSAgICAgICAgICAgICJhY2NvdW50VHlw
ZSI6IGFjY291bnRfdHlwZSwKLSAgICAgICAgfSksCi0gICAgKQotICAgIHRyeToKLSAgICAgIHJl
c3BvbnNlID0gc2VsZi5vcGVuZXIub3BlbihyZXEpCi0gICAgICByZXNwb25zZV9ib2R5ID0gcmVz
cG9uc2UucmVhZCgpCi0gICAgICByZXNwb25zZV9kaWN0ID0gZGljdCh4LnNwbGl0KCI9IikKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHJlc3BvbnNlX2JvZHkuc3BsaXQoIlxu
IikgaWYgeCkKLSAgICAgIHJldHVybiByZXNwb25zZV9kaWN0WyJBdXRoIl0KLSAgICBleGNlcHQg
dXJsbGliMi5IVFRQRXJyb3IsIGU6Ci0gICAgICBpZiBlLmNvZGUgPT0gNDAzOgotICAgICAgICBi
b2R5ID0gZS5yZWFkKCkKLSAgICAgICAgcmVzcG9uc2VfZGljdCA9IGRpY3QoeC5zcGxpdCgiPSIs
IDEpIGZvciB4IGluIGJvZHkuc3BsaXQoIlxuIikgaWYgeCkKLSAgICAgICAgcmFpc2UgQ2xpZW50
TG9naW5FcnJvcihyZXEuZ2V0X2Z1bGxfdXJsKCksIGUuY29kZSwgZS5tc2csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZS5oZWFkZXJzLCByZXNwb25zZV9kaWN0KQotICAgICAgZWxz
ZToKLSAgICAgICAgcmFpc2UKLQotICBkZWYgX0dldEF1dGhDb29raWUoc2VsZiwgYXV0aF90b2tl
bik6Ci0gICAgIiIiRmV0Y2hlcyBhdXRoZW50aWNhdGlvbiBjb29raWVzIGZvciBhbiBhdXRoZW50
aWNhdGlvbiB0b2tlbi4KLQotICAgIEFyZ3M6Ci0gICAgICBhdXRoX3Rva2VuOiBUaGUgYXV0aGVu
dGljYXRpb24gdG9rZW4gcmV0dXJuZWQgYnkgQ2xpZW50TG9naW4uCi0KLSAgICBSYWlzZXM6Ci0g
ICAgICBIVFRQRXJyb3I6IElmIHRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgYXV0aGVu
dGljYXRpb24gY29va2llcy4KLSAgICAiIiIKLSAgICAjIFRoaXMgaXMgYSBkdW1teSB2YWx1ZSB0
byBhbGxvdyB1cyB0byBpZGVudGlmeSB3aGVuIHdlJ3JlIHN1Y2Nlc3NmdWwuCi0gICAgY29udGlu
dWVfbG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdC8iCi0gICAgYXJncyA9IHsiY29udGludWUi
OiBjb250aW51ZV9sb2NhdGlvbiwgImF1dGgiOiBhdXRoX3Rva2VufQotICAgIHJlcSA9IHNlbGYu
X0NyZWF0ZVJlcXVlc3QoImh0dHA6Ly8lcy9fYWgvbG9naW4/JXMiICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzZWxmLmhvc3QsIHVybGxpYi51cmxlbmNvZGUoYXJncykpKQotICAg
IHRyeToKLSAgICAgIHJlc3BvbnNlID0gc2VsZi5vcGVuZXIub3BlbihyZXEpCi0gICAgZXhjZXB0
IHVybGxpYjIuSFRUUEVycm9yLCBlOgotICAgICAgcmVzcG9uc2UgPSBlCi0gICAgaWYgKHJlc3Bv
bnNlLmNvZGUgIT0gMzAyIG9yCi0gICAgICAgIHJlc3BvbnNlLmluZm8oKVsibG9jYXRpb24iXSAh
PSBjb250aW51ZV9sb2NhdGlvbik6Ci0gICAgICByYWlzZSB1cmxsaWIyLkhUVFBFcnJvcihyZXEu
Z2V0X2Z1bGxfdXJsKCksIHJlc3BvbnNlLmNvZGUsIHJlc3BvbnNlLm1zZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNlLmZwKQotICAgIHNl
bGYuYXV0aGVudGljYXRlZCA9IFRydWUKLQotICBkZWYgX0F1dGhlbnRpY2F0ZShzZWxmKToKLSAg
ICAiIiJBdXRoZW50aWNhdGVzIHRoZSB1c2VyLgotCi0gICAgVGhlIGF1dGhlbnRpY2F0aW9uIHBy
b2Nlc3Mgd29ya3MgYXMgZm9sbG93czoKLSAgICAgMSkgV2UgZ2V0IGEgdXNlcm5hbWUgYW5kIHBh
c3N3b3JkIGZyb20gdGhlIHVzZXIKLSAgICAgMikgV2UgdXNlIENsaWVudExvZ2luIHRvIG9idGFp
biBhbiBBVVRIIHRva2VuIGZvciB0aGUgdXNlcgotICAgICAgICAoc2VlIGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vYXBpcy9hY2NvdW50cy9BdXRoRm9ySW5zdGFsbGVkQXBwcy5odG1sKS4KLSAgICAg
MykgV2UgcGFzcyB0aGUgYXV0aCB0b2tlbiB0byAvX2FoL2xvZ2luIG9uIHRoZSBzZXJ2ZXIgdG8g
b2J0YWluIGFuCi0gICAgICAgIGF1dGhlbnRpY2F0aW9uIGNvb2tpZS4gSWYgbG9naW4gd2FzIHN1
Y2Nlc3NmdWwsIGl0IHRyaWVzIHRvIHJlZGlyZWN0Ci0gICAgICAgIHVzIHRvIHRoZSBVUkwgd2Ug
cHJvdmlkZWQuCi0KLSAgICBJZiB3ZSBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgdXBsb2FkIEFQSSB3
aXRob3V0IGZpcnN0IG9idGFpbmluZyBhbgotICAgIGF1dGhlbnRpY2F0aW9uIGNvb2tpZSwgaXQg
cmV0dXJucyBhIDQwMSByZXNwb25zZSBhbmQgZGlyZWN0cyB1cyB0bwotICAgIGF1dGhlbnRpY2F0
ZSBvdXJzZWx2ZXMgd2l0aCBDbGllbnRMb2dpbi4KLSAgICAiIiIKLSAgICBmb3IgaSBpbiByYW5n
ZSgzKToKLSAgICAgIGNyZWRlbnRpYWxzID0gc2VsZi5hdXRoX2Z1bmN0aW9uKCkKLSAgICAgIHRy
eToKLSAgICAgICAgYXV0aF90b2tlbiA9IHNlbGYuX0dldEF1dGhUb2tlbihjcmVkZW50aWFsc1sw
XSwgY3JlZGVudGlhbHNbMV0pCi0gICAgICBleGNlcHQgQ2xpZW50TG9naW5FcnJvciwgZToKLSAg
ICAgICAgaWYgZS5yZWFzb24gPT0gIkJhZEF1dGhlbnRpY2F0aW9uIjoKLSAgICAgICAgICBwcmlu
dCA+PnN5cy5zdGRlcnIsICJJbnZhbGlkIHVzZXJuYW1lIG9yIHBhc3N3b3JkLiIKLSAgICAgICAg
ICBjb250aW51ZQotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQ2FwdGNoYVJlcXVpcmVkIjoKLSAg
ICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgKLSAgICAgICAgICAgICAgIlBsZWFzZSBnbyB0
b1xuIgotICAgICAgICAgICAgICAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9hY2NvdW50cy9EaXNw
bGF5VW5sb2NrQ2FwdGNoYVxuIgotICAgICAgICAgICAgICAiYW5kIHZlcmlmeSB5b3UgYXJlIGEg
aHVtYW4uICBUaGVuIHRyeSBhZ2Fpbi4iKQotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGUu
cmVhc29uID09ICJOb3RWZXJpZmllZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAi
QWNjb3VudCBub3QgdmVyaWZpZWQuIgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGUucmVh
c29uID09ICJUZXJtc05vdEFncmVlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAi
VXNlciBoYXMgbm90IGFncmVlZCB0byBUT1MuIgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlm
IGUucmVhc29uID09ICJBY2NvdW50RGVsZXRlZCI6Ci0gICAgICAgICAgcHJpbnQgPj5zeXMuc3Rk
ZXJyLCAiVGhlIHVzZXIgYWNjb3VudCBoYXMgYmVlbiBkZWxldGVkLiIKLSAgICAgICAgICBicmVh
awotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiQWNjb3VudERpc2FibGVkIjoKLSAgICAgICAgICBw
cmludCA+PnN5cy5zdGRlcnIsICJUaGUgdXNlciBhY2NvdW50IGhhcyBiZWVuIGRpc2FibGVkLiIK
LSAgICAgICAgICBicmVhawotICAgICAgICBpZiBlLnJlYXNvbiA9PSAiU2VydmljZURpc2FibGVk
IjoKLSAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgiVGhlIHVzZXIncyBhY2Nlc3MgdG8g
dGhlIHNlcnZpY2UgaGFzIGJlZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
aXNhYmxlZC4iKQotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGUucmVhc29uID09ICJTZXJ2
aWNlVW5hdmFpbGFibGUiOgotICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIlRoZSBzZXJ2
aWNlIGlzIG5vdCBhdmFpbGFibGU7IHRyeSBhZ2FpbiBsYXRlci4iCi0gICAgICAgICAgYnJlYWsK
LSAgICAgICAgcmFpc2UKLSAgICAgIHNlbGYuX0dldEF1dGhDb29raWUoYXV0aF90b2tlbikKLSAg
ICAgIHJldHVybgotCi0gIGRlZiBTZW5kKHNlbGYsIHJlcXVlc3RfcGF0aCwgcGF5bG9hZD1Ob25l
LAotICAgICAgICAgICBjb250ZW50X3R5cGU9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCi0g
ICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwKLSAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICIiIlNl
bmRzIGFuIFJQQyBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UuCi0KLSAgICBBcmdzOgotICAgICAg
cmVxdWVzdF9wYXRoOiBUaGUgcGF0aCB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLCBlZyAvYXBpL2Fw
cHZlcnNpb24vY3JlYXRlLgotICAgICAgcGF5bG9hZDogVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3Qs
IG9yIE5vbmUgdG8gc2VuZCBhbiBlbXB0eSByZXF1ZXN0LgotICAgICAgY29udGVudF90eXBlOiBU
aGUgQ29udGVudC1UeXBlIGhlYWRlciB0byB1c2UuCi0gICAgICB0aW1lb3V0OiB0aW1lb3V0IGlu
IHNlY29uZHM7IGRlZmF1bHQgTm9uZSBpLmUuIG5vIHRpbWVvdXQuCi0gICAgICAgIChOb3RlOiBm
b3IgbGFyZ2UgcmVxdWVzdHMgb24gT1MgWCwgdGhlIHRpbWVvdXQgZG9lc24ndCB3b3JrIHJpZ2h0
LikKLSAgICAgIGt3YXJnczogQW55IGtleXdvcmQgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgaW50
byBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycy4KLQotICAgIFJldHVybnM6Ci0gICAgICBUaGUgcmVz
cG9uc2UgYm9keSwgYXMgYSBzdHJpbmcuCi0gICAgIiIiCi0gICAgIyBUT0RPOiBEb24ndCByZXF1
aXJlIGF1dGhlbnRpY2F0aW9uLiAgTGV0IHRoZSBzZXJ2ZXIgc2F5Ci0gICAgIyB3aGV0aGVyIGl0
IGlzIG5lY2Vzc2FyeS4KLSAgICBpZiBub3Qgc2VsZi5hdXRoZW50aWNhdGVkOgotICAgICAgc2Vs
Zi5fQXV0aGVudGljYXRlKCkKLQotICAgIG9sZF90aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1bHR0
aW1lb3V0KCkKLSAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dCkKLSAgICB0cnk6
Ci0gICAgICB0cmllcyA9IDAKLSAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHRyaWVzICs9IDEK
LSAgICAgICAgYXJncyA9IGRpY3Qoa3dhcmdzKQotICAgICAgICB1cmwgPSAiaHR0cDovLyVzJXMi
ICUgKHNlbGYuaG9zdCwgcmVxdWVzdF9wYXRoKQotICAgICAgICBpZiBhcmdzOgotICAgICAgICAg
IHVybCArPSAiPyIgKyB1cmxsaWIudXJsZW5jb2RlKGFyZ3MpCi0gICAgICAgIHJlcSA9IHNlbGYu
X0NyZWF0ZVJlcXVlc3QodXJsPXVybCwgZGF0YT1wYXlsb2FkKQotICAgICAgICByZXEuYWRkX2hl
YWRlcigiQ29udGVudC1UeXBlIiwgY29udGVudF90eXBlKQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgZiA9IHNlbGYub3BlbmVyLm9wZW4ocmVxKQotICAgICAgICAgIHJlc3BvbnNlID0gZi5yZWFk
KCkKLSAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKLSAgICAg
ICAgZXhjZXB0IHVybGxpYjIuSFRUUEVycm9yLCBlOgotICAgICAgICAgIGlmIHRyaWVzID4gMzoK
LSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgZWxpZiBlLmNvZGUgPT0gNDAxOgotICAgICAg
ICAgICAgc2VsZi5fQXV0aGVudGljYXRlKCkKLSMjICAgICAgICAgICBlbGlmIGUuY29kZSA+PSA1
MDAgYW5kIGUuY29kZSA8IDYwMDoKLSMjICAgICAgICAgICAgICMgU2VydmVyIEVycm9yIC0gdHJ5
IGFnYWluLgotIyMgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgcmFpc2UKLSAgICBmaW5hbGx5OgotICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0
KG9sZF90aW1lb3V0KQotCi0KLWNsYXNzIEh0dHBScGNTZXJ2ZXIoQWJzdHJhY3RScGNTZXJ2ZXIp
OgotICAiIiJQcm92aWRlcyBhIHNpbXBsaWZpZWQgUlBDLXN0eWxlIGludGVyZmFjZSBmb3IgSFRU
UCByZXF1ZXN0cy4iIiIKLQotICBkZWYgX0F1dGhlbnRpY2F0ZShzZWxmKToKLSAgICAiIiJTYXZl
IHRoZSBjb29raWUgamFyIGFmdGVyIGF1dGhlbnRpY2F0aW9uLiIiIgotICAgIHN1cGVyKEh0dHBS
cGNTZXJ2ZXIsIHNlbGYpLl9BdXRoZW50aWNhdGUoKQotICAgIGlmIHNlbGYuc2F2ZV9jb29raWVz
OgotICAgICAgU3RhdHVzVXBkYXRlKCJTYXZpbmcgYXV0aGVudGljYXRpb24gY29va2llcyB0byAl
cyIgJSBzZWxmLmNvb2tpZV9maWxlKQotICAgICAgc2VsZi5jb29raWVfamFyLnNhdmUoKQotCi0g
IGRlZiBfR2V0T3BlbmVyKHNlbGYpOgotICAgICIiIlJldHVybnMgYW4gT3BlbmVyRGlyZWN0b3Ig
dGhhdCBzdXBwb3J0cyBjb29raWVzIGFuZCBpZ25vcmVzIHJlZGlyZWN0cy4KLQotICAgIFJldHVy
bnM6Ci0gICAgICBBIHVybGxpYjIuT3BlbmVyRGlyZWN0b3Igb2JqZWN0LgotICAgICIiIgotICAg
IG9wZW5lciA9IHVybGxpYjIuT3BlbmVyRGlyZWN0b3IoKQotICAgIG9wZW5lci5hZGRfaGFuZGxl
cih1cmxsaWIyLlByb3h5SGFuZGxlcigpKQotICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIy
LlVua25vd25IYW5kbGVyKCkpCi0gICAgb3BlbmVyLmFkZF9oYW5kbGVyKHVybGxpYjIuSFRUUEhh
bmRsZXIoKSkKLSAgICBvcGVuZXIuYWRkX2hhbmRsZXIodXJsbGliMi5IVFRQRGVmYXVsdEVycm9y
SGFuZGxlcigpKQotICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBTSGFuZGxlcigp
KQotICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBFcnJvclByb2Nlc3NvcigpKQot
ICAgIGlmIHNlbGYuc2F2ZV9jb29raWVzOgotICAgICAgc2VsZi5jb29raWVfZmlsZSA9IG9zLnBh
dGguZXhwYW5kdXNlcigifi8uY29kZXJldmlld191cGxvYWRfY29va2llcyIpCi0gICAgICBzZWxm
LmNvb2tpZV9qYXIgPSBjb29raWVsaWIuTW96aWxsYUNvb2tpZUphcihzZWxmLmNvb2tpZV9maWxl
KQotICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5jb29raWVfZmlsZSk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICBzZWxmLmNvb2tpZV9qYXIubG9hZCgpCi0gICAgICAgICAgc2VsZi5hdXRo
ZW50aWNhdGVkID0gVHJ1ZQotICAgICAgICAgIFN0YXR1c1VwZGF0ZSgiTG9hZGVkIGF1dGhlbnRp
Y2F0aW9uIGNvb2tpZXMgZnJvbSAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNv
b2tpZV9maWxlKQotICAgICAgICBleGNlcHQgKGNvb2tpZWxpYi5Mb2FkRXJyb3IsIElPRXJyb3Ip
OgotICAgICAgICAgICMgRmFpbGVkIHRvIGxvYWQgY29va2llcyAtIGp1c3QgaWdub3JlIHRoZW0u
Ci0gICAgICAgICAgcGFzcwotICAgICAgZWxzZToKLSAgICAgICAgIyBDcmVhdGUgYW4gZW1wdHkg
Y29va2llIGZpbGUgd2l0aCBtb2RlIDYwMAotICAgICAgICBmZCA9IG9zLm9wZW4oc2VsZi5jb29r
aWVfZmlsZSwgb3MuT19DUkVBVCwgMDYwMCkKLSAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAj
IEFsd2F5cyBjaG1vZCB0aGUgY29va2llIGZpbGUKLSAgICAgIG9zLmNobW9kKHNlbGYuY29va2ll
X2ZpbGUsIDA2MDApCi0gICAgZWxzZToKLSAgICAgICMgRG9uJ3Qgc2F2ZSBjb29raWVzIGFjcm9z
cyBydW5zIG9mIHVwZGF0ZS5weS4KLSAgICAgIHNlbGYuY29va2llX2phciA9IGNvb2tpZWxpYi5D
b29raWVKYXIoKQotICAgIG9wZW5lci5hZGRfaGFuZGxlcih1cmxsaWIyLkhUVFBDb29raWVQcm9j
ZXNzb3Ioc2VsZi5jb29raWVfamFyKSkKLSAgICByZXR1cm4gb3BlbmVyCi0KLQotcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSIlcHJvZyBbb3B0aW9uc10gWy0tIGRpZmZfb3B0
aW9uc10iKQotcGFyc2VyLmFkZF9vcHRpb24oIi15IiwgIi0tYXNzdW1lX3llcyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICBkZXN0PSJhc3N1bWVfeWVzIiwgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9IkFzc3VtZSB0aGF0IHRoZSBhbnN3ZXIg
dG8geWVzL25vIHF1ZXN0aW9ucyBpcyAneWVzJy4iKQotIyBMb2dnaW5nCi1ncm91cCA9IHBhcnNl
ci5hZGRfb3B0aW9uX2dyb3VwKCJMb2dnaW5nIG9wdGlvbnMiKQotZ3JvdXAuYWRkX29wdGlvbigi
LXEiLCAiLS1xdWlldCIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0wLAotICAgICAgICAg
ICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgaGVscD0iUHJpbnQgZXJyb3JzIG9ubHkuIikKLWdyb3Vw
LmFkZF9vcHRpb24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25z
dD0yLAotICAgICAgICAgICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVmYXVsdD0xLAotICAgICAg
ICAgICAgICAgICBoZWxwPSJQcmludCBpbmZvIGxldmVsIGxvZ3MgKGRlZmF1bHQpLiIpCi1ncm91
cC5hZGRfb3B0aW9uKCItLW5vaXN5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PTMsCi0g
ICAgICAgICAgICAgICAgIGRlc3Q9InZlcmJvc2UiLCBoZWxwPSJQcmludCBhbGwgbG9ncy4iKQot
IyBSZXZpZXcgc2VydmVyCi1ncm91cCA9IHBhcnNlci5hZGRfb3B0aW9uX2dyb3VwKCJSZXZpZXcg
c2VydmVyIG9wdGlvbnMiKQotZ3JvdXAuYWRkX29wdGlvbigiLXMiLCAiLS1zZXJ2ZXIiLCBhY3Rp
b249InN0b3JlIiwgZGVzdD0ic2VydmVyIiwKLSAgICAgICAgICAgICAgICAgZGVmYXVsdD0iY29k
ZXJldmlldy5hcHBzcG90LmNvbSIsCi0gICAgICAgICAgICAgICAgIG1ldGF2YXI9IlNFUlZFUiIs
Ci0gICAgICAgICAgICAgICAgIGhlbHA9KCJUaGUgc2VydmVyIHRvIHVwbG9hZCB0by4gVGhlIGZv
cm1hdCBpcyBob3N0Wzpwb3J0XS4gIgotICAgICAgICAgICAgICAgICAgICAgICAiRGVmYXVsdHMg
dG8gJ2NvZGVyZXZpZXcuYXBwc3BvdC5jb20nLiIpKQotZ3JvdXAuYWRkX29wdGlvbigiLWUiLCAi
LS1lbWFpbCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJlbWFpbCIsCi0gICAgICAgICAgICAgICAg
IG1ldGF2YXI9IkVNQUlMIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJU
aGUgdXNlcm5hbWUgdG8gdXNlLiBXaWxsIHByb21wdCBpZiBvbWl0dGVkLiIpCi1ncm91cC5hZGRf
b3B0aW9uKCItSCIsICItLWhvc3QiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iaG9zdCIsCi0gICAg
ICAgICAgICAgICAgIG1ldGF2YXI9IkhPU1QiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGhlbHA9Ik92ZXJyaWRlcyB0aGUgSG9zdCBoZWFkZXIgc2VudCB3aXRoIGFsbCBSUENzLiIp
Ci1ncm91cC5hZGRfb3B0aW9uKCItLW5vX2Nvb2tpZXMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwK
LSAgICAgICAgICAgICAgICAgZGVzdD0ic2F2ZV9jb29raWVzIiwgZGVmYXVsdD1UcnVlLAotICAg
ICAgICAgICAgICAgICBoZWxwPSJEbyBub3Qgc2F2ZSBhdXRoZW50aWNhdGlvbiBjb29raWVzIHRv
IGxvY2FsIGRpc2suIikKLSMgSXNzdWUKLWdyb3VwID0gcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAo
Iklzc3VlIG9wdGlvbnMiKQotZ3JvdXAuYWRkX29wdGlvbigiLWQiLCAiLS1kZXNjcmlwdGlvbiIs
IGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJkZXNjcmlwdGlvbiIsCi0gICAgICAgICAgICAgICAgIG1l
dGF2YXI9IkRFU0NSSVBUSU9OIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxw
PSJPcHRpb25hbCBkZXNjcmlwdGlvbiB3aGVuIGNyZWF0aW5nIGFuIGlzc3VlLiIpCi1ncm91cC5h
ZGRfb3B0aW9uKCItZiIsICItLWRlc2NyaXB0aW9uX2ZpbGUiLCBhY3Rpb249InN0b3JlIiwKLSAg
ICAgICAgICAgICAgICAgZGVzdD0iZGVzY3JpcHRpb25fZmlsZSIsIG1ldGF2YXI9IkRFU0NSSVBU
SU9OX0ZJTEUiLAotICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgIGhlbHA9Ik9wdGlvbmFsIHBhdGggb2YgYSBmaWxlIHRoYXQgY29udGFpbnMgIgotICAgICAg
ICAgICAgICAgICAgICAgICJ0aGUgZGVzY3JpcHRpb24gd2hlbiBjcmVhdGluZyBhbiBpc3N1ZS4i
KQotZ3JvdXAuYWRkX29wdGlvbigiLXIiLCAiLS1yZXZpZXdlcnMiLCBhY3Rpb249InN0b3JlIiwg
ZGVzdD0icmV2aWV3ZXJzIiwKLSAgICAgICAgICAgICAgICAgbWV0YXZhcj0iUkVWSUVXRVJTIiwg
ZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJBZGQgcmV2aWV3ZXJzIChjb21t
YSBzZXBhcmF0ZWQgZW1haWwgYWRkcmVzc2VzKS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLS1jYyIs
IGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjYyIsCi0gICAgICAgICAgICAgICAgIG1ldGF2YXI9IkND
IiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBoZWxwPSJBZGQgQ0MgKGNvbW1hIHNl
cGFyYXRlZCBlbWFpbCBhZGRyZXNzZXMpLiIpCi0jIFVwbG9hZCBvcHRpb25zCi1ncm91cCA9IHBh
cnNlci5hZGRfb3B0aW9uX2dyb3VwKCJQYXRjaCBvcHRpb25zIikKLWdyb3VwLmFkZF9vcHRpb24o
Ii1tIiwgIi0tbWVzc2FnZSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJtZXNzYWdlIiwKLSAgICAg
ICAgICAgICAgICAgbWV0YXZhcj0iTUVTU0FHRSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgaGVscD0iQSBtZXNzYWdlIHRvIGlkZW50aWZ5IHRoZSBwYXRjaC4gIgotICAgICAgICAg
ICAgICAgICAgICAgICJXaWxsIHByb21wdCBpZiBvbWl0dGVkLiIpCi1ncm91cC5hZGRfb3B0aW9u
KCItaSIsICItLWlzc3VlIiwgdHlwZT0iaW50IiwgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAg
ICAgICAgIG1ldGF2YXI9IklTU1VFIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICBo
ZWxwPSJJc3N1ZSBudW1iZXIgdG8gd2hpY2ggdG8gYWRkLiBEZWZhdWx0cyB0byBuZXcgaXNzdWUu
IikKLWdyb3VwLmFkZF9vcHRpb24oIi0tZG93bmxvYWRfYmFzZSIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsCi0gICAgICAgICAgICAgICAgIGRlc3Q9ImRvd25sb2FkX2Jhc2UiLCBkZWZhdWx0PUZhbHNl
LAotICAgICAgICAgICAgICAgICBoZWxwPSJCYXNlIGZpbGVzIHdpbGwgYmUgZG93bmxvYWRlZCBi
eSB0aGUgc2VydmVyICIKLSAgICAgICAgICAgICAgICAgIihzaWRlLWJ5LXNpZGUgZGlmZnMgbWF5
IG5vdCB3b3JrIG9uIGZpbGVzIHdpdGggQ1JzKS4iKQotZ3JvdXAuYWRkX29wdGlvbigiLS1yZXYi
LCBhY3Rpb249InN0b3JlIiwgZGVzdD0icmV2aXNpb24iLAotICAgICAgICAgICAgICAgICBtZXRh
dmFyPSJSRVYiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgIGhlbHA9IkJyYW5jaC90
cmVlL3JldmlzaW9uIHRvIGRpZmYgYWdhaW5zdCAodXNlZCBieSBEVkNTKS4iKQotZ3JvdXAuYWRk
X29wdGlvbigiLS1zZW5kX21haWwiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAg
ICAgICBkZXN0PSJzZW5kX21haWwiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICBo
ZWxwPSJTZW5kIG5vdGlmaWNhdGlvbiBlbWFpbCB0byByZXZpZXdlcnMuIikKLQotCi1kZWYgR2V0
UnBjU2VydmVyKG9wdGlvbnMpOgotICAiIiJSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGFuIEFic3Ry
YWN0UnBjU2VydmVyLgotCi0gIFJldHVybnM6Ci0gICAgQSBuZXcgQWJzdHJhY3RScGNTZXJ2ZXIs
IG9uIHdoaWNoIFJQQyBjYWxscyBjYW4gYmUgbWFkZS4KLSAgIiIiCi0KLSAgcnBjX3NlcnZlcl9j
bGFzcyA9IEh0dHBScGNTZXJ2ZXIKLQotICBkZWYgR2V0VXNlckNyZWRlbnRpYWxzKCk6Ci0gICAg
IiIiUHJvbXB0cyB0aGUgdXNlciBmb3IgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIiIiCi0gICAg
ZW1haWwgPSBvcHRpb25zLmVtYWlsCi0gICAgaWYgZW1haWwgaXMgTm9uZToKLSAgICAgIGVtYWls
ID0gR2V0RW1haWwoIkVtYWlsIChsb2dpbiBmb3IgdXBsb2FkaW5nIHRvICVzKSIgJSBvcHRpb25z
LnNlcnZlcikKLSAgICBwYXNzd29yZCA9IGdldHBhc3MuZ2V0cGFzcygiUGFzc3dvcmQgZm9yICVz
OiAiICUgZW1haWwpCi0gICAgcmV0dXJuIChlbWFpbCwgcGFzc3dvcmQpCi0KLSAgIyBJZiB0aGlz
IGlzIHRoZSBkZXZfYXBwc2VydmVyLCB1c2UgZmFrZSBhdXRoZW50aWNhdGlvbi4KLSAgaG9zdCA9
IChvcHRpb25zLmhvc3Qgb3Igb3B0aW9ucy5zZXJ2ZXIpLmxvd2VyKCkKLSAgaWYgaG9zdCA9PSAi
bG9jYWxob3N0IiBvciBob3N0LnN0YXJ0c3dpdGgoImxvY2FsaG9zdDoiKToKLSAgICBlbWFpbCA9
IG9wdGlvbnMuZW1haWwKLSAgICBpZiBlbWFpbCBpcyBOb25lOgotICAgICAgZW1haWwgPSAidGVz
dEBleGFtcGxlLmNvbSIKLSAgICAgIGxvZ2dpbmcuaW5mbygiVXNpbmcgZGVidWcgdXNlciAlcy4g
IE92ZXJyaWRlIHdpdGggLS1lbWFpbCIgJSBlbWFpbCkKLSAgICBzZXJ2ZXIgPSBycGNfc2VydmVy
X2NsYXNzKAotICAgICAgICBvcHRpb25zLnNlcnZlciwKLSAgICAgICAgbGFtYmRhOiAoZW1haWws
ICJwYXNzd29yZCIpLAotICAgICAgICBob3N0X292ZXJyaWRlPW9wdGlvbnMuaG9zdCwKLSAgICAg
ICAgZXh0cmFfaGVhZGVycz17IkNvb2tpZSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICdkZXZf
YXBwc2VydmVyX2xvZ2luPSIlczpGYWxzZSInICUgZW1haWx9LAotICAgICAgICBzYXZlX2Nvb2tp
ZXM9b3B0aW9ucy5zYXZlX2Nvb2tpZXMpCi0gICAgIyBEb24ndCB0cnkgdG8gdGFsayB0byBDbGll
bnRMb2dpbi4KLSAgICBzZXJ2ZXIuYXV0aGVudGljYXRlZCA9IFRydWUKLSAgICByZXR1cm4gc2Vy
dmVyCi0KLSAgcmV0dXJuIHJwY19zZXJ2ZXJfY2xhc3Mob3B0aW9ucy5zZXJ2ZXIsIEdldFVzZXJD
cmVkZW50aWFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9vdmVycmlkZT1vcHRp
b25zLmhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfY29va2llcz1vcHRpb25z
LnNhdmVfY29va2llcykKLQotCi1kZWYgRW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZmllbGRzLCBm
aWxlcyk6Ci0gICIiIkVuY29kZSBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0YS4K
LQotICBBcmdzOgotICAgIGZpZWxkczogQSBzZXF1ZW5jZSBvZiAobmFtZSwgdmFsdWUpIGVsZW1l
bnRzIGZvciByZWd1bGFyIGZvcm0gZmllbGRzLgotICAgIGZpbGVzOiBBIHNlcXVlbmNlIG9mIChu
YW1lLCBmaWxlbmFtZSwgdmFsdWUpIGVsZW1lbnRzIGZvciBkYXRhIHRvIGJlCi0gICAgICAgICAg
IHVwbG9hZGVkIGFzIGZpbGVzLgotICBSZXR1cm5zOgotICAgIChjb250ZW50X3R5cGUsIGJvZHkp
IHJlYWR5IGZvciBodHRwbGliLkhUVFAgaW5zdGFuY2UuCi0KLSAgU291cmNlOgotICAgIGh0dHA6
Ly9hc3BuLmFjdGl2ZXN0YXRlLmNvbS9BU1BOL0Nvb2tib29rL1B5dGhvbi9SZWNpcGUvMTQ2MzA2
Ci0gICIiIgotICBCT1VOREFSWSA9ICctTS1BLUctSS1DLS0tQi1PLVUtTi1ELUEtUi1ZLScKLSAg
Q1JMRiA9ICdcclxuJwotICBsaW5lcyA9IFtdCi0gIGZvciAoa2V5LCB2YWx1ZSkgaW4gZmllbGRz
OgotICAgIGxpbmVzLmFwcGVuZCgnLS0nICsgQk9VTkRBUlkpCi0gICAgbGluZXMuYXBwZW5kKCdD
b250ZW50LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiVzIicgJSBrZXkpCi0gICAgbGlu
ZXMuYXBwZW5kKCcnKQotICAgIGxpbmVzLmFwcGVuZCh2YWx1ZSkKLSAgZm9yIChrZXksIGZpbGVu
YW1lLCB2YWx1ZSkgaW4gZmlsZXM6Ci0gICAgbGluZXMuYXBwZW5kKCctLScgKyBCT1VOREFSWSkK
LSAgICBsaW5lcy5hcHBlbmQoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0i
JXMiOyBmaWxlbmFtZT0iJXMiJyAlCi0gICAgICAgICAgICAgKGtleSwgZmlsZW5hbWUpKQotICAg
IGxpbmVzLmFwcGVuZCgnQ29udGVudC1UeXBlOiAlcycgJSBHZXRDb250ZW50VHlwZShmaWxlbmFt
ZSkpCi0gICAgbGluZXMuYXBwZW5kKCcnKQotICAgIGxpbmVzLmFwcGVuZCh2YWx1ZSkKLSAgbGlu
ZXMuYXBwZW5kKCctLScgKyBCT1VOREFSWSArICctLScpCi0gIGxpbmVzLmFwcGVuZCgnJykKLSAg
Ym9keSA9IENSTEYuam9pbihsaW5lcykKLSAgY29udGVudF90eXBlID0gJ211bHRpcGFydC9mb3Jt
LWRhdGE7IGJvdW5kYXJ5PSVzJyAlIEJPVU5EQVJZCi0gIHJldHVybiBjb250ZW50X3R5cGUsIGJv
ZHkKLQotCi1kZWYgR2V0Q29udGVudFR5cGUoZmlsZW5hbWUpOgotICAiIiJIZWxwZXIgdG8gZ3Vl
c3MgdGhlIGNvbnRlbnQtdHlwZSBmcm9tIHRoZSBmaWxlbmFtZS4iIiIKLSAgcmV0dXJuIG1pbWV0
eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXSBvciAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
JwotCi0KLSMgVXNlIGEgc2hlbGwgZm9yIHN1YmNvbW1hbmRzIG9uIFdpbmRvd3MgdG8gZ2V0IGEg
UEFUSCBzZWFyY2guCi11c2Vfc2hlbGwgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luIikK
LQotZGVmIFJ1blNoZWxsV2l0aFJldHVybkNvZGUoY29tbWFuZCwgcHJpbnRfb3V0cHV0PUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpOgot
ICAiIiJFeGVjdXRlcyBhIGNvbW1hbmQgYW5kIHJldHVybnMgdGhlIG91dHB1dCBmcm9tIHN0ZG91
dCBhbmQgdGhlIHJldHVybiBjb2RlLgotCi0gIEFyZ3M6Ci0gICAgY29tbWFuZDogQ29tbWFuZCB0
byBleGVjdXRlLgotICAgIHByaW50X291dHB1dDogSWYgVHJ1ZSwgdGhlIG91dHB1dCBpcyBwcmlu
dGVkIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgIElmIEZhbHNlLCBib3RoIHN0ZG91dCBh
bmQgc3RkZXJyIGFyZSBpZ25vcmVkLgotICAgIHVuaXZlcnNhbF9uZXdsaW5lczogVXNlIHVuaXZl
cnNhbF9uZXdsaW5lcyBmbGFnIChkZWZhdWx0OiBUcnVlKS4KLQotICBSZXR1cm5zOgotICAgIFR1
cGxlIChvdXRwdXQsIHJldHVybiBjb2RlKQotICAiIiIKLSAgbG9nZ2luZy5pbmZvKCJSdW5uaW5n
ICVzIiwgY29tbWFuZCkKLSAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgc2hlbGw9dXNlX3NoZWxsLCB1bml2ZXJzYWxfbmV3bGluZXM9dW5pdmVyc2FsX25ld2xp
bmVzKQotICBpZiBwcmludF9vdXRwdXQ6Ci0gICAgb3V0cHV0X2FycmF5ID0gW10KLSAgICB3aGls
ZSBUcnVlOgotICAgICAgbGluZSA9IHAuc3Rkb3V0LnJlYWRsaW5lKCkKLSAgICAgIGlmIG5vdCBs
aW5lOgotICAgICAgICBicmVhawotICAgICAgcHJpbnQgbGluZS5zdHJpcCgiXG4iKQotICAgICAg
b3V0cHV0X2FycmF5LmFwcGVuZChsaW5lKQotICAgIG91dHB1dCA9ICIiLmpvaW4ob3V0cHV0X2Fy
cmF5KQotICBlbHNlOgotICAgIG91dHB1dCA9IHAuc3Rkb3V0LnJlYWQoKQotICBwLndhaXQoKQot
ICBlcnJvdXQgPSBwLnN0ZGVyci5yZWFkKCkKLSAgaWYgcHJpbnRfb3V0cHV0IGFuZCBlcnJvdXQ6
Ci0gICAgcHJpbnQgPj5zeXMuc3RkZXJyLCBlcnJvdXQKLSAgcC5zdGRvdXQuY2xvc2UoKQotICBw
LnN0ZGVyci5jbG9zZSgpCi0gIHJldHVybiBvdXRwdXQsIHAucmV0dXJuY29kZQotCi0KLWRlZiBS
dW5TaGVsbChjb21tYW5kLCBzaWxlbnRfb2s9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVl
LAotICAgICAgICAgICAgIHByaW50X291dHB1dD1GYWxzZSk6Ci0gIGRhdGEsIHJldGNvZGUgPSBS
dW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNvbW1hbmQsIHByaW50X291dHB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzKQotICBpZiBy
ZXRjb2RlOgotICAgIEVycm9yRXhpdCgiR290IGVycm9yIHN0YXR1cyBmcm9tICVzOlxuJXMiICUg
KGNvbW1hbmQsIGRhdGEpKQotICBpZiBub3Qgc2lsZW50X29rIGFuZCBub3QgZGF0YToKLSAgICBF
cnJvckV4aXQoIk5vIG91dHB1dCBmcm9tICVzIiAlIGNvbW1hbmQpCi0gIHJldHVybiBkYXRhCi0K
LQotY2xhc3MgVmVyc2lvbkNvbnRyb2xTeXN0ZW0ob2JqZWN0KToKLSAgIiIiQWJzdHJhY3QgYmFz
ZSBjbGFzcyBwcm92aWRpbmcgYW4gaW50ZXJmYWNlIHRvIHRoZSBWQ1MuIiIiCi0KLSAgZGVmIF9f
aW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICIiIkNvbnN0cnVjdG9yLgotCi0gICAgQXJnczoK
LSAgICAgIG9wdGlvbnM6IENvbW1hbmQgbGluZSBvcHRpb25zLgotICAgICIiIgotICAgIHNlbGYu
b3B0aW9ucyA9IG9wdGlvbnMKLQotICBkZWYgR2VuZXJhdGVEaWZmKHNlbGYsIGFyZ3MpOgotICAg
ICIiIlJldHVybiB0aGUgY3VycmVudCBkaWZmIGFzIGEgc3RyaW5nLgotCi0gICAgQXJnczoKLSAg
ICAgIGFyZ3M6IEV4dHJhIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBkaWZmIGNvbW1hbmQuCi0g
ICAgIiIiCi0gICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKLSAgICAgICAgImFic3RyYWN0
IG1ldGhvZCAtLSBzdWJjbGFzcyAlcyBtdXN0IG92ZXJyaWRlIiAlIHNlbGYuX19jbGFzc19fKQot
Ci0gIGRlZiBHZXRVbmtub3duRmlsZXMoc2VsZik6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBm
aWxlcyB1bmtub3duIHRvIHRoZSBWQ1MuIiIiCi0gICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cigKLSAgICAgICAgImFic3RyYWN0IG1ldGhvZCAtLSBzdWJjbGFzcyAlcyBtdXN0IG92ZXJyaWRl
IiAlIHNlbGYuX19jbGFzc19fKQotCi0gIGRlZiBDaGVja0ZvclVua25vd25GaWxlcyhzZWxmKToK
LSAgICAiIiJTaG93IGFuICJhcmUgeW91IHN1cmU/IiBwcm9tcHQgaWYgdGhlcmUgYXJlIHVua25v
d24gZmlsZXMuIiIiCi0gICAgdW5rbm93bl9maWxlcyA9IHNlbGYuR2V0VW5rbm93bkZpbGVzKCkK
LSAgICBpZiB1bmtub3duX2ZpbGVzOgotICAgICAgcHJpbnQgIlRoZSBmb2xsb3dpbmcgZmlsZXMg
YXJlIG5vdCBhZGRlZCB0byB2ZXJzaW9uIGNvbnRyb2w6IgotICAgICAgZm9yIGxpbmUgaW4gdW5r
bm93bl9maWxlczoKLSAgICAgICAgcHJpbnQgbGluZQotICAgICAgcHJvbXB0ID0gIkFyZSB5b3Ug
c3VyZSB0byBjb250aW51ZT8oeS9OKSAiCi0gICAgICBhbnN3ZXIgPSByYXdfaW5wdXQocHJvbXB0
KS5zdHJpcCgpCi0gICAgICBpZiBhbnN3ZXIgIT0gInkiOgotICAgICAgICBFcnJvckV4aXQoIlVz
ZXIgYWJvcnRlZCIpCi0KLSAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAi
IiJHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIHVwc3RyZWFtIHZlcnNpb24gb2YgYSBmaWxlLgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUgKGJhc2VfY29udGVudCwgbmV3X2NvbnRlbnQsIGlz
X2JpbmFyeSwgc3RhdHVzKQotICAgICAgICBiYXNlX2NvbnRlbnQ6IFRoZSBjb250ZW50cyBvZiB0
aGUgYmFzZSBmaWxlLgotICAgICAgICBuZXdfY29udGVudDogRm9yIHRleHQgZmlsZXMsIHRoaXMg
aXMgZW1wdHkuICBGb3IgYmluYXJ5IGZpbGVzLCB0aGlzIGlzCi0gICAgICAgICAgdGhlIGNvbnRl
bnRzIG9mIHRoZSBuZXcgZmlsZSwgc2luY2UgdGhlIGRpZmYgb3V0cHV0IHdvbid0IGNvbnRhaW4K
LSAgICAgICAgICBpbmZvcm1hdGlvbiB0byByZWNvbnN0cnVjdCB0aGUgY3VycmVudCBmaWxlLgot
ICAgICAgICBpc19iaW5hcnk6IFRydWUgaWZmIHRoZSBmaWxlIGlzIGJpbmFyeS4KLSAgICAgICAg
c3RhdHVzOiBUaGUgc3RhdHVzIG9mIHRoZSBmaWxlLgotICAgICIiIgotCi0gICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigKLSAgICAgICAgImFic3RyYWN0IG1ldGhvZCAtLSBzdWJjbGFzcyAl
cyBtdXN0IG92ZXJyaWRlIiAlIHNlbGYuX19jbGFzc19fKQotCi0KLSAgZGVmIEdldEJhc2VGaWxl
cyhzZWxmLCBkaWZmKToKLSAgICAiIiJIZWxwZXIgdGhhdCBjYWxscyBHZXRCYXNlIGZpbGUgZm9y
IGVhY2ggZmlsZSBpbiB0aGUgcGF0Y2guCi0KLSAgICBSZXR1cm5zOgotICAgICAgQSBkaWN0aW9u
YXJ5IHRoYXQgbWFwcyBmcm9tIGZpbGVuYW1lIHRvIEdldEJhc2VGaWxlJ3MgdHVwbGUuICBGaWxl
bmFtZXMKLSAgICAgIGFyZSByZXRyaWV2ZWQgYmFzZWQgb24gbGluZXMgdGhhdCBzdGFydCB3aXRo
ICJJbmRleDoiIG9yCi0gICAgICAiUHJvcGVydHkgY2hhbmdlcyBvbjoiLgotICAgICIiIgotICAg
IGZpbGVzID0ge30KLSAgICBmb3IgbGluZSBpbiBkaWZmLnNwbGl0bGluZXMoVHJ1ZSk6Ci0gICAg
ICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0luZGV4OicpIG9yIGxpbmUuc3RhcnRzd2l0aCgnUHJvcGVy
dHkgY2hhbmdlcyBvbjonKToKLSAgICAgICAgdW51c2VkLCBmaWxlbmFtZSA9IGxpbmUuc3BsaXQo
JzonLCAxKQotICAgICAgICAjIE9uIFdpbmRvd3MgaWYgYSBmaWxlIGhhcyBwcm9wZXJ0eSBjaGFu
Z2VzIGl0cyBmaWxlbmFtZSB1c2VzICdcJwotICAgICAgICAjIGluc3RlYWQgb2YgJy8nLgotICAg
ICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkucmVwbGFjZSgnXFwnLCAnLycpCi0gICAg
ICAgIGZpbGVzW2ZpbGVuYW1lXSA9IHNlbGYuR2V0QmFzZUZpbGUoZmlsZW5hbWUpCi0gICAgcmV0
dXJuIGZpbGVzCi0KLQotICBkZWYgVXBsb2FkQmFzZUZpbGVzKHNlbGYsIGlzc3VlLCBycGNfc2Vy
dmVyLCBwYXRjaF9saXN0LCBwYXRjaHNldCwgb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICBmaWxlcyk6Ci0gICAgIiIiVXBsb2FkcyB0aGUgYmFzZSBmaWxlcyAoYW5kIGlmIG5lY2Vzc2Fy
eSwgdGhlIGN1cnJlbnQgb25lcyBhcyB3ZWxsKS4iIiIKLQotICAgIGRlZiBVcGxvYWRGaWxlKGZp
bGVuYW1lLCBmaWxlX2lkLCBjb250ZW50LCBpc19iaW5hcnksIHN0YXR1cywgaXNfYmFzZSk6Ci0g
ICAgICAiIiJVcGxvYWRzIGEgZmlsZSB0byB0aGUgc2VydmVyLiIiIgotICAgICAgZmlsZV90b29f
bGFyZ2UgPSBGYWxzZQotICAgICAgaWYgaXNfYmFzZToKLSAgICAgICAgdHlwZSA9ICJiYXNlIgot
ICAgICAgZWxzZToKLSAgICAgICAgdHlwZSA9ICJjdXJyZW50IgotICAgICAgaWYgbGVuKGNvbnRl
bnQpID4gTUFYX1VQTE9BRF9TSVpFOgotICAgICAgICBwcmludCAoIk5vdCB1cGxvYWRpbmcgdGhl
ICVzIGZpbGUgZm9yICVzIGJlY2F1c2UgaXQncyB0b28gbGFyZ2UuIiAlCi0gICAgICAgICAgICAg
ICAodHlwZSwgZmlsZW5hbWUpKQotICAgICAgICBmaWxlX3Rvb19sYXJnZSA9IFRydWUKLSAgICAg
ICAgY29udGVudCA9ICIiCi0gICAgICBjaGVja3N1bSA9IG1kNS5uZXcoY29udGVudCkuaGV4ZGln
ZXN0KCkKLSAgICAgIGlmIG9wdGlvbnMudmVyYm9zZSA+IDAgYW5kIG5vdCBmaWxlX3Rvb19sYXJn
ZToKLSAgICAgICAgcHJpbnQgIlVwbG9hZGluZyAlcyBmaWxlIGZvciAlcyIgJSAodHlwZSwgZmls
ZW5hbWUpCi0gICAgICB1cmwgPSAiLyVkL3VwbG9hZF9jb250ZW50LyVkLyVkIiAlIChpbnQoaXNz
dWUpLCBpbnQocGF0Y2hzZXQpLCBmaWxlX2lkKQotICAgICAgZm9ybV9maWVsZHMgPSBbKCJmaWxl
bmFtZSIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICgic3RhdHVzIiwgc3RhdHVz
KSwKLSAgICAgICAgICAgICAgICAgICAgICgiY2hlY2tzdW0iLCBjaGVja3N1bSksCi0gICAgICAg
ICAgICAgICAgICAgICAoImlzX2JpbmFyeSIsIHN0cihpc19iaW5hcnkpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICgiaXNfY3VycmVudCIsIHN0cihub3QgaXNfYmFzZSkpLAotICAgICAgICAgICAg
ICAgICAgICBdCi0gICAgICBpZiBmaWxlX3Rvb19sYXJnZToKLSAgICAgICAgZm9ybV9maWVsZHMu
YXBwZW5kKCgiZmlsZV90b29fbGFyZ2UiLCAiMSIpKQotICAgICAgaWYgb3B0aW9ucy5lbWFpbDoK
LSAgICAgICAgZm9ybV9maWVsZHMuYXBwZW5kKCgidXNlciIsIG9wdGlvbnMuZW1haWwpKQotICAg
ICAgY3R5cGUsIGJvZHkgPSBFbmNvZGVNdWx0aXBhcnRGb3JtRGF0YShmb3JtX2ZpZWxkcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygiZGF0YSIsIGZpbGVu
YW1lLCBjb250ZW50KV0pCi0gICAgICByZXNwb25zZV9ib2R5ID0gcnBjX3NlcnZlci5TZW5kKHVy
bCwgYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90
eXBlPWN0eXBlKQotICAgICAgaWYgbm90IHJlc3BvbnNlX2JvZHkuc3RhcnRzd2l0aCgiT0siKToK
LSAgICAgICAgU3RhdHVzVXBkYXRlKCIgIC0tPiAlcyIgJSByZXNwb25zZV9ib2R5KQotICAgICAg
ICBzeXMuZXhpdCgxKQotCi0gICAgcGF0Y2hlcyA9IGRpY3QoKQotICAgIFtwYXRjaGVzLnNldGRl
ZmF1bHQodiwgaykgZm9yIGssIHYgaW4gcGF0Y2hfbGlzdF0KLSAgICBmb3IgZmlsZW5hbWUgaW4g
cGF0Y2hlcy5rZXlzKCk6Ci0gICAgICBiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19iaW5h
cnksIHN0YXR1cyA9IGZpbGVzW2ZpbGVuYW1lXQotICAgICAgZmlsZV9pZF9zdHIgPSBwYXRjaGVz
LmdldChmaWxlbmFtZSkKLSAgICAgIGlmIGZpbGVfaWRfc3RyLmZpbmQoIm5vYmFzZSIpICE9IC0x
OgotICAgICAgICBiYXNlX2NvbnRlbnQgPSBOb25lCi0gICAgICAgIGZpbGVfaWRfc3RyID0gZmls
ZV9pZF9zdHJbZmlsZV9pZF9zdHIucmZpbmQoIl8iKSArIDE6XQotICAgICAgZmlsZV9pZCA9IGlu
dChmaWxlX2lkX3N0cikKLSAgICAgIGlmIGJhc2VfY29udGVudCAhPSBOb25lOgotICAgICAgICBV
cGxvYWRGaWxlKGZpbGVuYW1lLCBmaWxlX2lkLCBiYXNlX2NvbnRlbnQsIGlzX2JpbmFyeSwgc3Rh
dHVzLCBUcnVlKQotICAgICAgaWYgbmV3X2NvbnRlbnQgIT0gTm9uZToKLSAgICAgICAgVXBsb2Fk
RmlsZShmaWxlbmFtZSwgZmlsZV9pZCwgbmV3X2NvbnRlbnQsIGlzX2JpbmFyeSwgc3RhdHVzLCBG
YWxzZSkKLQotICBkZWYgSXNJbWFnZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgIiIiUmV0dXJucyB0
cnVlIGlmIHRoZSBmaWxlbmFtZSBoYXMgYW4gaW1hZ2UgZXh0ZW5zaW9uLiIiIgotICAgIG1pbWV0
eXBlID0gIG1pbWV0eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXQotICAgIGlmIG5vdCBtaW1l
dHlwZToKLSAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBtaW1ldHlwZS5zdGFydHN3aXRo
KCJpbWFnZS8iKQotCi0KLWNsYXNzIFN1YnZlcnNpb25WQ1MoVmVyc2lvbkNvbnRyb2xTeXN0ZW0p
OgotICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVmVyc2lvbkNvbnRyb2xTeXN0ZW0gaW50ZXJm
YWNlIGZvciBTdWJ2ZXJzaW9uLiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToK
LSAgICBzdXBlcihTdWJ2ZXJzaW9uVkNTLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zKQotICAgIGlm
IHNlbGYub3B0aW9ucy5yZXZpc2lvbjoKLSAgICAgIG1hdGNoID0gcmUubWF0Y2gociIoXGQrKSg6
KFxkKykpPyIsIHNlbGYub3B0aW9ucy5yZXZpc2lvbikKLSAgICAgIGlmIG5vdCBtYXRjaDoKLSAg
ICAgICAgRXJyb3JFeGl0KCJJbnZhbGlkIFN1YnZlcnNpb24gcmV2aXNpb24gJXMuIiAlIHNlbGYu
b3B0aW9ucy5yZXZpc2lvbikKLSAgICAgIHNlbGYucmV2X3N0YXJ0ID0gbWF0Y2guZ3JvdXAoMSkK
LSAgICAgIHNlbGYucmV2X2VuZCA9IG1hdGNoLmdyb3VwKDMpCi0gICAgZWxzZToKLSAgICAgIHNl
bGYucmV2X3N0YXJ0ID0gc2VsZi5yZXZfZW5kID0gTm9uZQotICAgICMgQ2FjaGUgb3V0cHV0IGZy
b20gInN2biBsaXN0IC1yIFJFVk5PIGRpcm5hbWUiLgotICAgICMgS2V5czogZGlybmFtZSwgVmFs
dWVzOiAyLXR1cGxlIChvdXB1dCBmb3Igc3RhcnQgcmV2IGFuZCBlbmQgcmV2KS4KLSAgICBzZWxm
LnN2bmxzX2NhY2hlID0ge30KLSAgICAjIFNWTiBiYXNlIFVSTCBpcyByZXF1aXJlZCB0byBmZXRj
aCBmaWxlcyBkZWxldGVkIGluIGFuIG9sZGVyIHJldmlzaW9uLgotICAgICMgUmVzdWx0IGlzIGNh
Y2hlZCB0byBub3QgZ3Vlc3MgaXQgb3ZlciBhbmQgb3ZlciBhZ2FpbiBpbiBHZXRCYXNlRmlsZSgp
LgotICAgIHJlcXVpcmVkID0gc2VsZi5vcHRpb25zLmRvd25sb2FkX2Jhc2Ugb3Igc2VsZi5vcHRp
b25zLnJldmlzaW9uIGlzIG5vdCBOb25lCi0gICAgc2VsZi5zdm5fYmFzZSA9IHNlbGYuX0d1ZXNz
QmFzZShyZXF1aXJlZCkKLQotICBkZWYgR3Vlc3NCYXNlKHNlbGYsIHJlcXVpcmVkKToKLSAgICAi
IiJXcmFwcGVyIGZvciBfR3Vlc3NCYXNlLiIiIgotICAgIHJldHVybiBzZWxmLnN2bl9iYXNlCi0K
LSAgZGVmIF9HdWVzc0Jhc2Uoc2VsZiwgcmVxdWlyZWQpOgotICAgICIiIlJldHVybnMgdGhlIFNW
TiBiYXNlIFVSTC4KLQotICAgIEFyZ3M6Ci0gICAgICByZXF1aXJlZDogSWYgdHJ1ZSwgZXhpdHMg
aWYgdGhlIHVybCBjYW4ndCBiZSBndWVzc2VkLCBvdGhlcndpc2UgTm9uZSBpcwotICAgICAgICBy
ZXR1cm5lZC4KLSAgICAiIiIKLSAgICBpbmZvID0gUnVuU2hlbGwoWyJzdm4iLCAiaW5mbyJdKQot
ICAgIGZvciBsaW5lIGluIGluZm8uc3BsaXRsaW5lcygpOgotICAgICAgd29yZHMgPSBsaW5lLnNw
bGl0KCkKLSAgICAgIGlmIGxlbih3b3JkcykgPT0gMiBhbmQgd29yZHNbMF0gPT0gIlVSTDoiOgot
ICAgICAgICB1cmwgPSB3b3Jkc1sxXQotICAgICAgICBzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFy
YW1zLCBxdWVyeSwgZnJhZ21lbnQgPSB1cmxwYXJzZS51cmxwYXJzZSh1cmwpCi0gICAgICAgIHVz
ZXJuYW1lLCBuZXRsb2MgPSB1cmxsaWIuc3BsaXR1c2VyKG5ldGxvYykKLSAgICAgICAgaWYgdXNl
cm5hbWU6Ci0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJSZW1vdmVkIHVzZXJuYW1lIGZyb20gYmFz
ZSBVUkwiKQotICAgICAgICBpZiBuZXRsb2MuZW5kc3dpdGgoInN2bi5weXRob24ub3JnIik6Ci0g
ICAgICAgICAgaWYgbmV0bG9jID09ICJzdm4ucHl0aG9uLm9yZyI6Ci0gICAgICAgICAgICBpZiBw
YXRoLnN0YXJ0c3dpdGgoIi9wcm9qZWN0cy8iKToKLSAgICAgICAgICAgICAgcGF0aCA9IHBhdGhb
OTpdCi0gICAgICAgICAgZWxpZiBuZXRsb2MgIT0gInB5dGhvbmRldkBzdm4ucHl0aG9uLm9yZyI6
Ci0gICAgICAgICAgICBFcnJvckV4aXQoIlVucmVjb2duaXplZCBQeXRob24gVVJMOiAlcyIgJSB1
cmwpCi0gICAgICAgICAgYmFzZSA9ICJodHRwOi8vc3ZuLnB5dGhvbi5vcmcvdmlldy8qY2hlY2tv
dXQqJXMvIiAlIHBhdGgKLSAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgUHl0aG9uIGJh
c2UgPSAlcyIsIGJhc2UpCi0gICAgICAgIGVsaWYgbmV0bG9jLmVuZHN3aXRoKCJzdm4uY29sbGFi
Lm5ldCIpOgotICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgiL3JlcG9zLyIpOgotICAgICAg
ICAgICAgcGF0aCA9IHBhdGhbNjpdCi0gICAgICAgICAgYmFzZSA9ICJodHRwOi8vc3ZuLmNvbGxh
Yi5uZXQvdmlld3ZjLypjaGVja291dColcy8iICUgcGF0aAotICAgICAgICAgIGxvZ2dpbmcuaW5m
bygiR3Vlc3NlZCBDb2xsYWJOZXQgYmFzZSA9ICVzIiwgYmFzZSkKLSAgICAgICAgZWxpZiBuZXRs
b2MuZW5kc3dpdGgoIi5nb29nbGVjb2RlLmNvbSIpOgotICAgICAgICAgIHBhdGggPSBwYXRoICsg
Ii8iCi0gICAgICAgICAgYmFzZSA9IHVybHBhcnNlLnVybHVucGFyc2UoKCJodHRwIiwgbmV0bG9j
LCBwYXRoLCBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
ZXJ5LCBmcmFnbWVudCkpCi0gICAgICAgICAgbG9nZ2luZy5pbmZvKCJHdWVzc2VkIEdvb2dsZSBD
b2RlIGJhc2UgPSAlcyIsIGJhc2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgcGF0aCA9IHBh
dGggKyAiLyIKLSAgICAgICAgICBiYXNlID0gdXJscGFyc2UudXJsdW5wYXJzZSgoc2NoZW1lLCBu
ZXRsb2MsIHBhdGgsIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcXVlcnksIGZyYWdtZW50KSkKLSAgICAgICAgICBsb2dnaW5nLmluZm8oIkd1ZXNzZWQgYmFz
ZSA9ICVzIiwgYmFzZSkKLSAgICAgICAgcmV0dXJuIGJhc2UKLSAgICBpZiByZXF1aXJlZDoKLSAg
ICAgIEVycm9yRXhpdCgiQ2FuJ3QgZmluZCBVUkwgaW4gb3V0cHV0IGZyb20gc3ZuIGluZm8iKQot
ICAgIHJldHVybiBOb25lCi0KLSAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBhcmdzKToKLSAgICBj
bWQgPSBbInN2biIsICJkaWZmIl0KLSAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246Ci0gICAg
ICBjbWQgKz0gWyItciIsIHNlbGYub3B0aW9ucy5yZXZpc2lvbl0KLSAgICBjbWQuZXh0ZW5kKGFy
Z3MpCi0gICAgZGF0YSA9IFJ1blNoZWxsKGNtZCkKLSAgICBjb3VudCA9IDAKLSAgICBmb3IgbGlu
ZSBpbiBkYXRhLnNwbGl0bGluZXMoKToKLSAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiSW5kZXg6
Iikgb3IgbGluZS5zdGFydHN3aXRoKCJQcm9wZXJ0eSBjaGFuZ2VzIG9uOiIpOgotICAgICAgICBj
b3VudCArPSAxCi0gICAgICAgIGxvZ2dpbmcuaW5mbyhsaW5lKQotICAgIGlmIG5vdCBjb3VudDoK
LSAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQgcGF0Y2hlcyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBz
dm4gZGlmZiIpCi0gICAgcmV0dXJuIGRhdGEKLQotICBkZWYgX0NvbGxhcHNlS2V5d29yZHMoc2Vs
ZiwgY29udGVudCwga2V5d29yZF9zdHIpOgotICAgICIiIkNvbGxhcHNlcyBTVk4ga2V5d29yZHMu
IiIiCi0gICAgIyBzdm4gY2F0IHRyYW5zbGF0ZXMga2V5d29yZHMgYnV0IHN2biBkaWZmIGRvZXNu
J3QuIEFzIGEgcmVzdWx0IG9mIHRoaXMKLSAgICAjIGJlaGF2aW9yIHBhdGNoaW5nLlBhdGNoQ2h1
bmtzKCkgZmFpbHMgd2l0aCBhIGNodW5rIG1pc21hdGNoIGVycm9yLgotICAgICMgVGhpcyBwYXJ0
IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgdGhlIFJldmlldyBCb2FyZCBkZXZlbG9wbWVudCB0
ZWFtCi0gICAgIyB3aG8gaGFkIHRoZSBzYW1lIHByb2JsZW0gKGh0dHA6Ly9yZXZpZXdzLnJldmll
dy1ib2FyZC5vcmcvci8yNzYvKS4KLSAgICAjIE1hcHBpbmcgb2Yga2V5d29yZHMgdG8ga25vd24g
YWxpYXNlcwotICAgIHN2bl9rZXl3b3JkcyA9IHsKLSAgICAgICMgU3RhbmRhcmQga2V5d29yZHMK
LSAgICAgICdEYXRlJzogICAgICAgICAgICAgICAgWydEYXRlJywgJ0xhc3RDaGFuZ2VkRGF0ZSdd
LAotICAgICAgJ1JldmlzaW9uJzogICAgICAgICAgICBbJ1JldmlzaW9uJywgJ0xhc3RDaGFuZ2Vk
UmV2aXNpb24nLCAnUmV2J10sCi0gICAgICAnQXV0aG9yJzogICAgICAgICAgICAgIFsnQXV0aG9y
JywgJ0xhc3RDaGFuZ2VkQnknXSwKLSAgICAgICdIZWFkVVJMJzogICAgICAgICAgICAgWydIZWFk
VVJMJywgJ1VSTCddLAotICAgICAgJ0lkJzogICAgICAgICAgICAgICAgICBbJ0lkJ10sCi0KLSAg
ICAgICMgQWxpYXNlcwotICAgICAgJ0xhc3RDaGFuZ2VkRGF0ZSc6ICAgICBbJ0xhc3RDaGFuZ2Vk
RGF0ZScsICdEYXRlJ10sCi0gICAgICAnTGFzdENoYW5nZWRSZXZpc2lvbic6IFsnTGFzdENoYW5n
ZWRSZXZpc2lvbicsICdSZXYnLCAnUmV2aXNpb24nXSwKLSAgICAgICdMYXN0Q2hhbmdlZEJ5Jzog
ICAgICAgWydMYXN0Q2hhbmdlZEJ5JywgJ0F1dGhvciddLAotICAgICAgJ1VSTCc6ICAgICAgICAg
ICAgICAgICBbJ1VSTCcsICdIZWFkVVJMJ10sCi0gICAgfQotCi0gICAgZGVmIHJlcGwobSk6Ci0g
ICAgICAgaWYgbS5ncm91cCgyKToKLSAgICAgICAgIHJldHVybiAiJCVzOjolcyQiICUgKG0uZ3Jv
dXAoMSksICIgIiAqIGxlbihtLmdyb3VwKDMpKSkKLSAgICAgICByZXR1cm4gIiQlcyQiICUgbS5n
cm91cCgxKQotICAgIGtleXdvcmRzID0gW2tleXdvcmQKLSAgICAgICAgICAgICAgICBmb3IgbmFt
ZSBpbiBrZXl3b3JkX3N0ci5zcGxpdCgiICIpCi0gICAgICAgICAgICAgICAgZm9yIGtleXdvcmQg
aW4gc3ZuX2tleXdvcmRzLmdldChuYW1lLCBbXSldCi0gICAgcmV0dXJuIHJlLnN1YihyIlwkKCVz
KTooOj8pKFteXCRdKylcJCIgJSAnfCcuam9pbihrZXl3b3JkcyksIHJlcGwsIGNvbnRlbnQpCi0K
LSAgZGVmIEdldFVua25vd25GaWxlcyhzZWxmKToKLSAgICBzdGF0dXMgPSBSdW5TaGVsbChbInN2
biIsICJzdGF0dXMiLCAiLS1pZ25vcmUtZXh0ZXJuYWxzIl0sIHNpbGVudF9vaz1UcnVlKQotICAg
IHVua25vd25fZmlsZXMgPSBbXQotICAgIGZvciBsaW5lIGluIHN0YXR1cy5zcGxpdCgiXG4iKToK
LSAgICAgIGlmIGxpbmUgYW5kIGxpbmVbMF0gPT0gIj8iOgotICAgICAgICB1bmtub3duX2ZpbGVz
LmFwcGVuZChsaW5lKQotICAgIHJldHVybiB1bmtub3duX2ZpbGVzCi0KLSAgZGVmIFJlYWRGaWxl
KHNlbGYsIGZpbGVuYW1lKToKLSAgICAiIiJSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBhIGZpbGUu
IiIiCi0gICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICdyYicpCi0gICAgcmVzdWx0ID0gIiIKLSAg
ICB0cnk6Ci0gICAgICByZXN1bHQgPSBmaWxlLnJlYWQoKQotICAgIGZpbmFsbHk6Ci0gICAgICBm
aWxlLmNsb3NlKCkKLSAgICByZXR1cm4gcmVzdWx0Ci0KLSAgZGVmIEdldFN0YXR1cyhzZWxmLCBm
aWxlbmFtZSk6Ci0gICAgIiIiUmV0dXJucyB0aGUgc3RhdHVzIG9mIGEgZmlsZS4iIiIKLSAgICBp
ZiBub3Qgc2VsZi5vcHRpb25zLnJldmlzaW9uOgotICAgICAgc3RhdHVzID0gUnVuU2hlbGwoWyJz
dm4iLCAic3RhdHVzIiwgIi0taWdub3JlLWV4dGVybmFscyIsIGZpbGVuYW1lXSkKLSAgICAgIGlm
IG5vdCBzdGF0dXM6Ci0gICAgICAgIEVycm9yRXhpdCgic3ZuIHN0YXR1cyByZXR1cm5lZCBubyBv
dXRwdXQgZm9yICVzIiAlIGZpbGVuYW1lKQotICAgICAgc3RhdHVzX2xpbmVzID0gc3RhdHVzLnNw
bGl0bGluZXMoKQotICAgICAgIyBJZiBmaWxlIGlzIGluIGEgY2wsIHRoZSBvdXRwdXQgd2lsbCBi
ZWdpbiB3aXRoCi0gICAgICAjICJcbi0tLSBDaGFuZ2VsaXN0ICdjbF9uYW1lJzpcbiIuICBTZWUK
LSAgICAgICMgaHR0cDovL3N2bi5jb2xsYWIubmV0L3JlcG9zL3N2bi90cnVuay9ub3Rlcy9jaGFu
Z2VsaXN0LWRlc2lnbi50eHQKLSAgICAgIGlmIChsZW4oc3RhdHVzX2xpbmVzKSA9PSAzIGFuZAot
ICAgICAgICAgIG5vdCBzdGF0dXNfbGluZXNbMF0gYW5kCi0gICAgICAgICAgc3RhdHVzX2xpbmVz
WzFdLnN0YXJ0c3dpdGgoIi0tLSBDaGFuZ2VsaXN0IikpOgotICAgICAgICBzdGF0dXMgPSBzdGF0
dXNfbGluZXNbMl0KLSAgICAgIGVsc2U6Ci0gICAgICAgIHN0YXR1cyA9IHN0YXR1c19saW5lc1sw
XQotICAgICMgSWYgd2UgaGF2ZSBhIHJldmlzaW9uIHRvIGRpZmYgYWdhaW5zdCB3ZSBuZWVkIHRv
IHJ1biAic3ZuIGxpc3QiCi0gICAgIyBmb3IgdGhlIG9sZCBhbmQgdGhlIG5ldyByZXZpc2lvbiBh
bmQgY29tcGFyZSB0aGUgcmVzdWx0cyB0byBnZXQKLSAgICAjIHRoZSBjb3JyZWN0IHN0YXR1cyBm
b3IgYSBmaWxlLgotICAgIGVsc2U6Ci0gICAgICBkaXJuYW1lLCByZWxmaWxlbmFtZSA9IG9zLnBh
dGguc3BsaXQoZmlsZW5hbWUpCi0gICAgICBpZiBkaXJuYW1lIG5vdCBpbiBzZWxmLnN2bmxzX2Nh
Y2hlOgotICAgICAgICBjbWQgPSBbInN2biIsICJsaXN0IiwgIi1yIiwgc2VsZi5yZXZfc3RhcnQs
IGRpcm5hbWUgb3IgIi4iXQotICAgICAgICBvdXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhS
ZXR1cm5Db2RlKGNtZCkKLSAgICAgICAgaWYgcmV0dXJuY29kZToKLSAgICAgICAgICBFcnJvckV4
aXQoIkZhaWxlZCB0byBnZXQgc3RhdHVzIGZvciAlcy4iICUgZmlsZW5hbWUpCi0gICAgICAgIG9s
ZF9maWxlcyA9IG91dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgYXJncyA9IFsic3ZuIiwgImxpc3Qi
XQotICAgICAgICBpZiBzZWxmLnJldl9lbmQ6Ci0gICAgICAgICAgYXJncyArPSBbIi1yIiwgc2Vs
Zi5yZXZfZW5kXQotICAgICAgICBjbWQgPSBhcmdzICsgW2Rpcm5hbWUgb3IgIi4iXQotICAgICAg
ICBvdXQsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2RlKGNtZCkKLSAgICAgICAg
aWYgcmV0dXJuY29kZToKLSAgICAgICAgICBFcnJvckV4aXQoIkZhaWxlZCB0byBydW4gY29tbWFu
ZCAlcyIgJSBjbWQpCi0gICAgICAgIHNlbGYuc3ZubHNfY2FjaGVbZGlybmFtZV0gPSAob2xkX2Zp
bGVzLCBvdXQuc3BsaXRsaW5lcygpKQotICAgICAgb2xkX2ZpbGVzLCBuZXdfZmlsZXMgPSBzZWxm
LnN2bmxzX2NhY2hlW2Rpcm5hbWVdCi0gICAgICBpZiByZWxmaWxlbmFtZSBpbiBvbGRfZmlsZXMg
YW5kIHJlbGZpbGVuYW1lIG5vdCBpbiBuZXdfZmlsZXM6Ci0gICAgICAgIHN0YXR1cyA9ICJEICAg
IgotICAgICAgZWxpZiByZWxmaWxlbmFtZSBpbiBvbGRfZmlsZXMgYW5kIHJlbGZpbGVuYW1lIGlu
IG5ld19maWxlczoKLSAgICAgICAgc3RhdHVzID0gIk0gICAiCi0gICAgICBlbHNlOgotICAgICAg
ICBzdGF0dXMgPSAiQSAgICIKLSAgICByZXR1cm4gc3RhdHVzCi0KLSAgZGVmIEdldEJhc2VGaWxl
KHNlbGYsIGZpbGVuYW1lKToKLSAgICBzdGF0dXMgPSBzZWxmLkdldFN0YXR1cyhmaWxlbmFtZSkK
LSAgICBiYXNlX2NvbnRlbnQgPSBOb25lCi0gICAgbmV3X2NvbnRlbnQgPSBOb25lCi0KLSAgICAj
IElmIGEgZmlsZSBpcyBjb3BpZWQgaXRzIHN0YXR1cyB3aWxsIGJlICJBICArIiwgd2hpY2ggc2ln
bmlmaWVzCi0gICAgIyAiYWRkaXRpb24td2l0aC1oaXN0b3J5Ii4gIFNlZSAic3ZuIHN0IiBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4gIFdlIG5lZWQgdG8KLSAgICAjIHVwbG9hZCB0aGUgb3JpZ2luYWwg
ZmlsZSBvciBlbHNlIGRpZmYgcGFyc2luZyB3aWxsIGZhaWwgaWYgdGhlIGZpbGUgd2FzCi0gICAg
IyBlZGl0ZWQuCi0gICAgaWYgc3RhdHVzWzBdID09ICJBIiBhbmQgc3RhdHVzWzNdICE9ICIrIjoK
LSAgICAgICMgV2UnbGwgbmVlZCB0byB1cGxvYWQgdGhlIG5ldyBjb250ZW50IGlmIHdlJ3JlIGFk
ZGluZyBhIGJpbmFyeSBmaWxlCi0gICAgICAjIHNpbmNlIGRpZmYncyBvdXRwdXQgd29uJ3QgY29u
dGFpbiBpdC4KLSAgICAgIG1pbWV0eXBlID0gUnVuU2hlbGwoWyJzdm4iLCAicHJvcGdldCIsICJz
dm46bWltZS10eXBlIiwgZmlsZW5hbWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxl
bnRfb2s9VHJ1ZSkKLSAgICAgIGJhc2VfY29udGVudCA9ICIiCi0gICAgICBpc19iaW5hcnkgPSBt
aW1ldHlwZSBhbmQgbm90IG1pbWV0eXBlLnN0YXJ0c3dpdGgoInRleHQvIikKLSAgICAgIGlmIGlz
X2JpbmFyeSBhbmQgc2VsZi5Jc0ltYWdlKGZpbGVuYW1lKToKLSAgICAgICAgbmV3X2NvbnRlbnQg
PSBzZWxmLlJlYWRGaWxlKGZpbGVuYW1lKQotICAgIGVsaWYgKHN0YXR1c1swXSBpbiAoIk0iLCAi
RCIsICJSIikgb3IKLSAgICAgICAgICAoc3RhdHVzWzBdID09ICJBIiBhbmQgc3RhdHVzWzNdID09
ICIrIikgb3IgICMgQ29waWVkIGZpbGUuCi0gICAgICAgICAgKHN0YXR1c1swXSA9PSAiICIgYW5k
IHN0YXR1c1sxXSA9PSAiTSIpKTogICMgUHJvcGVydHkgY2hhbmdlLgotICAgICAgYXJncyA9IFtd
Ci0gICAgICBpZiBzZWxmLm9wdGlvbnMucmV2aXNpb246Ci0gICAgICAgIHVybCA9ICIlcy8lc0Al
cyIgJSAoc2VsZi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X3N0YXJ0KQotICAgICAgZWxz
ZToKLSAgICAgICAgIyBEb24ndCBjaGFuZ2UgZmlsZW5hbWUsIGl0J3MgbmVlZGVkIGxhdGVyLgot
ICAgICAgICB1cmwgPSBmaWxlbmFtZQotICAgICAgICBhcmdzICs9IFsiLXIiLCAiQkFTRSJdCi0g
ICAgICBjbWQgPSBbInN2biJdICsgYXJncyArIFsicHJvcGdldCIsICJzdm46bWltZS10eXBlIiwg
dXJsXQotICAgICAgbWltZXR5cGUsIHJldHVybmNvZGUgPSBSdW5TaGVsbFdpdGhSZXR1cm5Db2Rl
KGNtZCkKLSAgICAgIGlmIHJldHVybmNvZGU6Ci0gICAgICAgICMgRmlsZSBkb2VzIG5vdCBleGlz
dCBpbiB0aGUgcmVxdWVzdGVkIHJldmlzaW9uLgotICAgICAgICAjIFJlc2V0IG1pbWV0eXBlLCBp
dCBjb250YWlucyBhbiBlcnJvciBtZXNzYWdlLgotICAgICAgICBtaW1ldHlwZSA9ICIiCi0gICAg
ICBnZXRfYmFzZSA9IEZhbHNlCi0gICAgICBpc19iaW5hcnkgPSBtaW1ldHlwZSBhbmQgbm90IG1p
bWV0eXBlLnN0YXJ0c3dpdGgoInRleHQvIikKLSAgICAgIGlmIHN0YXR1c1swXSA9PSAiICI6Ci0g
ICAgICAgICMgRW1wdHkgYmFzZSBjb250ZW50IGp1c3QgdG8gZm9yY2UgYW4gdXBsb2FkLgotICAg
ICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgICAgZWxpZiBpc19iaW5hcnk6Ci0gICAgICAgIGlm
IHNlbGYuSXNJbWFnZShmaWxlbmFtZSk6Ci0gICAgICAgICAgZ2V0X2Jhc2UgPSBUcnVlCi0gICAg
ICAgICAgaWYgc3RhdHVzWzBdID09ICJNIjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJldl9l
bmQ6Ci0gICAgICAgICAgICAgIG5ld19jb250ZW50ID0gc2VsZi5SZWFkRmlsZShmaWxlbmFtZSkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAoc2Vs
Zi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X2VuZCkKLSAgICAgICAgICAgICAgbmV3X2Nv
bnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCB1cmxdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLCBzaWxlbnRfb2s9VHJ1
ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBiYXNlX2NvbnRlbnQgPSAiIgotICAgICAgZWxz
ZToKLSAgICAgICAgZ2V0X2Jhc2UgPSBUcnVlCi0KLSAgICAgIGlmIGdldF9iYXNlOgotICAgICAg
ICBpZiBpc19iaW5hcnk6Ci0gICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzID0gRmFsc2UKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXMgPSBUcnVlCi0gICAgICAg
IGlmIHNlbGYucmV2X3N0YXJ0OgotICAgICAgICAgICMgInN2biBjYXQgLXIgUkVWIGRlbGV0ZV9m
aWxlLnR4dCIgZG9lc24ndCB3b3JrLiBjYXQgcmVxdWlyZXMKLSAgICAgICAgICAjIHRoZSBmdWxs
IFVSTCB3aXRoICJAUkVWIiBhcHBlbmRlZCBpbnN0ZWFkIG9mIHVzaW5nICItciIgb3B0aW9uLgot
ICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAoc2VsZi5zdm5fYmFzZSwgZmlsZW5hbWUsIHNl
bGYucmV2X3N0YXJ0KQotICAgICAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsic3ZuIiwg
ImNhdCIsIHVybF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2Fs
X25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICBiYXNlX2Nv
bnRlbnQgPSBSdW5TaGVsbChbInN2biIsICJjYXQiLCBmaWxlbmFtZV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPXVuaXZlcnNhbF9uZXdsaW5l
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWxlbnRfb2s9VHJ1ZSkKLSAg
ICAgICAgaWYgbm90IGlzX2JpbmFyeToKLSAgICAgICAgICBhcmdzID0gW10KLSAgICAgICAgICBp
ZiBzZWxmLnJldl9zdGFydDoKLSAgICAgICAgICAgIHVybCA9ICIlcy8lc0AlcyIgJSAoc2VsZi5z
dm5fYmFzZSwgZmlsZW5hbWUsIHNlbGYucmV2X3N0YXJ0KQotICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICB1cmwgPSBmaWxlbmFtZQotICAgICAgICAgICAgYXJncyArPSBbIi1yIiwgIkJBU0Ui
XQotICAgICAgICAgIGNtZCA9IFsic3ZuIl0gKyBhcmdzICsgWyJwcm9wZ2V0IiwgInN2bjprZXl3
b3JkcyIsIHVybF0KLSAgICAgICAgICBrZXl3b3JkcywgcmV0dXJuY29kZSA9IFJ1blNoZWxsV2l0
aFJldHVybkNvZGUoY21kKQotICAgICAgICAgIGlmIGtleXdvcmRzIGFuZCBub3QgcmV0dXJuY29k
ZToKLSAgICAgICAgICAgIGJhc2VfY29udGVudCA9IHNlbGYuX0NvbGxhcHNlS2V5d29yZHMoYmFz
ZV9jb250ZW50LCBrZXl3b3JkcykKLSAgICBlbHNlOgotICAgICAgU3RhdHVzVXBkYXRlKCJzdm4g
c3RhdHVzIHJldHVybmVkIHVuZXhwZWN0ZWQgb3V0cHV0OiAlcyIgJSBzdGF0dXMpCi0gICAgICBz
eXMuZXhpdCgxKQotICAgIHJldHVybiBiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50LCBpc19iaW5h
cnksIHN0YXR1c1swOjVdCi0KLQotY2xhc3MgR2l0VkNTKFZlcnNpb25Db250cm9sU3lzdGVtKToK
LSAgIiIiSW1wbGVtZW50YXRpb24gb2YgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGludGVyZmFj
ZSBmb3IgR2l0LiIiIgotCi0gIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICBzdXBl
cihHaXRWQ1MsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnMpCi0gICAgIyBNYXAgb2YgZmlsZW5hbWUg
LT4gaGFzaCBvZiBiYXNlIGZpbGUuCi0gICAgc2VsZi5iYXNlX2hhc2hlcyA9IHt9Ci0KLSAgZGVm
IEdlbmVyYXRlRGlmZihzZWxmLCBleHRyYV9hcmdzKToKLSAgICAjIFRoaXMgaXMgbW9yZSBjb21w
bGljYXRlZCB0aGFuIHN2bidzIEdlbmVyYXRlRGlmZiBiZWNhdXNlIHdlIG11c3QgY29udmVydAot
ICAgICMgdGhlIGRpZmYgb3V0cHV0IHRvIGluY2x1ZGUgYW4gc3ZuLXN0eWxlICJJbmRleDoiIGxp
bmUgYXMgd2VsbCBhcyByZWNvcmQKLSAgICAjIHRoZSBoYXNoZXMgb2YgdGhlIGJhc2UgZmlsZXMs
IHNvIHdlIGNhbiB1cGxvYWQgdGhlbSBhbG9uZyB3aXRoIG91ciBkaWZmLgotICAgIGlmIHNlbGYu
b3B0aW9ucy5yZXZpc2lvbjoKLSAgICAgIGV4dHJhX2FyZ3MgPSBbc2VsZi5vcHRpb25zLnJldmlz
aW9uXSArIGV4dHJhX2FyZ3MKLSAgICBnaXRkaWZmID0gUnVuU2hlbGwoWyJnaXQiLCAiZGlmZiIs
ICItLWZ1bGwtaW5kZXgiXSArIGV4dHJhX2FyZ3MpCi0gICAgc3ZuZGlmZiA9IFtdCi0gICAgZmls
ZWNvdW50ID0gMAotICAgIGZpbGVuYW1lID0gTm9uZQotICAgIGZvciBsaW5lIGluIGdpdGRpZmYu
c3BsaXRsaW5lcygpOgotICAgICAgbWF0Y2ggPSByZS5tYXRjaChyImRpZmYgLS1naXQgYS8oLiop
IGIvLiokIiwgbGluZSkKLSAgICAgIGlmIG1hdGNoOgotICAgICAgICBmaWxlY291bnQgKz0gMQot
ICAgICAgICBmaWxlbmFtZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHN2bmRpZmYuYXBwZW5k
KCJJbmRleDogJXNcbiIgJSBmaWxlbmFtZSkKLSAgICAgIGVsc2U6Ci0gICAgICAgICMgVGhlICJp
bmRleCIgbGluZSBpbiBhIGdpdCBkaWZmIGxvb2tzIGxpa2UgdGhpcyAobG9uZyBoYXNoZXMgZWxp
ZGVkKToKLSAgICAgICAgIyAgIGluZGV4IDgyYzBkNDQuLmIyY2VlM2YgMTAwNzU1Ci0gICAgICAg
ICMgV2Ugd2FudCB0byBzYXZlIHRoZSBsZWZ0IGhhc2gsIGFzIHRoYXQgaWRlbnRpZmllcyB0aGUg
YmFzZSBmaWxlLgotICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKHIiaW5kZXggKFx3KylcLlwuIiwg
bGluZSkKLSAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgc2VsZi5iYXNlX2hhc2hlc1tmaWxl
bmFtZV0gPSBtYXRjaC5ncm91cCgxKQotICAgICAgc3ZuZGlmZi5hcHBlbmQobGluZSArICJcbiIp
Ci0gICAgaWYgbm90IGZpbGVjb3VudDoKLSAgICAgIEVycm9yRXhpdCgiTm8gdmFsaWQgcGF0Y2hl
cyBmb3VuZCBpbiBvdXRwdXQgZnJvbSBnaXQgZGlmZiIpCi0gICAgcmV0dXJuICIiLmpvaW4oc3Zu
ZGlmZikKLQotICBkZWYgR2V0VW5rbm93bkZpbGVzKHNlbGYpOgotICAgIHN0YXR1cyA9IFJ1blNo
ZWxsKFsiZ2l0IiwgImxzLWZpbGVzIiwgIi0tZXhjbHVkZS1zdGFuZGFyZCIsICItLW90aGVycyJd
LAotICAgICAgICAgICAgICAgICAgICAgIHNpbGVudF9vaz1UcnVlKQotICAgIHJldHVybiBzdGF0
dXMuc3BsaXRsaW5lcygpCi0KLSAgZGVmIEdldEJhc2VGaWxlKHNlbGYsIGZpbGVuYW1lKToKLSAg
ICBoYXNoID0gc2VsZi5iYXNlX2hhc2hlc1tmaWxlbmFtZV0KLSAgICBiYXNlX2NvbnRlbnQgPSBO
b25lCi0gICAgbmV3X2NvbnRlbnQgPSBOb25lCi0gICAgaXNfYmluYXJ5ID0gRmFsc2UKLSAgICBp
ZiBoYXNoID09ICIwIiAqIDQwOiAgIyBBbGwtemVybyBoYXNoIGluZGljYXRlcyBubyBiYXNlIGZp
bGUuCi0gICAgICBzdGF0dXMgPSAiQSIKLSAgICAgIGJhc2VfY29udGVudCA9ICIiCi0gICAgZWxz
ZToKLSAgICAgIHN0YXR1cyA9ICJNIgotICAgICAgYmFzZV9jb250ZW50LCByZXR1cm5jb2RlID0g
UnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImdpdCIsICJzaG93IiwgaGFzaF0pCi0gICAgICBpZiBy
ZXR1cm5jb2RlOgotICAgICAgICBFcnJvckV4aXQoIkdvdCBlcnJvciBzdGF0dXMgZnJvbSAnZ2l0
IHNob3cgJXMnIiAlIGhhc2gpCi0gICAgcmV0dXJuIChiYXNlX2NvbnRlbnQsIG5ld19jb250ZW50
LCBpc19iaW5hcnksIHN0YXR1cykKLQotCi1jbGFzcyBNZXJjdXJpYWxWQ1MoVmVyc2lvbkNvbnRy
b2xTeXN0ZW0pOgotICAiIiJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVmVyc2lvbkNvbnRyb2xTeXN0
ZW0gaW50ZXJmYWNlIGZvciBNZXJjdXJpYWwuIiIiCi0KLSAgZGVmIF9faW5pdF9fKHNlbGYsIG9w
dGlvbnMsIHJlcG9fZGlyKToKLSAgICBzdXBlcihNZXJjdXJpYWxWQ1MsIHNlbGYpLl9faW5pdF9f
KG9wdGlvbnMpCi0gICAgIyBBYnNvbHV0ZSBwYXRoIHRvIHJlcG9zaXRvcnkgKHdlIGNhbiBiZSBp
biBhIHN1YmRpcikKLSAgICBzZWxmLnJlcG9fZGlyID0gb3MucGF0aC5ub3JtcGF0aChyZXBvX2Rp
cikKLSAgICAjIENvbXB1dGUgdGhlIHN1YmRpcgotICAgIGN3ZCA9IG9zLnBhdGgubm9ybXBhdGgo
b3MuZ2V0Y3dkKCkpCi0gICAgYXNzZXJ0IGN3ZC5zdGFydHN3aXRoKHNlbGYucmVwb19kaXIpCi0g
ICAgc2VsZi5zdWJkaXIgPSBjd2RbbGVuKHNlbGYucmVwb19kaXIpOl0ubHN0cmlwKHIiXC8iKQot
ICAgIGlmIHNlbGYub3B0aW9ucy5yZXZpc2lvbjoKLSAgICAgIHNlbGYuYmFzZV9yZXYgPSBzZWxm
Lm9wdGlvbnMucmV2aXNpb24KLSAgICBlbHNlOgotICAgICAgc2VsZi5iYXNlX3JldiA9IFJ1blNo
ZWxsKFsiaGciLCAicGFyZW50IiwgIi1xIl0pLnNwbGl0KCc6JylbMV0uc3RyaXAoKQotCi0gIGRl
ZiBfR2V0UmVsUGF0aChzZWxmLCBmaWxlbmFtZSk6Ci0gICAgIiIiR2V0IHJlbGF0aXZlIHBhdGgg
b2YgYSBmaWxlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksCi0gICAgZ2l2ZW4g
aXRzIGxvZ2ljYWwgcGF0aCBpbiB0aGUgcmVwby4iIiIKLSAgICBhc3NlcnQgZmlsZW5hbWUuc3Rh
cnRzd2l0aChzZWxmLnN1YmRpciksIGZpbGVuYW1lCi0gICAgcmV0dXJuIGZpbGVuYW1lW2xlbihz
ZWxmLnN1YmRpcik6XS5sc3RyaXAociJcLyIpCi0KLSAgZGVmIEdlbmVyYXRlRGlmZihzZWxmLCBl
eHRyYV9hcmdzKToKLSAgICAjIElmIG5vIGZpbGUgc3BlY2lmaWVkLCByZXN0cmljdCB0byB0aGUg
Y3VycmVudCBzdWJkaXIKLSAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBbIi4iXQotICAg
IGNtZCA9IFsiaGciLCAiZGlmZiIsICItLWdpdCIsICItciIsIHNlbGYuYmFzZV9yZXZdICsgZXh0
cmFfYXJncwotICAgIGRhdGEgPSBSdW5TaGVsbChjbWQsIHNpbGVudF9vaz1UcnVlKQotICAgIHN2
bmRpZmYgPSBbXQotICAgIGZpbGVjb3VudCA9IDAKLSAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0
bGluZXMoKToKLSAgICAgIG0gPSByZS5tYXRjaCgiZGlmZiAtLWdpdCBhLyhcUyspIGIvKFxTKyki
LCBsaW5lKQotICAgICAgaWYgbToKLSAgICAgICAgIyBNb2RpZnkgbGluZSB0byBtYWtlIGl0IGxv
b2sgbGlrZSBhcyBpdCBjb21lcyBmcm9tIHN2biBkaWZmLgotICAgICAgICAjIFdpdGggdGhpcyBt
b2RpZmljYXRpb24gbm8gY2hhbmdlcyBvbiB0aGUgc2VydmVyIHNpZGUgYXJlIHJlcXVpcmVkCi0g
ICAgICAgICMgdG8gbWFrZSB1cGxvYWQucHkgd29yayB3aXRoIE1lcmN1cmlhbCByZXBvcy4KLSAg
ICAgICAgIyBOT1RFOiBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIG1vdmVkL2NvcGllZCBmaWxlcywg
d2UgaGF2ZSB0byB1c2UKLSAgICAgICAgIyB0aGUgc2Vjb25kIGZpbGVuYW1lLgotICAgICAgICBm
aWxlbmFtZSA9IG0uZ3JvdXAoMikKLSAgICAgICAgc3ZuZGlmZi5hcHBlbmQoIkluZGV4OiAlcyIg
JSBmaWxlbmFtZSkKLSAgICAgICAgc3ZuZGlmZi5hcHBlbmQoIj0iICogNjcpCi0gICAgICAgIGZp
bGVjb3VudCArPSAxCi0gICAgICAgIGxvZ2dpbmcuaW5mbyhsaW5lKQotICAgICAgZWxzZToKLSAg
ICAgICAgc3ZuZGlmZi5hcHBlbmQobGluZSkKLSAgICBpZiBub3QgZmlsZWNvdW50OgotICAgICAg
RXJyb3JFeGl0KCJObyB2YWxpZCBwYXRjaGVzIGZvdW5kIGluIG91dHB1dCBmcm9tIGhnIGRpZmYi
KQotICAgIHJldHVybiAiXG4iLmpvaW4oc3ZuZGlmZikgKyAiXG4iCi0KLSAgZGVmIEdldFVua25v
d25GaWxlcyhzZWxmKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGVzIHVua25vd24gdG8g
dGhlIFZDUy4iIiIKLSAgICBhcmdzID0gW10KLSAgICBzdGF0dXMgPSBSdW5TaGVsbChbImhnIiwg
InN0YXR1cyIsICItLXJldiIsIHNlbGYuYmFzZV9yZXYsICItdSIsICIuIl0sCi0gICAgICAgIHNp
bGVudF9vaz1UcnVlKQotICAgIHVua25vd25fZmlsZXMgPSBbXQotICAgIGZvciBsaW5lIGluIHN0
YXR1cy5zcGxpdGxpbmVzKCk6Ci0gICAgICBzdCwgZm4gPSBsaW5lLnNwbGl0KCIgIiwgMSkKLSAg
ICAgIGlmIHN0ID09ICI/IjoKLSAgICAgICAgdW5rbm93bl9maWxlcy5hcHBlbmQoZm4pCi0gICAg
cmV0dXJuIHVua25vd25fZmlsZXMKLQotICBkZWYgR2V0QmFzZUZpbGUoc2VsZiwgZmlsZW5hbWUp
OgotICAgICMgImhnIHN0YXR1cyIgYW5kICJoZyBjYXQiIGJvdGggdGFrZSBhIHBhdGggcmVsYXRp
dmUgdG8gdGhlIGN1cnJlbnQgc3ViZGlyCi0gICAgIyByYXRoZXIgdGhhbiB0byB0aGUgcmVwbyBy
b290LCBidXQgImhnIGRpZmYiIGhhcyBnaXZlbiB1cyB0aGUgZnVsbCBwYXRoCi0gICAgIyB0byB0
aGUgcmVwbyByb290LgotICAgIGJhc2VfY29udGVudCA9ICIiCi0gICAgbmV3X2NvbnRlbnQgPSBO
b25lCi0gICAgaXNfYmluYXJ5ID0gRmFsc2UKLSAgICBvbGRyZWxwYXRoID0gcmVscGF0aCA9IHNl
bGYuX0dldFJlbFBhdGgoZmlsZW5hbWUpCi0gICAgIyAiaGcgc3RhdHVzIC1DIiByZXR1cm5zIHR3
byBsaW5lcyBmb3IgbW92ZWQvY29waWVkIGZpbGVzLCBvbmUgb3RoZXJ3aXNlCi0gICAgb3V0ID0g
UnVuU2hlbGwoWyJoZyIsICJzdGF0dXMiLCAiLUMiLCAiLS1yZXYiLCBzZWxmLmJhc2VfcmV2LCBy
ZWxwYXRoXSkKLSAgICBvdXQgPSBvdXQuc3BsaXRsaW5lcygpCi0gICAgIyBIQUNLOiBzdHJpcCBl
cnJvciBtZXNzYWdlIGFib3V0IG1pc3NpbmcgZmlsZS9kaXJlY3RvcnkgaWYgaXQgaXNuJ3QgaW4K
LSAgICAjIHRoZSB3b3JraW5nIGNvcHkKLSAgICBpZiBvdXRbMF0uc3RhcnRzd2l0aCgnJXM6ICcg
JSByZWxwYXRoKToKLSAgICAgIG91dCA9IG91dFsxOl0KLSAgICBpZiBsZW4ob3V0KSA+IDE6Ci0g
ICAgICAjIE1vdmVkL2NvcGllZCA9PiBjb25zaWRlcmVkIGFzIG1vZGlmaWVkLCB1c2Ugb2xkIGZp
bGVuYW1lIHRvCi0gICAgICAjIHJldHJpZXZlIGJhc2UgY29udGVudHMKLSAgICAgIG9sZHJlbHBh
dGggPSBvdXRbMV0uc3RyaXAoKQotICAgICAgc3RhdHVzID0gIk0iCi0gICAgZWxzZToKLSAgICAg
IHN0YXR1cywgXyA9IG91dFswXS5zcGxpdCgnICcsIDEpCi0gICAgaWYgc3RhdHVzICE9ICJBIjoK
LSAgICAgIGJhc2VfY29udGVudCA9IFJ1blNoZWxsKFsiaGciLCAiY2F0IiwgIi1yIiwgc2VsZi5i
YXNlX3Jldiwgb2xkcmVscGF0aF0sCi0gICAgICAgIHNpbGVudF9vaz1UcnVlKQotICAgICAgaXNf
YmluYXJ5ID0gIlwwIiBpbiBiYXNlX2NvbnRlbnQgICMgTWVyY3VyaWFsJ3MgaGV1cmlzdGljCi0g
ICAgaWYgc3RhdHVzICE9ICJSIjoKLSAgICAgIG5ld19jb250ZW50ID0gb3BlbihyZWxwYXRoLCAi
cmIiKS5yZWFkKCkKLSAgICAgIGlzX2JpbmFyeSA9IGlzX2JpbmFyeSBvciAiXDAiIGluIG5ld19j
b250ZW50Ci0gICAgaWYgaXNfYmluYXJ5IGFuZCBiYXNlX2NvbnRlbnQ6Ci0gICAgICAjIEZldGNo
IGFnYWluIHdpdGhvdXQgY29udmVydGluZyBuZXdsaW5lcwotICAgICAgYmFzZV9jb250ZW50ID0g
UnVuU2hlbGwoWyJoZyIsICJjYXQiLCAiLXIiLCBzZWxmLmJhc2VfcmV2LCBvbGRyZWxwYXRoXSwK
LSAgICAgICAgc2lsZW50X29rPVRydWUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSkKLSAgICBp
ZiBub3QgaXNfYmluYXJ5IG9yIG5vdCBzZWxmLklzSW1hZ2UocmVscGF0aCk6Ci0gICAgICBuZXdf
Y29udGVudCA9IE5vbmUKLSAgICByZXR1cm4gYmFzZV9jb250ZW50LCBuZXdfY29udGVudCwgaXNf
YmluYXJ5LCBzdGF0dXMKLQotCi0jIE5PVEU6IFRoZSBTcGxpdFBhdGNoIGZ1bmN0aW9uIGlzIGR1
cGxpY2F0ZWQgaW4gZW5naW5lLnB5LCBrZWVwIHRoZW0gaW4gc3luYy4KLWRlZiBTcGxpdFBhdGNo
KGRhdGEpOgotICAiIiJTcGxpdHMgYSBwYXRjaCBpbnRvIHNlcGFyYXRlIHBpZWNlcyBmb3IgZWFj
aCBmaWxlLgotCi0gIEFyZ3M6Ci0gICAgZGF0YTogQSBzdHJpbmcgY29udGFpbmluZyB0aGUgb3V0
cHV0IG9mIHN2biBkaWZmLgotCi0gIFJldHVybnM6Ci0gICAgQSBsaXN0IG9mIDItdHVwbGUgKGZp
bGVuYW1lLCB0ZXh0KSB3aGVyZSB0ZXh0IGlzIHRoZSBzdm4gZGlmZiBvdXRwdXQKLSAgICAgIHBl
cnRhaW5pbmcgdG8gZmlsZW5hbWUuCi0gICIiIgotICBwYXRjaGVzID0gW10KLSAgZmlsZW5hbWUg
PSBOb25lCi0gIGRpZmYgPSBbXQotICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0bGluZXMoVHJ1ZSk6
Ci0gICAgbmV3X2ZpbGVuYW1lID0gTm9uZQotICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnSW5kZXg6
Jyk6Ci0gICAgICB1bnVzZWQsIG5ld19maWxlbmFtZSA9IGxpbmUuc3BsaXQoJzonLCAxKQotICAg
ICAgbmV3X2ZpbGVuYW1lID0gbmV3X2ZpbGVuYW1lLnN0cmlwKCkKLSAgICBlbGlmIGxpbmUuc3Rh
cnRzd2l0aCgnUHJvcGVydHkgY2hhbmdlcyBvbjonKToKLSAgICAgIHVudXNlZCwgdGVtcF9maWxl
bmFtZSA9IGxpbmUuc3BsaXQoJzonLCAxKQotICAgICAgIyBXaGVuIGEgZmlsZSBpcyBtb2RpZmll
ZCwgcGF0aHMgdXNlICcvJyBiZXR3ZWVuIGRpcmVjdG9yaWVzLCBob3dldmVyCi0gICAgICAjIHdo
ZW4gYSBwcm9wZXJ0eSBpcyBtb2RpZmllZCAnXCcgaXMgdXNlZCBvbiBXaW5kb3dzLiAgTWFrZSB0
aGVtIHRoZSBzYW1lCi0gICAgICAjIG90aGVyd2lzZSB0aGUgZmlsZSBzaG93cyB1cCB0d2ljZS4K
LSAgICAgIHRlbXBfZmlsZW5hbWUgPSB0ZW1wX2ZpbGVuYW1lLnN0cmlwKCkucmVwbGFjZSgnXFwn
LCAnLycpCi0gICAgICBpZiB0ZW1wX2ZpbGVuYW1lICE9IGZpbGVuYW1lOgotICAgICAgICAjIEZp
bGUgaGFzIHByb3BlcnR5IGNoYW5nZXMgYnV0IG5vIG1vZGlmaWNhdGlvbnMsIGNyZWF0ZSBhIG5l
dyBkaWZmLgotICAgICAgICBuZXdfZmlsZW5hbWUgPSB0ZW1wX2ZpbGVuYW1lCi0gICAgaWYgbmV3
X2ZpbGVuYW1lOgotICAgICAgaWYgZmlsZW5hbWUgYW5kIGRpZmY6Ci0gICAgICAgIHBhdGNoZXMu
YXBwZW5kKChmaWxlbmFtZSwgJycuam9pbihkaWZmKSkpCi0gICAgICBmaWxlbmFtZSA9IG5ld19m
aWxlbmFtZQotICAgICAgZGlmZiA9IFtsaW5lXQotICAgICAgY29udGludWUKLSAgICBpZiBkaWZm
IGlzIG5vdCBOb25lOgotICAgICAgZGlmZi5hcHBlbmQobGluZSkKLSAgaWYgZmlsZW5hbWUgYW5k
IGRpZmY6Ci0gICAgcGF0Y2hlcy5hcHBlbmQoKGZpbGVuYW1lLCAnJy5qb2luKGRpZmYpKSkKLSAg
cmV0dXJuIHBhdGNoZXMKLQotCi1kZWYgVXBsb2FkU2VwYXJhdGVQYXRjaGVzKGlzc3VlLCBycGNf
c2VydmVyLCBwYXRjaHNldCwgZGF0YSwgb3B0aW9ucyk6Ci0gICIiIlVwbG9hZHMgYSBzZXBhcmF0
ZSBwYXRjaCBmb3IgZWFjaCBmaWxlIGluIHRoZSBkaWZmIG91dHB1dC4KLQotICBSZXR1cm5zIGEg
bGlzdCBvZiBbcGF0Y2hfa2V5LCBmaWxlbmFtZV0gZm9yIGVhY2ggZmlsZS4KLSAgIiIiCi0gIHBh
dGNoZXMgPSBTcGxpdFBhdGNoKGRhdGEpCi0gIHJ2ID0gW10KLSAgZm9yIHBhdGNoIGluIHBhdGNo
ZXM6Ci0gICAgaWYgbGVuKHBhdGNoWzFdKSA+IE1BWF9VUExPQURfU0laRToKLSAgICAgIHByaW50
ICgiTm90IHVwbG9hZGluZyB0aGUgcGF0Y2ggZm9yICIgKyBwYXRjaFswXSArCi0gICAgICAgICAg
ICAgIiBiZWNhdXNlIHRoZSBmaWxlIGlzIHRvbyBsYXJnZS4iKQotICAgICAgY29udGludWUKLSAg
ICBmb3JtX2ZpZWxkcyA9IFsoImZpbGVuYW1lIiwgcGF0Y2hbMF0pXQotICAgIGlmIG5vdCBvcHRp
b25zLmRvd25sb2FkX2Jhc2U6Ci0gICAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJjb250ZW50X3Vw
bG9hZCIsICIxIikpCi0gICAgZmlsZXMgPSBbKCJkYXRhIiwgImRhdGEuZGlmZiIsIHBhdGNoWzFd
KV0KLSAgICBjdHlwZSwgYm9keSA9IEVuY29kZU11bHRpcGFydEZvcm1EYXRhKGZvcm1fZmllbGRz
LCBmaWxlcykKLSAgICB1cmwgPSAiLyVkL3VwbG9hZF9wYXRjaC8lZCIgJSAoaW50KGlzc3VlKSwg
aW50KHBhdGNoc2V0KSkKLSAgICBwcmludCAiVXBsb2FkaW5nIHBhdGNoIGZvciAiICsgcGF0Y2hb
MF0KLSAgICByZXNwb25zZV9ib2R5ID0gcnBjX3NlcnZlci5TZW5kKHVybCwgYm9keSwgY29udGVu
dF90eXBlPWN0eXBlKQotICAgIGxpbmVzID0gcmVzcG9uc2VfYm9keS5zcGxpdGxpbmVzKCkKLSAg
ICBpZiBub3QgbGluZXMgb3IgbGluZXNbMF0gIT0gIk9LIjoKLSAgICAgIFN0YXR1c1VwZGF0ZSgi
ICAtLT4gJXMiICUgcmVzcG9uc2VfYm9keSkKLSAgICAgIHN5cy5leGl0KDEpCi0gICAgcnYuYXBw
ZW5kKFtsaW5lc1sxXSwgcGF0Y2hbMF1dKQotICByZXR1cm4gcnYKLQotCi1kZWYgR3Vlc3NWQ1Mo
b3B0aW9ucyk6Ci0gICIiIkhlbHBlciB0byBndWVzcyB0aGUgdmVyc2lvbiBjb250cm9sIHN5c3Rl
bS4KLQotICBUaGlzIGV4YW1pbmVzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgZ3Vlc3NlcyB3aGlj
aCBWZXJzaW9uQ29udHJvbFN5c3RlbQotICB3ZSdyZSB1c2luZywgYW5kIHJldHVybnMgYW4gaW5z
dGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzLiAgRXhpdCB3aXRoIGFuCi0gIGVycm9yIGlm
IHdlIGNhbid0IGZpZ3VyZSBpdCBvdXQuCi0KLSAgUmV0dXJuczoKLSAgICBBIFZlcnNpb25Db250
cm9sU3lzdGVtIGluc3RhbmNlLiBFeGl0cyBpZiB0aGUgVkNTIGNhbid0IGJlIGd1ZXNzZWQuCi0g
ICIiIgotICAjIE1lcmN1cmlhbCBoYXMgYSBjb21tYW5kIHRvIGdldCB0aGUgYmFzZSBkaXJlY3Rv
cnkgb2YgYSByZXBvc2l0b3J5Ci0gICMgVHJ5IHJ1bm5pbmcgaXQsIGJ1dCBkb24ndCBkaWUgaWYg
d2UgZG9uJ3QgaGF2ZSBoZyBpbnN0YWxsZWQuCi0gICMgTk9URTogd2UgdHJ5IE1lcmN1cmlhbCBm
aXJzdCBhcyBpdCBjYW4gc2l0IG9uIHRvcCBvZiBhbiBTVk4gd29ya2luZyBjb3B5LgotICB0cnk6
Ci0gICAgb3V0LCByZXR1cm5jb2RlID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImhnIiwgInJv
b3QiXSkKLSAgICBpZiByZXR1cm5jb2RlID09IDA6Ci0gICAgICByZXR1cm4gTWVyY3VyaWFsVkNT
KG9wdGlvbnMsIG91dC5zdHJpcCgpKQotICBleGNlcHQgT1NFcnJvciwgKGVycm5vLCBtZXNzYWdl
KToKLSAgICBpZiBlcnJubyAhPSAyOiAgIyBFTk9FTlQgLS0gdGhleSBkb24ndCBoYXZlIGhnIGlu
c3RhbGxlZC4KLSAgICAgIHJhaXNlCi0KLSAgIyBTdWJ2ZXJzaW9uIGhhcyBhIC5zdm4gaW4gYWxs
IHdvcmtpbmcgZGlyZWN0b3JpZXMuCi0gIGlmIG9zLnBhdGguaXNkaXIoJy5zdm4nKToKLSAgICBs
b2dnaW5nLmluZm8oIkd1ZXNzZWQgVkNTID0gU3VidmVyc2lvbiIpCi0gICAgcmV0dXJuIFN1YnZl
cnNpb25WQ1Mob3B0aW9ucykKLQotICAjIEdpdCBoYXMgYSBjb21tYW5kIHRvIHRlc3QgaWYgeW91
J3JlIGluIGEgZ2l0IHRyZWUuCi0gICMgVHJ5IHJ1bm5pbmcgaXQsIGJ1dCBkb24ndCBkaWUgaWYg
d2UgZG9uJ3QgaGF2ZSBnaXQgaW5zdGFsbGVkLgotICB0cnk6Ci0gICAgb3V0LCByZXR1cm5jb2Rl
ID0gUnVuU2hlbGxXaXRoUmV0dXJuQ29kZShbImdpdCIsICJyZXYtcGFyc2UiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWlzLWluc2lkZS13b3JrLXRy
ZWUiXSkKLSAgICBpZiByZXR1cm5jb2RlID09IDA6Ci0gICAgICByZXR1cm4gR2l0VkNTKG9wdGlv
bnMpCi0gIGV4Y2VwdCBPU0Vycm9yLCAoZXJybm8sIG1lc3NhZ2UpOgotICAgIGlmIGVycm5vICE9
IDI6ICAjIEVOT0VOVCAtLSB0aGV5IGRvbid0IGhhdmUgZ2l0IGluc3RhbGxlZC4KLSAgICAgIHJh
aXNlCi0KLSAgRXJyb3JFeGl0KCgiQ291bGQgbm90IGd1ZXNzIHZlcnNpb24gY29udHJvbCBzeXN0
ZW0uICIKLSAgICAgICAgICAgICAiQXJlIHlvdSBpbiBhIHdvcmtpbmcgY29weSBkaXJlY3Rvcnk/
IikpCi0KLQotZGVmIFJlYWxNYWluKGFyZ3YsIGRhdGE9Tm9uZSk6Ci0gICIiIlRoZSByZWFsIG1h
aW4gZnVuY3Rpb24uCi0KLSAgQXJnczoKLSAgICBhcmd2OiBDb21tYW5kIGxpbmUgYXJndW1lbnRz
LgotICAgIGRhdGE6IERpZmYgY29udGVudHMuIElmIE5vbmUgKGRlZmF1bHQpIHRoZSBkaWZmIGlz
IGdlbmVyYXRlZCBieQotICAgICAgdGhlIFZlcnNpb25Db250cm9sU3lzdGVtIGltcGxlbWVudGF0
aW9uIHJldHVybmVkIGJ5IEd1ZXNzVkNTKCkuCi0KLSAgUmV0dXJuczoKLSAgICBBIDItdHVwbGUg
KGlzc3VlIGlkLCBwYXRjaHNldCBpZCkuCi0gICAgVGhlIHBhdGNoc2V0IGlkIGlzIE5vbmUgaWYg
dGhlIGJhc2UgZmlsZXMgYXJlIG5vdCB1cGxvYWRlZCBieSB0aGlzCi0gICAgc2NyaXB0IChhcHBs
aWVzIG9ubHkgdG8gU1ZOIGNoZWNrb3V0cykuCi0gICIiIgotICBsb2dnaW5nLmJhc2ljQ29uZmln
KGZvcm1hdD0oIiUoYXNjdGltZSkuMTlzICUobGV2ZWxuYW1lKXMgJShmaWxlbmFtZSlzOiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlKGxpbmVubylzICUobWVzc2FnZSlzICIpKQot
ICBvcy5lbnZpcm9uWydMQ19BTEwnXSA9ICdDJwotICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBh
cnNlX2FyZ3MoYXJndlsxOl0pCi0gIGdsb2JhbCB2ZXJib3NpdHkKLSAgdmVyYm9zaXR5ID0gb3B0
aW9ucy52ZXJib3NlCi0gIGlmIHZlcmJvc2l0eSA+PSAzOgotICAgIGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLSAgZWxpZiB2ZXJib3NpdHkgPj0gMjoKLSAgICBs
b2dnaW5nLmdldExvZ2dlcigpLnNldExldmVsKGxvZ2dpbmcuSU5GTykKLSAgdmNzID0gR3Vlc3NW
Q1Mob3B0aW9ucykKLSAgaWYgaXNpbnN0YW5jZSh2Y3MsIFN1YnZlcnNpb25WQ1MpOgotICAgICMg
YmFzZSBmaWVsZCBpcyBvbmx5IGFsbG93ZWQgZm9yIFN1YnZlcnNpb24uCi0gICAgIyBOb3RlOiBG
ZXRjaGluZyBiYXNlIGZpbGVzIG1heSBiZWNvbWUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgcmVsZWFz
ZXMuCi0gICAgYmFzZSA9IHZjcy5HdWVzc0Jhc2Uob3B0aW9ucy5kb3dubG9hZF9iYXNlKQotICBl
bHNlOgotICAgIGJhc2UgPSBOb25lCi0gIGlmIG5vdCBiYXNlIGFuZCBvcHRpb25zLmRvd25sb2Fk
X2Jhc2U6Ci0gICAgb3B0aW9ucy5kb3dubG9hZF9iYXNlID0gVHJ1ZQotICAgIGxvZ2dpbmcuaW5m
bygiRW5hYmxlZCB1cGxvYWQgb2YgYmFzZSBmaWxlIikKLSAgaWYgbm90IG9wdGlvbnMuYXNzdW1l
X3llczoKLSAgICB2Y3MuQ2hlY2tGb3JVbmtub3duRmlsZXMoKQotICBpZiBkYXRhIGlzIE5vbmU6
Ci0gICAgZGF0YSA9IHZjcy5HZW5lcmF0ZURpZmYoYXJncykKLSAgZmlsZXMgPSB2Y3MuR2V0QmFz
ZUZpbGVzKGRhdGEpCi0gIGlmIHZlcmJvc2l0eSA+PSAxOgotICAgIHByaW50ICJVcGxvYWQgc2Vy
dmVyOiIsIG9wdGlvbnMuc2VydmVyLCAiKGNoYW5nZSB3aXRoIC1zLy0tc2VydmVyKSIKLSAgaWYg
b3B0aW9ucy5pc3N1ZToKLSAgICBwcm9tcHQgPSAiTWVzc2FnZSBkZXNjcmliaW5nIHRoaXMgcGF0
Y2ggc2V0OiAiCi0gIGVsc2U6Ci0gICAgcHJvbXB0ID0gIk5ldyBpc3N1ZSBzdWJqZWN0OiAiCi0g
IG1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2Ugb3IgcmF3X2lucHV0KHByb21wdCkuc3RyaXAoKQot
ICBpZiBub3QgbWVzc2FnZToKLSAgICBFcnJvckV4aXQoIkEgbm9uLWVtcHR5IG1lc3NhZ2UgaXMg
cmVxdWlyZWQiKQotICBycGNfc2VydmVyID0gR2V0UnBjU2VydmVyKG9wdGlvbnMpCi0gIGZvcm1f
ZmllbGRzID0gWygic3ViamVjdCIsIG1lc3NhZ2UpXQotICBpZiBiYXNlOgotICAgIGZvcm1fZmll
bGRzLmFwcGVuZCgoImJhc2UiLCBiYXNlKSkKLSAgaWYgb3B0aW9ucy5pc3N1ZToKLSAgICBmb3Jt
X2ZpZWxkcy5hcHBlbmQoKCJpc3N1ZSIsIHN0cihvcHRpb25zLmlzc3VlKSkpCi0gIGlmIG9wdGlv
bnMuZW1haWw6Ci0gICAgZm9ybV9maWVsZHMuYXBwZW5kKCgidXNlciIsIG9wdGlvbnMuZW1haWwp
KQotICBpZiBvcHRpb25zLnJldmlld2VyczoKLSAgICBmb3IgcmV2aWV3ZXIgaW4gb3B0aW9ucy5y
ZXZpZXdlcnMuc3BsaXQoJywnKToKLSAgICAgIGlmICJAIiBpbiByZXZpZXdlciBhbmQgbm90IHJl
dmlld2VyLnNwbGl0KCJAIilbMV0uY291bnQoIi4iKSA9PSAxOgotICAgICAgICBFcnJvckV4aXQo
IkludmFsaWQgZW1haWwgYWRkcmVzczogJXMiICUgcmV2aWV3ZXIpCi0gICAgZm9ybV9maWVsZHMu
YXBwZW5kKCgicmV2aWV3ZXJzIiwgb3B0aW9ucy5yZXZpZXdlcnMpKQotICBpZiBvcHRpb25zLmNj
OgotICAgIGZvciBjYyBpbiBvcHRpb25zLmNjLnNwbGl0KCcsJyk6Ci0gICAgICBpZiAiQCIgaW4g
Y2MgYW5kIG5vdCBjYy5zcGxpdCgiQCIpWzFdLmNvdW50KCIuIikgPT0gMToKLSAgICAgICAgRXJy
b3JFeGl0KCJJbnZhbGlkIGVtYWlsIGFkZHJlc3M6ICVzIiAlIGNjKQotICAgIGZvcm1fZmllbGRz
LmFwcGVuZCgoImNjIiwgb3B0aW9ucy5jYykpCi0gIGRlc2NyaXB0aW9uID0gb3B0aW9ucy5kZXNj
cmlwdGlvbgotICBpZiBvcHRpb25zLmRlc2NyaXB0aW9uX2ZpbGU6Ci0gICAgaWYgb3B0aW9ucy5k
ZXNjcmlwdGlvbjoKLSAgICAgIEVycm9yRXhpdCgiQ2FuJ3Qgc3BlY2lmeSBkZXNjcmlwdGlvbiBh
bmQgZGVzY3JpcHRpb25fZmlsZSIpCi0gICAgZmlsZSA9IG9wZW4ob3B0aW9ucy5kZXNjcmlwdGlv
bl9maWxlLCAncicpCi0gICAgZGVzY3JpcHRpb24gPSBmaWxlLnJlYWQoKQotICAgIGZpbGUuY2xv
c2UoKQotICBpZiBkZXNjcmlwdGlvbjoKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJkZXNjcmlw
dGlvbiIsIGRlc2NyaXB0aW9uKSkKLSAgIyBTZW5kIGEgaGFzaCBvZiBhbGwgdGhlIGJhc2UgZmls
ZSBzbyB0aGUgc2VydmVyIGNhbiBkZXRlcm1pbmUgaWYgYSBjb3B5Ci0gICMgYWxyZWFkeSBleGlz
dHMgaW4gYW4gZWFybGllciBwYXRjaHNldC4KLSAgYmFzZV9oYXNoZXMgPSAiIgotICBmb3IgZmls
ZSwgaW5mbyBpbiBmaWxlcy5pdGVyaXRlbXMoKToKLSAgICBpZiBub3QgaW5mb1swXSBpcyBOb25l
OgotICAgICAgY2hlY2tzdW0gPSBtZDUubmV3KGluZm9bMF0pLmhleGRpZ2VzdCgpCi0gICAgICBp
ZiBiYXNlX2hhc2hlczoKLSAgICAgICAgYmFzZV9oYXNoZXMgKz0gInwiCi0gICAgICBiYXNlX2hh
c2hlcyArPSBjaGVja3N1bSArICI6IiArIGZpbGUKLSAgZm9ybV9maWVsZHMuYXBwZW5kKCgiYmFz
ZV9oYXNoZXMiLCBiYXNlX2hhc2hlcykpCi0gICMgSWYgd2UncmUgdXBsb2FkaW5nIGJhc2UgZmls
ZXMsIGRvbid0IHNlbmQgdGhlIGVtYWlsIGJlZm9yZSB0aGUgdXBsb2Fkcywgc28KLSAgIyB0aGF0
IGl0IGNvbnRhaW5zIHRoZSBmaWxlIHN0YXR1cy4KLSAgaWYgb3B0aW9ucy5zZW5kX21haWwgYW5k
IG9wdGlvbnMuZG93bmxvYWRfYmFzZToKLSAgICBmb3JtX2ZpZWxkcy5hcHBlbmQoKCJzZW5kX21h
aWwiLCAiMSIpKQotICBpZiBub3Qgb3B0aW9ucy5kb3dubG9hZF9iYXNlOgotICAgIGZvcm1fZmll
bGRzLmFwcGVuZCgoImNvbnRlbnRfdXBsb2FkIiwgIjEiKSkKLSAgaWYgbGVuKGRhdGEpID4gTUFY
X1VQTE9BRF9TSVpFOgotICAgIHByaW50ICJQYXRjaCBpcyBsYXJnZSwgc28gdXBsb2FkaW5nIGZp
bGUgcGF0Y2hlcyBzZXBhcmF0ZWx5LiIKLSAgICB1cGxvYWRlZF9kaWZmX2ZpbGUgPSBbXQotICAg
IGZvcm1fZmllbGRzLmFwcGVuZCgoInNlcGFyYXRlX3BhdGNoZXMiLCAiMSIpKQotICBlbHNlOgot
ICAgIHVwbG9hZGVkX2RpZmZfZmlsZSA9IFsoImRhdGEiLCAiZGF0YS5kaWZmIiwgZGF0YSldCi0g
IGN0eXBlLCBib2R5ID0gRW5jb2RlTXVsdGlwYXJ0Rm9ybURhdGEoZm9ybV9maWVsZHMsIHVwbG9h
ZGVkX2RpZmZfZmlsZSkKLSAgcmVzcG9uc2VfYm9keSA9IHJwY19zZXJ2ZXIuU2VuZCgiL3VwbG9h
ZCIsIGJvZHksIGNvbnRlbnRfdHlwZT1jdHlwZSkKLSAgcGF0Y2hzZXQgPSBOb25lCi0gIGlmIG5v
dCBvcHRpb25zLmRvd25sb2FkX2Jhc2Ugb3Igbm90IHVwbG9hZGVkX2RpZmZfZmlsZToKLSAgICBs
aW5lcyA9IHJlc3BvbnNlX2JvZHkuc3BsaXRsaW5lcygpCi0gICAgaWYgbGVuKGxpbmVzKSA+PSAy
OgotICAgICAgbXNnID0gbGluZXNbMF0KLSAgICAgIHBhdGNoc2V0ID0gbGluZXNbMV0uc3RyaXAo
KQotICAgICAgcGF0Y2hlcyA9IFt4LnNwbGl0KCIgIiwgMSkgZm9yIHggaW4gbGluZXNbMjpdXQot
ICAgIGVsc2U6Ci0gICAgICBtc2cgPSByZXNwb25zZV9ib2R5Ci0gIGVsc2U6Ci0gICAgbXNnID0g
cmVzcG9uc2VfYm9keQotICBTdGF0dXNVcGRhdGUobXNnKQotICBpZiBub3QgcmVzcG9uc2VfYm9k
eS5zdGFydHN3aXRoKCJJc3N1ZSBjcmVhdGVkLiIpIGFuZCBcCi0gIG5vdCByZXNwb25zZV9ib2R5
LnN0YXJ0c3dpdGgoIklzc3VlIHVwZGF0ZWQuIik6Ci0gICAgc3lzLmV4aXQoMCkKLSAgaXNzdWUg
PSBtc2dbbXNnLnJmaW5kKCIvIikrMTpdCi0KLSAgaWYgbm90IHVwbG9hZGVkX2RpZmZfZmlsZToK
LSAgICByZXN1bHQgPSBVcGxvYWRTZXBhcmF0ZVBhdGNoZXMoaXNzdWUsIHJwY19zZXJ2ZXIsIHBh
dGNoc2V0LCBkYXRhLCBvcHRpb25zKQotICAgIGlmIG5vdCBvcHRpb25zLmRvd25sb2FkX2Jhc2U6
Ci0gICAgICBwYXRjaGVzID0gcmVzdWx0Ci0KLSAgaWYgbm90IG9wdGlvbnMuZG93bmxvYWRfYmFz
ZToKLSAgICB2Y3MuVXBsb2FkQmFzZUZpbGVzKGlzc3VlLCBycGNfc2VydmVyLCBwYXRjaGVzLCBw
YXRjaHNldCwgb3B0aW9ucywgZmlsZXMpCi0gICAgaWYgb3B0aW9ucy5zZW5kX21haWw6Ci0gICAg
ICBycGNfc2VydmVyLlNlbmQoIi8iICsgaXNzdWUgKyAiL21haWwiLCBwYXlsb2FkPSIiKQotICBy
ZXR1cm4gaXNzdWUsIHBhdGNoc2V0Ci0KLQotZGVmIG1haW4oKToKLSAgdHJ5OgotICAgIFJlYWxN
YWluKHN5cy5hcmd2KQotICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgcHJpbnQKLSAg
ICBTdGF0dXNVcGRhdGUoIkludGVycnVwdGVkLiIpCi0gICAgc3lzLmV4aXQoMSkKLQotCi1pZiBf
X25hbWVfXyA9PSAiX19tYWluX18iOgotICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc2NyaXB0cy91cGxvYWRfZ3Rl
c3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJlMTlhZTgwOTExYy4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NjcmlwdHMvdXBsb2FkX2d0ZXN0LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNzggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIidXBsb2FkX2d0ZXN0LnB5IHYwLjEuMCAtLSB1cGxvYWRzIGEgR29vZ2xl
IFRlc3QgcGF0Y2ggZm9yIHJldmlldy4KLQotVGhpcyBzaW1wbGUgd3JhcHBlciBwYXNzZXMgYWxs
IGNvbW1hbmQgbGluZSBmbGFncyBhbmQKLS0tY2M9Z29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVn
cm91cHMuY29tIHRvIHVwbG9hZC5weS4KLQotVVNBR0U6IHVwbG9hZF9ndGVzdC5weSBbb3B0aW9u
cyBmb3IgdXBsb2FkLnB5XQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpo
YW55b25nIFdhbiknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1DQ19GTEFHID0gJy0tY2M9
JwotR1RFU1RfR1JPVVAgPSAnZ29vZ2xldGVzdGZyYW1ld29ya0Bnb29nbGVncm91cHMuY29tJwot
Ci0KLWRlZiBtYWluKCk6Ci0gICMgRmluZHMgdGhlIHBhdGggdG8gdXBsb2FkLnB5LCBhc3N1bWlu
ZyBpdCBpcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKLSAgIyBhcyB0aGlzIGZpbGUuCi0gIG15X2Rp
ciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICB1cGxvYWRf
cHlfcGF0aCA9IG9zLnBhdGguam9pbihteV9kaXIsICd1cGxvYWQucHknKQotCi0gICMgQWRkcyBH
b29nbGUgVGVzdCBkaXNjdXNzaW9uIGdyb3VwIHRvIHRoZSBjYyBsaW5lIGlmIGl0J3Mgbm90IHRo
ZXJlCi0gICMgYWxyZWFkeS4KLSAgdXBsb2FkX3B5X2FyZ3YgPSBbdXBsb2FkX3B5X3BhdGhdCi0g
IGZvdW5kX2NjX2ZsYWcgPSBGYWxzZQotICBmb3IgYXJnIGluIHN5cy5hcmd2WzE6XToKLSAgICBp
ZiBhcmcuc3RhcnRzd2l0aChDQ19GTEFHKToKLSAgICAgIGZvdW5kX2NjX2ZsYWcgPSBUcnVlCi0g
ICAgICBjY19saW5lID0gYXJnW2xlbihDQ19GTEFHKTpdCi0gICAgICBjY19saXN0ID0gW2FkZHIg
Zm9yIGFkZHIgaW4gY2NfbGluZS5zcGxpdCgnLCcpIGlmIGFkZHJdCi0gICAgICBpZiBHVEVTVF9H
Uk9VUCBub3QgaW4gY2NfbGlzdDoKLSAgICAgICAgY2NfbGlzdC5hcHBlbmQoR1RFU1RfR1JPVVAp
Ci0gICAgICB1cGxvYWRfcHlfYXJndi5hcHBlbmQoQ0NfRkxBRyArICcsJy5qb2luKGNjX2xpc3Qp
KQotICAgIGVsc2U6Ci0gICAgICB1cGxvYWRfcHlfYXJndi5hcHBlbmQoYXJnKQotCi0gIGlmIG5v
dCBmb3VuZF9jY19mbGFnOgotICAgIHVwbG9hZF9weV9hcmd2LmFwcGVuZChDQ19GTEFHICsgR1RF
U1RfR1JPVVApCi0KLSAgIyBJbnZva2VzIHVwbG9hZC5weSB3aXRoIHRoZSBtb2RpZmllZCBjb21t
YW5kIGxpbmUgZmxhZ3MuCi0gIG9zLmV4ZWN2KHVwbG9hZF9weV9wYXRoLCB1cGxvYWRfcHlfYXJn
dikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBtYWluKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1hbGwuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxs
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTljZWU1MjIzMzMuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsNDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0
OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8v
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLy8KLS8vIEF1dGhvcjogbWhldWxlQGdvb2dsZS5jb20gKE1hcmt1cyBIZXVsZSkKLS8vCi0v
LyBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBTb21l
dGltZXMgaXQncyBkZXNpcmFibGUgdG8gYnVpbGQgR29vZ2xlIFRlc3QgYnkgY29tcGlsaW5nIGEg
c2luZ2xlIGZpbGUuCi0vLyBUaGlzIGZpbGUgc2VydmVzIHRoaXMgcHVycG9zZS4KLQotLy8gVGhp
cyBsaW5lIGVuc3VyZXMgdGhhdCBndGVzdC5oIGNhbiBiZSBjb21waWxlZCBvbiBpdHMgb3duLCBl
dmVuCi0vLyB3aGVuIGl0J3MgZnVzZWQuCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8g
VGhlIGZvbGxvd2luZyBsaW5lcyBwdWxsIGluIHRoZSByZWFsIGd0ZXN0ICouY2MgZmlsZXMuCi0j
aW5jbHVkZSAic3JjL2d0ZXN0LmNjIgotI2luY2x1ZGUgInNyYy9ndGVzdC1kZWF0aC10ZXN0LmNj
IgotI2luY2x1ZGUgInNyYy9ndGVzdC1maWxlcGF0aC5jYyIKLSNpbmNsdWRlICJzcmMvZ3Rlc3Qt
cG9ydC5jYyIKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtcHJpbnRlcnMuY2MiCi0jaW5jbHVkZSAic3Jj
L2d0ZXN0LXRlc3QtcGFydC5jYyIKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1kZWF0aC10ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3Qvc3JjL2d0ZXN0LWRlYXRoLXRlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZkMWNjM2ZjYmZlZS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVz
dC1kZWF0aC10ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTM0MSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKSwgdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikK
LS8vCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBkZWF0aCB0ZXN0cy4KLQotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LWRlYXRoLXRlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1w
b3J0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvY3VzdG9tL2d0ZXN0LmgiCi0KLSNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAotCi0jIGlmIEdURVNUX09TX01BQwotIyAgaW5jbHVkZSA8Y3J0
X2V4dGVybnMuaD4KLSMgZW5kaWYgIC8vIEdURVNUX09TX01BQwotCi0jIGluY2x1ZGUgPGVycm5v
Lmg+Ci0jIGluY2x1ZGUgPGZjbnRsLmg+Ci0jIGluY2x1ZGUgPGxpbWl0cy5oPgotCi0jIGlmIEdU
RVNUX09TX0xJTlVYCi0jICBpbmNsdWRlIDxzaWduYWwuaD4KLSMgZW5kaWYgIC8vIEdURVNUX09T
X0xJTlVYCi0KLSMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0KLSMgaWYgR1RFU1RfT1NfV0lORE9XUwot
IyAgaW5jbHVkZSA8d2luZG93cy5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDxzeXMvbW1hbi5oPgot
IyAgaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQot
IyBpZiBHVEVTVF9PU19RTlgKLSMgIGluY2x1ZGUgPHNwYXduLmg+Ci0jIGVuZGlmICAvLyBHVEVT
VF9PU19RTlgKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXN0
cmluZy5oIgotCi0vLyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFy
dCBvZiBHb29nbGUgVGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZv
cmUgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJl
IGEgY29tcGlsZXIgZXJyb3IuICBUaGlzIHRyaWNrIGV4aXN0cyB0bwotLy8gcHJldmVudCB0aGUg
YWNjaWRlbnRhbCBpbmNsdXNpb24gb2YgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4gdGhlCi0vLyB1
c2VyJ3MgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJz
cmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0K
LW5hbWVzcGFjZSB0ZXN0aW5nIHsKLQotLy8gQ29uc3RhbnRzLgotCi0vLyBUaGUgZGVmYXVsdCBk
ZWF0aCB0ZXN0IHN0eWxlLgotc3RhdGljIGNvbnN0IGNoYXIga0RlZmF1bHREZWF0aFRlc3RTdHls
ZVtdID0gImZhc3QiOwotCi1HVEVTVF9ERUZJTkVfc3RyaW5nXygKLSAgICBkZWF0aF90ZXN0X3N0
eWxlLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImRlYXRoX3Rlc3Rfc3R5bGUi
LCBrRGVmYXVsdERlYXRoVGVzdFN0eWxlKSwKLSAgICAiSW5kaWNhdGVzIGhvdyB0byBydW4gYSBk
ZWF0aCB0ZXN0IGluIGEgZm9ya2VkIGNoaWxkIHByb2Nlc3M6ICIKLSAgICAiXCJ0aHJlYWRzYWZl
XCIgKGNoaWxkIHByb2Nlc3MgcmUtZXhlY3V0ZXMgdGhlIHRlc3QgYmluYXJ5ICIKLSAgICAiZnJv
bSB0aGUgYmVnaW5uaW5nLCBydW5uaW5nIG9ubHkgdGhlIHNwZWNpZmljIGRlYXRoIHRlc3QpIG9y
ICIKLSAgICAiXCJmYXN0XCIgKGNoaWxkIHByb2Nlc3MgcnVucyB0aGUgZGVhdGggdGVzdCBpbW1l
ZGlhdGVseSAiCi0gICAgImFmdGVyIGZvcmtpbmcpLiIpOwotCi1HVEVTVF9ERUZJTkVfYm9vbF8o
Ci0gICAgZGVhdGhfdGVzdF91c2VfZm9yaywKLSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVu
digiZGVhdGhfdGVzdF91c2VfZm9yayIsIGZhbHNlKSwKLSAgICAiSW5zdHJ1Y3RzIHRvIHVzZSBm
b3JrKCkvX2V4aXQoKSBpbnN0ZWFkIG9mIGNsb25lKCkgaW4gZGVhdGggdGVzdHMuICIKLSAgICAi
SWdub3JlZCBhbmQgYWx3YXlzIHVzZXMgZm9yaygpIG9uIFBPU0lYIHN5c3RlbXMgd2hlcmUgY2xv
bmUoKSBpcyBub3QgIgotICAgICJpbXBsZW1lbnRlZC4gVXNlZnVsIHdoZW4gcnVubmluZyB1bmRl
ciB2YWxncmluZCBvciBzaW1pbGFyIHRvb2xzIGlmICIKLSAgICAidGhvc2UgZG8gbm90IHN1cHBv
cnQgY2xvbmUoKS4gVmFsZ3JpbmQgMy4zLjEgd2lsbCBqdXN0IGZhaWwgaWYgIgotICAgICJpdCBz
ZWVzIGFuIHVuc3VwcG9ydGVkIGNvbWJpbmF0aW9uIG9mIGNsb25lKCkgZmxhZ3MuICIKLSAgICAi
SXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGZsYWcgdy9vIHZhbGdyaW5kIHRob3Vn
aCBpdCB3aWxsICIKLSAgICAid29yayBpbiA5OSUgb2YgdGhlIGNhc2VzLiBPbmNlIHZhbGdyaW5k
IGlzIGZpeGVkLCB0aGlzIGZsYWcgd2lsbCAiCi0gICAgIm1vc3QgbGlrZWx5IGJlIHJlbW92ZWQu
Iik7Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci1HVEVTVF9ERUZJTkVfc3RyaW5nXygKLSAgICBp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdCwgIiIsCi0gICAgIkluZGljYXRlcyB0aGUgZmlsZSwgbGlu
ZSBudW1iZXIsIHRlbXBvcmFsIGluZGV4IG9mICIKLSAgICAidGhlIHNpbmdsZSBkZWF0aCB0ZXN0
IHRvIHJ1biwgYW5kIGEgZmlsZSBkZXNjcmlwdG9yIHRvICIKLSAgICAid2hpY2ggYSBzdWNjZXNz
IGNvZGUgbWF5IGJlIHNlbnQsIGFsbCBzZXBhcmF0ZWQgYnkgIgotICAgICJ0aGUgJ3wnIGNoYXJh
Y3RlcnMuICBUaGlzIGZsYWcgaXMgc3BlY2lmaWVkIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJyZW50
ICIKLSAgICAicHJvY2VzcyBpcyBhIHN1Yi1wcm9jZXNzIGxhdW5jaGVkIGZvciBydW5uaW5nIGEg
dGhyZWFkLXNhZmUgIgotICAgICJkZWF0aCB0ZXN0LiAgRk9SIElOVEVSTkFMIFVTRSBPTkxZLiIp
OwotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBWYWxpZCBvbmx5IGZvciBmYXN0IGRlYXRoIHRl
c3RzLiBJbmRpY2F0ZXMgdGhlIGNvZGUgaXMgcnVubmluZyBpbiB0aGUKLS8vIGNoaWxkIHByb2Nl
c3Mgb2YgYSBmYXN0IHN0eWxlIGRlYXRoIHRlc3QuCi0jIGlmICFHVEVTVF9PU19XSU5ET1dTCi1z
dGF0aWMgYm9vbCBnX2luX2Zhc3RfZGVhdGhfdGVzdF9jaGlsZCA9IGZhbHNlOwotIyBlbmRpZgot
Ci0vLyBSZXR1cm5zIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNhbGxl
ciBpcyBjdXJyZW50bHkKLS8vIGV4ZWN1dGluZyBpbiB0aGUgY29udGV4dCBvZiB0aGUgZGVhdGgg
dGVzdCBjaGlsZCBwcm9jZXNzLiAgVG9vbHMgc3VjaCBhcwotLy8gVmFsZ3JpbmQgaGVhcCBjaGVj
a2VycyBtYXkgbmVlZCB0aGlzIHRvIG1vZGlmeSB0aGVpciBiZWhhdmlvciBpbiBkZWF0aAotLy8g
dGVzdHMuICBJTVBPUlRBTlQ6IFRoaXMgaXMgYW4gaW50ZXJuYWwgdXRpbGl0eS4gIFVzaW5nIGl0
IG1heSBicmVhayB0aGUKLS8vIGltcGxlbWVudGF0aW9uIG9mIGRlYXRoIHRlc3RzLiAgVXNlciBj
b2RlIE1VU1QgTk9UIHVzZSBpdC4KLWJvb2wgSW5EZWF0aFRlc3RDaGlsZCgpIHsKLSMgaWYgR1RF
U1RfT1NfV0lORE9XUwotCi0gIC8vIE9uIFdpbmRvd3MsIGRlYXRoIHRlc3RzIGFyZSB0aHJlYWQt
c2FmZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiB0aGUKLSAgLy8gZGVhdGhfdGVzdF9zdHls
ZSBmbGFnLgotICByZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpLmVt
cHR5KCk7Ci0KLSMgZWxzZQotCi0gIGlmIChHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID09
ICJ0aHJlYWRzYWZlIikKLSAgICByZXR1cm4gIUdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QpLmVtcHR5KCk7Ci0gIGVsc2UKLSAgICByZXR1cm4gZ19pbl9mYXN0X2RlYXRoX3Rlc3Rf
Y2hpbGQ7Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIEV4aXRl
ZFdpdGhDb2RlIGNvbnN0cnVjdG9yLgotRXhpdGVkV2l0aENvZGU6OkV4aXRlZFdpdGhDb2RlKGlu
dCBleGl0X2NvZGUpIDogZXhpdF9jb2RlXyhleGl0X2NvZGUpIHsKLX0KLQotLy8gRXhpdGVkV2l0
aENvZGUgZnVuY3Rpb24tY2FsbCBvcGVyYXRvci4KLWJvb2wgRXhpdGVkV2l0aENvZGU6Om9wZXJh
dG9yKCkoaW50IGV4aXRfc3RhdHVzKSBjb25zdCB7Ci0jIGlmIEdURVNUX09TX1dJTkRPV1MKLQot
ICByZXR1cm4gZXhpdF9zdGF0dXMgPT0gZXhpdF9jb2RlXzsKLQotIyBlbHNlCi0KLSAgcmV0dXJu
IFdJRkVYSVRFRChleGl0X3N0YXR1cykgJiYgV0VYSVRTVEFUVVMoZXhpdF9zdGF0dXMpID09IGV4
aXRfY29kZV87Ci0KLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0KLQotIyBpZiAhR1RF
U1RfT1NfV0lORE9XUwotLy8gS2lsbGVkQnlTaWduYWwgY29uc3RydWN0b3IuCi1LaWxsZWRCeVNp
Z25hbDo6S2lsbGVkQnlTaWduYWwoaW50IHNpZ251bSkgOiBzaWdudW1fKHNpZ251bSkgewotfQot
Ci0vLyBLaWxsZWRCeVNpZ25hbCBmdW5jdGlvbi1jYWxsIG9wZXJhdG9yLgotYm9vbCBLaWxsZWRC
eVNpZ25hbDo6b3BlcmF0b3IoKShpbnQgZXhpdF9zdGF0dXMpIGNvbnN0IHsKLSMgIGlmIGRlZmlu
ZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCi0gIHsKLSAgICBib29sIHJlc3Vs
dDsKLSAgICBpZiAoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8oc2lnbnVtXywgZXhp
dF9zdGF0dXMsICZyZXN1bHQpKSB7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgfQot
IyAgZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfS0lMTEVEX0JZX1NJR05BTF9PVkVSUklERV8pCi0g
IHJldHVybiBXSUZTSUdOQUxFRChleGl0X3N0YXR1cykgJiYgV1RFUk1TSUcoZXhpdF9zdGF0dXMp
ID09IHNpZ251bV87Ci19Ci0jIGVuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwotCi1uYW1lc3Bh
Y2UgaW50ZXJuYWwgewotCi0vLyBVdGlsaXRpZXMgbmVlZGVkIGZvciBkZWF0aCB0ZXN0cy4KLQot
Ly8gR2VuZXJhdGVzIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBhIGdpdmVuIGV4aXQgY29kZSwg
aW4gdGhlIGZvcm1hdAotLy8gc3BlY2lmaWVkIGJ5IHdhaXQoMikuCi1zdGF0aWMgc3RkOjpzdHJp
bmcgRXhpdFN1bW1hcnkoaW50IGV4aXRfY29kZSkgewotICBNZXNzYWdlIG07Ci0KLSMgaWYgR1RF
U1RfT1NfV0lORE9XUwotCi0gIG0gPDwgIkV4aXRlZCB3aXRoIGV4aXQgc3RhdHVzICIgPDwgZXhp
dF9jb2RlOwotCi0jIGVsc2UKLQotICBpZiAoV0lGRVhJVEVEKGV4aXRfY29kZSkpIHsKLSAgICBt
IDw8ICJFeGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAiIDw8IFdFWElUU1RBVFVTKGV4aXRfY29kZSk7
Ci0gIH0gZWxzZSBpZiAoV0lGU0lHTkFMRUQoZXhpdF9jb2RlKSkgewotICAgIG0gPDwgIlRlcm1p
bmF0ZWQgYnkgc2lnbmFsICIgPDwgV1RFUk1TSUcoZXhpdF9jb2RlKTsKLSAgfQotIyAgaWZkZWYg
V0NPUkVEVU1QCi0gIGlmIChXQ09SRURVTVAoZXhpdF9jb2RlKSkgewotICAgIG0gPDwgIiAoY29y
ZSBkdW1wZWQpIjsKLSAgfQotIyAgZW5kaWYKLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MK
LQotICByZXR1cm4gbS5HZXRTdHJpbmcoKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIGV4aXRf
c3RhdHVzIGRlc2NyaWJlcyBhIHByb2Nlc3MgdGhhdCB3YXMgdGVybWluYXRlZAotLy8gYnkgYSBz
aWduYWwsIG9yIGV4aXRlZCBub3JtYWxseSB3aXRoIGEgbm9uemVybyBleGl0IGNvZGUuCi1ib29s
IEV4aXRlZFVuc3VjY2Vzc2Z1bGx5KGludCBleGl0X3N0YXR1cykgewotICByZXR1cm4gIUV4aXRl
ZFdpdGhDb2RlKDApKGV4aXRfc3RhdHVzKTsKLX0KLQotIyBpZiAhR1RFU1RfT1NfV0lORE9XUwot
Ly8gR2VuZXJhdGVzIGEgdGV4dHVhbCBmYWlsdXJlIG1lc3NhZ2Ugd2hlbiBhIGRlYXRoIHRlc3Qg
ZmluZHMgbW9yZSB0aGFuCi0vLyBvbmUgdGhyZWFkIHJ1bm5pbmcsIG9yIGNhbm5vdCBkZXRlcm1p
bmUgdGhlIG51bWJlciBvZiB0aHJlYWRzLCBwcmlvcgotLy8gdG8gZXhlY3V0aW5nIHRoZSBnaXZl
biBzdGF0ZW1lbnQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCi0vLyBjYWxsZXIg
bm90IHRvIHBhc3MgYSB0aHJlYWRfY291bnQgb2YgMS4KLXN0YXRpYyBzdGQ6OnN0cmluZyBEZWF0
aFRlc3RUaHJlYWRXYXJuaW5nKHNpemVfdCB0aHJlYWRfY291bnQpIHsKLSAgTWVzc2FnZSBtc2c7
Ci0gIG1zZyA8PCAiRGVhdGggdGVzdHMgdXNlIGZvcmsoKSwgd2hpY2ggaXMgdW5zYWZlIHBhcnRp
Y3VsYXJseSIKLSAgICAgIDw8ICIgaW4gYSB0aHJlYWRlZCBjb250ZXh0LiBGb3IgdGhpcyB0ZXN0
LCAiIDw8IEdURVNUX05BTUVfIDw8ICIgIjsKLSAgaWYgKHRocmVhZF9jb3VudCA9PSAwKQotICAg
IG1zZyA8PCAiY291bGRuJ3QgZGV0ZWN0IHRoZSBudW1iZXIgb2YgdGhyZWFkcy4iOwotICBlbHNl
Ci0gICAgbXNnIDw8ICJkZXRlY3RlZCAiIDw8IHRocmVhZF9jb3VudCA8PCAiIHRocmVhZHMuIjsK
LSAgcmV0dXJuIG1zZy5HZXRTdHJpbmcoKTsKLX0KLSMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5E
T1dTCi0KLS8vIEZsYWcgY2hhcmFjdGVycyBmb3IgcmVwb3J0aW5nIGEgZGVhdGggdGVzdCB0aGF0
IGRpZCBub3QgZGllLgotc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdExpdmVkID0gJ0wnOwot
c3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVzdFJldHVybmVkID0gJ1InOwotc3RhdGljIGNvbnN0
IGNoYXIga0RlYXRoVGVzdFRocmV3ID0gJ1QnOwotc3RhdGljIGNvbnN0IGNoYXIga0RlYXRoVGVz
dEludGVybmFsRXJyb3IgPSAnSSc7Ci0KLS8vIEFuIGVudW1lcmF0aW9uIGRlc2NyaWJpbmcgYWxs
IG9mIHRoZSBwb3NzaWJsZSB3YXlzIHRoYXQgYSBkZWF0aCB0ZXN0IGNhbgotLy8gY29uY2x1ZGUu
ICBESUVEIG1lYW5zIHRoYXQgdGhlIHByb2Nlc3MgZGllZCB3aGlsZSBleGVjdXRpbmcgdGhlIHRl
c3QKLS8vIGNvZGU7IExJVkVEIG1lYW5zIHRoYXQgcHJvY2VzcyBsaXZlZCBiZXlvbmQgdGhlIGVu
ZCBvZiB0aGUgdGVzdCBjb2RlOwotLy8gUkVUVVJORUQgbWVhbnMgdGhhdCB0aGUgdGVzdCBzdGF0
ZW1lbnQgYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgYSByZXR1cm4KLS8vIHN0YXRlbWVudCwgd2hpY2gg
aXMgbm90IGFsbG93ZWQ7IFRIUkVXIG1lYW5zIHRoYXQgdGhlIHRlc3Qgc3RhdGVtZW50Ci0vLyBy
ZXR1cm5lZCBjb250cm9sIGJ5IHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gIElOX1BST0dSRVNTIG1l
YW5zIHRoZSB0ZXN0Ci0vLyBoYXMgbm90IHlldCBjb25jbHVkZWQuCi0vLyBUT0RPKHZsYWRsQGdv
b2dsZS5jb20pOiBVbmlmeSBuYW1lcyBhbmQgcG9zc2libHkgdmFsdWVzIGZvcgotLy8gQWJvcnRS
ZWFzb24sIERlYXRoVGVzdE91dGNvbWUsIGFuZCBmbGFnIGNoYXJhY3RlcnMgYWJvdmUuCi1lbnVt
IERlYXRoVGVzdE91dGNvbWUgeyBJTl9QUk9HUkVTUywgRElFRCwgTElWRUQsIFJFVFVSTkVELCBU
SFJFVyB9OwotCi0vLyBSb3V0aW5lIGZvciBhYm9ydGluZyB0aGUgcHJvZ3JhbSB3aGljaCBpcyBz
YWZlIHRvIGNhbGwgZnJvbSBhbgotLy8gZXhlYy1zdHlsZSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nl
c3MsIGluIHdoaWNoIGNhc2UgdGhlIGVycm9yCi0vLyBtZXNzYWdlIGlzIHByb3BhZ2F0ZWQgYmFj
ayB0byB0aGUgcGFyZW50IHByb2Nlc3MuICBPdGhlcndpc2UsIHRoZQotLy8gbWVzc2FnZSBpcyBz
aW1wbHkgcHJpbnRlZCB0byBzdGRlcnIuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2dyYW0KLS8v
IHRoZW4gZXhpdHMgd2l0aCBzdGF0dXMgMS4KLXZvaWQgRGVhdGhUZXN0QWJvcnQoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UpIHsKLSAgLy8gT24gYSBQT1NJWCBzeXN0ZW0sIHRoaXMgZnVuY3Rp
b24gbWF5IGJlIGNhbGxlZCBmcm9tIGEgdGhyZWFkc2FmZS1zdHlsZQotICAvLyBkZWF0aCB0ZXN0
IGNoaWxkIHByb2Nlc3MsIHdoaWNoIG9wZXJhdGVzIG9uIGEgdmVyeSBzbWFsbCBzdGFjay4gIFVz
ZQotICAvLyB0aGUgaGVhcCBmb3IgYW55IGFkZGl0aW9uYWwgbm9uLW1pbnVzY3VsZSBtZW1vcnkg
cmVxdWlyZW1lbnRzLgotICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZs
YWcgPQotICAgICAgR2V0VW5pdFRlc3RJbXBsKCktPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2Zs
YWcoKTsKLSAgaWYgKGZsYWcgIT0gTlVMTCkgewotICAgIEZJTEUqIHBhcmVudCA9IHBvc2l4OjpG
RE9wZW4oZmxhZy0+d3JpdGVfZmQoKSwgInciKTsKLSAgICBmcHV0YyhrRGVhdGhUZXN0SW50ZXJu
YWxFcnJvciwgcGFyZW50KTsKLSAgICBmcHJpbnRmKHBhcmVudCwgIiVzIiwgbWVzc2FnZS5jX3N0
cigpKTsKLSAgICBmZmx1c2gocGFyZW50KTsKLSAgICBfZXhpdCgxKTsKLSAgfSBlbHNlIHsKLSAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rk
ZXJyKTsKLSAgICBwb3NpeDo6QWJvcnQoKTsKLSAgfQotfQotCi0vLyBBIHJlcGxhY2VtZW50IGZv
ciBDSEVDSyB0aGF0IGNhbGxzIERlYXRoVGVzdEFib3J0IGlmIHRoZSBhc3NlcnRpb24KLS8vIGZh
aWxzLgotIyBkZWZpbmUgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXhwcmVzc2lvbikgXAotICBk
byB7IFwKLSAgICBpZiAoITo6dGVzdGluZzo6aW50ZXJuYWw6OklzVHJ1ZShleHByZXNzaW9uKSkg
eyBcCi0gICAgICBEZWF0aFRlc3RBYm9ydCggXAotICAgICAgICAgIDo6c3RkOjpzdHJpbmcoIkNI
RUNLIGZhaWxlZDogRmlsZSAiKSArIF9fRklMRV9fICsgICIsIGxpbmUgIiBcCi0gICAgICAgICAg
KyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsgIjog
IiBcCi0gICAgICAgICAgKyAjZXhwcmVzc2lvbik7IFwKLSAgICB9IFwKLSAgfSB3aGlsZSAoOjp0
ZXN0aW5nOjppbnRlcm5hbDo6QWx3YXlzRmFsc2UoKSkKLQotLy8gVGhpcyBtYWNybyBpcyBzaW1p
bGFyIHRvIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfLCBidXQgaXQgaXMgbWVhbnQgZm9yCi0vLyBl
dmFsdWF0aW5nIGFueSBzeXN0ZW0gY2FsbCB0aGF0IGZ1bGZpbGxzIHR3byBjb25kaXRpb25zOiBp
dCBtdXN0IHJldHVybgotLy8gLTEgb24gZmFpbHVyZSwgYW5kIHNldCBlcnJubyB0byBFSU5UUiB3
aGVuIGl0IGlzIGludGVycnVwdGVkIGFuZAotLy8gc2hvdWxkIGJlIHRyaWVkIGFnYWluLiAgVGhl
IG1hY3JvIGV4cGFuZHMgdG8gYSBsb29wIHRoYXQgcmVwZWF0ZWRseQotLy8gZXZhbHVhdGVzIHRo
ZSBleHByZXNzaW9uIGFzIGxvbmcgYXMgaXQgZXZhbHVhdGVzIHRvIC0xIGFuZCBzZXRzCi0vLyBl
cnJubyB0byBFSU5UUi4gIElmIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAtMSBidXQgZXJy
bm8gaXMKLS8vIHNvbWV0aGluZyBvdGhlciB0aGFuIEVJTlRSLCBEZWF0aFRlc3RBYm9ydCBpcyBj
YWxsZWQuCi0jIGRlZmluZSBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGV4cHJlc3Np
b24pIFwKLSAgZG8geyBcCi0gICAgaW50IGd0ZXN0X3JldHZhbDsgXAotICAgIGRvIHsgXAotICAg
ICAgZ3Rlc3RfcmV0dmFsID0gKGV4cHJlc3Npb24pOyBcCi0gICAgfSB3aGlsZSAoZ3Rlc3RfcmV0
dmFsID09IC0xICYmIGVycm5vID09IEVJTlRSKTsgXAotICAgIGlmIChndGVzdF9yZXR2YWwgPT0g
LTEpIHsgXAotICAgICAgRGVhdGhUZXN0QWJvcnQoIFwKLSAgICAgICAgICA6OnN0ZDo6c3RyaW5n
KCJDSEVDSyBmYWlsZWQ6IEZpbGUgIikgKyBfX0ZJTEVfXyArICIsIGxpbmUgIiBcCi0gICAgICAg
ICAgKyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcoX19MSU5FX18pICsg
IjogIiBcCi0gICAgICAgICAgKyAjZXhwcmVzc2lvbiArICIgIT0gLTEiKTsgXAotICAgIH0gXAot
ICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgpKQotCi0vLyBSZXR1
cm5zIHRoZSBtZXNzYWdlIGRlc2NyaWJpbmcgdGhlIGxhc3Qgc3lzdGVtIGVycm9yIGluIGVycm5v
Lgotc3RkOjpzdHJpbmcgR2V0TGFzdEVycm5vRGVzY3JpcHRpb24oKSB7Ci0gICAgcmV0dXJuIGVy
cm5vID09IDAgPyAiIiA6IHBvc2l4OjpTdHJFcnJvcihlcnJubyk7Ci19Ci0KLS8vIFRoaXMgaXMg
Y2FsbGVkIGZyb20gYSBkZWF0aCB0ZXN0IHBhcmVudCBwcm9jZXNzIHRvIHJlYWQgYSBmYWlsdXJl
Ci0vLyBtZXNzYWdlIGZyb20gdGhlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2VzcyBhbmQgbG9nIGl0
IHdpdGggdGhlIEZBVEFMCi0vLyBzZXZlcml0eS4gT24gV2luZG93cywgdGhlIG1lc3NhZ2UgaXMg
cmVhZCBmcm9tIGEgcGlwZSBoYW5kbGUuIE9uIG90aGVyCi0vLyBwbGF0Zm9ybXMsIGl0IGlzIHJl
YWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvci4KLXN0YXRpYyB2b2lkIEZhaWxGcm9tSW50ZXJuYWxF
cnJvcihpbnQgZmQpIHsKLSAgTWVzc2FnZSBlcnJvcjsKLSAgY2hhciBidWZmZXJbMjU2XTsKLSAg
aW50IG51bV9yZWFkOwotCi0gIGRvIHsKLSAgICB3aGlsZSAoKG51bV9yZWFkID0gcG9zaXg6OlJl
YWQoZmQsIGJ1ZmZlciwgMjU1KSkgPiAwKSB7Ci0gICAgICBidWZmZXJbbnVtX3JlYWRdID0gJ1ww
JzsKLSAgICAgIGVycm9yIDw8IGJ1ZmZlcjsKLSAgICB9Ci0gIH0gd2hpbGUgKG51bV9yZWFkID09
IC0xICYmIGVycm5vID09IEVJTlRSKTsKLQotICBpZiAobnVtX3JlYWQgPT0gMCkgewotICAgIEdU
RVNUX0xPR18oRkFUQUwpIDw8IGVycm9yLkdldFN0cmluZygpOwotICB9IGVsc2UgewotICAgIGNv
bnN0IGludCBsYXN0X2Vycm9yID0gZXJybm87Ci0gICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIkVy
cm9yIHdoaWxlIHJlYWRpbmcgZGVhdGggdGVzdCBpbnRlcm5hbDogIgotICAgICAgICAgICAgICAg
ICAgICAgIDw8IEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkgPDwgIiBbIiA8PCBsYXN0X2Vycm9y
IDw8ICJdIjsKLSAgfQotfQotCi0vLyBEZWF0aCB0ZXN0IGNvbnN0cnVjdG9yLiAgSW5jcmVtZW50
cyB0aGUgcnVubmluZyBkZWF0aCB0ZXN0IGNvdW50Ci0vLyBmb3IgdGhlIGN1cnJlbnQgdGVzdC4K
LURlYXRoVGVzdDo6RGVhdGhUZXN0KCkgewotICBUZXN0SW5mbyogY29uc3QgaW5mbyA9IEdldFVu
aXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICBpZiAoaW5mbyA9PSBOVUxMKSB7
Ci0gICAgRGVhdGhUZXN0QWJvcnQoIkNhbm5vdCBydW4gYSBkZWF0aCB0ZXN0IG91dHNpZGUgb2Yg
YSBURVNUIG9yICIKLSAgICAgICAgICAgICAgICAgICAiVEVTVF9GIGNvbnN0cnVjdCIpOwotICB9
Ci19Ci0KLS8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBkZWF0aCB0ZXN0IGJ5IGRpc3BhdGNoaW5n
IHRvIHRoZSBjdXJyZW50Ci0vLyBkZWF0aCB0ZXN0IGZhY3RvcnkuCi1ib29sIERlYXRoVGVzdDo6
Q3JlYXRlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCwgY29uc3QgUkUqIHJlZ2V4LAotICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVz
dCkgewotICByZXR1cm4gR2V0VW5pdFRlc3RJbXBsKCktPmRlYXRoX3Rlc3RfZmFjdG9yeSgpLT5D
cmVhdGUoCi0gICAgICBzdGF0ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lLCB0ZXN0KTsKLX0KLQot
Y29uc3QgY2hhciogRGVhdGhUZXN0OjpMYXN0TWVzc2FnZSgpIHsKLSAgcmV0dXJuIGxhc3RfZGVh
dGhfdGVzdF9tZXNzYWdlXy5jX3N0cigpOwotfQotCi12b2lkIERlYXRoVGVzdDo6c2V0X2xhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSB7Ci0gIGxhc3Rf
ZGVhdGhfdGVzdF9tZXNzYWdlXyA9IG1lc3NhZ2U7Ci19Ci0KLXN0ZDo6c3RyaW5nIERlYXRoVGVz
dDo6bGFzdF9kZWF0aF90ZXN0X21lc3NhZ2VfOwotCi0vLyBQcm92aWRlcyBjcm9zcyBwbGF0Zm9y
bSBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBkZWF0aCBmdW5jdGlvbmFsaXR5LgotY2xhc3MgRGVh
dGhUZXN0SW1wbCA6IHB1YmxpYyBEZWF0aFRlc3QgewotIHByb3RlY3RlZDoKLSAgRGVhdGhUZXN0
SW1wbChjb25zdCBjaGFyKiBhX3N0YXRlbWVudCwgY29uc3QgUkUqIGFfcmVnZXgpCi0gICAgICA6
IHN0YXRlbWVudF8oYV9zdGF0ZW1lbnQpLAotICAgICAgICByZWdleF8oYV9yZWdleCksCi0gICAg
ICAgIHNwYXduZWRfKGZhbHNlKSwKLSAgICAgICAgc3RhdHVzXygtMSksCi0gICAgICAgIG91dGNv
bWVfKElOX1BST0dSRVNTKSwKLSAgICAgICAgcmVhZF9mZF8oLTEpLAotICAgICAgICB3cml0ZV9m
ZF8oLTEpIHt9Ci0KLSAgLy8gcmVhZF9mZF8gaXMgZXhwZWN0ZWQgdG8gYmUgY2xvc2VkIGFuZCBj
bGVhcmVkIGJ5IGEgZGVyaXZlZCBjbGFzcy4KLSAgfkRlYXRoVGVzdEltcGwoKSB7IEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKHJlYWRfZmRfID09IC0xKTsgfQotCi0gIHZvaWQgQWJvcnQoQWJvcnRS
ZWFzb24gcmVhc29uKTsKLSAgdmlydHVhbCBib29sIFBhc3NlZChib29sIHN0YXR1c19vayk7Ci0K
LSAgY29uc3QgY2hhciogc3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGVtZW50XzsgfQot
ICBjb25zdCBSRSogcmVnZXgoKSBjb25zdCB7IHJldHVybiByZWdleF87IH0KLSAgYm9vbCBzcGF3
bmVkKCkgY29uc3QgeyByZXR1cm4gc3Bhd25lZF87IH0KLSAgdm9pZCBzZXRfc3Bhd25lZChib29s
IGlzX3NwYXduZWQpIHsgc3Bhd25lZF8gPSBpc19zcGF3bmVkOyB9Ci0gIGludCBzdGF0dXMoKSBj
b25zdCB7IHJldHVybiBzdGF0dXNfOyB9Ci0gIHZvaWQgc2V0X3N0YXR1cyhpbnQgYV9zdGF0dXMp
IHsgc3RhdHVzXyA9IGFfc3RhdHVzOyB9Ci0gIERlYXRoVGVzdE91dGNvbWUgb3V0Y29tZSgpIGNv
bnN0IHsgcmV0dXJuIG91dGNvbWVfOyB9Ci0gIHZvaWQgc2V0X291dGNvbWUoRGVhdGhUZXN0T3V0
Y29tZSBhbl9vdXRjb21lKSB7IG91dGNvbWVfID0gYW5fb3V0Y29tZTsgfQotICBpbnQgcmVhZF9m
ZCgpIGNvbnN0IHsgcmV0dXJuIHJlYWRfZmRfOyB9Ci0gIHZvaWQgc2V0X3JlYWRfZmQoaW50IGZk
KSB7IHJlYWRfZmRfID0gZmQ7IH0KLSAgaW50IHdyaXRlX2ZkKCkgY29uc3QgeyByZXR1cm4gd3Jp
dGVfZmRfOyB9Ci0gIHZvaWQgc2V0X3dyaXRlX2ZkKGludCBmZCkgeyB3cml0ZV9mZF8gPSBmZDsg
fQotCi0gIC8vIENhbGxlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3Mgb25seS4gUmVhZHMgdGhlIHJl
c3VsdCBjb2RlIG9mIHRoZSBkZWF0aAotICAvLyB0ZXN0IGNoaWxkIHByb2Nlc3MgdmlhIGEgcGlw
ZSwgaW50ZXJwcmV0cyBpdCB0byBzZXQgdGhlIG91dGNvbWVfCi0gIC8vIG1lbWJlciwgYW5kIGNs
b3NlcyByZWFkX2ZkXy4gIE91dHB1dHMgZGlhZ25vc3RpY3MgYW5kIHRlcm1pbmF0ZXMgaW4KLSAg
Ly8gY2FzZSBvZiB1bmV4cGVjdGVkIGNvZGVzLgotICB2b2lkIFJlYWRBbmRJbnRlcnByZXRTdGF0
dXNCeXRlKCk7Ci0KLSBwcml2YXRlOgotICAvLyBUaGUgdGV4dHVhbCBjb250ZW50IG9mIHRoZSBj
b2RlIHRoaXMgb2JqZWN0IGlzIHRlc3RpbmcuICBUaGlzIGNsYXNzCi0gIC8vIGRvZXNuJ3Qgb3du
IHRoaXMgc3RyaW5nIGFuZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gZGVsZXRlIGl0LgotICBjb25z
dCBjaGFyKiBjb25zdCBzdGF0ZW1lbnRfOwotICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIHdo
aWNoIHRlc3Qgb3V0cHV0IG11c3QgbWF0Y2guICBEZWF0aFRlc3RJbXBsCi0gIC8vIGRvZXNuJ3Qg
b3duIHRoaXMgb2JqZWN0IGFuZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gZGVsZXRlIGl0LgotICBj
b25zdCBSRSogY29uc3QgcmVnZXhfOwotICAvLyBUcnVlIGlmIHRoZSBkZWF0aCB0ZXN0IGNoaWxk
IHByb2Nlc3MgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNwYXduZWQuCi0gIGJvb2wgc3Bhd25lZF87
Ci0gIC8vIFRoZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2Vzcy4KLSAgaW50IHN0YXR1
c187Ci0gIC8vIEhvdyB0aGUgZGVhdGggdGVzdCBjb25jbHVkZWQuCi0gIERlYXRoVGVzdE91dGNv
bWUgb3V0Y29tZV87Ci0gIC8vIERlc2NyaXB0b3IgdG8gdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBl
IHRvIHRoZSBjaGlsZCBwcm9jZXNzLiAgSXQgaXMKLSAgLy8gYWx3YXlzIC0xIGluIHRoZSBjaGls
ZCBwcm9jZXNzLiAgVGhlIGNoaWxkIGtlZXBzIGl0cyB3cml0ZSBlbmQgb2YgdGhlCi0gIC8vIHBp
cGUgaW4gd3JpdGVfZmRfLgotICBpbnQgcmVhZF9mZF87Ci0gIC8vIERlc2NyaXB0b3IgdG8gdGhl
IGNoaWxkJ3Mgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIHRvIHRoZSBwYXJlbnQgcHJvY2Vzcy4KLSAg
Ly8gSXQgaXMgYWx3YXlzIC0xIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIFRoZSBwYXJlbnQga2Vl
cHMgaXRzIGVuZCBvZiB0aGUKLSAgLy8gcGlwZSBpbiByZWFkX2ZkXy4KLSAgaW50IHdyaXRlX2Zk
XzsKLX07Ci0KLS8vIENhbGxlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3Mgb25seS4gUmVhZHMgdGhl
IHJlc3VsdCBjb2RlIG9mIHRoZSBkZWF0aAotLy8gdGVzdCBjaGlsZCBwcm9jZXNzIHZpYSBhIHBp
cGUsIGludGVycHJldHMgaXQgdG8gc2V0IHRoZSBvdXRjb21lXwotLy8gbWVtYmVyLCBhbmQgY2xv
c2VzIHJlYWRfZmRfLiAgT3V0cHV0cyBkaWFnbm9zdGljcyBhbmQgdGVybWluYXRlcyBpbgotLy8g
Y2FzZSBvZiB1bmV4cGVjdGVkIGNvZGVzLgotdm9pZCBEZWF0aFRlc3RJbXBsOjpSZWFkQW5kSW50
ZXJwcmV0U3RhdHVzQnl0ZSgpIHsKLSAgY2hhciBmbGFnOwotICBpbnQgYnl0ZXNfcmVhZDsKLQot
ICAvLyBUaGUgcmVhZCgpIGhlcmUgYmxvY2tzIHVudGlsIGRhdGEgaXMgYXZhaWxhYmxlIChzaWdu
aWZ5aW5nIHRoZQotICAvLyBmYWlsdXJlIG9mIHRoZSBkZWF0aCB0ZXN0KSBvciB1bnRpbCB0aGUg
cGlwZSBpcyBjbG9zZWQgKHNpZ25pZnlpbmcKLSAgLy8gaXRzIHN1Y2Nlc3MpLCBzbyBpdCdzIG9r
YXkgdG8gY2FsbCB0aGlzIGluIHRoZSBwYXJlbnQgYmVmb3JlCi0gIC8vIHRoZSBjaGlsZCBwcm9j
ZXNzIGhhcyBleGl0ZWQuCi0gIGRvIHsKLSAgICBieXRlc19yZWFkID0gcG9zaXg6OlJlYWQocmVh
ZF9mZCgpLCAmZmxhZywgMSk7Ci0gIH0gd2hpbGUgKGJ5dGVzX3JlYWQgPT0gLTEgJiYgZXJybm8g
PT0gRUlOVFIpOwotCi0gIGlmIChieXRlc19yZWFkID09IDApIHsKLSAgICBzZXRfb3V0Y29tZShE
SUVEKTsKLSAgfSBlbHNlIGlmIChieXRlc19yZWFkID09IDEpIHsKLSAgICBzd2l0Y2ggKGZsYWcp
IHsKLSAgICAgIGNhc2Uga0RlYXRoVGVzdFJldHVybmVkOgotICAgICAgICBzZXRfb3V0Y29tZShS
RVRVUk5FRCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBrRGVhdGhUZXN0VGhyZXc6Ci0g
ICAgICAgIHNldF9vdXRjb21lKFRIUkVXKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtE
ZWF0aFRlc3RMaXZlZDoKLSAgICAgICAgc2V0X291dGNvbWUoTElWRUQpOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2Uga0RlYXRoVGVzdEludGVybmFsRXJyb3I6Ci0gICAgICAgIEZhaWxGcm9t
SW50ZXJuYWxFcnJvcihyZWFkX2ZkKCkpOyAgLy8gRG9lcyBub3QgcmV0dXJuLgotICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdURVNUX0xPR18oRkFUQUwpIDw8ICJEZWF0
aCB0ZXN0IGNoaWxkIHByb2Nlc3MgcmVwb3J0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAidW5leHBlY3RlZCBzdGF0dXMgYnl0ZSAoIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGZsYWcpIDw8ICIpIjsKLSAgICB9Ci0gIH0g
ZWxzZSB7Ci0gICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIlJlYWQgZnJvbSBkZWF0aCB0ZXN0IGNo
aWxkIHByb2Nlc3MgZmFpbGVkOiAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgR2V0TGFzdEVy
cm5vRGVzY3JpcHRpb24oKTsKLSAgfQotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExf
KHBvc2l4OjpDbG9zZShyZWFkX2ZkKCkpKTsKLSAgc2V0X3JlYWRfZmQoLTEpOwotfQotCi0vLyBT
aWduYWxzIHRoYXQgdGhlIGRlYXRoIHRlc3QgY29kZSB3aGljaCBzaG91bGQgaGF2ZSBleGl0ZWQs
IGRpZG4ndC4KLS8vIFNob3VsZCBiZSBjYWxsZWQgb25seSBpbiBhIGRlYXRoIHRlc3QgY2hpbGQg
cHJvY2Vzcy4KLS8vIFdyaXRlcyBhIHN0YXR1cyBieXRlIHRvIHRoZSBjaGlsZCdzIHN0YXR1cyBm
aWxlIGRlc2NyaXB0b3IsIHRoZW4KLS8vIGNhbGxzIF9leGl0KDEpLgotdm9pZCBEZWF0aFRlc3RJ
bXBsOjpBYm9ydChBYm9ydFJlYXNvbiByZWFzb24pIHsKLSAgLy8gVGhlIHBhcmVudCBwcm9jZXNz
IGNvbnNpZGVycyB0aGUgZGVhdGggdGVzdCB0byBiZSBhIGZhaWx1cmUgaWYKLSAgLy8gaXQgZmlu
ZHMgYW55IGRhdGEgaW4gb3VyIHBpcGUuICBTbywgaGVyZSB3ZSB3cml0ZSBhIHNpbmdsZSBmbGFn
IGJ5dGUKLSAgLy8gdG8gdGhlIHBpcGUsIHRoZW4gZXhpdC4KLSAgY29uc3QgY2hhciBzdGF0dXNf
Y2ggPQotICAgICAgcmVhc29uID09IFRFU1RfRElEX05PVF9ESUUgPyBrRGVhdGhUZXN0TGl2ZWQg
OgotICAgICAgcmVhc29uID09IFRFU1RfVEhSRVdfRVhDRVBUSU9OID8ga0RlYXRoVGVzdFRocmV3
IDoga0RlYXRoVGVzdFJldHVybmVkOwotCi0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FM
TF8ocG9zaXg6OldyaXRlKHdyaXRlX2ZkKCksICZzdGF0dXNfY2gsIDEpKTsKLSAgLy8gV2UgYXJl
IGxlYWtpbmcgdGhlIGRlc2NyaXB0b3IgaGVyZSBiZWNhdXNlIG9uIHNvbWUgcGxhdGZvcm1zIChp
LmUuLAotICAvLyB3aGVuIGJ1aWx0IGFzIFdpbmRvd3MgRExMKSwgZGVzdHJ1Y3RvcnMgb2YgZ2xv
YmFsIG9iamVjdHMgd2lsbCBzdGlsbAotICAvLyBydW4gYWZ0ZXIgY2FsbGluZyBfZXhpdCgpLiBP
biBzdWNoIHN5c3RlbXMsIHdyaXRlX2ZkXyB3aWxsIGJlCi0gIC8vIGluZGlyZWN0bHkgY2xvc2Vk
IGZyb20gdGhlIGRlc3RydWN0b3Igb2YgVW5pdFRlc3RJbXBsLCBjYXVzaW5nIGRvdWJsZQotICAv
LyBjbG9zZSBpZiBpdCBpcyBhbHNvIGNsb3NlZCBoZXJlLiBPbiBkZWJ1ZyBjb25maWd1cmF0aW9u
cywgZG91YmxlIGNsb3NlCi0gIC8vIG1heSBhc3NlcnQuIEFzIHRoZXJlIGFyZSBubyBpbi1wcm9j
ZXNzIGJ1ZmZlcnMgdG8gZmx1c2ggaGVyZSwgd2UgYXJlCi0gIC8vIHJlbHlpbmcgb24gdGhlIE9T
IHRvIGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFmdGVyIHRoZSBwcm9jZXNzIHRlcm1pbmF0ZXMKLSAg
Ly8gd2hlbiB0aGUgZGVzdHJ1Y3RvcnMgYXJlIG5vdCBydW4uCi0gIF9leGl0KDEpOyAgLy8gRXhp
dHMgdy9vIGFueSBub3JtYWwgZXhpdCBob29rcyAod2Ugd2VyZSBzdXBwb3NlZCB0byBjcmFzaCkK
LX0KLQotLy8gUmV0dXJucyBhbiBpbmRlbnRlZCBjb3B5IG9mIHN0ZGVyciBvdXRwdXQgZm9yIGEg
ZGVhdGggdGVzdC4KLS8vIFRoaXMgbWFrZXMgZGlzdGluZ3Vpc2hpbmcgZGVhdGggdGVzdCBvdXRw
dXQgbGluZXMgZnJvbSByZWd1bGFyIGxvZyBsaW5lcwotLy8gbXVjaCBlYXNpZXIuCi1zdGF0aWMg
OjpzdGQ6OnN0cmluZyBGb3JtYXREZWF0aFRlc3RPdXRwdXQoY29uc3QgOjpzdGQ6OnN0cmluZyYg
b3V0cHV0KSB7Ci0gIDo6c3RkOjpzdHJpbmcgcmV0OwotICBmb3IgKHNpemVfdCBhdCA9IDA7IDsg
KSB7Ci0gICAgY29uc3Qgc2l6ZV90IGxpbmVfZW5kID0gb3V0cHV0LmZpbmQoJ1xuJywgYXQpOwot
ICAgIHJldCArPSAiWyAgREVBVEggICBdICI7Ci0gICAgaWYgKGxpbmVfZW5kID09IDo6c3RkOjpz
dHJpbmc6Om5wb3MpIHsKLSAgICAgIHJldCArPSBvdXRwdXQuc3Vic3RyKGF0KTsKLSAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICByZXQgKz0gb3V0cHV0LnN1YnN0cihhdCwgbGluZV9lbmQgKyAxIC0g
YXQpOwotICAgIGF0ID0gbGluZV9lbmQgKyAxOwotICB9Ci0gIHJldHVybiByZXQ7Ci19Ci0KLS8v
IEFzc2Vzc2VzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgYSBkZWF0aCB0ZXN0LCB1c2luZyBi
b3RoIHByaXZhdGUKLS8vIG1lbWJlcnMgd2hpY2ggaGF2ZSBwcmV2aW91c2x5IGJlZW4gc2V0LCBh
bmQgb25lIGFyZ3VtZW50OgotLy8KLS8vIFByaXZhdGUgZGF0YSBtZW1iZXJzOgotLy8gICBvdXRj
b21lOiAgQW4gZW51bWVyYXRpb24gZGVzY3JpYmluZyBob3cgdGhlIGRlYXRoIHRlc3QKLS8vICAg
ICAgICAgICAgIGNvbmNsdWRlZDogRElFRCwgTElWRUQsIFRIUkVXLCBvciBSRVRVUk5FRC4gIFRo
ZSBkZWF0aCB0ZXN0Ci0vLyAgICAgICAgICAgICBmYWlscyBpbiB0aGUgbGF0dGVyIHRocmVlIGNh
c2VzLgotLy8gICBzdGF0dXM6ICAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNz
LiBPbiAqbml4LCBpdCBpcyBpbiB0aGUKLS8vICAgICAgICAgICAgIGluIHRoZSBmb3JtYXQgc3Bl
Y2lmaWVkIGJ5IHdhaXQoMikuIE9uIFdpbmRvd3MsIHRoaXMgaXMgdGhlCi0vLyAgICAgICAgICAg
ICB2YWx1ZSBzdXBwbGllZCB0byB0aGUgRXhpdFByb2Nlc3MoKSBBUEkgb3IgYSBudW1lcmljIGNv
ZGUKLS8vICAgICAgICAgICAgIG9mIHRoZSBleGNlcHRpb24gdGhhdCB0ZXJtaW5hdGVkIHRoZSBw
cm9ncmFtLgotLy8gICByZWdleDogICAgQSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0IHRvIGJl
IGFwcGxpZWQgdG8KLS8vICAgICAgICAgICAgIHRoZSB0ZXN0J3MgY2FwdHVyZWQgc3RhbmRhcmQg
ZXJyb3Igb3V0cHV0OyB0aGUgZGVhdGggdGVzdAotLy8gICAgICAgICAgICAgZmFpbHMgaWYgaXQg
ZG9lcyBub3QgbWF0Y2guCi0vLwotLy8gQXJndW1lbnQ6Ci0vLyAgIHN0YXR1c19vazogdHJ1ZSBp
ZiBleGl0X3N0YXR1cyBpcyBhY2NlcHRhYmxlIGluIHRoZSBjb250ZXh0IG9mCi0vLyAgICAgICAg
ICAgICAgdGhpcyBwYXJ0aWN1bGFyIGRlYXRoIHRlc3QsIHdoaWNoIGZhaWxzIGlmIGl0IGlzIGZh
bHNlCi0vLwotLy8gUmV0dXJucyB0cnVlIGlmZiBhbGwgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMg
YXJlIG1ldC4gIE90aGVyd2lzZSwgdGhlCi0vLyBmaXJzdCBmYWlsaW5nIGNvbmRpdGlvbiwgaW4g
dGhlIG9yZGVyIGdpdmVuIGFib3ZlLCBpcyB0aGUgb25lIHRoYXQgaXMKLS8vIHJlcG9ydGVkLiBB
bHNvIHNldHMgdGhlIGxhc3QgZGVhdGggdGVzdCBtZXNzYWdlIHN0cmluZy4KLWJvb2wgRGVhdGhU
ZXN0SW1wbDo6UGFzc2VkKGJvb2wgc3RhdHVzX29rKSB7Ci0gIGlmICghc3Bhd25lZCgpKQotICAg
IHJldHVybiBmYWxzZTsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBlcnJvcl9tZXNzYWdlID0gR2V0
Q2FwdHVyZWRTdGRlcnIoKTsKLQotICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgTWVzc2FnZSBi
dWZmZXI7Ci0KLSAgYnVmZmVyIDw8ICJEZWF0aCB0ZXN0OiAiIDw8IHN0YXRlbWVudCgpIDw8ICJc
biI7Ci0gIHN3aXRjaCAob3V0Y29tZSgpKSB7Ci0gICAgY2FzZSBMSVZFRDoKLSAgICAgIGJ1ZmZl
ciA8PCAiICAgIFJlc3VsdDogZmFpbGVkIHRvIGRpZS5cbiIKLSAgICAgICAgICAgICA8PCAiIEVy
cm9yIG1zZzpcbiIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwotICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBUSFJFVzoKLSAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDog
dGhyZXcgYW4gZXhjZXB0aW9uLlxuIgotICAgICAgICAgICAgIDw8ICIgRXJyb3IgbXNnOlxuIiA8
PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVzc2FnZSk7Ci0gICAgICBicmVhazsKLSAg
ICBjYXNlIFJFVFVSTkVEOgotICAgICAgYnVmZmVyIDw8ICIgICAgUmVzdWx0OiBpbGxlZ2FsIHJl
dHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICAgICAgICA8PCAiIEVycm9yIG1zZzpc
biIgPDwgRm9ybWF0RGVhdGhUZXN0T3V0cHV0KGVycm9yX21lc3NhZ2UpOwotICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBESUVEOgotICAgICAgaWYgKHN0YXR1c19vaykgewotICAgICAgICBjb25zdCBi
b29sIG1hdGNoZWQgPSBSRTo6UGFydGlhbE1hdGNoKGVycm9yX21lc3NhZ2UuY19zdHIoKSwgKnJl
Z2V4KCkpOwotICAgICAgICBpZiAobWF0Y2hlZCkgewotICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVl
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGJ1ZmZlciA8PCAiICAgIFJlc3VsdDogZGll
ZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXJyb3IuXG4iCi0gICAgICAgICAgICAgICAgIDw8ICIg
IEV4cGVjdGVkOiAiIDw8IHJlZ2V4KCktPnBhdHRlcm4oKSA8PCAiXG4iCi0gICAgICAgICAgICAg
ICAgIDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RPdXRwdXQoZXJyb3JfbWVz
c2FnZSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA8PCAiICAg
IFJlc3VsdDogZGllZCBidXQgbm90IHdpdGggZXhwZWN0ZWQgZXhpdCBjb2RlOlxuIgotICAgICAg
ICAgICAgICAgPDwgIiAgICAgICAgICAgICIgPDwgRXhpdFN1bW1hcnkoc3RhdHVzKCkpIDw8ICJc
biIKLSAgICAgICAgICAgICAgIDw8ICJBY3R1YWwgbXNnOlxuIiA8PCBGb3JtYXREZWF0aFRlc3RP
dXRwdXQoZXJyb3JfbWVzc2FnZSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIElO
X1BST0dSRVNTOgotICAgIGRlZmF1bHQ6Ci0gICAgICBHVEVTVF9MT0dfKEZBVEFMKQotICAgICAg
ICAgIDw8ICJEZWF0aFRlc3Q6OlBhc3NlZCBzb21laG93IGNhbGxlZCBiZWZvcmUgY29uY2x1c2lv
biBvZiB0ZXN0IjsKLSAgfQotCi0gIERlYXRoVGVzdDo6c2V0X2xhc3RfZGVhdGhfdGVzdF9tZXNz
YWdlKGJ1ZmZlci5HZXRTdHJpbmcoKSk7Ci0gIHJldHVybiBzdWNjZXNzOwotfQotCi0jIGlmIEdU
RVNUX09TX1dJTkRPV1MKLS8vIFdpbmRvd3NEZWF0aFRlc3QgaW1wbGVtZW50cyBkZWF0aCB0ZXN0
cyBvbiBXaW5kb3dzLiBEdWUgdG8gdGhlCi0vLyBzcGVjaWZpY3Mgb2Ygc3RhcnRpbmcgbmV3IHBy
b2Nlc3NlcyBvbiBXaW5kb3dzLCBkZWF0aCB0ZXN0cyB0aGVyZSBhcmUKLS8vIGFsd2F5cyB0aHJl
YWRzYWZlLCBhbmQgR29vZ2xlIFRlc3QgY29uc2lkZXJzIHRoZQotLy8gLS1ndGVzdF9kZWF0aF90
ZXN0X3N0eWxlPWZhc3Qgc2V0dGluZyB0byBiZSBlcXVpdmFsZW50IHRvCi0vLyAtLWd0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGU9dGhyZWFkc2FmZSB0aGVyZS4KLS8vCi0vLyBBIGZldyBpbXBsZW1lbnRh
dGlvbiBub3RlczogIExpa2UgdGhlIExpbnV4IHZlcnNpb24sIHRoZSBXaW5kb3dzCi0vLyBpbXBs
ZW1lbnRhdGlvbiB1c2VzIHBpcGVzIGZvciBjaGlsZC10by1wYXJlbnQgY29tbXVuaWNhdGlvbi4g
QnV0IGR1ZSB0bwotLy8gdGhlIHNwZWNpZmljcyBvZiBwaXBlcyBvbiBXaW5kb3dzLCBzb21lIGV4
dHJhIHN0ZXBzIGFyZSByZXF1aXJlZDoKLS8vCi0vLyAxLiBUaGUgcGFyZW50IGNyZWF0ZXMgYSBj
b21tdW5pY2F0aW9uIHBpcGUgYW5kIHN0b3JlcyBoYW5kbGVzIHRvIGJvdGgKLS8vICAgIGVuZHMg
b2YgaXQuCi0vLyAyLiBUaGUgcGFyZW50IHN0YXJ0cyB0aGUgY2hpbGQgYW5kIHByb3ZpZGVzIGl0
IHdpdGggdGhlIGluZm9ybWF0aW9uCi0vLyAgICBuZWNlc3NhcnkgdG8gYWNxdWlyZSB0aGUgaGFu
ZGxlIHRvIHRoZSB3cml0ZSBlbmQgb2YgdGhlIHBpcGUuCi0vLyAzLiBUaGUgY2hpbGQgYWNxdWly
ZXMgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBhbmQgc2lnbmFscyB0aGUgcGFyZW50Ci0vLyAg
ICB1c2luZyBhIFdpbmRvd3MgZXZlbnQuCi0vLyA0LiBOb3cgdGhlIHBhcmVudCBjYW4gcmVsZWFz
ZSB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIG9uIGl0cyBzaWRlLiBJZgotLy8gICAgdGhpcyBp
cyBkb25lIGJlZm9yZSBzdGVwIDMsIHRoZSBvYmplY3QncyByZWZlcmVuY2UgY291bnQgZ29lcyBk
b3duIHRvCi0vLyAgICAwIGFuZCBpdCBpcyBkZXN0cm95ZWQsIHByZXZlbnRpbmcgdGhlIGNoaWxk
IGZyb20gYWNxdWlyaW5nIGl0LiBUaGUKLS8vICAgIHBhcmVudCBub3cgaGFzIHRvIHJlbGVhc2Ug
aXQsIG9yIHJlYWQgb3BlcmF0aW9ucyBvbiB0aGUgcmVhZCBlbmQgb2YKLS8vICAgIHRoZSBwaXBl
IHdpbGwgbm90IHJldHVybiB3aGVuIHRoZSBjaGlsZCB0ZXJtaW5hdGVzLgotLy8gNS4gVGhlIHBh
cmVudCByZWFkcyBjaGlsZCdzIG91dHB1dCB0aHJvdWdoIHRoZSBwaXBlIChvdXRjb21lIGNvZGUg
YW5kCi0vLyAgICBhbnkgcG9zc2libGUgZXJyb3IgbWVzc2FnZXMpIGZyb20gdGhlIHBpcGUsIGFu
ZCBpdHMgc3RkZXJyIGFuZCB0aGVuCi0vLyAgICBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gZmFpbCB0
aGUgdGVzdC4KLS8vCi0vLyBOb3RlOiB0byBkaXN0aW5ndWlzaCBXaW4zMiBBUEkgY2FsbHMgZnJv
bSB0aGUgbG9jYWwgbWV0aG9kIGFuZCBmdW5jdGlvbgotLy8gY2FsbHMsIHRoZSBmb3JtZXIgYXJl
IGV4cGxpY2l0bHkgcmVzb2x2ZWQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi0vLwotY2xhc3Mg
V2luZG93c0RlYXRoVGVzdCA6IHB1YmxpYyBEZWF0aFRlc3RJbXBsIHsKLSBwdWJsaWM6Ci0gIFdp
bmRvd3NEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgY29uc3QgUkUqIGFfcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZmls
ZSwKLSAgICAgICAgICAgICAgICAgICBpbnQgbGluZSkKLSAgICAgIDogRGVhdGhUZXN0SW1wbChh
X3N0YXRlbWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7fQotCi0gIC8v
IEFsbCBvZiB0aGVzZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gRGVhdGhU
ZXN0LgotICB2aXJ0dWFsIGludCBXYWl0KCk7Ci0gIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9s
ZSgpOwotCi0gcHJpdmF0ZToKLSAgLy8gVGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gd2hpY2ggdGhl
IGRlYXRoIHRlc3QgaXMgbG9jYXRlZC4KLSAgY29uc3QgY2hhciogY29uc3QgZmlsZV87Ci0gIC8v
IFRoZSBsaW5lIG51bWJlciBvbiB3aGljaCB0aGUgZGVhdGggdGVzdCBpcyBsb2NhdGVkLgotICBj
b25zdCBpbnQgbGluZV87Ci0gIC8vIEhhbmRsZSB0byB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBl
IHRvIHRoZSBjaGlsZCBwcm9jZXNzLgotICBBdXRvSGFuZGxlIHdyaXRlX2hhbmRsZV87Ci0gIC8v
IENoaWxkIHByb2Nlc3MgaGFuZGxlLgotICBBdXRvSGFuZGxlIGNoaWxkX2hhbmRsZV87Ci0gIC8v
IEV2ZW50IHRoZSBjaGlsZCBwcm9jZXNzIHVzZXMgdG8gc2lnbmFsIHRoZSBwYXJlbnQgdGhhdCBp
dCBoYXMKLSAgLy8gYWNxdWlyZWQgdGhlIGhhbmRsZSB0byB0aGUgd3JpdGUgZW5kIG9mIHRoZSBw
aXBlLiBBZnRlciBzZWVpbmcgdGhpcwotICAvLyBldmVudCB0aGUgcGFyZW50IGNhbiByZWxlYXNl
IGl0cyBvd24gaGFuZGxlcyB0byBtYWtlIHN1cmUgaXRzCi0gIC8vIFJlYWRGaWxlKCkgY2FsbHMg
cmV0dXJuIHdoZW4gdGhlIGNoaWxkIHRlcm1pbmF0ZXMuCi0gIEF1dG9IYW5kbGUgZXZlbnRfaGFu
ZGxlXzsKLX07Ci0KLS8vIFdhaXRzIGZvciB0aGUgY2hpbGQgaW4gYSBkZWF0aCB0ZXN0IHRvIGV4
aXQsIHJldHVybmluZyBpdHMgZXhpdAotLy8gc3RhdHVzLCBvciAwIGlmIG5vIGNoaWxkIHByb2Nl
c3MgZXhpc3RzLiAgQXMgYSBzaWRlIGVmZmVjdCwgc2V0cyB0aGUKLS8vIG91dGNvbWUgZGF0YSBt
ZW1iZXIuCi1pbnQgV2luZG93c0RlYXRoVGVzdDo6V2FpdCgpIHsKLSAgaWYgKCFzcGF3bmVkKCkp
Ci0gICAgcmV0dXJuIDA7Ci0KLSAgLy8gV2FpdCB1bnRpbCB0aGUgY2hpbGQgZWl0aGVyIHNpZ25h
bHMgdGhhdCBpdCBoYXMgYWNxdWlyZWQgdGhlIHdyaXRlIGVuZAotICAvLyBvZiB0aGUgcGlwZSBv
ciBpdCBkaWVzLgotICBjb25zdCBIQU5ETEUgd2FpdF9oYW5kbGVzWzJdID0geyBjaGlsZF9oYW5k
bGVfLkdldCgpLCBldmVudF9oYW5kbGVfLkdldCgpIH07Ci0gIHN3aXRjaCAoOjpXYWl0Rm9yTXVs
dGlwbGVPYmplY3RzKDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRf
aGFuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAvLyBX
YWl0cyBmb3IgYW55IG9mIHRoZSBoYW5kbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJTkZJTklURSkpIHsKLSAgICBjYXNlIFdBSVRfT0JKRUNUXzA6Ci0gICAgY2FzZSBX
QUlUX09CSkVDVF8wICsgMToKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHVEVT
VF9ERUFUSF9URVNUX0NIRUNLXyhmYWxzZSk7ICAvLyBTaG91bGQgbm90IGdldCBoZXJlLgotICB9
Ci0KLSAgLy8gVGhlIGNoaWxkIGhhcyBhY3F1aXJlZCB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBl
IG9yIGV4aXRlZC4KLSAgLy8gV2UgcmVsZWFzZSB0aGUgaGFuZGxlIG9uIG91ciBzaWRlIGFuZCBj
b250aW51ZS4KLSAgd3JpdGVfaGFuZGxlXy5SZXNldCgpOwotICBldmVudF9oYW5kbGVfLlJlc2V0
KCk7Ci0KLSAgUmVhZEFuZEludGVycHJldFN0YXR1c0J5dGUoKTsKLQotICAvLyBXYWl0cyBmb3Ig
dGhlIGNoaWxkIHByb2Nlc3MgdG8gZXhpdCBpZiBpdCBoYXZlbid0IGFscmVhZHkuIFRoaXMKLSAg
Ly8gcmV0dXJucyBpbW1lZGlhdGVseSBpZiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkLCBy
ZWdhcmRsZXNzIG9mCi0gIC8vIHdoZXRoZXIgcHJldmlvdXMgY2FsbHMgdG8gV2FpdEZvck11bHRp
cGxlT2JqZWN0cyBzeW5jaHJvbml6ZWQgb24gdGhpcwotICAvLyBoYW5kbGUgb3Igbm90LgotICBH
VEVTVF9ERUFUSF9URVNUX0NIRUNLXygKLSAgICAgIFdBSVRfT0JKRUNUXzAgPT0gOjpXYWl0Rm9y
U2luZ2xlT2JqZWN0KGNoaWxkX2hhbmRsZV8uR2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJTkZJTklURSkpOwotICBEV09SRCBzdGF0dXNfY29kZTsK
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oCi0gICAgICA6OkdldEV4aXRDb2RlUHJvY2Vzcyhj
aGlsZF9oYW5kbGVfLkdldCgpLCAmc3RhdHVzX2NvZGUpICE9IEZBTFNFKTsKLSAgY2hpbGRfaGFu
ZGxlXy5SZXNldCgpOwotICBzZXRfc3RhdHVzKHN0YXRpY19jYXN0PGludD4oc3RhdHVzX2NvZGUp
KTsKLSAgcmV0dXJuIHN0YXR1cygpOwotfQotCi0vLyBUaGUgQXNzdW1lUm9sZSBwcm9jZXNzIGZv
ciBhIFdpbmRvd3MgZGVhdGggdGVzdC4gIEl0IGNyZWF0ZXMgYSBjaGlsZAotLy8gcHJvY2VzcyB3
aXRoIHRoZSBzYW1lIGV4ZWN1dGFibGUgYXMgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byBydW4gdGhl
Ci0vLyBkZWF0aCB0ZXN0LiAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgZ2l2ZW4gdGhlIC0tZ3Rlc3Rf
ZmlsdGVyIGFuZAotLy8gLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFncyBzdWNo
IHRoYXQgaXQga25vd3MgdG8gcnVuIHRoZQotLy8gY3VycmVudCBkZWF0aCB0ZXN0IG9ubHkuCi1E
ZWF0aFRlc3Q6OlRlc3RSb2xlIFdpbmRvd3NEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7Ci0gIGNv
bnN0IFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0SW1wbCgpOwotICBjb25z
dCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQotICAgICAgaW1wbC0+aW50
ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZygpOwotICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5m
byA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIGNvbnN0IGludCBkZWF0aF90ZXN0X2lu
ZGV4ID0gaW5mby0+cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsKLQotICBpZiAoZmxhZyAh
PSBOVUxMKSB7Ci0gICAgLy8gUGFyc2VJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcoKSBoYXMgcGVy
Zm9ybWVkIGFsbCB0aGUgbmVjZXNzYXJ5Ci0gICAgLy8gcHJvY2Vzc2luZy4KLSAgICBzZXRfd3Jp
dGVfZmQoZmxhZy0+d3JpdGVfZmQoKSk7Ci0gICAgcmV0dXJuIEVYRUNVVEVfVEVTVDsKLSAgfQot
Ci0gIC8vIFdpbmRvd3NEZWF0aFRlc3QgdXNlcyBhbiBhbm9ueW1vdXMgcGlwZSB0byBjb21tdW5p
Y2F0ZSByZXN1bHRzIG9mCi0gIC8vIGEgZGVhdGggdGVzdC4KLSAgU0VDVVJJVFlfQVRUUklCVVRF
UyBoYW5kbGVzX2FyZV9pbmhlcml0YWJsZSA9IHsKLSAgICBzaXplb2YoU0VDVVJJVFlfQVRUUklC
VVRFUyksIE5VTEwsIFRSVUUgfTsKLSAgSEFORExFIHJlYWRfaGFuZGxlLCB3cml0ZV9oYW5kbGU7
Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKAotICAgICAgOjpDcmVhdGVQaXBlKCZyZWFkX2hh
bmRsZSwgJndyaXRlX2hhbmRsZSwgJmhhbmRsZXNfYXJlX2luaGVyaXRhYmxlLAotICAgICAgICAg
ICAgICAgICAgIDApICAvLyBEZWZhdWx0IGJ1ZmZlciBzaXplLgotICAgICAgIT0gRkFMU0UpOwot
ICBzZXRfcmVhZF9mZCg6Ol9vcGVuX29zZmhhbmRsZShyZWludGVycHJldF9jYXN0PGludHB0cl90
PihyZWFkX2hhbmRsZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9fUkRPTkxZ
KSk7Ci0gIHdyaXRlX2hhbmRsZV8uUmVzZXQod3JpdGVfaGFuZGxlKTsKLSAgZXZlbnRfaGFuZGxl
Xy5SZXNldCg6OkNyZWF0ZUV2ZW50KAotICAgICAgJmhhbmRsZXNfYXJlX2luaGVyaXRhYmxlLAot
ICAgICAgVFJVRSwgICAgLy8gVGhlIGV2ZW50IHdpbGwgYXV0b21hdGljYWxseSByZXNldCB0byBu
b24tc2lnbmFsZWQgc3RhdGUuCi0gICAgICBGQUxTRSwgICAvLyBUaGUgaW5pdGlhbCBzdGF0ZSBp
cyBub24tc2lnbmFsbGVkLgotICAgICAgTlVMTCkpOyAgLy8gVGhlIGV2ZW4gaXMgdW5uYW1lZC4K
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZXZlbnRfaGFuZGxlXy5HZXQoKSAhPSBOVUxMKTsK
LSAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsdGVyX2ZsYWcgPQotICAgICAgc3RkOjpzdHJpbmcoIi0t
IikgKyBHVEVTVF9GTEFHX1BSRUZJWF8gKyBrRmlsdGVyRmxhZyArICI9IiArCi0gICAgICBpbmZv
LT50ZXN0X2Nhc2VfbmFtZSgpICsgIi4iICsgaW5mby0+bmFtZSgpOwotICBjb25zdCBzdGQ6OnN0
cmluZyBpbnRlcm5hbF9mbGFnID0KLSAgICAgIHN0ZDo6c3RyaW5nKCItLSIpICsgR1RFU1RfRkxB
R19QUkVGSVhfICsga0ludGVybmFsUnVuRGVhdGhUZXN0RmxhZyArCi0gICAgICAiPSIgKyBmaWxl
XyArICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhsaW5lXykgKyAifCIgKwotICAgICAgU3RyZWFt
YWJsZVRvU3RyaW5nKGRlYXRoX3Rlc3RfaW5kZXgpICsgInwiICsKLSAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6R2V0Q3VycmVudFByb2Nlc3NJZCgp
KSkgKwotICAgICAgLy8gc2l6ZV90IGhhcyB0aGUgc2FtZSB3aWR0aCBhcyBwb2ludGVycyBvbiBi
b3RoIDMyLWJpdCBhbmQgNjQtYml0Ci0gICAgICAvLyBXaW5kb3dzIHBsYXRmb3Jtcy4KLSAgICAg
IC8vIFNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvdGN4ZjFkdzYu
YXNweC4KLSAgICAgICJ8IiArIFN0cmVhbWFibGVUb1N0cmluZyhyZWludGVycHJldF9jYXN0PHNp
emVfdD4od3JpdGVfaGFuZGxlKSkgKwotICAgICAgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihldmVudF9oYW5kbGVfLkdldCgpKSk7Ci0KLSAgY2hhciBl
eGVjdXRhYmxlX3BhdGhbX01BWF9QQVRIICsgMV07ICAvLyBOT0xJTlQKLSAgR1RFU1RfREVBVEhf
VEVTVF9DSEVDS18oCi0gICAgICBfTUFYX1BBVEggKyAxICE9IDo6R2V0TW9kdWxlRmlsZU5hbWVB
KE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1
dGFibGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X01BWF9QQVRIKSk7Ci0KLSAgc3RkOjpzdHJpbmcgY29tbWFuZF9saW5lID0KLSAgICAgIHN0ZDo6
c3RyaW5nKDo6R2V0Q29tbWFuZExpbmVBKCkpICsgIiAiICsgZmlsdGVyX2ZsYWcgKyAiIFwiIiAr
Ci0gICAgICBpbnRlcm5hbF9mbGFnICsgIlwiIjsKLQotICBEZWF0aFRlc3Q6OnNldF9sYXN0X2Rl
YXRoX3Rlc3RfbWVzc2FnZSgiIik7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICAvLyBGbHVzaCB0
aGUgbG9nIGJ1ZmZlcnMgc2luY2UgdGhlIGxvZyBzdHJlYW1zIGFyZSBzaGFyZWQgd2l0aCB0aGUg
Y2hpbGQuCi0gIEZsdXNoSW5mb0xvZygpOwotCi0gIC8vIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwg
c2hhcmUgdGhlIHN0YW5kYXJkIGhhbmRsZXMgd2l0aCB0aGUgcGFyZW50LgotICBTVEFSVFVQSU5G
T0Egc3RhcnR1cF9pbmZvOwotICBtZW1zZXQoJnN0YXJ0dXBfaW5mbywgMCwgc2l6ZW9mKFNUQVJU
VVBJTkZPKSk7Ci0gIHN0YXJ0dXBfaW5mby5kd0ZsYWdzID0gU1RBUlRGX1VTRVNUREhBTkRMRVM7
Ci0gIHN0YXJ0dXBfaW5mby5oU3RkSW5wdXQgPSA6OkdldFN0ZEhhbmRsZShTVERfSU5QVVRfSEFO
RExFKTsKLSAgc3RhcnR1cF9pbmZvLmhTdGRPdXRwdXQgPSA6OkdldFN0ZEhhbmRsZShTVERfT1VU
UFVUX0hBTkRMRSk7Ci0gIHN0YXJ0dXBfaW5mby5oU3RkRXJyb3IgPSA6OkdldFN0ZEhhbmRsZShT
VERfRVJST1JfSEFORExFKTsKLQotICBQUk9DRVNTX0lORk9STUFUSU9OIHByb2Nlc3NfaW5mbzsK
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oOjpDcmVhdGVQcm9jZXNzQSgKLSAgICAgIGV4ZWN1
dGFibGVfcGF0aCwKLSAgICAgIGNvbnN0X2Nhc3Q8Y2hhcio+KGNvbW1hbmRfbGluZS5jX3N0cigp
KSwKLSAgICAgIE5VTEwsICAgLy8gUmV0dW5lZCBwcm9jZXNzIGhhbmRsZSBpcyBub3QgaW5oZXJp
dGFibGUuCi0gICAgICBOVUxMLCAgIC8vIFJldHVuZWQgdGhyZWFkIGhhbmRsZSBpcyBub3QgaW5o
ZXJpdGFibGUuCi0gICAgICBUUlVFLCAgIC8vIENoaWxkIGluaGVyaXRzIGFsbCBpbmhlcml0YWJs
ZSBoYW5kbGVzIChmb3Igd3JpdGVfaGFuZGxlXykuCi0gICAgICAweDAsICAgIC8vIERlZmF1bHQg
Y3JlYXRpb24gZmxhZ3MuCi0gICAgICBOVUxMLCAgIC8vIEluaGVyaXQgdGhlIHBhcmVudCdzIGVu
dmlyb25tZW50LgotICAgICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPm9yaWdpbmFsX3dvcmtp
bmdfZGlyKCksCi0gICAgICAmc3RhcnR1cF9pbmZvLAotICAgICAgJnByb2Nlc3NfaW5mbykgIT0g
RkFMU0UpOwotICBjaGlsZF9oYW5kbGVfLlJlc2V0KHByb2Nlc3NfaW5mby5oUHJvY2Vzcyk7Ci0g
IDo6Q2xvc2VIYW5kbGUocHJvY2Vzc19pbmZvLmhUaHJlYWQpOwotICBzZXRfc3Bhd25lZCh0cnVl
KTsKLSAgcmV0dXJuIE9WRVJTRUVfVEVTVDsKLX0KLSMgZWxzZSAgLy8gV2UgYXJlIG5vdCBvbiBX
aW5kb3dzLgotCi0vLyBGb3JraW5nRGVhdGhUZXN0IHByb3ZpZGVzIGltcGxlbWVudGF0aW9ucyBm
b3IgbW9zdCBvZiB0aGUgYWJzdHJhY3QKLS8vIG1ldGhvZHMgb2YgdGhlIERlYXRoVGVzdCBpbnRl
cmZhY2UuICBPbmx5IHRoZSBBc3N1bWVSb2xlIG1ldGhvZCBpcwotLy8gbGVmdCB1bmRlZmluZWQu
Ci1jbGFzcyBGb3JraW5nRGVhdGhUZXN0IDogcHVibGljIERlYXRoVGVzdEltcGwgewotIHB1Ymxp
YzoKLSAgRm9ya2luZ0RlYXRoVGVzdChjb25zdCBjaGFyKiBzdGF0ZW1lbnQsIGNvbnN0IFJFKiBy
ZWdleCk7Ci0KLSAgLy8gQWxsIG9mIHRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBpbmhlcml0
ZWQgZnJvbSBEZWF0aFRlc3QuCi0gIHZpcnR1YWwgaW50IFdhaXQoKTsKLQotIHByb3RlY3RlZDoK
LSAgdm9pZCBzZXRfY2hpbGRfcGlkKHBpZF90IGNoaWxkX3BpZCkgeyBjaGlsZF9waWRfID0gY2hp
bGRfcGlkOyB9Ci0KLSBwcml2YXRlOgotICAvLyBQSUQgb2YgY2hpbGQgcHJvY2VzcyBkdXJpbmcg
ZGVhdGggdGVzdDsgMCBpbiB0aGUgY2hpbGQgcHJvY2VzcyBpdHNlbGYuCi0gIHBpZF90IGNoaWxk
X3BpZF87Ci19OwotCi0vLyBDb25zdHJ1Y3RzIGEgRm9ya2luZ0RlYXRoVGVzdC4KLUZvcmtpbmdE
ZWF0aFRlc3Q6OkZvcmtpbmdEZWF0aFRlc3QoY29uc3QgY2hhciogYV9zdGF0ZW1lbnQsIGNvbnN0
IFJFKiBhX3JlZ2V4KQotICAgIDogRGVhdGhUZXN0SW1wbChhX3N0YXRlbWVudCwgYV9yZWdleCks
Ci0gICAgICBjaGlsZF9waWRfKC0xKSB7fQotCi0vLyBXYWl0cyBmb3IgdGhlIGNoaWxkIGluIGEg
ZGVhdGggdGVzdCB0byBleGl0LCByZXR1cm5pbmcgaXRzIGV4aXQKLS8vIHN0YXR1cywgb3IgMCBp
ZiBubyBjaGlsZCBwcm9jZXNzIGV4aXN0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHNldHMgdGhlCi0v
LyBvdXRjb21lIGRhdGEgbWVtYmVyLgotaW50IEZvcmtpbmdEZWF0aFRlc3Q6OldhaXQoKSB7Ci0g
IGlmICghc3Bhd25lZCgpKQotICAgIHJldHVybiAwOwotCi0gIFJlYWRBbmRJbnRlcnByZXRTdGF0
dXNCeXRlKCk7Ci0KLSAgaW50IHN0YXR1c192YWx1ZTsKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S19TWVNDQUxMXyh3YWl0cGlkKGNoaWxkX3BpZF8sICZzdGF0dXNfdmFsdWUsIDApKTsKLSAgc2V0
X3N0YXR1cyhzdGF0dXNfdmFsdWUpOwotICByZXR1cm4gc3RhdHVzX3ZhbHVlOwotfQotCi0vLyBB
IGNvbmNyZXRlIGRlYXRoIHRlc3QgY2xhc3MgdGhhdCBmb3JrcywgdGhlbiBpbW1lZGlhdGVseSBy
dW5zIHRoZSB0ZXN0Ci0vLyBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KLWNsYXNzIE5vRXhlY0RlYXRo
VGVzdCA6IHB1YmxpYyBGb3JraW5nRGVhdGhUZXN0IHsKLSBwdWJsaWM6Ci0gIE5vRXhlY0RlYXRo
VGVzdChjb25zdCBjaGFyKiBhX3N0YXRlbWVudCwgY29uc3QgUkUqIGFfcmVnZXgpIDoKLSAgICAg
IEZvcmtpbmdEZWF0aFRlc3QoYV9zdGF0ZW1lbnQsIGFfcmVnZXgpIHsgfQotICB2aXJ0dWFsIFRl
c3RSb2xlIEFzc3VtZVJvbGUoKTsKLX07Ci0KLS8vIFRoZSBBc3N1bWVSb2xlIHByb2Nlc3MgZm9y
IGEgZm9yay1hbmQtcnVuIGRlYXRoIHRlc3QuICBJdCBpbXBsZW1lbnRzIGEKLS8vIHN0cmFpZ2h0
Zm9yd2FyZCBmb3JrLCB3aXRoIGEgc2ltcGxlIHBpcGUgdG8gdHJhbnNtaXQgdGhlIHN0YXR1cyBi
eXRlLgotRGVhdGhUZXN0OjpUZXN0Um9sZSBOb0V4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUoKSB7
Ci0gIGNvbnN0IHNpemVfdCB0aHJlYWRfY291bnQgPSBHZXRUaHJlYWRDb3VudCgpOwotICBpZiAo
dGhyZWFkX2NvdW50ICE9IDEpIHsKLSAgICBHVEVTVF9MT0dfKFdBUk5JTkcpIDw8IERlYXRoVGVz
dFRocmVhZFdhcm5pbmcodGhyZWFkX2NvdW50KTsKLSAgfQotCi0gIGludCBwaXBlX2ZkWzJdOwot
ICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhwaXBlKHBpcGVfZmQpICE9IC0xKTsKLQotICBEZWF0
aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgiIik7Ci0gIENhcHR1cmVTdGRlcnIo
KTsKLSAgLy8gV2hlbiB3ZSBmb3JrIHRoZSBwcm9jZXNzIGJlbG93LCB0aGUgbG9nIGZpbGUgYnVm
ZmVycyBhcmUgY29waWVkLCBidXQgdGhlCi0gIC8vIGZpbGUgZGVzY3JpcHRvcnMgYXJlIHNoYXJl
ZC4gIFdlIGZsdXNoIGFsbCBsb2cgZmlsZXMgaGVyZSBzbyB0aGF0IGNsb3NpbmcKLSAgLy8gdGhl
IGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgZG9lc24ndCB0aHJvdyBvZmYg
dGhlCi0gIC8vIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGRlc2NyaXB0b3JzIGFuZCBidWZmZXJz
IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4KLSAgLy8gVGhpcyBpcyBhcyBjbG9zZSB0byB0aGUgZm9y
ayBhcyBwb3NzaWJsZSB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIGluIGNhc2UKLSAgLy8gdGhl
cmUgYXJlIG11bHRpcGxlIHRocmVhZHMgcnVubmluZyBiZWZvcmUgdGhlIGRlYXRoIHRlc3QsIGFu
ZCBhbm90aGVyCi0gIC8vIHRocmVhZCB3cml0ZXMgdG8gdGhlIGxvZyBmaWxlLgotICBGbHVzaElu
Zm9Mb2coKTsKLQotICBjb25zdCBwaWRfdCBjaGlsZF9waWQgPSBmb3JrKCk7Ci0gIEdURVNUX0RF
QVRIX1RFU1RfQ0hFQ0tfKGNoaWxkX3BpZCAhPSAtMSk7Ci0gIHNldF9jaGlsZF9waWQoY2hpbGRf
cGlkKTsKLSAgaWYgKGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgR1RFU1RfREVBVEhfVEVTVF9DSEVD
S19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzBdKSk7Ci0gICAgc2V0X3dyaXRlX2ZkKHBpcGVfZmRb
MV0pOwotICAgIC8vIFJlZGlyZWN0cyBhbGwgbG9nZ2luZyB0byBzdGRlcnIgaW4gdGhlIGNoaWxk
IHByb2Nlc3MgdG8gcHJldmVudAotICAgIC8vIGNvbmN1cnJlbnQgd3JpdGVzIHRvIHRoZSBsb2cg
ZmlsZXMuICBXZSBjYXB0dXJlIHN0ZGVyciBpbiB0aGUgcGFyZW50Ci0gICAgLy8gcHJvY2VzcyBh
bmQgYXBwZW5kIHRoZSBjaGlsZCBwcm9jZXNzJyBvdXRwdXQgdG8gYSBsb2cuCi0gICAgTG9nVG9T
dGRlcnIoKTsKLSAgICAvLyBFdmVudCBmb3J3YXJkaW5nIHRvIHRoZSBsaXN0ZW5lcnMgb2YgZXZl
bnQgbGlzdGVuZXIgQVBJIG11c2ggYmUgc2h1dAotICAgIC8vIGRvd24gaW4gZGVhdGggdGVzdCBz
dWJwcm9jZXNzZXMuCi0gICAgR2V0VW5pdFRlc3RJbXBsKCktPmxpc3RlbmVycygpLT5TdXBwcmVz
c0V2ZW50Rm9yd2FyZGluZygpOwotICAgIGdfaW5fZmFzdF9kZWF0aF90ZXN0X2NoaWxkID0gdHJ1
ZTsKLSAgICByZXR1cm4gRVhFQ1VURV9URVNUOwotICB9IGVsc2UgewotICAgIEdURVNUX0RFQVRI
X1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oY2xvc2UocGlwZV9mZFsxXSkpOwotICAgIHNldF9yZWFkX2Zk
KHBpcGVfZmRbMF0pOwotICAgIHNldF9zcGF3bmVkKHRydWUpOwotICAgIHJldHVybiBPVkVSU0VF
X1RFU1Q7Ci0gIH0KLX0KLQotLy8gQSBjb25jcmV0ZSBkZWF0aCB0ZXN0IGNsYXNzIHRoYXQgZm9y
a3MgYW5kIHJlLWV4ZWN1dGVzIHRoZSBtYWluCi0vLyBwcm9ncmFtIGZyb20gdGhlIGJlZ2lubmlu
Zywgd2l0aCBjb21tYW5kLWxpbmUgZmxhZ3Mgc2V0IHRoYXQgY2F1c2UKLS8vIG9ubHkgdGhpcyBz
cGVjaWZpYyBkZWF0aCB0ZXN0IHRvIGJlIHJ1bi4KLWNsYXNzIEV4ZWNEZWF0aFRlc3QgOiBwdWJs
aWMgRm9ya2luZ0RlYXRoVGVzdCB7Ci0gcHVibGljOgotICBFeGVjRGVhdGhUZXN0KGNvbnN0IGNo
YXIqIGFfc3RhdGVtZW50LCBjb25zdCBSRSogYV9yZWdleCwKLSAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgOgotICAgICAgRm9ya2luZ0RlYXRoVGVzdChhX3N0YXRl
bWVudCwgYV9yZWdleCksIGZpbGVfKGZpbGUpLCBsaW5lXyhsaW5lKSB7IH0KLSAgdmlydHVhbCBU
ZXN0Um9sZSBBc3N1bWVSb2xlKCk7Ci0gcHJpdmF0ZToKLSAgc3RhdGljIDo6c3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldEFyZ3ZzRm9yRGVhdGhUZXN0Q2hpbGRQcm9jZXNzKCkgewotICAgIDo6
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGFyZ3MgPSBHZXRJbmplY3RhYmxlQXJndnMoKTsKLSMg
IGlmIGRlZmluZWQoR1RFU1RfRVhUUkFfREVBVEhfVEVTVF9DT01NQU5EX0xJTkVfQVJHU18pCi0g
ICAgOjpzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXh0cmFfYXJncyA9Ci0gICAgICAgIEdURVNU
X0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1NfKCk7Ci0gICAgYXJncy5pbnNlcnQo
YXJncy5lbmQoKSwgZXh0cmFfYXJncy5iZWdpbigpLCBleHRyYV9hcmdzLmVuZCgpKTsKLSMgIGVu
ZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1RfQ09NTUFORF9MSU5FX0FSR1Nf
KQotICAgIHJldHVybiBhcmdzOwotICB9Ci0gIC8vIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHdo
aWNoIHRoZSBkZWF0aCB0ZXN0IGlzIGxvY2F0ZWQuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbGVf
OwotICAvLyBUaGUgbGluZSBudW1iZXIgb24gd2hpY2ggdGhlIGRlYXRoIHRlc3QgaXMgbG9jYXRl
ZC4KLSAgY29uc3QgaW50IGxpbmVfOwotfTsKLQotLy8gVXRpbGl0eSBjbGFzcyBmb3IgYWNjdW11
bGF0aW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCi1jbGFzcyBBcmd1bWVudHMgewotIHB1Ymxp
YzoKLSAgQXJndW1lbnRzKCkgewotICAgIGFyZ3NfLnB1c2hfYmFjayhOVUxMKTsKLSAgfQotCi0g
IH5Bcmd1bWVudHMoKSB7Ci0gICAgZm9yIChzdGQ6OnZlY3RvcjxjaGFyKj46Oml0ZXJhdG9yIGkg
PSBhcmdzXy5iZWdpbigpOyBpICE9IGFyZ3NfLmVuZCgpOwotICAgICAgICAgKytpKSB7Ci0gICAg
ICBmcmVlKCppKTsKLSAgICB9Ci0gIH0KLSAgdm9pZCBBZGRBcmd1bWVudChjb25zdCBjaGFyKiBh
cmd1bWVudCkgewotICAgIGFyZ3NfLmluc2VydChhcmdzXy5lbmQoKSAtIDEsIHBvc2l4OjpTdHJE
dXAoYXJndW1lbnQpKTsKLSAgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+Ci0gIHZvaWQg
QWRkQXJndW1lbnRzKGNvbnN0IDo6c3RkOjp2ZWN0b3I8U3RyPiYgYXJndW1lbnRzKSB7Ci0gICAg
Zm9yICh0eXBlbmFtZSA6OnN0ZDo6dmVjdG9yPFN0cj46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhcmd1
bWVudHMuYmVnaW4oKTsKLSAgICAgICAgIGkgIT0gYXJndW1lbnRzLmVuZCgpOwotICAgICAgICAg
KytpKSB7Ci0gICAgICBhcmdzXy5pbnNlcnQoYXJnc18uZW5kKCkgLSAxLCBwb3NpeDo6U3RyRHVw
KGktPmNfc3RyKCkpKTsKLSAgICB9Ci0gIH0KLSAgY2hhciogY29uc3QqIEFyZ3YoKSB7Ci0gICAg
cmV0dXJuICZhcmdzX1swXTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjp2ZWN0b3I8Y2hhcio+
IGFyZ3NfOwotfTsKLQotLy8gQSBzdHJ1Y3QgdGhhdCBlbmNvbXBhc3NlcyB0aGUgYXJndW1lbnRz
IHRvIHRoZSBjaGlsZCBwcm9jZXNzIG9mIGEKLS8vIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVz
dCBwcm9jZXNzLgotc3RydWN0IEV4ZWNEZWF0aFRlc3RBcmdzIHsKLSAgY2hhciogY29uc3QqIGFy
Z3Y7ICAvLyBDb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUgY2hpbGQncyBjYWxsIHRvIGV4
ZWMKLSAgaW50IGNsb3NlX2ZkOyAgICAgICAvLyBGaWxlIGRlc2NyaXB0b3IgdG8gY2xvc2U7IHRo
ZSByZWFkIGVuZCBvZiBhIHBpcGUKLX07Ci0KLSMgIGlmIEdURVNUX09TX01BQwotaW5saW5lIGNo
YXIqKiBHZXRFbnZpcm9uKCkgewotICAvLyBXaGVuIEdvb2dsZSBUZXN0IGlzIGJ1aWx0IGFzIGEg
ZnJhbWV3b3JrIG9uIE1hY09TIFgsIHRoZSBlbnZpcm9uIHZhcmlhYmxlCi0gIC8vIGlzIHVuYXZh
aWxhYmxlLiBBcHBsZSdzIGRvY3VtZW50YXRpb24gKG1hbiBlbnZpcm9uKSByZWNvbW1lbmRzIHVz
aW5nCi0gIC8vIF9OU0dldEVudmlyb24oKSBpbnN0ZWFkLgotICByZXR1cm4gKl9OU0dldEVudmly
b24oKTsKLX0KLSMgIGVsc2UKLS8vIFNvbWUgUE9TSVggcGxhdGZvcm1zIGV4cGVjdCB5b3UgdG8g
ZGVjbGFyZSBlbnZpcm9uLiBleHRlcm4gIkMiIG1ha2VzCi0vLyBpdCByZXNpZGUgaW4gdGhlIGds
b2JhbCBuYW1lc3BhY2UuCi1leHRlcm4gIkMiIGNoYXIqKiBlbnZpcm9uOwotaW5saW5lIGNoYXIq
KiBHZXRFbnZpcm9uKCkgeyByZXR1cm4gZW52aXJvbjsgfQotIyAgZW5kaWYgIC8vIEdURVNUX09T
X01BQwotCi0jICBpZiAhR1RFU1RfT1NfUU5YCi0vLyBUaGUgbWFpbiBmdW5jdGlvbiBmb3IgYSB0
aHJlYWRzYWZlLXN0eWxlIGRlYXRoIHRlc3QgY2hpbGQgcHJvY2Vzcy4KLS8vIFRoaXMgZnVuY3Rp
b24gaXMgY2FsbGVkIGluIGEgY2xvbmUoKS1lZCBwcm9jZXNzIGFuZCB0aHVzIG11c3QgYXZvaWQK
LS8vIGFueSBwb3RlbnRpYWxseSB1bnNhZmUgb3BlcmF0aW9ucyBsaWtlIG1hbGxvYyBvciBsaWJj
IGZ1bmN0aW9ucy4KLXN0YXRpYyBpbnQgRXhlY0RlYXRoVGVzdENoaWxkTWFpbih2b2lkKiBjaGls
ZF9hcmcpIHsKLSAgRXhlY0RlYXRoVGVzdEFyZ3MqIGNvbnN0IGFyZ3MgPSBzdGF0aWNfY2FzdDxF
eGVjRGVhdGhUZXN0QXJncyo+KGNoaWxkX2FyZyk7Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oY2xvc2UoYXJncy0+Y2xvc2VfZmQpKTsKLQotICAvLyBXZSBuZWVkIHRvIGV4ZWN1
dGUgdGhlIHRlc3QgcHJvZ3JhbSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQotICAvLyBp
dCB3YXMgb3JpZ2luYWxseSBpbnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3Jp
Z2luYWwKLSAgLy8gd29ya2luZyBkaXJlY3RvcnkgZmlyc3QuCi0gIGNvbnN0IGNoYXIqIGNvbnN0
IG9yaWdpbmFsX2RpciA9Ci0gICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxf
d29ya2luZ19kaXIoKTsKLSAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBh
IGRpcmVjdCBzeXN0ZW0gY2FsbC4KLSAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewot
ICAgIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGly
ICsgIlwiKSBmYWlsZWQ6ICIgKwotICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2Ny
aXB0aW9uKCkpOwotICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gIH0KLQotICAvLyBXZSBjYW4g
c2FmZWx5IGNhbGwgZXhlY3ZlKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2FsbC4gIFdlCi0g
IC8vIGNhbm5vdCB1c2UgZXhlY3ZwKCkgYXMgaXQncyBhIGxpYmMgZnVuY3Rpb24gYW5kIHRodXMg
cG90ZW50aWFsbHkKLSAgLy8gdW5zYWZlLiAgU2luY2UgZXhlY3ZlKCkgZG9lc24ndCBzZWFyY2gg
dGhlIFBBVEgsIHRoZSB1c2VyIG11c3QKLSAgLy8gaW52b2tlIHRoZSB0ZXN0IHByb2dyYW0gdmlh
IGEgdmFsaWQgcGF0aCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0Ci0gIC8vIG9uZSBwYXRoIHNlcGFy
YXRvci4KLSAgZXhlY3ZlKGFyZ3MtPmFyZ3ZbMF0sIGFyZ3MtPmFyZ3YsIEdldEVudmlyb24oKSk7
Ci0gIERlYXRoVGVzdEFib3J0KHN0ZDo6c3RyaW5nKCJleGVjdmUoIikgKyBhcmdzLT5hcmd2WzBd
ICsgIiwgLi4uKSBpbiAiICsKLSAgICAgICAgICAgICAgICAgb3JpZ2luYWxfZGlyICsgIiBmYWls
ZWQ6ICIgKwotICAgICAgICAgICAgICAgICBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpKTsKLSAg
cmV0dXJuIEVYSVRfRkFJTFVSRTsKLX0KLSMgIGVuZGlmICAvLyAhR1RFU1RfT1NfUU5YCi0KLS8v
IFR3byB1dGlsaXR5IHJvdXRpbmVzIHRoYXQgdG9nZXRoZXIgZGV0ZXJtaW5lIHRoZSBkaXJlY3Rp
b24gdGhlIHN0YWNrCi0vLyBncm93cy4KLS8vIFRoaXMgY291bGQgYmUgYWNjb21wbGlzaGVkIG1v
cmUgZWxlZ2FudGx5IGJ5IGEgc2luZ2xlIHJlY3Vyc2l2ZQotLy8gZnVuY3Rpb24sIGJ1dCB3ZSB3
YW50IHRvIGd1YXJkIGFnYWluc3QgdGhlIHVubGlrZWx5IHBvc3NpYmlsaXR5IG9mCi0vLyBhIHNt
YXJ0IGNvbXBpbGVyIG9wdGltaXppbmcgdGhlIHJlY3Vyc2lvbiBhd2F5LgotLy8KLS8vIEdURVNU
X05PX0lOTElORV8gaXMgcmVxdWlyZWQgdG8gcHJldmVudCBHQ0MgNC42IGZyb20gaW5saW5pbmcK
LS8vIFN0YWNrTG93ZXJUaGFuQWRkcmVzcyBpbnRvIFN0YWNrR3Jvd3NEb3duLCB3aGljaCB0aGVu
IGRvZXNuJ3QgZ2l2ZQotLy8gY29ycmVjdCBhbnN3ZXIuCi12b2lkIFN0YWNrTG93ZXJUaGFuQWRk
cmVzcyhjb25zdCB2b2lkKiBwdHIsIGJvb2wqIHJlc3VsdCkgR1RFU1RfTk9fSU5MSU5FXzsKLXZv
aWQgU3RhY2tMb3dlclRoYW5BZGRyZXNzKGNvbnN0IHZvaWQqIHB0ciwgYm9vbCogcmVzdWx0KSB7
Ci0gIGludCBkdW1teTsKLSAgKnJlc3VsdCA9ICgmZHVtbXkgPCBwdHIpOwotfQotCi0vLyBNYWtl
IHN1cmUgQWRkcmVzc1Nhbml0aXplciBkb2VzIG5vdCB0YW1wZXIgd2l0aCB0aGUgc3RhY2sgaGVy
ZS4KLUdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9BRERSRVNTXwotYm9vbCBTdGFja0dyb3dz
RG93bigpIHsKLSAgaW50IGR1bW15OwotICBib29sIHJlc3VsdDsKLSAgU3RhY2tMb3dlclRoYW5B
ZGRyZXNzKCZkdW1teSwgJnJlc3VsdCk7Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vIFNwYXdu
cyBhIGNoaWxkIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBleGVjdXRhYmxlIGFzIHRoZSBjdXJyZW50
IHByb2Nlc3MgaW4KLS8vIGEgdGhyZWFkLXNhZmUgbWFubmVyIGFuZCBpbnN0cnVjdHMgaXQgdG8g
cnVuIHRoZSBkZWF0aCB0ZXN0LiAgVGhlCi0vLyBpbXBsZW1lbnRhdGlvbiB1c2VzIGZvcmsoMikg
KyBleGVjLiAgT24gc3lzdGVtcyB3aGVyZSBjbG9uZSgyKSBpcwotLy8gYXZhaWxhYmxlLCBpdCBp
cyB1c2VkIGluc3RlYWQsIGJlaW5nIHNsaWdodGx5IG1vcmUgdGhyZWFkLXNhZmUuICBPbiBRTlgs
Ci0vLyBmb3JrIHN1cHBvcnRzIG9ubHkgc2luZ2xlLXRocmVhZGVkIGVudmlyb25tZW50cywgc28g
dGhpcyBmdW5jdGlvbiB1c2VzCi0vLyBzcGF3bigyKSB0aGVyZSBpbnN0ZWFkLiAgVGhlIGZ1bmN0
aW9uIGRpZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmCi0vLyBhbnl0aGluZyBnb2VzIHdyb25n
Lgotc3RhdGljIHBpZF90IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGNoYXIqIGNvbnN0KiBhcmd2
LCBpbnQgY2xvc2VfZmQpIHsKLSAgRXhlY0RlYXRoVGVzdEFyZ3MgYXJncyA9IHsgYXJndiwgY2xv
c2VfZmQgfTsKLSAgcGlkX3QgY2hpbGRfcGlkID0gLTE7Ci0KLSMgIGlmIEdURVNUX09TX1FOWAot
ICAvLyBPYnRhaW5zIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgc2V0cyBpdCB0byBiZSBjbG9z
ZWQgaW4gdGhlIGNoaWxkCi0gIC8vIHByb2Nlc3MuCi0gIGNvbnN0IGludCBjd2RfZmQgPSBvcGVu
KCIuIiwgT19SRE9OTFkpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLXyhjd2RfZmQgIT0gLTEp
OwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGN3ZF9mZCwgRl9TRVRG
RCwgRkRfQ0xPRVhFQykpOwotICAvLyBXZSBuZWVkIHRvIGV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3Jh
bSBpbiB0aGUgc2FtZSBlbnZpcm9ubWVudCB3aGVyZQotICAvLyBpdCB3YXMgb3JpZ2luYWxseSBp
bnZva2VkLiAgVGhlcmVmb3JlIHdlIGNoYW5nZSB0byB0aGUgb3JpZ2luYWwKLSAgLy8gd29ya2lu
ZyBkaXJlY3RvcnkgZmlyc3QuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IG9yaWdpbmFsX2RpciA9Ci0g
ICAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19kaXIoKTsKLSAg
Ly8gV2UgY2FuIHNhZmVseSBjYWxsIGNoZGlyKCkgYXMgaXQncyBhIGRpcmVjdCBzeXN0ZW0gY2Fs
bC4KLSAgaWYgKGNoZGlyKG9yaWdpbmFsX2RpcikgIT0gMCkgewotICAgIERlYXRoVGVzdEFib3J0
KHN0ZDo6c3RyaW5nKCJjaGRpcihcIiIpICsgb3JpZ2luYWxfZGlyICsgIlwiKSBmYWlsZWQ6ICIg
KwotICAgICAgICAgICAgICAgICAgIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkpOwotICAgIHJl
dHVybiBFWElUX0ZBSUxVUkU7Ci0gIH0KLQotICBpbnQgZmRfZmxhZ3M7Ci0gIC8vIFNldCBjbG9z
ZV9mZCB0byBiZSBjbG9zZWQgYWZ0ZXIgc3Bhd24uCi0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tf
U1lTQ0FMTF8oZmRfZmxhZ3MgPSBmY250bChjbG9zZV9mZCwgRl9HRVRGRCkpOwotICBHVEVTVF9E
RUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGZjbnRsKGNsb3NlX2ZkLCBGX1NFVEZELAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkX2ZsYWdzIHwgRkRfQ0xPRVhFQykp
OwotICBzdHJ1Y3QgaW5oZXJpdGFuY2UgaW5oZXJpdCA9IHswfTsKLSAgLy8gc3Bhd24gaXMgYSBz
eXN0ZW0gY2FsbC4KLSAgY2hpbGRfcGlkID0gc3Bhd24oYXJncy5hcmd2WzBdLCAwLCBOVUxMLCAm
aW5oZXJpdCwgYXJncy5hcmd2LCBHZXRFbnZpcm9uKCkpOwotICAvLyBSZXN0b3JlcyB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oZmNoZGly
KGN3ZF9mZCkgIT0gLTEpOwotICBHVEVTVF9ERUFUSF9URVNUX0NIRUNLX1NZU0NBTExfKGNsb3Nl
KGN3ZF9mZCkpOwotCi0jICBlbHNlICAgLy8gR1RFU1RfT1NfUU5YCi0jICAgaWYgR1RFU1RfT1Nf
TElOVVgKLSAgLy8gV2hlbiBhIFNJR1BST0Ygc2lnbmFsIGlzIHJlY2VpdmVkIHdoaWxlIGZvcmso
KSBvciBjbG9uZSgpIGFyZSBleGVjdXRpbmcsCi0gIC8vIHRoZSBwcm9jZXNzIG1heSBoYW5nLiBU
byBhdm9pZCB0aGlzLCB3ZSBpZ25vcmUgU0lHUFJPRiBoZXJlIGFuZCByZS1lbmFibGUKLSAgLy8g
aXQgYWZ0ZXIgdGhlIGNhbGwgdG8gZm9yaygpL2Nsb25lKCkgaXMgY29tcGxldGUuCi0gIHN0cnVj
dCBzaWdhY3Rpb24gc2F2ZWRfc2lncHJvZl9hY3Rpb247Ci0gIHN0cnVjdCBzaWdhY3Rpb24gaWdu
b3JlX3NpZ3Byb2ZfYWN0aW9uOwotICBtZW1zZXQoJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgMCwg
c2l6ZW9mKGlnbm9yZV9zaWdwcm9mX2FjdGlvbikpOwotICBzaWdlbXB0eXNldCgmaWdub3JlX3Np
Z3Byb2ZfYWN0aW9uLnNhX21hc2spOwotICBpZ25vcmVfc2lncHJvZl9hY3Rpb24uc2FfaGFuZGxl
ciA9IFNJR19JR047Ci0gIEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfU1lTQ0FMTF8oc2lnYWN0aW9u
KAotICAgICAgU0lHUFJPRiwgJmlnbm9yZV9zaWdwcm9mX2FjdGlvbiwgJnNhdmVkX3NpZ3Byb2Zf
YWN0aW9uKSk7Ci0jICAgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSMgICBpZiBHVEVTVF9I
QVNfQ0xPTkUKLSAgY29uc3QgYm9vbCB1c2VfZm9yayA9IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91
c2VfZm9yayk7Ci0KLSAgaWYgKCF1c2VfZm9yaykgewotICAgIHN0YXRpYyBjb25zdCBib29sIHN0
YWNrX2dyb3dzX2Rvd24gPSBTdGFja0dyb3dzRG93bigpOwotICAgIGNvbnN0IHNpemVfdCBzdGFj
a19zaXplID0gZ2V0cGFnZXNpemUoKTsKLSAgICAvLyBNTUFQX0FOT05ZTU9VUyBpcyBub3QgZGVm
aW5lZCBvbiBNYWMsIHNvIHdlIHVzZSBNQVBfQU5PTiBpbnN0ZWFkLgotICAgIHZvaWQqIGNvbnN0
IHN0YWNrID0gbW1hcChOVUxMLCBzdGFja19zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTiB8IE1BUF9QUklWQVRFLCAtMSwg
MCk7Ci0gICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2sgIT0gTUFQX0ZBSUxFRCk7Ci0K
LSAgICAvLyBNYXhpbXVtIHN0YWNrIGFsaWdubWVudCBpbiBieXRlczogIEZvciBhIGRvd253YXJk
LWdyb3dpbmcgc3RhY2ssIHRoaXMKLSAgICAvLyBhbW91bnQgaXMgc3VidHJhY3RlZCBmcm9tIHNp
emUgb2YgdGhlIHN0YWNrIHNwYWNlIHRvIGdldCBhbiBhZGRyZXNzCi0gICAgLy8gdGhhdCBpcyB3
aXRoaW4gdGhlIHN0YWNrIHNwYWNlIGFuZCBpcyBhbGlnbmVkIG9uIGFsbCBzeXN0ZW1zIHdlIGNh
cmUKLSAgICAvLyBhYm91dC4gIEFzIGZhciBhcyBJIGtub3cgdGhlcmUgaXMgbm8gQUJJIHdpdGgg
c3RhY2sgYWxpZ25tZW50IGdyZWF0ZXIKLSAgICAvLyB0aGFuIDY0LiAgV2UgYXNzdW1lIHN0YWNr
IGFuZCBzdGFja19zaXplIGFscmVhZHkgaGF2ZSBhbGlnbm1lbnQgb2YKLSAgICAvLyBrTWF4U3Rh
Y2tBbGlnbm1lbnQuCi0gICAgY29uc3Qgc2l6ZV90IGtNYXhTdGFja0FsaWdubWVudCA9IDY0Owot
ICAgIHZvaWQqIGNvbnN0IHN0YWNrX3RvcCA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNoYXIqPihz
dGFjaykgKwotICAgICAgICAgICAgKHN0YWNrX2dyb3dzX2Rvd24gPyBzdGFja19zaXplIC0ga01h
eFN0YWNrQWxpZ25tZW50IDogMCk7Ci0gICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18oc3RhY2tf
c2l6ZSA+IGtNYXhTdGFja0FsaWdubWVudCAmJgotICAgICAgICByZWludGVycHJldF9jYXN0PGlu
dHB0cl90PihzdGFja190b3ApICUga01heFN0YWNrQWxpZ25tZW50ID09IDApOwotCi0gICAgY2hp
bGRfcGlkID0gY2xvbmUoJkV4ZWNEZWF0aFRlc3RDaGlsZE1haW4sIHN0YWNrX3RvcCwgU0lHQ0hM
RCwgJmFyZ3MpOwotCi0gICAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS18obXVubWFwKHN0YWNrLCBz
dGFja19zaXplKSAhPSAtMSk7Ci0gIH0KLSMgICBlbHNlCi0gIGNvbnN0IGJvb2wgdXNlX2Zvcmsg
PSB0cnVlOwotIyAgIGVuZGlmICAvLyBHVEVTVF9IQVNfQ0xPTkUKLQotICBpZiAodXNlX2Zvcmsg
JiYgKGNoaWxkX3BpZCA9IGZvcmsoKSkgPT0gMCkgewotICAgICAgRXhlY0RlYXRoVGVzdENoaWxk
TWFpbigmYXJncyk7Ci0gICAgICBfZXhpdCgwKTsKLSAgfQotIyAgZW5kaWYgIC8vIEdURVNUX09T
X1FOWAotIyAgaWYgR1RFU1RfT1NfTElOVVgKLSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVND
QUxMXygKLSAgICAgIHNpZ2FjdGlvbihTSUdQUk9GLCAmc2F2ZWRfc2lncHJvZl9hY3Rpb24sIE5V
TEwpKTsKLSMgIGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWAotCi0gIEdURVNUX0RFQVRIX1RFU1Rf
Q0hFQ0tfKGNoaWxkX3BpZCAhPSAtMSk7Ci0gIHJldHVybiBjaGlsZF9waWQ7Ci19Ci0KLS8vIFRo
ZSBBc3N1bWVSb2xlIHByb2Nlc3MgZm9yIGEgZm9yay1hbmQtZXhlYyBkZWF0aCB0ZXN0LiAgSXQg
cmUtZXhlY3V0ZXMgdGhlCi0vLyBtYWluIHByb2dyYW0gZnJvbSB0aGUgYmVnaW5uaW5nLCBzZXR0
aW5nIHRoZSAtLWd0ZXN0X2ZpbHRlcgotLy8gYW5kIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRo
X3Rlc3QgZmxhZ3MgdG8gY2F1c2Ugb25seSB0aGUgY3VycmVudAotLy8gZGVhdGggdGVzdCB0byBi
ZSByZS1ydW4uCi1EZWF0aFRlc3Q6OlRlc3RSb2xlIEV4ZWNEZWF0aFRlc3Q6OkFzc3VtZVJvbGUo
KSB7Ci0gIGNvbnN0IFVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IEdldFVuaXRUZXN0SW1wbCgp
OwotICBjb25zdCBJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcqIGNvbnN0IGZsYWcgPQotICAgICAg
aW1wbC0+aW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZygpOwotICBjb25zdCBUZXN0SW5mbyog
Y29uc3QgaW5mbyA9IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIGNvbnN0IGludCBkZWF0
aF90ZXN0X2luZGV4ID0gaW5mby0+cmVzdWx0KCktPmRlYXRoX3Rlc3RfY291bnQoKTsKLQotICBp
ZiAoZmxhZyAhPSBOVUxMKSB7Ci0gICAgc2V0X3dyaXRlX2ZkKGZsYWctPndyaXRlX2ZkKCkpOwot
ICAgIHJldHVybiBFWEVDVVRFX1RFU1Q7Ci0gIH0KLQotICBpbnQgcGlwZV9mZFsyXTsKLSAgR1RF
U1RfREVBVEhfVEVTVF9DSEVDS18ocGlwZShwaXBlX2ZkKSAhPSAtMSk7Ci0gIC8vIENsZWFyIHRo
ZSBjbG9zZS1vbi1leGVjIGZsYWcgb24gdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSwgbGVzdAot
ICAvLyBpdCBiZSBjbG9zZWQgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkb2VzIGFuIGV4ZWM6Ci0g
IEdURVNUX0RFQVRIX1RFU1RfQ0hFQ0tfKGZjbnRsKHBpcGVfZmRbMV0sIEZfU0VURkQsIDApICE9
IC0xKTsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBmaWx0ZXJfZmxhZyA9Ci0gICAgICBzdGQ6OnN0
cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGtGaWx0ZXJGbGFnICsgIj0iCi0gICAg
ICArIGluZm8tPnRlc3RfY2FzZV9uYW1lKCkgKyAiLiIgKyBpbmZvLT5uYW1lKCk7Ci0gIGNvbnN0
IHN0ZDo6c3RyaW5nIGludGVybmFsX2ZsYWcgPQotICAgICAgc3RkOjpzdHJpbmcoIi0tIikgKyBH
VEVTVF9GTEFHX1BSRUZJWF8gKyBrSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnICsgIj0iCi0gICAg
ICArIGZpbGVfICsgInwiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmVfKSArICJ8IgotICAgICAg
KyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkgKyAifCIKLSAgICAgICsgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHBpcGVfZmRbMV0pOwotICBBcmd1bWVudHMgYXJnczsKLSAgYXJncy5B
ZGRBcmd1bWVudHMoR2V0QXJndnNGb3JEZWF0aFRlc3RDaGlsZFByb2Nlc3MoKSk7Ci0gIGFyZ3Mu
QWRkQXJndW1lbnQoZmlsdGVyX2ZsYWcuY19zdHIoKSk7Ci0gIGFyZ3MuQWRkQXJndW1lbnQoaW50
ZXJuYWxfZmxhZy5jX3N0cigpKTsKLQotICBEZWF0aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3Rf
bWVzc2FnZSgiIik7Ci0KLSAgQ2FwdHVyZVN0ZGVycigpOwotICAvLyBTZWUgdGhlIGNvbW1lbnQg
aW4gTm9FeGVjRGVhdGhUZXN0OjpBc3N1bWVSb2xlIGZvciB3aHkgdGhlIG5leHQgbGluZQotICAv
LyBpcyBuZWNlc3NhcnkuCi0gIEZsdXNoSW5mb0xvZygpOwotCi0gIGNvbnN0IHBpZF90IGNoaWxk
X3BpZCA9IEV4ZWNEZWF0aFRlc3RTcGF3bkNoaWxkKGFyZ3MuQXJndigpLCBwaXBlX2ZkWzBdKTsK
LSAgR1RFU1RfREVBVEhfVEVTVF9DSEVDS19TWVNDQUxMXyhjbG9zZShwaXBlX2ZkWzFdKSk7Ci0g
IHNldF9jaGlsZF9waWQoY2hpbGRfcGlkKTsKLSAgc2V0X3JlYWRfZmQocGlwZV9mZFswXSk7Ci0g
IHNldF9zcGF3bmVkKHRydWUpOwotICByZXR1cm4gT1ZFUlNFRV9URVNUOwotfQotCi0jIGVuZGlm
ICAvLyAhR1RFU1RfT1NfV0lORE9XUwotCi0vLyBDcmVhdGVzIGEgY29uY3JldGUgRGVhdGhUZXN0
LWRlcml2ZWQgY2xhc3MgdGhhdCBkZXBlbmRzIG9uIHRoZQotLy8gLS1ndGVzdF9kZWF0aF90ZXN0
X3N0eWxlIGZsYWcsIGFuZCBzZXRzIHRoZSBwb2ludGVyIHBvaW50ZWQgdG8KLS8vIGJ5IHRoZSAi
dGVzdCIgYXJndW1lbnQgdG8gaXRzIGFkZHJlc3MuICBJZiB0aGUgdGVzdCBzaG91bGQgYmUKLS8v
IHNraXBwZWQsIHNldHMgdGhhdCBwb2ludGVyIHRvIE5VTEwuICBSZXR1cm5zIHRydWUsIHVubGVz
cyB0aGUKLS8vIGZsYWcgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuCi1ib29sIERlZmF1bHRE
ZWF0aFRlc3RGYWN0b3J5OjpDcmVhdGUoY29uc3QgY2hhciogc3RhdGVtZW50LCBjb25zdCBSRSog
cmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZmlsZSwgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVh
dGhUZXN0KiogdGVzdCkgewotICBVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBHZXRVbml0VGVz
dEltcGwoKTsKLSAgY29uc3QgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBjb25zdCBmbGFnID0K
LSAgICAgIGltcGwtPmludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKTsKLSAgY29uc3QgaW50
IGRlYXRoX3Rlc3RfaW5kZXggPSBpbXBsLT5jdXJyZW50X3Rlc3RfaW5mbygpCi0gICAgICAtPmlu
Y3JlbWVudF9kZWF0aF90ZXN0X2NvdW50KCk7Ci0KLSAgaWYgKGZsYWcgIT0gTlVMTCkgewotICAg
IGlmIChkZWF0aF90ZXN0X2luZGV4ID4gZmxhZy0+aW5kZXgoKSkgewotICAgICAgRGVhdGhUZXN0
OjpzZXRfbGFzdF9kZWF0aF90ZXN0X21lc3NhZ2UoCi0gICAgICAgICAgIkRlYXRoIHRlc3QgY291
bnQgKCIgKyBTdHJlYW1hYmxlVG9TdHJpbmcoZGVhdGhfdGVzdF9pbmRleCkKLSAgICAgICAgICAr
ICIpIHNvbWVob3cgZXhjZWVkZWQgZXhwZWN0ZWQgbWF4aW11bSAoIgotICAgICAgICAgICsgU3Ry
ZWFtYWJsZVRvU3RyaW5nKGZsYWctPmluZGV4KCkpICsgIikiKTsKLSAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAoIShmbGFnLT5maWxlKCkgPT0gZmlsZSAmJiBmbGFnLT5saW5l
KCkgPT0gbGluZSAmJgotICAgICAgICAgIGZsYWctPmluZGV4KCkgPT0gZGVhdGhfdGVzdF9pbmRl
eCkpIHsKLSAgICAgICp0ZXN0ID0gTlVMTDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAg
fQotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLQotICBpZiAoR1RFU1RfRkxBRyhkZWF0aF90ZXN0
X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIgfHwKLSAgICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9z
dHlsZSkgPT0gImZhc3QiKSB7Ci0gICAgKnRlc3QgPSBuZXcgV2luZG93c0RlYXRoVGVzdChzdGF0
ZW1lbnQsIHJlZ2V4LCBmaWxlLCBsaW5lKTsKLSAgfQotCi0jIGVsc2UKLQotICBpZiAoR1RFU1Rf
RkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9PSAidGhyZWFkc2FmZSIpIHsKLSAgICAqdGVzdCA9IG5l
dyBFeGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgsIGZpbGUsIGxpbmUpOwotICB9IGVsc2Ug
aWYgKEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPT0gImZhc3QiKSB7Ci0gICAgKnRlc3Qg
PSBuZXcgTm9FeGVjRGVhdGhUZXN0KHN0YXRlbWVudCwgcmVnZXgpOwotICB9Ci0KLSMgZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKLQotICBlbHNlIHsgIC8vIE5PTElOVCAtIHRoaXMgaXMgbW9y
ZSByZWFkYWJsZSB0aGFuIHVuYmFsYW5jZWQgYnJhY2tldHMgaW5zaWRlICNpZi4KLSAgICBEZWF0
aFRlc3Q6OnNldF9sYXN0X2RlYXRoX3Rlc3RfbWVzc2FnZSgKLSAgICAgICAgIlVua25vd24gZGVh
dGggdGVzdCBzdHlsZSBcIiIgKyBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpCi0gICAgICAg
ICsgIlwiIGVuY291bnRlcmVkIik7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLSMgaWYgR1RFU1RfT1NfV0lORE9XUwotLy8gUmVjcmVhdGVzIHRoZSBwaXBl
IGFuZCBldmVudCBoYW5kbGVzIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMsCi0vLyBzaWdu
YWxzIHRoZSBldmVudCwgYW5kIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3Igd3JhcHBlZCBhcm91
bmQgdGhlIHBpcGUKLS8vIGhhbmRsZS4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gdGhlIGNo
aWxkIHByb2Nlc3Mgb25seS4KLWludCBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvcih1bnNpZ25lZCBp
bnQgcGFyZW50X3Byb2Nlc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHdyaXRlX2hhbmRsZV9hc19zaXplX3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGV2ZW50X2hhbmRsZV9hc19zaXplX3QpIHsKLSAgQXV0b0hhbmRsZSBwYXJlbnRfcHJvY2Vz
c19oYW5kbGUoOjpPcGVuUHJvY2VzcyhQUk9DRVNTX0RVUF9IQU5ETEUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwgIC8vIE5vbi1pbmhl
cml0YWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmVudF9wcm9jZXNzX2lkKSk7Ci0gIGlmIChwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0
KCkgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxl
IHRvIG9wZW4gcGFyZW50IHByb2Nlc3MgIiArCi0gICAgICAgICAgICAgICAgICAgU3RyZWFtYWJs
ZVRvU3RyaW5nKHBhcmVudF9wcm9jZXNzX2lkKSk7Ci0gIH0KLQotICAvLyBUT0RPKHZsYWRsQGdv
b2dsZS5jb20pOiBSZXBsYWNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgd2l0aCBhCi0gIC8vIGNvbXBp
bGUtdGltZSBhc3NlcnRpb24gd2hlbiBhdmFpbGFibGUuCi0gIEdURVNUX0NIRUNLXyhzaXplb2Yo
SEFORExFKSA8PSBzaXplb2Yoc2l6ZV90KSk7Ci0KLSAgY29uc3QgSEFORExFIHdyaXRlX2hhbmRs
ZSA9Ci0gICAgICByZWludGVycHJldF9jYXN0PEhBTkRMRT4od3JpdGVfaGFuZGxlX2FzX3NpemVf
dCk7Ci0gIEhBTkRMRSBkdXBfd3JpdGVfaGFuZGxlOwotCi0gIC8vIFRoZSBuZXdseSBpbml0aWFs
aXplZCBoYW5kbGUgaXMgYWNjZXNzaWJsZSBvbmx5IGluIGluIHRoZSBwYXJlbnQKLSAgLy8gcHJv
Y2Vzcy4gVG8gb2J0YWluIG9uZSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY2hpbGQsIHdlIG5lZWQg
dG8gdXNlCi0gIC8vIER1cGxpY2F0ZUhhbmRsZS4KLSAgaWYgKCE6OkR1cGxpY2F0ZUhhbmRsZShw
YXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCksIHdyaXRlX2hhbmRsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICA6OkdldEN1cnJlbnRQcm9jZXNzKCksICZkdXBfd3JpdGVfaGFuZGxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MCwgICAgLy8gUmVxdWVzdGVkIHByaXZpbGVnZXMgaWdu
b3JlZCBzaW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRFVQTElDQVRF
X1NBTUVfQUNDRVNTIGlzIHVzZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAv
LyBSZXF1ZXN0IG5vbi1pbmhlcml0YWJsZSBoYW5kbGVyLgotICAgICAgICAgICAgICAgICAgICAg
ICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUykpIHsKLSAgICBEZWF0aFRlc3RBYm9ydCgiVW5hYmxl
IHRvIGR1cGxpY2F0ZSB0aGUgcGlwZSBoYW5kbGUgIiArCi0gICAgICAgICAgICAgICAgICAgU3Ry
ZWFtYWJsZVRvU3RyaW5nKHdyaXRlX2hhbmRsZV9hc19zaXplX3QpICsKLSAgICAgICAgICAgICAg
ICAgICAiIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICIgKwotICAgICAgICAgICAgICAgICAgIFN0
cmVhbWFibGVUb1N0cmluZyhwYXJlbnRfcHJvY2Vzc19pZCkpOwotICB9Ci0KLSAgY29uc3QgSEFO
RExFIGV2ZW50X2hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihldmVudF9oYW5kbGVf
YXNfc2l6ZV90KTsKLSAgSEFORExFIGR1cF9ldmVudF9oYW5kbGU7Ci0KLSAgaWYgKCE6OkR1cGxp
Y2F0ZUhhbmRsZShwYXJlbnRfcHJvY2Vzc19oYW5kbGUuR2V0KCksIGV2ZW50X2hhbmRsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICA6OkdldEN1cnJlbnRQcm9jZXNzKCksICZkdXBfZXZlbnRf
aGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEVVBMSUNBVEVfU0FNRV9B
Q0NFU1MpKSB7Ci0gICAgRGVhdGhUZXN0QWJvcnQoIlVuYWJsZSB0byBkdXBsaWNhdGUgdGhlIGV2
ZW50IGhhbmRsZSAiICsKLSAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcoZXZl
bnRfaGFuZGxlX2FzX3NpemVfdCkgKwotICAgICAgICAgICAgICAgICAgICIgZnJvbSB0aGUgcGFy
ZW50IHByb2Nlc3MgIiArCi0gICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHBh
cmVudF9wcm9jZXNzX2lkKSk7Ci0gIH0KLQotICBjb25zdCBpbnQgd3JpdGVfZmQgPQotICAgICAg
Ojpfb3Blbl9vc2ZoYW5kbGUocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZHVwX3dyaXRlX2hh
bmRsZSksIE9fQVBQRU5EKTsKLSAgaWYgKHdyaXRlX2ZkID09IC0xKSB7Ci0gICAgRGVhdGhUZXN0
QWJvcnQoIlVuYWJsZSB0byBjb252ZXJ0IHBpcGUgaGFuZGxlICIgKwotICAgICAgICAgICAgICAg
ICAgIFN0cmVhbWFibGVUb1N0cmluZyh3cml0ZV9oYW5kbGVfYXNfc2l6ZV90KSArCi0gICAgICAg
ICAgICAgICAgICAgIiB0byBhIGZpbGUgZGVzY3JpcHRvciIpOwotICB9Ci0KLSAgLy8gU2lnbmFs
cyB0aGUgcGFyZW50IHRoYXQgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZSBoYXMgYmVlbiBhY3F1
aXJlZAotICAvLyBzbyB0aGUgcGFyZW50IGNhbiByZWxlYXNlIGl0cyBvd24gd3JpdGUgZW5kLgot
ICA6OlNldEV2ZW50KGR1cF9ldmVudF9oYW5kbGUpOwotCi0gIHJldHVybiB3cml0ZV9mZDsKLX0K
LSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gUmV0dXJucyBhIG5ld2x5IGNyZWF0
ZWQgSW50ZXJuYWxSdW5EZWF0aFRlc3RGbGFnIG9iamVjdCB3aXRoIGZpZWxkcwotLy8gaW5pdGlh
bGl6ZWQgZnJvbSB0aGUgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkgZmxhZyBp
ZgotLy8gdGhlIGZsYWcgaXMgc3BlY2lmaWVkOyBvdGhlcndpc2UgcmV0dXJucyBOVUxMLgotSW50
ZXJuYWxSdW5EZWF0aFRlc3RGbGFnKiBQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0RmxhZygpIHsK
LSAgaWYgKEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpID09ICIiKSByZXR1cm4g
TlVMTDsKLQotICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCBpbXBsaWVzIHRoYXQgd2UgaGF2ZSA6
OnN0ZDo6c3RyaW5nLCBzbyB3ZQotICAvLyBjYW4gdXNlIGl0IGhlcmUuCi0gIGludCBsaW5lID0g
LTE7Ci0gIGludCBpbmRleCA9IC0xOwotICA6OnN0ZDo6dmVjdG9yPCA6OnN0ZDo6c3RyaW5nPiBm
aWVsZHM7Ci0gIFNwbGl0U3RyaW5nKEdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3Qp
LmNfc3RyKCksICd8JywgJmZpZWxkcyk7Ci0gIGludCB3cml0ZV9mZCA9IC0xOwotCi0jIGlmIEdU
RVNUX09TX1dJTkRPV1MKLQotICB1bnNpZ25lZCBpbnQgcGFyZW50X3Byb2Nlc3NfaWQgPSAwOwot
ICBzaXplX3Qgd3JpdGVfaGFuZGxlX2FzX3NpemVfdCA9IDA7Ci0gIHNpemVfdCBldmVudF9oYW5k
bGVfYXNfc2l6ZV90ID0gMDsKLQotICBpZiAoZmllbGRzLnNpemUoKSAhPSA2Ci0gICAgICB8fCAh
UGFyc2VOYXR1cmFsTnVtYmVyKGZpZWxkc1sxXSwgJmxpbmUpCi0gICAgICB8fCAhUGFyc2VOYXR1
cmFsTnVtYmVyKGZpZWxkc1syXSwgJmluZGV4KQotICAgICAgfHwgIVBhcnNlTmF0dXJhbE51bWJl
cihmaWVsZHNbM10sICZwYXJlbnRfcHJvY2Vzc19pZCkKLSAgICAgIHx8ICFQYXJzZU5hdHVyYWxO
dW1iZXIoZmllbGRzWzRdLCAmd3JpdGVfaGFuZGxlX2FzX3NpemVfdCkKLSAgICAgIHx8ICFQYXJz
ZU5hdHVyYWxOdW1iZXIoZmllbGRzWzVdLCAmZXZlbnRfaGFuZGxlX2FzX3NpemVfdCkpIHsKLSAg
ICBEZWF0aFRlc3RBYm9ydCgiQmFkIC0tZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxh
ZzogIiArCi0gICAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhf
dGVzdCkpOwotICB9Ci0gIHdyaXRlX2ZkID0gR2V0U3RhdHVzRmlsZURlc2NyaXB0b3IocGFyZW50
X3Byb2Nlc3NfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVf
aGFuZGxlX2FzX3NpemVfdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudF9oYW5kbGVfYXNfc2l6ZV90KTsKLSMgZWxzZQotCi0gIGlmIChmaWVsZHMuc2l6ZSgpICE9
IDQKLSAgICAgIHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzFdLCAmbGluZSkKLSAgICAg
IHx8ICFQYXJzZU5hdHVyYWxOdW1iZXIoZmllbGRzWzJdLCAmaW5kZXgpCi0gICAgICB8fCAhUGFy
c2VOYXR1cmFsTnVtYmVyKGZpZWxkc1szXSwgJndyaXRlX2ZkKSkgewotICAgIERlYXRoVGVzdEFi
b3J0KCJCYWQgLS1ndGVzdF9pbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCBmbGFnOiAiCi0gICAgICAg
ICsgR1RFU1RfRkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCkpOwotICB9Ci0KLSMgZW5kaWYg
IC8vIEdURVNUX09TX1dJTkRPV1MKLQotICByZXR1cm4gbmV3IEludGVybmFsUnVuRGVhdGhUZXN0
RmxhZyhmaWVsZHNbMF0sIGxpbmUsIGluZGV4LCB3cml0ZV9mZCk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLX0gIC8v
IG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZmls
ZXBhdGguY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtZmlsZXBhdGguY2MKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAyOTJkYzExOTU3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3NyYy9ndGVzdC1maWxlcGF0aC5jYworKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCww
IEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8g
QXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QtbWVzc2FnZS5oIgotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVw
YXRoLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi0jaW5jbHVk
ZSA8c3RkbGliLmg+Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotIyBpbmNsdWRlIDx3
aW5kb3dzLmg+Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dTCi0jIGluY2x1ZGUgPGRpcmVjdC5oPgot
IyBpbmNsdWRlIDxpby5oPgotI2VsaWYgR1RFU1RfT1NfU1lNQklBTgotLy8gU3ltYmlhbiBPcGVu
QyBoYXMgUEFUSF9NQVggaW4gc3lzL3N5c2xpbWl0cy5oCi0jIGluY2x1ZGUgPHN5cy9zeXNsaW1p
dHMuaD4KLSNlbHNlCi0jIGluY2x1ZGUgPGxpbWl0cy5oPgotIyBpbmNsdWRlIDxjbGltaXRzPiAg
Ly8gU29tZSBMaW51eCBkaXN0cmlidXRpb25zIGRlZmluZSBQQVRIX01BWCBoZXJlLgotI2VuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotIyBk
ZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9NQVhfUEFUSAotI2VsaWYgZGVmaW5lZChQQVRIX01BWCkK
LSMgZGVmaW5lIEdURVNUX1BBVEhfTUFYXyBQQVRIX01BWAotI2VsaWYgZGVmaW5lZChfWE9QRU5f
UEFUSF9NQVgpCi0jIGRlZmluZSBHVEVTVF9QQVRIX01BWF8gX1hPUEVOX1BBVEhfTUFYCi0jZWxz
ZQotIyBkZWZpbmUgR1RFU1RfUEFUSF9NQVhfIF9QT1NJWF9QQVRIX01BWAotI2VuZGlmICAvLyBH
VEVTVF9PU19XSU5ET1dTCi0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC1zdHJpbmcu
aCIKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotI2lmIEdU
RVNUX09TX1dJTkRPV1MKLS8vIE9uIFdpbmRvd3MsICdcXCcgaXMgdGhlIHN0YW5kYXJkIHBhdGgg
c2VwYXJhdG9yLCBidXQgbWFueSB0b29scyBhbmQgdGhlCi0vLyBXaW5kb3dzIEFQSSBhbHNvIGFj
Y2VwdCAnLycgYXMgYW4gYWx0ZXJuYXRlIHBhdGggc2VwYXJhdG9yLiBVbmxlc3Mgb3RoZXJ3aXNl
Ci0vLyBub3RlZCwgYSBmaWxlIHBhdGggY2FuIGNvbnRhaW4gZWl0aGVyIGtpbmQgb2YgcGF0aCBz
ZXBhcmF0b3JzLCBvciBhIG1peHR1cmUKLS8vIG9mIHRoZW0uCi1jb25zdCBjaGFyIGtQYXRoU2Vw
YXJhdG9yID0gJ1xcJzsKLWNvbnN0IGNoYXIga0FsdGVybmF0ZVBhdGhTZXBhcmF0b3IgPSAnLyc7
Ci1jb25zdCBjaGFyIGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yU3RyaW5nW10gPSAiLyI7Ci0jIGlm
IEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1
cnJlbnQgZGlyZWN0b3J5LiBZb3Ugc2hvdWxkIG5vdCB1c2UKLS8vIHRoZSBjdXJyZW50IGRpcmVj
dG9yeSBpbiB0ZXN0cyBvbiBXaW5kb3dzIENFLCBidXQgdGhpcyBhdCBsZWFzdAotLy8gcHJvdmlk
ZXMgYSByZWFzb25hYmxlIGZhbGxiYWNrLgotY29uc3QgY2hhciBrQ3VycmVudERpcmVjdG9yeVN0
cmluZ1tdID0gIlxcIjsKLS8vIFdpbmRvd3MgQ0UgZG9lc24ndCBkZWZpbmUgSU5WQUxJRF9GSUxF
X0FUVFJJQlVURVMKLWNvbnN0IERXT1JEIGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXMgPSAweGZmZmZm
ZmZmOwotIyBlbHNlCi1jb25zdCBjaGFyIGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nW10gPSAiLlxc
IjsKLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jZWxzZQotY29uc3QgY2hh
ciBrUGF0aFNlcGFyYXRvciA9ICcvJzsKLWNvbnN0IGNoYXIga0N1cnJlbnREaXJlY3RvcnlTdHJp
bmdbXSA9ICIuLyI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gUmV0dXJucyB3
aGV0aGVyIHRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgYSB2YWxpZCBwYXRoIHNlcGFyYXRvci4KLXN0
YXRpYyBib29sIElzUGF0aFNlcGFyYXRvcihjaGFyIGMpIHsKLSNpZiBHVEVTVF9IQVNfQUxUX1BB
VEhfU0VQXwotICByZXR1cm4gKGMgPT0ga1BhdGhTZXBhcmF0b3IpIHx8IChjID09IGtBbHRlcm5h
dGVQYXRoU2VwYXJhdG9yKTsKLSNlbHNlCi0gIHJldHVybiBjID09IGtQYXRoU2VwYXJhdG9yOwot
I2VuZGlmCi19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIG9y
ICIiIGlmIHVuc3VjY2Vzc2Z1bC4KLUZpbGVQYXRoIEZpbGVQYXRoOjpHZXRDdXJyZW50RGlyKCkg
ewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFIHx8IEdURVNUX09TX1dJTkRPV1NfUEhPTkUg
fHwgR1RFU1RfT1NfV0lORE9XU19SVAotICAvLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSBhIGN1
cnJlbnQgZGlyZWN0b3J5LCBzbyB3ZSBqdXN0IHJldHVybgotICAvLyBzb21ldGhpbmcgcmVhc29u
YWJsZS4KLSAgcmV0dXJuIEZpbGVQYXRoKGtDdXJyZW50RGlyZWN0b3J5U3RyaW5nKTsKLSNlbGlm
IEdURVNUX09TX1dJTkRPV1MKLSAgY2hhciBjd2RbR1RFU1RfUEFUSF9NQVhfICsgMV0gPSB7ICdc
MCcgfTsKLSAgcmV0dXJuIEZpbGVQYXRoKF9nZXRjd2QoY3dkLCBzaXplb2YoY3dkKSkgPT0gTlVM
TCA/ICIiIDogY3dkKTsKLSNlbHNlCi0gIGNoYXIgY3dkW0dURVNUX1BBVEhfTUFYXyArIDFdID0g
eyAnXDAnIH07Ci0gIGNoYXIqIHJlc3VsdCA9IGdldGN3ZChjd2QsIHNpemVvZihjd2QpKTsKLSMg
aWYgR1RFU1RfT1NfTkFDTAotICAvLyBnZXRjd2Qgd2lsbCBsaWtlbHkgZmFpbCBpbiBOYUNsIGR1
ZSB0byB0aGUgc2FuZGJveCwgc28gcmV0dXJuIHNvbWV0aGluZwotICAvLyByZWFzb25hYmxlLiBU
aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCBhIHNoaW0gaW1wbGVtZW50YXRpb24gZm9yIGdldGN3
ZCwKLSAgLy8gaG93ZXZlciwgc28gZmFsbGJhY2sgb25seSB3aGVuIGZhaWx1cmUgaXMgZGV0ZWN0
ZWQuCi0gIHJldHVybiBGaWxlUGF0aChyZXN1bHQgPT0gTlVMTCA/IGtDdXJyZW50RGlyZWN0b3J5
U3RyaW5nIDogY3dkKTsKLSMgZW5kaWYgIC8vIEdURVNUX09TX05BQ0wKLSAgcmV0dXJuIEZpbGVQ
YXRoKHJlc3VsdCA9PSBOVUxMID8gIiIgOiBjd2QpOwotI2VuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTX01PQklMRQotfQotCi0vLyBSZXR1cm5zIGEgY29weSBvZiB0aGUgRmlsZVBhdGggd2l0aCB0
aGUgY2FzZS1pbnNlbnNpdGl2ZSBleHRlbnNpb24gcmVtb3ZlZC4KLS8vIEV4YW1wbGU6IEZpbGVQ
YXRoKCJkaXIvZmlsZS5leGUiKS5SZW1vdmVFeHRlbnNpb24oIkVYRSIpIHJldHVybnMKLS8vIEZp
bGVQYXRoKCJkaXIvZmlsZSIpLiBJZiBhIGNhc2UtaW5zZW5zaXRpdmUgZXh0ZW5zaW9uIGlzIG5v
dAotLy8gZm91bmQsIHJldHVybnMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBGaWxlUGF0aC4KLUZp
bGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVFeHRlbnNpb24oY29uc3QgY2hhciogZXh0ZW5zaW9uKSBj
b25zdCB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGRvdF9leHRlbnNpb24gPSBzdGQ6OnN0cmluZygi
LiIpICsgZXh0ZW5zaW9uOwotICBpZiAoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZShw
YXRobmFtZV8sIGRvdF9leHRlbnNpb24pKSB7Ci0gICAgcmV0dXJuIEZpbGVQYXRoKHBhdGhuYW1l
Xy5zdWJzdHIoCi0gICAgICAgIDAsIHBhdGhuYW1lXy5sZW5ndGgoKSAtIGRvdF9leHRlbnNpb24u
bGVuZ3RoKCkpKTsKLSAgfQotICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vIFJldHVybnMgYSBwb2lu
dGVyIHRvIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBhIHZhbGlkIHBhdGggc2VwYXJhdG9yIGluCi0v
LyB0aGUgRmlsZVBhdGguIE9uIFdpbmRvd3MsIGZvciBleGFtcGxlLCBib3RoICcvJyBhbmQgJ1wn
IGFyZSB2YWxpZCBwYXRoCi0vLyBzZXBhcmF0b3JzLiBSZXR1cm5zIE5VTEwgaWYgbm8gcGF0aCBz
ZXBhcmF0b3Igd2FzIGZvdW5kLgotY29uc3QgY2hhciogRmlsZVBhdGg6OkZpbmRMYXN0UGF0aFNl
cGFyYXRvcigpIGNvbnN0IHsKLSAgY29uc3QgY2hhciogY29uc3QgbGFzdF9zZXAgPSBzdHJyY2hy
KGNfc3RyKCksIGtQYXRoU2VwYXJhdG9yKTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwot
ICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X2FsdF9zZXAgPSBzdHJyY2hyKGNfc3RyKCksIGtBbHRl
cm5hdGVQYXRoU2VwYXJhdG9yKTsKLSAgLy8gQ29tcGFyaW5nIHR3byBwb2ludGVycyBvZiB3aGlj
aCBvbmx5IG9uZSBpcyBOVUxMIGlzIHVuZGVmaW5lZC4KLSAgaWYgKGxhc3RfYWx0X3NlcCAhPSBO
VUxMICYmCi0gICAgICAobGFzdF9zZXAgPT0gTlVMTCB8fCBsYXN0X2FsdF9zZXAgPiBsYXN0X3Nl
cCkpIHsKLSAgICByZXR1cm4gbGFzdF9hbHRfc2VwOwotICB9Ci0jZW5kaWYKLSAgcmV0dXJuIGxh
c3Rfc2VwOwotfQotCi0vLyBSZXR1cm5zIGEgY29weSBvZiB0aGUgRmlsZVBhdGggd2l0aCB0aGUg
ZGlyZWN0b3J5IHBhcnQgcmVtb3ZlZC4KLS8vIEV4YW1wbGU6IEZpbGVQYXRoKCJwYXRoL3RvL2Zp
bGUiKS5SZW1vdmVEaXJlY3RvcnlOYW1lKCkgcmV0dXJucwotLy8gRmlsZVBhdGgoImZpbGUiKS4g
SWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IHBhcnQgKCJqdXN0X2FfZmlsZSIpLCBpdCByZXR1cm5z
Ci0vLyB0aGUgRmlsZVBhdGggdW5tb2RpZmllZC4gSWYgdGhlcmUgaXMgbm8gZmlsZSBwYXJ0ICgi
anVzdF9hX2Rpci8iKSBpdAotLy8gcmV0dXJucyBhbiBlbXB0eSBGaWxlUGF0aCAoIiIpLgotLy8g
T24gV2luZG93cyBwbGF0Zm9ybSwgJ1wnIGlzIHRoZSBwYXRoIHNlcGFyYXRvciwgb3RoZXJ3aXNl
IGl0IGlzICcvJy4KLUZpbGVQYXRoIEZpbGVQYXRoOjpSZW1vdmVEaXJlY3RvcnlOYW1lKCkgY29u
c3QgewotICBjb25zdCBjaGFyKiBjb25zdCBsYXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRv
cigpOwotICByZXR1cm4gbGFzdF9zZXAgPyBGaWxlUGF0aChsYXN0X3NlcCArIDEpIDogKnRoaXM7
Ci19Ci0KLS8vIFJlbW92ZUZpbGVOYW1lIHJldHVybnMgdGhlIGRpcmVjdG9yeSBwYXRoIHdpdGgg
dGhlIGZpbGVuYW1lIHJlbW92ZWQuCi0vLyBFeGFtcGxlOiBGaWxlUGF0aCgicGF0aC90by9maWxl
IikuUmVtb3ZlRmlsZU5hbWUoKSByZXR1cm5zICJwYXRoL3RvLyIuCi0vLyBJZiB0aGUgRmlsZVBh
dGggaXMgImFfZmlsZSIgb3IgIi9hX2ZpbGUiLCBSZW1vdmVGaWxlTmFtZSByZXR1cm5zCi0vLyBG
aWxlUGF0aCgiLi8iKSBvciwgb24gV2luZG93cywgRmlsZVBhdGgoIi5cXCIpLiBJZiB0aGUgZmls
ZXBhdGggZG9lcwotLy8gbm90IGhhdmUgYSBmaWxlLCBsaWtlICJqdXN0L2EvZGlyLyIsIGl0IHJl
dHVybnMgdGhlIEZpbGVQYXRoIHVubW9kaWZpZWQuCi0vLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCAn
XCcgaXMgdGhlIHBhdGggc2VwYXJhdG9yLCBvdGhlcndpc2UgaXQgaXMgJy8nLgotRmlsZVBhdGgg
RmlsZVBhdGg6OlJlbW92ZUZpbGVOYW1lKCkgY29uc3QgewotICBjb25zdCBjaGFyKiBjb25zdCBs
YXN0X3NlcCA9IEZpbmRMYXN0UGF0aFNlcGFyYXRvcigpOwotICBzdGQ6OnN0cmluZyBkaXI7Ci0g
IGlmIChsYXN0X3NlcCkgewotICAgIGRpciA9IHN0ZDo6c3RyaW5nKGNfc3RyKCksIGxhc3Rfc2Vw
ICsgMSAtIGNfc3RyKCkpOwotICB9IGVsc2UgewotICAgIGRpciA9IGtDdXJyZW50RGlyZWN0b3J5
U3RyaW5nOwotICB9Ci0gIHJldHVybiBGaWxlUGF0aChkaXIpOwotfQotCi0vLyBIZWxwZXIgZnVu
Y3Rpb25zIGZvciBuYW1pbmcgZmlsZXMgaW4gYSBkaXJlY3RvcnkgZm9yIHhtbCBvdXRwdXQuCi0K
LS8vIEdpdmVuIGRpcmVjdG9yeSA9ICJkaXIiLCBiYXNlX25hbWUgPSAidGVzdCIsIG51bWJlciA9
IDAsCi0vLyBleHRlbnNpb24gPSAieG1sIiwgcmV0dXJucyAiZGlyL3Rlc3QueG1sIi4gSWYgbnVt
YmVyIGlzIGdyZWF0ZXIKLS8vIHRoYW4gemVybyAoZS5nLiwgMTIpLCByZXR1cm5zICJkaXIvdGVz
dF8xMi54bWwiLgotLy8gT24gV2luZG93cyBwbGF0Zm9ybSwgdXNlcyBcIGFzIHRoZSBzZXBhcmF0
b3IgcmF0aGVyIHRoYW4gLy4KLUZpbGVQYXRoIEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoY29uc3Qg
RmlsZVBhdGgmIGRpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXh0ZW5zaW9uKSB7Ci0gIHN0ZDo6c3RyaW5nIGZpbGU7Ci0gIGlmIChudW1iZXIgPT0gMCkgewot
ICAgIGZpbGUgPSBiYXNlX25hbWUuc3RyaW5nKCkgKyAiLiIgKyBleHRlbnNpb247Ci0gIH0gZWxz
ZSB7Ci0gICAgZmlsZSA9IGJhc2VfbmFtZS5zdHJpbmcoKSArICJfIiArIFN0cmVhbWFibGVUb1N0
cmluZyhudW1iZXIpCi0gICAgICAgICsgIi4iICsgZXh0ZW5zaW9uOwotICB9Ci0gIHJldHVybiBD
b25jYXRQYXRocyhkaXJlY3RvcnksIEZpbGVQYXRoKGZpbGUpKTsKLX0KLQotLy8gR2l2ZW4gZGly
ZWN0b3J5ID0gImRpciIsIHJlbGF0aXZlX3BhdGggPSAidGVzdC54bWwiLCByZXR1cm5zICJkaXIv
dGVzdC54bWwiLgotLy8gT24gV2luZG93cywgdXNlcyBcIGFzIHRoZSBzZXBhcmF0b3IgcmF0aGVy
IHRoYW4gLy4KLUZpbGVQYXRoIEZpbGVQYXRoOjpDb25jYXRQYXRocyhjb25zdCBGaWxlUGF0aCYg
ZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZpbGVQYXRo
JiByZWxhdGl2ZV9wYXRoKSB7Ci0gIGlmIChkaXJlY3RvcnkuSXNFbXB0eSgpKQotICAgIHJldHVy
biByZWxhdGl2ZV9wYXRoOwotICBjb25zdCBGaWxlUGF0aCBkaXIoZGlyZWN0b3J5LlJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvcigpKTsKLSAgcmV0dXJuIEZpbGVQYXRoKGRpci5zdHJpbmcoKSAr
IGtQYXRoU2VwYXJhdG9yICsgcmVsYXRpdmVfcGF0aC5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJldHVy
bnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgc29tZXRoaW5nIGZpbmRhYmxlIGluIHRoZSBm
aWxlLXN5c3RlbSwKLS8vIGVpdGhlciBhIGZpbGUsIGRpcmVjdG9yeSwgb3Igd2hhdGV2ZXIuCi1i
b29sIEZpbGVQYXRoOjpGaWxlT3JEaXJlY3RvcnlFeGlzdHMoKSBjb25zdCB7Ci0jaWYgR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLSAgTFBDV1NUUiB1bmljb2RlID0gU3RyaW5nOjpBbnNpVG9VdGYx
NihwYXRobmFtZV8uY19zdHIoKSk7Ci0gIGNvbnN0IERXT1JEIGF0dHJpYnV0ZXMgPSBHZXRGaWxl
QXR0cmlidXRlcyh1bmljb2RlKTsKLSAgZGVsZXRlIFtdIHVuaWNvZGU7Ci0gIHJldHVybiBhdHRy
aWJ1dGVzICE9IGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXM7Ci0jZWxzZQotICBwb3NpeDo6U3RhdFN0
cnVjdCBmaWxlX3N0YXQ7Ci0gIHJldHVybiBwb3NpeDo6U3RhdChwYXRobmFtZV8uY19zdHIoKSwg
JmZpbGVfc3RhdCkgPT0gMDsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLX0K
LQotLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJlcyBhIGRpcmVjdG9yeSBpbiB0
aGUgZmlsZS1zeXN0ZW0KLS8vIHRoYXQgZXhpc3RzLgotYm9vbCBGaWxlUGF0aDo6RGlyZWN0b3J5
RXhpc3RzKCkgY29uc3QgewotICBib29sIHJlc3VsdCA9IGZhbHNlOwotI2lmIEdURVNUX09TX1dJ
TkRPV1MKLSAgLy8gRG9uJ3Qgc3RyaXAgb2ZmIHRyYWlsaW5nIHNlcGFyYXRvciBpZiBwYXRoIGlz
IGEgcm9vdCBkaXJlY3Rvcnkgb24KLSAgLy8gV2luZG93cyAobGlrZSAiQzpcXCIpLgotICBjb25z
dCBGaWxlUGF0aCYgcGF0aChJc1Jvb3REaXJlY3RvcnkoKSA/ICp0aGlzIDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0
b3IoKSk7Ci0jZWxzZQotICBjb25zdCBGaWxlUGF0aCYgcGF0aCgqdGhpcyk7Ci0jZW5kaWYKLQot
I2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIExQQ1dTVFIgdW5pY29kZSA9IFN0cmluZzo6
QW5zaVRvVXRmMTYocGF0aC5jX3N0cigpKTsKLSAgY29uc3QgRFdPUkQgYXR0cmlidXRlcyA9IEdl
dEZpbGVBdHRyaWJ1dGVzKHVuaWNvZGUpOwotICBkZWxldGUgW10gdW5pY29kZTsKLSAgaWYgKChh
dHRyaWJ1dGVzICE9IGtJbnZhbGlkRmlsZUF0dHJpYnV0ZXMpICYmCi0gICAgICAoYXR0cmlidXRl
cyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpIHsKLSAgICByZXN1bHQgPSB0cnVlOwotICB9
Ci0jZWxzZQotICBwb3NpeDo6U3RhdFN0cnVjdCBmaWxlX3N0YXQ7Ci0gIHJlc3VsdCA9IHBvc2l4
OjpTdGF0KHBhdGguY19zdHIoKSwgJmZpbGVfc3RhdCkgPT0gMCAmJgotICAgICAgcG9zaXg6Oklz
RGlyKGZpbGVfc3RhdCk7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLSAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmIHBhdGhuYW1lIGRlc2NyaWJl
cyBhIHJvb3QgZGlyZWN0b3J5LiAoV2luZG93cyBoYXMgb25lCi0vLyByb290IGRpcmVjdG9yeSBw
ZXIgZGlzayBkcml2ZS4pCi1ib29sIEZpbGVQYXRoOjpJc1Jvb3REaXJlY3RvcnkoKSBjb25zdCB7
Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBUT0RPKHdhbkBnb29nbGUuY29tKTogb24gV2lu
ZG93cyBhIG5ldHdvcmsgc2hhcmUgbGlrZQotICAvLyBcXHNlcnZlclxzaGFyZSBjYW4gYmUgYSBy
b290IGRpcmVjdG9yeSwgYWx0aG91Z2ggaXQgY2Fubm90IGJlIHRoZQotICAvLyBjdXJyZW50IGRp
cmVjdG9yeS4gIEhhbmRsZSB0aGlzIHByb3Blcmx5LgotICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0
aCgpID09IDMgJiYgSXNBYnNvbHV0ZVBhdGgoKTsKLSNlbHNlCi0gIHJldHVybiBwYXRobmFtZV8u
bGVuZ3RoKCkgPT0gMSAmJiBJc1BhdGhTZXBhcmF0b3IocGF0aG5hbWVfLmNfc3RyKClbMF0pOwot
I2VuZGlmCi19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBwYXRobmFtZSBkZXNjcmliZXMgYW4gYWJz
b2x1dGUgcGF0aC4KLWJvb2wgRmlsZVBhdGg6OklzQWJzb2x1dGVQYXRoKCkgY29uc3QgewotICBj
b25zdCBjaGFyKiBjb25zdCBuYW1lID0gcGF0aG5hbWVfLmNfc3RyKCk7Ci0jaWYgR1RFU1RfT1Nf
V0lORE9XUwotICByZXR1cm4gcGF0aG5hbWVfLmxlbmd0aCgpID49IDMgJiYKLSAgICAgKChuYW1l
WzBdID49ICdhJyAmJiBuYW1lWzBdIDw9ICd6JykgfHwKLSAgICAgIChuYW1lWzBdID49ICdBJyAm
JiBuYW1lWzBdIDw9ICdaJykpICYmCi0gICAgIG5hbWVbMV0gPT0gJzonICYmCi0gICAgIElzUGF0
aFNlcGFyYXRvcihuYW1lWzJdKTsKLSNlbHNlCi0gIHJldHVybiBJc1BhdGhTZXBhcmF0b3IobmFt
ZVswXSk7Ci0jZW5kaWYKLX0KLQotLy8gUmV0dXJucyBhIHBhdGhuYW1lIGZvciBhIGZpbGUgdGhh
dCBkb2VzIG5vdCBjdXJyZW50bHkgZXhpc3QuIFRoZSBwYXRobmFtZQotLy8gd2lsbCBiZSBkaXJl
Y3RvcnkvYmFzZV9uYW1lLmV4dGVuc2lvbiBvcgotLy8gZGlyZWN0b3J5L2Jhc2VfbmFtZV88bnVt
YmVyPi5leHRlbnNpb24gaWYgZGlyZWN0b3J5L2Jhc2VfbmFtZS5leHRlbnNpb24KLS8vIGFscmVh
ZHkgZXhpc3RzLiBUaGUgbnVtYmVyIHdpbGwgYmUgaW5jcmVtZW50ZWQgdW50aWwgYSBwYXRobmFt
ZSBpcyBmb3VuZAotLy8gdGhhdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotLy8gRXhhbXBsZXM6
ICdkaXIvZm9vX3Rlc3QueG1sJyBvciAnZGlyL2Zvb190ZXN0XzEueG1sJy4KLS8vIFRoZXJlIGNv
dWxkIGJlIGEgcmFjZSBjb25kaXRpb24gaWYgdHdvIG9yIG1vcmUgcHJvY2Vzc2VzIGFyZSBjYWxs
aW5nIHRoaXMKLS8vIGZ1bmN0aW9uIGF0IHRoZSBzYW1lIHRpbWUgLS0gdGhleSBjb3VsZCBib3Ro
IHBpY2sgdGhlIHNhbWUgZmlsZW5hbWUuCi1GaWxlUGF0aCBGaWxlUGF0aDo6R2VuZXJhdGVVbmlx
dWVGaWxlTmFtZShjb25zdCBGaWxlUGF0aCYgZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVBhdGgmIGJhc2VfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lv
bikgewotICBGaWxlUGF0aCBmdWxsX3BhdGhuYW1lOwotICBpbnQgbnVtYmVyID0gMDsKLSAgZG8g
ewotICAgIGZ1bGxfcGF0aG5hbWUuU2V0KE1ha2VGaWxlTmFtZShkaXJlY3RvcnksIGJhc2VfbmFt
ZSwgbnVtYmVyKyssIGV4dGVuc2lvbikpOwotICB9IHdoaWxlIChmdWxsX3BhdGhuYW1lLkZpbGVP
ckRpcmVjdG9yeUV4aXN0cygpKTsKLSAgcmV0dXJuIGZ1bGxfcGF0aG5hbWU7Ci19Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBpZiBGaWxlUGF0aCBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciwgd2hpY2gg
aW5kaWNhdGVzIHRoYXQKLS8vIGl0IGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBhIGRpcmVjdG9y
eS4gUmV0dXJucyBmYWxzZSBvdGhlcndpc2UuCi0vLyBUaGlzIGRvZXMgTk9UIGNoZWNrIHRoYXQg
YSBkaXJlY3RvcnkgKG9yIGZpbGUpIGFjdHVhbGx5IGV4aXN0cy4KLWJvb2wgRmlsZVBhdGg6Oklz
RGlyZWN0b3J5KCkgY29uc3QgewotICByZXR1cm4gIXBhdGhuYW1lXy5lbXB0eSgpICYmCi0gICAg
ICAgICBJc1BhdGhTZXBhcmF0b3IocGF0aG5hbWVfLmNfc3RyKClbcGF0aG5hbWVfLmxlbmd0aCgp
IC0gMV0pOwotfQotCi0vLyBDcmVhdGUgZGlyZWN0b3JpZXMgc28gdGhhdCBwYXRoIGV4aXN0cy4g
UmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwgb3IgaWYKLS8vIHRoZSBkaXJlY3RvcmllcyBhbHJl
YWR5IGV4aXN0OyByZXR1cm5zIGZhbHNlIGlmIHVuYWJsZSB0byBjcmVhdGUgZGlyZWN0b3JpZXMK
LS8vIGZvciBhbnkgcmVhc29uLgotYm9vbCBGaWxlUGF0aDo6Q3JlYXRlRGlyZWN0b3JpZXNSZWN1
cnNpdmVseSgpIGNvbnN0IHsKLSAgaWYgKCF0aGlzLT5Jc0RpcmVjdG9yeSgpKSB7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0KLSAgaWYgKHBhdGhuYW1lXy5sZW5ndGgoKSA9PSAwIHx8IHRoaXMt
PkRpcmVjdG9yeUV4aXN0cygpKSB7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBjb25zdCBG
aWxlUGF0aCBwYXJlbnQodGhpcy0+UmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yKCkuUmVtb3Zl
RmlsZU5hbWUoKSk7Ci0gIHJldHVybiBwYXJlbnQuQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVs
eSgpICYmIHRoaXMtPkNyZWF0ZUZvbGRlcigpOwotfQotCi0vLyBDcmVhdGUgdGhlIGRpcmVjdG9y
eSBzbyB0aGF0IHBhdGggZXhpc3RzLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCBvcgotLy8g
aWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0czsgcmV0dXJucyBmYWxzZSBpZiB1bmFibGUg
dG8gY3JlYXRlIHRoZQotLy8gZGlyZWN0b3J5IGZvciBhbnkgcmVhc29uLCBpbmNsdWRpbmcgaWYg
dGhlIHBhcmVudCBkaXJlY3RvcnkgZG9lcyBub3QKLS8vIGV4aXN0LiBOb3QgbmFtZWQgIkNyZWF0
ZURpcmVjdG9yeSIgYmVjYXVzZSB0aGF0J3MgYSBtYWNybyBvbiBXaW5kb3dzLgotYm9vbCBGaWxl
UGF0aDo6Q3JlYXRlRm9sZGVyKCkgY29uc3QgewotI2lmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
Ci0gIEZpbGVQYXRoIHJlbW92ZWRfc2VwKHRoaXMtPlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
cigpKTsKLSAgTFBDV1NUUiB1bmljb2RlID0gU3RyaW5nOjpBbnNpVG9VdGYxNihyZW1vdmVkX3Nl
cC5jX3N0cigpKTsKLSAgaW50IHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeSh1bmljb2RlLCBOVUxM
KSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHVuaWNvZGU7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gIGludCByZXN1bHQgPSBfbWtkaXIocGF0aG5hbWVfLmNfc3RyKCkpOwotI2Vsc2UKLSAgaW50
IHJlc3VsdCA9IG1rZGlyKHBhdGhuYW1lXy5jX3N0cigpLCAwNzc3KTsKLSNlbmRpZiAgLy8gR1RF
U1RfT1NfV0lORE9XU19NT0JJTEUKLQotICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgcmV0dXJu
IHRoaXMtPkRpcmVjdG9yeUV4aXN0cygpOyAgLy8gQW4gZXJyb3IgaXMgT0sgaWYgdGhlIGRpcmVj
dG9yeSBleGlzdHMuCi0gIH0KLSAgcmV0dXJuIHRydWU7ICAvLyBObyBlcnJvci4KLX0KLQotLy8g
SWYgaW5wdXQgbmFtZSBoYXMgYSB0cmFpbGluZyBzZXBhcmF0b3IgY2hhcmFjdGVyLCByZW1vdmUg
aXQgYW5kIHJldHVybiB0aGUKLS8vIG5hbWUsIG90aGVyd2lzZSByZXR1cm4gdGhlIG5hbWUgc3Ry
aW5nIHVubW9kaWZpZWQuCi0vLyBPbiBXaW5kb3dzIHBsYXRmb3JtLCB1c2VzIFwgYXMgdGhlIHNl
cGFyYXRvciwgb3RoZXIgcGxhdGZvcm1zIHVzZSAvLgotRmlsZVBhdGggRmlsZVBhdGg6OlJlbW92
ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpIGNvbnN0IHsKLSAgcmV0dXJuIElzRGlyZWN0b3J5KCkK
LSAgICAgID8gRmlsZVBhdGgocGF0aG5hbWVfLnN1YnN0cigwLCBwYXRobmFtZV8ubGVuZ3RoKCkg
LSAxKSkKLSAgICAgIDogKnRoaXM7Ci19Ci0KLS8vIFJlbW92ZXMgYW55IHJlZHVuZGFudCBzZXBh
cmF0b3JzIHRoYXQgbWlnaHQgYmUgaW4gdGhlIHBhdGhuYW1lLgotLy8gRm9yIGV4YW1wbGUsICJi
YXIvLy9mb28iIGJlY29tZXMgImJhci9mb28iLiBEb2VzIG5vdCBlbGltaW5hdGUgb3RoZXIKLS8v
IHJlZHVuZGFuY2llcyB0aGF0IG1pZ2h0IGJlIGluIGEgcGF0aG5hbWUgaW52b2x2aW5nICIuIiBv
ciAiLi4iLgotLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IGhhbmRsZSBXaW5kb3dzIG5ldHdvcmsg
c2hhcmVzIChlLmcuIFxcc2VydmVyXHNoYXJlKS4KLXZvaWQgRmlsZVBhdGg6Ok5vcm1hbGl6ZSgp
IHsKLSAgaWYgKHBhdGhuYW1lXy5jX3N0cigpID09IE5VTEwpIHsKLSAgICBwYXRobmFtZV8gPSAi
IjsKLSAgICByZXR1cm47Ci0gIH0KLSAgY29uc3QgY2hhciogc3JjID0gcGF0aG5hbWVfLmNfc3Ry
KCk7Ci0gIGNoYXIqIGNvbnN0IGRlc3QgPSBuZXcgY2hhcltwYXRobmFtZV8ubGVuZ3RoKCkgKyAx
XTsKLSAgY2hhciogZGVzdF9wdHIgPSBkZXN0OwotICBtZW1zZXQoZGVzdF9wdHIsIDAsIHBhdGhu
YW1lXy5sZW5ndGgoKSArIDEpOwotCi0gIHdoaWxlICgqc3JjICE9ICdcMCcpIHsKLSAgICAqZGVz
dF9wdHIgPSAqc3JjOwotICAgIGlmICghSXNQYXRoU2VwYXJhdG9yKCpzcmMpKSB7Ci0gICAgICBz
cmMrKzsKLSAgICB9IGVsc2UgewotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0gICAgICBp
ZiAoKmRlc3RfcHRyID09IGtBbHRlcm5hdGVQYXRoU2VwYXJhdG9yKSB7Ci0gICAgICAgICpkZXN0
X3B0ciA9IGtQYXRoU2VwYXJhdG9yOwotICAgICAgfQotI2VuZGlmCi0gICAgICB3aGlsZSAoSXNQ
YXRoU2VwYXJhdG9yKCpzcmMpKQotICAgICAgICBzcmMrKzsKLSAgICB9Ci0gICAgZGVzdF9wdHIr
KzsKLSAgfQotICAqZGVzdF9wdHIgPSAnXDAnOwotICBwYXRobmFtZV8gPSBkZXN0OwotICBkZWxl
dGVbXSBkZXN0OwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFj
ZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5s
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAyMWZlYjE2Zjk0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDExODMgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBV
dGlsaXR5IGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyB1c2VkIGJ5IHRoZSBHb29nbGUgQysrIHRlc3Rp
bmcgZnJhbWV3b3JrLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdh
bikKLS8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgcHVyZWx5IEdvb2dsZSBUZXN0J3MgaW50ZXJu
YWwgaW1wbGVtZW50YXRpb24uICBQbGVhc2UKLS8vIERPIE5PVCAjSU5DTFVERSBJVCBJTiBBIFVT
RVIgUFJPR1JBTS4KLQotI2lmbmRlZiBHVEVTVF9TUkNfR1RFU1RfSU5URVJOQUxfSU5MX0hfCi0j
ZGVmaW5lIEdURVNUX1NSQ19HVEVTVF9JTlRFUk5BTF9JTkxfSF8KLQotLy8gR1RFU1RfSU1QTEVN
RU5UQVRJT05fIGlzIGRlZmluZWQgdG8gMSBpZmYgdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5p
dCBpcwotLy8gcGFydCBvZiBHb29nbGUgVGVzdCdzIGltcGxlbWVudGF0aW9uOyBvdGhlcndpc2Ug
aXQncyB1bmRlZmluZWQuCi0jaWYgIUdURVNUX0lNUExFTUVOVEFUSU9OXwotLy8gSWYgdGhpcyBm
aWxlIGlzIGluY2x1ZGVkIGZyb20gdGhlIHVzZXIncyBjb2RlLCBqdXN0IHNheSBuby4KLSMgZXJy
b3IgImd0ZXN0LWludGVybmFsLWlubC5oIGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncyBpbnRlcm5h
bCBpbXBsZW1lbnRhdGlvbi4iCi0jIGVycm9yICJJdCBtdXN0IG5vdCBiZSBpbmNsdWRlZCBleGNl
cHQgYnkgR29vZ2xlIFRlc3QgaXRzZWxmLiIKLSNlbmRpZiAgLy8gR1RFU1RfSU1QTEVNRU5UQVRJ
T05fCi0KLSNpZm5kZWYgX1dJTjMyX1dDRQotIyBpbmNsdWRlIDxlcnJuby5oPgotI2VuZGlmICAv
LyAhX1dJTjMyX1dDRQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPiAg
Ly8gRm9yIHN0cnRvbGwvX3N0cnRvdWw2NC9tYWxsb2MvZnJlZS4KLSNpbmNsdWRlIDxzdHJpbmcu
aD4gIC8vIEZvciBtZW1tb3ZlLgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVz
dC1wb3J0LmgiCi0KLSNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0jIGluY2x1ZGUgPGFy
cGEvaW5ldC5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKLSNl
bmRpZgotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotIyBpbmNsdWRlIDx3aW5kb3dzLmg+ICAvLyBO
T0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIgIC8vIE5PTElOVAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotCi1uYW1lc3Bh
Y2UgdGVzdGluZyB7Ci0KLS8vIERlY2xhcmVzIHRoZSBmbGFncy4KLS8vCi0vLyBXZSBkb24ndCB3
YW50IHRoZSB1c2VycyB0byBtb2RpZnkgdGhpcyBmbGFnIGluIHRoZSBjb2RlLCBidXQgd2FudAot
Ly8gR29vZ2xlIFRlc3QncyBvd24gdW5pdCB0ZXN0cyB0byBiZSBhYmxlIHRvIGFjY2VzcyBpdC4g
VGhlcmVmb3JlIHdlCi0vLyBkZWNsYXJlIGl0IGhlcmUgYXMgb3Bwb3NlZCB0byBpbiBndGVzdC5o
LgotR1RFU1RfREVDTEFSRV9ib29sXyhkZWF0aF90ZXN0X3VzZV9mb3JrKTsKLQotbmFtZXNwYWNl
IGludGVybmFsIHsKLQotLy8gVGhlIHZhbHVlIG9mIEdldFRlc3RUeXBlSWQoKSBhcyBzZWVuIGZy
b20gd2l0aGluIHRoZSBHb29nbGUgVGVzdAotLy8gbGlicmFyeS4gIFRoaXMgaXMgc29sZWx5IGZv
ciB0ZXN0aW5nIEdldFRlc3RUeXBlSWQoKS4KLUdURVNUX0FQSV8gZXh0ZXJuIGNvbnN0IFR5cGVJ
ZCBrVGVzdFR5cGVJZEluR29vZ2xlVGVzdDsKLQotLy8gTmFtZXMgb2YgdGhlIGZsYWdzIChuZWVk
ZWQgZm9yIHBhcnNpbmcgR29vZ2xlIFRlc3QgZmxhZ3MpLgotY29uc3QgY2hhciBrQWxzb1J1bkRp
c2FibGVkVGVzdHNGbGFnW10gPSAiYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMiOwotY29uc3QgY2hh
ciBrQnJlYWtPbkZhaWx1cmVGbGFnW10gPSAiYnJlYWtfb25fZmFpbHVyZSI7Ci1jb25zdCBjaGFy
IGtDYXRjaEV4Y2VwdGlvbnNGbGFnW10gPSAiY2F0Y2hfZXhjZXB0aW9ucyI7Ci1jb25zdCBjaGFy
IGtDb2xvckZsYWdbXSA9ICJjb2xvciI7Ci1jb25zdCBjaGFyIGtGaWx0ZXJGbGFnW10gPSAiZmls
dGVyIjsKLWNvbnN0IGNoYXIga0xpc3RUZXN0c0ZsYWdbXSA9ICJsaXN0X3Rlc3RzIjsKLWNvbnN0
IGNoYXIga091dHB1dEZsYWdbXSA9ICJvdXRwdXQiOwotY29uc3QgY2hhciBrUHJpbnRUaW1lRmxh
Z1tdID0gInByaW50X3RpbWUiOwotY29uc3QgY2hhciBrUmFuZG9tU2VlZEZsYWdbXSA9ICJyYW5k
b21fc2VlZCI7Ci1jb25zdCBjaGFyIGtSZXBlYXRGbGFnW10gPSAicmVwZWF0IjsKLWNvbnN0IGNo
YXIga1NodWZmbGVGbGFnW10gPSAic2h1ZmZsZSI7Ci1jb25zdCBjaGFyIGtTdGFja1RyYWNlRGVw
dGhGbGFnW10gPSAic3RhY2tfdHJhY2VfZGVwdGgiOwotY29uc3QgY2hhciBrU3RyZWFtUmVzdWx0
VG9GbGFnW10gPSAic3RyZWFtX3Jlc3VsdF90byI7Ci1jb25zdCBjaGFyIGtUaHJvd09uRmFpbHVy
ZUZsYWdbXSA9ICJ0aHJvd19vbl9mYWlsdXJlIjsKLWNvbnN0IGNoYXIga0ZsYWdmaWxlRmxhZ1td
ID0gImZsYWdmaWxlIjsKLQotLy8gQSB2YWxpZCByYW5kb20gc2VlZCBtdXN0IGJlIGluIFsxLCBr
TWF4UmFuZG9tU2VlZF0uCi1jb25zdCBpbnQga01heFJhbmRvbVNlZWQgPSA5OTk5OTsKLQotLy8g
Z19oZWxwX2ZsYWcgaXMgdHJ1ZSBpZmYgdGhlIC0taGVscCBmbGFnIG9yIGFuIGVxdWl2YWxlbnQg
Zm9ybSBpcwotLy8gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi1HVEVTVF9BUElfIGV4
dGVybiBib29sIGdfaGVscF9mbGFnOwotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4g
bWlsbGlzZWNvbmRzLgotR1RFU1RfQVBJXyBUaW1lSW5NaWxsaXMgR2V0VGltZUluTWlsbGlzKCk7
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgR29vZ2xlIFRlc3Qgc2hvdWxkIHVzZSBjb2xvcnMgaW4g
dGhlIG91dHB1dC4KLUdURVNUX0FQSV8gYm9vbCBTaG91bGRVc2VDb2xvcihib29sIHN0ZG91dF9p
c190dHkpOwotCi0vLyBGb3JtYXRzIHRoZSBnaXZlbiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhcyBz
ZWNvbmRzLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29u
ZHMoVGltZUluTWlsbGlzIG1zKTsKLQotLy8gQ29udmVydHMgdGhlIGdpdmVuIHRpbWUgaW4gbWls
bGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTyA4NjAxCi0vLyBmb3JtYXQsIHdp
dGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLiAgTi5CLjogZHVlIHRvIHRoZSB1c2UgdGhl
Ci0vLyBub24tcmVlbnRyYW50IGxvY2FsdGltZSgpIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGlz
IG5vdCB0aHJlYWQgc2FmZS4gIERvCi0vLyBub3QgdXNlIGl0IGluIGFueSBjb2RlIHRoYXQgY2Fu
IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCi1HVEVTVF9BUElfIHN0ZDo6c3RyaW5n
IEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxKFRpbWVJbk1pbGxpcyBtcyk7Ci0KLS8v
IFBhcnNlcyBhIHN0cmluZyBmb3IgYW4gSW50MzIgZmxhZywgaW4gdGhlIGZvcm0gb2YgIi0tZmxh
Zz12YWx1ZSIuCi0vLwotLy8gT24gc3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxh
ZyBpbiAqdmFsdWUsIGFuZCByZXR1cm5zCi0vLyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBm
YWxzZSB3aXRob3V0IGNoYW5naW5nICp2YWx1ZS4KLUdURVNUX0FQSV8gYm9vbCBQYXJzZUludDMy
RmxhZygKLSAgICBjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIqIGZsYWcsIEludDMyKiB2YWx1
ZSk7Ci0KLS8vIFJldHVybnMgYSByYW5kb20gc2VlZCBpbiByYW5nZSBbMSwga01heFJhbmRvbVNl
ZWRdIGJhc2VkIG9uIHRoZQotLy8gZ2l2ZW4gLS1ndGVzdF9yYW5kb21fc2VlZCBmbGFnIHZhbHVl
LgotaW5saW5lIGludCBHZXRSYW5kb21TZWVkRnJvbUZsYWcoSW50MzIgcmFuZG9tX3NlZWRfZmxh
ZykgewotICBjb25zdCB1bnNpZ25lZCBpbnQgcmF3X3NlZWQgPSAocmFuZG9tX3NlZWRfZmxhZyA9
PSAwKSA/Ci0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KEdldFRpbWVJbk1pbGxpcygp
KSA6Ci0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJhbmRvbV9zZWVkX2ZsYWcpOwot
Ci0gIC8vIE5vcm1hbGl6ZXMgdGhlIGFjdHVhbCBzZWVkIHRvIHJhbmdlIFsxLCBrTWF4UmFuZG9t
U2VlZF0gc3VjaCB0aGF0Ci0gIC8vIGl0J3MgZWFzeSB0byB0eXBlLgotICBjb25zdCBpbnQgbm9y
bWFsaXplZF9zZWVkID0KLSAgICAgIHN0YXRpY19jYXN0PGludD4oKHJhd19zZWVkIC0gMVUpICUK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihrTWF4UmFu
ZG9tU2VlZCkpICsgMTsKLSAgcmV0dXJuIG5vcm1hbGl6ZWRfc2VlZDsKLX0KLQotLy8gUmV0dXJu
cyB0aGUgZmlyc3QgdmFsaWQgcmFuZG9tIHNlZWQgYWZ0ZXIgJ3NlZWQnLiAgVGhlIGJlaGF2aW9y
IGlzCi0vLyB1bmRlZmluZWQgaWYgJ3NlZWQnIGlzIGludmFsaWQuICBUaGUgc2VlZCBhZnRlciBr
TWF4UmFuZG9tU2VlZCBpcwotLy8gY29uc2lkZXJlZCB0byBiZSAxLgotaW5saW5lIGludCBHZXRO
ZXh0UmFuZG9tU2VlZChpbnQgc2VlZCkgewotICBHVEVTVF9DSEVDS18oMSA8PSBzZWVkICYmIHNl
ZWQgPD0ga01heFJhbmRvbVNlZWQpCi0gICAgICA8PCAiSW52YWxpZCByYW5kb20gc2VlZCAiIDw8
IHNlZWQgPDwgIiAtIG11c3QgYmUgaW4gWzEsICIKLSAgICAgIDw8IGtNYXhSYW5kb21TZWVkIDw8
ICJdLiI7Ci0gIGNvbnN0IGludCBuZXh0X3NlZWQgPSBzZWVkICsgMTsKLSAgcmV0dXJuIChuZXh0
X3NlZWQgPiBrTWF4UmFuZG9tU2VlZCkgPyAxIDogbmV4dF9zZWVkOwotfQotCi0vLyBUaGlzIGNs
YXNzIHNhdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIEdvb2dsZSBUZXN0IGZsYWdzIGluIGl0cyBjJ3Rv
ciwgYW5kCi0vLyByZXN0b3JlcyB0aGVtIGluIGl0cyBkJ3Rvci4KLWNsYXNzIEdUZXN0RmxhZ1Nh
dmVyIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjJ3Rvci4KLSAgR1Rlc3RGbGFnU2F2ZXIoKSB7Ci0g
ICAgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHNfID0gR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cyk7Ci0gICAgYnJlYWtfb25fZmFpbHVyZV8gPSBHVEVTVF9GTEFHKGJyZWFrX29uX2Zh
aWx1cmUpOwotICAgIGNhdGNoX2V4Y2VwdGlvbnNfID0gR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKTsKLSAgICBjb2xvcl8gPSBHVEVTVF9GTEFHKGNvbG9yKTsKLSAgICBkZWF0aF90ZXN0X3N0
eWxlXyA9IEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSk7Ci0gICAgZGVhdGhfdGVzdF91c2Vf
Zm9ya18gPSBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwotICAgIGZpbHRlcl8gPSBH
VEVTVF9GTEFHKGZpbHRlcik7Ci0gICAgaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfID0gR1RFU1Rf
RkxBRyhpbnRlcm5hbF9ydW5fZGVhdGhfdGVzdCk7Ci0gICAgbGlzdF90ZXN0c18gPSBHVEVTVF9G
TEFHKGxpc3RfdGVzdHMpOwotICAgIG91dHB1dF8gPSBHVEVTVF9GTEFHKG91dHB1dCk7Ci0gICAg
cHJpbnRfdGltZV8gPSBHVEVTVF9GTEFHKHByaW50X3RpbWUpOwotICAgIHJhbmRvbV9zZWVkXyA9
IEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpOwotICAgIHJlcGVhdF8gPSBHVEVTVF9GTEFHKHJlcGVh
dCk7Ci0gICAgc2h1ZmZsZV8gPSBHVEVTVF9GTEFHKHNodWZmbGUpOwotICAgIHN0YWNrX3RyYWNl
X2RlcHRoXyA9IEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotICAgIHN0cmVhbV9yZXN1
bHRfdG9fID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKTsKLSAgICB0aHJvd19vbl9mYWls
dXJlXyA9IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSk7Ci0gIH0KLQotICAvLyBUaGUgZCd0
b3IgaXMgbm90IHZpcnR1YWwuICBETyBOT1QgSU5IRVJJVCBGUk9NIFRISVMgQ0xBU1MuCi0gIH5H
VGVzdEZsYWdTYXZlcigpIHsKLSAgICBHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
KSA9IGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzXzsKLSAgICBHVEVTVF9GTEFHKGJyZWFrX29uX2Zh
aWx1cmUpID0gYnJlYWtfb25fZmFpbHVyZV87Ci0gICAgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRp
b25zKSA9IGNhdGNoX2V4Y2VwdGlvbnNfOwotICAgIEdURVNUX0ZMQUcoY29sb3IpID0gY29sb3Jf
OwotICAgIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSBkZWF0aF90ZXN0X3N0eWxlXzsK
LSAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gZGVhdGhfdGVzdF91c2VfZm9y
a187Ci0gICAgR1RFU1RfRkxBRyhmaWx0ZXIpID0gZmlsdGVyXzsKLSAgICBHVEVTVF9GTEFHKGlu
dGVybmFsX3J1bl9kZWF0aF90ZXN0KSA9IGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKLSAgICBH
VEVTVF9GTEFHKGxpc3RfdGVzdHMpID0gbGlzdF90ZXN0c187Ci0gICAgR1RFU1RfRkxBRyhvdXRw
dXQpID0gb3V0cHV0XzsKLSAgICBHVEVTVF9GTEFHKHByaW50X3RpbWUpID0gcHJpbnRfdGltZV87
Ci0gICAgR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkgPSByYW5kb21fc2VlZF87Ci0gICAgR1RFU1Rf
RkxBRyhyZXBlYXQpID0gcmVwZWF0XzsKLSAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0gc2h1ZmZs
ZV87Ci0gICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBzdGFja190cmFjZV9kZXB0
aF87Ci0gICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9IHN0cmVhbV9yZXN1bHRfdG9f
OwotICAgIEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkgPSB0aHJvd19vbl9mYWlsdXJlXzsK
LSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gRmllbGRzIGZvciBzYXZpbmcgdGhlIG9yaWdpbmFsIHZh
bHVlcyBvZiBmbGFncy4KLSAgYm9vbCBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0c187Ci0gIGJvb2wg
YnJlYWtfb25fZmFpbHVyZV87Ci0gIGJvb2wgY2F0Y2hfZXhjZXB0aW9uc187Ci0gIHN0ZDo6c3Ry
aW5nIGNvbG9yXzsKLSAgc3RkOjpzdHJpbmcgZGVhdGhfdGVzdF9zdHlsZV87Ci0gIGJvb2wgZGVh
dGhfdGVzdF91c2VfZm9ya187Ci0gIHN0ZDo6c3RyaW5nIGZpbHRlcl87Ci0gIHN0ZDo6c3RyaW5n
IGludGVybmFsX3J1bl9kZWF0aF90ZXN0XzsKLSAgYm9vbCBsaXN0X3Rlc3RzXzsKLSAgc3RkOjpz
dHJpbmcgb3V0cHV0XzsKLSAgYm9vbCBwcmludF90aW1lXzsKLSAgaW50ZXJuYWw6OkludDMyIHJh
bmRvbV9zZWVkXzsKLSAgaW50ZXJuYWw6OkludDMyIHJlcGVhdF87Ci0gIGJvb2wgc2h1ZmZsZV87
Ci0gIGludGVybmFsOjpJbnQzMiBzdGFja190cmFjZV9kZXB0aF87Ci0gIHN0ZDo6c3RyaW5nIHN0
cmVhbV9yZXN1bHRfdG9fOwotICBib29sIHRocm93X29uX2ZhaWx1cmVfOwotfSBHVEVTVF9BVFRS
SUJVVEVfVU5VU0VEXzsKLQotLy8gQ29udmVydHMgYSBVbmljb2RlIGNvZGUgcG9pbnQgdG8gYSBu
YXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29kaW5nLgotLy8gY29kZV9wb2ludCBwYXJhbWV0ZXIg
aXMgb2YgdHlwZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3QgYmUKLS8vIHdpZGUgZW5v
dWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBvaW50LgotLy8gSWYgdGhlIGNvZGVfcG9pbnQgaXMgbm90
IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUg
cmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRlZAotLy8gdG8gIihJbnZh
bGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBDb2RlUG9p
bnRUb1V0ZjgoVUludDMyIGNvZGVfcG9pbnQpOwotCi0vLyBDb252ZXJ0cyBhIHdpZGUgc3RyaW5n
IHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KLS8vIFRoZSB3aWRlIHN0cmlu
ZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoKLS8vICAgVVRGLTE2
IGlmIHNpemVvZih3Y2hhcl90KSA9PSAyIChvbiBXaW5kb3dzLCBDeWd3aW4sIFN5bWJpYW4gT1Mp
Ci0vLyAgIFVURi0zMiBpZiBzaXplb2Yod2NoYXJfdCkgPT0gNCAob24gTGludXgpCi0vLyBQYXJh
bWV0ZXIgc3RyIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZCB3aWRlIHN0cmluZy4KLS8vIFBh
cmFtZXRlciBudW1fY2hhcnMgbWF5IGFkZGl0aW9uYWxseSBsaW1pdCB0aGUgbnVtYmVyCi0vLyBv
ZiB3Y2hhcl90IGNoYXJhY3RlcnMgcHJvY2Vzc2VkLiAtMSBpcyB1c2VkIHdoZW4gdGhlIGVudGly
ZSBzdHJpbmcKLS8vIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0vLyBJZiB0aGUgc3RyaW5nIGNvbnRh
aW5zIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCB2YWxpZCBVbmljb2RlIGNvZGUgcG9pbnRzCi0v
LyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSB0aGV5IHdp
bGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhYWFhYKScuIElmIHRo
ZSBzdHJpbmcgaXMgaW4gVVRGMTYgZW5jb2RpbmcKLS8vIGFuZCBjb250YWlucyBpbnZhbGlkIFVU
Ri0xNiBzdXJyb2dhdGUgcGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwotLy8gd2lsbCBiZSBl
bmNvZGVkIGFzIGluZGl2aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20gQmFzaWMgTm9ybWFs
IFBsYW5lLgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBXaWRlU3RyaW5nVG9VdGY4KGNvbnN0IHdj
aGFyX3QqIHN0ciwgaW50IG51bV9jaGFycyk7Ci0KLS8vIFJlYWRzIHRoZSBHVEVTVF9TSEFSRF9T
VEFUVVNfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhlIGZpbGUKLS8v
IGlmIHRoZSB2YXJpYWJsZSBpcyBwcmVzZW50LiBJZiBhIGZpbGUgYWxyZWFkeSBleGlzdHMgYXQg
dGhpcyBsb2NhdGlvbiwgdGhpcwotLy8gZnVuY3Rpb24gd2lsbCB3cml0ZSBvdmVyIGl0LiBJZiB0
aGUgdmFyaWFibGUgaXMgcHJlc2VudCwgYnV0IHRoZSBmaWxlIGNhbm5vdAotLy8gYmUgY3JlYXRl
ZCwgcHJpbnRzIGFuIGVycm9yIGFuZCBleGl0cy4KLXZvaWQgV3JpdGVUb1NoYXJkU3RhdHVzRmls
ZUlmTmVlZGVkKCk7Ci0KLS8vIENoZWNrcyB3aGV0aGVyIHNoYXJkaW5nIGlzIGVuYWJsZWQgYnkg
ZXhhbWluaW5nIHRoZSByZWxldmFudAotLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLiBJ
ZiB0aGUgdmFyaWFibGVzIGFyZSBwcmVzZW50LAotLy8gYnV0IGluY29uc2lzdGVudCAoZS5nLiwg
c2hhcmRfaW5kZXggPj0gdG90YWxfc2hhcmRzKSwgcHJpbnRzCi0vLyBhbiBlcnJvciBhbmQgZXhp
dHMuIElmIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QsIHNoYXJkaW5nIGlzCi0vLyBkaXNh
YmxlZCBiZWNhdXNlIGl0IG11c3Qgb25seSBiZSBhcHBsaWVkIHRvIHRoZSBvcmlnaW5hbCB0ZXN0
Ci0vLyBwcm9jZXNzLiBPdGhlcndpc2UsIHdlIGNvdWxkIGZpbHRlciBvdXQgZGVhdGggdGVzdHMg
d2UgaW50ZW5kZWQgdG8gZXhlY3V0ZS4KLUdURVNUX0FQSV8gYm9vbCBTaG91bGRTaGFyZChjb25z
dCBjaGFyKiB0b3RhbF9zaGFyZHNfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHNoYXJkX2luZGV4X3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGluX3N1YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpOwotCi0vLyBQYXJzZXMgdGhlIGVudmly
b25tZW50IHZhcmlhYmxlIHZhciBhcyBhbiBJbnQzMi4gSWYgaXQgaXMgdW5zZXQsCi0vLyByZXR1
cm5zIGRlZmF1bHRfdmFsLiBJZiBpdCBpcyBub3QgYW4gSW50MzIsIHByaW50cyBhbiBlcnJvciBh
bmQKLS8vIGFuZCBhYm9ydHMuCi1HVEVTVF9BUElfIEludDMyIEludDMyRnJvbUVudk9yRGllKGNv
bnN0IGNoYXIqIGVudl92YXIsIEludDMyIGRlZmF1bHRfdmFsKTsKLQotLy8gR2l2ZW4gdGhlIHRv
dGFsIG51bWJlciBvZiBzaGFyZHMsIHRoZSBzaGFyZCBpbmRleCwgYW5kIHRoZSB0ZXN0IGlkLAot
Ly8gcmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBzaG91bGQgYmUgcnVuIG9uIHRoaXMgc2hhcmQu
IFRoZSB0ZXN0IGlkIGlzCi0vLyBzb21lIGFyYml0cmFyeSBidXQgdW5pcXVlIG5vbi1uZWdhdGl2
ZSBpbnRlZ2VyIGFzc2lnbmVkIHRvIGVhY2ggdGVzdAotLy8gbWV0aG9kLiBBc3N1bWVzIHRoYXQg
MCA8PSBzaGFyZF9pbmRleCA8IHRvdGFsX3NoYXJkcy4KLUdURVNUX0FQSV8gYm9vbCBTaG91bGRS
dW5UZXN0T25TaGFyZCgKLSAgICBpbnQgdG90YWxfc2hhcmRzLCBpbnQgc2hhcmRfaW5kZXgsIGlu
dCB0ZXN0X2lkKTsKLQotLy8gU1RMIGNvbnRhaW5lciB1dGlsaXRpZXMuCi0KLS8vIFJldHVybnMg
dGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgZ2l2ZW4gY29udGFpbmVyIHRoYXQgc2F0aXNm
eQotLy8gdGhlIGdpdmVuIHByZWRpY2F0ZS4KLXRlbXBsYXRlIDxjbGFzcyBDb250YWluZXIsIHR5
cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBpbnQgQ291bnRJZihjb25zdCBDb250YWluZXImIGMs
IFByZWRpY2F0ZSBwcmVkaWNhdGUpIHsKLSAgLy8gSW1wbGVtZW50ZWQgYXMgYW4gZXhwbGljaXQg
bG9vcCBzaW5jZSBzdGQ6OmNvdW50X2lmKCkgaW4gbGliQ3N0ZCBvbgotICAvLyBTb2xhcmlzIGhh
cyBhIG5vbi1zdGFuZGFyZCBzaWduYXR1cmUuCi0gIGludCBjb3VudCA9IDA7Ci0gIGZvciAodHlw
ZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpdCA9IGMuYmVnaW4oKTsgaXQgIT0gYy5l
bmQoKTsgKytpdCkgewotICAgIGlmIChwcmVkaWNhdGUoKml0KSkKLSAgICAgICsrY291bnQ7Ci0g
IH0KLSAgcmV0dXJuIGNvdW50OwotfQotCi0vLyBBcHBsaWVzIGEgZnVuY3Rpb24vZnVuY3RvciB0
byBlYWNoIGVsZW1lbnQgaW4gdGhlIGNvbnRhaW5lci4KLXRlbXBsYXRlIDxjbGFzcyBDb250YWlu
ZXIsIHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIEZvckVhY2goY29uc3QgQ29udGFpbmVyJiBjLCBG
dW5jdG9yIGZ1bmN0b3IpIHsKLSAgc3RkOjpmb3JfZWFjaChjLmJlZ2luKCksIGMuZW5kKCksIGZ1
bmN0b3IpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBpLXRoIGVsZW1lbnQgb2YgdGhlIHZlY3Rvciwg
b3IgZGVmYXVsdF92YWx1ZSBpZiBpIGlzIG5vdAotLy8gaW4gcmFuZ2UgWzAsIHYuc2l6ZSgpKS4K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFPgotaW5saW5lIEUgR2V0RWxlbWVudE9yKGNvbnN0IHN0ZDo6
dmVjdG9yPEU+JiB2LCBpbnQgaSwgRSBkZWZhdWx0X3ZhbHVlKSB7Ci0gIHJldHVybiAoaSA8IDAg
fHwgaSA+PSBzdGF0aWNfY2FzdDxpbnQ+KHYuc2l6ZSgpKSkgPyBkZWZhdWx0X3ZhbHVlIDogdltp
XTsKLX0KLQotLy8gUGVyZm9ybXMgYW4gaW4tcGxhY2Ugc2h1ZmZsZSBvZiBhIHJhbmdlIG9mIHRo
ZSB2ZWN0b3IncyBlbGVtZW50cy4KLS8vICdiZWdpbicgYW5kICdlbmQnIGFyZSBlbGVtZW50IGlu
ZGljZXMgYXMgYW4gU1RMLXN0eWxlIHJhbmdlOwotLy8gaS5lLiBbYmVnaW4sIGVuZCkgYXJlIHNo
dWZmbGVkLCB3aGVyZSAnZW5kJyA9PSBzaXplKCkgbWVhbnMgdG8KLS8vIHNodWZmbGUgdG8gdGhl
IGVuZCBvZiB0aGUgdmVjdG9yLgotdGVtcGxhdGUgPHR5cGVuYW1lIEU+Ci12b2lkIFNodWZmbGVS
YW5nZShpbnRlcm5hbDo6UmFuZG9tKiByYW5kb20sIGludCBiZWdpbiwgaW50IGVuZCwKLSAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEU+KiB2KSB7Ci0gIGNvbnN0IGludCBzaXplID0gc3Rh
dGljX2Nhc3Q8aW50Pih2LT5zaXplKCkpOwotICBHVEVTVF9DSEVDS18oMCA8PSBiZWdpbiAmJiBi
ZWdpbiA8PSBzaXplKQotICAgICAgPDwgIkludmFsaWQgc2h1ZmZsZSByYW5nZSBzdGFydCAiIDw8
IGJlZ2luIDw8ICI6IG11c3QgYmUgaW4gcmFuZ2UgWzAsICIKLSAgICAgIDw8IHNpemUgPDwgIl0u
IjsKLSAgR1RFU1RfQ0hFQ0tfKGJlZ2luIDw9IGVuZCAmJiBlbmQgPD0gc2l6ZSkKLSAgICAgIDw8
ICJJbnZhbGlkIHNodWZmbGUgcmFuZ2UgZmluaXNoICIgPDwgZW5kIDw8ICI6IG11c3QgYmUgaW4g
cmFuZ2UgWyIKLSAgICAgIDw8IGJlZ2luIDw8ICIsICIgPDwgc2l6ZSA8PCAiXS4iOwotCi0gIC8v
IEZpc2hlci1ZYXRlcyBzaHVmZmxlLCBmcm9tCi0gIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUKLSAgZm9yIChpbnQgcmFuZ2Vfd2lkdGggPSBlbmQg
LSBiZWdpbjsgcmFuZ2Vfd2lkdGggPj0gMjsgcmFuZ2Vfd2lkdGgtLSkgewotICAgIGNvbnN0IGlu
dCBsYXN0X2luX3JhbmdlID0gYmVnaW4gKyByYW5nZV93aWR0aCAtIDE7Ci0gICAgY29uc3QgaW50
IHNlbGVjdGVkID0gYmVnaW4gKyByYW5kb20tPkdlbmVyYXRlKHJhbmdlX3dpZHRoKTsKLSAgICBz
dGQ6OnN3YXAoKCp2KVtzZWxlY3RlZF0sICgqdilbbGFzdF9pbl9yYW5nZV0pOwotICB9Ci19Ci0K
LS8vIFBlcmZvcm1zIGFuIGluLXBsYWNlIHNodWZmbGUgb2YgdGhlIHZlY3RvcidzIGVsZW1lbnRz
LgotdGVtcGxhdGUgPHR5cGVuYW1lIEU+Ci1pbmxpbmUgdm9pZCBTaHVmZmxlKGludGVybmFsOjpS
YW5kb20qIHJhbmRvbSwgc3RkOjp2ZWN0b3I8RT4qIHYpIHsKLSAgU2h1ZmZsZVJhbmdlKHJhbmRv
bSwgMCwgc3RhdGljX2Nhc3Q8aW50Pih2LT5zaXplKCkpLCB2KTsKLX0KLQotLy8gQSBmdW5jdGlv
biBmb3IgZGVsZXRpbmcgYW4gb2JqZWN0LiAgSGFuZHkgZm9yIGJlaW5nIHVzZWQgYXMgYQotLy8g
ZnVuY3Rvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgRGVsZXRlKFQqIHgp
IHsKLSAgZGVsZXRlIHg7Ci19Ci0KLS8vIEEgcHJlZGljYXRlIHRoYXQgY2hlY2tzIHRoZSBrZXkg
b2YgYSBUZXN0UHJvcGVydHkgYWdhaW5zdCBhIGtub3duIGtleS4KLS8vCi0vLyBUZXN0UHJvcGVy
dHlLZXlJcyBpcyBjb3B5YWJsZS4KLWNsYXNzIFRlc3RQcm9wZXJ0eUtleUlzIHsKLSBwdWJsaWM6
Ci0gIC8vIENvbnN0cnVjdG9yLgotICAvLwotICAvLyBUZXN0UHJvcGVydHlLZXlJcyBoYXMgTk8g
ZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdFByb3BlcnR5S2V5SXMoY29uc3Qg
c3RkOjpzdHJpbmcmIGtleSkgOiBrZXlfKGtleSkge30KLQotICAvLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSB0ZXN0IG5hbWUgb2YgdGVzdCBwcm9wZXJ0eSBtYXRjaGVzIG9uIGtleV8uCi0gIGJvb2wg
b3BlcmF0b3IoKShjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIGNvbnN0IHsKLSAg
ICByZXR1cm4gdGVzdF9wcm9wZXJ0eS5rZXkoKSA9PSBrZXlfOwotICB9Ci0KLSBwcml2YXRlOgot
ICBzdGQ6OnN0cmluZyBrZXlfOwotfTsKLQotLy8gQ2xhc3MgVW5pdFRlc3RPcHRpb25zLgotLy8K
LS8vIFRoaXMgY2xhc3MgY29udGFpbnMgZnVuY3Rpb25zIGZvciBwcm9jZXNzaW5nIG9wdGlvbnMg
dGhlIHVzZXIKLS8vIHNwZWNpZmllcyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzLiAgSXQgaGFzIG9u
bHkgc3RhdGljIG1lbWJlcnMuCi0vLwotLy8gSW4gbW9zdCBjYXNlcywgdGhlIHVzZXIgY2FuIHNw
ZWNpZnkgYW4gb3B0aW9uIHVzaW5nIGVpdGhlciBhbgotLy8gZW52aXJvbm1lbnQgdmFyaWFibGUg
b3IgYSBjb21tYW5kIGxpbmUgZmxhZy4gIEUuZy4geW91IGNhbiBzZXQgdGhlCi0vLyB0ZXN0IGZp
bHRlciB1c2luZyBlaXRoZXIgR1RFU1RfRklMVEVSIG9yIC0tZ3Rlc3RfZmlsdGVyLiAgSWYgYm90
aAotLy8gdGhlIHZhcmlhYmxlIGFuZCB0aGUgZmxhZyBhcmUgcHJlc2VudCwgdGhlIGxhdHRlciBv
dmVycmlkZXMgdGhlCi0vLyBmb3JtZXIuCi1jbGFzcyBHVEVTVF9BUElfIFVuaXRUZXN0T3B0aW9u
cyB7Ci0gcHVibGljOgotICAvLyBGdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291
dHB1dCBmbGFnLgotCi0gIC8vIFJldHVybnMgdGhlIG91dHB1dCBmb3JtYXQsIG9yICIiIGZvciBu
b3JtYWwgcHJpbnRlZCBvdXRwdXQuCi0gIHN0YXRpYyBzdGQ6OnN0cmluZyBHZXRPdXRwdXRGb3Jt
YXQoKTsKLQotICAvLyBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSByZXF1ZXN0ZWQg
b3V0cHV0IGZpbGUsIG9yIHRoZQotICAvLyBkZWZhdWx0ICh0ZXN0X2RldGFpbC54bWwgaW4gdGhl
IG9yaWdpbmFsIHdvcmtpbmcgZGlyZWN0b3J5KSBpZgotICAvLyBub25lIHdhcyBleHBsaWNpdGx5
IHNwZWNpZmllZC4KLSAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldEFic29sdXRlUGF0aFRvT3V0cHV0
RmlsZSgpOwotCi0gIC8vIEZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyB0aGUgZ3Rlc3RfZmlsdGVy
IGZsYWcuCi0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgd2lsZGNhcmQgcGF0dGVybiBtYXRj
aGVzIHRoZSBzdHJpbmcuICBUaGUKLSAgLy8gZmlyc3QgJzonIG9yICdcMCcgY2hhcmFjdGVyIGlu
IHBhdHRlcm4gbWFya3MgdGhlIGVuZCBvZiBpdC4KLSAgLy8KLSAgLy8gVGhpcyByZWN1cnNpdmUg
YWxnb3JpdGhtIGlzbid0IHZlcnkgZWZmaWNpZW50LCBidXQgaXMgY2xlYXIgYW5kCi0gIC8vIHdv
cmtzIHdlbGwgZW5vdWdoIGZvciBtYXRjaGluZyB0ZXN0IG5hbWVzLCB3aGljaCBhcmUgc2hvcnQu
Ci0gIHN0YXRpYyBib29sIFBhdHRlcm5NYXRjaGVzU3RyaW5nKGNvbnN0IGNoYXIgKnBhdHRlcm4s
IGNvbnN0IGNoYXIgKnN0cik7Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdXNlci1zcGVj
aWZpZWQgZmlsdGVyIG1hdGNoZXMgdGhlIHRlc3QgY2FzZQotICAvLyBuYW1lIGFuZCB0aGUgdGVz
dCBuYW1lLgotICBzdGF0aWMgYm9vbCBGaWx0ZXJNYXRjaGVzVGVzdChjb25zdCBzdGQ6OnN0cmlu
ZyAmdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAvLyBG
dW5jdGlvbiBmb3Igc3VwcG9ydGluZyB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uIGZsYWcuCi0K
LSAgLy8gUmV0dXJucyBFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSIGlmIEdvb2dsZSBUZXN0IHNo
b3VsZCBoYW5kbGUgdGhlCi0gIC8vIGdpdmVuIFNFSCBleGNlcHRpb24sIG9yIEVYQ0VQVElPTl9D
T05USU5VRV9TRUFSQ0ggb3RoZXJ3aXNlLgotICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCBh
cyBhbiBfX2V4Y2VwdCBjb25kaXRpb24uCi0gIHN0YXRpYyBpbnQgR1Rlc3RTaG91bGRQcm9jZXNz
U0VIKERXT1JEIGV4Y2VwdGlvbl9jb2RlKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
Ci0gIC8vIFJldHVybnMgdHJ1ZSBpZiAibmFtZSIgbWF0Y2hlcyB0aGUgJzonIHNlcGFyYXRlZCBs
aXN0IG9mIGdsb2Itc3R5bGUKLSAgLy8gZmlsdGVycyBpbiAiZmlsdGVyIi4KLSAgc3RhdGljIGJv
b2wgTWF0Y2hlc0ZpbHRlcihjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmls
dGVyKTsKLX07Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24ncyBuYW1lLCBy
ZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0Ci0vLyBpcyBwcmVzZW50LiAgVXNlZCBieSBV
bml0VGVzdE9wdGlvbnM6OkdldE91dHB1dEZpbGUuCi1HVEVTVF9BUElfIEZpbGVQYXRoIEdldEN1
cnJlbnRFeGVjdXRhYmxlTmFtZSgpOwotCi0vLyBUaGUgcm9sZSBpbnRlcmZhY2UgZm9yIGdldHRp
bmcgdGhlIE9TIHN0YWNrIHRyYWNlIGFzIGEgc3RyaW5nLgotY2xhc3MgT3NTdGFja1RyYWNlR2V0
dGVySW50ZXJmYWNlIHsKLSBwdWJsaWM6Ci0gIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSgp
IHt9Ci0gIHZpcnR1YWwgfk9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSgpIHt9Ci0KLSAgLy8g
UmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0cmluZy4gIFBh
cmFtZXRlcnM6Ci0gIC8vCi0gIC8vICAgbWF4X2RlcHRoICAtIHRoZSBtYXhpbXVtIG51bWJlciBv
ZiBzdGFjayBmcmFtZXMgdG8gYmUgaW5jbHVkZWQKLSAgLy8gICAgICAgICAgICAgICAgaW4gdGhl
IHRyYWNlLgotICAvLyAgIHNraXBfY291bnQgLSB0aGUgbnVtYmVyIG9mIHRvcCBmcmFtZXMgdG8g
YmUgc2tpcHBlZDsgZG9lc24ndCBjb3VudAotICAvLyAgICAgICAgICAgICAgICBhZ2FpbnN0IG1h
eF9kZXB0aC4KLSAgdmlydHVhbCBzdGQ6OnN0cmluZyBDdXJyZW50U3RhY2tUcmFjZShpbnQgbWF4
X2RlcHRoLCBpbnQgc2tpcF9jb3VudCkgPSAwOwotCi0gIC8vIFVwb25MZWF2aW5nR1Rlc3QoKSBz
aG91bGQgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBHb29nbGUgVGVzdCBjYWxscwotICAv
LyB1c2VyIGNvZGUuIEl0IHNhdmVzIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQg
c3RhY2sgdGhhdAotICAvLyBDdXJyZW50U3RhY2tUcmFjZSgpIHdpbGwgdXNlIHRvIGZpbmQgYW5k
IGhpZGUgR29vZ2xlIFRlc3Qgc3RhY2sgZnJhbWVzLgotICB2aXJ0dWFsIHZvaWQgVXBvbkxlYXZp
bmdHVGVzdCgpID0gMDsKLQotICAvLyBUaGlzIHN0cmluZyBpcyBpbnNlcnRlZCBpbiBwbGFjZSBv
ZiBzdGFjayBmcmFtZXMgdGhhdCBhcmUgcGFydCBvZgotICAvLyBHb29nbGUgVGVzdCdzIGltcGxl
bWVudGF0aW9uLgotICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga0VsaWRlZEZyYW1lc01hcmtl
cjsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFj
a1RyYWNlR2V0dGVySW50ZXJmYWNlKTsKLX07Ci0KLS8vIEEgd29ya2luZyBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgT3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlIGludGVyZmFjZS4KLWNsYXNzIE9z
U3RhY2tUcmFjZUdldHRlciA6IHB1YmxpYyBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2Ugewot
IHB1YmxpYzoKLSAgT3NTdGFja1RyYWNlR2V0dGVyKCkge30KLQotICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIEN1cnJlbnRTdGFja1RyYWNlKGludCBtYXhfZGVwdGgsIGludCBza2lwX2NvdW50KTsKLSAg
dmlydHVhbCB2b2lkIFVwb25MZWF2aW5nR1Rlc3QoKTsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oT3NTdGFja1RyYWNlR2V0dGVyKTsKLX07Ci0KLS8vIElu
Zm9ybWF0aW9uIGFib3V0IGEgR29vZ2xlIFRlc3QgdHJhY2UgcG9pbnQuCi1zdHJ1Y3QgVHJhY2VJ
bmZvIHsKLSAgY29uc3QgY2hhciogZmlsZTsKLSAgaW50IGxpbmU7Ci0gIHN0ZDo6c3RyaW5nIG1l
c3NhZ2U7Ci19OwotCi0vLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdsb2JhbCB0ZXN0IHBhcnQgcmVz
dWx0IHJlcG9ydGVyIHVzZWQgaW4gVW5pdFRlc3RJbXBsLgotLy8gVGhpcyBjbGFzcyBzaG91bGQg
b25seSBiZSB1c2VkIGJ5IFVuaXRUZXN0SW1wbC4KLWNsYXNzIERlZmF1bHRHbG9iYWxUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyCi0gIDogcHVibGljIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZh
Y2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXIoVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3QpOwotICAvLyBJbXBsZW1lbnRzIHRoZSBUZXN0
UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlLiBSZXBvcnRzIHRoZSB0ZXN0IHBhcnQKLSAgLy8g
cmVzdWx0IGluIHRoZSBjdXJyZW50IHRlc3QuCi0gIHZpcnR1YWwgdm9pZCBSZXBvcnRUZXN0UGFy
dFJlc3VsdChjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KTsKLQotIHByaXZhdGU6Ci0gIFVu
aXRUZXN0SW1wbCogY29uc3QgdW5pdF90ZXN0XzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FO
RF9BU1NJR05fKERlZmF1bHRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKTsKLX07Ci0KLS8v
IFRoaXMgaXMgdGhlIGRlZmF1bHQgcGVyIHRocmVhZCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVy
IHVzZWQgaW4KLS8vIFVuaXRUZXN0SW1wbC4gVGhpcyBjbGFzcyBzaG91bGQgb25seSBiZSB1c2Vk
IGJ5IFVuaXRUZXN0SW1wbC4KLWNsYXNzIERlZmF1bHRQZXJUaHJlYWRUZXN0UGFydFJlc3VsdFJl
cG9ydGVyCi0gICAgOiBwdWJsaWMgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSB7Ci0g
cHVibGljOgotICBleHBsaWNpdCBEZWZhdWx0UGVyVGhyZWFkVGVzdFBhcnRSZXN1bHRSZXBvcnRl
cihVbml0VGVzdEltcGwqIHVuaXRfdGVzdCk7Ci0gIC8vIEltcGxlbWVudHMgdGhlIFRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbiBqdXN0Ci0gIC8vIGRl
bGVnYXRlcyB0byB0aGUgY3VycmVudCBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlciBv
ZiAqdW5pdF90ZXN0Xy4KLSAgdmlydHVhbCB2b2lkIFJlcG9ydFRlc3RQYXJ0UmVzdWx0KGNvbnN0
IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpOwotCi0gcHJpdmF0ZToKLSAgVW5pdFRlc3RJbXBsKiBj
b25zdCB1bml0X3Rlc3RfOwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVm
YXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIpOwotfTsKLQotLy8gVGhlIHByaXZh
dGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaXRUZXN0IGNsYXNzLiAgV2UgZG9uJ3QgcHJvdGVj
dAotLy8gdGhlIG1ldGhvZHMgdW5kZXIgYSBtdXRleCwgYXMgdGhpcyBjbGFzcyBpcyBub3QgYWNj
ZXNzaWJsZSBieSBhCi0vLyB1c2VyIGFuZCB0aGUgVW5pdFRlc3QgY2xhc3MgdGhhdCBkZWxlZ2F0
ZXMgd29yayB0byB0aGlzIGNsYXNzIGRvZXMKLS8vIHByb3BlciBsb2NraW5nLgotY2xhc3MgR1RF
U1RfQVBJXyBVbml0VGVzdEltcGwgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgVW5pdFRlc3RJbXBs
KFVuaXRUZXN0KiBwYXJlbnQpOwotICB2aXJ0dWFsIH5Vbml0VGVzdEltcGwoKTsKLQotICAvLyBU
aGVyZSBhcmUgdHdvIGRpZmZlcmVudCB3YXlzIHRvIHJlZ2lzdGVyIHlvdXIgb3duIFRlc3RQYXJ0
UmVzdWx0UmVwb3J0ZXIuCi0gIC8vIFlvdSBjYW4gcmVnaXN0ZXIgeW91ciBvd24gcmVwb3RlciB0
byBsaXN0ZW4gZWl0aGVyIG9ubHkgZm9yIHRlc3QgcmVzdWx0cwotICAvLyBmcm9tIHRoZSBjdXJy
ZW50IHRocmVhZCBvciBmb3IgcmVzdWx0cyBmcm9tIGFsbCB0aHJlYWRzLgotICAvLyBCeSBkZWZh
dWx0LCBlYWNoIHBlci10aHJlYWQgdGVzdCByZXN1bHQgcmVwb3RlciBqdXN0IHBhc3NlcyBhIG5l
dwotICAvLyBUZXN0UGFydFJlc3VsdCB0byB0aGUgZ2xvYmFsIHRlc3QgcmVzdWx0IHJlcG9ydGVy
LCB3aGljaCByZWdpc3RlcnMgdGhlCi0gIC8vIHRlc3QgcGFydCByZXN1bHQgZm9yIHRoZSBjdXJy
ZW50bHkgcnVubmluZyB0ZXN0LgotCi0gIC8vIFJldHVybnMgdGhlIGdsb2JhbCB0ZXN0IHBhcnQg
cmVzdWx0IHJlcG9ydGVyLgotICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKiBHZXRH
bG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKCk7Ci0KLSAgLy8gU2V0cyB0aGUgZ2xvYmFsIHRl
c3QgcGFydCByZXN1bHQgcmVwb3J0ZXIuCi0gIHZvaWQgU2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRS
ZXBvcnRlcigKLSAgICAgIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIHJlcG9ydGVy
KTsKLQotICAvLyBSZXR1cm5zIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVyIGZvciB0aGUg
Y3VycmVudCB0aHJlYWQuCi0gIFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqIEdldFRl
c3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCk7Ci0KLSAgLy8gU2V0cyB0aGUg
dGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlciBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgotICB2b2lk
IFNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKAotICAgICAgVGVzdFBh
cnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSogcmVwb3J0ZXIpOwotCi0gIC8vIEdldHMgdGhlIG51
bWJlciBvZiBzdWNjZXNzZnVsIHRlc3QgY2FzZXMuCi0gIGludCBzdWNjZXNzZnVsX3Rlc3RfY2Fz
ZV9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdCBj
YXNlcy4KLSAgaW50IGZhaWxlZF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRz
IHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMuCi0gIGludCB0b3RhbF90ZXN0X2Nhc2VfY291
bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3QgY2FzZXMgdGhh
dCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0Ci0gIC8vIHRoYXQgc2hvdWxkIHJ1bi4KLSAgaW50
IHRlc3RfY2FzZV90b19ydW5fY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1iZXIg
b2Ygc3VjY2Vzc2Z1bCB0ZXN0cy4KLSAgaW50IHN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpIGNvbnN0
OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCi0gIGludCBmYWlsZWRf
dGVzdF9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiBkaXNhYmxlZCB0
ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi0gIGludCByZXBv
cnRhYmxlX2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBHZXRzIHRoZSBudW1i
ZXIgb2YgZGlzYWJsZWQgdGVzdHMuCi0gIGludCBkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Q7
Ci0KLSAgLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhN
TCByZXBvcnQuCi0gIGludCByZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdDsKLQotICAvLyBH
ZXRzIHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgotICBpbnQgdG90YWxfdGVzdF9jb3VudCgpIGNv
bnN0OwotCi0gIC8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCi0g
IGludCB0ZXN0X3RvX3J1bl9jb3VudCgpIGNvbnN0OwotCi0gIC8vIEdldHMgdGhlIHRpbWUgb2Yg
dGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwgaW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCi0gIC8v
IFVOSVggZXBvY2guCi0gIFRpbWVJbk1pbGxpcyBzdGFydF90aW1lc3RhbXAoKSBjb25zdCB7IHJl
dHVybiBzdGFydF90aW1lc3RhbXBfOyB9Ci0KLSAgLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBp
biBtaWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWUoKSBjb25zdCB7IHJl
dHVybiBlbGFwc2VkX3RpbWVfOyB9Ci0KLSAgLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdW5pdCB0
ZXN0IHBhc3NlZCAoaS5lLiBhbGwgdGVzdCBjYXNlcyBwYXNzZWQpLgotICBib29sIFBhc3NlZCgp
IGNvbnN0IHsgcmV0dXJuICFGYWlsZWQoKTsgfQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhl
IHVuaXQgdGVzdCBmYWlsZWQgKGkuZS4gc29tZSB0ZXN0IGNhc2UgZmFpbGVkCi0gIC8vIG9yIHNv
bWV0aGluZyBvdXRzaWRlIG9mIGFsbCB0ZXN0cyBmYWlsZWQpLgotICBib29sIEZhaWxlZCgpIGNv
bnN0IHsKLSAgICByZXR1cm4gZmFpbGVkX3Rlc3RfY2FzZV9jb3VudCgpID4gMCB8fCBhZF9ob2Nf
dGVzdF9yZXN1bHQoKS0+RmFpbGVkKCk7Ci0gIH0KLQotICAvLyBHZXRzIHRoZSBpLXRoIHRlc3Qg
Y2FzZSBhbW9uZyBhbGwgdGhlIHRlc3QgY2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwotICAv
LyB0b3RhbF90ZXN0X2Nhc2VfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2Us
IHJldHVybnMgTlVMTC4KLSAgY29uc3QgVGVzdENhc2UqIEdldFRlc3RDYXNlKGludCBpKSBjb25z
dCB7Ci0gICAgY29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVudE9yKHRlc3RfY2FzZV9pbmRpY2Vz
XywgaSwgLTEpOwotICAgIHJldHVybiBpbmRleCA8IDAgPyBOVUxMIDogdGVzdF9jYXNlc19baV07
Ci0gIH0KLQotICAvLyBHZXRzIHRoZSBpLXRoIHRlc3QgY2FzZSBhbW9uZyBhbGwgdGhlIHRlc3Qg
Y2FzZXMuIGkgY2FuIHJhbmdlIGZyb20gMCB0bwotICAvLyB0b3RhbF90ZXN0X2Nhc2VfY291bnQo
KSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KLSAgVGVzdENh
c2UqIEdldE11dGFibGVUZXN0Q2FzZShpbnQgaSkgewotICAgIGNvbnN0IGludCBpbmRleCA9IEdl
dEVsZW1lbnRPcih0ZXN0X2Nhc2VfaW5kaWNlc18sIGksIC0xKTsKLSAgICByZXR1cm4gaW5kZXgg
PCAwID8gTlVMTCA6IHRlc3RfY2FzZXNfW2luZGV4XTsKLSAgfQotCi0gIC8vIFByb3ZpZGVzIGFj
Y2VzcyB0byB0aGUgZXZlbnQgbGlzdGVuZXIgbGlzdC4KLSAgVGVzdEV2ZW50TGlzdGVuZXJzKiBs
aXN0ZW5lcnMoKSB7IHJldHVybiAmbGlzdGVuZXJzXzsgfQotCi0gIC8vIFJldHVybnMgdGhlIFRl
c3RSZXN1bHQgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVubmluZywgb3IKLSAgLy8g
dGhlIFRlc3RSZXN1bHQgZm9yIHRoZSBhZCBob2MgdGVzdCBpZiBubyB0ZXN0IGlzIHJ1bm5pbmcu
Ci0gIFRlc3RSZXN1bHQqIGN1cnJlbnRfdGVzdF9yZXN1bHQoKTsKLQotICAvLyBSZXR1cm5zIHRo
ZSBUZXN0UmVzdWx0IGZvciB0aGUgYWQgaG9jIHRlc3QuCi0gIGNvbnN0IFRlc3RSZXN1bHQqIGFk
X2hvY190ZXN0X3Jlc3VsdCgpIGNvbnN0IHsgcmV0dXJuICZhZF9ob2NfdGVzdF9yZXN1bHRfOyB9
Ci0KLSAgLy8gU2V0cyB0aGUgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVyLgotICAvLwotICAvLyBEb2Vz
IG5vdGhpbmcgaWYgdGhlIGlucHV0IGFuZCB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBnZXR0
ZXIKLSAgLy8gYXJlIHRoZSBzYW1lOyBvdGhlcndpc2UsIGRlbGV0ZXMgdGhlIG9sZCBnZXR0ZXIg
YW5kIG1ha2VzIHRoZQotICAvLyBpbnB1dCB0aGUgY3VycmVudCBnZXR0ZXIuCi0gIHZvaWQgc2V0
X29zX3N0YWNrX3RyYWNlX2dldHRlcihPc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIGdldHRl
cik7Ci0KLSAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBnZXR0ZXIgaWYg
aXQgaXMgbm90IE5VTEw7Ci0gIC8vIG90aGVyd2lzZSwgY3JlYXRlcyBhbiBPc1N0YWNrVHJhY2VH
ZXR0ZXIsIG1ha2VzIGl0IHRoZSBjdXJyZW50Ci0gIC8vIGdldHRlciwgYW5kIHJldHVybnMgaXQu
Ci0gIE9zU3RhY2tUcmFjZUdldHRlckludGVyZmFjZSogb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCk7
Ci0KLSAgLy8gUmV0dXJucyB0aGUgY3VycmVudCBPUyBzdGFjayB0cmFjZSBhcyBhbiBzdGQ6OnN0
cmluZy4KLSAgLy8KLSAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBi
ZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKLSAgLy8gdGhlIGd0ZXN0X3N0YWNrX3RyYWNlX2Rl
cHRoIGZsYWcuICBUaGUgc2tpcF9jb3VudCBwYXJhbWV0ZXIKLSAgLy8gc3BlY2lmaWVzIHRoZSBu
dW1iZXIgb2YgdG9wIGZyYW1lcyB0byBiZSBza2lwcGVkLCB3aGljaCBkb2Vzbid0Ci0gIC8vIGNv
dW50IGFnYWluc3QgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgaW5jbHVkZWQuCi0gIC8vCi0g
IC8vIEZvciBleGFtcGxlLCBpZiBGb28oKSBjYWxscyBCYXIoKSwgd2hpY2ggaW4gdHVybiBjYWxs
cwotICAvLyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKDEpLCBGb28oKSB3aWxsIGJlIGlu
Y2x1ZGVkIGluIHRoZQotICAvLyB0cmFjZSBidXQgQmFyKCkgYW5kIEN1cnJlbnRPc1N0YWNrVHJh
Y2VFeGNlcHRUb3AoKSB3b24ndC4KLSAgc3RkOjpzdHJpbmcgQ3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcChpbnQgc2tpcF9jb3VudCkgR1RFU1RfTk9fSU5MSU5FXzsKLQotICAvLyBGaW5kcyBh
bmQgcmV0dXJucyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24n
dAotICAvLyBleGlzdCwgY3JlYXRlcyBvbmUgYW5kIHJldHVybnMgaXQuCi0gIC8vCi0gIC8vIEFy
Z3VtZW50czoKLSAgLy8KLSAgLy8gICB0ZXN0X2Nhc2VfbmFtZTogbmFtZSBvZiB0aGUgdGVzdCBj
YXNlCi0gIC8vICAgdHlwZV9wYXJhbTogICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBw
YXJhbWV0ZXIsIG9yIE5VTEwgaWYKLSAgLy8gICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3Qg
YSB0eXBlZCBvciBhIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotICAvLyAgIHNldF91cF90Yzog
ICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQot
ICAvLyAgIHRlYXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJz
IGRvd24gdGhlIHRlc3QgY2FzZQotICBUZXN0Q2FzZSogR2V0VGVzdENhc2UoY29uc3QgY2hhciog
dGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBl
X3BhcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMg
c2V0X3VwX3RjLAotICAgICAgICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjKTsKLQotICAvLyBBZGRzIGEgVGVzdEluZm8gdG8gdGhlIHVuaXQg
dGVzdC4KLSAgLy8KLSAgLy8gQXJndW1lbnRzOgotICAvLwotICAvLyAgIHNldF91cF90YzogICAg
cG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSB0ZXN0IGNhc2UKLSAgLy8g
ICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93biB0
aGUgdGVzdCBjYXNlCi0gIC8vICAgdGVzdF9pbmZvOiAgICB0aGUgVGVzdEluZm8gb2JqZWN0Ci0g
IHZvaWQgQWRkVGVzdEluZm8oVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAotICAg
ICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3duVGVzdENhc2VGdW5jIHRlYXJfZG93bl90YywK
LSAgICAgICAgICAgICAgICAgICBUZXN0SW5mbyogdGVzdF9pbmZvKSB7Ci0gICAgLy8gSW4gb3Jk
ZXIgdG8gc3VwcG9ydCB0aHJlYWQtc2FmZSBkZWF0aCB0ZXN0cywgd2UgbmVlZCB0bwotICAgIC8v
IHJlbWVtYmVyIHRoZSBvcmlnaW5hbCB3b3JraW5nIGRpcmVjdG9yeSB3aGVuIHRoZSB0ZXN0IHBy
b2dyYW0KLSAgICAvLyB3YXMgZmlyc3QgaW52b2tlZC4gIFdlIGNhbm5vdCBkbyB0aGlzIGluIFJV
Tl9BTExfVEVTVFMoKSwgYXMKLSAgICAvLyB0aGUgdXNlciBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBj
dXJyZW50IGRpcmVjdG9yeSBiZWZvcmUgY2FsbGluZwotICAgIC8vIFJVTl9BTExfVEVTVFMoKS4g
IFRoZXJlZm9yZSB3ZSBjYXB0dXJlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpbgotICAgIC8vIEFk
ZFRlc3RJbmZvKCksIHdoaWNoIGlzIGNhbGxlZCB0byByZWdpc3RlciBhIFRFU1Qgb3IgVEVTVF9G
Ci0gICAgLy8gYmVmb3JlIG1haW4oKSBpcyByZWFjaGVkLgotICAgIGlmIChvcmlnaW5hbF93b3Jr
aW5nX2Rpcl8uSXNFbXB0eSgpKSB7Ci0gICAgICBvcmlnaW5hbF93b3JraW5nX2Rpcl8uU2V0KEZp
bGVQYXRoOjpHZXRDdXJyZW50RGlyKCkpOwotICAgICAgR1RFU1RfQ0hFQ0tfKCFvcmlnaW5hbF93
b3JraW5nX2Rpcl8uSXNFbXB0eSgpKQotICAgICAgICAgIDw8ICJGYWlsZWQgdG8gZ2V0IHRoZSBj
dXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiI7Ci0gICAgfQotCi0gICAgR2V0VGVzdENhc2UodGVz
dF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpLAotICAgICAgICAgICAgICAgIHRlc3RfaW5mby0+dHlw
ZV9wYXJhbSgpLAotICAgICAgICAgICAgICAgIHNldF91cF90YywKLSAgICAgICAgICAgICAgICB0
ZWFyX2Rvd25fdGMpLT5BZGRUZXN0SW5mbyh0ZXN0X2luZm8pOwotICB9Ci0KLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAotICAvLyBSZXR1cm5zIFBhcmFtZXRlcml6ZWRUZXN0Q2FzZVJlZ2lzdHJ5
IG9iamVjdCB1c2VkIHRvIGtlZXAgdHJhY2sgb2YKLSAgLy8gdmFsdWUtcGFyYW1ldGVyaXplZCB0
ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0uCi0gIGludGVybmFsOjpQYXJh
bWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSYgcGFyYW1ldGVyaXplZF90ZXN0X3JlZ2lzdHJ5KCkg
ewotICAgIHJldHVybiBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlfOwotICB9Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSAgLy8gU2V0cyB0aGUgVGVzdENhc2Ugb2JqZWN0
IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcuCi0gIHZvaWQgc2V0X2N1cnJl
bnRfdGVzdF9jYXNlKFRlc3RDYXNlKiBhX2N1cnJlbnRfdGVzdF9jYXNlKSB7Ci0gICAgY3VycmVu
dF90ZXN0X2Nhc2VfID0gYV9jdXJyZW50X3Rlc3RfY2FzZTsKLSAgfQotCi0gIC8vIFNldHMgdGhl
IFRlc3RJbmZvIG9iamVjdCBmb3IgdGhlIHRlc3QgdGhhdCdzIGN1cnJlbnRseSBydW5uaW5nLiAg
SWYKLSAgLy8gY3VycmVudF90ZXN0X2luZm8gaXMgTlVMTCwgdGhlIGFzc2VydGlvbiByZXN1bHRz
IHdpbGwgYmUgc3RvcmVkIGluCi0gIC8vIGFkX2hvY190ZXN0X3Jlc3VsdF8uCi0gIHZvaWQgc2V0
X2N1cnJlbnRfdGVzdF9pbmZvKFRlc3RJbmZvKiBhX2N1cnJlbnRfdGVzdF9pbmZvKSB7Ci0gICAg
Y3VycmVudF90ZXN0X2luZm9fID0gYV9jdXJyZW50X3Rlc3RfaW5mbzsKLSAgfQotCi0gIC8vIFJl
Z2lzdGVycyBhbGwgcGFyYW1ldGVyaXplZCB0ZXN0cyBkZWZpbmVkIHVzaW5nIFRFU1RfUCBhbmQK
LSAgLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AsIGNyZWF0aW5nIHJlZ3VsYXIgdGVzdHMgZm9y
IGVhY2ggdGVzdC9wYXJhbWV0ZXIKLSAgLy8gY29tYmluYXRpb24uIFRoaXMgbWV0aG9kIGNhbiBi
ZSBjYWxsZWQgbW9yZSB0aGVuIG9uY2U7IGl0IGhhcyBndWFyZHMKLSAgLy8gcHJvdGVjdGluZyBm
cm9tIHJlZ2lzdGVyaW5nIHRoZSB0ZXN0cyBtb3JlIHRoZW4gb25jZS4gIElmCi0gIC8vIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLCBSZWdpc3RlclBhcmFtZXRlcml6ZWRU
ZXN0cyBpcwotICAvLyBwcmVzZW50IGJ1dCBkb2VzIG5vdGhpbmcuCi0gIHZvaWQgUmVnaXN0ZXJQ
YXJhbWV0ZXJpemVkVGVzdHMoKTsKLQotICAvLyBSdW5zIGFsbCB0ZXN0cyBpbiB0aGlzIFVuaXRU
ZXN0IG9iamVjdCwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZAotICAvLyByZXR1cm5zIHRydWUgaWYg
YWxsIHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlvbiBpcwotICAvLyB0aHJv
d24gZHVyaW5nIGEgdGVzdCwgdGhpcyB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBi
dXQKLSAgLy8gdGhlIHJlc3Qgb2YgdGhlIHRlc3RzIHdpbGwgc3RpbGwgYmUgcnVuLgotICBib29s
IFJ1bkFsbFRlc3RzKCk7Ci0KLSAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFsbCB0ZXN0cywg
ZXhjZXB0IHRoZSBhZCBob2MgdGVzdHMuCi0gIHZvaWQgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1bHQo
KSB7Ci0gICAgRm9yRWFjaCh0ZXN0X2Nhc2VzXywgVGVzdENhc2U6OkNsZWFyVGVzdENhc2VSZXN1
bHQpOwotICB9Ci0KLSAgLy8gQ2xlYXJzIHRoZSByZXN1bHRzIG9mIGFkLWhvYyB0ZXN0IGFzc2Vy
dGlvbnMuCi0gIHZvaWQgQ2xlYXJBZEhvY1Rlc3RSZXN1bHQoKSB7Ci0gICAgYWRfaG9jX3Rlc3Rf
cmVzdWx0Xy5DbGVhcigpOwotICB9Ci0KLSAgLy8gQWRkcyBhIFRlc3RQcm9wZXJ0eSB0byB0aGUg
Y3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQgaW4gYQotICAvLyBjb250ZXh0
IG9mIGEgdGVzdCBvciBhIHRlc3QgY2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQu
IElmIHRoZQotICAvLyByZXN1bHQgYWxyZWFkeSBjb250YWlucyBhIHByb3BlcnR5IHdpdGggdGhl
IHNhbWUga2V5LCB0aGUgdmFsdWUgd2lsbCBiZQotICAvLyB1cGRhdGVkLgotICB2b2lkIFJlY29y
ZFByb3BlcnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSk7Ci0KLSAgZW51bSBS
ZWFjdGlvblRvU2hhcmRpbmcgewotICAgIEhPTk9SX1NIQVJESU5HX1BST1RPQ09MLAotICAgIElH
Tk9SRV9TSEFSRElOR19QUk9UT0NPTAotICB9OwotCi0gIC8vIE1hdGNoZXMgdGhlIGZ1bGwgbmFt
ZSBvZiBlYWNoIHRlc3QgYWdhaW5zdCB0aGUgdXNlci1zcGVjaWZpZWQKLSAgLy8gZmlsdGVyIHRv
IGRlY2lkZSB3aGV0aGVyIHRoZSB0ZXN0IHNob3VsZCBydW4sIHRoZW4gcmVjb3JkcyB0aGUKLSAg
Ly8gcmVzdWx0IGluIGVhY2ggVGVzdENhc2UgYW5kIFRlc3RJbmZvIG9iamVjdC4KLSAgLy8gSWYg
c2hhcmRfdGVzdHMgPT0gSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wsIGZ1cnRoZXIgZmlsdGVycyB0
ZXN0cwotICAvLyBiYXNlZCBvbiBzaGFyZGluZyB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50
LgotICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCBzaG91bGQgcnVuLgotICBp
bnQgRmlsdGVyVGVzdHMoUmVhY3Rpb25Ub1NoYXJkaW5nIHNoYXJkX3Rlc3RzKTsKLQotICAvLyBQ
cmludHMgdGhlIG5hbWVzIG9mIHRoZSB0ZXN0cyBtYXRjaGluZyB0aGUgdXNlci1zcGVjaWZpZWQg
ZmlsdGVyIGZsYWcuCi0gIHZvaWQgTGlzdFRlc3RzTWF0Y2hpbmdGaWx0ZXIoKTsKLQotICBjb25z
dCBUZXN0Q2FzZSogY3VycmVudF90ZXN0X2Nhc2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50X3Rl
c3RfY2FzZV87IH0KLSAgVGVzdEluZm8qIGN1cnJlbnRfdGVzdF9pbmZvKCkgeyByZXR1cm4gY3Vy
cmVudF90ZXN0X2luZm9fOyB9Ci0gIGNvbnN0IFRlc3RJbmZvKiBjdXJyZW50X3Rlc3RfaW5mbygp
IGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfdGVzdF9pbmZvXzsgfQotCi0gIC8vIFJldHVybnMgdGhl
IHZlY3RvciBvZiBlbnZpcm9ubWVudHMgdGhhdCBuZWVkIHRvIGJlIHNldC11cC90b3JuLWRvd24K
LSAgLy8gYmVmb3JlL2FmdGVyIHRoZSB0ZXN0cyBhcmUgcnVuLgotICBzdGQ6OnZlY3RvcjxFbnZp
cm9ubWVudCo+JiBlbnZpcm9ubWVudHMoKSB7IHJldHVybiBlbnZpcm9ubWVudHNfOyB9Ci0KLSAg
Ly8gR2V0dGVycyBmb3IgdGhlIHBlci10aHJlYWQgR29vZ2xlIFRlc3QgdHJhY2Ugc3RhY2suCi0g
IHN0ZDo6dmVjdG9yPFRyYWNlSW5mbz4mIGd0ZXN0X3RyYWNlX3N0YWNrKCkgewotICAgIHJldHVy
biAqKGd0ZXN0X3RyYWNlX3N0YWNrXy5wb2ludGVyKCkpOwotICB9Ci0gIGNvbnN0IHN0ZDo6dmVj
dG9yPFRyYWNlSW5mbz4mIGd0ZXN0X3RyYWNlX3N0YWNrKCkgY29uc3QgewotICAgIHJldHVybiBn
dGVzdF90cmFjZV9zdGFja18uZ2V0KCk7Ci0gIH0KLQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNU
Ci0gIHZvaWQgSW5pdERlYXRoVGVzdFN1YnByb2Nlc3NDb250cm9sSW5mbygpIHsKLSAgICBpbnRl
cm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXy5yZXNldChQYXJzZUludGVybmFsUnVuRGVhdGhUZXN0
RmxhZygpKTsKLSAgfQotICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGFyc2VkIC0tZ3Rl
c3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QKLSAgLy8gZmxhZywgb3IgTlVMTCBpZiB0aGF0IGZs
YWcgd2FzIG5vdCBzcGVjaWZpZWQuCi0gIC8vIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZnVsIG9u
bHkgaW4gYSBkZWF0aCB0ZXN0IGNoaWxkIHByb2Nlc3MuCi0gIC8vIE11c3Qgbm90IGJlIGNhbGxl
ZCBiZWZvcmUgYSBjYWxsIHRvIEluaXRHb29nbGVUZXN0LgotICBjb25zdCBJbnRlcm5hbFJ1bkRl
YXRoVGVzdEZsYWcqIGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWcoKSBjb25zdCB7Ci0gICAg
cmV0dXJuIGludGVybmFsX3J1bl9kZWF0aF90ZXN0X2ZsYWdfLmdldCgpOwotICB9Ci0KLSAgLy8g
UmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgZGVhdGggdGVzdCBmYWN0b3J5LgotICBp
bnRlcm5hbDo6RGVhdGhUZXN0RmFjdG9yeSogZGVhdGhfdGVzdF9mYWN0b3J5KCkgewotICAgIHJl
dHVybiBkZWF0aF90ZXN0X2ZhY3RvcnlfLmdldCgpOwotICB9Ci0KLSAgdm9pZCBTdXBwcmVzc1Rl
c3RFdmVudHNJZkluU3VicHJvY2VzcygpOwotCi0gIGZyaWVuZCBjbGFzcyBSZXBsYWNlRGVhdGhU
ZXN0RmFjdG9yeTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotICAvLyBJbml0
aWFsaXplcyB0aGUgZXZlbnQgbGlzdGVuZXIgcGVyZm9ybWluZyBYTUwgb3V0cHV0IGFzIHNwZWNp
ZmllZCBieQotICAvLyBVbml0VGVzdE9wdGlvbnMuIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUg
SW5pdEdvb2dsZVRlc3QuCi0gIHZvaWQgQ29uZmlndXJlWG1sT3V0cHV0KCk7Ci0KLSNpZiBHVEVT
VF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0gIC8vIEluaXRpYWxpemVzIHRoZSBldmVudCBsaXN0ZW5l
ciBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0cyB0byBhIHNvY2tldC4KLSAgLy8gTXVzdCBub3Qg
YmUgY2FsbGVkIGJlZm9yZSBJbml0R29vZ2xlVGVzdC4KLSAgdm9pZCBDb25maWd1cmVTdHJlYW1p
bmdPdXRwdXQoKTsKLSNlbmRpZgotCi0gIC8vIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVu
ZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVkIGluCi0gIC8vIFBhcnNlR29vZ2xlVGVzdEZs
YWdzT25seS4gIElzIGNhbGxlZCBmcm9tIEluaXRHb29nbGVUZXN0IGFmdGVyIHRoZSBjYWxsIHRv
Ci0gIC8vIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seS4gIEluIGNhc2UgYSB1c2VyIG5lZ2xlY3Rz
IHRvIGNhbGwgSW5pdEdvb2dsZVRlc3QKLSAgLy8gdGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxl
ZCBmcm9tIFJ1bkFsbFRlc3RzLiAgU2luY2UgdGhpcyBmdW5jdGlvbiBjYW4gYmUKLSAgLy8gY2Fs
bGVkIG1vcmUgdGhhbiBvbmNlLCBpdCBoYXMgdG8gYmUgaWRlbXBvdGVudC4KLSAgdm9pZCBQb3N0
RmxhZ1BhcnNpbmdJbml0KCk7Ci0KLSAgLy8gR2V0cyB0aGUgcmFuZG9tIHNlZWQgdXNlZCBhdCB0
aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgdGVzdCBpdGVyYXRpb24uCi0gIGludCByYW5kb21fc2Vl
ZCgpIGNvbnN0IHsgcmV0dXJuIHJhbmRvbV9zZWVkXzsgfQotCi0gIC8vIEdldHMgdGhlIHJhbmRv
bSBudW1iZXIgZ2VuZXJhdG9yLgotICBpbnRlcm5hbDo6UmFuZG9tKiByYW5kb20oKSB7IHJldHVy
biAmcmFuZG9tXzsgfQotCi0gIC8vIFNodWZmbGVzIGFsbCB0ZXN0IGNhc2VzLCBhbmQgdGhlIHRl
c3RzIHdpdGhpbiBlYWNoIHRlc3QgY2FzZSwKLSAgLy8gbWFraW5nIHN1cmUgdGhhdCBkZWF0aCB0
ZXN0cyBhcmUgc3RpbGwgcnVuIGZpcnN0LgotICB2b2lkIFNodWZmbGVUZXN0cygpOwotCi0gIC8v
IFJlc3RvcmVzIHRoZSB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0byB0aGVpciBvcmRlciBiZWZvcmUg
dGhlIGZpcnN0IHNodWZmbGUuCi0gIHZvaWQgVW5zaHVmZmxlVGVzdHMoKTsKLQotICAvLyBSZXR1
cm5zIHRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpIGF0IHRoZSBtb21l
bnQKLSAgLy8gVW5pdFRlc3Q6OlJ1bigpIHN0YXJ0cy4KLSAgYm9vbCBjYXRjaF9leGNlcHRpb25z
KCkgY29uc3QgeyByZXR1cm4gY2F0Y2hfZXhjZXB0aW9uc187IH0KLQotIHByaXZhdGU6Ci0gIGZy
aWVuZCBjbGFzcyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotCi0gIC8vIFVzZWQgYnkgVW5pdFRlc3Q6
OlJ1bigpIHRvIGNhcHR1cmUgdGhlIHN0YXRlIG9mCi0gIC8vIEdURVNUX0ZMQUcoY2F0Y2hfZXhj
ZXB0aW9ucykgYXQgdGhlIG1vbWVudCBpdCBzdGFydHMuCi0gIHZvaWQgc2V0X2NhdGNoX2V4Y2Vw
dGlvbnMoYm9vbCB2YWx1ZSkgeyBjYXRjaF9leGNlcHRpb25zXyA9IHZhbHVlOyB9Ci0KLSAgLy8g
VGhlIFVuaXRUZXN0IG9iamVjdCB0aGF0IG93bnMgdGhpcyBpbXBsZW1lbnRhdGlvbiBvYmplY3Qu
Ci0gIFVuaXRUZXN0KiBjb25zdCBwYXJlbnRfOwotCi0gIC8vIFRoZSB3b3JraW5nIGRpcmVjdG9y
eSB3aGVuIHRoZSBmaXJzdCBURVNUKCkgb3IgVEVTVF9GKCkgd2FzCi0gIC8vIGV4ZWN1dGVkLgot
ICBpbnRlcm5hbDo6RmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwotCi0gIC8vIFRoZSBk
ZWZhdWx0IHRlc3QgcGFydCByZXN1bHQgcmVwb3J0ZXJzLgotICBEZWZhdWx0R2xvYmFsVGVzdFBh
cnRSZXN1bHRSZXBvcnRlciBkZWZhdWx0X2dsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVy
XzsKLSAgRGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIKLSAgICAgIGRlZmF1
bHRfcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXzsKLQotICAvLyBQb2ludHMg
dG8gKGJ1dCBkb2Vzbid0IG93bikgdGhlIGdsb2JhbCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVy
LgotICBUZXN0UGFydFJlc3VsdFJlcG9ydGVySW50ZXJmYWNlKiBnbG9iYWxfdGVzdF9wYXJ0X3Jl
c3VsdF9yZXBvdGVyXzsKLQotICAvLyBQcm90ZWN0cyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8g
Z2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfLgotICBpbnRlcm5hbDo6TXV0ZXggZ2xv
YmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfbXV0ZXhfOwotCi0gIC8vIFBvaW50cyB0byAo
YnV0IGRvZXNuJ3Qgb3duKSB0aGUgcGVyLXRocmVhZCB0ZXN0IHBhcnQgcmVzdWx0IHJlcG9ydGVy
LgotICBpbnRlcm5hbDo6VGhyZWFkTG9jYWw8VGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFj
ZSo+Ci0gICAgICBwZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfOwotCi0gIC8v
IFRoZSB2ZWN0b3Igb2YgZW52aXJvbm1lbnRzIHRoYXQgbmVlZCB0byBiZSBzZXQtdXAvdG9ybi1k
b3duCi0gIC8vIGJlZm9yZS9hZnRlciB0aGUgdGVzdHMgYXJlIHJ1bi4KLSAgc3RkOjp2ZWN0b3I8
RW52aXJvbm1lbnQqPiBlbnZpcm9ubWVudHNfOwotCi0gIC8vIFRoZSB2ZWN0b3Igb2YgVGVzdENh
c2VzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgSXQgb3ducyB0aGUKLSAgLy8gZWxlbWVudHMg
aW4gdGhlIHZlY3Rvci4KLSAgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiB0ZXN0X2Nhc2VzXzsKLQot
ICAvLyBQcm92aWRlcyBhIGxldmVsIG9mIGluZGlyZWN0aW9uIGZvciB0aGUgdGVzdCBjYXNlIGxp
c3QgdG8gYWxsb3cKLSAgLy8gZWFzeSBzaHVmZmxpbmcgYW5kIHJlc3RvcmluZyB0aGUgdGVzdCBj
YXNlIG9yZGVyLiAgVGhlIGktdGgKLSAgLy8gZWxlbWVudCBvZiB0aGlzIHZlY3RvciBpcyB0aGUg
aW5kZXggb2YgdGhlIGktdGggdGVzdCBjYXNlIGluIHRoZQotICAvLyBzaHVmZmxlZCBvcmRlci4K
LSAgc3RkOjp2ZWN0b3I8aW50PiB0ZXN0X2Nhc2VfaW5kaWNlc187Ci0KLSNpZiBHVEVTVF9IQVNf
UEFSQU1fVEVTVAotICAvLyBQYXJhbWV0ZXJpemVkVGVzdFJlZ2lzdHJ5IG9iamVjdCB1c2VkIHRv
IHJlZ2lzdGVyIHZhbHVlLXBhcmFtZXRlcml6ZWQKLSAgLy8gdGVzdHMuCi0gIGludGVybmFsOjpQ
YXJhbWV0ZXJpemVkVGVzdENhc2VSZWdpc3RyeSBwYXJhbWV0ZXJpemVkX3Rlc3RfcmVnaXN0cnlf
OwotCi0gIC8vIEluZGljYXRlcyB3aGV0aGVyIFJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkg
aGFzIGJlZW4gY2FsbGVkIGFscmVhZHkuCi0gIGJvb2wgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdp
c3RlcmVkXzsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQotICAvLyBJbmRleCBv
ZiB0aGUgbGFzdCBkZWF0aCB0ZXN0IGNhc2UgcmVnaXN0ZXJlZC4gIEluaXRpYWxseSAtMS4KLSAg
aW50IGxhc3RfZGVhdGhfdGVzdF9jYXNlXzsKLQotICAvLyBUaGlzIHBvaW50cyB0byB0aGUgVGVz
dENhc2UgZm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0LiAgSXQKLSAgLy8gY2hhbmdlcyBh
cyBHb29nbGUgVGVzdCBnb2VzIHRocm91Z2ggb25lIHRlc3QgY2FzZSBhZnRlciBhbm90aGVyLgot
ICAvLyBXaGVuIG5vIHRlc3QgaXMgcnVubmluZywgdGhpcyBpcyBzZXQgdG8gTlVMTCBhbmQgR29v
Z2xlIFRlc3QKLSAgLy8gc3RvcmVzIGFzc2VydGlvbiByZXN1bHRzIGluIGFkX2hvY190ZXN0X3Jl
c3VsdF8uICBJbml0aWFsbHkgTlVMTC4KLSAgVGVzdENhc2UqIGN1cnJlbnRfdGVzdF9jYXNlXzsK
LQotICAvLyBUaGlzIHBvaW50cyB0byB0aGUgVGVzdEluZm8gZm9yIHRoZSBjdXJyZW50bHkgcnVu
bmluZyB0ZXN0LiAgSXQKLSAgLy8gY2hhbmdlcyBhcyBHb29nbGUgVGVzdCBnb2VzIHRocm91Z2gg
b25lIHRlc3QgYWZ0ZXIgYW5vdGhlci4gIFdoZW4KLSAgLy8gbm8gdGVzdCBpcyBydW5uaW5nLCB0
aGlzIGlzIHNldCB0byBOVUxMIGFuZCBHb29nbGUgVGVzdCBzdG9yZXMKLSAgLy8gYXNzZXJ0aW9u
IHJlc3VsdHMgaW4gYWRfaG9jX3Rlc3RfcmVzdWx0Xy4gIEluaXRpYWxseSBOVUxMLgotICBUZXN0
SW5mbyogY3VycmVudF90ZXN0X2luZm9fOwotCi0gIC8vIE5vcm1hbGx5LCBhIHVzZXIgb25seSB3
cml0ZXMgYXNzZXJ0aW9ucyBpbnNpZGUgYSBURVNUIG9yIFRFU1RfRiwKLSAgLy8gb3IgaW5zaWRl
IGEgZnVuY3Rpb24gY2FsbGVkIGJ5IGEgVEVTVCBvciBURVNUX0YuICBTaW5jZSBHb29nbGUKLSAg
Ly8gVGVzdCBrZWVwcyB0cmFjayBvZiB3aGljaCB0ZXN0IGlzIGN1cnJlbnQgcnVubmluZywgaXQg
Y2FuCi0gIC8vIGFzc29jaWF0ZSBzdWNoIGFuIGFzc2VydGlvbiB3aXRoIHRoZSB0ZXN0IGl0IGJl
bG9uZ3MgdG8uCi0gIC8vCi0gIC8vIElmIGFuIGFzc2VydGlvbiBpcyBlbmNvdW50ZXJlZCB3aGVu
IG5vIFRFU1Qgb3IgVEVTVF9GIGlzIHJ1bm5pbmcsCi0gIC8vIEdvb2dsZSBUZXN0IGF0dHJpYnV0
ZXMgdGhlIGFzc2VydGlvbiByZXN1bHQgdG8gYW4gaW1hZ2luYXJ5ICJhZCBob2MiCi0gIC8vIHRl
c3QsIGFuZCByZWNvcmRzIHRoZSByZXN1bHQgaW4gYWRfaG9jX3Rlc3RfcmVzdWx0Xy4KLSAgVGVz
dFJlc3VsdCBhZF9ob2NfdGVzdF9yZXN1bHRfOwotCi0gIC8vIFRoZSBsaXN0IG9mIGV2ZW50IGxp
c3RlbmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2ZW50cyBpbnNpZGUKLSAgLy8gR29v
Z2xlIFRlc3QuCi0gIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnNfOwotCi0gIC8vIFRoZSBP
UyBzdGFjayB0cmFjZSBnZXR0ZXIuICBXaWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgVW5pdFRlc3QK
LSAgLy8gb2JqZWN0IGlzIGRlc3RydWN0ZWQuICBCeSBkZWZhdWx0LCBhbiBPc1N0YWNrVHJhY2VH
ZXR0ZXIgaXMgdXNlZCwKLSAgLy8gYnV0IHRoZSB1c2VyIGNhbiBzZXQgdGhpcyBmaWVsZCB0byB1
c2UgYSBjdXN0b20gZ2V0dGVyIGlmIHRoYXQgaXMKLSAgLy8gZGVzaXJlZC4KLSAgT3NTdGFja1Ry
YWNlR2V0dGVySW50ZXJmYWNlKiBvc19zdGFja190cmFjZV9nZXR0ZXJfOwotCi0gIC8vIFRydWUg
aWZmIFBvc3RGbGFnUGFyc2luZ0luaXQoKSBoYXMgYmVlbiBjYWxsZWQuCi0gIGJvb2wgcG9zdF9m
bGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXzsKLQotICAvLyBUaGUgcmFuZG9tIG51bWJlciBzZWVk
IHVzZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGVzdCBydW4uCi0gIGludCByYW5kb21fc2Vl
ZF87Ci0KLSAgLy8gT3VyIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgotICBpbnRlcm5hbDo6UmFu
ZG9tIHJhbmRvbV87Ci0KLSAgLy8gVGhlIHRpbWUgb2YgdGhlIHRlc3QgcHJvZ3JhbSBzdGFydCwg
aW4gbXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCi0gIC8vIFVOSVggZXBvY2guCi0gIFRpbWVJbk1p
bGxpcyBzdGFydF90aW1lc3RhbXBfOwotCi0gIC8vIEhvdyBsb25nIHRoZSB0ZXN0IHRvb2sgdG8g
cnVuLCBpbiBtaWxsaXNlY29uZHMuCi0gIFRpbWVJbk1pbGxpcyBlbGFwc2VkX3RpbWVfOwotCi0j
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgLy8gVGhlIGRlY29tcG9zZWQgY29tcG9uZW50cyBv
ZiB0aGUgZ3Rlc3RfaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QgZmxhZywKLSAgLy8gcGFyc2VkIHdo
ZW4gUlVOX0FMTF9URVNUUyBpcyBjYWxsZWQuCi0gIGludGVybmFsOjpzY29wZWRfcHRyPEludGVy
bmFsUnVuRGVhdGhUZXN0RmxhZz4gaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3RfZmxhZ187Ci0gIGlu
dGVybmFsOjpzY29wZWRfcHRyPGludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5PiBkZWF0aF90ZXN0
X2ZhY3RvcnlfOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIC8vIEEgcGVy
LXRocmVhZCBzdGFjayBvZiB0cmFjZXMgY3JlYXRlZCBieSB0aGUgU0NPUEVEX1RSQUNFKCkgbWFj
cm8uCi0gIGludGVybmFsOjpUaHJlYWRMb2NhbDxzdGQ6OnZlY3RvcjxUcmFjZUluZm8+ID4gZ3Rl
c3RfdHJhY2Vfc3RhY2tfOwotCi0gIC8vIFRoZSB2YWx1ZSBvZiBHVEVTVF9GTEFHKGNhdGNoX2V4
Y2VwdGlvbnMpIGF0IHRoZSBtb21lbnQgUnVuQWxsVGVzdHMoKQotICAvLyBzdGFydHMuCi0gIGJv
b2wgY2F0Y2hfZXhjZXB0aW9uc187Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdO
XyhVbml0VGVzdEltcGwpOwotfTsgIC8vIGNsYXNzIFVuaXRUZXN0SW1wbAotCi0vLyBDb252ZW5p
ZW5jZSBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBnbG9iYWwgVW5pdFRlc3QKLS8vIGltcGxl
bWVudGF0aW9uIG9iamVjdC4KLWlubGluZSBVbml0VGVzdEltcGwqIEdldFVuaXRUZXN0SW1wbCgp
IHsKLSAgcmV0dXJuIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5pbXBsKCk7Ci19Ci0KLSNpZiBH
VEVTVF9VU0VTX1NJTVBMRV9SRQotCi0vLyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBp
bXBsZW1lbnRpbmcgdGhlIHNpbXBsZSByZWd1bGFyCi0vLyBleHByZXNzaW9uIG1hdGNoZXIuCi1H
VEVTVF9BUElfIGJvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1Rf
QVBJXyBib29sIElzQXNjaWlEaWdpdChjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBJc0FzY2lp
UHVuY3QoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgSXNSZXBlYXQoY2hhciBjaCk7Ci1HVEVT
VF9BUElfIGJvb2wgSXNBc2NpaVdoaXRlU3BhY2UoY2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wg
SXNBc2NpaVdvcmRDaGFyKGNoYXIgY2gpOwotR1RFU1RfQVBJXyBib29sIElzVmFsaWRFc2NhcGUo
Y2hhciBjaCk7Ci1HVEVTVF9BUElfIGJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wgZXNjYXBlZCwg
Y2hhciBwYXR0ZXJuLCBjaGFyIGNoKTsKLUdURVNUX0FQSV8gYm9vbCBWYWxpZGF0ZVJlZ2V4KGNv
bnN0IGNoYXIqIHJlZ2V4KTsKLUdURVNUX0FQSV8gYm9vbCBNYXRjaFJlZ2V4QXRIZWFkKGNvbnN0
IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBib29sIE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKAotICAgIGJvb2wgZXNjYXBlZCwgY2hhciBjaCwgY2hhciBy
ZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LCBjb25zdCBjaGFyKiBzdHIpOwotR1RFU1RfQVBJXyBi
b29sIE1hdGNoUmVnZXhBbnl3aGVyZShjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3Ry
KTsKLQotI2VuZGlmICAvLyBHVEVTVF9VU0VTX1NJTVBMRV9SRQotCi0vLyBQYXJzZXMgdGhlIGNv
bW1hbmQgbGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCi0v
LyBvdGhlciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4KLUdURVNUX0FQSV8gdm9pZCBQYXJzZUdvb2ds
ZVRlc3RGbGFnc09ubHkoaW50KiBhcmdjLCBjaGFyKiogYXJndik7Ci1HVEVTVF9BUElfIHZvaWQg
UGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpOwotCi0j
aWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotLy8gUmV0dXJucyB0aGUgbWVzc2FnZSBkZXNjcmli
aW5nIHRoZSBsYXN0IHN5c3RlbSBlcnJvciwgcmVnYXJkbGVzcyBvZiB0aGUKLS8vIHBsYXRmb3Jt
LgotR1RFU1RfQVBJXyBzdGQ6OnN0cmluZyBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpOwotCi0v
LyBBdHRlbXB0cyB0byBwYXJzZSBhIHN0cmluZyBpbnRvIGEgcG9zaXRpdmUgaW50ZWdlciBwb2lu
dGVkIHRvIGJ5IHRoZQotLy8gbnVtYmVyIHBhcmFtZXRlci4gIFJldHVybnMgdHJ1ZSBpZiB0aGF0
IGlzIHBvc3NpYmxlLgotLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QgaW1wbGllcyB0aGF0IHdlIGhh
dmUgOjpzdGQ6OnN0cmluZywgc28gd2UgY2FuIHVzZQotLy8gaXQgaGVyZS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBJbnRlZ2VyPgotYm9vbCBQYXJzZU5hdHVyYWxOdW1iZXIoY29uc3QgOjpzdGQ6OnN0
cmluZyYgc3RyLCBJbnRlZ2VyKiBudW1iZXIpIHsKLSAgLy8gRmFpbCBmYXN0IGlmIHRoZSBnaXZl
biBzdHJpbmcgZG9lcyBub3QgYmVnaW4gd2l0aCBhIGRpZ2l0OwotICAvLyB0aGlzIGJ5cGFzc2Vz
IHN0cnRvWFhYJ3MgIm9wdGlvbmFsIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgcGx1cwotICAvLyBv
ciBtaW51cyBzaWduIiBzZW1hbnRpY3MsIHdoaWNoIGFyZSB1bmRlc2lyYWJsZSBoZXJlLgotICBp
ZiAoc3RyLmVtcHR5KCkgfHwgIUlzRGlnaXQoc3RyWzBdKSkgewotICAgIHJldHVybiBmYWxzZTsK
LSAgfQotICBlcnJubyA9IDA7Ci0KLSAgY2hhciogZW5kOwotICAvLyBCaWdnZXN0Q29udmVydGli
bGUgaXMgdGhlIGxhcmdlc3QgaW50ZWdlciB0eXBlIHRoYXQgc3lzdGVtLXByb3ZpZGVkCi0gIC8v
IHN0cmluZy10by1udW1iZXIgY29udmVyc2lvbiByb3V0aW5lcyBjYW4gcmV0dXJuLgotCi0jIGlm
IEdURVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCi0KLSAgLy8gTVNWQyBhbmQg
QysrIEJ1aWxkZXIgZGVmaW5lIF9faW50NjQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgbG9uZyBs
b25nLgotICB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgQmlnZ2VzdENvbnZlcnRpYmxlOwotICBj
b25zdCBCaWdnZXN0Q29udmVydGlibGUgcGFyc2VkID0gX3N0cnRvdWk2NChzdHIuY19zdHIoKSwg
JmVuZCwgMTApOwotCi0jIGVsc2UKLQotICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBCaWdn
ZXN0Q29udmVydGlibGU7ICAvLyBOT0xJTlQKLSAgY29uc3QgQmlnZ2VzdENvbnZlcnRpYmxlIHBh
cnNlZCA9IHN0cnRvdWxsKHN0ci5jX3N0cigpLCAmZW5kLCAxMCk7Ci0KLSMgZW5kaWYgIC8vIEdU
RVNUX09TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19HTlVDX18pCi0KLSAgY29uc3QgYm9vbCBwYXJz
ZV9zdWNjZXNzID0gKmVuZCA9PSAnXDAnICYmIGVycm5vID09IDA7Ci0KLSAgLy8gVE9ETyh2bGFk
bEBnb29nbGUuY29tKTogQ29udmVydCB0aGlzIHRvIGNvbXBpbGUgdGltZSBhc3NlcnRpb24gd2hl
biBpdCBpcwotICAvLyBhdmFpbGFibGUuCi0gIEdURVNUX0NIRUNLXyhzaXplb2YoSW50ZWdlcikg
PD0gc2l6ZW9mKHBhcnNlZCkpOwotCi0gIGNvbnN0IEludGVnZXIgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8SW50ZWdlcj4ocGFyc2VkKTsKLSAgaWYgKHBhcnNlX3N1Y2Nlc3MgJiYgc3RhdGljX2Nhc3Q8
QmlnZ2VzdENvbnZlcnRpYmxlPihyZXN1bHQpID09IHBhcnNlZCkgewotICAgICpudW1iZXIgPSBy
ZXN1bHQ7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUZXN0UmVzdWx0IGNvbnRhaW5zIHNvbWUg
cHJpdmF0ZSBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGhpZGRlbiBmcm9tCi0vLyBHb29nbGUgVGVz
dCB1c2VyIGJ1dCBhcmUgcmVxdWlyZWQgZm9yIHRlc3RpbmcuIFRoaXMgY2xhc3MgYWxsb3cgb3Vy
IHRlc3RzCi0vLyB0byBhY2Nlc3MgdGhlbS4KLS8vCi0vLyBUaGlzIGNsYXNzIGlzIHN1cHBsaWVk
IG9ubHkgZm9yIHRoZSBwdXJwb3NlIG9mIHRlc3RpbmcgR29vZ2xlIFRlc3QncyBvd24KLS8vIGNv
bnN0cnVjdHMuIERvIG5vdCB1c2UgaXQgaW4gdXNlciB0ZXN0cywgZWl0aGVyIGRpcmVjdGx5IG9y
IGluZGlyZWN0bHkuCi1jbGFzcyBUZXN0UmVzdWx0QWNjZXNzb3IgewotIHB1YmxpYzoKLSAgc3Rh
dGljIHZvaWQgUmVjb3JkUHJvcGVydHkoVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFByb3BlcnR5JiBwcm9wZXJ0eSkg
ewotICAgIHRlc3RfcmVzdWx0LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgcHJvcGVydHkp
OwotICB9Ci0KLSAgc3RhdGljIHZvaWQgQ2xlYXJUZXN0UGFydFJlc3VsdHMoVGVzdFJlc3VsdCog
dGVzdF9yZXN1bHQpIHsKLSAgICB0ZXN0X3Jlc3VsdC0+Q2xlYXJUZXN0UGFydFJlc3VsdHMoKTsK
LSAgfQotCi0gIHN0YXRpYyBjb25zdCBzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjpUZXN0UGFydFJlc3Vs
dD4mIHRlc3RfcGFydF9yZXN1bHRzKAotICAgICAgY29uc3QgVGVzdFJlc3VsdCYgdGVzdF9yZXN1
bHQpIHsKLSAgICByZXR1cm4gdGVzdF9yZXN1bHQudGVzdF9wYXJ0X3Jlc3VsdHMoKTsKLSAgfQot
fTsKLQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLQotLy8gU3RyZWFtcyB0ZXN0IHJl
c3VsdHMgdG8gdGhlIGdpdmVuIHBvcnQgb24gdGhlIGdpdmVuIGhvc3QgbWFjaGluZS4KLWNsYXNz
IEdURVNUX0FQSV8gU3RyZWFtaW5nTGlzdGVuZXIgOiBwdWJsaWMgRW1wdHlUZXN0RXZlbnRMaXN0
ZW5lciB7Ci0gcHVibGljOgotICAvLyBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB3cml0aW5nIHN0
cmluZ3MgdG8gYSBzb2NrZXQuCi0gIGNsYXNzIEFic3RyYWN0U29ja2V0V3JpdGVyIHsKLSAgIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5BYnN0cmFjdFNvY2tldFdyaXRlcigpIHt9Ci0KLSAgICAvLyBT
ZW5kcyBhIHN0cmluZyB0byB0aGUgc29ja2V0LgotICAgIHZpcnR1YWwgdm9pZCBTZW5kKGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKSA9IDA7Ci0KLSAgICAvLyBDbG9zZXMgdGhlIHNvY2tldC4K
LSAgICB2aXJ0dWFsIHZvaWQgQ2xvc2VDb25uZWN0aW9uKCkge30KLQotICAgIC8vIFNlbmRzIGEg
c3RyaW5nIGFuZCBhIG5ld2xpbmUgdG8gdGhlIHNvY2tldC4KLSAgICB2b2lkIFNlbmRMbihjb25z
dCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBTZW5kKG1lc3NhZ2UgKyAiXG4iKTsgfQotICB9Owot
Ci0gIC8vIENvbmNyZXRlIGNsYXNzIGZvciBhY3R1YWxseSB3cml0aW5nIHN0cmluZ3MgdG8gYSBz
b2NrZXQuCi0gIGNsYXNzIFNvY2tldFdyaXRlciA6IHB1YmxpYyBBYnN0cmFjdFNvY2tldFdyaXRl
ciB7Ci0gICBwdWJsaWM6Ci0gICAgU29ja2V0V3JpdGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiBob3N0
LCBjb25zdCBzdGQ6OnN0cmluZyYgcG9ydCkKLSAgICAgICAgOiBzb2NrZmRfKC0xKSwgaG9zdF9u
YW1lXyhob3N0KSwgcG9ydF9udW1fKHBvcnQpIHsKLSAgICAgIE1ha2VDb25uZWN0aW9uKCk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB+U29ja2V0V3JpdGVyKCkgewotICAgICAgaWYgKHNvY2tmZF8g
IT0gLTEpCi0gICAgICAgIENsb3NlQ29ubmVjdGlvbigpOwotICAgIH0KLQotICAgIC8vIFNlbmRz
IGEgc3RyaW5nIHRvIHRoZSBzb2NrZXQuCi0gICAgdmlydHVhbCB2b2lkIFNlbmQoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UpIHsKLSAgICAgIEdURVNUX0NIRUNLXyhzb2NrZmRfICE9IC0xKQot
ICAgICAgICAgIDw8ICJTZW5kKCkgY2FuIGJlIGNhbGxlZCBvbmx5IHdoZW4gdGhlcmUgaXMgYSBj
b25uZWN0aW9uLiI7Ci0KLSAgICAgIGNvbnN0IGludCBsZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KG1l
c3NhZ2UubGVuZ3RoKCkpOwotICAgICAgaWYgKHdyaXRlKHNvY2tmZF8sIG1lc3NhZ2UuY19zdHIo
KSwgbGVuKSAhPSBsZW4pIHsKLSAgICAgICAgR1RFU1RfTE9HXyhXQVJOSU5HKQotICAgICAgICAg
ICAgPDwgInN0cmVhbV9yZXN1bHRfdG86IGZhaWxlZCB0byBzdHJlYW0gdG8gIgotICAgICAgICAg
ICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwgcG9ydF9udW1fOwotICAgICAgfQotICAgIH0KLQot
ICAgcHJpdmF0ZToKLSAgICAvLyBDcmVhdGVzIGEgY2xpZW50IHNvY2tldCBhbmQgY29ubmVjdHMg
dG8gdGhlIHNlcnZlci4KLSAgICB2b2lkIE1ha2VDb25uZWN0aW9uKCk7Ci0KLSAgICAvLyBDbG9z
ZXMgdGhlIHNvY2tldC4KLSAgICB2b2lkIENsb3NlQ29ubmVjdGlvbigpIHsKLSAgICAgIEdURVNU
X0NIRUNLXyhzb2NrZmRfICE9IC0xKQotICAgICAgICAgIDw8ICJDbG9zZUNvbm5lY3Rpb24oKSBj
YW4gYmUgY2FsbGVkIG9ubHkgd2hlbiB0aGVyZSBpcyBhIGNvbm5lY3Rpb24uIjsKLQotICAgICAg
Y2xvc2Uoc29ja2ZkXyk7Ci0gICAgICBzb2NrZmRfID0gLTE7Ci0gICAgfQotCi0gICAgaW50IHNv
Y2tmZF87ICAvLyBzb2NrZXQgZmlsZSBkZXNjcmlwdG9yCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
aG9zdF9uYW1lXzsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBwb3J0X251bV87Ci0KLSAgICBHVEVT
VF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFNvY2tldFdyaXRlcik7Ci0gIH07ICAvLyBjbGFz
cyBTb2NrZXRXcml0ZXIKLQotICAvLyBFc2NhcGVzICc9JywgJyYnLCAnJScsIGFuZCAnXG4nIGNo
YXJhY3RlcnMgaW4gc3RyIGFzICIleHgiLgotICBzdGF0aWMgc3RkOjpzdHJpbmcgVXJsRW5jb2Rl
KGNvbnN0IGNoYXIqIHN0cik7Ci0KLSAgU3RyZWFtaW5nTGlzdGVuZXIoY29uc3Qgc3RkOjpzdHJp
bmcmIGhvc3QsIGNvbnN0IHN0ZDo6c3RyaW5nJiBwb3J0KQotICAgICAgOiBzb2NrZXRfd3JpdGVy
XyhuZXcgU29ja2V0V3JpdGVyKGhvc3QsIHBvcnQpKSB7Ci0gICAgU3RhcnQoKTsKLSAgfQotCi0g
IGV4cGxpY2l0IFN0cmVhbWluZ0xpc3RlbmVyKEFic3RyYWN0U29ja2V0V3JpdGVyKiBzb2NrZXRf
d3JpdGVyKQotICAgICAgOiBzb2NrZXRfd3JpdGVyXyhzb2NrZXRfd3JpdGVyKSB7IFN0YXJ0KCk7
IH0KLQotICB2b2lkIE9uVGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyogdW5pdF90
ZXN0ICovKSB7Ci0gICAgU2VuZExuKCJldmVudD1UZXN0UHJvZ3JhbVN0YXJ0Iik7Ci0gIH0KLQot
ICB2b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCkgewotICAg
IC8vIE5vdGUgdGhhdCBHb29nbGUgVGVzdCBjdXJyZW50IG9ubHkgcmVwb3J0IGVsYXBzZWQgdGlt
ZSBmb3IgZWFjaAotICAgIC8vIHRlc3QgaXRlcmF0aW9uLCBub3QgZm9yIHRoZSBlbnRpcmUgdGVz
dCBwcm9ncmFtLgotICAgIFNlbmRMbigiZXZlbnQ9VGVzdFByb2dyYW1FbmQmcGFzc2VkPSIgKyBG
b3JtYXRCb29sKHVuaXRfdGVzdC5QYXNzZWQoKSkpOwotCi0gICAgLy8gTm90aWZ5IHRoZSBzdHJl
YW1pbmcgc2VydmVyIHRvIHN0b3AuCi0gICAgc29ja2V0X3dyaXRlcl8tPkNsb3NlQ29ubmVjdGlv
bigpOwotICB9Ci0KLSAgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYg
LyogdW5pdF90ZXN0ICovLCBpbnQgaXRlcmF0aW9uKSB7Ci0gICAgU2VuZExuKCJldmVudD1UZXN0
SXRlcmF0aW9uU3RhcnQmaXRlcmF0aW9uPSIgKwotICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJp
bmcoaXRlcmF0aW9uKSk7Ci0gIH0KLQotICB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBV
bml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgLyogaXRlcmF0aW9uICovKSB7Ci0gICAgU2VuZExuKCJl
dmVudD1UZXN0SXRlcmF0aW9uRW5kJnBhc3NlZD0iICsKLSAgICAgICAgICAgRm9ybWF0Qm9vbCh1
bml0X3Rlc3QuUGFzc2VkKCkpICsgIiZlbGFwc2VkX3RpbWU9IiArCi0gICAgICAgICAgIFN0cmVh
bWFibGVUb1N0cmluZyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpICsgIm1zIik7Ci0gIH0KLQot
ICB2b2lkIE9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKSB7Ci0gICAg
U2VuZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0Q2FzZVN0YXJ0Jm5hbWU9IikgKyB0ZXN0X2Nh
c2UubmFtZSgpKTsKLSAgfQotCi0gIHZvaWQgT25UZXN0Q2FzZUVuZChjb25zdCBUZXN0Q2FzZSYg
dGVzdF9jYXNlKSB7Ci0gICAgU2VuZExuKCJldmVudD1UZXN0Q2FzZUVuZCZwYXNzZWQ9IiArIEZv
cm1hdEJvb2wodGVzdF9jYXNlLlBhc3NlZCgpKQotICAgICAgICAgICArICImZWxhcHNlZF90aW1l
PSIgKyBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKQotICAgICAg
ICAgICArICJtcyIpOwotICB9Ci0KLSAgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKSB7Ci0gICAgU2VuZExuKHN0ZDo6c3RyaW5nKCJldmVudD1UZXN0U3RhcnQmbmFt
ZT0iKSArIHRlc3RfaW5mby5uYW1lKCkpOwotICB9Ci0KLSAgdm9pZCBPblRlc3RFbmQoY29uc3Qg
VGVzdEluZm8mIHRlc3RfaW5mbykgewotICAgIFNlbmRMbigiZXZlbnQ9VGVzdEVuZCZwYXNzZWQ9
IiArCi0gICAgICAgICAgIEZvcm1hdEJvb2woKHRlc3RfaW5mby5yZXN1bHQoKSktPlBhc3NlZCgp
KSArCi0gICAgICAgICAgICImZWxhcHNlZF90aW1lPSIgKwotICAgICAgICAgICBTdHJlYW1hYmxl
VG9TdHJpbmcoKHRlc3RfaW5mby5yZXN1bHQoKSktPmVsYXBzZWRfdGltZSgpKSArICJtcyIpOwot
ICB9Ci0KLSAgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiB0ZXN0
X3BhcnRfcmVzdWx0KSB7Ci0gICAgY29uc3QgY2hhciogZmlsZV9uYW1lID0gdGVzdF9wYXJ0X3Jl
c3VsdC5maWxlX25hbWUoKTsKLSAgICBpZiAoZmlsZV9uYW1lID09IE5VTEwpCi0gICAgICBmaWxl
X25hbWUgPSAiIjsKLSAgICBTZW5kTG4oImV2ZW50PVRlc3RQYXJ0UmVzdWx0JmZpbGU9IiArIFVy
bEVuY29kZShmaWxlX25hbWUpICsKLSAgICAgICAgICAgIiZsaW5lPSIgKyBTdHJlYW1hYmxlVG9T
dHJpbmcodGVzdF9wYXJ0X3Jlc3VsdC5saW5lX251bWJlcigpKSArCi0gICAgICAgICAgICImbWVz
c2FnZT0iICsgVXJsRW5jb2RlKHRlc3RfcGFydF9yZXN1bHQubWVzc2FnZSgpKSk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIC8vIFNlbmRzIHRoZSBnaXZlbiBtZXNzYWdlIGFuZCBhIG5ld2xpbmUgdG8g
dGhlIHNvY2tldC4KLSAgdm9pZCBTZW5kTG4oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsg
c29ja2V0X3dyaXRlcl8tPlNlbmRMbihtZXNzYWdlKTsgfQotCi0gIC8vIENhbGxlZCBhdCB0aGUg
c3RhcnQgb2Ygc3RyZWFtaW5nIHRvIG5vdGlmeSB0aGUgcmVjZWl2ZXIgd2hhdAotICAvLyBwcm90
b2NvbCB3ZSBhcmUgdXNpbmcuCi0gIHZvaWQgU3RhcnQoKSB7IFNlbmRMbigiZ3Rlc3Rfc3RyZWFt
aW5nX3Byb3RvY29sX3ZlcnNpb249MS4wIik7IH0KLQotICBzdGQ6OnN0cmluZyBGb3JtYXRCb29s
KGJvb2wgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID8gIjEiIDogIjAiOyB9Ci0KLSAgY29uc3Qgc2Nv
cGVkX3B0cjxBYnN0cmFjdFNvY2tldFdyaXRlcj4gc29ja2V0X3dyaXRlcl87Ci0KLSAgR1RFU1Rf
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhTdHJlYW1pbmdMaXN0ZW5lcik7Ci19OyAgLy8gY2xh
c3MgU3RyZWFtaW5nTGlzdGVuZXIKLQotI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VM
VFNfCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcK
LQotI2VuZGlmICAvLyBHVEVTVF9TUkNfR1RFU1RfSU5URVJOQUxfSU5MX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1w
b3J0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODBiZDgwYzQ4MzIuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcG9ydC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDEyNDEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQot
I2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2luY2x1ZGUgPGxpbWl0
cy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8
c3RyaW5nLmg+Ci0jaW5jbHVkZSA8ZnN0cmVhbT4KLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSMg
aW5jbHVkZSA8d2luZG93cy5oPgotIyBpbmNsdWRlIDxpby5oPgotIyBpbmNsdWRlIDxzeXMvc3Rh
dC5oPgotIyBpbmNsdWRlIDxtYXA+ICAvLyBVc2VkIGluIFRocmVhZExvY2FsLgotI2Vsc2UKLSMg
aW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotI2lmIEdU
RVNUX09TX01BQwotIyBpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgotIyBpbmNsdWRlIDxtYWNo
L3Rhc2suaD4KLSMgaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
TUFDCi0KLSNpZiBHVEVTVF9PU19RTlgKLSMgaW5jbHVkZSA8ZGV2Y3RsLmg+Ci0jIGluY2x1ZGUg
PGZjbnRsLmg+Ci0jIGluY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSNlbmRpZiAgLy8gR1RFU1RfT1Nf
UU5YCi0KLSNpZiBHVEVTVF9PU19BSVgKLSMgaW5jbHVkZSA8cHJvY2luZm8uaD4KLSMgaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX0FJWAotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgotI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWludGVybmFsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50
ZXJuYWwvZ3Rlc3Qtc3RyaW5nLmgiCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRp
b24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQg
bXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9y
IHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgZXhpc3RzIHRvCi0v
LyBwcmV2ZW50IHRoZSBhY2NpZGVudGFsIGluY2x1c2lvbiBvZiBndGVzdC1pbnRlcm5hbC1pbmwu
aCBpbiB0aGUKLS8vIHVzZXIncyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8g
MQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBM
RU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsK
LQotI2lmIGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotLy8gTVNW
QyBhbmQgQysrQnVpbGRlciBkbyBub3QgcHJvdmlkZSBhIGRlZmluaXRpb24gb2YgU1RERVJSX0ZJ
TEVOTy4KLWNvbnN0IGludCBrU3RkT3V0RmlsZW5vID0gMTsKLWNvbnN0IGludCBrU3RkRXJyRmls
ZW5vID0gMjsKLSNlbHNlCi1jb25zdCBpbnQga1N0ZE91dEZpbGVubyA9IFNURE9VVF9GSUxFTk87
Ci1jb25zdCBpbnQga1N0ZEVyckZpbGVubyA9IFNUREVSUl9GSUxFTk87Ci0jZW5kaWYgIC8vIF9N
U0NfVkVSCi0KLSNpZiBHVEVTVF9PU19MSU5VWAotCi1uYW1lc3BhY2UgewotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1UIFJlYWRQcm9jRmlsZUZpZWxkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFt
ZSwgaW50IGZpZWxkKSB7Ci0gIHN0ZDo6c3RyaW5nIGR1bW15OwotICBzdGQ6Omlmc3RyZWFtIGZp
bGUoZmlsZW5hbWUuY19zdHIoKSk7Ci0gIHdoaWxlIChmaWVsZC0tID4gMCkgewotICAgIGZpbGUg
Pj4gZHVtbXk7Ci0gIH0KLSAgVCBvdXRwdXQgPSAwOwotICBmaWxlID4+IG91dHB1dDsKLSAgcmV0
dXJuIG91dHB1dDsKLX0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIg
b2YgYWN0aXZlIHRocmVhZHMsIG9yIDAgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KLXNpemVfdCBH
ZXRUaHJlYWRDb3VudCgpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZW5hbWUgPQotICAgICAg
KE1lc3NhZ2UoKSA8PCAiL3Byb2MvIiA8PCBnZXRwaWQoKSA8PCAiL3N0YXQiKS5HZXRTdHJpbmco
KTsKLSAgcmV0dXJuIFJlYWRQcm9jRmlsZUZpZWxkPGludD4oZmlsZW5hbWUsIDE5KTsKLX0KLQot
I2VsaWYgR1RFU1RfT1NfTUFDCi0KLXNpemVfdCBHZXRUaHJlYWRDb3VudCgpIHsKLSAgY29uc3Qg
dGFza190IHRhc2sgPSBtYWNoX3Rhc2tfc2VsZigpOwotICBtYWNoX21zZ190eXBlX251bWJlcl90
IHRocmVhZF9jb3VudDsKLSAgdGhyZWFkX2FjdF9hcnJheV90IHRocmVhZF9saXN0OwotICBjb25z
dCBrZXJuX3JldHVybl90IHN0YXR1cyA9IHRhc2tfdGhyZWFkcyh0YXNrLCAmdGhyZWFkX2xpc3Qs
ICZ0aHJlYWRfY291bnQpOwotICBpZiAoc3RhdHVzID09IEtFUk5fU1VDQ0VTUykgewotICAgIC8v
IHRhc2tfdGhyZWFkcyBhbGxvY2F0ZXMgcmVzb3VyY2VzIGluIHRocmVhZF9saXN0IGFuZCB3ZSBu
ZWVkIHRvIGZyZWUgdGhlbQotICAgIC8vIHRvIGF2b2lkIGxlYWtzLgotICAgIHZtX2RlYWxsb2Nh
dGUodGFzaywKLSAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190
Pih0aHJlYWRfbGlzdCksCi0gICAgICAgICAgICAgICAgICBzaXplb2YodGhyZWFkX3QpICogdGhy
ZWFkX2NvdW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih0aHJlYWRfY291bnQp
OwotICB9IGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLSNlbGlmIEdURVNUX09TX1FO
WAotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBydW5uaW5nIGluIHRoZSBwcm9j
ZXNzLCBvciAwIHRvIGluZGljYXRlIHRoYXQKLS8vIHdlIGNhbm5vdCBkZXRlY3QgaXQuCi1zaXpl
X3QgR2V0VGhyZWFkQ291bnQoKSB7Ci0gIGNvbnN0IGludCBmZCA9IG9wZW4oIi9wcm9jL3NlbGYv
YXMiLCBPX1JET05MWSk7Ci0gIGlmIChmZCA8IDApIHsKLSAgICByZXR1cm4gMDsKLSAgfQotICBw
cm9jZnNfaW5mbyBwcm9jZXNzX2luZm87Ci0gIGNvbnN0IGludCBzdGF0dXMgPQotICAgICAgZGV2
Y3RsKGZkLCBEQ01EX1BST0NfSU5GTywgJnByb2Nlc3NfaW5mbywgc2l6ZW9mKHByb2Nlc3NfaW5m
byksIE5VTEwpOwotICBjbG9zZShmZCk7Ci0gIGlmIChzdGF0dXMgPT0gRU9LKSB7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc19pbmZvLm51bV90aHJlYWRzKTsKLSAgfSBl
bHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCi0jZWxpZiBHVEVTVF9PU19BSVgKLQotc2l6
ZV90IEdldFRocmVhZENvdW50KCkgewotICBzdHJ1Y3QgcHJvY2VudHJ5NjQgZW50cnk7Ci0gIHBp
ZF90IHBpZCA9IGdldHBpZCgpOwotICBpbnQgc3RhdHVzID0gZ2V0cHJvY3M2NCgmZW50cnksIHNp
emVvZihlbnRyeSksIE5VTEwsIDAsICZwaWQsIDEpOwotICBpZiAoc3RhdHVzID09IDEpIHsKLSAg
ICByZXR1cm4gZW50cnkucGlfdGhjb3VudDsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gMDsKLSAg
fQotfQotCi0jZWxzZQotCi1zaXplX3QgR2V0VGhyZWFkQ291bnQoKSB7Ci0gIC8vIFRoZXJlJ3Mg
bm8gcG9ydGFibGUgd2F5IHRvIGRldGVjdCB0aGUgbnVtYmVyIG9mIHRocmVhZHMsIHNvIHdlIGp1
c3QKLSAgLy8gcmV0dXJuIDAgdG8gaW5kaWNhdGUgdGhhdCB3ZSBjYW5ub3QgZGV0ZWN0IGl0Lgot
ICByZXR1cm4gMDsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9PU19MSU5VWAotCi0jaWYgR1RFU1Rf
SVNfVEhSRUFEU0FGRSAmJiBHVEVTVF9PU19XSU5ET1dTCi0KLXZvaWQgU2xlZXBNaWxsaXNlY29u
ZHMoaW50IG4pIHsKLSAgOjpTbGVlcChuKTsKLX0KLQotQXV0b0hhbmRsZTo6QXV0b0hhbmRsZSgp
Ci0gICAgOiBoYW5kbGVfKElOVkFMSURfSEFORExFX1ZBTFVFKSB7fQotCi1BdXRvSGFuZGxlOjpB
dXRvSGFuZGxlKEhhbmRsZSBoYW5kbGUpCi0gICAgOiBoYW5kbGVfKGhhbmRsZSkge30KLQotQXV0
b0hhbmRsZTo6fkF1dG9IYW5kbGUoKSB7Ci0gIFJlc2V0KCk7Ci19Ci0KLUF1dG9IYW5kbGU6Okhh
bmRsZSBBdXRvSGFuZGxlOjpHZXQoKSBjb25zdCB7Ci0gIHJldHVybiBoYW5kbGVfOwotfQotCi12
b2lkIEF1dG9IYW5kbGU6OlJlc2V0KCkgewotICBSZXNldChJTlZBTElEX0hBTkRMRV9WQUxVRSk7
Ci19Ci0KLXZvaWQgQXV0b0hhbmRsZTo6UmVzZXQoSEFORExFIGhhbmRsZSkgewotICAvLyBSZXNl
dHRpbmcgd2l0aCB0aGUgc2FtZSBoYW5kbGUgd2UgYWxyZWFkeSBvd24gaXMgaW52YWxpZC4KLSAg
aWYgKGhhbmRsZV8gIT0gaGFuZGxlKSB7Ci0gICAgaWYgKElzQ2xvc2VhYmxlKCkpIHsKLSAgICAg
IDo6Q2xvc2VIYW5kbGUoaGFuZGxlXyk7Ci0gICAgfQotICAgIGhhbmRsZV8gPSBoYW5kbGU7Ci0g
IH0gZWxzZSB7Ci0gICAgR1RFU1RfQ0hFQ0tfKCFJc0Nsb3NlYWJsZSgpKQotICAgICAgICA8PCAi
UmVzZXR0aW5nIGEgdmFsaWQgaGFuZGxlIHRvIGl0c2VsZiBpcyBsaWtlbHkgYSBwcm9ncmFtbWVy
IGVycm9yICIKLSAgICAgICAgICAgICJhbmQgdGh1cyBub3QgYWxsb3dlZC4iOwotICB9Ci19Ci0K
LWJvb2wgQXV0b0hhbmRsZTo6SXNDbG9zZWFibGUoKSBjb25zdCB7Ci0gIC8vIERpZmZlcmVudCBX
aW5kb3dzIEFQSXMgbWF5IHVzZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIHRvIHJlcHJlc2VudCBh
bgotICAvLyBpbnZhbGlkIGhhbmRsZS4KLSAgcmV0dXJuIGhhbmRsZV8gIT0gTlVMTCAmJiBoYW5k
bGVfICE9IElOVkFMSURfSEFORExFX1ZBTFVFOwotfQotCi1Ob3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbigpCi0gICAgOiBldmVudF8oOjpDcmVhdGVFdmVudChOVUxMLCAgIC8vIERlZmF1bHQgc2Vj
dXJpdHkgYXR0cmlidXRlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsICAgLy8g
RG8gbm90IHJlc2V0IGF1dG9tYXRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBG
QUxTRSwgIC8vIEluaXRpYWxseSB1bnNldC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwpKSB7ICAvLyBBbm9ueW1vdXMgZXZlbnQuCi0gIEdURVNUX0NIRUNLXyhldmVudF8uR2V0KCkg
IT0gTlVMTCk7Ci19Ci0KLXZvaWQgTm90aWZpY2F0aW9uOjpOb3RpZnkoKSB7Ci0gIEdURVNUX0NI
RUNLXyg6OlNldEV2ZW50KGV2ZW50Xy5HZXQoKSkgIT0gRkFMU0UpOwotfQotCi12b2lkIE5vdGlm
aWNhdGlvbjo6V2FpdEZvck5vdGlmaWNhdGlvbigpIHsKLSAgR1RFU1RfQ0hFQ0tfKAotICAgICAg
OjpXYWl0Rm9yU2luZ2xlT2JqZWN0KGV2ZW50Xy5HZXQoKSwgSU5GSU5JVEUpID09IFdBSVRfT0JK
RUNUXzApOwotfQotCi1NdXRleDo6TXV0ZXgoKQotICAgIDogb3duZXJfdGhyZWFkX2lkXygwKSwK
LSAgICAgIHR5cGVfKGtEeW5hbWljKSwKLSAgICAgIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFz
ZV8oMCksCi0gICAgICBjcml0aWNhbF9zZWN0aW9uXyhuZXcgQ1JJVElDQUxfU0VDVElPTikgewot
ICA6OkluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbl8pOwotfQotCi1N
dXRleDo6fk11dGV4KCkgewotICAvLyBTdGF0aWMgbXV0ZXhlcyBhcmUgbGVha2VkIGludGVudGlv
bmFsbHkuIEl0IGlzIG5vdCB0aHJlYWQtc2FmZSB0byB0cnkKLSAgLy8gdG8gY2xlYW4gdGhlbSB1
cC4KLSAgLy8gVE9ETyh5dWthd2EpOiBTd2l0Y2ggdG8gU2xpbSBSZWFkZXIvV3JpdGVyIChTUlcp
IExvY2tzLCB3aGljaCByZXF1aXJlcwotICAvLyBub3RoaW5nIHRvIGNsZWFuIGl0IHVwIGJ1dCBp
cyBhdmFpbGFibGUgb25seSBvbiBWaXN0YSBhbmQgbGF0ZXIuCi0gIC8vIGh0dHA6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWE5MDQ5MzcuYXNweAot
ICBpZiAodHlwZV8gPT0ga0R5bmFtaWMpIHsKLSAgICA6OkRlbGV0ZUNyaXRpY2FsU2VjdGlvbihj
cml0aWNhbF9zZWN0aW9uXyk7Ci0gICAgZGVsZXRlIGNyaXRpY2FsX3NlY3Rpb25fOwotICAgIGNy
aXRpY2FsX3NlY3Rpb25fID0gTlVMTDsKLSAgfQotfQotCi12b2lkIE11dGV4OjpMb2NrKCkgewot
ICBUaHJlYWRTYWZlTGF6eUluaXQoKTsKLSAgOjpFbnRlckNyaXRpY2FsU2VjdGlvbihjcml0aWNh
bF9zZWN0aW9uXyk7Ci0gIG93bmVyX3RocmVhZF9pZF8gPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgp
OwotfQotCi12b2lkIE11dGV4OjpVbmxvY2soKSB7Ci0gIFRocmVhZFNhZmVMYXp5SW5pdCgpOwot
ICAvLyBXZSBkb24ndCBwcm90ZWN0IHdyaXRpbmcgdG8gb3duZXJfdGhyZWFkX2lkXyBoZXJlLCBh
cyBpdCdzIHRoZQotICAvLyBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0
aGUgY3VycmVudCB0aHJlYWQgaG9sZHMgdGhlCi0gIC8vIG11dGV4IHdoZW4gdGhpcyBpcyBjYWxs
ZWQuCi0gIG93bmVyX3RocmVhZF9pZF8gPSAwOwotICA6OkxlYXZlQ3JpdGljYWxTZWN0aW9uKGNy
aXRpY2FsX3NlY3Rpb25fKTsKLX0KLQotLy8gRG9lcyBub3RoaW5nIGlmIHRoZSBjdXJyZW50IHRo
cmVhZCBob2xkcyB0aGUgbXV0ZXguIE90aGVyd2lzZSwgY3Jhc2hlcwotLy8gd2l0aCBoaWdoIHBy
b2JhYmlsaXR5Lgotdm9pZCBNdXRleDo6QXNzZXJ0SGVsZCgpIHsKLSAgVGhyZWFkU2FmZUxhenlJ
bml0KCk7Ci0gIEdURVNUX0NIRUNLXyhvd25lcl90aHJlYWRfaWRfID09IDo6R2V0Q3VycmVudFRo
cmVhZElkKCkpCi0gICAgICA8PCAiVGhlIGN1cnJlbnQgdGhyZWFkIGlzIG5vdCBob2xkaW5nIHRo
ZSBtdXRleCBAIiA8PCB0aGlzOwotfQotCi0vLyBJbml0aWFsaXplcyBvd25lcl90aHJlYWRfaWRf
IGFuZCBjcml0aWNhbF9zZWN0aW9uXyBpbiBzdGF0aWMgbXV0ZXhlcy4KLXZvaWQgTXV0ZXg6OlRo
cmVhZFNhZmVMYXp5SW5pdCgpIHsKLSAgLy8gRHluYW1pYyBtdXRleGVzIGFyZSBpbml0aWFsaXpl
ZCBpbiB0aGUgY29uc3RydWN0b3IuCi0gIGlmICh0eXBlXyA9PSBrU3RhdGljKSB7Ci0gICAgc3dp
dGNoICgKLSAgICAgICAgOjpJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSgmY3JpdGljYWxfc2Vj
dGlvbl9pbml0X3BoYXNlXywgMUwsIDBMKSkgewotICAgICAgY2FzZSAwOgotICAgICAgICAvLyBJ
ZiBjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfIHdhcyAwIGJlZm9yZSB0aGUgZXhjaGFuZ2Us
IHdlCi0gICAgICAgIC8vIGFyZSB0aGUgZmlyc3QgdG8gdGVzdCBpdCBhbmQgbmVlZCB0byBwZXJm
b3JtIHRoZSBpbml0aWFsaXphdGlvbi4KLSAgICAgICAgb3duZXJfdGhyZWFkX2lkXyA9IDA7Ci0g
ICAgICAgIGNyaXRpY2FsX3NlY3Rpb25fID0gbmV3IENSSVRJQ0FMX1NFQ1RJT047Ci0gICAgICAg
IDo6SW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uXyk7Ci0gICAgICAg
IC8vIFVwZGF0ZXMgdGhlIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8gdG8gMiB0byBzaWdu
YWwKLSAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24gY29tcGxldGUuCi0gICAgICAgIEdURVNUX0NI
RUNLXyg6OkludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAmY3JpdGljYWxfc2VjdGlvbl9pbml0X3BoYXNlXywgMkwsIDFMKSA9PQotICAgICAgICAg
ICAgICAgICAgICAgIDFMKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDE6Ci0gICAgICAg
IC8vIFNvbWVib2R5IGVsc2UgaXMgYWxyZWFkeSBpbml0aWFsaXppbmcgdGhlIG11dGV4OyBzcGlu
IHVudGlsIHRoZXkKLSAgICAgICAgLy8gYXJlIGRvbmUuCi0gICAgICAgIHdoaWxlICg6OkludGVy
bG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCZjcml0aWNhbF9zZWN0aW9uX2luaXRfcGhhc2VfLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyTCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMkwpICE9IDJMKSB7Ci0gICAgICAgICAg
Ly8gUG9zc2libHkgeWllbGRzIHRoZSByZXN0IG9mIHRoZSB0aHJlYWQncyB0aW1lIHNsaWNlIHRv
IG90aGVyCi0gICAgICAgICAgLy8gdGhyZWFkcy4KLSAgICAgICAgICA6OlNsZWVwKDApOwotICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIDI6Ci0gICAgICAgIGJyZWFrOyAg
Ly8gVGhlIG11dGV4IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYW5kIHJlYWR5IGZvciB1c2UuCi0K
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdURVNUX0NIRUNLXyhmYWxzZSkKLSAgICAgICAgICAg
IDw8ICJVbmV4cGVjdGVkIHZhbHVlIG9mIGNyaXRpY2FsX3NlY3Rpb25faW5pdF9waGFzZV8gIgot
ICAgICAgICAgICAgPDwgIndoaWxlIGluaXRpYWxpemluZyBhIHN0YXRpYyBtdXRleC4iOwotICAg
IH0KLSAgfQotfQotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0
IDogcHVibGljIFRocmVhZFdpdGhQYXJhbUJhc2UgewotIHB1YmxpYzoKLSAgc3RhdGljIEhBTkRM
RSBDcmVhdGVUaHJlYWQoUnVubmFibGUqIHJ1bm5hYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpIHsKLSAgICBUaHJlYWRNYWlu
UGFyYW0qIHBhcmFtID0gbmV3IFRocmVhZE1haW5QYXJhbShydW5uYWJsZSwgdGhyZWFkX2Nhbl9z
dGFydCk7Ci0gICAgRFdPUkQgdGhyZWFkX2lkOwotICAgIC8vIFRPRE8oeXVrYXdhKTogQ29uc2lk
ZXIgdG8gdXNlIF9iZWdpbnRocmVhZGV4IGluc3RlYWQuCi0gICAgSEFORExFIHRocmVhZF9oYW5k
bGUgPSA6OkNyZWF0ZVRocmVhZCgKLSAgICAgICAgTlVMTCwgICAgLy8gRGVmYXVsdCBzZWN1cml0
eS4KLSAgICAgICAgMCwgICAgICAgLy8gRGVmYXVsdCBzdGFjayBzaXplLgotICAgICAgICAmVGhy
ZWFkV2l0aFBhcmFtU3VwcG9ydDo6VGhyZWFkTWFpbiwKLSAgICAgICAgcGFyYW0sICAgLy8gUGFy
YW1ldGVyIHRvIFRocmVhZE1haW5TdGF0aWMKLSAgICAgICAgMHgwLCAgICAgLy8gRGVmYXVsdCBj
cmVhdGlvbiBmbGFncy4KLSAgICAgICAgJnRocmVhZF9pZCk7ICAvLyBOZWVkIGEgdmFsaWQgcG9p
bnRlciBmb3IgdGhlIGNhbGwgdG8gd29yayB1bmRlciBXaW45OC4KLSAgICBHVEVTVF9DSEVDS18o
dGhyZWFkX2hhbmRsZSAhPSBOVUxMKSA8PCAiQ3JlYXRlVGhyZWFkIGZhaWxlZCB3aXRoIGVycm9y
ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA6OkdldExhc3RF
cnJvcigpIDw8ICIuIjsKLSAgICBpZiAodGhyZWFkX2hhbmRsZSA9PSBOVUxMKSB7Ci0gICAgICBk
ZWxldGUgcGFyYW07Ci0gICAgfQotICAgIHJldHVybiB0aHJlYWRfaGFuZGxlOwotICB9Ci0KLSBw
cml2YXRlOgotICBzdHJ1Y3QgVGhyZWFkTWFpblBhcmFtIHsKLSAgICBUaHJlYWRNYWluUGFyYW0o
UnVubmFibGUqIHJ1bm5hYmxlLCBOb3RpZmljYXRpb24qIHRocmVhZF9jYW5fc3RhcnQpCi0gICAg
ICAgIDogcnVubmFibGVfKHJ1bm5hYmxlKSwKLSAgICAgICAgICB0aHJlYWRfY2FuX3N0YXJ0Xyh0
aHJlYWRfY2FuX3N0YXJ0KSB7Ci0gICAgfQotICAgIHNjb3BlZF9wdHI8UnVubmFibGU+IHJ1bm5h
YmxlXzsKLSAgICAvLyBEb2VzIG5vdCBvd24uCi0gICAgTm90aWZpY2F0aW9uKiB0aHJlYWRfY2Fu
X3N0YXJ0XzsKLSAgfTsKLQotICBzdGF0aWMgRFdPUkQgV0lOQVBJIFRocmVhZE1haW4odm9pZCog
cHRyKSB7Ci0gICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcC4KLSAgICBzY29wZWRfcHRyPFRocmVh
ZE1haW5QYXJhbT4gcGFyYW0oc3RhdGljX2Nhc3Q8VGhyZWFkTWFpblBhcmFtKj4ocHRyKSk7Ci0g
ICAgaWYgKHBhcmFtLT50aHJlYWRfY2FuX3N0YXJ0XyAhPSBOVUxMKQotICAgICAgcGFyYW0tPnRo
cmVhZF9jYW5fc3RhcnRfLT5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0gICAgcGFyYW0tPnJ1bm5h
YmxlXy0+UnVuKCk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQotICAvLyBQcm9oaWJpdCBpbnN0YW50
aWF0aW9uLgotICBUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KCk7Ci0KLSAgR1RFU1RfRElTQUxMT1df
Q09QWV9BTkRfQVNTSUdOXyhUaHJlYWRXaXRoUGFyYW1TdXBwb3J0KTsKLX07Ci0KLX0gIC8vIG5h
bWVzcGFjZQotCi1UaHJlYWRXaXRoUGFyYW1CYXNlOjpUaHJlYWRXaXRoUGFyYW1CYXNlKFJ1bm5h
YmxlICpydW5uYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm90aWZpY2F0aW9uKiB0aHJlYWRfY2FuX3N0YXJ0KQotICAgICAgOiB0aHJlYWRfKFRocmVhZFdp
dGhQYXJhbVN1cHBvcnQ6OkNyZWF0ZVRocmVhZChydW5uYWJsZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkX2Nhbl9zdGFydCkpIHsK
LX0KLQotVGhyZWFkV2l0aFBhcmFtQmFzZTo6flRocmVhZFdpdGhQYXJhbUJhc2UoKSB7Ci0gIEpv
aW4oKTsKLX0KLQotdm9pZCBUaHJlYWRXaXRoUGFyYW1CYXNlOjpKb2luKCkgewotICBHVEVTVF9D
SEVDS18oOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KHRocmVhZF8uR2V0KCksIElORklOSVRFKSA9PSBX
QUlUX09CSkVDVF8wKQotICAgICAgPDwgIkZhaWxlZCB0byBqb2luIHRoZSB0aHJlYWQgd2l0aCBl
cnJvciAiIDw8IDo6R2V0TGFzdEVycm9yKCkgPDwgIi4iOwotfQotCi0vLyBNYXBzIGEgdGhyZWFk
IHRvIGEgc2V0IG9mIFRocmVhZElkVG9UaHJlYWRMb2NhbHMgdGhhdCBoYXZlIHZhbHVlcwotLy8g
aW5zdGFudGlhdGVkIG9uIHRoYXQgdGhyZWFkIGFuZCBub3RpZmllcyB0aGVtIHdoZW4gdGhlIHRo
cmVhZCBleGl0cy4gIEEKLS8vIFRocmVhZExvY2FsIGluc3RhbmNlIGlzIGV4cGVjdGVkIHRvIHBl
cnNpc3QgdW50aWwgYWxsIHRocmVhZHMgaXQgaGFzCi0vLyB2YWx1ZXMgb24gaGF2ZSB0ZXJtaW5h
dGVkLgotY2xhc3MgVGhyZWFkTG9jYWxSZWdpc3RyeUltcGwgewotIHB1YmxpYzoKLSAgLy8gUmVn
aXN0ZXJzIHRocmVhZF9sb2NhbF9pbnN0YW5jZSBhcyBoYXZpbmcgdmFsdWUgb24gdGhlIGN1cnJl
bnQgdGhyZWFkLgotICAvLyBSZXR1cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVu
dGlmeSB0aGUgdGhyZWFkIGZyb20gb3RoZXIgdGhyZWFkcy4KLSAgc3RhdGljIFRocmVhZExvY2Fs
VmFsdWVIb2xkZXJCYXNlKiBHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKLSAgICAgIGNvbnN0IFRo
cmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7Ci0gICAgRFdPUkQgY3VycmVu
dF90aHJlYWQgPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOwotICAgIE11dGV4TG9jayBsb2NrKCZt
dXRleF8pOwotICAgIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIGNvbnN0IHRocmVhZF90b190aHJl
YWRfbG9jYWxzID0KLSAgICAgICAgR2V0VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7Ci0gICAgVGhy
ZWFkSWRUb1RocmVhZExvY2Fsczo6aXRlcmF0b3IgdGhyZWFkX2xvY2FsX3BvcyA9Ci0gICAgICAg
IHRocmVhZF90b190aHJlYWRfbG9jYWxzLT5maW5kKGN1cnJlbnRfdGhyZWFkKTsKLSAgICBpZiAo
dGhyZWFkX2xvY2FsX3BvcyA9PSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZW5kKCkpIHsKLSAg
ICAgIHRocmVhZF9sb2NhbF9wb3MgPSB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+aW5zZXJ0KAot
ICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGN1cnJlbnRfdGhyZWFkLCBUaHJlYWRMb2NhbFZhbHVl
cygpKSkuZmlyc3Q7Ci0gICAgICBTdGFydFdhdGNoZXJUaHJlYWRGb3IoY3VycmVudF90aHJlYWQp
OwotICAgIH0KLSAgICBUaHJlYWRMb2NhbFZhbHVlcyYgdGhyZWFkX2xvY2FsX3ZhbHVlcyA9IHRo
cmVhZF9sb2NhbF9wb3MtPnNlY29uZDsKLSAgICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3Ig
dmFsdWVfcG9zID0KLSAgICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5maW5kKHRocmVhZF9sb2Nh
bF9pbnN0YW5jZSk7Ci0gICAgaWYgKHZhbHVlX3BvcyA9PSB0aHJlYWRfbG9jYWxfdmFsdWVzLmVu
ZCgpKSB7Ci0gICAgICB2YWx1ZV9wb3MgPQotICAgICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMK
LSAgICAgICAgICAgICAgLmluc2VydChzdGQ6Om1ha2VfcGFpcigKLSAgICAgICAgICAgICAgICAg
IHRocmVhZF9sb2NhbF9pbnN0YW5jZSwKLSAgICAgICAgICAgICAgICAgIGxpbmtlZF9wdHI8VGhy
ZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+KAotICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9s
b2NhbF9pbnN0YW5jZS0+TmV3VmFsdWVGb3JDdXJyZW50VGhyZWFkKCkpKSkKLSAgICAgICAgICAg
ICAgLmZpcnN0OwotICAgIH0KLSAgICByZXR1cm4gdmFsdWVfcG9zLT5zZWNvbmQuZ2V0KCk7Ci0g
IH0KLQotICBzdGF0aWMgdm9pZCBPblRocmVhZExvY2FsRGVzdHJveWVkKAotICAgICAgY29uc3Qg
VGhyZWFkTG9jYWxCYXNlKiB0aHJlYWRfbG9jYWxfaW5zdGFuY2UpIHsKLSAgICBzdGQ6OnZlY3Rv
cjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+IHZhbHVlX2hvbGRlcnM7
Ci0gICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZExvY2FsVmFsdWVzIGRhdGEgc3RydWN0dXJlIHdo
aWxlIGhvbGRpbmcgdGhlIGxvY2ssIGJ1dAotICAgIC8vIGRlZmVyIHRoZSBkZXN0cnVjdGlvbiBv
ZiB0aGUgVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgotICAgIHsKLSAgICAgIE11dGV4TG9j
ayBsb2NrKCZtdXRleF8pOwotICAgICAgVGhyZWFkSWRUb1RocmVhZExvY2FscyogY29uc3QgdGhy
ZWFkX3RvX3RocmVhZF9sb2NhbHMgPQotICAgICAgICAgIEdldFRocmVhZExvY2Fsc01hcExvY2tl
ZCgpOwotICAgICAgZm9yIChUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjppdGVyYXRvciBpdCA9Ci0g
ICAgICAgICAgdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmJlZ2luKCk7Ci0gICAgICAgICAgaXQg
IT0gdGhyZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpOwotICAgICAgICAgICsraXQpIHsKLSAg
ICAgICAgVGhyZWFkTG9jYWxWYWx1ZXMmIHRocmVhZF9sb2NhbF92YWx1ZXMgPSBpdC0+c2Vjb25k
OwotICAgICAgICBUaHJlYWRMb2NhbFZhbHVlczo6aXRlcmF0b3IgdmFsdWVfcG9zID0KLSAgICAg
ICAgICAgIHRocmVhZF9sb2NhbF92YWx1ZXMuZmluZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOwot
ICAgICAgICBpZiAodmFsdWVfcG9zICE9IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCkpIHsKLSAg
ICAgICAgICB2YWx1ZV9ob2xkZXJzLnB1c2hfYmFjayh2YWx1ZV9wb3MtPnNlY29uZCk7Ci0gICAg
ICAgICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5lcmFzZSh2YWx1ZV9wb3MpOwotICAgICAgICAgIC8v
IFRoaXMgJ2lmJyBjYW4gb25seSBiZSBzdWNjZXNzZnVsIGF0IG1vc3Qgb25jZSwgc28gdGhlb3Jl
dGljYWxseSB3ZQotICAgICAgICAgIC8vIGNvdWxkIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBoZXJl
LCBidXQgd2UgZG9uJ3QgYm90aGVyIGRvaW5nIHNvLgotICAgICAgICB9Ci0gICAgICB9Ci0gICAg
fQotICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVl
X2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCi0gICAgLy8gVGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJh
c2VzLgotICB9Ci0KLSAgc3RhdGljIHZvaWQgT25UaHJlYWRFeGl0KERXT1JEIHRocmVhZF9pZCkg
ewotICAgIEdURVNUX0NIRUNLXyh0aHJlYWRfaWQgIT0gMCkgPDwgOjpHZXRMYXN0RXJyb3IoKTsK
LSAgICBzdGQ6OnZlY3RvcjxsaW5rZWRfcHRyPFRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlPiA+
IHZhbHVlX2hvbGRlcnM7Ci0gICAgLy8gQ2xlYW4gdXAgdGhlIFRocmVhZElkVG9UaHJlYWRMb2Nh
bHMgZGF0YSBzdHJ1Y3R1cmUgd2hpbGUgaG9sZGluZyB0aGUKLSAgICAvLyBsb2NrLCBidXQgZGVm
ZXIgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBUaHJlYWRMb2NhbFZhbHVlSG9sZGVyQmFzZXMuCi0g
ICAgewotICAgICAgTXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7Ci0gICAgICBUaHJlYWRJZFRvVGhy
ZWFkTG9jYWxzKiBjb25zdCB0aHJlYWRfdG9fdGhyZWFkX2xvY2FscyA9Ci0gICAgICAgICAgR2V0
VGhyZWFkTG9jYWxzTWFwTG9ja2VkKCk7Ci0gICAgICBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzOjpp
dGVyYXRvciB0aHJlYWRfbG9jYWxfcG9zID0KLSAgICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xv
Y2Fscy0+ZmluZCh0aHJlYWRfaWQpOwotICAgICAgaWYgKHRocmVhZF9sb2NhbF9wb3MgIT0gdGhy
ZWFkX3RvX3RocmVhZF9sb2NhbHMtPmVuZCgpKSB7Ci0gICAgICAgIFRocmVhZExvY2FsVmFsdWVz
JiB0aHJlYWRfbG9jYWxfdmFsdWVzID0gdGhyZWFkX2xvY2FsX3Bvcy0+c2Vjb25kOwotICAgICAg
ICBmb3IgKFRocmVhZExvY2FsVmFsdWVzOjppdGVyYXRvciB2YWx1ZV9wb3MgPQotICAgICAgICAg
ICAgdGhyZWFkX2xvY2FsX3ZhbHVlcy5iZWdpbigpOwotICAgICAgICAgICAgdmFsdWVfcG9zICE9
IHRocmVhZF9sb2NhbF92YWx1ZXMuZW5kKCk7Ci0gICAgICAgICAgICArK3ZhbHVlX3Bvcykgewot
ICAgICAgICAgIHZhbHVlX2hvbGRlcnMucHVzaF9iYWNrKHZhbHVlX3Bvcy0+c2Vjb25kKTsKLSAg
ICAgICAgfQotICAgICAgICB0aHJlYWRfdG9fdGhyZWFkX2xvY2Fscy0+ZXJhc2UodGhyZWFkX2xv
Y2FsX3Bvcyk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8vIE91dHNpZGUgdGhlIGxvY2ssIGxldCB0
aGUgZGVzdHJ1Y3RvciBmb3IgJ3ZhbHVlX2hvbGRlcnMnIGRlYWxsb2NhdGUgdGhlCi0gICAgLy8g
VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2VzLgotICB9Ci0KLSBwcml2YXRlOgotICAvLyBJbiBh
IHBhcnRpY3VsYXIgdGhyZWFkLCBtYXBzIGEgVGhyZWFkTG9jYWwgb2JqZWN0IHRvIGl0cyB2YWx1
ZS4KLSAgdHlwZWRlZiBzdGQ6Om1hcDxjb25zdCBUaHJlYWRMb2NhbEJhc2UqLAotICAgICAgICAg
ICAgICAgICAgIGxpbmtlZF9wdHI8VGhyZWFkTG9jYWxWYWx1ZUhvbGRlckJhc2U+ID4gVGhyZWFk
TG9jYWxWYWx1ZXM7Ci0gIC8vIFN0b3JlcyBhbGwgVGhyZWFkSWRUb1RocmVhZExvY2FscyBoYXZp
bmcgdmFsdWVzIGluIGEgdGhyZWFkLCBpbmRleGVkIGJ5Ci0gIC8vIHRocmVhZCdzIElELgotICB0
eXBlZGVmIHN0ZDo6bWFwPERXT1JELCBUaHJlYWRMb2NhbFZhbHVlcz4gVGhyZWFkSWRUb1RocmVh
ZExvY2FsczsKLQotICAvLyBIb2xkcyB0aGUgdGhyZWFkIGlkIGFuZCB0aHJlYWQgaGFuZGxlIHRo
YXQgd2UgcGFzcyBmcm9tCi0gIC8vIFN0YXJ0V2F0Y2hlclRocmVhZEZvciB0byBXYXRjaGVyVGhy
ZWFkRnVuYy4KLSAgdHlwZWRlZiBzdGQ6OnBhaXI8RFdPUkQsIEhBTkRMRT4gVGhyZWFkSWRBbmRI
YW5kbGU7Ci0KLSAgc3RhdGljIHZvaWQgU3RhcnRXYXRjaGVyVGhyZWFkRm9yKERXT1JEIHRocmVh
ZF9pZCkgewotICAgIC8vIFRoZSByZXR1cm5lZCBoYW5kbGUgd2lsbCBiZSBrZXB0IGluIHRocmVh
ZF9tYXAgYW5kIGNsb3NlZCBieQotICAgIC8vIHdhdGNoZXJfdGhyZWFkIGluIFdhdGNoZXJUaHJl
YWRGdW5jLgotICAgIEhBTkRMRSB0aHJlYWQgPSA6Ok9wZW5UaHJlYWQoU1lOQ0hST05JWkUgfCBU
SFJFQURfUVVFUllfSU5GT1JNQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZF9pZCk7Ci0g
ICAgR1RFU1RfQ0hFQ0tfKHRocmVhZCAhPSBOVUxMKTsKLSAgICAvLyBXZSBuZWVkIHRvIHRvIHBh
c3MgYSB2YWxpZCB0aHJlYWQgSUQgcG9pbnRlciBpbnRvIENyZWF0ZVRocmVhZCBmb3IgaXQKLSAg
ICAvLyB0byB3b3JrIGNvcnJlY3RseSB1bmRlciBXaW45OC4KLSAgICBEV09SRCB3YXRjaGVyX3Ro
cmVhZF9pZDsKLSAgICBIQU5ETEUgd2F0Y2hlcl90aHJlYWQgPSA6OkNyZWF0ZVRocmVhZCgKLSAg
ICAgICAgTlVMTCwgICAvLyBEZWZhdWx0IHNlY3VyaXR5LgotICAgICAgICAwLCAgICAgIC8vIERl
ZmF1bHQgc3RhY2sgc2l6ZQotICAgICAgICAmVGhyZWFkTG9jYWxSZWdpc3RyeUltcGw6OldhdGNo
ZXJUaHJlYWRGdW5jLAotICAgICAgICByZWludGVycHJldF9jYXN0PExQVk9JRD4obmV3IFRocmVh
ZElkQW5kSGFuZGxlKHRocmVhZF9pZCwgdGhyZWFkKSksCi0gICAgICAgIENSRUFURV9TVVNQRU5E
RUQsCi0gICAgICAgICZ3YXRjaGVyX3RocmVhZF9pZCk7Ci0gICAgR1RFU1RfQ0hFQ0tfKHdhdGNo
ZXJfdGhyZWFkICE9IE5VTEwpOwotICAgIC8vIEdpdmUgdGhlIHdhdGNoZXIgdGhyZWFkIHRoZSBz
YW1lIHByaW9yaXR5IGFzIG91cnMgdG8gYXZvaWQgYmVpbmcKLSAgICAvLyBibG9ja2VkIGJ5IGl0
LgotICAgIDo6U2V0VGhyZWFkUHJpb3JpdHkod2F0Y2hlcl90aHJlYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICA6OkdldFRocmVhZFByaW9yaXR5KDo6R2V0Q3VycmVudFRocmVhZCgpKSk7Ci0g
ICAgOjpSZXN1bWVUaHJlYWQod2F0Y2hlcl90aHJlYWQpOwotICAgIDo6Q2xvc2VIYW5kbGUod2F0
Y2hlcl90aHJlYWQpOwotICB9Ci0KLSAgLy8gTW9uaXRvcnMgZXhpdCBmcm9tIGEgZ2l2ZW4gdGhy
ZWFkIGFuZCBub3RpZmllcyB0aG9zZQotICAvLyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzIGFib3V0
IHRocmVhZCB0ZXJtaW5hdGlvbi4KLSAgc3RhdGljIERXT1JEIFdJTkFQSSBXYXRjaGVyVGhyZWFk
RnVuYyhMUFZPSUQgcGFyYW0pIHsKLSAgICBjb25zdCBUaHJlYWRJZEFuZEhhbmRsZSogdGFoID0K
LSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUaHJlYWRJZEFuZEhhbmRsZSo+KHBhcmFt
KTsKLSAgICBHVEVTVF9DSEVDS18oCi0gICAgICAgIDo6V2FpdEZvclNpbmdsZU9iamVjdCh0YWgt
PnNlY29uZCwgSU5GSU5JVEUpID09IFdBSVRfT0JKRUNUXzApOwotICAgIE9uVGhyZWFkRXhpdCh0
YWgtPmZpcnN0KTsKLSAgICA6OkNsb3NlSGFuZGxlKHRhaC0+c2Vjb25kKTsKLSAgICBkZWxldGUg
dGFoOwotICAgIHJldHVybiAwOwotICB9Ci0KLSAgLy8gUmV0dXJucyBtYXAgb2YgdGhyZWFkIGxv
Y2FsIGluc3RhbmNlcy4KLSAgc3RhdGljIFRocmVhZElkVG9UaHJlYWRMb2NhbHMqIEdldFRocmVh
ZExvY2Fsc01hcExvY2tlZCgpIHsKLSAgICBtdXRleF8uQXNzZXJ0SGVsZCgpOwotICAgIHN0YXRp
YyBUaHJlYWRJZFRvVGhyZWFkTG9jYWxzKiBtYXAgPSBuZXcgVGhyZWFkSWRUb1RocmVhZExvY2Fs
czsKLSAgICByZXR1cm4gbWFwOwotICB9Ci0KLSAgLy8gUHJvdGVjdHMgYWNjZXNzIHRvIEdldFRo
cmVhZExvY2Fsc01hcExvY2tlZCgpIGFuZCBpdHMgcmV0dXJuIHZhbHVlLgotICBzdGF0aWMgTXV0
ZXggbXV0ZXhfOwotICAvLyBQcm90ZWN0cyBhY2Nlc3MgdG8gR2V0VGhyZWFkTWFwTG9ja2VkKCkg
YW5kIGl0cyByZXR1cm4gdmFsdWUuCi0gIHN0YXRpYyBNdXRleCB0aHJlYWRfbWFwX211dGV4XzsK
LX07Ci0KLU11dGV4IFRocmVhZExvY2FsUmVnaXN0cnlJbXBsOjptdXRleF8oTXV0ZXg6OmtTdGF0
aWNNdXRleCk7Ci1NdXRleCBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6dGhyZWFkX21hcF9tdXRl
eF8oTXV0ZXg6OmtTdGF0aWNNdXRleCk7Ci0KLVRocmVhZExvY2FsVmFsdWVIb2xkZXJCYXNlKiBU
aHJlYWRMb2NhbFJlZ2lzdHJ5OjpHZXRWYWx1ZU9uQ3VycmVudFRocmVhZCgKLSAgICAgIGNvbnN0
IFRocmVhZExvY2FsQmFzZSogdGhyZWFkX2xvY2FsX2luc3RhbmNlKSB7Ci0gIHJldHVybiBUaHJl
YWRMb2NhbFJlZ2lzdHJ5SW1wbDo6R2V0VmFsdWVPbkN1cnJlbnRUaHJlYWQoCi0gICAgICB0aHJl
YWRfbG9jYWxfaW5zdGFuY2UpOwotfQotCi12b2lkIFRocmVhZExvY2FsUmVnaXN0cnk6Ok9uVGhy
ZWFkTG9jYWxEZXN0cm95ZWQoCi0gICAgICBjb25zdCBUaHJlYWRMb2NhbEJhc2UqIHRocmVhZF9s
b2NhbF9pbnN0YW5jZSkgewotICBUaHJlYWRMb2NhbFJlZ2lzdHJ5SW1wbDo6T25UaHJlYWRMb2Nh
bERlc3Ryb3llZCh0aHJlYWRfbG9jYWxfaW5zdGFuY2UpOwotfQotCi0jZW5kaWYgIC8vIEdURVNU
X0lTX1RIUkVBRFNBRkUgJiYgR1RFU1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1RfVVNFU19QT1NJ
WF9SRQotCi0vLyBJbXBsZW1lbnRzIFJFLiAgQ3VycmVudGx5IG9ubHkgbmVlZGVkIGZvciBkZWF0
aCB0ZXN0cy4KLQotUkU6On5SRSgpIHsKLSAgaWYgKGlzX3ZhbGlkXykgewotICAgIC8vIHJlZ2Zy
ZWUnaW5nIGFuIGludmFsaWQgcmVnZXggbWlnaHQgY3Jhc2ggYmVjYXVzZSB0aGUgY29udGVudAot
ICAgIC8vIG9mIHRoZSByZWdleCBpcyB1bmRlZmluZWQuIFNpbmNlIHRoZSByZWdleCdzIGFyZSBl
c3NlbnRpYWxseQotICAgIC8vIHRoZSBzYW1lLCBvbmUgY2Fubm90IGJlIHZhbGlkIChvciBpbnZh
bGlkKSB3aXRob3V0IHRoZSBvdGhlcgotICAgIC8vIGJlaW5nIHNvIHRvby4KLSAgICByZWdmcmVl
KCZwYXJ0aWFsX3JlZ2V4Xyk7Ci0gICAgcmVnZnJlZSgmZnVsbF9yZWdleF8pOwotICB9Ci0gIGZy
ZWUoY29uc3RfY2FzdDxjaGFyKj4ocGF0dGVybl8pKTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlm
ZiByZWd1bGFyIGV4cHJlc3Npb24gcmUgbWF0Y2hlcyB0aGUgZW50aXJlIHN0ci4KLWJvb2wgUkU6
OkZ1bGxNYXRjaChjb25zdCBjaGFyKiBzdHIsIGNvbnN0IFJFJiByZSkgewotICBpZiAoIXJlLmlz
X3ZhbGlkXykgcmV0dXJuIGZhbHNlOwotCi0gIHJlZ21hdGNoX3QgbWF0Y2g7Ci0gIHJldHVybiBy
ZWdleGVjKCZyZS5mdWxsX3JlZ2V4Xywgc3RyLCAxLCAmbWF0Y2gsIDApID09IDA7Ci19Ci0KLS8v
IFJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlIG1hdGNoZXMgYSBzdWJzdHJp
bmcgb2Ygc3RyCi0vLyAoaW5jbHVkaW5nIHN0ciBpdHNlbGYpLgotYm9vbCBSRTo6UGFydGlhbE1h
dGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKSB7Ci0gIGlmICghcmUuaXNfdmFsaWRf
KSByZXR1cm4gZmFsc2U7Ci0KLSAgcmVnbWF0Y2hfdCBtYXRjaDsKLSAgcmV0dXJuIHJlZ2V4ZWMo
JnJlLnBhcnRpYWxfcmVnZXhfLCBzdHIsIDEsICZtYXRjaCwgMCkgPT0gMDsKLX0KLQotLy8gSW5p
dGlhbGl6ZXMgYW4gUkUgZnJvbSBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgotdm9pZCBSRTo6
SW5pdChjb25zdCBjaGFyKiByZWdleCkgewotICBwYXR0ZXJuXyA9IHBvc2l4OjpTdHJEdXAocmVn
ZXgpOwotCi0gIC8vIFJlc2VydmVzIGVub3VnaCBieXRlcyB0byBob2xkIHRoZSByZWd1bGFyIGV4
cHJlc3Npb24gdXNlZCBmb3IgYQotICAvLyBmdWxsIG1hdGNoLgotICBjb25zdCBzaXplX3QgZnVs
bF9yZWdleF9sZW4gPSBzdHJsZW4ocmVnZXgpICsgMTA7Ci0gIGNoYXIqIGNvbnN0IGZ1bGxfcGF0
dGVybiA9IG5ldyBjaGFyW2Z1bGxfcmVnZXhfbGVuXTsKLQotICBzbnByaW50ZihmdWxsX3BhdHRl
cm4sIGZ1bGxfcmVnZXhfbGVuLCAiXiglcykkIiwgcmVnZXgpOwotICBpc192YWxpZF8gPSByZWdj
b21wKCZmdWxsX3JlZ2V4XywgZnVsbF9wYXR0ZXJuLCBSRUdfRVhURU5ERUQpID09IDA7Ci0gIC8v
IFdlIHdhbnQgdG8gY2FsbCByZWdjb21wKCZwYXJ0aWFsX3JlZ2V4XywgLi4uKSBldmVuIGlmIHRo
ZQotICAvLyBwcmV2aW91cyBleHByZXNzaW9uIHJldHVybnMgZmFsc2UuICBPdGhlcndpc2UgcGFy
dGlhbF9yZWdleF8gbWF5Ci0gIC8vIG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBjYW4gbWF5
IGNhdXNlIHRyb3VibGUgd2hlbiBpdCdzCi0gIC8vIGZyZWVkLgotICAvLwotICAvLyBTb21lIGlt
cGxlbWVudGF0aW9uIG9mIFBPU0lYIHJlZ2V4IChlLmcuIG9uIGF0IGxlYXN0IHNvbWUKLSAgLy8g
dmVyc2lvbnMgb2YgQ3lnd2luKSBkb2Vzbid0IGFjY2VwdCB0aGUgZW1wdHkgc3RyaW5nIGFzIGEg
dmFsaWQKLSAgLy8gcmVnZXguICBXZSBjaGFuZ2UgaXQgdG8gYW4gZXF1aXZhbGVudCBmb3JtICIo
KSIgdG8gYmUgc2FmZS4KLSAgaWYgKGlzX3ZhbGlkXykgewotICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHBhcnRpYWxfcmVnZXggPSAoKnJlZ2V4ID09ICdcMCcpID8gIigpIiA6IHJlZ2V4OwotICAgIGlz
X3ZhbGlkXyA9IHJlZ2NvbXAoJnBhcnRpYWxfcmVnZXhfLCBwYXJ0aWFsX3JlZ2V4LCBSRUdfRVhU
RU5ERUQpID09IDA7Ci0gIH0KLSAgRVhQRUNUX1RSVUUoaXNfdmFsaWRfKQotICAgICAgPDwgIlJl
Z3VsYXIgZXhwcmVzc2lvbiBcIiIgPDwgcmVnZXgKLSAgICAgIDw8ICJcIiBpcyBub3QgYSB2YWxp
ZCBQT1NJWCBFeHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24uIjsKLQotICBkZWxldGVbXSBmdWxs
X3BhdHRlcm47Ci19Ci0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLS8vIFJldHVybnMg
dHJ1ZSBpZmYgY2ggYXBwZWFycyBhbnl3aGVyZSBpbiBzdHIgKGV4Y2x1ZGluZyB0aGUKLS8vIHRl
cm1pbmF0aW5nICdcMCcgY2hhcmFjdGVyKS4KLWJvb2wgSXNJblNldChjaGFyIGNoLCBjb25zdCBj
aGFyKiBzdHIpIHsKLSAgcmV0dXJuIGNoICE9ICdcMCcgJiYgc3RyY2hyKHN0ciwgY2gpICE9IE5V
TEw7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgY2ggYmVsb25ncyB0byB0aGUgZ2l2ZW4gY2xh
c3NpZmljYXRpb24uICBVbmxpa2UKLS8vIHNpbWlsYXIgZnVuY3Rpb25zIGluIDxjdHlwZS5oPiwg
dGhlc2UgYXJlbid0IGFmZmVjdGVkIGJ5IHRoZQotLy8gY3VycmVudCBsb2NhbGUuCi1ib29sIElz
QXNjaWlEaWdpdChjaGFyIGNoKSB7IHJldHVybiAnMCcgPD0gY2ggJiYgY2ggPD0gJzknOyB9Ci1i
b29sIElzQXNjaWlQdW5jdChjaGFyIGNoKSB7Ci0gIHJldHVybiBJc0luU2V0KGNoLCAiXi0hXCIj
JCUmJygpKissLi86Ozw9Pj9AW1xcXV9ge3x9fiIpOwotfQotYm9vbCBJc1JlcGVhdChjaGFyIGNo
KSB7IHJldHVybiBJc0luU2V0KGNoLCAiPyorIik7IH0KLWJvb2wgSXNBc2NpaVdoaXRlU3BhY2Uo
Y2hhciBjaCkgeyByZXR1cm4gSXNJblNldChjaCwgIiBcZlxuXHJcdFx2Iik7IH0KLWJvb2wgSXNB
c2NpaVdvcmRDaGFyKGNoYXIgY2gpIHsKLSAgcmV0dXJuICgnYScgPD0gY2ggJiYgY2ggPD0gJ3on
KSB8fCAoJ0EnIDw9IGNoICYmIGNoIDw9ICdaJykgfHwKLSAgICAgICgnMCcgPD0gY2ggJiYgY2gg
PD0gJzknKSB8fCBjaCA9PSAnXyc7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgIlxcYyIgaXMg
YSBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlLgotYm9vbCBJc1ZhbGlkRXNjYXBlKGNoYXIgYykg
ewotICByZXR1cm4gKElzQXNjaWlQdW5jdChjKSB8fCBJc0luU2V0KGMsICJkRGZucnNTdHZ3VyIp
KTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4gYXRvbSAoc3BlY2lmaWVkIGJ5
IGVzY2FwZWQgYW5kIHBhdHRlcm4pCi0vLyBtYXRjaGVzIGNoLiAgVGhlIHJlc3VsdCBpcyB1bmRl
ZmluZWQgaWYgdGhlIGF0b20gaXMgaW52YWxpZC4KLWJvb2wgQXRvbU1hdGNoZXNDaGFyKGJvb2wg
ZXNjYXBlZCwgY2hhciBwYXR0ZXJuX2NoYXIsIGNoYXIgY2gpIHsKLSAgaWYgKGVzY2FwZWQpIHsg
IC8vICJcXHAiIHdoZXJlIHAgaXMgcGF0dGVybl9jaGFyLgotICAgIHN3aXRjaCAocGF0dGVybl9j
aGFyKSB7Ci0gICAgICBjYXNlICdkJzogcmV0dXJuIElzQXNjaWlEaWdpdChjaCk7Ci0gICAgICBj
YXNlICdEJzogcmV0dXJuICFJc0FzY2lpRGlnaXQoY2gpOwotICAgICAgY2FzZSAnZic6IHJldHVy
biBjaCA9PSAnXGYnOwotICAgICAgY2FzZSAnbic6IHJldHVybiBjaCA9PSAnXG4nOwotICAgICAg
Y2FzZSAncic6IHJldHVybiBjaCA9PSAnXHInOwotICAgICAgY2FzZSAncyc6IHJldHVybiBJc0Fz
Y2lpV2hpdGVTcGFjZShjaCk7Ci0gICAgICBjYXNlICdTJzogcmV0dXJuICFJc0FzY2lpV2hpdGVT
cGFjZShjaCk7Ci0gICAgICBjYXNlICd0JzogcmV0dXJuIGNoID09ICdcdCc7Ci0gICAgICBjYXNl
ICd2JzogcmV0dXJuIGNoID09ICdcdic7Ci0gICAgICBjYXNlICd3JzogcmV0dXJuIElzQXNjaWlX
b3JkQ2hhcihjaCk7Ci0gICAgICBjYXNlICdXJzogcmV0dXJuICFJc0FzY2lpV29yZENoYXIoY2gp
OwotICAgIH0KLSAgICByZXR1cm4gSXNBc2NpaVB1bmN0KHBhdHRlcm5fY2hhcikgJiYgcGF0dGVy
bl9jaGFyID09IGNoOwotICB9Ci0KLSAgcmV0dXJuIChwYXR0ZXJuX2NoYXIgPT0gJy4nICYmIGNo
ICE9ICdcbicpIHx8IHBhdHRlcm5fY2hhciA9PSBjaDsKLX0KLQotLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgYnkgVmFsaWRhdGVSZWdleCgpIHRvIGZvcm1hdCBlcnJvciBtZXNzYWdlcy4KLXN0ZDo6
c3RyaW5nIEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IoY29uc3QgY2hhciogcmVnZXgsIGludCBpbmRl
eCkgewotICByZXR1cm4gKE1lc3NhZ2UoKSA8PCAiU3ludGF4IGVycm9yIGF0IGluZGV4ICIgPDwg
aW5kZXgKLSAgICAgICAgICA8PCAiIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCIiIDw8
IHJlZ2V4IDw8ICJcIjogIikuR2V0U3RyaW5nKCk7Ci19Ci0KLS8vIEdlbmVyYXRlcyBub24tZmF0
YWwgZmFpbHVyZXMgYW5kIHJldHVybnMgZmFsc2UgaWYgcmVnZXggaXMgaW52YWxpZDsKLS8vIG90
aGVyd2lzZSByZXR1cm5zIHRydWUuCi1ib29sIFZhbGlkYXRlUmVnZXgoY29uc3QgY2hhciogcmVn
ZXgpIHsKLSAgaWYgKHJlZ2V4ID09IE5VTEwpIHsKLSAgICAvLyBUT0RPKHdhbkBnb29nbGUuY29t
KTogZml4IHRoZSBzb3VyY2UgZmlsZSBsb2NhdGlvbiBpbiB0aGUKLSAgICAvLyBhc3NlcnRpb24g
ZmFpbHVyZXMgdG8gbWF0Y2ggd2hlcmUgdGhlIHJlZ2V4IGlzIHVzZWQgaW4gdXNlcgotICAgIC8v
IGNvZGUuCi0gICAgQUREX0ZBSUxVUkUoKSA8PCAiTlVMTCBpcyBub3QgYSB2YWxpZCBzaW1wbGUg
cmVndWxhciBleHByZXNzaW9uLiI7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgYm9vbCBp
c192YWxpZCA9IHRydWU7Ci0KLSAgLy8gVHJ1ZSBpZmYgPywgKiwgb3IgKyBjYW4gZm9sbG93IHRo
ZSBwcmV2aW91cyBhdG9tLgotICBib29sIHByZXZfcmVwZWF0YWJsZSA9IGZhbHNlOwotICBmb3Ig
KGludCBpID0gMDsgcmVnZXhbaV07IGkrKykgewotICAgIGlmIChyZWdleFtpXSA9PSAnXFwnKSB7
ICAvLyBBbiBlc2NhcGUgc2VxdWVuY2UKLSAgICAgIGkrKzsKLSAgICAgIGlmIChyZWdleFtpXSA9
PSAnXDAnKSB7Ci0gICAgICAgIEFERF9GQUlMVVJFKCkgPDwgRm9ybWF0UmVnZXhTeW50YXhFcnJv
cihyZWdleCwgaSAtIDEpCi0gICAgICAgICAgICAgICAgICAgICAgPDwgIidcXCcgY2Fubm90IGFw
cGVhciBhdCB0aGUgZW5kLiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAg
ICAgaWYgKCFJc1ZhbGlkRXNjYXBlKHJlZ2V4W2ldKSkgewotICAgICAgICBBRERfRkFJTFVSRSgp
IDw8IEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IocmVnZXgsIGkgLSAxKQotICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBcIlxcIiA8PCByZWdleFtpXSA8PCAi
XCIuIjsKLSAgICAgICAgaXNfdmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHByZXZfcmVw
ZWF0YWJsZSA9IHRydWU7Ci0gICAgfSBlbHNlIHsgIC8vIE5vdCBhbiBlc2NhcGUgc2VxdWVuY2Uu
Ci0gICAgICBjb25zdCBjaGFyIGNoID0gcmVnZXhbaV07Ci0KLSAgICAgIGlmIChjaCA9PSAnXicg
JiYgaSA+IDApIHsKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRheEVy
cm9yKHJlZ2V4LCBpKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICInXicgY2FuIG9ubHkgYXBw
ZWFyIGF0IHRoZSBiZWdpbm5pbmcuIjsKLSAgICAgICAgaXNfdmFsaWQgPSBmYWxzZTsKLSAgICAg
IH0gZWxzZSBpZiAoY2ggPT0gJyQnICYmIHJlZ2V4W2kgKyAxXSAhPSAnXDAnKSB7Ci0gICAgICAg
IEFERF9GQUlMVVJFKCkgPDwgRm9ybWF0UmVnZXhTeW50YXhFcnJvcihyZWdleCwgaSkKLSAgICAg
ICAgICAgICAgICAgICAgICA8PCAiJyQnIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kLiI7Ci0g
ICAgICAgIGlzX3ZhbGlkID0gZmFsc2U7Ci0gICAgICB9IGVsc2UgaWYgKElzSW5TZXQoY2gsICIo
KVtde318IikpIHsKLSAgICAgICAgQUREX0ZBSUxVUkUoKSA8PCBGb3JtYXRSZWdleFN5bnRheEVy
cm9yKHJlZ2V4LCBpKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICInIiA8PCBjaCA8PCAiJyBp
cyB1bnN1cHBvcnRlZC4iOwotICAgICAgICBpc192YWxpZCA9IGZhbHNlOwotICAgICAgfSBlbHNl
IGlmIChJc1JlcGVhdChjaCkgJiYgIXByZXZfcmVwZWF0YWJsZSkgewotICAgICAgICBBRERfRkFJ
TFVSRSgpIDw8IEZvcm1hdFJlZ2V4U3ludGF4RXJyb3IocmVnZXgsIGkpCi0gICAgICAgICAgICAg
ICAgICAgICAgPDwgIiciIDw8IGNoIDw8ICInIGNhbiBvbmx5IGZvbGxvdyBhIHJlcGVhdGFibGUg
dG9rZW4uIjsKLSAgICAgICAgaXNfdmFsaWQgPSBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgcHJl
dl9yZXBlYXRhYmxlID0gIUlzSW5TZXQoY2gsICJeJD8qKyIpOwotICAgIH0KLSAgfQotCi0gIHJl
dHVybiBpc192YWxpZDsKLX0KLQotLy8gTWF0Y2hlcyBhIHJlcGVhdGVkIHJlZ2V4IGF0b20gZm9s
bG93ZWQgYnkgYSB2YWxpZCBzaW1wbGUgcmVndWxhcgotLy8gZXhwcmVzc2lvbi4gIFRoZSByZWdl
eCBhdG9tIGlzIGRlZmluZWQgYXMgYyBpZiBlc2NhcGVkIGlzIGZhbHNlLAotLy8gb3IgXGMgb3Ro
ZXJ3aXNlLiAgcmVwZWF0IGlzIHRoZSByZXBldGl0aW9uIG1ldGEgY2hhcmFjdGVyICg/LCAqLAot
Ly8gb3IgKykuICBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIHN0ciBjb250YWlucyB0b28g
bWFueQotLy8gY2hhcmFjdGVycyB0byBiZSBpbmRleGFibGUgYnkgc2l6ZV90LCBpbiB3aGljaCBj
YXNlIHRoZSB0ZXN0IHdpbGwKLS8vIHByb2JhYmx5IHRpbWUgb3V0IGFueXdheS4gIFdlIGFyZSBm
aW5lIHdpdGggdGhpcyBsaW1pdGF0aW9uIGFzCi0vLyBzdGQ6OnN0cmluZyBoYXMgaXQgdG9vLgot
Ym9vbCBNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZCgKLSAgICBib29sIGVzY2FwZWQsIGNo
YXIgYywgY2hhciByZXBlYXQsIGNvbnN0IGNoYXIqIHJlZ2V4LAotICAgIGNvbnN0IGNoYXIqIHN0
cikgewotICBjb25zdCBzaXplX3QgbWluX2NvdW50ID0gKHJlcGVhdCA9PSAnKycpID8gMSA6IDA7
Ci0gIGNvbnN0IHNpemVfdCBtYXhfY291bnQgPSAocmVwZWF0ID09ICc/JykgPyAxIDoKLSAgICAg
IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIC0gMTsKLSAgLy8gV2UgY2Fubm90IGNhbGwgbnVtZXJp
Y19saW1pdHM6Om1heCgpIGFzIGl0IGNvbmZsaWN0cyB3aXRoIHRoZQotICAvLyBtYXgoKSBtYWNy
byBvbiBXaW5kb3dzLgotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDw9IG1heF9jb3VudDsgKytp
KSB7Ci0gICAgLy8gV2Uga25vdyB0aGF0IHRoZSBhdG9tIG1hdGNoZXMgZWFjaCBvZiB0aGUgZmly
c3QgaSBjaGFyYWN0ZXJzIGluIHN0ci4KLSAgICBpZiAoaSA+PSBtaW5fY291bnQgJiYgTWF0Y2hS
ZWdleEF0SGVhZChyZWdleCwgc3RyICsgaSkpIHsKLSAgICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1h
dGNoZXMgYXQgdGhlIGhlYWQsIGFuZCB0aGUgdGFpbCBtYXRjaGVzIHRvby4KLSAgICAgIC8vIFNp
bmNlIHdlIG9ubHkgY2FyZSBhYm91dCAqd2hldGhlciogdGhlIHBhdHRlcm4gbWF0Y2hlcyBzdHIK
LSAgICAgIC8vIChhcyBvcHBvc2VkIHRvICpob3cqIGl0IG1hdGNoZXMpLCB0aGVyZSBpcyBubyBu
ZWVkIHRvIGZpbmQgYQotICAgICAgLy8gZ3JlZWR5IG1hdGNoLgotICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIGlmIChzdHJbaV0gPT0gJ1wwJyB8fCAhQXRvbU1hdGNoZXNDaGFyKGVzY2Fw
ZWQsIGMsIHN0cltpXSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHJlZ2V4IG1hdGNoZXMgYSBwcmVmaXggb2Ygc3Ry
LiAgcmVnZXggbXVzdCBiZSBhCi0vLyB2YWxpZCBzaW1wbGUgcmVndWxhciBleHByZXNzaW9uIGFu
ZCBub3Qgc3RhcnQgd2l0aCAiXiIsIG9yIHRoZQotLy8gcmVzdWx0IGlzIHVuZGVmaW5lZC4KLWJv
b2wgTWF0Y2hSZWdleEF0SGVhZChjb25zdCBjaGFyKiByZWdleCwgY29uc3QgY2hhciogc3RyKSB7
Ci0gIGlmICgqcmVnZXggPT0gJ1wwJykgIC8vIEFuIGVtcHR5IHJlZ2V4IG1hdGNoZXMgYSBwcmVm
aXggb2YgYW55dGhpbmcuCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgLy8gIiQiIG9ubHkgbWF0Y2hl
cyB0aGUgZW5kIG9mIGEgc3RyaW5nLiAgTm90ZSB0aGF0IHJlZ2V4IGJlaW5nCi0gIC8vIHZhbGlk
IGd1YXJhbnRlZXMgdGhhdCB0aGVyZSdzIG5vdGhpbmcgYWZ0ZXIgIiQiIGluIGl0LgotICBpZiAo
KnJlZ2V4ID09ICckJykKLSAgICByZXR1cm4gKnN0ciA9PSAnXDAnOwotCi0gIC8vIElzIHRoZSBm
aXJzdCB0aGluZyBpbiByZWdleCBhbiBlc2NhcGUgc2VxdWVuY2U/Ci0gIGNvbnN0IGJvb2wgZXNj
YXBlZCA9ICpyZWdleCA9PSAnXFwnOwotICBpZiAoZXNjYXBlZCkKLSAgICArK3JlZ2V4OwotICBp
ZiAoSXNSZXBlYXQocmVnZXhbMV0pKSB7Ci0gICAgLy8gTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhB
dEhlYWQoKSBjYWxscyBNYXRjaFJlZ2V4QXRIZWFkKCksIHNvCi0gICAgLy8gaGVyZSdzIGFuIGlu
ZGlyZWN0IHJlY3Vyc2lvbi4gIEl0IHRlcm1pbmF0ZXMgYXMgdGhlIHJlZ2V4IGdldHMKLSAgICAv
LyBzaG9ydGVyIGluIGVhY2ggcmVjdXJzaW9uLgotICAgIHJldHVybiBNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZCgKLSAgICAgICAgZXNjYXBlZCwgcmVnZXhbMF0sIHJlZ2V4WzFdLCByZWdl
eCArIDIsIHN0cik7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gcmVnZXggaXNuJ3QgZW1wdHksIGlzbid0
ICIkIiwgYW5kIGRvZXNuJ3Qgc3RhcnQgd2l0aCBhCi0gICAgLy8gcmVwZXRpdGlvbi4gIFdlIG1h
dGNoIHRoZSBmaXJzdCBhdG9tIG9mIHJlZ2V4IHdpdGggdGhlIGZpcnN0Ci0gICAgLy8gY2hhcmFj
dGVyIG9mIHN0ciBhbmQgcmVjdXJzZS4KLSAgICByZXR1cm4gKCpzdHIgIT0gJ1wwJykgJiYgQXRv
bU1hdGNoZXNDaGFyKGVzY2FwZWQsICpyZWdleCwgKnN0cikgJiYKLSAgICAgICAgTWF0Y2hSZWdl
eEF0SGVhZChyZWdleCArIDEsIHN0ciArIDEpOwotICB9Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBp
ZmYgcmVnZXggbWF0Y2hlcyBhbnkgc3Vic3RyaW5nIG9mIHN0ci4gIHJlZ2V4IG11c3QgYmUKLS8v
IGEgdmFsaWQgc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiwgb3IgdGhlIHJlc3VsdCBpcyB1bmRl
ZmluZWQuCi0vLwotLy8gVGhlIGFsZ29yaXRobSBpcyByZWN1cnNpdmUsIGJ1dCB0aGUgcmVjdXJz
aW9uIGRlcHRoIGRvZXNuJ3QgZXhjZWVkCi0vLyB0aGUgcmVnZXggbGVuZ3RoLCBzbyB3ZSB3b24n
dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHJ1bm5pbmcgb3V0IG9mCi0vLyBzdGFjayBzcGFjZSBub3Jt
YWxseS4gIEluIHJhcmUgY2FzZXMgdGhlIHRpbWUgY29tcGxleGl0eSBjYW4gYmUKLS8vIGV4cG9u
ZW50aWFsIHdpdGggcmVzcGVjdCB0byB0aGUgcmVnZXggbGVuZ3RoICsgdGhlIHN0cmluZyBsZW5n
dGgsCi0vLyBidXQgdXN1YWxseSBpdCdzIG11c3QgZmFzdGVyIChvZnRlbiBjbG9zZSB0byBsaW5l
YXIpLgotYm9vbCBNYXRjaFJlZ2V4QW55d2hlcmUoY29uc3QgY2hhciogcmVnZXgsIGNvbnN0IGNo
YXIqIHN0cikgewotICBpZiAocmVnZXggPT0gTlVMTCB8fCBzdHIgPT0gTlVMTCkKLSAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgaWYgKCpyZWdleCA9PSAnXicpCi0gICAgcmV0dXJuIE1hdGNoUmVnZXhB
dEhlYWQocmVnZXggKyAxLCBzdHIpOwotCi0gIC8vIEEgc3VjY2Vzc2Z1bCBtYXRjaCBjYW4gYmUg
YW55d2hlcmUgaW4gc3RyLgotICBkbyB7Ci0gICAgaWYgKE1hdGNoUmVnZXhBdEhlYWQocmVnZXgs
IHN0cikpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfSB3aGlsZSAoKnN0cisrICE9ICdcMCcpOwot
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIEltcGxlbWVudHMgdGhlIFJFIGNsYXNzLgotCi1SRTo6
flJFKCkgewotICBmcmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KHBhdHRlcm5fKSk7Ci0gIGZyZWUoY29u
c3RfY2FzdDxjaGFyKj4oZnVsbF9wYXR0ZXJuXykpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZm
IHJlZ3VsYXIgZXhwcmVzc2lvbiByZSBtYXRjaGVzIHRoZSBlbnRpcmUgc3RyLgotYm9vbCBSRTo6
RnVsbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKSB7Ci0gIHJldHVybiByZS5p
c192YWxpZF8gJiYgTWF0Y2hSZWdleEFueXdoZXJlKHJlLmZ1bGxfcGF0dGVybl8sIHN0cik7Ci19
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgcmVndWxhciBleHByZXNzaW9uIHJlIG1hdGNoZXMgYSBz
dWJzdHJpbmcgb2Ygc3RyCi0vLyAoaW5jbHVkaW5nIHN0ciBpdHNlbGYpLgotYm9vbCBSRTo6UGFy
dGlhbE1hdGNoKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgUkUmIHJlKSB7Ci0gIHJldHVybiByZS5p
c192YWxpZF8gJiYgTWF0Y2hSZWdleEFueXdoZXJlKHJlLnBhdHRlcm5fLCBzdHIpOwotfQotCi0v
LyBJbml0aWFsaXplcyBhbiBSRSBmcm9tIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uCi12b2lk
IFJFOjpJbml0KGNvbnN0IGNoYXIqIHJlZ2V4KSB7Ci0gIHBhdHRlcm5fID0gZnVsbF9wYXR0ZXJu
XyA9IE5VTEw7Ci0gIGlmIChyZWdleCAhPSBOVUxMKSB7Ci0gICAgcGF0dGVybl8gPSBwb3NpeDo6
U3RyRHVwKHJlZ2V4KTsKLSAgfQotCi0gIGlzX3ZhbGlkXyA9IFZhbGlkYXRlUmVnZXgocmVnZXgp
OwotICBpZiAoIWlzX3ZhbGlkXykgewotICAgIC8vIE5vIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBm
dWxsIHBhdHRlcm4gd2hlbiB0aGUgcmVnZXggaXMgaW52YWxpZC4KLSAgICByZXR1cm47Ci0gIH0K
LQotICBjb25zdCBzaXplX3QgbGVuID0gc3RybGVuKHJlZ2V4KTsKLSAgLy8gUmVzZXJ2ZXMgZW5v
dWdoIGJ5dGVzIHRvIGhvbGQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGZvciBhCi0gIC8v
IGZ1bGwgbWF0Y2g6IHdlIG5lZWQgc3BhY2UgdG8gcHJlcGVuZCBhICdeJywgYXBwZW5kIGEgJyQn
LCBhbmQKLSAgLy8gdGVybWluYXRlIHRoZSBzdHJpbmcgd2l0aCAnXDAnLgotICBjaGFyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKGxlbiArIDMpKTsKLSAgZnVsbF9wYXR0ZXJu
XyA9IGJ1ZmZlcjsKLQotICBpZiAoKnJlZ2V4ICE9ICdeJykKLSAgICAqYnVmZmVyKysgPSAnXic7
ICAvLyBNYWtlcyBzdXJlIGZ1bGxfcGF0dGVybl8gc3RhcnRzIHdpdGggJ14nLgotCi0gIC8vIFdl
IGRvbid0IHVzZSBzbnByaW50ZiBvciBzdHJuY3B5LCBhcyB0aGV5IHRyaWdnZXIgYSB3YXJuaW5n
IHdoZW4KLSAgLy8gY29tcGlsZWQgd2l0aCBWQysrIDguMC4KLSAgbWVtY3B5KGJ1ZmZlciwgcmVn
ZXgsIGxlbik7Ci0gIGJ1ZmZlciArPSBsZW47Ci0KLSAgaWYgKGxlbiA9PSAwIHx8IHJlZ2V4W2xl
biAtIDFdICE9ICckJykKLSAgICAqYnVmZmVyKysgPSAnJCc7ICAvLyBNYWtlcyBzdXJlIGZ1bGxf
cGF0dGVybl8gZW5kcyB3aXRoICckJy4KLQotICAqYnVmZmVyID0gJ1wwJzsKLX0KLQotI2VuZGlm
ICAvLyBHVEVTVF9VU0VTX1BPU0lYX1JFCi0KLWNvbnN0IGNoYXIga1Vua25vd25GaWxlW10gPSAi
dW5rbm93biBmaWxlIjsKLQotLy8gRm9ybWF0cyBhIHNvdXJjZSBmaWxlIHBhdGggYW5kIGEgbGlu
ZSBudW1iZXIgYXMgdGhleSB3b3VsZCBhcHBlYXIKLS8vIGluIGFuIGVycm9yIG1lc3NhZ2UgZnJv
bSB0aGUgY29tcGlsZXIgdXNlZCB0byBjb21waWxlIHRoaXMgY29kZS4KLUdURVNUX0FQSV8gOjpz
dGQ6OnN0cmluZyBGb3JtYXRGaWxlTG9jYXRpb24oY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUp
IHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZV9uYW1lKGZpbGUgPT0gTlVMTCA/IGtVbmtub3du
RmlsZSA6IGZpbGUpOwotCi0gIGlmIChsaW5lIDwgMCkgewotICAgIHJldHVybiBmaWxlX25hbWUg
KyAiOiI7Ci0gIH0KLSNpZmRlZiBfTVNDX1ZFUgotICByZXR1cm4gZmlsZV9uYW1lICsgIigiICsg
U3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUpICsgIik6IjsKLSNlbHNlCi0gIHJldHVybiBmaWxlX25h
bWUgKyAiOiIgKyBTdHJlYW1hYmxlVG9TdHJpbmcobGluZSkgKyAiOiI7Ci0jZW5kaWYgIC8vIF9N
U0NfVkVSCi19Ci0KLS8vIEZvcm1hdHMgYSBmaWxlIGxvY2F0aW9uIGZvciBjb21waWxlci1pbmRl
cGVuZGVudCBYTUwgb3V0cHV0LgotLy8gQWx0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBub3QgcGxh
dGZvcm0gZGVwZW5kZW50LCB3ZSBwdXQgaXQgbmV4dCB0bwotLy8gRm9ybWF0RmlsZUxvY2F0aW9u
IGluIG9yZGVyIHRvIGNvbnRyYXN0IHRoZSB0d28gZnVuY3Rpb25zLgotLy8gTm90ZSB0aGF0IEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oKSBkb2VzIE5PVCBhcHBlbmQgY29s
b24KLS8vIHRvIHRoZSBmaWxlIGxvY2F0aW9uIGl0IHByb2R1Y2VzLCB1bmxpa2UgRm9ybWF0Rmls
ZUxvY2F0aW9uKCkuCi1HVEVTVF9BUElfIDo6c3RkOjpzdHJpbmcgRm9ybWF0Q29tcGlsZXJJbmRl
cGVuZGVudEZpbGVMb2NhdGlvbigKLSAgICBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewot
ICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlX25hbWUoZmlsZSA9PSBOVUxMID8ga1Vua25vd25GaWxl
IDogZmlsZSk7Ci0KLSAgaWYgKGxpbmUgPCAwKQotICAgIHJldHVybiBmaWxlX25hbWU7Ci0gIGVs
c2UKLSAgICByZXR1cm4gZmlsZV9uYW1lICsgIjoiICsgU3RyZWFtYWJsZVRvU3RyaW5nKGxpbmUp
OwotfQotCi1HVGVzdExvZzo6R1Rlc3RMb2coR1Rlc3RMb2dTZXZlcml0eSBzZXZlcml0eSwgY29u
c3QgY2hhciogZmlsZSwgaW50IGxpbmUpCi0gICAgOiBzZXZlcml0eV8oc2V2ZXJpdHkpIHsKLSAg
Y29uc3QgY2hhciogY29uc3QgbWFya2VyID0KLSAgICAgIHNldmVyaXR5ID09IEdURVNUX0lORk8g
PyAgICAiWyAgSU5GTyBdIiA6Ci0gICAgICBzZXZlcml0eSA9PSBHVEVTVF9XQVJOSU5HID8gIltX
QVJOSU5HXSIgOgotICAgICAgc2V2ZXJpdHkgPT0gR1RFU1RfRVJST1IgPyAgICJbIEVSUk9SIF0i
IDogIlsgRkFUQUwgXSI7Ci0gIEdldFN0cmVhbSgpIDw8IDo6c3RkOjplbmRsIDw8IG1hcmtlciA8
PCAiICIKLSAgICAgICAgICAgICAgPDwgRm9ybWF0RmlsZUxvY2F0aW9uKGZpbGUsIGxpbmUpLmNf
c3RyKCkgPDwgIjogIjsKLX0KLQotLy8gRmx1c2hlcyB0aGUgYnVmZmVycyBhbmQsIGlmIHNldmVy
aXR5IGlzIEdURVNUX0ZBVEFMLCBhYm9ydHMgdGhlIHByb2dyYW0uCi1HVGVzdExvZzo6fkdUZXN0
TG9nKCkgewotICBHZXRTdHJlYW0oKSA8PCA6OnN0ZDo6ZW5kbDsKLSAgaWYgKHNldmVyaXR5XyA9
PSBHVEVTVF9GQVRBTCkgewotICAgIGZmbHVzaChzdGRlcnIpOwotICAgIHBvc2l4OjpBYm9ydCgp
OwotICB9Ci19Ci0vLyBEaXNhYmxlIE1pY3Jvc29mdCBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3Ig
UE9TSVggZnVuY3Rpb25zIGNhbGxlZCBmcm9tCi0vLyB0aGlzIGNsYXNzIChjcmVhdCwgZHVwLCBk
dXAyLCBhbmQgY2xvc2UpCi1HVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QVVNIXyg0OTk2KQot
Ci0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgotCi0vLyBPYmplY3QgdGhhdCBjYXB0
dXJlcyBhbiBvdXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLWNsYXNzIENhcHR1cmVkU3Ry
ZWFtIHsKLSBwdWJsaWM6Ci0gIC8vIFRoZSBjdG9yIHJlZGlyZWN0cyB0aGUgc3RyZWFtIHRvIGEg
dGVtcG9yYXJ5IGZpbGUuCi0gIGV4cGxpY2l0IENhcHR1cmVkU3RyZWFtKGludCBmZCkgOiBmZF8o
ZmQpLCB1bmNhcHR1cmVkX2ZkXyhkdXAoZmQpKSB7Ci0jIGlmIEdURVNUX09TX1dJTkRPV1MKLSAg
ICBjaGFyIHRlbXBfZGlyX3BhdGhbTUFYX1BBVEggKyAxXSA9IHsgJ1wwJyB9OyAgLy8gTk9MSU5U
Ci0gICAgY2hhciB0ZW1wX2ZpbGVfcGF0aFtNQVhfUEFUSCArIDFdID0geyAnXDAnIH07ICAvLyBO
T0xJTlQKLQotICAgIDo6R2V0VGVtcFBhdGhBKHNpemVvZih0ZW1wX2Rpcl9wYXRoKSwgdGVtcF9k
aXJfcGF0aCk7Ci0gICAgY29uc3QgVUlOVCBzdWNjZXNzID0gOjpHZXRUZW1wRmlsZU5hbWVBKHRl
bXBfZGlyX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJndGVzdF9yZWRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsICAvLyBHZW5lcmF0ZSB1bmlxdWUgZmlsZSBuYW1lLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2ZpbGVfcGF0aCk7Ci0gICAgR1RFU1RfQ0hF
Q0tfKHN1Y2Nlc3MgIT0gMCkKLSAgICAgICAgPDwgIlVuYWJsZSB0byBjcmVhdGUgYSB0ZW1wb3Jh
cnkgZmlsZSBpbiAiIDw8IHRlbXBfZGlyX3BhdGg7Ci0gICAgY29uc3QgaW50IGNhcHR1cmVkX2Zk
ID0gY3JlYXQodGVtcF9maWxlX3BhdGgsIF9TX0lSRUFEIHwgX1NfSVdSSVRFKTsKLSAgICBHVEVT
VF9DSEVDS18oY2FwdHVyZWRfZmQgIT0gLTEpIDw8ICJVbmFibGUgdG8gb3BlbiB0ZW1wb3Jhcnkg
ZmlsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB0ZW1wX2ZpbGVf
cGF0aDsKLSAgICBmaWxlbmFtZV8gPSB0ZW1wX2ZpbGVfcGF0aDsKLSMgZWxzZQotICAgIC8vIFRo
ZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgYSB0ZXN0IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGN1
cnJlbnQKLSAgICAvLyBkaXJlY3RvcnksIHNvIHdlIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUg
aW4gdGhlIC90bXAgZGlyZWN0b3J5Ci0gICAgLy8gaW5zdGVhZC4gV2UgdXNlIC90bXAgb24gbW9z
dCBzeXN0ZW1zLCBhbmQgL3NkY2FyZCBvbiBBbmRyb2lkLgotICAgIC8vIFRoYXQncyBiZWNhdXNl
IEFuZHJvaWQgZG9lc24ndCBoYXZlIC90bXAuCi0jICBpZiBHVEVTVF9PU19MSU5VWF9BTkRST0lE
Ci0gICAgLy8gTm90ZTogQW5kcm9pZCBhcHBsaWNhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGNhbGwg
dGhlIGZyYW1ld29yaydzCi0gICAgLy8gQ29udGV4dC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3Rv
cnkoKSBtZXRob2QgdGhyb3VnaCBKTkkgdG8gZ2V0Ci0gICAgLy8gdGhlIGxvY2F0aW9uIG9mIHRo
ZSB3b3JsZC13cml0YWJsZSBTRCBDYXJkIGRpcmVjdG9yeS4gSG93ZXZlciwKLSAgICAvLyB0aGlz
IHJlcXVpcmVzIGEgQ29udGV4dCBoYW5kbGUsIHdoaWNoIGNhbm5vdCBiZSByZXRyaWV2ZWQKLSAg
ICAvLyBnbG9iYWxseSBmcm9tIG5hdGl2ZSBjb2RlLiBEb2luZyBzbyBhbHNvIHByZWNsdWRlcyBy
dW5uaW5nIHRoZQotICAgIC8vIGNvZGUgYXMgcGFydCBvZiBhIHJlZ3VsYXIgc3RhbmRhbG9uZSBl
eGVjdXRhYmxlLCB3aGljaCBkb2Vzbid0Ci0gICAgLy8gcnVuIGluIGEgRGFsdmlrIHByb2Nlc3Mg
KGUuZy4gd2hlbiBydW5uaW5nIGl0IHRocm91Z2ggJ2FkYiBzaGVsbCcpLgotICAgIC8vCi0gICAg
Ly8gVGhlIGxvY2F0aW9uIC9zZGNhcmQgaXMgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG5hdGl2
ZSBjb2RlCi0gICAgLy8gYW5kIGlzIHRoZSBvbmx5IGxvY2F0aW9uICh1bm9mZmljaWFsbHkpIHN1
cHBvcnRlZCBieSB0aGUgQW5kcm9pZAotICAgIC8vIHRlYW0uIEl0J3MgZ2VuZXJhbGx5IGEgc3lt
bGluayB0byB0aGUgcmVhbCBTRCBDYXJkIG1vdW50IHBvaW50Ci0gICAgLy8gd2hpY2ggY2FuIGJl
IC9tbnQvc2RjYXJkLCAvbW50L3NkY2FyZDAsIC9zeXN0ZW0vbWVkaWEvc2RjYXJkLCBvcgotICAg
IC8vIG90aGVyIE9FTS1jdXN0b21pemVkIGxvY2F0aW9ucy4gTmV2ZXIgcmVseSBvbiB0aGVzZSwg
YW5kIGFsd2F5cwotICAgIC8vIHVzZSAvc2RjYXJkLgotICAgIGNoYXIgbmFtZV90ZW1wbGF0ZVtd
ID0gIi9zZGNhcmQvZ3Rlc3RfY2FwdHVyZWRfc3RyZWFtLlhYWFhYWCI7Ci0jICBlbHNlCi0gICAg
Y2hhciBuYW1lX3RlbXBsYXRlW10gPSAiL3RtcC9jYXB0dXJlZF9zdHJlYW0uWFhYWFhYIjsKLSMg
IGVuZGlmICAvLyBHVEVTVF9PU19MSU5VWF9BTkRST0lECi0gICAgY29uc3QgaW50IGNhcHR1cmVk
X2ZkID0gbWtzdGVtcChuYW1lX3RlbXBsYXRlKTsKLSAgICBmaWxlbmFtZV8gPSBuYW1lX3RlbXBs
YXRlOwotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotICAgIGZmbHVzaChOVUxMKTsKLSAg
ICBkdXAyKGNhcHR1cmVkX2ZkLCBmZF8pOwotICAgIGNsb3NlKGNhcHR1cmVkX2ZkKTsKLSAgfQot
Ci0gIH5DYXB0dXJlZFN0cmVhbSgpIHsKLSAgICByZW1vdmUoZmlsZW5hbWVfLmNfc3RyKCkpOwot
ICB9Ci0KLSAgc3RkOjpzdHJpbmcgR2V0Q2FwdHVyZWRTdHJpbmcoKSB7Ci0gICAgaWYgKHVuY2Fw
dHVyZWRfZmRfICE9IC0xKSB7Ci0gICAgICAvLyBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgc3RyZWFt
LgotICAgICAgZmZsdXNoKE5VTEwpOwotICAgICAgZHVwMih1bmNhcHR1cmVkX2ZkXywgZmRfKTsK
LSAgICAgIGNsb3NlKHVuY2FwdHVyZWRfZmRfKTsKLSAgICAgIHVuY2FwdHVyZWRfZmRfID0gLTE7
Ci0gICAgfQotCi0gICAgRklMRSogY29uc3QgZmlsZSA9IHBvc2l4OjpGT3BlbihmaWxlbmFtZV8u
Y19zdHIoKSwgInIiKTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBjb250ZW50ID0gUmVhZEVudGly
ZUZpbGUoZmlsZSk7Ci0gICAgcG9zaXg6OkZDbG9zZShmaWxlKTsKLSAgICByZXR1cm4gY29udGVu
dDsKLSAgfQotCi0gcHJpdmF0ZToKLSAgY29uc3QgaW50IGZkXzsgIC8vIEEgc3RyZWFtIHRvIGNh
cHR1cmUuCi0gIGludCB1bmNhcHR1cmVkX2ZkXzsKLSAgLy8gTmFtZSBvZiB0aGUgdGVtcG9yYXJ5
IGZpbGUgaG9sZGluZyB0aGUgc3RkZXJyIG91dHB1dC4KLSAgOjpzdGQ6OnN0cmluZyBmaWxlbmFt
ZV87Ci0KLSAgR1RFU1RfRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOXyhDYXB0dXJlZFN0cmVhbSk7
Ci19OwotCi1HVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLQotc3RhdGljIENhcHR1
cmVkU3RyZWFtKiBnX2NhcHR1cmVkX3N0ZGVyciA9IE5VTEw7Ci1zdGF0aWMgQ2FwdHVyZWRTdHJl
YW0qIGdfY2FwdHVyZWRfc3Rkb3V0ID0gTlVMTDsKLQotLy8gU3RhcnRzIGNhcHR1cmluZyBhbiBv
dXRwdXQgc3RyZWFtIChzdGRvdXQvc3RkZXJyKS4KLXZvaWQgQ2FwdHVyZVN0cmVhbShpbnQgZmQs
IGNvbnN0IGNoYXIqIHN0cmVhbV9uYW1lLCBDYXB0dXJlZFN0cmVhbSoqIHN0cmVhbSkgewotICBp
ZiAoKnN0cmVhbSAhPSBOVUxMKSB7Ci0gICAgR1RFU1RfTE9HXyhGQVRBTCkgPDwgIk9ubHkgb25l
ICIgPDwgc3RyZWFtX25hbWUKLSAgICAgICAgICAgICAgICAgICAgICA8PCAiIGNhcHR1cmVyIGNh
biBleGlzdCBhdCBhIHRpbWUuIjsKLSAgfQotICAqc3RyZWFtID0gbmV3IENhcHR1cmVkU3RyZWFt
KGZkKTsKLX0KLQotLy8gU3RvcHMgY2FwdHVyaW5nIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCByZXR1
cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1zdGQ6OnN0cmluZyBHZXRDYXB0dXJlZFN0cmVhbShD
YXB0dXJlZFN0cmVhbSoqIGNhcHR1cmVkX3N0cmVhbSkgewotICBjb25zdCBzdGQ6OnN0cmluZyBj
b250ZW50ID0gKCpjYXB0dXJlZF9zdHJlYW0pLT5HZXRDYXB0dXJlZFN0cmluZygpOwotCi0gIGRl
bGV0ZSAqY2FwdHVyZWRfc3RyZWFtOwotICAqY2FwdHVyZWRfc3RyZWFtID0gTlVMTDsKLQotICBy
ZXR1cm4gY29udGVudDsKLX0KLQotLy8gU3RhcnRzIGNhcHR1cmluZyBzdGRvdXQuCi12b2lkIENh
cHR1cmVTdGRvdXQoKSB7Ci0gIENhcHR1cmVTdHJlYW0oa1N0ZE91dEZpbGVubywgInN0ZG91dCIs
ICZnX2NhcHR1cmVkX3N0ZG91dCk7Ci19Ci0KLS8vIFN0YXJ0cyBjYXB0dXJpbmcgc3RkZXJyLgot
dm9pZCBDYXB0dXJlU3RkZXJyKCkgewotICBDYXB0dXJlU3RyZWFtKGtTdGRFcnJGaWxlbm8sICJz
dGRlcnIiLCAmZ19jYXB0dXJlZF9zdGRlcnIpOwotfQotCi0vLyBTdG9wcyBjYXB0dXJpbmcgc3Rk
b3V0IGFuZCByZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcuCi1zdGQ6OnN0cmluZyBHZXRDYXB0
dXJlZFN0ZG91dCgpIHsKLSAgcmV0dXJuIEdldENhcHR1cmVkU3RyZWFtKCZnX2NhcHR1cmVkX3N0
ZG91dCk7Ci19Ci0KLS8vIFN0b3BzIGNhcHR1cmluZyBzdGRlcnIgYW5kIHJldHVybnMgdGhlIGNh
cHR1cmVkIHN0cmluZy4KLXN0ZDo6c3RyaW5nIEdldENhcHR1cmVkU3RkZXJyKCkgewotICByZXR1
cm4gR2V0Q2FwdHVyZWRTdHJlYW0oJmdfY2FwdHVyZWRfc3RkZXJyKTsKLX0KLQotI2VuZGlmICAv
LyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0KLXNpemVfdCBHZXRGaWxlU2l6ZShGSUxF
KiBmaWxlKSB7Ci0gIGZzZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsKLSAgcmV0dXJuIHN0YXRpY19j
YXN0PHNpemVfdD4oZnRlbGwoZmlsZSkpOwotfQotCi1zdGQ6OnN0cmluZyBSZWFkRW50aXJlRmls
ZShGSUxFKiBmaWxlKSB7Ci0gIGNvbnN0IHNpemVfdCBmaWxlX3NpemUgPSBHZXRGaWxlU2l6ZShm
aWxlKTsKLSAgY2hhciogY29uc3QgYnVmZmVyID0gbmV3IGNoYXJbZmlsZV9zaXplXTsKLQotICBz
aXplX3QgYnl0ZXNfbGFzdF9yZWFkID0gMDsgIC8vICMgb2YgYnl0ZXMgcmVhZCBpbiB0aGUgbGFz
dCBmcmVhZCgpCi0gIHNpemVfdCBieXRlc19yZWFkID0gMDsgICAgICAgLy8gIyBvZiBieXRlcyBy
ZWFkIHNvIGZhcgotCi0gIGZzZWVrKGZpbGUsIDAsIFNFRUtfU0VUKTsKLQotICAvLyBLZWVwcyBy
ZWFkaW5nIHRoZSBmaWxlIHVudGlsIHdlIGNhbm5vdCByZWFkIGZ1cnRoZXIgb3IgdGhlCi0gIC8v
IHByZS1kZXRlcm1pbmVkIGZpbGUgc2l6ZSBpcyByZWFjaGVkLgotICBkbyB7Ci0gICAgYnl0ZXNf
bGFzdF9yZWFkID0gZnJlYWQoYnVmZmVyK2J5dGVzX3JlYWQsIDEsIGZpbGVfc2l6ZS1ieXRlc19y
ZWFkLCBmaWxlKTsKLSAgICBieXRlc19yZWFkICs9IGJ5dGVzX2xhc3RfcmVhZDsKLSAgfSB3aGls
ZSAoYnl0ZXNfbGFzdF9yZWFkID4gMCAmJiBieXRlc19yZWFkIDwgZmlsZV9zaXplKTsKLQotICBj
b25zdCBzdGQ6OnN0cmluZyBjb250ZW50KGJ1ZmZlciwgYnl0ZXNfcmVhZCk7Ci0gIGRlbGV0ZVtd
IGJ1ZmZlcjsKLQotICByZXR1cm4gY29udGVudDsKLX0KLQotI2lmIEdURVNUX0hBU19ERUFUSF9U
RVNUCi0KLXN0YXRpYyBjb25zdCA6OnN0ZDo6dmVjdG9yPHRlc3Rpbmc6OmludGVybmFsOjpzdHJp
bmc+KiBnX2luamVjdGVkX3Rlc3RfYXJndnMgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEw7ICAvLyBPd25lZC4KLQotdm9pZCBTZXRJbmplY3RhYmxlQXJndnMo
Y29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiogYXJndnMpIHsK
LSAgaWYgKGdfaW5qZWN0ZWRfdGVzdF9hcmd2cyAhPSBhcmd2cykKLSAgICBkZWxldGUgZ19pbmpl
Y3RlZF90ZXN0X2FyZ3ZzOwotICBnX2luamVjdGVkX3Rlc3RfYXJndnMgPSBhcmd2czsKLX0KLQot
Y29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0SW5qZWN0
YWJsZUFyZ3ZzKCkgewotICBpZiAoZ19pbmplY3RlZF90ZXN0X2FyZ3ZzICE9IE5VTEwpIHsKLSAg
ICByZXR1cm4gKmdfaW5qZWN0ZWRfdGVzdF9hcmd2czsKLSAgfQotICByZXR1cm4gR2V0QXJndnMo
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotI2lmIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi1uYW1lc3BhY2UgcG9zaXggewotdm9pZCBBYm9ydCgpIHsKLSAgRGVidWdC
cmVhaygpOwotICBUZXJtaW5hdGVQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksIDEpOwotfQot
fSAgLy8gbmFtZXNwYWNlIHBvc2l4Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxF
Ci0KLS8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNvcnJl
c3BvbmRpbmcgdG8gdGhlCi0vLyBnaXZlbiBmbGFnLiAgRm9yIGV4YW1wbGUsIEZsYWdUb0VudlZh
cigiZm9vIikgd2lsbCByZXR1cm4KLS8vICJHVEVTVF9GT08iIGluIHRoZSBvcGVuLXNvdXJjZSB2
ZXJzaW9uLgotc3RhdGljIHN0ZDo6c3RyaW5nIEZsYWdUb0VudlZhcihjb25zdCBjaGFyKiBmbGFn
KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZ1bGxfZmxhZyA9Ci0gICAgICAoTWVzc2FnZSgpIDw8
IEdURVNUX0ZMQUdfUFJFRklYXyA8PCBmbGFnKS5HZXRTdHJpbmcoKTsKLQotICBNZXNzYWdlIGVu
dl92YXI7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGZ1bGxfZmxhZy5sZW5ndGgoKTsgaSsr
KSB7Ci0gICAgZW52X3ZhciA8PCBUb1VwcGVyKGZ1bGxfZmxhZy5jX3N0cigpW2ldKTsKLSAgfQot
Ci0gIHJldHVybiBlbnZfdmFyLkdldFN0cmluZygpOwotfQotCi0vLyBQYXJzZXMgJ3N0cicgZm9y
IGEgMzItYml0IHNpZ25lZCBpbnRlZ2VyLiAgSWYgc3VjY2Vzc2Z1bCwgd3JpdGVzCi0vLyB0aGUg
cmVzdWx0IHRvICp2YWx1ZSBhbmQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgbGVhdmVzICp2YWx1
ZQotLy8gdW5jaGFuZ2VkIGFuZCByZXR1cm5zIGZhbHNlLgotYm9vbCBQYXJzZUludDMyKGNvbnN0
IE1lc3NhZ2UmIHNyY190ZXh0LCBjb25zdCBjaGFyKiBzdHIsIEludDMyKiB2YWx1ZSkgewotICAv
LyBQYXJzZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGFzIGEgZGVjaW1hbCBpbnRlZ2VyLgot
ICBjaGFyKiBlbmQgPSBOVUxMOwotICBjb25zdCBsb25nIGxvbmdfdmFsdWUgPSBzdHJ0b2woc3Ry
LCAmZW5kLCAxMCk7ICAvLyBOT0xJTlQKLQotICAvLyBIYXMgc3RydG9sKCkgY29uc3VtZWQgYWxs
IGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZz8KLSAgaWYgKCplbmQgIT0gJ1wwJykgewotICAgIC8v
IE5vIC0gYW4gaW52YWxpZCBjaGFyYWN0ZXIgd2FzIGVuY291bnRlcmVkLgotICAgIE1lc3NhZ2Ug
bXNnOwotICAgIG1zZyA8PCAiV0FSTklORzogIiA8PCBzcmNfdGV4dAotICAgICAgICA8PCAiIGlz
IGV4cGVjdGVkIHRvIGJlIGEgMzItYml0IGludGVnZXIsIGJ1dCBhY3R1YWxseSIKLSAgICAgICAg
PDwgIiBoYXMgdmFsdWUgXCIiIDw8IHN0ciA8PCAiXCIuXG4iOwotICAgIHByaW50ZigiJXMiLCBt
c2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0KLSAgLy8gSXMgdGhlIHBhcnNlZCB2YWx1ZSBpbiB0aGUgcmFuZ2Ugb2Yg
YW4gSW50MzI/Ci0gIGNvbnN0IEludDMyIHJlc3VsdCA9IHN0YXRpY19jYXN0PEludDMyPihsb25n
X3ZhbHVlKTsKLSAgaWYgKGxvbmdfdmFsdWUgPT0gTE9OR19NQVggfHwgbG9uZ192YWx1ZSA9PSBM
T05HX01JTiB8fAotICAgICAgLy8gVGhlIHBhcnNlZCB2YWx1ZSBvdmVyZmxvd3MgYXMgYSBsb25n
LiAgKHN0cnRvbCgpIHJldHVybnMKLSAgICAgIC8vIExPTkdfTUFYIG9yIExPTkdfTUlOIHdoZW4g
dGhlIGlucHV0IG92ZXJmbG93cy4pCi0gICAgICByZXN1bHQgIT0gbG9uZ192YWx1ZQotICAgICAg
Ly8gVGhlIHBhcnNlZCB2YWx1ZSBvdmVyZmxvd3MgYXMgYW4gSW50MzIuCi0gICAgICApIHsKLSAg
ICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgIldBUk5JTkc6ICIgPDwgc3JjX3RleHQKLSAgICAg
ICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBhIDMyLWJpdCBpbnRlZ2VyLCBidXQgYWN0dWFsbHki
Ci0gICAgICAgIDw8ICIgaGFzIHZhbHVlICIgPDwgc3RyIDw8ICIsIHdoaWNoIG92ZXJmbG93cy5c
biI7Ci0gICAgcHJpbnRmKCIlcyIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1
c2goc3Rkb3V0KTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAqdmFsdWUgPSByZXN1bHQ7
Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBSZWFkcyBhbmQgcmV0dXJucyB0aGUgQm9vbGVhbiBl
bnZpcm9ubWVudCB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvCi0vLyB0aGUgZ2l2ZW4gZmxhZzsg
aWYgaXQncyBub3Qgc2V0LCByZXR1cm5zIGRlZmF1bHRfdmFsdWUuCi0vLwotLy8gVGhlIHZhbHVl
IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZmYgaXQncyBub3QgIjAiLgotYm9vbCBCb29sRnJvbUdUZXN0
RW52KGNvbnN0IGNoYXIqIGZsYWcsIGJvb2wgZGVmYXVsdF92YWx1ZSkgewotI2lmIGRlZmluZWQo
R1RFU1RfR0VUX0JPT0xfRlJPTV9FTlZfKQotICByZXR1cm4gR1RFU1RfR0VUX0JPT0xfRlJPTV9F
TlZfKGZsYWcsIGRlZmF1bHRfdmFsdWUpOwotI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9C
T09MX0ZST01fRU5WXykKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZW52X3ZhciA9IEZsYWdUb0VudlZh
cihmbGFnKTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nX3ZhbHVlID0gcG9zaXg6OkdldEVu
dihlbnZfdmFyLmNfc3RyKCkpOwotICByZXR1cm4gc3RyaW5nX3ZhbHVlID09IE5VTEwgPwotICAg
ICAgZGVmYXVsdF92YWx1ZSA6IHN0cmNtcChzdHJpbmdfdmFsdWUsICIwIikgIT0gMDsKLX0KLQot
Ly8gUmVhZHMgYW5kIHJldHVybnMgYSAzMi1iaXQgaW50ZWdlciBzdG9yZWQgaW4gdGhlIGVudmly
b25tZW50Ci0vLyB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBmbGFnOyBpZiBp
dCBpc24ndCBzZXQgb3IKLS8vIGRvZXNuJ3QgcmVwcmVzZW50IGEgdmFsaWQgMzItYml0IGludGVn
ZXIsIHJldHVybnMgZGVmYXVsdF92YWx1ZS4KLUludDMyIEludDMyRnJvbUdUZXN0RW52KGNvbnN0
IGNoYXIqIGZsYWcsIEludDMyIGRlZmF1bHRfdmFsdWUpIHsKLSNpZiBkZWZpbmVkKEdURVNUX0dF
VF9JTlQzMl9GUk9NX0VOVl8pCi0gIHJldHVybiBHVEVTVF9HRVRfSU5UMzJfRlJPTV9FTlZfKGZs
YWcsIGRlZmF1bHRfdmFsdWUpOwotI2VuZGlmICAvLyBkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9G
Uk9NX0VOVl8pCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9FbnZWYXIoZmxh
Zyk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ192YWx1ZSA9IHBvc2l4OjpHZXRFbnYoZW52
X3Zhci5jX3N0cigpKTsKLSAgaWYgKHN0cmluZ192YWx1ZSA9PSBOVUxMKSB7Ci0gICAgLy8gVGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQuCi0gICAgcmV0dXJuIGRlZmF1bHRfdmFs
dWU7Ci0gIH0KLQotICBJbnQzMiByZXN1bHQgPSBkZWZhdWx0X3ZhbHVlOwotICBpZiAoIVBhcnNl
SW50MzIoTWVzc2FnZSgpIDw8ICJFbnZpcm9ubWVudCB2YXJpYWJsZSAiIDw8IGVudl92YXIsCi0g
ICAgICAgICAgICAgICAgICBzdHJpbmdfdmFsdWUsICZyZXN1bHQpKSB7Ci0gICAgcHJpbnRmKCJU
aGUgZGVmYXVsdCB2YWx1ZSAlcyBpcyB1c2VkLlxuIiwKLSAgICAgICAgICAgKE1lc3NhZ2UoKSA8
PCBkZWZhdWx0X3ZhbHVlKS5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0
KTsKLSAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19
Ci0KLS8vIFJlYWRzIGFuZCByZXR1cm5zIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUg
Y29ycmVzcG9uZGluZyB0bwotLy8gdGhlIGdpdmVuIGZsYWc7IGlmIGl0J3Mgbm90IHNldCwgcmV0
dXJucyBkZWZhdWx0X3ZhbHVlLgotc3RkOjpzdHJpbmcgU3RyaW5nRnJvbUdUZXN0RW52KGNvbnN0
IGNoYXIqIGZsYWcsIGNvbnN0IGNoYXIqIGRlZmF1bHRfdmFsdWUpIHsKLSNpZiBkZWZpbmVkKEdU
RVNUX0dFVF9TVFJJTkdfRlJPTV9FTlZfKQotICByZXR1cm4gR1RFU1RfR0VUX1NUUklOR19GUk9N
X0VOVl8oZmxhZywgZGVmYXVsdF92YWx1ZSk7Ci0jZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfR0VU
X1NUUklOR19GUk9NX0VOVl8pCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGVudl92YXIgPSBGbGFnVG9F
bnZWYXIoZmxhZyk7Ci0gIGNvbnN0IGNoYXIqIHZhbHVlID0gcG9zaXg6OkdldEVudihlbnZfdmFy
LmNfc3RyKCkpOwotICBpZiAodmFsdWUgIT0gTlVMTCkgewotICAgIHJldHVybiB2YWx1ZTsKLSAg
fQotCi0gIC8vIEFzIGEgc3BlY2lhbCBjYXNlIGZvciB0aGUgJ291dHB1dCcgZmxhZywgaWYgR1RF
U1RfT1VUUFVUIGlzIG5vdAotICAvLyBzZXQsIHdlIGxvb2sgZm9yIFhNTF9PVVRQVVRfRklMRSwg
d2hpY2ggaXMgc2V0IGJ5IHRoZSBCYXplbCBidWlsZAotICAvLyBzeXN0ZW0uICBUaGUgdmFsdWUg
b2YgWE1MX09VVFBVVF9GSUxFIGlzIGEgZmlsZW5hbWUgd2l0aG91dCB0aGUKLSAgLy8gInhtbDoi
IHByZWZpeCBvZiBHVEVTVF9PVVRQVVQuCi0gIC8vCi0gIC8vIFRoZSBuZXQgcHJpb3JpdHkgb3Jk
ZXIgYWZ0ZXIgZmxhZyBwcm9jZXNzaW5nIGlzIHRodXM6Ci0gIC8vICAgLS1ndGVzdF9vdXRwdXQg
Y29tbWFuZCBsaW5lIGZsYWcKLSAgLy8gICBHVEVTVF9PVVRQVVQgZW52aXJvbm1lbnQgdmFyaWFi
bGUKLSAgLy8gICBYTUxfT1VUUFVUX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgLy8gICAn
ZGVmYXVsdF92YWx1ZScKLSAgaWYgKHN0cmNtcChmbGFnLCAib3V0cHV0IikgPT0gMCkgewotICAg
IHZhbHVlID0gcG9zaXg6OkdldEVudigiWE1MX09VVFBVVF9GSUxFIik7Ci0gICAgaWYgKHZhbHVl
ICE9IE5VTEwpIHsKLSAgICAgIHJldHVybiBzdGQ6OnN0cmluZygieG1sOiIpICsgdmFsdWU7Ci0g
ICAgfQotICB9Ci0gIHJldHVybiBkZWZhdWx0X3ZhbHVlOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
aW50ZXJuYWwKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC9zcmMvZ3Rlc3QtcHJpbnRlcnMuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtcHJpbnRlcnMu
Y2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZGY0MTJmOGEyMC4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC1wcmludGVycy5jYworKysgL2Rldi9udWxs
CkBAIC0xLDM3MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0v
LyBHb29nbGUgVGVzdCAtIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrCi0vLwotLy8g
VGhpcyBmaWxlIGltcGxlbWVudHMgYSB1bml2ZXJzYWwgdmFsdWUgcHJpbnRlciB0aGF0IGNhbiBw
cmludCBhCi0vLyB2YWx1ZSBvZiBhbnkgdHlwZSBUOgotLy8KLS8vICAgdm9pZCA6OnRlc3Rpbmc6
OmludGVybmFsOjpVbml2ZXJzYWxQcmludGVyPFQ+OjpQcmludCh2YWx1ZSwgb3N0cmVhbV9wdHIp
OwotLy8KLS8vIEl0IHVzZXMgdGhlIDw8IG9wZXJhdG9yIHdoZW4gcG9zc2libGUsIGFuZCBwcmlu
dHMgdGhlIGJ5dGVzIGluIHRoZQotLy8gb2JqZWN0IG90aGVyd2lzZS4gIEEgdXNlciBjYW4gb3Zl
cnJpZGUgaXRzIGJlaGF2aW9yIGZvciBhIGNsYXNzCi0vLyB0eXBlIEZvbyBieSBkZWZpbmluZyBl
aXRoZXIgb3BlcmF0b3I8PCg6OnN0ZDo6b3N0cmVhbSYsIGNvbnN0IEZvbyYpCi0vLyBvciB2b2lk
IFByaW50VG8oY29uc3QgRm9vJiwgOjpzdGQ6Om9zdHJlYW0qKSBpbiB0aGUgbmFtZXNwYWNlIHRo
YXQKLS8vIGRlZmluZXMgRm9vLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIK
LSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8Y3djaGFy
PgotI2luY2x1ZGUgPG9zdHJlYW0+ICAvLyBOT0xJTlQKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5j
bHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtcG9ydC5oIgotCi1uYW1lc3BhY2UgdGVzdGluZyB7
Ci0KLW5hbWVzcGFjZSB7Ci0KLXVzaW5nIDo6c3RkOjpvc3RyZWFtOwotCi0vLyBQcmludHMgYSBz
ZWdtZW50IG9mIGJ5dGVzIGluIHRoZSBnaXZlbiBvYmplY3QuCi1HVEVTVF9BVFRSSUJVVEVfTk9f
U0FOSVRJWkVfTUVNT1JZXwotR1RFU1RfQVRUUklCVVRFX05PX1NBTklUSVpFX0FERFJFU1NfCi1H
VEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfVEhSRUFEXwotdm9pZCBQcmludEJ5dGVTZWdtZW50
SW5PYmplY3RUbyhjb25zdCB1bnNpZ25lZCBjaGFyKiBvYmpfYnl0ZXMsIHNpemVfdCBzdGFydCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LCBvc3RyZWFtKiBv
cykgewotICBjaGFyIHRleHRbNV0gPSAiIjsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY291
bnQ7IGkrKykgewotICAgIGNvbnN0IHNpemVfdCBqID0gc3RhcnQgKyBpOwotICAgIGlmIChpICE9
IDApIHsKLSAgICAgIC8vIE9yZ2FuaXplcyB0aGUgYnl0ZXMgaW50byBncm91cHMgb2YgMiBmb3Ig
ZWFzeSBwYXJzaW5nIGJ5Ci0gICAgICAvLyBodW1hbi4KLSAgICAgIGlmICgoaiAlIDIpID09IDAp
Ci0gICAgICAgICpvcyA8PCAnICc7Ci0gICAgICBlbHNlCi0gICAgICAgICpvcyA8PCAnLSc7Ci0g
ICAgfQotICAgIEdURVNUX1NOUFJJTlRGXyh0ZXh0LCBzaXplb2YodGV4dCksICIlMDJYIiwgb2Jq
X2J5dGVzW2pdKTsKLSAgICAqb3MgPDwgdGV4dDsKLSAgfQotfQotCi0vLyBQcmludHMgdGhlIGJ5
dGVzIGluIHRoZSBnaXZlbiB2YWx1ZSB0byB0aGUgZ2l2ZW4gb3N0cmVhbS4KLXZvaWQgUHJpbnRC
eXRlc0luT2JqZWN0VG9JbXBsKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3N0cmVhbSogb3MpIHsKLSAg
Ly8gVGVsbHMgdGhlIHVzZXIgaG93IGJpZyB0aGUgb2JqZWN0IGlzLgotICAqb3MgPDwgY291bnQg
PDwgIi1ieXRlIG9iamVjdCA8IjsKLQotICBjb25zdCBzaXplX3Qga1RocmVzaG9sZCA9IDEzMjsK
LSAgY29uc3Qgc2l6ZV90IGtDaHVua1NpemUgPSA2NDsKLSAgLy8gSWYgdGhlIG9iamVjdCBzaXpl
IGlzIGJpZ2dlciB0aGFuIGtUaHJlc2hvbGQsIHdlJ2xsIGhhdmUgdG8gb21pdAotICAvLyBzb21l
IGRldGFpbHMgYnkgcHJpbnRpbmcgb25seSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGtDaHVua1Np
emUKLSAgLy8gYnl0ZXMuCi0gIC8vIFRPRE8od2FuKTogbGV0IHRoZSB1c2VyIGNvbnRyb2wgdGhl
IHRocmVzaG9sZCB1c2luZyBhIGZsYWcuCi0gIGlmIChjb3VudCA8IGtUaHJlc2hvbGQpIHsKLSAg
ICBQcmludEJ5dGVTZWdtZW50SW5PYmplY3RUbyhvYmpfYnl0ZXMsIDAsIGNvdW50LCBvcyk7Ci0g
IH0gZWxzZSB7Ci0gICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2JqX2J5dGVzLCAwLCBr
Q2h1bmtTaXplLCBvcyk7Ci0gICAgKm9zIDw8ICIgLi4uICI7Ci0gICAgLy8gUm91bmRzIHVwIHRv
IDItYnl0ZSBib3VuZGFyeS4KLSAgICBjb25zdCBzaXplX3QgcmVzdW1lX3BvcyA9IChjb3VudCAt
IGtDaHVua1NpemUgKyAxKS8yKjI7Ci0gICAgUHJpbnRCeXRlU2VnbWVudEluT2JqZWN0VG8ob2Jq
X2J5dGVzLCByZXN1bWVfcG9zLCBjb3VudCAtIHJlc3VtZV9wb3MsIG9zKTsKLSAgfQotICAqb3Mg
PDwgIj4iOwotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIGludGVybmFsMiB7Ci0K
LS8vIERlbGVnYXRlcyB0byBQcmludEJ5dGVzSW5PYmplY3RUb0ltcGwoKSB0byBwcmludCB0aGUg
Ynl0ZXMgaW4gdGhlCi0vLyBnaXZlbiBvYmplY3QuICBUaGUgZGVsZWdhdGlvbiBzaW1wbGlmaWVz
IHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2gKLS8vIHVzZXMgdGhlIDw8IG9wZXJhdG9yIGFuZCB0
aHVzIGlzIGVhc2llciBkb25lIG91dHNpZGUgb2YgdGhlCi0vLyA6OnRlc3Rpbmc6OmludGVybmFs
IG5hbWVzcGFjZSwgd2hpY2ggY29udGFpbnMgYSA8PCBvcGVyYXRvciB0aGF0Ci0vLyBzb21ldGlt
ZXMgY29uZmxpY3RzIHdpdGggdGhlIG9uZSBpbiBTVEwuCi12b2lkIFByaW50Qnl0ZXNJbk9iamVj
dFRvKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9ial9ieXRlcywgc2l6ZV90IGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBvc3RyZWFtKiBvcykgewotICBQcmludEJ5dGVzSW5PYmplY3RU
b0ltcGwob2JqX2J5dGVzLCBjb3VudCwgb3MpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJu
YWwyCi0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIERlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgYSBjaGFyIChvciB3Y2hhcl90KSwgd2UgcHJpbnQgaXQgaW4gb25lCi0vLyBvZiB0aHJlZSBm
b3JtYXRzOgotLy8gICAtIGFzIGlzIGlmIGl0J3MgYSBwcmludGFibGUgQVNDSUkgKGUuZy4gJ2En
LCAnMicsICcgJyksCi0vLyAgIC0gYXMgYSBoZXhpZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UgKGUu
Zy4gJ1x4N0YnKSwgb3IKLS8vICAgLSBhcyBhIHNwZWNpYWwgZXNjYXBlIHNlcXVlbmNlIChlLmcu
ICdccicsICdcbicpLgotZW51bSBDaGFyRm9ybWF0IHsKLSAga0FzSXMsCi0gIGtIZXhFc2NhcGUs
Ci0gIGtTcGVjaWFsRXNjYXBlCi19OwotCi0vLyBSZXR1cm5zIHRydWUgaWYgYyBpcyBhIHByaW50
YWJsZSBBU0NJSSBjaGFyYWN0ZXIuICBXZSB0ZXN0IHRoZQotLy8gdmFsdWUgb2YgYyBkaXJlY3Rs
eSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXNwcmludCgpLCB3aGljaCBpcyBidWdneSBvbgotLy8gV2lu
ZG93cyBNb2JpbGUuCi1pbmxpbmUgYm9vbCBJc1ByaW50YWJsZUFzY2lpKHdjaGFyX3QgYykgewot
ICByZXR1cm4gMHgyMCA8PSBjICYmIGMgPD0gMHg3RTsKLX0KLQotLy8gUHJpbnRzIGEgd2lkZSBv
ciBuYXJyb3cgY2hhciBjIGFzIGEgY2hhcmFjdGVyIGxpdGVyYWwgd2l0aG91dCB0aGUKLS8vIHF1
b3RlcywgZXNjYXBpbmcgaXQgd2hlbiBuZWNlc3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1h
dHRlZC4KLS8vIFRoZSB0ZW1wbGF0ZSBhcmd1bWVudCBVbnNpZ25lZENoYXIgaXMgdGhlIHVuc2ln
bmVkIHZlcnNpb24gb2YgQ2hhciwKLS8vIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGMuCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVW5zaWduZWRDaGFyLCB0eXBlbmFtZSBDaGFyPgotc3RhdGljIENoYXJGb3Jt
YXQgUHJpbnRBc0NoYXJMaXRlcmFsVG8oQ2hhciBjLCBvc3RyZWFtKiBvcykgewotICBzd2l0Y2gg
KHN0YXRpY19jYXN0PHdjaGFyX3Q+KGMpKSB7Ci0gICAgY2FzZSBMJ1wwJzoKLSAgICAgICpvcyA8
PCAiXFwwIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdcJyc6Ci0gICAgICAqb3MgPDwgIlxc
JyI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEwnXFwnOgotICAgICAgKm9zIDw8ICJcXFxcIjsK
LSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdcYSc6Ci0gICAgICAqb3MgPDwgIlxcYSI7Ci0gICAg
ICBicmVhazsKLSAgICBjYXNlIEwnXGInOgotICAgICAgKm9zIDw8ICJcXGIiOwotICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMJ1xmJzoKLSAgICAgICpvcyA8PCAiXFxmIjsKLSAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTCdcbic6Ci0gICAgICAqb3MgPDwgIlxcbiI7Ci0gICAgICBicmVhazsKLSAgICBj
YXNlIEwnXHInOgotICAgICAgKm9zIDw8ICJcXHIiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBM
J1x0JzoKLSAgICAgICpvcyA8PCAiXFx0IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTCdcdic6
Ci0gICAgICAqb3MgPDwgIlxcdiI7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
aWYgKElzUHJpbnRhYmxlQXNjaWkoYykpIHsKLSAgICAgICAgKm9zIDw8IHN0YXRpY19jYXN0PGNo
YXI+KGMpOwotICAgICAgICByZXR1cm4ga0FzSXM7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAq
b3MgPDwgIlxceCIgKyBTdHJpbmc6OkZvcm1hdEhleEludChzdGF0aWNfY2FzdDxVbnNpZ25lZENo
YXI+KGMpKTsKLSAgICAgICAgcmV0dXJuIGtIZXhFc2NhcGU7Ci0gICAgICB9Ci0gIH0KLSAgcmV0
dXJuIGtTcGVjaWFsRXNjYXBlOwotfQotCi0vLyBQcmludHMgYSB3Y2hhcl90IGMgYXMgaWYgaXQn
cyBwYXJ0IG9mIGEgc3RyaW5nIGxpdGVyYWwsIGVzY2FwaW5nIGl0IHdoZW4KLS8vIG5lY2Vzc2Fy
eTsgcmV0dXJucyBob3cgYyB3YXMgZm9ybWF0dGVkLgotc3RhdGljIENoYXJGb3JtYXQgUHJpbnRB
c1N0cmluZ0xpdGVyYWxUbyh3Y2hhcl90IGMsIG9zdHJlYW0qIG9zKSB7Ci0gIHN3aXRjaCAoYykg
ewotICAgIGNhc2UgTCdcJyc6Ci0gICAgICAqb3MgPDwgIiciOwotICAgICAgcmV0dXJuIGtBc0lz
OwotICAgIGNhc2UgTCciJzoKLSAgICAgICpvcyA8PCAiXFxcIiI7Ci0gICAgICByZXR1cm4ga1Nw
ZWNpYWxFc2NhcGU7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBQcmludEFzQ2hhckxpdGVy
YWxUbzx3Y2hhcl90PihjLCBvcyk7Ci0gIH0KLX0KLQotLy8gUHJpbnRzIGEgY2hhciBjIGFzIGlm
IGl0J3MgcGFydCBvZiBhIHN0cmluZyBsaXRlcmFsLCBlc2NhcGluZyBpdCB3aGVuCi0vLyBuZWNl
c3Nhcnk7IHJldHVybnMgaG93IGMgd2FzIGZvcm1hdHRlZC4KLXN0YXRpYyBDaGFyRm9ybWF0IFBy
aW50QXNTdHJpbmdMaXRlcmFsVG8oY2hhciBjLCBvc3RyZWFtKiBvcykgewotICByZXR1cm4gUHJp
bnRBc1N0cmluZ0xpdGVyYWxUbygKLSAgICAgIHN0YXRpY19jYXN0PHdjaGFyX3Q+KHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGMpKSwgb3MpOwotfQotCi0vLyBQcmludHMgYSB3aWRlIG9yIG5h
cnJvdyBjaGFyYWN0ZXIgYyBhbmQgaXRzIGNvZGUuICAnXDAnIGlzIHByaW50ZWQKLS8vIGFzICIn
XFwwJyIsIG90aGVyIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIGFsc28gcHJvcGVybHkgZXNj
YXBlZAotLy8gdXNpbmcgdGhlIHN0YW5kYXJkIEMrKyBlc2NhcGUgc2VxdWVuY2UuICBUaGUgdGVt
cGxhdGUgYXJndW1lbnQKLS8vIFVuc2lnbmVkQ2hhciBpcyB0aGUgdW5zaWduZWQgdmVyc2lvbiBv
ZiBDaGFyLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBjLgotdGVtcGxhdGUgPHR5cGVuYW1lIFVuc2ln
bmVkQ2hhciwgdHlwZW5hbWUgQ2hhcj4KLXZvaWQgUHJpbnRDaGFyQW5kQ29kZVRvKENoYXIgYywg
b3N0cmVhbSogb3MpIHsKLSAgLy8gRmlyc3QsIHByaW50IGMgYXMgYSBsaXRlcmFsIGluIHRoZSBt
b3N0IHJlYWRhYmxlIGZvcm0gd2UgY2FuIGZpbmQuCi0gICpvcyA8PCAoKHNpemVvZihjKSA+IDEp
ID8gIkwnIiA6ICInIik7Ci0gIGNvbnN0IENoYXJGb3JtYXQgZm9ybWF0ID0gUHJpbnRBc0NoYXJM
aXRlcmFsVG88VW5zaWduZWRDaGFyPihjLCBvcyk7Ci0gICpvcyA8PCAiJyI7Ci0KLSAgLy8gVG8g
YWlkIHVzZXIgZGVidWdnaW5nLCB3ZSBhbHNvIHByaW50IGMncyBjb2RlIGluIGRlY2ltYWwsIHVu
bGVzcwotICAvLyBpdCdzIDAgKGluIHdoaWNoIGNhc2UgYyB3YXMgcHJpbnRlZCBhcyAnXFwwJywg
bWFraW5nIHRoZSBjb2RlCi0gIC8vIG9idmlvdXMpLgotICBpZiAoYyA9PSAwKQotICAgIHJldHVy
bjsKLSAgKm9zIDw8ICIgKCIgPDwgc3RhdGljX2Nhc3Q8aW50PihjKTsKLQotICAvLyBGb3IgbW9y
ZSBjb252ZW5pZW5jZSwgd2UgcHJpbnQgYydzIGNvZGUgYWdhaW4gaW4gaGV4aWRlY2ltYWwsCi0g
IC8vIHVubGVzcyBjIHdhcyBhbHJlYWR5IHByaW50ZWQgaW4gdGhlIGZvcm0gJ1x4IyMnIG9yIHRo
ZSBjb2RlIGlzIGluCi0gIC8vIFsxLCA5XS4KLSAgaWYgKGZvcm1hdCA9PSBrSGV4RXNjYXBlIHx8
ICgxIDw9IGMgJiYgYyA8PSA5KSkgewotICAgIC8vIERvIG5vdGhpbmcuCi0gIH0gZWxzZSB7Ci0g
ICAgKm9zIDw8ICIsIDB4IiA8PCBTdHJpbmc6OkZvcm1hdEhleEludChzdGF0aWNfY2FzdDxVbnNp
Z25lZENoYXI+KGMpKTsKLSAgfQotICAqb3MgPDwgIikiOwotfQotCi12b2lkIFByaW50VG8odW5z
aWduZWQgY2hhciBjLCA6OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRDaGFyQW5kQ29kZVRv
PHVuc2lnbmVkIGNoYXI+KGMsIG9zKTsKLX0KLXZvaWQgUHJpbnRUbyhzaWduZWQgY2hhciBjLCA6
OnN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgUHJpbnRDaGFyQW5kQ29kZVRvPHVuc2lnbmVkIGNoYXI+
KGMsIG9zKTsKLX0KLQotLy8gUHJpbnRzIGEgd2NoYXJfdCBhcyBhIHN5bWJvbCBpZiBpdCBpcyBw
cmludGFibGUgb3IgYXMgaXRzIGludGVybmFsCi0vLyBjb2RlIG90aGVyd2lzZSBhbmQgYWxzbyBh
cyBpdHMgY29kZS4gIEwnXDAnIGlzIHByaW50ZWQgYXMgIkwnXFwwJyIuCi12b2lkIFByaW50VG8o
d2NoYXJfdCB3Yywgb3N0cmVhbSogb3MpIHsKLSAgUHJpbnRDaGFyQW5kQ29kZVRvPHdjaGFyX3Q+
KHdjLCBvcyk7Ci19Ci0KLS8vIFByaW50cyB0aGUgZ2l2ZW4gYXJyYXkgb2YgY2hhcmFjdGVycyB0
byB0aGUgb3N0cmVhbS4gIENoYXJUeXBlIG11c3QgYmUgZWl0aGVyCi0vLyBjaGFyIG9yIHdjaGFy
X3QuCi0vLyBUaGUgYXJyYXkgc3RhcnRzIGF0IGJlZ2luLCB0aGUgbGVuZ3RoIGlzIGxlbiwgaXQg
bWF5IGluY2x1ZGUgJ1wwJyBjaGFyYWN0ZXJzCi0vLyBhbmQgbWF5IG5vdCBiZSBOVUwtdGVybWlu
YXRlZC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUdURVNUX0FUVFJJQlVURV9OT19T
QU5JVElaRV9NRU1PUllfCi1HVEVTVF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KLUdU
RVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9USFJFQURfCi1zdGF0aWMgdm9pZCBQcmludENoYXJz
QXNTdHJpbmdUbygKLSAgICBjb25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJl
YW0qIG9zKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGtRdW90ZUJlZ2luID0gc2l6ZW9mKENoYXJU
eXBlKSA9PSAxID8gIlwiIiA6ICJMXCIiOwotICAqb3MgPDwga1F1b3RlQmVnaW47Ci0gIGJvb2wg
aXNfcHJldmlvdXNfaGV4ID0gZmFsc2U7Ci0gIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBsZW47ICsraW5kZXgpIHsKLSAgICBjb25zdCBDaGFyVHlwZSBjdXIgPSBiZWdpbltpbmRleF07
Ci0gICAgaWYgKGlzX3ByZXZpb3VzX2hleCAmJiBJc1hEaWdpdChjdXIpKSB7Ci0gICAgICAvLyBQ
cmV2aW91cyBjaGFyYWN0ZXIgaXMgb2YgJ1x4Li4nIGZvcm0gYW5kIHRoaXMgY2hhcmFjdGVyIGNh
biBiZQotICAgICAgLy8gaW50ZXJwcmV0ZWQgYXMgYW5vdGhlciBoZXhhZGVjaW1hbCBkaWdpdCBp
biBpdHMgbnVtYmVyLiBCcmVhayBzdHJpbmcgdG8KLSAgICAgIC8vIGRpc2FtYmlndWF0ZS4KLSAg
ICAgICpvcyA8PCAiXCIgIiA8PCBrUXVvdGVCZWdpbjsKLSAgICB9Ci0gICAgaXNfcHJldmlvdXNf
aGV4ID0gUHJpbnRBc1N0cmluZ0xpdGVyYWxUbyhjdXIsIG9zKSA9PSBrSGV4RXNjYXBlOwotICB9
Ci0gICpvcyA8PCAiXCIiOwotfQotCi0vLyBQcmludHMgYSAoY29uc3QpIGNoYXIvd2NoYXJfdCBh
cnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcwotLy8gJ2JlZ2luJy4g
IENoYXJUeXBlIG11c3QgYmUgZWl0aGVyIGNoYXIgb3Igd2NoYXJfdC4KLXRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyVHlwZT4KLUdURVNUX0FUVFJJQlVURV9OT19TQU5JVElaRV9NRU1PUllfCi1HVEVT
VF9BVFRSSUJVVEVfTk9fU0FOSVRJWkVfQUREUkVTU18KLUdURVNUX0FUVFJJQlVURV9OT19TQU5J
VElaRV9USFJFQURfCi1zdGF0aWMgdm9pZCBVbml2ZXJzYWxQcmludENoYXJBcnJheSgKLSAgICBj
b25zdCBDaGFyVHlwZSogYmVnaW4sIHNpemVfdCBsZW4sIG9zdHJlYW0qIG9zKSB7Ci0gIC8vIFRo
ZSBjb2RlCi0gIC8vICAgY29uc3QgY2hhciBrRm9vW10gPSAiZm9vIjsKLSAgLy8gZ2VuZXJhdGVz
IGFuIGFycmF5IG9mIDQsIG5vdCAzLCBlbGVtZW50cywgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcg
J1wwJy4KLSAgLy8KLSAgLy8gVGhlcmVmb3JlIHdoZW4gcHJpbnRpbmcgYSBjaGFyIGFycmF5LCB3
ZSBkb24ndCBwcmludCB0aGUgbGFzdCBlbGVtZW50IGlmCi0gIC8vIGl0J3MgJ1wwJywgc3VjaCB0
aGF0IHRoZSBvdXRwdXQgbWF0Y2hlcyB0aGUgc3RyaW5nIGxpdGVyYWwgYXMgaXQncwotICAvLyB3
cml0dGVuIGluIHRoZSBzb3VyY2UgY29kZS4KLSAgaWYgKGxlbiA+IDAgJiYgYmVnaW5bbGVuIC0g
MV0gPT0gJ1wwJykgewotICAgIFByaW50Q2hhcnNBc1N0cmluZ1RvKGJlZ2luLCBsZW4gLSAxLCBv
cyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgLy8gSWYsIGhvd2V2ZXIsIHRoZSBsYXN0IGVsZW1l
bnQgaW4gdGhlIGFycmF5IGlzIG5vdCAnXDAnLCBlLmcuCi0gIC8vICAgIGNvbnN0IGNoYXIga0Zv
b1tdID0geyAnZicsICdvJywgJ28nIH07Ci0gIC8vIHdlIG11c3QgcHJpbnQgdGhlIGVudGlyZSBh
cnJheS4gIFdlIGFsc28gcHJpbnQgYSBtZXNzYWdlIHRvIGluZGljYXRlCi0gIC8vIHRoYXQgdGhl
IGFycmF5IGlzIG5vdCBOVUwtdGVybWluYXRlZC4KLSAgUHJpbnRDaGFyc0FzU3RyaW5nVG8oYmVn
aW4sIGxlbiwgb3MpOwotICAqb3MgPDwgIiAobm8gdGVybWluYXRpbmcgTlVMKSI7Ci19Ci0KLS8v
IFByaW50cyBhIChjb25zdCkgY2hhciBhcnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcg
YXQgYWRkcmVzcyAnYmVnaW4nLgotdm9pZCBVbml2ZXJzYWxQcmludEFycmF5KGNvbnN0IGNoYXIq
IGJlZ2luLCBzaXplX3QgbGVuLCBvc3RyZWFtKiBvcykgewotICBVbml2ZXJzYWxQcmludENoYXJB
cnJheShiZWdpbiwgbGVuLCBvcyk7Ci19Ci0KLS8vIFByaW50cyBhIChjb25zdCkgd2NoYXJfdCBh
cnJheSBvZiAnbGVuJyBlbGVtZW50cywgc3RhcnRpbmcgYXQgYWRkcmVzcwotLy8gJ2JlZ2luJy4K
LXZvaWQgVW5pdmVyc2FsUHJpbnRBcnJheShjb25zdCB3Y2hhcl90KiBiZWdpbiwgc2l6ZV90IGxl
biwgb3N0cmVhbSogb3MpIHsKLSAgVW5pdmVyc2FsUHJpbnRDaGFyQXJyYXkoYmVnaW4sIGxlbiwg
b3MpOwotfQotCi0vLyBQcmludHMgdGhlIGdpdmVuIEMgc3RyaW5nIHRvIHRoZSBvc3RyZWFtLgot
dm9pZCBQcmludFRvKGNvbnN0IGNoYXIqIHMsIG9zdHJlYW0qIG9zKSB7Ci0gIGlmIChzID09IE5V
TEwpIHsKLSAgICAqb3MgPDwgIk5VTEwiOwotICB9IGVsc2UgewotICAgICpvcyA8PCBJbXBsaWNp
dENhc3RfPGNvbnN0IHZvaWQqPihzKSA8PCAiIHBvaW50aW5nIHRvICI7Ci0gICAgUHJpbnRDaGFy
c0FzU3RyaW5nVG8ocywgc3RybGVuKHMpLCBvcyk7Ci0gIH0KLX0KLQotLy8gTVNWQyBjb21waWxl
ciBjYW4gYmUgY29uZmlndXJlZCB0byBkZWZpbmUgd2hhcl90IGFzIGEgdHlwZWRlZgotLy8gb2Yg
dW5zaWduZWQgc2hvcnQuIERlZmluaW5nIGFuIG92ZXJsb2FkIGZvciBjb25zdCB3Y2hhcl90KiBp
biB0aGF0IGNhc2UKLS8vIHdvdWxkIGNhdXNlIHBvaW50ZXJzIHRvIHVuc2lnbmVkIHNob3J0cyBi
ZSBwcmludGVkIGFzIHdpZGUgc3RyaW5ncywKLS8vIHBvc3NpYmx5IGFjY2Vzc2luZyBtb3JlIG1l
bW9yeSB0aGFuIGludGVuZGVkIGFuZCBjYXVzaW5nIGludmFsaWQKLS8vIG1lbW9yeSBhY2Nlc3Nl
cy4gTVNWQyBkZWZpbmVzIF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEIHN5bWJvbCB3aGVuCi0vLyB3
Y2hhcl90IGlzIGltcGxlbWVudGVkIGFzIGEgbmF0aXZlIHR5cGUuCi0jaWYgIWRlZmluZWQoX01T
Q19WRVIpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCi0vLyBQcmludHMgdGhl
IGdpdmVuIHdpZGUgQyBzdHJpbmcgdG8gdGhlIG9zdHJlYW0uCi12b2lkIFByaW50VG8oY29uc3Qg
d2NoYXJfdCogcywgb3N0cmVhbSogb3MpIHsKLSAgaWYgKHMgPT0gTlVMTCkgewotICAgICpvcyA8
PCAiTlVMTCI7Ci0gIH0gZWxzZSB7Ci0gICAgKm9zIDw8IEltcGxpY2l0Q2FzdF88Y29uc3Qgdm9p
ZCo+KHMpIDw8ICIgcG9pbnRpbmcgdG8gIjsKLSAgICBQcmludENoYXJzQXNTdHJpbmdUbyhzLCBz
dGQ6Ondjc2xlbihzKSwgb3MpOwotICB9Ci19Ci0jZW5kaWYgIC8vIHdjaGFyX3QgaXMgbmF0aXZl
Ci0KLS8vIFByaW50cyBhIDo6c3RyaW5nIG9iamVjdC4KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NU
UklORwotdm9pZCBQcmludFN0cmluZ1RvKGNvbnN0IDo6c3RyaW5nJiBzLCBvc3RyZWFtKiBvcykg
ewotICBQcmludENoYXJzQXNTdHJpbmdUbyhzLmRhdGEoKSwgcy5zaXplKCksIG9zKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotdm9pZCBQcmludFN0cmluZ1RvKGNv
bnN0IDo6c3RkOjpzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7Ci0gIFByaW50Q2hhcnNBc1N0cmlu
Z1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOwotfQotCi0vLyBQcmludHMgYSA6OndzdHJpbmcg
b2JqZWN0LgotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotdm9pZCBQcmludFdpZGVTdHJp
bmdUbyhjb25zdCA6OndzdHJpbmcmIHMsIG9zdHJlYW0qIG9zKSB7Ci0gIFByaW50Q2hhcnNBc1N0
cmluZ1RvKHMuZGF0YSgpLCBzLnNpemUoKSwgb3MpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNf
R0xPQkFMX1dTVFJJTkcKLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotdm9pZCBQcmludFdp
ZGVTdHJpbmdUbyhjb25zdCA6OnN0ZDo6d3N0cmluZyYgcywgb3N0cmVhbSogb3MpIHsKLSAgUHJp
bnRDaGFyc0FzU3RyaW5nVG8ocy5kYXRhKCksIHMuc2l6ZSgpLCBvcyk7Ci19Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19TVERfV1NUUklORwotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC10
ZXN0LXBhcnQuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjBlMzU0MjVlMWUuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtdGVzdC1wYXJ0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTEw
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotLy8gVGhl
IEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNs
YXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAg
SXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQs
IG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgZXhpc3RzIHRv
Ci0vLyBwcmV2ZW50IHRoZSBhY2NpZGVudGFsIGluY2x1c2lvbiBvZiBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpbiB0aGUKLS8vIHVzZXIncyBjb2RlLgotI2RlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElP
Tl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9J
TVBMRU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi11c2luZyBpbnRlcm5hbDo6
R2V0VW5pdFRlc3RJbXBsOwotCi0vLyBHZXRzIHRoZSBzdW1tYXJ5IG9mIHRoZSBmYWlsdXJlIG1l
c3NhZ2UgYnkgb21pdHRpbmcgdGhlIHN0YWNrIHRyYWNlCi0vLyBpbiBpdC4KLXN0ZDo6c3RyaW5n
IFRlc3RQYXJ0UmVzdWx0OjpFeHRyYWN0U3VtbWFyeShjb25zdCBjaGFyKiBtZXNzYWdlKSB7Ci0g
IGNvbnN0IGNoYXIqIGNvbnN0IHN0YWNrX3RyYWNlID0gc3Ryc3RyKG1lc3NhZ2UsIGludGVybmFs
OjprU3RhY2tUcmFjZU1hcmtlcik7Ci0gIHJldHVybiBzdGFja190cmFjZSA9PSBOVUxMID8gbWVz
c2FnZSA6Ci0gICAgICBzdGQ6OnN0cmluZyhtZXNzYWdlLCBzdGFja190cmFjZSk7Ci19Ci0KLS8v
IFByaW50cyBhIFRlc3RQYXJ0UmVzdWx0IG9iamVjdC4KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIHJl
dHVybiBvcwotICAgICAgPDwgcmVzdWx0LmZpbGVfbmFtZSgpIDw8ICI6IiA8PCByZXN1bHQubGlu
ZV9udW1iZXIoKSA8PCAiOiAiCi0gICAgICA8PCAocmVzdWx0LnR5cGUoKSA9PSBUZXN0UGFydFJl
c3VsdDo6a1N1Y2Nlc3MgPyAiU3VjY2VzcyIgOgotICAgICAgICAgIHJlc3VsdC50eXBlKCkgPT0g
VGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPyAiRmF0YWwgZmFpbHVyZSIgOgotICAgICAg
ICAgICJOb24tZmF0YWwgZmFpbHVyZSIpIDw8ICI6XG4iCi0gICAgICA8PCByZXN1bHQubWVzc2Fn
ZSgpIDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy8gQXBwZW5kcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRo
ZSBhcnJheS4KLXZvaWQgVGVzdFBhcnRSZXN1bHRBcnJheTo6QXBwZW5kKGNvbnN0IFRlc3RQYXJ0
UmVzdWx0JiByZXN1bHQpIHsKLSAgYXJyYXlfLnB1c2hfYmFjayhyZXN1bHQpOwotfQotCi0vLyBS
ZXR1cm5zIHRoZSBUZXN0UGFydFJlc3VsdCBhdCB0aGUgZ2l2ZW4gaW5kZXggKDAtYmFzZWQpLgot
Y29uc3QgVGVzdFBhcnRSZXN1bHQmIFRlc3RQYXJ0UmVzdWx0QXJyYXk6OkdldFRlc3RQYXJ0UmVz
dWx0KGludCBpbmRleCkgY29uc3QgewotICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNpemUo
KSkgewotICAgIHByaW50ZigiXG5JbnZhbGlkIGluZGV4ICglZCkgaW50byBUZXN0UGFydFJlc3Vs
dEFycmF5LlxuIiwgaW5kZXgpOwotICAgIGludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKLSAgfQot
Ci0gIHJldHVybiBhcnJheV9baW5kZXhdOwotfQotCi0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
VGVzdFBhcnRSZXN1bHQgb2JqZWN0cyBpbiB0aGUgYXJyYXkuCi1pbnQgVGVzdFBhcnRSZXN1bHRB
cnJheTo6c2l6ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYXJyYXlfLnNp
emUoKSk7Ci19Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLUhhc05ld0ZhdGFsRmFpbHVyZUhl
bHBlcjo6SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyKCkKLSAgICA6IGhhc19uZXdfZmF0YWxfZmFp
bHVyZV8oZmFsc2UpLAotICAgICAgb3JpZ2luYWxfcmVwb3J0ZXJfKEdldFVuaXRUZXN0SW1wbCgp
LT4KLSAgICAgICAgICAgICAgICAgICAgICAgICBHZXRUZXN0UGFydFJlc3VsdFJlcG9ydGVyRm9y
Q3VycmVudFRocmVhZCgpKSB7Ci0gIEdldFVuaXRUZXN0SW1wbCgpLT5TZXRUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyRm9yQ3VycmVudFRocmVhZCh0aGlzKTsKLX0KLQotSGFzTmV3RmF0YWxGYWlsdXJl
SGVscGVyOjp+SGFzTmV3RmF0YWxGYWlsdXJlSGVscGVyKCkgewotICBHZXRVbml0VGVzdEltcGwo
KS0+U2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJlbnRUaHJlYWQoCi0gICAgICBvcmln
aW5hbF9yZXBvcnRlcl8pOwotfQotCi12b2lkIEhhc05ld0ZhdGFsRmFpbHVyZUhlbHBlcjo6UmVw
b3J0VGVzdFBhcnRSZXN1bHQoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCkgewot
ICBpZiAocmVzdWx0LmZhdGFsbHlfZmFpbGVkKCkpCi0gICAgaGFzX25ld19mYXRhbF9mYWlsdXJl
XyA9IHRydWU7Ci0gIG9yaWdpbmFsX3JlcG9ydGVyXy0+UmVwb3J0VGVzdFBhcnRSZXN1bHQocmVz
dWx0KTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0
ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3NyYy9ndGVzdC10eXBlZC10ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZjFlZWY0NzU0ZWYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
cmMvZ3Rlc3QtdHlwZWQtdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS8v
Ci0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlz
dHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6
IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC10
eXBlZC10ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHRlc3Rp
bmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AK
LQotLy8gU2tpcHMgdG8gdGhlIGZpcnN0IG5vbi1zcGFjZSBjaGFyIGluIHN0ci4gUmV0dXJucyBh
biBlbXB0eSBzdHJpbmcgaWYgc3RyCi0vLyBjb250YWlucyBvbmx5IHdoaXRlc3BhY2UgY2hhcmFj
dGVycy4KLXN0YXRpYyBjb25zdCBjaGFyKiBTa2lwU3BhY2VzKGNvbnN0IGNoYXIqIHN0cikgewot
ICB3aGlsZSAoSXNTcGFjZSgqc3RyKSkKLSAgICBzdHIrKzsKLSAgcmV0dXJuIHN0cjsKLX0KLQot
c3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBTcGxpdEludG9UZXN0TmFtZXMoY29uc3Qg
Y2hhciogc3JjKSB7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBuYW1lX3ZlYzsKLSAgc3Jj
ID0gU2tpcFNwYWNlcyhzcmMpOwotICBmb3IgKDsgc3JjICE9IE5VTEw7IHNyYyA9IFNraXBDb21t
YShzcmMpKSB7Ci0gICAgbmFtZV92ZWMucHVzaF9iYWNrKFN0cmlwVHJhaWxpbmdTcGFjZXMoR2V0
UHJlZml4VW50aWxDb21tYShzcmMpKSk7Ci0gIH0KLSAgcmV0dXJuIG5hbWVfdmVjOwotfQotCi0v
LyBWZXJpZmllcyB0aGF0IHJlZ2lzdGVyZWRfdGVzdHMgbWF0Y2ggdGhlIHRlc3QgbmFtZXMgaW4K
LS8vIHJlZ2lzdGVyZWRfdGVzdHNfOyByZXR1cm5zIHJlZ2lzdGVyZWRfdGVzdHMgaWYgc3VjY2Vz
c2Z1bCwgb3IKLS8vIGFib3J0cyB0aGUgcHJvZ3JhbSBvdGhlcndpc2UuCi1jb25zdCBjaGFyKiBU
eXBlZFRlc3RDYXNlUFN0YXRlOjpWZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKAotICAgIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiByZWdpc3RlcmVkX3Rlc3RzKSB7Ci0g
IHR5cGVkZWYgUmVnaXN0ZXJlZFRlc3RzTWFwOjpjb25zdF9pdGVyYXRvciBSZWdpc3RlcmVkVGVz
dEl0ZXI7Ci0gIHJlZ2lzdGVyZWRfID0gdHJ1ZTsKLQotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gbmFtZV92ZWMgPSBTcGxpdEludG9UZXN0TmFtZXMocmVnaXN0ZXJlZF90ZXN0cyk7Ci0KLSAg
TWVzc2FnZSBlcnJvcnM7Ci0KLSAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHRlc3RzOwotICBmb3Ig
KHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgbmFtZV9pdCA9IG5hbWVf
dmVjLmJlZ2luKCk7Ci0gICAgICAgbmFtZV9pdCAhPSBuYW1lX3ZlYy5lbmQoKTsgKytuYW1lX2l0
KSB7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgPSAqbmFtZV9pdDsKLSAgICBpZiAodGVz
dHMuY291bnQobmFtZSkgIT0gMCkgewotICAgICAgZXJyb3JzIDw8ICJUZXN0ICIgPDwgbmFtZSA8
PCAiIGlzIGxpc3RlZCBtb3JlIHRoYW4gb25jZS5cbiI7Ci0gICAgICBjb250aW51ZTsKLSAgICB9
Ci0KLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChSZWdpc3RlcmVkVGVzdEl0ZXIg
aXQgPSByZWdpc3RlcmVkX3Rlc3RzXy5iZWdpbigpOwotICAgICAgICAgaXQgIT0gcmVnaXN0ZXJl
ZF90ZXN0c18uZW5kKCk7Ci0gICAgICAgICArK2l0KSB7Ci0gICAgICBpZiAobmFtZSA9PSBpdC0+
Zmlyc3QpIHsKLSAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAoZm91bmQpIHsKLSAgICAgIHRlc3RzLmluc2VydChuYW1lKTsKLSAg
ICB9IGVsc2UgewotICAgICAgZXJyb3JzIDw8ICJObyB0ZXN0IG5hbWVkICIgPDwgbmFtZQotICAg
ICAgICAgICAgIDw8ICIgY2FuIGJlIGZvdW5kIGluIHRoaXMgdGVzdCBjYXNlLlxuIjsKLSAgICB9
Ci0gIH0KLQotICBmb3IgKFJlZ2lzdGVyZWRUZXN0SXRlciBpdCA9IHJlZ2lzdGVyZWRfdGVzdHNf
LmJlZ2luKCk7Ci0gICAgICAgaXQgIT0gcmVnaXN0ZXJlZF90ZXN0c18uZW5kKCk7Ci0gICAgICAg
KytpdCkgewotICAgIGlmICh0ZXN0cy5jb3VudChpdC0+Zmlyc3QpID09IDApIHsKLSAgICAgIGVy
cm9ycyA8PCAiWW91IGZvcmdvdCB0byBsaXN0IHRlc3QgIiA8PCBpdC0+Zmlyc3QgPDwgIi5cbiI7
Ci0gICAgfQotICB9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIGVycm9yc19zdHIgPSBlcnJvcnMu
R2V0U3RyaW5nKCk7Ci0gIGlmIChlcnJvcnNfc3RyICE9ICIiKSB7Ci0gICAgZnByaW50ZihzdGRl
cnIsICIlcyAlcyIsIEZvcm1hdEZpbGVMb2NhdGlvbihmaWxlLCBsaW5lKS5jX3N0cigpLAotICAg
ICAgICAgICAgZXJyb3JzX3N0ci5jX3N0cigpKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBw
b3NpeDo6QWJvcnQoKTsKLSAgfQotCi0gIHJldHVybiByZWdpc3RlcmVkX3Rlc3RzOwotfQotCi0j
ZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQotfSAgLy8gbmFtZXNwYWNlIGludGVy
bmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3Jj
L2d0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYTE4ZjI1ZDFiZmQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC9z
cmMvZ3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw1NDA4ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8g
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9u
LgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29n
bGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFt
ZXdvcmsgKEdvb2dsZSBUZXN0KQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRl
ICJndGVzdC9pbnRlcm5hbC9jdXN0b20vZ3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC1z
cGkuaCIKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUg
PHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
bHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jaW5jbHVkZSA8d2N0eXBlLmg+Ci0K
LSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9tYW5pcD4KLSNpbmNsdWRlIDxsaW1p
dHM+Ci0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8b3N0cmVhbT4g
IC8vIE5PTElOVAotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaWYg
R1RFU1RfT1NfTElOVVgKLQotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29u
ZiB0byBkZXRlY3QgYXZhaWxhYmlsaXR5IG9mCi0vLyBnZXR0aW1lb2ZkYXkoKS4KLSMgZGVmaW5l
IEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLQotIyBpbmNsdWRlIDxmY250bC5oPiAgLy8gTk9M
SU5UCi0jIGluY2x1ZGUgPGxpbWl0cy5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPHNjaGVkLmg+
ICAvLyBOT0xJTlQKLS8vIERlY2xhcmVzIHZzbnByaW50ZigpLiAgVGhpcyBoZWFkZXIgaXMgbm90
IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAvLyBOT0xJTlQK
LSMgaW5jbHVkZSA8c3lzL21tYW4uaD4gIC8vIE5PTElOVAotIyBpbmNsdWRlIDxzeXMvdGltZS5o
PiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUgPHVuaXN0ZC5oPiAgLy8gTk9MSU5UCi0jIGluY2x1ZGUg
PHN0cmluZz4KLQotI2VsaWYgR1RFU1RfT1NfU1lNQklBTgotIyBkZWZpbmUgR1RFU1RfSEFTX0dF
VFRJTUVPRkRBWV8gMQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0KLSNlbGlm
IEdURVNUX09TX1pPUwotIyBkZWZpbmUgR1RFU1RfSEFTX0dFVFRJTUVPRkRBWV8gMQotIyBpbmNs
dWRlIDxzeXMvdGltZS5oPiAgLy8gTk9MSU5UCi0KLS8vIE9uIHovT1Mgd2UgYWRkaXRpb25hbGx5
IG5lZWQgc3RyaW5ncy5oIGZvciBzdHJjYXNlY21wLgotIyBpbmNsdWRlIDxzdHJpbmdzLmg+ICAv
LyBOT0xJTlQKLQotI2VsaWYgR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgIC8vIFdlIGFyZSBvbiBX
aW5kb3dzIENFLgotCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAotIyB1bmRlZiBt
aW4KLQotI2VsaWYgR1RFU1RfT1NfV0lORE9XUyAgLy8gV2UgYXJlIG9uIFdpbmRvd3MgcHJvcGVy
LgotCi0jIGluY2x1ZGUgPGlvLmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL3RpbWViLmg+
ICAvLyBOT0xJTlQKLSMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVk
ZSA8c3lzL3N0YXQuaD4gIC8vIE5PTElOVAotCi0jIGlmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cK
LS8vIE1pbkdXIGhhcyBnZXR0aW1lb2ZkYXkoKSBidXQgbm90IF9mdGltZTY0KCkuCi0vLyBUT0RP
KGtlbnRvbkBnb29nbGUuY29tKTogVXNlIGF1dG9jb25mIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkg
b2YKLS8vICAgZ2V0dGltZW9mZGF5KCkuCi0vLyBUT0RPKGtlbnRvbkBnb29nbGUuY29tKTogVGhl
cmUgYXJlIG90aGVyIHdheXMgdG8gZ2V0IHRoZSB0aW1lIG9uCi0vLyAgIFdpbmRvd3MsIGxpa2Ug
R2V0VGlja0NvdW50KCkgb3IgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKS4gIE1pbkdXCi0vLyAg
IHN1cHBvcnRzIHRoZXNlLiAgY29uc2lkZXIgdXNpbmcgdGhlbSBpbnN0ZWFkLgotIyAgZGVmaW5l
IEdURVNUX0hBU19HRVRUSU1FT0ZEQVlfIDEKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+ICAvLyBO
T0xJTlQKLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTUlOR1cKLQotLy8gY3BwbGludCB0
aGlua3MgdGhhdCB0aGUgaGVhZGVyIGlzIGFscmVhZHkgaW5jbHVkZWQsIHNvIHdlIHdhbnQgdG8K
LS8vIHNpbGVuY2UgaXQuCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4gIC8vIE5PTElOVAotIyB1bmRl
ZiBtaW4KLQotI2Vsc2UKLQotLy8gQXNzdW1lIG90aGVyIHBsYXRmb3JtcyBoYXZlIGdldHRpbWVv
ZmRheSgpLgotLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBhdXRvY29uZiB0byBkZXRl
Y3QgYXZhaWxhYmlsaXR5IG9mCi0vLyAgIGdldHRpbWVvZmRheSgpLgotIyBkZWZpbmUgR1RFU1Rf
SEFTX0dFVFRJTUVPRkRBWV8gMQotCi0vLyBjcHBsaW50IHRoaW5rcyB0aGF0IHRoZSBoZWFkZXIg
aXMgYWxyZWFkeSBpbmNsdWRlZCwgc28gd2Ugd2FudCB0bwotLy8gc2lsZW5jZSBpdC4KLSMgaW5j
bHVkZSA8c3lzL3RpbWUuaD4gIC8vIE5PTElOVAotIyBpbmNsdWRlIDx1bmlzdGQuaD4gIC8vIE5P
TElOVAotCi0jZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSNpZiBHVEVTVF9IQVNfRVhDRVBU
SU9OUwotIyBpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jZW5kaWYKLQotI2lmIEdURVNUX0NBTl9TVFJF
QU1fUkVTVUxUU18KLSMgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKLSMgaW5jbHVk
ZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAotIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJ
TlQKLSMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKLSNlbmRpZgotCi0vLyBJbmRp
Y2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUgVGVzdCdz
Ci0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50ZXJuYWwt
aW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIgZXJyb3Iu
ICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50YWxseSBp
bmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2RlZmluZSBH
VEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwu
aCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotI2lmIEdURVNUX09TX1dJTkRPV1MK
LSMgZGVmaW5lIHZzbnByaW50ZiBfdnNucHJpbnRmCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi11c2luZyBpbnRlcm5hbDo6Q291bnRJZjsKLXVz
aW5nIGludGVybmFsOjpGb3JFYWNoOwotdXNpbmcgaW50ZXJuYWw6OkdldEVsZW1lbnRPcjsKLXVz
aW5nIGludGVybmFsOjpTaHVmZmxlOwotCi0vLyBDb25zdGFudHMuCi0KLS8vIEEgdGVzdCB3aG9z
ZSB0ZXN0IGNhc2UgbmFtZSBvciB0ZXN0IG5hbWUgbWF0Y2hlcyB0aGlzIGZpbHRlciBpcwotLy8g
ZGlzYWJsZWQgYW5kIG5vdCBydW4uCi1zdGF0aWMgY29uc3QgY2hhciBrRGlzYWJsZVRlc3RGaWx0
ZXJbXSA9ICJESVNBQkxFRF8qOiovRElTQUJMRURfKiI7Ci0KLS8vIEEgdGVzdCBjYXNlIHdob3Nl
IG5hbWUgbWF0Y2hlcyB0aGlzIGZpbHRlciBpcyBjb25zaWRlcmVkIGEgZGVhdGgKLS8vIHRlc3Qg
Y2FzZSBhbmQgd2lsbCBiZSBydW4gYmVmb3JlIHRlc3QgY2FzZXMgd2hvc2UgbmFtZSBkb2Vzbid0
Ci0vLyBtYXRjaCB0aGlzIGZpbHRlci4KLXN0YXRpYyBjb25zdCBjaGFyIGtEZWF0aFRlc3RDYXNl
RmlsdGVyW10gPSAiKkRlYXRoVGVzdDoqRGVhdGhUZXN0LyoiOwotCi0vLyBBIHRlc3QgZmlsdGVy
IHRoYXQgbWF0Y2hlcyBldmVyeXRoaW5nLgotc3RhdGljIGNvbnN0IGNoYXIga1VuaXZlcnNhbEZp
bHRlcltdID0gIioiOwotCi0vLyBUaGUgZGVmYXVsdCBvdXRwdXQgZmlsZSBmb3IgWE1MIG91dHB1
dC4KLXN0YXRpYyBjb25zdCBjaGFyIGtEZWZhdWx0T3V0cHV0RmlsZVtdID0gInRlc3RfZGV0YWls
LnhtbCI7Ci0KLS8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGZvciB0aGUgdGVzdCBz
aGFyZCBpbmRleC4KLXN0YXRpYyBjb25zdCBjaGFyIGtUZXN0U2hhcmRJbmRleFtdID0gIkdURVNU
X1NIQVJEX0lOREVYIjsKLS8vIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGZvciB0aGUg
dG90YWwgbnVtYmVyIG9mIHRlc3Qgc2hhcmRzLgotc3RhdGljIGNvbnN0IGNoYXIga1Rlc3RUb3Rh
bFNoYXJkc1tdID0gIkdURVNUX1RPVEFMX1NIQVJEUyI7Ci0vLyBUaGUgZW52aXJvbm1lbnQgdmFy
aWFibGUgbmFtZSBmb3IgdGhlIHRlc3Qgc2hhcmQgc3RhdHVzIGZpbGUuCi1zdGF0aWMgY29uc3Qg
Y2hhciBrVGVzdFNoYXJkU3RhdHVzRmlsZVtdID0gIkdURVNUX1NIQVJEX1NUQVRVU19GSUxFIjsK
LQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGhlIHRleHQgdXNlZCBpbiBmYWlsdXJlIG1l
c3NhZ2VzIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiB0aGUKLS8vIHN0YWNrIHRyYWNlLgotY29u
c3QgY2hhciBrU3RhY2tUcmFjZU1hcmtlcltdID0gIlxuU3RhY2sgdHJhY2U6XG4iOwotCi0vLyBn
X2hlbHBfZmxhZyBpcyB0cnVlIGlmZiB0aGUgLS1oZWxwIGZsYWcgb3IgYW4gZXF1aXZhbGVudCBm
b3JtIGlzCi0vLyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLWJvb2wgZ19oZWxwX2Zs
YWcgPSBmYWxzZTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLXN0YXRpYyBjb25zdCBj
aGFyKiBHZXREZWZhdWx0RmlsdGVyKCkgewotI2lmZGVmIEdURVNUX1RFU1RfRklMVEVSX0VOVl9W
QVJfCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHRlc3RicmlkZ2VfdGVzdF9vbmx5ID0gZ2V0ZW52KEdU
RVNUX1RFU1RfRklMVEVSX0VOVl9WQVJfKTsKLSAgaWYgKHRlc3RicmlkZ2VfdGVzdF9vbmx5ICE9
IE5VTEwpIHsKLSAgICByZXR1cm4gdGVzdGJyaWRnZV90ZXN0X29ubHk7Ci0gIH0KLSNlbmRpZiAg
Ly8gR1RFU1RfVEVTVF9GSUxURVJfRU5WX1ZBUl8KLSAgcmV0dXJuIGtVbml2ZXJzYWxGaWx0ZXI7
Ci19Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cywK
LSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigiYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMi
LCBmYWxzZSksCi0gICAgIlJ1biBkaXNhYmxlZCB0ZXN0cyB0b28sIGluIGFkZGl0aW9uIHRvIHRo
ZSB0ZXN0cyBub3JtYWxseSBiZWluZyBydW4uIik7Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAg
ICBicmVha19vbl9mYWlsdXJlLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJicmVh
a19vbl9mYWlsdXJlIiwgZmFsc2UpLAotICAgICJUcnVlIGlmZiBhIGZhaWxlZCBhc3NlcnRpb24g
c2hvdWxkIGJlIGEgZGVidWdnZXIgYnJlYWstcG9pbnQuIik7Ci0KLUdURVNUX0RFRklORV9ib29s
XygKLSAgICBjYXRjaF9leGNlcHRpb25zLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52
KCJjYXRjaF9leGNlcHRpb25zIiwgdHJ1ZSksCi0gICAgIlRydWUgaWZmICIgR1RFU1RfTkFNRV8K
LSAgICAiIHNob3VsZCBjYXRjaCBleGNlcHRpb25zIGFuZCB0cmVhdCB0aGVtIGFzIHRlc3QgZmFp
bHVyZXMuIik7Ci0KLUdURVNUX0RFRklORV9zdHJpbmdfKAotICAgIGNvbG9yLAotICAgIGludGVy
bmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoImNvbG9yIiwgImF1dG8iKSwKLSAgICAiV2hldGhlciB0
byB1c2UgY29sb3JzIGluIHRoZSBvdXRwdXQuICBWYWxpZCB2YWx1ZXM6IHllcywgbm8sICIKLSAg
ICAiYW5kIGF1dG8uICAnYXV0bycgbWVhbnMgdG8gdXNlIGNvbG9ycyBpZiB0aGUgb3V0cHV0IGlz
ICIKLSAgICAiYmVpbmcgc2VudCB0byBhIHRlcm1pbmFsIGFuZCB0aGUgVEVSTSBlbnZpcm9ubWVu
dCB2YXJpYWJsZSAiCi0gICAgImlzIHNldCB0byBhIHRlcm1pbmFsIHR5cGUgdGhhdCBzdXBwb3J0
cyBjb2xvcnMuIik7Ci0KLUdURVNUX0RFRklORV9zdHJpbmdfKAotICAgIGZpbHRlciwKLSAgICBp
bnRlcm5hbDo6U3RyaW5nRnJvbUdUZXN0RW52KCJmaWx0ZXIiLCBHZXREZWZhdWx0RmlsdGVyKCkp
LAotICAgICJBIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIGdsb2IgKG5vdCByZWdleCkgcGF0dGVy
bnMgIgotICAgICJmb3IgZmlsdGVyaW5nIHRoZSB0ZXN0cyB0byBydW4sIG9wdGlvbmFsbHkgZm9s
bG93ZWQgYnkgYSAiCi0gICAgIictJyBhbmQgYSA6IHNlcGFyYXRlZCBsaXN0IG9mIG5lZ2F0aXZl
IHBhdHRlcm5zICh0ZXN0cyB0byAiCi0gICAgImV4Y2x1ZGUpLiAgQSB0ZXN0IGlzIHJ1biBpZiBp
dCBtYXRjaGVzIG9uZSBvZiB0aGUgcG9zaXRpdmUgIgotICAgICJwYXR0ZXJucyBhbmQgZG9lcyBu
b3QgbWF0Y2ggYW55IG9mIHRoZSBuZWdhdGl2ZSBwYXR0ZXJucy4iKTsKLQotR1RFU1RfREVGSU5F
X2Jvb2xfKGxpc3RfdGVzdHMsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICJMaXN0IGFsbCB0
ZXN0cyB3aXRob3V0IHJ1bm5pbmcgdGhlbS4iKTsKLQotR1RFU1RfREVGSU5FX3N0cmluZ18oCi0g
ICAgb3V0cHV0LAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoIm91dHB1dCIsICIi
KSwKLSAgICAiQSBmb3JtYXQgKGN1cnJlbnRseSBtdXN0IGJlIFwieG1sXCIpLCBvcHRpb25hbGx5
IGZvbGxvd2VkICIKLSAgICAiYnkgYSBjb2xvbiBhbmQgYW4gb3V0cHV0IGZpbGUgbmFtZSBvciBk
aXJlY3RvcnkuIEEgZGlyZWN0b3J5ICIKLSAgICAiaXMgaW5kaWNhdGVkIGJ5IGEgdHJhaWxpbmcg
cGF0aG5hbWUgc2VwYXJhdG9yLiAiCi0gICAgIkV4YW1wbGVzOiBcInhtbDpmaWxlbmFtZS54bWxc
IiwgXCJ4bWw6OmRpcmVjdG9yeW5hbWUvXCIuICIKLSAgICAiSWYgYSBkaXJlY3RvcnkgaXMgc3Bl
Y2lmaWVkLCBvdXRwdXQgZmlsZXMgd2lsbCBiZSBjcmVhdGVkICIKLSAgICAid2l0aGluIHRoYXQg
ZGlyZWN0b3J5LCB3aXRoIGZpbGUtbmFtZXMgYmFzZWQgb24gdGhlIHRlc3QgIgotICAgICJleGVj
dXRhYmxlJ3MgbmFtZSBhbmQsIGlmIG5lY2Vzc2FyeSwgbWFkZSB1bmlxdWUgYnkgYWRkaW5nICIK
LSAgICAiZGlnaXRzLiIpOwotCi1HVEVTVF9ERUZJTkVfYm9vbF8oCi0gICAgcHJpbnRfdGltZSwK
LSAgICBpbnRlcm5hbDo6Qm9vbEZyb21HVGVzdEVudigicHJpbnRfdGltZSIsIHRydWUpLAotICAg
ICJUcnVlIGlmZiAiIEdURVNUX05BTUVfCi0gICAgIiBzaG91bGQgZGlzcGxheSBlbGFwc2VkIHRp
bWUgaW4gdGV4dCBvdXRwdXQuIik7Ci0KLUdURVNUX0RFRklORV9pbnQzMl8oCi0gICAgcmFuZG9t
X3NlZWQsCi0gICAgaW50ZXJuYWw6OkludDMyRnJvbUdUZXN0RW52KCJyYW5kb21fc2VlZCIsIDAp
LAotICAgICJSYW5kb20gbnVtYmVyIHNlZWQgdG8gdXNlIHdoZW4gc2h1ZmZsaW5nIHRlc3Qgb3Jk
ZXJzLiAgTXVzdCBiZSBpbiByYW5nZSAiCi0gICAgIlsxLCA5OTk5OV0sIG9yIDAgdG8gdXNlIGEg
c2VlZCBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lLiIpOwotCi1HVEVTVF9ERUZJTkVfaW50MzJf
KAotICAgIHJlcGVhdCwKLSAgICBpbnRlcm5hbDo6SW50MzJGcm9tR1Rlc3RFbnYoInJlcGVhdCIs
IDEpLAotICAgICJIb3cgbWFueSB0aW1lcyB0byByZXBlYXQgZWFjaCB0ZXN0LiAgU3BlY2lmeSBh
IG5lZ2F0aXZlIG51bWJlciAiCi0gICAgImZvciByZXBlYXRpbmcgZm9yZXZlci4gIFVzZWZ1bCBm
b3Igc2hha2luZyBvdXQgZmxha3kgdGVzdHMuIik7Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAg
ICBzaG93X2ludGVybmFsX3N0YWNrX2ZyYW1lcywgZmFsc2UsCi0gICAgIlRydWUgaWZmICIgR1RF
U1RfTkFNRV8gIiBzaG91bGQgaW5jbHVkZSBpbnRlcm5hbCBzdGFjayBmcmFtZXMgd2hlbiAiCi0g
ICAgInByaW50aW5nIHRlc3QgZmFpbHVyZSBzdGFjayB0cmFjZXMuIik7Ci0KLUdURVNUX0RFRklO
RV9ib29sXygKLSAgICBzaHVmZmxlLAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJz
aHVmZmxlIiwgZmFsc2UpLAotICAgICJUcnVlIGlmZiAiIEdURVNUX05BTUVfCi0gICAgIiBzaG91
bGQgcmFuZG9taXplIHRlc3RzJyBvcmRlciBvbiBldmVyeSBydW4uIik7Ci0KLUdURVNUX0RFRklO
RV9pbnQzMl8oCi0gICAgc3RhY2tfdHJhY2VfZGVwdGgsCi0gICAgaW50ZXJuYWw6OkludDMyRnJv
bUdUZXN0RW52KCJzdGFja190cmFjZV9kZXB0aCIsIGtNYXhTdGFja1RyYWNlRGVwdGgpLAotICAg
ICJUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHRvIHByaW50IHdoZW4gYW4gIgot
ICAgICJhc3NlcnRpb24gZmFpbHMuICBUaGUgdmFsaWQgcmFuZ2UgaXMgMCB0aHJvdWdoIDEwMCwg
aW5jbHVzaXZlLiIpOwotCi1HVEVTVF9ERUZJTkVfc3RyaW5nXygKLSAgICBzdHJlYW1fcmVzdWx0
X3RvLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RFbnYoInN0cmVhbV9yZXN1bHRfdG8i
LCAiIiksCi0gICAgIlRoaXMgZmxhZyBzcGVjaWZpZXMgdGhlIGhvc3QgbmFtZSBhbmQgdGhlIHBv
cnQgbnVtYmVyIG9uIHdoaWNoIHRvIHN0cmVhbSAiCi0gICAgInRlc3QgcmVzdWx0cy4gRXhhbXBs
ZTogXCJsb2NhbGhvc3Q6NTU1XCIuIFRoZSBmbGFnIGlzIGVmZmVjdGl2ZSBvbmx5IG9uICIKLSAg
ICAiTGludXguIik7Ci0KLUdURVNUX0RFRklORV9ib29sXygKLSAgICB0aHJvd19vbl9mYWlsdXJl
LAotICAgIGludGVybmFsOjpCb29sRnJvbUdUZXN0RW52KCJ0aHJvd19vbl9mYWlsdXJlIiwgZmFs
c2UpLAotICAgICJXaGVuIHRoaXMgZmxhZyBpcyBzcGVjaWZpZWQsIGEgZmFpbGVkIGFzc2VydGlv
biB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiAiCi0gICAgImlmIGV4Y2VwdGlvbnMgYXJlIGVuYWJs
ZWQgb3IgZXhpdCB0aGUgcHJvZ3JhbSB3aXRoIGEgbm9uLXplcm8gY29kZSAiCi0gICAgIm90aGVy
d2lzZS4iKTsKLQotI2lmIEdURVNUX1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KLUdURVNUX0RFRklO
RV9zdHJpbmdfKAotICAgIGZsYWdmaWxlLAotICAgIGludGVybmFsOjpTdHJpbmdGcm9tR1Rlc3RF
bnYoImZsYWdmaWxlIiwgIiIpLAotICAgICJUaGlzIGZsYWcgc3BlY2lmaWVzIHRoZSBmbGFnZmls
ZSB0byByZWFkIGNvbW1hbmQtbGluZSBmbGFncyBmcm9tLiIpOwotI2VuZGlmICAvLyBHVEVTVF9V
U0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCi0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIEdlbmVy
YXRlcyBhIHJhbmRvbSBudW1iZXIgZnJvbSBbMCwgcmFuZ2UpLCB1c2luZyBhIExpbmVhcgotLy8g
Q29uZ3J1ZW50aWFsIEdlbmVyYXRvciAoTENHKS4gIENyYXNoZXMgaWYgJ3JhbmdlJyBpcyAwIG9y
IGdyZWF0ZXIKLS8vIHRoYW4ga01heFJhbmdlLgotVUludDMyIFJhbmRvbTo6R2VuZXJhdGUoVUlu
dDMyIHJhbmdlKSB7Ci0gIC8vIFRoZXNlIGNvbnN0YW50cyBhcmUgdGhlIHNhbWUgYXMgYXJlIHVz
ZWQgaW4gZ2xpYmMncyByYW5kKDMpLgotICBzdGF0ZV8gPSAoMTEwMzUxNTI0NVUqc3RhdGVfICsg
MTIzNDVVKSAlIGtNYXhSYW5nZTsKLQotICBHVEVTVF9DSEVDS18ocmFuZ2UgPiAwKQotICAgICAg
PDwgIkNhbm5vdCBnZW5lcmF0ZSBhIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDApLiI7Ci0gIEdU
RVNUX0NIRUNLXyhyYW5nZSA8PSBrTWF4UmFuZ2UpCi0gICAgICA8PCAiR2VuZXJhdGlvbiBvZiBh
IG51bWJlciBpbiBbMCwgIiA8PCByYW5nZSA8PCAiKSB3YXMgcmVxdWVzdGVkLCAiCi0gICAgICA8
PCAiYnV0IHRoaXMgY2FuIG9ubHkgZ2VuZXJhdGUgbnVtYmVycyBpbiBbMCwgIiA8PCBrTWF4UmFu
Z2UgPDwgIikuIjsKLQotICAvLyBDb252ZXJ0aW5nIHZpYSBtb2R1bHVzIGludHJvZHVjZXMgYSBi
aXQgb2YgZG93bndhcmQgYmlhcywgYnV0Ci0gIC8vIGl0J3Mgc2ltcGxlLCBhbmQgYSBsaW5lYXIg
Y29uZ3J1ZW50aWFsIGdlbmVyYXRvciBpc24ndCB0b28gZ29vZAotICAvLyB0byBiZWdpbiB3aXRo
LgotICByZXR1cm4gc3RhdGVfICUgcmFuZ2U7Ci19Ci0KLS8vIEdUZXN0SXNJbml0aWFsaXplZCgp
IHJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXIgaGFzIGluaXRpYWxpemVkCi0vLyBHb29nbGUgVGVz
dC4gIFVzZWZ1bCBmb3IgY2F0Y2hpbmcgdGhlIHVzZXIgbWlzdGFrZSBvZiBub3QgaW5pdGlhbGl6
aW5nCi0vLyBHb29nbGUgVGVzdCBiZWZvcmUgY2FsbGluZyBSVU5fQUxMX1RFU1RTKCkuCi1zdGF0
aWMgYm9vbCBHVGVzdElzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiBHZXRBcmd2cygpLnNpemUoKSA+
IDA7IH0KLQotLy8gSXRlcmF0ZXMgb3ZlciBhIHZlY3RvciBvZiBUZXN0Q2FzZXMsIGtlZXBpbmcg
YSBydW5uaW5nIHN1bSBvZiB0aGUKLS8vIHJlc3VsdHMgb2YgY2FsbGluZyBhIGdpdmVuIGludC1y
ZXR1cm5pbmcgbWV0aG9kIG9uIGVhY2guCi0vLyBSZXR1cm5zIHRoZSBzdW0uCi1zdGF0aWMgaW50
IFN1bU92ZXJUZXN0Q2FzZUxpc3QoY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPiYgY2FzZV9s
aXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoVGVzdENhc2U6OiptZXRo
b2QpKCkgY29uc3QpIHsKLSAgaW50IHN1bSA9IDA7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y2FzZV9saXN0LnNpemUoKTsgaSsrKSB7Ci0gICAgc3VtICs9IChjYXNlX2xpc3RbaV0tPiptZXRo
b2QpKCk7Ci0gIH0KLSAgcmV0dXJuIHN1bTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUg
dGVzdCBjYXNlIHBhc3NlZC4KLXN0YXRpYyBib29sIFRlc3RDYXNlUGFzc2VkKGNvbnN0IFRlc3RD
YXNlKiB0ZXN0X2Nhc2UpIHsKLSAgcmV0dXJuIHRlc3RfY2FzZS0+c2hvdWxkX3J1bigpICYmIHRl
c3RfY2FzZS0+UGFzc2VkKCk7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgY2Fz
ZSBmYWlsZWQuCi1zdGF0aWMgYm9vbCBUZXN0Q2FzZUZhaWxlZChjb25zdCBUZXN0Q2FzZSogdGVz
dF9jYXNlKSB7Ci0gIHJldHVybiB0ZXN0X2Nhc2UtPnNob3VsZF9ydW4oKSAmJiB0ZXN0X2Nhc2Ut
PkZhaWxlZCgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRlc3RfY2FzZSBjb250YWlucyBh
dCBsZWFzdCBvbmUgdGVzdCB0aGF0IHNob3VsZAotLy8gcnVuLgotc3RhdGljIGJvb2wgU2hvdWxk
UnVuVGVzdENhc2UoY29uc3QgVGVzdENhc2UqIHRlc3RfY2FzZSkgewotICByZXR1cm4gdGVzdF9j
YXNlLT5zaG91bGRfcnVuKCk7Ci19Ci0KLS8vIEFzc2VydEhlbHBlciBjb25zdHJ1Y3Rvci4KLUFz
c2VydEhlbHBlcjo6QXNzZXJ0SGVscGVyKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBtZXNzYWdlKQotICAgIDogZGF0YV8obmV3IEFzc2VydEhlbHBlckRhdGEodHlwZSwgZmls
ZSwgbGluZSwgbWVzc2FnZSkpIHsKLX0KLQotQXNzZXJ0SGVscGVyOjp+QXNzZXJ0SGVscGVyKCkg
ewotICBkZWxldGUgZGF0YV87Ci19Ci0KLS8vIE1lc3NhZ2UgYXNzaWdubWVudCwgZm9yIGFzc2Vy
dGlvbiBzdHJlYW1pbmcgc3VwcG9ydC4KLXZvaWQgQXNzZXJ0SGVscGVyOjpvcGVyYXRvcj0oY29u
c3QgTWVzc2FnZSYgbWVzc2FnZSkgY29uc3QgewotICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+
Ci0gICAgQWRkVGVzdFBhcnRSZXN1bHQoZGF0YV8tPnR5cGUsIGRhdGFfLT5maWxlLCBkYXRhXy0+
bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICBBcHBlbmRVc2VyTWVzc2FnZShkYXRhXy0+bWVz
c2FnZSwgbWVzc2FnZSksCi0gICAgICAgICAgICAgICAgICAgICAgVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCktPmltcGwoKQotICAgICAgICAgICAgICAgICAgICAgIC0+Q3VycmVudE9zU3RhY2tUcmFj
ZUV4Y2VwdFRvcCgxKQotICAgICAgICAgICAgICAgICAgICAgIC8vIFNraXBzIHRoZSBzdGFjayBm
cmFtZSBmb3IgdGhpcyBmdW5jdGlvbiBpdHNlbGYuCi0gICAgICAgICAgICAgICAgICAgICAgKTsg
IC8vIE5PTElOVAotfQotCi0vLyBNdXRleCBmb3IgbGlua2VkIHBvaW50ZXJzLgotR1RFU1RfQVBJ
XyBHVEVTVF9ERUZJTkVfU1RBVElDX01VVEVYXyhnX2xpbmtlZF9wdHJfbXV0ZXgpOwotCi0vLyBB
IGNvcHkgb2YgYWxsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZXQgYnkgSW5pdEdvb2dsZVRl
c3QoKS4KLTo6c3RkOjp2ZWN0b3I8dGVzdGluZzo6aW50ZXJuYWw6OnN0cmluZz4gZ19hcmd2czsK
LQotY29uc3QgOjpzdGQ6OnZlY3Rvcjx0ZXN0aW5nOjppbnRlcm5hbDo6c3RyaW5nPiYgR2V0QXJn
dnMoKSB7Ci0jaWYgZGVmaW5lZChHVEVTVF9DVVNUT01fR0VUX0FSR1ZTXykKLSAgcmV0dXJuIEdU
RVNUX0NVU1RPTV9HRVRfQVJHVlNfKCk7Ci0jZWxzZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01f
R0VUX0FSR1ZTXykKLSAgcmV0dXJuIGdfYXJndnM7Ci0jZW5kaWYgIC8vIGRlZmluZWQoR1RFU1Rf
Q1VTVE9NX0dFVF9BUkdWU18pCi19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwbGljYXRp
b24ncyBuYW1lLCByZW1vdmluZyBkaXJlY3RvcnkgcGF0aCBpZiB0aGF0Ci0vLyBpcyBwcmVzZW50
LgotRmlsZVBhdGggR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkgewotICBGaWxlUGF0aCByZXN1
bHQ7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIHJlc3VsdC5TZXQoRmlsZVBhdGgoR2V0QXJn
dnMoKVswXSkuUmVtb3ZlRXh0ZW5zaW9uKCJleGUiKSk7Ci0jZWxzZQotICByZXN1bHQuU2V0KEZp
bGVQYXRoKEdldEFyZ3ZzKClbMF0pKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0g
IHJldHVybiByZXN1bHQuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpOwotfQotCi0vLyBGdW5jdGlvbnMg
Zm9yIHByb2Nlc3NpbmcgdGhlIGd0ZXN0X291dHB1dCBmbGFnLgotCi0vLyBSZXR1cm5zIHRoZSBv
dXRwdXQgZm9ybWF0LCBvciAiIiBmb3Igbm9ybWFsIHByaW50ZWQgb3V0cHV0Lgotc3RkOjpzdHJp
bmcgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKSB7Ci0gIGNvbnN0IGNoYXIqIGNv
bnN0IGd0ZXN0X291dHB1dF9mbGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlm
IChndGVzdF9vdXRwdXRfZmxhZyA9PSBOVUxMKSByZXR1cm4gc3RkOjpzdHJpbmcoIiIpOwotCi0g
IGNvbnN0IGNoYXIqIGNvbnN0IGNvbG9uID0gc3RyY2hyKGd0ZXN0X291dHB1dF9mbGFnLCAnOicp
OwotICByZXR1cm4gKGNvbG9uID09IE5VTEwpID8KLSAgICAgIHN0ZDo6c3RyaW5nKGd0ZXN0X291
dHB1dF9mbGFnKSA6Ci0gICAgICBzdGQ6OnN0cmluZyhndGVzdF9vdXRwdXRfZmxhZywgY29sb24g
LSBndGVzdF9vdXRwdXRfZmxhZyk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJl
cXVlc3RlZCBvdXRwdXQgZmlsZSwgb3IgdGhlIGRlZmF1bHQgaWYgbm9uZQotLy8gd2FzIGV4cGxp
Y2l0bHkgc3BlY2lmaWVkLgotc3RkOjpzdHJpbmcgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X291dHB1dF9m
bGFnID0gR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3RyKCk7Ci0gIGlmIChndGVzdF9vdXRwdXRfZmxh
ZyA9PSBOVUxMKQotICAgIHJldHVybiAiIjsKLQotICBjb25zdCBjaGFyKiBjb25zdCBjb2xvbiA9
IHN0cmNocihndGVzdF9vdXRwdXRfZmxhZywgJzonKTsKLSAgaWYgKGNvbG9uID09IE5VTEwpCi0g
ICAgcmV0dXJuIGludGVybmFsOjpGaWxlUGF0aDo6Q29uY2F0UGF0aHMoCi0gICAgICAgIGludGVy
bmFsOjpGaWxlUGF0aCgKLSAgICAgICAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmln
aW5hbF93b3JraW5nX2RpcigpKSwKLSAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKGtEZWZhdWx0
T3V0cHV0RmlsZSkpLnN0cmluZygpOwotCi0gIGludGVybmFsOjpGaWxlUGF0aCBvdXRwdXRfbmFt
ZShjb2xvbiArIDEpOwotICBpZiAoIW91dHB1dF9uYW1lLklzQWJzb2x1dGVQYXRoKCkpCi0gICAg
Ly8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IG9uIFdpbmRvd3MgXHNvbWVccGF0aCBpcyBub3QgYW4g
YWJzb2x1dGUKLSAgICAvLyBwYXRoIChhcyBpdHMgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBjdXJy
ZW50IGRyaXZlKSwgeWV0IHRoZQotICAgIC8vIGZvbGxvd2luZyBsb2dpYyBmb3IgdHVybmluZyBp
dCBpbnRvIGFuIGFic29sdXRlIHBhdGggaXMgd3JvbmcuCi0gICAgLy8gRml4IGl0LgotICAgIG91
dHB1dF9uYW1lID0gaW50ZXJuYWw6OkZpbGVQYXRoOjpDb25jYXRQYXRocygKLSAgICAgICAgaW50
ZXJuYWw6OkZpbGVQYXRoKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5vcmlnaW5hbF93b3JraW5n
X2RpcigpKSwKLSAgICAgICAgaW50ZXJuYWw6OkZpbGVQYXRoKGNvbG9uICsgMSkpOwotCi0gIGlm
ICghb3V0cHV0X25hbWUuSXNEaXJlY3RvcnkoKSkKLSAgICByZXR1cm4gb3V0cHV0X25hbWUuc3Ry
aW5nKCk7Ci0KLSAgaW50ZXJuYWw6OkZpbGVQYXRoIHJlc3VsdChpbnRlcm5hbDo6RmlsZVBhdGg6
OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUoCi0gICAgICBvdXRwdXRfbmFtZSwgaW50ZXJuYWw6Okdl
dEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLAotICAgICAgR2V0T3V0cHV0Rm9ybWF0KCkuY19zdHIo
KSkpOwotICByZXR1cm4gcmVzdWx0LnN0cmluZygpOwotfQotCi0vLyBSZXR1cm5zIHRydWUgaWZm
IHRoZSB3aWxkY2FyZCBwYXR0ZXJuIG1hdGNoZXMgdGhlIHN0cmluZy4gIFRoZQotLy8gZmlyc3Qg
JzonIG9yICdcMCcgY2hhcmFjdGVyIGluIHBhdHRlcm4gbWFya3MgdGhlIGVuZCBvZiBpdC4KLS8v
Ci0vLyBUaGlzIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaXNuJ3QgdmVyeSBlZmZpY2llbnQsIGJ1dCBp
cyBjbGVhciBhbmQKLS8vIHdvcmtzIHdlbGwgZW5vdWdoIGZvciBtYXRjaGluZyB0ZXN0IG5hbWVz
LCB3aGljaCBhcmUgc2hvcnQuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6UGF0dGVybk1hdGNoZXNT
dHJpbmcoY29uc3QgY2hhciAqcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIpIHsKLSAgc3dpdGNoICgqcGF0dGVybikgewot
ICAgIGNhc2UgJ1wwJzoKLSAgICBjYXNlICc6JzogIC8vIEVpdGhlciAnOicgb3IgJ1wwJyBtYXJr
cyB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuLgotICAgICAgcmV0dXJuICpzdHIgPT0gJ1wwJzsKLSAg
ICBjYXNlICc/JzogIC8vIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuCi0gICAgICByZXR1
cm4gKnN0ciAhPSAnXDAnICYmIFBhdHRlcm5NYXRjaGVzU3RyaW5nKHBhdHRlcm4gKyAxLCBzdHIg
KyAxKTsKLSAgICBjYXNlICcqJzogIC8vIE1hdGNoZXMgYW55IHN0cmluZyAocG9zc2libHkgZW1w
dHkpIG9mIGNoYXJhY3RlcnMuCi0gICAgICByZXR1cm4gKCpzdHIgIT0gJ1wwJyAmJiBQYXR0ZXJu
TWF0Y2hlc1N0cmluZyhwYXR0ZXJuLCBzdHIgKyAxKSkgfHwKLSAgICAgICAgICBQYXR0ZXJuTWF0
Y2hlc1N0cmluZyhwYXR0ZXJuICsgMSwgc3RyKTsKLSAgICBkZWZhdWx0OiAgLy8gTm9uLXNwZWNp
YWwgY2hhcmFjdGVyLiAgTWF0Y2hlcyBpdHNlbGYuCi0gICAgICByZXR1cm4gKnBhdHRlcm4gPT0g
KnN0ciAmJgotICAgICAgICAgIFBhdHRlcm5NYXRjaGVzU3RyaW5nKHBhdHRlcm4gKyAxLCBzdHIg
KyAxKTsKLSAgfQotfQotCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRlcigKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3QgY2hhciogZmlsdGVyKSB7Ci0gIGNvbnN0
IGNoYXIgKmN1cl9wYXR0ZXJuID0gZmlsdGVyOwotICBmb3IgKDs7KSB7Ci0gICAgaWYgKFBhdHRl
cm5NYXRjaGVzU3RyaW5nKGN1cl9wYXR0ZXJuLCBuYW1lLmNfc3RyKCkpKSB7Ci0gICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBGaW5kcyB0aGUgbmV4dCBwYXR0ZXJuIGluIHRoZSBm
aWx0ZXIuCi0gICAgY3VyX3BhdHRlcm4gPSBzdHJjaHIoY3VyX3BhdHRlcm4sICc6Jyk7Ci0KLSAg
ICAvLyBSZXR1cm5zIGlmIG5vIG1vcmUgcGF0dGVybiBjYW4gYmUgZm91bmQuCi0gICAgaWYgKGN1
cl9wYXR0ZXJuID09IE5VTEwpIHsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAv
LyBTa2lwcyB0aGUgcGF0dGVybiBzZXBhcmF0ZXIgKHRoZSAnOicgY2hhcmFjdGVyKS4KLSAgICBj
dXJfcGF0dGVybisrOwotICB9Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVzZXItc3Bl
Y2lmaWVkIGZpbHRlciBtYXRjaGVzIHRoZSB0ZXN0IGNhc2UKLS8vIG5hbWUgYW5kIHRoZSB0ZXN0
IG5hbWUuCi1ib29sIFVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcgJnRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0X25hbWUpIHsKLSAgY29uc3Qgc3RkOjpz
dHJpbmcmIGZ1bGxfbmFtZSA9IHRlc3RfY2FzZV9uYW1lICsgIi4iICsgdGVzdF9uYW1lLmNfc3Ry
KCk7Ci0KLSAgLy8gU3BsaXQgLS1ndGVzdF9maWx0ZXIgYXQgJy0nLCBpZiB0aGVyZSBpcyBvbmUs
IHRvIHNlcGFyYXRlIGludG8KLSAgLy8gcG9zaXRpdmUgZmlsdGVyIGFuZCBuZWdhdGl2ZSBmaWx0
ZXIgcG9ydGlvbnMKLSAgY29uc3QgY2hhciogY29uc3QgcCA9IEdURVNUX0ZMQUcoZmlsdGVyKS5j
X3N0cigpOwotICBjb25zdCBjaGFyKiBjb25zdCBkYXNoID0gc3RyY2hyKHAsICctJyk7Ci0gIHN0
ZDo6c3RyaW5nIHBvc2l0aXZlOwotICBzdGQ6OnN0cmluZyBuZWdhdGl2ZTsKLSAgaWYgKGRhc2gg
PT0gTlVMTCkgewotICAgIHBvc2l0aXZlID0gR1RFU1RfRkxBRyhmaWx0ZXIpLmNfc3RyKCk7ICAv
LyBXaG9sZSBzdHJpbmcgaXMgYSBwb3NpdGl2ZSBmaWx0ZXIKLSAgICBuZWdhdGl2ZSA9ICIiOwot
ICB9IGVsc2UgewotICAgIHBvc2l0aXZlID0gc3RkOjpzdHJpbmcocCwgZGFzaCk7ICAgLy8gRXZl
cnl0aGluZyB1cCB0byB0aGUgZGFzaAotICAgIG5lZ2F0aXZlID0gc3RkOjpzdHJpbmcoZGFzaCAr
IDEpOyAgLy8gRXZlcnl0aGluZyBhZnRlciB0aGUgZGFzaAotICAgIGlmIChwb3NpdGl2ZS5lbXB0
eSgpKSB7Ci0gICAgICAvLyBUcmVhdCAnLXRlc3QxJyBhcyB0aGUgc2FtZSBhcyAnKi10ZXN0MScK
LSAgICAgIHBvc2l0aXZlID0ga1VuaXZlcnNhbEZpbHRlcjsKLSAgICB9Ci0gIH0KLQotICAvLyBB
IGZpbHRlciBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIHBhdHRlcm5zLiAgSXQgbWF0Y2hl
cyBhCi0gIC8vIHRlc3QgaWYgYW55IHBhdHRlcm4gaW4gaXQgbWF0Y2hlcyB0aGUgdGVzdC4KLSAg
cmV0dXJuIChNYXRjaGVzRmlsdGVyKGZ1bGxfbmFtZSwgcG9zaXRpdmUuY19zdHIoKSkgJiYKLSAg
ICAgICAgICAhTWF0Y2hlc0ZpbHRlcihmdWxsX25hbWUsIG5lZ2F0aXZlLmNfc3RyKCkpKTsKLX0K
LQotI2lmIEdURVNUX0hBU19TRUgKLS8vIFJldHVybnMgRVhDRVBUSU9OX0VYRUNVVEVfSEFORExF
UiBpZiBHb29nbGUgVGVzdCBzaG91bGQgaGFuZGxlIHRoZQotLy8gZ2l2ZW4gU0VIIGV4Y2VwdGlv
biwgb3IgRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSCBvdGhlcndpc2UuCi0vLyBUaGlzIGZ1bmN0
aW9uIGlzIHVzZWZ1bCBhcyBhbiBfX2V4Y2VwdCBjb25kaXRpb24uCi1pbnQgVW5pdFRlc3RPcHRp
b25zOjpHVGVzdFNob3VsZFByb2Nlc3NTRUgoRFdPUkQgZXhjZXB0aW9uX2NvZGUpIHsKLSAgLy8g
R29vZ2xlIFRlc3Qgc2hvdWxkIGhhbmRsZSBhIFNFSCBleGNlcHRpb24gaWY6Ci0gIC8vICAgMS4g
dGhlIHVzZXIgd2FudHMgaXQgdG8sIEFORAotICAvLyAgIDIuIHRoaXMgaXMgbm90IGEgYnJlYWtw
b2ludCBleGNlcHRpb24sIEFORAotICAvLyAgIDMuIHRoaXMgaXMgbm90IGEgQysrIGV4Y2VwdGlv
biAoVkMrKyBpbXBsZW1lbnRzIHRoZW0gdmlhIFNFSCwKLSAgLy8gICAgICBhcHBhcmVudGx5KS4K
LSAgLy8KLSAgLy8gU0VIIGV4Y2VwdGlvbiBjb2RlIGZvciBDKysgZXhjZXB0aW9ucy4KLSAgLy8g
KHNlZSBodHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzE4NTI5NCBmb3IgbW9yZSBpbmZv
cm1hdGlvbikuCi0gIGNvbnN0IERXT1JEIGtDeHhFeGNlcHRpb25Db2RlID0gMHhlMDZkNzM2MzsK
LQotICBib29sIHNob3VsZF9oYW5kbGUgPSB0cnVlOwotCi0gIGlmICghR1RFU1RfRkxBRyhjYXRj
aF9leGNlcHRpb25zKSkKLSAgICBzaG91bGRfaGFuZGxlID0gZmFsc2U7Ci0gIGVsc2UgaWYgKGV4
Y2VwdGlvbl9jb2RlID09IEVYQ0VQVElPTl9CUkVBS1BPSU5UKQotICAgIHNob3VsZF9oYW5kbGUg
PSBmYWxzZTsKLSAgZWxzZSBpZiAoZXhjZXB0aW9uX2NvZGUgPT0ga0N4eEV4Y2VwdGlvbkNvZGUp
Ci0gICAgc2hvdWxkX2hhbmRsZSA9IGZhbHNlOwotCi0gIHJldHVybiBzaG91bGRfaGFuZGxlID8g
RVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUiA6IEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Ci19
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TRUgKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0K
LS8vIFRoZSBjJ3RvciBzZXRzIHRoaXMgb2JqZWN0IGFzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0IHJl
cG9ydGVyIHVzZWQgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhlICdyZXN1bHQnIHBhcmFtZXRlciBz
cGVjaWZpZXMgd2hlcmUgdG8gcmVwb3J0IHRoZQotLy8gcmVzdWx0cy4gSW50ZXJjZXB0cyBvbmx5
IGZhaWx1cmVzIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkLgotU2NvcGVkRmFrZVRlc3RQYXJ0UmVz
dWx0UmVwb3J0ZXI6OlNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyKAotICAgIFRlc3RQ
YXJ0UmVzdWx0QXJyYXkqIHJlc3VsdCkKLSAgICA6IGludGVyY2VwdF9tb2RlXyhJTlRFUkNFUFRf
T05MWV9DVVJSRU5UX1RIUkVBRCksCi0gICAgICByZXN1bHRfKHJlc3VsdCkgewotICBJbml0KCk7
Ci19Ci0KLS8vIFRoZSBjJ3RvciBzZXRzIHRoaXMgb2JqZWN0IGFzIHRoZSB0ZXN0IHBhcnQgcmVz
dWx0IHJlcG9ydGVyIHVzZWQgYnkKLS8vIEdvb2dsZSBUZXN0LiAgVGhlICdyZXN1bHQnIHBhcmFt
ZXRlciBzcGVjaWZpZXMgd2hlcmUgdG8gcmVwb3J0IHRoZQotLy8gcmVzdWx0cy4KLVNjb3BlZEZh
a2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
cigKLSAgICBJbnRlcmNlcHRNb2RlIGludGVyY2VwdF9tb2RlLCBUZXN0UGFydFJlc3VsdEFycmF5
KiByZXN1bHQpCi0gICAgOiBpbnRlcmNlcHRfbW9kZV8oaW50ZXJjZXB0X21vZGUpLAotICAgICAg
cmVzdWx0XyhyZXN1bHQpIHsKLSAgSW5pdCgpOwotfQotCi12b2lkIFNjb3BlZEZha2VUZXN0UGFy
dFJlc3VsdFJlcG9ydGVyOjpJbml0KCkgewotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBjb25z
dCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwotICBpZiAoaW50ZXJjZXB0X21v
ZGVfID09IElOVEVSQ0VQVF9BTExfVEhSRUFEUykgewotICAgIG9sZF9yZXBvcnRlcl8gPSBpbXBs
LT5HZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKCk7Ci0gICAgaW1wbC0+U2V0R2xvYmFs
VGVzdFBhcnRSZXN1bHRSZXBvcnRlcih0aGlzKTsKLSAgfSBlbHNlIHsKLSAgICBvbGRfcmVwb3J0
ZXJfID0gaW1wbC0+R2V0VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJlbnRUaHJlYWQoKTsK
LSAgICBpbXBsLT5TZXRUZXN0UGFydFJlc3VsdFJlcG9ydGVyRm9yQ3VycmVudFRocmVhZCh0aGlz
KTsKLSAgfQotfQotCi0vLyBUaGUgZCd0b3IgcmVzdG9yZXMgdGhlIHRlc3QgcGFydCByZXN1bHQg
cmVwb3J0ZXIgdXNlZCBieSBHb29nbGUgVGVzdAotLy8gYmVmb3JlLgotU2NvcGVkRmFrZVRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXI6On5TY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigpIHsK
LSAgaW50ZXJuYWw6OlVuaXRUZXN0SW1wbCogY29uc3QgaW1wbCA9IGludGVybmFsOjpHZXRVbml0
VGVzdEltcGwoKTsKLSAgaWYgKGludGVyY2VwdF9tb2RlXyA9PSBJTlRFUkNFUFRfQUxMX1RIUkVB
RFMpIHsKLSAgICBpbXBsLT5TZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKG9sZF9yZXBv
cnRlcl8pOwotICB9IGVsc2UgewotICAgIGltcGwtPlNldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJG
b3JDdXJyZW50VGhyZWFkKG9sZF9yZXBvcnRlcl8pOwotICB9Ci19Ci0KLS8vIEluY3JlbWVudHMg
dGhlIHRlc3QgcGFydCByZXN1bHQgY291bnQgYW5kIHJlbWVtYmVycyB0aGUgcmVzdWx0LgotLy8g
VGhpcyBtZXRob2QgaXMgZnJvbSB0aGUgVGVzdFBhcnRSZXN1bHRSZXBvcnRlckludGVyZmFjZSBp
bnRlcmZhY2UuCi12b2lkIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpSZXBvcnRU
ZXN0UGFydFJlc3VsdCgKLSAgICBjb25zdCBUZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIHJl
c3VsdF8tPkFwcGVuZChyZXN1bHQpOwotfQotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0vLyBS
ZXR1cm5zIHRoZSB0eXBlIElEIG9mIDo6dGVzdGluZzo6VGVzdC4gIFdlIHNob3VsZCBhbHdheXMg
Y2FsbCB0aGlzCi0vLyBpbnN0ZWFkIG9mIEdldFR5cGVJZDwgOjp0ZXN0aW5nOjpUZXN0PigpIHRv
IGdldCB0aGUgdHlwZSBJRCBvZgotLy8gdGVzdGluZzo6VGVzdC4gIFRoaXMgaXMgdG8gd29yayBh
cm91bmQgYSBzdXNwZWN0ZWQgbGlua2VyIGJ1ZyB3aGVuCi0vLyB1c2luZyBHb29nbGUgVGVzdCBh
cyBhIGZyYW1ld29yayBvbiBNYWMgT1MgWC4gIFRoZSBidWcgY2F1c2VzCi0vLyBHZXRUeXBlSWQ8
IDo6dGVzdGluZzo6VGVzdD4oKSB0byByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBkZXBlbmRpbmcK
LS8vIG9uIHdoZXRoZXIgdGhlIGNhbGwgaXMgZnJvbSB0aGUgR29vZ2xlIFRlc3QgZnJhbWV3b3Jr
IGl0c2VsZiBvcgotLy8gZnJvbSB1c2VyIHRlc3QgY29kZS4gIEdldFRlc3RUeXBlSWQoKSBpcyBn
dWFyYW50ZWVkIHRvIGFsd2F5cwotLy8gcmV0dXJuIHRoZSBzYW1lIHZhbHVlLCBhcyBpdCBhbHdh
eXMgY2FsbHMgR2V0VHlwZUlkPD4oKSBmcm9tIHRoZQotLy8gZ3Rlc3QuY2MsIHdoaWNoIGlzIHdp
dGhpbiB0aGUgR29vZ2xlIFRlc3QgZnJhbWV3b3JrLgotVHlwZUlkIEdldFRlc3RUeXBlSWQoKSB7
Ci0gIHJldHVybiBHZXRUeXBlSWQ8VGVzdD4oKTsKLX0KLQotLy8gVGhlIHZhbHVlIG9mIEdldFRl
c3RUeXBlSWQoKSBhcyBzZWVuIGZyb20gd2l0aGluIHRoZSBHb29nbGUgVGVzdAotLy8gbGlicmFy
eS4gIFRoaXMgaXMgc29sZWx5IGZvciB0ZXN0aW5nIEdldFRlc3RUeXBlSWQoKS4KLWV4dGVybiBj
b25zdCBUeXBlSWQga1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3QgPSBHZXRUZXN0VHlwZUlkKCk7Ci0K
LS8vIFRoaXMgcHJlZGljYXRlLWZvcm1hdHRlciBjaGVja3MgdGhhdCAncmVzdWx0cycgY29udGFp
bnMgYSB0ZXN0IHBhcnQKLS8vIGZhaWx1cmUgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIHRoYXQgdGhl
IGZhaWx1cmUgbWVzc2FnZSBjb250YWlucyB0aGUKLS8vIGdpdmVuIHN1YnN0cmluZy4KLUFzc2Vy
dGlvblJlc3VsdCBIYXNPbmVGYWlsdXJlKGNvbnN0IGNoYXIqIC8qIHJlc3VsdHNfZXhwciAqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHR5cGVfZXhwciAq
LywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qIHN1YnN0cl9l
eHByICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdFBhcnRSZXN1
bHRBcnJheSYgcmVzdWx0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0
UmVzdWx0OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgc3Vic3RyKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGV4cGVjdGVkKHR5cGUg
PT0gVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUgPwotICAgICAgICAgICAgICAgICAgICAg
ICAgIjEgZmF0YWwgZmFpbHVyZSIgOgotICAgICAgICAgICAgICAgICAgICAgICAgIjEgbm9uLWZh
dGFsIGZhaWx1cmUiKTsKLSAgTWVzc2FnZSBtc2c7Ci0gIGlmIChyZXN1bHRzLnNpemUoKSAhPSAx
KSB7Ci0gICAgbXNnIDw8ICJFeHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiXG4iCi0gICAgICAg
IDw8ICIgIEFjdHVhbDogIiA8PCByZXN1bHRzLnNpemUoKSA8PCAiIGZhaWx1cmVzIjsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgIG1zZyA8PCAi
XG4iIDw8IHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoaSk7Ci0gICAgfQotICAgIHJldHVybiBB
c3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnOwotICB9Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQm
IHIgPSByZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDApOwotICBpZiAoci50eXBlKCkgIT0gdHlw
ZSkgewotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4
cGVjdGVkIDw8ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVh
bDpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHI7Ci0gIH0KLQotICBpZiAo
c3Ryc3RyKHIubWVzc2FnZSgpLCBzdWJzdHIuY19zdHIoKSkgPT0gTlVMTCkgewotICAgIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIgY29u
dGFpbmluZyBcIiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN1YnN0ciA8PCAi
XCJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIEFjdHVhbDpcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHI7Ci0gIH0KLQotICByZXR1cm4gQXNzZXJ0
aW9uU3VjY2VzcygpOwotfQotCi0vLyBUaGUgY29uc3RydWN0b3Igb2YgU2luZ2xlRmFpbHVyZUNo
ZWNrZXIgcmVtZW1iZXJzIHdoZXJlIHRvIGxvb2sgdXAKLS8vIHRlc3QgcGFydCByZXN1bHRzLCB3
aGF0IHR5cGUgb2YgZmFpbHVyZSB3ZSBleHBlY3QsIGFuZCB3aGF0Ci0vLyBzdWJzdHJpbmcgdGhl
IGZhaWx1cmUgbWVzc2FnZSBzaG91bGQgY29udGFpbi4KLVNpbmdsZUZhaWx1cmVDaGVja2VyOjpT
aW5nbGVGYWlsdXJlQ2hlY2tlcihjb25zdCBUZXN0UGFydFJlc3VsdEFycmF5KiByZXN1bHRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RQYXJ0UmVzdWx0
OjpUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHN1YnN0cikKLSAgICA6IHJlc3VsdHNfKHJlc3VsdHMpLCB0eXBl
Xyh0eXBlKSwgc3Vic3RyXyhzdWJzdHIpIHt9Ci0KLS8vIFRoZSBkZXN0cnVjdG9yIG9mIFNpbmds
ZUZhaWx1cmVDaGVja2VyIHZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuCi0vLyBUZXN0UGFydFJlc3Vs
dEFycmF5IGNvbnRhaW5zIGV4YWN0bHkgb25lIGZhaWx1cmUgdGhhdCBoYXMgdGhlIGdpdmVuCi0v
LyB0eXBlIGFuZCBjb250YWlucyB0aGUgZ2l2ZW4gc3Vic3RyaW5nLiAgSWYgdGhhdCdzIG5vdCB0
aGUgY2FzZSwgYQotLy8gbm9uLWZhdGFsIGZhaWx1cmUgd2lsbCBiZSBnZW5lcmF0ZWQuCi1TaW5n
bGVGYWlsdXJlQ2hlY2tlcjo6flNpbmdsZUZhaWx1cmVDaGVja2VyKCkgewotICBFWFBFQ1RfUFJF
RF9GT1JNQVQzKEhhc09uZUZhaWx1cmUsICpyZXN1bHRzXywgdHlwZV8sIHN1YnN0cl8pOwotfQot
Ci1EZWZhdWx0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6RGVmYXVsdEdsb2JhbFRlc3RQ
YXJ0UmVzdWx0UmVwb3J0ZXIoCi0gICAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3QpIDogdW5pdF90
ZXN0Xyh1bml0X3Rlc3QpIHt9Ci0KLXZvaWQgRGVmYXVsdEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVw
b3J0ZXI6OlJlcG9ydFRlc3RQYXJ0UmVzdWx0KAotICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBy
ZXN1bHQpIHsKLSAgdW5pdF90ZXN0Xy0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT5BZGRUZXN0UGFy
dFJlc3VsdChyZXN1bHQpOwotICB1bml0X3Rlc3RfLT5saXN0ZW5lcnMoKS0+cmVwZWF0ZXIoKS0+
T25UZXN0UGFydFJlc3VsdChyZXN1bHQpOwotfQotCi1EZWZhdWx0UGVyVGhyZWFkVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcjo6RGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoCi0g
ICAgVW5pdFRlc3RJbXBsKiB1bml0X3Rlc3QpIDogdW5pdF90ZXN0Xyh1bml0X3Rlc3QpIHt9Ci0K
LXZvaWQgRGVmYXVsdFBlclRocmVhZFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OlJlcG9ydFRlc3RQ
YXJ0UmVzdWx0KAotICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiByZXN1bHQpIHsKLSAgdW5pdF90
ZXN0Xy0+R2V0R2xvYmFsVGVzdFBhcnRSZXN1bHRSZXBvcnRlcigpLT5SZXBvcnRUZXN0UGFydFJl
c3VsdChyZXN1bHQpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3Vs
dCByZXBvcnRlci4KLVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJJbnRlcmZhY2UqCi1Vbml0VGVzdElt
cGw6OkdldEdsb2JhbFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIoKSB7Ci0gIGludGVybmFsOjpNdXRl
eExvY2sgbG9jaygmZ2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfbXV0ZXhfKTsKLSAg
cmV0dXJuIGdsb2JhbF90ZXN0X3BhcnRfcmVzdWx0X3JlcG90ZXJfOwotfQotCi0vLyBTZXRzIHRo
ZSBnbG9iYWwgdGVzdCBwYXJ0IHJlc3VsdCByZXBvcnRlci4KLXZvaWQgVW5pdFRlc3RJbXBsOjpT
ZXRHbG9iYWxUZXN0UGFydFJlc3VsdFJlcG9ydGVyKAotICAgIFRlc3RQYXJ0UmVzdWx0UmVwb3J0
ZXJJbnRlcmZhY2UqIHJlcG9ydGVyKSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmZ2xv
YmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfbXV0ZXhfKTsKLSAgZ2xvYmFsX3Rlc3RfcGFy
dF9yZXN1bHRfcmVwb3Rlcl8gPSByZXBvcnRlcjsKLX0KLQotLy8gUmV0dXJucyB0aGUgdGVzdCBw
YXJ0IHJlc3VsdCByZXBvcnRlciBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgotVGVzdFBhcnRSZXN1
bHRSZXBvcnRlckludGVyZmFjZSoKLVVuaXRUZXN0SW1wbDo6R2V0VGVzdFBhcnRSZXN1bHRSZXBv
cnRlckZvckN1cnJlbnRUaHJlYWQoKSB7Ci0gIHJldHVybiBwZXJfdGhyZWFkX3Rlc3RfcGFydF9y
ZXN1bHRfcmVwb3J0ZXJfLmdldCgpOwotfQotCi0vLyBTZXRzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0
IHJlcG9ydGVyIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCi12b2lkIFVuaXRUZXN0SW1wbDo6U2V0
VGVzdFBhcnRSZXN1bHRSZXBvcnRlckZvckN1cnJlbnRUaHJlYWQoCi0gICAgVGVzdFBhcnRSZXN1
bHRSZXBvcnRlckludGVyZmFjZSogcmVwb3J0ZXIpIHsKLSAgcGVyX3RocmVhZF90ZXN0X3BhcnRf
cmVzdWx0X3JlcG9ydGVyXy5zZXQocmVwb3J0ZXIpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIg
b2Ygc3VjY2Vzc2Z1bCB0ZXN0IGNhc2VzLgotaW50IFVuaXRUZXN0SW1wbDo6c3VjY2Vzc2Z1bF90
ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElmKHRlc3RfY2FzZXNfLCBU
ZXN0Q2FzZVBhc3NlZCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdCBj
YXNlcy4KLWludCBVbml0VGVzdEltcGw6OmZhaWxlZF90ZXN0X2Nhc2VfY291bnQoKSBjb25zdCB7
Ci0gIHJldHVybiBDb3VudElmKHRlc3RfY2FzZXNfLCBUZXN0Q2FzZUZhaWxlZCk7Ci19Ci0KLS8v
IEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBjYXNlcy4KLWludCBVbml0VGVzdEltcGw6OnRv
dGFsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
dGVzdF9jYXNlc18uc2l6ZSgpKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0
IGNhc2VzIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdAotLy8gdGhhdCBzaG91bGQgcnVu
LgotaW50IFVuaXRUZXN0SW1wbDo6dGVzdF9jYXNlX3RvX3J1bl9jb3VudCgpIGNvbnN0IHsKLSAg
cmV0dXJuIENvdW50SWYodGVzdF9jYXNlc18sIFNob3VsZFJ1blRlc3RDYXNlKTsKLX0KLQotLy8g
R2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgdGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpz
dWNjZXNzZnVsX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBTdW1PdmVyVGVzdENhc2VM
aXN0KHRlc3RfY2FzZXNfLCAmVGVzdENhc2U6OnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCk7Ci19Ci0K
LS8vIEdldHMgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpm
YWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIFN1bU92ZXJUZXN0Q2FzZUxpc3Qo
dGVzdF9jYXNlc18sICZUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQpOwotfQotCi0vLyBHZXRz
IHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGluIHRo
ZSBYTUwgcmVwb3J0LgotaW50IFVuaXRUZXN0SW1wbDo6cmVwb3J0YWJsZV9kaXNhYmxlZF90ZXN0
X2NvdW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2Vz
XywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlRlc3RDYXNlOjpyZXBvcnRhYmxlX2Rp
c2FibGVkX3Rlc3RfY291bnQpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQg
dGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkgY29uc3Qgewot
ICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywgJlRlc3RDYXNlOjpkaXNh
YmxlZF90ZXN0X2NvdW50KTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJl
IHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi1pbnQgVW5pdFRlc3RJbXBsOjpyZXBvcnRhYmxl
X3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBTdW1PdmVyVGVzdENhc2VMaXN0KHRlc3Rf
Y2FzZXNfLCAmVGVzdENhc2U6OnJlcG9ydGFibGVfdGVzdF9jb3VudCk7Ci19Ci0KLS8vIEdldHMg
dGhlIG51bWJlciBvZiBhbGwgdGVzdHMuCi1pbnQgVW5pdFRlc3RJbXBsOjp0b3RhbF90ZXN0X2Nv
dW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywg
JlRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50KTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IHRlc3RzIHRoYXQgc2hvdWxkIHJ1bi4KLWludCBVbml0VGVzdEltcGw6OnRlc3RfdG9fcnVuX2Nv
dW50KCkgY29uc3QgewotICByZXR1cm4gU3VtT3ZlclRlc3RDYXNlTGlzdCh0ZXN0X2Nhc2VzXywg
JlRlc3RDYXNlOjp0ZXN0X3RvX3J1bl9jb3VudCk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJl
bnQgT1Mgc3RhY2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCi0vLwotLy8gVGhlIG1heGltdW0g
bnVtYmVyIG9mIHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKLS8v
IHRoZSBndGVzdF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1l
dGVyCi0vLyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQs
IHdoaWNoIGRvZXNuJ3QKLS8vIGNvdW50IGFnYWluc3QgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8g
YmUgaW5jbHVkZWQuCi0vLwotLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3
aGljaCBpbiB0dXJuIGNhbGxzCi0vLyBDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKDEpLCBG
b28oKSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZQotLy8gdHJhY2UgYnV0IEJhcigpIGFuZCBDdXJy
ZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKCkgd29uJ3QuCi1zdGQ6OnN0cmluZyBVbml0VGVzdElt
cGw6OkN1cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoaW50IHNraXBfY291bnQpIHsKLSAgcmV0
dXJuIG9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5DdXJyZW50U3RhY2tUcmFjZSgKLSAgICAgIHN0
YXRpY19jYXN0PGludD4oR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkpLAotICAgICAgc2tp
cF9jb3VudCArIDEKLSAgICAgIC8vIFNraXBzIHRoZSB1c2VyLXNwZWNpZmllZCBudW1iZXIgb2Yg
ZnJhbWVzIHBsdXMgdGhpcyBmdW5jdGlvbgotICAgICAgLy8gaXRzZWxmLgotICAgICAgKTsgIC8v
IE5PTElOVAotfQotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRpbWUgaW4gbWlsbGlzZWNvbmRz
LgotVGltZUluTWlsbGlzIEdldFRpbWVJbk1pbGxpcygpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
X01PQklMRSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykKLSAgLy8gRGlmZmVyZW5jZSBiZXR3ZWVu
IDE5NzAtMDEtMDEgYW5kIDE2MDEtMDEtMDEgaW4gbWlsbGlzZWNvbmRzLgotICAvLyBodHRwOi8v
YW5hbG9nb3VzLmJsb2dzcG90LmNvbS8yMDA1LzA0L2Vwb2NoLmh0bWwKLSAgY29uc3QgVGltZUlu
TWlsbGlzIGtKYXZhRXBvY2hUb1dpbkZpbGVUaW1lRGVsdGEgPQotICAgIHN0YXRpY19jYXN0PFRp
bWVJbk1pbGxpcz4oMTE2NDQ0NzM2VUwpICogMTAwMDAwVUw7Ci0gIGNvbnN0IERXT1JEIGtUZW50
aE1pY3Jvc0luTWlsbGlTZWNvbmQgPSAxMDAwMDsKLQotICBTWVNURU1USU1FIG5vd19zeXN0aW1l
OwotICBGSUxFVElNRSBub3dfZmlsZXRpbWU7Ci0gIFVMQVJHRV9JTlRFR0VSIG5vd19pbnQ2NDsK
LSAgLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFNob3VsZG4ndCB0aGlzIGp1c3QgdXNlCi0g
IC8vICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKT8KLSAgR2V0U3lzdGVtVGltZSgmbm93X3N5
c3RpbWUpOwotICBpZiAoU3lzdGVtVGltZVRvRmlsZVRpbWUoJm5vd19zeXN0aW1lLCAmbm93X2Zp
bGV0aW1lKSkgewotICAgIG5vd19pbnQ2NC5Mb3dQYXJ0ID0gbm93X2ZpbGV0aW1lLmR3TG93RGF0
ZVRpbWU7Ci0gICAgbm93X2ludDY0LkhpZ2hQYXJ0ID0gbm93X2ZpbGV0aW1lLmR3SGlnaERhdGVU
aW1lOwotICAgIG5vd19pbnQ2NC5RdWFkUGFydCA9IChub3dfaW50NjQuUXVhZFBhcnQgLyBrVGVu
dGhNaWNyb3NJbk1pbGxpU2Vjb25kKSAtCi0gICAgICBrSmF2YUVwb2NoVG9XaW5GaWxlVGltZURl
bHRhOwotICAgIHJldHVybiBub3dfaW50NjQuUXVhZFBhcnQ7Ci0gIH0KLSAgcmV0dXJuIDA7Ci0j
ZWxpZiBHVEVTVF9PU19XSU5ET1dTICYmICFHVEVTVF9IQVNfR0VUVElNRU9GREFZXwotICBfX3Rp
bWViNjQgbm93OwotCi0gIC8vIE1TVkMgOCBkZXByZWNhdGVzIF9mdGltZTY0KCksIHNvIHdlIHdh
bnQgdG8gc3VwcHJlc3Mgd2FybmluZyA0OTk2Ci0gIC8vIChkZXByZWNhdGVkIGZ1bmN0aW9uKSB0
aGVyZS4KLSAgLy8gVE9ETyhrZW50b25AZ29vZ2xlLmNvbSk6IFVzZSBHZXRUaWNrQ291bnQoKT8g
IE9yIHVzZQotICAvLyAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCkKLSAgR1RFU1RfRElTQUJMRV9N
U0NfV0FSTklOR1NfUFVTSF8oNDk5NikKLSAgX2Z0aW1lNjQoJm5vdyk7Ci0gIEdURVNUX0RJU0FC
TEVfTVNDX1dBUk5JTkdTX1BPUF8oKQotCi0gIHJldHVybiBzdGF0aWNfY2FzdDxUaW1lSW5NaWxs
aXM+KG5vdy50aW1lKSAqIDEwMDAgKyBub3cubWlsbGl0bTsKLSNlbGlmIEdURVNUX0hBU19HRVRU
SU1FT0ZEQVlfCi0gIHN0cnVjdCB0aW1ldmFsIG5vdzsKLSAgZ2V0dGltZW9mZGF5KCZub3csIE5V
TEwpOwotICByZXR1cm4gc3RhdGljX2Nhc3Q8VGltZUluTWlsbGlzPihub3cudHZfc2VjKSAqIDEw
MDAgKyBub3cudHZfdXNlYyAvIDEwMDA7Ci0jZWxzZQotIyBlcnJvciAiRG9uJ3Qga25vdyBob3cg
dG8gZ2V0IHRoZSBjdXJyZW50IHRpbWUgb24geW91ciBzeXN0ZW0uIgotI2VuZGlmCi19Ci0KLS8v
IFV0aWxpdGllcwotCi0vLyBjbGFzcyBTdHJpbmcuCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQotLy8gQ3JlYXRlcyBhIFVURi0xNiB3aWRlIHN0cmluZyBmcm9tIHRoZSBnaXZlbiBBTlNJ
IHN0cmluZywgYWxsb2NhdGluZwotLy8gbWVtb3J5IHVzaW5nIG5ldy4gVGhlIGNhbGxlciBpcyBy
ZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIHJldHVybgotLy8gdmFsdWUgdXNpbmcgZGVsZXRl
W10uIFJldHVybnMgdGhlIHdpZGUgc3RyaW5nLCBvciBOVUxMIGlmIHRoZQotLy8gaW5wdXQgaXMg
TlVMTC4KLUxQQ1dTVFIgU3RyaW5nOjpBbnNpVG9VdGYxNihjb25zdCBjaGFyKiBhbnNpKSB7Ci0g
IGlmICghYW5zaSkgcmV0dXJuIE5VTEw7Ci0gIGNvbnN0IGludCBsZW5ndGggPSBzdHJsZW4oYW5z
aSk7Ci0gIGNvbnN0IGludCB1bmljb2RlX2xlbmd0aCA9Ci0gICAgICBNdWx0aUJ5dGVUb1dpZGVD
aGFyKENQX0FDUCwgMCwgYW5zaSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLCAwKTsKLSAgV0NIQVIqIHVuaWNvZGUgPSBuZXcgV0NIQVJbdW5pY29kZV9sZW5ndGggKyAx
XTsKLSAgTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIGFuc2ksIGxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICB1bmljb2RlLCB1bmljb2RlX2xlbmd0aCk7Ci0gIHVuaWNvZGVbdW5p
Y29kZV9sZW5ndGhdID0gMDsKLSAgcmV0dXJuIHVuaWNvZGU7Ci19Ci0KLS8vIENyZWF0ZXMgYW4g
QU5TSSBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcsIGFsbG9jYXRpbmcKLS8vIG1l
bW9yeSB1c2luZyBuZXcuIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRo
ZSByZXR1cm4KLS8vIHZhbHVlIHVzaW5nIGRlbGV0ZVtdLiBSZXR1cm5zIHRoZSBBTlNJIHN0cmlu
Zywgb3IgTlVMTCBpZiB0aGUKLS8vIGlucHV0IGlzIE5VTEwuCi1jb25zdCBjaGFyKiBTdHJpbmc6
OlV0ZjE2VG9BbnNpKExQQ1dTVFIgdXRmMTZfc3RyKSAgewotICBpZiAoIXV0ZjE2X3N0cikgcmV0
dXJuIE5VTEw7Ci0gIGNvbnN0IGludCBhbnNpX2xlbmd0aCA9Ci0gICAgICBXaWRlQ2hhclRvTXVs
dGlCeXRlKENQX0FDUCwgMCwgdXRmMTZfc3RyLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7Ci0gIGNoYXIqIGFuc2kgPSBuZXcgY2hhclthbnNpX2xl
bmd0aCArIDFdOwotICBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgdXRmMTZfc3RyLCAt
MSwKLSAgICAgICAgICAgICAgICAgICAgICBhbnNpLCBhbnNpX2xlbmd0aCwgTlVMTCwgTlVMTCk7
Ci0gIGFuc2lbYW5zaV9sZW5ndGhdID0gMDsKLSAgcmV0dXJuIGFuc2k7Ci19Ci0KLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncy4g
IFJldHVybnMgdHJ1ZSBpZmYgdGhleSBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCi0vLwotLy8gVW5s
aWtlIHN0cmNtcCgpLCB0aGlzIGZ1bmN0aW9uIGNhbiBoYW5kbGUgTlVMTCBhcmd1bWVudChzKS4g
IEEgTlVMTAotLy8gQyBzdHJpbmcgaXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5vbi1O
VUxMIEMgc3RyaW5nLAotLy8gaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcuCi1ib29sIFN0cmlu
Zzo6Q1N0cmluZ0VxdWFscyhjb25zdCBjaGFyICogbGhzLCBjb25zdCBjaGFyICogcmhzKSB7Ci0g
IGlmICggbGhzID09IE5VTEwgKSByZXR1cm4gcmhzID09IE5VTEw7Ci0KLSAgaWYgKCByaHMgPT0g
TlVMTCApIHJldHVybiBmYWxzZTsKLQotICByZXR1cm4gc3RyY21wKGxocywgcmhzKSA9PSAwOwot
fQotCi0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HIHx8IEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwotCi0vLyBDb252ZXJ0cyBhbiBhcnJheSBvZiB3aWRlIGNoYXJzIHRvIGEgbmFycm93IHN0cmlu
ZyB1c2luZyB0aGUgVVRGLTgKLS8vIGVuY29kaW5nLCBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IHRv
IHRoZSBnaXZlbiBNZXNzYWdlIG9iamVjdC4KLXN0YXRpYyB2b2lkIFN0cmVhbVdpZGVDaGFyc1Rv
TWVzc2FnZShjb25zdCB3Y2hhcl90KiB3c3RyLCBzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UqIG1zZykgewotICBmb3IgKHNpemVfdCBp
ID0gMDsgaSAhPSBsZW5ndGg7ICkgeyAgLy8gTk9MSU5UCi0gICAgaWYgKHdzdHJbaV0gIT0gTCdc
MCcpIHsKLSAgICAgICptc2cgPDwgV2lkZVN0cmluZ1RvVXRmOCh3c3RyICsgaSwgc3RhdGljX2Nh
c3Q8aW50PihsZW5ndGggLSBpKSk7Ci0gICAgICB3aGlsZSAoaSAhPSBsZW5ndGggJiYgd3N0cltp
XSAhPSBMJ1wwJykKLSAgICAgICAgaSsrOwotICAgIH0gZWxzZSB7Ci0gICAgICAqbXNnIDw8ICdc
MCc7Ci0gICAgICBpKys7Ci0gICAgfQotICB9Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NU
RF9XU1RSSU5HIHx8IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotCi12b2lkIFNwbGl0U3RyaW5n
KGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciwgY2hhciBkZWxpbWl0ZXIsCi0gICAgICAgICAgICAg
ICAgIDo6c3RkOjp2ZWN0b3I8IDo6c3RkOjpzdHJpbmc+KiBkZXN0KSB7Ci0gIDo6c3RkOjp2ZWN0
b3I8IDo6c3RkOjpzdHJpbmc+IHBhcnNlZDsKLSAgOjpzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHBv
cyA9IDA7Ci0gIHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNUcnVlKCkpIHsKLSAg
ICBjb25zdCA6OnN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY29sb24gPSBzdHIuZmluZChkZWxpbWl0
ZXIsIHBvcyk7Ci0gICAgaWYgKGNvbG9uID09IDo6c3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAg
IHBhcnNlZC5wdXNoX2JhY2soc3RyLnN1YnN0cihwb3MpKTsKLSAgICAgIGJyZWFrOwotICAgIH0g
ZWxzZSB7Ci0gICAgICBwYXJzZWQucHVzaF9iYWNrKHN0ci5zdWJzdHIocG9zLCBjb2xvbiAtIHBv
cykpOwotICAgICAgcG9zID0gY29sb24gKyAxOwotICAgIH0KLSAgfQotICBkZXN0LT5zd2FwKHBh
cnNlZCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0vLyBDb25zdHJ1Y3RzIGFu
IGVtcHR5IE1lc3NhZ2UuCi0vLyBXZSBhbGxvY2F0ZSB0aGUgc3RyaW5nc3RyZWFtIHNlcGFyYXRl
bHkgYmVjYXVzZSBvdGhlcndpc2UgZWFjaCB1c2Ugb2YKLS8vIEFTU0VSVC9FWFBFQ1QgaW4gYSBw
cm9jZWR1cmUgYWRkcyBvdmVyIDIwMCBieXRlcyB0byB0aGUgcHJvY2VkdXJlJ3MKLS8vIHN0YWNr
IGZyYW1lIGxlYWRpbmcgdG8gaHVnZSBzdGFjayBmcmFtZXMgaW4gc29tZSBjYXNlczsgZ2NjIGRv
ZXMgbm90IHJldXNlCi0vLyB0aGUgc3RhY2sgc3BhY2UuCi1NZXNzYWdlOjpNZXNzYWdlKCkgOiBz
c18obmV3IDo6c3RkOjpzdHJpbmdzdHJlYW0pIHsKLSAgLy8gQnkgZGVmYXVsdCwgd2Ugd2FudCB0
aGVyZSB0byBiZSBlbm91Z2ggcHJlY2lzaW9uIHdoZW4gcHJpbnRpbmcKLSAgLy8gYSBkb3VibGUg
dG8gYSBNZXNzYWdlLgotICAqc3NfIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6ZGlnaXRzMTAgKyAyKTsKLX0KLQotLy8gVGhlc2UgdHdvIG92ZXJsb2Fk
cyBhbGxvdyBzdHJlYW1pbmcgYSB3aWRlIEMgc3RyaW5nIHRvIGEgTWVzc2FnZQotLy8gdXNpbmcg
dGhlIFVURi04IGVuY29kaW5nLgotTWVzc2FnZSYgTWVzc2FnZTo6b3BlcmF0b3IgPDwoY29uc3Qg
d2NoYXJfdCogd2lkZV9jX3N0cikgewotICByZXR1cm4gKnRoaXMgPDwgaW50ZXJuYWw6OlN0cmlu
Zzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOwotfQotTWVzc2FnZSYgTWVzc2FnZTo6b3Bl
cmF0b3IgPDwod2NoYXJfdCogd2lkZV9jX3N0cikgewotICByZXR1cm4gKnRoaXMgPDwgaW50ZXJu
YWw6OlN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKHdpZGVfY19zdHIpOwotfQotCi0jaWYgR1RFU1Rf
SEFTX1NURF9XU1RSSU5HCi0vLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gd2lkZSBzdHJpbmcgdG8gYSBu
YXJyb3cgc3RyaW5nIHVzaW5nIHRoZSBVVEYtOAotLy8gZW5jb2RpbmcsIGFuZCBzdHJlYW1zIHRo
ZSByZXN1bHQgdG8gdGhpcyBNZXNzYWdlIG9iamVjdC4KLU1lc3NhZ2UmIE1lc3NhZ2U6Om9wZXJh
dG9yIDw8KGNvbnN0IDo6c3RkOjp3c3RyaW5nJiB3c3RyKSB7Ci0gIGludGVybmFsOjpTdHJlYW1X
aWRlQ2hhcnNUb01lc3NhZ2Uod3N0ci5jX3N0cigpLCB3c3RyLmxlbmd0aCgpLCB0aGlzKTsKLSAg
cmV0dXJuICp0aGlzOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQotI2lm
IEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotLy8gQ29udmVydHMgdGhlIGdpdmVuIHdpZGUgc3Ry
aW5nIHRvIGEgbmFycm93IHN0cmluZyB1c2luZyB0aGUgVVRGLTgKLS8vIGVuY29kaW5nLCBhbmQg
c3RyZWFtcyB0aGUgcmVzdWx0IHRvIHRoaXMgTWVzc2FnZSBvYmplY3QuCi1NZXNzYWdlJiBNZXNz
YWdlOjpvcGVyYXRvciA8PChjb25zdCA6OndzdHJpbmcmIHdzdHIpIHsKLSAgaW50ZXJuYWw6OlN0
cmVhbVdpZGVDaGFyc1RvTWVzc2FnZSh3c3RyLmNfc3RyKCksIHdzdHIubGVuZ3RoKCksIHRoaXMp
OwotICByZXR1cm4gKnRoaXM7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxfV1NUUklO
RwotCi0vLyBHZXRzIHRoZSB0ZXh0IHN0cmVhbWVkIHRvIHRoaXMgb2JqZWN0IHNvIGZhciBhcyBh
biBzdGQ6OnN0cmluZy4KLS8vIEVhY2ggJ1wwJyBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlciBpcyBy
ZXBsYWNlZCB3aXRoICJcXDAiLgotc3RkOjpzdHJpbmcgTWVzc2FnZTo6R2V0U3RyaW5nKCkgY29u
c3QgewotICByZXR1cm4gaW50ZXJuYWw6OlN0cmluZ1N0cmVhbVRvU3RyaW5nKHNzXy5nZXQoKSk7
Ci19Ci0KLS8vIEFzc2VydGlvblJlc3VsdCBjb25zdHJ1Y3RvcnMuCi0vLyBVc2VkIGluIEVYUEVD
VF9UUlVFL0ZBTFNFKGFzc2VydGlvbl9yZXN1bHQpLgotQXNzZXJ0aW9uUmVzdWx0OjpBc3NlcnRp
b25SZXN1bHQoY29uc3QgQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikKLSAgICA6IHN1Y2Nlc3NfKG90
aGVyLnN1Y2Nlc3NfKSwKLSAgICAgIG1lc3NhZ2VfKG90aGVyLm1lc3NhZ2VfLmdldCgpICE9IE5V
TEwgPwotICAgICAgICAgICAgICAgbmV3IDo6c3RkOjpzdHJpbmcoKm90aGVyLm1lc3NhZ2VfKSA6
Ci0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDwgOjpzdGQ6OnN0cmluZyo+KE5VTEwpKSB7Ci19
Ci0KLS8vIFN3YXBzIHR3byBBc3NlcnRpb25SZXN1bHRzLgotdm9pZCBBc3NlcnRpb25SZXN1bHQ6
OnN3YXAoQXNzZXJ0aW9uUmVzdWx0JiBvdGhlcikgewotICB1c2luZyBzdGQ6OnN3YXA7Ci0gIHN3
YXAoc3VjY2Vzc18sIG90aGVyLnN1Y2Nlc3NfKTsKLSAgc3dhcChtZXNzYWdlXywgb3RoZXIubWVz
c2FnZV8pOwotfQotCi0vLyBSZXR1cm5zIHRoZSBhc3NlcnRpb24ncyBuZWdhdGlvbi4gVXNlZCB3
aXRoIEVYUEVDVC9BU1NFUlRfRkFMU0UuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uUmVzdWx0
OjpvcGVyYXRvciEoKSBjb25zdCB7Ci0gIEFzc2VydGlvblJlc3VsdCBuZWdhdGlvbighc3VjY2Vz
c18pOwotICBpZiAobWVzc2FnZV8uZ2V0KCkgIT0gTlVMTCkKLSAgICBuZWdhdGlvbiA8PCAqbWVz
c2FnZV87Ci0gIHJldHVybiBuZWdhdGlvbjsKLX0KLQotLy8gTWFrZXMgYSBzdWNjZXNzZnVsIGFz
c2VydGlvbiByZXN1bHQuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0aW9uU3VjY2VzcygpIHsKLSAg
cmV0dXJuIEFzc2VydGlvblJlc3VsdCh0cnVlKTsKLX0KLQotLy8gTWFrZXMgYSBmYWlsZWQgYXNz
ZXJ0aW9uIHJlc3VsdC4KLUFzc2VydGlvblJlc3VsdCBBc3NlcnRpb25GYWlsdXJlKCkgewotICBy
ZXR1cm4gQXNzZXJ0aW9uUmVzdWx0KGZhbHNlKTsKLX0KLQotLy8gTWFrZXMgYSBmYWlsZWQgYXNz
ZXJ0aW9uIHJlc3VsdCB3aXRoIHRoZSBnaXZlbiBmYWlsdXJlIG1lc3NhZ2UuCi0vLyBEZXByZWNh
dGVkOyB1c2UgQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG1lc3NhZ2UuCi1Bc3NlcnRpb25SZXN1bHQg
QXNzZXJ0aW9uRmFpbHVyZShjb25zdCBNZXNzYWdlJiBtZXNzYWdlKSB7Ci0gIHJldHVybiBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgbWVzc2FnZTsKLX0KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQot
bmFtZXNwYWNlIGVkaXRfZGlzdGFuY2Ugewotc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0
ZU9wdGltYWxFZGl0cyhjb25zdCBzdGQ6OnZlY3RvcjxzaXplX3Q+JiBsZWZ0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaXpl
X3Q+JiByaWdodCkgewotICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjxkb3VibGU+ID4gY29zdHMo
Ci0gICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6dmVjdG9yPGRvdWJsZT4ocmlnaHQuc2l6ZSgp
ICsgMSkpOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxFZGl0VHlwZT4gPiBiZXN0X21vdmUo
Ci0gICAgICBsZWZ0LnNpemUoKSArIDEsIHN0ZDo6dmVjdG9yPEVkaXRUeXBlPihyaWdodC5zaXpl
KCkgKyAxKSk7Ci0KLSAgLy8gUG9wdWxhdGUgZm9yIGVtcHR5IHJpZ2h0LgotICBmb3IgKHNpemVf
dCBsX2kgPSAwOyBsX2kgPCBjb3N0cy5zaXplKCk7ICsrbF9pKSB7Ci0gICAgY29zdHNbbF9pXVsw
XSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obF9pKTsKLSAgICBiZXN0X21vdmVbbF9pXVswXSA9IGtS
ZW1vdmU7Ci0gIH0KLSAgLy8gUG9wdWxhdGUgZm9yIGVtcHR5IGxlZnQuCi0gIGZvciAoc2l6ZV90
IHJfaSA9IDE7IHJfaSA8IGNvc3RzWzBdLnNpemUoKTsgKytyX2kpIHsKLSAgICBjb3N0c1swXVty
X2ldID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyX2kpOwotICAgIGJlc3RfbW92ZVswXVtyX2ldID0g
a0FkZDsKLSAgfQotCi0gIGZvciAoc2l6ZV90IGxfaSA9IDA7IGxfaSA8IGxlZnQuc2l6ZSgpOyAr
K2xfaSkgewotICAgIGZvciAoc2l6ZV90IHJfaSA9IDA7IHJfaSA8IHJpZ2h0LnNpemUoKTsgKyty
X2kpIHsKLSAgICAgIGlmIChsZWZ0W2xfaV0gPT0gcmlnaHRbcl9pXSkgewotICAgICAgICAvLyBG
b3VuZCBhIG1hdGNoLiBDb25zdW1lIGl0LgotICAgICAgICBjb3N0c1tsX2kgKyAxXVtyX2kgKyAx
XSA9IGNvc3RzW2xfaV1bcl9pXTsKLSAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFd
ID0ga01hdGNoOwotICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLQotICAgICAgY29uc3QgZG91
YmxlIGFkZCA9IGNvc3RzW2xfaSArIDFdW3JfaV07Ci0gICAgICBjb25zdCBkb3VibGUgcmVtb3Zl
ID0gY29zdHNbbF9pXVtyX2kgKyAxXTsKLSAgICAgIGNvbnN0IGRvdWJsZSByZXBsYWNlID0gY29z
dHNbbF9pXVtyX2ldOwotICAgICAgaWYgKGFkZCA8IHJlbW92ZSAmJiBhZGQgPCByZXBsYWNlKSB7
Ci0gICAgICAgIGNvc3RzW2xfaSArIDFdW3JfaSArIDFdID0gYWRkICsgMTsKLSAgICAgICAgYmVz
dF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga0FkZDsKLSAgICAgIH0gZWxzZSBpZiAocmVtb3Zl
IDwgYWRkICYmIHJlbW92ZSA8IHJlcGxhY2UpIHsKLSAgICAgICAgY29zdHNbbF9pICsgMV1bcl9p
ICsgMV0gPSByZW1vdmUgKyAxOwotICAgICAgICBiZXN0X21vdmVbbF9pICsgMV1bcl9pICsgMV0g
PSBrUmVtb3ZlOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gV2UgbWFrZSByZXBsYWNlIGEg
bGl0dGxlIG1vcmUgZXhwZW5zaXZlIHRoYW4gYWRkL3JlbW92ZSB0byBsb3dlcgotICAgICAgICAv
LyB0aGVpciBwcmlvcml0eS4KLSAgICAgICAgY29zdHNbbF9pICsgMV1bcl9pICsgMV0gPSByZXBs
YWNlICsgMS4wMDAwMTsKLSAgICAgICAgYmVzdF9tb3ZlW2xfaSArIDFdW3JfaSArIDFdID0ga1Jl
cGxhY2U7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLy8gUmVjb25zdHJ1Y3QgdGhlIGJlc3Qg
cGF0aC4gV2UgZG8gaXQgaW4gcmV2ZXJzZSBvcmRlci4KLSAgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+
IGJlc3RfcGF0aDsKLSAgZm9yIChzaXplX3QgbF9pID0gbGVmdC5zaXplKCksIHJfaSA9IHJpZ2h0
LnNpemUoKTsgbF9pID4gMCB8fCByX2kgPiAwOykgewotICAgIEVkaXRUeXBlIG1vdmUgPSBiZXN0
X21vdmVbbF9pXVtyX2ldOwotICAgIGJlc3RfcGF0aC5wdXNoX2JhY2sobW92ZSk7Ci0gICAgbF9p
IC09IG1vdmUgIT0ga0FkZDsKLSAgICByX2kgLT0gbW92ZSAhPSBrUmVtb3ZlOwotICB9Ci0gIHN0
ZDo6cmV2ZXJzZShiZXN0X3BhdGguYmVnaW4oKSwgYmVzdF9wYXRoLmVuZCgpKTsKLSAgcmV0dXJu
IGJlc3RfcGF0aDsKLX0KLQotbmFtZXNwYWNlIHsKLQotLy8gSGVscGVyIGNsYXNzIHRvIGNvbnZl
cnQgc3RyaW5nIGludG8gaWRzIHdpdGggZGVkdXBsaWNhdGlvbi4KLWNsYXNzIEludGVybmFsU3Ry
aW5ncyB7Ci0gcHVibGljOgotICBzaXplX3QgR2V0SWQoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikg
ewotICAgIElkTWFwOjppdGVyYXRvciBpdCA9IGlkc18uZmluZChzdHIpOwotICAgIGlmIChpdCAh
PSBpZHNfLmVuZCgpKSByZXR1cm4gaXQtPnNlY29uZDsKLSAgICBzaXplX3QgaWQgPSBpZHNfLnNp
emUoKTsKLSAgICByZXR1cm4gaWRzX1tzdHJdID0gaWQ7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHR5
cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHNpemVfdD4gSWRNYXA7Ci0gIElkTWFwIGlkc187
Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IENhbGN1bGF0
ZU9wdGltYWxFZGl0cygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQs
Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiByaWdodCkgewotICBzdGQ6OnZl
Y3RvcjxzaXplX3Q+IGxlZnRfaWRzLCByaWdodF9pZHM7Ci0gIHsKLSAgICBJbnRlcm5hbFN0cmlu
Z3MgaW50ZXJuX3RhYmxlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVmdC5zaXplKCk7
ICsraSkgewotICAgICAgbGVmdF9pZHMucHVzaF9iYWNrKGludGVybl90YWJsZS5HZXRJZChsZWZ0
W2ldKSk7Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmlnaHQuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgIHJpZ2h0X2lkcy5wdXNoX2JhY2soaW50ZXJuX3RhYmxlLkdldElkKHJpZ2h0
W2ldKSk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBDYWxjdWxhdGVPcHRpbWFsRWRpdHMobGVmdF9p
ZHMsIHJpZ2h0X2lkcyk7Ci19Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIEhlbHBlciBjbGFzcyB0aGF0
IGhvbGRzIHRoZSBzdGF0ZSBmb3Igb25lIGh1bmsgYW5kIHByaW50cyBpdCBvdXQgdG8gdGhlCi0v
LyBzdHJlYW0uCi0vLyBJdCByZW9yZGVycyBhZGRzL3JlbW92ZXMgd2hlbiBwb3NzaWJsZSB0byBn
cm91cCBhbGwgcmVtb3ZlcyBiZWZvcmUgYWxsCi0vLyBhZGRzLiBJdCBhbHNvIGFkZHMgdGhlIGh1
bmsgaGVhZGVyIGJlZm9yZSBwcmludGludCBpbnRvIHRoZSBzdHJlYW0uCi1jbGFzcyBIdW5rIHsK
LSBwdWJsaWM6Ci0gIEh1bmsoc2l6ZV90IGxlZnRfc3RhcnQsIHNpemVfdCByaWdodF9zdGFydCkK
LSAgICAgIDogbGVmdF9zdGFydF8obGVmdF9zdGFydCksCi0gICAgICAgIHJpZ2h0X3N0YXJ0Xyhy
aWdodF9zdGFydCksCi0gICAgICAgIGFkZHNfKCksCi0gICAgICAgIHJlbW92ZXNfKCksCi0gICAg
ICAgIGNvbW1vbl8oKSB7fQotCi0gIHZvaWQgUHVzaExpbmUoY2hhciBlZGl0LCBjb25zdCBjaGFy
KiBsaW5lKSB7Ci0gICAgc3dpdGNoIChlZGl0KSB7Ci0gICAgICBjYXNlICcgJzoKLSAgICAgICAg
Kytjb21tb25fOwotICAgICAgICBGbHVzaEVkaXRzKCk7Ci0gICAgICAgIGh1bmtfLnB1c2hfYmFj
ayhzdGQ6Om1ha2VfcGFpcignICcsIGxpbmUpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
ICctJzoKLSAgICAgICAgKytyZW1vdmVzXzsKLSAgICAgICAgaHVua19yZW1vdmVzXy5wdXNoX2Jh
Y2soc3RkOjptYWtlX3BhaXIoJy0nLCBsaW5lKSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSAnKyc6Ci0gICAgICAgICsrYWRkc187Ci0gICAgICAgIGh1bmtfYWRkc18ucHVzaF9iYWNrKHN0
ZDo6bWFrZV9wYWlyKCcrJywgbGluZSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQot
ICB2b2lkIFByaW50VG8oc3RkOjpvc3RyZWFtKiBvcykgewotICAgIFByaW50SGVhZGVyKG9zKTsK
LSAgICBGbHVzaEVkaXRzKCk7Ci0gICAgZm9yIChzdGQ6Omxpc3Q8c3RkOjpwYWlyPGNoYXIsIGNv
bnN0IGNoYXIqPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9Ci0gICAgICAgICAgICAgaHVua18uYmVn
aW4oKTsKLSAgICAgICAgIGl0ICE9IGh1bmtfLmVuZCgpOyArK2l0KSB7Ci0gICAgICAqb3MgPDwg
aXQtPmZpcnN0IDw8IGl0LT5zZWNvbmQgPDwgIlxuIjsKLSAgICB9Ci0gIH0KLQotICBib29sIGhh
c19lZGl0cygpIGNvbnN0IHsgcmV0dXJuIGFkZHNfIHx8IHJlbW92ZXNfOyB9Ci0KLSBwcml2YXRl
OgotICB2b2lkIEZsdXNoRWRpdHMoKSB7Ci0gICAgaHVua18uc3BsaWNlKGh1bmtfLmVuZCgpLCBo
dW5rX3JlbW92ZXNfKTsKLSAgICBodW5rXy5zcGxpY2UoaHVua18uZW5kKCksIGh1bmtfYWRkc18p
OwotICB9Ci0KLSAgLy8gUHJpbnQgYSB1bmlmaWVkIGRpZmYgaGVhZGVyIGZvciBvbmUgaHVuay4K
LSAgLy8gVGhlIGZvcm1hdCBpcwotICAvLyAgICJAQCAtPGxlZnRfc3RhcnQ+LDxsZWZ0X2xlbmd0
aD4gKzxyaWdodF9zdGFydD4sPHJpZ2h0X2xlbmd0aD4gQEAiCi0gIC8vIHdoZXJlIHRoZSBsZWZ0
L3JpZ2h0IHBhcnRzIGFyZSBvbW1pdHRlZCBpZiB1bm5lY2Vzc2FyeS4KLSAgdm9pZCBQcmludEhl
YWRlcihzdGQ6Om9zdHJlYW0qIHNzKSBjb25zdCB7Ci0gICAgKnNzIDw8ICJAQCAiOwotICAgIGlm
IChyZW1vdmVzXykgewotICAgICAgKnNzIDw8ICItIiA8PCBsZWZ0X3N0YXJ0XyA8PCAiLCIgPDwg
KHJlbW92ZXNfICsgY29tbW9uXyk7Ci0gICAgfQotICAgIGlmIChyZW1vdmVzXyAmJiBhZGRzXykg
ewotICAgICAgKnNzIDw8ICIgIjsKLSAgICB9Ci0gICAgaWYgKGFkZHNfKSB7Ci0gICAgICAqc3Mg
PDwgIisiIDw8IHJpZ2h0X3N0YXJ0XyA8PCAiLCIgPDwgKGFkZHNfICsgY29tbW9uXyk7Ci0gICAg
fQotICAgICpzcyA8PCAiIEBAXG4iOwotICB9Ci0KLSAgc2l6ZV90IGxlZnRfc3RhcnRfLCByaWdo
dF9zdGFydF87Ci0gIHNpemVfdCBhZGRzXywgcmVtb3Zlc18sIGNvbW1vbl87Ci0gIHN0ZDo6bGlz
dDxzdGQ6OnBhaXI8Y2hhciwgY29uc3QgY2hhcio+ID4gaHVua18sIGh1bmtfYWRkc18sIGh1bmtf
cmVtb3Zlc187Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gQ3JlYXRlIGEgbGlzdCBvZiBk
aWZmIGh1bmtzIGluIFVuaWZpZWQgZGlmZiBmb3JtYXQuCi0vLyBFYWNoIGh1bmsgaGFzIGEgaGVh
ZGVyIGdlbmVyYXRlZCBieSBQcmludEhlYWRlciBhYm92ZSBwbHVzIGEgYm9keSB3aXRoCi0vLyBs
aW5lcyBwcmVmaXhlZCB3aXRoICcgJyBmb3Igbm8gY2hhbmdlLCAnLScgZm9yIGRlbGV0aW9uIGFu
ZCAnKycgZm9yCi0vLyBhZGRpdGlvbi4KLS8vICdjb250ZXh0JyByZXByZXNlbnRzIHRoZSBkZXNp
cmVkIHVuY2hhbmdlZCBwcmVmaXgvc3VmZml4IGFyb3VuZCB0aGUgZGlmZi4KLS8vIElmIHR3byBo
dW5rcyBhcmUgY2xvc2UgZW5vdWdoIHRoYXQgdGhlaXIgY29udGV4dHMgb3ZlcmxhcCwgdGhlbiB0
aGV5IGFyZQotLy8gam9pbmVkIGludG8gb25lIGh1bmsuCi1zdGQ6OnN0cmluZyBDcmVhdGVVbmlm
aWVkRGlmZihjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGxlZnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHJpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnRleHQpIHsKLSAgY29u
c3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+IGVkaXRzID0gQ2FsY3VsYXRlT3B0aW1hbEVkaXRzKGxl
ZnQsIHJpZ2h0KTsKLQotICBzaXplX3QgbF9pID0gMCwgcl9pID0gMCwgZWRpdF9pID0gMDsKLSAg
c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHdoaWxlIChlZGl0X2kgPCBlZGl0cy5zaXplKCkpIHsK
LSAgICAvLyBGaW5kIGZpcnN0IGVkaXQuCi0gICAgd2hpbGUgKGVkaXRfaSA8IGVkaXRzLnNpemUo
KSAmJiBlZGl0c1tlZGl0X2ldID09IGtNYXRjaCkgewotICAgICAgKytsX2k7Ci0gICAgICArK3Jf
aTsKLSAgICAgICsrZWRpdF9pOwotICAgIH0KLQotICAgIC8vIEZpbmQgdGhlIGZpcnN0IGxpbmUg
dG8gaW5jbHVkZSBpbiB0aGUgaHVuay4KLSAgICBjb25zdCBzaXplX3QgcHJlZml4X2NvbnRleHQg
PSBzdGQ6Om1pbihsX2ksIGNvbnRleHQpOwotICAgIEh1bmsgaHVuayhsX2kgLSBwcmVmaXhfY29u
dGV4dCArIDEsIHJfaSAtIHByZWZpeF9jb250ZXh0ICsgMSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IHByZWZpeF9jb250ZXh0OyBpID4gMDsgLS1pKSB7Ci0gICAgICBodW5rLlB1c2hMaW5lKCcgJywg
bGVmdFtsX2kgLSBpXS5jX3N0cigpKTsKLSAgICB9Ci0KLSAgICAvLyBJdGVyYXRlIHRoZSBlZGl0
cyB1bnRpbCB3ZSBmb3VuZCBlbm91Z2ggc3VmZml4IGZvciB0aGUgaHVuayBvciB0aGUgaW5wdXQK
LSAgICAvLyBpcyBvdmVyLgotICAgIHNpemVfdCBuX3N1ZmZpeCA9IDA7Ci0gICAgZm9yICg7IGVk
aXRfaSA8IGVkaXRzLnNpemUoKTsgKytlZGl0X2kpIHsKLSAgICAgIGlmIChuX3N1ZmZpeCA+PSBj
b250ZXh0KSB7Ci0gICAgICAgIC8vIENvbnRpbnVlIG9ubHkgaWYgdGhlIG5leHQgaHVuayBpcyB2
ZXJ5IGNsb3NlLgotICAgICAgICBzdGQ6OnZlY3RvcjxFZGl0VHlwZT46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gZWRpdHMuYmVnaW4oKSArIGVkaXRfaTsKLSAgICAgICAgd2hpbGUgKGl0ICE9IGVkaXRz
LmVuZCgpICYmICppdCA9PSBrTWF0Y2gpICsraXQ7Ci0gICAgICAgIGlmIChpdCA9PSBlZGl0cy5l
bmQoKSB8fCAoaXQgLSBlZGl0cy5iZWdpbigpKSAtIGVkaXRfaSA+PSBjb250ZXh0KSB7Ci0gICAg
ICAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBlZGl0IG9yIGl0IGlzIHRvbyBmYXIgYXdheS4KLSAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBFZGl0VHlwZSBlZGl0
ID0gZWRpdHNbZWRpdF9pXTsKLSAgICAgIC8vIFJlc2V0IGNvdW50IHdoZW4gYSBub24gbWF0Y2gg
aXMgZm91bmQuCi0gICAgICBuX3N1ZmZpeCA9IGVkaXQgPT0ga01hdGNoID8gbl9zdWZmaXggKyAx
IDogMDsKLQotICAgICAgaWYgKGVkaXQgPT0ga01hdGNoIHx8IGVkaXQgPT0ga1JlbW92ZSB8fCBl
ZGl0ID09IGtSZXBsYWNlKSB7Ci0gICAgICAgIGh1bmsuUHVzaExpbmUoZWRpdCA9PSBrTWF0Y2gg
PyAnICcgOiAnLScsIGxlZnRbbF9pXS5jX3N0cigpKTsKLSAgICAgIH0KLSAgICAgIGlmIChlZGl0
ID09IGtBZGQgfHwgZWRpdCA9PSBrUmVwbGFjZSkgewotICAgICAgICBodW5rLlB1c2hMaW5lKCcr
JywgcmlnaHRbcl9pXS5jX3N0cigpKTsKLSAgICAgIH0KLQotICAgICAgLy8gQWR2YW5jZSBpbmRp
Y2VzLCBkZXBlbmRpbmcgb24gZWRpdCB0eXBlLgotICAgICAgbF9pICs9IGVkaXQgIT0ga0FkZDsK
LSAgICAgIHJfaSArPSBlZGl0ICE9IGtSZW1vdmU7Ci0gICAgfQotCi0gICAgaWYgKCFodW5rLmhh
c19lZGl0cygpKSB7Ci0gICAgICAvLyBXZSBhcmUgZG9uZS4gV2UgZG9uJ3Qgd2FudCB0aGlzIGh1
bmsuCi0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBodW5rLlByaW50VG8oJnNzKTsKLSAgfQot
ICByZXR1cm4gc3Muc3RyKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBlZGl0X2Rpc3RhbmNlCi0K
LW5hbWVzcGFjZSB7Ci0KLS8vIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHZhbHVl
cyByZWNlaXZlZCBpbiBFcUZhaWx1cmUoKSBhcmUgYWxyZWFkeQotLy8gZXNjYXBlZC4gU3BsaXQg
dGhlbSBvbiBlc2NhcGVkICdcbicgYm91bmRhcmllcy4gTGVhdmUgYWxsIG90aGVyIGVzY2FwZWQK
LS8vIGNoYXJhY3RlcnMgdGhlIHNhbWUuCi1zdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU3BsaXRF
c2NhcGVkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpIHsKLSAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IGxpbmVzOwotICBzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBzdHIuc2l6ZSgpOwot
ICBpZiAoZW5kID4gMiAmJiBzdHJbMF0gPT0gJyInICYmIHN0cltlbmQgLSAxXSA9PSAnIicpIHsK
LSAgICArK3N0YXJ0OwotICAgIC0tZW5kOwotICB9Ci0gIGJvb2wgZXNjYXBlZCA9IGZhbHNlOwot
ICBmb3IgKHNpemVfdCBpID0gc3RhcnQ7IGkgKyAxIDwgZW5kOyArK2kpIHsKLSAgICBpZiAoZXNj
YXBlZCkgewotICAgICAgZXNjYXBlZCA9IGZhbHNlOwotICAgICAgaWYgKHN0cltpXSA9PSAnbicp
IHsKLSAgICAgICAgbGluZXMucHVzaF9iYWNrKHN0ci5zdWJzdHIoc3RhcnQsIGkgLSBzdGFydCAt
IDEpKTsKLSAgICAgICAgc3RhcnQgPSBpICsgMTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAg
ICAgZXNjYXBlZCA9IHN0cltpXSA9PSAnXFwnOwotICAgIH0KLSAgfQotICBsaW5lcy5wdXNoX2Jh
Y2soc3RyLnN1YnN0cihzdGFydCwgZW5kIC0gc3RhcnQpKTsKLSAgcmV0dXJuIGxpbmVzOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UKLQotLy8gQ29uc3RydWN0cyBhbmQgcmV0dXJucyB0aGUgbWVzc2Fn
ZSBmb3IgYW4gZXF1YWxpdHkgYXNzZXJ0aW9uCi0vLyAoZS5nLiBBU1NFUlRfRVEsIEVYUEVDVF9T
VFJFUSwgZXRjKSBmYWlsdXJlLgotLy8KLS8vIFRoZSBmaXJzdCBmb3VyIHBhcmFtZXRlcnMgYXJl
IHRoZSBleHByZXNzaW9ucyB1c2VkIGluIHRoZSBhc3NlcnRpb24KLS8vIGFuZCB0aGVpciB2YWx1
ZXMsIGFzIHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgZm9yIEFTU0VSVF9FUShmb28sIGJhcikKLS8v
IHdoZXJlIGZvbyBpcyA1IGFuZCBiYXIgaXMgNiwgd2UgaGF2ZToKLS8vCi0vLyAgIGxoc19leHBy
ZXNzaW9uOiAiZm9vIgotLy8gICByaHNfZXhwcmVzc2lvbjogImJhciIKLS8vICAgbGhzX3ZhbHVl
OiAgICAgICI1IgotLy8gICByaHNfdmFsdWU6ICAgICAgIjYiCi0vLwotLy8gVGhlIGlnbm9yaW5n
X2Nhc2UgcGFyYW1ldGVyIGlzIHRydWUgaWZmIHRoZSBhc3NlcnRpb24gaXMgYQotLy8gKl9TVFJD
QVNFRVEqLiAgV2hlbiBpdCdzIHRydWUsIHRoZSBzdHJpbmcgIklnbm9yaW5nIGNhc2UiIHdpbGwK
LS8vIGJlIGluc2VydGVkIGludG8gdGhlIG1lc3NhZ2UuCi1Bc3NlcnRpb25SZXN1bHQgRXFGYWls
dXJlKGNvbnN0IGNoYXIqIGxoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIGxoc192YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHJoc192YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpZ25vcmluZ19jYXNlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgIiAgICAgIEV4
cGVjdGVkOiAiIDw8IGxoc19leHByZXNzaW9uOwotICBpZiAobGhzX3ZhbHVlICE9IGxoc19leHBy
ZXNzaW9uKSB7Ci0gICAgbXNnIDw8ICJcbiAgICAgIFdoaWNoIGlzOiAiIDw8IGxoc192YWx1ZTsK
LSAgfQotICBtc2cgPDwgIlxuVG8gYmUgZXF1YWwgdG86ICIgPDwgcmhzX2V4cHJlc3Npb247Ci0g
IGlmIChyaHNfdmFsdWUgIT0gcmhzX2V4cHJlc3Npb24pIHsKLSAgICBtc2cgPDwgIlxuICAgICAg
V2hpY2ggaXM6ICIgPDwgcmhzX3ZhbHVlOwotICB9Ci0KLSAgaWYgKGlnbm9yaW5nX2Nhc2UpIHsK
LSAgICBtc2cgPDwgIlxuSWdub3JpbmcgY2FzZSI7Ci0gIH0KLQotICBpZiAoIWxoc192YWx1ZS5l
bXB0eSgpICYmICFyaHNfdmFsdWUuZW1wdHkoKSkgewotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBsaHNfbGluZXMgPQotICAgICAgICBTcGxpdEVzY2FwZWRTdHJpbmcobGhzX3Zh
bHVlKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmhzX2xpbmVzID0KLSAg
ICAgICAgU3BsaXRFc2NhcGVkU3RyaW5nKHJoc192YWx1ZSk7Ci0gICAgaWYgKGxoc19saW5lcy5z
aXplKCkgPiAxIHx8IHJoc19saW5lcy5zaXplKCkgPiAxKSB7Ci0gICAgICBtc2cgPDwgIlxuV2l0
aCBkaWZmOlxuIgotICAgICAgICAgIDw8IGVkaXRfZGlzdGFuY2U6OkNyZWF0ZVVuaWZpZWREaWZm
KGxoc19saW5lcywgcmhzX2xpbmVzKTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpIDw8IG1zZzsKLX0KLQotLy8gQ29uc3RydWN0cyBhIGZhaWx1cmUgbWVzc2FnZSBm
b3IgQm9vbGVhbiBhc3NlcnRpb25zIHN1Y2ggYXMgRVhQRUNUX1RSVUUuCi1zdGQ6OnN0cmluZyBH
ZXRCb29sQXNzZXJ0aW9uRmFpbHVyZU1lc3NhZ2UoCi0gICAgY29uc3QgQXNzZXJ0aW9uUmVzdWx0
JiBhc3NlcnRpb25fcmVzdWx0LAotICAgIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25fdGV4dCwKLSAg
ICBjb25zdCBjaGFyKiBhY3R1YWxfcHJlZGljYXRlX3ZhbHVlLAotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZSkgewotICBjb25zdCBjaGFyKiBhY3R1YWxfbWVzc2FnZSA9
IGFzc2VydGlvbl9yZXN1bHQubWVzc2FnZSgpOwotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8ICJW
YWx1ZSBvZjogIiA8PCBleHByZXNzaW9uX3RleHQKLSAgICAgIDw8ICJcbiAgQWN0dWFsOiAiIDw8
IGFjdHVhbF9wcmVkaWNhdGVfdmFsdWU7Ci0gIGlmIChhY3R1YWxfbWVzc2FnZVswXSAhPSAnXDAn
KQotICAgIG1zZyA8PCAiICgiIDw8IGFjdHVhbF9tZXNzYWdlIDw8ICIpIjsKLSAgbXNnIDw8ICJc
bkV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkX3ByZWRpY2F0ZV92YWx1ZTsKLSAgcmV0dXJuIG1zZy5H
ZXRTdHJpbmcoKTsKLX0KLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBpbXBsZW1lbnRpbmcgQVNT
RVJUX05FQVIuCi1Bc3NlcnRpb25SZXN1bHQgRG91YmxlTmVhclByZWRGb3JtYXQoY29uc3QgY2hh
ciogZXhwcjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYWJzX2Vycm9yX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHZhbDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IHZhbDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFic19l
cnJvcikgewotICBjb25zdCBkb3VibGUgZGlmZiA9IGZhYnModmFsMSAtIHZhbDIpOwotICBpZiAo
ZGlmZiA8PSBhYnNfZXJyb3IpIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgLy8gVE9E
Tyh3YW4pOiBkbyBub3QgcHJpbnQgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gaWYgaXQncwot
ICAvLyBhbHJlYWR5IGEgbGl0ZXJhbC4KLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQotICAg
ICAgPDwgIlRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIiA8PCBleHByMSA8PCAiIGFuZCAiIDw8IGV4
cHIyCi0gICAgICA8PCAiIGlzICIgPDwgZGlmZiA8PCAiLCB3aGljaCBleGNlZWRzICIgPDwgYWJz
X2Vycm9yX2V4cHIgPDwgIiwgd2hlcmVcbiIKLSAgICAgIDw8IGV4cHIxIDw8ICIgZXZhbHVhdGVz
IHRvICIgPDwgdmFsMSA8PCAiLFxuIgotICAgICAgPDwgZXhwcjIgPDwgIiBldmFsdWF0ZXMgdG8g
IiA8PCB2YWwyIDw8ICIsIGFuZFxuIgotICAgICAgPDwgYWJzX2Vycm9yX2V4cHIgPDwgIiBldmFs
dWF0ZXMgdG8gIiA8PCBhYnNfZXJyb3IgPDwgIi4iOwotfQotCi0KLS8vIEhlbHBlciB0ZW1wbGF0
ZSBmb3IgaW1wbGVtZW50aW5nIEZsb2F0TEUoKSBhbmQgRG91YmxlTEUoKS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBSYXdUeXBlPgotQXNzZXJ0aW9uUmVzdWx0IEZsb2F0aW5nUG9pbnRMRShjb25zdCBj
aGFyKiBleHByMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd1R5cGUgdmFsMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3VHlwZSB2YWwyKSB7Ci0gIC8vIFJldHVy
bnMgc3VjY2VzcyBpZiB2YWwxIGlzIGxlc3MgdGhhbiB2YWwyLAotICBpZiAodmFsMSA8IHZhbDIp
IHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci0KLSAgLy8gb3IgaWYgdmFs
MSBpcyBhbG1vc3QgZXF1YWwgdG8gdmFsMi4KLSAgY29uc3QgRmxvYXRpbmdQb2ludDxSYXdUeXBl
PiBsaHModmFsMSksIHJocyh2YWwyKTsKLSAgaWYgKGxocy5BbG1vc3RFcXVhbHMocmhzKSkgewot
ICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLQotICAvLyBOb3RlIHRoYXQgdGhl
IGFib3ZlIHR3byBjaGVja3Mgd2lsbCBib3RoIGZhaWwgaWYgZWl0aGVyIHZhbDEgb3IKLSAgLy8g
dmFsMiBpcyBOYU4sIGFzIHRoZSBJRUVFIGZsb2F0aW5nLXBvaW50IHN0YW5kYXJkIHJlcXVpcmVz
IHRoYXQKLSAgLy8gYW55IHByZWRpY2F0ZSBpbnZvbHZpbmcgYSBOYU4gbXVzdCByZXR1cm4gZmFs
c2UuCi0KLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSB2YWwxX3NzOwotICB2YWwxX3NzIDw8IHN0ZDo6
c2V0cHJlY2lzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8UmF3VHlwZT46OmRpZ2l0czEwICsgMikK
LSAgICAgICAgICA8PCB2YWwxOwotCi0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gdmFsMl9zczsKLSAg
dmFsMl9zcyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFJhd1R5cGU+
OjpkaWdpdHMxMCArIDIpCi0gICAgICAgICAgPDwgdmFsMjsKLQotICByZXR1cm4gQXNzZXJ0aW9u
RmFpbHVyZSgpCi0gICAgICA8PCAiRXhwZWN0ZWQ6ICgiIDw8IGV4cHIxIDw8ICIpIDw9ICgiIDw8
IGV4cHIyIDw8ICIpXG4iCi0gICAgICA8PCAiICBBY3R1YWw6ICIgPDwgU3RyaW5nU3RyZWFtVG9T
dHJpbmcoJnZhbDFfc3MpIDw8ICIgdnMgIgotICAgICAgPDwgU3RyaW5nU3RyZWFtVG9TdHJpbmco
JnZhbDJfc3MpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gQXNzZXJ0cyB0
aGF0IHZhbDEgaXMgbGVzcyB0aGFuLCBvciBhbG1vc3QgZXF1YWwgdG8sIHZhbDIuICBGYWlscwot
Ly8gb3RoZXJ3aXNlLiAgSW4gcGFydGljdWxhciwgaXQgZmFpbHMgaWYgZWl0aGVyIHZhbDEgb3Ig
dmFsMiBpcyBOYU4uCi1Bc3NlcnRpb25SZXN1bHQgRmxvYXRMRShjb25zdCBjaGFyKiBleHByMSwg
Y29uc3QgY2hhciogZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB2YWwxLCBm
bG9hdCB2YWwyKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6RmxvYXRpbmdQb2ludExFPGZsb2F0Pihl
eHByMSwgZXhwcjIsIHZhbDEsIHZhbDIpOwotfQotCi0vLyBBc3NlcnRzIHRoYXQgdmFsMSBpcyBs
ZXNzIHRoYW4sIG9yIGFsbW9zdCBlcXVhbCB0bywgdmFsMi4gIEZhaWxzCi0vLyBvdGhlcndpc2Uu
ICBJbiBwYXJ0aWN1bGFyLCBpdCBmYWlscyBpZiBlaXRoZXIgdmFsMSBvciB2YWwyIGlzIE5hTi4K
LUFzc2VydGlvblJlc3VsdCBEb3VibGVMRShjb25zdCBjaGFyKiBleHByMSwgY29uc3QgY2hhciog
ZXhwcjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbDEsIGRvdWJsZSB2YWwy
KSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6RmxvYXRpbmdQb2ludExFPGRvdWJsZT4oZXhwcjEsIGV4
cHIyLCB2YWwxLCB2YWwyKTsKLX0KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGhlIGhl
bHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0VRIHdpdGggaW50IG9yIGVudW0KLS8v
IGFyZ3VtZW50cy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJFUShjb25zdCBjaGFyKiBsaHNf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByaHNf
ZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IGxocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWdnZXN0SW50IHJocykgewotICBpZiAobGhz
ID09IHJocykgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLQotICByZXR1
cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIHJoc19leHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVz
c2FnZShsaHMsIHJocyksCi0gICAgICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZh
aWx1cmVNZXNzYWdlKHJocywgbGhzKSwKLSAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci19Ci0K
LS8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyB0aGUgaGVscGVyIGZ1bmN0aW9ucyBuZWVkZWQg
dG8gaW1wbGVtZW50Ci0vLyBBU1NFUlRfPz8gYW5kIEVYUEVDVF8/PyB3aXRoIGludGVnZXIgb3Ig
ZW51bSBhcmd1bWVudHMuICBJdCBpcyBoZXJlCi0vLyBqdXN0IHRvIGF2b2lkIGNvcHktYW5kLXBh
c3RlIG9mIHNpbWlsYXIgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhvcF9u
YW1lLCBvcClcCi1Bc3NlcnRpb25SZXN1bHQgQ21wSGVscGVyIyNvcF9uYW1lKGNvbnN0IGNoYXIq
IGV4cHIxLCBjb25zdCBjaGFyKiBleHByMiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaWdnZXN0SW50IHZhbDEsIEJpZ2dlc3RJbnQgdmFsMikge1wKLSAgaWYgKHZhbDEg
b3AgdmFsMikge1wKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpO1wKLSAgfSBlbHNlIHtc
Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSBcCi0gICAgICAgIDw8ICJFeHBlY3RlZDog
KCIgPDwgZXhwcjEgPDwgIikgIiAjb3AgIiAoIiA8PCBleHByMlwKLSAgICAgICAgPDwgIiksIGFj
dHVhbDogIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UodmFsMSwgdmFsMilc
Ci0gICAgICAgIDw8ICIgdnMgIiA8PCBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
dmFsMiwgdmFsMSk7XAotICB9XAotfQotCi0vLyBJbXBsZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rp
b24gZm9yIHtBU1NFUlR8RVhQRUNUfV9ORSB3aXRoIGludCBvcgotLy8gZW51bSBhcmd1bWVudHMu
Ci1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKE5FLCAhPSkKLS8vIEltcGxlbWVudHMgdGhlIGhlbHBl
ciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0xFIHdpdGggaW50IG9yCi0vLyBlbnVtIGFy
Z3VtZW50cy4KLUdURVNUX0lNUExfQ01QX0hFTFBFUl8oTEUsIDw9KQotLy8gSW1wbGVtZW50cyB0
aGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fTFQgd2l0aCBpbnQgb3IKLS8v
IGVudW0gYXJndW1lbnRzLgotR1RFU1RfSU1QTF9DTVBfSEVMUEVSXyhMVCwgPCApCi0vLyBJbXBs
ZW1lbnRzIHRoZSBoZWxwZXIgZnVuY3Rpb24gZm9yIHtBU1NFUlR8RVhQRUNUfV9HRSB3aXRoIGlu
dCBvcgotLy8gZW51bSBhcmd1bWVudHMuCi1HVEVTVF9JTVBMX0NNUF9IRUxQRVJfKEdFLCA+PSkK
LS8vIEltcGxlbWVudHMgdGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X0dU
IHdpdGggaW50IG9yCi0vLyBlbnVtIGFyZ3VtZW50cy4KLUdURVNUX0lNUExfQ01QX0hFTFBFUl8o
R1QsID4gKQotCi0jdW5kZWYgR1RFU1RfSU1QTF9DTVBfSEVMUEVSXwotCi0vLyBUaGUgaGVscGVy
IGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RSRVEuCi1Bc3NlcnRpb25SZXN1bHQgQ21w
SGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHJocykgewotICBpZiAoU3RyaW5nOjpDU3RyaW5nRXF1YWxz
KGxocywgcmhzKSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLQotICBy
ZXR1cm4gRXFGYWlsdXJlKGxoc19leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIHJoc19l
eHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcobGhzKSwKLSAgICAg
ICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKHJocyksCi0gICAgICAgICAgICAgICAgICAgZmFs
c2UpOwotfQotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1fU1RS
Q0FTRUVRLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VFUShjb25zdCBjaGFyKiBs
aHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmhzKSB7Ci0gIGlmIChTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVh
bHMobGhzLCByaHMpKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgfQotCi0g
IHJldHVybiBFcUZhaWx1cmUobGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgcmhz
X2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhsaHMpLAotICAg
ICAgICAgICAgICAgICAgIFByaW50VG9TdHJpbmcocmhzKSwKLSAgICAgICAgICAgICAgICAgICB0
cnVlKTsKLX0KLQotLy8gVGhlIGhlbHBlciBmdW5jdGlvbiBmb3Ige0FTU0VSVHxFWFBFQ1R9X1NU
Uk5FLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUk5FKGNvbnN0IGNoYXIqIHMxX2V4cHJl
c3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogczJfZXhw
cmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzMikgewotICBpZiAo
IVN0cmluZzo6Q1N0cmluZ0VxdWFscyhzMSwgczIpKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1
Y2Nlc3MoKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJF
eHBlY3RlZDogKCIgPDwgczFfZXhwcmVzc2lvbiA8PCAiKSAhPSAoIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8PCAiKSwgYWN0dWFsOiBcIiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHMxIDw8ICJcIiB2cyBcIiIgPDwgczIgPDwgIlwi
IjsKLSAgfQotfQotCi0vLyBUaGUgaGVscGVyIGZ1bmN0aW9uIGZvciB7QVNTRVJUfEVYUEVDVH1f
U1RSQ0FTRU5FLgotQXNzZXJ0aW9uUmVzdWx0IENtcEhlbHBlclNUUkNBU0VORShjb25zdCBjaGFy
KiBzMV9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBzMl9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogczIpIHsKLSAgaWYgKCFTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVh
bHMoczEsIHMyKSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKQotICAgICAgICA8PCAiRXhwZWN0ZWQ6ICgi
IDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAgICAgPDwgczJfZXhwcmVzc2lvbiA8
PCAiKSAoaWdub3JpbmcgY2FzZSksIGFjdHVhbDogXCIiCi0gICAgICAgIDw8IHMxIDw8ICJcIiB2
cyBcIiIgPDwgczIgPDwgIlwiIjsKLSAgfQotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
LQotbmFtZXNwYWNlIHsKLQotLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgaW1wbGVtZW50aW5nIElz
U3ViU3RyaW5nKCkgYW5kIElzTm90U3Vic3RyaW5nKCkuCi0KLS8vIFRoaXMgZ3JvdXAgb2Ygb3Zl
cmxvYWRlZCBmdW5jdGlvbnMgcmV0dXJuIHRydWUgaWZmIG5lZWRsZSBpcyBhCi0vLyBzdWJzdHJp
bmcgb2YgaGF5c3RhY2suICBOVUxMIGlzIGNvbnNpZGVyZWQgYSBzdWJzdHJpbmcgb2YgaXRzZWxm
Ci0vLyBvbmx5LgotCi1ib29sIElzU3Vic3RyaW5nUHJlZChjb25zdCBjaGFyKiBuZWVkbGUsIGNv
bnN0IGNoYXIqIGhheXN0YWNrKSB7Ci0gIGlmIChuZWVkbGUgPT0gTlVMTCB8fCBoYXlzdGFjayA9
PSBOVUxMKQotICAgIHJldHVybiBuZWVkbGUgPT0gaGF5c3RhY2s7Ci0KLSAgcmV0dXJuIHN0cnN0
cihoYXlzdGFjaywgbmVlZGxlKSAhPSBOVUxMOwotfQotCi1ib29sIElzU3Vic3RyaW5nUHJlZChj
b25zdCB3Y2hhcl90KiBuZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0YWNrKSB7Ci0gIGlmIChu
ZWVkbGUgPT0gTlVMTCB8fCBoYXlzdGFjayA9PSBOVUxMKQotICAgIHJldHVybiBuZWVkbGUgPT0g
aGF5c3RhY2s7Ci0KLSAgcmV0dXJuIHdjc3N0cihoYXlzdGFjaywgbmVlZGxlKSAhPSBOVUxMOwot
fQotCi0vLyBTdHJpbmdUeXBlIGhlcmUgY2FuIGJlIGVpdGhlciA6OnN0ZDo6c3RyaW5nIG9yIDo6
c3RkOjp3c3RyaW5nLgotdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Ci1ib29sIElzU3Vi
c3RyaW5nUHJlZChjb25zdCBTdHJpbmdUeXBlJiBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmdUeXBlJiBoYXlzdGFjaykgewotICByZXR1cm4gaGF5c3RhY2suZmluZChu
ZWVkbGUpICE9IFN0cmluZ1R5cGU6Om5wb3M7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaW1wbGVt
ZW50cyBlaXRoZXIgSXNTdWJzdHJpbmcoKSBvciBJc05vdFN1YnN0cmluZygpLAotLy8gZGVwZW5k
aW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGUgZXhwZWN0ZWRfdG9fYmVfc3Vic3RyaW5nIHBhcmFtZXRl
ci4KLS8vIFN0cmluZ1R5cGUgaGVyZSBjYW4gYmUgY29uc3QgY2hhciosIGNvbnN0IHdjaGFyX3Qq
LCA6OnN0ZDo6c3RyaW5nLAotLy8gb3IgOjpzdGQ6OndzdHJpbmcuCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLUFzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZ0ltcGwoCi0gICAgYm9v
bCBleHBlY3RlZF90b19iZV9zdWJzdHJpbmcsCi0gICAgY29uc3QgY2hhciogbmVlZGxlX2V4cHIs
IGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgU3RyaW5nVHlwZSYgbmVlZGxl
LCBjb25zdCBTdHJpbmdUeXBlJiBoYXlzdGFjaykgewotICBpZiAoSXNTdWJzdHJpbmdQcmVkKG5l
ZWRsZSwgaGF5c3RhY2spID09IGV4cGVjdGVkX3RvX2JlX3N1YnN0cmluZykKLSAgICByZXR1cm4g
QXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIGNvbnN0IGJvb2wgaXNfd2lkZV9zdHJpbmcgPSBzaXpl
b2YobmVlZGxlWzBdKSA+IDE7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGJlZ2luX3N0cmluZ19xdW90
ZSA9IGlzX3dpZGVfc3RyaW5nID8gIkxcIiIgOiAiXCIiOwotICByZXR1cm4gQXNzZXJ0aW9uRmFp
bHVyZSgpCi0gICAgICA8PCAiVmFsdWUgb2Y6ICIgPDwgbmVlZGxlX2V4cHIgPDwgIlxuIgotICAg
ICAgPDwgIiAgQWN0dWFsOiAiIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBuZWVkbGUgPDwgIlwi
XG4iCi0gICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgKGV4cGVjdGVkX3RvX2JlX3N1YnN0cmluZyA/
ICIiIDogIm5vdCAiKQotICAgICAgPDwgImEgc3Vic3RyaW5nIG9mICIgPDwgaGF5c3RhY2tfZXhw
ciA8PCAiXG4iCi0gICAgICA8PCAiV2hpY2ggaXM6ICIgPDwgYmVnaW5fc3RyaW5nX3F1b3RlIDw8
IGhheXN0YWNrIDw8ICJcIiI7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBJc1N1YnN0cmlu
ZygpIGFuZCBJc05vdFN1YnN0cmluZygpIGNoZWNrIHdoZXRoZXIgbmVlZGxlIGlzIGEKLS8vIHN1
YnN0cmluZyBvZiBoYXlzdGFjayAoTlVMTCBpcyBjb25zaWRlcmVkIGEgc3Vic3RyaW5nIG9mIGl0
c2VsZgotLy8gb25seSksIGFuZCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB3
aGVuIHRoZXkgZmFpbC4KLQotQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0
IGNoYXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0
IGNoYXIqIG5lZWRsZSwgY29uc3QgY2hhciogaGF5c3RhY2spIHsKLSAgcmV0dXJuIElzU3Vic3Ry
aW5nSW1wbCh0cnVlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFj
ayk7Ci19Ci0KLUFzc2VydGlvblJlc3VsdCBJc1N1YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBu
ZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKLSAgICBjb25zdCB3Y2hhcl90
KiBuZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0YWNrKSB7Ci0gIHJldHVybiBJc1N1YnN0cmlu
Z0ltcGwodHJ1ZSwgbmVlZGxlX2V4cHIsIGhheXN0YWNrX2V4cHIsIG5lZWRsZSwgaGF5c3RhY2sp
OwotfQotCi1Bc3NlcnRpb25SZXN1bHQgSXNOb3RTdWJzdHJpbmcoCi0gICAgY29uc3QgY2hhciog
bmVlZGxlX2V4cHIsIGNvbnN0IGNoYXIqIGhheXN0YWNrX2V4cHIsCi0gICAgY29uc3QgY2hhciog
bmVlZGxlLCBjb25zdCBjaGFyKiBoYXlzdGFjaykgewotICByZXR1cm4gSXNTdWJzdHJpbmdJbXBs
KGZhbHNlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19
Ci0KLUFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmluZygKLSAgICBjb25zdCBjaGFyKiBuZWVk
bGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKLSAgICBjb25zdCB3Y2hhcl90KiBu
ZWVkbGUsIGNvbnN0IHdjaGFyX3QqIGhheXN0YWNrKSB7Ci0gIHJldHVybiBJc1N1YnN0cmluZ0lt
cGwoZmFsc2UsIG5lZWRsZV9leHByLCBoYXlzdGFja19leHByLCBuZWVkbGUsIGhheXN0YWNrKTsK
LX0KLQotQXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRs
ZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IDo6c3RkOjpzdHJp
bmcmIG5lZWRsZSwgY29uc3QgOjpzdGQ6OnN0cmluZyYgaGF5c3RhY2spIHsKLSAgcmV0dXJuIElz
U3Vic3RyaW5nSW1wbCh0cnVlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhwciwgbmVlZGxlLCBo
YXlzdGFjayk7Ci19Ci0KLUFzc2VydGlvblJlc3VsdCBJc05vdFN1YnN0cmluZygKLSAgICBjb25z
dCBjaGFyKiBuZWVkbGVfZXhwciwgY29uc3QgY2hhciogaGF5c3RhY2tfZXhwciwKLSAgICBjb25z
dCA6OnN0ZDo6c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjpzdHJpbmcmIGhheXN0YWNrKSB7
Ci0gIHJldHVybiBJc1N1YnN0cmluZ0ltcGwoZmFsc2UsIG5lZWRsZV9leHByLCBoYXlzdGFja19l
eHByLCBuZWVkbGUsIGhheXN0YWNrKTsKLX0KLQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwot
QXNzZXJ0aW9uUmVzdWx0IElzU3Vic3RyaW5nKAotICAgIGNvbnN0IGNoYXIqIG5lZWRsZV9leHBy
LCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBu
ZWVkbGUsIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBoYXlzdGFjaykgewotICByZXR1cm4gSXNTdWJz
dHJpbmdJbXBsKHRydWUsIG5lZWRsZV9leHByLCBoYXlzdGFja19leHByLCBuZWVkbGUsIGhheXN0
YWNrKTsKLX0KLQotQXNzZXJ0aW9uUmVzdWx0IElzTm90U3Vic3RyaW5nKAotICAgIGNvbnN0IGNo
YXIqIG5lZWRsZV9leHByLCBjb25zdCBjaGFyKiBoYXlzdGFja19leHByLAotICAgIGNvbnN0IDo6
c3RkOjp3c3RyaW5nJiBuZWVkbGUsIGNvbnN0IDo6c3RkOjp3c3RyaW5nJiBoYXlzdGFjaykgewot
ICByZXR1cm4gSXNTdWJzdHJpbmdJbXBsKGZhbHNlLCBuZWVkbGVfZXhwciwgaGF5c3RhY2tfZXhw
ciwgbmVlZGxlLCBoYXlzdGFjayk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklO
RwotCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotCi1uYW1l
c3BhY2UgewotCi0vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIElzSFJFU1VMVHtTdWNjZXNzRmFpbHVy
ZX0gcHJlZGljYXRlcwotQXNzZXJ0aW9uUmVzdWx0IEhSRVNVTFRGYWlsdXJlSGVscGVyKGNvbnN0
IGNoYXIqIGV4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBocikgeyAgLy8gTk9MSU5UCi0jIGlmIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLSAgLy8g
V2luZG93cyBDRSBkb2Vzbid0IHN1cHBvcnQgRm9ybWF0TWVzc2FnZS4KLSAgY29uc3QgY2hhciBl
cnJvcl90ZXh0W10gPSAiIjsKLQotIyBlbHNlCi0KLSAgLy8gTG9va3MgdXAgdGhlIGh1bWFuLXJl
YWRhYmxlIHN5c3RlbSBtZXNzYWdlIGZvciB0aGUgSFJFU1VMVCBjb2RlCi0gIC8vIGFuZCBzaW5j
ZSB3ZSdyZSBub3QgcGFzc2luZyBhbnkgcGFyYW1zIHRvIEZvcm1hdE1lc3NhZ2UsIHdlIGRvbid0
Ci0gIC8vIHdhbnQgaW5zZXJ0cyBleHBhbmRlZC4KLSAgY29uc3QgRFdPUkQga0ZsYWdzID0gRk9S
TUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfAotICAgICAgICAgICAgICAgICAgICAgICBGT1JNQVRf
TUVTU0FHRV9JR05PUkVfSU5TRVJUUzsKLSAgY29uc3QgRFdPUkQga0J1ZlNpemUgPSA0MDk2Owot
ICAvLyBHZXRzIHRoZSBzeXN0ZW0ncyBodW1hbiByZWFkYWJsZSBtZXNzYWdlIHN0cmluZyBmb3Ig
dGhpcyBIUkVTVUxULgotICBjaGFyIGVycm9yX3RleHRba0J1ZlNpemVdID0geyAnXDAnIH07Ci0g
IERXT1JEIG1lc3NhZ2VfbGVuZ3RoID0gOjpGb3JtYXRNZXNzYWdlQShrRmxhZ3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gbm8gc291cmNlLCB3ZSdy
ZSBhc2tpbmcgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBociwgIC8vIHRoZSBlcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgIC8vIG5vIGxpbmUgd2lkdGggcmVzdHJpY3Rpb25zCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl90ZXh0LCAgLy8gb3V0cHV0IGJ1ZmZlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0J1ZlNpemUsICAvLyBi
dWYgc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
ICAvLyBubyBhcmd1bWVudHMgZm9yIGluc2VydHMKLSAgLy8gVHJpbXMgdGFpbGluZyB3aGl0ZSBz
cGFjZSAoRm9ybWF0TWVzc2FnZSBsZWF2ZXMgYSB0cmFpbGluZyBDUi1MRikKLSAgZm9yICg7IG1l
c3NhZ2VfbGVuZ3RoICYmIElzU3BhY2UoZXJyb3JfdGV4dFttZXNzYWdlX2xlbmd0aCAtIDFdKTsK
LSAgICAgICAgICAtLW1lc3NhZ2VfbGVuZ3RoKSB7Ci0gICAgZXJyb3JfdGV4dFttZXNzYWdlX2xl
bmd0aCAtIDFdID0gJ1wwJzsKLSAgfQotCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5ET1dTX01P
QklMRQotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGVycm9yX2hleCgiMHgiICsgU3RyaW5nOjpGb3Jt
YXRIZXhJbnQoaHIpKTsKLSAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0g
ICAgICA8PCAiRXhwZWN0ZWQ6ICIgPDwgZXhwciA8PCAiICIgPDwgZXhwZWN0ZWQgPDwgIi5cbiIK
LSAgICAgIDw8ICIgIEFjdHVhbDogIiA8PCBlcnJvcl9oZXggPDwgIiAiIDw8IGVycm9yX3RleHQg
PDwgIlxuIjsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLUFzc2VydGlvblJlc3VsdCBJc0hSRVNV
TFRTdWNjZXNzKGNvbnN0IGNoYXIqIGV4cHIsIGxvbmcgaHIpIHsgIC8vIE5PTElOVAotICBpZiAo
U1VDQ0VFREVEKGhyKSkgewotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0gIH0KLSAg
cmV0dXJuIEhSRVNVTFRGYWlsdXJlSGVscGVyKGV4cHIsICJzdWNjZWVkcyIsIGhyKTsKLX0KLQot
QXNzZXJ0aW9uUmVzdWx0IElzSFJFU1VMVEZhaWx1cmUoY29uc3QgY2hhciogZXhwciwgbG9uZyBo
cikgeyAgLy8gTk9MSU5UCi0gIGlmIChGQUlMRUQoaHIpKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlv
blN1Y2Nlc3MoKTsKLSAgfQotICByZXR1cm4gSFJFU1VMVEZhaWx1cmVIZWxwZXIoZXhwciwgImZh
aWxzIiwgaHIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVXRpbGl0
eSBmdW5jdGlvbnMgZm9yIGVuY29kaW5nIFVuaWNvZGUgdGV4dCAod2lkZSBzdHJpbmdzKSBpbgot
Ly8gVVRGLTguCi0KLS8vIEEgVW5pY29kZSBjb2RlLXBvaW50IGNhbiBoYXZlIHVwdG8gMjEgYml0
cywgYW5kIGlzIGVuY29kZWQgaW4gVVRGLTgKLS8vIGxpa2UgdGhpczoKLS8vCi0vLyBDb2RlLXBv
aW50IGxlbmd0aCAgIEVuY29kaW5nCi0vLyAgIDAgLSAgNyBiaXRzICAgICAgIDB4eHh4eHh4Ci0v
LyAgIDggLSAxMSBiaXRzICAgICAgIDExMHh4eHh4IDEweHh4eHh4Ci0vLyAgMTIgLSAxNiBiaXRz
ICAgICAgIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4Ci0vLyAgMTcgLSAyMSBiaXRzICAgICAg
IDExMTEweHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4Ci0KLS8vIFRoZSBtYXhpbXVtIGNv
ZGUtcG9pbnQgYSBvbmUtYnl0ZSBVVEYtOCBzZXF1ZW5jZSBjYW4gcmVwcmVzZW50LgotY29uc3Qg
VUludDMyIGtNYXhDb2RlUG9pbnQxID0gKHN0YXRpY19jYXN0PFVJbnQzMj4oMSkgPDwgIDcpIC0g
MTsKLQotLy8gVGhlIG1heGltdW0gY29kZS1wb2ludCBhIHR3by1ieXRlIFVURi04IHNlcXVlbmNl
IGNhbiByZXByZXNlbnQuCi1jb25zdCBVSW50MzIga01heENvZGVQb2ludDIgPSAoc3RhdGljX2Nh
c3Q8VUludDMyPigxKSA8PCAoNSArIDYpKSAtIDE7Ci0KLS8vIFRoZSBtYXhpbXVtIGNvZGUtcG9p
bnQgYSB0aHJlZS1ieXRlIFVURi04IHNlcXVlbmNlIGNhbiByZXByZXNlbnQuCi1jb25zdCBVSW50
MzIga01heENvZGVQb2ludDMgPSAoc3RhdGljX2Nhc3Q8VUludDMyPigxKSA8PCAoNCArIDIqNikp
IC0gMTsKLQotLy8gVGhlIG1heGltdW0gY29kZS1wb2ludCBhIGZvdXItYnl0ZSBVVEYtOCBzZXF1
ZW5jZSBjYW4gcmVwcmVzZW50LgotY29uc3QgVUludDMyIGtNYXhDb2RlUG9pbnQ0ID0gKHN0YXRp
Y19jYXN0PFVJbnQzMj4oMSkgPDwgKDMgKyAzKjYpKSAtIDE7Ci0KLS8vIENob3BzIG9mZiB0aGUg
biBsb3dlc3QgYml0cyBmcm9tIGEgYml0IHBhdHRlcm4uICBSZXR1cm5zIHRoZSBuCi0vLyBsb3dl
c3QgYml0cy4gIEFzIGEgc2lkZSBlZmZlY3QsIHRoZSBvcmlnaW5hbCBiaXQgcGF0dGVybiB3aWxs
IGJlCi0vLyBzaGlmdGVkIHRvIHRoZSByaWdodCBieSBuIGJpdHMuCi1pbmxpbmUgVUludDMyIENo
b3BMb3dCaXRzKFVJbnQzMiogYml0cywgaW50IG4pIHsKLSAgY29uc3QgVUludDMyIGxvd19iaXRz
ID0gKmJpdHMgJiAoKHN0YXRpY19jYXN0PFVJbnQzMj4oMSkgPDwgbikgLSAxKTsKLSAgKmJpdHMg
Pj49IG47Ci0gIHJldHVybiBsb3dfYml0czsKLX0KLQotLy8gQ29udmVydHMgYSBVbmljb2RlIGNv
ZGUgcG9pbnQgdG8gYSBuYXJyb3cgc3RyaW5nIGluIFVURi04IGVuY29kaW5nLgotLy8gY29kZV9w
b2ludCBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBVSW50MzIgYmVjYXVzZSB3Y2hhcl90IG1heSBub3Qg
YmUKLS8vIHdpZGUgZW5vdWdoIHRvIGNvbnRhaW4gYSBjb2RlIHBvaW50LgotLy8gSWYgdGhlIGNv
ZGVfcG9pbnQgaXMgbm90IGEgdmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Ci0vLyAoaS5lLiBvdXRz
aWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBGRkZGKSBpdCB3aWxsIGJlIGNvbnZlcnRl
ZAotLy8gdG8gIihJbnZhbGlkIFVuaWNvZGUgMHhYWFhYWFhYWCkiLgotc3RkOjpzdHJpbmcgQ29k
ZVBvaW50VG9VdGY4KFVJbnQzMiBjb2RlX3BvaW50KSB7Ci0gIGlmIChjb2RlX3BvaW50ID4ga01h
eENvZGVQb2ludDQpIHsKLSAgICByZXR1cm4gIihJbnZhbGlkIFVuaWNvZGUgMHgiICsgU3RyaW5n
OjpGb3JtYXRIZXhJbnQoY29kZV9wb2ludCkgKyAiKSI7Ci0gIH0KLQotICBjaGFyIHN0cls1XTsg
IC8vIEJpZyBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IHZhbGlkIGNvZGUgcG9pbnQuCi0gIGlmIChj
b2RlX3BvaW50IDw9IGtNYXhDb2RlUG9pbnQxKSB7Ci0gICAgc3RyWzFdID0gJ1wwJzsKLSAgICBz
dHJbMF0gPSBzdGF0aWNfY2FzdDxjaGFyPihjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIDB4eHh4eHh4Ci0gIH0gZWxzZSBpZiAoY29kZV9wb2ludCA8PSBrTWF4Q29kZVBv
aW50MikgewotICAgIHN0clsyXSA9ICdcMCc7Ci0gICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hh
cj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2KSk7ICAvLyAxMHh4eHh4eAotICAg
IHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4QzAgfCBjb2RlX3BvaW50KTsgICAgICAgICAg
ICAgICAgICAgLy8gMTEweHh4eHgKLSAgfSBlbHNlIGlmIChjb2RlX3BvaW50IDw9IGtNYXhDb2Rl
UG9pbnQzKSB7Ci0gICAgc3RyWzNdID0gJ1wwJzsKLSAgICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxj
aGFyPigweDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4Ci0g
ICAgc3RyWzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3Bv
aW50LCA2KSk7ICAvLyAxMHh4eHh4eAotICAgIHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4
RTAgfCBjb2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTExMHh4eHgKLSAgfSBlbHNl
IHsgIC8vIGNvZGVfcG9pbnQgPD0ga01heENvZGVQb2ludDQKLSAgICBzdHJbNF0gPSAnXDAnOwot
ICAgIHN0clszXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCBDaG9wTG93Qml0cygmY29kZV9w
b2ludCwgNikpOyAgLy8gMTB4eHh4eHgKLSAgICBzdHJbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigw
eDgwIHwgQ2hvcExvd0JpdHMoJmNvZGVfcG9pbnQsIDYpKTsgIC8vIDEweHh4eHh4Ci0gICAgc3Ry
WzFdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHg4MCB8IENob3BMb3dCaXRzKCZjb2RlX3BvaW50LCA2
KSk7ICAvLyAxMHh4eHh4eAotICAgIHN0clswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RjAgfCBj
b2RlX3BvaW50KTsgICAgICAgICAgICAgICAgICAgLy8gMTExMTB4eHgKLSAgfQotICByZXR1cm4g
c3RyOwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMgb25seSBtYWtlIHNlbnNl
IGlmIHRoZSB0aGUgc3lzdGVtCi0vLyB1c2VzIFVURi0xNiBmb3Igd2lkZSBzdHJpbmcgZW5jb2Rp
bmcuIEFsbCBzdXBwb3J0ZWQgc3lzdGVtcwotLy8gd2l0aCAxNiBiaXQgd2NoYXJfdCAoV2luZG93
cywgQ3lnd2luLCBTeW1iaWFuIE9TKSBkbyB1c2UgVVRGLTE2LgotCi0vLyBEZXRlcm1pbmVzIGlm
IHRoZSBhcmd1bWVudHMgY29uc3RpdHV0ZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKLS8vIGFuZCB0
aHVzIHNob3VsZCBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIFVuaWNvZGUgY29kZSBwb2ludAot
Ly8gdXNpbmcgQ3JlYXRlQ29kZVBvaW50RnJvbVV0ZjE2U3Vycm9nYXRlUGFpci4KLWlubGluZSBi
b29sIElzVXRmMTZTdXJyb2dhdGVQYWlyKHdjaGFyX3QgZmlyc3QsIHdjaGFyX3Qgc2Vjb25kKSB7
Ci0gIHJldHVybiBzaXplb2Yod2NoYXJfdCkgPT0gMiAmJgotICAgICAgKGZpcnN0ICYgMHhGQzAw
KSA9PSAweEQ4MDAgJiYgKHNlY29uZCAmIDB4RkMwMCkgPT0gMHhEQzAwOwotfQotCi0vLyBDcmVh
dGVzIGEgVW5pY29kZSBjb2RlIHBvaW50IGZyb20gVVRGMTYgc3Vycm9nYXRlIHBhaXIuCi1pbmxp
bmUgVUludDMyIENyZWF0ZUNvZGVQb2ludEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIod2NoYXJfdCBm
aXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3Y2hhcl90IHNlY29uZCkgewotICBjb25zdCBVSW50MzIgbWFzayA9ICgxIDw8IDEwKSAtIDE7
Ci0gIHJldHVybiAoc2l6ZW9mKHdjaGFyX3QpID09IDIpID8KLSAgICAgICgoKGZpcnN0ICYgbWFz
aykgPDwgMTApIHwgKHNlY29uZCAmIG1hc2spKSArIDB4MTAwMDAgOgotICAgICAgLy8gVGhpcyBm
dW5jdGlvbiBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIHRoZSBjb25kaXRpb24gaXMKLSAgICAg
IC8vIGZhbHNlLCBidXQgd2UgcHJvdmlkZSBhIHNlbnNpYmxlIGRlZmF1bHQgaW4gY2FzZSBpdCBp
cy4KLSAgICAgIHN0YXRpY19jYXN0PFVJbnQzMj4oZmlyc3QpOwotfQotCi0vLyBDb252ZXJ0cyBh
IHdpZGUgc3RyaW5nIHRvIGEgbmFycm93IHN0cmluZyBpbiBVVEYtOCBlbmNvZGluZy4KLS8vIFRo
ZSB3aWRlIHN0cmluZyBpcyBhc3N1bWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBlbmNvZGluZzoK
LS8vICAgVVRGLTE2IGlmIHNpemVvZih3Y2hhcl90KSA9PSAyIChvbiBXaW5kb3dzLCBDeWd3aW4s
IFN5bWJpYW4gT1MpCi0vLyAgIFVURi0zMiBpZiBzaXplb2Yod2NoYXJfdCkgPT0gNCAob24gTGlu
dXgpCi0vLyBQYXJhbWV0ZXIgc3RyIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZCB3aWRlIHN0
cmluZy4KLS8vIFBhcmFtZXRlciBudW1fY2hhcnMgbWF5IGFkZGl0aW9uYWxseSBsaW1pdCB0aGUg
bnVtYmVyCi0vLyBvZiB3Y2hhcl90IGNoYXJhY3RlcnMgcHJvY2Vzc2VkLiAtMSBpcyB1c2VkIHdo
ZW4gdGhlIGVudGlyZSBzdHJpbmcKLS8vIHNob3VsZCBiZSBwcm9jZXNzZWQuCi0vLyBJZiB0aGUg
c3RyaW5nIGNvbnRhaW5zIGNvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCB2YWxpZCBVbmljb2RlIGNv
ZGUgcG9pbnRzCi0vLyAoaS5lLiBvdXRzaWRlIG9mIFVuaWNvZGUgcmFuZ2UgVSswIHRvIFUrMTBG
RkZGKSB0aGV5IHdpbGwgYmUgb3V0cHV0Ci0vLyBhcyAnKEludmFsaWQgVW5pY29kZSAweFhYWFhY
WFhYKScuIElmIHRoZSBzdHJpbmcgaXMgaW4gVVRGMTYgZW5jb2RpbmcKLS8vIGFuZCBjb250YWlu
cyBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMsIHZhbHVlcyBpbiB0aG9zZSBwYWlycwot
Ly8gd2lsbCBiZSBlbmNvZGVkIGFzIGluZGl2aWR1YWwgVW5pY29kZSBjaGFyYWN0ZXJzIGZyb20g
QmFzaWMgTm9ybWFsIFBsYW5lLgotc3RkOjpzdHJpbmcgV2lkZVN0cmluZ1RvVXRmOChjb25zdCB3
Y2hhcl90KiBzdHIsIGludCBudW1fY2hhcnMpIHsKLSAgaWYgKG51bV9jaGFycyA9PSAtMSkKLSAg
ICBudW1fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHdjc2xlbihzdHIpKTsKLQotICA6OnN0ZDo6
c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fY2hhcnM7ICsr
aSkgewotICAgIFVJbnQzMiB1bmljb2RlX2NvZGVfcG9pbnQ7Ci0KLSAgICBpZiAoc3RyW2ldID09
IEwnXDAnKSB7Ci0gICAgICBicmVhazsKLSAgICB9IGVsc2UgaWYgKGkgKyAxIDwgbnVtX2NoYXJz
ICYmIElzVXRmMTZTdXJyb2dhdGVQYWlyKHN0cltpXSwgc3RyW2kgKyAxXSkpIHsKLSAgICAgIHVu
aWNvZGVfY29kZV9wb2ludCA9IENyZWF0ZUNvZGVQb2ludEZyb21VdGYxNlN1cnJvZ2F0ZVBhaXIo
c3RyW2ldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJbaSArIDFdKTsKLSAgICAgIGkrKzsKLSAgICB9IGVsc2Ugewot
ICAgICAgdW5pY29kZV9jb2RlX3BvaW50ID0gc3RhdGljX2Nhc3Q8VUludDMyPihzdHJbaV0pOwot
ICAgIH0KLQotICAgIHN0cmVhbSA8PCBDb2RlUG9pbnRUb1V0ZjgodW5pY29kZV9jb2RlX3BvaW50
KTsKLSAgfQotICByZXR1cm4gU3RyaW5nU3RyZWFtVG9TdHJpbmcoJnN0cmVhbSk7Ci19Ci0KLS8v
IENvbnZlcnRzIGEgd2lkZSBDIHN0cmluZyB0byBhbiBzdGQ6OnN0cmluZyB1c2luZyB0aGUgVVRG
LTggZW5jb2RpbmcuCi0vLyBOVUxMIHdpbGwgYmUgY29udmVydGVkIHRvICIobnVsbCkiLgotc3Rk
OjpzdHJpbmcgU3RyaW5nOjpTaG93V2lkZUNTdHJpbmcoY29uc3Qgd2NoYXJfdCAqIHdpZGVfY19z
dHIpIHsKLSAgaWYgKHdpZGVfY19zdHIgPT0gTlVMTCkgIHJldHVybiAiKG51bGwpIjsKLQotICBy
ZXR1cm4gaW50ZXJuYWw6OldpZGVTdHJpbmdUb1V0Zjgod2lkZV9jX3N0ciwgLTEpOwotfQotCi0v
LyBDb21wYXJlcyB0d28gd2lkZSBDIHN0cmluZ3MuICBSZXR1cm5zIHRydWUgaWZmIHRoZXkgaGF2
ZSB0aGUgc2FtZQotLy8gY29udGVudC4KLS8vCi0vLyBVbmxpa2Ugd2NzY21wKCksIHRoaXMgZnVu
Y3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50KHMpLiAgQSBOVUxMCi0vLyBDIHN0cmluZyBp
cyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwgQyBzdHJpbmcsCi0vLyBpbmNs
dWRpbmcgdGhlIGVtcHR5IHN0cmluZy4KLWJvb2wgU3RyaW5nOjpXaWRlQ1N0cmluZ0VxdWFscyhj
b25zdCB3Y2hhcl90ICogbGhzLCBjb25zdCB3Y2hhcl90ICogcmhzKSB7Ci0gIGlmIChsaHMgPT0g
TlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwotCi0gIGlmIChyaHMgPT0gTlVMTCkgcmV0dXJuIGZh
bHNlOwotCi0gIHJldHVybiB3Y3NjbXAobGhzLCByaHMpID09IDA7Ci19Ci0KLS8vIEhlbHBlciBm
dW5jdGlvbiBmb3IgKl9TVFJFUSBvbiB3aWRlIHN0cmluZ3MuCi1Bc3NlcnRpb25SZXN1bHQgQ21w
SGVscGVyU1RSRVEoY29uc3QgY2hhciogbGhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmhzX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogbGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QqIHJocykgewotICBpZiAoU3RyaW5nOjpXaWRlQ1N0
cmluZ0VxdWFscyhsaHMsIHJocykpIHsKLSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwot
ICB9Ci0KLSAgcmV0dXJuIEVxRmFpbHVyZShsaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICByaHNfZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICBQcmludFRvU3RyaW5nKGxo
cyksCi0gICAgICAgICAgICAgICAgICAgUHJpbnRUb1N0cmluZyhyaHMpLAotICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKLX0KLQotLy8gSGVscGVyIGZ1bmN0aW9uIGZvciAqX1NUUk5FIG9uIHdp
ZGUgc3RyaW5ncy4KLUFzc2VydGlvblJlc3VsdCBDbXBIZWxwZXJTVFJORShjb25zdCBjaGFyKiBz
MV9leHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHMyX2V4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2No
YXJfdCogczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCog
czIpIHsKLSAgaWYgKCFTdHJpbmc6OldpZGVDU3RyaW5nRXF1YWxzKHMxLCBzMikpIHsKLSAgICBy
ZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci0KLSAgcmV0dXJuIEFzc2VydGlvbkZhaWx1
cmUoKSA8PCAiRXhwZWN0ZWQ6ICgiIDw8IHMxX2V4cHJlc3Npb24gPDwgIikgIT0gKCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBzMl9leHByZXNzaW9uIDw8ICIpLCBhY3R1YWw6ICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBQcmludFRvU3RyaW5nKHMxKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIgdnMgIiA8PCBQcmludFRvU3RyaW5nKHMyKTsKLX0K
LQotLy8gQ29tcGFyZXMgdHdvIEMgc3RyaW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVybnMgdHJ1
ZSBpZmYgdGhleSBoYXZlCi0vLyB0aGUgc2FtZSBjb250ZW50LgotLy8KLS8vIFVubGlrZSBzdHJj
YXNlY21wKCksIHRoaXMgZnVuY3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50KHMpLiAgQQot
Ly8gTlVMTCBDIHN0cmluZyBpcyBjb25zaWRlcmVkIGRpZmZlcmVudCB0byBhbnkgbm9uLU5VTEwg
QyBzdHJpbmcsCi0vLyBpbmNsdWRpbmcgdGhlIGVtcHR5IHN0cmluZy4KLWJvb2wgU3RyaW5nOjpD
YXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKGNvbnN0IGNoYXIgKiBsaHMsIGNvbnN0IGNoYXIg
KiByaHMpIHsKLSAgaWYgKGxocyA9PSBOVUxMKQotICAgIHJldHVybiByaHMgPT0gTlVMTDsKLSAg
aWYgKHJocyA9PSBOVUxMKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHBvc2l4OjpTdHJD
YXNlQ21wKGxocywgcmhzKSA9PSAwOwotfQotCi0gIC8vIENvbXBhcmVzIHR3byB3aWRlIEMgc3Ry
aW5ncywgaWdub3JpbmcgY2FzZS4gIFJldHVybnMgdHJ1ZSBpZmYgdGhleQotICAvLyBoYXZlIHRo
ZSBzYW1lIGNvbnRlbnQuCi0gIC8vCi0gIC8vIFVubGlrZSB3Y3NjYXNlY21wKCksIHRoaXMgZnVu
Y3Rpb24gY2FuIGhhbmRsZSBOVUxMIGFyZ3VtZW50KHMpLgotICAvLyBBIE5VTEwgQyBzdHJpbmcg
aXMgY29uc2lkZXJlZCBkaWZmZXJlbnQgdG8gYW55IG5vbi1OVUxMIHdpZGUgQyBzdHJpbmcsCi0g
IC8vIGluY2x1ZGluZyB0aGUgZW1wdHkgc3RyaW5nLgotICAvLyBOQjogVGhlIGltcGxlbWVudGF0
aW9ucyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zIHNsaWdodGx5IGRpZmZlci4KLSAgLy8gT24gd2lu
ZG93cywgdGhpcyBtZXRob2QgdXNlcyBfd2NzaWNtcCB3aGljaCBjb21wYXJlcyBhY2NvcmRpbmcg
dG8gTENfQ1RZUEUKLSAgLy8gZW52aXJvbm1lbnQgdmFyaWFibGUuIE9uIEdOVSBwbGF0Zm9ybSB0
aGlzIG1ldGhvZCB1c2VzIHdjc2Nhc2VjbXAKLSAgLy8gd2hpY2ggY29tcGFyZXMgYWNjb3JkaW5n
IHRvIExDX0NUWVBFIGNhdGVnb3J5IG9mIHRoZSBjdXJyZW50IGxvY2FsZS4KLSAgLy8gT24gTWFj
T1MgWCwgaXQgdXNlcyB0b3dsb3dlciwgd2hpY2ggYWxzbyB1c2VzIExDX0NUWVBFIGNhdGVnb3J5
IG9mIHRoZQotICAvLyBjdXJyZW50IGxvY2FsZS4KLWJvb2wgU3RyaW5nOjpDYXNlSW5zZW5zaXRp
dmVXaWRlQ1N0cmluZ0VxdWFscyhjb25zdCB3Y2hhcl90KiBsaHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCogcmhzKSB7Ci0gIGlm
IChsaHMgPT0gTlVMTCkgcmV0dXJuIHJocyA9PSBOVUxMOwotCi0gIGlmIChyaHMgPT0gTlVMTCkg
cmV0dXJuIGZhbHNlOwotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotICByZXR1cm4gX3djc2ljbXAo
bGhzLCByaHMpID09IDA7Ci0jZWxpZiBHVEVTVF9PU19MSU5VWCAmJiAhR1RFU1RfT1NfTElOVVhf
QU5EUk9JRAotICByZXR1cm4gd2NzY2FzZWNtcChsaHMsIHJocykgPT0gMDsKLSNlbHNlCi0gIC8v
IEFuZHJvaWQsIE1hYyBPUyBYIGFuZCBDeWd3aW4gZG9uJ3QgZGVmaW5lIHdjc2Nhc2VjbXAuCi0g
IC8vIE90aGVyIHVua25vd24gT1NlcyBtYXkgbm90IGRlZmluZSBpdCBlaXRoZXIuCi0gIHdpbnRf
dCBsZWZ0LCByaWdodDsKLSAgZG8gewotICAgIGxlZnQgPSB0b3dsb3dlcigqbGhzKyspOwotICAg
IHJpZ2h0ID0gdG93bG93ZXIoKnJocysrKTsKLSAgfSB3aGlsZSAobGVmdCAmJiBsZWZ0ID09IHJp
Z2h0KTsKLSAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7Ci0jZW5kaWYgIC8vIE9TIHNlbGVjdG9yCi19
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgc3RyIGVuZHMgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LCBp
Z25vcmluZyBjYXNlLgotLy8gQW55IHN0cmluZyBpcyBjb25zaWRlcmVkIHRvIGVuZCB3aXRoIGFu
IGVtcHR5IHN1ZmZpeC4KLWJvb2wgU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4KSB7Ci0g
IGNvbnN0IHNpemVfdCBzdHJfbGVuID0gc3RyLmxlbmd0aCgpOwotICBjb25zdCBzaXplX3Qgc3Vm
Zml4X2xlbiA9IHN1ZmZpeC5sZW5ndGgoKTsKLSAgcmV0dXJuIChzdHJfbGVuID49IHN1ZmZpeF9s
ZW4pICYmCi0gICAgICAgICBDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1YWxzKHN0ci5jX3N0cigp
ICsgc3RyX2xlbiAtIHN1ZmZpeF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1ZmZpeC5jX3N0cigpKTsKLX0KLQotLy8gRm9ybWF0cyBhbiBpbnQgdmFsdWUgYXMg
IiUwMmQiLgotc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRJbnRXaWR0aDIoaW50IHZhbHVlKSB7
Ci0gIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICBzcyA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCBz
dGQ6OnNldHcoMikgPDwgdmFsdWU7Ci0gIHJldHVybiBzcy5zdHIoKTsKLX0KLQotLy8gRm9ybWF0
cyBhbiBpbnQgdmFsdWUgYXMgIiVYIi4KLXN0ZDo6c3RyaW5nIFN0cmluZzo6Rm9ybWF0SGV4SW50
KGludCB2YWx1ZSkgewotICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLSAgc3MgPDwgc3RkOjpoZXgg
PDwgc3RkOjp1cHBlcmNhc2UgPDwgdmFsdWU7Ci0gIHJldHVybiBzcy5zdHIoKTsKLX0KLQotLy8g
Rm9ybWF0cyBhIGJ5dGUgYXMgIiUwMlgiLgotc3RkOjpzdHJpbmcgU3RyaW5nOjpGb3JtYXRCeXRl
KHVuc2lnbmVkIGNoYXIgdmFsdWUpIHsKLSAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gIHNzIDw8
IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHN0ZDo6c2V0dygyKSA8PCBzdGQ6OmhleCA8PCBzdGQ6OnVw
cGVyY2FzZQotICAgICA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZhbHVlKTsKLSAgcmV0
dXJuIHNzLnN0cigpOwotfQotCi0vLyBDb252ZXJ0cyB0aGUgYnVmZmVyIGluIGEgc3RyaW5nc3Ry
ZWFtIHRvIGFuIHN0ZDo6c3RyaW5nLCBjb252ZXJ0aW5nIE5VTAotLy8gYnl0ZXMgdG8gIlxcMCIg
YWxvbmcgdGhlIHdheS4KLXN0ZDo6c3RyaW5nIFN0cmluZ1N0cmVhbVRvU3RyaW5nKDo6c3RkOjpz
dHJpbmdzdHJlYW0qIHNzKSB7Ci0gIGNvbnN0IDo6c3RkOjpzdHJpbmcmIHN0ciA9IHNzLT5zdHIo
KTsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RhcnQgPSBzdHIuY19zdHIoKTsKLSAgY29uc3QgY2hh
ciogY29uc3QgZW5kID0gc3RhcnQgKyBzdHIubGVuZ3RoKCk7Ci0KLSAgc3RkOjpzdHJpbmcgcmVz
dWx0OwotICByZXN1bHQucmVzZXJ2ZSgyICogKGVuZCAtIHN0YXJ0KSk7Ci0gIGZvciAoY29uc3Qg
Y2hhciogY2ggPSBzdGFydDsgY2ggIT0gZW5kOyArK2NoKSB7Ci0gICAgaWYgKCpjaCA9PSAnXDAn
KSB7Ci0gICAgICByZXN1bHQgKz0gIlxcMCI7ICAvLyBSZXBsYWNlcyBOVUwgd2l0aCAiXFwwIjsK
LSAgICB9IGVsc2UgewotICAgICAgcmVzdWx0ICs9ICpjaDsKLSAgICB9Ci0gIH0KLQotICByZXR1
cm4gcmVzdWx0OwotfQotCi0vLyBBcHBlbmRzIHRoZSB1c2VyLXN1cHBsaWVkIG1lc3NhZ2UgdG8g
dGhlIEdvb2dsZS1UZXN0LWdlbmVyYXRlZCBtZXNzYWdlLgotc3RkOjpzdHJpbmcgQXBwZW5kVXNl
ck1lc3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIGd0ZXN0X21zZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IE1lc3NhZ2UmIHVzZXJfbXNnKSB7Ci0gIC8vIEFwcGVuZHMgdGhl
IHVzZXIgbWVzc2FnZSBpZiBpdCdzIG5vbi1lbXB0eS4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgdXNl
cl9tc2dfc3RyaW5nID0gdXNlcl9tc2cuR2V0U3RyaW5nKCk7Ci0gIGlmICh1c2VyX21zZ19zdHJp
bmcuZW1wdHkoKSkgewotICAgIHJldHVybiBndGVzdF9tc2c7Ci0gIH0KLQotICByZXR1cm4gZ3Rl
c3RfbXNnICsgIlxuIiArIHVzZXJfbXNnX3N0cmluZzsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi0KLS8vIGNsYXNzIFRlc3RSZXN1bHQKLQotLy8gQ3JlYXRlcyBhbiBlbXB0eSBUZXN0
UmVzdWx0LgotVGVzdFJlc3VsdDo6VGVzdFJlc3VsdCgpCi0gICAgOiBkZWF0aF90ZXN0X2NvdW50
XygwKSwKLSAgICAgIGVsYXBzZWRfdGltZV8oMCkgewotfQotCi0vLyBEJ3Rvci4KLVRlc3RSZXN1
bHQ6On5UZXN0UmVzdWx0KCkgewotfQotCi0vLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgcGFydCBy
ZXN1bHQgYW1vbmcgYWxsIHRoZSByZXN1bHRzLiBpIGNhbgotLy8gcmFuZ2UgZnJvbSAwIHRvIHRv
dGFsX3BhcnRfY291bnQoKSAtIDEuIElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsCi0vLyBhYm9y
dHMgdGhlIHByb2dyYW0uCi1jb25zdCBUZXN0UGFydFJlc3VsdCYgVGVzdFJlc3VsdDo6R2V0VGVz
dFBhcnRSZXN1bHQoaW50IGkpIGNvbnN0IHsKLSAgaWYgKGkgPCAwIHx8IGkgPj0gdG90YWxfcGFy
dF9jb3VudCgpKQotICAgIGludGVybmFsOjpwb3NpeDo6QWJvcnQoKTsKLSAgcmV0dXJuIHRlc3Rf
cGFydF9yZXN1bHRzXy5hdChpKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgaS10aCB0ZXN0IHByb3Bl
cnR5LiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLS8vIHRlc3RfcHJvcGVydHlfY291bnQoKSAtIDEu
IElmIGkgaXMgbm90IGluIHRoYXQgcmFuZ2UsIGFib3J0cyB0aGUKLS8vIHByb2dyYW0uCi1jb25z
dCBUZXN0UHJvcGVydHkmIFRlc3RSZXN1bHQ6OkdldFRlc3RQcm9wZXJ0eShpbnQgaSkgY29uc3Qg
ewotICBpZiAoaSA8IDAgfHwgaSA+PSB0ZXN0X3Byb3BlcnR5X2NvdW50KCkpCi0gICAgaW50ZXJu
YWw6OnBvc2l4OjpBYm9ydCgpOwotICByZXR1cm4gdGVzdF9wcm9wZXJ0aWVzXy5hdChpKTsKLX0K
LQotLy8gQ2xlYXJzIHRoZSB0ZXN0IHBhcnQgcmVzdWx0cy4KLXZvaWQgVGVzdFJlc3VsdDo6Q2xl
YXJUZXN0UGFydFJlc3VsdHMoKSB7Ci0gIHRlc3RfcGFydF9yZXN1bHRzXy5jbGVhcigpOwotfQot
Ci0vLyBBZGRzIGEgdGVzdCBwYXJ0IHJlc3VsdCB0byB0aGUgbGlzdC4KLXZvaWQgVGVzdFJlc3Vs
dDo6QWRkVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1
bHQpIHsKLSAgdGVzdF9wYXJ0X3Jlc3VsdHNfLnB1c2hfYmFjayh0ZXN0X3BhcnRfcmVzdWx0KTsK
LX0KLQotLy8gQWRkcyBhIHRlc3QgcHJvcGVydHkgdG8gdGhlIGxpc3QuIElmIGEgcHJvcGVydHkg
d2l0aCB0aGUgc2FtZSBrZXkgYXMgdGhlCi0vLyBzdXBwbGllZCBwcm9wZXJ0eSBpcyBhbHJlYWR5
IHJlcHJlc2VudGVkLCB0aGUgdmFsdWUgb2YgdGhpcyB0ZXN0X3Byb3BlcnR5Ci0vLyByZXBsYWNl
cyB0aGUgb2xkIHZhbHVlIGZvciB0aGF0IGtleS4KLXZvaWQgVGVzdFJlc3VsdDo6UmVjb3JkUHJv
cGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIHhtbF9lbGVtZW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXN0UHJvcGVydHkmIHRlc3RfcHJvcGVydHkpIHsKLSAgaWYg
KCFWYWxpZGF0ZVRlc3RQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSkpIHsKLSAg
ICByZXR1cm47Ci0gIH0KLSAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZ0ZXN0X3Byb3Blcml0
ZXNfbXV0ZXhfKTsKLSAgY29uc3Qgc3RkOjp2ZWN0b3I8VGVzdFByb3BlcnR5Pjo6aXRlcmF0b3Ig
cHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXkgPQotICAgICAgc3RkOjpmaW5kX2lmKHRlc3RfcHJv
cGVydGllc18uYmVnaW4oKSwgdGVzdF9wcm9wZXJ0aWVzXy5lbmQoKSwKLSAgICAgICAgICAgICAg
ICAgICBpbnRlcm5hbDo6VGVzdFByb3BlcnR5S2V5SXModGVzdF9wcm9wZXJ0eS5rZXkoKSkpOwot
ICBpZiAocHJvcGVydHlfd2l0aF9tYXRjaGluZ19rZXkgPT0gdGVzdF9wcm9wZXJ0aWVzXy5lbmQo
KSkgewotICAgIHRlc3RfcHJvcGVydGllc18ucHVzaF9iYWNrKHRlc3RfcHJvcGVydHkpOwotICAg
IHJldHVybjsKLSAgfQotICBwcm9wZXJ0eV93aXRoX21hdGNoaW5nX2tleS0+U2V0VmFsdWUodGVz
dF9wcm9wZXJ0eS52YWx1ZSgpKTsKLX0KLQotLy8gVGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgYXR0cmli
dXRlcyB1c2VkIGluIHRoZSA8dGVzdHN1aXRlcz4gZWxlbWVudCBvZiBYTUwKLS8vIG91dHB1dC4K
LXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrUmVzZXJ2ZWRUZXN0U3VpdGVzQXR0cmlidXRlc1td
ID0gewotICAiZGlzYWJsZWQiLAotICAiZXJyb3JzIiwKLSAgImZhaWx1cmVzIiwKLSAgIm5hbWUi
LAotICAicmFuZG9tX3NlZWQiLAotICAidGVzdHMiLAotICAidGltZSIsCi0gICJ0aW1lc3RhbXAi
Ci19OwotCi0vLyBUaGUgbGlzdCBvZiByZXNlcnZlZCBhdHRyaWJ1dGVzIHVzZWQgaW4gdGhlIDx0
ZXN0c3VpdGU+IGVsZW1lbnQgb2YgWE1MCi0vLyBvdXRwdXQuCi1zdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qga1Jlc2VydmVkVGVzdFN1aXRlQXR0cmlidXRlc1tdID0gewotICAiZGlzYWJsZWQiLAot
ICAiZXJyb3JzIiwKLSAgImZhaWx1cmVzIiwKLSAgIm5hbWUiLAotICAidGVzdHMiLAotICAidGlt
ZSIKLX07Ci0KLS8vIFRoZSBsaXN0IG9mIHJlc2VydmVkIGF0dHJpYnV0ZXMgdXNlZCBpbiB0aGUg
PHRlc3RjYXNlPiBlbGVtZW50IG9mIFhNTCBvdXRwdXQuCi1zdGF0aWMgY29uc3QgY2hhciogY29u
c3Qga1Jlc2VydmVkVGVzdENhc2VBdHRyaWJ1dGVzW10gPSB7Ci0gICJjbGFzc25hbWUiLAotICAi
bmFtZSIsCi0gICJzdGF0dXMiLAotICAidGltZSIsCi0gICJ0eXBlX3BhcmFtIiwKLSAgInZhbHVl
X3BhcmFtIgotfTsKLQotdGVtcGxhdGUgPGludCBrU2l6ZT4KLXN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBBcnJheUFzVmVjdG9yKGNvbnN0IGNoYXIqIGNvbnN0ICgmYXJyYXkpW2tTaXplXSkgewot
ICByZXR1cm4gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KGFycmF5LCBhcnJheSArIGtTaXplKTsK
LX0KLQotc3RhdGljIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRSZXNlcnZlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB4bWxfZWxlbWVudCkgewotICBp
ZiAoeG1sX2VsZW1lbnQgPT0gInRlc3RzdWl0ZXMiKSB7Ci0gICAgcmV0dXJuIEFycmF5QXNWZWN0
b3Ioa1Jlc2VydmVkVGVzdFN1aXRlc0F0dHJpYnV0ZXMpOwotICB9IGVsc2UgaWYgKHhtbF9lbGVt
ZW50ID09ICJ0ZXN0c3VpdGUiKSB7Ci0gICAgcmV0dXJuIEFycmF5QXNWZWN0b3Ioa1Jlc2VydmVk
VGVzdFN1aXRlQXR0cmlidXRlcyk7Ci0gIH0gZWxzZSBpZiAoeG1sX2VsZW1lbnQgPT0gInRlc3Rj
YXNlIikgewotICAgIHJldHVybiBBcnJheUFzVmVjdG9yKGtSZXNlcnZlZFRlc3RDYXNlQXR0cmli
dXRlcyk7Ci0gIH0gZWxzZSB7Ci0gICAgR1RFU1RfQ0hFQ0tfKGZhbHNlKSA8PCAiVW5yZWNvZ25p
emVkIHhtbF9lbGVtZW50IHByb3ZpZGVkOiAiIDw8IHhtbF9lbGVtZW50OwotICB9Ci0gIC8vIFRo
aXMgY29kZSBpcyB1bnJlYWNoYWJsZSBidXQgc29tZSBjb21waWxlcnMgbWF5IG5vdCByZWFsaXpl
cyB0aGF0LgotICByZXR1cm4gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCk7Ci19Ci0KLXN0YXRp
YyBzdGQ6OnN0cmluZyBGb3JtYXRXb3JkTGlzdChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIHdvcmRzKSB7Ci0gIE1lc3NhZ2Ugd29yZF9saXN0OwotICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKGkgPiAwICYmIHdvcmRzLnNpemUoKSA+
IDIpIHsKLSAgICAgIHdvcmRfbGlzdCA8PCAiLCAiOwotICAgIH0KLSAgICBpZiAoaSA9PSB3b3Jk
cy5zaXplKCkgLSAxKSB7Ci0gICAgICB3b3JkX2xpc3QgPDwgImFuZCAiOwotICAgIH0KLSAgICB3
b3JkX2xpc3QgPDwgIiciIDw8IHdvcmRzW2ldIDw8ICInIjsKLSAgfQotICByZXR1cm4gd29yZF9s
aXN0LkdldFN0cmluZygpOwotfQotCi1ib29sIFZhbGlkYXRlVGVzdFByb3BlcnR5TmFtZShjb25z
dCBzdGQ6OnN0cmluZyYgcHJvcGVydHlfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgcmVzZXJ2ZWRfbmFtZXMpIHsKLSAg
aWYgKHN0ZDo6ZmluZChyZXNlcnZlZF9uYW1lcy5iZWdpbigpLCByZXNlcnZlZF9uYW1lcy5lbmQo
KSwgcHJvcGVydHlfbmFtZSkgIT0KLSAgICAgICAgICByZXNlcnZlZF9uYW1lcy5lbmQoKSkgewot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIlJlc2VydmVkIGtleSB1c2VkIGluIFJlY29yZFByb3BlcnR5
KCk6ICIgPDwgcHJvcGVydHlfbmFtZQotICAgICAgICAgICAgICAgICAgPDwgIiAoIiA8PCBGb3Jt
YXRXb3JkTGlzdChyZXNlcnZlZF9uYW1lcykKLSAgICAgICAgICAgICAgICAgIDw8ICIgYXJlIHJl
c2VydmVkIGJ5ICIgPDwgR1RFU1RfTkFNRV8gPDwgIikiOwotICAgIHJldHVybiBmYWxzZTsKLSAg
fQotICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gQWRkcyBhIGZhaWx1cmUgaWYgdGhlIGtleSBpcyBh
IHJlc2VydmVkIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCBuYW1lZAotLy8geG1sX2VsZW1lbnQu
ICBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkLgotYm9vbCBUZXN0UmVzdWx0
OjpWYWxpZGF0ZVRlc3RQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgeG1sX2VsZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYg
dGVzdF9wcm9wZXJ0eSkgewotICByZXR1cm4gVmFsaWRhdGVUZXN0UHJvcGVydHlOYW1lKHRlc3Rf
cHJvcGVydHkua2V5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UmVz
ZXJ2ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudCh4bWxfZWxlbWVudCkpOwotfQotCi0vLyBDbGVhcnMg
dGhlIG9iamVjdC4KLXZvaWQgVGVzdFJlc3VsdDo6Q2xlYXIoKSB7Ci0gIHRlc3RfcGFydF9yZXN1
bHRzXy5jbGVhcigpOwotICB0ZXN0X3Byb3BlcnRpZXNfLmNsZWFyKCk7Ci0gIGRlYXRoX3Rlc3Rf
Y291bnRfID0gMDsKLSAgZWxhcHNlZF90aW1lXyA9IDA7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBp
ZmYgdGhlIHRlc3QgZmFpbGVkLgotYm9vbCBUZXN0UmVzdWx0OjpGYWlsZWQoKSBjb25zdCB7Ci0g
IGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxfcGFydF9jb3VudCgpOyArK2kpIHsKLSAgICBpZiAo
R2V0VGVzdFBhcnRSZXN1bHQoaSkuZmFpbGVkKCkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQot
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgcGFydCBm
YXRhbGx5IGZhaWxlZC4KLXN0YXRpYyBib29sIFRlc3RQYXJ0RmF0YWxseUZhaWxlZChjb25zdCBU
ZXN0UGFydFJlc3VsdCYgcmVzdWx0KSB7Ci0gIHJldHVybiByZXN1bHQuZmF0YWxseV9mYWlsZWQo
KTsKLX0KLQotLy8gUmV0dXJucyB0cnVlIGlmZiB0aGUgdGVzdCBmYXRhbGx5IGZhaWxlZC4KLWJv
b2wgVGVzdFJlc3VsdDo6SGFzRmF0YWxGYWlsdXJlKCkgY29uc3QgewotICByZXR1cm4gQ291bnRJ
Zih0ZXN0X3BhcnRfcmVzdWx0c18sIFRlc3RQYXJ0RmF0YWxseUZhaWxlZCkgPiAwOwotfQotCi0v
LyBSZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IHBhcnQgbm9uLWZhdGFsbHkgZmFpbGVkLgotc3Rh
dGljIGJvb2wgVGVzdFBhcnROb25mYXRhbGx5RmFpbGVkKGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBy
ZXN1bHQpIHsKLSAgcmV0dXJuIHJlc3VsdC5ub25mYXRhbGx5X2ZhaWxlZCgpOwotfQotCi0vLyBS
ZXR1cm5zIHRydWUgaWZmIHRoZSB0ZXN0IGhhcyBhIG5vbi1mYXRhbCBmYWlsdXJlLgotYm9vbCBU
ZXN0UmVzdWx0OjpIYXNOb25mYXRhbEZhaWx1cmUoKSBjb25zdCB7Ci0gIHJldHVybiBDb3VudElm
KHRlc3RfcGFydF9yZXN1bHRzXywgVGVzdFBhcnROb25mYXRhbGx5RmFpbGVkKSA+IDA7Ci19Ci0K
LS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBwYXJ0cy4gIFRoaXMgaXMgdGhlIHN1bSBv
ZiB0aGUgbnVtYmVyCi0vLyBvZiBzdWNjZXNzZnVsIHRlc3QgcGFydHMgYW5kIHRoZSBudW1iZXIg
b2YgZmFpbGVkIHRlc3QgcGFydHMuCi1pbnQgVGVzdFJlc3VsdDo6dG90YWxfcGFydF9jb3VudCgp
IGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odGVzdF9wYXJ0X3Jlc3VsdHNfLnNp
emUoKSk7Ci19Ci0KLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgdGVzdCBwcm9wZXJ0aWVz
LgotaW50IFRlc3RSZXN1bHQ6OnRlc3RfcHJvcGVydHlfY291bnQoKSBjb25zdCB7Ci0gIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHRlc3RfcHJvcGVydGllc18uc2l6ZSgpKTsKLX0KLQotLy8gY2xh
c3MgVGVzdAotCi0vLyBDcmVhdGVzIGEgVGVzdCBvYmplY3QuCi0KLS8vIFRoZSBjJ3RvciBzYXZl
cyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4KLVRlc3Q6OlRlc3QoKQotICAgIDogZ3Rlc3RfZmxh
Z19zYXZlcl8obmV3IEdURVNUX0ZMQUdfU0FWRVJfKSB7Ci19Ci0KLS8vIFRoZSBkJ3RvciByZXN0
b3JlcyB0aGUgc3RhdGVzIG9mIGFsbCBmbGFncy4gIFRoZSBhY3R1YWwgd29yayBpcwotLy8gZG9u
ZSBieSB0aGUgZCd0b3Igb2YgdGhlIGd0ZXN0X2ZsYWdfc2F2ZXJfIGZpZWxkLCBhbmQgdGh1cyBu
b3QKLS8vIHZpc2libGUgaGVyZS4KLVRlc3Q6On5UZXN0KCkgewotfQotCi0vLyBTZXRzIHVwIHRo
ZSB0ZXN0IGZpeHR1cmUuCi0vLwotLy8gQSBzdWItY2xhc3MgbWF5IG92ZXJyaWRlIHRoaXMuCi12
b2lkIFRlc3Q6OlNldFVwKCkgewotfQotCi0vLyBUZWFycyBkb3duIHRoZSB0ZXN0IGZpeHR1cmUu
Ci0vLwotLy8gQSBzdWItY2xhc3MgbWF5IG92ZXJyaWRlIHRoaXMuCi12b2lkIFRlc3Q6OlRlYXJE
b3duKCkgewotfQotCi0vLyBBbGxvd3MgdXNlciBzdXBwbGllZCBrZXkgdmFsdWUgcGFpcnMgdG8g
YmUgcmVjb3JkZWQgZm9yIGxhdGVyIG91dHB1dC4KLXZvaWQgVGVzdDo6UmVjb3JkUHJvcGVydHko
Y29uc3Qgc3RkOjpzdHJpbmcmIGtleSwgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIFVu
aXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5SZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKLX0KLQot
Ly8gQWxsb3dzIHVzZXIgc3VwcGxpZWQga2V5IHZhbHVlIHBhaXJzIHRvIGJlIHJlY29yZGVkIGZv
ciBsYXRlciBvdXRwdXQuCi12b2lkIFRlc3Q6OlJlY29yZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiBrZXksIGludCB2YWx1ZSkgewotICBNZXNzYWdlIHZhbHVlX21lc3NhZ2U7Ci0gIHZhbHVl
X21lc3NhZ2UgPDwgdmFsdWU7Ci0gIFJlY29yZFByb3BlcnR5KGtleSwgdmFsdWVfbWVzc2FnZS5H
ZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotdm9pZCBS
ZXBvcnRGYWlsdXJlSW5Vbmtub3duTG9jYXRpb24oVGVzdFBhcnRSZXN1bHQ6OlR5cGUgcmVzdWx0
X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbWVzc2FnZSkgewotICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgZnJpZW5kIG9mIFVuaXRU
ZXN0IGFuZCBhcyBzdWNoIGhhcyBhY2Nlc3MgdG8KLSAgLy8gQWRkVGVzdFBhcnRSZXN1bHQuCi0g
IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5BZGRUZXN0UGFydFJlc3VsdCgKLSAgICAgIHJlc3Vs
dF90eXBlLAotICAgICAgTlVMTCwgIC8vIE5vIGluZm8gYWJvdXQgdGhlIHNvdXJjZSBmaWxlIHdo
ZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuCi0gICAgICAtMSwgICAgLy8gV2UgaGF2ZSBubyBp
bmZvIG9uIHdoaWNoIGxpbmUgY2F1c2VkIHRoZSBleGNlcHRpb24uCi0gICAgICBtZXNzYWdlLAot
ICAgICAgIiIpOyAgIC8vIE5vIHN0YWNrIHRyYWNlLCBlaXRoZXIuCi19Ci0KLX0gIC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotCi0vLyBHb29nbGUgVGVzdCByZXF1aXJlcyBhbGwgdGVzdHMgaW4gdGhl
IHNhbWUgdGVzdCBjYXNlIHRvIHVzZSB0aGUgc2FtZSB0ZXN0Ci0vLyBmaXh0dXJlIGNsYXNzLiAg
VGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgdGhlCi0vLyBzYW1l
IGZpeHR1cmUgY2xhc3MgYXMgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNl
LiAgSWYKLS8vIHllcywgaXQgcmV0dXJucyB0cnVlOyBvdGhlcndpc2UgaXQgZ2VuZXJhdGVzIGEg
R29vZ2xlIFRlc3QgZmFpbHVyZSBhbmQKLS8vIHJldHVybnMgZmFsc2UuCi1ib29sIFRlc3Q6Okhh
c1NhbWVGaXh0dXJlQ2xhc3MoKSB7Ci0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGlt
cGwgPSBpbnRlcm5hbDo6R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGNvbnN0IFRlc3RDYXNlKiBjb25z
dCB0ZXN0X2Nhc2UgPSBpbXBsLT5jdXJyZW50X3Rlc3RfY2FzZSgpOwotCi0gIC8vIEluZm8gYWJv
dXQgdGhlIGZpcnN0IHRlc3QgaW4gdGhlIGN1cnJlbnQgdGVzdCBjYXNlLgotICBjb25zdCBUZXN0
SW5mbyogY29uc3QgZmlyc3RfdGVzdF9pbmZvID0gdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgp
WzBdOwotICBjb25zdCBpbnRlcm5hbDo6VHlwZUlkIGZpcnN0X2ZpeHR1cmVfaWQgPSBmaXJzdF90
ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwotICBjb25zdCBjaGFyKiBjb25zdCBmaXJzdF90
ZXN0X25hbWUgPSBmaXJzdF90ZXN0X2luZm8tPm5hbWUoKTsKLQotICAvLyBJbmZvIGFib3V0IHRo
ZSBjdXJyZW50IHRlc3QuCi0gIGNvbnN0IFRlc3RJbmZvKiBjb25zdCB0aGlzX3Rlc3RfaW5mbyA9
IGltcGwtPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIGNvbnN0IGludGVybmFsOjpUeXBlSWQgdGhp
c19maXh0dXJlX2lkID0gdGhpc190ZXN0X2luZm8tPmZpeHR1cmVfY2xhc3NfaWRfOwotICBjb25z
dCBjaGFyKiBjb25zdCB0aGlzX3Rlc3RfbmFtZSA9IHRoaXNfdGVzdF9pbmZvLT5uYW1lKCk7Ci0K
LSAgaWYgKHRoaXNfZml4dHVyZV9pZCAhPSBmaXJzdF9maXh0dXJlX2lkKSB7Ci0gICAgLy8gSXMg
dGhlIGZpcnN0IHRlc3QgZGVmaW5lZCB1c2luZyBURVNUPwotICAgIGNvbnN0IGJvb2wgZmlyc3Rf
aXNfVEVTVCA9IGZpcnN0X2ZpeHR1cmVfaWQgPT0gaW50ZXJuYWw6OkdldFRlc3RUeXBlSWQoKTsK
LSAgICAvLyBJcyB0aGlzIHRlc3QgZGVmaW5lZCB1c2luZyBURVNUPwotICAgIGNvbnN0IGJvb2wg
dGhpc19pc19URVNUID0gdGhpc19maXh0dXJlX2lkID09IGludGVybmFsOjpHZXRUZXN0VHlwZUlk
KCk7Ci0KLSAgICBpZiAoZmlyc3RfaXNfVEVTVCB8fCB0aGlzX2lzX1RFU1QpIHsKLSAgICAgIC8v
IEJvdGggVEVTVCBhbmQgVEVTVF9GIGFwcGVhciBpbiBzYW1lIHRlc3QgY2FzZSwgd2hpY2ggaXMg
aW5jb3JyZWN0LgotICAgICAgLy8gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRoaXMuCi0KLSAg
ICAgIC8vIEdldHMgdGhlIG5hbWUgb2YgdGhlIFRFU1QgYW5kIHRoZSBuYW1lIG9mIHRoZSBURVNU
X0YuICBOb3RlCi0gICAgICAvLyB0aGF0IGZpcnN0X2lzX1RFU1QgYW5kIHRoaXNfaXNfVEVTVCBj
YW5ub3QgYm90aCBiZSB0cnVlLCBhcwotICAgICAgLy8gdGhlIGZpeHR1cmUgSURzIGFyZSBkaWZm
ZXJlbnQgZm9yIHRoZSB0d28gdGVzdHMuCi0gICAgICBjb25zdCBjaGFyKiBjb25zdCBURVNUX25h
bWUgPQotICAgICAgICAgIGZpcnN0X2lzX1RFU1QgPyBmaXJzdF90ZXN0X25hbWUgOiB0aGlzX3Rl
c3RfbmFtZTsKLSAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IFRFU1RfRl9uYW1lID0KLSAgICAgICAg
ICBmaXJzdF9pc19URVNUID8gdGhpc190ZXN0X25hbWUgOiBmaXJzdF90ZXN0X25hbWU7Ci0KLSAg
ICAgIEFERF9GQUlMVVJFKCkKLSAgICAgICAgICA8PCAiQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRl
c3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0IGZpeHR1cmVcbiIKLSAgICAgICAgICA8PCAi
Y2xhc3MsIHNvIG1peGluZyBURVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlz
XG4iCi0gICAgICAgICAgPDwgImlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgIiA8PCB0aGlzX3Rlc3Rf
aW5mby0+dGVzdF9jYXNlX25hbWUoKQotICAgICAgICAgIDw8ICIsXG4iCi0gICAgICAgICAgPDwg
InRlc3QgIiA8PCBURVNUX0ZfbmFtZSA8PCAiIGlzIGRlZmluZWQgdXNpbmcgVEVTVF9GIGJ1dFxu
IgotICAgICAgICAgIDw8ICJ0ZXN0ICIgPDwgVEVTVF9uYW1lIDw8ICIgaXMgZGVmaW5lZCB1c2lu
ZyBURVNULiAgWW91IHByb2JhYmx5XG4iCi0gICAgICAgICAgPDwgIndhbnQgdG8gY2hhbmdlIHRo
ZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIgdGVzdFxuIgotICAgICAgICAg
IDw8ICJjYXNlLiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8vIFR3byBmaXh0dXJlIGNsYXNzZXMg
d2l0aCB0aGUgc2FtZSBuYW1lIGFwcGVhciBpbiB0d28gZGlmZmVyZW50Ci0gICAgICAvLyBuYW1l
c3BhY2VzLCB3aGljaCBpcyBub3QgYWxsb3dlZC4gVGVsbCB0aGUgdXNlciBob3cgdG8gZml4IHRo
aXMuCi0gICAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgICAgPDwgIkFsbCB0ZXN0cyBpbiB0aGUg
c2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUgdGVzdCBmaXh0dXJlXG4iCi0gICAgICAg
ICAgPDwgImNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCB0aGlz
X3Rlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSA8PCAiLFxuIgotICAgICAgICAgIDw8ICJ5b3Ug
ZGVmaW5lZCB0ZXN0ICIgPDwgZmlyc3RfdGVzdF9uYW1lCi0gICAgICAgICAgPDwgIiBhbmQgdGVz
dCAiIDw8IHRoaXNfdGVzdF9uYW1lIDw8ICJcbiIKLSAgICAgICAgICA8PCAidXNpbmcgdHdvIGRp
ZmZlcmVudCB0ZXN0IGZpeHR1cmUgY2xhc3Nlcy4gIFRoaXMgY2FuIGhhcHBlbiBpZlxuIgotICAg
ICAgICAgIDw8ICJ0aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMg
b3IgdHJhbnNsYXRpb25cbiIKLSAgICAgICAgICA8PCAidW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUg
bmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZVxuIgotICAgICAgICAgIDw8ICJv
ZiB0aGUgY2xhc3NlcyB0byBwdXQgdGhlIHRlc3RzIGludG8gZGlmZmVyZW50IHRlc3QgY2FzZXMu
IjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0K
LSNpZiBHVEVTVF9IQVNfU0VICi0KLS8vIEFkZHMgYW4gImV4Y2VwdGlvbiB0aHJvd24iIGZhdGFs
IGZhaWx1cmUgdG8gdGhlIGN1cnJlbnQgdGVzdC4gIFRoaXMKLS8vIGZ1bmN0aW9uIHJldHVybnMg
aXRzIHJlc3VsdCB2aWEgYW4gb3V0cHV0IHBhcmFtZXRlciBwb2ludGVyIGJlY2F1c2UgVkMrKwot
Ly8gcHJvaGliaXRzIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVjdG9ycyBvbiBzdGFj
ayBpbiBmdW5jdGlvbnMKLS8vIHVzaW5nIF9fdHJ5IChzZWUgZXJyb3IgQzI3MTIpLgotc3RhdGlj
IHN0ZDo6c3RyaW5nKiBGb3JtYXRTZWhFeGNlcHRpb25NZXNzYWdlKERXT1JEIGV4Y2VwdGlvbl9j
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGxvY2F0aW9uKSB7Ci0gIE1lc3NhZ2UgbWVzc2FnZTsKLSAgbWVzc2FnZSA8PCAiU0VI
IGV4Y2VwdGlvbiB3aXRoIGNvZGUgMHgiIDw8IHN0ZDo6c2V0YmFzZSgxNikgPDwKLSAgICBleGNl
cHRpb25fY29kZSA8PCBzdGQ6OnNldGJhc2UoMTApIDw8ICIgdGhyb3duIGluICIgPDwgbG9jYXRp
b24gPDwgIi4iOwotCi0gIHJldHVybiBuZXcgc3RkOjpzdHJpbmcobWVzc2FnZS5HZXRTdHJpbmco
KSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAotCi1uYW1lc3BhY2UgaW50ZXJuYWwg
ewotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gQWRkcyBhbiAiZXhjZXB0aW9uIHRo
cm93biIgZmF0YWwgZmFpbHVyZSB0byB0aGUgY3VycmVudCB0ZXN0Lgotc3RhdGljIHN0ZDo6c3Ry
aW5nIEZvcm1hdEN4eEV4Y2VwdGlvbk1lc3NhZ2UoY29uc3QgY2hhciogZGVzY3JpcHRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBs
b2NhdGlvbikgewotICBNZXNzYWdlIG1lc3NhZ2U7Ci0gIGlmIChkZXNjcmlwdGlvbiAhPSBOVUxM
KSB7Ci0gICAgbWVzc2FnZSA8PCAiQysrIGV4Y2VwdGlvbiB3aXRoIGRlc2NyaXB0aW9uIFwiIiA8
PCBkZXNjcmlwdGlvbiA8PCAiXCIiOwotICB9IGVsc2UgewotICAgIG1lc3NhZ2UgPDwgIlVua25v
d24gQysrIGV4Y2VwdGlvbiI7Ci0gIH0KLSAgbWVzc2FnZSA8PCAiIHRocm93biBpbiAiIDw8IGxv
Y2F0aW9uIDw8ICIuIjsKLQotICByZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKLX0KLQotc3Rh
dGljIHN0ZDo6c3RyaW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKLSAgICBjb25zdCBU
ZXN0UGFydFJlc3VsdCYgdGVzdF9wYXJ0X3Jlc3VsdCk7Ci0KLUdvb2dsZVRlc3RGYWlsdXJlRXhj
ZXB0aW9uOjpHb29nbGVUZXN0RmFpbHVyZUV4Y2VwdGlvbigKLSAgICBjb25zdCBUZXN0UGFydFJl
c3VsdCYgZmFpbHVyZSkKLSAgICA6IDo6c3RkOjpydW50aW1lX2Vycm9yKFByaW50VGVzdFBhcnRS
ZXN1bHRUb1N0cmluZyhmYWlsdXJlKS5jX3N0cigpKSB7fQotCi0jZW5kaWYgIC8vIEdURVNUX0hB
U19FWENFUFRJT05TCi0KLS8vIFdlIHB1dCB0aGVzZSBoZWxwZXIgZnVuY3Rpb25zIGluIHRoZSBp
bnRlcm5hbCBuYW1lc3BhY2UgYXMgSUJNJ3MgeGxDCi0vLyBjb21waWxlciByZWplY3RzIHRoZSBj
b2RlIGlmIHRoZXkgd2VyZSBkZWNsYXJlZCBzdGF0aWMuCi0KLS8vIFJ1bnMgdGhlIGdpdmVuIG1l
dGhvZCBhbmQgaGFuZGxlcyBTRUggZXhjZXB0aW9ucyBpdCB0aHJvd3MsIHdoZW4KLS8vIFNFSCBp
cyBzdXBwb3J0ZWQ7IHJldHVybnMgdGhlIDAtdmFsdWUgZm9yIHR5cGUgUmVzdWx0IGluIGNhc2Ug
b2YgYW4KLS8vIFNFSCBleGNlcHRpb24uICAoTWljcm9zb2Z0IGNvbXBpbGVycyBjYW5ub3QgaGFu
ZGxlIFNFSCBhbmQgQysrCi0vLyBleGNlcHRpb25zIGluIHRoZSBzYW1lIGZ1bmN0aW9uLiAgVGhl
cmVmb3JlLCB3ZSBwcm92aWRlIGEgc2VwYXJhdGUKLS8vIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGhh
bmRsaW5nIFNFSCBleGNlcHRpb25zLikKLXRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXN1
bHQ+Ci1SZXN1bHQgSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAg
VCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7
Ci0jaWYgR1RFU1RfSEFTX1NFSAotICBfX3RyeSB7Ci0gICAgcmV0dXJuIChvYmplY3QtPiptZXRo
b2QpKCk7Ci0gIH0gX19leGNlcHQgKGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6OkdUZXN0U2hv
dWxkUHJvY2Vzc1NFSCggIC8vIE5PTElOVAotICAgICAgR2V0RXhjZXB0aW9uQ29kZSgpKSkgewot
ICAgIC8vIFdlIGNyZWF0ZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2Ugb24gdGhlIGhlYXAgYmVjYXVz
ZSBWQysrIHByb2hpYml0cwotICAgIC8vIGNyZWF0aW9uIG9mIG9iamVjdHMgd2l0aCBkZXN0cnVj
dG9ycyBvbiBzdGFjayBpbiBmdW5jdGlvbnMgdXNpbmcgX190cnkKLSAgICAvLyAoc2VlIGVycm9y
IEMyNzEyKS4KLSAgICBzdGQ6OnN0cmluZyogZXhjZXB0aW9uX21lc3NhZ2UgPSBGb3JtYXRTZWhF
eGNlcHRpb25NZXNzYWdlKAotICAgICAgICBHZXRFeGNlcHRpb25Db2RlKCksIGxvY2F0aW9uKTsK
LSAgICBpbnRlcm5hbDo6UmVwb3J0RmFpbHVyZUluVW5rbm93bkxvY2F0aW9uKFRlc3RQYXJ0UmVz
dWx0OjprRmF0YWxGYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKmV4Y2VwdGlvbl9tZXNzYWdlKTsKLSAgICBkZWxldGUgZXhjZXB0aW9uX21lc3Nh
Z2U7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlc3VsdD4oMCk7Ci0gIH0KLSNlbHNlCi0gICh2
b2lkKWxvY2F0aW9uOwotICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1NFSAotfQotCi0vLyBSdW5zIHRoZSBnaXZlbiBtZXRob2QgYW5kIGNhdGNoZXMg
YW5kIHJlcG9ydHMgQysrIGFuZC9vciBTRUgtc3R5bGUKLS8vIGV4Y2VwdGlvbnMsIGlmIHRoZXkg
YXJlIHN1cHBvcnRlZDsgcmV0dXJucyB0aGUgMC12YWx1ZSBmb3IgdHlwZQotLy8gUmVzdWx0IGlu
IGNhc2Ugb2YgYW4gU0VIIGV4Y2VwdGlvbi4KLXRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBS
ZXN1bHQ+Ci1SZXN1bHQgSGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAg
VCogb2JqZWN0LCBSZXN1bHQgKFQ6OiptZXRob2QpKCksIGNvbnN0IGNoYXIqIGxvY2F0aW9uKSB7
Ci0gIC8vIE5PVEU6IFRoZSB1c2VyIGNvZGUgY2FuIGFmZmVjdCB0aGUgd2F5IGluIHdoaWNoIEdv
b2dsZSBUZXN0IGhhbmRsZXMKLSAgLy8gZXhjZXB0aW9ucyBieSBzZXR0aW5nIEdURVNUX0ZMQUco
Y2F0Y2hfZXhjZXB0aW9ucyksIGJ1dCBvbmx5IGJlZm9yZQotICAvLyBSVU5fQUxMX1RFU1RTKCkg
c3RhcnRzLiBJdCBpcyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjaGVjayB0aGUgZmxhZwotICAv
LyBhZnRlciB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodCBhbmQgZWl0aGVyIHJlcG9ydCBvciByZS10
aHJvdyB0aGUKLSAgLy8gZXhjZXB0aW9uIGJhc2VkIG9uIHRoZSBmbGFnJ3MgdmFsdWU6Ci0gIC8v
Ci0gIC8vIHRyeSB7Ci0gIC8vICAgLy8gUGVyZm9ybSB0aGUgdGVzdCBtZXRob2QuCi0gIC8vIH0g
Y2F0Y2ggKC4uLikgewotICAvLyAgIGlmIChHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKQot
ICAvLyAgICAgLy8gUmVwb3J0IHRoZSBleGNlcHRpb24gYXMgZmFpbHVyZS4KLSAgLy8gICBlbHNl
Ci0gIC8vICAgICB0aHJvdzsgIC8vIFJlLXRocm93cyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgot
ICAvLyB9Ci0gIC8vCi0gIC8vIEhvd2V2ZXIsIHRoZSBwdXJwb3NlIG9mIHRoaXMgZmxhZyBpcyB0
byBhbGxvdyB0aGUgcHJvZ3JhbSB0byBkcm9wIGludG8KLSAgLy8gdGhlIGRlYnVnZ2VyIHdoZW4g
dGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uIE9uIG1vc3QgcGxhdGZvcm1zLCBvbmNlIHRoZQotICAv
LyBjb250cm9sIGVudGVycyB0aGUgY2F0Y2ggYmxvY2ssIHRoZSBleGNlcHRpb24gb3JpZ2luIGlu
Zm9ybWF0aW9uIGlzCi0gIC8vIGxvc3QgYW5kIHRoZSBkZWJ1Z2dlciB3aWxsIHN0b3AgdGhlIHBy
b2dyYW0gYXQgdGhlIHBvaW50IG9mIHRoZQotICAvLyByZS10aHJvdyBpbiB0aGlzIGZ1bmN0aW9u
IC0tIGluc3RlYWQgb2YgYXQgdGhlIHBvaW50IG9mIHRoZSBvcmlnaW5hbAotICAvLyB0aHJvdyBz
dGF0ZW1lbnQgaW4gdGhlIGNvZGUgdW5kZXIgdGVzdC4gIEZvciB0aGlzIHJlYXNvbiwgd2UgcGVy
Zm9ybQotICAvLyB0aGUgY2hlY2sgZWFybHksIHNhY3JpZmljaW5nIHRoZSBhYmlsaXR5IHRvIGFm
ZmVjdCBHb29nbGUgVGVzdCdzCi0gIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiB0aGUgbWV0aG9k
IHdoZXJlIHRoZSBleGNlcHRpb24gaXMgdGhyb3duLgotICBpZiAoaW50ZXJuYWw6OkdldFVuaXRU
ZXN0SW1wbCgpLT5jYXRjaF9leGNlcHRpb25zKCkpIHsKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UwotICAgIHRyeSB7Ci0gICAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZT
dXBwb3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKLSAgICB9IGNhdGNoIChjb25zdCBp
bnRlcm5hbDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24mKSB7ICAvLyBOT0xJTlQKLSAgICAg
IC8vIFRoaXMgZXhjZXB0aW9uIHR5cGUgY2FuIG9ubHkgYmUgdGhyb3duIGJ5IGEgZmFpbGVkIEdv
b2dsZQotICAgICAgLy8gVGVzdCBhc3NlcnRpb24gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGxldHRp
bmcgYW5vdGhlciB0ZXN0aW5nCi0gICAgICAvLyBmcmFtZXdvcmsgY2F0Y2ggaXQuICBUaGVyZWZv
cmUgd2UganVzdCByZS10aHJvdyBpdC4KLSAgICAgIHRocm93OwotICAgIH0gY2F0Y2ggKGNvbnN0
IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7ICAvLyBOT0xJTlQKLSAgICAgIGludGVybmFsOjpSZXBvcnRG
YWlsdXJlSW5Vbmtub3duTG9jYXRpb24oCi0gICAgICAgICAgVGVzdFBhcnRSZXN1bHQ6OmtGYXRh
bEZhaWx1cmUsCi0gICAgICAgICAgRm9ybWF0Q3h4RXhjZXB0aW9uTWVzc2FnZShlLndoYXQoKSwg
bG9jYXRpb24pKTsKLSAgICB9IGNhdGNoICguLi4pIHsgIC8vIE5PTElOVAotICAgICAgaW50ZXJu
YWw6OlJlcG9ydEZhaWx1cmVJblVua25vd25Mb2NhdGlvbigKLSAgICAgICAgICBUZXN0UGFydFJl
c3VsdDo6a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICBGb3JtYXRDeHhFeGNlcHRpb25NZXNzYWdl
KE5VTEwsIGxvY2F0aW9uKSk7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXN1bHQ+
KDApOwotI2Vsc2UKLSAgICByZXR1cm4gSGFuZGxlU2VoRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBw
b3J0ZWQob2JqZWN0LCBtZXRob2QsIGxvY2F0aW9uKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gKG9iamVjdC0+Km1ldGhvZCkoKTsKLSAg
fQotfQotCi19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8gUnVucyB0aGUgdGVzdCBhbmQg
dXBkYXRlcyB0aGUgdGVzdCByZXN1bHQuCi12b2lkIFRlc3Q6OlJ1bigpIHsKLSAgaWYgKCFIYXNT
YW1lRml4dHVyZUNsYXNzKCkpIHJldHVybjsKLQotICBpbnRlcm5hbDo6VW5pdFRlc3RJbXBsKiBj
b25zdCBpbXBsID0gaW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgpOwotICBpbXBsLT5vc19zdGFj
a190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBpbnRlcm5hbDo6SGFuZGxl
RXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQodGhpcywgJlRlc3Q6OlNldFVwLCAiU2V0VXAo
KSIpOwotICAvLyBXZSB3aWxsIHJ1biB0aGUgdGVzdCBvbmx5IGlmIFNldFVwKCkgd2FzIHN1Y2Nl
c3NmdWwuCi0gIGlmICghSGFzRmF0YWxGYWlsdXJlKCkpIHsKLSAgICBpbXBsLT5vc19zdGFja190
cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICAgIGludGVybmFsOjpIYW5kbGVF
eGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKLSAgICAgICAgdGhpcywgJlRlc3Q6OlRlc3RC
b2R5LCAidGhlIHRlc3QgYm9keSIpOwotICB9Ci0KLSAgLy8gSG93ZXZlciwgd2Ugd2FudCB0byBj
bGVhbiB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlLiAgSGVuY2Ugd2Ugd2lsbAotICAvLyBhbHdheXMg
Y2FsbCBUZWFyRG93bigpLCBldmVuIGlmIFNldFVwKCkgb3IgdGhlIHRlc3QgYm9keSBoYXMKLSAg
Ly8gZmFpbGVkLgotICBpbXBsLT5vc19zdGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdH
VGVzdCgpOwotICBpbnRlcm5hbDo6SGFuZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQo
Ci0gICAgICB0aGlzLCAmVGVzdDo6VGVhckRvd24sICJUZWFyRG93bigpIik7Ci19Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBmYXRhbCBmYWlsdXJlLgotYm9v
bCBUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6R2V0VW5pdFRl
c3RJbXBsKCktPmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+SGFzRmF0YWxGYWlsdXJlKCk7Ci19Ci0K
LS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGN1cnJlbnQgdGVzdCBoYXMgYSBub24tZmF0YWwgZmFp
bHVyZS4KLWJvb2wgVGVzdDo6SGFzTm9uZmF0YWxGYWlsdXJlKCkgewotICByZXR1cm4gaW50ZXJu
YWw6OkdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPgotICAgICAgSGFz
Tm9uZmF0YWxGYWlsdXJlKCk7Ci19Ci0KLS8vIGNsYXNzIFRlc3RJbmZvCi0KLS8vIENvbnN0cnVj
dHMgYSBUZXN0SW5mbyBvYmplY3QuIEl0IGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoZSB0ZXN0IGZh
Y3RvcnkKLS8vIG9iamVjdC4KLVRlc3RJbmZvOjpUZXN0SW5mbyhjb25zdCBzdGQ6OnN0cmluZyYg
YV90ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
YV9uYW1lLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFfdHlwZV9wYXJhbSwKLSAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhX3ZhbHVlX3BhcmFtLAotICAgICAgICAgICAg
ICAgICAgIGludGVybmFsOjpDb2RlTG9jYXRpb24gYV9jb2RlX2xvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgIGludGVybmFsOjpUeXBlSWQgZml4dHVyZV9jbGFzc19pZCwKLSAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbDo6VGVzdEZhY3RvcnlCYXNlKiBmYWN0b3J5KQotICAgIDogdGVzdF9j
YXNlX25hbWVfKGFfdGVzdF9jYXNlX25hbWUpLAotICAgICAgbmFtZV8oYV9uYW1lKSwKLSAgICAg
IHR5cGVfcGFyYW1fKGFfdHlwZV9wYXJhbSA/IG5ldyBzdGQ6OnN0cmluZyhhX3R5cGVfcGFyYW0p
IDogTlVMTCksCi0gICAgICB2YWx1ZV9wYXJhbV8oYV92YWx1ZV9wYXJhbSA/IG5ldyBzdGQ6OnN0
cmluZyhhX3ZhbHVlX3BhcmFtKSA6IE5VTEwpLAotICAgICAgbG9jYXRpb25fKGFfY29kZV9sb2Nh
dGlvbiksCi0gICAgICBmaXh0dXJlX2NsYXNzX2lkXyhmaXh0dXJlX2NsYXNzX2lkKSwKLSAgICAg
IHNob3VsZF9ydW5fKGZhbHNlKSwKLSAgICAgIGlzX2Rpc2FibGVkXyhmYWxzZSksCi0gICAgICBt
YXRjaGVzX2ZpbHRlcl8oZmFsc2UpLAotICAgICAgZmFjdG9yeV8oZmFjdG9yeSksCi0gICAgICBy
ZXN1bHRfKCkge30KLQotLy8gRGVzdHJ1Y3RzIGEgVGVzdEluZm8gb2JqZWN0LgotVGVzdEluZm86
On5UZXN0SW5mbygpIHsgZGVsZXRlIGZhY3RvcnlfOyB9Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7
Ci0KLS8vIENyZWF0ZXMgYSBuZXcgVGVzdEluZm8gb2JqZWN0IGFuZCByZWdpc3RlcnMgaXQgd2l0
aCBHb29nbGUgVGVzdDsKLS8vIHJldHVybnMgdGhlIGNyZWF0ZWQgb2JqZWN0LgotLy8KLS8vIEFy
Z3VtZW50czoKLS8vCi0vLyAgIHRlc3RfY2FzZV9uYW1lOiAgIG5hbWUgb2YgdGhlIHRlc3QgY2Fz
ZQotLy8gICBuYW1lOiAgICAgICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0Ci0vLyAgIHR5cGVfcGFy
YW06ICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0ZXN0J3MgdHlwZSBwYXJhbWV0ZXIsIG9yIE5VTEwg
aWYKLS8vICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBub3QgYSB0eXBlZCBvciBhIHR5cGUt
cGFyYW1ldGVyaXplZCB0ZXN0LgotLy8gICB2YWx1ZV9wYXJhbTogICAgICB0ZXh0IHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSB0ZXN0J3MgdmFsdWUgcGFyYW1ldGVyLAotLy8gICAgICAgICAgICAgICAg
ICAgICBvciBOVUxMIGlmIHRoaXMgaXMgbm90IGEgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0Lgot
Ly8gICBjb2RlX2xvY2F0aW9uOiAgICBjb2RlIGxvY2F0aW9uIHdoZXJlIHRoZSB0ZXN0IGlzIGRl
ZmluZWQKLS8vICAgZml4dHVyZV9jbGFzc19pZDogSUQgb2YgdGhlIHRlc3QgZml4dHVyZSBjbGFz
cwotLy8gICBzZXRfdXBfdGM6ICAgICAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNl
dHMgdXAgdGhlIHRlc3QgY2FzZQotLy8gICB0ZWFyX2Rvd25fdGM6ICAgICBwb2ludGVyIHRvIHRo
ZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhlIHRlc3QgY2FzZQotLy8gICBmYWN0b3J5OiAg
ICAgICAgICBwb2ludGVyIHRvIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBhIHRlc3Qgb2JqZWN0
LgotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBUZXN0SW5mbyBpbnN0
YW5jZSB3aWxsIGFzc3VtZQotLy8gICAgICAgICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgdGhl
IGZhY3Rvcnkgb2JqZWN0LgotVGVzdEluZm8qIE1ha2VBbmRSZWdpc3RlclRlc3RJbmZvKAotICAg
IGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAg
Y29uc3QgY2hhciogdHlwZV9wYXJhbSwKLSAgICBjb25zdCBjaGFyKiB2YWx1ZV9wYXJhbSwKLSAg
ICBDb2RlTG9jYXRpb24gY29kZV9sb2NhdGlvbiwKLSAgICBUeXBlSWQgZml4dHVyZV9jbGFzc19p
ZCwKLSAgICBTZXRVcFRlc3RDYXNlRnVuYyBzZXRfdXBfdGMsCi0gICAgVGVhckRvd25UZXN0Q2Fz
ZUZ1bmMgdGVhcl9kb3duX3RjLAotICAgIFRlc3RGYWN0b3J5QmFzZSogZmFjdG9yeSkgewotICBU
ZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgICAgIG5ldyBUZXN0SW5mbyh0ZXN0X2Nhc2Vf
bmFtZSwgbmFtZSwgdHlwZV9wYXJhbSwgdmFsdWVfcGFyYW0sCi0gICAgICAgICAgICAgICAgICAg
Y29kZV9sb2NhdGlvbiwgZml4dHVyZV9jbGFzc19pZCwgZmFjdG9yeSk7Ci0gIEdldFVuaXRUZXN0
SW1wbCgpLT5BZGRUZXN0SW5mbyhzZXRfdXBfdGMsIHRlYXJfZG93bl90YywgdGVzdF9pbmZvKTsK
LSAgcmV0dXJuIHRlc3RfaW5mbzsKLX0KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi12b2lk
IFJlcG9ydEludmFsaWRUZXN0Q2FzZVR5cGUoY29uc3QgY2hhciogdGVzdF9jYXNlX25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uIGNvZGVfbG9jYXRpb24p
IHsKLSAgTWVzc2FnZSBlcnJvcnM7Ci0gIGVycm9ycwotICAgICAgPDwgIkF0dGVtcHRlZCByZWRl
ZmluaXRpb24gb2YgdGVzdCBjYXNlICIgPDwgdGVzdF9jYXNlX25hbWUgPDwgIi5cbiIKLSAgICAg
IDw8ICJBbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRl
c3QgZml4dHVyZVxuIgotICAgICAgPDwgImNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlICIg
PDwgdGVzdF9jYXNlX25hbWUgPDwgIiwgeW91IHRyaWVkXG4iCi0gICAgICA8PCAidG8gZGVmaW5l
IGEgdGVzdCB1c2luZyBhIGZpeHR1cmUgY2xhc3MgZGlmZmVyZW50IGZyb20gdGhlIG9uZVxuIgot
ICAgICAgPDwgInVzZWQgZWFybGllci4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB0d28gZml4dHVy
ZSBjbGFzc2VzIGFyZVxuIgotICAgICAgPDwgImZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgYW5k
IGhhdmUgdGhlIHNhbWUgbmFtZS4gWW91IHNob3VsZFxuIgotICAgICAgPDwgInByb2JhYmx5IHJl
bmFtZSBvbmUgb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudFxu
IgotICAgICAgPDwgInRlc3QgY2FzZXMuIjsKLQotICBmcHJpbnRmKHN0ZGVyciwgIiVzICVzIiwK
LSAgICAgICAgICBGb3JtYXRGaWxlTG9jYXRpb24oY29kZV9sb2NhdGlvbi5maWxlLmNfc3RyKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVfbG9jYXRpb24ubGluZSkuY19zdHIo
KSwKLSAgICAgICAgICBlcnJvcnMuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0jZW5kaWYgIC8v
IEdURVNUX0hBU19QQVJBTV9URVNUCi0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi1uYW1l
c3BhY2UgewotCi0vLyBBIHByZWRpY2F0ZSB0aGF0IGNoZWNrcyB0aGUgdGVzdCBuYW1lIG9mIGEg
VGVzdEluZm8gYWdhaW5zdCBhIGtub3duCi0vLyB2YWx1ZS4KLS8vCi0vLyBUaGlzIGlzIHVzZWQg
Zm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUZXN0Q2FzZSBjbGFzcyBvbmx5LiAgV2UgcHV0Ci0v
LyBpdCBpbiB0aGUgYW5vbnltb3VzIG5hbWVzcGFjZSB0byBwcmV2ZW50IHBvbGx1dGluZyB0aGUg
b3V0ZXIKLS8vIG5hbWVzcGFjZS4KLS8vCi0vLyBUZXN0TmFtZUlzIGlzIGNvcHlhYmxlLgotY2xh
c3MgVGVzdE5hbWVJcyB7Ci0gcHVibGljOgotICAvLyBDb25zdHJ1Y3Rvci4KLSAgLy8KLSAgLy8g
VGVzdE5hbWVJcyBoYXMgTk8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgZXhwbGljaXQgVGVzdE5h
bWVJcyhjb25zdCBjaGFyKiBuYW1lKQotICAgICAgOiBuYW1lXyhuYW1lKSB7fQotCi0gIC8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3QgbmFtZSBvZiB0ZXN0X2luZm8gbWF0Y2hlcyBuYW1lXy4K
LSAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFRlc3RJbmZvICogdGVzdF9pbmZvKSBjb25zdCB7Ci0g
ICAgcmV0dXJuIHRlc3RfaW5mbyAmJiB0ZXN0X2luZm8tPm5hbWUoKSA9PSBuYW1lXzsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci19OwotCi19ICAvLyBuYW1lc3BhY2UK
LQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gVGhpcyBtZXRob2QgZXhwYW5kcyBhbGwgcGFy
YW1ldGVyaXplZCB0ZXN0cyByZWdpc3RlcmVkIHdpdGggbWFjcm9zIFRFU1RfUAotLy8gYW5kIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QIGludG8gcmVndWxhciB0ZXN0cyBhbmQgcmVnaXN0ZXJzIHRo
b3NlLgotLy8gVGhpcyB3aWxsIGJlIGRvbmUganVzdCBvbmNlIGR1cmluZyB0aGUgcHJvZ3JhbSBy
dW50aW1lLgotdm9pZCBVbml0VGVzdEltcGw6OlJlZ2lzdGVyUGFyYW1ldGVyaXplZFRlc3RzKCkg
ewotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIGlmICghcGFyYW1ldGVyaXplZF90ZXN0c19y
ZWdpc3RlcmVkXykgewotICAgIHBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeV8uUmVnaXN0ZXJU
ZXN0cygpOwotICAgIHBhcmFtZXRlcml6ZWRfdGVzdHNfcmVnaXN0ZXJlZF8gPSB0cnVlOwotICB9
Ci0jZW5kaWYKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIENyZWF0ZXMgdGhl
IHRlc3Qgb2JqZWN0LCBydW5zIGl0LCByZWNvcmRzIGl0cyByZXN1bHQsIGFuZCB0aGVuCi0vLyBk
ZWxldGVzIGl0Lgotdm9pZCBUZXN0SW5mbzo6UnVuKCkgewotICBpZiAoIXNob3VsZF9ydW5fKSBy
ZXR1cm47Ci0KLSAgLy8gVGVsbHMgVW5pdFRlc3Qgd2hlcmUgdG8gc3RvcmUgdGVzdCByZXN1bHQu
Ci0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6R2V0VW5p
dFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyh0aGlzKTsKLQotICBU
ZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+bGlz
dGVuZXJzKCkucmVwZWF0ZXIoKTsKLQotICAvLyBOb3RpZmllcyB0aGUgdW5pdCB0ZXN0IGV2ZW50
IGxpc3RlbmVycyB0aGF0IGEgdGVzdCBpcyBhYm91dCB0byBzdGFydC4KLSAgcmVwZWF0ZXItPk9u
VGVzdFN0YXJ0KCp0aGlzKTsKLQotICBjb25zdCBUaW1lSW5NaWxsaXMgc3RhcnQgPSBpbnRlcm5h
bDo6R2V0VGltZUluTWlsbGlzKCk7Ci0KLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkt
PlVwb25MZWF2aW5nR1Rlc3QoKTsKLQotICAvLyBDcmVhdGVzIHRoZSB0ZXN0IG9iamVjdC4KLSAg
VGVzdCogY29uc3QgdGVzdCA9IGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1
cHBvcnRlZCgKLSAgICAgIGZhY3RvcnlfLCAmaW50ZXJuYWw6OlRlc3RGYWN0b3J5QmFzZTo6Q3Jl
YXRlVGVzdCwKLSAgICAgICJ0aGUgdGVzdCBmaXh0dXJlJ3MgY29uc3RydWN0b3IiKTsKLQotICAv
LyBSdW5zIHRoZSB0ZXN0IG9ubHkgaWYgdGhlIHRlc3Qgb2JqZWN0IHdhcyBjcmVhdGVkIGFuZCBp
dHMKLSAgLy8gY29uc3RydWN0b3IgZGlkbid0IGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4KLSAg
aWYgKCh0ZXN0ICE9IE5VTEwpICYmICFUZXN0OjpIYXNGYXRhbEZhaWx1cmUoKSkgewotICAgIC8v
IFRoaXMgZG9lc24ndCB0aHJvdyBhcyBhbGwgdXNlciBjb2RlIHRoYXQgY2FuIHRocm93IGFyZSB3
cmFwcGVkIGludG8KLSAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY29kZS4KLSAgICB0ZXN0LT5S
dW4oKTsKLSAgfQotCi0gIC8vIERlbGV0ZXMgdGhlIHRlc3Qgb2JqZWN0LgotICBpbXBsLT5vc19z
dGFja190cmFjZV9nZXR0ZXIoKS0+VXBvbkxlYXZpbmdHVGVzdCgpOwotICBpbnRlcm5hbDo6SGFu
ZGxlRXhjZXB0aW9uc0luTWV0aG9kSWZTdXBwb3J0ZWQoCi0gICAgICB0ZXN0LCAmVGVzdDo6RGVs
ZXRlU2VsZl8sICJ0aGUgdGVzdCBmaXh0dXJlJ3MgZGVzdHJ1Y3RvciIpOwotCi0gIHJlc3VsdF8u
c2V0X2VsYXBzZWRfdGltZShpbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzKCkgLSBzdGFydCk7Ci0K
LSAgLy8gTm90aWZpZXMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lciB0aGF0IGEgdGVzdCBo
YXMganVzdCBmaW5pc2hlZC4KLSAgcmVwZWF0ZXItPk9uVGVzdEVuZCgqdGhpcyk7Ci0KLSAgLy8g
VGVsbHMgVW5pdFRlc3QgdG8gc3RvcCBhc3NvY2lhdGluZyBhc3NlcnRpb24gcmVzdWx0cyB0byB0
aGlzCi0gIC8vIHRlc3QuCi0gIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfaW5mbyhOVUxMKTsKLX0K
LQotLy8gY2xhc3MgVGVzdENhc2UKLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwg
dGVzdHMgaW4gdGhpcyB0ZXN0IGNhc2UuCi1pbnQgVGVzdENhc2U6OnN1Y2Nlc3NmdWxfdGVzdF9j
b3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UGFz
c2VkKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGlzIHRl
c3QgY2FzZS4KLWludCBUZXN0Q2FzZTo6ZmFpbGVkX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJl
dHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdEZhaWxlZCk7Ci19Ci0KLS8vIEdldHMg
dGhlIG51bWJlciBvZiBkaXNhYmxlZCB0ZXN0cyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgaW4gdGhl
IFhNTCByZXBvcnQuCi1pbnQgVGVzdENhc2U6OnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpIGNvbnN0IHsKLSAgcmV0dXJuIENvdW50SWYodGVzdF9pbmZvX2xpc3RfLCBUZXN0UmVwb3J0
YWJsZURpc2FibGVkKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIHRlc3Rz
IGluIHRoaXMgdGVzdCBjYXNlLgotaW50IFRlc3RDYXNlOjpkaXNhYmxlZF90ZXN0X2NvdW50KCkg
Y29uc3QgewotICByZXR1cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFRlc3REaXNhYmxlZCk7
Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiB0ZXN0cyB0byBiZSBwcmludGVkIGluIHRoZSBY
TUwgcmVwb3J0LgotaW50IFRlc3RDYXNlOjpyZXBvcnRhYmxlX3Rlc3RfY291bnQoKSBjb25zdCB7
Ci0gIHJldHVybiBDb3VudElmKHRlc3RfaW5mb19saXN0XywgVGVzdFJlcG9ydGFibGUpOwotfQot
Ci0vLyBHZXQgdGhlIG51bWJlciBvZiB0ZXN0cyBpbiB0aGlzIHRlc3QgY2FzZSB0aGF0IHNob3Vs
ZCBydW4uCi1pbnQgVGVzdENhc2U6OnRlc3RfdG9fcnVuX2NvdW50KCkgY29uc3QgewotICByZXR1
cm4gQ291bnRJZih0ZXN0X2luZm9fbGlzdF8sIFNob3VsZFJ1blRlc3QpOwotfQotCi0vLyBHZXRz
IHRoZSBudW1iZXIgb2YgYWxsIHRlc3RzLgotaW50IFRlc3RDYXNlOjp0b3RhbF90ZXN0X2NvdW50
KCkgY29uc3QgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih0ZXN0X2luZm9fbGlzdF8uc2l6
ZSgpKTsKLX0KLQotLy8gQ3JlYXRlcyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuCi0v
LwotLy8gQXJndW1lbnRzOgotLy8KLS8vICAgbmFtZTogICAgICAgICBuYW1lIG9mIHRoZSB0ZXN0
IGNhc2UKLS8vICAgYV90eXBlX3BhcmFtOiB0aGUgbmFtZSBvZiB0aGUgdGVzdCBjYXNlJ3MgdHlw
ZSBwYXJhbWV0ZXIsIG9yIE5VTEwgaWYKLS8vICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBh
IHR5cGVkIG9yIGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KLS8vICAgc2V0X3VwX3Rj
OiAgICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIHRlc3QgY2FzZQot
Ly8gICB0ZWFyX2Rvd25fdGM6IHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgdGVhcnMgZG93
biB0aGUgdGVzdCBjYXNlCi1UZXN0Q2FzZTo6VGVzdENhc2UoY29uc3QgY2hhciogYV9uYW1lLCBj
b25zdCBjaGFyKiBhX3R5cGVfcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgVGVzdDo6U2V0VXBU
ZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAotICAgICAgICAgICAgICAgICAgIFRlc3Q6OlRlYXJEb3du
VGVzdENhc2VGdW5jIHRlYXJfZG93bl90YykKLSAgICA6IG5hbWVfKGFfbmFtZSksCi0gICAgICB0
eXBlX3BhcmFtXyhhX3R5cGVfcGFyYW0gPyBuZXcgc3RkOjpzdHJpbmcoYV90eXBlX3BhcmFtKSA6
IE5VTEwpLAotICAgICAgc2V0X3VwX3RjXyhzZXRfdXBfdGMpLAotICAgICAgdGVhcl9kb3duX3Rj
Xyh0ZWFyX2Rvd25fdGMpLAotICAgICAgc2hvdWxkX3J1bl8oZmFsc2UpLAotICAgICAgZWxhcHNl
ZF90aW1lXygwKSB7Ci19Ci0KLS8vIERlc3RydWN0b3Igb2YgVGVzdENhc2UuCi1UZXN0Q2FzZTo6
flRlc3RDYXNlKCkgewotICAvLyBEZWxldGVzIGV2ZXJ5IFRlc3QgaW4gdGhlIGNvbGxlY3Rpb24u
Ci0gIEZvckVhY2godGVzdF9pbmZvX2xpc3RfLCBpbnRlcm5hbDo6RGVsZXRlPFRlc3RJbmZvPik7
Ci19Ci0KLS8vIFJldHVybnMgdGhlIGktdGggdGVzdCBhbW9uZyBhbGwgdGhlIHRlc3RzLiBpIGNh
biByYW5nZSBmcm9tIDAgdG8KLS8vIHRvdGFsX3Rlc3RfY291bnQoKSAtIDEuIElmIGkgaXMgbm90
IGluIHRoYXQgcmFuZ2UsIHJldHVybnMgTlVMTC4KLWNvbnN0IFRlc3RJbmZvKiBUZXN0Q2FzZTo6
R2V0VGVzdEluZm8oaW50IGkpIGNvbnN0IHsKLSAgY29uc3QgaW50IGluZGV4ID0gR2V0RWxlbWVu
dE9yKHRlc3RfaW5kaWNlc18sIGksIC0xKTsKLSAgcmV0dXJuIGluZGV4IDwgMCA/IE5VTEwgOiB0
ZXN0X2luZm9fbGlzdF9baW5kZXhdOwotfQotCi0vLyBSZXR1cm5zIHRoZSBpLXRoIHRlc3QgYW1v
bmcgYWxsIHRoZSB0ZXN0cy4gaSBjYW4gcmFuZ2UgZnJvbSAwIHRvCi0vLyB0b3RhbF90ZXN0X2Nv
dW50KCkgLSAxLiBJZiBpIGlzIG5vdCBpbiB0aGF0IHJhbmdlLCByZXR1cm5zIE5VTEwuCi1UZXN0
SW5mbyogVGVzdENhc2U6OkdldE11dGFibGVUZXN0SW5mbyhpbnQgaSkgewotICBjb25zdCBpbnQg
aW5kZXggPSBHZXRFbGVtZW50T3IodGVzdF9pbmRpY2VzXywgaSwgLTEpOwotICByZXR1cm4gaW5k
ZXggPCAwID8gTlVMTCA6IHRlc3RfaW5mb19saXN0X1tpbmRleF07Ci19Ci0KLS8vIEFkZHMgYSB0
ZXN0IHRvIHRoaXMgdGVzdCBjYXNlLiAgV2lsbCBkZWxldGUgdGhlIHRlc3QgdXBvbgotLy8gZGVz
dHJ1Y3Rpb24gb2YgdGhlIFRlc3RDYXNlIG9iamVjdC4KLXZvaWQgVGVzdENhc2U6OkFkZFRlc3RJ
bmZvKFRlc3RJbmZvICogdGVzdF9pbmZvKSB7Ci0gIHRlc3RfaW5mb19saXN0Xy5wdXNoX2JhY2so
dGVzdF9pbmZvKTsKLSAgdGVzdF9pbmRpY2VzXy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8aW50Pih0
ZXN0X2luZGljZXNfLnNpemUoKSkpOwotfQotCi0vLyBSdW5zIGV2ZXJ5IHRlc3QgaW4gdGhpcyBU
ZXN0Q2FzZS4KLXZvaWQgVGVzdENhc2U6OlJ1bigpIHsKLSAgaWYgKCFzaG91bGRfcnVuXykgcmV0
dXJuOwotCi0gIGludGVybmFsOjpVbml0VGVzdEltcGwqIGNvbnN0IGltcGwgPSBpbnRlcm5hbDo6
R2V0VW5pdFRlc3RJbXBsKCk7Ci0gIGltcGwtPnNldF9jdXJyZW50X3Rlc3RfY2FzZSh0aGlzKTsK
LQotICBUZXN0RXZlbnRMaXN0ZW5lciogcmVwZWF0ZXIgPSBVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KS0+bGlzdGVuZXJzKCkucmVwZWF0ZXIoKTsKLQotICByZXBlYXRlci0+T25UZXN0Q2FzZVN0YXJ0
KCp0aGlzKTsKLSAgaW1wbC0+b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCktPlVwb25MZWF2aW5nR1Rl
c3QoKTsKLSAgaW50ZXJuYWw6OkhhbmRsZUV4Y2VwdGlvbnNJbk1ldGhvZElmU3VwcG9ydGVkKAot
ICAgICAgdGhpcywgJlRlc3RDYXNlOjpSdW5TZXRVcFRlc3RDYXNlLCAiU2V0VXBUZXN0Q2FzZSgp
Iik7Ci0KLSAgY29uc3QgaW50ZXJuYWw6OlRpbWVJbk1pbGxpcyBzdGFydCA9IGludGVybmFsOjpH
ZXRUaW1lSW5NaWxsaXMoKTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbF90ZXN0X2NvdW50
KCk7IGkrKykgewotICAgIEdldE11dGFibGVUZXN0SW5mbyhpKS0+UnVuKCk7Ci0gIH0KLSAgZWxh
cHNlZF90aW1lXyA9IGludGVybmFsOjpHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0OwotCi0gIGlt
cGwtPm9zX3N0YWNrX3RyYWNlX2dldHRlcigpLT5VcG9uTGVhdmluZ0dUZXN0KCk7Ci0gIGludGVy
bmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJZlN1cHBvcnRlZCgKLSAgICAgIHRoaXMsICZU
ZXN0Q2FzZTo6UnVuVGVhckRvd25UZXN0Q2FzZSwgIlRlYXJEb3duVGVzdENhc2UoKSIpOwotCi0g
IHJlcGVhdGVyLT5PblRlc3RDYXNlRW5kKCp0aGlzKTsKLSAgaW1wbC0+c2V0X2N1cnJlbnRfdGVz
dF9jYXNlKE5VTEwpOwotfQotCi0vLyBDbGVhcnMgdGhlIHJlc3VsdHMgb2YgYWxsIHRlc3RzIGlu
IHRoaXMgdGVzdCBjYXNlLgotdm9pZCBUZXN0Q2FzZTo6Q2xlYXJSZXN1bHQoKSB7Ci0gIGFkX2hv
Y190ZXN0X3Jlc3VsdF8uQ2xlYXIoKTsKLSAgRm9yRWFjaCh0ZXN0X2luZm9fbGlzdF8sIFRlc3RJ
bmZvOjpDbGVhclRlc3RSZXN1bHQpOwotfQotCi0vLyBTaHVmZmxlcyB0aGUgdGVzdHMgaW4gdGhp
cyB0ZXN0IGNhc2UuCi12b2lkIFRlc3RDYXNlOjpTaHVmZmxlVGVzdHMoaW50ZXJuYWw6OlJhbmRv
bSogcmFuZG9tKSB7Ci0gIFNodWZmbGUocmFuZG9tLCAmdGVzdF9pbmRpY2VzXyk7Ci19Ci0KLS8v
IFJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIHRvIGJlZm9yZSB0aGUgZmlyc3Qgc2h1ZmZsZS4KLXZv
aWQgVGVzdENhc2U6OlVuc2h1ZmZsZVRlc3RzKCkgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRlc3RfaW5kaWNlc18uc2l6ZSgpOyBpKyspIHsKLSAgICB0ZXN0X2luZGljZXNfW2ldID0gc3Rh
dGljX2Nhc3Q8aW50PihpKTsKLSAgfQotfQotCi0vLyBGb3JtYXRzIGEgY291bnRhYmxlIG5vdW4u
ICBEZXBlbmRpbmcgb24gaXRzIHF1YW50aXR5LCBlaXRoZXIgdGhlCi0vLyBzaW5ndWxhciBmb3Jt
IG9yIHRoZSBwbHVyYWwgZm9ybSBpcyB1c2VkLiBlLmcuCi0vLwotLy8gRm9ybWF0Q291bnRhYmxl
Tm91bigxLCAiZm9ybXVsYSIsICJmb3JtdWxpIikgcmV0dXJucyAiMSBmb3JtdWxhIi4KLS8vIEZv
cm1hdENvdW50YWJsZU5vdW4oNSwgImJvb2siLCAiYm9va3MiKSByZXR1cm5zICI1IGJvb2tzIi4K
LXN0YXRpYyBzdGQ6OnN0cmluZyBGb3JtYXRDb3VudGFibGVOb3VuKGludCBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzaW5ndWxhcl9m
b3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
IHBsdXJhbF9mb3JtKSB7Ci0gIHJldHVybiBpbnRlcm5hbDo6U3RyZWFtYWJsZVRvU3RyaW5nKGNv
dW50KSArICIgIiArCi0gICAgICAoY291bnQgPT0gMSA/IHNpbmd1bGFyX2Zvcm0gOiBwbHVyYWxf
Zm9ybSk7Ci19Ci0KLS8vIEZvcm1hdHMgdGhlIGNvdW50IG9mIHRlc3RzLgotc3RhdGljIHN0ZDo6
c3RyaW5nIEZvcm1hdFRlc3RDb3VudChpbnQgdGVzdF9jb3VudCkgewotICByZXR1cm4gRm9ybWF0
Q291bnRhYmxlTm91bih0ZXN0X2NvdW50LCAidGVzdCIsICJ0ZXN0cyIpOwotfQotCi0vLyBGb3Jt
YXRzIHRoZSBjb3VudCBvZiB0ZXN0IGNhc2VzLgotc3RhdGljIHN0ZDo6c3RyaW5nIEZvcm1hdFRl
c3RDYXNlQ291bnQoaW50IHRlc3RfY2FzZV9jb3VudCkgewotICByZXR1cm4gRm9ybWF0Q291bnRh
YmxlTm91bih0ZXN0X2Nhc2VfY291bnQsICJ0ZXN0IGNhc2UiLCAidGVzdCBjYXNlcyIpOwotfQot
Ci0vLyBDb252ZXJ0cyBhIFRlc3RQYXJ0UmVzdWx0OjpUeXBlIGVudW0gdG8gaHVtYW4tZnJpZW5k
bHkgc3RyaW5nCi0vLyByZXByZXNlbnRhdGlvbi4gIEJvdGgga05vbkZhdGFsRmFpbHVyZSBhbmQg
a0ZhdGFsRmFpbHVyZSBhcmUgdHJhbnNsYXRlZAotLy8gdG8gIkZhaWx1cmUiLCBhcyB0aGUgdXNl
ciB1c3VhbGx5IGRvZXNuJ3QgY2FyZSBhYm91dCB0aGUgZGlmZmVyZW5jZQotLy8gYmV0d2VlbiB0
aGUgdHdvIHdoZW4gdmlld2luZyB0aGUgdGVzdCByZXN1bHQuCi1zdGF0aWMgY29uc3QgY2hhciAq
IFRlc3RQYXJ0UmVzdWx0VHlwZVRvU3RyaW5nKFRlc3RQYXJ0UmVzdWx0OjpUeXBlIHR5cGUpIHsK
LSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3M6Ci0g
ICAgICByZXR1cm4gIlN1Y2Nlc3MiOwotCi0gICAgY2FzZSBUZXN0UGFydFJlc3VsdDo6a05vbkZh
dGFsRmFpbHVyZToKLSAgICBjYXNlIFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlOgotI2lm
ZGVmIF9NU0NfVkVSCi0gICAgICByZXR1cm4gImVycm9yOiAiOwotI2Vsc2UKLSAgICAgIHJldHVy
biAiRmFpbHVyZVxuIjsKLSNlbmRpZgotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gIlVua25v
d24gcmVzdWx0IHR5cGUiOwotICB9Ci19Ci0KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vIFBy
aW50cyBhIFRlc3RQYXJ0UmVzdWx0IHRvIGFuIHN0ZDo6c3RyaW5nLgotc3RhdGljIHN0ZDo6c3Ry
aW5nIFByaW50VGVzdFBhcnRSZXN1bHRUb1N0cmluZygKLSAgICBjb25zdCBUZXN0UGFydFJlc3Vs
dCYgdGVzdF9wYXJ0X3Jlc3VsdCkgewotICByZXR1cm4gKE1lc3NhZ2UoKQotICAgICAgICAgIDw8
IGludGVybmFsOjpGb3JtYXRGaWxlTG9jYXRpb24odGVzdF9wYXJ0X3Jlc3VsdC5maWxlX25hbWUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFydF9y
ZXN1bHQubGluZV9udW1iZXIoKSkKLSAgICAgICAgICA8PCAiICIgPDwgVGVzdFBhcnRSZXN1bHRU
eXBlVG9TdHJpbmcodGVzdF9wYXJ0X3Jlc3VsdC50eXBlKCkpCi0gICAgICAgICAgPDwgdGVzdF9w
YXJ0X3Jlc3VsdC5tZXNzYWdlKCkpLkdldFN0cmluZygpOwotfQotCi0vLyBQcmludHMgYSBUZXN0
UGFydFJlc3VsdC4KLXN0YXRpYyB2b2lkIFByaW50VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBh
cnRSZXN1bHQmIHRlc3RfcGFydF9yZXN1bHQpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHJlc3Vs
dCA9Ci0gICAgICBQcmludFRlc3RQYXJ0UmVzdWx0VG9TdHJpbmcodGVzdF9wYXJ0X3Jlc3VsdCk7
Ci0gIHByaW50ZigiJXNcbiIsIHJlc3VsdC5jX3N0cigpKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci0g
IC8vIElmIHRoZSB0ZXN0IHByb2dyYW0gcnVucyBpbiBWaXN1YWwgU3R1ZGlvIG9yIGEgZGVidWdn
ZXIsIHRoZQotICAvLyBmb2xsb3dpbmcgc3RhdGVtZW50cyBhZGQgdGhlIHRlc3QgcGFydCByZXN1
bHQgbWVzc2FnZSB0byB0aGUgT3V0cHV0Ci0gIC8vIHdpbmRvdyBzdWNoIHRoYXQgdGhlIHVzZXIg
Y2FuIGRvdWJsZS1jbGljayBvbiBpdCB0byBqdW1wIHRvIHRoZQotICAvLyBjb3JyZXNwb25kaW5n
IHNvdXJjZSBjb2RlIGxvY2F0aW9uOyBvdGhlcndpc2UgdGhleSBkbyBub3RoaW5nLgotI2lmIEdU
RVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIC8vIFdlIGRvbid0
IGNhbGwgT3V0cHV0RGVidWdTdHJpbmcqKCkgb24gV2luZG93cyBNb2JpbGUsIGFzIHByaW50aW5n
Ci0gIC8vIHRvIHN0ZG91dCBpcyBkb25lIGJ5IE91dHB1dERlYnVnU3RyaW5nKCkgdGhlcmUgYWxy
ZWFkeSAtIHdlIGRvbid0Ci0gIC8vIHdhbnQgdGhlIHNhbWUgbWVzc2FnZSBwcmludGVkIHR3aWNl
LgotICA6Ok91dHB1dERlYnVnU3RyaW5nQShyZXN1bHQuY19zdHIoKSk7Ci0gIDo6T3V0cHV0RGVi
dWdTdHJpbmdBKCJcbiIpOwotI2VuZGlmCi19Ci0KLS8vIGNsYXNzIFByZXR0eVVuaXRUZXN0UmVz
dWx0UHJpbnRlcgotCi1lbnVtIEdUZXN0Q29sb3IgewotICBDT0xPUl9ERUZBVUxULAotICBDT0xP
Ul9SRUQsCi0gIENPTE9SX0dSRUVOLAotICBDT0xPUl9ZRUxMT1cKLX07Ci0KLSNpZiBHVEVTVF9P
U19XSU5ET1dTICYmICFHVEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiBcCi0gICAgIUdURVNUX09T
X1dJTkRPV1NfUEhPTkUgJiYgIUdURVNUX09TX1dJTkRPV1NfUlQKLQotLy8gUmV0dXJucyB0aGUg
Y2hhcmFjdGVyIGF0dHJpYnV0ZSBmb3IgdGhlIGdpdmVuIGNvbG9yLgotV09SRCBHZXRDb2xvckF0
dHJpYnV0ZShHVGVzdENvbG9yIGNvbG9yKSB7Ci0gIHN3aXRjaCAoY29sb3IpIHsKLSAgICBjYXNl
IENPTE9SX1JFRDogICAgcmV0dXJuIEZPUkVHUk9VTkRfUkVEOwotICAgIGNhc2UgQ09MT1JfR1JF
RU46ICByZXR1cm4gRk9SRUdST1VORF9HUkVFTjsKLSAgICBjYXNlIENPTE9SX1lFTExPVzogcmV0
dXJuIEZPUkVHUk9VTkRfUkVEIHwgRk9SRUdST1VORF9HUkVFTjsKLSAgICBkZWZhdWx0OiAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotI2Vsc2UKLQotLy8gUmV0dXJucyB0aGUgQU5TSSBj
b2xvciBjb2RlIGZvciB0aGUgZ2l2ZW4gY29sb3IuICBDT0xPUl9ERUZBVUxUIGlzCi0vLyBhbiBp
bnZhbGlkIGlucHV0LgotY29uc3QgY2hhciogR2V0QW5zaUNvbG9yQ29kZShHVGVzdENvbG9yIGNv
bG9yKSB7Ci0gIHN3aXRjaCAoY29sb3IpIHsKLSAgICBjYXNlIENPTE9SX1JFRDogICAgIHJldHVy
biAiMSI7Ci0gICAgY2FzZSBDT0xPUl9HUkVFTjogICByZXR1cm4gIjIiOwotICAgIGNhc2UgQ09M
T1JfWUVMTE9XOiAgcmV0dXJuICIzIjsKLSAgICBkZWZhdWx0OiAgICAgICAgICAgIHJldHVybiBO
VUxMOwotICB9OwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgR29vZ2xlIFRlc3Qgc2hvdWxk
IHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dC4KLWJvb2wgU2hvdWxkVXNlQ29sb3IoYm9vbCBzdGRv
dXRfaXNfdHR5KSB7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IGd0ZXN0X2NvbG9yID0gR1RFU1RfRkxB
Ryhjb2xvcikuY19zdHIoKTsKLQotICBpZiAoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5n
RXF1YWxzKGd0ZXN0X2NvbG9yLCAiYXV0byIpKSB7Ci0jaWYgR1RFU1RfT1NfV0lORE9XUwotICAg
IC8vIE9uIFdpbmRvd3MgdGhlIFRFUk0gdmFyaWFibGUgaXMgdXN1YWxseSBub3Qgc2V0LCBidXQg
dGhlCi0gICAgLy8gY29uc29sZSB0aGVyZSBkb2VzIHN1cHBvcnQgY29sb3JzLgotICAgIHJldHVy
biBzdGRvdXRfaXNfdHR5OwotI2Vsc2UKLSAgICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMs
IHdlIHJlbHkgb24gdGhlIFRFUk0gdmFyaWFibGUuCi0gICAgY29uc3QgY2hhciogY29uc3QgdGVy
bSA9IHBvc2l4OjpHZXRFbnYoIlRFUk0iKTsKLSAgICBjb25zdCBib29sIHRlcm1fc3VwcG9ydHNf
Y29sb3IgPQotICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInh0ZXJtIikgfHwK
LSAgICAgICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ4dGVybS1jb2xvciIpIHx8Ci0g
ICAgICAgIFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAieHRlcm0tMjU2Y29sb3IiKSB8fAot
ICAgICAgICBTdHJpbmc6OkNTdHJpbmdFcXVhbHModGVybSwgInNjcmVlbiIpIHx8Ci0gICAgICAg
IFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAic2NyZWVuLTI1NmNvbG9yIikgfHwKLSAgICAg
ICAgU3RyaW5nOjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ0bXV4IikgfHwKLSAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJ0bXV4LTI1NmNvbG9yIikgfHwKLSAgICAgICAgU3RyaW5n
OjpDU3RyaW5nRXF1YWxzKHRlcm0sICJyeHZ0LXVuaWNvZGUiKSB8fAotICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgInJ4dnQtdW5pY29kZS0yNTZjb2xvciIpIHx8Ci0gICAgICAg
IFN0cmluZzo6Q1N0cmluZ0VxdWFscyh0ZXJtLCAibGludXgiKSB8fAotICAgICAgICBTdHJpbmc6
OkNTdHJpbmdFcXVhbHModGVybSwgImN5Z3dpbiIpOwotICAgIHJldHVybiBzdGRvdXRfaXNfdHR5
ICYmIHRlcm1fc3VwcG9ydHNfY29sb3I7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAg
fQotCi0gIHJldHVybiBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZUNTdHJpbmdFcXVhbHMoZ3Rlc3Rf
Y29sb3IsICJ5ZXMiKSB8fAotICAgICAgU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVDU3RyaW5nRXF1
YWxzKGd0ZXN0X2NvbG9yLCAidHJ1ZSIpIHx8Ci0gICAgICBTdHJpbmc6OkNhc2VJbnNlbnNpdGl2
ZUNTdHJpbmdFcXVhbHMoZ3Rlc3RfY29sb3IsICJ0IikgfHwKLSAgICAgIFN0cmluZzo6Q1N0cmlu
Z0VxdWFscyhndGVzdF9jb2xvciwgIjEiKTsKLSAgLy8gV2UgdGFrZSAieWVzIiwgInRydWUiLCAi
dCIsIGFuZCAiMSIgYXMgbWVhbmluZyAieWVzIi4gIElmIHRoZQotICAvLyB2YWx1ZSBpcyBuZWl0
aGVyIG9uZSBvZiB0aGVzZSBub3IgImF1dG8iLCB3ZSB0cmVhdCBpdCBhcyAibm8iIHRvCi0gIC8v
IGJlIGNvbnNlcnZhdGl2ZS4KLX0KLQotLy8gSGVscGVycyBmb3IgcHJpbnRpbmcgY29sb3JlZCBz
dHJpbmdzIHRvIHN0ZG91dC4gTm90ZSB0aGF0IG9uIFdpbmRvd3MsIHdlCi0vLyBjYW5ub3Qgc2lt
cGx5IGVtaXQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFuZCBoYXZlIHRoZSB0ZXJtaW5hbCBjaGFuZ2Ug
Y29sb3JzLgotLy8gVGhpcyByb3V0aW5lIG11c3QgYWN0dWFsbHkgZW1pdCB0aGUgY2hhcmFjdGVy
cyByYXRoZXIgdGhhbiByZXR1cm4gYSBzdHJpbmcKLS8vIHRoYXQgd291bGQgYmUgY29sb3JlZCB3
aGVuIHByaW50ZWQsIGFzIGNhbiBiZSBkb25lIG9uIExpbnV4LgotR1RFU1RfQVRUUklCVVRFX1BS
SU5URl8oMiwgMykKLXZvaWQgQ29sb3JlZFByaW50ZihHVGVzdENvbG9yIGNvbG9yLCBjb25zdCBj
aGFyKiBmbXQsIC4uLikgewotICB2YV9saXN0IGFyZ3M7Ci0gIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7
Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRSB8fCBHVEVTVF9PU19TWU1CSUFOIHx8IEdU
RVNUX09TX1pPUyB8fCBcCi0gICAgR1RFU1RfT1NfSU9TIHx8IEdURVNUX09TX1dJTkRPV1NfUEhP
TkUgfHwgR1RFU1RfT1NfV0lORE9XU19SVAotICBjb25zdCBib29sIHVzZV9jb2xvciA9IEFsd2F5
c0ZhbHNlKCk7Ci0jZWxzZQotICBzdGF0aWMgY29uc3QgYm9vbCBpbl9jb2xvcl9tb2RlID0KLSAg
ICAgIFNob3VsZFVzZUNvbG9yKHBvc2l4OjpJc0FUVFkocG9zaXg6OkZpbGVObyhzdGRvdXQpKSAh
PSAwKTsKLSAgY29uc3QgYm9vbCB1c2VfY29sb3IgPSBpbl9jb2xvcl9tb2RlICYmIChjb2xvciAh
PSBDT0xPUl9ERUZBVUxUKTsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUgfHwg
R1RFU1RfT1NfU1lNQklBTiB8fCBHVEVTVF9PU19aT1MKLSAgLy8gVGhlICchPSAwJyBjb21wYXJp
c29uIGlzIG5lY2Vzc2FyeSB0byBzYXRpc2Z5IE1TVkMgNy4xLgotCi0gIGlmICghdXNlX2NvbG9y
KSB7Ci0gICAgdnByaW50ZihmbXQsIGFyZ3MpOwotICAgIHZhX2VuZChhcmdzKTsKLSAgICByZXR1
cm47Ci0gIH0KLQotI2lmIEdURVNUX09TX1dJTkRPV1MgJiYgIUdURVNUX09TX1dJTkRPV1NfTU9C
SUxFICYmIFwKLSAgICAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RFU1RfT1NfV0lORE9X
U19SVAotICBjb25zdCBIQU5ETEUgc3Rkb3V0X2hhbmRsZSA9IEdldFN0ZEhhbmRsZShTVERfT1VU
UFVUX0hBTkRMRSk7Ci0KLSAgLy8gR2V0cyB0aGUgY3VycmVudCB0ZXh0IGNvbG9yLgotICBDT05T
T0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBidWZmZXJfaW5mbzsKLSAgR2V0Q29uc29sZVNjcmVlbkJ1
ZmZlckluZm8oc3Rkb3V0X2hhbmRsZSwgJmJ1ZmZlcl9pbmZvKTsKLSAgY29uc3QgV09SRCBvbGRf
Y29sb3JfYXR0cnMgPSBidWZmZXJfaW5mby53QXR0cmlidXRlczsKLQotICAvLyBXZSBuZWVkIHRv
IGZsdXNoIHRoZSBzdHJlYW0gYnVmZmVycyBpbnRvIHRoZSBjb25zb2xlIGJlZm9yZSBlYWNoCi0g
IC8vIFNldENvbnNvbGVUZXh0QXR0cmlidXRlIGNhbGwgbGVzdCBpdCBhZmZlY3QgdGhlIHRleHQg
dGhhdCBpcyBhbHJlYWR5Ci0gIC8vIHByaW50ZWQgYnV0IGhhcyBub3QgeWV0IHJlYWNoZWQgdGhl
IGNvbnNvbGUuCi0gIGZmbHVzaChzdGRvdXQpOwotICBTZXRDb25zb2xlVGV4dEF0dHJpYnV0ZShz
dGRvdXRfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRDb2xvckF0dHJpYnV0
ZShjb2xvcikgfCBGT1JFR1JPVU5EX0lOVEVOU0lUWSk7Ci0gIHZwcmludGYoZm10LCBhcmdzKTsK
LQotICBmZmx1c2goc3Rkb3V0KTsKLSAgLy8gUmVzdG9yZXMgdGhlIHRleHQgY29sb3IuCi0gIFNl
dENvbnNvbGVUZXh0QXR0cmlidXRlKHN0ZG91dF9oYW5kbGUsIG9sZF9jb2xvcl9hdHRycyk7Ci0j
ZWxzZQotICBwcmludGYoIlwwMzNbMDszJXNtIiwgR2V0QW5zaUNvbG9yQ29kZShjb2xvcikpOwot
ICB2cHJpbnRmKGZtdCwgYXJncyk7Ci0gIHByaW50ZigiXDAzM1ttIik7ICAvLyBSZXNldHMgdGhl
IHRlcm1pbmFsIHRvIGRlZmF1bHQuCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MgJiYgIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0gIHZhX2VuZChhcmdzKTsKLX0KLQotLy8gVGV4dCBwcmlu
dGVkIGluIEdvb2dsZSBUZXN0J3MgdGV4dCBvdXRwdXQgYW5kIC0tZ3VuaXRfbGlzdF90ZXN0cwot
Ly8gb3V0cHV0IHRvIGxhYmVsIHRoZSB0eXBlIHBhcmFtZXRlciBhbmQgdmFsdWUgcGFyYW1ldGVy
IGZvciBhIHRlc3QuCi1zdGF0aWMgY29uc3QgY2hhciBrVHlwZVBhcmFtTGFiZWxbXSA9ICJUeXBl
UGFyYW0iOwotc3RhdGljIGNvbnN0IGNoYXIga1ZhbHVlUGFyYW1MYWJlbFtdID0gIkdldFBhcmFt
KCkiOwotCi12b2lkIFByaW50RnVsbFRlc3RDb21tZW50SWZQcmVzZW50KGNvbnN0IFRlc3RJbmZv
JiB0ZXN0X2luZm8pIHsKLSAgY29uc3QgY2hhciogY29uc3QgdHlwZV9wYXJhbSA9IHRlc3RfaW5m
by50eXBlX3BhcmFtKCk7Ci0gIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3BhcmFtID0gdGVzdF9p
bmZvLnZhbHVlX3BhcmFtKCk7Ci0KLSAgaWYgKHR5cGVfcGFyYW0gIT0gTlVMTCB8fCB2YWx1ZV9w
YXJhbSAhPSBOVUxMKSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICIpOwotICAgIGlmICh0eXBlX3Bh
cmFtICE9IE5VTEwpIHsKLSAgICAgIHByaW50ZigiJXMgPSAlcyIsIGtUeXBlUGFyYW1MYWJlbCwg
dHlwZV9wYXJhbSk7Ci0gICAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkKLSAgICAgICAgcHJp
bnRmKCIgYW5kICIpOwotICAgIH0KLSAgICBpZiAodmFsdWVfcGFyYW0gIT0gTlVMTCkgewotICAg
ICAgcHJpbnRmKCIlcyA9ICVzIiwga1ZhbHVlUGFyYW1MYWJlbCwgdmFsdWVfcGFyYW0pOwotICAg
IH0KLSAgfQotfQotCi0vLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFRlc3RFdmVudExpc3Rl
bmVyIGludGVyZmFjZS4KLS8vCi0vLyBDbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIg
aXMgY29weWFibGUuCi1jbGFzcyBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXIgOiBwdWJsaWMg
VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyKCkge30KLSAgc3RhdGljIHZvaWQgUHJpbnRUZXN0TmFtZShjb25zdCBjaGFyICogdGVzdF9j
YXNlLCBjb25zdCBjaGFyICogdGVzdCkgewotICAgIHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2Us
IHRlc3QpOwotICB9Ci0KLSAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIG92ZXJyaWRlIHdoYXQn
cyBpbiB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgY2xhc3MuCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RQ
cm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwg
dm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQg
aXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0
VXBFbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0gIHZpcnR1YWwgdm9pZCBP
blRlc3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7Ci0gIHZpcnR1YWwgdm9p
ZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKLSAgdmlydHVhbCB2b2lk
IE9uVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7Ci0gIHZpcnR1
YWwgdm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7Ci0gIHZpcnR1YWwg
dm9pZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwotICB2aXJ0dWFs
IHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rl
c3QpOwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0
VGVzdCYgLyp1bml0X3Rlc3QqLykge30KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVu
ZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2
b2lkIE9uVGVzdFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8pIHt9Ci0K
LSBwcml2YXRlOgotICBzdGF0aWMgdm9pZCBQcmludEZhaWxlZFRlc3RzKGNvbnN0IFVuaXRUZXN0
JiB1bml0X3Rlc3QpOwotfTsKLQotICAvLyBGaXJlZCBiZWZvcmUgZWFjaCBpdGVyYXRpb24gb2Yg
dGVzdHMgc3RhcnRzLgotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEl0
ZXJhdGlvblN0YXJ0KAotICAgIGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3QsIGludCBpdGVyYXRp
b24pIHsKLSAgaWYgKEdURVNUX0ZMQUcocmVwZWF0KSAhPSAxKQotICAgIHByaW50ZigiXG5SZXBl
YXRpbmcgYWxsIHRlc3RzIChpdGVyYXRpb24gJWQpIC4gLiAuXG5cbiIsIGl0ZXJhdGlvbiArIDEp
OwotCi0gIGNvbnN0IGNoYXIqIGNvbnN0IGZpbHRlciA9IEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0
cigpOwotCi0gIC8vIFByaW50cyB0aGUgZmlsdGVyIGlmIGl0J3Mgbm90ICouICBUaGlzIHJlbWlu
ZHMgdGhlIHVzZXIgdGhhdCBzb21lCi0gIC8vIHRlc3RzIG1heSBiZSBza2lwcGVkLgotICBpZiAo
IVN0cmluZzo6Q1N0cmluZ0VxdWFscyhmaWx0ZXIsIGtVbml2ZXJzYWxGaWx0ZXIpKSB7Ci0gICAg
Q29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAgICAgICAiTm90ZTogJXMg
ZmlsdGVyID0gJXNcbiIsIEdURVNUX05BTUVfLCBmaWx0ZXIpOwotICB9Ci0KLSAgaWYgKGludGVy
bmFsOjpTaG91bGRTaGFyZChrVGVzdFRvdGFsU2hhcmRzLCBrVGVzdFNoYXJkSW5kZXgsIGZhbHNl
KSkgewotICAgIGNvbnN0IEludDMyIHNoYXJkX2luZGV4ID0gSW50MzJGcm9tRW52T3JEaWUoa1Rl
c3RTaGFyZEluZGV4LCAtMSk7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9ZRUxMT1csCi0gICAg
ICAgICAgICAgICAgICAiTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkICVkIG9mICVzLlxuIiwKLSAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc2hhcmRfaW5kZXgpICsgMSwKLSAgICAg
ICAgICAgICAgICAgIGludGVybmFsOjpwb3NpeDo6R2V0RW52KGtUZXN0VG90YWxTaGFyZHMpKTsK
LSAgfQotCi0gIGlmIChHVEVTVF9GTEFHKHNodWZmbGUpKSB7Ci0gICAgQ29sb3JlZFByaW50ZihD
T0xPUl9ZRUxMT1csCi0gICAgICAgICAgICAgICAgICAiTm90ZTogUmFuZG9taXppbmcgdGVzdHMn
IG9yZGVycyB3aXRoIGEgc2VlZCBvZiAlZCAuXG4iLAotICAgICAgICAgICAgICAgICAgdW5pdF90
ZXN0LnJhbmRvbV9zZWVkKCkpOwotICB9Ci0KLSAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwg
ICJbPT09PT09PT09PV0gIik7Ci0gIHByaW50ZigiUnVubmluZyAlcyBmcm9tICVzLlxuIiwKLSAg
ICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rlc3QudGVzdF90b19ydW5fY291bnQoKSkuY19z
dHIoKSwKLSAgICAgICAgIEZvcm1hdFRlc3RDYXNlQ291bnQodW5pdF90ZXN0LnRlc3RfY2FzZV90
b19ydW5fY291bnQoKSkuY19zdHIoKSk7Ci0gIGZmbHVzaChzdGRvdXQpOwotfQotCi12b2lkIFBy
ZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6T25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0KAotICAg
IGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gIENvbG9yZWRQcmludGYoQ09MT1Jf
R1JFRU4sICAiWy0tLS0tLS0tLS1dICIpOwotICBwcmludGYoIkdsb2JhbCB0ZXN0IGVudmlyb25t
ZW50IHNldC11cC5cbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0
VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VTdGFydChjb25zdCBUZXN0Q2FzZSYgdGVzdF9j
YXNlKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGNvdW50cyA9Ci0gICAgICBGb3JtYXRDb3VudGFi
bGVOb3VuKHRlc3RfY2FzZS50ZXN0X3RvX3J1bl9jb3VudCgpLCAidGVzdCIsICJ0ZXN0cyIpOwot
ICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAiWy0tLS0tLS0tLS1dICIpOwotICBwcmludGYo
IiVzIGZyb20gJXMiLCBjb3VudHMuY19zdHIoKSwgdGVzdF9jYXNlLm5hbWUoKSk7Ci0gIGlmICh0
ZXN0X2Nhc2UudHlwZV9wYXJhbSgpID09IE5VTEwpIHsKLSAgICBwcmludGYoIlxuIik7Ci0gIH0g
ZWxzZSB7Ci0gICAgcHJpbnRmKCIsIHdoZXJlICVzID0gJXNcbiIsIGtUeXBlUGFyYW1MYWJlbCwg
dGVzdF9jYXNlLnR5cGVfcGFyYW0oKSk7Ci0gIH0KLSAgZmZsdXNoKHN0ZG91dCk7Ci19Ci0KLXZv
aWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RTdGFydChjb25zdCBUZXN0SW5m
byYgdGVzdF9pbmZvKSB7Ci0gIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAiWyBSVU4gICAg
ICBdICIpOwotICBQcmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0
X2luZm8ubmFtZSgpKTsKLSAgcHJpbnRmKCJcbiIpOwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQot
Ly8gQ2FsbGVkIGFmdGVyIGFuIGFzc2VydGlvbiBmYWlsdXJlLgotdm9pZCBQcmV0dHlVbml0VGVz
dFJlc3VsdFByaW50ZXI6Ok9uVGVzdFBhcnRSZXN1bHQoCi0gICAgY29uc3QgVGVzdFBhcnRSZXN1
bHQmIHJlc3VsdCkgewotICAvLyBJZiB0aGUgdGVzdCBwYXJ0IHN1Y2NlZWRlZCwgd2UgZG9uJ3Qg
bmVlZCB0byBkbyBhbnl0aGluZy4KLSAgaWYgKHJlc3VsdC50eXBlKCkgPT0gVGVzdFBhcnRSZXN1
bHQ6OmtTdWNjZXNzKQotICAgIHJldHVybjsKLQotICAvLyBQcmludCBmYWlsdXJlIG1lc3NhZ2Ug
ZnJvbSB0aGUgYXNzZXJ0aW9uIChlLmcuIGV4cGVjdGVkIHRoaXMgYW5kIGdvdCB0aGF0KS4KLSAg
UHJpbnRUZXN0UGFydFJlc3VsdChyZXN1bHQpOwotICBmZmx1c2goc3Rkb3V0KTsKLX0KLQotdm9p
ZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdEVuZChjb25zdCBUZXN0SW5mbyYg
dGVzdF9pbmZvKSB7Ci0gIGlmICh0ZXN0X2luZm8ucmVzdWx0KCktPlBhc3NlZCgpKSB7Ci0gICAg
Q29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlsgICAgICAgT0sgXSAiKTsKLSAgfSBlbHNlIHsK
LSAgICBDb2xvcmVkUHJpbnRmKENPTE9SX1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKLSAgfQotICBQ
cmludFRlc3ROYW1lKHRlc3RfaW5mby50ZXN0X2Nhc2VfbmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgp
KTsKLSAgaWYgKHRlc3RfaW5mby5yZXN1bHQoKS0+RmFpbGVkKCkpCi0gICAgUHJpbnRGdWxsVGVz
dENvbW1lbnRJZlByZXNlbnQodGVzdF9pbmZvKTsKLQotICBpZiAoR1RFU1RfRkxBRyhwcmludF90
aW1lKSkgewotICAgIHByaW50ZigiICglcyBtcylcbiIsIGludGVybmFsOjpTdHJlYW1hYmxlVG9T
dHJpbmcoCi0gICAgICAgICAgIHRlc3RfaW5mby5yZXN1bHQoKS0+ZWxhcHNlZF90aW1lKCkpLmNf
c3RyKCkpOwotICB9IGVsc2UgewotICAgIHByaW50ZigiXG4iKTsKLSAgfQotICBmZmx1c2goc3Rk
b3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uVGVzdENhc2VF
bmQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgewotICBpZiAoIUdURVNUX0ZMQUcocHJpbnRf
dGltZSkpIHJldHVybjsKLQotICBjb25zdCBzdGQ6OnN0cmluZyBjb3VudHMgPQotICAgICAgRm9y
bWF0Q291bnRhYmxlTm91bih0ZXN0X2Nhc2UudGVzdF90b19ydW5fY291bnQoKSwgInRlc3QiLCAi
dGVzdHMiKTsKLSAgQ29sb3JlZFByaW50ZihDT0xPUl9HUkVFTiwgIlstLS0tLS0tLS0tXSAiKTsK
LSAgcHJpbnRmKCIlcyBmcm9tICVzICglcyBtcyB0b3RhbClcblxuIiwKLSAgICAgICAgIGNvdW50
cy5jX3N0cigpLCB0ZXN0X2Nhc2UubmFtZSgpLAotICAgICAgICAgaW50ZXJuYWw6OlN0cmVhbWFi
bGVUb1N0cmluZyh0ZXN0X2Nhc2UuZWxhcHNlZF90aW1lKCkpLmNfc3RyKCkpOwotICBmZmx1c2go
c3Rkb3V0KTsKLX0KLQotdm9pZCBQcmV0dHlVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok9uRW52aXJv
bm1lbnRzVGVhckRvd25TdGFydCgKLSAgICBjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykg
ewotICBDb2xvcmVkUHJpbnRmKENPTE9SX0dSRUVOLCAgIlstLS0tLS0tLS0tXSAiKTsKLSAgcHJp
bnRmKCJHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCB0ZWFyLWRvd25cbiIpOwotICBmZmx1c2goc3Rk
b3V0KTsKLX0KLQotLy8gSW50ZXJuYWwgaGVscGVyIGZvciBwcmludGluZyB0aGUgbGlzdCBvZiBm
YWlsZWQgdGVzdHMuCi12b2lkIFByZXR0eVVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6UHJpbnRGYWls
ZWRUZXN0cyhjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KSB7Ci0gIGNvbnN0IGludCBmYWlsZWRf
dGVzdF9jb3VudCA9IHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpOwotICBpZiAoZmFpbGVk
X3Rlc3RfY291bnQgPT0gMCkgewotICAgIHJldHVybjsKLSAgfQotCi0gIGZvciAoaW50IGkgPSAw
OyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyArK2kpIHsKLSAgICBjb25z
dCBUZXN0Q2FzZSYgdGVzdF9jYXNlID0gKnVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKTsKLSAgICBp
ZiAoIXRlc3RfY2FzZS5zaG91bGRfcnVuKCkgfHwgKHRlc3RfY2FzZS5mYWlsZWRfdGVzdF9jb3Vu
dCgpID09IDApKSB7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgZm9yIChpbnQgaiA9IDA7
IGogPCB0ZXN0X2Nhc2UudG90YWxfdGVzdF9jb3VudCgpOyArK2opIHsKLSAgICAgIGNvbnN0IFRl
c3RJbmZvJiB0ZXN0X2luZm8gPSAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGopOwotICAgICAgaWYg
KCF0ZXN0X2luZm8uc2hvdWxkX3J1bigpIHx8IHRlc3RfaW5mby5yZXN1bHQoKS0+UGFzc2VkKCkp
IHsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB9Ci0gICAgICBDb2xvcmVkUHJpbnRmKENPTE9S
X1JFRCwgIlsgIEZBSUxFRCAgXSAiKTsKLSAgICAgIHByaW50ZigiJXMuJXMiLCB0ZXN0X2Nhc2Uu
bmFtZSgpLCB0ZXN0X2luZm8ubmFtZSgpKTsKLSAgICAgIFByaW50RnVsbFRlc3RDb21tZW50SWZQ
cmVzZW50KHRlc3RfaW5mbyk7Ci0gICAgICBwcmludGYoIlxuIik7Ci0gICAgfQotICB9Ci19Ci0K
LXZvaWQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29u
c3QgVW5pdFRlc3QmIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgQ29sb3JlZFByaW50
ZihDT0xPUl9HUkVFTiwgICJbPT09PT09PT09PV0gIik7Ci0gIHByaW50ZigiJXMgZnJvbSAlcyBy
YW4uIiwKLSAgICAgICAgIEZvcm1hdFRlc3RDb3VudCh1bml0X3Rlc3QudGVzdF90b19ydW5fY291
bnQoKSkuY19zdHIoKSwKLSAgICAgICAgIEZvcm1hdFRlc3RDYXNlQ291bnQodW5pdF90ZXN0LnRl
c3RfY2FzZV90b19ydW5fY291bnQoKSkuY19zdHIoKSk7Ci0gIGlmIChHVEVTVF9GTEFHKHByaW50
X3RpbWUpKSB7Ci0gICAgcHJpbnRmKCIgKCVzIG1zIHRvdGFsKSIsCi0gICAgICAgICAgIGludGVy
bmFsOjpTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LmVsYXBzZWRfdGltZSgpKS5jX3N0cigp
KTsKLSAgfQotICBwcmludGYoIlxuIik7Ci0gIENvbG9yZWRQcmludGYoQ09MT1JfR1JFRU4sICAi
WyAgUEFTU0VEICBdICIpOwotICBwcmludGYoIiVzLlxuIiwgRm9ybWF0VGVzdENvdW50KHVuaXRf
dGVzdC5zdWNjZXNzZnVsX3Rlc3RfY291bnQoKSkuY19zdHIoKSk7Ci0KLSAgaW50IG51bV9mYWls
dXJlcyA9IHVuaXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpOwotICBpZiAoIXVuaXRfdGVzdC5Q
YXNzZWQoKSkgewotICAgIGNvbnN0IGludCBmYWlsZWRfdGVzdF9jb3VudCA9IHVuaXRfdGVzdC5m
YWlsZWRfdGVzdF9jb3VudCgpOwotICAgIENvbG9yZWRQcmludGYoQ09MT1JfUkVELCAgIlsgIEZB
SUxFRCAgXSAiKTsKLSAgICBwcmludGYoIiVzLCBsaXN0ZWQgYmVsb3c6XG4iLCBGb3JtYXRUZXN0
Q291bnQoZmFpbGVkX3Rlc3RfY291bnQpLmNfc3RyKCkpOwotICAgIFByaW50RmFpbGVkVGVzdHMo
dW5pdF90ZXN0KTsKLSAgICBwcmludGYoIlxuJTJkIEZBSUxFRCAlc1xuIiwgbnVtX2ZhaWx1cmVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2ZhaWx1cmVzID09IDEgPyAiVEVTVCIgOiAi
VEVTVFMiKTsKLSAgfQotCi0gIGludCBudW1fZGlzYWJsZWQgPSB1bml0X3Rlc3QucmVwb3J0YWJs
ZV9kaXNhYmxlZF90ZXN0X2NvdW50KCk7Ci0gIGlmIChudW1fZGlzYWJsZWQgJiYgIUdURVNUX0ZM
QUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKSB7Ci0gICAgaWYgKCFudW1fZmFpbHVyZXMpIHsK
LSAgICAgIHByaW50ZigiXG4iKTsgIC8vIEFkZCBhIHNwYWNlciBpZiBubyBGQUlMVVJFIGJhbm5l
ciBpcyBkaXNwbGF5ZWQuCi0gICAgfQotICAgIENvbG9yZWRQcmludGYoQ09MT1JfWUVMTE9XLAot
ICAgICAgICAgICAgICAgICAgIiAgWU9VIEhBVkUgJWQgRElTQUJMRUQgJXNcblxuIiwKLSAgICAg
ICAgICAgICAgICAgIG51bV9kaXNhYmxlZCwKLSAgICAgICAgICAgICAgICAgIG51bV9kaXNhYmxl
ZCA9PSAxID8gIlRFU1QiIDogIlRFU1RTIik7Ci0gIH0KLSAgLy8gRW5zdXJlIHRoYXQgR29vZ2xl
IFRlc3Qgb3V0cHV0IGlzIHByaW50ZWQgYmVmb3JlLCBlLmcuLCBoZWFwY2hlY2tlciBvdXRwdXQu
Ci0gIGZmbHVzaChzdGRvdXQpOwotfQotCi0vLyBFbmQgUHJldHR5VW5pdFRlc3RSZXN1bHRQcmlu
dGVyCi0KLS8vIGNsYXNzIFRlc3RFdmVudFJlcGVhdGVyCi0vLwotLy8gVGhpcyBjbGFzcyBmb3J3
YXJkcyBldmVudHMgdG8gb3RoZXIgZXZlbnQgbGlzdGVuZXJzLgotY2xhc3MgVGVzdEV2ZW50UmVw
ZWF0ZXIgOiBwdWJsaWMgVGVzdEV2ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgVGVzdEV2ZW50
UmVwZWF0ZXIoKSA6IGZvcndhcmRpbmdfZW5hYmxlZF8odHJ1ZSkge30KLSAgdmlydHVhbCB+VGVz
dEV2ZW50UmVwZWF0ZXIoKTsKLSAgdm9pZCBBcHBlbmQoVGVzdEV2ZW50TGlzdGVuZXIgKmxpc3Rl
bmVyKTsKLSAgVGVzdEV2ZW50TGlzdGVuZXIqIFJlbGVhc2UoVGVzdEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyKTsKLQotICAvLyBDb250cm9scyB3aGV0aGVyIGV2ZW50cyB3aWxsIGJlIGZvcndhcmRl
ZCB0byBsaXN0ZW5lcnNfLiBTZXQgdG8gZmFsc2UKLSAgLy8gaW4gZGVhdGggdGVzdCBjaGlsZCBw
cm9jZXNzZXMuCi0gIGJvb2wgZm9yd2FyZGluZ19lbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZm9y
d2FyZGluZ19lbmFibGVkXzsgfQotICB2b2lkIHNldF9mb3J3YXJkaW5nX2VuYWJsZWQoYm9vbCBl
bmFibGUpIHsgZm9yd2FyZGluZ19lbmFibGVkXyA9IGVuYWJsZTsgfQotCi0gIHZpcnR1YWwgdm9p
ZCBPblRlc3RQcm9ncmFtU3RhcnQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0gIHZpcnR1
YWwgdm9pZCBPblRlc3RJdGVyYXRpb25TdGFydChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBp
bnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChj
b25zdCBVbml0VGVzdCYgdW5pdF90ZXN0KTsKLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRz
U2V0VXBFbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0gIHZpcnR1YWwgdm9pZCBPblRl
c3RDYXNlU3RhcnQoY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSk7Ci0gIHZpcnR1YWwgdm9pZCBP
blRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKLSAgdmlydHVhbCB2b2lkIE9u
VGVzdFBhcnRSZXN1bHQoY29uc3QgVGVzdFBhcnRSZXN1bHQmIHJlc3VsdCk7Ci0gIHZpcnR1YWwg
dm9pZCBPblRlc3RFbmQoY29uc3QgVGVzdEluZm8mIHRlc3RfaW5mbyk7Ci0gIHZpcnR1YWwgdm9p
ZCBPblRlc3RDYXNlRW5kKGNvbnN0IFRlc3RDYXNlJiB0ZXN0X2Nhc2UpOwotICB2aXJ0dWFsIHZv
aWQgT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0X3Rlc3Qp
OwotICB2aXJ0dWFsIHZvaWQgT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZChjb25zdCBVbml0VGVz
dCYgdW5pdF90ZXN0KTsKLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvbkVuZChjb25zdCBV
bml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKLSAgdmlydHVhbCB2b2lkIE9uVGVz
dFByb2dyYW1FbmQoY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0KLSBwcml2YXRlOgotICAv
LyBDb250cm9scyB3aGV0aGVyIGV2ZW50cyB3aWxsIGJlIGZvcndhcmRlZCB0byBsaXN0ZW5lcnNf
LiBTZXQgdG8gZmFsc2UKLSAgLy8gaW4gZGVhdGggdGVzdCBjaGlsZCBwcm9jZXNzZXMuCi0gIGJv
b2wgZm9yd2FyZGluZ19lbmFibGVkXzsKLSAgLy8gVGhlIGxpc3Qgb2YgbGlzdGVuZXJzIHRoYXQg
cmVjZWl2ZSBldmVudHMuCi0gIHN0ZDo6dmVjdG9yPFRlc3RFdmVudExpc3RlbmVyKj4gbGlzdGVu
ZXJzXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFRlc3RFdmVudFJlcGVh
dGVyKTsKLX07Ci0KLVRlc3RFdmVudFJlcGVhdGVyOjp+VGVzdEV2ZW50UmVwZWF0ZXIoKSB7Ci0g
IEZvckVhY2gobGlzdGVuZXJzXywgRGVsZXRlPFRlc3RFdmVudExpc3RlbmVyPik7Ci19Ci0KLXZv
aWQgVGVzdEV2ZW50UmVwZWF0ZXI6OkFwcGVuZChUZXN0RXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIp
IHsKLSAgbGlzdGVuZXJzXy5wdXNoX2JhY2sobGlzdGVuZXIpOwotfQotCi0vLyBUT0RPKHZsYWRs
QGdvb2dsZS5jb20pOiBGYWN0b3IgdGhlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IGludG8gVmVjdG9y
OjpGaW5kLgotVGVzdEV2ZW50TGlzdGVuZXIqIFRlc3RFdmVudFJlcGVhdGVyOjpSZWxlYXNlKFRl
c3RFdmVudExpc3RlbmVyICpsaXN0ZW5lcikgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RlbmVyc18uc2l6ZSgpOyArK2kpIHsKLSAgICBpZiAobGlzdGVuZXJzX1tpXSA9PSBsaXN0ZW5l
cikgewotICAgICAgbGlzdGVuZXJzXy5lcmFzZShsaXN0ZW5lcnNfLmJlZ2luKCkgKyBpKTsKLSAg
ICAgIHJldHVybiBsaXN0ZW5lcjsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gTlVMTDsKLX0KLQot
Ly8gU2luY2UgbW9zdCBtZXRob2RzIGFyZSB2ZXJ5IHNpbWlsYXIsIHVzZSBtYWNyb3MgdG8gcmVk
dWNlIGJvaWxlcnBsYXRlLgotLy8gVGhpcyBkZWZpbmVzIGEgbWVtYmVyIHRoYXQgZm9yd2FyZHMg
dGhlIGNhbGwgdG8gYWxsIGxpc3RlbmVycy4KLSNkZWZpbmUgR1RFU1RfUkVQRUFURVJfTUVUSE9E
XyhOYW1lLCBUeXBlKSBcCi12b2lkIFRlc3RFdmVudFJlcGVhdGVyOjpOYW1lKGNvbnN0IFR5cGUm
IHBhcmFtZXRlcikgeyBcCi0gIGlmIChmb3J3YXJkaW5nX2VuYWJsZWRfKSB7IFwKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3RlbmVyc18uc2l6ZSgpOyBpKyspIHsgXAotICAgICAgbGlz
dGVuZXJzX1tpXS0+TmFtZShwYXJhbWV0ZXIpOyBcCi0gICAgfSBcCi0gIH0gXAotfQotLy8gVGhp
cyBkZWZpbmVzIGEgbWVtYmVyIHRoYXQgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYWxsIGxpc3RlbmVy
cyBpbiByZXZlcnNlCi0vLyBvcmRlci4KLSNkZWZpbmUgR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9N
RVRIT0RfKE5hbWUsIFR5cGUpIFwKLXZvaWQgVGVzdEV2ZW50UmVwZWF0ZXI6Ok5hbWUoY29uc3Qg
VHlwZSYgcGFyYW1ldGVyKSB7IFwKLSAgaWYgKGZvcndhcmRpbmdfZW5hYmxlZF8pIHsgXAotICAg
IGZvciAoaW50IGkgPSBzdGF0aWNfY2FzdDxpbnQ+KGxpc3RlbmVyc18uc2l6ZSgpKSAtIDE7IGkg
Pj0gMDsgaS0tKSB7IFwKLSAgICAgIGxpc3RlbmVyc19baV0tPk5hbWUocGFyYW1ldGVyKTsgXAot
ICAgIH0gXAotICB9IFwKLX0KLQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPblRlc3RQcm9ncmFt
U3RhcnQsIFVuaXRUZXN0KQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPbkVudmlyb25tZW50c1Nl
dFVwU3RhcnQsIFVuaXRUZXN0KQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPblRlc3RDYXNlU3Rh
cnQsIFRlc3RDYXNlKQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPblRlc3RTdGFydCwgVGVzdElu
Zm8pCi1HVEVTVF9SRVBFQVRFUl9NRVRIT0RfKE9uVGVzdFBhcnRSZXN1bHQsIFRlc3RQYXJ0UmVz
dWx0KQotR1RFU1RfUkVQRUFURVJfTUVUSE9EXyhPbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQs
IFVuaXRUZXN0KQotR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9NRVRIT0RfKE9uRW52aXJvbm1lbnRz
U2V0VXBFbmQsIFVuaXRUZXN0KQotR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9NRVRIT0RfKE9uRW52
aXJvbm1lbnRzVGVhckRvd25FbmQsIFVuaXRUZXN0KQotR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9N
RVRIT0RfKE9uVGVzdEVuZCwgVGVzdEluZm8pCi1HVEVTVF9SRVZFUlNFX1JFUEVBVEVSX01FVEhP
RF8oT25UZXN0Q2FzZUVuZCwgVGVzdENhc2UpCi1HVEVTVF9SRVZFUlNFX1JFUEVBVEVSX01FVEhP
RF8oT25UZXN0UHJvZ3JhbUVuZCwgVW5pdFRlc3QpCi0KLSN1bmRlZiBHVEVTVF9SRVBFQVRFUl9N
RVRIT0RfCi0jdW5kZWYgR1RFU1RfUkVWRVJTRV9SRVBFQVRFUl9NRVRIT0RfCi0KLXZvaWQgVGVz
dEV2ZW50UmVwZWF0ZXI6Ok9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiB1bml0
X3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aXRlcmF0aW9uKSB7Ci0gIGlmIChmb3J3YXJkaW5nX2VuYWJsZWRfKSB7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsaXN0ZW5lcnNfLnNpemUoKTsgaSsrKSB7Ci0gICAgICBsaXN0ZW5lcnNf
W2ldLT5PblRlc3RJdGVyYXRpb25TdGFydCh1bml0X3Rlc3QsIGl0ZXJhdGlvbik7Ci0gICAgfQot
ICB9Ci19Ci0KLXZvaWQgVGVzdEV2ZW50UmVwZWF0ZXI6Ok9uVGVzdEl0ZXJhdGlvbkVuZChjb25z
dCBVbml0VGVzdCYgdW5pdF90ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpdGVyYXRpb24pIHsKLSAgaWYgKGZvcndhcmRpbmdfZW5hYmxlZF8pIHsK
LSAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihsaXN0ZW5lcnNfLnNpemUoKSkgLSAx
OyBpID49IDA7IGktLSkgewotICAgICAgbGlzdGVuZXJzX1tpXS0+T25UZXN0SXRlcmF0aW9uRW5k
KHVuaXRfdGVzdCwgaXRlcmF0aW9uKTsKLSAgICB9Ci0gIH0KLX0KLQotLy8gRW5kIFRlc3RFdmVu
dFJlcGVhdGVyCi0KLS8vIFRoaXMgY2xhc3MgZ2VuZXJhdGVzIGFuIFhNTCBvdXRwdXQgZmlsZS4K
LWNsYXNzIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlciA6IHB1YmxpYyBFbXB0eVRlc3RFdmVudExp
c3RlbmVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcihj
b25zdCBjaGFyKiBvdXRwdXRfZmlsZSk7Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlv
bkVuZChjb25zdCBVbml0VGVzdCYgdW5pdF90ZXN0LCBpbnQgaXRlcmF0aW9uKTsKLQotIHByaXZh
dGU6Ci0gIC8vIElzIGMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciB0aGF0IGlzIG5vcm1hbGl6ZWQg
dG8gYSBzcGFjZSBjaGFyYWN0ZXIKLSAgLy8gd2hlbiBpdCBhcHBlYXJzIGluIGFuIFhNTCBhdHRy
aWJ1dGUgdmFsdWU/Ci0gIHN0YXRpYyBib29sIElzTm9ybWFsaXphYmxlV2hpdGVzcGFjZShjaGFy
IGMpIHsKLSAgICByZXR1cm4gYyA9PSAweDkgfHwgYyA9PSAweEEgfHwgYyA9PSAweEQ7Ci0gIH0K
LQotICAvLyBNYXkgYyBhcHBlYXIgaW4gYSB3ZWxsLWZvcm1lZCBYTUwgZG9jdW1lbnQ/Ci0gIHN0
YXRpYyBib29sIElzVmFsaWRYbWxDaGFyYWN0ZXIoY2hhciBjKSB7Ci0gICAgcmV0dXJuIElzTm9y
bWFsaXphYmxlV2hpdGVzcGFjZShjKSB8fCBjID49IDB4MjA7Ci0gIH0KLQotICAvLyBSZXR1cm5z
IGFuIFhNTC1lc2NhcGVkIGNvcHkgb2YgdGhlIGlucHV0IHN0cmluZyBzdHIuICBJZgotICAvLyBp
c19hdHRyaWJ1dGUgaXMgdHJ1ZSwgdGhlIHRleHQgaXMgbWVhbnQgdG8gYXBwZWFyIGFzIGFuIGF0
dHJpYnV0ZQotICAvLyB2YWx1ZSwgYW5kIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNlIGlzIHByZXNl
cnZlZCBieSByZXBsYWNpbmcgaXQKLSAgLy8gd2l0aCBjaGFyYWN0ZXIgcmVmZXJlbmNlcy4KLSAg
c3RhdGljIHN0ZDo6c3RyaW5nIEVzY2FwZVhtbChjb25zdCBzdGQ6OnN0cmluZyYgc3RyLCBib29s
IGlzX2F0dHJpYnV0ZSk7Ci0KLSAgLy8gUmV0dXJucyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGggYWxs
IGNoYXJhY3RlcnMgaW52YWxpZCBpbiBYTUwgcmVtb3ZlZC4KLSAgc3RhdGljIHN0ZDo6c3RyaW5n
IFJlbW92ZUludmFsaWRYbWxDaGFyYWN0ZXJzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpOwotCi0g
IC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVuIHN0ciBpcyBhbiBh
dHRyaWJ1dGUgdmFsdWUuCi0gIHN0YXRpYyBzdGQ6OnN0cmluZyBFc2NhcGVYbWxBdHRyaWJ1dGUo
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cikgewotICAgIHJldHVybiBFc2NhcGVYbWwoc3RyLCB0cnVl
KTsKLSAgfQotCi0gIC8vIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEVzY2FwZVhtbCB3aGVu
IHN0ciBpcyBub3QgYW4gYXR0cmlidXRlIHZhbHVlLgotICBzdGF0aWMgc3RkOjpzdHJpbmcgRXNj
YXBlWG1sVGV4dChjb25zdCBjaGFyKiBzdHIpIHsKLSAgICByZXR1cm4gRXNjYXBlWG1sKHN0ciwg
ZmFsc2UpOwotICB9Ci0KLSAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgZ2l2ZW4gYXR0cmlidXRlIGJl
bG9uZ3MgdG8gdGhlIGdpdmVuIGVsZW1lbnQgYW5kCi0gIC8vIHN0cmVhbXMgdGhlIGF0dHJpYnV0
ZSBhcyBYTUwuCi0gIHN0YXRpYyB2b2lkIE91dHB1dFhtbEF0dHJpYnV0ZShzdGQ6Om9zdHJlYW0q
IHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBlbGVtZW50X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSk7Ci0KLSAgLy8gU3RyZWFtcyBhbiBYTUwgQ0RBVEEgc2Vj
dGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgotICBzdGF0
aWMgdm9pZCBPdXRwdXRYbWxDRGF0YVNlY3Rpb24oOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwgY29u
c3QgY2hhciogZGF0YSk7Ci0KLSAgLy8gU3RyZWFtcyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2Yg
YSBUZXN0SW5mbyBvYmplY3QuCi0gIHN0YXRpYyB2b2lkIE91dHB1dFhtbFRlc3RJbmZvKDo6c3Rk
Ojpvc3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKTsKLQotICAvLyBQcmludHMgYW4gWE1MIHJlcHJlc2Vu
dGF0aW9uIG9mIGEgVGVzdENhc2Ugb2JqZWN0Ci0gIHN0YXRpYyB2b2lkIFByaW50WG1sVGVzdENh
c2UoOjpzdGQ6Om9zdHJlYW0qIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUZXN0Q2FzZSYgdGVzdF9jYXNlKTsKLQotICAvLyBQcmludHMgYW4gWE1MIHN1bW1h
cnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0LgotICBzdGF0aWMgdm9pZCBQcmlu
dFhtbFVuaXRUZXN0KDo6c3RkOjpvc3RyZWFtKiBzdHJlYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVW5pdFRlc3QmIHVuaXRfdGVzdCk7Ci0KLSAgLy8gUHJvZHVjZXMg
YSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMg
c3BhY2UKLSAgLy8gZGVsaW1pdGVkIFhNTCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRoZSBwcm9wZXJ0
eSBrZXk9InZhbHVlIiBwYWlycy4KLSAgLy8gV2hlbiB0aGUgc3RkOjpzdHJpbmcgaXMgbm90IGVt
cHR5LCBpdCBpbmNsdWRlcyBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcsCi0gIC8vIHRvIGRlbGlt
aXQgdGhpcyBhdHRyaWJ1dGUgZnJvbSBwcmlvciBhdHRyaWJ1dGVzLgotICBzdGF0aWMgc3RkOjpz
dHJpbmcgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMoY29uc3QgVGVzdFJlc3VsdCYgcmVz
dWx0KTsKLQotICAvLyBUaGUgb3V0cHV0IGZpbGUuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIG91dHB1
dF9maWxlXzsKLQotICBHVEVTVF9ESVNBTExPV19DT1BZX0FORF9BU1NJR05fKFhtbFVuaXRUZXN0
UmVzdWx0UHJpbnRlcik7Ci19OwotCi0vLyBDcmVhdGVzIGEgbmV3IFhtbFVuaXRUZXN0UmVzdWx0
UHJpbnRlci4KLVhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6WG1sVW5pdFRlc3RSZXN1bHRQcmlu
dGVyKGNvbnN0IGNoYXIqIG91dHB1dF9maWxlKQotICAgIDogb3V0cHV0X2ZpbGVfKG91dHB1dF9m
aWxlKSB7Ci0gIGlmIChvdXRwdXRfZmlsZV8uY19zdHIoKSA9PSBOVUxMIHx8IG91dHB1dF9maWxl
Xy5lbXB0eSgpKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJYTUwgb3V0cHV0IGZpbGUgbWF5IG5v
dCBiZSBudWxsXG4iKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBleGl0KEVYSVRfRkFJTFVS
RSk7Ci0gIH0KLX0KLQotLy8gQ2FsbGVkIGFmdGVyIHRoZSB1bml0IHRlc3QgZW5kcy4KLXZvaWQg
WG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPblRlc3RJdGVyYXRpb25FbmQoY29uc3QgVW5pdFRl
c3QmIHVuaXRfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgRklMRSogeG1sb3V0ID0gTlVMTDsKLSAg
RmlsZVBhdGggb3V0cHV0X2ZpbGUob3V0cHV0X2ZpbGVfKTsKLSAgRmlsZVBhdGggb3V0cHV0X2Rp
cihvdXRwdXRfZmlsZS5SZW1vdmVGaWxlTmFtZSgpKTsKLQotICBpZiAob3V0cHV0X2Rpci5DcmVh
dGVEaXJlY3Rvcmllc1JlY3Vyc2l2ZWx5KCkpIHsKLSAgICB4bWxvdXQgPSBwb3NpeDo6Rk9wZW4o
b3V0cHV0X2ZpbGVfLmNfc3RyKCksICJ3Iik7Ci0gIH0KLSAgaWYgKHhtbG91dCA9PSBOVUxMKSB7
Ci0gICAgLy8gVE9ETyh3YW4pOiByZXBvcnQgdGhlIHJlYXNvbiBvZiB0aGUgZmFpbHVyZS4KLSAg
ICAvLwotICAgIC8vIFdlIGRvbid0IGRvIGl0IGZvciBub3cgYXM6Ci0gICAgLy8KLSAgICAvLyAg
IDEuIFRoZXJlIGlzIG5vIHVyZ2VudCBuZWVkIGZvciBpdC4KLSAgICAvLyAgIDIuIEl0J3MgYSBi
aXQgaW52b2x2ZWQgdG8gbWFrZSB0aGUgZXJybm8gdmFyaWFibGUgdGhyZWFkLXNhZmUgb24KLSAg
ICAvLyAgICAgIGFsbCB0aHJlZSBvcGVyYXRpbmcgc3lzdGVtcyAoTGludXgsIFdpbmRvd3MsIGFu
ZCBNYWMgT1MpLgotICAgIC8vICAgMy4gVG8gaW50ZXJwcmV0IHRoZSBtZWFuaW5nIG9mIGVycm5v
IGluIGEgdGhyZWFkLXNhZmUgd2F5LAotICAgIC8vICAgICAgd2UgbmVlZCB0aGUgc3RyZXJyb3Jf
cigpIGZ1bmN0aW9uLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uCi0gICAgLy8gICAgICBXaW5k
b3dzLgotICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgIlVuYWJsZSB0byBvcGVuIGZp
bGUgXCIlc1wiXG4iLAotICAgICAgICAgICAgb3V0cHV0X2ZpbGVfLmNfc3RyKCkpOwotICAgIGZm
bHVzaChzdGRlcnIpOwotICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgfQotICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzdHJlYW07Ci0gIFByaW50WG1sVW5pdFRlc3QoJnN0cmVhbSwgdW5pdF90ZXN0KTsK
LSAgZnByaW50Zih4bWxvdXQsICIlcyIsIFN0cmluZ1N0cmVhbVRvU3RyaW5nKCZzdHJlYW0pLmNf
c3RyKCkpOwotICBmY2xvc2UoeG1sb3V0KTsKLX0KLQotLy8gUmV0dXJucyBhbiBYTUwtZXNjYXBl
ZCBjb3B5IG9mIHRoZSBpbnB1dCBzdHJpbmcgc3RyLiAgSWYgaXNfYXR0cmlidXRlCi0vLyBpcyB0
cnVlLCB0aGUgdGV4dCBpcyBtZWFudCB0byBhcHBlYXIgYXMgYW4gYXR0cmlidXRlIHZhbHVlLCBh
bmQKLS8vIG5vcm1hbGl6YWJsZSB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZCBieSByZXBsYWNpbmcg
aXQgd2l0aCBjaGFyYWN0ZXIKLS8vIHJlZmVyZW5jZXMuCi0vLwotLy8gSW52YWxpZCBYTUwgY2hh
cmFjdGVycyBpbiBzdHIsIGlmIGFueSwgYXJlIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KLS8v
IEl0IGlzIGV4cGVjdGVkIHRoYXQgbW9zdCwgaWYgbm90IGFsbCwgb2YgdGhlIHRleHQgcHJvY2Vz
c2VkIGJ5IHRoaXMKLS8vIG1vZHVsZSB3aWxsIGNvbnNpc3Qgb2Ygb3JkaW5hcnkgRW5nbGlzaCB0
ZXh0LgotLy8gSWYgdGhpcyBtb2R1bGUgaXMgZXZlciBtb2RpZmllZCB0byBwcm9kdWNlIHZlcnNp
b24gMS4xIFhNTCBvdXRwdXQsCi0vLyBtb3N0IGludmFsaWQgY2hhcmFjdGVycyBjYW4gYmUgcmV0
YWluZWQgdXNpbmcgY2hhcmFjdGVyIHJlZmVyZW5jZXMuCi0vLyBUT0RPKHdhbik6IEl0IG1pZ2h0
IGJlIG5pY2UgdG8gaGF2ZSBhIG1pbmltYWxseSBpbnZhc2l2ZSwgaHVtYW4tcmVhZGFibGUKLS8v
IGVzY2FwaW5nIHNjaGVtZSBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBkcm9w
cGluZyB0aGVtLgotc3RkOjpzdHJpbmcgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpFc2NhcGVY
bWwoCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0ciwgYm9vbCBpc19hdHRyaWJ1dGUpIHsKLSAg
TWVzc2FnZSBtOwotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7
Ci0gICAgY29uc3QgY2hhciBjaCA9IHN0cltpXTsKLSAgICBzd2l0Y2ggKGNoKSB7Ci0gICAgICBj
YXNlICc8JzoKLSAgICAgICAgbSA8PCAiJmx0OyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSAnPic6Ci0gICAgICAgIG0gPDwgIiZndDsiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
JyYnOgotICAgICAgICBtIDw8ICImYW1wOyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAn
XCcnOgotICAgICAgICBpZiAoaXNfYXR0cmlidXRlKQotICAgICAgICAgIG0gPDwgIiZhcG9zOyI7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBtIDw8ICdcJyc7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSAnIic6Ci0gICAgICAgIGlmIChpc19hdHRyaWJ1dGUpCi0gICAgICAgICAgbSA8PCAi
JnF1b3Q7IjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG0gPDwgJyInOwotICAgICAgICBicmVh
azsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlmIChJc1ZhbGlkWG1sQ2hhcmFjdGVyKGNoKSkg
ewotICAgICAgICAgIGlmIChpc19hdHRyaWJ1dGUgJiYgSXNOb3JtYWxpemFibGVXaGl0ZXNwYWNl
KGNoKSkKLSAgICAgICAgICAgIG0gPDwgIiYjeCIgPDwgU3RyaW5nOjpGb3JtYXRCeXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkKLSAgICAgICAgICAgICAgPDwgIjsiOwotICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG0gPDwgY2g7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIG0uR2V0U3RyaW5nKCk7Ci19Ci0KLS8vIFJldHVybnMg
dGhlIGdpdmVuIHN0cmluZyB3aXRoIGFsbCBjaGFyYWN0ZXJzIGludmFsaWQgaW4gWE1MIHJlbW92
ZWQuCi0vLyBDdXJyZW50bHkgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBkcm9wcGVkIGZyb20gdGhl
IHN0cmluZy4gQW4KLS8vIGFsdGVybmF0aXZlIGlzIHRvIHJlcGxhY2UgdGhlbSB3aXRoIGNlcnRh
aW4gY2hhcmFjdGVycyBzdWNoIGFzIC4gb3IgPy4KLXN0ZDo6c3RyaW5nIFhtbFVuaXRUZXN0UmVz
dWx0UHJpbnRlcjo6UmVtb3ZlSW52YWxpZFhtbENoYXJhY3RlcnMoCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHN0cikgewotICBzdGQ6OnN0cmluZyBvdXRwdXQ7Ci0gIG91dHB1dC5yZXNlcnZlKHN0
ci5zaXplKCkpOwotICBmb3IgKHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0ci5i
ZWdpbigpOyBpdCAhPSBzdHIuZW5kKCk7ICsraXQpCi0gICAgaWYgKElzVmFsaWRYbWxDaGFyYWN0
ZXIoKml0KSkKLSAgICAgIG91dHB1dC5wdXNoX2JhY2soKml0KTsKLQotICByZXR1cm4gb3V0cHV0
OwotfQotCi0vLyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGdlbmVyYXRlIGFuIFhNTCByZXByZXNl
bnRhdGlvbiBvZiBhIFVuaXRUZXN0Ci0vLyBvYmplY3QuCi0vLwotLy8gVGhpcyBpcyBob3cgR29v
Z2xlIFRlc3QgY29uY2VwdHMgbWFwIHRvIHRoZSBEVEQ6Ci0vLwotLy8gPHRlc3RzdWl0ZXMgbmFt
ZT0iQWxsVGVzdHMiPiAgICAgICAgPC0tIGNvcnJlc3BvbmRzIHRvIGEgVW5pdFRlc3Qgb2JqZWN0
Ci0vLyAgIDx0ZXN0c3VpdGUgbmFtZT0idGVzdGNhc2UtbmFtZSI+ICA8LS0gY29ycmVzcG9uZHMg
dG8gYSBUZXN0Q2FzZSBvYmplY3QKLS8vICAgICA8dGVzdGNhc2UgbmFtZT0idGVzdC1uYW1lIj4g
ICAgIDwtLSBjb3JyZXNwb25kcyB0byBhIFRlc3RJbmZvIG9iamVjdAotLy8gICAgICAgPGZhaWx1
cmUgbWVzc2FnZT0iLi4uIj4uLi48L2ZhaWx1cmU+Ci0vLyAgICAgICA8ZmFpbHVyZSBtZXNzYWdl
PSIuLi4iPi4uLjwvZmFpbHVyZT4KLS8vICAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Ii4uLiI+Li4u
PC9mYWlsdXJlPgotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tIGlu
ZGl2aWR1YWwgYXNzZXJ0aW9uIGZhaWx1cmVzCi0vLyAgICAgPC90ZXN0Y2FzZT4KLS8vICAgPC90
ZXN0c3VpdGU+Ci0vLyA8L3Rlc3RzdWl0ZXM+Ci0KLS8vIEZvcm1hdHMgdGhlIGdpdmVuIHRpbWUg
aW4gbWlsbGlzZWNvbmRzIGFzIHNlY29uZHMuCi1zdGQ6OnN0cmluZyBGb3JtYXRUaW1lSW5NaWxs
aXNBc1NlY29uZHMoVGltZUluTWlsbGlzIG1zKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7
Ci0gIHNzIDw8IChzdGF0aWNfY2FzdDxkb3VibGU+KG1zKSAqIDFlLTMpOwotICByZXR1cm4gc3Mu
c3RyKCk7Ci19Ci0KLXN0YXRpYyBib29sIFBvcnRhYmxlTG9jYWx0aW1lKHRpbWVfdCBzZWNvbmRz
LCBzdHJ1Y3QgdG0qIG91dCkgewotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gIHJldHVybiBsb2Nh
bHRpbWVfcyhvdXQsICZzZWNvbmRzKSA9PSAwOwotI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykg
fHwgZGVmaW5lZChfX01JTkdXNjRfXykKLSAgLy8gTUlOR1cgPHRpbWUuaD4gcHJvdmlkZXMgbmVp
dGhlciBsb2NhbHRpbWVfciBub3IgbG9jYWx0aW1lX3MsIGJ1dCB1c2VzCi0gIC8vIFdpbmRvd3Mn
IGxvY2FsdGltZSgpLCB3aGljaCBoYXMgYSB0aHJlYWQtbG9jYWwgdG0gYnVmZmVyLgotICBzdHJ1
Y3QgdG0qIHRtX3B0ciA9IGxvY2FsdGltZSgmc2Vjb25kcyk7ICAvLyBOT0xJTlQKLSAgaWYgKHRt
X3B0ciA9PSBOVUxMKQotICAgIHJldHVybiBmYWxzZTsKLSAgKm91dCA9ICp0bV9wdHI7Ci0gIHJl
dHVybiB0cnVlOwotI2Vsc2UKLSAgcmV0dXJuIGxvY2FsdGltZV9yKCZzZWNvbmRzLCBvdXQpICE9
IE5VTEw7Ci0jZW5kaWYKLX0KLQotLy8gQ29udmVydHMgdGhlIGdpdmVuIGVwb2NoIHRpbWUgaW4g
bWlsbGlzZWNvbmRzIHRvIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIElTTwotLy8gODYwMSBmb3JtYXQs
IHdpdGhvdXQgdGhlIHRpbWV6b25lIGluZm9ybWF0aW9uLgotc3RkOjpzdHJpbmcgRm9ybWF0RXBv
Y2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoVGltZUluTWlsbGlzIG1zKSB7Ci0gIHN0cnVjdCB0bSB0
aW1lX3N0cnVjdDsKLSAgaWYgKCFQb3J0YWJsZUxvY2FsdGltZShzdGF0aWNfY2FzdDx0aW1lX3Q+
KG1zIC8gMTAwMCksICZ0aW1lX3N0cnVjdCkpCi0gICAgcmV0dXJuICIiOwotICAvLyBZWVlZLU1N
LUREVGhoOm1tOnNzCi0gIHJldHVybiBTdHJlYW1hYmxlVG9TdHJpbmcodGltZV9zdHJ1Y3QudG1f
eWVhciArIDE5MDApICsgIi0iICsKLSAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgyKHRpbWVf
c3RydWN0LnRtX21vbiArIDEpICsgIi0iICsKLSAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lkdGgy
KHRpbWVfc3RydWN0LnRtX21kYXkpICsgIlQiICsKLSAgICAgIFN0cmluZzo6Rm9ybWF0SW50V2lk
dGgyKHRpbWVfc3RydWN0LnRtX2hvdXIpICsgIjoiICsKLSAgICAgIFN0cmluZzo6Rm9ybWF0SW50
V2lkdGgyKHRpbWVfc3RydWN0LnRtX21pbikgKyAiOiIgKwotICAgICAgU3RyaW5nOjpGb3JtYXRJ
bnRXaWR0aDIodGltZV9zdHJ1Y3QudG1fc2VjKTsKLX0KLQotLy8gU3RyZWFtcyBhbiBYTUwgQ0RB
VEEgc2VjdGlvbiwgZXNjYXBpbmcgaW52YWxpZCBDREFUQSBzZXF1ZW5jZXMgYXMgbmVlZGVkLgot
dm9pZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6Ok91dHB1dFhtbENEYXRhU2VjdGlvbig6OnN0
ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBkYXRhKSB7Ci0gIGNvbnN0IGNoYXIqIHNlZ21l
bnQgPSBkYXRhOwotICAqc3RyZWFtIDw8ICI8IVtDREFUQVsiOwotICBmb3IgKDs7KSB7Ci0gICAg
Y29uc3QgY2hhciogY29uc3QgbmV4dF9zZWdtZW50ID0gc3Ryc3RyKHNlZ21lbnQsICJdXT4iKTsK
LSAgICBpZiAobmV4dF9zZWdtZW50ICE9IE5VTEwpIHsKLSAgICAgIHN0cmVhbS0+d3JpdGUoCi0g
ICAgICAgICAgc2VnbWVudCwgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPihuZXh0X3NlZ21l
bnQgLSBzZWdtZW50KSk7Ci0gICAgICAqc3RyZWFtIDw8ICJdXT5dXSZndDs8IVtDREFUQVsiOwot
ICAgICAgc2VnbWVudCA9IG5leHRfc2VnbWVudCArIHN0cmxlbigiXV0+Iik7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICpzdHJlYW0gPDwgc2VnbWVudDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQot
ICAqc3RyZWFtIDw8ICJdXT4iOwotfQotCi12b2lkIFhtbFVuaXRUZXN0UmVzdWx0UHJpbnRlcjo6
T3V0cHV0WG1sQXR0cmlidXRlKAotICAgIHN0ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBlbGVtZW50X25hbWUsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUs
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgYWxsb3dlZF9uYW1lcyA9Ci0gICAgICBHZXRSZXNlcnZlZEF0dHJpYnV0ZXNG
b3JFbGVtZW50KGVsZW1lbnRfbmFtZSk7Ci0KLSAgR1RFU1RfQ0hFQ0tfKHN0ZDo6ZmluZChhbGxv
d2VkX25hbWVzLmJlZ2luKCksIGFsbG93ZWRfbmFtZXMuZW5kKCksIG5hbWUpICE9Ci0gICAgICAg
ICAgICAgICAgICAgYWxsb3dlZF9uYW1lcy5lbmQoKSkKLSAgICAgIDw8ICJBdHRyaWJ1dGUgIiA8
PCBuYW1lIDw8ICIgaXMgbm90IGFsbG93ZWQgZm9yIGVsZW1lbnQgPCIgPDwgZWxlbWVudF9uYW1l
Ci0gICAgICA8PCAiPi4iOwotCi0gICpzdHJlYW0gPDwgIiAiIDw8IG5hbWUgPDwgIj1cIiIgPDwg
RXNjYXBlWG1sQXR0cmlidXRlKHZhbHVlKSA8PCAiXCIiOwotfQotCi0vLyBQcmludHMgYW4gWE1M
IHJlcHJlc2VudGF0aW9uIG9mIGEgVGVzdEluZm8gb2JqZWN0LgotLy8gVE9ETyh3YW4pOiBUaGVy
ZSBpcyBhbHNvIHZhbHVlIGluIHByaW50aW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgcGxhaW4gcHJp
bnRlci4KLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpPdXRwdXRYbWxUZXN0SW5mbyg6
OnN0ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRlc3RfY2FzZV9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RJbmZvJiB0ZXN0
X2luZm8pIHsKLSAgY29uc3QgVGVzdFJlc3VsdCYgcmVzdWx0ID0gKnRlc3RfaW5mby5yZXN1bHQo
KTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcga1Rlc3RjYXNlID0gInRlc3RjYXNlIjsKLQotICAqc3Ry
ZWFtIDw8ICIgICAgPHRlc3RjYXNlIjsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rl
c3RjYXNlLCAibmFtZSIsIHRlc3RfaW5mby5uYW1lKCkpOwotCi0gIGlmICh0ZXN0X2luZm8udmFs
dWVfcGFyYW0oKSAhPSBOVUxMKSB7Ci0gICAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rl
c3RjYXNlLCAidmFsdWVfcGFyYW0iLAotICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZm8u
dmFsdWVfcGFyYW0oKSk7Ci0gIH0KLSAgaWYgKHRlc3RfaW5mby50eXBlX3BhcmFtKCkgIT0gTlVM
TCkgewotICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInR5cGVfcGFy
YW0iLCB0ZXN0X2luZm8udHlwZV9wYXJhbSgpKTsKLSAgfQotCi0gIE91dHB1dFhtbEF0dHJpYnV0
ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInN0YXR1cyIsCi0gICAgICAgICAgICAgICAgICAgICB0ZXN0
X2luZm8uc2hvdWxkX3J1bigpID8gInJ1biIgOiAibm90cnVuIik7Ci0gIE91dHB1dFhtbEF0dHJp
YnV0ZShzdHJlYW0sIGtUZXN0Y2FzZSwgInRpbWUiLAotICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKHJlc3VsdC5lbGFwc2VkX3RpbWUoKSkpOwotICBPdXRw
dXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdGNhc2UsICJjbGFzc25hbWUiLCB0ZXN0X2Nhc2Vf
bmFtZSk7Ci0gICpzdHJlYW0gPDwgVGVzdFByb3BlcnRpZXNBc1htbEF0dHJpYnV0ZXMocmVzdWx0
KTsKLQotICBpbnQgZmFpbHVyZXMgPSAwOwotICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC50
b3RhbF9wYXJ0X2NvdW50KCk7ICsraSkgewotICAgIGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiBwYXJ0
ID0gcmVzdWx0LkdldFRlc3RQYXJ0UmVzdWx0KGkpOwotICAgIGlmIChwYXJ0LmZhaWxlZCgpKSB7
Ci0gICAgICBpZiAoKytmYWlsdXJlcyA9PSAxKSB7Ci0gICAgICAgICpzdHJlYW0gPDwgIj5cbiI7
Ci0gICAgICB9Ci0gICAgICBjb25zdCBzdGQ6OnN0cmluZyBsb2NhdGlvbiA9Ci0gICAgICAgICAg
aW50ZXJuYWw6OkZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24ocGFydC5maWxl
X25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0LmxpbmVfbnVtYmVyKCkpOwotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
c3VtbWFyeSA9IGxvY2F0aW9uICsgIlxuIiArIHBhcnQuc3VtbWFyeSgpOwotICAgICAgKnN0cmVh
bSA8PCAiICAgICAgPGZhaWx1cmUgbWVzc2FnZT1cIiIKLSAgICAgICAgICAgICAgPDwgRXNjYXBl
WG1sQXR0cmlidXRlKHN1bW1hcnkuY19zdHIoKSkKLSAgICAgICAgICAgICAgPDwgIlwiIHR5cGU9
XCJcIj4iOwotICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZGV0YWlsID0gbG9jYXRpb24gKyAiXG4i
ICsgcGFydC5tZXNzYWdlKCk7Ci0gICAgICBPdXRwdXRYbWxDRGF0YVNlY3Rpb24oc3RyZWFtLCBS
ZW1vdmVJbnZhbGlkWG1sQ2hhcmFjdGVycyhkZXRhaWwpLmNfc3RyKCkpOwotICAgICAgKnN0cmVh
bSA8PCAiPC9mYWlsdXJlPlxuIjsKLSAgICB9Ci0gIH0KLQotICBpZiAoZmFpbHVyZXMgPT0gMCkK
LSAgICAqc3RyZWFtIDw8ICIgLz5cbiI7Ci0gIGVsc2UKLSAgICAqc3RyZWFtIDw8ICIgICAgPC90
ZXN0Y2FzZT5cbiI7Ci19Ci0KLS8vIFByaW50cyBhbiBYTUwgcmVwcmVzZW50YXRpb24gb2YgYSBU
ZXN0Q2FzZSBvYmplY3QKLXZvaWQgWG1sVW5pdFRlc3RSZXN1bHRQcmludGVyOjpQcmludFhtbFRl
c3RDYXNlKHN0ZDo6b3N0cmVhbSogc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVzdENhc2UmIHRlc3RfY2FzZSkgewotICBjb25z
dCBzdGQ6OnN0cmluZyBrVGVzdHN1aXRlID0gInRlc3RzdWl0ZSI7Ci0gICpzdHJlYW0gPDwgIiAg
PCIgPDwga1Rlc3RzdWl0ZTsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0
ZSwgIm5hbWUiLCB0ZXN0X2Nhc2UubmFtZSgpKTsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVh
bSwga1Rlc3RzdWl0ZSwgInRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWFibGVU
b1N0cmluZyh0ZXN0X2Nhc2UucmVwb3J0YWJsZV90ZXN0X2NvdW50KCkpKTsKLSAgT3V0cHV0WG1s
QXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZSwgImZhaWx1cmVzIiwKLSAgICAgICAgICAgICAg
ICAgICAgIFN0cmVhbWFibGVUb1N0cmluZyh0ZXN0X2Nhc2UuZmFpbGVkX3Rlc3RfY291bnQoKSkp
OwotICBPdXRwdXRYbWxBdHRyaWJ1dGUoCi0gICAgICBzdHJlYW0sIGtUZXN0c3VpdGUsICJkaXNh
YmxlZCIsCi0gICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodGVzdF9jYXNlLnJlcG9ydGFibGVfZGlz
YWJsZWRfdGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0
c3VpdGUsICJlcnJvcnMiLCAiMCIpOwotICBPdXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVz
dHN1aXRlLCAidGltZSIsCi0gICAgICAgICAgICAgICAgICAgICBGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHModGVzdF9jYXNlLmVsYXBzZWRfdGltZSgpKSk7Ci0gICpzdHJlYW0gPDwgVGVzdFBy
b3BlcnRpZXNBc1htbEF0dHJpYnV0ZXModGVzdF9jYXNlLmFkX2hvY190ZXN0X3Jlc3VsdCgpKQot
ICAgICAgICAgIDw8ICI+XG4iOwotCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdF9jYXNlLnRv
dGFsX3Rlc3RfY291bnQoKTsgKytpKSB7Ci0gICAgaWYgKHRlc3RfY2FzZS5HZXRUZXN0SW5mbyhp
KS0+aXNfcmVwb3J0YWJsZSgpKQotICAgICAgT3V0cHV0WG1sVGVzdEluZm8oc3RyZWFtLCB0ZXN0
X2Nhc2UubmFtZSgpLCAqdGVzdF9jYXNlLkdldFRlc3RJbmZvKGkpKTsKLSAgfQotICAqc3RyZWFt
IDw8ICIgIDwvIiA8PCBrVGVzdHN1aXRlIDw8ICI+XG4iOwotfQotCi0vLyBQcmludHMgYW4gWE1M
IHN1bW1hcnkgb2YgdW5pdF90ZXN0IHRvIG91dHB1dCBzdHJlYW0gb3V0Lgotdm9pZCBYbWxVbml0
VGVzdFJlc3VsdFByaW50ZXI6OlByaW50WG1sVW5pdFRlc3Qoc3RkOjpvc3RyZWFtKiBzdHJlYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBV
bml0VGVzdCYgdW5pdF90ZXN0KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0c3VpdGVzID0g
InRlc3RzdWl0ZXMiOwotCi0gICpzdHJlYW0gPDwgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNv
ZGluZz1cIlVURi04XCI/PlxuIjsKLSAgKnN0cmVhbSA8PCAiPCIgPDwga1Rlc3RzdWl0ZXM7Ci0K
LSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJ0ZXN0cyIsCi0gICAg
ICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVf
dGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVz
LCAiZmFpbHVyZXMiLAotICAgICAgICAgICAgICAgICAgICAgU3RyZWFtYWJsZVRvU3RyaW5nKHVu
aXRfdGVzdC5mYWlsZWRfdGVzdF9jb3VudCgpKSk7Ci0gIE91dHB1dFhtbEF0dHJpYnV0ZSgKLSAg
ICAgIHN0cmVhbSwga1Rlc3RzdWl0ZXMsICJkaXNhYmxlZCIsCi0gICAgICBTdHJlYW1hYmxlVG9T
dHJpbmcodW5pdF90ZXN0LnJlcG9ydGFibGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpKSk7Ci0gIE91
dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAiZXJyb3JzIiwgIjAiKTsKLSAg
T3V0cHV0WG1sQXR0cmlidXRlKAotICAgICAgc3RyZWFtLCBrVGVzdHN1aXRlcywgInRpbWVzdGFt
cCIsCi0gICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSh1bml0X3Rlc3Quc3Rh
cnRfdGltZXN0YW1wKCkpKTsKLSAgT3V0cHV0WG1sQXR0cmlidXRlKHN0cmVhbSwga1Rlc3RzdWl0
ZXMsICJ0aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vj
b25kcyh1bml0X3Rlc3QuZWxhcHNlZF90aW1lKCkpKTsKLQotICBpZiAoR1RFU1RfRkxBRyhzaHVm
ZmxlKSkgewotICAgIE91dHB1dFhtbEF0dHJpYnV0ZShzdHJlYW0sIGtUZXN0c3VpdGVzLCAicmFu
ZG9tX3NlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1hYmxlVG9TdHJpbmcodW5p
dF90ZXN0LnJhbmRvbV9zZWVkKCkpKTsKLSAgfQotCi0gICpzdHJlYW0gPDwgVGVzdFByb3BlcnRp
ZXNBc1htbEF0dHJpYnV0ZXModW5pdF90ZXN0LmFkX2hvY190ZXN0X3Jlc3VsdCgpKTsKLQotICBP
dXRwdXRYbWxBdHRyaWJ1dGUoc3RyZWFtLCBrVGVzdHN1aXRlcywgIm5hbWUiLCAiQWxsVGVzdHMi
KTsKLSAgKnN0cmVhbSA8PCAiPlxuIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRfdGVz
dC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKSB7Ci0gICAgaWYgKHVuaXRfdGVzdC5HZXRU
ZXN0Q2FzZShpKS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCkgPiAwKQotICAgICAgUHJpbnRYbWxU
ZXN0Q2FzZShzdHJlYW0sICp1bml0X3Rlc3QuR2V0VGVzdENhc2UoaSkpOwotICB9Ci0gICpzdHJl
YW0gPDwgIjwvIiA8PCBrVGVzdHN1aXRlcyA8PCAiPlxuIjsKLX0KLQotLy8gUHJvZHVjZXMgYSBz
dHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0ZXN0IHByb3BlcnRpZXMgaW4gYSByZXN1bHQgYXMgc3Bh
Y2UKLS8vIGRlbGltaXRlZCBYTUwgYXR0cmlidXRlcyBiYXNlZCBvbiB0aGUgcHJvcGVydHkga2V5
PSJ2YWx1ZSIgcGFpcnMuCi1zdGQ6OnN0cmluZyBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXI6OlRl
c3RQcm9wZXJ0aWVzQXNYbWxBdHRyaWJ1dGVzKAotICAgIGNvbnN0IFRlc3RSZXN1bHQmIHJlc3Vs
dCkgewotICBNZXNzYWdlIGF0dHJpYnV0ZXM7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0
LnRlc3RfcHJvcGVydHlfY291bnQoKTsgKytpKSB7Ci0gICAgY29uc3QgVGVzdFByb3BlcnR5JiBw
cm9wZXJ0eSA9IHJlc3VsdC5HZXRUZXN0UHJvcGVydHkoaSk7Ci0gICAgYXR0cmlidXRlcyA8PCAi
ICIgPDwgcHJvcGVydHkua2V5KCkgPDwgIj0iCi0gICAgICAgIDw8ICJcIiIgPDwgRXNjYXBlWG1s
QXR0cmlidXRlKHByb3BlcnR5LnZhbHVlKCkpIDw8ICJcIiI7Ci0gIH0KLSAgcmV0dXJuIGF0dHJp
YnV0ZXMuR2V0U3RyaW5nKCk7Ci19Ci0KLS8vIEVuZCBYbWxVbml0VGVzdFJlc3VsdFByaW50ZXIK
LQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLQotLy8gQ2hlY2tzIGlmIHN0ciBjb250
YWlucyAnPScsICcmJywgJyUnIG9yICdcbicgY2hhcmFjdGVycy4gSWYgeWVzLAotLy8gcmVwbGFj
ZXMgdGhlbSBieSAiJXh4IiB3aGVyZSB4eCBpcyB0aGVpciBoZXhhZGVjaW1hbCB2YWx1ZS4gRm9y
Ci0vLyBleGFtcGxlLCByZXBsYWNlcyAiPSIgd2l0aCAiJTNEIi4gIFRoaXMgYWxnb3JpdGhtIGlz
IE8oc3RybGVuKHN0cikpCi0vLyBpbiBib3RoIHRpbWUgYW5kIHNwYWNlIC0tIGltcG9ydGFudCBh
cyB0aGUgaW5wdXQgc3RyIG1heSBjb250YWluIGFuCi0vLyBhcmJpdHJhcmlseSBsb25nIHRlc3Qg
ZmFpbHVyZSBtZXNzYWdlIGFuZCBzdGFjayB0cmFjZS4KLXN0ZDo6c3RyaW5nIFN0cmVhbWluZ0xp
c3RlbmVyOjpVcmxFbmNvZGUoY29uc3QgY2hhciogc3RyKSB7Ci0gIHN0ZDo6c3RyaW5nIHJlc3Vs
dDsKLSAgcmVzdWx0LnJlc2VydmUoc3RybGVuKHN0cikgKyAxKTsKLSAgZm9yIChjaGFyIGNoID0g
KnN0cjsgY2ggIT0gJ1wwJzsgY2ggPSAqKytzdHIpIHsKLSAgICBzd2l0Y2ggKGNoKSB7Ci0gICAg
ICBjYXNlICclJzoKLSAgICAgIGNhc2UgJz0nOgotICAgICAgY2FzZSAnJic6Ci0gICAgICBjYXNl
ICdcbic6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIiUiICsgU3RyaW5nOjpGb3JtYXRCeXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoKSkpOwotICAgICAgICBicmVhazsKLSAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soY2gpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBTdHJlYW1pbmdMaXN0ZW5lcjo6
U29ja2V0V3JpdGVyOjpNYWtlQ29ubmVjdGlvbigpIHsKLSAgR1RFU1RfQ0hFQ0tfKHNvY2tmZF8g
PT0gLTEpCi0gICAgICA8PCAiTWFrZUNvbm5lY3Rpb24oKSBjYW4ndCBiZSBjYWxsZWQgd2hlbiB0
aGVyZSBpcyBhbHJlYWR5IGEgY29ubmVjdGlvbi4iOwotCi0gIGFkZHJpbmZvIGhpbnRzOwotICBt
ZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKLSAgaGludHMuYWlfZmFtaWx5ID0gQUZf
VU5TUEVDOyAgICAvLyBUbyBhbGxvdyBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgotICBo
aW50cy5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotICBhZGRyaW5mbyogc2VydmluZm8gPSBO
VUxMOwotCi0gIC8vIFVzZSB0aGUgZ2V0YWRkcmluZm8oKSB0byBnZXQgYSBsaW5rZWQgbGlzdCBv
ZiBJUCBhZGRyZXNzZXMgZm9yCi0gIC8vIHRoZSBnaXZlbiBob3N0IG5hbWUuCi0gIGNvbnN0IGlu
dCBlcnJvcl9udW0gPSBnZXRhZGRyaW5mbygKLSAgICAgIGhvc3RfbmFtZV8uY19zdHIoKSwgcG9y
dF9udW1fLmNfc3RyKCksICZoaW50cywgJnNlcnZpbmZvKTsKLSAgaWYgKGVycm9yX251bSAhPSAw
KSB7Ci0gICAgR1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZ2V0YWRk
cmluZm8oKSBmYWlsZWQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8IGdhaV9zdHJlcnJv
cihlcnJvcl9udW0pOwotICB9Ci0KLSAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgcmVzdWx0cyBh
bmQgY29ubmVjdCB0byB0aGUgZmlyc3Qgd2UgY2FuLgotICBmb3IgKGFkZHJpbmZvKiBjdXJfYWRk
ciA9IHNlcnZpbmZvOyBzb2NrZmRfID09IC0xICYmIGN1cl9hZGRyICE9IE5VTEw7Ci0gICAgICAg
Y3VyX2FkZHIgPSBjdXJfYWRkci0+YWlfbmV4dCkgewotICAgIHNvY2tmZF8gPSBzb2NrZXQoCi0g
ICAgICAgIGN1cl9hZGRyLT5haV9mYW1pbHksIGN1cl9hZGRyLT5haV9zb2NrdHlwZSwgY3VyX2Fk
ZHItPmFpX3Byb3RvY29sKTsKLSAgICBpZiAoc29ja2ZkXyAhPSAtMSkgewotICAgICAgLy8gQ29u
bmVjdCB0aGUgY2xpZW50IHNvY2tldCB0byB0aGUgc2VydmVyIHNvY2tldC4KLSAgICAgIGlmIChj
b25uZWN0KHNvY2tmZF8sIGN1cl9hZGRyLT5haV9hZGRyLCBjdXJfYWRkci0+YWlfYWRkcmxlbikg
PT0gLTEpIHsKLSAgICAgICAgY2xvc2Uoc29ja2ZkXyk7Ci0gICAgICAgIHNvY2tmZF8gPSAtMTsK
LSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBmcmVlYWRkcmluZm8oc2VydmluZm8pOyAgLy8gYWxs
IGRvbmUgd2l0aCB0aGlzIHN0cnVjdHVyZQotCi0gIGlmIChzb2NrZmRfID09IC0xKSB7Ci0gICAg
R1RFU1RfTE9HXyhXQVJOSU5HKSA8PCAic3RyZWFtX3Jlc3VsdF90bzogZmFpbGVkIHRvIGNvbm5l
Y3QgdG8gIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgaG9zdF9uYW1lXyA8PCAiOiIgPDwg
cG9ydF9udW1fOwotICB9Ci19Ci0KLS8vIEVuZCBvZiBjbGFzcyBTdHJlYW1pbmcgTGlzdGVuZXIK
LSNlbmRpZiAgLy8gR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTX18KLQotLy8gQ2xhc3MgU2NvcGVk
VHJhY2UKLQotLy8gUHVzaGVzIHRoZSBnaXZlbiBzb3VyY2UgZmlsZSBsb2NhdGlvbiBhbmQgbWVz
c2FnZSBvbnRvIGEgcGVyLXRocmVhZAotLy8gdHJhY2Ugc3RhY2sgbWFpbnRhaW5lZCBieSBHb29n
bGUgVGVzdC4KLVNjb3BlZFRyYWNlOjpTY29wZWRUcmFjZShjb25zdCBjaGFyKiBmaWxlLCBpbnQg
bGluZSwgY29uc3QgTWVzc2FnZSYgbWVzc2FnZSkKLSAgICBHVEVTVF9MT0NLX0VYQ0xVREVEXygm
VW5pdFRlc3Q6Om11dGV4XykgewotICBUcmFjZUluZm8gdHJhY2U7Ci0gIHRyYWNlLmZpbGUgPSBm
aWxlOwotICB0cmFjZS5saW5lID0gbGluZTsKLSAgdHJhY2UubWVzc2FnZSA9IG1lc3NhZ2UuR2V0
U3RyaW5nKCk7Ci0KLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlB1c2hHVGVzdFRyYWNlKHRy
YWNlKTsKLX0KLQotLy8gUG9wcyB0aGUgaW5mbyBwdXNoZWQgYnkgdGhlIGMndG9yLgotU2NvcGVk
VHJhY2U6On5TY29wZWRUcmFjZSgpCi0gICAgR1RFU1RfTE9DS19FWENMVURFRF8oJlVuaXRUZXN0
OjptdXRleF8pIHsKLSAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPlBvcEdUZXN0VHJhY2UoKTsK
LX0KLQotCi0vLyBjbGFzcyBPc1N0YWNrVHJhY2VHZXR0ZXIKLQotY29uc3QgY2hhciogY29uc3Qg
T3NTdGFja1RyYWNlR2V0dGVySW50ZXJmYWNlOjprRWxpZGVkRnJhbWVzTWFya2VyID0KLSAgICAi
Li4uICIgR1RFU1RfTkFNRV8gIiBpbnRlcm5hbCBmcmFtZXMgLi4uIjsKLQotc3RkOjpzdHJpbmcg
T3NTdGFja1RyYWNlR2V0dGVyOjpDdXJyZW50U3RhY2tUcmFjZShpbnQgLyptYXhfZGVwdGgqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8q
c2tpcF9jb3VudCovKSB7Ci0gIHJldHVybiAiIjsKLX0KLQotdm9pZCBPc1N0YWNrVHJhY2VHZXR0
ZXI6OlVwb25MZWF2aW5nR1Rlc3QoKSB7fQotCi0vLyBBIGhlbHBlciBjbGFzcyB0aGF0IGNyZWF0
ZXMgdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaW4gaXRzCi0vLyBjb25zdHJ1Y3RvciBhbmQgZGVs
ZXRlcyB0aGUgZmlsZSBpbiBpdHMgZGVzdHJ1Y3Rvci4KLWNsYXNzIFNjb3BlZFByZW1hdHVyZUV4
aXRGaWxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFNjb3BlZFByZW1hdHVyZUV4aXRGaWxlKGNv
bnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVwYXRoKQotICAgICAgOiBwcmVtYXR1cmVfZXhp
dF9maWxlcGF0aF8ocHJlbWF0dXJlX2V4aXRfZmlsZXBhdGgpIHsKLSAgICAvLyBJZiBhIHBhdGgg
dG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgaXMgc3BlY2lmaWVkLi4uCi0gICAgaWYgKHByZW1h
dHVyZV9leGl0X2ZpbGVwYXRoICE9IE5VTEwgJiYgKnByZW1hdHVyZV9leGl0X2ZpbGVwYXRoICE9
ICdcMCcpIHsKLSAgICAgIC8vIGNyZWF0ZSB0aGUgZmlsZSB3aXRoIGEgc2luZ2xlICIwIiBjaGFy
YWN0ZXIgaW4gaXQuICBJL08KLSAgICAgIC8vIGVycm9ycyBhcmUgaWdub3JlZCBhcyB0aGVyZSdz
IG5vdGhpbmcgYmV0dGVyIHdlIGNhbiBkbyBhbmQgd2UKLSAgICAgIC8vIGRvbid0IHdhbnQgdG8g
ZmFpbCB0aGUgdGVzdCBiZWNhdXNlIG9mIHRoaXMuCi0gICAgICBGSUxFKiBwZmlsZSA9IHBvc2l4
OjpGT3BlbihwcmVtYXR1cmVfZXhpdF9maWxlcGF0aCwgInciKTsKLSAgICAgIGZ3cml0ZSgiMCIs
IDEsIDEsIHBmaWxlKTsKLSAgICAgIGZjbG9zZShwZmlsZSk7Ci0gICAgfQotICB9Ci0KLSAgflNj
b3BlZFByZW1hdHVyZUV4aXRGaWxlKCkgewotICAgIGlmIChwcmVtYXR1cmVfZXhpdF9maWxlcGF0
aF8gIT0gTlVMTCAmJiAqcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfICE9ICdcMCcpIHsKLSAgICAg
IHJlbW92ZShwcmVtYXR1cmVfZXhpdF9maWxlcGF0aF8pOwotICAgIH0KLSAgfQotCi0gcHJpdmF0
ZToKLSAgY29uc3QgY2hhciogY29uc3QgcHJlbWF0dXJlX2V4aXRfZmlsZXBhdGhfOwotCi0gIEdU
RVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU2NvcGVkUHJlbWF0dXJlRXhpdEZpbGUpOwot
fTsKLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIGNsYXNzIFRlc3RFdmVudExpc3Rl
bmVycwotCi1UZXN0RXZlbnRMaXN0ZW5lcnM6OlRlc3RFdmVudExpc3RlbmVycygpCi0gICAgOiBy
ZXBlYXRlcl8obmV3IGludGVybmFsOjpUZXN0RXZlbnRSZXBlYXRlcigpKSwKLSAgICAgIGRlZmF1
bHRfcmVzdWx0X3ByaW50ZXJfKE5VTEwpLAotICAgICAgZGVmYXVsdF94bWxfZ2VuZXJhdG9yXyhO
VUxMKSB7Ci19Ci0KLVRlc3RFdmVudExpc3RlbmVyczo6flRlc3RFdmVudExpc3RlbmVycygpIHsg
ZGVsZXRlIHJlcGVhdGVyXzsgfQotCi0vLyBSZXR1cm5zIHRoZSBzdGFuZGFyZCBsaXN0ZW5lciBy
ZXNwb25zaWJsZSBmb3IgdGhlIGRlZmF1bHQgY29uc29sZQotLy8gb3V0cHV0LiAgQ2FuIGJlIHJl
bW92ZWQgZnJvbSB0aGUgbGlzdGVuZXJzIGxpc3QgdG8gc2h1dCBkb3duIGRlZmF1bHQKLS8vIGNv
bnNvbGUgb3V0cHV0LiAgTm90ZSB0aGF0IHJlbW92aW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGxp
c3RlbmVyIGxpc3QKLS8vIHdpdGggUmVsZWFzZSB0cmFuc2ZlcnMgaXRzIG93bmVyc2hpcCB0byB0
aGUgdXNlci4KLXZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpBcHBlbmQoVGVzdEV2ZW50TGlzdGVu
ZXIqIGxpc3RlbmVyKSB7Ci0gIHJlcGVhdGVyXy0+QXBwZW5kKGxpc3RlbmVyKTsKLX0KLQotLy8g
UmVtb3ZlcyB0aGUgZ2l2ZW4gZXZlbnQgbGlzdGVuZXIgZnJvbSB0aGUgbGlzdCBhbmQgcmV0dXJu
cyBpdC4gIEl0IHRoZW4KLS8vIGJlY29tZXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRv
IGRlbGV0ZSB0aGUgbGlzdGVuZXIuIFJldHVybnMKLS8vIE5VTEwgaWYgdGhlIGxpc3RlbmVyIGlz
IG5vdCBmb3VuZCBpbiB0aGUgbGlzdC4KLVRlc3RFdmVudExpc3RlbmVyKiBUZXN0RXZlbnRMaXN0
ZW5lcnM6OlJlbGVhc2UoVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKSB7Ci0gIGlmIChsaXN0
ZW5lciA9PSBkZWZhdWx0X3Jlc3VsdF9wcmludGVyXykKLSAgICBkZWZhdWx0X3Jlc3VsdF9wcmlu
dGVyXyA9IE5VTEw7Ci0gIGVsc2UgaWYgKGxpc3RlbmVyID09IGRlZmF1bHRfeG1sX2dlbmVyYXRv
cl8pCi0gICAgZGVmYXVsdF94bWxfZ2VuZXJhdG9yXyA9IE5VTEw7Ci0gIHJldHVybiByZXBlYXRl
cl8tPlJlbGVhc2UobGlzdGVuZXIpOwotfQotCi0vLyBSZXR1cm5zIHJlcGVhdGVyIHRoYXQgYnJv
YWRjYXN0cyB0aGUgVGVzdEV2ZW50TGlzdGVuZXIgZXZlbnRzIHRvIGFsbAotLy8gc3Vic2NyaWJl
cnMuCi1UZXN0RXZlbnRMaXN0ZW5lciogVGVzdEV2ZW50TGlzdGVuZXJzOjpyZXBlYXRlcigpIHsg
cmV0dXJuIHJlcGVhdGVyXzsgfQotCi0vLyBTZXRzIHRoZSBkZWZhdWx0X3Jlc3VsdF9wcmludGVy
IGF0dHJpYnV0ZSB0byB0aGUgcHJvdmlkZWQgbGlzdGVuZXIuCi0vLyBUaGUgbGlzdGVuZXIgaXMg
YWxzbyBhZGRlZCB0byB0aGUgbGlzdGVuZXIgbGlzdCBhbmQgcHJldmlvdXMKLS8vIGRlZmF1bHRf
cmVzdWx0X3ByaW50ZXIgaXMgcmVtb3ZlZCBmcm9tIGl0IGFuZCBkZWxldGVkLiBUaGUgbGlzdGVu
ZXIgY2FuCi0vLyBhbHNvIGJlIE5VTEwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIG5vdCBiZSBhZGRl
ZCB0byB0aGUgbGlzdC4gRG9lcwotLy8gbm90aGluZyBpZiB0aGUgcHJldmlvdXMgYW5kIHRoZSBj
dXJyZW50IGxpc3RlbmVyIG9iamVjdHMgYXJlIHRoZSBzYW1lLgotdm9pZCBUZXN0RXZlbnRMaXN0
ZW5lcnM6OlNldERlZmF1bHRSZXN1bHRQcmludGVyKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5l
cikgewotICBpZiAoZGVmYXVsdF9yZXN1bHRfcHJpbnRlcl8gIT0gbGlzdGVuZXIpIHsKLSAgICAv
LyBJdCBpcyBhbiBlcnJvciB0byBwYXNzIHRoaXMgbWV0aG9kIGEgbGlzdGVuZXIgdGhhdCBpcyBh
bHJlYWR5IGluIHRoZQotICAgIC8vIGxpc3QuCi0gICAgZGVsZXRlIFJlbGVhc2UoZGVmYXVsdF9y
ZXN1bHRfcHJpbnRlcl8pOwotICAgIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfID0gbGlzdGVuZXI7
Ci0gICAgaWYgKGxpc3RlbmVyICE9IE5VTEwpCi0gICAgICBBcHBlbmQobGlzdGVuZXIpOwotICB9
Ci19Ci0KLS8vIFNldHMgdGhlIGRlZmF1bHRfeG1sX2dlbmVyYXRvciBhdHRyaWJ1dGUgdG8gdGhl
IHByb3ZpZGVkIGxpc3RlbmVyLiAgVGhlCi0vLyBsaXN0ZW5lciBpcyBhbHNvIGFkZGVkIHRvIHRo
ZSBsaXN0ZW5lciBsaXN0IGFuZCBwcmV2aW91cwotLy8gZGVmYXVsdF94bWxfZ2VuZXJhdG9yIGlz
IHJlbW92ZWQgZnJvbSBpdCBhbmQgZGVsZXRlZC4gVGhlIGxpc3RlbmVyIGNhbgotLy8gYWxzbyBi
ZSBOVUxMIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIGxpc3QuIERv
ZXMKLS8vIG5vdGhpbmcgaWYgdGhlIHByZXZpb3VzIGFuZCB0aGUgY3VycmVudCBsaXN0ZW5lciBv
YmplY3RzIGFyZSB0aGUgc2FtZS4KLXZvaWQgVGVzdEV2ZW50TGlzdGVuZXJzOjpTZXREZWZhdWx0
WG1sR2VuZXJhdG9yKFRlc3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikgewotICBpZiAoZGVmYXVs
dF94bWxfZ2VuZXJhdG9yXyAhPSBsaXN0ZW5lcikgewotICAgIC8vIEl0IGlzIGFuIGVycm9yIHRv
IHBhc3MgdGhpcyBtZXRob2QgYSBsaXN0ZW5lciB0aGF0IGlzIGFscmVhZHkgaW4gdGhlCi0gICAg
Ly8gbGlzdC4KLSAgICBkZWxldGUgUmVsZWFzZShkZWZhdWx0X3htbF9nZW5lcmF0b3JfKTsKLSAg
ICBkZWZhdWx0X3htbF9nZW5lcmF0b3JfID0gbGlzdGVuZXI7Ci0gICAgaWYgKGxpc3RlbmVyICE9
IE5VTEwpCi0gICAgICBBcHBlbmQobGlzdGVuZXIpOwotICB9Ci19Ci0KLS8vIENvbnRyb2xzIHdo
ZXRoZXIgZXZlbnRzIHdpbGwgYmUgZm9yd2FyZGVkIGJ5IHRoZSByZXBlYXRlciB0byB0aGUKLS8v
IGxpc3RlbmVycyBpbiB0aGUgbGlzdC4KLWJvb2wgVGVzdEV2ZW50TGlzdGVuZXJzOjpFdmVudEZv
cndhcmRpbmdFbmFibGVkKCkgY29uc3QgewotICByZXR1cm4gcmVwZWF0ZXJfLT5mb3J3YXJkaW5n
X2VuYWJsZWQoKTsKLX0KLQotdm9pZCBUZXN0RXZlbnRMaXN0ZW5lcnM6OlN1cHByZXNzRXZlbnRG
b3J3YXJkaW5nKCkgewotICByZXBlYXRlcl8tPnNldF9mb3J3YXJkaW5nX2VuYWJsZWQoZmFsc2Up
OwotfQotCi0vLyBjbGFzcyBVbml0VGVzdAotCi0vLyBHZXRzIHRoZSBzaW5nbGV0b24gVW5pdFRl
c3Qgb2JqZWN0LiAgVGhlIGZpcnN0IHRpbWUgdGhpcyBtZXRob2QgaXMKLS8vIGNhbGxlZCwgYSBV
bml0VGVzdCBvYmplY3QgaXMgY29uc3RydWN0ZWQgYW5kIHJldHVybmVkLiAgQ29uc2VjdXRpdmUK
LS8vIGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBzYW1lIG9iamVjdC4KLS8vCi0vLyBXZSBkb24ndCBw
cm90ZWN0IHRoaXMgdW5kZXIgbXV0ZXhfIGFzIGEgdXNlciBpcyBub3Qgc3VwcG9zZWQgdG8KLS8v
IGNhbGwgdGhpcyBiZWZvcmUgbWFpbigpIHN0YXJ0cywgZnJvbSB3aGljaCBwb2ludCBvbiB0aGUg
cmV0dXJuCi0vLyB2YWx1ZSB3aWxsIG5ldmVyIGNoYW5nZS4KLVVuaXRUZXN0KiBVbml0VGVzdDo6
R2V0SW5zdGFuY2UoKSB7Ci0gIC8vIFdoZW4gY29tcGlsZWQgd2l0aCBNU1ZDIDcuMSBpbiBvcHRp
bWl6ZWQgbW9kZSwgZGVzdHJveWluZyB0aGUKLSAgLy8gVW5pdFRlc3Qgb2JqZWN0IHVwb24gZXhp
dGluZyB0aGUgcHJvZ3JhbSBtZXNzZXMgdXAgdGhlIGV4aXQgY29kZSwKLSAgLy8gY2F1c2luZyBz
dWNjZXNzZnVsIHRlc3RzIHRvIGFwcGVhciBmYWlsZWQuICBXZSBoYXZlIHRvIHVzZSBhCi0gIC8v
IGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIGNhc2UgdG8gYnlwYXNzIHRoZSBjb21w
aWxlciBidWcuCi0gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gbWFrZXMgdGhlIGNvbXBpbGVyIGhh
cHB5LCBhdCB0aGUgY29zdCBvZgotICAvLyBsZWFraW5nIHRoZSBVbml0VGVzdCBvYmplY3QuCi0K
LSAgLy8gQ29kZUdlYXIgQysrQnVpbGRlciBpbnNpc3RzIG9uIGEgcHVibGljIGRlc3RydWN0b3Ig
Zm9yIHRoZQotICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLiAgVXNlIHRoaXMgaW1wbGVtZW50
YXRpb24gdG8ga2VlcCBnb29kIE9PCi0gIC8vIGRlc2lnbiB3aXRoIHByaXZhdGUgZGVzdHJ1Y3Rv
ci4KLQotI2lmIChfTVNDX1ZFUiA9PSAxMzEwICYmICFkZWZpbmVkKF9ERUJVRykpIHx8IGRlZmlu
ZWQoX19CT1JMQU5EQ19fKQotICBzdGF0aWMgVW5pdFRlc3QqIGNvbnN0IGluc3RhbmNlID0gbmV3
IFVuaXRUZXN0OwotICByZXR1cm4gaW5zdGFuY2U7Ci0jZWxzZQotICBzdGF0aWMgVW5pdFRlc3Qg
aW5zdGFuY2U7Ci0gIHJldHVybiAmaW5zdGFuY2U7Ci0jZW5kaWYgIC8vIChfTVNDX1ZFUiA9PSAx
MzEwICYmICFkZWZpbmVkKF9ERUJVRykpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotfQotCi0v
LyBHZXRzIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCB0ZXN0IGNhc2VzLgotaW50IFVuaXRUZXN0
OjpzdWNjZXNzZnVsX3Rlc3RfY2FzZV9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGwoKS0+
c3VjY2Vzc2Z1bF90ZXN0X2Nhc2VfY291bnQoKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9m
IGZhaWxlZCB0ZXN0IGNhc2VzLgotaW50IFVuaXRUZXN0OjpmYWlsZWRfdGVzdF9jYXNlX2NvdW50
KCkgY29uc3QgewotICByZXR1cm4gaW1wbCgpLT5mYWlsZWRfdGVzdF9jYXNlX2NvdW50KCk7Ci19
Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBhbGwgdGVzdCBjYXNlcy4KLWludCBVbml0VGVzdDo6
dG90YWxfdGVzdF9jYXNlX2NvdW50KCkgY29uc3QgewotICByZXR1cm4gaW1wbCgpLT50b3RhbF90
ZXN0X2Nhc2VfY291bnQoKTsKLX0KLQotLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGFsbCB0ZXN0IGNh
c2VzIHRoYXQgY29udGFpbiBhdCBsZWFzdCBvbmUgdGVzdAotLy8gdGhhdCBzaG91bGQgcnVuLgot
aW50IFVuaXRUZXN0Ojp0ZXN0X2Nhc2VfdG9fcnVuX2NvdW50KCkgY29uc3QgewotICByZXR1cm4g
aW1wbCgpLT50ZXN0X2Nhc2VfdG9fcnVuX2NvdW50KCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJl
ciBvZiBzdWNjZXNzZnVsIHRlc3RzLgotaW50IFVuaXRUZXN0OjpzdWNjZXNzZnVsX3Rlc3RfY291
bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsKCktPnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpOwot
fQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZmFpbGVkIHRlc3RzLgotaW50IFVuaXRUZXN0Ojpm
YWlsZWRfdGVzdF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+ZmFpbGVkX3Rlc3RfY291
bnQoKTsgfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlzYWJsZWQgdGVzdHMgdGhhdCB3aWxs
IGJlIHJlcG9ydGVkIGluIHRoZSBYTUwgcmVwb3J0LgotaW50IFVuaXRUZXN0OjpyZXBvcnRhYmxl
X2Rpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7Ci0gIHJldHVybiBpbXBsKCktPnJlcG9ydGFi
bGVfZGlzYWJsZWRfdGVzdF9jb3VudCgpOwotfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2YgZGlz
YWJsZWQgdGVzdHMuCi1pbnQgVW5pdFRlc3Q6OmRpc2FibGVkX3Rlc3RfY291bnQoKSBjb25zdCB7
Ci0gIHJldHVybiBpbXBsKCktPmRpc2FibGVkX3Rlc3RfY291bnQoKTsKLX0KLQotLy8gR2V0cyB0
aGUgbnVtYmVyIG9mIHRlc3RzIHRvIGJlIHByaW50ZWQgaW4gdGhlIFhNTCByZXBvcnQuCi1pbnQg
VW5pdFRlc3Q6OnJlcG9ydGFibGVfdGVzdF9jb3VudCgpIGNvbnN0IHsKLSAgcmV0dXJuIGltcGwo
KS0+cmVwb3J0YWJsZV90ZXN0X2NvdW50KCk7Ci19Ci0KLS8vIEdldHMgdGhlIG51bWJlciBvZiBh
bGwgdGVzdHMuCi1pbnQgVW5pdFRlc3Q6OnRvdGFsX3Rlc3RfY291bnQoKSBjb25zdCB7IHJldHVy
biBpbXBsKCktPnRvdGFsX3Rlc3RfY291bnQoKTsgfQotCi0vLyBHZXRzIHRoZSBudW1iZXIgb2Yg
dGVzdHMgdGhhdCBzaG91bGQgcnVuLgotaW50IFVuaXRUZXN0Ojp0ZXN0X3RvX3J1bl9jb3VudCgp
IGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+dGVzdF90b19ydW5fY291bnQoKTsgfQotCi0vLyBHZXRz
IHRoZSB0aW1lIG9mIHRoZSB0ZXN0IHByb2dyYW0gc3RhcnQsIGluIG1zIGZyb20gdGhlIHN0YXJ0
IG9mIHRoZQotLy8gVU5JWCBlcG9jaC4KLWludGVybmFsOjpUaW1lSW5NaWxsaXMgVW5pdFRlc3Q6
OnN0YXJ0X3RpbWVzdGFtcCgpIGNvbnN0IHsKLSAgICByZXR1cm4gaW1wbCgpLT5zdGFydF90aW1l
c3RhbXAoKTsKLX0KLQotLy8gR2V0cyB0aGUgZWxhcHNlZCB0aW1lLCBpbiBtaWxsaXNlY29uZHMu
Ci1pbnRlcm5hbDo6VGltZUluTWlsbGlzIFVuaXRUZXN0OjplbGFwc2VkX3RpbWUoKSBjb25zdCB7
Ci0gIHJldHVybiBpbXBsKCktPmVsYXBzZWRfdGltZSgpOwotfQotCi0vLyBSZXR1cm5zIHRydWUg
aWZmIHRoZSB1bml0IHRlc3QgcGFzc2VkIChpLmUuIGFsbCB0ZXN0IGNhc2VzIHBhc3NlZCkuCi1i
b29sIFVuaXRUZXN0OjpQYXNzZWQoKSBjb25zdCB7IHJldHVybiBpbXBsKCktPlBhc3NlZCgpOyB9
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHVuaXQgdGVzdCBmYWlsZWQgKGkuZS4gc29tZSB0
ZXN0IGNhc2UgZmFpbGVkCi0vLyBvciBzb21ldGhpbmcgb3V0c2lkZSBvZiBhbGwgdGVzdHMgZmFp
bGVkKS4KLWJvb2wgVW5pdFRlc3Q6OkZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIGltcGwoKS0+RmFp
bGVkKCk7IH0KLQotLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2UgYW1vbmcgYWxsIHRoZSB0ZXN0
IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLS8vIHRvdGFsX3Rlc3RfY2FzZV9jb3VudCgp
IC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJucyBOVUxMLgotY29uc3QgVGVz
dENhc2UqIFVuaXRUZXN0OjpHZXRUZXN0Q2FzZShpbnQgaSkgY29uc3QgewotICByZXR1cm4gaW1w
bCgpLT5HZXRUZXN0Q2FzZShpKTsKLX0KLQotLy8gUmV0dXJucyB0aGUgVGVzdFJlc3VsdCBjb250
YWluaW5nIGluZm9ybWF0aW9uIG9uIHRlc3QgZmFpbHVyZXMgYW5kCi0vLyBwcm9wZXJ0aWVzIGxv
Z2dlZCBvdXRzaWRlIG9mIGluZGl2aWR1YWwgdGVzdCBjYXNlcy4KLWNvbnN0IFRlc3RSZXN1bHQm
IFVuaXRUZXN0OjphZF9ob2NfdGVzdF9yZXN1bHQoKSBjb25zdCB7Ci0gIHJldHVybiAqaW1wbCgp
LT5hZF9ob2NfdGVzdF9yZXN1bHQoKTsKLX0KLQotLy8gR2V0cyB0aGUgaS10aCB0ZXN0IGNhc2Ug
YW1vbmcgYWxsIHRoZSB0ZXN0IGNhc2VzLiBpIGNhbiByYW5nZSBmcm9tIDAgdG8KLS8vIHRvdGFs
X3Rlc3RfY2FzZV9jb3VudCgpIC0gMS4gSWYgaSBpcyBub3QgaW4gdGhhdCByYW5nZSwgcmV0dXJu
cyBOVUxMLgotVGVzdENhc2UqIFVuaXRUZXN0OjpHZXRNdXRhYmxlVGVzdENhc2UoaW50IGkpIHsK
LSAgcmV0dXJuIGltcGwoKS0+R2V0TXV0YWJsZVRlc3RDYXNlKGkpOwotfQotCi0vLyBSZXR1cm5z
IHRoZSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRyYWNrIGV2
ZW50cwotLy8gaW5zaWRlIEdvb2dsZSBUZXN0LgotVGVzdEV2ZW50TGlzdGVuZXJzJiBVbml0VGVz
dDo6bGlzdGVuZXJzKCkgewotICByZXR1cm4gKmltcGwoKS0+bGlzdGVuZXJzKCk7Ci19Ci0KLS8v
IFJlZ2lzdGVycyBhbmQgcmV0dXJucyBhIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50LiAgV2hlbiBh
IHRlc3QKLS8vIHByb2dyYW0gaXMgcnVuLCBhbGwgZ2xvYmFsIHRlc3QgZW52aXJvbm1lbnRzIHdp
bGwgYmUgc2V0LXVwIGluIHRoZQotLy8gb3JkZXIgdGhleSB3ZXJlIHJlZ2lzdGVyZWQuICBBZnRl
ciBhbGwgdGVzdHMgaW4gdGhlIHByb2dyYW0gaGF2ZQotLy8gZmluaXNoZWQsIGFsbCBnbG9iYWwg
dGVzdCBlbnZpcm9ubWVudHMgd2lsbCBiZSB0b3JuLWRvd24gaW4gdGhlCi0vLyAqcmV2ZXJzZSog
b3JkZXIgdGhleSB3ZXJlIHJlZ2lzdGVyZWQuCi0vLwotLy8gVGhlIFVuaXRUZXN0IG9iamVjdCB0
YWtlcyBvd25lcnNoaXAgb2YgdGhlIGdpdmVuIGVudmlyb25tZW50LgotLy8KLS8vIFdlIGRvbid0
IHByb3RlY3QgdGhpcyB1bmRlciBtdXRleF8sIGFzIHdlIG9ubHkgc3VwcG9ydCBjYWxsaW5nIGl0
Ci0vLyBmcm9tIHRoZSBtYWluIHRocmVhZC4KLUVudmlyb25tZW50KiBVbml0VGVzdDo6QWRkRW52
aXJvbm1lbnQoRW52aXJvbm1lbnQqIGVudikgewotICBpZiAoZW52ID09IE5VTEwpIHsKLSAgICBy
ZXR1cm4gTlVMTDsKLSAgfQotCi0gIGltcGxfLT5lbnZpcm9ubWVudHMoKS5wdXNoX2JhY2soZW52
KTsKLSAgcmV0dXJuIGVudjsKLX0KLQotLy8gQWRkcyBhIFRlc3RQYXJ0UmVzdWx0IHRvIHRoZSBj
dXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0LiAgQWxsIEdvb2dsZSBUZXN0Ci0vLyBhc3NlcnRpb24g
bWFjcm9zIChlLmcuIEFTU0VSVF9UUlVFLCBFWFBFQ1RfRVEsIGV0YykgZXZlbnR1YWxseSBjYWxs
Ci0vLyB0aGlzIHRvIHJlcG9ydCB0aGVpciByZXN1bHRzLiAgVGhlIHVzZXIgY29kZSBzaG91bGQg
dXNlIHRoZQotLy8gYXNzZXJ0aW9uIG1hY3JvcyBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBkaXJl
Y3RseS4KLXZvaWQgVW5pdFRlc3Q6OkFkZFRlc3RQYXJ0UmVzdWx0KAotICAgIFRlc3RQYXJ0UmVz
dWx0OjpUeXBlIHJlc3VsdF90eXBlLAotICAgIGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwKLSAgICBp
bnQgbGluZV9udW1iZXIsCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCi0gICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG9zX3N0YWNrX3RyYWNlKSBHVEVTVF9MT0NLX0VYQ0xVREVEXyhtdXRl
eF8pIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG1zZyA8PCBtZXNzYWdlOwotCi0gIGludGVybmFsOjpN
dXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgaWYgKGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygp
LnNpemUoKSA+IDApIHsKLSAgICBtc2cgPDwgIlxuIiA8PCBHVEVTVF9OQU1FXyA8PCAiIHRyYWNl
OiI7Ci0KLSAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihpbXBsXy0+Z3Rlc3RfdHJh
Y2Vfc3RhY2soKS5zaXplKCkpOwotICAgICAgICAgaSA+IDA7IC0taSkgewotICAgICAgY29uc3Qg
aW50ZXJuYWw6OlRyYWNlSW5mbyYgdHJhY2UgPSBpbXBsXy0+Z3Rlc3RfdHJhY2Vfc3RhY2soKVtp
IC0gMV07Ci0gICAgICBtc2cgPDwgIlxuIiA8PCBpbnRlcm5hbDo6Rm9ybWF0RmlsZUxvY2F0aW9u
KHRyYWNlLmZpbGUsIHRyYWNlLmxpbmUpCi0gICAgICAgICAgPDwgIiAiIDw8IHRyYWNlLm1lc3Nh
Z2U7Ci0gICAgfQotICB9Ci0KLSAgaWYgKG9zX3N0YWNrX3RyYWNlLmNfc3RyKCkgIT0gTlVMTCAm
JiAhb3Nfc3RhY2tfdHJhY2UuZW1wdHkoKSkgewotICAgIG1zZyA8PCBpbnRlcm5hbDo6a1N0YWNr
VHJhY2VNYXJrZXIgPDwgb3Nfc3RhY2tfdHJhY2U7Ci0gIH0KLQotICBjb25zdCBUZXN0UGFydFJl
c3VsdCByZXN1bHQgPQotICAgIFRlc3RQYXJ0UmVzdWx0KHJlc3VsdF90eXBlLCBmaWxlX25hbWUs
IGxpbmVfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigp
KTsKLSAgaW1wbF8tPkdldFRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJGb3JDdXJyZW50VGhyZWFkKCkt
PgotICAgICAgUmVwb3J0VGVzdFBhcnRSZXN1bHQocmVzdWx0KTsKLQotICBpZiAocmVzdWx0X3R5
cGUgIT0gVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzKSB7Ci0gICAgLy8gZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIKLSAgICAvLyBndGVzdF90aHJvd19vbl9mYWls
dXJlLiAgVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNldCB0aGUgbGF0dGVyCi0gICAgLy8gaW4gdGhl
IGNvZGUgKHBlcmhhcHMgaW4gb3JkZXIgdG8gdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMKLSAg
ICAvLyB3aXRoIGFub3RoZXIgdGVzdGluZyBmcmFtZXdvcmspIGFuZCBzcGVjaWZ5IHRoZSBmb3Jt
ZXIgb24gdGhlCi0gICAgLy8gY29tbWFuZCBsaW5lIGZvciBkZWJ1Z2dpbmcuCi0gICAgaWYgKEdU
RVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTICYmICFH
VEVTVF9PU19XSU5ET1dTX1BIT05FICYmICFHVEVTVF9PU19XSU5ET1dTX1JUCi0gICAgICAvLyBV
c2luZyBEZWJ1Z0JyZWFrIG9uIFdpbmRvd3MgYWxsb3dzIGd0ZXN0IHRvIHN0aWxsIGJyZWFrIGlu
dG8gYSBkZWJ1Z2dlcgotICAgICAgLy8gd2hlbiBhIGZhaWx1cmUgaGFwcGVucyBhbmQgYm90aCB0
aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIGFuZAotICAgICAgLy8gdGhlIC0tZ3Rlc3RfY2F0
Y2hfZXhjZXB0aW9ucyBmbGFncyBhcmUgc3BlY2lmaWVkLgotICAgICAgRGVidWdCcmVhaygpOwot
I2Vsc2UKLSAgICAgIC8vIERlcmVmZXJlbmNlIE5VTEwgdGhyb3VnaCBhIHZvbGF0aWxlIHBvaW50
ZXIgdG8gcHJldmVudCB0aGUgY29tcGlsZXIKLSAgICAgIC8vIGZyb20gcmVtb3ZpbmcuIFdlIHVz
ZSB0aGlzIHJhdGhlciB0aGFuIGFib3J0KCkgb3IgX19idWlsdGluX3RyYXAoKSBmb3IKLSAgICAg
IC8vIHBvcnRhYmlsaXR5OiBTeW1iaWFuIGRvZXNuJ3QgaW1wbGVtZW50IGFib3J0KCkgd2VsbCwg
YW5kIHNvbWUgZGVidWdnZXJzCi0gICAgICAvLyBkb24ndCBjb3JyZWN0bHkgdHJhcCBhYm9ydCgp
LgotICAgICAgKnN0YXRpY19jYXN0PHZvbGF0aWxlIGludCo+KE5VTEwpID0gMTsKLSNlbmRpZiAg
Ly8gR1RFU1RfT1NfV0lORE9XUwotICAgIH0gZWxzZSBpZiAoR1RFU1RfRkxBRyh0aHJvd19vbl9m
YWlsdXJlKSkgewotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0gICAgICB0aHJvdyBpbnRlcm5h
bDo6R29vZ2xlVGVzdEZhaWx1cmVFeGNlcHRpb24ocmVzdWx0KTsKLSNlbHNlCi0gICAgICAvLyBX
ZSBjYW5ub3QgY2FsbCBhYm9ydCgpIGFzIGl0IGdlbmVyYXRlcyBhIHBvcC11cCBpbiBkZWJ1ZyBt
b2RlCi0gICAgICAvLyB0aGF0IGNhbm5vdCBiZSBzdXBwcmVzc2VkIGluIFZDIDcuMSBvciBiZWxv
dy4KLSAgICAgIGV4aXQoMSk7Ci0jZW5kaWYKLSAgICB9Ci0gIH0KLX0KLQotLy8gQWRkcyBhIFRl
c3RQcm9wZXJ0eSB0byB0aGUgY3VycmVudCBUZXN0UmVzdWx0IG9iamVjdCB3aGVuIGludm9rZWQg
ZnJvbQotLy8gaW5zaWRlIGEgdGVzdCwgdG8gY3VycmVudCBUZXN0Q2FzZSdzIGFkX2hvY190ZXN0
X3Jlc3VsdF8gd2hlbiBpbnZva2VkCi0vLyBmcm9tIFNldFVwVGVzdENhc2Ugb3IgVGVhckRvd25U
ZXN0Q2FzZSwgb3IgdG8gdGhlIGdsb2JhbCBwcm9wZXJ0eSBzZXQKLS8vIHdoZW4gaW52b2tlZCBl
bHNld2hlcmUuICBJZiB0aGUgcmVzdWx0IGFscmVhZHkgY29udGFpbnMgYSBwcm9wZXJ0eSB3aXRo
Ci0vLyB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQuCi12b2lkIFVuaXRU
ZXN0OjpSZWNvcmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYga2V5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKSB7Ci0gIGltcGxfLT5S
ZWNvcmRQcm9wZXJ0eShUZXN0UHJvcGVydHkoa2V5LCB2YWx1ZSkpOwotfQotCi0vLyBSdW5zIGFs
bCB0ZXN0cyBpbiB0aGlzIFVuaXRUZXN0IG9iamVjdCBhbmQgcHJpbnRzIHRoZSByZXN1bHQuCi0v
LyBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgb3IgMSBvdGhlcndpc2UuCi0vLwotLy8gV2UgZG9u
J3QgcHJvdGVjdCB0aGlzIHVuZGVyIG11dGV4XywgYXMgd2Ugb25seSBzdXBwb3J0IGNhbGxpbmcg
aXQKLS8vIGZyb20gdGhlIG1haW4gdGhyZWFkLgotaW50IFVuaXRUZXN0OjpSdW4oKSB7Ci0gIGNv
bnN0IGJvb2wgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzID0KLSAgICAgIGludGVybmFsOjpH
VEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KS5sZW5ndGgoKSA+IDA7Ci0KLSAgLy8g
R29vZ2xlIFRlc3QgaW1wbGVtZW50cyB0aGlzIHByb3RvY29sIGZvciBjYXRjaGluZyB0aGF0IGEg
dGVzdAotICAvLyBwcm9ncmFtIGV4aXRzIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byBHb29n
bGUgVGVzdDoKLSAgLy8KLSAgLy8gICAxLiBVcG9uIHN0YXJ0LCBHb29nbGUgVGVzdCBjcmVhdGVz
IGEgZmlsZSB3aG9zZSBhYnNvbHV0ZSBwYXRoCi0gIC8vICAgICAgaXMgc3BlY2lmaWVkIGJ5IHRo
ZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAvLyAgICAgIFRFU1RfUFJFTUFUVVJFX0VYSVRfRklM
RS4KLSAgLy8gICAyLiBXaGVuIEdvb2dsZSBUZXN0IGhhcyBmaW5pc2hlZCBpdHMgd29yaywgaXQg
ZGVsZXRlcyB0aGUgZmlsZS4KLSAgLy8KLSAgLy8gVGhpcyBhbGxvd3MgYSB0ZXN0IHJ1bm5lciB0
byBzZXQgVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIGJlZm9yZQotICAvLyBydW5uaW5nIGEgR29v
Z2xlLVRlc3QtYmFzZWQgdGVzdCBwcm9ncmFtIGFuZCBjaGVjayB0aGUgZXhpc3RlbmNlCi0gIC8v
IG9mIHRoZSBmaWxlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgZXhlY3V0aW9uIHRvIHNlZSBpZiBp
dCBoYXMKLSAgLy8gZXhpdGVkIHByZW1hdHVyZWx5LgotCi0gIC8vIElmIHdlIGFyZSBpbiB0aGUg
Y2hpbGQgcHJvY2VzcyBvZiBhIGRlYXRoIHRlc3QsIGRvbid0Ci0gIC8vIGNyZWF0ZS9kZWxldGUg
dGhlIHByZW1hdHVyZSBleGl0IGZpbGUsIGFzIGRvaW5nIHNvIGlzIHVubmVjZXNzYXJ5Ci0gIC8v
IGFuZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcmVudCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBjcmVhdGUv
ZGVsZXRlCi0gIC8vIHRoZSBmaWxlIHVwb24gZW50ZXJpbmcvbGVhdmluZyB0aGlzIGZ1bmN0aW9u
LiAgSWYgdGhlIHByb2dyYW0KLSAgLy8gc29tZWhvdyBleGl0cyBiZWZvcmUgdGhpcyBmdW5jdGlv
biBoYXMgYSBjaGFuY2UgdG8gcmV0dXJuLCB0aGUKLSAgLy8gcHJlbWF0dXJlLWV4aXQgZmlsZSB3
aWxsIGJlIGxlZnQgdW5kZWxldGVkLCBjYXVzaW5nIGEgdGVzdCBydW5uZXIKLSAgLy8gdGhhdCB1
bmRlcnN0YW5kcyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCB0byByZXBvcnQgdGhl
Ci0gIC8vIHRlc3QgYXMgaGF2aW5nIGZhaWxlZC4KLSAgY29uc3QgaW50ZXJuYWw6OlNjb3BlZFBy
ZW1hdHVyZUV4aXRGaWxlIHByZW1hdHVyZV9leGl0X2ZpbGUoCi0gICAgICBpbl9kZWF0aF90ZXN0
X2NoaWxkX3Byb2Nlc3MgPwotICAgICAgTlVMTCA6IGludGVybmFsOjpwb3NpeDo6R2V0RW52KCJU
RVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKSk7Ci0KLSAgLy8gQ2FwdHVyZXMgdGhlIHZhbHVlIG9m
IEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykuICBUaGlzIHZhbHVlIHdpbGwgYmUKLSAgLy8g
dXNlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBwcm9ncmFtLgotICBpbXBsKCktPnNldF9jYXRj
aF9leGNlcHRpb25zKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpOwotCi0jaWYgR1RFU1Rf
SEFTX1NFSAotICAvLyBFaXRoZXIgdGhlIHVzZXIgd2FudHMgR29vZ2xlIFRlc3QgdG8gY2F0Y2gg
ZXhjZXB0aW9ucyB0aHJvd24gYnkgdGhlCi0gIC8vIHRlc3RzIG9yIHRoaXMgaXMgZXhlY3V0aW5n
IGluIHRoZSBjb250ZXh0IG9mIGRlYXRoIHRlc3QgY2hpbGQKLSAgLy8gcHJvY2Vzcy4gSW4gZWl0
aGVyIGNhc2UgdGhlIHVzZXIgZG9lcyBub3Qgd2FudCB0byBzZWUgcG9wLXVwIGRpYWxvZ3MKLSAg
Ly8gYWJvdXQgY3Jhc2hlcyAtIHRoZXkgYXJlIGV4cGVjdGVkLgotICBpZiAoaW1wbCgpLT5jYXRj
aF9leGNlcHRpb25zKCkgfHwgaW5fZGVhdGhfdGVzdF9jaGlsZF9wcm9jZXNzKSB7Ci0jIGlmICFH
VEVTVF9PU19XSU5ET1dTX01PQklMRSAmJiAhR1RFU1RfT1NfV0lORE9XU19QSE9ORSAmJiAhR1RF
U1RfT1NfV0lORE9XU19SVAotICAgIC8vIFNldEVycm9yTW9kZSBkb2Vzbid0IGV4aXN0IG9uIENF
LgotICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTIHwgU0VNX05PQUxJR05N
RU5URkFVTFRFWENFUFQgfAotICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1gg
fCBTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKLSMgZW5kaWYgIC8vICFHVEVTVF9PU19XSU5ET1dT
X01PQklMRQotCi0jIGlmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBHVEVTVF9PU19XSU5ET1dTX01J
TkdXKSAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgICAvLyBEZWF0aCB0ZXN0IGNoaWxk
cmVuIGNhbiBiZSB0ZXJtaW5hdGVkIHdpdGggX2Fib3J0KCkuICBPbiBXaW5kb3dzLAotICAgIC8v
IF9hYm9ydCgpIGNhbiBzaG93IGEgZGlhbG9nIHdpdGggYSB3YXJuaW5nIG1lc3NhZ2UuICBUaGlz
IGZvcmNlcyB0aGUKLSAgICAvLyBhYm9ydCBtZXNzYWdlIHRvIGdvIHRvIHN0ZGVyciBpbnN0ZWFk
LgotICAgIF9zZXRfZXJyb3JfbW9kZShfT1VUX1RPX1NUREVSUik7Ci0jIGVuZGlmCi0KLSMgaWYg
X01TQ19WRVIgPj0gMTQwMCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLSAgICAvLyBJbiB0
aGUgZGVidWcgdmVyc2lvbiwgVmlzdWFsIFN0dWRpbyBwb3BzIHVwIGEgc2VwYXJhdGUgZGlhbG9n
Ci0gICAgLy8gb2ZmZXJpbmcgYSBjaG9pY2UgdG8gZGVidWcgdGhlIGFib3J0ZWQgcHJvZ3JhbS4g
V2UgbmVlZCB0byBzdXBwcmVzcwotICAgIC8vIHRoaXMgZGlhbG9nIG9yIGl0IHdpbGwgcG9wIHVw
IGZvciBldmVyeSBFWFBFQ1QvQVNTRVJUX0RFQVRIIHN0YXRlbWVudAotICAgIC8vIGV4ZWN1dGVk
LiBHb29nbGUgVGVzdCB3aWxsIG5vdGlmeSB0aGUgdXNlciBvZiBhbnkgdW5leHBlY3RlZAotICAg
IC8vIGZhaWx1cmUgdmlhIHN0ZGVyci4KLSAgICAvLwotICAgIC8vIFZDKysgZG9lc24ndCBkZWZp
bmUgX3NldF9hYm9ydF9iZWhhdmlvcigpIHByaW9yIHRvIHRoZSB2ZXJzaW9uIDguMC4KLSAgICAv
LyBVc2VycyBvZiBwcmlvciBWQyB2ZXJzaW9ucyBzaGFsbCBzdWZmZXIgdGhlIGFnb255IGFuZCBw
YWluIG9mCi0gICAgLy8gY2xpY2tpbmcgdGhyb3VnaCB0aGUgY291bnRsZXNzIGRlYnVnIGRpYWxv
Z3MuCi0gICAgLy8gVE9ETyh2bGFkbEBnb29nbGUuY29tKTogZmluZCBhIHdheSB0byBzdXBwcmVz
cyB0aGUgYWJvcnQgZGlhbG9nKCkgaW4gdGhlCi0gICAgLy8gZGVidWcgbW9kZSB3aGVuIGNvbXBp
bGVkIHdpdGggVkMgNy4xIG9yIGxvd2VyLgotICAgIGlmICghR1RFU1RfRkxBRyhicmVha19vbl9m
YWlsdXJlKSkKLSAgICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoCi0gICAgICAgICAgMHgwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmb2xsb3dpbmcgZmxh
Z3M6Ci0gICAgICAgICAgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsgIC8v
IHBvcC11cCB3aW5kb3csIGNvcmUgZHVtcC4KLSMgZW5kaWYKLSAgfQotI2VuZGlmICAvLyBHVEVT
VF9IQVNfU0VICi0KLSAgcmV0dXJuIGludGVybmFsOjpIYW5kbGVFeGNlcHRpb25zSW5NZXRob2RJ
ZlN1cHBvcnRlZCgKLSAgICAgIGltcGwoKSwKLSAgICAgICZpbnRlcm5hbDo6VW5pdFRlc3RJbXBs
OjpSdW5BbGxUZXN0cywKLSAgICAgICJhdXhpbGlhcnkgdGVzdCBjb2RlIChlbnZpcm9ubWVudHMg
b3IgZXZlbnQgbGlzdGVuZXJzKSIpID8gMCA6IDE7Ci19Ci0KLS8vIFJldHVybnMgdGhlIHdvcmtp
bmcgZGlyZWN0b3J5IHdoZW4gdGhlIGZpcnN0IFRFU1QoKSBvciBURVNUX0YoKSB3YXMKLS8vIGV4
ZWN1dGVkLgotY29uc3QgY2hhciogVW5pdFRlc3Q6Om9yaWdpbmFsX3dvcmtpbmdfZGlyKCkgY29u
c3QgewotICByZXR1cm4gaW1wbF8tPm9yaWdpbmFsX3dvcmtpbmdfZGlyXy5jX3N0cigpOwotfQot
Ci0vLyBSZXR1cm5zIHRoZSBUZXN0Q2FzZSBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJy
ZW50bHkgcnVubmluZywKLS8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotY29uc3Qg
VGVzdENhc2UqIFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfY2FzZSgpIGNvbnN0Ci0gICAgR1RFU1Rf
TE9DS19FWENMVURFRF8obXV0ZXhfKSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0
ZXhfKTsKLSAgcmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfY2FzZSgpOwotfQotCi0vLyBSZXR1
cm5zIHRoZSBUZXN0SW5mbyBvYmplY3QgZm9yIHRoZSB0ZXN0IHRoYXQncyBjdXJyZW50bHkgcnVu
bmluZywKLS8vIG9yIE5VTEwgaWYgbm8gdGVzdCBpcyBydW5uaW5nLgotY29uc3QgVGVzdEluZm8q
IFVuaXRUZXN0OjpjdXJyZW50X3Rlc3RfaW5mbygpIGNvbnN0Ci0gICAgR1RFU1RfTE9DS19FWENM
VURFRF8obXV0ZXhfKSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAg
cmV0dXJuIGltcGxfLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotfQotCi0vLyBSZXR1cm5zIHRoZSBy
YW5kb20gc2VlZCB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCB0ZXN0IHJ1bi4KLWlu
dCBVbml0VGVzdDo6cmFuZG9tX3NlZWQoKSBjb25zdCB7IHJldHVybiBpbXBsXy0+cmFuZG9tX3Nl
ZWQoKTsgfQotCi0jaWYgR1RFU1RfSEFTX1BBUkFNX1RFU1QKLS8vIFJldHVybnMgUGFyYW1ldGVy
aXplZFRlc3RDYXNlUmVnaXN0cnkgb2JqZWN0IHVzZWQgdG8ga2VlcCB0cmFjayBvZgotLy8gdmFs
dWUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhbmQgaW5zdGFudGlhdGUgYW5kIHJlZ2lzdGVyIHRoZW0u
Ci1pbnRlcm5hbDo6UGFyYW1ldGVyaXplZFRlc3RDYXNlUmVnaXN0cnkmCi0gICAgVW5pdFRlc3Q6
OnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3RyeSgpCi0gICAgICAgIEdURVNUX0xPQ0tfRVhDTFVE
RURfKG11dGV4XykgewotICByZXR1cm4gaW1wbF8tPnBhcmFtZXRlcml6ZWRfdGVzdF9yZWdpc3Ry
eSgpOwotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0vLyBDcmVhdGVzIGFu
IGVtcHR5IFVuaXRUZXN0LgotVW5pdFRlc3Q6OlVuaXRUZXN0KCkgewotICBpbXBsXyA9IG5ldyBp
bnRlcm5hbDo6VW5pdFRlc3RJbXBsKHRoaXMpOwotfQotCi0vLyBEZXN0cnVjdG9yIG9mIFVuaXRU
ZXN0LgotVW5pdFRlc3Q6On5Vbml0VGVzdCgpIHsKLSAgZGVsZXRlIGltcGxfOwotfQotCi0vLyBQ
dXNoZXMgYSB0cmFjZSBkZWZpbmVkIGJ5IFNDT1BFRF9UUkFDRSgpIG9uIHRvIHRoZSBwZXItdGhy
ZWFkCi0vLyBHb29nbGUgVGVzdCB0cmFjZSBzdGFjay4KLXZvaWQgVW5pdFRlc3Q6OlB1c2hHVGVz
dFRyYWNlKGNvbnN0IGludGVybmFsOjpUcmFjZUluZm8mIHRyYWNlKQotICAgIEdURVNUX0xPQ0tf
RVhDTFVERURfKG11dGV4XykgewotICBpbnRlcm5hbDo6TXV0ZXhMb2NrIGxvY2soJm11dGV4Xyk7
Ci0gIGltcGxfLT5ndGVzdF90cmFjZV9zdGFjaygpLnB1c2hfYmFjayh0cmFjZSk7Ci19Ci0KLS8v
IFBvcHMgYSB0cmFjZSBmcm9tIHRoZSBwZXItdGhyZWFkIEdvb2dsZSBUZXN0IHRyYWNlIHN0YWNr
Lgotdm9pZCBVbml0VGVzdDo6UG9wR1Rlc3RUcmFjZSgpCi0gICAgR1RFU1RfTE9DS19FWENMVURF
RF8obXV0ZXhfKSB7Ci0gIGludGVybmFsOjpNdXRleExvY2sgbG9jaygmbXV0ZXhfKTsKLSAgaW1w
bF8tPmd0ZXN0X3RyYWNlX3N0YWNrKCkucG9wX2JhY2soKTsKLX0KLQotbmFtZXNwYWNlIGludGVy
bmFsIHsKLQotVW5pdFRlc3RJbXBsOjpVbml0VGVzdEltcGwoVW5pdFRlc3QqIHBhcmVudCkKLSAg
ICA6IHBhcmVudF8ocGFyZW50KSwKLSAgICAgIEdURVNUX0RJU0FCTEVfTVNDX1dBUk5JTkdTX1BV
U0hfKDQzNTUgLyogdXNpbmcgdGhpcyBpbiBpbml0aWFsaXplciAqLykKLSAgICAgIGRlZmF1bHRf
Z2xvYmFsX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotICAgICAgZGVmYXVsdF9w
ZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJfKHRoaXMpLAotICAgICAgR1RFU1Rf
RElTQUJMRV9NU0NfV0FSTklOR1NfUE9QXygpCi0gICAgICBnbG9iYWxfdGVzdF9wYXJ0X3Jlc3Vs
dF9yZXBvdGVyXygKLSAgICAgICAgICAmZGVmYXVsdF9nbG9iYWxfdGVzdF9wYXJ0X3Jlc3VsdF9y
ZXBvcnRlcl8pLAotICAgICAgcGVyX3RocmVhZF90ZXN0X3BhcnRfcmVzdWx0X3JlcG9ydGVyXygK
LSAgICAgICAgICAmZGVmYXVsdF9wZXJfdGhyZWFkX3Rlc3RfcGFydF9yZXN1bHRfcmVwb3J0ZXJf
KSwKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICAgICAgcGFyYW1ldGVyaXplZF90ZXN0X3Jl
Z2lzdHJ5XygpLAotICAgICAgcGFyYW1ldGVyaXplZF90ZXN0c19yZWdpc3RlcmVkXyhmYWxzZSks
Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0gICAgICBsYXN0X2RlYXRoX3Rlc3Rf
Y2FzZV8oLTEpLAotICAgICAgY3VycmVudF90ZXN0X2Nhc2VfKE5VTEwpLAotICAgICAgY3VycmVu
dF90ZXN0X2luZm9fKE5VTEwpLAotICAgICAgYWRfaG9jX3Rlc3RfcmVzdWx0XygpLAotICAgICAg
b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyhOVUxMKSwKLSAgICAgIHBvc3RfZmxhZ19wYXJzZV9pbml0
X3BlcmZvcm1lZF8oZmFsc2UpLAotICAgICAgcmFuZG9tX3NlZWRfKDApLCAgLy8gV2lsbCBiZSBv
dmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJlZm9yZSBmaXJzdCB1c2UuCi0gICAgICByYW5kb21fKDAp
LCAgLy8gV2lsbCBiZSByZXNlZWRlZCBiZWZvcmUgZmlyc3QgdXNlLgotICAgICAgc3RhcnRfdGlt
ZXN0YW1wXygwKSwKLSAgICAgIGVsYXBzZWRfdGltZV8oMCksCi0jaWYgR1RFU1RfSEFTX0RFQVRI
X1RFU1QKLSAgICAgIGRlYXRoX3Rlc3RfZmFjdG9yeV8obmV3IERlZmF1bHREZWF0aFRlc3RGYWN0
b3J5KSwKLSNlbmRpZgotICAgICAgLy8gV2lsbCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBmbGFnIGJl
Zm9yZSBmaXJzdCB1c2UuCi0gICAgICBjYXRjaF9leGNlcHRpb25zXyhmYWxzZSkgewotICBsaXN0
ZW5lcnMoKS0+U2V0RGVmYXVsdFJlc3VsdFByaW50ZXIobmV3IFByZXR0eVVuaXRUZXN0UmVzdWx0
UHJpbnRlcik7Ci19Ci0KLVVuaXRUZXN0SW1wbDo6flVuaXRUZXN0SW1wbCgpIHsKLSAgLy8gRGVs
ZXRlcyBldmVyeSBUZXN0Q2FzZS4KLSAgRm9yRWFjaCh0ZXN0X2Nhc2VzXywgaW50ZXJuYWw6OkRl
bGV0ZTxUZXN0Q2FzZT4pOwotCi0gIC8vIERlbGV0ZXMgZXZlcnkgRW52aXJvbm1lbnQuCi0gIEZv
ckVhY2goZW52aXJvbm1lbnRzXywgaW50ZXJuYWw6OkRlbGV0ZTxFbnZpcm9ubWVudD4pOwotCi0g
IGRlbGV0ZSBvc19zdGFja190cmFjZV9nZXR0ZXJfOwotfQotCi0vLyBBZGRzIGEgVGVzdFByb3Bl
cnR5IHRvIHRoZSBjdXJyZW50IFRlc3RSZXN1bHQgb2JqZWN0IHdoZW4gaW52b2tlZCBpbiBhCi0v
LyBjb250ZXh0IG9mIGEgdGVzdCwgdG8gY3VycmVudCB0ZXN0IGNhc2UncyBhZF9ob2NfdGVzdF9y
ZXN1bHQgd2hlbiBpbnZva2UKLS8vIGZyb20gU2V0VXBUZXN0Q2FzZS9UZWFyRG93blRlc3RDYXNl
LCBvciB0byB0aGUgZ2xvYmFsIHByb3BlcnR5IHNldAotLy8gb3RoZXJ3aXNlLiAgSWYgdGhlIHJl
c3VsdCBhbHJlYWR5IGNvbnRhaW5zIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBrZXksCi0vLyB0
aGUgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLgotdm9pZCBVbml0VGVzdEltcGw6OlJlY29yZFByb3Bl
cnR5KGNvbnN0IFRlc3RQcm9wZXJ0eSYgdGVzdF9wcm9wZXJ0eSkgewotICBzdGQ6OnN0cmluZyB4
bWxfZWxlbWVudDsKLSAgVGVzdFJlc3VsdCogdGVzdF9yZXN1bHQ7ICAvLyBUZXN0UmVzdWx0IGFw
cHJvcHJpYXRlIGZvciBwcm9wZXJ0eSByZWNvcmRpbmcuCi0KLSAgaWYgKGN1cnJlbnRfdGVzdF9p
bmZvXyAhPSBOVUxMKSB7Ci0gICAgeG1sX2VsZW1lbnQgPSAidGVzdGNhc2UiOwotICAgIHRlc3Rf
cmVzdWx0ID0gJihjdXJyZW50X3Rlc3RfaW5mb18tPnJlc3VsdF8pOwotICB9IGVsc2UgaWYgKGN1
cnJlbnRfdGVzdF9jYXNlXyAhPSBOVUxMKSB7Ci0gICAgeG1sX2VsZW1lbnQgPSAidGVzdHN1aXRl
IjsKLSAgICB0ZXN0X3Jlc3VsdCA9ICYoY3VycmVudF90ZXN0X2Nhc2VfLT5hZF9ob2NfdGVzdF9y
ZXN1bHRfKTsKLSAgfSBlbHNlIHsKLSAgICB4bWxfZWxlbWVudCA9ICJ0ZXN0c3VpdGVzIjsKLSAg
ICB0ZXN0X3Jlc3VsdCA9ICZhZF9ob2NfdGVzdF9yZXN1bHRfOwotICB9Ci0gIHRlc3RfcmVzdWx0
LT5SZWNvcmRQcm9wZXJ0eSh4bWxfZWxlbWVudCwgdGVzdF9wcm9wZXJ0eSk7Ci19Ci0KLSNpZiBH
VEVTVF9IQVNfREVBVEhfVEVTVAotLy8gRGlzYWJsZXMgZXZlbnQgZm9yd2FyZGluZyBpZiB0aGUg
Y29udHJvbCBpcyBjdXJyZW50bHkgaW4gYSBkZWF0aCB0ZXN0Ci0vLyBzdWJwcm9jZXNzLiBNdXN0
IG5vdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRHb29nbGVUZXN0Lgotdm9pZCBVbml0VGVzdEltcGw6
OlN1cHByZXNzVGVzdEV2ZW50c0lmSW5TdWJwcm9jZXNzKCkgewotICBpZiAoaW50ZXJuYWxfcnVu
X2RlYXRoX3Rlc3RfZmxhZ18uZ2V0KCkgIT0gTlVMTCkKLSAgICBsaXN0ZW5lcnMoKS0+U3VwcHJl
c3NFdmVudEZvcndhcmRpbmcoKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QK
LQotLy8gSW5pdGlhbGl6ZXMgZXZlbnQgbGlzdGVuZXJzIHBlcmZvcm1pbmcgWE1MIG91dHB1dCBh
cyBzcGVjaWZpZWQgYnkKLS8vIFVuaXRUZXN0T3B0aW9ucy4gTXVzdCBub3QgYmUgY2FsbGVkIGJl
Zm9yZSBJbml0R29vZ2xlVGVzdC4KLXZvaWQgVW5pdFRlc3RJbXBsOjpDb25maWd1cmVYbWxPdXRw
dXQoKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZm9ybWF0ID0gVW5pdFRlc3RPcHRp
b25zOjpHZXRPdXRwdXRGb3JtYXQoKTsKLSAgaWYgKG91dHB1dF9mb3JtYXQgPT0gInhtbCIpIHsK
LSAgICBsaXN0ZW5lcnMoKS0+U2V0RGVmYXVsdFhtbEdlbmVyYXRvcihuZXcgWG1sVW5pdFRlc3RS
ZXN1bHRQcmludGVyKAotICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRv
T3V0cHV0RmlsZSgpLmNfc3RyKCkpKTsKLSAgfSBlbHNlIGlmIChvdXRwdXRfZm9ybWF0ICE9ICIi
KSB7Ci0gICAgcHJpbnRmKCJXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3V0cHV0IGZvcm1hdCBcIiVz
XCIgaWdub3JlZC5cbiIsCi0gICAgICAgICAgIG91dHB1dF9mb3JtYXQuY19zdHIoKSk7Ci0gICAg
ZmZsdXNoKHN0ZG91dCk7Ci0gIH0KLX0KLQotI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18K
LS8vIEluaXRpYWxpemVzIGV2ZW50IGxpc3RlbmVycyBmb3Igc3RyZWFtaW5nIHRlc3QgcmVzdWx0
cyBpbiBzdHJpbmcgZm9ybS4KLS8vIE11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgSW5pdEdvb2ds
ZVRlc3QuCi12b2lkIFVuaXRUZXN0SW1wbDo6Q29uZmlndXJlU3RyZWFtaW5nT3V0cHV0KCkgewot
ICBjb25zdCBzdGQ6OnN0cmluZyYgdGFyZ2V0ID0gR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3Rv
KTsKLSAgaWYgKCF0YXJnZXQuZW1wdHkoKSkgewotICAgIGNvbnN0IHNpemVfdCBwb3MgPSB0YXJn
ZXQuZmluZCgnOicpOwotICAgIGlmIChwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKLSAgICAg
IGxpc3RlbmVycygpLT5BcHBlbmQobmV3IFN0cmVhbWluZ0xpc3RlbmVyKHRhcmdldC5zdWJzdHIo
MCwgcG9zKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmdldC5zdWJzdHIocG9zKzEpKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHByaW50ZigiV0FS
TklORzogdW5yZWNvZ25pemVkIHN0cmVhbWluZyB0YXJnZXQgXCIlc1wiIGlnbm9yZWQuXG4iLAot
ICAgICAgICAgICAgIHRhcmdldC5jX3N0cigpKTsKLSAgICAgIGZmbHVzaChzdGRvdXQpOwotICAg
IH0KLSAgfQotfQotI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0KLS8vIFBl
cmZvcm1zIGluaXRpYWxpemF0aW9uIGRlcGVuZGVudCB1cG9uIGZsYWcgdmFsdWVzIG9idGFpbmVk
IGluCi0vLyBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkuICBJcyBjYWxsZWQgZnJvbSBJbml0R29v
Z2xlVGVzdCBhZnRlciB0aGUgY2FsbCB0bwotLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5LiAg
SW4gY2FzZSBhIHVzZXIgbmVnbGVjdHMgdG8gY2FsbCBJbml0R29vZ2xlVGVzdAotLy8gdGhpcyBm
dW5jdGlvbiBpcyBhbHNvIGNhbGxlZCBmcm9tIFJ1bkFsbFRlc3RzLiAgU2luY2UgdGhpcyBmdW5j
dGlvbiBjYW4gYmUKLS8vIGNhbGxlZCBtb3JlIHRoYW4gb25jZSwgaXQgaGFzIHRvIGJlIGlkZW1w
b3RlbnQuCi12b2lkIFVuaXRUZXN0SW1wbDo6UG9zdEZsYWdQYXJzaW5nSW5pdCgpIHsKLSAgLy8g
RW5zdXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZXhlY3V0ZSBtb3JlIHRoYW4gb25j
ZS4KLSAgaWYgKCFwb3N0X2ZsYWdfcGFyc2VfaW5pdF9wZXJmb3JtZWRfKSB7Ci0gICAgcG9zdF9m
bGFnX3BhcnNlX2luaXRfcGVyZm9ybWVkXyA9IHRydWU7Ci0KLSNpZiBkZWZpbmVkKEdURVNUX0NV
U1RPTV9URVNUX0VWRU5UX0xJU1RFTkVSXykKLSAgICAvLyBSZWdpc3RlciB0byBzZW5kIG5vdGlm
aWNhdGlvbnMgYWJvdXQga2V5IHByb2Nlc3Mgc3RhdGUgY2hhbmdlcy4KLSAgICBsaXN0ZW5lcnMo
KS0+QXBwZW5kKG5ldyBHVEVTVF9DVVNUT01fVEVTVF9FVkVOVF9MSVNURU5FUl8oKSk7Ci0jZW5k
aWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX1RFU1RfRVZFTlRfTElTVEVORVJfKQotCi0jaWYg
R1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgICBJbml0RGVhdGhUZXN0U3VicHJvY2Vzc0NvbnRyb2xJ
bmZvKCk7Ci0gICAgU3VwcHJlc3NUZXN0RXZlbnRzSWZJblN1YnByb2Nlc3MoKTsKLSNlbmRpZiAg
Ly8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotICAgIC8vIFJlZ2lzdGVycyBwYXJhbWV0ZXJpemVk
IHRlc3RzLiBUaGlzIG1ha2VzIHBhcmFtZXRlcml6ZWQgdGVzdHMKLSAgICAvLyBhdmFpbGFibGUg
dG8gdGhlIFVuaXRUZXN0IHJlZmxlY3Rpb24gQVBJIHdpdGhvdXQgcnVubmluZwotICAgIC8vIFJV
Tl9BTExfVEVTVFMuCi0gICAgUmVnaXN0ZXJQYXJhbWV0ZXJpemVkVGVzdHMoKTsKLQotICAgIC8v
IENvbmZpZ3VyZXMgbGlzdGVuZXJzIGZvciBYTUwgb3V0cHV0LiBUaGlzIG1ha2VzIGl0IHBvc3Np
YmxlIGZvciB1c2VycwotICAgIC8vIHRvIHNodXQgZG93biB0aGUgZGVmYXVsdCBYTUwgb3V0cHV0
IGJlZm9yZSBpbnZva2luZyBSVU5fQUxMX1RFU1RTLgotICAgIENvbmZpZ3VyZVhtbE91dHB1dCgp
OwotCi0jaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwotICAgIC8vIENvbmZpZ3VyZXMgbGlz
dGVuZXJzIGZvciBzdHJlYW1pbmcgdGVzdCByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc2VydmVy
LgotICAgIENvbmZpZ3VyZVN0cmVhbWluZ091dHB1dCgpOwotI2VuZGlmICAvLyBHVEVTVF9DQU5f
U1RSRUFNX1JFU1VMVFNfCi0gIH0KLX0KLQotLy8gQSBwcmVkaWNhdGUgdGhhdCBjaGVja3MgdGhl
IG5hbWUgb2YgYSBUZXN0Q2FzZSBhZ2FpbnN0IGEga25vd24KLS8vIHZhbHVlLgotLy8KLS8vIFRo
aXMgaXMgdXNlZCBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaXRUZXN0IGNsYXNzIG9ubHku
ICBXZSBwdXQKLS8vIGl0IGluIHRoZSBhbm9ueW1vdXMgbmFtZXNwYWNlIHRvIHByZXZlbnQgcG9s
bHV0aW5nIHRoZSBvdXRlcgotLy8gbmFtZXNwYWNlLgotLy8KLS8vIFRlc3RDYXNlTmFtZUlzIGlz
IGNvcHlhYmxlLgotY2xhc3MgVGVzdENhc2VOYW1lSXMgewotIHB1YmxpYzoKLSAgLy8gQ29uc3Ry
dWN0b3IuCi0gIGV4cGxpY2l0IFRlc3RDYXNlTmFtZUlzKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1l
KQotICAgICAgOiBuYW1lXyhuYW1lKSB7fQotCi0gIC8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG5h
bWUgb2YgdGVzdF9jYXNlIG1hdGNoZXMgbmFtZV8uCi0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBU
ZXN0Q2FzZSogdGVzdF9jYXNlKSBjb25zdCB7Ci0gICAgcmV0dXJuIHRlc3RfY2FzZSAhPSBOVUxM
ICYmIHN0cmNtcCh0ZXN0X2Nhc2UtPm5hbWUoKSwgbmFtZV8uY19zdHIoKSkgPT0gMDsKLSAgfQot
Ci0gcHJpdmF0ZToKLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci19OwotCi0vLyBGaW5kcyBhbmQgcmV0
dXJucyBhIFRlc3RDYXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuICBJZiBvbmUgZG9lc24ndAotLy8g
ZXhpc3QsIGNyZWF0ZXMgb25lIGFuZCByZXR1cm5zIGl0LiAgSXQncyB0aGUgQ0FMTEVSJ1MKLS8v
IFJFU1BPTlNJQklMSVRZIHRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxs
ZWQgV0hFTiBUSEUKLS8vIFRFU1RTIEFSRSBOT1QgU0hVRkZMRUQuCi0vLwotLy8gQXJndW1lbnRz
OgotLy8KLS8vICAgdGVzdF9jYXNlX25hbWU6IG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotLy8gICB0
eXBlX3BhcmFtOiAgICAgdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZSdzIHR5cGUgcGFyYW1ldGVy
LCBvciBOVUxMIGlmCi0vLyAgICAgICAgICAgICAgICAgICB0aGlzIGlzIG5vdCBhIHR5cGVkIG9y
IGEgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZS4KLS8vICAgc2V0X3VwX3RjOiAgICAgIHBv
aW50ZXIgdG8gdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cyB1cCB0aGUgdGVzdCBjYXNlCi0vLyAgIHRl
YXJfZG93bl90YzogICBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IHRlYXJzIGRvd24gdGhl
IHRlc3QgY2FzZQotVGVzdENhc2UqIFVuaXRUZXN0SW1wbDo6R2V0VGVzdENhc2UoY29uc3QgY2hh
ciogdGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiB0eXBlX3BhcmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGVzdDo6U2V0VXBUZXN0Q2FzZUZ1bmMgc2V0X3VwX3RjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGVzdDo6VGVhckRvd25UZXN0Q2FzZUZ1bmMgdGVhcl9kb3duX3Rj
KSB7Ci0gIC8vIENhbiB3ZSBmaW5kIGEgVGVzdENhc2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZT8KLSAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VGVzdENhc2UqPjo6Y29uc3RfaXRlcmF0b3IgdGVzdF9jYXNlID0K
LSAgICAgIHN0ZDo6ZmluZF9pZih0ZXN0X2Nhc2VzXy5iZWdpbigpLCB0ZXN0X2Nhc2VzXy5lbmQo
KSwKLSAgICAgICAgICAgICAgICAgICBUZXN0Q2FzZU5hbWVJcyh0ZXN0X2Nhc2VfbmFtZSkpOwot
Ci0gIGlmICh0ZXN0X2Nhc2UgIT0gdGVzdF9jYXNlc18uZW5kKCkpCi0gICAgcmV0dXJuICp0ZXN0
X2Nhc2U7Ci0KLSAgLy8gTm8uICBMZXQncyBjcmVhdGUgb25lLgotICBUZXN0Q2FzZSogY29uc3Qg
bmV3X3Rlc3RfY2FzZSA9Ci0gICAgICBuZXcgVGVzdENhc2UodGVzdF9jYXNlX25hbWUsIHR5cGVf
cGFyYW0sIHNldF91cF90YywgdGVhcl9kb3duX3RjKTsKLQotICAvLyBJcyB0aGlzIGEgZGVhdGgg
dGVzdCBjYXNlPwotICBpZiAoaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6TWF0Y2hlc0ZpbHRl
cih0ZXN0X2Nhc2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga0RlYXRoVGVzdENhc2VGaWx0ZXIpKSB7Ci0gICAgLy8gWWVzLiAgSW5zZXJ0cyB0
aGUgdGVzdCBjYXNlIGFmdGVyIHRoZSBsYXN0IGRlYXRoIHRlc3QgY2FzZQotICAgIC8vIGRlZmlu
ZWQgc28gZmFyLiAgVGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRlc3QgY2FzZXMgaGF2ZW4ndAot
ICAgIC8vIGJlZW4gc2h1ZmZsZWQuICBPdGhlcndpc2Ugd2UgbWF5IGVuZCB1cCBydW5uaW5nIGEg
ZGVhdGggdGVzdAotICAgIC8vIGFmdGVyIGEgbm9uLWRlYXRoIHRlc3QuCi0gICAgKytsYXN0X2Rl
YXRoX3Rlc3RfY2FzZV87Ci0gICAgdGVzdF9jYXNlc18uaW5zZXJ0KHRlc3RfY2FzZXNfLmJlZ2lu
KCkgKyBsYXN0X2RlYXRoX3Rlc3RfY2FzZV8sCi0gICAgICAgICAgICAgICAgICAgICAgIG5ld190
ZXN0X2Nhc2UpOwotICB9IGVsc2UgewotICAgIC8vIE5vLiAgQXBwZW5kcyB0byB0aGUgZW5kIG9m
IHRoZSBsaXN0LgotICAgIHRlc3RfY2FzZXNfLnB1c2hfYmFjayhuZXdfdGVzdF9jYXNlKTsKLSAg
fQotCi0gIHRlc3RfY2FzZV9pbmRpY2VzXy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8aW50Pih0ZXN0
X2Nhc2VfaW5kaWNlc18uc2l6ZSgpKSk7Ci0gIHJldHVybiBuZXdfdGVzdF9jYXNlOwotfQotCi0v
LyBIZWxwZXJzIGZvciBzZXR0aW5nIHVwIC8gdGVhcmluZyBkb3duIHRoZSBnaXZlbiBlbnZpcm9u
bWVudC4gIFRoZXkKLS8vIGFyZSBmb3IgdXNlIGluIHRoZSBGb3JFYWNoKCkgZnVuY3Rpb24uCi1z
dGF0aWMgdm9pZCBTZXRVcEVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYpIHsgZW52LT5TZXRV
cCgpOyB9Ci1zdGF0aWMgdm9pZCBUZWFyRG93bkVudmlyb25tZW50KEVudmlyb25tZW50KiBlbnYp
IHsgZW52LT5UZWFyRG93bigpOyB9Ci0KLS8vIFJ1bnMgYWxsIHRlc3RzIGluIHRoaXMgVW5pdFRl
c3Qgb2JqZWN0LCBwcmludHMgdGhlIHJlc3VsdCwgYW5kCi0vLyByZXR1cm5zIHRydWUgaWYgYWxs
IHRlc3RzIGFyZSBzdWNjZXNzZnVsLiAgSWYgYW55IGV4Y2VwdGlvbiBpcwotLy8gdGhyb3duIGR1
cmluZyBhIHRlc3QsIHRoZSB0ZXN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFpbGVkLCBidXQgdGhl
Ci0vLyByZXN0IG9mIHRoZSB0ZXN0cyB3aWxsIHN0aWxsIGJlIHJ1bi4KLS8vCi0vLyBXaGVuIHBh
cmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQsIGl0IGV4cGFuZHMgYW5kIHJlZ2lzdGVycwot
Ly8gcGFyYW1ldGVyaXplZCB0ZXN0cyBmaXJzdCBpbiBSZWdpc3RlclBhcmFtZXRlcml6ZWRUZXN0
cygpLgotLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBSdW5BbGxUZXN0cygpIG1h
eSBzYWZlbHkgYXNzdW1lIHRoYXQKLS8vIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIHJlYWR5IHRv
IGJlIGNvdW50ZWQgYW5kIHJ1bi4KLWJvb2wgVW5pdFRlc3RJbXBsOjpSdW5BbGxUZXN0cygpIHsK
LSAgLy8gTWFrZXMgc3VyZSBJbml0R29vZ2xlVGVzdCgpIHdhcyBjYWxsZWQuCi0gIGlmICghR1Rl
c3RJc0luaXRpYWxpemVkKCkpIHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIlxuVGhp
cyB0ZXN0IHByb2dyYW0gZGlkIE5PVCBjYWxsIDo6dGVzdGluZzo6SW5pdEdvb2dsZVRlc3QgIgot
ICAgICAgICAgICAiYmVmb3JlIGNhbGxpbmcgUlVOX0FMTF9URVNUUygpLiAgUGxlYXNlIGZpeCBp
dC5cbiIpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIC8vIERvIG5vdCBydW4gYW55IHRl
c3QgaWYgdGhlIC0taGVscCBmbGFnIHdhcyBzcGVjaWZpZWQuCi0gIGlmIChnX2hlbHBfZmxhZykK
LSAgICByZXR1cm4gdHJ1ZTsKLQotICAvLyBSZXBlYXRzIHRoZSBjYWxsIHRvIHRoZSBwb3N0LWZs
YWcgcGFyc2luZyBpbml0aWFsaXphdGlvbiBpbiBjYXNlIHRoZQotICAvLyB1c2VyIGRpZG4ndCBj
YWxsIEluaXRHb29nbGVUZXN0LgotICBQb3N0RmxhZ1BhcnNpbmdJbml0KCk7Ci0KLSAgLy8gRXZl
biBpZiBzaGFyZGluZyBpcyBub3Qgb24sIHRlc3QgcnVubmVycyBtYXkgd2FudCB0byB1c2UgdGhl
Ci0gIC8vIEdURVNUX1NIQVJEX1NUQVRVU19GSUxFIHRvIHF1ZXJ5IHdoZXRoZXIgdGhlIHRlc3Qg
c3VwcG9ydHMgdGhlIHNoYXJkaW5nCi0gIC8vIHByb3RvY29sLgotICBpbnRlcm5hbDo6V3JpdGVU
b1NoYXJkU3RhdHVzRmlsZUlmTmVlZGVkKCk7Ci0KLSAgLy8gVHJ1ZSBpZmYgd2UgYXJlIGluIGEg
c3VicHJvY2VzcyBmb3IgcnVubmluZyBhIHRocmVhZC1zYWZlLXN0eWxlCi0gIC8vIGRlYXRoIHRl
c3QuCi0gIGJvb2wgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IGZhbHNlOwotCi0jaWYg
R1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA9IChp
bnRlcm5hbF9ydW5fZGVhdGhfdGVzdF9mbGFnXy5nZXQoKSAhPSBOVUxMKTsKLSMgaWYgZGVmaW5l
ZChHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NFVFVQXykKLSAgaWYgKGluX3N1YnByb2Nl
c3NfZm9yX2RlYXRoX3Rlc3QpIHsKLSAgICBHVEVTVF9FWFRSQV9ERUFUSF9URVNUX0NISUxEX1NF
VFVQXygpOwotICB9Ci0jIGVuZGlmICAvLyBkZWZpbmVkKEdURVNUX0VYVFJBX0RFQVRIX1RFU1Rf
Q0hJTERfU0VUVVBfKQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0gIGNvbnN0
IGJvb2wgc2hvdWxkX3NoYXJkID0gU2hvdWxkU2hhcmQoa1Rlc3RUb3RhbFNoYXJkcywga1Rlc3RT
aGFyZEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3N1
YnByb2Nlc3NfZm9yX2RlYXRoX3Rlc3QpOwotCi0gIC8vIENvbXBhcmVzIHRoZSBmdWxsIHRlc3Qg
bmFtZXMgd2l0aCB0aGUgZmlsdGVyIHRvIGRlY2lkZSB3aGljaAotICAvLyB0ZXN0cyB0byBydW4u
Ci0gIGNvbnN0IGJvb2wgaGFzX3Rlc3RzX3RvX3J1biA9IEZpbHRlclRlc3RzKHNob3VsZF9zaGFy
ZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSE9OT1Jf
U0hBUkRJTkdfUFJPVE9DT0wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IElHTk9SRV9TSEFSRElOR19QUk9UT0NPTCkgPiAwOwotCi0gIC8vIExpc3RzIHRo
ZSB0ZXN0cyBhbmQgZXhpdHMgaWYgdGhlIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnIHdhcyBzcGVj
aWZpZWQuCi0gIGlmIChHVEVTVF9GTEFHKGxpc3RfdGVzdHMpKSB7Ci0gICAgLy8gVGhpcyBtdXN0
IGJlIGNhbGxlZCAqYWZ0ZXIqIEZpbHRlclRlc3RzKCkgaGFzIGJlZW4gY2FsbGVkLgotICAgIExp
c3RUZXN0c01hdGNoaW5nRmlsdGVyKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICByYW5k
b21fc2VlZF8gPSBHVEVTVF9GTEFHKHNodWZmbGUpID8KLSAgICAgIEdldFJhbmRvbVNlZWRGcm9t
RmxhZyhHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSkgOiAwOwotCi0gIC8vIFRydWUgaWZmIGF0IGxl
YXN0IG9uZSB0ZXN0IGhhcyBmYWlsZWQuCi0gIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0KLSAgVGVz
dEV2ZW50TGlzdGVuZXIqIHJlcGVhdGVyID0gbGlzdGVuZXJzKCktPnJlcGVhdGVyKCk7Ci0KLSAg
c3RhcnRfdGltZXN0YW1wXyA9IEdldFRpbWVJbk1pbGxpcygpOwotICByZXBlYXRlci0+T25UZXN0
UHJvZ3JhbVN0YXJ0KCpwYXJlbnRfKTsKLQotICAvLyBIb3cgbWFueSB0aW1lcyB0byByZXBlYXQg
dGhlIHRlc3RzPyAgV2UgZG9uJ3Qgd2FudCB0byByZXBlYXQgdGhlbQotICAvLyB3aGVuIHdlIGFy
ZSBpbnNpZGUgdGhlIHN1YnByb2Nlc3Mgb2YgYSBkZWF0aCB0ZXN0LgotICBjb25zdCBpbnQgcmVw
ZWF0ID0gaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCA/IDEgOiBHVEVTVF9GTEFHKHJlcGVh
dCk7Ci0gIC8vIFJlcGVhdHMgZm9yZXZlciBpZiB0aGUgcmVwZWF0IGNvdW50IGlzIG5lZ2F0aXZl
LgotICBjb25zdCBib29sIGZvcmV2ZXIgPSByZXBlYXQgPCAwOwotICBmb3IgKGludCBpID0gMDsg
Zm9yZXZlciB8fCBpICE9IHJlcGVhdDsgaSsrKSB7Ci0gICAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2
ZSBmYWlsdXJlcyBnZW5lcmF0ZWQgYnkgYWQtaG9jIHRlc3QKLSAgICAvLyBhc3NlcnRpb25zIGV4
ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkuCi0gICAgQ2xlYXJOb25BZEhvY1Rlc3RSZXN1
bHQoKTsKLQotICAgIGNvbnN0IFRpbWVJbk1pbGxpcyBzdGFydCA9IEdldFRpbWVJbk1pbGxpcygp
OwotCi0gICAgLy8gU2h1ZmZsZXMgdGVzdCBjYXNlcyBhbmQgdGVzdHMgaWYgcmVxdWVzdGVkLgot
ICAgIGlmIChoYXNfdGVzdHNfdG9fcnVuICYmIEdURVNUX0ZMQUcoc2h1ZmZsZSkpIHsKLSAgICAg
IHJhbmRvbSgpLT5SZXNlZWQocmFuZG9tX3NlZWRfKTsKLSAgICAgIC8vIFRoaXMgc2hvdWxkIGJl
IGRvbmUgYmVmb3JlIGNhbGxpbmcgT25UZXN0SXRlcmF0aW9uU3RhcnQoKSwKLSAgICAgIC8vIHN1
Y2ggdGhhdCBhIHRlc3QgZXZlbnQgbGlzdGVuZXIgY2FuIHNlZSB0aGUgYWN0dWFsIHRlc3Qgb3Jk
ZXIKLSAgICAgIC8vIGluIHRoZSBldmVudC4KLSAgICAgIFNodWZmbGVUZXN0cygpOwotICAgIH0K
LQotICAgIC8vIFRlbGxzIHRoZSB1bml0IHRlc3QgZXZlbnQgbGlzdGVuZXJzIHRoYXQgdGhlIHRl
c3RzIGFyZSBhYm91dCB0byBzdGFydC4KLSAgICByZXBlYXRlci0+T25UZXN0SXRlcmF0aW9uU3Rh
cnQoKnBhcmVudF8sIGkpOwotCi0gICAgLy8gUnVucyBlYWNoIHRlc3QgY2FzZSBpZiB0aGVyZSBp
cyBhdCBsZWFzdCBvbmUgdGVzdCB0byBydW4uCi0gICAgaWYgKGhhc190ZXN0c190b19ydW4pIHsK
LSAgICAgIC8vIFNldHMgdXAgYWxsIGVudmlyb25tZW50cyBiZWZvcmVoYW5kLgotICAgICAgcmVw
ZWF0ZXItPk9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCgqcGFyZW50Xyk7Ci0gICAgICBGb3JFYWNo
KGVudmlyb25tZW50c18sIFNldFVwRW52aXJvbm1lbnQpOwotICAgICAgcmVwZWF0ZXItPk9uRW52
aXJvbm1lbnRzU2V0VXBFbmQoKnBhcmVudF8pOwotCi0gICAgICAvLyBSdW5zIHRoZSB0ZXN0cyBv
bmx5IGlmIHRoZXJlIHdhcyBubyBmYXRhbCBmYWlsdXJlIGR1cmluZyBnbG9iYWwKLSAgICAgIC8v
IHNldC11cC4KLSAgICAgIGlmICghVGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHsKLSAgICAgICAg
Zm9yIChpbnQgdGVzdF9pbmRleCA9IDA7IHRlc3RfaW5kZXggPCB0b3RhbF90ZXN0X2Nhc2VfY291
bnQoKTsKLSAgICAgICAgICAgICB0ZXN0X2luZGV4KyspIHsKLSAgICAgICAgICBHZXRNdXRhYmxl
VGVzdENhc2UodGVzdF9pbmRleCktPlJ1bigpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAg
IC8vIFRlYXJzIGRvd24gYWxsIGVudmlyb25tZW50cyBpbiByZXZlcnNlIG9yZGVyIGFmdGVyd2Fy
ZHMuCi0gICAgICByZXBlYXRlci0+T25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0KCpwYXJlbnRf
KTsKLSAgICAgIHN0ZDo6Zm9yX2VhY2goZW52aXJvbm1lbnRzXy5yYmVnaW4oKSwgZW52aXJvbm1l
bnRzXy5yZW5kKCksCi0gICAgICAgICAgICAgICAgICAgIFRlYXJEb3duRW52aXJvbm1lbnQpOwot
ICAgICAgcmVwZWF0ZXItPk9uRW52aXJvbm1lbnRzVGVhckRvd25FbmQoKnBhcmVudF8pOwotICAg
IH0KLQotICAgIGVsYXBzZWRfdGltZV8gPSBHZXRUaW1lSW5NaWxsaXMoKSAtIHN0YXJ0OwotCi0g
ICAgLy8gVGVsbHMgdGhlIHVuaXQgdGVzdCBldmVudCBsaXN0ZW5lciB0aGF0IHRoZSB0ZXN0cyBo
YXZlIGp1c3QgZmluaXNoZWQuCi0gICAgcmVwZWF0ZXItPk9uVGVzdEl0ZXJhdGlvbkVuZCgqcGFy
ZW50XywgaSk7Ci0KLSAgICAvLyBHZXRzIHRoZSByZXN1bHQgYW5kIGNsZWFycyBpdC4KLSAgICBp
ZiAoIVBhc3NlZCgpKSB7Ci0gICAgICBmYWlsZWQgPSB0cnVlOwotICAgIH0KLQotICAgIC8vIFJl
c3RvcmVzIHRoZSBvcmlnaW5hbCB0ZXN0IG9yZGVyIGFmdGVyIHRoZSBpdGVyYXRpb24uICBUaGlz
Ci0gICAgLy8gYWxsb3dzIHRoZSB1c2VyIHRvIHF1aWNrbHkgcmVwcm8gYSBmYWlsdXJlIHRoYXQg
aGFwcGVucyBpbiB0aGUKLSAgICAvLyBOLXRoIGl0ZXJhdGlvbiB3aXRob3V0IHJlcGVhdGluZyB0
aGUgZmlyc3QgKE4gLSAxKSBpdGVyYXRpb25zLgotICAgIC8vIFRoaXMgaXMgbm90IGVuY2xvc2Vk
IGluICJpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgeyAuLi4gfSIsIGluCi0gICAgLy8gY2FzZSB0
aGUgdXNlciBzb21laG93IGNoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIHNvbWV3aGVyZQot
ICAgIC8vIChpdCdzIGFsd2F5cyBzYWZlIHRvIHVuc2h1ZmZsZSB0aGUgdGVzdHMpLgotICAgIFVu
c2h1ZmZsZVRlc3RzKCk7Ci0KLSAgICBpZiAoR1RFU1RfRkxBRyhzaHVmZmxlKSkgewotICAgICAg
Ly8gUGlja3MgYSBuZXcgcmFuZG9tIHNlZWQgZm9yIGVhY2ggaXRlcmF0aW9uLgotICAgICAgcmFu
ZG9tX3NlZWRfID0gR2V0TmV4dFJhbmRvbVNlZWQocmFuZG9tX3NlZWRfKTsKLSAgICB9Ci0gIH0K
LQotICByZXBlYXRlci0+T25UZXN0UHJvZ3JhbUVuZCgqcGFyZW50Xyk7Ci0KLSAgcmV0dXJuICFm
YWlsZWQ7Ci19Ci0KLS8vIFJlYWRzIHRoZSBHVEVTVF9TSEFSRF9TVEFUVVNfRklMRSBlbnZpcm9u
bWVudCB2YXJpYWJsZSwgYW5kIGNyZWF0ZXMgdGhlIGZpbGUKLS8vIGlmIHRoZSB2YXJpYWJsZSBp
cyBwcmVzZW50LiBJZiBhIGZpbGUgYWxyZWFkeSBleGlzdHMgYXQgdGhpcyBsb2NhdGlvbiwgdGhp
cwotLy8gZnVuY3Rpb24gd2lsbCB3cml0ZSBvdmVyIGl0LiBJZiB0aGUgdmFyaWFibGUgaXMgcHJl
c2VudCwgYnV0IHRoZSBmaWxlIGNhbm5vdAotLy8gYmUgY3JlYXRlZCwgcHJpbnRzIGFuIGVycm9y
IGFuZCBleGl0cy4KLXZvaWQgV3JpdGVUb1NoYXJkU3RhdHVzRmlsZUlmTmVlZGVkKCkgewotICBj
b25zdCBjaGFyKiBjb25zdCB0ZXN0X3NoYXJkX2ZpbGUgPSBwb3NpeDo6R2V0RW52KGtUZXN0U2hh
cmRTdGF0dXNGaWxlKTsKLSAgaWYgKHRlc3Rfc2hhcmRfZmlsZSAhPSBOVUxMKSB7Ci0gICAgRklM
RSogY29uc3QgZmlsZSA9IHBvc2l4OjpGT3Blbih0ZXN0X3NoYXJkX2ZpbGUsICJ3Iik7Ci0gICAg
aWYgKGZpbGUgPT0gTlVMTCkgewotICAgICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsCi0gICAg
ICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgd3JpdGUgdG8gdGhlIHRlc3Qgc2hhcmQgc3RhdHVz
IGZpbGUgXCIlc1wiICIKLSAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCBieSB0aGUgJXMg
ZW52aXJvbm1lbnQgdmFyaWFibGUuXG4iLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3NoYXJk
X2ZpbGUsIGtUZXN0U2hhcmRTdGF0dXNGaWxlKTsKLSAgICAgIGZmbHVzaChzdGRvdXQpOwotICAg
ICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICAgIH0KLSAgICBmY2xvc2UoZmlsZSk7Ci0gIH0KLX0K
LQotLy8gQ2hlY2tzIHdoZXRoZXIgc2hhcmRpbmcgaXMgZW5hYmxlZCBieSBleGFtaW5pbmcgdGhl
IHJlbGV2YW50Ci0vLyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMuIElmIHRoZSB2YXJpYWJs
ZXMgYXJlIHByZXNlbnQsCi0vLyBidXQgaW5jb25zaXN0ZW50IChpLmUuLCBzaGFyZF9pbmRleCA+
PSB0b3RhbF9zaGFyZHMpLCBwcmludHMKLS8vIGFuIGVycm9yIGFuZCBleGl0cy4gSWYgaW5fc3Vi
cHJvY2Vzc19mb3JfZGVhdGhfdGVzdCwgc2hhcmRpbmcgaXMKLS8vIGRpc2FibGVkIGJlY2F1c2Ug
aXQgbXVzdCBvbmx5IGJlIGFwcGxpZWQgdG8gdGhlIG9yaWdpbmFsIHRlc3QKLS8vIHByb2Nlc3Mu
IE90aGVyd2lzZSwgd2UgY291bGQgZmlsdGVyIG91dCBkZWF0aCB0ZXN0cyB3ZSBpbnRlbmRlZCB0
byBleGVjdXRlLgotYm9vbCBTaG91bGRTaGFyZChjb25zdCBjaGFyKiB0b3RhbF9zaGFyZHNfZW52
LAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzaGFyZF9pbmRleF9lbnYsCi0gICAgICAg
ICAgICAgICAgIGJvb2wgaW5fc3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCkgewotICBpZiAoaW5f
c3VicHJvY2Vzc19mb3JfZGVhdGhfdGVzdCkgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0g
IGNvbnN0IEludDMyIHRvdGFsX3NoYXJkcyA9IEludDMyRnJvbUVudk9yRGllKHRvdGFsX3NoYXJk
c19lbnYsIC0xKTsKLSAgY29uc3QgSW50MzIgc2hhcmRfaW5kZXggPSBJbnQzMkZyb21FbnZPckRp
ZShzaGFyZF9pbmRleF9lbnYsIC0xKTsKLQotICBpZiAodG90YWxfc2hhcmRzID09IC0xICYmIHNo
YXJkX2luZGV4ID09IC0xKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9IGVsc2UgaWYgKHRvdGFs
X3NoYXJkcyA9PSAtMSAmJiBzaGFyZF9pbmRleCAhPSAtMSkgewotICAgIGNvbnN0IE1lc3NhZ2Ug
bXNnID0gTWVzc2FnZSgpCi0gICAgICA8PCAiSW52YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6
IHlvdSBoYXZlICIKLSAgICAgIDw8IGtUZXN0U2hhcmRJbmRleCA8PCAiID0gIiA8PCBzaGFyZF9p
bmRleAotICAgICAgPDwgIiwgYnV0IGhhdmUgbGVmdCAiIDw8IGtUZXN0VG90YWxTaGFyZHMgPDwg
IiB1bnNldC5cbiI7Ci0gICAgQ29sb3JlZFByaW50ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRT
dHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJ
TFVSRSk7Ci0gIH0gZWxzZSBpZiAodG90YWxfc2hhcmRzICE9IC0xICYmIHNoYXJkX2luZGV4ID09
IC0xKSB7Ci0gICAgY29uc3QgTWVzc2FnZSBtc2cgPSBNZXNzYWdlKCkKLSAgICAgIDw8ICJJbnZh
bGlkIGVudmlyb25tZW50IHZhcmlhYmxlczogeW91IGhhdmUgIgotICAgICAgPDwga1Rlc3RUb3Rh
bFNoYXJkcyA8PCAiID0gIiA8PCB0b3RhbF9zaGFyZHMKLSAgICAgIDw8ICIsIGJ1dCBoYXZlIGxl
ZnQgIiA8PCBrVGVzdFNoYXJkSW5kZXggPDwgIiB1bnNldC5cbiI7Ci0gICAgQ29sb3JlZFByaW50
ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1c2go
c3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0gZWxzZSBpZiAoc2hhcmRfaW5k
ZXggPCAwIHx8IHNoYXJkX2luZGV4ID49IHRvdGFsX3NoYXJkcykgewotICAgIGNvbnN0IE1lc3Nh
Z2UgbXNnID0gTWVzc2FnZSgpCi0gICAgICA8PCAiSW52YWxpZCBlbnZpcm9ubWVudCB2YXJpYWJs
ZXM6IHdlIHJlcXVpcmUgMCA8PSAiCi0gICAgICA8PCBrVGVzdFNoYXJkSW5kZXggPDwgIiA8ICIg
PDwga1Rlc3RUb3RhbFNoYXJkcwotICAgICAgPDwgIiwgYnV0IHlvdSBoYXZlICIgPDwga1Rlc3RT
aGFyZEluZGV4IDw8ICI9IiA8PCBzaGFyZF9pbmRleAotICAgICAgPDwgIiwgIiA8PCBrVGVzdFRv
dGFsU2hhcmRzIDw8ICI9IiA8PCB0b3RhbF9zaGFyZHMgPDwgIi5cbiI7Ci0gICAgQ29sb3JlZFBy
aW50ZihDT0xPUl9SRUQsICIlcyIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLSAgICBmZmx1
c2goc3Rkb3V0KTsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci0gIH0KLQotICByZXR1cm4gdG90
YWxfc2hhcmRzID4gMTsKLX0KLQotLy8gUGFyc2VzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB2
YXIgYXMgYW4gSW50MzIuIElmIGl0IGlzIHVuc2V0LAotLy8gcmV0dXJucyBkZWZhdWx0X3ZhbC4g
SWYgaXQgaXMgbm90IGFuIEludDMyLCBwcmludHMgYW4gZXJyb3IKLS8vIGFuZCBhYm9ydHMuCi1J
bnQzMiBJbnQzMkZyb21FbnZPckRpZShjb25zdCBjaGFyKiB2YXIsIEludDMyIGRlZmF1bHRfdmFs
KSB7Ci0gIGNvbnN0IGNoYXIqIHN0cl92YWwgPSBwb3NpeDo6R2V0RW52KHZhcik7Ci0gIGlmIChz
dHJfdmFsID09IE5VTEwpIHsKLSAgICByZXR1cm4gZGVmYXVsdF92YWw7Ci0gIH0KLQotICBJbnQz
MiByZXN1bHQ7Ci0gIGlmICghUGFyc2VJbnQzMihNZXNzYWdlKCkgPDwgIlRoZSB2YWx1ZSBvZiBl
bnZpcm9ubWVudCB2YXJpYWJsZSAiIDw8IHZhciwKLSAgICAgICAgICAgICAgICAgIHN0cl92YWws
ICZyZXN1bHQpKSB7Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOwotICB9Ci0gIHJldHVybiByZXN1
bHQ7Ci19Ci0KLS8vIEdpdmVuIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzLCB0aGUgc2hhcmQg
aW5kZXgsIGFuZCB0aGUgdGVzdCBpZCwKLS8vIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHRlc3Qgc2hv
dWxkIGJlIHJ1biBvbiB0aGlzIHNoYXJkLiBUaGUgdGVzdCBpZCBpcwotLy8gc29tZSBhcmJpdHJh
cnkgYnV0IHVuaXF1ZSBub24tbmVnYXRpdmUgaW50ZWdlciBhc3NpZ25lZCB0byBlYWNoIHRlc3QK
LS8vIG1ldGhvZC4gQXNzdW1lcyB0aGF0IDAgPD0gc2hhcmRfaW5kZXggPCB0b3RhbF9zaGFyZHMu
Ci1ib29sIFNob3VsZFJ1blRlc3RPblNoYXJkKGludCB0b3RhbF9zaGFyZHMsIGludCBzaGFyZF9p
bmRleCwgaW50IHRlc3RfaWQpIHsKLSAgcmV0dXJuICh0ZXN0X2lkICUgdG90YWxfc2hhcmRzKSA9
PSBzaGFyZF9pbmRleDsKLX0KLQotLy8gQ29tcGFyZXMgdGhlIG5hbWUgb2YgZWFjaCB0ZXN0IHdp
dGggdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciB0bwotLy8gZGVjaWRlIHdoZXRoZXIgdGhlIHRl
c3Qgc2hvdWxkIGJlIHJ1biwgdGhlbiByZWNvcmRzIHRoZSByZXN1bHQgaW4KLS8vIGVhY2ggVGVz
dENhc2UgYW5kIFRlc3RJbmZvIG9iamVjdC4KLS8vIElmIHNoYXJkX3Rlc3RzID09IHRydWUsIGZ1
cnRoZXIgZmlsdGVycyB0ZXN0cyBiYXNlZCBvbiBzaGFyZGluZwotLy8gdmFyaWFibGVzIGluIHRo
ZSBlbnZpcm9ubWVudCAtIHNlZQotLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZXRl
c3Qvd2lraS9Hb29nbGVUZXN0QWR2YW5jZWRHdWlkZS4KLS8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiB0ZXN0cyB0aGF0IHNob3VsZCBydW4uCi1pbnQgVW5pdFRlc3RJbXBsOjpGaWx0ZXJUZXN0cyhS
ZWFjdGlvblRvU2hhcmRpbmcgc2hhcmRfdGVzdHMpIHsKLSAgY29uc3QgSW50MzIgdG90YWxfc2hh
cmRzID0gc2hhcmRfdGVzdHMgPT0gSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wgPwotICAgICAgSW50
MzJGcm9tRW52T3JEaWUoa1Rlc3RUb3RhbFNoYXJkcywgLTEpIDogLTE7Ci0gIGNvbnN0IEludDMy
IHNoYXJkX2luZGV4ID0gc2hhcmRfdGVzdHMgPT0gSE9OT1JfU0hBUkRJTkdfUFJPVE9DT0wgPwot
ICAgICAgSW50MzJGcm9tRW52T3JEaWUoa1Rlc3RTaGFyZEluZGV4LCAtMSkgOiAtMTsKLQotICAv
LyBudW1fcnVubmFibGVfdGVzdHMgYXJlIHRoZSBudW1iZXIgb2YgdGVzdHMgdGhhdCB3aWxsCi0g
IC8vIHJ1biBhY3Jvc3MgYWxsIHNoYXJkcyAoaS5lLiwgbWF0Y2ggZmlsdGVyIGFuZCBhcmUgbm90
IGRpc2FibGVkKS4KLSAgLy8gbnVtX3NlbGVjdGVkX3Rlc3RzIGFyZSB0aGUgbnVtYmVyIG9mIHRl
c3RzIHRvIGJlIHJ1biBvbgotICAvLyB0aGlzIHNoYXJkLgotICBpbnQgbnVtX3J1bm5hYmxlX3Rl
c3RzID0gMDsKLSAgaW50IG51bV9zZWxlY3RlZF90ZXN0cyA9IDA7Ci0gIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKLSAgICBUZXN0Q2FzZSogY29uc3Qg
dGVzdF9jYXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3Rf
Y2FzZV9uYW1lID0gdGVzdF9jYXNlLT5uYW1lKCk7Ci0gICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxk
X3J1bihmYWxzZSk7Ci0KLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVz
dF9pbmZvX2xpc3QoKS5zaXplKCk7IGorKykgewotICAgICAgVGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9IHRlc3RfY2FzZS0+dGVzdF9pbmZvX2xpc3QoKVtqXTsKLSAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHRlc3RfbmFtZSh0ZXN0X2luZm8tPm5hbWUoKSk7Ci0gICAgICAvLyBBIHRlc3QgaXMg
ZGlzYWJsZWQgaWYgdGVzdCBjYXNlIG5hbWUgb3IgdGVzdCBuYW1lIG1hdGNoZXMKLSAgICAgIC8v
IGtEaXNhYmxlVGVzdEZpbHRlci4KLSAgICAgIGNvbnN0IGJvb2wgaXNfZGlzYWJsZWQgPQotICAg
ICAgICAgIGludGVybmFsOjpVbml0VGVzdE9wdGlvbnM6Ok1hdGNoZXNGaWx0ZXIodGVzdF9jYXNl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrRGlzYWJsZVRlc3RGaWx0ZXIpIHx8Ci0gICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0
aW9uczo6TWF0Y2hlc0ZpbHRlcih0ZXN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrRGlzYWJsZVRlc3RGaWx0ZXIpOwotICAgICAgdGVz
dF9pbmZvLT5pc19kaXNhYmxlZF8gPSBpc19kaXNhYmxlZDsKLQotICAgICAgY29uc3QgYm9vbCBt
YXRjaGVzX2ZpbHRlciA9Ci0gICAgICAgICAgaW50ZXJuYWw6OlVuaXRUZXN0T3B0aW9uczo6Rmls
dGVyTWF0Y2hlc1Rlc3QodGVzdF9jYXNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lKTsKLSAgICAgIHRlc3RfaW5m
by0+bWF0Y2hlc19maWx0ZXJfID0gbWF0Y2hlc19maWx0ZXI7Ci0KLSAgICAgIGNvbnN0IGJvb2wg
aXNfcnVubmFibGUgPQotICAgICAgICAgIChHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzKSB8fCAhaXNfZGlzYWJsZWQpICYmCi0gICAgICAgICAgbWF0Y2hlc19maWx0ZXI7Ci0KLSAg
ICAgIGNvbnN0IGJvb2wgaXNfc2VsZWN0ZWQgPSBpc19ydW5uYWJsZSAmJgotICAgICAgICAgIChz
aGFyZF90ZXN0cyA9PSBJR05PUkVfU0hBUkRJTkdfUFJPVE9DT0wgfHwKLSAgICAgICAgICAgU2hv
dWxkUnVuVGVzdE9uU2hhcmQodG90YWxfc2hhcmRzLCBzaGFyZF9pbmRleCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtX3J1bm5hYmxlX3Rlc3RzKSk7Ci0KLSAgICAgIG51bV9y
dW5uYWJsZV90ZXN0cyArPSBpc19ydW5uYWJsZTsKLSAgICAgIG51bV9zZWxlY3RlZF90ZXN0cyAr
PSBpc19zZWxlY3RlZDsKLQotICAgICAgdGVzdF9pbmZvLT5zaG91bGRfcnVuXyA9IGlzX3NlbGVj
dGVkOwotICAgICAgdGVzdF9jYXNlLT5zZXRfc2hvdWxkX3J1bih0ZXN0X2Nhc2UtPnNob3VsZF9y
dW4oKSB8fCBpc19zZWxlY3RlZCk7Ci0gICAgfQotICB9Ci0gIHJldHVybiBudW1fc2VsZWN0ZWRf
dGVzdHM7Ci19Ci0KLS8vIFByaW50cyB0aGUgZ2l2ZW4gQy1zdHJpbmcgb24gYSBzaW5nbGUgbGlu
ZSBieSByZXBsYWNpbmcgYWxsICdcbicKLS8vIGNoYXJhY3RlcnMgd2l0aCBzdHJpbmcgIlxcbiIu
ICBJZiB0aGUgb3V0cHV0IHRha2VzIG1vcmUgdGhhbgotLy8gbWF4X2xlbmd0aCBjaGFyYWN0ZXJz
LCBvbmx5IHByaW50cyB0aGUgZmlyc3QgbWF4X2xlbmd0aCBjaGFyYWN0ZXJzCi0vLyBhbmQgIi4u
LiIuCi1zdGF0aWMgdm9pZCBQcmludE9uT25lTGluZShjb25zdCBjaGFyKiBzdHIsIGludCBtYXhf
bGVuZ3RoKSB7Ci0gIGlmIChzdHIgIT0gTlVMTCkgewotICAgIGZvciAoaW50IGkgPSAwOyAqc3Ry
ICE9ICdcMCc7ICsrc3RyKSB7Ci0gICAgICBpZiAoaSA+PSBtYXhfbGVuZ3RoKSB7Ci0gICAgICAg
IHByaW50ZigiLi4uIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgaWYgKCpzdHIg
PT0gJ1xuJykgewotICAgICAgICBwcmludGYoIlxcbiIpOwotICAgICAgICBpICs9IDI7Ci0gICAg
ICB9IGVsc2UgewotICAgICAgICBwcmludGYoIiVjIiwgKnN0cik7Ci0gICAgICAgICsraTsKLSAg
ICAgIH0KLSAgICB9Ci0gIH0KLX0KLQotLy8gUHJpbnRzIHRoZSBuYW1lcyBvZiB0aGUgdGVzdHMg
bWF0Y2hpbmcgdGhlIHVzZXItc3BlY2lmaWVkIGZpbHRlciBmbGFnLgotdm9pZCBVbml0VGVzdElt
cGw6Okxpc3RUZXN0c01hdGNoaW5nRmlsdGVyKCkgewotICAvLyBQcmludCBhdCBtb3N0IHRoaXMg
bWFueSBjaGFyYWN0ZXJzIGZvciBlYWNoIHR5cGUvdmFsdWUgcGFyYW1ldGVyLgotICBjb25zdCBp
bnQga01heFBhcmFtTGVuZ3RoID0gMjUwOwotCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVz
dF9jYXNlc18uc2l6ZSgpOyBpKyspIHsKLSAgICBjb25zdCBUZXN0Q2FzZSogY29uc3QgdGVzdF9j
YXNlID0gdGVzdF9jYXNlc19baV07Ci0gICAgYm9vbCBwcmludGVkX3Rlc3RfY2FzZV9uYW1lID0g
ZmFsc2U7Ci0KLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHRlc3RfY2FzZS0+dGVzdF9pbmZv
X2xpc3QoKS5zaXplKCk7IGorKykgewotICAgICAgY29uc3QgVGVzdEluZm8qIGNvbnN0IHRlc3Rf
aW5mbyA9Ci0gICAgICAgICAgdGVzdF9jYXNlLT50ZXN0X2luZm9fbGlzdCgpW2pdOwotICAgICAg
aWYgKHRlc3RfaW5mby0+bWF0Y2hlc19maWx0ZXJfKSB7Ci0gICAgICAgIGlmICghcHJpbnRlZF90
ZXN0X2Nhc2VfbmFtZSkgewotICAgICAgICAgIHByaW50ZWRfdGVzdF9jYXNlX25hbWUgPSB0cnVl
OwotICAgICAgICAgIHByaW50ZigiJXMuIiwgdGVzdF9jYXNlLT5uYW1lKCkpOwotICAgICAgICAg
IGlmICh0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBwcmlu
dGYoIiAgIyAlcyA9ICIsIGtUeXBlUGFyYW1MYWJlbCk7Ci0gICAgICAgICAgICAvLyBXZSBwcmlu
dCB0aGUgdHlwZSBwYXJhbWV0ZXIgb24gYSBzaW5nbGUgbGluZSB0byBtYWtlCi0gICAgICAgICAg
ICAvLyB0aGUgb3V0cHV0IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgotICAgICAgICAgICAg
UHJpbnRPbk9uZUxpbmUodGVzdF9jYXNlLT50eXBlX3BhcmFtKCksIGtNYXhQYXJhbUxlbmd0aCk7
Ci0gICAgICAgICAgfQotICAgICAgICAgIHByaW50ZigiXG4iKTsKLSAgICAgICAgfQotICAgICAg
ICBwcmludGYoIiAgJXMiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Ci0gICAgICAgIGlmICh0ZXN0X2lu
Zm8tPnZhbHVlX3BhcmFtKCkgIT0gTlVMTCkgewotICAgICAgICAgIHByaW50ZigiICAjICVzID0g
Iiwga1ZhbHVlUGFyYW1MYWJlbCk7Ci0gICAgICAgICAgLy8gV2UgcHJpbnQgdGhlIHZhbHVlIHBh
cmFtZXRlciBvbiBhIHNpbmdsZSBsaW5lIHRvIG1ha2UgdGhlCi0gICAgICAgICAgLy8gb3V0cHV0
IGVhc3kgdG8gcGFyc2UgYnkgYSBwcm9ncmFtLgotICAgICAgICAgIFByaW50T25PbmVMaW5lKHRl
c3RfaW5mby0+dmFsdWVfcGFyYW0oKSwga01heFBhcmFtTGVuZ3RoKTsKLSAgICAgICAgfQotICAg
ICAgICBwcmludGYoIlxuIik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIGZmbHVzaChzdGRvdXQp
OwotfQotCi0vLyBTZXRzIHRoZSBPUyBzdGFjayB0cmFjZSBnZXR0ZXIuCi0vLwotLy8gRG9lcyBu
b3RoaW5nIGlmIHRoZSBpbnB1dCBhbmQgdGhlIGN1cnJlbnQgT1Mgc3RhY2sgdHJhY2UgZ2V0dGVy
IGFyZQotLy8gdGhlIHNhbWU7IG90aGVyd2lzZSwgZGVsZXRlcyB0aGUgb2xkIGdldHRlciBhbmQg
bWFrZXMgdGhlIGlucHV0IHRoZQotLy8gY3VycmVudCBnZXR0ZXIuCi12b2lkIFVuaXRUZXN0SW1w
bDo6c2V0X29zX3N0YWNrX3RyYWNlX2dldHRlcigKLSAgICBPc1N0YWNrVHJhY2VHZXR0ZXJJbnRl
cmZhY2UqIGdldHRlcikgewotICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyAhPSBnZXR0ZXIp
IHsKLSAgICBkZWxldGUgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXzsKLSAgICBvc19zdGFja190cmFj
ZV9nZXR0ZXJfID0gZ2V0dGVyOwotICB9Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mg
c3RhY2sgdHJhY2UgZ2V0dGVyIGlmIGl0IGlzIG5vdCBOVUxMOwotLy8gb3RoZXJ3aXNlLCBjcmVh
dGVzIGFuIE9zU3RhY2tUcmFjZUdldHRlciwgbWFrZXMgaXQgdGhlIGN1cnJlbnQKLS8vIGdldHRl
ciwgYW5kIHJldHVybnMgaXQuCi1Pc1N0YWNrVHJhY2VHZXR0ZXJJbnRlcmZhY2UqIFVuaXRUZXN0
SW1wbDo6b3Nfc3RhY2tfdHJhY2VfZ2V0dGVyKCkgewotICBpZiAob3Nfc3RhY2tfdHJhY2VfZ2V0
dGVyXyA9PSBOVUxMKSB7Ci0jaWZkZWYgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVSXwotICAg
IG9zX3N0YWNrX3RyYWNlX2dldHRlcl8gPSBuZXcgR1RFU1RfT1NfU1RBQ0tfVFJBQ0VfR0VUVEVS
XzsKLSNlbHNlCi0gICAgb3Nfc3RhY2tfdHJhY2VfZ2V0dGVyXyA9IG5ldyBPc1N0YWNrVHJhY2VH
ZXR0ZXI7Ci0jZW5kaWYgIC8vIEdURVNUX09TX1NUQUNLX1RSQUNFX0dFVFRFUl8KLSAgfQotCi0g
IHJldHVybiBvc19zdGFja190cmFjZV9nZXR0ZXJfOwotfQotCi0vLyBSZXR1cm5zIHRoZSBUZXN0
UmVzdWx0IGZvciB0aGUgdGVzdCB0aGF0J3MgY3VycmVudGx5IHJ1bm5pbmcsIG9yCi0vLyB0aGUg
VGVzdFJlc3VsdCBmb3IgdGhlIGFkIGhvYyB0ZXN0IGlmIG5vIHRlc3QgaXMgcnVubmluZy4KLVRl
c3RSZXN1bHQqIFVuaXRUZXN0SW1wbDo6Y3VycmVudF90ZXN0X3Jlc3VsdCgpIHsKLSAgcmV0dXJu
IGN1cnJlbnRfdGVzdF9pbmZvXyA/Ci0gICAgICAmKGN1cnJlbnRfdGVzdF9pbmZvXy0+cmVzdWx0
XykgOiAmYWRfaG9jX3Rlc3RfcmVzdWx0XzsKLX0KLQotLy8gU2h1ZmZsZXMgYWxsIHRlc3QgY2Fz
ZXMsIGFuZCB0aGUgdGVzdHMgd2l0aGluIGVhY2ggdGVzdCBjYXNlLAotLy8gbWFraW5nIHN1cmUg
dGhhdCBkZWF0aCB0ZXN0cyBhcmUgc3RpbGwgcnVuIGZpcnN0Lgotdm9pZCBVbml0VGVzdEltcGw6
OlNodWZmbGVUZXN0cygpIHsKLSAgLy8gU2h1ZmZsZXMgdGhlIGRlYXRoIHRlc3QgY2FzZXMuCi0g
IFNodWZmbGVSYW5nZShyYW5kb20oKSwgMCwgbGFzdF9kZWF0aF90ZXN0X2Nhc2VfICsgMSwgJnRl
c3RfY2FzZV9pbmRpY2VzXyk7Ci0KLSAgLy8gU2h1ZmZsZXMgdGhlIG5vbi1kZWF0aCB0ZXN0IGNh
c2VzLgotICBTaHVmZmxlUmFuZ2UocmFuZG9tKCksIGxhc3RfZGVhdGhfdGVzdF9jYXNlXyArIDEs
Ci0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRlc3RfY2FzZXNfLnNpemUoKSksICZ0
ZXN0X2Nhc2VfaW5kaWNlc18pOwotCi0gIC8vIFNodWZmbGVzIHRoZSB0ZXN0cyBpbnNpZGUgZWFj
aCB0ZXN0IGNhc2UuCi0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGVzdF9jYXNlc18uc2l6ZSgp
OyBpKyspIHsKLSAgICB0ZXN0X2Nhc2VzX1tpXS0+U2h1ZmZsZVRlc3RzKHJhbmRvbSgpKTsKLSAg
fQotfQotCi0vLyBSZXN0b3JlcyB0aGUgdGVzdCBjYXNlcyBhbmQgdGVzdHMgdG8gdGhlaXIgb3Jk
ZXIgYmVmb3JlIHRoZSBmaXJzdCBzaHVmZmxlLgotdm9pZCBVbml0VGVzdEltcGw6OlVuc2h1ZmZs
ZVRlc3RzKCkgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRlc3RfY2FzZXNfLnNpemUoKTsg
aSsrKSB7Ci0gICAgLy8gVW5zaHVmZmxlcyB0aGUgdGVzdHMgaW4gZWFjaCB0ZXN0IGNhc2UuCi0g
ICAgdGVzdF9jYXNlc19baV0tPlVuc2h1ZmZsZVRlc3RzKCk7Ci0gICAgLy8gUmVzZXRzIHRoZSBp
bmRleCBvZiBlYWNoIHRlc3QgY2FzZS4KLSAgICB0ZXN0X2Nhc2VfaW5kaWNlc19baV0gPSBzdGF0
aWNfY2FzdDxpbnQ+KGkpOwotICB9Ci19Ci0KLS8vIFJldHVybnMgdGhlIGN1cnJlbnQgT1Mgc3Rh
Y2sgdHJhY2UgYXMgYW4gc3RkOjpzdHJpbmcuCi0vLwotLy8gVGhlIG1heGltdW0gbnVtYmVyIG9m
IHN0YWNrIGZyYW1lcyB0byBiZSBpbmNsdWRlZCBpcyBzcGVjaWZpZWQgYnkKLS8vIHRoZSBndGVz
dF9zdGFja190cmFjZV9kZXB0aCBmbGFnLiAgVGhlIHNraXBfY291bnQgcGFyYW1ldGVyCi0vLyBz
cGVjaWZpZXMgdGhlIG51bWJlciBvZiB0b3AgZnJhbWVzIHRvIGJlIHNraXBwZWQsIHdoaWNoIGRv
ZXNuJ3QKLS8vIGNvdW50IGFnYWluc3QgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gYmUgaW5jbHVk
ZWQuCi0vLwotLy8gRm9yIGV4YW1wbGUsIGlmIEZvbygpIGNhbGxzIEJhcigpLCB3aGljaCBpbiB0
dXJuIGNhbGxzCi0vLyBHZXRDdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9wKC4uLiwgMSksIEZv
bygpIHdpbGwgYmUgaW5jbHVkZWQgaW4KLS8vIHRoZSB0cmFjZSBidXQgQmFyKCkgYW5kIEdldEN1
cnJlbnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoKSB3b24ndC4KLXN0ZDo6c3RyaW5nIEdldEN1cnJl
bnRPc1N0YWNrVHJhY2VFeGNlcHRUb3AoVW5pdFRlc3QqIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwX2NvdW50KSB7Ci0g
IC8vIFdlIHBhc3Mgc2tpcF9jb3VudCArIDEgdG8gc2tpcCB0aGlzIHdyYXBwZXIgZnVuY3Rpb24g
aW4gYWRkaXRpb24KLSAgLy8gdG8gd2hhdCB0aGUgdXNlciByZWFsbHkgd2FudHMgdG8gc2tpcC4K
LSAgcmV0dXJuIEdldFVuaXRUZXN0SW1wbCgpLT5DdXJyZW50T3NTdGFja1RyYWNlRXhjZXB0VG9w
KHNraXBfY291bnQgKyAxKTsKLX0KLQotLy8gVXNlZCBieSB0aGUgR1RFU1RfU1VQUFJFU1NfVU5S
RUFDSEFCTEVfQ09ERV9XQVJOSU5HX0JFTE9XXyBtYWNybyB0bwotLy8gc3VwcHJlc3MgdW5yZWFj
aGFibGUgY29kZSB3YXJuaW5ncy4KLW5hbWVzcGFjZSB7Ci1jbGFzcyBDbGFzc1VuaXF1ZVRvQWx3
YXlzVHJ1ZSB7fTsKLX0KLQotYm9vbCBJc1RydWUoYm9vbCBjb25kaXRpb24pIHsgcmV0dXJuIGNv
bmRpdGlvbjsgfQotCi1ib29sIEFsd2F5c1RydWUoKSB7Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElP
TlMKLSAgLy8gVGhpcyBjb25kaXRpb24gaXMgYWx3YXlzIGZhbHNlIHNvIEFsd2F5c1RydWUoKSBu
ZXZlciBhY3R1YWxseSB0aHJvd3MsCi0gIC8vIGJ1dCBpdCBtYWtlcyB0aGUgY29tcGlsZXIgdGhp
bmsgdGhhdCBpdCBtYXkgdGhyb3cuCi0gIGlmIChJc1RydWUoZmFsc2UpKQotICAgIHRocm93IENs
YXNzVW5pcXVlVG9BbHdheXNUcnVlKCk7Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05T
Ci0gIHJldHVybiB0cnVlOwotfQotCi0vLyBJZiAqcHN0ciBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4g
cHJlZml4LCBtb2RpZmllcyAqcHN0ciB0byBiZSByaWdodAotLy8gcGFzdCB0aGUgcHJlZml4IGFu
ZCByZXR1cm5zIHRydWU7IG90aGVyd2lzZSBsZWF2ZXMgKnBzdHIgdW5jaGFuZ2VkCi0vLyBhbmQg
cmV0dXJucyBmYWxzZS4gIE5vbmUgb2YgcHN0ciwgKnBzdHIsIGFuZCBwcmVmaXggY2FuIGJlIE5V
TEwuCi1ib29sIFNraXBQcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiogcHN0
cikgewotICBjb25zdCBzaXplX3QgcHJlZml4X2xlbiA9IHN0cmxlbihwcmVmaXgpOwotICBpZiAo
c3RybmNtcCgqcHN0ciwgcHJlZml4LCBwcmVmaXhfbGVuKSA9PSAwKSB7Ci0gICAgKnBzdHIgKz0g
cHJlZml4X2xlbjsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICByZXR1cm4gZmFsc2U7Ci19Ci0K
LS8vIFBhcnNlcyBhIHN0cmluZyBhcyBhIGNvbW1hbmQgbGluZSBmbGFnLiAgVGhlIHN0cmluZyBz
aG91bGQgaGF2ZQotLy8gdGhlIGZvcm1hdCAiLS1mbGFnPXZhbHVlIi4gIFdoZW4gZGVmX29wdGlv
bmFsIGlzIHRydWUsIHRoZSAiPXZhbHVlIgotLy8gcGFydCBjYW4gYmUgb21pdHRlZC4KLS8vCi0v
LyBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZywgb3IgTlVMTCBpZiB0aGUgcGFyc2luZyBm
YWlsZWQuCi1jb25zdCBjaGFyKiBQYXJzZUZsYWdWYWx1ZShjb25zdCBjaGFyKiBzdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmbGFnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBkZWZfb3B0aW9uYWwpIHsKLSAgLy8gc3RyIGFuZCBmbGFnIG11c3Qg
bm90IGJlIE5VTEwuCi0gIGlmIChzdHIgPT0gTlVMTCB8fCBmbGFnID09IE5VTEwpIHJldHVybiBO
VUxMOwotCi0gIC8vIFRoZSBmbGFnIG11c3Qgc3RhcnQgd2l0aCAiLS0iIGZvbGxvd2VkIGJ5IEdU
RVNUX0ZMQUdfUFJFRklYXy4KLSAgY29uc3Qgc3RkOjpzdHJpbmcgZmxhZ19zdHIgPSBzdGQ6OnN0
cmluZygiLS0iKSArIEdURVNUX0ZMQUdfUFJFRklYXyArIGZsYWc7Ci0gIGNvbnN0IHNpemVfdCBm
bGFnX2xlbiA9IGZsYWdfc3RyLmxlbmd0aCgpOwotICBpZiAoc3RybmNtcChzdHIsIGZsYWdfc3Ry
LmNfc3RyKCksIGZsYWdfbGVuKSAhPSAwKSByZXR1cm4gTlVMTDsKLQotICAvLyBTa2lwcyB0aGUg
ZmxhZyBuYW1lLgotICBjb25zdCBjaGFyKiBmbGFnX2VuZCA9IHN0ciArIGZsYWdfbGVuOwotCi0g
IC8vIFdoZW4gZGVmX29wdGlvbmFsIGlzIHRydWUsIGl0J3MgT0sgdG8gbm90IGhhdmUgYSAiPXZh
bHVlIiBwYXJ0LgotICBpZiAoZGVmX29wdGlvbmFsICYmIChmbGFnX2VuZFswXSA9PSAnXDAnKSkg
ewotICAgIHJldHVybiBmbGFnX2VuZDsKLSAgfQotCi0gIC8vIElmIGRlZl9vcHRpb25hbCBpcyB0
cnVlIGFuZCB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIGFmdGVyIHRoZQotICAvLyBmbGFnIG5h
bWUsIG9yIGlmIGRlZl9vcHRpb25hbCBpcyBmYWxzZSwgdGhlcmUgbXVzdCBiZSBhICc9JyBhZnRl
cgotICAvLyB0aGUgZmxhZyBuYW1lLgotICBpZiAoZmxhZ19lbmRbMF0gIT0gJz0nKSByZXR1cm4g
TlVMTDsKLQotICAvLyBSZXR1cm5zIHRoZSBzdHJpbmcgYWZ0ZXIgIj0iLgotICByZXR1cm4gZmxh
Z19lbmQgKyAxOwotfQotCi0vLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGEgYm9vbCBmbGFnLCBpbiB0
aGUgZm9ybSBvZiBlaXRoZXIKLS8vICItLWZsYWc9dmFsdWUiIG9yICItLWZsYWciLgotLy8KLS8v
IEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIHZhbHVlIGlzIHRha2VuIGFzIHRydWUgYXMgbG9uZyBh
cyBpdCBkb2VzCi0vLyBub3Qgc3RhcnQgd2l0aCAnMCcsICdmJywgb3IgJ0YnLgotLy8KLS8vIElu
IHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHZhbHVlIGlzIHRha2VuIGFzIHRydWUuCi0vLwotLy8gT24g
c3VjY2Vzcywgc3RvcmVzIHRoZSB2YWx1ZSBvZiB0aGUgZmxhZyBpbiAqdmFsdWUsIGFuZCByZXR1
cm5zCi0vLyB0cnVlLiAgT24gZmFpbHVyZSwgcmV0dXJucyBmYWxzZSB3aXRob3V0IGNoYW5naW5n
ICp2YWx1ZS4KLWJvb2wgUGFyc2VCb29sRmxhZyhjb25zdCBjaGFyKiBzdHIsIGNvbnN0IGNoYXIq
IGZsYWcsIGJvb2wqIHZhbHVlKSB7Ci0gIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFz
IGEgc3RyaW5nLgotICBjb25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1
ZShzdHIsIGZsYWcsIHRydWUpOwotCi0gIC8vIEFib3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQu
Ci0gIGlmICh2YWx1ZV9zdHIgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0gIC8vIENvbnZlcnRz
IHRoZSBzdHJpbmcgdmFsdWUgdG8gYSBib29sLgotICAqdmFsdWUgPSAhKCp2YWx1ZV9zdHIgPT0g
JzAnIHx8ICp2YWx1ZV9zdHIgPT0gJ2YnIHx8ICp2YWx1ZV9zdHIgPT0gJ0YnKTsKLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLS8vIFBhcnNlcyBhIHN0cmluZyBmb3IgYW4gSW50MzIgZmxhZywgaW4gdGhl
IGZvcm0gb2YKLS8vICItLWZsYWc9dmFsdWUiLgotLy8KLS8vIE9uIHN1Y2Nlc3MsIHN0b3JlcyB0
aGUgdmFsdWUgb2YgdGhlIGZsYWcgaW4gKnZhbHVlLCBhbmQgcmV0dXJucwotLy8gdHJ1ZS4gIE9u
IGZhaWx1cmUsIHJldHVybnMgZmFsc2Ugd2l0aG91dCBjaGFuZ2luZyAqdmFsdWUuCi1ib29sIFBh
cnNlSW50MzJGbGFnKGNvbnN0IGNoYXIqIHN0ciwgY29uc3QgY2hhciogZmxhZywgSW50MzIqIHZh
bHVlKSB7Ci0gIC8vIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBmbGFnIGFzIGEgc3RyaW5nLgotICBj
b25zdCBjaGFyKiBjb25zdCB2YWx1ZV9zdHIgPSBQYXJzZUZsYWdWYWx1ZShzdHIsIGZsYWcsIGZh
bHNlKTsKLQotICAvLyBBYm9ydHMgaWYgdGhlIHBhcnNpbmcgZmFpbGVkLgotICBpZiAodmFsdWVf
c3RyID09IE5VTEwpIHJldHVybiBmYWxzZTsKLQotICAvLyBTZXRzICp2YWx1ZSB0byB0aGUgdmFs
dWUgb2YgdGhlIGZsYWcuCi0gIHJldHVybiBQYXJzZUludDMyKE1lc3NhZ2UoKSA8PCAiVGhlIHZh
bHVlIG9mIGZsYWcgLS0iIDw8IGZsYWcsCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlX3N0ciwg
dmFsdWUpOwotfQotCi0vLyBQYXJzZXMgYSBzdHJpbmcgZm9yIGEgc3RyaW5nIGZsYWcsIGluIHRo
ZSBmb3JtIG9mCi0vLyAiLS1mbGFnPXZhbHVlIi4KLS8vCi0vLyBPbiBzdWNjZXNzLCBzdG9yZXMg
dGhlIHZhbHVlIG9mIHRoZSBmbGFnIGluICp2YWx1ZSwgYW5kIHJldHVybnMKLS8vIHRydWUuICBP
biBmYWlsdXJlLCByZXR1cm5zIGZhbHNlIHdpdGhvdXQgY2hhbmdpbmcgKnZhbHVlLgotYm9vbCBQ
YXJzZVN0cmluZ0ZsYWcoY29uc3QgY2hhciogc3RyLCBjb25zdCBjaGFyKiBmbGFnLCBzdGQ6OnN0
cmluZyogdmFsdWUpIHsKLSAgLy8gR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGZsYWcgYXMgYSBzdHJp
bmcuCi0gIGNvbnN0IGNoYXIqIGNvbnN0IHZhbHVlX3N0ciA9IFBhcnNlRmxhZ1ZhbHVlKHN0ciwg
ZmxhZywgZmFsc2UpOwotCi0gIC8vIEFib3J0cyBpZiB0aGUgcGFyc2luZyBmYWlsZWQuCi0gIGlm
ICh2YWx1ZV9zdHIgPT0gTlVMTCkgcmV0dXJuIGZhbHNlOwotCi0gIC8vIFNldHMgKnZhbHVlIHRv
IHRoZSB2YWx1ZSBvZiB0aGUgZmxhZy4KLSAgKnZhbHVlID0gdmFsdWVfc3RyOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIGhhcyBhIHByZWZpeCB0
aGF0IEdvb2dsZSBUZXN0IHVzZXMgZm9yIGl0cwotLy8gZmxhZ3MsIGkuZS4sIHN0YXJ0cyB3aXRo
IEdURVNUX0ZMQUdfUFJFRklYXyBvciBHVEVTVF9GTEFHX1BSRUZJWF9EQVNIXy4KLS8vIElmIEdv
b2dsZSBUZXN0IGRldGVjdHMgdGhhdCBhIGNvbW1hbmQgbGluZSBmbGFnIGhhcyBpdHMgcHJlZml4
IGJ1dCBpcyBub3QKLS8vIHJlY29nbml6ZWQsIGl0IHdpbGwgcHJpbnQgaXRzIGhlbHAgbWVzc2Fn
ZS4gRmxhZ3Mgc3RhcnRpbmcgd2l0aAotLy8gR1RFU1RfSU5URVJOQUxfUFJFRklYXyBmb2xsb3dl
ZCBieSAiaW50ZXJuYWxfIiBhcmUgY29uc2lkZXJlZCBHb29nbGUgVGVzdAotLy8gaW50ZXJuYWwg
ZmxhZ3MgYW5kIGRvIG5vdCB0cmlnZ2VyIHRoZSBoZWxwIG1lc3NhZ2UuCi1zdGF0aWMgYm9vbCBI
YXNHb29nbGVUZXN0RmxhZ1ByZWZpeChjb25zdCBjaGFyKiBzdHIpIHsKLSAgcmV0dXJuIChTa2lw
UHJlZml4KCItLSIsICZzdHIpIHx8Ci0gICAgICAgICAgU2tpcFByZWZpeCgiLSIsICZzdHIpIHx8
Ci0gICAgICAgICAgU2tpcFByZWZpeCgiLyIsICZzdHIpKSAmJgotICAgICAgICAgIVNraXBQcmVm
aXgoR1RFU1RfRkxBR19QUkVGSVhfICJpbnRlcm5hbF8iLCAmc3RyKSAmJgotICAgICAgICAgKFNr
aXBQcmVmaXgoR1RFU1RfRkxBR19QUkVGSVhfLCAmc3RyKSB8fAotICAgICAgICAgIFNraXBQcmVm
aXgoR1RFU1RfRkxBR19QUkVGSVhfREFTSF8sICZzdHIpKTsKLX0KLQotLy8gUHJpbnRzIGEgc3Ry
aW5nIGNvbnRhaW5pbmcgY29kZS1lbmNvZGVkIHRleHQuICBUaGUgZm9sbG93aW5nIGVzY2FwZQot
Ly8gc2VxdWVuY2VzIGNhbiBiZSB1c2VkIGluIHRoZSBzdHJpbmcgdG8gY29udHJvbCB0aGUgdGV4
dCBjb2xvcjoKLS8vCi0vLyAgIEBAICAgIHByaW50cyBhIHNpbmdsZSAnQCcgY2hhcmFjdGVyLgot
Ly8gICBAUiAgICBjaGFuZ2VzIHRoZSBjb2xvciB0byByZWQuCi0vLyAgIEBHICAgIGNoYW5nZXMg
dGhlIGNvbG9yIHRvIGdyZWVuLgotLy8gICBAWSAgICBjaGFuZ2VzIHRoZSBjb2xvciB0byB5ZWxs
b3cuCi0vLyAgIEBEICAgIGNoYW5nZXMgdG8gdGhlIGRlZmF1bHQgdGVybWluYWwgdGV4dCBjb2xv
ci4KLS8vCi0vLyBUT0RPKHdhbkBnb29nbGUuY29tKTogV3JpdGUgdGVzdHMgZm9yIHRoaXMgb25j
ZSB3ZSBhZGQgc3Rkb3V0Ci0vLyBjYXB0dXJpbmcgdG8gR29vZ2xlIFRlc3QuCi1zdGF0aWMgdm9p
ZCBQcmludENvbG9yRW5jb2RlZChjb25zdCBjaGFyKiBzdHIpIHsKLSAgR1Rlc3RDb2xvciBjb2xv
ciA9IENPTE9SX0RFRkFVTFQ7ICAvLyBUaGUgY3VycmVudCBjb2xvci4KLQotICAvLyBDb25jZXB0
dWFsbHksIHdlIHNwbGl0IHRoZSBzdHJpbmcgaW50byBzZWdtZW50cyBkaXZpZGVkIGJ5IGVzY2Fw
ZQotICAvLyBzZXF1ZW5jZXMuICBUaGVuIHdlIHByaW50IG9uZSBzZWdtZW50IGF0IGEgdGltZS4g
IEF0IHRoZSBlbmQgb2YKLSAgLy8gZWFjaCBpdGVyYXRpb24sIHRoZSBzdHIgcG9pbnRlciBhZHZh
bmNlcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZQotICAvLyBuZXh0IHNlZ21lbnQuCi0gIGZvciAo
OzspIHsKLSAgICBjb25zdCBjaGFyKiBwID0gc3RyY2hyKHN0ciwgJ0AnKTsKLSAgICBpZiAocCA9
PSBOVUxMKSB7Ci0gICAgICBDb2xvcmVkUHJpbnRmKGNvbG9yLCAiJXMiLCBzdHIpOwotICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIENvbG9yZWRQcmludGYoY29sb3IsICIlcyIsIHN0ZDo6c3Ry
aW5nKHN0ciwgcCkuY19zdHIoKSk7Ci0KLSAgICBjb25zdCBjaGFyIGNoID0gcFsxXTsKLSAgICBz
dHIgPSBwICsgMjsKLSAgICBpZiAoY2ggPT0gJ0AnKSB7Ci0gICAgICBDb2xvcmVkUHJpbnRmKGNv
bG9yLCAiQCIpOwotICAgIH0gZWxzZSBpZiAoY2ggPT0gJ0QnKSB7Ci0gICAgICBjb2xvciA9IENP
TE9SX0RFRkFVTFQ7Ci0gICAgfSBlbHNlIGlmIChjaCA9PSAnUicpIHsKLSAgICAgIGNvbG9yID0g
Q09MT1JfUkVEOwotICAgIH0gZWxzZSBpZiAoY2ggPT0gJ0cnKSB7Ci0gICAgICBjb2xvciA9IENP
TE9SX0dSRUVOOwotICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1knKSB7Ci0gICAgICBjb2xvciA9IENP
TE9SX1lFTExPVzsKLSAgICB9IGVsc2UgewotICAgICAgLS1zdHI7Ci0gICAgfQotICB9Ci19Ci0K
LXN0YXRpYyBjb25zdCBjaGFyIGtDb2xvckVuY29kZWRIZWxwTWVzc2FnZVtdID0KLSJUaGlzIHBy
b2dyYW0gY29udGFpbnMgdGVzdHMgd3JpdHRlbiB1c2luZyAiIEdURVNUX05BTUVfICIuIFlvdSBj
YW4gdXNlIHRoZVxuIgotImZvbGxvd2luZyBjb21tYW5kIGxpbmUgZmxhZ3MgdG8gY29udHJvbCBp
dHMgYmVoYXZpb3I6XG4iCi0iXG4iCi0iVGVzdCBTZWxlY3Rpb246XG4iCi0iICBARy0tIiBHVEVT
VF9GTEFHX1BSRUZJWF8gImxpc3RfdGVzdHNARFxuIgotIiAgICAgIExpc3QgdGhlIG5hbWVzIG9m
IGFsbCB0ZXN0cyBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlbS4gVGhlIG5hbWUgb2ZcbiIKLSIgICAg
ICBURVNUKEZvbywgQmFyKSBpcyBcIkZvby5CYXJcIi5cbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdf
UFJFRklYXyAiZmlsdGVyPUBZUE9TVElWRV9QQVRURVJOUyIKLSAgICAiW0BHLUBZTkVHQVRJVkVf
UEFUVEVSTlNdQERcbiIKLSIgICAgICBSdW4gb25seSB0aGUgdGVzdHMgd2hvc2UgbmFtZSBtYXRj
aGVzIG9uZSBvZiB0aGUgcG9zaXRpdmUgcGF0dGVybnMgYnV0XG4iCi0iICAgICAgbm9uZSBvZiB0
aGUgbmVnYXRpdmUgcGF0dGVybnMuICc/JyBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyOyAn
KidcbiIKLSIgICAgICBtYXRjaGVzIGFueSBzdWJzdHJpbmc7ICc6JyBzZXBhcmF0ZXMgdHdvIHBh
dHRlcm5zLlxuIgotIiAgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfICJhbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0c0BEXG4iCi0iICAgICAgUnVuIGFsbCBkaXNhYmxlZCB0ZXN0cyB0b28uXG4iCi0iXG4i
Ci0iVGVzdCBFeGVjdXRpb246XG4iCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gInJlcGVh
dD1AWVtDT1VOVF1ARFxuIgotIiAgICAgIFJ1biB0aGUgdGVzdHMgcmVwZWF0ZWRseTsgdXNlIGEg
bmVnYXRpdmUgY291bnQgdG8gcmVwZWF0IGZvcmV2ZXIuXG4iCi0iICBARy0tIiBHVEVTVF9GTEFH
X1BSRUZJWF8gInNodWZmbGVARFxuIgotIiAgICAgIFJhbmRvbWl6ZSB0ZXN0cycgb3JkZXJzIG9u
IGV2ZXJ5IGl0ZXJhdGlvbi5cbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAicmFuZG9t
X3NlZWQ9QFlbTlVNQkVSXUBEXG4iCi0iICAgICAgUmFuZG9tIG51bWJlciBzZWVkIHRvIHVzZSBm
b3Igc2h1ZmZsaW5nIHRlc3Qgb3JkZXJzIChiZXR3ZWVuIDEgYW5kXG4iCi0iICAgICAgOTk5OTks
IG9yIDAgdG8gdXNlIGEgc2VlZCBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lKS5cbiIKLSJcbiIK
LSJUZXN0IE91dHB1dDpcbiIKLSIgIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiY29sb3I9QFko
QEd5ZXNAWXxAR25vQFl8QEdhdXRvQFkpQERcbiIKLSIgICAgICBFbmFibGUvZGlzYWJsZSBjb2xv
cmVkIG91dHB1dC4gVGhlIGRlZmF1bHQgaXMgQEdhdXRvQEQuXG4iCi0iICAtQEctIiBHVEVTVF9G
TEFHX1BSRUZJWF8gInByaW50X3RpbWU9MEBEXG4iCi0iICAgICAgRG9uJ3QgcHJpbnQgdGhlIGVs
YXBzZWQgdGltZSBvZiBlYWNoIHRlc3QuXG4iCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJWF8g
Im91dHB1dD14bWxAWVtARzpAWURJUkVDVE9SWV9QQVRIQEciCi0gICAgR1RFU1RfUEFUSF9TRVBf
ICJAWXxARzpAWUZJTEVfUEFUSF1ARFxuIgotIiAgICAgIEdlbmVyYXRlIGFuIFhNTCByZXBvcnQg
aW4gdGhlIGdpdmVuIGRpcmVjdG9yeSBvciB3aXRoIHRoZSBnaXZlbiBmaWxlXG4iCi0iICAgICAg
bmFtZS4gQFlGSUxFX1BBVEhARCBkZWZhdWx0cyB0byBAR3Rlc3RfZGV0YWlscy54bWxARC5cbiIK
LSNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCi0iICBARy0tIiBHVEVTVF9GTEFHX1BSRUZJ
WF8gInN0cmVhbV9yZXN1bHRfdG89QFlIT1NUQEc6QFlQT1JUQERcbiIKLSIgICAgICBTdHJlYW0g
dGVzdCByZXN1bHRzIHRvIHRoZSBnaXZlbiBzZXJ2ZXIuXG4iCi0jZW5kaWYgIC8vIEdURVNUX0NB
Tl9TVFJFQU1fUkVTVUxUU18KLSJcbiIKLSJBc3NlcnRpb24gQmVoYXZpb3I6XG4iCi0jaWYgR1RF
U1RfSEFTX0RFQVRIX1RFU1QgJiYgIUdURVNUX09TX1dJTkRPV1MKLSIgIEBHLS0iIEdURVNUX0ZM
QUdfUFJFRklYXyAiZGVhdGhfdGVzdF9zdHlsZT1AWShAR2Zhc3RAWXxAR3RocmVhZHNhZmVAWSlA
RFxuIgotIiAgICAgIFNldCB0aGUgZGVmYXVsdCBkZWF0aCB0ZXN0IHN0eWxlLlxuIgotI2VuZGlm
ICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVCAmJiAhR1RFU1RfT1NfV0lORE9XUwotIiAgQEctLSIg
R1RFU1RfRkxBR19QUkVGSVhfICJicmVha19vbl9mYWlsdXJlQERcbiIKLSIgICAgICBUdXJuIGFz
c2VydGlvbiBmYWlsdXJlcyBpbnRvIGRlYnVnZ2VyIGJyZWFrLXBvaW50cy5cbiIKLSIgIEBHLS0i
IEdURVNUX0ZMQUdfUFJFRklYXyAidGhyb3dfb25fZmFpbHVyZUBEXG4iCi0iICAgICAgVHVybiBh
c3NlcnRpb24gZmFpbHVyZXMgaW50byBDKysgZXhjZXB0aW9ucy5cbiIKLSIgIEBHLS0iIEdURVNU
X0ZMQUdfUFJFRklYXyAiY2F0Y2hfZXhjZXB0aW9ucz0wQERcbiIKLSIgICAgICBEbyBub3QgcmVw
b3J0IGV4Y2VwdGlvbnMgYXMgdGVzdCBmYWlsdXJlcy4gSW5zdGVhZCwgYWxsb3cgdGhlbVxuIgot
IiAgICAgIHRvIGNyYXNoIHRoZSBwcm9ncmFtIG9yIHRocm93IGEgcG9wLXVwIChvbiBXaW5kb3dz
KS5cbiIKLSJcbiIKLSJFeGNlcHQgZm9yIEBHLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAibGlzdF90
ZXN0c0BELCB5b3UgY2FuIGFsdGVybmF0aXZlbHkgc2V0ICIKLSAgICAidGhlIGNvcnJlc3BvbmRp
bmdcbiIKLSJlbnZpcm9ubWVudCB2YXJpYWJsZSBvZiBhIGZsYWcgKGFsbCBsZXR0ZXJzIGluIHVw
cGVyLWNhc2UpLiBGb3IgZXhhbXBsZSwgdG9cbiIKLSJkaXNhYmxlIGNvbG9yZWQgdGV4dCBvdXRw
dXQsIHlvdSBjYW4gZWl0aGVyIHNwZWNpZnkgQEctLSIgR1RFU1RfRkxBR19QUkVGSVhfCi0gICAg
ImNvbG9yPW5vQEQgb3Igc2V0XG4iCi0idGhlIEBHIiBHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8g
IkNPTE9SQEQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gQEdub0BELlxuIgotIlxuIgotIkZvciBt
b3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVhZCB0aGUgIiBHVEVTVF9OQU1FXyAiIGRvY3VtZW50
YXRpb24gYXRcbiIKLSJARyIgR1RFU1RfUFJPSkVDVF9VUkxfICJARC4gSWYgeW91IGZpbmQgYSBi
dWcgaW4gIiBHVEVTVF9OQU1FXyAiXG4iCi0iKG5vdCBvbmUgaW4geW91ciBvd24gY29kZSBvciB0
ZXN0cyksIHBsZWFzZSByZXBvcnQgaXQgdG9cbiIKLSJARzwiIEdURVNUX0RFVl9FTUFJTF8gIj5A
RC5cbiI7Ci0KLWJvb2wgUGFyc2VHb29nbGVUZXN0RmxhZyhjb25zdCBjaGFyKiBjb25zdCBhcmcp
IHsKLSAgcmV0dXJuIFBhcnNlQm9vbEZsYWcoYXJnLCBrQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFn
LAotICAgICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90
ZXN0cykpIHx8Ci0gICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0JyZWFrT25GYWlsdXJlRmxhZywK
LSAgICAgICAgICAgICAgICAgICAgJkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkpIHx8Ci0g
ICAgICBQYXJzZUJvb2xGbGFnKGFyZywga0NhdGNoRXhjZXB0aW9uc0ZsYWcsCi0gICAgICAgICAg
ICAgICAgICAgICZHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpKSB8fAotICAgICAgUGFyc2VT
dHJpbmdGbGFnKGFyZywga0NvbG9yRmxhZywgJkdURVNUX0ZMQUcoY29sb3IpKSB8fAotICAgICAg
UGFyc2VTdHJpbmdGbGFnKGFyZywga0RlYXRoVGVzdFN0eWxlRmxhZywKLSAgICAgICAgICAgICAg
ICAgICAgICAmR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSkgfHwKLSAgICAgIFBhcnNlQm9v
bEZsYWcoYXJnLCBrRGVhdGhUZXN0VXNlRm9yaywKLSAgICAgICAgICAgICAgICAgICAgJkdURVNU
X0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpIHx8Ci0gICAgICBQYXJzZVN0cmluZ0ZsYWcoYXJn
LCBrRmlsdGVyRmxhZywgJkdURVNUX0ZMQUcoZmlsdGVyKSkgfHwKLSAgICAgIFBhcnNlU3RyaW5n
RmxhZyhhcmcsIGtJbnRlcm5hbFJ1bkRlYXRoVGVzdEZsYWcsCi0gICAgICAgICAgICAgICAgICAg
ICAgJkdURVNUX0ZMQUcoaW50ZXJuYWxfcnVuX2RlYXRoX3Rlc3QpKSB8fAotICAgICAgUGFyc2VC
b29sRmxhZyhhcmcsIGtMaXN0VGVzdHNGbGFnLCAmR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSkgfHwK
LSAgICAgIFBhcnNlU3RyaW5nRmxhZyhhcmcsIGtPdXRwdXRGbGFnLCAmR1RFU1RfRkxBRyhvdXRw
dXQpKSB8fAotICAgICAgUGFyc2VCb29sRmxhZyhhcmcsIGtQcmludFRpbWVGbGFnLCAmR1RFU1Rf
RkxBRyhwcmludF90aW1lKSkgfHwKLSAgICAgIFBhcnNlSW50MzJGbGFnKGFyZywga1JhbmRvbVNl
ZWRGbGFnLCAmR1RFU1RfRkxBRyhyYW5kb21fc2VlZCkpIHx8Ci0gICAgICBQYXJzZUludDMyRmxh
ZyhhcmcsIGtSZXBlYXRGbGFnLCAmR1RFU1RfRkxBRyhyZXBlYXQpKSB8fAotICAgICAgUGFyc2VC
b29sRmxhZyhhcmcsIGtTaHVmZmxlRmxhZywgJkdURVNUX0ZMQUcoc2h1ZmZsZSkpIHx8Ci0gICAg
ICBQYXJzZUludDMyRmxhZyhhcmcsIGtTdGFja1RyYWNlRGVwdGhGbGFnLAotICAgICAgICAgICAg
ICAgICAgICAgJkdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKSB8fAotICAgICAgUGFyc2VT
dHJpbmdGbGFnKGFyZywga1N0cmVhbVJlc3VsdFRvRmxhZywKLSAgICAgICAgICAgICAgICAgICAg
ICAmR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSkgfHwKLSAgICAgIFBhcnNlQm9vbEZsYWco
YXJnLCBrVGhyb3dPbkZhaWx1cmVGbGFnLAotICAgICAgICAgICAgICAgICAgICAmR1RFU1RfRkxB
Ryh0aHJvd19vbl9mYWlsdXJlKSk7Ci19Ci0KLSNpZiBHVEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZM
QUdfCi12b2lkIExvYWRGbGFnc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0g
IEZJTEUqIGZsYWdmaWxlID0gcG9zaXg6OkZPcGVuKHBhdGguY19zdHIoKSwgInIiKTsKLSAgaWYg
KCFmbGFnZmlsZSkgewotICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgIlVuYWJsZSB0
byBvcGVuIGZpbGUgXCIlc1wiXG4iLAotICAgICAgICAgICAgR1RFU1RfRkxBRyhmbGFnZmlsZSku
Y19zdHIoKSk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgZXhpdChFWElUX0ZBSUxVUkUpOwot
ICB9Ci0gIHN0ZDo6c3RyaW5nIGNvbnRlbnRzKFJlYWRFbnRpcmVGaWxlKGZsYWdmaWxlKSk7Ci0g
IHBvc2l4OjpGQ2xvc2UoZmxhZ2ZpbGUpOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gbGlu
ZXM7Ci0gIFNwbGl0U3RyaW5nKGNvbnRlbnRzLCAnXG4nLCAmbGluZXMpOwotICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKGxpbmVzW2ldLmVtcHR5
KCkpCi0gICAgICBjb250aW51ZTsKLSAgICBpZiAoIVBhcnNlR29vZ2xlVGVzdEZsYWcobGluZXNb
aV0uY19zdHIoKSkpCi0gICAgICBnX2hlbHBfZmxhZyA9IHRydWU7Ci0gIH0KLX0KLSNlbmRpZiAg
Ly8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwotCi0vLyBQYXJzZXMgdGhlIGNvbW1hbmQg
bGluZSBmb3IgR29vZ2xlIFRlc3QgZmxhZ3MsIHdpdGhvdXQgaW5pdGlhbGl6aW5nCi0vLyBvdGhl
ciBwYXJ0cyBvZiBHb29nbGUgVGVzdC4gIFRoZSB0eXBlIHBhcmFtZXRlciBDaGFyVHlwZSBjYW4g
YmUKLS8vIGluc3RhbnRpYXRlZCB0byBlaXRoZXIgY2hhciBvciB3Y2hhcl90LgotdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJUeXBlPgotdm9pZCBQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHlJbXBsKGlu
dCogYXJnYywgQ2hhclR5cGUqKiBhcmd2KSB7Ci0gIGZvciAoaW50IGkgPSAxOyBpIDwgKmFyZ2M7
IGkrKykgewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGFyZ19zdHJpbmcgPSBTdHJlYW1hYmxlVG9T
dHJpbmcoYXJndltpXSk7Ci0gICAgY29uc3QgY2hhciogY29uc3QgYXJnID0gYXJnX3N0cmluZy5j
X3N0cigpOwotCi0gICAgdXNpbmcgaW50ZXJuYWw6OlBhcnNlQm9vbEZsYWc7Ci0gICAgdXNpbmcg
aW50ZXJuYWw6OlBhcnNlSW50MzJGbGFnOwotICAgIHVzaW5nIGludGVybmFsOjpQYXJzZVN0cmlu
Z0ZsYWc7Ci0KLSAgICBib29sIHJlbW92ZV9mbGFnID0gZmFsc2U7Ci0gICAgaWYgKFBhcnNlR29v
Z2xlVGVzdEZsYWcoYXJnKSkgewotICAgICAgcmVtb3ZlX2ZsYWcgPSB0cnVlOwotI2lmIEdURVNU
X1VTRV9PV05fRkxBR0ZJTEVfRkxBR18KLSAgICB9IGVsc2UgaWYgKFBhcnNlU3RyaW5nRmxhZyhh
cmcsIGtGbGFnZmlsZUZsYWcsICZHVEVTVF9GTEFHKGZsYWdmaWxlKSkpIHsKLSAgICAgIExvYWRG
bGFnc0Zyb21GaWxlKEdURVNUX0ZMQUcoZmxhZ2ZpbGUpKTsKLSAgICAgIHJlbW92ZV9mbGFnID0g
dHJ1ZTsKLSNlbmRpZiAgLy8gR1RFU1RfVVNFX09XTl9GTEFHRklMRV9GTEFHXwotICAgIH0gZWxz
ZSBpZiAoYXJnX3N0cmluZyA9PSAiLS1oZWxwIiB8fCBhcmdfc3RyaW5nID09ICItaCIgfHwKLSAg
ICAgICAgICAgICAgIGFyZ19zdHJpbmcgPT0gIi0/IiB8fCBhcmdfc3RyaW5nID09ICIvPyIgfHwK
LSAgICAgICAgICAgICAgIEhhc0dvb2dsZVRlc3RGbGFnUHJlZml4KGFyZykpIHsKLSAgICAgIC8v
IEJvdGggaGVscCBmbGFnIGFuZCB1bnJlY29nbml6ZWQgR29vZ2xlIFRlc3QgZmxhZ3MgKGV4Y2x1
ZGluZwotICAgICAgLy8gaW50ZXJuYWwgb25lcykgdHJpZ2dlciBoZWxwIGRpc3BsYXkuCi0gICAg
ICBnX2hlbHBfZmxhZyA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYgKHJlbW92ZV9mbGFnKSB7Ci0g
ICAgICAvLyBTaGlmdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBhcmd2IGxpc3QgbGVmdCBieSBvbmUu
ICBOb3RlCi0gICAgICAvLyB0aGF0IGFyZ3YgaGFzICgqYXJnYyArIDEpIGVsZW1lbnRzLCB0aGUg
bGFzdCBvbmUgYWx3YXlzIGJlaW5nCi0gICAgICAvLyBOVUxMLiAgVGhlIGZvbGxvd2luZyBsb29w
IG1vdmVzIHRoZSB0cmFpbGluZyBOVUxMIGVsZW1lbnQgYXMKLSAgICAgIC8vIHdlbGwuCi0gICAg
ICBmb3IgKGludCBqID0gaTsgaiAhPSAqYXJnYzsgaisrKSB7Ci0gICAgICAgIGFyZ3Zbal0gPSBh
cmd2W2ogKyAxXTsKLSAgICAgIH0KLQotICAgICAgLy8gRGVjcmVtZW50cyB0aGUgYXJndW1lbnQg
Y291bnQuCi0gICAgICAoKmFyZ2MpLS07Ci0KLSAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBkZWNy
ZW1lbnQgdGhlIGl0ZXJhdG9yIGFzIHdlIGp1c3QgcmVtb3ZlZAotICAgICAgLy8gYW4gZWxlbWVu
dC4KLSAgICAgIGktLTsKLSAgICB9Ci0gIH0KLQotICBpZiAoZ19oZWxwX2ZsYWcpIHsKLSAgICAv
LyBXZSBwcmludCB0aGUgaGVscCBoZXJlIGluc3RlYWQgb2YgaW4gUlVOX0FMTF9URVNUUygpLCBh
cyB0aGUKLSAgICAvLyBsYXR0ZXIgbWF5IG5vdCBiZSBjYWxsZWQgYXQgYWxsIGlmIHRoZSB1c2Vy
IGlzIHVzaW5nIEdvb2dsZQotICAgIC8vIFRlc3Qgd2l0aCBhbm90aGVyIHRlc3RpbmcgZnJhbWV3
b3JrLgotICAgIFByaW50Q29sb3JFbmNvZGVkKGtDb2xvckVuY29kZWRIZWxwTWVzc2FnZSk7Ci0g
IH0KLX0KLQotLy8gUGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgZm9yIEdvb2dsZSBUZXN0IGZsYWdz
LCB3aXRob3V0IGluaXRpYWxpemluZwotLy8gb3RoZXIgcGFydHMgb2YgR29vZ2xlIFRlc3QuCi12
b2lkIFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0g
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywgYXJndik7Ci19Ci12b2lkIFBhcnNl
R29vZ2xlVGVzdEZsYWdzT25seShpbnQqIGFyZ2MsIHdjaGFyX3QqKiBhcmd2KSB7Ci0gIFBhcnNl
R29vZ2xlVGVzdEZsYWdzT25seUltcGwoYXJnYywgYXJndik7Ci19Ci0KLS8vIFRoZSBpbnRlcm5h
bCBpbXBsZW1lbnRhdGlvbiBvZiBJbml0R29vZ2xlVGVzdCgpLgotLy8KLS8vIFRoZSB0eXBlIHBh
cmFtZXRlciBDaGFyVHlwZSBjYW4gYmUgaW5zdGFudGlhdGVkIHRvIGVpdGhlciBjaGFyIG9yCi0v
LyB3Y2hhcl90LgotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotdm9pZCBJbml0R29vZ2xl
VGVzdEltcGwoaW50KiBhcmdjLCBDaGFyVHlwZSoqIGFyZ3YpIHsKLSAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0byBydW4gdGhlIGluaXRpYWxpemF0aW9uIGNvZGUgdHdpY2UuCi0gIGlmIChHVGVzdElzSW5p
dGlhbGl6ZWQoKSkgcmV0dXJuOwotCi0gIGlmICgqYXJnYyA8PSAwKSByZXR1cm47Ci0KLSAgZ19h
cmd2cy5jbGVhcigpOwotICBmb3IgKGludCBpID0gMDsgaSAhPSAqYXJnYzsgaSsrKSB7Ci0gICAg
Z19hcmd2cy5wdXNoX2JhY2soU3RyZWFtYWJsZVRvU3RyaW5nKGFyZ3ZbaV0pKTsKLSAgfQotCi0g
IFBhcnNlR29vZ2xlVGVzdEZsYWdzT25seShhcmdjLCBhcmd2KTsKLSAgR2V0VW5pdFRlc3RJbXBs
KCktPlBvc3RGbGFnUGFyc2luZ0luaXQoKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGludGVybmFs
Ci0KLS8vIEluaXRpYWxpemVzIEdvb2dsZSBUZXN0LiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZv
cmUgY2FsbGluZwotLy8gUlVOX0FMTF9URVNUUygpLiAgSW4gcGFydGljdWxhciwgaXQgcGFyc2Vz
IGEgY29tbWFuZCBsaW5lIGZvciB0aGUKLS8vIGZsYWdzIHRoYXQgR29vZ2xlIFRlc3QgcmVjb2du
aXplcy4gIFdoZW5ldmVyIGEgR29vZ2xlIFRlc3QgZmxhZyBpcwotLy8gc2VlbiwgaXQgaXMgcmVt
b3ZlZCBmcm9tIGFyZ3YsIGFuZCAqYXJnYyBpcyBkZWNyZW1lbnRlZC4KLS8vCi0vLyBObyB2YWx1
ZSBpcyByZXR1cm5lZC4gIEluc3RlYWQsIHRoZSBHb29nbGUgVGVzdCBmbGFnIHZhcmlhYmxlcyBh
cmUKLS8vIHVwZGF0ZWQuCi0vLwotLy8gQ2FsbGluZyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBzZWNv
bmQgdGltZSBoYXMgbm8gdXNlci12aXNpYmxlIGVmZmVjdC4KLXZvaWQgSW5pdEdvb2dsZVRlc3Qo
aW50KiBhcmdjLCBjaGFyKiogYXJndikgewotI2lmIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRf
R09PR0xFX1RFU1RfRlVOQ1RJT05fKQotICBHVEVTVF9DVVNUT01fSU5JVF9HT09HTEVfVEVTVF9G
VU5DVElPTl8oYXJnYywgYXJndik7Ci0jZWxzZSAgLy8gZGVmaW5lZChHVEVTVF9DVVNUT01fSU5J
VF9HT09HTEVfVEVTVF9GVU5DVElPTl8pCi0gIGludGVybmFsOjpJbml0R29vZ2xlVGVzdEltcGwo
YXJnYywgYXJndik7Ci0jZW5kaWYgIC8vIGRlZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xF
X1RFU1RfRlVOQ1RJT05fKQotfQotCi0vLyBUaGlzIG92ZXJsb2FkZWQgdmVyc2lvbiBjYW4gYmUg
dXNlZCBpbiBXaW5kb3dzIHByb2dyYW1zIGNvbXBpbGVkIGluCi0vLyBVTklDT0RFIG1vZGUuCi12
b2lkIEluaXRHb29nbGVUZXN0KGludCogYXJnYywgd2NoYXJfdCoqIGFyZ3YpIHsKLSNpZiBkZWZp
bmVkKEdURVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKLSAgR1RFU1RfQ1VT
VE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKGFyZ2MsIGFyZ3YpOwotI2Vsc2UgIC8vIGRl
ZmluZWQoR1RFU1RfQ1VTVE9NX0lOSVRfR09PR0xFX1RFU1RfRlVOQ1RJT05fKQotICBpbnRlcm5h
bDo6SW5pdEdvb2dsZVRlc3RJbXBsKGFyZ2MsIGFyZ3YpOwotI2VuZGlmICAvLyBkZWZpbmVkKEdU
RVNUX0NVU1RPTV9JTklUX0dPT0dMRV9URVNUX0ZVTkNUSU9OXykKLX0KLQotc3RkOjpzdHJpbmcg
VGVtcERpcigpIHsKLSNpZiBkZWZpbmVkKEdURVNUX0NVU1RPTV9URU1QRElSX0ZVTkNUSU9OXykK
LSAgICByZXR1cm4gR1RFU1RfQ1VTVE9NX1RFTVBESVJfRlVOQ1RJT05fKCk7Ci0jZW5kaWYKLSNp
ZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICByZXR1cm4gIlxcdGVtcFxcIjsKLSNlbGlmIEdU
RVNUX09TX1dJTkRPV1MKLSAgY29uc3QgY2hhciogdGVtcF9kaXIgPSBpbnRlcm5hbDo6cG9zaXg6
OkdldEVudigiVEVNUCIpOwotICBpZiAodGVtcF9kaXIgPT0gTlVMTCB8fCB0ZW1wX2RpclswXSA9
PSAnXDAnKQotICAgIHJldHVybiAiXFx0ZW1wXFwiOwotICBlbHNlIGlmICh0ZW1wX2RpcltzdHJs
ZW4odGVtcF9kaXIpIC0gMV0gPT0gJ1xcJykKLSAgICByZXR1cm4gdGVtcF9kaXI7Ci0gIGVsc2UK
LSAgICByZXR1cm4gc3RkOjpzdHJpbmcodGVtcF9kaXIpICsgIlxcIjsKLSNlbGlmIEdURVNUX09T
X0xJTlVYX0FORFJPSUQKLSAgcmV0dXJuICIvc2RjYXJkLyI7Ci0jZWxzZQotICByZXR1cm4gIi90
bXAvIjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLX0KLQotfSAgLy8gbmFt
ZXNwYWNlIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdF9tYWluLmNj
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0X21haW4uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYzMDI4MjI1NTIzMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3NyYy9n
dGVzdF9tYWluLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLQot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLUdURVNUX0FQSV8gaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KSB7Ci0gIHByaW50ZigiUnVubmluZyBtYWluKCkgZnJvbSBndGVzdF9tYWlu
LmNjXG4iKTsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dC1kZWF0aC10ZXN0X2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRl
c3RfZXhfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwYTEzZDVlMmUx
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X2V4
X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAx
MCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8v
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0v
LyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB2bGFkbEBnb29nbGUu
Y29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRlc3RzIHRoYXQgdmVyaWZ5IGludGVyYWN0aW9uIG9m
IGV4Y2VwdGlvbnMgYW5kIGRlYXRoIHRlc3RzLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVh
dGgtdGVzdC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpZiBHVEVTVF9IQVNfREVB
VEhfVEVTVAotCi0jIGlmIEdURVNUX0hBU19TRUgKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4gICAg
ICAgICAgLy8gRm9yIFJhaXNlRXhjZXB0aW9uKCkuCi0jIGVuZGlmCi0KLSMgaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCi0KLSMgaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQotIyAgaW5jbHVk
ZSA8ZXhjZXB0aW9uPiAgLy8gRm9yIHN0ZDo6ZXhjZXB0aW9uLgotCi0vLyBUZXN0cyB0aGF0IGRl
YXRoIHRlc3RzIHJlcG9ydCB0aHJvd24gZXhjZXB0aW9ucyBhcyBmYWlsdXJlcyBhbmQgdGhhdCB0
aGUKLS8vIGV4Y2VwdGlvbnMgZG8gbm90IGVzY2FwZSBkZWF0aCB0ZXN0IG1hY3Jvcy4KLVRFU1Qo
Q3h4RXhjZXB0aW9uRGVhdGhUZXN0LCBFeGNlcHRpb25Jc0ZhaWx1cmUpIHsKLSAgdHJ5IHsKLSAg
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfREVBVEgodGhyb3cgMSwgIiIpLCAidGhy
ZXcgYW4gZXhjZXB0aW9uIik7Ci0gIH0gY2F0Y2ggKC4uLikgeyAgLy8gTk9MSU5UCi0gICAgRkFJ
TCgpIDw8ICJBbiBleGNlcHRpb24gZXNjYXBlZCBhIGRlYXRoIHRlc3QgbWFjcm8gaW52b2NhdGlv
biAiCi0gICAgICAgICAgIDw8ICJ3aXRoIGNhdGNoX2V4Y2VwdGlvbnMgIgotICAgICAgICAgICA8
PCAodGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA/ICJlbmFibGVkIiA6ICJk
aXNhYmxlZCIpOwotICB9Ci19Ci0KLWNsYXNzIFRlc3RFeGNlcHRpb24gOiBwdWJsaWMgc3RkOjpl
eGNlcHRpb24gewotIHB1YmxpYzoKLSAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3Qg
dGhyb3coKSB7IHJldHVybiAiZXhjZXB0aW9uYWwgbWVzc2FnZSI7IH0KLX07Ci0KLVRFU1QoQ3h4
RXhjZXB0aW9uRGVhdGhUZXN0LCBQcmludHNNZXNzYWdlRm9yU3RkRXhjZXB0aW9ucykgewotICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBleGNlcHRpb24gbWVzc2FnZSBpcyBxdW90ZWQgaW4gdGhlIGZh
aWx1cmUgdGV4dC4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIKHRocm93
IFRlc3RFeGNlcHRpb24oKSwgIiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0
aW9uYWwgbWVzc2FnZSIpOwotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBtZW50
aW9uZWQgaW4gdGhlIGZhaWx1cmUgdGV4dC4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0RFQVRIKHRocm93IFRlc3RFeGNlcHRpb24oKSwgIiIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZ3Rlc3QtZGVhdGgtdGVzdF9leF90ZXN0LmNjIik7Ci19Ci0jIGVuZGlmICAvLyBH
VEVTVF9IQVNfRVhDRVBUSU9OUwotCi0jIGlmIEdURVNUX0hBU19TRUgKLS8vIFRlc3RzIHRoYXQg
ZW5hYmxpbmcgaW50ZXJjZXB0aW9uIG9mIFNFSCBleGNlcHRpb25zIHdpdGggdGhlCi0vLyBjYXRj
aF9leGNlcHRpb25zIGZsYWcgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggU0VIIGV4Y2VwdGlvbnMg
YmVpbmcKLS8vIHRyZWF0ZWQgYXMgZGVhdGggYnkgZGVhdGggdGVzdHMuCi1URVNUKFNlaEV4Y2Vw
dGlvbkRlYXNUZXN0LCBDYXRjaEV4Y2VwdGlvbnNEb2VzTm90SW50ZXJmZXJlKSB7Ci0gIEVYUEVD
VF9ERUFUSChSYWlzZUV4Y2VwdGlvbig0MiwgMHgwLCAwLCBOVUxMKSwgIiIpCi0gICAgICA8PCAi
d2l0aCBjYXRjaF9leGNlcHRpb25zICIKLSAgICAgIDw8ICh0ZXN0aW5nOjpHVEVTVF9GTEFHKGNh
dGNoX2V4Y2VwdGlvbnMpID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Ci19Ci0jIGVuZGlmCi0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX0RFQVRIX1RFU1QKLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAg
dGVzdGluZzo6R1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25zKSA9IEdURVNUX0VOQUJMRV9DQVRD
SF9FWENFUFRJT05TXyAhPSAwOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0LWRlYXRoLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTU3ZmUzODI0NDJlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdC1kZWF0aC10ZXN0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNDI3ICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIGRl
YXRoIHRlc3RzLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtZGVhdGgtdGVzdC5oIgotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJuYWwvZ3Rlc3QtZmlsZXBh
dGguaCIKLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkFsd2F5c1RydWU7Ci0KLSNpZiBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci0jIGlmIEdURVNUX09TX1dJTkRPV1MKLSMgIGluY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAgICAv
LyBGb3IgY2hkaXIoKS4KLSMgZWxzZQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRl
IDxzeXMvd2FpdC5oPiAgICAgICAgLy8gRm9yIHdhaXRwaWQuCi0jIGVuZGlmICAvLyBHVEVTVF9P
U19XSU5ET1dTCi0KLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jIGluY2x1ZGUgPHNpZ25hbC5oPgot
IyBpbmNsdWRlIDxzdGRpby5oPgotCi0jIGlmIEdURVNUX09TX0xJTlVYCi0jICBpbmNsdWRlIDxz
eXMvdGltZS5oPgotIyBlbmRpZiAgLy8gR1RFU1RfT1NfTElOVVgKLQotIyBpbmNsdWRlICJndGVz
dC9ndGVzdC1zcGkuaCIKLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0
IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNv
bWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUg
d2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBh
IHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGlu
Ci0vLyBoaXMgY29kZS4KLSMgZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jIGluY2x1
ZGUgInNyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKLSMgdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJ
T05fCi0KLW5hbWVzcGFjZSBwb3NpeCA9IDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OwotCi11
c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkRlYXRoVGVz
dDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpEZWF0aFRlc3RGYWN0b3J5OwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkZpbGVQYXRoOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldExh
c3RFcnJub0Rlc2NyaXB0aW9uOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0
SW1wbDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJbkRlYXRoVGVzdENoaWxkOwotdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlBhcnNlTmF0dXJhbE51bWJlcjsKLQotbmFtZXNwYWNlIHRlc3Rp
bmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8gQSBoZWxwZXIgY2xhc3Mgd2hvc2Ugb2Jq
ZWN0cyByZXBsYWNlIHRoZSBkZWF0aCB0ZXN0IGZhY3RvcnkgZm9yIGEKLS8vIHNpbmdsZSBVbml0
VGVzdCBvYmplY3QgZHVyaW5nIHRoZWlyIGxpZmV0aW1lcy4KLWNsYXNzIFJlcGxhY2VEZWF0aFRl
c3RGYWN0b3J5IHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJlcGxhY2VEZWF0aFRlc3RGYWN0b3J5
KERlYXRoVGVzdEZhY3RvcnkqIG5ld19mYWN0b3J5KQotICAgICAgOiB1bml0X3Rlc3RfaW1wbF8o
R2V0VW5pdFRlc3RJbXBsKCkpIHsKLSAgICBvbGRfZmFjdG9yeV8gPSB1bml0X3Rlc3RfaW1wbF8t
PmRlYXRoX3Rlc3RfZmFjdG9yeV8ucmVsZWFzZSgpOwotICAgIHVuaXRfdGVzdF9pbXBsXy0+ZGVh
dGhfdGVzdF9mYWN0b3J5Xy5yZXNldChuZXdfZmFjdG9yeSk7Ci0gIH0KLQotICB+UmVwbGFjZURl
YXRoVGVzdEZhY3RvcnkoKSB7Ci0gICAgdW5pdF90ZXN0X2ltcGxfLT5kZWF0aF90ZXN0X2ZhY3Rv
cnlfLnJlbGVhc2UoKTsKLSAgICB1bml0X3Rlc3RfaW1wbF8tPmRlYXRoX3Rlc3RfZmFjdG9yeV8u
cmVzZXQob2xkX2ZhY3RvcnlfKTsKLSAgfQotIHByaXZhdGU6Ci0gIC8vIFByZXZlbnRzIGNvcHlp
bmcgUmVwbGFjZURlYXRoVGVzdEZhY3Rvcnkgb2JqZWN0cy4KLSAgUmVwbGFjZURlYXRoVGVzdEZh
Y3RvcnkoY29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKLSAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgUmVwbGFjZURlYXRoVGVzdEZhY3RvcnkmKTsKLQotICBVbml0VGVzdEltcGwqIHVuaXRf
dGVzdF9pbXBsXzsKLSAgRGVhdGhUZXN0RmFjdG9yeSogb2xkX2ZhY3RvcnlfOwotfTsKLQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi12b2lkIERp
ZVdpdGhNZXNzYWdlKGNvbnN0IDo6c3RkOjpzdHJpbmcmIG1lc3NhZ2UpIHsKLSAgZnByaW50Zihz
dGRlcnIsICIlcyIsIG1lc3NhZ2UuY19zdHIoKSk7Ci0gIGZmbHVzaChzdGRlcnIpOyAgLy8gTWFr
ZSBzdXJlIHRoZSB0ZXh0IGlzIHByaW50ZWQgYmVmb3JlIHRoZSBwcm9jZXNzIGV4aXRzLgotCi0g
IC8vIFdlIGNhbGwgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4aXQoKSwgYXMgdGhlIGZvcm1lciBpcyBh
IGRpcmVjdAotICAvLyBzeXN0ZW0gY2FsbCBhbmQgdGh1cyBzYWZlciBpbiB0aGUgcHJlc2VuY2Ug
b2YgdGhyZWFkcy4gIGV4aXQoKQotICAvLyB3aWxsIGludm9rZSB1c2VyLWRlZmluZWQgZXhpdC1o
b29rcywgd2hpY2ggbWF5IGRvIGRhbmdlcm91cwotICAvLyB0aGluZ3MgdGhhdCBjb25mbGljdCB3
aXRoIGRlYXRoIHRlc3RzLgotICAvLwotICAvLyBTb21lIGNvbXBpbGVycyBjYW4gcmVjb2duaXpl
IHRoYXQgX2V4aXQoKSBuZXZlciByZXR1cm5zIGFuZCBpc3N1ZSB0aGUKLSAgLy8gJ3VucmVhY2hh
YmxlIGNvZGUnIHdhcm5pbmcgZm9yIGNvZGUgZm9sbG93aW5nIHRoaXMgZnVuY3Rpb24sIHVubGVz
cwotICAvLyBmb29sZWQgYnkgYSBmYWtlIGNvbmRpdGlvbi4KLSAgaWYgKEFsd2F5c1RydWUoKSkK
LSAgICBfZXhpdCgxKTsKLX0KLQotdm9pZCBEaWVJbnNpZGUoY29uc3QgOjpzdGQ6OnN0cmluZyYg
ZnVuY3Rpb24pIHsKLSAgRGllV2l0aE1lc3NhZ2UoImRlYXRoIGluc2lkZSAiICsgZnVuY3Rpb24g
KyAiKCkuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMgd29yay4KLQotY2xhc3Mg
VGVzdEZvckRlYXRoVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IFRlc3RGb3JEZWF0aFRlc3QoKSA6IG9yaWdpbmFsX2Rpcl8oRmlsZVBhdGg6OkdldEN1cnJlbnRE
aXIoKSkge30KLQotICB2aXJ0dWFsIH5UZXN0Rm9yRGVhdGhUZXN0KCkgewotICAgIHBvc2l4OjpD
aERpcihvcmlnaW5hbF9kaXJfLmNfc3RyKCkpOwotICB9Ci0KLSAgLy8gQSBzdGF0aWMgbWVtYmVy
IGZ1bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCi0gIHN0YXRpYyB2b2lkIFN0YXRpY01l
bWJlckZ1bmN0aW9uKCkgeyBEaWVJbnNpZGUoIlN0YXRpY01lbWJlckZ1bmN0aW9uIik7IH0KLQot
ICAvLyBBIG1ldGhvZCBvZiB0aGUgdGVzdCBmaXh0dXJlIHRoYXQgbWF5IGRpZS4KLSAgdm9pZCBN
ZW1iZXJGdW5jdGlvbigpIHsKLSAgICBpZiAoc2hvdWxkX2RpZV8pCi0gICAgICBEaWVJbnNpZGUo
Ik1lbWJlckZ1bmN0aW9uIik7Ci0gIH0KLQotICAvLyBUcnVlIGlmZiBNZW1iZXJGdW5jdGlvbigp
IHNob3VsZCBkaWUuCi0gIGJvb2wgc2hvdWxkX2RpZV87Ci0gIGNvbnN0IEZpbGVQYXRoIG9yaWdp
bmFsX2Rpcl87Ci19OwotCi0vLyBBIGNsYXNzIHdpdGggYSBtZW1iZXIgZnVuY3Rpb24gdGhhdCBt
YXkgZGllLgotY2xhc3MgTWF5RGllIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IE1heURpZShib29s
IHNob3VsZF9kaWUpIDogc2hvdWxkX2RpZV8oc2hvdWxkX2RpZSkge30KLQotICAvLyBBIG1lbWJl
ciBmdW5jdGlvbiB0aGF0IG1heSBkaWUuCi0gIHZvaWQgTWVtYmVyRnVuY3Rpb24oKSBjb25zdCB7
Ci0gICAgaWYgKHNob3VsZF9kaWVfKQotICAgICAgRGllSW5zaWRlKCJNYXlEaWU6Ok1lbWJlckZ1
bmN0aW9uIik7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIC8vIFRydWUgaWZmIE1lbWJlckZ1bmN0aW9u
KCkgc2hvdWxkIGRpZS4KLSAgYm9vbCBzaG91bGRfZGllXzsKLX07Ci0KLS8vIEEgZ2xvYmFsIGZ1
bmN0aW9uIHRoYXQncyBleHBlY3RlZCB0byBkaWUuCi12b2lkIEdsb2JhbEZ1bmN0aW9uKCkgeyBE
aWVJbnNpZGUoIkdsb2JhbEZ1bmN0aW9uIik7IH0KLQotLy8gQSBub24tdm9pZCBmdW5jdGlvbiB0
aGF0J3MgZXhwZWN0ZWQgdG8gZGllLgotaW50IE5vblZvaWRGdW5jdGlvbigpIHsKLSAgRGllSW5z
aWRlKCJOb25Wb2lkRnVuY3Rpb24iKTsKLSAgcmV0dXJuIDE7Ci19Ci0KLS8vIEEgdW5hcnkgZnVu
Y3Rpb24gdGhhdCBtYXkgZGllLgotdm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgaWYg
KHNob3VsZF9kaWUpCi0gICAgRGllSW5zaWRlKCJEaWVJZiIpOwotfQotCi0vLyBBIGJpbmFyeSBm
dW5jdGlvbiB0aGF0IG1heSBkaWUuCi1ib29sIERpZUlmTGVzc1RoYW4oaW50IHgsIGludCB5KSB7
Ci0gIGlmICh4IDwgeSkgewotICAgIERpZUluc2lkZSgiRGllSWZMZXNzVGhhbiIpOwotICB9Ci0g
IHJldHVybiB0cnVlOwotfQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUFUSCBjYW4gYmUgdXNl
ZCBvdXRzaWRlIGEgVEVTVCwgVEVTVF9GLCBvciB0ZXN0IGZpeHR1cmUuCi12b2lkIERlYXRoVGVz
dFN1YnJvdXRpbmUoKSB7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVhdGgu
Kkdsb2JhbEZ1bmN0aW9uIik7Ci0gIEFTU0VSVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCAiZGVh
dGguKkdsb2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8vIERlYXRoIGluIGRiZywgbm90IG9wdC4KLWlu
dCBEaWVJbkRlYnVnRWxzZTEyKGludCogc2lkZWVmZmVjdCkgewotICBpZiAoc2lkZWVmZmVjdCkg
KnNpZGVlZmZlY3QgPSAxMjsKLQotIyBpZm5kZWYgTkRFQlVHCi0KLSAgRGllSW5zaWRlKCJEaWVJ
bkRlYnVnRWxzZTEyIik7Ci0KLSMgZW5kaWYgIC8vIE5ERUJVRwotCi0gIHJldHVybiAxMjsKLX0K
LQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi0KLS8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBw
cmVkaWNhdGUuCi1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkg
ewotICAvLyBPbiBXaW5kb3dzLCB0aGUgcHJvY2VzcydzIGV4aXQgY29kZSBpcyB0aGUgc2FtZSBh
cyBpdHMgZXhpdCBzdGF0dXMsCi0gIC8vIHNvIHRoZSBwcmVkaWNhdGUganVzdCBjb21wYXJlcyB0
aGUgaXRzIGlucHV0IHdpdGggaXRzIHBhcmFtZXRlci4KLSAgRVhQRUNUX1RSVUUodGVzdGluZzo6
RXhpdGVkV2l0aENvZGUoMCkoMCkpOwotICBFWFBFQ1RfVFJVRSh0ZXN0aW5nOjpFeGl0ZWRXaXRo
Q29kZSgxKSgxKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDQyKSg0
MikpOwotICBFWFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMCkoMSkpOwotICBF
WFBFQ1RfRkFMU0UodGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSkoMCkpOwotfQotCi0jIGVsc2UK
LQotLy8gUmV0dXJucyB0aGUgZXhpdCBzdGF0dXMgb2YgYSBwcm9jZXNzIHRoYXQgY2FsbHMgX2V4
aXQoMikgd2l0aCBhCi0vLyBnaXZlbiBleGl0IGNvZGUuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0
aW9uIGZvciB0aGUKLS8vIEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0IHRlc3Qgc3VpdGUuCi1zdGF0
aWMgaW50IE5vcm1hbEV4aXRTdGF0dXMoaW50IGV4aXRfY29kZSkgewotICBwaWRfdCBjaGlsZF9w
aWQgPSBmb3JrKCk7Ci0gIGlmIChjaGlsZF9waWQgPT0gMCkgewotICAgIF9leGl0KGV4aXRfY29k
ZSk7Ci0gIH0KLSAgaW50IHN0YXR1czsKLSAgd2FpdHBpZChjaGlsZF9waWQsICZzdGF0dXMsIDAp
OwotICByZXR1cm4gc3RhdHVzOwotfQotCi0vLyBSZXR1cm5zIHRoZSBleGl0IHN0YXR1cyBvZiBh
IHByb2Nlc3MgdGhhdCByYWlzZXMgYSBnaXZlbiBzaWduYWwuCi0vLyBJZiB0aGUgc2lnbmFsIGRv
ZXMgbm90IGNhdXNlIHRoZSBwcm9jZXNzIHRvIGRpZSwgdGhlbiBpdCByZXR1cm5zCi0vLyBpbnN0
ZWFkIHRoZSBleGl0IHN0YXR1cyBvZiBhIHByb2Nlc3MgdGhhdCBleGl0cyBub3JtYWxseSB3aXRo
IGV4aXQKLS8vIGNvZGUgMS4gIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBFeGl0
U3RhdHVzUHJlZGljYXRlVGVzdAotLy8gdGVzdCBzdWl0ZS4KLXN0YXRpYyBpbnQgS2lsbGVkRXhp
dFN0YXR1cyhpbnQgc2lnbnVtKSB7Ci0gIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLSAgaWYg
KGNoaWxkX3BpZCA9PSAwKSB7Ci0gICAgcmFpc2Uoc2lnbnVtKTsKLSAgICBfZXhpdCgxKTsKLSAg
fQotICBpbnQgc3RhdHVzOwotICB3YWl0cGlkKGNoaWxkX3BpZCwgJnN0YXR1cywgMCk7Ci0gIHJl
dHVybiBzdGF0dXM7Ci19Ci0KLS8vIFRlc3RzIHRoZSBFeGl0ZWRXaXRoQ29kZSBwcmVkaWNhdGUu
Ci1URVNUKEV4aXRTdGF0dXNQcmVkaWNhdGVUZXN0LCBFeGl0ZWRXaXRoQ29kZSkgewotICBjb25z
dCBpbnQgc3RhdHVzMCAgPSBOb3JtYWxFeGl0U3RhdHVzKDApOwotICBjb25zdCBpbnQgc3RhdHVz
MSAgPSBOb3JtYWxFeGl0U3RhdHVzKDEpOwotICBjb25zdCBpbnQgc3RhdHVzNDIgPSBOb3JtYWxF
eGl0U3RhdHVzKDQyKTsKLSAgY29uc3QgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUgcHJlZDAoMCk7
Ci0gIGNvbnN0IHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlIHByZWQxKDEpOwotICBjb25zdCB0ZXN0
aW5nOjpFeGl0ZWRXaXRoQ29kZSBwcmVkNDIoNDIpOwotICBFWFBFQ1RfUFJFRDEocHJlZDAsICBz
dGF0dXMwKTsKLSAgRVhQRUNUX1BSRUQxKHByZWQxLCAgc3RhdHVzMSk7Ci0gIEVYUEVDVF9QUkVE
MShwcmVkNDIsIHN0YXR1czQyKTsKLSAgRVhQRUNUX0ZBTFNFKHByZWQwKHN0YXR1czEpKTsKLSAg
RVhQRUNUX0ZBTFNFKHByZWQ0MihzdGF0dXMwKSk7Ci0gIEVYUEVDVF9GQUxTRShwcmVkMShzdGF0
dXM0MikpOwotfQotCi0vLyBUZXN0cyB0aGUgS2lsbGVkQnlTaWduYWwgcHJlZGljYXRlLgotVEVT
VChFeGl0U3RhdHVzUHJlZGljYXRlVGVzdCwgS2lsbGVkQnlTaWduYWwpIHsKLSAgY29uc3QgaW50
IHN0YXR1c19zZWd2ID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdTRUdWKTsKLSAgY29uc3QgaW50IHN0
YXR1c19raWxsID0gS2lsbGVkRXhpdFN0YXR1cyhTSUdLSUxMKTsKLSAgY29uc3QgdGVzdGluZzo6
S2lsbGVkQnlTaWduYWwgcHJlZF9zZWd2KFNJR1NFR1YpOwotICBjb25zdCB0ZXN0aW5nOjpLaWxs
ZWRCeVNpZ25hbCBwcmVkX2tpbGwoU0lHS0lMTCk7Ci0gIEVYUEVDVF9QUkVEMShwcmVkX3NlZ3Ys
IHN0YXR1c19zZWd2KTsKLSAgRVhQRUNUX1BSRUQxKHByZWRfa2lsbCwgc3RhdHVzX2tpbGwpOwot
ICBFWFBFQ1RfRkFMU0UocHJlZF9zZWd2KHN0YXR1c19raWxsKSk7Ci0gIEVYUEVDVF9GQUxTRShw
cmVkX2tpbGwoc3RhdHVzX3NlZ3YpKTsKLX0KLQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9X
UwotCi0vLyBUZXN0cyB0aGF0IHRoZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3
aGljaCBtYXkgb3IgbWF5IG5vdAotLy8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRo
YXQgaW4gZWl0aGVyIGNhc2UgdGhlIGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEg
c2luZ2xlIEMrKyBzdGF0ZW1lbnQuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU2luZ2xlU3Rh
dGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIC8vIFRoaXMgd291bGQgZmFpbCBp
ZiBleGVjdXRlZDsgdGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seQotICAgIEFTU0VSVF9E
RUFUSChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFU
SChfZXhpdCgxKSwgIiIpOwotICBlbHNlCi0gICAgLy8gVGhpcyBlbXB0eSAiZWxzZSIgYnJhbmNo
IGlzIG1lYW50IHRvIGVuc3VyZSB0aGF0IEVYUEVDVF9ERUFUSAotICAgIC8vIGRvZXNuJ3QgZXhw
YW5kIGludG8gYW4gImlmIiBzdGF0ZW1lbnQgd2l0aG91dCBhbiAiZWxzZSIKLSAgICA7Ci0KLSAg
aWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RFQVRIKHJldHVybiwgIiIpIDw8ICJkaWQg
bm90IGRpZSI7Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOwotICBlbHNlCi0gICAgRVhQ
RUNUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgMSA8PCAyIDw8IDM7Ci19Ci0KLXZvaWQgRGllV2l0
aEVtYmVkZGVkTnVsKCkgewotICBmcHJpbnRmKHN0ZGVyciwgIkhlbGxvJWNteSBudWxsIHdvcmxk
LlxuIiwgJ1wwJyk7Ci0gIGZmbHVzaChzdGRlcnIpOwotICBfZXhpdCgxKTsKLX0KLQotIyBpZiBH
VEVTVF9VU0VTX1BDUkUKLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGFuZCBBU1NFUlRfREVB
VEggd29yayB3aGVuIHRoZSBlcnJvcgotLy8gbWVzc2FnZSBoYXMgYSBOVUwgY2hhcmFjdGVyIGlu
IGl0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEVtYmVkZGVkTnVsSW5NZXNzYWdlKSB7Ci0g
IC8vIFRPRE8od2FuQGdvb2dsZS5jb20pOiA8cmVnZXguaD4gZG9lc24ndCBzdXBwb3J0IG1hdGNo
aW5nIHN0cmluZ3MKLSAgLy8gd2l0aCBlbWJlZGRlZCBOVUwgY2hhcmFjdGVycyAtIGZpbmQgYSB3
YXkgdG8gd29ya2Fyb3VuZCBpdC4KLSAgRVhQRUNUX0RFQVRIKERpZVdpdGhFbWJlZGRlZE51bCgp
LCAibXkgbnVsbCB3b3JsZCIpOwotICBBU1NFUlRfREVBVEgoRGllV2l0aEVtYmVkZGVkTnVsKCks
ICJteSBudWxsIHdvcmxkIik7Ci19Ci0jIGVuZGlmICAvLyBHVEVTVF9VU0VTX1BDUkUKLQotLy8g
VGVzdHMgdGhhdCBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBpbnRlcmFj
dHMgd2VsbCB3aXRoIHN3aXRjaAotLy8gc3RhdGVtZW50cy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhU
ZXN0LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLSAgLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkg
Y29tcGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLSAgLy8gY2FzZSBsYWJl
bHMuIFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgotICBHVEVTVF9ESVNB
QkxFX01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0
OgotICAgICAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIikgPDwgImV4aXQgaW4gZGVmYXVsdCBz
d2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEVYUEVD
VF9ERUFUSChfZXhpdCgxKSwgIiIpIDw8ICJleGl0IGluIHN3aXRjaCBjYXNlIjsKLQotICBHVEVT
VF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLX0KLQotLy8gVGVzdHMgdGhhdCBhIHN0YXRp
YyBtZW1iZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gYSAiZmFzdCIgc3R5bGUKLS8vIGRlYXRo
IHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgU3RhdGljTWVtYmVyRnVuY3Rpb25GYXN0
U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0
IjsKLSAgQVNTRVJUX0RFQVRIKFN0YXRpY01lbWJlckZ1bmN0aW9uKCksICJkZWF0aC4qU3RhdGlj
TWVtYmVyIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBtZXRob2Qgb2YgdGhlIHRlc3QgZml4dHVy
ZSBjYW4gYmUgdXNlZCBpbiBhICJmYXN0IgotLy8gc3R5bGUgZGVhdGggdGVzdC4KLVRFU1RfRihU
ZXN0Rm9yRGVhdGhUZXN0LCBNZW1iZXJGdW5jdGlvbkZhc3RTdHlsZSkgewotICB0ZXN0aW5nOjpH
VEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBzaG91bGRfZGllXyA9IHRy
dWU7Ci0gIEVYUEVDVF9ERUFUSChNZW1iZXJGdW5jdGlvbigpLCAiaW5zaWRlLipNZW1iZXJGdW5j
dGlvbiIpOwotfQotCi12b2lkIENoYW5nZVRvUm9vdERpcigpIHsgcG9zaXg6OkNoRGlyKEdURVNU
X1BBVEhfU0VQXyk7IH0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyB3b3JrIGV2ZW4gaWYg
dGhlIGN1cnJlbnQgZGlyZWN0b3J5IGhhcyBiZWVuCi0vLyBjaGFuZ2VkLgotVEVTVF9GKFRlc3RG
b3JEZWF0aFRlc3QsIEZhc3REZWF0aFRlc3RJbkNoYW5nZWREaXIpIHsKLSAgdGVzdGluZzo6R1RF
U1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLQotICBDaGFuZ2VUb1Jvb3REaXIo
KTsKLSAgRVhQRUNUX0VYSVQoX2V4aXQoMSksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDEpLCAi
Iik7Ci0KLSAgQ2hhbmdlVG9Sb290RGlyKCk7Ci0gIEFTU0VSVF9ERUFUSChfZXhpdCgxKSwgIiIp
OwotfQotCi0jIGlmIEdURVNUX09TX0xJTlVYCi12b2lkIFNpZ3Byb2ZBY3Rpb24oaW50LCBzaWdp
bmZvX3QqLCB2b2lkKikgeyAvKiBubyBvcCAqLyB9Ci0KLS8vIFNldHMgU0lHUFJPRiBhY3Rpb24g
YW5kIElUSU1FUl9QUk9GIHRpbWVyIChpbnRlcnZhbDogMW1zKS4KLXZvaWQgU2V0U2lncHJvZkFj
dGlvbkFuZFRpbWVyKCkgewotICBzdHJ1Y3QgaXRpbWVydmFsIHRpbWVyOwotICB0aW1lci5pdF9p
bnRlcnZhbC50dl9zZWMgPSAwOwotICB0aW1lci5pdF9pbnRlcnZhbC50dl91c2VjID0gMTsKLSAg
dGltZXIuaXRfdmFsdWUgPSB0aW1lci5pdF9pbnRlcnZhbDsKLSAgQVNTRVJUX0VRKDAsIHNldGl0
aW1lcihJVElNRVJfUFJPRiwgJnRpbWVyLCBOVUxMKSk7Ci0gIHN0cnVjdCBzaWdhY3Rpb24gc2ln
bmFsX2FjdGlvbjsKLSAgbWVtc2V0KCZzaWduYWxfYWN0aW9uLCAwLCBzaXplb2Yoc2lnbmFsX2Fj
dGlvbikpOwotICBzaWdlbXB0eXNldCgmc2lnbmFsX2FjdGlvbi5zYV9tYXNrKTsKLSAgc2lnbmFs
X2FjdGlvbi5zYV9zaWdhY3Rpb24gPSBTaWdwcm9mQWN0aW9uOwotICBzaWduYWxfYWN0aW9uLnNh
X2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87Ci0gIEFTU0VSVF9FUSgwLCBzaWdhY3Rp
b24oU0lHUFJPRiwgJnNpZ25hbF9hY3Rpb24sIE5VTEwpKTsKLX0KLQotLy8gRGlzYWJsZXMgSVRJ
TUVSX1BST0YgdGltZXIgYW5kIGlnbm9yZXMgU0lHUFJPRiBzaWduYWwuCi12b2lkIERpc2FibGVT
aWdwcm9mQWN0aW9uQW5kVGltZXIoc3RydWN0IHNpZ2FjdGlvbiogb2xkX3NpZ25hbF9hY3Rpb24p
IHsKLSAgc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsKLSAgdGltZXIuaXRfaW50ZXJ2YWwudHZfc2Vj
ID0gMDsKLSAgdGltZXIuaXRfaW50ZXJ2YWwudHZfdXNlYyA9IDA7Ci0gIHRpbWVyLml0X3ZhbHVl
ID0gdGltZXIuaXRfaW50ZXJ2YWw7Ci0gIEFTU0VSVF9FUSgwLCBzZXRpdGltZXIoSVRJTUVSX1BS
T0YsICZ0aW1lciwgTlVMTCkpOwotICBzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ25hbF9hY3Rpb247Ci0g
IG1lbXNldCgmc2lnbmFsX2FjdGlvbiwgMCwgc2l6ZW9mKHNpZ25hbF9hY3Rpb24pKTsKLSAgc2ln
ZW1wdHlzZXQoJnNpZ25hbF9hY3Rpb24uc2FfbWFzayk7Ci0gIHNpZ25hbF9hY3Rpb24uc2FfaGFu
ZGxlciA9IFNJR19JR047Ci0gIEFTU0VSVF9FUSgwLCBzaWdhY3Rpb24oU0lHUFJPRiwgJnNpZ25h
bF9hY3Rpb24sIG9sZF9zaWduYWxfYWN0aW9uKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGVhdGgg
dGVzdHMgd29yayB3aGVuIFNJR1BST0YgaGFuZGxlciBhbmQgdGltZXIgYXJlIHNldC4KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBGYXN0U2lncHJvZkFjdGlvblNldCkgewotICB0ZXN0aW5nOjpH
VEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gImZhc3QiOwotICBTZXRTaWdwcm9mQWN0aW9u
QW5kVGltZXIoKTsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gIHN0cnVjdCBzaWdh
Y3Rpb24gb2xkX3NpZ25hbF9hY3Rpb247Ci0gIERpc2FibGVTaWdwcm9mQWN0aW9uQW5kVGltZXIo
Jm9sZF9zaWduYWxfYWN0aW9uKTsKLSAgRVhQRUNUX1RSVUUob2xkX3NpZ25hbF9hY3Rpb24uc2Ff
c2lnYWN0aW9uID09IFNpZ3Byb2ZBY3Rpb24pOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgVGhyZWFkU2FmZVNpZ3Byb2ZBY3Rpb25TZXQpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgU2V0U2lncHJvZkFjdGlvbkFuZFRp
bWVyKCk7Ci0gIEVYUEVDVF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICBzdHJ1Y3Qgc2lnYWN0aW9u
IG9sZF9zaWduYWxfYWN0aW9uOwotICBEaXNhYmxlU2lncHJvZkFjdGlvbkFuZFRpbWVyKCZvbGRf
c2lnbmFsX2FjdGlvbik7Ci0gIEVYUEVDVF9UUlVFKG9sZF9zaWduYWxfYWN0aW9uLnNhX3NpZ2Fj
dGlvbiA9PSBTaWdwcm9mQWN0aW9uKTsKLX0KLSMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0K
LS8vIFJlcGVhdHMgYSByZXByZXNlbnRhdGl2ZSBzYW1wbGUgb2YgZGVhdGggdGVzdHMgaW4gdGhl
ICJ0aHJlYWRzYWZlIiBzdHlsZToKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFN0YXRpY01l
bWJlckZ1bmN0aW9uVGhyZWFkc2FmZVN0eWxlKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSkgPSAidGhyZWFkc2FmZSI7Ci0gIEFTU0VSVF9ERUFUSChTdGF0aWNNZW1i
ZXJGdW5jdGlvbigpLCAiZGVhdGguKlN0YXRpY01lbWJlciIpOwotfQotCi1URVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgTWVtYmVyRnVuY3Rpb25UaHJlYWRzYWZlU3R5bGUpIHsKLSAgdGVzdGluZzo6
R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJ0aHJlYWRzYWZlIjsKLSAgc2hvdWxkX2Rp
ZV8gPSB0cnVlOwotICBFWFBFQ1RfREVBVEgoTWVtYmVyRnVuY3Rpb24oKSwgImluc2lkZS4qTWVt
YmVyRnVuY3Rpb24iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRocmVhZHNhZmVE
ZWF0aFRlc3RJbkxvb3ApIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJ0aHJlYWRzYWZlIjsKLQotICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKLSAgICBF
WFBFQ1RfRVhJVChfZXhpdChpKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoaSksICIiKSA8PCAi
OiBpID0gIiA8PCBpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgVGhyZWFkc2FmZURl
YXRoVGVzdEluQ2hhbmdlZERpcikgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
c3R5bGUpID0gInRocmVhZHNhZmUiOwotCi0gIENoYW5nZVRvUm9vdERpcigpOwotICBFWFBFQ1Rf
RVhJVChfZXhpdCgxKSwgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMSksICIiKTsKLQotICBDaGFu
Z2VUb1Jvb3REaXIoKTsKLSAgQVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLVRFU1Rf
RihUZXN0Rm9yRGVhdGhUZXN0LCBNaXhlZFN0eWxlcykgewotICB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEgoX2V4aXQo
MSksICIiKTsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0
IjsKLSAgRVhQRUNUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci19Ci0KLSMgaWYgR1RFU1RfSEFTX0NM
T05FICYmIEdURVNUX0hBU19QVEhSRUFECi0KLW5hbWVzcGFjZSB7Ci0KLWJvb2wgcHRocmVhZF9m
bGFnOwotCi12b2lkIFNldFB0aHJlYWRGbGFnKCkgewotICBwdGhyZWFkX2ZsYWcgPSB0cnVlOwot
fQotCi19ICAvLyBuYW1lc3BhY2UKLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIERvZXNOb3RF
eGVjdXRlQXRmb3JrSG9va3MpIHsKLSAgaWYgKCF0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rl
c3RfdXNlX2ZvcmspKSB7Ci0gICAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxl
KSA9ICJ0aHJlYWRzYWZlIjsKLSAgICBwdGhyZWFkX2ZsYWcgPSBmYWxzZTsKLSAgICBBU1NFUlRf
RVEoMCwgcHRocmVhZF9hdGZvcmsoJlNldFB0aHJlYWRGbGFnLCBOVUxMLCBOVUxMKSk7Ci0gICAg
QVNTRVJUX0RFQVRIKF9leGl0KDEpLCAiIik7Ci0gICAgQVNTRVJUX0ZBTFNFKHB0aHJlYWRfZmxh
Zyk7Ci0gIH0KLX0KLQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0NMT05FICYmIEdURVNUX0hBU19Q
VEhSRUFECi0KLS8vIFRlc3RzIHRoYXQgYSBtZXRob2Qgb2YgYW5vdGhlciBjbGFzcyBjYW4gYmUg
dXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgTWV0aG9kT2ZB
bm90aGVyQ2xhc3MpIHsKLSAgY29uc3QgTWF5RGllIHgodHJ1ZSk7Ci0gIEFTU0VSVF9ERUFUSCh4
Lk1lbWJlckZ1bmN0aW9uKCksICJNYXlEaWVcXDpcXDpNZW1iZXJGdW5jdGlvbiIpOwotfQotCi0v
LyBUZXN0cyB0aGF0IGEgZ2xvYmFsIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVz
dC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBHbG9iYWxGdW5jdGlvbikgewotICBFWFBFQ1Rf
REVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgIkdsb2JhbEZ1bmN0aW9uIik7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgYW55IHZhbHVlIGNvbnZlcnRpYmxlIHRvIGFuIFJFIHdvcmtzIGFzIGEgc2Vjb25kCi0v
LyBhcmd1bWVudCB0byBFWFBFQ1RfREVBVEguCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgQWNj
ZXB0c0FueXRoaW5nQ29udmVydGlibGVUb1JFKSB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIHJlZ2V4
X2Nfc3RyW10gPSAiR2xvYmFsRnVuY3Rpb24iOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rp
b24oKSwgcmVnZXhfY19zdHIpOwotCi0gIGNvbnN0IHRlc3Rpbmc6OmludGVybmFsOjpSRSByZWdl
eChyZWdleF9jX3N0cik7Ci0gIEVYUEVDVF9ERUFUSChHbG9iYWxGdW5jdGlvbigpLCByZWdleCk7
Ci0KLSMgaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotICBjb25zdCA6OnN0cmluZyByZWdl
eF9zdHIocmVnZXhfY19zdHIpOwotICBFWFBFQ1RfREVBVEgoR2xvYmFsRnVuY3Rpb24oKSwgcmVn
ZXhfc3RyKTsKLQotIyBlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotIyBpZiAh
R1RFU1RfVVNFU19QQ1JFCi0KLSAgY29uc3QgOjpzdGQ6OnN0cmluZyByZWdleF9zdGRfc3RyKHJl
Z2V4X2Nfc3RyKTsKLSAgRVhQRUNUX0RFQVRIKEdsb2JhbEZ1bmN0aW9uKCksIHJlZ2V4X3N0ZF9z
dHIpOwotCi0jIGVuZGlmICAvLyAhR1RFU1RfVVNFU19QQ1JFCi19Ci0KLS8vIFRlc3RzIHRoYXQg
YSBub24tdm9pZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBhIGRlYXRoIHRlc3QuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgTm9uVm9pZEZ1bmN0aW9uKSB7Ci0gIEFTU0VSVF9ERUFUSChOb25W
b2lkRnVuY3Rpb24oKSwgIk5vblZvaWRGdW5jdGlvbiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IGZ1
bmN0aW9ucyB0aGF0IHRha2UgcGFyYW1ldGVyKHMpIGNhbiBiZSB1c2VkIGluIGEgZGVhdGggdGVz
dC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBGdW5jdGlvbldpdGhQYXJhbWV0ZXIpIHsKLSAg
RVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGllSWZcXChcXCkiKTsKLSAgRVhQRUNUX0RFQVRI
KERpZUlmTGVzc1RoYW4oMiwgMyksICJEaWVJZkxlc3NUaGFuIik7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgQVNTRVJUX0RFQVRIIGNhbiBiZSB1c2VkIG91dHNpZGUgYSBURVNULCBURVNUX0YsIG9yIHRl
c3QgZml4dHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBPdXRzaWRlRml4dHVyZSkgewot
ICBEZWF0aFRlc3RTdWJyb3V0aW5lKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGVhdGggdGVzdHMg
Y2FuIGJlIGRvbmUgaW5zaWRlIGEgbG9vcC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBJbnNp
ZGVMb29wKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0gICAgRVhQRUNUX0RF
QVRIKERpZUlmTGVzc1RoYW4oLTEsIGkpLCAiRGllSWZMZXNzVGhhbiIpIDw8ICJ3aGVyZSBpID09
ICIgPDwgaTsKLSAgfQotfQotCi0vLyBUZXN0cyB0aGF0IGEgY29tcG91bmQgc3RhdGVtZW50IGNh
biBiZSB1c2VkIGluIGEgZGVhdGggdGVzdC4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBDb21w
b3VuZFN0YXRlbWVudCkgewotICBFWFBFQ1RfREVBVEgoeyAgLy8gTk9MSU5UCi0gICAgY29uc3Qg
aW50IHggPSAyOwotICAgIGNvbnN0IGludCB5ID0geCArIDE7Ci0gICAgRGllSWZMZXNzVGhhbih4
LCB5KTsKLSAgfSwKLSAgIkRpZUlmTGVzc1RoYW4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBjb2Rl
IHRoYXQgZG9lc24ndCBkaWUgY2F1c2VzIGEgZGVhdGggdGVzdCB0byBmYWlsLgotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIERvZXNOb3REaWUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0RFQVRIKERpZUlmKGZhbHNlKSwgIkRpZUlmIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsZWQgdG8gZGllIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBkZWF0aCB0ZXN0
IGZhaWxzIHdoZW4gdGhlIGVycm9yIG1lc3NhZ2UgaXNuJ3QgZXhwZWN0ZWQuCi1URVNUX0YoVGVz
dEZvckRlYXRoVGVzdCwgRXJyb3JNZXNzYWdlTWlzbWF0Y2gpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0RFQVRIKERpZUlmKHRydWUpLCAiRGll
SWZMZXNzVGhhbiIpIDw8ICJFbmQgb2YgZGVhdGggdGVzdCBtZXNzYWdlLiI7Ci0gIH0sICJkaWVk
IGJ1dCBub3Qgd2l0aCBleHBlY3RlZCBlcnJvciIpOwotfQotCi0vLyBPbiBleGl0LCAqYWJvcnRl
ZCB3aWxsIGJlIHRydWUgaWZmIHRoZSBFWFBFQ1RfREVBVEgoKSBzdGF0ZW1lbnQKLS8vIGFib3J0
ZWQgdGhlIGZ1bmN0aW9uLgotdm9pZCBFeHBlY3REZWF0aFRlc3RIZWxwZXIoYm9vbCogYWJvcnRl
ZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEVYUEVDVF9ERUFUSChEaWVJZihmYWxzZSksICJE
aWVJZiIpOyAgLy8gVGhpcyBhc3NlcnRpb24gc2hvdWxkIGZhaWwuCi0gICphYm9ydGVkID0gZmFs
c2U7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0RFQVRIIGRvZXNuJ3QgYWJvcnQgdGhlIHRl
c3Qgb24gZmFpbHVyZS4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBFWFBFQ1RfREVBVEgpIHsK
LSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0
RGVhdGhUZXN0SGVscGVyKCZhYm9ydGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZh
aWxlZCB0byBkaWUiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi0vLyBUZXN0cyB0
aGF0IEFTU0VSVF9ERUFUSCBkb2VzIGFib3J0IHRoZSB0ZXN0IG9uIGZhaWx1cmUuCi1URVNUX0Yo
VGVzdEZvckRlYXRoVGVzdCwgQVNTRVJUX0RFQVRIKSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIGFib3J0ZWQgPSB0cnVl
OwotICAgIEFTU0VSVF9ERUFUSChEaWVJZihmYWxzZSksICJEaWVJZiIpOyAgLy8gVGhpcyBhc3Nl
cnRpb24gc2hvdWxkIGZhaWwuCi0gICAgYWJvcnRlZCA9IGZhbHNlOwotICB9LCAiZmFpbGVkIHRv
IGRpZSIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBF
Q1RfREVBVEggZXZhbHVhdGVzIHRoZSBhcmd1bWVudHMgZXhhY3RseSBvbmNlLgotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIFNpbmdsZUV2YWx1YXRpb24pIHsKLSAgaW50IHggPSAzOwotICBFWFBF
Q1RfREVBVEgoRGllSWYoKCsreCkgPT0gNCksICJEaWVJZiIpOwotCi0gIGNvbnN0IGNoYXIqIHJl
Z2V4ID0gIkRpZUlmIjsKLSAgY29uc3QgY2hhciogcmVnZXhfc2F2ZSA9IHJlZ2V4OwotICBFWFBF
Q1RfREVBVEgoRGllSWZMZXNzVGhhbigzLCA0KSwgcmVnZXgrKyk7Ci0gIEVYUEVDVF9FUShyZWdl
eF9zYXZlICsgMSwgcmVnZXgpOwotfQotCi0vLyBUZXN0cyB0aGF0IHJ1bi1hd2F5IGRlYXRoIHRl
c3RzIGFyZSByZXBvcnRlZCBhcyBmYWlsdXJlcy4KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBS
dW5hd2F5SXNGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ERUFU
SChzdGF0aWNfY2FzdDx2b2lkPigwKSwgIkZvbyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbGVkIHRvIGRpZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBkZWF0aCB0ZXN0cyByZXBv
cnQgZXhlY3V0aW5nICdyZXR1cm4nIGluIHRoZSBzdGF0ZW1lbnQgYXMKLS8vIGZhaWx1cmUuCi1U
RVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgUmV0dXJuSXNGYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9ERUFUSChyZXR1cm4sICJCYXIiKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgImlsbGVnYWwgcmV0dXJuIGluIHRlc3Qgc3RhdGVtZW50LiIpOwotfQotCi0vLyBUZXN0
cyB0aGF0IEVYUEVDVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwgdGhhdCBpcywgeW91
IGNhbiBzdHJlYW0gYQotLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRlYnVnIG1vZGUgaXQ6Ci0v
LyAxLiBBc3NlcnRzIG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZmZWN0LgotLy8KLS8v
IEFuZCBpbiBvcHQgbW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0cyBidXQgZG9lcyBu
b3QgYXNzZXJ0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RFeHBlY3REZWJ1Z0RlYXRo
KSB7Ci0gIGludCBzaWRlZWZmZWN0ID0gMDsKLQotICBFWFBFQ1RfREVCVUdfREVBVEgoRGllSW5E
ZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4qRGllSW5EZWJ1Z0Vsc2UxMiIpCi0gICAg
ICA8PCAiTXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKLQotIyBpZmRlZiBOREVCVUcK
LQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4gb3B0IG1vZGUgKHNp
ZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotCi0jIGVsc2UKLQotICAv
LyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBpbiBkYmcgbW9kZSAo
bm8gc2lkZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsKLQotIyBlbmRpZgot
fQotCi0vLyBUZXN0cyB0aGF0IEFTU0VSVF9ERUJVR19ERUFUSCB3b3JrcyBhcyBleHBlY3RlZCwg
dGhhdCBpcywgeW91IGNhbiBzdHJlYW0gYQotLy8gbWVzc2FnZSB0byBpdCwgYW5kIGluIGRlYnVn
IG1vZGUgaXQ6Ci0vLyAxLiBBc3NlcnRzIG9uIGRlYXRoLgotLy8gMi4gSGFzIG5vIHNpZGUgZWZm
ZWN0LgotLy8KLS8vIEFuZCBpbiBvcHQgbW9kZSwgaXQ6Ci0vLyAxLiAgSGFzIHNpZGUgZWZmZWN0
cyBidXQgZG9lcyBub3QgYXNzZXJ0LgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIFRlc3RBc3Nl
cnREZWJ1Z0RlYXRoKSB7Ci0gIGludCBzaWRlZWZmZWN0ID0gMDsKLQotICBBU1NFUlRfREVCVUdf
REVBVEgoRGllSW5EZWJ1Z0Vsc2UxMigmc2lkZWVmZmVjdCksICJkZWF0aC4qRGllSW5EZWJ1Z0Vs
c2UxMiIpCi0gICAgICA8PCAiTXVzdCBhY2NlcHQgYSBzdHJlYW1lZCBtZXNzYWdlIjsKLQotIyBp
ZmRlZiBOREVCVUcKLQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBvY2N1cnMgaW4g
b3B0IG1vZGUgKHNpZGVlZmZlY3QpLgotICBFWFBFQ1RfRVEoMTIsIHNpZGVlZmZlY3QpOwotCi0j
IGVsc2UKLQotICAvLyBDaGVja3MgdGhhdCB0aGUgYXNzaWdubWVudCBkb2VzIG5vdCBvY2N1ciBp
biBkYmcgbW9kZSAobm8gc2lkZWVmZmVjdCkuCi0gIEVYUEVDVF9FUSgwLCBzaWRlZWZmZWN0KTsK
LQotIyBlbmRpZgotfQotCi0jIGlmbmRlZiBOREVCVUcKLQotdm9pZCBFeHBlY3REZWJ1Z0RlYXRo
SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgKmFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfREVC
VUdfREVBVEgocmV0dXJuLCAiIikgPDwgIlRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbC4iOwotICAq
YWJvcnRlZCA9IGZhbHNlOwotfQotCi0jICBpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKFBvcFVw
RGVhdGhUZXN0LCBEb2VzTm90U2hvd1BvcFVwT25BYm9ydCkgewotICBwcmludGYoIlRoaXMgdGVz
dCBzaG91bGQgYmUgY29uc2lkZXJlZCBmYWlsaW5nIGlmIGl0IHNob3dzICIKLSAgICAgICAgICJh
bnkgcG9wLXVwIGRpYWxvZ3MuXG4iKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci0KLSAgRVhQRUNUX0RF
QVRIKHsKLSAgICB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpID0gZmFsc2U7
Ci0gICAgYWJvcnQoKTsKLSAgfSwgIiIpOwotfQotIyAgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBkb2Vz
IG5vdCBhYm9ydAotLy8gdGhlIGZ1bmN0aW9uLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4
cGVjdERlYnVnRGVhdGhEb2VzTm90QWJvcnQpIHsKLSAgYm9vbCBhYm9ydGVkID0gdHJ1ZTsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRXhwZWN0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCks
ICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGFib3J0ZWQpOwotfQotCi12b2lkIEFzc2VydERlYnVnRGVh
dGhIZWxwZXIoYm9vbCogYWJvcnRlZCkgewotICAqYWJvcnRlZCA9IHRydWU7Ci0gIEdURVNUX0xP
R18oSU5GTykgPDwgIkJlZm9yZSBBU1NFUlRfREVCVUdfREVBVEgiOwotICBBU1NFUlRfREVCVUdf
REVBVEgoR1RFU1RfTE9HXyhJTkZPKSA8PCAiSW4gQVNTRVJUX0RFQlVHX0RFQVRIIjsgcmV0dXJu
LCAiIikKLSAgICAgIDw8ICJUaGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwuIjsKLSAgR1RFU1RfTE9H
XyhJTkZPKSA8PCAiQWZ0ZXIgQVNTRVJUX0RFQlVHX0RFQVRIIjsKLSAgKmFib3J0ZWQgPSBmYWxz
ZTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVCVUdfREVBVEggaW4gZGVidWcgbW9kZSBh
Ym9ydHMgdGhlIGZ1bmN0aW9uIG9uCi0vLyBmYWlsdXJlLgotVEVTVF9GKFRlc3RGb3JEZWF0aFRl
c3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAg
YWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHMyKSB7Ci0gIHN0YXRp
YyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzMykgewotICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBhYm9ydGVkID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czQpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAg
YWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM1KSB7Ci0gIHN0YXRp
YyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzNikgewotICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBhYm9ydGVkID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czcpIHsKLSAgc3RhdGljIGJvb2wgYWJvcnRlZDsKLSAg
YWJvcnRlZCA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBc3NlcnREZWJ1Z0RlYXRo
SGVscGVyKCZhYm9ydGVkKSwgIiIpOwotICBFWFBFQ1RfVFJVRShhYm9ydGVkKTsKLX0KLQotVEVT
VF9GKFRlc3RGb3JEZWF0aFRlc3QsIEFzc2VydERlYnVnRGVhdGhBYm9ydHM4KSB7Ci0gIHN0YXRp
YyBib29sIGFib3J0ZWQ7Ci0gIGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoQXNzZXJ0RGVidWdEZWF0aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUo
YWJvcnRlZCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBBc3NlcnREZWJ1Z0RlYXRo
QWJvcnRzOSkgewotICBzdGF0aWMgYm9vbCBhYm9ydGVkOwotICBhYm9ydGVkID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFzc2VydERlYnVnRGVhdGhIZWxwZXIoJmFib3J0ZWQpLCAi
Iik7Ci0gIEVYUEVDVF9UUlVFKGFib3J0ZWQpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVz
dCwgQXNzZXJ0RGVidWdEZWF0aEFib3J0czEwKSB7Ci0gIHN0YXRpYyBib29sIGFib3J0ZWQ7Ci0g
IGFib3J0ZWQgPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQXNzZXJ0RGVidWdEZWF0
aEhlbHBlcigmYWJvcnRlZCksICIiKTsKLSAgRVhQRUNUX1RSVUUoYWJvcnRlZCk7Ci19Ci0KLSMg
ZW5kaWYgIC8vIF9OREVCVUcKLQotLy8gVGVzdHMgdGhlICpfRVhJVCBmYW1pbHkgb2YgbWFjcm9z
LCB1c2luZyBhIHZhcmlldHkgb2YgcHJlZGljYXRlcy4KLXN0YXRpYyB2b2lkIFRlc3RFeGl0TWFj
cm9zKCkgewotICBFWFBFQ1RfRVhJVChfZXhpdCgxKSwgIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2Rl
KDEpLCAgIiIpOwotICBBU1NFUlRfRVhJVChfZXhpdCg0MiksIHRlc3Rpbmc6OkV4aXRlZFdpdGhD
b2RlKDQyKSwgIiIpOwotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLQotICAvLyBPZiBhbGwgc2ln
bmFscyBlZmZlY3RzIG9uIHRoZSBwcm9jZXNzIGV4aXQgY29kZSwgb25seSB0aG9zZSBvZiBTSUdB
QlJUCi0gIC8vIGFyZSBkb2N1bWVudGVkIG9uIFdpbmRvd3MuCi0gIC8vIFNlZSBodHRwOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZHd3emt0NGMoVlMuNzEpLmFzcHguCi0gIEVY
UEVDVF9FWElUKHJhaXNlKFNJR0FCUlQpLCB0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29kZSgzKSwgIiIp
IDw8ICJiX2FyIjsKLQotIyBlbHNlCi0KLSAgRVhQRUNUX0VYSVQocmFpc2UoU0lHS0lMTCksIHRl
c3Rpbmc6OktpbGxlZEJ5U2lnbmFsKFNJR0tJTEwpLCAiIikgPDwgImZvbyI7Ci0gIEFTU0VSVF9F
WElUKHJhaXNlKFNJR1VTUjIpLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdVU1IyKSwgIiIp
IDw8ICJiYXIiOwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFT
U0VSVF9FWElUKF9leGl0KDApLCB0ZXN0aW5nOjpLaWxsZWRCeVNpZ25hbChTSUdTRUdWKSwgIiIp
Ci0gICAgICA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCB0b28uIjsKLSAgfSwgIlRoaXMg
ZmFpbHVyZSBpcyBleHBlY3RlZCwgdG9vLiIpOwotCi0jIGVuZGlmICAvLyBHVEVTVF9PU19XSU5E
T1dTCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNU
X0VYSVQocmFpc2UoU0lHU0VHViksIHRlc3Rpbmc6OkV4aXRlZFdpdGhDb2RlKDApLCAiIikKLSAg
ICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBp
cyBleHBlY3RlZC4iKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4aXRNYWNyb3Mp
IHsKLSAgVGVzdEV4aXRNYWNyb3MoKTsKLX0KLQotVEVTVF9GKFRlc3RGb3JEZWF0aFRlc3QsIEV4
aXRNYWNyb3NVc2luZ0ZvcmspIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3Vz
ZV9mb3JrKSA9IHRydWU7Ci0gIFRlc3RFeGl0TWFjcm9zKCk7Ci19Ci0KLVRFU1RfRihUZXN0Rm9y
RGVhdGhUZXN0LCBJbnZhbGlkU3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJyb2NvY28iOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Ci19Ci0KLVRF
U1RfRihUZXN0Rm9yRGVhdGhUZXN0LCBEZWF0aFRlc3RGYWlsZWRPdXRwdXQpIHsKLSAgdGVzdGlu
Zzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfREVBVEgoRGllV2l0aE1lc3NhZ2UoImRlYXRoXG4i
KSwKLSAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAotICAgICAgIkFjdHVh
bCBtc2c6XG4iCi0gICAgICAiWyAgREVBVEggICBdIGRlYXRoXG4iKTsKLX0KLQotVEVTVF9GKFRl
c3RGb3JEZWF0aFRlc3QsIERlYXRoVGVzdFVuZXhwZWN0ZWRSZXR1cm5PdXRwdXQpIHsKLSAgdGVz
dGluZzo6R1RFU1RfRkxBRyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfREVBVEgoewotICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAicmV0dXJuaW5nXG4iKTsKLSAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKLSAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0sICIiKSwKLSAgICAgICIgICAgUmVzdWx0OiBpbGxlZ2Fs
IHJldHVybiBpbiB0ZXN0IHN0YXRlbWVudC5cbiIKLSAgICAgICIgRXJyb3IgbXNnOlxuIgotICAg
ICAgIlsgIERFQVRIICAgXSByZXR1cm5pbmdcbiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRo
VGVzdCwgRGVhdGhUZXN0QmFkRXhpdENvZGVPdXRwdXQpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxB
RyhkZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBFWFBFQ1RfRVhJVChEaWVXaXRoTWVzc2FnZSgiZXhpdGluZyB3aXRoIHJjIDFcbiIp
LAotICAgICAgICAgICAgICAgICAgdGVzdGluZzo6RXhpdGVkV2l0aENvZGUoMyksCi0gICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgbWVzc2FnZSIpLAotICAgICAgIiAgICBSZXN1bHQ6IGRpZWQg
YnV0IG5vdCB3aXRoIGV4cGVjdGVkIGV4aXQgY29kZTpcbiIKLSAgICAgICIgICAgICAgICAgICBF
eGl0ZWQgd2l0aCBleGl0IHN0YXR1cyAxXG4iCi0gICAgICAiQWN0dWFsIG1zZzpcbiIKLSAgICAg
ICJbICBERUFUSCAgIF0gZXhpdGluZyB3aXRoIHJjIDFcbiIpOwotfQotCi1URVNUX0YoVGVzdEZv
ckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5lTWF0Y2hGYWlsKSB7Ci0gIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAiZmFzdCI7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKAotICAgICAgRVhQRUNUX0RFQVRIKERpZVdpdGhNZXNzYWdlKCJsaW5lIDFcbmxpbmUg
MlxubGluZSAzXG4iKSwKLSAgICAgICAgICAgICAgICAgICAibGluZSAxXG54eXpcbmxpbmUgM1xu
IiksCi0gICAgICAiQWN0dWFsIG1zZzpcbiIKLSAgICAgICJbICBERUFUSCAgIF0gbGluZSAxXG4i
Ci0gICAgICAiWyAgREVBVEggICBdIGxpbmUgMlxuIgotICAgICAgIlsgIERFQVRIICAgXSBsaW5l
IDNcbiIpOwotfQotCi1URVNUX0YoVGVzdEZvckRlYXRoVGVzdCwgRGVhdGhUZXN0TXVsdGlMaW5l
TWF0Y2hQYXNzKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVhdGhfdGVzdF9zdHlsZSkgPSAi
ZmFzdCI7Ci0gIEVYUEVDVF9ERUFUSChEaWVXaXRoTWVzc2FnZSgibGluZSAxXG5saW5lIDJcbmxp
bmUgM1xuIiksCi0gICAgICAgICAgICAgICAibGluZSAxXG5saW5lIDJcbmxpbmUgM1xuIik7Ci19
Ci0KLS8vIEEgRGVhdGhUZXN0RmFjdG9yeSB0aGF0IHJldHVybnMgTW9ja0RlYXRoVGVzdHMuCi1j
bGFzcyBNb2NrRGVhdGhUZXN0RmFjdG9yeSA6IHB1YmxpYyBEZWF0aFRlc3RGYWN0b3J5IHsKLSBw
dWJsaWM6Ci0gIE1vY2tEZWF0aFRlc3RGYWN0b3J5KCk7Ci0gIHZpcnR1YWwgYm9vbCBDcmVhdGUo
Y29uc3QgY2hhciogc3RhdGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6dGVz
dGluZzo6aW50ZXJuYWw6OlJFKiByZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBmaWxlLCBpbnQgbGluZSwgRGVhdGhUZXN0KiogdGVzdCk7Ci0KLSAgLy8gU2V0cyB0aGUg
cGFyYW1ldGVycyBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi0gIHZvaWQgU2V0UGFy
YW1ldGVycyhib29sIGNyZWF0ZSwgRGVhdGhUZXN0OjpUZXN0Um9sZSByb2xlLAotICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpOwotCi0gIC8vIEFjY2Vzc29ycy4K
LSAgaW50IEFzc3VtZVJvbGVDYWxscygpIGNvbnN0IHsgcmV0dXJuIGFzc3VtZV9yb2xlX2NhbGxz
XzsgfQotICBpbnQgV2FpdENhbGxzKCkgY29uc3QgeyByZXR1cm4gd2FpdF9jYWxsc187IH0KLSAg
c2l6ZV90IFBhc3NlZENhbGxzKCkgY29uc3QgeyByZXR1cm4gcGFzc2VkX2FyZ3NfLnNpemUoKTsg
fQotICBib29sIFBhc3NlZEFyZ3VtZW50KGludCBuKSBjb25zdCB7IHJldHVybiBwYXNzZWRfYXJn
c19bbl07IH0KLSAgc2l6ZV90IEFib3J0Q2FsbHMoKSBjb25zdCB7IHJldHVybiBhYm9ydF9hcmdz
Xy5zaXplKCk7IH0KLSAgRGVhdGhUZXN0OjpBYm9ydFJlYXNvbiBBYm9ydEFyZ3VtZW50KGludCBu
KSBjb25zdCB7Ci0gICAgcmV0dXJuIGFib3J0X2FyZ3NfW25dOwotICB9Ci0gIGJvb2wgVGVzdERl
bGV0ZWQoKSBjb25zdCB7IHJldHVybiB0ZXN0X2RlbGV0ZWRfOyB9Ci0KLSBwcml2YXRlOgotICBm
cmllbmQgY2xhc3MgTW9ja0RlYXRoVGVzdDsKLSAgLy8gSWYgdHJ1ZSwgQ3JlYXRlIHdpbGwgcmV0
dXJuIGEgTW9ja0RlYXRoVGVzdDsgb3RoZXJ3aXNlIGl0IHJldHVybnMKLSAgLy8gTlVMTC4KLSAg
Ym9vbCBjcmVhdGVfOwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJu
IGZyb20gaXRzIEFzc3VtZVJvbGUgbWV0aG9kLgotICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGVf
OwotICAvLyBUaGUgdmFsdWUgYSBNb2NrRGVhdGhUZXN0IHdpbGwgcmV0dXJuIGZyb20gaXRzIFdh
aXQgbWV0aG9kLgotICBpbnQgc3RhdHVzXzsKLSAgLy8gVGhlIHZhbHVlIGEgTW9ja0RlYXRoVGVz
dCB3aWxsIHJldHVybiBmcm9tIGl0cyBQYXNzZWQgbWV0aG9kLgotICBib29sIHBhc3NlZF87Ci0K
LSAgLy8gTnVtYmVyIG9mIHRpbWVzIEFzc3VtZVJvbGUgd2FzIGNhbGxlZC4KLSAgaW50IGFzc3Vt
ZV9yb2xlX2NhbGxzXzsKLSAgLy8gTnVtYmVyIG9mIHRpbWVzIFdhaXQgd2FzIGNhbGxlZC4KLSAg
aW50IHdhaXRfY2FsbHNfOwotICAvLyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjYWxscyB0byBQYXNz
ZWQgc2luY2UgdGhlIGxhc3QgY2FsbCB0bwotICAvLyBTZXRQYXJhbWV0ZXJzLgotICBzdGQ6OnZl
Y3Rvcjxib29sPiBwYXNzZWRfYXJnc187Ci0gIC8vIFRoZSBhcmd1bWVudHMgdG8gdGhlIGNhbGxz
IHRvIEFib3J0IHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KLSAgLy8gU2V0UGFyYW1ldGVycy4KLSAg
c3RkOjp2ZWN0b3I8RGVhdGhUZXN0OjpBYm9ydFJlYXNvbj4gYWJvcnRfYXJnc187Ci0gIC8vIFRy
dWUgaWYgdGhlIGxhc3QgTW9ja0RlYXRoVGVzdCByZXR1cm5lZCBieSBDcmVhdGUgaGFzIGJlZW4K
LSAgLy8gZGVsZXRlZC4KLSAgYm9vbCB0ZXN0X2RlbGV0ZWRfOwotfTsKLQotCi0vLyBBIERlYXRo
VGVzdCBpbXBsZW1lbnRhdGlvbiB1c2VmdWwgaW4gdGVzdGluZy4gIEl0IHJldHVybnMgdmFsdWVz
IHNldAotLy8gYXQgaXRzIGNyZWF0aW9uIGZyb20gaXRzIHZhcmlvdXMgaW5oZXJpdGVkIERlYXRo
VGVzdCBtZXRob2RzLCBhbmQKLS8vIHJlcG9ydHMgY2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB0byBp
dHMgcGFyZW50IE1vY2tEZWF0aFRlc3RGYWN0b3J5Ci0vLyBvYmplY3QuCi1jbGFzcyBNb2NrRGVh
dGhUZXN0IDogcHVibGljIERlYXRoVGVzdCB7Ci0gcHVibGljOgotICBNb2NrRGVhdGhUZXN0KE1v
Y2tEZWF0aFRlc3RGYWN0b3J5ICpwYXJlbnQsCi0gICAgICAgICAgICAgICAgVGVzdFJvbGUgcm9s
ZSwgaW50IHN0YXR1cywgYm9vbCBwYXNzZWQpIDoKLSAgICAgIHBhcmVudF8ocGFyZW50KSwgcm9s
ZV8ocm9sZSksIHN0YXR1c18oc3RhdHVzKSwgcGFzc2VkXyhwYXNzZWQpIHsKLSAgfQotICB2aXJ0
dWFsIH5Nb2NrRGVhdGhUZXN0KCkgewotICAgIHBhcmVudF8tPnRlc3RfZGVsZXRlZF8gPSB0cnVl
OwotICB9Ci0gIHZpcnR1YWwgVGVzdFJvbGUgQXNzdW1lUm9sZSgpIHsKLSAgICArK3BhcmVudF8t
PmFzc3VtZV9yb2xlX2NhbGxzXzsKLSAgICByZXR1cm4gcm9sZV87Ci0gIH0KLSAgdmlydHVhbCBp
bnQgV2FpdCgpIHsKLSAgICArK3BhcmVudF8tPndhaXRfY2FsbHNfOwotICAgIHJldHVybiBzdGF0
dXNfOwotICB9Ci0gIHZpcnR1YWwgYm9vbCBQYXNzZWQoYm9vbCBleGl0X3N0YXR1c19vaykgewot
ICAgIHBhcmVudF8tPnBhc3NlZF9hcmdzXy5wdXNoX2JhY2soZXhpdF9zdGF0dXNfb2spOwotICAg
IHJldHVybiBwYXNzZWRfOwotICB9Ci0gIHZpcnR1YWwgdm9pZCBBYm9ydChBYm9ydFJlYXNvbiBy
ZWFzb24pIHsKLSAgICBwYXJlbnRfLT5hYm9ydF9hcmdzXy5wdXNoX2JhY2socmVhc29uKTsKLSAg
fQotCi0gcHJpdmF0ZToKLSAgTW9ja0RlYXRoVGVzdEZhY3RvcnkqIGNvbnN0IHBhcmVudF87Ci0g
IGNvbnN0IFRlc3RSb2xlIHJvbGVfOwotICBjb25zdCBpbnQgc3RhdHVzXzsKLSAgY29uc3QgYm9v
bCBwYXNzZWRfOwotfTsKLQotCi0vLyBNb2NrRGVhdGhUZXN0RmFjdG9yeSBjb25zdHJ1Y3Rvci4K
LU1vY2tEZWF0aFRlc3RGYWN0b3J5OjpNb2NrRGVhdGhUZXN0RmFjdG9yeSgpCi0gICAgOiBjcmVh
dGVfKHRydWUpLAotICAgICAgcm9sZV8oRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QpLAotICAgICAg
c3RhdHVzXygwKSwKLSAgICAgIHBhc3NlZF8odHJ1ZSksCi0gICAgICBhc3N1bWVfcm9sZV9jYWxs
c18oMCksCi0gICAgICB3YWl0X2NhbGxzXygwKSwKLSAgICAgIHBhc3NlZF9hcmdzXygpLAotICAg
ICAgYWJvcnRfYXJnc18oKSB7Ci19Ci0KLQotLy8gU2V0cyB0aGUgcGFyYW1ldGVycyBmb3Igc3Vi
c2VxdWVudCBjYWxscyB0byBDcmVhdGUuCi12b2lkIE1vY2tEZWF0aFRlc3RGYWN0b3J5OjpTZXRQ
YXJhbWV0ZXJzKGJvb2wgY3JlYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEZWF0aFRlc3Q6OlRlc3RSb2xlIHJvbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMsIGJvb2wgcGFzc2VkKSB7Ci0gIGNyZWF0ZV8g
PSBjcmVhdGU7Ci0gIHJvbGVfID0gcm9sZTsKLSAgc3RhdHVzXyA9IHN0YXR1czsKLSAgcGFzc2Vk
XyA9IHBhc3NlZDsKLQotICBhc3N1bWVfcm9sZV9jYWxsc18gPSAwOwotICB3YWl0X2NhbGxzXyA9
IDA7Ci0gIHBhc3NlZF9hcmdzXy5jbGVhcigpOwotICBhYm9ydF9hcmdzXy5jbGVhcigpOwotfQot
Ci0KLS8vIFNldHMgdGVzdCB0byBOVUxMIChpZiBjcmVhdGVfIGlzIGZhbHNlKSBvciB0byB0aGUg
YWRkcmVzcyBvZiBhIG5ldwotLy8gTW9ja0RlYXRoVGVzdCBvYmplY3Qgd2l0aCBwYXJhbWV0ZXJz
IHRha2VuIGZyb20gdGhlIGxhc3QgY2FsbAotLy8gdG8gU2V0UGFyYW1ldGVycyAoaWYgY3JlYXRl
XyBpcyB0cnVlKS4gIEFsd2F5cyByZXR1cm5zIHRydWUuCi1ib29sIE1vY2tEZWF0aFRlc3RGYWN0
b3J5OjpDcmVhdGUoY29uc3QgY2hhciogLypzdGF0ZW1lbnQqLywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCA6OnRlc3Rpbmc6OmludGVybmFsOjpSRSogLypyZWdleCov
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIC8qZmlsZSov
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAvKmxpbmUqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWF0aFRlc3QqKiB0ZXN0KSB7Ci0gIHRlc3Rf
ZGVsZXRlZF8gPSBmYWxzZTsKLSAgaWYgKGNyZWF0ZV8pIHsKLSAgICAqdGVzdCA9IG5ldyBNb2Nr
RGVhdGhUZXN0KHRoaXMsIHJvbGVfLCBzdGF0dXNfLCBwYXNzZWRfKTsKLSAgfSBlbHNlIHsKLSAg
ICAqdGVzdCA9IE5VTEw7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIEEgdGVzdCBmaXh0
dXJlIGZvciB0ZXN0aW5nIHRoZSBsb2dpYyBvZiB0aGUgR1RFU1RfREVBVEhfVEVTVF8gbWFjcm8u
Ci0vLyBJdCBpbnN0YWxscyBhIE1vY2tEZWF0aFRlc3RGYWN0b3J5IHRoYXQgaXMgdXNlZCBmb3Ig
dGhlIGR1cmF0aW9uCi0vLyBvZiB0aGUgdGVzdCBjYXNlLgotY2xhc3MgTWFjcm9Mb2dpY0RlYXRo
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0YXRpYyB0ZXN0
aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIHJlcGxhY2VyXzsKLSAgc3Rh
dGljIE1vY2tEZWF0aFRlc3RGYWN0b3J5KiBmYWN0b3J5XzsKLQotICBzdGF0aWMgdm9pZCBTZXRV
cFRlc3RDYXNlKCkgewotICAgIGZhY3RvcnlfID0gbmV3IE1vY2tEZWF0aFRlc3RGYWN0b3J5Owot
ICAgIHJlcGxhY2VyXyA9IG5ldyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZh
Y3RvcnkoZmFjdG9yeV8pOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgp
IHsKLSAgICBkZWxldGUgcmVwbGFjZXJfOwotICAgIHJlcGxhY2VyXyA9IE5VTEw7Ci0gICAgZGVs
ZXRlIGZhY3RvcnlfOwotICAgIGZhY3RvcnlfID0gTlVMTDsKLSAgfQotCi0gIC8vIFJ1bnMgYSBk
ZWF0aCB0ZXN0IHRoYXQgYnJlYWtzIHRoZSBydWxlcyBieSByZXR1cm5pbmcuICBTdWNoIGEgZGVh
dGgKLSAgLy8gdGVzdCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IGZyb20gYSB0ZXN0IHJvdXRpbmUg
dGhhdCB1c2VzIGEKLSAgLy8gTW9ja0RlYXRoVGVzdCwgb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUg
cm91dGluZSB3aWxsIG5vdCBiZSBleGVjdXRlZC4KLSAgc3RhdGljIHZvaWQgUnVuUmV0dXJuaW5n
RGVhdGhUZXN0KGJvb2wqIGZsYWcpIHsKLSAgICBBU1NFUlRfREVBVEgoeyAgLy8gTk9MSU5UCi0g
ICAgICAqZmxhZyA9IHRydWU7Ci0gICAgICByZXR1cm47Ci0gICAgfSwgIiIpOwotICB9Ci19Owot
Ci10ZXN0aW5nOjppbnRlcm5hbDo6UmVwbGFjZURlYXRoVGVzdEZhY3RvcnkqIE1hY3JvTG9naWNE
ZWF0aFRlc3Q6OnJlcGxhY2VyXwotICAgID0gTlVMTDsKLU1vY2tEZWF0aFRlc3RGYWN0b3J5KiBN
YWNyb0xvZ2ljRGVhdGhUZXN0OjpmYWN0b3J5XyA9IE5VTEw7Ci0KLQotLy8gVGVzdCB0aGF0IG5v
dGhpbmcgaGFwcGVucyB3aGVuIHRoZSBmYWN0b3J5IGRvZXNuJ3QgcmV0dXJuIGEgRGVhdGhUZXN0
OgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRlc3QsIE5vdGhpbmdIYXBwZW5zKSB7Ci0gIGJvb2wg
ZmxhZyA9IGZhbHNlOwotICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyhmYWxzZSwgRGVhdGhUZXN0
OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIi
KTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1RfRVEoMCwgZmFjdG9yeV8tPkFzc3Vt
ZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDAsIGZhY3RvcnlfLT5XYWl0Q2FsbHMoKSk7Ci0g
IEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxzKCkpOwotICBFWFBFQ1RfRVEoMFUs
IGZhY3RvcnlfLT5BYm9ydENhbGxzKCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlRlc3RE
ZWxldGVkKCkpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhlIHBhcmVudCBwcm9jZXNzIGRvZXNuJ3Qg
cnVuIHRoZSBkZWF0aCB0ZXN0IGNvZGUsCi0vLyBhbmQgdGhhdCB0aGUgUGFzc2VkIG1ldGhvZCBy
ZXR1cm5zIGZhbHNlIHdoZW4gdGhlIChzaW11bGF0ZWQpCi0vLyBjaGlsZCBwcm9jZXNzIGV4aXRz
IHdpdGggc3RhdHVzIDA6Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRoVGVzdCwgQ2hpbGRFeGl0c1N1
Y2Nlc3NmdWxseSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8tPlNldFBhcmFt
ZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpPVkVSU0VFX1RFU1QsIDAsIHRydWUpOwotICBFWFBFQ1Rf
REVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX0ZBTFNFKGZsYWcpOwotICBFWFBFQ1Rf
RVEoMSwgZmFjdG9yeV8tPkFzc3VtZVJvbGVDYWxscygpKTsKLSAgRVhQRUNUX0VRKDEsIGZhY3Rv
cnlfLT5XYWl0Q2FsbHMoKSk7Ci0gIEFTU0VSVF9FUSgxVSwgZmFjdG9yeV8tPlBhc3NlZENhbGxz
KCkpOwotICBFWFBFQ1RfRkFMU0UoZmFjdG9yeV8tPlBhc3NlZEFyZ3VtZW50KDApKTsKLSAgRVhQ
RUNUX0VRKDBVLCBmYWN0b3J5Xy0+QWJvcnRDYWxscygpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9y
eV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBQYXNzZWQgbWV0aG9k
IHdhcyBnaXZlbiB0aGUgYXJndW1lbnQgInRydWUiIHdoZW4KLS8vIHRoZSAoc2ltdWxhdGVkKSBj
aGlsZCBwcm9jZXNzIGV4aXRzIHdpdGggc3RhdHVzIDE6Ci1URVNUX0YoTWFjcm9Mb2dpY0RlYXRo
VGVzdCwgQ2hpbGRFeGl0c1Vuc3VjY2Vzc2Z1bGx5KSB7Ci0gIGJvb2wgZmxhZyA9IGZhbHNlOwot
ICBmYWN0b3J5Xy0+U2V0UGFyYW1ldGVycyh0cnVlLCBEZWF0aFRlc3Q6Ok9WRVJTRUVfVEVTVCwg
MSwgdHJ1ZSk7Ci0gIEVYUEVDVF9ERUFUSChmbGFnID0gdHJ1ZSwgIiIpOwotICBFWFBFQ1RfRkFM
U0UoZmxhZyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwot
ICBFWFBFQ1RfRVEoMSwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgQVNTRVJUX0VRKDFVLCBm
YWN0b3J5Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5QYXNzZWRB
cmd1bWVudCgwKSk7Ci0gIEVYUEVDVF9FUSgwVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0g
IEVYUEVDVF9UUlVFKGZhY3RvcnlfLT5UZXN0RGVsZXRlZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgKHNpbXVsYXRlZCkgY2hpbGQgcHJvY2VzcyBleGVjdXRlcyB0aGUgZGVhdGggdGVzdAot
Ly8gY29kZSwgYW5kIGlzIGFib3J0ZWQgd2l0aCB0aGUgY29ycmVjdCBBYm9ydFJlYXNvbiBpZiBp
dAotLy8gZXhlY3V0ZXMgYSByZXR1cm4gc3RhdGVtZW50LgotVEVTVF9GKE1hY3JvTG9naWNEZWF0
aFRlc3QsIENoaWxkUGVyZm9ybXNSZXR1cm4pIHsKLSAgYm9vbCBmbGFnID0gZmFsc2U7Ci0gIGZh
Y3RvcnlfLT5TZXRQYXJhbWV0ZXJzKHRydWUsIERlYXRoVGVzdDo6RVhFQ1VURV9URVNULCAwLCB0
cnVlKTsKLSAgUnVuUmV0dXJuaW5nRGVhdGhUZXN0KCZmbGFnKTsKLSAgRVhQRUNUX1RSVUUoZmxh
Zyk7Ci0gIEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBF
Q1RfRVEoMCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5
Xy0+UGFzc2VkQ2FsbHMoKSk7Ci0gIEVYUEVDVF9FUSgxVSwgZmFjdG9yeV8tPkFib3J0Q2FsbHMo
KSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRF
TUVOVCwKLSAgICAgICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDApKTsKLSAgRVhQRUNU
X1RSVUUoZmFjdG9yeV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAo
c2ltdWxhdGVkKSBjaGlsZCBwcm9jZXNzIGlzIGFib3J0ZWQgd2l0aCB0aGUKLS8vIGNvcnJlY3Qg
QWJvcnRSZWFzb24gaWYgaXQgZG9lcyBub3QgZGllLgotVEVTVF9GKE1hY3JvTG9naWNEZWF0aFRl
c3QsIENoaWxkRG9lc05vdERpZSkgewotICBib29sIGZsYWcgPSBmYWxzZTsKLSAgZmFjdG9yeV8t
PlNldFBhcmFtZXRlcnModHJ1ZSwgRGVhdGhUZXN0OjpFWEVDVVRFX1RFU1QsIDAsIHRydWUpOwot
ICBFWFBFQ1RfREVBVEgoZmxhZyA9IHRydWUsICIiKTsKLSAgRVhQRUNUX1RSVUUoZmxhZyk7Ci0g
IEVYUEVDVF9FUSgxLCBmYWN0b3J5Xy0+QXNzdW1lUm9sZUNhbGxzKCkpOwotICBFWFBFQ1RfRVEo
MCwgZmFjdG9yeV8tPldhaXRDYWxscygpKTsKLSAgRVhQRUNUX0VRKDBVLCBmYWN0b3J5Xy0+UGFz
c2VkQ2FsbHMoKSk7Ci0gIC8vIFRoaXMgdGltZSB0aGVyZSBhcmUgdHdvIGNhbGxzIHRvIEFib3J0
OiBvbmUgc2luY2UgdGhlIHRlc3QgZGlkbid0Ci0gIC8vIGRpZSwgYW5kIGFub3RoZXIgZnJvbSB0
aGUgUmV0dXJuU2VudGluZWwgd2hlbiBpdCdzIGRlc3Ryb3llZC4gIFRoZQotICAvLyBzZW50aW5l
bCBub3JtYWxseSBpc24ndCBkZXN0cm95ZWQgaWYgYSB0ZXN0IGRvZXNuJ3QgZGllLCBzaW5jZQot
ICAvLyBfZXhpdCgyKSBpcyBjYWxsZWQgaW4gdGhhdCBjYXNlIGJ5IEZvcmtpbmdEZWF0aFRlc3Qs
IGJ1dCBub3QgYnkKLSAgLy8gb3VyIE1vY2tEZWF0aFRlc3QuCi0gIEFTU0VSVF9FUSgyVSwgZmFj
dG9yeV8tPkFib3J0Q2FsbHMoKSk7Ci0gIEVYUEVDVF9FUShEZWF0aFRlc3Q6OlRFU1RfRElEX05P
VF9ESUUsCi0gICAgICAgICAgICBmYWN0b3J5Xy0+QWJvcnRBcmd1bWVudCgwKSk7Ci0gIEVYUEVD
VF9FUShEZWF0aFRlc3Q6OlRFU1RfRU5DT1VOVEVSRURfUkVUVVJOX1NUQVRFTUVOVCwKLSAgICAg
ICAgICAgIGZhY3RvcnlfLT5BYm9ydEFyZ3VtZW50KDEpKTsKLSAgRVhQRUNUX1RSVUUoZmFjdG9y
eV8tPlRlc3REZWxldGVkKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGEgc3VjY2Vzc2Z1bCBkZWF0
aCB0ZXN0IGRvZXMgbm90IHJlZ2lzdGVyIGEgc3VjY2Vzc2Z1bAotLy8gdGVzdCBwYXJ0LgotVEVT
VChTdWNjZXNzUmVnaXN0cmF0aW9uRGVhdGhUZXN0LCBOb1N1Y2Nlc3NQYXJ0KSB7Ci0gIEVYUEVD
VF9ERUFUSChfZXhpdCgxKSwgIiIpOwotICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCkt
PmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotVEVTVChT
dHJlYW1pbmdBc3NlcnRpb25zRGVhdGhUZXN0LCBEZWF0aFRlc3QpIHsKLSAgRVhQRUNUX0RFQVRI
KF9leGl0KDEpLCAiIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9ERUFUSChf
ZXhpdCgxKSwgIiIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfREVBVEgoX2V4aXQoMCksICIiKSA8PCAi
ZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIH0sICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9ERUFUSChfZXhpdCgwKSwgIiIp
IDw8ICJleHBlY3RlZCBmYWlsdXJlIjsKLSAgfSwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0
cmluZyB3aGVuIHRoZQotLy8gbGFzdCBlcnJvciBpcyAwIGFuZCBub24tZW1wdHkgc3RyaW5nIHdo
ZW4gaXQgaXMgbm9uLXplcm8uCi1URVNUKEdldExhc3RFcnJub0Rlc2NyaXB0aW9uLCBHZXRMYXN0
RXJybm9EZXNjcmlwdGlvbldvcmtzKSB7Ci0gIGVycm5vID0gRU5PRU5UOwotICBFWFBFQ1RfU1RS
TkUoIiIsIEdldExhc3RFcnJub0Rlc2NyaXB0aW9uKCkuY19zdHIoKSk7Ci0gIGVycm5vID0gMDsK
LSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRMYXN0RXJybm9EZXNjcmlwdGlvbigpLmNfc3RyKCkpOwot
fQotCi0jIGlmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoQXV0b0hhbmRsZVRlc3QsIEF1dG9IYW5k
bGVXb3JrcykgewotICBIQU5ETEUgaGFuZGxlID0gOjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwg
RkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7
Ci0KLSAgLy8gVGVzdHMgdGhhdCB0aGUgQXV0b0hhbmRsZSBpcyBjb3JyZWN0bHkgaW5pdGlhbGl6
ZWQgd2l0aCBhIGhhbmRsZS4KLSAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19o
YW5kbGUoaGFuZGxlKTsKLSAgRVhQRUNUX0VRKGhhbmRsZSwgYXV0b19oYW5kbGUuR2V0KCkpOwot
Ci0gIC8vIFRlc3RzIHRoYXQgUmVzZXQgYXNzaWducyBJTlZBTElEX0hBTkRMRV9WQUxVRS4KLSAg
Ly8gTm90ZSB0aGF0IHRoaXMgY2Fubm90IHZlcmlmeSB3aGV0aGVyIHRoZSBvcmlnaW5hbCBoYW5k
bGUgaXMgY2xvc2VkLgotICBhdXRvX2hhbmRsZS5SZXNldCgpOwotICBFWFBFQ1RfRVEoSU5WQUxJ
RF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0aGF0IFJl
c2V0IGFzc2lnbnMgdGhlIG5ldyBoYW5kbGUuCi0gIC8vIE5vdGUgdGhhdCB0aGlzIGNhbm5vdCB2
ZXJpZnkgd2hldGhlciB0aGUgb3JpZ2luYWwgaGFuZGxlIGlzIGNsb3NlZC4KLSAgaGFuZGxlID0g
OjpDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwgRkFMU0UsIE5VTEwpOwotICBBU1NFUlRfTkUoSU5W
QUxJRF9IQU5ETEVfVkFMVUUsIGhhbmRsZSk7Ci0gIGF1dG9faGFuZGxlLlJlc2V0KGhhbmRsZSk7
Ci0gIEVYUEVDVF9FUShoYW5kbGUsIGF1dG9faGFuZGxlLkdldCgpKTsKLQotICAvLyBUZXN0cyB0
aGF0IEF1dG9IYW5kbGUgY29udGFpbnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUgYnkgZGVmYXVsdC4K
LSAgdGVzdGluZzo6aW50ZXJuYWw6OkF1dG9IYW5kbGUgYXV0b19oYW5kbGUyOwotICBFWFBFQ1Rf
RVEoSU5WQUxJRF9IQU5ETEVfVkFMVUUsIGF1dG9faGFuZGxlMi5HZXQoKSk7Ci19Ci0jIGVuZGlm
ICAvLyBHVEVTVF9PU19XSU5ET1dTCi0KLSMgaWYgR1RFU1RfT1NfV0lORE9XUwotdHlwZWRlZiB1
bnNpZ25lZCBfX2ludDY0IEJpZ2dlc3RQYXJzYWJsZTsKLXR5cGVkZWYgc2lnbmVkIF9faW50NjQg
QmlnZ2VzdFNpZ25lZFBhcnNhYmxlOwotIyBlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCaWdnZXN0UGFyc2FibGU7Ci10eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgQmlnZ2VzdFNpZ25l
ZFBhcnNhYmxlOwotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBXZSBjYW5ub3Qg
dXNlIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpIGFzIGl0IGNsYXNoZXMgd2l0aCB0aGUK
LS8vIG1heCgpIG1hY3JvIGRlZmluZWQgYnkgPHdpbmRvd3MuaD4uCi1jb25zdCBCaWdnZXN0UGFy
c2FibGUga0JpZ2dlc3RQYXJzYWJsZU1heCA9IFVMTE9OR19NQVg7Ci1jb25zdCBCaWdnZXN0U2ln
bmVkUGFyc2FibGUga0JpZ2dlc3RTaWduZWRQYXJzYWJsZU1heCA9IExMT05HX01BWDsKLQotVEVT
VChQYXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBSZWplY3RzSW52YWxpZEZvcm1hdCkgewotICBCaWdn
ZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICAvLyBSZWplY3RzIG5vbi1udW1iZXJzLgotICBF
WFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCJub24tbnVtYmVyIHN0cmluZyIsICZyZXN1
bHQpKTsKLQotICAvLyBSZWplY3RzIG51bWJlcnMgd2l0aCB3aGl0ZXNwYWNlIHByZWZpeC4KLSAg
RVhQRUNUX0ZBTFNFKFBhcnNlTmF0dXJhbE51bWJlcigiIDEyMyIsICZyZXN1bHQpKTsKLQotICAv
LyBSZWplY3RzIG5lZ2F0aXZlIG51bWJlcnMuCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxO
dW1iZXIoIi0xMjMiLCAmcmVzdWx0KSk7Ci0KLSAgLy8gUmVqZWN0cyBudW1iZXJzIHN0YXJ0aW5n
IHdpdGggYSBwbHVzIHNpZ24uCi0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIisx
MjMiLCAmcmVzdWx0KSk7Ci0gIGVycm5vID0gMDsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1i
ZXJUZXN0LCBSZWplY3RzT3ZlcmZsb3duTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUgcmVz
dWx0ID0gMDsKLQotICBFWFBFQ1RfRkFMU0UoUGFyc2VOYXR1cmFsTnVtYmVyKCI5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OSIsICZyZXN1bHQpKTsKLQotICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9
IDA7Ci0gIEVYUEVDVF9GQUxTRShQYXJzZU5hdHVyYWxOdW1iZXIoIjIwMCIsICZjaGFyX3Jlc3Vs
dCkpOwotICBlcnJubyA9IDA7Ci19Ci0KLVRFU1QoUGFyc2VOYXR1cmFsTnVtYmVyVGVzdCwgQWNj
ZXB0c1ZhbGlkTnVtYmVycykgewotICBCaWdnZXN0UGFyc2FibGUgcmVzdWx0ID0gMDsKLQotICBy
ZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEyMyIsICZyZXN1
bHQpKTsKLSAgRVhQRUNUX0VRKDEyM1UsIHJlc3VsdCk7Ci0KLSAgLy8gQ2hlY2sgMCBhcyBhbiBl
ZGdlIGNhc2UuCi0gIHJlc3VsdCA9IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJl
cigiMCIsICZyZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDBVLCByZXN1bHQpOwotCi0gIHJlc3VsdCA9
IDE7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcigiMDAwMDAiLCAmcmVzdWx0KSk7
Ci0gIEVYUEVDVF9FUSgwVSwgcmVzdWx0KTsKLX0KLQotVEVTVChQYXJzZU5hdHVyYWxOdW1iZXJU
ZXN0LCBBY2NlcHRzVHlwZUxpbWl0cykgewotICBNZXNzYWdlIG1zZzsKLSAgbXNnIDw8IGtCaWdn
ZXN0UGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFBhcnNhYmxlIHJlc3VsdCA9IDA7Ci0gIEVYUEVD
VF9UUlVFKFBhcnNlTmF0dXJhbE51bWJlcihtc2cuR2V0U3RyaW5nKCksICZyZXN1bHQpKTsKLSAg
RVhQRUNUX0VRKGtCaWdnZXN0UGFyc2FibGVNYXgsIHJlc3VsdCk7Ci0KLSAgTWVzc2FnZSBtc2cy
OwotICBtc2cyIDw8IGtCaWdnZXN0U2lnbmVkUGFyc2FibGVNYXg7Ci0KLSAgQmlnZ2VzdFNpZ25l
ZFBhcnNhYmxlIHNpZ25lZF9yZXN1bHQgPSAwOwotICBFWFBFQ1RfVFJVRShQYXJzZU5hdHVyYWxO
dW1iZXIobXNnMi5HZXRTdHJpbmcoKSwgJnNpZ25lZF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKGtC
aWdnZXN0U2lnbmVkUGFyc2FibGVNYXgsIHNpZ25lZF9yZXN1bHQpOwotCi0gIE1lc3NhZ2UgbXNn
MzsKLSAgbXNnMyA8PCBJTlRfTUFYOwotCi0gIGludCBpbnRfcmVzdWx0ID0gMDsKLSAgRVhQRUNU
X1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzMuR2V0U3RyaW5nKCksICZpbnRfcmVzdWx0KSk7
Ci0gIEVYUEVDVF9FUShJTlRfTUFYLCBpbnRfcmVzdWx0KTsKLQotICBNZXNzYWdlIG1zZzQ7Ci0g
IG1zZzQgPDwgVUlOVF9NQVg7Ci0KLSAgdW5zaWduZWQgaW50IHVpbnRfcmVzdWx0ID0gMDsKLSAg
RVhQRUNUX1RSVUUoUGFyc2VOYXR1cmFsTnVtYmVyKG1zZzQuR2V0U3RyaW5nKCksICZ1aW50X3Jl
c3VsdCkpOwotICBFWFBFQ1RfRVEoVUlOVF9NQVgsIHVpbnRfcmVzdWx0KTsKLX0KLQotVEVTVChQ
YXJzZU5hdHVyYWxOdW1iZXJUZXN0LCBXb3Jrc0ZvclNob3J0ZXJJbnRlZ2VycykgewotICBzaG9y
dCBzaG9ydF9yZXN1bHQgPSAwOwotICBBU1NFUlRfVFJVRShQYXJzZU5hdHVyYWxOdW1iZXIoIjEy
MyIsICZzaG9ydF9yZXN1bHQpKTsKLSAgRVhQRUNUX0VRKDEyMywgc2hvcnRfcmVzdWx0KTsKLQot
ICBzaWduZWQgY2hhciBjaGFyX3Jlc3VsdCA9IDA7Ci0gIEFTU0VSVF9UUlVFKFBhcnNlTmF0dXJh
bE51bWJlcigiMTIzIiwgJmNoYXJfcmVzdWx0KSk7Ci0gIEVYUEVDVF9FUSgxMjMsIGNoYXJfcmVz
dWx0KTsKLX0KLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTCi1URVNUKEVudmlyb25tZW50VGVzdCwg
SGFuZGxlRml0c0ludG9TaXplVCkgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBSZW1v
dmUgdGhpcyB0ZXN0IGFmdGVyIHRoaXMgY29uZGl0aW9uIGlzIHZlcmlmaWVkCi0gIC8vIGluIGEg
c3RhdGljIGFzc2VydGlvbiBpbiBndGVzdC1kZWF0aC10ZXN0LmNjIGluIHRoZSBmdW5jdGlvbgot
ICAvLyBHZXRTdGF0dXNGaWxlRGVzY3JpcHRvci4KLSAgQVNTRVJUX1RSVUUoc2l6ZW9mKEhBTkRM
RSkgPD0gc2l6ZW9mKHNpemVfdCkpOwotfQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwot
Ci0vLyBUZXN0cyB0aGF0IEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQvQVNTRVJUX0RFQVRIX0lG
X1NVUFBPUlRFRCB0cmlnZ2VyCi0vLyBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBhdmFp
bGFibGUgb24gdGhlIHN5c3RlbS4KLVRFU1QoQ29uZGl0aW9uYWxEZWF0aE1hY3Jvc0RlYXRoVGVz
dCwgRXhwZWN0c0RlYXRoV2hlbkRlYXRoVGVzdHNBdmFpbGFibGUpIHsKLSAgRVhQRUNUX0RFQVRI
X0lGX1NVUFBPUlRFRChEaWVJbnNpZGUoIkNvbmREZWF0aFRlc3RFeHBlY3RNYWNybyIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJkZWF0aCBpbnNpZGUgQ29uZERlYXRoVGVzdEV4cGVj
dE1hY3JvIik7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQoRGllSW5zaWRlKCJDb25kRGVh
dGhUZXN0QXNzZXJ0TWFjcm8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhdGgg
aW5zaWRlIENvbmREZWF0aFRlc3RBc3NlcnRNYWNybyIpOwotCi0gIC8vIEVtcHR5IHN0YXRlbWVu
dCB3aWxsIG5vdCBjcmFzaCwgd2hpY2ggbXVzdCB0cmlnZ2VyIGEgZmFpbHVyZS4KLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiksICIiKTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7LCAiIiks
ICIiKTsKLX0KLQotVEVTVChJbkRlYXRoVGVzdENoaWxkRGVhdGhUZXN0LCBSZXBvcnRzRGVhdGhU
ZXN0Q29ycmVjdGx5SW5GYXN0U3R5bGUpIHsKLSAgdGVzdGluZzo6R1RFU1RfRkxBRyhkZWF0aF90
ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0ZBTFNFKEluRGVhdGhUZXN0Q2hpbGQoKSk7
Ci0gIEVYUEVDVF9ERUFUSCh7Ci0gICAgZnByaW50ZihzdGRlcnIsIEluRGVhdGhUZXN0Q2hpbGQo
KSA/ICJJbnNpZGUiIDogIk91dHNpZGUiKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAgICBfZXhp
dCgxKTsKLSAgfSwgIkluc2lkZSIpOwotfQotCi1URVNUKEluRGVhdGhUZXN0Q2hpbGREZWF0aFRl
c3QsIFJlcG9ydHNEZWF0aFRlc3RDb3JyZWN0bHlJblRocmVhZFNhZmVTdHlsZSkgewotICB0ZXN0
aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBF
Q1RfRkFMU0UoSW5EZWF0aFRlc3RDaGlsZCgpKTsKLSAgRVhQRUNUX0RFQVRIKHsKLSAgICBmcHJp
bnRmKHN0ZGVyciwgSW5EZWF0aFRlc3RDaGlsZCgpID8gIkluc2lkZSIgOiAiT3V0c2lkZSIpOwot
ICAgIGZmbHVzaChzdGRlcnIpOwotICAgIF9leGl0KDEpOwotICB9LCAiSW5zaWRlIik7Ci19Ci0K
LSNlbHNlICAvLyAhR1RFU1RfSEFTX0RFQVRIX1RFU1QgZm9sbG93cwotCi11c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6Q2FwdHVyZVN0ZGVycjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRD
YXB0dXJlZFN0ZGVycjsKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVE
L0FTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQgYXJlIHN0aWxsCi0vLyBkZWZpbmVkIGJ1dCBkbyBu
b3QgdHJpZ2dlciBmYWlsdXJlcyB3aGVuIGRlYXRoIHRlc3RzIGFyZSBub3QgYXZhaWxhYmxlIG9u
Ci0vLyB0aGUgc3lzdGVtLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zVGVzdCwgV2FybnNX
aGVuRGVhdGhUZXN0c05vdEF2YWlsYWJsZSkgewotICAvLyBFbXB0eSBzdGF0ZW1lbnQgd2lsbCBu
b3QgY3Jhc2gsIGJ1dCB0aGF0IHNob3VsZCBub3QgdHJpZ2dlciBhIGZhaWx1cmUKLSAgLy8gd2hl
biBkZWF0aCB0ZXN0cyBhcmUgbm90IHN1cHBvcnRlZC4KLSAgQ2FwdHVyZVN0ZGVycigpOwotICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKTsKLSAgc3RkOjpzdHJpbmcgb3V0cHV0ID0g
R2V0Q2FwdHVyZWRTdGRlcnIoKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0
LmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWF0aCB0ZXN0cyBhcmUg
bm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpOwotICBBU1NFUlRfVFJVRShOVUxMICE9
IHN0cnN0cihvdXRwdXQuY19zdHIoKSwgIjsiKSk7Ci0KLSAgLy8gVGhlIHN0cmVhbWVkIG1lc3Nh
Z2Ugc2hvdWxkIG5vdCBiZSBwcmludGVkIGFzIHRoZXJlIGlzIG5vIHRlc3QgZmFpbHVyZS4KLSAg
Q2FwdHVyZVN0ZGVycigpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDssICIiKSA8PCAi
c3RyZWFtZWQgbWVzc2FnZSI7Ci0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFT
U0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLCAic3RyZWFtZWQgbWVzc2Fn
ZSIpKTsKLQotICBDYXB0dXJlU3RkZXJyKCk7Ci0gIEFTU0VSVF9ERUFUSF9JRl9TVVBQT1JURUQo
OywgIiIpOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdldENhcHR1cmVkU3RkZXJyKCk7Ci0gIEFT
U0VSVF9UUlVFKE5VTEwgIT0gc3Ryc3RyKG91dHB1dC5jX3N0cigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVhdGggdGVzdHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybSIpKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSBzdHJzdHIob3V0cHV0LmNfc3RyKCksICI7
IikpOwotCi0gIENhcHR1cmVTdGRlcnIoKTsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRCg7
LCAiIikgPDwgInN0cmVhbWVkIG1lc3NhZ2UiOyAgLy8gTk9MSU5UCi0gIG91dHB1dCA9IEdldENh
cHR1cmVkU3RkZXJyKCk7Ci0gIEFTU0VSVF9UUlVFKE5VTEwgPT0gc3Ryc3RyKG91dHB1dC5jX3N0
cigpLCAic3RyZWFtZWQgbWVzc2FnZSIpKTsKLX0KLQotdm9pZCBGdW5jV2l0aEFzc2VydChpbnQq
IG4pIHsKLSAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm47LCAiIik7Ci0gICgqbikr
KzsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfREVBVEhfSUZfU1VQUE9SVEVEIGRvZXMgbm90
IHJldHVybiBmcm9tIHRoZSBjdXJyZW50Ci0vLyBmdW5jdGlvbiAoYXMgQVNTRVJUX0RFQVRIIGRv
ZXMpIGlmIGRlYXRoIHRlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLgotVEVTVChDb25kaXRpb25hbERl
YXRoTWFjcm9zVGVzdCwgQXNzZXJ0RGVhdERvZXNOb3RSZXR1cm5oSWZVbnN1cHBvcnRlZCkgewot
ICBpbnQgbiA9IDA7Ci0gIEZ1bmNXaXRoQXNzZXJ0KCZuKTsKLSAgRVhQRUNUX0VRKDEsIG4pOwot
fQotCi0jZW5kaWYgIC8vICFHVEVTVF9IQVNfREVBVEhfVEVTVAotCi0vLyBUZXN0cyB0aGF0IHRo
ZSBkZWF0aCB0ZXN0IG1hY3JvcyBleHBhbmQgdG8gY29kZSB3aGljaCBtYXkgb3IgbWF5IG5vdAot
Ly8gYmUgZm9sbG93ZWQgYnkgb3BlcmF0b3I8PCwgYW5kIHRoYXQgaW4gZWl0aGVyIGNhc2UgdGhl
IGNvbXBsZXRlIHRleHQKLS8vIGNvbXByaXNlcyBvbmx5IGEgc2luZ2xlIEMrKyBzdGF0ZW1lbnQu
Ci0vLwotLy8gVGhlIHN5bnRheCBzaG91bGQgd29yayB3aGV0aGVyIGRlYXRoIHRlc3RzIGFyZSBh
dmFpbGFibGUgb3Igbm90LgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhU
ZXN0LCBTaW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgLy8gVGhp
cyB3b3VsZCBmYWlsIGlmIGV4ZWN1dGVkOyB0aGlzIGlzIGEgY29tcGlsYXRpb24gdGVzdCBvbmx5
Ci0gICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKTsKLQotICBpZiAoQWx3
YXlzVHJ1ZSgpKQotICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKTsK
LSAgZWxzZQotICAgIC8vIFRoaXMgZW1wdHkgImVsc2UiIGJyYW5jaCBpcyBtZWFudCB0byBlbnN1
cmUgdGhhdCBFWFBFQ1RfREVBVEgKLSAgICAvLyBkb2Vzbid0IGV4cGFuZCBpbnRvIGFuICJpZiIg
c3RhdGVtZW50IHdpdGhvdXQgYW4gImVsc2UiCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFs
d2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChyZXR1cm4sICIiKSA8
PCAiZGlkIG5vdCBkaWUiOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElO
VAotICBlbHNlCi0gICAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpIDw8
IDEgPDwgMiA8PCAzOwotfQotCi0vLyBUZXN0cyB0aGF0IGNvbmRpdGlvbmFsIGRlYXRoIHRlc3Qg
bWFjcm9zIGV4cGFuZCB0byBjb2RlIHdoaWNoIGludGVyYWN0cwotLy8gd2VsbCB3aXRoIHN3aXRj
aCBzdGF0ZW1lbnRzLgotVEVTVChDb25kaXRpb25hbERlYXRoTWFjcm9zU3ludGF4RGVhdGhUZXN0
LCBTd2l0Y2hTdGF0ZW1lbnQpIHsKLSAgLy8gTWljcm9zb2Z0IGNvbXBpbGVyIHVzdWFsbHkgY29t
cGxhaW5zIGFib3V0IHN3aXRjaCBzdGF0ZW1lbnRzIHdpdGhvdXQKLSAgLy8gY2FzZSBsYWJlbHMu
IFdlIHN1cHByZXNzIHRoYXQgd2FybmluZyBmb3IgdGhpcyB0ZXN0LgotICBHVEVTVF9ESVNBQkxF
X01TQ19XQVJOSU5HU19QVVNIXyg0MDY1KQotCi0gIHN3aXRjaCAoMCkKLSAgICBkZWZhdWx0Ogot
ICAgICAgQVNTRVJUX0RFQVRIX0lGX1NVUFBPUlRFRChfZXhpdCgxKSwgIiIpCi0gICAgICAgICAg
PDwgImV4aXQgaW4gZGVmYXVsdCBzd2l0Y2ggaGFuZGxlciI7Ci0KLSAgc3dpdGNoICgwKQotICAg
IGNhc2UgMDoKLSAgICAgIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoX2V4aXQoMSksICIiKSA8
PCAiZXhpdCBpbiBzd2l0Y2ggY2FzZSI7Ci0KLSAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCi19Ci0KLS8vIFRlc3RzIHRoYXQgYSB0ZXN0IGNhc2Ugd2hvc2UgbmFtZSBlbmRzIHdp
dGggIkRlYXRoVGVzdCIgd29ya3MgZmluZQotLy8gb24gV2luZG93cy4KLVRFU1QoTm90QURlYXRo
VGVzdCwgVGVzdCkgewotICBTVUNDRUVEKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0LWZpbGVwYXRoX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LWZpbGVw
YXRoX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNzI5ODY5MjZiNi4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5j
YworKysgL2Rldi9udWxsCkBAIC0xLDY2MiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29v
Z2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2VpdGgucmF5QGdtYWlsLmNv
bSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2dsZSBUZXN0IGZpbGVwYXRoIHV0aWxpdGllcwotLy8K
LS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdXNlZCBpbnRlcm5hbGx5
IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHdpdGhvdXQg
bm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQgZnJvbSBndGVzdF91bml0dGVz
dC5jYywgdG8gYXZvaWQgY2hhbmdpbmcKLS8vIGJ1aWxkIG9yIG1ha2UtZmlsZXMgZm9yIHNvbWUg
ZXhpc3RpbmcgR29vZ2xlIFRlc3QgY2xpZW50cy4gRG8gbm90Ci0vLyAjaW5jbHVkZSB0aGlzIGZp
bGUgYW55d2hlcmUgZWxzZSEKLQotI2luY2x1ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LWZpbGVw
YXRoLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gSW5kaWNhdGVzIHRoYXQgdGhp
cyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29vZ2xlIFRlc3QncwotLy8gaW1wbGVtZW50
YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0LWludGVybmFsLWlubC5oIGlzCi0vLyBp
bmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBpbGVyIGVycm9yLiAgVGhpcyB0cmljayBp
cyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0
LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5U
QVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RF
U1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotIyBpbmNs
dWRlIDx3aW5kb3dzLmg+ICAvLyBOT0xJTlQKLSNlbGlmIEdURVNUX09TX1dJTkRPV1MKLSMgaW5j
bHVkZSA8ZGlyZWN0Lmg+ICAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XU19N
T0JJTEUKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVybmFsIHsKLW5hbWVz
cGFjZSB7Ci0KLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotLy8gVE9ETyh3YW5AZ29vZ2xl
LmNvbSk6IE1vdmUgdGhlc2UgdG8gdGhlIFBPU0lYIGFkYXB0ZXIgc2VjdGlvbiBpbgotLy8gZ3Rl
c3QtcG9ydC5oLgotCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3QgaGF2ZSB0aGUgcmVtb3ZlIEMgZnVu
Y3Rpb24uCi1pbnQgcmVtb3ZlKGNvbnN0IGNoYXIqIHBhdGgpIHsKLSAgTFBDV1NUUiB3cGF0aCA9
IFN0cmluZzo6QW5zaVRvVXRmMTYocGF0aCk7Ci0gIGludCByZXQgPSBEZWxldGVGaWxlKHdwYXRo
KSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQotLy8gV2lu
ZG93cyBDRSBkb2Vzbid0IGhhdmUgdGhlIF9ybWRpciBDIGZ1bmN0aW9uLgotaW50IF9ybWRpcihj
b25zdCBjaGFyKiBwYXRoKSB7Ci0gIEZpbGVQYXRoIGZpbGVwYXRoKHBhdGgpOwotICBMUENXU1RS
IHdwYXRoID0gU3RyaW5nOjpBbnNpVG9VdGYxNigKLSAgICAgIGZpbGVwYXRoLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLmNfc3RyKCkpOwotICBpbnQgcmV0ID0gUmVtb3ZlRGlyZWN0b3J5
KHdwYXRoKSA/IDAgOiAtMTsKLSAgZGVsZXRlIFtdIHdwYXRoOwotICByZXR1cm4gcmV0OwotfQot
Ci0jZWxzZQotCi1URVNUKEdldEN1cnJlbnREaXJUZXN0LCBSZXR1cm5zQ3VycmVudERpcikgewot
ICBjb25zdCBGaWxlUGF0aCBvcmlnaW5hbF9kaXIgPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigp
OwotICBFWFBFQ1RfRkFMU0Uob3JpZ2luYWxfZGlyLklzRW1wdHkoKSk7Ci0KLSAgcG9zaXg6OkNo
RGlyKEdURVNUX1BBVEhfU0VQXyk7Ci0gIGNvbnN0IEZpbGVQYXRoIGN3ZCA9IEZpbGVQYXRoOjpH
ZXRDdXJyZW50RGlyKCk7Ci0gIHBvc2l4OjpDaERpcihvcmlnaW5hbF9kaXIuY19zdHIoKSk7Ci0K
LSMgaWYgR1RFU1RfT1NfV0lORE9XUwotCi0gIC8vIFNraXBzIHRoZSAiOiIuCi0gIGNvbnN0IGNo
YXIqIGNvbnN0IGN3ZF93aXRob3V0X2RyaXZlID0gc3RyY2hyKGN3ZC5jX3N0cigpLCAnOicpOwot
ICBBU1NFUlRfVFJVRShjd2Rfd2l0aG91dF9kcml2ZSAhPSBOVUxMKTsKLSAgRVhQRUNUX1NUUkVR
KEdURVNUX1BBVEhfU0VQXywgY3dkX3dpdGhvdXRfZHJpdmUgKyAxKTsKLQotIyBlbHNlCi0KLSAg
RVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXywgY3dkLnN0cmluZygpKTsKLQotIyBlbmRpZgotfQot
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoSXNFbXB0eVRlc3Qs
IFJldHVybnNUcnVlRm9yRW1wdHlQYXRoKSB7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIiKS5J
c0VtcHR5KCkpOwotfQotCi1URVNUKElzRW1wdHlUZXN0LCBSZXR1cm5zRmFsc2VGb3JOb25FbXB0
eVBhdGgpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJhIikuSXNFbXB0eSgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKEZpbGVQYXRoKCIuIikuSXNFbXB0eSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQ
YXRoKCJhL2IiKS5Jc0VtcHR5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImFcXGJcXCIp
LklzRW1wdHkoKSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUgIiIgLT4gIiIKLVRFU1Qo
UmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZW5FbXB0eU5hbWUpIHsKLSAgRVhQRUNUX0VRKCIi
LCBGaWxlUGF0aCgiIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8g
UmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWZpbGUiIC0+ICJhZmlsZSIKLVRFU1QoUmVtb3ZlRGlyZWN0
b3J5TmFtZVRlc3QsIEJ1dE5vRGlyZWN0b3J5KSB7Ci0gIEVYUEVDVF9FUSgiYWZpbGUiLAotICAg
ICAgRmlsZVBhdGgoImFmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0K
LQotLy8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiL2FmaWxlIiAtPiAiYWZpbGUiCi1URVNUKFJlbW92
ZURpcmVjdG9yeU5hbWVUZXN0LCBSb290RmlsZVNob3VsZEdpdmVGaWxlTmFtZSkgewotICBFWFBF
Q1RfRVEoImFmaWxlIiwKLSAgICAgIEZpbGVQYXRoKEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICJhZGlyLyIgLT4gIiIKLVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFdoZXJlVGhl
cmVJc05vRmlsZU5hbWUpIHsKLSAgRVhQRUNUX0VRKCIiLAotICAgICAgRmlsZVBhdGgoImFkaXIi
IEdURVNUX1BBVEhfU0VQXykuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQot
Ly8gUmVtb3ZlRGlyZWN0b3J5TmFtZSAiYWRpci9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1v
dmVEaXJlY3RvcnlOYW1lVGVzdCwgU2hvdWxkR2l2ZUZpbGVOYW1lKSB7Ci0gIEVYUEVDVF9FUSgi
YWZpbGUiLAotICAgICAgRmlsZVBhdGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAiYWZpbGUiKS5S
ZW1vdmVEaXJlY3RvcnlOYW1lKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVEaXJlY3RvcnlO
YW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFmaWxlIgotVEVTVChSZW1vdmVEaXJlY3RvcnlO
YW1lVGVzdCwgU2hvdWxkQWxzb0dpdmVGaWxlTmFtZSkgewotICBFWFBFQ1RfRVEoImFmaWxlIiwK
LSAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFU
SF9TRVBfICJhZmlsZSIpCi0gICAgICAuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsK
LX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRoYXQgUmVtb3Zl
RGlyZWN0b3J5TmFtZSgpIHdvcmtzIHdpdGggdGhlIGFsdGVybmF0ZSBzZXBhcmF0b3IKLS8vIG9u
IFdpbmRvd3MuCi0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoIi9hZmlsZSIpIC0+ICJhZmlsZSIK
LVRFU1QoUmVtb3ZlRGlyZWN0b3J5TmFtZVRlc3QsIFJvb3RGaWxlU2hvdWxkR2l2ZUZpbGVOYW1l
Rm9yQWx0ZXJuYXRlU2VwYXJhdG9yKSB7Ci0gIEVYUEVDVF9FUSgiYWZpbGUiLCBGaWxlUGF0aCgi
L2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8gUmVtb3Zl
RGlyZWN0b3J5TmFtZSgiYWRpci8iKSAtPiAiIgotVEVTVChSZW1vdmVEaXJlY3RvcnlOYW1lVGVz
dCwgV2hlcmVUaGVyZUlzTm9GaWxlTmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBF
Q1RfRVEoIiIsIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92ZURpcmVjdG9yeU5hbWUoKS5zdHJpbmco
KSk7Ci19Ci0KLS8vIFJlbW92ZURpcmVjdG9yeU5hbWUoImFkaXIvYWZpbGUiKSAtPiAiYWZpbGUi
Ci1URVNUKFJlbW92ZURpcmVjdG9yeU5hbWVUZXN0LCBTaG91bGRHaXZlRmlsZU5hbWVGb3JBbHRl
cm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX0VRKCJhZmlsZSIsIEZpbGVQYXRoKCJhZGlyL2Fm
aWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8gUmVtb3ZlRGly
ZWN0b3J5TmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAiYWZpbGUiCi1URVNUKFJlbW92ZURp
cmVjdG9yeU5hbWVUZXN0LCBTaG91bGRBbHNvR2l2ZUZpbGVOYW1lRm9yQWx0ZXJuYXRlU2VwYXJh
dG9yKSB7Ci0gIEVYUEVDVF9FUSgiYWZpbGUiLAotICAgICAgICAgICAgRmlsZVBhdGgoImFkaXIv
c3ViZGlyL2FmaWxlIikuUmVtb3ZlRGlyZWN0b3J5TmFtZSgpLnN0cmluZygpKTsKLX0KLQotI2Vu
ZGlmCi0KLS8vIFJlbW92ZUZpbGVOYW1lICIiIC0+ICIuLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVU
ZXN0LCBFbXB0eU5hbWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICAvLyBPbiBX
aW5kb3dzIENFLCB3ZSB1c2UgdGhlIHJvb3QgYXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotICBF
WFBFQ1RfRVEoR1RFU1RfUEFUSF9TRVBfLCBGaWxlUGF0aCgiIikuUmVtb3ZlRmlsZU5hbWUoKS5z
dHJpbmcoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoIi4iIEdURVNUX1BBVEhfU0VQXywgRmlsZVBh
dGgoIiIpLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwotI2VuZGlmCi19Ci0KLS8vIFJlbW92
ZUZpbGVOYW1lICJhZGlyLyIgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEJ1
dE5vRmlsZSkgewotICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgIEZp
bGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8pLlJlbW92ZUZpbGVOYW1lKCkuc3RyaW5nKCkp
OwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSAiYWRpci9hZmlsZSIgLT4gImFkaXIvIgotVEVTVChS
ZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyTmFtZSkgewotICBFWFBFQ1RfRVEoImFkaXIiIEdU
RVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyIiBHVEVTVF9QQVRIX1NF
UF8gImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZUZp
bGVOYW1lICJhZGlyL3N1YmRpci9hZmlsZSIgLT4gImFkaXIvc3ViZGlyLyIKLVRFU1QoUmVtb3Zl
RmlsZU5hbWVUZXN0LCBHaXZlc0RpckFuZFN1YkRpck5hbWUpIHsKLSAgRVhQRUNUX0VRKCJhZGly
IiBHVEVTVF9QQVRIX1NFUF8gInN1YmRpciIgR1RFU1RfUEFUSF9TRVBfLAotICAgICAgRmlsZVBh
dGgoImFkaXIiIEdURVNUX1BBVEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8gImFmaWxl
IikKLSAgICAgIC5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8gUmVtb3ZlRmls
ZU5hbWUgIi9hZmlsZSIgLT4gIi8iCi1URVNUKFJlbW92ZUZpbGVOYW1lVGVzdCwgR2l2ZXNSb290
RGlyKSB7Ci0gIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8sCi0gICAgICBGaWxlUGF0aChHVEVT
VF9QQVRIX1NFUF8gImFmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7Ci19Ci0KLSNp
ZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotCi0vLyBUZXN0cyB0aGF0IFJlbW92ZUZpbGVOYW1l
KCkgd29ya3Mgd2l0aCB0aGUgYWx0ZXJuYXRlIHNlcGFyYXRvciBvbgotLy8gV2luZG93cy4KLQot
Ly8gUmVtb3ZlRmlsZU5hbWUoImFkaXIvIikgLT4gImFkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFt
ZVRlc3QsIEJ1dE5vRmlsZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoImFk
aXIiIEdURVNUX1BBVEhfU0VQXywKLSAgICAgICAgICAgIEZpbGVQYXRoKCJhZGlyLyIpLlJlbW92
ZUZpbGVOYW1lKCkuc3RyaW5nKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9hZmls
ZSIpIC0+ICJhZGlyLyIKLVRFU1QoUmVtb3ZlRmlsZU5hbWVUZXN0LCBHaXZlc0Rpck5hbWVGb3JB
bHRlcm5hdGVTZXBhcmF0b3IpIHsKLSAgRVhQRUNUX0VRKCJhZGlyIiBHVEVTVF9QQVRIX1NFUF8s
Ci0gICAgICAgICAgICBGaWxlUGF0aCgiYWRpci9hZmlsZSIpLlJlbW92ZUZpbGVOYW1lKCkuc3Ry
aW5nKCkpOwotfQotCi0vLyBSZW1vdmVGaWxlTmFtZSgiYWRpci9zdWJkaXIvYWZpbGUiKSAtPiAi
YWRpci9zdWJkaXIvIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3QsIEdpdmVzRGlyQW5kU3ViRGly
TmFtZUZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoImFkaXIiIEdURVNUX1BB
VEhfU0VQXyAic3ViZGlyIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICBGaWxlUGF0aCgi
YWRpci9zdWJkaXIvYWZpbGUiKS5SZW1vdmVGaWxlTmFtZSgpLnN0cmluZygpKTsKLX0KLQotLy8g
UmVtb3ZlRmlsZU5hbWUoIi9hZmlsZSIpIC0+ICJcIgotVEVTVChSZW1vdmVGaWxlTmFtZVRlc3Qs
IEdpdmVzUm9vdERpckZvckFsdGVybmF0ZVNlcGFyYXRvcikgewotICBFWFBFQ1RfRVEoR1RFU1Rf
UEFUSF9TRVBfLCBGaWxlUGF0aCgiL2FmaWxlIikuUmVtb3ZlRmlsZU5hbWUoKS5zdHJpbmcoKSk7
Ci19Ci0KLSNlbmRpZgotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51bWJl
cklzWmVybykgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZp
bGVQYXRoKCJmb28iKSwgRmlsZVBhdGgoImJhciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBF
Q1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsK
LX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lTnVtYmVyR3RaZXJv
KSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgo
ImZvbyIpLCBGaWxlUGF0aCgiYmFyIiksCi0gICAgICAxMiwgInhtbCIpOwotICBFWFBFQ1RfRVEo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXJfMTIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKLX0K
LQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVOYW1lV2l0aFNsYXNoTnVtYmVy
SXNaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUoRmls
ZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZpbGVQYXRoKCJiYXIiKSwgMCwg
InhtbCIpOwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIueG1sIiwgYWN0
dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChNYWtlRmlsZU5hbWVUZXN0LCBHZW5lcmF0ZUZpbGVO
YW1lV2l0aFNsYXNoTnVtYmVyR3RaZXJvKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpNYWtlRmlsZU5hbWUoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKSwKLSAgICAgIEZp
bGVQYXRoKCJiYXIiKSwgMTIsICJ4bWwiKTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhf
U0VQXyAiYmFyXzEyLnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoTWFrZUZpbGVO
YW1lVGVzdCwgR2VuZXJhdGVXaGVuTnVtYmVySXNaZXJvQW5kRGlySXNFbXB0eSkgewotICBGaWxl
UGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6TWFrZUZpbGVOYW1lKEZpbGVQYXRoKCIiKSwgRmlsZVBh
dGgoImJhciIpLAotICAgICAgMCwgInhtbCIpOwotICBFWFBFQ1RfRVEoImJhci54bWwiLCBhY3R1
YWwuc3RyaW5nKCkpOwotfQotCi1URVNUKE1ha2VGaWxlTmFtZVRlc3QsIEdlbmVyYXRlV2hlbk51
bWJlcklzTm90WmVyb0FuZERpcklzRW1wdHkpIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBh
dGg6Ok1ha2VGaWxlTmFtZShGaWxlUGF0aCgiIiksIEZpbGVQYXRoKCJiYXIiKSwKLSAgICAgIDE0
LCAieG1sIik7Ci0gIEVYUEVDVF9FUSgiYmFyXzE0LnhtbCIsIGFjdHVhbC5zdHJpbmcoKSk7Ci19
Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBXb3Jrc1doZW5EaXJEb2VzTm90RW5kV2l0aFBhdGhT
ZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0gRmlsZVBhdGg6OkNvbmNhdFBhdGhzKEZpbGVQYXRo
KCJmb28iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQ
YXRoKCJiYXIueG1sIikpOwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIu
eG1sIiwgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChDb25jYXRQYXRoc1Rlc3QsIFdvcmtz
V2hlblBhdGgxRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRo
OjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVBhdGgoImJhci54bWwiKSk7Ci0g
IEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gImJhci54bWwiLCBhY3R1YWwuc3RyaW5n
KCkpOwotfQotCi1URVNUKENvbmNhdFBhdGhzVGVzdCwgUGF0aDFCZWluZ0VtcHR5KSB7Ci0gIEZp
bGVQYXRoIGFjdHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyLnhtbCIp
KTsKLSAgRVhQRUNUX0VRKCJiYXIueG1sIiwgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChD
b25jYXRQYXRoc1Rlc3QsIFBhdGgyQmVpbmdFbXB0eSkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBG
aWxlUGF0aDo6Q29uY2F0UGF0aHMoRmlsZVBhdGgoImZvbyIpLCBGaWxlUGF0aCgiIikpOwotICBF
WFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLCBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1U
RVNUKENvbmNhdFBhdGhzVGVzdCwgQm90aFBhdGhCZWluZ0VtcHR5KSB7Ci0gIEZpbGVQYXRoIGFj
dHVhbCA9IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiIiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiIikpOwotICBFWFBFQ1RfRVEo
IiIsIGFjdHVhbC5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoQ29uY2F0UGF0aHNUZXN0LCBQYXRoMUNv
bnRhaW5zUGF0aFNlcCkgewotICBGaWxlUGF0aCBhY3R1YWwgPSBGaWxlUGF0aDo6Q29uY2F0UGF0
aHMoRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJmb29iYXIueG1sIikpOwotICBF
WFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiIEdURVNUX1BBVEhfU0VQXyAiZm9v
YmFyLnhtbCIsCi0gICAgICAgICAgICBhY3R1YWwuc3RyaW5nKCkpOwotfQotCi1URVNUKENvbmNh
dFBhdGhzVGVzdCwgUGF0aDJDb250YWluc1BhdGhTZXApIHsKLSAgRmlsZVBhdGggYWN0dWFsID0g
RmlsZVBhdGg6OkNvbmNhdFBhdGhzKAotICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9T
RVBfKSwKLSAgICAgIEZpbGVQYXRoKCJiYXIiIEdURVNUX1BBVEhfU0VQXyAiYmFyLnhtbCIpKTsK
LSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8g
ImJhci54bWwiLAotICAgICAgICAgICAgYWN0dWFsLnN0cmluZygpKTsKLX0KLQotVEVTVChDb25j
YXRQYXRoc1Rlc3QsIFBhdGgyRW5kc1dpdGhQYXRoU2VwKSB7Ci0gIEZpbGVQYXRoIGFjdHVhbCA9
IEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aCgiZm9vIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlUGF0aCgiYmFyIiBHVEVTVF9QQVRIX1NFUF8p
KTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NF
UF8sIGFjdHVhbC5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
ciAiIiAtPiAiIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBFbXB0eVN0
cmluZykgewotICBFWFBFQ1RfRVEoIiIsIEZpbGVQYXRoKCIiKS5SZW1vdmVUcmFpbGluZ1BhdGhT
ZXBhcmF0b3IoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRv
ciAiZm9vIiAtPiAiZm9vIgotVEVTVChSZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3JUZXN0LCBG
aWxlTm9TbGFzaFN0cmluZykgewotICBFWFBFQ1RfRVEoImZvbyIsIEZpbGVQYXRoKCJmb28iKS5S
ZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Ci19Ci0KLS8vIFJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvciAiZm9vLyIgLT4gImZvbyIKLVRFU1QoUmVtb3ZlVHJhaWxpbmdQ
YXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3IpIHsKLSAgRVhQ
RUNUX0VRKCJmb28iLAotICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfKS5SZW1v
dmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Ci0jaWYgR1RFU1RfSEFTX0FMVF9Q
QVRIX1NFUF8KLSAgRVhQRUNUX0VRKCJmb28iLCBGaWxlUGF0aCgiZm9vLyIpLlJlbW92ZVRyYWls
aW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKLSNlbmRpZgotfQotCi0vLyBSZW1vdmVUcmFp
bGluZ1BhdGhTZXBhcmF0b3IgImZvby9iYXIvIiAtPiAiZm9vL2Jhci8iCi1URVNUKFJlbW92ZVRy
YWlsaW5nUGF0aFNlcGFyYXRvclRlc3QsIFNob3VsZFJlbW92ZUxhc3RTZXBhcmF0b3IpIHsKLSAg
RVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICAgICAgICAgIEZpbGVQ
YXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiBHVEVTVF9QQVRIX1NFUF8pCi0gICAgICAg
ICAgICAgICAgLlJlbW92ZVRyYWlsaW5nUGF0aFNlcGFyYXRvcigpLnN0cmluZygpKTsKLX0KLQot
Ly8gUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yICJmb28vYmFyIiAtPiAiZm9vL2JhciIKLVRF
U1QoUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJhdG9yVGVzdCwgU2hvdWxkUmV0dXJuVW5tb2RpZmll
ZCkgewotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAg
ICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiKQotICAgICAgICAgICAgICAg
IC5SZW1vdmVUcmFpbGluZ1BhdGhTZXBhcmF0b3IoKS5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoRGly
ZWN0b3J5VGVzdCwgUm9vdERpcmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1Mg
IC8vIFdlIGFyZSBvbiBXaW5kb3dzLgotICBjaGFyIGN1cnJlbnRfZHJpdmVbX01BWF9QQVRIXTsg
IC8vIE5PTElOVAotICBjdXJyZW50X2RyaXZlWzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oX2dldGRy
aXZlKCkgKyAnQScgLSAxKTsKLSAgY3VycmVudF9kcml2ZVsxXSA9ICc6JzsKLSAgY3VycmVudF9k
cml2ZVsyXSA9ICdcXCc7Ci0gIGN1cnJlbnRfZHJpdmVbM10gPSAnXDAnOwotICBFWFBFQ1RfVFJV
RShGaWxlUGF0aChjdXJyZW50X2RyaXZlKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZWxzZQotICBF
WFBFQ1RfVFJVRShGaWxlUGF0aCgiLyIpLkRpcmVjdG9yeUV4aXN0cygpKTsKLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotfQotCi0jaWYgR1RFU1RfT1NfV0lORE9XUwotVEVTVChEaXJlY3Rv
cnlUZXN0LCBSb290T2ZXcm9uZ0RyaXZlRG9lc05vdEV4aXN0cykgewotICBjb25zdCBpbnQgc2F2
ZWRfZHJpdmVfID0gX2dldGRyaXZlKCk7Ci0gIC8vIEZpbmQgYSBkcml2ZSB0aGF0IGRvZXNuJ3Qg
ZXhpc3QuIFN0YXJ0IHdpdGggJ1onIHRvIGF2b2lkIGNvbW1vbiBvbmVzLgotICBmb3IgKGNoYXIg
ZHJpdmUgPSAnWic7IGRyaXZlID49ICdBJzsgZHJpdmUtLSkKLSAgICBpZiAoX2NoZHJpdmUoZHJp
dmUgLSAnQScgKyAxKSA9PSAtMSkgewotICAgICAgY2hhciBub25fZHJpdmVbX01BWF9QQVRIXTsg
IC8vIE5PTElOVAotICAgICAgbm9uX2RyaXZlWzBdID0gZHJpdmU7Ci0gICAgICBub25fZHJpdmVb
MV0gPSAnOic7Ci0gICAgICBub25fZHJpdmVbMl0gPSAnXFwnOwotICAgICAgbm9uX2RyaXZlWzNd
ID0gJ1wwJzsKLSAgICAgIEVYUEVDVF9GQUxTRShGaWxlUGF0aChub25fZHJpdmUpLkRpcmVjdG9y
eUV4aXN0cygpKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgX2NoZHJpdmUoc2F2ZWRfZHJpdmVf
KTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaWYgIUdURVNUX09TX1dJTkRP
V1NfTU9CSUxFCi0vLyBXaW5kb3dzIENFIF9kb2VzXyBjb25zaWRlciBhbiBlbXB0eSBkaXJlY3Rv
cnkgdG8gZXhpc3QuCi1URVNUKERpcmVjdG9yeVRlc3QsIEVtcHR5UGF0aERpcmVjdG9yeURvZXNO
b3RFeGlzdCkgewotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLkRpcmVjdG9yeUV4aXN0cygp
KTsKLX0KLSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoRGlyZWN0
b3J5VGVzdCwgQ3VycmVudERpcmVjdG9yeUV4aXN0cykgewotI2lmIEdURVNUX09TX1dJTkRPV1Mg
IC8vIFdlIGFyZSBvbiBXaW5kb3dzLgotIyBpZm5kZWYgX1dJTjMyX0NFICAvLyBXaW5kb3dzIENF
IGRvZXNuJ3QgaGF2ZSBhIGN1cnJlbnQgZGlyZWN0b3J5LgotCi0gIEVYUEVDVF9UUlVFKEZpbGVQ
YXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1RfVFJVRShGaWxlUGF0aCgiLlxc
IikuRGlyZWN0b3J5RXhpc3RzKCkpOwotCi0jIGVuZGlmICAvLyBfV0lOMzJfQ0UKLSNlbHNlCi0g
IEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIuIikuRGlyZWN0b3J5RXhpc3RzKCkpOwotICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgiLi8iKS5EaXJlY3RvcnlFeGlzdHMoKSk7Ci0jZW5kaWYgIC8vIEdURVNU
X09TX1dJTkRPV1MKLX0KLQotLy8gImZvby9iYXIiID09IGZvby8vYmFyIiA9PSAiZm9vLy8vYmFy
IgotVEVTVChOb3JtYWxpemVUZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzSW5N
aWRzdHJpbmcpIHsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAg
ICAgICAgICAgIEZpbGVQYXRoKCJmb28iIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3RyaW5nKCkp
OwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAgICAgICAg
RmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyAiYmFyIikuc3Ry
aW5nKCkpOwotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfICJiYXIiLAotICAgICAg
ICAgICAgRmlsZVBhdGgoImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXwotICAg
ICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7Ci19Ci0K
LS8vICIvYmFyIiA9PSAvL2JhciIgPT0gIi8vL2JhciIKLVRFU1QoTm9ybWFsaXplVGVzdCwgTXVs
dGlwbGVDb25zZWN1dGl2ZVNlcGFwYXJhdG9yc0F0U3RyaW5nU3RhcnQpIHsKLSAgRVhQRUNUX0VR
KEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBGaWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gImJh
ciIpLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKEdURVNUX1BBVEhfU0VQXyAiYmFyIiwKLSAgICBG
aWxlUGF0aChHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfICJiYXIiKS5zdHJpbmcoKSk7
Ci0gIEVYUEVDVF9FUShHVEVTVF9QQVRIX1NFUF8gImJhciIsCi0gICAgRmlsZVBhdGgoR1RFU1Rf
UEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8gImJhciIpLnN0cmluZygp
KTsKLX0KLQotLy8gImZvby8iID09IGZvby8vIiA9PSAiZm9vLy8vIgotVEVTVChOb3JtYWxpemVU
ZXN0LCBNdWx0aXBsZUNvbnNlY3V0aXZlU2VwYXBhcmF0b3JzQXRTdHJpbmdFbmQpIHsKLSAgRVhQ
RUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywKLSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9Q
QVRIX1NFUF8pLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJmb28iIEdURVNUX1BBVEhfU0VQXywK
LSAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NFUF8gR1RFU1RfUEFUSF9TRVBfKS5zdHJp
bmcoKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0gICAgRmlsZVBhdGgo
ImZvbyIgR1RFU1RfUEFUSF9TRVBfIEdURVNUX1BBVEhfU0VQXyBHVEVTVF9QQVRIX1NFUF8pLnN0
cmluZygpKTsKLX0KLQotI2lmIEdURVNUX0hBU19BTFRfUEFUSF9TRVBfCi0KLS8vIFRlc3RzIHRo
YXQgc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYXJlIG5vcm1hbGl6ZWQKLS8v
IHJlZ2FyZGxlc3Mgb2YgdGhlaXIgY29tYmluYXRpb24gKGUuZy4gImZvb1wiID09ImZvby9cIiA9
PQotLy8gImZvb1xcLyIpLgotVEVTVChOb3JtYWxpemVUZXN0LCBNaXhBbHRlcm5hdGVTZXBhcmF0
b3JBdFN0cmluZ0VuZCkgewotICBFWFBFQ1RfRVEoImZvbyIgR1RFU1RfUEFUSF9TRVBfLAotICAg
ICAgICAgICAgRmlsZVBhdGgoImZvby8iKS5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBH
VEVTVF9QQVRIX1NFUF8sCi0gICAgICAgICAgICBGaWxlUGF0aCgiZm9vIiBHVEVTVF9QQVRIX1NF
UF8gIi8iKS5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9FUSgiZm9vIiBHVEVTVF9QQVRIX1NFUF8sCi0g
ICAgICAgICAgICBGaWxlUGF0aCgiZm9vLy8iIEdURVNUX1BBVEhfU0VQXykuc3RyaW5nKCkpOwot
fQotCi0jZW5kaWYKLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBEZWZhdWx0QXNzaWdu
ZWRUb05vbkRlZmF1bHQpIHsKLSAgRmlsZVBhdGggZGVmYXVsdF9wYXRoOwotICBGaWxlUGF0aCBu
b25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0gIG5vbl9kZWZhdWx0X3BhdGggPSBkZWZhdWx0X3Bh
dGg7Ci0gIEVYUEVDVF9FUSgiIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7Ci0gIEVYUEVD
VF9FUSgiIiwgZGVmYXVsdF9wYXRoLnN0cmluZygpKTsgIC8vIFJIUyB2YXIgaXMgdW5jaGFuZ2Vk
LgotfQotCi1URVNUKEFzc2lnbm1lbnRPcGVyYXRvclRlc3QsIE5vbkRlZmF1bHRBc3NpZ25lZFRv
RGVmYXVsdCkgewotICBGaWxlUGF0aCBub25fZGVmYXVsdF9wYXRoKCJwYXRoIik7Ci0gIEZpbGVQ
YXRoIGRlZmF1bHRfcGF0aDsKLSAgZGVmYXVsdF9wYXRoID0gbm9uX2RlZmF1bHRfcGF0aDsKLSAg
RVhQRUNUX0VRKCJwYXRoIiwgZGVmYXVsdF9wYXRoLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJw
YXRoIiwgbm9uX2RlZmF1bHRfcGF0aC5zdHJpbmcoKSk7ICAvLyBSSFMgdmFyIGlzIHVuY2hhbmdl
ZC4KLX0KLQotVEVTVChBc3NpZ25tZW50T3BlcmF0b3JUZXN0LCBDb25zdEFzc2lnbmVkVG9Ob25D
b25zdCkgewotICBjb25zdCBGaWxlUGF0aCBjb25zdF9kZWZhdWx0X3BhdGgoImNvbnN0X3BhdGgi
KTsKLSAgRmlsZVBhdGggbm9uX2RlZmF1bHRfcGF0aCgicGF0aCIpOwotICBub25fZGVmYXVsdF9w
YXRoID0gY29uc3RfZGVmYXVsdF9wYXRoOwotICBFWFBFQ1RfRVEoImNvbnN0X3BhdGgiLCBub25f
ZGVmYXVsdF9wYXRoLnN0cmluZygpKTsKLX0KLQotY2xhc3MgRGlyZWN0b3J5Q3JlYXRpb25UZXN0
IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewot
ICAgIHRlc3RkYXRhX3BhdGhfLlNldChGaWxlUGF0aCgKLSAgICAgICAgVGVtcERpcigpICsgR2V0
Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKwotICAgICAgICAiX2RpcmVjdG9yeV9j
cmVhdGlvbiIgR1RFU1RfUEFUSF9TRVBfICJ0ZXN0IiBHVEVTVF9QQVRIX1NFUF8pKTsKLSAgICB0
ZXN0ZGF0YV9maWxlXy5TZXQodGVzdGRhdGFfcGF0aF8uUmVtb3ZlVHJhaWxpbmdQYXRoU2VwYXJh
dG9yKCkpOwotCi0gICAgdW5pcXVlX2ZpbGUwXy5TZXQoRmlsZVBhdGg6Ok1ha2VGaWxlTmFtZSh0
ZXN0ZGF0YV9wYXRoXywgRmlsZVBhdGgoInVuaXF1ZSIpLAotICAgICAgICAwLCAidHh0IikpOwot
ICAgIHVuaXF1ZV9maWxlMV8uU2V0KEZpbGVQYXRoOjpNYWtlRmlsZU5hbWUodGVzdGRhdGFfcGF0
aF8sIEZpbGVQYXRoKCJ1bmlxdWUiKSwKLSAgICAgICAgMSwgInR4dCIpKTsKLQotICAgIHJlbW92
ZSh0ZXN0ZGF0YV9maWxlXy5jX3N0cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUwXy5jX3N0
cigpKTsKLSAgICByZW1vdmUodW5pcXVlX2ZpbGUxXy5jX3N0cigpKTsKLSAgICBwb3NpeDo6Um1E
aXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKSB7Ci0gICAgcmVtb3ZlKHRlc3RkYXRhX2ZpbGVfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1
bmlxdWVfZmlsZTBfLmNfc3RyKCkpOwotICAgIHJlbW92ZSh1bmlxdWVfZmlsZTFfLmNfc3RyKCkp
OwotICAgIHBvc2l4OjpSbURpcih0ZXN0ZGF0YV9wYXRoXy5jX3N0cigpKTsKLSAgfQotCi0gIHZv
aWQgQ3JlYXRlVGV4dEZpbGUoY29uc3QgY2hhciogZmlsZW5hbWUpIHsKLSAgICBGSUxFKiBmID0g
cG9zaXg6OkZPcGVuKGZpbGVuYW1lLCAidyIpOwotICAgIGZwcmludGYoZiwgInRleHRcbiIpOwot
ICAgIGZjbG9zZShmKTsKLSAgfQotCi0gIC8vIFN0cmluZ3MgcmVwcmVzZW50aW5nIGEgZGlyZWN0
b3J5IGFuZCBhIGZpbGUsIHdpdGggaWRlbnRpY2FsIHBhdGhzCi0gIC8vIGV4Y2VwdCBmb3IgdGhl
IHRyYWlsaW5nIHNlcGFyYXRvciBjaGFyYWN0ZXIgdGhhdCBkaXN0aW5xdWlzaGVzCi0gIC8vIGEg
ZGlyZWN0b3J5IG5hbWVkICd0ZXN0JyBmcm9tIGEgZmlsZSBuYW1lZCAndGVzdCcuIEV4YW1wbGUg
bmFtZXM6Ci0gIEZpbGVQYXRoIHRlc3RkYXRhX3BhdGhfOyAgLy8gIi90bXAvZGlyZWN0b3J5X2Ny
ZWF0aW9uL3Rlc3QvIgotICBGaWxlUGF0aCB0ZXN0ZGF0YV9maWxlXzsgIC8vICIvdG1wL2RpcmVj
dG9yeV9jcmVhdGlvbi90ZXN0IgotICBGaWxlUGF0aCB1bmlxdWVfZmlsZTBfOyAgLy8gIi90bXAv
ZGlyZWN0b3J5X2NyZWF0aW9uL3Rlc3QvdW5pcXVlLnR4dCIKLSAgRmlsZVBhdGggdW5pcXVlX2Zp
bGUxXzsgIC8vICIvdG1wL2RpcmVjdG9yeV9jcmVhdGlvbi90ZXN0L3VuaXF1ZV8xLnR4dCIKLX07
Ci0KLVRFU1RfRihEaXJlY3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZURpcmVjdG9yaWVzUmVjdXJz
aXZlbHkpIHsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygp
KSA8PCB0ZXN0ZGF0YV9wYXRoXy5zdHJpbmcoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0
aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRh
dGFfcGF0aF8uRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRp
b25UZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZvckFscmVhZHlFeGlzdGluZ1BhdGgpIHsKLSAgRVhQ
RUNUX0ZBTFNFKHRlc3RkYXRhX3BhdGhfLkRpcmVjdG9yeUV4aXN0cygpKSA8PCB0ZXN0ZGF0YV9w
YXRoXy5zdHJpbmcoKTsKLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0
b3JpZXNSZWN1cnNpdmVseSgpKTsKLSAgLy8gQ2FsbCAnY3JlYXRlJyBhZ2Fpbi4uLiBzaG91bGQg
c3RpbGwgc3VjY2VlZC4KLSAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRGlyZWN0
b3JpZXNSZWN1cnNpdmVseSgpKTsKLX0KLQotVEVTVF9GKERpcmVjdG9yeUNyZWF0aW9uVGVzdCwg
Q3JlYXRlRGlyZWN0b3JpZXNBbmRVbmlxdWVGaWxlbmFtZSkgewotICBGaWxlUGF0aCBmaWxlX3Bh
dGgoRmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5hbWUodGVzdGRhdGFfcGF0aF8sCi0gICAg
ICBGaWxlUGF0aCgidW5pcXVlIiksICJ0eHQiKSk7Ci0gIEVYUEVDVF9FUSh1bmlxdWVfZmlsZTBf
LnN0cmluZygpLCBmaWxlX3BhdGguc3RyaW5nKCkpOwotICBFWFBFQ1RfRkFMU0UoZmlsZV9wYXRo
LkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCi0KLSAgdGVzdGRh
dGFfcGF0aF8uQ3JlYXRlRGlyZWN0b3JpZXNSZWN1cnNpdmVseSgpOwotICBFWFBFQ1RfRkFMU0Uo
ZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgc3RpbGwgbm90IHRo
ZXJlCi0gIENyZWF0ZVRleHRGaWxlKGZpbGVfcGF0aC5jX3N0cigpKTsKLSAgRVhQRUNUX1RSVUUo
ZmlsZV9wYXRoLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLQotICBGaWxlUGF0aCBmaWxlX3Bh
dGgyKEZpbGVQYXRoOjpHZW5lcmF0ZVVuaXF1ZUZpbGVOYW1lKHRlc3RkYXRhX3BhdGhfLAotICAg
ICAgRmlsZVBhdGgoInVuaXF1ZSIpLCAidHh0IikpOwotICBFWFBFQ1RfRVEodW5pcXVlX2ZpbGUx
Xy5zdHJpbmcoKSwgZmlsZV9wYXRoMi5zdHJpbmcoKSk7Ci0gIEVYUEVDVF9GQUxTRShmaWxlX3Bh
dGgyLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsgIC8vIGZpbGUgbm90IHRoZXJlCi0gIENyZWF0
ZVRleHRGaWxlKGZpbGVfcGF0aDIuY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKGZpbGVfcGF0aDIu
RmlsZU9yRGlyZWN0b3J5RXhpc3RzKCkpOwotfQotCi1URVNUX0YoRGlyZWN0b3J5Q3JlYXRpb25U
ZXN0LCBDcmVhdGVEaXJlY3Rvcmllc0ZhaWwpIHsKLSAgLy8gZm9yY2UgYSBmYWlsdXJlIGJ5IHB1
dHRpbmcgYSBmaWxlIHdoZXJlIHdlIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KLSAg
Q3JlYXRlVGV4dEZpbGUodGVzdGRhdGFfZmlsZV8uY19zdHIoKSk7Ci0gIEVYUEVDVF9UUlVFKHRl
c3RkYXRhX2ZpbGVfLkZpbGVPckRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKHRl
c3RkYXRhX2ZpbGVfLkRpcmVjdG9yeUV4aXN0cygpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RkYXRh
X2ZpbGVfLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZlbHkoKSk7Ci19Ci0KLVRFU1QoTm9EaXJl
Y3RvcnlDcmVhdGlvblRlc3QsIENyZWF0ZU5vRGlyZWN0b3JpZXNGb3JEZWZhdWx0WG1sRmlsZSkg
ewotICBjb25zdCBGaWxlUGF0aCB0ZXN0X2RldGFpbF94bWwoInRlc3RfZGV0YWlsLnhtbCIpOwot
ICBFWFBFQ1RfRkFMU0UodGVzdF9kZXRhaWxfeG1sLkNyZWF0ZURpcmVjdG9yaWVzUmVjdXJzaXZl
bHkoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBEZWZhdWx0Q29uc3RydWN0b3IpIHsKLSAg
RmlsZVBhdGggZnA7Ci0gIEVYUEVDVF9FUSgiIiwgZnAuc3RyaW5nKCkpOwotfQotCi1URVNUKEZp
bGVQYXRoVGVzdCwgQ2hhckFuZENvcHlDb25zdHJ1Y3RvcnMpIHsKLSAgY29uc3QgRmlsZVBhdGgg
ZnAoInNwaWN5Iik7Ci0gIEVYUEVDVF9FUSgic3BpY3kiLCBmcC5zdHJpbmcoKSk7Ci0KLSAgY29u
c3QgRmlsZVBhdGggZnBfY29weShmcCk7Ci0gIEVYUEVDVF9FUSgic3BpY3kiLCBmcF9jb3B5LnN0
cmluZygpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFN0cmluZ0NvbnN0cnVjdG9yKSB7Ci0g
IGNvbnN0IEZpbGVQYXRoIGZwKHN0ZDo6c3RyaW5nKCJjaWRlciIpKTsKLSAgRVhQRUNUX0VRKCJj
aWRlciIsIGZwLnN0cmluZygpKTsKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIFNldCkgewotICBj
b25zdCBGaWxlUGF0aCBhcHBsZSgiYXBwbGUiKTsKLSAgRmlsZVBhdGggbWFjKCJtYWMiKTsKLSAg
bWFjLlNldChhcHBsZSk7ICAvLyBJbXBsZW1lbnQgU2V0KCkgc2luY2Ugb3ZlcmxvYWRpbmcgb3Bl
cmF0b3I9IGlzIGZvcmJpZGRlbi4KLSAgRVhQRUNUX0VRKCJhcHBsZSIsIG1hYy5zdHJpbmcoKSk7
Ci0gIEVYUEVDVF9FUSgiYXBwbGUiLCBhcHBsZS5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoRmlsZVBh
dGhUZXN0LCBUb1N0cmluZykgewotICBjb25zdCBGaWxlUGF0aCBmaWxlKCJkcmluayIpOwotICBF
WFBFQ1RfRVEoImRyaW5rIiwgZmlsZS5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0
LCBSZW1vdmVFeHRlbnNpb24pIHsKLSAgRVhQRUNUX0VRKCJhcHAiLCBGaWxlUGF0aCgiYXBwLmNj
IikuUmVtb3ZlRXh0ZW5zaW9uKCJjYyIpLnN0cmluZygpKTsKLSAgRVhQRUNUX0VRKCJhcHAiLCBG
aWxlUGF0aCgiYXBwLmV4ZSIpLlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOwotICBF
WFBFQ1RfRVEoIkFQUCIsIEZpbGVQYXRoKCJBUFAuRVhFIikuUmVtb3ZlRXh0ZW5zaW9uKCJleGUi
KS5zdHJpbmcoKSk7Ci19Ci0KLVRFU1QoRmlsZVBhdGhUZXN0LCBSZW1vdmVFeHRlbnNpb25XaGVu
VGhlcmVJc05vRXh0ZW5zaW9uKSB7Ci0gIEVYUEVDVF9FUSgiYXBwIiwgRmlsZVBhdGgoImFwcCIp
LlJlbW92ZUV4dGVuc2lvbigiZXhlIikuc3RyaW5nKCkpOwotfQotCi1URVNUKEZpbGVQYXRoVGVz
dCwgSXNEaXJlY3RvcnkpIHsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJjb2xhIikuSXNEaXJl
Y3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJrb2FsYSIgR1RFU1RfUEFUSF9TRVBf
KS5Jc0RpcmVjdG9yeSgpKTsKLSNpZiBHVEVTVF9IQVNfQUxUX1BBVEhfU0VQXwotICBFWFBFQ1Rf
VFJVRShGaWxlUGF0aCgia29hbGEvIikuSXNEaXJlY3RvcnkoKSk7Ci0jZW5kaWYKLX0KLQotVEVT
VChGaWxlUGF0aFRlc3QsIElzQWJzb2x1dGVQYXRoKSB7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0
aCgiaXMiIEdURVNUX1BBVEhfU0VQXyAicmVsYXRpdmUiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSAg
RVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCIiKS5Jc0Fic29sdXRlUGF0aCgpKTsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJjOlxcIiBHVEVTVF9QQVRIX1NFUF8g
ImlzX25vdCIKLSAgICAgICAgICAgICAgICAgICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2
ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImM6Zm9vIiBH
VEVTVF9QQVRIX1NFUF8gImJhciIpLklzQWJzb2x1dGVQYXRoKCkpOwotICBFWFBFQ1RfVFJVRShG
aWxlUGF0aCgiYzovIiBHVEVTVF9QQVRIX1NFUF8gImlzX25vdCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgR1RFU1RfUEFUSF9TRVBfICJyZWxhdGl2ZSIpLklzQWJzb2x1dGVQYXRoKCkpOwotI2Vs
c2UKLSAgRVhQRUNUX1RSVUUoRmlsZVBhdGgoR1RFU1RfUEFUSF9TRVBfICJpc19ub3QiIEdURVNU
X1BBVEhfU0VQXyAicmVsYXRpdmUiKQotICAgICAgICAgICAgICAuSXNBYnNvbHV0ZVBhdGgoKSk7
Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLX0KLQotVEVTVChGaWxlUGF0aFRlc3QsIElz
Um9vdERpcmVjdG9yeSkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgRVhQRUNUX1RSVUUoRmls
ZVBhdGgoImE6XFwiKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRo
KCJaOi8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCJlOi8v
IikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIiIpLklzUm9v
dERpcmVjdG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOiIpLklzUm9vdERpcmVj
dG9yeSgpKTsKLSAgRVhQRUNUX0ZBTFNFKEZpbGVQYXRoKCJiOmEiKS5Jc1Jvb3REaXJlY3Rvcnko
KSk7Ci0gIEVYUEVDVF9GQUxTRShGaWxlUGF0aCgiODovIikuSXNSb290RGlyZWN0b3J5KCkpOwot
ICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoImN8LyIpLklzUm9vdERpcmVjdG9yeSgpKTsKLSNlbHNl
Ci0gIEVYUEVDVF9UUlVFKEZpbGVQYXRoKCIvIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBF
Q1RfVFJVRShGaWxlUGF0aCgiLy8iKS5Jc1Jvb3REaXJlY3RvcnkoKSk7Ci0gIEVYUEVDVF9GQUxT
RShGaWxlUGF0aCgiIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBh
dGgoIlxcIikuSXNSb290RGlyZWN0b3J5KCkpOwotICBFWFBFQ1RfRkFMU0UoRmlsZVBhdGgoIi94
IikuSXNSb290RGlyZWN0b3J5KCkpOwotI2VuZGlmCi19Ci0KLX0gIC8vIG5hbWVzcGFjZQotfSAg
Ly8gbmFtZXNwYWNlIGludGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmZjZjUxMjRhOGMzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdC1saW5rZWRfcHRyX3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDMsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBk
aXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8g
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhv
cnM6IERhbiBFZ25vciAoZWdub3JAZ29vZ2xlLmNvbSkKLS8vIFBvcnRlZCB0byBXaW5kb3dzOiBW
YWRpbSBCZXJtYW4gKHZhZGltYkBnb29nbGUuY29tKQotCi0jaW5jbHVkZSAiZ3Rlc3QvaW50ZXJu
YWwvZ3Rlc3QtbGlua2VkX3B0ci5oIgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHsKLQotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpsaW5rZWRfcHRyOwotCi1pbnQgbnVtOwotTWVzc2Fn
ZSogaGlzdG9yeSA9IE5VTEw7Ci0KLS8vIENsYXNzIHdoaWNoIHRyYWNrcyBhbGxvY2F0aW9uL2Rl
YWxsb2NhdGlvbgotY2xhc3MgQSB7Ci0gcHVibGljOgotICBBKCk6IG15bnVtKG51bSsrKSB7ICpo
aXN0b3J5IDw8ICJBIiA8PCBteW51bSA8PCAiIGN0b3JcbiI7IH0KLSAgdmlydHVhbCB+QSgpIHsg
Kmhpc3RvcnkgPDwgIkEiIDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQotICB2aXJ0dWFsIHZvaWQg
VXNlKCkgeyAqaGlzdG9yeSA8PCAiQSIgPDwgbXludW0gPDwgIiB1c2VcbiI7IH0KLSBwcm90ZWN0
ZWQ6Ci0gIGludCBteW51bTsKLX07Ci0KLS8vIFN1YmNsYXNzCi1jbGFzcyBCIDogcHVibGljIEEg
ewotIHB1YmxpYzoKLSAgQigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgY3Rvclxu
IjsgfQotICB+QigpIHsgKmhpc3RvcnkgPDwgIkIiIDw8IG15bnVtIDw8ICIgZHRvclxuIjsgfQot
ICB2aXJ0dWFsIHZvaWQgVXNlKCkgeyAqaGlzdG9yeSA8PCAiQiIgPDwgbXludW0gPDwgIiB1c2Vc
biI7IH0KLX07Ci0KLWNsYXNzIExpbmtlZFB0clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
Ci0gcHVibGljOgotICBMaW5rZWRQdHJUZXN0KCkgewotICAgIG51bSA9IDA7Ci0gICAgaGlzdG9y
eSA9IG5ldyBNZXNzYWdlOwotICB9Ci0KLSAgdmlydHVhbCB+TGlua2VkUHRyVGVzdCgpIHsKLSAg
ICBkZWxldGUgaGlzdG9yeTsKLSAgICBoaXN0b3J5ID0gTlVMTDsKLSAgfQotfTsKLQotVEVTVF9G
KExpbmtlZFB0clRlc3QsIEdlbmVyYWxUZXN0KSB7Ci0gIHsKLSAgICBsaW5rZWRfcHRyPEE+IGEw
LCBhMSwgYTI7Ci0gICAgLy8gVXNlIGV4cGxpY2l0IGZ1bmN0aW9uIGNhbGwgbm90YXRpb24gaGVy
ZSB0byBzdXBwcmVzcyBzZWxmLWFzc2lnbiB3YXJuaW5nLgotICAgIGEwLm9wZXJhdG9yPShhMCk7
Ci0gICAgYTEgPSBhMjsKLSAgICBBU1NFUlRfRVEoYTAuZ2V0KCksIHN0YXRpY19jYXN0PEEqPihO
VUxMKSk7Ci0gICAgQVNTRVJUX0VRKGExLmdldCgpLCBzdGF0aWNfY2FzdDxBKj4oTlVMTCkpOwot
ICAgIEFTU0VSVF9FUShhMi5nZXQoKSwgc3RhdGljX2Nhc3Q8QSo+KE5VTEwpKTsKLSAgICBBU1NF
UlRfVFJVRShhMCA9PSBOVUxMKTsKLSAgICBBU1NFUlRfVFJVRShhMSA9PSBOVUxMKTsKLSAgICBB
U1NFUlRfVFJVRShhMiA9PSBOVUxMKTsKLQotICAgIHsKLSAgICAgIGxpbmtlZF9wdHI8QT4gYTMo
bmV3IEEpOwotICAgICAgYTAgPSBhMzsKLSAgICAgIEFTU0VSVF9UUlVFKGEwID09IGEzKTsKLSAg
ICAgIEFTU0VSVF9UUlVFKGEwICE9IE5VTEwpOwotICAgICAgQVNTRVJUX1RSVUUoYTAuZ2V0KCkg
PT0gYTMpOwotICAgICAgQVNTRVJUX1RSVUUoYTAgPT0gYTMuZ2V0KCkpOwotICAgICAgbGlua2Vk
X3B0cjxBPiBhNChhMCk7Ci0gICAgICBhMSA9IGE0OwotICAgICAgbGlua2VkX3B0cjxBPiBhNShu
ZXcgQSk7Ci0gICAgICBBU1NFUlRfVFJVRShhNS5nZXQoKSAhPSBhMyk7Ci0gICAgICBBU1NFUlRf
VFJVRShhNSAhPSBhMy5nZXQoKSk7Ci0gICAgICBhMiA9IGE1OwotICAgICAgbGlua2VkX3B0cjxC
PiBiMChuZXcgQik7Ci0gICAgICBsaW5rZWRfcHRyPEE+IGE2KGIwKTsKLSAgICAgIEFTU0VSVF9U
UlVFKGIwID09IGE2KTsKLSAgICAgIEFTU0VSVF9UUlVFKGE2ID09IGIwKTsKLSAgICAgIEFTU0VS
VF9UUlVFKGIwICE9IE5VTEwpOwotICAgICAgYTUgPSBiMDsKLSAgICAgIGE1ID0gYjA7Ci0gICAg
ICBhMy0+VXNlKCk7Ci0gICAgICBhNC0+VXNlKCk7Ci0gICAgICBhNS0+VXNlKCk7Ci0gICAgICBh
Ni0+VXNlKCk7Ci0gICAgICBiMC0+VXNlKCk7Ci0gICAgICAoKmIwKS5Vc2UoKTsKLSAgICAgIGIw
LmdldCgpLT5Vc2UoKTsKLSAgICB9Ci0KLSAgICBhMC0+VXNlKCk7Ci0gICAgYTEtPlVzZSgpOwot
ICAgIGEyLT5Vc2UoKTsKLQotICAgIGExID0gYTI7Ci0gICAgYTIucmVzZXQobmV3IEEpOwotICAg
IGEwLnJlc2V0KCk7Ci0KLSAgICBsaW5rZWRfcHRyPEE+IGE3OwotICB9Ci0KLSAgQVNTRVJUX1NU
UkVRKAotICAgICJBMCBjdG9yXG4iCi0gICAgIkExIGN0b3JcbiIKLSAgICAiQTIgY3RvclxuIgot
ICAgICJCMiBjdG9yXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMCB1c2VcbiIKLSAgICAiQjIg
dXNlXG4iCi0gICAgIkIyIHVzZVxuIgotICAgICJCMiB1c2VcbiIKLSAgICAiQjIgdXNlXG4iCi0g
ICAgIkIyIHVzZVxuIgotICAgICJCMiBkdG9yXG4iCi0gICAgIkEyIGR0b3JcbiIKLSAgICAiQTAg
dXNlXG4iCi0gICAgIkEwIHVzZVxuIgotICAgICJBMSB1c2VcbiIKLSAgICAiQTMgY3RvclxuIgot
ICAgICJBMCBkdG9yXG4iCi0gICAgIkEzIGR0b3JcbiIKLSAgICAiQTEgZHRvclxuIiwKLSAgICBo
aXN0b3J5LT5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQotfSAgLy8gVW5uYW1lZCBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbGlzdGVuZXJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTA3NDc2ODVmMDcyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdC1saXN0ZW5lcl90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzExICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysr
IFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVzdCkKLS8vCi0vLyBUaGlzIGZpbGUgdmVyaWZp
ZXMgR29vZ2xlIFRlc3QgZXZlbnQgbGlzdGVuZXJzIHJlY2VpdmUgZXZlbnRzIGF0IHRoZQotLy8g
cmlnaHQgdGltZXMuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6
OnRlc3Rpbmc6OkVudmlyb25tZW50OwotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsK
LXVzaW5nIDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdENhc2U7Ci11c2lu
ZyA6OnRlc3Rpbmc6OlRlc3RFdmVudExpc3RlbmVyOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0SW5m
bzsKLXVzaW5nIDo6dGVzdGluZzo6VGVzdFBhcnRSZXN1bHQ7Ci11c2luZyA6OnRlc3Rpbmc6OlVu
aXRUZXN0OwotCi0vLyBVc2VkIGJ5IHRlc3RzIHRvIHJlZ2lzdGVyIHRoZWlyIGV2ZW50cy4KLXN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiogZ19ldmVudHMgPSBOVUxMOwotCi1uYW1lc3BhY2UgdGVz
dGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1jbGFzcyBFdmVudFJlY29yZGluZ0xpc3Rl
bmVyIDogcHVibGljIFRlc3RFdmVudExpc3RlbmVyIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEV2
ZW50UmVjb3JkaW5nTGlzdGVuZXIoY29uc3QgY2hhciogbmFtZSkgOiBuYW1lXyhuYW1lKSB7fQot
Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbVN0YXJ0KGNvbnN0IFVu
aXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxs
TWV0aG9kTmFtZSgiT25UZXN0UHJvZ3JhbVN0YXJ0IikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikgewotICAgIE1l
c3NhZ2UgbWVzc2FnZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJ
dGVyYXRpb25TdGFydCIpCi0gICAgICAgICAgICA8PCAiKCIgPDwgaXRlcmF0aW9uIDw8ICIpIjsK
LSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKG1lc3NhZ2UuR2V0U3RyaW5nKCkpOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzU2V0VXBTdGFydChjb25zdCBVbml0VGVzdCYgLyp1
bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUo
Ik9uRW52aXJvbm1lbnRzU2V0VXBTdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPbkVu
dmlyb25tZW50c1NldFVwRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25FbnZpcm9ubWVudHNTZXRV
cEVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RDYXNlU3RhcnQoY29uc3QgVGVz
dENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxN
ZXRob2ROYW1lKCJPblRlc3RDYXNlU3RhcnQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25U
ZXN0U3RhcnQoY29uc3QgVGVzdEluZm8mIC8qdGVzdF9pbmZvKi8pIHsKLSAgICBnX2V2ZW50cy0+
cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RTdGFydCIpKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBPblRlc3RQYXJ0UmVzdWx0KGNvbnN0IFRlc3RQYXJ0UmVzdWx0JiAvKnRlc3Rf
cGFydF9yZXN1bHQqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5h
bWUoIk9uVGVzdFBhcnRSZXN1bHQiKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0RW5k
KGNvbnN0IFRlc3RJbmZvJiAvKnRlc3RfaW5mbyovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFj
ayhHZXRGdWxsTWV0aG9kTmFtZSgiT25UZXN0RW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IE9uVGVzdENhc2VFbmQoY29uc3QgVGVzdENhc2UmIC8qdGVzdF9jYXNlKi8pIHsKLSAgICBnX2V2
ZW50cy0+cHVzaF9iYWNrKEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RDYXNlRW5kIikpOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIE9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydChjb25zdCBVbml0
VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1l
dGhvZE5hbWUoIk9uRW52aXJvbm1lbnRzVGVhckRvd25TdGFydCIpKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBPbkVudmlyb25tZW50c1RlYXJEb3duRW5kKGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRf
dGVzdCovKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjayhHZXRGdWxsTWV0aG9kTmFtZSgiT25F
bnZpcm9ubWVudHNUZWFyRG93bkVuZCIpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBPblRlc3RJ
dGVyYXRpb25FbmQoY29uc3QgVW5pdFRlc3QmIC8qdW5pdF90ZXN0Ki8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGl0ZXJhdGlvbikgewotICAgIE1lc3NhZ2UgbWVzc2Fn
ZTsKLSAgICBtZXNzYWdlIDw8IEdldEZ1bGxNZXRob2ROYW1lKCJPblRlc3RJdGVyYXRpb25FbmQi
KQotICAgICAgICAgICAgPDwgIigiICA8PCBpdGVyYXRpb24gPDwgIikiOwotICAgIGdfZXZlbnRz
LT5wdXNoX2JhY2sobWVzc2FnZS5HZXRTdHJpbmcoKSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQg
T25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGdf
ZXZlbnRzLT5wdXNoX2JhY2soR2V0RnVsbE1ldGhvZE5hbWUoIk9uVGVzdFByb2dyYW1FbmQiKSk7
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIEdldEZ1bGxNZXRob2ROYW1lKGNvbnN0
IGNoYXIqIG5hbWUpIHsKLSAgICByZXR1cm4gbmFtZV8gKyAiLiIgKyBuYW1lOwotICB9Ci0KLSAg
c3RkOjpzdHJpbmcgbmFtZV87Ci19OwotCi1jbGFzcyBFbnZpcm9ubWVudEludm9jYXRpb25DYXRj
aGVyIDogcHVibGljIEVudmlyb25tZW50IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJFbnZpcm9ubWVudDo6U2V0VXAiKTsK
LSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9i
YWNrKCJFbnZpcm9ubWVudDo6VGVhckRvd24iKTsKLSAgfQotfTsKLQotY2xhc3MgTGlzdGVuZXJU
ZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsKLSAgICBnX2V2ZW50cy0+cHVzaF9iYWNrKCJMaXN0ZW5lclRlc3Q6OlNldFVwVGVz
dENhc2UiKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAg
Z19ldmVudHMtPnB1c2hfYmFjaygiTGlzdGVuZXJUZXN0OjpUZWFyRG93blRlc3RDYXNlIik7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgZ19ldmVudHMtPnB1c2hfYmFjaygi
TGlzdGVuZXJUZXN0OjpTZXRVcCIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkg
ewotICAgIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iKTsKLSAg
fQotfTsKLQotVEVTVF9GKExpc3RlbmVyVGVzdCwgRG9lc0ZvbykgewotICAvLyBUZXN0IGV4ZWN1
dGlvbiBvcmRlciB3aXRoaW4gYSB0ZXN0IGNhc2UgaXMgbm90IGd1YXJhbnRlZWQgc28gd2UgYXJl
IG5vdAotICAvLyByZWNvcmRpbmcgdGhlIHRlc3QgbmFtZS4KLSAgZ19ldmVudHMtPnB1c2hfYmFj
aygiTGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIpOwotICBTVUNDRUVEKCk7ICAvLyBUcmlnZ2Vy
cyBPblRlc3RQYXJ0UmVzdWx0LgotfQotCi1URVNUX0YoTGlzdGVuZXJUZXN0LCBEb2VzQmFyKSB7
Ci0gIGdfZXZlbnRzLT5wdXNoX2JhY2soIkxpc3RlbmVyVGVzdDo6KiBUZXN0IEJvZHkiKTsKLSAg
U1VDQ0VFRCgpOyAgLy8gVHJpZ2dlcnMgT25UZXN0UGFydFJlc3VsdC4KLX0KLQotfSAgLy8gbmFt
ZXNwYWNlIGludGVybmFsCi0KLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXVzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OkVudmlyb25tZW50SW52b2NhdGlvbkNhdGNoZXI7Ci11c2luZyA6OnRl
c3Rpbmc6OmludGVybmFsOjpFdmVudFJlY29yZGluZ0xpc3RlbmVyOwotCi12b2lkIFZlcmlmeVJl
c3VsdHMoY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBkYXRhLAotICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0KiBleHBlY3RlZF9kYXRhLAotICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBleHBlY3RlZF9kYXRhX3NpemUpIHsKLSAgY29uc3Qgc2l6ZV90IGFjdHVhbF9z
aXplID0gZGF0YS5zaXplKCk7Ci0gIC8vIElmIHRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9uIGZhaWxz
LCBhIG5ldyBlbnRyeSB3aWxsIGJlIGFwcGVuZGVkIHRvCi0gIC8vIGRhdGEuICBIZW5jZSB3ZSBz
YXZlIGRhdGEuc2l6ZSgpIGZpcnN0LgotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfZGF0YV9zaXplLCBh
Y3R1YWxfc2l6ZSk7Ci0KLSAgLy8gQ29tcGFyZXMgdGhlIGNvbW1vbiBwcmVmaXguCi0gIGNvbnN0
IHNpemVfdCBzaG9ydGVyX3NpemUgPSBleHBlY3RlZF9kYXRhX3NpemUgPD0gYWN0dWFsX3NpemUg
PwotICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplIDogYWN0dWFsX3NpemU7Ci0gIHNpemVfdCBpID0g
MDsKLSAgZm9yICg7IGkgPCBzaG9ydGVyX3NpemU7ICsraSkgewotICAgIEFTU0VSVF9TVFJFUShl
eHBlY3RlZF9kYXRhW2ldLCBkYXRhW2ldLmNfc3RyKCkpCi0gICAgICAgIDw8ICJhdCBwb3NpdGlv
biAiIDw8IGk7Ci0gIH0KLQotICAvLyBQcmludHMgZXh0cmEgZWxlbWVudHMgaW4gdGhlIGFjdHVh
bCBkYXRhLgotICBmb3IgKDsgaSA8IGFjdHVhbF9zaXplOyArK2kpIHsKLSAgICBwcmludGYoIiAg
QWN0dWFsIGV2ZW50ICMlbHU6ICVzXG4iLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihpKSwgZGF0YVtpXS5jX3N0cigpKTsKLSAgfQotfQotCi1pbnQgbWFpbihpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpIHsKLSAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGV2ZW50czsKLSAgZ19l
dmVudHMgPSAmZXZlbnRzOwotICBJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgVW5p
dFRlc3Q6OkdldEluc3RhbmNlKCktPmxpc3RlbmVycygpLkFwcGVuZCgKLSAgICAgIG5ldyBFdmVu
dFJlY29yZGluZ0xpc3RlbmVyKCIxc3QiKSk7Ci0gIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5s
aXN0ZW5lcnMoKS5BcHBlbmQoCi0gICAgICBuZXcgRXZlbnRSZWNvcmRpbmdMaXN0ZW5lcigiMm5k
IikpOwotCi0gIEFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgRW52aXJvbm1lbnRJbnZvY2F0
aW9uQ2F0Y2hlcik7Ci0KLSAgR1RFU1RfQ0hFQ0tfKGV2ZW50cy5zaXplKCkgPT0gMCkKLSAgICAg
IDw8ICJBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbnkgZXZl
bnRzIGl0c2VsZi4iOwotCi0gIDo6dGVzdGluZzo6R1RFU1RfRkxBRyhyZXBlYXQpID0gMjsKLSAg
aW50IHJldF92YWwgPSBSVU5fQUxMX1RFU1RTKCk7Ci0KLSAgY29uc3QgY2hhciogY29uc3QgZXhw
ZWN0ZWRfZXZlbnRzW10gPSB7Ci0gICAgIjFzdC5PblRlc3RQcm9ncmFtU3RhcnQiLAotICAgICIy
bmQuT25UZXN0UHJvZ3JhbVN0YXJ0IiwKLSAgICAiMXN0Lk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDAp
IiwKLSAgICAiMm5kLk9uVGVzdEl0ZXJhdGlvblN0YXJ0KDApIiwKLSAgICAiMXN0Lk9uRW52aXJv
bm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1NldFVwU3RhcnQiLAot
ICAgICJFbnZpcm9ubWVudDo6U2V0VXAiLAotICAgICIybmQuT25FbnZpcm9ubWVudHNTZXRVcEVu
ZCIsCi0gICAgIjFzdC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENh
c2VTdGFydCIsCi0gICAgIjJuZC5PblRlc3RDYXNlU3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6
OlNldFVwVGVzdENhc2UiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAotICAgICIybmQuT25UZXN0
U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAiTGlzdGVuZXJUZXN0Ojoq
IFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwKLSAgICAiMm5kLk9uVGVz
dFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3duIiwKLSAgICAiMm5kLk9u
VGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICIxc3QuT25UZXN0U3RhcnQiLAot
ICAgICIybmQuT25UZXN0U3RhcnQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlNldFVwIiwKLSAgICAi
TGlzdGVuZXJUZXN0OjoqIFRlc3QgQm9keSIsCi0gICAgIjFzdC5PblRlc3RQYXJ0UmVzdWx0IiwK
LSAgICAiMm5kLk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICJMaXN0ZW5lclRlc3Q6OlRlYXJEb3du
IiwKLSAgICAiMm5kLk9uVGVzdEVuZCIsCi0gICAgIjFzdC5PblRlc3RFbmQiLAotICAgICJMaXN0
ZW5lclRlc3Q6OlRlYXJEb3duVGVzdENhc2UiLAotICAgICIybmQuT25UZXN0Q2FzZUVuZCIsCi0g
ICAgIjFzdC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRvd25T
dGFydCIsCi0gICAgIjJuZC5PbkVudmlyb25tZW50c1RlYXJEb3duU3RhcnQiLAotICAgICJFbnZp
cm9ubWVudDo6VGVhckRvd24iLAotICAgICIybmQuT25FbnZpcm9ubWVudHNUZWFyRG93bkVuZCIs
Ci0gICAgIjFzdC5PbkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMm5kLk9uVGVzdEl0
ZXJhdGlvbkVuZCgwKSIsCi0gICAgIjFzdC5PblRlc3RJdGVyYXRpb25FbmQoMCkiLAotICAgICIx
c3QuT25UZXN0SXRlcmF0aW9uU3RhcnQoMSkiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uU3Rh
cnQoMSkiLAotICAgICIxc3QuT25FbnZpcm9ubWVudHNTZXRVcFN0YXJ0IiwKLSAgICAiMm5kLk9u
RW52aXJvbm1lbnRzU2V0VXBTdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpTZXRVcCIsCi0gICAg
IjJuZC5PbkVudmlyb25tZW50c1NldFVwRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzU2V0
VXBFbmQiLAotICAgICIxc3QuT25UZXN0Q2FzZVN0YXJ0IiwKLSAgICAiMm5kLk9uVGVzdENhc2VT
dGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0VXBUZXN0Q2FzZSIsCi0gICAgIjFzdC5PblRl
c3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6U2V0
VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAgICAiMXN0Lk9uVGVzdFBh
cnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0gICAgIkxpc3RlbmVyVGVz
dDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAiMXN0Lk9uVGVzdEVuZCIs
Ci0gICAgIjFzdC5PblRlc3RTdGFydCIsCi0gICAgIjJuZC5PblRlc3RTdGFydCIsCi0gICAgIkxp
c3RlbmVyVGVzdDo6U2V0VXAiLAotICAgICJMaXN0ZW5lclRlc3Q6OiogVGVzdCBCb2R5IiwKLSAg
ICAiMXN0Lk9uVGVzdFBhcnRSZXN1bHQiLAotICAgICIybmQuT25UZXN0UGFydFJlc3VsdCIsCi0g
ICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd24iLAotICAgICIybmQuT25UZXN0RW5kIiwKLSAgICAi
MXN0Lk9uVGVzdEVuZCIsCi0gICAgIkxpc3RlbmVyVGVzdDo6VGVhckRvd25UZXN0Q2FzZSIsCi0g
ICAgIjJuZC5PblRlc3RDYXNlRW5kIiwKLSAgICAiMXN0Lk9uVGVzdENhc2VFbmQiLAotICAgICIx
c3QuT25FbnZpcm9ubWVudHNUZWFyRG93blN0YXJ0IiwKLSAgICAiMm5kLk9uRW52aXJvbm1lbnRz
VGVhckRvd25TdGFydCIsCi0gICAgIkVudmlyb25tZW50OjpUZWFyRG93biIsCi0gICAgIjJuZC5P
bkVudmlyb25tZW50c1RlYXJEb3duRW5kIiwKLSAgICAiMXN0Lk9uRW52aXJvbm1lbnRzVGVhckRv
d25FbmQiLAotICAgICIybmQuT25UZXN0SXRlcmF0aW9uRW5kKDEpIiwKLSAgICAiMXN0Lk9uVGVz
dEl0ZXJhdGlvbkVuZCgxKSIsCi0gICAgIjJuZC5PblRlc3RQcm9ncmFtRW5kIiwKLSAgICAiMXN0
Lk9uVGVzdFByb2dyYW1FbmQiCi0gIH07Ci0gIFZlcmlmeVJlc3VsdHMoZXZlbnRzLAotICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX2V2ZW50cywKLSAgICAgICAgICAgICAgICBzaXplb2YoZXhwZWN0
ZWRfZXZlbnRzKS9zaXplb2YoZXhwZWN0ZWRfZXZlbnRzWzBdKSk7Ci0KLSAgLy8gV2UgbmVlZCB0
byBjaGVjayBtYW51YWxseSBmb3IgYWQgaG9jIHRlc3QgZmFpbHVyZXMgdGhhdCBoYXBwZW4gYWZ0
ZXIKLSAgLy8gUlVOX0FMTF9URVNUUyBmaW5pc2hlcy4KLSAgaWYgKFVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpLT5GYWlsZWQoKSkKLSAgICByZXRfdmFsID0gMTsKLQotICByZXR1cm4gcmV0X3ZhbDsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1tZXNzYWdlX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE3NTIzOGVmNGU2NC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3QtbWVzc2FnZV90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAg
QEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
Ly8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBB
dXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIHRo
ZSBNZXNzYWdlIGNsYXNzLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtbWVzc2FnZS5oIgotCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHsKLQotdXNpbmcgOjp0ZXN0aW5n
OjpNZXNzYWdlOwotCi0vLyBUZXN0cyB0aGUgdGVzdGluZzo6TWVzc2FnZSBjbGFzcwotCi0vLyBU
ZXN0cyB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLVRFU1QoTWVzc2FnZVRlc3QsIERlZmF1bHRD
b25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzsKLSAgRVhQRUNUX0VRKCIiLCBtc2cu
R2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0cyB0aGUgY29weSBjb25zdHJ1Y3Rvci4KLVRFU1Qo
TWVzc2FnZVRlc3QsIENvcHlDb25zdHJ1Y3RvcikgewotICBjb25zdCBNZXNzYWdlIG1zZzEoIkhl
bGxvIik7Ci0gIGNvbnN0IE1lc3NhZ2UgbXNnMihtc2cxKTsKLSAgRVhQRUNUX0VRKCJIZWxsbyIs
IG1zZzIuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSBNZXNzYWdl
IGZyb20gYSBDLXN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIENvbnN0cnVjdHNGcm9tQ1N0cmlu
ZykgewotICBNZXNzYWdlIG1zZygiSGVsbG8iKTsKLSAgRVhQRUNUX0VRKCJIZWxsbyIsIG1zZy5H
ZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIGZsb2F0LgotVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc0Zsb2F0KSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHMgPSAoTWVzc2Fn
ZSgpIDw8IDEuMjM0NTZGIDw8ICIgIiA8PCAyLjM0NTY3RikuR2V0U3RyaW5nKCk7Ci0gIC8vIEJv
dGggbnVtYmVycyBzaG91bGQgYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBwcmVjaXNpb24uCi0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIxLjIzNDU2MCIsIHMuY19z
dHIoKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICIgMi4z
NDU2NjkiLCBzLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSBkb3VibGUuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zRG91YmxlKSB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHMg
PSAoTWVzc2FnZSgpIDw8IDEyNjA1NzA4ODAuNDU1NTQ5NyA8PCAiICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAxMjYwNTcyMjY1LjE5NTQ1MzQpLkdldFN0cmluZygpOwot
ICAvLyBCb3RoIG51bWJlcnMgc2hvdWxkIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggcHJlY2lzaW9u
LgotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiMTI2MDU3MDg4
MC40NSIsIHMuY19zdHIoKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJz
dHJpbmcsICIgMTI2MDU3MjI2NS4xOSIsIHMuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVh
bWluZyBhIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zUG9pbnRl
cikgewotICBpbnQgbiA9IDA7Ci0gIGludCogcCA9ICZuOwotICBFWFBFQ1RfTkUoIihudWxsKSIs
IChNZXNzYWdlKCkgPDwgcCkuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcg
YSBOVUxMIG5vbi1jaGFyIHBvaW50ZXIuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zTnVsbFBv
aW50ZXIpIHsKLSAgaW50KiBwID0gTlVMTDsKLSAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2Fn
ZSgpIDw8IHApLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGEgQyBzdHJp
bmcuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQ1N0cmluZykgewotICBFWFBFQ1RfRVEoIkZv
byIsIChNZXNzYWdlKCkgPDwgIkZvbyIpLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3Ry
ZWFtaW5nIGEgTlVMTCBDIHN0cmluZy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNOdWxsQ1N0
cmluZykgewotICBjaGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX0VRKCIobnVsbCkiLCAoTWVzc2Fn
ZSgpIDw8IHApLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIHN0ZDo6c3Ry
aW5nLgotVEVTVChNZXNzYWdlVGVzdCwgU3RyZWFtc1N0cmluZykgewotICBjb25zdCA6OnN0ZDo6
c3RyaW5nIHN0cigiSGVsbG8iKTsKLSAgRVhQRUNUX0VRKCJIZWxsbyIsIChNZXNzYWdlKCkgPDwg
c3RyKS5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2UgY2FuIG91dHB1dCBzdHJp
bmdzIGNvbnRhaW5pbmcgZW1iZWRkZWQgTlVMcy4KLVRFU1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNT
dHJpbmdXaXRoRW1iZWRkZWROVUwpIHsKLSAgY29uc3QgY2hhciBjaGFyX2FycmF5X3dpdGhfbnVs
W10gPQotICAgICAgIkhlcmUncyBhIE5VTFwwIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKLSAgY29u
c3QgOjpzdGQ6OnN0cmluZyBzdHJpbmdfd2l0aF9udWwoY2hhcl9hcnJheV93aXRoX251bCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJyYXlfd2l0
aF9udWwpIC0gMSk7Ci0gIEVYUEVDVF9FUSgiSGVyZSdzIGEgTlVMXFwwIGFuZCBzb21lIG1vcmUg
c3RyaW5nIiwKLSAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgc3RyaW5nX3dpdGhfbnVsKS5HZXRT
dHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIE5VTCBjaGFyLgotVEVTVChNZXNz
YWdlVGVzdCwgU3RyZWFtc05VTENoYXIpIHsKLSAgRVhQRUNUX0VRKCJcXDAiLCAoTWVzc2FnZSgp
IDw8ICdcMCcpLkdldFN0cmluZygpKTsKLX0KLQotLy8gVGVzdHMgc3RyZWFtaW5nIGludC4KLVRF
U1QoTWVzc2FnZVRlc3QsIFN0cmVhbXNJbnQpIHsKLSAgRVhQRUNUX0VRKCIxMjMiLCAoTWVzc2Fn
ZSgpIDw8IDEyMykuR2V0U3RyaW5nKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGJhc2ljIElPIG1h
bmlwdWxhdG9ycyAoZW5kbCwgZW5kcywgYW5kIGZsdXNoKSBjYW4gYmUKLS8vIHN0cmVhbWVkIHRv
IE1lc3NhZ2UuCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJlYW1zQmFzaWNJb01hbmlwKSB7Ci0gIEVY
UEVDVF9FUSgiTGluZSAxLlxuQSBOVUwgY2hhciBcXDAgaW4gbGluZSAyLiIsCi0gICAgICAgICAg
ICAgICAoTWVzc2FnZSgpIDw8ICJMaW5lIDEuIiA8PCBzdGQ6OmVuZGwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBpbiBsaW5lIDIuIikuR2V0U3RyaW5nKCkpOwot
fQotCi0vLyBUZXN0cyBNZXNzYWdlOjpHZXRTdHJpbmcoKQotVEVTVChNZXNzYWdlVGVzdCwgR2V0
U3RyaW5nKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgMSA8PCAiIGxhbWIiOwotICBFWFBF
Q1RfRVEoIjEgbGFtYiIsIG1zZy5HZXRTdHJpbmcoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWlu
ZyBhIE1lc3NhZ2Ugb2JqZWN0IHRvIGFuIG9zdHJlYW0uCi1URVNUKE1lc3NhZ2VUZXN0LCBTdHJl
YW1zVG9PU3RyZWFtKSB7Ci0gIE1lc3NhZ2UgbXNnKCJIZWxsbyIpOwotICA6OnN0ZDo6c3RyaW5n
c3RyZWFtIHNzOwotICBzcyA8PCBtc2c7Ci0gIEVYUEVDVF9FUSgiSGVsbG8iLCB0ZXN0aW5nOjpp
bnRlcm5hbDo6U3RyaW5nU3RyZWFtVG9TdHJpbmcoJnNzKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
YSBNZXNzYWdlIG9iamVjdCBkb2Vzbid0IHRha2UgdXAgdG9vIG11Y2ggc3RhY2sgc3BhY2UuCi1U
RVNUKE1lc3NhZ2VUZXN0LCBEb2VzTm90VGFrZVVwTXVjaFN0YWNrU3BhY2UpIHsKLSAgRVhQRUNU
X0xFKHNpemVvZihNZXNzYWdlKSwgMTZVKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3Qtb3B0aW9uc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1NTg2ZGMzYjFiMjUuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
LW9wdGlvbnNfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczoga2Vp
dGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIEdvb2dsZSBUZXN0IFVuaXRUZXN0
T3B0aW9ucyB0ZXN0cwotLy8KLS8vIFRoaXMgZmlsZSB0ZXN0cyBjbGFzc2VzIGFuZCBmdW5jdGlv
bnMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0vLyBHb29nbGUgVGVzdC4gIFRoZXkgYXJlIHN1YmplY3Qg
dG8gY2hhbmdlIHdpdGhvdXQgbm90aWNlLgotLy8KLS8vIFRoaXMgZmlsZSBpcyAjaW5jbHVkZWQg
ZnJvbSBndGVzdC5jYywgdG8gYXZvaWQgY2hhbmdpbmcgYnVpbGQgb3IKLS8vIG1ha2UtZmlsZXMg
b24gV2luZG93cyBhbmQgb3RoZXIgcGxhdGZvcm1zLiBEbyBub3QgI2luY2x1ZGUgdGhpcyBmaWxl
Ci0vLyBhbnl3aGVyZSBlbHNlIQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0jIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbGlmIEdURVNU
X09TX1dJTkRPV1MKLSMgaW5jbHVkZSA8ZGlyZWN0Lmg+Ci0jZW5kaWYgIC8vIEdURVNUX09TX1dJ
TkRPV1NfTU9CSUxFCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBp
cyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21l
IGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdp
bGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1
c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgot
Ly8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAi
c3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwot
Ci1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotbmFtZXNwYWNlIHsK
LQotLy8gVHVybnMgdGhlIGdpdmVuIHJlbGF0aXZlIHBhdGggaW50byBhbiBhYnNvbHV0ZSBwYXRo
LgotRmlsZVBhdGggR2V0QWJzb2x1dGVQYXRoT2YoY29uc3QgRmlsZVBhdGgmIHJlbGF0aXZlX3Bh
dGgpIHsKLSAgcmV0dXJuIEZpbGVQYXRoOjpDb25jYXRQYXRocyhGaWxlUGF0aDo6R2V0Q3VycmVu
dERpcigpLCByZWxhdGl2ZV9wYXRoKTsKLX0KLQotLy8gVGVzdGluZyBVbml0VGVzdE9wdGlvbnM6
OkdldE91dHB1dEZvcm1hdC9HZXRPdXRwdXRGaWxlLgotCi1URVNUKFhtbE91dHB1dFRlc3QsIEdl
dE91dHB1dEZvcm1hdERlZmF1bHQpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVY
UEVDVF9TVFJFUSgiIiwgVW5pdFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigp
KTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRwdXRGb3JtYXQpIHsKLSAgR1RFU1Rf
RkxBRyhvdXRwdXQpID0gInhtbDpmaWxlbmFtZSI7Ci0gIEVYUEVDVF9TVFJFUSgieG1sIiwgVW5p
dFRlc3RPcHRpb25zOjpHZXRPdXRwdXRGb3JtYXQoKS5jX3N0cigpKTsKLX0KLQotVEVTVChYbWxP
dXRwdXRUZXN0LCBHZXRPdXRwdXRGaWxlRGVmYXVsdCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkg
PSAiIjsKLSAgRVhQRUNUX0VRKEdldEFic29sdXRlUGF0aE9mKEZpbGVQYXRoKCJ0ZXN0X2RldGFp
bC54bWwiKSkuc3RyaW5nKCksCi0gICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29s
dXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKLX0KLQotVEVTVChYbWxPdXRwdXRUZXN0LCBHZXRPdXRw
dXRGaWxlU2luZ2xlRmlsZSkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZpbGVuYW1l
LmFiYyI7Ci0gIEVYUEVDVF9FUShHZXRBYnNvbHV0ZVBhdGhPZihGaWxlUGF0aCgiZmlsZW5hbWUu
YWJjIikpLnN0cmluZygpLAotICAgICAgICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0
ZVBhdGhUb091dHB1dEZpbGUoKSk7Ci19Ci0KLVRFU1QoWG1sT3V0cHV0VGVzdCwgR2V0T3V0cHV0
RmlsZUZyb21EaXJlY3RvcnlQYXRoKSB7Ci0gIEdURVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6cGF0
aCIgR1RFU1RfUEFUSF9TRVBfOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRf
ZmlsZSA9Ci0gICAgICBHZXRBYnNvbHV0ZVBhdGhPZigKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6
OnN0cmluZygicGF0aCIpICsgR1RFU1RfUEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBH
ZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKS5zdHJpbmcoKSArICIueG1sIikpLnN0cmluZygpOwot
ICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2ZpbGUgPQotICAgICAgVW5pdFRlc3RPcHRpb25z
OjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0g
IEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2Zp
bGUuY19zdHIoKSk7Ci0jZWxzZQotICBFWFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91
dHB1dF9maWxlLmNfc3RyKCkpOwotI2VuZGlmCi19Ci0KLVRFU1QoT3V0cHV0RmlsZUhlbHBlcnNU
ZXN0LCBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhl
X3N0ciA9IEdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpOwotI2lmIEdURVNUX09T
X1dJTkRPV1MKLSAgY29uc3QgYm9vbCBzdWNjZXNzID0KLSAgICAgIF9zdHJjbXBpKCJndGVzdC1v
cHRpb25zX3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9zdHJjbXBpKCJn
dGVzdC1vcHRpb25zLWV4X3Rlc3QiLCBleGVfc3RyLmNfc3RyKCkpID09IDAgfHwKLSAgICAgIF9z
dHJjbXBpKCJndGVzdF9hbGxfdGVzdCIsIGV4ZV9zdHIuY19zdHIoKSkgPT0gMCB8fAotICAgICAg
X3N0cmNtcGkoImd0ZXN0X2RsbF90ZXN0IiwgZXhlX3N0ci5jX3N0cigpKSA9PSAwOwotI2Vsc2UK
LSAgLy8gVE9ETyh3YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSB0aGUgaGFyZC1jb2RlZCAibHQtIiBw
cmVmaXggd2hlbgotICAvLyAgIENoYW5kbGVyIENhcnJ1dGgncyBsaWJ0b29sIHJlcGxhY2VtZW50
IGlzIHJlYWR5LgotICBjb25zdCBib29sIHN1Y2Nlc3MgPQotICAgICAgZXhlX3N0ciA9PSAiZ3Rl
c3Qtb3B0aW9uc190ZXN0IiB8fAotICAgICAgZXhlX3N0ciA9PSAiZ3Rlc3RfYWxsX3Rlc3QiIHx8
Ci0gICAgICBleGVfc3RyID09ICJsdC1ndGVzdF9hbGxfdGVzdCIgfHwKLSAgICAgIGV4ZV9zdHIg
PT0gImd0ZXN0X2RsbF90ZXN0IjsKLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotICBpZiAo
IXN1Y2Nlc3MpCi0gICAgRkFJTCgpIDw8ICJHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUoKSByZXR1
cm5zICIgPDwgZXhlX3N0cjsKLX0KLQotY2xhc3MgWG1sT3V0cHV0Q2hhbmdlRGlyVGVzdCA6IHB1
YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBv
cmlnaW5hbF93b3JraW5nX2Rpcl8gPSBGaWxlUGF0aDo6R2V0Q3VycmVudERpcigpOwotICAgIHBv
c2l4OjpDaERpcigiLi4iKTsKLSAgICAvLyBUaGlzIHdpbGwgbWFrZSB0aGUgdGVzdCBmYWlsIGlm
IHJ1biBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4KLSAgICBFWFBFQ1RfTkUob3JpZ2luYWxfd29y
a2luZ19kaXJfLnN0cmluZygpLAotICAgICAgICAgICAgICBGaWxlUGF0aDo6R2V0Q3VycmVudERp
cigpLnN0cmluZygpKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBw
b3NpeDo6Q2hEaXIob3JpZ2luYWxfd29ya2luZ19kaXJfLnN0cmluZygpLmNfc3RyKCkpOwotICB9
Ci0KLSAgRmlsZVBhdGggb3JpZ2luYWxfd29ya2luZ19kaXJfOwotfTsKLQotVEVTVF9GKFhtbE91
dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aERlZmF1bHQp
IHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gIiI7Ci0gIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29u
Y2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwiKSkuc3RyaW5nKCksCi0gICAgICAg
ICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKLX0K
LQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5n
RGlyV2l0aERlZmF1bHRYTUwpIHsKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0gInhtbCI7Ci0gIEVY
UEVDVF9FUShGaWxlUGF0aDo6Q29uY2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVQYXRoKCJ0ZXN0X2RldGFpbC54bWwi
KSkuc3RyaW5nKCksCi0gICAgICAgICAgICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0
aFRvT3V0cHV0RmlsZSgpKTsKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFBy
ZXNlcnZlT3JpZ2luYWxXb3JraW5nRGlyV2l0aFJlbGF0aXZlRmlsZSkgewotICBHVEVTVF9GTEFH
KG91dHB1dCkgPSAieG1sOmZpbGVuYW1lLmFiYyI7Ci0gIEVYUEVDVF9FUShGaWxlUGF0aDo6Q29u
Y2F0UGF0aHMob3JpZ2luYWxfd29ya2luZ19kaXJfLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZpbGVQYXRoKCJmaWxlbmFtZS5hYmMiKSkuc3RyaW5nKCksCi0gICAgICAgICAg
ICBVbml0VGVzdE9wdGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpKTsKLX0KLQot
VEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxXb3JraW5nRGly
V2l0aFJlbGF0aXZlUGF0aCkgewotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOnBhdGgiIEdU
RVNUX1BBVEhfU0VQXzsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0ZWRfb3V0cHV0X2ZpbGUg
PQotICAgICAgRmlsZVBhdGg6OkNvbmNhdFBhdGhzKAotICAgICAgICAgIG9yaWdpbmFsX3dvcmtp
bmdfZGlyXywKLSAgICAgICAgICBGaWxlUGF0aChzdGQ6OnN0cmluZygicGF0aCIpICsgR1RFU1Rf
UEFUSF9TRVBfICsKLSAgICAgICAgICAgICAgICAgICBHZXRDdXJyZW50RXhlY3V0YWJsZU5hbWUo
KS5zdHJpbmcoKSArICIueG1sIikpLnN0cmluZygpOwotICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0
cHV0X2ZpbGUgPQotICAgICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1
dEZpbGUoKTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEVYUEVDVF9TVFJDQVNFRVEoZXhwZWN0
ZWRfb3V0cHV0X2ZpbGUuY19zdHIoKSwgb3V0cHV0X2ZpbGUuY19zdHIoKSk7Ci0jZWxzZQotICBF
WFBFQ1RfRVEoZXhwZWN0ZWRfb3V0cHV0X2ZpbGUsIG91dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vu
ZGlmCi19Ci0KLVRFU1RfRihYbWxPdXRwdXRDaGFuZ2VEaXJUZXN0LCBQcmVzZXJ2ZU9yaWdpbmFs
V29ya2luZ0RpcldpdGhBYnNvbHV0ZUZpbGUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gIEdU
RVNUX0ZMQUcob3V0cHV0KSA9ICJ4bWw6YzpcXHRtcFxcZmlsZW5hbWUuYWJjIjsKLSAgRVhQRUNU
X0VRKEZpbGVQYXRoKCJjOlxcdG1wXFxmaWxlbmFtZS5hYmMiKS5zdHJpbmcoKSwKLSAgICAgICAg
ICAgIFVuaXRUZXN0T3B0aW9uczo6R2V0QWJzb2x1dGVQYXRoVG9PdXRwdXRGaWxlKCkpOwotI2Vs
c2UKLSAgR1RFU1RfRkxBRyhvdXRwdXQpID0ieG1sOi90bXAvZmlsZW5hbWUuYWJjIjsKLSAgRVhQ
RUNUX0VRKEZpbGVQYXRoKCIvdG1wL2ZpbGVuYW1lLmFiYyIpLnN0cmluZygpLAotICAgICAgICAg
ICAgVW5pdFRlc3RPcHRpb25zOjpHZXRBYnNvbHV0ZVBhdGhUb091dHB1dEZpbGUoKSk7Ci0jZW5k
aWYKLX0KLQotVEVTVF9GKFhtbE91dHB1dENoYW5nZURpclRlc3QsIFByZXNlcnZlT3JpZ2luYWxX
b3JraW5nRGlyV2l0aEFic29sdXRlUGF0aCkgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgY29u
c3Qgc3RkOjpzdHJpbmcgcGF0aCA9ICJjOlxcdG1wXFwiOwotI2Vsc2UKLSAgY29uc3Qgc3RkOjpz
dHJpbmcgcGF0aCA9ICIvdG1wLyI7Ci0jZW5kaWYKLQotICBHVEVTVF9GTEFHKG91dHB1dCkgPSAi
eG1sOiIgKyBwYXRoOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9vdXRwdXRfZmlsZSA9
Ci0gICAgICBwYXRoICsgR2V0Q3VycmVudEV4ZWN1dGFibGVOYW1lKCkuc3RyaW5nKCkgKyAiLnht
bCI7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZmlsZSA9Ci0gICAgICBVbml0VGVzdE9w
dGlvbnM6OkdldEFic29sdXRlUGF0aFRvT3V0cHV0RmlsZSgpOwotCi0jaWYgR1RFU1RfT1NfV0lO
RE9XUwotICBFWFBFQ1RfU1RSQ0FTRUVRKGV4cGVjdGVkX291dHB1dF9maWxlLmNfc3RyKCksIG91
dHB1dF9maWxlLmNfc3RyKCkpOwotI2Vsc2UKLSAgRVhQRUNUX0VRKGV4cGVjdGVkX291dHB1dF9m
aWxlLCBvdXRwdXRfZmlsZS5jX3N0cigpKTsKLSNlbmRpZgotfQotCi19ICAvLyBuYW1lc3BhY2UK
LX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRlc3RpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3QtcGFyYW0tdGVzdDJfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGE3ODJmZTcwODM3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdC1wYXJhbS10ZXN0Ml90ZXN0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8v
IEF1dGhvcjogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3NldikKLS8vCi0vLyBUZXN0cyBmb3Ig
R29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJpZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1
Y3RzIG9mCi0vLyBHb29nbGUgVGVzdCB3b3JrLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
LQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmgiCi0KLSNpZiBHVEVTVF9I
QVNfUEFSQU1fVEVTVAotCi11c2luZyA6OnRlc3Rpbmc6OlZhbHVlczsKLXVzaW5nIDo6dGVzdGlu
Zzo6aW50ZXJuYWw6OlBhcmFtR2VuZXJhdG9yOwotCi0vLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMg
ZGVmaW5lZCBpbiBhIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0Ci0vLyBhcmUgZnVuY3Rpb25h
bC4gVGhlIHRlc3QgdXNpbmcgZXh0ZXJuX2dlbiBpcyBkZWZpbmVkCi0vLyBpbiBndGVzdC1wYXJh
bS10ZXN0X3Rlc3QuY2MuCi1QYXJhbUdlbmVyYXRvcjxpbnQ+IGV4dGVybl9nZW4gPSBWYWx1ZXMo
MzMpOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRl
ZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uIHVuaXQKLS8vIGFuZCBpbnN0YW50aWF0ZWQgaW4gYW5v
dGhlci4gVGhlIHRlc3QgaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKLS8v
IGFuZCBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUgY2xhc3MgaXMgZGVmaW5lZCBp
bgotLy8gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChN
dWx0aXBsZXNPZjMzLAotICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxJbnN0YW50aWF0
aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygzMywgNjYpKTsKLQotLy8g
VGVzdHMgdGhhdCBhIHBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZSBpbnN0YW50aWF0ZWQK
LS8vIGluIG11bHRpcGxlIHRyYW5zbGF0aW9uIHVuaXRzLiBBbm90aGVyIGluc3RhbnRpYXRpb24g
aXMgZGVmaW5lZAotLy8gaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmNjIGFuZCBJbnN0YW50aWF0
aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QKLS8vIGZpeHR1cmUgaXMgZGVmaW5lZCBp
biBndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVu
Y2UyLAotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFu
c2xhaW9uVW5pdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDQyKjMsIDQy
KjQsIDQyKjUpKTsKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0LXBhcmFtLXRlc3RfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGIyNzhiYjk0Yjg1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdC1wYXJhbS10ZXN0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDU1ICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHZsYWRsQGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGVzdHMgZm9yIEdvb2ds
ZSBUZXN0IGl0c2VsZi4gVGhpcyBmaWxlIHZlcmlmaWVzIHRoYXQgdGhlIHBhcmFtZXRlcgotLy8g
Z2VuZXJhdG9ycyBvYmplY3RzIHByb2R1Y2UgY29ycmVjdCBwYXJhbWV0ZXIgc2VxdWVuY2VzIGFu
ZCB0aGF0Ci0vLyBHb29nbGUgVGVzdCBydW50aW1lIGluc3RhbnRpYXRlcyBjb3JyZWN0IHRlc3Rz
IGZyb20gdGhvc2Ugc2VxdWVuY2VzLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lm
IEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSMgaW5jbHVkZSA8YWxnb3JpdGhtPgotIyBpbmNsdWRl
IDxpb3N0cmVhbT4KLSMgaW5jbHVkZSA8bGlzdD4KLSMgaW5jbHVkZSA8c3N0cmVhbT4KLSMgaW5j
bHVkZSA8c3RyaW5nPgotIyBpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIFRvIGluY2x1ZGUgZ3Rlc3Qt
aW50ZXJuYWwtaW5sLmguCi0jIGRlZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotIyBpbmNs
dWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiICAvLyBmb3IgVW5pdFRlc3RPcHRpb25zCi0j
IHVuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi0jIGluY2x1ZGUgInRlc3QvZ3Rlc3QtcGFy
YW0tdGVzdF90ZXN0LmgiCi0KLXVzaW5nIDo6c3RkOjp2ZWN0b3I7Ci11c2luZyA6OnN0ZDo6c29y
dDsKLQotdXNpbmcgOjp0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQ7Ci11c2luZyA6
OnRlc3Rpbmc6OkJvb2w7Ci11c2luZyA6OnRlc3Rpbmc6Ok1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rp
bmc6OlJhbmdlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtOwotdXNpbmcgOjp0ZXN0
aW5nOjpWYWx1ZXM7Ci11c2luZyA6OnRlc3Rpbmc6OlZhbHVlc0luOwotCi0jIGlmIEdURVNUX0hB
U19DT01CSU5FCi11c2luZyA6OnRlc3Rpbmc6OkNvbWJpbmU7Ci11c2luZyA6OnRlc3Rpbmc6Omdl
dDsKLXVzaW5nIDo6dGVzdGluZzo6bWFrZV90dXBsZTsKLXVzaW5nIDo6dGVzdGluZzo6dHVwbGU7
Ci0jIGVuZGlmICAvLyBHVEVTVF9IQVNfQ09NQklORQotCi11c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpQYXJhbUdlbmVyYXRvcjsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlVuaXRUZXN0
T3B0aW9uczsKLQotLy8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcuCi0vLwotLy8gVE9ETyh3
YW5AZ29vZ2xlLmNvbSk6IHJlbW92ZSBQcmludFZhbHVlKCkgd2hlbiB3ZSBtb3ZlIG1hdGNoZXJz
IGFuZAotLy8gRVhQRUNUX1RIQVQoKSBmcm9tIEdvb2dsZSBNb2NrIHRvIEdvb2dsZSBUZXN0LiAg
QXQgdGhhdCB0aW1lLCB3ZQotLy8gY2FuIHdyaXRlIEVYUEVDVF9USEFUKHgsIEVxKHkpKSB0byBj
b21wYXJlIHR3byB0dXBsZXMgeCBhbmQgeSwgYXMKLS8vIEVYUEVDVF9USEFUKCkgYW5kIHRoZSBt
YXRjaGVycyBrbm93IGhvdyB0byBwcmludCB0dXBsZXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LTo6c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCBUJiB2YWx1ZSkgewotICA6OnN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8IHZhbHVlOwotICByZXR1cm4gc3RyZWFtLnN0
cigpOwotfQotCi0jIGlmIEdURVNUX0hBU19DT01CSU5FCi0KLS8vIFRoZXNlIG92ZXJsb2FkcyBh
bGxvdyBwcmludGluZyB0dXBsZXMgaW4gb3VyIHRlc3RzLiAgV2UgY2Fubm90Ci0vLyBkZWZpbmUg
YW4gb3BlcmF0b3I8PCBmb3IgdHVwbGVzLCBhcyB0aGF0IGRlZmluaXRpb24gbmVlZHMgdG8gYmUg
aW4KLS8vIHRoZSBzdGQgbmFtZXNwYWNlIGluIG9yZGVyIHRvIGJlIHBpY2tlZCB1cCBieSBHb29n
bGUgVGVzdCB2aWEKLS8vIEFyZ3VtZW50LURlcGVuZGVudCBMb29rdXAsIHlldCBkZWZpbmluZyBh
bnl0aGluZyBpbiB0aGUgc3RkCi0vLyBuYW1lc3BhY2UgaW4gbm9uLVNUTCBjb2RlIGlzIHVuZGVm
aW5lZCBiZWhhdmlvci4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLTo6
c3RkOjpzdHJpbmcgUHJpbnRWYWx1ZShjb25zdCB0dXBsZTxUMSwgVDI+JiB2YWx1ZSkgewotICA6
OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBnZXQ8MD4odmFs
dWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKSA8PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3Ry
KCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQz
PgotOjpzdGQ6OnN0cmluZyBQcmludFZhbHVlKGNvbnN0IHR1cGxlPFQxLCBUMiwgVDM+JiB2YWx1
ZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgc3RyZWFtIDw8ICIoIiA8PCBn
ZXQ8MD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDE+KHZhbHVlKQotICAgICAgICAgPDwgIiwgIjw8
IGdldDwyPih2YWx1ZSkgPDwgIikiOwotICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQs
IHR5cGVuYW1lIFQ1LAotICAgICAgICAgIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5h
bWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTA+Ci06OnN0ZDo6c3RyaW5nIFByaW50VmFs
dWUoCi0gICAgY29uc3QgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwg
VDEwPiYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07Ci0gIHN0cmVhbSA8
PCAiKCIgPDwgZ2V0PDA+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDwxPih2YWx1ZSkKLSAgICAgICAg
IDw8ICIsICI8PCBnZXQ8Mj4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDM+KHZhbHVlKQotICAgICAg
ICAgPDwgIiwgIjw8IGdldDw0Pih2YWx1ZSkgPDwgIiwgIiA8PCBnZXQ8NT4odmFsdWUpCi0gICAg
ICAgICA8PCAiLCAiPDwgZ2V0PDY+KHZhbHVlKSA8PCAiLCAiIDw8IGdldDw3Pih2YWx1ZSkKLSAg
ICAgICAgIDw8ICIsICI8PCBnZXQ8OD4odmFsdWUpIDw8ICIsICIgPDwgZ2V0PDk+KHZhbHVlKSA8
PCAiKSI7Ci0gIHJldHVybiBzdHJlYW0uc3RyKCk7Ci19Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hB
U19DT01CSU5FCi0KLS8vIFZlcmlmaWVzIHRoYXQgYSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhl
IGdlbmVyYXRvciBhbmQgYWNjZXNzZWQKLS8vIHZpYSB0aGUgaXRlcmF0b3Igb2JqZWN0IG1hdGNo
ZXMgdGhlIGV4cGVjdGVkIG9uZSB1c2luZyBHb29nbGUgVGVzdAotLy8gYXNzZXJ0aW9ucy4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgTj4KLXZvaWQgVmVyaWZ5R2VuZXJhdG9yKGNvbnN0
IFBhcmFtR2VuZXJhdG9yPFQ+JiBnZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICBjb25z
dCBUICgmZXhwZWN0ZWRfdmFsdWVzKVtOXSkgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxU
Pjo6aXRlcmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBOOyArK2kpIHsKLSAgICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQot
ICAgICAgICA8PCAiQXQgZWxlbWVudCAiIDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4g
aXRlcmF0b3IgIgotICAgICAgICA8PCAiY3JlYXRlZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9y
LlxuIjsKLSAgICAvLyBXZSBjYW5ub3QgdXNlIEVYUEVDVF9FUSgpIGhlcmUgYXMgdGhlIHZhbHVl
cyBtYXkgYmUgdHVwbGVzLAotICAgIC8vIHdoaWNoIGRvbid0IHN1cHBvcnQgPDwuCi0gICAgRVhQ
RUNUX1RSVUUoZXhwZWN0ZWRfdmFsdWVzW2ldID09ICppdCkKLSAgICAgICAgPDwgIndoZXJlIGkg
aXMgIiA8PCBpCi0gICAgICAgIDw8ICIsIGV4cGVjdGVkX3ZhbHVlc1tpXSBpcyAiIDw8IFByaW50
VmFsdWUoZXhwZWN0ZWRfdmFsdWVzW2ldKQotICAgICAgICA8PCAiLCAqaXQgaXMgIiA8PCBQcmlu
dFZhbHVlKCppdCkKLSAgICAgICAgPDwgIiwgYW5kICdpdCcgaXMgYW4gaXRlcmF0b3IgY3JlYXRl
ZCB3aXRoIHRoZSBjb3B5IGNvbnN0cnVjdG9yLlxuIjsKLSAgICBpdCsrOwotICB9Ci0gIEVYUEVD
VF9UUlVFKGl0ID09IGdlbmVyYXRvci5lbmQoKSkKLSAgICAgICAgPDwgIkF0IHRoZSBwcmVzdW1l
ZCBlbmQgb2Ygc2VxdWVuY2Ugd2hlbiBhY2Nlc3NpbmcgdmlhIGFuIGl0ZXJhdG9yICIKLSAgICAg
ICAgPDwgImNyZWF0ZWQgd2l0aCB0aGUgY29weSBjb25zdHJ1Y3Rvci5cbiI7Ci0KLSAgLy8gVGVz
dCB0aGUgaXRlcmF0b3IgYXNzaWdubWVudC4gVGhlIGZvbGxvd2luZyBsaW5lcyB2ZXJpZnkgdGhh
dAotICAvLyB0aGUgc2VxdWVuY2UgYWNjZXNzZWQgdmlhIGFuIGl0ZXJhdG9yIGluaXRpYWxpemVk
IHZpYSB0aGUKLSAgLy8gYXNzaWdubWVudCBvcGVyYXRvciAoYXMgb3Bwb3NlZCB0byBhIGNvcHkg
Y29uc3RydWN0b3IpIG1hdGNoZXMKLSAgLy8ganVzdCB0aGUgc2FtZS4KLSAgaXQgPSBnZW5lcmF0
b3IuYmVnaW4oKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpIHsKLSAgICBBU1NF
UlRfRkFMU0UoaXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgZWxlbWVudCAi
IDw8IGkgPDwgIiB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAi
Y3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLSAgICBFWFBFQ1RfVFJV
RShleHBlY3RlZF92YWx1ZXNbaV0gPT0gKml0KQotICAgICAgICA8PCAid2hlcmUgaSBpcyAiIDw8
IGkKLSAgICAgICAgPDwgIiwgZXhwZWN0ZWRfdmFsdWVzW2ldIGlzICIgPDwgUHJpbnRWYWx1ZShl
eHBlY3RlZF92YWx1ZXNbaV0pCi0gICAgICAgIDw8ICIsICppdCBpcyAiIDw8IFByaW50VmFsdWUo
Kml0KQotICAgICAgICA8PCAiLCBhbmQgJ2l0JyBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIHdpdGgg
dGhlIGNvcHkgY29uc3RydWN0b3IuXG4iOwotICAgIGl0Kys7Ci0gIH0KLSAgRVhQRUNUX1RSVUUo
aXQgPT0gZ2VuZXJhdG9yLmVuZCgpKQotICAgICAgICA8PCAiQXQgdGhlIHByZXN1bWVkIGVuZCBv
ZiBzZXF1ZW5jZSB3aGVuIGFjY2Vzc2luZyB2aWEgYW4gaXRlcmF0b3IgIgotICAgICAgICA8PCAi
Y3JlYXRlZCB3aXRoIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLlxuIjsKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci12b2lkIFZlcmlmeUdlbmVyYXRvcklzRW1wdHkoY29uc3QgUGFyYW1HZW5l
cmF0b3I8VD4mIGdlbmVyYXRvcikgewotICB0eXBlbmFtZSBQYXJhbUdlbmVyYXRvcjxUPjo6aXRl
cmF0b3IgaXQgPSBnZW5lcmF0b3IuYmVnaW4oKTsKLSAgRVhQRUNUX1RSVUUoaXQgPT0gZ2VuZXJh
dG9yLmVuZCgpKTsKLQotICBpdCA9IGdlbmVyYXRvci5iZWdpbigpOwotICBFWFBFQ1RfVFJVRShp
dCA9PSBnZW5lcmF0b3IuZW5kKCkpOwotfQotCi0vLyBHZW5lcmF0b3IgdGVzdHMuIFRoZXkgdGVz
dCB0aGF0IGVhY2ggb2YgdGhlIHByb3ZpZGVkIGdlbmVyYXRvciBmdW5jdGlvbnMKLS8vIGdlbmVy
YXRlcyBhbiBleHBlY3RlZCBzZXF1ZW5jZSBvZiB2YWx1ZXMuIFRoZSBnZW5lcmFsIHRlc3QgcGF0
dGVybgotLy8gaW5zdGFudGlhdGVzIGEgZ2VuZXJhdG9yIHVzaW5nIG9uZSBvZiB0aGUgZ2VuZXJh
dG9yIGZ1bmN0aW9ucywKLS8vIGNoZWNrcyB0aGUgc2VxdWVuY2UgcHJvZHVjZWQgYnkgdGhlIGdl
bmVyYXRvciB1c2luZyBpdHMgaXRlcmF0b3IgQVBJLAotLy8gYW5kIHRoZW4gcmVzZXRzIHRoZSBp
dGVyYXRvciBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlCi0vLyBhbmQgY2hl
Y2tzIHRoZSBzZXF1ZW5jZSBhZ2Fpbi4KLQotLy8gVGVzdHMgdGhhdCBpdGVyYXRvcnMgcHJvZHVj
ZWQgYnkgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBjb25mb3JtIHRvIHRoZQotLy8gRm9yd2FyZEl0ZXJh
dG9yIGNvbmNlcHQuCi1URVNUKEl0ZXJhdG9yVGVzdCwgUGFyYW1JdGVyYXRvckNvbmZvcm1zVG9G
b3J3YXJkSXRlcmF0b3JDb25jZXB0KSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2Vu
ID0gUmFuZ2UoMCwgMTApOwotICBQYXJhbUdlbmVyYXRvcjxpbnQ+OjppdGVyYXRvciBpdCA9IGdl
bi5iZWdpbigpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgaXRlcmF0b3IgaW5pdGlhbGl6YXRpb24g
d29ya3MgYXMgZXhwZWN0ZWQuCi0gIFBhcmFtR2VuZXJhdG9yPGludD46Oml0ZXJhdG9yIGl0MiA9
IGl0OwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0MikgPDwgIkluaXRpYWxpemVkIGl0ZXJhdG9y
cyBtdXN0IHBvaW50IHRvIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiZWxl
bWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRzIHRvIjsKLQotICAvLyBWZXJpZmllcyB0aGF0
IGl0ZXJhdG9yIGFzc2lnbm1lbnQgd29ya3MgYXMgZXhwZWN0ZWQuCi0gIGl0Kys7Ci0gIEVYUEVD
VF9GQUxTRSgqaXQgPT0gKml0Mik7Ci0gIGl0MiA9IGl0OwotICBFWFBFQ1RfVFJVRSgqaXQgPT0g
Kml0MikgPDwgIkFzc2lnbmVkIGl0ZXJhdG9ycyBtdXN0IHBvaW50IHRvIHRoZSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiZWxlbWVudCBzYW1lIGFzIGl0cyBzb3VyY2UgcG9pbnRz
IHRvIjsKLQotICAvLyBWZXJpZmllcyB0aGF0IHByZWZpeCBvcGVyYXRvcisrKCkgcmV0dXJucyAq
dGhpcy4KLSAgRVhQRUNUX0VRKCZpdCwgJigrK2l0KSkgPDwgIlJlc3VsdCBvZiB0aGUgcHJlZml4
IG9wZXJhdG9yKysgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJyZWZl
ciB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IjsKLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSByZXN1
bHQgb2YgdGhlIHBvc3RmaXggb3BlcmF0b3IrKyBwb2ludHMgdG8gdGhlIHZhbHVlCi0gIC8vIHBv
aW50ZWQgdG8gYnkgdGhlIG9yaWdpbmFsIGl0ZXJhdG9yLgotICBpbnQgb3JpZ2luYWxfdmFsdWUg
PSAqaXQ7ICAvLyBIYXZlIHRvIGNvbXB1dGUgaXQgb3V0c2lkZSBvZiBtYWNybyBjYWxsIHRvIGJl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuYWZmZWN0ZWQgYnkgdGhlIHBhcmFt
ZXRlciBldmFsdWF0aW9uIG9yZGVyLgotICBFWFBFQ1RfRVEob3JpZ2luYWxfdmFsdWUsICooaXQr
KykpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgcHJlZml4IGFuZCBwb3N0Zml4IG9wZXJhdG9yKyso
KSBhZHZhbmNlIGFuIGl0ZXJhdG9yCi0gIC8vIGFsbCB0aGUgc2FtZS4KLSAgaXQyID0gaXQ7Ci0g
IGl0Kys7Ci0gICsraXQyOwotICBFWFBFQ1RfVFJVRSgqaXQgPT0gKml0Mik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgUmFuZ2UoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChS
YW5nZVRlc3QsIEludFJhbmdlV2l0aERlZmF1bHRTdGVwKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJh
dG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMyk7Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNb
XSA9IHswLCAxLCAyfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsK
LX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJhbmdlKCkgZ2VuZXJhdGVzIHRoZSBzaW5n
bGUgZWxlbWVudCBzZXF1ZW5jZQotLy8gYXMgZXhwZWN0ZWQgd2hlbiBwcm92aWRlZCB3aXRoIHJh
bmdlIGxpbWl0cyB0aGF0IGFyZSBlcXVhbC4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZVNpbmds
ZVZhbHVlKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMSk7
Ci0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHswfTsKLSAgVmVyaWZ5R2VuZXJhdG9y
KGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFJh
bmdlKCkgd2l0aCBnZW5lcmF0ZXMgZW1wdHkgc2VxdWVuY2Ugd2hlbgotLy8gc3VwcGxpZWQgd2l0
aCBhbiBlbXB0eSByYW5nZS4KLVRFU1QoUmFuZ2VUZXN0LCBJbnRSYW5nZUVtcHR5KSB7Ci0gIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gUmFuZ2UoMCwgMCk7Ci0gIFZlcmlmeUdlbmVy
YXRvcklzRW1wdHkoZ2VuKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSYW5nZSgpIHdpdGggY3VzdG9t
IHN0ZXAgKGdyZWF0ZXIgdGhlbiBvbmUpIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVl
bmNlLgotVEVTVChSYW5nZVRlc3QsIEludFJhbmdlV2l0aEN1c3RvbVN0ZXApIHsKLSAgY29uc3Qg
UGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBSYW5nZSgwLCA5LCAzKTsKLSAgY29uc3QgaW50IGV4
cGVjdGVkX3ZhbHVlc1tdID0gezAsIDMsIDZ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBl
Y3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFJhbmdlKCkgd2l0aCBjdXN0b20gc3Rl
cCAoZ3JlYXRlciB0aGVuIG9uZSkgZ2VuZXJhdGVzCi0vLyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2Ug
d2hlbiB0aGUgbGFzdCBlbGVtZW50IGRvZXMgbm90IGZhbGwgb24gdGhlCi0vLyB1cHBlciByYW5n
ZSBsaW1pdC4gU2VxdWVuY2VzIGdlbmVyYXRlZCBieSBSYW5nZSgpIG11c3Qgbm90IGhhdmUKLS8v
IGVsZW1lbnRzIGJleW9uZCB0aGUgcmFuZ2UgbGltaXRzLgotVEVTVChSYW5nZVRlc3QsIEludFJh
bmdlV2l0aEN1c3RvbVN0ZXBPdmVyVXBwZXJCb3VuZCkgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxpbnQ+IGdlbiA9IFJhbmdlKDAsIDQsIDMpOwotICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVz
W10gPSB7MCwgM307Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFZlcmlmaWVzIHRoYXQgUmFuZ2Ugd29ya3Mgd2l0aCB1c2VyLWRlZmluZWQgdHlwZXMg
dGhhdCBkZWZpbmUKLS8vIGNvcHkgY29uc3RydWN0b3IsIG9wZXJhdG9yPSgpLCBvcGVyYXRvciso
KSwgYW5kIG9wZXJhdG9yPCgpLgotY2xhc3MgRG9nQWRkZXIgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgRG9nQWRkZXIoY29uc3QgY2hhciogYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLSAg
RG9nQWRkZXIoY29uc3QgRG9nQWRkZXImIG90aGVyKSA6IHZhbHVlXyhvdGhlci52YWx1ZV8uY19z
dHIoKSkge30KLQotICBEb2dBZGRlciBvcGVyYXRvcj0oY29uc3QgRG9nQWRkZXImIG90aGVyKSB7
Ci0gICAgaWYgKHRoaXMgIT0gJm90aGVyKQotICAgICAgdmFsdWVfID0gb3RoZXIudmFsdWVfOwot
ICAgIHJldHVybiAqdGhpczsKLSAgfQotICBEb2dBZGRlciBvcGVyYXRvcisoY29uc3QgRG9nQWRk
ZXImIG90aGVyKSBjb25zdCB7Ci0gICAgTWVzc2FnZSBtc2c7Ci0gICAgbXNnIDw8IHZhbHVlXy5j
X3N0cigpIDw8IG90aGVyLnZhbHVlXy5jX3N0cigpOwotICAgIHJldHVybiBEb2dBZGRlcihtc2cu
R2V0U3RyaW5nKCkuY19zdHIoKSk7Ci0gIH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRG9nQWRk
ZXImIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlXyA8IG90aGVyLnZhbHVlXzsKLSAg
fQotICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZV87IH0K
LQotIHByaXZhdGU6Ci0gIHN0ZDo6c3RyaW5nIHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0
LCBXb3Jrc1dpdGhBQ3VzdG9tVHlwZSkgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxEb2dBZGRl
cj4gZ2VuID0KLSAgICAgIFJhbmdlKERvZ0FkZGVyKCJjYXQiKSwgRG9nQWRkZXIoImNhdGRvZ2Rv
ZyIpLCBEb2dBZGRlcigiZG9nIikpOwotICBQYXJhbUdlbmVyYXRvcjxEb2dBZGRlcj46Oml0ZXJh
dG9yIGl0ID0gZ2VuLmJlZ2luKCk7Ci0KLSAgQVNTRVJUX0ZBTFNFKGl0ID09IGdlbi5lbmQoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiY2F0IiwgaXQtPnZhbHVlKCkuY19zdHIoKSk7Ci0KLSAgQVNTRVJU
X0ZBTFNFKCsraXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX1NUUkVRKCJjYXRkb2ciLCBpdC0+
dmFsdWUoKS5jX3N0cigpKTsKLQotICBFWFBFQ1RfVFJVRSgrK2l0ID09IGdlbi5lbmQoKSk7Ci19
Ci0KLWNsYXNzIEludFdyYXBwZXIgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgSW50V3JhcHBlcihp
bnQgYV92YWx1ZSkgOiB2YWx1ZV8oYV92YWx1ZSkge30KLSAgSW50V3JhcHBlcihjb25zdCBJbnRX
cmFwcGVyJiBvdGhlcikgOiB2YWx1ZV8ob3RoZXIudmFsdWVfKSB7fQotCi0gIEludFdyYXBwZXIg
b3BlcmF0b3I9KGNvbnN0IEludFdyYXBwZXImIG90aGVyKSB7Ci0gICAgdmFsdWVfID0gb3RoZXIu
dmFsdWVfOwotICAgIHJldHVybiAqdGhpczsKLSAgfQotICAvLyBvcGVyYXRvcisoKSBhZGRzIGEg
ZGlmZmVyZW50IHR5cGUuCi0gIEludFdyYXBwZXIgb3BlcmF0b3IrKGludCBvdGhlcikgY29uc3Qg
eyByZXR1cm4gSW50V3JhcHBlcih2YWx1ZV8gKyBvdGhlcik7IH0KLSAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgSW50V3JhcHBlciYgb3RoZXIpIGNvbnN0IHsKLSAgICByZXR1cm4gdmFsdWVfIDwgb3Ro
ZXIudmFsdWVfOwotICB9Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQot
Ci0gcHJpdmF0ZToKLSAgaW50IHZhbHVlXzsKLX07Ci0KLVRFU1QoUmFuZ2VUZXN0LCBXb3Jrc1dp
dGhBQ3VzdG9tVHlwZVdpdGhEaWZmZXJlbnRJbmNyZW1lbnRUeXBlKSB7Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPEludFdyYXBwZXI+IGdlbiA9IFJhbmdlKEludFdyYXBwZXIoMCksIEludFdyYXBw
ZXIoMikpOwotICBQYXJhbUdlbmVyYXRvcjxJbnRXcmFwcGVyPjo6aXRlcmF0b3IgaXQgPSBnZW4u
YmVnaW4oKTsKLQotICBBU1NFUlRfRkFMU0UoaXQgPT0gZ2VuLmVuZCgpKTsKLSAgRVhQRUNUX0VR
KDAsIGl0LT52YWx1ZSgpKTsKLQotICBBU1NFUlRfRkFMU0UoKytpdCA9PSBnZW4uZW5kKCkpOwot
ICBFWFBFQ1RfRVEoMSwgaXQtPnZhbHVlKCkpOwotCi0gIEVYUEVDVF9UUlVFKCsraXQgPT0gZ2Vu
LmVuZCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIHdpdGggYW4gYXJyYXkgcGFy
YW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJ
blRlc3QsIFZhbHVlc0luQXJyYXkpIHsKLSAgaW50IGFycmF5W10gPSB7MywgNSwgOH07Ci0gIGNv
bnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4oYXJyYXkpOwotICBWZXJpZnlH
ZW5lcmF0b3IoZ2VuLCBhcnJheSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgVmFsdWVzSW4oKSB3aXRo
IGEgY29uc3QgYXJyYXkgcGFyYW1ldGVyIGdlbmVyYXRlcwotLy8gdGhlIGV4cGVjdGVkIHNlcXVl
bmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luQ29uc3RBcnJheSkgewotICBjb25zdCBp
bnQgYXJyYXlbXSA9IHszLCA1LCA4fTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4g
PSBWYWx1ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5KTsKLX0KLQot
Ly8gRWRnZSBjYXNlLiBUZXN0cyB0aGF0IFZhbHVlc0luKCkgd2l0aCBhbiBhcnJheSBwYXJhbWV0
ZXIgY29udGFpbmluZyBhCi0vLyBzaW5nbGUgZWxlbWVudCBnZW5lcmF0ZXMgdGhlIHNpbmdsZSBl
bGVtZW50IHNlcXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVu
dEFycmF5KSB7Ci0gIGludCBhcnJheVtdID0gezQyfTsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
aW50PiBnZW4gPSBWYWx1ZXNJbihhcnJheSk7Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGFycmF5
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBWYWx1ZXNJbigpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQg
c2VxdWVuY2UgZm9yIGFuIFNUTAotLy8gY29udGFpbmVyICh2ZWN0b3IpLgotVEVTVChWYWx1ZXNJ
blRlc3QsIFZhbHVlc0luVmVjdG9yKSB7Ci0gIHR5cGVkZWYgOjpzdGQ6OnZlY3RvcjxpbnQ+IENv
bnRhaW5lclR5cGU7Ci0gIENvbnRhaW5lclR5cGUgdmFsdWVzOwotICB2YWx1ZXMucHVzaF9iYWNr
KDMpOwotICB2YWx1ZXMucHVzaF9iYWNrKDUpOwotICB2YWx1ZXMucHVzaF9iYWNrKDgpOwotICBj
b25zdCBQYXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcyk7Ci0KLSAgY29u
c3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBWZXJpZnlHZW5lcmF0b3Io
Z2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IFZhbHVlc0luKCkgZ2Vu
ZXJhdGVzIHRoZSBleHBlY3RlZCBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1ZXNJ
bkl0ZXJhdG9yUmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVy
VHlwZTsKLSAgQ29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soMyk7Ci0g
IHZhbHVlcy5wdXNoX2JhY2soNSk7Ci0gIHZhbHVlcy5wdXNoX2JhY2soOCk7Ci0gIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzSW4odmFsdWVzLmJlZ2luKCksIHZhbHVlcy5l
bmQoKSk7Ci0KLSAgY29uc3QgaW50IGV4cGVjdGVkX3ZhbHVlc1tdID0gezMsIDUsIDh9OwotICBW
ZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBFZGdlIGNhc2Uu
IFRlc3RzIHRoYXQgVmFsdWVzSW4oKSBwcm92aWRlZCB3aXRoIGFuIGl0ZXJhdG9yIHJhbmdlIHNw
ZWNpZnlpbmcgYQotLy8gc2luZ2xlIHZhbHVlIGdlbmVyYXRlcyBhIHNpbmdsZS1lbGVtZW50IHNl
cXVlbmNlLgotVEVTVChWYWx1ZXNJblRlc3QsIFZhbHVlc0luU2luZ2xlRWxlbWVudEl0ZXJhdG9y
UmFuZ2UpIHsKLSAgdHlwZWRlZiA6OnN0ZDo6dmVjdG9yPGludD4gQ29udGFpbmVyVHlwZTsKLSAg
Q29udGFpbmVyVHlwZSB2YWx1ZXM7Ci0gIHZhbHVlcy5wdXNoX2JhY2soNDIpOwotICBjb25zdCBQ
YXJhbUdlbmVyYXRvcjxpbnQ+IGdlbiA9IFZhbHVlc0luKHZhbHVlcy5iZWdpbigpLCB2YWx1ZXMu
ZW5kKCkpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHs0Mn07Ci0gIFZlcmlm
eUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIEVkZ2UgY2FzZS4gVGVz
dHMgdGhhdCBWYWx1ZXNJbigpIHByb3ZpZGVkIHdpdGggYW4gZW1wdHkgaXRlcmF0b3IgcmFuZ2UK
LS8vIGdlbmVyYXRlcyBhbiBlbXB0eSBzZXF1ZW5jZS4KLVRFU1QoVmFsdWVzSW5UZXN0LCBWYWx1
ZXNJbkVtcHR5SXRlcmF0b3JSYW5nZSkgewotICB0eXBlZGVmIDo6c3RkOjp2ZWN0b3I8aW50PiBD
b250YWluZXJUeXBlOwotICBDb250YWluZXJUeXBlIHZhbHVlczsKLSAgY29uc3QgUGFyYW1HZW5l
cmF0b3I8aW50PiBnZW4gPSBWYWx1ZXNJbih2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpKTsK
LQotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhl
IFZhbHVlcygpIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgc2VxdWVuY2UuCi1URVNUKFZhbHVlc1Rl
c3QsIFZhbHVlc1dvcmtzKSB7Ci0gIGNvbnN0IFBhcmFtR2VuZXJhdG9yPGludD4gZ2VuID0gVmFs
dWVzKDMsIDUsIDgpOwotCi0gIGNvbnN0IGludCBleHBlY3RlZF92YWx1ZXNbXSA9IHszLCA1LCA4
fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBWYWx1ZXMoKSBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlcyBmcm9tIGVs
ZW1lbnRzIG9mCi0vLyBkaWZmZXJlbnQgdHlwZXMgY29udmVydGlibGUgdG8gUGFyYW1HZW5lcmF0
b3IncyBwYXJhbWV0ZXIgdHlwZS4KLVRFU1QoVmFsdWVzVGVzdCwgVmFsdWVzV29ya3NGb3JWYWx1
ZXNPZkNvbXBhdGlibGVUeXBlcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjxkb3VibGU+IGdl
biA9IFZhbHVlcygzLCA1LjBmLCA4LjApOwotCi0gIGNvbnN0IGRvdWJsZSBleHBlY3RlZF92YWx1
ZXNbXSA9IHszLjAsIDUuMCwgOC4wfTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRf
dmFsdWVzKTsKLX0KLQotVEVTVChWYWx1ZXNUZXN0LCBWYWx1ZXNXb3Jrc0Zvck1heExlbmd0aExp
c3QpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoCi0gICAgICAx
MCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwLCAxMDAsCi0gICAgICAxMTAsIDEyMCwg
MTMwLCAxNDAsIDE1MCwgMTYwLCAxNzAsIDE4MCwgMTkwLCAyMDAsCi0gICAgICAyMTAsIDIyMCwg
MjMwLCAyNDAsIDI1MCwgMjYwLCAyNzAsIDI4MCwgMjkwLCAzMDAsCi0gICAgICAzMTAsIDMyMCwg
MzMwLCAzNDAsIDM1MCwgMzYwLCAzNzAsIDM4MCwgMzkwLCA0MDAsCi0gICAgICA0MTAsIDQyMCwg
NDMwLCA0NDAsIDQ1MCwgNDYwLCA0NzAsIDQ4MCwgNDkwLCA1MDApOwotCi0gIGNvbnN0IGludCBl
eHBlY3RlZF92YWx1ZXNbXSA9IHsKLSAgICAgIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAsIDcwLCA4
MCwgOTAsIDEwMCwKLSAgICAgIDExMCwgMTIwLCAxMzAsIDE0MCwgMTUwLCAxNjAsIDE3MCwgMTgw
LCAxOTAsIDIwMCwKLSAgICAgIDIxMCwgMjIwLCAyMzAsIDI0MCwgMjUwLCAyNjAsIDI3MCwgMjgw
LCAyOTAsIDMwMCwKLSAgICAgIDMxMCwgMzIwLCAzMzAsIDM0MCwgMzUwLCAzNjAsIDM3MCwgMzgw
LCAzOTAsIDQwMCwKLSAgICAgIDQxMCwgNDIwLCA0MzAsIDQ0MCwgNDUwLCA0NjAsIDQ3MCwgNDgw
LCA0OTAsIDUwMH07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIEVkZ2UgY2FzZSB0ZXN0LiBUZXN0cyB0aGF0IHNpbmdsZS1wYXJhbWV0ZXIgVmFsdWVz
KCkgZ2VuZXJhdGVzIHRoZSBzZXF1ZW5jZQotLy8gd2l0aCB0aGUgc2luZ2xlIHZhbHVlLgotVEVT
VChWYWx1ZXNUZXN0LCBWYWx1ZXNXaXRoU2luZ2xlUGFyYW1ldGVyKSB7Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPGludD4gZ2VuID0gVmFsdWVzKDQyKTsKLQotICBjb25zdCBpbnQgZXhwZWN0ZWRf
dmFsdWVzW10gPSB7NDJ9OwotICBWZXJpZnlHZW5lcmF0b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEJvb2woKSBnZW5lcmF0ZXMgc2VxdWVuY2UgKGZhbHNlLCB0
cnVlKS4KLVRFU1QoQm9vbFRlc3QsIEJvb2xXb3JrcykgewotICBjb25zdCBQYXJhbUdlbmVyYXRv
cjxib29sPiBnZW4gPSBCb29sKCk7Ci0KLSAgY29uc3QgYm9vbCBleHBlY3RlZF92YWx1ZXNbXSA9
IHtmYWxzZSwgdHJ1ZX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7
Ci19Ci0KLSMgaWYgR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGVzdHMgdGhhdCBDb21iaW5lKCkg
d2l0aCB0d28gcGFyYW1ldGVycyBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHNlcXVlbmNlLgotVEVT
VChDb21iaW5lVGVzdCwgQ29tYmluZVdpdGhUd29QYXJhbWV0ZXJzKSB7Ci0gIGNvbnN0IGNoYXIq
IGZvbyA9ICJmb28iOwotICBjb25zdCBjaGFyKiBiYXIgPSAiYmFyIjsKLSAgY29uc3QgUGFyYW1H
ZW5lcmF0b3I8dHVwbGU8Y29uc3QgY2hhciosIGludD4gPiBnZW4gPQotICAgICAgQ29tYmluZShW
YWx1ZXMoZm9vLCBiYXIpLCBWYWx1ZXMoMywgNCkpOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBp
bnQ+IGV4cGVjdGVkX3ZhbHVlc1tdID0gewotICAgIG1ha2VfdHVwbGUoZm9vLCAzKSwgbWFrZV90
dXBsZShmb28sIDQpLAotICAgIG1ha2VfdHVwbGUoYmFyLCAzKSwgbWFrZV90dXBsZShiYXIsIDQp
fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBDb21iaW5lKCkgd2l0aCB0aHJlZSBwYXJhbWV0ZXJzIGdlbmVyYXRlcyB0aGUgZXhw
ZWN0ZWQgc2VxdWVuY2UuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aFRocmVlUGFyYW1l
dGVycykgewotICBjb25zdCBQYXJhbUdlbmVyYXRvcjx0dXBsZTxpbnQsIGludCwgaW50PiA+IGdl
biA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDMsIDQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKDUs
IDYpKTsKLSAgdHVwbGU8aW50LCBpbnQsIGludD4gZXhwZWN0ZWRfdmFsdWVzW10gPSB7Ci0gICAg
bWFrZV90dXBsZSgwLCAzLCA1KSwgbWFrZV90dXBsZSgwLCAzLCA2KSwKLSAgICBtYWtlX3R1cGxl
KDAsIDQsIDUpLCBtYWtlX3R1cGxlKDAsIDQsIDYpLAotICAgIG1ha2VfdHVwbGUoMSwgMywgNSks
IG1ha2VfdHVwbGUoMSwgMywgNiksCi0gICAgbWFrZV90dXBsZSgxLCA0LCA1KSwgbWFrZV90dXBs
ZSgxLCA0LCA2KX07Ci0gIFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBmaXJzdCBwYXJhbWV0ZXIg
Z2VuZXJhdGluZyBhIHNpbmdsZSB2YWx1ZQotLy8gc2VxdWVuY2UgZ2VuZXJhdGVzIGEgc2VxdWVu
Y2Ugd2l0aCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGVxdWFsIHRvIHRoZQotLy8gbnVtYmVyIG9m
IGVsZW1lbnRzIGluIHRoZSBzZXF1ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIHNlY29uZCBwYXJhbWV0
ZXIuCi1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aEZpcnN0UGFyYW1ldGVyU2luZ2xlVmFs
dWUpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29t
YmluZShWYWx1ZXMoNDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygwLCAxKSk7Ci0KLSAgdHVwbGU8aW50LCBpbnQ+IGV4cGVj
dGVkX3ZhbHVlc1tdID0ge21ha2VfdHVwbGUoNDIsIDApLCBtYWtlX3R1cGxlKDQyLCAxKX07Ci0g
IFZlcmlmeUdlbmVyYXRvcihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgdGhlIENvbWJpbmUoKSB3aXRoIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGdlbmVyYXRpbmcgYSBz
aW5nbGUgdmFsdWUKLS8vIHNlcXVlbmNlIGdlbmVyYXRlcyBhIHNlcXVlbmNlIHdpdGggdGhlIG51
bWJlciBvZiBlbGVtZW50cyBlcXVhbCB0byB0aGUKLS8vIG51bWJlciBvZiBlbGVtZW50cyBpbiB0
aGUgc2VxdWVuY2UgZ2VuZXJhdGVkIGJ5IHRoZSBmaXJzdCBwYXJhbWV0ZXIuCi1URVNUKENvbWJp
bmVUZXN0LCBDb21iaW5lV2l0aFNlY29uZFBhcmFtZXRlclNpbmdsZVZhbHVlKSB7Ci0gIGNvbnN0
IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAs
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyg0MikpOwotCi0gIHR1cGxlPGludCwgaW50PiBleHBlY3RlZF92YWx1ZXNbXSA9
IHttYWtlX3R1cGxlKDAsIDQyKSwgbWFrZV90dXBsZSgxLCA0Mil9OwotICBWZXJpZnlHZW5lcmF0
b3IoZ2VuLCBleHBlY3RlZF92YWx1ZXMpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdoZW4gdGhlIGZp
cnN0IHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwKLS8vIENvbWJpbmUoKSBw
cm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgotVEVTVChDb21iaW5lVGVzdCwgQ29tYmlu
ZVdpdGhGaXJzdFBhcmFtZXRlckVtcHR5UmFuZ2UpIHsKLSAgY29uc3QgUGFyYW1HZW5lcmF0b3I8
dHVwbGU8aW50LCBpbnQ+ID4gZ2VuID0gQ29tYmluZShSYW5nZSgwLCAwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMCwgMSkp
OwotICBWZXJpZnlHZW5lcmF0b3JJc0VtcHR5KGdlbik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgd2hl
biB0aGUgc2Vjb25kIHBhcmFtZXRlciBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwKLS8vIENv
bWJpbmUoKSBwcm9kdWNlcyBhbiBlbXB0eSBzZXF1ZW5jZSwgdG9vLgotVEVTVChDb21iaW5lVGVz
dCwgQ29tYmluZVdpdGhTZWNvbmRQYXJhbWV0ZXJFbXB0eVJhbmdlKSB7Ci0gIGNvbnN0IFBhcmFt
R2VuZXJhdG9yPHR1cGxlPGludCwgaW50PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKDAsIDEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJh
bmdlKDEsIDEpKTsKLSAgVmVyaWZ5R2VuZXJhdG9ySXNFbXB0eShnZW4pOwotfQotCi0vLyBFZGdl
IGNhc2UuIFRlc3RzIHRoYXQgY29tYmluZSB3b3JrcyB3aXRoIHRoZSBtYXhpbXVtIG51bWJlcgot
Ly8gb2YgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkgR29vZ2xlIFRlc3QgKGN1cnJlbnRseSAxMCku
Ci1URVNUKENvbWJpbmVUZXN0LCBDb21iaW5lV2l0aE1heE51bWJlck9mUGFyYW1ldGVycykgewot
ICBjb25zdCBjaGFyKiBmb28gPSAiZm9vIjsKLSAgY29uc3QgY2hhciogYmFyID0gImJhciI7Ci0g
IGNvbnN0IFBhcmFtR2VuZXJhdG9yPHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50
PiA+IGdlbiA9IENvbWJpbmUoVmFsdWVzKGZvbywgYmFyKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoMSksIFZhbHVlcygyKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWx1ZXMoMyksIFZhbHVlcyg0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNSksIFZhbHVlcyg2KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoNyksIFZhbHVl
cyg4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoOSkpOwotCi0gIHR1cGxlPGNvbnN0IGNoYXIqLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50PgotICAgICAgZXhwZWN0ZWRfdmFsdWVzW10gPSB7
bWFrZV90dXBsZShmb28sIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFrZV90dXBsZShiYXIsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkp
fTsKLSAgVmVyaWZ5R2VuZXJhdG9yKGdlbiwgZXhwZWN0ZWRfdmFsdWVzKTsKLX0KLQotIyBlbmRp
ZiAgLy8gR1RFU1RfSEFTX0NPTUJJTkUKLQotLy8gVGVzdHMgdGhhdCBhbiBnZW5lcmF0b3IgcHJv
ZHVjZXMgY29ycmVjdCBzZXF1ZW5jZSBhZnRlciBiZWluZwotLy8gYXNzaWduZWQgZnJvbSBhbm90
aGVyIGdlbmVyYXRvci4KLVRFU1QoUGFyYW1HZW5lcmF0b3JUZXN0LCBBc3NpZ25tZW50V29ya3Mp
IHsKLSAgUGFyYW1HZW5lcmF0b3I8aW50PiBnZW4gPSBWYWx1ZXMoMSwgMik7Ci0gIGNvbnN0IFBh
cmFtR2VuZXJhdG9yPGludD4gZ2VuMiA9IFZhbHVlcygzLCA0KTsKLSAgZ2VuID0gZ2VuMjsKLQot
ICBjb25zdCBpbnQgZXhwZWN0ZWRfdmFsdWVzW10gPSB7MywgNH07Ci0gIFZlcmlmeUdlbmVyYXRv
cihnZW4sIGV4cGVjdGVkX3ZhbHVlcyk7Ci19Ci0KLS8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IHRoZSB0ZXN0cyBhcmUgZXhwYW5kZWQgYW5kIHJ1biBhcyBzcGVjaWZpZWQ6Ci0vLyBvbmUgdGVz
dCBwZXIgZWxlbWVudCBmcm9tIHRoZSBzZXF1ZW5jZSBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9y
Ci0vLyBzcGVjaWZpZWQgaW4gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AuIEl0IGFsc28gdmVyaWZp
ZXMgdGhhdCB0aGUgdGVzdCdzCi0vLyBmaXh0dXJlIGNvbnN0cnVjdG9yLCBTZXRVcCgpLCBhbmQg
VGVhckRvd24oKSBoYXZlIHJ1biBhbmQgaGF2ZSBiZWVuCi0vLyBzdXBwbGllZCB3aXRoIHRoZSBj
b3JyZWN0IHBhcmFtZXRlcnMuCi0KLS8vIFRoZSB1c2Ugb2YgZW52aXJvbm1lbnQgb2JqZWN0IGFs
bG93cyBkZXRlY3Rpb24gb2YgdGhlIGNhc2Ugd2hlcmUgbm8gdGVzdAotLy8gY2FzZSBmdW5jdGlv
bmFsaXR5IGlzIHJ1biBhdCBhbGwuIEluIHRoaXMgY2FzZSBUZXN0Q2FzZVRlYXJEb3duIHdpbGwg
bm90Ci0vLyBiZSBhYmxlIHRvIGRldGVjdCBtaXNzaW5nIHRlc3RzLCBuYXR1cmFsbHkuCi10ZW1w
bGF0ZSA8aW50IGtFeHBlY3RlZENhbGxzPgotY2xhc3MgVGVzdEdlbmVyYXRpb25FbnZpcm9ubWVu
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBU
ZXN0R2VuZXJhdGlvbkVudmlyb25tZW50KiBJbnN0YW5jZSgpIHsKLSAgICBzdGF0aWMgVGVzdEdl
bmVyYXRpb25FbnZpcm9ubWVudCogaW5zdGFuY2UgPSBuZXcgVGVzdEdlbmVyYXRpb25FbnZpcm9u
bWVudDsKLSAgICByZXR1cm4gaW5zdGFuY2U7Ci0gIH0KLQotICB2b2lkIEZpeHR1cmVDb25zdHJ1
Y3RvckV4ZWN1dGVkKCkgeyBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XysrOyB9Ci0gIHZvaWQg
U2V0VXBFeGVjdXRlZCgpIHsgc2V0X3VwX2NvdW50XysrOyB9Ci0gIHZvaWQgVGVhckRvd25FeGVj
dXRlZCgpIHsgdGVhcl9kb3duX2NvdW50XysrOyB9Ci0gIHZvaWQgVGVzdEJvZHlFeGVjdXRlZCgp
IHsgdGVzdF9ib2R5X2NvdW50XysrOyB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewot
ICAgIC8vIElmIGFsbCBNdWx0aXBsZVRlc3RHZW5lcmF0aW9uVGVzdCB0ZXN0cyBoYXZlIGJlZW4g
ZGUtc2VsZWN0ZWQKLSAgICAvLyBieSB0aGUgZmlsdGVyIGZsYWcsIHRoZSBmb2xsb3dpbmcgY2hl
Y2tzIG1ha2Ugbm8gc2Vuc2UuCi0gICAgYm9vbCBwZXJmb3JtX2NoZWNrID0gZmFsc2U7Ci0KLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGtFeHBlY3RlZENhbGxzOyArK2kpIHsKLSAgICAgIE1lc3Nh
Z2UgbXNnOwotICAgICAgbXNnIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIgPDwgaTsKLSAgICAg
IGlmIChVbml0VGVzdE9wdGlvbnM6OkZpbHRlck1hdGNoZXNUZXN0KAotICAgICAgICAgICAgICJU
ZXN0RXhwYW5zaW9uTW9kdWxlL011bHRpcGxlVGVzdEdlbmVyYXRpb25UZXN0IiwKLSAgICAgICAg
ICAgICAgbXNnLkdldFN0cmluZygpLmNfc3RyKCkpKSB7Ci0gICAgICAgIHBlcmZvcm1fY2hlY2sg
PSB0cnVlOwotICAgICAgfQotICAgIH0KLSAgICBpZiAocGVyZm9ybV9jaGVjaykgewotICAgICAg
RVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCBmaXh0dXJlX2NvbnN0cnVjdG9yX2NvdW50XykKLSAg
ICAgICAgICA8PCAiRml4dHVyZSBjb25zdHJ1Y3RvciBvZiBQYXJhbVRlc3RHZW5lcmF0aW9uVGVz
dCB0ZXN0IGNhc2UgIgotICAgICAgICAgIDw8ICJoYXMgbm90IGJlZW4gcnVuIGFzIGV4cGVjdGVk
LiI7Ci0gICAgICBFWFBFQ1RfRVEoa0V4cGVjdGVkQ2FsbHMsIHNldF91cF9jb3VudF8pCi0gICAg
ICAgICAgPDwgIkZpeHR1cmUgU2V0VXAgbWV0aG9kIG9mIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0
IHRlc3QgY2FzZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQu
IjsKLSAgICAgIEVYUEVDVF9FUShrRXhwZWN0ZWRDYWxscywgdGVhcl9kb3duX2NvdW50XykKLSAg
ICAgICAgICA8PCAiRml4dHVyZSBUZWFyRG93biBtZXRob2Qgb2YgUGFyYW1UZXN0R2VuZXJhdGlv
blRlc3QgdGVzdCBjYXNlICIKLSAgICAgICAgICA8PCAiaGFzIG5vdCBiZWVuIHJ1biBhcyBleHBl
Y3RlZC4iOwotICAgICAgRVhQRUNUX0VRKGtFeHBlY3RlZENhbGxzLCB0ZXN0X2JvZHlfY291bnRf
KQotICAgICAgICAgIDw8ICJUZXN0IGluIFBhcmFtVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2Fz
ZSAiCi0gICAgICAgICAgPDwgImhhcyBub3QgYmVlbiBydW4gYXMgZXhwZWN0ZWQuIjsKLSAgICB9
Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1lbnQoKSA6IGZpeHR1
cmVfY29uc3RydWN0b3JfY291bnRfKDApLCBzZXRfdXBfY291bnRfKDApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZWFyX2Rvd25fY291bnRfKDApLCB0ZXN0X2JvZHlfY291bnRf
KDApIHt9Ci0KLSAgaW50IGZpeHR1cmVfY29uc3RydWN0b3JfY291bnRfOwotICBpbnQgc2V0X3Vw
X2NvdW50XzsKLSAgaW50IHRlYXJfZG93bl9jb3VudF87Ci0gIGludCB0ZXN0X2JvZHlfY291bnRf
OwotCi0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdlbmVyYXRpb25FbnZp
cm9ubWVudCk7Ci19OwotCi1jb25zdCBpbnQgdGVzdF9nZW5lcmF0aW9uX3BhcmFtc1tdID0gezM2
LCA0MiwgNzJ9OwotCi1jbGFzcyBUZXN0R2VuZXJhdGlvblRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQ
YXJhbTxpbnQ+IHsKLSBwdWJsaWM6Ci0gIGVudW0gewotICAgIFBBUkFNRVRFUl9DT1VOVCA9Ci0g
ICAgICAgIHNpemVvZih0ZXN0X2dlbmVyYXRpb25fcGFyYW1zKS9zaXplb2YodGVzdF9nZW5lcmF0
aW9uX3BhcmFtc1swXSkKLSAgfTsKLQotICB0eXBlZGVmIFRlc3RHZW5lcmF0aW9uRW52aXJvbm1l
bnQ8UEFSQU1FVEVSX0NPVU5UPiBFbnZpcm9ubWVudDsKLQotICBUZXN0R2VuZXJhdGlvblRlc3Qo
KSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPkZpeHR1cmVDb25zdHJ1Y3RvckV4ZWN1
dGVkKCk7Ci0gICAgY3VycmVudF9wYXJhbWV0ZXJfID0gR2V0UGFyYW0oKTsKLSAgfQotICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3RhbmNlKCktPlNldFVwRXhl
Y3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsK
LSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgRW52aXJvbm1lbnQ6Okluc3Rh
bmNlKCktPlRlYXJEb3duRXhlY3V0ZWQoKTsKLSAgICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0
ZXJfLCBHZXRQYXJhbSgpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7
Ci0gICAgYm9vbCBhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkID0gdHJ1ZTsKLQotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgUEFSQU1FVEVSX0NPVU5UOyArK2kpIHsKLSAgICAgIE1lc3Nh
Z2UgdGVzdF9uYW1lOwotICAgICAgdGVzdF9uYW1lIDw8ICJUZXN0c0V4cGFuZGVkQW5kUnVuLyIg
PDwgaTsKLSAgICAgIGlmICggIVVuaXRUZXN0T3B0aW9uczo6RmlsdGVyTWF0Y2hlc1Rlc3QoCi0g
ICAgICAgICAgICAgICAgIlRlc3RFeHBhbnNpb25Nb2R1bGUvTXVsdGlwbGVUZXN0R2VuZXJhdGlv
blRlc3QiLAotICAgICAgICAgICAgICAgIHRlc3RfbmFtZS5HZXRTdHJpbmcoKSkpIHsKLSAgICAg
ICAgYWxsX3Rlc3RzX2luX3Rlc3RfY2FzZV9zZWxlY3RlZCA9IGZhbHNlOwotICAgICAgfQotICAg
IH0KLSAgICBFWFBFQ1RfVFJVRShhbGxfdGVzdHNfaW5fdGVzdF9jYXNlX3NlbGVjdGVkKQotICAg
ICAgICA8PCAiV2hlbiBydW5uaW5nIHRoZSBUZXN0R2VuZXJhdGlvblRlc3QgdGVzdCBjYXNlIGFs
bCBvZiBpdHMgdGVzdHNcbiIKLSAgICAgICAgPDwgIm11c3QgYmUgc2VsZWN0ZWQgYnkgdGhlIGZp
bHRlciBmbGFnIGZvciB0aGUgdGVzdCBjYXNlIHRvIHBhc3MuXG4iCi0gICAgICAgIDw8ICJJZiBu
b3QgYWxsIG9mIHRoZW0gYXJlIGVuYWJsZWQsIHdlIGNhbid0IHJlbGlhYmx5IGNvbmNsdWRlXG4i
Ci0gICAgICAgIDw8ICJ0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiB0ZXN0cyBoYXZlIGJlZW4g
Z2VuZXJhdGVkLiI7Ci0KLSAgICBjb2xsZWN0ZWRfcGFyYW1ldGVyc18uY2xlYXIoKTsKLSAgfQot
Ci0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgdmVjdG9yPGludD4gZXhw
ZWN0ZWRfdmFsdWVzKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMgKyBQQVJBTUVURVJfQ09VTlQpOwot
ICAgIC8vIFRlc3QgZXhlY3V0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkIGJ5IEdvb2dsZSBU
ZXN0LAotICAgIC8vIHNvIHRoZSBvcmRlciBvZiB2YWx1ZXMgaW4gY29sbGVjdGVkX3BhcmFtZXRl
cnNfIGNhbiBiZQotICAgIC8vIGRpZmZlcmVudCBhbmQgd2UgaGF2ZSB0byBzb3J0IHRvIGNvbXBh
cmUuCi0gICAgc29ydChleHBlY3RlZF92YWx1ZXMuYmVnaW4oKSwgZXhwZWN0ZWRfdmFsdWVzLmVu
ZCgpKTsKLSAgICBzb3J0KGNvbGxlY3RlZF9wYXJhbWV0ZXJzXy5iZWdpbigpLCBjb2xsZWN0ZWRf
cGFyYW1ldGVyc18uZW5kKCkpOwotCi0gICAgRVhQRUNUX1RSVUUoY29sbGVjdGVkX3BhcmFtZXRl
cnNfID09IGV4cGVjdGVkX3ZhbHVlcyk7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgaW50IGN1cnJl
bnRfcGFyYW1ldGVyXzsKLSAgc3RhdGljIHZlY3RvcjxpbnQ+IGNvbGxlY3RlZF9wYXJhbWV0ZXJz
XzsKLQotIHByaXZhdGU6Ci0gIEdURVNUX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oVGVzdEdl
bmVyYXRpb25UZXN0KTsKLX07Ci12ZWN0b3I8aW50PiBUZXN0R2VuZXJhdGlvblRlc3Q6OmNvbGxl
Y3RlZF9wYXJhbWV0ZXJzXzsKLQotVEVTVF9QKFRlc3RHZW5lcmF0aW9uVGVzdCwgVGVzdHNFeHBh
bmRlZEFuZFJ1bikgewotICBFbnZpcm9ubWVudDo6SW5zdGFuY2UoKS0+VGVzdEJvZHlFeGVjdXRl
ZCgpOwotICBFWFBFQ1RfRVEoY3VycmVudF9wYXJhbWV0ZXJfLCBHZXRQYXJhbSgpKTsKLSAgY29s
bGVjdGVkX3BhcmFtZXRlcnNfLnB1c2hfYmFjayhHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRF
X1RFU1RfQ0FTRV9QKFRlc3RFeHBhbnNpb25Nb2R1bGUsIFRlc3RHZW5lcmF0aW9uVGVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbHVlc0luKHRlc3RfZ2VuZXJhdGlvbl9wYXJhbXMpKTsK
LQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIGVsZW1lbnQgc2VxdWVuY2UgKHRoaXJk
IHBhcmFtZXRlciBvZgotLy8gSU5TVEFOVElBVEVfVEVTVF9DQVNFX1ApIGlzIGV2YWx1YXRlZCBp
biBJbml0R29vZ2xlVGVzdCgpIGFuZCBuZWl0aGVyIGF0Ci0vLyB0aGUgY2FsbCBzaXRlIG9mIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QIG5vciBpbiBSVU5fQUxMX1RFU1RTKCkuICBGb3IKLS8vIHRo
YXQsIHdlIGRlY2xhcmUgcGFyYW1fdmFsdWVfIHRvIGJlIGEgc3RhdGljIG1lbWJlciBvZgotLy8g
R2VuZXJhdG9yRXZhbHVhdGlvblRlc3QgYW5kIGluaXRpYWxpemUgaXQgdG8gMC4gIFdlIHNldCBp
dCB0byAxIGluCi0vLyBtYWluKCksIGp1c3QgYmVmb3JlIGludm9jYXRpb24gb2YgSW5pdEdvb2ds
ZVRlc3QoKS4gIEFmdGVyIGNhbGxpbmcKLS8vIEluaXRHb29nbGVUZXN0KCksIHdlIHNldCB0aGUg
dmFsdWUgdG8gMi4gIElmIHRoZSBzZXF1ZW5jZSBpcyBldmFsdWF0ZWQKLS8vIGJlZm9yZSBvciBh
ZnRlciBJbml0R29vZ2xlVGVzdCwgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Agd2lsbCBjcmVhdGUg
YQotLy8gdGVzdCB3aXRoIHBhcmFtZXRlciBvdGhlciB0aGFuIDEsIGFuZCB0aGUgdGVzdCBib2R5
IHdpbGwgZmFpbCB0aGUKLS8vIGFzc2VydGlvbi4KLWNsYXNzIEdlbmVyYXRvckV2YWx1YXRpb25U
ZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci0gcHVibGljOgotICBzdGF0aWMgaW50
IHBhcmFtX3ZhbHVlKCkgeyByZXR1cm4gcGFyYW1fdmFsdWVfOyB9Ci0gIHN0YXRpYyB2b2lkIHNl
dF9wYXJhbV92YWx1ZShpbnQgcGFyYW1fdmFsdWUpIHsgcGFyYW1fdmFsdWVfID0gcGFyYW1fdmFs
dWU7IH0KLQotIHByaXZhdGU6Ci0gIHN0YXRpYyBpbnQgcGFyYW1fdmFsdWVfOwotfTsKLWludCBH
ZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6cGFyYW1fdmFsdWVfID0gMDsKLQotVEVTVF9QKEdlbmVy
YXRvckV2YWx1YXRpb25UZXN0LCBHZW5lcmF0b3JzRXZhbHVhdGVkSW5NYWluKSB7Ci0gIEVYUEVD
VF9FUSgxLCBHZXRQYXJhbSgpKTsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEdlbkV2YWxN
b2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6
cGFyYW1fdmFsdWUoKSkpOwotCi0vLyBUZXN0cyB0aGF0IGdlbmVyYXRvcnMgZGVmaW5lZCBpbiBh
IGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0IGFyZQotLy8gZnVuY3Rpb25hbC4gR2VuZXJhdG9y
IGV4dGVybl9nZW4gaXMgZGVmaW5lZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3QyLmNjLgotZXh0
ZXJuIFBhcmFtR2VuZXJhdG9yPGludD4gZXh0ZXJuX2dlbjsKLWNsYXNzIEV4dGVybmFsR2VuZXJh
dG9yVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307Ci1URVNUX1AoRXh0ZXJuYWxH
ZW5lcmF0b3JUZXN0LCBFeHRlcm5hbEdlbmVyYXRvcikgewotICAvLyBTZXF1ZW5jZSBwcm9kdWNl
ZCBieSBleHRlcm5fZ2VuIGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgdmFsdWUKLSAgLy8gd2hpY2gg
d2UgdmVyaWZ5IGhlcmUuCi0gIEVYUEVDVF9FUShHZXRQYXJhbSgpLCAzMyk7Ci19Ci1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChFeHRlcm5hbEdlbmVyYXRvck1vZHVsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEV4dGVybmFsR2VuZXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGV4dGVybl9nZW4pOwotCi0vLyBUZXN0cyB0aGF0IGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2Ug
Y2FuIGJlIGRlZmluZWQgaW4gb25lIHRyYW5zbGF0aW9uCi0vLyB1bml0IGFuZCBpbnN0YW50aWF0
ZWQgaW4gYW5vdGhlci4gVGhpcyB0ZXN0IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluCi0vLyBndGVz
dC1wYXJhbS10ZXN0X3Rlc3QyLmNjLiBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IGZpeHR1cmUg
Y2xhc3MgaXMKLS8vIGRlZmluZWQgaW4gZ3Rlc3QtcGFyYW0tdGVzdF90ZXN0LmguCi1URVNUX1Ao
RXh0ZXJuYWxJbnN0YW50aWF0aW9uVGVzdCwgSXNNdWx0aXBsZU9mMzMpIHsKLSAgRVhQRUNUX0VR
KDAsIEdldFBhcmFtKCkgJSAzMyk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVk
IHRlc3QgY2FzZSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGggbXVsdGlwbGUKLS8vIGdlbmVyYXRv
cnMuCi1jbGFzcyBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08aW50PiB7fTsKLVRFU1RfUChNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBBbGxvd3NNdWx0
aXBsZUluc3RhbmNlcykgewotfQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2VxdWVuY2UxLCBN
dWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBWYWx1ZXMoMSwgMikpOwotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoU2VxdWVuY2UyLCBNdWx0aXBsZUluc3RhbnRpYXRpb25UZXN0LCBSYW5nZSgzLCA1
KSk7Ci0KLS8vIFRlc3RzIHRoYXQgYSBwYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUgaW5z
dGFudGlhdGVkCi0vLyBpbiBtdWx0aXBsZSB0cmFuc2xhdGlvbiB1bml0cy4gVGhpcyB0ZXN0IHdp
bGwgYmUgaW5zdGFudGlhdGVkCi0vLyBoZXJlIGFuZCBpbiBndGVzdC1wYXJhbS10ZXN0X3Rlc3Qy
LmNjLgotLy8gSW5zdGFudGlhdGlvbkluTXVsdGlwbGVUcmFuc2xhdGlvblVuaXRzVGVzdCBmaXh0
dXJlIGNsYXNzCi0vLyBpcyBkZWZpbmVkIGluIGd0ZXN0LXBhcmFtLXRlc3RfdGVzdC5oLgotVEVT
VF9QKEluc3RhbnRpYXRpb25Jbk11bHRpcGxlVHJhbnNsYWlvblVuaXRzVGVzdCwgSXNNdWx0aXBs
ZU9mNDIpIHsKLSAgRVhQRUNUX0VRKDAsIEdldFBhcmFtKCkgJSA0Mik7Ci19Ci1JTlNUQU5USUFU
RV9URVNUX0NBU0VfUChTZXF1ZW5jZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnN0YW50
aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFpb25Vbml0c1Rlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoNDIsIDQyKjIpKTsKLQotLy8gVGVzdHMgdGhhdCBlYWNoIGl0ZXJhdGlvbiBv
ZiBwYXJhbWV0ZXJpemVkIHRlc3QgcnVucyBpbiBhIHNlcGFyYXRlIHRlc3QKLS8vIG9iamVjdC4K
LWNsYXNzIFNlcGFyYXRlSW5zdGFuY2VUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7
Ci0gcHVibGljOgotICBTZXBhcmF0ZUluc3RhbmNlVGVzdCgpIDogY291bnRfKDApIHt9Ci0KLSAg
c3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBFWFBFQ1RfR0UoZ2xvYmFsX2Nv
dW50XywgMikKLSAgICAgICAgPDwgIklmIHNvbWUgKGJ1dCBub3QgYWxsKSBTZXBhcmF0ZUluc3Rh
bmNlVGVzdCB0ZXN0cyBoYXZlIGJlZW4gIgotICAgICAgICA8PCAiZmlsdGVyZWQgb3V0IHRoaXMg
dGVzdCB3aWxsIGZhaWwuIE1ha2Ugc3VyZSB0aGF0IGFsbCAiCi0gICAgICAgIDw8ICJHZW5lcmF0
b3JFdmFsdWF0aW9uVGVzdCBhcmUgc2VsZWN0ZWQgb3IgZGUtc2VsZWN0ZWQgdG9nZXRoZXIgIgot
ICAgICAgICA8PCAiYnkgdGhlIHRlc3QgZmlsdGVyLiI7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAg
aW50IGNvdW50XzsKLSAgc3RhdGljIGludCBnbG9iYWxfY291bnRfOwotfTsKLWludCBTZXBhcmF0
ZUluc3RhbmNlVGVzdDo6Z2xvYmFsX2NvdW50XyA9IDA7Ci0KLVRFU1RfUChTZXBhcmF0ZUluc3Rh
bmNlVGVzdCwgVGVzdHNSdW5JblNlcGFyYXRlSW5zdGFuY2VzKSB7Ci0gIEVYUEVDVF9FUSgwLCBj
b3VudF8rKyk7Ci0gIGdsb2JhbF9jb3VudF8rKzsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEZvdXJFbGVtU2VxdWVuY2UsIFNlcGFyYXRlSW5zdGFuY2VUZXN0LCBSYW5nZSgxLCA0KSk7Ci0K
LS8vIFRlc3RzIHRoYXQgYWxsIGluc3RhbnRpYXRpb25zIG9mIGEgdGVzdCBoYXZlIG5hbWVkIGFw
cHJvcHJpYXRlbHkuIFRlc3QKLS8vIGRlZmluZWQgd2l0aCBURVNUX1AoVGVzdENhc2VOYW1lLCBU
ZXN0TmFtZSkgYW5kIGluc3RhbnRpYXRlZCB3aXRoCi0vLyBJTlNUQU5USUFURV9URVNUX0NBU0Vf
UChTZXF1ZW5jZU5hbWUsIFRlc3RDYXNlTmFtZSwgZ2VuZXJhdG9yKSBtdXN0IGJlIG5hbWVkCi0v
LyBTZXF1ZW5jZU5hbWUvVGVzdENhc2VOYW1lLlRlc3ROYW1lL2ksIHdoZXJlIGkgaXMgdGhlIDAt
YmFzZWQgaW5kZXggb2YgdGhlCi0vLyBzZXF1ZW5jZSBlbGVtZW50IHVzZWQgdG8gaW5zdGFudGlh
dGUgdGhlIHRlc3QuCi1jbGFzcyBOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50
PiB7fTsKLQotVEVTVF9QKE5hbWluZ1Rlc3QsIFRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzQW5kUGFy
YW1ldGVycykgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8g
PQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOwotCi0gIEVYUEVDVF9TVFJFUSgiWmVyb1RvRml2ZVNlcXVlbmNlL05hbWluZ1Rlc3Qi
LCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotCi0gIE1lc3NhZ2UgaW5kZXhfc3RyZWFt
OwotICBpbmRleF9zdHJlYW0gPDwgIlRlc3RzUmVwb3J0Q29ycmVjdE5hbWVzQW5kUGFyYW1ldGVy
cy8iIDw8IEdldFBhcmFtKCk7Ci0gIEVYUEVDVF9TVFJFUShpbmRleF9zdHJlYW0uR2V0U3RyaW5n
KCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwotCi0gIEVYUEVDVF9FUSg6OnRlc3Rpbmc6
OlByaW50VG9TdHJpbmcoR2V0UGFyYW0oKSksIHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSk7Ci19
Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFplcm9Ub0ZpdmVTZXF1ZW5jZSwgTmFtaW5nVGVz
dCwgUmFuZ2UoMCwgNSkpOwotCi0vLyBUZXN0cyB0aGF0IHVzZXIgc3VwcGxpZWQgY3VzdG9tIHBh
cmFtZXRlciBuYW1lcyBhcmUgd29ya2luZyBjb3JyZWN0bHkuCi0vLyBSdW5zIHRoZSB0ZXN0IHdp
dGggYSBidWlsdGluIGhlbHBlciBtZXRob2Qgd2hpY2ggdXNlcyBQcmludFRvU3RyaW5nLAotLy8g
YXMgd2VsbCBhcyBhIGN1c3RvbSBmdW5jdGlvbiBhbmQgY3VzdG9tIGZ1bmN0b3IgdG8gZW5zdXJl
IGFsbCBwb3NzaWJsZQotLy8gdXNlcyB3b3JrIGNvcnJlY3RseS4KLWNsYXNzIEN1c3RvbUZ1bmN0
b3JOYW1pbmdUZXN0IDogcHVibGljIFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OwotVEVT
VF9QKEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LCBDdXN0b21UZXN0TmFtZXMpIHt9Ci0KLXN0cnVj
dCBDdXN0b21QYXJhbU5hbWVGdW5jdG9yIHsKLSAgc3RkOjpzdHJpbmcgb3BlcmF0b3IoKShjb25z
dCA6OnRlc3Rpbmc6OlRlc3RQYXJhbUluZm88c3RkOjpzdHJpbmc+JiBpbmZvKSB7Ci0gICAgcmV0
dXJuIGluZm8ucGFyYW07Ci0gIH0KLX07Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEN1c3Rv
bVBhcmFtTmFtZUZ1bmN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GdW5jdG9y
TmFtaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygi
RnVuY3Rvck5hbWUiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVG
dW5jdG9yKCkpOwotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGxBbGxvd2VkQ2hhcmFjdGVy
cywKLSAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1bmN0b3JOYW1pbmdUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX
WFlaIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDEyMzQ1Njc4OTBfIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21QYXJhbU5hbWVGdW5jdG9yKCkpOwotCi1pbmxp
bmUgc3RkOjpzdHJpbmcgQ3VzdG9tUGFyYW1OYW1lRnVuY3Rpb24oCi0gICAgY29uc3QgOjp0ZXN0
aW5nOjpUZXN0UGFyYW1JbmZvPHN0ZDo6c3RyaW5nPiYgaW5mbykgewotICByZXR1cm4gaW5mby5w
YXJhbTsKLX0KLQotY2xhc3MgQ3VzdG9tRnVuY3Rpb25OYW1pbmdUZXN0IDogcHVibGljIFRlc3RX
aXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OwotVEVTVF9QKEN1c3RvbUZ1bmN0aW9uTmFtaW5nVGVz
dCwgQ3VzdG9tVGVzdE5hbWVzKSB7fQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChDdXN0b21Q
YXJhbU5hbWVGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZ1bmN0aW9u
TmFtaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygi
RnVuY3Rpb25OYW1lIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tUGFyYW1OYW1l
RnVuY3Rpb24pOwotCi0jaWYgR1RFU1RfTEFOR19DWFgxMQotCi0vLyBUZXN0IGN1c3RvbSBuYW1p
bmcgd2l0aCBhIGxhbWJkYQotCi1jbGFzcyBDdXN0b21MYW1iZGFOYW1pbmdUZXN0IDogcHVibGlj
IFRlc3RXaXRoUGFyYW08c3RkOjpzdHJpbmc+IHt9OwotVEVTVF9QKEN1c3RvbUxhbWJkYU5hbWlu
Z1Rlc3QsIEN1c3RvbVRlc3ROYW1lcykge30KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQ3Vz
dG9tUGFyYW1OYW1lTGFtYmRhLAotICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tTGFtYmRh
TmFtaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhzdGQ6OnN0cmluZygi
TGFtYmRhTmFtZSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IDo6dGVzdGlu
Zzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGluZm8ucGFyYW07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KTsK
LQotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0KLVRFU1QoQ3VzdG9tTmFtaW5nVGVzdCwg
Q2hlY2tOYW1lUmVnaXN0cnkpIHsKLSAgOjp0ZXN0aW5nOjpVbml0VGVzdCogdW5pdF90ZXN0ID0g
Ojp0ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKLSAgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+IHRlc3RfbmFtZXM7Ci0gIGZvciAoaW50IGNhc2VfbnVtID0gMDsKLSAgICAgICBjYXNlX251
bSA8IHVuaXRfdGVzdC0+dG90YWxfdGVzdF9jYXNlX2NvdW50KCk7Ci0gICAgICAgKytjYXNlX251
bSkgewotICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdENhc2UqIHRlc3RfY2FzZSA9IHVuaXRfdGVz
dC0+R2V0VGVzdENhc2UoY2FzZV9udW0pOwotICAgIGZvciAoaW50IHRlc3RfbnVtID0gMDsKLSAg
ICAgICAgIHRlc3RfbnVtIDwgdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCk7Ci0gICAgICAg
ICArK3Rlc3RfbnVtKSB7Ci0gICAgICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiB0ZXN0X2lu
Zm8gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKHRlc3RfbnVtKTsKLSAgICAgIHRlc3RfbmFtZXMu
aW5zZXJ0KHN0ZDo6c3RyaW5nKHRlc3RfaW5mby0+bmFtZSgpKSk7Ci0gICAgfQotICB9Ci0gIEVY
UEVDVF9FUSgxdSwgdGVzdF9uYW1lcy5jb3VudCgiQ3VzdG9tVGVzdE5hbWVzL0Z1bmN0b3JOYW1l
IikpOwotICBFWFBFQ1RfRVEoMXUsIHRlc3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9G
dW5jdGlvbk5hbWUiKSk7Ci0jaWYgR1RFU1RfTEFOR19DWFgxMQotICBFWFBFQ1RfRVEoMXUsIHRl
c3RfbmFtZXMuY291bnQoIkN1c3RvbVRlc3ROYW1lcy9MYW1iZGFOYW1lIikpOwotI2VuZGlmICAv
LyBHVEVTVF9MQU5HX0NYWDExCi19Ci0KLS8vIFRlc3QgYSBudW1lcmljIG5hbWUgdG8gZW5zdXJl
IFByaW50VG9TdHJpbmdQYXJhbU5hbWUgd29ya3MgY29ycmVjdGx5LgotCi1jbGFzcyBDdXN0b21J
bnRlZ2VyTmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLVRFU1Rf
UChDdXN0b21JbnRlZ2VyTmFtaW5nVGVzdCwgVGVzdHNSZXBvcnRDb3JyZWN0TmFtZXMpIHsKLSAg
Y29uc3QgOjp0ZXN0aW5nOjpUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0KLSAgICAgOjp0ZXN0
aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgTWVz
c2FnZSB0ZXN0X25hbWVfc3RyZWFtOwotICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9y
dENvcnJlY3ROYW1lcy8iIDw8IEdldFBhcmFtKCk7Ci0gIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVf
c3RyZWFtLkdldFN0cmluZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRUb1N0cmluZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEN1c3RvbUludGVnZXJOYW1pbmdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgUmFu
Z2UoMCwgNSksCi0gICAgICAgICAgICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJp
bmdQYXJhbU5hbWUoKSk7Ci0KLS8vIFRlc3QgYSBjdXN0b20gc3RydWN0IHdpdGggUHJpbnRUb1N0
cmluZy4KLQotc3RydWN0IEN1c3RvbVN0cnVjdCB7Ci0gIGV4cGxpY2l0IEN1c3RvbVN0cnVjdChp
bnQgdmFsdWUpIDogeCh2YWx1ZSkge30KLSAgaW50IHg7Ci19OwotCi1zdGQ6Om9zdHJlYW0mIG9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIGNvbnN0IEN1c3RvbVN0cnVjdCYgdmFsKSB7
Ci0gIHN0cmVhbSA8PCB2YWwueDsKLSAgcmV0dXJuIHN0cmVhbTsKLX0KLQotY2xhc3MgQ3VzdG9t
U3RydWN0TmFtaW5nVGVzdCA6IHB1YmxpYyBUZXN0V2l0aFBhcmFtPEN1c3RvbVN0cnVjdD4ge307
Ci0KLVRFU1RfUChDdXN0b21TdHJ1Y3ROYW1pbmdUZXN0LCBUZXN0c1JlcG9ydENvcnJlY3ROYW1l
cykgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZvKiBjb25zdCB0ZXN0X2luZm8gPQotICAg
ICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygp
OwotICBNZXNzYWdlIHRlc3RfbmFtZV9zdHJlYW07Ci0gIHRlc3RfbmFtZV9zdHJlYW0gPDwgIlRl
c3RzUmVwb3J0Q29ycmVjdE5hbWVzLyIgPDwgR2V0UGFyYW0oKTsKLSAgRVhQRUNUX1NUUkVRKHRl
c3RfbmFtZV9zdHJlYW0uR2V0U3RyaW5nKCkuY19zdHIoKSwgdGVzdF9pbmZvLT5uYW1lKCkpOwot
fQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmludFRvU3RyaW5nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tU3RydWN0TmFtaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlcyhDdXN0b21TdHJ1Y3QoMCksIEN1c3RvbVN0cnVjdCgxKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICA6OnRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSk7Ci0KLS8v
IFRlc3QgdGhhdCB1c2luZyBhIHN0YXRlZnVsIHBhcmFtZXRlciBuYW1pbmcgZnVuY3Rpb24gd29y
a3MgYXMgZXhwZWN0ZWQuCi0KLXN0cnVjdCBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IgewotICBTdGF0
ZWZ1bE5hbWluZ0Z1bmN0b3IoKSA6IHN1bSgwKSB7fQotICBzdGQ6OnN0cmluZyBvcGVyYXRvcigp
KGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxpbnQ+JiBpbmZvKSB7Ci0gICAgaW50IHZh
bHVlID0gaW5mby5wYXJhbSArIHN1bTsKLSAgICBzdW0gKz0gaW5mby5wYXJhbTsKLSAgICByZXR1
cm4gOjp0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHZhbHVlKTsKLSAgfQotICBpbnQgc3VtOwotfTsK
LQotY2xhc3MgU3RhdGVmdWxOYW1pbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxpbnQ+IHsKLSBwcm90ZWN0ZWQ6Ci0gIFN0YXRlZnVsTmFtaW5nVGVzdCgpIDogc3VtXygw
KSB7fQotICBpbnQgc3VtXzsKLX07Ci0KLVRFU1RfUChTdGF0ZWZ1bE5hbWluZ1Rlc3QsIFRlc3Rz
UmVwb3J0Q29ycmVjdE5hbWVzKSB7Ci0gIGNvbnN0IDo6dGVzdGluZzo6VGVzdEluZm8qIGNvbnN0
IHRlc3RfaW5mbyA9Ci0gICAgIDo6dGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1
cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIHN1bV8gKz0gR2V0UGFyYW0oKTsKLSAgTWVzc2FnZSB0ZXN0
X25hbWVfc3RyZWFtOwotICB0ZXN0X25hbWVfc3RyZWFtIDw8ICJUZXN0c1JlcG9ydENvcnJlY3RO
YW1lcy8iIDw8IHN1bV87Ci0gIEVYUEVDVF9TVFJFUSh0ZXN0X25hbWVfc3RyZWFtLkdldFN0cmlu
ZygpLmNfc3RyKCksIHRlc3RfaW5mby0+bmFtZSgpKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9D
QVNFX1AoU3RhdGVmdWxOYW1pbmdGdW5jdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgU3Rh
dGVmdWxOYW1pbmdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UoMCwgNSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZWZ1bE5hbWluZ0Z1bmN0b3IoKSk7Ci0KLS8vIENs
YXNzIHRoYXQgY2Fubm90IGJlIHN0cmVhbWVkIGludG8gYW4gb3N0cmVhbS4gIEl0IG5lZWRzIHRv
IGJlIGNvcHlhYmxlCi0vLyAoYW5kLCBpbiBjYXNlIG9mIE1TVkMsIGFsc28gYXNzaWduYWJsZSkg
aW4gb3JkZXIgdG8gYmUgYSB0ZXN0IHBhcmFtZXRlcgotLy8gdHlwZS4gIEl0cyBkZWZhdWx0IGNv
cHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgZG8gZXhhY3RseQotLy8gd2hh
dCB3ZSBuZWVkLgotY2xhc3MgVW5zdHJlYW1hYmxlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IFVu
c3RyZWFtYWJsZShpbnQgdmFsdWUpIDogdmFsdWVfKHZhbHVlKSB7fQotCi0gcHJpdmF0ZToKLSAg
aW50IHZhbHVlXzsKLX07Ci0KLWNsYXNzIENvbW1lbnRUZXN0IDogcHVibGljIFRlc3RXaXRoUGFy
YW08VW5zdHJlYW1hYmxlPiB7fTsKLQotVEVTVF9QKENvbW1lbnRUZXN0LCBUZXN0c0NvcnJlY3Rs
eVJlcG9ydFVuc3RyZWFtYWJsZVBhcmFtcykgewotICBjb25zdCA6OnRlc3Rpbmc6OlRlc3RJbmZv
KiBjb25zdCB0ZXN0X2luZm8gPQotICAgICA6OnRlc3Rpbmc6OlVuaXRUZXN0OjpHZXRJbnN0YW5j
ZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotCi0gIEVYUEVDVF9FUSg6OnRlc3Rpbmc6OlByaW50
VG9TdHJpbmcoR2V0UGFyYW0oKSksIHRlc3RfaW5mby0+dmFsdWVfcGFyYW0oKSk7Ci19Ci0KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEluc3RhbnRpYXRpb25XaXRoQ29tbWVudHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBDb21tZW50VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFZh
bHVlcyhVbnN0cmVhbWFibGUoMSkpKTsKLQotLy8gVmVyaWZ5IHRoYXQgd2UgY2FuIGNyZWF0ZSBh
IGhpZXJhcmNoeSBvZiB0ZXN0IGZpeHR1cmVzLCB3aGVyZSB0aGUgYmFzZQotLy8gY2xhc3MgZml4
dHVyZSBpcyBub3QgcGFyYW1ldGVyaXplZCBhbmQgdGhlIGRlcml2ZWQgY2xhc3MgaXMuIEluIHRo
aXMgY2FzZQotLy8gUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0IGluaGVyaXRzIGZyb20gTm9uUGFy
YW1ldGVyaXplZEJhc2VUZXN0LiAgV2UKLS8vIHBlcmZvcm0gc2ltcGxlIHRlc3RzIG9uIGJvdGgu
Ci1jbGFzcyBOb25QYXJhbWV0ZXJpemVkQmFzZVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKLSBwdWJsaWM6Ci0gIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCgpIDogbl8oMTcpIHsgfQot
IHByb3RlY3RlZDoKLSAgaW50IG5fOwotfTsKLQotY2xhc3MgUGFyYW1ldGVyaXplZERlcml2ZWRU
ZXN0IDogcHVibGljIE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxpbnQ+
IHsKLSBwcm90ZWN0ZWQ6Ci0gIFBhcmFtZXRlcml6ZWREZXJpdmVkVGVzdCgpIDogY291bnRfKDAp
IHsgfQotICBpbnQgY291bnRfOwotICBzdGF0aWMgaW50IGdsb2JhbF9jb3VudF87Ci19OwotCi1p
bnQgUGFyYW1ldGVyaXplZERlcml2ZWRUZXN0OjpnbG9iYWxfY291bnRfID0gMDsKLQotVEVTVF9G
KE5vblBhcmFtZXRlcml6ZWRCYXNlVGVzdCwgRml4dHVyZUlzSW5pdGlhbGl6ZWQpIHsKLSAgRVhQ
RUNUX0VRKDE3LCBuXyk7Ci19Ci0KLVRFU1RfUChQYXJhbWV0ZXJpemVkRGVyaXZlZFRlc3QsIFNl
ZXNTZXF1ZW5jZSkgewotICBFWFBFQ1RfRVEoMTcsIG5fKTsKLSAgRVhQRUNUX0VRKDAsIGNvdW50
XysrKTsKLSAgRVhQRUNUX0VRKEdldFBhcmFtKCksIGdsb2JhbF9jb3VudF8rKyk7Ci19Ci0KLWNs
YXNzIFBhcmFtZXRlcml6ZWREZWF0aFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBh
cmFtPGludD4geyB9OwotCi1URVNUX0YoUGFyYW1ldGVyaXplZERlYXRoVGVzdCwgR2V0UGFyYW1E
aWVzRnJvbVRlc3RGKSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoR2V0UGFyYW0oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiogdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0
IC4qIik7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFJhbmdlWmVyb1RvRml2ZSwgUGFy
YW1ldGVyaXplZERlcml2ZWRUZXN0LCBSYW5nZSgwLCA1KSk7Ci0KLSNlbmRpZiAgLy8gR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLQotVEVTVChDb21waWxlVGVzdCwgQ29tYmluZUlzRGVmaW5lZE9ubHlX
aGVuR3Rlc3RIYXNQYXJhbVRlc3RJc0RlZmluZWQpIHsKLSNpZiBHVEVTVF9IQVNfQ09NQklORSAm
JiAhR1RFU1RfSEFTX1BBUkFNX1RFU1QKLSAgRkFJTCgpIDw8ICJHVEVTVF9IQVNfQ09NQklORSBp
cyBkZWZpbmVkIHdoaWxlIEdURVNUX0hBU19QQVJBTV9URVNUIGlzIG5vdFxuIgotI2VuZGlmCi19
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX0hBU19QQVJB
TV9URVNUCi0gIC8vIFVzZWQgaW4gVGVzdEdlbmVyYXRpb25UZXN0IHRlc3QgY2FzZS4KLSAgQWRk
R2xvYmFsVGVzdEVudmlyb25tZW50KFRlc3RHZW5lcmF0aW9uVGVzdDo6RW52aXJvbm1lbnQ6Oklu
c3RhbmNlKCkpOwotICAvLyBVc2VkIGluIEdlbmVyYXRvckV2YWx1YXRpb25UZXN0IHRlc3QgY2Fz
ZS4gVGVzdHMgdGhhdCB0aGUgdXBkYXRlZCB2YWx1ZQotICAvLyB3aWxsIGJlIHBpY2tlZCB1cCBm
b3IgaW5zdGFudGlhdGluZyB0ZXN0cyBpbiBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdC4KLSAgR2Vu
ZXJhdG9yRXZhbHVhdGlvblRlc3Q6OnNldF9wYXJhbV92YWx1ZSgxKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1BBUkFNX1RFU1QKLQotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIC8vIFVzZWQgaW4gR2VuZXJhdG9y
RXZhbHVhdGlvblRlc3QgdGVzdCBjYXNlLiBUZXN0cyB0aGF0IHZhbHVlIHVwZGF0ZWQKLSAgLy8g
aGVyZSB3aWxsIE5PVCBiZSB1c2VkIGZvciBpbnN0YW50aWF0aW5nIHRlc3RzIGluCi0gIC8vIEdl
bmVyYXRvckV2YWx1YXRpb25UZXN0LgotICBHZW5lcmF0b3JFdmFsdWF0aW9uVGVzdDo6c2V0X3Bh
cmFtX3ZhbHVlKDIpOwotI2VuZGlmICAvLyBHVEVTVF9IQVNfUEFSQU1fVEVTVAotCi0gIHJldHVy
biBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
LXBhcmFtLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rl
c3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlYTEyMmIxMGI5Li4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wYXJhbS10ZXN0X3Rlc3QuaAorKysg
L2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5j
LgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8g
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3JzOiB2bGFkbEBnb29nbGUuY29tIChWbGFkIExv
c2V2KQotLy8KLS8vIFRoZSBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrIChHb29nbGUgVGVz
dCkKLS8vCi0vLyBUaGlzIGhlYWRlciBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGZ1bmN0aW9u
cyB1c2VkIGludGVybmFsbHkKLS8vIGZvciB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZi4KLQot
I2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwotI2RlZmluZSBHVEVT
VF9URVNUX0dURVNUX1BBUkFNX1RFU1RfVEVTVF9IXwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLS8vIFRlc3QgZml4dHVyZSBmb3IgdGVz
dGluZyBkZWZpbml0aW9uIGFuZCBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdAotLy8gaW4gc2VwYXJh
dGUgdHJhbnNsYXRpb24gdW5pdHMuCi1jbGFzcyBFeHRlcm5hbEluc3RhbnRpYXRpb25UZXN0IDog
cHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKLX07Ci0KLS8vIFRlc3QgZml4
dHVyZSBmb3IgdGVzdGluZyBpbnN0YW50aWF0aW9uIG9mIGEgdGVzdCBpbiBtdWx0aXBsZQotLy8g
dHJhbnNsYXRpb24gdW5pdHMuCi1jbGFzcyBJbnN0YW50aWF0aW9uSW5NdWx0aXBsZVRyYW5zbGFp
b25Vbml0c1Rlc3QKLSAgICA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7
Ci19OwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLSNlbmRpZiAgLy8gR1RF
U1RfVEVTVF9HVEVTVF9QQVJBTV9URVNUX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wb3J0X3Rl
c3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MDY3YTQwZDRhYS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtcG9ydF90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMTMxMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yczogdmxhZGxAZ29vZ2xlLmNvbSAoVmxhZCBMb3Nl
diksIHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGhpcyBmaWxlIHRlc3Rz
IHRoZSBpbnRlcm5hbCBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0IHV0aWxpdGllcy4KLQotI2luY2x1
ZGUgImd0ZXN0L2ludGVybmFsL2d0ZXN0LXBvcnQuaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0K
LSNpZiBHVEVTVF9PU19NQUMKLSMgaW5jbHVkZSA8dGltZS5oPgotI2VuZGlmICAvLyBHVEVTVF9P
U19NQUMKLQotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8dXRpbGl0eT4gIC8vIEZvciBzdGQ6
OnBhaXIgYW5kIHN0ZDo6bWFrZV9wYWlyLgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0KLS8vIEluZGlj
YXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MK
LS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1p
bmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4g
IFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGlu
Y2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdU
RVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5o
IgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyBzdGQ6Om1ha2VfcGFpcjsK
LXVzaW5nIHN0ZDo6cGFpcjsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVy
bmFsIHsKLQotVEVTVChJc1hEaWdpdFRlc3QsIFdvcmtzRm9yTmFycm93QXNjaWkpIHsKLSAgRVhQ
RUNUX1RSVUUoSXNYRGlnaXQoJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KCc5JykpOwot
ICBFWFBFQ1RfVFJVRShJc1hEaWdpdCgnQScpKTsKLSAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoJ0Yn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KCdhJykpOwotICBFWFBFQ1RfVFJVRShJc1hEaWdp
dCgnZicpKTsKLQotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoJy0nKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc1hEaWdpdCgnZycpKTsKLSAgRVhQRUNUX0ZBTFNFKElzWERpZ2l0KCdHJykpOwotfQotCi1U
RVNUKElzWERpZ2l0VGVzdCwgUmV0dXJuc0ZhbHNlRm9yTmFycm93Tm9uQXNjaWkpIHsKLSAgRVhQ
RUNUX0ZBTFNFKElzWERpZ2l0KCdceDgwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3Rh
dGljX2Nhc3Q8Y2hhcj4oJzAnIHwgJ1x4ODAnKSkpOwotfQotCi1URVNUKElzWERpZ2l0VGVzdCwg
V29ya3NGb3JXaWRlQXNjaWkpIHsKLSAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCcwJykpOwotICBF
WFBFQ1RfVFJVRShJc1hEaWdpdChMJzknKSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnQScp
KTsKLSAgRVhQRUNUX1RSVUUoSXNYRGlnaXQoTCdGJykpOwotICBFWFBFQ1RfVFJVRShJc1hEaWdp
dChMJ2EnKSk7Ci0gIEVYUEVDVF9UUlVFKElzWERpZ2l0KEwnZicpKTsKLQotICBFWFBFQ1RfRkFM
U0UoSXNYRGlnaXQoTCctJykpOwotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdnJykpOwotICBF
WFBFQ1RfRkFMU0UoSXNYRGlnaXQoTCdHJykpOwotfQotCi1URVNUKElzWERpZ2l0VGVzdCwgUmV0
dXJuc0ZhbHNlRm9yV2lkZU5vbkFzY2lpKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1hEaWdpdChzdGF0
aWNfY2FzdDx3Y2hhcl90PigweDgwKSkpOwotICBFWFBFQ1RfRkFMU0UoSXNYRGlnaXQoc3RhdGlj
X2Nhc3Q8d2NoYXJfdD4oTCcwJyB8IDB4ODApKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1hEaWdpdChz
dGF0aWNfY2FzdDx3Y2hhcl90PihMJzAnIHwgMHgxMDApKSk7Ci19Ci0KLWNsYXNzIEJhc2Ugewot
IHB1YmxpYzoKLSAgLy8gQ29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRvciBk
byBleGFjdGx5IHdoYXQgd2UgbmVlZCwgc28gd2UKLSAgLy8gdXNlIHRoZW0uCi0gIEJhc2UoKSA6
IG1lbWJlcl8oMCkge30KLSAgZXhwbGljaXQgQmFzZShpbnQgbikgOiBtZW1iZXJfKG4pIHt9Ci0g
IHZpcnR1YWwgfkJhc2UoKSB7fQotICBpbnQgbWVtYmVyKCkgeyByZXR1cm4gbWVtYmVyXzsgfQot
Ci0gcHJpdmF0ZToKLSAgaW50IG1lbWJlcl87Ci19OwotCi1jbGFzcyBEZXJpdmVkIDogcHVibGlj
IEJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgRGVyaXZlZChpbnQgbikgOiBCYXNlKG4pIHt9
Ci19OwotCi1URVNUKEltcGxpY2l0Q2FzdFRlc3QsIENvbnZlcnRzUG9pbnRlcnMpIHsKLSAgRGVy
aXZlZCBkZXJpdmVkKDApOwotICBFWFBFQ1RfVFJVRSgmZGVyaXZlZCA9PSA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2UqPigmZGVyaXZlZCkpOwotfQotCi1URVNUKEltcGxp
Y2l0Q2FzdFRlc3QsIENhblVzZUluaGVyaXRhbmNlKSB7Ci0gIERlcml2ZWQgZGVyaXZlZCgxKTsK
LSAgQmFzZSBiYXNlID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRDYXN0XzxCYXNlPihk
ZXJpdmVkKTsKLSAgRVhQRUNUX0VRKGRlcml2ZWQubWVtYmVyKCksIGJhc2UubWVtYmVyKCkpOwot
fQotCi1jbGFzcyBDYXN0YWJsZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBDYXN0YWJsZShib29s
KiBjb252ZXJ0ZWQpIDogY29udmVydGVkXyhjb252ZXJ0ZWQpIHt9Ci0gIG9wZXJhdG9yIEJhc2Uo
KSB7Ci0gICAgKmNvbnZlcnRlZF8gPSB0cnVlOwotICAgIHJldHVybiBCYXNlKCk7Ci0gIH0KLQot
IHByaXZhdGU6Ci0gIGJvb2wqIGNvbnZlcnRlZF87Ci19OwotCi1URVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZU5vbkNvbnN0Q2FzdE9wZXJhdG9yKSB7Ci0gIGJvb2wgY29udmVydGVkID0gZmFs
c2U7Ci0gIENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQpOwotICBCYXNlIGJhc2UgPSA6OnRl
c3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKLSAgRVhQRUNU
X1RSVUUoY29udmVydGVkKTsKLX0KLQotY2xhc3MgQ29uc3RDYXN0YWJsZSB7Ci0gcHVibGljOgot
ICBleHBsaWNpdCBDb25zdENhc3RhYmxlKGJvb2wqIGNvbnZlcnRlZCkgOiBjb252ZXJ0ZWRfKGNv
bnZlcnRlZCkge30KLSAgb3BlcmF0b3IgQmFzZSgpIGNvbnN0IHsKLSAgICAqY29udmVydGVkXyA9
IHRydWU7Ci0gICAgcmV0dXJuIEJhc2UoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgYm9vbCogY29u
dmVydGVkXzsKLX07Ci0KLVRFU1QoSW1wbGljaXRDYXN0VGVzdCwgQ2FuVXNlQ29uc3RDYXN0T3Bl
cmF0b3JPbkNvbnN0VmFsdWVzKSB7Ci0gIGJvb2wgY29udmVydGVkID0gZmFsc2U7Ci0gIGNvbnN0
IENvbnN0Q2FzdGFibGUgY29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCk7Ci0gIEJhc2UgYmFzZSA9
IDo6dGVzdGluZzo6aW50ZXJuYWw6OkltcGxpY2l0Q2FzdF88QmFzZT4oY29uc3RfY2FzdGFibGUp
OwotICBFWFBFQ1RfVFJVRShjb252ZXJ0ZWQpOwotfQotCi1jbGFzcyBDb25zdEFuZE5vbkNvbnN0
Q2FzdGFibGUgewotIHB1YmxpYzoKLSAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlKGJvb2wqIGNv
bnZlcnRlZCwgYm9vbCogY29uc3RfY29udmVydGVkKQotICAgICAgOiBjb252ZXJ0ZWRfKGNvbnZl
cnRlZCksIGNvbnN0X2NvbnZlcnRlZF8oY29uc3RfY29udmVydGVkKSB7fQotICBvcGVyYXRvciBC
YXNlKCkgewotICAgICpjb252ZXJ0ZWRfID0gdHJ1ZTsKLSAgICByZXR1cm4gQmFzZSgpOwotICB9
Ci0gIG9wZXJhdG9yIEJhc2UoKSBjb25zdCB7Ci0gICAgKmNvbnN0X2NvbnZlcnRlZF8gPSB0cnVl
OwotICAgIHJldHVybiBCYXNlKCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIGJvb2wqIGNvbnZlcnRl
ZF87Ci0gIGJvb2wqIGNvbnN0X2NvbnZlcnRlZF87Ci19OwotCi1URVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblNlbGVjdEJldHdlZW5Db25zdEFuZE5vbkNvbnN0Q2FzckFwcHJvcHJpYXRlbHkpIHsK
LSAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxzZTsKLSAgYm9vbCBjb25zdF9jb252ZXJ0ZWQgPSBmYWxz
ZTsKLSAgQ29uc3RBbmROb25Db25zdENhc3RhYmxlIGNhc3RhYmxlKCZjb252ZXJ0ZWQsICZjb25z
dF9jb252ZXJ0ZWQpOwotICBCYXNlIGJhc2UgPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNp
dENhc3RfPEJhc2U+KGNhc3RhYmxlKTsKLSAgRVhQRUNUX1RSVUUoY29udmVydGVkKTsKLSAgRVhQ
RUNUX0ZBTFNFKGNvbnN0X2NvbnZlcnRlZCk7Ci0KLSAgY29udmVydGVkID0gZmFsc2U7Ci0gIGNv
bnN0X2NvbnZlcnRlZCA9IGZhbHNlOwotICBjb25zdCBDb25zdEFuZE5vbkNvbnN0Q2FzdGFibGUg
Y29uc3RfY2FzdGFibGUoJmNvbnZlcnRlZCwgJmNvbnN0X2NvbnZlcnRlZCk7Ci0gIGJhc2UgPSA6
OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPEJhc2U+KGNvbnN0X2Nhc3RhYmxlKTsK
LSAgRVhQRUNUX0ZBTFNFKGNvbnZlcnRlZCk7Ci0gIEVYUEVDVF9UUlVFKGNvbnN0X2NvbnZlcnRl
ZCk7Ci19Ci0KLWNsYXNzIFRvIHsKLSBwdWJsaWM6Ci0gIFRvKGJvb2wqIGNvbnZlcnRlZCkgeyAq
Y29udmVydGVkID0gdHJ1ZTsgfSAgLy8gTk9MSU5UCi19OwotCi1URVNUKEltcGxpY2l0Q2FzdFRl
c3QsIENhblVzZUltcGxpY2l0Q29uc3RydWN0b3IpIHsKLSAgYm9vbCBjb252ZXJ0ZWQgPSBmYWxz
ZTsKLSAgVG8gdG8gPSA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfPFRvPigmY29u
dmVydGVkKTsKLSAgKHZvaWQpdG87Ci0gIEVYUEVDVF9UUlVFKGNvbnZlcnRlZCk7Ci19Ci0KLVRF
U1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclNUTENvbnRhaW5lckl0ZXJhdG9ycykgewot
ICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LAotICAgICAgSXRlcmF0b3JUcmFpdHM8IDo6c3RkOjp2
ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOwotICBTdGF0aWNBc3Nl
cnRUeXBlRXE8Ym9vbCwKLSAgICAgIEl0ZXJhdG9yVHJhaXRzPCA6OnN0ZDo6bGlzdDxib29sPjo6
aXRlcmF0b3I+Ojp2YWx1ZV90eXBlPigpOwotfQotCi1URVNUKEl0ZXJhdG9yVHJhaXRzVGVzdCwg
V29ya3NGb3JQb2ludGVyVG9Ob25Db25zdCkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwg
SXRlcmF0b3JUcmFpdHM8Y2hhcio+Ojp2YWx1ZV90eXBlPigpOwotICBTdGF0aWNBc3NlcnRUeXBl
RXE8Y29uc3Qgdm9pZCosIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqKj46OnZhbHVlX3R5cGU+
KCk7Ci19Ci0KLVRFU1QoSXRlcmF0b3JUcmFpdHNUZXN0LCBXb3Jrc0ZvclBvaW50ZXJUb0NvbnN0
KSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxjaGFyLCBJdGVyYXRvclRyYWl0czxjb25zdCBjaGFy
Kj46OnZhbHVlX3R5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCB2b2lkKiwKLSAg
ICAgIEl0ZXJhdG9yVHJhaXRzPGNvbnN0IHZvaWQqIGNvbnN0Kj46OnZhbHVlX3R5cGU+KCk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGVsZW1lbnRfdHlwZSB0eXBlZGVmIGlzIGF2YWlsYWJsZSBp
biBzY29wZWRfcHRyIGFuZCByZWZlcnMKLS8vIHRvIHRoZSBwYXJhbWV0ZXIgdHlwZS4KLVRFU1Qo
U2NvcGVkUHRyVGVzdCwgRGVmaW5lc0VsZW1lbnRUeXBlKSB7Ci0gIFN0YXRpY0Fzc2VydFR5cGVF
cTxpbnQsIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8aW50Pjo6ZWxlbWVudF90eXBl
PigpOwotfQotCi0vLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBJbXBsZW1lbnQgVEhFIFJFU1Qg
b2Ygc2NvcGVkX3B0ciB0ZXN0cy4KLQotVEVTVChHdGVzdENoZWNrU3ludGF4VGVzdCwgQmVoYXZl
c0xpa2VBU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEdURVNU
X0NIRUNLXyhmYWxzZSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkOyAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSXQncyBhIGNvbXBpbGF0aW9uIHRlc3Qgb25seS4iOwot
Ci0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgR1RFU1RfQ0hFQ0tfKHRydWUpOwotICBlbHNlCi0g
ICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgOyAgLy8gTk9MSU5U
Ci0gIGVsc2UKLSAgICBHVEVTVF9DSEVDS18odHJ1ZSkgPDwgIiI7Ci19Ci0KLVRFU1QoR3Rlc3RD
aGVja1N5bnRheFRlc3QsIFdvcmtzV2l0aFN3aXRjaCkgewotICBzd2l0Y2ggKDApIHsKLSAgICBj
YXNlIDE6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1RFU1RfQ0hFQ0tfKHRy
dWUpOwotICB9Ci0KLSAgc3dpdGNoICgwKQotICAgIGNhc2UgMDoKLSAgICAgIEdURVNUX0NIRUNL
Xyh0cnVlKSA8PCAiQ2hlY2sgZmFpbGVkIGluIHN3aXRjaCBjYXNlIjsKLX0KLQotLy8gVmVyaWZp
ZXMgYmVoYXZpb3Igb2YgRm9ybWF0RmlsZUxvY2F0aW9uLgotVEVTVChGb3JtYXRGaWxlTG9jYXRp
b25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNT
dWJzdHJpbmcsICJmb28uY2MiLCBGb3JtYXRGaWxlTG9jYXRpb24oImZvby5jYyIsIDQyKSk7Ci0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2NhdGlv
bigiZm9vLmNjIiwgNDIpKTsKLX0KLQotVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3Jt
YXRzVW5rbm93bkZpbGUpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMigKLSAgICAgIElzU3Vic3Ry
aW5nLCAidW5rbm93biBmaWxlIiwgRm9ybWF0RmlsZUxvY2F0aW9uKE5VTEwsIDQyKSk7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoSXNTdWJzdHJpbmcsICI0MiIsIEZvcm1hdEZpbGVMb2NhdGlvbihO
VUxMLCA0MikpOwotfQotCi1URVNUKEZvcm1hdEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNVa25v
d25MaW5lKSB7Ci0gIEVYUEVDVF9FUSgiZm9vLmNjOiIsIEZvcm1hdEZpbGVMb2NhdGlvbigiZm9v
LmNjIiwgLTEpKTsKLX0KLQotVEVTVChGb3JtYXRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzVWtu
b3duRmlsZUFuZExpbmUpIHsKLSAgRVhQRUNUX0VRKCJ1bmtub3duIGZpbGU6IiwgRm9ybWF0Rmls
ZUxvY2F0aW9uKE5VTEwsIC0xKSk7Ci19Ci0KLS8vIFZlcmlmaWVzIGJlaGF2aW9yIG9mIEZvcm1h
dENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24uCi1URVNUKEZvcm1hdENvbXBpbGVySW5k
ZXBlbmRlbnRGaWxlTG9jYXRpb25UZXN0LCBGb3JtYXRzRmlsZUxvY2F0aW9uKSB7Ci0gIEVYUEVD
VF9FUSgiZm9vLmNjOjQyIiwgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvbigi
Zm9vLmNjIiwgNDIpKTsKLX0KLQotVEVTVChGb3JtYXRDb21waWxlckluZGVwZW5kZW50RmlsZUxv
Y2F0aW9uVGVzdCwgRm9ybWF0c1Vrbm93bkZpbGUpIHsKLSAgRVhQRUNUX0VRKCJ1bmtub3duIGZp
bGU6NDIiLAotICAgICAgICAgICAgRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlv
bihOVUxMLCA0MikpOwotfQotCi1URVNUKEZvcm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9j
YXRpb25UZXN0LCBGb3JtYXRzVWtub3duTGluZSkgewotICBFWFBFQ1RfRVEoImZvby5jYyIsIEZv
cm1hdENvbXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oImZvby5jYyIsIC0xKSk7Ci19Ci0K
LVRFU1QoRm9ybWF0Q29tcGlsZXJJbmRlcGVuZGVudEZpbGVMb2NhdGlvblRlc3QsIEZvcm1hdHNV
a25vd25GaWxlQW5kTGluZSkgewotICBFWFBFQ1RfRVEoInVua25vd24gZmlsZSIsIEZvcm1hdENv
bXBpbGVySW5kZXBlbmRlbnRGaWxlTG9jYXRpb24oTlVMTCwgLTEpKTsKLX0KLQotI2lmIEdURVNU
X09TX0xJTlVYIHx8IEdURVNUX09TX01BQyB8fCBHVEVTVF9PU19RTlgKLXZvaWQqIFRocmVhZEZ1
bmModm9pZCogZGF0YSkgewotICBpbnRlcm5hbDo6TXV0ZXgqIG11dGV4ID0gc3RhdGljX2Nhc3Q8
aW50ZXJuYWw6Ok11dGV4Kj4oZGF0YSk7Ci0gIG11dGV4LT5Mb2NrKCk7Ci0gIG11dGV4LT5Vbmxv
Y2soKTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLVRFU1QoR2V0VGhyZWFkQ291bnRUZXN0LCBSZXR1
cm5zQ29ycmVjdFZhbHVlKSB7Ci0gIGNvbnN0IHNpemVfdCBzdGFydGluZ19jb3VudCA9IEdldFRo
cmVhZENvdW50KCk7Ci0gIHB0aHJlYWRfdCAgICAgICB0aHJlYWRfaWQ7Ci0KLSAgaW50ZXJuYWw6
Ok11dGV4IG11dGV4OwotICB7Ci0gICAgaW50ZXJuYWw6Ok11dGV4TG9jayBsb2NrKCZtdXRleCk7
Ci0gICAgcHRocmVhZF9hdHRyX3QgIGF0dHI7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0
cl9pbml0KCZhdHRyKSk7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hz
dGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUpKTsKLQotICAgIGNvbnN0IGludCBz
dGF0dXMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkX2lkLCAmYXR0ciwgJlRocmVhZEZ1bmMsICZt
dXRleCk7Ci0gICAgQVNTRVJUX0VRKDAsIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyKSk7Ci0g
ICAgQVNTRVJUX0VRKDAsIHN0YXR1cyk7Ci0gICAgRVhQRUNUX0VRKHN0YXJ0aW5nX2NvdW50ICsg
MSwgR2V0VGhyZWFkQ291bnQoKSk7Ci0gIH0KLQotICB2b2lkKiBkdW1teTsKLSAgQVNTRVJUX0VR
KDAsIHB0aHJlYWRfam9pbih0aHJlYWRfaWQsICZkdW1teSkpOwotCi0gIC8vIFRoZSBPUyBtYXkg
bm90IGltbWVkaWF0ZWx5IHJlcG9ydCB0aGUgdXBkYXRlZCB0aHJlYWQgY291bnQgYWZ0ZXIKLSAg
Ly8gam9pbmluZyBhIHRocmVhZCwgY2F1c2luZyBmbGFraW5lc3MgaW4gdGhpcyB0ZXN0LiBUbyBj
b3VudGVyIHRoYXQsIHdlCi0gIC8vIHdhaXQgZm9yIHVwIHRvIC41IHNlY29uZHMgZm9yIHRoZSBP
UyB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWUuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgNTsg
KytpKSB7Ci0gICAgaWYgKEdldFRocmVhZENvdW50KCkgPT0gc3RhcnRpbmdfY291bnQpCi0gICAg
ICBicmVhazsKLQotICAgIFNsZWVwTWlsbGlzZWNvbmRzKDEwMCk7Ci0gIH0KLQotICBFWFBFQ1Rf
RVEoc3RhcnRpbmdfY291bnQsIEdldFRocmVhZENvdW50KCkpOwotfQotI2Vsc2UKLVRFU1QoR2V0
VGhyZWFkQ291bnRUZXN0LCBSZXR1cm5zWmVyb1doZW5VbmFibGVUb0NvdW50VGhyZWFkcykgewot
ICBFWFBFQ1RfRVEoMFUsIEdldFRocmVhZENvdW50KCkpOwotfQotI2VuZGlmICAvLyBHVEVTVF9P
U19MSU5VWCB8fCBHVEVTVF9PU19NQUMgfHwgR1RFU1RfT1NfUU5YCi0KLVRFU1QoR3Rlc3RDaGVj
a0RlYXRoVGVzdCwgRGllc1dpdGhDb3JyZWN0T3V0cHV0T25GYWlsdXJlKSB7Ci0gIGNvbnN0IGJv
b2wgYV9mYWxzZV9jb25kaXRpb24gPSBmYWxzZTsKLSAgY29uc3QgY2hhciByZWdleFtdID0KLSNp
ZmRlZiBfTVNDX1ZFUgotICAgICAiZ3Rlc3QtcG9ydF90ZXN0XFwuY2NcXChcXGQrXFwpOiIKLSNl
bGlmIEdURVNUX1VTRVNfUE9TSVhfUkUKLSAgICAgImd0ZXN0LXBvcnRfdGVzdFxcLmNjOlswLTld
KyIKLSNlbHNlCi0gICAgICJndGVzdC1wb3J0X3Rlc3RcXC5jYzpcXGQrIgotI2VuZGlmICAvLyBf
TVNDX1ZFUgotICAgICAiLiphX2ZhbHNlX2NvbmRpdGlvbi4qRXh0cmEgaW5mby4qIjsKLQotICBF
WFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKEdURVNUX0NIRUNLXyhhX2ZhbHNlX2NvbmRpdGlvbikg
PDwgIkV4dHJhIGluZm8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4KTsKLX0K
LQotI2lmIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLVRFU1QoR3Rlc3RDaGVja0RlYXRoVGVzdCwg
TGl2ZXNTaWxlbnRseU9uU3VjY2VzcykgewotICBFWFBFQ1RfRVhJVCh7Ci0gICAgICBHVEVTVF9D
SEVDS18odHJ1ZSkgPDwgIkV4dHJhIGluZm8iOwotICAgICAgOjpzdGQ6OmNlcnIgPDwgIlN1Y2Nl
c3NcbiI7Ci0gICAgICBleGl0KDApOyB9LAotICAgICAgOjp0ZXN0aW5nOjpFeGl0ZWRXaXRoQ29k
ZSgwKSwgIlN1Y2Nlc3MiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhfVEVTVAot
Ci0vLyBWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNob29zZSByZWd1bGFyIGV4cHJlc3Npb24g
ZW5naW5lIGFwcHJvcHJpYXRlIHRvCi0vLyB0aGUgcGxhdGZvcm0uIFRoZSB0ZXN0IHdpbGwgcHJv
ZHVjZSBjb21waWxlciBlcnJvcnMgaW4gY2FzZSBvZiBmYWlsdXJlLgotLy8gRm9yIHNpbXBsaWNp
dHksIHdlIG9ubHkgY292ZXIgdGhlIG1vc3QgaW1wb3J0YW50IHBsYXRmb3JtcyBoZXJlLgotVEVT
VChSZWdleEVuZ2luZVNlbGVjdGlvblRlc3QsIFNlbGVjdHNDb3JyZWN0UmVnZXhFbmdpbmUpIHsK
LSNpZiAhR1RFU1RfVVNFU19QQ1JFCi0jIGlmIEdURVNUX0hBU19QT1NJWF9SRQotCi0gIEVYUEVD
VF9UUlVFKEdURVNUX1VTRVNfUE9TSVhfUkUpOwotCi0jIGVsc2UKLQotICBFWFBFQ1RfVFJVRShH
VEVTVF9VU0VTX1NJTVBMRV9SRSk7Ci0KLSMgZW5kaWYKLSNlbmRpZiAgLy8gIUdURVNUX1VTRVNf
UENSRQotfQotCi0jaWYgR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jIGlmIEdURVNUX0hBU19UWVBF
RF9URVNUCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHI+Ci1jbGFzcyBSRVRlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHt9OwotCi0vLyBEZWZpbmVzIFN0cmluZ1R5cGVzIGFzIHRoZSBsaXN0
IG9mIGFsbCBzdHJpbmcgdHlwZXMgdGhhdCBjbGFzcyBSRQotLy8gc3VwcG9ydHMuCi10eXBlZGVm
IHRlc3Rpbmc6OlR5cGVzPAotICAgIDo6c3RkOjpzdHJpbmcsCi0jICBpZiBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORwotICAgIDo6c3RyaW5nLAotIyAgZW5kaWYgIC8vIEdURVNUX0hBU19HTE9CQUxf
U1RSSU5HCi0gICAgY29uc3QgY2hhcio+IFN0cmluZ1R5cGVzOwotCi1UWVBFRF9URVNUX0NBU0Uo
UkVUZXN0LCBTdHJpbmdUeXBlcyk7Ci0KLS8vIFRlc3RzIFJFJ3MgaW1wbGljaXQgY29uc3RydWN0
b3JzLgotVFlQRURfVEVTVChSRVRlc3QsIEltcGxpY2l0Q29uc3RydWN0b3JXb3JrcykgewotICBj
b25zdCBSRSBlbXB0eShUeXBlUGFyYW0oIiIpKTsKLSAgRVhQRUNUX1NUUkVRKCIiLCBlbXB0eS5w
YXR0ZXJuKCkpOwotCi0gIGNvbnN0IFJFIHNpbXBsZShUeXBlUGFyYW0oImhlbGxvIikpOwotICBF
WFBFQ1RfU1RSRVEoImhlbGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci0KLSAgY29uc3QgUkUgbm9y
bWFsKFR5cGVQYXJhbSgiLiooXFx3KykiKSk7Ci0gIEVYUEVDVF9TVFJFUSgiLiooXFx3KykiLCBu
b3JtYWwucGF0dGVybigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBSRSdzIGNvbnN0cnVjdG9ycyBy
ZWplY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25zLgotVFlQRURfVEVTVChSRVRlc3QsIFJl
amVjdHNJbnZhbGlkUmVnZXgpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgIGNv
bnN0IFJFIGludmFsaWQoVHlwZVBhcmFtKCI/IikpOwotICB9LCAiXCI/XCIgaXMgbm90IGEgdmFs
aWQgUE9TSVggRXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uLiIpOwotfQotCi0vLyBUZXN0cyBS
RTo6RnVsbE1hdGNoKCkuCi1UWVBFRF9URVNUKFJFVGVzdCwgRnVsbE1hdGNoV29ya3MpIHsKLSAg
Y29uc3QgUkUgZW1wdHkoVHlwZVBhcmFtKCIiKSk7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0
Y2goVHlwZVBhcmFtKCIiKSwgZW1wdHkpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2go
VHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUgcmUoVHlwZVBhcmFtKCJhLip6
IikpOwotICBFWFBFQ1RfVFJVRShSRTo6RnVsbE1hdGNoKFR5cGVQYXJhbSgiYXoiKSwgcmUpKTsK
LSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaChUeXBlUGFyYW0oImF4eXoiKSwgcmUpKTsKLSAg
RVhQRUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJiYXoiKSwgcmUpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFJFOjpGdWxsTWF0Y2goVHlwZVBhcmFtKCJhenkiKSwgcmUpKTsKLX0KLQotLy8g
VGVzdHMgUkU6OlBhcnRpYWxNYXRjaCgpLgotVFlQRURfVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRj
aFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVtcHR5KFR5cGVQYXJhbSgiIikpOwotICBFWFBFQ1RfVFJV
RShSRTo6UGFydGlhbE1hdGNoKFR5cGVQYXJhbSgiIiksIGVtcHR5KSk7Ci0gIEVYUEVDVF9UUlVF
KFJFOjpQYXJ0aWFsTWF0Y2goVHlwZVBhcmFtKCJhIiksIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUg
cmUoVHlwZVBhcmFtKCJhLip6IikpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5
cGVQYXJhbSgiYXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImF4eXoiKSwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaChUeXBl
UGFyYW0oImJheiIpLCByZSkpOwotICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgiYXp5IiksIHJlKSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6UGFydGlhbE1hdGNoKFR5cGVQ
YXJhbSgienphIiksIHJlKSk7Ci19Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9URVNU
Ci0KLSNlbGlmIEdURVNUX1VTRVNfU0lNUExFX1JFCi0KLVRFU1QoSXNJblNldFRlc3QsIE51bENo
YXJJc05vdEluQW55U2V0KSB7Ci0gIEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICIiKSk7Ci0g
IEVYUEVDVF9GQUxTRShJc0luU2V0KCdcMCcsICJcMCIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzSW5T
ZXQoJ1wwJywgImEiKSk7Ci19Ci0KLVRFU1QoSXNJblNldFRlc3QsIFdvcmtzRm9yTm9uTnVsQ2hh
cnMpIHsKLSAgRVhQRUNUX0ZBTFNFKElzSW5TZXQoJ2EnLCAiQWIiKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0luU2V0KCdjJywgIiIpKTsKLQotICBFWFBFQ1RfVFJVRShJc0luU2V0KCdiJywgImJjZCIp
KTsKLSAgRVhQRUNUX1RSVUUoSXNJblNldCgnYicsICJhYiIpKTsKLX0KLQotVEVTVChJc0FzY2lp
RGlnaXRUZXN0LCBJc0ZhbHNlRm9yTm9uRGlnaXQpIHsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlE
aWdpdCgnXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJyAnKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc0FzY2lpRGlnaXQoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQo
Jy0nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpRGlnaXQoJy4nKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc0FzY2lpRGlnaXQoJ2EnKSk7Ci19Ci0KLVRFU1QoSXNBc2NpaURpZ2l0VGVzdCwgSXNUcnVl
Rm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCcwJykpOwotICBFWFBFQ1Rf
VFJVRShJc0FzY2lpRGlnaXQoJzEnKSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlEaWdpdCgnNScp
KTsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaURpZ2l0KCc5JykpOwotfQotCi1URVNUKElzQXNjaWlQ
dW5jdFRlc3QsIElzRmFsc2VGb3JOb25QdW5jdCkgewotICBFWFBFQ1RfRkFMU0UoSXNBc2NpaVB1
bmN0KCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlQdW5jdCgnICcpKTsKLSAgRVhQRUNU
X0ZBTFNFKElzQXNjaWlQdW5jdCgnXG4nKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3Qo
J2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpUHVuY3QoJzAnKSk7Ci19Ci0KLVRFU1QoSXNB
c2NpaVB1bmN0VGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgZm9yIChjb25zdCBjaGFyKiBwID0g
Il4tIVwiIyQlJicoKSorLC4vOjs8PT4/QFtcXF1fYHt8fX4iOyAqcDsgcCsrKSB7Ci0gICAgRVhQ
RUNUX1BSRUQxKElzQXNjaWlQdW5jdCwgKnApOwotICB9Ci19Ci0KLVRFU1QoSXNSZXBlYXRUZXN0
LCBJc0ZhbHNlRm9yTm9uUmVwZWF0Q2hhcikgewotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJ1ww
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNSZXBlYXQoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1Jl
cGVhdCgnYScpKTsKLSAgRVhQRUNUX0ZBTFNFKElzUmVwZWF0KCcxJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNSZXBlYXQoJy0nKSk7Ci19Ci0KLVRFU1QoSXNSZXBlYXRUZXN0LCBJc1RydWVGb3JSZXBl
YXRDaGFyKSB7Ci0gIEVYUEVDVF9UUlVFKElzUmVwZWF0KCc/JykpOwotICBFWFBFQ1RfVFJVRShJ
c1JlcGVhdCgnKicpKTsKLSAgRVhQRUNUX1RSVUUoSXNSZXBlYXQoJysnKSk7Ci19Ci0KLVRFU1Qo
SXNBc2NpaVdoaXRlU3BhY2VUZXN0LCBJc0ZhbHNlRm9yTm9uV2hpdGVTcGFjZSkgewotICBFWFBF
Q1RfRkFMU0UoSXNBc2NpaVdoaXRlU3BhY2UoJ1wwJykpOwotICBFWFBFQ1RfRkFMU0UoSXNBc2Np
aVdoaXRlU3BhY2UoJ2EnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV2hpdGVTcGFjZSgnMScp
KTsKLSAgRVhQRUNUX0ZBTFNFKElzQXNjaWlXaGl0ZVNwYWNlKCcrJykpOwotICBFWFBFQ1RfRkFM
U0UoSXNBc2NpaVdoaXRlU3BhY2UoJ18nKSk7Ci19Ci0KLVRFU1QoSXNBc2NpaVdoaXRlU3BhY2VU
ZXN0LCBJc1RydWVGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNw
YWNlKCcgJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXG4nKSk7Ci0gIEVY
UEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdccicpKTsKLSAgRVhQRUNUX1RSVUUoSXNBc2Np
aVdoaXRlU3BhY2UoJ1x0JykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV2hpdGVTcGFjZSgnXHYn
KSk7Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXaGl0ZVNwYWNlKCdcZicpKTsKLX0KLQotVEVTVChJ
c0FzY2lpV29yZENoYXJUZXN0LCBJc0ZhbHNlRm9yTm9uV29yZENoYXIpIHsKLSAgRVhQRUNUX0ZB
TFNFKElzQXNjaWlXb3JkQ2hhcignXDAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENo
YXIoJysnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV29yZENoYXIoJy4nKSk7Ci0gIEVYUEVD
VF9GQUxTRShJc0FzY2lpV29yZENoYXIoJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShJc0FzY2lpV29y
ZENoYXIoJ1xuJykpOwotfQotCi1URVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1ZUZvckxl
dHRlcikgewotICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ2EnKSk7Ci0gIEVYUEVDVF9U
UlVFKElzQXNjaWlXb3JkQ2hhcignYicpKTsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFy
KCdBJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJ1onKSk7Ci19Ci0KLVRFU1Qo
SXNBc2NpaVdvcmRDaGFyVGVzdCwgSXNUcnVlRm9yRGlnaXQpIHsKLSAgRVhQRUNUX1RSVUUoSXNB
c2NpaVdvcmRDaGFyKCcwJykpOwotICBFWFBFQ1RfVFJVRShJc0FzY2lpV29yZENoYXIoJzEnKSk7
Ci0gIEVYUEVDVF9UUlVFKElzQXNjaWlXb3JkQ2hhcignNycpKTsKLSAgRVhQRUNUX1RSVUUoSXNB
c2NpaVdvcmRDaGFyKCc5JykpOwotfQotCi1URVNUKElzQXNjaWlXb3JkQ2hhclRlc3QsIElzVHJ1
ZUZvclVuZGVyc2NvcmUpIHsKLSAgRVhQRUNUX1RSVUUoSXNBc2NpaVdvcmRDaGFyKCdfJykpOwot
fQotCi1URVNUKElzVmFsaWRFc2NhcGVUZXN0LCBJc0ZhbHNlRm9yTm9uUHJpbnRhYmxlKSB7Ci0g
IEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKElzVmFs
aWRFc2NhcGUoJ1wwMDcnKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3QsIElzRmFsc2VG
b3JEaWdpdCkgewotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnMCcpKTsKLSAgRVhQRUNU
X0ZBTFNFKElzVmFsaWRFc2NhcGUoJzknKSk7Ci19Ci0KLVRFU1QoSXNWYWxpZEVzY2FwZVRlc3Qs
IElzRmFsc2VGb3JXaGl0ZVNwYWNlKSB7Ci0gIEVYUEVDVF9GQUxTRShJc1ZhbGlkRXNjYXBlKCcg
JykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnXG4nKSk7Ci19Ci0KLVRFU1QoSXNW
YWxpZEVzY2FwZVRlc3QsIElzRmFsc2VGb3JTb21lTGV0dGVyKSB7Ci0gIEVYUEVDVF9GQUxTRShJ
c1ZhbGlkRXNjYXBlKCdhJykpOwotICBFWFBFQ1RfRkFMU0UoSXNWYWxpZEVzY2FwZSgnWicpKTsK
LX0KLQotVEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yUHVuY3QpIHsKLSAgRVhQRUNU
X1RSVUUoSXNWYWxpZEVzY2FwZSgnLicpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgn
LScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXicpKTsKLSAgRVhQRUNUX1RSVUUo
SXNWYWxpZEVzY2FwZSgnJCcpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnKCcpKTsK
LSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnXScpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxp
ZEVzY2FwZSgneycpKTsKLSAgRVhQRUNUX1RSVUUoSXNWYWxpZEVzY2FwZSgnfCcpKTsKLX0KLQot
VEVTVChJc1ZhbGlkRXNjYXBlVGVzdCwgSXNUcnVlRm9yU29tZUxldHRlcikgewotICBFWFBFQ1Rf
VFJVRShJc1ZhbGlkRXNjYXBlKCdkJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdE
JykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdzJykpOwotICBFWFBFQ1RfVFJVRShJ
c1ZhbGlkRXNjYXBlKCdTJykpOwotICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCd3JykpOwot
ICBFWFBFQ1RfVFJVRShJc1ZhbGlkRXNjYXBlKCdXJykpOwotfQotCi1URVNUKEF0b21NYXRjaGVz
Q2hhclRlc3QsIEVzY2FwZWRQdW5jdCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdcXCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVl
LCAnXFwnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnXycs
ICcuJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICcuJywgJ2EnKSk7
Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdcXCcsICdcXCcpKTsKLSAg
RVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdfJywgJ18nKSk7Ci0gIEVYUEVDVF9U
UlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnKycsICcrJykpOwotICBFWFBFQ1RfVFJVRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJy4nLCAnLicpKTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJU
ZXN0LCBFc2NhcGVkX2QpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
ZCcsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICdh
JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJy4nKSk7Ci0K
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdkJywgJzAnKSk7Ci0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZCcsICc5JykpOwotfQotCi1URVNUKEF0b21N
YXRjaGVzQ2hhclRlc3QsIEVzY2FwZWRfRCkgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXND
aGFyKHRydWUsICdEJywgJzAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1
ZSwgJ0QnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0Qn
LCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnRCcsICdhJykp
OwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ0QnLCAnLScpKTsKLX0KLQot
VEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3MpIHsKLSAgRVhQRUNUX0ZBTFNFKEF0
b21NYXRjaGVzQ2hhcih0cnVlLCAncycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRj
aGVzQ2hhcih0cnVlLCAncycsICdhJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFy
KHRydWUsICdzJywgJy4nKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwg
J3MnLCAnOScpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAn
ICcpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICdzJywgJ1xuJykpOwot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3MnLCAnXHQnKSk7Ci19Ci0KLVRF
U1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9TKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnICcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnUycsICdccicpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIo
dHJ1ZSwgJ1MnLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
UycsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1MnLCAnOScp
KTsKLX0KLQotVEVTVChBdG9tTWF0Y2hlc0NoYXJUZXN0LCBFc2NhcGVkX3cpIHsKLSAgRVhQRUNU
X0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycsICcrJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1h
dGNoZXNDaGFyKHRydWUsICd3JywgJyAnKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0No
YXIodHJ1ZSwgJ3cnLCAnXG4nKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICd3JywgJzAnKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAndycs
ICdiJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3cnLCAnQycpKTsK
LSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd3JywgJ18nKSk7Ci19Ci0KLVRF
U1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZF9XKSB7Ci0gIEVYUEVDVF9GQUxTRShBdG9t
TWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnQScpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnVycsICdiJykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRy
dWUsICdXJywgJzknKSk7Ci0gIEVYUEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cn
LCAnXycpKTsKLQotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXDAn
KSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnVycsICcqJykpOwotICBF
WFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ1cnLCAnXG4nKSk7Ci19Ci0KLVRFU1Qo
QXRvbU1hdGNoZXNDaGFyVGVzdCwgRXNjYXBlZFdoaXRlU3BhY2UpIHsKLSAgRVhQRUNUX0ZBTFNF
KEF0b21NYXRjaGVzQ2hhcih0cnVlLCAnZicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21N
YXRjaGVzQ2hhcih0cnVlLCAnZicsICdcbicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVz
Q2hhcih0cnVlLCAnbicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAnbicsICdccicpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAn
cicsICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcih0cnVlLCAncicsICdh
JykpOwotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ1wwJykpOwot
ICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0JywgJ3QnKSk7Ci0gIEVYUEVD
VF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXDAnKSk7Ci0gIEVYUEVDVF9GQUxT
RShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXGYnKSk7Ci0KLSAgRVhQRUNUX1RSVUUoQXRv
bU1hdGNoZXNDaGFyKHRydWUsICdmJywgJ1xmJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hl
c0NoYXIodHJ1ZSwgJ24nLCAnXG4nKSk7Ci0gIEVYUEVDVF9UUlVFKEF0b21NYXRjaGVzQ2hhcih0
cnVlLCAncicsICdccicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1hdGNoZXNDaGFyKHRydWUsICd0
JywgJ1x0JykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIodHJ1ZSwgJ3YnLCAnXHYn
KSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5lc2NhcGVkRG90KSB7Ci0gIEVY
UEVDVF9GQUxTRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICcuJywgJ1xuJykpOwotCi0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnXDAnKSk7Ci0gIEVYUEVDVF9UUlVF
KEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJy4nLCAnLicpKTsKLSAgRVhQRUNUX1RSVUUoQXRvbU1h
dGNoZXNDaGFyKGZhbHNlLCAnLicsICdhJykpOwotICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0No
YXIoZmFsc2UsICcuJywgJyAnKSk7Ci19Ci0KLVRFU1QoQXRvbU1hdGNoZXNDaGFyVGVzdCwgVW5l
c2NhcGVkQ2hhcikgewotICBFWFBFQ1RfRkFMU0UoQXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnYScs
ICdcMCcpKTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJ2EnLCAnYicp
KTsKLSAgRVhQRUNUX0ZBTFNFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJyQnLCAnYScpKTsKLQot
ICBFWFBFQ1RfVFJVRShBdG9tTWF0Y2hlc0NoYXIoZmFsc2UsICckJywgJyQnKSk7Ci0gIEVYUEVD
VF9UUlVFKEF0b21NYXRjaGVzQ2hhcihmYWxzZSwgJzUnLCAnNScpKTsKLSAgRVhQRUNUX1RSVUUo
QXRvbU1hdGNoZXNDaGFyKGZhbHNlLCAnWicsICdaJykpOwotfQotCi1URVNUKFZhbGlkYXRlUmVn
ZXhUZXN0LCBHZW5lcmF0ZXNGYWlsdXJlQW5kUmV0dXJuc0ZhbHNlRm9ySW52YWxpZCkgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleChOVUxMKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSBy
ZWd1bGFyIGV4cHJlc3Npb24iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiYVxcIikpLAotICAgICAgIlN5bnRheCBlcnJvciBh
dCBpbmRleCAxIGluIHNpbXBsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJhXFxcIjogIik7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhXFwiKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBlYXIgYXQgdGhlIGVu
ZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdl
eCgiXFxuXFwiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICInXFwnIGNhbm5vdCBhcHBl
YXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0Uo
VmFsaWRhdGVSZWdleCgiXFxzXFxoYiIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlu
dmFsaWQgZXNjYXBlIHNlcXVlbmNlIFwiXFxoXCIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoQVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIl5eIikpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVnaW5uaW5nIik7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCIuKl5iIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiJ14nIGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgYmVn
aW5uaW5nIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShWYWxpZGF0
ZVJlZ2V4KCIkJCIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIickJyBjYW4gb25seSBh
cHBlYXIgYXQgdGhlIGVuZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFM
U0UoVmFsaWRhdGVSZWdleCgiXiRhIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJyQn
IGNhbiBvbmx5IGFwcGVhciBhdCB0aGUgZW5kIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEFTU0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhKGIiKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QVNTRVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoImFiKSIpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIicpJyBpcyB1bnN1cHBvcnRlZCIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShB
U1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiW2FiIikpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJ1snIGlzIHVuc3VwcG9ydGVkIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEFT
U0VSVF9GQUxTRShWYWxpZGF0ZVJlZ2V4KCJhezIiKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICIneycgaXMgdW5zdXBwb3J0ZWQiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0ZBTFNFKFZhbGlkYXRlUmVnZXgoIj8iKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICInPycgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tlbiIpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdleCgiXioiKSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICInKicgY2FuIG9ubHkgZm9sbG93IGEgcmVwZWF0YWJsZSB0b2tl
biIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoVmFsaWRhdGVSZWdl
eCgiNSorIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJysnIGNhbiBvbmx5IGZvbGxv
dyBhIHJlcGVhdGFibGUgdG9rZW4iKTsKLX0KLQotVEVTVChWYWxpZGF0ZVJlZ2V4VGVzdCwgUmV0
dXJuc1RydWVGb3JWYWxpZCkgewotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCIiKSk7Ci0g
IEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoImEiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRl
UmVnZXgoIi4qIikpOwotICBFWFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYV8rIikpOwotICBF
WFBFQ1RfVFJVRShWYWxpZGF0ZVJlZ2V4KCJeYVxcdFxcJj8iKSk7Ci0gIEVYUEVDVF9UUlVFKFZh
bGlkYXRlUmVnZXgoIjA5KiQiKSk7Ci0gIEVYUEVDVF9UUlVFKFZhbGlkYXRlUmVnZXgoIl5aJCIp
KTsKLSAgRVhQRUNUX1RSVUUoVmFsaWRhdGVSZWdleCgiYVxcXlpcXCRcXChcXClcXHxcXFtcXF1c
XHtcXH0iKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWRUZXN0LCBX
b3Jrc0Zvclplcm9Pck9uZSkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVn
ZXhBdEhlYWQoZmFsc2UsICdhJywgJz8nLCAiYSIsICJiYSIpKTsKLSAgLy8gUmVwZWF0aW5nIG1v
cmUgdGhhbiBvbmNlLgotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICdhJywgJz8nLCAiYiIsICJhYWIiKSk7Ci0KLSAgLy8gUmVwZWF0aW5nIHplcm8g
dGltZXMuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNl
LCAnYScsICc/JywgImIiLCAiYmEiKSk7Ci0gIC8vIFJlcGVhdGluZyBvbmNlLgotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJ2EnLCAnPycsICJiIiwg
ImFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxz
ZSwgJyMnLCAnPycsICIuIiwgIiMjIikpOwotfQotCi1URVNUKE1hdGNoUmVwZXRpdGlvbkFuZFJl
Z2V4QXRIZWFkVGVzdCwgV29ya3NGb3JaZXJvT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShNYXRj
aFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJhJCIsICJiYWFiIikp
OwotCi0gIC8vIFJlcGVhdGluZyB6ZXJvIHRpbWVzLgotICBFWFBFQ1RfVFJVRShNYXRjaFJlcGV0
aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKicsICJiIiwgImJjIikpOwotICAvLyBS
ZXBlYXRpbmcgb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhl
YWQoZmFsc2UsICcuJywgJyonLCAiYiIsICJhYmMiKSk7Ci0gIC8vIFJlcGVhdGluZyBtb3JlIHRo
YW4gb25jZS4KLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZXBldGl0aW9uQW5kUmVnZXhBdEhlYWQodHJ1
ZSwgJ3cnLCAnKicsICItIiwgImFiXzEtZyIpKTsKLX0KLQotVEVTVChNYXRjaFJlcGV0aXRpb25B
bmRSZWdleEF0SGVhZFRlc3QsIFdvcmtzRm9yT25lT3JNYW55KSB7Ci0gIEVYUEVDVF9GQUxTRShN
YXRjaFJlcGV0aXRpb25BbmRSZWdleEF0SGVhZChmYWxzZSwgJy4nLCAnKycsICJhJCIsICJiYWFi
IikpOwotICAvLyBSZXBlYXRpbmcgemVybyB0aW1lcy4KLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVw
ZXRpdGlvbkFuZFJlZ2V4QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIiLCAiYmMiKSk7Ci0KLSAg
Ly8gUmVwZWF0aW5nIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4
QXRIZWFkKGZhbHNlLCAnLicsICcrJywgImIiLCAiYWJjIikpOwotICAvLyBSZXBlYXRpbmcgbW9y
ZSB0aGFuIG9uY2UuCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVwZXRpdGlvbkFuZFJlZ2V4QXRIZWFk
KHRydWUsICd3JywgJysnLCAiLSIsICJhYl8xLWciKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0
SGVhZFRlc3QsIFJldHVybnNUcnVlRm9yRW1wdHlSZWdleCkgewotICBFWFBFQ1RfVFJVRShNYXRj
aFJlZ2V4QXRIZWFkKCIiLCAiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCIi
LCAiYWIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtzV2hlbkRvbGxh
cklzSW5SZWdleCkgewotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiJCIsICJhIikp
OwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIiQiLCAiIikpOwotICBFWFBFQ1Rf
VFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhJCIsICJhIikpOwotfQotCi1URVNUKE1hdGNoUmVnZXhB
dEhlYWRUZXN0LCBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhFc2NhcGVTZXF1ZW5jZSkgewotICBF
WFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiXFx3IiwgIisiKSk7Ci0gIEVYUEVDVF9GQUxT
RShNYXRjaFJlZ2V4QXRIZWFkKCJcXFciLCAiYWIiKSk7Ci0KLSAgRVhQRUNUX1RSVUUoTWF0Y2hS
ZWdleEF0SGVhZCgiXFxzYSIsICJcbmFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRI
ZWFkKCJcXGQiLCAiMWEiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEF0SGVhZFRlc3QsIFdvcmtz
V2hlblJlZ2V4U3RhcnRzV2l0aFJlcGV0aXRpb24pIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVn
ZXhBdEhlYWQoIi4rYSIsICJhYmMiKSk7Ci0gIEVYUEVDVF9GQUxTRShNYXRjaFJlZ2V4QXRIZWFk
KCJhP2IiLCAiYWFiIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIi4qYSIs
ICJiYzEyLWFiIikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJhP2IiLCAiYiIp
KTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiYT9iIiwgImFiIikpOwotfQotCi1U
RVNUKE1hdGNoUmVnZXhBdEhlYWRUZXN0LAotICAgICBXb3Jrc1doZW5SZWdleFN0YXJ0c1dpdGhS
ZXBldGlvbk9mRXNjYXBlU2VxdWVuY2UpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhl
YWQoIlxcLithIiwgImFiYyIpKTsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBdEhlYWQoIlxc
cz9iIiwgIiAgYiIpKTsKLQotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXCgqYSIs
ICIoKCgoYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBdEhlYWQoIlxcXj9iIiwgIl5i
IikpOwotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QXRIZWFkKCJcXFxcP2IiLCAiYiIpKTsKLSAg
RVhQRUNUX1RSVUUoTWF0Y2hSZWdleEF0SGVhZCgiXFxcXD9iIiwgIlxcYiIpKTsKLX0KLQotVEVT
VChNYXRjaFJlZ2V4QXRIZWFkVGVzdCwgTWF0Y2hlc1NlcXVlbnRpYWxseSkgewotICBFWFBFQ1Rf
RkFMU0UoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWNhYmMiKSk7Ci0KLSAgRVhQRUNUX1RS
VUUoTWF0Y2hSZWdleEF0SGVhZCgiYWIuKmMiLCAiYWItZnNjIikpOwotfQotCi1URVNUKE1hdGNo
UmVnZXhBbnl3aGVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5TdHJpbmdJc051bGwpIHsKLSAgRVhQ
RUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiIiwgTlVMTCkpOwotfQotCi1URVNUKE1hdGNo
UmVnZXhBbnl3aGVyZVRlc3QsIFdvcmtzV2hlblJlZ2V4U3RhcnRzV2l0aENhcmV0KSB7Ci0gIEVY
UEVDVF9GQUxTRShNYXRjaFJlZ2V4QW55d2hlcmUoIl5hIiwgImJhIikpOwotICBFWFBFQ1RfRkFM
U0UoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIsICJhIikpOwotCi0gIEVYUEVDVF9UUlVFKE1hdGNo
UmVnZXhBbnl3aGVyZSgiXmEiLCAiYWIiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3
aGVyZSgiXiIsICJhYiIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFueXdoZXJlKCJeJCIs
ICIiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJuc0ZhbHNlV2hl
bk5vTWF0Y2gpIHsKLSAgRVhQRUNUX0ZBTFNFKE1hdGNoUmVnZXhBbnl3aGVyZSgiYSIsICJiY2Rl
MTIzIikpOwotICBFWFBFQ1RfRkFMU0UoTWF0Y2hSZWdleEFueXdoZXJlKCJhLithIiwgIi0tYWE4
ODg4ODg4OCIpKTsKLX0KLQotVEVTVChNYXRjaFJlZ2V4QW55d2hlcmVUZXN0LCBSZXR1cm5zVHJ1
ZVdoZW5NYXRjaGluZ1ByZWZpeCkgewotICBFWFBFQ1RfVFJVRShNYXRjaFJlZ2V4QW55d2hlcmUo
IlxcdysiLCAiYWIxXyAtIDUiKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgi
Lio9IiwgIj0iKSk7Ci0gIEVYUEVDVF9UUlVFKE1hdGNoUmVnZXhBbnl3aGVyZSgieC4qYWI/Lipi
YyIsICJ4YWFhYmMiKSk7Ci19Ci0KLVRFU1QoTWF0Y2hSZWdleEFueXdoZXJlVGVzdCwgUmV0dXJu
c1RydWVXaGVuTWF0Y2hpbmdOb25QcmVmaXgpIHsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdleEFu
eXdoZXJlKCJcXHcrIiwgIiQkJCBhYjFfIC0gNSIpKTsKLSAgRVhQRUNUX1RSVUUoTWF0Y2hSZWdl
eEFueXdoZXJlKCJcXC4rPSIsICI9ICAuLi49IikpOwotfQotCi0vLyBUZXN0cyBSRSdzIGltcGxp
Y2l0IGNvbnN0cnVjdG9ycy4KLVRFU1QoUkVUZXN0LCBJbXBsaWNpdENvbnN0cnVjdG9yV29ya3Mp
IHsKLSAgY29uc3QgUkUgZW1wdHkoIiIpOwotICBFWFBFQ1RfU1RSRVEoIiIsIGVtcHR5LnBhdHRl
cm4oKSk7Ci0KLSAgY29uc3QgUkUgc2ltcGxlKCJoZWxsbyIpOwotICBFWFBFQ1RfU1RSRVEoImhl
bGxvIiwgc2ltcGxlLnBhdHRlcm4oKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUkUncyBjb25zdHJ1
Y3RvcnMgcmVqZWN0IGludmFsaWQgcmVndWxhciBleHByZXNzaW9ucy4KLVRFU1QoUkVUZXN0LCBS
ZWplY3RzSW52YWxpZFJlZ2V4KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBj
b25zdCBSRSBub3JtYWwoTlVMTCk7Ci0gIH0sICJOVUxMIGlzIG5vdCBhIHZhbGlkIHNpbXBsZSBy
ZWd1bGFyIGV4cHJlc3Npb24iKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAg
Y29uc3QgUkUgbm9ybWFsKCIuKihcXHcrIik7Ci0gIH0sICInKCcgaXMgdW5zdXBwb3J0ZWQiKTsK
LQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgY29uc3QgUkUgaW52YWxpZCgiXj8i
KTsKLSAgfSwgIic/JyBjYW4gb25seSBmb2xsb3cgYSByZXBlYXRhYmxlIHRva2VuIik7Ci19Ci0K
LS8vIFRlc3RzIFJFOjpGdWxsTWF0Y2goKS4KLVRFU1QoUkVUZXN0LCBGdWxsTWF0Y2hXb3Jrcykg
ewotICBjb25zdCBSRSBlbXB0eSgiIik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0Y2goIiIs
IGVtcHR5KSk7Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJhIiwgZW1wdHkpKTsKLQot
ICBjb25zdCBSRSByZTEoImEiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYSIsIHJl
MSkpOwotCi0gIGNvbnN0IFJFIHJlKCJhLip6Iik7Ci0gIEVYUEVDVF9UUlVFKFJFOjpGdWxsTWF0
Y2goImF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OkZ1bGxNYXRjaCgiYXh5eiIsIHJlKSk7
Ci0gIEVYUEVDVF9GQUxTRShSRTo6RnVsbE1hdGNoKCJiYXoiLCByZSkpOwotICBFWFBFQ1RfRkFM
U0UoUkU6OkZ1bGxNYXRjaCgiYXp5IiwgcmUpKTsKLX0KLQotLy8gVGVzdHMgUkU6OlBhcnRpYWxN
YXRjaCgpLgotVEVTVChSRVRlc3QsIFBhcnRpYWxNYXRjaFdvcmtzKSB7Ci0gIGNvbnN0IFJFIGVt
cHR5KCIiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiIiwgZW1wdHkpKTsKLSAg
RVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYSIsIGVtcHR5KSk7Ci0KLSAgY29uc3QgUkUg
cmUoImEuKnoiKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRpYWxNYXRjaCgiYXoiLCByZSkpOwot
ICBFWFBFQ1RfVFJVRShSRTo6UGFydGlhbE1hdGNoKCJheHl6IiwgcmUpKTsKLSAgRVhQRUNUX1RS
VUUoUkU6OlBhcnRpYWxNYXRjaCgiYmF6IiwgcmUpKTsKLSAgRVhQRUNUX1RSVUUoUkU6OlBhcnRp
YWxNYXRjaCgiYXp5IiwgcmUpKTsKLSAgRVhQRUNUX0ZBTFNFKFJFOjpQYXJ0aWFsTWF0Y2goInp6
YSIsIHJlKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfVVNFU19QT1NJWF9SRQotCi0jaWYgIUdU
RVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3Rkb3V0
KSB7Ci0gIENhcHR1cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRvdXQsICJhYmMiKTsKLSAgRVhQ
RUNUX1NUUkVRKCJhYmMiLCBHZXRDYXB0dXJlZFN0ZG91dCgpLmNfc3RyKCkpOwotCi0gIENhcHR1
cmVTdGRvdXQoKTsKLSAgZnByaW50ZihzdGRvdXQsICJkZWYlY2doaSIsICdcMCcpOwotICBFWFBF
Q1RfRVEoOjpzdGQ6OnN0cmluZygiZGVmXDBnaGkiLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0
dXJlZFN0ZG91dCgpKSk7Ci19Ci0KLVRFU1QoQ2FwdHVyZVRlc3QsIENhcHR1cmVzU3RkZXJyKSB7
Ci0gIENhcHR1cmVTdGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIsICJqa2wiKTsKLSAgRVhQRUNU
X1NUUkVRKCJqa2wiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotCi0gIENhcHR1cmVT
dGRlcnIoKTsKLSAgZnByaW50ZihzdGRlcnIsICJqa2wlY21ubyIsICdcMCcpOwotICBFWFBFQ1Rf
RVEoOjpzdGQ6OnN0cmluZygiamtsXDBtbm8iLCA3KSwgOjpzdGQ6OnN0cmluZyhHZXRDYXB0dXJl
ZFN0ZGVycigpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgc3Rkb3V0IGFuZCBzdGRlcnIgY2FwdHVy
ZSBkb24ndCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLgotVEVTVChDYXB0dXJlVGVzdCwgQ2Fw
dHVyZXNTdGRvdXRBbmRTdGRlcnIpIHsKLSAgQ2FwdHVyZVN0ZG91dCgpOwotICBDYXB0dXJlU3Rk
ZXJyKCk7Ci0gIGZwcmludGYoc3Rkb3V0LCAicHFyIik7Ci0gIGZwcmludGYoc3RkZXJyLCAic3R1
Iik7Ci0gIEVYUEVDVF9TVFJFUSgicHFyIiwgR2V0Q2FwdHVyZWRTdGRvdXQoKS5jX3N0cigpKTsK
LSAgRVhQRUNUX1NUUkVRKCJzdHUiLCBHZXRDYXB0dXJlZFN0ZGVycigpLmNfc3RyKCkpOwotfQot
Ci1URVNUKENhcHR1cmVEZWF0aFRlc3QsIENhbm5vdFJlZW50ZXJTdGRvdXRDYXB0dXJlKSB7Ci0g
IENhcHR1cmVTdGRvdXQoKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChDYXB0dXJlU3Rk
b3V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIHN0ZG91dCBjYXB0
dXJlciBjYW4gZXhpc3QgYXQgYSB0aW1lIik7Ci0gIEdldENhcHR1cmVkU3Rkb3V0KCk7Ci0KLSAg
Ly8gV2UgY2Fubm90IHRlc3Qgc3RkZXJyIGNhcHR1cmluZyB1c2luZyBkZWF0aCB0ZXN0cyBhcyB0
aGV5IHVzZSBpdAotICAvLyB0aGVtc2VsdmVzLgotfQotCi0jZW5kaWYgIC8vICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9y
SW5pdGlhbGl6ZXNUb0RlZmF1bHRWYWx1ZXMpIHsKLSAgVGhyZWFkTG9jYWw8aW50PiB0MTsKLSAg
RVhQRUNUX0VRKDAsIHQxLmdldCgpKTsKLQotICBUaHJlYWRMb2NhbDx2b2lkKj4gdDI7Ci0gIEVY
UEVDVF9UUlVFKHQyLmdldCgpID09IE5VTEwpOwotfQotCi1URVNUKFRocmVhZExvY2FsVGVzdCwg
U2luZ2xlUGFyYW1Db25zdHJ1Y3RvckluaXRpYWxpemVzVG9QYXJhbSkgewotICBUaHJlYWRMb2Nh
bDxpbnQ+IHQxKDEyMyk7Ci0gIEVYUEVDVF9FUSgxMjMsIHQxLmdldCgpKTsKLQotICBpbnQgaSA9
IDA7Ci0gIFRocmVhZExvY2FsPGludCo+IHQyKCZpKTsKLSAgRVhQRUNUX0VRKCZpLCB0Mi5nZXQo
KSk7Ci19Ci0KLWNsYXNzIE5vRGVmYXVsdENvbnRydWN0b3IgewotIHB1YmxpYzoKLSAgZXhwbGlj
aXQgTm9EZWZhdWx0Q29udHJ1Y3Rvcihjb25zdCBjaGFyKikge30KLSAgTm9EZWZhdWx0Q29udHJ1
Y3Rvcihjb25zdCBOb0RlZmF1bHRDb250cnVjdG9yJikge30KLX07Ci0KLVRFU1QoVGhyZWFkTG9j
YWxUZXN0LCBWYWx1ZURlZmF1bHRDb250cnVjdG9ySXNOb3RSZXF1aXJlZEZvclBhcmFtVmVyc2lv
bikgewotICBUaHJlYWRMb2NhbDxOb0RlZmF1bHRDb250cnVjdG9yPiBiYXIoTm9EZWZhdWx0Q29u
dHJ1Y3RvcigiZm9vIikpOwotICBiYXIucG9pbnRlcigpOwotfQotCi1URVNUKFRocmVhZExvY2Fs
VGVzdCwgR2V0QW5kUG9pbnRlclJldHVyblNhbWVWYWx1ZSkgewotICBUaHJlYWRMb2NhbDxzdGQ6
OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZzsKLQotICBFWFBFQ1RfRVEodGhyZWFkX2xvY2Fs
X3N0cmluZy5wb2ludGVyKCksICYodGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKSkpOwotCi0gIC8v
IFZlcmlmaWVzIHRoZSBjb25kaXRpb24gc3RpbGwgaG9sZHMgYWZ0ZXIgY2FsbGluZyBzZXQuCi0g
IHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRocmVhZF9sb2Nh
bF9zdHJpbmcucG9pbnRlcigpLCAmKHRocmVhZF9sb2NhbF9zdHJpbmcuZ2V0KCkpKTsKLX0KLQot
VEVTVChUaHJlYWRMb2NhbFRlc3QsIFBvaW50ZXJBbmRDb25zdFBvaW50ZXJSZXR1cm5TYW1lVmFs
dWUpIHsKLSAgVGhyZWFkTG9jYWw8c3RkOjpzdHJpbmc+IHRocmVhZF9sb2NhbF9zdHJpbmc7Ci0g
IGNvbnN0IFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiYgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmlu
ZyA9Ci0gICAgICB0aHJlYWRfbG9jYWxfc3RyaW5nOwotCi0gIEVYUEVDVF9FUSh0aHJlYWRfbG9j
YWxfc3RyaW5nLnBvaW50ZXIoKSwgY29uc3RfdGhyZWFkX2xvY2FsX3N0cmluZy5wb2ludGVyKCkp
OwotCi0gIHRocmVhZF9sb2NhbF9zdHJpbmcuc2V0KCJmb28iKTsKLSAgRVhQRUNUX0VRKHRocmVh
ZF9sb2NhbF9zdHJpbmcucG9pbnRlcigpLCBjb25zdF90aHJlYWRfbG9jYWxfc3RyaW5nLnBvaW50
ZXIoKSk7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLXZvaWQgQWRkVHdvKGludCog
cGFyYW0pIHsgKnBhcmFtICs9IDI7IH0KLQotVEVTVChUaHJlYWRXaXRoUGFyYW1UZXN0LCBDb25z
dHJ1Y3RvckV4ZWN1dGVzVGhyZWFkRnVuYykgewotICBpbnQgaSA9IDQwOwotICBUaHJlYWRXaXRo
UGFyYW08aW50Kj4gdGhyZWFkKCZBZGRUd28sICZpLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsK
LSAgRVhQRUNUX0VRKDQyLCBpKTsKLX0KLQotVEVTVChNdXRleERlYXRoVGVzdCwgQXNzZXJ0SGVs
ZFNob3VsZEFzc2VydFdoZW5Ob3RMb2NrZWQpIHsKLSAgLy8gQXNzZXJ0SGVsZCgpIGlzIGZsYWt5
IG9ubHkgaW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzaW5nCi0gIC8v
IHRoZSBsb2NrLiBJbiB0aGlzIGNhc2UsIHRoZSB0ZXN0IGlzIHJvYnVzdC4KLSAgRVhQRUNUX0RF
QVRIX0lGX1NVUFBPUlRFRCh7Ci0gICAgTXV0ZXggbTsKLSAgICB7IE11dGV4TG9jayBsb2NrKCZt
KTsgfQotICAgIG0uQXNzZXJ0SGVsZCgpOwotICB9LAotICAidGhyZWFkIC4qaG9sZCIpOwotfQot
Ci1URVNUKE11dGV4VGVzdCwgQXNzZXJ0SGVsZFNob3VsZE5vdEFzc2VydFdoZW5Mb2NrZWQpIHsK
LSAgTXV0ZXggbTsKLSAgTXV0ZXhMb2NrIGxvY2soJm0pOwotICBtLkFzc2VydEhlbGQoKTsKLX0K
LQotY2xhc3MgQXRvbWljQ291bnRlcldpdGhNdXRleCB7Ci0gcHVibGljOgotICBleHBsaWNpdCBB
dG9taWNDb3VudGVyV2l0aE11dGV4KE11dGV4KiBtdXRleCkgOgotICAgIHZhbHVlXygwKSwgbXV0
ZXhfKG11dGV4KSwgcmFuZG9tXyg0Mikge30KLQotICB2b2lkIEluY3JlbWVudCgpIHsKLSAgICBN
dXRleExvY2sgbG9jayhtdXRleF8pOwotICAgIGludCB0ZW1wID0gdmFsdWVfOwotICAgIHsKLSAg
ICAgIC8vIFdlIG5lZWQgdG8gcHV0IHVwIGEgbWVtb3J5IGJhcnJpZXIgdG8gcHJldmVudCByZWFk
cyBhbmQgd3JpdGVzIHRvCi0gICAgICAvLyB2YWx1ZV8gcmVhcnJhbmdlZCB3aXRoIHRoZSBjYWxs
IHRvIFNsZWVwTWlsbGlzZWNvbmRzIHdoZW4gb2JzZXJ2ZWQKLSAgICAgIC8vIGZyb20gb3RoZXIg
dGhyZWFkcy4KLSNpZiBHVEVTVF9IQVNfUFRIUkVBRAotICAgICAgLy8gT24gUE9TSVgsIGxvY2tp
bmcgYSBtdXRleCBwdXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuICBXZSBjYW5ub3QgdXNlCi0gICAg
ICAvLyBNdXRleCBhbmQgTXV0ZXhMb2NrIGhlcmUgb3IgcmVseSBvbiB0aGVpciBtZW1vcnkgYmFy
cmllcgotICAgICAgLy8gZnVuY3Rpb25hbGl0eSBhcyB3ZSBhcmUgdGVzdGluZyB0aGVtIGhlcmUu
Ci0gICAgICBwdGhyZWFkX211dGV4X3QgbWVtb3J5X2JhcnJpZXJfbXV0ZXg7Ci0gICAgICBHVEVT
VF9DSEVDS19QT1NJWF9TVUNDRVNTXygKLSAgICAgICAgICBwdGhyZWFkX211dGV4X2luaXQoJm1l
bW9yeV9iYXJyaWVyX211dGV4LCBOVUxMKSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUND
RVNTXyhwdGhyZWFkX211dGV4X2xvY2soJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0KLSAgICAg
IFNsZWVwTWlsbGlzZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLQotICAgICAgR1RFU1Rf
Q0hFQ0tfUE9TSVhfU1VDQ0VTU18ocHRocmVhZF9tdXRleF91bmxvY2soJm1lbW9yeV9iYXJyaWVy
X211dGV4KSk7Ci0gICAgICBHVEVTVF9DSEVDS19QT1NJWF9TVUNDRVNTXyhwdGhyZWFkX211dGV4
X2Rlc3Ryb3koJm1lbW9yeV9iYXJyaWVyX211dGV4KSk7Ci0jZWxpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gICAgICAvLyBPbiBXaW5kb3dzLCBwZXJmb3JtaW5nIGFuIGludGVybG9ja2VkIGFjY2VzcyBw
dXRzIHVwIGEgbWVtb3J5IGJhcnJpZXIuCi0gICAgICB2b2xhdGlsZSBMT05HIGR1bW15ID0gMDsK
LSAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1lbnQoJmR1bW15KTsKLSAgICAgIFNsZWVwTWlsbGlz
ZWNvbmRzKHJhbmRvbV8uR2VuZXJhdGUoMzApKTsKLSAgICAgIDo6SW50ZXJsb2NrZWRJbmNyZW1l
bnQoJmR1bW15KTsKLSNlbHNlCi0jIGVycm9yICJNZW1vcnkgYmFycmllciBub3QgaW1wbGVtZW50
ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCi0jZW5kaWYgIC8vIEdURVNUX0hBU19QVEhSRUFECi0gICAg
fQotICAgIHZhbHVlXyA9IHRlbXAgKyAxOwotICB9Ci0gIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHZhbHVlXzsgfQotCi0gcHJpdmF0ZToKLSAgdm9sYXRpbGUgaW50IHZhbHVlXzsKLSAgTXV0
ZXgqIGNvbnN0IG11dGV4XzsgIC8vIFByb3RlY3RzIHZhbHVlXy4KLSAgUmFuZG9tICAgICAgIHJh
bmRvbV87Ci19OwotCi12b2lkIENvdW50aW5nVGhyZWFkRnVuYyhwYWlyPEF0b21pY0NvdW50ZXJX
aXRoTXV0ZXgqLCBpbnQ+IHBhcmFtKSB7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW0uc2Vj
b25kOyArK2kpCi0gICAgICBwYXJhbS5maXJzdC0+SW5jcmVtZW50KCk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgdGhlIG11dGV4IG9ubHkgbGV0cyBvbmUgdGhyZWFkIGF0IGEgdGltZSB0byBsb2NrIGl0
LgotVEVTVChNdXRleFRlc3QsIE9ubHlPbmVUaHJlYWRDYW5Mb2NrQXRBVGltZSkgewotICBNdXRl
eCBtdXRleDsKLSAgQXRvbWljQ291bnRlcldpdGhNdXRleCBsb2NrZWRfY291bnRlcigmbXV0ZXgp
OwotCi0gIHR5cGVkZWYgVGhyZWFkV2l0aFBhcmFtPHBhaXI8QXRvbWljQ291bnRlcldpdGhNdXRl
eCosIGludD4gPiBUaHJlYWRUeXBlOwotICBjb25zdCBpbnQga0N5Y2xlQ291bnQgPSAyMDsKLSAg
Y29uc3QgaW50IGtUaHJlYWRDb3VudCA9IDc7Ci0gIHNjb3BlZF9wdHI8VGhyZWFkVHlwZT4gY291
bnRpbmdfdGhyZWFkc1trVGhyZWFkQ291bnRdOwotICBOb3RpZmljYXRpb24gdGhyZWFkc19jYW5f
c3RhcnQ7Ci0gIC8vIENyZWF0ZXMgYW5kIHJ1bnMga1RocmVhZENvdW50IHRocmVhZHMgdGhhdCBp
bmNyZW1lbnQgbG9ja2VkX2NvdW50ZXIKLSAgLy8ga0N5Y2xlQ291bnQgdGltZXMgZWFjaC4KLSAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIGNvdW50aW5nX3Ro
cmVhZHNbaV0ucmVzZXQobmV3IFRocmVhZFR5cGUoJkNvdW50aW5nVGhyZWFkRnVuYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFpcigmbG9ja2Vk
X2NvdW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga0N5Y2xlQ291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnRocmVhZHNfY2FuX3N0YXJ0KSk7Ci0gIH0KLSAgdGhyZWFkc19jYW5fc3Rh
cnQuTm90aWZ5KCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyArK2kpCi0g
ICAgY291bnRpbmdfdGhyZWFkc1tpXS0+Sm9pbigpOwotCi0gIC8vIElmIHRoZSBtdXRleCBsZXRz
IG1vcmUgdGhhbiBvbmUgdGhyZWFkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciBhdCBhCi0gIC8v
IHRpbWUsIHRoZXkgYXJlIGxpa2VseSB0byBlbmNvdW50ZXIgYSByYWNlIGNvbmRpdGlvbiBhbmQg
aGF2ZSBzb21lCi0gIC8vIGluY3JlbWVudHMgb3ZlcndyaXR0ZW4sIHJlc3VsdGluZyBpbiB0aGUg
bG93ZXIgdGhlbiBleHBlY3RlZCBjb3VudGVyCi0gIC8vIHZhbHVlLgotICBFWFBFQ1RfRVEoa0N5
Y2xlQ291bnQgKiBrVGhyZWFkQ291bnQsIGxvY2tlZF9jb3VudGVyLnZhbHVlKCkpOwotfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUnVuRnJvbVRocmVhZCh2b2lkIChmdW5jKShUKSwg
VCBwYXJhbSkgewotICBUaHJlYWRXaXRoUGFyYW08VD4gdGhyZWFkKGZ1bmMsIHBhcmFtLCBOVUxM
KTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotdm9pZCBSZXRyaWV2ZVRocmVhZExvY2FsVmFsdWUo
Ci0gICAgcGFpcjxUaHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4qLCBzdGQ6OnN0cmluZyo+IHBhcmFt
KSB7Ci0gICpwYXJhbS5zZWNvbmQgPSBwYXJhbS5maXJzdC0+Z2V0KCk7Ci19Ci0KLVRFU1QoVGhy
ZWFkTG9jYWxUZXN0LCBQYXJhbWV0ZXJpemVkQ29uc3RydWN0b3JTZXRzRGVmYXVsdCkgewotICBU
aHJlYWRMb2NhbDxzdGQ6OnN0cmluZz4gdGhyZWFkX2xvY2FsX3N0cmluZygiZm9vIik7Ci0gIEVY
UEVDVF9TVFJFUSgiZm9vIiwgdGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKLQot
ICB0aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiYmFyIik7Ci0gIEVYUEVDVF9TVFJFUSgiYmFyIiwg
dGhyZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKLQotICBzdGQ6OnN0cmluZyByZXN1
bHQ7Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKLSAgICAgICAg
ICAgICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKLSAgRVhQ
RUNUX1NUUkVRKCJmb28iLCByZXN1bHQuY19zdHIoKSk7Ci19Ci0KLS8vIEtlZXBzIHRyYWNrIG9m
IHdoZXRoZXIgb2YgZGVzdHJ1Y3RvcnMgYmVpbmcgY2FsbGVkIG9uIGluc3RhbmNlcyBvZgotLy8g
RGVzdHJ1Y3RvclRyYWNrZXIuICBPbiBXaW5kb3dzLCB3YWl0cyBmb3IgdGhlIGRlc3RydWN0b3Ig
Y2FsbCByZXBvcnRzLgotY2xhc3MgRGVzdHJ1Y3RvckNhbGwgewotIHB1YmxpYzoKLSAgRGVzdHJ1
Y3RvckNhbGwoKSB7Ci0gICAgaW52b2tlZF8gPSBmYWxzZTsKLSNpZiBHVEVTVF9PU19XSU5ET1dT
Ci0gICAgd2FpdF9ldmVudF8uUmVzZXQoOjpDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwg
TlVMTCkpOwotICAgIEdURVNUX0NIRUNLXyh3YWl0X2V2ZW50Xy5HZXQoKSAhPSBOVUxMKTsKLSNl
bmRpZgotICB9Ci0KLSAgYm9vbCBDaGVja0Rlc3Ryb3llZCgpIGNvbnN0IHsKLSNpZiBHVEVTVF9P
U19XSU5ET1dTCi0gICAgaWYgKDo6V2FpdEZvclNpbmdsZU9iamVjdCh3YWl0X2V2ZW50Xy5HZXQo
KSwgMTAwMCkgIT0gV0FJVF9PQkpFQ1RfMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
ICAgIHJldHVybiBpbnZva2VkXzsKLSAgfQotCi0gIHZvaWQgUmVwb3J0RGVzdHJveWVkKCkgewot
ICAgIGludm9rZWRfID0gdHJ1ZTsKLSNpZiBHVEVTVF9PU19XSU5ET1dTCi0gICAgOjpTZXRFdmVu
dCh3YWl0X2V2ZW50Xy5HZXQoKSk7Ci0jZW5kaWYKLSAgfQotCi0gIHN0YXRpYyBzdGQ6OnZlY3Rv
cjxEZXN0cnVjdG9yQ2FsbCo+JiBMaXN0KCkgeyByZXR1cm4gKmxpc3RfOyB9Ci0KLSAgc3RhdGlj
IHZvaWQgUmVzZXRMaXN0KCkgewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdF8tPnNp
emUoKTsgKytpKSB7Ci0gICAgICBkZWxldGUgbGlzdF8tPmF0KGkpOwotICAgIH0KLSAgICBsaXN0
Xy0+Y2xlYXIoKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgYm9vbCBpbnZva2VkXzsKLSNpZiBHVEVT
VF9PU19XSU5ET1dTCi0gIEF1dG9IYW5kbGUgd2FpdF9ldmVudF87Ci0jZW5kaWYKLSAgc3RhdGlj
IHN0ZDo6dmVjdG9yPERlc3RydWN0b3JDYWxsKj4qIGNvbnN0IGxpc3RfOwotCi0gIEdURVNUX0RJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oRGVzdHJ1Y3RvckNhbGwpOwotfTsKLQotc3RkOjp2ZWN0
b3I8RGVzdHJ1Y3RvckNhbGwqPiogY29uc3QgRGVzdHJ1Y3RvckNhbGw6Omxpc3RfID0KLSAgICBu
ZXcgc3RkOjp2ZWN0b3I8RGVzdHJ1Y3RvckNhbGwqPjsKLQotLy8gRGVzdHJ1Y3RvclRyYWNrZXIg
a2VlcHMgdHJhY2sgb2Ygd2hldGhlciBpdHMgaW5zdGFuY2VzIGhhdmUgYmVlbgotLy8gZGVzdHJv
eWVkLgotY2xhc3MgRGVzdHJ1Y3RvclRyYWNrZXIgewotIHB1YmxpYzoKLSAgRGVzdHJ1Y3RvclRy
YWNrZXIoKSA6IGluZGV4XyhHZXROZXdJbmRleCgpKSB7fQotICBEZXN0cnVjdG9yVHJhY2tlcihj
b25zdCBEZXN0cnVjdG9yVHJhY2tlciYgLyogcmhzICovKQotICAgICAgOiBpbmRleF8oR2V0TmV3
SW5kZXgoKSkge30KLSAgfkRlc3RydWN0b3JUcmFja2VyKCkgewotICAgIC8vIFdlIG5ldmVyIGFj
Y2VzcyBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpIGNvbmN1cnJlbnRseSwgc28gd2UgZG9uJ3QgbmVl
ZAotICAgIC8vIHRvIHByb3RlY3QgdGhpcyBhY2NjZXNzIHdpdGggYSBtdXRleC4KLSAgICBEZXN0
cnVjdG9yQ2FsbDo6TGlzdCgpW2luZGV4X10tPlJlcG9ydERlc3Ryb3llZCgpOwotICB9Ci0KLSBw
cml2YXRlOgotICBzdGF0aWMgc2l6ZV90IEdldE5ld0luZGV4KCkgewotICAgIERlc3RydWN0b3JD
YWxsOjpMaXN0KCkucHVzaF9iYWNrKG5ldyBEZXN0cnVjdG9yQ2FsbCk7Ci0gICAgcmV0dXJuIERl
c3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpIC0gMTsKLSAgfQotICBjb25zdCBzaXplX3QgaW5k
ZXhfOwotCi0gIEdURVNUX0RJU0FMTE9XX0FTU0lHTl8oRGVzdHJ1Y3RvclRyYWNrZXIpOwotfTsK
LQotdHlwZWRlZiBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4qIFRocmVhZFBhcmFtOwot
Ci12b2lkIENhbGxUaHJlYWRMb2NhbEdldChUaHJlYWRQYXJhbSB0aHJlYWRfbG9jYWxfcGFyYW0p
IHsKLSAgdGhyZWFkX2xvY2FsX3BhcmFtLT5nZXQoKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB3aGVu
IGEgVGhyZWFkTG9jYWwgb2JqZWN0IGRpZXMgaW4gYSB0aHJlYWQsIGl0IGRlc3Ryb3lzCi0vLyB0
aGUgbWFuYWdlZCBvYmplY3QgZm9yIHRoYXQgdGhyZWFkLgotVEVTVChUaHJlYWRMb2NhbFRlc3Qs
IERlc3Ryb3lzTWFuYWdlZE9iamVjdEZvck93blRocmVhZFdoZW5EeWluZykgewotICBEZXN0cnVj
dG9yQ2FsbDo6UmVzZXRMaXN0KCk7Ci0KLSAgewotICAgIFRocmVhZExvY2FsPERlc3RydWN0b3JU
cmFja2VyPiB0aHJlYWRfbG9jYWxfdHJhY2tlcjsKLSAgICBBU1NFUlRfRVEoMFUsIERlc3RydWN0
b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsKLQotICAgIC8vIFRoaXMgY3JlYXRlcyBhbm90aGVyIERl
c3RydWN0b3JUcmFja2VyIG9iamVjdCBmb3IgdGhlIG1haW4gdGhyZWFkLgotICAgIHRocmVhZF9s
b2NhbF90cmFja2VyLmdldCgpOwotICAgIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxp
c3QoKS5zaXplKCkpOwotICAgIEFTU0VSVF9GQUxTRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBd
LT5DaGVja0Rlc3Ryb3llZCgpKTsKLSAgfQotCi0gIC8vIE5vdyB0aHJlYWRfbG9jYWxfdHJhY2tl
ciBoYXMgZGllZC4KLSAgQVNTRVJUX0VRKDFVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNpemUo
KSk7Ci0gIEVYUEVDVF9UUlVFKERlc3RydWN0b3JDYWxsOjpMaXN0KClbMF0tPkNoZWNrRGVzdHJv
eWVkKCkpOwotCi0gIERlc3RydWN0b3JDYWxsOjpSZXNldExpc3QoKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCB3aGVuIGEgdGhyZWFkIGV4aXRzLCB0aGUgdGhyZWFkLWxvY2FsIG9iamVjdCBmb3IgdGhh
dAotLy8gdGhyZWFkIGlzIGRlc3Ryb3llZC4KLVRFU1QoVGhyZWFkTG9jYWxUZXN0LCBEZXN0cm95
c01hbmFnZWRPYmplY3RBdFRocmVhZEV4aXQpIHsKLSAgRGVzdHJ1Y3RvckNhbGw6OlJlc2V0TGlz
dCgpOwotCi0gIHsKLSAgICBUaHJlYWRMb2NhbDxEZXN0cnVjdG9yVHJhY2tlcj4gdGhyZWFkX2xv
Y2FsX3RyYWNrZXI7Ci0gICAgQVNTRVJUX0VRKDBVLCBEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpLnNp
emUoKSk7Ci0KLSAgICAvLyBUaGlzIGNyZWF0ZXMgYW5vdGhlciBEZXN0cnVjdG9yVHJhY2tlciBv
YmplY3QgaW4gdGhlIG5ldyB0aHJlYWQuCi0gICAgVGhyZWFkV2l0aFBhcmFtPFRocmVhZFBhcmFt
PiB0aHJlYWQoCi0gICAgICAgICZDYWxsVGhyZWFkTG9jYWxHZXQsICZ0aHJlYWRfbG9jYWxfdHJh
Y2tlciwgTlVMTCk7Ci0gICAgdGhyZWFkLkpvaW4oKTsKLQotICAgIC8vIFRoZSB0aHJlYWQgaGFz
IGV4aXRlZCwgYW5kIHdlIHNob3VsZCBoYXZlIGEgRGVzdHJveWVkVHJhY2tlcgotICAgIC8vIGlu
c3RhbmNlIGNyZWF0ZWQgZm9yIGl0LiBCdXQgaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVzdHJveWVk
IHlldC4KLSAgICBBU1NFUlRfRVEoMVUsIERlc3RydWN0b3JDYWxsOjpMaXN0KCkuc2l6ZSgpKTsK
LSAgfQotCi0gIC8vIFRoZSB0aHJlYWQgaGFzIGV4aXRlZCBhbmQgdGhyZWFkX2xvY2FsX3RyYWNr
ZXIgaGFzIGRpZWQuCi0gIEFTU0VSVF9FUSgxVSwgRGVzdHJ1Y3RvckNhbGw6Okxpc3QoKS5zaXpl
KCkpOwotICBFWFBFQ1RfVFJVRShEZXN0cnVjdG9yQ2FsbDo6TGlzdCgpWzBdLT5DaGVja0Rlc3Ry
b3llZCgpKTsKLQotICBEZXN0cnVjdG9yQ2FsbDo6UmVzZXRMaXN0KCk7Ci19Ci0KLVRFU1QoVGhy
ZWFkTG9jYWxUZXN0LCBUaHJlYWRMb2NhbE11dGF0aW9uc0FmZmVjdE9ubHlDdXJyZW50VGhyZWFk
KSB7Ci0gIFRocmVhZExvY2FsPHN0ZDo6c3RyaW5nPiB0aHJlYWRfbG9jYWxfc3RyaW5nOwotICB0
aHJlYWRfbG9jYWxfc3RyaW5nLnNldCgiRm9vIik7Ci0gIEVYUEVDVF9TVFJFUSgiRm9vIiwgdGhy
ZWFkX2xvY2FsX3N0cmluZy5nZXQoKS5jX3N0cigpKTsKLQotICBzdGQ6OnN0cmluZyByZXN1bHQ7
Ci0gIFJ1bkZyb21UaHJlYWQoJlJldHJpZXZlVGhyZWFkTG9jYWxWYWx1ZSwKLSAgICAgICAgICAg
ICAgICBtYWtlX3BhaXIoJnRocmVhZF9sb2NhbF9zdHJpbmcsICZyZXN1bHQpKTsKLSAgRVhQRUNU
X1RSVUUocmVzdWx0LmVtcHR5KCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNB
RkUKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLVRFU1QoV2luZG93c1R5cGVzVGVzdCwgSEFORExF
SXNWb2lkU3RhcikgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8SEFORExFLCB2b2lkKj4oKTsKLX0K
LQotI2lmIEdURVNUX09TX1dJTkRPV1NfTUlOR1cgJiYgIWRlZmluZWQoX19NSU5HVzY0X1ZFUlNJ
T05fTUFKT1IpCi1URVNUKFdpbmRvd3NUeXBlc1Rlc3QsIF9DUklUSUNBTF9TRUNUSU9OSXNfQ1JJ
VElDQUxfU0VDVElPTikgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8Q1JJVElDQUxfU0VDVElPTiwg
X0NSSVRJQ0FMX1NFQ1RJT04+KCk7Ci19Ci0jZWxzZQotVEVTVChXaW5kb3dzVHlwZXNUZXN0LCBD
UklUSUNBTF9TRUNUSU9OSXNfUlRMX0NSSVRJQ0FMX1NFQ1RJT04pIHsKLSAgU3RhdGljQXNzZXJ0
VHlwZUVxPENSSVRJQ0FMX1NFQ1RJT04sIF9SVExfQ1JJVElDQUxfU0VDVElPTj4oKTsKLX0KLSNl
bmRpZgotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLQotfSAgLy8gbmFtZXNwYWNlIGlu
dGVybmFsCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdC1wcmludGVyc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC1wcmlu
dGVyc190ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGE4MzQxMGQxZjAu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXByaW50ZXJzX3Rlc3Qu
Y2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNjM3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0KLS8vIEdvb2dsZSBUZXN0IC0gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBG
cmFtZXdvcmsKLS8vCi0vLyBUaGlzIGZpbGUgdGVzdHMgdGhlIHVuaXZlcnNhbCB2YWx1ZSBwcmlu
dGVyLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QtcHJpbnRlcnMuaCIKLQotI2luY2x1ZGUgPGN0
eXBlLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGRlcXVlPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVk
ZSA8bWFwPgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUgPHN0
cmluZz4KLSNpbmNsdWRlIDx1dGlsaXR5PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0KLS8vIGhhc2hfbWFwIGFuZCBoYXNoX3NldCBhcmUgYXZhaWxhYmxl
IHVuZGVyIFZpc3VhbCBDKyssIG9yIG9uIExpbnV4LgotI2lmIEdURVNUX0hBU19IQVNIX01BUF8K
LSMgaW5jbHVkZSA8aGFzaF9tYXA+ICAgICAgICAgICAgLy8gTk9MSU5UCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19IQVNIX01BUF8KLSNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCi0jIGluY2x1ZGUgPGhh
c2hfc2V0PiAgICAgICAgICAgIC8vIE5PTElOVAotI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9T
RVRfCi0KLSNpZiBHVEVTVF9IQVNfU1REX0ZPUldBUkRfTElTVF8KLSMgaW5jbHVkZSA8Zm9yd2Fy
ZF9saXN0PiAvLyBOT0xJTlQKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1Rf
Ci0KLS8vIFNvbWUgdXNlci1kZWZpbmVkIHR5cGVzIGZvciB0ZXN0aW5nIHRoZSB1bml2ZXJzYWwg
dmFsdWUgcHJpbnRlci4KLQotLy8gQW4gYW5vbnltb3VzIGVudW0gdHlwZS4KLWVudW0gQW5vbnlt
b3VzRW51bSB7Ci0gIGtBRTEgPSAtMSwKLSAga0FFMiA9IDEKLX07Ci0KLS8vIEFuIGVudW0gd2l0
aG91dCBhIHVzZXItZGVmaW5lZCBwcmludGVyLgotZW51bSBFbnVtV2l0aG91dFByaW50ZXIgewot
ICBrRVdQMSA9IC0yLAotICBrRVdQMiA9IDQyCi19OwotCi0vLyBBbiBlbnVtIHdpdGggYSA8PCBv
cGVyYXRvci4KLWVudW0gRW51bVdpdGhTdHJlYW1pbmcgewotICBrRVdTMSA9IDEwCi19OwotCi1z
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgRW51bVdpdGhTdHJlYW1p
bmcgZSkgewotICByZXR1cm4gb3MgPDwgKGUgPT0ga0VXUzEgPyAia0VXUzEiIDogImludmFsaWQi
KTsKLX0KLQotLy8gQW4gZW51bSB3aXRoIGEgUHJpbnRUbygpIGZ1bmN0aW9uLgotZW51bSBFbnVt
V2l0aFByaW50VG8gewotICBrRVdQVDEgPSAxCi19OwotCi12b2lkIFByaW50VG8oRW51bVdpdGhQ
cmludFRvIGUsIHN0ZDo6b3N0cmVhbSogb3MpIHsKLSAgKm9zIDw8IChlID09IGtFV1BUMSA/ICJr
RVdQVDEiIDogImludmFsaWQiKTsKLX0KLQotLy8gQSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRp
YmxlIHRvIEJpZ2dlc3RJbnQuCi1jbGFzcyBCaWdnZXN0SW50Q29udmVydGlibGUgewotIHB1Ymxp
YzoKLSAgb3BlcmF0b3IgOjp0ZXN0aW5nOjppbnRlcm5hbDo6QmlnZ2VzdEludCgpIGNvbnN0IHsg
cmV0dXJuIDQyOyB9Ci19OwotCi0vLyBBIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSBjbGFzcyB0
ZW1wbGF0ZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFsIHsKLSBwdWJsaWM6Ci0gIFVucHJpbnRh
YmxlVGVtcGxhdGVJbkdsb2JhbCgpIDogdmFsdWVfKCkge30KLSBwcml2YXRlOgotICBUIHZhbHVl
XzsKLX07Ci0KLS8vIEEgdXNlci1kZWZpbmVkIHN0cmVhbWFibGUgdHlwZSBpbiB0aGUgZ2xvYmFs
IG5hbWVzcGFjZS4KLWNsYXNzIFN0cmVhbWFibGVJbkdsb2JhbCB7Ci0gcHVibGljOgotICB2aXJ0
dWFsIH5TdHJlYW1hYmxlSW5HbG9iYWwoKSB7fQotfTsKLQotaW5saW5lIHZvaWQgb3BlcmF0b3I8
PCg6OnN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmVhbWFibGVJbkdsb2JhbCYgLyogeCAqLykg
ewotICBvcyA8PCAiU3RyZWFtYWJsZUluR2xvYmFsIjsKLX0KLQotdm9pZCBvcGVyYXRvcjw8KDo6
c3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RyZWFtYWJsZUluR2xvYmFsKiAvKiB4ICovKSB7Ci0g
IG9zIDw8ICJTdHJlYW1hYmxlSW5HbG9iYWwqIjsKLX0KLQotbmFtZXNwYWNlIGZvbyB7Ci0KLS8v
IEEgdXNlci1kZWZpbmVkIHVucHJpbnRhYmxlIHR5cGUgaW4gYSB1c2VyIG5hbWVzcGFjZS4KLWNs
YXNzIFVucHJpbnRhYmxlSW5Gb28gewotIHB1YmxpYzoKLSAgVW5wcmludGFibGVJbkZvbygpIDog
el8oMCkgeyBtZW1jcHkoeHlfLCAiXHhFRlx4MTJceDBceDBceDM0XHhBQlx4MFx4MCIsIDgpOyB9
Ci0gIGRvdWJsZSB6KCkgY29uc3QgeyByZXR1cm4gel87IH0KLSBwcml2YXRlOgotICBjaGFyIHh5
X1s4XTsKLSAgZG91YmxlIHpfOwotfTsKLQotLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxlIHR5
cGUgaW4gYSB1c2VyLWNob3NlbiBuYW1lc3BhY2UuCi1zdHJ1Y3QgUHJpbnRhYmxlVmlhUHJpbnRU
byB7Ci0gIFByaW50YWJsZVZpYVByaW50VG8oKSA6IHZhbHVlKCkge30KLSAgaW50IHZhbHVlOwot
fTsKLQotdm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG8mIHgsIDo6c3RkOjpv
c3RyZWFtKiBvcykgewotICAqb3MgPDwgIlByaW50YWJsZVZpYVByaW50VG86ICIgPDwgeC52YWx1
ZTsKLX0KLQotLy8gQSB0eXBlIHdpdGggYSB1c2VyLWRlZmluZWQgPDwgZm9yIHByaW50aW5nIGl0
cyBwb2ludGVyLgotc3RydWN0IFBvaW50ZXJQcmludGFibGUgewotfTsKLQotOjpzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoOjpzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUG9pbnRlclByaW50YWJsZSogLyogeCAqLykgewotICByZXR1cm4gb3MgPDwg
IlBvaW50ZXJQcmludGFibGUqIjsKLX0KLQotLy8gQSB1c2VyLWRlZmluZWQgcHJpbnRhYmxlIGNs
YXNzIHRlbXBsYXRlIGluIGEgdXNlci1jaG9zZW4gbmFtZXNwYWNlLgotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGUgewotIHB1YmxpYzoKLSAg
ZXhwbGljaXQgUHJpbnRhYmxlVmlhUHJpbnRUb1RlbXBsYXRlKGNvbnN0IFQmIGFfdmFsdWUpIDog
dmFsdWVfKGFfdmFsdWUpIHt9Ci0KLSAgY29uc3QgVCYgdmFsdWUoKSBjb25zdCB7IHJldHVybiB2
YWx1ZV87IH0KLSBwcml2YXRlOgotICBUIHZhbHVlXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotdm9pZCBQcmludFRvKGNvbnN0IFByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0ZTxUPiYg
eCwgOjpzdGQ6Om9zdHJlYW0qIG9zKSB7Ci0gICpvcyA8PCAiUHJpbnRhYmxlVmlhUHJpbnRUb1Rl
bXBsYXRlOiAiIDw8IHgudmFsdWUoKTsKLX0KLQotLy8gQSB1c2VyLWRlZmluZWQgc3RyZWFtYWJs
ZSBjbGFzcyB0ZW1wbGF0ZSBpbiBhIHVzZXIgbmFtZXNwYWNlLgotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbyB7Ci0gcHVibGljOgotICBTdHJlYW1h
YmxlVGVtcGxhdGVJbkZvbygpIDogdmFsdWVfKCkge30KLQotICBjb25zdCBUJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotIHByaXZhdGU6Ci0gIFQgdmFsdWVfOwotfTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoOjpz
dGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmVhbWFibGVUZW1wbGF0ZUluRm9vPFQ+JiB4KSB7Ci0gIHJldHVybiBvcyA8PCAiU3RyZWFt
YWJsZVRlbXBsYXRlSW5Gb286ICIgPDwgeC52YWx1ZSgpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
Zm9vCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLW5hbWVzcGFjZSBndGVzdF9wcmludGVyc190ZXN0
IHsKLQotdXNpbmcgOjpzdGQ6OmRlcXVlOwotdXNpbmcgOjpzdGQ6Omxpc3Q7Ci11c2luZyA6OnN0
ZDo6bWFrZV9wYWlyOwotdXNpbmcgOjpzdGQ6Om1hcDsKLXVzaW5nIDo6c3RkOjptdWx0aW1hcDsK
LXVzaW5nIDo6c3RkOjptdWx0aXNldDsKLXVzaW5nIDo6c3RkOjpwYWlyOwotdXNpbmcgOjpzdGQ6
OnNldDsKLXVzaW5nIDo6c3RkOjp2ZWN0b3I7Ci11c2luZyA6OnRlc3Rpbmc6OlByaW50VG9TdHJp
bmc7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVy
ZU1lc3NhZ2U7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpJbXBsaWNpdENhc3RfOwotdXNp
bmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6TmF0aXZlQXJyYXk7Ci11c2luZyA6OnRlc3Rpbmc6Omlu
dGVybmFsOjpSRTsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OlJlbGF0aW9uVG9Tb3VyY2VS
ZWZlcmVuY2U7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpTdHJpbmdzOwotdXNpbmcgOjp0
ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVyc2FsUHJpbnQ7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVy
bmFsOjpVbml2ZXJzYWxQcmludGVyOwotdXNpbmcgOjp0ZXN0aW5nOjppbnRlcm5hbDo6VW5pdmVy
c2FsVGVyc2VQcmludDsKLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFIHx8IEdURVNUX0hBU19TVERf
VFVQTEVfCi11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3M7Ci0jZW5kaWYKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnN0
cmluZzsKLQotI2lmIEdURVNUX0hBU19IQVNIX01BUF8KLS8vIFRoZSBoYXNoXyogY2xhc3NlcyBh
cmUgbm90IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZC4gIFNUTHBvcnQKLS8vIGRlZmluZXMgdGhl
bSBpbiBuYW1lc3BhY2Ugc3RkLiAgTVNWQyBkZWZpbmVzIHRoZW0gaW4gOjpzdGRleHQuICBHQ0MK
LS8vIGRlZmluZXMgdGhlbSBpbiA6Oi4KLSNpZmRlZiBfU1RMUF9IQVNIX01BUCAgLy8gV2UgZ290
IDxoYXNoX21hcD4gZnJvbSBTVExwb3J0LgotdXNpbmcgOjpzdGQ6Omhhc2hfbWFwOwotdXNpbmcg
OjpzdGQ6Omhhc2hfc2V0OwotdXNpbmcgOjpzdGQ6Omhhc2hfbXVsdGltYXA7Ci11c2luZyA6OnN0
ZDo6aGFzaF9tdWx0aXNldDsKLSNlbGlmIF9NU0NfVkVSCi11c2luZyA6OnN0ZGV4dDo6aGFzaF9t
YXA7Ci11c2luZyA6OnN0ZGV4dDo6aGFzaF9zZXQ7Ci11c2luZyA6OnN0ZGV4dDo6aGFzaF9tdWx0
aW1hcDsKLXVzaW5nIDo6c3RkZXh0OjpoYXNoX211bHRpc2V0OwotI2VuZGlmCi0jZW5kaWYKLQot
Ly8gUHJpbnRzIGEgdmFsdWUgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIHVuaXZlcnNhbCB2YWx1ZSBw
cmludGVyLiAgVGhpcwotLy8gaXMgYSBoZWxwZXIgZm9yIHRlc3RpbmcgVW5pdmVyc2FsUHJpbnRl
cjxUPjo6UHJpbnQoKSBmb3IgdmFyaW91cyB0eXBlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RkOjpzdHJpbmcgUHJpbnQoY29uc3QgVCYgdmFsdWUpIHsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczsKLSAgVW5pdmVyc2FsUHJpbnRlcjxUPjo6UHJpbnQodmFsdWUsICZzcyk7Ci0gIHJldHVy
biBzcy5zdHIoKTsKLX0KLQotLy8gUHJpbnRzIGEgdmFsdWUgcGFzc2VkIGJ5IHJlZmVyZW5jZSB0
byBhIHN0cmluZywgdXNpbmcgdGhlIHVuaXZlcnNhbAotLy8gdmFsdWUgcHJpbnRlci4gIFRoaXMg
aXMgYSBoZWxwZXIgZm9yIHRlc3RpbmcKLS8vIFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCgp
IGZvciB2YXJpb3VzIHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnN0cmluZyBQ
cmludEJ5UmVmKGNvbnN0IFQmIHZhbHVlKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0g
IFVuaXZlcnNhbFByaW50ZXI8VCY+OjpQcmludCh2YWx1ZSwgJnNzKTsKLSAgcmV0dXJuIHNzLnN0
cigpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyB2YXJpb3VzIGVudW0gdHlwZXMuCi0KLVRFU1Qo
UHJpbnRFbnVtVGVzdCwgQW5vbnltb3VzRW51bSkgewotICBFWFBFQ1RfRVEoIi0xIiwgUHJpbnQo
a0FFMSkpOwotICBFWFBFQ1RfRVEoIjEiLCBQcmludChrQUUyKSk7Ci19Ci0KLVRFU1QoUHJpbnRF
bnVtVGVzdCwgRW51bVdpdGhvdXRQcmludGVyKSB7Ci0gIEVYUEVDVF9FUSgiLTIiLCBQcmludChr
RVdQMSkpOwotICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoa0VXUDIpKTsKLX0KLQotVEVTVChQcmlu
dEVudW1UZXN0LCBFbnVtV2l0aFN0cmVhbWluZykgewotICBFWFBFQ1RfRVEoImtFV1MxIiwgUHJp
bnQoa0VXUzEpKTsKLSAgRVhQRUNUX0VRKCJpbnZhbGlkIiwgUHJpbnQoc3RhdGljX2Nhc3Q8RW51
bVdpdGhTdHJlYW1pbmc+KDApKSk7Ci19Ci0KLVRFU1QoUHJpbnRFbnVtVGVzdCwgRW51bVdpdGhQ
cmludFRvKSB7Ci0gIEVYUEVDVF9FUSgia0VXUFQxIiwgUHJpbnQoa0VXUFQxKSk7Ci0gIEVYUEVD
VF9FUSgiaW52YWxpZCIsIFByaW50KHN0YXRpY19jYXN0PEVudW1XaXRoUHJpbnRUbz4oMCkpKTsK
LX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgYSBjbGFzcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRv
IEJpZ2dlc3RJbnQuCi0KLVRFU1QoUHJpbnRDbGFzc1Rlc3QsIEJpZ2dlc3RJbnRDb252ZXJ0aWJs
ZSkgewotICBFWFBFQ1RfRVEoIjQyIiwgUHJpbnQoQmlnZ2VzdEludENvbnZlcnRpYmxlKCkpKTsK
LX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgdmFyaW91cyBjaGFyIHR5cGVzLgotCi0vLyBjaGFyLgot
VEVTVChQcmludENoYXJUZXN0LCBQbGFpbkNoYXIpIHsKLSAgRVhQRUNUX0VRKCInXFwwJyIsIFBy
aW50KCdcMCcpKTsKLSAgRVhQRUNUX0VRKCInXFwnJyAoMzksIDB4MjcpIiwgUHJpbnQoJ1wnJykp
OwotICBFWFBFQ1RfRVEoIidcIicgKDM0LCAweDIyKSIsIFByaW50KCciJykpOwotICBFWFBFQ1Rf
RVEoIic/JyAoNjMsIDB4M0YpIiwgUHJpbnQoJz8nKSk7Ci0gIEVYUEVDVF9FUSgiJ1xcXFwnICg5
MiwgMHg1QykiLCBQcmludCgnXFwnKSk7Ci0gIEVYUEVDVF9FUSgiJ1xcYScgKDcpIiwgUHJpbnQo
J1xhJykpOwotICBFWFBFQ1RfRVEoIidcXGInICg4KSIsIFByaW50KCdcYicpKTsKLSAgRVhQRUNU
X0VRKCInXFxmJyAoMTIsIDB4QykiLCBQcmludCgnXGYnKSk7Ci0gIEVYUEVDVF9FUSgiJ1xcbicg
KDEwLCAweEEpIiwgUHJpbnQoJ1xuJykpOwotICBFWFBFQ1RfRVEoIidcXHInICgxMywgMHhEKSIs
IFByaW50KCdccicpKTsKLSAgRVhQRUNUX0VRKCInXFx0JyAoOSkiLCBQcmludCgnXHQnKSk7Ci0g
IEVYUEVDVF9FUSgiJ1xcdicgKDExLCAweEIpIiwgUHJpbnQoJ1x2JykpOwotICBFWFBFQ1RfRVEo
IidcXHg3RicgKDEyNykiLCBQcmludCgnXHg3RicpKTsKLSAgRVhQRUNUX0VRKCInXFx4RkYnICgy
NTUpIiwgUHJpbnQoJ1x4RkYnKSk7Ci0gIEVYUEVDVF9FUSgiJyAnICgzMiwgMHgyMCkiLCBQcmlu
dCgnICcpKTsKLSAgRVhQRUNUX0VRKCInYScgKDk3LCAweDYxKSIsIFByaW50KCdhJykpOwotfQot
Ci0vLyBzaWduZWQgY2hhci4KLVRFU1QoUHJpbnRDaGFyVGVzdCwgU2lnbmVkQ2hhcikgewotICBF
WFBFQ1RfRVEoIidcXDAnIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KCdcMCcpKSk7
Ci0gIEVYUEVDVF9FUSgiJ1xceENFJyAoLTUwKSIsCi0gICAgICAgICAgICBQcmludChzdGF0aWNf
Y2FzdDxzaWduZWQgY2hhcj4oLTUwKSkpOwotfQotCi0vLyB1bnNpZ25lZCBjaGFyLgotVEVTVChQ
cmludENoYXJUZXN0LCBVbnNpZ25lZENoYXIpIHsKLSAgRVhQRUNUX0VRKCInXFwwJyIsIFByaW50
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdcMCcpKSk7Ci0gIEVYUEVDVF9FUSgiJ2InICg5
OCwgMHg2MikiLAotICAgICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
J2InKSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyBvdGhlciBzaW1wbGUsIGJ1aWx0LWluIHR5
cGVzLgotCi0vLyBib29sLgotVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwgQm9vbCkgewotICBF
WFBFQ1RfRVEoImZhbHNlIiwgUHJpbnQoZmFsc2UpKTsKLSAgRVhQRUNUX0VRKCJ0cnVlIiwgUHJp
bnQodHJ1ZSkpOwotfQotCi0vLyB3Y2hhcl90LgotVEVTVChQcmludEJ1aWx0SW5UeXBlVGVzdCwg
V2NoYXJfdCkgewotICBFWFBFQ1RfRVEoIkwnXFwwJyIsIFByaW50KEwnXDAnKSk7Ci0gIEVYUEVD
VF9FUSgiTCdcXCcnICgzOSwgMHgyNykiLCBQcmludChMJ1wnJykpOwotICBFWFBFQ1RfRVEoIkwn
XCInICgzNCwgMHgyMikiLCBQcmludChMJyInKSk7Ci0gIEVYUEVDVF9FUSgiTCc/JyAoNjMsIDB4
M0YpIiwgUHJpbnQoTCc/JykpOwotICBFWFBFQ1RfRVEoIkwnXFxcXCcgKDkyLCAweDVDKSIsIFBy
aW50KEwnXFwnKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXGEnICg3KSIsIFByaW50KEwnXGEnKSk7Ci0g
IEVYUEVDVF9FUSgiTCdcXGInICg4KSIsIFByaW50KEwnXGInKSk7Ci0gIEVYUEVDVF9FUSgiTCdc
XGYnICgxMiwgMHhDKSIsIFByaW50KEwnXGYnKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXG4nICgxMCwg
MHhBKSIsIFByaW50KEwnXG4nKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXHInICgxMywgMHhEKSIsIFBy
aW50KEwnXHInKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXHQnICg5KSIsIFByaW50KEwnXHQnKSk7Ci0g
IEVYUEVDVF9FUSgiTCdcXHYnICgxMSwgMHhCKSIsIFByaW50KEwnXHYnKSk7Ci0gIEVYUEVDVF9F
USgiTCdcXHg3RicgKDEyNykiLCBQcmludChMJ1x4N0YnKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXHhG
RicgKDI1NSkiLCBQcmludChMJ1x4RkYnKSk7Ci0gIEVYUEVDVF9FUSgiTCcgJyAoMzIsIDB4MjAp
IiwgUHJpbnQoTCcgJykpOwotICBFWFBFQ1RfRVEoIkwnYScgKDk3LCAweDYxKSIsIFByaW50KEwn
YScpKTsKLSAgRVhQRUNUX0VRKCJMJ1xceDU3NicgKDEzOTgpIiwgUHJpbnQoc3RhdGljX2Nhc3Q8
d2NoYXJfdD4oMHg1NzYpKSk7Ci0gIEVYUEVDVF9FUSgiTCdcXHhDNzREJyAoNTEwMjEpIiwgUHJp
bnQoc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMHhDNzREKSkpOwotfQotCi0vLyBUZXN0IHRoYXQgSW50
NjQgcHJvdmlkZXMgbW9yZSBzdG9yYWdlIHRoYW4gd2NoYXJfdC4KLVRFU1QoUHJpbnRUeXBlU2l6
ZVRlc3QsIFdjaGFyX3QpIHsKLSAgRVhQRUNUX0xUKHNpemVvZih3Y2hhcl90KSwgc2l6ZW9mKHRl
c3Rpbmc6OmludGVybmFsOjpJbnQ2NCkpOwotfQotCi0vLyBWYXJpb3VzIGludGVnZXIgdHlwZXMu
Ci1URVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBJbnRlZ2VyKSB7Ci0gIEVYUEVDVF9FUSgiJ1xc
eEZGJyAoMjU1KSIsIFByaW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDI1NSkpKTsgIC8v
IHVpbnQ4Ci0gIEVYUEVDVF9FUSgiJ1xceDgwJyAoLTEyOCkiLCBQcmludChzdGF0aWNfY2FzdDxz
aWduZWQgY2hhcj4oLTEyOCkpKTsgIC8vIGludDgKLSAgRVhQRUNUX0VRKCI2NTUzNSIsIFByaW50
KFVTSFJUX01BWCkpOyAgLy8gdWludDE2Ci0gIEVYUEVDVF9FUSgiLTMyNzY4IiwgUHJpbnQoU0hS
VF9NSU4pKTsgIC8vIGludDE2Ci0gIEVYUEVDVF9FUSgiNDI5NDk2NzI5NSIsIFByaW50KFVJTlRf
TUFYKSk7ICAvLyB1aW50MzIKLSAgRVhQRUNUX0VRKCItMjE0NzQ4MzY0OCIsIFByaW50KElOVF9N
SU4pKTsgIC8vIGludDMyCi0gIEVYUEVDVF9FUSgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiLAotICAg
ICAgICAgICAgUHJpbnQoc3RhdGljX2Nhc3Q8dGVzdGluZzo6aW50ZXJuYWw6OlVJbnQ2ND4oLTEp
KSk7ICAvLyB1aW50NjQKLSAgRVhQRUNUX0VRKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIsCi0gICAg
ICAgICAgICBQcmludChzdGF0aWNfY2FzdDx0ZXN0aW5nOjppbnRlcm5hbDo6SW50NjQ+KDEpIDw8
IDYzKSk7ICAvLyBpbnQ2NAotfQotCi0vLyBTaXplIHR5cGVzLgotVEVTVChQcmludEJ1aWx0SW5U
eXBlVGVzdCwgU2l6ZV90KSB7Ci0gIEVYUEVDVF9FUSgiMSIsIFByaW50KHNpemVvZignYScpKSk7
ICAvLyBzaXplX3QuCi0jaWYgIUdURVNUX09TX1dJTkRPV1MKLSAgLy8gV2luZG93cyBoYXMgbm8g
c3NpemVfdCB0eXBlLgotICBFWFBFQ1RfRVEoIi0yIiwgUHJpbnQoc3RhdGljX2Nhc3Q8c3NpemVf
dD4oLTIpKSk7ICAvLyBzc2l6ZV90LgotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9XUwotfQot
Ci0vLyBGbG9hdGluZy1wb2ludHMuCi1URVNUKFByaW50QnVpbHRJblR5cGVUZXN0LCBGbG9hdGlu
Z1BvaW50cykgewotICBFWFBFQ1RfRVEoIjEuNSIsIFByaW50KDEuNWYpKTsgICAvLyBmbG9hdAot
ICBFWFBFQ1RfRVEoIi0yLjUiLCBQcmludCgtMi41KSk7ICAvLyBkb3VibGUKLX0KLQotLy8gU2lu
Y2UgOjpzdGQ6OnN0cmluZ3N0cmVhbTo6b3BlcmF0b3I8PChjb25zdCB2b2lkICopIGZvcm1hdHMg
dGhlIHBvaW50ZXIKLS8vIG91dHB1dCBkaWZmZXJlbnRseSB3aXRoIGRpZmZlcmVudCBjb21waWxl
cnMsIHdlIGhhdmUgdG8gY3JlYXRlIHRoZSBleHBlY3RlZAotLy8gb3V0cHV0IGZpcnN0IGFuZCB1
c2UgaXQgYXMgb3VyIGV4cGVjdGF0aW9uLgotc3RhdGljIHN0ZDo6c3RyaW5nIFByaW50UG9pbnRl
cihjb25zdCB2b2lkKiBwKSB7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gZXhwZWN0ZWRfcmVzdWx0
X3N0cmVhbTsKLSAgZXhwZWN0ZWRfcmVzdWx0X3N0cmVhbSA8PCBwOwotICByZXR1cm4gZXhwZWN0
ZWRfcmVzdWx0X3N0cmVhbS5zdHIoKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgQyBzdHJpbmdz
LgotCi0vLyBjb25zdCBjaGFyKi4KLVRFU1QoUHJpbnRDU3RyaW5nVGVzdCwgQ29uc3QpIHsKLSAg
Y29uc3QgY2hhciogcCA9ICJXb3JsZCI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAi
IHBvaW50aW5nIHRvIFwiV29ybGRcIiIsIFByaW50KHApKTsKLX0KLQotLy8gY2hhciouCi1URVNU
KFByaW50Q1N0cmluZ1Rlc3QsIE5vbkNvbnN0KSB7Ci0gIGNoYXIgcFtdID0gIkhpIjsKLSAgRVhQ
RUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gXCJIaVwiIiwKLSAgICAgICAg
ICAgIFByaW50KHN0YXRpY19jYXN0PGNoYXIqPihwKSkpOwotfQotCi0vLyBOVUxMIEMgc3RyaW5n
LgotVEVTVChQcmludENTdHJpbmdUZXN0LCBOdWxsKSB7Ci0gIGNvbnN0IGNoYXIqIHAgPSBOVUxM
OwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQyBz
dHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgotVEVTVChQcmludENTdHJpbmdUZXN0LCBFc2Nh
cGVzUHJvcGVybHkpIHsKLSAgY29uc3QgY2hhciogcCA9ICInXCI/XFxcYVxiXGZcblxyXHRcdlx4
N0ZceEZGIGEiOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApICsgIiBwb2ludGluZyB0byBc
IidcXFwiP1xcXFxcXGFcXGJcXGYiCi0gICAgICAgICAgICAiXFxuXFxyXFx0XFx2XFx4N0ZcXHhG
RiBhXCIiLAotICAgICAgICAgICAgUHJpbnQocCkpOwotfQotCi0vLyBNU1ZDIGNvbXBpbGVyIGNh
biBiZSBjb25maWd1cmVkIHRvIGRlZmluZSB3aGFyX3QgYXMgYSB0eXBlZGVmCi0vLyBvZiB1bnNp
Z25lZCBzaG9ydC4gRGVmaW5pbmcgYW4gb3ZlcmxvYWQgZm9yIGNvbnN0IHdjaGFyX3QqIGluIHRo
YXQgY2FzZQotLy8gd291bGQgY2F1c2UgcG9pbnRlcnMgdG8gdW5zaWduZWQgc2hvcnRzIGJlIHBy
aW50ZWQgYXMgd2lkZSBzdHJpbmdzLAotLy8gcG9zc2libHkgYWNjZXNzaW5nIG1vcmUgbWVtb3J5
IHRoYW4gaW50ZW5kZWQgYW5kIGNhdXNpbmcgaW52YWxpZAotLy8gbWVtb3J5IGFjY2Vzc2VzLiBN
U1ZDIGRlZmluZXMgX05BVElWRV9XQ0hBUl9UX0RFRklORUQgc3ltYm9sIHdoZW4KLS8vIHdjaGFy
X3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYXRpdmUgdHlwZS4KLSNpZiAhZGVmaW5lZChfTVNDX1ZF
UikgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1RfREVGSU5FRCkKLQotLy8gY29uc3Qgd2NoYXJf
dCouCi1URVNUKFByaW50V2lkZUNTdHJpbmdUZXN0LCBDb25zdCkgewotICBjb25zdCB3Y2hhcl90
KiBwID0gTCJXb3JsZCI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIocCkgKyAiIHBvaW50aW5n
IHRvIExcIldvcmxkXCIiLCBQcmludChwKSk7Ci19Ci0KLS8vIHdjaGFyX3QqLgotVEVTVChQcmlu
dFdpZGVDU3RyaW5nVGVzdCwgTm9uQ29uc3QpIHsKLSAgd2NoYXJfdCBwW10gPSBMIkhpIjsKLSAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSArICIgcG9pbnRpbmcgdG8gTFwiSGlcIiIsCi0gICAg
ICAgICAgICBQcmludChzdGF0aWNfY2FzdDx3Y2hhcl90Kj4ocCkpKTsKLX0KLQotLy8gTlVMTCB3
aWRlIEMgc3RyaW5nLgotVEVTVChQcmludFdpZGVDU3RyaW5nVGVzdCwgTnVsbCkgewotICBjb25z
dCB3Y2hhcl90KiBwID0gTlVMTDsKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IHdpZGUgQyBzdHJpbmdzIGFyZSBlc2NhcGVkIHByb3Blcmx5LgotVEVT
VChQcmludFdpZGVDU3RyaW5nVGVzdCwgRXNjYXBlc1Byb3Blcmx5KSB7Ci0gIGNvbnN0IHdjaGFy
X3Qgc1tdID0geydcJycsICciJywgJz8nLCAnXFwnLCAnXGEnLCAnXGInLCAnXGYnLCAnXG4nLCAn
XHInLAotICAgICAgICAgICAgICAgICAgICAgICAnXHQnLCAnXHYnLCAweEQzLCAweDU3NiwgMHg4
RDMsIDB4Qzc0RCwgJyAnLCAnYScsICdcMCd9OwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMp
ICsgIiBwb2ludGluZyB0byBMXCInXFxcIj9cXFxcXFxhXFxiXFxmIgotICAgICAgICAgICAgIlxc
blxcclxcdFxcdlxceEQzXFx4NTc2XFx4OEQzXFx4Qzc0RCBhXCIiLAotICAgICAgICAgICAgUHJp
bnQoc3RhdGljX2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHMpKSk7Ci19Ci0jZW5kaWYgIC8vIG5hdGl2
ZSB3Y2hhcl90Ci0KLS8vIFRlc3RzIHByaW50aW5nIHBvaW50ZXJzIHRvIG90aGVyIGNoYXIgdHlw
ZXMuCi0KLS8vIHNpZ25lZCBjaGFyKi4KLVRFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFNpZ25l
ZENoYXIpIHsKLSAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFy
Kj4oMHgxMjM0KTsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwotICBw
ID0gTlVMTDsKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0vLyBjb25zdCBz
aWduZWQgY2hhciouCi1URVNUKFByaW50Q2hhclBvaW50ZXJUZXN0LCBDb25zdFNpZ25lZENoYXIp
IHsKLSAgc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PHNpZ25lZCBjaGFyKj4oMHgx
MjM0KTsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwotICBwID0gTlVM
TDsKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0vLyB1bnNpZ25lZCBjaGFy
Ki4KLVRFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIFVuc2lnbmVkQ2hhcikgewotICB1bnNpZ25l
ZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oMHgxMjM0KTsKLSAg
RVhQRUNUX0VRKFByaW50UG9pbnRlcihwKSwgUHJpbnQocCkpOwotICBwID0gTlVMTDsKLSAgRVhQ
RUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0vLyBjb25zdCB1bnNpZ25lZCBjaGFyKi4K
LVRFU1QoUHJpbnRDaGFyUG9pbnRlclRlc3QsIENvbnN0VW5zaWduZWRDaGFyKSB7Ci0gIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIHAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PigweDEyMzQpOwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Ci0gIHAg
PSBOVUxMOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8vIFRlc3RzIHBy
aW50aW5nIHBvaW50ZXJzIHRvIHNpbXBsZSwgYnVpbHQtaW4gdHlwZXMuCi0KLS8vIGJvb2wqLgot
VEVTVChQcmludFBvaW50ZXJUb0J1aWx0SW5UeXBlVGVzdCwgQm9vbCkgewotICBib29sKiBwID0g
cmVpbnRlcnByZXRfY2FzdDxib29sKj4oMHhBQkNEKTsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRl
cihwKSwgUHJpbnQocCkpOwotICBwID0gTlVMTDsKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQo
cCkpOwotfQotCi0vLyB2b2lkKi4KLVRFU1QoUHJpbnRQb2ludGVyVG9CdWlsdEluVHlwZVRlc3Qs
IFZvaWQpIHsKLSAgdm9pZCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4QUJDRCk7Ci0g
IEVYUEVDVF9FUShQcmludFBvaW50ZXIocCksIFByaW50KHApKTsKLSAgcCA9IE5VTEw7Ci0gIEVY
UEVDVF9FUSgiTlVMTCIsIFByaW50KHApKTsKLX0KLQotLy8gY29uc3Qgdm9pZCouCi1URVNUKFBy
aW50UG9pbnRlclRvQnVpbHRJblR5cGVUZXN0LCBDb25zdFZvaWQpIHsKLSAgY29uc3Qgdm9pZCog
cCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KDB4QUJDRCk7Ci0gIEVYUEVDVF9FUShQ
cmludFBvaW50ZXIocCksIFByaW50KHApKTsKLSAgcCA9IE5VTEw7Ci0gIEVYUEVDVF9FUSgiTlVM
TCIsIFByaW50KHApKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgcG9pbnRlcnMgdG8gcG9pbnRl
cnMuCi1URVNUKFByaW50UG9pbnRlclRvUG9pbnRlclRlc3QsIEludFBvaW50ZXJQb2ludGVyKSB7
Ci0gIGludCoqIHAgPSByZWludGVycHJldF9jYXN0PGludCoqPigweEFCQ0QpOwotICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKHApLCBQcmludChwKSk7Ci0gIHAgPSBOVUxMOwotICBFWFBFQ1RfRVEo
Ik5VTEwiLCBQcmludChwKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIChub24tbWVtYmVyKSBm
dW5jdGlvbiBwb2ludGVycy4KLQotdm9pZCBNeUZ1bmN0aW9uKGludCAvKiBuICovKSB7fQotCi1U
RVNUKFByaW50UG9pbnRlclRlc3QsIE5vbk1lbWJlckZ1bmN0aW9uUG9pbnRlcikgewotICAvLyBX
ZSBjYW5ub3QgZGlyZWN0bHkgY2FzdCAmTXlGdW5jdGlvbiB0byBjb25zdCB2b2lkKiBiZWNhdXNl
IHRoZQotICAvLyBzdGFuZGFyZCBkaXNhbGxvd3MgY2FzdGluZyBiZXR3ZWVuIHBvaW50ZXJzIHRv
IGZ1bmN0aW9ucyBhbmQKLSAgLy8gcG9pbnRlcnMgdG8gb2JqZWN0cywgYW5kIHNvbWUgY29tcGls
ZXJzIChlLmcuIEdDQyAzLjQpIGVuZm9yY2UKLSAgLy8gdGhpcyBsaW1pdGF0aW9uLgotICBFWFBF
Q1RfRVEoCi0gICAgICBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4o
Ci0gICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxpbnRlcm5hbDo6QmlnZ2VzdEludD4oJk15RnVu
Y3Rpb24pKSksCi0gICAgICBQcmludCgmTXlGdW5jdGlvbikpOwotICBpbnQgKCpwKShib29sKSA9
IE5VTEw7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0VRKCJOVUxMIiwgUHJpbnQocCkpOwotfQotCi0v
LyBBbiBhc3NlcnRpb24gcHJlZGljYXRlIGRldGVybWluaW5nIHdoZXRoZXIgYSBvbmUgc3RyaW5n
IGlzIGEgcHJlZml4IGZvcgotLy8gYW5vdGhlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJpbmdU
eXBlPgotQXNzZXJ0aW9uUmVzdWx0IEhhc1ByZWZpeChjb25zdCBTdHJpbmdUeXBlJiBzdHIsIGNv
bnN0IFN0cmluZ1R5cGUmIHByZWZpeCkgewotICBpZiAoc3RyLmZpbmQocHJlZml4LCAwKSA9PSAw
KQotICAgIHJldHVybiBBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgY29uc3QgYm9vbCBpc193aWRl
X3N0cmluZyA9IHNpemVvZihwcmVmaXhbMF0pID4gMTsKLSAgY29uc3QgY2hhciogY29uc3QgYmVn
aW5fc3RyaW5nX3F1b3RlID0gaXNfd2lkZV9zdHJpbmcgPyAiTFwiIiA6ICJcIiI7Ci0gIHJldHVy
biBBc3NlcnRpb25GYWlsdXJlKCkKLSAgICAgIDw8IGJlZ2luX3N0cmluZ19xdW90ZSA8PCBwcmVm
aXggPDwgIlwiIGlzIG5vdCBhIHByZWZpeCBvZiAiCi0gICAgICA8PCBiZWdpbl9zdHJpbmdfcXVv
dGUgPDwgc3RyIDw8ICJcIlxuIjsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgbWVtYmVyIHZhcmlh
YmxlIHBvaW50ZXJzLiAgQWx0aG91Z2ggdGhleSBhcmUgY2FsbGVkCi0vLyBwb2ludGVycywgdGhl
eSBkb24ndCBwb2ludCB0byBhIGxvY2F0aW9uIGluIHRoZSBhZGRyZXNzIHNwYWNlLgotLy8gVGhl
aXIgcmVwcmVzZW50YXRpb24gaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gIFRodXMgdGhleSB3
aWxsIGJlCi0vLyBwcmludGVkIGFzIHJhdyBieXRlcy4KLQotc3RydWN0IEZvbyB7Ci0gcHVibGlj
OgotICB2aXJ0dWFsIH5Gb28oKSB7fQotICBpbnQgTXlNZXRob2QoY2hhciB4KSB7IHJldHVybiB4
ICsgMTsgfQotICB2aXJ0dWFsIGNoYXIgTXlWaXJ0dWFsTWV0aG9kKGludCAvKiBuICovKSB7IHJl
dHVybiAnYSc7IH0KLQotICBpbnQgdmFsdWU7Ci19OwotCi1URVNUKFByaW50UG9pbnRlclRlc3Qs
IE1lbWJlclZhcmlhYmxlUG9pbnRlcikgewotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoUHJpbnQo
JkZvbzo6dmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCZGb286
OnZhbHVlKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKLSAgaW50IChGb286OipwKSA9IE5VTEw7ICAv
LyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KHApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikpOwotfQotCi0v
LyBUZXN0cyBwcmludGluZyBtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcnMuICBBbHRob3VnaCB0aGV5
IGFyZSBjYWxsZWQKLS8vIHBvaW50ZXJzLCB0aGV5IGRvbid0IHBvaW50IHRvIGEgbG9jYXRpb24g
aW4gdGhlIGFkZHJlc3Mgc3BhY2UuCi0vLyBUaGVpciByZXByZXNlbnRhdGlvbiBpcyBpbXBsZW1l
bnRhdGlvbi1kZWZpbmVkLiAgVGh1cyB0aGV5IHdpbGwgYmUKLS8vIHByaW50ZWQgYXMgcmF3IGJ5
dGVzLgotVEVTVChQcmludFBvaW50ZXJUZXN0LCBNZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKLSAg
RVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KCZGb286Ok15TWV0aG9kKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFByaW50KHNpemVvZigmRm9vOjpNeU1ldGhvZCkpICsgIi1ieXRlIG9iamVj
dCAiKSk7Ci0gIEVYUEVDVF9UUlVFKAotICAgICAgSGFzUHJlZml4KFByaW50KCZGb286Ok15Vmly
dHVhbE1ldGhvZCksCi0gICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKCgmRm9vOjpNeVZpcnR1
YWxNZXRob2QpKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKLSAgaW50IChGb286OipwKShjaGFyKSA9
IE5VTEw7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX1RSVUUoSGFzUHJlZml4KFByaW50KHApLAotICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbnQoc2l6ZW9mKHApKSArICItYnl0ZSBvYmplY3QgIikp
OwotfQotCi0vLyBUZXN0cyBwcmludGluZyBDIGFycmF5cy4KLQotLy8gVGhlIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0aGlzIGFuZCBQcmludCgpIGlzIHRoYXQgaXQgZW5zdXJlcyB0aGF0IHRoZQotLy8g
YXJndW1lbnQgaXMgYSByZWZlcmVuY2UgdG8gYW4gYXJyYXkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgc2l6ZV90IE4+Ci1zdGQ6OnN0cmluZyBQcmludEFycmF5SGVscGVyKFQgKCZhKVtOXSkgewot
ICByZXR1cm4gUHJpbnQoYSk7Ci19Ci0KLS8vIE9uZS1kaW1lbnNpb25hbCBhcnJheS4KLVRFU1Qo
UHJpbnRBcnJheVRlc3QsIE9uZURpbWVuc2lvbmFsQXJyYXkpIHsKLSAgaW50IGFbNV0gPSB7IDEs
IDIsIDMsIDQsIDUgfTsKLSAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDQsIDUgfSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOwotfQotCi0vLyBUd28tZGltZW5zaW9uYWwgYXJyYXkuCi1URVNUKFByaW50
QXJyYXlUZXN0LCBUd29EaW1lbnNpb25hbEFycmF5KSB7Ci0gIGludCBhWzJdWzVdID0gewotICAg
IHsgMSwgMiwgMywgNCwgNSB9LAotICAgIHsgNiwgNywgOCwgOSwgMCB9Ci0gIH07Ci0gIEVYUEVD
VF9FUSgieyB7IDEsIDIsIDMsIDQsIDUgfSwgeyA2LCA3LCA4LCA5LCAwIH0gfSIsIFByaW50QXJy
YXlIZWxwZXIoYSkpOwotfQotCi0vLyBBcnJheSBvZiBjb25zdCBlbGVtZW50cy4KLVRFU1QoUHJp
bnRBcnJheVRlc3QsIENvbnN0QXJyYXkpIHsKLSAgY29uc3QgYm9vbCBhWzFdID0geyBmYWxzZSB9
OwotICBFWFBFQ1RfRVEoInsgZmFsc2UgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwotfQotCi0v
LyBjaGFyIGFycmF5IHdpdGhvdXQgdGVybWluYXRpbmcgTlVMLgotVEVTVChQcmludEFycmF5VGVz
dCwgQ2hhckFycmF5V2l0aE5vVGVybWluYXRpbmdOdWwpIHsKLSAgLy8gQXJyYXkgYSBjb250YWlu
cyAnXDAnIGluIHRoZSBtaWRkbGUgYW5kIGRvZXNuJ3QgZW5kIHdpdGggJ1wwJy4KLSAgY2hhciBh
W10gPSB7ICdIJywgJ1wwJywgJ2knIH07Ci0gIEVYUEVDVF9FUSgiXCJIXFwwaVwiIChubyB0ZXJt
aW5hdGluZyBOVUwpIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7Ci19Ci0KLS8vIGNvbnN0IGNoYXIg
YXJyYXkgd2l0aCB0ZXJtaW5hdGluZyBOVUwuCi1URVNUKFByaW50QXJyYXlUZXN0LCBDb25zdENo
YXJBcnJheVdpdGhUZXJtaW5hdGluZ051bCkgewotICBjb25zdCBjaGFyIGFbXSA9ICJcMEhpIjsK
LSAgRVhQRUNUX0VRKCJcIlxcMEhpXCIiLCBQcmludEFycmF5SGVscGVyKGEpKTsKLX0KLQotLy8g
Y29uc3Qgd2NoYXJfdCBhcnJheSB3aXRob3V0IHRlcm1pbmF0aW5nIE5VTC4KLVRFU1QoUHJpbnRB
cnJheVRlc3QsIFdDaGFyQXJyYXlXaXRoTm9UZXJtaW5hdGluZ051bCkgewotICAvLyBBcnJheSBh
IGNvbnRhaW5zICdcMCcgaW4gdGhlIG1pZGRsZSBhbmQgZG9lc24ndCBlbmQgd2l0aCAnXDAnLgot
ICBjb25zdCB3Y2hhcl90IGFbXSA9IHsgTCdIJywgTCdcMCcsIEwnaScgfTsKLSAgRVhQRUNUX0VR
KCJMXCJIXFwwaVwiIChubyB0ZXJtaW5hdGluZyBOVUwpIiwgUHJpbnRBcnJheUhlbHBlcihhKSk7
Ci19Ci0KLS8vIHdjaGFyX3QgYXJyYXkgd2l0aCB0ZXJtaW5hdGluZyBOVUwuCi1URVNUKFByaW50
QXJyYXlUZXN0LCBXQ29uc3RDaGFyQXJyYXlXaXRoVGVybWluYXRpbmdOdWwpIHsKLSAgY29uc3Qg
d2NoYXJfdCBhW10gPSBMIlwwSGkiOwotICBFWFBFQ1RfRVEoIkxcIlxcMEhpXCIiLCBQcmludEFy
cmF5SGVscGVyKGEpKTsKLX0KLQotLy8gQXJyYXkgb2Ygb2JqZWN0cy4KLVRFU1QoUHJpbnRBcnJh
eVRlc3QsIE9iamVjdEFycmF5KSB7Ci0gIHN0ZDo6c3RyaW5nIGFbM10gPSB7IkhpIiwgIkhlbGxv
IiwgIk5pIGhhbyJ9OwotICBFWFBFQ1RfRVEoInsgXCJIaVwiLCBcIkhlbGxvXCIsIFwiTmkgaGFv
XCIgfSIsIFByaW50QXJyYXlIZWxwZXIoYSkpOwotfQotCi0vLyBBcnJheSB3aXRoIG1hbnkgZWxl
bWVudHMuCi1URVNUKFByaW50QXJyYXlUZXN0LCBCaWdBcnJheSkgewotICBpbnQgYVsxMDBdID0g
eyAxLCAyLCAzIH07Ci0gIEVYUEVDVF9FUSgieyAxLCAyLCAzLCAwLCAwLCAwLCAwLCAwLCAuLi4s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfSIsCi0gICAgICAgICAgICBQcmludEFycmF5SGVscGVy
KGEpKTsKLX0KLQotLy8gVGVzdHMgcHJpbnRpbmcgOjpzdHJpbmcgYW5kIDo6c3RkOjpzdHJpbmcu
Ci0KLSNpZiBHVEVTVF9IQVNfR0xPQkFMX1NUUklORwotLy8gOjpzdHJpbmcuCi1URVNUKFByaW50
U3RyaW5nVGVzdCwgU3RyaW5nSW5HbG9iYWxOYW1lc3BhY2UpIHsKLSAgY29uc3QgY2hhciBzW10g
PSAiJ1wiP1xcXGFcYlxmXG5cMFxyXHRcdlx4N0ZceEZGIGEiOwotICBjb25zdCA6OnN0cmluZyBz
dHIocywgc2l6ZW9mKHMpKTsKLSAgRVhQRUNUX0VRKCJcIidcXFwiP1xcXFxcXGFcXGJcXGZcXG5c
XDBcXHJcXHRcXHZcXHg3RlxceEZGIGFcXDBcIiIsCi0gICAgICAgICAgICBQcmludChzdHIpKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLQotLy8gOjpzdGQ6OnN0cmlu
Zy4KLVRFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdJblN0ZE5hbWVzcGFjZSkgewotICBjb25z
dCBjaGFyIHNbXSA9ICInXCI/XFxcYVxiXGZcblwwXHJcdFx2XHg3Rlx4RkYgYSI7Ci0gIGNvbnN0
IDo6c3RkOjpzdHJpbmcgc3RyKHMsIHNpemVvZihzKSk7Ci0gIEVYUEVDVF9FUSgiXCInXFxcIj9c
XFxcXFxhXFxiXFxmXFxuXFwwXFxyXFx0XFx2XFx4N0ZcXHhGRiBhXFwwXCIiLAotICAgICAgICAg
ICAgUHJpbnQoc3RyKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdHJpbmdUZXN0LCBTdHJpbmdBbWJpZ3Vv
dXNIZXgpIHsKLSAgLy8gIlx4NkJBTkFOQSIgaXMgYW1iaWd1b3VzLCBpdCBjYW4gYmUgaW50ZXJw
cmV0ZWQgYXMgc3RhcnRpbmcgd2l0aCBlaXRoZXIgb2Y6Ci0gIC8vICdceDYnLCAnXHg2QicsIG9y
ICdceDZCQScuCi0KLSAgLy8gYSBoZXggZXNjYXBpbmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEg
ZGVjaW1hbCBkaWdpdAotICBFWFBFQ1RfRVEoIlwiMFxceDEyXCIgXCIzXCIiLCBQcmludCg6OnN0
ZDo6c3RyaW5nKCIwXHgxMiIgIjMiKSkpOwotICAvLyBhIGhleCBlc2NhcGluZyBzZXF1ZW5jZSBm
b2xsb3dpbmcgYnkgYSBoZXggZGlnaXQgKGxvd2VyLWNhc2UpCi0gIEVYUEVDVF9FUSgiXCJtbVxc
eDZcIiBcImJhbmFuYXNcIiIsIFByaW50KDo6c3RkOjpzdHJpbmcoIm1tXHg2IiAiYmFuYW5hcyIp
KSk7Ci0gIC8vIGEgaGV4IGVzY2FwaW5nIHNlcXVlbmNlIGZvbGxvd2luZyBieSBhIGhleCBkaWdp
dCAodXBwZXItY2FzZSkKLSAgRVhQRUNUX0VRKCJcIk5PTVxceDZcIiBcIkJBTkFOQVwiIiwgUHJp
bnQoOjpzdGQ6OnN0cmluZygiTk9NXHg2IiAiQkFOQU5BIikpKTsKLSAgLy8gYSBoZXggZXNjYXBp
bmcgc2VxdWVuY2UgZm9sbG93aW5nIGJ5IGEgbm9uLXhkaWdpdAotICBFWFBFQ1RfRVEoIlwiIVxc
eDUtIVwiIiwgUHJpbnQoOjpzdGQ6OnN0cmluZygiIVx4NS0hIikpKTsKLX0KLQotLy8gVGVzdHMg
cHJpbnRpbmcgOjp3c3RyaW5nIGFuZCA6OnN0ZDo6d3N0cmluZy4KLQotI2lmIEdURVNUX0hBU19H
TE9CQUxfV1NUUklORwotLy8gOjp3c3RyaW5nLgotVEVTVChQcmludFdpZGVTdHJpbmdUZXN0LCBT
dHJpbmdJbkdsb2JhbE5hbWVzcGFjZSkgewotICBjb25zdCB3Y2hhcl90IHNbXSA9IEwiJ1wiP1xc
XGFcYlxmXG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzREIGEiOwotICBjb25zdCA6OndzdHJp
bmcgc3RyKHMsIHNpemVvZihzKS9zaXplb2Yod2NoYXJfdCkpOwotICBFWFBFQ1RfRVEoIkxcIidc
XFwiP1xcXFxcXGFcXGJcXGZcXG5cXDBcXHJcXHRcXHYiCi0gICAgICAgICAgICAiXFx4RDNcXHg1
NzZcXHg4RDNcXHhDNzREIGFcXDBcIiIsCi0gICAgICAgICAgICBQcmludChzdHIpKTsKLX0KLSNl
bmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0KLSNpZiBHVEVTVF9IQVNfU1REX1dT
VFJJTkcKLS8vIDo6c3RkOjp3c3RyaW5nLgotVEVTVChQcmludFdpZGVTdHJpbmdUZXN0LCBTdHJp
bmdJblN0ZE5hbWVzcGFjZSkgewotICBjb25zdCB3Y2hhcl90IHNbXSA9IEwiJ1wiP1xcXGFcYlxm
XG5cMFxyXHRcdlx4RDNceDU3Nlx4OEQzXHhDNzREIGEiOwotICBjb25zdCA6OnN0ZDo6d3N0cmlu
ZyBzdHIocywgc2l6ZW9mKHMpL3NpemVvZih3Y2hhcl90KSk7Ci0gIEVYUEVDVF9FUSgiTFwiJ1xc
XCI/XFxcXFxcYVxcYlxcZlxcblxcMFxcclxcdFxcdiIKLSAgICAgICAgICAgICJcXHhEM1xceDU3
NlxceDhEM1xceEM3NEQgYVxcMFwiIiwKLSAgICAgICAgICAgIFByaW50KHN0cikpOwotfQotCi1U
RVNUKFByaW50V2lkZVN0cmluZ1Rlc3QsIFN0cmluZ0FtYmlndW91c0hleCkgewotICAvLyBzYW1l
IGZvciB3aWRlIHN0cmluZ3MuCi0gIEVYUEVDVF9FUSgiTFwiMFxceDEyXCIgTFwiM1wiIiwgUHJp
bnQoOjpzdGQ6OndzdHJpbmcoTCIwXHgxMiIgTCIzIikpKTsKLSAgRVhQRUNUX0VRKCJMXCJtbVxc
eDZcIiBMXCJiYW5hbmFzXCIiLAotICAgICAgICAgICAgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCJt
bVx4NiIgTCJiYW5hbmFzIikpKTsKLSAgRVhQRUNUX0VRKCJMXCJOT01cXHg2XCIgTFwiQkFOQU5B
XCIiLAotICAgICAgICAgICAgUHJpbnQoOjpzdGQ6OndzdHJpbmcoTCJOT01ceDYiIEwiQkFOQU5B
IikpKTsKLSAgRVhQRUNUX0VRKCJMXCIhXFx4NS0hXCIiLCBQcmludCg6OnN0ZDo6d3N0cmluZyhM
IiFceDUtISIpKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0vLyBU
ZXN0cyBwcmludGluZyB0eXBlcyB0aGF0IHN1cHBvcnQgZ2VuZXJpYyBzdHJlYW1pbmcgKGkuZS4g
c3RyZWFtaW5nCi0vLyB0byBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4gZm9y
IGFueSB2YWxpZCBDaGFyIGFuZAotLy8gQ2hhclRyYWl0cyB0eXBlcykuCi0KLS8vIFRlc3RzIHBy
aW50aW5nIGEgbm9uLXRlbXBsYXRlIHR5cGUgdGhhdCBzdXBwb3J0cyBnZW5lcmljIHN0cmVhbWlu
Zy4KLQotY2xhc3MgQWxsb3dzR2VuZXJpY1N0cmVhbWluZyB7fTsKLQotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHM+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Q2hhciwg
Q2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCi0gICAgc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENo
YXJUcmFpdHM+JiBvcywKLSAgICBjb25zdCBBbGxvd3NHZW5lcmljU3RyZWFtaW5nJiAvKiBhICov
KSB7Ci0gIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZyI7Ci19Ci0KLVRFU1Qo
UHJpbnRUeXBlV2l0aEdlbmVyaWNTdHJlYW1pbmdUZXN0LCBOb25UZW1wbGF0ZVR5cGUpIHsKLSAg
QWxsb3dzR2VuZXJpY1N0cmVhbWluZyBhOwotICBFWFBFQ1RfRVEoIkFsbG93c0dlbmVyaWNTdHJl
YW1pbmciLCBQcmludChhKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIGEgdGVtcGxhdGUgdHlw
ZSB0aGF0IHN1cHBvcnRzIGdlbmVyaWMgc3RyZWFtaW5nLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdUZW1wbGF0ZSB7fTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXIsIHR5cGVuYW1lIENoYXJUcmFpdHMsIHR5cGVuYW1lIFQ+Ci1zdGQ6OmJh
c2ljX29zdHJlYW08Q2hhciwgQ2hhclRyYWl0cz4mIG9wZXJhdG9yPDwoCi0gICAgc3RkOjpiYXNp
Y19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcywKLSAgICBjb25zdCBBbGxvd3NHZW5lcmlj
U3RyZWFtaW5nVGVtcGxhdGU8VD4mIC8qIGEgKi8pIHsKLSAgcmV0dXJuIG9zIDw8ICJBbGxvd3NH
ZW5lcmljU3RyZWFtaW5nVGVtcGxhdGUiOwotfQotCi1URVNUKFByaW50VHlwZVdpdGhHZW5lcmlj
U3RyZWFtaW5nVGVzdCwgVGVtcGxhdGVUeXBlKSB7Ci0gIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdU
ZW1wbGF0ZTxpbnQ+IGE7Ci0gIEVYUEVDVF9FUSgiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ1RlbXBs
YXRlIiwgUHJpbnQoYSkpOwotfQotCi0vLyBUZXN0cyBwcmludGluZyBhIHR5cGUgdGhhdCBzdXBw
b3J0cyBnZW5lcmljIHN0cmVhbWluZyBhbmQgY2FuIGJlCi0vLyBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBhbm90aGVyIHByaW50YWJsZSB0eXBlLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIEFsbG93c0dlbmVyaWNTdHJlYW1pbmdBbmRJbXBsaWNpdENvbnZlcnNpb25UZW1wbGF0ZSB7
Ci0gcHVibGljOgotICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLX07
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyLCB0eXBlbmFtZSBDaGFyVHJhaXRzLCB0eXBlbmFt
ZSBUPgotc3RkOjpiYXNpY19vc3RyZWFtPENoYXIsIENoYXJUcmFpdHM+JiBvcGVyYXRvcjw8KAot
ICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyLCBDaGFyVHJhaXRzPiYgb3MsCi0gICAgY29uc3Qg
QWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlPFQ+JiAv
KiBhICovKSB7Ci0gIHJldHVybiBvcyA8PCAiQWxsb3dzR2VuZXJpY1N0cmVhbWluZ0FuZEltcGxp
Y2l0Q29udmVyc2lvblRlbXBsYXRlIjsKLX0KLQotVEVTVChQcmludFR5cGVXaXRoR2VuZXJpY1N0
cmVhbWluZ1Rlc3QsIFR5cGVJbXBsaWNpdGx5Q29udmVydGlibGUpIHsKLSAgQWxsb3dzR2VuZXJp
Y1N0cmVhbWluZ0FuZEltcGxpY2l0Q29udmVyc2lvblRlbXBsYXRlPGludD4gYTsKLSAgRVhQRUNU
X0VRKCJBbGxvd3NHZW5lcmljU3RyZWFtaW5nQW5kSW1wbGljaXRDb252ZXJzaW9uVGVtcGxhdGUi
LCBQcmludChhKSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfU1RSSU5HX1BJRUNFXwotCi0vLyBUZXN0
cyBwcmludGluZyBTdHJpbmdQaWVjZS4KLQotVEVTVChQcmludFN0cmluZ1BpZWNlVGVzdCwgU2lt
cGxlU3RyaW5nUGllY2UpIHsKLSAgY29uc3QgU3RyaW5nUGllY2Ugc3AgPSAiSGVsbG8iOwotICBF
WFBFQ1RfRVEoIlwiSGVsbG9cIiIsIFByaW50KHNwKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdHJpbmdQ
aWVjZVRlc3QsIFVucHJpbnRhYmxlQ2hhcmFjdGVycykgewotICBjb25zdCBjaGFyIHN0cltdID0g
Ik5VTCAoXDApIGFuZCBcclx0IjsKLSAgY29uc3QgU3RyaW5nUGllY2Ugc3Aoc3RyLCBzaXplb2Yo
c3RyKSAtIDEpOwotICBFWFBFQ1RfRVEoIlwiTlVMIChcXDApIGFuZCBcXHJcXHRcIiIsIFByaW50
KHNwKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NUUklOR19QSUVDRV8KLQotLy8gVGVz
dHMgcHJpbnRpbmcgU1RMIGNvbnRhaW5lcnMuCi0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0
LCBFbXB0eURlcXVlKSB7Ci0gIGRlcXVlPGNoYXI+IGVtcHR5OwotICBFWFBFQ1RfRVEoInt9Iiwg
UHJpbnQoZW1wdHkpKTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5vbkVtcHR5
RGVxdWUpIHsKLSAgZGVxdWU8aW50PiBub25fZW1wdHk7Ci0gIG5vbl9lbXB0eS5wdXNoX2JhY2so
MSk7Ci0gIG5vbl9lbXB0eS5wdXNoX2JhY2soMyk7Ci0gIEVYUEVDVF9FUSgieyAxLCAzIH0iLCBQ
cmludChub25fZW1wdHkpKTsKLX0KLQotI2lmIEdURVNUX0hBU19IQVNIX01BUF8KLQotVEVTVChQ
cmludFN0bENvbnRhaW5lclRlc3QsIE9uZUVsZW1lbnRIYXNoTWFwKSB7Ci0gIGhhc2hfbWFwPGlu
dCwgY2hhcj4gbWFwMTsKLSAgbWFwMVsxXSA9ICdhJzsKLSAgRVhQRUNUX0VRKCJ7ICgxLCAnYScg
KDk3LCAweDYxKSkgfSIsIFByaW50KG1hcDEpKTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5l
clRlc3QsIEhhc2hNdWx0aU1hcCkgewotICBoYXNoX211bHRpbWFwPGludCwgYm9vbD4gbWFwMTsK
LSAgbWFwMS5pbnNlcnQobWFrZV9wYWlyKDUsIHRydWUpKTsKLSAgbWFwMS5pbnNlcnQobWFrZV9w
YWlyKDUsIGZhbHNlKSk7Ci0KLSAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aW1hcCBjYW4gYmUg
cHJpbnRlZCBpbiBhbnkgb3JkZXIuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3VsdCA9IFByaW50
KG1hcDEpOwotICBFWFBFQ1RfVFJVRShyZXN1bHQgPT0gInsgKDUsIHRydWUpLCAoNSwgZmFsc2Up
IH0iIHx8Ci0gICAgICAgICAgICAgIHJlc3VsdCA9PSAieyAoNSwgZmFsc2UpLCAoNSwgdHJ1ZSkg
fSIpCi0gICAgICAgICAgICAgICAgICA8PCAiIHdoZXJlIFByaW50KG1hcDEpIHJldHVybnMgXCIi
IDw8IHJlc3VsdCA8PCAiXCIuIjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfSEFTSF9NQVBf
Ci0KLSNpZiBHVEVTVF9IQVNfSEFTSF9TRVRfCi0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0
LCBIYXNoU2V0KSB7Ci0gIGhhc2hfc2V0PGludD4gc2V0MTsKLSAgc2V0MS5pbnNlcnQoMSk7Ci0g
IEVYUEVDVF9FUSgieyAxIH0iLCBQcmludChzZXQxKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBIYXNoTXVsdGlTZXQpIHsKLSAgY29uc3QgaW50IGtTaXplID0gNTsKLSAgaW50
IGFba1NpemVdID0geyAxLCAxLCAyLCA1LCAxIH07Ci0gIGhhc2hfbXVsdGlzZXQ8aW50PiBzZXQx
KGEsIGEgKyBrU2l6ZSk7Ci0KLSAgLy8gRWxlbWVudHMgb2YgaGFzaF9tdWx0aXNldCBjYW4gYmUg
cHJpbnRlZCBpbiBhbnkgb3JkZXIuCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIHJlc3VsdCA9IFByaW50
KHNldDEpOwotICBjb25zdCBzdGQ6OnN0cmluZyBleHBlY3RlZF9wYXR0ZXJuID0gInsgZCwgZCwg
ZCwgZCwgZCB9IjsgIC8vIGQgbWVhbnMgYSBkaWdpdC4KLQotICAvLyBWZXJpZmllcyB0aGUgcmVz
dWx0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHBhdHRlcm47IGFsc28gZXh0cmFjdHMKLSAgLy8gdGhl
IG51bWJlcnMgaW4gdGhlIHJlc3VsdC4KLSAgQVNTRVJUX0VRKGV4cGVjdGVkX3BhdHRlcm4ubGVu
Z3RoKCksIHJlc3VsdC5sZW5ndGgoKSk7Ci0gIHN0ZDo6dmVjdG9yPGludD4gbnVtYmVyczsKLSAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gcmVzdWx0Lmxlbmd0aCgpOyBpKyspIHsKLSAgICBpZiAo
ZXhwZWN0ZWRfcGF0dGVybltpXSA9PSAnZCcpIHsKLSAgICAgIEFTU0VSVF9ORShpc2RpZ2l0KHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJlc3VsdFtpXSkpLCAwKTsKLSAgICAgIG51bWJlcnMu
cHVzaF9iYWNrKHJlc3VsdFtpXSAtICcwJyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEVYUEVDVF9F
UShleHBlY3RlZF9wYXR0ZXJuW2ldLCByZXN1bHRbaV0pIDw8ICIgd2hlcmUgcmVzdWx0IGlzICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3Vs
dDsKLSAgICB9Ci0gIH0KLQotICAvLyBNYWtlcyBzdXJlIHRoZSByZXN1bHQgY29udGFpbnMgdGhl
IHJpZ2h0IG51bWJlcnMuCi0gIHN0ZDo6c29ydChudW1iZXJzLmJlZ2luKCksIG51bWJlcnMuZW5k
KCkpOwotICBzdGQ6OnNvcnQoYSwgYSArIGtTaXplKTsKLSAgRVhQRUNUX1RSVUUoc3RkOjplcXVh
bChhLCBhICsga1NpemUsIG51bWJlcnMuYmVnaW4oKSkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNU
X0hBU19IQVNIX1NFVF8KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIExpc3QpIHsKLSAg
Y29uc3Qgc3RkOjpzdHJpbmcgYVtdID0geyJoZWxsbyIsICJ3b3JsZCJ9OwotICBjb25zdCBsaXN0
PHN0ZDo6c3RyaW5nPiBzdHJpbmdzKGEsIGEgKyAyKTsKLSAgRVhQRUNUX0VRKCJ7IFwiaGVsbG9c
IiwgXCJ3b3JsZFwiIH0iLCBQcmludChzdHJpbmdzKSk7Ci19Ci0KLVRFU1QoUHJpbnRTdGxDb250
YWluZXJUZXN0LCBNYXApIHsKLSAgbWFwPGludCwgYm9vbD4gbWFwMTsKLSAgbWFwMVsxXSA9IHRy
dWU7Ci0gIG1hcDFbNV0gPSBmYWxzZTsKLSAgbWFwMVszXSA9IHRydWU7Ci0gIEVYUEVDVF9FUSgi
eyAoMSwgdHJ1ZSksICgzLCB0cnVlKSwgKDUsIGZhbHNlKSB9IiwgUHJpbnQobWFwMSkpOwotfQot
Ci1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlNYXApIHsKLSAgbXVsdGltYXA8Ym9v
bCwgaW50PiBtYXAxOwotICAvLyBUaGUgbWFrZV9wYWlyIHRlbXBsYXRlIGZ1bmN0aW9uIHdvdWxk
IGRlZHVjZSB0aGUgdHlwZSBhcwotICAvLyBwYWlyPGJvb2wsIGludD4gaGVyZSwgYW5kIHNpbmNl
IHRoZSBrZXkgcGFydCBpbiBhIG11bHRpbWFwIGhhcyB0bwotICAvLyBiZSBjb25zdGFudCwgd2l0
aG91dCBhIHRlbXBsYXRlZCBjdG9yIGluIHRoZSBwYWlyIGNsYXNzIChhcyBpbgotICAvLyBsaWJD
c3RkIG9uIFNvbGFyaXMpLCBtYWtlX3BhaXIgY2FsbCB3b3VsZCBmYWlsIHRvIGNvbXBpbGUgYXMg
bm8KLSAgLy8gaW1wbGljaXQgY29udmVyc2lvbiBpcyBmb3VuZC4gIFRodXMgZXhwbGljaXQgdHlw
ZW5hbWUgaXMgdXNlZAotICAvLyBoZXJlIGluc3RlYWQuCi0gIG1hcDEuaW5zZXJ0KHBhaXI8Y29u
c3QgYm9vbCwgaW50Pih0cnVlLCAwKSk7Ci0gIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwg
aW50Pih0cnVlLCAxKSk7Ci0gIG1hcDEuaW5zZXJ0KHBhaXI8Y29uc3QgYm9vbCwgaW50PihmYWxz
ZSwgMikpOwotICBFWFBFQ1RfRVEoInsgKGZhbHNlLCAyKSwgKHRydWUsIDApLCAodHJ1ZSwgMSkg
fSIsIFByaW50KG1hcDEpKTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIFNldCkg
ewotICBjb25zdCB1bnNpZ25lZCBpbnQgYVtdID0geyAzLCAwLCA1IH07Ci0gIHNldDx1bnNpZ25l
ZCBpbnQ+IHNldDEoYSwgYSArIDMpOwotICBFWFBFQ1RfRVEoInsgMCwgMywgNSB9IiwgUHJpbnQo
c2V0MSkpOwotfQotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTXVsdGlTZXQpIHsKLSAg
Y29uc3QgaW50IGFbXSA9IHsgMSwgMSwgMiwgNSwgMSB9OwotICBtdWx0aXNldDxpbnQ+IHNldDEo
YSwgYSArIDUpOwotICBFWFBFQ1RfRVEoInsgMSwgMSwgMSwgMiwgNSB9IiwgUHJpbnQoc2V0MSkp
OwotfQotCi0jaWYgR1RFU1RfSEFTX1NURF9GT1JXQVJEX0xJU1RfCi0vLyA8c2xpc3Q+IGlzIGF2
YWlsYWJsZSBvbiBMaW51eCBpbiB0aGUgZ29vZ2xlMyBtb2RlLCBidXQgbm90IG9uCi0vLyBXaW5k
b3dzIG9yIE1hYyBPUyBYLgotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgU2luZ2x5TGlu
a2VkTGlzdCkgewotICBpbnQgYVtdID0geyA5LCAyLCA4IH07Ci0gIGNvbnN0IHN0ZDo6Zm9yd2Fy
ZF9saXN0PGludD4gaW50cyhhLCBhICsgMyk7Ci0gIEVYUEVDVF9FUSgieyA5LCAyLCA4IH0iLCBQ
cmludChpbnRzKSk7Ci19Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfRk9SV0FSRF9MSVNUXwot
Ci1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgUGFpcikgewotICBwYWlyPGNvbnN0IGJvb2ws
IGludD4gcCh0cnVlLCA1KTsKLSAgRVhQRUNUX0VRKCIodHJ1ZSwgNSkiLCBQcmludChwKSk7Ci19
Ci0KLVRFU1QoUHJpbnRTdGxDb250YWluZXJUZXN0LCBWZWN0b3IpIHsKLSAgdmVjdG9yPGludD4g
djsKLSAgdi5wdXNoX2JhY2soMSk7Ci0gIHYucHVzaF9iYWNrKDIpOwotICBFWFBFQ1RfRVEoInsg
MSwgMiB9IiwgUHJpbnQodikpOwotfQotCi1URVNUKFByaW50U3RsQ29udGFpbmVyVGVzdCwgTG9u
Z1NlcXVlbmNlKSB7Ci0gIGNvbnN0IGludCBhWzEwMF0gPSB7IDEsIDIsIDMgfTsKLSAgY29uc3Qg
dmVjdG9yPGludD4gdihhLCBhICsgMTAwKTsKLSAgRVhQRUNUX0VRKCJ7IDEsIDIsIDMsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICIKLSAgICAgICAgICAgICIwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAuLi4gfSIsIFByaW50KHYp
KTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3QsIE5lc3RlZENvbnRhaW5lcikgewot
ICBjb25zdCBpbnQgYTFbXSA9IHsgMSwgMiB9OwotICBjb25zdCBpbnQgYTJbXSA9IHsgMywgNCwg
NSB9OwotICBjb25zdCBsaXN0PGludD4gbDEoYTEsIGExICsgMik7Ci0gIGNvbnN0IGxpc3Q8aW50
PiBsMihhMiwgYTIgKyAzKTsKLQotICB2ZWN0b3I8bGlzdDxpbnQ+ID4gdjsKLSAgdi5wdXNoX2Jh
Y2sobDEpOwotICB2LnB1c2hfYmFjayhsMik7Ci0gIEVYUEVDVF9FUSgieyB7IDEsIDIgfSwgeyAz
LCA0LCA1IH0gfSIsIFByaW50KHYpKTsKLX0KLQotVEVTVChQcmludFN0bENvbnRhaW5lclRlc3Qs
IE9uZURpbWVuc2lvbmFsTmF0aXZlQXJyYXkpIHsKLSAgY29uc3QgaW50IGFbM10gPSB7IDEsIDIs
IDMgfTsKLSAgTmF0aXZlQXJyYXk8aW50PiBiKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVu
Y2UoKSk7Ci0gIEVYUEVDVF9FUSgieyAxLCAyLCAzIH0iLCBQcmludChiKSk7Ci19Ci0KLVRFU1Qo
UHJpbnRTdGxDb250YWluZXJUZXN0LCBUd29EaW1lbnNpb25hbE5hdGl2ZUFycmF5KSB7Ci0gIGNv
bnN0IGludCBhWzJdWzNdID0geyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfTsKLSAgTmF0aXZl
QXJyYXk8aW50WzNdPiBiKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Ci0gIEVY
UEVDVF9FUSgieyB7IDEsIDIsIDMgfSwgeyA0LCA1LCA2IH0gfSIsIFByaW50KGIpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBhIGNsYXNzIG5hbWVkIGl0ZXJhdG9yIGlzbid0IHRyZWF0ZWQgYXMgYSBj
b250YWluZXIuCi0KLXN0cnVjdCBpdGVyYXRvciB7Ci0gIGNoYXIgeDsKLX07Ci0KLVRFU1QoUHJp
bnRTdGxDb250YWluZXJUZXN0LCBJdGVyYXRvcikgewotICBpdGVyYXRvciBpdCA9IHt9OwotICBF
WFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgYSBjbGFzcyBuYW1lZCBjb25zdF9pdGVyYXRvciBpc24ndCB0cmVhdGVkIGFzIGEgY29u
dGFpbmVyLgotCi1zdHJ1Y3QgY29uc3RfaXRlcmF0b3IgewotICBjaGFyIHg7Ci19OwotCi1URVNU
KFByaW50U3RsQ29udGFpbmVyVGVzdCwgQ29uc3RJdGVyYXRvcikgewotICBjb25zdF9pdGVyYXRv
ciBpdCA9IHt9OwotICBFWFBFQ1RfRVEoIjEtYnl0ZSBvYmplY3QgPDAwPiIsIFByaW50KGl0KSk7
Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCi0vLyBUZXN0cyBwcmludGluZyA6OnN0ZDo6
dHIxOjp0dXBsZXMuCi0KLS8vIFR1cGxlcyBvZiB2YXJpb3VzIGFyaXRpZXMuCi1URVNUKFByaW50
VHIxVHVwbGVUZXN0LCBWYXJpb3VzU2l6ZXMpIHsKLSAgOjpzdGQ6OnRyMTo6dHVwbGU8PiB0MDsK
LSAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8aW50
PiB0MSg1KTsKLSAgRVhQRUNUX0VRKCIoNSkiLCBQcmludCh0MSkpOwotCi0gIDo6c3RkOjp0cjE6
OnR1cGxlPGNoYXIsIGJvb2w+IHQyKCdhJywgdHJ1ZSk7Ci0gIEVYUEVDVF9FUSgiKCdhJyAoOTcs
IDB4NjEpLCB0cnVlKSIsIFByaW50KHQyKSk7Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwg
aW50LCBpbnQ+IHQzKGZhbHNlLCAyLCAzKTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMpIiwg
UHJpbnQodDMpKTsKLQotICA6OnN0ZDo6dHIxOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50PiB0
NChmYWxzZSwgMiwgMywgNCk7Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0KSIsIFByaW50
KHQ0KSk7Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbD4g
dDUoZmFsc2UsIDIsIDMsIDQsIHRydWUpOwotICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwg
dHJ1ZSkiLCBQcmludCh0NSkpOwotCi0gIDo6c3RkOjp0cjE6OnR1cGxlPGJvb2wsIGludCwgaW50
LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYpOwotICBFWFBFQ1Rf
RVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNikiLCBQcmludCh0NikpOwotCi0gIDo6c3RkOjp0
cjE6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50PiB0NygKLSAgICAg
IGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMs
IDQsIHRydWUsIDYsIDcpIiwgUHJpbnQodDcpKTsKLQotICA6OnN0ZDo6dHIxOjp0dXBsZTxib29s
LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgYm9vbD4gdDgoCi0gICAgICBmYWxzZSwg
MiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSk7Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0
LCB0cnVlLCA2LCA3LCB0cnVlKSIsIFByaW50KHQ4KSk7Ci0KLSAgOjpzdGQ6OnRyMTo6dHVwbGU8
Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDkoCi0gICAg
ICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7Ci0gIEVYUEVDVF9FUSgiKGZh
bHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5KSk7Ci0KLSAgY29u
c3QgY2hhciogY29uc3Qgc3RyID0gIjgiOwotICAvLyBWQysrIDIwMTAncyBpbXBsZW1lbnRhdGlv
biBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZwotICAvLyBhbiBleHBs
aWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgotICA6OnN0ZDo6dHIxOjp0dXBsZTxi
b29sLCBjaGFyLCBzaG9ydCwgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyLCAgLy8gTk9MSU5UCi0g
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OmludGVybmFsOjpJbnQ2NCwgZmxvYXQsIGRvdWJs
ZSwgY29uc3QgY2hhciosIHZvaWQqLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4K
LSAgICAgIHQxMChmYWxzZSwgJ2EnLCAzLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsIEltcGxpY2l0
Q2FzdF88dm9pZCo+KE5VTEwpLAotICAgICAgICAgICIxMCIpOwotICBFWFBFQ1RfRVEoIihmYWxz
ZSwgJ2EnICg5NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwgIiArIFByaW50UG9pbnRlcihz
dHIpICsKLSAgICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIsIE5VTEwsIFwiMTBcIikiLAot
ICAgICAgICAgICAgUHJpbnQodDEwKSk7Ci19Ci0KLS8vIE5lc3RlZCB0dXBsZXMuCi1URVNUKFBy
aW50VHIxVHVwbGVUZXN0LCBOZXN0ZWRUdXBsZSkgewotICA6OnN0ZDo6dHIxOjp0dXBsZTwgOjpz
dGQ6OnRyMTo6dHVwbGU8aW50LCBib29sPiwgY2hhcj4gbmVzdGVkKAotICAgICAgOjpzdGQ6OnRy
MTo6bWFrZV90dXBsZSg1LCB0cnVlKSwgJ2EnKTsKLSAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAn
YScgKDk3LCAweDYxKSkiLCBQcmludChuZXN0ZWQpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfVFIxX1RVUExFCi0KLSNpZiBHVEVTVF9IQVNfU1REX1RVUExFXwotLy8gVGVzdHMgcHJpbnRp
bmcgOjpzdGQ6OnR1cGxlcy4KLQotLy8gVHVwbGVzIG9mIHZhcmlvdXMgYXJpdGllcy4KLVRFU1Qo
UHJpbnRTdGRUdXBsZVRlc3QsIFZhcmlvdXNTaXplcykgewotICA6OnN0ZDo6dHVwbGU8PiB0MDsK
LSAgRVhQRUNUX0VRKCIoKSIsIFByaW50KHQwKSk7Ci0KLSAgOjpzdGQ6OnR1cGxlPGludD4gdDEo
NSk7Ci0gIEVYUEVDVF9FUSgiKDUpIiwgUHJpbnQodDEpKTsKLQotICA6OnN0ZDo6dHVwbGU8Y2hh
ciwgYm9vbD4gdDIoJ2EnLCB0cnVlKTsKLSAgRVhQRUNUX0VRKCIoJ2EnICg5NywgMHg2MSksIHRy
dWUpIiwgUHJpbnQodDIpKTsKLQotICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQ+IHQzKGZh
bHNlLCAyLCAzKTsKLSAgRVhQRUNUX0VRKCIoZmFsc2UsIDIsIDMpIiwgUHJpbnQodDMpKTsKLQot
ICA6OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludD4gdDQoZmFsc2UsIDIsIDMsIDQpOwot
ICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCkiLCBQcmludCh0NCkpOwotCi0gIDo6c3RkOjp0
dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29sPiB0NShmYWxzZSwgMiwgMywgNCwgdHJ1ZSk7
Ci0gIEVYUEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlKSIsIFByaW50KHQ1KSk7Ci0KLSAg
OjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludD4gdDYoZmFsc2UsIDIs
IDMsIDQsIHRydWUsIDYpOwotICBFWFBFQ1RfRVEoIihmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiki
LCBQcmludCh0NikpOwotCi0gIDo6c3RkOjp0dXBsZTxib29sLCBpbnQsIGludCwgaW50LCBib29s
LCBpbnQsIGludD4gdDcoCi0gICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNyk7Ci0gIEVY
UEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3KSIsIFByaW50KHQ3KSk7Ci0KLSAg
OjpzdGQ6OnR1cGxlPGJvb2wsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50LCBib29sPiB0
OCgKLSAgICAgIGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlKTsKLSAgRVhQRUNUX0VR
KCIoZmFsc2UsIDIsIDMsIDQsIHRydWUsIDYsIDcsIHRydWUpIiwgUHJpbnQodDgpKTsKLQotICA6
OnN0ZDo6dHVwbGU8Ym9vbCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQsIGJvb2wsIGlu
dD4gdDkoCi0gICAgICBmYWxzZSwgMiwgMywgNCwgdHJ1ZSwgNiwgNywgdHJ1ZSwgOSk7Ci0gIEVY
UEVDVF9FUSgiKGZhbHNlLCAyLCAzLCA0LCB0cnVlLCA2LCA3LCB0cnVlLCA5KSIsIFByaW50KHQ5
KSk7Ci0KLSAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gIjgiOwotICAvLyBWQysrIDIwMTAncyBp
bXBsZW1lbnRhdGlvbiBvZiB0dXBsZSBvZiBDKysweCBpcyBkZWZpY2llbnQsIHJlcXVpcmluZwot
ICAvLyBhbiBleHBsaWNpdCB0eXBlIGNhc3Qgb2YgTlVMTCB0byBiZSB1c2VkLgotICA6OnN0ZDo6
dHVwbGU8Ym9vbCwgY2hhciwgc2hvcnQsIHRlc3Rpbmc6OmludGVybmFsOjpJbnQzMiwgIC8vIE5P
TElOVAotICAgICAgICAgICAgICAgdGVzdGluZzo6aW50ZXJuYWw6OkludDY0LCBmbG9hdCwgZG91
YmxlLCBjb25zdCBjaGFyKiwgdm9pZCosCi0gICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4KLSAg
ICAgIHQxMChmYWxzZSwgJ2EnLCAzLCA0LCA1LCAxLjVGLCAtMi41LCBzdHIsIEltcGxpY2l0Q2Fz
dF88dm9pZCo+KE5VTEwpLAotICAgICAgICAgICIxMCIpOwotICBFWFBFQ1RfRVEoIihmYWxzZSwg
J2EnICg5NywgMHg2MSksIDMsIDQsIDUsIDEuNSwgLTIuNSwgIiArIFByaW50UG9pbnRlcihzdHIp
ICsKLSAgICAgICAgICAgICIgcG9pbnRpbmcgdG8gXCI4XCIsIE5VTEwsIFwiMTBcIikiLAotICAg
ICAgICAgICAgUHJpbnQodDEwKSk7Ci19Ci0KLS8vIE5lc3RlZCB0dXBsZXMuCi1URVNUKFByaW50
U3RkVHVwbGVUZXN0LCBOZXN0ZWRUdXBsZSkgewotICA6OnN0ZDo6dHVwbGU8IDo6c3RkOjp0dXBs
ZTxpbnQsIGJvb2w+LCBjaGFyPiBuZXN0ZWQoCi0gICAgICA6OnN0ZDo6bWFrZV90dXBsZSg1LCB0
cnVlKSwgJ2EnKTsKLSAgRVhQRUNUX0VRKCIoKDUsIHRydWUpLCAnYScgKDk3LCAweDYxKSkiLCBQ
cmludChuZXN0ZWQpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9MQU5HX0NYWDExCi0KLS8vIFRl
c3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCB1bnByaW50YWJsZSB0eXBlcy4KLQotLy8gVW5wcmlu
dGFibGUgdHlwZXMgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi1URVNUKFByaW50VW5wcmludGFi
bGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1lc3BhY2UpIHsKLSAgRVhQRUNUX0VRKCIxLWJ5dGUgb2Jq
ZWN0IDwwMD4iLAotICAgICAgICAgICAgUHJpbnQoVW5wcmludGFibGVUZW1wbGF0ZUluR2xvYmFs
PGNoYXI+KCkpKTsKLX0KLQotLy8gVW5wcmludGFibGUgdHlwZXMgaW4gYSB1c2VyIG5hbWVzcGFj
ZS4KLVRFU1QoUHJpbnRVbnByaW50YWJsZVR5cGVUZXN0LCBJblVzZXJOYW1lc3BhY2UpIHsKLSAg
RVhQRUNUX0VRKCIxNi1ieXRlIG9iamVjdCA8RUYtMTIgMDAtMDAgMzQtQUIgMDAtMDAgMDAtMDAg
MDAtMDAgMDAtMDAgMDAtMDA+IiwKLSAgICAgICAgICAgIFByaW50KDo6Zm9vOjpVbnByaW50YWJs
ZUluRm9vKCkpKTsKLX0KLQotLy8gVW5wcmludGFibGUgdHlwZXMgYXJlIHRoYXQgdG9vIGJpZyB0
byBiZSBwcmludGVkIGNvbXBsZXRlbHkuCi0KLXN0cnVjdCBCaWcgewotICBCaWcoKSB7IG1lbXNl
dChhcnJheSwgMCwgc2l6ZW9mKGFycmF5KSk7IH0KLSAgY2hhciBhcnJheVsyNTddOwotfTsKLQot
VEVTVChQcmludFVucHJpdGFibGVUeXBlVGVzdCwgQmlnT2JqZWN0KSB7Ci0gIEVYUEVDVF9FUSgi
MjU3LWJ5dGUgb2JqZWN0IDwwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCi0g
ICAgICAgICAgICAiMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgIgotICAgICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAw
LTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwICIKLSAgICAgICAgICAgICIwMC0wMCAw
MC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAuLi4gMDAtMDAgMDAtMDAgMDAtMDAgIgotICAg
ICAgICAgICAgIjAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAwIDAwLTAw
IDAwLTAwIDAwLTAwICIKLSAgICAgICAgICAgICIwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0w
MCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAiCi0gICAgICAgICAgICAiMDAtMDAgMDAt
MDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDAtMDAgMDA+IiwKLSAgICAgICAgICAg
IFByaW50KEJpZygpKSk7Ci19Ci0KLS8vIFRlc3RzIHByaW50aW5nIHVzZXItZGVmaW5lZCBzdHJl
YW1hYmxlIHR5cGVzLgotCi0vLyBTdHJlYW1hYmxlIHR5cGVzIGluIHRoZSBnbG9iYWwgbmFtZXNw
YWNlLgotVEVTVChQcmludFN0cmVhbWFibGVUeXBlVGVzdCwgSW5HbG9iYWxOYW1lc3BhY2UpIHsK
LSAgU3RyZWFtYWJsZUluR2xvYmFsIHg7Ci0gIEVYUEVDVF9FUSgiU3RyZWFtYWJsZUluR2xvYmFs
IiwgUHJpbnQoeCkpOwotICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVJbkdsb2JhbCoiLCBQcmludCgm
eCkpOwotfQotCi0vLyBQcmludGFibGUgdGVtcGxhdGUgdHlwZXMgaW4gYSB1c2VyIG5hbWVzcGFj
ZS4KLVRFU1QoUHJpbnRTdHJlYW1hYmxlVHlwZVRlc3QsIFRlbXBsYXRlVHlwZUluVXNlck5hbWVz
cGFjZSkgewotICBFWFBFQ1RfRVEoIlN0cmVhbWFibGVUZW1wbGF0ZUluRm9vOiAwIiwKLSAgICAg
ICAgICAgIFByaW50KDo6Zm9vOjpTdHJlYW1hYmxlVGVtcGxhdGVJbkZvbzxpbnQ+KCkpKTsKLX0K
LQotLy8gVGVzdHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIHR5cGVzIHRoYXQgaGF2ZSBhIFByaW50
VG8oKSBmdW5jdGlvbi4KLVRFU1QoUHJpbnRQcmludGFibGVUeXBlVGVzdCwgSW5Vc2VyTmFtZXNw
YWNlKSB7Ci0gIEVYUEVDVF9FUSgiUHJpbnRhYmxlVmlhUHJpbnRUbzogMCIsCi0gICAgICAgICAg
ICBQcmludCg6OmZvbzo6UHJpbnRhYmxlVmlhUHJpbnRUbygpKSk7Ci19Ci0KLS8vIFRlc3RzIHBy
aW50aW5nIGEgcG9pbnRlciB0byBhIHVzZXItZGVmaW5lZCB0eXBlIHRoYXQgaGFzIGEgPDwKLS8v
IG9wZXJhdG9yIGZvciBpdHMgcG9pbnRlci4KLVRFU1QoUHJpbnRQcmludGFibGVUeXBlVGVzdCwg
UG9pbnRlckluVXNlck5hbWVzcGFjZSkgewotICA6OmZvbzo6UG9pbnRlclByaW50YWJsZSB4Owot
ICBFWFBFQ1RfRVEoIlBvaW50ZXJQcmludGFibGUqIiwgUHJpbnQoJngpKTsKLX0KLQotLy8gVGVz
dHMgcHJpbnRpbmcgdXNlci1kZWZpbmVkIGNsYXNzIHRlbXBsYXRlIHRoYXQgaGF2ZSBhIFByaW50
VG8oKSBmdW5jdGlvbi4KLVRFU1QoUHJpbnRQcmludGFibGVUeXBlVGVzdCwgVGVtcGxhdGVJblVz
ZXJOYW1lc3BhY2UpIHsKLSAgRVhQRUNUX0VRKCJQcmludGFibGVWaWFQcmludFRvVGVtcGxhdGU6
IDUiLAotICAgICAgICAgICAgUHJpbnQoOjpmb286OlByaW50YWJsZVZpYVByaW50VG9UZW1wbGF0
ZTxpbnQ+KDUpKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHBy
aW50cyBib3RoIHRoZSBhZGRyZXNzIGFuZCB0aGUKLS8vIHZhbHVlIG9mIGEgcmVmZXJlbmNlLgot
VEVTVChQcmludFJlZmVyZW5jZVRlc3QsIFByaW50c0FkZHJlc3NBbmRWYWx1ZSkgewotICBpbnQg
biA9IDU7Ci0gIEVYUEVDVF9FUSgiQCIgKyBQcmludFBvaW50ZXIoJm4pICsgIiA1IiwgUHJpbnRC
eVJlZihuKSk7Ci0KLSAgaW50IGFbMl1bM10gPSB7Ci0gICAgeyAwLCAxLCAyIH0sCi0gICAgeyAz
LCA0LCA1IH0KLSAgfTsKLSAgRVhQRUNUX0VRKCJAIiArIFByaW50UG9pbnRlcihhKSArICIgeyB7
IDAsIDEsIDIgfSwgeyAzLCA0LCA1IH0gfSIsCi0gICAgICAgICAgICBQcmludEJ5UmVmKGEpKTsK
LQotICBjb25zdCA6OmZvbzo6VW5wcmludGFibGVJbkZvbyB4OwotICBFWFBFQ1RfRVEoIkAiICsg
UHJpbnRQb2ludGVyKCZ4KSArICIgMTYtYnl0ZSBvYmplY3QgIgotICAgICAgICAgICAgIjxFRi0x
MiAwMC0wMCAzNC1BQiAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMCAwMC0wMD4iLAotICAgICAgICAg
ICAgUHJpbnRCeVJlZih4KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmlu
dGVyIHByaW50cyBhIGZ1bmN0aW9uIHBvaW50ZXIgcGFzc2VkIGJ5Ci0vLyByZWZlcmVuY2UuCi1U
RVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc0Z1bmN0aW9uUG9pbnRlcikgewotICB2b2lk
ICgqZnApKGludCBuKSA9ICZNeUZ1bmN0aW9uOwotICBjb25zdCBzdGQ6OnN0cmluZyBmcF9wb2lu
dGVyX3N0cmluZyA9Ci0gICAgICBQcmludFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4oJmZwKSk7Ci0gIC8vIFdlIGNhbm5vdCBkaXJlY3RseSBjYXN0ICZNeUZ1bmN0aW9uIHRv
IGNvbnN0IHZvaWQqIGJlY2F1c2UgdGhlCi0gIC8vIHN0YW5kYXJkIGRpc2FsbG93cyBjYXN0aW5n
IGJldHdlZW4gcG9pbnRlcnMgdG8gZnVuY3Rpb25zIGFuZAotICAvLyBwb2ludGVycyB0byBvYmpl
Y3RzLCBhbmQgc29tZSBjb21waWxlcnMgKGUuZy4gR0NDIDMuNCkgZW5mb3JjZQotICAvLyB0aGlz
IGxpbWl0YXRpb24uCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIGZwX3N0cmluZyA9IFByaW50UG9pbnRl
cihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPigKLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50ZXJuYWw6OkJpZ2dlc3RJbnQ+KGZwKSkpOwotICBFWFBFQ1RfRVEoIkAiICsgZnBfcG9pbnRl
cl9zdHJpbmcgKyAiICIgKyBmcF9zdHJpbmcsCi0gICAgICAgICAgICBQcmludEJ5UmVmKGZwKSk7
Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHVuaXZlcnNhbCBwcmludGVyIHByaW50cyBhIG1lbWJl
ciBmdW5jdGlvbiBwb2ludGVyCi0vLyBwYXNzZWQgYnkgcmVmZXJlbmNlLgotVEVTVChQcmludFJl
ZmVyZW5jZVRlc3QsIEhhbmRsZXNNZW1iZXJGdW5jdGlvblBvaW50ZXIpIHsKLSAgaW50IChGb286
OipwKShjaGFyIGNoKSA9ICZGb286Ok15TWV0aG9kOwotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgo
Ci0gICAgICBQcmludEJ5UmVmKHApLAotICAgICAgIkAiICsgUHJpbnRQb2ludGVyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KCZwKSkgKyAiICIgKwotICAgICAgICAgIFByaW50KHNpemVv
ZihwKSkgKyAiLWJ5dGUgb2JqZWN0ICIpKTsKLQotICBjaGFyIChGb286OipwMikoaW50IG4pID0g
JkZvbzo6TXlWaXJ0dWFsTWV0aG9kOwotICBFWFBFQ1RfVFJVRShIYXNQcmVmaXgoCi0gICAgICBQ
cmludEJ5UmVmKHAyKSwKLSAgICAgICJAIiArIFByaW50UG9pbnRlcihyZWludGVycHJldF9jYXN0
PGNvbnN0IHZvaWQqPigmcDIpKSArICIgIiArCi0gICAgICAgICAgUHJpbnQoc2l6ZW9mKHAyKSkg
KyAiLWJ5dGUgb2JqZWN0ICIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgdW5pdmVyc2FsIHBy
aW50ZXIgcHJpbnRzIGEgbWVtYmVyIHZhcmlhYmxlIHBvaW50ZXIKLS8vIHBhc3NlZCBieSByZWZl
cmVuY2UuCi1URVNUKFByaW50UmVmZXJlbmNlVGVzdCwgSGFuZGxlc01lbWJlclZhcmlhYmxlUG9p
bnRlcikgewotICBpbnQgKEZvbzo6KnApID0gJkZvbzo6dmFsdWU7ICAvLyBOT0xJTlQKLSAgRVhQ
RUNUX1RSVUUoSGFzUHJlZml4KAotICAgICAgUHJpbnRCeVJlZihwKSwKLSAgICAgICJAIiArIFBy
aW50UG9pbnRlcigmcCkgKyAiICIgKyBQcmludChzaXplb2YocCkpICsgIi1ieXRlIG9iamVjdCAi
KSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
KCksIHdoaWNoIGlzIHVzZWQgdG8gcHJpbnQKLS8vIGFuIG9wZXJhbmQgaW4gYSBjb21wYXJpc29u
IGFzc2VydGlvbiAoZS5nLiBBU1NFUlRfRVEpIHdoZW4gdGhlIGFzc2VydGlvbgotLy8gZmFpbHMs
IGZvcm1hdHMgdGhlIG9wZXJhbmQgaW4gdGhlIGRlc2lyZWQgd2F5LgotCi0vLyBzY2FsYXIKLVRF
U1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JTY2FsYXIp
IHsKLSAgRVhQRUNUX1NUUkVRKCIxMjMiLAotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKDEyMywgMTI0KS5jX3N0cigpKTsKLX0KLQotLy8gbm9uLWNoYXIg
cG9pbnRlcgotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jr
c0Zvck5vbkNoYXJQb2ludGVyKSB7Ci0gIGludCBuID0gMDsKLSAgRVhQRUNUX0VRKFByaW50UG9p
bnRlcigmbiksCi0gICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uo
Jm4sICZuKS5jX3N0cigpKTsKLX0KLQotLy8gbm9uLWNoYXIgYXJyYXkKLVRFU1QoRm9ybWF0Rm9y
Q29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgRm9ybWF0c05vbkNoYXJBcnJheUFzUG9pbnRl
cikgewotICAvLyBJbiBleHByZXNzaW9uICdhcnJheSA9PSB4JywgJ2FycmF5JyBpcyBjb21wYXJl
ZCBieSBwb2ludGVyLgotICAvLyBUaGVyZWZvcmUgd2Ugd2FudCB0byBwcmludCBhbiBhcnJheSBv
cGVyYW5kIGFzIGEgcG9pbnRlci4KLSAgaW50IG5bXSA9IHsgMSwgMiwgMyB9OwotICBFWFBFQ1Rf
RVEoUHJpbnRQb2ludGVyKG4pLAotICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1
cmVNZXNzYWdlKG4sIG4pLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBmb3JtYXR0aW5nIGEgY2hh
ciBwb2ludGVyIHdoZW4gaXQncyBjb21wYXJlZCB3aXRoIGFub3RoZXIgcG9pbnRlci4KLS8vIElu
IHRoaXMgY2FzZSB3ZSB3YW50IHRvIHByaW50IGl0IGFzIGEgcmF3IHBvaW50ZXIsIGFzIHRoZSBj
b21wYXJpc2lvbiBpcyBieQotLy8gcG9pbnRlci4KLQotLy8gY2hhciBwb2ludGVyIHZzIHBvaW50
ZXIKLVRFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwgV29ya3NGb3JD
aGFyUG9pbnRlclZzUG9pbnRlcikgewotICAvLyBJbiBleHByZXNzaW9uICdwID09IHgnLCB3aGVy
ZSAncCcgYW5kICd4JyBhcmUgKGNvbnN0IG9yIG5vdCkgY2hhcgotICAvLyBwb2ludGVycywgdGhl
IG9wZXJhbmRzIGFyZSBjb21wYXJlZCBieSBwb2ludGVyLiAgVGhlcmVmb3JlIHdlCi0gIC8vIHdh
bnQgdG8gcHJpbnQgJ3AnIGFzIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGEgQyBzdHJpbmcgKHdlIGRv
bid0Ci0gIC8vIGV2ZW4ga25vdyBpZiBpdCdzIHN1cHBvc2VkIHRvIHBvaW50IHRvIGEgdmFsaWQg
QyBzdHJpbmcpLgotCi0gIC8vIGNvbnN0IGNoYXIqCi0gIGNvbnN0IGNoYXIqIHMgPSAiaGVsbG8i
OwotICBFWFBFQ1RfRVEoUHJpbnRQb2ludGVyKHMpLAotICAgICAgICAgICAgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHMsIHMpLmNfc3RyKCkpOwotCi0gIC8vIGNoYXIqCi0gIGNo
YXIgY2ggPSAnYSc7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIoJmNoKSwKLSAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZSgmY2gsICZjaCkuY19zdHIoKSk7Ci19
Ci0KLS8vIHdjaGFyX3QgcG9pbnRlciB2cyBwb2ludGVyCi1URVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0NoYXJQb2ludGVyVnNQb2ludGVyKSB7Ci0g
IC8vIEluIGV4cHJlc3Npb24gJ3AgPT0geCcsIHdoZXJlICdwJyBhbmQgJ3gnIGFyZSAoY29uc3Qg
b3Igbm90KSBjaGFyCi0gIC8vIHBvaW50ZXJzLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGJ5
IHBvaW50ZXIuICBUaGVyZWZvcmUgd2UKLSAgLy8gd2FudCB0byBwcmludCAncCcgYXMgYSBwb2lu
dGVyIGluc3RlYWQgb2YgYSB3aWRlIEMgc3RyaW5nICh3ZSBkb24ndAotICAvLyBldmVuIGtub3cg
aWYgaXQncyBzdXBwb3NlZCB0byBwb2ludCB0byBhIHZhbGlkIHdpZGUgQyBzdHJpbmcpLgotCi0g
IC8vIGNvbnN0IHdjaGFyX3QqCi0gIGNvbnN0IHdjaGFyX3QqIHMgPSBMImhlbGxvIjsKLSAgRVhQ
RUNUX0VRKFByaW50UG9pbnRlcihzKSwKLSAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25G
YWlsdXJlTWVzc2FnZShzLCBzKS5jX3N0cigpKTsKLQotICAvLyB3Y2hhcl90KgotICB3Y2hhcl90
IGNoID0gTCdhJzsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcigmY2gpLAotICAgICAgICAgICAg
Rm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlKCZjaCwgJmNoKS5jX3N0cigpKTsKLX0K
LQotLy8gVGVzdHMgZm9ybWF0dGluZyBhIGNoYXIgcG9pbnRlciB3aGVuIGl0J3MgY29tcGFyZWQg
dG8gYSBzdHJpbmcgb2JqZWN0LgotLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gcHJpbnQgdGhl
IGNoYXIgcG9pbnRlciBhcyBhIEMgc3RyaW5nLgotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJ
TkcKLS8vIGNoYXIgcG9pbnRlciB2cyA6OnN0cmluZwotVEVTVChGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNTdHJpbmcpIHsKLSAgY29u
c3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKLSAgRVhQRUNUX1NUUkVRKCJcImhlbGxvIFxc
XCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAg
ICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6OnN0cmlu
ZygpKS5jX3N0cigpKTsKLQotICAvLyBjaGFyKgotICBjaGFyIHN0cltdID0gImhpXDEiOwotICBj
aGFyKiBwID0gc3RyOwotICBFWFBFQ1RfU1RSRVEoIlwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmlu
ZyBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29t
cGFyaXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RyaW5nKCkpLmNfc3RyKCkpOwotfQotI2VuZGlm
Ci0KLS8vIGNoYXIgcG9pbnRlciB2cyBzdGQ6OnN0cmluZwotVEVTVChGb3JtYXRGb3JDb21wYXJp
c29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvckNoYXJQb2ludGVyVnNTdGRTdHJpbmcpIHsK
LSAgY29uc3QgY2hhciogcyA9ICJoZWxsbyBcIndvcmxkIjsKLSAgRVhQRUNUX1NUUkVRKCJcImhl
bGxvIFxcXCJ3b3JsZFwiIiwgIC8vIFRoZSBzdHJpbmcgY29udGVudCBzaG91bGQgYmUgZXNjYXBl
ZC4KLSAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzLCA6
OnN0ZDo6c3RyaW5nKCkpLmNfc3RyKCkpOwotCi0gIC8vIGNoYXIqCi0gIGNoYXIgc3RyW10gPSAi
aGlcMSI7Ci0gIGNoYXIqIHAgPSBzdHI7Ci0gIEVYUEVDVF9TVFJFUSgiXCJoaVxceDFcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocCwgOjpzdGQ6OnN0cmluZygpKS5jX3N0
cigpKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotLy8gd2NoYXJfdCBwb2lu
dGVyIHZzIDo6d3N0cmluZwotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VU
ZXN0LCBXb3Jrc0ZvcldDaGFyUG9pbnRlclZzV1N0cmluZykgewotICBjb25zdCB3Y2hhcl90KiBz
ID0gTCJoaSBcIndvcmxkIjsKLSAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29ybGRcIiIsICAv
LyBUaGUgc3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAgICBG
b3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjp3c3RyaW5nKCkpLmNfc3RyKCkp
OwotCi0gIC8vIHdjaGFyX3QqCi0gIHdjaGFyX3Qgc3RyW10gPSBMImhpXDEiOwotICB3Y2hhcl90
KiBwID0gc3RyOwotICBFWFBFQ1RfU1RSRVEoIkxcImhpXFx4MVwiIiwgIC8vIFRoZSBzdHJpbmcg
Y29udGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBh
cmlzb25GYWlsdXJlTWVzc2FnZShwLCA6OndzdHJpbmcoKSkuY19zdHIoKSk7Ci19Ci0jZW5kaWYK
LQotI2lmIEdURVNUX0hBU19TVERfV1NUUklORwotLy8gd2NoYXJfdCBwb2ludGVyIHZzIHN0ZDo6
d3N0cmluZwotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jr
c0ZvcldDaGFyUG9pbnRlclZzU3RkV1N0cmluZykgewotICBjb25zdCB3Y2hhcl90KiBzID0gTCJo
aSBcIndvcmxkIjsKLSAgRVhQRUNUX1NUUkVRKCJMXCJoaSBcXFwid29ybGRcIiIsICAvLyBUaGUg
c3RyaW5nIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAgICBGb3JtYXRG
b3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2UocywgOjpzdGQ6OndzdHJpbmcoKSkuY19zdHIoKSk7
Ci0KLSAgLy8gd2NoYXJfdCoKLSAgd2NoYXJfdCBzdHJbXSA9IEwiaGlcMSI7Ci0gIHdjaGFyX3Qq
IHAgPSBzdHI7Ci0gIEVYUEVDVF9TVFJFUSgiTFwiaGlcXHgxXCIiLCAgLy8gVGhlIHN0cmluZyBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHAsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOwotfQotI2Vu
ZGlmCi0KLS8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIGFycmF5IHdoZW4gaXQncyBjb21wYXJl
ZCB3aXRoIGEgcG9pbnRlciBvciBhcnJheS4KLS8vIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHBy
aW50IHRoZSBhcnJheSBhcyBhIHJvdyBwb2ludGVyLCBhcyB0aGUgY29tcGFyaXNvbgotLy8gaXMg
YnkgcG9pbnRlci4KLQotLy8gY2hhciBhcnJheSB2cyBwb2ludGVyCi1URVNUKEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNQb2ludGVyKSB7
Ci0gIGNoYXIgc3RyW10gPSAiaGkgXCJ3b3JsZFwiIjsKLSAgY2hhciogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKLSAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOwotfQotCi0vLyBjaGFyIGFycmF5IHZz
IGNoYXIgYXJyYXkKLVRFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdlVGVzdCwg
V29ya3NGb3JDaGFyQXJyYXlWc0NoYXJBcnJheSkgewotICBjb25zdCBjaGFyIHN0cltdID0gImhp
IFwid29ybGRcIiI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKLSAgICAgICAgICAg
IEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0cikuY19zdHIoKSk7Ci19
Ci0KLS8vIHdjaGFyX3QgYXJyYXkgdnMgcG9pbnRlcgotVEVTVChGb3JtYXRGb3JDb21wYXJpc29u
RmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0ZvcldDaGFyQXJyYXlWc1BvaW50ZXIpIHsKLSAgd2No
YXJfdCBzdHJbXSA9IEwiaGkgXCJ3b3JsZFwiIjsKLSAgd2NoYXJfdCogcCA9IE5VTEw7Ci0gIEVY
UEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwKLSAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZShzdHIsIHApLmNfc3RyKCkpOwotfQotCi0vLyB3Y2hhcl90IGFycmF5
IHZzIHdjaGFyX3QgYXJyYXkKLVRFU1QoRm9ybWF0Rm9yQ29tcGFyaXNvbkZhaWx1cmVNZXNzYWdl
VGVzdCwgV29ya3NGb3JXQ2hhckFycmF5VnNXQ2hhckFycmF5KSB7Ci0gIGNvbnN0IHdjaGFyX3Qg
c3RyW10gPSBMImhpIFwid29ybGRcIiI7Ci0gIEVYUEVDVF9FUShQcmludFBvaW50ZXIoc3RyKSwK
LSAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIHN0ciku
Y19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIGZvcm1hdHRpbmcgYSBjaGFyIGFycmF5IHdoZW4gaXQn
cyBjb21wYXJlZCB3aXRoIGEgc3RyaW5nIG9iamVjdC4KLS8vIEluIHRoaXMgY2FzZSB3ZSB3YW50
IHRvIHByaW50IHRoZSBhcnJheSBhcyBhIEMgc3RyaW5nLgotCi0jaWYgR1RFU1RfSEFTX0dMT0JB
TF9TVFJJTkcKLS8vIGNoYXIgYXJyYXkgdnMgc3RyaW5nCi1URVNUKEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yQ2hhckFycmF5VnNTdHJpbmcpIHsKLSAgY29u
c3QgY2hhciBzdHJbXSA9ICJoaSBcIndcMHJsZFwiIjsKLSAgRVhQRUNUX1NUUkVRKCJcImhpIFxc
XCJ3XCIiLCAgLy8gVGhlIGNvbnRlbnQgc2hvdWxkIGJlIGVzY2FwZWQuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEVtYmVkZGVkIE5VTCB0ZXJtaW5hdGVzIHRoZSBzdHJpbmcu
Ci0gICAgICAgICAgICAgICBGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2Uoc3RyLCA6
OnN0cmluZygpKS5jX3N0cigpKTsKLX0KLSNlbmRpZgotCi0vLyBjaGFyIGFycmF5IHZzIHN0ZDo6
c3RyaW5nCi1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtz
Rm9yQ2hhckFycmF5VnNTdGRTdHJpbmcpIHsKLSAgY29uc3QgY2hhciBzdHJbXSA9ICJoaSBcIndv
cmxkXCIiOwotICBFWFBFQ1RfU1RSRVEoIlwiaGkgXFxcIndvcmxkXFxcIlwiIiwgIC8vIFRoZSBj
b250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgRm9ybWF0Rm9yQ29tcGFy
aXNvbkZhaWx1cmVNZXNzYWdlKHN0ciwgOjpzdGQ6OnN0cmluZygpKS5jX3N0cigpKTsKLX0KLQot
I2lmIEdURVNUX0hBU19HTE9CQUxfV1NUUklORwotLy8gd2NoYXJfdCBhcnJheSB2cyB3c3RyaW5n
Ci1URVNUKEZvcm1hdEZvckNvbXBhcmlzb25GYWlsdXJlTWVzc2FnZVRlc3QsIFdvcmtzRm9yV0No
YXJBcnJheVZzV1N0cmluZykgewotICBjb25zdCB3Y2hhcl90IHN0cltdID0gTCJoaSBcIndvcmxk
XCIiOwotICBFWFBFQ1RfU1RSRVEoIkxcImhpIFxcXCJ3b3JsZFxcXCJcIiIsICAvLyBUaGUgY29u
dGVudCBzaG91bGQgYmUgZXNjYXBlZC4KLSAgICAgICAgICAgICAgIEZvcm1hdEZvckNvbXBhcmlz
b25GYWlsdXJlTWVzc2FnZShzdHIsIDo6d3N0cmluZygpKS5jX3N0cigpKTsKLX0KLSNlbmRpZgot
Ci0jaWYgR1RFU1RfSEFTX1NURF9XU1RSSU5HCi0vLyB3Y2hhcl90IGFycmF5IHZzIHN0ZDo6d3N0
cmluZwotVEVTVChGb3JtYXRGb3JDb21wYXJpc29uRmFpbHVyZU1lc3NhZ2VUZXN0LCBXb3Jrc0Zv
cldDaGFyQXJyYXlWc1N0ZFdTdHJpbmcpIHsKLSAgY29uc3Qgd2NoYXJfdCBzdHJbXSA9IEwiaGkg
XCJ3XDBybGRcIiI7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICJMXCJoaSBcXFwid1wiIiwgIC8v
IFRoZSBjb250ZW50IHNob3VsZCBiZSBlc2NhcGVkLgotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRW1iZWRkZWQgTlVMIHRlcm1pbmF0ZXMgdGhlIHN0cmluZy4KLSAgICAgIEZvcm1hdEZvckNv
bXBhcmlzb25GYWlsdXJlTWVzc2FnZShzdHIsIDo6c3RkOjp3c3RyaW5nKCkpLmNfc3RyKCkpOwot
fQotI2VuZGlmCi0KLS8vIFVzZWZ1bCBmb3IgdGVzdGluZyBQcmludFRvU3RyaW5nKCkuICBXZSBj
YW5ub3QgdXNlIEVYUEVDVF9FUSgpCi0vLyB0aGVyZSBhcyBpdHMgaW1wbGVtZW50YXRpb24gdXNl
cyBQcmludFRvU3RyaW5nKCkuICBUaGUgY2FsbGVyIG11c3QKLS8vIGVuc3VyZSB0aGF0ICd2YWx1
ZScgaGFzIG5vIHNpZGUgZWZmZWN0LgotI2RlZmluZSBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXyh2
YWx1ZSwgZXhwZWN0ZWRfc3RyaW5nKSAgICAgICAgIFwKLSAgRVhQRUNUX1RSVUUoUHJpbnRUb1N0
cmluZyh2YWx1ZSkgPT0gKGV4cGVjdGVkX3N0cmluZykpICAgICAgICBcCi0gICAgICA8PCAiIHdo
ZXJlICIgI3ZhbHVlICIgcHJpbnRzIGFzICIgPDwgKFByaW50VG9TdHJpbmcodmFsdWUpKQotCi1U
RVNUKFByaW50VG9TdHJpbmdUZXN0LCBXb3Jrc0ZvclNjYWxhcikgewotICBFWFBFQ1RfUFJJTlRf
VE9fU1RSSU5HXygxMjMsICIxMjMiKTsKLX0KLQotVEVTVChQcmludFRvU3RyaW5nVGVzdCwgV29y
a3NGb3JQb2ludGVyVG9Db25zdENoYXIpIHsKLSAgY29uc3QgY2hhciogcCA9ICJoZWxsbyI7Ci0g
IEVYUEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXCIiKTsKLX0KLQotVEVTVChQcmlu
dFRvU3RyaW5nVGVzdCwgV29ya3NGb3JQb2ludGVyVG9Ob25Db25zdENoYXIpIHsKLSAgY2hhciBz
W10gPSAiaGVsbG8iOwotICBjaGFyKiBwID0gczsKLSAgRVhQRUNUX1BSSU5UX1RPX1NUUklOR18o
cCwgIlwiaGVsbG9cIiIpOwotfQotCi1URVNUKFByaW50VG9TdHJpbmdUZXN0LCBFc2NhcGVzRm9y
UG9pbnRlclRvQ29uc3RDaGFyKSB7Ci0gIGNvbnN0IGNoYXIqIHAgPSAiaGVsbG9cbiI7Ci0gIEVY
UEVDVF9QUklOVF9UT19TVFJJTkdfKHAsICJcImhlbGxvXFxuXCIiKTsKLX0KLQotVEVTVChQcmlu
dFRvU3RyaW5nVGVzdCwgRXNjYXBlc0ZvclBvaW50ZXJUb05vbkNvbnN0Q2hhcikgewotICBjaGFy
IHNbXSA9ICJoZWxsb1wxIjsKLSAgY2hhciogcCA9IHM7Ci0gIEVYUEVDVF9QUklOVF9UT19TVFJJ
TkdfKHAsICJcImhlbGxvXFx4MVwiIik7Ci19Ci0KLVRFU1QoUHJpbnRUb1N0cmluZ1Rlc3QsIFdv
cmtzRm9yQXJyYXkpIHsKLSAgaW50IG5bM10gPSB7IDEsIDIsIDMgfTsKLSAgRVhQRUNUX1BSSU5U
X1RPX1NUUklOR18obiwgInsgMSwgMiwgMyB9Iik7Ci19Ci0KLVRFU1QoUHJpbnRUb1N0cmluZ1Rl
c3QsIFdvcmtzRm9yQ2hhckFycmF5KSB7Ci0gIGNoYXIgc1tdID0gImhlbGxvIjsKLSAgRVhQRUNU
X1BSSU5UX1RPX1NUUklOR18ocywgIlwiaGVsbG9cIiIpOwotfQotCi1URVNUKFByaW50VG9TdHJp
bmdUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheVdpdGhFbWJlZGRlZE51bCkgewotICBjb25zdCBjaGFy
IHN0cl93aXRoX251bFtdID0gImhlbGxvXDAgd29ybGQiOwotICBFWFBFQ1RfUFJJTlRfVE9fU1RS
SU5HXyhzdHJfd2l0aF9udWwsICJcImhlbGxvXFwwIHdvcmxkXCIiKTsKLQotICBjaGFyIG11dGFi
bGVfc3RyX3dpdGhfbnVsW10gPSAiaGVsbG9cMCB3b3JsZCI7Ci0gIEVYUEVDVF9QUklOVF9UT19T
VFJJTkdfKG11dGFibGVfc3RyX3dpdGhfbnVsLCAiXCJoZWxsb1xcMCB3b3JsZFwiIik7Ci19Ci0K
LSN1bmRlZiBFWFBFQ1RfUFJJTlRfVE9fU1RSSU5HXwotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJp
bnRUZXN0LCBXb3Jrc0Zvck5vblJlZmVyZW5jZSkgewotICA6OnN0ZDo6c3RyaW5nc3RyZWFtIHNz
OwotICBVbml2ZXJzYWxUZXJzZVByaW50KDEyMywgJnNzKTsKLSAgRVhQRUNUX0VRKCIxMjMiLCBz
cy5zdHIoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2FsVGVyc2VQcmludFRlc3QsIFdvcmtzRm9yUmVm
ZXJlbmNlKSB7Ci0gIGNvbnN0IGludCYgbiA9IDEyMzsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBz
czsKLSAgVW5pdmVyc2FsVGVyc2VQcmludChuLCAmc3MpOwotICBFWFBFQ1RfRVEoIjEyMyIsIHNz
LnN0cigpKTsKLX0KLQotVEVTVChVbml2ZXJzYWxUZXJzZVByaW50VGVzdCwgV29ya3NGb3JDU3Ry
aW5nKSB7Ci0gIGNvbnN0IGNoYXIqIHMxID0gImFiYyI7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0g
c3MxOwotICBVbml2ZXJzYWxUZXJzZVByaW50KHMxLCAmc3MxKTsKLSAgRVhQRUNUX0VRKCJcImFi
Y1wiIiwgc3MxLnN0cigpKTsKLQotICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsK
LSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczI7Ci0gIFVuaXZlcnNhbFRlcnNlUHJpbnQoczIsICZz
czIpOwotICBFWFBFQ1RfRVEoIlwiYWJjXCIiLCBzczIuc3RyKCkpOwotCi0gIGNvbnN0IGNoYXIq
IHMzID0gTlVMTDsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczM7Ci0gIFVuaXZlcnNhbFRlcnNl
UHJpbnQoczMsICZzczMpOwotICBFWFBFQ1RfRVEoIk5VTEwiLCBzczMuc3RyKCkpOwotfQotCi1U
RVNUKFVuaXZlcnNhbFByaW50VGVzdCwgV29ya3NGb3JOb25SZWZlcmVuY2UpIHsKLSAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczsKLSAgVW5pdmVyc2FsUHJpbnQoMTIzLCAmc3MpOwotICBFWFBFQ1Rf
RVEoIjEyMyIsIHNzLnN0cigpKTsKLX0KLQotVEVTVChVbml2ZXJzYWxQcmludFRlc3QsIFdvcmtz
Rm9yUmVmZXJlbmNlKSB7Ci0gIGNvbnN0IGludCYgbiA9IDEyMzsKLSAgOjpzdGQ6OnN0cmluZ3N0
cmVhbSBzczsKLSAgVW5pdmVyc2FsUHJpbnQobiwgJnNzKTsKLSAgRVhQRUNUX0VRKCIxMjMiLCBz
cy5zdHIoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvckNTdHJpbmcp
IHsKLSAgY29uc3QgY2hhciogczEgPSAiYWJjIjsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVhbSBzczE7
Ci0gIFVuaXZlcnNhbFByaW50KHMxLCAmc3MxKTsKLSAgRVhQRUNUX0VRKFByaW50UG9pbnRlcihz
MSkgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczEuc3RyKCkpKTsKLQot
ICBjaGFyKiBzMiA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMxKTsKLSAgOjpzdGQ6OnN0cmluZ3N0cmVh
bSBzczI7Ci0gIFVuaXZlcnNhbFByaW50KHMyLCAmc3MyKTsKLSAgRVhQRUNUX0VRKFByaW50UG9p
bnRlcihzMikgKyAiIHBvaW50aW5nIHRvIFwiYWJjXCIiLCBzdGQ6OnN0cmluZyhzczIuc3RyKCkp
KTsKLQotICBjb25zdCBjaGFyKiBzMyA9IE5VTEw7Ci0gIDo6c3RkOjpzdHJpbmdzdHJlYW0gc3Mz
OwotICBVbml2ZXJzYWxQcmludChzMywgJnNzMyk7Ci0gIEVYUEVDVF9FUSgiTlVMTCIsIHNzMy5z
dHIoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2FsUHJpbnRUZXN0LCBXb3Jrc0ZvckNoYXJBcnJheSkg
ewotICBjb25zdCBjaGFyIHN0cltdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsKLSAgOjpzdGQ6
OnN0cmluZ3N0cmVhbSBzczE7Ci0gIFVuaXZlcnNhbFByaW50KHN0ciwgJnNzMSk7Ci0gIEVYUEVD
VF9FUSgiXCJcXFwiTGluZVxcMCAxXFxcIlxcbkxpbmUgMlwiIiwgc3MxLnN0cigpKTsKLQotICBj
b25zdCBjaGFyIG11dGFibGVfc3RyW10gPSAiXCJMaW5lXDAgMVwiXG5MaW5lIDIiOwotICA6OnN0
ZDo6c3RyaW5nc3RyZWFtIHNzMjsKLSAgVW5pdmVyc2FsUHJpbnQobXV0YWJsZV9zdHIsICZzczIp
OwotICBFWFBFQ1RfRVEoIlwiXFxcIkxpbmVcXDAgMVxcXCJcXG5MaW5lIDJcIiIsIHNzMi5zdHIo
KSk7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfVFIxX1RVUExFCi0KLVRFU1QoVW5pdmVyc2FsVGVyc2VQ
cmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhUcjEsIFByaW50c0VtcHR5VHVwbGUpIHsK
LSAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmlu
Z3MoCi0gICAgICA6OnN0ZDo6dHIxOjptYWtlX3R1cGxlKCkpOwotICBFWFBFQ1RfRVEoMHUsIHJl
c3VsdC5zaXplKCkpOwotfQotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1Rv
U3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNPbmVUdXBsZSkgewotICBTdHJpbmdzIHJlc3VsdCA9
IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKLSAgICAgIDo6c3RkOjp0
cjE6Om1ha2VfdHVwbGUoMSkpOwotICBBU1NFUlRfRVEoMXUsIHJlc3VsdC5zaXplKCkpOwotICBF
WFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwotfQotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJpbnRU
dXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUd29UdXBsZSkgewotICBTdHJp
bmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5ncygKLSAg
ICAgIDo6c3RkOjp0cjE6Om1ha2VfdHVwbGUoMSwgJ2EnKSk7Ci0gIEFTU0VSVF9FUSgydSwgcmVz
dWx0LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Ci0gIEVYUEVDVF9FUSgi
J2EnICg5NywgMHg2MSkiLCByZXN1bHRbMV0pOwotfQotCi1URVNUKFVuaXZlcnNhbFRlcnNlUHJp
bnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoVHIxLCBQcmludHNUZXJzZWx5KSB7Ci0gIGNv
bnN0IGludCBuID0gMTsKLSAgU3RyaW5ncyByZXN1bHQgPSBVbml2ZXJzYWxUZXJzZVByaW50VHVw
bGVGaWVsZHNUb1N0cmluZ3MoCi0gICAgICA6OnN0ZDo6dHIxOjp0dXBsZTxjb25zdCBpbnQmLCBj
b25zdCBjaGFyKj4obiwgImEiKSk7Ci0gIEFTU0VSVF9FUSgydSwgcmVzdWx0LnNpemUoKSk7Ci0g
IEVYUEVDVF9FUSgiMSIsIHJlc3VsdFswXSk7Ci0gIEVYUEVDVF9FUSgiXCJhXCIiLCByZXN1bHRb
MV0pOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UUjFfVFVQTEUKLQotI2lmIEdURVNUX0hB
U19TVERfVFVQTEVfCi0KLVRFU1QoVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJp
bmdzVGVzdFdpdGhTdGQsIFByaW50c0VtcHR5VHVwbGUpIHsKLSAgU3RyaW5ncyByZXN1bHQgPSBV
bml2ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3MoOjpzdGQ6Om1ha2VfdHVwbGUo
KSk7Ci0gIEVYUEVDVF9FUSgwdSwgcmVzdWx0LnNpemUoKSk7Ci19Ci0KLVRFU1QoVW5pdmVyc2Fs
VGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzVGVzdFdpdGhTdGQsIFByaW50c09uZVR1cGxl
KSB7Ci0gIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2FsVGVyc2VQcmludFR1cGxlRmllbGRzVG9T
dHJpbmdzKAotICAgICAgOjpzdGQ6Om1ha2VfdHVwbGUoMSkpOwotICBBU1NFUlRfRVEoMXUsIHJl
c3VsdC5zaXplKCkpOwotICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwotfQotCi1URVNUKFVu
aXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZpZWxkc1RvU3RyaW5nc1Rlc3RXaXRoU3RkLCBQcmludHNU
d29UdXBsZSkgewotICBTdHJpbmdzIHJlc3VsdCA9IFVuaXZlcnNhbFRlcnNlUHJpbnRUdXBsZUZp
ZWxkc1RvU3RyaW5ncygKLSAgICAgIDo6c3RkOjptYWtlX3R1cGxlKDEsICdhJykpOwotICBBU1NF
UlRfRVEoMnUsIHJlc3VsdC5zaXplKCkpOwotICBFWFBFQ1RfRVEoIjEiLCByZXN1bHRbMF0pOwot
ICBFWFBFQ1RfRVEoIidhJyAoOTcsIDB4NjEpIiwgcmVzdWx0WzFdKTsKLX0KLQotVEVTVChVbml2
ZXJzYWxUZXJzZVByaW50VHVwbGVGaWVsZHNUb1N0cmluZ3NUZXN0V2l0aFN0ZCwgUHJpbnRzVGVy
c2VseSkgewotICBjb25zdCBpbnQgbiA9IDE7Ci0gIFN0cmluZ3MgcmVzdWx0ID0gVW5pdmVyc2Fs
VGVyc2VQcmludFR1cGxlRmllbGRzVG9TdHJpbmdzKAotICAgICAgOjpzdGQ6OnR1cGxlPGNvbnN0
IGludCYsIGNvbnN0IGNoYXIqPihuLCAiYSIpKTsKLSAgQVNTRVJUX0VRKDJ1LCByZXN1bHQuc2l6
ZSgpKTsKLSAgRVhQRUNUX0VRKCIxIiwgcmVzdWx0WzBdKTsKLSAgRVhQRUNUX0VRKCJcImFcIiIs
IHJlc3VsdFsxXSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NURF9UVVBMRV8KLQotfSAg
Ly8gbmFtZXNwYWNlIGd0ZXN0X3ByaW50ZXJzX3Rlc3QKLX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2E4YmE5MzNhZWY5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdC10ZXN0LXBhcnRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDIwOCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLgotLy8gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1bGUpCi0vLwotCi0jaW5jbHVk
ZSAiZ3Rlc3QvZ3Rlc3QtdGVzdC1wYXJ0LmgiCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgot
Ci11c2luZyB0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRl
c3Rpbmc6OlRlc3RQYXJ0UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1bHRBcnJh
eTsKLQotbmFtZXNwYWNlIHsKLQotLy8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0IGNsYXNzLgot
Ci0vLyBUaGUgdGVzdCBmaXh0dXJlIGZvciB0ZXN0aW5nIFRlc3RQYXJ0UmVzdWx0LgotY2xhc3Mg
VGVzdFBhcnRSZXN1bHRUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBh
cnRSZXN1bHRUZXN0KCkKLSAgICAgIDogcjFfKFRlc3RQYXJ0UmVzdWx0OjprU3VjY2VzcywgImZv
by9iYXIuY2MiLCAxMCwgIlN1Y2Nlc3MhIiksCi0gICAgICAgIHIyXyhUZXN0UGFydFJlc3VsdDo6
a05vbkZhdGFsRmFpbHVyZSwgImZvby9iYXIuY2MiLCAtMSwgIkZhaWx1cmUhIiksCi0gICAgICAg
IHIzXyhUZXN0UGFydFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgTlVMTCwgLTEsICJGYWlsdXJlISIp
IHt9Ci0KLSAgVGVzdFBhcnRSZXN1bHQgcjFfLCByMl8sIHIzXzsKLX07Ci0KLQotVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgewotICBNZXNzYWdlIG1lc3NhZ2U7
Ci0gIG1lc3NhZ2UgPDwgInNvbWV0aGluZyBpcyB0ZXJyaWJseSB3cm9uZyI7Ci0gIG1lc3NhZ2Ug
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHRlc3Rpbmc6OmludGVybmFsOjprU3RhY2tUcmFj
ZU1hcmtlcik7Ci0gIG1lc3NhZ2UgPDwgInNvbWUgdW5pbXBvcnRhbnQgc3RhY2sgdHJhY2UiOwot
Ci0gIGNvbnN0IFRlc3RQYXJ0UmVzdWx0IHJlc3VsdChUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFs
RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21lX2ZpbGUuY2MiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlLkdldFN0cmluZygpLmNfc3RyKCkpOwotCi0gIEVYUEVDVF9FUShUZXN0
UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwgcmVzdWx0LnR5cGUoKSk7Ci0gIEVYUEVDVF9T
VFJFUSgic29tZV9maWxlLmNjIiwgcmVzdWx0LmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX0VRKDQy
LCByZXN1bHQubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9TVFJFUShtZXNzYWdlLkdldFN0cmlu
ZygpLmNfc3RyKCksIHJlc3VsdC5tZXNzYWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoInNvbWV0aGlu
ZyBpcyB0ZXJyaWJseSB3cm9uZyIsIHJlc3VsdC5zdW1tYXJ5KCkpOwotfQotCi1URVNUX0YoVGVz
dFBhcnRSZXN1bHRUZXN0LCBSZXN1bHRBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RQYXJ0
UmVzdWx0IHN1Y2Nlc3MoVGVzdFBhcnRSZXN1bHQ6OmtTdWNjZXNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmaWxlLmNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVzc2FnZSIpOwotICBFWFBF
Q1RfVFJVRShzdWNjZXNzLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MuZmFpbGVk
KCkpOwotICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgRVhQ
RUNUX0ZBTFNFKHN1Y2Nlc3MuZmF0YWxseV9mYWlsZWQoKSk7Ci0KLSAgY29uc3QgVGVzdFBhcnRS
ZXN1bHQgbm9uZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5jYyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZh
dGFsX2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShub25mYXRhbF9mYWlsdXJlLmZh
aWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUobm9uZmF0YWxfZmFpbHVyZS5ub25mYXRhbGx5X2ZhaWxl
ZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKG5vbmZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7
Ci0KLSAgY29uc3QgVGVzdFBhcnRSZXN1bHQgZmF0YWxfZmFpbHVyZShUZXN0UGFydFJlc3VsdDo6
a0ZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmls
ZS5jYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lc3NhZ2UiKTsKLSAgRVhQRUNUX0ZBTFNF
KGZhdGFsX2ZhaWx1cmUucGFzc2VkKCkpOwotICBFWFBFQ1RfVFJVRShmYXRhbF9mYWlsdXJlLmZh
aWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKGZhdGFsX2ZhaWx1cmUubm9uZmF0YWxseV9mYWlsZWQo
KSk7Ci0gIEVYUEVDVF9UUlVFKGZhdGFsX2ZhaWx1cmUuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0K
LS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0Ojp0eXBlKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRU
ZXN0LCB0eXBlKSB7Ci0gIEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a1N1Y2Nlc3MsIHIxXy50
eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1cmUsIHIy
Xy50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsIHIz
Xy50eXBlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6ZmlsZV9uYW1lKCkuCi1U
RVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBmaWxlX25hbWUpIHsKLSAgRVhQRUNUX1NUUkVRKCJm
b28vYmFyLmNjIiwgcjFfLmZpbGVfbmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKE5VTEwsIHIzXy5m
aWxlX25hbWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpsaW5lX251bWJlcigp
LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0VGVzdCwgbGluZV9udW1iZXIpIHsKLSAgRVhQRUNUX0VR
KDEwLCByMV8ubGluZV9udW1iZXIoKSk7Ci0gIEVYUEVDVF9FUSgtMSwgcjJfLmxpbmVfbnVtYmVy
KCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UGFydFJlc3VsdDo6bWVzc2FnZSgpLgotVEVTVF9GKFRl
c3RQYXJ0UmVzdWx0VGVzdCwgbWVzc2FnZSkgewotICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MhIiwg
cjFfLm1lc3NhZ2UoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpwYXNzZWQoKS4K
LVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIFBhc3NlZCkgewotICBFWFBFQ1RfVFJVRShyMV8u
cGFzc2VkKCkpOwotICBFWFBFQ1RfRkFMU0UocjJfLnBhc3NlZCgpKTsKLSAgRVhQRUNUX0ZBTFNF
KHIzXy5wYXNzZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RQYXJ0UmVzdWx0OjpmYWlsZWQoKS4K
LVRFU1RfRihUZXN0UGFydFJlc3VsdFRlc3QsIEZhaWxlZCkgewotICBFWFBFQ1RfRkFMU0UocjFf
LmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUocjJfLmZhaWxlZCgpKTsKLSAgRVhQRUNUX1RSVUUo
cjNfLmZhaWxlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6OmZhdGFsbHlfZmFp
bGVkKCkuCi1URVNUX0YoVGVzdFBhcnRSZXN1bHRUZXN0LCBGYXRhbGx5RmFpbGVkKSB7Ci0gIEVY
UEVDVF9GQUxTRShyMV8uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9GQUxTRShyMl8uZmF0
YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIzXy5mYXRhbGx5X2ZhaWxlZCgpKTsKLX0K
LQotLy8gVGVzdHMgVGVzdFBhcnRSZXN1bHQ6Om5vbmZhdGFsbHlfZmFpbGVkKCkuCi1URVNUX0Yo
VGVzdFBhcnRSZXN1bHRUZXN0LCBOb25mYXRhbGx5RmFpbGVkKSB7Ci0gIEVYUEVDVF9GQUxTRShy
MV8ubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHIyXy5ub25mYXRhbGx5X2Zh
aWxlZCgpKTsKLSAgRVhQRUNUX0ZBTFNFKHIzXy5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLX0KLQot
Ly8gVGVzdHMgdGhlIFRlc3RQYXJ0UmVzdWx0QXJyYXkgY2xhc3MuCi0KLWNsYXNzIFRlc3RQYXJ0
UmVzdWx0QXJyYXlUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgVGVzdFBhcnRS
ZXN1bHRBcnJheVRlc3QoKQotICAgICAgOiByMV8oVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZh
aWx1cmUsICJmb28vYmFyLmNjIiwgLTEsICJGYWlsdXJlIDEiKSwKLSAgICAgICAgcjJfKFRlc3RQ
YXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLCAiZm9vL2Jhci5jYyIsIC0xLCAiRmFpbHVyZSAyIikg
e30KLQotICBjb25zdCBUZXN0UGFydFJlc3VsdCByMV8sIHIyXzsKLX07Ci0KLS8vIFRlc3RzIHRo
YXQgVGVzdFBhcnRSZXN1bHRBcnJheSBpbml0aWFsbHkgaGFzIHNpemUgMC4KLVRFU1RfRihUZXN0
UGFydFJlc3VsdEFycmF5VGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAgVGVzdFBhcnRSZXN1
bHRBcnJheSByZXN1bHRzOwotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXplKCkpOwotfQotCi0v
LyBUZXN0cyB0aGF0IFRlc3RQYXJ0UmVzdWx0QXJyYXkgY29udGFpbnMgdGhlIGdpdmVuIFRlc3RQ
YXJ0UmVzdWx0Ci0vLyBhZnRlciBvbmUgQXBwZW5kKCkgb3BlcmF0aW9uLgotVEVTVF9GKFRlc3RQ
YXJ0UmVzdWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0QWZ0ZXJBcHBlbmQpIHsKLSAg
VGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwotICByZXN1bHRzLkFwcGVuZChyMV8pOwotICBF
WFBFQ1RfRVEoMSwgcmVzdWx0cy5zaXplKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMSIs
IHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBUZXN0UGFydFJlc3VsdEFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBUZXN0UGFydFJlc3Vs
dHMKLS8vIGFmdGVyIHR3byBBcHBlbmQoKSBvcGVyYXRpb25zLgotVEVTVF9GKFRlc3RQYXJ0UmVz
dWx0QXJyYXlUZXN0LCBDb250YWluc0dpdmVuUmVzdWx0c0FmdGVyVHdvQXBwZW5kcykgewotICBU
ZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHJlc3VsdHMuQXBwZW5kKHIxXyk7Ci0gIHJl
c3VsdHMuQXBwZW5kKHIyXyk7Ci0gIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVY
UEVDVF9TVFJFUSgiRmFpbHVyZSAxIiwgcmVzdWx0cy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNz
YWdlKCkpOwotICBFWFBFQ1RfU1RSRVEoIkZhaWx1cmUgMiIsIHJlc3VsdHMuR2V0VGVzdFBhcnRS
ZXN1bHQoMSkubWVzc2FnZSgpKTsKLX0KLQotdHlwZWRlZiBUZXN0UGFydFJlc3VsdEFycmF5VGVz
dCBUZXN0UGFydFJlc3VsdEFycmF5RGVhdGhUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBwcm9n
cmFtIGRpZXMgd2hlbiBHZXRUZXN0UGFydFJlc3VsdCgpIGlzIGNhbGxlZCB3aXRoCi0vLyBhbiBp
bnZhbGlkIGluZGV4LgotVEVTVF9GKFRlc3RQYXJ0UmVzdWx0QXJyYXlEZWF0aFRlc3QsIERpZXNX
aGVuSW5kZXhJc091dE9mQm91bmQpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSByZXN1bHRzOwot
ICByZXN1bHRzLkFwcGVuZChyMV8pOwotCi0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQocmVz
dWx0cy5HZXRUZXN0UGFydFJlc3VsdCgtMSksICIiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBP
UlRFRChyZXN1bHRzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLCAiIik7Ci19Ci0KLS8vIFRPRE8obWhl
dWxlQGdvb2dsZS5jb20pOiBBZGQgYSB0ZXN0IGZvciB0aGUgY2xhc3MgSGFzTmV3RmF0YWxGYWls
dXJlSGVscGVyLgotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3QtdHVwbGVfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHVwbGVfdGVz
dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYTNlMGFjNGIyLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10dXBsZV90ZXN0LmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMzIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
Ci0KLSNpbmNsdWRlICJndGVzdC9pbnRlcm5hbC9ndGVzdC10dXBsZS5oIgotI2luY2x1ZGUgPHV0
aWxpdHk+Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotbmFtZXNwYWNlIHsKLQotdXNpbmcg
OjpzdGQ6OnRyMTo6Z2V0OwotdXNpbmcgOjpzdGQ6OnRyMTo6bWFrZV90dXBsZTsKLXVzaW5nIDo6
c3RkOjp0cjE6OnR1cGxlOwotdXNpbmcgOjpzdGQ6OnRyMTo6dHVwbGVfZWxlbWVudDsKLXVzaW5n
IDo6c3RkOjp0cjE6OnR1cGxlX3NpemU7Ci11c2luZyA6OnRlc3Rpbmc6OlN0YXRpY0Fzc2VydFR5
cGVFcTsKLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9lbGVtZW50PEssIHR1cGxlPFQwLCBUMSwgLi4u
LCBUTj4gPjo6dHlwZSByZXR1cm5zIFRLLgotVEVTVCh0dXBsZV9lbGVtZW50X1Rlc3QsIFJldHVy
bnNFbGVtZW50VHlwZSkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8aW50LCB0dXBsZV9lbGVtZW50
PDAsIHR1cGxlPGludCwgY2hhcj4gPjo6dHlwZT4oKTsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGlu
dCYsIHR1cGxlX2VsZW1lbnQ8MSwgdHVwbGU8ZG91YmxlLCBpbnQmPiA+Ojp0eXBlPigpOwotICBT
dGF0aWNBc3NlcnRUeXBlRXE8Ym9vbCwgdHVwbGVfZWxlbWVudDwyLCB0dXBsZTxkb3VibGUsIGlu
dCwgYm9vbD4gPjo6dHlwZT4oKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBsZV9zaXplPFQ+Ojp2
YWx1ZSBnaXZlcyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBpbiB0dXBsZQotLy8gdHlwZSBULgotVEVT
VCh0dXBsZV9zaXplX1Rlc3QsIFJldHVybnNOdW1iZXJPZkZpZWxkcykgewotICBFWFBFQ1RfRVEo
MCwgK3R1cGxlX3NpemU8dHVwbGU8PiA+Ojp2YWx1ZSk7Ci0gIEVYUEVDVF9FUSgxLCArdHVwbGVf
c2l6ZTx0dXBsZTx2b2lkKj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgK3R1cGxlX3NpemU8
dHVwbGU8Y2hhcj4gPjo6dmFsdWUpOwotICBFWFBFQ1RfRVEoMSwgKyh0dXBsZV9zaXplPHR1cGxl
PHR1cGxlPGludCwgZG91YmxlPiA+ID46OnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgyLCArKHR1cGxl
X3NpemU8dHVwbGU8aW50JiwgY29uc3QgY2hhcj4gPjo6dmFsdWUpKTsKLSAgRVhQRUNUX0VRKDMs
ICsodHVwbGVfc2l6ZTx0dXBsZTxjaGFyKiwgdm9pZCwgY29uc3QgYm9vbCY+ID46OnZhbHVlKSk7
Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBhIHR1cGxlIHdpdGggaXRzZWxmLgotVEVTVChDb21w
YXJpc29uVGVzdCwgQ29tcGFyZXNXaXRoU2VsZikgewotICBjb25zdCB0dXBsZTxpbnQsIGNoYXIs
IGJvb2w+IGEoNSwgJ2EnLCBmYWxzZSk7Ci0KLSAgRVhQRUNUX1RSVUUoYSA9PSBhKTsKLSAgRVhQ
RUNUX0ZBTFNFKGEgIT0gYSk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB0d28gdHVwbGVzIHdp
dGggdGhlIHNhbWUgdmFsdWUuCi1URVNUKENvbXBhcmlzb25UZXN0LCBDb21wYXJlc0VxdWFsVHVw
bGVzKSB7Ci0gIGNvbnN0IHR1cGxlPGludCwgYm9vbD4gYSg1LCB0cnVlKSwgYig1LCB0cnVlKTsK
LQotICBFWFBFQ1RfVFJVRShhID09IGIpOwotICBFWFBFQ1RfRkFMU0UoYSAhPSBiKTsKLX0KLQot
Ly8gVGVzdHMgY29tcGFyaW5nIHR3byBkaWZmZXJlbnQgdHVwbGVzIHRoYXQgaGF2ZSBubyByZWZl
cmVuY2UgZmllbGRzLgotVEVTVChDb21wYXJpc29uVGVzdCwgQ29tcGFyZXNVbmVxdWFsVHVwbGVz
V2l0aG91dFJlZmVyZW5jZUZpZWxkcykgewotICB0eXBlZGVmIHR1cGxlPGNvbnN0IGludCwgY2hh
cj4gRm9vVHVwbGU7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYSgwLCAneCcpOwotICBjb25zdCBGb29U
dXBsZSBiKDEsICdhJyk7Ci0KLSAgRVhQRUNUX1RSVUUoYSAhPSBiKTsKLSAgRVhQRUNUX0ZBTFNF
KGEgPT0gYik7Ci0KLSAgY29uc3QgRm9vVHVwbGUgYygxLCAnYicpOwotCi0gIEVYUEVDVF9UUlVF
KGIgIT0gYyk7Ci0gIEVYUEVDVF9GQUxTRShiID09IGMpOwotfQotCi0vLyBUZXN0cyBjb21wYXJp
bmcgdHdvIGRpZmZlcmVudCB0dXBsZXMgdGhhdCBoYXZlIHJlZmVyZW5jZSBmaWVsZHMuCi1URVNU
KENvbXBhcmlzb25UZXN0LCBDb21wYXJlc1VuZXF1YWxUdXBsZXNXaXRoUmVmZXJlbmNlRmllbGRz
KSB7Ci0gIHR5cGVkZWYgdHVwbGU8aW50JiwgY29uc3QgY2hhciY+IEZvb1R1cGxlOwotCi0gIGlu
dCBpID0gNTsKLSAgY29uc3QgY2hhciBjaCA9ICdhJzsKLSAgY29uc3QgRm9vVHVwbGUgYShpLCBj
aCk7Ci0KLSAgaW50IGogPSA2OwotICBjb25zdCBGb29UdXBsZSBiKGosIGNoKTsKLQotICBFWFBF
Q1RfVFJVRShhICE9IGIpOwotICBFWFBFQ1RfRkFMU0UoYSA9PSBiKTsKLQotICBqID0gNTsKLSAg
Y29uc3QgY2hhciBjaDIgPSAnYic7Ci0gIGNvbnN0IEZvb1R1cGxlIGMoaiwgY2gyKTsKLQotICBF
WFBFQ1RfVFJVRShiICE9IGMpOwotICBFWFBFQ1RfRkFMU0UoYiA9PSBjKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBhIHR1cGxlIGZpZWxkIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBhbiBhbGlhcyBv
ZiB0aGUKLS8vIHZhcmlhYmxlIGl0J3Mgc3VwcG9zZWQgdG8gcmVmZXJlbmNlLgotVEVTVChSZWZl
cmVuY2VGaWVsZFRlc3QsIElzQWxpYXNPZlJlZmVyZW5jZWRWYXJpYWJsZSkgewotICBpbnQgbiA9
IDA7Ci0gIHR1cGxlPGJvb2wsIGludCY+IHQodHJ1ZSwgbik7Ci0KLSAgbiA9IDE7Ci0gIEVYUEVD
VF9FUShuLCBnZXQ8MT4odCkpCi0gICAgICA8PCAiQ2hhbmdpbmcgYSB1bmRlcmx5aW5nIHZhcmlh
YmxlIHNob3VsZCB1cGRhdGUgdGhlIHJlZmVyZW5jZSBmaWVsZC4iOwotCi0gIC8vIE1ha2VzIHN1
cmUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyBhbnl0aGluZyBmdW5ueSB3aXRo
Ci0gIC8vIHRoZSAmIG9wZXJhdG9yIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgZ2V0PD4oKS4KLSAg
RVhQRUNUX0VRKCZuLCAmKGdldDwxPih0KSkpCi0gICAgICA8PCAiVGhlIGFkZHJlc3Mgb2YgYSBy
ZWZlcmVuY2UgZmllbGQgc2hvdWxkIGVxdWFsIHRoZSBhZGRyZXNzIG9mICIKLSAgICAgIDw8ICJ0
aGUgdW5kZXJseWluZyB2YXJpYWJsZS4iOwotCi0gIGdldDwxPih0KSA9IDI7Ci0gIEVYUEVDVF9F
USgyLCBuKQotICAgICAgPDwgIkNoYW5naW5nIGEgcmVmZXJlbmNlIGZpZWxkIHNob3VsZCB1cGRh
dGUgdGhlIHVuZGVybHlpbmcgdmFyaWFibGUuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCB0dXBsZSdz
IGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdCBpbml0aWFsaXplcyBlYWNoIGZpZWxkLgotLy8g
VGhpcyB0ZXN0IG5lZWRzIHRvIGNvbXBpbGUgd2l0aG91dCBnZW5lcmF0aW5nIHdhcm5pbmdzLgot
VEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yRGVmYXVsdEluaXRp
YWxpemVzRWFjaEZpZWxkKSB7Ci0gIC8vIFRoZSBUUjEgcmVwb3J0IHJlcXVpcmVzIHRoYXQgdHVw
bGUncyBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHQKLSAgLy8gaW5pdGlhbGl6ZXMgZWFjaCBm
aWVsZCwgZXZlbiBpZiBpdCdzIGEgcHJpbWl0aXZlIHR5cGUuICBJZiB0aGUKLSAgLy8gaW1wbGVt
ZW50YXRpb24gZm9yZ2V0cyB0byBkbyB0aGlzLCB0aGlzIHRlc3Qgd2lsbCBjYXRjaCBpdCBieQot
ICAvLyBnZW5lcmF0aW5nIHdhcm5pbmdzIGFib3V0IHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFi
bGVzIChhc3N1bWluZwotICAvLyBhIGRlY2VudCBjb21waWxlcikuCi0KLSAgdHVwbGU8PiBlbXB0
eTsKLQotICB0dXBsZTxpbnQ+IGExLCBiMTsKLSAgYjEgPSBhMTsKLSAgRVhQRUNUX0VRKDAsIGdl
dDwwPihiMSkpOwotCi0gIHR1cGxlPGludCwgZG91YmxlPiBhMiwgYjI7Ci0gIGIyID0gYTI7Ci0g
IEVYUEVDVF9FUSgwLCBnZXQ8MD4oYjIpKTsKLSAgRVhQRUNUX0VRKDAuMCwgZ2V0PDE+KGIyKSk7
Ci0KLSAgdHVwbGU8ZG91YmxlLCBjaGFyLCBib29sKj4gYTMsIGIzOwotICBiMyA9IGEzOwotICBF
WFBFQ1RfRVEoMC4wLCBnZXQ8MD4oYjMpKTsKLSAgRVhQRUNUX0VRKCdcMCcsIGdldDwxPihiMykp
OwotICBFWFBFQ1RfVFJVRShnZXQ8Mj4oYjMpID09IE5VTEwpOwotCi0gIHR1cGxlPGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludD4gYTEwLCBiMTA7Ci0gIGIx
MCA9IGExMDsKLSAgRVhQRUNUX0VRKDAsIGdldDwwPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdl
dDwxPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDwyPihiMTApKTsKLSAgRVhQRUNUX0VRKDAs
IGdldDwzPihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw0PihiMTApKTsKLSAgRVhQRUNUX0VR
KDAsIGdldDw1PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw2PihiMTApKTsKLSAgRVhQRUNU
X0VRKDAsIGdldDw3PihiMTApKTsKLSAgRVhQRUNUX0VRKDAsIGdldDw4PihiMTApKTsKLSAgRVhQ
RUNUX0VRKDAsIGdldDw5PihiMTApKTsKLX0KLQotLy8gVGVzdHMgY29uc3RydWN0aW5nIGEgdHVw
bGUgZnJvbSBpdHMgZmllbGRzLgotVEVTVChUdXBsZUNvbnN0cnVjdG9yVGVzdCwgQ29uc3RydWN0
c0Zyb21GaWVsZHMpIHsKLSAgaW50IG4gPSAxOwotICAvLyBSZWZlcmVuY2UgZmllbGQuCi0gIHR1
cGxlPGludCY+IGEobik7Ci0gIEVYUEVDVF9FUSgmbiwgJihnZXQ8MD4oYSkpKTsKLQotICAvLyBO
b24tcmVmZXJlbmNlIGZpZWxkcy4KLSAgdHVwbGU8aW50LCBjaGFyPiBiKDUsICdhJyk7Ci0gIEVY
UEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfRVEoJ2EnLCBnZXQ8MT4oYikpOwotCi0g
IC8vIENvbnN0IHJlZmVyZW5jZSBmaWVsZC4KLSAgY29uc3QgaW50IG0gPSAyOwotICB0dXBsZTxi
b29sLCBjb25zdCBpbnQmPiBjKHRydWUsIG0pOwotICBFWFBFQ1RfVFJVRShnZXQ8MD4oYykpOwot
ICBFWFBFQ1RfRVEoJm0sICYoZ2V0PDE+KGMpKSk7Ci19Ci0KLS8vIFRlc3RzIHR1cGxlJ3MgY29w
eSBjb25zdHJ1Y3Rvci4KLVRFU1QoVHVwbGVDb25zdHJ1Y3RvclRlc3QsIENvcHlDb25zdHJ1Y3Rv
cikgewotICB0dXBsZTxkb3VibGUsIGJvb2w+IGEoMC4wLCB0cnVlKTsKLSAgdHVwbGU8ZG91Ymxl
LCBib29sPiBiKGEpOwotCi0gIEVYUEVDVF9ET1VCTEVfRVEoMC4wLCBnZXQ8MD4oYikpOwotICBF
WFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotfQotCi0vLyBUZXN0cyBjb25zdHJ1Y3RpbmcgYSB0dXBs
ZSBmcm9tIGFub3RoZXIgdHVwbGUgdGhhdCBoYXMgYSBjb21wYXRpYmxlCi0vLyBidXQgZGlmZmVy
ZW50IHR5cGUuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJvbURpZmZl
cmVudFR1cGxlVHlwZSkgewotICB0dXBsZTxpbnQsIGludCwgY2hhcj4gYSgwLCAxLCAnYScpOwot
ICB0dXBsZTxkb3VibGUsIGxvbmcsIGludD4gYihhKTsKLQotICBFWFBFQ1RfRE9VQkxFX0VRKDAu
MCwgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKDEsIGdldDwxPihiKSk7Ci0gIEVYUEVDVF9FUSgn
YScsIGdldDwyPihiKSk7Ci19Ci0KLS8vIFRlc3RzIGNvbnN0cnVjdGluZyBhIDItdHVwbGUgZnJv
bSBhbiBzdGQ6OnBhaXIuCi1URVNUKFR1cGxlQ29uc3RydWN0b3JUZXN0LCBDb25zdHJ1Y3RzRnJv
bVBhaXIpIHsKLSAgOjpzdGQ6OnBhaXI8aW50LCBjaGFyPiBhKDEsICdhJyk7Ci0gIHR1cGxlPGlu
dCwgY2hhcj4gYihhKTsKLSAgdHVwbGU8aW50LCBjb25zdCBjaGFyJj4gYyhhKTsKLX0KLQotLy8g
VGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0dXBsZSB3aXRoIHRoZSBzYW1lIHR5
cGUuCi1URVNUKFR1cGxlQXNzaWdubWVudFRlc3QsIEFzc2lnbnNUb1NhbWVUdXBsZVR5cGUpIHsK
LSAgY29uc3QgdHVwbGU8aW50LCBsb25nPiBhKDUsIDdMKTsKLSAgdHVwbGU8aW50LCBsb25nPiBi
OwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDUsIGdldDwwPihiKSk7Ci0gIEVYUEVDVF9FUSg3TCwg
Z2V0PDE+KGIpKTsKLX0KLQotLy8gVGVzdHMgYXNzaWduaW5nIGEgdHVwbGUgdG8gYW5vdGhlciB0
dXBsZSB3aXRoIGEgZGlmZmVyZW50IGJ1dAotLy8gY29tcGF0aWJsZSB0eXBlLgotVEVTVChUdXBs
ZUFzc2lnbm1lbnRUZXN0LCBBc3NpZ25zVG9EaWZmZXJlbnRUdXBsZVR5cGUpIHsKLSAgY29uc3Qg
dHVwbGU8aW50LCBsb25nLCBib29sPiBhKDEsIDdMLCB0cnVlKTsKLSAgdHVwbGU8bG9uZywgaW50
LCBib29sPiBiOwotICBiID0gYTsKLSAgRVhQRUNUX0VRKDFMLCBnZXQ8MD4oYikpOwotICBFWFBF
Q1RfRVEoNywgZ2V0PDE+KGIpKTsKLSAgRVhQRUNUX1RSVUUoZ2V0PDI+KGIpKTsKLX0KLQotLy8g
VGVzdHMgYXNzaWduaW5nIGFuIHN0ZDo6cGFpciB0byBhIDItdHVwbGUuCi1URVNUKFR1cGxlQXNz
aWdubWVudFRlc3QsIEFzc2lnbnNGcm9tUGFpcikgewotICBjb25zdCA6OnN0ZDo6cGFpcjxpbnQs
IGJvb2w+IGEoNSwgdHJ1ZSk7Ci0gIHR1cGxlPGludCwgYm9vbD4gYjsKLSAgYiA9IGE7Ci0gIEVY
UEVDVF9FUSg1LCBnZXQ8MD4oYikpOwotICBFWFBFQ1RfVFJVRShnZXQ8MT4oYikpOwotCi0gIHR1
cGxlPGxvbmcsIGJvb2w+IGM7Ci0gIGMgPSBhOwotICBFWFBFQ1RfRVEoNUwsIGdldDwwPihjKSk7
Ci0gIEVYUEVDVF9UUlVFKGdldDwxPihjKSk7Ci19Ci0KLS8vIEEgZml4dHVyZSBmb3IgdGVzdGlu
ZyBiaWcgdHVwbGVzLgotY2xhc3MgQmlnVHVwbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewotIHByb3RlY3RlZDoKLSAgdHlwZWRlZiB0dXBsZTxpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQ+IEJpZ1R1cGxlOwotCi0gIEJpZ1R1cGxlVGVzdCgpIDoK
LSAgICAgIGFfKDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIpLAotICAgICAgYl8oMSwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMykge30KLQotICBCaWdUdXBsZSBhXywgYl87Ci19OwotCi0v
LyBUZXN0cyBjb25zdHJ1Y3RpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIENv
bnN0cnVjdGlvbikgewotICBCaWdUdXBsZSBhOwotICBCaWdUdXBsZSBiKGJfKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBnZXQ8Tj4odCkgcmV0dXJucyB0aGUgTi10aCAoMC1iYXNlZCkgZmllbGQgb2Yg
dHVwbGUgdC4KLVRFU1RfRihCaWdUdXBsZVRlc3QsIGdldCkgewotICBFWFBFQ1RfRVEoMSwgZ2V0
PDA+KGFfKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYV8pKTsKLQotICAvLyBUZXN0cyB0aGF0
IGdldCgpIHdvcmtzIG9uIGEgY29uc3QgdHVwbGUgdG9vLgotICBjb25zdCBCaWdUdXBsZSBhKGFf
KTsKLSAgRVhQRUNUX0VRKDEsIGdldDwwPihhKSk7Ci0gIEVYUEVDVF9FUSgyLCBnZXQ8OT4oYSkp
OwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgYmlnIHR1cGxlcy4KLVRFU1RfRihCaWdUdXBsZVRl
c3QsIENvbXBhcmlzb25zKSB7Ci0gIEVYUEVDVF9UUlVFKGFfID09IGFfKTsKLSAgRVhQRUNUX0ZB
TFNFKGFfICE9IGFfKTsKLQotICBFWFBFQ1RfVFJVRShhXyAhPSBiXyk7Ci0gIEVYUEVDVF9GQUxT
RShhXyA9PSBiXyk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVzdCwgV29ya3NGb3JTY2FsYXJUeXBl
cykgewotICB0dXBsZTxib29sLCBpbnQ+IGE7Ci0gIGEgPSBtYWtlX3R1cGxlKHRydWUsIDUpOwot
ICBFWFBFQ1RfVFJVRShnZXQ8MD4oYSkpOwotICBFWFBFQ1RfRVEoNSwgZ2V0PDE+KGEpKTsKLQot
ICB0dXBsZTxjaGFyLCBpbnQsIGxvbmc+IGI7Ci0gIGIgPSBtYWtlX3R1cGxlKCdhJywgJ2InLCA1
KTsKLSAgRVhQRUNUX0VRKCdhJywgZ2V0PDA+KGIpKTsKLSAgRVhQRUNUX0VRKCdiJywgZ2V0PDE+
KGIpKTsKLSAgRVhQRUNUX0VRKDUsIGdldDwyPihiKSk7Ci19Ci0KLVRFU1QoTWFrZVR1cGxlVGVz
dCwgV29ya3NGb3JQb2ludGVycykgewotICBpbnQgYVtdID0geyAxLCAyLCAzLCA0IH07Ci0gIGNv
bnN0IGNoYXIqIGNvbnN0IHN0ciA9ICJoaSI7Ci0gIGludCogY29uc3QgcCA9IGE7Ci0KLSAgdHVw
bGU8Y29uc3QgY2hhciosIGludCo+IHQ7Ci0gIHQgPSBtYWtlX3R1cGxlKHN0ciwgcCk7Ci0gIEVY
UEVDVF9FUShzdHIsIGdldDwwPih0KSk7Ci0gIEVYUEVDVF9FUShwLCBnZXQ8MT4odCkpOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlw
ZWQtdGVzdDJfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJfdGVz
dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI4NDcwMGIwMjBiLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0Ml90ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDggR29vZ2xlIElu
Yy4KLS8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8v
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcg
V2FuKQotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAidGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaWYgR1RFU1RfSEFTX1RZ
UEVEX1RFU1RfUAotCi0vLyBUZXN0cyB0aGF0IHRoZSBzYW1lIHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0IGNhc2UgY2FuIGJlCi0vLyBpbnN0YW50aWF0ZWQgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9u
IHVuaXRzIGxpbmtlZCB0b2dldGhlci4KLS8vIChDb250YWluZXJUZXN0IGlzIGFsc28gaW5zdGFu
dGlhdGVkIGluIGd0ZXN0LXR5cGVkLXRlc3RfdGVzdC5jYy4pCi1JTlNUQU5USUFURV9UWVBFRF9U
RVNUX0NBU0VfUChWZWN0b3IsIENvbnRhaW5lclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpUeXBlczxzdGQ6OnZlY3RvcjxpbnQ+ID4pOwotCi0jZW5kaWYgIC8v
IEdURVNUX0hBU19UWVBFRF9URVNUX1AKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10ZXN0
X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNjI4YmEwODBjYy4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNj
CisrKyAvZGV2L251bGwKQEAgLTEsMzgwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4IEdvb2ds
ZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLQotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmgiCi0KLSNp
bmNsdWRlIDxzZXQ+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qu
aCIKLQotdXNpbmcgdGVzdGluZzo6VGVzdDsKLQotLy8gVXNlZCBmb3IgdGVzdGluZyB0aGF0IFNl
dFVwVGVzdENhc2UoKS9UZWFyRG93blRlc3RDYXNlKCksIGZpeHR1cmUKLS8vIGN0b3IvZHRvciwg
YW5kIFNldFVwKCkvVGVhckRvd24oKSB3b3JrIGNvcnJlY3RseSBpbiB0eXBlZCB0ZXN0cyBhbmQK
LS8vIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBDb21tb25UZXN0IDogcHVibGljIFRlc3QgewotICAvLyBGb3Igc29tZSB0ZWNobmljYWwgcmVh
c29uLCBTZXRVcFRlc3RDYXNlKCkgYW5kIFRlYXJEb3duVGVzdENhc2UoKQotICAvLyBtdXN0IGJl
IHB1YmxpYy4KLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAg
c2hhcmVkXyA9IG5ldyBUKDUpOwotICB9Ci0KLSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2Fz
ZSgpIHsKLSAgICBkZWxldGUgc2hhcmVkXzsKLSAgICBzaGFyZWRfID0gTlVMTDsKLSAgfQotCi0g
IC8vIFRoaXMgJ3Byb3RlY3RlZDonIGlzIG9wdGlvbmFsLiAgVGhlcmUncyBubyBoYXJtIGluIG1h
a2luZyBhbGwKLSAgLy8gbWVtYmVycyBvZiB0aGlzIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgcHVi
bGljLgotIHByb3RlY3RlZDoKLSAgLy8gV2UgdXNlZCB0byB1c2Ugc3RkOjpsaXN0IGhlcmUsIGJ1
dCBzd2l0Y2hlZCB0byBzdGQ6OnZlY3RvciBzaW5jZQotICAvLyBNU1ZDJ3MgPGxpc3Q+IGRvZXNu
J3QgY29tcGlsZSBjbGVhbmx5IHdpdGggL1c0LgotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFQ+IFZl
Y3RvcjsKLSAgdHlwZWRlZiBzdGQ6OnNldDxpbnQ+IEludFNldDsKLQotICBDb21tb25UZXN0KCkg
OiB2YWx1ZV8oMSkge30KLQotICB2aXJ0dWFsIH5Db21tb25UZXN0KCkgeyBFWFBFQ1RfRVEoMywg
dmFsdWVfKTsgfQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBFWFBFQ1RfRVEoMSwg
dmFsdWVfKTsKLSAgICB2YWx1ZV8rKzsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKLSAgICBFWFBFQ1RfRVEoMiwgdmFsdWVfKTsKLSAgICB2YWx1ZV8rKzsKLSAgfQotCi0gIFQg
dmFsdWVfOwotICBzdGF0aWMgVCogc2hhcmVkXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotVCogQ29tbW9uVGVzdDxUPjo6c2hhcmVkXyA9IE5VTEw7Ci0KLS8vIFRoaXMgI2lmZGVmIGJs
b2NrIHRlc3RzIHR5cGVkIHRlc3RzLgotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXVzaW5n
IHRlc3Rpbmc6OlR5cGVzOwotCi0vLyBUZXN0cyB0aGF0IFNldFVwVGVzdENhc2UoKS9UZWFyRG93
blRlc3RDYXNlKCksIGZpeHR1cmUgY3Rvci9kdG9yLAotLy8gYW5kIFNldFVwKCkvVGVhckRvd24o
KSB3b3JrIGNvcnJlY3RseSBpbiB0eXBlZCB0ZXN0cwotCi10eXBlZGVmIFR5cGVzPGNoYXIsIGlu
dD4gVHdvVHlwZXM7Ci1UWVBFRF9URVNUX0NBU0UoQ29tbW9uVGVzdCwgVHdvVHlwZXMpOwotCi1U
WVBFRF9URVNUKENvbW1vblRlc3QsIFZhbHVlc0FyZUNvcnJlY3QpIHsKLSAgLy8gU3RhdGljIG1l
bWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGJlIHZpc2l0ZWQgdmlhCi0g
IC8vIHRoZSBUZXN0Rml4dHVyZTo6IHByZWZpeC4KLSAgRVhQRUNUX0VRKDUsICpUZXN0Rml4dHVy
ZTo6c2hhcmVkXyk7Ci0KLSAgLy8gVHlwZWRlZnMgaW4gdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxh
dGUgY2FuIGJlIHZpc2l0ZWQgdmlhIHRoZQotICAvLyAidHlwZW5hbWUgVGVzdEZpeHR1cmU6OiIg
cHJlZml4LgotICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6VmVjdG9yIGVtcHR5OwotICBFWFBFQ1Rf
RVEoMFUsIGVtcHR5LnNpemUoKSk7Ci0KLSAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6OkludFNldCBl
bXB0eTI7Ci0gIEVYUEVDVF9FUSgwVSwgZW1wdHkyLnNpemUoKSk7Ci0KLSAgLy8gTm9uLXN0YXRp
YyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzIG11c3QgYmUgdmlzaXRlZCB2aWEKLSAgLy8g
J3RoaXMnLCBhcyByZXF1aXJlZCBieSBDKysgZm9yIGNsYXNzIHRlbXBsYXRlcy4KLSAgRVhQRUNU
X0VRKDIsIHRoaXMtPnZhbHVlXyk7Ci19Ci0KLS8vIFRoZSBzZWNvbmQgdGVzdCBtYWtlcyBzdXJl
IHNoYXJlZF8gaXMgbm90IGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpcnN0Ci0vLyB0ZXN0LgotVFlQRURf
VEVTVChDb21tb25UZXN0LCBWYWx1ZXNBcmVTdGlsbENvcnJlY3QpIHsKLSAgLy8gU3RhdGljIG1l
bWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGFsc28gYmUgdmlzaXRlZAot
ICAvLyB2aWEgJ3RoaXMnLgotICBBU1NFUlRfVFJVRSh0aGlzLT5zaGFyZWRfICE9IE5VTEwpOwot
ICBFWFBFQ1RfRVEoNSwgKnRoaXMtPnNoYXJlZF8pOwotCi0gIC8vIFR5cGVQYXJhbSBjYW4gYmUg
dXNlZCB0byByZWZlciB0byB0aGUgdHlwZSBwYXJhbWV0ZXIuCi0gIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxUeXBlUGFyYW0+KDIpLCB0aGlzLT52YWx1ZV8pOwotfQotCi0vLyBUZXN0cyB0aGF0IG11
bHRpcGxlIFRZUEVEX1RFU1RfQ0FTRSdzIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCi0vLyB0
cmFuc2xhdGlvbiB1bml0LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVz
dDEgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBzZWNvbmQgYXJn
dW1lbnQgb2YgVFlQRURfVEVTVF9DQVNFIGNhbiBiZSBhCi0vLyBzaW5nbGUgdHlwZS4KLVRZUEVE
X1RFU1RfQ0FTRShUeXBlZFRlc3QxLCBpbnQpOwotVFlQRURfVEVTVChUeXBlZFRlc3QxLCBBKSB7
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdDIgOiBwdWJsaWMgVGVz
dCB7Ci19OwotCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgVFlQRURf
VEVTVF9DQVNFIGNhbiBiZSBhCi0vLyBUeXBlczwuLi4+IHR5cGUgbGlzdC4KLVRZUEVEX1RFU1Rf
Q0FTRShUeXBlZFRlc3QyLCBUeXBlczxpbnQ+KTsKLQotLy8gVGhpcyBhbHNvIHZlcmlmaWVzIHRo
YXQgdGVzdHMgZnJvbSBkaWZmZXJlbnQgdHlwZWQgdGVzdCBjYXNlcyBjYW4KLS8vIHNoYXJlIHRo
ZSBzYW1lIG5hbWUuCi1UWVBFRF9URVNUKFR5cGVkVGVzdDIsIEEpIHt9Ci0KLS8vIFRlc3RzIHRo
YXQgYSB0eXBlZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgaW4gYSBuYW1lc3BhY2UuCi0KLW5h
bWVzcGFjZSBsaWJyYXJ5MSB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgTnVtZXJp
Y1Rlc3QgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi10eXBlZGVmIFR5cGVzPGludCwgbG9uZz4gTnVt
ZXJpY1R5cGVzOwotVFlQRURfVEVTVF9DQVNFKE51bWVyaWNUZXN0LCBOdW1lcmljVHlwZXMpOwot
Ci1UWVBFRF9URVNUKE51bWVyaWNUZXN0LCBEZWZhdWx0SXNaZXJvKSB7Ci0gIEVYUEVDVF9FUSgw
LCBUeXBlUGFyYW0oKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBsaWJyYXJ5MQotCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFRoaXMgI2lmZGVmIGJsb2NrIHRlc3RzIHR5
cGUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLXVz
aW5nIHRlc3Rpbmc6OlR5cGVzOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OlR5cGVkVGVzdENh
c2VQU3RhdGU7Ci0KLS8vIFRlc3RzIFR5cGVkVGVzdENhc2VQU3RhdGUuCi0KLWNsYXNzIFR5cGVk
VGVzdENhc2VQU3RhdGVUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZv
b1Rlc3QiLCAiQSIpOwotICAgIHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZvb1Rl
c3QiLCAiQiIpOwotICAgIHN0YXRlXy5BZGRUZXN0TmFtZSgiZm9vLmNjIiwgMCwgIkZvb1Rlc3Qi
LCAiQyIpOwotICB9Ci0KLSAgVHlwZWRUZXN0Q2FzZVBTdGF0ZSBzdGF0ZV87Ci19OwotCi1URVNU
X0YoVHlwZWRUZXN0Q2FzZVBTdGF0ZVRlc3QsIFN1Y2NlZWRzRm9yTWF0Y2hpbmdMaXN0KSB7Ci0g
IGNvbnN0IGNoYXIqIHRlc3RzID0gIkEsIEIsIEMiOwotICBFWFBFQ1RfRVEodGVzdHMsCi0gICAg
ICAgICAgICBzdGF0ZV8uVmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgdGVz
dHMpKTsKLX0KLQotLy8gTWFrZXMgc3VyZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgdGVzdHMgYW5k
IHNwYWNlcyBhcm91bmQgdGhlIG5hbWVzCi0vLyBkb24ndCBtYXR0ZXIuCi1URVNUX0YoVHlwZWRU
ZXN0Q2FzZVBTdGF0ZVRlc3QsIElnbm9yZXNPcmRlckFuZFNwYWNlcykgewotICBjb25zdCBjaGFy
KiB0ZXN0cyA9ICJBLEMsICAgQiI7Ci0gIEVYUEVDVF9FUSh0ZXN0cywKLSAgICAgICAgICAgIHN0
YXRlXy5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVzKCJmb28uY2MiLCAxLCB0ZXN0cykpOwotfQot
Ci10eXBlZGVmIFR5cGVkVGVzdENhc2VQU3RhdGVUZXN0IFR5cGVkVGVzdENhc2VQU3RhdGVEZWF0
aFRlc3Q7Ci0KLVRFU1RfRihUeXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzRHVw
bGljYXRlcykgewotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAgICAgc3RhdGVfLlZl
cmlmeVJlZ2lzdGVyZWRUZXN0TmFtZXMoImZvby5jYyIsIDEsICJBLCBCLCBBLCBDIiksCi0gICAg
ICAiZm9vXFwuY2MuMS4/OiBUZXN0IEEgaXMgbGlzdGVkIG1vcmUgdGhhbiBvbmNlXFwuIik7Ci19
Ci0KLVRFU1RfRihUeXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzRXh0cmFUZXN0
KSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCi0gICAgICBzdGF0ZV8uVmVyaWZ5UmVn
aXN0ZXJlZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgIkEsIEIsIEMsIEQiKSwKLSAgICAgICJmb29c
XC5jYy4xLj86IE5vIHRlc3QgbmFtZWQgRCBjYW4gYmUgZm91bmQgaW4gdGhpcyB0ZXN0IGNhc2Vc
XC4iKTsKLX0KLQotVEVTVF9GKFR5cGVkVGVzdENhc2VQU3RhdGVEZWF0aFRlc3QsIERldGVjdHNN
aXNzZWRUZXN0KSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoCi0gICAgICBzdGF0ZV8u
VmVyaWZ5UmVnaXN0ZXJlZFRlc3ROYW1lcygiZm9vLmNjIiwgMSwgIkEsIEMiKSwKLSAgICAgICJm
b29cXC5jYy4xLj86IFlvdSBmb3Jnb3QgdG8gbGlzdCB0ZXN0IEJcXC4iKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBkZWZpbmluZyBhIHRlc3QgZm9yIGEgcGFyYW1ldGVyaXplZCB0ZXN0IGNhc2UgZ2Vu
ZXJhdGVzCi0vLyBhIHJ1bi10aW1lIGVycm9yIGlmIHRoZSB0ZXN0IGNhc2UgaGFzIGJlZW4gcmVn
aXN0ZXJlZC4KLVRFU1RfRihUeXBlZFRlc3RDYXNlUFN0YXRlRGVhdGhUZXN0LCBEZXRlY3RzVGVz
dEFmdGVyUmVnaXN0cmF0aW9uKSB7Ci0gIHN0YXRlXy5WZXJpZnlSZWdpc3RlcmVkVGVzdE5hbWVz
KCJmb28uY2MiLCAxLCAiQSwgQiwgQyIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAot
ICAgICAgc3RhdGVfLkFkZFRlc3ROYW1lKCJmb28uY2MiLCAyLCAiRm9vVGVzdCIsICJEIiksCi0g
ICAgICAiZm9vXFwuY2MuMi4/OiBUZXN0IEQgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSBSRUdJU1RF
Ul9UWVBFRF9URVNUX0NBU0VfUCIKLSAgICAgICJcXChGb29UZXN0LCBcXC5cXC5cXC5cXClcXC4i
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTZXRVcFRlc3RDYXNlKCkvVGVhckRvd25UZXN0Q2FzZSgp
LCBmaXh0dXJlIGN0b3IvZHRvciwKLS8vIGFuZCBTZXRVcCgpL1RlYXJEb3duKCkgd29yayBjb3Jy
ZWN0bHkgaW4gdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIERlcml2ZWRUZXN0IDogcHVibGljIENvbW1vblRlc3Q8VD4gewotfTsKLQotVFlQ
RURfVEVTVF9DQVNFX1AoRGVyaXZlZFRlc3QpOwotCi1UWVBFRF9URVNUX1AoRGVyaXZlZFRlc3Qs
IFZhbHVlc0FyZUNvcnJlY3QpIHsKLSAgLy8gU3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUg
Y2xhc3MgdGVtcGxhdGUgY2FuIGJlIHZpc2l0ZWQgdmlhCi0gIC8vIHRoZSBUZXN0Rml4dHVyZTo6
IHByZWZpeC4KLSAgRVhQRUNUX0VRKDUsICpUZXN0Rml4dHVyZTo6c2hhcmVkXyk7Ci0KLSAgLy8g
Tm9uLXN0YXRpYyBtZW1iZXJzIG9mIHRoZSBmaXh0dXJlIGNsYXNzIG11c3QgYmUgdmlzaXRlZCB2
aWEKLSAgLy8gJ3RoaXMnLCBhcyByZXF1aXJlZCBieSBDKysgZm9yIGNsYXNzIHRlbXBsYXRlcy4K
LSAgRVhQRUNUX0VRKDIsIHRoaXMtPnZhbHVlXyk7Ci19Ci0KLS8vIFRoZSBzZWNvbmQgdGVzdCBt
YWtlcyBzdXJlIHNoYXJlZF8gaXMgbm90IGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpcnN0Ci0vLyB0ZXN0
LgotVFlQRURfVEVTVF9QKERlcml2ZWRUZXN0LCBWYWx1ZXNBcmVTdGlsbENvcnJlY3QpIHsKLSAg
Ly8gU3RhdGljIG1lbWJlcnMgb2YgdGhlIGZpeHR1cmUgY2xhc3MgdGVtcGxhdGUgY2FuIGFsc28g
YmUgdmlzaXRlZAotICAvLyB2aWEgJ3RoaXMnLgotICBBU1NFUlRfVFJVRSh0aGlzLT5zaGFyZWRf
ICE9IE5VTEwpOwotICBFWFBFQ1RfRVEoNSwgKnRoaXMtPnNoYXJlZF8pOwotICBFWFBFQ1RfRVEo
MiwgdGhpcy0+dmFsdWVfKTsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoRGVyaXZl
ZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXNBcmVDb3JyZWN0LCBWYWx1
ZXNBcmVTdGlsbENvcnJlY3QpOwotCi10eXBlZGVmIFR5cGVzPHNob3J0LCBsb25nPiBNeVR3b1R5
cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIERlcml2ZWRUZXN0LCBNeVR3
b1R5cGVzKTsKLQotLy8gVGVzdHMgdGhhdCBtdWx0aXBsZSBUWVBFRF9URVNUX0NBU0VfUCdzIGNh
biBiZSBkZWZpbmVkIGluIHRoZSBzYW1lCi0vLyB0cmFuc2xhdGlvbiB1bml0LgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkVGVzdFAxIDogcHVibGljIFRlc3QgewotfTsKLQot
VFlQRURfVEVTVF9DQVNFX1AoVHlwZWRUZXN0UDEpOwotCi0vLyBGb3IgdGVzdGluZyB0aGF0IHRo
ZSBjb2RlIGJldHdlZW4gVFlQRURfVEVTVF9DQVNFX1AoKSBhbmQKLS8vIFRZUEVEX1RFU1RfUCgp
IGlzIG5vdCBlbmNsb3NlZCBpbiBhIG5hbWVzcGFjZS4KLXR5cGVkZWYgaW50IEludEFmdGVyVHlw
ZWRUZXN0Q2FzZVA7Ci0KLVRZUEVEX1RFU1RfUChUeXBlZFRlc3RQMSwgQSkge30KLVRZUEVEX1RF
U1RfUChUeXBlZFRlc3RQMSwgQikge30KLQotLy8gRm9yIHRlc3RpbmcgdGhhdCB0aGUgY29kZSBi
ZXR3ZWVuIFRZUEVEX1RFU1RfUCgpIGFuZAotLy8gUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1Ao
KSBpcyBub3QgZW5jbG9zZWQgaW4gYSBuYW1lc3BhY2UuCi10eXBlZGVmIGludCBJbnRCZWZvcmVS
ZWdpc3RlclR5cGVkVGVzdENhc2VQOwotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBl
ZFRlc3RQMSwgQSwgQik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0
UDIgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChUeXBlZFRlc3RQMik7
Ci0KLS8vIFRoaXMgYWxzbyB2ZXJpZmllcyB0aGF0IHRlc3RzIGZyb20gZGlmZmVyZW50IHR5cGUt
cGFyYW1ldGVyaXplZAotLy8gdGVzdCBjYXNlcyBjYW4gc2hhcmUgdGhlIHNhbWUgbmFtZS4KLVRZ
UEVEX1RFU1RfUChUeXBlZFRlc3RQMiwgQSkge30KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNF
X1AoVHlwZWRUZXN0UDIsIEEpOwotCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBjb2RlIGJldHdlZW4g
VFlQRURfVEVTVF9DQVNFX1AoKSBhbmQKLS8vIFJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKCkg
aXMgbm90IGVuY2xvc2VkIGluIGEgbmFtZXNwYWNlLgotSW50QWZ0ZXJUeXBlZFRlc3RDYXNlUCBh
ZnRlciA9IDA7Ci1JbnRCZWZvcmVSZWdpc3RlclR5cGVkVGVzdENhc2VQIGJlZm9yZSA9IDA7Ci0K
LS8vIFZlcmlmaWVzIHRoYXQgdGhlIGxhc3QgYXJndW1lbnQgb2YgSU5TVEFOVElBVEVfVFlQRURf
VEVTVF9DQVNFX1AoKQotLy8gY2FuIGJlIGVpdGhlciBhIHNpbmdsZSB0eXBlIG9yIGEgVHlwZXM8
Li4uPiB0eXBlIGxpc3QuCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChJbnQsIFR5cGVk
VGVzdFAxLCBpbnQpOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoSW50LCBUeXBlZFRl
c3RQMiwgVHlwZXM8aW50Pik7Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIHNhbWUgdHlwZS1wYXJhbWV0
ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUKLS8vIGluc3RhbnRpYXRlZCBtb3JlIHRoYW4gb25jZSBp
biB0aGUgc2FtZSB0cmFuc2xhdGlvbiB1bml0LgotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNF
X1AoRG91YmxlLCBUeXBlZFRlc3RQMiwgVHlwZXM8ZG91YmxlPik7Ci0KLS8vIFRlc3RzIHRoYXQg
dGhlIHNhbWUgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3QgY2FzZSBjYW4gYmUKLS8vIGluc3RhbnRp
YXRlZCBpbiBkaWZmZXJlbnQgdHJhbnNsYXRpb24gdW5pdHMgbGlua2VkIHRvZ2V0aGVyLgotLy8g
KENvbnRhaW5lclRlc3QgaXMgYWxzbyBpbnN0YW50aWF0ZWQgaW4gZ3Rlc3QtdHlwZWQtdGVzdF90
ZXN0LmNjLikKLXR5cGVkZWYgVHlwZXM8c3RkOjp2ZWN0b3I8ZG91YmxlPiwgc3RkOjpzZXQ8Y2hh
cj4gPiBNeUNvbnRhaW5lcnM7Ci1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwgQ29u
dGFpbmVyVGVzdCwgTXlDb250YWluZXJzKTsKLQotLy8gVGVzdHMgdGhhdCBhIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0IGNhc2UgY2FuIGJlIGRlZmluZWQgYW5kCi0vLyBpbnN0YW50aWF0ZWQgaW4g
YSBuYW1lc3BhY2UuCi0KLW5hbWVzcGFjZSBsaWJyYXJ5MiB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgTnVtZXJpY1Rlc3QgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi1UWVBFRF9URVNU
X0NBU0VfUChOdW1lcmljVGVzdCk7Ci0KLVRZUEVEX1RFU1RfUChOdW1lcmljVGVzdCwgRGVmYXVs
dElzWmVybykgewotICBFWFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9URVNU
X1AoTnVtZXJpY1Rlc3QsIFplcm9Jc0xlc3NUaGFuT25lKSB7Ci0gIEVYUEVDVF9MVChUeXBlUGFy
YW0oMCksIFR5cGVQYXJhbSgxKSk7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKE51
bWVyaWNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdElzWmVybywgWmVy
b0lzTGVzc1RoYW5PbmUpOwotdHlwZWRlZiBUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVz
OwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIE51bWVyaWNUZXN0LCBOdW1lcmlj
VHlwZXMpOwotCi1zdGF0aWMgY29uc3QgY2hhciogR2V0VGVzdE5hbWUoKSB7Ci0gIHJldHVybiB0
ZXN0aW5nOjpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKS0+bmFt
ZSgpOwotfQotLy8gVGVzdCB0aGUgc3RyaXBwaW5nIG9mIHNwYWNlIGZyb20gdGVzdCBuYW1lcwot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFRyaW1tZWRUZXN0IDogcHVibGljIFRlc3QgeyB9
OwotVFlQRURfVEVTVF9DQVNFX1AoVHJpbW1lZFRlc3QpOwotVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0MSkgeyBFWFBFQ1RfU1RSRVEoIlRlc3QxIiwgR2V0VGVzdE5hbWUoKSk7IH0KLVRZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDIpIHsgRVhQRUNUX1NUUkVRKCJUZXN0MiIsIEdl
dFRlc3ROYW1lKCkpOyB9Ci1UWVBFRF9URVNUX1AoVHJpbW1lZFRlc3QsIFRlc3QzKSB7IEVYUEVD
VF9TVFJFUSgiVGVzdDMiLCBHZXRUZXN0TmFtZSgpKTsgfQotVFlQRURfVEVTVF9QKFRyaW1tZWRU
ZXN0LCBUZXN0NCkgeyBFWFBFQ1RfU1RSRVEoIlRlc3Q0IiwgR2V0VGVzdE5hbWUoKSk7IH0KLVRZ
UEVEX1RFU1RfUChUcmltbWVkVGVzdCwgVGVzdDUpIHsgRVhQRUNUX1NUUkVRKCJUZXN0NSIsIEdl
dFRlc3ROYW1lKCkpOyB9Ci1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUCgKLSAgICBUcmltbWVk
VGVzdCwKLSAgICBUZXN0MSwgVGVzdDIsVGVzdDMgLCBUZXN0NCAsVGVzdDUgKTsgIC8vIE5PTElO
VAotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IE15UGFpciB7fTsK
LS8vIEJlIHN1cmUgdG8gdHJ5IGEgdHlwZSB3aXRoIGEgY29tbWEgaW4gaXRzIG5hbWUganVzdCBp
biBjYXNlIGl0IG1hdHRlcnMuCi10eXBlZGVmIFR5cGVzPGludCwgZG91YmxlLCBNeVBhaXI8aW50
LCBpbnQ+ID4gVHJpbVR5cGVzOwotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1AoTXksIFRy
aW1tZWRUZXN0LCBUcmltVHlwZXMpOwotCi19ICAvLyBuYW1lc3BhY2UgbGlicmFyeTIKLQotI2Vu
ZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLSNpZiAhZGVmaW5lZChHVEVTVF9IQVNf
VFlQRURfVEVTVCkgJiYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1RfUCkKLQotLy8gR29v
Z2xlIFRlc3QgbWF5IG5vdCBzdXBwb3J0IHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyB3aXRoIHNv
bWUKLS8vIGNvbXBpbGVycy4gSWYgd2UgdXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIGNv
bXBpbGUgb3V0IGFsbAotLy8gY29kZSByZWZlcnJpbmcgdG8gdGhlIGd0ZXN0X21haW4gbGlicmFy
eSwgTVNWQyBsaW5rZXIgd2lsbCBub3QgbGluawotLy8gdGhhdCBsaWJyYXJ5IGF0IGFsbCBhbmQg
Y29uc2VxdWVudGx5IGNvbXBsYWluIGFib3V0IG1pc3NpbmcgZW50cnkKLS8vIHBvaW50IGRlZmlu
ZWQgaW4gdGhhdCBsaWJyYXJ5IChmYXRhbCBlcnJvciBMTksxNTYxOiBlbnRyeSBwb2ludAotLy8g
bXVzdCBiZSBkZWZpbmVkKS4gVGhpcyBkdW1teSB0ZXN0IGtlZXBzIGd0ZXN0X21haW4gbGlua2Vk
IGluLgotVEVTVChEdW1teVRlc3QsIFR5cGVkVGVzdHNBcmVOb3RTdXBwb3J0ZWRPblRoaXNQbGF0
Zm9ybSkge30KLQotI2VuZGlmICAvLyAjaWYgIWRlZmluZWQoR1RFU1RfSEFTX1RZUEVEX1RFU1Qp
ICYmICFkZWZpbmVkKEdURVNUX0hBU19UWVBFRF9URVNUX1ApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0LXR5cGVkLXRlc3RfdGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dC10eXBlZC10ZXN0X3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFkNzU3
MDRjZjg0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC10eXBlZC10
ZXN0X3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vIENvcHlyaWdodCAy
MDA4IEdvb2dsZSBJbmMuCi0vLyBBbGwgUmlnaHRzIFJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQotI2lmbmRlZiBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1Rf
VEVTVF9IXwotI2RlZmluZSBHVEVTVF9URVNUX0dURVNUX1RZUEVEX1RFU1RfVEVTVF9IXwotCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQot
dXNpbmcgdGVzdGluZzo6VGVzdDsKLQotLy8gRm9yIHRlc3RpbmcgdGhhdCB0aGUgc2FtZSB0eXBl
LXBhcmFtZXRlcml6ZWQgdGVzdCBjYXNlIGNhbiBiZQotLy8gaW5zdGFudGlhdGVkIGluIGRpZmZl
cmVudCB0cmFuc2xhdGlvbiB1bml0cyBsaW5rZWQgdG9nZXRoZXIuCi0vLyBDb250YWluZXJUZXN0
IHdpbGwgYmUgaW5zdGFudGlhdGVkIGluIGJvdGggZ3Rlc3QtdHlwZWQtdGVzdF90ZXN0LmNjCi0v
LyBhbmQgZ3Rlc3QtdHlwZWQtdGVzdDJfdGVzdC5jYy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBDb250YWluZXJUZXN0IDogcHVibGljIFRlc3QgewotfTsKLQotVFlQRURfVEVTVF9D
QVNFX1AoQ29udGFpbmVyVGVzdCk7Ci0KLVRZUEVEX1RFU1RfUChDb250YWluZXJUZXN0LCBDYW5C
ZURlZmF1bHRDb25zdHJ1Y3RlZCkgewotICBUeXBlUGFyYW0gY29udGFpbmVyOwotfQotCi1UWVBF
RF9URVNUX1AoQ29udGFpbmVyVGVzdCwgSW5pdGlhbFNpemVJc1plcm8pIHsKLSAgVHlwZVBhcmFt
IGNvbnRhaW5lcjsKLSAgRVhQRUNUX0VRKDBVLCBjb250YWluZXIuc2l6ZSgpKTsKLX0KLQotUkVH
SVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ29udGFpbmVyVGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhbkJlRGVmYXVsdENvbnN0cnVjdGVkLCBJbml0aWFsU2l6ZUlzWmVybyk7Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jZW5kaWYgIC8vIEdURVNUX1RF
U1RfR1RFU1RfVFlQRURfVEVTVF9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0LXVuaXR0ZXN0LWFwaV90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC11bml0
dGVzdC1hcGlfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFmNTE2ODhh
Zjc1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdC11bml0dGVzdC1h
cGlfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDM0MSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8g
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRsQGdvb2dsZS5j
b20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGhlIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsg
KEdvb2dsZSBUZXN0KQotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyB0ZXN0cyB2ZXJpZnlpbmcg
Y29ycmVjdG5lc3Mgb2YgZGF0YSBwcm92aWRlZCB2aWEKLS8vIFVuaXRUZXN0J3MgcHVibGljIG1l
dGhvZHMuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+
ICAvLyBGb3Igc3RyY21wLgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotdXNpbmcgOjp0ZXN0aW5n
OjpJbml0R29vZ2xlVGVzdDsKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotbmFtZXNwYWNlIGludGVy
bmFsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgTGVzc0J5TmFtZSB7Ci0gIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBUKiBhLCBjb25zdCBUKiBiKSB7Ci0gICAgcmV0dXJuIHN0cmNt
cChhLT5uYW1lKCksIGItPm5hbWUoKSkgPCAwOwotICB9Ci19OwotCi1jbGFzcyBVbml0VGVzdEhl
bHBlciB7Ci0gcHVibGljOgotICAvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiBwb2ludGVycyB0byBh
bGwgdGVzdCBjYXNlcyBzb3J0ZWQgYnkgdGhlIHRlc3QgY2FzZQotICAvLyBuYW1lLiAgVGhlIGNh
bGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIGFycmF5LgotICBzdGF0aWMgVGVz
dENhc2UgY29uc3QqKiBHZXRTb3J0ZWRUZXN0Q2FzZXMoKSB7Ci0gICAgVW5pdFRlc3QmIHVuaXRf
dGVzdCA9ICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKTsKLSAgICBUZXN0Q2FzZSBjb25zdCoqIGNv
bnN0IHRlc3RfY2FzZXMgPQotICAgICAgICBuZXcgY29uc3QgVGVzdENhc2UqW3VuaXRfdGVzdC50
b3RhbF90ZXN0X2Nhc2VfY291bnQoKV07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHVuaXRf
dGVzdC50b3RhbF90ZXN0X2Nhc2VfY291bnQoKTsgKytpKQotICAgICAgdGVzdF9jYXNlc1tpXSA9
IHVuaXRfdGVzdC5HZXRUZXN0Q2FzZShpKTsKLQotICAgIHN0ZDo6c29ydCh0ZXN0X2Nhc2VzLAot
ICAgICAgICAgICAgICB0ZXN0X2Nhc2VzICsgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3Vu
dCgpLAotICAgICAgICAgICAgICBMZXNzQnlOYW1lPFRlc3RDYXNlPigpKTsKLSAgICByZXR1cm4g
dGVzdF9jYXNlczsKLSAgfQotCi0gIC8vIFJldHVybnMgdGhlIHRlc3QgY2FzZSBieSBpdHMgbmFt
ZS4gIFRoZSBjYWxsZXIgZG9lc24ndCBvd24gdGhlIHJldHVybmVkCi0gIC8vIHBvaW50ZXIuCi0g
IHN0YXRpYyBjb25zdCBUZXN0Q2FzZSogRmluZFRlc3RDYXNlKGNvbnN0IGNoYXIqIG5hbWUpIHsK
LSAgICBVbml0VGVzdCYgdW5pdF90ZXN0ID0gKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpOwotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgdW5pdF90ZXN0LnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpOyAr
K2kpIHsKLSAgICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSB1bml0X3Rlc3QuR2V0VGVz
dENhc2UoaSk7Ci0gICAgICBpZiAoMCA9PSBzdHJjbXAodGVzdF9jYXNlLT5uYW1lKCksIG5hbWUp
KQotICAgICAgICByZXR1cm4gdGVzdF9jYXNlOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLSAg
fQotCi0gIC8vIFJldHVybnMgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRvIGFsbCB0ZXN0cyBpbiBh
IHBhcnRpY3VsYXIgdGVzdCBjYXNlCi0gIC8vIHNvcnRlZCBieSB0aGUgdGVzdCBuYW1lLiAgVGhl
IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlCi0gIC8vIGFycmF5LgotICBz
dGF0aWMgVGVzdEluZm8gY29uc3QqKiBHZXRTb3J0ZWRUZXN0cyhjb25zdCBUZXN0Q2FzZSogdGVz
dF9jYXNlKSB7Ci0gICAgVGVzdEluZm8gY29uc3QqKiBjb25zdCB0ZXN0cyA9Ci0gICAgICAgIG5l
dyBjb25zdCBUZXN0SW5mbypbdGVzdF9jYXNlLT50b3RhbF90ZXN0X2NvdW50KCldOwotCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKTsgKytpKQot
ICAgICAgdGVzdHNbaV0gPSB0ZXN0X2Nhc2UtPkdldFRlc3RJbmZvKGkpOwotCi0gICAgc3RkOjpz
b3J0KHRlc3RzLCB0ZXN0cyArIHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpLAotICAgICAg
ICAgICAgICBMZXNzQnlOYW1lPFRlc3RJbmZvPigpKTsKLSAgICByZXR1cm4gdGVzdHM7Ci0gIH0K
LX07Ci0KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFRlc3RDYXNlV2l0aENvbW1lbnRUZXN0IDogcHVibGljIFRlc3Qge307Ci1UWVBFRF9URVNU
X0NBU0UoVGVzdENhc2VXaXRoQ29tbWVudFRlc3QsIFR5cGVzPGludD4pOwotVFlQRURfVEVTVChU
ZXN0Q2FzZVdpdGhDb21tZW50VGVzdCwgRHVtbXkpIHt9Ci0KLWNvbnN0IGludCBrVHlwZWRUZXN0
Q2FzZXMgPSAxOwotY29uc3QgaW50IGtUeXBlZFRlc3RzID0gMTsKLSNlbHNlCi1jb25zdCBpbnQg
a1R5cGVkVGVzdENhc2VzID0gMDsKLWNvbnN0IGludCBrVHlwZWRUZXN0cyA9IDA7Ci0jZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFdlIGNhbiBvbmx5IHRlc3QgdGhlIGFjY2Vz
c29ycyB0aGF0IGRvIG5vdCBjaGFuZ2UgdmFsdWUgd2hpbGUgdGVzdHMgcnVuLgotLy8gU2luY2Ug
dGVzdHMgY2FuIGJlIHJ1biBpbiBhbnkgb3JkZXIsIHRoZSB2YWx1ZXMgdGhlIGFjY2Vzc29ycyB0
aGF0IHRyYWNrCi0vLyB0ZXN0IGV4ZWN1dGlvbiAoc3VjaCBhcyBmYWlsZWRfdGVzdF9jb3VudCkg
Y2FuIG5vdCBiZSBwcmVkaWN0ZWQuCi1URVNUKEFwaVRlc3QsIFVuaXRUZXN0SW1tdXRhYmxlQWNj
ZXNzb3JzV29yaykgewotICBVbml0VGVzdCogdW5pdF90ZXN0ID0gVW5pdFRlc3Q6OkdldEluc3Rh
bmNlKCk7Ci0KLSAgQVNTRVJUX0VRKDIgKyBrVHlwZWRUZXN0Q2FzZXMsIHVuaXRfdGVzdC0+dG90
YWxfdGVzdF9jYXNlX2NvdW50KCkpOwotICBFWFBFQ1RfRVEoMSArIGtUeXBlZFRlc3RDYXNlcywg
dW5pdF90ZXN0LT50ZXN0X2Nhc2VfdG9fcnVuX2NvdW50KCkpOwotICBFWFBFQ1RfRVEoMiwgdW5p
dF90ZXN0LT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwotICBFWFBFQ1RfRVEoNSArIGtUeXBlZFRl
c3RzLCB1bml0X3Rlc3QtPnRvdGFsX3Rlc3RfY291bnQoKSk7Ci0gIEVYUEVDVF9FUSgzICsga1R5
cGVkVGVzdHMsIHVuaXRfdGVzdC0+dGVzdF90b19ydW5fY291bnQoKSk7Ci0KLSAgY29uc3QgVGVz
dENhc2UqKiBjb25zdCB0ZXN0X2Nhc2VzID0gVW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RD
YXNlcygpOwotCi0gIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RfY2FzZXNbMF0tPm5hbWUo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgiRElTQUJMRURfVGVzdCIsIHRlc3RfY2FzZXNbMV0tPm5hbWUo
KSk7Ci0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLSAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdp
dGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsKLSNlbmRpZiAgLy8gR1RF
U1RfSEFTX1RZUEVEX1RFU1QKLQotICBkZWxldGVbXSB0ZXN0X2Nhc2VzOwotCi0gIC8vIFRoZSBm
b2xsb3dpbmcgbGluZXMgaW5pdGlhdGUgYWN0aW9ucyB0byB2ZXJpZnkgY2VydGFpbiBtZXRob2Rz
IGluCi0gIC8vIEZpbmFsU3VjY2Vzc0NoZWNrZXI6OlRlYXJEb3duLgotCi0gIC8vIFJlY29yZHMg
YSB0ZXN0IHByb3BlcnR5IHRvIHZlcmlmeSBUZXN0UmVzdWx0OjpHZXRUZXN0UHJvcGVydHkoKS4K
LSAgUmVjb3JkUHJvcGVydHkoImtleSIsICJ2YWx1ZSIpOwotfQotCi1Bc3NlcnRpb25SZXN1bHQg
SXNOdWxsKGNvbnN0IGNoYXIqIHN0cikgewotICBpZiAoc3RyICE9IE5VTEwpIHsKLSAgICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJhcmd1bWVudCBpcyAiIDw8IHN0cjsK
LSAgfQotICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotfQotCi1URVNUKEFwaVRlc3QsIFRl
c3RDYXNlSW1tdXRhYmxlQWNjZXNzb3JzV29yaykgewotICBjb25zdCBUZXN0Q2FzZSogdGVzdF9j
YXNlID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0Q2FzZSgiQXBpVGVzdCIpOwotICBBU1NFUlRf
VFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVz
dF9jYXNlLT5uYW1lKCkpOwotICBFWFBFQ1RfVFJVRShJc051bGwodGVzdF9jYXNlLT50eXBlX3Bh
cmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUodGVzdF9jYXNlLT5zaG91bGRfcnVuKCkpOwotICBFWFBF
Q1RfRVEoMSwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwotICBFWFBFQ1RfRVEo
MywgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKLSAgQVNTRVJUX0VRKDQsIHRlc3Rf
Y2FzZS0+dG90YWxfdGVzdF9jb3VudCgpKTsKLQotICBjb25zdCBUZXN0SW5mbyoqIHRlc3RzID0g
VW5pdFRlc3RIZWxwZXI6OkdldFNvcnRlZFRlc3RzKHRlc3RfY2FzZSk7Ci0KLSAgRVhQRUNUX1NU
UkVRKCJESVNBQkxFRF9EdW1teTEiLCB0ZXN0c1swXS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVR
KCJBcGlUZXN0IiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfVFJVRShJ
c051bGwodGVzdHNbMF0tPnZhbHVlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUoSXNOdWxsKHRl
c3RzWzBdLT50eXBlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX0ZBTFNFKHRlc3RzWzBdLT5zaG91bGRf
cnVuKCkpOwotCi0gIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFjY2Vzc29yc1dvcmsi
LCB0ZXN0c1sxXS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMV0t
PnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMV0tPnZhbHVl
X3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzFdLT50eXBlX3BhcmFtKCkp
KTsKLSAgRVhQRUNUX1RSVUUodGVzdHNbMV0tPnNob3VsZF9ydW4oKSk7Ci0KLSAgRVhQRUNUX1NU
UkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1syXS0+bmFtZSgpKTsK
LSAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0IiwgdGVzdHNbMl0tPnRlc3RfY2FzZV9uYW1lKCkpOwot
ICBFWFBFQ1RfVFJVRShJc051bGwodGVzdHNbMl0tPnZhbHVlX3BhcmFtKCkpKTsKLSAgRVhQRUNU
X1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUodGVz
dHNbMl0tPnNob3VsZF9ydW4oKSk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJVbml0VGVzdEltbXV0YWJs
ZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJBcGlU
ZXN0IiwgdGVzdHNbM10tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBFWFBFQ1RfVFJVRShJc051bGwo
dGVzdHNbM10tPnZhbHVlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNd
LT50eXBlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUodGVzdHNbM10tPnNob3VsZF9ydW4oKSk7
Ci0KLSAgZGVsZXRlW10gdGVzdHM7Ci0gIHRlc3RzID0gTlVMTDsKLQotI2lmIEdURVNUX0hBU19U
WVBFRF9URVNUCi0gIHRlc3RfY2FzZSA9IFVuaXRUZXN0SGVscGVyOjpGaW5kVGVzdENhc2UoIlRl
c3RDYXNlV2l0aENvbW1lbnRUZXN0LzAiKTsKLSAgQVNTRVJUX1RSVUUodGVzdF9jYXNlICE9IE5V
TEwpOwotCi0gIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3Rf
Y2FzZS0+bmFtZSgpKTsKLSAgRVhQRUNUX1NUUkVRKEdldFR5cGVOYW1lPGludD4oKS5jX3N0cigp
LCB0ZXN0X2Nhc2UtPnR5cGVfcGFyYW0oKSk7Ci0gIEVYUEVDVF9UUlVFKHRlc3RfY2FzZS0+c2hv
dWxkX3J1bigpKTsKLSAgRVhQRUNUX0VRKDAsIHRlc3RfY2FzZS0+ZGlzYWJsZWRfdGVzdF9jb3Vu
dCgpKTsKLSAgRVhQRUNUX0VRKDEsIHRlc3RfY2FzZS0+dGVzdF90b19ydW5fY291bnQoKSk7Ci0g
IEFTU0VSVF9FUSgxLCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKSk7Ci0KLSAgdGVzdHMg
PSBVbml0VGVzdEhlbHBlcjo6R2V0U29ydGVkVGVzdHModGVzdF9jYXNlKTsKLQotICBFWFBFQ1Rf
U1RSRVEoIkR1bW15IiwgdGVzdHNbMF0tPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiVGVzdENh
c2VXaXRoQ29tbWVudFRlc3QvMCIsIHRlc3RzWzBdLT50ZXN0X2Nhc2VfbmFtZSgpKTsKLSAgRVhQ
RUNUX1RSVUUoSXNOdWxsKHRlc3RzWzBdLT52YWx1ZV9wYXJhbSgpKSk7Ci0gIEVYUEVDVF9TVFJF
UShHZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdHNbMF0tPnR5cGVfcGFyYW0oKSk7Ci0g
IEVYUEVDVF9UUlVFKHRlc3RzWzBdLT5zaG91bGRfcnVuKCkpOwotCi0gIGRlbGV0ZVtdIHRlc3Rz
OwotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotfQotCi1URVNUKEFwaVRlc3QsIFRl
c3RDYXNlRGlzYWJsZWRBY2Nlc3NvcnNXb3JrKSB7Ci0gIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nh
c2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRlc3RDYXNlKCJESVNBQkxFRF9UZXN0Iik7Ci0gIEFT
U0VSVF9UUlVFKHRlc3RfY2FzZSAhPSBOVUxMKTsKLQotICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVE
X1Rlc3QiLCB0ZXN0X2Nhc2UtPm5hbWUoKSk7Ci0gIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nh
c2UtPnR5cGVfcGFyYW0oKSkpOwotICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlLT5zaG91bGRfcnVu
KCkpOwotICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlLT5kaXNhYmxlZF90ZXN0X2NvdW50KCkpOwot
ICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlLT50ZXN0X3RvX3J1bl9jb3VudCgpKTsKLSAgQVNTRVJU
X0VRKDEsIHRlc3RfY2FzZS0+dG90YWxfdGVzdF9jb3VudCgpKTsKLQotICBjb25zdCBUZXN0SW5m
byogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbygwKTsKLSAgRVhQRUNU
X1NUUkVRKCJEdW1teTIiLCB0ZXN0X2luZm8tPm5hbWUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiRElT
QUJMRURfVGVzdCIsIHRlc3RfaW5mby0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gIEVYUEVDVF9UUlVF
KElzTnVsbCh0ZXN0X2luZm8tPnZhbHVlX3BhcmFtKCkpKTsKLSAgRVhQRUNUX1RSVUUoSXNOdWxs
KHRlc3RfaW5mby0+dHlwZV9wYXJhbSgpKSk7Ci0gIEVYUEVDVF9GQUxTRSh0ZXN0X2luZm8tPnNo
b3VsZF9ydW4oKSk7Ci19Ci0KLS8vIFRoZXNlIHR3byB0ZXN0cyBhcmUgaGVyZSB0byBwcm92aWRl
IHN1cHBvcnQgZm9yIHRlc3RpbmcKLS8vIHRlc3RfY2FzZV90b19ydW5fY291bnQsIGRpc2FibGVk
X3Rlc3RfY291bnQsIGFuZCB0ZXN0X3RvX3J1bl9jb3VudC4KLVRFU1QoQXBpVGVzdCwgRElTQUJM
RURfRHVtbXkxKSB7fQotVEVTVChESVNBQkxFRF9UZXN0LCBEdW1teTIpIHt9Ci0KLWNsYXNzIEZp
bmFsU3VjY2Vzc0NoZWNrZXIgOiBwdWJsaWMgRW52aXJvbm1lbnQgewotIHByb3RlY3RlZDoKLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIFVuaXRUZXN0KiB1bml0X3Rlc3QgPSBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKTsKLQotICAgIEVYUEVDVF9FUSgxICsga1R5cGVkVGVzdENhc2Vz
LCB1bml0X3Rlc3QtPnN1Y2Nlc3NmdWxfdGVzdF9jYXNlX2NvdW50KCkpOwotICAgIEVYUEVDVF9F
USgzICsga1R5cGVkVGVzdHMsIHVuaXRfdGVzdC0+c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkpOwot
ICAgIEVYUEVDVF9FUSgwLCB1bml0X3Rlc3QtPmZhaWxlZF90ZXN0X2Nhc2VfY291bnQoKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIHVuaXRfdGVzdC0+ZmFpbGVkX3Rlc3RfY291bnQoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUodW5pdF90ZXN0LT5QYXNzZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVuaXRfdGVz
dC0+RmFpbGVkKCkpOwotICAgIEFTU0VSVF9FUSgyICsga1R5cGVkVGVzdENhc2VzLCB1bml0X3Rl
c3QtPnRvdGFsX3Rlc3RfY2FzZV9jb3VudCgpKTsKLQotICAgIGNvbnN0IFRlc3RDYXNlKiogY29u
c3QgdGVzdF9jYXNlcyA9IFVuaXRUZXN0SGVscGVyOjpHZXRTb3J0ZWRUZXN0Q2FzZXMoKTsKLQot
ICAgIEVYUEVDVF9TVFJFUSgiQXBpVGVzdCIsIHRlc3RfY2FzZXNbMF0tPm5hbWUoKSk7Ci0gICAg
RVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RfY2FzZXNbMF0tPnR5cGVfcGFyYW0oKSkpOwotICAgIEVY
UEVDVF9UUlVFKHRlc3RfY2FzZXNbMF0tPnNob3VsZF9ydW4oKSk7Ci0gICAgRVhQRUNUX0VRKDEs
IHRlc3RfY2FzZXNbMF0tPmRpc2FibGVkX3Rlc3RfY291bnQoKSk7Ci0gICAgQVNTRVJUX0VRKDQs
IHRlc3RfY2FzZXNbMF0tPnRvdGFsX3Rlc3RfY291bnQoKSk7Ci0gICAgRVhQRUNUX0VRKDMsIHRl
c3RfY2FzZXNbMF0tPnN1Y2Nlc3NmdWxfdGVzdF9jb3VudCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
dGVzdF9jYXNlc1swXS0+ZmFpbGVkX3Rlc3RfY291bnQoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVz
dF9jYXNlc1swXS0+UGFzc2VkKCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0X2Nhc2VzWzBdLT5G
YWlsZWQoKSk7Ci0KLSAgICBFWFBFQ1RfU1RSRVEoIkRJU0FCTEVEX1Rlc3QiLCB0ZXN0X2Nhc2Vz
WzFdLT5uYW1lKCkpOwotICAgIEVYUEVDVF9UUlVFKElzTnVsbCh0ZXN0X2Nhc2VzWzFdLT50eXBl
X3BhcmFtKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGVzdF9jYXNlc1sxXS0+c2hvdWxkX3J1bigp
KTsKLSAgICBFWFBFQ1RfRVEoMSwgdGVzdF9jYXNlc1sxXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgp
KTsKLSAgICBBU1NFUlRfRVEoMSwgdGVzdF9jYXNlc1sxXS0+dG90YWxfdGVzdF9jb3VudCgpKTsK
LSAgICBFWFBFQ1RfRVEoMCwgdGVzdF9jYXNlc1sxXS0+c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkp
OwotICAgIEVYUEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzFdLT5mYWlsZWRfdGVzdF9jb3VudCgpKTsK
LQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0gICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdp
dGhDb21tZW50VGVzdC8wIiwgdGVzdF9jYXNlc1syXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RS
RVEoR2V0VHlwZU5hbWU8aW50PigpLmNfc3RyKCksIHRlc3RfY2FzZXNbMl0tPnR5cGVfcGFyYW0o
KSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdF9jYXNlc1syXS0+c2hvdWxkX3J1bigpKTsKLSAgICBF
WFBFQ1RfRVEoMCwgdGVzdF9jYXNlc1syXS0+ZGlzYWJsZWRfdGVzdF9jb3VudCgpKTsKLSAgICBB
U1NFUlRfRVEoMSwgdGVzdF9jYXNlc1syXS0+dG90YWxfdGVzdF9jb3VudCgpKTsKLSAgICBFWFBF
Q1RfRVEoMSwgdGVzdF9jYXNlc1syXS0+c3VjY2Vzc2Z1bF90ZXN0X2NvdW50KCkpOwotICAgIEVY
UEVDVF9FUSgwLCB0ZXN0X2Nhc2VzWzJdLT5mYWlsZWRfdGVzdF9jb3VudCgpKTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0X2Nhc2VzWzJdLT5QYXNzZWQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRlc3Rf
Y2FzZXNbMl0tPkZhaWxlZCgpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1QKLQot
ICAgIGNvbnN0IFRlc3RDYXNlKiB0ZXN0X2Nhc2UgPSBVbml0VGVzdEhlbHBlcjo6RmluZFRlc3RD
YXNlKCJBcGlUZXN0Iik7Ci0gICAgY29uc3QgVGVzdEluZm8qKiB0ZXN0cyA9IFVuaXRUZXN0SGVs
cGVyOjpHZXRTb3J0ZWRUZXN0cyh0ZXN0X2Nhc2UpOwotICAgIEVYUEVDVF9TVFJFUSgiRElTQUJM
RURfRHVtbXkxIiwgdGVzdHNbMF0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJBcGlUZXN0
IiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXN0c1sw
XS0+c2hvdWxkX3J1bigpKTsKLQotICAgIEVYUEVDVF9TVFJFUSgiVGVzdENhc2VEaXNhYmxlZEFj
Y2Vzc29yc1dvcmsiLCB0ZXN0c1sxXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkFwaVRl
c3QiLCB0ZXN0c1sxXS0+dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxs
KHRlc3RzWzFdLT52YWx1ZV9wYXJhbSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3Rz
WzFdLT50eXBlX3BhcmFtKCkpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+c2hvdWxkX3J1
bigpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sxXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgdGVzdHNbMV0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkp
OwotCi0gICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZUltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0
ZXN0c1syXS0+bmFtZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1syXS0+
dGVzdF9jYXNlX25hbWUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT52YWx1
ZV9wYXJhbSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzJdLT50eXBlX3BhcmFt
KCkpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0c1syXS0+c2hvdWxkX3J1bigpKTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0c1syXS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRVEoMCwg
dGVzdHNbMl0tPnJlc3VsdCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwotCi0gICAgRVhQRUNU
X1NUUkVRKCJVbml0VGVzdEltbXV0YWJsZUFjY2Vzc29yc1dvcmsiLCB0ZXN0c1szXS0+bmFtZSgp
KTsKLSAgICBFWFBFQ1RfU1RSRVEoIkFwaVRlc3QiLCB0ZXN0c1szXS0+dGVzdF9jYXNlX25hbWUo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT52YWx1ZV9wYXJhbSgpKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoSXNOdWxsKHRlc3RzWzNdLT50eXBlX3BhcmFtKCkpKTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXN0c1szXS0+c2hvdWxkX3J1bigpKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXN0c1sz
XS0+cmVzdWx0KCktPlBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRVEoMSwgdGVzdHNbM10tPnJlc3Vs
dCgpLT50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwotICAgIGNvbnN0IFRlc3RQcm9wZXJ0eSYgcHJv
cGVydHkgPSB0ZXN0c1szXS0+cmVzdWx0KCktPkdldFRlc3RQcm9wZXJ0eSgwKTsKLSAgICBFWFBF
Q1RfU1RSRVEoImtleSIsIHByb3BlcnR5LmtleSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInZhbHVl
IiwgcHJvcGVydHkudmFsdWUoKSk7Ci0KLSAgICBkZWxldGVbXSB0ZXN0czsKLQotI2lmIEdURVNU
X0hBU19UWVBFRF9URVNUCi0gICAgdGVzdF9jYXNlID0gVW5pdFRlc3RIZWxwZXI6OkZpbmRUZXN0
Q2FzZSgiVGVzdENhc2VXaXRoQ29tbWVudFRlc3QvMCIpOwotICAgIHRlc3RzID0gVW5pdFRlc3RI
ZWxwZXI6OkdldFNvcnRlZFRlc3RzKHRlc3RfY2FzZSk7Ci0KLSAgICBFWFBFQ1RfU1RSRVEoIkR1
bW15IiwgdGVzdHNbMF0tPm5hbWUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJUZXN0Q2FzZVdpdGhD
b21tZW50VGVzdC8wIiwgdGVzdHNbMF0tPnRlc3RfY2FzZV9uYW1lKCkpOwotICAgIEVYUEVDVF9U
UlVFKElzTnVsbCh0ZXN0c1swXS0+dmFsdWVfcGFyYW0oKSkpOwotICAgIEVYUEVDVF9TVFJFUShH
ZXRUeXBlTmFtZTxpbnQ+KCkuY19zdHIoKSwgdGVzdHNbMF0tPnR5cGVfcGFyYW0oKSk7Ci0gICAg
RVhQRUNUX1RSVUUodGVzdHNbMF0tPnNob3VsZF9ydW4oKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVz
dHNbMF0tPnJlc3VsdCgpLT5QYXNzZWQoKSk7Ci0gICAgRVhQRUNUX0VRKDAsIHRlc3RzWzBdLT5y
ZXN1bHQoKS0+dGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKLQotICAgIGRlbGV0ZVtdIHRlc3RzOwot
I2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotICAgIGRlbGV0ZVtdIHRlc3RfY2FzZXM7
Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIEluaXRHb29nbGVU
ZXN0KCZhcmdjLCBhcmd2KTsKLQotICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IHRlc3Rp
bmc6OmludGVybmFsOjpGaW5hbFN1Y2Nlc3NDaGVja2VyKCkpOwotCi0gIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2FsbF90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTU1YWE2MjgyODQ4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF9hbGxfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRo
b3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0vLwotLy8gVGVzdHMgZm9yIEdvb2ds
ZSBDKysgVGVzdGluZyBGcmFtZXdvcmsgKEdvb2dsZSBUZXN0KQotLy8KLS8vIFNvbWV0aW1lcyBp
dCdzIGRlc2lyYWJsZSB0byBidWlsZCBtb3N0IG9mIEdvb2dsZSBUZXN0J3Mgb3duIHRlc3RzCi0v
LyBieSBjb21waWxpbmcgYSBzaW5nbGUgZmlsZS4gIFRoaXMgZmlsZSBzZXJ2ZXMgdGhpcyBwdXJw
b3NlLgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtZmlsZXBhdGhfdGVzdC5jYyIKLSNpbmNsdWRlICJ0
ZXN0L2d0ZXN0LWxpbmtlZF9wdHJfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LW1lc3Nh
Z2VfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0LW9wdGlvbnNfdGVzdC5jYyIKLSNpbmNs
dWRlICJ0ZXN0L2d0ZXN0LXBvcnRfdGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3ByZWRf
aW1wbF91bml0dGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyIKLSNp
bmNsdWRlICJ0ZXN0L2d0ZXN0LXRlc3QtcGFydF90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rl
c3QtdHlwZWQtdGVzdF90ZXN0LmNjIgotI2luY2x1ZGUgInRlc3QvZ3Rlc3QtdHlwZWQtdGVzdDJf
dGVzdC5jYyIKLSNpbmNsdWRlICJ0ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIgotI2luY2x1ZGUgInRl
c3QvcHJvZHVjdGlvbi5jYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZV91bml0dGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfYnJlYWtf
b25fZmFpbHVyZV91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNzhm
M2UwZjUzYjc5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9icmVh
a19vbl9mYWlsdXJlX3VuaXR0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlVuaXQgdGVz
dCBmb3IgR29vZ2xlIFRlc3QncyBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi0KLUEgdXNlciBjYW4g
YXNrIEdvb2dsZSBUZXN0IHRvIHNlZy1mYXVsdCB3aGVuIGFuIGFzc2VydGlvbiBmYWlscywgdXNp
bmcKLWVpdGhlciB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBvciB0aGUKLS0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiAgVGhpcyBzY3JpcHQgdGVz
dHMgc3VjaCBmdW5jdGlvbmFsaXR5Ci1ieSBpbnZva2luZyBndGVzdF9icmVha19vbl9mYWlsdXJl
X3VuaXR0ZXN0XyAoYSBwcm9ncmFtIHdyaXR0ZW4gd2l0aAotR29vZ2xlIFRlc3QpIHdpdGggZGlm
ZmVyZW50IGVudmlyb25tZW50cyBhbmQgY29tbWFuZCBsaW5lIGZsYWdzLgotIiIiCi0KLV9fYXV0
aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0KLWltcG9ydCBndGVzdF90
ZXN0X3V0aWxzCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIENvbnN0YW50cy4KLQotSVNf
V0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBm
b3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBicmVhay1vbi1mYWlsdXJlIG1vZGUuCi1CUkVBS19P
Tl9GQUlMVVJFX0VOVl9WQVIgPSAnR1RFU1RfQlJFQUtfT05fRkFJTFVSRScKLQotIyBUaGUgY29t
bWFuZCBsaW5lIGZsYWcgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgYnJlYWstb24tZmFpbHVy
ZSBtb2RlLgotQlJFQUtfT05fRkFJTFVSRV9GTEFHID0gJ2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmUn
Ci0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhl
IHRocm93LW9uLWZhaWx1cmUgbW9kZS4KLVRIUk9XX09OX0ZBSUxVUkVfRU5WX1ZBUiA9ICdHVEVT
VF9USFJPV19PTl9GQUlMVVJFJwotCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgZW5h
YmxpbmcvZGlzYWJsaW5nIHRoZSBjYXRjaC1leGNlcHRpb25zIG1vZGUuCi1DQVRDSF9FWENFUFRJ
T05TX0VOVl9WQVIgPSAnR1RFU1RfQ0FUQ0hfRVhDRVBUSU9OUycKLQotIyBQYXRoIHRvIHRoZSBn
dGVzdF9icmVha19vbl9mYWlsdXJlX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhFX1BBVEggPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZV91bml0dGVzdF8nKQotCi0KLWVudmlyb24gPSBndGVzdF90ZXN0X3V0aWxzLmVudmly
b24KLVNldEVudlZhciA9IGd0ZXN0X3Rlc3RfdXRpbHMuU2V0RW52VmFyCi0KLSMgVGVzdHMgaW4g
dGhpcyBmaWxlIHJ1biBhIEdvb2dsZS1UZXN0LWJhc2VkIHRlc3QgcHJvZ3JhbSBhbmQgZXhwZWN0
IGl0Ci0jIHRvIHRlcm1pbmF0ZSBwcmVtYXR1cmVseS4gIFRoZXJlZm9yZSB0aGV5IGFyZSBpbmNv
bXBhdGlibGUgd2l0aAotIyB0aGUgcHJlbWF0dXJlLWV4aXQtZmlsZSBwcm90b2NvbCBieSBkZXNp
Z24uICBVbnNldCB0aGUKLSMgcHJlbWF0dXJlLWV4aXQgZmlsZXBhdGggdG8gcHJldmVudCBHb29n
bGUgVGVzdCBmcm9tIGNyZWF0aW5nCi0jIHRoZSBmaWxlLgotU2V0RW52VmFyKGd0ZXN0X3Rlc3Rf
dXRpbHMuUFJFTUFUVVJFX0VYSVRfRklMRV9FTlZfVkFSLCBOb25lKQotCi0KLWRlZiBSdW4oY29t
bWFuZCk6Ci0gICIiIlJ1bnMgYSBjb21tYW5kOyByZXR1cm5zIDEgaWYgaXQgd2FzIGtpbGxlZCBi
eSBhIHNpZ25hbCwgb3IgMCBvdGhlcndpc2UuIiIiCi0KLSAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMu
U3VicHJvY2Vzcyhjb21tYW5kLCBlbnY9ZW52aXJvbikKLSAgaWYgcC50ZXJtaW5hdGVkX2J5X3Np
Z25hbDoKLSAgICByZXR1cm4gMQotICBlbHNlOgotICAgIHJldHVybiAwCi0KLQotIyBUaGUgdGVz
dHMuCi0KLQotY2xhc3MgR1Rlc3RCcmVha09uRmFpbHVyZVVuaXRUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVS
RSBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgotICB0aGUgLS1ndGVzdF9icmVha19vbl9mYWlsdXJl
IGZsYWcgdG8gdHVybiBhc3NlcnRpb24gZmFpbHVyZXMgaW50bwotICBzZWdtZW50YXRpb24gZmF1
bHRzLgotICAiIiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZs
YWdfdmFsdWUsIGV4cGVjdF9zZWdfZmF1bHQpOgotICAgICIiIlJ1bnMgZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZV91bml0dGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQgaXQgZG9lcwotICAgIChvciBkb2Vz
IG5vdCkgaGF2ZSBhIHNlZy1mYXVsdC4KLQotICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFyX3ZhbHVl
OiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJFQUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3Vs
ZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFsdWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYg
dGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVzZW50LgotICAgICAgZXhwZWN0X3NlZ19mYXVsdDog
MSBpZiB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBnZW5lcmF0ZSBhIHNlZy1mYXVsdDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIDAgb3RoZXJ3aXNlLgotICAgICIiIgotCi0gICAgU2V0RW52
VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgZW52X3Zhcl92YWx1ZSkKLQotICAgIGlmIGVu
dl92YXJfdmFsdWUgaXMgTm9uZToKLSAgICAgIGVudl92YXJfdmFsdWVfbXNnID0gJyBpcyBub3Qg
c2V0JwotICAgIGVsc2U6Ci0gICAgICBlbnZfdmFyX3ZhbHVlX21zZyA9ICc9JyArIGVudl92YXJf
dmFsdWUKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAgICAgIGZsYWcgPSAnJwotICAg
IGVsaWYgZmxhZ192YWx1ZSA9PSAnMCc6Ci0gICAgICBmbGFnID0gJy0tJXM9MCcgJSBCUkVBS19P
Tl9GQUlMVVJFX0ZMQUcKLSAgICBlbHNlOgotICAgICAgZmxhZyA9ICctLSVzJyAlIEJSRUFLX09O
X0ZBSUxVUkVfRkxBRwotCi0gICAgY29tbWFuZCA9IFtFWEVfUEFUSF0KLSAgICBpZiBmbGFnOgot
ICAgICAgY29tbWFuZC5hcHBlbmQoZmxhZykKLQotICAgIGlmIGV4cGVjdF9zZWdfZmF1bHQ6Ci0g
ICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCcKLSAgICBlbHNlOgotICAgICAgc2hvdWxkX29y
X25vdCA9ICdzaG91bGQgbm90JwotCi0gICAgaGFzX3NlZ19mYXVsdCA9IFJ1bihjb21tYW5kKQot
Ci0gICAgU2V0RW52VmFyKEJSRUFLX09OX0ZBSUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICAgIG1z
ZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNlIGEg
c2VnLWZhdWx0LicgJQotICAgICAgICAgICAoQlJFQUtfT05fRkFJTFVSRV9FTlZfVkFSLCBlbnZf
dmFyX3ZhbHVlX21zZywgJyAnLmpvaW4oY29tbWFuZCksCi0gICAgICAgICAgICBzaG91bGRfb3Jf
bm90KSkKLSAgICBzZWxmLmFzc2VydF8oaGFzX3NlZ19mYXVsdCA9PSBleHBlY3Rfc2VnX2ZhdWx0
LCBtc2cpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVzdHMg
dGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1
ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLQotICBk
ZWYgdGVzdEVudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgR1RFU1RfQlJFQUtf
T05fRkFJTFVSRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVy
aWZ5KGVudl92YXJfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTApCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAg
ZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9
MSkKLQotICBkZWYgdGVzdEZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rl
c3RfYnJlYWtfb25fZmFpbHVyZSBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52
X3Zhcl92YWx1ZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAot
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192
YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3NlZ19mYXVsdD0xKQotCi0g
IGRlZiB0ZXN0RmxhZ092ZXJyaWRlc0VudlZhcihzZWxmKToKLSAgICAiIiJUZXN0cyB0aGF0IHRo
ZSBmbGFnIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuIiIiCi0KLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBm
bGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTAp
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0X3Nl
Z19mYXVsdD0xKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJfdmFsdWU9JzEnLAotICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdF9zZWdfZmF1bHQ9MCkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVl
PScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3Rfc2VnX2ZhdWx0PTEpCi0KLSAgZGVmIHRlc3RCcmVha09uRmFpbHVy
ZU92ZXJyaWRlc1Rocm93T25GYWlsdXJlKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgZ3Rlc3Rf
YnJlYWtfb25fZmFpbHVyZSBvdmVycmlkZXMgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZS4iIiIKLQot
ICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJFX0VOVl9WQVIsICcxJykKLSAgICB0cnk6Ci0g
ICAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dF9zZWdfZmF1bHQ9MSkKLSAgICBmaW5hbGx5OgotICAgICAgU2V0RW52VmFyKFRIUk9XX09OX0ZB
SUxVUkVfRU5WX1ZBUiwgTm9uZSkKLQotICBpZiBJU19XSU5ET1dTOgotICAgIGRlZiB0ZXN0Q2F0
Y2hFeGNlcHRpb25zRG9lc05vdEludGVyZmVyZShzZWxmKToKLSAgICAgICIiIlRlc3RzIHRoYXQg
Z3Rlc3RfY2F0Y2hfZXhjZXB0aW9ucyBkb2Vzbid0IGludGVyZmVyZS4iIiIKLQotICAgICAgU2V0
RW52VmFyKENBVENIX0VYQ0VQVElPTlNfRU5WX1ZBUiwgJzEnKQotICAgICAgdHJ5OgotICAgICAg
ICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dF9zZWdfZmF1bHQ9MSkKLSAgICAgIGZpbmFsbHk6Ci0gICAgICAgIFNldEVudlZhcihDQVRDSF9F
WENFUFRJT05TX0VOVl9WQVIsIE5vbmUpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkZDA3NDc4YzA3NTcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0
L2d0ZXN0X2JyZWFrX29uX2ZhaWx1cmVfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEs
ODggKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gVW5pdCB0
ZXN0IGZvciBHb29nbGUgVGVzdCdzIGJyZWFrLW9uLWZhaWx1cmUgbW9kZS4KLS8vCi0vLyBBIHVz
ZXIgY2FuIGFzayBHb29nbGUgVGVzdCB0byBzZWctZmF1bHQgd2hlbiBhbiBhc3NlcnRpb24gZmFp
bHMsIHVzaW5nCi0vLyBlaXRoZXIgdGhlIEdURVNUX0JSRUFLX09OX0ZBSUxVUkUgZW52aXJvbm1l
bnQgdmFyaWFibGUgb3IgdGhlCi0vLyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZy4gIFRo
aXMgZmlsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHN1Y2gKLS8vIGZ1bmN0aW9uYWxpdHkuCi0vLwot
Ly8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVuaXQgdGVzdC4g
IEl0IGlzCi0vLyBleHBlY3RlZCB0byBmYWlsLiAgRG9uJ3QgcnVuIGl0IGRpcmVjdGx5LgotCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lmIEdURVNUX09TX1dJTkRPV1MKLSMgaW5jbHVk
ZSA8d2luZG93cy5oPgotIyBpbmNsdWRlIDxzdGRsaWIuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
ewotCi0vLyBBIHRlc3QgdGhhdCdzIGV4cGVjdGVkIHRvIGZhaWwuCi1URVNUKEZvbywgQmFyKSB7
Ci0gIEVYUEVDVF9FUSgyLCAzKTsKLX0KLQotI2lmIEdURVNUX0hBU19TRUggJiYgIUdURVNUX09T
X1dJTkRPV1NfTU9CSUxFCi0vLyBPbiBXaW5kb3dzIE1vYmlsZSBnbG9iYWwgZXhjZXB0aW9uIGhh
bmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkLgotTE9ORyBXSU5BUEkgRXhpdFdpdGhFeGNlcHRpb25D
b2RlKAotICAgIHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTKiBleGNlcHRpb25fcG9pbnRlcnMp
IHsKLSAgZXhpdChleGNlcHRpb25fcG9pbnRlcnMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9u
Q29kZSk7Ci19Ci0jZW5kaWYKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdj
LCBjaGFyICoqYXJndikgewotI2lmIEdURVNUX09TX1dJTkRPV1MKLSAgLy8gU3VwcHJlc3NlcyBk
aXNwbGF5IG9mIHRoZSBXaW5kb3dzIGVycm9yIGRpYWxvZyB1cG9uIGVuY291bnRlcmluZwotICAv
LyBhIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCAoc2VnbWVudCB2aW9sYXRpb24pLgotICBTZXRF
cnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwgU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7
Ci0KLSMgaWYgR1RFU1RfSEFTX1NFSCAmJiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLQotICAv
LyBUaGUgZGVmYXVsdCB1bmhhbmRsZWQgZXhjZXB0aW9uIGZpbHRlciBkb2VzIG5vdCBhbHdheXMg
ZXhpdAotICAvLyB3aXRoIHRoZSBleGNlcHRpb24gY29kZSBhcyBleGl0IGNvZGUgLSBmb3IgZXhh
bXBsZSBpdCBleGl0cyB3aXRoCi0gIC8vIDAgZm9yIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9O
IGFuZCAxIGZvciBFWENFUFRJT05fQlJFQUtQT0lOVAotICAvLyBpZiB0aGUgYXBwbGljYXRpb24g
aXMgY29tcGlsZWQgaW4gZGVidWcgbW9kZS4gVGh1cyB3ZSB1c2Ugb3VyIG93bgotICAvLyBmaWx0
ZXIgd2hpY2ggYWx3YXlzIGV4aXRzIHdpdGggdGhlIGV4Y2VwdGlvbiBjb2RlIGZvciB1bmhhbmRs
ZWQKLSAgLy8gZXhjZXB0aW9ucy4KLSAgU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKEV4aXRX
aXRoRXhjZXB0aW9uQ29kZSk7Ci0KLSMgZW5kaWYKLSNlbmRpZgotCi0gIHRlc3Rpbmc6OkluaXRH
b29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3Qu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVzdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTZmYzIyZmQxZmU1Li4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNlcHRpb25zX3Rlc3QucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENv
cHlyaWdodCAyMDEwIEdvb2dsZSBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiVGVzdHMgR29vZ2xlIFRlc3QncyBleGNlcHRpb24gY2F0Y2hpbmcgYmVo
YXZpb3IuCi0KLVRoaXMgc2NyaXB0IGludm9rZXMgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0
XyBhbmQKLWd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfZXhfdGVzdF8gKHByb2dyYW1zIHdyaXR0ZW4g
d2l0aAotR29vZ2xlIFRlc3QpIGFuZCB2ZXJpZmllcyB0aGVpciBvdXRwdXQuCi0iIiIKLQotX19h
dXRob3JfXyA9ICd2bGFkbEBnb29nbGUuY29tIChWbGFkIExvc2V2KScKLQotaW1wb3J0IG9zCi0K
LWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29uc3RhbnRzLgotRkxBR19QUkVGSVggPSAn
LS1ndGVzdF8nCi1MSVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJwot
Tk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHID0gRkxBR19QUkVGSVggKyAnY2F0Y2hfZXhjZXB0aW9u
cz0wJwotRklMVEVSX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdmaWx0ZXInCi0KLSMgUGF0aCB0byB0
aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc19leF90ZXN0XyBiaW5hcnksIGNvbXBpbGVkIHdpdGgK
LSMgZXhjZXB0aW9ucyBlbmFibGVkLgotRVhfRVhFX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdl
dFRlc3RFeGVjdXRhYmxlUGF0aCgKLSAgICAnZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc19leF90ZXN0
XycpCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9uc190ZXN0XyBiaW5hcnks
IGNvbXBpbGVkIHdpdGgKLSMgZXhjZXB0aW9ucyBkaXNhYmxlZC4KLUVYRV9QQVRIID0gZ3Rlc3Rf
dGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoCi0gICAgJ2d0ZXN0X2NhdGNoX2V4Y2Vw
dGlvbnNfbm9fZXhfdGVzdF8nKQotCi1lbnZpcm9uID0gZ3Rlc3RfdGVzdF91dGlscy5lbnZpcm9u
Ci1TZXRFbnZWYXIgPSBndGVzdF90ZXN0X3V0aWxzLlNldEVudlZhcgotCi0jIFRlc3RzIGluIHRo
aXMgZmlsZSBydW4gYSBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0IHByb2dyYW0gYW5kIGV4cGVjdCBp
dAotIyB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkuICBUaGVyZWZvcmUgdGhleSBhcmUgaW5jb21w
YXRpYmxlIHdpdGgKLSMgdGhlIHByZW1hdHVyZS1leGl0LWZpbGUgcHJvdG9jb2wgYnkgZGVzaWdu
LiAgVW5zZXQgdGhlCi0jIHByZW1hdHVyZS1leGl0IGZpbGVwYXRoIHRvIHByZXZlbnQgR29vZ2xl
IFRlc3QgZnJvbSBjcmVhdGluZwotIyB0aGUgZmlsZS4KLVNldEVudlZhcihndGVzdF90ZXN0X3V0
aWxzLlBSRU1BVFVSRV9FWElUX0ZJTEVfRU5WX1ZBUiwgTm9uZSkKLQotVEVTVF9MSVNUID0gZ3Rl
c3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKAotICAgIFtFWEVfUEFUSCwgTElTVF9URVNUU19GTEFH
XSwgZW52PWVudmlyb24pLm91dHB1dAotCi1TVVBQT1JUU19TRUhfRVhDRVBUSU9OUyA9ICdUaHJv
d3NTZWhFeGNlcHRpb24nIGluIFRFU1RfTElTVAotCi1pZiBTVVBQT1JUU19TRUhfRVhDRVBUSU9O
UzoKLSAgQklOQVJZX09VVFBVVCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcyhbRVhFX1BB
VEhdLCBlbnY9ZW52aXJvbikub3V0cHV0Ci0KLUVYX0JJTkFSWV9PVVRQVVQgPSBndGVzdF90ZXN0
X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgW0VYX0VYRV9QQVRIXSwgZW52PWVudmlyb24pLm91dHB1
dAotCi0KLSMgVGhlIHRlc3RzLgotaWYgU1VQUE9SVFNfU0VIX0VYQ0VQVElPTlM6Ci0gICMgcHls
aW50OmRpc2FibGUtbXNnPUM2MzAyCi0gIGNsYXNzIENhdGNoU2VoRXhjZXB0aW9uc1Rlc3QoZ3Rl
c3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZXhjZXB0aW9uLWNhdGNoaW5n
IGJlaGF2aW9yLiIiIgotCi0KLSAgICBkZWYgVGVzdFNlaEV4Y2VwdGlvbnMoc2VsZiwgdGVzdF9v
dXRwdXQpOgotICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0aW9uIHdpdGggY29kZSAweDJh
IHRocm93biAnCi0gICAgICAgICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgY29u
c3RydWN0b3InCi0gICAgICAgICAgICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCi0gICAgICBzZWxm
LmFzc2VydF8oJ1NFSCBleGNlcHRpb24gd2l0aCBjb2RlIDB4MmEgdGhyb3duICcKLSAgICAgICAg
ICAgICAgICAgICAnaW4gdGhlIHRlc3QgZml4dHVyZVwncyBkZXN0cnVjdG9yJwotICAgICAgICAg
ICAgICAgICAgIGluIHRlc3Rfb3V0cHV0KQotICAgICAgc2VsZi5hc3NlcnRfKCdTRUggZXhjZXB0
aW9uIHdpdGggY29kZSAweDJhIHRocm93biBpbiBTZXRVcFRlc3RDYXNlKCknCi0gICAgICAgICAg
ICAgICAgICAgaW4gdGVzdF9vdXRwdXQpCi0gICAgICBzZWxmLmFzc2VydF8oJ1NFSCBleGNlcHRp
b24gd2l0aCBjb2RlIDB4MmEgdGhyb3duIGluIFRlYXJEb3duVGVzdENhc2UoKScKLSAgICAgICAg
ICAgICAgICAgICBpbiB0ZXN0X291dHB1dCkKLSAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2Vw
dGlvbiB3aXRoIGNvZGUgMHgyYSB0aHJvd24gaW4gU2V0VXAoKScKLSAgICAgICAgICAgICAgICAg
ICBpbiB0ZXN0X291dHB1dCkKLSAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRo
IGNvZGUgMHgyYSB0aHJvd24gaW4gVGVhckRvd24oKScKLSAgICAgICAgICAgICAgICAgICBpbiB0
ZXN0X291dHB1dCkKLSAgICAgIHNlbGYuYXNzZXJ0XygnU0VIIGV4Y2VwdGlvbiB3aXRoIGNvZGUg
MHgyYSB0aHJvd24gaW4gdGhlIHRlc3QgYm9keScKLSAgICAgICAgICAgICAgICAgICBpbiB0ZXN0
X291dHB1dCkKLQotICAgIGRlZiB0ZXN0Q2F0Y2hlc1NlaEV4Y2VwdGlvbnNXaXRoQ3h4RXhjZXB0
aW9uc0VuYWJsZWQoc2VsZik6Ci0gICAgICBzZWxmLlRlc3RTZWhFeGNlcHRpb25zKEVYX0JJTkFS
WV9PVVRQVVQpCi0KLSAgICBkZWYgdGVzdENhdGNoZXNTZWhFeGNlcHRpb25zV2l0aEN4eEV4Y2Vw
dGlvbnNEaXNhYmxlZChzZWxmKToKLSAgICAgIHNlbGYuVGVzdFNlaEV4Y2VwdGlvbnMoQklOQVJZ
X09VVFBVVCkKLQotCi1jbGFzcyBDYXRjaEN4eEV4Y2VwdGlvbnNUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyBDKysgZXhjZXB0aW9uLWNhdGNoaW5nIGJlaGF2aW9y
LgotCi0gICAgIFRlc3RzIGluIHRoaXMgdGVzdCBjYXNlIHZlcmlmeSB0aGF0OgotICAgICAqIEMr
KyBleGNlcHRpb25zIGFyZSBjYXVnaHQgYW5kIGxvZ2dlZCBhcyBDKysgKG5vdCBTRUgpIGV4Y2Vw
dGlvbnMKLSAgICAgKiBFeGNlcHRpb24gdGhyb3duIGFmZmVjdCB0aGUgcmVtYWluZGVyIG9mIHRo
ZSB0ZXN0IHdvcmsgZmxvdyBpbiB0aGUKLSAgICAgICBleHBlY3RlZCBtYW5uZXIuCi0gICIiIgot
Ci0gIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJbkZpeHR1cmVDb25zdHJ1Y3RvcihzZWxm
KToKLSAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAnCi0g
ICAgICAgICAgICAgICAgICciU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIgdGhyb3duICcKLSAgICAg
ICAgICAgICAgICAgJ2luIHRoZSB0ZXN0IGZpeHR1cmVcJ3MgY29uc3RydWN0b3InCi0gICAgICAg
ICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCd1bmV4cGVj
dGVkJyBub3QgaW4gRVhfQklOQVJZX09VVFBVVCwKLSAgICAgICAgICAgICAgICAgJ1RoaXMgZmFp
bHVyZSBiZWxvbmdzIGluIHRoaXMgdGVzdCBvbmx5IGlmICcKLSAgICAgICAgICAgICAgICAgJyJD
eHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCIgKG5vIHF1b3RlcykgJwotICAgICAgICAgICAg
ICAgICAnYXBwZWFycyBvbiB0aGUgc2FtZSBsaW5lIGFzIHdvcmRzICJjYWxsZWQgdW5leHBlY3Rl
ZGx5IicpCi0KLSAgaWYgKCdDeHhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0LlRocm93c0V4Y2Vw
dGlvbkluRGVzdHJ1Y3RvcicgaW4KLSAgICAgIEVYX0JJTkFSWV9PVVRQVVQpOgotCi0gICAgZGVm
IHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luRml4dHVyZURlc3RydWN0b3Ioc2VsZik6Ci0gICAg
ICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAnCi0gICAgICAg
ICAgICAgICAgICAgJyJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIiB0aHJvd24gJwotICAgICAgICAg
ICAgICAgICAgICdpbiB0aGUgdGVzdCBmaXh0dXJlXCdzIGRlc3RydWN0b3InCi0gICAgICAgICAg
ICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKLSAgICAgIHNlbGYuYXNzZXJ0XygnQ3h4RXhj
ZXB0aW9uSW5EZXN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKLSAgICAgICAgICAg
ICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKLSAgICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQotCi0gIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlvbnNJblNldFVwVGVz
dENhc2Uoc2VsZik6Ci0gICAgc2VsZi5hc3NlcnRfKCdDKysgZXhjZXB0aW9uIHdpdGggZGVzY3Jp
cHRpb24gIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iJwotICAgICAgICAgICAgICAgICAnIHRocm93
biBpbiBTZXRVcFRlc3RDYXNlKCknCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQ
VVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVh
ckRvd25UZXN0Q2FzZSgpICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4n
Ci0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0IGNvbnN0cnVjdG9yICcKLSAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdENh
c2VUZXN0IGRlc3RydWN0b3IgJwotICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKLSAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6OlNldFVwKCkgJwotICAgICAgICAg
ICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklO
QVJZX09VVFBVVCkKLSAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2Fz
ZVRlc3Q6OlRlYXJEb3duKCkgJwotICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVk
LicKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKLSAgICBzZWxmLmFzc2Vy
dF8oJ0N4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgdGVzdCBib2R5ICcKLSAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCi0KLSAgZGVmIHRlc3RDYXRjaGVzQ3h4RXhjZXB0aW9uc0luVGVhckRvd25U
ZXN0Q2FzZShzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNj
cmlwdGlvbiAiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiInCi0gICAgICAgICAgICAgICAgICcgdGhy
b3duIGluIFRlYXJEb3duVGVzdENhc2UoKScKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZ
X09VVFBVVCkKLQotICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5TZXRVcChzZWxmKToK
LSAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRh
cmQgQysrIGV4Y2VwdGlvbiInCi0gICAgICAgICAgICAgICAgICcgdGhyb3duIGluIFNldFVwKCkn
Ci0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRf
KCdDeHhFeGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcKLSAgICAgICAg
ICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJ
TkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblNldFVwVGVzdCBk
ZXN0cnVjdG9yICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAg
ICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhF
eGNlcHRpb25JblNldFVwVGVzdDo6VGVhckRvd24oKSAnCi0gICAgICAgICAgICAgICAgICdjYWxs
ZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBFWF9CSU5BUllfT1VUUFVUKQot
ICAgIHNlbGYuYXNzZXJ0XygndW5leHBlY3RlZCcgbm90IGluIEVYX0JJTkFSWV9PVVRQVVQsCi0g
ICAgICAgICAgICAgICAgICdUaGlzIGZhaWx1cmUgYmVsb25ncyBpbiB0aGlzIHRlc3Qgb25seSBp
ZiAnCi0gICAgICAgICAgICAgICAgICciQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QiIChubyBxdW90
ZXMpICcKLSAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgb24gdGhlIHNhbWUgbGluZSBhcyB3b3Jk
cyAiY2FsbGVkIHVuZXhwZWN0ZWRseSInKQotCi0gIGRlZiB0ZXN0Q2F0Y2hlc0N4eEV4Y2VwdGlv
bnNJblRlYXJEb3duKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0XygnQysrIGV4Y2VwdGlvbiB3aXRo
IGRlc2NyaXB0aW9uICJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIicKLSAgICAgICAgICAgICAgICAg
JyB0aHJvd24gaW4gVGVhckRvd24oKScKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09V
VFBVVCkKLSAgICBzZWxmLmFzc2VydF8oJ0N4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0OjpUZWFy
RG93blRlc3RDYXNlKCkgJwotICAgICAgICAgICAgICAgICAnY2FsbGVkIGFzIGV4cGVjdGVkLicK
LSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09VVFBVVCkKLSAgICBzZWxmLmFzc2VydF8o
J0N4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0IGRlc3RydWN0b3IgJwotICAgICAgICAgICAgICAg
ICAnY2FsbGVkIGFzIGV4cGVjdGVkLicKLSAgICAgICAgICAgICAgICAgaW4gRVhfQklOQVJZX09V
VFBVVCkKLQotICBkZWYgdGVzdENhdGNoZXNDeHhFeGNlcHRpb25zSW5UZXN0Qm9keShzZWxmKToK
LSAgICBzZWxmLmFzc2VydF8oJ0MrKyBleGNlcHRpb24gd2l0aCBkZXNjcmlwdGlvbiAiU3RhbmRh
cmQgQysrIGV4Y2VwdGlvbiInCi0gICAgICAgICAgICAgICAgICcgdGhyb3duIGluIHRoZSB0ZXN0
IGJvZHknCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICcK
LSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBlY3RlZC4nCi0gICAgICAgICAgICAgICAg
IGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5hc3NlcnRfKCdDeHhFeGNlcHRpb25JblRl
c3RCb2R5VGVzdCBkZXN0cnVjdG9yICcKLSAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhcyBleHBl
Y3RlZC4nCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0gICAgc2VsZi5h
c3NlcnRfKCdDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdDo6VGVhckRvd24oKSAnCi0gICAgICAg
ICAgICAgICAgICdjYWxsZWQgYXMgZXhwZWN0ZWQuJwotICAgICAgICAgICAgICAgICBpbiBFWF9C
SU5BUllfT1VUUFVUKQotCi0gIGRlZiB0ZXN0Q2F0Y2hlc05vblN0ZEN4eEV4Y2VwdGlvbnMoc2Vs
Zik6Ci0gICAgc2VsZi5hc3NlcnRfKCdVbmtub3duIEMrKyBleGNlcHRpb24gdGhyb3duIGluIHRo
ZSB0ZXN0IGJvZHknCi0gICAgICAgICAgICAgICAgIGluIEVYX0JJTkFSWV9PVVRQVVQpCi0KLSAg
ZGVmIHRlc3RVbmhhbmRsZWRDeHhFeGNlcHRpb25zQWJvcnRUaGVQcm9ncmFtKHNlbGYpOgotICAg
ICMgRmlsdGVycyBvdXQgU0VIIGV4Y2VwdGlvbiB0ZXN0cyBvbiBXaW5kb3dzLiBVbmhhbmRsZWQg
U0VIIGV4Y2VwdGlvbnMKLSAgICAjIGNhdXNlIHRlc3RzIHRvIHNob3cgcG9wLXVwIHdpbmRvd3Mg
dGhlcmUuCi0gICAgRklUTEVSX09VVF9TRUhfVEVTVFNfRkxBRyA9IEZJTFRFUl9GTEFHICsgJz0t
KlNlaConCi0gICAgIyBCeSBkZWZhdWx0LCBHb29nbGUgVGVzdCBkb2Vzbid0IGNhdGNoIHRoZSBl
eGNlcHRpb25zLgotICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291dHB1dCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICAgICAgW0VYX0VYRV9QQVRILAotICAgICAg
ICAgTk9fQ0FUQ0hfRVhDRVBUSU9OU19GTEFHLAotICAgICAgICAgRklUTEVSX09VVF9TRUhfVEVT
VFNfRkxBR10sCi0gICAgICAgIGVudj1lbnZpcm9uKS5vdXRwdXQKLQotICAgIHNlbGYuYXNzZXJ0
XygnVW5oYW5kbGVkIEMrKyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0nCi0gICAg
ICAgICAgICAgICAgIGluIHVuY2F1Z2h0X2V4Y2VwdGlvbnNfZXhfYmluYXJ5X291dHB1dCkKLSAg
ICBzZWxmLmFzc2VydF8oJ3VuZXhwZWN0ZWQnIG5vdCBpbiB1bmNhdWdodF9leGNlcHRpb25zX2V4
X2JpbmFyeV9vdXRwdXQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3Rf
dGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY2F0
Y2hfZXhjZXB0aW9uc190ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY2F0Y2hfZXhj
ZXB0aW9uc190ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQyNjM3ZWM4
YmIzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jYXRjaF9leGNl
cHRpb25zX3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsMzExICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDEwLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
Ly8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0
aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHZsYWRs
QGdvb2dsZS5jb20gKFZsYWQgTG9zZXYpCi0vLwotLy8gVGVzdHMgZm9yIEdvb2dsZSBUZXN0IGl0
c2VsZi4gVGVzdHMgaW4gdGhpcyBmaWxlIHRocm93IEMrKyBvciBTRUgKLS8vIGV4Y2VwdGlvbnMs
IGFuZCB0aGUgb3V0cHV0IGlzIHZlcmlmaWVkIGJ5IGd0ZXN0X2NhdGNoX2V4Y2VwdGlvbnNfdGVz
dC5weS4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPiAg
Ly8gTk9MSU5UCi0jaW5jbHVkZSA8c3RkbGliLmg+ICAvLyBGb3IgZXhpdCgpLgotCi0jaWYgR1RF
U1RfSEFTX1NFSAotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotI2lmIEdURVNUX0hB
U19FWENFUFRJT05TCi0jIGluY2x1ZGUgPGV4Y2VwdGlvbj4gIC8vIEZvciBzZXRfdGVybWluYXRl
KCkuCi0jIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNlbmRpZgotCi11c2luZyB0ZXN0aW5nOjpUZXN0
OwotCi0jaWYgR1RFU1RfSEFTX1NFSAotCi1jbGFzcyBTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9y
VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIFNlaEV4Y2VwdGlvbkluQ29uc3RydWN0
b3JUZXN0KCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRFU1Rf
RihTZWhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5Db25zdHJ1
Y3Rvcikge30KLQotY2xhc3MgU2VoRXhjZXB0aW9uSW5EZXN0cnVjdG9yVGVzdCA6IHB1YmxpYyBU
ZXN0IHsKLSBwdWJsaWM6Ci0gIH5TZWhFeGNlcHRpb25JbkRlc3RydWN0b3JUZXN0KCkgeyBSYWlz
ZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0LCBUaHJvd3NFeGNlcHRpb25JbkRlc3RydWN0b3IpIHt9Ci0KLWNsYXNz
IFNlaEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGlj
OgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwg
MCwgTlVMTCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0
LCBUaHJvd3NFeGNlcHRpb25JblNldFVwVGVzdENhc2UpIHt9Ci0KLWNsYXNzIFNlaEV4Y2VwdGlv
bkluVGVhckRvd25UZXN0Q2FzZVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVM
TCk7IH0KLX07Ci0KLVRFU1RfRihTZWhFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2VUZXN0LCBU
aHJvd3NFeGNlcHRpb25JblRlYXJEb3duVGVzdENhc2UpIHt9Ci0KLWNsYXNzIFNlaEV4Y2VwdGlv
bkluU2V0VXBUZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lk
IFNldFVwKCkgeyBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7IH0KLX07Ci0KLVRFU1Rf
RihTZWhFeGNlcHRpb25JblNldFVwVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5TZXRVcCkge30KLQot
Y2xhc3MgU2VoRXhjZXB0aW9uSW5UZWFyRG93blRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVj
dGVkOgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IFJhaXNlRXhjZXB0aW9uKDQyLCAwLCAw
LCBOVUxMKTsgfQotfTsKLQotVEVTVF9GKFNlaEV4Y2VwdGlvbkluVGVhckRvd25UZXN0LCBUaHJv
d3NFeGNlcHRpb25JblRlYXJEb3duKSB7fQotCi1URVNUKFNlaEV4Y2VwdGlvblRlc3QsIFRocm93
c1NlaEV4Y2VwdGlvbikgewotICBSYWlzZUV4Y2VwdGlvbig0MiwgMCwgMCwgTlVMTCk7Ci19Ci0K
LSNlbmRpZiAgLy8gR1RFU1RfSEFTX1NFSAotCi0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQot
Y2xhc3MgQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVi
bGljOgotICBDeHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICAvLyBXaXRob3V0
IHRoaXMgbWFjcm8gVkMrKyBjb21wbGFpbnMgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBhdCB0aGUg
ZW5kIG9mCi0gICAgLy8gdGhlIGNvbnN0cnVjdG9yLgotICAgIEdURVNUX1NVUFBSRVNTX1VOUkVB
Q0hBQkxFX0NPREVfV0FSTklOR19CRUxPV18oCi0gICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9l
cnJvcigiU3RhbmRhcmQgQysrIGV4Y2VwdGlvbiIpKTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFRl
YXJEb3duVGVzdENhc2UoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhFeGNl
cHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIKLSAgICAgICAgICAg
ImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIH5DeHhFeGNl
cHRpb25JbkNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJDeHhFeGNl
cHRpb25JbkNvbnN0cnVjdG9yVGVzdCBkZXN0cnVjdG9yICIKLSAgICAgICAgICAgICAgICAgIDw8
ICJjYWxsZWQgdW5leHBlY3RlZGx5LiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7
Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3Q6OlNl
dFVwKCkgIgotICAgICAgICAgICAgICAgICAgPDwgImNhbGxlZCB1bmV4cGVjdGVkbHkuIjsKLSAg
fQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJD
eHhFeGNlcHRpb25JbkNvbnN0cnVjdG9yVGVzdDo6VGVhckRvd24oKSAiCi0gICAgICAgICAgICAg
ICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOwotICB9Ci19OwotCi1URVNUX0YoQ3h4RXhj
ZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QsIFRocm93c0V4Y2VwdGlvbkluQ29uc3RydWN0b3IpIHsK
LSAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0aW9uSW5Db25zdHJ1Y3RvclRlc3QgdGVzdCBi
b2R5ICIKLSAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVuZXhwZWN0ZWRseS4iOwotfQotCi0v
LyBFeGNlcHRpb25zIGluIGRlc3RydWN0b3JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEMrKzExLgot
I2lmICFkZWZpbmVkKF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fKSAmJiAgX19jcGx1c3BsdXMg
PCAyMDExMDNMICYmIF9NU0NfVkVSIDwgMTkwMAotY2xhc3MgQ3h4RXhjZXB0aW9uSW5EZXN0cnVj
dG9yVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFRlYXJEb3du
VGVzdENhc2UoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhFeGNlcHRpb25J
bkRlc3RydWN0b3JUZXN0OjpUZWFyRG93blRlc3RDYXNlKCkgIgotICAgICAgICAgICAiY2FsbGVk
IGFzIGV4cGVjdGVkLlxuIik7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgfkN4eEV4Y2VwdGlvbklu
RGVzdHJ1Y3RvclRlc3QoKSB7Ci0gICAgR1RFU1RfU1VQUFJFU1NfVU5SRUFDSEFCTEVfQ09ERV9X
QVJOSU5HX0JFTE9XXygKLSAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJTdGFuZGFy
ZCBDKysgZXhjZXB0aW9uIikpOwotICB9Ci19OwotCi1URVNUX0YoQ3h4RXhjZXB0aW9uSW5EZXN0
cnVjdG9yVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5EZXN0cnVjdG9yKSB7fQotI2VuZGlmICAvLyBD
KysxMSBtb2RlCi0KLWNsYXNzIEN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3QgOiBwdWJs
aWMgVGVzdCB7Ci0gcHVibGljOgotICBDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkg
ewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RD
YXNlVGVzdCBjb25zdHJ1Y3RvciAiCi0gICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4i
KTsKLSAgfQotCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgdGhyb3cgc3Rk
OjpydW50aW1lX2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Ci0gIH0KLQotICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6VGVhckRvd25UZXN0Q2FzZSgpICIK
LSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6
Ci0gIH5DeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0KCkgewotICAgIHByaW50ZigiJXMi
LAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCBkZXN0cnVjdG9y
ICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVh
bCB2b2lkIFNldFVwKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3RDYXNlVGVzdDo6U2V0VXAoKSAiCi0gICAgICAgICAgICJjYWxsZWQgYXMg
ZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBw
cmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluU2V0VXBUZXN0Q2FzZVRlc3Q6
OlRlYXJEb3duKCkgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Ci0gIH0K
LX07Ci0KLVRFU1RfRihDeHhFeGNlcHRpb25JblNldFVwVGVzdENhc2VUZXN0LCBUaHJvd3NFeGNl
cHRpb25JblNldFVwVGVzdENhc2UpIHsKLSAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAiQ3h4RXhj
ZXB0aW9uSW5TZXRVcFRlc3RDYXNlVGVzdCB0ZXN0IGJvZHkgIgotICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOwotfQotCi1jbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdENh
c2VUZXN0IDogcHVibGljIFRlc3QgewotIHB1YmxpYzoKLSAgc3RhdGljIHZvaWQgVGVhckRvd25U
ZXN0Q2FzZSgpIHsKLSAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBl
eGNlcHRpb24iKTsKLSAgfQotfTsKLQotVEVTVF9GKEN4eEV4Y2VwdGlvbkluVGVhckRvd25UZXN0
Q2FzZVRlc3QsIFRocm93c0V4Y2VwdGlvbkluVGVhckRvd25UZXN0Q2FzZSkge30KLQotY2xhc3Mg
Q3h4RXhjZXB0aW9uSW5TZXRVcFRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBzdGF0
aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAg
ICAiQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Q6OlRlYXJEb3duVGVzdENhc2UoKSAiCi0gICAgICAg
ICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gcHJvdGVjdGVkOgotICB+Q3h4
RXhjZXB0aW9uSW5TZXRVcFRlc3QoKSB7Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJD
eHhFeGNlcHRpb25JblNldFVwVGVzdCBkZXN0cnVjdG9yICIKLSAgICAgICAgICAgImNhbGxlZCBh
cyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB0aHJvdyBz
dGQ6OnJ1bnRpbWVfZXJyb3IoIlN0YW5kYXJkIEMrKyBleGNlcHRpb24iKTsgfQotCi0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4eEV4
Y2VwdGlvbkluU2V0VXBUZXN0OjpUZWFyRG93bigpICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBl
eHBlY3RlZC5cbiIpOwotICB9Ci19OwotCi1URVNUX0YoQ3h4RXhjZXB0aW9uSW5TZXRVcFRlc3Qs
IFRocm93c0V4Y2VwdGlvbkluU2V0VXApIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiQ3h4RXhjZXB0
aW9uSW5TZXRVcFRlc3QgdGVzdCBib2R5ICIKLSAgICAgICAgICAgICAgICA8PCAiY2FsbGVkIHVu
ZXhwZWN0ZWRseS4iOwotfQotCi1jbGFzcyBDeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCA6IHB1
YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7
Ci0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlYXJEb3duVGVz
dDo6VGVhckRvd25UZXN0Q2FzZSgpICIKLSAgICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5c
biIpOwotICB9Ci0KLSBwcm90ZWN0ZWQ6Ci0gIH5DeHhFeGNlcHRpb25JblRlYXJEb3duVGVzdCgp
IHsKLSAgICBwcmludGYoIiVzIiwKLSAgICAgICAgICAgIkN4eEV4Y2VwdGlvbkluVGVhckRvd25U
ZXN0IGRlc3RydWN0b3IgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVjdGVkLlxuIik7Ci0g
IH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgdGhyb3cgc3RkOjpydW50aW1l
X2Vycm9yKCJTdGFuZGFyZCBDKysgZXhjZXB0aW9uIik7Ci0gIH0KLX07Ci0KLVRFU1RfRihDeHhF
eGNlcHRpb25JblRlYXJEb3duVGVzdCwgVGhyb3dzRXhjZXB0aW9uSW5UZWFyRG93bikge30KLQot
Y2xhc3MgQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGlj
OgotICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCkgewotICAgIHByaW50ZigiJXMiLAot
ICAgICAgICAgICAiQ3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duVGVzdENhc2Uo
KSAiCi0gICAgICAgICAgICJjYWxsZWQgYXMgZXhwZWN0ZWQuXG4iKTsKLSAgfQotCi0gcHJvdGVj
dGVkOgotICB+Q3h4RXhjZXB0aW9uSW5UZXN0Qm9keVRlc3QoKSB7Ci0gICAgcHJpbnRmKCIlcyIs
Ci0gICAgICAgICAgICJDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCBkZXN0cnVjdG9yICIKLSAg
ICAgICAgICAgImNhbGxlZCBhcyBleHBlY3RlZC5cbiIpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkgewotICAgIHByaW50ZigiJXMiLAotICAgICAgICAgICAiQ3h4RXhjZXB0aW9u
SW5UZXN0Qm9keVRlc3Q6OlRlYXJEb3duKCkgIgotICAgICAgICAgICAiY2FsbGVkIGFzIGV4cGVj
dGVkLlxuIik7Ci0gIH0KLX07Ci0KLVRFU1RfRihDeHhFeGNlcHRpb25JblRlc3RCb2R5VGVzdCwg
VGhyb3dzU3RkQ3h4RXhjZXB0aW9uKSB7Ci0gIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiU3Rh
bmRhcmQgQysrIGV4Y2VwdGlvbiIpOwotfQotCi1URVNUKEN4eEV4Y2VwdGlvblRlc3QsIFRocm93
c05vblN0ZEN4eEV4Y2VwdGlvbikgewotICB0aHJvdyAiQy1zdHJpbmciOwotfQotCi0vLyBUaGlz
IHRlcm1pbmF0ZSBoYW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVy
IHRoYW4gYWJvcnQoKS4KLS8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dz
IHN5c3RlbXMgYW5kIGNvcmUgZHVtcHMgb24gVW5peC1saWtlCi0vLyBvbmVzLgotdm9pZCBUZXJt
aW5hdGVIYW5kbGVyKCkgewotICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMr
KyBleGNlcHRpb24gdGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7Ci0gIGZmbHVzaChOVUxMKTsK
LSAgZXhpdCgzKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
ICBzdGQ6OnNldF90ZXJtaW5hdGUoJlRlcm1pbmF0ZUhhbmRsZXIpOwotI2VuZGlmCi0gIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIFJVTl9BTExfVEVTVFMo
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfY29sb3JfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggZDAyYTUzZWQ4NTdjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3Qv
dGVzdC9ndGVzdF9jb2xvcl90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlZlcmlmaWVz
IHRoYXQgR29vZ2xlIFRlc3QgY29ycmVjdGx5IGRldGVybWluZXMgd2hldGhlciB0byB1c2UgY29s
b3JzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwot
Ci1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNfV0lORE9XUyA9IG9z
Lm5hbWUgPSAnbnQnCi0KLUNPTE9SX0VOVl9WQVIgPSAnR1RFU1RfQ09MT1InCi1DT0xPUl9GTEFH
ID0gJ2d0ZXN0X2NvbG9yJwotQ09NTUFORCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1
dGFibGVQYXRoKCdndGVzdF9jb2xvcl90ZXN0XycpCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFy
LCB2YWx1ZSk6Ci0gICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMg
aXQgd2hlbiAndmFsdWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0g
ICAgb3MuZW52aXJvbltlbnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBvcy5lbnZp
cm9uOgotICAgIGRlbCBvcy5lbnZpcm9uW2Vudl92YXJdCi0KLQotZGVmIFVzZXNDb2xvcih0ZXJt
LCBjb2xvcl9lbnZfdmFyLCBjb2xvcl9mbGFnKToKLSAgIiIiUnVucyBndGVzdF9jb2xvcl90ZXN0
XyBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlLiIiIgotCi0gIFNldEVudlZhcignVEVSTScsIHRl
cm0pCi0gIFNldEVudlZhcihDT0xPUl9FTlZfVkFSLCBjb2xvcl9lbnZfdmFyKQotCi0gIGlmIGNv
bG9yX2ZsYWcgaXMgTm9uZToKLSAgICBhcmdzID0gW10KLSAgZWxzZToKLSAgICBhcmdzID0gWyct
LSVzPSVzJyAlIChDT0xPUl9GTEFHLCBjb2xvcl9mbGFnKV0KLSAgcCA9IGd0ZXN0X3Rlc3RfdXRp
bHMuU3VicHJvY2VzcyhbQ09NTUFORF0gKyBhcmdzKQotICByZXR1cm4gbm90IHAuZXhpdGVkIG9y
IHAuZXhpdF9jb2RlCi0KLQotY2xhc3MgR1Rlc3RDb2xvclRlc3QoZ3Rlc3RfdGVzdF91dGlscy5U
ZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0Tm9FbnZWYXJOb0ZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMg
dGhlIGNhc2Ugd2hlbiB0aGVyZSdzIG5laXRoZXIgR1RFU1RfQ09MT1Igbm9yIC0tZ3Rlc3RfY29s
b3IuIiIiCi0KLSAgICBpZiBub3QgSVNfV0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
VXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90IFVz
ZXNDb2xvcignZW1hY3MnLCBOb25lLCBOb25lKSkKLSAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNl
c0NvbG9yKCd4dGVybS1tb25vJywgTm9uZSwgTm9uZSkpCi0gICAgICBzZWxmLmFzc2VydF8obm90
IFVzZXNDb2xvcigndW5rbm93bicsIE5vbmUsIE5vbmUpKQotICAgICAgc2VsZi5hc3NlcnRfKG5v
dCBVc2VzQ29sb3IoTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xv
cignbGludXgnLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdjeWd3
aW4nLCBOb25lLCBOb25lKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5v
bmUsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgTm9u
ZSwgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tMjU2Y29sb3InLCBO
b25lLCBOb25lKSkKLQotICBkZWYgdGVzdEZsYWdPbmx5KHNlbGYpOgotICAgICIiIlRlc3RzIHRo
ZSBjYXNlIHdoZW4gdGhlcmUncyAtLWd0ZXN0X2NvbG9yIGJ1dCBub3QgR1RFU1RfQ09MT1IuIiIi
Ci0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdubycpKQot
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCd4dGVybS1jb2xvcicsIE5vbmUsICdubycp
KQotICAgIGlmIG5vdCBJU19XSU5ET1dTOgotICAgICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29s
b3IoJ2VtYWNzJywgTm9uZSwgJ2F1dG8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4
dGVybScsIE5vbmUsICdhdXRvJykpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYics
IE5vbmUsICd5ZXMnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCd4dGVybScsIE5vbmUs
ICd5ZXMnKSkKLQotICBkZWYgdGVzdEVudlZhck9ubHkoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhl
IGNhc2Ugd2hlbiB0aGVyZSdzIEdURVNUX0NPTE9SIGJ1dCBub3QgLS1ndGVzdF9jb2xvci4iIiIK
LQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0NvbG9yKCdkdW1iJywgJ25vJywgTm9uZSkpCi0g
ICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywgJ25vJywgTm9uZSkp
Ci0gICAgaWYgbm90IElTX1dJTkRPV1M6Ci0gICAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xv
cignZHVtYicsICdhdXRvJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRl
cm0tY29sb3InLCAnYXV0bycsIE5vbmUpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ2R1
bWInLCAneWVzJywgTm9uZSkpCi0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcigneHRlcm0tY29s
b3InLCAneWVzJywgTm9uZSkpCi0KLSAgZGVmIHRlc3RFbnZWYXJBbmRGbGFnKHNlbGYpOgotICAg
ICIiIlRlc3RzIHRoZSBjYXNlIHdoZW4gdGhlcmUgYXJlIGJvdGggR1RFU1RfQ09MT1IgYW5kIC0t
Z3Rlc3RfY29sb3IuIiIiCi0KLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRlcm0t
Y29sb3InLCAnbm8nLCAnbm8nKSkKLSAgICBzZWxmLmFzc2VydF8oVXNlc0NvbG9yKCdkdW1iJywg
J25vJywgJ3llcycpKQotICAgIHNlbGYuYXNzZXJ0XyhVc2VzQ29sb3IoJ3h0ZXJtLWNvbG9yJywg
J25vJywgJ2F1dG8nKSkKLQotICBkZWYgdGVzdEFsaWFzZXNPZlllc0FuZE5vKHNlbGYpOgotICAg
ICIiIlRlc3RzIHVzaW5nIGFsaWFzZXMgaW4gc3BlY2lmeWluZyAtLWd0ZXN0X2NvbG9yLiIiIgot
Ci0gICAgc2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICd0cnVlJykpCi0gICAg
c2VsZi5hc3NlcnRfKFVzZXNDb2xvcignZHVtYicsIE5vbmUsICdZRVMnKSkKLSAgICBzZWxmLmFz
c2VydF8oVXNlc0NvbG9yKCdkdW1iJywgTm9uZSwgJ1QnKSkKLSAgICBzZWxmLmFzc2VydF8oVXNl
c0NvbG9yKCdkdW1iJywgTm9uZSwgJzEnKSkKLQotICAgIHNlbGYuYXNzZXJ0Xyhub3QgVXNlc0Nv
bG9yKCd4dGVybScsIE5vbmUsICdmJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J3h0ZXJtJywgTm9uZSwgJ2ZhbHNlJykpCi0gICAgc2VsZi5hc3NlcnRfKG5vdCBVc2VzQ29sb3Io
J3h0ZXJtJywgTm9uZSwgJzAnKSkKLSAgICBzZWxmLmFzc2VydF8obm90IFVzZXNDb2xvcigneHRl
cm0nLCBOb25lLCAndW5rbm93bicpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X2NvbG9yX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYxZWJiODliODRlLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9jb2xvcl90ZXN0Xy5jYworKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0K
LS8vIEEgaGVscGVyIHByb2dyYW0gZm9yIHRlc3RpbmcgaG93IEdvb2dsZSBUZXN0IGRldGVybWlu
ZXMgd2hldGhlciB0byB1c2UKLS8vIGNvbG9ycyBpbiB0aGUgb3V0cHV0LiAgSXQgcHJpbnRzICJZ
RVMiIGFuZCByZXR1cm5zIDEgaWYgR29vZ2xlIFRlc3QKLS8vIGRlY2lkZXMgdG8gdXNlIGNvbG9y
cywgYW5kIHByaW50cyAiTk8iIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgotCi0jaW5jbHVkZSA8
c3RkaW8uaD4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLS8vIEluZGljYXRlcyB0aGF0
IHRoaXMgdHJhbnNsYXRpb24gdW5pdCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxl
bWVudGF0aW9uLiAgSXQgbXVzdCBjb21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwot
Ly8gaW5jbHVkZWQsIG9yIHRoZXJlIHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJp
Y2sgaXMgdG8KLS8vIHByZXZlbnQgYSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBn
dGVzdC1pbnRlcm5hbC1pbmwuaCBpbgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExF
TUVOVEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVm
IEdURVNUX0lNUExFTUVOVEFUSU9OXwotCi11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxk
VXNlQ29sb3I7Ci0KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhl
IFVuaXRUZXN0IHNpbmdsZXRvbiBpcwotLy8gY3JlYXRlZCBiZWZvcmUgbWFpbigpIGlzIGVudGVy
ZWQsIGFuZCB0aHVzIHRoYXQgU2hvdWxkVXNlQ29sb3IoKQotLy8gd29ya3MgdGhlIHNhbWUgd2F5
IGFzIGluIGEgcmVhbCBHb29nbGUtVGVzdC1iYXNlZCB0ZXN0LiAgV2UgZG9uJ3QgYWN0dWFsCi0v
LyBydW4gdGhlIFRFU1QgaXRzZWxmLgotVEVTVChHVGVzdENvbG9yVGVzdCwgRHVtbXkpIHsKLX0K
LQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0gIHRlc3Rpbmc6OkluaXRHb29n
bGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBpZiAoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpIHsKLSAg
ICAvLyBHb29nbGUgVGVzdCBkZWNpZGVzIHRvIHVzZSBjb2xvcnMgaW4gdGhlIG91dHB1dCAoYXNz
dW1pbmcgaXQKLSAgICAvLyBnb2VzIHRvIGEgVFRZKS4KLSAgICBwcmludGYoIllFU1xuIik7Ci0g
ICAgcmV0dXJuIDE7Ci0gIH0gZWxzZSB7Ci0gICAgLy8gR29vZ2xlIFRlc3QgZGVjaWRlcyBub3Qg
dG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgotICAgIHByaW50ZigiTk9cbiIpOwotICAgIHJl
dHVybiAwOwotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92
YXJfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZW52X3Zhcl90ZXN0LnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MjQwNzVjZmEzNzQuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDExNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBwYXJzZXMgZW52aXJv
bm1lbnQgdmFyaWFibGVzLiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLQotSVNf
V0lORE9XUyA9IG9zLm5hbWUgPT0gJ250JwotSVNfTElOVVggPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kIG9zLnVuYW1lKClbMF0gPT0gJ0xpbnV4JwotCi1DT01NQU5EID0gZ3Rlc3RfdGVzdF91dGls
cy5HZXRUZXN0RXhlY3V0YWJsZVBhdGgoJ2d0ZXN0X2Vudl92YXJfdGVzdF8nKQotCi1lbnZpcm9u
ID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgQXNzZXJ0RXEoZXhwZWN0ZWQsIGFjdHVhbCk6
Ci0gIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKLSAgICBwcmludCgnRXhwZWN0ZWQ6ICVzJyAlIChl
eHBlY3RlZCwpKQotICAgIHByaW50KCcgIEFjdHVhbDogJXMnICUgKGFjdHVhbCwpKQotICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVmIFNldEVudlZhcihlbnZfdmFyLCB2YWx1ZSk6Ci0g
ICIiIlNldHMgdGhlIGVudiB2YXJpYWJsZSB0byAndmFsdWUnOyB1bnNldHMgaXQgd2hlbiAndmFs
dWUnIGlzIE5vbmUuIiIiCi0KLSAgaWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgZW52aXJvbltl
bnZfdmFyXSA9IHZhbHVlCi0gIGVsaWYgZW52X3ZhciBpbiBlbnZpcm9uOgotICAgIGRlbCBlbnZp
cm9uW2Vudl92YXJdCi0KLQotZGVmIEdldEZsYWcoZmxhZyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfZW52
X3Zhcl90ZXN0XyBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGFyZ3MgPSBbQ09NTUFO
RF0KLSAgaWYgZmxhZyBpcyBub3QgTm9uZToKLSAgICBhcmdzICs9IFtmbGFnXQotICByZXR1cm4g
Z3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGFyZ3MsIGVudj1lbnZpcm9uKS5vdXRwdXQKLQot
Ci1kZWYgVGVzdEZsYWcoZmxhZywgdGVzdF92YWwsIGRlZmF1bHRfdmFsKToKLSAgIiIiVmVyaWZp
ZXMgdGhhdCB0aGUgZ2l2ZW4gZmxhZyBpcyBhZmZlY3RlZCBieSB0aGUgY29ycmVzcG9uZGluZyBl
bnYgdmFyLiIiIgotCi0gIGVudl92YXIgPSAnR1RFU1RfJyArIGZsYWcudXBwZXIoKQotICBTZXRF
bnZWYXIoZW52X3ZhciwgdGVzdF92YWwpCi0gIEFzc2VydEVxKHRlc3RfdmFsLCBHZXRGbGFnKGZs
YWcpKQotICBTZXRFbnZWYXIoZW52X3ZhciwgTm9uZSkKLSAgQXNzZXJ0RXEoZGVmYXVsdF92YWws
IEdldEZsYWcoZmxhZykpCi0KLQotY2xhc3MgR1Rlc3RFbnZWYXJUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgotICBkZWYgdGVzdEVudlZhckFmZmVjdHNGbGFnKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoYXQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2hvdWxkIGFmZmVjdCB0aGUgY29ycmVz
cG9uZGluZyBmbGFnLiIiIgotCi0gICAgVGVzdEZsYWcoJ2JyZWFrX29uX2ZhaWx1cmUnLCAnMScs
ICcwJykKLSAgICBUZXN0RmxhZygnY29sb3InLCAneWVzJywgJ2F1dG8nKQotICAgIFRlc3RGbGFn
KCdmaWx0ZXInLCAnRm9vVGVzdC5CYXInLCAnKicpCi0gICAgU2V0RW52VmFyKCdYTUxfT1VUUFVU
X0ZJTEUnLCBOb25lKSAjIEZvciAnb3V0cHV0JyB0ZXN0Ci0gICAgVGVzdEZsYWcoJ291dHB1dCcs
ICd4bWw6dG1wL2Zvby54bWwnLCAnJykKLSAgICBUZXN0RmxhZygncHJpbnRfdGltZScsICcwJywg
JzEnKQotICAgIFRlc3RGbGFnKCdyZXBlYXQnLCAnOTk5JywgJzEnKQotICAgIFRlc3RGbGFnKCd0
aHJvd19vbl9mYWlsdXJlJywgJzEnLCAnMCcpCi0gICAgVGVzdEZsYWcoJ2RlYXRoX3Rlc3Rfc3R5
bGUnLCAndGhyZWFkc2FmZScsICdmYXN0JykKLSAgICBUZXN0RmxhZygnY2F0Y2hfZXhjZXB0aW9u
cycsICcwJywgJzEnKQotCi0gICAgaWYgSVNfTElOVVg6Ci0gICAgICBUZXN0RmxhZygnZGVhdGhf
dGVzdF91c2VfZm9yaycsICcxJywgJzAnKQotICAgICAgVGVzdEZsYWcoJ3N0YWNrX3RyYWNlX2Rl
cHRoJywgJzAnLCAnMTAwJykKLQotICBkZWYgdGVzdFhtbE91dHB1dEZpbGUoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9GSUxFIGFmZmVjdHMgdGhlIG91dHB1dCBmbGFnLiIi
IgotCi0gICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQnLCBOb25lKQotICAgIFNldEVudlZhcign
WE1MX09VVFBVVF9GSUxFJywgJ3RtcC9iYXIueG1sJykKLSAgICBBc3NlcnRFcSgneG1sOnRtcC9i
YXIueG1sJywgR2V0RmxhZygnb3V0cHV0JykpCi0KLSAgZGVmIHRlc3RYbWxPdXRwdXRGaWxlT3Zl
cnJpZGUoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCAkWE1MX09VVFBVVF9GSUxFIGlzIG92ZXJy
aWRkZW4gYnkgJEdURVNUX09VVFBVVCIiIgotCi0gICAgU2V0RW52VmFyKCdHVEVTVF9PVVRQVVQn
LCAneG1sOnRtcC9mb28ueG1sJykKLSAgICBTZXRFbnZWYXIoJ1hNTF9PVVRQVVRfRklMRScsICd0
bXAvYmFyLnhtbCcpCi0gICAgQXNzZXJ0RXEoJ3htbDp0bXAvZm9vLnhtbCcsIEdldEZsYWcoJ291
dHB1dCcpKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICBndGVzdF90ZXN0X3V0aWxz
Lk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3Rf
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZfdmFyX3Rlc3RfLmNjCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MzlhZmM5NjgzN2UuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0X2Vudl92YXJfdGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
MjYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ly8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotLy8gQSBoZWxw
ZXIgcHJvZ3JhbSBmb3IgdGVzdGluZyB0aGF0IEdvb2dsZSBUZXN0IHBhcnNlcyB0aGUgZW52aXJv
bm1lbnQKLS8vIHZhcmlhYmxlcyBjb3JyZWN0bHkuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05f
IDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1Q
TEVNRU5UQVRJT05fCi0KLXVzaW5nIDo6c3RkOjpjb3V0OwotCi1uYW1lc3BhY2UgdGVzdGluZyB7
Ci0KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJlYWxp
c3RpYyBieSBlbnN1cmluZwotLy8gdGhhdCB0aGUgVW5pdFRlc3Qgc2luZ2xldG9uIGlzIGNyZWF0
ZWQgYmVmb3JlIG1haW4oKSBpcyBlbnRlcmVkLgotLy8gV2UgZG9uJ3QgYWN0dWFsIHJ1biB0aGUg
VEVTVCBpdHNlbGYuCi1URVNUKEdUZXN0RW52VmFyVGVzdCwgRHVtbXkpIHsKLX0KLQotdm9pZCBQ
cmludEZsYWcoY29uc3QgY2hhciogZmxhZykgewotICBpZiAoc3RyY21wKGZsYWcsICJicmVha19v
bl9mYWlsdXJlIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhicmVha19vbl9mYWls
dXJlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJjYXRjaF9leGNl
cHRpb25zIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhjYXRjaF9leGNlcHRpb25z
KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJjb2xvciIpID09IDAp
IHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcoY29sb3IpOwotICAgIHJldHVybjsKLSAgfQotCi0g
IGlmIChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3Rfc3R5bGUiKSA9PSAwKSB7Ci0gICAgY291dCA8
PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rfc3R5bGUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlm
IChzdHJjbXAoZmxhZywgImRlYXRoX3Rlc3RfdXNlX2ZvcmsiKSA9PSAwKSB7Ci0gICAgY291dCA8
PCBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspOwotICAgIHJldHVybjsKLSAgfQotCi0g
IGlmIChzdHJjbXAoZmxhZywgImZpbHRlciIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZM
QUcoZmlsdGVyKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoc3RyY21wKGZsYWcsICJvdXRw
dXQiKSA9PSAwKSB7Ci0gICAgY291dCA8PCBHVEVTVF9GTEFHKG91dHB1dCk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAicHJpbnRfdGltZSIpID09IDApIHsKLSAgICBj
b3V0IDw8IEdURVNUX0ZMQUcocHJpbnRfdGltZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYg
KHN0cmNtcChmbGFnLCAicmVwZWF0IikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhy
ZXBlYXQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChzdHJjbXAoZmxhZywgInN0YWNrX3Ry
YWNlX2RlcHRoIikgPT0gMCkgewotICAgIGNvdXQgPDwgR1RFU1RfRkxBRyhzdGFja190cmFjZV9k
ZXB0aCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKHN0cmNtcChmbGFnLCAidGhyb3dfb25f
ZmFpbHVyZSIpID09IDApIHsKLSAgICBjb3V0IDw8IEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVy
ZSk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgY291dCA8PCAiSW52YWxpZCBmbGFnIG5hbWUgIiA8
PCBmbGFnCi0gICAgICAgPDwgIi4gIFZhbGlkIG5hbWVzIGFyZSBicmVha19vbl9mYWlsdXJlLCBj
b2xvciwgZmlsdGVyLCBldGMuXG4iOwotICBleGl0KDEpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGlmIChhcmdjICE9IDIpIHsKLSAgICBj
b3V0IDw8ICJVc2FnZTogZ3Rlc3RfZW52X3Zhcl90ZXN0XyBOQU1FX09GX0ZMQUdcbiI7Ci0gICAg
cmV0dXJuIDE7Ci0gIH0KLQotICB0ZXN0aW5nOjpQcmludEZsYWcoYXJndlsxXSk7Ci0gIHJldHVy
biAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90
ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9lbnZpcm9ubWVudF90ZXN0LmNjCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2ZmMTllNzBlZGMuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2Vudmlyb25tZW50X3Rlc3QuY2MKKysrIC9kZXYvbnVs
bApAQCAtMSwxOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuCi0vLyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
Ly8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
Ly8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLS8v
Ci0vLyBUZXN0cyB1c2luZyBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudHMuCi0KLSNpbmNsdWRlIDxz
dGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0K
LSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEgIC8vIFJlcXVpcmVkIGZvciB0aGUgbmV4
dCAjaW5jbHVkZS4KLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmgiCi0jdW5kZWYg
R1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLW5hbWVzcGFjZSB0ZXN0aW5nIHsKLUdURVNUX0RFQ0xB
UkVfc3RyaW5nXyhmaWx0ZXIpOwotfQotCi1uYW1lc3BhY2UgewotCi1lbnVtIEZhaWx1cmVUeXBl
IHsKLSAgTk9fRkFJTFVSRSwgTk9OX0ZBVEFMX0ZBSUxVUkUsIEZBVEFMX0ZBSUxVUkUKLX07Ci0K
LS8vIEZvciB0ZXN0aW5nIHVzaW5nIGdsb2JhbCB0ZXN0IGVudmlyb25tZW50cy4KLWNsYXNzIE15
RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQgewotIHB1YmxpYzoKLSAg
TXlFbnZpcm9ubWVudCgpIHsgUmVzZXQoKTsgfQotCi0gIC8vIERlcGVuZGluZyBvbiB0aGUgdmFs
dWUgb2YgZmFpbHVyZV9pbl9zZXRfdXBfLCBTZXRVcCgpIHdpbGwKLSAgLy8gZ2VuZXJhdGUgYSBu
b24tZmF0YWwgZmFpbHVyZSwgZ2VuZXJhdGUgYSBmYXRhbCBmYWlsdXJlLCBvcgotICAvLyBzdWNj
ZWVkLgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgc2V0X3VwX3dhc19ydW5fID0gdHJ1
ZTsKLQotICAgIHN3aXRjaCAoZmFpbHVyZV9pbl9zZXRfdXBfKSB7Ci0gICAgICBjYXNlIE5PTl9G
QVRBTF9GQUlMVVJFOgotICAgICAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZSBpbiBnbG9iYWwgc2V0LXVwLiI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBGQVRBTF9GQUlMVVJFOgotICAgICAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1
cmUgaW4gZ2xvYmFsIHNldC11cC4iOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotCi0gIC8vIEdlbmVyYXRlcyBhIG5vbi1mYXRhbCBm
YWlsdXJlLgotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgdGVhcl9kb3duX3dhc19y
dW5fID0gdHJ1ZTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFp
bHVyZSBpbiBnbG9iYWwgdGVhci1kb3duLiI7Ci0gIH0KLQotICAvLyBSZXNldHMgdGhlIHN0YXRl
IG9mIHRoZSBlbnZpcm9ubWVudCBzLnQuIGl0IGNhbiBiZSByZXVzZWQuCi0gIHZvaWQgUmVzZXQo
KSB7Ci0gICAgZmFpbHVyZV9pbl9zZXRfdXBfID0gTk9fRkFJTFVSRTsKLSAgICBzZXRfdXBfd2Fz
X3J1bl8gPSBmYWxzZTsKLSAgICB0ZWFyX2Rvd25fd2FzX3J1bl8gPSBmYWxzZTsKLSAgfQotCi0g
IC8vIFdlIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBzZXQgdGhlIHR5cGUgb2YgZmFpbHVyZSBTZXRV
cCgpIHNob3VsZAotICAvLyBnZW5lcmF0ZS4KLSAgdm9pZCBzZXRfZmFpbHVyZV9pbl9zZXRfdXAo
RmFpbHVyZVR5cGUgdHlwZSkgewotICAgIGZhaWx1cmVfaW5fc2V0X3VwXyA9IHR5cGU7Ci0gIH0K
LQotICAvLyBXYXMgU2V0VXAoKSBydW4/Ci0gIGJvb2wgc2V0X3VwX3dhc19ydW4oKSBjb25zdCB7
IHJldHVybiBzZXRfdXBfd2FzX3J1bl87IH0KLQotICAvLyBXYXMgVGVhckRvd24oKSBydW4/Ci0g
IGJvb2wgdGVhcl9kb3duX3dhc19ydW4oKSBjb25zdCB7IHJldHVybiB0ZWFyX2Rvd25fd2FzX3J1
bl87IH0KLQotIHByaXZhdGU6Ci0gIEZhaWx1cmVUeXBlIGZhaWx1cmVfaW5fc2V0X3VwXzsKLSAg
Ym9vbCBzZXRfdXBfd2FzX3J1bl87Ci0gIGJvb2wgdGVhcl9kb3duX3dhc19ydW5fOwotfTsKLQot
Ly8gV2FzIHRoZSBURVNUIHJ1bj8KLWJvb2wgdGVzdF93YXNfcnVuOwotCi0vLyBUaGUgc29sZSBw
dXJwb3NlIG9mIHRoaXMgVEVTVCBpcyB0byBlbmFibGUgdXMgdG8gY2hlY2sgd2hldGhlciBpdAot
Ly8gd2FzIHJ1bi4KLVRFU1QoRm9vVGVzdCwgQmFyKSB7Ci0gIHRlc3Rfd2FzX3J1biA9IHRydWU7
Ci19Ci0KLS8vIFByaW50cyB0aGUgbWVzc2FnZSBhbmQgYWJvcnRzIHRoZSBwcm9ncmFtIGlmIGNv
bmRpdGlvbiBpcyBmYWxzZS4KLXZvaWQgQ2hlY2soYm9vbCBjb25kaXRpb24sIGNvbnN0IGNoYXIq
IG1zZykgewotICBpZiAoIWNvbmRpdGlvbikgewotICAgIHByaW50ZigiRkFJTEVEOiAlc1xuIiwg
bXNnKTsKLSAgICB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkFib3J0KCk7Ci0gIH0KLX0KLQot
Ly8gUnVucyB0aGUgdGVzdHMuICBSZXR1cm4gdHJ1ZSBpZmYgc3VjY2Vzc2Z1bC4KLS8vCi0vLyBU
aGUgJ2ZhaWx1cmUnIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZmFpbHVyZSB0aGF0
IHNob3VsZAotLy8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBnbG9iYWwgc2V0LXVwLgotaW50IFJ1bkFs
bFRlc3RzKE15RW52aXJvbm1lbnQqIGVudiwgRmFpbHVyZVR5cGUgZmFpbHVyZSkgewotICBlbnYt
PlJlc2V0KCk7Ci0gIGVudi0+c2V0X2ZhaWx1cmVfaW5fc2V0X3VwKGZhaWx1cmUpOwotICB0ZXN0
X3dhc19ydW4gPSBmYWxzZTsKLSAgdGVzdGluZzo6aW50ZXJuYWw6OkdldFVuaXRUZXN0SW1wbCgp
LT5DbGVhckFkSG9jVGVzdFJlc3VsdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotfQot
Ci19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0g
IHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBSZWdpc3RlcnMg
YSBnbG9iYWwgdGVzdCBlbnZpcm9ubWVudCwgYW5kIHZlcmlmaWVzIHRoYXQgdGhlCi0gIC8vIHJl
Z2lzdHJhdGlvbiBmdW5jdGlvbiByZXR1cm5zIGl0cyBhcmd1bWVudC4KLSAgTXlFbnZpcm9ubWVu
dCogY29uc3QgZW52ID0gbmV3IE15RW52aXJvbm1lbnQ7Ci0gIENoZWNrKHRlc3Rpbmc6OkFkZEds
b2JhbFRlc3RFbnZpcm9ubWVudChlbnYpID09IGVudiwKLSAgICAgICAgIkFkZEdsb2JhbFRlc3RF
bnZpcm9ubWVudCgpIHNob3VsZCByZXR1cm4gaXRzIGFyZ3VtZW50LiIpOwotCi0gIC8vIFZlcmlm
aWVzIHRoYXQgUlVOX0FMTF9URVNUUygpIHJ1bnMgdGhlIHRlc3RzIHdoZW4gdGhlIGdsb2JhbAot
ICAvLyBzZXQtdXAgaXMgc3VjY2Vzc2Z1bC4KLSAgQ2hlY2soUnVuQWxsVGVzdHMoZW52LCBOT19G
QUlMVVJFKSAhPSAwLAotICAgICAgICAiUlVOX0FMTF9URVNUUygpIHNob3VsZCByZXR1cm4gbm9u
LXplcm8sIGFzIHRoZSBnbG9iYWwgdGVhci1kb3duICIKLSAgICAgICAgInNob3VsZCBnZW5lcmF0
ZSBhIGZhaWx1cmUuIik7Ci0gIENoZWNrKHRlc3Rfd2FzX3J1biwKLSAgICAgICAgIlRoZSB0ZXN0
cyBzaG91bGQgcnVuLCBhcyB0aGUgZ2xvYmFsIHNldC11cCBzaG91bGQgZ2VuZXJhdGUgbm8gIgot
ICAgICAgICAiZmFpbHVyZSIpOwotICBDaGVjayhlbnYtPnRlYXJfZG93bl93YXNfcnVuKCksCi0g
ICAgICAgICJUaGUgZ2xvYmFsIHRlYXItZG93biBzaG91bGQgcnVuLCBhcyB0aGUgZ2xvYmFsIHNl
dC11cCB3YXMgcnVuLiIpOwotCi0gIC8vIFZlcmlmaWVzIHRoYXQgUlVOX0FMTF9URVNUUygpIHJ1
bnMgdGhlIHRlc3RzIHdoZW4gdGhlIGdsb2JhbAotICAvLyBzZXQtdXAgZ2VuZXJhdGVzIG5vIGZh
dGFsIGZhaWx1cmUuCi0gIENoZWNrKFJ1bkFsbFRlc3RzKGVudiwgTk9OX0ZBVEFMX0ZBSUxVUkUp
ICE9IDAsCi0gICAgICAgICJSVU5fQUxMX1RFU1RTKCkgc2hvdWxkIHJldHVybiBub24temVybywg
YXMgYm90aCB0aGUgZ2xvYmFsIHNldC11cCAiCi0gICAgICAgICJhbmQgdGhlIGdsb2JhbCB0ZWFy
LWRvd24gc2hvdWxkIGdlbmVyYXRlIGEgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci0gIENoZWNrKHRl
c3Rfd2FzX3J1biwKLSAgICAgICAgIlRoZSB0ZXN0cyBzaG91bGQgcnVuLCBhcyB0aGUgZ2xvYmFs
IHNldC11cCBzaG91bGQgZ2VuZXJhdGUgbm8gIgotICAgICAgICAiZmF0YWwgZmFpbHVyZS4iKTsK
LSAgQ2hlY2soZW52LT50ZWFyX2Rvd25fd2FzX3J1bigpLAotICAgICAgICAiVGhlIGdsb2JhbCB0
ZWFyLWRvd24gc2hvdWxkIHJ1biwgYXMgdGhlIGdsb2JhbCBzZXQtdXAgd2FzIHJ1bi4iKTsKLQot
ICAvLyBWZXJpZmllcyB0aGF0IFJVTl9BTExfVEVTVFMoKSBydW5zIG5vIHRlc3Qgd2hlbiB0aGUg
Z2xvYmFsIHNldC11cAotICAvLyBnZW5lcmF0ZXMgYSBmYXRhbCBmYWlsdXJlLgotICBDaGVjayhS
dW5BbGxUZXN0cyhlbnYsIEZBVEFMX0ZBSUxVUkUpICE9IDAsCi0gICAgICAgICJSVU5fQUxMX1RF
U1RTKCkgc2hvdWxkIHJldHVybiBub24temVybywgYXMgdGhlIGdsb2JhbCBzZXQtdXAgIgotICAg
ICAgICAic2hvdWxkIGdlbmVyYXRlIGEgZmF0YWwgZmFpbHVyZS4iKTsKLSAgQ2hlY2soIXRlc3Rf
d2FzX3J1biwKLSAgICAgICAgIlRoZSB0ZXN0cyBzaG91bGQgbm90IHJ1biwgYXMgdGhlIGdsb2Jh
bCBzZXQtdXAgc2hvdWxkIGdlbmVyYXRlICIKLSAgICAgICAgImEgZmF0YWwgZmFpbHVyZS4iKTsK
LSAgQ2hlY2soZW52LT50ZWFyX2Rvd25fd2FzX3J1bigpLAotICAgICAgICAiVGhlIGdsb2JhbCB0
ZWFyLWRvd24gc2hvdWxkIHJ1biwgYXMgdGhlIGdsb2JhbCBzZXQtdXAgd2FzIHJ1bi4iKTsKLQot
ICAvLyBWZXJpZmllcyB0aGF0IFJVTl9BTExfVEVTVFMoKSBkb2Vzbid0IGRvIGdsb2JhbCBzZXQt
dXAgb3IKLSAgLy8gdGVhci1kb3duIHdoZW4gdGhlcmUgaXMgbm8gdGVzdCB0byBydW4uCi0gIHRl
c3Rpbmc6OkdURVNUX0ZMQUcoZmlsdGVyKSA9ICItKiI7Ci0gIENoZWNrKFJ1bkFsbFRlc3RzKGVu
diwgTk9fRkFJTFVSRSkgPT0gMCwKLSAgICAgICAgIlJVTl9BTExfVEVTVFMoKSBzaG91bGQgcmV0
dXJuIHplcm8sIGFzIHRoZXJlIGlzIG5vIHRlc3QgdG8gcnVuLiIpOwotICBDaGVjayghZW52LT5z
ZXRfdXBfd2FzX3J1bigpLAotICAgICAgICAiVGhlIGdsb2JhbCBzZXQtdXAgc2hvdWxkIG5vdCBy
dW4sIGFzIHRoZXJlIGlzIG5vIHRlc3QgdG8gcnVuLiIpOwotICBDaGVjayghZW52LT50ZWFyX2Rv
d25fd2FzX3J1bigpLAotICAgICAgICAiVGhlIGdsb2JhbCB0ZWFyLWRvd24gc2hvdWxkIG5vdCBy
dW4sICIKLSAgICAgICAgImFzIHRoZSBnbG9iYWwgc2V0LXVwIHdhcyBub3QgcnVuLiIpOwotCi0g
IHByaW50ZigiUEFTU1xuIik7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X2ZpbHRlcl91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWMwYjE1
MWIxMWJkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJf
dW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0
IHRlc3QgZmlsdGVycy4KLQotQSB1c2VyIGNhbiBzcGVjaWZ5IHdoaWNoIHRlc3QocykgaW4gYSBH
b29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEgZWl0aGVyCi10aGUgR1RFU1RfRklMVEVSIGVu
dmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVGhpcyBzY3Jp
cHQgdGVzdHMgc3VjaCBmdW5jdGlvbmFsaXR5IGJ5IGludm9raW5nCi1ndGVzdF9maWx0ZXJfdW5p
dHRlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoIEdvb2dsZSBUZXN0KSB3aXRoIGRpZmZlcmVu
dAotZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3MuCi0KLU5vdGUgdGhhdCB0ZXN0
IHNoYXJkaW5nIG1heSBhbHNvIGluZmx1ZW5jZSB3aGljaCB0ZXN0cyBhcmUgZmlsdGVyZWQuIFRo
ZXJlZm9yZSwKLXdlIHRlc3QgdGhhdCBoZXJlIGFsc28uCi0iIiIKLQotX19hdXRob3JfXyA9ICd3
YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLXRy
eToKLSAgZnJvbSBzZXRzIGltcG9ydCBTZXQgYXMgc2V0ICAjIEZvciBQeXRob24gMi4zIGNvbXBh
dGliaWxpdHkKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgcGFzcwotaW1wb3J0IHN5cwotCi1pbXBv
cnQgZ3Rlc3RfdGVzdF91dGlscwotCi0jIENvbnN0YW50cy4KLQotIyBDaGVja3MgaWYgdGhpcyBw
bGF0Zm9ybSBjYW4gcGFzcyBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gY2hpbGQKLSMg
cHJvY2Vzc2VzLiAgV2Ugc2V0IGFuIGVudiB2YXJpYWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgYW5k
IGludm9rZSBhIHB5dGhvbgotIyBzY3JpcHQgaW4gYSBzdWJwcm9jZXNzIHRvIHByaW50IHdoZXRo
ZXIgdGhlIHZhcmlhYmxlIGlzIFNUSUxMIGluCi0jIG9zLmVudmlyb24uICBXZSB0aGVuIHVzZSAn
ZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4KLSMgZXhjZXB0aW9u
IGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgYW55dGhpbmcgb3RoZXIgdGhhbiAnVHJ1ZScgbm9y
ICdGYWxzZScuCi1vcy5lbnZpcm9uWydFTVBUWV9WQVInXSA9ICcnCi1jaGlsZCA9IGd0ZXN0X3Rl
c3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFibGUsICctYycsICdpbXBvcnQg
b3M7IHByaW50KFwnRU1QVFlfVkFSXCcgaW4gb3MuZW52aXJvbiknXSkKLUNBTl9QQVNTX0VNUFRZ
X0VOViA9IGV2YWwoY2hpbGQub3V0cHV0KQotCi0KLSMgQ2hlY2sgaWYgdGhpcyBwbGF0Zm9ybSBj
YW4gdW5zZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGNoaWxkIHByb2Nlc3Nlcy4KLSMgV2Ug
c2V0IGFuIGVudiB2YXJpYWJsZSB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHVuc2V0IGl0LCBhbmQg
aW52b2tlCi0jIGEgcHl0aG9uIHNjcmlwdCBpbiBhIHN1YnByb2Nlc3MgdG8gcHJpbnQgd2hldGhl
ciB0aGUgdmFyaWFibGUKLSMgaXMgTk8gTE9OR0VSIGluIG9zLmVudmlyb24uCi0jIFdlIHVzZSAn
ZXZhbCcgdG8gcGFyc2UgdGhlIGNoaWxkJ3Mgb3V0cHV0IHNvIHRoYXQgYW4gZXhjZXB0aW9uCi0j
IGlzIHRocm93biBpZiB0aGUgaW5wdXQgaXMgbmVpdGhlciAnVHJ1ZScgbm9yICdGYWxzZScuCi1v
cy5lbnZpcm9uWydVTlNFVF9WQVInXSA9ICdYJwotZGVsIG9zLmVudmlyb25bJ1VOU0VUX1ZBUidd
Ci1jaGlsZCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbc3lzLmV4ZWN1dGFi
bGUsICctYycsICdpbXBvcnQgb3M7IHByaW50KFwnVU5TRVRfVkFSXCcgbm90IGluIG9zLmVudmly
b24pJ10pCi1DQU5fVU5TRVRfRU5WID0gZXZhbChjaGlsZC5vdXRwdXQpCi0KLQotIyBDaGVja3Mg
aWYgd2Ugc2hvdWxkIHRlc3Qgd2l0aCBhbiBlbXB0eSBmaWx0ZXIuIFRoaXMgZG9lc24ndAotIyBt
YWtlIHNlbnNlIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBwYXNzIGVtcHR5IGVudiB2YXJpYWJs
ZXMgKFdpbjMyKQotIyBhbmQgb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVuc2V0IHZhcmlhYmxl
cyAoc2luY2Ugd2UgY2Fubm90IHRlbGwKLSMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAiIiBhbmQg
TlVMTCAtLSBCb3JsYW5kIGFuZCBTb2xhcmlzIDwgNS4xMCkKLUNBTl9URVNUX0VNUFRZX0ZJTFRF
UiA9IChDQU5fUEFTU19FTVBUWV9FTlYgYW5kIENBTl9VTlNFVF9FTlYpCi0KLQotIyBUaGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIHRlc3QgZmlsdGVycy4KLUZJTFRF
Ul9FTlZfVkFSID0gJ0dURVNUX0ZJTFRFUicKLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVz
IGZvciB0ZXN0IHNoYXJkaW5nLgotVE9UQUxfU0hBUkRTX0VOVl9WQVIgPSAnR1RFU1RfVE9UQUxf
U0hBUkRTJwotU0hBUkRfSU5ERVhfRU5WX1ZBUiA9ICdHVEVTVF9TSEFSRF9JTkRFWCcKLVNIQVJE
X1NUQVRVU19GSUxFX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRfU1RBVFVTX0ZJTEUnCi0KLSMgVGhl
IGNvbW1hbmQgbGluZSBmbGFnIGZvciBzcGVjaWZ5aW5nIHRoZSB0ZXN0IGZpbHRlcnMuCi1GSUxU
RVJfRkxBRyA9ICdndGVzdF9maWx0ZXInCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBp
bmNsdWRpbmcgZGlzYWJsZWQgdGVzdHMuCi1BTFNPX1JVTl9ESVNBQkVEX1RFU1RTX0ZMQUcgPSAn
Z3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0
ZXN0X2ZpbHRlcl91bml0dGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxz
LkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0XycpCi0KLSMgUmVn
ZXggZm9yIGRldGVybWluaW5nIHdoZXRoZXIgcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmUgZW5hYmxl
ZCBpbiB0aGUgYmluYXJ5LgotUEFSQU1fVEVTVF9SRUdFWCA9IHJlLmNvbXBpbGUocicvUGFyYW1U
ZXN0JykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0IGNhc2UgbmFtZXMgZnJvbSBHb29nbGUg
VGVzdCdzIG91dHB1dC4KLVRFU1RfQ0FTRV9SRUdFWCA9IHJlLmNvbXBpbGUocideXFtcLStcXSBc
ZCsgdGVzdHM/IGZyb20gKFx3KygvXHcrKT8pJykKLQotIyBSZWdleCBmb3IgcGFyc2luZyB0ZXN0
IG5hbWVzIGZyb20gR29vZ2xlIFRlc3QncyBvdXRwdXQuCi1URVNUX1JFR0VYID0gcmUuY29tcGls
ZShyJ15cW1xzKlJVTlxzKlxdLipcLihcdysoL1x3Kyk/KScpCi0KLSMgVGhlIGNvbW1hbmQgbGlu
ZSBmbGFnIHRvIHRlbGwgR29vZ2xlIFRlc3QgdG8gb3V0cHV0IHRoZSBsaXN0IG9mIHRlc3RzIGl0
Ci0jIHdpbGwgcnVuLgotTElTVF9URVNUU19GTEFHID0gJy0tZ3Rlc3RfbGlzdF90ZXN0cycKLQot
IyBJbmRpY2F0ZXMgd2hldGhlciBHb29nbGUgVGVzdCBzdXBwb3J0cyBkZWF0aCB0ZXN0cy4KLVNV
UFBPUlRTX0RFQVRIX1RFU1RTID0gJ0hhc0RlYXRoVGVzdCcgaW4gZ3Rlc3RfdGVzdF91dGlscy5T
dWJwcm9jZXNzKAotICAgIFtDT01NQU5ELCBMSVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKLQotIyBG
dWxsIG5hbWVzIG9mIGFsbCB0ZXN0cyBpbiBndGVzdF9maWx0ZXJfdW5pdHRlc3RzXy4KLVBBUkFN
X1RFU1RTID0gWwotICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAnU2VxUC9QYXJh
bVRlc3QuVGVzdFgvMScsCi0gICAgJ1NlcVAvUGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICdTZXFQ
L1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0gICAg
J1NlcVEvUGFyYW1UZXN0LlRlc3RYLzEnLAotICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywK
LSAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFkvMScsCi0gICAgXQotCi1ESVNBQkxFRF9URVNUUyA9
IFsKLSAgICAnQmFyVGVzdC5ESVNBQkxFRF9UZXN0Rm91cicsCi0gICAgJ0JhclRlc3QuRElTQUJM
RURfVGVzdEZpdmUnLAotICAgICdCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJywKLSAgICAnRElTQUJM
RURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgJ0RJU0FCTEVEX0Zvb2JhclRlc3QuRElTQUJMRURf
VGVzdDInLAotICAgICdESVNBQkxFRF9Gb29iYXJiYXpUZXN0LlRlc3RBJywKLSAgICBdCi0KLWlm
IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICBERUFUSF9URVNUUyA9IFsKLSAgICAnSGFzRGVhdGhU
ZXN0LlRlc3QxJywKLSAgICAnSGFzRGVhdGhUZXN0LlRlc3QyJywKLSAgICBdCi1lbHNlOgotICBE
RUFUSF9URVNUUyA9IFtdCi0KLSMgQWxsIHRoZSBub24tZGlzYWJsZWQgdGVzdHMuCi1BQ1RJVkVf
VEVTVFMgPSBbCi0gICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAnRm9vVGVzdC5YeXonLAotCi0gICAg
J0JhclRlc3QuVGVzdE9uZScsCi0gICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgJ0JhclRlc3Qu
VGVzdFRocmVlJywKLQotICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAgICdCYXpUZXN0LlRlc3RB
JywKLSAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgXSArIERFQVRIX1RFU1RTICsgUEFSQU1fVEVT
VFMKLQotcGFyYW1fdGVzdHNfcHJlc2VudCA9IE5vbmUKLQotIyBVdGlsaXRpZXMuCi0KLWVudmly
b24gPSBvcy5lbnZpcm9uLmNvcHkoKQotCi0KLWRlZiBTZXRFbnZWYXIoZW52X3ZhciwgdmFsdWUp
OgotICAiIiJTZXRzIHRoZSBlbnYgdmFyaWFibGUgdG8gJ3ZhbHVlJzsgdW5zZXRzIGl0IHdoZW4g
J3ZhbHVlJyBpcyBOb25lLiIiIgotCi0gIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgIGVudmly
b25bZW52X3Zhcl0gPSB2YWx1ZQotICBlbGlmIGVudl92YXIgaW4gZW52aXJvbjoKLSAgICBkZWwg
ZW52aXJvbltlbnZfdmFyXQotCi0KLWRlZiBSdW5BbmRSZXR1cm5PdXRwdXQoYXJncyA9IE5vbmUp
OgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0gYW5kIHJldHVybnMgaXRzIG91dHB1dC4iIiIK
LQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtDT01NQU5EXSArIChhcmdz
IG9yIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52aXJv
bikub3V0cHV0Ci0KLQotZGVmIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzID0gTm9uZSk6Ci0g
ICIiIlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgZXhpdCBjb2RlIGFuZCBh
IGxpc3Qgb2YgdGVzdHMgcnVuLiIiIgotCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nl
c3MoW0NPTU1BTkRdICsgKGFyZ3Mgb3IgW10pLCBlbnY9ZW52aXJvbikKLSAgdGVzdHNfcnVuID0g
W10KLSAgdGVzdF9jYXNlID0gJycKLSAgdGVzdCA9ICcnCi0gIGZvciBsaW5lIGluIHAub3V0cHV0
LnNwbGl0KCdcbicpOgotICAgIG1hdGNoID0gVEVTVF9DQVNFX1JFR0VYLm1hdGNoKGxpbmUpCi0g
ICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6Ci0gICAgICB0ZXN0X2Nhc2UgPSBtYXRjaC5ncm91cCgx
KQotICAgIGVsc2U6Ci0gICAgICBtYXRjaCA9IFRFU1RfUkVHRVgubWF0Y2gobGluZSkKLSAgICAg
IGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICB0ZXN0ID0gbWF0Y2guZ3JvdXAoMSkKLSAg
ICAgICAgdGVzdHNfcnVuLmFwcGVuZCh0ZXN0X2Nhc2UgKyAnLicgKyB0ZXN0KQotICByZXR1cm4g
KHRlc3RzX3J1biwgcC5leGl0X2NvZGUpCi0KLQotZGVmIEludm9rZVdpdGhNb2RpZmllZEVudihl
eHRyYV9lbnYsIGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpOgotICAiIiJSdW5zIHRoZSBnaXZl
biBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGluIGEgbW9kaWZpZWQgZW52aXJvbm1lbnQuIiIiCi0g
IHRyeToKLSAgICBvcmlnaW5hbF9lbnYgPSBlbnZpcm9uLmNvcHkoKQotICAgIGVudmlyb24udXBk
YXRlKGV4dHJhX2VudikKLSAgICByZXR1cm4gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQotICBm
aW5hbGx5OgotICAgIGVudmlyb24uY2xlYXIoKQotICAgIGVudmlyb24udXBkYXRlKG9yaWdpbmFs
X2VudikKLQotCi1kZWYgUnVuV2l0aFNoYXJkaW5nKHRvdGFsX3NoYXJkcywgc2hhcmRfaW5kZXgs
IGNvbW1hbmQpOgotICAiIiJSdW5zIGEgdGVzdCBwcm9ncmFtIHNoYXJkIGFuZCByZXR1cm5zIGV4
aXQgY29kZSBhbmQgYSBsaXN0IG9mIHRlc3RzIHJ1bi4iIiIKLQotICBleHRyYV9lbnYgPSB7U0hB
UkRfSU5ERVhfRU5WX1ZBUjogc3RyKHNoYXJkX2luZGV4KSwKLSAgICAgICAgICAgICAgIFRPVEFM
X1NIQVJEU19FTlZfVkFSOiBzdHIodG90YWxfc2hhcmRzKX0KLSAgcmV0dXJuIEludm9rZVdpdGhN
b2RpZmllZEVudihleHRyYV9lbnYsIFJ1bkFuZEV4dHJhY3RUZXN0TGlzdCwgY29tbWFuZCkKLQot
IyBUaGUgdW5pdCB0ZXN0LgotCi0KLWNsYXNzIEdUZXN0RmlsdGVyVW5pdFRlc3QoZ3Rlc3RfdGVz
dF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRoZSBlbnYgdmFyaWFibGUgb3IgdGhlIGNv
bW1hbmQgbGluZSBmbGFnIHRvIGZpbHRlciB0ZXN0cy4iIiIKLQotICAjIFV0aWxpdGllcy4KLQot
ICBkZWYgQXNzZXJ0U2V0RXF1YWwoc2VsZiwgbGhzLCByaHMpOgotICAgICIiIkFzc2VydHMgdGhh
dCB0d28gc2V0cyBhcmUgZXF1YWwuIiIiCi0KLSAgICBmb3IgZWxlbSBpbiBsaHM6Ci0gICAgICBz
ZWxmLmFzc2VydF8oZWxlbSBpbiByaHMsICclcyBpbiAlcycgJSAoZWxlbSwgcmhzKSkKLQotICAg
IGZvciBlbGVtIGluIHJoczoKLSAgICAgIHNlbGYuYXNzZXJ0XyhlbGVtIGluIGxocywgJyVzIGlu
ICVzJyAlIChlbGVtLCBsaHMpKQotCi0gIGRlZiBBc3NlcnRQYXJ0aXRpb25Jc1ZhbGlkKHNlbGYs
IHNldF92YXIsIGxpc3Rfb2Zfc2V0cyk6Ci0gICAgIiIiQXNzZXJ0cyB0aGF0IGxpc3Rfb2Zfc2V0
cyBpcyBhIHZhbGlkIHBhcnRpdGlvbiBvZiBzZXRfdmFyLiIiIgotCi0gICAgZnVsbF9wYXJ0aXRp
b24gPSBbXQotICAgIGZvciBzbGljZV92YXIgaW4gbGlzdF9vZl9zZXRzOgotICAgICAgZnVsbF9w
YXJ0aXRpb24uZXh0ZW5kKHNsaWNlX3ZhcikKLSAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXRf
dmFyKSwgbGVuKGZ1bGxfcGFydGl0aW9uKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHNldChzZXRf
dmFyKSwgc2V0KGZ1bGxfcGFydGl0aW9uKSkKLQotICBkZWYgQWRqdXN0Rm9yUGFyYW1ldGVyaXpl
ZFRlc3RzKHNlbGYsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQWRqdXN0IHRlc3RzX3RvX3J1biBp
biBjYXNlIHZhbHVlIHBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGRpc2FibGVkLiIiIgotCi0gICAg
Z2xvYmFsIHBhcmFtX3Rlc3RzX3ByZXNlbnQKLSAgICBpZiBub3QgcGFyYW1fdGVzdHNfcHJlc2Vu
dDoKLSAgICAgIHJldHVybiBsaXN0KHNldCh0ZXN0c190b19ydW4pIC0gc2V0KFBBUkFNX1RFU1RT
KSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIHRlc3RzX3RvX3J1bgotCi0gIGRlZiBSdW5BbmRW
ZXJpZnkoc2VsZiwgZ3Rlc3RfZmlsdGVyLCB0ZXN0c190b19ydW4pOgotICAgICIiIkNoZWNrcyB0
aGF0IHRoZSBiaW5hcnkgcnVucyBjb3JyZWN0IHNldCBvZiB0ZXN0cyBmb3IgYSBnaXZlbiBmaWx0
ZXIuIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVzdEZvclBhcmFtZXRlcml6ZWRU
ZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIEZpcnN0LCB0ZXN0cyB1c2luZyB0aGUgZW52aXJv
bm1lbnQgdmFyaWFibGUuCi0KLSAgICAjIFdpbmRvd3MgcmVtb3ZlcyBlbXB0eSB2YXJpYWJsZXMg
ZnJvbSB0aGUgZW52aXJvbm1lbnQgd2hlbiBwYXNzaW5nIGl0Ci0gICAgIyB0byBhIG5ldyBwcm9j
ZXNzLiAgVGhpcyBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIHBhc3MgYW4gZW1wdHkgZmlsdGVy
Ci0gICAgIyBpbnRvIGEgcHJvY2VzcyB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuICBI
b3dldmVyLCB3ZSBjYW4gc3RpbGwKLSAgICAjIHRlc3QgdGhlIGNhc2Ugd2hlbiB0aGUgdmFyaWFi
bGUgaXMgbm90IHN1cHBsaWVkIChpLmUuLCBndGVzdF9maWx0ZXIgaXMKLSAgICAjIE5vbmUpLgot
ICAgICMgcHlsaW50OiBkaXNhYmxlLW1zZz1DNjQwMwotICAgIGlmIENBTl9URVNUX0VNUFRZX0ZJ
TFRFUiBvciBndGVzdF9maWx0ZXIgIT0gJyc6Ci0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9W
QVIsIGd0ZXN0X2ZpbHRlcikKLSAgICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlz
dCgpWzBdCi0gICAgICBTZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgICBzZWxm
LkFzc2VydFNldEVxdWFsKHRlc3RzX3J1biwgdGVzdHNfdG9fcnVuKQotICAgICMgcHlsaW50OiBl
bmFibGUtbXNnPUM2NDAzCi0KLSAgICAjIE5leHQsIHRlc3RzIHVzaW5nIHRoZSBjb21tYW5kIGxp
bmUgZmxhZy4KLQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBOb25lOgotICAgICAgYXJncyA9IFtd
Ci0gICAgZWxzZToKLSAgICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUgKEZJTFRFUl9GTEFHLCBndGVz
dF9maWx0ZXIpXQotCi0gICAgdGVzdHNfcnVuID0gUnVuQW5kRXh0cmFjdFRlc3RMaXN0KGFyZ3Mp
WzBdCi0gICAgc2VsZi5Bc3NlcnRTZXRFcXVhbCh0ZXN0c19ydW4sIHRlc3RzX3RvX3J1bikKLQot
ICBkZWYgUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKHNlbGYsIGd0ZXN0X2ZpbHRlciwgdG90YWxf
c2hhcmRzLCB0ZXN0c190b19ydW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJn
cz1Ob25lLCBjaGVja19leGl0XzA9RmFsc2UpOgotICAgICIiIkNoZWNrcyB0aGF0IGJpbmFyeSBy
dW5zIGNvcnJlY3QgdGVzdHMgZm9yIHRoZSBnaXZlbiBmaWx0ZXIgYW5kIHNoYXJkLgotCi0gICAg
UnVucyBhbGwgc2hhcmRzIG9mIGd0ZXN0X2ZpbHRlcl91bml0dGVzdF8gd2l0aCB0aGUgZ2l2ZW4g
ZmlsdGVyLCBhbmQKLSAgICB2ZXJpZmllcyB0aGF0IHRoZSByaWdodCBzZXQgb2YgdGVzdHMgd2Vy
ZSBydW4uIFRoZSB1bmlvbiBvZiB0ZXN0cyBydW4KLSAgICBvbiBlYWNoIHNoYXJkIHNob3VsZCBi
ZSBpZGVudGljYWwgdG8gdGVzdHNfdG9fcnVuLCB3aXRob3V0IGR1cGxpY2F0ZXMuCi0KLSAgICBB
cmdzOgotICAgICAgZ3Rlc3RfZmlsdGVyOiBBIGZpbHRlciB0byBhcHBseSB0byB0aGUgdGVzdHMu
Ci0gICAgICB0b3RhbF9zaGFyZHM6IEEgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBzcGxpdCB0
ZXN0IHJ1biBpbnRvLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBleHBlY3Rl
ZCB0byBydW4uCi0gICAgICBhcmdzICAgOiAgICAgIEFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB0
byB0aGUgdGVzdCBiaW5hcnkuCi0gICAgICBjaGVja19leGl0XzA6IFdoZW4gc2V0IHRvIGEgdHJ1
ZSB2YWx1ZSwgbWFrZSBzdXJlIHRoYXQgYWxsIHNoYXJkcwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMC4KLSAgICAiIiIKLQotICAgIHRlc3RzX3RvX3J1biA9IHNlbGYuQWRqdXN0Rm9yUGFy
YW1ldGVyaXplZFRlc3RzKHRlc3RzX3RvX3J1bikKLQotICAgICMgV2luZG93cyByZW1vdmVzIGVt
cHR5IHZhcmlhYmxlcyBmcm9tIHRoZSBlbnZpcm9ubWVudCB3aGVuIHBhc3NpbmcgaXQKLSAgICAj
IHRvIGEgbmV3IHByb2Nlc3MuICBUaGlzIG1lYW5zIGl0IGlzIGltcG9zc2libGUgdG8gcGFzcyBh
biBlbXB0eSBmaWx0ZXIKLSAgICAjIGludG8gYSBwcm9jZXNzIHVzaW5nIHRoZSBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4gIEhvd2V2ZXIsIHdlIGNhbiBzdGlsbAotICAgICMgdGVzdCB0aGUgY2FzZSB3
aGVuIHRoZSB2YXJpYWJsZSBpcyBub3Qgc3VwcGxpZWQgKGkuZS4sIGd0ZXN0X2ZpbHRlciBpcwot
ICAgICMgTm9uZSkuCi0gICAgIyBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgaWYgQ0FO
X1RFU1RfRU1QVFlfRklMVEVSIG9yIGd0ZXN0X2ZpbHRlciAhPSAnJzoKLSAgICAgIFNldEVudlZh
cihGSUxURVJfRU5WX1ZBUiwgZ3Rlc3RfZmlsdGVyKQotICAgICAgcGFydGl0aW9uID0gW10KLSAg
ICAgIGZvciBpIGluIHJhbmdlKDAsIHRvdGFsX3NoYXJkcyk6Ci0gICAgICAgICh0ZXN0c19ydW4s
IGV4aXRfY29kZSkgPSBSdW5XaXRoU2hhcmRpbmcodG90YWxfc2hhcmRzLCBpLCBhcmdzKQotICAg
ICAgICBpZiBjaGVja19leGl0XzA6Ci0gICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0
X2NvZGUpCi0gICAgICAgIHBhcnRpdGlvbi5hcHBlbmQodGVzdHNfcnVuKQotCi0gICAgICBzZWxm
LkFzc2VydFBhcnRpdGlvbklzVmFsaWQodGVzdHNfdG9fcnVuLCBwYXJ0aXRpb24pCi0gICAgICBT
ZXRFbnZWYXIoRklMVEVSX0VOVl9WQVIsIE5vbmUpCi0gICAgIyBweWxpbnQ6IGVuYWJsZS1tc2c9
QzY0MDMKLQotICBkZWYgUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZChzZWxmLCBndGVzdF9m
aWx0ZXIsIHRlc3RzX3RvX3J1bik6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGJpbmFyeSBydW5z
IGNvcnJlY3Qgc2V0IG9mIHRlc3RzIGZvciB0aGUgZ2l2ZW4gZmlsdGVyLgotCi0gICAgUnVucyBn
dGVzdF9maWx0ZXJfdW5pdHRlc3RfIHdpdGggdGhlIGdpdmVuIGZpbHRlciwgYW5kIGVuYWJsZXMK
LSAgICBkaXNhYmxlZCB0ZXN0cy4gVmVyaWZpZXMgdGhhdCB0aGUgcmlnaHQgc2V0IG9mIHRlc3Rz
IHdlcmUgcnVuLgotCi0gICAgQXJnczoKLSAgICAgIGd0ZXN0X2ZpbHRlcjogQSBmaWx0ZXIgdG8g
YXBwbHkgdG8gdGhlIHRlc3RzLgotICAgICAgdGVzdHNfdG9fcnVuOiBBIHNldCBvZiB0ZXN0cyBl
eHBlY3RlZCB0byBydW4uCi0gICAgIiIiCi0KLSAgICB0ZXN0c190b19ydW4gPSBzZWxmLkFkanVz
dEZvclBhcmFtZXRlcml6ZWRUZXN0cyh0ZXN0c190b19ydW4pCi0KLSAgICAjIENvbnN0cnVjdCB0
aGUgY29tbWFuZCBsaW5lLgotICAgIGFyZ3MgPSBbJy0tJXMnICUgQUxTT19SVU5fRElTQUJFRF9U
RVNUU19GTEFHXQotICAgIGlmIGd0ZXN0X2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgIGFyZ3Mu
YXBwZW5kKCctLSVzPSVzJyAlIChGSUxURVJfRkxBRywgZ3Rlc3RfZmlsdGVyKSkKLQotICAgIHRl
c3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0TGlzdChhcmdzKVswXQotICAgIHNlbGYuQXNzZXJ0
U2V0RXF1YWwodGVzdHNfcnVuLCB0ZXN0c190b19ydW4pCi0KLSAgZGVmIHNldFVwKHNlbGYpOgot
ICAgICIiIlNldHMgdXAgdGVzdCBjYXNlLgotCi0gICAgRGV0ZXJtaW5lcyB3aGV0aGVyIHZhbHVl
LXBhcmFtZXRlcml6ZWQgdGVzdHMgYXJlIGVuYWJsZWQgaW4gdGhlIGJpbmFyeSBhbmQKLSAgICBz
ZXRzIHRoZSBmbGFncyBhY2NvcmRpbmdseS4KLSAgICAiIiIKLQotICAgIGdsb2JhbCBwYXJhbV90
ZXN0c19wcmVzZW50Ci0gICAgaWYgcGFyYW1fdGVzdHNfcHJlc2VudCBpcyBOb25lOgotICAgICAg
cGFyYW1fdGVzdHNfcHJlc2VudCA9IFBBUkFNX1RFU1RfUkVHRVguc2VhcmNoKAotICAgICAgICAg
IFJ1bkFuZFJldHVybk91dHB1dCgpKSBpcyBub3QgTm9uZQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJl
aGF2aW9yKHNlbGYpOgotICAgICIiIlRlc3RzIHRoZSBiZWhhdmlvciBvZiBub3Qgc3BlY2lmeWlu
ZyB0aGUgZmlsdGVyLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoTm9uZSwgQUNUSVZFX1RF
U1RTKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yV2l0aFNoYXJkcyhzZWxmKToKLSAgICAi
IiJUZXN0cyB0aGUgYmVoYXZpb3Igd2l0aG91dCB0aGUgZmlsdGVyLCB3aXRoIHNoYXJkaW5nIGVu
YWJsZWQuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhOb25lLCAxLCBB
Q1RJVkVfVEVTVFMpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgMiwg
QUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKE5vbmUsIGxl
bihBQ1RJVkVfVEVTVFMpIC0gMSwgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKE5vbmUsIGxlbihBQ1RJVkVfVEVTVFMpLCBBQ1RJVkVfVEVTVFMpCi0gICAg
c2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoTm9uZSwgbGVuKEFDVElWRV9URVNUUykgKyAx
LCBBQ1RJVkVfVEVTVFMpCi0KLSAgZGVmIHRlc3RFbXB0eUZpbHRlcihzZWxmKToKLSAgICAiIiJU
ZXN0cyBhbiBlbXB0eSBmaWx0ZXIuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnJywgW10p
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnlXaXRoU2hhcmRpbmcoJycsIDEsIFtdKQotICAgIHNlbGYu
UnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCcnLCAyLCBbXSkKLQotICBkZWYgdGVzdEJhZEZpbHRl
cihzZWxmKToKLSAgICAiIiJUZXN0cyBhIGZpbHRlciB0aGF0IG1hdGNoZXMgbm90aGluZy4iIiIK
LQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdCYWRGaWx0ZXInLCBbXSkKLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0JhZEZpbHRlcicsIFtdKQotCi0gIGRlZiB0ZXN0RnVs
bE5hbWUoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IGZ1bGwgbmFtZS4iIiIKLQot
ICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdGb29UZXN0Llh5eicsIFsnRm9vVGVzdC5YeXonXSkKLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJ0Zvb1Rlc3QuWHl6JywgWydGb29U
ZXN0Llh5eiddKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJkaW5nKCdGb29UZXN0Llh5
eicsIDUsIFsnRm9vVGVzdC5YeXonXSkKLQotICBkZWYgdGVzdFVuaXZlcnNhbEZpbHRlcnMoc2Vs
Zik6Ci0gICAgIiIiVGVzdHMgZmlsdGVycyB0aGF0IG1hdGNoIGV2ZXJ5dGhpbmcuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKicsIEFDVElWRV9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZl
cmlmeSgnKi4qJywgQUNUSVZFX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5V2l0aFNoYXJk
aW5nKCcqLionLCBsZW4oQUNUSVZFX1RFU1RTKSAtIDMsIEFDVElWRV9URVNUUykKLSAgICBzZWxm
LlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyonLCBBQ1RJVkVfVEVTVFMgKyBESVNBQkxF
RF9URVNUUykKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJyouKicsIEFD
VElWRV9URVNUUyArIERJU0FCTEVEX1RFU1RTKQotCi0gIGRlZiB0ZXN0RmlsdGVyQnlUZXN0Q2Fz
ZShzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJpbmcgYnkgdGVzdCBjYXNlIG5hbWUuIiIiCi0K
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9vVGVzdC4qJywgWydGb29UZXN0LkFiYycsICdGb29U
ZXN0Llh5eiddKQotCi0gICAgQkFaX1RFU1RTID0gWydCYXpUZXN0LlRlc3RPbmUnLCAnQmF6VGVz
dC5UZXN0QScsICdCYXpUZXN0LlRlc3RCJ10KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnQmF6VGVz
dC4qJywgQkFaX1RFU1RTKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5QWxsb3dpbmdEaXNhYmxlZCgn
QmF6VGVzdC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFaX1RF
U1RTICsgWydCYXpUZXN0LkRJU0FCTEVEX1Rlc3RDJ10pCi0KLSAgZGVmIHRlc3RGaWx0ZXJCeVRl
c3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgZmlsdGVyaW5nIGJ5IHRlc3QgbmFtZS4iIiIKLQotICAg
IHNlbGYuUnVuQW5kVmVyaWZ5KCcqLlRlc3RPbmUnLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpU
ZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdEZpbHRlckRpc2FibGVkVGVzdHMoc2VsZik6Ci0g
ICAgIiIiU2VsZWN0IG9ubHkgdGhlIGRpc2FibGVkIHRlc3RzIHRvIHJ1bi4iIiIKLQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3QxJywgW10pCi0gICAgc2Vs
Zi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF9Gb29iYXJUZXN0LlRlc3Qx
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydESVNBQkxFRF9Gb29i
YXJUZXN0LlRlc3QxJ10pCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKkRJU0FCTEVEXyonLCBb
XSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeUFsbG93aW5nRGlzYWJsZWQoJypESVNBQkxFRF8qJywg
RElTQUJMRURfVEVTVFMpCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi5ESVNBQkxFRF8qJywg
W10pCi0gICAgc2VsZi5SdW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCcqLkRJU0FCTEVEXyon
LCBbCi0gICAgICAgICdCYXJUZXN0LkRJU0FCTEVEX1Rlc3RGb3VyJywKLSAgICAgICAgJ0JhclRl
c3QuRElTQUJMRURfVGVzdEZpdmUnLAotICAgICAgICAnQmF6VGVzdC5ESVNBQkxFRF9UZXN0Qycs
Ci0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJU0FCTEVEX1Rlc3QyJywKLSAgICAgICAg
XSkKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCdESVNBQkxFRF8qJywgW10pCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnlBbGxvd2luZ0Rpc2FibGVkKCdESVNBQkxFRF8qJywgWwotICAgICAgICAnRElT
QUJMRURfRm9vYmFyVGVzdC5UZXN0MScsCi0gICAgICAgICdESVNBQkxFRF9Gb29iYXJUZXN0LkRJ
U0FCTEVEX1Rlc3QyJywKLSAgICAgICAgJ0RJU0FCTEVEX0Zvb2JhcmJhelRlc3QuVGVzdEEnLAot
ICAgICAgICBdKQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3RDYXNlTmFtZShzZWxmKToKLSAg
ICAiIiJUZXN0cyB1c2luZyB3aWxkY2FyZCBpbiB0aGUgdGVzdCBjYXNlIG5hbWUuIiIiCi0KLSAg
ICBzZWxmLlJ1bkFuZFZlcmlmeSgnKmEqLionLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RPbmUn
LAotICAgICAgICAnQmFyVGVzdC5UZXN0VHdvJywKLSAgICAgICAgJ0JhclRlc3QuVGVzdFRocmVl
JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhelRlc3QuVGVzdEEn
LAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RT
KQotCi0gIGRlZiB0ZXN0V2lsZGNhcmRJblRlc3ROYW1lKHNlbGYpOgotICAgICIiIlRlc3RzIHVz
aW5nIHdpbGRjYXJkIGluIHRoZSB0ZXN0IG5hbWUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlm
eSgnKi4qQSonLCBbJ0Zvb1Rlc3QuQWJjJywgJ0JhelRlc3QuVGVzdEEnXSkKLQotICBkZWYgdGVz
dEZpbHRlcldpdGhvdXREb3Qoc2VsZik6Ci0gICAgIiIiVGVzdHMgYSBmaWx0ZXIgdGhhdCBoYXMg
bm8gJy4nIGluIGl0LiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJyp6KicsIFsKLSAgICAg
ICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAg
J0JhelRlc3QuVGVzdEEnLAotICAgICAgICAnQmF6VGVzdC5UZXN0QicsCi0gICAgICAgIF0pCi0K
LSAgZGVmIHRlc3RUd29QYXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQg
Y29uc2lzdCBvZiB0d28gcGF0dGVybnMuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnRm9v
Ki4qOipBKicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6
JywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIEFuIGVt
cHR5IHBhdHRlcm4gKyBhIG5vbi1lbXB0eSBvbmUKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnOipB
KicsIFsnRm9vVGVzdC5BYmMnLCAnQmF6VGVzdC5UZXN0QSddKQotCi0gIGRlZiB0ZXN0VGhyZWVQ
YXR0ZXJucyhzZWxmKToKLSAgICAiIiJUZXN0cyBmaWx0ZXJzIHRoYXQgY29uc2lzdCBvZiB0aHJl
ZSBwYXR0ZXJucy4iIiIKLQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqb28qOipBKjoqT25lJywg
WwotICAgICAgICAnRm9vVGVzdC5BYmMnLAotICAgICAgICAnRm9vVGVzdC5YeXonLAotCi0gICAg
ICAgICdCYXJUZXN0LlRlc3RPbmUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RPbmUnLAotICAg
ICAgICAnQmF6VGVzdC5UZXN0QScsCi0gICAgICAgIF0pCi0KLSAgICAjIFRoZSAybmQgcGF0dGVy
biBpcyBlbXB0eS4KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKm9vKjo6Kk9uZScsIFsKLSAgICAg
ICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFy
VGVzdC5UZXN0T25lJywKLQotICAgICAgICAnQmF6VGVzdC5UZXN0T25lJywKLSAgICAgICAgXSkK
LQotICAgICMgVGhlIGxhc3QgMiBwYXR0ZXJucyBhcmUgZW1wdHkuCi0gICAgc2VsZi5SdW5BbmRW
ZXJpZnkoJypvbyo6OicsIFsKLSAgICAgICAgJ0Zvb1Rlc3QuQWJjJywKLSAgICAgICAgJ0Zvb1Rl
c3QuWHl6JywKLSAgICAgICAgXSkKLQotICBkZWYgdGVzdE5lZ2F0aXZlRmlsdGVycyhzZWxmKToK
LSAgICBzZWxmLlJ1bkFuZFZlcmlmeSgnKi1CYXpUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdG
b29UZXN0LkFiYycsCi0gICAgICAgICdGb29UZXN0Llh5eicsCi0KLSAgICAgICAgJ0JhclRlc3Qu
VGVzdE9uZScsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAgICAgICAnQmFyVGVzdC5U
ZXN0VGhyZWUnLAotCi0gICAgICAgICdCYXpUZXN0LlRlc3RBJywKLSAgICAgICAgJ0JhelRlc3Qu
VGVzdEInLAotICAgICAgICBdICsgREVBVEhfVEVTVFMgKyBQQVJBTV9URVNUUykKLQotICAgIHNl
bGYuUnVuQW5kVmVyaWZ5KCcqLUZvb1Rlc3QuQWJjOkJhelRlc3QuKicsIFsKLSAgICAgICAgJ0Zv
b1Rlc3QuWHl6JywKLQotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAgICAgJ0JhclRl
c3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAgICAgIF0gKyBE
RUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ0JhclRl
c3QuKi1CYXJUZXN0LlRlc3RPbmUnLCBbCi0gICAgICAgICdCYXJUZXN0LlRlc3RUd28nLAotICAg
ICAgICAnQmFyVGVzdC5UZXN0VGhyZWUnLAotICAgICAgICBdKQotCi0gICAgIyBUZXN0cyB3aXRo
b3V0IGxlYWRpbmcgJyonLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCctRm9vVGVzdC5BYmM6Rm9v
VGVzdC5YeXo6QmF6VGVzdC4qJywgWwotICAgICAgICAnQmFyVGVzdC5UZXN0T25lJywKLSAgICAg
ICAgJ0JhclRlc3QuVGVzdFR3bycsCi0gICAgICAgICdCYXJUZXN0LlRlc3RUaHJlZScsCi0gICAg
ICAgIF0gKyBERUFUSF9URVNUUyArIFBBUkFNX1RFU1RTKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0
ZXJpemVkIHRlc3RzLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcqLyonLCBQQVJBTV9URVNUUykK
LQotICAgICMgVmFsdWUgcGFyYW1ldGVyaXplZCB0ZXN0cyBmaWx0ZXJpbmcgYnkgdGhlIHNlcXVl
bmNlIG5hbWUuCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoJ1NlcVAvKicsIFsKLSAgICAgICAgJ1Nl
cVAvUGFyYW1UZXN0LlRlc3RYLzAnLAotICAgICAgICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScs
Ci0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgJ1NlcVAvUGFyYW1U
ZXN0LlRlc3RZLzEnLAotICAgICAgICBdKQotCi0gICAgIyBWYWx1ZSBwYXJhbWV0ZXJpemVkIHRl
c3RzIGZpbHRlcmluZyBieSB0aGUgdGVzdCBuYW1lLgotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KCcq
LzAnLCBbCi0gICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAgJ1NlcVAv
UGFyYW1UZXN0LlRlc3RZLzAnLAotICAgICAgICAnU2VxUS9QYXJhbVRlc3QuVGVzdFgvMCcsCi0g
ICAgICAgICdTZXFRL1BhcmFtVGVzdC5UZXN0WS8wJywKLSAgICAgICAgXSkKLQotICBkZWYgdGVz
dEZsYWdPdmVycmlkZXNFbnZWYXIoc2VsZik6Ci0gICAgIiIiVGVzdHMgdGhhdCB0aGUgZmlsdGVy
IGZsYWcgb3ZlcnJpZGVzIHRoZSBmaWx0ZXJpbmcgZW52LiB2YXJpYWJsZS4iIiIKLQotICAgIFNl
dEVudlZhcihGSUxURVJfRU5WX1ZBUiwgJ0ZvbyonKQotICAgIGFyZ3MgPSBbJy0tJXM9JXMnICUg
KEZJTFRFUl9GTEFHLCAnKk9uZScpXQotICAgIHRlc3RzX3J1biA9IFJ1bkFuZEV4dHJhY3RUZXN0
TGlzdChhcmdzKVswXQotICAgIFNldEVudlZhcihGSUxURVJfRU5WX1ZBUiwgTm9uZSkKLQotICAg
IHNlbGYuQXNzZXJ0U2V0RXF1YWwodGVzdHNfcnVuLCBbJ0JhclRlc3QuVGVzdE9uZScsICdCYXpU
ZXN0LlRlc3RPbmUnXSkKLQotICBkZWYgdGVzdFNoYXJkU3RhdHVzRmlsZUlzQ3JlYXRlZChzZWxm
KToKLSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgaWYgc3BlY2lm
aWVkIGluIHRoZSBlbnZpcm9ubWVudC4iIiIKLQotICAgIHNoYXJkX3N0YXR1c19maWxlID0gb3Mu
cGF0aC5qb2luKGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVtcERpcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzaGFyZF9zdGF0dXNfZmlsZScpCi0gICAgc2VsZi5hc3Nl
cnRfKG5vdCBvcy5wYXRoLmV4aXN0cyhzaGFyZF9zdGF0dXNfZmlsZSkpCi0KLSAgICBleHRyYV9l
bnYgPSB7U0hBUkRfU1RBVFVTX0ZJTEVfRU5WX1ZBUjogc2hhcmRfc3RhdHVzX2ZpbGV9Ci0gICAg
dHJ5OgotICAgICAgSW52b2tlV2l0aE1vZGlmaWVkRW52KGV4dHJhX2VudiwgUnVuQW5kUmV0dXJu
T3V0cHV0KQotICAgIGZpbmFsbHk6Ci0gICAgICBzZWxmLmFzc2VydF8ob3MucGF0aC5leGlzdHMo
c2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJkX3N0YXR1c19maWxlKQot
Ci0gIGRlZiB0ZXN0U2hhcmRTdGF0dXNGaWxlSXNDcmVhdGVkV2l0aExpc3RUZXN0cyhzZWxmKToK
LSAgICAiIiJUZXN0cyB0aGF0IHRoZSBzaGFyZCBmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgImxp
c3RfdGVzdHMiIGZsYWcuIiIiCi0KLSAgICBzaGFyZF9zdGF0dXNfZmlsZSA9IG9zLnBhdGguam9p
bihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc2hhcmRfc3RhdHVzX2ZpbGUyJykKLSAgICBzZWxmLmFzc2VydF8obm90
IG9zLnBhdGguZXhpc3RzKHNoYXJkX3N0YXR1c19maWxlKSkKLQotICAgIGV4dHJhX2VudiA9IHtT
SEFSRF9TVEFUVVNfRklMRV9FTlZfVkFSOiBzaGFyZF9zdGF0dXNfZmlsZX0KLSAgICB0cnk6Ci0g
ICAgICBvdXRwdXQgPSBJbnZva2VXaXRoTW9kaWZpZWRFbnYoZXh0cmFfZW52LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bkFuZFJldHVybk91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTElTVF9URVNUU19GTEFHXSkKLSAgICBmaW5h
bGx5OgotICAgICAgIyBUaGlzIGFzc2VydGlvbiBlbnN1cmVzIHRoYXQgR29vZ2xlIFRlc3QgZW51
bWVyYXRlZCB0aGUgdGVzdHMgYXMKLSAgICAgICMgb3Bwb3NlZCB0byBydW5uaW5nIHRoZW0uCi0g
ICAgICBzZWxmLmFzc2VydF8oJ1s9PT09PT09PT09XScgbm90IGluIG91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAnVW5leHBlY3RlZCBvdXRwdXQgZHVyaW5nIHRlc3QgZW51bWVyYXRpb24uXG4n
Ci0gICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCBMSVNUX1RFU1RTX0ZMQUcg
aXMgYXNzaWduZWQgdGhlXG4nCi0gICAgICAgICAgICAgICAgICAgJ2NvcnJlY3QgZmxhZyB2YWx1
ZSBmb3IgbGlzdGluZyBHb29nbGUgVGVzdCB0ZXN0cy4nKQotCi0gICAgICBzZWxmLmFzc2VydF8o
b3MucGF0aC5leGlzdHMoc2hhcmRfc3RhdHVzX2ZpbGUpKQotICAgICAgb3MucmVtb3ZlKHNoYXJk
X3N0YXR1c19maWxlKQotCi0gIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgIGRlZiB0ZXN0
U2hhcmRpbmdXb3Jrc1dpdGhEZWF0aFRlc3RzKHNlbGYpOgotICAgICAgIiIiVGVzdHMgaW50ZWdy
YXRpb24gd2l0aCBkZWF0aCB0ZXN0cyBhbmQgc2hhcmRpbmcuIiIiCi0KLSAgICAgIGd0ZXN0X2Zp
bHRlciA9ICdIYXNEZWF0aFRlc3QuKjpTZXFQLyonCi0gICAgICBleHBlY3RlZF90ZXN0cyA9IFsK
LSAgICAgICAgICAnSGFzRGVhdGhUZXN0LlRlc3QxJywKLSAgICAgICAgICAnSGFzRGVhdGhUZXN0
LlRlc3QyJywKLQotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WC8wJywKLSAgICAgICAg
ICAnU2VxUC9QYXJhbVRlc3QuVGVzdFgvMScsCi0gICAgICAgICAgJ1NlcVAvUGFyYW1UZXN0LlRl
c3RZLzAnLAotICAgICAgICAgICdTZXFQL1BhcmFtVGVzdC5UZXN0WS8xJywKLSAgICAgICAgICBd
Ci0KLSAgICAgIGZvciBmbGFnIGluIFsnLS1ndGVzdF9kZWF0aF90ZXN0X3N0eWxlPXRocmVhZHNh
ZmUnLAotICAgICAgICAgICAgICAgICAgICctLWd0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGU9ZmFzdCdd
OgotICAgICAgICBzZWxmLlJ1bkFuZFZlcmlmeVdpdGhTaGFyZGluZyhndGVzdF9maWx0ZXIsIDMs
IGV4cGVjdGVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja19leGl0XzA9VHJ1ZSwgYXJncz1bZmxhZ10pCi0gICAgICAgIHNlbGYuUnVuQW5kVmVyaWZ5
V2l0aFNoYXJkaW5nKGd0ZXN0X2ZpbHRlciwgNSwgZXhwZWN0ZWRfdGVzdHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2V4aXRfMD1UcnVlLCBhcmdzPVtmbGFn
XSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5j
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfZmlsdGVyX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkZWZmYzM4ZjdkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF9maWx0ZXJfdW5pdHRlc3RfLmNjCisrKyAvZGV2L251bGwKQEAg
LTEsMTQwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1LCBHb29nbGUgSW5jLgotLy8gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1l
dDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0v
LwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFVu
aXQgdGVzdCBmb3IgR29vZ2xlIFRlc3QgdGVzdCBmaWx0ZXJzLgotLy8KLS8vIEEgdXNlciBjYW4g
c3BlY2lmeSB3aGljaCB0ZXN0KHMpIGluIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSB0byBydW4gdmlh
Ci0vLyBlaXRoZXIgdGhlIEdURVNUX0ZJTFRFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciB0aGUg
LS1ndGVzdF9maWx0ZXIKLS8vIGZsYWcuICBUaGlzIGlzIHVzZWQgZm9yIHRlc3Rpbmcgc3VjaCBm
dW5jdGlvbmFsaXR5LgotLy8KLS8vIFRoZSBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEg
UHl0aG9uIHVuaXQgdGVzdC4gIERvbid0IHJ1biBpdAotLy8gZGlyZWN0bHkuCi0KLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi0vLyBUZXN0IGNhc2UgRm9vVGVzdC4K
LQotY2xhc3MgRm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihG
b29UZXN0LCBBYmMpIHsKLX0KLQotVEVTVF9GKEZvb1Rlc3QsIFh5eikgewotICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEJhclRlc3QuCi0KLVRFU1Qo
QmFyVGVzdCwgVGVzdE9uZSkgewotfQotCi1URVNUKEJhclRlc3QsIFRlc3RUd28pIHsKLX0KLQot
VEVTVChCYXJUZXN0LCBUZXN0VGhyZWUpIHsKLX0KLQotVEVTVChCYXJUZXN0LCBESVNBQkxFRF9U
ZXN0Rm91cikgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotVEVTVChC
YXJUZXN0LCBESVNBQkxFRF9UZXN0Rml2ZSkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1
cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEJhelRlc3QuCi0KLVRFU1QoQmF6VGVzdCwgVGVzdE9u
ZSkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotVEVTVChCYXpUZXN0
LCBUZXN0QSkgewotfQotCi1URVNUKEJhelRlc3QsIFRlc3RCKSB7Ci19Ci0KLVRFU1QoQmF6VGVz
dCwgRElTQUJMRURfVGVzdEMpIHsKLSAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlLiI7Ci19
Ci0KLS8vIFRlc3QgY2FzZSBIYXNEZWF0aFRlc3QKLQotVEVTVChIYXNEZWF0aFRlc3QsIFRlc3Qx
KSB7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoZXhpdCgxKSwgIi4qIik7Ci19Ci0KLS8v
IFdlIG5lZWQgYXQgbGVhc3QgdHdvIGRlYXRoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBh
bGwgZGVhdGggdGVzdHMKLS8vIGFyZW4ndCBvbiB0aGUgZmlyc3Qgc2hhcmQuCi1URVNUKEhhc0Rl
YXRoVGVzdCwgVGVzdDIpIHsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChleGl0KDEpLCAi
LioiKTsKLX0KLQotLy8gVGVzdCBjYXNlIEZvb2JhclRlc3QKLQotVEVTVChESVNBQkxFRF9Gb29i
YXJUZXN0LCBUZXN0MSkgewotICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQot
VEVTVChESVNBQkxFRF9Gb29iYXJUZXN0LCBESVNBQkxFRF9UZXN0MikgewotICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0KLQotLy8gVGVzdCBjYXNlIEZvb2JhcmJhelRlc3QKLQot
VEVTVChESVNBQkxFRF9Gb29iYXJiYXpUZXN0LCBUZXN0QSkgewotICBGQUlMKCkgPDwgIkV4cGVj
dGVkIGZhaWx1cmUuIjsKLX0KLQotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi1jbGFzcyBQYXJh
bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxpbnQ+IHsKLX07Ci0KLVRFU1Rf
UChQYXJhbVRlc3QsIFRlc3RYKSB7Ci19Ci0KLVRFU1RfUChQYXJhbVRlc3QsIFRlc3RZKSB7Ci19
Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcVAsIFBhcmFtVGVzdCwgdGVzdGluZzo6VmFs
dWVzKDEsIDIpKTsKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFNlcVEsIFBhcmFtVGVzdCwgdGVz
dGluZzo6VmFsdWVzKDUsIDYpKTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLQot
fSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewotICA6
OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICByZXR1cm4gUlVOX0FM
TF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rl
c3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2hlbHBfdGVzdC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDkzYzgzOGQ5ZTQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QvdGVzdC9ndGVzdF9oZWxwX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVGVz
dHMgdGhlIC0taGVscCBmbGFnIG9mIEdvb2dsZSBDKysgVGVzdGluZyBGcmFtZXdvcmsuCi0KLVNZ
Tk9QU0lTCi0gICAgICAgZ3Rlc3RfaGVscF90ZXN0LnB5IC0tYnVpbGRfZGlyPUJVSUxEL0RJUgot
ICAgICAgICAgIyB3aGVyZSBCVUlMRC9ESVIgY29udGFpbnMgdGhlIGJ1aWx0IGd0ZXN0X2hlbHBf
dGVzdF8gZmlsZS4KLSAgICAgICBndGVzdF9oZWxwX3Rlc3QucHkKLSIiIgotCi1fX2F1dGhvcl9f
ID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgb3MKLWltcG9ydCBy
ZQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi1JU19MSU5VWCA9IG9zLm5hbWUgPT0gJ3Bv
c2l4JyBhbmQgb3MudW5hbWUoKVswXSA9PSAnTGludXgnCi1JU19XSU5ET1dTID0gb3MubmFtZSA9
PSAnbnQnCi0KLVBST0dSQU1fUEFUSCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFi
bGVQYXRoKCdndGVzdF9oZWxwX3Rlc3RfJykKLUZMQUdfUFJFRklYID0gJy0tZ3Rlc3RfJwotREVB
VEhfVEVTVF9TVFlMRV9GTEFHID0gRkxBR19QUkVGSVggKyAnZGVhdGhfdGVzdF9zdHlsZScKLVNU
UkVBTV9SRVNVTFRfVE9fRkxBRyA9IEZMQUdfUFJFRklYICsgJ3N0cmVhbV9yZXN1bHRfdG8nCi1V
TktOT1dOX0ZMQUcgPSBGTEFHX1BSRUZJWCArICd1bmtub3duX2ZsYWdfZm9yX3Rlc3RpbmcnCi1M
SVNUX1RFU1RTX0ZMQUcgPSBGTEFHX1BSRUZJWCArICdsaXN0X3Rlc3RzJwotSU5DT1JSRUNUX0ZM
QUdfVkFSSUFOVFMgPSBbcmUuc3ViKCdeLS0nLCAnLScsIExJU1RfVEVTVFNfRkxBRyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICByZS5zdWIoJ14tLScsICcvJywgTElTVF9URVNUU19GTEFH
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLnN1YignXycsICctJywgTElTVF9URVNU
U19GTEFHKV0KLUlOVEVSTkFMX0ZMQUdfRk9SX1RFU1RJTkcgPSBGTEFHX1BSRUZJWCArICdpbnRl
cm5hbF9mbGFnX2Zvcl90ZXN0aW5nJwotCi1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICJEZWF0aFRl
c3QiIGluIGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2VzcygKLSAgICBbUFJPR1JBTV9QQVRILCBM
SVNUX1RFU1RTX0ZMQUddKS5vdXRwdXQKLQotIyBUaGUgaGVscCBtZXNzYWdlIG11c3QgbWF0Y2gg
dGhpcyByZWdleC4KLUhFTFBfUkVHRVggPSByZS5jb21waWxlKAotICAgIEZMQUdfUFJFRklYICsg
cidsaXN0X3Rlc3RzLionICsKLSAgICBGTEFHX1BSRUZJWCArIHInZmlsdGVyPS4qJyArCi0gICAg
RkxBR19QUkVGSVggKyByJ2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzLionICsKLSAgICBGTEFHX1BS
RUZJWCArIHIncmVwZWF0PS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ3NodWZmbGUuKicgKwot
ICAgIEZMQUdfUFJFRklYICsgcidyYW5kb21fc2VlZD0uKicgKwotICAgIEZMQUdfUFJFRklYICsg
cidjb2xvcj0uKicgKwotICAgIEZMQUdfUFJFRklYICsgcidwcmludF90aW1lLionICsKLSAgICBG
TEFHX1BSRUZJWCArIHInb3V0cHV0PS4qJyArCi0gICAgRkxBR19QUkVGSVggKyByJ2JyZWFrX29u
X2ZhaWx1cmUuKicgKwotICAgIEZMQUdfUFJFRklYICsgcid0aHJvd19vbl9mYWlsdXJlLionICsK
LSAgICBGTEFHX1BSRUZJWCArIHInY2F0Y2hfZXhjZXB0aW9ucz0wLionLAotICAgIHJlLkRPVEFM
TCkKLQotCi1kZWYgUnVuV2l0aEZsYWcoZmxhZyk6Ci0gICIiIlJ1bnMgZ3Rlc3RfaGVscF90ZXN0
XyB3aXRoIHRoZSBnaXZlbiBmbGFnLgotCi0gIFJldHVybnM6Ci0gICAgdGhlIGV4aXQgY29kZSBh
bmQgdGhlIHRleHQgb3V0cHV0IGFzIGEgdHVwbGUuCi0gIEFyZ3M6Ci0gICAgZmxhZzogdGhlIGNv
bW1hbmQtbGluZSBmbGFnIHRvIHBhc3MgdG8gZ3Rlc3RfaGVscF90ZXN0Xywgb3IgTm9uZS4KLSAg
IiIiCi0KLSAgaWYgZmxhZyBpcyBOb25lOgotICAgIGNvbW1hbmQgPSBbUFJPR1JBTV9QQVRIXQot
ICBlbHNlOgotICAgIGNvbW1hbmQgPSBbUFJPR1JBTV9QQVRILCBmbGFnXQotICBjaGlsZCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5kKQotICByZXR1cm4gY2hpbGQuZXhpdF9j
b2RlLCBjaGlsZC5vdXRwdXQKLQotCi1jbGFzcyBHVGVzdEhlbHBUZXN0KGd0ZXN0X3Rlc3RfdXRp
bHMuVGVzdENhc2UpOgotICAiIiJUZXN0cyB0aGUgLS1oZWxwIGZsYWcgYW5kIGl0cyBlcXVpdmFs
ZW50IGZvcm1zLiIiIgotCi0gIGRlZiBUZXN0SGVscEZsYWcoc2VsZiwgZmxhZyk6Ci0gICAgIiIi
VmVyaWZpZXMgY29ycmVjdCBiZWhhdmlvciB3aGVuIGhlbHAgZmxhZyBpcyBzcGVjaWZpZWQuCi0K
LSAgICBUaGUgcmlnaHQgbWVzc2FnZSBtdXN0IGJlIHByaW50ZWQgYW5kIHRoZSB0ZXN0cyBtdXN0
Ci0gICAgc2tpcHBlZCB3aGVuIHRoZSBnaXZlbiBmbGFnIGlzIHNwZWNpZmllZC4KLQotICAgIEFy
Z3M6Ci0gICAgICBmbGFnOiAgQSBmbGFnIHRvIHBhc3MgdG8gdGhlIGJpbmFyeSBvciBOb25lLgot
ICAgICIiIgotCi0gICAgZXhpdF9jb2RlLCBvdXRwdXQgPSBSdW5XaXRoRmxhZyhmbGFnKQotICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGV4aXRfY29kZSkKLSAgICBzZWxmLmFzc2VydF8oSEVMUF9S
RUdFWC5zZWFyY2gob3V0cHV0KSwgb3V0cHV0KQotCi0gICAgaWYgSVNfTElOVVg6Ci0gICAgICBz
ZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VMVF9UT19GTEFHIGluIG91dHB1dCwgb3V0cHV0KQotICAg
IGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8oU1RSRUFNX1JFU1VMVF9UT19GTEFHIG5vdCBpbiBv
dXRwdXQsIG91dHB1dCkKLQotICAgIGlmIFNVUFBPUlRTX0RFQVRIX1RFU1RTIGFuZCBub3QgSVNf
V0lORE9XUzoKLSAgICAgIHNlbGYuYXNzZXJ0XyhERUFUSF9URVNUX1NUWUxFX0ZMQUcgaW4gb3V0
cHV0LCBvdXRwdXQpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhERUFUSF9URVNUX1NU
WUxFX0ZMQUcgbm90IGluIG91dHB1dCwgb3V0cHV0KQotCi0gIGRlZiBUZXN0Tm9uSGVscEZsYWco
c2VsZiwgZmxhZyk6Ci0gICAgIiIiVmVyaWZpZXMgY29ycmVjdCBiZWhhdmlvciB3aGVuIG5vIGhl
bHAgZmxhZyBpcyBzcGVjaWZpZWQuCi0KLSAgICBWZXJpZmllcyB0aGF0IHdoZW4gbm8gaGVscCBm
bGFnIGlzIHNwZWNpZmllZCwgdGhlIHRlc3RzIGFyZSBydW4KLSAgICBhbmQgdGhlIGhlbHAgbWVz
c2FnZSBpcyBub3QgcHJpbnRlZC4KLQotICAgIEFyZ3M6Ci0gICAgICBmbGFnOiAgQSBmbGFnIHRv
IHBhc3MgdG8gdGhlIGJpbmFyeSBvciBOb25lLgotICAgICIiIgotCi0gICAgZXhpdF9jb2RlLCBv
dXRwdXQgPSBSdW5XaXRoRmxhZyhmbGFnKQotICAgIHNlbGYuYXNzZXJ0XyhleGl0X2NvZGUgIT0g
MCkKLSAgICBzZWxmLmFzc2VydF8obm90IEhFTFBfUkVHRVguc2VhcmNoKG91dHB1dCksIG91dHB1
dCkKLQotICBkZWYgdGVzdFByaW50c0hlbHBXaXRoRnVsbEZsYWcoc2VsZik6Ci0gICAgc2VsZi5U
ZXN0SGVscEZsYWcoJy0taGVscCcpCi0KLSAgZGVmIHRlc3RQcmludHNIZWxwV2l0aFNob3J0Rmxh
ZyhzZWxmKToKLSAgICBzZWxmLlRlc3RIZWxwRmxhZygnLWgnKQotCi0gIGRlZiB0ZXN0UHJpbnRz
SGVscFdpdGhRdWVzdGlvbkZsYWcoc2VsZik6Ci0gICAgc2VsZi5UZXN0SGVscEZsYWcoJy0/JykK
LQotICBkZWYgdGVzdFByaW50c0hlbHBXaXRoV2luZG93c1N0eWxlUXVlc3Rpb25GbGFnKHNlbGYp
OgotICAgIHNlbGYuVGVzdEhlbHBGbGFnKCcvPycpCi0KLSAgZGVmIHRlc3RQcmludHNIZWxwV2l0
aFVucmVjb2duaXplZEdvb2dsZVRlc3RGbGFnKHNlbGYpOgotICAgIHNlbGYuVGVzdEhlbHBGbGFn
KFVOS05PV05fRkxBRykKLQotICBkZWYgdGVzdFByaW50c0hlbHBXaXRoSW5jb3JyZWN0RmxhZ1N0
eWxlKHNlbGYpOgotICAgIGZvciBpbmNvcnJlY3RfZmxhZyBpbiBJTkNPUlJFQ1RfRkxBR19WQVJJ
QU5UUzoKLSAgICAgIHNlbGYuVGVzdEhlbHBGbGFnKGluY29ycmVjdF9mbGFnKQotCi0gIGRlZiB0
ZXN0UnVuc1Rlc3RzV2l0aG91dEhlbHBGbGFnKHNlbGYpOgotICAgICIiIlZlcmlmaWVzIHRoYXQg
d2hlbiBubyBoZWxwIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGUgdGVzdHMgYXJlIHJ1bgotICAgIGFu
ZCB0aGUgaGVscCBtZXNzYWdlIGlzIG5vdCBwcmludGVkLiIiIgotCi0gICAgc2VsZi5UZXN0Tm9u
SGVscEZsYWcoTm9uZSkKLQotICBkZWYgdGVzdFJ1bnNUZXN0c1dpdGhHdGVzdEludGVybmFsRmxh
ZyhzZWxmKToKLSAgICAiIiJWZXJpZmllcyB0aGF0IHRoZSB0ZXN0cyBhcmUgcnVuIGFuZCBubyBo
ZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aGVuCi0gICAgYSBmbGFnIHN0YXJ0aW5nIHdpdGggR29v
Z2xlIFRlc3QgcHJlZml4IGFuZCAnaW50ZXJuYWxfJyBpcyBzdXBwbGllZC4iIiIKLQotICAgIHNl
bGYuVGVzdE5vbkhlbHBGbGFnKElOVEVSTkFMX0ZMQUdfRk9SX1RFU1RJTkcpCi0KLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3RfaGVscF90ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFm
NzhjMjQ0MWJlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9oZWxw
X3Rlc3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDksIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5j
b20gKFpoYW55b25nIFdhbikKLQotLy8gVGhpcyBwcm9ncmFtIGlzIG1lYW50IHRvIGJlIHJ1biBi
eSBndGVzdF9oZWxwX3Rlc3QucHkuICBEbyBub3QgcnVuCi0vLyBpdCBkaXJlY3RseS4KLQotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLS8vIFdoZW4gYSBoZWxwIGZsYWcgaXMgc3BlY2lmaWVk
LCB0aGlzIHByb2dyYW0gc2hvdWxkIHNraXAgdGhlIHRlc3RzCi0vLyBhbmQgZXhpdCB3aXRoIDA7
IG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIHRlc3Qgd2lsbCBiZSBleGVjdXRlZCwKLS8vIGNhdXNp
bmcgdGhpcyBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCi1URVNUKEhlbHBG
bGFnVGVzdCwgU2hvdWxkTm90QmVSdW4pIHsKLSAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8ICJUZXN0
cyBzaG91bGRuJ3QgYmUgcnVuIHdoZW4gLS1oZWxwIGlzIHNwZWNpZmllZC4iOwotfQotCi0jaWYg
R1RFU1RfSEFTX0RFQVRIX1RFU1QKLVRFU1QoRGVhdGhUZXN0LCBVc2VkQnlQeXRob25TY3JpcHRU
b0RldGVjdFN1cHBvcnRGb3JEZWF0aFRlc3RzSW5UaGlzQmluYXJ5KSB7fQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IGYyZDJmZDFiMWM1ZC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29n
bGV0ZXN0L3Rlc3QvZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDIwNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIw
MDYsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0iIiJVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgLS1ndGVzdF9saXN0X3Rlc3RzIGZs
YWcuCi0KLUEgdXNlciBjYW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIGJ5IHNw
ZWNpZnlpbmcgdGhlCi0tLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZy4gIFRoaXMgc2NyaXB0IHRlc3Rz
IHN1Y2ggZnVuY3Rpb25hbGl0eQotYnkgaW52b2tpbmcgZ3Rlc3RfbGlzdF90ZXN0c191bml0dGVz
dF8gKGEgcHJvZ3JhbSB3cml0dGVuIHdpdGgKLUdvb2dsZSBUZXN0KSB0aGUgY29tbWFuZCBsaW5l
IGZsYWdzLgotIiIiCi0KLV9fYXV0aG9yX18gPSAncGhhbm5hQGdvb2dsZS5jb20gKFBhdHJpY2sg
SGFubmEpJwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotaW1wb3J0IHJlCi0KLQotIyBDb25z
dGFudHMuCi0KLSMgVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciBlbmFibGluZy9kaXNhYmxpbmcg
bGlzdGluZyBhbGwgdGVzdHMuCi1MSVNUX1RFU1RTX0ZMQUcgPSAnZ3Rlc3RfbGlzdF90ZXN0cycK
LQotIyBQYXRoIHRvIHRoZSBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0XyBwcm9ncmFtLgotRVhF
X1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfbGlz
dF90ZXN0c191bml0dGVzdF8nKQotCi0jIFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5uaW5n
IGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfIHdpdGgKLSMgLS1ndGVzdF9saXN0X3Rlc3RzCi1F
WFBFQ1RFRF9PVVRQVVRfTk9fRklMVEVSX1JFID0gcmUuY29tcGlsZShyIiIiRm9vRGVhdGhUZXN0
XC4KLSAgVGVzdDEKLUZvb1wuCi0gIEJhcjEKLSAgQmFyMgotICBESVNBQkxFRF9CYXIzCi1BYmNc
LgotICBYeXoKLSAgRGVmCi1Gb29CYXJcLgotICBCYXoKLUZvb1Rlc3RcLgotICBUZXN0MQotICBE
SVNBQkxFRF9UZXN0MgotICBUZXN0MwotVHlwZWRUZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAoVmVy
eUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCi0gIFRlc3RBCi0gIFRlc3RCCi1UeXBl
ZFRlc3QvMVwuICAjIFR5cGVQYXJhbSA9IGludFxzKlwqKCBfX3B0cjY0KT8KLSAgVGVzdEEKLSAg
VGVzdEIKLVR5cGVkVGVzdC8yXC4gICMgVHlwZVBhcmFtID0gLipNeUFycmF5PGJvb2wsXHMqNDI+
Ci0gIFRlc3RBCi0gIFRlc3RCCi1NeS9UeXBlUGFyYW1UZXN0LzBcLiAgIyBUeXBlUGFyYW0gPSAo
VmVyeUxvezI0NX18Y2xhc3MgVmVyeUxvezIzOX0pXC5cLlwuCi0gIFRlc3RBCi0gIFRlc3RCCi1N
eS9UeXBlUGFyYW1UZXN0LzFcLiAgIyBUeXBlUGFyYW0gPSBpbnRccypcKiggX19wdHI2NCk/Ci0g
IFRlc3RBCi0gIFRlc3RCCi1NeS9UeXBlUGFyYW1UZXN0LzJcLiAgIyBUeXBlUGFyYW0gPSAuKk15
QXJyYXk8Ym9vbCxccyo0Mj4KLSAgVGVzdEEKLSAgVGVzdEIKLU15SW5zdGFudGlhdGlvbi9WYWx1
ZVBhcmFtVGVzdFwuCi0gIFRlc3RBLzAgICMgR2V0UGFyYW1cKFwpID0gb25lIGxpbmUKLSAgVGVz
dEEvMSAgIyBHZXRQYXJhbVwoXCkgPSB0d29cXG5saW5lcwotICBUZXN0QS8yICAjIEdldFBhcmFt
XChcKSA9IGEgdmVyeVxcbmxvezI0MX1cLlwuXC4KLSAgVGVzdEIvMCAgIyBHZXRQYXJhbVwoXCkg
PSBvbmUgbGluZQotICBUZXN0Qi8xICAjIEdldFBhcmFtXChcKSA9IHR3b1xcbmxpbmVzCi0gIFRl
c3RCLzIgICMgR2V0UGFyYW1cKFwpID0gYSB2ZXJ5XFxubG97MjQxfVwuXC5cLgotIiIiKQotCi0j
IFRoZSBleHBlY3RlZCBvdXRwdXQgd2hlbiBydW5uaW5nIGd0ZXN0X2xpc3RfdGVzdHNfdW5pdHRl
c3RfIHdpdGgKLSMgLS1ndGVzdF9saXN0X3Rlc3RzIGFuZCAtLWd0ZXN0X2ZpbHRlcj1Gb28qLgot
RVhQRUNURURfT1VUUFVUX0ZJTFRFUl9GT09fUkUgPSByZS5jb21waWxlKHIiIiJGb29EZWF0aFRl
c3RcLgotICBUZXN0MQotRm9vXC4KLSAgQmFyMQotICBCYXIyCi0gIERJU0FCTEVEX0JhcjMKLUZv
b0JhclwuCi0gIEJhegotRm9vVGVzdFwuCi0gIFRlc3QxCi0gIERJU0FCTEVEX1Rlc3QyCi0gIFRl
c3QzCi0iIiIpCi0KLSMgVXRpbGl0aWVzLgotCi0KLWRlZiBSdW4oYXJncyk6Ci0gICIiIlJ1bnMg
Z3Rlc3RfbGlzdF90ZXN0c191bml0dGVzdF8gYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgdGVzdHMg
cHJpbnRlZC4iIiIKLQotICByZXR1cm4gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKFtFWEVf
UEFUSF0gKyBhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1
cmVfc3RkZXJyPUZhbHNlKS5vdXRwdXQKLQotCi0jIFRoZSB1bml0IHRlc3QuCi0KLWNsYXNzIEdU
ZXN0TGlzdFRlc3RzVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRl
c3RzIHVzaW5nIHRoZSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB0byBsaXN0IGFsbCB0ZXN0cy4i
IiIKLQotICBkZWYgUnVuQW5kVmVyaWZ5KHNlbGYsIGZsYWdfdmFsdWUsIGV4cGVjdGVkX291dHB1
dF9yZSwgb3RoZXJfZmxhZyk6Ci0gICAgIiIiUnVucyBndGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0
XyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBwcmludHMKLSAgICB0aGUgY29ycmVjdCB0ZXN0cy4KLQot
ICAgIEFyZ3M6Ci0gICAgICBmbGFnX3ZhbHVlOiAgICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0
X2xpc3RfdGVzdHMgZmxhZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiB0aGUg
ZmxhZyBzaG91bGQgbm90IGJlIHByZXNlbnQuCi0gICAgICBleHBlY3RlZF9vdXRwdXRfcmU6IHJl
Z3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCBhZnRlciBydW5uaW5nIGNvbW1hbmQ7Ci0gICAgICBvdGhlcl9m
bGFnOiAgICAgICAgIGEgZGlmZmVyZW50IGZsYWcgdG8gYmUgcGFzc2VkIHRvIGNvbW1hbmQKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBndGVzdF9saXN0X3Rlc3RzOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHRoZSBmbGFnIHNob3VsZCBub3QgYmUgcHJl
c2VudC4KLSAgICAiIiIKLQotICAgIGlmIGZsYWdfdmFsdWUgaXMgTm9uZToKLSAgICAgIGZsYWcg
PSAnJwotICAgICAgZmxhZ19leHByZXNzaW9uID0gJ25vdCBzZXQnCi0gICAgZWxpZiBmbGFnX3Zh
bHVlID09ICcwJzoKLSAgICAgIGZsYWcgPSAnLS0lcz0wJyAlIExJU1RfVEVTVFNfRkxBRwotICAg
ICAgZmxhZ19leHByZXNzaW9uID0gJzAnCi0gICAgZWxzZToKLSAgICAgIGZsYWcgPSAnLS0lcycg
JSBMSVNUX1RFU1RTX0ZMQUcKLSAgICAgIGZsYWdfZXhwcmVzc2lvbiA9ICcxJwotCi0gICAgYXJn
cyA9IFtmbGFnXQotCi0gICAgaWYgb3RoZXJfZmxhZyBpcyBub3QgTm9uZToKLSAgICAgIGFyZ3Mg
Kz0gW290aGVyX2ZsYWddCi0KLSAgICBvdXRwdXQgPSBSdW4oYXJncykKLQotICAgIGlmIGV4cGVj
dGVkX291dHB1dF9yZToKLSAgICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgICBleHBlY3RlZF9v
dXRwdXRfcmUubWF0Y2gob3V0cHV0KSwKLSAgICAgICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBv
dXRwdXQgb2YgIiVzIiBpcyAiJXMiLFxuJwotICAgICAgICAgICAnd2hpY2ggZG9lcyBub3QgbWF0
Y2ggcmVnZXggIiVzIicgJQotICAgICAgICAgICAoTElTVF9URVNUU19GTEFHLCBmbGFnX2V4cHJl
c3Npb24sICcgJy5qb2luKGFyZ3MpLCBvdXRwdXQsCi0gICAgICAgICAgICBleHBlY3RlZF9vdXRw
dXRfcmUucGF0dGVybikpKQotICAgIGVsc2U6Ci0gICAgICBzZWxmLmFzc2VydF8oCi0gICAgICAg
ICAgbm90IEVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUubWF0Y2gob3V0cHV0KSwKLSAgICAg
ICAgICAoJ3doZW4gJXMgaXMgJXMsIHRoZSBvdXRwdXQgb2YgIiVzIiBpcyAiJXMiJyUKLSAgICAg
ICAgICAgKExJU1RfVEVTVFNfRkxBRywgZmxhZ19leHByZXNzaW9uLCAnICcuam9pbihhcmdzKSwg
b3V0cHV0KSkpCi0KLSAgZGVmIHRlc3REZWZhdWx0QmVoYXZpb3Ioc2VsZik6Ci0gICAgIiIiVGVz
dHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IG1vZGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFu
ZFZlcmlmeShmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
b3V0cHV0X3JlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgb3RoZXJfZmxhZz1Ob25lKQot
Ci0gIGRlZiB0ZXN0RmxhZyhzZWxmKToKLSAgICAiIiJUZXN0cyB1c2luZyB0aGUgLS1ndGVzdF9s
aXN0X3Rlc3RzIGZsYWcuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScw
JywKLSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPU5vbmUpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3Jl
PUVYUEVDVEVEX09VVFBVVF9OT19GSUxURVJfUkUsCi0gICAgICAgICAgICAgICAgICAgICAgb3Ro
ZXJfZmxhZz1Ob25lKQotCi0gIGRlZiB0ZXN0T3ZlcnJpZGVOb25GaWx0ZXJGbGFncyhzZWxmKToK
LSAgICAiIiJUZXN0cyB0aGF0IC0tZ3Rlc3RfbGlzdF90ZXN0cyBvdmVycmlkZXMgdGhlIG5vbi1m
aWx0ZXIgZmxhZ3MuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShmbGFnX3ZhbHVlPScxJywK
LSAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXRfcmU9RVhQRUNURURfT1VUUFVU
X05PX0ZJTFRFUl9SRSwKLSAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9mbGFnPSctLWd0ZXN0
X2JyZWFrX29uX2ZhaWx1cmUnKQotCi0gIGRlZiB0ZXN0V2l0aEZpbHRlckZsYWdzKHNlbGYpOgot
ICAgICIiIlRlc3RzIHRoYXQgLS1ndGVzdF9saXN0X3Rlc3RzIHRha2VzIGludG8gYWNjb3VudCB0
aGUKLSAgICAtLWd0ZXN0X2ZpbHRlciBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnko
ZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0X3Jl
PUVYUEVDVEVEX09VVFBVVF9GSUxURVJfRk9PX1JFLAotICAgICAgICAgICAgICAgICAgICAgIG90
aGVyX2ZsYWc9Jy0tZ3Rlc3RfZmlsdGVyPUZvbyonKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC90ZXN0L2d0ZXN0X2xpc3RfdGVzdHNfdW5pdHRlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTA3YzE3NmJhOTU1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF9saXN0X3Rlc3RzX3VuaXR0ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDE1NyArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8v
IGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0v
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0
aG9yOiBwaGFubmFAZ29vZ2xlLmNvbSAoUGF0cmljayBIYW5uYSkKLQotLy8gVW5pdCB0ZXN0IGZv
ciBHb29nbGUgVGVzdCdzIC0tZ3Rlc3RfbGlzdF90ZXN0cyBmbGFnLgotLy8KLS8vIEEgdXNlciBj
YW4gYXNrIEdvb2dsZSBUZXN0IHRvIGxpc3QgYWxsIHRlc3RzIHRoYXQgd2lsbCBydW4KLS8vIHNv
IHRoYXQgd2hlbiB1c2luZyBhIGZpbHRlciwgYSB1c2VyIHdpbGwga25vdyB3aGF0Ci0vLyB0ZXN0
cyB0byBsb29rIGZvci4gVGhlIHRlc3RzIHdpbGwgbm90IGJlIHJ1biBhZnRlciBsaXN0aW5nLgot
Ly8KLS8vIFRoaXMgcHJvZ3JhbSB3aWxsIGJlIGludm9rZWQgZnJvbSBhIFB5dGhvbiB1bml0IHRl
c3QuCi0vLyBEb24ndCBydW4gaXQgZGlyZWN0bHkuCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi0vLyBTZXZlcmFsIGRpZmZlcmVudCB0ZXN0IGNhc2VzIGFuZCB0ZXN0cyB0aGF0IHdpbGwg
YmUgbGlzdGVkLgotVEVTVChGb28sIEJhcjEpIHsKLX0KLQotVEVTVChGb28sIEJhcjIpIHsKLX0K
LQotVEVTVChGb28sIERJU0FCTEVEX0JhcjMpIHsKLX0KLQotVEVTVChBYmMsIFh5eikgewotfQot
Ci1URVNUKEFiYywgRGVmKSB7Ci19Ci0KLVRFU1QoRm9vQmFyLCBCYXopIHsKLX0KLQotY2xhc3Mg
Rm9vVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihGb29UZXN0LCBU
ZXN0MSkgewotfQotCi1URVNUX0YoRm9vVGVzdCwgRElTQUJMRURfVGVzdDIpIHsKLX0KLQotVEVT
VF9GKEZvb1Rlc3QsIFRlc3QzKSB7Ci19Ci0KLVRFU1QoRm9vRGVhdGhUZXN0LCBUZXN0MSkgewot
fQotCi0vLyBBIGdyb3VwIG9mIHZhbHVlLXBhcmFtZXRlcml6ZWQgdGVzdHMuCi0KLWNsYXNzIE15
VHlwZSB7Ci0gcHVibGljOgotICBleHBsaWNpdCBNeVR5cGUoY29uc3Qgc3RkOjpzdHJpbmcmIGFf
dmFsdWUpIDogdmFsdWVfKGFfdmFsdWUpIHt9Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0KLSBwcml2YXRlOgotICBzdGQ6OnN0cmluZyB2
YWx1ZV87Ci19OwotCi0vLyBUZWFjaGVzIEdvb2dsZSBUZXN0IGhvdyB0byBwcmludCBhIE15VHlw
ZS4KLXZvaWQgUHJpbnRUbyhjb25zdCBNeVR5cGUmIHgsIHN0ZDo6b3N0cmVhbSogb3MpIHsKLSAg
Km9zIDw8IHgudmFsdWUoKTsKLX0KLQotY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdFdpdGhQYXJhbTxNeVR5cGU+IHsKLX07Ci0KLVRFU1RfUChWYWx1ZVBhcmFtVGVz
dCwgVGVzdEEpIHsKLX0KLQotVEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBUZXN0QikgewotfQotCi1J
TlNUQU5USUFURV9URVNUX0NBU0VfUCgKLSAgICBNeUluc3RhbnRpYXRpb24sIFZhbHVlUGFyYW1U
ZXN0LAotICAgIHRlc3Rpbmc6OlZhbHVlcyhNeVR5cGUoIm9uZSBsaW5lIiksCi0gICAgICAgICAg
ICAgICAgICAgIE15VHlwZSgidHdvXG5saW5lcyIpLAotICAgICAgICAgICAgICAgICAgICBNeVR5
cGUoImEgdmVyeVxubG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZyBsaW5lIikpKTsgIC8vIE5PTElO
VAotCi0vLyBBIGdyb3VwIG9mIHR5cGVkIHRlc3RzLgotCi0vLyBBIGRlbGliZXJhdGVseSBsb25n
IHR5cGUgbmFtZSBmb3IgdGVzdGluZyB0aGUgbGluZS10cnVuY2F0aW5nCi0vLyBiZWhhdmlvciB3
aGVuIHByaW50aW5nIGEgdHlwZSBwYXJhbWV0ZXIuCi1jbGFzcyBWZXJ5TG9vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29nTmFtZSB7ICAvLyBOT0xJTlQKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgVHlwZWRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIGludCBrU2l6ZT4KLWNsYXNzIE15QXJyYXkgewotfTsKLQotdHlwZWRlZiB0
ZXN0aW5nOjpUeXBlczxWZXJ5TG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29nTmFtZSwgIC8vIE5PTElO
VAotICAgICAgICAgICAgICAgICAgICAgICBpbnQqLCBNeUFycmF5PGJvb2wsIDQyPiA+IE15VHlw
ZXM7Ci0KLVRZUEVEX1RFU1RfQ0FTRShUeXBlZFRlc3QsIE15VHlwZXMpOwotCi1UWVBFRF9URVNU
KFR5cGVkVGVzdCwgVGVzdEEpIHsKLX0KLQotVFlQRURfVEVTVChUeXBlZFRlc3QsIFRlc3RCKSB7
Ci19Ci0KLS8vIEEgZ3JvdXAgb2YgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVQYXJhbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1UZXN0KTsKLQotVFlQRURfVEVT
VF9QKFR5cGVQYXJhbVRlc3QsIFRlc3RBKSB7Ci19Ci0KLVRZUEVEX1RFU1RfUChUeXBlUGFyYW1U
ZXN0LCBUZXN0QikgewotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NBU0VfUChUeXBlUGFyYW1U
ZXN0LCBUZXN0QSwgVGVzdEIpOwotCi1JTlNUQU5USUFURV9UWVBFRF9URVNUX0NBU0VfUChNeSwg
VHlwZVBhcmFtVGVzdCwgTXlUeXBlcyk7Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn
dikgewotICA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF9tYWluX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9tYWluX3VuaXR0ZXN0
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Q5YmI4NzZmZjcuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X21haW5fdW5pdHRlc3QuY2MKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4K
LS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2Fu
KQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gVGVzdHMgdGhhdCB3ZSBkb24ndCBo
YXZlIHRvIGRlZmluZSBtYWluKCkgd2hlbiB3ZSBsaW5rIHRvCi0vLyBndGVzdF9tYWluIGluc3Rl
YWQgb2YgZ3Rlc3QuCi0KLW5hbWVzcGFjZSB7Ci0KLVRFU1QoR1Rlc3RNYWluVGVzdCwgU2hvdWxk
U3VjY2VlZCkgewotfQotCi19ICAvLyBuYW1lc3BhY2UKLQotLy8gV2UgYXJlIHVzaW5nIHRoZSBt
YWluKCkgZnVuY3Rpb24gZGVmaW5lZCBpbiBzcmMvZ3Rlc3RfbWFpbi5jYywgc28KLS8vIHdlIGRv
bid0IGRlZmluZSBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9u
b190ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9ub190ZXN0X3VuaXR0
ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTI1OTlhZjhkMDguLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X25vX3Rlc3RfdW5pdHRlc3QuY2MK
KysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLS8vIFRlc3RzIHRoYXQgYSBHb29nbGUgVGVzdCBwcm9ncmFt
IHRoYXQgaGFzIG5vIHRlc3QgZGVmaW5lZCBjYW4gcnVuCi0vLyBzdWNjZXNzZnVsbHkuCi0vLwot
Ly8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7Ci0gIHRlc3Rp
bmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBBbiBhZC1ob2MgYXNzZXJ0
aW9uIG91dHNpZGUgb2YgYWxsIHRlc3RzLgotICAvLwotICAvLyBUaGlzIHNlcnZlcyB0aHJlZSBw
dXJwb3NlczoKLSAgLy8KLSAgLy8gMS4gSXQgdmVyaWZpZXMgdGhhdCBhbiBhZC1ob2MgYXNzZXJ0
aW9uIGNhbiBiZSBleGVjdXRlZCBldmVuIGlmCi0gIC8vICAgIG5vIHRlc3QgaXMgZGVmaW5lZC4K
LSAgLy8gMi4gSXQgdmVyaWZpZXMgdGhhdCBhIGZhaWxlZCBhZC1ob2MgYXNzZXJ0aW9uIGNhdXNl
cyB0aGUgdGVzdAotICAvLyAgICBwcm9ncmFtIHRvIGZhaWwuCi0gIC8vIDMuIFdlIGhhZCBhIGJ1
ZyB3aGVyZSB0aGUgWE1MIG91dHB1dCB3b24ndCBiZSBnZW5lcmF0ZWQgaWYgYW4KLSAgLy8gICAg
YXNzZXJ0aW9uIGlzIGV4ZWN1dGVkIGJlZm9yZSBSVU5fQUxMX1RFU1RTKCkgaXMgY2FsbGVkLCBl
dmVuCi0gIC8vICAgIHRob3VnaCAtLWd0ZXN0X291dHB1dD14bWwgaXMgc3BlY2lmaWVkLiAgVGhp
cyBtYWtlcyBzdXJlIHRoZQotICAvLyAgICBidWcgaXMgZml4ZWQgYW5kIGRvZXNuJ3QgcmVncmVz
cy4KLSAgRVhQRUNUX0VRKDEsIDIpOwotCi0gIC8vIFRoZSBhYm92ZSBFWFBFQ1RfRVEoKSBzaG91
bGQgY2F1c2UgUlVOX0FMTF9URVNUUygpIHRvIHJldHVybiBub24temVyby4KLSAgcmV0dXJuIFJV
Tl9BTExfVEVTVFMoKSA/IDAgOiAxOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9n
dGVzdF9vdXRwdXRfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3Qu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA2ZGJlZTA5ODA1MC4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwzNDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHly
aWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotIiIiVGVzdHMgdGhlIHRleHQgb3V0cHV0IG9mIEdvb2dsZSBDKysgVGVzdGlu
ZyBGcmFtZXdvcmsuCi0KLVNZTk9QU0lTCi0gICAgICAgZ3Rlc3Rfb3V0cHV0X3Rlc3QucHkgLS1i
dWlsZF9kaXI9QlVJTEQvRElSIC0tZ2VuZ29sZGVuCi0gICAgICAgICAjIHdoZXJlIEJVSUxEL0RJ
UiBjb250YWlucyB0aGUgYnVpbHQgZ3Rlc3Rfb3V0cHV0X3Rlc3RfIGZpbGUuCi0gICAgICAgZ3Rl
c3Rfb3V0cHV0X3Rlc3QucHkgLS1nZW5nb2xkZW4KLSAgICAgICBndGVzdF9vdXRwdXRfdGVzdC5w
eQotIiIiCi0KLV9fYXV0aG9yX18gPSAnd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbiknCi0K
LWltcG9ydCBkaWZmbGliCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0
IGd0ZXN0X3Rlc3RfdXRpbHMKLQotCi0jIFRoZSBmbGFnIGZvciBnZW5lcmF0aW5nIHRoZSBnb2xk
ZW4gZmlsZQotR0VOR09MREVOX0ZMQUcgPSAnLS1nZW5nb2xkZW4nCi1DQVRDSF9FWENFUFRJT05T
X0VOVl9WQVJfTkFNRSA9ICdHVEVTVF9DQVRDSF9FWENFUFRJT05TJwotCi1JU19XSU5ET1dTID0g
b3MubmFtZSA9PSAnbnQnCi0KLSMgVE9ETyh2bGFkbEBnb29nbGUuY29tKTogcmVtb3ZlIHRoZSBf
bGluIHN1ZmZpeC4KLUdPTERFTl9OQU1FID0gJ2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4u
dHh0JwotCi1QUk9HUkFNX1BBVEggPSBndGVzdF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxl
UGF0aCgnZ3Rlc3Rfb3V0cHV0X3Rlc3RfJykKLQotIyBBdCBsZWFzdCBvbmUgY29tbWFuZCB3ZSBl
eGVyY2lzZSBtdXN0IG5vdCBoYXZlIHRoZQotIyAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9h
bmRfYWRfaG9jX3Rlc3RzJyBhcmd1bWVudC4KLUNPTU1BTkRfTElTVF9URVNUUyA9ICh7fSwgW1BS
T0dSQU1fUEFUSCwgJy0tZ3Rlc3RfbGlzdF90ZXN0cyddKQotQ09NTUFORF9XSVRIX0NPTE9SID0g
KHt9LCBbUFJPR1JBTV9QQVRILCAnLS1ndGVzdF9jb2xvcj15ZXMnXSkKLUNPTU1BTkRfV0lUSF9U
SU1FID0gKHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1n
dGVzdF9wcmludF90aW1lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsX3Nr
aXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICctLWd0ZXN0X2ZpbHRlcj1GYXRhbEZhaWx1cmVUZXN0Lio6TG9nZ2luZ1Rlc3QuKiddKQot
Q09NTUFORF9XSVRIX0RJU0FCTEVEID0gKAotICAgIHt9LCBbUFJPR1JBTV9QQVRILAotICAgICAg
ICAgJy0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMnLAotICAgICAgICAgJ2ludGVybmFs
X3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cycsCi0gICAgICAgICAnLS1ndGVzdF9m
aWx0ZXI9KkRJU0FCTEVEXyonXSkKLUNPTU1BTkRfV0lUSF9TSEFSRElORyA9ICgKLSAgICB7J0dU
RVNUX1NIQVJEX0lOREVYJzogJzEnLCAnR1RFU1RfVE9UQUxfU0hBUkRTJzogJzInfSwKLSAgICBb
UFJPR1JBTV9QQVRILAotICAgICAnaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9j
X3Rlc3RzJywKLSAgICAgJy0tZ3Rlc3RfZmlsdGVyPVBhc3NpbmdUZXN0LionXSkKLQotR09MREVO
X1BBVEggPSBvcy5wYXRoLmpvaW4oZ3Rlc3RfdGVzdF91dGlscy5HZXRTb3VyY2VEaXIoKSwgR09M
REVOX05BTUUpCi0KLQotZGVmIFRvVW5peExpbmVFbmRpbmcocyk6Ci0gICIiIkNoYW5nZXMgYWxs
IFdpbmRvd3MvTWFjIGxpbmUgZW5kaW5ncyBpbiBzIHRvIFVOSVggbGluZSBlbmRpbmdzLiIiIgot
Ci0gIHJldHVybiBzLnJlcGxhY2UoJ1xyXG4nLCAnXG4nKS5yZXBsYWNlKCdccicsICdcbicpCi0K
LQotZGVmIFJlbW92ZUxvY2F0aW9ucyh0ZXN0X291dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIGZp
bGUgbG9jYXRpb24gaW5mbyBmcm9tIGEgR29vZ2xlIFRlc3QgcHJvZ3JhbSdzIG91dHB1dC4KLQot
ICBBcmdzOgotICAgICAgIHRlc3Rfb3V0cHV0OiAgdGhlIG91dHB1dCBvZiBhIEdvb2dsZSBUZXN0
IHByb2dyYW0uCi0KLSAgUmV0dXJuczoKLSAgICAgICBvdXRwdXQgd2l0aCBhbGwgZmlsZSBsb2Nh
dGlvbiBpbmZvIChpbiB0aGUgZm9ybSBvZgotICAgICAgICdESVJFQ1RPUlkvRklMRV9OQU1FOkxJ
TkVfTlVNQkVSOiAnb3IKLSAgICAgICAnRElSRUNUT1JZXFxGSUxFX05BTUUoTElORV9OVU1CRVIp
OiAnKSByZXBsYWNlZCBieQotICAgICAgICdGSUxFX05BTUU6IzogJy4KLSAgIiIiCi0KLSAgcmV0
dXJuIHJlLnN1YihyJy4qWy9cXF0oLispKFw6XGQrfFwoXGQrXCkpXDogJywgcidcMTojOiAnLCB0
ZXN0X291dHB1dCkKLQotCi1kZWYgUmVtb3ZlU3RhY2tUcmFjZURldGFpbHMob3V0cHV0KToKLSAg
IiIiUmVtb3ZlcyBhbGwgc3RhY2sgdHJhY2VzIGZyb20gYSBHb29nbGUgVGVzdCBwcm9ncmFtJ3Mg
b3V0cHV0LiIiIgotCi0gICMgKj8gbWVhbnMgImZpbmQgdGhlIHNob3J0ZXN0IHN0cmluZyB0aGF0
IG1hdGNoZXMiLgotICByZXR1cm4gcmUuc3ViKHInU3RhY2sgdHJhY2U6KC58XG4pKj9cblxuJywK
LSAgICAgICAgICAgICAgICAnU3RhY2sgdHJhY2U6IChvbWl0dGVkKVxuXG4nLCBvdXRwdXQpCi0K
LQotZGVmIFJlbW92ZVN0YWNrVHJhY2VzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRyYWNl
cyBvZiBzdGFjayB0cmFjZXMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIi
Ci0KLSAgIyAqPyBtZWFucyAiZmluZCB0aGUgc2hvcnRlc3Qgc3RyaW5nIHRoYXQgbWF0Y2hlcyIu
Ci0gIHJldHVybiByZS5zdWIocidTdGFjayB0cmFjZTooLnxcbikqP1xuXG4nLCAnJywgb3V0cHV0
KQotCi0KLWRlZiBSZW1vdmVUaW1lKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgYWxsIHRpbWUgaW5m
b3JtYXRpb24gZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgcmV0
dXJuIHJlLnN1YihyJ1woXGQrIG1zJywgJyg/IG1zJywgb3V0cHV0KQotCi0KLWRlZiBSZW1vdmVU
eXBlSW5mb0RldGFpbHModGVzdF9vdXRwdXQpOgotICAiIiJSZW1vdmVzIGNvbXBpbGVyLXNwZWNp
ZmljIHR5cGUgaW5mbyBmcm9tIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgQXJn
czoKLSAgICAgICB0ZXN0X291dHB1dDogIHRoZSBvdXRwdXQgb2YgYSBHb29nbGUgVGVzdCBwcm9n
cmFtLgotCi0gIFJldHVybnM6Ci0gICAgICAgb3V0cHV0IHdpdGggdHlwZSBpbmZvcm1hdGlvbiBu
b3JtYWxpemVkIHRvIGNhbm9uaWNhbCBmb3JtLgotICAiIiIKLQotICAjIHNvbWUgY29tcGlsZXJz
IG91dHB1dCB0aGUgbmFtZSBvZiB0eXBlICd1bnNpZ25lZCBpbnQnIGFzICd1bnNpZ25lZCcKLSAg
cmV0dXJuIHJlLnN1YihyJ3Vuc2lnbmVkIGludCcsICd1bnNpZ25lZCcsIHRlc3Rfb3V0cHV0KQot
Ci0KLWRlZiBOb3JtYWxpemVUb0N1cnJlbnRQbGF0Zm9ybSh0ZXN0X291dHB1dCk6Ci0gICIiIk5v
cm1hbGl6ZXMgcGxhdGZvcm0gc3BlY2lmaWMgb3V0cHV0IGRldGFpbHMgZm9yIGVhc2llciBjb21w
YXJpc29uLiIiIgotCi0gIGlmIElTX1dJTkRPV1M6Ci0gICAgIyBSZW1vdmVzIHRoZSBjb2xvciBp
bmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBwcmVzZW50IG9uIFdpbmRvd3MuCi0gICAgdGVzdF9vdXRw
dXQgPSByZS5zdWIoJ1x4MWJcXFsoMDszXGQpP20nLCAnJywgdGVzdF9vdXRwdXQpCi0gICAgIyBD
aGFuZ2VzIGZhaWx1cmUgbWVzc2FnZSBoZWFkZXJzIGludG8gdGhlIFdpbmRvd3MgZm9ybWF0Lgot
ICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInOiBGYWlsdXJlXG4nLCByJzogZXJyb3I6ICcsIHRl
c3Rfb3V0cHV0KQotICAgICMgQ2hhbmdlcyBmaWxlKGxpbmVfbnVtYmVyKSB0byBmaWxlOmxpbmVf
bnVtYmVyLgotICAgIHRlc3Rfb3V0cHV0ID0gcmUuc3ViKHInKChcd3xcLikrKVwoKFxkKylcKTon
LCByJ1wxOlwzOicsIHRlc3Rfb3V0cHV0KQotCi0gIHJldHVybiB0ZXN0X291dHB1dAotCi0KLWRl
ZiBSZW1vdmVUZXN0Q291bnRzKG91dHB1dCk6Ci0gICIiIlJlbW92ZXMgdGVzdCBjb3VudHMgZnJv
bSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuIiIiCi0KLSAgb3V0cHV0ID0gcmUuc3Vi
KHInXGQrIHRlc3RzPywgbGlzdGVkIGJlbG93JywKLSAgICAgICAgICAgICAgICAgICc/IHRlc3Rz
LCBsaXN0ZWQgYmVsb3cnLCBvdXRwdXQpCi0gIG91dHB1dCA9IHJlLnN1YihyJ1xkKyBGQUlMRUQg
VEVTVFMnLAotICAgICAgICAgICAgICAgICAgJz8gRkFJTEVEIFRFU1RTJywgb3V0cHV0KQotICBv
dXRwdXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gXGQrIHRlc3QgY2FzZXM/JywKLSAgICAg
ICAgICAgICAgICAgICc/IHRlc3RzIGZyb20gPyB0ZXN0IGNhc2VzJywgb3V0cHV0KQotICBvdXRw
dXQgPSByZS5zdWIocidcZCsgdGVzdHM/IGZyb20gKFthLXpBLVpfXSknLAotICAgICAgICAgICAg
ICAgICAgcic/IHRlc3RzIGZyb20gXDEnLCBvdXRwdXQpCi0gIHJldHVybiByZS5zdWIocidcZCsg
dGVzdHM/XC4nLCAnPyB0ZXN0cy4nLCBvdXRwdXQpCi0KLQotZGVmIFJlbW92ZU1hdGNoaW5nVGVz
dHModGVzdF9vdXRwdXQsIHBhdHRlcm4pOgotICAiIiJSZW1vdmVzIG91dHB1dCBvZiBzcGVjaWZp
ZWQgdGVzdHMgZnJvbSBhIEdvb2dsZSBUZXN0IHByb2dyYW0ncyBvdXRwdXQuCi0KLSAgVGhpcyBm
dW5jdGlvbiBzdHJpcHMgbm90IG9ubHkgdGhlIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiBhIHRl
c3QgYnV0IGFsc28KLSAgYWxsIG91dHB1dCBpbiBiZXR3ZWVuLgotCi0gIEFyZ3M6Ci0gICAgdGVz
dF9vdXRwdXQ6ICAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRlc3Qgb3V0cHV0LgotICAg
IHBhdHRlcm46ICAgICAgICAgICBBIHJlZ2V4IHN0cmluZyB0aGF0IG1hdGNoZXMgbmFtZXMgb2Yg
dGVzdCBjYXNlcyBvcgotICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0byByZW1vdmUuCi0K
LSAgUmV0dXJuczoKLSAgICBDb250ZW50cyBvZiB0ZXN0X291dHB1dCB3aXRoIHRlc3RzIHdob3Nl
IG5hbWVzIG1hdGNoIHBhdHRlcm4gcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVzdF9vdXRwdXQgPSBy
ZS5zdWIoCi0gICAgICByJy4qXFsgUlVOICAgICAgXF0gLiolcygufFxuKSo/XFsoICBGQUlMRUQg
IHwgICAgICAgT0sgKVxdIC4qJXMuKlxuJyAlICgKLSAgICAgICAgICBwYXR0ZXJuLCBwYXR0ZXJu
KSwKLSAgICAgICcnLAotICAgICAgdGVzdF9vdXRwdXQpCi0gIHJldHVybiByZS5zdWIocicuKiVz
LipcbicgJSBwYXR0ZXJuLCAnJywgdGVzdF9vdXRwdXQpCi0KLQotZGVmIE5vcm1hbGl6ZU91dHB1
dChvdXRwdXQpOgotICAiIiJOb3JtYWxpemVzIG91dHB1dCAodGhlIG91dHB1dCBvZiBndGVzdF9v
dXRwdXRfdGVzdF8uZXhlKS4iIiIKLQotICBvdXRwdXQgPSBUb1VuaXhMaW5lRW5kaW5nKG91dHB1
dCkKLSAgb3V0cHV0ID0gUmVtb3ZlTG9jYXRpb25zKG91dHB1dCkKLSAgb3V0cHV0ID0gUmVtb3Zl
U3RhY2tUcmFjZURldGFpbHMob3V0cHV0KQotICBvdXRwdXQgPSBSZW1vdmVUaW1lKG91dHB1dCkK
LSAgcmV0dXJuIG91dHB1dAotCi0KLWRlZiBHZXRTaGVsbENvbW1hbmRPdXRwdXQoZW52X2NtZCk6
Ci0gICIiIlJ1bnMgYSBjb21tYW5kIGluIGEgc3ViLXByb2Nlc3MsIGFuZCByZXR1cm5zIGl0cyBv
dXRwdXQgaW4gYSBzdHJpbmcuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiBUaGUgc2hlbGwgY29t
bWFuZC4gQSAyLXR1cGxlIHdoZXJlIGVsZW1lbnQgMCBpcyBhIGRpY3Qgb2YgZXh0cmEKLSAgICAg
ICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LCBhbmQgZWxlbWVudCAxIGlzIGEg
c3RyaW5nIHdpdGgKLSAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdzLgotCi0g
IFJldHVybnM6Ci0gICAgQSBzdHJpbmcgd2l0aCB0aGUgY29tbWFuZCdzIGNvbWJpbmVkIHN0YW5k
YXJkIGFuZCBkaWFnbm9zdGljIG91dHB1dC4KLSAgIiIiCi0KLSAgIyBTcGF3bnMgY21kIGluIGEg
c3ViLXByb2Nlc3MsIGFuZCBnZXRzIGl0cyBzdGFuZGFyZCBJL08gZmlsZSBvYmplY3RzLgotICAj
IFNldCBhbmQgc2F2ZSB0aGUgZW52aXJvbm1lbnQgcHJvcGVybHkuCi0gIGVudmlyb24gPSBvcy5l
bnZpcm9uLmNvcHkoKQotICBlbnZpcm9uLnVwZGF0ZShlbnZfY21kWzBdKQotICBwID0gZ3Rlc3Rf
dGVzdF91dGlscy5TdWJwcm9jZXNzKGVudl9jbWRbMV0sIGVudj1lbnZpcm9uKQotCi0gIHJldHVy
biBwLm91dHB1dAotCi0KLWRlZiBHZXRDb21tYW5kT3V0cHV0KGVudl9jbWQpOgotICAiIiJSdW5z
IGEgY29tbWFuZCBhbmQgcmV0dXJucyBpdHMgb3V0cHV0IHdpdGggYWxsIGZpbGUgbG9jYXRpb24K
LSAgaW5mbyBzdHJpcHBlZCBvZmYuCi0KLSAgQXJnczoKLSAgICBlbnZfY21kOiAgVGhlIHNoZWxs
IGNvbW1hbmQuIEEgMi10dXBsZSB3aGVyZSBlbGVtZW50IDAgaXMgYSBkaWN0IG9mIGV4dHJhCi0g
ICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQsIGFuZCBlbGVtZW50IDEg
aXMgYSBzdHJpbmcgd2l0aAotICAgICAgICAgICAgICB0aGUgY29tbWFuZCBhbmQgYW55IGZsYWdz
LgotICAiIiIKLQotICAjIERpc2FibGVzIGV4Y2VwdGlvbiBwb3AtdXBzIG9uIFdpbmRvd3MuCi0g
IGVudmlyb24sIGNtZGxpbmUgPSBlbnZfY21kCi0gIGVudmlyb24gPSBkaWN0KGVudmlyb24pICAj
IEVuc3VyZXMgd2UgYXJlIG1vZGlmeWluZyBhIGNvcHkuCi0gIGVudmlyb25bQ0FUQ0hfRVhDRVBU
SU9OU19FTlZfVkFSX05BTUVdID0gJzEnCi0gIHJldHVybiBOb3JtYWxpemVPdXRwdXQoR2V0U2hl
bGxDb21tYW5kT3V0cHV0KChlbnZpcm9uLCBjbWRsaW5lKSkpCi0KLQotZGVmIEdldE91dHB1dE9m
QWxsQ29tbWFuZHMoKToKLSAgIiIiUmV0dXJucyBjb25jYXRlbmF0ZWQgb3V0cHV0IGZyb20gc2V2
ZXJhbCByZXByZXNlbnRhdGl2ZSBjb21tYW5kcy4iIiIKLQotICByZXR1cm4gKEdldENvbW1hbmRP
dXRwdXQoQ09NTUFORF9XSVRIX0NPTE9SKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChD
T01NQU5EX1dJVEhfVElNRSkgKwotICAgICAgICAgIEdldENvbW1hbmRPdXRwdXQoQ09NTUFORF9X
SVRIX0RJU0FCTEVEKSArCi0gICAgICAgICAgR2V0Q29tbWFuZE91dHB1dChDT01NQU5EX1dJVEhf
U0hBUkRJTkcpKQotCi0KLXRlc3RfbGlzdCA9IEdldFNoZWxsQ29tbWFuZE91dHB1dChDT01NQU5E
X0xJU1RfVEVTVFMpCi1TVVBQT1JUU19ERUFUSF9URVNUUyA9ICdEZWF0aFRlc3QnIGluIHRlc3Rf
bGlzdAotU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiB0ZXN0X2xpc3QKLVNV
UFBPUlRTX1RIUkVBRFMgPSAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcgaW4gdGVzdF9s
aXN0Ci1TVVBQT1JUU19TVEFDS19UUkFDRVMgPSBGYWxzZQotCi1DQU5fR0VORVJBVEVfR09MREVO
X0ZJTEUgPSAoU1VQUE9SVFNfREVBVEhfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU1VQUE9SVFNfVFlQRURfVEVTVFMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU1VQUE9SVFNfVEhSRUFEUyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qg
SVNfV0lORE9XUykKLQotY2xhc3MgR1Rlc3RPdXRwdXRUZXN0KGd0ZXN0X3Rlc3RfdXRpbHMuVGVz
dENhc2UpOgotICBkZWYgUmVtb3ZlVW5zdXBwb3J0ZWRUZXN0cyhzZWxmLCB0ZXN0X291dHB1dCk6
Ci0gICAgaWYgbm90IFNVUFBPUlRTX0RFQVRIX1RFU1RTOgotICAgICAgdGVzdF9vdXRwdXQgPSBS
ZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnRGVhdGhUZXN0JykKLSAgICBpZiBub3Qg
U1VQUE9SVFNfVFlQRURfVEVTVFM6Ci0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5n
VGVzdHModGVzdF9vdXRwdXQsICdUeXBlZFRlc3QnKQotICAgICAgdGVzdF9vdXRwdXQgPSBSZW1v
dmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZWREZWF0aFRlc3QnKQotICAgICAgdGVz
dF9vdXRwdXQgPSBSZW1vdmVNYXRjaGluZ1Rlc3RzKHRlc3Rfb3V0cHV0LCAnVHlwZVBhcmFtRGVh
dGhUZXN0JykKLSAgICBpZiBub3QgU1VQUE9SVFNfVEhSRUFEUzoKLSAgICAgIHRlc3Rfb3V0cHV0
ID0gUmVtb3ZlTWF0Y2hpbmdUZXN0cyh0ZXN0X291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCcpCi0gICAg
ICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHModGVzdF9vdXRwdXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Njb3BlZEZha2VUZXN0UGFydFJlc3Vs
dFJlcG9ydGVyVGVzdCcpCi0gICAgICB0ZXN0X291dHB1dCA9IFJlbW92ZU1hdGNoaW5nVGVzdHMo
dGVzdF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dv
cmtzQ29uY3VycmVudGx5JykKLSAgICBpZiBub3QgU1VQUE9SVFNfU1RBQ0tfVFJBQ0VTOgotICAg
ICAgdGVzdF9vdXRwdXQgPSBSZW1vdmVTdGFja1RyYWNlcyh0ZXN0X291dHB1dCkKLQotICAgIHJl
dHVybiB0ZXN0X291dHB1dAotCi0gIGRlZiB0ZXN0T3V0cHV0KHNlbGYpOgotICAgIG91dHB1dCA9
IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotCi0gICAgZ29sZGVuX2ZpbGUgPSBvcGVuKEdPTERF
Tl9QQVRILCAncicpCi0gICAgIyBBIG1pcy1jb25maWd1cmVkIHNvdXJjZSBjb250cm9sIHN5c3Rl
bSBjYW4gY2F1c2UgXHIgYXBwZWFyIGluIEVPTAotICAgICMgc2VxdWVuY2VzIHdoZW4gd2UgcmVh
ZCB0aGUgZ29sZGVuIGZpbGUgaXJyZXNwZWN0aXZlIG9mIGFuIG9wZXJhdGluZwotICAgICMgc3lz
dGVtIHVzZWQuIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBzdHJpcCB0aG9zZSBccidzIGZyb20gbmV3
bGluZXMKLSAgICAjIHVuY29uZGl0aW9uYWxseS4KLSAgICBnb2xkZW4gPSBUb1VuaXhMaW5lRW5k
aW5nKGdvbGRlbl9maWxlLnJlYWQoKSkKLSAgICBnb2xkZW5fZmlsZS5jbG9zZSgpCi0KLSAgICAj
IFdlIHdhbnQgdGhlIHRlc3QgdG8gcGFzcyByZWdhcmRsZXNzIG9mIGNlcnRhaW4gZmVhdHVyZXMg
YmVpbmcKLSAgICAjIHN1cHBvcnRlZCBvciBub3QuCi0KLSAgICAjIFdlIHN0aWxsIGhhdmUgdG8g
cmVtb3ZlIHR5cGUgbmFtZSBzcGVjaWZpY3MgaW4gYWxsIGNhc2VzLgotICAgIG5vcm1hbGl6ZWRf
YWN0dWFsID0gUmVtb3ZlVHlwZUluZm9EZXRhaWxzKG91dHB1dCkKLSAgICBub3JtYWxpemVkX2dv
bGRlbiA9IFJlbW92ZVR5cGVJbmZvRGV0YWlscyhnb2xkZW4pCi0KLSAgICBpZiBDQU5fR0VORVJB
VEVfR09MREVOX0ZJTEU6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1hbGl6ZWRfZ29sZGVu
LCBub3JtYWxpemVkX2FjdHVhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5qb2luKGRp
ZmZsaWIudW5pZmllZF9kaWZmKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXpl
ZF9nb2xkZW4uc3BsaXQoJ1xuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxp
emVkX2FjdHVhbC5zcGxpdCgnXG4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb2xk
ZW4nLCAnYWN0dWFsJykpKQotICAgIGVsc2U6Ci0gICAgICBub3JtYWxpemVkX2FjdHVhbCA9IE5v
cm1hbGl6ZVRvQ3VycmVudFBsYXRmb3JtKAotICAgICAgICAgIFJlbW92ZVRlc3RDb3VudHMobm9y
bWFsaXplZF9hY3R1YWwpKQotICAgICAgbm9ybWFsaXplZF9nb2xkZW4gPSBOb3JtYWxpemVUb0N1
cnJlbnRQbGF0Zm9ybSgKLSAgICAgICAgICBSZW1vdmVUZXN0Q291bnRzKHNlbGYuUmVtb3ZlVW5z
dXBwb3J0ZWRUZXN0cyhub3JtYWxpemVkX2dvbGRlbikpKQotCi0gICAgICAjIFRoaXMgY29kZSBp
cyB2ZXJ5IGhhbmR5IHdoZW4gZGVidWdnaW5nIGdvbGRlbiBmaWxlIGRpZmZlcmVuY2VzOgotICAg
ICAgaWYgb3MuZ2V0ZW52KCdERUJVR19HVEVTVF9PVVRQVVRfVEVTVCcpOgotICAgICAgICBvcGVu
KG9zLnBhdGguam9pbigKLSAgICAgICAgICAgIGd0ZXN0X3Rlc3RfdXRpbHMuR2V0U291cmNlRGly
KCksCi0gICAgICAgICAgICAnX2d0ZXN0X291dHB1dF90ZXN0X25vcm1hbGl6ZWRfYWN0dWFsLnR4
dCcpLCAnd2InKS53cml0ZSgKLSAgICAgICAgICAgICAgICBub3JtYWxpemVkX2FjdHVhbCkKLSAg
ICAgICAgb3Blbihvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBndGVzdF90ZXN0X3V0aWxzLkdl
dFNvdXJjZURpcigpLAotICAgICAgICAgICAgJ19ndGVzdF9vdXRwdXRfdGVzdF9ub3JtYWxpemVk
X2dvbGRlbi50eHQnKSwgJ3diJykud3JpdGUoCi0gICAgICAgICAgICAgICAgbm9ybWFsaXplZF9n
b2xkZW4pCi0KLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWFsaXplZF9nb2xkZW4sIG5vcm1h
bGl6ZWRfYWN0dWFsKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gIGlmIHN5cy5h
cmd2WzE6XSA9PSBbR0VOR09MREVOX0ZMQUddOgotICAgIGlmIENBTl9HRU5FUkFURV9HT0xERU5f
RklMRToKLSAgICAgIG91dHB1dCA9IEdldE91dHB1dE9mQWxsQ29tbWFuZHMoKQotICAgICAgZ29s
ZGVuX2ZpbGUgPSBvcGVuKEdPTERFTl9QQVRILCAnd2InKQotICAgICAgZ29sZGVuX2ZpbGUud3Jp
dGUob3V0cHV0KQotICAgICAgZ29sZGVuX2ZpbGUuY2xvc2UoKQotICAgIGVsc2U6Ci0gICAgICBt
ZXNzYWdlID0gKAotICAgICAgICAgICIiIlVuYWJsZSB0byB3cml0ZSBhIGdvbGRlbiBmaWxlIHdo
ZW4gY29tcGlsZWQgaW4gYW4gZW52aXJvbm1lbnQKLXRoYXQgZG9lcyBub3Qgc3VwcG9ydCBhbGwg
dGhlIHJlcXVpcmVkIGZlYXR1cmVzIChkZWF0aCB0ZXN0cywgdHlwZWQgdGVzdHMsCi1hbmQgbXVs
dGlwbGUgdGhyZWFkcykuICBQbGVhc2UgZ2VuZXJhdGUgdGhlIGdvbGRlbiBmaWxlIHVzaW5nIGEg
YmluYXJ5IGJ1aWx0Ci13aXRoIHRob3NlIGZlYXR1cmVzIGVuYWJsZWQuIiIiKQotCi0gICAgICBz
eXMuc3RkZXJyLndyaXRlKG1lc3NhZ2UpCi0gICAgICBzeXMuZXhpdCgxKQotICBlbHNlOgotICAg
IGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0
ZXN0X291dHB1dF90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3Rf
LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDcwYTlmMjZmZTUuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0Xy5jYworKysgL2Rl
di9udWxsCkBAIC0xLDEwNjIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLy8KLS8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBnZW5l
cmF0ZSBHb29nbGUgVGVzdCBvdXRwdXQgdW5kZXIKLS8vIHZhcmlvdXMgY29uZGl0aW9ucy4gIFRo
ZSBvdXRwdXQgd2lsbCB0aGVuIGJlIHZlcmlmaWVkIGJ5Ci0vLyBndGVzdF9vdXRwdXRfdGVzdC5w
eSB0byBlbnN1cmUgdGhhdCBHb29nbGUgVGVzdCBnZW5lcmF0ZXMgdGhlCi0vLyBkZXNpcmVkIG1l
c3NhZ2VzLiAgVGhlcmVmb3JlLCBtb3N0IHRlc3RzIGluIHRoaXMgZmlsZSBhcmUgTUVBTlQgVE8K
LS8vIEZBSUwuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3Qtc3BpLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIK
LQotLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyB0cmFuc2xhdGlvbiB1bml0IGlzIHBhcnQgb2YgR29v
Z2xlIFRlc3QncwotLy8gaW1wbGVtZW50YXRpb24uICBJdCBtdXN0IGNvbWUgYmVmb3JlIGd0ZXN0
LWludGVybmFsLWlubC5oIGlzCi0vLyBpbmNsdWRlZCwgb3IgdGhlcmUgd2lsbCBiZSBhIGNvbXBp
bGVyIGVycm9yLiAgVGhpcyB0cmljayBpcyB0bwotLy8gcHJldmVudCBhIHVzZXIgZnJvbSBhY2Np
ZGVudGFsbHkgaW5jbHVkaW5nIGd0ZXN0LWludGVybmFsLWlubC5oIGluCi0vLyBoaXMgY29kZS4K
LSNkZWZpbmUgR1RFU1RfSU1QTEVNRU5UQVRJT05fIDEKLSNpbmNsdWRlICJzcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCi0jdW5kZWYgR1RFU1RfSU1QTEVNRU5UQVRJT05fCi0KLSNpbmNsdWRlIDxz
dGRsaWIuaD4KLQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLXVzaW5nIHRlc3Rpbmc6OlNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6VGVzdFBhcnRSZXN1
bHRBcnJheTsKLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Ok5vdGlmaWNhdGlvbjsKLXVzaW5n
IHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IHBvc2l4ID0gOjp0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg7Ci0KLS8vIFRlc3RzIGNhdGNoaW5n
IGZhdGFsIGZhaWx1cmVzLgotCi0vLyBBIHN1YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5n
IHRlc3QuCi12b2lkIFRlc3RFcTEoaW50IHgpIHsKLSAgQVNTRVJUX0VRKDEsIHgpOwotfQotCi0v
LyBUaGlzIGZ1bmN0aW9uIGNhbGxzIGEgdGVzdCBzdWJyb3V0aW5lLCBjYXRjaGVzIHRoZSBmYXRh
bCBmYWlsdXJlIGl0Ci0vLyBnZW5lcmF0ZXMsIGFuZCB0aGVuIHJldHVybnMgZWFybHkuCi12b2lk
IFRyeVRlc3RTdWJyb3V0aW5lKCkgewotICAvLyBDYWxscyBhIHN1YnJvdW50aW5lIHRoYXQgeWll
bGRzIGEgZmF0YWwgZmFpbHVyZS4KLSAgVGVzdEVxMSgyKTsKLQotICAvLyBDYXRjaGVzIHRoZSBm
YXRhbCBmYWlsdXJlIGFuZCBhYm9ydHMgdGhlIHRlc3QuCi0gIC8vCi0gIC8vIFRoZSB0ZXN0aW5n
OjpUZXN0OjogcHJlZml4IGlzIG5lY2Vzc2FyeSB3aGVuIGNhbGxpbmcKLSAgLy8gSGFzRmF0YWxG
YWlsdXJlKCkgb3V0c2lkZSBvZiBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdCBmaXh0dXJlLgotICBp
ZiAodGVzdGluZzo6VGVzdDo6SGFzRmF0YWxGYWlsdXJlKCkpIHJldHVybjsKLQotICAvLyBJZiB3
ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgotICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxk
IG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotVEVTVChQYXNzaW5nVGVzdCwgUGFzc2luZ1Rlc3Qx
KSB7Ci19Ci0KLVRFU1QoUGFzc2luZ1Rlc3QsIFBhc3NpbmdUZXN0MikgewotfQotCi0vLyBUZXN0
cyB0aGF0IHBhcmFtZXRlcnMgb2YgZmFpbGluZyBwYXJhbWV0ZXJpemVkIHRlc3RzIGFyZSBwcmlu
dGVkIGluIHRoZQotLy8gZmFpbGluZyB0ZXN0IHN1bW1hcnkuCi1jbGFzcyBGYWlsaW5nUGFyYW1U
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08aW50PiB7fTsKLQotVEVTVF9QKEZh
aWxpbmdQYXJhbVRlc3QsIEZhaWxzKSB7Ci0gIEVYUEVDVF9FUSgxLCBHZXRQYXJhbSgpKTsKLX0K
LQotLy8gVGhpcyBnZW5lcmF0ZXMgYSB0ZXN0IHdoaWNoIHdpbGwgZmFpbC4gR29vZ2xlIFRlc3Qg
aXMgZXhwZWN0ZWQgdG8gcHJpbnQKLS8vIGl0cyBwYXJhbWV0ZXIgd2hlbiBpdCBvdXRwdXRzIHRo
ZSBsaXN0IG9mIGFsbCBmYWlsZWQgdGVzdHMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChQcmlu
dGluZ0ZhaWxpbmdQYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBGYWlsaW5nUGFyYW1U
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKDIpKTsKLQotc3Rh
dGljIGNvbnN0IGNoYXIga0dvbGRlblN0cmluZ1tdID0gIlwiTGluZVwwIDFcIlxuTGluZSAyIjsK
LQotVEVTVChOb25mYXRhbEZhaWx1cmVUZXN0LCBFc2NhcGVzU3RyaW5nT3BlcmFuZHMpIHsKLSAg
c3RkOjpzdHJpbmcgYWN0dWFsID0gImFjdHVhbCBcInN0cmluZ1wiIjsKLSAgRVhQRUNUX0VRKGtH
b2xkZW5TdHJpbmcsIGFjdHVhbCk7Ci0KLSAgY29uc3QgY2hhciogZ29sZGVuID0ga0dvbGRlblN0
cmluZzsKLSAgRVhQRUNUX0VRKGdvbGRlbiwgYWN0dWFsKTsKLX0KLQotVEVTVChOb25mYXRhbEZh
aWx1cmVUZXN0LCBEaWZmRm9yTG9uZ1N0cmluZ3MpIHsKLSAgc3RkOjpzdHJpbmcgZ29sZGVuX3N0
cihrR29sZGVuU3RyaW5nLCBzaXplb2Yoa0dvbGRlblN0cmluZykgLSAxKTsKLSAgRVhQRUNUX0VR
KGdvbGRlbl9zdHIsICJMaW5lIDIiKTsKLX0KLQotLy8gVGVzdHMgY2F0Y2hpbmcgYSBmYXRhbCBm
YWlsdXJlIGluIGEgc3Vicm91dGluZS4KLVRFU1QoRmF0YWxGYWlsdXJlVGVzdCwgRmF0YWxGYWls
dXJlSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4
IHNob3VsZCBiZSAxKVxuIik7Ci0KLSAgVHJ5VGVzdFN1YnJvdXRpbmUoKTsKLX0KLQotLy8gVGVz
dHMgY2F0Y2hpbmcgYSBmYXRhbCBmYWlsdXJlIGluIGEgbmVzdGVkIHN1YnJvdXRpbmUuCi1URVNU
KEZhdGFsRmFpbHVyZVRlc3QsIEZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSkgewotICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlIHRoYXQgeCBzaG91bGQgYmUgMSlcbiIpOwotCi0g
IC8vIENhbGxzIGEgc3Vicm91bnRpbmUgdGhhdCB5aWVsZHMgYSBmYXRhbCBmYWlsdXJlLgotICBU
cnlUZXN0U3Vicm91dGluZSgpOwotCi0gIC8vIENhdGNoZXMgdGhlIGZhdGFsIGZhaWx1cmUgYW5k
IGFib3J0cyB0aGUgdGVzdC4KLSAgLy8KLSAgLy8gV2hlbiBjYWxsaW5nIEhhc0ZhdGFsRmFpbHVy
ZSgpIGluc2lkZSBhIFRFU1QsIFRFU1RfRiwgb3IgdGVzdAotICAvLyBmaXh0dXJlLCB0aGUgdGVz
dGluZzo6VGVzdDo6IHByZWZpeCBpcyBub3QgbmVlZGVkLgotICBpZiAoSGFzRmF0YWxGYWlsdXJl
KCkpIHJldHVybjsKLQotICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIGlzIHdyb25nLgot
ICBGQUlMKCkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIjsKLX0KLQotLy8gVGVz
dHMgSGFzRmF0YWxGYWlsdXJlKCkgYWZ0ZXIgYSBmYWlsZWQgRVhQRUNUIGNoZWNrLgotVEVTVChG
YXRhbEZhaWx1cmVUZXN0LCBOb25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUpIHsKLSAgcHJpbnRm
KCIoZXhwZWN0aW5nIGEgZmFpbHVyZSBvbiBmYWxzZSlcbiIpOwotICBFWFBFQ1RfVFJVRShmYWxz
ZSk7ICAvLyBHZW5lcmF0ZXMgYSBub25mYXRhbCBmYWlsdXJlCi0gIEFTU0VSVF9GQUxTRShIYXNG
YXRhbEZhaWx1cmUoKSk7ICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLgotfQotCi0vLyBUZXN0cyBp
bnRlcmxlYXZpbmcgdXNlciBsb2dnaW5nIGFuZCBHb29nbGUgVGVzdCBhc3NlcnRpb25zLgotVEVT
VChMb2dnaW5nVGVzdCwgSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMpIHsKLSAgc3Rh
dGljIGNvbnN0IGludCBhWzRdID0gewotICAgIDMsIDksIDIsIDYKLSAgfTsKLQotICBwcmludGYo
IihleHBlY3RpbmcgMiBmYWlsdXJlcyBvbiAoMykgPj0gKGFbaV0pKVxuIik7Ci0gIGZvciAoaW50
IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoYSkvc2l6ZW9mKCphKSk7IGkrKykg
ewotICAgIHByaW50ZigiaSA9PSAlZFxuIiwgaSk7Ci0gICAgRVhQRUNUX0dFKDMsIGFbaV0pOwot
ICB9Ci19Ci0KLS8vIFRlc3RzIHRoZSBTQ09QRURfVFJBQ0UgbWFjcm8uCi0KLS8vIEEgaGVscGVy
IGZ1bmN0aW9uIGZvciB0ZXN0aW5nIFNDT1BFRF9UUkFDRS4KLXZvaWQgU3ViV2l0aG91dFRyYWNl
KGludCBuKSB7Ci0gIEVYUEVDVF9FUSgxLCBuKTsKLSAgQVNTRVJUX0VRKDIsIG4pOwotfQotCi0v
LyBBbm90aGVyIGhlbHBlciBmdW5jdGlvbiBmb3IgdGVzdGluZyBTQ09QRURfVFJBQ0UuCi12b2lk
IFN1YldpdGhUcmFjZShpbnQgbikgewotICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVzc2FnZSgp
IDw8ICJuID0gIiA8PCBuKTsKLQotICBTdWJXaXRob3V0VHJhY2Uobik7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgU0NPUEVEX1RSQUNFKCkgb2JleXMgbGV4aWNhbCBzY29wZXMuCi1URVNUKFNDT1BFRF9U
UkFDRVRlc3QsIE9iZXlzU2NvcGVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4i
KTsKLQotICAvLyBUaGVyZSBzaG91bGQgYmUgbm8gdHJhY2UgYmVmb3JlIFNDT1BFRF9UUkFDRSgp
IGlzIGludm9rZWQuCi0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZCwgYW5kIHNob3VsZG4ndCBoYXZlIGEgdHJhY2UuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNF
KCJFeHBlY3RlZCB0cmFjZSIpOwotICAgIC8vIEFmdGVyIFNDT1BFRF9UUkFDRSgpLCBhIGZhaWx1
cmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUgc2hvdWxkIGNvbnRhaW4KLSAgICAvLyB0aGUgdHJhY2Uu
Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hv
dWxkIGhhdmUgYSB0cmFjZS4iOwotICB9Ci0KLSAgLy8gT25jZSB0aGUgY29udHJvbCBsZWF2ZXMg
dGhlIHNjb3BlIG9mIHRoZSBTQ09QRURfVFJBQ0UoKSwgdGhlcmUKLSAgLy8gc2hvdWxkIGJlIG5v
IHRyYWNlIGFnYWluLgotICBBRERfRkFJTFVSRSgpIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgU0NP
UEVEX1RSQUNFIHdvcmtzIGluc2lkZSBhIGxvb3AuCi1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdv
cmtzSW5Mb29wKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBmb3Ig
KGludCBpID0gMTsgaSA8PSAyOyBpKyspIHsKLSAgICBTQ09QRURfVFJBQ0UodGVzdGluZzo6TWVz
c2FnZSgpIDw8ICJpID0gIiA8PCBpKTsKLQotICAgIFN1YldpdGhvdXRUcmFjZShpKTsKLSAgfQot
fQotCi0vLyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSB3b3JrcyBpbiBhIHN1YnJvdXRpbmUuCi1U
RVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzSW5TdWJyb3V0aW5lKSB7Ci0gIHByaW50ZigiKGV4
cGVjdGVkIHRvIGZhaWwpXG4iKTsKLQotICBTdWJXaXRoVHJhY2UoMSk7Ci0gIFN1YldpdGhUcmFj
ZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UgY2FuIGJlIG5lc3RlZC4KLVRF
U1QoU0NPUEVEX1RSQUNFVGVzdCwgQ2FuQmVOZXN0ZWQpIHsKLSAgcHJpbnRmKCIoZXhwZWN0ZWQg
dG8gZmFpbClcbiIpOwotCi0gIFNDT1BFRF9UUkFDRSgiIik7ICAvLyBBIHRyYWNlIHdpdGhvdXQg
YSBtZXNzYWdlLgotCi0gIFN1YldpdGhUcmFjZSgyKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBtdWx0
aXBsZSBTQ09QRURfVFJBQ0VzIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLgotVEVTVChT
Q09QRURfVFJBQ0VUZXN0LCBDYW5CZVJlcGVhdGVkKSB7Ci0gIHByaW50ZigiKGV4cGVjdGVkIHRv
IGZhaWwpXG4iKTsKLQotICBTQ09QRURfVFJBQ0UoIkEiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEuIjsKLQotICBTQ09QRURfVFJBQ0UoIkIiKTsKLSAgQUREX0ZBSUxVUkUoKQotICAg
ICAgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5kIHNob3VsZCBjb250YWluIHRyYWNl
IHBvaW50IEEgYW5kIEIuIjsKLQotICB7Ci0gICAgU0NPUEVEX1RSQUNFKCJDIik7Ci0gICAgQURE
X0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKLSAg
ICAgICAgICAgICAgICAgIDw8ICJjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBDLiI7Ci0g
IH0KLQotICBTQ09QRURfVFJBQ0UoIkQiKTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkICIKLSAgICAgICAgICAgICAgICA8PCAiY29udGFp
biB0cmFjZSBwb2ludCBBLCBCLCBhbmQgRC4iOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FG
RQotLy8gVGVzdHMgdGhhdCBTQ09QRURfVFJBQ0UoKXMgY2FuIGJlIHVzZWQgY29uY3VycmVudGx5
IGZyb20gbXVsdGlwbGUKLS8vIHRocmVhZHMuICBOYW1lbHksIGFuIGFzc2VydGlvbiBzaG91bGQg
YmUgYWZmZWN0ZWQgYnkKLS8vIFNDT1BFRF9UUkFDRSgpcyBpbiBpdHMgb3duIHRocmVhZCBvbmx5
LgotCi0vLyBIZXJlJ3MgdGhlIHNlcXVlbmNlIG9mIGFjdGlvbnMgdGhhdCBoYXBwZW4gaW4gdGhl
IHRlc3Q6Ci0vLwotLy8gICBUaHJlYWQgQSAobWFpbikgICAgICAgICAgICAgICAgfCBUaHJlYWQg
QiAoc3Bhd25lZCkKLS8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXw9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gICBzcGF3bnMgdGhyZWFkIEIgICAgICAgICAg
ICAgICAgfAotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMSAgICAgICAgICAgICAgICAg
ICB8IFNDT1BFRF9UUkFDRSgiVHJhY2UgQiIpOwotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBnZW5lcmF0ZXMgZmFpbHVyZSAjMQotLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBub3RpZmllcyBuMQotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIFNDT1BFRF9UUkFD
RSgiVHJhY2UgQSIpOyAgICAgICB8IHdhaXRzIGZvciBuMgotLy8gICBnZW5lcmF0ZXMgZmFpbHVy
ZSAjMiAgICAgICAgICAgfAotLy8gICBub3RpZmllcyBuMiAgICAgICAgICAgICAgICAgICAgfAot
Ly8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyAgIHdhaXRzIGZvciBuMyAgICAgICAgICAgICAgICAgICB8IGdlbmVy
YXRlcyBmYWlsdXJlICMzCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRy
YWNlIEIgZGllcwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnZW5lcmF0
ZXMgZmFpbHVyZSAjNAotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBub3Rp
ZmllcyBuMwotLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgIGdlbmVyYXRlcyBmYWlsdXJlICM1ICAgICAgICAg
ICB8IGZpbmlzaGVzCi0vLyAgIHRyYWNlIEEgZGllcyAgICAgICAgICAgICAgICAgICB8Ci0vLyAg
IGdlbmVyYXRlcyBmYWlsdXJlICM2ICAgICAgICAgICB8Ci0vLyAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vICAgd2Fp
dHMgZm9yIHRocmVhZCBCIHRvIGZpbmlzaCAgIHwKLQotc3RydWN0IENoZWNrUG9pbnRzIHsKLSAg
Tm90aWZpY2F0aW9uIG4xOwotICBOb3RpZmljYXRpb24gbjI7Ci0gIE5vdGlmaWNhdGlvbiBuMzsK
LX07Ci0KLXN0YXRpYyB2b2lkIFRocmVhZFdpdGhTY29wZWRUcmFjZShDaGVja1BvaW50cyogY2hl
Y2tfcG9pbnRzKSB7Ci0gIHsKLSAgICBTQ09QRURfVFJBQ0UoIlRyYWNlIEIiKTsKLSAgICBBRERf
RkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxIChpbiB0aHJlYWQgQiwg
b25seSB0cmFjZSBCIGFsaXZlKS4iOwotICAgIGNoZWNrX3BvaW50cy0+bjEuTm90aWZ5KCk7Ci0g
ICAgY2hlY2tfcG9pbnRzLT5uMi5XYWl0Rm9yTm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJ
TFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzIChpbiB0aHJlYWQgQiwgdHJh
Y2UgQSAmIEIgYm90aCBhbGl2ZSkuIjsKLSAgfSAgLy8gVHJhY2UgQiBkaWVzIGhlcmUuCi0gIEFE
RF9GQUlMVVJFKCkKLSAgICAgIDw8ICJFeHBlY3RlZCBmYWlsdXJlICM0IChpbiB0aHJlYWQgQiwg
b25seSB0cmFjZSBBIGFsaXZlKS4iOwotICBjaGVja19wb2ludHMtPm4zLk5vdGlmeSgpOwotfQot
Ci1URVNUKFNDT1BFRF9UUkFDRVRlc3QsIFdvcmtzQ29uY3VycmVudGx5KSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyA2IGZhaWx1cmVzKVxuIik7Ci0KLSAgQ2hlY2tQb2ludHMgY2hlY2tfcG9pbnRz
OwotICBUaHJlYWRXaXRoUGFyYW08Q2hlY2tQb2ludHMqPiB0aHJlYWQoJlRocmVhZFdpdGhTY29w
ZWRUcmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGVja19w
b2ludHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAg
Y2hlY2tfcG9pbnRzLm4xLldhaXRGb3JOb3RpZmljYXRpb24oKTsKLQotICB7Ci0gICAgU0NPUEVE
X1RSQUNFKCJUcmFjZSBBIik7Ci0gICAgQUREX0ZBSUxVUkUoKQotICAgICAgICA8PCAiRXhwZWN0
ZWQgZmFpbHVyZSAjMiAoaW4gdGhyZWFkIEEsIHRyYWNlIEEgJiBCIGJvdGggYWxpdmUpLiI7Ci0g
ICAgY2hlY2tfcG9pbnRzLm4yLk5vdGlmeSgpOwotICAgIGNoZWNrX3BvaW50cy5uMy5XYWl0Rm9y
Tm90aWZpY2F0aW9uKCk7Ci0KLSAgICBBRERfRkFJTFVSRSgpCi0gICAgICAgIDw8ICJFeHBlY3Rl
ZCBmYWlsdXJlICM1IChpbiB0aHJlYWQgQSwgb25seSB0cmFjZSBBIGFsaXZlKS4iOwotICB9ICAv
LyBUcmFjZSBBIGRpZXMgaGVyZS4KLSAgQUREX0ZBSUxVUkUoKQotICAgICAgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzYgKGluIHRocmVhZCBBLCBubyB0cmFjZSBhbGl2ZSkuIjsKLSAgdGhyZWFkLkpv
aW4oKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1URVNUKERpc2FibGVk
VGVzdHNXYXJuaW5nVGVzdCwKLSAgICAgRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFn
U3VwcHJlc3Nlc1dhcm5pbmcpIHsKLSAgLy8gVGhpcyB0ZXN0IGJvZHkgaXMgaW50ZW50aW9uYWxs
eSBlbXB0eS4gIEl0cyBzb2xlIHB1cnBvc2UgaXMgZm9yCi0gIC8vIHZlcmlmeWluZyB0aGF0IHRo
ZSAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIGZsYWcKLSAgLy8gc3VwcHJlc3NlcyB0
aGUgIllPVSBIQVZFIDEyIERJU0FCTEVEIFRFU1RTIiB3YXJuaW5nIGF0IHRoZSBlbmQgb2YKLSAg
Ly8gdGhlIHRlc3Qgb3V0cHV0LgotfQotCi0vLyBUZXN0cyB1c2luZyBhc3NlcnRpb25zIG91dHNp
ZGUgb2YgVEVTVCBhbmQgVEVTVF9GLgotLy8KLS8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0d28g
ZmFpbHVyZXMgaW50ZW50aW9uYWxseS4KLXZvaWQgQWRIb2NUZXN0KCkgewotICBwcmludGYoIlRo
ZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2RlIGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJl
cy5cblxuIik7Ci0gIEVYUEVDVF9UUlVFKGZhbHNlKTsKLSAgRVhQRUNUX0VRKDIsIDMpOwotfQot
Ci0vLyBSdW5zIGFsbCBURVNUcywgYWxsIFRFU1RfRnMsIGFuZCB0aGUgYWQgaG9jIHRlc3QuCi1p
bnQgUnVuQWxsVGVzdHMoKSB7Ci0gIEFkSG9jVGVzdCgpOwotICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwotfQotCi0vLyBUZXN0cyBub24tZmF0YWwgZmFpbHVyZXMgaW4gdGhlIGZpeHR1cmUgY29u
c3RydWN0b3IuCi1jbGFzcyBOb25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICBOb25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDUgZmFp
bHVyZXMpXG4iKTsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBp
biB0aGUgdGVzdCBmaXh0dXJlIGMndG9yLiI7Ci0gIH0KLQotICB+Tm9uRmF0YWxGYWlsdXJlSW5G
aXh0dXJlQ29uc3RydWN0b3JUZXN0KCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IGZhaWx1cmUgIzUsIGluIHRoZSB0ZXN0IGZpeHR1cmUgZCd0b3IuIjsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBmYWlsdXJl
ICMyLCBpbiBTZXRVcCgpLiI7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0g
ICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNCwgaW4gVGVhckRvd24uIjsK
LSAgfQotfTsKLQotVEVTVF9GKE5vbkZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVz
dCwgRmFpbHVyZUluQ29uc3RydWN0b3IpIHsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4iOwotfQotCi0vLyBUZXN0cyBmYXRhbCBmYWls
dXJlcyBpbiB0aGUgZml4dHVyZSBjb25zdHJ1Y3Rvci4KLWNsYXNzIEZhdGFsRmFpbHVyZUluRml4
dHVyZUNvbnN0cnVjdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6
Ci0gIEZhdGFsRmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdCgpIHsKLSAgICBwcmludGYo
IihleHBlY3RpbmcgMiBmYWlsdXJlcylcbiIpOwotICAgIEluaXQoKTsKLSAgfQotCi0gIH5GYXRh
bEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QoKSB7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9
Ci0KLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQ
RUNURUQgZmFpbHVyZSBpbiBTZXRVcCgpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNo
b3VsZCBuZXZlciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAg
ICAgICAgICAgICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkgewotICAgIEFERF9GQUlMVVJFKCkgPDwgIlVORVhQRUNURUQgZmFpbHVy
ZSBpbiBUZWFyRG93bigpLiAgIgotICAgICAgICAgICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZl
ciBnZXQgaGVyZSwgYXMgdGhlIHRlc3QgZml4dHVyZSBjJ3RvciAiCi0gICAgICAgICAgICAgICAg
ICA8PCAiaGFkIGEgZmF0YWwgZmFpbHVyZS4iOwotICB9Ci0KLSBwcml2YXRlOgotICB2b2lkIElu
aXQoKSB7Ci0gICAgRkFJTCgpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMxLCBpbiB0aGUgdGVzdCBm
aXh0dXJlIGMndG9yLiI7Ci0gIH0KLX07Ci0KLVRFU1RfRihGYXRhbEZhaWx1cmVJbkZpeHR1cmVD
b25zdHJ1Y3RvclRlc3QsIEZhaWx1cmVJbkNvbnN0cnVjdG9yKSB7Ci0gIEFERF9GQUlMVVJFKCkg
PDwgIlVORVhQRUNURUQgZmFpbHVyZSBpbiB0aGUgdGVzdCBib2R5LiAgIgotICAgICAgICAgICAg
ICAgIDw8ICJXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIGFzIHRoZSB0ZXN0IGZpeHR1cmUgYyd0
b3IgIgotICAgICAgICAgICAgICAgIDw8ICJoYWQgYSBmYXRhbCBmYWlsdXJlLiI7Ci19Ci0KLS8v
IFRlc3RzIG5vbi1mYXRhbCBmYWlsdXJlcyBpbiBTZXRVcCgpLgotY2xhc3MgTm9uRmF0YWxGYWls
dXJlSW5TZXRVcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIH5Ob25GYXRhbEZhaWx1cmVJblNldFVwVGVzdCgpIHsKLSAgICBEZWluaXQoKTsKLSAg
fQotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBwcmludGYoIihleHBlY3RpbmcgNCBm
YWlsdXJlcylcbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEs
IGluIFNldFVwKCkuIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHBy
aXZhdGU6Ci0gIHZvaWQgRGVpbml0KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVy
ZSAjNCwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoTm9u
RmF0YWxGYWlsdXJlSW5TZXRVcFRlc3QsIEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmFpbHVyZSAjMiwgaW4gdGhlIHRlc3QgZnVuY3Rpb24uIjsKLX0KLQotLy8gVGVz
dHMgZmF0YWwgZmFpbHVyZXMgaW4gU2V0VXAoKS4KLWNsYXNzIEZhdGFsRmFpbHVyZUluU2V0VXBU
ZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB+RmF0
YWxGYWlsdXJlSW5TZXRVcFRlc3QoKSB7Ci0gICAgRGVpbml0KCk7Ci0gIH0KLQotICB2aXJ0dWFs
IHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIoZXhwZWN0aW5nIDMgZmFpbHVyZXMpXG4iKTsK
LSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVwKCkuIjsKLSAgfQot
Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzIsIGluIFRlYXJEb3duKCkuIjsKLSAgfQotIHByaXZhdGU6Ci0gIHZvaWQgRGVpbml0
KCkgewotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgZml4
dHVyZSBkJ3Rvci4iOwotICB9Ci19OwotCi1URVNUX0YoRmF0YWxGYWlsdXJlSW5TZXRVcFRlc3Qs
IEZhaWx1cmVJblNldFVwKSB7Ci0gIEZBSUwoKSA8PCAiVU5FWFBFQ1RFRCBmYWlsdXJlIGluIHRo
ZSB0ZXN0IGZ1bmN0aW9uLiAgIgotICAgICAgICAgPDwgIldlIHNob3VsZCBuZXZlciBnZXQgaGVy
ZSwgYXMgU2V0VXAoKSBmYWlsZWQuIjsKLX0KLQotVEVTVChBZGRGYWlsdXJlQXRUZXN0LCBNZXNz
YWdlQ29udGFpbnNTcGVjaWZpZWRGaWxlQW5kTGluZU51bWJlcikgewotICBBRERfRkFJTFVSRV9B
VCgiZm9vLmNjIiwgNDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlIGluIGZvby5jYyI7Ci19Ci0KLSNp
ZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLS8vIEEgdW5hcnkgZnVuY3Rpb24gdGhhdCBtYXkgZGll
Lgotdm9pZCBEaWVJZihib29sIHNob3VsZF9kaWUpIHsKLSAgR1RFU1RfQ0hFQ0tfKCFzaG91bGRf
ZGllKSA8PCAiIC0gZGVhdGggaW5zaWRlIERpZUlmKCkuIjsKLX0KLQotLy8gVGVzdHMgcnVubmlu
ZyBkZWF0aCB0ZXN0cyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0KLS8vIFVzZWQgZm9y
IGNvb3JkaW5hdGlvbiBiZXR3ZWVuIHRoZSBtYWluIGFuZCB0aGUgc3Bhd24gdGhyZWFkLgotc3Ry
dWN0IFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyB7Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9u
cygpIHt9Ci0KLSAgTm90aWZpY2F0aW9uIHNwYXduX3RocmVhZF9zdGFydGVkOwotICBOb3RpZmlj
YXRpb24gc3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZTsKLQotIHByaXZhdGU6Ci0gIEdURVNU
X0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTl8oU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKTsKLX07
Ci0KLS8vIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBpbiB0aGUgdGhyZWFkIHNwYXduIGJ5
IHRoZQotLy8gTXVsdGlwbGVUaHJlYWRzIHRlc3QgKGJlbG93KS4KLXN0YXRpYyB2b2lkIFRocmVh
ZFJvdXRpbmUoU3Bhd25UaHJlYWROb3RpZmljYXRpb25zKiBub3RpZmljYXRpb25zKSB7Ci0gIC8v
IFNpZ25hbHMgdGhlIG1haW4gdGhyZWFkIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHN0YXJ0ZWQuCi0g
IG5vdGlmaWNhdGlvbnMtPnNwYXduX3RocmVhZF9zdGFydGVkLk5vdGlmeSgpOwotCi0gIC8vIFdh
aXRzIGZvciBwZXJtaXNzaW9uIHRvIGZpbmlzaCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgbm90
aWZpY2F0aW9ucy0+c3Bhd25fdGhyZWFkX29rX3RvX3Rlcm1pbmF0ZS5XYWl0Rm9yTm90aWZpY2F0
aW9uKCk7Ci19Ci0KLS8vIFRoaXMgaXMgYSBkZWF0aC10ZXN0IHRlc3QsIGJ1dCBpdCdzIG5vdCBu
YW1lZCB3aXRoIGEgRGVhdGhUZXN0Ci0vLyBzdWZmaXguICBJdCBzdGFydHMgdGhyZWFkcyB3aGlj
aCBtaWdodCBpbnRlcmZlcmUgd2l0aCBsYXRlcgotLy8gZGVhdGggdGVzdHMsIHNvIGl0IG11c3Qg
cnVuIGFmdGVyIGFsbCBvdGhlciBkZWF0aCB0ZXN0cy4KLWNsYXNzIERlYXRoVGVzdEFuZE11bHRp
VGhyZWFkc1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBT
dGFydHMgYSB0aHJlYWQgYW5kIHdhaXRzIGZvciBpdCB0byBiZWdpbi4KLSAgdmlydHVhbCB2b2lk
IFNldFVwKCkgewotICAgIHRocmVhZF8ucmVzZXQobmV3IFRocmVhZFdpdGhQYXJhbTxTcGF3blRo
cmVhZE5vdGlmaWNhdGlvbnMqPigKLSAgICAgICAgJlRocmVhZFJvdXRpbmUsICZub3RpZmljYXRp
b25zXywgTlVMTCkpOwotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9zdGFydGVkLldh
aXRGb3JOb3RpZmljYXRpb24oKTsKLSAgfQotICAvLyBUZWxscyB0aGUgdGhyZWFkIHRvIGZpbmlz
aCwgYW5kIHJlYXBzIGl0LgotICAvLyBEZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gb2YgdGhlIHRo
cmVhZCBsaWJyYXJ5IGluIHVzZSwKLSAgLy8gYSBtYW5hZ2VyIHRocmVhZCBtaWdodCBzdGlsbCBi
ZSBsZWZ0IHJ1bm5pbmcgdGhhdCB3aWxsIGludGVyZmVyZQotICAvLyB3aXRoIGxhdGVyIGRlYXRo
IHRlc3RzLiAgVGhpcyBpcyB1bmZvcnR1bmF0ZSwgYnV0IHRoaXMgY2xhc3MKLSAgLy8gY2xlYW5z
IHVwIGFmdGVyIGl0c2VsZiBhcyBiZXN0IGl0IGNhbi4KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIG5vdGlmaWNhdGlvbnNfLnNwYXduX3RocmVhZF9va190b190ZXJtaW5hdGUuTm90
aWZ5KCk7Ci0gIH0KLQotIHByaXZhdGU6Ci0gIFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyBub3Rp
ZmljYXRpb25zXzsKLSAgdGVzdGluZzo6aW50ZXJuYWw6OnNjb3BlZF9wdHI8VGhyZWFkV2l0aFBh
cmFtPFNwYXduVGhyZWFkTm90aWZpY2F0aW9ucyo+ID4KLSAgICAgIHRocmVhZF87Ci19OwotCi0j
ZW5kaWYgIC8vIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotLy8gVGhlIE1peGVkVXBUZXN0Q2FzZVRl
c3QgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQgR29vZ2xlIFRlc3Qgd2lsbCBmYWlsIGEKLS8vIHRl
c3QgaWYgaXQgdXNlcyBhIGRpZmZlcmVudCBmaXh0dXJlIGNsYXNzIHRoYW4gd2hhdCBvdGhlciB0
ZXN0cyBpbgotLy8gdGhlIHNhbWUgdGVzdCBjYXNlIHVzZS4gIEl0IGRlbGliZXJhdGVseSBjb250
YWlucyB0d28gZml4dHVyZQotLy8gY2xhc3NlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYnV0IGRlZmlu
ZWQgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCi0KLS8vIFRoZSBNaXhlZFVwVGVzdENhc2VXaXRo
U2FtZVRlc3ROYW1lVGVzdCB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdAotLy8gd2hlbiB0aGUgdXNl
ciBkZWZpbmVzIHR3byB0ZXN0cyB3aXRoIHRoZSBzYW1lIHRlc3QgY2FzZSBuYW1lIEFORAotLy8g
c2FtZSB0ZXN0IG5hbWUgKGJ1dCBpbiBkaWZmZXJlbnQgbmFtZXNwYWNlcyksIHRoZSBzZWNvbmQg
dGVzdCB3aWxsCi0vLyBmYWlsLgotCi1uYW1lc3BhY2UgZm9vIHsKLQotY2xhc3MgTWl4ZWRVcFRl
c3RDYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1RfRihNaXhlZFVw
VGVzdENhc2VUZXN0LCBGaXJzdFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQotVEVTVF9GKE1peGVk
VXBUZXN0Q2FzZVRlc3QsIFNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vKSB7fQotCi1jbGFzcyBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLX07Ci0KLVRFU1RfRihNaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCwKLSAg
ICAgICBUaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbCkge30KLQotfSAgLy8gbmFt
ZXNwYWNlIGZvbwotCi1uYW1lc3BhY2UgYmFyIHsKLQotY2xhc3MgTWl4ZWRVcFRlc3RDYXNlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIHRl
c3RzIGFyZSBleHBlY3RlZCB0byBmYWlsLiAgV2UgcmVseSBvbiB0aGUKLS8vIGdvbGRlbiBmaWxl
IHRvIGNoZWNrIHRoYXQgR29vZ2xlIFRlc3QgZ2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNz
YWdlLgotVEVTVF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsKSB7fQotVEVT
VF9GKE1peGVkVXBUZXN0Q2FzZVRlc3QsIFRoaXNTaG91bGRGYWlsVG9vKSB7fQotCi1jbGFzcyBN
aXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKLX07Ci0KLS8vIEV4cGVjdGVkIHRvIGZhaWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmls
ZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0Ci0vLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9y
IG1lc3NhZ2UuCi1URVNUX0YoTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFtZVRlc3QsCi0g
ICAgICAgVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwpIHt9Ci0KLX0gIC8vIG5h
bWVzcGFjZSBiYXIKLQotLy8gVGhlIGZvbGxvd2luZyB0d28gdGVzdCBjYXNlcyB2ZXJpZnkgdGhh
dCBHb29nbGUgVGVzdCBjYXRjaGVzIHRoZSB1c2VyCi0vLyBlcnJvciBvZiBtaXhpbmcgVEVTVCBh
bmQgVEVTVF9GIGluIHRoZSBzYW1lIHRlc3QgY2FzZS4gIFRoZSBmaXJzdAotLy8gdGVzdCBjYXNl
IGNoZWNrcyB0aGUgc2NlbmFyaW8gd2hlcmUgVEVTVF9GIGFwcGVhcnMgYmVmb3JlIFRFU1QsIGFu
ZAotLy8gdGhlIHNlY29uZCBvbmUgY2hlY2tzIHdoZXJlIFRFU1QgYXBwZWFycyBiZWZvcmUgVEVT
VF9GLgotCi1jbGFzcyBURVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1URVNUX0YoVEVTVF9GX2JlZm9yZV9URVNUX2luX3Nh
bWVfdGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUX0YpIHt9Ci0KLS8vIEV4cGVjdGVkIHRvIGZh
aWwuICBXZSByZWx5IG9uIHRoZSBnb2xkZW4gZmlsZSB0byBjaGVjayB0aGF0IEdvb2dsZSBUZXN0
Ci0vLyBnZW5lcmF0ZXMgdGhlIHJpZ2h0IGVycm9yIG1lc3NhZ2UuCi1URVNUKFRFU1RfRl9iZWZv
cmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVEFuZFNob3VsZEZhaWwp
IHt9Ci0KLWNsYXNzIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRFU1QoVEVTVF9iZWZvcmVfVEVTVF9GX2luX3NhbWVf
dGVzdF9jYXNlLCBEZWZpbmVkVXNpbmdURVNUKSB7fQotCi0vLyBFeHBlY3RlZCB0byBmYWlsLiAg
V2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gY2hlY2sgdGhhdCBHb29nbGUgVGVzdAotLy8g
Z2VuZXJhdGVzIHRoZSByaWdodCBlcnJvciBtZXNzYWdlLgotVEVTVF9GKFRFU1RfYmVmb3JlX1RF
U1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwgRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCkg
ewotfQotCi0vLyBVc2VkIGZvciB0ZXN0aW5nIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgYW5k
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkuCi1pbnQgZ2xvYmFsX2ludGVnZXIgPSAwOwotCi0vLyBU
ZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJlZmVyZW5jZSBnbG9iYWwg
dmFyaWFibGVzLgotVEVTVChFeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LCBDYW5SZWZlcmVuY2VH
bG9iYWxWYXJpYWJsZXMpIHsKLSAgZ2xvYmFsX2ludGVnZXIgPSAwOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7Ci0gICAgRVhQRUNUX0VRKDEsIGdsb2JhbF9pbnRlZ2VyKSA8PCAiRXhwZWN0
ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJl
LiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgY2FuIHJl
ZmVyZW5jZSBsb2NhbCB2YXJpYWJsZXMKLS8vIChzdGF0aWMgb3Igbm90KS4KLVRFU1QoRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxWYXJpYWJsZXMpIHsKLSAgaW50
IG0gPSAwOwotICBzdGF0aWMgaW50IG47Ci0gIG4gPSAxOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7Ci0gICAgRVhQRUNUX0VRKG0sIG4pIDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVy
ZS4iOwotICB9LCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBzdWNjZWVkcyB3aGVuIHRoZXJlIGlzIGV4
YWN0bHkKLS8vIG9uZSBub24tZmF0YWwgZmFpbHVyZSBhbmQgbm8gZmF0YWwgZmFpbHVyZS4KLVRF
U1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZh
dGFsRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7Ci0gICAgQUREX0ZBSUxV
UkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIkV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBpcyBubwotLy8gbm9uLWZhdGFsIGZhaWx1cmUuCi1U
RVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNOb05vbmZhdGFs
RmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCi0vLyBub24tZmF0
YWwgZmFpbHVyZXMuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRo
ZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWls
dXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBBRERfRkFJTFVSRSgp
IDw8ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLiI7Ci0gICAgQUREX0ZBSUxVUkUoKSA8
PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUgMi4iOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG9u
ZSBmYXRhbAotLy8gZmFpbHVyZS4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFp
bHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZSkgewotICBwcmludGYoIihleHBlY3RpbmcgYSBm
YWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBGQUlMKCkgPDwg
IkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5n
Ci0vLyB0ZXN0ZWQgcmV0dXJucy4KLVRFU1QoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgRmFp
bHNXaGVuU3RhdGVtZW50UmV0dXJucykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJl
KVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICByZXR1cm47Ci0gIH0sICIi
KTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBzdGF0ZW1lbnQgYmVpbmcKLS8vIHRl
c3RlZCB0aHJvd3MuCi1URVNUKEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblN0
YXRlbWVudFRocm93cykgewotICBwcmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0g
IHRyeSB7Ci0gICAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoewotICAgICAgdGhyb3cgMDsKLSAg
ICB9LCAiIik7Ci0gIH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKLSAgfQotfQotCi0jZW5kaWYg
IC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoKSBjYW4gcmVmZXJlbmNlIGdsb2JhbCB2YXJpYWJsZXMuCi1URVNUKEV4cGVjdEZhdGFs
RmFpbHVyZVRlc3QsIENhblJlZmVyZW5jZUdsb2JhbFZhcmlhYmxlcykgewotICBnbG9iYWxfaW50
ZWdlciA9IDA7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICBBU1NFUlRfRVEoMSwgZ2xv
YmFsX2ludGVnZXIpIDw8ICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gIH0sICJFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlM
VVJFKCkgY2FuIHJlZmVyZW5jZSBsb2NhbCBzdGF0aWMKLS8vIHZhcmlhYmxlcy4KLVRFU1QoRXhw
ZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2FuUmVmZXJlbmNlTG9jYWxTdGF0aWNWYXJpYWJsZXMpIHsK
LSAgc3RhdGljIGludCBuOwotICBuID0gMTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
IEFTU0VSVF9FUSgwLCBuKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotICB9LCAiRXhw
ZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSgpIHN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgZXhhY3RseQotLy8gb25lIGZhdGFsIGZh
aWx1cmUgYW5kIG5vIG5vbi1mYXRhbCBmYWlsdXJlLgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LCBTdWNjZWVkc1doZW5UaGVyZUlzT25lRmF0YWxGYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsKLSAgICBGQUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLSAg
fSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZXJlIGlzIG5vIGZhdGFsCi0vLyBmYWlsdXJl
LgotVEVTVChFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBGYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZh
aWx1cmUpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRSh7Ci0gIH0sICIiKTsKLX0KLQotLy8gQSBoZWxwZXIgZm9yIGdlbmVyYXRp
bmcgYSBmYXRhbCBmYWlsdXJlLgotdm9pZCBGYXRhbEZhaWx1cmUoKSB7Ci0gIEZBSUwoKSA8PCAi
RXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRB
TF9GQUlMVVJFKCkgZmFpbHMgd2hlbiB0aGVyZSBhcmUgdHdvCi0vLyBmYXRhbCBmYWlsdXJlcy4K
LVRFU1QoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZh
aWx1cmVzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyBhIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoewotICAgIEZhdGFsRmFpbHVyZSgpOwotICAgIEZhdGFsRmFpbHVyZSgp
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBm
YWlscyB3aGVuIHRoZXJlIGlzIG9uZSBub24tZmF0YWwKLS8vIGZhaWx1cmUuCi1URVNUKEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3QsIEZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUpIHsK
LSAgcHJpbnRmKCIoZXhwZWN0aW5nIGEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUu
IjsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyB0aGF0IEVYUEVDVF9GQVRBTF9GQUlMVVJFKCkg
ZmFpbHMgd2hlbiB0aGUgc3RhdGVtZW50IGJlaW5nCi0vLyB0ZXN0ZWQgcmV0dXJucy4KLVRFU1Qo
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucykgewotICBw
cmludGYoIihleHBlY3RpbmcgYSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsKLSAgICByZXR1cm47Ci0gIH0sICIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05T
Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoKSBmYWlscyB3aGVuIHRoZSBz
dGF0ZW1lbnQgYmVpbmcKLS8vIHRlc3RlZCB0aHJvd3MuCi1URVNUKEV4cGVjdEZhdGFsRmFpbHVy
ZVRlc3QsIEZhaWxzV2hlblN0YXRlbWVudFRocm93cykgewotICBwcmludGYoIihleHBlY3Rpbmcg
YSBmYWlsdXJlKVxuIik7Ci0gIHRyeSB7Ci0gICAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoewotICAg
ICAgdGhyb3cgMDsKLSAgICB9LCAiIik7Ci0gIH0gY2F0Y2goaW50KSB7ICAvLyBOT0xJTlQKLSAg
fQotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRoaXMgI2lmZGVm
IGJsb2NrIHRlc3RzIHRoZSBvdXRwdXQgb2YgdmFsdWUtcGFyYW1ldGVyaXplZCB0ZXN0cy4KLQot
I2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0KLXN0ZDo6c3RyaW5nIFBhcmFtTmFtZUZ1bmMoY29u
c3QgdGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzdGQ6OnN0cmluZz4mIGluZm8pIHsKLSAgcmV0dXJu
IGluZm8ucGFyYW07Ci19Ci0KLWNsYXNzIFBhcmFtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiB7Ci19OwotCi1URVNUX1AoUGFyYW1UZXN0LCBTdWNjZXNz
KSB7Ci0gIEVYUEVDVF9FUSgiYSIsIEdldFBhcmFtKCkpOwotfQotCi1URVNUX1AoUGFyYW1UZXN0
LCBGYWlsdXJlKSB7Ci0gIEVYUEVDVF9FUSgiYiIsIEdldFBhcmFtKCkpIDw8ICJFeHBlY3RlZCBm
YWlsdXJlIjsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoUHJpbnRpbmdTdHJpbmdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6VmFsdWVzKHN0ZDo6c3RyaW5nKCJhIikpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1OYW1lRnVuYyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QK
LQotLy8gVGhpcyAjaWZkZWYgYmxvY2sgdGVzdHMgdGhlIG91dHB1dCBvZiB0eXBlZCB0ZXN0cy4K
LSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNz
IFR5cGVkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FT
RShUeXBlZFRlc3QsIHRlc3Rpbmc6OlR5cGVzPGludD4pOwotCi1UWVBFRF9URVNUKFR5cGVkVGVz
dCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMCwgVHlwZVBhcmFtKCkpOwotfQotCi1UWVBFRF9U
RVNUKFR5cGVkVGVzdCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRVEoMSwgVHlwZVBhcmFtKCkpIDw8
ICJFeHBlY3RlZCBmYWlsdXJlIjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVT
VAotCi0vLyBUaGlzICNpZmRlZiBibG9jayB0ZXN0cyB0aGUgb3V0cHV0IG9mIHR5cGUtcGFyYW1l
dGVyaXplZCB0ZXN0cy4KLSNpZiBHVEVTVF9IQVNfVFlQRURfVEVTVF9QCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0UCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLX07
Ci0KLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFApOwotCi1UWVBFRF9URVNUX1AoVHlwZWRU
ZXN0UCwgU3VjY2VzcykgewotICBFWFBFQ1RfRVEoMFUsIFR5cGVQYXJhbSgpKTsKLX0KLQotVFlQ
RURfVEVTVF9QKFR5cGVkVGVzdFAsIEZhaWx1cmUpIHsKLSAgRVhQRUNUX0VRKDFVLCBUeXBlUGFy
YW0oKSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotfQotCi1SRUdJU1RFUl9UWVBFRF9URVNUX0NB
U0VfUChUeXBlZFRlc3RQLCBTdWNjZXNzLCBGYWlsdXJlKTsKLQotdHlwZWRlZiB0ZXN0aW5nOjpU
eXBlczx1bnNpZ25lZCBjaGFyLCB1bnNpZ25lZCBpbnQ+IFVuc2lnbmVkVHlwZXM7Ci1JTlNUQU5U
SUFURV9UWVBFRF9URVNUX0NBU0VfUChVbnNpZ25lZCwgVHlwZWRUZXN0UCwgVW5zaWduZWRUeXBl
cyk7Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0jaWYgR1RFU1RfSEFT
X0RFQVRIX1RFU1QKLQotLy8gV2UgcmVseSBvbiB0aGUgZ29sZGVuIGZpbGUgdG8gdmVyaWZ5IHRo
YXQgdGVzdHMgd2hvc2UgdGVzdCBjYXNlCi0vLyBuYW1lIGVuZHMgd2l0aCBEZWF0aFRlc3QgYXJl
IHJ1biBmaXJzdC4KLQotVEVTVChBRGVhdGhUZXN0LCBTaG91bGRSdW5GaXJzdCkgewotfQotCi0j
IGlmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLS8vIFdlIHJlbHkgb24gdGhlIGdvbGRlbiBmaWxl
IHRvIHZlcmlmeSB0aGF0IHR5cGVkIHRlc3RzIHdob3NlIHRlc3QKLS8vIGNhc2UgbmFtZSBlbmRz
IHdpdGggRGVhdGhUZXN0IGFyZSBydW4gZmlyc3QuCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
Y2xhc3MgQVR5cGVkRGVhdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotfTsKLQotdHlw
ZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwotVFlQRURfVEVT
VF9DQVNFKEFUeXBlZERlYXRoVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQotVFlQRURfVEVTVChBVHlw
ZWREZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLSMgZW5kaWYgIC8vIEdURVNUX0hB
U19UWVBFRF9URVNUCi0KLSMgaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi0KLS8vIFdlIHJl
bHkgb24gdGhlIGdvbGRlbiBmaWxlIHRvIHZlcmlmeSB0aGF0IHR5cGUtcGFyYW1ldGVyaXplZCB0
ZXN0cwotLy8gd2hvc2UgdGVzdCBjYXNlIG5hbWUgZW5kcyB3aXRoIERlYXRoVGVzdCBhcmUgcnVu
IGZpcnN0LgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEFUeXBlUGFyYW1EZWF0aFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChBVHlw
ZVBhcmFtRGVhdGhUZXN0KTsKLQotVFlQRURfVEVTVF9QKEFUeXBlUGFyYW1EZWF0aFRlc3QsIFNo
b3VsZFJ1bkZpcnN0KSB7Ci19Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKEFUeXBlUGFy
YW1EZWF0aFRlc3QsIFNob3VsZFJ1bkZpcnN0KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9D
QVNFX1AoTXksIEFUeXBlUGFyYW1EZWF0aFRlc3QsIE51bWVyaWNUeXBlcyk7Ci0KLSMgZW5kaWYg
IC8vIEdURVNUX0hBU19UWVBFRF9URVNUX1AKLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfREVBVEhf
VEVTVAotCi0vLyBUZXN0cyB2YXJpb3VzIGZhaWx1cmUgY29uZGl0aW9ucyBvZgotLy8gRVhQRUNU
X3ssTk9OfUZBVEFMX0ZBSUxVUkV7LF9PTl9BTExfVEhSRUFEU30uCi1jbGFzcyBFeHBlY3RGYWls
dXJlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwdWJsaWM6ICAvLyBNdXN0IGJlIHB1
YmxpYyBhbmQgbm90IHByb3RlY3RlZCBkdWUgdG8gYSBidWcgaW4gZysrIDMuNC4yLgotICBlbnVt
IEZhaWx1cmVNb2RlIHsKLSAgICBGQVRBTF9GQUlMVVJFLAotICAgIE5PTkZBVEFMX0ZBSUxVUkUK
LSAgfTsKLSAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZShGYWlsdXJlTW9kZSBmYWlsdXJlKSB7Ci0g
ICAgaWYgKGZhaWx1cmUgPT0gRkFUQUxfRkFJTFVSRSkgewotICAgICAgRkFJTCgpIDw8ICJFeHBl
Y3RlZCBmYXRhbCBmYWlsdXJlLiI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEFERF9GQUlMVVJFKCkg
PDwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gICAgfQotICB9Ci19OwotCi1URVNU
X0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZSkgewotICAvLyBFeHBlY3Rl
ZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2VlZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZh
aWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQg
ZmF0YWwgZmFpbHVyZS4iKTsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBh
IG5vbi1mYXRhbCBmYWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7
Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSksICJF
eHBlY3RlZCBub24tZmF0YWwgIgotICAgICAgICAgICAgICAgICAgICAgICAiZmFpbHVyZS4iKTsK
LSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDEgZmFpbHVyZSlcbiIp
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLCAiU29t
ZSBvdGhlciBmYXRhbCBmYWlsdXJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
LiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVy
ZSkgewotICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBw
cmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotICAvLyBFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
QWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0g
IC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKSwg
IlNvbWUgb3RoZXIgbm9uLWZhdGFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWx1
cmUuIik7Ci19Ci0KLSNpZiBHVEVTVF9JU19USFJFQURTQUZFCi0KLWNsYXNzIEV4cGVjdEZhaWx1
cmVXaXRoVGhyZWFkc1Rlc3QgOiBwdWJsaWMgRXhwZWN0RmFpbHVyZVRlc3QgewotIHByb3RlY3Rl
ZDoKLSAgc3RhdGljIHZvaWQgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRmFpbHVyZU1vZGUgZmFp
bHVyZSkgewotICAgIFRocmVhZFdpdGhQYXJhbTxGYWlsdXJlTW9kZT4gdGhyZWFkKCZBZGRGYWls
dXJlLCBmYWlsdXJlLCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotICB9Ci19OwotCi1URVNU
X0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0RmF0YWxGYWlsdXJlKSB7Ci0g
IC8vIFdlIG9ubHkgaW50ZXJjZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgcHJpbnRmKCIoZXhw
ZWN0aW5nIDIgZmFpbHVyZXMpXG4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVy
ZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICJF
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwotfQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhU
aHJlYWRzVGVzdCwgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlKSB7Ci0gIC8vIFdlIG9ubHkgaW50ZXJj
ZXB0IHRoZSBjdXJyZW50IHRocmVhZC4KLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgZmFpbHVyZXMp
XG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQo
Tk9ORkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBu
b24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotdHlwZWRlZiBFeHBlY3RGYWlsdXJlV2l0aFRocmVh
ZHNUZXN0IFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdDsKLQotLy8gVGVzdHMg
dGhhdCB0aGUgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgb25seSBjYXRjaGVzIGZh
aWx1cmVzIGZyb20KLS8vIHRoZSBjdXJyZW50IHRocmVhZCBpZiBpdCBpcyBpbnN0YW50aWF0ZWQg
d2l0aCBJTlRFUkNFUFRfT05MWV9DVVJSRU5UX1RIUkVBRC4KLVRFU1RfRihTY29wZWRGYWtlVGVz
dFBhcnRSZXN1bHRSZXBvcnRlclRlc3QsIEludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFkKSB7Ci0g
IHByaW50ZigiKGV4cGVjdGluZyAyIGZhaWx1cmVzKVxuIik7Ci0gIFRlc3RQYXJ0UmVzdWx0QXJy
YXkgcmVzdWx0czsKLSAgewotICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIHJl
cG9ydGVyKAotICAgICAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcjo6SU5URVJD
RVBUX09OTFlfQ1VSUkVOVF9USFJFQUQsCi0gICAgICAgICZyZXN1bHRzKTsKLSAgICBBZGRGYWls
dXJlSW5PdGhlclRocmVhZChGQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlSW5PdGhlclRo
cmVhZChOT05GQVRBTF9GQUlMVVJFKTsKLSAgfQotICAvLyBUaGUgdHdvIGZhaWx1cmVzIHNob3Vs
ZCBub3QgaGF2ZSBiZWVuIGludGVyY2VwdGVkLgotICBFWFBFQ1RfRVEoMCwgcmVzdWx0cy5zaXpl
KCkpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNf
VEhSRUFEU0FGRQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVy
ZU9uQWxsVGhyZWFkcykgewotICAvLyBFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLCBidXQgc3VjY2Vl
ZHMuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoU1VDQ0VFRCgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVy
ZS4iKTsKLSAgLy8gRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIG5vbi1mYXRhbCBm
YWlsdXJlLgotICBwcmludGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZS4iKTsKLSAgLy8gV3JvbmcgbWVzc2FnZS4KLSAgcHJpbnRmKCIoZXhwZWN0aW5n
IDEgZmFpbHVyZSlcbiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhB
ZGRGYWlsdXJlKEZBVEFMX0ZBSUxVUkUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIpOwotfQotCi1URVNU
X0YoRXhwZWN0RmFpbHVyZVRlc3QsIEV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcykg
ewotICAvLyBFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IHN1Y2NlZWRzLgotICBwcmlu
dGYoIihleHBlY3RpbmcgMSBmYWlsdXJlKVxuIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
X09OX0FMTF9USFJFQURTKFNVQ0NFRUQoKSwgIkV4cGVjdGVkIG5vbi1mYXRhbCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsdXJlLiIpOwotICAvLyBFeHBl
Y3RlZCBub24tZmF0YWwgZmFpbHVyZSwgYnV0IGdvdCBhIGZhdGFsIGZhaWx1cmUuCi0gIHByaW50
ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVf
T05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIik7Ci0g
IC8vIFdyb25nIG1lc3NhZ2UuCi0gIHByaW50ZigiKGV4cGVjdGluZyAxIGZhaWx1cmUpXG4iKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoQWRkRmFpbHVyZShOT05G
QVRBTF9GQUlMVVJFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1cmUuIik7Ci19Ci0KLQotLy8gVHdvIHRlc3QgZW52
aXJvbm1lbnRzIGZvciB0ZXN0aW5nIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudCgp
LgotCi1jbGFzcyBGb29FbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZpcm9ubWVudCB7
Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRmKCIlcyIsICJG
b29FbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQotCi0gIHZpcnR1YWwgdm9p
ZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwgIkZvb0Vudmlyb25tZW50OjpUZWFyRG93
bigpIGNhbGxlZC5cbiIpOwotICAgIEZBSUwoKSA8PCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4i
OwotICB9Ci19OwotCi1jbGFzcyBCYXJFbnZpcm9ubWVudCA6IHB1YmxpYyB0ZXN0aW5nOjpFbnZp
cm9ubWVudCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgcHJpbnRm
KCIlcyIsICJCYXJFbnZpcm9ubWVudDo6U2V0VXAoKSBjYWxsZWQuXG4iKTsKLSAgfQotCi0gIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBwcmludGYoIiVzIiwgIkJhckVudmlyb25tZW50
OjpUZWFyRG93bigpIGNhbGxlZC5cbiIpOwotICAgIEFERF9GQUlMVVJFKCkgPDwgIkV4cGVjdGVk
IG5vbi1mYXRhbCBmYWlsdXJlLiI7Ci0gIH0KLX07Ci0KLS8vIFRoZSBtYWluIGZ1bmN0aW9uLgot
Ly8KLS8vIFRoZSBpZGVhIGlzIHRvIHVzZSBHb29nbGUgVGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0
cyB3ZSBoYXZlIGRlZmluZWQgKHNvbWUKLS8vIG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwp
LCBhbmQgdGhlbiBjb21wYXJlIHRoZSB0ZXN0IHJlc3VsdHMKLS8vIHdpdGggdGhlICJnb2xkZW4i
IGZpbGUuCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6R1RF
U1RfRkxBRyhwcmludF90aW1lKSA9IGZhbHNlOwotCi0gIC8vIFdlIGp1c3QgcnVuIHRoZSB0ZXN0
cywga25vd2luZyBzb21lIG9mIHRoZW0gYXJlIGludGVuZGVkIHRvIGZhaWwuCi0gIC8vIFdlIHdp
bGwgdXNlIGEgc2VwYXJhdGUgUHl0aG9uIHNjcmlwdCB0byBjb21wYXJlIHRoZSBvdXRwdXQgb2YK
LSAgLy8gdGhpcyBwcm9ncmFtIHdpdGggdGhlIGdvbGRlbiBmaWxlLgotCi0gIC8vIEl0J3MgaGFy
ZCB0byB0ZXN0IEluaXRHb29nbGVUZXN0KCkgZGlyZWN0bHksIGFzIGl0IGhhcyBtYW55Ci0gIC8v
IGdsb2JhbCBzaWRlIGVmZmVjdHMuICBUaGUgZm9sbG93aW5nIGxpbmUgc2VydmVzIGFzIGEgc2Fu
aXR5IHRlc3QKLSAgLy8gZm9yIGl0LgotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7Ci0gIGJvb2wgaW50ZXJuYWxfc2tpcF9lbnZpcm9ubWVudF9hbmRfYWRfaG9jX3Rlc3Rz
ID0KLSAgICAgIHN0ZDo6Y291bnQoYXJndiwgYXJndiArIGFyZ2MsCi0gICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKCJpbnRlcm5hbF9za2lwX2Vudmlyb25tZW50X2FuZF9hZF9ob2NfdGVzdHMi
KSkgPiAwOwotCi0jaWYgR1RFU1RfSEFTX0RFQVRIX1RFU1QKLSAgaWYgKHRlc3Rpbmc6OmludGVy
bmFsOjpHVEVTVF9GTEFHKGludGVybmFsX3J1bl9kZWF0aF90ZXN0KSAhPSAiIikgewotICAgIC8v
IFNraXAgdGhlIHVzdWFsIG91dHB1dCBjYXB0dXJpbmcgaWYgd2UncmUgcnVubmluZyBhcyB0aGUg
Y2hpbGQKLSAgICAvLyBwcm9jZXNzIG9mIGFuIHRocmVhZHNhZmUtc3R5bGUgZGVhdGggdGVzdC4K
LSMgaWYgR1RFU1RfT1NfV0lORE9XUwotICAgIHBvc2l4OjpGUmVvcGVuKCJudWw6IiwgInciLCBz
dGRvdXQpOwotIyBlbHNlCi0gICAgcG9zaXg6OkZSZW9wZW4oIi9kZXYvbnVsbCIsICJ3Iiwgc3Rk
b3V0KTsKLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1MKLSAgICByZXR1cm4gUlVOX0FMTF9U
RVNUUygpOwotICB9Ci0jZW5kaWYgIC8vIEdURVNUX0hBU19ERUFUSF9URVNUCi0KLSAgaWYgKGlu
dGVybmFsX3NraXBfZW52aXJvbm1lbnRfYW5kX2FkX2hvY190ZXN0cykKLSAgICByZXR1cm4gUlVO
X0FMTF9URVNUUygpOwotCi0gIC8vIFJlZ2lzdGVycyB0d28gZ2xvYmFsIHRlc3QgZW52aXJvbm1l
bnRzLgotICAvLyBUaGUgZ29sZGVuIGZpbGUgdmVyaWZpZXMgdGhhdCB0aGV5IGFyZSBzZXQgdXAg
aW4gdGhlIG9yZGVyIHRoZXkKLSAgLy8gYXJlIHJlZ2lzdGVyZWQsIGFuZCB0b3JuIGRvd24gaW4g
dGhlIHJldmVyc2Ugb3JkZXIuCi0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChu
ZXcgRm9vRW52aXJvbm1lbnQpOwotICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQo
bmV3IEJhckVudmlyb25tZW50KTsKLQotICByZXR1cm4gUnVuQWxsVGVzdHMoKTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfb3V0cHV0X3Rlc3RfZ29sZGVuX2xpbi50eHQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjIzZDU2MGUyZDkuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X291dHB1dF90ZXN0X2dvbGRlbl9saW4udHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNzQzICswLDAgQEAKLVRoZSBub24tdGVzdCBwYXJ0IG9mIHRoZSBjb2Rl
IGlzIGV4cGVjdGVkIHRvIGhhdmUgMiBmYWlsdXJlcy4KLQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1FeHBlY3RlZDog
dHJ1ZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiAy
Ci1UbyBiZSBlcXVhbCB0bzogMwotG1swOzMybVs9PT09PT09PT09XSAbW21SdW5uaW5nIDY2IHRl
c3RzIGZyb20gMjkgdGVzdCBjYXNlcy4KLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttR2xvYmFsIHRl
c3QgZW52aXJvbm1lbnQgc2V0LXVwLgotRm9vRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgot
QmFyRW52aXJvbm1lbnQ6OlNldFVwKCkgY2FsbGVkLgotG1swOzMybVstLS0tLS0tLS0tXSAbW20x
IHRlc3QgZnJvbSBBRGVhdGhUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUFEZWF0aFRlc3Qu
U2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttQURlYXRoVGVzdC5TaG91bGRS
dW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBBVHlwZWREZWF0aFRl
c3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUFUeXBl
ZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbUFUeXBl
ZERlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVz
dCBmcm9tIEFUeXBlZERlYXRoVGVzdC8xLCB3aGVyZSBUeXBlUGFyYW0gPSBkb3VibGUKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDsz
Mm1bICAgICAgIE9LIF0gG1ttQVR5cGVkRGVhdGhUZXN0LzEuU2hvdWxkUnVuRmlyc3QKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTXkvQVR5cGVQYXJhbURlYXRoVGVzdC8wLCB3
aGVyZSBUeXBlUGFyYW0gPSBpbnQKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTXkvQVR5cGVQYXJh
bURlYXRoVGVzdC8wLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWyAgICAgICBPSyBdIBtbbU15L0FU
eXBlUGFyYW1EZWF0aFRlc3QvMC5TaG91bGRSdW5GaXJzdAotG1swOzMybVstLS0tLS0tLS0tXSAb
W20xIHRlc3QgZnJvbSBNeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEsIHdoZXJlIFR5cGVQYXJhbSA9
IGRvdWJsZQotG1swOzMybVsgUlVOICAgICAgXSAbW21NeS9BVHlwZVBhcmFtRGVhdGhUZXN0LzEu
U2hvdWxkUnVuRmlyc3QKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttTXkvQVR5cGVQYXJhbURlYXRo
VGVzdC8xLlNob3VsZFJ1bkZpcnN0Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJv
bSBQYXNzaW5nVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5n
VGVzdDEKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttUGFzc2luZ1Rlc3QuUGFzc2luZ1Rlc3QxCi0b
WzA7MzJtWyBSVU4gICAgICBdIBtbbVBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotG1swOzMybVsg
ICAgICAgT0sgXSAbW21QYXNzaW5nVGVzdC5QYXNzaW5nVGVzdDIKLRtbMDszMm1bLS0tLS0tLS0t
LV0gG1ttMiB0ZXN0cyBmcm9tIE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3RlZDoga0dvbGRlblN0cmluZwot
ICAgICAgV2hpY2ggaXM6ICJcIkxpbmUiCi1UbyBiZSBlcXVhbCB0bzogYWN0dWFsCi0gICAgICBX
aGljaCBpczogImFjdHVhbCBcInN0cmluZ1wiIgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLSAgICAgIEV4cGVjdGVkOiBnb2xkZW4KLSAgICAgIFdoaWNoIGlzOiAiXCJMaW5lIgot
VG8gYmUgZXF1YWwgdG86IGFjdHVhbAotICAgICAgV2hpY2ggaXM6ICJhY3R1YWwgXCJzdHJpbmdc
IiIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5Fc2NhcGVzU3Ry
aW5nT3BlcmFuZHMKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9uZmF0YWxGYWlsdXJlVGVzdC5E
aWZmRm9yTG9uZ1N0cmluZ3MKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi0gICAg
ICBFeHBlY3RlZDogZ29sZGVuX3N0cgotICAgICAgV2hpY2ggaXM6ICJcIkxpbmVcMCAxXCJcbkxp
bmUgMiIKLVRvIGJlIGVxdWFsIHRvOiAiTGluZSAyIgotV2l0aCBkaWZmOgotQEAgLTEsMiBAQAot
LVwiTGluZVwwIDFcIgotIExpbmUgMgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbmZhdGFs
RmFpbHVyZVRlc3QuRGlmZkZvckxvbmdTdHJpbmdzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTMg
dGVzdHMgZnJvbSBGYXRhbEZhaWx1cmVUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUZhdGFs
RmFpbHVyZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSB0aGF0IHggc2hvdWxkIGJlIDEpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQot
ICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFsIHRvOiB4Ci0gICAgICBXaGljaCBpczogMgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vi
cm91dGluZQotG1swOzMybVsgUlVOICAgICAgXSAbW21GYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFp
bHVyZUluTmVzdGVkU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3Vs
ZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVk
OiAxCi1UbyBiZSBlcXVhbCB0bzogeAotICAgICAgV2hpY2ggaXM6IDIKLRtbMDszMW1bICBGQUlM
RUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJ
blN1YnJvdXRpbmUKLShleHBlY3RpbmcgYSBmYWlsdXJlIG9uIGZhbHNlKQotZ3Rlc3Rfb3V0cHV0
X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLVZhbHVlIG9mOiBmYWxzZQotICBBY3R1YWw6IGZhbHNlCi1F
eHBlY3RlZDogdHJ1ZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21GYXRhbEZhaWx1cmVUZXN0Lk5v
bmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3Qg
ZnJvbSBMb2dnaW5nVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21Mb2dnaW5nVGVzdC5JbnRl
cmxlYXZpbmdMb2dnaW5nQW5kQXNzZXJ0aW9ucwotKGV4cGVjdGluZyAyIGZhaWx1cmVzIG9uICgz
KSA+PSAoYVtpXSkpCi1pID09IDAKLWkgPT0gMQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZh
aWx1cmUKLUV4cGVjdGVkOiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgOQotaSA9PSAyCi1p
ID09IDMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogKDMpID49
IChhW2ldKSwgYWN0dWFsOiAzIHZzIDYKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rl
c3QuSW50ZXJsZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLRtbMDszMm1bLS0tLS0tLS0tLV0g
G1ttNiB0ZXN0cyBmcm9tIFNDT1BFRF9UUkFDRVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0
ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGhh
dmUgYSB0cmFjZS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IEV4cGVjdGVkIHRyYWNlCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVk
Ci1UaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQsIGFuZCBzaG91bGRuJ3QgaGF2ZSBhIHRyYWNlLgot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lk9iZXlzU2NvcGVzCi0bWzA7
MzJtWyBSVU4gICAgICBdIBtbbVNDT1BFRF9UUkFDRVRlc3QuV29ya3NJbkxvb3AKLShleHBlY3Rl
ZCB0byBmYWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVj
dGVkOiAyCi1UbyBiZSBlcXVhbCB0bzogbgotICAgICAgV2hpY2ggaXM6IDEKLUdvb2dsZSBUZXN0
IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IGkgPSAxCi1ndGVzdF9vdXRwdXRfdGVz
dF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFsIHRvOiBuCi0g
ICAgICBXaGljaCBpczogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogaSA9IDIKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5Xb3Jr
c0luTG9vcAotG1swOzMybVsgUlVOICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LldvcmtzSW5T
dWJyb3V0aW5lCi0oZXhwZWN0ZWQgdG8gZmFpbCkKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBG
YWlsdXJlCi0gICAgICBFeHBlY3RlZDogMgotVG8gYmUgZXF1YWwgdG86IG4KLSAgICAgIFdoaWNo
IGlzOiAxCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBuID0g
MQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiAxCi1U
byBiZSBlcXVhbCB0bzogbgotICAgICAgV2hpY2ggaXM6IDIKLUdvb2dsZSBUZXN0IHRyYWNlOgot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IG4gPSAyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVND
T1BFRF9UUkFDRVRlc3QuV29ya3NJblN1YnJvdXRpbmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1tt
U0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotKGV4cGVjdGVkIHRvIGZhaWwpCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVxdWFs
IHRvOiBuCi0gICAgICBXaGljaCBpczogMgotR29vZ2xlIFRlc3QgdHJhY2U6Ci1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogbiA9IDIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiAKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5DYW5CZU5lc3RlZAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21TQ09QRURfVFJBQ0VUZXN0LkNhbkJlUmVwZWF0ZWQKLShleHBlY3RlZCB0byBm
YWlsKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWls
dXJlIGlzIGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQS4KLUdvb2ds
ZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwgYW5k
IHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEgYW5kIEIuCi1Hb29nbGUgVGVzdCB0cmFjZToK
LWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBCCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogQQot
Z3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkLCBhbmQgc2hvdWxkIGNvbnRhaW4gdHJhY2UgcG9pbnQgQSwgQiwgYW5kIEMuCi1H
b29nbGUgVGVzdCB0cmFjZToKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBDCi1ndGVzdF9vdXRw
dXRfdGVzdF8uY2M6IzogQgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEEKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLVRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZCwg
YW5kIHNob3VsZCBjb250YWluIHRyYWNlIHBvaW50IEEsIEIsIGFuZCBELgotR29vZ2xlIFRlc3Qg
dHJhY2U6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRAotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBBCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtb
bVNDT1BFRF9UUkFDRVRlc3QuQ2FuQmVSZXBlYXRlZAotG1swOzMybVsgUlVOICAgICAgXSAbW21T
Q09QRURfVFJBQ0VUZXN0LldvcmtzQ29uY3VycmVudGx5Ci0oZXhwZWN0aW5nIDYgZmFpbHVyZXMp
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMxIChpbiB0aHJlYWQgQiwgb25seSB0cmFjZSBCIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRy
YWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEIKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIgKGluIHRocmVhZCBB
LCB0cmFjZSBBICYgQiBib3RoIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0
cHV0X3Rlc3RfLmNjOiM6IFRyYWNlIEEKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMgKGluIHRocmVhZCBCLCB0cmFjZSBBICYgQiBi
b3RoIGFsaXZlKS4KLUdvb2dsZSBUZXN0IHRyYWNlOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6
IFRyYWNlIEIKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVj
dGVkIGZhaWx1cmUgIzQgKGluIHRocmVhZCBCLCBvbmx5IHRyYWNlIEEgYWxpdmUpLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjNSAo
aW4gdGhyZWFkIEEsIG9ubHkgdHJhY2UgQSBhbGl2ZSkuCi1Hb29nbGUgVGVzdCB0cmFjZToKLWd0
ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBUcmFjZSBBCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlICM2IChpbiB0aHJlYWQgQSwgbm8gdHJh
Y2UgYWxpdmUpLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0Lldvcmtz
Q29uY3VycmVudGx5Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIE5vbkZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21O
b25GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLShleHBlY3RpbmcgNSBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWls
dXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0
b3IuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiBTZXRVcCgpLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUK
LUZhaWxlZAotRXhwZWN0ZWQgZmFpbHVyZSAjMywgaW4gdGhlIHRlc3QgYm9keS4KLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzQsIGlu
IFRlYXJEb3duLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhw
ZWN0ZWQgZmFpbHVyZSAjNSwgaW4gdGhlIHRlc3QgZml4dHVyZSBkJ3Rvci4KLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1
cmVJbkNvbnN0cnVjdG9yCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTEgdGVzdCBmcm9tIEZhdGFs
RmFpbHVyZUluRml4dHVyZUNvbnN0cnVjdG9yVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21G
YXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IK
LShleHBlY3RpbmcgMiBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYWlsdXJl
Ci1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIHRoZSB0ZXN0IGZpeHR1cmUgYyd0b3Iu
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMyLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21GYXRhbEZhaWx1cmVJbkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0
b3IKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMSB0ZXN0IGZyb20gTm9uRmF0YWxGYWlsdXJlSW5T
ZXRVcFRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTm9uRmF0YWxGYWlsdXJlSW5TZXRVcFRl
c3QuRmFpbHVyZUluU2V0VXAKLShleHBlY3RpbmcgNCBmYWlsdXJlcykKLWd0ZXN0X291dHB1dF90
ZXN0Xy5jYzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzEsIGluIFNldFVw
KCkuCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBm
YWlsdXJlICMyLCBpbiB0aGUgdGVzdCBmdW5jdGlvbi4KLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzMsIGluIFRlYXJEb3duKCkuCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJl
ICM0LCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21O
b25GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMybVstLS0tLS0t
LS0tXSAbW20xIHRlc3QgZnJvbSBGYXRhbEZhaWx1cmVJblNldFVwVGVzdAotG1swOzMybVsgUlVO
ICAgICAgXSAbW21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotKGV4cGVj
dGluZyAzIGZhaWx1cmVzKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxl
ZAotRXhwZWN0ZWQgZmFpbHVyZSAjMSwgaW4gU2V0VXAoKS4KLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCi1GYWlsZWQKLUV4cGVjdGVkIGZhaWx1cmUgIzIsIGluIFRlYXJEb3duKCku
Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWls
dXJlICMzLCBpbiB0aGUgdGVzdCBmaXh0dXJlIGQndG9yLgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21GYXRhbEZhaWx1cmVJblNldFVwVGVzdC5GYWlsdXJlSW5TZXRVcAotG1swOzMybVstLS0tLS0t
LS0tXSAbW20xIHRlc3QgZnJvbSBBZGRGYWlsdXJlQXRUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbUFkZEZhaWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVO
dW1iZXIKLWZvby5jYzo0MjogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYWlsdXJlIGluIGZv
by5jYwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21BZGRGYWlsdXJlQXRUZXN0Lk1lc3NhZ2VDb250
YWluc1NwZWNpZmllZEZpbGVBbmRMaW5lTnVtYmVyCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTQg
dGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VUZXN0Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1p
eGVkVXBUZXN0Q2FzZVRlc3QuRmlyc3RUZXN0RnJvbU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAg
ICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LkZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28K
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5TZWNvbmRUZXN0RnJv
bU5hbWVzcGFjZUZvbwotG1swOzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0
LlNlY29uZFRlc3RGcm9tTmFtZXNwYWNlRm9vCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbU1peGVk
VXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWwKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUZhaWxl
ZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0aGUgc2FtZSB0ZXN0
IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVkVXBUZXN0Q2FzZVRl
c3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VGb28gYW5kIHRlc3Qg
VGhpc1Nob3VsZEZhaWwKLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBmaXh0dXJlIGNsYXNzZXMu
ICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUgZnJvbSBkaWZmZXJlbnQg
bmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUgdGhlIHNhbWUgbmFtZS4g
IFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNsYXNzZXMgdG8gcHV0IHRo
ZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsCi0bWzA7MzJtWyBSVU4gICAgICBd
IBtbbU1peGVkVXBUZXN0Q2FzZVRlc3QuVGhpc1Nob3VsZEZhaWxUb28KLWd0ZXN0LmNjOiM6IEZh
aWx1cmUKLUZhaWxlZAotQWxsIHRlc3RzIGluIHRoZSBzYW1lIHRlc3QgY2FzZSBtdXN0IHVzZSB0
aGUgc2FtZSB0ZXN0IGZpeHR1cmUKLWNsYXNzLiAgSG93ZXZlciwgaW4gdGVzdCBjYXNlIE1peGVk
VXBUZXN0Q2FzZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IEZpcnN0VGVzdEZyb21OYW1lc3BhY2VG
b28gYW5kIHRlc3QgVGhpc1Nob3VsZEZhaWxUb28KLXVzaW5nIHR3byBkaWZmZXJlbnQgdGVzdCBm
aXh0dXJlIGNsYXNzZXMuICBUaGlzIGNhbiBoYXBwZW4gaWYKLXRoZSB0d28gY2xhc3NlcyBhcmUg
ZnJvbSBkaWZmZXJlbnQgbmFtZXNwYWNlcyBvciB0cmFuc2xhdGlvbgotdW5pdHMgYW5kIGhhdmUg
dGhlIHNhbWUgbmFtZS4gIFlvdSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIG9uZQotb2YgdGhlIGNs
YXNzZXMgdG8gcHV0IHRoZSB0ZXN0cyBpbnRvIGRpZmZlcmVudCB0ZXN0IGNhc2VzLgotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWlsVG9vCi0b
WzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBNaXhlZFVwVGVzdENhc2VXaXRoU2Ft
ZVRlc3ROYW1lVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRo
U2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1sw
OzMybVsgICAgICAgT0sgXSAbW21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5U
aGVTZWNvbmRUZXN0V2l0aFRoaXNOYW1lU2hvdWxkRmFpbAotG1swOzMybVsgUlVOICAgICAgXSAb
W21NaXhlZFVwVGVzdENhc2VXaXRoU2FtZVRlc3ROYW1lVGVzdC5UaGVTZWNvbmRUZXN0V2l0aFRo
aXNOYW1lU2hvdWxkRmFpbAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMg
aW4gdGhlIHNhbWUgdGVzdCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xh
c3MuICBIb3dldmVyLCBpbiB0ZXN0IGNhc2UgTWl4ZWRVcFRlc3RDYXNlV2l0aFNhbWVUZXN0TmFt
ZVRlc3QsCi15b3UgZGVmaW5lZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRG
YWlsIGFuZCB0ZXN0IFRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi11c2luZyB0
d28gZGlmZmVyZW50IHRlc3QgZml4dHVyZSBjbGFzc2VzLiAgVGhpcyBjYW4gaGFwcGVuIGlmCi10
aGUgdHdvIGNsYXNzZXMgYXJlIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgb3IgdHJhbnNsYXRp
b24KLXVuaXRzIGFuZCBoYXZlIHRoZSBzYW1lIG5hbWUuICBZb3Ugc2hvdWxkIHByb2JhYmx5IHJl
bmFtZSBvbmUKLW9mIHRoZSBjbGFzc2VzIHRvIHB1dCB0aGUgdGVzdHMgaW50byBkaWZmZXJlbnQg
dGVzdCBjYXNlcy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlV2l0aFNh
bWVUZXN0TmFtZVRlc3QuVGhlU2Vjb25kVGVzdFdpdGhUaGlzTmFtZVNob3VsZEZhaWwKLRtbMDsz
Mm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9tIFRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1l
X3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5f
c2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GCi0bWzA7MzJtWyAgICAgICBPSyBdIBtb
bVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNpbmdURVNUX0YK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttVEVTVF9GX2JlZm9yZV9URVNUX2luX3NhbWVfdGVzdF9j
YXNlLkRlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1G
YWlsZWQKLUFsbCB0ZXN0cyBpbiB0aGUgc2FtZSB0ZXN0IGNhc2UgbXVzdCB1c2UgdGhlIHNhbWUg
dGVzdCBmaXh0dXJlCi1jbGFzcywgc28gbWl4aW5nIFRFU1RfRiBhbmQgVEVTVCBpbiB0aGUgc2Ft
ZSB0ZXN0IGNhc2UgaXMKLWlsbGVnYWwuICBJbiB0ZXN0IGNhc2UgVEVTVF9GX2JlZm9yZV9URVNU
X2luX3NhbWVfdGVzdF9jYXNlLAotdGVzdCBEZWZpbmVkVXNpbmdURVNUX0YgaXMgZGVmaW5lZCB1
c2luZyBURVNUX0YgYnV0Ci10ZXN0IERlZmluZWRVc2luZ1RFU1RBbmRTaG91bGRGYWlsIGlzIGRl
ZmluZWQgdXNpbmcgVEVTVC4gIFlvdSBwcm9iYWJseQotd2FudCB0byBjaGFuZ2UgdGhlIFRFU1Qg
dG8gVEVTVF9GIG9yIG1vdmUgaXQgdG8gYW5vdGhlciB0ZXN0Ci1jYXNlLgotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21URVNUX0ZfYmVmb3JlX1RFU1RfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVz
aW5nVEVTVEFuZFNob3VsZEZhaWwKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttMiB0ZXN0cyBmcm9t
IFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZQotG1swOzMybVsgUlVOICAgICAg
XSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVT
VAotG1swOzMybVsgICAgICAgT0sgXSAbW21URVNUX2JlZm9yZV9URVNUX0ZfaW5fc2FtZV90ZXN0
X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVAotG1swOzMybVsgUlVOICAgICAgXSAbW21URVNUX2JlZm9y
ZV9URVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFp
bAotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRmFpbGVkCi1BbGwgdGVzdHMgaW4gdGhlIHNhbWUgdGVz
dCBjYXNlIG11c3QgdXNlIHRoZSBzYW1lIHRlc3QgZml4dHVyZQotY2xhc3MsIHNvIG1peGluZyBU
RVNUX0YgYW5kIFRFU1QgaW4gdGhlIHNhbWUgdGVzdCBjYXNlIGlzCi1pbGxlZ2FsLiAgSW4gdGVz
dCBjYXNlIFRFU1RfYmVmb3JlX1RFU1RfRl9pbl9zYW1lX3Rlc3RfY2FzZSwKLXRlc3QgRGVmaW5l
ZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbCBpcyBkZWZpbmVkIHVzaW5nIFRFU1RfRiBidXQKLXRl
c3QgRGVmaW5lZFVzaW5nVEVTVCBpcyBkZWZpbmVkIHVzaW5nIFRFU1QuICBZb3UgcHJvYmFibHkK
LXdhbnQgdG8gY2hhbmdlIHRoZSBURVNUIHRvIFRFU1RfRiBvciBtb3ZlIGl0IHRvIGFub3RoZXIg
dGVzdAotY2FzZS4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVEVTVF9iZWZvcmVfVEVTVF9GX2lu
X3NhbWVfdGVzdF9jYXNlLkRlZmluZWRVc2luZ1RFU1RfRkFuZFNob3VsZEZhaWwKLRtbMDszMm1b
LS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVu
Y2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttRXhwZWN0Tm9uZmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VMb2NhbFZhcmlhYmxl
cwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkNhblJl
ZmVyZW5jZUxvY2FsVmFyaWFibGVzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQotG1sw
OzMybVsgICAgICAgT0sgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LlN1Y2NlZWRzV2hl
blRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0
Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9Ob25mYXRhbEZhaWx1cmUKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc05vTm9uZmF0YWxG
YWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuVGhlcmVBcmVUd29Ob25mYXRhbEZhaWx1cmVzCi0oZXhwZWN0aW5nIGEgZmFpbHVy
ZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0g
IEFjdHVhbDogMiBmYWlsdXJlcwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IE5vbi1mYXRhbCBm
YWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZSAxLgotCi1ndGVzdF9v
dXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5v
bi1mYXRhbCBmYWlsdXJlIDIuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0
YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUFyZVR3b05vbmZhdGFsRmFpbHVyZXMKLRtbMDsz
Mm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVy
ZUlzT25lRmF0YWxGYWlsdXJlCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZh
aWx1cmUKLUV4cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBm
YWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRl
c3QuRmFpbHNXaGVuVGhlcmVJc09uZUZhdGFsRmFpbHVyZQotG1swOzMybVsgUlVOICAgICAgXSAb
W21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLShl
eHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9u
LWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBd
IBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50UmV0dXJucwot
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blN0YXRlbWVudFRocm93cwotKGV4cGVjdGluZyBhIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWls
dXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMm1bLS0tLS0tLS0tLV0gG1ttOCB0ZXN0cyBmcm9tIEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxG
YWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMKLRtbMDszMm1bICAgICAgIE9L
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVuY2VHbG9iYWxWYXJpYWJsZXMK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5DYW5SZWZlcmVu
Y2VMb2NhbFN0YXRpY1ZhcmlhYmxlcwotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRh
bEZhaWx1cmVUZXN0LkNhblJlZmVyZW5jZUxvY2FsU3RhdGljVmFyaWFibGVzCi0bWzA7MzJtWyBS
VU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuU3VjY2VlZHNXaGVuVGhlcmVJc09u
ZUZhdGFsRmFpbHVyZQotG1swOzMybVsgICAgICAgT0sgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVU
ZXN0LlN1Y2NlZWRzV2hlblRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6
IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDszMW1bICBGQUlMRUQg
IF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5UaGVyZUlzTm9GYXRhbEZhaWx1
cmUKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1do
ZW5UaGVyZUFyZVR3b0ZhdGFsRmFpbHVyZXMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3Qu
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDIgZmFp
bHVyZXMKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1F
eHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmF0YWwg
ZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMxbVsgIEZB
SUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvRmF0
YWxGYWlsdXJlcwotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0
LkZhaWxzV2hlblRoZXJlSXNPbmVOb25mYXRhbEZhaWx1cmUKLShleHBlY3RpbmcgYSBmYWlsdXJl
KQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1
YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQK
LUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09uZU5vbmZhdGFsRmFpbHVyZQot
G1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblN0
YXRlbWVudFJldHVybnMKLShleHBlY3RpbmcgYSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBBY3R1YWw6IDAgZmFpbHVyZXMKLRtbMDsz
MW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1l
bnRSZXR1cm5zCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3Qu
RmFpbHNXaGVuU3RhdGVtZW50VGhyb3dzCi0oZXhwZWN0aW5nIGEgZmFpbHVyZSkKLWd0ZXN0LmNj
OiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOiAwIGZhaWx1
cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuU3RhdGVtZW50VGhyb3dzCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBU
eXBlZFRlc3QvMCwgd2hlcmUgVHlwZVBhcmFtID0gaW50Ci0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bVR5cGVkVGVzdC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAgIE9LIF0gG1ttVHlwZWRUZXN0LzAu
U3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21UeXBlZFRlc3QvMC5GYWlsdXJlCi1ndGVz
dF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJlIGVx
dWFsIHRvOiBUeXBlUGFyYW0oKQotICAgICAgV2hpY2ggaXM6IDAKLUV4cGVjdGVkIGZhaWx1cmUK
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBh
cmFtID0gaW50Ci0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9U
eXBlZFRlc3RQLzAsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGNoYXIKLRtbMDszMm1bIFJV
TiAgICAgIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLRtbMDszMm1bICAgICAg
IE9LIF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLlN1Y2Nlc3MKLRtbMDszMm1bIFJVTiAgICAg
IF0gG1ttVW5zaWduZWQvVHlwZWRUZXN0UC8wLkZhaWx1cmUKLWd0ZXN0X291dHB1dF90ZXN0Xy5j
YzojOiBGYWlsdXJlCi0gICAgICBFeHBlY3RlZDogMVUKLSAgICAgIFdoaWNoIGlzOiAxCi1UbyBi
ZSBlcXVhbCB0bzogVHlwZVBhcmFtKCkKLSAgICAgIFdoaWNoIGlzOiAnXDAnCi1FeHBlY3RlZCBm
YWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWls
dXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzJtWy0tLS0tLS0tLS1d
IBtbbTIgdGVzdHMgZnJvbSBVbnNpZ25lZC9UeXBlZFRlc3RQLzEsIHdoZXJlIFR5cGVQYXJhbSA9
IHVuc2lnbmVkIGludAotG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQ
LzEuU3VjY2VzcwotG1swOzMybVsgICAgICAgT0sgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEu
U3VjY2VzcwotG1swOzMybVsgUlVOICAgICAgXSAbW21VbnNpZ25lZC9UeXBlZFRlc3RQLzEuRmFp
bHVyZQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiAx
VQotICAgICAgV2hpY2ggaXM6IDEKLVRvIGJlIGVxdWFsIHRvOiBUeXBlUGFyYW0oKQotICAgICAg
V2hpY2ggaXM6IDAKLUV4cGVjdGVkIGZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttVW5z
aWduZWQvVHlwZWRUZXN0UC8xLkZhaWx1cmUsIHdoZXJlIFR5cGVQYXJhbSA9IHVuc2lnbmVkIGlu
dAotG1swOzMybVstLS0tLS0tLS0tXSAbW200IHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVRlc3QK
LRtbMDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxGYWls
dXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVk
OiAxIGZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IFN1
Y2Nlc3M6Ci1TdWNjZWVkZWQKLQotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBG
YWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1
dF90ZXN0Xy5jYzojOiBOb24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZh
dGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZSBjb250YWluaW5nICJTb21lIG90aGVyIGZhdGFs
IGZhaWx1cmUgZXhwZWN0ZWQuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6Izog
RmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4KLQotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5FeHBlY3RGYXRhbEZhaWx1cmUKLRtb
MDszMm1bIFJVTiAgICAgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWls
dXJlCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVk
OiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzoj
OiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6
IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUKLSAgQWN0dWFsOgotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZh
dGFsIGZhaWx1cmUuCi0KLShleHBlY3RpbmcgMSBmYWlsdXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVy
ZQotRXhwZWN0ZWQ6IDEgbm9uLWZhdGFsIGZhaWx1cmUgY29udGFpbmluZyAiU29tZSBvdGhlciBu
b24tZmF0YWwgZmFpbHVyZS4iCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0Xy5jYzojOiBO
b24tZmF0YWwgZmFpbHVyZToKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0K
LRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdEZh
dGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGluZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzoj
OiBGYWlsdXJlCi1FeHBlY3RlZDogMSBmYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291
dHB1dF90ZXN0Xy5jYzojOiBTdWNjZXNzOgotU3VjY2VlZGVkCi0KLShleHBlY3RpbmcgMSBmYWls
dXJlKQotZ3Rlc3QuY2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6IDEgZmF0YWwgZmFpbHVyZQotICBB
Y3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1cmU6Ci1GYWls
ZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkK
LWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUgY29udGFpbmlu
ZyAiU29tZSBvdGhlciBmYXRhbCBmYWlsdXJlIGV4cGVjdGVkLiIKLSAgQWN0dWFsOgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhdGFsIGZhaWx1cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuCi0KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhw
ZWN0RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzJtWyBSVU4gICAgICBdIBtbbUV4cGVj
dEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhyZWFkcwotKGV4cGVjdGlu
ZyAxIGZhaWx1cmUpCi1ndGVzdC5jYzojOiBGYWlsdXJlCi1FeHBlY3RlZDogMSBub24tZmF0YWwg
ZmFpbHVyZQotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogU3VjY2VzczoKLVN1
Y2NlZWRlZAotCi0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDoKLWd0ZXN0X291dHB1dF90ZXN0
Xy5jYzojOiBGYXRhbCBmYWlsdXJlOgotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgot
Ci0oZXhwZWN0aW5nIDEgZmFpbHVyZSkKLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAx
IG5vbi1mYXRhbCBmYWlsdXJlIGNvbnRhaW5pbmcgIlNvbWUgb3RoZXIgbm9uLWZhdGFsIGZhaWx1
cmUuIgotICBBY3R1YWw6Ci1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogTm9uLWZhdGFsIGZhaWx1
cmU6Ci1GYWlsZWQKLUV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLgotCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5vbkZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcwotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20gRXhwZWN0RmFpbHVyZVdp
dGhUaHJlYWRzVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRo
cmVhZHNUZXN0LkV4cGVjdEZhdGFsRmFpbHVyZQotKGV4cGVjdGluZyAyIGZhaWx1cmVzKQotZ3Rl
c3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgZmF0YWwgZmFp
bHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVkOiAxIGZhdGFsIGZhaWx1cmUKLSAg
QWN0dWFsOiAwIGZhaWx1cmVzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVX
aXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxGYWlsdXJlCi0bWzA7MzJtWyBSVU4gICAgICBdIBtb
bUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0oZXhw
ZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotRmFp
bGVkCi1FeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4KLWd0ZXN0LmNjOiM6IEZhaWx1cmUKLUV4
cGVjdGVkOiAxIG5vbi1mYXRhbCBmYWlsdXJlCi0gIEFjdHVhbDogMCBmYWlsdXJlcwotG1swOzMx
bVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LkV4cGVjdE5vbkZh
dGFsRmFpbHVyZQotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJvbSBTY29wZWRGYWtl
VGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QKLRtbMDszMm1bIFJVTiAgICAgIF0gG1ttU2NvcGVk
RmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0LkludGVyY2VwdE9ubHlDdXJyZW50VGhyZWFk
Ci0oZXhwZWN0aW5nIDIgZmFpbHVyZXMpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVy
ZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbVNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRl
cmNlcHRPbmx5Q3VycmVudFRocmVhZAotG1swOzMybVstLS0tLS0tLS0tXSAbW20xIHRlc3QgZnJv
bSBQcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdAotG1swOzMybVsgUlVOICAg
ICAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wCi1n
dGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotICAgICAgRXhwZWN0ZWQ6IDEKLVRvIGJl
IGVxdWFsIHRvOiBHZXRQYXJhbSgpCi0gICAgICBXaGljaCBpczogMgotG1swOzMxbVsgIEZBSUxF
RCAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFtVGVzdC5GYWlscy8wLCB3
aGVyZSBHZXRQYXJhbSgpID0gMgotG1swOzMybVstLS0tLS0tLS0tXSAbW20yIHRlc3RzIGZyb20g
UHJpbnRpbmdTdHJpbmdzL1BhcmFtVGVzdAotG1swOzMybVsgUlVOICAgICAgXSAbW21QcmludGlu
Z1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQotG1swOzMybVsgICAgICAgT0sgXSAbW21Qcmlu
dGluZ1N0cmluZ3MvUGFyYW1UZXN0LlN1Y2Nlc3MvYQotG1swOzMybVsgUlVOICAgICAgXSAbW21Q
cmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNj
OiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiAiYiIKLVRvIGJlIGVxdWFsIHRvOiBHZXRQYXJh
bSgpCi0gICAgICBXaGljaCBpczogImEiCi1FeHBlY3RlZCBmYWlsdXJlCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVByaW50aW5nU3RyaW5ncy9QYXJhbVRlc3QuRmFpbHVyZS9hLCB3aGVyZSBHZXRQ
YXJhbSgpID0gImEiCi0bWzA7MzJtWy0tLS0tLS0tLS1dIBtbbUdsb2JhbCB0ZXN0IGVudmlyb25t
ZW50IHRlYXItZG93bgotQmFyRW52aXJvbm1lbnQ6OlRlYXJEb3duKCkgY2FsbGVkLgotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUZhaWxlZAotRXhwZWN0ZWQgbm9uLWZhdGFsIGZh
aWx1cmUuCi1Gb29FbnZpcm9ubWVudDo6VGVhckRvd24oKSBjYWxsZWQuCi1ndGVzdF9vdXRwdXRf
dGVzdF8uY2M6IzogRmFpbHVyZQotRmFpbGVkCi1FeHBlY3RlZCBmYXRhbCBmYWlsdXJlLgotG1sw
OzMybVs9PT09PT09PT09XSAbW202NiB0ZXN0cyBmcm9tIDI5IHRlc3QgY2FzZXMgcmFuLgotG1sw
OzMybVsgIFBBU1NFRCAgXSAbW20yMiB0ZXN0cy4KLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttNDQg
dGVzdHMsIGxpc3RlZCBiZWxvdzoKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9uZmF0YWxGYWls
dXJlVGVzdC5Fc2NhcGVzU3RyaW5nT3BlcmFuZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTm9u
ZmF0YWxGYWlsdXJlVGVzdC5EaWZmRm9yTG9uZ1N0cmluZ3MKLRtbMDszMW1bICBGQUlMRUQgIF0g
G1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRp
bmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1
cmVJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttTG9nZ2luZ1Rlc3QuSW50ZXJs
ZWF2aW5nTG9nZ2luZ0FuZEFzc2VydGlvbnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVE
X1RSQUNFVGVzdC5PYmV5c1Njb3BlcwotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJB
Q0VUZXN0LldvcmtzSW5Mb29wCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNDT1BFRF9UUkFDRVRl
c3QuV29ya3NJblN1YnJvdXRpbmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNF
VGVzdC5DYW5CZU5lc3RlZAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21TQ09QRURfVFJBQ0VUZXN0
LkNhbkJlUmVwZWF0ZWQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttU0NPUEVEX1RSQUNFVGVzdC5X
b3Jrc0NvbmN1cnJlbnRseQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21Ob25GYXRhbEZhaWx1cmVJ
bkZpeHR1cmVDb25zdHJ1Y3RvclRlc3QuRmFpbHVyZUluQ29uc3RydWN0b3IKLRtbMDszMW1bICBG
QUlMRUQgIF0gG1ttRmF0YWxGYWlsdXJlSW5GaXh0dXJlQ29uc3RydWN0b3JUZXN0LkZhaWx1cmVJ
bkNvbnN0cnVjdG9yCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU5vbkZhdGFsRmFpbHVyZUluU2V0
VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUZhdGFsRmFpbHVy
ZUluU2V0VXBUZXN0LkZhaWx1cmVJblNldFVwCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUFkZEZh
aWx1cmVBdFRlc3QuTWVzc2FnZUNvbnRhaW5zU3BlY2lmaWVkRmlsZUFuZExpbmVOdW1iZXIKLRtb
MDszMW1bICBGQUlMRUQgIF0gG1ttTWl4ZWRVcFRlc3RDYXNlVGVzdC5UaGlzU2hvdWxkRmFpbAot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21NaXhlZFVwVGVzdENhc2VUZXN0LlRoaXNTaG91bGRGYWls
VG9vCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbU1peGVkVXBUZXN0Q2FzZVdpdGhTYW1lVGVzdE5h
bWVUZXN0LlRoZVNlY29uZFRlc3RXaXRoVGhpc05hbWVTaG91bGRGYWlsCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbVRFU1RfRl9iZWZvcmVfVEVTVF9pbl9zYW1lX3Rlc3RfY2FzZS5EZWZpbmVkVXNp
bmdURVNUQW5kU2hvdWxkRmFpbAotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21URVNUX2JlZm9yZV9U
RVNUX0ZfaW5fc2FtZV90ZXN0X2Nhc2UuRGVmaW5lZFVzaW5nVEVTVF9GQW5kU2hvdWxkRmFpbAot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNOb05vbmZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RO
b25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hlblRoZXJlQXJlVHdvTm9uZmF0YWxGYWlsdXJlcwot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3ROb25mYXRhbEZhaWx1cmVUZXN0LkZhaWxzV2hl
blRoZXJlSXNPbmVGYXRhbEZhaWx1cmUKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0Tm9u
ZmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRSZXR1cm5zCi0bWzA7MzFtWyAgRkFJ
TEVEICBdIBtbbUV4cGVjdE5vbmZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuU3RhdGVtZW50VGhy
b3dzCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNX
aGVuVGhlcmVJc05vRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZh
dGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVBcmVUd29GYXRhbEZhaWx1cmVzCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhdGFsRmFpbHVyZVRlc3QuRmFpbHNXaGVuVGhlcmVJc09u
ZU5vbmZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYXRhbEZhaWx1
cmVUZXN0LkZhaWxzV2hlblN0YXRlbWVudFJldHVybnMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1tt
RXhwZWN0RmF0YWxGYWlsdXJlVGVzdC5GYWlsc1doZW5TdGF0ZW1lbnRUaHJvd3MKLRtbMDszMW1b
ICBGQUlMRUQgIF0gG1ttVHlwZWRUZXN0LzAuRmFpbHVyZSwgd2hlcmUgVHlwZVBhcmFtID0gaW50
Ci0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVuc2lnbmVkL1R5cGVkVGVzdFAvMC5GYWlsdXJlLCB3
aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBjaGFyCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVVu
c2lnbmVkL1R5cGVkVGVzdFAvMS5GYWlsdXJlLCB3aGVyZSBUeXBlUGFyYW0gPSB1bnNpZ25lZCBp
bnQKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhwZWN0RmFpbHVyZVRlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVUZXN0LkV4cGVjdE5v
bkZhdGFsRmFpbHVyZQotG1swOzMxbVsgIEZBSUxFRCAgXSAbW21FeHBlY3RGYWlsdXJlVGVzdC5F
eHBlY3RGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMKLRtbMDszMW1bICBGQUlMRUQgIF0gG1ttRXhw
ZWN0RmFpbHVyZVRlc3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzCi0bWzA7MzFt
WyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rlc3QuRXhwZWN0RmF0YWxG
YWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbUV4cGVjdEZhaWx1cmVXaXRoVGhyZWFkc1Rl
c3QuRXhwZWN0Tm9uRmF0YWxGYWlsdXJlCi0bWzA7MzFtWyAgRkFJTEVEICBdIBtbbVNjb3BlZEZh
a2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyVGVzdC5JbnRlcmNlcHRPbmx5Q3VycmVudFRocmVhZAot
G1swOzMxbVsgIEZBSUxFRCAgXSAbW21QcmludGluZ0ZhaWxpbmdQYXJhbXMvRmFpbGluZ1BhcmFt
VGVzdC5GYWlscy8wLCB3aGVyZSBHZXRQYXJhbSgpID0gMgotG1swOzMxbVsgIEZBSUxFRCAgXSAb
W21QcmludGluZ1N0cmluZ3MvUGFyYW1UZXN0LkZhaWx1cmUvYSwgd2hlcmUgR2V0UGFyYW0oKSA9
ICJhIgotCi00NCBGQUlMRUQgVEVTVFMKLRtbMDszM20gIFlPVSBIQVZFIDEgRElTQUJMRUQgVEVT
VAotCi0bW21Ob3RlOiBHb29nbGUgVGVzdCBmaWx0ZXIgPSBGYXRhbEZhaWx1cmVUZXN0Lio6TG9n
Z2luZ1Rlc3QuKgotWz09PT09PT09PT1dIFJ1bm5pbmcgNCB0ZXN0cyBmcm9tIDIgdGVzdCBjYXNl
cy4KLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9ubWVudCBzZXQtdXAuCi1bLS0tLS0t
LS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QKLVsgUlVOICAgICAgXSBGYXRhbEZh
aWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUg
dGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAg
ICAgIEV4cGVjdGVkOiAxCi1UbyBiZSBlcXVhbCB0bzogeAotICAgICAgV2hpY2ggaXM6IDIKLVsg
IEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluU3Vicm91dGluZSAoPyBt
cykKLVsgUlVOICAgICAgXSBGYXRhbEZhaWx1cmVUZXN0LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vi
cm91dGluZQotKGV4cGVjdGluZyBhIGZhaWx1cmUgdGhhdCB4IHNob3VsZCBiZSAxKQotZ3Rlc3Rf
b3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLSAgICAgIEV4cGVjdGVkOiAxCi1UbyBiZSBlcXVh
bCB0bzogeAotICAgICAgV2hpY2ggaXM6IDIKLVsgIEZBSUxFRCAgXSBGYXRhbEZhaWx1cmVUZXN0
LkZhdGFsRmFpbHVyZUluTmVzdGVkU3Vicm91dGluZSAoPyBtcykKLVsgUlVOICAgICAgXSBGYXRh
bEZhaWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotKGV4cGVjdGluZyBhIGZh
aWx1cmUgb24gZmFsc2UpCi1ndGVzdF9vdXRwdXRfdGVzdF8uY2M6IzogRmFpbHVyZQotVmFsdWUg
b2Y6IGZhbHNlCi0gIEFjdHVhbDogZmFsc2UKLUV4cGVjdGVkOiB0cnVlCi1bICBGQUlMRUQgIF0g
RmF0YWxGYWlsdXJlVGVzdC5Ob25mYXRhbEZhaWx1cmVJblN1YnJvdXRpbmUgKD8gbXMpCi1bLS0t
LS0tLS0tLV0gMyB0ZXN0cyBmcm9tIEZhdGFsRmFpbHVyZVRlc3QgKD8gbXMgdG90YWwpCi0KLVst
LS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBMb2dnaW5nVGVzdAotWyBSVU4gICAgICBdIExvZ2dpbmdU
ZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0oZXhwZWN0aW5nIDIgZmFpbHVy
ZXMgb24gKDMpID49IChhW2ldKSkKLWkgPT0gMAotaSA9PSAxCi1ndGVzdF9vdXRwdXRfdGVzdF8u
Y2M6IzogRmFpbHVyZQotRXhwZWN0ZWQ6ICgzKSA+PSAoYVtpXSksIGFjdHVhbDogMyB2cyA5Ci1p
ID09IDIKLWkgPT0gMwotZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjOiM6IEZhaWx1cmUKLUV4cGVjdGVk
OiAoMykgPj0gKGFbaV0pLCBhY3R1YWw6IDMgdnMgNgotWyAgRkFJTEVEICBdIExvZ2dpbmdUZXN0
LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zICg/IG1zKQotWy0tLS0tLS0tLS1dIDEg
dGVzdCBmcm9tIExvZ2dpbmdUZXN0ICg/IG1zIHRvdGFsKQotCi1bLS0tLS0tLS0tLV0gR2xvYmFs
IHRlc3QgZW52aXJvbm1lbnQgdGVhci1kb3duCi1bPT09PT09PT09PV0gNCB0ZXN0cyBmcm9tIDIg
dGVzdCBjYXNlcyByYW4uICg/IG1zIHRvdGFsKQotWyAgUEFTU0VEICBdIDAgdGVzdHMuCi1bICBG
QUlMRUQgIF0gNCB0ZXN0cywgbGlzdGVkIGJlbG93OgotWyAgRkFJTEVEICBdIEZhdGFsRmFpbHVy
ZVRlc3QuRmF0YWxGYWlsdXJlSW5TdWJyb3V0aW5lCi1bICBGQUlMRUQgIF0gRmF0YWxGYWlsdXJl
VGVzdC5GYXRhbEZhaWx1cmVJbk5lc3RlZFN1YnJvdXRpbmUKLVsgIEZBSUxFRCAgXSBGYXRhbEZh
aWx1cmVUZXN0Lk5vbmZhdGFsRmFpbHVyZUluU3Vicm91dGluZQotWyAgRkFJTEVEICBdIExvZ2dp
bmdUZXN0LkludGVybGVhdmluZ0xvZ2dpbmdBbmRBc3NlcnRpb25zCi0KLSA0IEZBSUxFRCBURVNU
UwotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gKkRJU0FCTEVEXyoKLVs9PT09PT09PT09XSBS
dW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBEaXNhYmxlZFRl
c3RzV2FybmluZ1Rlc3QKLVsgUlVOICAgICAgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElT
QUJMRURfQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVsgICAgICAg
T0sgXSBEaXNhYmxlZFRlc3RzV2FybmluZ1Rlc3QuRElTQUJMRURfQWxzb1J1bkRpc2FibGVkVGVz
dHNGbGFnU3VwcHJlc3Nlc1dhcm5pbmcKLVstLS0tLS0tLS0tXSBHbG9iYWwgdGVzdCBlbnZpcm9u
bWVudCB0ZWFyLWRvd24KLVs9PT09PT09PT09XSAxIHRlc3QgZnJvbSAxIHRlc3QgY2FzZSByYW4u
Ci1bICBQQVNTRUQgIF0gMSB0ZXN0LgotTm90ZTogR29vZ2xlIFRlc3QgZmlsdGVyID0gUGFzc2lu
Z1Rlc3QuKgotTm90ZTogVGhpcyBpcyB0ZXN0IHNoYXJkIDIgb2YgMi4KLVs9PT09PT09PT09XSBS
dW5uaW5nIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlLgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0
IGVudmlyb25tZW50IHNldC11cC4KLVstLS0tLS0tLS0tXSAxIHRlc3QgZnJvbSBQYXNzaW5nVGVz
dAotWyBSVU4gICAgICBdIFBhc3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWyAgICAgICBPSyBdIFBh
c3NpbmdUZXN0LlBhc3NpbmdUZXN0MgotWy0tLS0tLS0tLS1dIEdsb2JhbCB0ZXN0IGVudmlyb25t
ZW50IHRlYXItZG93bgotWz09PT09PT09PT1dIDEgdGVzdCBmcm9tIDEgdGVzdCBjYXNlIHJhbi4K
LVsgIFBBU1NFRCAgXSAxIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3ByZWRfaW1wbF91bml0dGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfcHJlZF9pbXBs
X3VuaXR0ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODRlZmY4NjBhNGQu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3ByZWRfaW1wbF91bml0
dGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDI0MjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0v
LyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0vLyBUaGlzIGZpbGUgaXMgQVVUT01BVElD
QUxMWSBHRU5FUkFURUQgb24gMTAvMzEvMjAxMSBieSBjb21tYW5kCi0vLyAnZ2VuX2d0ZXN0X3By
ZWRfaW1wbC5weSA1Jy4gIERPIE5PVCBFRElUIEJZIEhBTkQhCi0KLS8vIFJlZ3Jlc3Npb24gdGVz
dCBmb3IgZ3Rlc3RfcHJlZF9pbXBsLmgKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGEgc2NyaXB0IGFuZCBxdWl0ZSBsb25nLiAgSWYgeW91IGludGVuZCB0bwotLy8gbGVhcm4gaG93
IEdvb2dsZSBUZXN0IHdvcmtzIGJ5IHJlYWRpbmcgaXRzIHVuaXQgdGVzdHMsIHJlYWQKLS8vIGd0
ZXN0X3VuaXR0ZXN0LmNjIGluc3RlYWQuCi0vLwotLy8gVGhpcyBpcyBpbnRlbmRlZCBhcyBhIHJl
Z3Jlc3Npb24gdGVzdCBmb3IgdGhlIEdvb2dsZSBUZXN0IHByZWRpY2F0ZQotLy8gYXNzZXJ0aW9u
cy4gIFdlIGNvbXBpbGUgaXQgYXMgcGFydCBvZiB0aGUgZ3Rlc3RfdW5pdHRlc3QgdGFyZ2V0Ci0v
LyBvbmx5IHRvIGtlZXAgdGhlIGltcGxlbWVudGF0aW9uIHRpZHkgYW5kIGNvbXBhY3QsIGFzIGl0
IGlzIHF1aXRlCi0vLyBpbnZvbHZlZCB0byBzZXQgdXAgdGhlIHN0YWdlIGZvciB0ZXN0aW5nIEdv
b2dsZSBUZXN0IHVzaW5nIEdvb2dsZQotLy8gVGVzdCBpdHNlbGYuCi0vLwotLy8gQ3VycmVudGx5
LCBndGVzdF91bml0dGVzdCB0YWtlcyB+MTEgc2Vjb25kcyB0byBydW4gaW4gdGhlIHRlc3RpbmcK
LS8vIGRhZW1vbi4gIEluIHRoZSBmdXR1cmUsIGlmIGl0IGdyb3dzIHRvbyBsYXJnZSBhbmQgbmVl
ZHMgbXVjaCBtb3JlCi0vLyB0aW1lIHRvIGZpbmlzaCwgd2Ugc2hvdWxkIGNvbnNpZGVyIHNlcGFy
YXRpbmcgdGhpcyBmaWxlIGludG8gYQotLy8gc3RhbmQtYWxvbmUgcmVncmVzc2lvbiB0ZXN0Lgot
Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LXNwaS5oIgotCi0vLyBBIHVzZXItZGVmaW5lZCBkYXRhIHR5cGUuCi1z
dHJ1Y3QgQm9vbCB7Ci0gIGV4cGxpY2l0IEJvb2woaW50IHZhbCkgOiB2YWx1ZSh2YWwgIT0gMCkg
e30KLQotICBib29sIG9wZXJhdG9yPihpbnQgbikgY29uc3QgeyByZXR1cm4gdmFsdWUgPiBCb29s
KG4pLnZhbHVlOyB9Ci0KLSAgQm9vbCBvcGVyYXRvcisoY29uc3QgQm9vbCYgcmhzKSBjb25zdCB7
IHJldHVybiBCb29sKHZhbHVlICsgcmhzLnZhbHVlKTsgfQotCi0gIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBCb29sJiByaHMpIGNvbnN0IHsgcmV0dXJuIHZhbHVlID09IHJocy52YWx1ZTsgfQotCi0g
IGJvb2wgdmFsdWU7Ci19OwotCi0vLyBFbmFibGVzIEJvb2wgdG8gYmUgdXNlZCBpbiBhc3NlcnRp
b25zLgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IEJv
b2wmIHgpIHsKLSAgcmV0dXJuIG9zIDw8ICh4LnZhbHVlID8gInRydWUiIDogImZhbHNlIik7Ci19
Ci0KLS8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9yIHRlc3RpbmcgdW5hcnkgcHJlZGlj
YXRlIGFzc2VydGlvbnMuCi0KLS8vIEEgdW5hcnkgcHJlZGljYXRlIGZ1bmN0aW9uLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQxPgotYm9vbCBQcmVkRnVuY3Rpb24xKFQxIHYxKSB7Ci0gIHJldHVybiB2
MSA+IDA7Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRv
IGNpcmN1bXZlbnQgYSBidWcgaW4KLS8vIGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMg
cHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1wbGF0ZQotLy8gZnVuY3Rpb24uCi1ib29sIFByZWRG
dW5jdGlvbjFJbnQoaW50IHYxKSB7Ci0gIHJldHVybiB2MSA+IDA7Ci19Ci1ib29sIFByZWRGdW5j
dGlvbjFCb29sKEJvb2wgdjEpIHsKLSAgcmV0dXJuIHYxID4gMDsKLX0KLQotLy8gQSB1bmFyeSBw
cmVkaWNhdGUgZnVuY3Rvci4KLXN0cnVjdCBQcmVkRnVuY3RvcjEgewotICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVDE+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUMSYgdjEpIHsKLSAgICByZXR1cm4g
djEgPiAwOwotICB9Ci19OwotCi0vLyBBIHVuYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rp
b24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDE+Ci10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJl
ZEZvcm1hdEZ1bmN0aW9uMShjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgewotICBpZiAoUHJlZEZ1bmN0aW9u
MSh2MSkpCi0gICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1
cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCBlMQotICAgICAgPDwgIiBp
cyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCi0gICAgICA8PCB2
MSA8PCAiLiI7Ci19Ci0KLS8vIEEgdW5hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yLgot
c3RydWN0IFByZWRGb3JtYXRGdW5jdG9yMSB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMT4KLSAg
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSkgY29uc3Qgewot
ICAgIHJldHVybiBQcmVkRm9ybWF0RnVuY3Rpb24xKGUxLCB2MSk7Ci0gIH0KLX07Ci0KLS8vIFRl
c3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQxLgotCi1jbGFzcyBQcmVkaWNhdGUx
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpIHsKLSAgICBleHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKLSAgICBmaW5pc2hl
ZF8gPSBmYWxzZTsKLSAgICBuMV8gPSAwOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1l
bnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFjdGx5IG9uY2UuCi0gICAgRVhQRUNUX0VRKDEs
IG4xXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0
ZSBhcmd1bWVudCAyICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4iOwotCi0gICAgLy8gVmVyaWZp
ZXMgdGhhdCB0aGUgY29udHJvbCBmbG93IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVk
LgotICAgIGlmIChleHBlY3RlZF90b19maW5pc2hfICYmICFmaW5pc2hlZF8pIHsKLSAgICAgIEZB
SUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhl
IHRlc3QuIjsKLSAgICB9IGVsc2UgaWYgKCFleHBlY3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVk
XykgewotICAgICAgRkFJTCgpIDw8ICJUaGUgZmFpbGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlk
bid0IGFib3J0IHRoZSB0ZXN0ICIKLSAgICAgICAgICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKLSAg
ICB9Ci0gIH0KLQotICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0
byBydW4gdG8gZmluaXNoLgotICBzdGF0aWMgYm9vbCBleHBlY3RlZF90b19maW5pc2hfOwotCi0g
IC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGRpZCBydW4gdG8gZmluaXNoLgotICBzdGF0
aWMgYm9vbCBmaW5pc2hlZF87Ci0KLSAgc3RhdGljIGludCBuMV87Ci19OwotCi1ib29sIFByZWRp
Y2F0ZTFUZXN0OjpleHBlY3RlZF90b19maW5pc2hfOwotYm9vbCBQcmVkaWNhdGUxVGVzdDo6Zmlu
aXNoZWRfOwotaW50IFByZWRpY2F0ZTFUZXN0OjpuMV87Ci0KLXR5cGVkZWYgUHJlZGljYXRlMVRl
c3QgRVhQRUNUX1BSRURfRk9STUFUMVRlc3Q7Ci10eXBlZGVmIFByZWRpY2F0ZTFUZXN0IEFTU0VS
VF9QUkVEX0ZPUk1BVDFUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUxVGVzdCBFWFBFQ1RfUFJFRDFU
ZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUxVGVzdCBBU1NFUlRfUFJFRDFUZXN0OwotCi0vLyBUZXN0
cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBF
Q1RfUFJFRDFUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9Q
UkVEMShQcmVkRnVuY3Rpb24xSW50LAotICAgICAgICAgICAgICAgKytuMV8pOwotICBmaW5pc2hl
ZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQxIHdoZXJl
IHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0aW9uT25Vc2Vy
VHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQxKFByZWRGdW5jdGlvbjFCb29sLAotICAgICAg
ICAgICAgICAgQm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0
cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVD
VF9QUkVEMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJF
RDEoUHJlZEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICArK24xXyk7Ci0gIGZpbmlzaGVkXyA9
IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDEgd2hlcmUgdGhl
Ci0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0
eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1
Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQxKFByZWRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAg
Qm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBFWFBFQ1RfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVu
Y3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3Qs
IEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQxKFByZWRGdW5jdGlvbjFJbnQsCi0gICAg
ICAgICAgICAgICAgIG4xXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19
Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4K
LVRFU1RfRihFWFBFQ1RfUFJFRDFUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMShQ
cmVkRnVuY3Rpb24xQm9vbCwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKykpOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNU
X1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEMVRlc3QsIEZ1bmN0b3JP
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAg
IG4xXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3Rz
IGEgZmFpbGVkIEVYUEVDVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVD
VF9QUkVEMVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDEoUHJlZEZ1bmN0b3IxKCks
Ci0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwot
ICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0
eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEMVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlw
ZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQxKFByZWRGdW5jdGlvbjFJbnQsCi0gICAgICAgICAg
ICAgICArK24xXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vz
c2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEg
ZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BS
RUQxVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDEoUHJl
ZEZ1bmN0aW9uMUJvb2wsCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSk7Ci0gIGZpbmlzaGVk
XyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDEgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5
cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEMShQcmVkRnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAg
ICsrbjFfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVs
IEFTU0VSVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEMVRl
c3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDEoUHJlZEZ1bmN0
b3IxKCksCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7
Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMSB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1U
RVNUX0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewot
ICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEMShQcmVkRnVuY3Rpb24xSW50LAotICAgICAgICAg
ICAgICAgICBuMV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0v
LyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNU
X0YoQVNTRVJUX1BSRUQxVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBl
Y3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEFTU0VSVF9QUkVEMShQcmVkRnVuY3Rpb24xQm9vbCwKLSAgICAgICAgICAgICAg
ICAgQm9vbChuMV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFT
U0VSVF9QUkVEMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3Rl
ZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEFTU0VSVF9QUkVEMShQcmVkRnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgICAgbjFf
KyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBm
YWlsZWQgQVNTRVJUX1BSRUQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BS
RUQxVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2Zpbmlz
aF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX1BSRUQxKFByZWRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nl
c3NmdWwgRVhQRUNUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNU
X1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQ
RUNUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3Rpb24xLAotICAgICAgICAgICAgICAgICAg
ICAgICsrbjFfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNz
ZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQ
RUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQ
RUNUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3Rpb24xLAotICAgICAgICAgICAgICAgICAg
ICAgIEJvb2woKytuMV8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQ
RUNUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBF
WFBFQ1RfUFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjFfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihF
WFBFQ1RfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVY
UEVDVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgQm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBF
Q1RfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JN
QVQxKFByZWRGb3JtYXRGdW5jdGlvbjEsCi0gICAgICAgICAgICAgICAgICAgICAgICBuMV8rKyk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBFWFBFQ1RfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVD
VF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDEo
UHJlZEZvcm1hdEZ1bmN0aW9uMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKysp
KTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BS
RURfRk9STUFUMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQxKFBy
ZWRGb3JtYXRGdW5jdG9yMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyspOwotICAg
IGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQ
RUNUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVE
X0ZPUk1BVDFUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMShQcmVkRm9y
bWF0RnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsKLSAg
ICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1
bCBBU1NFUlRfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJF
RF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRf
UFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdGlvbjEsCi0gICAgICAgICAgICAgICAgICAgICAg
KytuMV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
QVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRf
UFJFRF9GT1JNQVQxKFByZWRGb3JtYXRGdW5jdGlvbjEsCi0gICAgICAgICAgICAgICAgICAgICAg
Qm9vbCgrK24xXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nl
c3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRf
UFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VS
VF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgKytuMV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VS
VF9QUkVEX0ZPUk1BVDFUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJU
X1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3RvcjEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICBCb29sKCsrbjFfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9Q
UkVEX0ZPUk1BVDFUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVj
dGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9M
SU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMShQcmVkRm9ybWF0RnVuY3Rpb24xLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbjFfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIi
KTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFUMSB3aGVyZSB0aGUK
LS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0
eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQxVGVzdCwgRnVuY3Rpb25PblVz
ZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJl
ZEZvcm1hdEZ1bmN0aW9uMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspKTsK
LSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVk
IEFTU0VSVF9QUkVEX0ZPUk1BVDEgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlz
IGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURf
Rk9STUFUMVRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1hdEZ1bmN0b3IxKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBuMV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQxIHdoZXJlIHRoZQotLy8g
cHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAo
Qm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBl
RmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDEoUHJlZEZvcm1h
dEZ1bmN0b3IxKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSk7Ci0gICAg
ZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotLy8gU2FtcGxlIGZ1bmN0aW9ucy9mdW5j
dG9ycyBmb3IgdGVzdGluZyBiaW5hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMuCi0KLS8vIEEgYmlu
YXJ5IHByZWRpY2F0ZSBmdW5jdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
VDI+Ci1ib29sIFByZWRGdW5jdGlvbjIoVDEgdjEsIFQyIHYyKSB7Ci0gIHJldHVybiB2MSArIHYy
ID4gMDsKLX0KLQotLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBuZWVkZWQgdG8g
Y2lyY3VtdmVudCBhIGJ1ZyBpbgotLy8gZ2NjIDIuOTUuMywgd2hpY2ggc29tZXRpbWVzIGhhcyBw
cm9ibGVtIHdpdGggdGhlIGFib3ZlIHRlbXBsYXRlCi0vLyBmdW5jdGlvbi4KLWJvb2wgUHJlZEZ1
bmN0aW9uMkludChpbnQgdjEsIGludCB2MikgewotICByZXR1cm4gdjEgKyB2MiA+IDA7Ci19Ci1i
b29sIFByZWRGdW5jdGlvbjJCb29sKEJvb2wgdjEsIEJvb2wgdjIpIHsKLSAgcmV0dXJuIHYxICsg
djIgPiAwOwotfQotCi0vLyBBIGJpbmFyeSBwcmVkaWNhdGUgZnVuY3Rvci4KLXN0cnVjdCBQcmVk
RnVuY3RvcjIgewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICBib29s
IG9wZXJhdG9yKCkoY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYy
KSB7Ci0gICAgcmV0dXJuIHYxICsgdjIgPiAwOwotICB9Ci19OwotCi0vLyBBIGJpbmFyeSBwcmVk
aWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4KLXRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBQcmVkRm9ybWF0RnVuY3Rpb24yKGNvbnN0
IGNoYXIqIGUxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUMiYgdjIpIHsKLSAgaWYgKFByZWRGdW5jdGlvbjIodjEsIHYyKSkKLSAg
ICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwotCi0gIHJldHVybiB0ZXN0aW5n
OjpBc3NlcnRpb25GYWlsdXJlKCkKLSAgICAgIDw8IGUxIDw8ICIgKyAiIDw8IGUyCi0gICAgICA8
PCAiIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlLCBidXQgZXZhbHVhdGVzIHRvICIKLSAgICAg
IDw8IHYxICsgdjIgPDwgIi4iOwotfQotCi0vLyBBIGJpbmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVy
IGZ1bmN0b3IuCi1zdHJ1Y3QgUHJlZEZvcm1hdEZ1bmN0b3IyIHsKLSAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9y
KCkoY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQyJiB2MikgY29uc3QgewotICAgIHJldHVybiBQcmVkRm9ybWF0RnVuY3Rpb24yKGUxLCBlMiwg
djEsIHYyKTsKLSAgfQotfTsKLQotLy8gVGVzdHMgZm9yIHtFWFBFQ1R8QVNTRVJUfV9QUkVEX0ZP
Uk1BVDIuCi0KLWNsYXNzIFByZWRpY2F0ZTJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
IHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIGV4cGVjdGVkX3RvX2Zp
bmlzaF8gPSB0cnVlOwotICAgIGZpbmlzaGVkXyA9IGZhbHNlOwotICAgIG4xXyA9IG4yXyA9IDA7
Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgLy8gVmVyaWZpZXMgdGhh
dCBlYWNoIG9mIHRoZSBwcmVkaWNhdGUncyBhcmd1bWVudHMgd2FzIGV2YWx1YXRlZAotICAgIC8v
IGV4YWN0bHkgb25jZS4KLSAgICBFWFBFQ1RfRVEoMSwgbjFfKSA8PAotICAgICAgICAiVGhlIHBy
ZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDIgIgotICAgICAgICAi
ZXhhY3RseSBvbmNlLiI7Ci0gICAgRVhQRUNUX0VRKDEsIG4yXykgPDwKLSAgICAgICAgIlRoZSBw
cmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAzICIKLSAgICAgICAg
ImV4YWN0bHkgb25jZS4iOwotCi0gICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udHJvbCBmbG93
IGluIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkLgotICAgIGlmIChleHBlY3RlZF90b19m
aW5pc2hfICYmICFmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBh
c3NlcnRpb24gdW5leHBhY3RlZGx5IGFib3J0ZWQgdGhlIHRlc3QuIjsKLSAgICB9IGVsc2UgaWYg
KCFleHBlY3RlZF90b19maW5pc2hfICYmIGZpbmlzaGVkXykgewotICAgICAgRkFJTCgpIDw8ICJU
aGUgZmFpbGVkIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGFib3J0IHRoZSB0ZXN0ICIKLSAg
ICAgICAgICAgICAgICAiYXMgZXhwZWN0ZWQuIjsKLSAgICB9Ci0gIH0KLQotICAvLyB0cnVlIGlm
ZiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBydW4gdG8gZmluaXNoLgotICBzdGF0
aWMgYm9vbCBleHBlY3RlZF90b19maW5pc2hfOwotCi0gIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1
bmN0aW9uIGRpZCBydW4gdG8gZmluaXNoLgotICBzdGF0aWMgYm9vbCBmaW5pc2hlZF87Ci0KLSAg
c3RhdGljIGludCBuMV87Ci0gIHN0YXRpYyBpbnQgbjJfOwotfTsKLQotYm9vbCBQcmVkaWNhdGUy
VGVzdDo6ZXhwZWN0ZWRfdG9fZmluaXNoXzsKLWJvb2wgUHJlZGljYXRlMlRlc3Q6OmZpbmlzaGVk
XzsKLWludCBQcmVkaWNhdGUyVGVzdDo6bjFfOwotaW50IFByZWRpY2F0ZTJUZXN0OjpuMl87Ci0K
LXR5cGVkZWYgUHJlZGljYXRlMlRlc3QgRVhQRUNUX1BSRURfRk9STUFUMlRlc3Q7Ci10eXBlZGVm
IFByZWRpY2F0ZTJUZXN0IEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0OwotdHlwZWRlZiBQcmVkaWNh
dGUyVGVzdCBFWFBFQ1RfUFJFRDJUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGUyVGVzdCBBU1NFUlRf
UFJFRDJUZXN0OwotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQyIHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEMihQcmVkRnVuY3Rpb24ySW50LAotICAgICAgICAgICAg
ICAgKytuMV8sCi0gICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19
Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9v
bCkuCi1URVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2Vzcykg
ewotICBFWFBFQ1RfUFJFRDIoUHJlZEZ1bmN0aW9uMkJvb2wsCi0gICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3Mp
IHsKLSAgRVhQRUNUX1BSRUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgKytuMV8s
Ci0gICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRl
c3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1Rf
RihFWFBFQ1RfUFJFRDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNU
X1BSRUQyKFByZWRGdW5jdG9yMigpLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICBCb29sKCsrbjJfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNU
X1BSRUQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDIoUHJlZEZ1bmN0aW9u
MkludCwKLSAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgIG4yXysrKTsK
LSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVk
IEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDJU
ZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMihQcmVkRnVuY3Rpb24yQm9vbCwKLSAg
ICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjJfKysp
KTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEVYUEVDVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDJUZXN0
LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQyKFByZWRGdW5jdG9yMigpLAotICAgICAg
ICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyspOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQy
IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRUQyVGVzdCwgRnVuY3Rvck9u
VXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEVYUEVDVF9QUkVEMihQcmVkRnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICAgQm9v
bChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjJfKyspKTsKLSAgICBmaW5pc2hlZF8g
PSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJF
RDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBi
dWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEMlRlc3QsIEZ1bmN0aW9uT25C
dWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQyKFByZWRGdW5jdGlvbjJJbnQsCi0g
ICAgICAgICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfKTsKLSAgZmluaXNoZWRf
ID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMiB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5l
ZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5
cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEMihQcmVkRnVuY3Rpb24yQm9vbCwKLSAgICAgICAg
ICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24yXykpOwotICBmaW5p
c2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQyIHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1p
biB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEMlRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5U
eXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0b3IyKCksCi0gICAgICAgICAg
ICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsK
LX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJv
b2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEMlRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2Vzcykg
ewotICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICBCb29sKCsr
bjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsK
LX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQyIHdoZXJlIHRoZQotLy8gcHJlZGlj
YXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRF
U1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0g
IGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRUQyKFByZWRGdW5jdGlvbjJJbnQsCi0gICAgICAgICAg
ICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0gICAgZmluaXNoZWRfID0g
dHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDIgd2hl
cmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRl
ZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQyVGVzdCwgRnVuY3Rpb25PblVz
ZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEMihQcmVkRnVuY3Rp
b24yQm9vbCwKLSAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAg
IEJvb2wobjJfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8v
IFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3Jt
YXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NF
UlRfUFJFRDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRf
dG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQK
LSAgICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICAgIG4xXysr
LAotICAgICAgICAgICAgICAgICBuMl8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwg
IiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDIgd2hlcmUgdGhlCi0vLyBw
cmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChC
b29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUp
IHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRDIoUHJlZEZ1bmN0b3IyKCksCi0gICAgICAg
ICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgRVhQRUNUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIg
aXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BS
RURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNU
X1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3Rpb24yLAotICAgICAgICAgICAgICAgICAgICAg
ICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfKTsKLSAgZmluaXNoZWRfID0gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDIgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmlu
ZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9u
T25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVu
Y3Rpb24yLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAg
ICAgICAgICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVz
dHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNU
X0YoRVhQRUNUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2Vzcykg
ewotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdG9yMigpLAotICAgICAgICAg
ICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfKTsKLSAgZmlu
aXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZP
Uk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQyVGVz
dCwgRnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDIoUHJl
ZEZvcm1hdEZ1bmN0b3IyKCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0g
ICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8g
cHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBl
RmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBF
WFBFQ1RfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrKTsKLSAgICBmaW5p
c2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9S
TUFUMlRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0
RnVuY3Rpb24yLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAg
fSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQyIHdoZXJl
IHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0
eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjJfKyspOwot
ICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQg
RVhQRUNUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9Q
UkVEX0ZPUk1BVDJUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMihQcmVk
Rm9ybWF0RnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAot
ICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRy
dWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVEX0ZP
Uk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0LCBG
dW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJl
ZEZvcm1hdEZ1bmN0aW9uMiwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXywKLSAgICAgICAg
ICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgot
VEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDJUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNz
KSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0aW9uMiwKLSAgICAgICAg
ICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsr
bjJfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBB
U1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZP
Uk1BVDJUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURf
Rk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIoKSwKLSAgICAgICAgICAgICAgICAgICAgICArK24x
XywKLSAgICAgICAgICAgICAgICAgICAgICArK24yXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19
Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQyIHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlw
ZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPblVzZXJU
eXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdG9yMigp
LAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAg
ICAgIEJvb2woKytuMl8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBm
YWlsZWQgQVNTRVJUX1BSRURfRk9STUFUMiB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJU
X1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhw
ZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysr
KTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNT
RVJUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhw
ZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQyKFByZWRGb3JtYXRGdW5jdGlvbjIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IEJvb2wobjJfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8v
IFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNU
X0YoQVNTRVJUX1BSRURfRk9STUFUMlRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkg
ewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoUHJlZEZvcm1hdEZ1bmN0b3Iy
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG4yXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDIgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRF
U1RfRihBU1NFUlRfUFJFRF9GT1JNQVQyVGVzdCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7
Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMihQcmVkRm9ybWF0RnVuY3RvcjIo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAg
ICAgICAgICAgQm9vbChuMl8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsK
LX0KLS8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3RvcnMgZm9yIHRlc3RpbmcgdGVybmFyeSBwcmVk
aWNhdGUgYXNzZXJ0aW9ucy4KLQotLy8gQSB0ZXJuYXJ5IHByZWRpY2F0ZSBmdW5jdGlvbi4KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotYm9vbCBQcmVk
RnVuY3Rpb24zKFQxIHYxLCBUMiB2MiwgVDMgdjMpIHsKLSAgcmV0dXJuIHYxICsgdjIgKyB2MyA+
IDA7Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNp
cmN1bXZlbnQgYSBidWcgaW4KLS8vIGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJv
YmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1wbGF0ZQotLy8gZnVuY3Rpb24uCi1ib29sIFByZWRGdW5j
dGlvbjNJbnQoaW50IHYxLCBpbnQgdjIsIGludCB2MykgewotICByZXR1cm4gdjEgKyB2MiArIHYz
ID4gMDsKLX0KLWJvb2wgUHJlZEZ1bmN0aW9uM0Jvb2woQm9vbCB2MSwgQm9vbCB2MiwgQm9vbCB2
MykgewotICByZXR1cm4gdjEgKyB2MiArIHYzID4gMDsKLX0KLQotLy8gQSB0ZXJuYXJ5IHByZWRp
Y2F0ZSBmdW5jdG9yLgotc3RydWN0IFByZWRGdW5jdG9yMyB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICBib29sIG9wZXJhdG9yKCkoY29uc3Qg
VDEmIHYxLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyLAotICAgICAgICAgICAgICAg
ICAgY29uc3QgVDMmIHYzKSB7Ci0gICAgcmV0dXJuIHYxICsgdjIgKyB2MyA+IDA7Ci0gIH0KLX07
Ci0KLS8vIEEgdGVybmFyeSBwcmVkaWNhdGUtZm9ybWF0dGVyIGZ1bmN0aW9uLgotdGVtcGxhdGUg
PHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci10ZXN0aW5nOjpBc3NlcnRp
b25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uMyhjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYg
djIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
MyYgdjMpIHsKLSAgaWYgKFByZWRGdW5jdGlvbjModjEsIHYyLCB2MykpCi0gICAgcmV0dXJuIHRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKLQotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9u
RmFpbHVyZSgpCi0gICAgICA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMwotICAg
ICAgPDwgIiBpcyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCi0g
ICAgICA8PCB2MSArIHYyICsgdjMgPDwgIi4iOwotfQotCi0vLyBBIHRlcm5hcnkgcHJlZGljYXRl
LWZvcm1hdHRlciBmdW5jdG9yLgotc3RydWN0IFByZWRGb3JtYXRGdW5jdG9yMyB7Ci0gIHRlbXBs
YXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICB0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBlMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDMmIHYzKSBjb25zdCB7Ci0gICAgcmV0dXJuIFByZWRGb3JtYXRG
dW5jdGlvbjMoZTEsIGUyLCBlMywgdjEsIHYyLCB2Myk7Ci0gIH0KLX07Ci0KLS8vIFRlc3RzIGZv
ciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQzLgotCi1jbGFzcyBQcmVkaWNhdGUzVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwgdm9pZCBTZXRV
cCgpIHsKLSAgICBleHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKLSAgICBmaW5pc2hlZF8gPSBm
YWxzZTsKLSAgICBuMV8gPSBuMl8gPSBuM18gPSAwOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3Mg
YXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFjdGx5IG9uY2UuCi0gICAgRVhQRUNU
X0VRKDEsIG4xXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBl
dmFsdWF0ZSBhcmd1bWVudCAyICIKLSAgICAgICAgImV4YWN0bHkgb25jZS4iOwotICAgIEVYUEVD
VF9FUSgxLCBuMl8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3Qg
ZXZhbHVhdGUgYXJndW1lbnQgMyAiCi0gICAgICAgICJleGFjdGx5IG9uY2UuIjsKLSAgICBFWFBF
Q1RfRVEoMSwgbjNfKSA8PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0
IGV2YWx1YXRlIGFyZ3VtZW50IDQgIgotICAgICAgICAiZXhhY3RseSBvbmNlLiI7Ci0KLSAgICAv
LyBWZXJpZmllcyB0aGF0IHRoZSBjb250cm9sIGZsb3cgaW4gdGhlIHRlc3QgZnVuY3Rpb24gaXMg
ZXhwZWN0ZWQuCi0gICAgaWYgKGV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYgIWZpbmlzaGVkXykgewot
ICAgICAgRkFJTCgpIDw8ICJUaGUgcHJlZGljYXRlIGFzc2VydGlvbiB1bmV4cGFjdGVkbHkgYWJv
cnRlZCB0aGUgdGVzdC4iOwotICAgIH0gZWxzZSBpZiAoIWV4cGVjdGVkX3RvX2ZpbmlzaF8gJiYg
ZmluaXNoZWRfKSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBmYWlsZWQgcHJlZGljYXRlIGFzc2Vy
dGlvbiBkaWRuJ3QgYWJvcnQgdGhlIHRlc3QgIgotICAgICAgICAgICAgICAgICJhcyBleHBlY3Rl
ZC4iOwotICAgIH0KLSAgfQotCi0gIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIGV4
cGVjdGVkIHRvIHJ1biB0byBmaW5pc2guCi0gIHN0YXRpYyBib29sIGV4cGVjdGVkX3RvX2Zpbmlz
aF87Ci0KLSAgLy8gdHJ1ZSBpZmYgdGhlIHRlc3QgZnVuY3Rpb24gZGlkIHJ1biB0byBmaW5pc2gu
Ci0gIHN0YXRpYyBib29sIGZpbmlzaGVkXzsKLQotICBzdGF0aWMgaW50IG4xXzsKLSAgc3RhdGlj
IGludCBuMl87Ci0gIHN0YXRpYyBpbnQgbjNfOwotfTsKLQotYm9vbCBQcmVkaWNhdGUzVGVzdDo6
ZXhwZWN0ZWRfdG9fZmluaXNoXzsKLWJvb2wgUHJlZGljYXRlM1Rlc3Q6OmZpbmlzaGVkXzsKLWlu
dCBQcmVkaWNhdGUzVGVzdDo6bjFfOwotaW50IFByZWRpY2F0ZTNUZXN0OjpuMl87Ci1pbnQgUHJl
ZGljYXRlM1Rlc3Q6Om4zXzsKLQotdHlwZWRlZiBQcmVkaWNhdGUzVGVzdCBFWFBFQ1RfUFJFRF9G
T1JNQVQzVGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlM1Rlc3QgQVNTRVJUX1BSRURfRk9STUFUM1Rl
c3Q7Ci10eXBlZGVmIFByZWRpY2F0ZTNUZXN0IEVYUEVDVF9QUkVEM1Rlc3Q7Ci10eXBlZGVmIFBy
ZWRpY2F0ZTNUZXN0IEFTU0VSVF9QUkVEM1Rlc3Q7Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBF
WFBFQ1RfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1
bmN0aW9uT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdGlv
bjNJbnQsCi0gICAgICAgICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAg
ICAgICAgICAgICAgKytuM18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBh
IHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRl
ciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVY
UEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BS
RUQzKFByZWRGdW5jdGlvbjNCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pKTsKLSAg
ZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVE
MyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVp
bHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDNUZXN0LCBGdW5jdG9yT25CdWls
dEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdG9yMygpLAotICAgICAg
ICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsr
bjNfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVY
UEVDVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9y
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3Qs
IEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRDMoUHJlZEZ1bmN0b3Iz
KCksCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytu
Ml8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwot
fQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNh
dGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVT
VF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQzKFBy
ZWRGdW5jdGlvbjNJbnQsCi0gICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAg
ICBuMl8rKywKLSAgICAgICAgICAgICAgICAgbjNfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7
Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRUQzIHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVk
IHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0aW9uT25Vc2VyVHlw
ZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAg
RVhQRUNUX1BSRUQzKFByZWRGdW5jdGlvbjNCb29sLAotICAgICAgICAgICAgICAgICBCb29sKG4x
XysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJv
b2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1Rf
UFJFRDNUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQzKFByZWRGdW5jdG9yMygp
LAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAg
ICAgICAgICAgICAgIG4zXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19
Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgot
VEVTVF9GKEVYUEVDVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDMoUHJl
ZEZ1bmN0b3IzKCksCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAg
ICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuM18rKykpOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEFT
U0VSVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVu
Y3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0aW9u
M0ludCwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAg
ICAgICAgICAgICArK24zXyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEg
c3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNT
RVJUX1BSRUQzVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJF
RDMoUHJlZEZ1bmN0aW9uM0Jvb2wsCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAg
ICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOwotICBm
aW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQz
IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWls
dC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEM1Rlc3QsIEZ1bmN0b3JPbkJ1aWx0
SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCi0gICAgICAg
ICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgKytu
M18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRUQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Ig
b24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEMyhQcmVkRnVuY3RvcjMo
KSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24y
XyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjNfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19
Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNU
X0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBl
eHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEFTU0VSVF9QUkVEMyhQcmVkRnVuY3Rpb24zSW50LAotICAgICAgICAgICAg
ICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4z
XysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEg
ZmFpbGVkIEFTU0VSVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRf
UFJFRDNUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2Zp
bmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAg
QVNTRVJUX1BSRUQzKFByZWRGdW5jdGlvbjNCb29sLAotICAgICAgICAgICAgICAgICBCb29sKG4x
XysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJv
b2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRf
UFJFRDNUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9f
ZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBBU1NFUlRfUFJFRDMoUHJlZEZ1bmN0b3IzKCksCi0gICAgICAgICAgICAgICAgIG4xXysrLAot
ICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgbjNfKyspOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJU
X1BSRUQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24g
YSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQzVGVzdCwgRnVu
Y3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRUQzKFBy
ZWRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAg
ICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNfKyspKTsKLSAgICBm
aW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBF
WFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9G
T1JNQVQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJF
RF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCi0gICAgICAgICAgICAgICAgICAgICAgKytu
MV8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAg
KytuM18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwg
RVhQRUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1Rf
UFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1Rf
UFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCi0gICAgICAgICAgICAgICAgICAgICAg
Qm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAg
ICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0v
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4K
LVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNj
ZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0g
ICAgICAgICAgICAgICAgICAgICAgKytuM18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0v
LyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHBy
ZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJv
b2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1
Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBC
b29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjNfKSk7Ci0gIGZpbmlz
aGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDMg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWls
dC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdGlv
bk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0aW9uMywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjJf
KyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1
ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQz
IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNl
ci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDNUZXN0LCBG
dW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsg
IC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0aW9uMywK
LSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICAg
ICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVE
X0ZPUk1BVDNUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMyhQcmVk
Rm9ybWF0RnVuY3RvcjMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKyk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBFWFBFQ1RfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNU
X1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQzKFBy
ZWRGb3JtYXRGdW5jdG9yMygpLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEJvb2wobjNfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19
Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5U
eXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMs
Ci0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAgICAgICAgKytu
Ml8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuM18pOwotICBmaW5pc2hlZF8gPSB0cnVlOwot
fQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0aGUK
LS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0
eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rpb25PblVz
ZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQzKFByZWRGb3JtYXRGdW5jdGlv
bjMsCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAg
ICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXykpOwot
ICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BS
RURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9y
IG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVz
dCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDMo
UHJlZEZvcm1hdEZ1bmN0b3IzKCksCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAg
ICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuM18pOwot
ICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BS
RURfRk9STUFUMyB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9y
IG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1B
VDNUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURfRk9STUFU
MyhQcmVkRm9ybWF0RnVuY3RvcjMoKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjFf
KSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBCb29sKCsrbjNfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEg
ZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDMgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VS
VF9QUkVEX0ZPUk1BVDNUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4
cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8g
Tk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVkRm9ybWF0RnVuY3Rpb24zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8r
KywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVl
OwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDMg
d2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2Vy
LWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUM1Rlc3QsIEZ1
bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNl
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9G
T1JNQVQzKFByZWRGb3JtYXRGdW5jdGlvbjMsCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29s
KG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAg
ICAgICAgICAgICAgICAgQm9vbChuM18rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0s
ICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRURfRk9STUFUMyB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlw
ZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQzVGVzdCwgRnVuY3Rvck9uQnVpbHRJ
blR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUMyhQcmVk
Rm9ybWF0RnVuY3RvcjMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuM18rKyk7
Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxl
ZCBBU1NFUlRfUFJFRF9GT1JNQVQzIHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBp
cyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJU
X1BSRURfRk9STUFUM1Rlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3Rl
ZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDMoUHJlZEZvcm1hdEZ1bmN0b3IzKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKykpOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLS8vIFNhbXBsZSBmdW5jdGlvbnMvZnVuY3Rv
cnMgZm9yIHRlc3RpbmcgNC1hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMuCi0KLS8vIEEgNC1hcnkg
cHJlZGljYXRlIGZ1bmN0aW9uLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwg
dHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0PgotYm9vbCBQcmVkRnVuY3Rpb240KFQxIHYxLCBUMiB2
MiwgVDMgdjMsIFQ0IHY0KSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCA+IDA7Ci19Ci0K
LS8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQg
YSBidWcgaW4KLS8vIGdjYyAyLjk1LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRo
IHRoZSBhYm92ZSB0ZW1wbGF0ZQotLy8gZnVuY3Rpb24uCi1ib29sIFByZWRGdW5jdGlvbjRJbnQo
aW50IHYxLCBpbnQgdjIsIGludCB2MywgaW50IHY0KSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMg
KyB2NCA+IDA7Ci19Ci1ib29sIFByZWRGdW5jdGlvbjRCb29sKEJvb2wgdjEsIEJvb2wgdjIsIEJv
b2wgdjMsIEJvb2wgdjQpIHsKLSAgcmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ID4gMDsKLX0KLQot
Ly8gQSA0LWFyeSBwcmVkaWNhdGUgZnVuY3Rvci4KLXN0cnVjdCBQcmVkRnVuY3RvcjQgewotICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQ+Ci0gIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUMSYgdjEsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAg
ICAgICAgICBjb25zdCBUNCYgdjQpIHsKLSAgICByZXR1cm4gdjEgKyB2MiArIHYzICsgdjQgPiAw
OwotICB9Ci19OwotCi0vLyBBIDQtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQ+Ci10ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgUHJlZEZvcm1hdEZ1bmN0aW9uNChjb25zdCBj
aGFyKiBlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGUyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBlNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgewotICBpZiAoUHJlZEZ1bmN0aW9u
NCh2MSwgdjIsIHYzLCB2NCkpCi0gICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3Mo
KTsKLQotICByZXR1cm4gdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpCi0gICAgICA8PCBlMSA8
PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNAotICAgICAgPDwgIiBp
cyBleHBlY3RlZCB0byBiZSBwb3NpdGl2ZSwgYnV0IGV2YWx1YXRlcyB0byAiCi0gICAgICA8PCB2
MSArIHYyICsgdjMgKyB2NCA8PCAiLiI7Ci19Ci0KLS8vIEEgNC1hcnkgcHJlZGljYXRlLWZvcm1h
dHRlciBmdW5jdG9yLgotc3RydWN0IFByZWRGb3JtYXRGdW5jdG9yNCB7Ci0gIHRlbXBsYXRlIDx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgdGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoY29uc3QgY2hhciogZTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUMyYgdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCkgY29uc3QgewotICAgIHJldHVybiBQcmVkRm9ybWF0
RnVuY3Rpb240KGUxLCBlMiwgZTMsIGU0LCB2MSwgdjIsIHYzLCB2NCk7Ci0gIH0KLX07Ci0KLS8v
IFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ0LgotCi1jbGFzcyBQcmVkaWNh
dGU0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1YWwg
dm9pZCBTZXRVcCgpIHsKLSAgICBleHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKLSAgICBmaW5p
c2hlZF8gPSBmYWxzZTsKLSAgICBuMV8gPSBuMl8gPSBuM18gPSBuNF8gPSAwOwotICB9Ci0KLSAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQgZWFjaCBvZiB0
aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBleGFjdGx5IG9u
Y2UuCi0gICAgRVhQRUNUX0VRKDEsIG4xXykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUgYXNz
ZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAyICIKLSAgICAgICAgImV4YWN0bHkgb25j
ZS4iOwotICAgIEVYUEVDVF9FUSgxLCBuMl8pIDw8Ci0gICAgICAgICJUaGUgcHJlZGljYXRlIGFz
c2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMyAiCi0gICAgICAgICJleGFjdGx5IG9u
Y2UuIjsKLSAgICBFWFBFQ1RfRVEoMSwgbjNfKSA8PAotICAgICAgICAiVGhlIHByZWRpY2F0ZSBh
c3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDQgIgotICAgICAgICAiZXhhY3RseSBv
bmNlLiI7Ci0gICAgRVhQRUNUX0VRKDEsIG40XykgPDwKLSAgICAgICAgIlRoZSBwcmVkaWNhdGUg
YXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCA1ICIKLSAgICAgICAgImV4YWN0bHkg
b25jZS4iOwotCi0gICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udHJvbCBmbG93IGluIHRoZSB0
ZXN0IGZ1bmN0aW9uIGlzIGV4cGVjdGVkLgotICAgIGlmIChleHBlY3RlZF90b19maW5pc2hfICYm
ICFmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8PCAiVGhlIHByZWRpY2F0ZSBhc3NlcnRpb24g
dW5leHBhY3RlZGx5IGFib3J0ZWQgdGhlIHRlc3QuIjsKLSAgICB9IGVsc2UgaWYgKCFleHBlY3Rl
ZF90b19maW5pc2hfICYmIGZpbmlzaGVkXykgewotICAgICAgRkFJTCgpIDw8ICJUaGUgZmFpbGVk
IHByZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGFib3J0IHRoZSB0ZXN0ICIKLSAgICAgICAgICAg
ICAgICAiYXMgZXhwZWN0ZWQuIjsKLSAgICB9Ci0gIH0KLQotICAvLyB0cnVlIGlmZiB0aGUgdGVz
dCBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBydW4gdG8gZmluaXNoLgotICBzdGF0aWMgYm9vbCBl
eHBlY3RlZF90b19maW5pc2hfOwotCi0gIC8vIHRydWUgaWZmIHRoZSB0ZXN0IGZ1bmN0aW9uIGRp
ZCBydW4gdG8gZmluaXNoLgotICBzdGF0aWMgYm9vbCBmaW5pc2hlZF87Ci0KLSAgc3RhdGljIGlu
dCBuMV87Ci0gIHN0YXRpYyBpbnQgbjJfOwotICBzdGF0aWMgaW50IG4zXzsKLSAgc3RhdGljIGlu
dCBuNF87Ci19OwotCi1ib29sIFByZWRpY2F0ZTRUZXN0OjpleHBlY3RlZF90b19maW5pc2hfOwot
Ym9vbCBQcmVkaWNhdGU0VGVzdDo6ZmluaXNoZWRfOwotaW50IFByZWRpY2F0ZTRUZXN0OjpuMV87
Ci1pbnQgUHJlZGljYXRlNFRlc3Q6Om4yXzsKLWludCBQcmVkaWNhdGU0VGVzdDo6bjNfOwotaW50
IFByZWRpY2F0ZTRUZXN0OjpuNF87Ci0KLXR5cGVkZWYgUHJlZGljYXRlNFRlc3QgRVhQRUNUX1BS
RURfRk9STUFUNFRlc3Q7Ci10eXBlZGVmIFByZWRpY2F0ZTRUZXN0IEFTU0VSVF9QUkVEX0ZPUk1B
VDRUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGU0VGVzdCBFWFBFQ1RfUFJFRDRUZXN0OwotdHlwZWRl
ZiBQcmVkaWNhdGU0VGVzdCBBU1NFUlRfUFJFRDRUZXN0OwotCi0vLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0
LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVENChQcmVkRnVu
Y3Rpb240SW50LAotICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICArK24yXywK
LSAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAgICAgKytuNF8pOwotICBmaW5pc2hl
ZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ0IHdoZXJl
IHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25Vc2Vy
VHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQ0KFByZWRGdW5jdGlvbjRCb29sLAotICAgICAg
ICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAg
ICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBm
aW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ0
IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWls
dC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0b3JPbkJ1aWx0
SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCi0gICAgICAg
ICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgKytu
M18sCi0gICAgICAgICAgICAgICArK240Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8v
IFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRF
U1RfRihFWFBFQ1RfUFJFRDRUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQ
RUNUX1BSRUQ0KFByZWRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0g
ICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pLAot
ICAgICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0v
LyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVY
UEVDVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQ0KFByZWRGdW5j
dGlvbjRJbnQsCi0gICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8r
KywKLSAgICAgICAgICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgIG40XysrKTsKLSAg
ICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVY
UEVDVF9QUkVENCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlv
biBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRDRUZXN0
LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVENChQcmVkRnVuY3Rpb240Qm9vbCwKLSAgICAg
ICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAot
ICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuNF8r
KykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBm
YWlsZWQgRVhQRUNUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVENFRl
c3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCi0gICAg
ICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAg
ICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgIG40XysrKTsKLSAgICBmaW5pc2hlZF8gPSB0
cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVENCB3aGVy
ZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgdXNlci1kZWZp
bmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVENFRlc3QsIEZ1bmN0b3JPblVzZXJU
eXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAg
ICBFWFBFQ1RfUFJFRDQoUHJlZEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICAgIEJvb2wobjFf
KyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgQm9v
bChuM18rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKLSAgICBmaW5pc2hlZF8g
PSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJF
RDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBi
dWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0aW9uT25C
dWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQ0KFByZWRGdW5jdGlvbjRJbnQsCi0g
ICAgICAgICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAg
ICAgKytuM18sCi0gICAgICAgICAgICAgICArK240Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19
Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9v
bCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2Vzcykg
ewotICBBU1NFUlRfUFJFRDQoUHJlZEZ1bmN0aW9uNEJvb2wsCi0gICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgQm9v
bCgrK24zXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjRfKSk7Ci0gIGZpbmlzaGVkXyA9IHRy
dWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCi0v
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGlu
dCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNz
KSB7Ci0gIEFTU0VSVF9QUkVENChQcmVkRnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgICsrbjFf
LAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICArK24zXywKLSAgICAgICAg
ICAgICAgICsrbjRfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNj
ZXNzZnVsIEFTU0VSVF9QUkVENCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMg
YSBmdW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9Q
UkVENFRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRDQoUHJl
ZEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAg
IEJvb2woKytuMl8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCi0gICAgICAgICAgICAg
ICBCb29sKCsrbjRfKSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFp
bGVkIEFTU0VSVF9QUkVENCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ0VGVz
dCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hf
ID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VS
VF9QUkVENChQcmVkRnVuY3Rpb240SW50LAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAg
ICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAg
ICAgICBuNF8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBU
ZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0
dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0Yo
QVNTRVJUX1BSRUQ0VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3Rl
ZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElO
VAotICAgIEFTU0VSVF9QUkVENChQcmVkRnVuY3Rpb240Qm9vbCwKLSAgICAgICAgICAgICAgICAg
Qm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAgICAg
ICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuNF8rKykpOwotICAgIGZp
bmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNTRVJU
X1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24g
YSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVENFRlc3QsIEZ1bmN0b3JP
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVENChQcmVk
RnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgIG4y
XysrLAotICAgICAgICAgICAgICAgICBuM18rKywKLSAgICAgICAgICAgICAgICAgbjRfKyspOwot
ICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQg
QVNTRVJUX1BSRUQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ0VGVz
dCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BS
RUQ0KFByZWRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAg
ICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAot
ICAgICAgICAgICAgICAgICBCb29sKG40XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAg
fSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRURfRk9STUFUNCB3
aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0
LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9u
T25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0
RnVuY3Rpb240LAotICAgICAgICAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjJfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjRfKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNU
X0YoRVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsK
LSAgRVhQRUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rpb240LAotICAgICAgICAgICAg
ICAgICAgICAgIEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8p
LAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgICAg
ICAgIEJvb2woKytuNF8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQ
RUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBF
WFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjJfLAotICAgICAgICAgICAg
ICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAgICAgICAgICAgICsrbjRfKTsKLSAgZmluaXNo
ZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1B
VDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVz
ZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ0VGVzdCwg
RnVuY3Rvck9uVXNlclR5cGVTdWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDQoUHJlZEZv
cm1hdEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9v
bCgrK24zXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBmaW5pc2hl
ZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ0IHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQt
aW4gdHlwZSAoaW50KS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25P
bkJ1aWx0SW5UeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysr
LAotICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuNF8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0
cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVT
VF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDRUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVE
X0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0aW9uNCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjFfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJv
b2wobjRfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRl
c3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0Yo
RVhQRUNUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5UeXBlRmFpbHVyZSkgewot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9G
T1JNQVQ0KFByZWRGb3JtYXRGdW5jdG9yNCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFf
KyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG4zXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyspOwotICAgIGZpbmlzaGVk
XyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURf
Rk9STUFUNCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9u
IGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDRU
ZXN0LCBGdW5jdG9yT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rv
cjQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAg
ICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4z
XysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKLSAgICBmaW5pc2hl
ZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRf
UFJFRF9GT1JNQVQ0IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0
VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JN
QVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQsCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0g
ICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuM18s
Ci0gICAgICAgICAgICAgICAgICAgICAgKytuNF8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQot
Ci0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBl
IChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PblVzZXJU
eXBlU3VjY2VzcykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQ0KFByZWRGb3JtYXRGdW5jdGlvbjQs
Ci0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAg
ICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCi0gICAg
ICAgICAgICAgICAgICAgICAgQm9vbCgrK240XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQot
Ci0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8v
IHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50
KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ0VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0b3I0KCksCi0g
ICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuMl8s
Ci0gICAgICAgICAgICAgICAgICAgICAgKytuM18sCi0gICAgICAgICAgICAgICAgICAgICAgKytu
NF8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVE
X0ZPUk1BVDRUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURf
Rk9STUFUNChQcmVkRm9ybWF0RnVuY3RvcjQoKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRf
KSk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9Q
UkVEX0ZPUk1BVDQgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rp
b24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDRU
ZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2Zpbmlz
aF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNT
RVJUX1BSRURfRk9STUFUNChQcmVkRm9ybWF0RnVuY3Rpb240LAotICAgICAgICAgICAgICAgICAg
ICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyspOwotICAg
IGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgQVNT
RVJUX1BSRURfRk9STUFUNCB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NFUlRfUFJF
RF9GT1JNQVQ0VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZvcm1hdEZ1bmN0aW9uNCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChu
Ml8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEJvb2wobjRfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAi
Iik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDQgd2hlcmUgdGhl
Ci0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUg
KGludCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JPbkJ1aWx0SW5U
eXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQoUHJlZEZv
cm1hdEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjNfKyssCi0g
ICAgICAgICAgICAgICAgICAgICAgICBuNF8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAg
fSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ0IHdoZXJl
IHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmlu
ZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRURfRk9STUFUNFRlc3QsIEZ1bmN0b3JP
blVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDQo
UHJlZEZvcm1hdEZ1bmN0b3I0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4xXysr
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJfKyspLAotICAgICAgICAgICAgICAg
ICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG40Xysr
KSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotLy8gU2FtcGxlIGZ1bmN0
aW9ucy9mdW5jdG9ycyBmb3IgdGVzdGluZyA1LWFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucy4KLQot
Ly8gQSA1LWFyeSBwcmVkaWNhdGUgZnVuY3Rpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotYm9vbCBQ
cmVkRnVuY3Rpb241KFQxIHYxLCBUMiB2MiwgVDMgdjMsIFQ0IHY0LCBUNSB2NSkgewotICByZXR1
cm4gdjEgKyB2MiArIHYzICsgdjQgKyB2NSA+IDA7Ci19Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdHdv
IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIHRvIGNpcmN1bXZlbnQgYSBidWcgaW4KLS8vIGdjYyAyLjk1
LjMsIHdoaWNoIHNvbWV0aW1lcyBoYXMgcHJvYmxlbSB3aXRoIHRoZSBhYm92ZSB0ZW1wbGF0ZQot
Ly8gZnVuY3Rpb24uCi1ib29sIFByZWRGdW5jdGlvbjVJbnQoaW50IHYxLCBpbnQgdjIsIGludCB2
MywgaW50IHY0LCBpbnQgdjUpIHsKLSAgcmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPiAw
OwotfQotYm9vbCBQcmVkRnVuY3Rpb241Qm9vbChCb29sIHYxLCBCb29sIHYyLCBCb29sIHYzLCBC
b29sIHY0LCBCb29sIHY1KSB7Ci0gIHJldHVybiB2MSArIHYyICsgdjMgKyB2NCArIHY1ID4gMDsK
LX0KLQotLy8gQSA1LWFyeSBwcmVkaWNhdGUgZnVuY3Rvci4KLXN0cnVjdCBQcmVkRnVuY3RvcjUg
ewotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICBib29sIG9wZXJhdG9yKCkoY29uc3QgVDEmIHYxLAot
ICAgICAgICAgICAgICAgICAgY29uc3QgVDImIHYyLAotICAgICAgICAgICAgICAgICAgY29uc3Qg
VDMmIHYzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHY0LAotICAgICAgICAgICAgICAg
ICAgY29uc3QgVDUmIHY1KSB7Ci0gICAgcmV0dXJuIHYxICsgdjIgKyB2MyArIHY0ICsgdjUgPiAw
OwotICB9Ci19OwotCi0vLyBBIDUtYXJ5IHByZWRpY2F0ZS1mb3JtYXR0ZXIgZnVuY3Rpb24uCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUg
VDQsIHR5cGVuYW1lIFQ1PgotdGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IFByZWRGb3JtYXRGdW5j
dGlvbjUoY29uc3QgY2hhciogZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGUzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQxJiB2MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQyJiB2MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB2NCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQ1JiB2NSkg
ewotICBpZiAoUHJlZEZ1bmN0aW9uNSh2MSwgdjIsIHYzLCB2NCwgdjUpKQotICAgIHJldHVybiB0
ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci0KLSAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKQotICAgICAgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiArICIgPDwgZTMgPDwg
IiArICIgPDwgZTQgPDwgIiArICIgPDwgZTUKLSAgICAgIDw8ICIgaXMgZXhwZWN0ZWQgdG8gYmUg
cG9zaXRpdmUsIGJ1dCBldmFsdWF0ZXMgdG8gIgotICAgICAgPDwgdjEgKyB2MiArIHYzICsgdjQg
KyB2NSA8PCAiLiI7Ci19Ci0KLS8vIEEgNS1hcnkgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9y
Lgotc3RydWN0IFByZWRGb3JtYXRGdW5jdG9yNSB7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gIHRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBvcGVyYXRvcigpKGNvbnN0IGNoYXIqIGUxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlMiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZTMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGU0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlNSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVDEmIHYxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUMiYgdjIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFQzJiB2MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVDQmIHY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUNSYgdjUpIGNvbnN0IHsKLSAgICByZXR1cm4gUHJlZEZvcm1hdEZ1bmN0
aW9uNShlMSwgZTIsIGUzLCBlNCwgZTUsIHYxLCB2MiwgdjMsIHY0LCB2NSk7Ci0gIH0KLX07Ci0K
LS8vIFRlc3RzIGZvciB7RVhQRUNUfEFTU0VSVH1fUFJFRF9GT1JNQVQ1LgotCi1jbGFzcyBQcmVk
aWNhdGU1VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBleHBlY3RlZF90b19maW5pc2hfID0gdHJ1ZTsKLSAgICBm
aW5pc2hlZF8gPSBmYWxzZTsKLSAgICBuMV8gPSBuMl8gPSBuM18gPSBuNF8gPSBuNV8gPSAwOwot
ICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIC8vIFZlcmlmaWVzIHRoYXQg
ZWFjaCBvZiB0aGUgcHJlZGljYXRlJ3MgYXJndW1lbnRzIHdhcyBldmFsdWF0ZWQKLSAgICAvLyBl
eGFjdGx5IG9uY2UuCi0gICAgRVhQRUNUX0VRKDEsIG4xXykgPDwKLSAgICAgICAgIlRoZSBwcmVk
aWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCAyICIKLSAgICAgICAgImV4
YWN0bHkgb25jZS4iOwotICAgIEVYUEVDVF9FUSgxLCBuMl8pIDw8Ci0gICAgICAgICJUaGUgcHJl
ZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgMyAiCi0gICAgICAgICJl
eGFjdGx5IG9uY2UuIjsKLSAgICBFWFBFQ1RfRVEoMSwgbjNfKSA8PAotICAgICAgICAiVGhlIHBy
ZWRpY2F0ZSBhc3NlcnRpb24gZGlkbid0IGV2YWx1YXRlIGFyZ3VtZW50IDQgIgotICAgICAgICAi
ZXhhY3RseSBvbmNlLiI7Ci0gICAgRVhQRUNUX0VRKDEsIG40XykgPDwKLSAgICAgICAgIlRoZSBw
cmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBldmFsdWF0ZSBhcmd1bWVudCA1ICIKLSAgICAgICAg
ImV4YWN0bHkgb25jZS4iOwotICAgIEVYUEVDVF9FUSgxLCBuNV8pIDw8Ci0gICAgICAgICJUaGUg
cHJlZGljYXRlIGFzc2VydGlvbiBkaWRuJ3QgZXZhbHVhdGUgYXJndW1lbnQgNiAiCi0gICAgICAg
ICJleGFjdGx5IG9uY2UuIjsKLQotICAgIC8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRyb2wgZmxv
dyBpbiB0aGUgdGVzdCBmdW5jdGlvbiBpcyBleHBlY3RlZC4KLSAgICBpZiAoZXhwZWN0ZWRfdG9f
ZmluaXNoXyAmJiAhZmluaXNoZWRfKSB7Ci0gICAgICBGQUlMKCkgPDwgIlRoZSBwcmVkaWNhdGUg
YXNzZXJ0aW9uIHVuZXhwYWN0ZWRseSBhYm9ydGVkIHRoZSB0ZXN0LiI7Ci0gICAgfSBlbHNlIGlm
ICghZXhwZWN0ZWRfdG9fZmluaXNoXyAmJiBmaW5pc2hlZF8pIHsKLSAgICAgIEZBSUwoKSA8PCAi
VGhlIGZhaWxlZCBwcmVkaWNhdGUgYXNzZXJ0aW9uIGRpZG4ndCBhYm9ydCB0aGUgdGVzdCAiCi0g
ICAgICAgICAgICAgICAgImFzIGV4cGVjdGVkLiI7Ci0gICAgfQotICB9Ci0KLSAgLy8gdHJ1ZSBp
ZmYgdGhlIHRlc3QgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gcnVuIHRvIGZpbmlzaC4KLSAgc3Rh
dGljIGJvb2wgZXhwZWN0ZWRfdG9fZmluaXNoXzsKLQotICAvLyB0cnVlIGlmZiB0aGUgdGVzdCBm
dW5jdGlvbiBkaWQgcnVuIHRvIGZpbmlzaC4KLSAgc3RhdGljIGJvb2wgZmluaXNoZWRfOwotCi0g
IHN0YXRpYyBpbnQgbjFfOwotICBzdGF0aWMgaW50IG4yXzsKLSAgc3RhdGljIGludCBuM187Ci0g
IHN0YXRpYyBpbnQgbjRfOwotICBzdGF0aWMgaW50IG41XzsKLX07Ci0KLWJvb2wgUHJlZGljYXRl
NVRlc3Q6OmV4cGVjdGVkX3RvX2ZpbmlzaF87Ci1ib29sIFByZWRpY2F0ZTVUZXN0OjpmaW5pc2hl
ZF87Ci1pbnQgUHJlZGljYXRlNVRlc3Q6Om4xXzsKLWludCBQcmVkaWNhdGU1VGVzdDo6bjJfOwot
aW50IFByZWRpY2F0ZTVUZXN0OjpuM187Ci1pbnQgUHJlZGljYXRlNVRlc3Q6Om40XzsKLWludCBQ
cmVkaWNhdGU1VGVzdDo6bjVfOwotCi10eXBlZGVmIFByZWRpY2F0ZTVUZXN0IEVYUEVDVF9QUkVE
X0ZPUk1BVDVUZXN0OwotdHlwZWRlZiBQcmVkaWNhdGU1VGVzdCBBU1NFUlRfUFJFRF9GT1JNQVQ1
VGVzdDsKLXR5cGVkZWYgUHJlZGljYXRlNVRlc3QgRVhQRUNUX1BSRUQ1VGVzdDsKLXR5cGVkZWYg
UHJlZGljYXRlNVRlc3QgQVNTRVJUX1BSRUQ1VGVzdDsKLQotLy8gVGVzdHMgYSBzdWNjZXNzZnVs
IEVYUEVDVF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwg
RnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRDUoUHJlZEZ1bmN0
aW9uNUludCwKLSAgICAgICAgICAgICAgICsrbjFfLAotICAgICAgICAgICAgICAgKytuMl8sCi0g
ICAgICAgICAgICAgICArK24zXywKLSAgICAgICAgICAgICAgICsrbjRfLAotICAgICAgICAgICAg
ICAgKytuNV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3Nm
dWwgRVhQRUNUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVE
NVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRUQ1KFByZWRG
dW5jdGlvbjVCb29sLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAg
ICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAg
ICAgQm9vbCgrK240XyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjVfKSk7Ci0gIGZpbmlzaGVk
XyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRDUgd2hlcmUg
dGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5
cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVT
dWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVENShQcmVkRnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAg
ICsrbjFfLAotICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICArK24zXywKLSAg
ICAgICAgICAgICAgICsrbjRfLAotICAgICAgICAgICAgICAgKytuNV8pOwotICBmaW5pc2hlZF8g
PSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgRVhQRUNUX1BSRUQ1IHdoZXJlIHRo
ZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQg
dHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uVXNlclR5cGVT
dWNjZXNzKSB7Ci0gIEVYUEVDVF9QUkVENShQcmVkRnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAg
IEJvb2woKytuMV8pLAotICAgICAgICAgICAgICAgQm9vbCgrK24yXyksCi0gICAgICAgICAgICAg
ICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuNF8pLAotICAgICAgICAgICAg
ICAgQm9vbCgrK241XykpOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIGZh
aWxlZCBFWFBFQ1RfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEg
ZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVENVRl
c3QsIEZ1bmN0aW9uT25CdWlsdEluVHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRUQ1KFByZWRGdW5jdGlvbjVJbnQsCi0g
ICAgICAgICAgICAgICAgIG4xXysrLAotICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAg
ICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgIG40XysrLAotICAgICAgICAgICAgICAg
ICBuNV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0
cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQ
RUNUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDUoUHJlZEZ1bmN0aW9u
NUJvb2wsCi0gICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBC
b29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAg
ICAgIEJvb2wobjRfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG41XysrKSk7Ci0gICAgZmlu
aXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1Rf
UFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBh
IGJ1aWx0LWluIHR5cGUgKGludCkuCi1URVNUX0YoRVhQRUNUX1BSRUQ1VGVzdCwgRnVuY3Rvck9u
QnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5P
TElOVAotICAgIEVYUEVDVF9QUkVENShQcmVkRnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAgICAg
bjFfKyssCi0gICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAgICBuM18rKywK
LSAgICAgICAgICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgIG41XysrKTsKLSAgICBm
aW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVD
VF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9u
IGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVENVRlc3QsIEZ1
bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRDUoUHJlZEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAg
ICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAg
ICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjRfKyspLAotICAg
ICAgICAgICAgICAgICBCb29sKG41XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwg
IiIpOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQot
Ly8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAo
aW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNj
ZXNzKSB7Ci0gIEFTU0VSVF9QUkVENShQcmVkRnVuY3Rpb241SW50LAotICAgICAgICAgICAgICAg
KytuMV8sCi0gICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICsrbjNfLAotICAg
ICAgICAgICAgICAgKytuNF8sCi0gICAgICAgICAgICAgICArK241Xyk7Ci0gIGZpbmlzaGVkXyA9
IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhl
Ci0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSB1c2VyLWRlZmluZWQg
dHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBl
U3VjY2VzcykgewotICBBU1NFUlRfUFJFRDUoUHJlZEZ1bmN0aW9uNUJvb2wsCi0gICAgICAgICAg
ICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAg
ICAgICAgQm9vbCgrK24zXyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjRfKSwKLSAgICAgICAg
ICAgICAgIEJvb2woKytuNV8pKTsKLSAgZmluaXNoZWRfID0gdHJ1ZTsKLX0KLQotLy8gVGVzdHMg
YSBzdWNjZXNzZnVsIEFTU0VSVF9QUkVENSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0
ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRf
UFJFRDVUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQ1
KFByZWRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAr
K24yXywKLSAgICAgICAgICAgICAgICsrbjNfLAotICAgICAgICAgICAgICAgKytuNF8sCi0gICAg
ICAgICAgICAgICArK241Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEg
c3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9ybWF0dGVy
IGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4KLVRFU1RfRihBU1NF
UlRfUFJFRDVUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRUQ1
KFByZWRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAg
ICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAg
ICAgICAgQm9vbCgrK240XyksCi0gICAgICAgICAgICAgICBCb29sKCsrbjVfKSk7Ci0gIGZpbmlz
aGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVENSB3aGVyZSB0
aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5
cGUgKGludCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBl
RmFpbHVyZSkgewotICBleHBlY3RlZF90b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVENShQcmVkRnVuY3Rpb241SW50
LAotICAgICAgICAgICAgICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAg
ICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAgICBuNF8rKywKLSAgICAgICAgICAg
ICAgICAgbjVfKyspOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8g
VGVzdHMgYSBmYWlsZWQgQVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9G
KEFTU0VSVF9QUkVENVRlc3QsIEZ1bmN0aW9uT25Vc2VyVHlwZUZhaWx1cmUpIHsKLSAgZXhwZWN0
ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJ
TlQKLSAgICBBU1NFUlRfUFJFRDUoUHJlZEZ1bmN0aW9uNUJvb2wsCi0gICAgICAgICAgICAgICAg
IEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAg
ICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjRfKyspLAotICAgICAg
ICAgICAgICAgICBCb29sKG41XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIp
OwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRDUgd2hlcmUgdGhlCi0vLyBwcmVk
aWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIGJ1aWx0LWluIHR5cGUgKGludCkuCi1U
RVNUX0YoQVNTRVJUX1BSRUQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJlKSB7Ci0g
IGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRUQ1KFByZWRGdW5jdG9yNSgpLAotICAgICAgICAgICAg
ICAgICBuMV8rKywKLSAgICAgICAgICAgICAgICAgbjJfKyssCi0gICAgICAgICAgICAgICAgIG4z
XysrLAotICAgICAgICAgICAgICAgICBuNF8rKywKLSAgICAgICAgICAgICAgICAgbjVfKyspOwot
ICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQg
QVNTRVJUX1BSRUQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BSRUQ1VGVz
dCwgRnVuY3Rvck9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBm
YWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BS
RUQ1KFByZWRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAg
ICAgICAgICAgICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAot
ICAgICAgICAgICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAgQm9vbChuNV8r
KykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgYSBz
dWNjZXNzZnVsIEVYUEVDVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCi0vLyBwcmVkaWNhdGUtZm9y
bWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVY
UEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0g
IEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKLSAgICAgICAgICAgICAg
ICAgICAgICArK24xXywKLSAgICAgICAgICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAg
ICAgICAgICAgICArK24zXywKLSAgICAgICAgICAgICAgICAgICAgICArK240XywKLSAgICAgICAg
ICAgICAgICAgICAgICArK241Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3Rz
IGEgc3VjY2Vzc2Z1bCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRl
LWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgot
VEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVTdWNjZXNz
KSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKLSAgICAgICAg
ICAgICAgICAgICAgICBCb29sKCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsr
bjJfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAg
ICAgICAgICBCb29sKCsrbjRfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjVfKSk7
Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBFQ1Rf
UFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0
b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVU
ZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZVN1Y2Nlc3MpIHsKLSAgRVhQRUNUX1BSRURfRk9STUFU
NShQcmVkRm9ybWF0RnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAgICAgICAgICArK24xXywKLSAg
ICAgICAgICAgICAgICAgICAgICArK24yXywKLSAgICAgICAgICAgICAgICAgICAgICArK24zXywK
LSAgICAgICAgICAgICAgICAgICAgICArK240XywKLSAgICAgICAgICAgICAgICAgICAgICArK241
Xyk7Ci0gIGZpbmlzaGVkXyA9IHRydWU7Ci19Ci0KLS8vIFRlc3RzIGEgc3VjY2Vzc2Z1bCBFWFBF
Q1RfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1
bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoRVhQRUNUX1BSRURf
Rk9STUFUNVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlU3VjY2VzcykgewotICBFWFBFQ1RfUFJFRF9G
T1JNQVQ1KFByZWRGb3JtYXRGdW5jdG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
KytuMV8pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuMl8pLAotICAgICAgICAgICAg
ICAgICAgICAgIEJvb2woKytuM18pLAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuNF8p
LAotICAgICAgICAgICAgICAgICAgICAgIEJvb2woKytuNV8pKTsKLSAgZmluaXNoZWRfID0gdHJ1
ZTsKLX0KLQotLy8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUK
LS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIGJ1aWx0LWluIHR5cGUg
KGludCkuCi1URVNUX0YoRVhQRUNUX1BSRURfRk9STUFUNVRlc3QsIEZ1bmN0aW9uT25CdWlsdElu
VHlwZUZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0g
ICAgRVhQRUNUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAotICAgICAgICAgICAg
ICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyss
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuNV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsK
LSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBFWFBFQ1RfUFJFRF9GT1JNQVQ1IHdo
ZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1k
ZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEVYUEVDVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5j
dGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0aW9uNSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjFfKyspLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbChuMl8rKyksCi0gICAgICAgICAgICAgICAgICAgICAgICBCb29sKG4zXysrKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjRfKyspLAotICAgICAgICAgICAgICAgICAgICAg
ICAgQm9vbChuNV8rKykpOwotICAgIGZpbmlzaGVkXyA9IHRydWU7Ci0gIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgYSBmYWlsZWQgRVhQRUNUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRp
Y2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRF
U1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVGYWlsdXJl
KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9Q
UkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBuMV8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4yXysrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbjNfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuNF8rKywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG41XysrKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7
Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEVYUEVDVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhlCi0v
LyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3RvciBvbiBhIHVzZXItZGVmaW5lZCB0eXBl
IChCb29sKS4KLVRFU1RfRihFWFBFQ1RfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rvck9uVXNlclR5
cGVGYWlsdXJlKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAg
IEVYUEVDVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjJf
KyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjVf
KyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19Ci0KLS8vIFRlc3RzIGEg
c3VjY2Vzc2Z1bCBBU1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZv
cm1hdHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihB
U1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rpb25PbkJ1aWx0SW5UeXBlU3VjY2Vzcykgewot
ICBBU1NFUlRfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCi0gICAgICAgICAgICAg
ICAgICAgICAgKytuMV8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAg
ICAgICAgICAgICAgKytuM18sCi0gICAgICAgICAgICAgICAgICAgICAgKytuNF8sCi0gICAgICAg
ICAgICAgICAgICAgICAgKytuNV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0
cyBhIHN1Y2Nlc3NmdWwgQVNTRVJUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgaXMgYSBmdW5jdGlvbiBvbiBhIHVzZXItZGVmaW5lZCB0eXBlIChCb29sKS4K
LVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ1VGVzdCwgRnVuY3Rpb25PblVzZXJUeXBlU3VjY2Vz
cykgewotICBBU1NFUlRfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5jdGlvbjUsCi0gICAgICAg
ICAgICAgICAgICAgICAgQm9vbCgrK24xXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgr
K24yXyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK24zXyksCi0gICAgICAgICAgICAg
ICAgICAgICAgQm9vbCgrK240XyksCi0gICAgICAgICAgICAgICAgICAgICAgQm9vbCgrK241Xykp
OwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNTRVJU
X1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBmdW5j
dG9yIG9uIGEgYnVpbHQtaW4gdHlwZSAoaW50KS4KLVRFU1RfRihBU1NFUlRfUFJFRF9GT1JNQVQ1
VGVzdCwgRnVuY3Rvck9uQnVpbHRJblR5cGVTdWNjZXNzKSB7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1B
VDUoUHJlZEZvcm1hdEZ1bmN0b3I1KCksCi0gICAgICAgICAgICAgICAgICAgICAgKytuMV8sCi0g
ICAgICAgICAgICAgICAgICAgICAgKytuMl8sCi0gICAgICAgICAgICAgICAgICAgICAgKytuM18s
Ci0gICAgICAgICAgICAgICAgICAgICAgKytuNF8sCi0gICAgICAgICAgICAgICAgICAgICAgKytu
NV8pOwotICBmaW5pc2hlZF8gPSB0cnVlOwotfQotCi0vLyBUZXN0cyBhIHN1Y2Nlc3NmdWwgQVNT
RVJUX1BSRURfRk9STUFUNSB3aGVyZSB0aGUKLS8vIHByZWRpY2F0ZS1mb3JtYXR0ZXIgaXMgYSBm
dW5jdG9yIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9GKEFTU0VSVF9QUkVE
X0ZPUk1BVDVUZXN0LCBGdW5jdG9yT25Vc2VyVHlwZVN1Y2Nlc3MpIHsKLSAgQVNTRVJUX1BSRURf
Rk9STUFUNShQcmVkRm9ybWF0RnVuY3RvcjUoKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29s
KCsrbjFfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjJfKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBCb29sKCsrbjNfKSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjRf
KSwKLSAgICAgICAgICAgICAgICAgICAgICBCb29sKCsrbjVfKSk7Ci0gIGZpbmlzaGVkXyA9IHRy
dWU7Ci19Ci0KLS8vIFRlc3RzIGEgZmFpbGVkIEFTU0VSVF9QUkVEX0ZPUk1BVDUgd2hlcmUgdGhl
Ci0vLyBwcmVkaWNhdGUtZm9ybWF0dGVyIGlzIGEgZnVuY3Rpb24gb24gYSBidWlsdC1pbiB0eXBl
IChpbnQpLgotVEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uQnVpbHRJ
blR5cGVGYWlsdXJlKSB7Ci0gIGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUNShQcmVk
Rm9ybWF0RnVuY3Rpb241LAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAg
ICAgICAgICAgICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBu
NV8rKyk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBh
IGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1h
dHRlciBpcyBhIGZ1bmN0aW9uIG9uIGEgdXNlci1kZWZpbmVkIHR5cGUgKEJvb2wpLgotVEVTVF9G
KEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdGlvbk9uVXNlclR5cGVGYWlsdXJlKSB7Ci0g
IGV4cGVjdGVkX3RvX2ZpbmlzaF8gPSBmYWxzZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgQVNTRVJUX1BSRURfRk9STUFUNShQcmVkRm9ybWF0RnVuY3Rpb241LAot
ICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuMV8rKyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBCb29sKG4yXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wobjNfKyspLAot
ICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuNF8rKyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBCb29sKG41XysrKSk7Ci0gICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQot
Ci0vLyBUZXN0cyBhIGZhaWxlZCBBU1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJl
ZGljYXRlLWZvcm1hdHRlciBpcyBhIGZ1bmN0b3Igb24gYSBidWlsdC1pbiB0eXBlIChpbnQpLgot
VEVTVF9GKEFTU0VSVF9QUkVEX0ZPUk1BVDVUZXN0LCBGdW5jdG9yT25CdWlsdEluVHlwZUZhaWx1
cmUpIHsKLSAgZXhwZWN0ZWRfdG9fZmluaXNoXyA9IGZhbHNlOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQ1KFByZWRGb3JtYXRGdW5j
dG9yNSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbjFfKyssCi0gICAgICAgICAgICAgICAg
ICAgICAgICBuMl8rKywKLSAgICAgICAgICAgICAgICAgICAgICAgIG4zXysrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbjRfKyssCi0gICAgICAgICAgICAgICAgICAgICAgICBuNV8rKyk7Ci0g
ICAgZmluaXNoZWRfID0gdHJ1ZTsKLSAgfSwgIiIpOwotfQotCi0vLyBUZXN0cyBhIGZhaWxlZCBB
U1NFUlRfUFJFRF9GT1JNQVQ1IHdoZXJlIHRoZQotLy8gcHJlZGljYXRlLWZvcm1hdHRlciBpcyBh
IGZ1bmN0b3Igb24gYSB1c2VyLWRlZmluZWQgdHlwZSAoQm9vbCkuCi1URVNUX0YoQVNTRVJUX1BS
RURfRk9STUFUNVRlc3QsIEZ1bmN0b3JPblVzZXJUeXBlRmFpbHVyZSkgewotICBleHBlY3RlZF90
b19maW5pc2hfID0gZmFsc2U7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAot
ICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDUoUHJlZEZvcm1hdEZ1bmN0b3I1KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBCb29sKG4xXysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
bjJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgQm9vbChuM18rKyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBCb29sKG40XysrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wo
bjVfKyspKTsKLSAgICBmaW5pc2hlZF8gPSB0cnVlOwotICB9LCAiIik7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X3ByZW1hdHVyZV9leGl0X3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNiNGRjN2Q0M2ZkNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfcHJlbWF0dXJlX2V4aXRfdGVzdC5jYworKysgL2Rldi9udWxsCkBAIC0xLDEy
NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0v
LwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8v
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0v
LwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRlc3Rz
IHRoYXQgR29vZ2xlIFRlc3QgbWFuaXB1bGF0ZXMgdGhlIHByZW1hdHVyZS1leGl0LWRldGVjdGlv
bgotLy8gZmlsZSBjb3JyZWN0bHkuCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAi
Z3Rlc3QvZ3Rlc3QuaCIKLQotdXNpbmcgOjp0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdDsKLXVzaW5n
IDo6dGVzdGluZzo6VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpHZXRF
bnY7Ci11c2luZyA6OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6U3RhdDsKLXVzaW5nIDo6dGVz
dGluZzo6aW50ZXJuYWw6OnBvc2l4OjpTdGF0U3RydWN0OwotCi1uYW1lc3BhY2UgewotCi1jbGFz
cyBQcmVtYXR1cmVFeGl0VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwdWJsaWM6Ci0gIC8vIFJldHVy
bnMgdHJ1ZSBpZmYgdGhlIGdpdmVuIGZpbGUgZXhpc3RzLgotICBzdGF0aWMgYm9vbCBGaWxlRXhp
c3RzKGNvbnN0IGNoYXIqIGZpbGVwYXRoKSB7Ci0gICAgU3RhdFN0cnVjdCBzdGF0OwotICAgIHJl
dHVybiBTdGF0KGZpbGVwYXRoLCAmc3RhdCkgPT0gMDsKLSAgfQotCi0gcHJvdGVjdGVkOgotICBQ
cmVtYXR1cmVFeGl0VGVzdCgpIHsKLSAgICBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID0gR2V0
RW52KCJURVNUX1BSRU1BVFVSRV9FWElUX0ZJTEUiKTsKLQotICAgIC8vIE5vcm1hbGl6ZSBOVUxM
IHRvICIiIGZvciBlYXNlIG9mIGhhbmRsaW5nLgotICAgIGlmIChwcmVtYXR1cmVfZXhpdF9maWxl
X3BhdGhfID09IE5VTEwpIHsKLSAgICAgIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPSAiIjsK
LSAgICB9Ci0gIH0KLQotICAvLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBwcmVtYXR1cmUtZXhpdCBm
aWxlIGV4aXN0cy4KLSAgYm9vbCBQcmVtYXR1cmVFeGl0RmlsZUV4aXN0cygpIGNvbnN0IHsKLSAg
ICByZXR1cm4gRmlsZUV4aXN0cyhwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfKTsKLSAgfQotCi0g
IGNvbnN0IGNoYXIqIHByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF87Ci19OwotCi10eXBlZGVmIFBy
ZW1hdHVyZUV4aXRUZXN0IFByZW1hdHVyZUV4aXREZWF0aFRlc3Q7Ci0KLS8vIFRlc3RzIHRoYXQ6
Ci0vLyAgIC0gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUgZXhpc3RzIGR1cmluZyB0aGUgZXhlY3V0
aW9uIG9mIGEKLS8vICAgICBkZWF0aCB0ZXN0IChFWFBFQ1RfREVBVEgqKSwgYW5kCi0vLyAgIC0g
YSBkZWF0aCB0ZXN0IGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggdGhlIG1haW4gdGVzdCBwcm9jZXNz
J3MKLS8vICAgICBoYW5kbGluZyBvZiB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZS4KLVRFU1RfRihQ
cmVtYXR1cmVFeGl0RGVhdGhUZXN0LCBGaWxlRXhpc3RzRHVyaW5nRXhlY3V0aW9uT2ZEZWF0aFRl
c3QpIHsKLSAgaWYgKCpwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfID09ICdcMCcpIHsKLSAgICBy
ZXR1cm47Ci0gIH0KLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHsKLSAgICAgIC8vIElm
IHRoZSBmaWxlIGV4aXN0cywgY3Jhc2ggdGhlIHByb2Nlc3Mgc3VjaCB0aGF0IHRoZSBtYWluIHRl
c3QKLSAgICAgIC8vIHByb2Nlc3Mgd2lsbCBjYXRjaCB0aGUgKGV4cGVjdGVkKSBjcmFzaCBhbmQg
cmVwb3J0IGEgc3VjY2VzczsKLSAgICAgIC8vIG90aGVyd2lzZSBkb24ndCBjcmFzaCwgd2hpY2gg
d2lsbCBjYXVzZSB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MKLSAgICAgIC8vIHRvIHJlcG9ydCB0aGF0
IHRoZSBkZWF0aCB0ZXN0IGhhcyBmYWlsZWQuCi0gICAgICBpZiAoUHJlbWF0dXJlRXhpdEZpbGVF
eGlzdHMoKSkgewotICAgICAgICBleGl0KDEpOwotICAgICAgfQotICAgIH0sICIiKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBleGlzdHMgZHVyaW5nIHRoZSBl
eGVjdXRpb24gb2YgYQotLy8gbm9ybWFsIChub24tZGVhdGgpIHRlc3QuCi1URVNUX0YoUHJlbWF0
dXJlRXhpdFRlc3QsIFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzRHVyaW5nVGVzdEV4ZWN1dGlvbikg
ewotICBpZiAoKnByZW1hdHVyZV9leGl0X2ZpbGVfcGF0aF8gPT0gJ1wwJykgewotICAgIHJldHVy
bjsKLSAgfQotCi0gIEVYUEVDVF9UUlVFKFByZW1hdHVyZUV4aXRGaWxlRXhpc3RzKCkpCi0gICAg
ICA8PCAiIGZpbGUgIiA8PCBwcmVtYXR1cmVfZXhpdF9maWxlX3BhdGhfCi0gICAgICA8PCAiIHNo
b3VsZCBleGlzdCBkdXJpbmcgdGVzdCBleGVjdXRpb24sIGJ1dCBkb2Vzbid0LiI7Ci19Ci0KLX0g
IC8vIG5hbWVzcGFjZQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgSW5p
dEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICBjb25zdCBpbnQgZXhpdF9jb2RlID0gUlVOX0FM
TF9URVNUUygpOwotCi0gIC8vIFRlc3QgdGhhdCB0aGUgcHJlbWF0dXJlLWV4aXQgZmlsZSBpcyBk
ZWxldGVkIHVwb24gcmV0dXJuIGZyb20KLSAgLy8gUlVOX0FMTF9URVNUUygpLgotICBjb25zdCBj
aGFyKiBjb25zdCBmaWxlcGF0aCA9IEdldEVudigiVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFIik7
Ci0gIGlmIChmaWxlcGF0aCAhPSBOVUxMICYmICpmaWxlcGF0aCAhPSAnXDAnKSB7Ci0gICAgaWYg
KFByZW1hdHVyZUV4aXRUZXN0OjpGaWxlRXhpc3RzKGZpbGVwYXRoKSkgewotICAgICAgcHJpbnRm
KAotICAgICAgICAgICJGaWxlICVzIHNob3VsZG4ndCBleGlzdCBhZnRlciB0aGUgdGVzdCBwcm9n
cmFtIGZpbmlzaGVzLCBidXQgZG9lcy4iLAotICAgICAgICAgIGZpbGVwYXRoKTsKLSAgICAgIHJl
dHVybiAxOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBleGl0X2NvZGU7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3Qv
Z3Rlc3RfcHJvZF90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjBhYmNl
MTg3MjQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Byb2RfdGVz
dC5jYworKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA2LCBH
b29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8g
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tICha
aGFueW9uZyBXYW4pCi0vLwotLy8gVW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3By
b2QuaC4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAidGVzdC9wcm9kdWN0
aW9uLmgiCi0KLS8vIFRlc3RzIHRoYXQgcHJpdmF0ZSBtZW1iZXJzIGNhbiBiZSBhY2Nlc3NlZCBm
cm9tIGEgVEVTVCBkZWNsYXJlZCBhcwotLy8gYSBmcmllbmQgb2YgdGhlIGNsYXNzLgotVEVTVChQ
cml2YXRlQ29kZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJzKSB7Ci0gIFByaXZhdGVDb2Rl
IGE7Ci0gIEVYUEVDVF9FUSgwLCBhLnhfKTsKLQotICBhLnNldF94KDEpOwotICBFWFBFQ1RfRVEo
MSwgYS54Xyk7Ci19Ci0KLXR5cGVkZWYgdGVzdGluZzo6VGVzdCBQcml2YXRlQ29kZUZpeHR1cmVU
ZXN0OwotCi0vLyBUZXN0cyB0aGF0IHByaXZhdGUgbWVtYmVycyBjYW4gYmUgYWNjZXNzZWQgZnJv
bSBhIFRFU1RfRiBkZWNsYXJlZAotLy8gYXMgYSBmcmllbmQgb2YgdGhlIGNsYXNzLgotVEVTVF9G
KFByaXZhdGVDb2RlRml4dHVyZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJzKSB7Ci0gIFBy
aXZhdGVDb2RlIGE7Ci0gIEVYUEVDVF9FUSgwLCBhLnhfKTsKLQotICBhLnNldF94KDIpOwotICBF
WFBFQ1RfRVEoMiwgYS54Xyk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3JlcGVhdF90ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxMDEyYWRjMjQwLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9yZXBlYXRfdGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDI1MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0v
LyBUZXN0cyB0aGUgLS1ndGVzdF9yZXBlYXQ9bnVtYmVyIGZsYWcuCi0KLSNpbmNsdWRlIDxzdGRs
aWIuaD4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0v
LyBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgaXMgcGFydCBvZiBHb29nbGUg
VGVzdCdzCi0vLyBpbXBsZW1lbnRhdGlvbi4gIEl0IG11c3QgY29tZSBiZWZvcmUgZ3Rlc3QtaW50
ZXJuYWwtaW5sLmggaXMKLS8vIGluY2x1ZGVkLCBvciB0aGVyZSB3aWxsIGJlIGEgY29tcGlsZXIg
ZXJyb3IuICBUaGlzIHRyaWNrIGlzIHRvCi0vLyBwcmV2ZW50IGEgdXNlciBmcm9tIGFjY2lkZW50
YWxseSBpbmNsdWRpbmcgZ3Rlc3QtaW50ZXJuYWwtaW5sLmggaW4KLS8vIGhpcyBjb2RlLgotI2Rl
ZmluZSBHVEVTVF9JTVBMRU1FTlRBVElPTl8gMQotI2luY2x1ZGUgInNyYy9ndGVzdC1pbnRlcm5h
bC1pbmwuaCIKLSN1bmRlZiBHVEVTVF9JTVBMRU1FTlRBVElPTl8KLQotbmFtZXNwYWNlIHRlc3Rp
bmcgewotCi1HVEVTVF9ERUNMQVJFX3N0cmluZ18oZGVhdGhfdGVzdF9zdHlsZSk7Ci1HVEVTVF9E
RUNMQVJFX3N0cmluZ18oZmlsdGVyKTsKLUdURVNUX0RFQ0xBUkVfaW50MzJfKHJlcGVhdCk7Ci0K
LX0gIC8vIG5hbWVzcGFjZSB0ZXN0aW5nCi0KLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoZGVh
dGhfdGVzdF9zdHlsZSk7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGZpbHRlcik7Ci11c2lu
ZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCk7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIFdlIG5l
ZWQgdGhpcyB3aGVuIHdlIGFyZSB0ZXN0aW5nIEdvb2dsZSBUZXN0IGl0c2VsZiBhbmQgdGhlcmVm
b3JlCi0vLyBjYW5ub3QgdXNlIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMuCi0jZGVmaW5lIEdURVNU
X0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGFjdHVhbCkgXAotICBkbyB7XAotICAgIGNvbnN0IGlu
dCBleHBlY3RlZF92YWwgPSAoZXhwZWN0ZWQpO1wKLSAgICBjb25zdCBpbnQgYWN0dWFsX3ZhbCA9
IChhY3R1YWwpO1wKLSAgICBpZiAoOjp0ZXN0aW5nOjppbnRlcm5hbDo6SXNUcnVlKGV4cGVjdGVk
X3ZhbCAhPSBhY3R1YWxfdmFsKSkge1wKLSAgICAgIDo6c3RkOjpjb3V0IDw8ICJWYWx1ZSBvZjog
IiAjYWN0dWFsICJcbiJcCi0gICAgICAgICAgICAgICAgICA8PCAiICBBY3R1YWw6ICIgPDwgYWN0
dWFsX3ZhbCA8PCAiXG4iXAotICAgICAgICAgICAgICAgICAgPDwgIkV4cGVjdGVkOiAiICNleHBl
Y3RlZCAiXG4iXAotICAgICAgICAgICAgICAgICAgPDwgIldoaWNoIGlzOiAiIDw8IGV4cGVjdGVk
X3ZhbCA8PCAiXG4iO1wKLSAgICAgIDo6dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgp
O1wKLSAgICB9XAotICB9IHdoaWxlICg6OnRlc3Rpbmc6OmludGVybmFsOjpBbHdheXNGYWxzZSgp
KQotCi0KLS8vIFVzZWQgZm9yIHZlcmlmeWluZyB0aGF0IGdsb2JhbCBlbnZpcm9ubWVudCBzZXQt
dXAgYW5kIHRlYXItZG93biBhcmUKLS8vIGluc2lkZSB0aGUgZ3Rlc3RfcmVwZWF0IGxvb3AuCi0K
LWludCBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCA9IDA7Ci1pbnQgZ19lbnZpcm9ubWVudF90
ZWFyX2Rvd25fY291bnQgPSAwOwotCi1jbGFzcyBNeUVudmlyb25tZW50IDogcHVibGljIHRlc3Rp
bmc6OkVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIE15RW52aXJvbm1lbnQoKSB7fQotICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKSB7IGdfZW52aXJvbm1lbnRfc2V0X3VwX2NvdW50Kys7IH0KLSAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkgeyBnX2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCsrOyB9
Ci19OwotCi0vLyBBIHRlc3QgdGhhdCBzaG91bGQgZmFpbC4KLQotaW50IGdfc2hvdWxkX2ZhaWxf
Y291bnQgPSAwOwotCi1URVNUKEZvb1Rlc3QsIFNob3VsZEZhaWwpIHsKLSAgZ19zaG91bGRfZmFp
bF9jb3VudCsrOwotICBFWFBFQ1RfRVEoMCwgMSkgPDwgIkV4cGVjdGVkIGZhaWx1cmUuIjsKLX0K
LQotLy8gQSB0ZXN0IHRoYXQgc2hvdWxkIHBhc3MuCi0KLWludCBnX3Nob3VsZF9wYXNzX2NvdW50
ID0gMDsKLQotVEVTVChGb29UZXN0LCBTaG91bGRQYXNzKSB7Ci0gIGdfc2hvdWxkX3Bhc3NfY291
bnQrKzsKLX0KLQotLy8gQSB0ZXN0IHRoYXQgY29udGFpbnMgYSB0aHJlYWQtc2FmZSBkZWF0aCB0
ZXN0IGFuZCBhIGZhc3QgZGVhdGgKLS8vIHRlc3QuICBJdCBzaG91bGQgcGFzcy4KLQotaW50IGdf
ZGVhdGhfdGVzdF9jb3VudCA9IDA7Ci0KLVRFU1QoQmFyRGVhdGhUZXN0LCBUaHJlYWRTYWZlQW5k
RmFzdCkgewotICBnX2RlYXRoX3Rlc3RfY291bnQrKzsKLQotICBHVEVTVF9GTEFHKGRlYXRoX3Rl
c3Rfc3R5bGUpID0gInRocmVhZHNhZmUiOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKDo6
dGVzdGluZzo6aW50ZXJuYWw6OnBvc2l4OjpBYm9ydCgpLCAiIik7Ci0KLSAgR1RFU1RfRkxBRyhk
ZWF0aF90ZXN0X3N0eWxlKSA9ICJmYXN0IjsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCg6
OnRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6QWJvcnQoKSwgIiIpOwotfQotCi0jaWYgR1RFU1Rf
SEFTX1BBUkFNX1RFU1QKLWludCBnX3BhcmFtX3Rlc3RfY291bnQgPSAwOwotCi1jb25zdCBpbnQg
a051bWJlck9mUGFyYW1UZXN0cyA9IDEwOwotCi1jbGFzcyBNeVBhcmFtVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGludD4ge307Ci0KLVRFU1RfUChNeVBhcmFtVGVzdCwgU2hv
dWxkUGFzcykgewotICAvLyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBNYWtlIHBhcmFtZXRlciB2
YWx1ZSBjaGVja2luZyByb2J1c3QKLSAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgV1JUIG9y
ZGVyIG9mIHRlc3RzLgotICBHVEVTVF9DSEVDS19JTlRfRVFfKGdfcGFyYW1fdGVzdF9jb3VudCAl
IGtOdW1iZXJPZlBhcmFtVGVzdHMsIEdldFBhcmFtKCkpOwotICBnX3BhcmFtX3Rlc3RfY291bnQr
KzsKLX0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKE15UGFyYW1TZXF1ZW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIE15UGFyYW1UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dGluZzo6UmFuZ2UoMCwga051bWJlck9mUGFyYW1UZXN0cykpOwotI2VuZGlmICAvLyBHVEVTVF9I
QVNfUEFSQU1fVEVTVAotCi0vLyBSZXNldHMgdGhlIGNvdW50IGZvciBlYWNoIHRlc3QuCi12b2lk
IFJlc2V0Q291bnRzKCkgewotICBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCA9IDA7Ci0gIGdf
ZW52aXJvbm1lbnRfdGVhcl9kb3duX2NvdW50ID0gMDsKLSAgZ19zaG91bGRfZmFpbF9jb3VudCA9
IDA7Ci0gIGdfc2hvdWxkX3Bhc3NfY291bnQgPSAwOwotICBnX2RlYXRoX3Rlc3RfY291bnQgPSAw
OwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIGdfcGFyYW1fdGVzdF9jb3VudCA9IDA7Ci0j
ZW5kaWYgIC8vIEdURVNUX0hBU19QQVJBTV9URVNUCi19Ci0KLS8vIENoZWNrcyB0aGF0IHRoZSBj
b3VudCBmb3IgZWFjaCB0ZXN0IGlzIGV4cGVjdGVkLgotdm9pZCBDaGVja0NvdW50cyhpbnQgZXhw
ZWN0ZWQpIHsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19lbnZpcm9ubWVudF9z
ZXRfdXBfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX2Vudmlyb25t
ZW50X3RlYXJfZG93bl9jb3VudCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8oZXhwZWN0ZWQsIGdf
c2hvdWxkX2ZhaWxfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFfKGV4cGVjdGVkLCBnX3No
b3VsZF9wYXNzX2NvdW50KTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXyhleHBlY3RlZCwgZ19kZWF0
aF90ZXN0X2NvdW50KTsKLSNpZiBHVEVTVF9IQVNfUEFSQU1fVEVTVAotICBHVEVTVF9DSEVDS19J
TlRfRVFfKGV4cGVjdGVkICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90ZXN0X2NvdW50
KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLX0KLQotLy8gVGVzdHMgdGhlIGJl
aGF2aW9yIG9mIEdvb2dsZSBUZXN0IHdoZW4gLS1ndGVzdF9yZXBlYXQgaXMgbm90IHNwZWNpZmll
ZC4KLXZvaWQgVGVzdFJlcGVhdFVuc3BlY2lmaWVkKCkgewotICBSZXNldENvdW50cygpOwotICBH
VEVTVF9DSEVDS19JTlRfRVFfKDEsIFJVTl9BTExfVEVTVFMoKSk7Ci0gIENoZWNrQ291bnRzKDEp
OwotfQotCi0vLyBUZXN0cyB0aGUgYmVoYXZpb3Igb2YgR29vZ2xlIFRlc3Qgd2hlbiAtLWd0ZXN0
X3JlcGVhdCBoYXMgdGhlIGdpdmVuIHZhbHVlLgotdm9pZCBUZXN0UmVwZWF0KGludCByZXBlYXQp
IHsKLSAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0OwotCi0gIFJlc2V0Q291bnRzKCk7Ci0g
IEdURVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0ID4gMCA/IDEgOiAwLCBSVU5fQUxMX1RFU1RTKCkp
OwotICBDaGVja0NvdW50cyhyZXBlYXQpOwotfQotCi0vLyBUZXN0cyB1c2luZyAtLWd0ZXN0X3Jl
cGVhdCB3aGVuIC0tZ3Rlc3RfZmlsdGVyIHNwZWNpZmllcyBhbiBlbXB0eQotLy8gc2V0IG9mIHRl
c3RzLgotdm9pZCBUZXN0UmVwZWF0V2l0aEVtcHR5RmlsdGVyKGludCByZXBlYXQpIHsKLSAgR1RF
U1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0OwotICBHVEVTVF9GTEFHKGZpbHRlcikgPSAiTm9uZSI7
Ci0KLSAgUmVzZXRDb3VudHMoKTsKLSAgR1RFU1RfQ0hFQ0tfSU5UX0VRXygwLCBSVU5fQUxMX1RF
U1RTKCkpOwotICBDaGVja0NvdW50cygwKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgLS1ndGVzdF9y
ZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBzZXQgb2YKLS8vIHN1Y2Nlc3Nm
dWwgdGVzdHMuCi12b2lkIFRlc3RSZXBlYXRXaXRoRmlsdGVyRm9yU3VjY2Vzc2Z1bFRlc3RzKGlu
dCByZXBlYXQpIHsKLSAgR1RFU1RfRkxBRyhyZXBlYXQpID0gcmVwZWF0OwotICBHVEVTVF9GTEFH
KGZpbHRlcikgPSAiKi0qU2hvdWxkRmFpbCI7Ci0KLSAgUmVzZXRDb3VudHMoKTsKLSAgR1RFU1Rf
Q0hFQ0tfSU5UX0VRXygwLCBSVU5fQUxMX1RFU1RTKCkpOwotICBHVEVTVF9DSEVDS19JTlRfRVFf
KHJlcGVhdCwgZ19lbnZpcm9ubWVudF9zZXRfdXBfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRf
RVFfKHJlcGVhdCwgZ19lbnZpcm9ubWVudF90ZWFyX2Rvd25fY291bnQpOwotICBHVEVTVF9DSEVD
S19JTlRfRVFfKDAsIGdfc2hvdWxkX2ZhaWxfY291bnQpOwotICBHVEVTVF9DSEVDS19JTlRfRVFf
KHJlcGVhdCwgZ19zaG91bGRfcGFzc19jb3VudCk7Ci0gIEdURVNUX0NIRUNLX0lOVF9FUV8ocmVw
ZWF0LCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0gIEdU
RVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0ICoga051bWJlck9mUGFyYW1UZXN0cywgZ19wYXJhbV90
ZXN0X2NvdW50KTsKLSNlbmRpZiAgLy8gR1RFU1RfSEFTX1BBUkFNX1RFU1QKLX0KLQotLy8gVGVz
dHMgdXNpbmcgLS1ndGVzdF9yZXBlYXQgd2hlbiAtLWd0ZXN0X2ZpbHRlciBzcGVjaWZpZXMgYSBz
ZXQgb2YKLS8vIGZhaWxlZCB0ZXN0cy4KLXZvaWQgVGVzdFJlcGVhdFdpdGhGaWx0ZXJGb3JGYWls
ZWRUZXN0cyhpbnQgcmVwZWF0KSB7Ci0gIEdURVNUX0ZMQUcocmVwZWF0KSA9IHJlcGVhdDsKLSAg
R1RFU1RfRkxBRyhmaWx0ZXIpID0gIipTaG91bGRGYWlsIjsKLQotICBSZXNldENvdW50cygpOwot
ICBHVEVTVF9DSEVDS19JTlRfRVFfKDEsIFJVTl9BTExfVEVTVFMoKSk7Ci0gIEdURVNUX0NIRUNL
X0lOVF9FUV8ocmVwZWF0LCBnX2Vudmlyb25tZW50X3NldF91cF9jb3VudCk7Ci0gIEdURVNUX0NI
RUNLX0lOVF9FUV8ocmVwZWF0LCBnX2Vudmlyb25tZW50X3RlYXJfZG93bl9jb3VudCk7Ci0gIEdU
RVNUX0NIRUNLX0lOVF9FUV8ocmVwZWF0LCBnX3Nob3VsZF9mYWlsX2NvdW50KTsKLSAgR1RFU1Rf
Q0hFQ0tfSU5UX0VRXygwLCBnX3Nob3VsZF9wYXNzX2NvdW50KTsKLSAgR1RFU1RfQ0hFQ0tfSU5U
X0VRXygwLCBnX2RlYXRoX3Rlc3RfY291bnQpOwotI2lmIEdURVNUX0hBU19QQVJBTV9URVNUCi0g
IEdURVNUX0NIRUNLX0lOVF9FUV8oMCwgZ19wYXJhbV90ZXN0X2NvdW50KTsKLSNlbmRpZiAgLy8g
R1RFU1RfSEFTX1BBUkFNX1RFU1QKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLWludCBtYWluKGlu
dCBhcmdjLCBjaGFyICoqYXJndikgewotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7Ci0gIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgTXlFbnZpcm9u
bWVudCk7Ci0KLSAgVGVzdFJlcGVhdFVuc3BlY2lmaWVkKCk7Ci0gIFRlc3RSZXBlYXQoMCk7Ci0g
IFRlc3RSZXBlYXQoMSk7Ci0gIFRlc3RSZXBlYXQoNSk7Ci0KLSAgVGVzdFJlcGVhdFdpdGhFbXB0
eUZpbHRlcigyKTsKLSAgVGVzdFJlcGVhdFdpdGhFbXB0eUZpbHRlcigzKTsKLQotICBUZXN0UmVw
ZWF0V2l0aEZpbHRlckZvclN1Y2Nlc3NmdWxUZXN0cygzKTsKLQotICBUZXN0UmVwZWF0V2l0aEZp
bHRlckZvckZhaWxlZFRlc3RzKDQpOwotCi0gIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gdmVyaWZ5
IHRoYXQgdGhlIHRlc3RzIGluZGVlZCBsb29wIGZvcmV2ZXIKLSAgLy8gd2hlbiBHVEVTVF9GTEFH
KHJlcGVhdCkgaXMgbmVnYXRpdmUsIGJ1dCB0aGlzIHRlc3Qgd2lsbCBiZSBxdWl0ZQotICAvLyBj
b21wbGljYXRlZCB0byB3cml0ZS4gIFNpbmNlIHRoaXMgZmxhZyBpcyBmb3IgaW50ZXJhY3RpdmUK
LSAgLy8gZGVidWdnaW5nIG9ubHkgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBub3JtYWwgdGVzdCBy
ZXN1bHQsIHN1Y2ggYQotICAvLyB0ZXN0IHdvdWxkIGJlIGFuIG92ZXJraWxsLgotCi0gIHByaW50
ZigiUEFTU1xuIik7Ci0gIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3NodWZmbGVf
dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzBkMDMwM2QxOTM1Li4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3QucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0iIiJWZXJpZmllcyB0aGF0IHRlc3Qgc2h1ZmZsaW5nIHdvcmtzLiIiIgot
Ci1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQg
b3MKLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi0KLSMgQ29tbWFuZCB0byBydW4gdGhlIGd0ZXN0
X3NodWZmbGVfdGVzdF8gcHJvZ3JhbS4KLUNPTU1BTkQgPSBndGVzdF90ZXN0X3V0aWxzLkdldFRl
c3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3Rfc2h1ZmZsZV90ZXN0XycpCi0KLSMgVGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBzaGFyZGluZy4KLVRPVEFMX1NIQVJEU19FTlZfVkFSID0g
J0dURVNUX1RPVEFMX1NIQVJEUycKLVNIQVJEX0lOREVYX0VOVl9WQVIgPSAnR1RFU1RfU0hBUkRf
SU5ERVgnCi0KLVRFU1RfRklMVEVSID0gJ0EqLkE6QSouQjpDKicKLQotQUxMX1RFU1RTID0gW10K
LUFDVElWRV9URVNUUyA9IFtdCi1GSUxURVJFRF9URVNUUyA9IFtdCi1TSEFSREVEX1RFU1RTID0g
W10KLQotU0hVRkZMRURfQUxMX1RFU1RTID0gW10KLVNIVUZGTEVEX0FDVElWRV9URVNUUyA9IFtd
Ci1TSFVGRkxFRF9GSUxURVJFRF9URVNUUyA9IFtdCi1TSFVGRkxFRF9TSEFSREVEX1RFU1RTID0g
W10KLQotCi1kZWYgQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVz
dF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cycKLQotCi1kZWYgRmlsdGVyRmxhZyh0ZXN0X2ZpbHRl
cik6Ci0gIHJldHVybiAnLS1ndGVzdF9maWx0ZXI9JXMnICUgKHRlc3RfZmlsdGVyLCkKLQotCi1k
ZWYgUmVwZWF0RmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JlcGVhdD0lcycgJSAobiwpCi0K
LQotZGVmIFNodWZmbGVGbGFnKCk6Ci0gIHJldHVybiAnLS1ndGVzdF9zaHVmZmxlJwotCi0KLWRl
ZiBSYW5kb21TZWVkRmxhZyhuKToKLSAgcmV0dXJuICctLWd0ZXN0X3JhbmRvbV9zZWVkPSVzJyAl
IChuLCkKLQotCi1kZWYgUnVuQW5kUmV0dXJuT3V0cHV0KGV4dHJhX2VudiwgYXJncyk6Ci0gICIi
IlJ1bnMgdGhlIHRlc3QgcHJvZ3JhbSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0LiIiIgotCi0gIGVu
dmlyb25fY29weSA9IG9zLmVudmlyb24uY29weSgpCi0gIGVudmlyb25fY29weS51cGRhdGUoZXh0
cmFfZW52KQotCi0gIHJldHVybiBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoW0NPTU1BTkRd
ICsgYXJncywgZW52PWVudmlyb25fY29weSkub3V0cHV0Ci0KLQotZGVmIEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyhleHRyYV9lbnYsIGFyZ3MpOgotICAiIiJSdW5zIHRoZSB0ZXN0IHByb2dyYW0g
YW5kIHJldHVybnMgYSBsaXN0IG9mIHRlc3QgbGlzdHMuCi0KLSAgQXJnczoKLSAgICBleHRyYV9l
bnY6IGEgbWFwIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRoZWlyIHZhbHVlcwotICAg
IGFyZ3M6IGNvbW1hbmQgbGluZSBmbGFncyB0byBwYXNzIHRvIGd0ZXN0X3NodWZmbGVfdGVzdF8K
LQotICBSZXR1cm5zOgotICAgIEEgbGlzdCB3aGVyZSB0aGUgaS10aCBlbGVtZW50IGlzIHRoZSBs
aXN0IG9mIHRlc3RzIHJ1biBpbiB0aGUgaS10aAotICAgIHRlc3QgaXRlcmF0aW9uLgotICAiIiIK
LQotICB0ZXN0X2l0ZXJhdGlvbnMgPSBbXQotICBmb3IgbGluZSBpbiBSdW5BbmRSZXR1cm5PdXRw
dXQoZXh0cmFfZW52LCBhcmdzKS5zcGxpdCgnXG4nKToKLSAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo
Jy0tLS0nKToKLSAgICAgIHRlc3RzID0gW10KLSAgICAgIHRlc3RfaXRlcmF0aW9ucy5hcHBlbmQo
dGVzdHMpCi0gICAgZWxpZiBsaW5lLnN0cmlwKCk6Ci0gICAgICB0ZXN0cy5hcHBlbmQobGluZS5z
dHJpcCgpKSAgIyAnVGVzdENhc2VOYW1lLlRlc3ROYW1lJwotCi0gIHJldHVybiB0ZXN0X2l0ZXJh
dGlvbnMKLQotCi1kZWYgR2V0VGVzdENhc2VzKHRlc3RzKToKLSAgIiIiUmV0dXJucyBhIGxpc3Qg
b2YgdGVzdCBjYXNlcyBpbiB0aGUgZ2l2ZW4gZnVsbCB0ZXN0IG5hbWVzLgotCi0gIEFyZ3M6Ci0g
ICAgdGVzdHM6IGEgbGlzdCBvZiBmdWxsIHRlc3QgbmFtZXMKLQotICBSZXR1cm5zOgotICAgIEEg
bGlzdCBvZiB0ZXN0IGNhc2VzIGZyb20gJ3Rlc3RzJywgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIu
Ci0gICAgQ29uc2VjdXRpdmUgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZC4KLSAgIiIiCi0KLSAgdGVz
dF9jYXNlcyA9IFtdCi0gIGZvciB0ZXN0IGluIHRlc3RzOgotICAgIHRlc3RfY2FzZSA9IHRlc3Qu
c3BsaXQoJy4nKVswXQotICAgIGlmIG5vdCB0ZXN0X2Nhc2UgaW4gdGVzdF9jYXNlczoKLSAgICAg
IHRlc3RfY2FzZXMuYXBwZW5kKHRlc3RfY2FzZSkKLQotICByZXR1cm4gdGVzdF9jYXNlcwotCi0K
LWRlZiBDYWxjdWxhdGVUZXN0TGlzdHMoKToKLSAgIiIiQ2FsY3VsYXRlcyB0aGUgbGlzdCBvZiB0
ZXN0cyBydW4gdW5kZXIgZGlmZmVyZW50IGZsYWdzLiIiIgotCi0gIGlmIG5vdCBBTExfVEVTVFM6
Ci0gICAgQUxMX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25z
KHt9LCBbQWxzb1J1bkRpc2FibGVkVGVzdHNGbGFnKCldKVswXSkKLQotICBpZiBub3QgQUNUSVZF
X1RFU1RTOgotICAgIEFDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25z
KHt9LCBbXSlbMF0pCi0KLSAgaWYgbm90IEZJTFRFUkVEX1RFU1RTOgotICAgIEZJTFRFUkVEX1RF
U1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHt9LCBbRmlsdGVy
RmxhZyhURVNUX0ZJTFRFUildKVswXSkKLQotICBpZiBub3QgU0hBUkRFRF9URVNUUzoKLSAgICBT
SEFSREVEX1RFU1RTLmV4dGVuZCgKLSAgICAgICAgR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNIQVJEX0lOREVYX0VOVl9WQVI6ICcxJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbXSlbMF0pCi0KLSAgaWYgbm90IFNIVUZGTEVEX0FMTF9URVNUUzoKLSAgICBTSFVG
RkxFRF9BTExfVEVTVFMuZXh0ZW5kKEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAg
e30sIFtBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcoKSwgU2h1ZmZsZUZsYWcoKSwgUmFuZG9tU2Vl
ZEZsYWcoMSldKVswXSkKLQotICBpZiBub3QgU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgIFNI
VUZGTEVEX0FDVElWRV9URVNUUy5leHRlbmQoR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAg
ICAgICB7fSwgW1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLSAgaWYg
bm90IFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTOgotICAgIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RT
LmV4dGVuZChHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZs
YWcoKSwgUmFuZG9tU2VlZEZsYWcoMSksIEZpbHRlckZsYWcoVEVTVF9GSUxURVIpXSlbMF0pCi0K
LSAgaWYgbm90IFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgU0hVRkZMRURfU0hBUkRFRF9U
RVNUUy5leHRlbmQoCi0gICAgICAgIEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucyh7VE9UQUxfU0hB
UkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFS
RF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1NodWZmbGVGbGFnKCksIFJhbmRvbVNlZWRGbGFnKDEpXSlbMF0pCi0KLQotY2xhc3MgR1Rlc3RT
aHVmZmxlVW5pdFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIlRlc3RzIHRl
c3Qgc2h1ZmZsaW5nLiIiIgotCi0gIGRlZiBzZXRVcChzZWxmKToKLSAgICBDYWxjdWxhdGVUZXN0
TGlzdHMoKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZVByZXNlcnZlc051bWJlck9mVGVzdHMoc2VsZik6
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUxMX1RFU1RTKSwgbGVuKFNIVUZGTEVEX0FMTF9U
RVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQUNUSVZFX1RFU1RTKSwgbGVuKFNIVUZG
TEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRklMVEVSRURfVEVT
VFMpLCBsZW4oU0hVRkZMRURfRklMVEVSRURfVEVTVFMpKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKFNIQVJERURfVEVTVFMpLCBsZW4oU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVm
IHRlc3RTaHVmZmxlQ2hhbmdlc1Rlc3RPcmRlcihzZWxmKToKLSAgICBzZWxmLmFzc2VydF8oU0hV
RkZMRURfQUxMX1RFU1RTICE9IEFMTF9URVNUUywgU0hVRkZMRURfQUxMX1RFU1RTKQotICAgIHNl
bGYuYXNzZXJ0XyhTSFVGRkxFRF9BQ1RJVkVfVEVTVFMgIT0gQUNUSVZFX1RFU1RTLCBTSFVGRkxF
RF9BQ1RJVkVfVEVTVFMpCi0gICAgc2VsZi5hc3NlcnRfKFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RT
ICE9IEZJTFRFUkVEX1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9GSUxURVJFRF9U
RVNUUykKLSAgICBzZWxmLmFzc2VydF8oU0hVRkZMRURfU0hBUkRFRF9URVNUUyAhPSBTSEFSREVE
X1RFU1RTLAotICAgICAgICAgICAgICAgICBTSFVGRkxFRF9TSEFSREVEX1RFU1RTKQotCi0gIGRl
ZiB0ZXN0U2h1ZmZsZUNoYW5nZXNUZXN0Q2FzZU9yZGVyKHNlbGYpOgotICAgIHNlbGYuYXNzZXJ0
XyhHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUxMX1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUxMX1RF
U1RTKSwKLSAgICAgICAgICAgICAgICAgR2V0VGVzdENhc2VzKFNIVUZGTEVEX0FMTF9URVNUUykp
Ci0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfQUNUSVZF
X1RFU1RTKSAhPSBHZXRUZXN0Q2FzZXMoQUNUSVZFX1RFU1RTKSwKLSAgICAgICAgR2V0VGVzdENh
c2VzKFNIVUZGTEVEX0FDVElWRV9URVNUUykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBH
ZXRUZXN0Q2FzZXMoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpICE9IEdldFRlc3RDYXNlcyhGSUxU
RVJFRF9URVNUUyksCi0gICAgICAgIEdldFRlc3RDYXNlcyhTSFVGRkxFRF9GSUxURVJFRF9URVNU
UykpCi0gICAgc2VsZi5hc3NlcnRfKAotICAgICAgICBHZXRUZXN0Q2FzZXMoU0hVRkZMRURfU0hB
UkRFRF9URVNUUykgIT0gR2V0VGVzdENhc2VzKFNIQVJERURfVEVTVFMpLAotICAgICAgICBHZXRU
ZXN0Q2FzZXMoU0hVRkZMRURfU0hBUkRFRF9URVNUUykpCi0KLSAgZGVmIHRlc3RTaHVmZmxlRG9l
c05vdFJlcGVhdFRlc3Qoc2VsZik6Ci0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUxMX1RFU1RT
OgotICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BTExfVEVTVFMuY291bnQodGVz
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAl
ICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBTSFVGRkxFRF9BQ1RJVkVfVEVTVFMuY291bnQodGVzdCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0
LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIFNIVUZGTEVEX0ZJTFRFUkVEX1RFU1RTLmNvdW50KHRlc3QpLAotICAg
ICAgICAgICAgICAgICAgICAgICAnJXMgYXBwZWFycyBtb3JlIHRoYW4gb25jZScgJSAodGVzdCwp
KQotICAgIGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIFNIVUZGTEVEX1NIQVJERURfVEVTVFMuY291bnQodGVzdCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICclcyBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlJyAlICh0ZXN0LCkpCi0K
LSAgZGVmIHRlc3RTaHVmZmxlRG9lc05vdENyZWF0ZU5ld1Rlc3Qoc2VsZik6Ci0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfQUxMX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUxM
X1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3Qg
aW4gU0hVRkZMRURfQUNUSVZFX1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gQUNU
SVZFX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkpCi0gICAgZm9yIHRl
c3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBp
biBGSUxURVJFRF9URVNUUywgJyVzIGlzIGFuIGludmFsaWQgdGVzdCcgJSAodGVzdCwpKQotICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8o
dGVzdCBpbiBTSEFSREVEX1RFU1RTLCAnJXMgaXMgYW4gaW52YWxpZCB0ZXN0JyAlICh0ZXN0LCkp
Ci0KLSAgZGVmIHRlc3RTaHVmZmxlSW5jbHVkZXNBbGxUZXN0cyhzZWxmKToKLSAgICBmb3IgdGVz
dCBpbiBBTExfVEVTVFM6Ci0gICAgICBzZWxmLmFzc2VydF8odGVzdCBpbiBTSFVGRkxFRF9BTExf
VEVTVFMsICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gQUNUSVZF
X1RFU1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfQUNUSVZFX1RFU1RT
LCAnJXMgaXMgbWlzc2luZycgJSAodGVzdCwpKQotICAgIGZvciB0ZXN0IGluIEZJTFRFUkVEX1RF
U1RTOgotICAgICAgc2VsZi5hc3NlcnRfKHRlc3QgaW4gU0hVRkZMRURfRklMVEVSRURfVEVTVFMs
ICclcyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0gICAgZm9yIHRlc3QgaW4gU0hBUkRFRF9URVNU
UzoKLSAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0IGluIFNIVUZGTEVEX1NIQVJERURfVEVTVFMsICcl
cyBpcyBtaXNzaW5nJyAlICh0ZXN0LCkpCi0KLSAgZGVmIHRlc3RTaHVmZmxlTGVhdmVzRGVhdGhU
ZXN0c0F0RnJvbnQoc2VsZik6Ci0gICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQgPSBGYWxzZQotICAg
IGZvciB0ZXN0IGluIFNIVUZGTEVEX0FDVElWRV9URVNUUzoKLSAgICAgIGlmICdEZWF0aFRlc3Qu
JyBpbiB0ZXN0OgotICAgICAgICBzZWxmLmFzc2VydF8obm90IG5vbl9kZWF0aF90ZXN0X2ZvdW5k
LAotICAgICAgICAgICAgICAgICAgICAgJyVzIGFwcGVhcnMgYWZ0ZXIgYSBub24tZGVhdGggdGVz
dCcgJSAodGVzdCwpKQotICAgICAgZWxzZToKLSAgICAgICAgbm9uX2RlYXRoX3Rlc3RfZm91bmQg
PSBUcnVlCi0KLSAgZGVmIF9WZXJpZnlUZXN0Q2FzZXNEb05vdEludGVybGVhdmUoc2VsZiwgdGVz
dHMpOgotICAgIHRlc3RfY2FzZXMgPSBbXQotICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAg
W3Rlc3RfY2FzZSwgX10gPSB0ZXN0LnNwbGl0KCcuJykKLSAgICAgIGlmIHRlc3RfY2FzZXMgYW5k
IHRlc3RfY2FzZXNbLTFdICE9IHRlc3RfY2FzZToKLSAgICAgICAgdGVzdF9jYXNlcy5hcHBlbmQo
dGVzdF9jYXNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHRlc3RfY2FzZXMuY291bnQo
dGVzdF9jYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBjYXNlICVzIGlzIG5v
dCBncm91cGVkIHRvZ2V0aGVyIGluICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHRl
c3RfY2FzZSwgdGVzdHMpKQotCi0gIGRlZiB0ZXN0U2h1ZmZsZURvZXNOb3RJbnRlcmxlYXZlVGVz
dENhc2VzKHNlbGYpOgotICAgIHNlbGYuX1ZlcmlmeVRlc3RDYXNlc0RvTm90SW50ZXJsZWF2ZShT
SFVGRkxFRF9BTExfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVzdENhc2VzRG9Ob3RJbnRlcmxl
YXZlKFNIVUZGTEVEX0FDVElWRV9URVNUUykKLSAgICBzZWxmLl9WZXJpZnlUZXN0Q2FzZXNEb05v
dEludGVybGVhdmUoU0hVRkZMRURfRklMVEVSRURfVEVTVFMpCi0gICAgc2VsZi5fVmVyaWZ5VGVz
dENhc2VzRG9Ob3RJbnRlcmxlYXZlKFNIVUZGTEVEX1NIQVJERURfVEVTVFMpCi0KLSAgZGVmIHRl
c3RTaHVmZmxlUmVzdG9yZXNPcmRlckFmdGVyRWFjaEl0ZXJhdGlvbihzZWxmKToKLSAgICAjIEdl
dCB0aGUgdGVzdCBsaXN0cyBpbiBhbGwgMyBpdGVyYXRpb25zLCB1c2luZyByYW5kb20gc2VlZCAx
LCAyLAotICAgICMgYW5kIDMgcmVzcGVjdGl2ZWx5LiAgR29vZ2xlIFRlc3QgcGlja3MgYSBkaWZm
ZXJlbnQgc2VlZCBpbiBlYWNoCi0gICAgIyBpdGVyYXRpb24sIGFuZCB0aGlzIHRlc3QgZGVwZW5k
cyBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgICMgcGlja2luZyBzdWNjZXNzaXZl
IG51bWJlcnMuICBUaGlzIGRlcGVuZGVuY3kgaXMgbm90IGlkZWFsLCBidXQKLSAgICAjIG1ha2Vz
IHRoZSB0ZXN0IG11Y2ggZWFzaWVyIHRvIHdyaXRlLgotICAgIFt0ZXN0c19pbl9pdGVyYXRpb24x
LCB0ZXN0c19pbl9pdGVyYXRpb24yLCB0ZXN0c19pbl9pdGVyYXRpb24zXSA9ICgKLSAgICAgICAg
R2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICAgICAge30sIFtTaHVmZmxlRmxhZygp
LCBSYW5kb21TZWVkRmxhZygxKSwgUmVwZWF0RmxhZygzKV0pKQotCi0gICAgIyBNYWtlIHN1cmUg
cnVubmluZyB0aGUgdGVzdHMgd2l0aCByYW5kb20gc2VlZCAxIGdldHMgdGhlIHNhbWUKLSAgICAj
IG9yZGVyIGFzIGluIGl0ZXJhdGlvbiAxIGFib3ZlLgotICAgIFt0ZXN0c193aXRoX3NlZWQxXSA9
IEdldFRlc3RzRm9yQWxsSXRlcmF0aW9ucygKLSAgICAgICAge30sIFtTaHVmZmxlRmxhZygpLCBS
YW5kb21TZWVkRmxhZygxKV0pCi0gICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19pbl9pdGVyYXRp
b24xLCB0ZXN0c193aXRoX3NlZWQxKQotCi0gICAgIyBNYWtlIHN1cmUgcnVubmluZyB0aGUgdGVz
dHMgd2l0aCByYW5kb20gc2VlZCAyIGdldHMgdGhlIHNhbWUKLSAgICAjIG9yZGVyIGFzIGluIGl0
ZXJhdGlvbiAyIGFib3ZlLiAgU3VjY2VzcyBtZWFucyB0aGF0IEdvb2dsZSBUZXN0Ci0gICAgIyBj
b3JyZWN0bHkgcmVzdG9yZXMgdGhlIHRlc3Qgb3JkZXIgYmVmb3JlIHJlLXNodWZmbGluZyBhdCB0
aGUKLSAgICAjIGJlZ2lubmluZyBvZiBpdGVyYXRpb24gMi4KLSAgICBbdGVzdHNfd2l0aF9zZWVk
Ml0gPSBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgIHt9LCBbU2h1ZmZsZUZsYWco
KSwgUmFuZG9tU2VlZEZsYWcoMildKQotICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNfaW5faXRl
cmF0aW9uMiwgdGVzdHNfd2l0aF9zZWVkMikKLQotICAgICMgTWFrZSBzdXJlIHJ1bm5pbmcgdGhl
IHRlc3RzIHdpdGggcmFuZG9tIHNlZWQgMyBnZXRzIHRoZSBzYW1lCi0gICAgIyBvcmRlciBhcyBp
biBpdGVyYXRpb24gMyBhYm92ZS4gIFN1Y2Nlc3MgbWVhbnMgdGhhdCBHb29nbGUgVGVzdAotICAg
ICMgY29ycmVjdGx5IHJlc3RvcmVzIHRoZSB0ZXN0IG9yZGVyIGJlZm9yZSByZS1zaHVmZmxpbmcg
YXQgdGhlCi0gICAgIyBiZWdpbm5pbmcgb2YgaXRlcmF0aW9uIDMuCi0gICAgW3Rlc3RzX3dpdGhf
c2VlZDNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKAotICAgICAgICB7fSwgW1NodWZmbGVG
bGFnKCksIFJhbmRvbVNlZWRGbGFnKDMpXSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzX2lu
X2l0ZXJhdGlvbjMsIHRlc3RzX3dpdGhfc2VlZDMpCi0KLSAgZGVmIHRlc3RTaHVmZmxlR2VuZXJh
dGVzTmV3T3JkZXJJbkVhY2hJdGVyYXRpb24oc2VsZik6Ci0gICAgW3Rlc3RzX2luX2l0ZXJhdGlv
bjEsIHRlc3RzX2luX2l0ZXJhdGlvbjIsIHRlc3RzX2luX2l0ZXJhdGlvbjNdID0gKAotICAgICAg
ICBHZXRUZXN0c0ZvckFsbEl0ZXJhdGlvbnMoCi0gICAgICAgICAgICB7fSwgW1NodWZmbGVGbGFn
KCksIFJhbmRvbVNlZWRGbGFnKDEpLCBSZXBlYXRGbGFnKDMpXSkpCi0KLSAgICBzZWxmLmFzc2Vy
dF8odGVzdHNfaW5faXRlcmF0aW9uMSAhPSB0ZXN0c19pbl9pdGVyYXRpb24yLAotICAgICAgICAg
ICAgICAgICB0ZXN0c19pbl9pdGVyYXRpb24xKQotICAgIHNlbGYuYXNzZXJ0Xyh0ZXN0c19pbl9p
dGVyYXRpb24xICE9IHRlc3RzX2luX2l0ZXJhdGlvbjMsCi0gICAgICAgICAgICAgICAgIHRlc3Rz
X2luX2l0ZXJhdGlvbjEpCi0gICAgc2VsZi5hc3NlcnRfKHRlc3RzX2luX2l0ZXJhdGlvbjIgIT0g
dGVzdHNfaW5faXRlcmF0aW9uMywKLSAgICAgICAgICAgICAgICAgdGVzdHNfaW5faXRlcmF0aW9u
MikKLQotICBkZWYgdGVzdFNodWZmbGVTaGFyZGVkVGVzdHNQcmVzZXJ2ZXNQYXJ0aXRpb24oc2Vs
Zik6Ci0gICAgIyBJZiB3ZSBydW4gTSB0ZXN0cyBvbiBOIHNoYXJkcywgdGhlIHNhbWUgTSB0ZXN0
cyBzaG91bGQgYmUgcnVuIGluCi0gICAgIyB0b3RhbCwgcmVnYXJkbGVzcyBvZiB0aGUgcmFuZG9t
IHNlZWRzIHVzZWQgYnkgdGhlIHNoYXJkcy4KLSAgICBbdGVzdHMxXSA9IEdldFRlc3RzRm9yQWxs
SXRlcmF0aW9ucyh7VE9UQUxfU0hBUkRTX0VOVl9WQVI6ICczJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0hBUkRfSU5ERVhfRU5WX1ZBUjogJzAnfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2h1ZmZsZUZsYWcoKSwgUmFuZG9t
U2VlZEZsYWcoMSldKQotICAgIFt0ZXN0czJdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtU
T1RBTF9TSEFSRFNfRU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTSEFSRF9JTkRFWF9FTlZfVkFSOiAnMSd9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyMCld
KQotICAgIFt0ZXN0czNdID0gR2V0VGVzdHNGb3JBbGxJdGVyYXRpb25zKHtUT1RBTF9TSEFSRFNf
RU5WX1ZBUjogJzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
SEFSRF9JTkRFWF9FTlZfVkFSOiAnMid9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtTaHVmZmxlRmxhZygpLCBSYW5kb21TZWVkRmxhZygyNSldKQotICAgIHNvcnRl
ZF9zaGFyZGVkX3Rlc3RzID0gdGVzdHMxICsgdGVzdHMyICsgdGVzdHMzCi0gICAgc29ydGVkX3No
YXJkZWRfdGVzdHMuc29ydCgpCi0gICAgc29ydGVkX2FjdGl2ZV90ZXN0cyA9IFtdCi0gICAgc29y
dGVkX2FjdGl2ZV90ZXN0cy5leHRlbmQoQUNUSVZFX1RFU1RTKQotICAgIHNvcnRlZF9hY3RpdmVf
dGVzdHMuc29ydCgpCi0gICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWRfYWN0aXZlX3Rlc3RzLCBz
b3J0ZWRfc2hhcmRlZF90ZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rl
c3RfdGVzdF91dGlscy5NYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
c2h1ZmZsZV90ZXN0Xy5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc2h1ZmZsZV90ZXN0Xy5j
YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiNDQxYmQ0ZDQ2Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zaHVmZmxlX3Rlc3RfLmNjCisrKyAvZGV2
L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4p
Ci0KLS8vIFZlcmlmaWVzIHRoYXQgdGVzdCBzaHVmZmxpbmcgd29ya3MuCi0KLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgotCi1uYW1lc3BhY2UgewotCi11c2luZyA6OnRlc3Rpbmc6OkVtcHR5VGVz
dEV2ZW50TGlzdGVuZXI7Ci11c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwotdXNpbmcg
Ojp0ZXN0aW5nOjpNZXNzYWdlOwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RJbmZvOwotdXNp
bmcgOjp0ZXN0aW5nOjpVbml0VGVzdDsKLXVzaW5nIDo6dGVzdGluZzo6aW50ZXJuYWw6OnNjb3Bl
ZF9wdHI7Ci0KLS8vIFRoZSB0ZXN0IG1ldGhvZHMgYXJlIGVtcHR5LCBhcyB0aGUgc29sZSBwdXJw
b3NlIG9mIHRoaXMgcHJvZ3JhbSBpcwotLy8gdG8gcHJpbnQgdGhlIHRlc3QgbmFtZXMgYmVmb3Jl
L2FmdGVyIHNodWZmbGluZy4KLQotY2xhc3MgQSA6IHB1YmxpYyBUZXN0IHt9OwotVEVTVF9GKEEs
IEEpIHt9Ci1URVNUX0YoQSwgQikge30KLQotVEVTVChBRGVhdGhUZXN0LCBBKSB7fQotVEVTVChB
RGVhdGhUZXN0LCBCKSB7fQotVEVTVChBRGVhdGhUZXN0LCBDKSB7fQotCi1URVNUKEIsIEEpIHt9
Ci1URVNUKEIsIEIpIHt9Ci1URVNUKEIsIEMpIHt9Ci1URVNUKEIsIERJU0FCTEVEX0QpIHt9Ci1U
RVNUKEIsIERJU0FCTEVEX0UpIHt9Ci0KLVRFU1QoQkRlYXRoVGVzdCwgQSkge30KLVRFU1QoQkRl
YXRoVGVzdCwgQikge30KLQotVEVTVChDLCBBKSB7fQotVEVTVChDLCBCKSB7fQotVEVTVChDLCBD
KSB7fQotVEVTVChDLCBESVNBQkxFRF9EKSB7fQotCi1URVNUKENEZWF0aFRlc3QsIEEpIHt9Ci0K
LVRFU1QoRElTQUJMRURfRCwgQSkge30KLVRFU1QoRElTQUJMRURfRCwgRElTQUJMRURfQikge30K
LQotLy8gVGhpcyBwcmludGVyIHByaW50cyB0aGUgZnVsbCB0ZXN0IG5hbWVzIG9ubHksIHN0YXJ0
aW5nIGVhY2ggdGVzdAotLy8gaXRlcmF0aW9uIHdpdGggYSAiLS0tLSIgbWFya2VyLgotY2xhc3Mg
VGVzdE5hbWVQcmludGVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1Ymxp
YzoKLSAgdmlydHVhbCB2b2lkIE9uVGVzdEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAv
KiB1bml0X3Rlc3QgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
LyogaXRlcmF0aW9uICovKSB7Ci0gICAgcHJpbnRmKCItLS0tXG4iKTsKLSAgfQotCi0gIHZpcnR1
YWwgdm9pZCBPblRlc3RTdGFydChjb25zdCBUZXN0SW5mbyYgdGVzdF9pbmZvKSB7Ci0gICAgcHJp
bnRmKCIlcy4lc1xuIiwgdGVzdF9pbmZvLnRlc3RfY2FzZV9uYW1lKCksIHRlc3RfaW5mby5uYW1l
KCkpOwotICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQotaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKiphcmd2KSB7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICAvLyBSZXBs
YWNlcyB0aGUgZGVmYXVsdCBwcmludGVyIHdpdGggVGVzdE5hbWVQcmludGVyLCB3aGljaCBwcmlu
dHMKLSAgLy8gdGhlIHRlc3QgbmFtZSBvbmx5LgotICBUZXN0RXZlbnRMaXN0ZW5lcnMmIGxpc3Rl
bmVycyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5saXN0ZW5lcnMoKTsKLSAgZGVsZXRlIGxp
c3RlbmVycy5SZWxlYXNlKGxpc3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkpOwotICBs
aXN0ZW5lcnMuQXBwZW5kKG5ldyBUZXN0TmFtZVByaW50ZXIpOwotCi0gIHJldHVybiBSVU5fQUxM
X1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3NvbGVfaGVh
ZGVyX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3NvbGVfaGVhZGVyX3Rlc3QuY2MK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDA5MWEyODFkMy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rfc29sZV9oZWFkZXJfdGVzdC5jYworKysgL2Rl
di9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgot
Ly8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLS8vCi0vLyBBdXRob3I6IG1oZXVsZUBnb29nbGUuY29tIChNYXJrdXMgSGV1
bGUpCi0vLwotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaXQncyBwb3NzaWJsZSB0byB1c2Ug
R29vZ2xlIFRlc3QgYnkgaW5jbHVkaW5nCi0vLyB0aGUgZ3Rlc3QuaCBoZWFkZXIgZmlsZSBhbG9u
ZS4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLW5hbWVzcGFjZSB7Ci0KLXZvaWQgU3Vi
cm91dGluZSgpIHsKLSAgRVhQRUNUX0VRKDQyLCA0Mik7Ci19Ci0KLVRFU1QoTm9GYXRhbEZhaWx1
cmVUZXN0LCBFeHBlY3ROb0ZhdGFsRmFpbHVyZSkgewotICBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVS
RSg7KTsKLSAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpKTsKLSAgRVhQRUNUX05P
X0ZBVEFMX0ZBSUxVUkUoU3Vicm91dGluZSgpKTsKLSAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUo
eyBTVUNDRUVEKCk7IH0pOwotfQotCi1URVNUKE5vRmF0YWxGYWlsdXJlVGVzdCwgQXNzZXJ0Tm9G
YXRhbEZhaWx1cmUpIHsKLSAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoOyk7Ci0gIEFTU0VSVF9O
T19GQVRBTF9GQUlMVVJFKFNVQ0NFRUQoKSk7Ci0gIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFN1
YnJvdXRpbmUoKSk7Ci0gIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKHsgU1VDQ0VFRCgpOyB9KTsK
LX0KLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0
X3N0cmVzc190ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdkYWE0MzBkZmJlLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF9zdHJlc3NfdGVzdC5jYworKysgL2Rldi9udWxs
CkBAIC0xLDI1NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNywgR29vZ2xlIEluYy4KLS8vIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0v
LyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0v
LyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
Ly8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0v
LyBUZXN0cyB0aGF0IFNDT1BFRF9UUkFDRSgpIGFuZCB2YXJpb3VzIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbnMgY2FuIGJlCi0vLyB1c2VkIGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRocmVhZHMgY29uY3Vy
cmVudGx5LgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFt
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotLy8gV2UgbXVzdCBkZWZpbmUgdGhpcyBtYWNybyBpbiBv
cmRlciB0byAjaW5jbHVkZQotLy8gZ3Rlc3QtaW50ZXJuYWwtaW5sLmguICBUaGlzIGlzIGhvdyBH
b29nbGUgVGVzdCBwcmV2ZW50cyBhIHVzZXIgZnJvbQotLy8gYWNjaWRlbnRhbGx5IGRlcGVuZGlu
ZyBvbiBpdHMgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCi0jZGVmaW5lIEdURVNUX0lNUExFTUVO
VEFUSU9OXyAxCi0jaW5jbHVkZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdU
RVNUX0lNUExFTUVOVEFUSU9OXwotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1uYW1lc3Bh
Y2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgewotCi11c2luZyBpbnRlcm5hbDo6Tm90aWZpY2F0aW9u
OwotdXNpbmcgaW50ZXJuYWw6OlRlc3RQcm9wZXJ0eUtleUlzOwotdXNpbmcgaW50ZXJuYWw6OlRo
cmVhZFdpdGhQYXJhbTsKLXVzaW5nIGludGVybmFsOjpzY29wZWRfcHRyOwotCi0vLyBJbiBvcmRl
ciB0byBydW4gdGVzdHMgaW4gdGhpcyBmaWxlLCBmb3IgcGxhdGZvcm1zIHdoZXJlIEdvb2dsZSBU
ZXN0IGlzCi0vLyB0aHJlYWQgc2FmZSwgaW1wbGVtZW50IFRocmVhZFdpdGhQYXJhbS4gU2VlIHRo
ZSBkZXNjcmlwdGlvbiBvZiBpdHMgQVBJCi0vLyBpbiBndGVzdC1wb3J0LmgsIHdoZXJlIGl0IGlz
IGRlZmluZWQgZm9yIGFscmVhZHkgc3VwcG9ydGVkIHBsYXRmb3Jtcy4KLQotLy8gSG93IG1hbnkg
dGhyZWFkcyB0byBjcmVhdGU/Ci1jb25zdCBpbnQga1RocmVhZENvdW50ID0gNTA7Ci0KLXN0ZDo6
c3RyaW5nIElkVG9LZXkoaW50IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKLSAgTWVzc2FnZSBr
ZXk7Ci0gIGtleSA8PCAia2V5XyIgPDwgaWQgPDwgIl8iIDw8IHN1ZmZpeDsKLSAgcmV0dXJuIGtl
eS5HZXRTdHJpbmcoKTsKLX0KLQotc3RkOjpzdHJpbmcgSWRUb1N0cmluZyhpbnQgaWQpIHsKLSAg
TWVzc2FnZSBpZF9tZXNzYWdlOwotICBpZF9tZXNzYWdlIDw8IGlkOwotICByZXR1cm4gaWRfbWVz
c2FnZS5HZXRTdHJpbmcoKTsKLX0KLQotdm9pZCBFeHBlY3RLZXlBbmRWYWx1ZVdlcmVSZWNvcmRl
ZEZvcklkKAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRlc3RQcm9wZXJ0eT4mIHByb3BlcnRpZXMs
Ci0gICAgaW50IGlkLCBjb25zdCBjaGFyKiBzdWZmaXgpIHsKLSAgVGVzdFByb3BlcnR5S2V5SXMg
bWF0Y2hlc19rZXkoSWRUb0tleShpZCwgc3VmZml4KS5jX3N0cigpKTsKLSAgY29uc3Qgc3RkOjp2
ZWN0b3I8VGVzdFByb3BlcnR5Pjo6Y29uc3RfaXRlcmF0b3IgcHJvcGVydHkgPQotICAgICAgc3Rk
OjpmaW5kX2lmKHByb3BlcnRpZXMuYmVnaW4oKSwgcHJvcGVydGllcy5lbmQoKSwgbWF0Y2hlc19r
ZXkpOwotICBBU1NFUlRfVFJVRShwcm9wZXJ0eSAhPSBwcm9wZXJ0aWVzLmVuZCgpKQotICAgICAg
PDwgImV4cGVjdGluZyAiIDw8IHN1ZmZpeCA8PCAiIHZhbHVlIGZvciBpZCAiIDw8IGlkOwotICBF
WFBFQ1RfU1RSRVEoSWRUb1N0cmluZyhpZCkuY19zdHIoKSwgcHJvcGVydHktPnZhbHVlKCkpOwot
fQotCi0vLyBDYWxscyBhIGxhcmdlIG51bWJlciBvZiBHb29nbGUgVGVzdCBhc3NlcnRpb25zLCB3
aGVyZSBleGFjdGx5IG9uZSBvZiB0aGVtCi0vLyB3aWxsIGZhaWwuCi12b2lkIE1hbnlBc3NlcnRz
KGludCBpZCkgewotICBHVEVTVF9MT0dfKElORk8pIDw8ICJUaHJlYWQgIyIgPDwgaWQgPDwgIiBy
dW5uaW5nLi4uIjsKLQotICBTQ09QRURfVFJBQ0UoTWVzc2FnZSgpIDw8ICJUaHJlYWQgIyIgPDwg
aWQpOwotCi0gIGZvciAoaW50IGkgPSAwOyBpIDwga1RocmVhZENvdW50OyBpKyspIHsKLSAgICBT
Q09QRURfVFJBQ0UoTWVzc2FnZSgpIDw8ICJJdGVyYXRpb24gIyIgPDwgaSk7Ci0KLSAgICAvLyBB
IGJ1bmNoIG9mIGFzc2VydGlvbnMgdGhhdCBzaG91bGQgc3VjY2VlZC4KLSAgICBFWFBFQ1RfVFJV
RSh0cnVlKTsKLSAgICBBU1NFUlRfRkFMU0UoZmFsc2UpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWls
LiI7Ci0gICAgRVhQRUNUX1NUUkVRKCJhIiwgImEiKTsKLSAgICBBU1NFUlRfTEUoNSwgNik7Ci0g
ICAgRVhQRUNUX0VRKGksIGkpIDw8ICJUaGlzIHNob3VsZG4ndCBmYWlsLiI7Ci0KLSAgICAvLyBS
ZWNvcmRQcm9wZXJ0eSgpIHNob3VsZCBpbnRlcmFjdCBzYWZlbHkgd2l0aCBvdGhlciB0aHJlYWRz
IGFzIHdlbGwuCi0gICAgLy8gVGhlIHNoYXJlZF9rZXkgZm9yY2VzIHByb3BlcnR5IHVwZGF0ZXMu
Ci0gICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoSWRUb0tleShpZCwgInN0cmluZyIpLmNfc3RyKCks
IElkVG9TdHJpbmcoaWQpLmNfc3RyKCkpOwotICAgIFRlc3Q6OlJlY29yZFByb3BlcnR5KElkVG9L
ZXkoaWQsICJpbnQiKS5jX3N0cigpLCBpZCk7Ci0gICAgVGVzdDo6UmVjb3JkUHJvcGVydHkoInNo
YXJlZF9rZXkiLCBJZFRvU3RyaW5nKGlkKS5jX3N0cigpKTsKLQotICAgIC8vIFRoaXMgYXNzZXJ0
aW9uIHNob3VsZCBmYWlsIGtUaHJlYWRDb3VudCB0aW1lcyBwZXIgdGhyZWFkLiAgSXQKLSAgICAv
LyBpcyBmb3IgdGVzdGluZyB3aGV0aGVyIEdvb2dsZSBUZXN0IGNhbiBoYW5kbGUgZmFpbGVkIGFz
c2VydGlvbnMgaW4gYQotICAgIC8vIG11bHRpLXRocmVhZGVkIGNvbnRleHQuCi0gICAgRVhQRUNU
X0xUKGksIDApIDw8ICJUaGlzIHNob3VsZCBhbHdheXMgZmFpbC4iOwotICB9Ci19Ci0KLXZvaWQg
Q2hlY2tUZXN0RmFpbHVyZUNvdW50KGludCBleHBlY3RlZF9mYWlsdXJlcykgewotICBjb25zdCBU
ZXN0SW5mbyogY29uc3QgaW5mbyA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rl
c3RfaW5mbygpOwotICBjb25zdCBUZXN0UmVzdWx0KiBjb25zdCByZXN1bHQgPSBpbmZvLT5yZXN1
bHQoKTsKLSAgR1RFU1RfQ0hFQ0tfKGV4cGVjdGVkX2ZhaWx1cmVzID09IHJlc3VsdC0+dG90YWxf
cGFydF9jb3VudCgpKQotICAgICAgPDwgIkxvZ2dlZCAiIDw8IHJlc3VsdC0+dG90YWxfcGFydF9j
b3VudCgpIDw8ICIgZmFpbHVyZXMgIgotICAgICAgPDwgIiB2cy4gIiA8PCBleHBlY3RlZF9mYWls
dXJlcyA8PCAiIGV4cGVjdGVkIjsKLX0KLQotLy8gVGVzdHMgdXNpbmcgU0NPUEVEX1RSQUNFKCkg
YW5kIEdvb2dsZSBUZXN0IGFzc2VydGlvbnMgaW4gbWFueSB0aHJlYWRzCi0vLyBjb25jdXJyZW50
bHkuCi1URVNUKFN0cmVzc1Rlc3QsIENhblVzZVNjb3BlZFRyYWNlQW5kQXNzZXJ0aW9uc0luTWFu
eVRocmVhZHMpIHsKLSAgewotICAgIHNjb3BlZF9wdHI8VGhyZWFkV2l0aFBhcmFtPGludD4gPiB0
aHJlYWRzW2tUaHJlYWRDb3VudF07Ci0gICAgTm90aWZpY2F0aW9uIHRocmVhZHNfY2FuX3N0YXJ0
OwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGtUaHJlYWRDb3VudDsgaSsrKQotICAgICAgdGhy
ZWFkc1tpXS5yZXNldChuZXcgVGhyZWFkV2l0aFBhcmFtPGludD4oJk1hbnlBc3NlcnRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRzX2Nhbl9zdGFy
dCkpOwotCi0gICAgdGhyZWFkc19jYW5fc3RhcnQuTm90aWZ5KCk7Ci0KLSAgICAvLyBCbG9ja3Mg
dW50aWwgYWxsIHRoZSB0aHJlYWRzIGFyZSBkb25lLgotICAgIGZvciAoaW50IGkgPSAwOyBpICE9
IGtUaHJlYWRDb3VudDsgaSsrKQotICAgICAgdGhyZWFkc1tpXS0+Sm9pbigpOwotICB9Ci0KLSAg
Ly8gRW5zdXJlcyB0aGF0IGtUaHJlYWRDb3VudCprVGhyZWFkQ291bnQgZmFpbHVyZXMgaGF2ZSBi
ZWVuIHJlcG9ydGVkLgotICBjb25zdCBUZXN0SW5mbyogY29uc3QgaW5mbyA9IFVuaXRUZXN0OjpH
ZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICBjb25zdCBUZXN0UmVzdWx0KiBj
b25zdCByZXN1bHQgPSBpbmZvLT5yZXN1bHQoKTsKLQotICBzdGQ6OnZlY3RvcjxUZXN0UHJvcGVy
dHk+IHByb3BlcnRpZXM7Ci0gIC8vIFdlIGhhdmUgbm8gYWNjZXNzIHRvIHRoZSBUZXN0UmVzdWx0
J3MgbGlzdCBvZiBwcm9wZXJ0aWVzIGJ1dCB3ZSBjYW4KLSAgLy8gY29weSB0aGVtIG9uZSBieSBv
bmUuCi0gIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzdWx0LT50ZXN0X3Byb3BlcnR5X2NvdW50KCk7
ICsraSkKLSAgICBwcm9wZXJ0aWVzLnB1c2hfYmFjayhyZXN1bHQtPkdldFRlc3RQcm9wZXJ0eShp
KSk7Ci0KLSAgRVhQRUNUX0VRKGtUaHJlYWRDb3VudCAqIDIgKyAxLCByZXN1bHQtPnRlc3RfcHJv
cGVydHlfY291bnQoKSkKLSAgICAgIDw8ICJTdHJpbmcgYW5kIGludCB2YWx1ZXMgcmVjb3JkZWQg
b24gZWFjaCB0aHJlYWQsICIKLSAgICAgIDw8ICJhcyB3ZWxsIGFzIG9uZSBzaGFyZWRfa2V5IjsK
LSAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGhyZWFkQ291bnQ7ICsraSkgewotICAgIEV4cGVjdEtl
eUFuZFZhbHVlV2VyZVJlY29yZGVkRm9ySWQocHJvcGVydGllcywgaSwgInN0cmluZyIpOwotICAg
IEV4cGVjdEtleUFuZFZhbHVlV2VyZVJlY29yZGVkRm9ySWQocHJvcGVydGllcywgaSwgImludCIp
OwotICB9Ci0gIENoZWNrVGVzdEZhaWx1cmVDb3VudChrVGhyZWFkQ291bnQqa1RocmVhZENvdW50
KTsKLX0KLQotdm9pZCBGYWlsaW5nVGhyZWFkKGJvb2wgaXNfZmF0YWwpIHsKLSAgaWYgKGlzX2Zh
dGFsKQotICAgIEZBSUwoKSA8PCAiRmF0YWwgZmFpbHVyZSBpbiBzb21lIG90aGVyIHRocmVhZC4g
IgotICAgICAgICAgICA8PCAiKFRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4pIjsKLSAgZWxzZQot
ICAgIEFERF9GQUlMVVJFKCkgPDwgIk5vbi1mYXRhbCBmYWlsdXJlIGluIHNvbWUgb3RoZXIgdGhy
ZWFkLiAiCi0gICAgICAgICAgICAgICAgICA8PCAiKFRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4p
IjsKLX0KLQotdm9pZCBHZW5lcmF0ZUZhdGFsRmFpbHVyZUluQW5vdGhlclRocmVhZChib29sIGlz
X2ZhdGFsKSB7Ci0gIFRocmVhZFdpdGhQYXJhbTxib29sPiB0aHJlYWQoJkZhaWxpbmdUaHJlYWQs
IGlzX2ZhdGFsLCBOVUxMKTsKLSAgdGhyZWFkLkpvaW4oKTsKLX0KLQotVEVTVChOb0ZhdGFsRmFp
bHVyZVRlc3QsIEV4cGVjdE5vRmF0YWxGYWlsdXJlSWdub3Jlc0ZhaWx1cmVzSW5PdGhlclRocmVh
ZHMpIHsKLSAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFu
b3RoZXJUaHJlYWQodHJ1ZSkpOwotICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBmYWlsdXJl
ICh0aGUgb25lIGZyb20KLSAgLy8gR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQo
KSksIHNpbmNlIHRoZSBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRQotICAvLyBzaG91bGQgc3VjY2Vl
ZC4KLSAgQ2hlY2tUZXN0RmFpbHVyZUNvdW50KDEpOwotfQotCi12b2lkIEFzc2VydE5vRmF0YWxG
YWlsdXJlSWdub3Jlc0ZhaWx1cmVzSW5PdGhlclRocmVhZHMoKSB7Ci0gIEFTU0VSVF9OT19GQVRB
TF9GQUlMVVJFKEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKHRydWUpKTsKLX0K
LVRFU1QoTm9GYXRhbEZhaWx1cmVUZXN0LCBBc3NlcnROb0ZhdGFsRmFpbHVyZUlnbm9yZXNGYWls
dXJlc0luT3RoZXJUaHJlYWRzKSB7Ci0gIC8vIFVzaW5nIGEgc3Vicm91dGluZSwgdG8gbWFrZSBz
dXJlLCB0aGF0IHRoZSB0ZXN0IGNvbnRpbnVlcy4KLSAgQXNzZXJ0Tm9GYXRhbEZhaWx1cmVJZ25v
cmVzRmFpbHVyZXNJbk90aGVyVGhyZWFkcygpOwotICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9u
ZSBmYWlsdXJlICh0aGUgb25lIGZyb20KLSAgLy8gR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3Ro
ZXJUaHJlYWQoKSksIHNpbmNlIHRoZSBFWFBFQ1RfTk9fRkFUQUxfRkFJTFVSRQotICAvLyBzaG91
bGQgc3VjY2VlZC4KLSAgQ2hlY2tUZXN0RmFpbHVyZUNvdW50KDEpOwotfQotCi1URVNUKEZhdGFs
RmFpbHVyZVRlc3QsIEV4cGVjdEZhdGFsRmFpbHVyZUlnbm9yZXNGYWlsdXJlc0luT3RoZXJUaHJl
YWRzKSB7Ci0gIC8vIFRoaXMgc3RhdGVtZW50IHNob3VsZCBmYWlsLCBzaW5jZSB0aGUgY3VycmVu
dCB0aHJlYWQgZG9lc24ndCBnZW5lcmF0ZSBhCi0gIC8vIGZhdGFsIGZhaWx1cmUsIG9ubHkgYW5v
dGhlciBvbmUgZG9lcy4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR2VuZXJhdGVGYXRhbEZhaWx1
cmVJbkFub3RoZXJUaHJlYWQodHJ1ZSksICJleHBlY3RlZCIpOwotICBDaGVja1Rlc3RGYWlsdXJl
Q291bnQoMik7Ci19Ci0KLVRFU1QoRmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzVGVzdCwgRXhwZWN0
RmF0YWxGYWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIC8vIFRoaXMgc3RhdGVtZW50IHNob3VsZCBz
dWNjZWVkLCBiZWNhdXNlIGZhaWx1cmVzIGluIGFsbCB0aHJlYWRzIGFyZQotICAvLyBjb25zaWRl
cmVkLgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUygKLSAgICAgIEdlbmVy
YXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKHRydWUpLCAiZXhwZWN0ZWQiKTsKLSAgQ2hl
Y2tUZXN0RmFpbHVyZUNvdW50KDApOwotICAvLyBXZSBuZWVkIHRvIGFkZCBhIGZhaWx1cmUsIGJl
Y2F1c2UgbWFpbigpIGNoZWNrcyB0aGF0IHRoZXJlIGFyZSBmYWlsdXJlcy4KLSAgLy8gQnV0IHdo
ZW4gb25seSB0aGlzIHRlc3QgaXMgcnVuLCB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkgZmFpbHVyZXMu
Ci0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgaXMgYW4gZXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1
cmUuIjsKLX0KLQotVEVTVChOb25GYXRhbEZhaWx1cmVUZXN0LCBFeHBlY3ROb25GYXRhbEZhaWx1
cmVJZ25vcmVzRmFpbHVyZXNJbk90aGVyVGhyZWFkcykgewotICAvLyBUaGlzIHN0YXRlbWVudCBz
aG91bGQgZmFpbCwgc2luY2UgdGhlIGN1cnJlbnQgdGhyZWFkIGRvZXNuJ3QgZ2VuZXJhdGUgYQot
ICAvLyBmYXRhbCBmYWlsdXJlLCBvbmx5IGFub3RoZXIgb25lIGRvZXMuCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEdlbmVyYXRlRmF0YWxGYWlsdXJlSW5Bbm90aGVyVGhyZWFkKGZhbHNlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIik7Ci0gIENoZWNrVGVzdEZhaWx1
cmVDb3VudCgyKTsKLX0KLQotVEVTVChOb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHNUZXN0LCBF
eHBlY3ROb25GYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgLy8gVGhpcyBzdGF0ZW1lbnQg
c2hvdWxkIHN1Y2NlZWQsIGJlY2F1c2UgZmFpbHVyZXMgaW4gYWxsIHRocmVhZHMgYXJlCi0gIC8v
IGNvbnNpZGVyZWQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9USFJFQURTKAot
ICAgICAgR2VuZXJhdGVGYXRhbEZhaWx1cmVJbkFub3RoZXJUaHJlYWQoZmFsc2UpLCAiZXhwZWN0
ZWQiKTsKLSAgQ2hlY2tUZXN0RmFpbHVyZUNvdW50KDApOwotICAvLyBXZSBuZWVkIHRvIGFkZCBh
IGZhaWx1cmUsIGJlY2F1c2UgbWFpbigpIGNoZWNrcyB0aGF0IHRoZXJlIGFyZSBmYWlsdXJlcywK
LSAgLy8gQnV0IHdoZW4gb25seSB0aGlzIHRlc3QgaXMgcnVuLCB3ZSBzaG91bGRuJ3QgaGF2ZSBh
bnkgZmFpbHVyZXMuCi0gIEFERF9GQUlMVVJFKCkgPDwgIlRoaXMgaXMgYW4gZXhwZWN0ZWQgbm9u
LWZhdGFsIGZhaWx1cmUuIjsKLX0KLQotfSAgLy8gbmFtZXNwYWNlCi19ICAvLyBuYW1lc3BhY2Ug
dGVzdGluZwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAgdGVzdGluZzo6
SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotCi0gIGNvbnN0IGludCByZXN1bHQgPSBSVU5f
QUxMX1RFU1RTKCk7ICAvLyBFeHBlY3RlZCB0byBmYWlsLgotICBHVEVTVF9DSEVDS18ocmVzdWx0
ID09IDEpIDw8ICJSVU5fQUxMX1RFU1RTKCkgZGlkIG5vdCBmYWlsIGFzIGV4cGVjdGVkIjsKLQot
ICBwcmludGYoIlxuUEFTU1xuIik7Ci0gIHJldHVybiAwOwotfQotCi0jZWxzZQotVEVTVChTdHJl
c3NUZXN0LAotICAgICBESVNBQkxFRF9UaHJlYWRTYWZldHlUZXN0c0FyZVNraXBwZWRXaGVuR29v
Z2xlVGVzdElzTm90VGhyZWFkU2FmZSkgewotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpIHsKLSAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICByZXR1
cm4gUlVOX0FMTF9URVNUUygpOwotfQotI2VuZGlmICAvLyBHVEVTVF9JU19USFJFQURTQUZFCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X3Rlc3RfdXRpbHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDRhY2QzNmM5NzVjMC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rl
c3RfdGVzdF91dGlscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyMCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgdXRpbGl0
aWVzIGZvciBHb29nbGUgQysrIFRlc3RpbmcgRnJhbWV3b3JrLiIiIgotCi1fX2F1dGhvcl9fID0g
J3dhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pJwotCi1pbXBvcnQgYXRleGl0Ci1pbXBvcnQg
b3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHVu
aXR0ZXN0Ci1fdGVzdF9tb2R1bGUgPSB1bml0dGVzdAotCi0jIFN1cHByZXNzZXMgdGhlICdJbXBv
cnQgbm90IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUnIGxpbnQgY29tcGxhaW50LgotIyBweWxpbnQ6
IGRpc2FibGUtbXNnPUM2MjA0Ci10cnk6Ci0gIGltcG9ydCBzdWJwcm9jZXNzCi0gIF9TVUJQUk9D
RVNTX01PRFVMRV9BVkFJTEFCTEUgPSBUcnVlCi1leGNlcHQ6Ci0gIGltcG9ydCBwb3BlbjIKLSAg
X1NVQlBST0NFU1NfTU9EVUxFX0FWQUlMQUJMRSA9IEZhbHNlCi0jIHB5bGludDogZW5hYmxlLW1z
Zz1DNjIwNAotCi1HVEVTVF9PVVRQVVRfVkFSX05BTUUgPSAnR1RFU1RfT1VUUFVUJwotCi1JU19X
SU5ET1dTID0gb3MubmFtZSA9PSAnbnQnCi1JU19DWUdXSU4gPSBvcy5uYW1lID09ICdwb3NpeCcg
YW5kICdDWUdXSU4nIGluIG9zLnVuYW1lKClbMF0KLQotIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFi
bGUgZm9yIHNwZWNpZnlpbmcgdGhlIHBhdGggdG8gdGhlIHByZW1hdHVyZS1leGl0IGZpbGUuCi1Q
UkVNQVRVUkVfRVhJVF9GSUxFX0VOVl9WQVIgPSAnVEVTVF9QUkVNQVRVUkVfRVhJVF9GSUxFJwot
Ci1lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLQotCi1kZWYgU2V0RW52VmFyKGVudl92YXIs
IHZhbHVlKToKLSAgIiIiU2V0cy91bnNldHMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYSBn
aXZlbiB2YWx1ZS4iIiIKLQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICBlbnZpcm9uW2Vu
dl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIGVudmlyb246Ci0gICAgZGVsIGVudmly
b25bZW52X3Zhcl0KLQotCi0jIEhlcmUgd2UgZXhwb3NlIGEgY2xhc3MgZnJvbSBhIHBhcnRpY3Vs
YXIgbW9kdWxlLCBkZXBlbmRpbmcgb24gdGhlCi0jIGVudmlyb25tZW50LiBUaGUgY29tbWVudCBz
dXBwcmVzc2VzIHRoZSAnSW52YWxpZCB2YXJpYWJsZSBuYW1lJyBsaW50Ci0jIGNvbXBsYWludC4K
LVRlc3RDYXNlID0gX3Rlc3RfbW9kdWxlLlRlc3RDYXNlICAjIHB5bGludDogZGlzYWJsZS1tc2c9
QzY0MDkKLQotIyBJbml0aWFsbHkgbWFwcyBhIGZsYWcgdG8gaXRzIGRlZmF1bHQgdmFsdWUuIEFm
dGVyCi0jIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGlzIGNhbGxlZCwgbWFwcyBhIGZsYWcg
dG8gaXRzIGFjdHVhbCB2YWx1ZS4KLV9mbGFnX21hcCA9IHsnc291cmNlX2Rpcic6IG9zLnBhdGgu
ZGlybmFtZShzeXMuYXJndlswXSksCi0gICAgICAgICAgICAgJ2J1aWxkX2Rpcic6IG9zLnBhdGgu
ZGlybmFtZShzeXMuYXJndlswXSl9Ci1fZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZCA9IEZhbHNlCi0K
LQotZGVmIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncyhhcmd2KToKLSAgIiIiUGFyc2VzIGFuZCBz
dHJpcHMgR29vZ2xlIFRlc3QgZmxhZ3MgZnJvbSBhcmd2LiAgVGhpcyBpcyBpZGVtcG90ZW50LiIi
IgotCi0gICMgU3VwcHJlc3NlcyB0aGUgbGludCBjb21wbGFpbnQgYWJvdXQgYSBnbG9iYWwgdmFy
aWFibGUgc2luY2Ugd2UgbmVlZCBpdAotICAjIGhlcmUgdG8gbWFpbnRhaW4gbW9kdWxlLXdpZGUg
c3RhdGUuCi0gIGdsb2JhbCBfZ3Rlc3RfZmxhZ3NfYXJlX3BhcnNlZCAgIyBweWxpbnQ6IGRpc2Fi
bGUtbXNnPVcwNjAzCi0gIGlmIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkOgotICAgIHJldHVybgot
Ci0gIF9ndGVzdF9mbGFnc19hcmVfcGFyc2VkID0gVHJ1ZQotICBmb3IgZmxhZyBpbiBfZmxhZ19t
YXA6Ci0gICAgIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0
IHZhbHVlLgotICAgIGlmIGZsYWcudXBwZXIoKSBpbiBvcy5lbnZpcm9uOgotICAgICAgX2ZsYWdf
bWFwW2ZsYWddID0gb3MuZW52aXJvbltmbGFnLnVwcGVyKCldCi0KLSAgICAjIFRoZSBjb21tYW5k
IGxpbmUgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgIGkgPSAx
ICAjIFNraXBzIHRoZSBwcm9ncmFtIG5hbWUuCi0gICAgd2hpbGUgaSA8IGxlbihhcmd2KToKLSAg
ICAgIHByZWZpeCA9ICctLScgKyBmbGFnICsgJz0nCi0gICAgICBpZiBhcmd2W2ldLnN0YXJ0c3dp
dGgocHJlZml4KToKLSAgICAgICAgX2ZsYWdfbWFwW2ZsYWddID0gYXJndltpXVtsZW4ocHJlZml4
KTpdCi0gICAgICAgIGRlbCBhcmd2W2ldCi0gICAgICAgIGJyZWFrCi0gICAgICBlbHNlOgotICAg
ICAgICAjIFdlIGRvbid0IGluY3JlbWVudCBpIGluIGNhc2Ugd2UganVzdCBmb3VuZCBhIC0tZ3Rl
c3RfKiBmbGFnCi0gICAgICAgICMgYW5kIHJlbW92ZWQgaXQgZnJvbSBhcmd2LgotICAgICAgICBp
ICs9IDEKLQotCi1kZWYgR2V0RmxhZyhmbGFnKToKLSAgIiIiUmV0dXJucyB0aGUgdmFsdWUgb2Yg
dGhlIGdpdmVuIGZsYWcuIiIiCi0KLSAgIyBJbiBjYXNlIEdldEZsYWcoKSBpcyBjYWxsZWQgYmVm
b3JlIE1haW4oKSwgd2UgYWx3YXlzIGNhbGwKLSAgIyBfUGFyc2VBbmRTdHJpcEdUZXN0RmxhZ3Mo
KSBoZXJlIHRvIG1ha2Ugc3VyZSB0aGUgLS1ndGVzdF8qIGZsYWdzCi0gICMgYXJlIHBhcnNlZC4K
LSAgX1BhcnNlQW5kU3RyaXBHVGVzdEZsYWdzKHN5cy5hcmd2KQotCi0gIHJldHVybiBfZmxhZ19t
YXBbZmxhZ10KLQotCi1kZWYgR2V0U291cmNlRGlyKCk6Ci0gICIiIlJldHVybnMgdGhlIGFic29s
dXRlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLnB5IGZpbGVzIGFyZS4iIiIKLQot
ICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKEdldEZsYWcoJ3NvdXJjZV9kaXInKSkKLQotCi1kZWYg
R2V0QnVpbGREaXIoKToKLSAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoZSB0ZXN0IGJpbmFyaWVzIGFyZS4iIiIKLQotICByZXR1cm4gb3MucGF0
aC5hYnNwYXRoKEdldEZsYWcoJ2J1aWxkX2RpcicpKQotCi0KLV90ZW1wX2RpciA9IE5vbmUKLQot
ZGVmIF9SZW1vdmVUZW1wRGlyKCk6Ci0gIGlmIF90ZW1wX2RpcjoKLSAgICBzaHV0aWwucm10cmVl
KF90ZW1wX2RpciwgaWdub3JlX2Vycm9ycz1UcnVlKQotCi1hdGV4aXQucmVnaXN0ZXIoX1JlbW92
ZVRlbXBEaXIpCi0KLQotZGVmIEdldFRlbXBEaXIoKToKLSAgIiIiUmV0dXJucyBhIGRpcmVjdG9y
eSBmb3IgdGVtcG9yYXJ5IGZpbGVzLiIiIgotCi0gIGdsb2JhbCBfdGVtcF9kaXIKLSAgaWYgbm90
IF90ZW1wX2RpcjoKLSAgICBfdGVtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgcmV0dXJu
IF90ZW1wX2RpcgotCi0KLWRlZiBHZXRUZXN0RXhlY3V0YWJsZVBhdGgoZXhlY3V0YWJsZV9uYW1l
LCBidWlsZF9kaXI9Tm9uZSk6Ci0gICIiIlJldHVybnMgdGhlIGFic29sdXRlIHBhdGggb2YgdGhl
IHRlc3QgYmluYXJ5IGdpdmVuIGl0cyBuYW1lLgotCi0gIFRoZSBmdW5jdGlvbiB3aWxsIHByaW50
IGEgbWVzc2FnZSBhbmQgYWJvcnQgdGhlIHByb2dyYW0gaWYgdGhlIHJlc3VsdGluZyBmaWxlCi0g
IGRvZXNuJ3QgZXhpc3QuCi0KLSAgQXJnczoKLSAgICBleGVjdXRhYmxlX25hbWU6IG5hbWUgb2Yg
dGhlIHRlc3QgYmluYXJ5IHRoYXQgdGhlIHRlc3Qgc2NyaXB0IHJ1bnMuCi0gICAgYnVpbGRfZGly
OiAgICAgICBkaXJlY3Rvcnkgd2hlcmUgdG8gbG9vayBmb3IgZXhlY3V0YWJsZXMsIGJ5IGRlZmF1
bHQKLSAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgR2V0QnVpbGREaXIoKS4KLQot
ICBSZXR1cm5zOgotICAgIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSB0ZXN0IGJpbmFyeS4KLSAg
IiIiCi0KLSAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oYnVpbGRfZGlyIG9y
IEdldEJ1aWxkRGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWN1dGFibGVfbmFtZSkpCi0gIGlmIChJU19XSU5ET1dTIG9yIElTX0NZR1dJTikgYW5kIG5vdCBw
YXRoLmVuZHN3aXRoKCcuZXhlJyk6Ci0gICAgcGF0aCArPSAnLmV4ZScKLQotICBpZiBub3Qgb3Mu
cGF0aC5leGlzdHMocGF0aCk6Ci0gICAgbWVzc2FnZSA9ICgKLSAgICAgICAgJ1VuYWJsZSB0byBm
aW5kIHRoZSB0ZXN0IGJpbmFyeSAiJXMiLiBQbGVhc2UgbWFrZSBzdXJlIHRvIHByb3ZpZGVcbicK
LSAgICAgICAgJ2EgcGF0aCB0byB0aGUgYmluYXJ5IHZpYSB0aGUgLS1idWlsZF9kaXIgZmxhZyBv
ciB0aGUgQlVJTERfRElSXG4nCi0gICAgICAgICdlbnZpcm9ubWVudCB2YXJpYWJsZS4nICUgcGF0
aCkKLSAgICBzeXMuc3Rkb3V0LndyaXRlKG1lc3NhZ2UpCi0gICAgc3lzLmV4aXQoMSkKLQotICBy
ZXR1cm4gcGF0aAotCi0KLWRlZiBHZXRFeGl0U3RhdHVzKGV4aXRfY29kZSk6Ci0gICIiIlJldHVy
bnMgdGhlIGFyZ3VtZW50IHRvIGV4aXQoKSwgb3IgLTEgaWYgZXhpdCgpIHdhc24ndCBjYWxsZWQu
Ci0KLSAgQXJnczoKLSAgICBleGl0X2NvZGU6IHRoZSByZXN1bHQgdmFsdWUgb2Ygb3Muc3lzdGVt
KGNvbW1hbmQpLgotICAiIiIKLQotICBpZiBvcy5uYW1lID09ICdudCc6Ci0gICAgIyBPbiBXaW5k
b3dzLCBvcy5XRVhJVFNUQVRVUygpIGRvZXNuJ3Qgd29yayBhbmQgb3Muc3lzdGVtKCkgcmV0dXJu
cwotICAgICMgdGhlIGFyZ3VtZW50IHRvIGV4aXQoKSBkaXJlY3RseS4KLSAgICByZXR1cm4gZXhp
dF9jb2RlCi0gIGVsc2U6Ci0gICAgIyBPbiBVbml4LCBvcy5XRVhJVFNUQVRVUygpIG11c3QgYmUg
dXNlZCB0byBleHRyYWN0IHRoZSBleGl0IHN0YXR1cwotICAgICMgZnJvbSB0aGUgcmVzdWx0IG9m
IG9zLnN5c3RlbSgpLgotICAgIGlmIG9zLldJRkVYSVRFRChleGl0X2NvZGUpOgotICAgICAgcmV0
dXJuIG9zLldFWElUU1RBVFVTKGV4aXRfY29kZSkKLSAgICBlbHNlOgotICAgICAgcmV0dXJuIC0x
Ci0KLQotY2xhc3MgU3VicHJvY2VzczoKLSAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbW1hbmQsIHdv
cmtpbmdfZGlyPU5vbmUsIGNhcHR1cmVfc3RkZXJyPVRydWUsIGVudj1Ob25lKToKLSAgICAiIiJD
aGFuZ2VzIGludG8gYSBzcGVjaWZpZWQgZGlyZWN0b3J5LCBpZiBwcm92aWRlZCwgYW5kIGV4ZWN1
dGVzIGEgY29tbWFuZC4KLQotICAgIFJlc3RvcmVzIHRoZSBvbGQgZGlyZWN0b3J5IGFmdGVyd2Fy
ZHMuCi0KLSAgICBBcmdzOgotICAgICAgY29tbWFuZDogICAgICAgIFRoZSBjb21tYW5kIHRvIHJ1
biwgaW4gdGhlIGZvcm0gb2Ygc3lzLmFyZ3YuCi0gICAgICB3b3JraW5nX2RpcjogICAgVGhlIGRp
cmVjdG9yeSB0byBjaGFuZ2UgaW50by4KLSAgICAgIGNhcHR1cmVfc3RkZXJyOiBEZXRlcm1pbmVz
IHdoZXRoZXIgdG8gY2FwdHVyZSBzdGRlcnIgaW4gdGhlIG91dHB1dCBtZW1iZXIKLSAgICAgICAg
ICAgICAgICAgICAgICBvciB0byBkaXNjYXJkIGl0LgotICAgICAgZW52OiAgICAgICAgICAgIERp
Y3Rpb25hcnkgd2l0aCBlbnZpcm9ubWVudCB0byBwYXNzIHRvIHRoZSBzdWJwcm9jZXNzLgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIEFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgb3V0Y29tZSBvZiB0
aGUgZXhlY3V0ZWQgcHJvY2Vzcy4gSXQgaGFzIHRoZQotICAgICAgZm9sbG93aW5nIGF0dHJpYnV0
ZXM6Ci0gICAgICAgIHRlcm1pbmF0ZWRfYnlfc2lnbmFsICAgVHJ1ZSBpZmYgdGhlIGNoaWxkIHBy
b2Nlc3MgaGFzIGJlZW4gdGVybWluYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ5IGEgc2lnbmFsLgotICAgICAgICBzaWduYWwgICAgICAgICAgICAgICAgIFN5Z25hbCB0aGF0
IHRlcm1pbmF0ZWQgdGhlIGNoaWxkIHByb2Nlc3MuCi0gICAgICAgIGV4aXRlZCAgICAgICAgICAg
ICAgICAgVHJ1ZSBpZmYgdGhlIGNoaWxkIHByb2Nlc3MgZXhpdGVkIG5vcm1hbGx5LgotICAgICAg
ICBleGl0X2NvZGUgICAgICAgICAgICAgIFRoZSBjb2RlIHdpdGggd2hpY2ggdGhlIGNoaWxkIHBy
b2Nlc3MgZXhpdGVkLgotICAgICAgICBvdXRwdXQgICAgICAgICAgICAgICAgIENoaWxkIHByb2Nl
c3MncyBzdGRvdXQgYW5kIHN0ZGVyciBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb21iaW5lZCBpbiBhIHN0cmluZy4KLSAgICAiIiIKLQotICAgICMgVGhlIHN1YnByb2Nl
c3MgbW9kdWxlIGlzIHRoZSBwcmVmZXJyYWJsZSB3YXkgb2YgcnVubmluZyBwcm9ncmFtcwotICAg
ICMgc2luY2UgaXQgaXMgYXZhaWxhYmxlIGFuZCBiZWhhdmVzIGNvbnNpc3RlbnRseSBvbiBhbGwg
cGxhdGZvcm1zLAotICAgICMgaW5jbHVkaW5nIFdpbmRvd3MuIEJ1dCBpdCBpcyBvbmx5IGF2YWls
YWJsZSBzdGFydGluZyBpbiBweXRob24gMi40LgotICAgICMgSW4gZWFybGllciBweXRob24gdmVy
c2lvbnMsIHdlIHJldmVydCB0byB0aGUgcG9wZW4yIG1vZHVsZSwgd2hpY2ggaXMKLSAgICAjIGF2
YWlsYWJsZSBpbiBweXRob24gMi4wIGFuZCBsYXRlciBidXQgZG9lc24ndCBwcm92aWRlIHJlcXVp
cmVkCi0gICAgIyBmdW5jdGlvbmFsaXR5IChQb3BlbjQpIHVuZGVyIFdpbmRvd3MuIFRoaXMgYWxs
b3dzIHVzIHRvIHN1cHBvcnQgTWFjCi0gICAgIyBPUyBYIDEwLjQgVGlnZXIsIHdoaWNoIGhhcyBw
eXRob24gMi4zIGluc3RhbGxlZC4KLSAgICBpZiBfU1VCUFJPQ0VTU19NT0RVTEVfQVZBSUxBQkxF
OgotICAgICAgaWYgY2FwdHVyZV9zdGRlcnI6Ci0gICAgICAgIHN0ZGVyciA9IHN1YnByb2Nlc3Mu
U1RET1VUCi0gICAgICBlbHNlOgotICAgICAgICBzdGRlcnIgPSBzdWJwcm9jZXNzLlBJUEUKLQot
ICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdGRlcnIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjd2Q9d29ya2luZ19kaXIsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVl
LCBlbnY9ZW52KQotICAgICAgIyBjb21tdW5pY2F0ZSByZXR1cm5zIGEgdHVwbGUgd2l0aCB0aGUg
ZmlsZSBvYmVjdCBmb3IgdGhlIGNoaWxkJ3MKLSAgICAgICMgb3V0cHV0LgotICAgICAgc2VsZi5v
dXRwdXQgPSBwLmNvbW11bmljYXRlKClbMF0KLSAgICAgIHNlbGYuX3JldHVybl9jb2RlID0gcC5y
ZXR1cm5jb2RlCi0gICAgZWxzZToKLSAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQotCi0gICAg
ICBkZWYgX1JlcGxhY2VFbnZEaWN0KGRlc3QsIHNyYyk6Ci0gICAgICAgICMgQ2hhbmdlcyBtYWRl
IGJ5IG9zLmVudmlyb24uY2xlYXIgYXJlIG5vdCBpbmhlcml0YWJsZSBieSBjaGlsZAotICAgICAg
ICAjIHByb2Nlc3NlcyB1bnRpbCBQeXRob24gMi42LiBUbyBwcm9kdWNlIGluaGVyaXRhYmxlIGNo
YW5nZXMgd2UgaGF2ZQotICAgICAgICAjIHRvIGRlbGV0ZSBlbnZpcm9ubWVudCBpdGVtcyB3aXRo
IHRoZSBkZWwgc3RhdGVtZW50LgotICAgICAgICBmb3Iga2V5IGluIGRlc3Qua2V5cygpOgotICAg
ICAgICAgIGRlbCBkZXN0W2tleV0KLSAgICAgICAgZGVzdC51cGRhdGUoc3JjKQotCi0gICAgICAj
IFdoZW4gJ2VudicgaXMgbm90IE5vbmUsIGJhY2t1cCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVz
IGFuZCByZXBsYWNlCi0gICAgICAjIHRoZW0gd2l0aCB0aGUgcGFzc2VkICdlbnYnLiBXaGVuICdl
bnYnIGlzIE5vbmUsIHdlIHNpbXBseSB1c2UgdGhlCi0gICAgICAjIGN1cnJlbnQgJ29zLmVudmly
b24nIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN1YnByb2Nlc3MuUG9wZW4KLSAgICAgICMg
c2VtYW50aWNzIHVzZWQgYWJvdmUuCi0gICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAg
IG9sZF9lbnZpcm9uID0gb3MuZW52aXJvbi5jb3B5KCkKLSAgICAgICAgX1JlcGxhY2VFbnZEaWN0
KG9zLmVudmlyb24sIGVudikKLQotICAgICAgdHJ5OgotICAgICAgICBpZiB3b3JraW5nX2RpciBp
cyBub3QgTm9uZToKLSAgICAgICAgICBvcy5jaGRpcih3b3JraW5nX2RpcikKLSAgICAgICAgaWYg
Y2FwdHVyZV9zdGRlcnI6Ci0gICAgICAgICAgcCA9IHBvcGVuMi5Qb3BlbjQoY29tbWFuZCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICBwID0gcG9wZW4yLlBvcGVuMyhjb21tYW5kKQotICAgICAg
ICBwLnRvY2hpbGQuY2xvc2UoKQotICAgICAgICBzZWxmLm91dHB1dCA9IHAuZnJvbWNoaWxkLnJl
YWQoKQotICAgICAgICByZXRfY29kZSA9IHAud2FpdCgpCi0gICAgICBmaW5hbGx5OgotICAgICAg
ICBvcy5jaGRpcihvbGRfZGlyKQotCi0gICAgICAgICMgUmVzdG9yZSB0aGUgb2xkIGVudmlyb25t
ZW50IHZhcmlhYmxlcwotICAgICAgICAjIGlmIHRoZXkgd2VyZSByZXBsYWNlZC4KLSAgICAgICAg
aWYgZW52IGlzIG5vdCBOb25lOgotICAgICAgICAgIF9SZXBsYWNlRW52RGljdChvcy5lbnZpcm9u
LCBvbGRfZW52aXJvbikKLQotICAgICAgIyBDb252ZXJ0cyByZXRfY29kZSB0byBtYXRjaCB0aGUg
c2VtYW50aWNzIG9mCi0gICAgICAjIHN1YnByb2Nlc3MuUG9wZW4ucmV0dXJuY29kZS4KLSAgICAg
IGlmIG9zLldJRlNJR05BTEVEKHJldF9jb2RlKToKLSAgICAgICAgc2VsZi5fcmV0dXJuX2NvZGUg
PSAtb3MuV1RFUk1TSUcocmV0X2NvZGUpCi0gICAgICBlbHNlOiAgIyBvcy5XSUZFWElURUQocmV0
X2NvZGUpIHNob3VsZCByZXR1cm4gVHJ1ZSBoZXJlLgotICAgICAgICBzZWxmLl9yZXR1cm5fY29k
ZSA9IG9zLldFWElUU1RBVFVTKHJldF9jb2RlKQotCi0gICAgaWYgc2VsZi5fcmV0dXJuX2NvZGUg
PCAwOgotICAgICAgc2VsZi50ZXJtaW5hdGVkX2J5X3NpZ25hbCA9IFRydWUKLSAgICAgIHNlbGYu
ZXhpdGVkID0gRmFsc2UKLSAgICAgIHNlbGYuc2lnbmFsID0gLXNlbGYuX3JldHVybl9jb2RlCi0g
ICAgZWxzZToKLSAgICAgIHNlbGYudGVybWluYXRlZF9ieV9zaWduYWwgPSBGYWxzZQotICAgICAg
c2VsZi5leGl0ZWQgPSBUcnVlCi0gICAgICBzZWxmLmV4aXRfY29kZSA9IHNlbGYuX3JldHVybl9j
b2RlCi0KLQotZGVmIE1haW4oKToKLSAgIiIiUnVucyB0aGUgdW5pdCB0ZXN0LiIiIgotCi0gICMg
V2UgbXVzdCBjYWxsIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFncygpIGJlZm9yZSBjYWxsaW5nCi0g
ICMgdW5pdHRlc3QubWFpbigpLiAgT3RoZXJ3aXNlIHRoZSBsYXR0ZXIgd2lsbCBiZSBjb25mdXNl
ZCBieSB0aGUKLSAgIyAtLWd0ZXN0XyogZmxhZ3MuCi0gIF9QYXJzZUFuZFN0cmlwR1Rlc3RGbGFn
cyhzeXMuYXJndikKLSAgIyBUaGUgdGVzdGVkIGJpbmFyaWVzIHNob3VsZCBub3QgYmUgd3JpdGlu
ZyBYTUwgb3V0cHV0IGZpbGVzIHVubGVzcyB0aGUKLSAgIyBzY3JpcHQgZXhwbGljaXRseSBpbnN0
cnVjdHMgdGhlbSB0by4KLSAgIyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBNb3ZlIHRoaXMgaW50
byBTdWJwcm9jZXNzIHdoZW4gd2UgaW1wbGVtZW50Ci0gICMgcGFzc2luZyBlbnZpcm9ubWVudCBp
bnRvIGl0IGFzIGEgcGFyYW1ldGVyLgotICBpZiBHVEVTVF9PVVRQVVRfVkFSX05BTUUgaW4gb3Mu
ZW52aXJvbjoKLSAgICBkZWwgb3MuZW52aXJvbltHVEVTVF9PVVRQVVRfVkFSX05BTUVdCi0KLSAg
X3Rlc3RfbW9kdWxlLm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90
aHJvd19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3Rocm93
X29uX2ZhaWx1cmVfZXhfdGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ0
NmM3NmYxNjEyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90aHJv
d19vbl9mYWlsdXJlX2V4X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotCi0vLyBUZXN0cyBHb29nbGUgVGVzdCdz
IHRocm93LW9uLWZhaWx1cmUgbW9kZSB3aXRoIGV4Y2VwdGlvbnMgZW5hYmxlZC4KLQotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRp
by5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLQotLy8gUHJp
bnRzIHRoZSBnaXZlbiBmYWlsdXJlIG1lc3NhZ2UgYW5kIGV4aXRzIHRoZSBwcm9ncmFtIHdpdGgK
LS8vIG5vbi16ZXJvLiAgV2UgdXNlIHRoaXMgaW5zdGVhZCBvZiBhIEdvb2dsZSBUZXN0IGFzc2Vy
dGlvbiB0bwotLy8gaW5kaWNhdGUgYSBmYWlsdXJlLCBhcyB0aGUgbGF0dGVyIGlzIGJlZW4gdGVz
dGVkIGFuZCBjYW5ub3QgYmUKLS8vIHJlbGllZCBvbi4KLXZvaWQgRmFpbChjb25zdCBjaGFyKiBt
c2cpIHsKLSAgcHJpbnRmKCJGQUlMVVJFOiAlc1xuIiwgbXNnKTsKLSAgZmZsdXNoKHN0ZG91dCk7
Ci0gIGV4aXQoMSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgdGhy
b3dzIGEgc3ViY2xhc3Mgb2YKLS8vIHN0ZDo6cnVudGltZV9lcnJvci4KLXZvaWQgVGVzdEZhaWx1
cmVUaHJvd3NSdW50aW1lRXJyb3IoKSB7Ci0gIHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25f
ZmFpbHVyZSkgPSB0cnVlOwotCi0gIC8vIEEgc3VjY2Vzc2Z1bCBhc3NlcnRpb24gc2hvdWxkbid0
IHRocm93LgotICB0cnkgewotICAgIEVYUEVDVF9FUSgzLCAzKTsKLSAgfSBjYXRjaCguLi4pIHsK
LSAgICBGYWlsKCJBIHN1Y2Nlc3NmdWwgYXNzZXJ0aW9uIHdyb25nZnVsbHkgdGhyZXcuIik7Ci0g
IH0KLQotICAvLyBBIGZhaWxlZCBhc3NlcnRpb24gc2hvdWxkIHRocm93IGEgc3ViY2xhc3Mgb2Yg
c3RkOjpydW50aW1lX2Vycm9yLgotICB0cnkgewotICAgIEVYUEVDVF9FUSgyLCAzKSA8PCAiRXhw
ZWN0ZWQgZmFpbHVyZSI7Ci0gIH0gY2F0Y2goY29uc3Qgc3RkOjpydW50aW1lX2Vycm9yJiBlKSB7
Ci0gICAgaWYgKHN0cnN0cihlLndoYXQoKSwgIkV4cGVjdGVkIGZhaWx1cmUiKSAhPSBOVUxMKQot
ICAgICAgcmV0dXJuOwotCi0gICAgcHJpbnRmKCIlcyIsCi0gICAgICAgICAgICJBIGZhaWxlZCBh
c3NlcnRpb24gZGlkIHRocm93IGFuIGV4Y2VwdGlvbiBvZiB0aGUgcmlnaHQgdHlwZSwgIgotICAg
ICAgICAgICAiYnV0IHRoZSBtZXNzYWdlIGlzIGluY29ycmVjdC4gIEluc3RlYWQgb2YgY29udGFp
bmluZyBcIkV4cGVjdGVkICIKLSAgICAgICAgICAgImZhaWx1cmVcIiwgaXQgaXM6XG4iKTsKLSAg
ICBGYWlsKGUud2hhdCgpKTsKLSAgfSBjYXRjaCguLi4pIHsKLSAgICBGYWlsKCJBIGZhaWxlZCBh
c3NlcnRpb24gdGhyZXcgdGhlIHdyb25nIHR5cGUgb2YgZXhjZXB0aW9uLiIpOwotICB9Ci0gIEZh
aWwoIkEgZmFpbGVkIGFzc2VydGlvbiBzaG91bGQndmUgdGhyb3duIGJ1dCBkaWRuJ3QuIik7Ci19
Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewotICB0ZXN0aW5nOjpJbml0R29v
Z2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBwZW9w
bGUgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGluCi0gIC8vIG90aGVyIHRlc3Rpbmcg
ZnJhbWV3b3JrcywgYXMgbG9uZyBhcyB0aGV5IGluaXRpYWxpemUgR29vZ2xlIFRlc3QKLSAgLy8g
cHJvcGVybHkgYW5kIHNldCB0aGUgdGhyb3duLW9uLWZhaWx1cmUgbW9kZS4gIFRoZXJlZm9yZSwg
d2UgZG9uJ3QKLSAgLy8gdXNlIEdvb2dsZSBUZXN0J3MgY29uc3RydWN0cyBmb3IgZGVmaW5pbmcg
YW5kIHJ1bm5pbmcgdGVzdHMKLSAgLy8gKGUuZy4gVEVTVCBhbmQgUlVOX0FMTF9URVNUUykgaGVy
ZS4KLQotICBUZXN0RmFpbHVyZVRocm93c1J1bnRpbWVFcnJvcigpOwotICByZXR1cm4gMDsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF90aHJvd19vbl9mYWlsdXJlX3Rlc3QucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDNlNzc0MGNhYmI4YS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xl
dGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0LnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSIiIlRlc3RzIEdvb2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBt
b2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KLQotVGhpcyBzY3JpcHQgaW52b2tlcyBndGVz
dF90aHJvd19vbl9mYWlsdXJlX3Rlc3RfIChhIHByb2dyYW0gd3JpdHRlbiB3aXRoCi1Hb29nbGUg
VGVzdCkgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIGFuZCBjb21tYW5kIGxpbmUgZmxhZ3Mu
Ci0iIiIKLQotX19hdXRob3JfXyA9ICd3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKScKLQot
aW1wb3J0IG9zCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLSMgQ29uc3RhbnRzLgotCi0j
IFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSB0aHJvdy1v
bi1mYWlsdXJlIG1vZGUuCi1USFJPV19PTl9GQUlMVVJFID0gJ2d0ZXN0X3Rocm93X29uX2ZhaWx1
cmUnCi0KLSMgUGF0aCB0byB0aGUgZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0XyBwcm9ncmFt
LCBjb21waWxlZCB3aXRoCi0jIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCi1FWEVfUEFUSCA9IGd0ZXN0
X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICdndGVzdF90aHJvd19vbl9m
YWlsdXJlX3Rlc3RfJykKLQotCi0jIFV0aWxpdGllcy4KLQotCi1kZWYgU2V0RW52VmFyKGVudl92
YXIsIHZhbHVlKToKLSAgIiIiU2V0cyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhIGdpdmVu
IHZhbHVlOyB1bnNldHMgaXQgd2hlbiB0aGUKLSAgZ2l2ZW4gdmFsdWUgaXMgTm9uZS4KLSAgIiIi
Ci0KLSAgZW52X3ZhciA9IGVudl92YXIudXBwZXIoKQotICBpZiB2YWx1ZSBpcyBub3QgTm9uZToK
LSAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gdmFsdWUKLSAgZWxpZiBlbnZfdmFyIGluIG9zLmVu
dmlyb246Ci0gICAgZGVsIG9zLmVudmlyb25bZW52X3Zhcl0KLQotCi1kZWYgUnVuKGNvbW1hbmQp
OgotICAiIiJSdW5zIGEgY29tbWFuZDsgcmV0dXJucyBUcnVlL0ZhbHNlIGlmIGl0cyBleGl0IGNv
ZGUgaXMvaXNuJ3QgMC4iIiIKLQotICBwcmludCgnUnVubmluZyAiJXMiLiAuIC4nICUgJyAnLmpv
aW4oY29tbWFuZCkpCi0gIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCkK
LSAgcmV0dXJuIHAuZXhpdGVkIGFuZCBwLmV4aXRfY29kZSA9PSAwCi0KLQotIyBUaGUgdGVzdHMu
ICBUT0RPKHdhbkBnb29nbGUuY29tKTogcmVmYWN0b3IgdGhlIGNsYXNzIHRvIHNoYXJlIGNvbW1v
bgotIyBsb2dpYyB3aXRoIGNvZGUgaW4gZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZV91bml0dGVzdC5w
eS4KLWNsYXNzIFRocm93T25GYWlsdXJlVGVzdChndGVzdF90ZXN0X3V0aWxzLlRlc3RDYXNlKToK
LSAgIiIiVGVzdHMgdGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZS4iIiIKLQotICBkZWYgUnVuQW5k
VmVyaWZ5KHNlbGYsIGVudl92YXJfdmFsdWUsIGZsYWdfdmFsdWUsIHNob3VsZF9mYWlsKToKLSAg
ICAiIiJSdW5zIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8gYW5kIHZlcmlmaWVzIHRoYXQg
aXQgZG9lcwotICAgIChvciBkb2VzIG5vdCkgZXhpdCB3aXRoIGEgbm9uLXplcm8gY29kZS4KLQot
ICAgIEFyZ3M6Ci0gICAgICBlbnZfdmFyX3ZhbHVlOiAgICB2YWx1ZSBvZiB0aGUgR1RFU1RfQlJF
QUtfT05fRkFJTFVSRSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGU7IE5vbmUgaWYgdGhlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldC4KLSAgICAgIGZsYWdfdmFs
dWU6ICAgICAgIHZhbHVlIG9mIHRoZSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZzsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgdGhlIGZsYWcgc2hvdWxkIG5vdCBiZSBwcmVz
ZW50LgotICAgICAgc2hvdWxkX2ZhaWw6ICAgICAgVHJ1ZSBpZmYgdGhlIHByb2dyYW0gaXMgZXhw
ZWN0ZWQgdG8gZmFpbC4KLSAgICAiIiIKLQotICAgIFNldEVudlZhcihUSFJPV19PTl9GQUlMVVJF
LCBlbnZfdmFyX3ZhbHVlKQotCi0gICAgaWYgZW52X3Zhcl92YWx1ZSBpcyBOb25lOgotICAgICAg
ZW52X3Zhcl92YWx1ZV9tc2cgPSAnIGlzIG5vdCBzZXQnCi0gICAgZWxzZToKLSAgICAgIGVudl92
YXJfdmFsdWVfbXNnID0gJz0nICsgZW52X3Zhcl92YWx1ZQotCi0gICAgaWYgZmxhZ192YWx1ZSBp
cyBOb25lOgotICAgICAgZmxhZyA9ICcnCi0gICAgZWxpZiBmbGFnX3ZhbHVlID09ICcwJzoKLSAg
ICAgIGZsYWcgPSAnLS0lcz0wJyAlIFRIUk9XX09OX0ZBSUxVUkUKLSAgICBlbHNlOgotICAgICAg
ZmxhZyA9ICctLSVzJyAlIFRIUk9XX09OX0ZBSUxVUkUKLQotICAgIGNvbW1hbmQgPSBbRVhFX1BB
VEhdCi0gICAgaWYgZmxhZzoKLSAgICAgIGNvbW1hbmQuYXBwZW5kKGZsYWcpCi0KLSAgICBpZiBz
aG91bGRfZmFpbDoKLSAgICAgIHNob3VsZF9vcl9ub3QgPSAnc2hvdWxkJwotICAgIGVsc2U6Ci0g
ICAgICBzaG91bGRfb3Jfbm90ID0gJ3Nob3VsZCBub3QnCi0KLSAgICBmYWlsZWQgPSBub3QgUnVu
KGNvbW1hbmQpCi0KLSAgICBTZXRFbnZWYXIoVEhST1dfT05fRkFJTFVSRSwgTm9uZSkKLQotICAg
IG1zZyA9ICgnd2hlbiAlcyVzLCBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiAiJXMiICVzIGNhdXNl
IGEgbm9uLXplcm8gJwotICAgICAgICAgICAnZXhpdCBjb2RlLicgJQotICAgICAgICAgICAoVEhS
T1dfT05fRkFJTFVSRSwgZW52X3Zhcl92YWx1ZV9tc2csICcgJy5qb2luKGNvbW1hbmQpLAotICAg
ICAgICAgICAgc2hvdWxkX29yX25vdCkpCi0gICAgc2VsZi5hc3NlcnRfKGZhaWxlZCA9PSBzaG91
bGRfZmFpbCwgbXNnKQotCi0gIGRlZiB0ZXN0RGVmYXVsdEJlaGF2aW9yKHNlbGYpOgotICAgICIi
IlRlc3RzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBtb2RlLiIiIgotCi0gICAgc2VsZi5S
dW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25lLCBmbGFnX3ZhbHVlPU5vbmUsIHNob3VsZF9m
YWlsPUZhbHNlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZhaWx1cmVFbnZWYXIoc2VsZik6Ci0gICAg
IiIiVGVzdHMgdXNpbmcgdGhlIEdURVNUX1RIUk9XX09OX0ZBSUxVUkUgZW52aXJvbm1lbnQgdmFy
aWFibGUuIiIiCi0KLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScwJywKLSAg
ICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkX2ZhaWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1
ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT1Ob25lLAotICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZF9mYWlsPVRydWUpCi0KLSAgZGVmIHRlc3RUaHJvd09uRmFpbHVy
ZUZsYWcoc2VsZik6Ci0gICAgIiIiVGVzdHMgdXNpbmcgdGhlIC0tZ3Rlc3RfdGhyb3dfb25fZmFp
bHVyZSBmbGFnLiIiIgotCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWU9JzAnLAotICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZF9mYWlsPUZhbHNlKQotICAgIHNlbGYuUnVuQW5kVmVyaWZ5KGVudl92YXJf
dmFsdWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0gIGRlZiB0ZXN0VGhyb3dPbkZh
aWx1cmVGbGFnT3ZlcnJpZGVzRW52VmFyKHNlbGYpOgotICAgICIiIlRlc3RzIHRoYXQgLS1ndGVz
dF90aHJvd19vbl9mYWlsdXJlIG92ZXJyaWRlcyBHVEVTVF9USFJPV19PTl9GQUlMVVJFLiIiIgot
Ci0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZmxhZ192YWx1ZT0nMCcsCi0gICAgICAgICAgICAgICAgICAgICAgc2hvdWxkX2Zh
aWw9RmFsc2UpCi0gICAgc2VsZi5SdW5BbmRWZXJpZnkoZW52X3Zhcl92YWx1ZT0nMCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZT0nMScsCi0gICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkX2ZhaWw9VHJ1ZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFyX3ZhbHVlPScx
JywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScwJywKLSAgICAgICAgICAgICAg
ICAgICAgICBzaG91bGRfZmFpbD1GYWxzZSkKLSAgICBzZWxmLlJ1bkFuZFZlcmlmeShlbnZfdmFy
X3ZhbHVlPScxJywKLSAgICAgICAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlPScxJywKLSAgICAg
ICAgICAgICAgICAgICAgICBzaG91bGRfZmFpbD1UcnVlKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gIGd0ZXN0X3Rlc3RfdXRpbHMuTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xl
dGVzdC90ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3Rocm93X29uX2ZhaWx1cmVfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDJiODhmZTNkOWIzYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rl
c3QvZ3Rlc3RfdGhyb3dfb25fZmFpbHVyZV90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDcy
ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8v
Ci0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8g
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8v
Ci0vLyBBdXRob3I6IHdhbkBnb29nbGUuY29tIChaaGFueW9uZyBXYW4pCi0KLS8vIFRlc3RzIEdv
b2dsZSBUZXN0J3MgdGhyb3ctb24tZmFpbHVyZSBtb2RlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxl
ZC4KLS8vCi0vLyBUaGlzIHByb2dyYW0gbXVzdCBiZSBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbnMg
ZGlzYWJsZWQuICBJdCB3aWxsIGJlCi0vLyBpbnZva2VkIGJ5IGd0ZXN0X3Rocm93X29uX2ZhaWx1
cmVfdGVzdC5weSwgYW5kIGlzIGV4cGVjdGVkIHRvIGV4aXQKLS8vIHdpdGggbm9uLXplcm8gaW4g
dGhlIHRocm93LW9uLWZhaWx1cmUgbW9kZSBvciAwIG90aGVyd2lzZS4KLQotI2luY2x1ZGUgImd0
ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPiAgICAgICAgICAgICAgICAgICAgICAv
LyBmb3IgZmZsdXNoLCBmcHJpbnRmLCBOVUxMLCBldGMuCi0jaW5jbHVkZSA8c3RkbGliLmg+ICAg
ICAgICAgICAgICAgICAgICAgLy8gZm9yIGV4aXQKLSNpbmNsdWRlIDxleGNlcHRpb24+ICAgICAg
ICAgICAgICAgICAgICAvLyBmb3Igc2V0X3Rlcm1pbmF0ZQotCi0vLyBUaGlzIHRlcm1pbmF0ZSBo
YW5kbGVyIGFib3J0cyB0aGUgcHJvZ3JhbSB1c2luZyBleGl0KCkgcmF0aGVyIHRoYW4gYWJvcnQo
KS4KLS8vIFRoaXMgYXZvaWRzIHNob3dpbmcgcG9wLXVwcyBvbiBXaW5kb3dzIHN5c3RlbXMgYW5k
IGNvcmUgZHVtcHMgb24gVW5peC1saWtlCi0vLyBvbmVzLgotdm9pZCBUZXJtaW5hdGVIYW5kbGVy
KCkgewotICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCAiVW5oYW5kbGVkIEMrKyBleGNlcHRpb24g
dGVybWluYXRpbmcgdGhlIHByb2dyYW0uIik7Ci0gIGZmbHVzaChOVUxMKTsKLSAgZXhpdCgxKTsK
LX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7Ci0jaWYgR1RFU1RfSEFTX0VY
Q0VQVElPTlMKLSAgc3RkOjpzZXRfdGVybWluYXRlKCZUZXJtaW5hdGVIYW5kbGVyKTsKLSNlbmRp
ZgotICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywgYXJndik7Ci0KLSAgLy8gV2Ugd2Fu
dCB0byBlbnN1cmUgdGhhdCBwZW9wbGUgY2FuIHVzZSBHb29nbGUgVGVzdCBhc3NlcnRpb25zIGlu
Ci0gIC8vIG90aGVyIHRlc3RpbmcgZnJhbWV3b3JrcywgYXMgbG9uZyBhcyB0aGV5IGluaXRpYWxp
emUgR29vZ2xlIFRlc3QKLSAgLy8gcHJvcGVybHkgYW5kIHNldCB0aGUgdGhyb3ctb24tZmFpbHVy
ZSBtb2RlLiAgVGhlcmVmb3JlLCB3ZSBkb24ndAotICAvLyB1c2UgR29vZ2xlIFRlc3QncyBjb25z
dHJ1Y3RzIGZvciBkZWZpbmluZyBhbmQgcnVubmluZyB0ZXN0cwotICAvLyAoZS5nLiBURVNUIGFu
ZCBSVU5fQUxMX1RFU1RTKSBoZXJlLgotCi0gIC8vIEluIHRoZSB0aHJvdy1vbi1mYWlsdXJlIG1v
ZGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLCB0aGlzCi0gIC8vIGFzc2VydGlvbiB3aWxsIGNh
dXNlIHRoZSBwcm9ncmFtIHRvIGV4aXQgd2l0aCBhIG5vbi16ZXJvIGNvZGUuCi0gIEVYUEVDVF9F
USgyLCAzKTsKLQotICAvLyBXaGVuIG5vdCBpbiB0aGUgdGhyb3ctb24tZmFpbHVyZSBtb2RlLCB0
aGUgY29udHJvbCB3aWxsIHJlYWNoCi0gIC8vIGhlcmUuCi0gIHJldHVybiAwOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29v
Z2xldGVzdC90ZXN0L2d0ZXN0X3VuaW5pdGlhbGl6ZWRfdGVzdC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggNDM1ODM3MDA5N2ZiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRl
c3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3
MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDgsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0i
IiJWZXJpZmllcyB0aGF0IEdvb2dsZSBUZXN0IHdhcm5zIHRoZSB1c2VyIHdoZW4gbm90IGluaXRp
YWxpemVkIHByb3Blcmx5LiIiIgotCi1fX2F1dGhvcl9fID0gJ3dhbkBnb29nbGUuY29tIChaaGFu
eW9uZyBXYW4pJwotCi1pbXBvcnQgZ3Rlc3RfdGVzdF91dGlscwotCi0KLUNPTU1BTkQgPSBndGVz
dF90ZXN0X3V0aWxzLkdldFRlc3RFeGVjdXRhYmxlUGF0aCgnZ3Rlc3RfdW5pbml0aWFsaXplZF90
ZXN0XycpCi0KLQotZGVmIEFzc2VydChjb25kaXRpb24pOgotICBpZiBub3QgY29uZGl0aW9uOgot
ICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCi0KLQotZGVmIEFzc2VydEVxKGV4cGVjdGVkLCBhY3R1
YWwpOgotICBpZiBleHBlY3RlZCAhPSBhY3R1YWw6Ci0gICAgcHJpbnQoJ0V4cGVjdGVkOiAlcycg
JSAoZXhwZWN0ZWQsKSkKLSAgICBwcmludCgnICBBY3R1YWw6ICVzJyAlIChhY3R1YWwsKSkKLSAg
ICByYWlzZSBBc3NlcnRpb25FcnJvcgotCi0KLWRlZiBUZXN0RXhpdENvZGVBbmRPdXRwdXQoY29t
bWFuZCk6Ci0gICIiIlJ1bnMgdGhlIGdpdmVuIGNvbW1hbmQgYW5kIHZlcmlmaWVzIGl0cyBleGl0
IGNvZGUgYW5kIG91dHB1dC4iIiIKLQotICAjIFZlcmlmaWVzIHRoYXQgJ2NvbW1hbmQnIGV4aXRz
IHdpdGggY29kZSAxLgotICBwID0gZ3Rlc3RfdGVzdF91dGlscy5TdWJwcm9jZXNzKGNvbW1hbmQp
Ci0gIEFzc2VydChwLmV4aXRlZCkKLSAgQXNzZXJ0RXEoMSwgcC5leGl0X2NvZGUpCi0gIEFzc2Vy
dCgnSW5pdEdvb2dsZVRlc3QnIGluIHAub3V0cHV0KQotCi0KLWNsYXNzIEdUZXN0VW5pbml0aWFs
aXplZFRlc3QoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gIGRlZiB0ZXN0RXhpdENvZGVB
bmRPdXRwdXQoc2VsZik6Ci0gICAgVGVzdEV4aXRDb2RlQW5kT3V0cHV0KENPTU1BTkQpCi0KLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgZ3Rlc3RfdGVzdF91dGlscy5NYWluKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfdW5pbml0aWFsaXplZF90ZXN0Xy5jYwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzMTY5ODdmYmI1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QvdGVzdC9ndGVzdF91bmluaXRpYWxpemVkX3Rlc3RfLmNjCisrKyAvZGV2L251bGwK
QEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8g
bWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55b25nIFdhbikKLQotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLVRFU1QoRHVtbXlUZXN0LCBEdW1teSkgewotICAvLyBU
aGlzIHRlc3QgZG9lc24ndCB2ZXJpZnkgYW55dGhpbmcuICBXZSBqdXN0IG5lZWQgaXQgdG8gY3Jl
YXRlIGEKLSAgLy8gcmVhbGlzdGljIHN0YWdlIGZvciB0ZXN0aW5nIHRoZSBiZWhhdmlvciBvZiBH
b29nbGUgVGVzdCB3aGVuCi0gIC8vIFJVTl9BTExfVEVTVFMoKSBpcyBjYWxsZWQgd2l0aG91dCB0
ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgpIGJlaW5nCi0gIC8vIGNhbGxlZCBmaXJzdC4KLX0KLQot
aW50IG1haW4oKSB7Ci0gIHJldHVybiBSVU5fQUxMX1RFU1RTKCk7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC90ZXN0L2d0ZXN0X3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVz
dF91bml0dGVzdC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYyN2I4ODBhNWI5
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF91bml0dGVzdC5jYwor
KysgL2Rldi9udWxsCkBAIC0xLDc3MDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDUsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogd2FuQGdvb2dsZS5jb20gKFpoYW55
b25nIFdhbikKLS8vCi0vLyBUZXN0cyBmb3IgR29vZ2xlIFRlc3QgaXRzZWxmLiAgVGhpcyB2ZXJp
ZmllcyB0aGF0IHRoZSBiYXNpYyBjb25zdHJ1Y3RzIG9mCi0vLyBHb29nbGUgVGVzdCB3b3JrLgot
Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29tbWFu
ZCBsaW5lIGZsYWcgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZAotLy8gaW4gY29kZSBvbmNlIDxn
dGVzdC9ndGVzdC5oPiBoYXMgYmVlbiAjaW5jbHVkZWQuCi0vLyBEbyBub3QgbW92ZSBpdCBhZnRl
ciBvdGhlciAjaW5jbHVkZXMuCi1URVNUKENvbW1hbmRMaW5lRmxhZ3NUZXN0LCBDYW5CZUFjY2Vz
c2VkSW5Db2RlT25jZUdUZXN0SElzSW5jbHVkZWQpIHsKLSAgYm9vbCBkdW1teSA9IHRlc3Rpbmc6
OkdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpCi0gICAgICB8fCB0ZXN0aW5nOjpH
VEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1cmUpCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFH
KGNhdGNoX2V4Y2VwdGlvbnMpCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKGNvbG9yKSAh
PSAidW5rbm93biIKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcoZmlsdGVyKSAhPSAidW5r
bm93biIKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUcobGlzdF90ZXN0cykKLSAgICAgIHx8
IHRlc3Rpbmc6OkdURVNUX0ZMQUcob3V0cHV0KSAhPSAidW5rbm93biIKLSAgICAgIHx8IHRlc3Rp
bmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSkKLSAgICAgIHx8IHRlc3Rpbmc6OkdURVNUX0ZMQUco
cmFuZG9tX3NlZWQpCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHJlcGVhdCkgPiAwCi0g
ICAgICB8fCB0ZXN0aW5nOjpHVEVTVF9GTEFHKHNob3dfaW50ZXJuYWxfc3RhY2tfZnJhbWVzKQot
ICAgICAgfHwgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKQotICAgICAgfHwgdGVzdGluZzo6
R1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPiAwCi0gICAgICB8fCB0ZXN0aW5nOjpHVEVT
VF9GTEFHKHN0cmVhbV9yZXN1bHRfdG8pICE9ICJ1bmtub3duIgotICAgICAgfHwgdGVzdGluZzo6
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKTsKLSAgRVhQRUNUX1RSVUUoZHVtbXkgfHwgIWR1
bW15KTsgIC8vIFN1cHByZXNzZXMgd2FybmluZyB0aGF0IGR1bW15IGlzIHVudXNlZC4KLX0KLQot
I2luY2x1ZGUgPGxpbWl0cy5oPiAgLy8gRm9yIElOVF9NQVguCi0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi0jaW5jbHVkZSA8bWFw
PgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxvc3RyZWFtPgotCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3Qtc3BpLmgiCi0KLS8vIEluZGljYXRlcyB0aGF0IHRoaXMgdHJhbnNsYXRpb24gdW5p
dCBpcyBwYXJ0IG9mIEdvb2dsZSBUZXN0J3MKLS8vIGltcGxlbWVudGF0aW9uLiAgSXQgbXVzdCBj
b21lIGJlZm9yZSBndGVzdC1pbnRlcm5hbC1pbmwuaCBpcwotLy8gaW5jbHVkZWQsIG9yIHRoZXJl
IHdpbGwgYmUgYSBjb21waWxlciBlcnJvci4gIFRoaXMgdHJpY2sgaXMgdG8KLS8vIHByZXZlbnQg
YSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGluY2x1ZGluZyBndGVzdC1pbnRlcm5hbC1pbmwuaCBp
bgotLy8gaGlzIGNvZGUuCi0jZGVmaW5lIEdURVNUX0lNUExFTUVOVEFUSU9OXyAxCi0jaW5jbHVk
ZSAic3JjL2d0ZXN0LWludGVybmFsLWlubC5oIgotI3VuZGVmIEdURVNUX0lNUExFTUVOVEFUSU9O
XwotCi1uYW1lc3BhY2UgdGVzdGluZyB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0jaWYgR1RF
U1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwotCi1jbGFzcyBTdHJlYW1pbmdMaXN0ZW5lclRlc3QgOiBw
dWJsaWMgVGVzdCB7Ci0gcHVibGljOgotICBjbGFzcyBGYWtlU29ja2V0V3JpdGVyIDogcHVibGlj
IFN0cmVhbWluZ0xpc3RlbmVyOjpBYnN0cmFjdFNvY2tldFdyaXRlciB7Ci0gICBwdWJsaWM6Ci0g
ICAgLy8gU2VuZHMgYSBzdHJpbmcgdG8gdGhlIHNvY2tldC4KLSAgICB2aXJ0dWFsIHZvaWQgU2Vu
ZChjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkgeyBvdXRwdXRfICs9IG1lc3NhZ2U7IH0KLQot
ICAgIHN0ZDo6c3RyaW5nIG91dHB1dF87Ci0gIH07Ci0KLSAgU3RyZWFtaW5nTGlzdGVuZXJUZXN0
KCkKLSAgICAgIDogZmFrZV9zb2NrX3dyaXRlcl8obmV3IEZha2VTb2NrZXRXcml0ZXIpLAotICAg
ICAgICBzdHJlYW1lcl8oZmFrZV9zb2NrX3dyaXRlcl8pLAotICAgICAgICB0ZXN0X2luZm9fb2Jq
XygiRm9vVGVzdCIsICJCYXIiLCBOVUxMLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICBD
b2RlTG9jYXRpb24oX19GSUxFX18sIF9fTElORV9fKSwgMCwgTlVMTCkge30KLQotIHByb3RlY3Rl
ZDoKLSAgc3RkOjpzdHJpbmcqIG91dHB1dCgpIHsgcmV0dXJuICYoZmFrZV9zb2NrX3dyaXRlcl8t
Pm91dHB1dF8pOyB9Ci0KLSAgRmFrZVNvY2tldFdyaXRlciogY29uc3QgZmFrZV9zb2NrX3dyaXRl
cl87Ci0gIFN0cmVhbWluZ0xpc3RlbmVyIHN0cmVhbWVyXzsKLSAgVW5pdFRlc3QgdW5pdF90ZXN0
XzsKLSAgVGVzdEluZm8gdGVzdF9pbmZvX29ial87ICAvLyBUaGUgbmFtZSB0ZXN0X2luZm9fIHdh
cyB0YWtlbiBieSB0ZXN0aW5nOjpUZXN0LgotfTsKLQotVEVTVF9GKFN0cmVhbWluZ0xpc3RlbmVy
VGVzdCwgT25UZXN0UHJvZ3JhbUVuZCkgewotICAqb3V0cHV0KCkgPSAiIjsKLSAgc3RyZWFtZXJf
Lk9uVGVzdFByb2dyYW1FbmQodW5pdF90ZXN0Xyk7Ci0gIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFBy
b2dyYW1FbmQmcGFzc2VkPTFcbiIsICpvdXRwdXQoKSk7Ci19Ci0KLVRFU1RfRihTdHJlYW1pbmdM
aXN0ZW5lclRlc3QsIE9uVGVzdEl0ZXJhdGlvbkVuZCkgewotICAqb3V0cHV0KCkgPSAiIjsKLSAg
c3RyZWFtZXJfLk9uVGVzdEl0ZXJhdGlvbkVuZCh1bml0X3Rlc3RfLCA0Mik7Ci0gIEVYUEVDVF9F
USgiZXZlbnQ9VGVzdEl0ZXJhdGlvbkVuZCZwYXNzZWQ9MSZlbGFwc2VkX3RpbWU9MG1zXG4iLCAq
b3V0cHV0KCkpOwotfQotCi1URVNUX0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNl
U3RhcnQpIHsKLSAgKm91dHB1dCgpID0gIiI7Ci0gIHN0cmVhbWVyXy5PblRlc3RDYXNlU3RhcnQo
VGVzdENhc2UoIkZvb1Rlc3QiLCAiQmFyIiwgTlVMTCwgTlVMTCkpOwotICBFWFBFQ1RfRVEoImV2
ZW50PVRlc3RDYXNlU3RhcnQmbmFtZT1Gb29UZXN0XG4iLCAqb3V0cHV0KCkpOwotfQotCi1URVNU
X0YoU3RyZWFtaW5nTGlzdGVuZXJUZXN0LCBPblRlc3RDYXNlRW5kKSB7Ci0gICpvdXRwdXQoKSA9
ICIiOwotICBzdHJlYW1lcl8uT25UZXN0Q2FzZUVuZChUZXN0Q2FzZSgiRm9vVGVzdCIsICJCYXIi
LCBOVUxMLCBOVUxMKSk7Ci0gIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdENhc2VFbmQmcGFzc2VkPTEm
ZWxhcHNlZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKLX0KLQotVEVTVF9GKFN0cmVhbWluZ0xp
c3RlbmVyVGVzdCwgT25UZXN0U3RhcnQpIHsKLSAgKm91dHB1dCgpID0gIiI7Ci0gIHN0cmVhbWVy
Xy5PblRlc3RTdGFydCh0ZXN0X2luZm9fb2JqXyk7Ci0gIEVYUEVDVF9FUSgiZXZlbnQ9VGVzdFN0
YXJ0Jm5hbWU9QmFyXG4iLCAqb3V0cHV0KCkpOwotfQotCi1URVNUX0YoU3RyZWFtaW5nTGlzdGVu
ZXJUZXN0LCBPblRlc3RFbmQpIHsKLSAgKm91dHB1dCgpID0gIiI7Ci0gIHN0cmVhbWVyXy5PblRl
c3RFbmQodGVzdF9pbmZvX29ial8pOwotICBFWFBFQ1RfRVEoImV2ZW50PVRlc3RFbmQmcGFzc2Vk
PTEmZWxhcHNlZF90aW1lPTBtc1xuIiwgKm91dHB1dCgpKTsKLX0KLQotVEVTVF9GKFN0cmVhbWlu
Z0xpc3RlbmVyVGVzdCwgT25UZXN0UGFydFJlc3VsdCkgewotICAqb3V0cHV0KCkgPSAiIjsKLSAg
c3RyZWFtZXJfLk9uVGVzdFBhcnRSZXN1bHQoVGVzdFBhcnRSZXN1bHQoCi0gICAgICBUZXN0UGFy
dFJlc3VsdDo6a0ZhdGFsRmFpbHVyZSwgImZvby5jYyIsIDQyLCAiZmFpbGVkPVxuJiUiKSk7Ci0K
LSAgLy8gTWV0YSBjaGFyYWN0ZXJzIGluIHRoZSBmYWlsdXJlIG1lc3NhZ2Ugc2hvdWxkIGJlIHBy
b3Blcmx5IGVzY2FwZWQuCi0gIEVYUEVDVF9FUSgKLSAgICAgICJldmVudD1UZXN0UGFydFJlc3Vs
dCZmaWxlPWZvby5jYyZsaW5lPTQyJm1lc3NhZ2U9ZmFpbGVkJTNEJTBBJTI2JTI1XG4iLAotICAg
ICAgKm91dHB1dCgpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNf
Ci0KLS8vIFByb3ZpZGVzIGFjY2VzcyB0byBvdGhlcndpc2UgcHJpdmF0ZSBwYXJ0cyBvZiB0aGUg
VGVzdEV2ZW50TGlzdGVuZXJzIGNsYXNzCi0vLyB0aGF0IGFyZSBuZWVkZWQgdG8gdGVzdCBpdC4K
LWNsYXNzIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yIHsKLSBwdWJsaWM6Ci0gIHN0YXRpYyBU
ZXN0RXZlbnRMaXN0ZW5lciogR2V0UmVwZWF0ZXIoVGVzdEV2ZW50TGlzdGVuZXJzKiBsaXN0ZW5l
cnMpIHsKLSAgICByZXR1cm4gbGlzdGVuZXJzLT5yZXBlYXRlcigpOwotICB9Ci0KLSAgc3RhdGlj
IHZvaWQgU2V0RGVmYXVsdFJlc3VsdFByaW50ZXIoVGVzdEV2ZW50TGlzdGVuZXJzKiBsaXN0ZW5l
cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lcikgewotICAgIGxpc3RlbmVycy0+U2V0RGVmYXVsdFJlc3VsdFByaW50ZXIo
bGlzdGVuZXIpOwotICB9Ci0gIHN0YXRpYyB2b2lkIFNldERlZmF1bHRYbWxHZW5lcmF0b3IoVGVz
dEV2ZW50TGlzdGVuZXJzKiBsaXN0ZW5lcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGVzdEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKSB7Ci0gICAgbGlzdGVuZXJzLT5T
ZXREZWZhdWx0WG1sR2VuZXJhdG9yKGxpc3RlbmVyKTsKLSAgfQotCi0gIHN0YXRpYyBib29sIEV2
ZW50Rm9yd2FyZGluZ0VuYWJsZWQoY29uc3QgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMp
IHsKLSAgICByZXR1cm4gbGlzdGVuZXJzLkV2ZW50Rm9yd2FyZGluZ0VuYWJsZWQoKTsKLSAgfQot
Ci0gIHN0YXRpYyB2b2lkIFN1cHByZXNzRXZlbnRGb3J3YXJkaW5nKFRlc3RFdmVudExpc3RlbmVy
cyogbGlzdGVuZXJzKSB7Ci0gICAgbGlzdGVuZXJzLT5TdXBwcmVzc0V2ZW50Rm9yd2FyZGluZygp
OwotICB9Ci19OwotCi1jbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEhlbHBlciA6IHB1
YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0SGVs
cGVyKCkge30KLQotICAvLyBGb3J3YXJkcyB0byBVbml0VGVzdDo6UmVjb3JkUHJvcGVydHkoKSB0
byBieXBhc3MgYWNjZXNzIGNvbnRyb2xzLgotICB2b2lkIFVuaXRUZXN0UmVjb3JkUHJvcGVydHko
Y29uc3QgY2hhcioga2V5LCBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpIHsKLSAgICB1bml0X3Rl
c3RfLlJlY29yZFByb3BlcnR5KGtleSwgdmFsdWUpOwotICB9Ci0KLSAgVW5pdFRlc3QgdW5pdF90
ZXN0XzsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotfSAgLy8gbmFtZXNwYWNlIHRl
c3RpbmcKLQotdXNpbmcgdGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZTsKLXVzaW5nIHRlc3Rpbmc6
OkFzc2VydGlvblJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3M7Ci11c2lu
ZyB0ZXN0aW5nOjpEb3VibGVMRTsKLXVzaW5nIHRlc3Rpbmc6OkVtcHR5VGVzdEV2ZW50TGlzdGVu
ZXI7Ci11c2luZyB0ZXN0aW5nOjpFbnZpcm9ubWVudDsKLXVzaW5nIHRlc3Rpbmc6OkZsb2F0TEU7
Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKTsKLXVz
aW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSk7Ci11c2luZyB0ZXN0aW5n
OjpHVEVTVF9GTEFHKGNhdGNoX2V4Y2VwdGlvbnMpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxB
Ryhjb2xvcik7Ci11c2luZyB0ZXN0aW5nOjpHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2Zvcmsp
OwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhmaWx0ZXIpOwotdXNpbmcgdGVzdGluZzo6R1RF
U1RfRkxBRyhsaXN0X3Rlc3RzKTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcob3V0cHV0KTsK
LXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcocHJpbnRfdGltZSk7Ci11c2luZyB0ZXN0aW5nOjpH
VEVTVF9GTEFHKHJhbmRvbV9zZWVkKTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcocmVwZWF0
KTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcoc2hvd19pbnRlcm5hbF9zdGFja19mcmFtZXMp
OwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhzaHVmZmxlKTsKLXVzaW5nIHRlc3Rpbmc6OkdU
RVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpOwotdXNpbmcgdGVzdGluZzo6R1RFU1RfRkxBRyhz
dHJlYW1fcmVzdWx0X3RvKTsKLXVzaW5nIHRlc3Rpbmc6OkdURVNUX0ZMQUcodGhyb3dfb25fZmFp
bHVyZSk7Ci11c2luZyB0ZXN0aW5nOjpJc05vdFN1YnN0cmluZzsKLXVzaW5nIHRlc3Rpbmc6Oklz
U3Vic3RyaW5nOwotdXNpbmcgdGVzdGluZzo6TWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OlNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOwotdXNpbmcgdGVzdGluZzo6U3RhdGljQXNzZXJ0
VHlwZUVxOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RDYXNlOwot
dXNpbmcgdGVzdGluZzo6VGVzdEV2ZW50TGlzdGVuZXJzOwotdXNpbmcgdGVzdGluZzo6VGVzdElu
Zm87Ci11c2luZyB0ZXN0aW5nOjpUZXN0UGFydFJlc3VsdDsKLXVzaW5nIHRlc3Rpbmc6OlRlc3RQ
YXJ0UmVzdWx0QXJyYXk7Ci11c2luZyB0ZXN0aW5nOjpUZXN0UHJvcGVydHk7Ci11c2luZyB0ZXN0
aW5nOjpUZXN0UmVzdWx0OwotdXNpbmcgdGVzdGluZzo6VGltZUluTWlsbGlzOwotdXNpbmcgdGVz
dGluZzo6VW5pdFRlc3Q7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QWRkUmVmZXJlbmNlOwot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkFsd2F5c0ZhbHNlOwotdXNpbmcgdGVzdGluZzo6aW50
ZXJuYWw6OkFsd2F5c1RydWU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXBwZW5kVXNlck1l
c3NhZ2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlBd2FyZUZpbmQ7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6QXJyYXlFcTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpDb2Rl
UG9pbnRUb1V0Zjg7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29tcGlsZUFzc2VydFR5cGVz
RXF1YWw7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6Q29weUFycmF5OwotdXNpbmcgdGVzdGlu
Zzo6aW50ZXJuYWw6OkNvdW50SWY7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6RXFGYWlsdXJl
OwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ7Ci11c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6Rm9yRWFjaDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRFcG9j
aFRpbWVJbk1pbGxpc0FzSXNvODYwMTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpGb3JtYXRU
aW1lSW5NaWxsaXNBc1NlY29uZHM7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R1Rlc3RGbGFn
U2F2ZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4
Y2VwdFRvcDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpHZXRFbGVtZW50T3I7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6R2V0TmV4dFJhbmRvbVNlZWQ7Ci11c2luZyB0ZXN0aW5nOjppbnRl
cm5hbDo6R2V0UmFuZG9tU2VlZEZyb21GbGFnOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6Okdl
dFRlc3RUeXBlSWQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6R2V0VGltZUluTWlsbGlzOwot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkdldFR5cGVJZDsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpHZXRVbml0VGVzdEltcGw7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6SW1wbGljaXRs
eUNvbnZlcnRpYmxlOwotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OkludDMyRnJvbUVudk9yRGllOwotdXNpbmcgdGVzdGluZzo6aW50ZXJu
YWw6OklzQVByb3RvY29sTWVzc2FnZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0NvbnRh
aW5lcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpJc0NvbnRhaW5lclRlc3Q7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6SXNOb3RDb250YWluZXI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5h
bDo6TmF0aXZlQXJyYXk7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UGFyc2VJbnQzMkZsYWc7
Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZUNvcHk7Ci11c2luZyB0
ZXN0aW5nOjppbnRlcm5hbDo6UmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZTsKLXVzaW5nIHRlc3Rp
bmc6OmludGVybmFsOjpSZW1vdmVDb25zdDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpSZW1v
dmVSZWZlcmVuY2U7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkUnVuVGVzdE9uU2hh
cmQ7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2hvdWxkU2hhcmQ7Ci11c2luZyB0ZXN0aW5n
OjppbnRlcm5hbDo6U2hvdWxkVXNlQ29sb3I7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U2h1
ZmZsZTsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTaHVmZmxlUmFuZ2U7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6U2tpcFByZWZpeDsKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpTdHJl
YW1hYmxlVG9TdHJpbmc7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6U3RyaW5nOwotdXNpbmcg
dGVzdGluZzo6aW50ZXJuYWw6OlRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOwotdXNpbmcgdGVz
dGluZzo6aW50ZXJuYWw6OlRlc3RSZXN1bHRBY2Nlc3NvcjsKLXVzaW5nIHRlc3Rpbmc6OmludGVy
bmFsOjpVSW50MzI7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6V2lkZVN0cmluZ1RvVXRmODsK
LXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjplZGl0X2Rpc3RhbmNlOjpDYWxjdWxhdGVPcHRpbWFs
RWRpdHM7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6Q3JlYXRlVW5p
ZmllZERpZmY7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6ZWRpdF9kaXN0YW5jZTo6RWRpdFR5
cGU7Ci11c2luZyB0ZXN0aW5nOjppbnRlcm5hbDo6a01heFJhbmRvbVNlZWQ7Ci11c2luZyB0ZXN0
aW5nOjppbnRlcm5hbDo6a1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3Q7Ci11c2luZyB0ZXN0aW5nOjpr
TWF4U3RhY2tUcmFjZURlcHRoOwotCi0jaWYgR1RFU1RfSEFTX1NUUkVBTV9SRURJUkVDVElPTgot
dXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkNhcHR1cmVTdGRvdXQ7Ci11c2luZyB0ZXN0aW5nOjpp
bnRlcm5hbDo6R2V0Q2FwdHVyZWRTdGRvdXQ7Ci0jZW5kaWYKLQotI2lmIEdURVNUX0lTX1RIUkVB
RFNBRkUKLXVzaW5nIHRlc3Rpbmc6OmludGVybmFsOjpUaHJlYWRXaXRoUGFyYW07Ci0jZW5kaWYK
LQotY2xhc3MgVGVzdGluZ1ZlY3RvciA6IHB1YmxpYyBzdGQ6OnZlY3RvcjxpbnQ+IHsKLX07Ci0K
LTo6c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KDo6c3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlc3RpbmdWZWN0b3ImIHZlY3RvcikgewotICBvcyA8
PCAieyAiOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rvci5zaXplKCk7IGkrKykgewot
ICAgIG9zIDw8IHZlY3RvcltpXSA8PCAiICI7Ci0gIH0KLSAgb3MgPDwgIn0iOwotICByZXR1cm4g
b3M7Ci19Ci0KLS8vIFRoaXMgbGluZSB0ZXN0cyB0aGF0IHdlIGNhbiBkZWZpbmUgdGVzdHMgaW4g
YW4gdW5uYW1lZCBuYW1lc3BhY2UuCi1uYW1lc3BhY2UgewotCi1URVNUKEdldFJhbmRvbVNlZWRG
cm9tRmxhZ1Rlc3QsIEhhbmRsZXNaZXJvKSB7Ci0gIGNvbnN0IGludCBzZWVkID0gR2V0UmFuZG9t
U2VlZEZyb21GbGFnKDApOwotICBFWFBFQ1RfTEUoMSwgc2VlZCk7Ci0gIEVYUEVDVF9MRShzZWVk
LCBzdGF0aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSk7Ci19Ci0KLVRFU1QoR2V0UmFuZG9t
U2VlZEZyb21GbGFnVGVzdCwgUHJlc2VydmVzVmFsaWRTZWVkKSB7Ci0gIEVYUEVDVF9FUSgxLCBH
ZXRSYW5kb21TZWVkRnJvbUZsYWcoMSkpOwotICBFWFBFQ1RfRVEoMiwgR2V0UmFuZG9tU2VlZEZy
b21GbGFnKDIpKTsKLSAgRVhQRUNUX0VRKGtNYXhSYW5kb21TZWVkIC0gMSwgR2V0UmFuZG9tU2Vl
ZEZyb21GbGFnKGtNYXhSYW5kb21TZWVkIC0gMSkpOwotICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
aW50PihrTWF4UmFuZG9tU2VlZCksCi0gICAgICAgICAgICBHZXRSYW5kb21TZWVkRnJvbUZsYWco
a01heFJhbmRvbVNlZWQpKTsKLX0KLQotVEVTVChHZXRSYW5kb21TZWVkRnJvbUZsYWdUZXN0LCBO
b3JtYWxpemVzSW52YWxpZFNlZWQpIHsKLSAgY29uc3QgaW50IHNlZWQxID0gR2V0UmFuZG9tU2Vl
ZEZyb21GbGFnKC0xKTsKLSAgRVhQRUNUX0xFKDEsIHNlZWQxKTsKLSAgRVhQRUNUX0xFKHNlZWQx
LCBzdGF0aWNfY2FzdDxpbnQ+KGtNYXhSYW5kb21TZWVkKSk7Ci0KLSAgY29uc3QgaW50IHNlZWQy
ID0gR2V0UmFuZG9tU2VlZEZyb21GbGFnKGtNYXhSYW5kb21TZWVkICsgMSk7Ci0gIEVYUEVDVF9M
RSgxLCBzZWVkMik7Ci0gIEVYUEVDVF9MRShzZWVkMiwgc3RhdGljX2Nhc3Q8aW50PihrTWF4UmFu
ZG9tU2VlZCkpOwotfQotCi1URVNUKEdldE5leHRSYW5kb21TZWVkVGVzdCwgV29ya3NGb3JWYWxp
ZElucHV0KSB7Ci0gIEVYUEVDVF9FUSgyLCBHZXROZXh0UmFuZG9tU2VlZCgxKSk7Ci0gIEVYUEVD
VF9FUSgzLCBHZXROZXh0UmFuZG9tU2VlZCgyKSk7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxp
bnQ+KGtNYXhSYW5kb21TZWVkKSwKLSAgICAgICAgICAgIEdldE5leHRSYW5kb21TZWVkKGtNYXhS
YW5kb21TZWVkIC0gMSkpOwotICBFWFBFQ1RfRVEoMSwgR2V0TmV4dFJhbmRvbVNlZWQoa01heFJh
bmRvbVNlZWQpKTsKLQotICAvLyBXZSBkZWxpYmVyYXRlbHkgZG9uJ3QgdGVzdCBHZXROZXh0UmFu
ZG9tU2VlZCgpIHdpdGggaW52YWxpZAotICAvLyBpbnB1dHMsIGFzIHRoYXQgcmVxdWlyZXMgZGVh
dGggdGVzdHMsIHdoaWNoIGFyZSBleHBlbnNpdmUuICBUaGlzCi0gIC8vIGlzIGZpbmUgYXMgR2V0
TmV4dFJhbmRvbVNlZWQoKSBpcyBpbnRlcm5hbCBhbmQgaGFzIGEKLSAgLy8gc3RyYWlnaHRmb3J3
YXJkIGRlZmluaXRpb24uCi19Ci0KLXN0YXRpYyB2b2lkIENsZWFyQ3VycmVudFRlc3RQYXJ0UmVz
dWx0cygpIHsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpDbGVhclRlc3RQYXJ0UmVzdWx0cygKLSAg
ICAgIEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCkpOwotfQotCi0vLyBU
ZXN0cyBHZXRUeXBlSWQuCi0KLVRFU1QoR2V0VHlwZUlkVGVzdCwgUmV0dXJuc1NhbWVWYWx1ZUZv
clNhbWVUeXBlKSB7Ci0gIEVYUEVDVF9FUShHZXRUeXBlSWQ8aW50PigpLCBHZXRUeXBlSWQ8aW50
PigpKTsKLSAgRVhQRUNUX0VRKEdldFR5cGVJZDxUZXN0PigpLCBHZXRUeXBlSWQ8VGVzdD4oKSk7
Ci19Ci0KLWNsYXNzIFN1YkNsYXNzT2ZUZXN0IDogcHVibGljIFRlc3Qge307Ci1jbGFzcyBBbm90
aGVyU3ViQ2xhc3NPZlRlc3QgOiBwdWJsaWMgVGVzdCB7fTsKLQotVEVTVChHZXRUeXBlSWRUZXN0
LCBSZXR1cm5zRGlmZmVyZW50VmFsdWVzRm9yRGlmZmVyZW50VHlwZXMpIHsKLSAgRVhQRUNUX05F
KEdldFR5cGVJZDxpbnQ+KCksIEdldFR5cGVJZDxjb25zdCBpbnQ+KCkpOwotICBFWFBFQ1RfTkUo
R2V0VHlwZUlkPGludD4oKSwgR2V0VHlwZUlkPGNoYXI+KCkpOwotICBFWFBFQ1RfTkUoR2V0VHlw
ZUlkPGludD4oKSwgR2V0VGVzdFR5cGVJZCgpKTsKLSAgRVhQRUNUX05FKEdldFR5cGVJZDxTdWJD
bGFzc09mVGVzdD4oKSwgR2V0VGVzdFR5cGVJZCgpKTsKLSAgRVhQRUNUX05FKEdldFR5cGVJZDxB
bm90aGVyU3ViQ2xhc3NPZlRlc3Q+KCksIEdldFRlc3RUeXBlSWQoKSk7Ci0gIEVYUEVDVF9ORShH
ZXRUeXBlSWQ8QW5vdGhlclN1YkNsYXNzT2ZUZXN0PigpLCBHZXRUeXBlSWQ8U3ViQ2xhc3NPZlRl
c3Q+KCkpOwotfQotCi0vLyBWZXJpZmllcyB0aGF0IEdldFRlc3RUeXBlSWQoKSByZXR1cm5zIHRo
ZSBzYW1lIHZhbHVlLCBubyBtYXR0ZXIgaXQKLS8vIGlzIGNhbGxlZCBmcm9tIGluc2lkZSBHb29n
bGUgVGVzdCBvciBvdXRzaWRlIG9mIGl0LgotVEVTVChHZXRUZXN0VHlwZUlkVGVzdCwgUmV0dXJu
c1RoZVNhbWVWYWx1ZUluc2lkZU9yT3V0c2lkZU9mR29vZ2xlVGVzdCkgewotICBFWFBFQ1RfRVEo
a1Rlc3RUeXBlSWRJbkdvb2dsZVRlc3QsIEdldFRlc3RUeXBlSWQoKSk7Ci19Ci0KLS8vIFRlc3Rz
IEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygpLgotCi1URVNUKEZvcm1hdFRpbWVJbk1pbGxp
c0FzU2Vjb25kc1Rlc3QsIEZvcm1hdHNaZXJvKSB7Ci0gIEVYUEVDVF9FUSgiMCIsIEZvcm1hdFRp
bWVJbk1pbGxpc0FzU2Vjb25kcygwKSk7Ci19Ci0KLVRFU1QoRm9ybWF0VGltZUluTWlsbGlzQXNT
ZWNvbmRzVGVzdCwgRm9ybWF0c1Bvc2l0aXZlTnVtYmVyKSB7Ci0gIEVYUEVDVF9FUSgiMC4wMDMi
LCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMykpOwotICBFWFBFQ1RfRVEoIjAuMDEiLCBG
b3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMTApKTsKLSAgRVhQRUNUX0VRKCIwLjIiLCBGb3Jt
YXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoMjAwKSk7Ci0gIEVYUEVDVF9FUSgiMS4yIiwgRm9ybWF0
VGltZUluTWlsbGlzQXNTZWNvbmRzKDEyMDApKTsKLSAgRVhQRUNUX0VRKCIzIiwgRm9ybWF0VGlt
ZUluTWlsbGlzQXNTZWNvbmRzKDMwMDApKTsKLX0KLQotVEVTVChGb3JtYXRUaW1lSW5NaWxsaXNB
c1NlY29uZHNUZXN0LCBGb3JtYXRzTmVnYXRpdmVOdW1iZXIpIHsKLSAgRVhQRUNUX0VRKCItMC4w
MDMiLCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMpKTsKLSAgRVhQRUNUX0VRKCItMC4w
MSIsIEZvcm1hdFRpbWVJbk1pbGxpc0FzU2Vjb25kcygtMTApKTsKLSAgRVhQRUNUX0VRKCItMC4y
IiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0yMDApKTsKLSAgRVhQRUNUX0VRKCItMS4y
IiwgRm9ybWF0VGltZUluTWlsbGlzQXNTZWNvbmRzKC0xMjAwKSk7Ci0gIEVYUEVDVF9FUSgiLTMi
LCBGb3JtYXRUaW1lSW5NaWxsaXNBc1NlY29uZHMoLTMwMDApKTsKLX0KLQotLy8gVGVzdHMgRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDEoKS4gIFRoZSBjb3JyZWN0bmVzcyBvZiBjb252
ZXJzaW9uCi0vLyBmb3IgcGFydGljdWxhciBkYXRlcyBiZWxvdyB3YXMgdmVyaWZpZWQgaW4gUHl0
aG9uIHVzaW5nCi0vLyBkYXRldGltZS5kYXRldGltZS5mcm9tdXRjdGltZXN0YW1wKDx0aW1ldGFt
cD4vMTAwMCkuCi0KLS8vIEZvcm1hdEVwb2NoVGltZUluTWlsbGlzQXNJc284NjAxIGRlcGVuZHMg
b24gdGhlIGN1cnJlbnQgdGltZXpvbmUsIHNvIHdlCi0vLyBoYXZlIHRvIHNldCB1cCBhIHBhcnRp
Y3VsYXIgdGltZXpvbmUgdG8gb2J0YWluIHByZWRpY3RhYmxlIHJlc3VsdHMuCi1jbGFzcyBGb3Jt
YXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGlj
OgotICAvLyBPbiBDeWd3aW4sIEdDQyBkb2Vzbid0IGFsbG93IHVucXVhbGlmaWVkIGludGVnZXIg
bGl0ZXJhbHMgdG8gZXhjZWVkCi0gIC8vIDMyIGJpdHMsIGV2ZW4gd2hlbiA2NC1iaXQgaW50ZWdl
ciB0eXBlcyBhcmUgYXZhaWxhYmxlLiAgV2UgaGF2ZSB0bwotICAvLyBmb3JjZSB0aGUgY29uc3Rh
bnRzIHRvIGhhdmUgYSA2NC1iaXQgdHlwZSBoZXJlLgotICBzdGF0aWMgY29uc3QgVGltZUluTWls
bGlzIGtNaWxsaXNQZXJTZWMgPSAxMDAwOwotCi0gcHJpdmF0ZToKLSAgdmlydHVhbCB2b2lkIFNl
dFVwKCkgewotICAgIHNhdmVkX3R6XyA9IE5VTEw7Ci0KLSAgICBHVEVTVF9ESVNBQkxFX01TQ19X
QVJOSU5HU19QVVNIXyg0OTk2IC8qIGdldGVudiwgc3RyZHVwOiBkZXByZWNhdGVkICovKQotICAg
IGlmIChnZXRlbnYoIlRaIikpCi0gICAgICBzYXZlZF90el8gPSBzdHJkdXAoZ2V0ZW52KCJUWiIp
KTsKLSAgICBHVEVTVF9ESVNBQkxFX01TQ19XQVJOSU5HU19QT1BfKCkKLQotICAgIC8vIFNldCB1
cCB0aGUgdGltZSB6b25lIGZvciBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSB0byB1
c2UuICBXZQotICAgIC8vIGNhbm5vdCB1c2UgdGhlIGxvY2FsIHRpbWUgem9uZSBiZWNhdXNlIHRo
ZSBmdW5jdGlvbidzIG91dHB1dCBkZXBlbmRzCi0gICAgLy8gb24gdGhlIHRpbWUgem9uZS4KLSAg
ICBTZXRUaW1lWm9uZSgiVVRDKzAwIik7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KSB7Ci0gICAgU2V0VGltZVpvbmUoc2F2ZWRfdHpfKTsKLSAgICBmcmVlKGNvbnN0X2Nhc3Q8Y2hh
cio+KHNhdmVkX3R6XykpOwotICAgIHNhdmVkX3R6XyA9IE5VTEw7Ci0gIH0KLQotICBzdGF0aWMg
dm9pZCBTZXRUaW1lWm9uZShjb25zdCBjaGFyKiB0aW1lX3pvbmUpIHsKLSAgICAvLyB0enNldCgp
IGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiB0aGUgVFogdmFyaWFibGUgYmVpbmcgcHJlc2VudCBhbmQg
ZW1wdHkKLSAgICAvLyBhbmQgbm90IGJlaW5nIHByZXNlbnQsIHNvIHdlIGhhdmUgdG8gY29uc2lk
ZXIgdGhlIGNhc2Ugb2YgdGltZV96b25lCi0gICAgLy8gYmVpbmcgTlVMTC4KLSNpZiBfTVNDX1ZF
UiB8fCBHVEVTVF9PU19XSU5ET1dTX01JTkdXCi0gICAgLy8gLi4uVW5sZXNzIGl0J3MgTVNWQywg
d2hvc2Ugc3RhbmRhcmQgbGlicmFyeSdzIF9wdXRlbnYgZG9lc24ndAotICAgIC8vIGRpc3Rpbmd1
aXNoIGJldHdlZW4gYW4gZW1wdHkgYW5kIGEgbWlzc2luZyB2YXJpYWJsZS4KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyBlbnZfdmFyID0KLSAgICAgICAgc3RkOjpzdHJpbmcoIlRaPSIpICsgKHRpbWVf
em9uZSA/IHRpbWVfem9uZSA6ICIiKTsKLSAgICBfcHV0ZW52KGVudl92YXIuY19zdHIoKSk7Ci0g
ICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1NfUFVTSF8oNDk5NiAvKiBkZXByZWNhdGVkIGZ1
bmN0aW9uICovKQotICAgIHR6c2V0KCk7Ci0gICAgR1RFU1RfRElTQUJMRV9NU0NfV0FSTklOR1Nf
UE9QXygpCi0jZWxzZQotICAgIGlmICh0aW1lX3pvbmUpIHsKLSAgICAgIHNldGVudigoIlRaIiks
IHRpbWVfem9uZSwgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHVuc2V0ZW52KCJUWiIpOwotICAg
IH0KLSAgICB0enNldCgpOwotI2VuZGlmCi0gIH0KLQotICBjb25zdCBjaGFyKiBzYXZlZF90el87
Ci19OwotCi1jb25zdCBUaW1lSW5NaWxsaXMgRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDFUZXN0OjprTWlsbGlzUGVyU2VjOwotCi1URVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNB
c0lzbzg2MDFUZXN0LCBQcmludHNUd29EaWdpdFNlZ21lbnRzKSB7Ci0gIEVYUEVDVF9FUSgiMjAx
MS0xMC0zMVQxODo1Mjo0MiIsCi0gICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0Fz
SXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1BlclNlYykpOwotfQotCi1URVNUX0YoRm9ybWF0
RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBNaWxsaXNlY29uZHNEb05vdEFmZmVjdFJl
c3VsdCkgewotICBFWFBFQ1RfRVEoCi0gICAgICAiMjAxMS0xMC0zMVQxODo1Mjo0MiIsCi0gICAg
ICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgxMzIwMDg3MTYyICoga01pbGxpc1Bl
clNlYyArIDIzNCkpOwotfQotCi1URVNUX0YoRm9ybWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2
MDFUZXN0LCBQcmludHNMZWFkaW5nWmVyb2VzKSB7Ci0gIEVYUEVDVF9FUSgiMjAxMS0wOS0wM1Qw
NTowNzowMiIsCi0gICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxpc0FzSXNvODYwMSgx
MzE1MDI2NDIyICoga01pbGxpc1BlclNlYykpOwotfQotCi1URVNUX0YoRm9ybWF0RXBvY2hUaW1l
SW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHMyNEhvdXJUaW1lKSB7Ci0gIEVYUEVDVF9FUSgi
MjAxMS0wOS0yOFQxNzowODoyMiIsCi0gICAgICAgICAgICBGb3JtYXRFcG9jaFRpbWVJbk1pbGxp
c0FzSXNvODYwMSgxMzE3MjI5NzAyICoga01pbGxpc1BlclNlYykpOwotfQotCi1URVNUX0YoRm9y
bWF0RXBvY2hUaW1lSW5NaWxsaXNBc0lzbzg2MDFUZXN0LCBQcmludHNFcG9jaFN0YXJ0KSB7Ci0g
IEVYUEVDVF9FUSgiMTk3MC0wMS0wMVQwMDowMDowMCIsIEZvcm1hdEVwb2NoVGltZUluTWlsbGlz
QXNJc284NjAxKDApKTsKLX0KLQotI2lmIEdURVNUX0NBTl9DT01QQVJFX05VTEwKLQotIyBpZmRl
ZiBfX0JPUkxBTkRDX18KLS8vIFNpbGVuY2VzIHdhcm5pbmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5
cyB0cnVlIiwgIlVucmVhY2hhYmxlIGNvZGUiCi0jICBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2Nj
IC13LXJjaAotIyBlbmRpZgotCi0vLyBUZXN0cyB0aGF0IEdURVNUX0lTX05VTExfTElURVJBTF8o
eCkgaXMgdHJ1ZSB3aGVuIHggaXMgYSBudWxsCi0vLyBwb2ludGVyIGxpdGVyYWwuCi1URVNUKE51
bGxMaXRlcmFsVGVzdCwgSXNUcnVlRm9yTnVsbExpdGVyYWxzKSB7Ci0gIEVYUEVDVF9UUlVFKEdU
RVNUX0lTX05VTExfTElURVJBTF8oTlVMTCkpOwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxM
X0xJVEVSQUxfKDApKTsKLSAgRVhQRUNUX1RSVUUoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwVSkp
OwotICBFWFBFQ1RfVFJVRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKDBMKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgR1RFU1RfSVNfTlVMTF9MSVRFUkFMXyh4KSBpcyBmYWxzZSB3aGVuIHggaXMgbm90
IGEgbnVsbAotLy8gcG9pbnRlciBsaXRlcmFsLgotVEVTVChOdWxsTGl0ZXJhbFRlc3QsIElzRmFs
c2VGb3JOb25OdWxsTGl0ZXJhbHMpIHsKLSAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElU
RVJBTF8oMSkpOwotICBFWFBFQ1RfRkFMU0UoR1RFU1RfSVNfTlVMTF9MSVRFUkFMXygwLjApKTsK
LSAgRVhQRUNUX0ZBTFNFKEdURVNUX0lTX05VTExfTElURVJBTF8oJ2EnKSk7Ci0gIEVYUEVDVF9G
QUxTRShHVEVTVF9JU19OVUxMX0xJVEVSQUxfKHN0YXRpY19jYXN0PHZvaWQqPihOVUxMKSkpOwot
fQotCi0jIGlmZGVmIF9fQk9STEFORENfXwotLy8gUmVzdG9yZXMgd2FybmluZ3MgYWZ0ZXIgcHJl
dmlvdXMgIiNwcmFnbWEgb3B0aW9uIHB1c2giIHN1cHByZXNzZWQgdGhlbS4KLSMgIHByYWdtYSBv
cHRpb24gcG9wCi0jIGVuZGlmCi0KLSNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAot
Ly8KLS8vIFRlc3RzIENvZGVQb2ludFRvVXRmOCgpLgotCi0vLyBUZXN0cyB0aGF0IHRoZSBOVUwg
Y2hhcmFjdGVyIEwnXDAnIGlzIGVuY29kZWQgY29ycmVjdGx5LgotVEVTVChDb2RlUG9pbnRUb1V0
ZjhUZXN0LCBDYW5FbmNvZGVOdWwpIHsKLSAgRVhQRUNUX0VRKCIiLCBDb2RlUG9pbnRUb1V0Zjgo
TCdcMCcpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVk
IGNvcnJlY3RseS4KLVRFU1QoQ29kZVBvaW50VG9VdGY4VGVzdCwgQ2FuRW5jb2RlQXNjaWkpIHsK
LSAgRVhQRUNUX0VRKCJhIiwgQ29kZVBvaW50VG9VdGY4KEwnYScpKTsKLSAgRVhQRUNUX0VRKCJa
IiwgQ29kZVBvaW50VG9VdGY4KEwnWicpKTsKLSAgRVhQRUNUX0VRKCImIiwgQ29kZVBvaW50VG9V
dGY4KEwnJicpKTsKLSAgRVhQRUNUX0VRKCJceDdGIiwgQ29kZVBvaW50VG9VdGY4KEwnXHg3Ricp
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRv
IDExIGJpdHMgYXJlIGVuY29kZWQKLS8vIGFzIDExMHh4eHh4IDEweHh4eHh4LgotVEVTVChDb2Rl
UG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGU4VG8xMUJpdHMpIHsKLSAgLy8gMDAwIDExMDEgMDAx
MSA9PiAxMTAtMDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9FUSgiXHhDM1x4OTMiLCBDb2RlUG9p
bnRUb1V0ZjgoTCdceEQzJykpOwotCi0gIC8vIDEwMSAwMTExIDAxMTAgPT4gMTEwLTEwMTAxIDEw
LTExMDExMAotICAvLyBTb21lIGNvbXBpbGVycyAoZS5nLiwgR0NDIG9uIE1pbkdXKSBjYW5ub3Qg
aGFuZGxlIG5vbi1BU0NJSSBjb2RlcG9pbnRzCi0gIC8vIGluIHdpZGUgc3RyaW5ncyBhbmQgd2lk
ZSBjaGFycy4gSW4gb3JkZXIgdG8gYWNjb21vZGF0ZSB0aGVtLCB3ZSBoYXZlIHRvCi0gIC8vIGlu
dHJvZHVjZSBzdWNoIGNoYXJhY3RlciBjb25zdGFudHMgYXMgaW50ZWdlcnMuCi0gIEVYUEVDVF9F
USgiXHhENVx4QjYiLAotICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0PHdj
aGFyX3Q+KDB4NTc2KSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IFVuaWNvZGUgY29kZS1wb2ludHMg
dGhhdCBoYXZlIDEyIHRvIDE2IGJpdHMgYXJlIGVuY29kZWQKLS8vIGFzIDExMTB4eHh4IDEweHh4
eHh4IDEweHh4eHh4LgotVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGUxMlRvMTZC
aXRzKSB7Ci0gIC8vIDAwMDAgMTAwMCAxMTAxIDAwMTEgPT4gMTExMC0wMDAwIDEwLTEwMDAxMSAx
MC0wMTAwMTEKLSAgRVhQRUNUX0VRKCJceEUwXHhBM1x4OTMiLAotICAgICAgICAgICAgQ29kZVBv
aW50VG9VdGY4KHN0YXRpY19jYXN0PHdjaGFyX3Q+KDB4OEQzKSkpOwotCi0gIC8vIDExMDAgMDEx
MSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAxMTEwMSAxMC0wMDExMDEKLSAgRVhQRUNUX0VR
KCJceEVDXHg5RFx4OEQiLAotICAgICAgICAgICAgQ29kZVBvaW50VG9VdGY4KHN0YXRpY19jYXN0
PHdjaGFyX3Q+KDB4Qzc0RCkpKTsKLX0KLQotI2lmICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VU
RjE2XwotLy8gVGVzdHMgaW4gdGhpcyBncm91cCByZXF1aXJlIGEgd2NoYXJfdCB0byBob2xkID4g
MTYgYml0cywgYW5kIHRodXMKLS8vIGFyZSBza2lwcGVkIG9uIFdpbmRvd3MsIEN5Z3dpbiwgYW5k
IFN5bWJpYW4sIHdoZXJlIGEgd2NoYXJfdCBpcwotLy8gMTYtYml0IHdpZGUuIFRoaXMgY29kZSBt
YXkgbm90IGNvbXBpbGUgb24gdGhvc2Ugc3lzdGVtcy4KLQotLy8gVGVzdHMgdGhhdCBVbmljb2Rl
IGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSAxNyB0byAyMSBiaXRzIGFyZSBlbmNvZGVkCi0vLyBhcyAx
MTExMHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eC4KLVRFU1QoQ29kZVBvaW50VG9VdGY4
VGVzdCwgQ2FuRW5jb2RlMTdUbzIxQml0cykgewotICAvLyAwIDAwMDEgMDAwMCAxMDAwIDExMDEg
MDAxMSA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEwLTEwMDAxMSAxMC0wMTAwMTEKLSAgRVhQRUNU
X0VRKCJceEYwXHg5MFx4QTNceDkzIiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDhEMycpKTsKLQot
ICAvLyAwIDAwMDEgMDAwMCAwMTAwIDAwMDAgMDAwMCA9PiAxMTExMC0wMDAgMTAtMDEwMDAwIDEw
LTAxMDAwMCAxMC0wMDAwMDAKLSAgRVhQRUNUX0VRKCJceEYwXHg5MFx4OTBceDgwIiwgQ29kZVBv
aW50VG9VdGY4KEwnXHgxMDQwMCcpKTsKLQotICAvLyAxIDAwMDAgMTAwMCAwMTEwIDAwMTEgMDEw
MCA9PiAxMTExMC0xMDAgMTAtMDAxMDAwIDEwLTAxMTAwMCAxMC0xMTAxMDAKLSAgRVhQRUNUX0VR
KCJceEY0XHg4OFx4OThceEI0IiwgQ29kZVBvaW50VG9VdGY4KEwnXHgxMDg2MzQnKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgZW5jb2RpbmcgYW4gaW52YWxpZCBjb2RlLXBvaW50IGdlbmVyYXRlcyB0
aGUgZXhwZWN0ZWQgcmVzdWx0LgotVEVTVChDb2RlUG9pbnRUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJ
bnZhbGlkQ29kZVBvaW50KSB7Ci0gIEVYUEVDVF9FUSgiKEludmFsaWQgVW5pY29kZSAweDEyMzRB
QkNEKSIsIENvZGVQb2ludFRvVXRmOChMJ1x4MTIzNEFCQ0QnKSk7Ci19Ci0KLSNlbmRpZiAgLy8g
IUdURVNUX1dJREVfU1RSSU5HX1VTRVNfVVRGMTZfCi0KLS8vIFRlc3RzIFdpZGVTdHJpbmdUb1V0
ZjgoKS4KLQotLy8gVGVzdHMgdGhhdCB0aGUgTlVMIGNoYXJhY3RlciBMJ1wwJyBpcyBlbmNvZGVk
IGNvcnJlY3RseS4KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZU51bCkgewot
ICBFWFBFQ1RfU1RSRVEoIiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCIiLCAwKS5jX3N0cigpKTsKLSAg
RVhQRUNUX1NUUkVRKCIiLCBXaWRlU3RyaW5nVG9VdGY4KEwiIiwgLTEpLmNfc3RyKCkpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IEFTQ0lJIHN0cmluZ3MgYXJlIGVuY29kZWQgY29ycmVjdGx5LgotVEVT
VChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlQXNjaWkpIHsKLSAgRVhQRUNUX1NUUkVR
KCJhIiwgV2lkZVN0cmluZ1RvVXRmOChMImEiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVR
KCJhYiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJhYiIsIDIpLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RS
RVEoImEiLCBXaWRlU3RyaW5nVG9VdGY4KEwiYSIsIC0xKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJhYiIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJhYiIsIC0xKS5jX3N0cigpKTsKLX0KLQotLy8g
VGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRoYXQgaGF2ZSA4IHRvIDExIGJpdHMgYXJl
IGVuY29kZWQKLS8vIGFzIDExMHh4eHh4IDEweHh4eHh4LgotVEVTVChXaWRlU3RyaW5nVG9VdGY4
VGVzdCwgQ2FuRW5jb2RlOFRvMTFCaXRzKSB7Ci0gIC8vIDAwMCAxMTAxIDAwMTEgPT4gMTEwLTAw
MDExIDEwLTAxMDAxMQotICBFWFBFQ1RfU1RSRVEoIlx4QzNceDkzIiwgV2lkZVN0cmluZ1RvVXRm
OChMIlx4RDMiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEMzXHg5MyIsIFdpZGVT
dHJpbmdUb1V0ZjgoTCJceEQzIiwgLTEpLmNfc3RyKCkpOwotCi0gIC8vIDEwMSAwMTExIDAxMTAg
PT4gMTEwLTEwMTAxIDEwLTExMDExMAotICBjb25zdCB3Y2hhcl90IHNbXSA9IHsgMHg1NzYsICdc
MCcgfTsKLSAgRVhQRUNUX1NUUkVRKCJceEQ1XHhCNiIsIFdpZGVTdHJpbmdUb1V0ZjgocywgMSku
Y19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhENVx4QjYiLCBXaWRlU3RyaW5nVG9VdGY4KHMs
IC0xKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBVbmljb2RlIGNvZGUtcG9pbnRzIHRo
YXQgaGF2ZSAxMiB0byAxNiBiaXRzIGFyZSBlbmNvZGVkCi0vLyBhcyAxMTEweHh4eCAxMHh4eHh4
eCAxMHh4eHh4eC4KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZTEyVG8xNkJp
dHMpIHsKLSAgLy8gMDAwMCAxMDAwIDExMDEgMDAxMSA9PiAxMTEwLTAwMDAgMTAtMTAwMDExIDEw
LTAxMDAxMQotICBjb25zdCB3Y2hhcl90IHMxW10gPSB7IDB4OEQzLCAnXDAnIH07Ci0gIEVYUEVD
VF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgMSkuY19zdHIoKSk7
Ci0gIEVYUEVDVF9TVFJFUSgiXHhFMFx4QTNceDkzIiwgV2lkZVN0cmluZ1RvVXRmOChzMSwgLTEp
LmNfc3RyKCkpOwotCi0gIC8vIDExMDAgMDExMSAwMTAwIDExMDEgPT4gMTExMC0xMTAwIDEwLTAx
MTEwMSAxMC0wMDExMDEKLSAgY29uc3Qgd2NoYXJfdCBzMltdID0geyAweEM3NEQsICdcMCcgfTsK
LSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4KHMyLCAxKS5j
X3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCJceEVDXHg5RFx4OEQiLCBXaWRlU3RyaW5nVG9VdGY4
KHMyLCAtMSkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGNvbnZlcnNpb24gc3Rv
cHMgd2hlbiB0aGUgZnVuY3Rpb24gZW5jb3VudGVycyBcMCBjaGFyYWN0ZXIuCi1URVNUKFdpZGVT
dHJpbmdUb1V0ZjhUZXN0LCBTdG9wc09uTnVsQ2hhcmFjdGVyKSB7Ci0gIEVYUEVDVF9TVFJFUSgi
QUJDIiwgV2lkZVN0cmluZ1RvVXRmOChMIkFCQ1wwWFlaIiwgMTAwKS5jX3N0cigpKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCB0aGUgY29udmVyc2lvbiBzdG9wcyB3aGVuIHRoZSBmdW5jdGlvbiByZWFj
aGVzIHRoZSBsaW1pdAotLy8gc3BlY2lmaWVkIGJ5IHRoZSAnbGVuZ3RoJyBwYXJhbWV0ZXIuCi1U
RVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBTdG9wc1doZW5MZW5ndGhMaW1pdFJlYWNoZWQpIHsK
LSAgRVhQRUNUX1NUUkVRKCJBQkMiLCBXaWRlU3RyaW5nVG9VdGY4KEwiQUJDREVGIiwgMykuY19z
dHIoKSk7Ci19Ci0KLSNpZiAhR1RFU1RfV0lERV9TVFJJTkdfVVNFU19VVEYxNl8KLS8vIFRlc3Rz
IHRoYXQgVW5pY29kZSBjb2RlLXBvaW50cyB0aGF0IGhhdmUgMTcgdG8gMjEgYml0cyBhcmUgZW5j
b2RlZAotLy8gYXMgMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHguIFRoaXMgY29k
ZSBtYXkgbm90IGNvbXBpbGUKLS8vIG9uIHRoZSBzeXN0ZW1zIHVzaW5nIFVURi0xNiBlbmNvZGlu
Zy4KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENhbkVuY29kZTE3VG8yMUJpdHMpIHsKLSAg
Ly8gMCAwMDAxIDAwMDAgMTAwMCAxMTAxIDAwMTEgPT4gMTExMTAtMDAwIDEwLTAxMDAwMCAxMC0x
MDAwMTEgMTAtMDEwMDExCi0gIEVYUEVDVF9TVFJFUSgiXHhGMFx4OTBceEEzXHg5MyIsIFdpZGVT
dHJpbmdUb1V0ZjgoTCJceDEwOEQzIiwgMSkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiXHhG
MFx4OTBceEEzXHg5MyIsIFdpZGVTdHJpbmdUb1V0ZjgoTCJceDEwOEQzIiwgLTEpLmNfc3RyKCkp
OwotCi0gIC8vIDEgMDAwMCAxMDAwIDAxMTAgMDAxMSAwMTAwID0+IDExMTEwLTEwMCAxMC0wMDEw
MDAgMTAtMDExMDAwIDEwLTExMDEwMAotICBFWFBFQ1RfU1RSRVEoIlx4RjRceDg4XHg5OFx4QjQi
LCBXaWRlU3RyaW5nVG9VdGY4KEwiXHgxMDg2MzQiLCAxKS5jX3N0cigpKTsKLSAgRVhQRUNUX1NU
UkVRKCJceEY0XHg4OFx4OThceEI0IiwgV2lkZVN0cmluZ1RvVXRmOChMIlx4MTA4NjM0IiwgLTEp
LmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IGVuY29kaW5nIGFuIGludmFsaWQgY29kZS1w
b2ludCBnZW5lcmF0ZXMgdGhlIGV4cGVjdGVkIHJlc3VsdC4KLVRFU1QoV2lkZVN0cmluZ1RvVXRm
OFRlc3QsIENhbkVuY29kZUludmFsaWRDb2RlUG9pbnQpIHsKLSAgRVhQRUNUX1NUUkVRKCIoSW52
YWxpZCBVbmljb2RlIDB4QUJDREZGKSIsCi0gICAgICAgICAgICAgICBXaWRlU3RyaW5nVG9VdGY4
KEwiXHhBQkNERkYiLCAtMSkuY19zdHIoKSk7Ci19Ci0jZWxzZSAgLy8gIUdURVNUX1dJREVfU1RS
SU5HX1VTRVNfVVRGMTZfCi0vLyBUZXN0cyB0aGF0IHN1cnJvZ2F0ZSBwYWlycyBhcmUgZW5jb2Rl
ZCBjb3JyZWN0bHkgb24gdGhlIHN5c3RlbXMgdXNpbmcKLS8vIFVURi0xNiBlbmNvZGluZyBpbiB0
aGUgd2lkZSBzdHJpbmdzLgotVEVTVChXaWRlU3RyaW5nVG9VdGY4VGVzdCwgQ2FuRW5jb2RlVmFs
aWRVdGYxNlNVcnJvZ2F0ZVBhaXJzKSB7Ci0gIGNvbnN0IHdjaGFyX3Qgc1tdID0geyAweEQ4MDEs
IDB4REMwMCwgJ1wwJyB9OwotICBFWFBFQ1RfU1RSRVEoIlx4RjBceDkwXHg5MFx4ODAiLCBXaWRl
U3RyaW5nVG9VdGY4KHMsIC0xKS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBlbmNvZGlu
ZyBhbiBpbnZhbGlkIFVURi0xNiBzdXJyb2dhdGUgcGFpcgotLy8gZ2VuZXJhdGVzIHRoZSBleHBl
Y3RlZCByZXN1bHQuCi1URVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBDYW5FbmNvZGVJbnZhbGlk
VXRmMTZTdXJyb2dhdGVQYWlyKSB7Ci0gIC8vIExlYWRpbmcgc3Vycm9nYXRlIGlzIGF0IHRoZSBl
bmQgb2YgdGhlIHN0cmluZy4KLSAgY29uc3Qgd2NoYXJfdCBzMVtdID0geyAweEQ4MDAsICdcMCcg
fTsKLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhBMFx4ODAiLCBXaWRlU3RyaW5nVG9VdGY4KHMxLCAt
MSkuY19zdHIoKSk7Ci0gIC8vIExlYWRpbmcgc3Vycm9nYXRlIGlzIG5vdCBmb2xsb3dlZCBieSB0
aGUgdHJhaWxpbmcgc3Vycm9nYXRlLgotICBjb25zdCB3Y2hhcl90IHMyW10gPSB7IDB4RDgwMCwg
J00nLCAnXDAnIH07Ci0gIEVYUEVDVF9TVFJFUSgiXHhFRFx4QTBceDgwTSIsIFdpZGVTdHJpbmdU
b1V0ZjgoczIsIC0xKS5jX3N0cigpKTsKLSAgLy8gVHJhaWxpbmcgc3Vycm9nYXRlIGFwcGVhcmFz
IHdpdGhvdXQgYSBsZWFkaW5nIHN1cnJvZ2F0ZS4KLSAgY29uc3Qgd2NoYXJfdCBzM1tdID0geyAw
eERDMDAsICdQJywgJ1EnLCAnUicsICdcMCcgfTsKLSAgRVhQRUNUX1NUUkVRKCJceEVEXHhCMFx4
ODBQUVIiLCBXaWRlU3RyaW5nVG9VdGY4KHMzLCAtMSkuY19zdHIoKSk7Ci19Ci0jZW5kaWYgIC8v
ICFHVEVTVF9XSURFX1NUUklOR19VU0VTX1VURjE2XwotCi0vLyBUZXN0cyB0aGF0IGNvZGVwb2lu
dCBjb25jYXRlbmF0aW9uIHdvcmtzIGNvcnJlY3RseS4KLSNpZiAhR1RFU1RfV0lERV9TVFJJTkdf
VVNFU19VVEYxNl8KLVRFU1QoV2lkZVN0cmluZ1RvVXRmOFRlc3QsIENvbmNhdGVuYXRlc0NvZGVw
b2ludHNDb3JyZWN0bHkpIHsKLSAgY29uc3Qgd2NoYXJfdCBzW10gPSB7IDB4MTA4NjM0LCAweEM3
NEQsICdcbicsIDB4NTc2LCAweDhEMywgMHgxMDg2MzQsICdcMCd9OwotICBFWFBFQ1RfU1RSRVEo
Ci0gICAgICAiXHhGNFx4ODhceDk4XHhCNCIKLSAgICAgICAgICAiXHhFQ1x4OURceDhEIgotICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAiXHhENVx4QjYiCi0gICAgICAgICAgIlx4RTBceEEzXHg5
MyIKLSAgICAgICAgICAiXHhGNFx4ODhceDk4XHhCNCIsCi0gICAgICBXaWRlU3RyaW5nVG9VdGY4
KHMsIC0xKS5jX3N0cigpKTsKLX0KLSNlbHNlCi1URVNUKFdpZGVTdHJpbmdUb1V0ZjhUZXN0LCBD
b25jYXRlbmF0ZXNDb2RlcG9pbnRzQ29ycmVjdGx5KSB7Ci0gIGNvbnN0IHdjaGFyX3Qgc1tdID0g
eyAweEM3NEQsICdcbicsIDB4NTc2LCAweDhEMywgJ1wwJ307Ci0gIEVYUEVDVF9TVFJFUSgKLSAg
ICAgICJceEVDXHg5RFx4OEQiICJcbiIgIlx4RDVceEI2IiAiXHhFMFx4QTNceDkzIiwKLSAgICAg
IFdpZGVTdHJpbmdUb1V0ZjgocywgLTEpLmNfc3RyKCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1Rf
V0lERV9TVFJJTkdfVVNFU19VVEYxNl8KLQotLy8gVGVzdHMgdGhlIFJhbmRvbSBjbGFzcy4KLQot
VEVTVChSYW5kb21EZWF0aFRlc3QsIEdlbmVyYXRlc0NyYXNoZXNPbkludmFsaWRSYW5nZSkgewot
ICB0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tIHJhbmRvbSg0Mik7Ci0gIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoCi0gICAgICByYW5kb20uR2VuZXJhdGUoMCksCi0gICAgICAiQ2Fubm90IGdl
bmVyYXRlIGEgbnVtYmVyIGluIHRoZSByYW5nZSBcXFswLCAwXFwpIik7Ci0gIEVYUEVDVF9ERUFU
SF9JRl9TVVBQT1JURUQoCi0gICAgICByYW5kb20uR2VuZXJhdGUodGVzdGluZzo6aW50ZXJuYWw6
OlJhbmRvbTo6a01heFJhbmdlICsgMSksCi0gICAgICAiR2VuZXJhdGlvbiBvZiBhIG51bWJlciBp
biBcXFswLCAyMTQ3NDgzNjQ5XFwpIHdhcyByZXF1ZXN0ZWQsICIKLSAgICAgICJidXQgdGhpcyBj
YW4gb25seSBnZW5lcmF0ZSBudW1iZXJzIGluIFxcWzAsIDIxNDc0ODM2NDhcXCkiKTsKLX0KLQot
VEVTVChSYW5kb21UZXN0LCBHZW5lcmF0ZXNOdW1iZXJzV2l0aGluUmFuZ2UpIHsKLSAgY29uc3Qg
VUludDMyIGtSYW5nZSA9IDEwMDAwOwotICB0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tIHJhbmRv
bSgxMjM0NSk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgIEVYUEVDVF9M
VChyYW5kb20uR2VuZXJhdGUoa1JhbmdlKSwga1JhbmdlKSA8PCAiIGZvciBpdGVyYXRpb24gIiA8
PCBpOwotICB9Ci0KLSAgdGVzdGluZzo6aW50ZXJuYWw6OlJhbmRvbSByYW5kb20yKHRlc3Rpbmc6
OmludGVybmFsOjpSYW5kb206OmtNYXhSYW5nZSk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7
IGkrKykgewotICAgIEVYUEVDVF9MVChyYW5kb20yLkdlbmVyYXRlKGtSYW5nZSksIGtSYW5nZSkg
PDwgIiBmb3IgaXRlcmF0aW9uICIgPDwgaTsKLSAgfQotfQotCi1URVNUKFJhbmRvbVRlc3QsIFJl
cGVhdHNXaGVuUmVzZWVkZWQpIHsKLSAgY29uc3QgaW50IGtTZWVkID0gMTIzOwotICBjb25zdCBp
bnQga0FycmF5U2l6ZSA9IDEwOwotICBjb25zdCBVSW50MzIga1JhbmdlID0gMTAwMDA7Ci0gIFVJ
bnQzMiB2YWx1ZXNba0FycmF5U2l6ZV07Ci0KLSAgdGVzdGluZzo6aW50ZXJuYWw6OlJhbmRvbSBy
YW5kb20oa1NlZWQpOwotICBmb3IgKGludCBpID0gMDsgaSA8IGtBcnJheVNpemU7IGkrKykgewot
ICAgIHZhbHVlc1tpXSA9IHJhbmRvbS5HZW5lcmF0ZShrUmFuZ2UpOwotICB9Ci0KLSAgcmFuZG9t
LlJlc2VlZChrU2VlZCk7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga0FycmF5U2l6ZTsgaSsrKSB7
Ci0gICAgRVhQRUNUX0VRKHZhbHVlc1tpXSwgcmFuZG9tLkdlbmVyYXRlKGtSYW5nZSkpIDw8ICIg
Zm9yIGl0ZXJhdGlvbiAiIDw8IGk7Ci0gIH0KLX0KLQotLy8gVGVzdHMgU1RMIGNvbnRhaW5lciB1
dGlsaXRpZXMuCi0KLS8vIFRlc3RzIENvdW50SWYoKS4KLQotc3RhdGljIGJvb2wgSXNQb3NpdGl2
ZShpbnQgbikgeyByZXR1cm4gbiA+IDA7IH0KLQotVEVTVChDb250YWluZXJVdGlsaXR5VGVzdCwg
Q291bnRJZikgewotICBzdGQ6OnZlY3RvcjxpbnQ+IHY7Ci0gIEVYUEVDVF9FUSgwLCBDb3VudElm
KHYsIElzUG9zaXRpdmUpKTsgIC8vIFdvcmtzIGZvciBhbiBlbXB0eSBjb250YWluZXIuCi0KLSAg
di5wdXNoX2JhY2soLTEpOwotICB2LnB1c2hfYmFjaygwKTsKLSAgRVhQRUNUX0VRKDAsIENvdW50
SWYodiwgSXNQb3NpdGl2ZSkpOyAgLy8gV29ya3Mgd2hlbiBubyB2YWx1ZSBzYXRpc2ZpZXMuCi0K
LSAgdi5wdXNoX2JhY2soMik7Ci0gIHYucHVzaF9iYWNrKC0xMCk7Ci0gIHYucHVzaF9iYWNrKDEw
KTsKLSAgRVhQRUNUX0VRKDIsIENvdW50SWYodiwgSXNQb3NpdGl2ZSkpOwotfQotCi0vLyBUZXN0
cyBGb3JFYWNoKCkuCi0KLXN0YXRpYyBpbnQgZ19zdW0gPSAwOwotc3RhdGljIHZvaWQgQWNjdW11
bGF0ZShpbnQgbikgeyBnX3N1bSArPSBuOyB9Ci0KLVRFU1QoQ29udGFpbmVyVXRpbGl0eVRlc3Qs
IEZvckVhY2gpIHsKLSAgc3RkOjp2ZWN0b3I8aW50PiB2OwotICBnX3N1bSA9IDA7Ci0gIEZvckVh
Y2godiwgQWNjdW11bGF0ZSk7Ci0gIEVYUEVDVF9FUSgwLCBnX3N1bSk7ICAvLyBXb3JrcyBmb3Ig
YW4gZW1wdHkgY29udGFpbmVyOwotCi0gIGdfc3VtID0gMDsKLSAgdi5wdXNoX2JhY2soMSk7Ci0g
IEZvckVhY2godiwgQWNjdW11bGF0ZSk7Ci0gIEVYUEVDVF9FUSgxLCBnX3N1bSk7ICAvLyBXb3Jr
cyBmb3IgYSBjb250YWluZXIgd2l0aCBvbmUgZWxlbWVudC4KLQotICBnX3N1bSA9IDA7Ci0gIHYu
cHVzaF9iYWNrKDIwKTsKLSAgdi5wdXNoX2JhY2soMzAwKTsKLSAgRm9yRWFjaCh2LCBBY2N1bXVs
YXRlKTsKLSAgRVhQRUNUX0VRKDMyMSwgZ19zdW0pOwotfQotCi0vLyBUZXN0cyBHZXRFbGVtZW50
T3IoKS4KLVRFU1QoQ29udGFpbmVyVXRpbGl0eVRlc3QsIEdldEVsZW1lbnRPcikgewotICBzdGQ6
OnZlY3RvcjxjaGFyPiBhOwotICBFWFBFQ1RfRVEoJ3gnLCBHZXRFbGVtZW50T3IoYSwgMCwgJ3gn
KSk7Ci0KLSAgYS5wdXNoX2JhY2soJ2EnKTsKLSAgYS5wdXNoX2JhY2soJ2InKTsKLSAgRVhQRUNU
X0VRKCdhJywgR2V0RWxlbWVudE9yKGEsIDAsICd4JykpOwotICBFWFBFQ1RfRVEoJ2InLCBHZXRF
bGVtZW50T3IoYSwgMSwgJ3gnKSk7Ci0gIEVYUEVDVF9FUSgneCcsIEdldEVsZW1lbnRPcihhLCAt
MiwgJ3gnKSk7Ci0gIEVYUEVDVF9FUSgneCcsIEdldEVsZW1lbnRPcihhLCAyLCAneCcpKTsKLX0K
LQotVEVTVChDb250YWluZXJVdGlsaXR5RGVhdGhUZXN0LCBTaHVmZmxlUmFuZ2UpIHsKLSAgc3Rk
Ojp2ZWN0b3I8aW50PiBhOwotICBhLnB1c2hfYmFjaygwKTsKLSAgYS5wdXNoX2JhY2soMSk7Ci0g
IGEucHVzaF9iYWNrKDIpOwotICB0ZXN0aW5nOjppbnRlcm5hbDo6UmFuZG9tIHJhbmRvbSgxKTsK
LQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAgICAgU2h1ZmZsZVJhbmdlKCZyYW5k
b20sIC0xLCAxLCAmYSksCi0gICAgICAiSW52YWxpZCBzaHVmZmxlIHJhbmdlIHN0YXJ0IC0xOiBt
dXN0IGJlIGluIHJhbmdlIFxcWzAsIDNcXF0iKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRF
RCgKLSAgICAgIFNodWZmbGVSYW5nZSgmcmFuZG9tLCA0LCA0LCAmYSksCi0gICAgICAiSW52YWxp
ZCBzaHVmZmxlIHJhbmdlIHN0YXJ0IDQ6IG11c3QgYmUgaW4gcmFuZ2UgXFxbMCwgM1xcXSIpOwot
ICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAotICAgICAgU2h1ZmZsZVJhbmdlKCZyYW5kb20s
IDMsIDIsICZhKSwKLSAgICAgICJJbnZhbGlkIHNodWZmbGUgcmFuZ2UgZmluaXNoIDI6IG11c3Qg
YmUgaW4gcmFuZ2UgXFxbMywgM1xcXSIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKAot
ICAgICAgU2h1ZmZsZVJhbmdlKCZyYW5kb20sIDMsIDQsICZhKSwKLSAgICAgICJJbnZhbGlkIHNo
dWZmbGUgcmFuZ2UgZmluaXNoIDQ6IG11c3QgYmUgaW4gcmFuZ2UgXFxbMywgM1xcXSIpOwotfQot
Ci1jbGFzcyBWZWN0b3JTaHVmZmxlVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0g
IHN0YXRpYyBjb25zdCBpbnQga1ZlY3RvclNpemUgPSAyMDsKLQotICBWZWN0b3JTaHVmZmxlVGVz
dCgpIDogcmFuZG9tXygxKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVmVjdG9yU2l6ZTsg
aSsrKSB7Ci0gICAgICB2ZWN0b3JfLnB1c2hfYmFjayhpKTsKLSAgICB9Ci0gIH0KLQotICBzdGF0
aWMgYm9vbCBWZWN0b3JJc0NvcnJ1cHQoY29uc3QgVGVzdGluZ1ZlY3RvciYgdmVjdG9yKSB7Ci0g
ICAgaWYgKGtWZWN0b3JTaXplICE9IHN0YXRpY19jYXN0PGludD4odmVjdG9yLnNpemUoKSkpIHsK
LSAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgZm91bmRfaW5fdmVjdG9yW2tW
ZWN0b3JTaXplXSA9IHsgZmFsc2UgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZlY3Rv
ci5zaXplKCk7IGkrKykgewotICAgICAgY29uc3QgaW50IGUgPSB2ZWN0b3JbaV07Ci0gICAgICBp
ZiAoZSA8IDAgfHwgZSA+PSBrVmVjdG9yU2l6ZSB8fCBmb3VuZF9pbl92ZWN0b3JbZV0pIHsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBmb3VuZF9pbl92ZWN0b3JbZV0gPSB0
cnVlOwotICAgIH0KLQotICAgIC8vIFZlY3RvciBzaXplIGlzIGNvcnJlY3QsIGVsZW1lbnRzJyBy
YW5nZSBpcyBjb3JyZWN0LCBubwotICAgIC8vIGR1cGxpY2F0ZSBlbGVtZW50cy4gIFRoZXJlZm9y
ZSBubyBjb3JydXB0aW9uIGhhcyBvY2N1cnJlZC4KLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQot
ICBzdGF0aWMgYm9vbCBWZWN0b3JJc05vdENvcnJ1cHQoY29uc3QgVGVzdGluZ1ZlY3RvciYgdmVj
dG9yKSB7Ci0gICAgcmV0dXJuICFWZWN0b3JJc0NvcnJ1cHQodmVjdG9yKTsKLSAgfQotCi0gIHN0
YXRpYyBib29sIFJhbmdlSXNTaHVmZmxlZChjb25zdCBUZXN0aW5nVmVjdG9yJiB2ZWN0b3IsIGlu
dCBiZWdpbiwgaW50IGVuZCkgewotICAgIGZvciAoaW50IGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsr
KSB7Ci0gICAgICBpZiAoaSAhPSB2ZWN0b3JbaV0pIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLSAgfQotCi0gIHN0YXRpYyBib29sIFJh
bmdlSXNVbnNodWZmbGVkKAotICAgICAgY29uc3QgVGVzdGluZ1ZlY3RvciYgdmVjdG9yLCBpbnQg
YmVnaW4sIGludCBlbmQpIHsKLSAgICByZXR1cm4gIVJhbmdlSXNTaHVmZmxlZCh2ZWN0b3IsIGJl
Z2luLCBlbmQpOwotICB9Ci0KLSAgc3RhdGljIGJvb2wgVmVjdG9ySXNTaHVmZmxlZChjb25zdCBU
ZXN0aW5nVmVjdG9yJiB2ZWN0b3IpIHsKLSAgICByZXR1cm4gUmFuZ2VJc1NodWZmbGVkKHZlY3Rv
ciwgMCwgc3RhdGljX2Nhc3Q8aW50Pih2ZWN0b3Iuc2l6ZSgpKSk7Ci0gIH0KLQotICBzdGF0aWMg
Ym9vbCBWZWN0b3JJc1Vuc2h1ZmZsZWQoY29uc3QgVGVzdGluZ1ZlY3RvciYgdmVjdG9yKSB7Ci0g
ICAgcmV0dXJuICFWZWN0b3JJc1NodWZmbGVkKHZlY3Rvcik7Ci0gIH0KLQotICB0ZXN0aW5nOjpp
bnRlcm5hbDo6UmFuZG9tIHJhbmRvbV87Ci0gIFRlc3RpbmdWZWN0b3IgdmVjdG9yXzsKLX07ICAv
LyBjbGFzcyBWZWN0b3JTaHVmZmxlVGVzdAotCi1jb25zdCBpbnQgVmVjdG9yU2h1ZmZsZVRlc3Q6
OmtWZWN0b3JTaXplOwotCi1URVNUX0YoVmVjdG9yU2h1ZmZsZVRlc3QsIEhhbmRsZXNFbXB0eVJh
bmdlKSB7Ci0gIC8vIFRlc3RzIGFuIGVtcHR5IHJhbmdlIGF0IHRoZSBiZWdpbm5pbmcuLi4KLSAg
U2h1ZmZsZVJhbmdlKCZyYW5kb21fLCAwLCAwLCAmdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShW
ZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNo
dWZmbGVkLCB2ZWN0b3JfKTsKLQotICAvLyAuLi5pbiB0aGUgbWlkZGxlLi4uCi0gIFNodWZmbGVS
YW5nZSgmcmFuZG9tXywga1ZlY3RvclNpemUvMiwga1ZlY3RvclNpemUvMiwgJnZlY3Rvcl8pOwot
ICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgQVNTRVJUX1BS
RUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVjdG9yXyk7Ci0KLSAgLy8gLi4uYXQgdGhlIGVuZC4u
LgotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtWZWN0b3JTaXplIC0gMSwga1ZlY3RvclNpemUg
LSAxLCAmdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rv
cl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNVbnNodWZmbGVkLCB2ZWN0b3JfKTsKLQotICAv
LyAuLi5hbmQgcGFzdCB0aGUgZW5kLgotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtWZWN0b3JT
aXplLCBrVmVjdG9yU2l6ZSwgJnZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RD
b3JydXB0LCB2ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVj
dG9yXyk7Ci19Ci0KLVRFU1RfRihWZWN0b3JTaHVmZmxlVGVzdCwgSGFuZGxlc1JhbmdlT2ZTaXpl
T25lKSB7Ci0gIC8vIFRlc3RzIGEgc2l6ZSBvbmUgcmFuZ2UgYXQgdGhlIGJlZ2lubmluZy4uLgot
ICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIDAsIDEsICZ2ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQx
KFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9yXyk7Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc1Vu
c2h1ZmZsZWQsIHZlY3Rvcl8pOwotCi0gIC8vIC4uLmluIHRoZSBtaWRkbGUuLi4KLSAgU2h1ZmZs
ZVJhbmdlKCZyYW5kb21fLCBrVmVjdG9yU2l6ZS8yLCBrVmVjdG9yU2l6ZS8yICsgMSwgJnZlY3Rv
cl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgQVNT
RVJUX1BSRUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVjdG9yXyk7Ci0KLSAgLy8gLi4uYW5kIGF0
IHRoZSBlbmQuCi0gIFNodWZmbGVSYW5nZSgmcmFuZG9tXywga1ZlY3RvclNpemUgLSAxLCBrVmVj
dG9yU2l6ZSwgJnZlY3Rvcl8pOwotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2
ZWN0b3JfKTsKLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzVW5zaHVmZmxlZCwgdmVjdG9yXyk7Ci19
Ci0KLS8vIEJlY2F1c2Ugd2UgdXNlIG91ciBvd24gcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYW5k
IGEgZml4ZWQgc2VlZCwKLS8vIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUgZm9sbG93aW5nICJy
YW5kb20iIHRlc3RzIHdpbGwgc3VjY2VlZC4KLQotVEVTVF9GKFZlY3RvclNodWZmbGVUZXN0LCBT
aHVmZmxlc0VudGlyZVZlY3RvcikgewotICBTaHVmZmxlKCZyYW5kb21fLCAmdmVjdG9yXyk7Ci0g
IEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3Rvcl8pOwotICBFWFBFQ1RfRkFM
U0UoVmVjdG9ySXNVbnNodWZmbGVkKHZlY3Rvcl8pKSA8PCB2ZWN0b3JfOwotCi0gIC8vIFRlc3Rz
IHRoZSBmaXJzdCBhbmQgbGFzdCBlbGVtZW50cyBpbiBwYXJ0aWN1bGFyIHRvIGVuc3VyZSB0aGF0
Ci0gIC8vIHRoZXJlIGFyZSBubyBvZmYtYnktb25lIHByb2JsZW1zIGluIG91ciBzaHVmZmxlIGFs
Z29yaXRobS4KLSAgRVhQRUNUX05FKDAsIHZlY3Rvcl9bMF0pOwotICBFWFBFQ1RfTkUoa1ZlY3Rv
clNpemUgLSAxLCB2ZWN0b3JfW2tWZWN0b3JTaXplIC0gMV0pOwotfQotCi1URVNUX0YoVmVjdG9y
U2h1ZmZsZVRlc3QsIFNodWZmbGVzU3RhcnRPZlZlY3RvcikgewotICBjb25zdCBpbnQga1Jhbmdl
U2l6ZSA9IGtWZWN0b3JTaXplLzI7Ci0KLSAgU2h1ZmZsZVJhbmdlKCZyYW5kb21fLCAwLCBrUmFu
Z2VTaXplLCAmdmVjdG9yXyk7Ci0KLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwg
dmVjdG9yXyk7Ci0gIEVYUEVDVF9QUkVEMyhSYW5nZUlzU2h1ZmZsZWQsIHZlY3Rvcl8sIDAsIGtS
YW5nZVNpemUpOwotICBFWFBFQ1RfUFJFRDMoUmFuZ2VJc1Vuc2h1ZmZsZWQsIHZlY3Rvcl8sIGtS
YW5nZVNpemUsIGtWZWN0b3JTaXplKTsKLX0KLQotVEVTVF9GKFZlY3RvclNodWZmbGVUZXN0LCBT
aHVmZmxlc0VuZE9mVmVjdG9yKSB7Ci0gIGNvbnN0IGludCBrUmFuZ2VTaXplID0ga1ZlY3RvclNp
emUgLyAyOwotICBTaHVmZmxlUmFuZ2UoJnJhbmRvbV8sIGtSYW5nZVNpemUsIGtWZWN0b3JTaXpl
LCAmdmVjdG9yXyk7Ci0KLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9y
Xyk7Ci0gIEVYUEVDVF9QUkVEMyhSYW5nZUlzVW5zaHVmZmxlZCwgdmVjdG9yXywgMCwga1Jhbmdl
U2l6ZSk7Ci0gIEVYUEVDVF9QUkVEMyhSYW5nZUlzU2h1ZmZsZWQsIHZlY3Rvcl8sIGtSYW5nZVNp
emUsIGtWZWN0b3JTaXplKTsKLX0KLQotVEVTVF9GKFZlY3RvclNodWZmbGVUZXN0LCBTaHVmZmxl
c01pZGRsZU9mVmVjdG9yKSB7Ci0gIGludCBrUmFuZ2VTaXplID0ga1ZlY3RvclNpemUvMzsKLSAg
U2h1ZmZsZVJhbmdlKCZyYW5kb21fLCBrUmFuZ2VTaXplLCAyKmtSYW5nZVNpemUsICZ2ZWN0b3Jf
KTsKLQotICBBU1NFUlRfUFJFRDEoVmVjdG9ySXNOb3RDb3JydXB0LCB2ZWN0b3JfKTsKLSAgRVhQ
RUNUX1BSRUQzKFJhbmdlSXNVbnNodWZmbGVkLCB2ZWN0b3JfLCAwLCBrUmFuZ2VTaXplKTsKLSAg
RVhQRUNUX1BSRUQzKFJhbmdlSXNTaHVmZmxlZCwgdmVjdG9yXywga1JhbmdlU2l6ZSwgMiprUmFu
Z2VTaXplKTsKLSAgRVhQRUNUX1BSRUQzKFJhbmdlSXNVbnNodWZmbGVkLCB2ZWN0b3JfLCAyKmtS
YW5nZVNpemUsIGtWZWN0b3JTaXplKTsKLX0KLQotVEVTVF9GKFZlY3RvclNodWZmbGVUZXN0LCBT
aHVmZmxlc1JlcGVhdGFibHkpIHsKLSAgVGVzdGluZ1ZlY3RvciB2ZWN0b3IyOwotICBmb3IgKGlu
dCBpID0gMDsgaSA8IGtWZWN0b3JTaXplOyBpKyspIHsKLSAgICB2ZWN0b3IyLnB1c2hfYmFjayhp
KTsKLSAgfQotCi0gIHJhbmRvbV8uUmVzZWVkKDEyMzQpOwotICBTaHVmZmxlKCZyYW5kb21fLCAm
dmVjdG9yXyk7Ci0gIHJhbmRvbV8uUmVzZWVkKDEyMzQpOwotICBTaHVmZmxlKCZyYW5kb21fLCAm
dmVjdG9yMik7Ci0KLSAgQVNTRVJUX1BSRUQxKFZlY3RvcklzTm90Q29ycnVwdCwgdmVjdG9yXyk7
Ci0gIEFTU0VSVF9QUkVEMShWZWN0b3JJc05vdENvcnJ1cHQsIHZlY3RvcjIpOwotCi0gIGZvciAo
aW50IGkgPSAwOyBpIDwga1ZlY3RvclNpemU7IGkrKykgewotICAgIEVYUEVDVF9FUSh2ZWN0b3Jf
W2ldLCB2ZWN0b3IyW2ldKSA8PCAiIHdoZXJlIGkgaXMgIiA8PCBpOwotICB9Ci19Ci0KLS8vIFRl
c3RzIHRoZSBzaXplIG9mIHRoZSBBc3NlcnRIZWxwZXIgY2xhc3MuCi0KLVRFU1QoQXNzZXJ0SGVs
cGVyVGVzdCwgQXNzZXJ0SGVscGVySXNTbWFsbCkgewotICAvLyBUbyBhdm9pZCBicmVha2luZyBj
bGllbnRzIHRoYXQgdXNlIGxvdHMgb2YgYXNzZXJ0aW9ucyBpbiBvbmUKLSAgLy8gZnVuY3Rpb24s
IHdlIGNhbm5vdCBncm93IHRoZSBzaXplIG9mIEFzc2VydEhlbHBlci4KLSAgRVhQRUNUX0xFKHNp
emVvZih0ZXN0aW5nOjppbnRlcm5hbDo6QXNzZXJ0SGVscGVyKSwgc2l6ZW9mKHZvaWQqKSk7Ci19
Ci0KLS8vIFRlc3RzIFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUoKS4KLVRFU1QoU3Ry
aW5nVGVzdCwgRW5kc1dpdGhDYXNlSW5zZW5zaXRpdmUpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5n
OjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIkJBUiIpKTsKLSAgRVhQRUNUX1RS
VUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFSIiwgImJhciIpKTsKLSAg
RVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiZm9vYmFyIiwgIiIp
KTsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiIiwgIiIp
KTsKLQotICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpFbmRzV2l0aENhc2VJbnNlbnNpdGl2ZSgiRm9v
YmFyIiwgImZvbyIpKTsKLSAgRVhQRUNUX0ZBTFNFKFN0cmluZzo6RW5kc1dpdGhDYXNlSW5zZW5z
aXRpdmUoImZvb2JhciIsICJGb28iKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmc6OkVuZHNXaXRo
Q2FzZUluc2Vuc2l0aXZlKCIiLCAiZm9vIikpOwotfQotCi0vLyBDKytCdWlsZGVyJ3MgcHJlcHJv
Y2Vzc29yIGlzIGJ1Z2d5OyBpdCBmYWlscyB0byBleHBhbmQgbWFjcm9zIHRoYXQKLS8vIGFwcGVh
ciBpbiBtYWNybyBwYXJhbWV0ZXJzIGFmdGVyIHdpZGUgY2hhciBsaXRlcmFscy4gIFByb3ZpZGUg
YW4gYWxpYXMKLS8vIGZvciBOVUxMIGFzIGEgd29ya2Fyb3VuZC4KLXN0YXRpYyBjb25zdCB3Y2hh
cl90KiBjb25zdCBrTnVsbCA9IE5VTEw7Ci0KLS8vIFRlc3RzIFN0cmluZzo6Q2FzZUluc2Vuc2l0
aXZlV2lkZUNTdHJpbmdFcXVhbHMKLVRFU1QoU3RyaW5nVGVzdCwgQ2FzZUluc2Vuc2l0aXZlV2lk
ZUNTdHJpbmdFcXVhbHMpIHsKLSAgRVhQRUNUX1RSVUUoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVX
aWRlQ1N0cmluZ0VxdWFscyhOVUxMLCBOVUxMKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmc6OkNh
c2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5nRXF1YWxzKGtOdWxsLCBMIiIpKTsKLSAgRVhQRUNUX0ZB
TFNFKFN0cmluZzo6Q2FzZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCIiLCBrTnVsbCkp
OwotICBFWFBFQ1RfRkFMU0UoU3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFs
cyhrTnVsbCwgTCJmb29iYXIiKSk7Ci0gIEVYUEVDVF9GQUxTRShTdHJpbmc6OkNhc2VJbnNlbnNp
dGl2ZVdpZGVDU3RyaW5nRXF1YWxzKEwiZm9vYmFyIiwga051bGwpKTsKLSAgRVhQRUNUX1RSVUUo
U3RyaW5nOjpDYXNlSW5zZW5zaXRpdmVXaWRlQ1N0cmluZ0VxdWFscyhMImZvb2JhciIsIEwiZm9v
YmFyIikpOwotICBFWFBFQ1RfVFJVRShTdHJpbmc6OkNhc2VJbnNlbnNpdGl2ZVdpZGVDU3RyaW5n
RXF1YWxzKEwiZm9vYmFyIiwgTCJGT09CQVIiKSk7Ci0gIEVYUEVDVF9UUlVFKFN0cmluZzo6Q2Fz
ZUluc2Vuc2l0aXZlV2lkZUNTdHJpbmdFcXVhbHMoTCJGT09CQVIiLCBMImZvb2JhciIpKTsKLX0K
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLQotLy8gVGVzdHMgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoKS4KLVRFU1QoU3RyaW5nVGVzdCwgU2hvd1dpZGVDU3RyaW5nKSB7Ci0gIEVYUEVDVF9TVFJF
USgiKG51bGwpIiwKLSAgICAgICAgICAgICAgIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKE5VTEwp
LmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIiIsIFN0cmluZzo6U2hvd1dpZGVDU3RyaW5nKEwi
IikuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwgU3RyaW5nOjpTaG93V2lkZUNTdHJp
bmcoTCJmb28iKS5jX3N0cigpKTsKLX0KLQotIyBpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQot
VEVTVChTdHJpbmdUZXN0LCBBbnNpQW5kVXRmMTZOdWxsKSB7Ci0gIEVYUEVDVF9FUShOVUxMLCBT
dHJpbmc6OkFuc2lUb1V0ZjE2KE5VTEwpKTsKLSAgRVhQRUNUX0VRKE5VTEwsIFN0cmluZzo6VXRm
MTZUb0Fuc2koTlVMTCkpOwotfQotCi1URVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYxNkNvbnZl
cnRCYXNpYykgewotICBjb25zdCBjaGFyKiBhbnNpID0gU3RyaW5nOjpVdGYxNlRvQW5zaShMInN0
ciIpOwotICBFWFBFQ1RfU1RSRVEoInN0ciIsIGFuc2kpOwotICBkZWxldGUgW10gYW5zaTsKLSAg
Y29uc3QgV0NIQVIqIHV0ZjE2ID0gU3RyaW5nOjpBbnNpVG9VdGYxNigic3RyIik7Ci0gIEVYUEVD
VF9FUSgwLCB3Y3NuY21wKEwic3RyIiwgdXRmMTYsIDMpKTsKLSAgZGVsZXRlIFtdIHV0ZjE2Owot
fQotCi1URVNUKFN0cmluZ1Rlc3QsIEFuc2lBbmRVdGYxNkNvbnZlcnRQYXRoQ2hhcnMpIHsKLSAg
Y29uc3QgY2hhciogYW5zaSA9IFN0cmluZzo6VXRmMTZUb0Fuc2koTCIuOlxcIFwiKj8iKTsKLSAg
RVhQRUNUX1NUUkVRKCIuOlxcIFwiKj8iLCBhbnNpKTsKLSAgZGVsZXRlIFtdIGFuc2k7Ci0gIGNv
bnN0IFdDSEFSKiB1dGYxNiA9IFN0cmluZzo6QW5zaVRvVXRmMTYoIi46XFwgXCIqPyIpOwotICBF
WFBFQ1RfRVEoMCwgd2NzbmNtcChMIi46XFwgXCIqPyIsIHV0ZjE2LCAzKSk7Ci0gIGRlbGV0ZSBb
XSB1dGYxNjsKLX0KLSMgZW5kaWYgIC8vIEdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLSNlbmRp
ZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBUZXN0cyBUZXN0UHJvcGVydHkgY29uc3RydWN0
aW9uLgotVEVTVChUZXN0UHJvcGVydHlUZXN0LCBTdHJpbmdWYWx1ZSkgewotICBUZXN0UHJvcGVy
dHkgcHJvcGVydHkoImtleSIsICIxIik7Ci0gIEVYUEVDVF9TVFJFUSgia2V5IiwgcHJvcGVydHku
a2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjEiLCBwcm9wZXJ0eS52YWx1ZSgpKTsKLX0KLQotLy8g
VGVzdHMgVGVzdFByb3BlcnR5IHJlcGxhY2luZyBhIHZhbHVlLgotVEVTVChUZXN0UHJvcGVydHlU
ZXN0LCBSZXBsYWNlU3RyaW5nVmFsdWUpIHsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5KCJrZXki
LCAiMSIpOwotICBFWFBFQ1RfU1RSRVEoIjEiLCBwcm9wZXJ0eS52YWx1ZSgpKTsKLSAgcHJvcGVy
dHkuU2V0VmFsdWUoIjIiKTsKLSAgRVhQRUNUX1NUUkVRKCIyIiwgcHJvcGVydHkudmFsdWUoKSk7
Ci19Ci0KLS8vIEFkZEZhdGFsRmFpbHVyZSgpIGFuZCBBZGROb25mYXRhbEZhaWx1cmUoKSBtdXN0
IGJlIHN0YW5kLWFsb25lCi0vLyBmdW5jdGlvbnMgKGkuZS4gdGhlaXIgZGVmaW5pdGlvbnMgY2Fu
bm90IGJlIGlubGluZWQgYXQgdGhlIGNhbGwKLS8vIHNpdGVzKSwgb3IgQysrQnVpbGRlciB3b24n
dCBjb21waWxlIHRoZSBjb2RlLgotc3RhdGljIHZvaWQgQWRkRmF0YWxGYWlsdXJlKCkgewotICBG
QUlMKCkgPDwgIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIjsKLX0KLQotc3RhdGljIHZvaWQgQWRk
Tm9uZmF0YWxGYWlsdXJlKCkgewotICBBRERfRkFJTFVSRSgpIDw8ICJFeHBlY3RlZCBub24tZmF0
YWwgZmFpbHVyZS4iOwotfQotCi1jbGFzcyBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
clRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHVibGljOiAgLy8gTXVzdCBiZSBwdWJsaWMgYW5kIG5v
dCBwcm90ZWN0ZWQgZHVlIHRvIGEgYnVnIGluIGcrKyAzLjQuMi4KLSAgZW51bSBGYWlsdXJlTW9k
ZSB7Ci0gICAgRkFUQUxfRkFJTFVSRSwKLSAgICBOT05GQVRBTF9GQUlMVVJFCi0gIH07Ci0gIHN0
YXRpYyB2b2lkIEFkZEZhaWx1cmUoRmFpbHVyZU1vZGUgZmFpbHVyZSkgewotICAgIGlmIChmYWls
dXJlID09IEZBVEFMX0ZBSUxVUkUpIHsKLSAgICAgIEFkZEZhdGFsRmFpbHVyZSgpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICBBZGROb25mYXRhbEZhaWx1cmUoKTsKLSAgICB9Ci0gIH0KLX07Ci0KLS8v
IFRlc3RzIHRoYXQgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgaW50ZXJjZXB0cyB0
ZXN0Ci0vLyBmYWlsdXJlcy4KLVRFU1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRl
clRlc3QsIEludGVyY2VwdHNUZXN0RmFpbHVyZXMpIHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSBy
ZXN1bHRzOwotICB7Ci0gICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgcmVwb3J0
ZXIoCi0gICAgICAgIFNjb3BlZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyOjpJTlRFUkNFUFRf
T05MWV9DVVJSRU5UX1RIUkVBRCwKLSAgICAgICAgJnJlc3VsdHMpOwotICAgIEFkZEZhaWx1cmUo
Tk9ORkFUQUxfRkFJTFVSRSk7Ci0gICAgQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKTsKLSAgfQot
Ci0gIEVYUEVDVF9FUSgyLCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdHMu
R2V0VGVzdFBhcnRSZXN1bHQoMCkubm9uZmF0YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVF
KHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLVRF
U1RfRihTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QsIERlcHJlY2F0ZWRDb25z
dHJ1Y3RvcikgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3VsdHM7Ci0gIHsKLSAgICAvLyBU
ZXN0cywgdGhhdCB0aGUgZGVwcmVjYXRlZCBjb25zdHJ1Y3RvciBzdGlsbCB3b3Jrcy4KLSAgICBT
Y29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigmcmVzdWx0cyk7Ci0gICAg
QWRkRmFpbHVyZShOT05GQVRBTF9GQUlMVVJFKTsKLSAgfQotICBFWFBFQ1RfRVEoMSwgcmVzdWx0
cy5zaXplKCkpOwotfQotCi0jaWYgR1RFU1RfSVNfVEhSRUFEU0FGRQotCi1jbGFzcyBTY29wZWRG
YWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlcldpdGhUaHJlYWRzVGVzdAotICA6IHB1YmxpYyBTY29w
ZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlclRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGlj
IHZvaWQgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRmFpbHVyZU1vZGUgZmFpbHVyZSkgewotICAg
IFRocmVhZFdpdGhQYXJhbTxGYWlsdXJlTW9kZT4gdGhyZWFkKCZBZGRGYWlsdXJlLCBmYWlsdXJl
LCBOVUxMKTsKLSAgICB0aHJlYWQuSm9pbigpOwotICB9Ci19OwotCi1URVNUX0YoU2NvcGVkRmFr
ZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJXaXRoVGhyZWFkc1Rlc3QsCi0gICAgICAgSW50ZXJjZXB0
c1Rlc3RGYWlsdXJlc0luQWxsVGhyZWFkcykgewotICBUZXN0UGFydFJlc3VsdEFycmF5IHJlc3Vs
dHM7Ci0gIHsKLSAgICBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBvcnRlciByZXBvcnRlcigK
LSAgICAgICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXI6OklOVEVSQ0VQVF9BTExf
VEhSRUFEUywgJnJlc3VsdHMpOwotICAgIEFkZEZhaWx1cmUoTk9ORkFUQUxfRkFJTFVSRSk7Ci0g
ICAgQWRkRmFpbHVyZShGQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVh
ZChOT05GQVRBTF9GQUlMVVJFKTsKLSAgICBBZGRGYWlsdXJlSW5PdGhlclRocmVhZChGQVRBTF9G
QUlMVVJFKTsKLSAgfQotCi0gIEVYUEVDVF9FUSg0LCByZXN1bHRzLnNpemUoKSk7Ci0gIEVYUEVD
VF9UUlVFKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMCkubm9uZmF0YWxseV9mYWlsZWQoKSk7
Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMSkuZmF0YWxseV9mYWls
ZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQoMikubm9uZmF0
YWxseV9mYWlsZWQoKSk7Ci0gIEVYUEVDVF9UUlVFKHJlc3VsdHMuR2V0VGVzdFBhcnRSZXN1bHQo
MykuZmF0YWxseV9mYWlsZWQoKSk7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSVNfVEhSRUFEU0FG
RQotCi0vLyBUZXN0cyBFWFBFQ1RfRkFUQUxfRkFJTFVSRXssT05fQUxMX1RIUkVBRFN9LiAgTWFr
ZXMgc3VyZSB0aGF0IHRoZXkKLS8vIHdvcmsgZXZlbiBpZiB0aGUgZmFpbHVyZSBpcyBnZW5lcmF0
ZWQgaW4gYSBjYWxsZWQgZnVuY3Rpb24gcmF0aGVyIHRoYW4KLS8vIHRoZSBjdXJyZW50IGNvbnRl
eHQuCi0KLXR5cGVkZWYgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXJUZXN0IEV4cGVj
dEZhdGFsRmFpbHVyZVRlc3Q7Ci0KLVRFU1RfRihFeHBlY3RGYXRhbEZhaWx1cmVUZXN0LCBDYXRj
aGVzRmF0YWxGYWxpdXJlKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVy
ZSgpLCAiRXhwZWN0ZWQgZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0hBU19HTE9C
QUxfU1RSSU5HCi1URVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0cmluZ09i
amVjdCkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBZGRGYXRhbEZhaWx1cmUoKSwgOjpzdHJp
bmcoIkV4cGVjdGVkIGZhdGFsIGZhaWx1cmUuIikpOwotfQotI2VuZGlmCi0KLVRFU1RfRihFeHBl
Y3RGYXRhbEZhaWx1cmVUZXN0LCBBY2NlcHRzU3RkU3RyaW5nT2JqZWN0KSB7Ci0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFkZEZhdGFsRmFpbHVyZSgpLAotICAgICAgICAgICAgICAgICAgICAgICA6
OnN0ZDo6c3RyaW5nKCJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpKTsKLX0KLQotVEVTVF9GKEV4
cGVjdEZhdGFsRmFpbHVyZVRlc3QsIENhdGNoZXNGYXRhbEZhaWx1cmVPbkFsbFRocmVhZHMpIHsK
LSAgLy8gV2UgaGF2ZSBhbm90aGVyIHRlc3QgYmVsb3cgdG8gdmVyaWZ5IHRoYXQgdGhlIG1hY3Jv
IGNhdGNoZXMgZmF0YWwKLSAgLy8gZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFub3RoZXIgdGhyZWFk
LgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhBZGRGYXRhbEZhaWx1cmUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhdGFs
IGZhaWx1cmUuIik7Ci19Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFNpbGVuY2VzIHdhcm5p
bmdzOiAiQ29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlIgotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXct
Y2NjCi0jZW5kaWYKLQotLy8gVGVzdHMgdGhhdCBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgpIGNhbiBi
ZSB1c2VkIGluIGEgbm9uLXZvaWQKLS8vIGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgc3RhdGVtZW50
IGluIGl0IGNvbnRhaW5zIEFTU0VSVF8qLgotCi1pbnQgTm9uVm9pZEZ1bmN0aW9uKCkgewotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfVFJVRShmYWxzZSksICIiKTsKLSAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoRkFJTCgpLCAiIik7Ci0gIHJldHVybiAwOwotfQot
Ci1URVNUX0YoRXhwZWN0RmF0YWxGYWlsdXJlVGVzdCwgQ2FuQmVVc2VkSW5Ob25Wb2lkRnVuY3Rp
b24pIHsKLSAgTm9uVm9pZEZ1bmN0aW9uKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoc3RhdGVtZW50LCAuLi4pIGRvZXNuJ3QgYWJvcnQgdGhlCi0vLyBjdXJyZW50
IGZ1bmN0aW9uIGV2ZW4gdGhvdWdoICdzdGF0ZW1lbnQnIGdlbmVyYXRlcyBhIGZhdGFsIGZhaWx1
cmUuCi0KLXZvaWQgRG9lc05vdEFib3J0SGVscGVyKGJvb2wqIGFib3J0ZWQpIHsKLSAgRVhQRUNU
X0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoZmFsc2UpLCAiIik7Ci0gIEVYUEVDVF9GQVRBTF9G
QUlMVVJFX09OX0FMTF9USFJFQURTKEZBSUwoKSwgIiIpOwotCi0gICphYm9ydGVkID0gZmFsc2U7
Ci19Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHBy
ZXZpb3VzICIjcHJhZ21hIG9wdGlvbiBwdXNoIiBzdXBwcmVzc2VkIHRoZW0uCi0jIHByYWdtYSBv
cHRpb24gcG9wCi0jZW5kaWYKLQotVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIERvZXNO
b3RBYm9ydCkgewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBEb2VzTm90QWJvcnRIZWxwZXIo
JmFib3J0ZWQpOwotICBFWFBFQ1RfRkFMU0UoYWJvcnRlZCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
dGhlIEVYUEVDVF9GQVRBTF9GQUlMVVJFeyxfT05fQUxMX1RIUkVBRFN9IGFjY2VwdHMgYQotLy8g
c3RhdGVtZW50IHRoYXQgY29udGFpbnMgYSBtYWNybyB3aGljaCBleHBhbmRzIHRvIGNvZGUgY29u
dGFpbmluZyBhbgotLy8gdW5wcm90ZWN0ZWQgY29tbWEuCi0KLXN0YXRpYyBpbnQgZ2xvYmFsX3Zh
ciA9IDA7Ci0jZGVmaW5lIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV8gZ2xvYmFsX3Zhcisr
LCBnbG9iYWxfdmFyKysKLQotVEVTVF9GKEV4cGVjdEZhdGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNN
YWNyb1RoYXRFeHBhbmRzVG9VbnByb3RlY3RlZENvbW1hKSB7Ci0jaWZuZGVmIF9fQk9STEFORENf
XwotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7Ci0g
ICAgR1RFU1RfVVNFX1VOUFJPVEVDVEVEX0NPTU1BXzsKLSAgICBBZGRGYXRhbEZhaWx1cmUoKTsK
LSAgfSwgIiIpOwotI2VuZGlmCi0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVB
RFMoewotICAgIEdURVNUX1VTRV9VTlBST1RFQ1RFRF9DT01NQV87Ci0gICAgQWRkRmF0YWxGYWls
dXJlKCk7Ci0gIH0sICIiKTsKLX0KLQotLy8gVGVzdHMgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkV7
LE9OX0FMTF9USFJFQURTfS4KLQotdHlwZWRlZiBTY29wZWRGYWtlVGVzdFBhcnRSZXN1bHRSZXBv
cnRlclRlc3QgRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdDsKLQotVEVTVF9GKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIENhdGNoZXNOb25mYXRhbEZhaWx1cmUpIHsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoQWRkTm9uZmF0YWxGYWlsdXJlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotI2lmIEdURVNUX0hBU19H
TE9CQUxfU1RSSU5HCi1URVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQWNjZXB0c1N0
cmluZ09iamVjdCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBZGROb25mYXRhbEZhaWx1
cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOjpzdHJpbmcoIkV4cGVjdGVkIG5vbi1m
YXRhbCBmYWlsdXJlLiIpKTsKLX0KLSNlbmRpZgotCi1URVNUX0YoRXhwZWN0Tm9uZmF0YWxGYWls
dXJlVGVzdCwgQWNjZXB0c1N0ZFN0cmluZ09iamVjdCkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShBZGROb25mYXRhbEZhaWx1cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOjpz
dGQ6OnN0cmluZygiRXhwZWN0ZWQgbm9uLWZhdGFsIGZhaWx1cmUuIikpOwotfQotCi1URVNUX0Yo
RXhwZWN0Tm9uZmF0YWxGYWlsdXJlVGVzdCwgQ2F0Y2hlc05vbmZhdGFsRmFpbHVyZU9uQWxsVGhy
ZWFkcykgewotICAvLyBXZSBoYXZlIGFub3RoZXIgdGVzdCBiZWxvdyB0byB2ZXJpZnkgdGhhdCB0
aGUgbWFjcm8gY2F0Y2hlcwotICAvLyBub24tZmF0YWwgZmFpbHVyZXMgZ2VuZXJhdGVkIG9uIGFu
b3RoZXIgdGhyZWFkLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRV9PTl9BTExfVEhSRUFEUyhB
ZGROb25mYXRhbEZhaWx1cmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkIG5vbi1mYXRhbCBmYWlsdXJlLiIpOwotfQotCi0vLyBUZXN0cyB0aGF0
IHRoZSBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRXssX09OX0FMTF9USFJFQURTfSBhY2NlcHRzIGEK
LS8vIHN0YXRlbWVudCB0aGF0IGNvbnRhaW5zIGEgbWFjcm8gd2hpY2ggZXhwYW5kcyB0byBjb2Rl
IGNvbnRhaW5pbmcgYW4KLS8vIHVucHJvdGVjdGVkIGNvbW1hLgotVEVTVF9GKEV4cGVjdE5vbmZh
dGFsRmFpbHVyZVRlc3QsIEFjY2VwdHNNYWNyb1RoYXRFeHBhbmRzVG9VbnByb3RlY3RlZENvbW1h
KSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsKLSAgICBHVEVTVF9VU0VfVU5QUk9URUNU
RURfQ09NTUFfOwotICAgIEFkZE5vbmZhdGFsRmFpbHVyZSgpOwotICB9LCAiIik7Ci0KLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkVfT05fQUxMX1RIUkVBRFMoewotICAgIEdURVNUX1VTRV9VTlBS
T1RFQ1RFRF9DT01NQV87Ci0gICAgQWRkTm9uZmF0YWxGYWlsdXJlKCk7Ci0gIH0sICIiKTsKLX0K
LQotI2lmIEdURVNUX0lTX1RIUkVBRFNBRkUKLQotdHlwZWRlZiBTY29wZWRGYWtlVGVzdFBhcnRS
ZXN1bHRSZXBvcnRlcldpdGhUaHJlYWRzVGVzdAotICAgIEV4cGVjdEZhaWx1cmVXaXRoVGhyZWFk
c1Rlc3Q7Ci0KLVRFU1RfRihFeHBlY3RGYWlsdXJlV2l0aFRocmVhZHNUZXN0LCBFeHBlY3RGYXRh
bEZhaWx1cmVPbkFsbFRocmVhZHMpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkVfT05fQUxMX1RI
UkVBRFMoQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoRkFUQUxfRkFJTFVSRSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBmYXRhbCBmYWlsdXJlLiIpOwot
fQotCi1URVNUX0YoRXhwZWN0RmFpbHVyZVdpdGhUaHJlYWRzVGVzdCwgRXhwZWN0Tm9uRmF0YWxG
YWlsdXJlT25BbGxUaHJlYWRzKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFX09OX0FMTF9U
SFJFQURTKAotICAgICAgQWRkRmFpbHVyZUluT3RoZXJUaHJlYWQoTk9ORkFUQUxfRkFJTFVSRSks
ICJFeHBlY3RlZCBub24tZmF0YWwgZmFpbHVyZS4iKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9J
U19USFJFQURTQUZFCi0KLS8vIFRlc3RzIHRoZSBUZXN0UHJvcGVydHkgY2xhc3MuCi0KLVRFU1Qo
VGVzdFByb3BlcnR5VGVzdCwgQ29uc3RydWN0b3JXb3JrcykgewotICBjb25zdCBUZXN0UHJvcGVy
dHkgcHJvcGVydHkoImtleSIsICJ2YWx1ZSIpOwotICBFWFBFQ1RfU1RSRVEoImtleSIsIHByb3Bl
cnR5LmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCJ2YWx1ZSIsIHByb3BlcnR5LnZhbHVlKCkpOwot
fQotCi1URVNUKFRlc3RQcm9wZXJ0eVRlc3QsIFNldFZhbHVlKSB7Ci0gIFRlc3RQcm9wZXJ0eSBw
cm9wZXJ0eSgia2V5IiwgInZhbHVlXzEiKTsKLSAgRVhQRUNUX1NUUkVRKCJrZXkiLCBwcm9wZXJ0
eS5rZXkoKSk7Ci0gIHByb3BlcnR5LlNldFZhbHVlKCJ2YWx1ZV8yIik7Ci0gIEVYUEVDVF9TVFJF
USgia2V5IiwgcHJvcGVydHkua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoInZhbHVlXzIiLCBwcm9w
ZXJ0eS52YWx1ZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhlIFRlc3RSZXN1bHQgY2xhc3MKLQotLy8g
VGhlIHRlc3QgZml4dHVyZSBmb3IgdGVzdGluZyBUZXN0UmVzdWx0LgotY2xhc3MgVGVzdFJlc3Vs
dFRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICB0eXBlZGVmIHN0ZDo6dmVjdG9y
PFRlc3RQYXJ0UmVzdWx0PiBUUFJWZWN0b3I7Ci0KLSAgLy8gV2UgbWFrZSB1c2Ugb2YgMiBUZXN0
UGFydFJlc3VsdCBvYmplY3RzLAotICBUZXN0UGFydFJlc3VsdCAqIHByMSwgKiBwcjI7Ci0KLSAg
Ly8gLi4uIGFuZCAzIFRlc3RSZXN1bHQgb2JqZWN0cy4KLSAgVGVzdFJlc3VsdCAqIHIwLCAqIHIx
LCAqIHIyOwotCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBwcjEgaXMgZm9yIHN1
Y2Nlc3MuCi0gICAgcHIxID0gbmV3IFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjprU3Vj
Y2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvby9iYXIuY2MiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlN1Y2Nlc3MhIik7Ci0KLSAgICAvLyBwcjIgaXMgZm9yIGZhdGFsIGZhaWx1cmUuCi0gICAgcHIy
ID0gbmV3IFRlc3RQYXJ0UmVzdWx0KFRlc3RQYXJ0UmVzdWx0OjprRmF0YWxGYWlsdXJlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vL2Jhci5jYyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0xLCAgLy8gVGhpcyBsaW5lIG51bWJlciBtZWFucyAidW5rbm93biIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWx1cmUhIik7Ci0KLSAgICAvLyBDcmVhdGVz
IHRoZSBUZXN0UmVzdWx0IG9iamVjdHMuCi0gICAgcjAgPSBuZXcgVGVzdFJlc3VsdCgpOwotICAg
IHIxID0gbmV3IFRlc3RSZXN1bHQoKTsKLSAgICByMiA9IG5ldyBUZXN0UmVzdWx0KCk7Ci0KLSAg
ICAvLyBJbiBvcmRlciB0byB0ZXN0IFRlc3RSZXN1bHQsIHdlIG5lZWQgdG8gbW9kaWZ5IGl0cyBp
bnRlcm5hbAotICAgIC8vIHN0YXRlLCBpbiBwYXJ0aWN1bGFyIHRoZSBUZXN0UGFydFJlc3VsdCB2
ZWN0b3IgaXQgaG9sZHMuCi0gICAgLy8gdGVzdF9wYXJ0X3Jlc3VsdHMoKSByZXR1cm5zIGEgY29u
c3QgcmVmZXJlbmNlIHRvIHRoaXMgdmVjdG9yLgotICAgIC8vIFdlIGNhc3QgaXQgdG8gYSBub24t
Y29uc3Qgb2JqZWN0IHMudC4gaXQgY2FuIGJlIG1vZGlmaWVkICh5ZXMsCi0gICAgLy8gdGhpcyBp
cyBhIGhhY2spLgotICAgIFRQUlZlY3RvciogcmVzdWx0czEgPSBjb25zdF9jYXN0PFRQUlZlY3Rv
cio+KAotICAgICAgICAmVGVzdFJlc3VsdEFjY2Vzc29yOjp0ZXN0X3BhcnRfcmVzdWx0cygqcjEp
KTsKLSAgICBUUFJWZWN0b3IqIHJlc3VsdHMyID0gY29uc3RfY2FzdDxUUFJWZWN0b3IqPigKLSAg
ICAgICAgJlRlc3RSZXN1bHRBY2Nlc3Nvcjo6dGVzdF9wYXJ0X3Jlc3VsdHMoKnIyKSk7Ci0KLSAg
ICAvLyByMCBpcyBhbiBlbXB0eSBUZXN0UmVzdWx0LgotCi0gICAgLy8gcjEgY29udGFpbnMgYSBz
aW5nbGUgU1VDQ0VTUyBUZXN0UGFydFJlc3VsdC4KLSAgICByZXN1bHRzMS0+cHVzaF9iYWNrKCpw
cjEpOwotCi0gICAgLy8gcjIgY29udGFpbnMgYSBTVUNDRVNTLCBhbmQgYSBGQUlMVVJFLgotICAg
IHJlc3VsdHMyLT5wdXNoX2JhY2soKnByMSk7Ci0gICAgcmVzdWx0czItPnB1c2hfYmFjaygqcHIy
KTsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBkZWxldGUgcHIxOwot
ICAgIGRlbGV0ZSBwcjI7Ci0KLSAgICBkZWxldGUgcjA7Ci0gICAgZGVsZXRlIHIxOwotICAgIGRl
bGV0ZSByMjsKLSAgfQotCi0gIC8vIEhlbHBlciB0aGF0IGNvbXBhcmVzIHR3byB0d28gVGVzdFBh
cnRSZXN1bHRzLgotICBzdGF0aWMgdm9pZCBDb21wYXJlVGVzdFBhcnRSZXN1bHQoY29uc3QgVGVz
dFBhcnRSZXN1bHQmIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVGVzdFBhcnRSZXN1bHQmIGFjdHVhbCkgewotICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC50eXBlKCksIGFjdHVhbC50eXBlKCkpOwotICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC5maWxl
X25hbWUoKSwgYWN0dWFsLmZpbGVfbmFtZSgpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQubGlu
ZV9udW1iZXIoKSwgYWN0dWFsLmxpbmVfbnVtYmVyKCkpOwotICAgIEVYUEVDVF9TVFJFUShleHBl
Y3RlZC5zdW1tYXJ5KCksIGFjdHVhbC5zdW1tYXJ5KCkpOwotICAgIEVYUEVDVF9TVFJFUShleHBl
Y3RlZC5tZXNzYWdlKCksIGFjdHVhbC5tZXNzYWdlKCkpOwotICAgIEVYUEVDVF9FUShleHBlY3Rl
ZC5wYXNzZWQoKSwgYWN0dWFsLnBhc3NlZCgpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuZmFp
bGVkKCksIGFjdHVhbC5mYWlsZWQoKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLm5vbmZhdGFs
bHlfZmFpbGVkKCksIGFjdHVhbC5ub25mYXRhbGx5X2ZhaWxlZCgpKTsKLSAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWQuZmF0YWxseV9mYWlsZWQoKSwgYWN0dWFsLmZhdGFsbHlfZmFpbGVkKCkpOwotICB9
Ci19OwotCi0vLyBUZXN0cyBUZXN0UmVzdWx0Ojp0b3RhbF9wYXJ0X2NvdW50KCkuCi1URVNUX0Yo
VGVzdFJlc3VsdFRlc3QsIHRvdGFsX3BhcnRfY291bnQpIHsKLSAgQVNTRVJUX0VRKDAsIHIwLT50
b3RhbF9wYXJ0X2NvdW50KCkpOwotICBBU1NFUlRfRVEoMSwgcjEtPnRvdGFsX3BhcnRfY291bnQo
KSk7Ci0gIEFTU0VSVF9FUSgyLCByMi0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotLy8gVGVz
dHMgVGVzdFJlc3VsdDo6UGFzc2VkKCkuCi1URVNUX0YoVGVzdFJlc3VsdFRlc3QsIFBhc3NlZCkg
ewotICBBU1NFUlRfVFJVRShyMC0+UGFzc2VkKCkpOwotICBBU1NFUlRfVFJVRShyMS0+UGFzc2Vk
KCkpOwotICBBU1NFUlRfRkFMU0UocjItPlBhc3NlZCgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFJl
c3VsdDo6RmFpbGVkKCkuCi1URVNUX0YoVGVzdFJlc3VsdFRlc3QsIEZhaWxlZCkgewotICBBU1NF
UlRfRkFMU0UocjAtPkZhaWxlZCgpKTsKLSAgQVNTRVJUX0ZBTFNFKHIxLT5GYWlsZWQoKSk7Ci0g
IEFTU0VSVF9UUlVFKHIyLT5GYWlsZWQoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQ6Okdl
dFRlc3RQYXJ0UmVzdWx0KCkuCi0KLXR5cGVkZWYgVGVzdFJlc3VsdFRlc3QgVGVzdFJlc3VsdERl
YXRoVGVzdDsKLQotVEVTVF9GKFRlc3RSZXN1bHREZWF0aFRlc3QsIEdldFRlc3RQYXJ0UmVzdWx0
KSB7Ci0gIENvbXBhcmVUZXN0UGFydFJlc3VsdCgqcHIxLCByMi0+R2V0VGVzdFBhcnRSZXN1bHQo
MCkpOwotICBDb21wYXJlVGVzdFBhcnRSZXN1bHQoKnByMiwgcjItPkdldFRlc3RQYXJ0UmVzdWx0
KDEpKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyMi0+R2V0VGVzdFBhcnRSZXN1bHQo
MiksICIiKTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChyMi0+R2V0VGVzdFBhcnRSZXN1
bHQoLTEpLCAiIik7Ci19Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQgaGFzIG5vIHByb3BlcnRpZXMg
d2hlbiBub25lIGFyZSBhZGRlZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgTm9Qcm9w
ZXJ0aWVzRm91bmRXaGVuTm9uZUFyZUFkZGVkKSB7Ci0gIFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7
Ci0gIEFTU0VSVF9FUSgwLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50KCkpOwotfQot
Ci0vLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyB0aGUgZXhwZWN0ZWQgcHJvcGVydHkgd2hlbiBhZGRl
ZC4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgT25lUHJvcGVydHlGb3VuZFdoZW5BZGRl
ZCkgewotICBUZXN0UmVzdWx0IHRlc3RfcmVzdWx0OwotICBUZXN0UHJvcGVydHkgcHJvcGVydHko
ImtleV8xIiwgIjEiKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVz
dF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5KTsKLSAgQVNTRVJUX0VRKDEsIHRlc3RfcmVz
dWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0gIGNvbnN0IFRlc3RQcm9wZXJ0eSYgYWN0dWFs
X3Byb3BlcnR5ID0gdGVzdF9yZXN1bHQuR2V0VGVzdFByb3BlcnR5KDApOwotICBFWFBFQ1RfU1RS
RVEoImtleV8xIiwgYWN0dWFsX3Byb3BlcnR5LmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIxIiwg
YWN0dWFsX3Byb3BlcnR5LnZhbHVlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UmVzdWx0IGhhcyBt
dWx0aXBsZSBwcm9wZXJ0aWVzIHdoZW4gYWRkZWQuCi1URVNUKFRlc3RSZXN1bHRQcm9wZXJ0eVRl
c3QsIE11bHRpcGxlUHJvcGVydGllc0ZvdW5kV2hlbkFkZGVkKSB7Ci0gIFRlc3RSZXN1bHQgdGVz
dF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xKCJrZXlfMSIsICIxIik7Ci0gIFRl
c3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlfMiIsICIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsK
LSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzIpOwotICBBU1NFUlRfRVEoMiwgdGVzdF9yZXN1bHQudGVzdF9wcm9w
ZXJ0eV9jb3VudCgpKTsKLSAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHlfMSA9
IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgwKTsKLSAgRVhQRUNUX1NUUkVRKCJrZXlfMSIs
IGFjdHVhbF9wcm9wZXJ0eV8xLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIxIiwgYWN0dWFsX3By
b3BlcnR5XzEudmFsdWUoKSk7Ci0KLSAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVy
dHlfMiA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgxKTsKLSAgRVhQRUNUX1NUUkVRKCJr
ZXlfMiIsIGFjdHVhbF9wcm9wZXJ0eV8yLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIyIiwgYWN0
dWFsX3Byb3BlcnR5XzIudmFsdWUoKSk7Ci19Ci0KLS8vIFRlc3RzIFRlc3RSZXN1bHQ6OlJlY29y
ZFByb3BlcnR5KCkgb3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVwbGljYXRlIGtleXMuCi1URVNUKFRl
c3RSZXN1bHRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRlc1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsK
LSAgVGVzdFJlc3VsdCB0ZXN0X3Jlc3VsdDsKLSAgVGVzdFByb3BlcnR5IHByb3BlcnR5XzFfMSgi
a2V5XzEiLCAiMSIpOwotICBUZXN0UHJvcGVydHkgcHJvcGVydHlfMl8xKCJrZXlfMiIsICIyIik7
Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xXzIoImtleV8xIiwgIjEyIik7Ci0gIFRlc3RQcm9w
ZXJ0eSBwcm9wZXJ0eV8yXzIoImtleV8yIiwgIjIyIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nvcjo6
UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xXzEpOwot
ICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5KCZ0ZXN0X3Jlc3VsdCwgInRlc3Rj
YXNlIiwgcHJvcGVydHlfMl8xKTsKLSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0
eSgmdGVzdF9yZXN1bHQsICJ0ZXN0Y2FzZSIsIHByb3BlcnR5XzFfMik7Ci0gIFRlc3RSZXN1bHRB
Y2Nlc3Nvcjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0
eV8yXzIpOwotCi0gIEFTU0VSVF9FUSgyLCB0ZXN0X3Jlc3VsdC50ZXN0X3Byb3BlcnR5X2NvdW50
KCkpOwotICBjb25zdCBUZXN0UHJvcGVydHkmIGFjdHVhbF9wcm9wZXJ0eV8xID0gdGVzdF9yZXN1
bHQuR2V0VGVzdFByb3BlcnR5KDApOwotICBFWFBFQ1RfU1RSRVEoImtleV8xIiwgYWN0dWFsX3By
b3BlcnR5XzEua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjEyIiwgYWN0dWFsX3Byb3BlcnR5XzEu
dmFsdWUoKSk7Ci0KLSAgY29uc3QgVGVzdFByb3BlcnR5JiBhY3R1YWxfcHJvcGVydHlfMiA9IHRl
c3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgxKTsKLSAgRVhQRUNUX1NUUkVRKCJrZXlfMiIsIGFj
dHVhbF9wcm9wZXJ0eV8yLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIyMiIsIGFjdHVhbF9wcm9w
ZXJ0eV8yLnZhbHVlKCkpOwotfQotCi0vLyBUZXN0cyBUZXN0UmVzdWx0OjpHZXRUZXN0UHJvcGVy
dHkoKS4KLVRFU1QoVGVzdFJlc3VsdFByb3BlcnR5VGVzdCwgR2V0VGVzdFByb3BlcnR5KSB7Ci0g
IFRlc3RSZXN1bHQgdGVzdF9yZXN1bHQ7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8xKCJrZXlf
MSIsICIxIik7Ci0gIFRlc3RQcm9wZXJ0eSBwcm9wZXJ0eV8yKCJrZXlfMiIsICIyIik7Ci0gIFRl
c3RQcm9wZXJ0eSBwcm9wZXJ0eV8zKCJrZXlfMyIsICIzIik7Ci0gIFRlc3RSZXN1bHRBY2Nlc3Nv
cjo6UmVjb3JkUHJvcGVydHkoJnRlc3RfcmVzdWx0LCAidGVzdGNhc2UiLCBwcm9wZXJ0eV8xKTsK
LSAgVGVzdFJlc3VsdEFjY2Vzc29yOjpSZWNvcmRQcm9wZXJ0eSgmdGVzdF9yZXN1bHQsICJ0ZXN0
Y2FzZSIsIHByb3BlcnR5XzIpOwotICBUZXN0UmVzdWx0QWNjZXNzb3I6OlJlY29yZFByb3BlcnR5
KCZ0ZXN0X3Jlc3VsdCwgInRlc3RjYXNlIiwgcHJvcGVydHlfMyk7Ci0KLSAgY29uc3QgVGVzdFBy
b3BlcnR5JiBmZXRjaGVkX3Byb3BlcnR5XzEgPSB0ZXN0X3Jlc3VsdC5HZXRUZXN0UHJvcGVydHko
MCk7Ci0gIGNvbnN0IFRlc3RQcm9wZXJ0eSYgZmV0Y2hlZF9wcm9wZXJ0eV8yID0gdGVzdF9yZXN1
bHQuR2V0VGVzdFByb3BlcnR5KDEpOwotICBjb25zdCBUZXN0UHJvcGVydHkmIGZldGNoZWRfcHJv
cGVydHlfMyA9IHRlc3RfcmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgyKTsKLQotICBFWFBFQ1RfU1RS
RVEoImtleV8xIiwgZmV0Y2hlZF9wcm9wZXJ0eV8xLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIx
IiwgZmV0Y2hlZF9wcm9wZXJ0eV8xLnZhbHVlKCkpOwotCi0gIEVYUEVDVF9TVFJFUSgia2V5XzIi
LCBmZXRjaGVkX3Byb3BlcnR5XzIua2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjIiLCBmZXRjaGVk
X3Byb3BlcnR5XzIudmFsdWUoKSk7Ci0KLSAgRVhQRUNUX1NUUkVRKCJrZXlfMyIsIGZldGNoZWRf
cHJvcGVydHlfMy5rZXkoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMyIsIGZldGNoZWRfcHJvcGVydHlf
My52YWx1ZSgpKTsKLQotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHRlc3RfcmVzdWx0Lkdl
dFRlc3RQcm9wZXJ0eSgzKSwgIiIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKHRlc3Rf
cmVzdWx0LkdldFRlc3RQcm9wZXJ0eSgtMSksICIiKTsKLX0KLQotLy8gVGVzdHMgdGhlIFRlc3Qg
Y2xhc3MuCi0vLwotLy8gSXQncyBkaWZmaWN1bHQgdG8gdGVzdCBldmVyeSBwdWJsaWMgbWV0aG9k
IG9mIHRoaXMgY2xhc3MgKHdlIGFyZQotLy8gYWxyZWFkeSBzdHJldGNoaW5nIHRoZSBsaW1pdCBv
ZiBHb29nbGUgVGVzdCBieSB1c2luZyBpdCB0byB0ZXN0IGl0c2VsZiEpLgotLy8gRm9ydHVuYXRl
bHksIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhhdCwgYXMgd2UgYXJlIGFscmVhZHkgdGVzdGluZwot
Ly8gdGhlIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgVGVzdCBjbGFzcyBleHRlbnNpdmVseSBieSB1
c2luZyBHb29nbGUgVGVzdAotLy8gYWxvbmUuCi0vLwotLy8gVGhlcmVmb3JlLCB0aGlzIHNlY3Rp
b24gb25seSBjb250YWlucyBvbmUgdGVzdC4KLQotLy8gVGVzdHMgdGhhdCBHVGVzdEZsYWdTYXZl
ciB3b3JrcyBvbiBXaW5kb3dzIGFuZCBNYWMuCi0KLWNsYXNzIEdUZXN0RmxhZ1NhdmVyVGVzdCA6
IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIC8vIFNhdmVzIHRoZSBHb29nbGUgVGVzdCBm
bGFncyBzdWNoIHRoYXQgd2UgY2FuIHJlc3RvcmUgdGhlbSBsYXRlciwgYW5kCi0gIC8vIHRoZW4g
c2V0cyB0aGVtIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLiAgVGhpcyB3aWxsIGJlIGNhbGxlZAot
ICAvLyBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UgaXMgcnVuLgotICBz
dGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewotICAgIHNhdmVyXyA9IG5ldyBHVGVzdEZsYWdT
YXZlcjsKLQotICAgIEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpID0gZmFsc2U7
Ci0gICAgR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSA9IGZhbHNlOwotICAgIEdURVNUX0ZM
QUcoY2F0Y2hfZXhjZXB0aW9ucykgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3Rf
dXNlX2ZvcmspID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhjb2xvcikgPSAiYXV0byI7Ci0gICAg
R1RFU1RfRkxBRyhmaWx0ZXIpID0gIiI7Ci0gICAgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSA9IGZh
bHNlOwotICAgIEdURVNUX0ZMQUcob3V0cHV0KSA9ICIiOwotICAgIEdURVNUX0ZMQUcocHJpbnRf
dGltZSkgPSB0cnVlOwotICAgIEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpID0gMDsKLSAgICBHVEVT
VF9GTEFHKHJlcGVhdCkgPSAxOwotICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSBmYWxzZTsKLSAg
ICBHVEVTVF9GTEFHKHN0YWNrX3RyYWNlX2RlcHRoKSA9IGtNYXhTdGFja1RyYWNlRGVwdGg7Ci0g
ICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0X3RvKSA9ICIiOwotICAgIEdURVNUX0ZMQUcodGhy
b3dfb25fZmFpbHVyZSkgPSBmYWxzZTsKLSAgfQotCi0gIC8vIFJlc3RvcmVzIHRoZSBHb29nbGUg
VGVzdCBmbGFncyB0aGF0IHRoZSB0ZXN0cyBoYXZlIG1vZGlmaWVkLiAgVGhpcyB3aWxsCi0gIC8v
IGJlIGNhbGxlZCBhZnRlciB0aGUgbGFzdCB0ZXN0IGluIHRoaXMgdGVzdCBjYXNlIGlzIHJ1bi4K
LSAgc3RhdGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBkZWxldGUgc2F2ZXJfOwot
ICAgIHNhdmVyXyA9IE5VTEw7Ci0gIH0KLQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBHb29nbGUg
VGVzdCBmbGFncyBoYXZlIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlbgotICAvLyBtb2Rp
ZmllcyBlYWNoIG9mIHRoZW0uCi0gIHZvaWQgVmVyaWZ5QW5kTW9kaWZ5RmxhZ3MoKSB7Ci0gICAg
RVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcoYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhicmVha19vbl9mYWlsdXJlKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKEdURVNUX0ZMQUcoY2F0Y2hfZXhjZXB0aW9ucykpOwotICAgIEVYUEVDVF9TVFJFUSgiYXV0
byIsIEdURVNUX0ZMQUcoY29sb3IpLmNfc3RyKCkpOwotICAgIEVYUEVDVF9GQUxTRShHVEVTVF9G
TEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIEdURVNUX0ZM
QUcoZmlsdGVyKS5jX3N0cigpKTsKLSAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhsaXN0X3Rl
c3RzKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCIiLCBHVEVTVF9GTEFHKG91dHB1dCkuY19zdHIoKSk7
Ci0gICAgRVhQRUNUX1RSVUUoR1RFU1RfRkxBRyhwcmludF90aW1lKSk7Ci0gICAgRVhQRUNUX0VR
KDAsIEdURVNUX0ZMQUcocmFuZG9tX3NlZWQpKTsKLSAgICBFWFBFQ1RfRVEoMSwgR1RFU1RfRkxB
RyhyZXBlYXQpKTsKLSAgICBFWFBFQ1RfRkFMU0UoR1RFU1RfRkxBRyhzaHVmZmxlKSk7Ci0gICAg
RVhQRUNUX0VRKGtNYXhTdGFja1RyYWNlRGVwdGgsIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVw
dGgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIiIsIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90byku
Y19zdHIoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKEdURVNUX0ZMQUcodGhyb3dfb25fZmFpbHVyZSkp
OwotCi0gICAgR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykgPSB0cnVlOwotICAg
IEdURVNUX0ZMQUcoYnJlYWtfb25fZmFpbHVyZSkgPSB0cnVlOwotICAgIEdURVNUX0ZMQUcoY2F0
Y2hfZXhjZXB0aW9ucykgPSB0cnVlOwotICAgIEdURVNUX0ZMQUcoY29sb3IpID0gIm5vIjsKLSAg
ICBHVEVTVF9GTEFHKGRlYXRoX3Rlc3RfdXNlX2ZvcmspID0gdHJ1ZTsKLSAgICBHVEVTVF9GTEFH
KGZpbHRlcikgPSAiYWJjIjsKLSAgICBHVEVTVF9GTEFHKGxpc3RfdGVzdHMpID0gdHJ1ZTsKLSAg
ICBHVEVTVF9GTEFHKG91dHB1dCkgPSAieG1sOmZvby54bWwiOwotICAgIEdURVNUX0ZMQUcocHJp
bnRfdGltZSkgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IDE7Ci0gICAg
R1RFU1RfRkxBRyhyZXBlYXQpID0gMTAwOwotICAgIEdURVNUX0ZMQUcoc2h1ZmZsZSkgPSB0cnVl
OwotICAgIEdURVNUX0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpID0gMTsKLSAgICBHVEVTVF9GTEFH
KHN0cmVhbV9yZXN1bHRfdG8pID0gImxvY2FsaG9zdDoxMjM0IjsKLSAgICBHVEVTVF9GTEFHKHRo
cm93X29uX2ZhaWx1cmUpID0gdHJ1ZTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgLy8gRm9yIHNhdmlu
ZyBHb29nbGUgVGVzdCBmbGFncyBkdXJpbmcgdGhpcyB0ZXN0IGNhc2UuCi0gIHN0YXRpYyBHVGVz
dEZsYWdTYXZlciogc2F2ZXJfOwotfTsKLQotR1Rlc3RGbGFnU2F2ZXIqIEdUZXN0RmxhZ1NhdmVy
VGVzdDo6c2F2ZXJfID0gTlVMTDsKLQotLy8gR29vZ2xlIFRlc3QgZG9lc24ndCBndWFyYW50ZWUg
dGhlIG9yZGVyIG9mIHRlc3RzLiAgVGhlIGZvbGxvd2luZyB0d28KLS8vIHRlc3RzIGFyZSBkZXNp
Z25lZCB0byB3b3JrIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgb3JkZXIuCi0KLS8vIE1vZGlmaWVzIHRo
ZSBHb29nbGUgVGVzdCBmbGFncyBpbiB0aGUgdGVzdCBib2R5LgotVEVTVF9GKEdUZXN0RmxhZ1Nh
dmVyVGVzdCwgTW9kaWZ5R1Rlc3RGbGFncykgewotICBWZXJpZnlBbmRNb2RpZnlGbGFncygpOwot
fQotCi0vLyBWZXJpZmllcyB0aGF0IHRoZSBHb29nbGUgVGVzdCBmbGFncyBpbiB0aGUgYm9keSBv
ZiB0aGUgcHJldmlvdXMgdGVzdCB3ZXJlCi0vLyByZXN0b3JlZCB0byB0aGVpciBvcmlnaW5hbCB2
YWx1ZXMuCi1URVNUX0YoR1Rlc3RGbGFnU2F2ZXJUZXN0LCBWZXJpZnlHVGVzdEZsYWdzKSB7Ci0g
IFZlcmlmeUFuZE1vZGlmeUZsYWdzKCk7Ci19Ci0KLS8vIFNldHMgYW4gZW52aXJvbm1lbnQgdmFy
aWFibGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0byB0aGUgZ2l2ZW4KLS8vIHZhbHVlLiAgSWYgdGhl
IHZhbHVlIGFyZ3VtZW50IGlzICIiLCB1bnNldHMgdGhlIGVudmlyb25tZW50Ci0vLyB2YXJpYWJs
ZS4gIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBib3RoIGFyZ3VtZW50cyBhcmUgbm90IE5V
TEwuCi1zdGF0aWMgdm9pZCBTZXRFbnYoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFs
dWUpIHsKLSNpZiBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotICAvLyBFbnZpcm9ubWVudCB2YXJp
YWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyBDRS4KLSAgcmV0dXJuOwotI2VsaWYg
ZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19TdW5PU181XzgpIHx8IGRlZmluZWQo
X19TdW5PU181XzkpCi0gIC8vIEMrK0J1aWxkZXIncyBwdXRlbnYgb25seSBzdG9yZXMgYSBwb2lu
dGVyIHRvIGl0cyBwYXJhbWV0ZXI7IHdlIGhhdmUgdG8KLSAgLy8gZW5zdXJlIHRoYXQgdGhlIHN0
cmluZyByZW1haW5zIHZhbGlkIGFzIGxvbmcgYXMgaXQgbWlnaHQgYmUgbmVlZGVkLgotICAvLyBX
ZSB1c2UgYW4gc3RkOjptYXAgdG8gZG8gc28uCi0gIHN0YXRpYyBzdGQ6Om1hcDxzdGQ6OnN0cmlu
Zywgc3RkOjpzdHJpbmcqPiBhZGRlZF9lbnY7Ci0KLSAgLy8gQmVjYXVzZSBwdXRlbnYgc3RvcmVz
IGEgcG9pbnRlciB0byB0aGUgc3RyaW5nIGJ1ZmZlciwgd2UgY2FuJ3QgZGVsZXRlIHRoZQotICAv
LyBwcmV2aW91cyBzdHJpbmcgKGlmIHByZXNlbnQpIHVudGlsIGFmdGVyIGl0J3MgcmVwbGFjZWQu
Ci0gIHN0ZDo6c3RyaW5nICpwcmV2X2VudiA9IE5VTEw7Ci0gIGlmIChhZGRlZF9lbnYuZmluZChu
YW1lKSAhPSBhZGRlZF9lbnYuZW5kKCkpIHsKLSAgICBwcmV2X2VudiA9IGFkZGVkX2VudltuYW1l
XTsKLSAgfQotICBhZGRlZF9lbnZbbmFtZV0gPSBuZXcgc3RkOjpzdHJpbmcoCi0gICAgICAoTWVz
c2FnZSgpIDw8IG5hbWUgPDwgIj0iIDw8IHZhbHVlKS5HZXRTdHJpbmcoKSk7Ci0KLSAgLy8gVGhl
IHN0YW5kYXJkIHNpZ25hdHVyZSBvZiBwdXRlbnYgYWNjZXB0cyBhICdjaGFyKicgYXJndW1lbnQu
IE90aGVyCi0gIC8vIGltcGxlbWVudGF0aW9ucywgbGlrZSBDKytCdWlsZGVyJ3MsIGFjY2VwdCBh
ICdjb25zdCBjaGFyKicuCi0gIC8vIFdlIGNhc3QgYXdheSB0aGUgJ2NvbnN0JyBzaW5jZSB0aGF0
IHdvdWxkIHdvcmsgZm9yIGJvdGggdmFyaWFudHMuCi0gIHB1dGVudihjb25zdF9jYXN0PGNoYXIq
PihhZGRlZF9lbnZbbmFtZV0tPmNfc3RyKCkpKTsKLSAgZGVsZXRlIHByZXZfZW52OwotI2VsaWYg
R1RFU1RfT1NfV0lORE9XUyAgLy8gSWYgd2UgYXJlIG9uIFdpbmRvd3MgcHJvcGVyLgotICBfcHV0
ZW52KChNZXNzYWdlKCkgPDwgbmFtZSA8PCAiPSIgPDwgdmFsdWUpLkdldFN0cmluZygpLmNfc3Ry
KCkpOwotI2Vsc2UKLSAgaWYgKCp2YWx1ZSA9PSAnXDAnKSB7Ci0gICAgdW5zZXRlbnYobmFtZSk7
Ci0gIH0gZWxzZSB7Ci0gICAgc2V0ZW52KG5hbWUsIHZhbHVlLCAxKTsKLSAgfQotI2VuZGlmICAv
LyBHVEVTVF9PU19XSU5ET1dTX01PQklMRQotfQotCi0jaWYgIUdURVNUX09TX1dJTkRPV1NfTU9C
SUxFCi0vLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93
cyBDRS4KLQotdXNpbmcgdGVzdGluZzo6aW50ZXJuYWw6OkludDMyRnJvbUdUZXN0RW52OwotCi0v
LyBUZXN0cyBJbnQzMkZyb21HVGVzdEVudigpLgotCi0vLyBUZXN0cyB0aGF0IEludDMyRnJvbUdU
ZXN0RW52KCkgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZQotLy8gZW52aXJvbm1l
bnQgdmFyaWFibGUgaXMgbm90IHNldC4KLVRFU1QoSW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBSZXR1
cm5zRGVmYXVsdFdoZW5WYXJpYWJsZUlzTm90U2V0KSB7Ci0gIFNldEVudihHVEVTVF9GTEFHX1BS
RUZJWF9VUFBFUl8gIlRFTVAiLCAiIik7Ci0gIEVYUEVDVF9FUSgxMCwgSW50MzJGcm9tR1Rlc3RF
bnYoInRlbXAiLCAxMCkpOwotfQotCi0jIGlmICFkZWZpbmVkKEdURVNUX0dFVF9JTlQzMl9GUk9N
X0VOVl8pCi0KLS8vIFRlc3RzIHRoYXQgSW50MzJGcm9tR1Rlc3RFbnYoKSByZXR1cm5zIHRoZSBk
ZWZhdWx0IHZhbHVlIHdoZW4gdGhlCi0vLyBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVyZmxvd3Mg
YXMgYW4gSW50MzIuCi1URVNUKEludDMyRnJvbUdUZXN0RW52VGVzdCwgUmV0dXJuc0RlZmF1bHRX
aGVuVmFsdWVPdmVyZmxvd3MpIHsKLSAgcHJpbnRmKCIoZXhwZWN0aW5nIDIgd2FybmluZ3MpXG4i
KTsKLQotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1QIiwgIjEyMzQ1Njc4
OTg3NjU0MzIxIik7Ci0gIEVYUEVDVF9FUSgyMCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAiLCAy
MCkpOwotCi0gIFNldEVudihHVEVTVF9GTEFHX1BSRUZJWF9VUFBFUl8gIlRFTVAiLCAiLTEyMzQ1
Njc4OTg3NjU0MzIxIik7Ci0gIEVYUEVDVF9FUSgzMCwgSW50MzJGcm9tR1Rlc3RFbnYoInRlbXAi
LCAzMCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEludDMyRnJvbUdUZXN0RW52KCkgcmV0dXJucyB0
aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIHRoZQotLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgZG9lcyBu
b3QgcmVwcmVzZW50IGEgdmFsaWQgZGVjaW1hbCBpbnRlZ2VyLgotVEVTVChJbnQzMkZyb21HVGVz
dEVudlRlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7Ci0gIHByaW50Zigi
KGV4cGVjdGluZyAyIHdhcm5pbmdzKVxuIik7Ci0KLSAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklY
X1VQUEVSXyAiVEVNUCIsICJBMSIpOwotICBFWFBFQ1RfRVEoNDAsIEludDMyRnJvbUdUZXN0RW52
KCJ0ZW1wIiwgNDApKTsKLQotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1Q
IiwgIjEyWCIpOwotICBFWFBFQ1RfRVEoNTAsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1wIiwgNTAp
KTsKLX0KLQotIyBlbmRpZiAgLy8gIWRlZmluZWQoR1RFU1RfR0VUX0lOVDMyX0ZST01fRU5WXykK
LQotLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21HVGVzdEVudigpIHBhcnNlcyBhbmQgcmV0dXJucyB0
aGUgdmFsdWUgb2YgdGhlCi0vLyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGl0IHJlcHJlc2Vu
dHMgYSB2YWxpZCBkZWNpbWFsIGludGVnZXIgaW4KLS8vIHRoZSByYW5nZSBvZiBhbiBJbnQzMi4K
LVRFU1QoSW50MzJGcm9tR1Rlc3RFbnZUZXN0LCBQYXJzZXNBbmRSZXR1cm5zVmFsaWRWYWx1ZSkg
ewotICBTZXRFbnYoR1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1QIiwgIjEyMyIpOwotICBF
WFBFQ1RfRVEoMTIzLCBJbnQzMkZyb21HVGVzdEVudigidGVtcCIsIDApKTsKLQotICBTZXRFbnYo
R1RFU1RfRkxBR19QUkVGSVhfVVBQRVJfICJURU1QIiwgIi0zMjEiKTsKLSAgRVhQRUNUX0VRKC0z
MjEsIEludDMyRnJvbUdUZXN0RW52KCJ0ZW1wIiwgMCkpOwotfQotI2VuZGlmICAvLyAhR1RFU1Rf
T1NfV0lORE9XU19NT0JJTEUKLQotLy8gVGVzdHMgUGFyc2VJbnQzMkZsYWcoKS4KLQotLy8gVGVz
dHMgdGhhdCBQYXJzZUludDMyRmxhZygpIHJldHVybnMgZmFsc2UgYW5kIGRvZXNuJ3QgY2hhbmdl
IHRoZQotLy8gb3V0cHV0IHZhbHVlIHdoZW4gdGhlIGZsYWcgaGFzIHdyb25nIGZvcm1hdAotVEVT
VChQYXJzZUludDMyRmxhZ1Rlc3QsIFJldHVybnNGYWxzZUZvckludmFsaWRGbGFnKSB7Ci0gIElu
dDMyIHZhbHVlID0gMTIzOwotICBFWFBFQ1RfRkFMU0UoUGFyc2VJbnQzMkZsYWcoIi0tYT0xMDAi
LCAiYiIsICZ2YWx1ZSkpOwotICBFWFBFQ1RfRVEoMTIzLCB2YWx1ZSk7Ci0KLSAgRVhQRUNUX0ZB
TFNFKFBhcnNlSW50MzJGbGFnKCJhPTEwMCIsICJhIiwgJnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgx
MjMsIHZhbHVlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBQYXJzZUludDMyRmxhZygpIHJldHVybnMg
ZmFsc2UgYW5kIGRvZXNuJ3QgY2hhbmdlIHRoZQotLy8gb3V0cHV0IHZhbHVlIHdoZW4gdGhlIGZs
YWcgb3ZlcmZsb3dzIGFzIGFuIEludDMyLgotVEVTVChQYXJzZUludDMyRmxhZ1Rlc3QsIFJldHVy
bnNEZWZhdWx0V2hlblZhbHVlT3ZlcmZsb3dzKSB7Ci0gIHByaW50ZigiKGV4cGVjdGluZyAyIHdh
cm5pbmdzKVxuIik7Ci0KLSAgSW50MzIgdmFsdWUgPSAxMjM7Ci0gIEVYUEVDVF9GQUxTRShQYXJz
ZUludDMyRmxhZygiLS1hYmM9MTIzNDU2Nzg5ODc2NTQzMjEiLCAiYWJjIiwgJnZhbHVlKSk7Ci0g
IEVYUEVDVF9FUSgxMjMsIHZhbHVlKTsKLQotICBFWFBFQ1RfRkFMU0UoUGFyc2VJbnQzMkZsYWco
Ii0tYWJjPS0xMjM0NTY3ODk4NzY1NDMyMSIsICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VR
KDEyMywgdmFsdWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IFBhcnNlSW50MzJGbGFnKCkgcmV0dXJu
cyBmYWxzZSBhbmQgZG9lc24ndCBjaGFuZ2UgdGhlCi0vLyBvdXRwdXQgdmFsdWUgd2hlbiB0aGUg
ZmxhZyBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBkZWNpbWFsCi0vLyBpbnRlZ2VyLgotVEVT
VChQYXJzZUludDMyRmxhZ1Rlc3QsIFJldHVybnNEZWZhdWx0V2hlblZhbHVlSXNJbnZhbGlkKSB7
Ci0gIHByaW50ZigiKGV4cGVjdGluZyAyIHdhcm5pbmdzKVxuIik7Ci0KLSAgSW50MzIgdmFsdWUg
PSAxMjM7Ci0gIEVYUEVDVF9GQUxTRShQYXJzZUludDMyRmxhZygiLS1hYmM9QTEiLCAiYWJjIiwg
JnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgxMjMsIHZhbHVlKTsKLQotICBFWFBFQ1RfRkFMU0UoUGFy
c2VJbnQzMkZsYWcoIi0tYWJjPTEyWCIsICJhYmMiLCAmdmFsdWUpKTsKLSAgRVhQRUNUX0VRKDEy
MywgdmFsdWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IFBhcnNlSW50MzJGbGFnKCkgcGFyc2VzIHRo
ZSB2YWx1ZSBvZiB0aGUgZmxhZyBhbmQKLS8vIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSBmbGFnIHJl
cHJlc2VudHMgYSB2YWxpZCBkZWNpbWFsIGludGVnZXIgaW4KLS8vIHRoZSByYW5nZSBvZiBhbiBJ
bnQzMi4KLVRFU1QoUGFyc2VJbnQzMkZsYWdUZXN0LCBQYXJzZXNBbmRSZXR1cm5zVmFsaWRWYWx1
ZSkgewotICBJbnQzMiB2YWx1ZSA9IDEyMzsKLSAgRVhQRUNUX1RSVUUoUGFyc2VJbnQzMkZsYWco
Ii0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImFiYz00NTYiLCAiYWJjIiwgJnZhbHVlKSk7Ci0gIEVY
UEVDVF9FUSg0NTYsIHZhbHVlKTsKLQotICBFWFBFQ1RfVFJVRShQYXJzZUludDMyRmxhZygiLS0i
IEdURVNUX0ZMQUdfUFJFRklYXyAiYWJjPS03ODkiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYWJjIiwgJnZhbHVlKSk7Ci0gIEVYUEVDVF9FUSgtNzg5LCB2YWx1ZSk7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgSW50MzJGcm9tRW52T3JEaWUoKSBwYXJzZXMgdGhlIHZhbHVlIG9mIHRoZSB2
YXIgb3IKLS8vIHJldHVybnMgdGhlIGNvcnJlY3QgZGVmYXVsdC4KLS8vIEVudmlyb25tZW50IHZh
cmlhYmxlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzIENFLgotI2lmICFHVEVTVF9PU19X
SU5ET1dTX01PQklMRQotVEVTVChJbnQzMkZyb21FbnZPckRpZVRlc3QsIFBhcnNlc0FuZFJldHVy
bnNWYWxpZFZhbHVlKSB7Ci0gIEVYUEVDVF9FUSgzMzMsIEludDMyRnJvbUVudk9yRGllKEdURVNU
X0ZMQUdfUFJFRklYX1VQUEVSXyAiVW5zZXRWYXIiLCAzMzMpKTsKLSAgU2V0RW52KEdURVNUX0ZM
QUdfUFJFRklYX1VQUEVSXyAiVW5zZXRWYXIiLCAiMTIzIik7Ci0gIEVYUEVDVF9FUSgxMjMsIElu
dDMyRnJvbUVudk9yRGllKEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVW5zZXRWYXIiLCAzMzMp
KTsKLSAgU2V0RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVW5zZXRWYXIiLCAiLTEyMyIp
OwotICBFWFBFQ1RfRVEoLTEyMywgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVGSVhf
VVBQRVJfICJVbnNldFZhciIsIDMzMykpOwotfQotI2VuZGlmICAvLyAhR1RFU1RfT1NfV0lORE9X
U19NT0JJTEUKLQotLy8gVGVzdHMgdGhhdCBJbnQzMkZyb21FbnZPckRpZSgpIGFib3J0cyB3aXRo
IGFuIGVycm9yIG1lc3NhZ2UKLS8vIGlmIHRoZSB2YXJpYWJsZSBpcyBub3QgYW4gSW50MzIuCi1U
RVNUKEludDMyRnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNPbkZhaWx1cmUpIHsKLSAgU2V0
RW52KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVkFSIiwgInh4eCIpOwotICBFWFBFQ1RfREVB
VEhfSUZfU1VQUE9SVEVEKAotICAgICAgSW50MzJGcm9tRW52T3JEaWUoR1RFU1RfRkxBR19QUkVG
SVhfVVBQRVJfICJWQVIiLCAxMjMpLAotICAgICAgIi4qIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
SW50MzJGcm9tRW52T3JEaWUoKSBhYm9ydHMgd2l0aCBhbiBlcnJvciBtZXNzYWdlCi0vLyBpZiB0
aGUgdmFyaWFibGUgY2Fubm90IGJlIHJlcHJlc250ZWQgYnkgYW4gSW50MzIuCi1URVNUKEludDMy
RnJvbUVudk9yRGllRGVhdGhUZXN0LCBBYm9ydHNPbkludDMyT3ZlcmZsb3cpIHsKLSAgU2V0RW52
KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVkFSIiwgIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQi
KTsKLSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRCgKLSAgICAgIEludDMyRnJvbUVudk9yRGll
KEdURVNUX0ZMQUdfUFJFRklYX1VQUEVSXyAiVkFSIiwgMTIzKSwKLSAgICAgICIuKiIpOwotfQot
Ci0vLyBUZXN0cyB0aGF0IFNob3VsZFJ1blRlc3RPblNoYXJkKCkgc2VsZWN0cyBhbGwgdGVzdHMK
LS8vIHdoZXJlIHRoZXJlIGlzIDEgc2hhcmQuCi1URVNUKFNob3VsZFJ1blRlc3RPblNoYXJkVGVz
dCwgSXNQYXJ0aXRpb25XaGVuVGhlcmVJc09uZVNoYXJkKSB7Ci0gIEVYUEVDVF9UUlVFKFNob3Vs
ZFJ1blRlc3RPblNoYXJkKDEsIDAsIDApKTsKLSAgRVhQRUNUX1RSVUUoU2hvdWxkUnVuVGVzdE9u
U2hhcmQoMSwgMCwgMSkpOwotICBFWFBFQ1RfVFJVRShTaG91bGRSdW5UZXN0T25TaGFyZCgxLCAw
LCAyKSk7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFJ1blRlc3RPblNoYXJkKDEsIDAsIDMpKTsKLSAg
RVhQRUNUX1RSVUUoU2hvdWxkUnVuVGVzdE9uU2hhcmQoMSwgMCwgNCkpOwotfQotCi1jbGFzcyBT
aG91bGRTaGFyZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgaW5kZXhfdmFyXyA9IEdURVNUX0ZMQUdfUFJFRklY
X1VQUEVSXyAiSU5ERVgiOwotICAgIHRvdGFsX3Zhcl8gPSBHVEVTVF9GTEFHX1BSRUZJWF9VUFBF
Ul8gIlRPVEFMIjsKLSAgfQotCi0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBTZXRF
bnYoaW5kZXhfdmFyXywgIiIpOwotICAgIFNldEVudih0b3RhbF92YXJfLCAiIik7Ci0gIH0KLQot
ICBjb25zdCBjaGFyKiBpbmRleF92YXJfOwotICBjb25zdCBjaGFyKiB0b3RhbF92YXJfOwotfTsK
LQotLy8gVGVzdHMgdGhhdCBzaGFyZGluZyBpcyBkaXNhYmxlZCBpZiBuZWl0aGVyIG9mIHRoZSBl
bnZpcm9ubWVudCB2YXJpYWJsZXMKLS8vIGFyZSBzZXQuCi1URVNUX0YoU2hvdWxkU2hhcmRUZXN0
LCBSZXR1cm5zRmFsc2VXaGVuTmVpdGhlckVudlZhcklzU2V0KSB7Ci0gIFNldEVudihpbmRleF92
YXJfLCAiIik7Ci0gIFNldEVudih0b3RhbF92YXJfLCAiIik7Ci0KLSAgRVhQRUNUX0ZBTFNFKFNo
b3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxT
RShTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCB0cnVlKSk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgc2hhcmRpbmcgaXMgbm90IGVuYWJsZWQgaWYgdG90YWxfc2hhcmRzICA9PSAxLgot
VEVTVF9GKFNob3VsZFNoYXJkVGVzdCwgUmV0dXJuc0ZhbHNlV2hlblRvdGFsU2hhcmRJc09uZSkg
ewotICBTZXRFbnYoaW5kZXhfdmFyXywgIjAiKTsKLSAgU2V0RW52KHRvdGFsX3Zhcl8sICIxIik7
Ci0gIEVYUEVDVF9GQUxTRShTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCBmYWxz
ZSkpOwotICBFWFBFQ1RfRkFMU0UoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywg
dHJ1ZSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IHNoYXJkaW5nIGlzIGVuYWJsZWQgaWYgdG90YWxf
c2hhcmRzID4gMSBhbmQKLS8vIHdlIGFyZSBub3QgaW4gYSBkZWF0aCB0ZXN0IHN1YnByb2Nlc3Mu
Ci0vLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyBD
RS4KLSNpZiAhR1RFU1RfT1NfV0lORE9XU19NT0JJTEUKLVRFU1RfRihTaG91bGRTaGFyZFRlc3Qs
IFdvcmtzV2hlblNoYXJkRW52VmFyc0FyZVZhbGlkKSB7Ci0gIFNldEVudihpbmRleF92YXJfLCAi
NCIpOwotICBTZXRFbnYodG90YWxfdmFyXywgIjIyIik7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFNo
YXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSk7Ci0gIEVYUEVDVF9GQUxTRShTaG91
bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCB0cnVlKSk7Ci0KLSAgU2V0RW52KGluZGV4
X3Zhcl8sICI4Iik7Ci0gIFNldEVudih0b3RhbF92YXJfLCAiOSIpOwotICBFWFBFQ1RfVFJVRShT
aG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCBmYWxzZSkpOwotICBFWFBFQ1RfRkFM
U0UoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgdHJ1ZSkpOwotCi0gIFNldEVu
dihpbmRleF92YXJfLCAiMCIpOwotICBTZXRFbnYodG90YWxfdmFyXywgIjkiKTsKLSAgRVhQRUNU
X1RSVUUoU2hvdWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFsc2UpKTsKLSAgRVhQ
RUNUX0ZBTFNFKFNob3VsZFNoYXJkKHRvdGFsX3Zhcl8sIGluZGV4X3Zhcl8sIHRydWUpKTsKLX0K
LSNlbmRpZiAgLy8gIUdURVNUX09TX1dJTkRPV1NfTU9CSUxFCi0KLS8vIFRlc3RzIHRoYXQgd2Ug
ZXhpdCBpbiBlcnJvciBpZiB0aGUgc2hhcmRpbmcgdmFsdWVzIGFyZSBub3QgdmFsaWQuCi0KLXR5
cGVkZWYgU2hvdWxkU2hhcmRUZXN0IFNob3VsZFNoYXJkRGVhdGhUZXN0OwotCi1URVNUX0YoU2hv
dWxkU2hhcmREZWF0aFRlc3QsIEFib3J0c1doZW5TaGFyZGluZ0VudlZhcnNBcmVJbnZhbGlkKSB7
Ci0gIFNldEVudihpbmRleF92YXJfLCAiNCIpOwotICBTZXRFbnYodG90YWxfdmFyXywgIjQiKTsK
LSAgRVhQRUNUX0RFQVRIX0lGX1NVUFBPUlRFRChTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRl
eF92YXJfLCBmYWxzZSksICIuKiIpOwotCi0gIFNldEVudihpbmRleF92YXJfLCAiNCIpOwotICBT
ZXRFbnYodG90YWxfdmFyXywgIi0yIik7Ci0gIEVYUEVDVF9ERUFUSF9JRl9TVVBQT1JURUQoU2hv
dWxkU2hhcmQodG90YWxfdmFyXywgaW5kZXhfdmFyXywgZmFsc2UpLCAiLioiKTsKLQotICBTZXRF
bnYoaW5kZXhfdmFyXywgIjUiKTsKLSAgU2V0RW52KHRvdGFsX3Zhcl8sICIiKTsKLSAgRVhQRUNU
X0RFQVRIX0lGX1NVUFBPUlRFRChTaG91bGRTaGFyZCh0b3RhbF92YXJfLCBpbmRleF92YXJfLCBm
YWxzZSksICIuKiIpOwotCi0gIFNldEVudihpbmRleF92YXJfLCAiIik7Ci0gIFNldEVudih0b3Rh
bF92YXJfLCAiNSIpOwotICBFWFBFQ1RfREVBVEhfSUZfU1VQUE9SVEVEKFNob3VsZFNoYXJkKHRv
dGFsX3Zhcl8sIGluZGV4X3Zhcl8sIGZhbHNlKSwgIi4qIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
U2hvdWxkUnVuVGVzdE9uU2hhcmQgaXMgYSBwYXJ0aXRpb24gd2hlbiA1Ci0vLyBzaGFyZHMgYXJl
IHVzZWQuCi1URVNUKFNob3VsZFJ1blRlc3RPblNoYXJkVGVzdCwgSXNQYXJ0aXRpb25XaGVuVGhl
cmVBcmVGaXZlU2hhcmRzKSB7Ci0gIC8vIENob29zZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHRl
c3RzIGFuZCBzaGFyZHMuCi0gIGNvbnN0IGludCBudW1fdGVzdHMgPSAxNzsKLSAgY29uc3QgaW50
IG51bV9zaGFyZHMgPSA1OwotCi0gIC8vIENoZWNrIHBhcnRpdGlvbmluZzogZWFjaCB0ZXN0IHNo
b3VsZCBiZSBvbiBleGFjdGx5IDEgc2hhcmQuCi0gIGZvciAoaW50IHRlc3RfaWQgPSAwOyB0ZXN0
X2lkIDwgbnVtX3Rlc3RzOyB0ZXN0X2lkKyspIHsKLSAgICBpbnQgcHJldl9zZWxlY3RlZF9zaGFy
ZF9pbmRleCA9IC0xOwotICAgIGZvciAoaW50IHNoYXJkX2luZGV4ID0gMDsgc2hhcmRfaW5kZXgg
PCBudW1fc2hhcmRzOyBzaGFyZF9pbmRleCsrKSB7Ci0gICAgICBpZiAoU2hvdWxkUnVuVGVzdE9u
U2hhcmQobnVtX3NoYXJkcywgc2hhcmRfaW5kZXgsIHRlc3RfaWQpKSB7Ci0gICAgICAgIGlmIChw
cmV2X3NlbGVjdGVkX3NoYXJkX2luZGV4IDwgMCkgewotICAgICAgICAgIHByZXZfc2VsZWN0ZWRf
c2hhcmRfaW5kZXggPSBzaGFyZF9pbmRleDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBB
RERfRkFJTFVSRSgpIDw8ICJTaGFyZCAiIDw8IHByZXZfc2VsZWN0ZWRfc2hhcmRfaW5kZXggPDwg
IiBhbmQgIgotICAgICAgICAgICAgPDwgc2hhcmRfaW5kZXggPDwgIiBhcmUgYm90aCBzZWxlY3Rl
ZCB0byBydW4gdGVzdCAiIDw8IHRlc3RfaWQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0g
IH0KLQotICAvLyBDaGVjayBiYWxhbmNlOiBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgc2hh
cmRpbmcgcHJvdG9jb2wsIGJ1dCBpcyBhCi0gIC8vIGRlc2lyYWJsZSBwcm9wZXJ0eSBmb3IgcGVy
Zm9ybWFuY2UuCi0gIGZvciAoaW50IHNoYXJkX2luZGV4ID0gMDsgc2hhcmRfaW5kZXggPCBudW1f
c2hhcmRzOyBzaGFyZF9pbmRleCsrKSB7Ci0gICAgaW50IG51bV90ZXN0c19vbl9zaGFyZCA9IDA7
Ci0gICAgZm9yIChpbnQgdGVzdF9pZCA9IDA7IHRlc3RfaWQgPCBudW1fdGVzdHM7IHRlc3RfaWQr
KykgewotICAgICAgbnVtX3Rlc3RzX29uX3NoYXJkICs9Ci0gICAgICAgIFNob3VsZFJ1blRlc3RP
blNoYXJkKG51bV9zaGFyZHMsIHNoYXJkX2luZGV4LCB0ZXN0X2lkKTsKLSAgICB9Ci0gICAgRVhQ
RUNUX0dFKG51bV90ZXN0c19vbl9zaGFyZCwgbnVtX3Rlc3RzIC8gbnVtX3NoYXJkcyk7Ci0gIH0K
LX0KLQotLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBhcmUgbm90IGV4cGxpY2l0bHkgdGVzdGlu
ZyBldmVyeXRoaW5nIGluIHRoZQotLy8gVGVzdCBjbGFzcywgdGhlcmUgYXJlIG5vIHNlcGFyYXRl
IHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIGNsYXNzZXMKLS8vIChleGNlcHQgZm9yIHNvbWUgdHJp
dmlhbCBjYXNlcyk6Ci0vLwotLy8gICBUZXN0Q2FzZSwgVW5pdFRlc3QsIFVuaXRUZXN0UmVzdWx0
UHJpbnRlci4KLS8vCi0vLyBTaW1pbGFybHksIHRoZXJlIGFyZSBubyBzZXBhcmF0ZSB0ZXN0cyBm
b3IgdGhlIGZvbGxvd2luZyBtYWNyb3M6Ci0vLwotLy8gICBURVNULCBURVNUX0YsIFJVTl9BTExf
VEVTVFMKLQotVEVTVChVbml0VGVzdFRlc3QsIENhbkdldE9yaWdpbmFsV29ya2luZ0Rpcikgewot
ICBBU1NFUlRfVFJVRShVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+b3JpZ2luYWxfd29ya2luZ19k
aXIoKSAhPSBOVUxMKTsKLSAgRVhQRUNUX1NUUk5FKFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5v
cmlnaW5hbF93b3JraW5nX2RpcigpLCAiIik7Ci19Ci0KLVRFU1QoVW5pdFRlc3RUZXN0LCBSZXR1
cm5zUGxhdXNpYmxlVGltZXN0YW1wKSB7Ci0gIEVYUEVDVF9MVCgwLCBVbml0VGVzdDo6R2V0SW5z
dGFuY2UoKS0+c3RhcnRfdGltZXN0YW1wKCkpOwotICBFWFBFQ1RfTEUoVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCktPnN0YXJ0X3RpbWVzdGFtcCgpLCBHZXRUaW1lSW5NaWxsaXMoKSk7Ci19Ci0KLS8v
IFdoZW4gYSBwcm9wZXJ0eSB1c2luZyBhIHJlc2VydmVkIGtleSBpcyBzdXBwbGllZCB0byB0aGlz
IGZ1bmN0aW9uLCBpdAotLy8gdGVzdHMgdGhhdCBhIG5vbi1mYXRhbCBmYWlsdXJlIGlzIGFkZGVk
LCBhIGZhdGFsIGZhaWx1cmUgaXMgbm90IGFkZGVkLAotLy8gYW5kIHRoYXQgdGhlIHByb3BlcnR5
IGlzIG5vdCByZWNvcmRlZC4KLXZvaWQgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXkoCi0gICAgY29uc3QgVGVzdFJlc3VsdCYgdGVzdF9yZXN1bHQs
IGNvbnN0IGNoYXIqIGtleSkgewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShUZXN0OjpSZWNv
cmRQcm9wZXJ0eShrZXksICIxIiksICJSZXNlcnZlZCBrZXkiKTsKLSAgQVNTRVJUX0VRKDAsIHRl
c3RfcmVzdWx0LnRlc3RfcHJvcGVydHlfY291bnQoKSkgPDwgIlByb3BlcnR5IGZvciBrZXkgJyIg
PDwga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICInIHJlY29yZGVkIHVuZXhwZWN0ZWRseS4iOwotfQotCi12b2lkIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCi0g
ICAgY29uc3QgY2hhcioga2V5KSB7Ci0gIGNvbnN0IFRlc3RJbmZvKiB0ZXN0X2luZm8gPSBVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgQVNTRVJUX1RSVUUo
dGVzdF9pbmZvICE9IE5VTEwpOwotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9w
ZXJ0eVdpdGhSZXNlcnZlZEtleSgqdGVzdF9pbmZvLT5yZXN1bHQoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLX0KLQotdm9p
ZCBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0Q2FzZSgKLSAgICBjb25zdCBjaGFyKiBrZXkpIHsKLSAgY29uc3QgVGVzdENh
c2UqIHRlc3RfY2FzZSA9IFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfY2Fz
ZSgpOwotICBBU1NFUlRfVFJVRSh0ZXN0X2Nhc2UgIT0gTlVMTCk7Ci0gIEV4cGVjdE5vbkZhdGFs
RmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5KAotICAgICAgdGVzdF9jYXNl
LT5hZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKLX0KLQotdm9pZCBFeHBlY3ROb25GYXRhbEZh
aWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAot
ICAgIGNvbnN0IGNoYXIqIGtleSkgewotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleSgKLSAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5h
ZF9ob2NfdGVzdF9yZXN1bHQoKSwga2V5KTsKLX0KLQotLy8gVGVzdHMgdGhhdCBwcm9wZXJ0eSBy
ZWNvcmRpbmcgZnVuY3Rpb25zIGluIFVuaXRUZXN0IG91dHNpZGUgb2YgdGVzdHMKLS8vIGZ1bmN0
aW9ucyBjb3JyZWNseS4gIENyZWF0aW5nIGEgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVW5pdFRlc3Qg
ZW5zdXJlcyBpdAotLy8gaXMgaW4gYSBzdGF0ZSBzaW1pbGFyIHRvIHRoZSBVbml0VGVzdCdzIHNp
bmdsZXRvbidzIGJldHdlZW4gdGVzdHMuCi1jbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVz
dCA6Ci0gICAgcHVibGljIHRlc3Rpbmc6OmludGVybmFsOjpVbml0VGVzdFJlY29yZFByb3BlcnR5
VGVzdEhlbHBlciB7Ci0gcHVibGljOgotICBzdGF0aWMgdm9pZCBTZXRVcFRlc3RDYXNlKCkgewot
ICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5
Rm9yQ3VycmVudFRlc3RDYXNlKAotICAgICAgICAiZGlzYWJsZWQiKTsKLSAgICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0
Q2FzZSgKLSAgICAgICAgImVycm9ycyIpOwotICAgIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJlY29y
ZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3RDYXNlKAotICAgICAgICAi
ZmFpbHVyZXMiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0Q2FzZSgKLSAgICAgICAgIm5hbWUiKTsKLSAgICBF
eHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1
cnJlbnRUZXN0Q2FzZSgKLSAgICAgICAgInRlc3RzIik7Ci0gICAgRXhwZWN0Tm9uRmF0YWxGYWls
dXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdENhc2UoCi0g
ICAgICAgICJ0aW1lIik7Ci0KLSAgICBUZXN0OjpSZWNvcmRQcm9wZXJ0eSgidGVzdF9jYXNlX2tl
eV8xIiwgIjEiKTsKLSAgICBjb25zdCBUZXN0Q2FzZSogdGVzdF9jYXNlID0gVW5pdFRlc3Q6Okdl
dEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9jYXNlKCk7Ci0gICAgQVNTRVJUX1RSVUUodGVzdF9j
YXNlICE9IE5VTEwpOwotCi0gICAgQVNTRVJUX0VRKDEsIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3Rf
cmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInRlc3Rf
Y2FzZV9rZXlfMSIsCi0gICAgICAgICAgICAgICAgIHRlc3RfY2FzZS0+YWRfaG9jX3Rlc3RfcmVz
dWx0KCkuR2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoIjEiLAot
ICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UtPmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQ
cm9wZXJ0eSgwKS52YWx1ZSgpKTsKLSAgfQotfTsKLQotLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMg
dGhlIGV4cGVjdGVkIHByb3BlcnR5IHdoZW4gYWRkZWQuCi1URVNUX0YoVW5pdFRlc3RSZWNvcmRQ
cm9wZXJ0eVRlc3QsIE9uZVByb3BlcnR5Rm91bmRXaGVuQWRkZWQpIHsKLSAgVW5pdFRlc3RSZWNv
cmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOwotCi0gIEFTU0VSVF9FUSgxLCB1bml0X3Rlc3RfLmFk
X2hvY190ZXN0X3Jlc3VsdCgpLnRlc3RfcHJvcGVydHlfY291bnQoKSk7Ci0KLSAgRVhQRUNUX1NU
UkVRKCJrZXlfMSIsCi0gICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3Vs
dCgpLkdldFRlc3RQcm9wZXJ0eSgwKS5rZXkoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMSIsCi0gICAg
ICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0
eSgwKS52YWx1ZSgpKTsKLX0KLQotLy8gVGVzdHMgVGVzdFJlc3VsdCBoYXMgbXVsdGlwbGUgcHJv
cGVydGllcyB3aGVuIGFkZGVkLgotVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LCBN
dWx0aXBsZVByb3BlcnRpZXNGb3VuZFdoZW5BZGRlZCkgewotICBVbml0VGVzdFJlY29yZFByb3Bl
cnR5KCJrZXlfMSIsICIxIik7Ci0gIFVuaXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8yIiwgIjIi
KTsKLQotICBBU1NFUlRfRVEoMiwgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS50ZXN0
X3Byb3BlcnR5X2NvdW50KCkpOwotCi0gIEVYUEVDVF9TVFJFUSgia2V5XzEiLAotICAgICAgICAg
ICAgICAgdW5pdF90ZXN0Xy5hZF9ob2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMCku
a2V5KCkpOwotICBFWFBFQ1RfU1RSRVEoIjEiLCB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3Vs
dCgpLkdldFRlc3RQcm9wZXJ0eSgwKS52YWx1ZSgpKTsKLQotICBFWFBFQ1RfU1RSRVEoImtleV8y
IiwKLSAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVz
dFByb3BlcnR5KDEpLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIyIiwgdW5pdF90ZXN0Xy5hZF9o
b2NfdGVzdF9yZXN1bHQoKS5HZXRUZXN0UHJvcGVydHkoMSkudmFsdWUoKSk7Ci19Ci0KLS8vIFRl
c3RzIFRlc3RSZXN1bHQ6OlJlY29yZFByb3BlcnR5KCkgb3ZlcnJpZGVzIHZhbHVlcyBmb3IgZHVw
bGljYXRlIGtleXMuCi1URVNUX0YoVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eVRlc3QsIE92ZXJyaWRl
c1ZhbHVlc0ZvckR1cGxpY2F0ZUtleXMpIHsKLSAgVW5pdFRlc3RSZWNvcmRQcm9wZXJ0eSgia2V5
XzEiLCAiMSIpOwotICBVbml0VGVzdFJlY29yZFByb3BlcnR5KCJrZXlfMiIsICIyIik7Ci0gIFVu
aXRUZXN0UmVjb3JkUHJvcGVydHkoImtleV8xIiwgIjEyIik7Ci0gIFVuaXRUZXN0UmVjb3JkUHJv
cGVydHkoImtleV8yIiwgIjIyIik7Ci0KLSAgQVNTRVJUX0VRKDIsIHVuaXRfdGVzdF8uYWRfaG9j
X3Rlc3RfcmVzdWx0KCkudGVzdF9wcm9wZXJ0eV9jb3VudCgpKTsKLQotICBFWFBFQ1RfU1RSRVEo
ImtleV8xIiwKLSAgICAgICAgICAgICAgIHVuaXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCku
R2V0VGVzdFByb3BlcnR5KDApLmtleSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIxMiIsCi0gICAgICAg
ICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgw
KS52YWx1ZSgpKTsKLQotICBFWFBFQ1RfU1RSRVEoImtleV8yIiwKLSAgICAgICAgICAgICAgIHVu
aXRfdGVzdF8uYWRfaG9jX3Rlc3RfcmVzdWx0KCkuR2V0VGVzdFByb3BlcnR5KDEpLmtleSgpKTsK
LSAgRVhQRUNUX1NUUkVRKCIyMiIsCi0gICAgICAgICAgICAgICB1bml0X3Rlc3RfLmFkX2hvY190
ZXN0X3Jlc3VsdCgpLkdldFRlc3RQcm9wZXJ0eSgxKS52YWx1ZSgpKTsKLX0KLQotVEVTVF9GKFVu
aXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAotICAgICAgIEFkZEZhaWx1cmVJbnNpZGVUZXN0c1do
ZW5Vc2luZ1Rlc3RDYXNlUmVzZXJ2ZWRLZXlzKSB7Ci0gIEV4cGVjdE5vbkZhdGFsRmFpbHVyZVJl
Y29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3QoCi0gICAgICAibmFt
ZSIpOwotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleUZvckN1cnJlbnRUZXN0KAotICAgICAgInZhbHVlX3BhcmFtIik7Ci0gIEV4cGVjdE5vbkZh
dGFsRmFpbHVyZVJlY29yZGluZ1Byb3BlcnR5V2l0aFJlc2VydmVkS2V5Rm9yQ3VycmVudFRlc3Qo
Ci0gICAgICAidHlwZV9wYXJhbSIpOwotICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQ
cm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZvckN1cnJlbnRUZXN0KAotICAgICAgInN0YXR1cyIpOwot
ICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleUZv
ckN1cnJlbnRUZXN0KAotICAgICAgInRpbWUiKTsKLSAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVj
b3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlGb3JDdXJyZW50VGVzdCgKLSAgICAgICJjbGFz
c25hbWUiKTsKLX0KLQotVEVTVF9GKFVuaXRUZXN0UmVjb3JkUHJvcGVydHlUZXN0LAotICAgICAg
IEFkZFJlY29yZFdpdGhSZXNlcnZlZEtleXNHZW5lcmF0ZXNDb3JyZWN0UHJvcGVydHlMaXN0KSB7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAotICAgICAgVGVzdDo6UmVjb3JkUHJvcGVydHko
Im5hbWUiLCAiMSIpLAotICAgICAgIidjbGFzc25hbWUnLCAnbmFtZScsICdzdGF0dXMnLCAndGlt
ZScsICd0eXBlX3BhcmFtJywgYW5kICd2YWx1ZV9wYXJhbSciCi0gICAgICAiIGFyZSByZXNlcnZl
ZCIpOwotfQotCi1jbGFzcyBVbml0VGVzdFJlY29yZFByb3BlcnR5VGVzdEVudmlyb25tZW50IDog
cHVibGljIEVudmlyb25tZW50IHsKLSBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
IHsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZl
ZEtleU91dHNpZGVPZlRlc3RDYXNlKAotICAgICAgICAidGVzdHMiKTsKLSAgICBFeHBlY3ROb25G
YXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RD
YXNlKAotICAgICAgICAiZmFpbHVyZXMiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNv
cmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAotICAgICAgICAi
ZGlzYWJsZWQiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdp
dGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAotICAgICAgICAiZXJyb3JzIik7Ci0gICAg
RXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJvcGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRz
aWRlT2ZUZXN0Q2FzZSgKLSAgICAgICAgIm5hbWUiKTsKLSAgICBFeHBlY3ROb25GYXRhbEZhaWx1
cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtleU91dHNpZGVPZlRlc3RDYXNlKAotICAg
ICAgICAidGltZXN0YW1wIik7Ci0gICAgRXhwZWN0Tm9uRmF0YWxGYWlsdXJlUmVjb3JkaW5nUHJv
cGVydHlXaXRoUmVzZXJ2ZWRLZXlPdXRzaWRlT2ZUZXN0Q2FzZSgKLSAgICAgICAgInRpbWUiKTsK
LSAgICBFeHBlY3ROb25GYXRhbEZhaWx1cmVSZWNvcmRpbmdQcm9wZXJ0eVdpdGhSZXNlcnZlZEtl
eU91dHNpZGVPZlRlc3RDYXNlKAotICAgICAgICAicmFuZG9tX3NlZWQiKTsKLSAgfQotfTsKLQot
Ly8gVGhpcyB3aWxsIHRlc3QgcHJvcGVydHkgcmVjb3JkaW5nIG91dHNpZGUgb2YgYW55IHRlc3Qg
b3IgdGVzdCBjYXNlLgotc3RhdGljIEVudmlyb25tZW50KiByZWNvcmRfcHJvcGVydHlfZW52ID0K
LSAgICBBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IFVuaXRUZXN0UmVjb3JkUHJvcGVydHlU
ZXN0RW52aXJvbm1lbnQpOwotCi0vLyBUaGlzIGdyb3VwIG9mIHRlc3RzIGlzIGZvciBwcmVkaWNh
dGUgYXNzZXJ0aW9ucyAoQVNTRVJUX1BSRUQqLCBldGMpCi0vLyBvZiB2YXJpb3VzIGFyaXRpZXMu
ICBUaGV5IGRvIG5vdCBhdHRlbXB0IHRvIGJlIGV4aGF1c3RpdmUuICBSYXRoZXIsCi0vLyB2aWV3
IHRoZW0gYXMgc21va2UgdGVzdHMgdGhhdCBjYW4gYmUgZWFzaWx5IHJldmlld2VkIGFuZCB2ZXJp
ZmllZC4KLS8vIEEgbW9yZSBjb21wbGV0ZSBzZXQgb2YgdGVzdHMgZm9yIHByZWRpY2F0ZSBhc3Nl
cnRpb25zIGNhbiBiZSBmb3VuZAotLy8gaW4gZ3Rlc3RfcHJlZF9pbXBsX3VuaXR0ZXN0LmNjLgot
Ci0vLyBGaXJzdCwgc29tZSBwcmVkaWNhdGVzIGFuZCBwcmVkaWNhdGUtZm9ybWF0dGVycyBuZWVk
ZWQgYnkgdGhlIHRlc3RzLgotCi0vLyBSZXR1cm5zIHRydWUgaWZmIHRoZSBhcmd1bWVudCBpcyBh
biBldmVuIG51bWJlci4KLWJvb2wgSXNFdmVuKGludCBuKSB7Ci0gIHJldHVybiAobiAlIDIpID09
IDA7Ci19Ci0KLS8vIEEgZnVuY3RvciB0aGF0IHJldHVybnMgdHJ1ZSBpZmYgdGhlIGFyZ3VtZW50
IGlzIGFuIGV2ZW4gbnVtYmVyLgotc3RydWN0IElzRXZlbkZ1bmN0b3IgewotICBib29sIG9wZXJh
dG9yKCkoaW50IG4pIHsgcmV0dXJuIElzRXZlbihuKTsgfQotfTsKLQotLy8gQSBwcmVkaWNhdGUt
Zm9ybWF0dGVyIGZ1bmN0aW9uIHRoYXQgYXNzZXJ0cyB0aGUgYXJndW1lbnQgaXMgYW4gZXZlbgot
Ly8gbnVtYmVyLgotQXNzZXJ0aW9uUmVzdWx0IEFzc2VydElzRXZlbihjb25zdCBjaGFyKiBleHBy
LCBpbnQgbikgewotICBpZiAoSXNFdmVuKG4pKSB7Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nl
c3MoKTsKLSAgfQotCi0gIE1lc3NhZ2UgbXNnOwotICBtc2cgPDwgZXhwciA8PCAiIGV2YWx1YXRl
cyB0byAiIDw8IG4gPDwgIiwgd2hpY2ggaXMgbm90IGV2ZW4uIjsKLSAgcmV0dXJuIEFzc2VydGlv
bkZhaWx1cmUobXNnKTsKLX0KLQotLy8gQSBwcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCByZXR1cm5z
IEFzc2VydGlvblJlc3VsdCBmb3IgdXNlIGluCi0vLyBFWFBFQ1QvQVNTRVJUX1RSVUUvRkFMU0Uu
Ci1Bc3NlcnRpb25SZXN1bHQgUmVzdWx0SXNFdmVuKGludCBuKSB7Ci0gIGlmIChJc0V2ZW4obikp
Ci0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKSA8PCBuIDw8ICIgaXMgZXZlbiI7Ci0gIGVs
c2UKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8IG4gPDwgIiBpcyBvZGQiOwotfQot
Ci0vLyBBIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgQXNzZXJ0aW9uUmVzdWx0IGJ1
dCBnaXZlcyBubwotLy8gZXhwbGFuYXRpb24gd2h5IGl0IHN1Y2NlZWRzLiBOZWVkZWQgZm9yIHRl
c3RpbmcgdGhhdAotLy8gRVhQRUNUL0FTU0VSVF9GQUxTRSBoYW5kbGVzIHN1Y2ggZnVuY3Rpb25z
IGNvcnJlY3RseS4KLUFzc2VydGlvblJlc3VsdCBSZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKGlu
dCBuKSB7Ci0gIGlmIChJc0V2ZW4obikpCi0gICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsK
LSAgZWxzZQotICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbiA8PCAiIGlzIG9kZCI7
Ci19Ci0KLS8vIEEgcHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yIHRoYXQgYXNzZXJ0cyB0aGUg
YXJndW1lbnQgaXMgYW4gZXZlbgotLy8gbnVtYmVyLgotc3RydWN0IEFzc2VydElzRXZlbkZ1bmN0
b3IgewotICBBc3NlcnRpb25SZXN1bHQgb3BlcmF0b3IoKShjb25zdCBjaGFyKiBleHByLCBpbnQg
bikgewotICAgIHJldHVybiBBc3NlcnRJc0V2ZW4oZXhwciwgbik7Ci0gIH0KLX07Ci0KLS8vIFJl
dHVybnMgdHJ1ZSBpZmYgdGhlIHN1bSBvZiB0aGUgYXJndW1lbnRzIGlzIGFuIGV2ZW4gbnVtYmVy
LgotYm9vbCBTdW1Jc0V2ZW4yKGludCBuMSwgaW50IG4yKSB7Ci0gIHJldHVybiBJc0V2ZW4objEg
KyBuMik7Ci19Ci0KLS8vIEEgZnVuY3RvciB0aGF0IHJldHVybnMgdHJ1ZSBpZmYgdGhlIHN1bSBv
ZiB0aGUgYXJndW1lbnRzIGlzIGFuIGV2ZW4KLS8vIG51bWJlci4KLXN0cnVjdCBTdW1Jc0V2ZW4z
RnVuY3RvciB7Ci0gIGJvb2wgb3BlcmF0b3IoKShpbnQgbjEsIGludCBuMiwgaW50IG4zKSB7Ci0g
ICAgcmV0dXJuIElzRXZlbihuMSArIG4yICsgbjMpOwotICB9Ci19OwotCi0vLyBBIHByZWRpY2F0
ZS1mb3JtYXR0ZXIgZnVuY3Rpb24gdGhhdCBhc3NlcnRzIHRoZSBzdW0gb2YgdGhlCi0vLyBhcmd1
bWVudHMgaXMgYW4gZXZlbiBudW1iZXIuCi1Bc3NlcnRpb25SZXN1bHQgQXNzZXJ0U3VtSXNFdmVu
NCgKLSAgICBjb25zdCBjaGFyKiBlMSwgY29uc3QgY2hhciogZTIsIGNvbnN0IGNoYXIqIGUzLCBj
b25zdCBjaGFyKiBlNCwKLSAgICBpbnQgbjEsIGludCBuMiwgaW50IG4zLCBpbnQgbjQpIHsKLSAg
Y29uc3QgaW50IHN1bSA9IG4xICsgbjIgKyBuMyArIG40OwotICBpZiAoSXNFdmVuKHN1bSkpIHsK
LSAgICByZXR1cm4gQXNzZXJ0aW9uU3VjY2VzcygpOwotICB9Ci0KLSAgTWVzc2FnZSBtc2c7Ci0g
IG1zZyA8PCBlMSA8PCAiICsgIiA8PCBlMiA8PCAiICsgIiA8PCBlMyA8PCAiICsgIiA8PCBlNAot
ICAgICAgPDwgIiAoIiA8PCBuMSA8PCAiICsgIiA8PCBuMiA8PCAiICsgIiA8PCBuMyA8PCAiICsg
IiA8PCBuNAotICAgICAgPDwgIikgZXZhbHVhdGVzIHRvICIgPDwgc3VtIDw8ICIsIHdoaWNoIGlz
IG5vdCBldmVuLiI7Ci0gIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKG1zZyk7Ci19Ci0KLS8vIEEg
cHJlZGljYXRlLWZvcm1hdHRlciBmdW5jdG9yIHRoYXQgYXNzZXJ0cyB0aGUgc3VtIG9mIHRoZSBh
cmd1bWVudHMKLS8vIGlzIGFuIGV2ZW4gbnVtYmVyLgotc3RydWN0IEFzc2VydFN1bUlzRXZlbjVG
dW5jdG9yIHsKLSAgQXNzZXJ0aW9uUmVzdWx0IG9wZXJhdG9yKCkoCi0gICAgICBjb25zdCBjaGFy
KiBlMSwgY29uc3QgY2hhciogZTIsIGNvbnN0IGNoYXIqIGUzLCBjb25zdCBjaGFyKiBlNCwKLSAg
ICAgIGNvbnN0IGNoYXIqIGU1LCBpbnQgbjEsIGludCBuMiwgaW50IG4zLCBpbnQgbjQsIGludCBu
NSkgewotICAgIGNvbnN0IGludCBzdW0gPSBuMSArIG4yICsgbjMgKyBuNCArIG41OwotICAgIGlm
IChJc0V2ZW4oc3VtKSkgewotICAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgICB9
Ci0KLSAgICBNZXNzYWdlIG1zZzsKLSAgICBtc2cgPDwgZTEgPDwgIiArICIgPDwgZTIgPDwgIiAr
ICIgPDwgZTMgPDwgIiArICIgPDwgZTQgPDwgIiArICIgPDwgZTUKLSAgICAgICAgPDwgIiAoIgot
ICAgICAgICA8PCBuMSA8PCAiICsgIiA8PCBuMiA8PCAiICsgIiA8PCBuMyA8PCAiICsgIiA8PCBu
NCA8PCAiICsgIiA8PCBuNQotICAgICAgICA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBzdW0gPDwg
Iiwgd2hpY2ggaXMgbm90IGV2ZW4uIjsKLSAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZShtc2cp
OwotICB9Ci19OwotCi0KLS8vIFRlc3RzIHVuYXJ5IHByZWRpY2F0ZSBhc3NlcnRpb25zLgotCi0v
LyBUZXN0cyB1bmFyeSBwcmVkaWNhdGUgYXNzZXJ0aW9ucyB0aGF0IGRvbid0IHVzZSBhIGN1c3Rv
bSBmb3JtYXR0ZXIuCi1URVNUKFByZWQxVGVzdCwgV2l0aG91dEZvcm1hdCkgewotICAvLyBTdWNj
ZXNzIGNhc2VzLgotICBFWFBFQ1RfUFJFRDEoSXNFdmVuRnVuY3RvcigpLCAyKSA8PCAiVGhpcyBm
YWlsdXJlIGlzIFVORVhQRUNURUQhIjsKLSAgQVNTRVJUX1BSRUQxKElzRXZlbiwgNCk7Ci0KLSAg
Ly8gRmFpbHVyZSBjYXNlcy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgRVhQRUNUX1BSRUQxKElzRXZlbiwgNSkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3Rl
ZC4iOwotICB9LCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfUFJFRDEoSXNFdmVuRnVuY3RvcigpLCA1KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgImV2YWx1YXRlcyB0byBmYWxzZSIpOwotfQotCi0vLyBUZXN0cyB1bmFyeSBwcmVk
aWNhdGUgYXNzZXJ0aW9ucyB0aGF0IHVzZSBhIGN1c3RvbSBmb3JtYXR0ZXIuCi1URVNUKFByZWQx
VGVzdCwgV2l0aEZvcm1hdCkgewotICAvLyBTdWNjZXNzIGNhc2VzLgotICBFWFBFQ1RfUFJFRF9G
T1JNQVQxKEFzc2VydElzRXZlbiwgMik7Ci0gIEFTU0VSVF9QUkVEX0ZPUk1BVDEoQXNzZXJ0SXNF
dmVuRnVuY3RvcigpLCA0KQotICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgVU5FWFBFQ1RFRCEiOwot
Ci0gIC8vIEZhaWx1cmUgY2FzZXMuCi0gIGNvbnN0IGludCBuID0gNTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX1BSRURfRk9STUFUMShBc3NlcnRJc0V2ZW5GdW5jdG9yKCksIG4p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAibiBldmFsdWF0ZXMgdG8gNSwgd2hpY2ggaXMg
bm90IGV2ZW4uIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFT
U0VSVF9QUkVEX0ZPUk1BVDEoQXNzZXJ0SXNFdmVuLCA1KSA8PCAiVGhpcyBmYWlsdXJlIGlzIGV4
cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIik7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgdW5hcnkgcHJlZGljYXRlIGFzc2VydGlvbnMgZXZhbHVhdGVzIHRoZWlyIGFyZ3Vt
ZW50cwotLy8gZXhhY3RseSBvbmNlLgotVEVTVChQcmVkMVRlc3QsIFNpbmdsZUV2YWx1YXRpb25P
bkZhaWx1cmUpIHsKLSAgLy8gQSBzdWNjZXNzIGNhc2UuCi0gIHN0YXRpYyBpbnQgbiA9IDA7Ci0g
IEVYUEVDVF9QUkVEMShJc0V2ZW4sIG4rKyk7Ci0gIEVYUEVDVF9FUSgxLCBuKSA8PCAiVGhlIGFy
Z3VtZW50IGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0KLSAgLy8gQSBmYWlsdXJl
IGNhc2UuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9Q
UkVEX0ZPUk1BVDEoQXNzZXJ0SXNFdmVuRnVuY3RvcigpLCBuKyspCi0gICAgICAgIDw8ICJUaGlz
IGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4i
KTsKLSAgRVhQRUNUX0VRKDIsIG4pIDw8ICJUaGUgYXJndW1lbnQgaXMgbm90IGV2YWx1YXRlZCBl
eGFjdGx5IG9uY2UuIjsKLX0KLQotCi0vLyBUZXN0cyBwcmVkaWNhdGUgYXNzZXJ0aW9ucyB3aG9z
ZSBhcml0eSBpcyA+PSAyLgotCi0vLyBUZXN0cyBwcmVkaWNhdGUgYXNzZXJ0aW9ucyB0aGF0IGRv
bid0IHVzZSBhIGN1c3RvbSBmb3JtYXR0ZXIuCi1URVNUKFByZWRUZXN0LCBXaXRob3V0Rm9ybWF0
KSB7Ci0gIC8vIFN1Y2Nlc3MgY2FzZXMuCi0gIEFTU0VSVF9QUkVEMihTdW1Jc0V2ZW4yLCAyLCA0
KSA8PCAiVGhpcyBmYWlsdXJlIGlzIFVORVhQRUNURUQhIjsKLSAgRVhQRUNUX1BSRUQzKFN1bUlz
RXZlbjNGdW5jdG9yKCksIDQsIDYsIDgpOwotCi0gIC8vIEZhaWx1cmUgY2FzZXMuCi0gIGNvbnN0
IGludCBuMSA9IDE7Ci0gIGNvbnN0IGludCBuMiA9IDI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEMihTdW1Jc0V2ZW4yLCBuMSwgbjIpIDw8
ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsKLSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBl
Y3RlZC4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJU
X1BSRUQzKFN1bUlzRXZlbjNGdW5jdG9yKCksIDEsIDIsIDQpOwotICB9LCAiZXZhbHVhdGVzIHRv
IGZhbHNlIik7Ci19Ci0KLS8vIFRlc3RzIHByZWRpY2F0ZSBhc3NlcnRpb25zIHRoYXQgdXNlIGEg
Y3VzdG9tIGZvcm1hdHRlci4KLVRFU1QoUHJlZFRlc3QsIFdpdGhGb3JtYXQpIHsKLSAgLy8gU3Vj
Y2VzcyBjYXNlcy4KLSAgQVNTRVJUX1BSRURfRk9STUFUNChBc3NlcnRTdW1Jc0V2ZW40LCA0LCA2
LCA4LCAxMCkgPDwKLSAgICAiVGhpcyBmYWlsdXJlIGlzIFVORVhQRUNURUQhIjsKLSAgRVhQRUNU
X1BSRURfRk9STUFUNShBc3NlcnRTdW1Jc0V2ZW41RnVuY3RvcigpLCAyLCA0LCA2LCA4LCAxMCk7
Ci0KLSAgLy8gRmFpbHVyZSBjYXNlcy4KLSAgY29uc3QgaW50IG4xID0gMTsKLSAgY29uc3QgaW50
IG4yID0gMjsKLSAgY29uc3QgaW50IG4zID0gNDsKLSAgY29uc3QgaW50IG40ID0gNjsKLSAgRVhQ
RUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFU
NChBc3NlcnRTdW1Jc0V2ZW40LCBuMSwgbjIsIG4zLCBuNCk7Ci0gIH0sICJldmFsdWF0ZXMgdG8g
MTMsIHdoaWNoIGlzIG5vdCBldmVuLiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBO
T0xJTlQKLSAgICBBU1NFUlRfUFJFRF9GT1JNQVQ1KEFzc2VydFN1bUlzRXZlbjVGdW5jdG9yKCks
IDEsIDIsIDQsIDYsIDgpCi0gICAgICAgIDw8ICJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuIjsK
LSAgfSwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBw
cmVkaWNhdGUgYXNzZXJ0aW9ucyBldmFsdWF0ZXMgdGhlaXIgYXJndW1lbnRzCi0vLyBleGFjdGx5
IG9uY2UuCi1URVNUKFByZWRUZXN0LCBTaW5nbGVFdmFsdWF0aW9uT25GYWlsdXJlKSB7Ci0gIC8v
IEEgc3VjY2VzcyBjYXNlLgotICBpbnQgbjEgPSAwOwotICBpbnQgbjIgPSAwOwotICBFWFBFQ1Rf
UFJFRDIoU3VtSXNFdmVuMiwgbjErKywgbjIrKyk7Ci0gIEVYUEVDVF9FUSgxLCBuMSkgPDwgIkFy
Z3VtZW50IDEgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIjsKLSAgRVhQRUNUX0VRKDEs
IG4yKSA8PCAiQXJndW1lbnQgMiBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotCi0g
IC8vIEFub3RoZXIgc3VjY2VzcyBjYXNlLgotICBuMSA9IG4yID0gMDsKLSAgaW50IG4zID0gMDsK
LSAgaW50IG40ID0gMDsKLSAgaW50IG41ID0gMDsKLSAgQVNTRVJUX1BSRURfRk9STUFUNShBc3Nl
cnRTdW1Jc0V2ZW41RnVuY3RvcigpLAotICAgICAgICAgICAgICAgICAgICAgIG4xKyssIG4yKyss
IG4zKyssIG40KyssIG41KyspCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiVGhpcyBmYWls
dXJlIGlzIFVORVhQRUNURUQhIjsKLSAgRVhQRUNUX0VRKDEsIG4xKSA8PCAiQXJndW1lbnQgMSBp
cyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjIpIDw8ICJB
cmd1bWVudCAyIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0gIEVYUEVDVF9FUSgx
LCBuMykgPDwgIkFyZ3VtZW50IDMgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIjsKLSAg
RVhQRUNUX0VRKDEsIG40KSA8PCAiQXJndW1lbnQgNCBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkg
b25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjUpIDw8ICJBcmd1bWVudCA1IGlzIG5vdCBldmFsdWF0
ZWQgZXhhY3RseSBvbmNlLiI7Ci0KLSAgLy8gQSBmYWlsdXJlIGNhc2UuCi0gIG4xID0gbjIgPSBu
MyA9IDA7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVD
VF9QUkVEMyhTdW1Jc0V2ZW4zRnVuY3RvcigpLCArK24xLCBuMisrLCBuMysrKQotICAgICAgICA8
PCAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiI7Ci0gIH0sICJUaGlzIGZhaWx1cmUgaXMgZXhw
ZWN0ZWQuIik7Ci0gIEVYUEVDVF9FUSgxLCBuMSkgPDwgIkFyZ3VtZW50IDEgaXMgbm90IGV2YWx1
YXRlZCBleGFjdGx5IG9uY2UuIjsKLSAgRVhQRUNUX0VRKDEsIG4yKSA8PCAiQXJndW1lbnQgMiBp
cyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjMpIDw8ICJB
cmd1bWVudCAzIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0KLSAgLy8gQW5vdGhl
ciBmYWlsdXJlIGNhc2UuCi0gIG4xID0gbjIgPSBuMyA9IG40ID0gMDsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUNChBc3NlcnRT
dW1Jc0V2ZW40LCArK24xLCBuMisrLCBuMysrLCBuNCsrKTsKLSAgfSwgImV2YWx1YXRlcyB0byAx
LCB3aGljaCBpcyBub3QgZXZlbi4iKTsKLSAgRVhQRUNUX0VRKDEsIG4xKSA8PCAiQXJndW1lbnQg
MSBpcyBub3QgZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4iOwotICBFWFBFQ1RfRVEoMSwgbjIpIDw8
ICJBcmd1bWVudCAyIGlzIG5vdCBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLiI7Ci0gIEVYUEVDVF9F
USgxLCBuMykgPDwgIkFyZ3VtZW50IDMgaXMgbm90IGV2YWx1YXRlZCBleGFjdGx5IG9uY2UuIjsK
LSAgRVhQRUNUX0VRKDEsIG40KSA8PCAiQXJndW1lbnQgNCBpcyBub3QgZXZhbHVhdGVkIGV4YWN0
bHkgb25jZS4iOwotfQotCi0KLS8vIFNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgdGVzdGluZyB1
c2luZyBvdmVybG9hZGVkL3RlbXBsYXRlCi0vLyBmdW5jdGlvbnMgd2l0aCBBU1NFUlRfUFJFRG4g
YW5kIEVYUEVDVF9QUkVEbi4KLQotYm9vbCBJc1Bvc2l0aXZlKGRvdWJsZSB4KSB7Ci0gIHJldHVy
biB4ID4gMDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIElzTmVnYXRpdmUoVCB4
KSB7Ci0gIHJldHVybiB4IDwgMDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFt
ZSBUMj4KLWJvb2wgR3JlYXRlclRoYW4oVDEgeDEsIFQyIHgyKSB7Ci0gIHJldHVybiB4MSA+IHgy
OwotfQotCi0vLyBUZXN0cyB0aGF0IG92ZXJsb2FkZWQgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGlu
ICpfUFJFRCogYXMgbG9uZyBhcwotLy8gdGhlaXIgdHlwZXMgYXJlIGV4cGxpY2l0bHkgc3BlY2lm
aWVkLgotVEVTVChQcmVkaWNhdGVBc3NlcnRpb25UZXN0LCBBY2NlcHRzT3ZlcmxvYWRlZEZ1bmN0
aW9uKSB7Ci0gIC8vIEMrK0J1aWxkZXIgcmVxdWlyZXMgQy1zdHlsZSBjYXN0cyByYXRoZXIgdGhh
biBzdGF0aWNfY2FzdC4KLSAgRVhQRUNUX1BSRUQxKChib29sICgqKShpbnQpKShJc1Bvc2l0aXZl
KSwgNSk7ICAvLyBOT0xJTlQKLSAgQVNTRVJUX1BSRUQxKChib29sICgqKShkb3VibGUpKShJc1Bv
c2l0aXZlKSwgNi4wKTsgIC8vIE5PTElOVAotfQotCi0vLyBUZXN0cyB0aGF0IHRlbXBsYXRlIGZ1
bmN0aW9ucyBjYW4gYmUgdXNlZCBpbiAqX1BSRUQqIGFzIGxvbmcgYXMKLS8vIHRoZWlyIHR5cGVz
IGFyZSBleHBsaWNpdGx5IHNwZWNpZmllZC4KLVRFU1QoUHJlZGljYXRlQXNzZXJ0aW9uVGVzdCwg
QWNjZXB0c1RlbXBsYXRlRnVuY3Rpb24pIHsKLSAgRVhQRUNUX1BSRUQxKElzTmVnYXRpdmU8aW50
PiwgLTUpOwotICAvLyBNYWtlcyBzdXJlIHRoYXQgd2UgY2FuIGhhbmRsZSB0ZW1wbGF0ZXMgd2l0
aCBtb3JlIHRoYW4gb25lCi0gIC8vIHBhcmFtZXRlci4KLSAgQVNTRVJUX1BSRUQyKChHcmVhdGVy
VGhhbjxpbnQsIGludD4pLCA1LCAwKTsKLX0KLQotCi0vLyBTb21lIGhlbHBlciBmdW5jdGlvbnMg
Zm9yIHRlc3RpbmcgdXNpbmcgb3ZlcmxvYWRlZC90ZW1wbGF0ZQotLy8gZnVuY3Rpb25zIHdpdGgg
QVNTRVJUX1BSRURfRk9STUFUbiBhbmQgRVhQRUNUX1BSRURfRk9STUFUbi4KLQotQXNzZXJ0aW9u
UmVzdWx0IElzUG9zaXRpdmVGb3JtYXQoY29uc3QgY2hhciogLyogZXhwciAqLywgaW50IG4pIHsK
LSAgcmV0dXJuIG4gPiAwID8gQXNzZXJ0aW9uU3VjY2VzcygpIDoKLSAgICAgIEFzc2VydGlvbkZh
aWx1cmUoTWVzc2FnZSgpIDw8ICJGYWlsdXJlIik7Ci19Ci0KLUFzc2VydGlvblJlc3VsdCBJc1Bv
c2l0aXZlRm9ybWF0KGNvbnN0IGNoYXIqIC8qIGV4cHIgKi8sIGRvdWJsZSB4KSB7Ci0gIHJldHVy
biB4ID4gMCA/IEFzc2VydGlvblN1Y2Nlc3MoKSA6Ci0gICAgICBBc3NlcnRpb25GYWlsdXJlKE1l
c3NhZ2UoKSA8PCAiRmFpbHVyZSIpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFzc2Vy
dGlvblJlc3VsdCBJc05lZ2F0aXZlRm9ybWF0KGNvbnN0IGNoYXIqIC8qIGV4cHIgKi8sIFQgeCkg
ewotICByZXR1cm4geCA8IDAgPyBBc3NlcnRpb25TdWNjZXNzKCkgOgotICAgICAgQXNzZXJ0aW9u
RmFpbHVyZShNZXNzYWdlKCkgPDwgIkZhaWx1cmUiKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KLUFzc2VydGlvblJlc3VsdCBFcXVhbHNGb3JtYXQoY29uc3QgY2hh
ciogLyogZXhwcjEgKi8sIGNvbnN0IGNoYXIqIC8qIGV4cHIyICovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUMSYgeDEsIGNvbnN0IFQyJiB4MikgewotICByZXR1cm4geDEg
PT0geDIgPyBBc3NlcnRpb25TdWNjZXNzKCkgOgotICAgICAgQXNzZXJ0aW9uRmFpbHVyZShNZXNz
YWdlKCkgPDwgIkZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBvdmVybG9hZGVkIGZ1bmN0
aW9ucyBjYW4gYmUgdXNlZCBpbiAqX1BSRURfRk9STUFUKgotLy8gd2l0aG91dCBleHBsaWNpdGx5
IHNwZWNpZnlpbmcgdGhlaXIgdHlwZXMuCi1URVNUKFByZWRpY2F0ZUZvcm1hdEFzc2VydGlvblRl
c3QsIEFjY2VwdHNPdmVybG9hZGVkRnVuY3Rpb24pIHsKLSAgRVhQRUNUX1BSRURfRk9STUFUMShJ
c1Bvc2l0aXZlRm9ybWF0LCA1KTsKLSAgQVNTRVJUX1BSRURfRk9STUFUMShJc1Bvc2l0aXZlRm9y
bWF0LCA2LjApOwotfQotCi0vLyBUZXN0cyB0aGF0IHRlbXBsYXRlIGZ1bmN0aW9ucyBjYW4gYmUg
dXNlZCBpbiAqX1BSRURfRk9STUFUKiB3aXRob3V0Ci0vLyBleHBsaWNpdGx5IHNwZWNpZnlpbmcg
dGhlaXIgdHlwZXMuCi1URVNUKFByZWRpY2F0ZUZvcm1hdEFzc2VydGlvblRlc3QsIEFjY2VwdHNU
ZW1wbGF0ZUZ1bmN0aW9uKSB7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1BVDEoSXNOZWdhdGl2ZUZvcm1h
dCwgLTUpOwotICBBU1NFUlRfUFJFRF9GT1JNQVQyKEVxdWFsc0Zvcm1hdCwgMywgMyk7Ci19Ci0K
LQotLy8gVGVzdHMgc3RyaW5nIGFzc2VydGlvbnMuCi0KLS8vIFRlc3RzIEFTU0VSVF9TVFJFUSB3
aXRoIG5vbi1OVUxMIGFyZ3VtZW50cy4KLVRFU1QoU3RyaW5nQXNzZXJ0aW9uVGVzdCwgQVNTRVJU
X1NUUkVRKSB7Ci0gIGNvbnN0IGNoYXIgKiBjb25zdCBwMSA9ICJnb29kIjsKLSAgQVNTRVJUX1NU
UkVRKHAxLCBwMSk7Ci0KLSAgLy8gTGV0IHAyIGhhdmUgdGhlIHNhbWUgY29udGVudCBhcyBwMSwg
YnV0IGJlIGF0IGEgZGlmZmVyZW50IGFkZHJlc3MuCi0gIGNvbnN0IGNoYXIgcDJbXSA9ICJnb29k
IjsKLSAgQVNTRVJUX1NUUkVRKHAxLCBwMik7Ci0KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX1NUUkVRKCJiYWQiLCAiZ29vZCIpLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0
ZWQ6IFwiYmFkXCIiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX1NUUkVRIHdpdGggTlVMTCBhcmd1
bWVudHMuCi1URVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJFUV9OdWxsKSB7Ci0g
IEFTU0VSVF9TVFJFUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KE5VTEwpLCBOVUxMKTsKLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUkVRKE5VTEwsICJub24tbnVsbCIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAibm9uLW51bGwiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX1NU
UkVRIHdpdGggTlVMTCBhcmd1bWVudHMuCi1URVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VS
VF9TVFJFUV9OdWxsMikgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSRVEoIm5v
bi1udWxsIiwgTlVMTCksCi0gICAgICAgICAgICAgICAgICAgICAgICJub24tbnVsbCIpOwotfQot
Ci0vLyBUZXN0cyBBU1NFUlRfU1RSTkUuCi1URVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VS
VF9TVFJORSkgewotICBBU1NFUlRfU1RSTkUoImhpIiwgIkhpIik7Ci0gIEFTU0VSVF9TVFJORSgi
SGkiLCBOVUxMKTsKLSAgQVNTRVJUX1NUUk5FKE5VTEwsICJIaSIpOwotICBBU1NFUlRfU1RSTkUo
IiIsIE5VTEwpOwotICBBU1NFUlRfU1RSTkUoTlVMTCwgIiIpOwotICBBU1NFUlRfU1RSTkUoIiIs
ICJIaSIpOwotICBBU1NFUlRfU1RSTkUoIkhpIiwgIiIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfU1RSTkUoIkhpIiwgIkhpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICJcIkhp
XCIgdnMgXCJIaVwiIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9TVFJDQVNFRVEuCi1URVNUKFN0
cmluZ0Fzc2VydGlvblRlc3QsIEFTU0VSVF9TVFJDQVNFRVEpIHsKLSAgQVNTRVJUX1NUUkNBU0VF
USgiaGkiLCAiSGkiKTsKLSAgQVNTRVJUX1NUUkNBU0VFUShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
ICo+KE5VTEwpLCBOVUxMKTsKLQotICBBU1NFUlRfU1RSQ0FTRUVRKCIiLCAiIik7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFRVEoIkhpIiwgImhpMiIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwotfQotCi0vLyBUZXN0cyBBU1NFUlRfU1RS
Q0FTRU5FLgotVEVTVChTdHJpbmdBc3NlcnRpb25UZXN0LCBBU1NFUlRfU1RSQ0FTRU5FKSB7Ci0g
IEFTU0VSVF9TVFJDQVNFTkUoImhpMSIsICJIaTIiKTsKLSAgQVNTRVJUX1NUUkNBU0VORSgiSGki
LCBOVUxMKTsKLSAgQVNTRVJUX1NUUkNBU0VORShOVUxMLCAiSGkiKTsKLSAgQVNTRVJUX1NUUkNB
U0VORSgiIiwgTlVMTCk7Ci0gIEFTU0VSVF9TVFJDQVNFTkUoTlVMTCwgIiIpOwotICBBU1NFUlRf
U1RSQ0FTRU5FKCIiLCAiSGkiKTsKLSAgQVNTRVJUX1NUUkNBU0VORSgiSGkiLCAiIik7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9TVFJDQVNFTkUoIkhpIiwgImhpIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICIoaWdub3JpbmcgY2FzZSkiKTsKLX0KLQotLy8gVGVzdHMgKl9TVFJF
USBvbiB3aWRlIHN0cmluZ3MuCi1URVNUKFN0cmluZ0Fzc2VydGlvblRlc3QsIFNUUkVRX1dpZGUp
IHsKLSAgLy8gTlVMTCBzdHJpbmdzLgotICBBU1NFUlRfU1RSRVEoc3RhdGljX2Nhc3Q8Y29uc3Qg
d2NoYXJfdCAqPihOVUxMKSwgTlVMTCk7Ci0KLSAgLy8gRW1wdHkgc3RyaW5ncy4KLSAgQVNTRVJU
X1NUUkVRKEwiIiwgTCIiKTsKLQotICAvLyBOb24tbnVsbCB2cyBOVUxMLgotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEoTCJub24tbnVsbCIsIE5VTEwpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAibm9uLW51bGwiKTsKLQotICAvLyBFcXVhbCBzdHJpbmdzLgotICBF
WFBFQ1RfU1RSRVEoTCJIaSIsIEwiSGkiKTsKLQotICAvLyBVbmVxdWFsIHN0cmluZ3MuCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJFUShMImFiYyIsIEwiQWJjIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJBYmMiKTsKLQotICAvLyBTdHJpbmdzIGNvbnRhaW5pbmcg
d2lkZSBjaGFyYWN0ZXJzLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSRVEo
TCJhYmNceDgxMTkiLCBMImFiY1x4ODEyMCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
YWJjIik7Ci0KLSAgLy8gVGhlIHN0cmVhbWluZyB2YXJpYXRpb24uCi0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9TVFJFUShMImFiY1x4ODExOSIsIEwi
YWJjXHg4MTIxIikgPDwgIkV4cGVjdGVkIGZhaWx1cmUiOwotICB9LCAiRXhwZWN0ZWQgZmFpbHVy
ZSIpOwotfQotCi0vLyBUZXN0cyAqX1NUUk5FIG9uIHdpZGUgc3RyaW5ncy4KLVRFU1QoU3RyaW5n
QXNzZXJ0aW9uVGVzdCwgU1RSTkVfV2lkZSkgewotICAvLyBOVUxMIHN0cmluZ3MuCi0gIEVYUEVD
VF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9TVFJORShzdGF0aWNf
Y2FzdDxjb25zdCB3Y2hhcl90ICo+KE5VTEwpLCBOVUxMKTsKLSAgfSwgIiIpOwotCi0gIC8vIEVt
cHR5IHN0cmluZ3MuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJORShMIiIs
IEwiIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJMXCJcIiIpOwotCi0gIC8vIE5vbi1u
dWxsIHZzIE5VTEwuCi0gIEFTU0VSVF9TVFJORShMIm5vbi1udWxsIiwgTlVMTCk7Ci0KLSAgLy8g
RXF1YWwgc3RyaW5ncy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUk5FKEwi
SGkiLCBMIkhpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJMXCJIaVwiIik7Ci0KLSAg
Ly8gVW5lcXVhbCBzdHJpbmdzLgotICBFWFBFQ1RfU1RSTkUoTCJhYmMiLCBMIkFiYyIpOwotCi0g
IC8vIFN0cmluZ3MgY29udGFpbmluZyB3aWRlIGNoYXJhY3RlcnMuCi0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9TVFJORShMImFiY1x4ODExOSIsIEwiYWJjXHg4MTE5IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJhYmMiKTsKLQotICAvLyBUaGUgc3RyZWFtaW5nIHZhcmlh
dGlvbi4KLSAgQVNTRVJUX1NUUk5FKEwiYWJjXHg4MTE5IiwgTCJhYmNceDgxMjAiKSA8PCAiVGhp
cyBzaG91bGRuJ3QgaGFwcGVuIjsKLX0KLQotLy8gVGVzdHMgZm9yIDo6dGVzdGluZzo6SXNTdWJz
dHJpbmcoKS4KLQotLy8gVGVzdHMgdGhhdCBJc1N1YnN0cmluZygpIHJldHVybnMgdGhlIGNvcnJl
Y3QgcmVzdWx0IHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIGNvbnN0IGNoYXIq
LgotVEVTVChJc1N1YnN0cmluZ1Rlc3QsIFJldHVybnNDb3JyZWN0UmVzdWx0Rm9yQ1N0cmluZykg
ewotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIiLCBOVUxMLCAiYSIpKTsKLSAgRVhQ
RUNUX0ZBTFNFKElzU3Vic3RyaW5nKCIiLCAiIiwgImIiLCBOVUxMKSk7Ci0gIEVYUEVDVF9GQUxT
RShJc1N1YnN0cmluZygiIiwgIiIsICJuZWVkbGUiLCAiaGF5c3RhY2siKSk7Ci0KLSAgRVhQRUNU
X1RSVUUoSXNTdWJzdHJpbmcoIiIsICIiLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oTlVMTCks
IE5VTEwpKTsKLSAgRVhQRUNUX1RSVUUoSXNTdWJzdHJpbmcoIiIsICIiLCAibmVlZGxlIiwgInR3
byBuZWVkbGVzIikpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzU3Vic3RyaW5nKCkgcmV0dXJucyB0
aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8vIGFyZ3VtZW50IHR5cGUgaXMgY29u
c3Qgd2NoYXJfdCouCi1URVNUKElzU3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRG
b3JXaWRlQ1N0cmluZykgewotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIiLCBrTnVs
bCwgTCJhIikpOwotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIiLCBMImIiLCBrTnVs
bCkpOwotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIsICIiLCBMIm5lZWRsZSIsIEwiaGF5
c3RhY2siKSk7Ci0KLSAgRVhQRUNUX1RSVUUoSXNTdWJzdHJpbmcoIiIsICIiLCBzdGF0aWNfY2Fz
dDxjb25zdCB3Y2hhcl90Kj4oTlVMTCksIE5VTEwpKTsKLSAgRVhQRUNUX1RSVUUoSXNTdWJzdHJp
bmcoIiIsICIiLCBMIm5lZWRsZSIsIEwidHdvIG5lZWRsZXMiKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
YXQgSXNTdWJzdHJpbmcoKSBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgbWVzc2FnZSB3aGVuIHRoZSBp
bnB1dAotLy8gYXJndW1lbnQgdHlwZSBpcyBjb25zdCBjaGFyKi4KLVRFU1QoSXNTdWJzdHJpbmdU
ZXN0LCBHZW5lcmF0ZXNDb3JyZWN0TWVzc2FnZUZvckNTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVR
KCJWYWx1ZSBvZjogbmVlZGxlX2V4cHJcbiIKLSAgICAgICAgICAgICAgICIgIEFjdHVhbDogXCJu
ZWVkbGVcIlxuIgotICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBhIHN1YnN0cmluZyBvZiBoYXlz
dGFja19leHByXG4iCi0gICAgICAgICAgICAgICAiV2hpY2ggaXM6IFwiaGF5c3RhY2tcIiIsCi0g
ICAgICAgICAgICAgICBJc1N1YnN0cmluZygibmVlZGxlX2V4cHIiLCAiaGF5c3RhY2tfZXhwciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZGxlIiwgImhheXN0YWNrIikuZmFpbHVy
ZV9tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzU3Vic3RyaW5nIHJldHVybnMgdGhl
IGNvcnJlY3QgcmVzdWx0IHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIDo6c3Rk
OjpzdHJpbmcuCi1URVNUKElzU3Vic3RyaW5nVGVzdCwgUmV0dXJuc0NvcnJlY3RSZXN1bHRzRm9y
U3RkU3RyaW5nKSB7Ci0gIEVYUEVDVF9UUlVFKElzU3Vic3RyaW5nKCIiLCAiIiwgc3RkOjpzdHJp
bmcoImhlbGxvIiksICJhaGVsbG9iIikpOwotICBFWFBFQ1RfRkFMU0UoSXNTdWJzdHJpbmcoIiIs
ICIiLCAiaGVsbG8iLCBzdGQ6OnN0cmluZygid29ybGQiKSkpOwotfQotCi0jaWYgR1RFU1RfSEFT
X1NURF9XU1RSSU5HCi0vLyBUZXN0cyB0aGF0IElzU3Vic3RyaW5nIHJldHVybnMgdGhlIGNvcnJl
Y3QgcmVzdWx0IHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIDo6c3RkOjp3c3Ry
aW5nLgotVEVTVChJc1N1YnN0cmluZ1Rlc3QsIFJldHVybnNDb3JyZWN0UmVzdWx0Rm9yU3RkV3N0
cmluZykgewotICBFWFBFQ1RfVFJVRShJc1N1YnN0cmluZygiIiwgIiIsIDo6c3RkOjp3c3RyaW5n
KEwibmVlZGxlIiksIEwidHdvIG5lZWRsZXMiKSk7Ci0gIEVYUEVDVF9GQUxTRShJc1N1YnN0cmlu
ZygiIiwgIiIsIEwibmVlZGxlIiwgOjpzdGQ6OndzdHJpbmcoTCJoYXlzdGFjayIpKSk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgSXNTdWJzdHJpbmcoKSBnZW5lcmF0ZXMgdGhlIGNvcnJlY3QgbWVzc2Fn
ZSB3aGVuIHRoZSBpbnB1dAotLy8gYXJndW1lbnQgdHlwZSBpcyA6OnN0ZDo6d3N0cmluZy4KLVRF
U1QoSXNTdWJzdHJpbmdUZXN0LCBHZW5lcmF0ZXNDb3JyZWN0TWVzc2FnZUZvcldzdHJpbmcpIHsK
LSAgRVhQRUNUX1NUUkVRKCJWYWx1ZSBvZjogbmVlZGxlX2V4cHJcbiIKLSAgICAgICAgICAgICAg
ICIgIEFjdHVhbDogTFwibmVlZGxlXCJcbiIKLSAgICAgICAgICAgICAgICJFeHBlY3RlZDogYSBz
dWJzdHJpbmcgb2YgaGF5c3RhY2tfZXhwclxuIgotICAgICAgICAgICAgICAgIldoaWNoIGlzOiBM
XCJoYXlzdGFja1wiIiwKLSAgICAgICAgICAgICAgIElzU3Vic3RyaW5nKAotICAgICAgICAgICAg
ICAgICAgICJuZWVkbGVfZXhwciIsICJoYXlzdGFja19leHByIiwKLSAgICAgICAgICAgICAgICAg
ICA6OnN0ZDo6d3N0cmluZyhMIm5lZWRsZSIpLCBMImhheXN0YWNrIikuZmFpbHVyZV9tZXNzYWdl
KCkpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19TVERfV1NUUklORwotCi0vLyBUZXN0cyBm
b3IgOjp0ZXN0aW5nOjpJc05vdFN1YnN0cmluZygpLgotCi0vLyBUZXN0cyB0aGF0IElzTm90U3Vi
c3RyaW5nKCkgcmV0dXJucyB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaW5wdXQKLS8vIGFy
Z3VtZW50IHR5cGUgaXMgY29uc3QgY2hhciouCi1URVNUKElzTm90U3Vic3RyaW5nVGVzdCwgUmV0
dXJuc0NvcnJlY3RSZXN1bHRGb3JDU3RyaW5nKSB7Ci0gIEVYUEVDVF9UUlVFKElzTm90U3Vic3Ry
aW5nKCIiLCAiIiwgIm5lZWRsZSIsICJoYXlzdGFjayIpKTsKLSAgRVhQRUNUX0ZBTFNFKElzTm90
U3Vic3RyaW5nKCIiLCAiIiwgIm5lZWRsZSIsICJ0d28gbmVlZGxlcyIpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBJc05vdFN1YnN0cmluZygpIHJldHVybnMgdGhlIGNvcnJlY3QgcmVzdWx0IHdoZW4g
dGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIGNvbnN0IHdjaGFyX3QqLgotVEVTVChJc05v
dFN1YnN0cmluZ1Rlc3QsIFJldHVybnNDb3JyZWN0UmVzdWx0Rm9yV2lkZUNTdHJpbmcpIHsKLSAg
RVhQRUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCBMIm5lZWRsZSIsIEwiaGF5c3RhY2si
KSk7Ci0gIEVYUEVDVF9GQUxTRShJc05vdFN1YnN0cmluZygiIiwgIiIsIEwibmVlZGxlIiwgTCJ0
d28gbmVlZGxlcyIpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBJc05vdFN1YnN0cmluZygpIGdlbmVy
YXRlcyB0aGUgY29ycmVjdCBtZXNzYWdlIHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBl
IGlzIGNvbnN0IHdjaGFyX3QqLgotVEVTVChJc05vdFN1YnN0cmluZ1Rlc3QsIEdlbmVyYXRlc0Nv
cnJlY3RNZXNzYWdlRm9yV2lkZUNTdHJpbmcpIHsKLSAgRVhQRUNUX1NUUkVRKCJWYWx1ZSBvZjog
bmVlZGxlX2V4cHJcbiIKLSAgICAgICAgICAgICAgICIgIEFjdHVhbDogTFwibmVlZGxlXCJcbiIK
LSAgICAgICAgICAgICAgICJFeHBlY3RlZDogbm90IGEgc3Vic3RyaW5nIG9mIGhheXN0YWNrX2V4
cHJcbiIKLSAgICAgICAgICAgICAgICJXaGljaCBpczogTFwidHdvIG5lZWRsZXNcIiIsCi0gICAg
ICAgICAgICAgICBJc05vdFN1YnN0cmluZygKLSAgICAgICAgICAgICAgICAgICAibmVlZGxlX2V4
cHIiLCAiaGF5c3RhY2tfZXhwciIsCi0gICAgICAgICAgICAgICAgICAgTCJuZWVkbGUiLCBMInR3
byBuZWVkbGVzIikuZmFpbHVyZV9tZXNzYWdlKCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzTm90
U3Vic3RyaW5nIHJldHVybnMgdGhlIGNvcnJlY3QgcmVzdWx0IHdoZW4gdGhlIGlucHV0Ci0vLyBh
cmd1bWVudCB0eXBlIGlzIDo6c3RkOjpzdHJpbmcuCi1URVNUKElzTm90U3Vic3RyaW5nVGVzdCwg
UmV0dXJuc0NvcnJlY3RSZXN1bHRzRm9yU3RkU3RyaW5nKSB7Ci0gIEVYUEVDVF9GQUxTRShJc05v
dFN1YnN0cmluZygiIiwgIiIsIHN0ZDo6c3RyaW5nKCJoZWxsbyIpLCAiYWhlbGxvYiIpKTsKLSAg
RVhQRUNUX1RSVUUoSXNOb3RTdWJzdHJpbmcoIiIsICIiLCAiaGVsbG8iLCBzdGQ6OnN0cmluZygi
d29ybGQiKSkpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzTm90U3Vic3RyaW5nKCkgZ2VuZXJhdGVz
IHRoZSBjb3JyZWN0IG1lc3NhZ2Ugd2hlbiB0aGUgaW5wdXQKLS8vIGFyZ3VtZW50IHR5cGUgaXMg
OjpzdGQ6OnN0cmluZy4KLVRFU1QoSXNOb3RTdWJzdHJpbmdUZXN0LCBHZW5lcmF0ZXNDb3JyZWN0
TWVzc2FnZUZvclN0ZFN0cmluZykgewotICBFWFBFQ1RfU1RSRVEoIlZhbHVlIG9mOiBuZWVkbGVf
ZXhwclxuIgotICAgICAgICAgICAgICAgIiAgQWN0dWFsOiBcIm5lZWRsZVwiXG4iCi0gICAgICAg
ICAgICAgICAiRXhwZWN0ZWQ6IG5vdCBhIHN1YnN0cmluZyBvZiBoYXlzdGFja19leHByXG4iCi0g
ICAgICAgICAgICAgICAiV2hpY2ggaXM6IFwidHdvIG5lZWRsZXNcIiIsCi0gICAgICAgICAgICAg
ICBJc05vdFN1YnN0cmluZygKLSAgICAgICAgICAgICAgICAgICAibmVlZGxlX2V4cHIiLCAiaGF5
c3RhY2tfZXhwciIsCi0gICAgICAgICAgICAgICAgICAgOjpzdGQ6OnN0cmluZygibmVlZGxlIiks
ICJ0d28gbmVlZGxlcyIpLmZhaWx1cmVfbWVzc2FnZSgpKTsKLX0KLQotI2lmIEdURVNUX0hBU19T
VERfV1NUUklORwotCi0vLyBUZXN0cyB0aGF0IElzTm90U3Vic3RyaW5nIHJldHVybnMgdGhlIGNv
cnJlY3QgcmVzdWx0IHdoZW4gdGhlIGlucHV0Ci0vLyBhcmd1bWVudCB0eXBlIGlzIDo6c3RkOjp3
c3RyaW5nLgotVEVTVChJc05vdFN1YnN0cmluZ1Rlc3QsIFJldHVybnNDb3JyZWN0UmVzdWx0Rm9y
U3RkV3N0cmluZykgewotICBFWFBFQ1RfRkFMU0UoCi0gICAgICBJc05vdFN1YnN0cmluZygiIiwg
IiIsIDo6c3RkOjp3c3RyaW5nKEwibmVlZGxlIiksIEwidHdvIG5lZWRsZXMiKSk7Ci0gIEVYUEVD
VF9UUlVFKElzTm90U3Vic3RyaW5nKCIiLCAiIiwgTCJuZWVkbGUiLCA6OnN0ZDo6d3N0cmluZyhM
ImhheXN0YWNrIikpKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1REX1dTVFJJTkcKLQot
Ly8gVGVzdHMgZmxvYXRpbmctcG9pbnQgYXNzZXJ0aW9ucy4KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFJhd1R5cGU+Ci1jbGFzcyBGbG9hdGluZ1BvaW50VGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90
ZWN0ZWQ6Ci0gIC8vIFByZS1jYWxjdWxhdGVkIG51bWJlcnMgdG8gYmUgdXNlZCBieSB0aGUgdGVz
dHMuCi0gIHN0cnVjdCBUZXN0VmFsdWVzIHsKLSAgICBSYXdUeXBlIGNsb3NlX3RvX3Bvc2l0aXZl
X3plcm87Ci0gICAgUmF3VHlwZSBjbG9zZV90b19uZWdhdGl2ZV96ZXJvOwotICAgIFJhd1R5cGUg
ZnVydGhlcl9mcm9tX25lZ2F0aXZlX3plcm87Ci0KLSAgICBSYXdUeXBlIGNsb3NlX3RvX29uZTsK
LSAgICBSYXdUeXBlIGZ1cnRoZXJfZnJvbV9vbmU7Ci0KLSAgICBSYXdUeXBlIGluZmluaXR5Owot
ICAgIFJhd1R5cGUgY2xvc2VfdG9faW5maW5pdHk7Ci0gICAgUmF3VHlwZSBmdXJ0aGVyX2Zyb21f
aW5maW5pdHk7Ci0KLSAgICBSYXdUeXBlIG5hbjE7Ci0gICAgUmF3VHlwZSBuYW4yOwotICB9Owot
Ci0gIHR5cGVkZWYgdHlwZW5hbWUgdGVzdGluZzo6aW50ZXJuYWw6OkZsb2F0aW5nUG9pbnQ8UmF3
VHlwZT4gRmxvYXRpbmc7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgRmxvYXRpbmc6OkJpdHMgQml0czsK
LQotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAgY29uc3Qgc2l6ZV90IG1heF91bHBzID0g
RmxvYXRpbmc6OmtNYXhVbHBzOwotCi0gICAgLy8gVGhlIGJpdHMgdGhhdCByZXByZXNlbnQgMC4w
LgotICAgIGNvbnN0IEJpdHMgemVyb19iaXRzID0gRmxvYXRpbmcoMCkuYml0cygpOwotCi0gICAg
Ly8gTWFrZXMgc29tZSBudW1iZXJzIGNsb3NlIHRvIDAuMC4KLSAgICB2YWx1ZXNfLmNsb3NlX3Rv
X3Bvc2l0aXZlX3plcm8gPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRzKAotICAgICAgICB6ZXJv
X2JpdHMgKyBtYXhfdWxwcy8yKTsKLSAgICB2YWx1ZXNfLmNsb3NlX3RvX25lZ2F0aXZlX3plcm8g
PSAtRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cygKLSAgICAgICAgemVyb19iaXRzICsgbWF4X3Vs
cHMgLSBtYXhfdWxwcy8yKTsKLSAgICB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJv
ID0gLUZsb2F0aW5nOjpSZWludGVycHJldEJpdHMoCi0gICAgICAgIHplcm9fYml0cyArIG1heF91
bHBzICsgMSAtIG1heF91bHBzLzIpOwotCi0gICAgLy8gVGhlIGJpdHMgdGhhdCByZXByZXNlbnQg
MS4wLgotICAgIGNvbnN0IEJpdHMgb25lX2JpdHMgPSBGbG9hdGluZygxKS5iaXRzKCk7Ci0KLSAg
ICAvLyBNYWtlcyBzb21lIG51bWJlcnMgY2xvc2UgdG8gMS4wLgotICAgIHZhbHVlc18uY2xvc2Vf
dG9fb25lID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cyhvbmVfYml0cyArIG1heF91bHBzKTsK
LSAgICB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUgPSBGbG9hdGluZzo6UmVpbnRlcnByZXRCaXRz
KAotICAgICAgICBvbmVfYml0cyArIG1heF91bHBzICsgMSk7Ci0KLSAgICAvLyAraW5maW5pdHku
Ci0gICAgdmFsdWVzXy5pbmZpbml0eSA9IEZsb2F0aW5nOjpJbmZpbml0eSgpOwotCi0gICAgLy8g
VGhlIGJpdHMgdGhhdCByZXByZXNlbnQgK2luZmluaXR5LgotICAgIGNvbnN0IEJpdHMgaW5maW5p
dHlfYml0cyA9IEZsb2F0aW5nKHZhbHVlc18uaW5maW5pdHkpLmJpdHMoKTsKLQotICAgIC8vIE1h
a2VzIHNvbWUgbnVtYmVycyBjbG9zZSB0byBpbmZpbml0eS4KLSAgICB2YWx1ZXNfLmNsb3NlX3Rv
X2luZmluaXR5ID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cygKLSAgICAgICAgaW5maW5pdHlf
Yml0cyAtIG1heF91bHBzKTsKLSAgICB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9pbmZpbml0eSA9IEZs
b2F0aW5nOjpSZWludGVycHJldEJpdHMoCi0gICAgICAgIGluZmluaXR5X2JpdHMgLSBtYXhfdWxw
cyAtIDEpOwotCi0gICAgLy8gTWFrZXMgc29tZSBOQU4ncy4gIFNldHMgdGhlIG1vc3Qgc2lnbmlm
aWNhbnQgYml0IG9mIHRoZSBmcmFjdGlvbiBzbyB0aGF0Ci0gICAgLy8gb3VyIE5hTidzIGFyZSBx
dWlldDsgdHJ5aW5nIHRvIHByb2Nlc3MgYSBzaWduYWxpbmcgTmFOIHdvdWxkIHJhaXNlIGFuCi0g
ICAgLy8gZXhjZXB0aW9uIGlmIG91ciBlbnZpcm9ubWVudCBlbmFibGVzIGZsb2F0aW5nIHBvaW50
IGV4Y2VwdGlvbnMuCi0gICAgdmFsdWVzXy5uYW4xID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0
cyhGbG9hdGluZzo6a0V4cG9uZW50Qml0TWFzawotICAgICAgICB8IChzdGF0aWNfY2FzdDxCaXRz
PigxKSA8PCAoRmxvYXRpbmc6OmtGcmFjdGlvbkJpdENvdW50IC0gMSkpIHwgMSk7Ci0gICAgdmFs
dWVzXy5uYW4yID0gRmxvYXRpbmc6OlJlaW50ZXJwcmV0Qml0cyhGbG9hdGluZzo6a0V4cG9uZW50
Qml0TWFzawotICAgICAgICB8IChzdGF0aWNfY2FzdDxCaXRzPigxKSA8PCAoRmxvYXRpbmc6OmtG
cmFjdGlvbkJpdENvdW50IC0gMSkpIHwgMjAwKTsKLSAgfQotCi0gIHZvaWQgVGVzdFNpemUoKSB7
Ci0gICAgRVhQRUNUX0VRKHNpemVvZihSYXdUeXBlKSwgc2l6ZW9mKEJpdHMpKTsKLSAgfQotCi0g
IHN0YXRpYyBUZXN0VmFsdWVzIHZhbHVlc187Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmF3
VHlwZT4KLXR5cGVuYW1lIEZsb2F0aW5nUG9pbnRUZXN0PFJhd1R5cGU+OjpUZXN0VmFsdWVzCi0g
ICAgRmxvYXRpbmdQb2ludFRlc3Q8UmF3VHlwZT46OnZhbHVlc187Ci0KLS8vIEluc3RhbnRpYXRl
cyBGbG9hdGluZ1BvaW50VGVzdCBmb3IgdGVzdGluZyAqX0ZMT0FUX0VRLgotdHlwZWRlZiBGbG9h
dGluZ1BvaW50VGVzdDxmbG9hdD4gRmxvYXRUZXN0OwotCi0vLyBUZXN0cyB0aGF0IHRoZSBzaXpl
IG9mIEZsb2F0OjpCaXRzIG1hdGNoZXMgdGhlIHNpemUgb2YgZmxvYXQuCi1URVNUX0YoRmxvYXRU
ZXN0LCBTaXplKSB7Ci0gIFRlc3RTaXplKCk7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyB3aXRo
ICswIGFuZCAtMC4KLVRFU1RfRihGbG9hdFRlc3QsIFplcm9zKSB7Ci0gIEVYUEVDVF9GTE9BVF9F
USgwLjAsIC0wLjApOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEo
LTAuMCwgMS4wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMCIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfRkxPQVRfRVEoMC4wLCAxLjUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAiMS41Iik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBudW1iZXJzIGNsb3NlIHRv
IDAuCi0vLwotLy8gVGhpcyBlbnN1cmVzIHRoYXQgKl9GTE9BVF9FUSBoYW5kbGVzIHRoZSBzaWdu
IGNvcnJlY3RseSBhbmQgbm8KLS8vIG92ZXJmbG93IG9jY3VycyB3aGVuIGNvbXBhcmluZyBudW1i
ZXJzIHdob3NlIGFic29sdXRlIHZhbHVlIGlzIHZlcnkKLS8vIHNtYWxsLgotVEVTVF9GKEZsb2F0
VGVzdCwgQWxtb3N0WmVyb3MpIHsKLSAgLy8gSW4gQysrQnVpbGRlciwgbmFtZXMgd2l0aGluIGxv
Y2FsIGNsYXNzZXMgKHN1Y2ggYXMgdXNlZCBieQotICAvLyBFWFBFQ1RfRkFUQUxfRkFJTFVSRSkg
Y2Fubm90IGJlIHJlc29sdmVkIGFnYWluc3Qgc3RhdGljIG1lbWJlcnMgb2YgdGhlCi0gIC8vIHNj
b3BpbmcgY2xhc3MuICBVc2UgYSBzdGF0aWMgbG9jYWwgYWxpYXMgYXMgYSB3b3JrYXJvdW5kLgot
ICAvLyBXZSB1c2UgdGhlIGFzc2lnbm1lbnQgc3ludGF4IHNpbmNlIHNvbWUgY29tcGlsZXJzLCBs
aWtlIFN1biBTdHVkaW8sCi0gIC8vIGRvbid0IGFsbG93IGluaXRpYWxpemluZyByZWZlcmVuY2Vz
IHVzaW5nIGNvbnN0cnVjdGlvbiBzeW50YXgKLSAgLy8gKHBhcmVudGhlc2VzKS4KLSAgc3RhdGlj
IGNvbnN0IEZsb2F0VGVzdDo6VGVzdFZhbHVlcyYgdiA9IHRoaXMtPnZhbHVlc187Ci0KLSAgRVhQ
RUNUX0ZMT0FUX0VRKDAuMCwgdi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvKTsKLSAgRVhQRUNUX0ZM
T0FUX0VRKC0wLjAsIHYuY2xvc2VfdG9fbmVnYXRpdmVfemVybyk7Ci0gIEVYUEVDVF9GTE9BVF9F
USh2LmNsb3NlX3RvX3Bvc2l0aXZlX3plcm8sIHYuY2xvc2VfdG9fbmVnYXRpdmVfemVybyk7Ci0K
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX0ZMT0FUX0VR
KHYuY2xvc2VfdG9fcG9zaXRpdmVfemVybywKLSAgICAgICAgICAgICAgICAgICAgdi5mdXJ0aGVy
X2Zyb21fbmVnYXRpdmVfemVybyk7Ci0gIH0sICJ2LmZ1cnRoZXJfZnJvbV9uZWdhdGl2ZV96ZXJv
Iik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmluZyBudW1iZXJzIGNsb3NlIHRvIGVhY2ggb3RoZXIu
Ci1URVNUX0YoRmxvYXRUZXN0LCBTbWFsbERpZmYpIHsKLSAgRVhQRUNUX0ZMT0FUX0VRKDEuMCwg
dmFsdWVzXy5jbG9zZV90b19vbmUpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1Rf
RkxPQVRfRVEoMS4wLCB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAidmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lIik7Ci19Ci0KLS8vIFRlc3RzIGNv
bXBhcmluZyBudW1iZXJzIGZhciBhcGFydC4KLVRFU1RfRihGbG9hdFRlc3QsIExhcmdlRGlmZikg
ewotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEoMi41LCAzLjApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMy4wIik7Ci19Ci0KLS8vIFRlc3RzIGNvbXBhcmlu
ZyB3aXRoIGluZmluaXR5LgotLy8KLS8vIFRoaXMgZW5zdXJlcyB0aGF0IG5vIG92ZXJmbG93IG9j
Y3VycyB3aGVuIGNvbXBhcmluZyBudW1iZXJzIHdob3NlCi0vLyBhYnNvbHV0ZSB2YWx1ZSBpcyB2
ZXJ5IGxhcmdlLgotVEVTVF9GKEZsb2F0VGVzdCwgSW5maW5pdHkpIHsKLSAgRVhQRUNUX0ZMT0FU
X0VRKHZhbHVlc18uaW5maW5pdHksIHZhbHVlc18uY2xvc2VfdG9faW5maW5pdHkpOwotICBFWFBF
Q1RfRkxPQVRfRVEoLXZhbHVlc18uaW5maW5pdHksIC12YWx1ZXNfLmNsb3NlX3RvX2luZmluaXR5
KTsKLSNpZiAhR1RFU1RfT1NfU1lNQklBTgotICAvLyBOb2tpYSdzIFNUTHBvcnQgY3Jhc2hlcyBp
ZiB3ZSB0cnkgdG8gb3V0cHV0IGluZmluaXR5IG9yIE5hTi4KLSAgRVhQRUNUX05PTkZBVEFMX0ZB
SUxVUkUoRVhQRUNUX0ZMT0FUX0VRKHZhbHVlc18uaW5maW5pdHksIC12YWx1ZXNfLmluZmluaXR5
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIi12YWx1ZXNfLmluZmluaXR5Iik7Ci0KLSAg
Ly8gVGhpcyBpcyBpbnRlcmVzdGluZyBhcyB0aGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5
IGFuZCBuYW4xCi0gIC8vIGFyZSBvbmx5IDEgRExQIGFwYXJ0LgotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5uYW4xKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlc18ubmFuMSIpOwotI2VuZGlmICAvLyAh
R1RFU1RfT1NfU1lNQklBTgotfQotCi0vLyBUZXN0cyB0aGF0IGNvbXBhcmluZyB3aXRoIE5BTiBh
bHdheXMgcmV0dXJucyBmYWxzZS4KLVRFU1RfRihGbG9hdFRlc3QsIE5hTikgewotI2lmICFHVEVT
VF9PU19TWU1CSUFOCi0vLyBOb2tpYSdzIFNUTHBvcnQgY3Jhc2hlcyBpZiB3ZSB0cnkgdG8gb3V0
cHV0IGluZmluaXR5IG9yIE5hTi4KLQotICAvLyBJbiBDKytCdWlsZGVyLCBuYW1lcyB3aXRoaW4g
bG9jYWwgY2xhc3NlcyAoc3VjaCBhcyB1c2VkIGJ5Ci0gIC8vIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KSBjYW5ub3QgYmUgcmVzb2x2ZWQgYWdhaW5zdCBzdGF0aWMgbWVtYmVycyBvZiB0aGUKLSAgLy8g
c2NvcGluZyBjbGFzcy4gIFVzZSBhIHN0YXRpYyBsb2NhbCBhbGlhcyBhcyBhIHdvcmthcm91bmQu
Ci0gIC8vIFdlIHVzZSB0aGUgYXNzaWdubWVudCBzeW50YXggc2luY2Ugc29tZSBjb21waWxlcnMs
IGxpa2UgU3VuIFN0dWRpbywKLSAgLy8gZG9uJ3QgYWxsb3cgaW5pdGlhbGl6aW5nIHJlZmVyZW5j
ZXMgdXNpbmcgY29uc3RydWN0aW9uIHN5bnRheAotICAvLyAocGFyZW50aGVzZXMpLgotICBzdGF0
aWMgY29uc3QgRmxvYXRUZXN0OjpUZXN0VmFsdWVzJiB2ID0gdGhpcy0+dmFsdWVzXzsKLQotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkxPQVRfRVEodi5uYW4xLCB2Lm5hbjEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAidi5uYW4xIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9GTE9BVF9FUSh2Lm5hbjEsIHYubmFuMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJ2Lm5hbjIiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZM
T0FUX0VRKDEuMCwgdi5uYW4xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInYubmFuMSIp
OwotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GTE9BVF9FUSh2Lm5hbjEsIHYuaW5m
aW5pdHkpLAotICAgICAgICAgICAgICAgICAgICAgICAidi5pbmZpbml0eSIpOwotI2VuZGlmICAv
LyAhR1RFU1RfT1NfU1lNQklBTgotfQotCi0vLyBUZXN0cyB0aGF0ICpfRkxPQVRfRVEgYXJlIHJl
ZmxleGl2ZS4KLVRFU1RfRihGbG9hdFRlc3QsIFJlZmxleGl2ZSkgewotICBFWFBFQ1RfRkxPQVRf
RVEoMC4wLCAwLjApOwotICBFWFBFQ1RfRkxPQVRfRVEoMS4wLCAxLjApOwotICBBU1NFUlRfRkxP
QVRfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5pbmZpbml0eSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgKl9GTE9BVF9FUSBhcmUgY29tbXV0YXRpdmUuCi1URVNUX0YoRmxvYXRUZXN0LCBDb21t
dXRhdGl2ZSkgewotICAvLyBXZSBhbHJlYWR5IHRlc3RlZCBFWFBFQ1RfRkxPQVRfRVEoMS4wLCB2
YWx1ZXNfLmNsb3NlX3RvX29uZSkuCi0gIEVYUEVDVF9GTE9BVF9FUSh2YWx1ZXNfLmNsb3NlX3Rv
X29uZSwgMS4wKTsKLQotICAvLyBXZSBhbHJlYWR5IHRlc3RlZCBFWFBFQ1RfRkxPQVRfRVEoMS4w
LCB2YWx1ZXNfLmZ1cnRoZXJfZnJvbV9vbmUpLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRkxPQVRfRVEodmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lLCAxLjApLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMS4wIik7Ci19Ci0KLS8vIFRlc3RzIEVYUEVDVF9ORUFSLgotVEVT
VF9GKEZsb2F0VGVzdCwgRVhQRUNUX05FQVIpIHsKLSAgRVhQRUNUX05FQVIoLTEuMGYsIC0xLjFm
LCAwLjJmKTsKLSAgRVhQRUNUX05FQVIoMi4wZiwgMy4wZiwgMS4wZik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9ORUFSKDEuMGYsMS41ZiwgMC4yNWYpLCAgLy8gTk9MSU5UCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDEuMGYgYW5k
IDEuNWYgaXMgMC41LCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCBleGNlZWRz
IDAuMjVmIik7Ci0gIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJl
IGlzIGludGVudGlvbmFsbHkgbm8KLSAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGlu
IHRoZSBwcmV2aW91cyBsaW5lLgotfQotCi0vLyBUZXN0cyBBU1NFUlRfTkVBUi4KLVRFU1RfRihG
bG9hdFRlc3QsIEFTU0VSVF9ORUFSKSB7Ci0gIEFTU0VSVF9ORUFSKC0xLjBmLCAtMS4xZiwgMC4y
Zik7Ci0gIEFTU0VSVF9ORUFSKDIuMGYsIDMuMGYsIDEuMGYpOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfTkVBUigxLjBmLDEuNWYsIDAuMjVmKSwgIC8vIE5PTElOVAotICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAxLjBmIGFuZCAxLjVmIGlzIDAu
NSwgIgotICAgICAgICAgICAgICAgICAgICAgICAid2hpY2ggZXhjZWVkcyAwLjI1ZiIpOwotICAv
LyBUbyB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBnY2MgMi45NS4wLCB0aGVyZSBpcyBpbnRlbnRpb25h
bGx5IG5vCi0gIC8vIHNwYWNlIGFmdGVyIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgcHJldmlvdXMg
bGluZS4KLX0KLQotLy8gVGVzdHMgdGhlIGNhc2VzIHdoZXJlIEZsb2F0TEUoKSBzaG91bGQgc3Vj
Y2VlZC4KLVRFU1RfRihGbG9hdFRlc3QsIEZsb2F0TEVTdWNjZWVkcykgewotICBFWFBFQ1RfUFJF
RF9GT1JNQVQyKEZsb2F0TEUsIDEuMGYsIDIuMGYpOyAgLy8gV2hlbiB2YWwxIDwgdmFsMiwKLSAg
QVNTRVJUX1BSRURfRk9STUFUMihGbG9hdExFLCAxLjBmLCAxLjBmKTsgIC8vIHZhbDEgPT0gdmFs
MiwKLQotICAvLyBvciB3aGVuIHZhbDEgaXMgZ3JlYXRlciB0aGFuLCBidXQgYWxtb3N0IGVxdWFs
cyB0bywgdmFsMi4KLSAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLmNsb3Nl
X3RvX3Bvc2l0aXZlX3plcm8sIDAuMGYpOwotfQotCi0vLyBUZXN0cyB0aGUgY2FzZXMgd2hlcmUg
RmxvYXRMRSgpIHNob3VsZCBmYWlsLgotVEVTVF9GKEZsb2F0VGVzdCwgRmxvYXRMRUZhaWxzKSB7
Ci0gIC8vIFdoZW4gdmFsMSBpcyBncmVhdGVyIHRoYW4gdmFsMiBieSBhIGxhcmdlIG1hcmdpbiwK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCAy
LjBmLCAxLjBmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIigyLjBmKSA8PSAoMS4wZiki
KTsKLQotICAvLyBvciBieSBhIHNtYWxsIHlldCBub24tbmVnbGlnaWJsZSBtYXJnaW4sCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVYUEVDVF9QUkVEX0ZPUk1B
VDIoRmxvYXRMRSwgdmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lLCAxLjBmKTsKLSAgfSwgIih2YWx1
ZXNfLmZ1cnRoZXJfZnJvbV9vbmUpIDw9ICgxLjBmKSIpOwotCi0jaWYgIUdURVNUX09TX1NZTUJJ
QU4gJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotICAvLyBOb2tpYSdzIFNUTHBvcnQgY3Jhc2hl
cyBpZiB3ZSB0cnkgdG8gb3V0cHV0IGluZmluaXR5IG9yIE5hTi4KLSAgLy8gQysrQnVpbGRlciBn
aXZlcyBiYWQgcmVzdWx0cyBmb3Igb3JkZXJlZCBjb21wYXJpc29ucyBpbnZvbHZpbmcgTmFOcwot
ICAvLyBkdWUgdG8gY29tcGlsZXIgYnVncy4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAg
Ly8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURfRk9STUFUMihGbG9hdExFLCB2YWx1ZXNfLm5hbjEs
IHZhbHVlc18uaW5maW5pdHkpOwotICB9LCAiKHZhbHVlc18ubmFuMSkgPD0gKHZhbHVlc18uaW5m
aW5pdHkpIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEVY
UEVDVF9QUkVEX0ZPUk1BVDIoRmxvYXRMRSwgLXZhbHVlc18uaW5maW5pdHksIHZhbHVlc18ubmFu
MSk7Ci0gIH0sICIoLXZhbHVlc18uaW5maW5pdHkpIDw9ICh2YWx1ZXNfLm5hbjEpIik7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIo
RmxvYXRMRSwgdmFsdWVzXy5uYW4xLCB2YWx1ZXNfLm5hbjEpOwotICB9LCAiKHZhbHVlc18ubmFu
MSkgPD0gKHZhbHVlc18ubmFuMSkiKTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4gJiYg
IWRlZmluZWQoX19CT1JMQU5EQ19fKQotfQotCi0vLyBJbnN0YW50aWF0ZXMgRmxvYXRpbmdQb2lu
dFRlc3QgZm9yIHRlc3RpbmcgKl9ET1VCTEVfRVEuCi10eXBlZGVmIEZsb2F0aW5nUG9pbnRUZXN0
PGRvdWJsZT4gRG91YmxlVGVzdDsKLQotLy8gVGVzdHMgdGhhdCB0aGUgc2l6ZSBvZiBEb3VibGU6
OkJpdHMgbWF0Y2hlcyB0aGUgc2l6ZSBvZiBkb3VibGUuCi1URVNUX0YoRG91YmxlVGVzdCwgU2l6
ZSkgewotICBUZXN0U2l6ZSgpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgd2l0aCArMCBhbmQg
LTAuCi1URVNUX0YoRG91YmxlVGVzdCwgWmVyb3MpIHsKLSAgRVhQRUNUX0RPVUJMRV9FUSgwLjAs
IC0wLjApOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKC0wLjAs
IDEuMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIxLjAiKTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0RPVUJMRV9FUSgwLjAsIDEuMCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICIxLjAiKTsKLX0KLQotLy8gVGVzdHMgY29tcGFyaW5nIG51bWJlcnMgY2xvc2UgdG8gMC4K
LS8vCi0vLyBUaGlzIGVuc3VyZXMgdGhhdCAqX0RPVUJMRV9FUSBoYW5kbGVzIHRoZSBzaWduIGNv
cnJlY3RseSBhbmQgbm8KLS8vIG92ZXJmbG93IG9jY3VycyB3aGVuIGNvbXBhcmluZyBudW1iZXJz
IHdob3NlIGFic29sdXRlIHZhbHVlIGlzIHZlcnkKLS8vIHNtYWxsLgotVEVTVF9GKERvdWJsZVRl
c3QsIEFsbW9zdFplcm9zKSB7Ci0gIC8vIEluIEMrK0J1aWxkZXIsIG5hbWVzIHdpdGhpbiBsb2Nh
bCBjbGFzc2VzIChzdWNoIGFzIHVzZWQgYnkKLSAgLy8gRVhQRUNUX0ZBVEFMX0ZBSUxVUkUpIGNh
bm5vdCBiZSByZXNvbHZlZCBhZ2FpbnN0IHN0YXRpYyBtZW1iZXJzIG9mIHRoZQotICAvLyBzY29w
aW5nIGNsYXNzLiAgVXNlIGEgc3RhdGljIGxvY2FsIGFsaWFzIGFzIGEgd29ya2Fyb3VuZC4KLSAg
Ly8gV2UgdXNlIHRoZSBhc3NpZ25tZW50IHN5bnRheCBzaW5jZSBzb21lIGNvbXBpbGVycywgbGlr
ZSBTdW4gU3R1ZGlvLAotICAvLyBkb24ndCBhbGxvdyBpbml0aWFsaXppbmcgcmVmZXJlbmNlcyB1
c2luZyBjb25zdHJ1Y3Rpb24gc3ludGF4Ci0gIC8vIChwYXJlbnRoZXNlcykuCi0gIHN0YXRpYyBj
b25zdCBEb3VibGVUZXN0OjpUZXN0VmFsdWVzJiB2ID0gdGhpcy0+dmFsdWVzXzsKLQotICBFWFBF
Q1RfRE9VQkxFX0VRKDAuMCwgdi5jbG9zZV90b19wb3NpdGl2ZV96ZXJvKTsKLSAgRVhQRUNUX0RP
VUJMRV9FUSgtMC4wLCB2LmNsb3NlX3RvX25lZ2F0aXZlX3plcm8pOwotICBFWFBFQ1RfRE9VQkxF
X0VRKHYuY2xvc2VfdG9fcG9zaXRpdmVfemVybywgdi5jbG9zZV90b19uZWdhdGl2ZV96ZXJvKTsK
LQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRE9VQkxF
X0VRKHYuY2xvc2VfdG9fcG9zaXRpdmVfemVybywKLSAgICAgICAgICAgICAgICAgICAgIHYuZnVy
dGhlcl9mcm9tX25lZ2F0aXZlX3plcm8pOwotICB9LCAidi5mdXJ0aGVyX2Zyb21fbmVnYXRpdmVf
emVybyIpOwotfQotCi0vLyBUZXN0cyBjb21wYXJpbmcgbnVtYmVycyBjbG9zZSB0byBlYWNoIG90
aGVyLgotVEVTVF9GKERvdWJsZVRlc3QsIFNtYWxsRGlmZikgewotICBFWFBFQ1RfRE9VQkxFX0VR
KDEuMCwgdmFsdWVzXy5jbG9zZV90b19vbmUpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfRE9VQkxFX0VRKDEuMCwgdmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgInZhbHVlc18uZnVydGhlcl9mcm9tX29uZSIpOwotfQotCi0vLyBU
ZXN0cyBjb21wYXJpbmcgbnVtYmVycyBmYXIgYXBhcnQuCi1URVNUX0YoRG91YmxlVGVzdCwgTGFy
Z2VEaWZmKSB7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMi4w
LCAzLjApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiMy4wIik7Ci19Ci0KLS8vIFRlc3Rz
IGNvbXBhcmluZyB3aXRoIGluZmluaXR5LgotLy8KLS8vIFRoaXMgZW5zdXJlcyB0aGF0IG5vIG92
ZXJmbG93IG9jY3VycyB3aGVuIGNvbXBhcmluZyBudW1iZXJzIHdob3NlCi0vLyBhYnNvbHV0ZSB2
YWx1ZSBpcyB2ZXJ5IGxhcmdlLgotVEVTVF9GKERvdWJsZVRlc3QsIEluZmluaXR5KSB7Ci0gIEVY
UEVDVF9ET1VCTEVfRVEodmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5jbG9zZV90b19pbmZpbml0
eSk7Ci0gIEVYUEVDVF9ET1VCTEVfRVEoLXZhbHVlc18uaW5maW5pdHksIC12YWx1ZXNfLmNsb3Nl
X3RvX2luZmluaXR5KTsKLSNpZiAhR1RFU1RfT1NfU1lNQklBTgotICAvLyBOb2tpYSdzIFNUTHBv
cnQgY3Jhc2hlcyBpZiB3ZSB0cnkgdG8gb3V0cHV0IGluZmluaXR5IG9yIE5hTi4KLSAgRVhQRUNU
X05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0RPVUJMRV9FUSh2YWx1ZXNfLmluZmluaXR5LCAtdmFs
dWVzXy5pbmZpbml0eSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICItdmFsdWVzXy5pbmZp
bml0eSIpOwotCi0gIC8vIFRoaXMgaXMgaW50ZXJlc3RpbmcgYXMgdGhlIHJlcHJlc2VudGF0aW9u
cyBvZiBpbmZpbml0eV8gYW5kIG5hbjFfCi0gIC8vIGFyZSBvbmx5IDEgRExQIGFwYXJ0LgotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlc18uaW5maW5pdHks
IHZhbHVlc18ubmFuMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXNfLm5hbjEi
KTsKLSNlbmRpZiAgLy8gIUdURVNUX09TX1NZTUJJQU4KLX0KLQotLy8gVGVzdHMgdGhhdCBjb21w
YXJpbmcgd2l0aCBOQU4gYWx3YXlzIHJldHVybnMgZmFsc2UuCi1URVNUX0YoRG91YmxlVGVzdCwg
TmFOKSB7Ci0jaWYgIUdURVNUX09TX1NZTUJJQU4KLSAgLy8gSW4gQysrQnVpbGRlciwgbmFtZXMg
d2l0aGluIGxvY2FsIGNsYXNzZXMgKHN1Y2ggYXMgdXNlZCBieQotICAvLyBFWFBFQ1RfRkFUQUxf
RkFJTFVSRSkgY2Fubm90IGJlIHJlc29sdmVkIGFnYWluc3Qgc3RhdGljIG1lbWJlcnMgb2YgdGhl
Ci0gIC8vIHNjb3BpbmcgY2xhc3MuICBVc2UgYSBzdGF0aWMgbG9jYWwgYWxpYXMgYXMgYSB3b3Jr
YXJvdW5kLgotICAvLyBXZSB1c2UgdGhlIGFzc2lnbm1lbnQgc3ludGF4IHNpbmNlIHNvbWUgY29t
cGlsZXJzLCBsaWtlIFN1biBTdHVkaW8sCi0gIC8vIGRvbid0IGFsbG93IGluaXRpYWxpemluZyBy
ZWZlcmVuY2VzIHVzaW5nIGNvbnN0cnVjdGlvbiBzeW50YXgKLSAgLy8gKHBhcmVudGhlc2VzKS4K
LSAgc3RhdGljIGNvbnN0IERvdWJsZVRlc3Q6OlRlc3RWYWx1ZXMmIHYgPSB0aGlzLT52YWx1ZXNf
OwotCi0gIC8vIE5va2lhJ3MgU1RMcG9ydCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5m
aW5pdHkgb3IgTmFOLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VR
KHYubmFuMSwgdi5uYW4xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInYubmFuMSIpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKHYubmFuMSwgdi5uYW4y
KSwgInYubmFuMiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VR
KDEuMCwgdi5uYW4xKSwgInYubmFuMSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRf
RE9VQkxFX0VRKHYubmFuMSwgdi5pbmZpbml0eSksCi0gICAgICAgICAgICAgICAgICAgICAgICJ2
LmluZmluaXR5Iik7Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOCi19Ci0KLS8vIFRlc3Rz
IHRoYXQgKl9ET1VCTEVfRVEgYXJlIHJlZmxleGl2ZS4KLVRFU1RfRihEb3VibGVUZXN0LCBSZWZs
ZXhpdmUpIHsKLSAgRVhQRUNUX0RPVUJMRV9FUSgwLjAsIDAuMCk7Ci0gIEVYUEVDVF9ET1VCTEVf
RVEoMS4wLCAxLjApOwotI2lmICFHVEVTVF9PU19TWU1CSUFOCi0gIC8vIE5va2lhJ3MgU1RMcG9y
dCBjcmFzaGVzIGlmIHdlIHRyeSB0byBvdXRwdXQgaW5maW5pdHkgb3IgTmFOLgotICBBU1NFUlRf
RE9VQkxFX0VRKHZhbHVlc18uaW5maW5pdHksIHZhbHVlc18uaW5maW5pdHkpOwotI2VuZGlmICAv
LyAhR1RFU1RfT1NfU1lNQklBTgotfQotCi0vLyBUZXN0cyB0aGF0ICpfRE9VQkxFX0VRIGFyZSBj
b21tdXRhdGl2ZS4KLVRFU1RfRihEb3VibGVUZXN0LCBDb21tdXRhdGl2ZSkgewotICAvLyBXZSBh
bHJlYWR5IHRlc3RlZCBFWFBFQ1RfRE9VQkxFX0VRKDEuMCwgdmFsdWVzXy5jbG9zZV90b19vbmUp
LgotICBFWFBFQ1RfRE9VQkxFX0VRKHZhbHVlc18uY2xvc2VfdG9fb25lLCAxLjApOwotCi0gIC8v
IFdlIGFscmVhZHkgdGVzdGVkIEVYUEVDVF9ET1VCTEVfRVEoMS4wLCB2YWx1ZXNfLmZ1cnRoZXJf
ZnJvbV9vbmUpLgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRE9VQkxFX0VRKHZh
bHVlc18uZnVydGhlcl9mcm9tX29uZSwgMS4wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IjEuMCIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfTkVBUi4KLVRFU1RfRihEb3VibGVUZXN0LCBF
WFBFQ1RfTkVBUikgewotICBFWFBFQ1RfTkVBUigtMS4wLCAtMS4xLCAwLjIpOwotICBFWFBFQ1Rf
TkVBUigyLjAsIDMuMCwgMS4wKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05F
QVIoMS4wLCAxLjUsIDAuMjUpLCAgLy8gTk9MSU5UCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDEuMCBhbmQgMS41IGlzIDAuNSwgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAid2hpY2ggZXhjZWVkcyAwLjI1Iik7Ci0gIC8vIFRvIHdvcmsgYXJv
dW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8KLSAgLy8g
c3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQuCi19
Ci0KLS8vIFRlc3RzIEFTU0VSVF9ORUFSLgotVEVTVF9GKERvdWJsZVRlc3QsIEFTU0VSVF9ORUFS
KSB7Ci0gIEFTU0VSVF9ORUFSKC0xLjAsIC0xLjEsIDAuMik7Ci0gIEFTU0VSVF9ORUFSKDIuMCwg
My4wLCAxLjApOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTkVBUigxLjAsIDEuNSwg
MC4yNSksICAvLyBOT0xJTlQKLSAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gMS4wIGFuZCAxLjUgaXMgMC41LCAiCi0gICAgICAgICAgICAgICAgICAgICAgICJ3
aGljaCBleGNlZWRzIDAuMjUiKTsKLSAgLy8gVG8gd29yayBhcm91bmQgYSBidWcgaW4gZ2NjIDIu
OTUuMCwgdGhlcmUgaXMgaW50ZW50aW9uYWxseSBubwotICAvLyBzcGFjZSBhZnRlciB0aGUgZmly
c3QgY29tbWEgaW4gdGhlIHByZXZpb3VzIHN0YXRlbWVudC4KLX0KLQotLy8gVGVzdHMgdGhlIGNh
c2VzIHdoZXJlIERvdWJsZUxFKCkgc2hvdWxkIHN1Y2NlZWQuCi1URVNUX0YoRG91YmxlVGVzdCwg
RG91YmxlTEVTdWNjZWVkcykgewotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKERvdWJsZUxFLCAxLjAs
IDIuMCk7ICAvLyBXaGVuIHZhbDEgPCB2YWwyLAotICBBU1NFUlRfUFJFRF9GT1JNQVQyKERvdWJs
ZUxFLCAxLjAsIDEuMCk7ICAvLyB2YWwxID09IHZhbDIsCi0KLSAgLy8gb3Igd2hlbiB2YWwxIGlz
IGdyZWF0ZXIgdGhhbiwgYnV0IGFsbW9zdCBlcXVhbHMgdG8sIHZhbDIuCi0gIEVYUEVDVF9QUkVE
X0ZPUk1BVDIoRG91YmxlTEUsIHZhbHVlc18uY2xvc2VfdG9fcG9zaXRpdmVfemVybywgMC4wKTsK
LX0KLQotLy8gVGVzdHMgdGhlIGNhc2VzIHdoZXJlIERvdWJsZUxFKCkgc2hvdWxkIGZhaWwuCi1U
RVNUX0YoRG91YmxlVGVzdCwgRG91YmxlTEVGYWlscykgewotICAvLyBXaGVuIHZhbDEgaXMgZ3Jl
YXRlciB0aGFuIHZhbDIgYnkgYSBsYXJnZSBtYXJnaW4sCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIDIuMCwgMS4wKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIigyLjApIDw9ICgxLjApIik7Ci0KLSAgLy8gb3IgYnkgYSBzbWFsbCB5
ZXQgbm9uLW5lZ2xpZ2libGUgbWFyZ2luLAotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKERvdWJsZUxFLCB2YWx1ZXNfLmZ1cnRo
ZXJfZnJvbV9vbmUsIDEuMCk7Ci0gIH0sICIodmFsdWVzXy5mdXJ0aGVyX2Zyb21fb25lKSA8PSAo
MS4wKSIpOwotCi0jaWYgIUdURVNUX09TX1NZTUJJQU4gJiYgIWRlZmluZWQoX19CT1JMQU5EQ19f
KQotICAvLyBOb2tpYSdzIFNUTHBvcnQgY3Jhc2hlcyBpZiB3ZSB0cnkgdG8gb3V0cHV0IGluZmlu
aXR5IG9yIE5hTi4KLSAgLy8gQysrQnVpbGRlciBnaXZlcyBiYWQgcmVzdWx0cyBmb3Igb3JkZXJl
ZCBjb21wYXJpc29ucyBpbnZvbHZpbmcgTmFOcwotICAvLyBkdWUgdG8gY29tcGlsZXIgYnVncy4K
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX1BSRURf
Rk9STUFUMihEb3VibGVMRSwgdmFsdWVzXy5uYW4xLCB2YWx1ZXNfLmluZmluaXR5KTsKLSAgfSwg
Iih2YWx1ZXNfLm5hbjEpIDw9ICh2YWx1ZXNfLmluZmluaXR5KSIpOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfUFJFRF9GT1JNQVQyKERvdWJsZUxF
LCAtdmFsdWVzXy5pbmZpbml0eSwgdmFsdWVzXy5uYW4xKTsKLSAgfSwgIiAoLXZhbHVlc18uaW5m
aW5pdHkpIDw9ICh2YWx1ZXNfLm5hbjEpIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEFTU0VSVF9QUkVEX0ZPUk1BVDIoRG91YmxlTEUsIHZhbHVlc18ubmFuMSwg
dmFsdWVzXy5uYW4xKTsKLSAgfSwgIih2YWx1ZXNfLm5hbjEpIDw9ICh2YWx1ZXNfLm5hbjEpIik7
Ci0jZW5kaWYgIC8vICFHVEVTVF9PU19TWU1CSUFOICYmICFkZWZpbmVkKF9fQk9STEFORENfXykK
LX0KLQotCi0vLyBWZXJpZmllcyB0aGF0IGEgdGVzdCBvciB0ZXN0IGNhc2Ugd2hvc2UgbmFtZSBz
dGFydHMgd2l0aCBESVNBQkxFRF8gaXMKLS8vIG5vdCBydW4uCi0KLS8vIEEgdGVzdCB3aG9zZSBu
YW1lIHN0YXJ0cyB3aXRoIERJU0FCTEVEXy4KLS8vIFNob3VsZCBub3QgcnVuLgotVEVTVChEaXNh
YmxlZFRlc3QsIERJU0FCTEVEX1Rlc3RTaG91bGROb3RSdW4pIHsKLSAgRkFJTCgpIDw8ICJVbmV4
cGVjdGVkIGZhaWx1cmU6IERpc2FibGVkIHRlc3Qgc2hvdWxkIG5vdCBiZSBydW4uIjsKLX0KLQot
Ly8gQSB0ZXN0IHdob3NlIG5hbWUgZG9lcyBub3Qgc3RhcnQgd2l0aCBESVNBQkxFRF8uCi0vLyBT
aG91bGQgcnVuLgotVEVTVChEaXNhYmxlZFRlc3QsIE5vdERJU0FCTEVEX1Rlc3RTaG91bGRSdW4p
IHsKLSAgRVhQRUNUX0VRKDEsIDEpOwotfQotCi0vLyBBIHRlc3QgY2FzZSB3aG9zZSBuYW1lIHN0
YXJ0cyB3aXRoIERJU0FCTEVEXy4KLS8vIFNob3VsZCBub3QgcnVuLgotVEVTVChESVNBQkxFRF9U
ZXN0Q2FzZSwgVGVzdFNob3VsZE5vdFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFp
bHVyZTogVGVzdCBpbiBkaXNhYmxlZCB0ZXN0IGNhc2Ugc2hvdWxkIG5vdCBiZSBydW4uIjsKLX0K
LQotLy8gQSB0ZXN0IGNhc2UgYW5kIHRlc3Qgd2hvc2UgbmFtZXMgc3RhcnQgd2l0aCBESVNBQkxF
RF8uCi0vLyBTaG91bGQgbm90IHJ1bi4KLVRFU1QoRElTQUJMRURfVGVzdENhc2UsIERJU0FCTEVE
X1Rlc3RTaG91bGROb3RSdW4pIHsKLSAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IFRl
c3QgaW4gZGlzYWJsZWQgdGVzdCBjYXNlIHNob3VsZCBub3QgYmUgcnVuLiI7Ci19Ci0KLS8vIENo
ZWNrIHRoYXQgd2hlbiBhbGwgdGVzdHMgaW4gYSB0ZXN0IGNhc2UgYXJlIGRpc2FibGVkLCBTZXR1
cFRlc3RDYXNlKCkgYW5kCi0vLyBUZWFyRG93blRlc3RDYXNlKCkgYXJlIG5vdCBjYWxsZWQuCi1j
bGFzcyBEaXNhYmxlZFRlc3RzVGVzdCA6IHB1YmxpYyBUZXN0IHsKLSBwcm90ZWN0ZWQ6Ci0gIHN0
YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgRkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZh
aWx1cmU6IEFsbCB0ZXN0cyBkaXNhYmxlZCBpbiB0ZXN0IGNhc2UuICIKLSAgICAgICAgICAgICAg
IlNldHVwVGVzdENhc2UoKSBzaG91bGQgbm90IGJlIGNhbGxlZC4iOwotICB9Ci0KLSAgc3RhdGlj
IHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFp
bHVyZTogQWxsIHRlc3RzIGRpc2FibGVkIGluIHRlc3QgY2FzZS4gIgotICAgICAgICAgICAgICAi
VGVhckRvd25UZXN0Q2FzZSgpIHNob3VsZCBub3QgYmUgY2FsbGVkLiI7Ci0gIH0KLX07Ci0KLVRF
U1RfRihEaXNhYmxlZFRlc3RzVGVzdCwgRElTQUJMRURfVGVzdFNob3VsZE5vdFJ1bl8xKSB7Ci0g
IEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBEaXNhYmxlZCB0ZXN0IHNob3VsZCBub3Qg
YmUgcnVuLiI7Ci19Ci0KLVRFU1RfRihEaXNhYmxlZFRlc3RzVGVzdCwgRElTQUJMRURfVGVzdFNo
b3VsZE5vdFJ1bl8yKSB7Ci0gIEZBSUwoKSA8PCAiVW5leHBlY3RlZCBmYWlsdXJlOiBEaXNhYmxl
ZCB0ZXN0IHNob3VsZCBub3QgYmUgcnVuLiI7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZGlzYWJsZWQg
dHlwZWQgdGVzdHMgYXJlbid0IHJ1bi4KLQotI2lmIEdURVNUX0hBU19UWVBFRF9URVNUCi0KLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRUZXN0IDogcHVibGljIFRlc3QgewotfTsK
LQotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxpbnQsIGRvdWJsZT4gTnVtZXJpY1R5cGVzOwotVFlQ
RURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgTnVtZXJpY1R5cGVzKTsKLQotVFlQRURfVEVTVChUeXBl
ZFRlc3QsIERJU0FCTEVEX1Nob3VsZE5vdFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQg
ZmFpbHVyZTogRGlzYWJsZWQgdHlwZWQgdGVzdCBzaG91bGQgbm90IHJ1bi4iOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIERJU0FCTEVEX1R5cGVkVGVzdCA6IHB1YmxpYyBUZXN0
IHsKLX07Ci0KLVRZUEVEX1RFU1RfQ0FTRShESVNBQkxFRF9UeXBlZFRlc3QsIE51bWVyaWNUeXBl
cyk7Ci0KLVRZUEVEX1RFU1QoRElTQUJMRURfVHlwZWRUZXN0LCBTaG91bGROb3RSdW4pIHsKLSAg
RkFJTCgpIDw8ICJVbmV4cGVjdGVkIGZhaWx1cmU6IERpc2FibGVkIHR5cGVkIHRlc3Qgc2hvdWxk
IG5vdCBydW4uIjsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfVFlQRURfVEVTVAotCi0vLyBU
ZXN0cyB0aGF0IGRpc2FibGVkIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0cyBhcmVuJ3QgcnVuLgot
Ci0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNs
YXNzIFR5cGVkVGVzdFAgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChU
eXBlZFRlc3RQKTsKLQotVFlQRURfVEVTVF9QKFR5cGVkVGVzdFAsIERJU0FCTEVEX1Nob3VsZE5v
dFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogIgotICAgICAgICAgPDwg
IkRpc2FibGVkIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IHNob3VsZCBub3QgcnVuLiI7Ci19Ci0K
LVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVkVGVzdFAsIERJU0FCTEVEX1Nob3VsZE5v
dFJ1bik7Ci0KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBUeXBlZFRlc3RQLCBO
dW1lcmljVHlwZXMpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIERJU0FCTEVEX1R5
cGVkVGVzdFAgOiBwdWJsaWMgVGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0VfUChESVNBQkxF
RF9UeXBlZFRlc3RQKTsKLQotVFlQRURfVEVTVF9QKERJU0FCTEVEX1R5cGVkVGVzdFAsIFNob3Vs
ZE5vdFJ1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogIgotICAgICAgICAg
PDwgIkRpc2FibGVkIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0IHNob3VsZCBub3QgcnVuLiI7Ci19
Ci0KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKERJU0FCTEVEX1R5cGVkVGVzdFAsIFNob3Vs
ZE5vdFJ1bik7Ci0KLUlOU1RBTlRJQVRFX1RZUEVEX1RFU1RfQ0FTRV9QKE15LCBESVNBQkxFRF9U
eXBlZFRlc3RQLCBOdW1lcmljVHlwZXMpOwotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19UWVBFRF9U
RVNUX1AKLQotLy8gVGVzdHMgdGhhdCBhc3NlcnRpb24gbWFjcm9zIGV2YWx1YXRlIHRoZWlyIGFy
Z3VtZW50cyBleGFjdGx5IG9uY2UuCi0KLWNsYXNzIFNpbmdsZUV2YWx1YXRpb25UZXN0IDogcHVi
bGljIFRlc3QgewotIHB1YmxpYzogIC8vIE11c3QgYmUgcHVibGljIGFuZCBub3QgcHJvdGVjdGVk
IGR1ZSB0byBhIGJ1ZyBpbiBnKysgMy40LjIuCi0gIC8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlz
IG5lZWRlZCBieSB0aGUgRmFpbGVkQVNTRVJUX1NUUkVRIHRlc3QKLSAgLy8gYmVsb3cuICBJdCdz
IHB1YmxpYyB0byB3b3JrIGFyb3VuZCBDKytCdWlsZGVyJ3MgYnVnIHdpdGggc2NvcGluZyBsb2Nh
bAotICAvLyBjbGFzc2VzLgotICBzdGF0aWMgdm9pZCBDb21wYXJlQW5kSW5jcmVtZW50Q2hhclB0
cnMoKSB7Ci0gICAgQVNTRVJUX1NUUkVRKHAxXysrLCBwMl8rKyk7Ci0gIH0KLQotICAvLyBUaGlz
IGhlbHBlciBmdW5jdGlvbiBpcyBuZWVkZWQgYnkgdGhlIEZhaWxlZEFTU0VSVF9ORSB0ZXN0IGJl
bG93LiAgSXQncwotICAvLyBwdWJsaWMgdG8gd29yayBhcm91bmQgQysrQnVpbGRlcidzIGJ1ZyB3
aXRoIHNjb3BpbmcgbG9jYWwgY2xhc3Nlcy4KLSAgc3RhdGljIHZvaWQgQ29tcGFyZUFuZEluY3Jl
bWVudEludHMoKSB7Ci0gICAgQVNTRVJUX05FKGFfKyssIGJfKyspOwotICB9Ci0KLSBwcm90ZWN0
ZWQ6Ci0gIFNpbmdsZUV2YWx1YXRpb25UZXN0KCkgewotICAgIHAxXyA9IHMxXzsKLSAgICBwMl8g
PSBzMl87Ci0gICAgYV8gPSAwOwotICAgIGJfID0gMDsKLSAgfQotCi0gIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBzMV87Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzMl87Ci0gIHN0YXRp
YyBjb25zdCBjaGFyKiBwMV87Ci0gIHN0YXRpYyBjb25zdCBjaGFyKiBwMl87Ci0KLSAgc3RhdGlj
IGludCBhXzsKLSAgc3RhdGljIGludCBiXzsKLX07Ci0KLWNvbnN0IGNoYXIqIGNvbnN0IFNpbmds
ZUV2YWx1YXRpb25UZXN0OjpzMV8gPSAiMDEyMzQiOwotY29uc3QgY2hhciogY29uc3QgU2luZ2xl
RXZhbHVhdGlvblRlc3Q6OnMyXyA9ICJhYmNkZSI7Ci1jb25zdCBjaGFyKiBTaW5nbGVFdmFsdWF0
aW9uVGVzdDo6cDFfOwotY29uc3QgY2hhciogU2luZ2xlRXZhbHVhdGlvblRlc3Q6OnAyXzsKLWlu
dCBTaW5nbGVFdmFsdWF0aW9uVGVzdDo6YV87Ci1pbnQgU2luZ2xlRXZhbHVhdGlvblRlc3Q6OmJf
OwotCi0vLyBUZXN0cyB0aGF0IHdoZW4gQVNTRVJUX1NUUkVRIGZhaWxzLCBpdCBldmFsdWF0ZXMg
aXRzIGFyZ3VtZW50cwotLy8gZXhhY3RseSBvbmNlLgotVEVTVF9GKFNpbmdsZUV2YWx1YXRpb25U
ZXN0LCBGYWlsZWRBU1NFUlRfU1RSRVEpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoU2luZ2xl
RXZhbHVhdGlvblRlc3Q6OkNvbXBhcmVBbmRJbmNyZW1lbnRDaGFyUHRycygpLAotICAgICAgICAg
ICAgICAgICAgICAgICAicDJfKysiKTsKLSAgRVhQRUNUX0VRKHMxXyArIDEsIHAxXyk7Ci0gIEVY
UEVDVF9FUShzMl8gKyAxLCBwMl8pOwotfQotCi0vLyBUZXN0cyB0aGF0IHN0cmluZyBhc3NlcnRp
b24gYXJndW1lbnRzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLgotVEVTVF9GKFNpbmdsZUV2
YWx1YXRpb25UZXN0LCBBU1NFUlRfU1RSKSB7Ci0gIC8vIHN1Y2Nlc3NmdWwgRVhQRUNUX1NUUk5F
Ci0gIEVYUEVDVF9TVFJORShwMV8rKywgcDJfKyspOwotICBFWFBFQ1RfRVEoczFfICsgMSwgcDFf
KTsKLSAgRVhQRUNUX0VRKHMyXyArIDEsIHAyXyk7Ci0KLSAgLy8gZmFpbGVkIEVYUEVDVF9TVFJD
QVNFRVEKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VFUShwMV8rKywg
cDJfKyspLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSWdub3JpbmcgY2FzZSIpOwotICBF
WFBFQ1RfRVEoczFfICsgMiwgcDFfKTsKLSAgRVhQRUNUX0VRKHMyXyArIDIsIHAyXyk7Ci19Ci0K
LS8vIFRlc3RzIHRoYXQgd2hlbiBBU1NFUlRfTkUgZmFpbHMsIGl0IGV2YWx1YXRlcyBpdHMgYXJn
dW1lbnRzIGV4YWN0bHkKLS8vIG9uY2UuCi1URVNUX0YoU2luZ2xlRXZhbHVhdGlvblRlc3QsIEZh
aWxlZEFTU0VSVF9ORSkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShTaW5nbGVFdmFsdWF0aW9u
VGVzdDo6Q29tcGFyZUFuZEluY3JlbWVudEludHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IihhXysrKSAhPSAoYl8rKykiKTsKLSAgRVhQRUNUX0VRKDEsIGFfKTsKLSAgRVhQRUNUX0VRKDEs
IGJfKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhc3NlcnRpb24gYXJndW1lbnRzIGFyZSBldmFsdWF0
ZWQgZXhhY3RseSBvbmNlLgotVEVTVF9GKFNpbmdsZUV2YWx1YXRpb25UZXN0LCBPdGhlckNhc2Vz
KSB7Ci0gIC8vIHN1Y2Nlc3NmdWwgRVhQRUNUX1RSVUUKLSAgRVhQRUNUX1RSVUUoMCA9PSBhXysr
KTsgIC8vIE5PTElOVAotICBFWFBFQ1RfRVEoMSwgYV8pOwotCi0gIC8vIGZhaWxlZCBFWFBFQ1Rf
VFJVRQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVFJVRSgtMSA9PSBhXysrKSwg
Ii0xID09IGFfKysiKTsKLSAgRVhQRUNUX0VRKDIsIGFfKTsKLQotICAvLyBzdWNjZXNzZnVsIEVY
UEVDVF9HVAotICBFWFBFQ1RfR1QoYV8rKywgYl8rKyk7Ci0gIEVYUEVDVF9FUSgzLCBhXyk7Ci0g
IEVYUEVDVF9FUSgxLCBiXyk7Ci0KLSAgLy8gZmFpbGVkIEVYUEVDVF9MVAotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfTFQoYV8rKywgYl8rKyksICIoYV8rKykgPCAoYl8rKykiKTsK
LSAgRVhQRUNUX0VRKDQsIGFfKTsKLSAgRVhQRUNUX0VRKDIsIGJfKTsKLQotICAvLyBzdWNjZXNz
ZnVsIEFTU0VSVF9UUlVFCi0gIEFTU0VSVF9UUlVFKDAgPCBhXysrKTsgIC8vIE5PTElOVAotICBF
WFBFQ1RfRVEoNSwgYV8pOwotCi0gIC8vIHN1Y2Nlc3NmdWwgQVNTRVJUX0dUCi0gIEFTU0VSVF9H
VChhXysrLCBiXysrKTsKLSAgRVhQRUNUX0VRKDYsIGFfKTsKLSAgRVhQRUNUX0VRKDMsIGJfKTsK
LX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0KLXZvaWQgVGhyb3dBbkludGVnZXIoKSB7
Ci0gIHRocm93IDE7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYXNzZXJ0aW9uIGFyZ3VtZW50cyBhcmUg
ZXZhbHVhdGVkIGV4YWN0bHkgb25jZS4KLVRFU1RfRihTaW5nbGVFdmFsdWF0aW9uVGVzdCwgRXhj
ZXB0aW9uVGVzdHMpIHsKLSAgLy8gc3VjY2Vzc2Z1bCBFWFBFQ1RfVEhST1cKLSAgRVhQRUNUX1RI
Uk9XKHsgIC8vIE5PTElOVAotICAgIGFfKys7Ci0gICAgVGhyb3dBbkludGVnZXIoKTsKLSAgfSwg
aW50KTsKLSAgRVhQRUNUX0VRKDEsIGFfKTsKLQotICAvLyBmYWlsZWQgRVhQRUNUX1RIUk9XLCB0
aHJvd3MgZGlmZmVyZW50Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyh7
ICAvLyBOT0xJTlQKLSAgICBhXysrOwotICAgIFRocm93QW5JbnRlZ2VyKCk7Ci0gIH0sIGJvb2wp
LCAidGhyb3dzIGEgZGlmZmVyZW50IHR5cGUiKTsKLSAgRVhQRUNUX0VRKDIsIGFfKTsKLQotICAv
LyBmYWlsZWQgRVhQRUNUX1RIUk9XLCB0aHJvd3Mgbm90aGluZwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShFWFBFQ1RfVEhST1coYV8rKywgYm9vbCksICJ0aHJvd3Mgbm90aGluZyIpOwotICBF
WFBFQ1RfRVEoMywgYV8pOwotCi0gIC8vIHN1Y2Nlc3NmdWwgRVhQRUNUX05PX1RIUk9XCi0gIEVY
UEVDVF9OT19USFJPVyhhXysrKTsKLSAgRVhQRUNUX0VRKDQsIGFfKTsKLQotICAvLyBmYWlsZWQg
RVhQRUNUX05PX1RIUk9XCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9OT19USFJP
Vyh7ICAvLyBOT0xJTlQKLSAgICBhXysrOwotICAgIFRocm93QW5JbnRlZ2VyKCk7Ci0gIH0pLCAi
aXQgdGhyb3dzIik7Ci0gIEVYUEVDVF9FUSg1LCBhXyk7Ci0KLSAgLy8gc3VjY2Vzc2Z1bCBFWFBF
Q1RfQU5ZX1RIUk9XCi0gIEVYUEVDVF9BTllfVEhST1coeyAgLy8gTk9MSU5UCi0gICAgYV8rKzsK
LSAgICBUaHJvd0FuSW50ZWdlcigpOwotICB9KTsKLSAgRVhQRUNUX0VRKDYsIGFfKTsKLQotICAv
LyBmYWlsZWQgRVhQRUNUX0FOWV9USFJPVwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfQU5ZX1RIUk9XKGFfKyspLCAiaXQgZG9lc24ndCIpOwotICBFWFBFQ1RfRVEoNywgYV8pOwot
fQotCi0jZW5kaWYgIC8vIEdURVNUX0hBU19FWENFUFRJT05TCi0KLS8vIFRlc3RzIHtBU1NFUlR8
RVhQRUNUfV9OT19GQVRBTF9GQUlMVVJFLgotY2xhc3MgTm9GYXRhbEZhaWx1cmVUZXN0IDogcHVi
bGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdm9pZCBTdWNjZWVkcygpIHt9Ci0gIHZvaWQgRmFp
bHNOb25GYXRhbCgpIHsKLSAgICBBRERfRkFJTFVSRSgpIDw8ICJzb21lIG5vbi1mYXRhbCBmYWls
dXJlIjsKLSAgfQotICB2b2lkIEZhaWxzKCkgewotICAgIEZBSUwoKSA8PCAic29tZSBmYXRhbCBm
YWlsdXJlIjsKLSAgfQotCi0gIHZvaWQgRG9Bc3NlcnROb0ZhdGFsRmFpbHVyZU9uRmFpbHMoKSB7
Ci0gICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRmFpbHMoKSk7Ci0gICAgQUREX0ZBSUxVUkUo
KSA8PCAic2hvbGQgbm90IHJlYWNoIGhlcmUuIjsKLSAgfQotCi0gIHZvaWQgRG9FeHBlY3ROb0Zh
dGFsRmFpbHVyZU9uRmFpbHMoKSB7Ci0gICAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoRmFpbHMo
KSk7Ci0gICAgQUREX0ZBSUxVUkUoKSA8PCAib3RoZXIgZmFpbHVyZSI7Ci0gIH0KLX07Ci0KLVRF
U1RfRihOb0ZhdGFsRmFpbHVyZVRlc3QsIE5vRmFpbHVyZSkgewotICBFWFBFQ1RfTk9fRkFUQUxf
RkFJTFVSRShTdWNjZWVkcygpKTsKLSAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoU3VjY2VlZHMo
KSk7Ci19Ci0KLVRFU1RfRihOb0ZhdGFsRmFpbHVyZVRlc3QsIE5vbkZhdGFsSXNOb0ZhaWx1cmUp
IHsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBFWFBFQ1RfTk9fRkFUQUxfRkFJ
TFVSRShGYWlsc05vbkZhdGFsKCkpLAotICAgICAgInNvbWUgbm9uLWZhdGFsIGZhaWx1cmUiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0gICAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVS
RShGYWlsc05vbkZhdGFsKCkpLAotICAgICAgInNvbWUgbm9uLWZhdGFsIGZhaWx1cmUiKTsKLX0K
LQotVEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgQXNzZXJ0Tm9GYXRhbEZhaWx1cmVPbkZhdGFs
RmFpbHVyZSkgewotICBUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1cmVzOwotICB7Ci0g
ICAgU2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoJmd0ZXN0
X2ZhaWx1cmVzKTsKLSAgICBEb0Fzc2VydE5vRmF0YWxGYWlsdXJlT25GYWlscygpOwotICB9Ci0g
IEFTU0VSVF9FUSgyLCBndGVzdF9mYWlsdXJlcy5zaXplKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBh
cnRSZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRU
ZXN0UGFydFJlc3VsdCgwKS50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtG
YXRhbEZhaWx1cmUsCi0gICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3Vs
dCgxKS50eXBlKCkpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5n
LCAic29tZSBmYXRhbCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICBndGVzdF9mYWls
dXJlcy5HZXRUZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOwotICBFWFBFQ1RfUFJFRF9GT1JN
QVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAiaXQgZG9lcyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgZ3Rlc3RfZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKLX0KLQot
VEVTVF9GKE5vRmF0YWxGYWlsdXJlVGVzdCwgRXhwZWN0Tm9GYXRhbEZhaWx1cmVPbkZhdGFsRmFp
bHVyZSkgewotICBUZXN0UGFydFJlc3VsdEFycmF5IGd0ZXN0X2ZhaWx1cmVzOwotICB7Ci0gICAg
U2NvcGVkRmFrZVRlc3RQYXJ0UmVzdWx0UmVwb3J0ZXIgZ3Rlc3RfcmVwb3J0ZXIoJmd0ZXN0X2Zh
aWx1cmVzKTsKLSAgICBEb0V4cGVjdE5vRmF0YWxGYWlsdXJlT25GYWlscygpOwotICB9Ci0gIEFT
U0VSVF9FUSgzLCBndGVzdF9mYWlsdXJlcy5zaXplKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRS
ZXN1bHQ6OmtGYXRhbEZhaWx1cmUsCi0gICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0
UGFydFJlc3VsdCgwKS50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25G
YXRhbEZhaWx1cmUsCi0gICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3Vs
dCgxKS50eXBlKCkpOwotICBFWFBFQ1RfRVEoVGVzdFBhcnRSZXN1bHQ6OmtOb25GYXRhbEZhaWx1
cmUsCi0gICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgyKS50eXBl
KCkpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rpbmc6OklzU3Vic3RyaW5nLCAic29tZSBm
YXRhbCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRU
ZXN0UGFydFJlc3VsdCgwKS5tZXNzYWdlKCkpOwotICBFWFBFQ1RfUFJFRF9GT1JNQVQyKHRlc3Rp
bmc6OklzU3Vic3RyaW5nLCAiaXQgZG9lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgZ3Rlc3Rf
ZmFpbHVyZXMuR2V0VGVzdFBhcnRSZXN1bHQoMSkubWVzc2FnZSgpKTsKLSAgRVhQRUNUX1BSRURf
Rk9STUFUMih0ZXN0aW5nOjpJc1N1YnN0cmluZywgIm90aGVyIGZhaWx1cmUiLAotICAgICAgICAg
ICAgICAgICAgICAgIGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDIpLm1lc3NhZ2Uo
KSk7Ci19Ci0KLVRFU1RfRihOb0ZhdGFsRmFpbHVyZVRlc3QsIE1lc3NhZ2VJc1N0cmVhbWFibGUp
IHsKLSAgVGVzdFBhcnRSZXN1bHRBcnJheSBndGVzdF9mYWlsdXJlczsKLSAgewotICAgIFNjb3Bl
ZEZha2VUZXN0UGFydFJlc3VsdFJlcG9ydGVyIGd0ZXN0X3JlcG9ydGVyKCZndGVzdF9mYWlsdXJl
cyk7Ci0gICAgRVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpIDw8ICJmb28iKSA8PCAibXkg
bWVzc2FnZSI7Ci0gIH0KLSAgQVNTRVJUX0VRKDIsIGd0ZXN0X2ZhaWx1cmVzLnNpemUoKSk7Ci0g
IEVYUEVDVF9FUShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAg
IGd0ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLnR5cGUoKSk7Ci0gIEVYUEVDVF9F
UShUZXN0UGFydFJlc3VsdDo6a05vbkZhdGFsRmFpbHVyZSwKLSAgICAgICAgICAgIGd0ZXN0X2Zh
aWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDEpLnR5cGUoKSk7Ci0gIEVYUEVDVF9QUkVEX0ZPUk1B
VDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJmb28iLAotICAgICAgICAgICAgICAgICAgICAgIGd0
ZXN0X2ZhaWx1cmVzLkdldFRlc3RQYXJ0UmVzdWx0KDApLm1lc3NhZ2UoKSk7Ci0gIEVYUEVDVF9Q
UkVEX0ZPUk1BVDIodGVzdGluZzo6SXNTdWJzdHJpbmcsICJteSBtZXNzYWdlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICBndGVzdF9mYWlsdXJlcy5HZXRUZXN0UGFydFJlc3VsdCgxKS5tZXNzYWdl
KCkpOwotfQotCi0vLyBUZXN0cyBub24tc3RyaW5nIGFzc2VydGlvbnMuCi0KLXN0ZDo6c3RyaW5n
IEVkaXRzVG9TdHJpbmcoY29uc3Qgc3RkOjp2ZWN0b3I8RWRpdFR5cGU+JiBlZGl0cykgewotICBz
dGQ6OnN0cmluZyBvdXQ7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWRpdHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBrRWRpdHNbXSA9ICIgKy0vIjsKLSAgICBvdXQu
YXBwZW5kKDEsIGtFZGl0c1tlZGl0c1tpXV0pOwotICB9Ci0gIHJldHVybiBvdXQ7Ci19Ci0KLXN0
ZDo6dmVjdG9yPHNpemVfdD4gQ2hhcnNUb0luZGljZXMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikg
ewotICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG91dDsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHIuc2l6ZSgpOyArK2kpIHsKLSAgICBvdXQucHVzaF9iYWNrKHN0cltpXSk7Ci0gIH0KLSAgcmV0
dXJuIG91dDsKLX0KLQotc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IENoYXJzVG9MaW5lcyhjb25z
dCBzdGQ6OnN0cmluZyYgc3RyKSB7Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvdXQ7Ci0g
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLnNpemUoKTsgKytpKSB7Ci0gICAgb3V0LnB1c2hf
YmFjayhzdHIuc3Vic3RyKGksIDEpKTsKLSAgfQotICByZXR1cm4gb3V0OwotfQotCi1URVNUKEVk
aXREaXN0YW5jZSwgVGVzdENhc2VzKSB7Ci0gIHN0cnVjdCBDYXNlIHsKLSAgICBpbnQgbGluZTsK
LSAgICBjb25zdCBjaGFyKiBsZWZ0OwotICAgIGNvbnN0IGNoYXIqIHJpZ2h0OwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkX2VkaXRzOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkX2RpZmY7Ci0g
IH07Ci0gIHN0YXRpYyBjb25zdCBDYXNlIGtDYXNlc1tdID0gewotICAgICAgLy8gTm8gY2hhbmdl
LgotICAgICAge19fTElORV9fLCAiQSIsICJBIiwgIiAiLCAiIn0sCi0gICAgICB7X19MSU5FX18s
ICJBQkNERSIsICJBQkNERSIsICIgICAgICIsICIifSwKLSAgICAgIC8vIFNpbXBsZSBhZGRzLgot
ICAgICAge19fTElORV9fLCAiWCIsICJYQSIsICIgKyIsICJAQCArMSwyIEBAXG4gWFxuK0FcbiJ9
LAotICAgICAge19fTElORV9fLCAiWCIsICJYQUJDRCIsICIgKysrKyIsICJAQCArMSw1IEBAXG4g
WFxuK0FcbitCXG4rQ1xuK0RcbiJ9LAotICAgICAgLy8gU2ltcGxlIHJlbW92ZXMuCi0gICAgICB7
X19MSU5FX18sICJYQSIsICJYIiwgIiAtIiwgIkBAIC0xLDIgQEBcbiBYXG4tQVxuIn0sCi0gICAg
ICB7X19MSU5FX18sICJYQUJDRCIsICJYIiwgIiAtLS0tIiwgIkBAIC0xLDUgQEBcbiBYXG4tQVxu
LUJcbi1DXG4tRFxuIn0sCi0gICAgICAvLyBTaW1wbGUgcmVwbGFjZXMuCi0gICAgICB7X19MSU5F
X18sICJBIiwgImEiLCAiLyIsICJAQCAtMSwxICsxLDEgQEBcbi1BXG4rYVxuIn0sCi0gICAgICB7
X19MSU5FX18sICJBQkNEIiwgImFiY2QiLCAiLy8vLyIsCi0gICAgICAgIkBAIC0xLDQgKzEsNCBA
QFxuLUFcbi1CXG4tQ1xuLURcbithXG4rYlxuK2NcbitkXG4ifSwKLSAgICAgIC8vIFBhdGggZmlu
ZGluZy4KLSAgICAgIHtfX0xJTkVfXywgIkFCQ0RFRkdIIiwgIkFCWEVHSDEiLCAiICAtLyAtICAr
IiwKLSAgICAgICAiQEAgLTEsOCArMSw3IEBAXG4gQVxuIEJcbi1DXG4tRFxuK1hcbiBFXG4tRlxu
IEdcbiBIXG4rMVxuIn0sCi0gICAgICB7X19MSU5FX18sICJBQUFBQkNDQ0MiLCAiQUJBQkNEQ0RD
IiwgIi0gLyAgICsgLyAiLAotICAgICAgICJAQCAtMSw5ICsxLDkgQEBcbi1BXG4gQVxuLUFcbitC
XG4gQVxuIEJcbiBDXG4rRFxuIENcbi1DXG4rRFxuIENcbiJ9LAotICAgICAge19fTElORV9fLCAi
QUJDREUiLCAiQkNEQ0QiLCAiLSAgICsvIiwKLSAgICAgICAiQEAgLTEsNSArMSw1IEBAXG4tQVxu
IEJcbiBDXG4gRFxuLUVcbitDXG4rRFxuIn0sCi0gICAgICB7X19MSU5FX18sICJBQkNERUZHSElK
S0wiLCAiQkNEQ0RFRkdKS0xKSyIsICItICsrICAgICAtLSAgICsrIiwKLSAgICAgICAiQEAgLTEs
NCArMSw1IEBAXG4tQVxuIEJcbitDXG4rRFxuIENcbiBEXG4iCi0gICAgICAgIkBAIC02LDcgKzcs
NyBAQFxuIEZcbiBHXG4tSFxuLUlcbiBKXG4gS1xuIExcbitKXG4rS1xuIn0sCi0gICAgICB7fX07
Ci0gIGZvciAoY29uc3QgQ2FzZSogYyA9IGtDYXNlczsgYy0+bGVmdDsgKytjKSB7Ci0gICAgRVhQ
RUNUX1RSVUUoYy0+ZXhwZWN0ZWRfZWRpdHMgPT0KLSAgICAgICAgICAgICAgICBFZGl0c1RvU3Ry
aW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cyhDaGFyc1RvSW5kaWNlcyhjLT5sZWZ0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc1RvSW5k
aWNlcyhjLT5yaWdodCkpKSkKLSAgICAgICAgPDwgIkxlZnQgPCIgPDwgYy0+bGVmdCA8PCAiPiBS
aWdodCA8IiA8PCBjLT5yaWdodCA8PCAiPiBFZGl0cyA8IgotICAgICAgICA8PCBFZGl0c1RvU3Ry
aW5nKENhbGN1bGF0ZU9wdGltYWxFZGl0cygKLSAgICAgICAgICAgICAgIENoYXJzVG9JbmRpY2Vz
KGMtPmxlZnQpLCBDaGFyc1RvSW5kaWNlcyhjLT5yaWdodCkpKSA8PCAiPiI7Ci0gICAgRVhQRUNU
X1RSVUUoYy0+ZXhwZWN0ZWRfZGlmZiA9PSBDcmVhdGVVbmlmaWVkRGlmZihDaGFyc1RvTGluZXMo
Yy0+bGVmdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDaGFyc1RvTGluZXMoYy0+cmlnaHQpKSkKLSAgICAgICAgPDwgIkxlZnQgPCIgPDwg
Yy0+bGVmdCA8PCAiPiBSaWdodCA8IiA8PCBjLT5yaWdodCA8PCAiPiBEaWZmIDwiCi0gICAgICAg
IDw8IENyZWF0ZVVuaWZpZWREaWZmKENoYXJzVG9MaW5lcyhjLT5sZWZ0KSwgQ2hhcnNUb0xpbmVz
KGMtPnJpZ2h0KSkKLSAgICAgICAgPDwgIj4iOwotICB9Ci19Ci0KLS8vIFRlc3RzIEVxRmFpbHVy
ZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgKkVRKiBhc3NlcnRpb25zLgotVEVTVChBc3NlcnRp
b25UZXN0LCBFcUZhaWx1cmUpIHsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgZm9vX3ZhbCgiNSIpLCBi
YXJfdmFsKCI2Iik7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzEoCi0gICAgICBFcUZhaWx1cmUo
ImZvbyIsICJiYXIiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKLSAgICAgIC5mYWlsdXJlX21l
c3NhZ2UoKSk7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICIgICAgICBFeHBlY3RlZDogZm9vXG4i
Ci0gICAgICAiICAgICAgV2hpY2ggaXM6IDVcbiIKLSAgICAgICJUbyBiZSBlcXVhbCB0bzogYmFy
XG4iCi0gICAgICAiICAgICAgV2hpY2ggaXM6IDYiLAotICAgICAgbXNnMS5jX3N0cigpKTsKLQot
ICBjb25zdCBzdGQ6OnN0cmluZyBtc2cyKAotICAgICAgRXFGYWlsdXJlKCJmb28iLCAiNiIsIGZv
b192YWwsIGJhcl92YWwsIGZhbHNlKQotICAgICAgLmZhaWx1cmVfbWVzc2FnZSgpKTsKLSAgRVhQ
RUNUX1NUUkVRKAotICAgICAgIiAgICAgIEV4cGVjdGVkOiBmb29cbiIKLSAgICAgICIgICAgICBX
aGljaCBpczogNVxuIgotICAgICAgIlRvIGJlIGVxdWFsIHRvOiA2IiwKLSAgICAgIG1zZzIuY19z
dHIoKSk7Ci0KLSAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMygKLSAgICAgIEVxRmFpbHVyZSgiNSIs
ICJiYXIiLCBmb29fdmFsLCBiYXJfdmFsLCBmYWxzZSkKLSAgICAgIC5mYWlsdXJlX21lc3NhZ2Uo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgotICAgICAg
IlRvIGJlIGVxdWFsIHRvOiBiYXJcbiIKLSAgICAgICIgICAgICBXaGljaCBpczogNiIsCi0gICAg
ICBtc2czLmNfc3RyKCkpOwotCi0gIGNvbnN0IHN0ZDo6c3RyaW5nIG1zZzQoCi0gICAgICBFcUZh
aWx1cmUoIjUiLCAiNiIsIGZvb192YWwsIGJhcl92YWwsIGZhbHNlKS5mYWlsdXJlX21lc3NhZ2Uo
KSk7Ci0gIEVYUEVDVF9TVFJFUSgKLSAgICAgICIgICAgICBFeHBlY3RlZDogNVxuIgotICAgICAg
IlRvIGJlIGVxdWFsIHRvOiA2IiwKLSAgICAgIG1zZzQuY19zdHIoKSk7Ci0KLSAgY29uc3Qgc3Rk
OjpzdHJpbmcgbXNnNSgKLSAgICAgIEVxRmFpbHVyZSgiZm9vIiwgImJhciIsCi0gICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcoIlwieFwiIiksIHN0ZDo6c3RyaW5nKCJcInlcIiIpLAotICAgICAg
ICAgICAgICAgIHRydWUpLmZhaWx1cmVfbWVzc2FnZSgpKTsKLSAgRVhQRUNUX1NUUkVRKAotICAg
ICAgIiAgICAgIEV4cGVjdGVkOiBmb29cbiIKLSAgICAgICIgICAgICBXaGljaCBpczogXCJ4XCJc
biIKLSAgICAgICJUbyBiZSBlcXVhbCB0bzogYmFyXG4iCi0gICAgICAiICAgICAgV2hpY2ggaXM6
IFwieVwiXG4iCi0gICAgICAiSWdub3JpbmcgY2FzZSIsCi0gICAgICBtc2c1LmNfc3RyKCkpOwot
fQotCi1URVNUKEFzc2VydGlvblRlc3QsIEVxRmFpbHVyZVdpdGhEaWZmKSB7Ci0gIGNvbnN0IHN0
ZDo6c3RyaW5nIGxlZnQoCi0gICAgICAiMVxcbjJYWFhcXG4zXFxuNVxcbjZcXG43XFxuOFxcbjlc
XG4xMFxcbjExXFxuMTJYWFhcXG4xM1xcbjE0XFxuMTUiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcg
cmlnaHQoCi0gICAgICAiMVxcbjJcXG4zXFxuNFxcbjVcXG42XFxuN1xcbjhcXG45XFxuMTFcXG4x
MlxcbjEzXFxuMTQiKTsKLSAgY29uc3Qgc3RkOjpzdHJpbmcgbXNnMSgKLSAgICAgIEVxRmFpbHVy
ZSgibGVmdCIsICJyaWdodCIsIGxlZnQsIHJpZ2h0LCBmYWxzZSkuZmFpbHVyZV9tZXNzYWdlKCkp
OwotICBFWFBFQ1RfU1RSRVEoCi0gICAgICAiICAgICAgRXhwZWN0ZWQ6IGxlZnRcbiIKLSAgICAg
ICIgICAgICBXaGljaCBpczogIgotICAgICAgIjFcXG4yWFhYXFxuM1xcbjVcXG42XFxuN1xcbjhc
XG45XFxuMTBcXG4xMVxcbjEyWFhYXFxuMTNcXG4xNFxcbjE1XG4iCi0gICAgICAiVG8gYmUgZXF1
YWwgdG86IHJpZ2h0XG4iCi0gICAgICAiICAgICAgV2hpY2ggaXM6IDFcXG4yXFxuM1xcbjRcXG41
XFxuNlxcbjdcXG44XFxuOVxcbjExXFxuMTJcXG4xM1xcbjE0XG4iCi0gICAgICAiV2l0aCBkaWZm
OlxuQEAgLTEsNSArMSw2IEBAXG4gMVxuLTJYWFhcbisyXG4gM1xuKzRcbiA1XG4gNlxuIgotICAg
ICAgIkBAIC03LDggKzgsNiBAQFxuIDhcbiA5XG4tMTBcbiAxMVxuLTEyWFhYXG4rMTJcbiAxM1xu
IDE0XG4tMTVcbiIsCi0gICAgICBtc2cxLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyBBcHBlbmRV
c2VyTWVzc2FnZSgpLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlICpFUSogbWFjcm9zLgotVEVT
VChBc3NlcnRpb25UZXN0LCBBcHBlbmRVc2VyTWVzc2FnZSkgewotICBjb25zdCBzdGQ6OnN0cmlu
ZyBmb28oImZvbyIpOwotCi0gIE1lc3NhZ2UgbXNnOwotICBFWFBFQ1RfU1RSRVEoImZvbyIsCi0g
ICAgICAgICAgICAgICBBcHBlbmRVc2VyTWVzc2FnZShmb28sIG1zZykuY19zdHIoKSk7Ci0KLSAg
bXNnIDw8ICJiYXIiOwotICBFWFBFQ1RfU1RSRVEoImZvb1xuYmFyIiwKLSAgICAgICAgICAgICAg
IEFwcGVuZFVzZXJNZXNzYWdlKGZvbywgbXNnKS5jX3N0cigpKTsKLX0KLQotI2lmZGVmIF9fQk9S
TEFORENfXwotLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRpb24gaXMgYWx3YXlzIHRydWUi
LCAiVW5yZWFjaGFibGUgY29kZSIKLSMgcHJhZ21hIG9wdGlvbiBwdXNoIC13LWNjYyAtdy1yY2gK
LSNlbmRpZgotCi0vLyBUZXN0cyBBU1NFUlRfVFJVRS4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNT
RVJUX1RSVUUpIHsKLSAgQVNTRVJUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9G
QVRBTF9GQUlMVVJFKEFTU0VSVF9UUlVFKDIgPCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IjIgPCAxIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9UUlVFKHByZWRpY2F0ZSkgZm9yIHByZWRp
Y2F0ZXMgcmV0dXJuaW5nIEFzc2VydGlvblJlc3VsdC4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQXNz
ZXJ0VHJ1ZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKLSAgQVNTRVJUX1RSVUUoUmVzdWx0SXNFdmVu
KDIpKTsKLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0gIC8vIElDRSdzIGluIEMrK0J1aWxkZXIuCi0g
IEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9UUlVFKFJlc3VsdElzRXZlbigzKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuKDMpXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICIgIEFjdHVhbDogZmFsc2UgKDMgaXMgb2RkKVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IHRydWUiKTsKLSNlbmRpZgotICBBU1NFUlRfVFJVRShS
ZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9uKDIpKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX1RSVUUoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IGZhbHNlICgzIGlzIG9kZClcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIkV4cGVjdGVkOiB0cnVlIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9G
QUxTRS4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0ZBTFNFKSB7Ci0gIEFTU0VSVF9GQUxT
RSgyIDwgMSk7ICAvLyBOT0xJTlQKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0ZBTFNF
KDIgPiAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyID4gMVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWVcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIkV4cGVjdGVkOiBmYWxzZSIpOwotfQotCi0vLyBUZXN0cyBBU1NFUlRfRkFMU0UocHJl
ZGljYXRlKSBmb3IgcHJlZGljYXRlcyByZXR1cm5pbmcgQXNzZXJ0aW9uUmVzdWx0LgotVEVTVChB
c3NlcnRpb25UZXN0LCBBc3NlcnRGYWxzZVdpdGhBc3NlcnRpb25SZXN1bHQpIHsKLSAgQVNTRVJU
X0ZBTFNFKFJlc3VsdElzRXZlbigzKSk7Ci0jaWZuZGVmIF9fQk9STEFORENfXwotICAvLyBJQ0Un
cyBpbiBDKytCdWlsZGVyLgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRkFMU0UoUmVz
dWx0SXNFdmVuKDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJ
c0V2ZW4oMilcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlICgyIGlz
IGV2ZW4pXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogZmFsc2UiKTsKLSNl
bmRpZgotICBBU1NFUlRfRkFMU0UoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigzKSk7Ci0gIEVY
UEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9GQUxTRShSZXN1bHRJc0V2ZW5Ob0V4cGxhbmF0aW9u
KDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW5Ob0V4
cGxhbmF0aW9uKDIpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIEFjdHVhbDogdHJ1ZVxu
IgotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IGZhbHNlIik7Ci19Ci0KLSNpZmRl
ZiBfX0JPUkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJh
Z21hIG9wdGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotIyBwcmFnbWEgb3B0aW9uIHBvcAotI2Vu
ZGlmCi0KLS8vIFRlc3RzIHVzaW5nIEFTU0VSVF9FUSBvbiBkb3VibGUgdmFsdWVzLiAgVGhlIHB1
cnBvc2UgaXMgdG8gbWFrZQotLy8gc3VyZSB0aGF0IHRoZSBzcGVjaWFsaXphdGlvbiB3ZSBkaWQg
Zm9yIGludGVnZXIgYW5kIGFub255bW91cyBlbnVtcwotLy8gaXNuJ3QgdXNlZCBmb3IgZG91Ymxl
IGFyZ3VtZW50cy4KLVRFU1QoRXhwZWN0VGVzdCwgQVNTRVJUX0VRX0RvdWJsZSkgewotICAvLyBB
IHN1Y2Nlc3MuCi0gIEFTU0VSVF9FUSg1LjYsIDUuNik7Ci0KLSAgLy8gQSBmYWlsdXJlLgotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoNS4xLCA1LjIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAiNS4xIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9FUS4KLVRFU1QoQXNzZXJ0aW9u
VGVzdCwgQVNTRVJUX0VRKSB7Ci0gIEFTU0VSVF9FUSg1LCAyICsgMyk7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9FUSg1LCAyKjMpLAotICAgICAgICAgICAgICAgICAgICAgICAiICAg
ICAgRXhwZWN0ZWQ6IDVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRv
OiAyKjNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIFdoaWNoIGlzOiA2Iik7Ci19
Ci0KLS8vIFRlc3RzIEFTU0VSVF9FUShOVUxMLCBwb2ludGVyKS4KLSNpZiBHVEVTVF9DQU5fQ09N
UEFSRV9OVUxMCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9FUV9OVUxMKSB7Ci0gIC8vIEEg
c3VjY2Vzcy4KLSAgY29uc3QgY2hhciogcCA9IE5VTEw7Ci0gIC8vIFNvbWUgb2xkZXIgR0NDIHZl
cnNpb25zIG1heSBpc3N1ZSBhIHNwdXJpb3VzIHdhcmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0Ci0g
IC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMgd2FybmluZyBzaG91bGQgbm90IGJlIHN1cHBy
ZXNzZWQgd2l0aAotICAvLyBzdGF0aWNfY2FzdCBzaW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUg
YWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRoZQotICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIg
dG8gdGhlIG1hY3JvLgotICBBU1NFUlRfRVEoTlVMTCwgcCk7Ci0KLSAgLy8gQSBmYWlsdXJlLgot
ICBzdGF0aWMgaW50IG4gPSAwOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoTlVM
TCwgJm4pLAotICAgICAgICAgICAgICAgICAgICAgICAiVG8gYmUgZXF1YWwgdG86ICZuXG4iKTsK
LX0KLSNlbmRpZiAgLy8gR1RFU1RfQ0FOX0NPTVBBUkVfTlVMTAotCi0vLyBUZXN0cyBBU1NFUlRf
RVEoMCwgbm9uX3BvaW50ZXIpLiAgU2luY2UgdGhlIGxpdGVyYWwgMCBjYW4gYmUKLS8vIHRyZWF0
ZWQgYXMgYSBudWxsIHBvaW50ZXIgYnkgdGhlIGNvbXBpbGVyLCB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZQotLy8gdGhhdCBBU1NFUlRfRVEoMCwgbm9uX3BvaW50ZXIpIGlzbid0IGludGVycHJldGVkIGJ5
IEdvb2dsZSBUZXN0IGFzCi0vLyBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8dm9pZCo+KE5VTEwpLCBu
b25fcG9pbnRlcikuCi1URVNUKEV4cGVjdFRlc3QsIEFTU0VSVF9FUV8wKSB7Ci0gIGludCBuID0g
MDsKLQotICAvLyBBIHN1Y2Nlc3MuCi0gIEFTU0VSVF9FUSgwLCBuKTsKLQotICAvLyBBIGZhaWx1
cmUuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSgwLCA1LjYpLAotICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IDAiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX05FLgot
VEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfTkUpIHsKLSAgQVNTRVJUX05FKDYsIDcpOwotICBF
WFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTkUoJ2EnLCAnYScpLAotICAgICAgICAgICAgICAg
ICAgICAgICAiRXhwZWN0ZWQ6ICgnYScpICE9ICgnYScpLCAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICJhY3R1YWw6ICdhJyAoOTcsIDB4NjEpIHZzICdhJyAoOTcsIDB4NjEpIik7Ci19Ci0KLS8v
IFRlc3RzIEFTU0VSVF9MRS4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgQVNTRVJUX0xFKSB7Ci0gIEFT
U0VSVF9MRSgyLCAzKTsKLSAgQVNTRVJUX0xFKDIsIDIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfTEUoMiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogKDIp
IDw9ICgwKSwgYWN0dWFsOiAyIHZzIDAiKTsKLX0KLQotLy8gVGVzdHMgQVNTRVJUX0xULgotVEVT
VChBc3NlcnRpb25UZXN0LCBBU1NFUlRfTFQpIHsKLSAgQVNTRVJUX0xUKDIsIDMpOwotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTFQoMiwgMiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICJFeHBlY3RlZDogKDIpIDwgKDIpLCBhY3R1YWw6IDIgdnMgMiIpOwotfQotCi0vLyBUZXN0cyBB
U1NFUlRfR0UuCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9HRSkgewotICBBU1NFUlRfR0Uo
MiwgMSk7Ci0gIEFTU0VSVF9HRSgyLCAyKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJU
X0dFKDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6ICgyKSA+PSAoMyks
IGFjdHVhbDogMiB2cyAzIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9HVC4KLVRFU1QoQXNzZXJ0
aW9uVGVzdCwgQVNTRVJUX0dUKSB7Ci0gIEFTU0VSVF9HVCgyLCAxKTsKLSAgRVhQRUNUX0ZBVEFM
X0ZBSUxVUkUoQVNTRVJUX0dUKDIsIDIpLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0
ZWQ6ICgyKSA+ICgyKSwgYWN0dWFsOiAyIHZzIDIiKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENF
UFRJT05TCi0KLXZvaWQgVGhyb3dOb3RoaW5nKCkge30KLQotLy8gVGVzdHMgQVNTRVJUX1RIUk9X
LgotVEVTVChBc3NlcnRpb25UZXN0LCBBU1NFUlRfVEhST1cpIHsKLSAgQVNTRVJUX1RIUk9XKFRo
cm93QW5JbnRlZ2VyKCksIGludCk7Ci0KLSMgaWZuZGVmIF9fQk9STEFORENfXwotCi0gIC8vIElD
RSdzIGluIEMrK0J1aWxkZXIgMjAwNyBhbmQgMjAwOS4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
Ci0gICAgICBBU1NFUlRfVEhST1coVGhyb3dBbkludGVnZXIoKSwgYm9vbCksCi0gICAgICAiRXhw
ZWN0ZWQ6IFRocm93QW5JbnRlZ2VyKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wu
XG4iCi0gICAgICAiICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiIpOwotIyBl
bmRpZgotCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKAotICAgICAgQVNTRVJUX1RIUk9XKFRocm93
Tm90aGluZygpLCBib29sKSwKLSAgICAgICJFeHBlY3RlZDogVGhyb3dOb3RoaW5nKCkgdGhyb3dz
IGFuIGV4Y2VwdGlvbiBvZiB0eXBlIGJvb2wuXG4iCi0gICAgICAiICBBY3R1YWw6IGl0IHRocm93
cyBub3RoaW5nLiIpOwotfQotCi0vLyBUZXN0cyBBU1NFUlRfTk9fVEhST1cuCi1URVNUKEFzc2Vy
dGlvblRlc3QsIEFTU0VSVF9OT19USFJPVykgewotICBBU1NFUlRfTk9fVEhST1coVGhyb3dOb3Ro
aW5nKCkpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfTk9fVEhST1coVGhyb3dBbklu
dGVnZXIoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogVGhyb3dBbkludGVn
ZXIoKSBkb2Vzbid0IHRocm93IGFuIGV4Y2VwdGlvbi4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICJcbiAgQWN0dWFsOiBpdCB0aHJvd3MuIik7Ci19Ci0KLS8vIFRlc3RzIEFTU0VSVF9BTllfVEhS
T1cuCi1URVNUKEFzc2VydGlvblRlc3QsIEFTU0VSVF9BTllfVEhST1cpIHsKLSAgQVNTRVJUX0FO
WV9USFJPVyhUaHJvd0FuSW50ZWdlcigpKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoCi0gICAg
ICBBU1NFUlRfQU5ZX1RIUk9XKFRocm93Tm90aGluZygpKSwKLSAgICAgICJFeHBlY3RlZDogVGhy
b3dOb3RoaW5nKCkgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cbiIKLSAgICAgICIgIEFjdHVhbDogaXQg
ZG9lc24ndC4iKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi0vLyBN
YWtlcyBzdXJlIHdlIGRlYWwgd2l0aCB0aGUgcHJlY2VkZW5jZSBvZiA8PC4gIFRoaXMgdGVzdCBz
aG91bGQKLS8vIGNvbXBpbGUuCi1URVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFByZWNlZGVuY2Up
IHsKLSAgQVNTRVJUX0VRKDEgPCAyLCB0cnVlKTsKLSAgYm9vbCBmYWxzZV92YWx1ZSA9IGZhbHNl
OwotICBBU1NFUlRfRVEodHJ1ZSAmJiBmYWxzZV92YWx1ZSwgZmFsc2UpOwotfQotCi0vLyBBIHN1
YnJvdXRpbmUgdXNlZCBieSB0aGUgZm9sbG93aW5nIHRlc3QuCi12b2lkIFRlc3RFcTEoaW50IHgp
IHsKLSAgQVNTRVJUX0VRKDEsIHgpOwotfQotCi0vLyBUZXN0cyBjYWxsaW5nIGEgdGVzdCBzdWJy
b3V0aW5lIHRoYXQncyBub3QgcGFydCBvZiBhIGZpeHR1cmUuCi1URVNUKEFzc2VydGlvblRlc3Qs
IE5vbkZpeHR1cmVTdWJyb3V0aW5lKSB7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRlc3RFcTEo
MiksCi0gICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogeCIpOwotfQotCi0v
LyBBbiB1bmNvcHlhYmxlIGNsYXNzLgotY2xhc3MgVW5jb3B5YWJsZSB7Ci0gcHVibGljOgotICBl
eHBsaWNpdCBVbmNvcHlhYmxlKGludCBhX3ZhbHVlKSA6IHZhbHVlXyhhX3ZhbHVlKSB7fQotCi0g
IGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlXzsgfQotICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVW5jb3B5YWJsZSYgcmhzKSBjb25zdCB7Ci0gICAgcmV0dXJuIHZhbHVlKCkgPT0gcmhz
LnZhbHVlKCk7Ci0gIH0KLSBwcml2YXRlOgotICAvLyBUaGlzIGNvbnN0cnVjdG9yIGRlbGliZXJh
dGVseSBoYXMgbm8gaW1wbGVtZW50YXRpb24sIGFzIHdlIGRvbid0Ci0gIC8vIHdhbnQgdGhpcyBj
bGFzcyB0byBiZSBjb3B5YWJsZS4KLSAgVW5jb3B5YWJsZShjb25zdCBVbmNvcHlhYmxlJik7ICAv
LyBOT0xJTlQKLQotICBpbnQgdmFsdWVfOwotfTsKLQotOjpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoOjpzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBVbmNvcHlhYmxlJiB2YWx1ZSkgewotICByZXR1
cm4gb3MgPDwgdmFsdWUudmFsdWUoKTsKLX0KLQotCi1ib29sIElzUG9zaXRpdmVVbmNvcHlhYmxl
KGNvbnN0IFVuY29weWFibGUmIHgpIHsKLSAgcmV0dXJuIHgudmFsdWUoKSA+IDA7Ci19Ci0KLS8v
IEEgc3Vicm91dGluZSB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgdGVzdC4KLXZvaWQgVGVzdEFzc2Vy
dE5vblBvc2l0aXZlKCkgewotICBVbmNvcHlhYmxlIHkoLTEpOwotICBBU1NFUlRfUFJFRDEoSXNQ
b3NpdGl2ZVVuY29weWFibGUsIHkpOwotfQotLy8gQSBzdWJyb3V0aW5lIHVzZWQgYnkgdGhlIGZv
bGxvd2luZyB0ZXN0Lgotdm9pZCBUZXN0QXNzZXJ0RXF1YWxzVW5jb3B5YWJsZSgpIHsKLSAgVW5j
b3B5YWJsZSB4KDUpOwotICBVbmNvcHlhYmxlIHkoLTEpOwotICBBU1NFUlRfRVEoeCwgeSk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgdW5jb3B5YWJsZSBvYmplY3RzIGNhbiBiZSB1c2VkIGluIGFzc2Vy
dGlvbnMuCi1URVNUKEFzc2VydGlvblRlc3QsIEFzc2VydFdvcmtzV2l0aFVuY29weWFibGVPYmpl
Y3QpIHsKLSAgVW5jb3B5YWJsZSB4KDUpOwotICBBU1NFUlRfUFJFRDEoSXNQb3NpdGl2ZVVuY29w
eWFibGUsIHgpOwotICBBU1NFUlRfRVEoeCwgeCk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKFRl
c3RBc3NlcnROb25Qb3NpdGl2ZSgpLAotICAgICJJc1Bvc2l0aXZlVW5jb3B5YWJsZSh5KSBldmFs
dWF0ZXMgdG8gZmFsc2UsIHdoZXJlXG55IGV2YWx1YXRlcyB0byAtMSIpOwotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShUZXN0QXNzZXJ0RXF1YWxzVW5jb3B5YWJsZSgpLAotICAgICJFeHBlY3RlZDog
eFxuICAgICAgV2hpY2ggaXM6IDVcblRvIGJlIGVxdWFsIHRvOiB5XG4gICAgICBXaGljaCBpczog
LTEiKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB1bmNvcHlhYmxlIG9iamVjdHMgY2FuIGJlIHVzZWQg
aW4gZXhwZWN0cy4KLVRFU1QoQXNzZXJ0aW9uVGVzdCwgRXhwZWN0V29ya3NXaXRoVW5jb3B5YWJs
ZU9iamVjdCkgewotICBVbmNvcHlhYmxlIHgoNSk7Ci0gIEVYUEVDVF9QUkVEMShJc1Bvc2l0aXZl
VW5jb3B5YWJsZSwgeCk7Ci0gIFVuY29weWFibGUgeSgtMSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9G
QUlMVVJFKEVYUEVDVF9QUkVEMShJc1Bvc2l0aXZlVW5jb3B5YWJsZSwgeSksCi0gICAgIklzUG9z
aXRpdmVVbmNvcHlhYmxlKHkpIGV2YWx1YXRlcyB0byBmYWxzZSwgd2hlcmVcbnkgZXZhbHVhdGVz
IHRvIC0xIik7Ci0gIEVYUEVDVF9FUSh4LCB4KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKHgsIHkpLAotICAgICJFeHBlY3RlZDogeFxuICAgICAgV2hpY2ggaXM6IDVcblRv
IGJlIGVxdWFsIHRvOiB5XG4gICAgICBXaGljaCBpczogLTEiKTsKLX0KLQotZW51bSBOYW1lZEVu
dW0gewotICBrRTEgPSAwLAotICBrRTIgPSAxCi19OwotCi1URVNUKEFzc2VydGlvblRlc3QsIE5h
bWVkRW51bSkgewotICBFWFBFQ1RfRVEoa0UxLCBrRTEpOwotICBFWFBFQ1RfTFQoa0UxLCBrRTIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoa0UxLCBrRTIpLCAiV2hpY2gg
aXM6IDAiKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKGtFMSwga0UyKSwg
IldoaWNoIGlzOiAxIik7Ci19Ci0KLS8vIFRoZSB2ZXJzaW9uIG9mIGdjYyB1c2VkIGluIFhDb2Rl
IDIuMiBoYXMgYSBidWcgYW5kIGRvZXNuJ3QgYWxsb3cKLS8vIGFub255bW91cyBlbnVtcyBpbiBh
c3NlcnRpb25zLiAgVGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgdGVzdCBpcyBub3QKLS8vIGRvbmUg
b24gTWFjLgotLy8gU3VuIFN0dWRpbyBhbmQgSFAgYUNDIGFsc28gcmVqZWN0IHRoaXMgY29kZS4K
LSNpZiAhR1RFU1RfT1NfTUFDICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChf
X0hQX2FDQykKLQotLy8gVGVzdHMgdXNpbmcgYXNzZXJ0aW9ucyB3aXRoIGFub255bW91cyBlbnVt
cy4KLWVudW0gewotICBrQ2FzZUEgPSAtMSwKLQotIyBpZiBHVEVTVF9PU19MSU5VWAotCi0gIC8v
IFdlIHdhbnQgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgc2l6ZSBvZiB0aGUgYW5vbnltb3Vz
IGVudW0gaXMKLSAgLy8gbGFyZ2VyIHRoYW4gc2l6ZW9mKGludCksIHRvIG1ha2Ugc3VyZSBvdXIg
aW1wbGVtZW50YXRpb24gb2YgdGhlCi0gIC8vIGFzc2VydGlvbnMgZG9lc24ndCB0cnVuY2F0ZSB0
aGUgZW51bXMuICBIb3dldmVyLCBNU1ZDCi0gIC8vIChpbmNvcnJlY3RseSkgZG9lc24ndCBhbGxv
dyBhbiBlbnVtIHZhbHVlIHRvIGV4Y2VlZCB0aGUgcmFuZ2Ugb2YKLSAgLy8gYW4gaW50LCBzbyB0
aGlzIGhhcyB0byBiZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgotICAvLwotICAvLyBPbiBMaW51
eCwga0Nhc2VCIGFuZCBrQ2FzZUEgaGF2ZSB0aGUgc2FtZSB2YWx1ZSB3aGVuIHRydW5jYXRlZCB0
bwotICAvLyBpbnQgc2l6ZS4gIFdlIHdhbnQgdG8gdGVzdCB3aGV0aGVyIHRoaXMgd2lsbCBjb25m
dXNlIHRoZQotICAvLyBhc3NlcnRpb25zLgotICBrQ2FzZUIgPSB0ZXN0aW5nOjppbnRlcm5hbDo6
a01heEJpZ2dlc3RJbnQsCi0KLSMgZWxzZQotCi0gIGtDYXNlQiA9IElOVF9NQVgsCi0KLSMgZW5k
aWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSAga0Nhc2VDID0gNDIKLX07Ci0KLVRFU1QoQXNzZXJ0
aW9uVGVzdCwgQW5vbnltb3VzRW51bSkgewotIyBpZiBHVEVTVF9PU19MSU5VWAotCi0gIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxpbnQ+KGtDYXNlQSksIHN0YXRpY19jYXN0PGludD4oa0Nhc2VCKSk7
Ci0KLSMgZW5kaWYgIC8vIEdURVNUX09TX0xJTlVYCi0KLSAgRVhQRUNUX0VRKGtDYXNlQSwga0Nh
c2VBKTsKLSAgRVhQRUNUX05FKGtDYXNlQSwga0Nhc2VCKTsKLSAgRVhQRUNUX0xUKGtDYXNlQSwg
a0Nhc2VCKTsKLSAgRVhQRUNUX0xFKGtDYXNlQSwga0Nhc2VCKTsKLSAgRVhQRUNUX0dUKGtDYXNl
Qiwga0Nhc2VBKTsKLSAgRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VBKTsKLSAgRVhQRUNUX05PTkZB
VEFMX0ZBSUxVUkUoRVhQRUNUX0dFKGtDYXNlQSwga0Nhc2VCKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIihrQ2FzZUEpID49IChrQ2FzZUIpIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9HRShrQ2FzZUEsIGtDYXNlQyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICItMSB2cyA0MiIpOwotCi0gIEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNlQSk7Ci0gIEFTU0VSVF9O
RShrQ2FzZUEsIGtDYXNlQik7Ci0gIEFTU0VSVF9MVChrQ2FzZUEsIGtDYXNlQik7Ci0gIEFTU0VS
VF9MRShrQ2FzZUEsIGtDYXNlQik7Ci0gIEFTU0VSVF9HVChrQ2FzZUIsIGtDYXNlQSk7Ci0gIEFT
U0VSVF9HRShrQ2FzZUEsIGtDYXNlQSk7Ci0KLSMgaWZuZGVmIF9fQk9STEFORENfXwotCi0gIC8v
IElDRSdzIGluIEMrK0J1aWxkZXIuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShr
Q2FzZUEsIGtDYXNlQiksCi0gICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzog
a0Nhc2VCIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShrQ2FzZUEsIGtDYXNl
QyksCi0gICAgICAgICAgICAgICAgICAgICAgICJXaGljaCBpczogNDIiKTsKLSMgZW5kaWYKLQot
ICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoa0Nhc2VBLCBrQ2FzZUMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAiV2hpY2ggaXM6IC0xIik7Ci19Ci0KLSNlbmRpZiAgLy8gIUdURVNU
X09TX01BQyAmJiAhZGVmaW5lZChfX1NVTlBST19DQykKLQotI2lmIEdURVNUX09TX1dJTkRPV1MK
LQotc3RhdGljIEhSRVNVTFQgVW5leHBlY3RlZEhSRVNVTFRGYWlsdXJlKCkgewotICByZXR1cm4g
RV9VTkVYUEVDVEVEOwotfQotCi1zdGF0aWMgSFJFU1VMVCBPa0hSRVNVTFRTdWNjZXNzKCkgewot
ICByZXR1cm4gU19PSzsKLX0KLQotc3RhdGljIEhSRVNVTFQgRmFsc2VIUkVTVUxUU3VjY2Vzcygp
IHsKLSAgcmV0dXJuIFNfRkFMU0U7Ci19Ci0KLS8vIEhSRVNVTFQgYXNzZXJ0aW9uIHRlc3RzIHRl
c3QgYm90aCB6ZXJvIGFuZCBub24temVybwotLy8gc3VjY2VzcyBjb2RlcyBhcyB3ZWxsIGFzIGZh
aWx1cmUgbWVzc2FnZSBmb3IgZWFjaC4KLS8vCi0vLyBXaW5kb3dzIENFIGRvZXNuJ3Qgc3VwcG9y
dCBtZXNzYWdlIHRleHRzLgotVEVTVChIUkVTVUxUQXNzZXJ0aW9uVGVzdCwgRVhQRUNUX0hSRVNV
TFRfU1VDQ0VFREVEKSB7Ci0gIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChTX09LKTsKLSAgRVhQ
RUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNfRkFMU0UpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlM
VVJFKEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChVbmV4cGVjdGVkSFJFU1VMVEZhaWx1cmUoKSks
Ci0gICAgIkV4cGVjdGVkOiAoVW5leHBlY3RlZEhSRVNVTFRGYWlsdXJlKCkpIHN1Y2NlZWRzLlxu
IgotICAgICIgIEFjdHVhbDogMHg4MDAwRkZGRiIpOwotfQotCi1URVNUKEhSRVNVTFRBc3NlcnRp
b25UZXN0LCBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQpIHsKLSAgQVNTRVJUX0hSRVNVTFRfU1VD
Q0VFREVEKFNfT0spOwotICBBU1NFUlRfSFJFU1VMVF9TVUNDRUVERUQoU19GQUxTRSk7Ci0KLSAg
RVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX0hSRVNVTFRfU1VDQ0VFREVEKFVuZXhwZWN0ZWRI
UkVTVUxURmFpbHVyZSgpKSwKLSAgICAiRXhwZWN0ZWQ6IChVbmV4cGVjdGVkSFJFU1VMVEZhaWx1
cmUoKSkgc3VjY2VlZHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDgwMDBGRkZGIik7Ci19Ci0KLVRF
U1QoSFJFU1VMVEFzc2VydGlvblRlc3QsIEVYUEVDVF9IUkVTVUxUX0ZBSUxFRCkgewotICBFWFBF
Q1RfSFJFU1VMVF9GQUlMRUQoRV9VTkVYUEVDVEVEKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoT2tIUkVTVUxUU3VjY2VzcygpKSwKLSAgICAiRXhw
ZWN0ZWQ6IChPa0hSRVNVTFRTdWNjZXNzKCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgw
Iik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9IUkVTVUxUX0ZBSUxFRChGYWxz
ZUhSRVNVTFRTdWNjZXNzKCkpLAotICAgICJFeHBlY3RlZDogKEZhbHNlSFJFU1VMVFN1Y2Nlc3Mo
KSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDEiKTsKLX0KLQotVEVTVChIUkVTVUxUQXNz
ZXJ0aW9uVGVzdCwgQVNTRVJUX0hSRVNVTFRfRkFJTEVEKSB7Ci0gIEFTU0VSVF9IUkVTVUxUX0ZB
SUxFRChFX1VORVhQRUNURUQpOwotCi0jIGlmbmRlZiBfX0JPUkxBTkRDX18KLQotICAvLyBJQ0Un
cyBpbiBDKytCdWlsZGVyIDIwMDcgYW5kIDIwMDkuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFT
U0VSVF9IUkVTVUxUX0ZBSUxFRChPa0hSRVNVTFRTdWNjZXNzKCkpLAotICAgICJFeHBlY3RlZDog
KE9rSFJFU1VMVFN1Y2Nlc3MoKSkgZmFpbHMuXG4iCi0gICAgIiAgQWN0dWFsOiAweDAiKTsKLSMg
ZW5kaWYKLQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfSFJFU1VMVF9GQUlMRUQoRmFs
c2VIUkVTVUxUU3VjY2VzcygpKSwKLSAgICAiRXhwZWN0ZWQ6IChGYWxzZUhSRVNVTFRTdWNjZXNz
KCkpIGZhaWxzLlxuIgotICAgICIgIEFjdHVhbDogMHgxIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQg
c3RyZWFtaW5nIHRvIHRoZSBIUkVTVUxUIG1hY3JvcyB3b3Jrcy4KLVRFU1QoSFJFU1VMVEFzc2Vy
dGlvblRlc3QsIFN0cmVhbWluZykgewotICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoU19PSykg
PDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9IUkVTVUxUX1NVQ0NFRURFRChTX09L
KSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX0hSRVNVTFRfRkFJTEVEKEVfVU5F
WFBFQ1RFRCkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9IUkVTVUxUX0ZBSUxF
RChFX1VORVhQRUNURUQpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotCi0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKAotICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKEVfVU5FWFBFQ1RF
RCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLQot
IyBpZm5kZWYgX19CT1JMQU5EQ19fCi0KLSAgLy8gSUNFJ3MgaW4gQysrQnVpbGRlciAyMDA3IGFu
ZCAyMDA5LgotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKLSAgICAgIEFTU0VSVF9IUkVTVUxUX1NV
Q0NFRURFRChFX1VORVhQRUNURUQpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICJleHBl
Y3RlZCBmYWlsdXJlIik7Ci0jIGVuZGlmCi0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoCi0g
ICAgICBFWFBFQ1RfSFJFU1VMVF9GQUlMRUQoU19PSykgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAot
ICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLQotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSgKLSAg
ICAgIEFTU0VSVF9IUkVTVUxUX0ZBSUxFRChTX09LKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0g
ICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX09TX1dJTkRP
V1MKLQotI2lmZGVmIF9fQk9STEFORENfXwotLy8gU2lsZW5jZXMgd2FybmluZ3M6ICJDb25kaXRp
b24gaXMgYWx3YXlzIHRydWUiLCAiVW5yZWFjaGFibGUgY29kZSIKLSMgcHJhZ21hIG9wdGlvbiBw
dXNoIC13LWNjYyAtdy1yY2gKLSNlbmRpZgotCi0vLyBUZXN0cyB0aGF0IHRoZSBhc3NlcnRpb24g
bWFjcm9zIGJlaGF2ZSBsaWtlIHNpbmdsZSBzdGF0ZW1lbnRzLgotVEVTVChBc3NlcnRpb25TeW50
YXhUZXN0LCBCYXNpY0Fzc2VydGlvbnNCZWhhdmVzTGlrZVNpbmdsZVN0YXRlbWVudCkgewotICBp
ZiAoQWx3YXlzRmFsc2UoKSkKLSAgICBBU1NFUlRfVFJVRShmYWxzZSkgPDwgIlRoaXMgc2hvdWxk
IG5ldmVyIGJlIGV4ZWN1dGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJJdCdzIGEg
Y29tcGlsYXRpb24gdGVzdCBvbmx5LiI7Ci0KLSAgaWYgKEFsd2F5c1RydWUoKSkKLSAgICBFWFBF
Q1RfRkFMU0UoZmFsc2UpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYgKEFsd2F5
c0ZhbHNlKCkpCi0gICAgQVNTRVJUX0xUKDEsIDMpOwotCi0gIGlmIChBbHdheXNGYWxzZSgpKQot
ICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0gICAgRVhQRUNUX0dUKDMsIDIpIDw8ICIiOwotfQot
Ci0jaWYgR1RFU1RfSEFTX0VYQ0VQVElPTlMKLS8vIFRlc3RzIHRoYXQgdGhlIGNvbXBpbGVyIHdp
bGwgbm90IGNvbXBsYWluIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgaW4gdGhlCi0vLyBFWFBFQ1Rf
VEhST1cvRVhQRUNUX0FOWV9USFJPVy9FWFBFQ1RfTk9fVEhST1cgbWFjcm9zLgotVEVTVChFeHBl
Y3RUaHJvd1Rlc3QsIERvZXNOb3RHZW5lcmF0ZVVucmVhY2hhYmxlQ29kZVdhcm5pbmcpIHsKLSAg
aW50IG4gPSAwOwotCi0gIEVYUEVDVF9USFJPVyh0aHJvdyAxLCBpbnQpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfVEhST1cobisrLCBpbnQpLCAiIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyh0aHJvdyAxLCBjb25zdCBjaGFyKiksICIiKTsKLSAg
RVhQRUNUX05PX1RIUk9XKG4rKyk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9O
T19USFJPVyh0aHJvdyAxKSwgIiIpOwotICBFWFBFQ1RfQU5ZX1RIUk9XKHRocm93IDEpOwotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfQU5ZX1RIUk9XKG4rKyksICIiKTsKLX0KLQot
VEVTVChBc3NlcnRpb25TeW50YXhUZXN0LCBFeGNlcHRpb25Bc3NlcnRpb25zQmVoYXZlc0xpa2VT
aW5nbGVTdGF0ZW1lbnQpIHsKLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgRVhQRUNUX1RIUk9X
KFRocm93Tm90aGluZygpLCBib29sKTsKLQotICBpZiAoQWx3YXlzVHJ1ZSgpKQotICAgIEVYUEVD
VF9USFJPVyhUaHJvd0FuSW50ZWdlcigpLCBpbnQpOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5U
Ci0KLSAgaWYgKEFsd2F5c0ZhbHNlKCkpCi0gICAgRVhQRUNUX05PX1RIUk9XKFRocm93QW5JbnRl
Z2VyKCkpOwotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAgRVhQRUNUX05PX1RIUk9XKFRocm93
Tm90aGluZygpKTsKLSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0gIGlmIChBbHdheXNGYWxz
ZSgpKQotICAgIEVYUEVDVF9BTllfVEhST1coVGhyb3dOb3RoaW5nKCkpOwotCi0gIGlmIChBbHdh
eXNUcnVlKCkpCi0gICAgRVhQRUNUX0FOWV9USFJPVyhUaHJvd0FuSW50ZWdlcigpKTsKLSAgZWxz
ZQotICAgIDsgIC8vIE5PTElOVAotfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwot
Ci1URVNUKEFzc2VydGlvblN5bnRheFRlc3QsIE5vRmF0YWxGYWlsdXJlQXNzZXJ0aW9uc0JlaGF2
ZXNMaWtlU2luZ2xlU3RhdGVtZW50KSB7Ci0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIEVYUEVD
VF9OT19GQVRBTF9GQUlMVVJFKEZBSUwoKSkgPDwgIlRoaXMgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1
dGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiSXQncyBhIGNv
bXBpbGF0aW9uIHRlc3Qgb25seS4iOwotICBlbHNlCi0gICAgOyAgLy8gTk9MSU5UCi0KLSAgaWYg
KEFsd2F5c0ZhbHNlKCkpCi0gICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoRkFJTCgpKSA8PCAi
IjsKLSAgZWxzZQotICAgIDsgIC8vIE5PTElOVAotCi0gIGlmIChBbHdheXNUcnVlKCkpCi0gICAg
RVhQRUNUX05PX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpKTsKLSAgZWxzZQotICAgIDsgIC8vIE5P
TElOVAotCi0gIGlmIChBbHdheXNGYWxzZSgpKQotICAgIDsgIC8vIE5PTElOVAotICBlbHNlCi0g
ICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoU1VDQ0VFRCgpKTsKLX0KLQotLy8gVGVzdHMgdGhh
dCB0aGUgYXNzZXJ0aW9uIG1hY3JvcyB3b3JrIHdlbGwgd2l0aCBzd2l0Y2ggc3RhdGVtZW50cy4K
LVRFU1QoQXNzZXJ0aW9uU3ludGF4VGVzdCwgV29ya3NXaXRoU3dpdGNoKSB7Ci0gIHN3aXRjaCAo
MCkgewotICAgIGNhc2UgMToKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBBU1NF
UlRfVFJVRSh0cnVlKTsKLSAgfQotCi0gIHN3aXRjaCAoMCkKLSAgICBjYXNlIDA6Ci0gICAgICBF
WFBFQ1RfRkFMU0UoZmFsc2UpIDw8ICJFWFBFQ1RfRkFMU0UgZmFpbGVkIGluIHN3aXRjaCBjYXNl
IjsKLQotICAvLyBCaW5hcnkgYXNzZXJ0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBkaWZm
ZXJlbnQgY29kZSBwYXRoCi0gIC8vIHRoYW4gdGhlIEJvb2xlYW4gYXNzZXJ0aW9ucy4gIEhlbmNl
IHdlIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgotICBzd2l0Y2ggKDApIHsKLSAgICBjYXNlIDE6Ci0g
ICAgZGVmYXVsdDoKLSAgICAgIEFTU0VSVF9FUSgxLCAxKSA8PCAiQVNTRVJUX0VRIGZhaWxlZCBp
biBkZWZhdWx0IHN3aXRjaCBoYW5kbGVyIjsKLSAgfQotCi0gIHN3aXRjaCAoMCkKLSAgICBjYXNl
IDA6Ci0gICAgICBFWFBFQ1RfTkUoMSwgMik7Ci19Ci0KLSNpZiBHVEVTVF9IQVNfRVhDRVBUSU9O
UwotCi12b2lkIFRocm93QVN0cmluZygpIHsKLSAgICB0aHJvdyAic3RkOjpzdHJpbmciOwotfQot
Ci0vLyBUZXN0IHRoYXQgdGhlIGV4Y2VwdGlvbiBhc3NlcnRpb24gbWFjcm9zIGNvbXBpbGUgYW5k
IHdvcmsgd2l0aCBjb25zdAotLy8gdHlwZSBxdWFsaWZpZXIuCi1URVNUKEFzc2VydGlvblN5bnRh
eFRlc3QsIFdvcmtzV2l0aENvbnN0KSB7Ci0gICAgQVNTRVJUX1RIUk9XKFRocm93QVN0cmluZygp
LCBjb25zdCBjaGFyKik7Ci0KLSAgICBFWFBFQ1RfVEhST1coVGhyb3dBU3RyaW5nKCksIGNvbnN0
IGNoYXIqKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfRVhDRVBUSU9OUwotCi19ICAvLyBu
YW1lc3BhY2UKLQotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBU
ZXN0IHRyYWNrcyBTVUNDRUVEKi4KLVRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRlc3QsIFNVQ0NF
RUQpIHsKLSAgU1VDQ0VFRCgpOwotICBTVUNDRUVEKCkgPDwgIk9LIjsKLSAgRVhQRUNUX0VRKDIs
IEdldFVuaXRUZXN0SW1wbCgpLT5jdXJyZW50X3Rlc3RfcmVzdWx0KCktPnRvdGFsX3BhcnRfY291
bnQoKSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgR29vZ2xlIFRlc3QgZG9lc24ndCB0cmFjayBzdWNj
ZXNzZnVsIEVYUEVDVF8qLgotVEVTVChTdWNjZXNzZnVsQXNzZXJ0aW9uVGVzdCwgRVhQRUNUKSB7
Ci0gIEVYUEVDVF9UUlVFKHRydWUpOwotICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCkt
PmN1cnJlbnRfdGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBHb29nbGUgVGVzdCBkb2Vzbid0IHRyYWNrIHN1Y2Nlc3NmdWwgRVhQRUNUX1NUUiou
Ci1URVNUKFN1Y2Nlc3NmdWxBc3NlcnRpb25UZXN0LCBFWFBFQ1RfU1RSKSB7Ci0gIEVYUEVDVF9T
VFJFUSgiIiwgIiIpOwotICBFWFBFQ1RfRVEoMCwgR2V0VW5pdFRlc3RJbXBsKCktPmN1cnJlbnRf
dGVzdF9yZXN1bHQoKS0+dG90YWxfcGFydF9jb3VudCgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBH
b29nbGUgVGVzdCBkb2Vzbid0IHRyYWNrIHN1Y2Nlc3NmdWwgQVNTRVJUXyouCi1URVNUKFN1Y2Nl
c3NmdWxBc3NlcnRpb25UZXN0LCBBU1NFUlQpIHsKLSAgQVNTRVJUX1RSVUUodHJ1ZSk7Ci0gIEVY
UEVDVF9FUSgwLCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3Rh
bF9wYXJ0X2NvdW50KCkpOwotfQotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGRvZXNuJ3Qg
dHJhY2sgc3VjY2Vzc2Z1bCBBU1NFUlRfU1RSKi4KLVRFU1QoU3VjY2Vzc2Z1bEFzc2VydGlvblRl
c3QsIEFTU0VSVF9TVFIpIHsKLSAgQVNTRVJUX1NUUkVRKCIiLCAiIik7Ci0gIEVYUEVDVF9FUSgw
LCBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X3Jlc3VsdCgpLT50b3RhbF9wYXJ0X2Nv
dW50KCkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgdGVzdGluZwotCi1uYW1lc3BhY2UgewotCi0v
LyBUZXN0cyB0aGUgbWVzc2FnZSBzdHJlYW1pbmcgdmFyaWF0aW9uIG9mIGFzc2VydGlvbnMuCi0K
LVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBFWFBFQ1QpIHsKLSAgRVhQRUNUX0VRKDEs
IDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9ORSgxLCAxKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjMS4iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjMSIpOwotICBFWFBFQ1RfTEUoMSwgMikg
PDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX0xUKDEsIDApIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMyLiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMyLiIpOwotICBFWFBFQ1RfR0UoMSwgMCkgPDwg
IlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNU
X0dUKDEsIDIpIDw8ICJFeHBlY3RlZCBmYWlsdXJlICMzLiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZCBmYWlsdXJlICMzLiIpOwotCi0gIEVYUEVDVF9TVFJFUSgiMSIsICIx
IikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUk5FKCIxIiwgIjEiKSA8PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZSAjNC4iKTsKLSAgRVhQRUNUX1NU
UkNBU0VFUSgiYSIsICJBIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1NUUkNBU0VORSgiYSIsICJBIikgPDwgIkV4cGVjdGVkIGZh
aWx1cmUgIzUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1cmUg
IzUuIik7Ci0KLSAgRVhQRUNUX0ZMT0FUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVk
LiI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9ET1VCTEVfRVEoMSwgMS4yKSA8
PCAiRXhwZWN0ZWQgZmFpbHVyZSAjNi4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhw
ZWN0ZWQgZmFpbHVyZSAjNi4iKTsKLSAgRVhQRUNUX05FQVIoMSwgMS4xLCAwLjIpIDw8ICJUaGlz
IHNob3VsZCBzdWNjZWVkLiI7Ci19Ci0KLVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBB
U1NFUlQpIHsKLSAgQVNTRVJUX0VRKDEsIDEpIDw8ICJUaGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0g
IEFTU0VSVF9ORSgxLCAyKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBBU1NFUlRfTEUo
MSwgMikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgQVNTRVJUX0xUKDEsIDIpIDw8ICJU
aGlzIHNob3VsZCBzdWNjZWVkLiI7Ci0gIEFTU0VSVF9HRSgxLCAwKSA8PCAiVGhpcyBzaG91bGQg
c3VjY2VlZC4iOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfR1QoMSwgMikgPDwgIkV4
cGVjdGVkIGZhaWx1cmUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGZhaWx1
cmUuIik7Ci19Ci0KLVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRfU1RSKSB7
Ci0gIEFTU0VSVF9TVFJFUSgiMSIsICIxIikgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAg
QVNTRVJUX1NUUk5FKCIxIiwgIjIiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBBU1NF
UlRfU1RSQ0FTRUVRKCJhIiwgIkEiKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJhIiwgIkEiKSA8PCAiRXhwZWN0ZWQg
ZmFpbHVyZS4iLAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgZmFpbHVyZS4iKTsK
LX0KLQotVEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIEFTU0VSVF9GTE9BVElORykgewot
ICBBU1NFUlRfRkxPQVRfRVEoMSwgMSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQuIjsKLSAgQVNT
RVJUX0RPVUJMRV9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGQgc3VjY2VlZC4iOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTkVBUigxLDEuMiwgMC4xKSA8PCAiRXhwZWN0IGZhaWx1cmUu
IiwgIC8vIE5PTElOVAotICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0IGZhaWx1cmUuIik7
Ci0gIC8vIFRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIGdjYyAyLjk1LjAsIHRoZXJlIGlzIGludGVu
dGlvbmFsbHkgbm8KLSAgLy8gc3BhY2UgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBwcmV2
aW91cyBzdGF0ZW1lbnQuCi19Ci0KLS8vIFRlc3RzIHVzaW5nIEFTU0VSVF9GQUxTRSB3aXRoIGEg
c3RyZWFtZWQgbWVzc2FnZS4KLVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBBU1NFUlRf
RkFMU0UpIHsKLSAgQVNTRVJUX0ZBTFNFKGZhbHNlKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4i
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBBU1NFUlRfRkFMU0Uo
dHJ1ZSkgPDwgIkV4cGVjdGVkIGZhaWx1cmU6ICIgPDwgMiA8PCAiID4gIiA8PCAxCi0gICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgZXZhbHVhdGVzIHRvICIgPDwgdHJ1ZTsKLSAgfSwgIkV4cGVj
dGVkIGZhaWx1cmUiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgRkFJTCB3aXRoIGEgc3RyZWFtZWQg
bWVzc2FnZS4KLVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBGQUlMKSB7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEZBSUwoKSA8PCAwLAotICAgICAgICAgICAgICAgICAgICAgICAiMCIp
OwotfQotCi0vLyBUZXN0cyB1c2luZyBTVUNDRUVEIHdpdGggYSBzdHJlYW1lZCBtZXNzYWdlLgot
VEVTVChBc3NlcnRpb25XaXRoTWVzc2FnZVRlc3QsIFNVQ0NFRUQpIHsKLSAgU1VDQ0VFRCgpIDw8
ICJTdWNjZXNzID09ICIgPDwgMTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgQVNTRVJUX1RSVUUgd2l0
aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCi1URVNUKEFzc2VydGlvbldpdGhNZXNzYWdlVGVzdCwgQVNT
RVJUX1RSVUUpIHsKLSAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgIlRoaXMgc2hvdWxkIHN1Y2NlZWQu
IjsKLSAgQVNTRVJUX1RSVUUodHJ1ZSkgPDwgdHJ1ZTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgQVNTRVJUX1RSVUUoZmFsc2UpIDw8IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIgKj4oTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8Y2hh
ciAqPihOVUxMKTsKLSAgfSwgIihudWxsKShudWxsKSIpOwotfQotCi0jaWYgR1RFU1RfT1NfV0lO
RE9XUwotLy8gVGVzdHMgdXNpbmcgd2lkZSBzdHJpbmdzIGluIGFzc2VydGlvbiBtZXNzYWdlcy4K
LVRFU1QoQXNzZXJ0aW9uV2l0aE1lc3NhZ2VUZXN0LCBXaWRlU3RyaW5nTWVzc2FnZSkgewotICBF
WFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSh7ICAvLyBOT0xJTlQKLSAgICBFWFBFQ1RfVFJVRShmYWxz
ZSkgPDwgTCJUaGlzIGZhaWx1cmUgaXMgZXhwZWN0ZWQuXHg4MTE5IjsKLSAgfSwgIlRoaXMgZmFp
bHVyZSBpcyBleHBlY3RlZC4iKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5U
Ci0gICAgQVNTRVJUX0VRKDEsIDIpIDw8ICJUaGlzIGZhaWx1cmUgaXMgIgotICAgICAgICAgICAg
ICAgICAgICA8PCBMImV4cGVjdGVkIHRvby5ceDgxMjAiOwotICB9LCAiVGhpcyBmYWlsdXJlIGlz
IGV4cGVjdGVkIHRvby4iKTsKLX0KLSNlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0vLyBU
ZXN0cyBFWFBFQ1RfVFJVRS4KLVRFU1QoRXhwZWN0VGVzdCwgRVhQRUNUX1RSVUUpIHsKLSAgRVhQ
RUNUX1RSVUUodHJ1ZSkgPDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOwotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfVFJVRShmYWxzZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEu
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKGZhbHNlKSA8PCAiSW50ZW50
aW9uYWwgZmFpbHVyZSAjMi4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9u
YWwgZmFpbHVyZSAjMi4iKTsKLSAgRVhQRUNUX1RSVUUoMiA+IDEpOyAgLy8gTk9MSU5UCi0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKDIgPCAxKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlZhbHVlIG9mOiAyIDwgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICBBY3R1YWw6IGZhbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3Rl
ZDogdHJ1ZSIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfVFJVRSgyID4gMyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICIyID4gMyIpOwotfQotCi0vLyBUZXN0cyBFWFBF
Q1RfVFJVRShwcmVkaWNhdGUpIGZvciBwcmVkaWNhdGVzIHJldHVybmluZyBBc3NlcnRpb25SZXN1
bHQuCi1URVNUKEV4cGVjdFRlc3QsIEV4cGVjdFRydWVXaXRoQXNzZXJ0aW9uUmVzdWx0KSB7Ci0g
IEVYUEVDVF9UUlVFKFJlc3VsdElzRXZlbigyKSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJF
KEVYUEVDVF9UUlVFKFJlc3VsdElzRXZlbigzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuKDMpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICIgIEFjdHVhbDogZmFsc2UgKDMgaXMgb2RkKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRXhwZWN0ZWQ6IHRydWUiKTsKLSAgRVhQRUNUX1RSVUUoUmVzdWx0SXNFdmVuTm9FeHBsYW5h
dGlvbigyKSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9UUlVFKFJlc3VsdElz
RXZlbk5vRXhwbGFuYXRpb24oMykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg
b2Y6IFJlc3VsdElzRXZlbk5vRXhwbGFuYXRpb24oMylcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgQWN0dWFsOiBmYWxzZSAoMyBpcyBvZGQpXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICJFeHBlY3RlZDogdHJ1ZSIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfRkFMU0Ugd2l0
aCBhIHN0cmVhbWVkIG1lc3NhZ2UuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9GQUxTRSkgewot
ICBFWFBFQ1RfRkFMU0UoMiA8IDEpOyAgLy8gTk9MSU5UCi0gIEVYUEVDVF9GQUxTRShmYWxzZSkg
PDwgIkludGVudGlvbmFsIHN1Y2Nlc3MiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRkFMU0UodHJ1ZSkgPDwgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUgIzEuIik7Ci0gIEVYUEVDVF9OT05G
QVRBTF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZSAj
Mi4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZSAjMi4i
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0ZBTFNFKDIgPiAxKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIG9mOiAyID4gMVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICBBY3R1YWw6IHRydWVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IkV4cGVjdGVkOiBmYWxzZSIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFM
U0UoMiA8IDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiMiA8IDMiKTsKLX0KLQotLy8g
VGVzdHMgRVhQRUNUX0ZBTFNFKHByZWRpY2F0ZSkgZm9yIHByZWRpY2F0ZXMgcmV0dXJuaW5nIEFz
c2VydGlvblJlc3VsdC4KLVRFU1QoRXhwZWN0VGVzdCwgRXhwZWN0RmFsc2VXaXRoQXNzZXJ0aW9u
UmVzdWx0KSB7Ci0gIEVYUEVDVF9GQUxTRShSZXN1bHRJc0V2ZW4oMykpOwotICBFWFBFQ1RfTk9O
RkFUQUxfRkFJTFVSRShFWFBFQ1RfRkFMU0UoUmVzdWx0SXNFdmVuKDIpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlZhbHVlIG9mOiBSZXN1bHRJc0V2ZW4oMilcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgQWN0dWFsOiB0cnVlICgyIGlzIGV2ZW4pXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJFeHBlY3RlZDogZmFsc2UiKTsKLSAgRVhQRUNUX0ZBTFNFKFJlc3Vs
dElzRXZlbk5vRXhwbGFuYXRpb24oMykpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBF
Q1RfRkFMU0UoUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigyKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJWYWx1ZSBvZjogUmVzdWx0SXNFdmVuTm9FeHBsYW5hdGlvbigyKVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICBBY3R1YWw6IHRydWVcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4cGVjdGVkOiBmYWxzZSIpOwotfQotCi0jaWZkZWYgX19CT1JMQU5EQ19f
Ci0vLyBSZXN0b3JlcyB3YXJuaW5ncyBhZnRlciBwcmV2aW91cyAiI3ByYWdtYSBvcHRpb24gcHVz
aCIgc3VwcmVzc2VkIHRoZW0KLSMgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotCi0vLyBUZXN0
cyBFWFBFQ1RfRVEuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9FUSkgewotICBFWFBFQ1RfRVEo
NSwgMiArIDMpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoNSwgMiozKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIEV4cGVjdGVkOiA1XG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogMiozXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgICBXaGljaCBpczogNiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEoNSwgMiAtIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiMiAt
IDMiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgRVhQRUNUX0VRIG9uIGRvdWJsZSB2YWx1ZXMuICBU
aGUgcHVycG9zZSBpcyB0byBtYWtlCi0vLyBzdXJlIHRoYXQgdGhlIHNwZWNpYWxpemF0aW9uIHdl
IGRpZCBmb3IgaW50ZWdlciBhbmQgYW5vbnltb3VzIGVudW1zCi0vLyBpc24ndCB1c2VkIGZvciBk
b3VibGUgYXJndW1lbnRzLgotVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfRVFfRG91YmxlKSB7Ci0g
IC8vIEEgc3VjY2Vzcy4KLSAgRVhQRUNUX0VRKDUuNiwgNS42KTsKLQotICAvLyBBIGZhaWx1cmUu
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg1LjEsIDUuMiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICI1LjEiKTsKLX0KLQotI2lmIEdURVNUX0NBTl9DT01QQVJFX05V
TEwKLS8vIFRlc3RzIEVYUEVDVF9FUShOVUxMLCBwb2ludGVyKS4KLVRFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0VRX05VTEwpIHsKLSAgLy8gQSBzdWNjZXNzLgotICBjb25zdCBjaGFyKiBwID0gTlVM
TDsKLSAgLy8gU29tZSBvbGRlciBHQ0MgdmVyc2lvbnMgbWF5IGlzc3VlIGEgc3B1cmlvdXMgd2Fy
bmluZyBpbiB0aGlzIG9yIHRoZSBuZXh0Ci0gIC8vIGFzc2VydGlvbiBzdGF0ZW1lbnQuIFRoaXMg
d2FybmluZyBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgd2l0aAotICAvLyBzdGF0aWNfY2FzdCBz
aW5jZSB0aGUgdGVzdCB2ZXJpZmllcyB0aGUgYWJpbGl0eSB0byB1c2UgYmFyZSBOVUxMIGFzIHRo
ZQotICAvLyBleHBlY3RlZCBwYXJhbWV0ZXIgdG8gdGhlIG1hY3JvLgotICBFWFBFQ1RfRVEoTlVM
TCwgcCk7Ci0KLSAgLy8gQSBmYWlsdXJlLgotICBpbnQgbiA9IDA7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9FUShOVUxMLCAmbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJUbyBiZSBlcXVhbCB0bzogJm5cbiIpOwotfQotI2VuZGlmICAvLyBHVEVTVF9DQU5fQ09NUEFS
RV9OVUxMCi0KLS8vIFRlc3RzIEVYUEVDVF9FUSgwLCBub25fcG9pbnRlcikuICBTaW5jZSB0aGUg
bGl0ZXJhbCAwIGNhbiBiZQotLy8gdHJlYXRlZCBhcyBhIG51bGwgcG9pbnRlciBieSB0aGUgY29t
cGlsZXIsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCi0vLyB0aGF0IEVYUEVDVF9FUSgwLCBub25fcG9p
bnRlcikgaXNuJ3QgaW50ZXJwcmV0ZWQgYnkgR29vZ2xlIFRlc3QgYXMKLS8vIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDx2b2lkKj4oTlVMTCksIG5vbl9wb2ludGVyKS4KLVRFU1QoRXhwZWN0VGVzdCwg
RVhQRUNUX0VRXzApIHsKLSAgaW50IG4gPSAwOwotCi0gIC8vIEEgc3VjY2Vzcy4KLSAgRVhQRUNU
X0VRKDAsIG4pOwotCi0gIC8vIEEgZmFpbHVyZS4KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX0VRKDAsIDUuNiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDog
MCIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfTkUuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9O
RSkgewotICBFWFBFQ1RfTkUoNiwgNyk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQ
RUNUX05FKCdhJywgJ2EnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAo
J2EnKSAhPSAoJ2EnKSwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsOiAnYScg
KDk3LCAweDYxKSB2cyAnYScgKDk3LCAweDYxKSIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVS
RShFWFBFQ1RfTkUoMiwgMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIyIik7Ci0gIGNo
YXIqIGNvbnN0IHAwID0gTlVMTDsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05F
KHAwLCBwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJwMCIpOwotICAvLyBPbmx5IHdh
eSB0byBnZXQgdGhlIE5va2lhIGNvbXBpbGVyIHRvIGNvbXBpbGUgdGhlIGNhc3QKLSAgLy8gaXMg
dG8gaGF2ZSBhIHNlcGFyYXRlIHZvaWQqIHZhcmlhYmxlIGZpcnN0LiBQdXR0aW5nCi0gIC8vIHRo
ZSB0d28gY2FzdHMgb24gdGhlIHNhbWUgbGluZSBkb2Vzbid0IHdvcmssIG5laXRoZXIgZG9lcwot
ICAvLyBhIGRpcmVjdCBDLXN0eWxlIHRvIGNoYXIqLgotICB2b2lkKiBwdjEgPSAodm9pZCopMHgx
MjM0OyAgLy8gTk9MSU5UCi0gIGNoYXIqIGNvbnN0IHAxID0gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocHYxKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05FKHAxLCBwMSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJwMSIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfTEUu
Ci1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9MRSkgewotICBFWFBFQ1RfTEUoMiwgMyk7Ci0gIEVY
UEVDVF9MRSgyLCAyKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xFKDIsIDAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6ICgyKSA8PSAoMCksIGFjdHVh
bDogMiB2cyAwIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MRSgxLjEsIDAu
OSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoMS4xKSA8PSAoMC45KSIpOwotfQotCi0v
LyBUZXN0cyBFWFBFQ1RfTFQuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9MVCkgewotICBFWFBF
Q1RfTFQoMiwgMyk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCgyLCAyKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAoMikgPCAoMiksIGFjdHVhbDog
MiB2cyAyIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9MVCgyLCAxKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIigyKSA8ICgxKSIpOwotfQotCi0vLyBUZXN0cyBFWFBF
Q1RfR0UuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9HRSkgewotICBFWFBFQ1RfR0UoMiwgMSk7
Ci0gIEVYUEVDVF9HRSgyLCAyKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0dF
KDIsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6ICgyKSA+PSAoMyks
IGFjdHVhbDogMiB2cyAzIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HRSgw
LjksIDEuMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoMC45KSA+PSAoMS4xKSIpOwot
fQotCi0vLyBUZXN0cyBFWFBFQ1RfR1QuCi1URVNUKEV4cGVjdFRlc3QsIEVYUEVDVF9HVCkgewot
ICBFWFBFQ1RfR1QoMiwgMSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCgy
LCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiAoMikgPiAoMiksIGFj
dHVhbDogMiB2cyAyIik7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCgyLCAz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIigyKSA+ICgzKSIpOwotfQotCi0jaWYgR1RF
U1RfSEFTX0VYQ0VQVElPTlMKLQotLy8gVGVzdHMgRVhQRUNUX1RIUk9XLgotVEVTVChFeHBlY3RU
ZXN0LCBFWFBFQ1RfVEhST1cpIHsKLSAgRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGlu
dCk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9USFJPVyhUaHJvd0FuSW50ZWdl
cigpLCBib29sKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkOiBUaHJvd0Fu
SW50ZWdlcigpIHRocm93cyBhbiBleGNlcHRpb24gb2YgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAidHlwZSBib29sLlxuICBBY3R1YWw6IGl0IHRocm93cyBhIGRpZmZlcmVudCB0eXBlLiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgKLSAgICAgIEVYUEVDVF9USFJPVyhUaHJvd05v
dGhpbmcoKSwgYm9vbCksCi0gICAgICAiRXhwZWN0ZWQ6IFRocm93Tm90aGluZygpIHRocm93cyBh
biBleGNlcHRpb24gb2YgdHlwZSBib29sLlxuIgotICAgICAgIiAgQWN0dWFsOiBpdCB0aHJvd3Mg
bm90aGluZy4iKTsKLX0KLQotLy8gVGVzdHMgRVhQRUNUX05PX1RIUk9XLgotVEVTVChFeHBlY3RU
ZXN0LCBFWFBFQ1RfTk9fVEhST1cpIHsKLSAgRVhQRUNUX05PX1RIUk9XKFRocm93Tm90aGluZygp
KTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX05PX1RIUk9XKFRocm93QW5JbnRl
Z2VyKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQ6IFRocm93QW5JbnRl
Z2VyKCkgZG9lc24ndCB0aHJvdyBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJleGNl
cHRpb24uXG4gIEFjdHVhbDogaXQgdGhyb3dzLiIpOwotfQotCi0vLyBUZXN0cyBFWFBFQ1RfQU5Z
X1RIUk9XLgotVEVTVChFeHBlY3RUZXN0LCBFWFBFQ1RfQU5ZX1RIUk9XKSB7Ci0gIEVYUEVDVF9B
TllfVEhST1coVGhyb3dBbkludGVnZXIoKSk7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKAot
ICAgICAgRVhQRUNUX0FOWV9USFJPVyhUaHJvd05vdGhpbmcoKSksCi0gICAgICAiRXhwZWN0ZWQ6
IFRocm93Tm90aGluZygpIHRocm93cyBhbiBleGNlcHRpb24uXG4iCi0gICAgICAiICBBY3R1YWw6
IGl0IGRvZXNuJ3QuIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0VYQ0VQVElPTlMKLQot
Ly8gTWFrZSBzdXJlIHdlIGRlYWwgd2l0aCB0aGUgcHJlY2VkZW5jZSBvZiA8PC4KLVRFU1QoRXhw
ZWN0VGVzdCwgRXhwZWN0UHJlY2VkZW5jZSkgewotICBFWFBFQ1RfRVEoMSA8IDIsIHRydWUpOwot
ICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEodHJ1ZSwgdHJ1ZSAmJiBmYWxzZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogdHJ1ZSAmJiBmYWxz
ZSIpOwotfQotCi0KLS8vIFRlc3RzIHRoZSBTdHJlYW1hYmxlVG9TdHJpbmcoKSBmdW5jdGlvbi4K
LQotLy8gVGVzdHMgdXNpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKCkgb24gYSBzY2FsYXIuCi1URVNU
KFN0cmVhbWFibGVUb1N0cmluZ1Rlc3QsIFNjYWxhcikgewotICBFWFBFQ1RfU1RSRVEoIjUiLCBT
dHJlYW1hYmxlVG9TdHJpbmcoNSkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIFN0cmVh
bWFibGVUb1N0cmluZygpIG9uIGEgbm9uLWNoYXIgcG9pbnRlci4KLVRFU1QoU3RyZWFtYWJsZVRv
U3RyaW5nVGVzdCwgUG9pbnRlcikgewotICBpbnQgbiA9IDA7Ci0gIGludCogcCA9ICZuOwotICBF
WFBFQ1RfU1RSTkUoIihudWxsKSIsIFN0cmVhbWFibGVUb1N0cmluZyhwKS5jX3N0cigpKTsKLX0K
LQotLy8gVGVzdHMgdXNpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKCkgb24gYSBOVUxMIG5vbi1jaGFy
IHBvaW50ZXIuCi1URVNUKFN0cmVhbWFibGVUb1N0cmluZ1Rlc3QsIE51bGxQb2ludGVyKSB7Ci0g
IGludCogcCA9IE5VTEw7Ci0gIEVYUEVDVF9TVFJFUSgiKG51bGwpIiwgU3RyZWFtYWJsZVRvU3Ry
aW5nKHApLmNfc3RyKCkpOwotfQotCi0vLyBUZXN0cyB1c2luZyBTdHJlYW1hYmxlVG9TdHJpbmco
KSBvbiBhIEMgc3RyaW5nLgotVEVTVChTdHJlYW1hYmxlVG9TdHJpbmdUZXN0LCBDU3RyaW5nKSB7
Ci0gIEVYUEVDVF9TVFJFUSgiRm9vIiwgU3RyZWFtYWJsZVRvU3RyaW5nKCJGb28iKS5jX3N0cigp
KTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgU3RyZWFtYWJsZVRvU3RyaW5nKCkgb24gYSBOVUxMIEMg
c3RyaW5nLgotVEVTVChTdHJlYW1hYmxlVG9TdHJpbmdUZXN0LCBOdWxsQ1N0cmluZykgewotICBj
aGFyKiBwID0gTlVMTDsKLSAgRVhQRUNUX1NUUkVRKCIobnVsbCkiLCBTdHJlYW1hYmxlVG9TdHJp
bmcocCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIHN0cmVhbWFibGUgdmFsdWVzIGFz
IGFzc2VydGlvbiBtZXNzYWdlcy4KLQotLy8gVGVzdHMgdXNpbmcgc3RkOjpzdHJpbmcgYXMgYW4g
YXNzZXJ0aW9uIG1lc3NhZ2UuCi1URVNUKFN0cmVhbWFibGVUZXN0LCBzdHJpbmcpIHsKLSAgc3Rh
dGljIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cigKLSAgICAgICJUaGlzIGZhaWx1cmUgbWVzc2FnZSBp
cyBhIHN0ZDo6c3RyaW5nLCBhbmQgaXMgZXhwZWN0ZWQuIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlM
VVJFKEZBSUwoKSA8PCBzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ci5jX3N0cigpKTsK
LX0KLQotLy8gVGVzdHMgdGhhdCB3ZSBjYW4gb3V0cHV0IHN0cmluZ3MgY29udGFpbmluZyBlbWJl
ZGRlZCBOVUxzLgotLy8gTGltaXRlZCB0byBMaW51eCBiZWNhdXNlIHdlIGNhbiBvbmx5IGRvIHRo
aXMgd2l0aCBzdGQ6OnN0cmluZydzLgotVEVTVChTdHJlYW1hYmxlVGVzdCwgc3RyaW5nV2l0aEVt
YmVkZGVkTlVMKSB7Ci0gIHN0YXRpYyBjb25zdCBjaGFyIGNoYXJfYXJyYXlfd2l0aF9udWxbXSA9
Ci0gICAgICAiSGVyZSdzIGEgTlVMXDAgYW5kIHNvbWUgbW9yZSBzdHJpbmciOwotICBzdGF0aWMg
Y29uc3Qgc3RkOjpzdHJpbmcgc3RyaW5nX3dpdGhfbnVsKGNoYXJfYXJyYXlfd2l0aF9udWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXJfYXJy
YXlfd2l0aF9udWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LSAxKTsgIC8vIGRyb3BzIHRoZSB0cmFpbGluZyBOVUwKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
RkFJTCgpIDw8IHN0cmluZ193aXRoX251bCwKLSAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUn
cyBhIE5VTFxcMCBhbmQgc29tZSBtb3JlIHN0cmluZyIpOwotfQotCi0vLyBUZXN0cyB0aGF0IHdl
IGNhbiBvdXRwdXQgYSBOVUwgY2hhci4KLVRFU1QoU3RyZWFtYWJsZVRlc3QsIE5VTENoYXIpIHsK
LSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoeyAgLy8gTk9MSU5UCi0gICAgRkFJTCgpIDw8ICJBIE5V
TCIgPDwgJ1wwJyA8PCAiIGFuZCBzb21lIG1vcmUgc3RyaW5nIjsKLSAgfSwgIkEgTlVMXFwwIGFu
ZCBzb21lIG1vcmUgc3RyaW5nIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIGludCBhcyBhbiBhc3Nl
cnRpb24gbWVzc2FnZS4KLVRFU1QoU3RyZWFtYWJsZVRlc3QsIGludCkgewotICBFWFBFQ1RfRkFU
QUxfRkFJTFVSRShGQUlMKCkgPDwgOTAwOTEzLAotICAgICAgICAgICAgICAgICAgICAgICAiOTAw
OTEzIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIE5VTEwgY2hhciBwb2ludGVyIGFzIGFuIGFzc2Vy
dGlvbiBtZXNzYWdlLgotLy8KLS8vIEluIE1TVkMsIHN0cmVhbWluZyBhIE5VTEwgY2hhciAqIGNh
dXNlcyBhY2Nlc3MgdmlvbGF0aW9uLiAgR29vZ2xlIFRlc3QKLS8vIGltcGxlbWVudGVkIGEgd29y
a2Fyb3VuZCAoc3Vic3RpdHV0aW5nICIobnVsbCkiIGZvciBOVUxMKS4gIFRoaXMKLS8vIHRlc3Rz
IHdoZXRoZXIgdGhlIHdvcmthcm91bmQgd29ya3MuCi1URVNUKFN0cmVhbWFibGVUZXN0LCBOdWxs
Q2hhclB0cikgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShGQUlMKCkgPDwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KE5VTEwpLAotICAgICAgICAgICAgICAgICAgICAgICAiKG51bGwpIik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgYmFzaWMgSU8gbWFuaXB1bGF0b3JzIChlbmRsLCBlbmRzLCBhbmQg
Zmx1c2gpIGNhbiBiZQotLy8gc3RyZWFtZWQgdG8gdGVzdGluZzo6TWVzc2FnZS4KLVRFU1QoU3Ry
ZWFtYWJsZVRlc3QsIEJhc2ljSW9NYW5pcCkgewotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRSh7ICAv
LyBOT0xJTlQKLSAgICBGQUlMKCkgPDwgIkxpbmUgMS4iIDw8IHN0ZDo6ZW5kbAotICAgICAgICAg
ICA8PCAiQSBOVUwgY2hhciAiIDw8IHN0ZDo6ZW5kcyA8PCBzdGQ6OmZsdXNoIDw8ICIgaW4gbGlu
ZSAyLiI7Ci0gIH0sICJMaW5lIDEuXG5BIE5VTCBjaGFyIFxcMCBpbiBsaW5lIDIuIik7Ci19Ci0K
LS8vIFRlc3RzIHRoZSBtYWNyb3MgdGhhdCBoYXZlbid0IGJlZW4gY292ZXJlZCBzbyBmYXIuCi0K
LXZvaWQgQWRkRmFpbHVyZUhlbHBlcihib29sKiBhYm9ydGVkKSB7Ci0gICphYm9ydGVkID0gdHJ1
ZTsKLSAgQUREX0ZBSUxVUkUoKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4iOwotICAqYWJvcnRl
ZCA9IGZhbHNlOwotfQotCi0vLyBUZXN0cyBBRERfRkFJTFVSRS4KLVRFU1QoTWFjcm9UZXN0LCBB
RERfRkFJTFVSRSkgewotICBib29sIGFib3J0ZWQgPSB0cnVlOwotICBFWFBFQ1RfTk9ORkFUQUxf
RkFJTFVSRShBZGRGYWlsdXJlSGVscGVyKCZhYm9ydGVkKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkludGVudGlvbmFsIGZhaWx1cmUuIik7Ci0gIEVYUEVDVF9GQUxTRShhYm9ydGVkKTsK
LX0KLQotLy8gVGVzdHMgQUREX0ZBSUxVUkVfQVQuCi1URVNUKE1hY3JvVGVzdCwgQUREX0ZBSUxV
UkVfQVQpIHsKLSAgLy8gVmVyaWZpZXMgdGhhdCBBRERfRkFJTFVSRV9BVCBkb2VzIGdlbmVyYXRl
IGEgbm9uZmF0YWwgZmFpbHVyZSBhbmQKLSAgLy8gdGhlIGZhaWx1cmUgbWVzc2FnZSBjb250YWlu
cyB0aGUgdXNlci1zdHJlYW1lZCBwYXJ0LgotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShBRERf
RkFJTFVSRV9BVCgiZm9vLmNjIiwgNDIpIDw8ICJXcm9uZyEiLCAiV3JvbmchIik7Ci0KLSAgLy8g
VmVyaWZpZXMgdGhhdCB0aGUgdXNlci1zdHJlYW1lZCBwYXJ0IGlzIG9wdGlvbmFsLgotICBFWFBF
Q1RfTk9ORkFUQUxfRkFJTFVSRShBRERfRkFJTFVSRV9BVCgiZm9vLmNjIiwgNDIpLCAiRmFpbGVk
Iik7Ci0KLSAgLy8gVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IHZlcmlmeSB0aGF0IHRoZSBmYWls
dXJlIG1lc3NhZ2UgY29udGFpbnMKLSAgLy8gdGhlIHJpZ2h0IGZpbGUgcGF0aCBhbmQgbGluZSBu
dW1iZXIgdGhlIHNhbWUgd2F5LCBhcwotICAvLyBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRSgpIGRv
ZXNuJ3QgZ2V0IHRvIHNlZSB0aGUgZmlsZSBwYXRoIGFuZAotICAvLyBsaW5lIG51bWJlci4gIElu
c3RlYWQsIHdlIGRvIHRoYXQgaW4gZ3Rlc3Rfb3V0cHV0X3Rlc3RfLmNjLgotfQotCi0vLyBUZXN0
cyBGQUlMLgotVEVTVChNYWNyb1Rlc3QsIEZBSUwpIHsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
RkFJTCgpLAotICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIik7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEZBSUwoKSA8PCAiSW50ZW50aW9uYWwgZmFpbHVyZS4iLAotICAgICAgICAgICAg
ICAgICAgICAgICAiSW50ZW50aW9uYWwgZmFpbHVyZS4iKTsKLX0KLQotLy8gVGVzdHMgU1VDQ0VF
RAotVEVTVChNYWNyb1Rlc3QsIFNVQ0NFRUQpIHsKLSAgU1VDQ0VFRCgpOwotICBTVUNDRUVEKCkg
PDwgIkV4cGxpY2l0IHN1Y2Nlc3MuIjsKLX0KLQotLy8gVGVzdHMgZm9yIEVYUEVDVF9FUSgpIGFu
ZCBBU1NFUlRfRVEoKS4KLS8vCi0vLyBUaGVzZSB0ZXN0cyBmYWlsICppbnRlbnRpb25hbGx5Kiwg
cy50LiB0aGUgZmFpbHVyZSBtZXNzYWdlcyBjYW4gYmUKLS8vIGdlbmVyYXRlZCBhbmQgdGVzdGVk
LgotLy8KLS8vIFdlIGhhdmUgZGlmZmVyZW50IHRlc3RzIGZvciBkaWZmZXJlbnQgYXJndW1lbnQg
dHlwZXMuCi0KLS8vIFRlc3RzIHVzaW5nIGJvb2wgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9F
US4KLVRFU1QoRXFBc3NlcnRpb25UZXN0LCBCb29sKSB7Ci0gIEVYUEVDVF9FUSh0cnVlLCAgdHJ1
ZSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKHsKLSAgICAgIGJvb2wgZmFsc2VfdmFsdWUgPSBm
YWxzZTsKLSAgICAgIEFTU0VSVF9FUShmYWxzZV92YWx1ZSwgdHJ1ZSk7Ci0gICAgfSwgIlRvIGJl
IGVxdWFsIHRvOiB0cnVlIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIGludCB2YWx1ZXMgaW4ge0VY
UEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIEludCkgewotICBBU1NFUlRf
RVEoMzIsIDMyKTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKDMyLCAzMyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICIzMyIpOwotfQotCi0vLyBUZXN0cyB1c2luZyB0
aW1lX3QgdmFsdWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KLVRFU1QoRXFBc3NlcnRpb25UZXN0
LCBUaW1lX1QpIHsKLSAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHRpbWVfdD4oMCksCi0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDx0aW1lX3Q+KDApKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNT
RVJUX0VRKHN0YXRpY19jYXN0PHRpbWVfdD4oMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx0aW1lX3Q+KDEyMzQpKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIjEyMzQiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgY2hhciB2YWx1ZXMgaW4ge0VYUEVDVHxB
U1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIENoYXIpIHsKLSAgQVNTRVJUX0VRKCd6
JywgJ3onKTsKLSAgY29uc3QgY2hhciBjaCA9ICdiJzsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKCdcMCcsIGNoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoIik7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSgnYScsIGNoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNoIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIHdjaGFyX3QgdmFs
dWVzIGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KLVRFU1QoRXFBc3NlcnRpb25UZXN0LCBXaWRlQ2hh
cikgewotICBFWFBFQ1RfRVEoTCdiJywgTCdiJyk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxV
UkUoRVhQRUNUX0VRKEwnXDAnLCBMJ3gnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICAgIEV4cGVjdGVkOiBMJ1wwJ1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAg
V2hpY2ggaXM6IEwnXDAnICgwLCAweDApXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJU
byBiZSBlcXVhbCB0bzogTCd4J1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAg
V2hpY2ggaXM6IEwneCcgKDEyMCwgMHg3OCkiKTsKLQotICBzdGF0aWMgd2NoYXJfdCB3Y2hhcjsK
LSAgd2NoYXIgPSBMJ2InOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEoTCdh
Jywgd2NoYXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAid2NoYXIiKTsKLSAgd2NoYXIg
PSAweDgxMTk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShzdGF0aWNfY2FzdDx3
Y2hhcl90PigweDgxMjApLCB3Y2hhciksCi0gICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBl
cXVhbCB0bzogd2NoYXIiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OnN0cmluZyB2YWx1
ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIFN0ZFN0cmlu
ZykgewotICAvLyBDb21wYXJlcyBhIGNvbnN0IGNoYXIqIHRvIGFuIHN0ZDo6c3RyaW5nIHRoYXQg
aGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBBU1NFUlRfRVEoIlRlc3QiLCA6OnN0ZDo6
c3RyaW5nKCJUZXN0IikpOwotCi0gIC8vIENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjpzdHJp
bmdzLgotICBzdGF0aWMgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIxKCJBICogaW4gdGhlIG1pZGRs
ZSIpOwotICBzdGF0aWMgY29uc3QgOjpzdGQ6OnN0cmluZyBzdHIyKHN0cjEpOwotICBFWFBFQ1Rf
RVEoc3RyMSwgc3RyMik7Ci0KLSAgLy8gQ29tcGFyZXMgYSBjb25zdCBjaGFyKiB0byBhbiBzdGQ6
OnN0cmluZyB0aGF0IGhhcyBkaWZmZXJlbnQKLSAgLy8gY29udGVudAotICBFWFBFQ1RfTk9ORkFU
QUxfRkFJTFVSRShFWFBFQ1RfRVEoIlRlc3QiLCA6OnN0ZDo6c3RyaW5nKCJ0ZXN0IikpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXCJ0ZXN0XCIiKTsKLQotICAvLyBDb21wYXJlcyBhbiBz
dGQ6OnN0cmluZyB0byBhIGNoYXIqIHRoYXQgaGFzIGRpZmZlcmVudCBjb250ZW50LgotICBjaGFy
KiBjb25zdCBwMSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCJmb28iKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKDo6c3RkOjpzdHJpbmcoImJhciIpLCBwMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJwMSIpOwotCi0gIC8vIENvbXBhcmVzIHR3byBzdGQ6OnN0cmluZ3Mg
dGhhdCBoYXZlIGRpZmZlcmVudCBjb250ZW50cywgb25lIG9mCi0gIC8vIHdoaWNoIGhhdmluZyBh
IE5VTCBjaGFyYWN0ZXIgaW4gdGhlIG1pZGRsZS4gIFRoaXMgc2hvdWxkIGZhaWwuCi0gIHN0YXRp
YyA6OnN0ZDo6c3RyaW5nIHN0cjMoc3RyMSk7Ci0gIHN0cjMuYXQoMikgPSAnXDAnOwotICBFWFBF
Q1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRVEoc3RyMSwgc3RyMyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICJUbyBiZSBlcXVhbCB0bzogc3RyM1xuIgotICAgICAgICAgICAgICAgICAgICAgICAi
ICAgICAgV2hpY2ggaXM6IFwiQSBcXDAgaW4gdGhlIG1pZGRsZVwiIik7Ci19Ci0KLSNpZiBHVEVT
VF9IQVNfU1REX1dTVFJJTkcKLQotLy8gVGVzdHMgdXNpbmcgOjpzdGQ6OndzdHJpbmcgdmFsdWVz
IGluIHtFWFBFQ1R8QVNTRVJUfV9FUS4KLVRFU1QoRXFBc3NlcnRpb25UZXN0LCBTdGRXaWRlU3Ry
aW5nKSB7Ci0gIC8vIENvbXBhcmVzIHR3byBpZGVudGljYWwgc3RkOjp3c3RyaW5ncy4KLSAgY29u
c3QgOjpzdGQ6OndzdHJpbmcgd3N0cjEoTCJBICogaW4gdGhlIG1pZGRsZSIpOwotICBjb25zdCA6
OnN0ZDo6d3N0cmluZyB3c3RyMih3c3RyMSk7Ci0gIEFTU0VSVF9FUSh3c3RyMSwgd3N0cjIpOwot
Ci0gIC8vIENvbXBhcmVzIGFuIHN0ZDo6d3N0cmluZyB0byBhIGNvbnN0IHdjaGFyX3QqIHRoYXQg
aGFzIGlkZW50aWNhbAotICAvLyBjb250ZW50LgotICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMTlb
XSA9IHsgJ1QnLCAnZScsICdzJywgJ3QnLCAweDgxMTksICdcMCcgfTsKLSAgRVhQRUNUX0VRKDo6
c3RkOjp3c3RyaW5nKGtUZXN0WDgxMTkpLCBrVGVzdFg4MTE5KTsKLQotICAvLyBDb21wYXJlcyBh
biBzdGQ6OndzdHJpbmcgdG8gYSBjb25zdCB3Y2hhcl90KiB0aGF0IGhhcyBkaWZmZXJlbnQKLSAg
Ly8gY29udGVudC4KLSAgY29uc3Qgd2NoYXJfdCBrVGVzdFg4MTIwW10gPSB7ICdUJywgJ2UnLCAn
cycsICd0JywgMHg4MTIwLCAnXDAnIH07Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKHsgIC8v
IE5PTElOVAotICAgIEVYUEVDVF9FUSg6OnN0ZDo6d3N0cmluZyhrVGVzdFg4MTE5KSwga1Rlc3RY
ODEyMCk7Ci0gIH0sICJrVGVzdFg4MTIwIik7Ci0KLSAgLy8gQ29tcGFyZXMgdHdvIHN0ZDo6d3N0
cmluZ3MgdGhhdCBoYXZlIGRpZmZlcmVudCBjb250ZW50cywgb25lIG9mCi0gIC8vIHdoaWNoIGhh
dmluZyBhIE5VTCBjaGFyYWN0ZXIgaW4gdGhlIG1pZGRsZS4KLSAgOjpzdGQ6OndzdHJpbmcgd3N0
cjMod3N0cjEpOwotICB3c3RyMy5hdCgyKSA9IEwnXDAnOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEod3N0cjEsIHdzdHIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IndzdHIzIik7Ci0KLSAgLy8gQ29tcGFyZXMgYSB3Y2hhcl90KiB0byBhbiBzdGQ6OndzdHJpbmcg
dGhhdCBoYXMgZGlmZmVyZW50Ci0gIC8vIGNvbnRlbnQuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9FUShjb25zdF9jYXN0PHdjaGFyX3QqPihMImZvbyIp
LCA6OnN0ZDo6d3N0cmluZyhMImJhciIpKTsKLSAgfSwgIiIpOwotfQotCi0jZW5kaWYgIC8vIEdU
RVNUX0hBU19TVERfV1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9TVFJJTkcKLS8vIFRl
c3RzIHVzaW5nIDo6c3RyaW5nIHZhbHVlcyBpbiB7RVhQRUNUfEFTU0VSVH1fRVEuCi1URVNUKEVx
QXNzZXJ0aW9uVGVzdCwgR2xvYmFsU3RyaW5nKSB7Ci0gIC8vIENvbXBhcmVzIGEgY29uc3QgY2hh
ciogdG8gYSA6OnN0cmluZyB0aGF0IGhhcyBpZGVudGljYWwgY29udGVudC4KLSAgRVhQRUNUX0VR
KCJUZXN0IiwgOjpzdHJpbmcoIlRlc3QiKSk7Ci0KLSAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNh
bCA6OnN0cmluZ3MuCi0gIGNvbnN0IDo6c3RyaW5nIHN0cjEoIkEgKiBpbiB0aGUgbWlkZGxlIik7
Ci0gIGNvbnN0IDo6c3RyaW5nIHN0cjIoc3RyMSk7Ci0gIEFTU0VSVF9FUShzdHIxLCBzdHIyKTsK
LQotICAvLyBDb21wYXJlcyBhIDo6c3RyaW5nIHRvIGEgY29uc3QgY2hhciogdGhhdCBoYXMgZGlm
ZmVyZW50IGNvbnRlbnQuCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUSg6OnN0
cmluZygiVGVzdCIpLCAidGVzdCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCIp
OwotCi0gIC8vIENvbXBhcmVzIHR3byA6OnN0cmluZ3MgdGhhdCBoYXZlIGRpZmZlcmVudCBjb250
ZW50cywgb25lIG9mIHdoaWNoCi0gIC8vIGhhdmluZyBhIE5VTCBjaGFyYWN0ZXIgaW4gdGhlIG1p
ZGRsZS4KLSAgOjpzdHJpbmcgc3RyMyhzdHIxKTsKLSAgc3RyMy5hdCgyKSA9ICdcMCc7Ci0gIEVY
UEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShzdHIxLCBzdHIzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN0cjMiKTsKLQotICAvLyBDb21wYXJlcyBhIDo6c3RyaW5nIHRvIGEg
Y2hhciogdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KHsgIC8vIE5PTElOVAotICAgIEFTU0VSVF9FUSg6OnN0cmluZygiYmFyIiksIGNvbnN0X2Nhc3Q8
Y2hhcio+KCJmb28iKSk7Ci0gIH0sICIiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9IQVNfR0xP
QkFMX1NUUklORwotCi0jaWYgR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0KLS8vIFRlc3RzIHVz
aW5nIDo6d3N0cmluZyB2YWx1ZXMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2Vy
dGlvblRlc3QsIEdsb2JhbFdpZGVTdHJpbmcpIHsKLSAgLy8gQ29tcGFyZXMgdHdvIGlkZW50aWNh
bCA6OndzdHJpbmdzLgotICBzdGF0aWMgY29uc3QgOjp3c3RyaW5nIHdzdHIxKEwiQSAqIGluIHRo
ZSBtaWRkbGUiKTsKLSAgc3RhdGljIGNvbnN0IDo6d3N0cmluZyB3c3RyMih3c3RyMSk7Ci0gIEVY
UEVDVF9FUSh3c3RyMSwgd3N0cjIpOwotCi0gIC8vIENvbXBhcmVzIGEgY29uc3Qgd2NoYXJfdCog
dG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgaWRlbnRpY2FsIGNvbnRlbnQuCi0gIGNvbnN0IHdjaGFy
X3Qga1Rlc3RYODExOVtdID0geyAnVCcsICdlJywgJ3MnLCAndCcsIDB4ODExOSwgJ1wwJyB9Owot
ICBBU1NFUlRfRVEoa1Rlc3RYODExOSwgOjp3c3RyaW5nKGtUZXN0WDgxMTkpKTsKLQotICAvLyBD
b21wYXJlcyBhIGNvbnN0IHdjaGFyX3QqIHRvIGEgOjp3c3RyaW5nIHRoYXQgaGFzIGRpZmZlcmVu
dAotICAvLyBjb250ZW50LgotICBjb25zdCB3Y2hhcl90IGtUZXN0WDgxMjBbXSA9IHsgJ1QnLCAn
ZScsICdzJywgJ3QnLCAweDgxMjAsICdcMCcgfTsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
eyAgLy8gTk9MSU5UCi0gICAgRVhQRUNUX0VRKGtUZXN0WDgxMjAsIDo6d3N0cmluZyhrVGVzdFg4
MTE5KSk7Ci0gIH0sICJUZXN0XFx4ODExOSIpOwotCi0gIC8vIENvbXBhcmVzIGEgd2NoYXJfdCog
dG8gYSA6OndzdHJpbmcgdGhhdCBoYXMgZGlmZmVyZW50IGNvbnRlbnQuCi0gIHdjaGFyX3QqIGNv
bnN0IHAxID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4oTCJmb28iKTsKLSAgRVhQRUNUX05PTkZBVEFM
X0ZBSUxVUkUoRVhQRUNUX0VRKHAxLCA6OndzdHJpbmcoTCJiYXIiKSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICJiYXIiKTsKLQotICAvLyBDb21wYXJlcyB0d28gOjp3c3RyaW5ncyB0aGF0
IGhhdmUgZGlmZmVyZW50IGNvbnRlbnRzLCBvbmUgb2Ygd2hpY2gKLSAgLy8gaGF2aW5nIGEgTlVM
IGNoYXJhY3RlciBpbiB0aGUgbWlkZGxlLgotICBzdGF0aWMgOjp3c3RyaW5nIHdzdHIzOwotICB3
c3RyMyA9IHdzdHIxOwotICB3c3RyMy5hdCgyKSA9IEwnXDAnOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShBU1NFUlRfRVEod3N0cjEsIHdzdHIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIndz
dHIzIik7Ci19Ci0KLSNlbmRpZiAgLy8gR1RFU1RfSEFTX0dMT0JBTF9XU1RSSU5HCi0KLS8vIFRl
c3RzIHVzaW5nIGNoYXIgcG9pbnRlcnMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFz
c2VydGlvblRlc3QsIENoYXJQb2ludGVyKSB7Ci0gIGNoYXIqIGNvbnN0IHAwID0gTlVMTDsKLSAg
Ly8gT25seSB3YXkgdG8gZ2V0IHRoZSBOb2tpYSBjb21waWxlciB0byBjb21waWxlIHRoZSBjYXN0
Ci0gIC8vIGlzIHRvIGhhdmUgYSBzZXBhcmF0ZSB2b2lkKiB2YXJpYWJsZSBmaXJzdC4gUHV0dGlu
ZwotICAvLyB0aGUgdHdvIGNhc3RzIG9uIHRoZSBzYW1lIGxpbmUgZG9lc24ndCB3b3JrLCBuZWl0
aGVyIGRvZXMKLSAgLy8gYSBkaXJlY3QgQy1zdHlsZSB0byBjaGFyKi4KLSAgdm9pZCogcHYxID0g
KHZvaWQqKTB4MTIzNDsgIC8vIE5PTElOVAotICB2b2lkKiBwdjIgPSAodm9pZCopMHhBQkMwOyAg
Ly8gTk9MSU5UCi0gIGNoYXIqIGNvbnN0IHAxID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocHYx
KTsKLSAgY2hhciogY29uc3QgcDIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihwdjIpOwotICBB
U1NFUlRfRVEocDEsIHAxKTsKLQotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEo
cDAsIHAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGJlIGVxdWFsIHRvOiBwMiIp
OwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfRVEocDEsIHAyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgInAyIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9F
UShyZWludGVycHJldF9jYXN0PGNoYXIqPigweDEyMzQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oMHhBQkMwKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICJBQkMwIik7Ci19Ci0KLS8vIFRlc3RzIHVzaW5nIHdjaGFyX3QgcG9pbnRl
cnMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3QsIFdpZGVDaGFy
UG9pbnRlcikgewotICB3Y2hhcl90KiBjb25zdCBwMCA9IE5VTEw7Ci0gIC8vIE9ubHkgd2F5IHRv
IGdldCB0aGUgTm9raWEgY29tcGlsZXIgdG8gY29tcGlsZSB0aGUgY2FzdAotICAvLyBpcyB0byBo
YXZlIGEgc2VwYXJhdGUgdm9pZCogdmFyaWFibGUgZmlyc3QuIFB1dHRpbmcKLSAgLy8gdGhlIHR3
byBjYXN0cyBvbiB0aGUgc2FtZSBsaW5lIGRvZXNuJ3Qgd29yaywgbmVpdGhlciBkb2VzCi0gIC8v
IGEgZGlyZWN0IEMtc3R5bGUgdG8gY2hhciouCi0gIHZvaWQqIHB2MSA9ICh2b2lkKikweDEyMzQ7
ICAvLyBOT0xJTlQKLSAgdm9pZCogcHYyID0gKHZvaWQqKTB4QUJDMDsgIC8vIE5PTElOVAotICB3
Y2hhcl90KiBjb25zdCBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8d2NoYXJfdCo+KHB2MSk7Ci0gIHdj
aGFyX3QqIGNvbnN0IHAyID0gcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4ocHYyKTsKLSAgRVhQ
RUNUX0VRKHAwLCBwMCk7Ci0KLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAw
LCBwMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBiZSBlcXVhbCB0bzogcDIiKTsK
LSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0VRKHAxLCBwMiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJwMiIpOwotICB2b2lkKiBwdjMgPSAodm9pZCopMHgxMjM0OyAgLy8g
Tk9MSU5UCi0gIHZvaWQqIHB2NCA9ICh2b2lkKikweEFCQzA7ICAvLyBOT0xJTlQKLSAgY29uc3Qg
d2NoYXJfdCogcDMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPihwdjMpOwotICBj
b25zdCB3Y2hhcl90KiBwNCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KHB2NCk7
Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9FUShwMywgcDQpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAicDQiKTsKLX0KLQotLy8gVGVzdHMgdXNpbmcgb3RoZXIgdHlwZXMg
b2YgcG9pbnRlcnMgaW4ge0VYUEVDVHxBU1NFUlR9X0VRLgotVEVTVChFcUFzc2VydGlvblRlc3Qs
IE90aGVyUG9pbnRlcikgewotICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgaW50Kj4oTlVM
TCksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBpbnQqPihOVUxMKSk7Ci0gIEVYUEVD
VF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUShzdGF0aWNfY2FzdDxjb25zdCBpbnQqPihOVUxMKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50Kj4oMHgxMjM0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICIweDEyMzQiKTsKLX0KLQot
Ly8gQSBjbGFzcyB0aGF0IHN1cHBvcnRzIGJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9ycyBidXQg
bm90IHN0cmVhbWluZy4KLWNsYXNzIFVucHJpbnRhYmxlQ2hhciB7Ci0gcHVibGljOgotICBleHBs
aWNpdCBVbnByaW50YWJsZUNoYXIoY2hhciBjaCkgOiBjaGFyXyhjaCkge30KLQotICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4g
Y2hhcl8gPT0gcmhzLmNoYXJfOwotICB9Ci0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVbnByaW50
YWJsZUNoYXImIHJocykgY29uc3QgewotICAgIHJldHVybiBjaGFyXyAhPSByaHMuY2hhcl87Ci0g
IH0KLSAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsK
LSAgICByZXR1cm4gY2hhcl8gPCByaHMuY2hhcl87Ci0gIH0KLSAgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IFVucHJpbnRhYmxlQ2hhciYgcmhzKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNoYXJfIDw9IHJo
cy5jaGFyXzsKLSAgfQotICBib29sIG9wZXJhdG9yPihjb25zdCBVbnByaW50YWJsZUNoYXImIHJo
cykgY29uc3QgewotICAgIHJldHVybiBjaGFyXyA+IHJocy5jaGFyXzsKLSAgfQotICBib29sIG9w
ZXJhdG9yPj0oY29uc3QgVW5wcmludGFibGVDaGFyJiByaHMpIGNvbnN0IHsKLSAgICByZXR1cm4g
Y2hhcl8gPj0gcmhzLmNoYXJfOwotICB9Ci0KLSBwcml2YXRlOgotICBjaGFyIGNoYXJfOwotfTsK
LQotLy8gVGVzdHMgdGhhdCBBU1NFUlRfRVEoKSBhbmQgZnJpZW5kcyBkb24ndCByZXF1aXJlIHRo
ZSBhcmd1bWVudHMgdG8KLS8vIGJlIHByaW50YWJsZS4KLVRFU1QoQ29tcGFyaXNvbkFzc2VydGlv
blRlc3QsIEFjY2VwdHNVbnByaW50YWJsZUFyZ3MpIHsKLSAgY29uc3QgVW5wcmludGFibGVDaGFy
IHgoJ3gnKSwgeSgneScpOwotICBBU1NFUlRfRVEoeCwgeCk7Ci0gIEVYUEVDVF9ORSh4LCB5KTsK
LSAgQVNTRVJUX0xUKHgsIHkpOwotICBFWFBFQ1RfTEUoeCwgeSk7Ci0gIEFTU0VSVF9HVCh5LCB4
KTsKLSAgRVhQRUNUX0dFKHgsIHgpOwotCi0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVD
VF9FUSh4LCB5KSwgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJ
TFVSRShFWFBFQ1RfRVEoeCwgeSksICIxLWJ5dGUgb2JqZWN0IDw3OT4iKTsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xUKHksIHkpLCAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7Ci0g
IEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9HVCh4LCB5KSwgIjEtYnl0ZSBvYmplY3Qg
PDc4PiIpOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfR1QoeCwgeSksICIxLWJ5
dGUgb2JqZWN0IDw3OT4iKTsKLQotICAvLyBDb2RlIHRlc3RlZCBieSBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRSBjYW5ub3QgcmVmZXJlbmNlIGxvY2FsCi0gIC8vIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0
byB3cml0ZSBVbnByaW50YWJsZUNoYXIoJ3gnKSBpbnN0ZWFkIG9mIHguCi0jaWZuZGVmIF9fQk9S
TEFORENfXwotICAvLyBJQ0UncyBpbiBDKytCdWlsZGVyLgotICBFWFBFQ1RfRkFUQUxfRkFJTFVS
RShBU1NFUlRfTkUoVW5wcmludGFibGVDaGFyKCd4JyksIFVucHJpbnRhYmxlQ2hhcigneCcpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTEUoVW5wcmludGFibGVDaGFyKCd5JyksIFVucHJpbnRhYmxl
Q2hhcigneCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIjEtYnl0ZSBvYmplY3QgPDc4PiIp
OwotI2VuZGlmCi0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9MRShVbnByaW50YWJsZUNo
YXIoJ3knKSwgVW5wcmludGFibGVDaGFyKCd4JykpLAotICAgICAgICAgICAgICAgICAgICAgICAi
MS1ieXRlIG9iamVjdCA8Nzk+Iik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9HRShV
bnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAotICAgICAgICAgICAg
ICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzg+Iik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJF
KEFTU0VSVF9HRShVbnByaW50YWJsZUNoYXIoJ3gnKSwgVW5wcmludGFibGVDaGFyKCd5JykpLAot
ICAgICAgICAgICAgICAgICAgICAgICAiMS1ieXRlIG9iamVjdCA8Nzk+Iik7Ci19Ci0KLS8vIFRl
c3RzIHRoZSBGUklFTkRfVEVTVCBtYWNyby4KLQotLy8gVGhpcyBjbGFzcyBoYXMgYSBwcml2YXRl
IG1lbWJlciB3ZSB3YW50IHRvIHRlc3QuICBXZSB3aWxsIHRlc3QgaXQKLS8vIGJvdGggaW4gYSBU
RVNUIGFuZCBpbiBhIFRFU1RfRi4KLWNsYXNzIEZvbyB7Ci0gcHVibGljOgotICBGb28oKSB7fQot
Ci0gcHJpdmF0ZToKLSAgaW50IEJhcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0KLQotICAvLyBEZWNs
YXJlcyB0aGUgZnJpZW5kIHRlc3RzIHRoYXQgY2FuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXIK
LSAgLy8gQmFyKCkuCi0gIEZSSUVORF9URVNUKEZSSUVORF9URVNUX1Rlc3QsIFRFU1QpOwotICBG
UklFTkRfVEVTVChGUklFTkRfVEVTVF9UZXN0MiwgVEVTVF9GKTsKLX07Ci0KLS8vIFRlc3RzIHRo
YXQgdGhlIEZSSUVORF9URVNUIGRlY2xhcmF0aW9uIGFsbG93cyBhIFRFU1QgdG8gYWNjZXNzIGEK
LS8vIGNsYXNzJ3MgcHJpdmF0ZSBtZW1iZXJzLiAgVGhpcyBzaG91bGQgY29tcGlsZS4KLVRFU1Qo
RlJJRU5EX1RFU1RfVGVzdCwgVEVTVCkgewotICBBU1NFUlRfRVEoMSwgRm9vKCkuQmFyKCkpOwot
fQotCi0vLyBUaGUgZml4dHVyZSBuZWVkZWQgdG8gdGVzdCB1c2luZyBGUklFTkRfVEVTVCB3aXRo
IFRFU1RfRi4KLWNsYXNzIEZSSUVORF9URVNUX1Rlc3QyIDogcHVibGljIFRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgRm9vIGZvbzsKLX07Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIEZSSUVORF9URVNUIGRl
Y2xhcmF0aW9uIGFsbG93cyBhIFRFU1RfRiB0byBhY2Nlc3MgYQotLy8gY2xhc3MncyBwcml2YXRl
IG1lbWJlcnMuICBUaGlzIHNob3VsZCBjb21waWxlLgotVEVTVF9GKEZSSUVORF9URVNUX1Rlc3Qy
LCBURVNUX0YpIHsKLSAgQVNTRVJUX0VRKDEsIGZvby5CYXIoKSk7Ci19Ci0KLS8vIFRlc3RzIHRo
ZSBsaWZlIGN5Y2xlIG9mIFRlc3Qgb2JqZWN0cy4KLQotLy8gVGhlIHRlc3QgZml4dHVyZSBmb3Ig
dGVzdGluZyB0aGUgbGlmZSBjeWNsZSBvZiBUZXN0IG9iamVjdHMuCi0vLwotLy8gVGhpcyBjbGFz
cyBjb3VudHMgdGhlIG51bWJlciBvZiBsaXZlIHRlc3Qgb2JqZWN0cyB0aGF0IHVzZXMgdGhpcwot
Ly8gZml4dHVyZS4KLWNsYXNzIFRlc3RMaWZlQ3ljbGVUZXN0IDogcHVibGljIFRlc3QgewotIHBy
b3RlY3RlZDoKLSAgLy8gQ29uc3RydWN0b3IuICBJbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgdGVz
dCBvYmplY3RzIHRoYXQgdXNlcwotICAvLyB0aGlzIGZpeHR1cmUuCi0gIFRlc3RMaWZlQ3ljbGVU
ZXN0KCkgeyBjb3VudF8rKzsgfQotCi0gIC8vIERlc3RydWN0b3IuICBEZWNyZW1lbnRzIHRoZSBu
dW1iZXIgb2YgdGVzdCBvYmplY3RzIHRoYXQgdXNlcyB0aGlzCi0gIC8vIGZpeHR1cmUuCi0gIH5U
ZXN0TGlmZUN5Y2xlVGVzdCgpIHsgY291bnRfLS07IH0KLQotICAvLyBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgbGl2ZSB0ZXN0IG9iamVjdHMgdGhhdCB1c2VzIHRoaXMgZml4dHVyZS4KLSAgaW50IGNv
dW50KCkgY29uc3QgeyByZXR1cm4gY291bnRfOyB9Ci0KLSBwcml2YXRlOgotICBzdGF0aWMgaW50
IGNvdW50XzsKLX07Ci0KLWludCBUZXN0TGlmZUN5Y2xlVGVzdDo6Y291bnRfID0gMDsKLQotLy8g
VGVzdHMgdGhlIGxpZmUgY3ljbGUgb2YgdGVzdCBvYmplY3RzLgotVEVTVF9GKFRlc3RMaWZlQ3lj
bGVUZXN0LCBUZXN0MSkgewotICAvLyBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgdGVzdCBvYmpl
Y3QgaW4gdGhpcyB0ZXN0IGNhc2UgdGhhdCdzCi0gIC8vIGN1cnJlbnRseSBhbGl2ZS4KLSAgQVNT
RVJUX0VRKDEsIGNvdW50KCkpOwotfQotCi0vLyBUZXN0cyB0aGUgbGlmZSBjeWNsZSBvZiB0ZXN0
IG9iamVjdHMuCi1URVNUX0YoVGVzdExpZmVDeWNsZVRlc3QsIFRlc3QyKSB7Ci0gIC8vIEFmdGVy
IFRlc3QxIGlzIGRvbmUgYW5kIFRlc3QyIGlzIHN0YXJ0ZWQsIHRoZXJlIHNob3VsZCBzdGlsbCBi
ZQotICAvLyBvbmx5IG9uZSBsaXZlIHRlc3Qgb2JqZWN0LCBhcyB0aGUgb2JqZWN0IGZvciBUZXN0
MSBzaG91bGQndmUgYmVlbgotICAvLyBkZWxldGVkLgotICBBU1NFUlRfRVEoMSwgY291bnQoKSk7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi0vLyBUZXN0cyB0aGF0IHRoZSBjb3B5IGNvbnN0cnVj
dG9yIHdvcmtzIHdoZW4gaXQgaXMgTk9UIG9wdGltaXplZCBhd2F5IGJ5Ci0vLyB0aGUgY29tcGls
ZXIuCi1URVNUKEFzc2VydGlvblJlc3VsdFRlc3QsIENvcHlDb25zdHJ1Y3RvcldvcmtzV2hlbk5v
dE9wdGltaWVkKSB7Ci0gIC8vIENoZWNrcyB0aGF0IHRoZSBjb3B5IGNvbnN0cnVjdG9yIGRvZXNu
J3QgdHJ5IHRvIGRlcmVmZXJlbmNlIE5VTEwgcG9pbnRlcnMKLSAgLy8gaW4gdGhlIHNvdXJjZSBv
YmplY3QuCi0gIEFzc2VydGlvblJlc3VsdCByMSA9IEFzc2VydGlvblN1Y2Nlc3MoKTsKLSAgQXNz
ZXJ0aW9uUmVzdWx0IHIyID0gcjE7Ci0gIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBhZGRlZCB0
byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIG9wdGltaXppbmcKLSAgLy8gYXdheSB0aGUgY29u
c3RydWN0b3IgY2FsbC4KLSAgcjEgPDwgImFiYyI7Ci0KLSAgQXNzZXJ0aW9uUmVzdWx0IHIzID0g
cjE7Ci0gIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxib29sPihyMyksIHN0YXRpY19jYXN0PGJvb2w+
KHIxKSk7Ci0gIEVYUEVDVF9TVFJFUSgiYWJjIiwgcjEubWVzc2FnZSgpKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCBBc3NlcnRpb25TdWNjZXNzIGFuZCBBc3NlcnRpb25GYWlsdXJlIGNvbnN0cnVjdAot
Ly8gQXNzZXJ0aW9uUmVzdWx0IG9iamVjdHMgYXMgZXhwZWN0ZWQuCi1URVNUKEFzc2VydGlvblJl
c3VsdFRlc3QsIENvbnN0cnVjdGlvbldvcmtzKSB7Ci0gIEFzc2VydGlvblJlc3VsdCByMSA9IEFz
c2VydGlvblN1Y2Nlc3MoKTsKLSAgRVhQRUNUX1RSVUUocjEpOwotICBFWFBFQ1RfU1RSRVEoIiIs
IHIxLm1lc3NhZ2UoKSk7Ci0KLSAgQXNzZXJ0aW9uUmVzdWx0IHIyID0gQXNzZXJ0aW9uU3VjY2Vz
cygpIDw8ICJhYmMiOwotICBFWFBFQ1RfVFJVRShyMik7Ci0gIEVYUEVDVF9TVFJFUSgiYWJjIiwg
cjIubWVzc2FnZSgpKTsKLQotICBBc3NlcnRpb25SZXN1bHQgcjMgPSBBc3NlcnRpb25GYWlsdXJl
KCk7Ci0gIEVYUEVDVF9GQUxTRShyMyk7Ci0gIEVYUEVDVF9TVFJFUSgiIiwgcjMubWVzc2FnZSgp
KTsKLQotICBBc3NlcnRpb25SZXN1bHQgcjQgPSBBc3NlcnRpb25GYWlsdXJlKCkgPDwgImRlZiI7
Ci0gIEVYUEVDVF9GQUxTRShyNCk7Ci0gIEVYUEVDVF9TVFJFUSgiZGVmIiwgcjQubWVzc2FnZSgp
KTsKLQotICBBc3NlcnRpb25SZXN1bHQgcjUgPSBBc3NlcnRpb25GYWlsdXJlKE1lc3NhZ2UoKSA8
PCAiZ2hpIik7Ci0gIEVYUEVDVF9GQUxTRShyNSk7Ci0gIEVYUEVDVF9TVFJFUSgiZ2hpIiwgcjUu
bWVzc2FnZSgpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgbmVnYXRpb24gZmxpcHMgdGhlIHBy
ZWRpY2F0ZSByZXN1bHQgYnV0IGtlZXBzIHRoZSBtZXNzYWdlLgotVEVTVChBc3NlcnRpb25SZXN1
bHRUZXN0LCBOZWdhdGlvbldvcmtzKSB7Ci0gIEFzc2VydGlvblJlc3VsdCByMSA9IEFzc2VydGlv
blN1Y2Nlc3MoKSA8PCAiYWJjIjsKLSAgRVhQRUNUX0ZBTFNFKCFyMSk7Ci0gIEVYUEVDVF9TVFJF
USgiYWJjIiwgKCFyMSkubWVzc2FnZSgpKTsKLQotICBBc3NlcnRpb25SZXN1bHQgcjIgPSBBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgImRlZiI7Ci0gIEVYUEVDVF9UUlVFKCFyMik7Ci0gIEVYUEVDVF9T
VFJFUSgiZGVmIiwgKCFyMikubWVzc2FnZSgpKTsKLX0KLQotVEVTVChBc3NlcnRpb25SZXN1bHRU
ZXN0LCBTdHJlYW1pbmdXb3JrcykgewotICBBc3NlcnRpb25SZXN1bHQgciA9IEFzc2VydGlvblN1
Y2Nlc3MoKTsKLSAgciA8PCAiYWJjIiA8PCAnZCcgPDwgMCA8PCB0cnVlOwotICBFWFBFQ1RfU1RS
RVEoImFiY2QwdHJ1ZSIsIHIubWVzc2FnZSgpKTsKLX0KLQotVEVTVChBc3NlcnRpb25SZXN1bHRU
ZXN0LCBDYW5TdHJlYW1Pc3RyZWFtTWFuaXB1bGF0b3JzKSB7Ci0gIEFzc2VydGlvblJlc3VsdCBy
ID0gQXNzZXJ0aW9uU3VjY2VzcygpOwotICByIDw8ICJEYXRhIiA8PCBzdGQ6OmVuZGwgPDwgc3Rk
OjpmbHVzaCA8PCBzdGQ6OmVuZHMgPDwgIldpbGwgYmUgdmlzaWJsZSI7Ci0gIEVYUEVDVF9TVFJF
USgiRGF0YVxuXFwwV2lsbCBiZSB2aXNpYmxlIiwgci5tZXNzYWdlKCkpOwotfQotCi0vLyBUaGUg
bmV4dCB0ZXN0IHVzZXMgZXhwbGljaXQgY29udmVyc2lvbiBvcGVyYXRvcnMgLS0gYSBDKysxMSBm
ZWF0dXJlLgotI2lmIEdURVNUX0xBTkdfQ1hYMTEKLQotVEVTVChBc3NlcnRpb25SZXN1bHRUZXN0
LCBDb25zdHJ1Y3RpYmxlRnJvbUNvbnRleHR1YWxseUNvbnZlcnRpYmxlVG9Cb29sKSB7Ci0gIHN0
cnVjdCBFeHBsaWNpdGx5Q29udmVydGlibGVUb0Jvb2wgewotICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZTsgfQotICAgIGJvb2wgdmFsdWU7Ci0gIH07Ci0g
IEV4cGxpY2l0bHlDb252ZXJ0aWJsZVRvQm9vbCB2MSA9IHtmYWxzZX07Ci0gIEV4cGxpY2l0bHlD
b252ZXJ0aWJsZVRvQm9vbCB2MiA9IHt0cnVlfTsKLSAgRVhQRUNUX0ZBTFNFKHYxKTsKLSAgRVhQ
RUNUX1RSVUUodjIpOwotfQotCi0jZW5kaWYgIC8vIEdURVNUX0xBTkdfQ1hYMTEKLQotc3RydWN0
IENvbnZlcnRpYmxlVG9Bc3NlcnRpb25SZXN1bHQgewotICBvcGVyYXRvciBBc3NlcnRpb25SZXN1
bHQoKSBjb25zdCB7IHJldHVybiBBc3NlcnRpb25SZXN1bHQodHJ1ZSk7IH0KLX07Ci0KLVRFU1Qo
QXNzZXJ0aW9uUmVzdWx0VGVzdCwgQ29uc3RydWN0aWJsZUZyb21JbXBsaWNpdGx5Q29udmVydGli
bGUpIHsKLSAgQ29udmVydGlibGVUb0Fzc2VydGlvblJlc3VsdCBvYmo7Ci0gIEVYUEVDVF9UUlVF
KG9iaik7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWluZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0
aW9uIGFuZCBvcGVyYXRvciA8PCBhcmUKLS8vIGJvdGggaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2Uu
Ci1jbGFzcyBCYXNlIHsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IEJhc2UoaW50IGFuX3gpIDogeF8o
YW5feCkge30KLSAgaW50IHgoKSBjb25zdCB7IHJldHVybiB4XzsgfQotIHByaXZhdGU6Ci0gIGlu
dCB4XzsKLX07Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlJiB2YWwpIHsKLSAgcmV0dXJuIG9zIDw8
IHZhbC54KCk7Ci19Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXNlKiBwb2ludGVyKSB7Ci0gIHJldHVy
biBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgpIDw8ICIpIjsKLX0KLQotVEVTVChNZXNzYWdlVGVz
dCwgQ2FuU3RyZWFtVXNlclR5cGVJbkdsb2JhbE5hbWVTcGFjZSkgewotICBNZXNzYWdlIG1zZzsK
LSAgQmFzZSBhKDEpOwotCi0gIG1zZyA8PCBhIDw8ICZhOyAgLy8gVXNlcyA6Om9wZXJhdG9yPDwu
Ci0gIEVYUEVDVF9TVFJFUSgiMSgxKSIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQot
Ly8gVGVzdHMgc3RyZWFtaW5nIGEgdXNlciB0eXBlIHdob3NlIGRlZmluaXRpb24gYW5kIG9wZXJh
dG9yPDwgYXJlCi0vLyBib3RoIGluIGFuIHVubmFtZWQgbmFtZXNwYWNlLgotbmFtZXNwYWNlIHsK
LWNsYXNzIE15VHlwZUluVW5uYW1lZE5hbWVTcGFjZSA6IHB1YmxpYyBCYXNlIHsKLSBwdWJsaWM6
Ci0gIGV4cGxpY2l0IE15VHlwZUluVW5uYW1lZE5hbWVTcGFjZShpbnQgYW5feCk6IEJhc2UoYW5f
eCkge30KLX07Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNeVR5cGVJblVubmFtZWROYW1lU3BhY2UmIHZh
bCkgewotICByZXR1cm4gb3MgPDwgdmFsLngoKTsKLX0KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE15VHlw
ZUluVW5uYW1lZE5hbWVTcGFjZSogcG9pbnRlcikgewotICByZXR1cm4gb3MgPDwgIigiIDw8IHBv
aW50ZXItPngoKSA8PCAiKSI7Ci19Ci19ICAvLyBuYW1lc3BhY2UKLQotVEVTVChNZXNzYWdlVGVz
dCwgQ2FuU3RyZWFtVXNlclR5cGVJblVubmFtZWROYW1lU3BhY2UpIHsKLSAgTWVzc2FnZSBtc2c7
Ci0gIE15VHlwZUluVW5uYW1lZE5hbWVTcGFjZSBhKDEpOwotCi0gIG1zZyA8PCBhIDw8ICZhOyAg
Ly8gVXNlcyA8dW5uYW1lZF9uYW1lc3BhY2U+OjpvcGVyYXRvcjw8LgotICBFWFBFQ1RfU1RSRVEo
IjEoMSkiLCBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRlc3RzIHN0cmVhbWlu
ZyBhIHVzZXIgdHlwZSB3aG9zZSBkZWZpbml0aW9uIGFuZCBvcGVyYXRvcjw8IGFyZQotLy8gYm90
aCBpbiBhIHVzZXIgbmFtZXNwYWNlLgotbmFtZXNwYWNlIG5hbWVzcGFjZTEgewotY2xhc3MgTXlU
eXBlSW5OYW1lU3BhY2UxIDogcHVibGljIEJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTXlU
eXBlSW5OYW1lU3BhY2UxKGludCBhbl94KTogQmFzZShhbl94KSB7fQotfTsKLXN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IE15VHlwZUluTmFtZVNwYWNlMSYgdmFsKSB7Ci0gIHJldHVybiBvcyA8PCB2YWwueCgp
OwotfQotc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTXlUeXBlSW5OYW1lU3BhY2UxKiBwb2ludGVyKSB7Ci0g
IHJldHVybiBvcyA8PCAiKCIgPDwgcG9pbnRlci0+eCgpIDw8ICIpIjsKLX0KLX0gIC8vIG5hbWVz
cGFjZSBuYW1lc3BhY2UxCi0KLVRFU1QoTWVzc2FnZVRlc3QsIENhblN0cmVhbVVzZXJUeXBlSW5V
c2VyTmFtZVNwYWNlKSB7Ci0gIE1lc3NhZ2UgbXNnOwotICBuYW1lc3BhY2UxOjpNeVR5cGVJbk5h
bWVTcGFjZTEgYSgxKTsKLQotICBtc2cgPDwgYSA8PCAmYTsgIC8vIFVzZXMgbmFtZXNwYWNlMTo6
b3BlcmF0b3I8PC4KLSAgRVhQRUNUX1NUUkVRKCIxKDEpIiwgbXNnLkdldFN0cmluZygpLmNfc3Ry
KCkpOwotfQotCi0vLyBUZXN0cyBzdHJlYW1pbmcgYSB1c2VyIHR5cGUgd2hvc2UgZGVmaW5pdGlv
biBpcyBpbiBhIHVzZXIgbmFtZXNwYWNlCi0vLyBidXQgd2hvc2Ugb3BlcmF0b3I8PCBpcyBpbiB0
aGUgZ2xvYmFsIG5hbWVzcGFjZS4KLW5hbWVzcGFjZSBuYW1lc3BhY2UyIHsKLWNsYXNzIE15VHlw
ZUluTmFtZVNwYWNlMiA6IHB1YmxpYyA6OkJhc2UgewotIHB1YmxpYzoKLSAgZXhwbGljaXQgTXlU
eXBlSW5OYW1lU3BhY2UyKGludCBhbl94KTogQmFzZShhbl94KSB7fQotfTsKLX0gIC8vIG5hbWVz
cGFjZSBuYW1lc3BhY2UyCi1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lc3BhY2UyOjpNeVR5cGVJbk5h
bWVTcGFjZTImIHZhbCkgewotICByZXR1cm4gb3MgPDwgdmFsLngoKTsKLX0KLXN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5hbWVzcGFjZTI6Ok15VHlwZUluTmFtZVNwYWNlMiogcG9pbnRlcikgewotICByZXR1
cm4gb3MgPDwgIigiIDw8IHBvaW50ZXItPngoKSA8PCAiKSI7Ci19Ci0KLVRFU1QoTWVzc2FnZVRl
c3QsIENhblN0cmVhbVVzZXJUeXBlSW5Vc2VyTmFtZVNwYWNlV2l0aFN0cmVhbU9wZXJhdG9ySW5H
bG9iYWwpIHsKLSAgTWVzc2FnZSBtc2c7Ci0gIG5hbWVzcGFjZTI6Ok15VHlwZUluTmFtZVNwYWNl
MiBhKDEpOwotCi0gIG1zZyA8PCBhIDw8ICZhOyAgLy8gVXNlcyA6Om9wZXJhdG9yPDwuCi0gIEVY
UEVDVF9TVFJFUSgiMSgxKSIsIG1zZy5HZXRTdHJpbmcoKS5jX3N0cigpKTsKLX0KLQotLy8gVGVz
dHMgc3RyZWFtaW5nIE5VTEwgcG9pbnRlcnMgdG8gdGVzdGluZzo6TWVzc2FnZS4KLVRFU1QoTWVz
c2FnZVRlc3QsIE51bGxQb2ludGVycykgewotICBNZXNzYWdlIG1zZzsKLSAgY2hhciogY29uc3Qg
cDEgPSBOVUxMOwotICB1bnNpZ25lZCBjaGFyKiBjb25zdCBwMiA9IE5VTEw7Ci0gIGludCogcDMg
PSBOVUxMOwotICBkb3VibGUqIHA0ID0gTlVMTDsKLSAgYm9vbCogcDUgPSBOVUxMOwotICBNZXNz
YWdlKiBwNiA9IE5VTEw7Ci0KLSAgbXNnIDw8IHAxIDw8IHAyIDw8IHAzIDw8IHA0IDw8IHA1IDw8
IHA2OwotICBBU1NFUlRfU1RSRVEoIihudWxsKShudWxsKShudWxsKShudWxsKShudWxsKShudWxs
KSIsCi0gICAgICAgICAgICAgICBtc2cuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0KLS8vIFRl
c3RzIHN0cmVhbWluZyB3aWRlIHN0cmluZ3MgdG8gdGVzdGluZzo6TWVzc2FnZS4KLVRFU1QoTWVz
c2FnZVRlc3QsIFdpZGVTdHJpbmdzKSB7Ci0gIC8vIFN0cmVhbXMgYSBOVUxMIG9mIHR5cGUgY29u
c3Qgd2NoYXJfdCouCi0gIGNvbnN0IHdjaGFyX3QqIGNvbnN0X3dzdHIgPSBOVUxMOwotICBFWFBF
Q1RfU1RSRVEoIihudWxsKSIsCi0gICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8IGNvbnN0X3dz
dHIpLkdldFN0cmluZygpLmNfc3RyKCkpOwotCi0gIC8vIFN0cmVhbXMgYSBOVUxMIG9mIHR5cGUg
d2NoYXJfdCouCi0gIHdjaGFyX3QqIHdzdHIgPSBOVUxMOwotICBFWFBFQ1RfU1RSRVEoIihudWxs
KSIsCi0gICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8IHdzdHIpLkdldFN0cmluZygpLmNfc3Ry
KCkpOwotCi0gIC8vIFN0cmVhbXMgYSBub24tTlVMTCBvZiB0eXBlIGNvbnN0IHdjaGFyX3QqLgot
ICBjb25zdF93c3RyID0gTCJhYmNceDgxMTkiOwotICBFWFBFQ1RfU1RSRVEoImFiY1x4ZThceDg0
XHg5OSIsCi0gICAgICAgICAgICAgICAoTWVzc2FnZSgpIDw8IGNvbnN0X3dzdHIpLkdldFN0cmlu
ZygpLmNfc3RyKCkpOwotCi0gIC8vIFN0cmVhbXMgYSBub24tTlVMTCBvZiB0eXBlIHdjaGFyX3Qq
LgotICB3c3RyID0gY29uc3RfY2FzdDx3Y2hhcl90Kj4oY29uc3Rfd3N0cik7Ci0gIEVYUEVDVF9T
VFJFUSgiYWJjXHhlOFx4ODRceDk5IiwKLSAgICAgICAgICAgICAgIChNZXNzYWdlKCkgPDwgd3N0
cikuR2V0U3RyaW5nKCkuY19zdHIoKSk7Ci19Ci0KLQotLy8gVGhpcyBsaW5lIHRlc3RzIHRoYXQg
d2UgY2FuIGRlZmluZSB0ZXN0cyBpbiB0aGUgdGVzdGluZyBuYW1lc3BhY2UuCi1uYW1lc3BhY2Ug
dGVzdGluZyB7Ci0KLS8vIFRlc3RzIHRoZSBUZXN0SW5mbyBjbGFzcy4KLQotY2xhc3MgVGVzdElu
Zm9UZXN0IDogcHVibGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgc3RhdGljIGNvbnN0IFRlc3RJ
bmZvKiBHZXRUZXN0SW5mbyhjb25zdCBjaGFyKiB0ZXN0X25hbWUpIHsKLSAgICBjb25zdCBUZXN0
Q2FzZSogY29uc3QgdGVzdF9jYXNlID0gR2V0VW5pdFRlc3RJbXBsKCktPgotICAgICAgICBHZXRU
ZXN0Q2FzZSgiVGVzdEluZm9UZXN0IiwgIiIsIE5VTEwsIE5VTEwpOwotCi0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCB0ZXN0X2Nhc2UtPnRvdGFsX3Rlc3RfY291bnQoKTsgKytpKSB7Ci0gICAgICBj
b25zdCBUZXN0SW5mbyogY29uc3QgdGVzdF9pbmZvID0gdGVzdF9jYXNlLT5HZXRUZXN0SW5mbyhp
KTsKLSAgICAgIGlmIChzdHJjbXAodGVzdF9uYW1lLCB0ZXN0X2luZm8tPm5hbWUoKSkgPT0gMCkK
LSAgICAgICAgcmV0dXJuIHRlc3RfaW5mbzsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0K
LQotICBzdGF0aWMgY29uc3QgVGVzdFJlc3VsdCogR2V0VGVzdFJlc3VsdCgKLSAgICAgIGNvbnN0
IFRlc3RJbmZvKiB0ZXN0X2luZm8pIHsKLSAgICByZXR1cm4gdGVzdF9pbmZvLT5yZXN1bHQoKTsK
LSAgfQotfTsKLQotLy8gVGVzdHMgVGVzdEluZm86OnRlc3RfY2FzZV9uYW1lKCkgYW5kIFRlc3RJ
bmZvOjpuYW1lKCkuCi1URVNUX0YoVGVzdEluZm9UZXN0LCBOYW1lcykgewotICBjb25zdCBUZXN0
SW5mbyogY29uc3QgdGVzdF9pbmZvID0gR2V0VGVzdEluZm8oIk5hbWVzIik7Ci0KLSAgQVNTRVJU
X1NUUkVRKCJUZXN0SW5mb1Rlc3QiLCB0ZXN0X2luZm8tPnRlc3RfY2FzZV9uYW1lKCkpOwotICBB
U1NFUlRfU1RSRVEoIk5hbWVzIiwgdGVzdF9pbmZvLT5uYW1lKCkpOwotfQotCi0vLyBUZXN0cyBU
ZXN0SW5mbzo6cmVzdWx0KCkuCi1URVNUX0YoVGVzdEluZm9UZXN0LCByZXN1bHQpIHsKLSAgY29u
c3QgVGVzdEluZm8qIGNvbnN0IHRlc3RfaW5mbyA9IEdldFRlc3RJbmZvKCJyZXN1bHQiKTsKLQot
ICAvLyBJbml0aWFsbHksIHRoZXJlIGlzIG5vIFRlc3RQYXJ0UmVzdWx0IGZvciB0aGlzIHRlc3Qu
Ci0gIEFTU0VSVF9FUSgwLCBHZXRUZXN0UmVzdWx0KHRlc3RfaW5mbyktPnRvdGFsX3BhcnRfY291
bnQoKSk7Ci0KLSAgLy8gQWZ0ZXIgdGhlIHByZXZpb3VzIGFzc2VydGlvbiwgdGhlcmUgaXMgc3Rp
bGwgbm9uZS4KLSAgQVNTRVJUX0VRKDAsIEdldFRlc3RSZXN1bHQodGVzdF9pbmZvKS0+dG90YWxf
cGFydF9jb3VudCgpKTsKLX0KLQotI2RlZmluZSBWRVJJRllfQ09ERV9MT0NBVElPTiBcCi0gIGNv
bnN0IGludCBleHBlY3RlZF9saW5lID0gX19MSU5FX18gLSAxOyBcCi0gIGNvbnN0IFRlc3RJbmZv
KiBjb25zdCB0ZXN0X2luZm8gPSBHZXRVbml0VGVzdEltcGwoKS0+Y3VycmVudF90ZXN0X2luZm8o
KTsgXAotICBBU1NFUlRfVFJVRSh0ZXN0X2luZm8pOyBcCi0gIEVYUEVDVF9TVFJFUShfX0ZJTEVf
XywgdGVzdF9pbmZvLT5maWxlKCkpOyBcCi0gIEVYUEVDVF9FUShleHBlY3RlZF9saW5lLCB0ZXN0
X2luZm8tPmxpbmUoKSkKLQotVEVTVChDb2RlTG9jYXRpb25Gb3JURVNULCBWZXJpZnkpIHsKLSAg
VkVSSUZZX0NPREVfTE9DQVRJT047Ci19Ci0KLWNsYXNzIENvZGVMb2NhdGlvbkZvclRFU1RGIDog
cHVibGljIFRlc3QgewotfTsKLQotVEVTVF9GKENvZGVMb2NhdGlvbkZvclRFU1RGLCBWZXJpZnkp
IHsKLSAgVkVSSUZZX0NPREVfTE9DQVRJT047Ci19Ci0KLWNsYXNzIENvZGVMb2NhdGlvbkZvclRF
U1RQIDogcHVibGljIFRlc3RXaXRoUGFyYW08aW50PiB7Ci19OwotCi1URVNUX1AoQ29kZUxvY2F0
aW9uRm9yVEVTVFAsIFZlcmlmeSkgewotICBWRVJJRllfQ09ERV9MT0NBVElPTjsKLX0KLQotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoLCBDb2RlTG9jYXRpb25Gb3JURVNUUCwgVmFsdWVzKDApKTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1Qg
OiBwdWJsaWMgVGVzdCB7Ci19OwotCi1UWVBFRF9URVNUX0NBU0UoQ29kZUxvY2F0aW9uRm9yVFlQ
RURURVNULCBpbnQpOwotCi1UWVBFRF9URVNUKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVCwgVmVy
aWZ5KSB7Ci0gIFZFUklGWV9DT0RFX0xPQ0FUSU9OOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLWNsYXNzIENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAgOiBwdWJsaWMgVGVzdCB7Ci19Owot
Ci1UWVBFRF9URVNUX0NBU0VfUChDb2RlTG9jYXRpb25Gb3JUWVBFRFRFU1RQKTsKLQotVFlQRURf
VEVTVF9QKENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAsIFZlcmlmeSkgewotICBWRVJJRllfQ09E
RV9MT0NBVElPTjsKLX0KLQotUkVHSVNURVJfVFlQRURfVEVTVF9DQVNFX1AoQ29kZUxvY2F0aW9u
Rm9yVFlQRURURVNUUCwgVmVyaWZ5KTsKLQotSU5TVEFOVElBVEVfVFlQRURfVEVTVF9DQVNFX1Ao
TXksIENvZGVMb2NhdGlvbkZvclRZUEVEVEVTVFAsIGludCk7Ci0KLSN1bmRlZiBWRVJJRllfQ09E
RV9MT0NBVElPTgotCi0vLyBUZXN0cyBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gYSB0ZXN0
IGNhc2UuCi0KLWNsYXNzIFNldFVwVGVzdENhc2VUZXN0IDogcHVibGljIFRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgLy8gVGhpcyB3aWxsIGJlIGNhbGxlZCBvbmNlIGJlZm9yZSB0aGUgZmlyc3QgdGVz
dCBpbiB0aGlzIHRlc3QgY2FzZQotICAvLyBpcyBydW4uCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVz
dENhc2UoKSB7Ci0gICAgcHJpbnRmKCJTZXR0aW5nIHVwIHRoZSB0ZXN0IGNhc2UgLiAuIC5cbiIp
OwotCi0gICAgLy8gSW5pdGlhbGl6ZXMgc29tZSBzaGFyZWQgcmVzb3VyY2UuICBJbiB0aGlzIHNp
bXBsZSBleGFtcGxlLCB3ZQotICAgIC8vIGp1c3QgY3JlYXRlIGEgQyBzdHJpbmcuICBNb3JlIGNv
bXBsZXggc3R1ZmYgY2FuIGJlIGRvbmUgaWYKLSAgICAvLyBkZXNpcmVkLgotICAgIHNoYXJlZF9y
ZXNvdXJjZV8gPSAiMTIzIjsKLQotICAgIC8vIEluY3JlbWVudHMgdGhlIG51bWJlciBvZiB0ZXN0
IGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHNldCB1cC4KLSAgICBjb3VudGVyXysrOwotCi0gICAgLy8g
U2V0VXBUZXN0Q2FzZSgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlLgotICAgIEVYUEVDVF9F
USgxLCBjb3VudGVyXyk7Ci0gIH0KLQotICAvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIG9uY2UgYWZ0
ZXIgdGhlIGxhc3QgdGVzdCBpbiB0aGlzIHRlc3QgY2FzZSBpcwotICAvLyBydW4uCi0gIHN0YXRp
YyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKSB7Ci0gICAgcHJpbnRmKCJUZWFyaW5nIGRvd24gdGhl
IHRlc3QgY2FzZSAuIC4gLlxuIik7Ci0KLSAgICAvLyBEZWNyZW1lbnRzIHRoZSBudW1iZXIgb2Yg
dGVzdCBjYXNlcyB0aGF0IGhhdmUgYmVlbiBzZXQgdXAuCi0gICAgY291bnRlcl8tLTsKLQotICAg
IC8vIFRlYXJEb3duVGVzdENhc2UoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4KLSAgICBF
WFBFQ1RfRVEoMCwgY291bnRlcl8pOwotCi0gICAgLy8gQ2xlYW5zIHVwIHRoZSBzaGFyZWQgcmVz
b3VyY2UuCi0gICAgc2hhcmVkX3Jlc291cmNlXyA9IE5VTEw7Ci0gIH0KLQotICAvLyBUaGlzIHdp
bGwgYmUgY2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QgaW4gdGhpcyB0ZXN0IGNhc2UuCi0gIHZpcnR1
YWwgdm9pZCBTZXRVcCgpIHsKLSAgICAvLyBTZXRVcFRlc3RDYXNlKCkgc2hvdWxkIGJlIGNhbGxl
ZCBvbmx5IG9uY2UsIHNvIGNvdW50ZXJfIHNob3VsZAotICAgIC8vIGFsd2F5cyBiZSAxLgotICAg
IEVYUEVDVF9FUSgxLCBjb3VudGVyXyk7Ci0gIH0KLQotICAvLyBOdW1iZXIgb2YgdGVzdCBjYXNl
cyB0aGF0IGhhdmUgYmVlbiBzZXQgdXAuCi0gIHN0YXRpYyBpbnQgY291bnRlcl87Ci0KLSAgLy8g
U29tZSByZXNvdXJjZSB0byBiZSBzaGFyZWQgYnkgYWxsIHRlc3RzIGluIHRoaXMgdGVzdCBjYXNl
LgotICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVkX3Jlc291cmNlXzsKLX07Ci0KLWludCBTZXRV
cFRlc3RDYXNlVGVzdDo6Y291bnRlcl8gPSAwOwotY29uc3QgY2hhciogU2V0VXBUZXN0Q2FzZVRl
c3Q6OnNoYXJlZF9yZXNvdXJjZV8gPSBOVUxMOwotCi0vLyBBIHRlc3QgdGhhdCB1c2VzIHRoZSBz
aGFyZWQgcmVzb3VyY2UuCi1URVNUX0YoU2V0VXBUZXN0Q2FzZVRlc3QsIFRlc3QxKSB7Ci0gIEVY
UEVDVF9TVFJORShOVUxMLCBzaGFyZWRfcmVzb3VyY2VfKTsKLX0KLQotLy8gQW5vdGhlciB0ZXN0
IHRoYXQgdXNlcyB0aGUgc2hhcmVkIHJlc291cmNlLgotVEVTVF9GKFNldFVwVGVzdENhc2VUZXN0
LCBUZXN0MikgewotICBFWFBFQ1RfU1RSRVEoIjEyMyIsIHNoYXJlZF9yZXNvdXJjZV8pOwotfQot
Ci0vLyBUaGUgSW5pdEdvb2dsZVRlc3RUZXN0IHRlc3QgY2FzZSB0ZXN0cyB0ZXN0aW5nOjpJbml0
R29vZ2xlVGVzdCgpLgotCi0vLyBUaGUgRmxhZ3Mgc3RydWN0IHN0b3JlcyBhIGNvcHkgb2YgYWxs
IEdvb2dsZSBUZXN0IGZsYWdzLgotc3RydWN0IEZsYWdzIHsKLSAgLy8gQ29uc3RydWN0cyBhIEZs
YWdzIHN0cnVjdCB3aGVyZSBlYWNoIGZsYWcgaGFzIGl0cyBkZWZhdWx0IHZhbHVlLgotICBGbGFn
cygpIDogYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMoZmFsc2UpLAotICAgICAgICAgICAgYnJlYWtf
b25fZmFpbHVyZShmYWxzZSksCi0gICAgICAgICAgICBjYXRjaF9leGNlcHRpb25zKGZhbHNlKSwK
LSAgICAgICAgICAgIGRlYXRoX3Rlc3RfdXNlX2ZvcmsoZmFsc2UpLAotICAgICAgICAgICAgZmls
dGVyKCIiKSwKLSAgICAgICAgICAgIGxpc3RfdGVzdHMoZmFsc2UpLAotICAgICAgICAgICAgb3V0
cHV0KCIiKSwKLSAgICAgICAgICAgIHByaW50X3RpbWUodHJ1ZSksCi0gICAgICAgICAgICByYW5k
b21fc2VlZCgwKSwKLSAgICAgICAgICAgIHJlcGVhdCgxKSwKLSAgICAgICAgICAgIHNodWZmbGUo
ZmFsc2UpLAotICAgICAgICAgICAgc3RhY2tfdHJhY2VfZGVwdGgoa01heFN0YWNrVHJhY2VEZXB0
aCksCi0gICAgICAgICAgICBzdHJlYW1fcmVzdWx0X3RvKCIiKSwKLSAgICAgICAgICAgIHRocm93
X29uX2ZhaWx1cmUoZmFsc2UpIHt9Ci0KLSAgLy8gRmFjdG9yeSBtZXRob2RzLgotCi0gIC8vIENy
ZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rl
c3RzIGZsYWcgaGFzCi0gIC8vIHRoZSBnaXZlbiB2YWx1ZS4KLSAgc3RhdGljIEZsYWdzIEFsc29S
dW5EaXNhYmxlZFRlc3RzKGJvb2wgYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMpIHsKLSAgICBGbGFn
cyBmbGFnczsKLSAgICBmbGFncy5hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyA9IGFsc29fcnVuX2Rp
c2FibGVkX3Rlc3RzOwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyBoYXMKLSAg
Ly8gdGhlIGdpdmVuIHZhbHVlLgotICBzdGF0aWMgRmxhZ3MgQnJlYWtPbkZhaWx1cmUoYm9vbCBi
cmVha19vbl9mYWlsdXJlKSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3MuYnJlYWtfb25f
ZmFpbHVyZSA9IGJyZWFrX29uX2ZhaWx1cmU7Ci0gICAgcmV0dXJuIGZsYWdzOwotICB9Ci0KLSAg
Ly8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3RfY2F0Y2hfZXhjZXB0aW9u
cyBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBDYXRjaEV4
Y2VwdGlvbnMoYm9vbCBjYXRjaF9leGNlcHRpb25zKSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAg
ZmxhZ3MuY2F0Y2hfZXhjZXB0aW9ucyA9IGNhdGNoX2V4Y2VwdGlvbnM7Ci0gICAgcmV0dXJuIGZs
YWdzOwotICB9Ci0KLSAgLy8gQ3JlYXRlcyBhIEZsYWdzIHN0cnVjdCB3aGVyZSB0aGUgZ3Rlc3Rf
ZGVhdGhfdGVzdF91c2VfZm9yayBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0
YXRpYyBGbGFncyBEZWF0aFRlc3RVc2VGb3JrKGJvb2wgZGVhdGhfdGVzdF91c2VfZm9yaykgewot
ICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLmRlYXRoX3Rlc3RfdXNlX2ZvcmsgPSBkZWF0aF90
ZXN0X3VzZV9mb3JrOwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBG
bGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X2ZpbHRlciBmbGFnIGhhcyB0aGUgZ2l2ZW4KLSAg
Ly8gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBGaWx0ZXIoY29uc3QgY2hhciogZmlsdGVyKSB7Ci0g
ICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3MuZmlsdGVyID0gZmlsdGVyOwotICAgIHJldHVybiBm
bGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0
X2xpc3RfdGVzdHMgZmxhZyBoYXMgdGhlCi0gIC8vIGdpdmVuIHZhbHVlLgotICBzdGF0aWMgRmxh
Z3MgTGlzdFRlc3RzKGJvb2wgbGlzdF90ZXN0cykgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZs
YWdzLmxpc3RfdGVzdHMgPSBsaXN0X3Rlc3RzOwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0g
IC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X291dHB1dCBmbGFnIGhh
cyB0aGUgZ2l2ZW4KLSAgLy8gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBPdXRwdXQoY29uc3QgY2hh
ciogb3V0cHV0KSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3Mub3V0cHV0ID0gb3V0cHV0
OwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qg
d2hlcmUgdGhlIGd0ZXN0X3ByaW50X3RpbWUgZmxhZyBoYXMgdGhlIGdpdmVuCi0gIC8vIHZhbHVl
LgotICBzdGF0aWMgRmxhZ3MgUHJpbnRUaW1lKGJvb2wgcHJpbnRfdGltZSkgewotICAgIEZsYWdz
IGZsYWdzOwotICAgIGZsYWdzLnByaW50X3RpbWUgPSBwcmludF90aW1lOwotICAgIHJldHVybiBm
bGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0
X3JhbmRvbV9zZWVkIGZsYWcgaGFzCi0gIC8vIHRoZSBnaXZlbiB2YWx1ZS4KLSAgc3RhdGljIEZs
YWdzIFJhbmRvbVNlZWQoSW50MzIgcmFuZG9tX3NlZWQpIHsKLSAgICBGbGFncyBmbGFnczsKLSAg
ICBmbGFncy5yYW5kb21fc2VlZCA9IHJhbmRvbV9zZWVkOwotICAgIHJldHVybiBmbGFnczsKLSAg
fQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3JlcGVhdCBm
bGFnIGhhcyB0aGUgZ2l2ZW4KLSAgLy8gdmFsdWUuCi0gIHN0YXRpYyBGbGFncyBSZXBlYXQoSW50
MzIgcmVwZWF0KSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxhZ3MucmVwZWF0ID0gcmVwZWF0
OwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qg
d2hlcmUgdGhlIGd0ZXN0X3NodWZmbGUgZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgot
ICBzdGF0aWMgRmxhZ3MgU2h1ZmZsZShib29sIHNodWZmbGUpIHsKLSAgICBGbGFncyBmbGFnczsK
LSAgICBmbGFncy5zaHVmZmxlID0gc2h1ZmZsZTsKLSAgICByZXR1cm4gZmxhZ3M7Ci0gIH0KLQot
ICAvLyBDcmVhdGVzIGEgRmxhZ3Mgc3RydWN0IHdoZXJlIHRoZSBHVEVTVF9GTEFHKHN0YWNrX3Ry
YWNlX2RlcHRoKSBmbGFnIGhhcwotICAvLyB0aGUgZ2l2ZW4gdmFsdWUuCi0gIHN0YXRpYyBGbGFn
cyBTdGFja1RyYWNlRGVwdGgoSW50MzIgc3RhY2tfdHJhY2VfZGVwdGgpIHsKLSAgICBGbGFncyBm
bGFnczsKLSAgICBmbGFncy5zdGFja190cmFjZV9kZXB0aCA9IHN0YWNrX3RyYWNlX2RlcHRoOwot
ICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8vIENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hl
cmUgdGhlIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgZmxhZyBoYXMKLSAgLy8gdGhlIGdp
dmVuIHZhbHVlLgotICBzdGF0aWMgRmxhZ3MgU3RyZWFtUmVzdWx0VG8oY29uc3QgY2hhciogc3Ry
ZWFtX3Jlc3VsdF90bykgewotICAgIEZsYWdzIGZsYWdzOwotICAgIGZsYWdzLnN0cmVhbV9yZXN1
bHRfdG8gPSBzdHJlYW1fcmVzdWx0X3RvOwotICAgIHJldHVybiBmbGFnczsKLSAgfQotCi0gIC8v
IENyZWF0ZXMgYSBGbGFncyBzdHJ1Y3Qgd2hlcmUgdGhlIGd0ZXN0X3Rocm93X29uX2ZhaWx1cmUg
ZmxhZyBoYXMKLSAgLy8gdGhlIGdpdmVuIHZhbHVlLgotICBzdGF0aWMgRmxhZ3MgVGhyb3dPbkZh
aWx1cmUoYm9vbCB0aHJvd19vbl9mYWlsdXJlKSB7Ci0gICAgRmxhZ3MgZmxhZ3M7Ci0gICAgZmxh
Z3MudGhyb3dfb25fZmFpbHVyZSA9IHRocm93X29uX2ZhaWx1cmU7Ci0gICAgcmV0dXJuIGZsYWdz
OwotICB9Ci0KLSAgLy8gVGhlc2UgZmllbGRzIHN0b3JlIHRoZSBmbGFnIHZhbHVlcy4KLSAgYm9v
bCBhbHNvX3J1bl9kaXNhYmxlZF90ZXN0czsKLSAgYm9vbCBicmVha19vbl9mYWlsdXJlOwotICBi
b29sIGNhdGNoX2V4Y2VwdGlvbnM7Ci0gIGJvb2wgZGVhdGhfdGVzdF91c2VfZm9yazsKLSAgY29u
c3QgY2hhciogZmlsdGVyOwotICBib29sIGxpc3RfdGVzdHM7Ci0gIGNvbnN0IGNoYXIqIG91dHB1
dDsKLSAgYm9vbCBwcmludF90aW1lOwotICBJbnQzMiByYW5kb21fc2VlZDsKLSAgSW50MzIgcmVw
ZWF0OwotICBib29sIHNodWZmbGU7Ci0gIEludDMyIHN0YWNrX3RyYWNlX2RlcHRoOwotICBjb25z
dCBjaGFyKiBzdHJlYW1fcmVzdWx0X3RvOwotICBib29sIHRocm93X29uX2ZhaWx1cmU7Ci19Owot
Ci0vLyBGaXh0dXJlIGZvciB0ZXN0aW5nIEluaXRHb29nbGVUZXN0KCkuCi1jbGFzcyBJbml0R29v
Z2xlVGVzdFRlc3QgOiBwdWJsaWMgVGVzdCB7Ci0gcHJvdGVjdGVkOgotICAvLyBDbGVhcnMgdGhl
IGZsYWdzIGJlZm9yZSBlYWNoIHRlc3QuCi0gIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKLSAgICBH
VEVTVF9GTEFHKGFsc29fcnVuX2Rpc2FibGVkX3Rlc3RzKSA9IGZhbHNlOwotICAgIEdURVNUX0ZM
QUcoYnJlYWtfb25fZmFpbHVyZSkgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKGNhdGNoX2V4Y2Vw
dGlvbnMpID0gZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhkZWF0aF90ZXN0X3VzZV9mb3JrKSA9IGZh
bHNlOwotICAgIEdURVNUX0ZMQUcoZmlsdGVyKSA9ICIiOwotICAgIEdURVNUX0ZMQUcobGlzdF90
ZXN0cykgPSBmYWxzZTsKLSAgICBHVEVTVF9GTEFHKG91dHB1dCkgPSAiIjsKLSAgICBHVEVTVF9G
TEFHKHByaW50X3RpbWUpID0gdHJ1ZTsKLSAgICBHVEVTVF9GTEFHKHJhbmRvbV9zZWVkKSA9IDA7
Ci0gICAgR1RFU1RfRkxBRyhyZXBlYXQpID0gMTsKLSAgICBHVEVTVF9GTEFHKHNodWZmbGUpID0g
ZmFsc2U7Ci0gICAgR1RFU1RfRkxBRyhzdGFja190cmFjZV9kZXB0aCkgPSBrTWF4U3RhY2tUcmFj
ZURlcHRoOwotICAgIEdURVNUX0ZMQUcoc3RyZWFtX3Jlc3VsdF90bykgPSAiIjsKLSAgICBHVEVT
VF9GTEFHKHRocm93X29uX2ZhaWx1cmUpID0gZmFsc2U7Ci0gIH0KLQotICAvLyBBc3NlcnRzIHRo
YXQgdHdvIG5hcnJvdyBvciB3aWRlIHN0cmluZyBhcnJheXMgYXJlIGVxdWFsLgotICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gIHN0YXRpYyB2b2lkIEFzc2VydFN0cmluZ0FycmF5RXEo
c2l6ZV90IHNpemUxLCBDaGFyVHlwZSoqIGFycmF5MSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZTIsIENoYXJUeXBlKiogYXJyYXkyKSB7Ci0gICAgQVNTRVJU
X0VRKHNpemUxLCBzaXplMikgPDwgIiBBcnJheSBzaXplcyBkaWZmZXJlbnQuIjsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpICE9IHNpemUxOyBpKyspIHsKLSAgICAgIEFTU0VSVF9TVFJFUShh
cnJheTFbaV0sIGFycmF5MltpXSkgPDwgIiB3aGVyZSBpID09ICIgPDwgaTsKLSAgICB9Ci0gIH0K
LQotICAvLyBWZXJpZmllcyB0aGF0IHRoZSBmbGFnIHZhbHVlcyBtYXRjaCB0aGUgZXhwZWN0ZWQg
dmFsdWVzLgotICBzdGF0aWMgdm9pZCBDaGVja0ZsYWdzKGNvbnN0IEZsYWdzJiBleHBlY3RlZCkg
ewotICAgIEVYUEVDVF9FUShleHBlY3RlZC5hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cywKLSAgICAg
ICAgICAgICAgR1RFU1RfRkxBRyhhbHNvX3J1bl9kaXNhYmxlZF90ZXN0cykpOwotICAgIEVYUEVD
VF9FUShleHBlY3RlZC5icmVha19vbl9mYWlsdXJlLCBHVEVTVF9GTEFHKGJyZWFrX29uX2ZhaWx1
cmUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuY2F0Y2hfZXhjZXB0aW9ucywgR1RFU1RfRkxB
RyhjYXRjaF9leGNlcHRpb25zKSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLmRlYXRoX3Rlc3Rf
dXNlX2ZvcmssIEdURVNUX0ZMQUcoZGVhdGhfdGVzdF91c2VfZm9yaykpOwotICAgIEVYUEVDVF9T
VFJFUShleHBlY3RlZC5maWx0ZXIsIEdURVNUX0ZMQUcoZmlsdGVyKS5jX3N0cigpKTsKLSAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWQubGlzdF90ZXN0cywgR1RFU1RfRkxBRyhsaXN0X3Rlc3RzKSk7Ci0g
ICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLm91dHB1dCwgR1RFU1RfRkxBRyhvdXRwdXQpLmNfc3Ry
KCkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5wcmludF90aW1lLCBHVEVTVF9GTEFHKHByaW50
X3RpbWUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmFuZG9tX3NlZWQsIEdURVNUX0ZMQUco
cmFuZG9tX3NlZWQpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQucmVwZWF0LCBHVEVTVF9GTEFH
KHJlcGVhdCkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5zaHVmZmxlLCBHVEVTVF9GTEFHKHNo
dWZmbGUpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3RhY2tfdHJhY2VfZGVwdGgsIEdURVNU
X0ZMQUcoc3RhY2tfdHJhY2VfZGVwdGgpKTsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQuc3Ry
ZWFtX3Jlc3VsdF90bywKLSAgICAgICAgICAgICAgICAgR1RFU1RfRkxBRyhzdHJlYW1fcmVzdWx0
X3RvKS5jX3N0cigpKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQudGhyb3dfb25fZmFpbHVyZSwg
R1RFU1RfRkxBRyh0aHJvd19vbl9mYWlsdXJlKSk7Ci0gIH0KLQotICAvLyBQYXJzZXMgYSBjb21t
YW5kIGxpbmUgKHNwZWNpZmllZCBieSBhcmdjMSBhbmQgYXJndjEpLCB0aGVuCi0gIC8vIHZlcmlm
aWVzIHRoYXQgdGhlIGZsYWcgdmFsdWVzIGFyZSBleHBlY3RlZCBhbmQgdGhhdCB0aGUKLSAgLy8g
cmVjb2duaXplZCBmbGFncyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi0gIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgc3RhdGljIHZvaWQgVGVzdFBhcnNpbmdGbGFn
cyhpbnQgYXJnYzEsIGNvbnN0IENoYXJUeXBlKiogYXJndjEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGFyZ2MyLCBjb25zdCBDaGFyVHlwZSoqIGFyZ3YyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsYWdzJiBleHBlY3RlZCwgYm9vbCBzaG91bGRf
cHJpbnRfaGVscCkgewotICAgIGNvbnN0IGJvb2wgc2F2ZWRfaGVscF9mbGFnID0gOjp0ZXN0aW5n
OjppbnRlcm5hbDo6Z19oZWxwX2ZsYWc7Ci0gICAgOjp0ZXN0aW5nOjppbnRlcm5hbDo6Z19oZWxw
X2ZsYWcgPSBmYWxzZTsKLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVESVJFQ1RJT04KLSAgICBD
YXB0dXJlU3Rkb3V0KCk7Ci0jZW5kaWYKLQotICAgIC8vIFBhcnNlcyB0aGUgY29tbWFuZCBsaW5l
LgotICAgIGludGVybmFsOjpQYXJzZUdvb2dsZVRlc3RGbGFnc09ubHkoJmFyZ2MxLCBjb25zdF9j
YXN0PENoYXJUeXBlKio+KGFyZ3YxKSk7Ci0KLSNpZiBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNU
SU9OCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgY2FwdHVyZWRfc3Rkb3V0ID0gR2V0Q2FwdHVyZWRT
dGRvdXQoKTsKLSNlbmRpZgotCi0gICAgLy8gVmVyaWZpZXMgdGhlIGZsYWcgdmFsdWVzLgotICAg
IENoZWNrRmxhZ3MoZXhwZWN0ZWQpOwotCi0gICAgLy8gVmVyaWZpZXMgdGhhdCB0aGUgcmVjb2du
aXplZCBmbGFncyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjb21tYW5kCi0gICAgLy8gbGluZS4KLSAg
ICBBc3NlcnRTdHJpbmdBcnJheUVxKGFyZ2MxICsgMSwgYXJndjEsIGFyZ2MyICsgMSwgYXJndjIp
OwotCi0gICAgLy8gUGFyc2VHb29nbGVUZXN0RmxhZ3NPbmx5IHNob3VsZCBuZWl0aGVyIHNldCBn
X2hlbHBfZmxhZyBub3IgcHJpbnQgdGhlCi0gICAgLy8gaGVscCBtZXNzYWdlIGZvciB0aGUgZmxh
Z3MgaXQgcmVjb2duaXplcy4KLSAgICBFWFBFQ1RfRVEoc2hvdWxkX3ByaW50X2hlbHAsIDo6dGVz
dGluZzo6aW50ZXJuYWw6OmdfaGVscF9mbGFnKTsKLQotI2lmIEdURVNUX0hBU19TVFJFQU1fUkVE
SVJFQ1RJT04KLSAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZF9oZWxwX2ZyYWdtZW50ID0K
LSAgICAgICAgIlRoaXMgcHJvZ3JhbSBjb250YWlucyB0ZXN0cyB3cml0dGVuIHVzaW5nIjsKLSAg
ICBpZiAoc2hvdWxkX3ByaW50X2hlbHApIHsKLSAgICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNT
dWJzdHJpbmcsIGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0ZG91dCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoSXNOb3RTdWJzdHJpbmcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2hlbHBfZnJhZ21lbnQsIGNhcHR1cmVkX3N0
ZG91dCk7Ci0gICAgfQotI2VuZGlmICAvLyBHVEVTVF9IQVNfU1RSRUFNX1JFRElSRUNUSU9OCi0K
LSAgICA6OnRlc3Rpbmc6OmludGVybmFsOjpnX2hlbHBfZmxhZyA9IHNhdmVkX2hlbHBfZmxhZzsK
LSAgfQotCi0gIC8vIFRoaXMgbWFjcm8gd3JhcHMgVGVzdFBhcnNpbmdGbGFncyBzLnQuIHRoZSB1
c2VyIGRvZXNuJ3QgbmVlZAotICAvLyB0byBzcGVjaWZ5IHRoZSBhcnJheSBzaXplcy4KLQotI2Rl
ZmluZSBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YxLCBhcmd2MiwgZXhwZWN0ZWQsIHNo
b3VsZF9wcmludF9oZWxwKSBcCi0gIFRlc3RQYXJzaW5nRmxhZ3Moc2l6ZW9mKGFyZ3YxKS9zaXpl
b2YoKmFyZ3YxKSAtIDEsIGFyZ3YxLCBcCi0gICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFyZ3Yy
KS9zaXplb2YoKmFyZ3YyKSAtIDEsIGFyZ3YyLCBcCi0gICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQsIHNob3VsZF9wcmludF9oZWxwKQotfTsKLQotLy8gVGVzdHMgcGFyc2luZyBhbiBlbXB0eSBj
b21tYW5kIGxpbmUuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBFbXB0eSkgewotICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3Yy
W10gPSB7Ci0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJn
diwgYXJndjIsIEZsYWdzKCksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyBhIGNvbW1h
bmQgbGluZSB0aGF0IGhhcyBubyBmbGFnLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTm9G
bGFnKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVM
TAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAg
IE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBG
bGFncygpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgYSBiYWQgLS1ndGVzdF9maWx0
ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRlckJhZCkgewotICBjb25z
dCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X2ZpbHRlciIs
Ci0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5l
eGUiLAotICAgICItLWd0ZXN0X2ZpbHRlciIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpGaWx0ZXIoIiIpLCB0cnVlKTsK
LX0KLQotLy8gVGVzdHMgcGFyc2luZyBhbiBlbXB0eSAtLWd0ZXN0X2ZpbHRlciBmbGFnLgotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgRmlsdGVyRW1wdHkpIHsKLSAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9maWx0ZXI9IiwKLSAgICBOVUxM
Ci0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAg
TlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZs
YWdzOjpGaWx0ZXIoIiIpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgYSBub24tZW1w
dHkgLS1ndGVzdF9maWx0ZXIgZmxhZy4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEZpbHRl
ck5vbkVtcHR5KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgIi0tZ3Rlc3RfZmlsdGVyPWFiYyIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIq
IGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9U
RVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6RmlsdGVyKCJhYmMiKSwgZmFs
c2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZS4KLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlV2l0aG91dFZhbHVlKSB7Ci0g
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfYnJl
YWtfb25fZmFpbHVyZSIsCi0gICAgTlVMTAotfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0g
ewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5H
X0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkJyZWFrT25GYWlsdXJlKHRydWUpLCBmYWxzZSk7
Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9icmVha19vbl9mYWlsdXJlPTAuCi1URVNU
X0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBCcmVha09uRmFpbHVyZUZhbHNlXzApIHsKLSAgY29uc3Qg
Y2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9icmVha19vbl9m
YWlsdXJlPTAiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewot
ICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZM
QUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkJyZWFrT25GYWlsdXJlKGZhbHNlKSwgZmFsc2UpOwot
fQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfYnJlYWtfb25fZmFpbHVyZT1mLgotVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgQnJlYWtPbkZhaWx1cmVGYWxzZV9mKSB7Ci0gIGNvbnN0IGNo
YXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfYnJlYWtfb25fZmFp
bHVyZT1mIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAg
ICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndiwgYXJndjIsIEZsYWdzOjpCcmVha09uRmFpbHVyZShmYWxzZSksIGZhbHNlKTsKLX0K
LQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9Ri4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIEJyZWFrT25GYWlsdXJlRmFsc2VfRikgewotICBjb25zdCBjaGFy
KiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1
cmU9RiIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAg
ImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1Nf
KGFyZ3YsIGFyZ3YyLCBGbGFnczo6QnJlYWtPbkZhaWx1cmUoZmFsc2UpLCBmYWxzZSk7Ci19Ci0K
LS8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmUgZmxhZyB0aGF0IGhh
cyBhICJ0cnVlIgotLy8gZGVmaW5pdGlvbi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEJy
ZWFrT25GYWlsdXJlVHJ1ZSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5l
eGUiLAotICAgICItLWd0ZXN0X2JyZWFrX29uX2ZhaWx1cmU9MSIsCi0gICAgTlVMTAotICB9Owot
Ci0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAg
fTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6QnJl
YWtPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X2NhdGNoX2V4Y2VwdGlvbnMuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBDYXRjaEV4Y2Vw
dGlvbnMpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAi
LS1ndGVzdF9jYXRjaF9leGNlcHRpb25zIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hh
ciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNU
X1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpDYXRjaEV4Y2VwdGlvbnMo
dHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X2RlYXRoX3Rlc3Rf
dXNlX2ZvcmsuCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBEZWF0aFRlc3RVc2VGb3JrKSB7
Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3Rf
ZGVhdGhfdGVzdF91c2VfZm9yayIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFy
Z3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6RGVhdGhUZXN0VXNlRm9yayh0cnVl
KSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgdGhlIHNhbWUgZmxhZyB0d2ljZSB3aXRo
IGRpZmZlcmVudCB2YWx1ZXMuICBUaGUKLS8vIGV4cGVjdGVkIGJlaGF2aW9yIGlzIHRoYXQgdGhl
IG9uZSBjb21pbmcgbGFzdCB0YWtlcyBwcmVjZWRlbmNlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0
VGVzdCwgRHVwbGljYXRlZEZsYWdzKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAi
Zm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3RfZmlsdGVyPWEiLAotICAgICItLWd0ZXN0X2ZpbHRlcj1i
IiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9v
LmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJn
diwgYXJndjIsIEZsYWdzOjpGaWx0ZXIoImIiKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZp
bmcgYW4gdW5yZWNvZ25pemVkIGZsYWcgb24gdGhlIGNvbW1hbmQgbGluZS4KLVRFU1RfRihJbml0
R29vZ2xlVGVzdFRlc3QsIFVucmVjb2duaXplZEZsYWcpIHsKLSAgY29uc3QgY2hhciogYXJndltd
ID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9icmVha19vbl9mYWlsdXJlIiwKLSAg
ICAiYmFyIiwgIC8vIFVucmVjb2duaXplZCBieSBHb29nbGUgVGVzdC4KLSAgICAiLS1ndGVzdF9m
aWx0ZXI9YiIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0g
ICAgImZvby5leGUiLAotICAgICJiYXIiLAotICAgIE5VTEwKLSAgfTsKLQotICBGbGFncyBmbGFn
czsKLSAgZmxhZ3MuYnJlYWtfb25fZmFpbHVyZSA9IHRydWU7Ci0gIGZsYWdzLmZpbHRlciA9ICJi
IjsKLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgZmxhZ3MsIGZhbHNl
KTsKLX0KLQotLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9saXN0X3Rlc3RzIGZsYWcKLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIExpc3RUZXN0c0ZsYWcpIHsKLSAgICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzIiwK
LSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAg
ICJmb28uZXhlIiwKLSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAgR1RFU1RfVEVTVF9QQVJTSU5H
X0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6Okxpc3RUZXN0cyh0cnVlKSwgZmFsc2UpOwotfQot
Ci0vLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxhZyB3aXRoIGEgInRydWUi
IHZhbHVlCi1URVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBMaXN0VGVzdHNUcnVlKSB7Ci0gICAg
Y29uc3QgY2hhciogYXJndltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgIi0tZ3Rlc3Rf
bGlzdF90ZXN0cz0xIiwKLSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAgR1RF
U1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6Okxpc3RUZXN0cyh0cnVl
KSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBoYXZpbmcgYSAtLWd0ZXN0X2xpc3RfdGVzdHMgZmxh
ZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRl
c3RzRmFsc2UpIHsKLSAgICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIs
Ci0gICAgICAiLS1ndGVzdF9saXN0X3Rlc3RzPTAiLAotICAgICAgTlVMTAotICAgIH07Ci0KLSAg
ICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgTlVMTAot
ICAgIH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFn
czo6TGlzdFRlc3RzKGZhbHNlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rl
c3RfbGlzdF90ZXN0cz1mLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFs
c2VfZikgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICIt
LWd0ZXN0X2xpc3RfdGVzdHM9ZiIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFy
Z3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNU
X1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6TGlzdFRlc3RzKGZhbHNlKSwgZmFs
c2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3RfbGlzdF90ZXN0cz1GLgotVEVTVF9G
KEluaXRHb29nbGVUZXN0VGVzdCwgTGlzdFRlc3RzRmFsc2VfRikgewotICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X2xpc3RfdGVzdHM9RiIsCi0g
ICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUi
LAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFy
Z3YyLCBGbGFnczo6TGlzdFRlc3RzKGZhbHNlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJz
aW5nIC0tZ3Rlc3Rfb3V0cHV0IChpbnZhbGlkKS4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3Qs
IE91dHB1dEVtcHR5KSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIs
Ci0gICAgIi0tZ3Rlc3Rfb3V0cHV0IiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciog
YXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0tZ3Rlc3Rfb3V0cHV0IiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxh
Z3MoKSwgdHJ1ZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9vdXRwdXQ9eG1sCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBPdXRwdXRYbWwpIHsKLSAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9vdXRwdXQ9eG1sIiwKLSAgICBO
VUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0g
ICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIs
IEZsYWdzOjpPdXRwdXQoInhtbCIpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1n
dGVzdF9vdXRwdXQ9eG1sOmZpbGUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFht
bEZpbGUpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAi
LS1ndGVzdF9vdXRwdXQ9eG1sOmZpbGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFy
KiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1Rf
VEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6Ok91dHB1dCgieG1sOmZpbGUi
KSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfb3V0cHV0PXhtbDpkaXJl
Y3RvcnkvcGF0aC8KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIE91dHB1dFhtbERpcmVjdG9y
eSkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0
ZXN0X291dHB1dD14bWw6ZGlyZWN0b3J5L3BhdGgvIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29u
c3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0g
IEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmxhZ3M6Ok91dHB1dCgieG1sOmRpcmVjdG9yeS9wYXRoLyIpLCBmYWxzZSk7
Ci19Ci0KLS8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rlc3RfcHJpbnRfdGltZSBmbGFnCi1URVNUX0Yo
SW5pdEdvb2dsZVRlc3RUZXN0LCBQcmludFRpbWVGbGFnKSB7Ci0gICAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZSIsCi0g
ICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgICAi
Zm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIEdURVNUX1RFU1RfUEFSU0lOR19G
TEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpQcmludFRpbWUodHJ1ZSksIGZhbHNlKTsKLX0KLQot
Ly8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcgd2l0aCBhICJ0cnVlIiB2
YWx1ZQotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgUHJpbnRUaW1lVHJ1ZSkgewotICAgIGNv
bnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgICItLWd0ZXN0X3By
aW50X3RpbWU9MSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIqIGFyZ3Yy
W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIEdURVNU
X1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpQcmludFRpbWUodHJ1ZSks
IGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9wcmludF90aW1lIGZsYWcg
d2l0aCBhICJmYWxzZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGlt
ZUZhbHNlKSB7Ci0gICAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICAgImZvby5leGUiLAot
ICAgICAgIi0tZ3Rlc3RfcHJpbnRfdGltZT0wIiwKLSAgICAgIE5VTEwKLSAgICB9OwotCi0gICAg
Y29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgIE5VTEwKLSAg
ICB9OwotCi0gICAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6
OlByaW50VGltZShmYWxzZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0
X3ByaW50X3RpbWU9Zi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNl
X2YpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1n
dGVzdF9wcmludF90aW1lPWYiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2
MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9Q
QVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlByaW50VGltZShmYWxzZSksIGZhbHNl
KTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3ByaW50X3RpbWU9Ri4KLVRFU1RfRihJ
bml0R29vZ2xlVGVzdFRlc3QsIFByaW50VGltZUZhbHNlX0YpIHsKLSAgY29uc3QgY2hhciogYXJn
dltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9wcmludF90aW1lPUYiLAotICAg
IE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwK
LSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2
MiwgRmxhZ3M6OlByaW50VGltZShmYWxzZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2lu
ZyAtLWd0ZXN0X3JhbmRvbV9zZWVkPW51bWJlcgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwg
UmFuZG9tU2VlZCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAot
ICAgICItLWd0ZXN0X3JhbmRvbV9zZWVkPTEwMDAiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25z
dCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
R1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlJhbmRvbVNlZWQo
MTAwMCksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3JlcGVhdD1udW1i
ZXIKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFJlcGVhdCkgewotICBjb25zdCBjaGFyKiBh
cmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X3JlcGVhdD0xMDAwIiwKLSAg
ICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAgICAiZm9vLmV4ZSIs
Ci0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJn
djIsIEZsYWdzOjpSZXBlYXQoMTAwMCksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgaGF2aW5nIGEg
LS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnCi1URVNUX0YoSW5pdEdvb2dsZVRl
c3RUZXN0LCBBbHNvUnVuRGlzYWJsZWRUZXN0c0ZsYWcpIHsKLSAgICBjb25zdCBjaGFyKiBhcmd2
W10gPSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICAiLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxl
ZF90ZXN0cyIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIGNvbnN0IGNoYXIqIGFyZ3YyW10g
PSB7Ci0gICAgICAiZm9vLmV4ZSIsCi0gICAgICBOVUxMCi0gICAgfTsKLQotICAgIEdURVNUX1RF
U1RfUEFSU0lOR19GTEFHU18oYXJndiwgYXJndjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbGFnczo6QWxzb1J1bkRpc2FibGVkVGVzdHModHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8g
VGVzdHMgaGF2aW5nIGEgLS1ndGVzdF9hbHNvX3J1bl9kaXNhYmxlZF90ZXN0cyBmbGFnIHdpdGgg
YSAidHJ1ZSIgdmFsdWUKLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIEFsc29SdW5EaXNhYmxl
ZFRlc3RzVHJ1ZSkgewotICAgIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhl
IiwKLSAgICAgICItLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTEiLAotICAgICAgTlVM
TAotICAgIH07Ci0KLSAgICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICAgImZvby5leGUi
LAotICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFy
Z3YsIGFyZ3YyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ3M6OkFsc29SdW5E
aXNhYmxlZFRlc3RzKHRydWUpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIGhhdmluZyBhIC0tZ3Rl
c3RfYWxzb19ydW5fZGlzYWJsZWRfdGVzdHMgZmxhZyB3aXRoIGEgImZhbHNlIiB2YWx1ZQotVEVT
VF9GKEluaXRHb29nbGVUZXN0VGVzdCwgQWxzb1J1bkRpc2FibGVkVGVzdHNGYWxzZSkgewotICAg
IGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAgICJmb28uZXhlIiwKLSAgICAgICItLWd0ZXN0
X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzPTAiLAotICAgICAgTlVMTAotICAgIH07Ci0KLSAgICBj
b25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICAgImZvby5leGUiLAotICAgICAgTlVMTAotICAg
IH07Ci0KLSAgICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ3M6OkFsc29SdW5EaXNhYmxlZFRlc3RzKGZhbHNl
KSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0tZ3Rlc3Rfc2h1ZmZsZS4KLVRFU1Rf
RihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVXaXRob3V0VmFsdWUpIHsKLSAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9zaHVmZmxlIiwKLSAg
ICBOVUxMCi19OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAot
ICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3Yy
LCBGbGFnczo6U2h1ZmZsZSh0cnVlKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXJzaW5nIC0t
Z3Rlc3Rfc2h1ZmZsZT0wLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU2h1ZmZsZUZhbHNl
XzApIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1n
dGVzdF9zaHVmZmxlPTAiLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2Mltd
ID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJT
SU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OlNodWZmbGUoZmFsc2UpLCBmYWxzZSk7Ci19
Ci0KLS8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3NodWZmbGUgZmxhZyB0aGF0IGhhcyBhICJ0
cnVlIgotLy8gZGVmaW5pdGlvbi4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFNodWZmbGVU
cnVlKSB7Ci0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgIi0t
Z3Rlc3Rfc2h1ZmZsZT0xIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJb
XSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFS
U0lOR19GTEFHU18oYXJndiwgYXJndjIsIEZsYWdzOjpTaHVmZmxlKHRydWUpLCBmYWxzZSk7Ci19
Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVzdF9zdGFja190cmFjZV9kZXB0aD1udW1iZXIuCi1U
RVNUX0YoSW5pdEdvb2dsZVRlc3RUZXN0LCBTdGFja1RyYWNlRGVwdGgpIHsKLSAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9zdGFja190cmFjZV9k
ZXB0aD01IiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJndjJbXSA9IHsKLSAg
ICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1RfUEFSU0lOR19GTEFH
U18oYXJndiwgYXJndjIsIEZsYWdzOjpTdGFja1RyYWNlRGVwdGgoNSksIGZhbHNlKTsKLX0KLQot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgU3RyZWFtUmVzdWx0VG8pIHsKLSAgY29uc3QgY2hh
ciogYXJndltdID0gewotICAgICJmb28uZXhlIiwKLSAgICAiLS1ndGVzdF9zdHJlYW1fcmVzdWx0
X3RvPWxvY2FsaG9zdDoxMjM0IiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgY29uc3QgY2hhciogYXJn
djJbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgTlVMTAotICB9OwotCi0gIEdURVNUX1RFU1Rf
UEFSU0lOR19GTEFHU18oCi0gICAgICBhcmd2LCBhcmd2MiwgRmxhZ3M6OlN0cmVhbVJlc3VsdFRv
KCJsb2NhbGhvc3Q6MTIzNCIpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgLS1ndGVz
dF90aHJvd19vbl9mYWlsdXJlLgotVEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgVGhyb3dPbkZh
aWx1cmVXaXRob3V0VmFsdWUpIHsKLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAgICJmb28u
ZXhlIiwKLSAgICAiLS1ndGVzdF90aHJvd19vbl9mYWlsdXJlIiwKLSAgICBOVUxMCi19OwotCi0g
IGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsK
LQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6VGhyb3dP
bkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFyc2luZyAtLWd0ZXN0X3Ro
cm93X29uX2ZhaWx1cmU9MC4KLVRFU1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWls
dXJlRmFsc2VfMCkgewotICBjb25zdCBjaGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAot
ICAgICItLWd0ZXN0X3Rocm93X29uX2ZhaWx1cmU9MCIsCi0gICAgTlVMTAotICB9OwotCi0gIGNv
bnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQot
ICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6VGhyb3dPbkZh
aWx1cmUoZmFsc2UpLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHBhcnNpbmcgYSAtLWd0ZXN0X3Ro
cm93X29uX2ZhaWx1cmUgZmxhZyB0aGF0IGhhcyBhICJ0cnVlIgotLy8gZGVmaW5pdGlvbi4KLVRF
U1RfRihJbml0R29vZ2xlVGVzdFRlc3QsIFRocm93T25GYWlsdXJlVHJ1ZSkgewotICBjb25zdCBj
aGFyKiBhcmd2W10gPSB7Ci0gICAgImZvby5leGUiLAotICAgICItLWd0ZXN0X3Rocm93X29uX2Zh
aWx1cmU9MSIsCi0gICAgTlVMTAotICB9OwotCi0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0g
ICAgImZvby5leGUiLAotICAgIE5VTEwKLSAgfTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxB
R1NfKGFyZ3YsIGFyZ3YyLCBGbGFnczo6VGhyb3dPbkZhaWx1cmUodHJ1ZSksIGZhbHNlKTsKLX0K
LQotI2lmIEdURVNUX09TX1dJTkRPV1MKLS8vIFRlc3RzIHBhcnNpbmcgd2lkZSBzdHJpbmdzLgot
VEVTVF9GKEluaXRHb29nbGVUZXN0VGVzdCwgV2lkZVN0cmluZ3MpIHsKLSAgY29uc3Qgd2NoYXJf
dCogYXJndltdID0gewotICAgIEwiZm9vLmV4ZSIsCi0gICAgTCItLWd0ZXN0X2ZpbHRlcj1Gb28q
IiwKLSAgICBMIi0tZ3Rlc3RfbGlzdF90ZXN0cz0xIiwKLSAgICBMIi0tZ3Rlc3RfYnJlYWtfb25f
ZmFpbHVyZSIsCi0gICAgTCItLW5vbl9ndGVzdF9mbGFnIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
Y29uc3Qgd2NoYXJfdCogYXJndjJbXSA9IHsKLSAgICBMImZvby5leGUiLAotICAgIEwiLS1ub25f
Z3Rlc3RfZmxhZyIsCi0gICAgTlVMTAotICB9OwotCi0gIEZsYWdzIGV4cGVjdGVkX2ZsYWdzOwot
ICBleHBlY3RlZF9mbGFncy5icmVha19vbl9mYWlsdXJlID0gdHJ1ZTsKLSAgZXhwZWN0ZWRfZmxh
Z3MuZmlsdGVyID0gIkZvbyoiOwotICBleHBlY3RlZF9mbGFncy5saXN0X3Rlc3RzID0gdHJ1ZTsK
LQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxBR1NfKGFyZ3YsIGFyZ3YyLCBleHBlY3RlZF9mbGFn
cywgZmFsc2UpOwotfQotIyBlbmRpZiAgLy8gR1RFU1RfT1NfV0lORE9XUwotCi0jaWYgR1RFU1Rf
VVNFX09XTl9GTEFHRklMRV9GTEFHXwotY2xhc3MgRmxhZ2ZpbGVUZXN0IDogcHVibGljIEluaXRH
b29nbGVUZXN0VGVzdCB7Ci0gcHVibGljOgotICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7Ci0gICAg
SW5pdEdvb2dsZVRlc3RUZXN0OjpTZXRVcCgpOwotCi0gICAgdGVzdGRhdGFfcGF0aF8uU2V0KGlu
dGVybmFsOjpGaWxlUGF0aCgKLSAgICAgICAgdGVzdGluZzo6VGVtcERpcigpICsgaW50ZXJuYWw6
OkdldEN1cnJlbnRFeGVjdXRhYmxlTmFtZSgpLnN0cmluZygpICsKLSAgICAgICAgIl9mbGFnZmls
ZV90ZXN0IikpOwotICAgIHRlc3Rpbmc6OmludGVybmFsOjpwb3NpeDo6Um1EaXIodGVzdGRhdGFf
cGF0aF8uY19zdHIoKSk7Ci0gICAgRVhQRUNUX1RSVUUodGVzdGRhdGFfcGF0aF8uQ3JlYXRlRm9s
ZGVyKCkpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIHRlc3Rpbmc6
OmludGVybmFsOjpwb3NpeDo6Um1EaXIodGVzdGRhdGFfcGF0aF8uY19zdHIoKSk7Ci0gICAgSW5p
dEdvb2dsZVRlc3RUZXN0OjpUZWFyRG93bigpOwotICB9Ci0KLSAgaW50ZXJuYWw6OkZpbGVQYXRo
IENyZWF0ZUZsYWdmaWxlKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7Ci0gICAgaW50ZXJuYWw6OkZp
bGVQYXRoIGZpbGVfcGF0aChpbnRlcm5hbDo6RmlsZVBhdGg6OkdlbmVyYXRlVW5pcXVlRmlsZU5h
bWUoCi0gICAgICAgIHRlc3RkYXRhX3BhdGhfLCBpbnRlcm5hbDo6RmlsZVBhdGgoInVuaXF1ZSIp
LCAidHh0IikpOwotICAgIEZJTEUqIGYgPSB0ZXN0aW5nOjppbnRlcm5hbDo6cG9zaXg6OkZPcGVu
KGZpbGVfcGF0aC5jX3N0cigpLCAidyIpOwotICAgIGZwcmludGYoZiwgIiVzIiwgY29udGVudHMp
OwotICAgIGZjbG9zZShmKTsKLSAgICByZXR1cm4gZmlsZV9wYXRoOwotICB9Ci0KLSBwcml2YXRl
OgotICBpbnRlcm5hbDo6RmlsZVBhdGggdGVzdGRhdGFfcGF0aF87Ci19OwotCi0vLyBUZXN0cyBh
biBlbXB0eSBmbGFnZmlsZS4KLVRFU1RfRihGbGFnZmlsZVRlc3QsIEVtcHR5KSB7Ci0gIGludGVy
bmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKCIiKSk7Ci0gIHN0ZDo6
c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQotICAgICAgc3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFH
X1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2ZpbGVfcGF0aC5jX3N0cigpOwotCi0gIGNvbnN0
IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4ZSIsCi0gICAgZmxhZ2ZpbGVfZmxhZy5jX3N0
cigpLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25zdCBjaGFyKiBhcmd2MltdID0gewotICAgICJm
b28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAgR1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhh
cmd2LCBhcmd2MiwgRmxhZ3MoKSwgZmFsc2UpOwotfQotCi0vLyBUZXN0cyBwYXNzaW5nIGEgbm9u
LWVtcHR5IC0tZ3Rlc3RfZmlsdGVyIGZsYWcgdmlhIC0tZ3Rlc3RfZmxhZ2ZpbGUuCi1URVNUX0Yo
RmxhZ2ZpbGVUZXN0LCBGaWx0ZXJOb25FbXB0eSkgewotICBpbnRlcm5hbDo6RmlsZVBhdGggZmxh
Z2ZpbGVfcGF0aChDcmVhdGVGbGFnZmlsZSgKLSAgICAgICItLSIgIEdURVNUX0ZMQUdfUFJFRklY
XyAgImZpbHRlcj1hYmMiKSk7Ci0gIHN0ZDo6c3RyaW5nIGZsYWdmaWxlX2ZsYWcgPQotICAgICAg
c3RkOjpzdHJpbmcoIi0tIiBHVEVTVF9GTEFHX1BSRUZJWF8gImZsYWdmaWxlPSIpICsgZmxhZ2Zp
bGVfcGF0aC5jX3N0cigpOwotCi0gIGNvbnN0IGNoYXIqIGFyZ3ZbXSA9IHsKLSAgICAiZm9vLmV4
ZSIsCi0gICAgZmxhZ2ZpbGVfZmxhZy5jX3N0cigpLAotICAgIE5VTEwKLSAgfTsKLQotICBjb25z
dCBjaGFyKiBhcmd2MltdID0gewotICAgICJmb28uZXhlIiwKLSAgICBOVUxMCi0gIH07Ci0KLSAg
R1RFU1RfVEVTVF9QQVJTSU5HX0ZMQUdTXyhhcmd2LCBhcmd2MiwgRmxhZ3M6OkZpbHRlcigiYWJj
IiksIGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgcGFzc2luZyBzZXZlcmFsIGZsYWdzIHZpYSAtLWd0
ZXN0X2ZsYWdmaWxlLgotVEVTVF9GKEZsYWdmaWxlVGVzdCwgU2V2ZXJhbEZsYWdzKSB7Ci0gIGlu
dGVybmFsOjpGaWxlUGF0aCBmbGFnZmlsZV9wYXRoKENyZWF0ZUZsYWdmaWxlKAotICAgICAgIi0t
IiAgR1RFU1RfRkxBR19QUkVGSVhfICAiZmlsdGVyPWFiY1xuIgotICAgICAgIi0tIiAgR1RFU1Rf
RkxBR19QUkVGSVhfICAiYnJlYWtfb25fZmFpbHVyZVxuIgotICAgICAgIi0tIiAgR1RFU1RfRkxB
R19QUkVGSVhfICAibGlzdF90ZXN0cyIpKTsKLSAgc3RkOjpzdHJpbmcgZmxhZ2ZpbGVfZmxhZyA9
Ci0gICAgICBzdGQ6OnN0cmluZygiLS0iIEdURVNUX0ZMQUdfUFJFRklYXyAiZmxhZ2ZpbGU9Iikg
KyBmbGFnZmlsZV9wYXRoLmNfc3RyKCk7Ci0KLSAgY29uc3QgY2hhciogYXJndltdID0gewotICAg
ICJmb28uZXhlIiwKLSAgICBmbGFnZmlsZV9mbGFnLmNfc3RyKCksCi0gICAgTlVMTAotICB9Owot
Ci0gIGNvbnN0IGNoYXIqIGFyZ3YyW10gPSB7Ci0gICAgImZvby5leGUiLAotICAgIE5VTEwKLSAg
fTsKLQotICBGbGFncyBleHBlY3RlZF9mbGFnczsKLSAgZXhwZWN0ZWRfZmxhZ3MuYnJlYWtfb25f
ZmFpbHVyZSA9IHRydWU7Ci0gIGV4cGVjdGVkX2ZsYWdzLmZpbHRlciA9ICJhYmMiOwotICBleHBl
Y3RlZF9mbGFncy5saXN0X3Rlc3RzID0gdHJ1ZTsKLQotICBHVEVTVF9URVNUX1BBUlNJTkdfRkxB
R1NfKGFyZ3YsIGFyZ3YyLCBleHBlY3RlZF9mbGFncywgZmFsc2UpOwotfQotI2VuZGlmICAvLyBH
VEVTVF9VU0VfT1dOX0ZMQUdGSUxFX0ZMQUdfCi0KLS8vIFRlc3RzIGN1cnJlbnRfdGVzdF9pbmZv
KCkgaW4gVW5pdFRlc3QuCi1jbGFzcyBDdXJyZW50VGVzdEluZm9UZXN0IDogcHVibGljIFRlc3Qg
ewotIHByb3RlY3RlZDoKLSAgLy8gVGVzdHMgdGhhdCBjdXJyZW50X3Rlc3RfaW5mbygpIHJldHVy
bnMgTlVMTCBiZWZvcmUgdGhlIGZpcnN0IHRlc3QgaW4KLSAgLy8gdGhlIHRlc3QgY2FzZSBpcyBy
dW4uCi0gIHN0YXRpYyB2b2lkIFNldFVwVGVzdENhc2UoKSB7Ci0gICAgLy8gVGhlcmUgc2hvdWxk
IGJlIG5vIHRlc3RzIHJ1bm5pbmcgYXQgdGhpcyBwb2ludC4KLSAgICBjb25zdCBUZXN0SW5mbyog
dGVzdF9pbmZvID0KLSAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3Rf
aW5mbygpOwotICAgIEVYUEVDVF9UUlVFKHRlc3RfaW5mbyA9PSBOVUxMKQotICAgICAgICA8PCAi
VGhlcmUgc2hvdWxkIGJlIG5vIHRlc3RzIHJ1bm5pbmcgYXQgdGhpcyBwb2ludC4iOwotICB9Ci0K
LSAgLy8gVGVzdHMgdGhhdCBjdXJyZW50X3Rlc3RfaW5mbygpIHJldHVybnMgTlVMTCBhZnRlciB0
aGUgbGFzdCB0ZXN0IGluCi0gIC8vIHRoZSB0ZXN0IGNhc2UgaGFzIHJ1bi4KLSAgc3RhdGljIHZv
aWQgVGVhckRvd25UZXN0Q2FzZSgpIHsKLSAgICBjb25zdCBUZXN0SW5mbyogdGVzdF9pbmZvID0K
LSAgICAgIFVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICAg
IEVYUEVDVF9UUlVFKHRlc3RfaW5mbyA9PSBOVUxMKQotICAgICAgICA8PCAiVGhlcmUgc2hvdWxk
IGJlIG5vIHRlc3RzIHJ1bm5pbmcgYXQgdGhpcyBwb2ludC4iOwotICB9Ci19OwotCi0vLyBUZXN0
cyB0aGF0IGN1cnJlbnRfdGVzdF9pbmZvKCkgcmV0dXJucyBUZXN0SW5mbyBmb3IgY3VycmVudGx5
IHJ1bm5pbmcKLS8vIHRlc3QgYnkgY2hlY2tpbmcgdGhlIGV4cGVjdGVkIHRlc3QgbmFtZSBhZ2Fp
bnN0IHRoZSBhY3R1YWwgb25lLgotVEVTVF9GKEN1cnJlbnRUZXN0SW5mb1Rlc3QsIFdvcmtzRm9y
Rmlyc3RUZXN0SW5BVGVzdENhc2UpIHsKLSAgY29uc3QgVGVzdEluZm8qIHRlc3RfaW5mbyA9Ci0g
ICAgVW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gIEFTU0VS
VF9UUlVFKE5VTEwgIT0gdGVzdF9pbmZvKQotICAgICAgPDwgIlRoZXJlIGlzIGEgdGVzdCBydW5u
aW5nIHNvIHdlIHNob3VsZCBoYXZlIGEgdmFsaWQgVGVzdEluZm8uIjsKLSAgRVhQRUNUX1NUUkVR
KCJDdXJyZW50VGVzdEluZm9UZXN0IiwgdGVzdF9pbmZvLT50ZXN0X2Nhc2VfbmFtZSgpKQotICAg
ICAgPDwgIkV4cGVjdGVkIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0ZXN0IGNh
c2UuIjsKLSAgRVhQRUNUX1NUUkVRKCJXb3Jrc0ZvckZpcnN0VGVzdEluQVRlc3RDYXNlIiwgdGVz
dF9pbmZvLT5uYW1lKCkpCi0gICAgICA8PCAiRXhwZWN0ZWQgdGhlIG5hbWUgb2YgdGhlIGN1cnJl
bnRseSBydW5uaW5nIHRlc3QuIjsKLX0KLQotLy8gVGVzdHMgdGhhdCBjdXJyZW50X3Rlc3RfaW5m
bygpIHJldHVybnMgVGVzdEluZm8gZm9yIGN1cnJlbnRseSBydW5uaW5nCi0vLyB0ZXN0IGJ5IGNo
ZWNraW5nIHRoZSBleHBlY3RlZCB0ZXN0IG5hbWUgYWdhaW5zdCB0aGUgYWN0dWFsIG9uZS4gIFdl
Ci0vLyB1c2UgdGhpcyB0ZXN0IHRvIHNlZSB0aGF0IHRoZSBUZXN0SW5mbyBvYmplY3QgYWN0dWFs
bHkgY2hhbmdlZCBmcm9tCi0vLyB0aGUgcHJldmlvdXMgaW52b2NhdGlvbi4KLVRFU1RfRihDdXJy
ZW50VGVzdEluZm9UZXN0LCBXb3Jrc0ZvclNlY29uZFRlc3RJbkFUZXN0Q2FzZSkgewotICBjb25z
dCBUZXN0SW5mbyogdGVzdF9pbmZvID0KLSAgICBVbml0VGVzdDo6R2V0SW5zdGFuY2UoKS0+Y3Vy
cmVudF90ZXN0X2luZm8oKTsKLSAgQVNTRVJUX1RSVUUoTlVMTCAhPSB0ZXN0X2luZm8pCi0gICAg
ICA8PCAiVGhlcmUgaXMgYSB0ZXN0IHJ1bm5pbmcgc28gd2Ugc2hvdWxkIGhhdmUgYSB2YWxpZCBU
ZXN0SW5mby4iOwotICBFWFBFQ1RfU1RSRVEoIkN1cnJlbnRUZXN0SW5mb1Rlc3QiLCB0ZXN0X2lu
Zm8tPnRlc3RfY2FzZV9uYW1lKCkpCi0gICAgICA8PCAiRXhwZWN0ZWQgdGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnRseSBydW5uaW5nIHRlc3QgY2FzZS4iOwotICBFWFBFQ1RfU1RSRVEoIldvcmtzRm9y
U2Vjb25kVGVzdEluQVRlc3RDYXNlIiwgdGVzdF9pbmZvLT5uYW1lKCkpCi0gICAgICA8PCAiRXhw
ZWN0ZWQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRlc3QuIjsKLX0KLQotfSAg
Ly8gbmFtZXNwYWNlIHRlc3RpbmcKLQotLy8gVGhlc2UgdHdvIGxpbmVzIHRlc3QgdGhhdCB3ZSBj
YW4gZGVmaW5lIHRlc3RzIGluIGEgbmFtZXNwYWNlIHRoYXQKLS8vIGhhcyB0aGUgbmFtZSAidGVz
dGluZyIgYW5kIGlzIG5lc3RlZCBpbiBhbm90aGVyIG5hbWVzcGFjZS4KLW5hbWVzcGFjZSBteV9u
YW1lc3BhY2UgewotbmFtZXNwYWNlIHRlc3RpbmcgewotCi0vLyBNYWtlcyBzdXJlIHRoYXQgVEVT
VCBrbm93cyB0byB1c2UgOjp0ZXN0aW5nOjpUZXN0IGluc3RlYWQgb2YKLS8vIDo6bXlfbmFtZXNw
YWNlOjp0ZXN0aW5nOjpUZXN0LgotY2xhc3MgVGVzdCB7fTsKLQotLy8gTWFrZXMgc3VyZSB0aGF0
IGFuIGFzc2VydGlvbiBrbm93cyB0byB1c2UgOjp0ZXN0aW5nOjpNZXNzYWdlIGluc3RlYWQgb2YK
LS8vIDo6bXlfbmFtZXNwYWNlOjp0ZXN0aW5nOjpNZXNzYWdlLgotY2xhc3MgTWVzc2FnZSB7fTsK
LQotLy8gTWFrZXMgc3VyZSB0aGF0IGFuIGFzc2VydGlvbiBrbm93cyB0byB1c2UKLS8vIDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IGluc3RlYWQgb2YKLS8vIDo6bXlfbmFtZXNwYWNlOjp0ZXN0
aW5nOjpBc3NlcnRpb25SZXN1bHQuCi1jbGFzcyBBc3NlcnRpb25SZXN1bHQge307Ci0KLS8vIFRl
c3RzIHRoYXQgYW4gYXNzZXJ0aW9uIHRoYXQgc2hvdWxkIHN1Y2NlZWQgd29ya3MgYXMgZXhwZWN0
ZWQuCi1URVNUKE5lc3RlZFRlc3RpbmdOYW1lc3BhY2VUZXN0LCBTdWNjZXNzKSB7Ci0gIEVYUEVD
VF9FUSgxLCAxKSA8PCAiVGhpcyBzaG91bGRuJ3QgZmFpbC4iOwotfQotCi0vLyBUZXN0cyB0aGF0
IGFuIGFzc2VydGlvbiB0aGF0IHNob3VsZCBmYWlsIHdvcmtzIGFzIGV4cGVjdGVkLgotVEVTVChO
ZXN0ZWRUZXN0aW5nTmFtZXNwYWNlVGVzdCwgRmFpbHVyZSkgewotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShGQUlMKCkgPDwgIlRoaXMgZmFpbHVyZSBpcyBleHBlY3RlZC4iLAotICAgICAgICAgICAg
ICAgICAgICAgICAiVGhpcyBmYWlsdXJlIGlzIGV4cGVjdGVkLiIpOwotfQotCi19ICAvLyBuYW1l
c3BhY2UgdGVzdGluZwotfSAgLy8gbmFtZXNwYWNlIG15X25hbWVzcGFjZQotCi0vLyBUZXN0cyB0
aGF0IG9uZSBjYW4gY2FsbCBzdXBlcmNsYXNzIFNldFVwIGFuZCBUZWFyRG93biBtZXRob2RzLS0K
LS8vIHRoYXQgaXMsIHRoYXQgdGhleSBhcmUgbm90IHByaXZhdGUuCi0vLyBObyB0ZXN0cyBhcmUg
YmFzZWQgb24gdGhpcyBmaXh0dXJlOyB0aGUgdGVzdCAicGFzc2VzIiBpZiBpdCBjb21waWxlcwot
Ly8gc3VjY2Vzc2Z1bGx5LgotY2xhc3MgUHJvdGVjdGVkRml4dHVyZU1ldGhvZHNUZXN0IDogcHVi
bGljIFRlc3QgewotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIFRl
c3Q6OlNldFVwKCk7Ci0gIH0KLSAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgewotICAgIFRlc3Q6
OlRlYXJEb3duKCk7Ci0gIH0KLX07Ci0KLS8vIFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0IHRlc3Rz
IHRoZSBzdHJlYW1pbmcgdmVyc2lvbnMgb2YgYSByZXByZXNlbnRhdGl2ZQotLy8gc2FtcGxlIG9m
IGFzc2VydGlvbnMuCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBVbmNvbmRpdGlvbmFs
KSB7Ci0gIFNVQ0NFRUQoKSA8PCAiZXhwZWN0ZWQgc3VjY2VzcyI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEFERF9GQUlMVVJFKCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJ
TFVSRShGQUlMKCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotfQotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0vLyBTaWxl
bmNlcyB3YXJuaW5nczogIkNvbmRpdGlvbiBpcyBhbHdheXMgdHJ1ZSIsICJVbnJlYWNoYWJsZSBj
b2RlIgotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLXctY2NjIC13LXJjaAotI2VuZGlmCi0KLVRFU1Qo
U3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRydXRoKSB7Ci0gIEVYUEVDVF9UUlVFKHRydWUpIDw8
ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfVFJVRSh0cnVlKSA8PCAidW5leHBlY3Rl
ZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RSVUUoZmFsc2Up
IDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RSVUUoZmFsc2Up
IDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
IGZhaWx1cmUiKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3NlcnRpb25zVGVzdCwgVHJ1dGgyKSB7
Ci0gIEVYUEVDVF9GQUxTRShmYWxzZSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEFTU0VS
VF9GQUxTRShmYWxzZSkgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9GQUxTRSh0cnVlKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRB
TF9GQUlMVVJFKEFTU0VSVF9GQUxTRSh0cnVlKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLSNpZmRlZiBfX0JP
UkxBTkRDX18KLS8vIFJlc3RvcmVzIHdhcm5pbmdzIGFmdGVyIHByZXZpb3VzICIjcHJhZ21hIG9w
dGlvbiBwdXNoIiBzdXByZXNzZWQgdGhlbQotIyBwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0K
LVRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIEludGVnZXJFcXVhbHMpIHsKLSAgRVhQRUNU
X0VRKDEsIDEpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfRVEoMSwgMSkgPDwg
InVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9F
USgxLCAyKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9FUSgx
LCAyKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICJleHBl
Y3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIEludGVn
ZXJMZXNzVGhhbikgewotICBFWFBFQ1RfTFQoMSwgMikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7
Ci0gIEFTU0VSVF9MVCgxLCAyKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05P
TkZBVEFMX0ZBSUxVUkUoRVhQRUNUX0xUKDIsIDEpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZB
VEFMX0ZBSUxVUkUoQVNTRVJUX0xUKDIsIDEpIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotVEVTVChTdHJlYW1p
bmdBc3NlcnRpb25zVGVzdCwgU3RyaW5nc0VxdWFsKSB7Ci0gIEVYUEVDVF9TVFJFUSgiZm9vIiwg
ImZvbyIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfU1RSRVEoImZvbyIsICJm
b28iKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgRVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUo
RVhQRUNUX1NUUkVRKCJmb28iLCAiYmFyIikgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxf
RkFJTFVSRShBU1NFUlRfU1RSRVEoImZvbyIsICJiYXIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1Qo
U3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFN0cmluZ3NOb3RFcXVhbCkgewotICBFWFBFQ1RfU1RS
TkUoImZvbyIsICJiYXIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX1NUUk5F
KCJmb28iLCAiYmFyIikgPDwgInVuZXhwZWN0ZWQgZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRB
TF9GQUlMVVJFKEVYUEVDVF9TVFJORSgiZm9vIiwgImZvbyIpIDw8ICJleHBlY3RlZCBmYWlsdXJl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQ
RUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1NUUk5FKCJmb28iLCAiZm9vIikgPDwgImV4cGVjdGVk
IGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIpOwot
fQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBTdHJpbmdzRXF1YWxJZ25vcmluZ0Nh
c2UpIHsKLSAgRVhQRUNUX1NUUkNBU0VFUSgiZm9vIiwgIkZPTyIpIDw8ICJ1bmV4cGVjdGVkIGZh
aWx1cmUiOwotICBBU1NFUlRfU1RSQ0FTRUVRKCJmb28iLCAiRk9PIikgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9TVFJDQVNFRVEoImZv
byIsICJiYXIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9T
VFJDQVNFRVEoImZvbyIsICJiYXIiKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIik7Ci19Ci0KLVRFU1QoU3RyZWFtaW5nQXNz
ZXJ0aW9uc1Rlc3QsIFN0cmluZ05vdEVxdWFsSWdub3JpbmdDYXNlKSB7Ci0gIEVYUEVDVF9TVFJD
QVNFTkUoImZvbyIsICJiYXIiKSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAgQVNTRVJUX1NU
UkNBU0VORSgiZm9vIiwgImJhciIpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1Rf
Tk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfU1RSQ0FTRU5FKCJmb28iLCAiRk9PIikgPDwgImV4cGVj
dGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVy
ZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfU1RSQ0FTRU5FKCJiYXIiLCAiQkFS
IikgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgZmFpbHVyZSIpOwotfQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBGbG9hdGlu
Z1BvaW50RXF1YWxzKSB7Ci0gIEVYUEVDVF9GTE9BVF9FUSgxLjAsIDEuMCkgPDwgInVuZXhwZWN0
ZWQgZmFpbHVyZSI7Ci0gIEFTU0VSVF9GTE9BVF9FUSgxLjAsIDEuMCkgPDwgInVuZXhwZWN0ZWQg
ZmFpbHVyZSI7Ci0gIEVYUEVDVF9OT05GQVRBTF9GQUlMVVJFKEVYUEVDVF9GTE9BVF9FUSgwLjAs
IDEuMCkgPDwgImV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShBU1NFUlRfRkxPQVRf
RVEoMC4wLCAxLjApIDw8ICJleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotI2lmIEdURVNUX0hBU19FWENFUFRJT05TCi0K
LVRFU1QoU3RyZWFtaW5nQXNzZXJ0aW9uc1Rlc3QsIFRocm93KSB7Ci0gIEVYUEVDVF9USFJPVyhU
aHJvd0FuSW50ZWdlcigpLCBpbnQpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRf
VEhST1coVGhyb3dBbkludGVnZXIoKSwgaW50KSA8PCAidW5leHBlY3RlZCBmYWlsdXJlIjsKLSAg
RVhQRUNUX05PTkZBVEFMX0ZBSUxVUkUoRVhQRUNUX1RIUk9XKFRocm93QW5JbnRlZ2VyKCksIGJv
b2wpIDw8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWlsdXJlIiwgImV4
cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoQVNTRVJUX1RIUk9XKFRo
cm93QW5JbnRlZ2VyKCksIGJvb2wpIDw8Ci0gICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCBmYWlsdXJlIiwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotVEVTVChTdHJlYW1pbmdBc3Nl
cnRpb25zVGVzdCwgTm9UaHJvdykgewotICBFWFBFQ1RfTk9fVEhST1coVGhyb3dOb3RoaW5nKCkp
IDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBBU1NFUlRfTk9fVEhST1coVGhyb3dOb3RoaW5n
KCkpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShF
WFBFQ1RfTk9fVEhST1coVGhyb3dBbkludGVnZXIoKSkgPDwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIpOwotICBFWFBFQ1Rf
RkFUQUxfRkFJTFVSRShBU1NFUlRfTk9fVEhST1coVGhyb3dBbkludGVnZXIoKSkgPDwKLSAgICAg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhaWx1cmUiLCAiZXhwZWN0ZWQgZmFpbHVyZSIp
OwotfQotCi1URVNUKFN0cmVhbWluZ0Fzc2VydGlvbnNUZXN0LCBBbnlUaHJvdykgewotICBFWFBF
Q1RfQU5ZX1RIUk9XKFRocm93QW5JbnRlZ2VyKCkpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1cmUiOwot
ICBBU1NFUlRfQU5ZX1RIUk9XKFRocm93QW5JbnRlZ2VyKCkpIDw8ICJ1bmV4cGVjdGVkIGZhaWx1
cmUiOwotICBFWFBFQ1RfTk9ORkFUQUxfRkFJTFVSRShFWFBFQ1RfQU5ZX1RIUk9XKFRocm93Tm90
aGluZygpKSA8PAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFpbHVyZSIs
ICJleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEFTU0VSVF9BTllf
VEhST1coVGhyb3dOb3RoaW5nKCkpIDw8Ci0gICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCBmYWlsdXJlIiwgImV4cGVjdGVkIGZhaWx1cmUiKTsKLX0KLQotI2VuZGlmICAvLyBHVEVTVF9I
QVNfRVhDRVBUSU9OUwotCi0vLyBUZXN0cyB0aGF0IEdvb2dsZSBUZXN0IGNvcnJlY3RseSBkZWNp
ZGVzIHdoZXRoZXIgdG8gdXNlIGNvbG9ycyBpbiB0aGUgb3V0cHV0LgotCi1URVNUKENvbG9yZWRP
dXRwdXRUZXN0LCBVc2VzQ29sb3JzV2hlbkdUZXN0Q29sb3JGbGFnSXNZZXMpIHsKLSAgR1RFU1Rf
RkxBRyhjb2xvcikgPSAieWVzIjsKLQotICBTZXRFbnYoIlRFUk0iLCAieHRlcm0iKTsgIC8vIFRF
Uk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7
ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKGZhbHNl
KSk7ICAvLyBTdGRvdXQgaXMgbm90IGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJkdW1iIik7
ICAvLyBURVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCi0gIEVYUEVDVF9UUlVFKFNob3VsZFVz
ZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLSAgRVhQRUNUX1RSVUUoU2hvdWxk
VXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCi19Ci0KLVRFU1QoQ29s
b3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuR1Rlc3RDb2xvckZsYWdJc0FsaWFzT2ZZZXMp
IHsKLSAgU2V0RW52KCJURVJNIiwgImR1bWIiKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNv
bG9ycy4KLQotICBHVEVTVF9GTEFHKGNvbG9yKSA9ICJUcnVlIjsKLSAgRVhQRUNUX1RSVUUoU2hv
dWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCi0KLSAgR1RFU1Rf
RkxBRyhjb2xvcikgPSAidCI7Ci0gIEVYUEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKGZhbHNlKSk7
ICAvLyBTdGRvdXQgaXMgbm90IGEgVFRZLgotCi0gIEdURVNUX0ZMQUcoY29sb3IpID0gIjEiOwot
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rkb3V0IGlzIG5vdCBh
IFRUWS4KLX0KLQotVEVTVChDb2xvcmVkT3V0cHV0VGVzdCwgVXNlc05vQ29sb3JXaGVuR1Rlc3RD
b2xvckZsYWdJc05vKSB7Ci0gIEdURVNUX0ZMQUcoY29sb3IpID0gIm5vIjsKLQotICBTZXRFbnYo
IlRFUk0iLCAieHRlcm0iKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfRkFM
U0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotICBFWFBFQ1Rf
RkFMU0UoU2hvdWxkVXNlQ29sb3IoZmFsc2UpKTsgIC8vIFN0ZG91dCBpcyBub3QgYSBUVFkuCi0K
LSAgU2V0RW52KCJURVJNIiwgImR1bWIiKTsgIC8vIFRFUk0gZG9lc24ndCBzdXBwb3J0IGNvbG9y
cy4KLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBh
IFRUWS4KLSAgRVhQRUNUX0ZBTFNFKFNob3VsZFVzZUNvbG9yKGZhbHNlKSk7ICAvLyBTdGRvdXQg
aXMgbm90IGEgVFRZLgotfQotCi1URVNUKENvbG9yZWRPdXRwdXRUZXN0LCBVc2VzTm9Db2xvcldo
ZW5HVGVzdENvbG9yRmxhZ0lzSW52YWxpZCkgewotICBTZXRFbnYoIlRFUk0iLCAieHRlcm0iKTsg
IC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotCi0gIEdURVNUX0ZMQUcoY29sb3IpID0gIkYiOwot
ICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgotCi0gIEdURVNUX0ZMQUcoY29sb3IpID0gIjAiOwotICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNl
Q29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotCi0gIEdURVNUX0ZMQUcoY29sb3Ip
ID0gInVua25vd24iOwotICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8g
U3Rkb3V0IGlzIGEgVFRZLgotfQotCi1URVNUKENvbG9yZWRPdXRwdXRUZXN0LCBVc2VzQ29sb3Jz
V2hlblN0ZG91dElzVHR5KSB7Ci0gIEdURVNUX0ZMQUcoY29sb3IpID0gImF1dG8iOwotCi0gIFNl
dEVudigiVEVSTSIsICJ4dGVybSIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVD
VF9GQUxTRShTaG91bGRVc2VDb2xvcihmYWxzZSkpOyAgLy8gU3Rkb3V0IGlzIG5vdCBhIFRUWS4K
LSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgICAvLyBTdGRvdXQgaXMgYSBU
VFkuCi19Ci0KLVRFU1QoQ29sb3JlZE91dHB1dFRlc3QsIFVzZXNDb2xvcnNXaGVuVGVybVN1cHBv
cnRzQ29sb3JzKSB7Ci0gIEdURVNUX0ZMQUcoY29sb3IpID0gImF1dG8iOwotCi0jaWYgR1RFU1Rf
T1NfV0lORE9XUwotICAvLyBPbiBXaW5kb3dzLCB3ZSBpZ25vcmUgdGhlIFRFUk0gdmFyaWFibGUg
YXMgaXQncyB1c3VhbGx5IG5vdCBzZXQuCi0KLSAgU2V0RW52KCJURVJNIiwgImR1bWIiKTsKLSAg
RVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgot
Ci0gIFNldEVudigiVEVSTSIsICIiKTsKLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1
ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ4dGVybSIpOwot
ICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFku
Ci0jZWxzZQotICAvLyBPbiBub24tV2luZG93cyBwbGF0Zm9ybXMsIHdlIHJlbHkgb24gVEVSTSB0
byBkZXRlcm1pbmUgaWYgdGhlCi0gIC8vIHRlcm1pbmFsIHN1cHBvcnRzIGNvbG9ycy4KLQotICBT
ZXRFbnYoIlRFUk0iLCAiZHVtYiIpOyAgLy8gVEVSTSBkb2Vzbid0IHN1cHBvcnQgY29sb3JzLgot
ICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZ
LgotCi0gIFNldEVudigiVEVSTSIsICJlbWFjcyIpOyAgLy8gVEVSTSBkb2Vzbid0IHN1cHBvcnQg
Y29sb3JzLgotICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0
IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ2dDEwMCIpOyAgLy8gVEVSTSBkb2Vzbid0
IHN1cHBvcnQgY29sb3JzLgotICBFWFBFQ1RfRkFMU0UoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAg
Ly8gU3Rkb3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ4dGVybS1tb25vIik7ICAv
LyBURVJNIGRvZXNuJ3Qgc3VwcG9ydCBjb2xvcnMuCi0gIEVYUEVDVF9GQUxTRShTaG91bGRVc2VD
b2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwgInh0
ZXJtIik7ICAvLyBURVJNIHN1cHBvcnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNl
Q29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ4
dGVybS1jb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9UUlVFKFNo
b3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLQotICBTZXRFbnYoIlRF
Uk0iLCAieHRlcm0tMjU2Y29sb3IiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBF
Q1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAg
U2V0RW52KCJURVJNIiwgInNjcmVlbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVY
UEVDVF9UUlVFKFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLQot
ICBTZXRFbnYoIlRFUk0iLCAic2NyZWVuLTI1NmNvbG9yIik7ICAvLyBURVJNIHN1cHBvcnRzIGNv
bG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ0bXV4Iik7ICAvLyBURVJNIHN1cHBvcnRzIGNv
bG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8gU3Rkb3V0IGlz
IGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJ0bXV4LTI1NmNvbG9yIik7ICAvLyBURVJNIHN1
cHBvcnRzIGNvbG9ycy4KLSAgRVhQRUNUX1RSVUUoU2hvdWxkVXNlQ29sb3IodHJ1ZSkpOyAgLy8g
U3Rkb3V0IGlzIGEgVFRZLgotCi0gIFNldEVudigiVEVSTSIsICJyeHZ0LXVuaWNvZGUiKTsgIC8v
IFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJVRShTaG91bGRVc2VDb2xvcih0cnVl
KSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJURVJNIiwgInJ4dnQtdW5pY29k
ZS0yNTZjb2xvciIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9UUlVFKFNo
b3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLQotICBTZXRFbnYoIlRF
Uk0iLCAibGludXgiKTsgIC8vIFRFUk0gc3VwcG9ydHMgY29sb3JzLgotICBFWFBFQ1RfVFJVRShT
aG91bGRVc2VDb2xvcih0cnVlKSk7ICAvLyBTdGRvdXQgaXMgYSBUVFkuCi0KLSAgU2V0RW52KCJU
RVJNIiwgImN5Z3dpbiIpOyAgLy8gVEVSTSBzdXBwb3J0cyBjb2xvcnMuCi0gIEVYUEVDVF9UUlVF
KFNob3VsZFVzZUNvbG9yKHRydWUpKTsgIC8vIFN0ZG91dCBpcyBhIFRUWS4KLSNlbmRpZiAgLy8g
R1RFU1RfT1NfV0lORE9XUwotfQotCi0vLyBWZXJpZmllcyB0aGF0IFN0YXRpY0Fzc2VydFR5cGVF
cSB3b3JrcyBpbiBhIG5hbWVzcGFjZSBzY29wZS4KLQotc3RhdGljIGJvb2wgZHVtbXkxIEdURVNU
X0FUVFJJQlVURV9VTlVTRURfID0gU3RhdGljQXNzZXJ0VHlwZUVxPGJvb2wsIGJvb2w+KCk7Ci1z
dGF0aWMgYm9vbCBkdW1teTIgR1RFU1RfQVRUUklCVVRFX1VOVVNFRF8gPQotICAgIFN0YXRpY0Fz
c2VydFR5cGVFcTxjb25zdCBpbnQsIGNvbnN0IGludD4oKTsKLQotLy8gVmVyaWZpZXMgdGhhdCBT
dGF0aWNBc3NlcnRUeXBlRXEgd29ya3MgaW4gYSBjbGFzcy4KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBTdGF0aWNBc3NlcnRUeXBlRXFUZXN0SGVscGVyIHsKLSBwdWJsaWM6Ci0gIFN0
YXRpY0Fzc2VydFR5cGVFcVRlc3RIZWxwZXIoKSB7IFN0YXRpY0Fzc2VydFR5cGVFcTxib29sLCBU
PigpOyB9Ci19OwotCi1URVNUKFN0YXRpY0Fzc2VydFR5cGVFcVRlc3QsIFdvcmtzSW5DbGFzcykg
ewotICBTdGF0aWNBc3NlcnRUeXBlRXFUZXN0SGVscGVyPGJvb2w+KCk7Ci19Ci0KLS8vIFZlcmlm
aWVzIHRoYXQgU3RhdGljQXNzZXJ0VHlwZUVxIHdvcmtzIGluc2lkZSBhIGZ1bmN0aW9uLgotCi10
eXBlZGVmIGludCBJbnRBbGlhczsKLQotVEVTVChTdGF0aWNBc3NlcnRUeXBlRXFUZXN0LCBDb21w
aWxlc0ZvckVxdWFsVHlwZXMpIHsKLSAgU3RhdGljQXNzZXJ0VHlwZUVxPGludCwgSW50QWxpYXM+
KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnQqLCBJbnRBbGlhcyo+KCk7Ci19Ci0KLVRFU1Qo
R2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcFRlc3QsIFJldHVybnNUaGVTdGFja1RyYWNl
KSB7Ci0gIHRlc3Rpbmc6OlVuaXRUZXN0KiBjb25zdCB1bml0X3Rlc3QgPSB0ZXN0aW5nOjpVbml0
VGVzdDo6R2V0SW5zdGFuY2UoKTsKLQotICAvLyBXZSBkb24ndCBoYXZlIGEgc3RhY2sgd2Fsa2Vy
IGluIEdvb2dsZSBUZXN0IHlldC4KLSAgRVhQRUNUX1NUUkVRKCIiLCBHZXRDdXJyZW50T3NTdGFj
a1RyYWNlRXhjZXB0VG9wKHVuaXRfdGVzdCwgMCkuY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgi
IiwgR2V0Q3VycmVudE9zU3RhY2tUcmFjZUV4Y2VwdFRvcCh1bml0X3Rlc3QsIDEpLmNfc3RyKCkp
OwotfQotCi1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFJldHVybnNGYWxzZVdoZW5UaGVy
ZUlzTm9GYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQUxTRShIYXNOb25mYXRhbEZhaWx1cmUoKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIEZhaWxGYXRhbGx5KCkgeyBGQUlMKCk7IH0KLQotVEVTVChIYXNOb25m
YXRhbEZhaWx1cmVUZXN0LCBSZXR1cm5zRmFsc2VXaGVuVGhlcmVJc09ubHlGYXRhbEZhaWx1cmUp
IHsKLSAgRmFpbEZhdGFsbHkoKTsKLSAgY29uc3QgYm9vbCBoYXNfbm9uZmF0YWxfZmFpbHVyZSA9
IEhhc05vbmZhdGFsRmFpbHVyZSgpOwotICBDbGVhckN1cnJlbnRUZXN0UGFydFJlc3VsdHMoKTsK
LSAgRVhQRUNUX0ZBTFNFKGhhc19ub25mYXRhbF9mYWlsdXJlKTsKLX0KLQotVEVTVChIYXNOb25m
YXRhbEZhaWx1cmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5UaGVyZUlzTm9uZmF0YWxGYWlsdXJlKSB7
Ci0gIEFERF9GQUlMVVJFKCk7Ci0gIGNvbnN0IGJvb2wgaGFzX25vbmZhdGFsX2ZhaWx1cmUgPSBI
YXNOb25mYXRhbEZhaWx1cmUoKTsKLSAgQ2xlYXJDdXJyZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0g
IEVYUEVDVF9UUlVFKGhhc19ub25mYXRhbF9mYWlsdXJlKTsKLX0KLQotVEVTVChIYXNOb25mYXRh
bEZhaWx1cmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5UaGVyZUFyZUZhdGFsQW5kTm9uZmF0YWxGYWls
dXJlcykgewotICBGYWlsRmF0YWxseSgpOwotICBBRERfRkFJTFVSRSgpOwotICBjb25zdCBib29s
IGhhc19ub25mYXRhbF9mYWlsdXJlID0gSGFzTm9uZmF0YWxGYWlsdXJlKCk7Ci0gIENsZWFyQ3Vy
cmVudFRlc3RQYXJ0UmVzdWx0cygpOwotICBFWFBFQ1RfVFJVRShoYXNfbm9uZmF0YWxfZmFpbHVy
ZSk7Ci19Ci0KLS8vIEEgd3JhcHBlciBmb3IgY2FsbGluZyBIYXNOb25mYXRhbEZhaWx1cmUgb3V0
c2lkZSBvZiBhIHRlc3QgYm9keS4KLXN0YXRpYyBib29sIEhhc05vbmZhdGFsRmFpbHVyZUhlbHBl
cigpIHsKLSAgcmV0dXJuIHRlc3Rpbmc6OlRlc3Q6Okhhc05vbmZhdGFsRmFpbHVyZSgpOwotfQot
Ci1URVNUKEhhc05vbmZhdGFsRmFpbHVyZVRlc3QsIFdvcmtzT3V0c2lkZU9mVGVzdEJvZHkpIHsK
LSAgRVhQRUNUX0ZBTFNFKEhhc05vbmZhdGFsRmFpbHVyZUhlbHBlcigpKTsKLX0KLQotVEVTVChI
YXNOb25mYXRhbEZhaWx1cmVUZXN0LCBXb3Jrc091dHNpZGVPZlRlc3RCb2R5MikgewotICBBRERf
RkFJTFVSRSgpOwotICBjb25zdCBib29sIGhhc19ub25mYXRhbF9mYWlsdXJlID0gSGFzTm9uZmF0
YWxGYWlsdXJlSGVscGVyKCk7Ci0gIENsZWFyQ3VycmVudFRlc3RQYXJ0UmVzdWx0cygpOwotICBF
WFBFQ1RfVFJVRShoYXNfbm9uZmF0YWxfZmFpbHVyZSk7Ci19Ci0KLVRFU1QoSGFzRmFpbHVyZVRl
c3QsIFJldHVybnNGYWxzZVdoZW5UaGVyZUlzTm9GYWlsdXJlKSB7Ci0gIEVYUEVDVF9GQUxTRShI
YXNGYWlsdXJlKCkpOwotfQotCi1URVNUKEhhc0ZhaWx1cmVUZXN0LCBSZXR1cm5zVHJ1ZVdoZW5U
aGVyZUlzRmF0YWxGYWlsdXJlKSB7Ci0gIEZhaWxGYXRhbGx5KCk7Ci0gIGNvbnN0IGJvb2wgaGFz
X2ZhaWx1cmUgPSBIYXNGYWlsdXJlKCk7Ci0gIENsZWFyQ3VycmVudFRlc3RQYXJ0UmVzdWx0cygp
OwotICBFWFBFQ1RfVFJVRShoYXNfZmFpbHVyZSk7Ci19Ci0KLVRFU1QoSGFzRmFpbHVyZVRlc3Qs
IFJldHVybnNUcnVlV2hlblRoZXJlSXNOb25mYXRhbEZhaWx1cmUpIHsKLSAgQUREX0ZBSUxVUkUo
KTsKLSAgY29uc3QgYm9vbCBoYXNfZmFpbHVyZSA9IEhhc0ZhaWx1cmUoKTsKLSAgQ2xlYXJDdXJy
ZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0gIEVYUEVDVF9UUlVFKGhhc19mYWlsdXJlKTsKLX0KLQot
VEVTVChIYXNGYWlsdXJlVGVzdCwgUmV0dXJuc1RydWVXaGVuVGhlcmVBcmVGYXRhbEFuZE5vbmZh
dGFsRmFpbHVyZXMpIHsKLSAgRmFpbEZhdGFsbHkoKTsKLSAgQUREX0ZBSUxVUkUoKTsKLSAgY29u
c3QgYm9vbCBoYXNfZmFpbHVyZSA9IEhhc0ZhaWx1cmUoKTsKLSAgQ2xlYXJDdXJyZW50VGVzdFBh
cnRSZXN1bHRzKCk7Ci0gIEVYUEVDVF9UUlVFKGhhc19mYWlsdXJlKTsKLX0KLQotLy8gQSB3cmFw
cGVyIGZvciBjYWxsaW5nIEhhc0ZhaWx1cmUgb3V0c2lkZSBvZiBhIHRlc3QgYm9keS4KLXN0YXRp
YyBib29sIEhhc0ZhaWx1cmVIZWxwZXIoKSB7IHJldHVybiB0ZXN0aW5nOjpUZXN0OjpIYXNGYWls
dXJlKCk7IH0KLQotVEVTVChIYXNGYWlsdXJlVGVzdCwgV29ya3NPdXRzaWRlT2ZUZXN0Qm9keSkg
ewotICBFWFBFQ1RfRkFMU0UoSGFzRmFpbHVyZUhlbHBlcigpKTsKLX0KLQotVEVTVChIYXNGYWls
dXJlVGVzdCwgV29ya3NPdXRzaWRlT2ZUZXN0Qm9keTIpIHsKLSAgQUREX0ZBSUxVUkUoKTsKLSAg
Y29uc3QgYm9vbCBoYXNfZmFpbHVyZSA9IEhhc0ZhaWx1cmVIZWxwZXIoKTsKLSAgQ2xlYXJDdXJy
ZW50VGVzdFBhcnRSZXN1bHRzKCk7Ci0gIEVYUEVDVF9UUlVFKGhhc19mYWlsdXJlKTsKLX0KLQot
Y2xhc3MgVGVzdExpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2ZW50TGlzdGVuZXIgewotIHB1
YmxpYzoKLSAgVGVzdExpc3RlbmVyKCkgOiBvbl9zdGFydF9jb3VudGVyXyhOVUxMKSwgaXNfZGVz
dHJveWVkXyhOVUxMKSB7fQotICBUZXN0TGlzdGVuZXIoaW50KiBvbl9zdGFydF9jb3VudGVyLCBi
b29sKiBpc19kZXN0cm95ZWQpCi0gICAgICA6IG9uX3N0YXJ0X2NvdW50ZXJfKG9uX3N0YXJ0X2Nv
dW50ZXIpLAotICAgICAgICBpc19kZXN0cm95ZWRfKGlzX2Rlc3Ryb3llZCkge30KLQotICB2aXJ0
dWFsIH5UZXN0TGlzdGVuZXIoKSB7Ci0gICAgaWYgKGlzX2Rlc3Ryb3llZF8pCi0gICAgICAqaXNf
ZGVzdHJveWVkXyA9IHRydWU7Ci0gIH0KLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIE9u
VGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIGlm
IChvbl9zdGFydF9jb3VudGVyXyAhPSBOVUxMKQotICAgICAgKCpvbl9zdGFydF9jb3VudGVyXykr
KzsKLSAgfQotCi0gcHJpdmF0ZToKLSAgaW50KiBvbl9zdGFydF9jb3VudGVyXzsKLSAgYm9vbCog
aXNfZGVzdHJveWVkXzsKLX07Ci0KLS8vIFRlc3RzIHRoZSBjb25zdHJ1Y3Rvci4KLVRFU1QoVGVz
dEV2ZW50TGlzdGVuZXJzVGVzdCwgQ29uc3RydWN0aW9uV29ya3MpIHsKLSAgVGVzdEV2ZW50TGlz
dGVuZXJzIGxpc3RlbmVyczsKLQotICBFWFBFQ1RfVFJVRShUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nl
c3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycykgIT0gTlVMTCk7Ci0gIEVYUEVDVF9UUlVFKGxp
c3RlbmVycy5kZWZhdWx0X3Jlc3VsdF9wcmludGVyKCkgPT0gTlVMTCk7Ci0gIEVYUEVDVF9UUlVF
KGxpc3RlbmVycy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSA9PSBOVUxMKTsKLX0KLQotLy8gVGVz
dHMgdGhhdCB0aGUgVGVzdEV2ZW50TGlzdGVuZXJzIGRlc3RydWN0b3IgZGVsZXRlcyBhbGwgdGhl
IGxpc3RlbmVycyBpdAotLy8gb3ducy4KLVRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgRGVz
dHJ1Y3Rpb25Xb3JrcykgewotICBib29sIGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfaXNfZGVzdHJv
eWVkID0gZmFsc2U7Ci0gIGJvb2wgZGVmYXVsdF94bWxfcHJpbnRlcl9pc19kZXN0cm95ZWQgPSBm
YWxzZTsKLSAgYm9vbCBleHRyYV9saXN0ZW5lcl9pc19kZXN0cm95ZWQgPSBmYWxzZTsKLSAgVGVz
dExpc3RlbmVyKiBkZWZhdWx0X3Jlc3VsdF9wcmludGVyID0gbmV3IFRlc3RMaXN0ZW5lcigKLSAg
ICAgIE5VTEwsICZkZWZhdWx0X3Jlc3VsdF9wcmludGVyX2lzX2Rlc3Ryb3llZCk7Ci0gIFRlc3RM
aXN0ZW5lciogZGVmYXVsdF94bWxfcHJpbnRlciA9IG5ldyBUZXN0TGlzdGVuZXIoCi0gICAgICBO
VUxMLCAmZGVmYXVsdF94bWxfcHJpbnRlcl9pc19kZXN0cm95ZWQpOwotICBUZXN0TGlzdGVuZXIq
IGV4dHJhX2xpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcigKLSAgICAgIE5VTEwsICZleHRyYV9s
aXN0ZW5lcl9pc19kZXN0cm95ZWQpOwotCi0gIHsKLSAgICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlz
dGVuZXJzOwotICAgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0UmVzdWx0
UHJpbnRlcigmbGlzdGVuZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3Jlc3VsdF9wcmludGVyKTsKLSAgICBUZXN0RXZl
bnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6U2V0RGVmYXVsdFhtbEdlbmVyYXRvcigmbGlzdGVuZXJzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRfeG1sX3ByaW50ZXIpOwotICAgIGxpc3RlbmVycy5BcHBlbmQoZXh0cmFfbGlzdGVuZXIp
OwotICB9Ci0gIEVYUEVDVF9UUlVFKGRlZmF1bHRfcmVzdWx0X3ByaW50ZXJfaXNfZGVzdHJveWVk
KTsKLSAgRVhQRUNUX1RSVUUoZGVmYXVsdF94bWxfcHJpbnRlcl9pc19kZXN0cm95ZWQpOwotICBF
WFBFQ1RfVFJVRShleHRyYV9saXN0ZW5lcl9pc19kZXN0cm95ZWQpOwotfQotCi0vLyBUZXN0cyB0
aGF0IGEgbGlzdGVuZXIgQXBwZW5kJ2VkIHRvIGEgVGVzdEV2ZW50TGlzdGVuZXJzIGxpc3Qgc3Rh
cnRzCi0vLyByZWNlaXZpbmcgZXZlbnRzLgotVEVTVChUZXN0RXZlbnRMaXN0ZW5lcnNUZXN0LCBB
cHBlbmQpIHsKLSAgaW50IG9uX3N0YXJ0X2NvdW50ZXIgPSAwOwotICBib29sIGlzX2Rlc3Ryb3ll
ZCA9IGZhbHNlOwotICBUZXN0TGlzdGVuZXIqIGxpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcigm
b25fc3RhcnRfY291bnRlciwgJmlzX2Rlc3Ryb3llZCk7Ci0gIHsKLSAgICBUZXN0RXZlbnRMaXN0
ZW5lcnMgbGlzdGVuZXJzOwotICAgIGxpc3RlbmVycy5BcHBlbmQobGlzdGVuZXIpOwotICAgIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+T25UZXN0
UHJvZ3JhbVN0YXJ0KAotICAgICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwotICAgIEVY
UEVDVF9FUSgxLCBvbl9zdGFydF9jb3VudGVyKTsKLSAgfQotICBFWFBFQ1RfVFJVRShpc19kZXN0
cm95ZWQpOwotfQotCi0vLyBUZXN0cyB0aGF0IGxpc3RlbmVycyByZWNlaXZlIGV2ZW50cyBpbiB0
aGUgb3JkZXIgdGhleSB3ZXJlIGFwcGVuZGVkIHRvCi0vLyB0aGUgbGlzdCwgZXhjZXB0IGZvciAq
RW5kIHJlcXVlc3RzLCB3aGljaCBtdXN0IGJlIHJlY2VpdmVkIGluIHRoZSByZXZlcnNlCi0vLyBv
cmRlci4KLWNsYXNzIFNlcXVlbmNlVGVzdGluZ0xpc3RlbmVyIDogcHVibGljIEVtcHR5VGVzdEV2
ZW50TGlzdGVuZXIgewotIHB1YmxpYzoKLSAgU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIoc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+KiB2ZWN0b3IsIGNvbnN0IGNoYXIqIGlkKQotICAgICAgOiB2ZWN0
b3JfKHZlY3RvciksIGlkXyhpZCkge30KLQotIHByb3RlY3RlZDoKLSAgdmlydHVhbCB2b2lkIE9u
VGVzdFByb2dyYW1TdGFydChjb25zdCBVbml0VGVzdCYgLyp1bml0X3Rlc3QqLykgewotICAgIHZl
Y3Rvcl8tPnB1c2hfYmFjayhHZXRFdmVudERlc2NyaXB0aW9uKCJPblRlc3RQcm9ncmFtU3RhcnQi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0UHJvZ3JhbUVuZChjb25zdCBVbml0VGVz
dCYgLyp1bml0X3Rlc3QqLykgewotICAgIHZlY3Rvcl8tPnB1c2hfYmFjayhHZXRFdmVudERlc2Ny
aXB0aW9uKCJPblRlc3RQcm9ncmFtRW5kIikpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIE9uVGVz
dEl0ZXJhdGlvblN0YXJ0KGNvbnN0IFVuaXRUZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IC8qaXRlcmF0aW9uKi8pIHsKLSAgICB2ZWN0
b3JfLT5wdXNoX2JhY2soR2V0RXZlbnREZXNjcmlwdGlvbigiT25UZXN0SXRlcmF0aW9uU3RhcnQi
KSk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgT25UZXN0SXRlcmF0aW9uRW5kKGNvbnN0IFVuaXRU
ZXN0JiAvKnVuaXRfdGVzdCovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAvKml0ZXJhdGlvbiovKSB7Ci0gICAgdmVjdG9yXy0+cHVzaF9iYWNrKEdldEV2ZW50RGVzY3Jp
cHRpb24oIk9uVGVzdEl0ZXJhdGlvbkVuZCIpKTsKLSAgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpz
dHJpbmcgR2V0RXZlbnREZXNjcmlwdGlvbihjb25zdCBjaGFyKiBtZXRob2QpIHsKLSAgICBNZXNz
YWdlIG1lc3NhZ2U7Ci0gICAgbWVzc2FnZSA8PCBpZF8gPDwgIi4iIDw8IG1ldGhvZDsKLSAgICBy
ZXR1cm4gbWVzc2FnZS5HZXRTdHJpbmcoKTsKLSAgfQotCi0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiogdmVjdG9yXzsKLSAgY29uc3QgY2hhciogY29uc3QgaWRfOwotCi0gIEdURVNUX0RJU0FM
TE9XX0NPUFlfQU5EX0FTU0lHTl8oU2VxdWVuY2VUZXN0aW5nTGlzdGVuZXIpOwotfTsKLQotVEVT
VChFdmVudExpc3RlbmVyVGVzdCwgQXBwZW5kS2VlcHNPcmRlcikgewotICBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gdmVjOwotICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwotICBsaXN0
ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMXN0IikpOwot
ICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVjLCAiMm5k
IikpOwotICBsaXN0ZW5lcnMuQXBwZW5kKG5ldyBTZXF1ZW5jZVRlc3RpbmdMaXN0ZW5lcigmdmVj
LCAiM3JkIikpOwotCi0gIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigm
bGlzdGVuZXJzKS0+T25UZXN0UHJvZ3JhbVN0YXJ0KAotICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0
YW5jZSgpKTsKLSAgQVNTRVJUX0VRKDNVLCB2ZWMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIx
c3QuT25UZXN0UHJvZ3JhbVN0YXJ0IiwgdmVjWzBdLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEo
IjJuZC5PblRlc3RQcm9ncmFtU3RhcnQiLCB2ZWNbMV0uY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJF
USgiM3JkLk9uVGVzdFByb2dyYW1TdGFydCIsIHZlY1syXS5jX3N0cigpKTsKLQotICB2ZWMuY2xl
YXIoKTsKLSAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5l
cnMpLT5PblRlc3RQcm9ncmFtRW5kKAotICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsK
LSAgQVNTRVJUX0VRKDNVLCB2ZWMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIzcmQuT25UZXN0
UHJvZ3JhbUVuZCIsIHZlY1swXS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIybmQuT25UZXN0
UHJvZ3JhbUVuZCIsIHZlY1sxXS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIxc3QuT25UZXN0
UHJvZ3JhbUVuZCIsIHZlY1syXS5jX3N0cigpKTsKLQotICB2ZWMuY2xlYXIoKTsKLSAgVGVzdEV2
ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RJdGVy
YXRpb25TdGFydCgKLSAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSwgMCk7Ci0gIEFTU0VS
VF9FUSgzVSwgdmVjLnNpemUoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMXN0Lk9uVGVzdEl0ZXJhdGlv
blN0YXJ0IiwgdmVjWzBdLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIjJuZC5PblRlc3RJdGVy
YXRpb25TdGFydCIsIHZlY1sxXS5jX3N0cigpKTsKLSAgRVhQRUNUX1NUUkVRKCIzcmQuT25UZXN0
SXRlcmF0aW9uU3RhcnQiLCB2ZWNbMl0uY19zdHIoKSk7Ci0KLSAgdmVjLmNsZWFyKCk7Ci0gIFRl
c3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBlYXRlcigmbGlzdGVuZXJzKS0+T25UZXN0
SXRlcmF0aW9uRW5kKAotICAgICAgKlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLCAwKTsKLSAgQVNT
RVJUX0VRKDNVLCB2ZWMuc2l6ZSgpKTsKLSAgRVhQRUNUX1NUUkVRKCIzcmQuT25UZXN0SXRlcmF0
aW9uRW5kIiwgdmVjWzBdLmNfc3RyKCkpOwotICBFWFBFQ1RfU1RSRVEoIjJuZC5PblRlc3RJdGVy
YXRpb25FbmQiLCB2ZWNbMV0uY19zdHIoKSk7Ci0gIEVYUEVDVF9TVFJFUSgiMXN0Lk9uVGVzdEl0
ZXJhdGlvbkVuZCIsIHZlY1syXS5jX3N0cigpKTsKLX0KLQotLy8gVGVzdHMgdGhhdCBhIGxpc3Rl
bmVyIHJlbW92ZWQgZnJvbSBhIFRlc3RFdmVudExpc3RlbmVycyBsaXN0IHN0b3BzIHJlY2Vpdmlu
ZwotLy8gZXZlbnRzIGFuZCBpcyBub3QgZGVsZXRlZCB3aGVuIHRoZSBsaXN0IGlzIGRlc3Ryb3ll
ZC4KLVRFU1QoVGVzdEV2ZW50TGlzdGVuZXJzVGVzdCwgUmVsZWFzZSkgewotICBpbnQgb25fc3Rh
cnRfY291bnRlciA9IDA7Ci0gIGJvb2wgaXNfZGVzdHJveWVkID0gZmFsc2U7Ci0gIC8vIEFsdGhv
dWdoIEFwcGVuZCBwYXNzZXMgdGhlIG93bmVyc2hpcCBvZiB0aGlzIG9iamVjdCB0byB0aGUgbGlz
dCwKLSAgLy8gdGhlIGZvbGxvd2luZyBjYWxscyByZWxlYXNlIGl0LCBhbmQgd2UgbmVlZCB0byBk
ZWxldGUgaXQgYmVmb3JlIHRoZQotICAvLyB0ZXN0IGVuZHMuCi0gIFRlc3RMaXN0ZW5lciogbGlz
dGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9jb3VudGVyLCAmaXNfZGVzdHJveWVk
KTsKLSAgewotICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7Ci0gICAgbGlzdGVuZXJz
LkFwcGVuZChsaXN0ZW5lcik7Ci0gICAgRVhQRUNUX0VRKGxpc3RlbmVyLCBsaXN0ZW5lcnMuUmVs
ZWFzZShsaXN0ZW5lcikpOwotICAgIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpHZXRSZXBl
YXRlcigmbGlzdGVuZXJzKS0+T25UZXN0UHJvZ3JhbVN0YXJ0KAotICAgICAgICAqVW5pdFRlc3Q6
OkdldEluc3RhbmNlKCkpOwotICAgIEVYUEVDVF9UUlVFKGxpc3RlbmVycy5SZWxlYXNlKGxpc3Rl
bmVyKSA9PSBOVUxMKTsKLSAgfQotICBFWFBFQ1RfRVEoMCwgb25fc3RhcnRfY291bnRlcik7Ci0g
IEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQpOwotICBkZWxldGUgbGlzdGVuZXI7Ci19Ci0KLS8v
IFRlc3RzIHRoYXQgbm8gZXZlbnRzIGFyZSBmb3J3YXJkZWQgd2hlbiBldmVudCBmb3J3YXJkaW5n
IGlzIGRpc2FibGVkLgotVEVTVChFdmVudExpc3RlbmVyVGVzdCwgU3VwcHJlc3NFdmVudEZvcndh
cmRpbmcpIHsKLSAgaW50IG9uX3N0YXJ0X2NvdW50ZXIgPSAwOwotICBUZXN0TGlzdGVuZXIqIGxp
c3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcigmb25fc3RhcnRfY291bnRlciwgTlVMTCk7Ci0KLSAg
VGVzdEV2ZW50TGlzdGVuZXJzIGxpc3RlbmVyczsKLSAgbGlzdGVuZXJzLkFwcGVuZChsaXN0ZW5l
cik7Ci0gIEFTU0VSVF9UUlVFKFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpFdmVudEZvcndh
cmRpbmdFbmFibGVkKGxpc3RlbmVycykpOwotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6
U3VwcHJlc3NFdmVudEZvcndhcmRpbmcoJmxpc3RlbmVycyk7Ci0gIEFTU0VSVF9GQUxTRShUZXN0
RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6RXZlbnRGb3J3YXJkaW5nRW5hYmxlZChsaXN0ZW5lcnMp
KTsKLSAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMp
LT5PblRlc3RQcm9ncmFtU3RhcnQoCi0gICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwot
ICBFWFBFQ1RfRVEoMCwgb25fc3RhcnRfY291bnRlcik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZXZl
bnRzIGdlbmVyYXRlZCBieSBHb29nbGUgVGVzdCBhcmUgbm90IGZvcndhcmRlZCBpbgotLy8gZGVh
dGggdGVzdCBzdWJwcm9jZXNzZXMuCi1URVNUKEV2ZW50TGlzdGVuZXJEZWF0aFRlc3QsIEV2ZW50
c05vdEZvcndhcmRlZEluRGVhdGhUZXN0U3VicHJlY2Vzc2VzKSB7Ci0gIEVYUEVDVF9ERUFUSF9J
Rl9TVVBQT1JURUQoewotICAgICAgR1RFU1RfQ0hFQ0tfKFRlc3RFdmVudExpc3RlbmVyc0FjY2Vz
c29yOjpFdmVudEZvcndhcmRpbmdFbmFibGVkKAotICAgICAgICAgICpHZXRVbml0VGVzdEltcGwo
KS0+bGlzdGVuZXJzKCkpKSA8PCAiZXhwZWN0ZWQgZmFpbHVyZSI7fSwKLSAgICAgICJleHBlY3Rl
ZCBmYWlsdXJlIik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYSBsaXN0ZW5lciBpbnN0YWxsZWQgdmlh
IFNldERlZmF1bHRSZXN1bHRQcmludGVyKCkgc3RhcnRzCi0vLyByZWNlaXZpbmcgZXZlbnRzIGFu
ZCBpcyByZXR1cm5lZCB2aWEgZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpIGFuZCB0aGF0Ci0vLyB0
aGUgcHJldmlvdXMgZGVmYXVsdF9yZXN1bHRfcHJpbnRlciBpcyByZW1vdmVkIGZyb20gdGhlIGxp
c3QgYW5kIGRlbGV0ZWQuCi1URVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBkZWZhdWx0X3Jlc3VsdF9w
cmludGVyKSB7Ci0gIGludCBvbl9zdGFydF9jb3VudGVyID0gMDsKLSAgYm9vbCBpc19kZXN0cm95
ZWQgPSBmYWxzZTsKLSAgVGVzdExpc3RlbmVyKiBsaXN0ZW5lciA9IG5ldyBUZXN0TGlzdGVuZXIo
Jm9uX3N0YXJ0X2NvdW50ZXIsICZpc19kZXN0cm95ZWQpOwotCi0gIFRlc3RFdmVudExpc3RlbmVy
cyBsaXN0ZW5lcnM7Ci0gIFRlc3RFdmVudExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0UmVz
dWx0UHJpbnRlcigmbGlzdGVuZXJzLCBsaXN0ZW5lcik7Ci0KLSAgRVhQRUNUX0VRKGxpc3RlbmVy
LCBsaXN0ZW5lcnMuZGVmYXVsdF9yZXN1bHRfcHJpbnRlcigpKTsKLQotICBUZXN0RXZlbnRMaXN0
ZW5lcnNBY2Nlc3Nvcjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFy
dCgKLSAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2UoKSk7Ci0KLSAgRVhQRUNUX0VRKDEsIG9u
X3N0YXJ0X2NvdW50ZXIpOwotCi0gIC8vIFJlcGxhY2luZyBkZWZhdWx0X3Jlc3VsdF9wcmludGVy
IHdpdGggc29tZXRoaW5nIGVsc2Ugc2hvdWxkIHJlbW92ZSBpdAotICAvLyBmcm9tIHRoZSBsaXN0
IGFuZCBkZXN0cm95IGl0LgotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6U2V0RGVmYXVs
dFJlc3VsdFByaW50ZXIoJmxpc3RlbmVycywgTlVMTCk7Ci0KLSAgRVhQRUNUX1RSVUUobGlzdGVu
ZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSA9PSBOVUxMKTsKLSAgRVhQRUNUX1RSVUUoaXNf
ZGVzdHJveWVkKTsKLQotICAvLyBBZnRlciBicm9hZGNhc3RpbmcgYW4gZXZlbnQgdGhlIGNvdW50
ZXIgaXMgc3RpbGwgdGhlIHNhbWUsIGluZGljYXRpbmcKLSAgLy8gdGhlIGxpc3RlbmVyIGlzIG5v
dCBpbiB0aGUgbGlzdCBhbnltb3JlLgotICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6R2V0
UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKLSAgICAgICpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKSk7Ci0gIEVYUEVDVF9FUSgxLCBvbl9zdGFydF9jb3VudGVyKTsKLX0K
LQotLy8gVGVzdHMgdGhhdCB0aGUgZGVmYXVsdF9yZXN1bHRfcHJpbnRlciBsaXN0ZW5lciBzdG9w
cyByZWNlaXZpbmcgZXZlbnRzCi0vLyB3aGVuIHJlbW92ZWQgdmlhIFJlbGVhc2UgYW5kIHRoYXQg
aXMgbm90IG93bmVkIGJ5IHRoZSBsaXN0IGFueW1vcmUuCi1URVNUKEV2ZW50TGlzdGVuZXJUZXN0
LCBSZW1vdmluZ0RlZmF1bHRSZXN1bHRQcmludGVyV29ya3MpIHsKLSAgaW50IG9uX3N0YXJ0X2Nv
dW50ZXIgPSAwOwotICBib29sIGlzX2Rlc3Ryb3llZCA9IGZhbHNlOwotICAvLyBBbHRob3VnaCBB
cHBlbmQgcGFzc2VzIHRoZSBvd25lcnNoaXAgb2YgdGhpcyBvYmplY3QgdG8gdGhlIGxpc3QsCi0g
IC8vIHRoZSBmb2xsb3dpbmcgY2FsbHMgcmVsZWFzZSBpdCwgYW5kIHdlIG5lZWQgdG8gZGVsZXRl
IGl0IGJlZm9yZSB0aGUKLSAgLy8gdGVzdCBlbmRzLgotICBUZXN0TGlzdGVuZXIqIGxpc3RlbmVy
ID0gbmV3IFRlc3RMaXN0ZW5lcigmb25fc3RhcnRfY291bnRlciwgJmlzX2Rlc3Ryb3llZCk7Ci0g
IHsKLSAgICBUZXN0RXZlbnRMaXN0ZW5lcnMgbGlzdGVuZXJzOwotICAgIFRlc3RFdmVudExpc3Rl
bmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0UmVzdWx0UHJpbnRlcigmbGlzdGVuZXJzLCBsaXN0ZW5l
cik7Ci0KLSAgICBFWFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVy
KSk7Ci0gICAgRVhQRUNUX1RSVUUobGlzdGVuZXJzLmRlZmF1bHRfcmVzdWx0X3ByaW50ZXIoKSA9
PSBOVUxMKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNfZGVzdHJveWVkKTsKLQotICAgIC8vIEJyb2Fk
Y2FzdGluZyBldmVudHMgbm93IHNob3VsZCBub3QgYWZmZWN0IGRlZmF1bHRfcmVzdWx0X3ByaW50
ZXIuCi0gICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5l
cnMpLT5PblRlc3RQcm9ncmFtU3RhcnQoCi0gICAgICAgICpVbml0VGVzdDo6R2V0SW5zdGFuY2Uo
KSk7Ci0gICAgRVhQRUNUX0VRKDAsIG9uX3N0YXJ0X2NvdW50ZXIpOwotICB9Ci0gIC8vIERlc3Ry
b3lpbmcgdGhlIGxpc3Qgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGxpc3RlbmVyIG5vdywgdG9vLgot
ICBFWFBFQ1RfRkFMU0UoaXNfZGVzdHJveWVkKTsKLSAgZGVsZXRlIGxpc3RlbmVyOwotfQotCi0v
LyBUZXN0cyB0aGF0IGEgbGlzdGVuZXIgaW5zdGFsbGVkIHZpYSBTZXREZWZhdWx0WG1sR2VuZXJh
dG9yKCkgc3RhcnRzCi0vLyByZWNlaXZpbmcgZXZlbnRzIGFuZCBpcyByZXR1cm5lZCB2aWEgZGVm
YXVsdF94bWxfZ2VuZXJhdG9yKCkgYW5kIHRoYXQKLS8vIHRoZSBwcmV2aW91cyBkZWZhdWx0X3ht
bF9nZW5lcmF0b3IgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0IGFuZCBkZWxldGVkLgotVEVTVChF
dmVudExpc3RlbmVyVGVzdCwgZGVmYXVsdF94bWxfZ2VuZXJhdG9yKSB7Ci0gIGludCBvbl9zdGFy
dF9jb3VudGVyID0gMDsKLSAgYm9vbCBpc19kZXN0cm95ZWQgPSBmYWxzZTsKLSAgVGVzdExpc3Rl
bmVyKiBsaXN0ZW5lciA9IG5ldyBUZXN0TGlzdGVuZXIoJm9uX3N0YXJ0X2NvdW50ZXIsICZpc19k
ZXN0cm95ZWQpOwotCi0gIFRlc3RFdmVudExpc3RlbmVycyBsaXN0ZW5lcnM7Ci0gIFRlc3RFdmVu
dExpc3RlbmVyc0FjY2Vzc29yOjpTZXREZWZhdWx0WG1sR2VuZXJhdG9yKCZsaXN0ZW5lcnMsIGxp
c3RlbmVyKTsKLQotICBFWFBFQ1RfRVEobGlzdGVuZXIsIGxpc3RlbmVycy5kZWZhdWx0X3htbF9n
ZW5lcmF0b3IoKSk7Ci0KLSAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVy
KCZsaXN0ZW5lcnMpLT5PblRlc3RQcm9ncmFtU3RhcnQoCi0gICAgICAqVW5pdFRlc3Q6OkdldElu
c3RhbmNlKCkpOwotCi0gIEVYUEVDVF9FUSgxLCBvbl9zdGFydF9jb3VudGVyKTsKLQotICAvLyBS
ZXBsYWNpbmcgZGVmYXVsdF94bWxfZ2VuZXJhdG9yIHdpdGggc29tZXRoaW5nIGVsc2Ugc2hvdWxk
IHJlbW92ZSBpdAotICAvLyBmcm9tIHRoZSBsaXN0IGFuZCBkZXN0cm95IGl0LgotICBUZXN0RXZl
bnRMaXN0ZW5lcnNBY2Nlc3Nvcjo6U2V0RGVmYXVsdFhtbEdlbmVyYXRvcigmbGlzdGVuZXJzLCBO
VUxMKTsKLQotICBFWFBFQ1RfVFJVRShsaXN0ZW5lcnMuZGVmYXVsdF94bWxfZ2VuZXJhdG9yKCkg
PT0gTlVMTCk7Ci0gIEVYUEVDVF9UUlVFKGlzX2Rlc3Ryb3llZCk7Ci0KLSAgLy8gQWZ0ZXIgYnJv
YWRjYXN0aW5nIGFuIGV2ZW50IHRoZSBjb3VudGVyIGlzIHN0aWxsIHRoZSBzYW1lLCBpbmRpY2F0
aW5nCi0gIC8vIHRoZSBsaXN0ZW5lciBpcyBub3QgaW4gdGhlIGxpc3QgYW55bW9yZS4KLSAgVGVz
dEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OkdldFJlcGVhdGVyKCZsaXN0ZW5lcnMpLT5PblRlc3RQ
cm9ncmFtU3RhcnQoCi0gICAgICAqVW5pdFRlc3Q6OkdldEluc3RhbmNlKCkpOwotICBFWFBFQ1Rf
RVEoMSwgb25fc3RhcnRfY291bnRlcik7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIGRlZmF1bHRf
eG1sX2dlbmVyYXRvciBsaXN0ZW5lciBzdG9wcyByZWNlaXZpbmcgZXZlbnRzCi0vLyB3aGVuIHJl
bW92ZWQgdmlhIFJlbGVhc2UgYW5kIHRoYXQgaXMgbm90IG93bmVkIGJ5IHRoZSBsaXN0IGFueW1v
cmUuCi1URVNUKEV2ZW50TGlzdGVuZXJUZXN0LCBSZW1vdmluZ0RlZmF1bHRYbWxHZW5lcmF0b3JX
b3JrcykgewotICBpbnQgb25fc3RhcnRfY291bnRlciA9IDA7Ci0gIGJvb2wgaXNfZGVzdHJveWVk
ID0gZmFsc2U7Ci0gIC8vIEFsdGhvdWdoIEFwcGVuZCBwYXNzZXMgdGhlIG93bmVyc2hpcCBvZiB0
aGlzIG9iamVjdCB0byB0aGUgbGlzdCwKLSAgLy8gdGhlIGZvbGxvd2luZyBjYWxscyByZWxlYXNl
IGl0LCBhbmQgd2UgbmVlZCB0byBkZWxldGUgaXQgYmVmb3JlIHRoZQotICAvLyB0ZXN0IGVuZHMu
Ci0gIFRlc3RMaXN0ZW5lciogbGlzdGVuZXIgPSBuZXcgVGVzdExpc3RlbmVyKCZvbl9zdGFydF9j
b3VudGVyLCAmaXNfZGVzdHJveWVkKTsKLSAgewotICAgIFRlc3RFdmVudExpc3RlbmVycyBsaXN0
ZW5lcnM7Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzQWNjZXNzb3I6OlNldERlZmF1bHRYbWxHZW5l
cmF0b3IoJmxpc3RlbmVycywgbGlzdGVuZXIpOwotCi0gICAgRVhQRUNUX0VRKGxpc3RlbmVyLCBs
aXN0ZW5lcnMuUmVsZWFzZShsaXN0ZW5lcikpOwotICAgIEVYUEVDVF9UUlVFKGxpc3RlbmVycy5k
ZWZhdWx0X3htbF9nZW5lcmF0b3IoKSA9PSBOVUxMKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNfZGVz
dHJveWVkKTsKLQotICAgIC8vIEJyb2FkY2FzdGluZyBldmVudHMgbm93IHNob3VsZCBub3QgYWZm
ZWN0IGRlZmF1bHRfeG1sX2dlbmVyYXRvci4KLSAgICBUZXN0RXZlbnRMaXN0ZW5lcnNBY2Nlc3Nv
cjo6R2V0UmVwZWF0ZXIoJmxpc3RlbmVycyktPk9uVGVzdFByb2dyYW1TdGFydCgKLSAgICAgICAg
KlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpKTsKLSAgICBFWFBFQ1RfRVEoMCwgb25fc3RhcnRfY291
bnRlcik7Ci0gIH0KLSAgLy8gRGVzdHJveWluZyB0aGUgbGlzdCBzaG91bGQgbm90IGFmZmVjdCB0
aGUgbGlzdGVuZXIgbm93LCB0b28uCi0gIEVYUEVDVF9GQUxTRShpc19kZXN0cm95ZWQpOwotICBk
ZWxldGUgbGlzdGVuZXI7Ci19Ci0KLS8vIFNhbml0eSB0ZXN0cyB0byBlbnN1cmUgdGhhdCB0aGUg
YWx0ZXJuYXRpdmUsIHZlcmJvc2Ugc3BlbGxpbmdzIG9mCi0vLyBzb21lIG9mIHRoZSBtYWNyb3Mg
d29yay4gIFdlIGRvbid0IHRlc3QgdGhlbSB0aG9yb3VnaGx5IGFzIHRoYXQKLS8vIHdvdWxkIGJl
IHF1aXRlIGludm9sdmVkLiAgU2luY2UgdGhlaXIgaW1wbGVtZW50YXRpb25zIGFyZQotLy8gc3Ry
YWlnaHRmb3J3YXJkLCBhbmQgdGhleSBhcmUgcmFyZWx5IHVzZWQsIHdlJ2xsIGp1c3QgcmVseSBv
biB0aGUKLS8vIHVzZXJzIHRvIHRlbGwgdXMgd2hlbiB0aGV5IGFyZSBicm9rZW4uCi1HVEVTVF9U
RVNUKEFsdGVybmF0aXZlTmFtZVRlc3QsIFdvcmtzKSB7ICAvLyBHVEVTVF9URVNUIGlzIHRoZSBz
YW1lIGFzIFRFU1QuCi0gIEdURVNUX1NVQ0NFRUQoKSA8PCAiT0siOyAgLy8gR1RFU1RfU1VDQ0VF
RCBpcyB0aGUgc2FtZSBhcyBTVUNDRUVELgotCi0gIC8vIEdURVNUX0ZBSUwgaXMgdGhlIHNhbWUg
YXMgRkFJTC4KLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1RfRkFJTCgpIDw8ICJBbiBleHBl
Y3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1
cmUiKTsKLQotICAvLyBHVEVTVF9BU1NFUlRfWFkgaXMgdGhlIHNhbWUgYXMgQVNTRVJUX1hZLgot
Ci0gIEdURVNUX0FTU0VSVF9FUSgwLCAwKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUoR1RFU1Rf
QVNTRVJUX0VRKDAsIDEpIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxVUkUo
R1RFU1RfQVNTRVJUX0VRKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKLQotICBHVEVTVF9BU1NFUlRf
TkUoMCwgMSk7Ci0gIEdURVNUX0FTU0VSVF9ORSgxLCAwKTsKLSAgRVhQRUNUX0ZBVEFMX0ZBSUxV
UkUoR1RFU1RfQVNTRVJUX05FKDAsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKLQotICBHVEVTVF9BU1NF
UlRfTEUoMCwgMCk7Ci0gIEdURVNUX0FTU0VSVF9MRSgwLCAxKTsKLSAgRVhQRUNUX0ZBVEFMX0ZB
SUxVUkUoR1RFU1RfQVNTRVJUX0xFKDEsIDApIDw8ICJBbiBleHBlY3RlZCBmYWlsdXJlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIkFuIGV4cGVjdGVkIGZhaWx1cmUiKTsKLQotICBHVEVTVF9B
U1NFUlRfTFQoMCwgMSk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VSVF9MVCgw
LCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICJB
biBleHBlY3RlZCBmYWlsdXJlIik7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FTU0VS
VF9MVCgxLCAwKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Ci0KLSAgR1RFU1RfQVNTRVJUX0dFKDAsIDApOwot
ICBHVEVTVF9BU1NFUlRfR0UoMSwgMCk7Ci0gIEVYUEVDVF9GQVRBTF9GQUlMVVJFKEdURVNUX0FT
U0VSVF9HRSgwLCAxKSA8PCAiQW4gZXhwZWN0ZWQgZmFpbHVyZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJBbiBleHBlY3RlZCBmYWlsdXJlIik7Ci0KLSAgR1RFU1RfQVNTRVJUX0dUKDEsIDAp
OwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMCwgMSkgPDwgIkFuIGV4
cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0ZWQgZmFp
bHVyZSIpOwotICBFWFBFQ1RfRkFUQUxfRkFJTFVSRShHVEVTVF9BU1NFUlRfR1QoMSwgMSkgPDwg
IkFuIGV4cGVjdGVkIGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXhwZWN0
ZWQgZmFpbHVyZSIpOwotfQotCi0vLyBUZXN0cyBmb3IgaW50ZXJuYWwgdXRpbGl0aWVzIG5lY2Vz
c2FyeSBmb3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIHVuaXZlcnNhbAotLy8gcHJpbnRpbmcuCi0v
LyBUT0RPKHZsYWRsQGdvb2dsZS5jb20pOiBGaW5kIGEgYmV0dGVyIGhvbWUgZm9yIHRoZW0uCi0K
LWNsYXNzIENvbnZlcnNpb25IZWxwZXJCYXNlIHt9OwotY2xhc3MgQ29udmVyc2lvbkhlbHBlckRl
cml2ZWQgOiBwdWJsaWMgQ29udmVyc2lvbkhlbHBlckJhc2Uge307Ci0KLS8vIFRlc3RzIHRoYXQg
SXNBUHJvdG9jb2xNZXNzYWdlPFQ+Ojp2YWx1ZSBpcyBhIGNvbXBpbGUtdGltZSBjb25zdGFudC4K
LVRFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc0NvbXBpbGVUaW1lQ29uc3RhbnQp
IHsKLSAgR1RFU1RfQ09NUElMRV9BU1NFUlRfKElzQVByb3RvY29sTWVzc2FnZTxQcm90b2NvbE1l
c3NhZ2U+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3RydWUpOwotICBH
VEVTVF9DT01QSUxFX0FTU0VSVF8oIUlzQVByb3RvY29sTWVzc2FnZTxpbnQ+Ojp2YWx1ZSwgY29u
c3RfZmFsc2UpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzQVByb3RvY29sTWVzc2FnZTxUPjo6dmFs
dWUgaXMgdHJ1ZSB3aGVuIFQgaXMKLS8vIHByb3RvMjo6TWVzc2FnZSBvciBhIHN1Yi1jbGFzcyBv
ZiBpdC4KLVRFU1QoSXNBUHJvdG9jb2xNZXNzYWdlVGVzdCwgVmFsdWVJc1RydWVXaGVuVHlwZUlz
QVByb3RvY29sTWVzc2FnZSkgewotICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3NhZ2U8IDo6
cHJvdG8yOjpNZXNzYWdlPjo6dmFsdWUpOwotICBFWFBFQ1RfVFJVRShJc0FQcm90b2NvbE1lc3Nh
Z2U8UHJvdG9jb2xNZXNzYWdlPjo6dmFsdWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IElzQVByb3Rv
Y29sTWVzc2FnZTxUPjo6dmFsdWUgaXMgZmFsc2Ugd2hlbiBUIGlzIG5laXRoZXIKLS8vIFByb3Rv
Y29sTWVzc2FnZSBub3IgYSBzdWItY2xhc3Mgb2YgaXQuCi1URVNUKElzQVByb3RvY29sTWVzc2Fn
ZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5UeXBlSXNOb3RBUHJvdG9jb2xNZXNzYWdlKSB7Ci0gIEVY
UEVDVF9GQUxTRShJc0FQcm90b2NvbE1lc3NhZ2U8aW50Pjo6dmFsdWUpOwotICBFWFBFQ1RfRkFM
U0UoSXNBUHJvdG9jb2xNZXNzYWdlPGNvbnN0IENvbnZlcnNpb25IZWxwZXJCYXNlPjo6dmFsdWUp
OwotfQotCi0vLyBUZXN0cyB0aGF0IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsIGNvbXBpbGVzIHdo
ZW4gdGhlIHR5cGUgYXJndW1lbnRzIGFyZQotLy8gZXF1YWwuCi1URVNUKENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsLCBDb21waWxlc1doZW5UeXBlc0FyZUVxdWFsKSB7Ci0gIENvbXBpbGVBc3NlcnRU
eXBlc0VxdWFsPHZvaWQsIHZvaWQ+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCos
IGludCo+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlUmVmZXJlbmNlIGRvZXMgbm90IGFm
ZmVjdCBub24tcmVmZXJlbmNlIHR5cGVzLgotVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBEb2Vz
Tm90QWZmZWN0Tm9uUmVmZXJlbmNlVHlwZSkgewotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxp
bnQsIFJlbW92ZVJlZmVyZW5jZTxpbnQ+Ojp0eXBlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDxjb25zdCBjaGFyLCBSZW1vdmVSZWZlcmVuY2U8Y29uc3QgY2hhcj46OnR5cGU+KCk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlUmVmZXJlbmNlIHJlbW92ZXMgcmVmZXJlbmNlIGZyb20g
cmVmZXJlbmNlIHR5cGVzLgotVEVTVChSZW1vdmVSZWZlcmVuY2VUZXN0LCBSZW1vdmVzUmVmZXJl
bmNlKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGludCwgUmVtb3ZlUmVmZXJlbmNlPGlu
dCY+Ojp0eXBlPigpOwotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxjb25zdCBjaGFyLCBSZW1v
dmVSZWZlcmVuY2U8Y29uc3QgY2hhciY+Ojp0eXBlPigpOwotfQotCi0vLyBUZXN0cyBHVEVTVF9S
RU1PVkVfUkVGRVJFTkNFXy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4K
LXZvaWQgVGVzdEdUZXN0UmVtb3ZlUmVmZXJlbmNlKCkgewotICBDb21waWxlQXNzZXJ0VHlwZXNF
cXVhbDxUMSwgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV8oVDIpPigpOwotfQotCi1URVNUKFJlbW92
ZVJlZmVyZW5jZVRlc3QsIE1hY3JvVmVyc2lvbikgewotICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVu
Y2U8aW50LCBpbnQ+KCk7Ci0gIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZTxjb25zdCBjaGFyLCBj
b25zdCBjaGFyJj4oKTsKLX0KLQotCi0vLyBUZXN0cyB0aGF0IFJlbW92ZUNvbnN0IGRvZXMgbm90
IGFmZmVjdCBub24tY29uc3QgdHlwZXMuCi1URVNUKFJlbW92ZUNvbnN0VGVzdCwgRG9lc05vdEFm
ZmVjdE5vbkNvbnN0VHlwZSkgewotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92
ZUNvbnN0PGludD46OnR5cGU+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXImLCBS
ZW1vdmVDb25zdDxjaGFyJj46OnR5cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgUmVtb3ZlQ29u
c3QgcmVtb3ZlcyBjb25zdCBmcm9tIGNvbnN0IHR5cGVzLgotVEVTVChSZW1vdmVDb25zdFRlc3Qs
IFJlbW92ZXNDb25zdCkgewotICBDb21waWxlQXNzZXJ0VHlwZXNFcXVhbDxpbnQsIFJlbW92ZUNv
bnN0PGNvbnN0IGludD46OnR5cGU+KCk7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNoYXJb
Ml0sIFJlbW92ZUNvbnN0PGNvbnN0IGNoYXJbMl0+Ojp0eXBlPigpOwotICBDb21waWxlQXNzZXJ0
VHlwZXNFcXVhbDxjaGFyWzJdWzNdLCBSZW1vdmVDb25zdDxjb25zdCBjaGFyWzJdWzNdPjo6dHlw
ZT4oKTsKLX0KLQotLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX0NPTlNUXy4KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXZvaWQgVGVzdEdUZXN0UmVtb3ZlQ29uc3QoKSB7Ci0g
IENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRU1PVkVfQ09OU1RfKFQyKT4oKTsK
LX0KLQotVEVTVChSZW1vdmVDb25zdFRlc3QsIE1hY3JvVmVyc2lvbikgewotICBUZXN0R1Rlc3RS
ZW1vdmVDb25zdDxpbnQsIGludD4oKTsKLSAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8ZG91YmxlJiwg
ZG91YmxlJj4oKTsKLSAgVGVzdEdUZXN0UmVtb3ZlQ29uc3Q8Y2hhciwgY29uc3QgY2hhcj4oKTsK
LX0KLQotLy8gVGVzdHMgR1RFU1RfUkVNT1ZFX1JFRkVSRU5DRV9BTkRfQ09OU1RfLgotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotdm9pZCBUZXN0R1Rlc3RSZW1vdmVSZWZl
cmVuY2VBbmRDb25zdCgpIHsKLSAgQ29tcGlsZUFzc2VydFR5cGVzRXF1YWw8VDEsIEdURVNUX1JF
TU9WRV9SRUZFUkVOQ0VfQU5EX0NPTlNUXyhUMik+KCk7Ci19Ci0KLVRFU1QoUmVtb3ZlUmVmZXJl
bmNlVG9Db25zdFRlc3QsIFdvcmtzKSB7Ci0gIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENv
bnN0PGludCwgaW50PigpOwotICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxkb3Vi
bGUsIGRvdWJsZSY+KCk7Ci0gIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIs
IGNvbnN0IGNoYXI+KCk7Ci0gIFRlc3RHVGVzdFJlbW92ZVJlZmVyZW5jZUFuZENvbnN0PGNoYXIs
IGNvbnN0IGNoYXImPigpOwotICBUZXN0R1Rlc3RSZW1vdmVSZWZlcmVuY2VBbmRDb25zdDxjb25z
dCBjaGFyKiwgY29uc3QgY2hhcio+KCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNl
IGRvZXMgbm90IGFmZmVjdCByZWZlcmVuY2UgdHlwZXMuCi1URVNUKEFkZFJlZmVyZW5jZVRlc3Qs
IERvZXNOb3RBZmZlY3RSZWZlcmVuY2VUeXBlKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFs
PGludCYsIEFkZFJlZmVyZW5jZTxpbnQmPjo6dHlwZT4oKTsKLSAgQ29tcGlsZUFzc2VydFR5cGVz
RXF1YWw8Y29uc3QgY2hhciYsIEFkZFJlZmVyZW5jZTxjb25zdCBjaGFyJj46OnR5cGU+KCk7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgQWRkUmVmZXJlbmNlIGFkZHMgcmVmZXJlbmNlIHRvIG5vbi1yZWZl
cmVuY2UgdHlwZXMuCi1URVNUKEFkZFJlZmVyZW5jZVRlc3QsIEFkZHNSZWZlcmVuY2UpIHsKLSAg
Q29tcGlsZUFzc2VydFR5cGVzRXF1YWw8aW50JiwgQWRkUmVmZXJlbmNlPGludD46OnR5cGU+KCk7
Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPGNvbnN0IGNoYXImLCBBZGRSZWZlcmVuY2U8Y29u
c3QgY2hhcj46OnR5cGU+KCk7Ci19Ci0KLS8vIFRlc3RzIEdURVNUX0FERF9SRUZFUkVOQ0VfLgot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotdm9pZCBUZXN0R1Rlc3RBZGRS
ZWZlcmVuY2UoKSB7Ci0gIENvbXBpbGVBc3NlcnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9BRERfUkVG
RVJFTkNFXyhUMik+KCk7Ci19Ci0KLVRFU1QoQWRkUmVmZXJlbmNlVGVzdCwgTWFjcm9WZXJzaW9u
KSB7Ci0gIFRlc3RHVGVzdEFkZFJlZmVyZW5jZTxpbnQmLCBpbnQ+KCk7Ci0gIFRlc3RHVGVzdEFk
ZFJlZmVyZW5jZTxjb25zdCBjaGFyJiwgY29uc3QgY2hhciY+KCk7Ci19Ci0KLS8vIFRlc3RzIEdU
RVNUX1JFRkVSRU5DRV9UT19DT05TVF8uCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Ci12b2lkIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29uc3QoKSB7Ci0gIENvbXBpbGVBc3Nl
cnRUeXBlc0VxdWFsPFQxLCBHVEVTVF9SRUZFUkVOQ0VfVE9fQ09OU1RfKFQyKT4oKTsKLX0KLQot
VEVTVChHVGVzdFJlZmVyZW5jZVRvQ29uc3RUZXN0LCBXb3JrcykgewotICBUZXN0R1Rlc3RSZWZl
cmVuY2VUb0NvbnN0PGNvbnN0IGNoYXImLCBjaGFyPigpOwotICBUZXN0R1Rlc3RSZWZlcmVuY2VU
b0NvbnN0PGNvbnN0IGludCYsIGNvbnN0IGludD4oKTsKLSAgVGVzdEdUZXN0UmVmZXJlbmNlVG9D
b25zdDxjb25zdCBkb3VibGUmLCBkb3VibGU+KCk7Ci0gIFRlc3RHVGVzdFJlZmVyZW5jZVRvQ29u
c3Q8Y29uc3Qgc3RkOjpzdHJpbmcmLCBjb25zdCBzdGQ6OnN0cmluZyY+KCk7Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgSW1wbGljaXRseUNvbnZlcnRpYmxlPFQxLCBUMj46OnZhbHVlIGlzIGEgY29tcGls
ZS10aW1lIGNvbnN0YW50LgotVEVTVChJbXBsaWNpdGx5Q29udmVydGlibGVUZXN0LCBWYWx1ZUlz
Q29tcGlsZVRpbWVDb25zdGFudCkgewotICBHVEVTVF9DT01QSUxFX0FTU0VSVF8oKEltcGxpY2l0
bHlDb252ZXJ0aWJsZTxpbnQsIGludD46OnZhbHVlKSwgY29uc3RfdHJ1ZSk7Ci0gIEdURVNUX0NP
TVBJTEVfQVNTRVJUXygoIUltcGxpY2l0bHlDb252ZXJ0aWJsZTx2b2lkKiwgaW50Kj46OnZhbHVl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2ZhbHNlKTsKLX0KLQotLy8gVGVzdHMg
dGhhdCBJbXBsaWNpdGx5Q29udmVydGlibGU8VDEsIFQyPjo6dmFsdWUgaXMgdHJ1ZSB3aGVuIFQx
IGNhbgotLy8gYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gVDIuCi1URVNUKEltcGxpY2l0bHlD
b252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNUcnVlV2hlbkNvbnZlcnRpYmxlKSB7Ci0gIEVYUEVDVF9U
UlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50LCBkb3VibGU+Ojp2YWx1ZSkpOwotICBFWFBF
Q1RfVFJVRSgoSW1wbGljaXRseUNvbnZlcnRpYmxlPGRvdWJsZSwgaW50Pjo6dmFsdWUpKTsKLSAg
RVhQRUNUX1RSVUUoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxpbnQqLCB2b2lkKj46OnZhbHVlKSk7
Ci0gIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8aW50KiwgY29uc3QgaW50Kj46
OnZhbHVlKSk7Ci0gIEVYUEVDVF9UUlVFKChJbXBsaWNpdGx5Q29udmVydGlibGU8Q29udmVyc2lv
bkhlbHBlckRlcml2ZWQmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbnZlcnNpb25IZWxwZXJCYXNlJj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9UUlVFKChJbXBs
aWNpdGx5Q29udmVydGlibGU8Y29uc3QgQ29udmVyc2lvbkhlbHBlckJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbkhlbHBlckJhc2U+Ojp2YWx1ZSkp
OwotfQotCi0vLyBUZXN0cyB0aGF0IEltcGxpY2l0bHlDb252ZXJ0aWJsZTxUMSwgVDI+Ojp2YWx1
ZSBpcyBmYWxzZSB3aGVuIFQxCi0vLyBjYW5ub3QgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8g
VDIuCi1URVNUKEltcGxpY2l0bHlDb252ZXJ0aWJsZVRlc3QsIFZhbHVlSXNGYWxzZVdoZW5Ob3RD
b252ZXJ0aWJsZSkgewotICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJsZTxkb3Vi
bGUsIGludCo+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKEltcGxpY2l0bHlDb252ZXJ0aWJs
ZTx2b2lkKiwgaW50Kj46OnZhbHVlKSk7Ci0gIEVYUEVDVF9GQUxTRSgoSW1wbGljaXRseUNvbnZl
cnRpYmxlPGNvbnN0IGludCosIGludCo+Ojp2YWx1ZSkpOwotICBFWFBFQ1RfRkFMU0UoKEltcGxp
Y2l0bHlDb252ZXJ0aWJsZTxDb252ZXJzaW9uSGVscGVyQmFzZSYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25IZWxwZXJEZXJpdmVkJj46OnZhbHVlKSk7
Ci19Ci0KLS8vIFRlc3RzIElzQ29udGFpbmVyVGVzdC4KLQotY2xhc3MgTm9uQ29udGFpbmVyIHt9
OwotCi1URVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIFdvcmtzRm9yTm9uQ29udGFpbmVyKSB7Ci0g
IEVYUEVDVF9FUShzaXplb2YoSXNOb3RDb250YWluZXIpLCBzaXplb2YoSXNDb250YWluZXJUZXN0
PGludD4oMCkpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihJc05vdENvbnRhaW5lciksIHNpemVvZihJ
c0NvbnRhaW5lclRlc3Q8Y2hhcls1XT4oMCkpKTsKLSAgRVhQRUNUX0VRKHNpemVvZihJc05vdENv
bnRhaW5lciksIHNpemVvZihJc0NvbnRhaW5lclRlc3Q8Tm9uQ29udGFpbmVyPigwKSkpOwotfQot
Ci1URVNUKElzQ29udGFpbmVyVGVzdFRlc3QsIFdvcmtzRm9yQ29udGFpbmVyKSB7Ci0gIEVYUEVD
VF9FUShzaXplb2YoSXNDb250YWluZXIpLAotICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVy
VGVzdDxzdGQ6OnZlY3Rvcjxib29sPiA+KDApKSk7Ci0gIEVYUEVDVF9FUShzaXplb2YoSXNDb250
YWluZXIpLAotICAgICAgICAgICAgc2l6ZW9mKElzQ29udGFpbmVyVGVzdDxzdGQ6Om1hcDxpbnQs
IGRvdWJsZT4gPigwKSkpOwotfQotCi0vLyBUZXN0cyBBcnJheUVxKCkuCi0KLVRFU1QoQXJyYXlF
cVRlc3QsIFdvcmtzRm9yRGVnZW5lcmF0ZWRBcnJheXMpIHsKLSAgRVhQRUNUX1RSVUUoQXJyYXlF
cSg1LCA1TCkpOwotICBFWFBFQ1RfRkFMU0UoQXJyYXlFcSgnYScsIDApKTsKLX0KLQotVEVTVChB
cnJheUVxVGVzdCwgV29ya3NGb3JPbmVEaW1lbnNpb25hbEFycmF5cykgewotICAvLyBOb3RlIHRo
YXQgYSBhbmQgYiBhcmUgZGlzdGluY3QgYnV0IGNvbXBhdGlibGUgdHlwZXMuCi0gIGNvbnN0IGlu
dCBhW10gPSB7IDAsIDEgfTsKLSAgbG9uZyBiW10gPSB7IDAsIDEgfTsKLSAgRVhQRUNUX1RSVUUo
QXJyYXlFcShhLCBiKSk7Ci0gIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgMiwgYikpOwotCi0gIGJb
MF0gPSAyOwotICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShhLCBiKSk7Ci0gIEVYUEVDVF9GQUxTRShB
cnJheUVxKGEsIDEsIGIpKTsKLX0KLQotVEVTVChBcnJheUVxVGVzdCwgV29ya3NGb3JUd29EaW1l
bnNpb25hbEFycmF5cykgewotICBjb25zdCBjaGFyIGFbXVszXSA9IHsgImhpIiwgImxvIiB9Owot
ICBjb25zdCBjaGFyIGJbXVszXSA9IHsgImhpIiwgImxvIiB9OwotICBjb25zdCBjaGFyIGNbXVsz
XSA9IHsgImhpIiwgImxpIiB9OwotCi0gIEVYUEVDVF9UUlVFKEFycmF5RXEoYSwgYikpOwotICBF
WFBFQ1RfVFJVRShBcnJheUVxKGEsIDIsIGIpKTsKLQotICBFWFBFQ1RfRkFMU0UoQXJyYXlFcShh
LCBjKSk7Ci0gIEVYUEVDVF9GQUxTRShBcnJheUVxKGEsIDIsIGMpKTsKLX0KLQotLy8gVGVzdHMg
QXJyYXlBd2FyZUZpbmQoKS4KLQotVEVTVChBcnJheUF3YXJlRmluZFRlc3QsIFdvcmtzRm9yT25l
RGltZW5zaW9uYWxBcnJheSkgewotICBjb25zdCBjaGFyIGFbXSA9ICJoZWxsbyI7Ci0gIEVYUEVD
VF9FUShhICsgNCwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDUsICdvJykpOwotICBFWFBFQ1RfRVEo
YSArIDUsIEFycmF5QXdhcmVGaW5kKGEsIGEgKyA1LCAneCcpKTsKLX0KLQotVEVTVChBcnJheUF3
YXJlRmluZFRlc3QsIFdvcmtzRm9yVHdvRGltZW5zaW9uYWxBcnJheSkgewotICBpbnQgYVtdWzJd
ID0geyB7IDAsIDEgfSwgeyAyLCAzIH0sIHsgNCwgNSB9IH07Ci0gIGNvbnN0IGludCBiWzJdID0g
eyAyLCAzIH07Ci0gIEVYUEVDVF9FUShhICsgMSwgQXJyYXlBd2FyZUZpbmQoYSwgYSArIDMsIGIp
KTsKLQotICBjb25zdCBpbnQgY1syXSA9IHsgNiwgNyB9OwotICBFWFBFQ1RfRVEoYSArIDMsIEFy
cmF5QXdhcmVGaW5kKGEsIGEgKyAzLCBjKSk7Ci19Ci0KLS8vIFRlc3RzIENvcHlBcnJheSgpLgot
Ci1URVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yRGVnZW5lcmF0ZWRBcnJheXMpIHsKLSAgaW50
IG4gPSAwOwotICBDb3B5QXJyYXkoJ2EnLCAmbik7Ci0gIEVYUEVDVF9FUSgnYScsIG4pOwotfQot
Ci1URVNUKENvcHlBcnJheVRlc3QsIFdvcmtzRm9yT25lRGltZW5zaW9uYWxBcnJheXMpIHsKLSAg
Y29uc3QgY2hhciBhWzNdID0gImhpIjsKLSAgaW50IGJbM107Ci0jaWZuZGVmIF9fQk9STEFORENf
XyAgLy8gQysrQnVpbGRlciBjYW5ub3QgY29tcGlsZSBzb21lIGFycmF5IHNpemUgZGVkdWN0aW9u
cy4KLSAgQ29weUFycmF5KGEsICZiKTsKLSAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7Ci0j
ZW5kaWYKLQotICBpbnQgY1szXTsKLSAgQ29weUFycmF5KGEsIDMsIGMpOwotICBFWFBFQ1RfVFJV
RShBcnJheUVxKGEsIGMpKTsKLX0KLQotVEVTVChDb3B5QXJyYXlUZXN0LCBXb3Jrc0ZvclR3b0Rp
bWVuc2lvbmFsQXJyYXlzKSB7Ci0gIGNvbnN0IGludCBhWzJdWzNdID0geyB7IDAsIDEsIDIgfSwg
eyAzLCA0LCA1IH0gfTsKLSAgaW50IGJbMl1bM107Ci0jaWZuZGVmIF9fQk9STEFORENfXyAgLy8g
QysrQnVpbGRlciBjYW5ub3QgY29tcGlsZSBzb21lIGFycmF5IHNpemUgZGVkdWN0aW9ucy4KLSAg
Q29weUFycmF5KGEsICZiKTsKLSAgRVhQRUNUX1RSVUUoQXJyYXlFcShhLCBiKSk7Ci0jZW5kaWYK
LQotICBpbnQgY1syXVszXTsKLSAgQ29weUFycmF5KGEsIDIsIGMpOwotICBFWFBFQ1RfVFJVRShB
cnJheUVxKGEsIGMpKTsKLX0KLQotLy8gVGVzdHMgTmF0aXZlQXJyYXkuCi0KLVRFU1QoTmF0aXZl
QXJyYXlUZXN0LCBDb25zdHJ1Y3RvckZyb21BcnJheVdvcmtzKSB7Ci0gIGNvbnN0IGludCBhWzNd
ID0geyAwLCAxLCAyIH07Ci0gIE5hdGl2ZUFycmF5PGludD4gbmEoYSwgMywgUmVsYXRpb25Ub1Nv
dXJjZVJlZmVyZW5jZSgpKTsKLSAgRVhQRUNUX0VRKDNVLCBuYS5zaXplKCkpOwotICBFWFBFQ1Rf
RVEoYSwgbmEuYmVnaW4oKSk7Ci19Ci0KLVRFU1QoTmF0aXZlQXJyYXlUZXN0LCBDcmVhdGVzQW5k
RGVsZXRlc0NvcHlPZkFycmF5V2hlbkFza2VkVG8pIHsKLSAgdHlwZWRlZiBpbnQgQXJyYXlbMl07
Ci0gIEFycmF5KiBhID0gbmV3IEFycmF5WzFdOwotICAoKmEpWzBdID0gMDsKLSAgKCphKVsxXSA9
IDE7Ci0gIE5hdGl2ZUFycmF5PGludD4gbmEoKmEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkp
OwotICBFWFBFQ1RfTkUoKmEsIG5hLmJlZ2luKCkpOwotICBkZWxldGVbXSBhOwotICBFWFBFQ1Rf
RVEoMCwgbmEuYmVnaW4oKVswXSk7Ci0gIEVYUEVDVF9FUSgxLCBuYS5iZWdpbigpWzFdKTsKLQot
ICAvLyBXZSByZWx5IG9uIHRoZSBoZWFwIGNoZWNrZXIgdG8gdmVyaWZ5IHRoYXQgbmEgZGVsZXRl
cyB0aGUgY29weSBvZgotICAvLyBhcnJheS4KLX0KLQotVEVTVChOYXRpdmVBcnJheVRlc3QsIFR5
cGVNZW1iZXJzQXJlQ29ycmVjdCkgewotICBTdGF0aWNBc3NlcnRUeXBlRXE8Y2hhciwgTmF0aXZl
QXJyYXk8Y2hhcj46OnZhbHVlX3R5cGU+KCk7Ci0gIFN0YXRpY0Fzc2VydFR5cGVFcTxpbnRbMl0s
IE5hdGl2ZUFycmF5PGludFsyXT46OnZhbHVlX3R5cGU+KCk7Ci0KLSAgU3RhdGljQXNzZXJ0VHlw
ZUVxPGNvbnN0IGNoYXIqLCBOYXRpdmVBcnJheTxjaGFyPjo6Y29uc3RfaXRlcmF0b3I+KCk7Ci0g
IFN0YXRpY0Fzc2VydFR5cGVFcTxjb25zdCBib29sKCopWzJdLCBOYXRpdmVBcnJheTxib29sWzJd
Pjo6Y29uc3RfaXRlcmF0b3I+KCk7Ci19Ci0KLVRFU1QoTmF0aXZlQXJyYXlUZXN0LCBNZXRob2Rz
V29yaykgewotICBjb25zdCBpbnQgYVszXSA9IHsgMCwgMSwgMiB9OwotICBOYXRpdmVBcnJheTxp
bnQ+IG5hKGEsIDMsIFJlbGF0aW9uVG9Tb3VyY2VDb3B5KCkpOwotICBBU1NFUlRfRVEoM1UsIG5h
LnNpemUoKSk7Ci0gIEVYUEVDVF9FUSgzLCBuYS5lbmQoKSAtIG5hLmJlZ2luKCkpOwotCi0gIE5h
dGl2ZUFycmF5PGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbmEuYmVnaW4oKTsKLSAgRVhQRUNU
X0VRKDAsICppdCk7Ci0gICsraXQ7Ci0gIEVYUEVDVF9FUSgxLCAqaXQpOwotICBpdCsrOwotICBF
WFBFQ1RfRVEoMiwgKml0KTsKLSAgKytpdDsKLSAgRVhQRUNUX0VRKG5hLmVuZCgpLCBpdCk7Ci0K
LSAgRVhQRUNUX1RSVUUobmEgPT0gbmEpOwotCi0gIE5hdGl2ZUFycmF5PGludD4gbmEyKGEsIDMs
IFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Ci0gIEVYUEVDVF9UUlVFKG5hID09IG5hMik7
Ci0KLSAgY29uc3QgaW50IGIxWzNdID0geyAwLCAxLCAxIH07Ci0gIGNvbnN0IGludCBiMls0XSA9
IHsgMCwgMSwgMiwgMyB9OwotICBFWFBFQ1RfRkFMU0UobmEgPT0gTmF0aXZlQXJyYXk8aW50Pihi
MSwgMywgUmVsYXRpb25Ub1NvdXJjZVJlZmVyZW5jZSgpKSk7Ci0gIEVYUEVDVF9GQUxTRShuYSA9
PSBOYXRpdmVBcnJheTxpbnQ+KGIyLCA0LCBSZWxhdGlvblRvU291cmNlQ29weSgpKSk7Ci19Ci0K
LVRFU1QoTmF0aXZlQXJyYXlUZXN0LCBXb3Jrc0ZvclR3b0RpbWVuc2lvbmFsQXJyYXkpIHsKLSAg
Y29uc3QgY2hhciBhWzJdWzNdID0geyAiaGkiLCAibG8iIH07Ci0gIE5hdGl2ZUFycmF5PGNoYXJb
M10+IG5hKGEsIDIsIFJlbGF0aW9uVG9Tb3VyY2VSZWZlcmVuY2UoKSk7Ci0gIEFTU0VSVF9FUSgy
VSwgbmEuc2l6ZSgpKTsKLSAgRVhQRUNUX0VRKGEsIG5hLmJlZ2luKCkpOwotfQotCi0vLyBUZXN0
cyBTa2lwUHJlZml4KCkuCi0KLVRFU1QoU2tpcFByZWZpeFRlc3QsIFNraXBzV2hlblByZWZpeE1h
dGNoZXMpIHsKLSAgY29uc3QgY2hhciogY29uc3Qgc3RyID0gImhlbGxvIjsKLQotICBjb25zdCBj
aGFyKiBwID0gc3RyOwotICBFWFBFQ1RfVFJVRShTa2lwUHJlZml4KCIiLCAmcCkpOwotICBFWFBF
Q1RfRVEoc3RyLCBwKTsKLQotICBwID0gc3RyOwotICBFWFBFQ1RfVFJVRShTa2lwUHJlZml4KCJo
ZWxsIiwgJnApKTsKLSAgRVhQRUNUX0VRKHN0ciArIDQsIHApOwotfQotCi1URVNUKFNraXBQcmVm
aXhUZXN0LCBEb2VzTm90U2tpcFdoZW5QcmVmaXhEb2VzTm90TWF0Y2gpIHsKLSAgY29uc3QgY2hh
ciogY29uc3Qgc3RyID0gIndvcmxkIjsKLQotICBjb25zdCBjaGFyKiBwID0gc3RyOwotICBFWFBF
Q1RfRkFMU0UoU2tpcFByZWZpeCgiVyIsICZwKSk7Ci0gIEVYUEVDVF9FUShzdHIsIHApOwotCi0g
IHAgPSBzdHI7Ci0gIEVYUEVDVF9GQUxTRShTa2lwUHJlZml4KCJ3b3JsZCEiLCAmcCkpOwotICBF
WFBFQ1RfRVEoc3RyLCBwKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3Rf
eG1sX291dGZpbGUxX3Rlc3RfLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0Zmls
ZTFfdGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMWNlZDQ5ZDQxMC4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUxX3Rl
c3RfLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDgs
IEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjoga2VpdGgucmF5QGdtYWls
LmNvbSAoS2VpdGggUmF5KQotLy8KLS8vIGd0ZXN0X3htbF9vdXRmaWxlMV90ZXN0XyB3cml0ZXMg
c29tZSB4bWwgdmlhIFRlc3RQcm9wZXJ0eSB1c2VkIGJ5Ci0vLyBndGVzdF94bWxfb3V0ZmlsZXNf
dGVzdC5weQotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotY2xhc3MgUHJvcGVydHlPbmUg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci0gcHJvdGVjdGVkOgotICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKSB7Ci0gICAgUmVjb3JkUHJvcGVydHkoIlNldFVwUHJvcCIsIDEpOwotICB9Ci0gIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpIHsKLSAgICBSZWNvcmRQcm9wZXJ0eSgiVGVhckRvd25Qcm9wIiwg
MSk7Ci0gIH0KLX07Ci0KLVRFU1RfRihQcm9wZXJ0eU9uZSwgVGVzdFNvbWVQcm9wZXJ0aWVzKSB7
Ci0gIFJlY29yZFByb3BlcnR5KCJUZXN0U29tZVByb3BlcnR5IiwgMSk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGUyX3Rlc3RfLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3YjQwMGIyNzYwNTcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L2d0ZXN0X3htbF9vdXRmaWxlMl90ZXN0Xy5jYworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICsw
LDAgQEAKLS8vIENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0v
LyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8v
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vCi0v
LyBBdXRob3I6IGtlaXRoLnJheUBnbWFpbC5jb20gKEtlaXRoIFJheSkKLS8vCi0vLyBndGVzdF94
bWxfb3V0ZmlsZTJfdGVzdF8gd3JpdGVzIHNvbWUgeG1sIHZpYSBUZXN0UHJvcGVydHkgdXNlZCBi
eQotLy8gZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCi0KLWNsYXNzIFByb3BlcnR5VHdvIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotIHByb3Rl
Y3RlZDoKLSAgdmlydHVhbCB2b2lkIFNldFVwKCkgewotICAgIFJlY29yZFByb3BlcnR5KCJTZXRV
cFByb3AiLCAyKTsKLSAgfQotICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7Ci0gICAgUmVjb3Jk
UHJvcGVydHkoIlRlYXJEb3duUHJvcCIsIDIpOwotICB9Ci19OwotCi1URVNUX0YoUHJvcGVydHlU
d28sIFRlc3RTb21lUHJvcGVydGllcykgewotICBSZWNvcmRQcm9wZXJ0eSgiVGVzdFNvbWVQcm9w
ZXJ0eSIsIDIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0
ZmlsZXNfdGVzdC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3Qu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDUyNGU0MzdlNmMxNy4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dGZpbGVzX3Rlc3QucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDA4LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciB0aGUgZ3Rlc3RfeG1sX291dHB1dCBt
b2R1bGUuIiIiCi0KLV9fYXV0aG9yX18gPSAia2VpdGgucmF5QGdtYWlsLmNvbSAoS2VpdGggUmF5
KSIKLQotaW1wb3J0IG9zCi1mcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKLQotaW1w
b3J0IGd0ZXN0X3Rlc3RfdXRpbHMKLWltcG9ydCBndGVzdF94bWxfdGVzdF91dGlscwotCi0KLUdU
RVNUX09VVFBVVF9TVUJESVIgPSAieG1sX291dGZpbGVzIgotR1RFU1RfT1VUUFVUXzFfVEVTVCA9
ICJndGVzdF94bWxfb3V0ZmlsZTFfdGVzdF8iCi1HVEVTVF9PVVRQVVRfMl9URVNUID0gImd0ZXN0
X3htbF9vdXRmaWxlMl90ZXN0XyIKLQotRVhQRUNURURfWE1MXzEgPSAiIiI8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjEiIGZhaWx1cmVz
PSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIiB0aW1lc3RhbXA9IioiIG5hbWU9
IkFsbFRlc3RzIj4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eU9uZSIgdGVzdHM9IjEiIGZh
aWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNh
c2UgbmFtZT0iVGVzdFNvbWVQcm9wZXJ0aWVzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJQcm9wZXJ0eU9uZSIgU2V0VXBQcm9wPSIxIiBUZXN0U29tZVByb3BlcnR5PSIxIiBUZWFy
RG93blByb3A9IjEiIC8+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPgotIiIiCi0KLUVY
UEVDVEVEX1hNTF8yID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
LTx0ZXN0c3VpdGVzIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0i
MCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyI+Ci0gIDx0ZXN0c3VpdGUg
bmFtZT0iUHJvcGVydHlUd28iIHRlc3RzPSIxIiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVy
cm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRlc3RTb21lUHJvcGVydGll
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlUd28iIFNldFVwUHJv
cD0iMiIgVGVzdFNvbWVQcm9wZXJ0eT0iMiIgVGVhckRvd25Qcm9wPSIyIiAvPgotICA8L3Rlc3Rz
dWl0ZT4KLTwvdGVzdHN1aXRlcz4KLSIiIgotCi0KLWNsYXNzIEdUZXN0WE1MT3V0RmlsZXNUZXN0
KGd0ZXN0X3htbF90ZXN0X3V0aWxzLkdUZXN0WE1MVGVzdENhc2UpOgotICAiIiJVbml0IHRlc3Qg
Zm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5LiIiIgotCi0gIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAjIFdlIHdhbnQgdGhlIHRyYWlsaW5nICcvJyB0aGF0IHRoZSBsYXN0
ICIiIHByb3ZpZGVzIGluIG9zLnBhdGguam9pbiwgZm9yCi0gICAgIyB0ZWxsaW5nIEdvb2dsZSBU
ZXN0IHRvIGNyZWF0ZSBhbiBvdXRwdXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBzaW5nbGUgZmls
ZQotICAgICMgZm9yIHhtbCBvdXRwdXQuCi0gICAgc2VsZi5vdXRwdXRfZGlyXyA9IG9zLnBhdGgu
am9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdURVNUX09VVFBVVF9TVUJESVIsICIiKQotICAgIHNlbGYuRGVsZXRl
RmlsZXNBbmREaXIoKQotCi0gIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICBzZWxmLkRlbGV0ZUZp
bGVzQW5kRGlyKCkKLQotICBkZWYgRGVsZXRlRmlsZXNBbmREaXIoc2VsZik6Ci0gICAgdHJ5Ogot
ICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBHVEVTVF9PVVRQ
VVRfMV9URVNUICsgIi54bWwiKSkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICBwYXNzCi0g
ICAgdHJ5OgotICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLm91dHB1dF9kaXJfLCBH
VEVTVF9PVVRQVVRfMl9URVNUICsgIi54bWwiKSkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAg
ICBwYXNzCi0gICAgdHJ5OgotICAgICAgb3Mucm1kaXIoc2VsZi5vdXRwdXRfZGlyXykKLSAgICBl
eGNlcHQgb3MuZXJyb3I6Ci0gICAgICBwYXNzCi0KLSAgZGVmIHRlc3RPdXRmaWxlMShzZWxmKToK
LSAgICBzZWxmLl9UZXN0T3V0RmlsZShHVEVTVF9PVVRQVVRfMV9URVNULCBFWFBFQ1RFRF9YTUxf
MSkKLQotICBkZWYgdGVzdE91dGZpbGUyKHNlbGYpOgotICAgIHNlbGYuX1Rlc3RPdXRGaWxlKEdU
RVNUX09VVFBVVF8yX1RFU1QsIEVYUEVDVEVEX1hNTF8yKQotCi0gIGRlZiBfVGVzdE91dEZpbGUo
c2VsZiwgdGVzdF9uYW1lLCBleHBlY3RlZF94bWwpOgotICAgIGd0ZXN0X3Byb2dfcGF0aCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKHRlc3RfbmFtZSkKLSAgICBjb21t
YW5kID0gW2d0ZXN0X3Byb2dfcGF0aCwgIi0tZ3Rlc3Rfb3V0cHV0PXhtbDolcyIgJSBzZWxmLm91
dHB1dF9kaXJfXQotICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoY29tbWFuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfZGlyPWd0ZXN0X3Rl
c3RfdXRpbHMuR2V0VGVtcERpcigpKQotICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKLSAgICBz
ZWxmLmFzc2VydEVxdWFscygwLCBwLmV4aXRfY29kZSkKLQotICAgICMgVE9ETyh3YW5AZ29vZ2xl
LmNvbSk6IGxpYnRvb2wgY2F1c2VzIHRoZSBidWlsdCB0ZXN0IGJpbmFyeSB0byBiZQotICAgICMg
ICBuYW1lZCBsdC1ndGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8gaW5zdGVhZCBvZgotICAgICMgICBn
dGVzdF94bWxfb3V0ZmlsZXNfdGVzdF8uICBUbyBhY2NvdW50IGZvciB0aGlzIHBvc3NpYmlsbGl0
eSwgd2UKLSAgICAjICAgYWxsb3cgYm90aCBuYW1lcyBpbiB0aGUgZm9sbG93aW5nIGNvZGUuICBX
ZSBzaG91bGQgcmVtb3ZlIHRoaXMKLSAgICAjICAgaGFjayB3aGVuIENoYW5kbGVyIENhcnJ1dGgn
cyBsaWJ0b29sIHJlcGxhY2VtZW50IHRvb2wgaXMgcmVhZHkuCi0gICAgb3V0cHV0X2ZpbGVfbmFt
ZTEgPSB0ZXN0X25hbWUgKyAiLnhtbCIKLSAgICBvdXRwdXRfZmlsZTEgPSBvcy5wYXRoLmpvaW4o
c2VsZi5vdXRwdXRfZGlyXywgb3V0cHV0X2ZpbGVfbmFtZTEpCi0gICAgb3V0cHV0X2ZpbGVfbmFt
ZTIgPSAnbHQtJyArIG91dHB1dF9maWxlX25hbWUxCi0gICAgb3V0cHV0X2ZpbGUyID0gb3MucGF0
aC5qb2luKHNlbGYub3V0cHV0X2Rpcl8sIG91dHB1dF9maWxlX25hbWUyKQotICAgIHNlbGYuYXNz
ZXJ0Xyhvcy5wYXRoLmlzZmlsZShvdXRwdXRfZmlsZTEpIG9yIG9zLnBhdGguaXNmaWxlKG91dHB1
dF9maWxlMiksCi0gICAgICAgICAgICAgICAgIG91dHB1dF9maWxlMSkKLQotICAgIGV4cGVjdGVk
ID0gbWluaWRvbS5wYXJzZVN0cmluZyhleHBlY3RlZF94bWwpCi0gICAgaWYgb3MucGF0aC5pc2Zp
bGUob3V0cHV0X2ZpbGUxKToKLSAgICAgIGFjdHVhbCA9IG1pbmlkb20ucGFyc2Uob3V0cHV0X2Zp
bGUxKQotICAgIGVsc2U6Ci0gICAgICBhY3R1YWwgPSBtaW5pZG9tLnBhcnNlKG91dHB1dF9maWxl
MikKLSAgICBzZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQotICAgIHNl
bGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50RWxlbWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRFbGVtZW50KQotICAgIGV4
cGVjdGVkLnVubGluaygpCi0gICAgYWN0dWFsLnVubGluaygpCi0KLQotaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKLSAgb3MuZW52aXJvblsiR1RFU1RfU1RBQ0tfVFJBQ0VfREVQVEgiXSA9ICIw
IgotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVz
dC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0LnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94
bWxfb3V0cHV0X3VuaXR0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiY2Q1
OTc1OTkxZDcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L2d0ZXN0X3htbF9v
dXRwdXRfdW5pdHRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMDggKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA2LCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVW5pdCB0ZXN0IGZvciB0
aGUgZ3Rlc3RfeG1sX291dHB1dCBtb2R1bGUiIiIKLQotX19hdXRob3JfXyA9ICdlZWZhY21AZ21h
aWwuY29tIChTZWFuIE1jYWZlZSknCi0KLWltcG9ydCBkYXRldGltZQotaW1wb3J0IGVycm5vCi1p
bXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotZnJvbSB4bWwuZG9tIGltcG9ydCBtaW5p
ZG9tLCBOb2RlCi0KLWltcG9ydCBndGVzdF90ZXN0X3V0aWxzCi1pbXBvcnQgZ3Rlc3RfeG1sX3Rl
c3RfdXRpbHMKLQotCi1HVEVTVF9GSUxURVJfRkxBRyA9ICctLWd0ZXN0X2ZpbHRlcicKLUdURVNU
X0xJU1RfVEVTVFNfRkxBRyA9ICctLWd0ZXN0X2xpc3RfdGVzdHMnCi1HVEVTVF9PVVRQVVRfRkxB
RyAgICAgICAgID0gIi0tZ3Rlc3Rfb3V0cHV0IgotR1RFU1RfREVGQVVMVF9PVVRQVVRfRklMRSA9
ICJ0ZXN0X2RldGFpbC54bWwiCi1HVEVTVF9QUk9HUkFNX05BTUUgPSAiZ3Rlc3RfeG1sX291dHB1
dF91bml0dGVzdF8iCi0KLVNVUFBPUlRTX1NUQUNLX1RSQUNFUyA9IEZhbHNlCi0KLWlmIFNVUFBP
UlRTX1NUQUNLX1RSQUNFUzoKLSAgU1RBQ0tfVFJBQ0VfVEVNUExBVEUgPSAnXG5TdGFjayB0cmFj
ZTpcbionCi1lbHNlOgotICBTVEFDS19UUkFDRV9URU1QTEFURSA9ICcnCi0KLUVYUEVDVEVEX05P
Tl9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgot
PHRlc3RzdWl0ZXMgdGVzdHM9IjIzIiBmYWlsdXJlcz0iNCIgZGlzYWJsZWQ9IjIiIGVycm9ycz0i
MCIgdGltZT0iKiIgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3BlcnR5
PSI0MiI+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBmYWls
dXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IlN1Y2NlZWRzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTdWNjZXNz
ZnVsVGVzdCIvPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJGYWlsZWRUZXN0
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJGYWlscyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNz
bmFtZT0iRmFpbGVkVGVzdCI+Ci0gICAgICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0
cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7ICAgICAgRXhwZWN0ZWQ6IDEmI3gwQTtUbyBiZSBlcXVh
bCB0bzogMiIgdHlwZT0iIj48IVtDREFUQVtndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoq
Ci0gICAgICBFeHBlY3RlZDogMQotVG8gYmUgZXF1YWwgdG86IDIlKHN0YWNrKXNdXT48L2ZhaWx1
cmU+Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0i
TWl4ZWRSZXN1bHRUZXN0IiB0ZXN0cz0iMyIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIxIiBlcnJv
cnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJTdWNjZWVkcyIgc3RhdHVzPSJy
dW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTWl4ZWRSZXN1bHRUZXN0Ii8+Ci0gICAgPHRlc3RjYXNl
IG5hbWU9IkZhaWxzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJNaXhlZFJlc3Vs
dFRlc3QiPgotICAgICAgPGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVz
dF8uY2M6KiYjeDBBOyAgICAgIEV4cGVjdGVkOiAxJiN4MEE7VG8gYmUgZXF1YWwgdG86IDIiIHR5
cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotICAgICAgRXhw
ZWN0ZWQ6IDEKLVRvIGJlIGVxdWFsIHRvOiAyJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgICAg
PGZhaWx1cmUgbWVzc2FnZT0iZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KiYjeDBBOyAg
ICAgIEV4cGVjdGVkOiAyJiN4MEE7VG8gYmUgZXF1YWwgdG86IDMiIHR5cGU9IiI+PCFbQ0RBVEFb
Z3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotICAgICAgRXhwZWN0ZWQ6IDIKLVRvIGJl
IGVxdWFsIHRvOiAzJShzdGFjaylzXV0+PC9mYWlsdXJlPgotICAgIDwvdGVzdGNhc2U+Ci0gICAg
PHRlc3RjYXNlIG5hbWU9IkRJU0FCTEVEX3Rlc3QiIHN0YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9Ik1peGVkUmVzdWx0VGVzdCIvPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0
ZSBuYW1lPSJYbWxRdW90aW5nVGVzdCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIxIiBkaXNhYmxlZD0i
MCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iT3V0cHV0c0NEYXRh
IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJYbWxRdW90aW5nVGVzdCI+Ci0gICAg
ICA8ZmFpbHVyZSBtZXNzYWdlPSJndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYzoqJiN4MEE7
RmFpbGVkJiN4MEE7WE1MIG91dHB1dDogJmx0Oz94bWwgZW5jb2Rpbmc9JnF1b3Q7dXRmLTgmcXVv
dDsmZ3Q7Jmx0O3RvcCZndDsmbHQ7IVtDREFUQVtjZGF0YSB0ZXh0XV0mZ3Q7Jmx0Oy90b3AmZ3Q7
IiB0eXBlPSIiPjwhW0NEQVRBW2d0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3RfLmNjOioKLUZhaWxl
ZAotWE1MIG91dHB1dDogPD94bWwgZW5jb2Rpbmc9InV0Zi04Ij48dG9wPjwhW0NEQVRBW2NkYXRh
IHRleHRdXT5dXSZndDs8IVtDREFUQVs8L3RvcD4lKHN0YWNrKXNdXT48L2ZhaWx1cmU+Ci0gICAg
PC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iSW52YWxpZENo
YXJhY3RlcnNUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjEiIGRpc2FibGVkPSIwIiBlcnJvcnM9
IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnZhbGlkQ2hhcmFjdGVyc0luTWVz
c2FnZSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iSW52YWxpZENoYXJhY3RlcnNU
ZXN0Ij4KLSAgICAgIDxmYWlsdXJlIG1lc3NhZ2U9Imd0ZXN0X3htbF9vdXRwdXRfdW5pdHRlc3Rf
LmNjOiomI3gwQTtGYWlsZWQmI3gwQTtJbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10i
IHR5cGU9IiI+PCFbQ0RBVEFbZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2M6KgotRmFpbGVk
Ci1JbnZhbGlkIGNoYXJhY3RlcnMgaW4gYnJhY2tldHMgW10lKHN0YWNrKXNdXT48L2ZhaWx1cmU+
Ci0gICAgPC90ZXN0Y2FzZT4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iRGlz
YWJsZWRUZXN0IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIxIiBlcnJvcnM9IjAi
IHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJESVNBQkxFRF90ZXN0X25vdF9ydW4iIHN0
YXR1cz0ibm90cnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IkRpc2FibGVkVGVzdCIvPgotICA8L3Rl
c3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJQcm9wZXJ0eVJlY29yZGluZ1Rlc3QiIHRlc3Rz
PSI0IiBmYWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiIgU2V0VXBU
ZXN0Q2FzZT0ieWVzIiBUZWFyRG93blRlc3RDYXNlPSJheWUiPgotICAgIDx0ZXN0Y2FzZSBuYW1l
PSJPbmVQcm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlS
ZWNvcmRpbmdUZXN0IiBrZXlfMT0iMSIvPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJJbnRWYWx1ZWRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRp
bmdUZXN0IiBrZXlfaW50PSIxIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlRocmVlUHJvcGVydGll
cyIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iUHJvcGVydHlSZWNvcmRpbmdUZXN0
IiBrZXlfMT0iMSIga2V5XzI9IjIiIGtleV8zPSIzIi8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IlR3
b1ZhbHVlc0Zvck9uZUtleVVzZXNMYXN0VmFsdWUiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFz
c25hbWU9IlByb3BlcnR5UmVjb3JkaW5nVGVzdCIga2V5XzE9IjIiLz4KLSAgPC90ZXN0c3VpdGU+
Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iTm9GaXh0dXJlVGVzdCIgdGVzdHM9IjMiIGZhaWx1cmVzPSIw
IiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICAgPHRlc3RjYXNlIG5hbWU9
IlJlY29yZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJOb0ZpeHR1
cmVUZXN0IiBrZXk9IjEiLz4KLSAgICAgPHRlc3RjYXNlIG5hbWU9IkV4dGVybmFsVXRpbGl0eVRo
YXRDYWxsc1JlY29yZEludFZhbHVlZFByb3BlcnR5IiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xh
c3NuYW1lPSJOb0ZpeHR1cmVUZXN0IiBrZXlfZm9yX3V0aWxpdHlfaW50PSIxIi8+Ci0gICAgIDx0
ZXN0Y2FzZSBuYW1lPSJFeHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRTdHJpbmdWYWx1ZWRQ
cm9wZXJ0eSIgc3RhdHVzPSJydW4iIHRpbWU9IioiIGNsYXNzbmFtZT0iTm9GaXh0dXJlVGVzdCIg
a2V5X2Zvcl91dGlsaXR5X3N0cmluZz0iMSIvPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0
ZSBuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIHRlc3RzPSI0IiBmYWlsdXJlcz0iMCIgZGlz
YWJsZWQ9IjAiIGVycm9ycz0iMCIgdGltZT0iKiI+Ci0gICAgPHRlc3RjYXNlIG5hbWU9Ikhhc1Zh
bHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFsdWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+Ci0gICAgPHRlc3RjYXNlIG5h
bWU9Ikhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1
biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+Ci0gICAgPHRl
c3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1ZhbHVlUGFyYW1BdHRyaWJ1dGUvMCIgdmFs
dWVfcGFyYW09IjMzIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFs
dWVQYXJhbVRlc3QiIC8+Ci0gICAgPHRlc3RjYXNlIG5hbWU9IkFub3RoZXJUZXN0VGhhdEhhc1Zh
bHVlUGFyYW1BdHRyaWJ1dGUvMSIgdmFsdWVfcGFyYW09IjQyIiBzdGF0dXM9InJ1biIgdGltZT0i
KiIgY2xhc3NuYW1lPSJTaW5nbGUvVmFsdWVQYXJhbVRlc3QiIC8+Ci0gIDwvdGVzdHN1aXRlPgot
ICA8dGVzdHN1aXRlIG5hbWU9IlR5cGVkVGVzdC8wIiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRp
c2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9IioiPgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNU
eXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlR5cGVkVGVzdC8wIiAvPgotICA8L3Rlc3RzdWl0ZT4KLSAgPHRlc3RzdWl0ZSBu
YW1lPSJUeXBlZFRlc3QvMSIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJy
b3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBhcmFtQXR0cmli
dXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3NuYW1lPSJUeXBl
ZFRlc3QvMSIgLz4KLSAgPC90ZXN0c3VpdGU+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iU2luZ2xlL1R5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UvMCIgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIj4KLSAgICA8dGVzdGNhc2UgbmFtZT0iSGFzVHlwZVBh
cmFtQXR0cmlidXRlIiB0eXBlX3BhcmFtPSIqIiBzdGF0dXM9InJ1biIgdGltZT0iKiIgY2xhc3Nu
YW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8wIiAvPgotICA8L3Rlc3RzdWl0
ZT4KLSAgPHRlc3RzdWl0ZSBuYW1lPSJTaW5nbGUvVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZS8x
IiB0ZXN0cz0iMSIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9Iioi
PgotICAgIDx0ZXN0Y2FzZSBuYW1lPSJIYXNUeXBlUGFyYW1BdHRyaWJ1dGUiIHR5cGVfcGFyYW09
IioiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBjbGFzc25hbWU9IlNpbmdsZS9UeXBlUGFyYW1ldGVy
aXplZFRlc3RDYXNlLzEiIC8+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVzPiIiIiAlIHsn
c3RhY2snOiBTVEFDS19UUkFDRV9URU1QTEFURX0KLQotRVhQRUNURURfRklMVEVSRURfVEVTVF9Y
TUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0
ZXMgdGVzdHM9IjEiIGZhaWx1cmVzPSIwIiBkaXNhYmxlZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIq
IgotICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1lPSJBbGxUZXN0cyIgYWRfaG9jX3Byb3Bl
cnR5PSI0MiI+Ci0gIDx0ZXN0c3VpdGUgbmFtZT0iU3VjY2Vzc2Z1bFRlc3QiIHRlc3RzPSIxIiBm
YWlsdXJlcz0iMCIgZGlzYWJsZWQ9IjAiCi0gICAgICAgICAgICAgZXJyb3JzPSIwIiB0aW1lPSIq
Ij4KLSAgICA8dGVzdGNhc2UgbmFtZT0iU3VjY2VlZHMiIHN0YXR1cz0icnVuIiB0aW1lPSIqIiBj
bGFzc25hbWU9IlN1Y2Nlc3NmdWxUZXN0Ii8+Ci0gIDwvdGVzdHN1aXRlPgotPC90ZXN0c3VpdGVz
PiIiIgotCi1FWFBFQ1RFRF9FTVBUWV9YTUwgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgotPHRlc3RzdWl0ZXMgdGVzdHM9IjAiIGZhaWx1cmVzPSIwIiBkaXNhYmxl
ZD0iMCIgZXJyb3JzPSIwIiB0aW1lPSIqIgotICAgICAgICAgICAgdGltZXN0YW1wPSIqIiBuYW1l
PSJBbGxUZXN0cyI+Ci08L3Rlc3RzdWl0ZXM+IiIiCi0KLUdURVNUX1BST0dSQU1fUEFUSCA9IGd0
ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKEdURVNUX1BST0dSQU1fTkFNRSkK
LQotU1VQUE9SVFNfVFlQRURfVEVTVFMgPSAnVHlwZWRUZXN0JyBpbiBndGVzdF90ZXN0X3V0aWxz
LlN1YnByb2Nlc3MoCi0gICAgW0dURVNUX1BST0dSQU1fUEFUSCwgR1RFU1RfTElTVF9URVNUU19G
TEFHXSwgY2FwdHVyZV9zdGRlcnI9RmFsc2UpLm91dHB1dAotCi0KLWNsYXNzIEdUZXN0WE1MT3V0
cHV0VW5pdFRlc3QoZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMuR1Rlc3RYTUxUZXN0Q2FzZSk6Ci0gICIi
IgotICBVbml0IHRlc3QgZm9yIEdvb2dsZSBUZXN0J3MgWE1MIG91dHB1dCBmdW5jdGlvbmFsaXR5
LgotICAiIiIKLQotICAjIFRoaXMgdGVzdCBjdXJyZW50bHkgYnJlYWtzIG9uIHBsYXRmb3JtcyB0
aGF0IGRvIG5vdCBzdXBwb3J0IHR5cGVkIGFuZAotICAjIHR5cGUtcGFyYW1ldGVyaXplZCB0ZXN0
cywgc28gd2UgZG9uJ3QgcnVuIGl0IHVuZGVyIHRoZW0uCi0gIGlmIFNVUFBPUlRTX1RZUEVEX1RF
U1RTOgotICAgIGRlZiB0ZXN0Tm9uRW1wdHlYbWxPdXRwdXQoc2VsZik6Ci0gICAgICAiIiIKLSAg
ICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgYSBub24tZW1wdHkgWE1MIG91
dHB1dCwgYW5kCi0gICAgICB0ZXN0cyB0aGF0IHRoZSBYTUwgb3V0cHV0IGlzIGV4cGVjdGVkLgot
ICAgICAgIiIiCi0gICAgICBzZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwg
RVhQRUNURURfTk9OX0VNUFRZX1hNTCwgMSkKLQotICBkZWYgdGVzdEVtcHR5WG1sT3V0cHV0KHNl
bGYpOgotICAgICIiIlZlcmlmaWVzIFhNTCBvdXRwdXQgZm9yIGEgR29vZ2xlIFRlc3QgYmluYXJ5
IHdpdGhvdXQgYWN0dWFsIHRlc3RzLgotCi0gICAgUnVucyBhIHRlc3QgcHJvZ3JhbSB0aGF0IGdl
bmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQKLSAgICB0ZXN0cyB0aGF0IHRoZSBYTUwg
b3V0cHV0IGlzIGV4cGVjdGVkLgotICAgICIiIgotCi0gICAgc2VsZi5fVGVzdFhtbE91dHB1dCgn
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcsIEVYUEVDVEVEX0VNUFRZX1hNTCwgMCkKLQotICBkZWYg
dGVzdFRpbWVzdGFtcFZhbHVlKHNlbGYpOgotICAgICIiIkNoZWNrcyB3aGV0aGVyIHRoZSB0aW1l
c3RhbXAgYXR0cmlidXRlIGluIHRoZSBYTUwgb3V0cHV0IGlzIHZhbGlkLgotCi0gICAgUnVucyBh
IHRlc3QgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyBhbiBlbXB0eSBYTUwgb3V0cHV0LCBhbmQgY2hl
Y2tzIGlmCi0gICAgdGhlIHRpbWVzdGFtcCBhdHRyaWJ1dGUgaW4gdGhlIHRlc3RzdWl0ZXMgdGFn
IGlzIHZhbGlkLgotICAgICIiIgotICAgIGFjdHVhbCA9IHNlbGYuX0dldFhtbE91dHB1dCgnZ3Rl
c3Rfbm9fdGVzdF91bml0dGVzdCcsIFtdLCAwKQotICAgIGRhdGVfdGltZV9zdHIgPSBhY3R1YWwu
ZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoJ3RpbWVzdGFtcCcpLnZhbHVlCi0gICAg
IyBkYXRldGltZS5zdHJwdGltZSgpIGlzIG9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAyLjUrIHNv
IHdlIGhhdmUgdG8KLSAgICAjIHBhcnNlIHRoZSBleHBlY3RlZCBkYXRldGltZSBtYW51YWxseS4K
LSAgICBtYXRjaCA9IHJlLm1hdGNoKHInKFxkKyktKFxkXGQpLShcZFxkKVQoXGRcZCk6KFxkXGQp
OihcZFxkKScsIGRhdGVfdGltZV9zdHIpCi0gICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICBy
ZS5tYXRjaCwKLSAgICAgICAgJ1hNTCBkYXRldHRpbWUgc3RyaW5nICVzIGhhcyBpbmNvcnJlY3Qg
Zm9ybWF0JyAlIGRhdGVfdGltZV9zdHIpCi0gICAgZGF0ZV90aW1lX2Zyb21feG1sID0gZGF0ZXRp
bWUuZGF0ZXRpbWUoCi0gICAgICAgIHllYXI9aW50KG1hdGNoLmdyb3VwKDEpKSwgbW9udGg9aW50
KG1hdGNoLmdyb3VwKDIpKSwKLSAgICAgICAgZGF5PWludChtYXRjaC5ncm91cCgzKSksIGhvdXI9
aW50KG1hdGNoLmdyb3VwKDQpKSwKLSAgICAgICAgbWludXRlPWludChtYXRjaC5ncm91cCg1KSks
IHNlY29uZD1pbnQobWF0Y2guZ3JvdXAoNikpKQotCi0gICAgdGltZV9kZWx0YSA9IGFicyhkYXRl
dGltZS5kYXRldGltZS5ub3coKSAtIGRhdGVfdGltZV9mcm9tX3htbCkKLSAgICAjIHRpbWVzdGFt
cCB2YWx1ZSBzaG91bGQgYmUgbmVhciB0aGUgY3VycmVudCBsb2NhbCB0aW1lCi0gICAgc2VsZi5h
c3NlcnRUcnVlKHRpbWVfZGVsdGEgPCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz02MDApLAot
ICAgICAgICAgICAgICAgICAgICAndGltZV9kZWx0YSBpcyAlcycgJSB0aW1lX2RlbHRhKQotICAg
IGFjdHVhbC51bmxpbmsoKQotCi0gIGRlZiB0ZXN0RGVmYXVsdE91dHB1dEZpbGUoc2VsZik6Ci0g
ICAgIiIiCi0gICAgQ29uZmlybXMgdGhhdCBHb29nbGUgVGVzdCBwcm9kdWNlcyBhbiBYTUwgb3V0
cHV0IGZpbGUgd2l0aCB0aGUgZXhwZWN0ZWQKLSAgICBkZWZhdWx0IG5hbWUgaWYgbm8gbmFtZSBp
cyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgICAiIiIKLSAgICBvdXRwdXRfZmlsZSA9IG9zLnBh
dGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9ERUZBVUxUX09VVFBVVF9GSUxFKQotICAgIGd0ZXN0X3Byb2df
cGF0aCA9IGd0ZXN0X3Rlc3RfdXRpbHMuR2V0VGVzdEV4ZWN1dGFibGVQYXRoKAotICAgICAgICAn
Z3Rlc3Rfbm9fdGVzdF91bml0dGVzdCcpCi0gICAgdHJ5OgotICAgICAgb3MucmVtb3ZlKG91dHB1
dF9maWxlKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgZSA9IHN5cy5leGNfaW5mbygpWzFd
Ci0gICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgcmFpc2UKLQotICAg
IHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3MoCi0gICAgICAgIFtndGVzdF9wcm9nX3Bh
dGgsICclcz14bWwnICUgR1RFU1RfT1VUUFVUX0ZMQUddLAotICAgICAgICB3b3JraW5nX2Rpcj1n
dGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSkKLSAgICBzZWxmLmFzc2VydF8ocC5leGl0ZWQp
Ci0gICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgcC5leGl0X2NvZGUpCi0gICAgc2VsZi5hc3NlcnRf
KG9zLnBhdGguaXNmaWxlKG91dHB1dF9maWxlKSkKLQotICBkZWYgdGVzdFN1cHByZXNzZWRYbWxP
dXRwdXQoc2VsZik6Ci0gICAgIiIiCi0gICAgVGVzdHMgdGhhdCBubyBYTUwgZmlsZSBpcyBnZW5l
cmF0ZWQgaWYgdGhlIGRlZmF1bHQgWE1MIGxpc3RlbmVyIGlzCi0gICAgc2h1dCBkb3duIGJlZm9y
ZSBSVU5fQUxMX1RFU1RTIGlzIGludm9rZWQuCi0gICAgIiIiCi0KLSAgICB4bWxfcGF0aCA9IG9z
LnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEVTVF9QUk9HUkFNX05BTUUgKyAnb3V0LnhtbCcpCi0gICAgaWYgb3Mu
cGF0aC5pc2ZpbGUoeG1sX3BhdGgpOgotICAgICAgb3MucmVtb3ZlKHhtbF9wYXRoKQotCi0gICAg
Y29tbWFuZCA9IFtHVEVTVF9QUk9HUkFNX1BBVEgsCi0gICAgICAgICAgICAgICAnJXM9eG1sOiVz
JyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpLAotICAgICAgICAgICAgICAgJy0tc2h1
dF9kb3duX3htbCddCi0gICAgcCA9IGd0ZXN0X3Rlc3RfdXRpbHMuU3VicHJvY2Vzcyhjb21tYW5k
KQotICAgIGlmIHAudGVybWluYXRlZF9ieV9zaWduYWw6Ci0gICAgICAjIHAuc2lnbmFsIGlzIGF2
YWxhYmxlIG9ubHkgaWYgcC50ZXJtaW5hdGVkX2J5X3NpZ25hbCBpcyBUcnVlLgotICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgKLSAgICAgICAgICBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsLAotICAgICAg
ICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAlZCcgJSAoR1RFU1RfUFJPR1JBTV9OQU1FLCBw
LnNpZ25hbCkpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuYXNzZXJ0XyhwLmV4aXRlZCkKLSAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHAuZXhpdF9jb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIiclcycgZXhpdGVkIHdpdGggY29kZSAlcywgd2hpY2ggZG9lc24ndCBtYXRjaCAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAndGhlIGV4cGVjdGVkIGV4aXQgY29kZSAlcy4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBwLmV4aXRfY29kZSwgMSkpCi0KLSAgICBzZWxm
LmFzc2VydF8obm90IG9zLnBhdGguaXNmaWxlKHhtbF9wYXRoKSkKLQotICBkZWYgdGVzdEZpbHRl
cmVkVGVzdFhtbE91dHB1dChzZWxmKToKLSAgICAiIiJWZXJpZmllcyBYTUwgb3V0cHV0IHdoZW4g
YSBmaWx0ZXIgaXMgYXBwbGllZC4KLQotICAgIFJ1bnMgYSB0ZXN0IHByb2dyYW0gdGhhdCBleGVj
dXRlcyBvbmx5IHNvbWUgdGVzdHMgYW5kIHZlcmlmaWVzIHRoYXQKLSAgICBub24tc2VsZWN0ZWQg
dGVzdHMgZG8gbm90IHNob3cgdXAgaW4gdGhlIFhNTCBvdXRwdXQuCi0gICAgIiIiCi0KLSAgICBz
ZWxmLl9UZXN0WG1sT3V0cHV0KEdURVNUX1BST0dSQU1fTkFNRSwgRVhQRUNURURfRklMVEVSRURf
VEVTVF9YTUwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzPVsnJXM9U3Vj
Y2Vzc2Z1bFRlc3QuKicgJSBHVEVTVF9GSUxURVJfRkxBR10pCi0KLSAgZGVmIF9HZXRYbWxPdXRw
dXQoc2VsZiwgZ3Rlc3RfcHJvZ19uYW1lLCBleHRyYV9hcmdzLCBleHBlY3RlZF9leGl0X2NvZGUp
OgotICAgICIiIgotICAgIFJldHVybnMgdGhlIHhtbCBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHJ1bm5p
bmcgdGhlIHByb2dyYW0gZ3Rlc3RfcHJvZ19uYW1lLgotICAgIEZ1cnRoZXJtb3JlLCB0aGUgcHJv
Z3JhbSdzIGV4aXQgY29kZSBtdXN0IGJlIGV4cGVjdGVkX2V4aXRfY29kZS4KLSAgICAiIiIKLSAg
ICB4bWxfcGF0aCA9IG9zLnBhdGguam9pbihndGVzdF90ZXN0X3V0aWxzLkdldFRlbXBEaXIoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGVzdF9wcm9nX25hbWUgKyAnb3V0LnhtbCcp
Ci0gICAgZ3Rlc3RfcHJvZ19wYXRoID0gZ3Rlc3RfdGVzdF91dGlscy5HZXRUZXN0RXhlY3V0YWJs
ZVBhdGgoZ3Rlc3RfcHJvZ19uYW1lKQotCi0gICAgY29tbWFuZCA9IChbZ3Rlc3RfcHJvZ19wYXRo
LCAnJXM9eG1sOiVzJyAlIChHVEVTVF9PVVRQVVRfRkxBRywgeG1sX3BhdGgpXSArCi0gICAgICAg
ICAgICAgICBleHRyYV9hcmdzKQotICAgIHAgPSBndGVzdF90ZXN0X3V0aWxzLlN1YnByb2Nlc3Mo
Y29tbWFuZCkKLSAgICBpZiBwLnRlcm1pbmF0ZWRfYnlfc2lnbmFsOgotICAgICAgc2VsZi5hc3Nl
cnRfKEZhbHNlLAotICAgICAgICAgICAgICAgICAgICclcyB3YXMga2lsbGVkIGJ5IHNpZ25hbCAl
ZCcgJSAoZ3Rlc3RfcHJvZ19uYW1lLCBwLnNpZ25hbCkpCi0gICAgZWxzZToKLSAgICAgIHNlbGYu
YXNzZXJ0XyhwLmV4aXRlZCkKLSAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2V4aXRf
Y29kZSwgcC5leGl0X2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyBleGl0ZWQg
d2l0aCBjb2RlICVzLCB3aGljaCBkb2Vzbid0IG1hdGNoICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICd0aGUgZXhwZWN0ZWQgZXhpdCBjb2RlICVzLicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICUgKGNvbW1hbmQsIHAuZXhpdF9jb2RlLCBleHBlY3RlZF9leGl0X2NvZGUpKQotICAgIGFjdHVh
bCA9IG1pbmlkb20ucGFyc2UoeG1sX3BhdGgpCi0gICAgcmV0dXJuIGFjdHVhbAotCi0gIGRlZiBf
VGVzdFhtbE91dHB1dChzZWxmLCBndGVzdF9wcm9nX25hbWUsIGV4cGVjdGVkX3htbCwKLSAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZSwgZXh0cmFfYXJncz1Ob25lKToKLSAg
ICAiIiIKLSAgICBBc3NlcnRzIHRoYXQgdGhlIFhNTCBkb2N1bWVudCBnZW5lcmF0ZWQgYnkgcnVu
bmluZyB0aGUgcHJvZ3JhbQotICAgIGd0ZXN0X3Byb2dfbmFtZSBtYXRjaGVzIGV4cGVjdGVkX3ht
bCwgYSBzdHJpbmcgY29udGFpbmluZyBhbm90aGVyCi0gICAgWE1MIGRvY3VtZW50LiAgRnVydGhl
cm1vcmUsIHRoZSBwcm9ncmFtJ3MgZXhpdCBjb2RlIG11c3QgYmUKLSAgICBleHBlY3RlZF9leGl0
X2NvZGUuCi0gICAgIiIiCi0KLSAgICBhY3R1YWwgPSBzZWxmLl9HZXRYbWxPdXRwdXQoZ3Rlc3Rf
cHJvZ19uYW1lLCBleHRyYV9hcmdzIG9yIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9leGl0X2NvZGUpCi0gICAgZXhwZWN0ZWQgPSBtaW5pZG9tLnBhcnNlU3Ry
aW5nKGV4cGVjdGVkX3htbCkKLSAgICBzZWxmLk5vcm1hbGl6ZVhtbChhY3R1YWwuZG9jdW1lbnRF
bGVtZW50KQotICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVudE5vZGVzKGV4cGVjdGVkLmRvY3VtZW50
RWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwuZG9jdW1lbnRF
bGVtZW50KQotICAgIGV4cGVjdGVkLnVubGluaygpCi0gICAgYWN0dWFsLnVubGluaygpCi0KLQot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgb3MuZW52aXJvblsnR1RFU1RfU1RBQ0tfVFJB
Q0VfREVQVEgnXSA9ICcxJwotICBndGVzdF90ZXN0X3V0aWxzLk1haW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfb3V0cHV0X3VuaXR0ZXN0Xy5jYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQ4Yjg3NzFiNTI0Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0
L3Rlc3QvZ3Rlc3RfeG1sX291dHB1dF91bml0dGVzdF8uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDYsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0Ogot
Ly8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0v
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0v
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci0vLyBBdXRob3I6IGVlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKQotCi0vLyBVbml0IHRl
c3QgZm9yIEdvb2dsZSBUZXN0IFhNTCBvdXRwdXQuCi0vLwotLy8gQSB1c2VyIGNhbiBzcGVjaWZ5
IFhNTCBvdXRwdXQgaW4gYSBHb29nbGUgVGVzdCBwcm9ncmFtIHRvIHJ1biB2aWEKLS8vIGVpdGhl
ciB0aGUgR1RFU1RfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSAtLWd0ZXN0X291
dHB1dAotLy8gZmxhZy4gIFRoaXMgaXMgdXNlZCBmb3IgdGVzdGluZyBzdWNoIGZ1bmN0aW9uYWxp
dHkuCi0vLwotLy8gVGhpcyBwcm9ncmFtIHdpbGwgYmUgaW52b2tlZCBmcm9tIGEgUHl0aG9uIHVu
aXQgdGVzdC4gIERvbid0IHJ1biBpdAotLy8gZGlyZWN0bHkuCi0KLSNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgotCi11c2luZyA6OnRlc3Rpbmc6OkluaXRHb29nbGVUZXN0OwotdXNpbmcgOjp0ZXN0
aW5nOjpUZXN0RXZlbnRMaXN0ZW5lcnM7Ci11c2luZyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW07
Ci11c2luZyA6OnRlc3Rpbmc6OlVuaXRUZXN0OwotdXNpbmcgOjp0ZXN0aW5nOjpUZXN0OwotdXNp
bmcgOjp0ZXN0aW5nOjpWYWx1ZXM7Ci0KLWNsYXNzIFN1Y2Nlc3NmdWxUZXN0IDogcHVibGljIFRl
c3QgewotfTsKLQotVEVTVF9GKFN1Y2Nlc3NmdWxUZXN0LCBTdWNjZWVkcykgewotICBTVUNDRUVE
KCkgPDwgIlRoaXMgaXMgYSBzdWNjZXNzLiI7Ci0gIEFTU0VSVF9FUSgxLCAxKTsKLX0KLQotY2xh
c3MgRmFpbGVkVGVzdCA6IHB1YmxpYyBUZXN0IHsKLX07Ci0KLVRFU1RfRihGYWlsZWRUZXN0LCBG
YWlscykgewotICBBU1NFUlRfRVEoMSwgMik7Ci19Ci0KLWNsYXNzIERpc2FibGVkVGVzdCA6IHB1
YmxpYyBUZXN0IHsKLX07Ci0KLVRFU1RfRihEaXNhYmxlZFRlc3QsIERJU0FCTEVEX3Rlc3Rfbm90
X3J1bikgewotICBGQUlMKCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJsZWQgdGVzdCBz
aG91bGQgbm90IGJlIHJ1biI7Ci19Ci0KLVRFU1QoTWl4ZWRSZXN1bHRUZXN0LCBTdWNjZWVkcykg
ewotICBFWFBFQ1RfRVEoMSwgMSk7Ci0gIEFTU0VSVF9FUSgxLCAxKTsKLX0KLQotVEVTVChNaXhl
ZFJlc3VsdFRlc3QsIEZhaWxzKSB7Ci0gIEVYUEVDVF9FUSgxLCAyKTsKLSAgQVNTRVJUX0VRKDIs
IDMpOwotfQotCi1URVNUKE1peGVkUmVzdWx0VGVzdCwgRElTQUJMRURfdGVzdCkgewotICBGQUlM
KCkgPDwgIlVuZXhwZWN0ZWQgZmFpbHVyZTogRGlzYWJsZWQgdGVzdCBzaG91bGQgbm90IGJlIHJ1
biI7Ci19Ci0KLVRFU1QoWG1sUXVvdGluZ1Rlc3QsIE91dHB1dHNDRGF0YSkgewotICBGQUlMKCkg
PDwgIlhNTCBvdXRwdXQ6ICIKLSAgICAgICAgICAgICI8P3htbCBlbmNvZGluZz1cInV0Zi04XCI+
PHRvcD48IVtDREFUQVtjZGF0YSB0ZXh0XV0+PC90b3A+IjsKLX0KLQotLy8gSGVscHMgdG8gdGVz
dCB0aGF0IGludmFsaWQgY2hhcmFjdGVycyBwcm9kdWNlZCBieSB0ZXN0IGNvZGUgZG8gbm90IG1h
a2UKLS8vIGl0IGludG8gdGhlIFhNTCBmaWxlLgotVEVTVChJbnZhbGlkQ2hhcmFjdGVyc1Rlc3Qs
IEludmFsaWRDaGFyYWN0ZXJzSW5NZXNzYWdlKSB7Ci0gIEZBSUwoKSA8PCAiSW52YWxpZCBjaGFy
YWN0ZXJzIGluIGJyYWNrZXRzIFtceDFceDJdIjsKLX0KLQotY2xhc3MgUHJvcGVydHlSZWNvcmRp
bmdUZXN0IDogcHVibGljIFRlc3QgewotIHB1YmxpYzoKLSAgc3RhdGljIHZvaWQgU2V0VXBUZXN0
Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlNldFVwVGVzdENhc2UiLCAieWVzIik7IH0KLSAgc3Rh
dGljIHZvaWQgVGVhckRvd25UZXN0Q2FzZSgpIHsgUmVjb3JkUHJvcGVydHkoIlRlYXJEb3duVGVz
dENhc2UiLCAiYXllIik7IH0KLX07Ci0KLVRFU1RfRihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIE9u
ZVByb3BlcnR5KSB7Ci0gIFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7Ci19Ci0KLVRFU1Rf
RihQcm9wZXJ0eVJlY29yZGluZ1Rlc3QsIEludFZhbHVlZFByb3BlcnR5KSB7Ci0gIFJlY29yZFBy
b3BlcnR5KCJrZXlfaW50IiwgMSk7Ci19Ci0KLVRFU1RfRihQcm9wZXJ0eVJlY29yZGluZ1Rlc3Qs
IFRocmVlUHJvcGVydGllcykgewotICBSZWNvcmRQcm9wZXJ0eSgia2V5XzEiLCAiMSIpOwotICBS
ZWNvcmRQcm9wZXJ0eSgia2V5XzIiLCAiMiIpOwotICBSZWNvcmRQcm9wZXJ0eSgia2V5XzMiLCAi
MyIpOwotfQotCi1URVNUX0YoUHJvcGVydHlSZWNvcmRpbmdUZXN0LCBUd29WYWx1ZXNGb3JPbmVL
ZXlVc2VzTGFzdFZhbHVlKSB7Ci0gIFJlY29yZFByb3BlcnR5KCJrZXlfMSIsICIxIik7Ci0gIFJl
Y29yZFByb3BlcnR5KCJrZXlfMSIsICIyIik7Ci19Ci0KLVRFU1QoTm9GaXh0dXJlVGVzdCwgUmVj
b3JkUHJvcGVydHkpIHsKLSAgUmVjb3JkUHJvcGVydHkoImtleSIsICIxIik7Ci19Ci0KLXZvaWQg
RXh0ZXJuYWxVdGlsaXR5VGhhdENhbGxzUmVjb3JkUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcm
IGtleSwgaW50IHZhbHVlKSB7Ci0gIHRlc3Rpbmc6OlRlc3Q6OlJlY29yZFByb3BlcnR5KGtleSwg
dmFsdWUpOwotfQotCi12b2lkIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1JlY29yZFByb3BlcnR5
KGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgewotICB0ZXN0aW5nOjpUZXN0
OjpSZWNvcmRQcm9wZXJ0eShrZXksIHZhbHVlKTsKLX0KLQotVEVTVChOb0ZpeHR1cmVUZXN0LCBF
eHRlcm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRJbnRWYWx1ZWRQcm9wZXJ0eSkgewotICBFeHRl
cm5hbFV0aWxpdHlUaGF0Q2FsbHNSZWNvcmRQcm9wZXJ0eSgia2V5X2Zvcl91dGlsaXR5X2ludCIs
IDEpOwotfQotCi1URVNUKE5vRml4dHVyZVRlc3QsIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1Jl
Y29yZFN0cmluZ1ZhbHVlZFByb3BlcnR5KSB7Ci0gIEV4dGVybmFsVXRpbGl0eVRoYXRDYWxsc1Jl
Y29yZFByb3BlcnR5KCJrZXlfZm9yX3V0aWxpdHlfc3RyaW5nIiwgIjEiKTsKLX0KLQotLy8gVmVy
aWZpZXMgdGhhdCB0aGUgdGVzdCBwYXJhbWV0ZXIgdmFsdWUgaXMgb3V0cHV0IGluIHRoZSAndmFs
dWVfcGFyYW0nCi0vLyBYTUwgYXR0cmlidXRlIGZvciB2YWx1ZS1wYXJhbWV0ZXJpemVkIHRlc3Rz
LgotY2xhc3MgVmFsdWVQYXJhbVRlc3QgOiBwdWJsaWMgVGVzdFdpdGhQYXJhbTxpbnQ+IHt9Owot
VEVTVF9QKFZhbHVlUGFyYW1UZXN0LCBIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7fQotVEVTVF9Q
KFZhbHVlUGFyYW1UZXN0LCBBbm90aGVyVGVzdFRoYXRIYXNWYWx1ZVBhcmFtQXR0cmlidXRlKSB7
fQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2luZ2xlLCBWYWx1ZVBhcmFtVGVzdCwgVmFsdWVz
KDMzLCA0MikpOwotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1QKLS8vIFZlcmlmaWVzIHRoYXQg
dGhlIHR5cGUgcGFyYW1ldGVyIG5hbWUgaXMgb3V0cHV0IGluIHRoZSAndHlwZV9wYXJhbScKLS8v
IFhNTCBhdHRyaWJ1dGUgZm9yIHR5cGVkIHRlc3RzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFR5cGVkVGVzdCA6IHB1YmxpYyBUZXN0IHt9OwotdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxp
bnQsIGxvbmc+IFR5cGVkVGVzdFR5cGVzOwotVFlQRURfVEVTVF9DQVNFKFR5cGVkVGVzdCwgVHlw
ZWRUZXN0VHlwZXMpOwotVFlQRURfVEVTVChUeXBlZFRlc3QsIEhhc1R5cGVQYXJhbUF0dHJpYnV0
ZSkge30KLSNlbmRpZgotCi0jaWYgR1RFU1RfSEFTX1RZUEVEX1RFU1RfUAotLy8gVmVyaWZpZXMg
dGhhdCB0aGUgdHlwZSBwYXJhbWV0ZXIgbmFtZSBpcyBvdXRwdXQgaW4gdGhlICd0eXBlX3BhcmFt
JwotLy8gWE1MIGF0dHJpYnV0ZSBmb3IgdHlwZS1wYXJhbWV0ZXJpemVkIHRlc3RzLgotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UgOiBwdWJsaWMg
VGVzdCB7fTsKLVRZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UpOwot
VFlQRURfVEVTVF9QKFR5cGVQYXJhbWV0ZXJpemVkVGVzdENhc2UsIEhhc1R5cGVQYXJhbUF0dHJp
YnV0ZSkge30KLVJFR0lTVEVSX1RZUEVEX1RFU1RfQ0FTRV9QKFR5cGVQYXJhbWV0ZXJpemVkVGVz
dENhc2UsIEhhc1R5cGVQYXJhbUF0dHJpYnV0ZSk7Ci10eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPGlu
dCwgbG9uZz4gVHlwZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZVR5cGVzOwotSU5TVEFOVElBVEVfVFlQ
RURfVEVTVF9DQVNFX1AoU2luZ2xlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw
ZVBhcmFtZXRlcml6ZWRUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5
cGVQYXJhbWV0ZXJpemVkVGVzdENhc2VUeXBlcyk7Ci0jZW5kaWYKLQotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KSB7Ci0gIEluaXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLQotICBp
ZiAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICItLXNodXRfZG93bl94bWwiKSA9PSAwKSB7
Ci0gICAgVGVzdEV2ZW50TGlzdGVuZXJzJiBsaXN0ZW5lcnMgPSBVbml0VGVzdDo6R2V0SW5zdGFu
Y2UoKS0+bGlzdGVuZXJzKCk7Ci0gICAgZGVsZXRlIGxpc3RlbmVycy5SZWxlYXNlKGxpc3RlbmVy
cy5kZWZhdWx0X3htbF9nZW5lcmF0b3IoKSk7Ci0gIH0KLSAgdGVzdGluZzo6VGVzdDo6UmVjb3Jk
UHJvcGVydHkoImFkX2hvY19wcm9wZXJ0eSIsICI0MiIpOwotICByZXR1cm4gUlVOX0FMTF9URVNU
UygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9ndGVzdF94bWxfdGVzdF91dGls
cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29v
Z2xldGVzdC9nb29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDM0MTk1NmI1NGRkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9n
b29nbGV0ZXN0L3Rlc3QvZ3Rlc3RfeG1sX3Rlc3RfdXRpbHMucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxOTQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA2
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotIiIiVW5pdCB0ZXN0IHV0aWxpdGllcyBmb3IgZ3Rlc3RfeG1sX291dHB1dCIiIgotCi1fX2F1
dGhvcl9fID0gJ2VlZmFjbUBnbWFpbC5jb20gKFNlYW4gTWNhZmVlKScKLQotaW1wb3J0IHJlCi1m
cm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20sIE5vZGUKLQotaW1wb3J0IGd0ZXN0X3Rlc3RfdXRp
bHMKLQotCi1HVEVTVF9PVVRQVVRfRkxBRyAgICAgICAgID0gJy0tZ3Rlc3Rfb3V0cHV0JwotR1RF
U1RfREVGQVVMVF9PVVRQVVRfRklMRSA9ICd0ZXN0X2RldGFpbC54bWwnCi0KLWNsYXNzIEdUZXN0
WE1MVGVzdENhc2UoZ3Rlc3RfdGVzdF91dGlscy5UZXN0Q2FzZSk6Ci0gICIiIgotICBCYXNlIGNs
YXNzIGZvciB0ZXN0cyBvZiBHb29nbGUgVGVzdCdzIFhNTCBvdXRwdXQgZnVuY3Rpb25hbGl0eS4K
LSAgIiIiCi0KLQotICBkZWYgQXNzZXJ0RXF1aXZhbGVudE5vZGVzKHNlbGYsIGV4cGVjdGVkX25v
ZGUsIGFjdHVhbF9ub2RlKToKLSAgICAiIiIKLSAgICBBc3NlcnRzIHRoYXQgYWN0dWFsX25vZGUg
KGEgRE9NIG5vZGUgb2JqZWN0KSBpcyBlcXVpdmFsZW50IHRvCi0gICAgZXhwZWN0ZWRfbm9kZSAo
YW5vdGhlciBET00gbm9kZSBvYmplY3QpLCBpbiB0aGF0IGVpdGhlciBib3RoIG9mCi0gICAgdGhl
bSBhcmUgQ0RBVEEgbm9kZXMgYW5kIGhhdmUgdGhlIHNhbWUgdmFsdWUsIG9yIGJvdGggYXJlIERP
TQotICAgIGVsZW1lbnRzIGFuZCBhY3R1YWxfbm9kZSBtZWV0cyBhbGwgb2YgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotCi0gICAgKiAgSXQgaGFzIHRoZSBzYW1lIHRhZyBuYW1lIGFzIGV4cGVj
dGVkX25vZGUuCi0gICAgKiAgSXQgaGFzIHRoZSBzYW1lIHNldCBvZiBhdHRyaWJ1dGVzIGFzIGV4
cGVjdGVkX25vZGUsIGVhY2ggd2l0aAotICAgICAgIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBjb3Jy
ZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiBleHBlY3RlZF9ub2RlLgotICAgICAgIEV4Y2VwdGlvbnMg
YXJlIGFueSBhdHRyaWJ1dGUgbmFtZWQgInRpbWUiLCB3aGljaCBuZWVkcyBvbmx5IGJlCi0gICAg
ICAgY29udmVydGlibGUgdG8gYSBmbG9hdGluZy1wb2ludCBudW1iZXIgYW5kIGFueSBhdHRyaWJ1
dGUgbmFtZWQKLSAgICAgICAidHlwZV9wYXJhbSIgd2hpY2ggb25seSBoYXMgdG8gYmUgbm9uLWVt
cHR5LgotICAgICogIEl0IGhhcyBhbiBlcXVpdmFsZW50IHNldCBvZiBjaGlsZCBub2RlcyAoaW5j
bHVkaW5nIGVsZW1lbnRzIGFuZAotICAgICAgIENEQVRBIHNlY3Rpb25zKSBhcyBleHBlY3RlZF9u
b2RlLiAgTm90ZSB0aGF0IHdlIGlnbm9yZSB0aGUKLSAgICAgICBvcmRlciBvZiB0aGUgY2hpbGRy
ZW4gYXMgdGhleSBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaW4gYW55Ci0gICAgICAgcGFydGlj
dWxhciBvcmRlci4KLSAgICAiIiIKLQotICAgIGlmIGV4cGVjdGVkX25vZGUubm9kZVR5cGUgPT0g
Tm9kZS5DREFUQV9TRUNUSU9OX05PREU6Ci0gICAgICBzZWxmLmFzc2VydEVxdWFscyhOb2RlLkNE
QVRBX1NFQ1RJT05fTk9ERSwgYWN0dWFsX25vZGUubm9kZVR5cGUpCi0gICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBlY3RlZF9ub2RlLm5vZGVWYWx1ZSwgYWN0dWFsX25vZGUubm9kZVZhbHVlKQot
ICAgICAgcmV0dXJuCi0KLSAgICBzZWxmLmFzc2VydEVxdWFscyhOb2RlLkVMRU1FTlRfTk9ERSwg
YWN0dWFsX25vZGUubm9kZVR5cGUpCi0gICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9kZS5FTEVNRU5U
X05PREUsIGV4cGVjdGVkX25vZGUubm9kZVR5cGUpCi0gICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRfbm9kZS50YWdOYW1lLCBhY3R1YWxfbm9kZS50YWdOYW1lKQotCi0gICAgZXhwZWN0ZWRf
YXR0cmlidXRlcyA9IGV4cGVjdGVkX25vZGUuYXR0cmlidXRlcwotICAgIGFjdHVhbF9hdHRyaWJ1
dGVzICAgPSBhY3R1YWxfbm9kZSAgLmF0dHJpYnV0ZXMKLSAgICBzZWxmLmFzc2VydEVxdWFscygK
LSAgICAgICAgZXhwZWN0ZWRfYXR0cmlidXRlcy5sZW5ndGgsIGFjdHVhbF9hdHRyaWJ1dGVzLmxl
bmd0aCwKLSAgICAgICAgJ2F0dHJpYnV0ZSBudW1iZXJzIGRpZmZlciBpbiBlbGVtZW50ICVzOlxu
RXhwZWN0ZWQ6ICVyXG5BY3R1YWw6ICVyJyAlICgKLSAgICAgICAgICAgIGFjdHVhbF9ub2RlLnRh
Z05hbWUsIGV4cGVjdGVkX2F0dHJpYnV0ZXMua2V5cygpLAotICAgICAgICAgICAgYWN0dWFsX2F0
dHJpYnV0ZXMua2V5cygpKSkKLSAgICBmb3IgaSBpbiByYW5nZShleHBlY3RlZF9hdHRyaWJ1dGVz
Lmxlbmd0aCk6Ci0gICAgICBleHBlY3RlZF9hdHRyID0gZXhwZWN0ZWRfYXR0cmlidXRlcy5pdGVt
KGkpCi0gICAgICBhY3R1YWxfYXR0ciAgID0gYWN0dWFsX2F0dHJpYnV0ZXMuZ2V0KGV4cGVjdGVk
X2F0dHIubmFtZSkKLSAgICAgIHNlbGYuYXNzZXJ0XygKLSAgICAgICAgICBhY3R1YWxfYXR0ciBp
cyBub3QgTm9uZSwKLSAgICAgICAgICAnZXhwZWN0ZWQgYXR0cmlidXRlICVzIG5vdCBmb3VuZCBp
biBlbGVtZW50ICVzJyAlCi0gICAgICAgICAgKGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25v
ZGUudGFnTmFtZSkpCi0gICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICBleHBlY3Rl
ZF9hdHRyLnZhbHVlLCBhY3R1YWxfYXR0ci52YWx1ZSwKLSAgICAgICAgICAnIHZhbHVlcyBvZiBh
dHRyaWJ1dGUgJXMgaW4gZWxlbWVudCAlcyBkaWZmZXI6ICVzIHZzICVzJyAlCi0gICAgICAgICAg
KGV4cGVjdGVkX2F0dHIubmFtZSwgYWN0dWFsX25vZGUudGFnTmFtZSwKLSAgICAgICAgICAgZXhw
ZWN0ZWRfYXR0ci52YWx1ZSwgYWN0dWFsX2F0dHIudmFsdWUpKQotCi0gICAgZXhwZWN0ZWRfY2hp
bGRyZW4gPSBzZWxmLl9HZXRDaGlsZHJlbihleHBlY3RlZF9ub2RlKQotICAgIGFjdHVhbF9jaGls
ZHJlbiA9IHNlbGYuX0dldENoaWxkcmVuKGFjdHVhbF9ub2RlKQotICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKAotICAgICAgICBsZW4oZXhwZWN0ZWRfY2hpbGRyZW4pLCBsZW4oYWN0dWFsX2NoaWxkcmVu
KSwKLSAgICAgICAgJ251bWJlciBvZiBjaGlsZCBlbGVtZW50cyBkaWZmZXIgaW4gZWxlbWVudCAn
ICsgYWN0dWFsX25vZGUudGFnTmFtZSkKLSAgICBmb3IgY2hpbGRfaWQsIGNoaWxkIGluIGV4cGVj
dGVkX2NoaWxkcmVuLml0ZW1zKCk6Ci0gICAgICBzZWxmLmFzc2VydF8oY2hpbGRfaWQgaW4gYWN0
dWFsX2NoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICc8JXM+IGlzIG5vdCBpbiA8JXM+IChp
biBlbGVtZW50ICVzKScgJQotICAgICAgICAgICAgICAgICAgIChjaGlsZF9pZCwgYWN0dWFsX2No
aWxkcmVuLCBhY3R1YWxfbm9kZS50YWdOYW1lKSkKLSAgICAgIHNlbGYuQXNzZXJ0RXF1aXZhbGVu
dE5vZGVzKGNoaWxkLCBhY3R1YWxfY2hpbGRyZW5bY2hpbGRfaWRdKQotCi0gIGlkZW50aWZ5aW5n
X2F0dHJpYnV0ZSA9IHsKLSAgICAndGVzdHN1aXRlcyc6ICduYW1lJywKLSAgICAndGVzdHN1aXRl
JzogJ25hbWUnLAotICAgICd0ZXN0Y2FzZSc6ICAnbmFtZScsCi0gICAgJ2ZhaWx1cmUnOiAgICdt
ZXNzYWdlJywKLSAgICB9Ci0KLSAgZGVmIF9HZXRDaGlsZHJlbihzZWxmLCBlbGVtZW50KToKLSAg
ICAiIiIKLSAgICBGZXRjaGVzIGFsbCBvZiB0aGUgY2hpbGQgbm9kZXMgb2YgZWxlbWVudCwgYSBE
T00gRWxlbWVudCBvYmplY3QuCi0gICAgUmV0dXJucyB0aGVtIGFzIHRoZSB2YWx1ZXMgb2YgYSBk
aWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBJRHMgb2YgdGhlCi0gICAgY2hpbGRyZW4uICBGb3IgPHRl
c3RzdWl0ZXM+LCA8dGVzdHN1aXRlPiBhbmQgPHRlc3RjYXNlPiBlbGVtZW50cywgdGhlIElECi0g
ICAgaXMgdGhlIHZhbHVlIG9mIHRoZWlyICJuYW1lIiBhdHRyaWJ1dGU7IGZvciA8ZmFpbHVyZT4g
ZWxlbWVudHMsIGl0IGlzCi0gICAgdGhlIHZhbHVlIG9mIHRoZSAibWVzc2FnZSIgYXR0cmlidXRl
OyBDREFUQSBzZWN0aW9ucyBhbmQgbm9uLXdoaXRlc3BhY2UKLSAgICB0ZXh0IG5vZGVzIGFyZSBj
b25jYXRlbmF0ZWQgaW50byBhIHNpbmdsZSBDREFUQSBzZWN0aW9uIHdpdGggSUQKLSAgICAiZGV0
YWlsIi4gIEFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgYW55IGVsZW1lbnQgb3RoZXIgdGhhbiB0
aGUgYWJvdmUKLSAgICBmb3VyIGlzIGVuY291bnRlcmVkLCBpZiB0d28gY2hpbGQgZWxlbWVudHMg
d2l0aCB0aGUgc2FtZSBpZGVudGlmeWluZwotICAgIGF0dHJpYnV0ZXMgYXJlIGVuY291bnRlcmVk
LCBvciBpZiBhbnkgb3RoZXIgdHlwZSBvZiBub2RlIGlzIGVuY291bnRlcmVkLgotICAgICIiIgot
Ci0gICAgY2hpbGRyZW4gPSB7fQotICAgIGZvciBjaGlsZCBpbiBlbGVtZW50LmNoaWxkTm9kZXM6
Ci0gICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERToKLSAgICAgICAg
c2VsZi5hc3NlcnRfKGNoaWxkLnRhZ05hbWUgaW4gc2VsZi5pZGVudGlmeWluZ19hdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAgICAgICAgICAnRW5jb3VudGVyZWQgdW5rbm93biBlbGVtZW50IDwlcz4n
ICUgY2hpbGQudGFnTmFtZSkKLSAgICAgICAgY2hpbGRJRCA9IGNoaWxkLmdldEF0dHJpYnV0ZShz
ZWxmLmlkZW50aWZ5aW5nX2F0dHJpYnV0ZVtjaGlsZC50YWdOYW1lXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfKGNoaWxkSUQgbm90IGluIGNoaWxkcmVuKQotICAgICAgICBjaGlsZHJlbltjaGlsZElE
XSA9IGNoaWxkCi0gICAgICBlbGlmIGNoaWxkLm5vZGVUeXBlIGluIFtOb2RlLlRFWFRfTk9ERSwg
Tm9kZS5DREFUQV9TRUNUSU9OX05PREVdOgotICAgICAgICBpZiAnZGV0YWlsJyBub3QgaW4gY2hp
bGRyZW46Ci0gICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09IE5vZGUuQ0RBVEFfU0VDVElP
Tl9OT0RFIG9yCi0gICAgICAgICAgICAgIG5vdCBjaGlsZC5ub2RlVmFsdWUuaXNzcGFjZSgpKToK
LSAgICAgICAgICAgIGNoaWxkcmVuWydkZXRhaWwnXSA9IGNoaWxkLm93bmVyRG9jdW1lbnQuY3Jl
YXRlQ0RBVEFTZWN0aW9uKAotICAgICAgICAgICAgICAgIGNoaWxkLm5vZGVWYWx1ZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICBjaGlsZHJlblsnZGV0YWlsJ10ubm9kZVZhbHVlICs9IGNoaWxk
Lm5vZGVWYWx1ZQotICAgICAgZWxzZToKLSAgICAgICAgc2VsZi5mYWlsKCdFbmNvdW50ZXJlZCB1
bmV4cGVjdGVkIG5vZGUgdHlwZSAlZCcgJSBjaGlsZC5ub2RlVHlwZSkKLSAgICByZXR1cm4gY2hp
bGRyZW4KLQotICBkZWYgTm9ybWFsaXplWG1sKHNlbGYsIGVsZW1lbnQpOgotICAgICIiIgotICAg
IE5vcm1hbGl6ZXMgR29vZ2xlIFRlc3QncyBYTUwgb3V0cHV0IHRvIGVsaW1pbmF0ZSByZWZlcmVu
Y2VzIHRvIHRyYW5zaWVudAotICAgIGluZm9ybWF0aW9uIHRoYXQgbWF5IGNoYW5nZSBmcm9tIHJ1
biB0byBydW4uCi0KLSAgICAqICBUaGUgInRpbWUiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1aXRlcz4s
IDx0ZXN0c3VpdGU+IGFuZCA8dGVzdGNhc2U+Ci0gICAgICAgZWxlbWVudHMgaXMgcmVwbGFjZWQg
d2l0aCBhIHNpbmdsZSBhc3RlcmlzaywgaWYgaXQgY29udGFpbnMKLSAgICAgICBvbmx5IGRpZ2l0
IGNoYXJhY3RlcnMuCi0gICAgKiAgVGhlICJ0aW1lc3RhbXAiIGF0dHJpYnV0ZSBvZiA8dGVzdHN1
aXRlcz4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCBhCi0gICAgICAgc2luZ2xlIGFzdGVyaXNr
LCBpZiBpdCBjb250YWlucyBhIHZhbGlkIElTTzg2MDEgZGF0ZXRpbWUgdmFsdWUuCi0gICAgKiAg
VGhlICJ0eXBlX3BhcmFtIiBhdHRyaWJ1dGUgb2YgPHRlc3RjYXNlPiBlbGVtZW50cyBpcyByZXBs
YWNlZCB3aXRoIGEKLSAgICAgICBzaW5nbGUgYXN0ZXJpc2sgKGlmIGl0IHNuIG5vbi1lbXB0eSkg
YXMgaXQgaXMgdGhlIHR5cGUgbmFtZSByZXR1cm5lZAotICAgICAgIGJ5IHRoZSBjb21waWxlciBh
bmQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgotICAgICogIFRoZSBsaW5lIGluZm8gcmVwb3J0ZWQg
aW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlICJtZXNzYWdlIgotICAgICAgIGF0dHJpYnV0ZSBhbmQg
Q0RBVEEgc2VjdGlvbiBvZiA8ZmFpbHVyZT4gZWxlbWVudHMgaXMgcmVwbGFjZWQgd2l0aCB0aGUK
LSAgICAgICBmaWxlJ3MgYmFzZW5hbWUgYW5kIGEgc2luZ2xlIGFzdGVyaXNrIGZvciB0aGUgbGlu
ZSBudW1iZXIuCi0gICAgKiAgVGhlIGRpcmVjdG9yeSBuYW1lcyBpbiBmaWxlIHBhdGhzIGFyZSBy
ZW1vdmVkLgotICAgICogIFRoZSBzdGFjayB0cmFjZXMgYXJlIHJlbW92ZWQuCi0gICAgIiIiCi0K
LSAgICBpZiBlbGVtZW50LnRhZ05hbWUgPT0gJ3Rlc3RzdWl0ZXMnOgotICAgICAgdGltZXN0YW1w
ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lc3RhbXAnKQotICAgICAgdGltZXN0YW1w
LnZhbHVlID0gcmUuc3ViKHInXlxkezR9LVxkXGQtXGRcZFRcZFxkOlxkXGQ6XGRcZCQnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqJywgdGltZXN0YW1wLnZhbHVlKQotICAgIGlm
IGVsZW1lbnQudGFnTmFtZSBpbiAoJ3Rlc3RzdWl0ZXMnLCAndGVzdHN1aXRlJywgJ3Rlc3RjYXNl
Jyk6Ci0gICAgICB0aW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0aW1lJykKLSAgICAg
IHRpbWUudmFsdWUgPSByZS5zdWIocideXGQrKFwuXGQrKT8kJywgJyonLCB0aW1lLnZhbHVlKQot
ICAgICAgdHlwZV9wYXJhbSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndHlwZV9wYXJhbScp
Ci0gICAgICBpZiB0eXBlX3BhcmFtIGFuZCB0eXBlX3BhcmFtLnZhbHVlOgotICAgICAgICB0eXBl
X3BhcmFtLnZhbHVlID0gJyonCi0gICAgZWxpZiBlbGVtZW50LnRhZ05hbWUgPT0gJ2ZhaWx1cmUn
OgotICAgICAgc291cmNlX2xpbmVfcGF0ID0gcideLipbL1xcXSguKjopXGQrXG4nCi0gICAgICAj
IFJlcGxhY2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBm
b3JtLgotICAgICAgbWVzc2FnZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgnbWVzc2FnZScp
Ci0gICAgICBtZXNzYWdlLnZhbHVlID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwgJ1xcMSpcbics
IG1lc3NhZ2UudmFsdWUpCi0gICAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgot
ICAgICAgICBpZiBjaGlsZC5ub2RlVHlwZSA9PSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKLSAg
ICAgICAgICAjIFJlcGxhY2VzIHRoZSBzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB3aXRoIGEgbm9y
bWFsaXplZCBmb3JtLgotICAgICAgICAgIGNkYXRhID0gcmUuc3ViKHNvdXJjZV9saW5lX3BhdCwg
J1xcMSpcbicsIGNoaWxkLm5vZGVWYWx1ZSkKLSAgICAgICAgICAjIFJlbW92ZXMgdGhlIGFjdHVh
bCBzdGFjayB0cmFjZS4KLSAgICAgICAgICBjaGlsZC5ub2RlVmFsdWUgPSByZS5zdWIocidcblN0
YWNrIHRyYWNlOlxuKC58XG4pKicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcnLCBjZGF0YSkKLSAgICBmb3IgY2hpbGQgaW4gZWxlbWVudC5jaGlsZE5vZGVzOgotICAgICAg
aWYgY2hpbGQubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgIHNlbGYuTm9y
bWFsaXplWG1sKGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9u
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4YjhhNDBiNDRlOWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90
ZXN0L3Byb2R1Y3Rpb24uY2MKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1
dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5A
Z29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQotLy8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5p
dCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0ZXN0X3Byb2QuaC4KLQotI2luY2x1ZGUgInByb2R1
Y3Rpb24uaCIKLQotUHJpdmF0ZUNvZGU6OlByaXZhdGVDb2RlKCkgOiB4XygwKSB7fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC90ZXN0L3By
b2R1Y3Rpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmZDVlNDc2Yzg4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QvdGVzdC9wcm9kdWN0aW9uLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNiwgR29vZ2xlIEluYy4KLS8v
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8v
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiB3YW5AZ29vZ2xlLmNvbSAoWmhhbnlvbmcgV2FuKQot
Ly8KLS8vIFRoaXMgaXMgcGFydCBvZiB0aGUgdW5pdCB0ZXN0IGZvciBpbmNsdWRlL2d0ZXN0L2d0
ZXN0X3Byb2QuaC4KLQotI2lmbmRlZiBHVEVTVF9URVNUX1BST0RVQ1RJT05fSF8KLSNkZWZpbmUg
R1RFU1RfVEVTVF9QUk9EVUNUSU9OX0hfCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdF9wcm9kLmgi
Ci0KLWNsYXNzIFByaXZhdGVDb2RlIHsKLSBwdWJsaWM6Ci0gIC8vIERlY2xhcmVzIGEgZnJpZW5k
IHRlc3QgdGhhdCBkb2VzIG5vdCB1c2UgYSBmaXh0dXJlLgotICBGUklFTkRfVEVTVChQcml2YXRl
Q29kZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJzKTsKLQotICAvLyBEZWNsYXJlcyBhIGZy
aWVuZCB0ZXN0IHRoYXQgdXNlcyBhIGZpeHR1cmUuCi0gIEZSSUVORF9URVNUKFByaXZhdGVDb2Rl
Rml4dHVyZVRlc3QsIENhbkFjY2Vzc1ByaXZhdGVNZW1iZXJzKTsKLQotICBQcml2YXRlQ29kZSgp
OwotCi0gIGludCB4KCkgY29uc3QgeyByZXR1cm4geF87IH0KLSBwcml2YXRlOgotICB2b2lkIHNl
dF94KGludCBhbl94KSB7IHhfID0gYW5feDsgfQotICBpbnQgeF87Ci19OwotCi0jZW5kaWYgIC8v
IEdURVNUX1RFU1RfUFJPRFVDVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUv
Q29uZmlnL0RlYnVnUHJvamVjdC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9E
ZWJ1Z1Byb2plY3QueGNjb25maWcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNjgx
NTdkNWQ1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9EZWJ1
Z1Byb2plY3QueGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vLwotLy8g
IERlYnVnUHJvamVjdC54Y2NvbmZpZwotLy8KLS8vICBUaGVzZSBhcmUgRGVidWcgQ29uZmlndXJh
dGlvbiBwcm9qZWN0IHNldHRpbmdzIGZvciB0aGUgZ3Rlc3QgZnJhbWV3b3JrIGFuZAotLy8gIGV4
YW1wbGVzLiBJdCBpcyBzZXQgaW4gdGhlICJCYXNlZCBPbjoiIGRyb3Bkb3duIGluIHRoZSAiUHJv
amVjdCIgaW5mbwotLy8gIGRpYWxvZy4KLS8vICBUaGlzIGZpbGUgaXMgYmFzZWQgb24gdGhlIFhj
b2RlIENvbmZpZ3VyYXRpb24gZmlsZXMgaW46Ci0vLyAgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L2dvb2dsZS10b29sYm94LWZvci1tYWMvCi0vLyAKLQotI2luY2x1ZGUgIkdlbmVyYWwueGNjb25m
aWciCi0KLS8vIE5vIG9wdGltaXphdGlvbgotR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDAKLQot
Ly8gRGVwbG95bWVudCBwb3N0cHJvY2Vzc2luZyBpcyB3aGF0IHRyaWdnZXJzIFhjb2RlIHRvIHN0
cmlwLCB0dXJuIGl0IG9mZgotREVQTE9ZTUVOVF9QT1NUUFJPQ0VTU0lORyA9IE5PCi0KLS8vIERl
YWQgY29kZSBzdHJpcHBpbmcgb2ZmCi1ERUFEX0NPREVfU1RSSVBQSU5HID0gTk8KLQotLy8gRGVi
dWcgc3ltYm9scyBzaG91bGQgYmUgb24gb2J2aW91c2x5Ci1HQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBZRVMKLQotLy8gRGVmaW5lIHRoZSBERUJVRyBtYWNybyBpbiBhbGwgZGVidWcg
YnVpbGRzCi1PVEhFUl9DRkxBR1MgPSAkKE9USEVSX0NGTEFHUykgLURERUJVRz0xCi0KLS8vIFRo
ZXNlIGFyZSB0dXJuZWQgb2ZmIHRvIGF2b2lkIFNUTCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGNs
aWVudCBjb2RlCi0vLyAvLyBUdXJucyBvbiBzcGVjaWFsIEMrKyBTVEwgY2hlY2tzIHRvICJlbmNv
dXJhZ2UiIGdvb2QgU1RMIHVzZQotLy8gR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQo
R0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUykgX0dMSUJDWFhfREVCVUdfUEVEQU5USUMgX0dM
SUJDWFhfREVCVUcgX0dMSUJDUFBfQ09OQ0VQVF9DSEVDS1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0
ZXN0L3hjb2RlL0NvbmZpZy9GcmFtZXdvcmtUYXJnZXQueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94
Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzNTdiMWM4ZmJmYTIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94
Y29kZS9Db25maWcvRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEs
MTcgKzAsMCBAQAotLy8KLS8vICBGcmFtZXdvcmtUYXJnZXQueGNjb25maWcKLS8vCi0vLyAgVGhl
c2UgYXJlIEZyYW1ld29yayB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdvcmsg
YW5kIGV4YW1wbGVzLiBJdAotLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24g
aW4gdGhlICJUYXJnZXQiIGluZm8gZGlhbG9nLgotLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0
aGUgWGNvZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvZ29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vIAotCi0vLyBEeW5hbWljIGxpYnMgbmVl
ZCB0byBiZSBwb3NpdGlvbiBpbmRlcGVuZGVudAotR0NDX0RZTkFNSUNfTk9fUElDID0gTk8KLQot
Ly8gRHluYW1pYyBsaWJzIHNob3VsZCBub3QgaGF2ZSB0aGVpciBleHRlcm5hbCBzeW1ib2xzIHN0
cmlwcGVkLgotU1RSSVBfU1RZTEUgPSBub24tZ2xvYmFsCi0KLS8vIExldCB0aGUgdXNlciBpbnN0
YWxsIGJ5IHNwZWNpZnlpbmcgdGhlICREU1RST09UIHdpdGggeGNvZGVidWlsZAotU0tJUF9JTlNU
QUxMID0gTk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhj
Y29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL0dlbmVyYWwueGNjb25maWcKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyM2UzMjIyNzI3NS4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9HZW5lcmFsLnhjY29uZmlnCisrKyAvZGV2L251bGwK
QEAgLTEsNDEgKzAsMCBAQAotLy8KLS8vICBHZW5lcmFsLnhjY29uZmlnCi0vLwotLy8gIFRoZXNl
IGFyZSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdv
cmsgYW5kCi0vLyAgZXhhbXBsZXMuCi0vLyAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBYY29k
ZSBDb25maWd1cmF0aW9uIGZpbGVzIGluOgotLy8gIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9n
b29nbGUtdG9vbGJveC1mb3ItbWFjLwotLy8gCi0KLS8vIEJ1aWxkIGZvciBQUEMgYW5kIEludGVs
LCAzMi0gYW5kIDY0LWJpdAotQVJDSFMgPSBpMzg2IHg4Nl82NCBwcGMgcHBjNjQKLQotLy8gWmVy
b2xpbmsgcHJldmVudHMgbGluayB3YXJuaW5ncyBzbyB0dXJuIGl0IG9mZgotWkVST19MSU5LID0g
Tk8KLQotLy8gUHJlYmluZGluZyBjb25zaWRlcmVkIHVuaGVscGZ1bCBpbiAxMC4zIGFuZCBsYXRl
cgotUFJFQklORElORyA9IE5PCi0KLS8vIFN0cmljdGVzdCB3YXJuaW5nIHBvbGljeQotV0FSTklO
R19DRkxBR1MgPSAtV2FsbCAtV2Vycm9yIC1XZW5kaWYtbGFiZWxzIC1XbmV3bGluZS1lb2YgLVdu
by1zaWduLWNvbXBhcmUgLVdzaGFkb3cKLQotLy8gV29yayBhcm91bmQgWGNvZGUgYnVncyBieSB1
c2luZyBleHRlcm5hbCBzdHJpcC4gU2VlOgotLy8gaHR0cDovL2xpc3RzLmFwcGxlLmNvbS9hcmNo
aXZlcy9YY29kZS11c2Vycy8yMDA2L0ZlYi9tc2cwMDA1MC5odG1sCi1TRVBBUkFURV9TVFJJUCA9
IFlFUwotCi0vLyBGb3JjZSBDOTkgZGlhbGVjdAotR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBj
OTkKLQotLy8gbm90IHN1cmUgd2h5IGFwcGxlIGRlZmF1bHRzIHRoaXMgb24sIGJ1dCBpdCdzIHBy
ZXR0eSByaXNreQotQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk8KLQotLy8gVHVybiBvbiBw
b3NpdGlvbiBkZXBlbmRlbnQgY29kZSBmb3IgbW9zdCBjYXNlcyAob3ZlcnJpZGRlbiB3aGVyZSBh
cHByb3ByaWF0ZSkKLUdDQ19EWU5BTUlDX05PX1BJQyA9IFlFUwotCi0vLyBEZWZhdWx0IFNESyBh
bmQgbWluaW11bSBPUyB2ZXJzaW9uIGlzIDEwLjQKLVNES1JPT1QgPSAkKERFVkVMT1BFUl9TREtf
RElSKS9NYWNPU1gxMC40dS5zZGsKLU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjQKLUdD
Q19WRVJTSU9OID0gNC4wCi0KLS8vIFZFUlNJT05JTkcgQlVJTEQgU0VUVElOR1MgKHVzZWQgaW4g
SW5mby5wbGlzdCkKLUdURVNUX1ZFUlNJT05JTkZPX0FCT1VUID0gIMKpIDIwMDggR29vZ2xlIElu
Yy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54
Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL0NvbmZpZy9SZWxlYXNlUHJvamVjdC54Y2NvbmZp
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0OWYwYTA0YWZjLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1JlbGVhc2VQcm9qZWN0LnhjY29uZmln
CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLy8KLS8vICBSZWxlYXNlUHJvamVjdC54
Y2NvbmZpZwotLy8KLS8vICBUaGVzZSBhcmUgUmVsZWFzZSBDb25maWd1cmF0aW9uIHByb2plY3Qg
c2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdvcmsKLS8vICBhbmQgZXhhbXBsZXMuIEl0IGlz
IHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJQcm9qZWN0IiBpbmZvCi0v
LyAgZGlhbG9nLgotLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNvZGUgQ29uZmlndXJh
dGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXRvb2xi
b3gtZm9yLW1hYy8KLS8vIAotCi0jaW5jbHVkZSAiR2VuZXJhbC54Y2NvbmZpZyIKLQotLy8gc3Vi
Y29uZmlnL1JlbGVhc2UueGNjb25maWcKLQotLy8gT3B0aW1pemUgZm9yIHNwYWNlIGFuZCBzaXpl
IChBcHBsZSByZWNvbW1lbmRhdGlvbikKLUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSBzCi0KLS8v
IERlcGxvbWVudCBwb3N0cHJvY2Vzc2luZyBpcyB3aGF0IHRyaWdnZXJzIFhjb2RlIHRvIHN0cmlw
Ci1ERVBMT1lNRU5UX1BPU1RQUk9DRVNTSU5HID0gWUVTCi0KLS8vIE5vIHN5bWJvbHMKLUdDQ19H
RU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5PCi0KLS8vIERlYWQgY29kZSBzdHJpcCBkb2Vz
IG5vdCBhZmZlY3QgT2JqQyBjb2RlIGJ1dCBjYW4gaGVscCBmb3IgQwotREVBRF9DT0RFX1NUUklQ
UElORyA9IFlFUwotCi0vLyBOREVCVUcgaXMgdXNlZCBieSB0aGluZ3MgbGlrZSBhc3NlcnQuaCwg
c28gZGVmaW5lIGl0IGZvciBnZW5lcmFsIGNvbXBhdC4KLS8vIEFTU0VSVCBnb2luZyBhd2F5IGlu
IHJlbGVhc2UgdGVuZHMgdG8gY3JlYXRlIHVudXNlZCB2YXJzLgotT1RIRVJfQ0ZMQUdTID0gJChP
VEhFUl9DRkxBR1MpIC1ETkRFQlVHPTEgLVduby11bnVzZWQtdmFyaWFibGUKLQotLy8gV2hlbiB3
ZSBzdHJpcCB3ZSB3YW50IHRvIHN0cmlwIGFsbCBzeW1ib2xzIGluIHJlbGVhc2UsIGJ1dCBzYXZl
IGV4dGVybmFscy4KLVNUUklQX1NUWUxFID0gYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94
Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hj
b2RlL0NvbmZpZy9TdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzOTIyZmE1MWQ1MmQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVz
dC94Y29kZS9Db25maWcvU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZworKysgL2Rldi9udWxs
CkBAIC0xLDE4ICswLDAgQEAKLS8vCi0vLyAgU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZwot
Ly8KLS8vICBUaGVzZSBhcmUgc3RhdGljIGxpYnJhcnkgdGFyZ2V0IHNldHRpbmdzIGZvciBsaWJn
dGVzdC5hLiBJdAotLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhl
ICJUYXJnZXQiIGluZm8gZGlhbG9nLgotLy8gIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiB0aGUgWGNv
ZGUgQ29uZmlndXJhdGlvbiBmaWxlcyBpbjoKLS8vICBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXRvb2xib3gtZm9yLW1hYy8KLS8vIAotCi0vLyBTdGF0aWMgbGlicyBjYW4gYmUgaW5j
bHVkZWQgaW4gYnVuZGxlcyBzbyBtYWtlIHRoZW0gcG9zaXRpb24gaW5kZXBlbmRlbnQKLUdDQ19E
WU5BTUlDX05PX1BJQyA9IE5PCi0KLS8vIFN0YXRpYyBsaWJzIHNob3VsZCBub3QgaGF2ZSB0aGVp
ciBpbnRlcm5hbCBnbG9iYWxzIG9yIGV4dGVybmFsIHN5bWJvbHMKLS8vIHN0cmlwcGVkLgotU1RS
SVBfU1RZTEUgPSBkZWJ1Z2dpbmcKLQotLy8gTGV0IHRoZSB1c2VyIGluc3RhbGwgYnkgc3BlY2lm
eWluZyB0aGUgJERTVFJPT1Qgd2l0aCB4Y29kZWJ1aWxkCi1TS0lQX0lOU1RBTEwgPSBOTwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC94Y29kZS9Db25maWcvVGVzdFRhcmdldC54Y2NvbmZpZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTY2NTJiYTg1OTkwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2ds
ZXRlc3QveGNvZGUvQ29uZmlnL1Rlc3RUYXJnZXQueGNjb25maWcKKysrIC9kZXYvbnVsbApAQCAt
MSw4ICswLDAgQEAKLS8vCi0vLyAgVGVzdFRhcmdldC54Y2NvbmZpZwotLy8KLS8vICBUaGVzZSBh
cmUgVGVzdCB0YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBndGVzdCBmcmFtZXdvcmsgYW5kIGV4YW1w
bGVzLiBJdAotLy8gIGlzIHNldCBpbiB0aGUgIkJhc2VkIE9uOiIgZHJvcGRvd24gaW4gdGhlICJU
YXJnZXQiIGluZm8gZGlhbG9nLgotCi1QUk9EVUNUX05BTUUgPSAkKFRBUkdFVF9OQU1FKQotSEVB
REVSX1NFQVJDSF9QQVRIUyA9IC4uL2luY2x1ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hj
b2RlL1Jlc291cmNlcy9JbmZvLnBsaXN0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvUmVzb3VyY2VzL0lu
Zm8ucGxpc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZDI4ZWExNDg1YS4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1Jlc291cmNlcy9JbmZvLnBsaXN0Cisr
KyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1Qg
MS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQi
PgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1l
bnRSZWdpb248L2tleT4KLQk8c3RyaW5nPkVuZ2xpc2g8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxl
RXhlY3V0YWJsZTwva2V5PgotCTxzdHJpbmc+JHtFWEVDVVRBQkxFX05BTUV9PC9zdHJpbmc+Ci0J
PGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0cmluZz48L3N0cmluZz4KLQk8a2V5PkNG
QnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+Y29tLmdvb2dsZS4ke1BST0RVQ1RfTkFN
RX08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0J
PHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KLQk8
c3RyaW5nPkZNV0s8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2lnbmF0dXJlPC9rZXk+Ci0JPHN0
cmluZz4/Pz8/PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT4KLQk8c3RyaW5n
PkdURVNUX1ZFUlNJT05JTkZPX0xPTkc8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hvcnRWZXJz
aW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz5HVEVTVF9WRVJTSU9OSU5GT19TSE9SVDwvc3RyaW5n
PgotCTxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4ke1BST0RVQ1Rf
TkFNRX0gR1RFU1RfVkVSU0lPTklORk9fTE9ORywgJHtHVEVTVF9WRVJTSU9OSU5GT19BQk9VVH08
L3N0cmluZz4KLQk8a2V5Pk5TSHVtYW5SZWFkYWJsZUNvcHlyaWdodDwva2V5PgotCTxzdHJpbmc+
JHtHVEVTVF9WRVJTSU9OSU5GT19BQk9VVH08L3N0cmluZz4KLQk8a2V5PkNTUmVzb3VyY2VzRmls
ZU1hcHBlZDwva2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
Z29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9JbmZvLnBsaXN0IGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dv
b2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvSW5mby5wbGlzdApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4NTJlZGVhMjc3Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvSW5mby5wbGlzdAorKysg
L2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
LTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZURldmVsb3BtZW50
UmVnaW9uPC9rZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUV4
ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPiR7RVhFQ1VUQUJMRV9OQU1FfTwvc3RyaW5nPgotCTxr
ZXk+Q0ZCdW5kbGVJY29uRmlsZTwva2V5PgotCTxzdHJpbmc+PC9zdHJpbmc+Ci0JPGtleT5DRkJ1
bmRsZUlkZW50aWZpZXI8L2tleT4KLQk8c3RyaW5nPmNvbS5nb29nbGUuZ3Rlc3QuJHtQUk9EVUNU
X05BTUU6aWRlbnRpZmllcn08L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlW
ZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlTmFtZTwv
a2V5PgotCTxzdHJpbmc+JHtQUk9EVUNUX05BTUV9PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVBh
Y2thZ2VUeXBlPC9rZXk+Ci0JPHN0cmluZz5GTVdLPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVNo
b3J0VmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+MS4wPC9zdHJpbmc+Ci0JPGtleT5DRkJ1
bmRsZVNpZ25hdHVyZTwva2V5PgotCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5k
bGVWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4KLQk8a2V5PkNTUmVzb3VyY2Vz
RmlsZU1hcHBlZDwva2V5PgotCTx0cnVlLz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRl
c3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRGcmFtZXdv
cmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMv
RnJhbWV3b3JrU2FtcGxlL1dpZGdldEZyYW1ld29yay54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWRhNjAyNDQ0NzAuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS9XaWRnZXRG
cmFtZXdvcmsueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDQ1
NyArMCwwIEBACi0vLyAhJCpVVEY4KiQhCi17Ci0JYXJjaGl2ZVZlcnNpb24gPSAxOwotCWNsYXNz
ZXMgPSB7Ci0JfTsKLQlvYmplY3RWZXJzaW9uID0gNDI7Ci0Jb2JqZWN0cyA9IHsKLQotLyogQmVn
aW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KLQkJNDAyNEQxNjIxMTNEN0QyNDAwQzcw
NTlFIC8qIFRlc3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7Ci0JCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gNDAyNEQxNjkxMTNEN0Q0NjAwQzcwNTlFIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJUZXN0IiAqLzsKLQkJCWJ1
aWxkUGhhc2VzID0gKAotCQkJCTQwMjREMTYxMTEzRDdEMjQwMEM3MDU5RSAvKiBTaGVsbFNjcmlw
dCAqLywKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDAyNEQxNjYxMTNEN0QzMTAw
QzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFRlc3Q7
Ci0JCQlwcm9kdWN0TmFtZSA9IFRlc3RBbmRCdWlsZDsKLQkJfTsKLQkJNDAyNEQxRTkxMTNEODNG
RjAwQzcwNTlFIC8qIFRlc3RBbmRCdWlsZCAqLyA9IHsKLQkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRh
cmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MDI0RDFGMDExM0Q4NDJCMDBDNzA1
OUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlRl
c3RBbmRCdWlsZCIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNp
ZXMgPSAoCi0JCQkJNDAyNEQxRUQxMTNEODQwOTAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCi0JCQkJNDAyNEQxRUYxMTNEODQwRDAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFRlc3RBbmRCdWlsZDsKLQkJCXByb2R1Y3ROYW1lID0g
VGVzdEFuZEJ1aWxkOwotCQl9OwotLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTNCN0VCMTI1MEU1QUVFMzUw
MEM3RjIzOSAvKiB3aWRnZXQuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzQjdFQjEyMzBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmNjICovOyB9Owot
CQkzQjdFQjEyNjBFNUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjdFQjEyNDBFNUFFRTM1MDBDN0YyMzkgLyog
d2lkZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owot
CQkzQjdFQjEyODBFNUFFRTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjdFQjEyNzBFNUFFRTQ2MDBDN0Yy
MzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi87IH07Ci0JCTNCN0VCMTQ4MEU1QUYzQjQwMEM3RjIzOSAv
KiBXaWRnZXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOEQwN0YyQzgwNDg2Q0M3QTAwN0NEMUQwIC8qIFdpZGdldC5mcmFtZXdvcmsg
Ki87IH07Ci0JCTQwMjREMTg4MTEzRDdENzgwMEM3MDU5RSAvKiBsaWJndGVzdC5hIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDAyNEQxODUxMTNEN0Q1
NTAwQzcwNTlFIC8qIGxpYmd0ZXN0LmEgKi87IH07Ci0JCTQwMjREMTg5MTEzRDdEN0EwMEM3MDU5
RSAvKiBsaWJndGVzdF9tYWluLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MDI0RDE4MzExM0Q3RDU1MDBDNzA1OUUgLyogbGliZ3Rlc3RfbWFpbi5h
ICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCi0JCTNCMDdCREYwMEUzRjNGQUUwMDY0Nzg2OSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDA7Ci0JCQlyZW1vdGVJbmZvID0gZ1Rlc3RF
eGFtcGxlOwotCQl9OwotCQk0MDI0RDE2NTExM0Q3RDMxMDBDNzA1OUUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0gewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOwotCQkJcHJveHlUeXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gM0IwN0JE
RTkwRTNGM0Y5RTAwNjQ3ODY5OwotCQkJcmVtb3RlSW5mbyA9IFdpZGdldEZyYW1ld29ya1Rlc3Q7
Ci0JCX07Ci0JCTQwMjREMUVDMTEzRDg0MDkwMEM3MDU5RSAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0J
CQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4RDA3RjJCQzA0ODZD
QzdBMDA3Q0QxRDA7Ci0JCQlyZW1vdGVJbmZvID0gV2lkZ2V0RnJhbWV3b3JrOwotCQl9OwotCQk0
MDI0RDFFRTExM0Q4NDBEMDBDNzA1OUUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewot
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0gMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlUeXBl
ID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDAyNEQxNjIxMTNEN0QyNDAwQzcwNTlF
OwotCQkJcmVtb3RlSW5mbyA9IFRlc3Q7Ci0JCX07Ci0vKiBFbmQgUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0J
CTNCMDdCREVBMEUzRjNGOUUwMDY0Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtUZXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXaWRnZXRGcmFtZXdvcmtU
ZXN0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkzQjdFQjEyMzBFNUFF
RTM1MDBDN0YyMzkgLyogd2lkZ2V0LmNjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gd2lkZ2V0LmNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzQjdFQjEyNDBF
NUFFRTM1MDBDN0YyMzkgLyogd2lkZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IHdpZGdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzQjdFQjEyNzBFNUFF
RTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB3aWRnZXRfdGVzdC5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDAyNEQxODMxMTNEN0Q1NTAwQzcwNTlFIC8qIGxpYmd0ZXN0X21haW4uYSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IG5hbWUgPSBs
aWJndGVzdF9tYWluLmE7IHBhdGggPSAvdXNyL2xvY2FsL2xpYi9saWJndGVzdF9tYWluLmE7IHNv
dXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTQwMjREMTg1MTEzRDdENTUwMEM3MDU5RSAv
KiBsaWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gYXJjaGl2ZS5hcjsgbmFtZSA9IGxpYmd0ZXN0LmE7IHBhdGggPSAvdXNyL2xvY2FsL2xp
Yi9saWJndGVzdC5hOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQk0MDI0RDFFMjEx
M0Q4MzgyMDBDNzA1OUUgLyogcnVudGVzdHMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsg
cGF0aCA9IHJ1bnRlc3RzLnNoOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RDA3RjJD
NzA0ODZDQzdBMDA3Q0QxRDAgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Q7IHBh
dGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4RDA3RjJDODA0
ODZDQzdBMDA3Q0QxRDAgLyogV2lkZ2V0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IFdpZGdldC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0vKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0KLS8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJM0IwN0JERTgwRTNGM0Y5
RTAwNjQ3ODY5IC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgK
LQkJCQk0MDI0RDE4ODExM0Q3RDc4MDBDNzA1OUUgLyogbGliZ3Rlc3QuYSBpbiBGcmFtZXdvcmtz
ICovLAotCQkJCTQwMjREMTg5MTEzRDdEN0EwMEM3MDU5RSAvKiBsaWJndGVzdF9tYWluLmEgaW4g
RnJhbWV3b3JrcyAqLywKLQkJCQkzQjdFQjE0ODBFNUFGM0I0MDBDN0YyMzkgLyogV2lkZ2V0LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk4RDA3RjJDMzA0ODZDQzdBMDA3Q0QxRDAgLyog
RnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJKTsKLQkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlv
biAqLwotCQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJvZHVjdHMgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTNCMDdCREVBMEUzRjNGOUUwMDY0
Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtUZXN0ICovLAotCQkJCThEMDdGMkM4MDQ4NkNDN0EwMDdD
RDFEMCAvKiBXaWRnZXQuZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5hbWUgPSBQcm9kdWN0czsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTA4NjdENjkxRkU4NDAyOEZDMDJB
QUMwNyAvKiBnVGVzdEV4YW1wbGUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxk
cmVuID0gKAotCQkJCTQwMjREMUUxMTEzRDgzNkMwMEM3MDU5RSAvKiBTY3JpcHRzICovLAotCQkJ
CTA4RkI3N0FDRkU4NDE3MDdDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCi0JCQkJMDg5QzE2NjVGRTg0
MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKLQkJCQkzQjA3QkUzNTBFNDA5NEU0MDA2NDc4
NjkgLyogVGVzdCAqLywKLQkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRXh0ZXJuYWwg
RnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAotCQkJCTAzNDc2OERERkYzOEE0NUExMURCOUM4
QiAvKiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0JCQluYW1lID0gZ1Rlc3RFeGFtcGxlOwotCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8q
IEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDAyNEQxODUxMTNEN0Q1NTAwQzcwNTlFIC8qIGxp
Ymd0ZXN0LmEgKi8sCi0JCQkJNDAyNEQxODMxMTNEN0Q1NTAwQzcwNTlFIC8qIGxpYmd0ZXN0X21h
aW4uYSAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJh
cmllcyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY2NUZFODQx
MTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQk4RDA3RjJDNzA0ODZDQzdBMDA3Q0QxRDAgLyogSW5mby5wbGlzdCAq
LywKLQkJCSk7Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMDhGQjc3QUNGRTg0MTcwN0MwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJ
CWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJM0I3RUIxMjMwRTVBRUUzNTAw
QzdGMjM5IC8qIHdpZGdldC5jYyAqLywKLQkJCQkzQjdFQjEyNDBFNUFFRTM1MDBDN0YyMzkgLyog
d2lkZ2V0LmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IFNvdXJjZTsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0JCTNCMDdCRTM1MEU0MDk0RTQwMDY0Nzg2OSAvKiBUZXN0ICovID0g
ewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkzQjdFQjEyNzBFNUFF
RTQ2MDBDN0YyMzkgLyogd2lkZ2V0X3Rlc3QuY2MgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFRlc3Q7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk0MDI0RDFFMTExM0Q4MzZDMDBD
NzA1OUUgLyogU2NyaXB0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJNDAyNEQxRTIxMTNEODM4MjAwQzcwNTlFIC8qIHJ1bnRlc3RzLnNoICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBTY3JpcHRzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsK
LS8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KLQkJOEQwN0YyQkQwNDg2Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkzQjdFQjEyNjBFNUFFRTM1MDBDN0YyMzkg
Lyogd2lkZ2V0LmggaW4gSGVhZGVycyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCi0JCTNCMDdC
REU5MEUzRjNGOUUwMDY0Nzg2OSAvKiBXaWRnZXRGcmFtZXdvcmtUZXN0ICovID0gewotCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDNCMDdCREY0
MEUzRjNGQjYwMDY0Nzg2OSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiV2lkZ2V0RnJhbWV3b3JrVGVzdCIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJ
CQkzQjA3QkRFNzBFM0YzRjlFMDA2NDc4NjkgLyogU291cmNlcyAqLywKLQkJCQkzQjA3QkRFODBF
M0YzRjlFMDA2NDc4NjkgLyogRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlidWlsZFJ1bGVzID0g
KAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJCQkzQjA3QkRGMTBFM0YzRkFFMDA2NDc4
NjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJCSk7Ci0JCQluYW1lID0gV2lkZ2V0RnJh
bWV3b3JrVGVzdDsKLQkJCXByb2R1Y3ROYW1lID0gZ1Rlc3RFeGFtcGxlVGVzdDsKLQkJCXByb2R1
Y3RSZWZlcmVuY2UgPSAzQjA3QkRFQTBFM0YzRjlFMDA2NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3Jr
VGVzdCAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7
Ci0JCX07Ci0JCThEMDdGMkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBXaWRnZXRGcmFtZXdvcmsgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gNEZBREMyNDIwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJXaWRnZXRGcmFtZXdvcmsiICovOwotCQkJYnVpbGRQaGFzZXMg
PSAoCi0JCQkJOEQwN0YyQzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8sCi0JCQkJOEQw
N0YyQzMwNDg2Q0M3QTAwN0NEMUQwIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkJOEQwN0YyQkQwNDg2
Q0M3QTAwN0NEMUQwIC8qIEhlYWRlcnMgKi8sCi0JCQkJOEQwN0YyQkYwNDg2Q0M3QTAwN0NEMUQw
IC8qIFJlc291cmNlcyAqLywKLQkJCQk4RDA3RjJDNTA0ODZDQzdBMDA3Q0QxRDAgLyogUmV6ICov
LAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAot
CQkJKTsKLQkJCW5hbWUgPSBXaWRnZXRGcmFtZXdvcms7Ci0JCQlwcm9kdWN0SW5zdGFsbFBhdGgg
PSAiJChIT01FKS9MaWJyYXJ5L0ZyYW1ld29ya3MiOwotCQkJcHJvZHVjdE5hbWUgPSBnVGVzdEV4
YW1wbGU7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gOEQwN0YyQzgwNDg2Q0M3QTAwN0NEMUQwIC8q
IFdpZGdldC5mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVj
dC10eXBlLmZyYW1ld29yayI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCTA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFByb2plY3Q7Ci0J
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2lkZ2V0RnJhbWV3b3JrIiAq
LzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0JCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMTsKLQkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMw
NyAvKiBnVGVzdEV4YW1wbGUgKi87Ci0JCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhEREZGMzhB
NDVBMTFEQjlDOEIgLyogUHJvZHVjdHMgKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJ
cHJvamVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQwN0YyQkMwNDg2Q0M3QTAw
N0NEMUQwIC8qIFdpZGdldEZyYW1ld29yayAqLywKLQkJCQkzQjA3QkRFOTBFM0YzRjlFMDA2NDc4
NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLywKLQkJCQk0MDI0RDE2MjExM0Q3RDI0MDBDNzA1
OUUgLyogVGVzdCAqLywKLQkJCQk0MDI0RDFFOTExM0Q4M0ZGMDBDNzA1OUUgLyogVGVzdEFuZEJ1
aWxkICovLAotCQkJKTsKLQkJfTsKLS8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyog
QmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThEMDdGMkJGMDQ4NkND
N0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWls
ZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAot
CQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9Owot
LyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhS
ZXpCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQwN0YyQzUwNDg2Q0M3QTAwN0NEMUQwIC8qIFJl
eiAqLyA9IHsKLQkJCWlzYSA9IFBCWFJlekJ1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYUmV6QnVpbGRQaGFzZSBzZWN0
aW9uICovCi0KLS8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCi0J
CTQwMjREMTYxMTEzRDdEMjQwMEM3MDU5RSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKLQkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhzID0gKAotCQkJKTsKLQkJCW91
dHB1dFBhdGhzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIi9iaW4v
YmFzaCAkU1JDUk9PVC9ydW50ZXN0cy5zaCAkQlVJTFRfUFJPRFVDVFNfRElSL1dpZGdldEZyYW1l
d29ya1Rlc3RcbiI7Ci0JCX07Ci0vKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQkzQjA3
QkRFNzBFM0YzRjlFMDA2NDc4NjkgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVz
ID0gKAotCQkJCTNCN0VCMTI4MEU1QUVFNDYwMEM3RjIzOSAvKiB3aWRnZXRfdGVzdC5jYyBpbiBT
b3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwotCQl9OwotCQk4RDA3RjJDMTA0ODZDQzdBMDA3Q0QxRDAgLyogU291cmNlcyAqLyA9IHsK
LQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTNCN0VCMTI1MEU1QUVFMzUwMEM3RjIzOSAvKiB3
aWRnZXQuY2MgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0KLS8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwotCQkzQjA3
QkRGMTBFM0YzRkFFMDA2NDc4NjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSA4RDA3RjJCQzA0ODZDQzdBMDA3
Q0QxRDAgLyogV2lkZ2V0RnJhbWV3b3JrICovOwotCQkJdGFyZ2V0UHJveHkgPSAzQjA3QkRGMDBF
M0YzRkFFMDA2NDc4NjkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotCQk0MDI0
RDE2NjExM0Q3RDMxMDBDNzA1OUUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKLQkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSAzQjA3QkRFOTBFM0YzRjlFMDA2
NDc4NjkgLyogV2lkZ2V0RnJhbWV3b3JrVGVzdCAqLzsKLQkJCXRhcmdldFByb3h5ID0gNDAyNEQx
NjUxMTNEN0QzMTAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJ
NDAyNEQxRUQxMTNEODQwOTAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gOEQwN0YyQkMwNDg2Q0M3
QTAwN0NEMUQwIC8qIFdpZGdldEZyYW1ld29yayAqLzsKLQkJCXRhcmdldFByb3h5ID0gNDAyNEQx
RUMxMTNEODQwOTAwQzcwNTlFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJ
NDAyNEQxRUYxMTNEODQwRDAwQzcwNTlFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0gNDAyNEQxNjIxMTNEN0Qy
NDAwQzcwNTlFIC8qIFRlc3QgKi87Ci0JCQl0YXJnZXRQcm94eSA9IDQwMjREMUVFMTEzRDg0MEQw
MEM3MDU5RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87Ci0JCX07Ci0vKiBFbmQgUEJYVGFy
Z2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KLQkJM0IwN0JERUMwRTNGM0Y5RjAwNjQ3ODY5IC8qIERlYnVnICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CVBST0RVQ1RfTkFNRSA9IFdpZGdldEZyYW1ld29ya1Rlc3Q7Ci0JCQl9OwotCQkJbmFtZSA9IERl
YnVnOwotCQl9OwotCQkzQjA3QkRFRDBFM0YzRjlGMDA2NDc4NjkgLyogUmVsZWFzZSAqLyA9IHsK
LQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJ
CQlQUk9EVUNUX05BTUUgPSBXaWRnZXRGcmFtZXdvcmtUZXN0OwotCQkJfTsKLQkJCW5hbWUgPSBS
ZWxlYXNlOwotCQl9OwotCQk0MDI0RDE2MzExM0Q3RDI0MDBDNzA1OUUgLyogRGVidWcgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0J
CQkJUFJPRFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsK
LQkJfTsKLQkJNDAyNEQxNjQxMTNEN0QyNDAwQzcwNTlFIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJP
RFVDVF9OQU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9
OwotCQk0MDI0RDFFQTExM0Q4M0ZGMDBDNzA1OUUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9O
QU1FID0gVGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDAy
NEQxRUIxMTNEODNGRjAwQzcwNTlFIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJUFJPRFVDVF9OQU1FID0g
VGVzdEFuZEJ1aWxkOwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0RkFEQzI0
MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9W
RVJTSU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUZSQU1FV09S
S19WRVJTSU9OID0gQTsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5T
VEFMTF9QQVRIID0gIkBsb2FkZXJfcGF0aC8uLi9GcmFtZXdvcmtzIjsKLQkJCQlQUk9EVUNUX05B
TUUgPSBXaWRnZXQ7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQk0RkFEQzI0NDA4
QjQxNTZEMDBBQkU1NUUgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlEWUxJQl9DT01QQVRJQklMSVRZX1ZF
UlNJT04gPSAxOwotCQkJCURZTElCX0NVUlJFTlRfVkVSU0lPTiA9IDE7Ci0JCQkJRlJBTUVXT1JL
X1ZFUlNJT04gPSBBOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKLQkJCQlJTlNU
QUxMX1BBVEggPSAiQGxvYWRlcl9wYXRoLy4uL0ZyYW1ld29ya3MiOwotCQkJCVBST0RVQ1RfTkFN
RSA9IFdpZGdldDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNEZBREMyNDcw
OEI0MTU2RDAwQUJFNTVFIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9OID0gNC4wOwotCQkJ
CVNES1JPT1QgPSAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrOwotCQkJfTsKLQkJCW5h
bWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNEZBREMyNDgwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2Ug
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3Mg
PSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSA0LjA7Ci0JCQkJU0RLUk9PVCA9IC9EZXZlbG9wZXIvU0RL
cy9NYWNPU1gxMC40dS5zZGs7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBF
bmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KLQkJM0IwN0JERjQwRTNGM0ZCNjAwNjQ3ODY5IC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXaWRnZXRGcmFtZXdvcmtU
ZXN0IiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAotCQkJCTNCMDdCREVDMEUzRjNGOUYwMDY0Nzg2OSAvKiBEZWJ1ZyAqLywK
LQkJCQkzQjA3QkRFRDBFM0YzRjlGMDA2NDc4NjkgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MDI0RDE2OTExM0Q3RDQ2MDBDNzA1OUUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIlRlc3QiICovID0g
ewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCi0JCQkJNDAyNEQxNjMxMTNEN0QyNDAwQzcwNTlFIC8qIERlYnVnICovLAotCQkJCTQwMjRE
MTY0MTEzRDdEMjQwMEM3MDU5RSAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7Ci0JCX07Ci0JCTQwMjREMUYwMTEzRDg0MkIwMEM3MDU5RSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiVGVzdEFuZEJ1aWxkIiAqLyA9IHsK
LQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAotCQkJCTQwMjREMUVBMTEzRDgzRkYwMEM3MDU5RSAvKiBEZWJ1ZyAqLywKLQkJCQk0MDI0RDFF
QjExM0Q4M0ZGMDBDNzA1OUUgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxl
YXNlOwotCQl9OwotCQk0RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldpZGdldEZyYW1ld29yayIgKi8gPSB7Ci0J
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
LQkJCQk0RkFEQzI0MzA4QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCi0JCQkJNEZBREMyNDQw
OEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKLQkJfTsKLQkJNEZBREMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2lkZ2V0RnJhbWV3b3JrIiAqLyA9IHsKLQkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTRG
QURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBEZWJ1ZyAqLywKLQkJCQk0RkFEQzI0ODA4QjQxNTZE
MDBBQkU1NUUgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9
OwotLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCX07Ci0Jcm9vdE9iamVj
dCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1bnRl
c3RzLnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9n
b29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvcnVudGVz
dHMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMGQ0MTNlNTJkZi4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxlL3J1
bnRlc3RzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotIyEvYmluL2Jhc2gKLSMK
LSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0jIEV4ZWN1dGVzIHRoZSBzYW1wbGVzIGFuZCB0ZXN0cyBmb3Ig
dGhlIEdvb2dsZSBUZXN0IEZyYW1ld29yay4KLQotIyBIZWxwIHRoZSBkeW5hbWljIGxpbmtlciBm
aW5kIHRoZSBwYXRoIHRvIHRoZSBsaWJyYXJpZXMuCi1leHBvcnQgRFlMRF9GUkFNRVdPUktfUEFU
SD0kQlVJTFRfUFJPRFVDVFNfRElSCi1leHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9JEJVSUxUX1BS
T0RVQ1RTX0RJUgotCi0jIENyZWF0ZSBzb21lIGV4ZWN1dGFibGVzLgotdGVzdF9leGVjdXRhYmxl
cz0kQAotCi0jIE5vdyBleGVjdXRlIGVhY2ggb25lIGluIHR1cm4ga2VlcGluZyB0cmFjayBvZiBo
b3cgbWFueSBzdWNjZWVkZWQgYW5kIGZhaWxlZC4KLXN1Y2NlZWRlZD0wCi1mYWlsZWQ9MAotZmFp
bGVkX2xpc3Q9KCkKLWZvciB0ZXN0IGluICR7dGVzdF9leGVjdXRhYmxlc1sqXX07IGRvCi0gICIk
dGVzdCIKLSAgcmVzdWx0PSQ/Ci0gIGlmIFsgJHJlc3VsdCAtZXEgMCBdOyB0aGVuCi0gICAgc3Vj
Y2VlZGVkPSQoKCAkc3VjY2VlZGVkICsgMSApKQotICBlbHNlCi0gICAgZmFpbGVkPSQoKCBmYWls
ZWQgKyAxICkpCi0gICAgZmFpbGVkX2xpc3Q9IiRmYWlsZWRfbGlzdCAkdGVzdCIKLSAgZmkKLWRv
bmUKLQotIyBSZXBvcnQgdGhlIHN1Y2Nlc3NlcyBhbmQgZmFpbHVyZXMgdG8gdGhlIGNvbnNvbGUu
Ci1lY2hvICJUZXN0cyBjb21wbGV0ZSB3aXRoICRzdWNjZWVkZWQgc3VjY2Vzc2VzIGFuZCAkZmFp
bGVkIGZhaWx1cmVzLiIKLWlmIFsgJGZhaWxlZCAtbmUgMCBdOyB0aGVuCi0gIGVjaG8gIlRoZSBm
b2xsb3dpbmcgdGVzdHMgZmFpbGVkOiIKLSAgZWNobyAkZmFpbGVkX2xpc3QKLWZpCi1leGl0ICRm
YWlsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2Ft
cGxlL3dpZGdldC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NhbXBsZXMvRnJhbWV3b3JrU2FtcGxl
L3dpZGdldC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjNGU3ZmNmZDBlLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1w
bGUvd2lkZ2V0LmNjCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IDIwMDgsIEdvb2dsZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24u
Ci0vLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0vLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLy8KLS8vIEF1dGhvcjogcHJlc3Rvbi5h
LmphY2tzb25AZ21haWwuY29tIChQcmVzdG9uIEphY2tzb24pCi0vLwotLy8gR29vZ2xlIFRlc3Qg
LSBGcmFtZXdvcmtTYW1wbGUKLS8vIHdpZGdldC5jYwotLy8KLQotLy8gV2lkZ2V0IGlzIGEgdmVy
eSBzaW1wbGUgY2xhc3MgdXNlZCBmb3IgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mIGd0ZXN0Ci0K
LSNpbmNsdWRlICJ3aWRnZXQuaCIKLQotV2lkZ2V0OjpXaWRnZXQoaW50IG51bWJlciwgY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUpCi0gICAgOiBudW1iZXJfKG51bWJlciksCi0gICAgICBuYW1lXyhu
YW1lKSB7fQotCi1XaWRnZXQ6On5XaWRnZXQoKSB7fQotCi1mbG9hdCBXaWRnZXQ6OkdldEZsb2F0
VmFsdWUoKSBjb25zdCB7Ci0gIHJldHVybiBudW1iZXJfOwotfQotCi1pbnQgV2lkZ2V0OjpHZXRJ
bnRWYWx1ZSgpIGNvbnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obnVtYmVyXyk7Ci19
Ci0KLXN0ZDo6c3RyaW5nIFdpZGdldDo6R2V0U3RyaW5nVmFsdWUoKSBjb25zdCB7Ci0gIHJldHVy
biBuYW1lXzsKLX0KLQotdm9pZCBXaWRnZXQ6OkdldENoYXJQdHJWYWx1ZShjaGFyKiBidWZmZXIs
IHNpemVfdCBtYXhfc2l6ZSkgY29uc3QgewotICAvLyBDb3B5IHRoZSBjaGFyKiByZXByZXNlbnRh
dGlvbiBvZiBuYW1lXyBpbnRvIGJ1ZmZlciwgdXAgdG8gbWF4X3NpemUuCi0gIHN0cm5jcHkoYnVm
ZmVyLCBuYW1lXy5jX3N0cigpLCBtYXhfc2l6ZS0xKTsKLSAgYnVmZmVyW21heF9zaXplLTFdID0g
J1wwJzsKLSAgcmV0dXJuOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxl
cy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0Zy
YW1ld29ya1NhbXBsZS93aWRnZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1
NWNkYzhjZjA4Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9G
cmFtZXdvcmtTYW1wbGUvd2lkZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRp
c3RyaWJ1dGlvbi4KLS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LS8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9y
OiBwcmVzdG9uLmEuamFja3NvbkBnbWFpbC5jb20gKFByZXN0b24gSmFja3NvbikKLS8vCi0vLyBH
b29nbGUgVGVzdCAtIEZyYW1ld29ya1NhbXBsZQotLy8gd2lkZ2V0LmgKLS8vCi0KLS8vIFdpZGdl
dCBpcyBhIHZlcnkgc2ltcGxlIGNsYXNzIHVzZWQgZm9yIGRlbW9uc3RyYXRpbmcgdGhlIHVzZSBv
ZiBndGVzdC4gSXQKLS8vIHNpbXBseSBzdG9yZXMgdHdvIHZhbHVlcyBhIHN0cmluZyBhbmQgYW4g
aW50ZWdlciwgd2hpY2ggYXJlIHJldHVybmVkIHZpYQotLy8gcHVibGljIGFjY2Vzc29ycyBpbiBt
dWx0aXBsZSBmb3Jtcy4KLQotI2ltcG9ydCA8c3RyaW5nPgotCi1jbGFzcyBXaWRnZXQgewotIHB1
YmxpYzoKLSAgV2lkZ2V0KGludCBudW1iZXIsIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKTsKLSAg
fldpZGdldCgpOwotCi0gIC8vIFB1YmxpYyBhY2Nlc3NvcnMgdG8gbnVtYmVyIGRhdGEKLSAgZmxv
YXQgR2V0RmxvYXRWYWx1ZSgpIGNvbnN0OwotICBpbnQgR2V0SW50VmFsdWUoKSBjb25zdDsKLQot
ICAvLyBQdWJsaWMgYWNjZXNzb3JzIHRvIHRoZSBzdHJpbmcgZGF0YQotICBzdGQ6OnN0cmluZyBH
ZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwotICB2b2lkIEdldENoYXJQdHJWYWx1ZShjaGFyKiBidWZm
ZXIsIHNpemVfdCBtYXhfc2l6ZSkgY29uc3Q7Ci0KLSBwcml2YXRlOgotICAvLyBEYXRhIG1lbWJl
cnMKLSAgZmxvYXQgbnVtYmVyXzsKLSAgc3RkOjpzdHJpbmcgbmFtZV87Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0
ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lkZ2V0X3Rlc3Qu
Y2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TYW1wbGVzL0ZyYW1ld29ya1NhbXBsZS93aWRnZXRfdGVz
dC5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyNTk5NDIxODUxLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9nb29nbGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvU2FtcGxlcy9GcmFtZXdvcmtTYW1wbGUvd2lk
Z2V0X3Rlc3QuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAwOCwgR29vZ2xlIEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4K
LS8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0vLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0v
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLwotLy8gQXV0aG9yOiBwcmVzdG9uLmEu
amFja3NvbkBnbWFpbC5jb20gKFByZXN0b24gSmFja3NvbikKLS8vCi0vLyBHb29nbGUgVGVzdCAt
IEZyYW1ld29ya1NhbXBsZQotLy8gd2lkZ2V0X3Rlc3QuY2MKLS8vCi0KLS8vIFRoaXMgaXMgYSBz
aW1wbGUgdGVzdCBmaWxlIGZvciB0aGUgV2lkZ2V0IGNsYXNzIGluIHRoZSBXaWRnZXQuZnJhbWV3
b3JrCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2lu
Y2x1ZGUgPFdpZGdldC93aWRnZXQuaD4KLQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhl
IGNvbnN0cnVjdG9yIHNldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZQotLy8gV2lkZ2V0IGNs
YXNzIGNvcnJlY3RseS4KLVRFU1QoV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0LCBUZXN0Q29uc3RydWN0
b3IpIHsKLSAgV2lkZ2V0IHdpZGdldCgxLjBmLCAibmFtZSIpOwotICBFWFBFQ1RfRkxPQVRfRVEo
MS4wZiwgd2lkZ2V0LkdldEZsb2F0VmFsdWUoKSk7Ci0gIEVYUEVDVF9FUShzdGQ6OnN0cmluZygi
bmFtZSIpLCB3aWRnZXQuR2V0U3RyaW5nVmFsdWUoKSk7Ci19Ci0KLS8vIFRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGUgY29udmVyc2lvbiBvZiB0aGUgZmxvYXQgYW5kIHN0cmluZyB2YWx1ZXMgdG8gaW50
IGFuZAotLy8gY2hhciosIHJlc3BlY3RpdmVseS4KLVRFU1QoV2lkZ2V0SW5pdGlhbGl6ZXJUZXN0
LCBUZXN0Q29udmVyc2lvbikgewotICBXaWRnZXQgd2lkZ2V0KDEuMGYsICJuYW1lIik7Ci0gIEVY
UEVDVF9FUSgxLCB3aWRnZXQuR2V0SW50VmFsdWUoKSk7Ci0KLSAgc2l6ZV90IG1heF9zaXplID0g
MTI4OwotICBjaGFyIGJ1ZmZlclttYXhfc2l6ZV07Ci0gIHdpZGdldC5HZXRDaGFyUHRyVmFsdWUo
YnVmZmVyLCBtYXhfc2l6ZSk7Ci0gIEVYUEVDVF9TVFJFUSgibmFtZSIsIGJ1ZmZlcik7Ci19Ci0K
LS8vIFVzZSB0aGUgR29vZ2xlIFRlc3QgbWFpbiB0aGF0IGlzIGxpbmtlZCBpbnRvIHRoZSBmcmFt
ZXdvcmsuIEl0IGRvZXMgc29tZXRoaW5nCi0vLyBsaWtlIHRoaXM6Ci0vLyBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpIHsKLS8vICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2Ms
IGFyZ3YpOwotLy8gICByZXR1cm4gUlVOX0FMTF9URVNUUygpOwotLy8gfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0
L2dvb2dsZXRlc3QveGNvZGUvU2NyaXB0cy9ydW50ZXN0cy5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2Rl
L1NjcmlwdHMvcnVudGVzdHMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYzIy
OWYxZDRhYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NjcmlwdHMvcnVu
dGVzdHMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0jIS9iaW4vYmFzaAotIwot
IyBDb3B5cmlnaHQgMjAwOCwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSMgRXhlY3V0ZXMgdGhlIHNhbXBsZXMgYW5kIHRlc3RzIGZvciB0
aGUgR29vZ2xlIFRlc3QgRnJhbWV3b3JrLgotCi0jIEhlbHAgdGhlIGR5bmFtaWMgbGlua2VyIGZp
bmQgdGhlIHBhdGggdG8gdGhlIGxpYnJhcmllcy4KLWV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRI
PSRCVUlMVF9QUk9EVUNUU19ESVIKLWV4cG9ydCBEWUxEX0xJQlJBUllfUEFUSD0kQlVJTFRfUFJP
RFVDVFNfRElSCi0KLSMgQ3JlYXRlIHNvbWUgZXhlY3V0YWJsZXMuCi10ZXN0X2V4ZWN1dGFibGVz
PSgiJEJVSUxUX1BST0RVQ1RTX0RJUi9ndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiCi0gICAgICAg
ICAgICAgICAgICAiJEJVSUxUX1BST0RVQ1RTX0RJUi9ndGVzdF91bml0dGVzdCIKLSAgICAgICAg
ICAgICAgICAgICIkQlVJTFRfUFJPRFVDVFNfRElSL3NhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3Jr
IgotICAgICAgICAgICAgICAgICAgIiRCVUlMVF9QUk9EVUNUU19ESVIvc2FtcGxlMV91bml0dGVz
dC1zdGF0aWMiKQotCi0jIE5vdyBleGVjdXRlIGVhY2ggb25lIGluIHR1cm4ga2VlcGluZyB0cmFj
ayBvZiBob3cgbWFueSBzdWNjZWVkZWQgYW5kIGZhaWxlZC4gCi1zdWNjZWVkZWQ9MAotZmFpbGVk
PTAKLWZhaWxlZF9saXN0PSgpCi1mb3IgdGVzdCBpbiAke3Rlc3RfZXhlY3V0YWJsZXNbKl19OyBk
bwotICAiJHRlc3QiCi0gIHJlc3VsdD0kPwotICBpZiBbICRyZXN1bHQgLWVxIDAgXTsgdGhlbgot
ICAgIHN1Y2NlZWRlZD0kKCggJHN1Y2NlZWRlZCArIDEgKSkKLSAgZWxzZQotICAgIGZhaWxlZD0k
KCggZmFpbGVkICsgMSApKQotICAgIGZhaWxlZF9saXN0PSIkZmFpbGVkX2xpc3QgJHRlc3QiCi0g
IGZpCi1kb25lCi0KLSMgUmVwb3J0IHRoZSBzdWNjZXNzZXMgYW5kIGZhaWx1cmVzIHRvIHRoZSBj
b25zb2xlLgotZWNobyAiVGVzdHMgY29tcGxldGUgd2l0aCAkc3VjY2VlZGVkIHN1Y2Nlc3NlcyBh
bmQgJGZhaWxlZCBmYWlsdXJlcy4iCi1pZiBbICRmYWlsZWQgLW5lIDAgXTsgdGhlbgotICBlY2hv
ICJUaGUgZm9sbG93aW5nIHRlc3RzIGZhaWxlZDoiCi0gIGVjaG8gJGZhaWxlZF9saXN0Ci1maQot
ZXhpdCAkZmFpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNp
b25nZW5lcmF0ZS5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC9nb29nbGV0ZXN0L3hjb2RlL1NjcmlwdHMvdmVyc2lvbmdlbmVyYXRl
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4MWRlOGM5NmFjNWQuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2dvb2dsZXRlc3QvZ29vZ2xldGVzdC94Y29kZS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weQor
KysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMK
LSMgQ29weXJpZ2h0IDIwMDgsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0j
Ci0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24u
Ci0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0iIiJBIHNjcmlwdCB0byBwcmVwYXJlIHZlcnNpb24gaW5mb3Jt
dGlvbiBmb3IgdXNlIHRoZSBndGVzdCBJbmZvLnBsaXN0IGZpbGUuCi0KLSAgVGhpcyBzY3JpcHQg
ZXh0cmFjdHMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgY29uZmlndXJlLmFjIGZp
bGUgYW5kCi0gIHVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRo
ZSBzYW1lIGluZm9ybWF0aW9uLiBUaGUKLSAgI2RlZmluZXMgaW4gdGhpcyBoZWFkZXIgZmlsZSB3
aWxsIGJlIGluY2x1ZGVkIGluIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZgotICB0aGUgSW5mby5w
bGlzdCBvZiB0aGUgZnJhbWV3b3JrLCBnaXZpbmcgdGhlIGNvcnJlY3QgdmFsdWUgdG8gdGhlIHZl
cnNpb24KLSAgc2hvd24gaW4gdGhlIEZpbmRlci4KLQotICBUaGlzIHNjcmlwdCBtYWtlcyB0aGUg
Zm9sbG93aW5nIGFzc3VtcHRpb25zICh0aGVzZSBhcmUgZmF1bHRzIG9mIHRoZSBzY3JpcHQsCi0g
IG5vdCBwcm9ibGVtcyB3aXRoIHRoZSBBdXRvY29uZik6Ci0gICAgMS4gVGhlIEFDX0lOSVQgbWFj
cm8gd2lsbCBiZSBjb250YWluZWQgd2l0aGluIHRoZSBmaXJzdCAxMDI0IGNoYXJhY3RlcnMKLSAg
ICAgICBvZiBjb25maWd1cmUuYWMKLSAgICAyLiBUaGUgdmVyc2lvbiBzdHJpbmcgd2lsbCBiZSAz
IGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCB3aWxsIGJlCi0gICAgICAgc3Vycm91
bmRlZCBieSBzcXVyZSBicmFja2V0cywgIlsiIGFuZCAiXSIgKGUuZy4gWzEuMC4xXSkuIFRoZSBm
aXJzdAotICAgICAgIHNlZ21lbnQgcmVwcmVzZW50cyB0aGUgbWFqb3IgdmVyc2lvbiwgdGhlIHNl
Y29uZCByZXByZXNlbnRzIHRoZSBtaW5vcgotICAgICAgIHZlcnNpb24gYW5kIHRoZSB0aGlyZCBy
ZXByZXNlbnRzIHRoZSBmaXggdmVyc2lvbi4KLSAgICAzLiBObyAiKSIgY2hhcmFjdGVyIGV4aXN0
cyBiZXR3ZWVuIHRoZSBvcGVuaW5nICIoIiBhbmQgY2xvc2luZyAiKSIgb2YKLSAgICAgICBBQ19J
TklULCBpbmNsdWRpbmcgaW4gY29tbWVudHMgYW5kIGNoYXJhY3RlciBzdHJpbmdzLgotIiIiCi0K
LWltcG9ydCBzeXMKLWltcG9ydCByZQotCi0jIFJlYWQgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVu
dCAodGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIFZlcnNpb24uaCkKLWlmIChsZW4oc3lzLmFyZ3Yp
IDwgMyk6Ci0gIHByaW50ICJVc2FnZTogdmVyc2lvbmdlbmVyYXRlLnB5IGlucHV0X2RpciBvdXRw
dXRfZGlyIgotICBzeXMuZXhpdCgxKQotZWxzZToKLSAgaW5wdXRfZGlyID0gc3lzLmFyZ3ZbMV0K
LSAgb3V0cHV0X2RpciA9IHN5cy5hcmd2WzJdCi0KLSMgUmVhZCB0aGUgZmlyc3QgMTAyNCBjaGFy
YWN0ZXJzIG9mIHRoZSBjb25maWd1cmUuYWMgZmlsZQotY29uZmlnX2ZpbGUgPSBvcGVuKCIlcy9j
b25maWd1cmUuYWMiICUgaW5wdXRfZGlyLCAncicpCi1idWZmZXJfc2l6ZSA9IDEwMjQKLW9wZW5p
bmdfc3RyaW5nID0gY29uZmlnX2ZpbGUucmVhZChidWZmZXJfc2l6ZSkKLWNvbmZpZ19maWxlLmNs
b3NlKCkKLQotIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIHN0cmluZyBmcm9tIHRoZSBBQ19JTklUIG1h
Y3JvCi0jICAgVGhlIGZvbGxvd2luZyBpbml0X2V4cHJlc3Npb24gbWVhbnM6Ci0jICAgICBFeHRy
YWN0IHRocmVlIGludGVnZXJzIHNlcGFyYXRlZCBieSBwZXJpb2RzIGFuZCBzdXJyb3VuZGVkIGJ5
IHNxdXJlCi0jICAgICBicmFja2V0cyhlLmcuICJbMS4wLjFdIikgYmV0d2VlbiAiQUNfSU5JVCgi
IGFuZCAiKSIuIERvIG5vdCBiZSBncmVlZHkKLSMgICAgICgqPyBpcyB0aGUgbm9uLWdyZWVkeSBm
bGFnKSBzaW5jZSB0aGF0IHdvdWxkIHB1bGwgaW4gZXZlcnl0aGluZyBiZXR3ZWVuCi0jICAgICB0
aGUgZmlyc3QgIigiIGFuZCB0aGUgbGFzdCAiKSIgaW4gdGhlIGZpbGUuCi12ZXJzaW9uX2V4cHJl
c3Npb24gPSByZS5jb21waWxlKHIiQUNfSU5JVFwoLio/XFsoXGQrKVwuKFxkKylcLihcZCspXF0u
Kj9cKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCkKLXZlcnNp
b25fdmFsdWVzID0gdmVyc2lvbl9leHByZXNzaW9uLnNlYXJjaChvcGVuaW5nX3N0cmluZykKLW1h
am9yX3ZlcnNpb24gPSB2ZXJzaW9uX3ZhbHVlcy5ncm91cCgxKQotbWlub3JfdmVyc2lvbiA9IHZl
cnNpb25fdmFsdWVzLmdyb3VwKDIpCi1maXhfdmVyc2lvbiA9IHZlcnNpb25fdmFsdWVzLmdyb3Vw
KDMpCi0KLSMgV3JpdGUgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gYSBoZWFkZXIgZmlsZSB0
byBiZSBpbmNsdWRlZCBpbiB0aGUKLSMgSW5mby5wbGlzdCBmaWxlLgotZmlsZV9kYXRhID0gIiIi
Ly8KLS8vIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIChidXQgeW91IGNhbiBkZWxldGUgaXQpCi0v
LwotLy8gVGhpcyBmaWxlIGlzIGF1dG9nZW5lcmF0ZWQgYnkgdGhlIHZlcnNpb25nZW5lcmF0ZS5w
eSBzY3JpcHQuIFRoaXMgc2NyaXB0Ci0vLyBpcyBleGVjdXRlZCBpbiBhICJSdW4gU2NyaXB0IiBi
dWlsZCBwaGFzZSB3aGVuIGNyZWF0aW5nIGd0ZXN0LmZyYW1ld29yay4gVGhpcwotLy8gaGVhZGVy
IGZpbGUgaXMgbm90IHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIEMtc291cmNlLiBSYXRoZXIs
IGl0IHNpbXBseQotLy8gZGVmaW5lcyBzb21lIHZlcnNpb24gc3RyaW5ncyBmb3Igc3Vic3RpdHV0
aW9uIGluIHRoZSBJbmZvLnBsaXN0LiBCZWNhdXNlIG9mCi0vLyB0aGlzLCB3ZSBhcmUgbm90IG5v
dCByZXN0cmljdGVkIHRvIEMtc3ludGF4IG5vciBhcmUgd2UgdXNpbmcgaW5jbHVkZSBndWFyZHMu
Ci0vLwotCi0jZGVmaW5lIEdURVNUX1ZFUlNJT05JTkZPX1NIT1JUICVzLiVzCi0jZGVmaW5lIEdU
RVNUX1ZFUlNJT05JTkZPX0xPTkcgJXMuJXMuJXMKLQotIiIiICUgKG1ham9yX3ZlcnNpb24sIG1p
bm9yX3ZlcnNpb24sIG1ham9yX3ZlcnNpb24sIG1pbm9yX3ZlcnNpb24sIGZpeF92ZXJzaW9uKQot
dmVyc2lvbl9maWxlID0gb3BlbigiJXMvVmVyc2lvbi5oIiAlIG91dHB1dF9kaXIsICd3JykKLXZl
cnNpb25fZmlsZS53cml0ZShmaWxlX2RhdGEpCi12ZXJzaW9uX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2dvb2dsZXRlc3QveGNvZGUvZ3Rlc3QueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDFiNWZiNGNmYi4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVz
dC9nb29nbGV0ZXN0L3hjb2RlL2d0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMTgyICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNoaXZlVmVy
c2lvbiA9IDE7Ci0JY2xhc3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA0NjsKLQlvYmpl
Y3RzID0gewotCi0vKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwotCQkzQjIz
OEY1RjBFODI4QjU0MDA4NDZFMTEgLyogQ2hlY2sgKi8gPSB7Ci0JCQlpc2EgPSBQQlhBZ2dyZWdh
dGVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gM0IyMzhGQTMwRTgyOEJCNjAw
ODQ2RTExIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJDaGVjayIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQkzQjIzOEY1RTBFODI4QjU0MDA4
NDZFMTEgLyogU2hlbGxTY3JpcHQgKi8sCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJ
CTQwODk5RjlEMEZGQTc0MEYwMDBCMjlBRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJ
CTQwQzg0OUY3MTAxQTQzNDQwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJ
CTQwODlBMDk4MEZGQUQzNEEwMDBCMjlBRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJ
CTQwQzg0OUY5MTAxQTQzNDkwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBDaGVjazsKLQkJCXByb2R1Y3ROYW1lID0gQ2hlY2s7Ci0JCX07Ci0JCTQw
QzQ0QURDMEUzNzk4RjQwMDhGQ0M1MSAvKiBWZXJzaW9uIEluZm8gKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhBZ2dyZWdhdGVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDBDNDRBRTQw
RTM3OTkwNTAwOEZDQzUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJWZXJzaW9uIEluZm8iICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJNDBD
NDRBREIwRTM3OThGNDAwOEZDQzUxIC8qIEdlbmVyYXRlIFZlcnNpb24uaCAqLywKLQkJCSk7Ci0J
CQljb21tZW50cyA9ICJUaGUgZ2VuZXJhdGlvbiBvZiBWZXJzaW9uLmggbXVzdCBiZSBwZXJmb3Jt
ZWQgaW4gaXRzIG93biB0YXJnZXQuIFNpbmNlIHRoZSBJbmZvLnBsaXN0IGlzIHByZXByb2Nlc3Nl
ZCBiZWZvcmUgYW55IG9mIHRoZSBvdGhlciBidWlsZCBwaGFzZXMgaW4gZ3Rlc3QsIHRoZSBWZXJz
aW9uLmggZmlsZSB3b3VsZCBub3QgYmUgcmVhZHkgaWYgaW5jbHVkZWQgYXMgYSBidWlsZCBwaGFz
ZSBvZiB0aGF0IHRhcmdldC4iOwotCQkJZGVwZW5kZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUg
PSAiVmVyc2lvbiBJbmZvIjsKLQkJCXByb2R1Y3ROYW1lID0gVmVyc2lvbi5oOwotCQl9OwotLyog
RW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCi0JCTIyNEExMkEzMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBh
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNEEx
MkEyMEU5RUFEQ0MwMEJEMTdGRCAvKiBndGVzdC10ZXN0LXBhcnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCTNCRjZGMkEwMEU3OUI1QUQwMDBGMkVF
RSAvKiBndGVzdC10eXBlLXV0aWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0JGNkYyOUYwRTc5QjVBRDAwMEYyRUVFIC8qIGd0
ZXN0LXR5cGUtdXRpbC5oICovOyB9OwotCQkzQkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rl
c3QtdHlwZWQtdGVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0JGNkYyQTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCTQwNDg4NDM4MEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNEQjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3QtZGVhdGgtdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKLQkJNDA0ODg0MzkwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LW1lc3NhZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0RDMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQzQTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qt
c3BpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4
ODNERDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQw
NDg4M0RFMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0M0MwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0X3ByZWRfaW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDA0ODgzREYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDA0ODg0M0QwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3Byb2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4M0UwMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9k
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQk0MDQ4
ODQ1MDBFMkY3OTlCMDBDRjc2NTggLyogUkVBRE1FLm1kIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNGNjBFMkY3OTlCMDBDRjc2NTggLyogUkVB
RE1FLm1kICovOyB9OwotCQk0MDQ4ODRBMDBFMkY3QkU2MDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgt
dGVzdC1pbnRlcm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVh
dGgtdGVzdC1pbnRlcm5hbC5oICovOyB9OwotCQk0MDQ4ODRBMTBFMkY3QkU2MDBDRjc2NTggLyog
Z3Rlc3QtZmlsZXBhdGguaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZp
bGVwYXRoLmggKi87IH07Ci0JCTQwNDg4NEEyMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1pbnRl
cm5hbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MDQ4ODNFNDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtaW50ZXJuYWwuaCAq
LzsgfTsKLQkJNDA0ODg0QTMwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5
IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0
ODgzRTUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLzsgfTsKLQkJNDA0ODg0QTQw
RTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MDQ4ODNFNjBFMkY3OTlCMDBD
Rjc2NTggLyogZ3Rlc3Qtc3RyaW5nLmggKi87IH07Ci0JCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1
OCAvKiBDSEFOR0VTIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdFUyAqLzsgfTsKLQkJNDA0ODg0
QUQwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENP
TlRSSUJVVE9SUyAqLzsgfTsKLQkJNDA0ODg0QUUwRTJGN0NEOTAwQ0Y3NjU4IC8qIExJQ0VOU0Ug
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NEFC
MEUyRjdDRDkwMENGNzY1OCAvKiBMSUNFTlNFICovOyB9OwotCQk0MDg5OUYzQTBGRkE3MEQ0MDAw
QjI5QUUgLyogZ3Rlc3QtYWxsLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLzsg
fTsKLQkJNDA4OTlGNTAwRkZBNzI4MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggaW4gQ29weSBI
ZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwODk5
RjREMEZGQTcyNzEwMDBCMjlBRSAvKiBndGVzdC10dXBsZS5oICovOyB9OwotCQk0MDg5OUY1MzBG
RkE3MkEwMDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rl
c3RfdW5pdHRlc3QuY2MgKi87IH07Ci0JCTQwODlBMDQ0MEZGQUQxQkUwMDBCMjlBRSAvKiBzYW1w
bGUxLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4
OUEwMkMwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuY2MgKi87IH07Ci0JCTQwODlBMDQ2MEZG
QUQxQkUwMDBCMjlBRSAvKiBzYW1wbGUxX3VuaXR0ZXN0LmNjIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4OUEwMkUwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNh
bXBsZTFfdW5pdHRlc3QuY2MgKi87IH07Ci0JCTQwQzg0OEZGMTAxQTIxMTUwMDgzNjQyQSAvKiBn
dGVzdC1hbGwuY2MgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyMjRBMTJBMTBFOUVBREE3MDBCRDE3RkQgLyogZ3Rlc3QtYWxsLmNjICovOyB9OwotCQk0MEM4
NDkxNTEwMUEyMURGMDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi5jYyBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNDg4NDBEMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdF9tYWluLmNjICovOyB9OwotCQk0MEM4NDkxNjEwMUEyMzVCMDA4MzY0MkEgLyogbGliZ3Rl
c3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSAqLzsgfTsKLQkJ
NDBDODQ5MjExMDFBMjNBRDAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwQzg0OTBCMTAxQTIxN0UwMDgz
NjQyQSAvKiBsaWJndGVzdF9tYWluLmEgKi87IH07Ci0JCTQwQzg0OTc4MTAxQTM2NTQwMDgzNjQy
QSAvKiBsaWJndGVzdF9tYWluLmEgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQwQzg0OTBCMTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEg
Ki87IH07Ci0JCTQwQzg0OTgwMTAxQTM2ODUwMDgzNjQyQSAvKiBndGVzdF91bml0dGVzdC5jYyBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNCMjM4QzEyMEU3
RkUxM0MwMDg0NkUxMSAvKiBndGVzdF91bml0dGVzdC5jYyAqLzsgfTsKLQkJNDBDODQ5ODIxMDFB
MzY4NTAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MEM4NDhGQTEwMUEyMDlDMDA4MzY0MkEgLyogbGliZ3Rlc3Qu
YSAqLzsgfTsKLQkJNDBDODQ5ODMxMDFBMzY4NTAwODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwQzg0OTBC
MTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgKi87IH07Ci0JCTQwQzg0OThGMTAx
QTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxLmNjIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA4OUEwMkMwRkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTEuY2Mg
Ki87IH07Ci0JCTQwQzg0OTkwMTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxX3VuaXR0ZXN0LmNj
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA4OUEwMkUw
RkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgKi87IH07Ci0JCTQwQzg0OTky
MTAxQTM2QTYwMDgzNjQyQSAvKiBsaWJndGVzdC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDBDODQ4RkExMDFBMjA5QzAwODM2NDJBIC8qIGxpYmd0
ZXN0LmEgKi87IH07Ci0JCTQwQzg0OTkzMTAxQTM2QTYwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWlu
LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MEM4
NDkwQjEwMUEyMTdFMDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hICovOyB9OwotCQk0MEM4NDlB
MjEwMUEzNzA1MDA4MzY0MkEgLyogZ3Rlc3QuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUzOUM4RkYwRUMyN0Y2NDAwQTcwRjRDIC8q
IGd0ZXN0LmZyYW1ld29yayAqLzsgfTsKLQkJNDBDODQ5QTQxMDFBMzcxNTAwODM2NDJBIC8qIGd0
ZXN0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ1MzlDOEZGMEVDMjdGNjQwMEE3MEY0QyAvKiBndGVzdC5mcmFtZXdvcmsgKi87IH07
Ci0JCTQ1MzlDOTM0MEVDMjgwQUUwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS10ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzMzBFQzI4MEFF
MDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdGVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJNDUzOUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0
LWxpbmtlZF9wdHIuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtl
ZF9wdHIuaCAqLzsgfTsKLQkJNDUzOUM5MzkwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFt
LXV0aWwtZ2VuZXJhdGVkLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MzlDOTM2MEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1w
YXJhbS11dGlsLWdlbmVyYXRlZC5oICovOyB9OwotCQk0NTM5QzkzQTBFQzI4MEUyMDBBNzBGNEMg
LyogZ3Rlc3QtcGFyYW0tdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rl
c3QtcGFyYW0tdXRpbC5oICovOyB9OwotCQk0NTY3QzgxODEyNjRGRjcxMDA3NzQwQkUgLyogZ3Rl
c3QtcHJpbnRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1NjdDODE3MTI2NEZGNzEwMDc3NDBCRSAvKiBndGVzdC1wcmludGVycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJRjY3RDRGM0UxQzdGNUQ4
QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBv
cnQtYXJjaC5oICovOyB9OwotCQlGNjdENEYzRjFDN0Y1REE3MDAxN0M3MjkgLyogZ3Rlc3QtcG9y
dC1hcmNoLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBndGVzdC1wb3J0LWFyY2gu
aCAqLzsgfTsKLQkJRjY3RDRGNDQxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQxMUM3RjVE
RDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi87IH07Ci0JCUY2N0Q0RjQ1MUM3RjVERDAwMDE3
QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJz
LmggKi87IH07Ci0JCUY2N0Q0RjQ2MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY3RDRGNDMxQzdGNUREMDAw
MTdDNzI5IC8qIGd0ZXN0LmggKi87IH07Ci0JCUY2N0Q0RjQ4MUM3RjVFMTYwMDE3QzcyOSAvKiBn
dGVzdC1wb3J0LmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3Qt
cG9ydC5oICovOyB9OwotCQlGNjdENEY0OTFDN0Y1RTI2MDAxN0M3MjkgLyogZ3Rlc3QtcHJpbnRl
cnMuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2N0Q0RjQyMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVy
cy5oICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCi0JCTQwODk5RjlDMEZGQTc0MEYwMDBCMjlB
RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFs
SURTdHJpbmcgPSA0MDg5OUY0MjBGRkE3MTg0MDAwQjI5QUU7Ci0JCQlyZW1vdGVJbmZvID0gZ3Rl
c3RfdW5pdHRlc3Q7Ci0JCX07Ci0JCTQwODlBMDk3MEZGQUQzNEEwMDBCMjlBRSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0J
CQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA0
MDg5QTAxMjBGRkFDRUZDMDAwQjI5QUU7Ci0JCQlyZW1vdGVJbmZvID0gc2FtcGxlMV91bml0dGVz
dDsKLQkJfTsKLQkJNDA4QkVDMEYxMDQ2Q0ZFOTAwREVGNTIyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
LQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OEY5MTAx
QTIwOUMwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8gPSAiZ3Rlc3Qtc3RhdGljIjsKLQkJfTsKLQkJ
NDBDNDRBRTUwRTM3OTkyMjAwOEZDQzUxIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
LQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJCXByb3h5VHlw
ZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzQ0QURDMEUzNzk4RjQwMDhGQ0M1
MTsKLQkJCXJlbW90ZUluZm8gPSBWZXJzaW9uLmg7Ci0JCX07Ci0JCTQwQzg0OTdDMTAxQTM2ODUw
MDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSA0MEM4NDhGOTEwMUEyMDlDMDA4MzY0MkE7Ci0JCQlyZW1vdGVJbmZv
ID0gImd0ZXN0LXN0YXRpYyI7Ci0JCX07Ci0JCTQwQzg0OTdFMTAxQTM2ODUwMDgzNjQyQSAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSA0MEM4NDkwQTEwMUEyMTdFMDA4MzY0MkE7Ci0JCQlyZW1vdGVJbmZvID0gImd0ZXN0X21h
aW4tc3RhdGljIjsKLQkJfTsKLQkJNDBDODQ5OEIxMDFBMzZBNjAwODM2NDJBIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKLQkJCXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQw
Qzg0OEY5MTAxQTIwOUMwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8gPSAiZ3Rlc3Qtc3RhdGljIjsK
LQkJfTsKLQkJNDBDODQ5OEQxMDFBMzZBNjAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKLQkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKLQkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKLQkJ
CXByb3h5VHlwZSA9IDE7Ci0JCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQwQzg0OTBBMTAxQTIx
N0UwMDgzNjQyQTsKLQkJCXJlbW90ZUluZm8gPSAiZ3Rlc3RfbWFpbi1zdGF0aWMiOwotCQl9Owot
CQk0MEM4NDk5QjEwMUEzNkRDMDA4MzY0MkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
ewotCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwotCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwotCQkJcHJveHlU
eXBlID0gMTsKLQkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDBDODQ5MEExMDFBMjE3RTAwODM2
NDJBOwotCQkJcmVtb3RlSW5mbyA9ICJndGVzdF9tYWluLXN0YXRpYyI7Ci0JCX07Ci0JCTQwQzg0
OTlEMTAxQTM2RTUwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAx
OwotCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDA7Ci0J
CQlyZW1vdGVJbmZvID0gImd0ZXN0LWZyYW1ld29yayI7Ci0JCX07Ci0JCTQwQzg0OTlGMTAxQTM2
RjEwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVt
b3RlR2xvYmFsSURTdHJpbmcgPSA4RDA3RjJCQzA0ODZDQzdBMDA3Q0QxRDA7Ci0JCQlyZW1vdGVJ
bmZvID0gImd0ZXN0LWZyYW1ld29yayI7Ci0JCX07Ci0JCTQwQzg0OUY2MTAxQTQzNDQwMDgzNjQy
QSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFs
SURTdHJpbmcgPSA0MEM4NDk3QTEwMUEzNjg1MDA4MzY0MkE7Ci0JCQlyZW1vdGVJbmZvID0gImd0
ZXN0X3VuaXR0ZXN0LXN0YXRpYyI7Ci0JCX07Ci0JCTQwQzg0OUY4MTAxQTQzNDkwMDgzNjQyQSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7Ci0JCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7Ci0JCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi87Ci0JCQlwcm94eVR5cGUgPSAxOwotCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSA0MEM4NDk4OTEwMUEzNkE2MDA4MzY0MkE7Ci0JCQlyZW1vdGVJbmZvID0gInNhbXBs
ZTFfdW5pdHRlc3Qtc3RhdGljIjsKLQkJfTsKLS8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkg
c2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
LQkJNDA0ODg0QTUwRTJGN0MwNDAwQ0Y3NjU4IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLyA9
IHsKLQkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwotCQkJZHN0UGF0aCA9IEhlYWRlcnMvaW50ZXJuYWw7Ci0JCQlkc3RTdWJm
b2xkZXJTcGVjID0gNjsKLQkJCWZpbGVzID0gKAotCQkJCTQwNDg4NEEwMEUyRjdCRTYwMENGNzY1
OCAvKiBndGVzdC1kZWF0aC10ZXN0LWludGVybmFsLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFs
ICovLAotCQkJCTQwNDg4NEExMEUyRjdCRTYwMENGNzY1OCAvKiBndGVzdC1maWxlcGF0aC5oIGlu
IENvcHkgSGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQk0MDQ4ODRBMjBFMkY3QkU2MDBDRjc2NTgg
LyogZ3Rlc3QtaW50ZXJuYWwuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCi0JCQkJNDUz
OUM5MzgwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxpbmtlZF9wdHIuaCBpbiBDb3B5IEhlYWRl
cnMgSW50ZXJuYWwgKi8sCi0JCQkJNDUzOUM5MzkwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LXBh
cmFtLXV0aWwtZ2VuZXJhdGVkLmggaW4gQ29weSBIZWFkZXJzIEludGVybmFsICovLAotCQkJCTQ1
MzlDOTNBMEVDMjgwRTIwMEE3MEY0QyAvKiBndGVzdC1wYXJhbS11dGlsLmggaW4gQ29weSBIZWFk
ZXJzIEludGVybmFsICovLAotCQkJCUY2N0Q0RjNGMUM3RjVEQTcwMDE3QzcyOSAvKiBndGVzdC1w
b3J0LWFyY2guaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCi0JCQkJNDA0ODg0QTMwRTJG
N0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8s
Ci0JCQkJNDA0ODg0QTQwRTJGN0JFNjAwQ0Y3NjU4IC8qIGd0ZXN0LXN0cmluZy5oIGluIENvcHkg
SGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQk0MDg5OUY1MDBGRkE3MjgxMDAwQjI5QUUgLyogZ3Rl
c3QtdHVwbGUuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgKi8sCi0JCQkJM0JGNkYyQTAwRTc5
QjVBRDAwMEYyRUVFIC8qIGd0ZXN0LXR5cGUtdXRpbC5oIGluIENvcHkgSGVhZGVycyBJbnRlcm5h
bCAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkNvcHkgSGVhZGVycyBJbnRlcm5hbCI7Ci0JCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJRjY3RDRGNDcxQzdG
NURGNjAwMTdDNzI5IC8qIENvcHkgSGVhZGVycyBJbnRlcm5hbCBDdXN0b20gKi8gPSB7Ci0JCQlp
c2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKLQkJCWRzdFBhdGggPSBIZWFkZXJzL2ludGVybmFsL2N1c3RvbTsKLQkJCWRzdFN1YmZv
bGRlclNwZWMgPSA2OwotCQkJZmlsZXMgPSAoCi0JCQkJRjY3RDRGNDgxQzdGNUUxNjAwMTdDNzI5
IC8qIGd0ZXN0LXBvcnQuaCBpbiBDb3B5IEhlYWRlcnMgSW50ZXJuYWwgQ3VzdG9tICovLAotCQkJ
CUY2N0Q0RjQ5MUM3RjVFMjYwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIENvcHkgSGVh
ZGVycyBJbnRlcm5hbCBDdXN0b20gKi8sCi0JCQkpOwotCQkJbmFtZSA9ICJDb3B5IEhlYWRlcnMg
SW50ZXJuYWwgQ3VzdG9tIjsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwotCQl9OwotLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMjI0QTEyQTEwRTlFQURBNzAw
QkQxN0ZEIC8qIGd0ZXN0LWFsbC5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSAiZ3Rlc3QtYWxsLmNjIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjI0QTEy
QTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0ZXN0LXRlc3QtcGFydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXRlc3QtcGFydC5oIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJM0IyMzhDMTIwRTdGRTEzQzAwODQ2RTExIC8qIGd0ZXN0X3VuaXR0ZXN0LmNj
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ3Rlc3RfdW5pdHRlc3QuY2M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTNCODdEMjEwMEU5NkI5MkUwMDBEMTg1MiAv
KiBydW50ZXN0cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gcnVudGVzdHMu
c2g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTNCRjZGMjlGMEU3OUI1QUQwMDBGMkVF
RSAvKiBndGVzdC10eXBlLXV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LXR5cGUtdXRpbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJM0JGNkYy
QTQwRTc5QjYxNjAwMEYyRUVFIC8qIGd0ZXN0LXR5cGVkLXRlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXR5cGVkLXRlc3QuaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQwM0VFMzdDMEUzNzc4MjIwMDRCRDFFMiAvKiB2ZXJzaW9uZ2VuZXJhdGUu
cHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSB2ZXJzaW9uZ2VuZXJhdGUu
cHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4M0RCMEUyRjc5OUIwMENGNzY1
OCAvKiBndGVzdC1kZWF0aC10ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
ICJndGVzdC1kZWF0aC10ZXN0LmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4
ODNEQzBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QtbWVzc2FnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtbWVzc2FnZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDA0ODgzREQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LXNwaS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3Qtc3BpLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MDQ4ODNERTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ3Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDA0ODgzREYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBndGVzdF9wcmVkX2ltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRTAwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
X3Byb2QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ3Rlc3RfcHJvZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODNFMjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSAiZ3Rlc3QtZGVhdGgtdGVzdC1pbnRlcm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWZpbGVwYXRoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1maWxlcGF0aC5oIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LWludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVzdC1pbnRl
cm5hbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA0ODgzRTUwRTJGNzk5QjAw
Q0Y3NjU4IC8qIGd0ZXN0LXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Imd0ZXN0LXBvcnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwNDg4M0U2MEUy
Rjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gImd0ZXN0LXN0cmluZy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NDA0ODgzRjYwRTJGNzk5QjAwQ0Y3NjU4IC8qIFJFQURNRS5tZCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBSRUFETUUubWQ7IHBhdGggPSAuLi9SRUFETUUubWQ7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKLQkJNDA0ODg0MEQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X21haW4uY2MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBndGVzdF9tYWluLmNjOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MDQ4ODRBOTBFMkY3Q0Q5MDBDRjc2NTggLyogQ0hBTkdF
UyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDSEFOR0VTOyBwYXRoID0gLi4vQ0hBTkdFUzsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRBQTBFMkY3Q0Q5MDBDRjc2NTggLyog
Q09OVFJJQlVUT1JTICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IENPTlRSSUJVVE9SUzsgcGF0aCA9
IC4uL0NPTlRSSUJVVE9SUzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0MDQ4ODRB
QjBFMkY3Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBMSUNF
TlNFOyBwYXRoID0gLi4vTElDRU5TRTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk0
MDg5OUY0MzBGRkE3MTg0MDAwQjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAiZ3Rlc3RfdW5pdHRl
c3QtZnJhbWV3b3JrIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJNDA4
OTlGNEQwRkZBNzI3MTAwMEIyOUFFIC8qIGd0ZXN0LXR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9ICJndGVzdC10dXBsZS5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFFIC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA4OUEwMTMwRkZBQ0VG
QzAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdv
cmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0MDg5QTAyQzBGRkFD
RjdGMDAwQjI5QUUgLyogc2FtcGxlMS5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IHNhbXBsZTEuY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQwODlBMDJE
MEZGQUNGN0YwMDBCMjlBRSAvKiBzYW1wbGUxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHNhbXBsZTEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDA4OUEwMkUw
RkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBzYW1wbGUxX3VuaXR0ZXN0LmNjOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MEM4NDhGQTEwMUEyMDlDMDA4MzY0MkEgLyogbGliZ3Rlc3QuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKLQkJNDBDODQ5MEIxMDFBMjE3RTAwODM2NDJBIC8qIGxpYmd0ZXN0
X21haW4uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
YXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliZ3Rlc3RfbWFpbi5hOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0MEM4NDk4NzEwMUEzNjg1MDA4
MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IGd0ZXN0X3VuaXR0ZXN0OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwotCQk0MEM4NDk5NzEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxlMV91bml0dGVz
dC1zdGF0aWMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
ICJzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07Ci0JCTQwRDRDREYxMEUzMEUwNzQwMDI5NDgwMSAvKiBEZWJ1Z1Byb2plY3QueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdQcm9qZWN0LnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MEQ0Q0RGMjBFMzBFMDc0MDAyOTQ4MDEg
LyogRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDBENENERjMwRTMwRTA3NDAwMjk0ODAxIC8qIEdlbmVyYWwueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gR2VuZXJhbC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDBENENERjQwRTMwRTA3NDAwMjk0ODAxIC8qIFJlbGVhc2VQcm9qZWN0
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFJlbGVhc2VQcm9qZWN0
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MEQ0Q0Y1MTBFMzBGNUUy
MDAyOTQ4MDEgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0g
SW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDUzOUM4RkYwRUMyN0Y2
NDAwQTcwRjRDIC8qIGd0ZXN0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGd0ZXN0LmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKLQkJNDUzOUM5MzMwRUMyODBBRTAwQTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXRlc3QuaCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ1MzlDOTM1MEVDMjgwRTIwMEE3MEY0QyAvKiBn
dGVzdC1saW5rZWRfcHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVz
dC1saW5rZWRfcHRyLmgiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NTM5QzkzNjBF
QzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFyYW0tdXRpbC1nZW5lcmF0ZWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gImd0ZXN0LXBhcmFtLXV0aWwtZ2VuZXJhdGVkLmgiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtcGFyYW0tdXRpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rl
c3QtcGFyYW0tdXRpbC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDU2N0M4MTcx
MjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9ICJndGVzdC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRjY3RDRGM0QxQzdGNUQ4QjAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC1hcmNoLmgiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGNjdENEY0MTFDN0Y1REQwMDAxN0M3MjkgLyogZ3Rlc3Qt
cG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSAiZ3Rlc3QtcG9ydC5oIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjY3RDRGNDIxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LXByaW50ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9ICJndGVz
dC1wcmludGVycy5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjY3RDRGNDMxQzdG
NUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGd0ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0vKiBFbmQgUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQkJNDA4OTlGNDEwRkZBNzE4NDAwMEIyOUFFIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MEM4NDlBNDEwMUEzNzE1MDA4MzY0MkEgLyog
Z3Rlc3QuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkJNDBDODQ5MTYxMDFBMjM1QjAw
ODM2NDJBIC8qIGxpYmd0ZXN0X21haW4uYSBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk0MDg5QTAxMTBG
RkFDRUZDMDAwQjI5QUUgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVz
ID0gKAotCQkJCTQwQzg0OUEyMTAxQTM3MDUwMDgzNjQyQSAvKiBndGVzdC5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKLQkJCQk0MEM4NDkyMTEwMUEyM0FEMDA4MzY0MkEgLyogbGliZ3Rlc3Rf
bWFpbi5hIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0JCTQwQzg0OTgxMTAxQTM2ODUwMDgzNjQyQSAvKiBG
cmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDBDODQ5ODIx
MDFBMzY4NTAwODM2NDJBIC8qIGxpYmd0ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQk0MEM4
NDk4MzEwMUEzNjg1MDA4MzY0MkEgLyogbGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8s
Ci0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07
Ci0JCTQwQzg0OTkxMTAxQTM2QTYwMDgzNjQyQSAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDBDODQ5OTIxMDFBMzZBNjAwODM2NDJBIC8qIGxpYmd0
ZXN0LmEgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQk0MEM4NDk5MzEwMUEzNkE2MDA4MzY0MkEgLyog
bGliZ3Rlc3RfbWFpbi5hIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTAz
NDc2OERERkYzOEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDBDODQ5ODcxMDFBMzY4NTAwODM2NDJBIC8qIGd0
ZXN0X3VuaXR0ZXN0ICovLAotCQkJCTQwODk5RjQzMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91
bml0dGVzdC1mcmFtZXdvcmsgKi8sCi0JCQkJNDA4OUEwMTMwRkZBQ0VGQzAwMEIyOUFFIC8qIHNh
bXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrICovLAotCQkJCTQwQzg0OTk3MTAxQTM2QTYwMDgzNjQy
QSAvKiBzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyAqLywKLQkJCQk0NTM5QzhGRjBFQzI3RjY0MDBB
NzBGNEMgLyogZ3Rlc3QuZnJhbWV3b3JrICovLAotCQkJCTQwQzg0OEZBMTAxQTIwOUMwMDgzNjQy
QSAvKiBsaWJndGVzdC5hICovLAotCQkJCTQwQzg0OTBCMTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJn
dGVzdF9tYWluLmEgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIGd0ZXN0
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0MEQ0Q0RG
MDBFMzBFMDc0MDAyOTQ4MDEgLyogQ29uZmlnICovLAotCQkJCTA4RkI3N0FDRkU4NDE3MDdDMDJB
QUMwNyAvKiBTb3VyY2UgKi8sCi0JCQkJNDBENENGNEUwRTMwRjVFMjAwMjk0ODAxIC8qIFJlc291
cmNlcyAqLywKLQkJCQk0MDNFRTM3QjBFMzc3ODIyMDA0QkQxRTIgLyogU2NyaXB0cyAqLywKLQkJ
CQkwMzQ3NjhEREZGMzhBNDVBMTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCi0JCQkpOwotCQkJbmFt
ZSA9IGd0ZXN0OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDhGQjc3QUNG
RTg0MTcwN0MwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNDA0ODg0QTkwRTJGN0NEOTAwQ0Y3NjU4IC8qIENIQU5HRVMgKi8s
Ci0JCQkJNDA0ODg0QUEwRTJGN0NEOTAwQ0Y3NjU4IC8qIENPTlRSSUJVVE9SUyAqLywKLQkJCQk0
MDQ4ODNEOTBFMkY3OTlCMDBDRjc2NTggLyogaW5jbHVkZSAqLywKLQkJCQk0MDQ4ODRBQjBFMkY3
Q0Q5MDBDRjc2NTggLyogTElDRU5TRSAqLywKLQkJCQk0MDg5QTAyRjBGRkFDRjg0MDAwQjI5QUUg
Lyogc2FtcGxlcyAqLywKLQkJCQk0MDQ4ODQwNzBFMkY3OTlCMDBDRjc2NTggLyogc3JjICovLAot
CQkJCTNCMjM4QkYwMEU3RkUxM0IwMDg0NkUxMSAvKiB0ZXN0ICovLAotCQkJCTQwNDg4M0Y2MEUy
Rjc5OUIwMENGNzY1OCAvKiBSRUFETUUubWQgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFNvdXJjZTsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTNCMjM4QkYwMEU3RkUxM0IwMDg0
NkUxMSAvKiB0ZXN0ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQkzQjIzOEMxMjBFN0ZFMTNDMDA4NDZFMTEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgKi8sCi0J
CQkpOwotCQkJbmFtZSA9IHRlc3Q7Ci0JCQlwYXRoID0gLi4vdGVzdDsKLQkJCXNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsKLQkJfTsKLQkJNDAzRUUzN0IwRTM3NzgyMjAwNEJEMUUyIC8qIFNjcmlw
dHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTNCODdE
MjEwMEU5NkI5MkUwMDBEMTg1MiAvKiBydW50ZXN0cy5zaCAqLywKLQkJCQk0MDNFRTM3QzBFMzc3
ODIyMDA0QkQxRTIgLyogdmVyc2lvbmdlbmVyYXRlLnB5ICovLAotCQkJKTsKLQkJCXBhdGggPSBT
Y3JpcHRzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJNDA0ODgzRDkwRTJG
Nzk5QjAwQ0Y3NjU4IC8qIGluY2x1ZGUgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCTQwNDg4M0RBMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdCAqLywKLQkJ
CSk7Ci0JCQluYW1lID0gaW5jbHVkZTsKLQkJCXBhdGggPSAuLi9pbmNsdWRlOwotCQkJc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOwotCQl9OwotCQk0MDQ4ODNEQTBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTQw
NDg4M0UxMEUyRjc5OUIwMENGNzY1OCAvKiBpbnRlcm5hbCAqLywKLQkJCQk0MDQ4ODNEQjBFMkY3
OTlCMDBDRjc2NTggLyogZ3Rlc3QtZGVhdGgtdGVzdC5oICovLAotCQkJCTQwNDg4M0RDMEUyRjc5
OUIwMENGNzY1OCAvKiBndGVzdC1tZXNzYWdlLmggKi8sCi0JCQkJNDUzOUM5MzMwRUMyODBBRTAw
QTcwRjRDIC8qIGd0ZXN0LXBhcmFtLXRlc3QuaCAqLywKLQkJCQk0NTY3QzgxNzEyNjRGRjcxMDA3
NzQwQkUgLyogZ3Rlc3QtcHJpbnRlcnMuaCAqLywKLQkJCQk0MDQ4ODNERDBFMkY3OTlCMDBDRjc2
NTggLyogZ3Rlc3Qtc3BpLmggKi8sCi0JCQkJMjI0QTEyQTIwRTlFQURDQzAwQkQxN0ZEIC8qIGd0
ZXN0LXRlc3QtcGFydC5oICovLAotCQkJCTNCRjZGMkE0MEU3OUI2MTYwMDBGMkVFRSAvKiBndGVz
dC10eXBlZC10ZXN0LmggKi8sCi0JCQkJNDA0ODgzREUwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LmggKi8sCi0JCQkJNDA0ODgzREYwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0X3ByZWRfaW1wbC5o
ICovLAotCQkJCTQwNDg4M0UwMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdF9wcm9kLmggKi8sCi0J
CQkpOwotCQkJcGF0aCA9IGd0ZXN0OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsK
LQkJNDA0ODgzRTEwRTJGNzk5QjAwQ0Y3NjU4IC8qIGludGVybmFsICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlGNjdENEY0MDFDN0Y1REQwMDAxN0M3Mjkg
LyogY3VzdG9tICovLAotCQkJCTQwNDg4M0UyMEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1kZWF0
aC10ZXN0LWludGVybmFsLmggKi8sCi0JCQkJNDA0ODgzRTMwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0
ZXN0LWZpbGVwYXRoLmggKi8sCi0JCQkJNDA0ODgzRTQwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0
LWludGVybmFsLmggKi8sCi0JCQkJNDUzOUM5MzUwRUMyODBFMjAwQTcwRjRDIC8qIGd0ZXN0LWxp
bmtlZF9wdHIuaCAqLywKLQkJCQk0NTM5QzkzNjBFQzI4MEUyMDBBNzBGNEMgLyogZ3Rlc3QtcGFy
YW0tdXRpbC1nZW5lcmF0ZWQuaCAqLywKLQkJCQk0NTM5QzkzNzBFQzI4MEUyMDBBNzBGNEMgLyog
Z3Rlc3QtcGFyYW0tdXRpbC5oICovLAotCQkJCUY2N0Q0RjNEMUM3RjVEOEIwMDE3QzcyOSAvKiBn
dGVzdC1wb3J0LWFyY2guaCAqLywKLQkJCQk0MDQ4ODNFNTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3QtcG9ydC5oICovLAotCQkJCTQwNDg4M0U2MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1zdHJp
bmcuaCAqLywKLQkJCQk0MDg5OUY0RDBGRkE3MjcxMDAwQjI5QUUgLyogZ3Rlc3QtdHVwbGUuaCAq
LywKLQkJCQkzQkY2RjI5RjBFNzlCNUFEMDAwRjJFRUUgLyogZ3Rlc3QtdHlwZS11dGlsLmggKi8s
Ci0JCQkpOwotCQkJcGF0aCA9IGludGVybmFsOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKLQkJNDA0ODg0MDcwRTJGNzk5QjAwQ0Y3NjU4IC8qIHNyYyAqLyA9IHsKLQkJCWlzYSA9
IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjI0QTEyQTEwRTlFQURBNzAwQkQxN0ZE
IC8qIGd0ZXN0LWFsbC5jYyAqLywKLQkJCQk0MDQ4ODQwRDBFMkY3OTlCMDBDRjc2NTggLyogZ3Rl
c3RfbWFpbi5jYyAqLywKLQkJCSk7Ci0JCQluYW1lID0gc3JjOwotCQkJcGF0aCA9IC4uL3NyYzsK
LQkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKLQkJfTsKLQkJNDA4OUEwMkYwRkZBQ0Y4NDAw
MEIyOUFFIC8qIHNhbXBsZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCTQwODlBMDJDMEZGQUNGN0YwMDBCMjlBRSAvKiBzYW1wbGUxLmNjICovLAotCQkJ
CTQwODlBMDJEMEZGQUNGN0YwMDBCMjlBRSAvKiBzYW1wbGUxLmggKi8sCi0JCQkJNDA4OUEwMkUw
RkZBQ0Y3RjAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgKi8sCi0JCQkpOwotCQkJbmFt
ZSA9IHNhbXBsZXM7Ci0JCQlwYXRoID0gLi4vc2FtcGxlczsKLQkJCXNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsKLQkJfTsKLQkJNDBENENERjAwRTMwRTA3NDAwMjk0ODAxIC8qIENvbmZpZyAqLyA9
IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDBENENERjEwRTMw
RTA3NDAwMjk0ODAxIC8qIERlYnVnUHJvamVjdC54Y2NvbmZpZyAqLywKLQkJCQk0MEQ0Q0RGMjBF
MzBFMDc0MDAyOTQ4MDEgLyogRnJhbWV3b3JrVGFyZ2V0LnhjY29uZmlnICovLAotCQkJCTQwRDRD
REYzMEUzMEUwNzQwMDI5NDgwMSAvKiBHZW5lcmFsLnhjY29uZmlnICovLAotCQkJCTQwRDRDREY0
MEUzMEUwNzQwMDI5NDgwMSAvKiBSZWxlYXNlUHJvamVjdC54Y2NvbmZpZyAqLywKLQkJCQk0MDg5
OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLywK
LQkJCSk7Ci0JCQlwYXRoID0gQ29uZmlnOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJ
fTsKLQkJNDBENENGNEUwRTMwRjVFMjAwMjk0ODAxIC8qIFJlc291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDBENENGNTEwRTMwRjVFMjAwMjk0
ODAxIC8qIEluZm8ucGxpc3QgKi8sCi0JCQkpOwotCQkJcGF0aCA9IFJlc291cmNlczsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUY2N0Q0RjQwMUM3RjVERDAwMDE3QzcyOSAv
KiBjdXN0b20gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJ
CUY2N0Q0RjQxMUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wb3J0LmggKi8sCi0JCQkJRjY3RDRG
NDIxQzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LXByaW50ZXJzLmggKi8sCi0JCQkJRjY3RDRGNDMx
QzdGNUREMDAwMTdDNzI5IC8qIGd0ZXN0LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGN1c3RvbTsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJYR3JvdXAgc2VjdGlv
biAqLwotCi0vKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThEMDdG
MkJEMDQ4NkNDN0EwMDdDRDFEMCAvKiBIZWFkZXJzICovID0gewotCQkJaXNhID0gUEJYSGVhZGVy
c0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMg
PSAoCi0JCQkJNDA0ODg0MzgwRTJGNzk5QjAwQ0Y3NjU4IC8qIGd0ZXN0LWRlYXRoLXRlc3QuaCBp
biBIZWFkZXJzICovLAotCQkJCTQwNDg4NDM5MEUyRjc5OUIwMENGNzY1OCAvKiBndGVzdC1tZXNz
YWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NTM5QzkzNDBFQzI4MEFFMDBBNzBGNEMgLyogZ3Rl
c3QtcGFyYW0tdGVzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjY3RDRGM0UxQzdGNUQ4QjAwMTdD
NzI5IC8qIGd0ZXN0LXBvcnQtYXJjaC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjY3RDRGNDQxQzdG
NUREMDAwMTdDNzI5IC8qIGd0ZXN0LXBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUY2N0Q0RjQ1
MUM3RjVERDAwMDE3QzcyOSAvKiBndGVzdC1wcmludGVycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NDU2N0M4MTgxMjY0RkY3MTAwNzc0MEJFIC8qIGd0ZXN0LXByaW50ZXJzLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0MDQ4ODQzQTBFMkY3OTlCMDBDRjc2NTggLyogZ3Rlc3Qtc3BpLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkyMjRBMTJBMzBFOUVBRENDMDBCRDE3RkQgLyogZ3Rlc3QtdGVzdC1wYXJ0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkzQkY2RjJBNTBFNzlCNjE2MDAwRjJFRUUgLyogZ3Rlc3QtdHlw
ZWQtdGVzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjY3RDRGNDYxQzdGNUREMDAwMTdDNzI5IC8q
IGd0ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MDQ4ODQzQjBFMkY3OTlCMDBDRjc2NTggLyog
Z3Rlc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTQwNDg4NDNDMEUyRjc5OUIwMENGNzY1OCAvKiBn
dGVzdF9wcmVkX2ltcGwuaCBpbiBIZWFkZXJzICovLAotCQkJCTQwNDg4NDNEMEUyRjc5OUIwMENG
NzY1OCAvKiBndGVzdF9wcm9kLmggaW4gSGVhZGVycyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhIZWFkZXJzQnVp
bGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
Ci0JCTQwODk5RjQyMEZGQTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsg
Ki8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gNDA4OTlGNEEwRkZBNzFCQzAwMEIyOUFFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiICovOwotCQkJ
YnVpbGRQaGFzZXMgPSAoCi0JCQkJNDA4OTlGNDAwRkZBNzE4NDAwMEIyOUFFIC8qIFNvdXJjZXMg
Ki8sCi0JCQkJNDA4OTlGNDEwRkZBNzE4NDAwMEIyOUFFIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkp
OwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDBD
ODQ5QTAxMDFBMzZGMTAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwot
CQkJbmFtZSA9ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJcHJvZHVjdE5hbWUgPSBn
dGVzdF91bml0dGVzdDsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA0MDg5OUY0MzBGRkE3MTg0MDAw
QjI5QUUgLyogZ3Rlc3RfdW5pdHRlc3QtZnJhbWV3b3JrICovOwotCQkJcHJvZHVjdFR5cGUgPSAi
Y29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLQkJfTsKLQkJNDA4OUEwMTIwRkZBQ0VGQzAw
MEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrICovID0gewotCQkJaXNhID0gUEJY
TmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDQwODlBMDI0MEZGQUNG
MDEwMDBCMjlBRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAic2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0J
CQkJNDA4OUEwMTAwRkZBQ0VGQzAwMEIyOUFFIC8qIFNvdXJjZXMgKi8sCi0JCQkJNDA4OUEwMTEw
RkZBQ0VGQzAwMEIyOUFFIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9
ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkJNDBDODQ5OUUxMDFBMzZFNTAwODM2
NDJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCi0JCQkpOwotCQkJbmFtZSA9ICJzYW1wbGUx
X3VuaXR0ZXN0LWZyYW1ld29yayI7Ci0JCQlwcm9kdWN0TmFtZSA9IHNhbXBsZTFfdW5pdHRlc3Q7
Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gNDA4OUEwMTMwRkZBQ0VGQzAwMEIyOUFFIC8qIHNhbXBs
ZTFfdW5pdHRlc3QtZnJhbWV3b3JrICovOwotCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnBy
b2R1Y3QtdHlwZS50b29sIjsKLQkJfTsKLQkJNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBIC8qIGd0
ZXN0LXN0YXRpYyAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSA0MEM4NDkwMjEwMUEyMTJFMDA4MzY0MkEgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0LXN0YXRpYyIgKi87Ci0JCQli
dWlsZFBoYXNlcyA9ICgKLQkJCQk0MEM4NDhGNzEwMUEyMDlDMDA4MzY0MkEgLyogU291cmNlcyAq
LywKLQkJCSk7Ci0JCQlidWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgK
LQkJCSk7Ci0JCQluYW1lID0gImd0ZXN0LXN0YXRpYyI7Ci0JCQlwcm9kdWN0TmFtZSA9ICJndGVz
dC1zdGF0aWMiOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQwQzg0OEZBMTAxQTIwOUMwMDgzNjQy
QSAvKiBsaWJndGVzdC5hICovOwotCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3Qt
dHlwZS5saWJyYXJ5LnN0YXRpYyI7Ci0JCX07Ci0JCTQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQSAv
KiBndGVzdF9tYWluLXN0YXRpYyAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MEM4NDkxMjEwMUEyMUQyMDA4MzY0MkEgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X21haW4tc3Rh
dGljIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTQwQzg0OTA4MTAxQTIxN0UwMDgzNjQy
QSAvKiBTb3VyY2VzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVw
ZW5kZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSAiZ3Rlc3RfbWFpbi1zdGF0aWMiOwotCQkJ
cHJvZHVjdE5hbWUgPSAiZ3Rlc3RfbWFpbi1zdGF0aWMiOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDQwQzg0OTBCMTAxQTIxN0UwMDgzNjQyQSAvKiBsaWJndGVzdF9tYWluLmEgKi87Ci0JCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKLQkJfTsK
LQkJNDBDODQ5N0ExMDFBMzY4NTAwODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyAqLyA9
IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA0MEM4NDk4NDEwMUEzNjg1MDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyIgKi87Ci0JCQlidWlsZFBo
YXNlcyA9ICgKLQkJCQk0MEM4NDk3RjEwMUEzNjg1MDA4MzY0MkEgLyogU291cmNlcyAqLywKLQkJ
CQk0MEM4NDk4MTEwMUEzNjg1MDA4MzY0MkEgLyogRnJhbWV3b3JrcyAqLywKLQkJCSk7Ci0JCQli
dWlsZFJ1bGVzID0gKAotCQkJKTsKLQkJCWRlcGVuZGVuY2llcyA9ICgKLQkJCQk0MEM4NDk3QjEw
MUEzNjg1MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJCQk0MEM4NDk3RDEw
MUEzNjg1MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKLQkJCSk7Ci0JCQluYW1l
ID0gImd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyI7Ci0JCQlwcm9kdWN0TmFtZSA9IGd0ZXN0X3VuaXR0
ZXN0OwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQwQzg0OTg3MTAxQTM2ODUwMDgzNjQyQSAvKiBn
dGVzdF91bml0dGVzdCAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5
cGUudG9vbCI7Ci0JCX07Ci0JCTQwQzg0OTg5MTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxX3Vu
aXR0ZXN0LXN0YXRpYyAqLyA9IHsKLQkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSA0MEM4NDk5NDEwMUEzNkE2MDA4MzY0MkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3Qtc3Rh
dGljIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJCTQwQzg0OThFMTAxQTM2QTYwMDgzNjQy
QSAvKiBTb3VyY2VzICovLAotCQkJCTQwQzg0OTkxMTAxQTM2QTYwMDgzNjQyQSAvKiBGcmFtZXdv
cmtzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVz
ID0gKAotCQkJCTQwQzg0OThBMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAotCQkJCTQwQzg0OThDMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAotCQkJKTsKLQkJCW5hbWUgPSAic2FtcGxlMV91bml0dGVzdC1zdGF0aWMiOwotCQkJcHJv
ZHVjdE5hbWUgPSBzYW1wbGUxX3VuaXR0ZXN0OwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQwQzg0
OTk3MTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxX3VuaXR0ZXN0LXN0YXRpYyAqLzsKLQkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7Ci0JCX07Ci0JCThEMDdG
MkJDMDQ4NkNDN0EwMDdDRDFEMCAvKiBndGVzdC1mcmFtZXdvcmsgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNEZBREMyNDIwOEI0
MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJndGVzdC1mcmFtZXdvcmsiICovOwotCQkJYnVpbGRQaGFzZXMgPSAoCi0JCQkJOEQwN0Yy
QzEwNDg2Q0M3QTAwN0NEMUQwIC8qIFNvdXJjZXMgKi8sCi0JCQkJOEQwN0YyQkQwNDg2Q0M3QTAw
N0NEMUQwIC8qIEhlYWRlcnMgKi8sCi0JCQkJNDA0ODg0QTUwRTJGN0MwNDAwQ0Y3NjU4IC8qIENv
cHkgSGVhZGVycyBJbnRlcm5hbCAqLywKLQkJCQlGNjdENEY0NzFDN0Y1REY2MDAxN0M3MjkgLyog
Q29weSBIZWFkZXJzIEludGVybmFsIEN1c3RvbSAqLywKLQkJCQk4RDA3RjJCRjA0ODZDQzdBMDA3
Q0QxRDAgLyogUmVzb3VyY2VzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwot
CQkJZGVwZW5kZW5jaWVzID0gKAotCQkJCTQwQzQ0QUU2MEUzNzk5MjIwMDhGQ0M1MSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAotCQkJCTQwOEJFQzEwMTA0NkNGRTkwMERFRjUyMiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAotCQkJCTQwQzg0OTlDMTAxQTM2REMwMDgzNjQyQSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAotCQkJKTsKLQkJCW5hbWUgPSAiZ3Rlc3QtZnJhbWV3b3JrIjsK
LQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL0xpYnJhcnkvRnJhbWV3b3JrcyI7Ci0J
CQlwcm9kdWN0TmFtZSA9IGd0ZXN0OwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDQ1MzlDOEZGMEVD
MjdGNjQwMEE3MEY0QyAvKiBndGVzdC5mcmFtZXdvcmsgKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCTA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9
IFBCWFByb2plY3Q7Ci0JCQlhdHRyaWJ1dGVzID0gewotCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAw
NDYwOwotCQkJfTsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0RkFEQzI0NjA4QjQxNTZE
MDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJndGVz
dCIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwotCQkJZGV2ZWxv
cG1lbnRSZWdpb24gPSBFbmdsaXNoOwotCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7Ci0J
CQlrbm93blJlZ2lvbnMgPSAoCi0JCQkJRW5nbGlzaCwKLQkJCQlKYXBhbmVzZSwKLQkJCQlGcmVu
Y2gsCi0JCQkJR2VybWFuLAotCQkJCWVuLAotCQkJKTsKLQkJCW1haW5Hcm91cCA9IDA4NjdENjkx
RkU4NDAyOEZDMDJBQUMwNyAvKiBndGVzdCAqLzsKLQkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2
OERERkYzOEE0NUExMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKLQkJCXByb2plY3REaXJQYXRoID0g
IiI7Ci0JCQlwcm9qZWN0Um9vdCA9ICIiOwotCQkJdGFyZ2V0cyA9ICgKLQkJCQk4RDA3RjJCQzA0
ODZDQzdBMDA3Q0QxRDAgLyogZ3Rlc3QtZnJhbWV3b3JrICovLAotCQkJCTQwQzg0OEY5MTAxQTIw
OUMwMDgzNjQyQSAvKiBndGVzdC1zdGF0aWMgKi8sCi0JCQkJNDBDODQ5MEExMDFBMjE3RTAwODM2
NDJBIC8qIGd0ZXN0X21haW4tc3RhdGljICovLAotCQkJCTQwODk5RjQyMEZGQTcxODQwMDBCMjlB
RSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsgKi8sCi0JCQkJNDBDODQ5N0ExMDFBMzY4NTAw
ODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyAqLywKLQkJCQk0MDg5QTAxMjBGRkFDRUZD
MDAwQjI5QUUgLyogc2FtcGxlMV91bml0dGVzdC1mcmFtZXdvcmsgKi8sCi0JCQkJNDBDODQ5ODkx
MDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljICovLAotCQkJCTNCMjM4
RjVGMEU4MjhCNTQwMDg0NkUxMSAvKiBDaGVjayAqLywKLQkJCQk0MEM0NEFEQzBFMzc5OEY0MDA4
RkNDNTEgLyogVmVyc2lvbiBJbmZvICovLAotCQkJKTsKLQkJfTsKLS8qIEVuZCBQQlhQcm9qZWN0
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
Ci0JCThEMDdGMkJGMDQ4NkNDN0EwMDdDRDFEMCAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKLQkJCWZpbGVzID0gKAotCQkJCTQwNDg4NEFDMEUyRjdDRDkwMENGNzY1OCAvKiBDSEFOR0VT
IGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODRBRDBFMkY3Q0Q5MDBDRjc2NTggLyogQ09OVFJJ
QlVUT1JTIGluIFJlc291cmNlcyAqLywKLQkJCQk0MEM4NDk3ODEwMUEzNjU0MDA4MzY0MkEgLyog
bGliZ3Rlc3RfbWFpbi5hIGluIFJlc291cmNlcyAqLywKLQkJCQk0MDQ4ODRBRTBFMkY3Q0Q5MDBD
Rjc2NTggLyogTElDRU5TRSBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJNDA0ODg0NTAwRTJGNzk5QjAw
Q0Y3NjU4IC8qIFJFQURNRS5tZCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYUmVzb3VyY2Vz
QnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZSBzZWN0aW9uICovCi0JCTNCMjM4RjVFMEU4MjhCNTQwMDg0NkUxMSAvKiBTaGVsbFNjcmlwdCAq
LyA9IHsKLQkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCSk7Ci0JCQlpbnB1dFBhdGhzID0g
KAotCQkJKTsKLQkJCW91dHB1dFBhdGhzID0gKAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxs
U2NyaXB0ID0gIiMgUmVtZW1iZXIsIHRoaXMgXCJSdW4gU2NyaXB0XCIgYnVpbGQgcGhhc2Ugd2ls
bCBiZSBleGVjdXRlZCBmcm9tICRTUkNST09UXG4vYmluL2Jhc2ggU2NyaXB0cy9ydW50ZXN0cy5z
aCI7Ci0JCX07Ci0JCTQwQzQ0QURCMEUzNzk4RjQwMDhGQ0M1MSAvKiBHZW5lcmF0ZSBWZXJzaW9u
LmggKi8gPSB7Ci0JCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7Ci0JCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJaW5wdXRQYXRo
cyA9ICgKLQkJCQkiJChTUkNST09UKS9TY3JpcHRzL3ZlcnNpb25nZW5lcmF0ZS5weSIsCi0JCQkJ
IiQoU1JDUk9PVCkvLi4vY29uZmlndXJlLmFjIiwKLQkJCSk7Ci0JCQluYW1lID0gIkdlbmVyYXRl
IFZlcnNpb24uaCI7Ci0JCQlvdXRwdXRQYXRocyA9ICgKLQkJCQkiJChQUk9KRUNUX1RFTVBfRElS
KS9WZXJzaW9uLmgiLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwotCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIiMgUmVt
ZW1iZXIsIHRoaXMgXCJSdW4gU2NyaXB0XCIgYnVpbGQgcGhhc2Ugd2lsbCBiZSBleGVjdXRlZCBm
cm9tICRTUkNST09UXG4vdXNyL2Jpbi9weXRob24zIFNjcmlwdHMvdmVyc2lvbmdlbmVyYXRlLnB5
IC4uLyAkUFJPSkVDVF9URU1QX0RJUiI7Ci0JCX07Ci0vKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCQk0MDg5OUY0MDBGRkE3MTg0MDAwQjI5QUUgLyogU291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKLQkJCWZpbGVzID0gKAotCQkJCTQwODk5RjUzMEZGQTcyQTAwMDBCMjlBRSAvKiBndGVzdF91
bml0dGVzdC5jYyBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotCQk0MDg5QTAxMDBGRkFDRUZDMDAwQjI5QUUgLyog
U291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTQwODlBMDQ0MEZGQUQx
QkUwMDBCMjlBRSAvKiBzYW1wbGUxLmNjIGluIFNvdXJjZXMgKi8sCi0JCQkJNDA4OUEwNDYwRkZB
RDFCRTAwMEIyOUFFIC8qIHNhbXBsZTFfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLywKLQkJCSk7
Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJNDBD
ODQ4RjcxMDFBMjA5QzAwODM2NDJBIC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxl
cyA9ICgKLQkJCQk0MEM4NDhGRjEwMUEyMTE1MDA4MzY0MkEgLyogZ3Rlc3QtYWxsLmNjIGluIFNv
dXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7Ci0JCX07Ci0JCTQwQzg0OTA4MTAxQTIxN0UwMDgzNjQyQSAvKiBTb3VyY2VzICovID0gewot
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDBDODQ5MTUxMDFBMjFERjAwODM2NDJBIC8qIGd0
ZXN0X21haW4uY2MgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJNDBDODQ5N0YxMDFBMzY4NTAwODM2NDJBIC8q
IFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk0MEM4NDk4MDEwMUEz
Njg1MDA4MzY0MkEgLyogZ3Rlc3RfdW5pdHRlc3QuY2MgaW4gU291cmNlcyAqLywKLQkJCSk7Ci0J
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLQkJNDBDODQ5
OEUxMDFBMzZBNjAwODM2NDJBIC8qIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9
ICgKLQkJCQk0MEM4NDk4RjEwMUEzNkE2MDA4MzY0MkEgLyogc2FtcGxlMS5jYyBpbiBTb3VyY2Vz
ICovLAotCQkJCTQwQzg0OTkwMTAxQTM2QTYwMDgzNjQyQSAvKiBzYW1wbGUxX3VuaXR0ZXN0LmNj
IGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7Ci0JCX07Ci0JCThEMDdGMkMxMDQ4NkNDN0EwMDdDRDFEMCAvKiBTb3VyY2VzICov
ID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJNDA4OTlGM0EwRkZBNzBENDAwMEIyOUFF
IC8qIGd0ZXN0LWFsbC5jYyBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICov
Ci0JCTQwODk5RjlEMEZGQTc0MEYwMDBCMjlBRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
ewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDQwODk5RjQyMEZG
QTcxODQwMDBCMjlBRSAvKiBndGVzdF91bml0dGVzdC1mcmFtZXdvcmsgKi87Ci0JCQl0YXJnZXRQ
cm94eSA9IDQwODk5RjlDMEZGQTc0MEYwMDBCMjlBRSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87Ci0JCX07Ci0JCTQwODlBMDk4MEZGQUQzNEEwMDBCMjlBRSAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9IDQw
ODlBMDEyMEZGQUNFRkMwMDBCMjlBRSAvKiBzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayAqLzsK
LQkJCXRhcmdldFByb3h5ID0gNDA4OUEwOTcwRkZBRDM0QTAwMEIyOUFFIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJNDA4QkVDMTAxMDQ2Q0ZFOTAwREVGNTIyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJ
dGFyZ2V0ID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBIC8qIGd0ZXN0LXN0YXRpYyAqLzsKLQkJ
CXRhcmdldFByb3h5ID0gNDA4QkVDMEYxMDQ2Q0ZFOTAwREVGNTIyIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKLQkJfTsKLQkJNDBDNDRBRTYwRTM3OTkyMjAwOEZDQzUxIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFy
Z2V0ID0gNDBDNDRBREMwRTM3OThGNDAwOEZDQzUxIC8qIFZlcnNpb24gSW5mbyAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNDBDNDRBRTUwRTM3OTkyMjAwOEZDQzUxIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5N0IxMDFBMzY4NTAwODM2NDJBIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gNDBDODQ4RjkxMDFBMjA5QzAwODM2NDJBIC8qIGd0ZXN0LXN0YXRpYyAqLzsKLQkJCXRhcmdl
dFByb3h5ID0gNDBDODQ5N0MxMDFBMzY4NTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKLQkJfTsKLQkJNDBDODQ5N0QxMDFBMzY4NTAwODM2NDJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0ID0g
NDBDODQ5MEExMDFBMjE3RTAwODM2NDJBIC8qIGd0ZXN0X21haW4tc3RhdGljICovOwotCQkJdGFy
Z2V0UHJveHkgPSA0MEM4NDk3RTEwMUEzNjg1MDA4MzY0MkEgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovOwotCQl9OwotCQk0MEM4NDk4QTEwMUEzNkE2MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQg
PSA0MEM4NDhGOTEwMUEyMDlDMDA4MzY0MkEgLyogZ3Rlc3Qtc3RhdGljICovOwotCQkJdGFyZ2V0
UHJveHkgPSA0MEM4NDk4QjEwMUEzNkE2MDA4MzY0MkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOwotCQl9OwotCQk0MEM4NDk4QzEwMUEzNkE2MDA4MzY0MkEgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKLQkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7Ci0JCQl0YXJnZXQgPSA0
MEM4NDkwQTEwMUEyMTdFMDA4MzY0MkEgLyogZ3Rlc3RfbWFpbi1zdGF0aWMgKi87Ci0JCQl0YXJn
ZXRQcm94eSA9IDQwQzg0OThEMTAxQTM2QTYwMDgzNjQyQSAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87Ci0JCX07Ci0JCTQwQzg0OTlDMTAxQTM2REMwMDgzNjQyQSAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0gewotCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKLQkJCXRhcmdldCA9
IDQwQzg0OTBBMTAxQTIxN0UwMDgzNjQyQSAvKiBndGVzdF9tYWluLXN0YXRpYyAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNDBDODQ5OUIxMDFBMzZEQzAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5OUUxMDFBMzZFNTAwODM2NDJBIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gOEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8qIGd0ZXN0LWZyYW1ld29yayAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNDBDODQ5OUQxMDFBMzZFNTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5QTAxMDFBMzZGMTAwODM2NDJBIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gOEQwN0YyQkMwNDg2Q0M3QTAwN0NEMUQwIC8qIGd0ZXN0LWZyYW1ld29yayAqLzsKLQkJCXRh
cmdldFByb3h5ID0gNDBDODQ5OUYxMDFBMzZGMTAwODM2NDJBIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5RjcxMDFBNDM0NDAwODM2NDJBIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJdGFyZ2V0
ID0gNDBDODQ5N0ExMDFBMzY4NTAwODM2NDJBIC8qIGd0ZXN0X3VuaXR0ZXN0LXN0YXRpYyAqLzsK
LQkJCXRhcmdldFByb3h5ID0gNDBDODQ5RjYxMDFBNDM0NDAwODM2NDJBIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKLQkJfTsKLQkJNDBDODQ5RjkxMDFBNDM0OTAwODM2NDJBIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7Ci0JCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwotCQkJ
dGFyZ2V0ID0gNDBDODQ5ODkxMDFBMzZBNjAwODM2NDJBIC8qIHNhbXBsZTFfdW5pdHRlc3Qtc3Rh
dGljICovOwotCQkJdGFyZ2V0UHJveHkgPSA0MEM4NDlGODEwMUE0MzQ5MDA4MzY0MkEgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOwotCQl9OwotLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kg
c2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0J
CTNCMjM4RjYwMEU4MjhCNTQwMDg0NkUxMSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT01CSU5FX0hJRFBJ
X0lNQUdFUyA9IFlFUzsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJR0NDX0RZTkFN
SUNfTk9fUElDID0gTk87Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0JCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCVBST0RV
Q1RfTkFNRSA9IENoZWNrOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9
IERlYnVnOwotCQl9OwotCQkzQjIzOEY2MTBFODI4QjU0MDA4NDZFMTEgLyogUmVsZWFzZSAqLyA9
IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsK
LQkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOwotCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwot
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJ
CQlQUk9EVUNUX05BTUUgPSBDaGVjazsKLQkJCQlTREtST09UID0gbWFjb3N4OwotCQkJCVpFUk9f
TElOSyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MDg5OUY0NTBG
RkE3MTg1MDAwQjI5QUUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87
Ci0JCQkJUFJPRFVDVF9OQU1FID0gImd0ZXN0X3VuaXR0ZXN0LWZyYW1ld29yayI7Ci0JCQkJU0RL
Uk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTQwODk5RjQ2
MEZGQTcxODUwMDBCMjlBRSAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0g
Li4vOwotCQkJCVBST0RVQ1RfTkFNRSA9ICJndGVzdF91bml0dGVzdC1mcmFtZXdvcmsiOwotCQkJ
CVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQw
ODlBMDE1MEZGQUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJUFJPRFVDVF9OQU1FID0gInNh
bXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIjsKLQkJCQlTREtST09UID0gbWFjb3N4OwotCQkJfTsK
LQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDA4OUEwMTYwRkZBQ0VGRDAwMEIyOUFFIC8qIFJl
bGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0
dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOwotCQkJCVBST0RVQ1RfTkFNRSA9ICJzYW1wbGUxX3VuaXR0ZXN0LWZyYW1ld29yayI7
Ci0JCQkJU0RLUk9PVCA9IG1hY29zeDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
LQkJNDBDNDRBREYwRTM3OThGNDAwOEZDQzUxIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPTUJJTkVfSElE
UElfSU1BR0VTID0gWUVTOwotCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OwotCQkJ
CVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJVEFSR0VU
X05BTUUgPSBndGVzdDsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTQwQzQ0QUUw
MEUzNzk4RjQwMDhGQ0M1MSAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VT
ID0gWUVTOwotCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OwotCQkJCVBST0RVQ1Rf
TkFNRSA9IGd0ZXN0OwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQkJVEFSR0VUX05BTUUgPSBn
dGVzdDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ4RkIxMDFBMjA5
RDAwODM2NDJBIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwODk5RkIzMEZGQTc1NjcwMDBCMjlB
RSAvKiBTdGF0aWNMaWJyYXJ5VGFyZ2V0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9
IHsKLQkJCQlDT01CSU5FX0hJRFBJX0lNQUdFUyA9IFlFUzsKLQkJCQlHQ0NfSU5MSU5FU19BUkVf
UFJJVkFURV9FWFRFUk4gPSBZRVM7Ci0JCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBZ
RVM7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCi0JCQkJCS4uLywKLQkJCQkJLi4vaW5jbHVk
ZS8sCi0JCQkJKTsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdDsKLQkJCQlTREtST09UID0gbWFj
b3N4OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDBDODQ4RkMxMDFBMjA5RDAw
ODM2NDJBIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
LQkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDA4OTlGQjMwRkZBNzU2NzAwMEIyOUFF
IC8qIFN0YXRpY0xpYnJhcnlUYXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwotCQkJCUdDQ19JTkxJTkVTX0FSRV9Q
UklWQVRFX0VYVEVSTiA9IFlFUzsKLQkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlF
UzsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKLQkJCQkJLi4vLAotCQkJCQkuLi9pbmNsdWRl
LywKLQkJCQkpOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVNES1JPT1QgPSBtYWNv
c3g7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwQzg0OTBFMTAxQTIxN0Yw
MDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwot
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUg
LyogU3RhdGljTGlicmFyeVRhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7
Ci0JCQkJQ09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCi0JCQkJCS4uLywKLQkJCQkJLi4vaW5jbHVkZS8sCi0JCQkJKTsKLQkJCQlQUk9EVUNUX05B
TUUgPSBndGVzdF9tYWluOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9
IERlYnVnOwotCQl9OwotCQk0MEM4NDkwRjEwMUEyMTdGMDA4MzY0MkEgLyogUmVsZWFzZSAqLyA9
IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSA0MDg5OUZCMzBGRkE3NTY3MDAwQjI5QUUgLyogU3RhdGljTGlicmFyeVRhcmdl
dC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09NQklORV9ISURQSV9J
TUFHRVMgPSBZRVM7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCi0JCQkJCS4uLywKLQkJCQkJ
Li4vaW5jbHVkZS8sCi0JCQkJKTsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF9tYWluOwotCQkJ
CVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQw
Qzg0OTg1MTAxQTM2ODUwMDgzNjQyQSAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRI
UyA9IC4uLzsKLQkJCQlQUk9EVUNUX05BTUUgPSBndGVzdF91bml0dGVzdDsKLQkJCQlTREtST09U
ID0gbWFjb3N4OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNDBDODQ5ODYxMDFB
MzY4NTAwODM2NDJBIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwotCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAuLi87
Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3RfdW5pdHRlc3Q7Ci0JCQkJU0RLUk9PVCA9IG1hY29z
eDsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ5OTUxMDFBMzZBNjAw
ODM2NDJBIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0J
CQlidWlsZFNldHRpbmdzID0gewotCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVy
cy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlQUk9EVUNUX05BTUUgPSAic2FtcGxlMV91bml0dGVzdC1z
dGF0aWMiOwotCQkJCVNES1JPT1QgPSBtYWNvc3g7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwot
CQl9OwotCQk0MEM4NDk5NjEwMUEzNkE2MDA4MzY0MkEgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlHQ0Nf
VkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJUFJPRFVD
VF9OQU1FID0gInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIjsKLQkJCQlTREtST09UID0gbWFjb3N4
OwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0RkFEQzI0MzA4QjQxNTZEMDBB
QkU1NUUgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDBENENERjIwRTMwRTA3NDAwMjk0ODAxIC8q
IEZyYW1ld29ya1RhcmdldC54Y2NvbmZpZyAqLzsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJ
Q09NQklORV9ISURQSV9JTUFHRVMgPSBZRVM7Ci0JCQkJRFlMSUJfQ09NUEFUSUJJTElUWV9WRVJT
SU9OID0gMTsKLQkJCQlEWUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAxOwotCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKLQkJCQlIRUFERVJfU0VBUkNI
X1BBVEhTID0gKAotCQkJCQkuLi8sCi0JCQkJCS4uL2luY2x1ZGUvLAotCQkJCSk7Ci0JCQkJSU5G
T1BMSVNUX0ZJTEUgPSBSZXNvdXJjZXMvSW5mby5wbGlzdDsKLQkJCQlJTkZPUExJU1RfUFJFRklY
X0hFQURFUiA9ICIkKFBST0pFQ1RfVEVNUF9ESVIpL1ZlcnNpb24uaCI7Ci0JCQkJSU5GT1BMSVNU
X1BSRVBST0NFU1MgPSBZRVM7Ci0JCQkJUFJPRFVDVF9OQU1FID0gZ3Rlc3Q7Ci0JCQkJU0RLUk9P
VCA9IG1hY29zeDsKLQkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKLQkJ
CX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTRGQURDMjQ0MDhCNDE1NkQwMEFCRTU1RSAv
KiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQwRDRDREYyMEUzMEUwNzQwMDI5NDgwMSAvKiBGcmFt
ZXdvcmtUYXJnZXQueGNjb25maWcgKi87Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPTUJJ
TkVfSElEUElfSU1BR0VTID0gWUVTOwotCQkJCURZTElCX0NPTVBBVElCSUxJVFlfVkVSU0lPTiA9
IDE7Ci0JCQkJRFlMSUJfQ1VSUkVOVF9WRVJTSU9OID0gMTsKLQkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7Ci0JCQkJSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICgKLQkJCQkJLi4vLAotCQkJCQkuLi9pbmNsdWRlLywKLQkJCQkpOwotCQkJCUlORk9QTElT
VF9GSUxFID0gUmVzb3VyY2VzL0luZm8ucGxpc3Q7Ci0JCQkJSU5GT1BMSVNUX1BSRUZJWF9IRUFE
RVIgPSAiJChQUk9KRUNUX1RFTVBfRElSKS9WZXJzaW9uLmgiOwotCQkJCUlORk9QTElTVF9QUkVQ
Uk9DRVNTID0gWUVTOwotCQkJCVBST0RVQ1RfTkFNRSA9IGd0ZXN0OwotCQkJCVNES1JPT1QgPSBt
YWNvc3g7Ci0JCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7Ci0JCQl9Owot
CQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTRGQURDMjQ3MDhCNDE1NkQwMEFCRTU1RSAvKiBE
ZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSA0MEQ0Q0RGMTBFMzBFMDc0MDAyOTQ4MDEgLyogRGVidWdQcm9q
ZWN0LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDTEFOR19DWFhfTEFO
R1VBR0VfU1RBTkRBUkQgPSAiZ251KysweCI7Ci0JCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGli
YysrIjsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OwotCQkJfTsKLQkJCW5h
bWUgPSBEZWJ1ZzsKLQkJfTsKLQkJNEZBREMyNDgwOEI0MTU2RDAwQUJFNTVFIC8qIFJlbGVhc2Ug
Ki8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNDBENENERjQwRTMwRTA3NDAwMjk0ODAxIC8qIFJlbGVhc2VQcm9qZWN0
LnhjY29uZmlnICovOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDTEFOR19DWFhfTEFOR1VB
R0VfU1RBTkRBUkQgPSAiZ251KysweCI7Ci0JCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysr
IjsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OwotCQkJfTsKLQkJCW5hbWUg
PSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
LQotLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JCTNCMjM4RkEzMEU4
MjhCQjYwMDg0NkUxMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0
ZVRhcmdldCAiQ2hlY2siICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJM0IyMzhGNjAwRTgyOEI1NDAwODQ2RTExIC8q
IERlYnVnICovLAotCQkJCTNCMjM4RjYxMEU4MjhCNTQwMDg0NkUxMSAvKiBSZWxlYXNlICovLAot
CQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwODk5RjRBMEZGQTcxQkMwMDBC
MjlBRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiZ3Rl
c3RfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTQwODk5RjQ1MEZGQTcxODUwMDBC
MjlBRSAvKiBEZWJ1ZyAqLywKLQkJCQk0MDg5OUY0NjBGRkE3MTg1MDAwQjI5QUUgLyogUmVsZWFz
ZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MDg5QTAyNDBGRkFD
RjAxMDAwQjI5QUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgInNhbXBsZTFfdW5pdHRlc3QtZnJhbWV3b3JrIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTQwODlBMDE1MEZG
QUNFRkQwMDBCMjlBRSAvKiBEZWJ1ZyAqLywKLQkJCQk0MDg5QTAxNjBGRkFDRUZEMDAwQjI5QUUg
LyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MEM0
NEFFNDBFMzc5OTA1MDA4RkNDNTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIlZlcnNpb24gSW5mbyIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk0MEM0NEFERjBFMzc5
OEY0MDA4RkNDNTEgLyogRGVidWcgKi8sCi0JCQkJNDBDNDRBRTAwRTM3OThGNDAwOEZDQzUxIC8q
IFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNDBDODQ5
MDIxMDFBMjEyRTAwODM2NDJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJndGVzdC1zdGF0aWMiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDBDODQ4RkIxMDFBMjA5RDAw
ODM2NDJBIC8qIERlYnVnICovLAotCQkJCTQwQzg0OEZDMTAxQTIwOUQwMDgzNjQyQSAvKiBSZWxl
YXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwQzg0OTEyMTAx
QTIxRDIwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAiZ3Rlc3RfbWFpbi1zdGF0aWMiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNDBDODQ5MEUxMDFBMjE3RjAw
ODM2NDJBIC8qIERlYnVnICovLAotCQkJCTQwQzg0OTBGMTAxQTIxN0YwMDgzNjQyQSAvKiBSZWxl
YXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTQwQzg0OTg0MTAx
QTM2ODUwMDgzNjQyQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAiZ3Rlc3RfdW5pdHRlc3Qtc3RhdGljIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTQwQzg0OTg1MTAxQTM2
ODUwMDgzNjQyQSAvKiBEZWJ1ZyAqLywKLQkJCQk0MEM4NDk4NjEwMUEzNjg1MDA4MzY0MkEgLyog
UmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0MEM4NDk5
NDEwMUEzNkE2MDA4MzY0MkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgInNhbXBsZTFfdW5pdHRlc3Qtc3RhdGljIiAqLyA9IHsKLQkJCWlzYSA9IFhDQ29u
ZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTQwQzg0OTk1
MTAxQTM2QTYwMDgzNjQyQSAvKiBEZWJ1ZyAqLywKLQkJCQk0MEM4NDk5NjEwMUEzNkE2MDA4MzY0
MkEgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9OwotCQk0
RkFEQzI0MjA4QjQxNTZEMDBBQkU1NUUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgImd0ZXN0LWZyYW1ld29yayIgKi8gPSB7Ci0JCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLQkJCQk0RkFEQzI0MzA4
QjQxNTZEMDBBQkU1NUUgLyogRGVidWcgKi8sCi0JCQkJNEZBREMyNDQwOEI0MTU2RDAwQUJFNTVF
IC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJNEZB
REMyNDYwOEI0MTU2RDAwQUJFNTVFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiZ3Rlc3QiICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCi0JCQkJNEZBREMyNDcwOEI0MTU2RDAwQUJFNTVFIC8q
IERlYnVnICovLAotCQkJCTRGQURDMjQ4MDhCNDE1NkQwMEFCRTU1RSAvKiBSZWxlYXNlICovLAot
CQkJKTsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCi0JfTsKLQlyb290T2JqZWN0ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L3RyYXZpcy5zaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ29vZ2xldGVzdC90
cmF2aXMuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGJkZWNiZDk2NGRiOC4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvZ29vZ2xldGVzdC90cmF2aXMuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBzaAotc2V0IC1ldngKLWVudiB8IHNvcnQKLQotbWtkaXIgYnVpbGQg
fHwgdHJ1ZQotbWtkaXIgYnVpbGQvJEdURVNUX1RBUkdFVCB8fCB0cnVlCi1jZCBidWlsZC8kR1RF
U1RfVEFSR0VUCi1jbWFrZSAtRGd0ZXN0X2J1aWxkX3NhbXBsZXM9T04gXAotICAgICAgLURnbW9j
a19idWlsZF9zYW1wbGVzPU9OIFwKLSAgICAgIC1EZ3Rlc3RfYnVpbGRfdGVzdHM9T04gXAotICAg
ICAgLURnbW9ja19idWlsZF90ZXN0cz1PTiBcCi0gICAgICAtRENNQUtFX0NYWF9GTEFHUz0kQ1hY
X0ZMQUdTIFwKLSAgICAgIC4uLy4uLyRHVEVTVF9UQVJHRVQKLW1ha2UKLUNURVNUX09VVFBVVF9P
Tl9GQUlMVVJFPTEgbWFrZSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2d0ZXN0LXBhcmFsbGVsL0xJQ0VOU0UgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2d0ZXN0LXBhcmFsbGVsL0xJ
Q0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NDU2OTU2NzMzNC4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ3Rlc3QtcGFyYWxsZWwvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDIwMiArMCwwIEBA
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCi0KLSAgIFRF
Uk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElP
TgotCi0gICAxLiBEZWZpbml0aW9ucy4KLQotICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhl
IHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKLSAgICAgIGFuZCBk
aXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRv
Y3VtZW50LgotCi0gICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25l
ciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQotICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0
IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgotCi0gICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBt
ZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCi0gICAgICBvdGhlciBl
bnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29t
bW9uCi0gICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2Yg
dGhpcyBkZWZpbml0aW9uLAotICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRp
cmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCi0gICAgICBkaXJlY3Rpb24gb3IgbWFuYWdl
bWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgotICAgICAgb3RoZXJ3
aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2Yg
dGhlCi0gICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJz
aGlwIG9mIHN1Y2ggZW50aXR5LgotCi0gICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFu
IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5Ci0gICAgICBleGVyY2lzaW5nIHBlcm1pc3Np
b25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgotCi0gICAgICAiU291cmNlIiBmb3JtIHNoYWxs
IG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKLSAgICAg
IGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3Vt
ZW50YXRpb24KLSAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0KLSAgICAg
ICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5p
Y2FsCi0gICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3Jt
LCBpbmNsdWRpbmcgYnV0Ci0gICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29k
ZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCi0gICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3Ro
ZXIgbWVkaWEgdHlwZXMuCi0KLSAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1
dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCi0gICAgICBPYmplY3QgZm9ybSwgbWFkZSBh
dmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCi0gICAgICBjb3B5
cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsK
LSAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCi0K
LSAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGlu
IFNvdXJjZSBvciBPYmplY3QKLSAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2
ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKLSAgICAgIGVkaXRvcmlhbCByZXZp
c2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMK
LSAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3Jz
aGlwLiBGb3IgdGhlIHB1cnBvc2VzCi0gICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUg
V29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KLSAgICAgIHNlcGFyYWJs
ZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNl
cyBvZiwKLSAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCi0KLSAg
ICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5j
bHVkaW5nCi0gICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1v
ZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCi0gICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2
ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKLSAgICAgIHN1Ym1pdHRlZCB0
byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3du
ZXIKLSAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQg
dG8gc3VibWl0IG9uIGJlaGFsZiBvZgotICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRo
ZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCi0gICAgICBtZWFucyBh
bnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBz
ZW50Ci0gICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVk
aW5nIGJ1dCBub3QgbGltaXRlZCB0bwotICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmlj
IG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKLSAgICAgIGFuZCBp
c3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBv
ZiwgdGhlCi0gICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQg
aW1wcm92aW5nIHRoZSBXb3JrLCBidXQKLSAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRo
YXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCi0gICAgICBkZXNpZ25hdGVk
IGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9u
LiIKLQotICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5k
aXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKLSAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJp
YnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAotICAgICAgc3Vic2VxdWVu
dGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCi0KLSAgIDIuIEdyYW50IG9mIENvcHly
aWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgotICAg
ICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEg
cGVycGV0dWFsLAotICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJv
eWFsdHktZnJlZSwgaXJyZXZvY2FibGUKLSAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJv
ZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAotICAgICAgcHVibGljbHkgZGlzcGxh
eSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCi0gICAg
ICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3Jt
LgotCi0gICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMg
YW5kIGNvbmRpdGlvbnMgb2YKLSAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBo
ZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKLSAgICAgIHdvcmxkd2lkZSwgbm9uLWV4
Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCi0gICAgICAoZXhj
ZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhh
dmUgbWFkZSwKLSAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3Ro
ZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAotICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxp
ZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKLSAgICAgIGJ5IHN1Y2gg
Q29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCi0gICAg
ICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJp
YnV0aW9uKHMpCi0gICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9u
KHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQotICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0
aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKLSAgICAgIGNyb3NzLWNsYWltIG9y
IGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKLSAgICAg
IG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0
ZXMgZGlyZWN0Ci0gICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhl
biBhbnkgcGF0ZW50IGxpY2Vuc2VzCi0gICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExp
Y2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKLSAgICAgIGFzIG9mIHRoZSBkYXRl
IHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KLQotICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBt
YXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKLSAgICAgIFdvcmsgb3Ig
RGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAot
ICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlk
ZWQgdGhhdCBZb3UKLSAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICAg
ICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgot
ICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCi0K
LSAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJv
bWluZW50IG5vdGljZXMKLSAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZp
bGVzOyBhbmQKLQotICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3Jt
IG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCi0gICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwg
YWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAotICAgICAgICAgIGF0dHJpYnV0
aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCi0gICAgICAgICAg
ZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBv
ZgotICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKLQotICAgICAgKGQpIElmIHRo
ZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCi0gICAg
ICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRp
c3RyaWJ1dGUgbXVzdAotICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBh
dHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAotICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElD
RSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAotICAgICAgICAgIHBl
cnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9u
ZQotICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4
dCBmaWxlIGRpc3RyaWJ1dGVkCi0gICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBX
b3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgotICAgICAgICAgIGRvY3VtZW50YXRpb24s
IGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAotICAgICAg
ICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBp
ZiBhbmQKLSAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFs
bHkgYXBwZWFyLiBUaGUgY29udGVudHMKLSAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJl
IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCi0gICAgICAgICAgZG8gbm90IG1v
ZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KLSAgICAg
ICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUs
IGFsb25nc2lkZQotICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4
dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAotICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFs
IGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAotICAgICAgICAgIGFzIG1v
ZGlmeWluZyB0aGUgTGljZW5zZS4KLQotICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJp
Z2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCi0gICAgICBtYXkgcHJvdmlk
ZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCi0g
ICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlm
aWNhdGlvbnMsIG9yCi0gICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdo
b2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKLSAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1
dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAotICAgICAgdGhlIGNvbmRp
dGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KLQotICAgNS4gU3VibWlzc2lvbiBvZiBDb250
cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAotICAgICAg
YW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGlu
IHRoZSBXb3JrCi0gICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRo
ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgotICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFu
eSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCi0gICAgICBOb3R3aXRoc3RhbmRpbmcg
dGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5Ci0gICAg
ICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2
ZSBleGVjdXRlZAotICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRp
b25zLgotCi0gICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVy
bWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCi0gICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2Vydmlj
ZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCi0gICAgICBleGNlcHQg
YXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmlu
ZyB0aGUKLSAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRl
bnQgb2YgdGhlIE5PVElDRSBmaWxlLgotCi0gICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKLSAgICAgIGFncmVlZCB0byBpbiB3
cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKLSAgICAgIENvbnRy
aWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAot
ICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yCi0gICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlv
biwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucwotICAgICAgb2YgVElUTEUsIE5PTi1JTkZS
SU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQotICAgICAgUEFSVElD
VUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcg
dGhlCi0gICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhl
IFdvcmsgYW5kIGFzc3VtZSBhbnkKLSAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4
ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KLQotICAgOC4gTGltaXRh
dGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnks
Ci0gICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3Qs
IG9yIG90aGVyd2lzZSwKLSAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAo
c3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5Ci0gICAgICBuZWdsaWdlbnQgYWN0cykgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQotICAgICAgbGlh
YmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBz
cGVjaWFsLAotICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFu
eSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCi0gICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9y
IG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCi0gICAgICBXb3JrIChpbmNs
dWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCi0g
ICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBh
bnkgYW5kIGFsbAotICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2
ZW4gaWYgc3VjaCBDb250cmlidXRvcgotICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9z
c2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgotCi0gICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3Ig
QWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCi0gICAgICB0aGUgV29y
ayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAot
ICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFu
dHksIGluZGVtbml0eSwKLSAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQv
b3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCi0gICAgICBMaWNlbnNlLiBIb3dldmVyLCBp
biBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQotICAgICAgb24g
WW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBi
ZWhhbGYKLSAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFn
cmVlIHRvIGluZGVtbmlmeSwKLSAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRv
ciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQotICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWlt
cyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgotICAgICAgb2Yg
eW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHku
Ci0KLSAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwotCi0gICBBUFBFTkRJWDogSG93IHRv
IGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCi0KLSAgICAgIFRvIGFwcGx5
IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCi0g
ICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFj
a2V0cyAiW10iCi0gICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9y
bWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQotICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNo
b3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKLSAgICAgIGNvbW1lbnQgc3ludGF4
IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQotICAgICAgZmls
ZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9u
IHRoZQotICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBm
b3IgZWFzaWVyCi0gICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2
ZXMuCi0KLSAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQotCi0g
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotCi0gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCi0KLSAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKLSAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAg
IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt
aXNzaW9ucyBhbmQKLSAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1w
YXJhbGxlbC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2d0ZXN0LXBhcmFsbGVsL09XTkVSUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjc4MmI2MWZjYTVjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9PV05FUlMKKysrIC9kZXYv
bnVsbApAQCAtMSArMCwwIEBACi1wYm9zQHdlYnJ0Yy5vcmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvZ3Rlc3QtcGFyYWxsZWwvUkVB
RE1FLndlYnJ0YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvZ3Rlc3QtcGFyYWxsZWwvUkVBRE1FLndlYnJ0YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGQ0NzE1MTA4N2JiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9SRUFETUUud2VicnRj
CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1VUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
b29nbGUvZ3Rlc3QtcGFyYWxsZWwKLVZlcnNpb246IGQwY2ViYWJhMDFjNWRiZjNhZjhhMWM4OWI2
NGVlZDc1OTZjMmI1NmMKLUxpY2Vuc2U6IEFwYWNoZSAyLjAKLUxpY2Vuc2UgRmlsZTogTElDRU5T
RQotCi1EZXNjcmlwdGlvbjoKLVBhcmFsbGVsaXphdGlvbiBzY3JpcHQgZm9yIGd0ZXN0IGJpbmFy
aWVzLgotCi1Mb2NhbCBNb2RpZmljYXRpb25zOiBOb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2d0ZXN0LXBhcmFsbGVsL2d0ZXN0
LXBhcmFsbGVsIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9ndGVzdC1wYXJhbGxlbC9ndGVzdC1wYXJhbGxlbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggNGU4MDkyOGRmNjU5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9ndGVzdC1wYXJhbGxlbC9ndGVzdC1wYXJhbGxl
bAorKysgL2Rldi9udWxsCkBAIC0xLDQxMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24y
Ci0jIENvcHlyaWdodCAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOwotIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCi0jIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5z
ZSBhdAotIwotIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
Ci0jCi0jIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4g
d3JpdGluZywgc29mdHdhcmUKLSMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKLSMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi1pbXBvcnQgY1BpY2tsZQot
aW1wb3J0IGVycm5vCi1pbXBvcnQgZ3ppcAotaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotaW1wb3J0
IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1p
bXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB0aHJlYWQKLWltcG9ydCB0aHJlYWRp
bmcKLWltcG9ydCB0aW1lCi1pbXBvcnQgemxpYgotCi0jIEFuIG9iamVjdCB0aGF0IGNhdGNoZXMg
U0lHSU5UIHNlbnQgdG8gdGhlIFB5dGhvbiBwcm9jZXNzIGFuZCBub3RpY2VzCi0jIGlmIHByb2Nl
c3NlcyBwYXNzZWQgdG8gd2FpdCgpIGRpZSBieSBTSUdJTlQgKHdlIG5lZWQgdG8gbG9vayBmb3IK
LSMgYm90aCBvZiB0aG9zZSBjYXNlcywgYmVjYXVzZSBwcmVzc2luZyBDdHJsK0MgY2FuIHJlc3Vs
dCBpbiBlaXRoZXIKLSMgdGhlIG1haW4gcHJvY2VzcyBvciBvbmUgb2YgdGhlIHN1YnByb2Nlc3Nl
cyBnZXR0aW5nIHRoZSBzaWduYWwpLgotIwotIyBCZWZvcmUgYSBTSUdJTlQgaXMgc2Vlbiwgd2Fp
dChwKSB3aWxsIHNpbXBseSBjYWxsIHAud2FpdCgpIGFuZAotIyByZXR1cm4gdGhlIHJlc3VsdC4g
T25jZSBhIFNJR0lOVCBoYXMgYmVlbiBzZWVuIChpbiB0aGUgbWFpbiBwcm9jZXNzCi0jIG9yIGEg
c3VicHJvY2VzcywgaW5jbHVkaW5nIHRoZSBvbmUgdGhlIGN1cnJlbnQgY2FsbCBpcyB3YWl0aW5n
IGZvciksCi0jIHdhaXQocCkgd2lsbCBjYWxsIHAudGVybWluYXRlKCkgYW5kIHJhaXNlIFByb2Nl
c3NXYXNJbnRlcnJ1cHRlZC4KLWNsYXNzIFNpZ2ludEhhbmRsZXIob2JqZWN0KToKLSAgY2xhc3Mg
UHJvY2Vzc1dhc0ludGVycnVwdGVkKEV4Y2VwdGlvbik6IHBhc3MKLSAgc2lnaW50X3JldHVybmNv
ZGVzID0gey1zaWduYWwuU0lHSU5ULCAgIyBVbml4Ci0gICAgICAgICAgICAgICAgICAgICAgICAt
MTA3Mzc0MTUxMCwgICAgICMgV2luZG93cwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgc2VsZi5fX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCi0g
ICAgc2VsZi5fX3Byb2Nlc3NlcyA9IHNldCgpCi0gICAgc2VsZi5fX2dvdF9zaWdpbnQgPSBGYWxz
ZQotICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2VsZi5fX3NpZ2ludF9oYW5kbGVy
KQotICBkZWYgX19vbl9zaWdpbnQoc2VsZik6Ci0gICAgc2VsZi5fX2dvdF9zaWdpbnQgPSBUcnVl
Ci0gICAgd2hpbGUgc2VsZi5fX3Byb2Nlc3NlczoKLSAgICAgIHRyeToKLSAgICAgICAgc2VsZi5f
X3Byb2Nlc3Nlcy5wb3AoKS50ZXJtaW5hdGUoKQotICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAg
ICAgIHBhc3MKLSAgZGVmIF9fc2lnaW50X2hhbmRsZXIoc2VsZiwgc2lnbmFsX251bSwgZnJhbWUp
OgotICAgIHdpdGggc2VsZi5fX2xvY2s6Ci0gICAgICBzZWxmLl9fb25fc2lnaW50KCkKLSAgZGVm
IGdvdF9zaWdpbnQoc2VsZik6Ci0gICAgd2l0aCBzZWxmLl9fbG9jazoKLSAgICAgIHJldHVybiBz
ZWxmLl9fZ290X3NpZ2ludAotICBkZWYgd2FpdChzZWxmLCBwKToKLSAgICB3aXRoIHNlbGYuX19s
b2NrOgotICAgICAgaWYgc2VsZi5fX2dvdF9zaWdpbnQ6Ci0gICAgICAgIHAudGVybWluYXRlKCkK
LSAgICAgIHNlbGYuX19wcm9jZXNzZXMuYWRkKHApCi0gICAgY29kZSA9IHAud2FpdCgpCi0gICAg
d2l0aCBzZWxmLl9fbG9jazoKLSAgICAgIHNlbGYuX19wcm9jZXNzZXMuZGlzY2FyZChwKQotICAg
ICAgaWYgY29kZSBpbiBzZWxmLnNpZ2ludF9yZXR1cm5jb2RlczoKLSAgICAgICAgc2VsZi5fX29u
X3NpZ2ludCgpCi0gICAgICBpZiBzZWxmLl9fZ290X3NpZ2ludDoKLSAgICAgICAgcmFpc2Ugc2Vs
Zi5Qcm9jZXNzV2FzSW50ZXJydXB0ZWQKLSAgICByZXR1cm4gY29kZQotc2lnaW50X2hhbmRsZXIg
PSBTaWdpbnRIYW5kbGVyKCkKLQotIyBSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCwg
b3IgTm9uZSBpZiBpdCBjb3VsZG4ndCBiZQotIyBkZXRlcm1pbmVkIChlLmcuIGJlY2F1c2Ugd2Un
cmUgbm90IGJlaW5nIHJ1biBpbnRlcmFjdGl2ZWx5KS4KLWRlZiB0ZXJtX3dpZHRoKG91dCk6Ci0g
IGlmIG5vdCBvdXQuaXNhdHR5KCk6Ci0gICAgcmV0dXJuIE5vbmUKLSAgdHJ5OgotICAgIHAgPSBz
dWJwcm9jZXNzLlBvcGVuKFsic3R0eSIsICJzaXplIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICAo
b3V0LCBlcnIpID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgaWYgcC5yZXR1cm5jb2RlICE9IDAgb3Ig
ZXJyOgotICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gaW50KG91dC5zcGxpdCgpWzFdKQot
ICBleGNlcHQgKEluZGV4RXJyb3IsIE9TRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgIHJldHVybiBO
b25lCi0KLSMgT3V0cHV0IHRyYW5zaWVudCBhbmQgcGVybWFuZW50IGxpbmVzIG9mIHRleHQuIElm
IHNldmVyYWwgdHJhbnNpZW50Ci0jIGxpbmVzIGFyZSB3cml0dGVuIGluIHNlcXVlbmNlLCB0aGUg
bmV3IHdpbGwgb3ZlcndyaXRlIHRoZSBvbGQuIFdlCi0jIHVzZSB0aGlzIHRvIGVuc3VyZSB0aGF0
IGxvdHMgb2YgdW5pbXBvcnRhbnQgaW5mbyAodGVzdHMgcGFzc2luZykKLSMgd29uJ3QgZHJvd24g
b3V0IGltcG9ydGFudCBpbmZvICh0ZXN0cyBmYWlsaW5nKS4KLWNsYXNzIE91dHB1dHRlcihvYmpl
Y3QpOgotICBkZWYgX19pbml0X18oc2VsZiwgb3V0X2ZpbGUpOgotICAgIHNlbGYuX19vdXRfZmls
ZSA9IG91dF9maWxlCi0gICAgc2VsZi5fX3ByZXZpb3VzX2xpbmVfd2FzX3RyYW5zaWVudCA9IEZh
bHNlCi0gICAgc2VsZi5fX3dpZHRoID0gdGVybV93aWR0aChvdXRfZmlsZSkgICMgTGluZSB3aWR0
aCwgb3IgTm9uZSBpZiBub3QgYSB0dHkuCi0gIGRlZiB0cmFuc2llbnRfbGluZShzZWxmLCBtc2cp
OgotICAgIGlmIHNlbGYuX193aWR0aCBpcyBOb25lOgotICAgICAgc2VsZi5fX291dF9maWxlLndy
aXRlKG1zZyArICJcbiIpCi0gICAgZWxzZToKLSAgICAgIHNlbGYuX19vdXRfZmlsZS53cml0ZSgi
XHIiICsgbXNnWzpzZWxmLl9fd2lkdGhdLmxqdXN0KHNlbGYuX193aWR0aCkpCi0gICAgICBzZWxm
Ll9fcHJldmlvdXNfbGluZV93YXNfdHJhbnNpZW50ID0gVHJ1ZQotICBkZWYgZmx1c2hfdHJhbnNp
ZW50X291dHB1dChzZWxmKToKLSAgICBpZiBzZWxmLl9fcHJldmlvdXNfbGluZV93YXNfdHJhbnNp
ZW50OgotICAgICAgc2VsZi5fX291dF9maWxlLndyaXRlKCJcbiIpCi0gICAgICBzZWxmLl9fcHJl
dmlvdXNfbGluZV93YXNfdHJhbnNpZW50ID0gRmFsc2UKLSAgZGVmIHBlcm1hbmVudF9saW5lKHNl
bGYsIG1zZyk6Ci0gICAgc2VsZi5mbHVzaF90cmFuc2llbnRfb3V0cHV0KCkKLSAgICBzZWxmLl9f
b3V0X2ZpbGUud3JpdGUobXNnICsgIlxuIikKLQotc3Rkb3V0X2xvY2sgPSB0aHJlYWRpbmcuTG9j
aygpCi0KLWNsYXNzIEZpbHRlckZvcm1hdDoKLSAgaWYgc3lzLnN0ZG91dC5pc2F0dHkoKToKLSAg
ICAjIHN0ZG91dCBuZWVkcyB0byBiZSB1bmJ1ZmZlcmVkIHNpbmNlIHRoZSBvdXRwdXQgaXMgaW50
ZXJhY3RpdmUuCi0gICAgc3lzLnN0ZG91dCA9IG9zLmZkb3BlbihzeXMuc3Rkb3V0LmZpbGVubygp
LCAndycsIDApCi0KLSAgb3V0ID0gT3V0cHV0dGVyKHN5cy5zdGRvdXQpCi0gIHRvdGFsX3Rlc3Rz
ID0gMAotICBmaW5pc2hlZF90ZXN0cyA9IDAKLQotICB0ZXN0cyA9IHt9Ci0gIG91dHB1dHMgPSB7
fQotICBmYWlsdXJlcyA9IFtdCi0KLSAgZGVmIHByaW50X3Rlc3Rfc3RhdHVzKHNlbGYsIGxhc3Rf
ZmluaXNoZWRfdGVzdCwgdGltZV9tcyk6Ci0gICAgc2VsZi5vdXQudHJhbnNpZW50X2xpbmUoIlsl
ZC8lZF0gJXMgKCVkIG1zKSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmZp
bmlzaGVkX3Rlc3RzLCBzZWxmLnRvdGFsX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxhc3RfZmluaXNoZWRfdGVzdCwgdGltZV9tcykpCi0KLSAgZGVmIGhhbmRsZV9tZXRh
KHNlbGYsIGpvYl9pZCwgYXJncyk6Ci0gICAgKGNvbW1hbmQsIGFyZykgPSBhcmdzLnNwbGl0KCcg
JywgMSkKLSAgICBpZiBjb21tYW5kID09ICJURVNUIjoKLSAgICAgIChiaW5hcnksIHRlc3QpID0g
YXJnLnNwbGl0KCcgJywgMSkKLSAgICAgIHNlbGYudGVzdHNbam9iX2lkXSA9IChiaW5hcnksIHRl
c3Quc3RyaXAoKSkKLSAgICBlbGlmIGNvbW1hbmQgPT0gIkVYSVQiOgotICAgICAgKGV4aXRfY29k
ZSwgdGltZV9tcykgPSBbaW50KHgpIGZvciB4IGluIGFyZy5zcGxpdCgnICcsIDEpXQotICAgICAg
c2VsZi5maW5pc2hlZF90ZXN0cyArPSAxCi0gICAgICAoYmluYXJ5LCB0ZXN0KSA9IHNlbGYudGVz
dHNbam9iX2lkXQotICAgICAgc2VsZi5wcmludF90ZXN0X3N0YXR1cyh0ZXN0LCB0aW1lX21zKQot
ICAgICAgaWYgZXhpdF9jb2RlICE9IDA6Ci0gICAgICAgIHNlbGYuZmFpbHVyZXMuYXBwZW5kKHNl
bGYudGVzdHNbam9iX2lkXSkKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYub3V0cHV0c1tqb2JfaWRd
KSBhcyBmOgotICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAg
ICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZShsaW5lLnJzdHJpcCgpKQotICAgICAgICBzZWxmLm91
dC5wZXJtYW5lbnRfbGluZSgKLSAgICAgICAgICAiWyVkLyVkXSAlcyByZXR1cm5lZC9hYm9ydGVk
IHdpdGggZXhpdCBjb2RlICVkICglZCBtcykiCi0gICAgICAgICAgJSAoc2VsZi5maW5pc2hlZF90
ZXN0cywgc2VsZi50b3RhbF90ZXN0cywgdGVzdCwgZXhpdF9jb2RlLCB0aW1lX21zKSkKLSAgICBl
bGlmIGNvbW1hbmQgPT0gIlRFU1RDTlQiOgotICAgICAgc2VsZi50b3RhbF90ZXN0cyA9IGludChh
cmcuc3BsaXQoJyAnLCAxKVsxXSkKLSAgICAgIHNlbGYub3V0LnRyYW5zaWVudF9saW5lKCJbMC8l
ZF0gUnVubmluZyB0ZXN0cy4uLiIgJSBzZWxmLnRvdGFsX3Rlc3RzKQotCi0gIGRlZiBsb2dmaWxl
KHNlbGYsIGpvYl9pZCwgbmFtZSk6Ci0gICAgc2VsZi5vdXRwdXRzW2pvYl9pZF0gPSBuYW1lCi0K
LSAgZGVmIGxvZyhzZWxmLCBsaW5lKToKLSAgICBzdGRvdXRfbG9jay5hY3F1aXJlKCkKLSAgICAo
cHJlZml4LCBvdXRwdXQpID0gbGluZS5zcGxpdCgnICcsIDEpCi0KLSAgICBhc3NlcnQgcHJlZml4
Wy0xXSA9PSAnOicKLSAgICBzZWxmLmhhbmRsZV9tZXRhKGludChwcmVmaXhbOi0xXSksIG91dHB1
dCkKLSAgICBzdGRvdXRfbG9jay5yZWxlYXNlKCkKLQotICBkZWYgZW5kKHNlbGYpOgotICAgIGlm
IHNlbGYuZmFpbHVyZXM6Ci0gICAgICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZSgiRkFJTEVEIFRF
U1RTICglZC8lZCk6IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobGVuKHNlbGYu
ZmFpbHVyZXMpLCBzZWxmLnRvdGFsX3Rlc3RzKSkKLSAgICAgIGZvciAoYmluYXJ5LCB0ZXN0KSBp
biBzZWxmLmZhaWx1cmVzOgotICAgICAgICBzZWxmLm91dC5wZXJtYW5lbnRfbGluZSgiICIgKyBi
aW5hcnkgKyAiOiAiICsgdGVzdCkKLSAgICBzZWxmLm91dC5mbHVzaF90cmFuc2llbnRfb3V0cHV0
KCkKLQotY2xhc3MgUmF3Rm9ybWF0OgotICBkZWYgbG9nKHNlbGYsIGxpbmUpOgotICAgIHN0ZG91
dF9sb2NrLmFjcXVpcmUoKQotICAgIHN5cy5zdGRvdXQud3JpdGUobGluZSArICJcbiIpCi0gICAg
c3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgc3Rkb3V0X2xvY2sucmVsZWFzZSgpCi0gIGRlZiBsb2dm
aWxlKHNlbGYsIGpvYl9pZCwgbmFtZSk6Ci0gICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6Ci0gICAg
ICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgotICAgICAgICBzZWxmLmxvZyhzdHIoam9iX2lk
KSArICc+ICcgKyBsaW5lLnJzdHJpcCgpKQotICBkZWYgZW5kKHNlbGYpOgotICAgIHBhc3MKLQot
IyBSZWNvcmQgb2YgdGVzdCBydW50aW1lcy4gSGFzIGJ1aWx0LWluIGxvY2tpbmcuCi1jbGFzcyBU
ZXN0VGltZXMob2JqZWN0KToKLSAgZGVmIF9faW5pdF9fKHNlbGYsIHNhdmVfZmlsZSk6Ci0gICAg
IkNyZWF0ZSBuZXcgb2JqZWN0IHNlZWRlZCB3aXRoIHNhdmVkIHRlc3QgdGltZXMgZnJvbSB0aGUg
Z2l2ZW4gZmlsZS4iCi0gICAgc2VsZi5fX3RpbWVzID0ge30gICMgKHRlc3QgYmluYXJ5LCB0ZXN0
IG5hbWUpIC0+IHJ1bnRpbWUgaW4gbXMKLQotICAgICMgUHJvdGVjdHMgY2FsbHMgdG8gcmVjb3Jk
X3Rlc3RfdGltZSgpOyBvdGhlciBjYWxscyBhcmUgbm90Ci0gICAgIyBleHBlY3RlZCB0byBiZSBt
YWRlIGNvbmN1cnJlbnRseS4KLSAgICBzZWxmLl9fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLQot
ICAgIHRyeToKLSAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzYXZlX2ZpbGUsICJyYiIpIGFzIGY6
Ci0gICAgICAgIHRpbWVzID0gY1BpY2tsZS5sb2FkKGYpCi0gICAgZXhjZXB0IChFT0ZFcnJvciwg
SU9FcnJvciwgY1BpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIHpsaWIuZXJyb3IpOgotICAgICAgIyBG
aWxlIGRvZXNuJ3QgZXhpc3QsIGlzbid0IHJlYWRhYmxlLCBpcyBtYWxmb3JtZWQtLS13aGF0ZXZl
ci4KLSAgICAgICMgSnVzdCBpZ25vcmUgaXQuCi0gICAgICByZXR1cm4KLQotICAgICMgRGlzY2Fy
ZCBzYXZlZCB0aW1lcyBpZiB0aGUgZm9ybWF0IGlzbid0IHJpZ2h0LgotICAgIGlmIHR5cGUodGlt
ZXMpIGlzIG5vdCBkaWN0OgotICAgICAgcmV0dXJuCi0gICAgZm9yICgodGVzdF9iaW5hcnksIHRl
c3RfbmFtZSksIHJ1bnRpbWUpIGluIHRpbWVzLml0ZW1zKCk6Ci0gICAgICBpZiAodHlwZSh0ZXN0
X2JpbmFyeSkgaXMgbm90IHN0ciBvciB0eXBlKHRlc3RfbmFtZSkgaXMgbm90IHN0cgotICAgICAg
ICAgIG9yIHR5cGUocnVudGltZSkgbm90IGluIHtpbnQsIGxvbmcsIHR5cGUoTm9uZSl9KToKLSAg
ICAgICAgcmV0dXJuCi0KLSAgICBzZWxmLl9fdGltZXMgPSB0aW1lcwotCi0gIGRlZiBnZXRfdGVz
dF90aW1lKHNlbGYsIGJpbmFyeSwgdGVzdG5hbWUpOgotICAgICIiIlJldHVybiB0aGUgbGFzdCBk
dXJhdGlvbiBmb3IgdGhlIGdpdmVuIHRlc3QgYXMgYW4gaW50ZWdlciBudW1iZXIgb2YKLSAgICBt
aWxsaXNlY29uZHMsIG9yIE5vbmUgaWYgdGhlIHRlc3QgZmFpbGVkIG9yIGlmIHRoZXJlJ3Mgbm8g
cmVjb3JkIGZvciBpdC4iIiIKLSAgICByZXR1cm4gc2VsZi5fX3RpbWVzLmdldCgoYmluYXJ5LCB0
ZXN0bmFtZSksIE5vbmUpCi0KLSAgZGVmIHJlY29yZF90ZXN0X3RpbWUoc2VsZiwgYmluYXJ5LCB0
ZXN0bmFtZSwgcnVudGltZV9tcyk6Ci0gICAgIiIiUmVjb3JkIHRoYXQgdGhlIGdpdmVuIHRlc3Qg
cmFuIGluIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCi0gICAgbWlsbGlzZWNvbmRzLiBJZiB0aGUg
dGVzdCBmYWlsZWQsIHJ1bnRpbWVfbXMgc2hvdWxkIGJlIE5vbmUuIiIiCi0gICAgd2l0aCBzZWxm
Ll9fbG9jazoKLSAgICAgIHNlbGYuX190aW1lc1soYmluYXJ5LCB0ZXN0bmFtZSldID0gcnVudGlt
ZV9tcwotCi0gIGRlZiB3cml0ZV90b19maWxlKHNlbGYsIHNhdmVfZmlsZSk6Ci0gICAgIldyaXRl
IGFsbCB0aGUgdGltZXMgdG8gZmlsZS4iCi0gICAgdHJ5OgotICAgICAgd2l0aCBvcGVuKHNhdmVf
ZmlsZSwgIndiIikgYXMgZjoKLSAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKCIiLCAid2IiLCA5
LCBmKSBhcyBnemY6Ci0gICAgICAgICAgY1BpY2tsZS5kdW1wKHNlbGYuX190aW1lcywgZ3pmLCBj
UGlja2xlLkhJR0hFU1RfUFJPVE9DT0wpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICBwYXNz
ICAjIGlnbm9yZSBlcnJvcnMtLS1zYXZpbmcgdGhlIHRpbWVzIGlzbid0IHRoYXQgaW1wb3J0YW50
Ci0KLSMgUmVtb3ZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIChhbnl0aGluZyBhZnRlciAtLSkuCi1h
ZGRpdGlvbmFsX2FyZ3MgPSBbXQotCi1mb3IgaSBpbiByYW5nZShsZW4oc3lzLmFyZ3YpKToKLSAg
aWYgc3lzLmFyZ3ZbaV0gPT0gJy0tJzoKLSAgICBhZGRpdGlvbmFsX2FyZ3MgPSBzeXMuYXJndltp
KzE6XQotICAgIHN5cy5hcmd2ID0gc3lzLmFyZ3ZbOmldCi0gICAgYnJlYWsKLQotcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKAotICAgIHVzYWdlID0gJ3VzYWdlOiAlcHJvZyBbb3B0aW9u
c10gYmluYXJ5IFtiaW5hcnkgLi4uXSAtLSBbYWRkaXRpb25hbCBhcmdzXScpCi0KLXBhcnNlci5h
ZGRfb3B0aW9uKCctZCcsICctLW91dHB1dF9kaXInLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD1vcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLCAiZ3Rl
c3QtcGFyYWxsZWwiKSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBkaXJlY3Rvcnkg
Zm9yIHRlc3QgbG9ncycpCi1wYXJzZXIuYWRkX29wdGlvbignLXInLCAnLS1yZXBlYXQnLCB0eXBl
PSdpbnQnLCBkZWZhdWx0PTEsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdyZXBlYXQgdGVzdHMn
KQotcGFyc2VyLmFkZF9vcHRpb24oJy0tZmFpbGVkJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVm
YXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBvbmx5IGZhaWxlZCBhbmQg
bmV3IHRlc3RzJykKLXBhcnNlci5hZGRfb3B0aW9uKCctdycsICctLXdvcmtlcnMnLCB0eXBlPSdp
bnQnLAotICAgICAgICAgICAgICAgICAgZGVmYXVsdD1tdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50
KCksCi0gICAgICAgICAgICAgICAgICBoZWxwPSdudW1iZXIgb2Ygd29ya2VycyB0byBzcGF3bicp
Ci1wYXJzZXIuYWRkX29wdGlvbignLS1ndGVzdF9jb2xvcicsIHR5cGU9J3N0cmluZycsIGRlZmF1
bHQ9J3llcycsCi0gICAgICAgICAgICAgICAgICBoZWxwPSdjb2xvciBvdXRwdXQnKQotcGFyc2Vy
LmFkZF9vcHRpb24oJy0tZ3Rlc3RfZmlsdGVyJywgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD0nJywK
LSAgICAgICAgICAgICAgICAgIGhlbHA9J3Rlc3QgZmlsdGVyJykKLXBhcnNlci5hZGRfb3B0aW9u
KCctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywK
LSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3J1biBkaXNhYmxlZCB0ZXN0
cyB0b28nKQotcGFyc2VyLmFkZF9vcHRpb24oJy0tZm9ybWF0JywgdHlwZT0nc3RyaW5nJywgZGVm
YXVsdD0nZmlsdGVyJywKLSAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBmb3JtYXQgKHJh
dyxmaWx0ZXIpJykKLXBhcnNlci5hZGRfb3B0aW9uKCctLXByaW50X3Rlc3RfdGltZXMnLCBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgaGVscD0n
V2hlbiBkb25lLCBsaXN0IHRoZSBydW4gdGltZSBvZiBlYWNoIHRlc3QnKQotCi0ob3B0aW9ucywg
YmluYXJpZXMpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi1pZiBiaW5hcmllcyA9PSBbXToKLSAg
cGFyc2VyLnByaW50X3VzYWdlKCkKLSAgc3lzLmV4aXQoMSkKLQotbG9nZ2VyID0gUmF3Rm9ybWF0
KCkKLWlmIG9wdGlvbnMuZm9ybWF0ID09ICdyYXcnOgotICBwYXNzCi1lbGlmIG9wdGlvbnMuZm9y
bWF0ID09ICdmaWx0ZXInOgotICBsb2dnZXIgPSBGaWx0ZXJGb3JtYXQoKQotZWxzZToKLSAgc3lz
LmV4aXQoIlVua25vd24gb3V0cHV0IGZvcm1hdDogIiArIG9wdGlvbnMuZm9ybWF0KQotCi0jIEZp
bmQgdGVzdHMuCi1zYXZlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+
IiksICIuZ3Rlc3QtcGFyYWxsZWwtdGltZXMiKQotdGltZXMgPSBUZXN0VGltZXMoc2F2ZV9maWxl
KQotdGVzdHMgPSBbXQotZm9yIHRlc3RfYmluYXJ5IGluIGJpbmFyaWVzOgotICBjb21tYW5kID0g
W3Rlc3RfYmluYXJ5XQotICBpZiBvcHRpb25zLmd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3Rz
OgotICAgIGNvbW1hbmQgKz0gWyctLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzJ10KLQot
ICBsaXN0X2NvbW1hbmQgPSBsaXN0KGNvbW1hbmQpCi0gIGlmIG9wdGlvbnMuZ3Rlc3RfZmlsdGVy
ICE9ICcnOgotICAgIGxpc3RfY29tbWFuZCArPSBbJy0tZ3Rlc3RfZmlsdGVyPScgKyBvcHRpb25z
Lmd0ZXN0X2ZpbHRlcl0KLQotICB0cnk6Ci0gICAgdGVzdF9saXN0ID0gc3VicHJvY2Vzcy5Qb3Bl
bihsaXN0X2NvbW1hbmQgKyBbJy0tZ3Rlc3RfbGlzdF90ZXN0cyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVsw
XQotICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgIHN5cy5leGl0KCIlczogJXMiICUgKHRlc3Rf
YmluYXJ5LCBzdHIoZSkpKQotCi0gIGNvbW1hbmQgKz0gYWRkaXRpb25hbF9hcmdzCi0KLSAgdGVz
dF9ncm91cCA9ICcnCi0gIGZvciBsaW5lIGluIHRlc3RfbGlzdC5zcGxpdCgnXG4nKToKLSAgICBp
ZiBub3QgbGluZS5zdHJpcCgpOgotICAgICAgY29udGludWUKLSAgICBpZiBsaW5lWzBdICE9ICIg
IjoKLSAgICAgICMgUmVtb3ZlIGNvbW1lbnRzIGZvciB0eXBlZCB0ZXN0cyBhbmQgc3RyaXAgd2hp
dGVzcGFjZS4KLSAgICAgIHRlc3RfZ3JvdXAgPSBsaW5lLnNwbGl0KCcjJylbMF0uc3RyaXAoKQot
ICAgICAgY29udGludWUKLSAgICAjIFJlbW92ZSBjb21tZW50cyBmb3IgcGFyYW1ldGVyaXplZCB0
ZXN0cyBhbmQgc3RyaXAgd2hpdGVzcGFjZS4KLSAgICBsaW5lID0gbGluZS5zcGxpdCgnIycpWzBd
LnN0cmlwKCkKLSAgICBpZiBub3QgbGluZToKLSAgICAgIGNvbnRpbnVlCi0KLSAgICB0ZXN0ID0g
dGVzdF9ncm91cCArIGxpbmUKLSAgICBpZiBub3Qgb3B0aW9ucy5ndGVzdF9hbHNvX3J1bl9kaXNh
YmxlZF90ZXN0cyBhbmQgJ0RJU0FCTEVEXycgaW4gdGVzdDoKLSAgICAgIGNvbnRpbnVlCi0gICAg
dGVzdHMuYXBwZW5kKCh0aW1lcy5nZXRfdGVzdF90aW1lKHRlc3RfYmluYXJ5LCB0ZXN0KSwKLSAg
ICAgICAgICAgICAgICAgIHRlc3RfYmluYXJ5LCB0ZXN0LCBjb21tYW5kKSkKLQotaWYgb3B0aW9u
cy5mYWlsZWQ6Ci0gICMgVGhlIGZpcnN0IGVsZW1lbnQgb2YgZWFjaCBlbnRyeSBpcyB0aGUgcnVu
dGltZSBvZiB0aGUgbW9zdCByZWNlbnQKLSAgIyBydW4gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwsIG9y
IE5vbmUgaWYgdGhlIHRlc3QgaXMgbmV3IG9yIHRoZSBtb3N0Ci0gICMgcmVjZW50IHJ1biBmYWls
ZWQuCi0gIHRlc3RzID0gW3ggZm9yIHggaW4gdGVzdHMgaWYgeFswXSBpcyBOb25lXQotCi0jIFNv
cnQgdGVzdHMgYnkgZmFsbGluZyBydW50aW1lICh3aXRoIE5vbmUsIHdoaWNoIGlzIHdoYXQgd2Ug
Z2V0IGZvcgotIyBuZXcgYW5kIGZhaWxpbmcgdGVzdHMsIGJlaW5nIGNvbnNpZGVyZWQgbGFyZ2Vy
IHRoYW4gYW55IHJlYWwKLSMgcnVudGltZSkuCi10ZXN0cy5zb3J0KHJldmVyc2U9VHJ1ZSwga2V5
PWxhbWJkYSB4OiAoKDEgaWYgeFswXSBpcyBOb25lIGVsc2UgMCksIHgpKQotCi0jIFJlcGVhdCB0
ZXN0cyAoLXIgZmxhZykuCi10ZXN0cyAqPSBvcHRpb25zLnJlcGVhdAotdGVzdF9sb2NrID0gdGhy
ZWFkaW5nLkxvY2soKQotam9iX2lkID0gMAotbG9nZ2VyLmxvZyhzdHIoLTEpICsgJzogVEVTVENO
VCAnICsgJyAnICsgc3RyKGxlbih0ZXN0cykpKQotCi1leGl0X2NvZGUgPSAwCi0KLSMgQ3JlYXRl
IGRpcmVjdG9yeSBmb3IgdGVzdCBsb2cgb3V0cHV0LgotdHJ5OgotICBvcy5tYWtlZGlycyhvcHRp
b25zLm91dHB1dF9kaXIpCi1leGNlcHQgT1NFcnJvciBhcyBlOgotICAjIElnbm9yZSBlcnJvcnMg
aWYgdGhpcyBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuCi0gIGlmIGUuZXJybm8gIT0gZXJybm8u
RUVYSVNUIG9yIG5vdCBvcy5wYXRoLmlzZGlyKG9wdGlvbnMub3V0cHV0X2Rpcik6Ci0gICAgcmFp
c2UgZQotIyBSZW1vdmUgZmlsZXMgZnJvbSBvbGQgdGVzdCBydW5zLgotZm9yIGxvZ2ZpbGUgaW4g
b3MubGlzdGRpcihvcHRpb25zLm91dHB1dF9kaXIpOgotICBvcy5yZW1vdmUob3MucGF0aC5qb2lu
KG9wdGlvbnMub3V0cHV0X2RpciwgbG9nZmlsZSkpCi0KLSMgUnVuIHRoZSBzcGVjaWZpZWQgam9i
LiBSZXR1cm4gdGhlIGVsYXBzZWQgdGltZSBpbiBtaWxsaXNlY29uZHMgaWYKLSMgdGhlIGpvYiBz
dWNjZWVkcywgb3IgTm9uZSBpZiB0aGUgam9iIGZhaWxzLiAoVGhpcyBlbnN1cmVzIHRoYXQKLSMg
ZmFpbGluZyB0ZXN0cyB3aWxsIHJ1biBmaXJzdCB0aGUgbmV4dCB0aW1lLikKLWRlZiBydW5fam9i
KChjb21tYW5kLCBqb2JfaWQsIHRlc3QpKToKLSAgYmVnaW4gPSB0aW1lLnRpbWUoKQotCi0gIHdp
dGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj1vcHRpb25zLm91dHB1dF9kaXIsIGRl
bGV0ZT1GYWxzZSkgYXMgbG9nOgotICAgIHN1YiA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCAr
IFsnLS1ndGVzdF9maWx0ZXI9JyArIHRlc3RdICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyctLWd0ZXN0X2NvbG9yPScgKyBvcHRpb25zLmd0ZXN0X2NvbG9yXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD1sb2cuZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZGVycj1sb2cuZmlsZSkKLSAgICB0cnk6Ci0gICAgICBjb2RlID0gc2lnaW50X2hhbmRs
ZXIud2FpdChzdWIpCi0gICAgZXhjZXB0IHNpZ2ludF9oYW5kbGVyLlByb2Nlc3NXYXNJbnRlcnJ1
cHRlZDoKLSAgICAgIHRocmVhZC5leGl0KCkKLSAgICBydW50aW1lX21zID0gaW50KDEwMDAgKiAo
dGltZS50aW1lKCkgLSBiZWdpbikpCi0gICAgbG9nZ2VyLmxvZ2ZpbGUoam9iX2lkLCBsb2cubmFt
ZSkKLQotICBsb2dnZXIubG9nKCIlczogRVhJVCAlcyAlZCIgJSAoam9iX2lkLCBjb2RlLCBydW50
aW1lX21zKSkKLSAgaWYgY29kZSA9PSAwOgotICAgIHJldHVybiBydW50aW1lX21zCi0gIGdsb2Jh
bCBleGl0X2NvZGUKLSAgZXhpdF9jb2RlID0gY29kZQotICByZXR1cm4gTm9uZQotCi1kZWYgd29y
a2VyKCk6Ci0gIGdsb2JhbCBqb2JfaWQKLSAgd2hpbGUgVHJ1ZToKLSAgICBqb2IgPSBOb25lCi0g
ICAgdGVzdF9sb2NrLmFjcXVpcmUoKQotICAgIGlmIGpvYl9pZCA8IGxlbih0ZXN0cyk6Ci0gICAg
ICAoXywgdGVzdF9iaW5hcnksIHRlc3QsIGNvbW1hbmQpID0gdGVzdHNbam9iX2lkXQotICAgICAg
bG9nZ2VyLmxvZyhzdHIoam9iX2lkKSArICc6IFRFU1QgJyArIHRlc3RfYmluYXJ5ICsgJyAnICsg
dGVzdCkKLSAgICAgIGpvYiA9IChjb21tYW5kLCBqb2JfaWQsIHRlc3QpCi0gICAgam9iX2lkICs9
IDEKLSAgICB0ZXN0X2xvY2sucmVsZWFzZSgpCi0gICAgaWYgam9iIGlzIE5vbmU6Ci0gICAgICBy
ZXR1cm4KLSAgICB0aW1lcy5yZWNvcmRfdGVzdF90aW1lKHRlc3RfYmluYXJ5LCB0ZXN0LCBydW5f
am9iKGpvYikpCi0KLWRlZiBzdGFydF9kYWVtb24oZnVuYyk6Ci0gIHQgPSB0aHJlYWRpbmcuVGhy
ZWFkKHRhcmdldD1mdW5jKQotICB0LmRhZW1vbiA9IFRydWUKLSAgdC5zdGFydCgpCi0gIHJldHVy
biB0Ci0KLXdvcmtlcnMgPSBbc3RhcnRfZGFlbW9uKHdvcmtlcikgZm9yIGkgaW4gcmFuZ2Uob3B0
aW9ucy53b3JrZXJzKV0KLQotW3Quam9pbigpIGZvciB0IGluIHdvcmtlcnNdCi1sb2dnZXIuZW5k
KCkKLXRpbWVzLndyaXRlX3RvX2ZpbGUoc2F2ZV9maWxlKQotaWYgb3B0aW9ucy5wcmludF90ZXN0
X3RpbWVzOgotICB0cyA9IHNvcnRlZCgodGltZXMuZ2V0X3Rlc3RfdGltZSh0ZXN0X2JpbmFyeSwg
dGVzdCksIHRlc3RfYmluYXJ5LCB0ZXN0KQotICAgICAgICAgICAgICBmb3IgKF8sIHRlc3RfYmlu
YXJ5LCB0ZXN0LCBfKSBpbiB0ZXN0cwotICAgICAgICAgICAgICBpZiB0aW1lcy5nZXRfdGVzdF90
aW1lKHRlc3RfYmluYXJ5LCB0ZXN0KSBpcyBub3QgTm9uZSkKLSAgZm9yICh0aW1lX21zLCB0ZXN0
X2JpbmFyeSwgdGVzdCkgaW4gdHM6Ci0gICAgcHJpbnQgIiU4cyAlcyIgJSAoIiVkbXMiICUgdGlt
ZV9tcywgdGVzdCkKLXN5cy5leGl0KC1zaWduYWwuU0lHSU5UIGlmIHNpZ2ludF9oYW5kbGVyLmdv
dF9zaWdpbnQoKSBlbHNlIGV4aXRfY29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9CVUlMRC5nbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJmNDhiOWVlN2NmLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL0JVSUxELmduCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIyBDb3B5cmlnaHQg
MjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi1pbXBvcnQoIi8vdGVzdGlu
Zy9saWJmdXp6ZXIvZnV6emVyX3Rlc3QuZ25pIikKLQotY29uZmlnKCJqc29uY3BwX2NvbmZpZyIp
IHsKLSAgaW5jbHVkZV9kaXJzID0gWwotICAgICJzb3VyY2UvaW5jbHVkZSIsCi0gICAgImdlbmVy
YXRlZCIsCi0gIF0KLQotICAjIFRPRE8oY3JidWcuY29tLzk4MzIyMyk6IFVwZGF0ZSBKc29uQ3Bw
IEJVSUxELmduIHRvIHJlbW92ZSBkZXByZWNhdGVkCi0gICMgZGVjbGFyYXRpb24gZmxhZy4KLSAg
IyBUaGlzIHRlbXBvcmFyeSBmbGFnIGFsbG93aW5nIGNsaWVudHMgdG8gdXBkYXRlIHRvIHRoZSBu
ZXcgdmVyc2lvbiwgYW5kIHRoZW4KLSAgIyB1cGRhdGUgdG8gdGhlIG5ldyBTdHJlYW1Xcml0ZXIg
YW5kIENoYXJSZWFkZXIgY2xhc3Nlcy4KLSAgaWYgKCFpc193aW4gfHwgaXNfY2xhbmcpIHsKLSAg
ICBjZmxhZ3NfY2MgPSBbICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIiBdCi0gIH0KLX0K
LQotc291cmNlX3NldCgianNvbmNwcCIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiZ2VuZXJhdGVk
L3ZlcnNpb24uaCIsCi0gICAgInNvdXJjZS9pbmNsdWRlL2pzb24vYXNzZXJ0aW9ucy5oIiwKLSAg
ICAic291cmNlL2luY2x1ZGUvanNvbi9hdXRvbGluay5oIiwKLSAgICAic291cmNlL2luY2x1ZGUv
anNvbi9jb25maWcuaCIsCi0gICAgInNvdXJjZS9pbmNsdWRlL2pzb24vZmVhdHVyZXMuaCIsCi0g
ICAgInNvdXJjZS9pbmNsdWRlL2pzb24vZm9yd2FyZHMuaCIsCi0gICAgInNvdXJjZS9pbmNsdWRl
L2pzb24vanNvbi5oIiwKLSAgICAic291cmNlL2luY2x1ZGUvanNvbi9yZWFkZXIuaCIsCi0gICAg
InNvdXJjZS9pbmNsdWRlL2pzb24vdmFsdWUuaCIsCi0gICAgInNvdXJjZS9pbmNsdWRlL2pzb24v
d3JpdGVyLmgiLAotICAgICJzb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fcmVhZGVyLmNwcCIsCi0g
ICAgInNvdXJjZS9zcmMvbGliX2pzb24vanNvbl90b29sLmgiLAotICAgICJzb3VyY2Uvc3JjL2xp
Yl9qc29uL2pzb25fdmFsdWUuY3BwIiwKLSAgICAic291cmNlL3NyYy9saWJfanNvbi9qc29uX3dy
aXRlci5jcHAiLAotICBdCi0KLSAgcHVibGljX2NvbmZpZ3MgPSBbICI6anNvbmNwcF9jb25maWci
IF0KLQotICBkZWZpbmVzID0gWwotICAgICJKU09OX1VTRV9FWENFUFRJT049MCIsCi0gICAgIkpT
T05fVVNFX05VTExSRUY9MCIsCi0gIF0KLQotICBpbmNsdWRlX2RpcnMgPSBbICJzb3VyY2Uvc3Jj
L2xpYl9qc29uIiBdCi0KLSAgaWYgKCFpc193aW4gfHwgaXNfY2xhbmcpIHsKLSAgICBjZmxhZ3Nf
Y2MgPSBbICItV25vLWltcGxpY2l0LWZhbGx0aHJvdWdoIiBdCi0gIH0KLX0KLQotZnV6emVyX3Rl
c3QoImpzb25jcHBfZnV6emVyIikgewotICBzb3VyY2VzID0gWwotICAgICJmdXp6ZXJzL2pzb25f
ZnV6emVyLmNjIiwKLSAgXQotCi0gIGRlcHMgPSBbCi0gICAgIjpqc29uY3BwIiwKLSAgXQotCi0g
IGluY2x1ZGVfZGlycyA9IFsgImdlbmVyYXRlZCIgXQotCi0gIGRpY3QgPSAiLy90ZXN0aW5nL2xp
YmZ1enplci9mdXp6ZXJzL2RpY3RzL2pzb24uZGljdCIKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9MSUNFTlNFIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL0xJ
Q0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMmJmZTFhMDNlZS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9MSUNFTlNFCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotVGhlIEpz
b25DcHAgbGlicmFyeSdzIHNvdXJjZSBjb2RlLCBpbmNsdWRpbmcgYWNjb21wYW55aW5nIGRvY3Vt
ZW50YXRpb24sIAotdGVzdHMgYW5kIGRlbW9uc3RyYXRpb24gYXBwbGljYXRpb25zLCBhcmUgbGlj
ZW5zZWQgdW5kZXIgdGhlIGZvbGxvd2luZwotY29uZGl0aW9ucy4uLgotCi1UaGUgYXV0aG9yIChC
YXB0aXN0ZSBMZXBpbGxldXIpIGV4cGxpY2l0bHkgZGlzY2xhaW1zIGNvcHlyaWdodCBpbiBhbGwg
Ci1qdXJpc2RpY3Rpb25zIHdoaWNoIHJlY29nbml6ZSBzdWNoIGEgZGlzY2xhaW1lci4gSW4gc3Vj
aCBqdXJpc2RpY3Rpb25zLCAKLXRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgaW50byB0aGUgUHVi
bGljIERvbWFpbi4KLQotSW4ganVyaXNkaWN0aW9ucyB3aGljaCBkbyBub3QgcmVjb2duaXplIFB1
YmxpYyBEb21haW4gcHJvcGVydHkgKGUuZy4gR2VybWFueSBhcyBvZgotMjAxMCksIHRoaXMgc29m
dHdhcmUgaXMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTAgYnkgQmFwdGlzdGUgTGVwaWxsZXVyLCBh
bmQgaXMKLXJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIExpY2Vuc2UgKHNlZSBi
ZWxvdykuCi0KLUluIGp1cmlzZGljdGlvbnMgd2hpY2ggcmVjb2duaXplIFB1YmxpYyBEb21haW4g
cHJvcGVydHksIHRoZSB1c2VyIG9mIHRoaXMgCi1zb2Z0d2FyZSBtYXkgY2hvb3NlIHRvIGFjY2Vw
dCBpdCBlaXRoZXIgYXMgMSkgUHVibGljIERvbWFpbiwgMikgdW5kZXIgdGhlIAotY29uZGl0aW9u
cyBvZiB0aGUgTUlUIExpY2Vuc2UgKHNlZSBiZWxvdyksIG9yIDMpIHVuZGVyIHRoZSB0ZXJtcyBv
ZiBkdWFsIAotUHVibGljIERvbWFpbi9NSVQgTGljZW5zZSBjb25kaXRpb25zIGRlc2NyaWJlZCBo
ZXJlLCBhcyB0aGV5IGNob29zZS4KLQotVGhlIE1JVCBMaWNlbnNlIGlzIGFib3V0IGFzIGNsb3Nl
IHRvIFB1YmxpYyBEb21haW4gYXMgYSBsaWNlbnNlIGNhbiBnZXQsIGFuZCBpcwotZGVzY3JpYmVk
IGluIGNsZWFyLCBjb25jaXNlIHRlcm1zIGF0OgotCi0gICBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL01JVF9MaWNlbnNlCi0gICAKLVRoZSBmdWxsIHRleHQgb2YgdGhlIE1JVCBMaWNlbnNl
IGZvbGxvd3M6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ29weXJpZ2h0IChjKSAyMDA3LTIwMTAgQmFw
dGlzdGUgTGVwaWxsZXVyCi0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uCi1vYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUg
YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgotZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAotcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCi1tb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKLW9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj
ZSBzaGFsbCBiZQotaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u
cyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX
SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi1NRVJDSEFOVEFCSUxJVFks
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUwotQkUgTElB
QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOCi1BQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
IE9VVCBPRiBPUiBJTgotQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S
IE9USEVSIERFQUxJTkdTIElOIFRIRQotU09GVFdBUkUuCi09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLShFTkQg
TElDRU5TRSBURVhUKQotCi1UaGUgTUlUIGxpY2Vuc2UgaXMgY29tcGF0aWJsZSB3aXRoIGJvdGgg
dGhlIEdQTCBhbmQgY29tbWVyY2lhbAotc29mdHdhcmUsIGFmZm9yZGluZyBvbmUgYWxsIG9mIHRo
ZSByaWdodHMgb2YgUHVibGljIERvbWFpbiB3aXRoIHRoZQotbWlub3IgbnVpc2FuY2Ugb2YgYmVp
bmcgcmVxdWlyZWQgdG8ga2VlcCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZQotYW5kIGxpY2Vu
c2UgdGV4dCBpbiB0aGUgc291cmNlIGNvZGUuIE5vdGUgYWxzbyB0aGF0IGJ5IGFjY2VwdGluZyB0
aGUKLVB1YmxpYyBEb21haW4gImxpY2Vuc2UiIHlvdSBjYW4gcmUtbGljZW5zZSB5b3VyIGNvcHkg
dXNpbmcgd2hhdGV2ZXIKLWxpY2Vuc2UgeW91IGxpa2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvT1dORVJTIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL09XTkVS
UwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBlNzM1NDQyNTQyLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL09XTkVSUworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotam9waGJhQGNocm9t
aXVtLm9yZwotCi0jIENPTVBPTkVOVDogSW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvUkVBRE1FLmNocm9t
aXVtIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL1JFQURNRS5jaHJvbWl1bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhiYzU0
M2Y0MThkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL1JFQURNRS5jaHJvbWl1bQorKysgL2Rldi9udWxsCkBA
IC0xLDE2ICswLDAgQEAKLU5hbWU6IGpzb25jcHAKLVVSTDogaHR0cHM6Ly9naXRodWIuY29tL29w
ZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcAotVmVyc2lvbjogZjU3MmU4ZTQyZTIyY2ZjZjVhYjBh
ZWEyNjU3NGY0MDg5NDNlZGZhNAotTGljZW5zZTogTUlUCi1MaWNlbnNlIEZpbGU6IExJQ0VOU0UK
LVNlY3VyaXR5IENyaXRpY2FsOiB5ZXMKLQotRGVzY3JpcHRpb246Ci1Kc29uQ3BwIGlzIHVzZWQg
YnkgbXVsdGlwbGUgcHJvamVjdHMgZm9yIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgSlNPTiBkYXRh
LiBUaGlzCi1wcm9qZWN0IGlzIG1pcnJvcmVkIGhlcmUgZnJvbSB0aGUgcHVibGljIEdpdEh1YiBw
cm9qZWN0LCB3aXRoIGEgY3VzdG9tIEJVSUxELmduCi10byBhbGxvdyBmb3IgYnVpbGRpbmcgd2l0
aCBvdXIgTmluamEgKyBHTiBjb25maWd1cmF0aW9uLiBUaGUgbWFpbiBwcm9qZWN0IHVzZXMKLU1l
c29uIG9yIENNYWtlIGZvciBidWlsZGluZy4KLQotTm90ZTogdG8gdXBkYXRlIHRoaXMgcHJvamVj
dCB0byBhIG5ldyB2ZXJzaW9uLCByZWdlbmVyYXRpbmcgdGhlIHZlcnNpb24uaCBoZWFkZXIKLWlz
IHJlcXVpcmVkLiBUaGlzIGNhbiBiZSBkb25lIGJ5IGluc3RhbGxpbmcgZWl0aGVyIENNYWtlIG9y
IE1lc29uLCBidWlsZGluZyB0aGUKLXByb2plY3QsIGFuZCBjb3B5aW5nIHRoZSBnZW5lcmF0ZWQg
dmVyc2lvbi5oIHRvIHRoZSBnZW5lcmF0ZWQvIHN1YmZvbGRlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9mdXp6ZXJz
L2pzb25fZnV6emVyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL2Z1enplcnMvanNvbl9mdXp6ZXIuY2MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMyM2I2NzBkOWI1Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9mdXp6ZXJzL2pzb25f
ZnV6emVyLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MTkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEpzb25DcHAgZnV6
emluZyB3cmFwcGVyIHRvIGhlbHAgd2l0aCBhdXRvbWF0ZWQgZnV6eiB0ZXN0aW5nLgotCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNp
bmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bWVtb3J5Pgot
I2luY2x1ZGUgInRoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9qc29uLmgi
Ci0KLW5hbWVzcGFjZSB7Ci0vLyBKc29uQ3BwIGhhcyBhIGZldyBkaWZmZXJlbnQgcGFyc2luZyBv
cHRpb25zLiBUaGUgY29kZSBiZWxvdyBtYWtlcyBzdXJlIHRoYXQKLS8vIHRoZSBtb3N0IGludGVy
c3RpbmcgdmFyaWFudHMgYXJlIHRlc3RlZC4KLWVudW0geyBrQnVpbGRlckNvbmZpZ0RlZmF1bHQg
PSAwLCBrQnVpbGRlckNvbmZpZ1N0cmljdCwga051bUJ1aWxkZXJDb25maWcgfTsKLX0gIC8vIG5h
bWVzcGFjZQotCi1zdGF0aWMgY29uc3Qgc3RkOjphcnJheTxKc29uOjpDaGFyUmVhZGVyQnVpbGRl
ciwga051bUJ1aWxkZXJDb25maWc+JgotSW5pdGlhbGl6ZSgpIHsKLSAgc3RhdGljIHN0ZDo6YXJy
YXk8SnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIsIGtOdW1CdWlsZGVyQ29uZmlnPiBidWlsZGVyc3t9
OwotCi0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyOjpzdHJpY3RNb2RlKAotICAgICAgJmJ1aWxk
ZXJzW2tCdWlsZGVyQ29uZmlnU3RyaWN0XS5zZXR0aW5nc18pOwotCi0gIHJldHVybiBidWlsZGVy
czsKLX0KLQotZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICBjb25zdCBhdXRvJiByZWFkZXJfYnVpbGRlcnMg
PSBJbml0aWFsaXplKCk7Ci0KLSAgZm9yIChjb25zdCBhdXRvJiByZWFkZXJfYnVpbGRlciA6IHJl
YWRlcl9idWlsZGVycykgewotICAgIC8vIFBhcnNlIEpzb24uCi0gICAgYXV0byByZWFkZXIgPQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SnNvbjo6Q2hhclJlYWRlcj4ocmVhZGVyX2J1aWxkZXIu
bmV3Q2hhclJlYWRlcigpKTsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIGJvb2wgcmVzID0g
cmVhZGVyLT5wYXJzZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSArIHNpemUpLCAmcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciAv
KiBlcnJzICovKTsKLSAgICBpZiAoIXJlcykgewotICAgICAgY29udGludWU7Ci0gICAgfQotCi0g
ICAgLy8gV3JpdGUgYW5kIHJlLXJlYWQganNvbi4KLSAgICBjb25zdCBKc29uOjpTdHJlYW1Xcml0
ZXJCdWlsZGVyIHdyaXRlcl9idWlsZGVyOwotICAgIGF1dG8gd3JpdGVyID0KLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEpzb246OlN0cmVhbVdyaXRlcj4od3JpdGVyX2J1aWxkZXIubmV3U3RyZWFt
V3JpdGVyKCkpOwotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG91dF9zdHJlYW07Ci0gICAgd3JpdGVy
LT53cml0ZShyb290LCAmb3V0X3N0cmVhbSk7Ci0gICAgc3RkOjpzdHJpbmcgb3V0cHV0X2pzb24g
PSBvdXRfc3RyZWFtLnN0cigpOwotCi0gICAgSnNvbjo6VmFsdWUgcm9vdF9hZ2FpbjsKLSAgICBy
ZXMgPSByZWFkZXItPnBhcnNlKG91dHB1dF9qc29uLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dF9qc29uLmRhdGEoKSArIG91dHB1dF9qc29uLmxlbmd0aCgpLCAmcm9vdF9h
Z2FpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIgLyogZXJycyAqLyk7Ci0gICAg
aWYgKCFyZXMpIHsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIC8vIFJ1biBlcXVhbGl0
eSB0ZXN0LgotICAgIC8vIE5vdGU6IFRoaXMgYWN0dWFsbHkgY2F1c2VzIHRoZSBKc29uOjpWYWx1
ZSB0cmVlIHRvIGJlIHRyYXZlcnNlZCBhbmQgYWxsCi0gICAgLy8gdGhlIHZhbHVlcyB0byBiZSBk
ZXJlZmVyZW5jZWQgKHVudGlsIHR3byBvZiB0aGVtIGFyZSBmb3VuZCBub3QgZXF1YWwpLAotICAg
IC8vIHdoaWNoIGlzIGdyZWF0IGZvciBkZXRlY3RpbmcgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyB3
aGVuIGNvbXBpbGVkIHdpdGgKLSAgICAvLyBBZGRyZXNzU2FuaXRpemVyLiBUaGUgcmVzdWx0IG9m
IHRoZSBjb21wYXJpc29uIGlzIGlnbm9yZWQsIGFzIGl0IGlzCi0gICAgLy8gZXhwZWN0ZWQgdGhh
dCBib3RoIHRoZSBvcmlnaW5hbCBhbmQgdGhlIHJlLXJlYWQgdmVyc2lvbiB3aWxsIGRpZmZlciBm
cm9tCi0gICAgLy8gdGltZSB0byB0aW1lIChlLmcuIGR1ZSB0byBmbG9hdGluZyBwb2ludCBhY2N1
cmFjeSBsb3NzKS4KLSAgICAodm9pZCkocm9vdCA9PSByb290X2FnYWluKTsKLSAgfQotCi0gIHJl
dHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL2dlbmVyYXRlZC92ZXJzaW9uLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvZ2VuZXJhdGVkL3ZlcnNp
b24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3NjA4MjFlMjgzLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL2dlbmVyYXRlZC92ZXJzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCww
IEBACi0vLyBETyBOT1QgRURJVC4gVGhpcyBmaWxlIChhbmQgInZlcnNpb24iKSBpcyBhIHRlbXBs
YXRlIHVzZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbQotLy8gKGVpdGhlciBDTWFrZSBvciBNZXNvbikg
dG8gZ2VuZXJhdGUgYSAidmVyc2lvbi5oIiBoZWFkZXIgZmlsZS4KLSNpZm5kZWYgSlNPTl9WRVJT
SU9OX0hfSU5DTFVERUQKLSNkZWZpbmUgSlNPTl9WRVJTSU9OX0hfSU5DTFVERUQKLQotI2RlZmlu
ZSBKU09OQ1BQX1ZFUlNJT05fU1RSSU5HICIxLjkuMCIKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9O
X01BSk9SIDEKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9OX01JTk9SIDkKLSNkZWZpbmUgSlNPTkNQ
UF9WRVJTSU9OX1BBVENIIDAKLSNkZWZpbmUgSlNPTkNQUF9WRVJTSU9OX1FVQUxJRklFUgotI2Rl
ZmluZSBKU09OQ1BQX1ZFUlNJT05fSEVYQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgKChKU09OQ1BQX1ZFUlNJT05fTUFKT1IgPDwgMjQpIHwgKEpTT05DUFBfVkVS
U0lPTl9NSU5PUiA8PCAxNikgfCBcCi0gICAoSlNPTkNQUF9WRVJTSU9OX1BBVENIIDw8IDgpKQot
Ci0jaWZkZWYgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi0jdW5kZWYgSlNPTkNQUF9VU0lO
R19TRUNVUkVfTUVNT1JZCi0jZW5kaWYKLSNkZWZpbmUgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVN
T1JZIDAKLS8vIElmIG5vbi16ZXJvLCB0aGUgbGlicmFyeSB6ZXJvZXMgYW55IG1lbW9yeSB0aGF0
IGl0IGhhcyBhbGxvY2F0ZWQgYmVmb3JlCi0vLyBpdCBmcmVlcyBpdHMgbWVtb3J5LgotCi0jZW5k
aWYgIC8vIEpTT05fVkVSU0lPTl9IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5jbGFuZy1m
b3JtYXQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlLy5jbGFuZy1mb3JtYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJhMzcyZmM1YmVlYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmNsYW5nLWZvcm1hdAorKysg
L2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS0tLQotIyBCYXNlZE9uU3R5bGU6ICBMTFZNCi1B
Y2Nlc3NNb2RpZmllck9mZnNldDogLTIKLUNvbnN0cnVjdG9ySW5pdGlhbGl6ZXJJbmRlbnRXaWR0
aDogNAotQWxpZ25Fc2NhcGVkTmV3bGluZXNMZWZ0OiBmYWxzZQotQWxpZ25UcmFpbGluZ0NvbW1l
bnRzOiB0cnVlCi1BbGxvd0FsbFBhcmFtZXRlcnNPZkRlY2xhcmF0aW9uT25OZXh0TGluZTogdHJ1
ZQotQWxsb3dTaG9ydElmU3RhdGVtZW50c09uQVNpbmdsZUxpbmU6IGZhbHNlCi1BbGxvd1Nob3J0
TG9vcHNPbkFTaW5nbGVMaW5lOiBmYWxzZQotQWx3YXlzQnJlYWtUZW1wbGF0ZURlY2xhcmF0aW9u
czogZmFsc2UKLUFsd2F5c0JyZWFrQmVmb3JlTXVsdGlsaW5lU3RyaW5nczogZmFsc2UKLUJyZWFr
QmVmb3JlQmluYXJ5T3BlcmF0b3JzOiBmYWxzZQotQnJlYWtCZWZvcmVUZXJuYXJ5T3BlcmF0b3Jz
OiB0cnVlCi1CcmVha0NvbnN0cnVjdG9ySW5pdGlhbGl6ZXJzQmVmb3JlQ29tbWE6IGZhbHNlCi1C
aW5QYWNrUGFyYW1ldGVyczogZmFsc2UKLUNvbHVtbkxpbWl0OiAgICAgODAKLUNvbnN0cnVjdG9y
SW5pdGlhbGl6ZXJBbGxPbk9uZUxpbmVPck9uZVBlckxpbmU6IGZhbHNlCi1EZXJpdmVQb2ludGVy
QmluZGluZzogZmFsc2UKLUV4cGVyaW1lbnRhbEF1dG9EZXRlY3RCaW5QYWNraW5nOiBmYWxzZQot
SW5kZW50Q2FzZUxhYmVsczogZmFsc2UKLU1heEVtcHR5TGluZXNUb0tlZXA6IDEKLU5hbWVzcGFj
ZUluZGVudGF0aW9uOiBOb25lCi1PYmpDU3BhY2VCZWZvcmVQcm90b2NvbExpc3Q6IHRydWUKLVBl
bmFsdHlCcmVha0JlZm9yZUZpcnN0Q2FsbFBhcmFtZXRlcjogMTkKLVBlbmFsdHlCcmVha0NvbW1l
bnQ6IDYwCi1QZW5hbHR5QnJlYWtTdHJpbmc6IDEwMDAKLVBlbmFsdHlCcmVha0ZpcnN0TGVzc0xl
c3M6IDEyMAotUGVuYWx0eUV4Y2Vzc0NoYXJhY3RlcjogMTAwMDAwMAotUGVuYWx0eVJldHVyblR5
cGVPbkl0c093bkxpbmU6IDYwCi1Qb2ludGVyQmluZHNUb1R5cGU6IHRydWUKLVNwYWNlc0JlZm9y
ZVRyYWlsaW5nQ29tbWVudHM6IDEKLUNwcDExQnJhY2VkTGlzdFN0eWxlOiB0cnVlCi1TdGFuZGFy
ZDogICAgICAgIENwcDExCi1JbmRlbnRXaWR0aDogICAgIDIKLVRhYldpZHRoOiAgICAgICAgOAot
VXNlVGFiOiAgICAgICAgICBOZXZlcgotQnJlYWtCZWZvcmVCcmFjZXM6IEF0dGFjaAotSW5kZW50
RnVuY3Rpb25EZWNsYXJhdGlvbkFmdGVyVHlwZTogZmFsc2UKLVNwYWNlc0luUGFyZW50aGVzZXM6
IGZhbHNlCi1TcGFjZXNJbkFuZ2xlczogIGZhbHNlCi1TcGFjZUluRW1wdHlQYXJlbnRoZXNlczog
ZmFsc2UKLVNwYWNlc0luQ1N0eWxlQ2FzdFBhcmVudGhlc2VzOiBmYWxzZQotU3BhY2VBZnRlckNv
bnRyb2xTdGF0ZW1lbnRLZXl3b3JkOiB0cnVlCi1TcGFjZUJlZm9yZUFzc2lnbm1lbnRPcGVyYXRv
cnM6IHRydWUKLUNvbnRpbnVhdGlvbkluZGVudFdpZHRoOiA0Ci0uLi4KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS8uZ2l0YXR0cmlidXRlcyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdpdGF0dHJpYnV0ZXMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDIyZDJiN2E0NTVhMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdp
dGF0dHJpYnV0ZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0qICAgICAgICAgICB0
ZXh0PWF1dG8KLSouaCAgICAgICAgIHRleHQKLSouY3BwICAgICAgIHRleHQKLSouanNvbiAgICAg
IHRleHQKLSouaW4gICAgICAgIHRleHQKLSouc2ggICAgICAgIGVvbD1sZgotKi5iYXQgICAgICAg
ZW9sPWNybGYKLSoudmNwcm9qICAgIGVvbD1jcmxmCi0qLnZjeHByb2ogICBlb2w9Y3JsZgotKi5z
bG4gICAgICAgZW9sPWNybGYKLWRldnRvb2xzL2FnZW50X3ZtKiBlb2w9Y3JsZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2J1Z19yZXBvcnQubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy5naXRo
dWIvSVNTVUVfVEVNUExBVEUvYnVnX3JlcG9ydC5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzU0NzcwOTdhNjM1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0aHViL0lTU1VF
X1RFTVBMQVRFL2J1Z19yZXBvcnQubWQKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0t
LS0KLW5hbWU6IEJ1ZyByZXBvcnQKLWFib3V0OiBDcmVhdGUgYSByZXBvcnQgdG8gaGVscCB1cyBp
bXByb3ZlCi10aXRsZTogJycKLWxhYmVsczogJycKLWFzc2lnbmVlczogJycKLQotLS0tCi0KLSoq
RGVzY3JpYmUgdGhlIGJ1ZyoqCi1BIGNsZWFyIGFuZCBjb25jaXNlIGRlc2NyaXB0aW9uIG9mIHdo
YXQgdGhlIGJ1ZyBpcy4KLQotKipUbyBSZXByb2R1Y2UqKgotU3RlcHMgdG8gcmVwcm9kdWNlIHRo
ZSBiZWhhdmlvcjoKLTEuCi0KLSoqRXhwZWN0ZWQgYmVoYXZpb3IqKgotQSBjbGVhciBhbmQgY29u
Y2lzZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHlvdSBleHBlY3RlZCB0byBoYXBwZW4uCi0KLSoqRGVz
a3RvcCAocGxlYXNlIGNvbXBsZXRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24pOioqCi0gLSBP
UzogW2UuZy4gaU9TXQotIC0gTWVzb24gdmVyc2lvbgotIC0gTmluamEgdmVyc2lvbgotCi0qKkFk
ZGl0aW9uYWwgY29udGV4dCoqCi1BZGQgYW55IG90aGVyIGNvbnRleHQgYWJvdXQgdGhlIHByb2Js
ZW0gaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9mZWF0dXJl
X3JlcXVlc3QubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlLy5naXRodWIvSVNTVUVfVEVNUExBVEUvZmVhdHVyZV9yZXF1ZXN0
Lm1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmNiYmU3ZDYxNTUuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlLy5naXRodWIvSVNTVUVfVEVNUExBVEUvZmVhdHVyZV9yZXF1ZXN0Lm1k
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLS0tCi1uYW1lOiBGZWF0dXJlIHJlcXVl
c3QKLWFib3V0OiBTdWdnZXN0IGFuIGlkZWEgZm9yIHRoaXMgcHJvamVjdAotdGl0bGU6ICcnCi1s
YWJlbHM6ICcnCi1hc3NpZ25lZXM6ICcnCi0KLS0tLQotCi0qKklzIHlvdXIgZmVhdHVyZSByZXF1
ZXN0IHJlbGF0ZWQgdG8gYSBwcm9ibGVtPyBQbGVhc2UgZGVzY3JpYmUuKioKLUEgY2xlYXIgYW5k
IGNvbmNpc2UgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgcHJvYmxlbSBpcy4gRXguIEknbSBhbHdh
eXMgZnJ1c3RyYXRlZCB3aGVuIFsuLi5dCi0KLSoqRGVzY3JpYmUgdGhlIHNvbHV0aW9uIHlvdSdk
IGxpa2UqKgotQSBjbGVhciBhbmQgY29uY2lzZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHlvdSB3YW50
IHRvIGhhcHBlbi4KLQotKipEZXNjcmliZSBhbHRlcm5hdGl2ZXMgeW91J3ZlIGNvbnNpZGVyZWQq
KgotQSBjbGVhciBhbmQgY29uY2lzZSBkZXNjcmlwdGlvbiBvZiBhbnkgYWx0ZXJuYXRpdmUgc29s
dXRpb25zIG9yIGZlYXR1cmVzIHlvdSd2ZSBjb25zaWRlcmVkLgotCi0qKkFkZGl0aW9uYWwgY29u
dGV4dCoqCi1BZGQgYW55IG90aGVyIGNvbnRleHQgb3Igc2NyZWVuc2hvdHMgYWJvdXQgdGhlIGZl
YXR1cmUgcmVxdWVzdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8uZ2l0aWdub3JlIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8u
Z2l0aWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDIwNjk3YzIzMzUuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlLy5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vYnVpbGQvCi0vYnVpbGQtKi8KLSoucHljCi0qLnN3cAotKi5hY3R1YWwKLSouYWN0
dWFsLXJld3JpdGUKLSoucHJvY2Vzcy1vdXRwdXQKLSoucmV3cml0ZQotL2Jpbi8KLS9saWJzLwot
L2RvYy9kb3h5ZmlsZQotL2Rpc3QvCi0jL3ZlcnNpb24KLSMvaW5jbHVkZS9qc29uL3ZlcnNpb24u
aAotCi0jIE1TVkMgcHJvamVjdCBmaWxlczoKLSouc2xuCi0qLnZjeHByb2oKLSouZmlsdGVycwot
Ki51c2VyCi0qLnNkZgotKi5vcGVuc2RmCi0qLnN1bwotCi0jIE1TVkMgYnVpbGQgZmlsZXM6Ci0q
LmxpYgotKi5vYmoKLSoudGxvZy8KLSoucGRiCi0KLSMgQ01ha2UtZ2VuZXJhdGVkIGZpbGVzOgot
Q01ha2VGaWxlcy8KLSouY21ha2UKLS9wa2ctY29uZmlnL2pzb25jcHAucGMKLWpzb25jcHBfbGli
X3N0YXRpYy5kaXIvCi0KLSMgSW4gY2FzZSBzb21lb25lIHJ1bnMgY21ha2UgaW4gdGhlIHJvb3Qt
ZGlyOgotL0NNYWtlQ2FjaGUudHh0Ci0vTWFrZWZpbGUKLS9pbmNsdWRlL01ha2VmaWxlCi0vc3Jj
L01ha2VmaWxlCi0vc3JjL2pzb250ZXN0cnVubmVyL01ha2VmaWxlCi0vc3JjL2pzb250ZXN0cnVu
bmVyL2pzb250ZXN0cnVubmVyX2V4ZQotL3NyYy9saWJfanNvbi9NYWtlZmlsZQotL3NyYy90ZXN0
X2xpYl9qc29uL01ha2VmaWxlCi0vc3JjL3Rlc3RfbGliX2pzb24vanNvbmNwcF90ZXN0Ci0qLmEK
LQotIyBlY2xpcHNlIHByb2plY3QgZmlsZXMKLS5wcm9qZWN0Ci0uY3Byb2plY3QKLS8uc2V0dGlu
Z3MvCi0KLSMgRFNfU3RvcmUKLS5EU19TdG9yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzLnlt
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvLnRyYXZpcy55bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NDli
NDYzM2JkYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpcy55bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw2NSArMCwwIEBACi0jIEJ1aWxkIG1hdHJpeCAvIGVudmlyb25tZW50IHZhcmlhYmxl
cyBhcmUgZXhwbGFpbmVkIG9uOgotIyBodHRwOi8vYWJvdXQudHJhdmlzLWNpLm9yZy9kb2NzL3Vz
ZXIvYnVpbGQtY29uZmlndXJhdGlvbi8KLSMgVGhpcyBmaWxlIGNhbiBiZSB2YWxpZGF0ZWQgb246
IGh0dHA6Ly93d3cueWFtbGxpbnQuY29tLwotIyBPciB1c2luZyB0aGUgUnVieSBiYXNlZCB0cmF2
ZWwgY29tbWFuZCBsaW5lIHRvb2w6Ci0jIGdlbSBpbnN0YWxsIHRyYXZpcyAtLW5vLXJkb2MgLS1u
by1yaQotIyB0cmF2aXMgbGludCAudHJhdmlzLnltbAotbGFuZ3VhZ2U6IGNwcAotc3VkbzogZmFs
c2UKLWFkZG9uczoKLSAgaG9tZWJyZXc6Ci0gICAgcGFja2FnZXM6Ci0gICAgLSBtZXNvbgotICAg
IC0gbmluamEKLSAgICB1cGRhdGU6IGZhbHNlICMgZG8gbm90IHVwZGF0ZSBob21lYnJldyBieSBk
ZWZhdWx0Ci0gIGFwdDoKLSAgICBzb3VyY2VzOgotICAgIC0gdWJ1bnR1LXRvb2xjaGFpbi1yLXRl
c3QKLSAgICAtIGxsdm0tdG9vbGNoYWluLXhlbmlhbC04Ci0gICAgcGFja2FnZXM6Ci0gICAgLSBj
bGFuZy04Ci0gICAgLSB2YWxncmluZAotbWF0cml4OgotICBhbGxvd19mYWlsdXJlczoKLSAgICAt
IG9zOiBvc3gKLSAgaW5jbHVkZToKLSAgICAtIG5hbWU6IE1hYyBjbGFuZyBtZXNvbiBzdGF0aWMg
cmVsZWFzZSB0ZXN0aW5nCi0gICAgICBvczogb3N4Ci0gICAgICBvc3hfaW1hZ2U6IHhjb2RlMTAu
MgotICAgICAgY29tcGlsZXI6IGNsYW5nCi0gICAgICBlbnY6Ci0gICAgICAgICBDWFg9ImNsYW5n
KysiCi0gICAgICAgICBDQz0iY2xhbmciCi0gICAgICAgICBMSUJfVFlQRT1zdGF0aWMKLSAgICAg
ICAgIEJVSUxEX1RZUEU9cmVsZWFzZQotICAgICAgc2NyaXB0OiAuLy50cmF2aXNfc2NyaXB0cy9t
ZXNvbl9idWlsZGVyLnNoCi0gICAgLSBuYW1lOiBMaW51eCB4ZW5pYWwgY2xhbmcgbWVzb24gc3Rh
dGljIHJlbGVhc2UgdGVzdGluZwotICAgICAgb3M6IGxpbnV4Ci0gICAgICBkaXN0OiB4ZW5pYWwK
LSAgICAgIGNvbXBpbGVyOiBjbGFuZwotICAgICAgZW52OgotICAgICAgICAgQ1hYPSJjbGFuZysr
IgotICAgICAgICAgQ0M9ImNsYW5nIgotICAgICAgICAgTElCX1RZUEU9c3RhdGljCi0gICAgICAg
ICBCVUlMRF9UWVBFPXJlbGVhc2UKLSAgICAgICMgYmVmb3JlX2luc3RhbGwgYW5kIGluc3RhbGwg
c3RlcHMgb25seSBuZWVkZWQgZm9yIGxpbnV4IG1lc29uIGJ1aWxkcwotICAgICAgYmVmb3JlX2lu
c3RhbGw6Ci0gICAgICAgICAgLSBzb3VyY2UgLi8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmJlZm9y
ZV9pbnN0YWxsLiR7VFJBVklTX09TX05BTUV9LnNoCi0gICAgICBpbnN0YWxsOgotICAgICAgICAg
ICAtIHNvdXJjZSAuLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuaW5zdGFsbC4ke1RSQVZJU19PU19O
QU1FfS5zaAotICAgICAgc2NyaXB0OiAuLy50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVyLnNo
Ci0gICAgLSBuYW1lOiBMaW51eCB4ZW5pYWwgZ2NjIGNtYWtlIGNvdmVyYWdlCi0gICAgICBvczog
bGludXgKLSAgICAgIGRpc3Q6IHhlbmlhbAotICAgICAgY29tcGlsZXI6IGdjYwotICAgICAgZW52
OgotICAgICAgICBDWFg9ZysrCi0gICAgICAgIENDPWdjYwotICAgICAgICBET19Db3ZlcmFnZT1P
TgotICAgICAgICBCVUlMRF9UT09MPSJVbml4IE1ha2VmaWxlcyIKLSAgICAgICAgQlVJTERfVFlQ
RT1EZWJ1ZwotICAgICAgICBMSUJfVFlQRT1zaGFyZWQKLSAgICAgICAgREVTVERJUj0vdG1wL2Nt
YWtlX2pzb25fY3BwCi0gICAgICBzY3JpcHQ6IC4vLnRyYXZpc19zY3JpcHRzL2NtYWtlX2J1aWxk
ZXIuc2gKLW5vdGlmaWNhdGlvbnM6Ci0gIGVtYWlsOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8u
dHJhdmlzX3NjcmlwdHMvY21ha2VfYnVpbGRlci5zaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL2Nt
YWtlX2J1aWxkZXIuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGNjYjMzMzEyZWEw
Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL2NtYWtlX2J1aWxkZXIu
c2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgc2gKLSMg
VGhpcyBzY3JpcHQgY2FuIGJlIHVzZWQgb24gdGhlIGNvbW1hbmQgbGluZSBkaXJlY3RseSB0byBj
b25maWd1cmUgc2V2ZXJhbAotIyBkaWZmZXJlbnQgYnVpbGQgZW52aXJvbm1lbnRzLgotIyBUaGlz
IGlzIGNhbGxlZCBieSBgLnRyYXZpcy55bWxgIHZpYSBUcmF2aXMgQ0kuCi0jIFRyYXZpcyBzdXBw
bGllcyAkVFJBVklTX09TX05BTUUuCi0jICBodHRwOi8vZG9jcy50cmF2aXMtY2kuY29tL3VzZXIv
bXVsdGktb3MvCi0jIE91ciAudHJhdmlzLnltbCBhbHNvIGRlZmluZXM6Ci0KLSMgICAtIEJVSUxE
X1RZUEU9UmVsZWFzZS9EZWJ1ZwotIyAgIC0gTElCX1RZUEU9c3RhdGljL3NoYXJlZAotIwotIyBP
cHRpb25hbCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcwotIyAgIC0gREVTVERJUiA8LSB1c2VkIGZv
ciBzZXR0aW5nIHRoZSBpbnN0YWxsIHByZWZpeAotIyAgIC0gQlVJTERfVE9PTD1bIlVuaXggTWFr
ZWZpbGUifCJOaW5qYSJdCi0jICAgLSBCVUlMRE5BTUUgPC0gaG93IHRvIGlkZW50aWZ5IHRoaXMg
YnVpbGQgb24gdGhlIGRhc2hib2FyZAotIyAgIC0gRE9fTWVtQ2hlY2sgPC0gaWYgc2V0LCB0cnkg
dG8gdXNlIHZhbGdyaW5kCi0jICAgLSBET19Db3ZlcmFnZSA8LSBpZiBzZXQsIHRyeSB0byBkbyBk
YXNoYm9hcmQgY292ZXJhZ2UgdGVzdGluZwotIwotCi1lbnZfc2V0PTEKLWlmICR7QlVJTERfVFlQ
RStmYWxzZX07IHRoZW4KLSAgZWNobyAiQlVJTERfVFlQRSBub3Qgc2V0IGluIGVudmlyb25tZW50
LiIKLSAgZW52X3NldD0wCi1maQotaWYgJHtMSUJfVFlQRStmYWxzZX07IHRoZW4KLSAgZWNobyAi
TElCX1RZUEUgbm90IHNldCBpbiBlbnZpcm9ubWVudC4iCi0gIGVudl9zZXQ9MAotZmkKLWlmICR7
Q1hYK2ZhbHNlfTsgdGhlbgotICBlY2hvICJDWFggbm90IHNldCBpbiBlbnZpcm9ubWVudC4iCi0g
IGVudl9zZXQ9MAotZmkKLQotCi1pZiBbICR7ZW52X3NldH0gLWVxIDAgXTsgdGhlbgotICBlY2hv
ICJVU0FHRTogIENYWD0kKHdoaWNoIGNsYW5nKyspICBCVUlMRF9UWVBFPVtSZWxlYXNlfERlYnVn
XSBMSUJfVFlQRT1bc3RhdGljfHNoYXJlZF0gJDAiCi0gIGVjaG8gIiIKLSAgZWNobyAiRXhhbXBs
ZXM6IgotICBlY2hvICIgICAgICAgICAgIENYWD0kKHdoaWNoIGNsYW5nKyspIEJVSUxEX1RZUEU9
UmVsZWFzZSBMSUJfVFlQRT1zaGFyZWQgREVTVERJUj0vdG1wL2NtYWtlX2pzb25fY3BwICQwIgot
ICBlY2hvICIgICAgICAgICAgIENYWD0kKHdoaWNoIGNsYW5nKyspIEJVSUxEX1RZUEU9RGVidWcg
ICBMSUJfVFlQRT1zaGFyZWQgREVTVERJUj0vdG1wL2NtYWtlX2pzb25fY3BwICQwIgotICBlY2hv
ICIgICAgICAgICAgIENYWD0kKHdoaWNoIGNsYW5nKyspIEJVSUxEX1RZUEU9UmVsZWFzZSBMSUJf
VFlQRT1zdGF0aWMgREVTVERJUj0vdG1wL2NtYWtlX2pzb25fY3BwICQwIgotICBlY2hvICIgICAg
ICAgICAgIENYWD0kKHdoaWNoIGNsYW5nKyspIEJVSUxEX1RZUEU9RGVidWcgICBMSUJfVFlQRT1z
dGF0aWMgREVTVERJUj0vdG1wL2NtYWtlX2pzb25fY3BwICQwIgotCi0gIGVjaG8gIiAgICAgICAg
ICAgQ1hYPSQod2hpY2ggZysrKSAgICAgQlVJTERfVFlQRT1SZWxlYXNlIExJQl9UWVBFPXNoYXJl
ZCBERVNURElSPS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hY
PSQod2hpY2ggZysrKSAgICAgQlVJTERfVFlQRT1EZWJ1ZyAgIExJQl9UWVBFPXNoYXJlZCBERVNU
RElSPS90bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQod2hp
Y2ggZysrKSAgICAgQlVJTERfVFlQRT1SZWxlYXNlIExJQl9UWVBFPXN0YXRpYyBERVNURElSPS90
bXAvY21ha2VfanNvbl9jcHAgJDAiCi0gIGVjaG8gIiAgICAgICAgICAgQ1hYPSQod2hpY2ggZysr
KSAgICAgQlVJTERfVFlQRT1EZWJ1ZyAgIExJQl9UWVBFPXN0YXRpYyBERVNURElSPS90bXAvY21h
a2VfanNvbl9jcHAgJDAiCi0KLSAgZXhpdCAtMQotZmkKLQotaWYgJHtERVNURElSK2ZhbHNlfTsg
dGhlbgotICBERVNURElSPSIvdXNyL2xvY2FsIgotZmkKLQotIyAtZTogZmFpbCBvbiBlcnJvcgot
IyAtdjogc2hvdyBjb21tYW5kcwotIyAteDogc2hvdyBleHBhbmRlZCBjb21tYW5kcwotc2V0IC12
ZXgKLQotZW52IHwgc29ydAotCi13aGljaCBjbWFrZQotY21ha2UgLS12ZXJzaW9uCi0KLWVjaG8g
JHtDWFh9Ci0ke0NYWH0gLS12ZXJzaW9uCi1fQ09NUElMRVJfTkFNRT1gYmFzZW5hbWUgJHtDWFh9
YAotaWYgWyAiJHtCVUlMRF9UWVBFfSIgPT0gInNoYXJlZCIgXTsgdGhlbgotICBfQ01BS0VfQlVJ
TERfU0hBUkVEX0xJQlM9T04KLWVsc2UKLSAgX0NNQUtFX0JVSUxEX1NIQVJFRF9MSUJTPU9GRgot
ZmkKLQotQ1RFU1RfVEVTVElOR19PUFRJT049Ii1EIEV4cGVyaW1lbnRhbFRlc3QiCi0jICAgLSBE
T19NZW1DaGVjayA8LSBpZiBzZXQsIHRyeSB0byB1c2UgdmFsZ3JpbmQKLWlmICEgJHtET19NZW1D
aGVjaytmYWxzZX07IHRoZW4KLSAgIHZhbGdyaW5kIC0tdmVyc2lvbgotICAgQ1RFU1RfVEVTVElO
R19PUFRJT049Ii1EIEV4cGVyaW1lbnRhbE1lbUNoZWNrIgotZWxzZQotIyAgIC0gRE9fQ292ZXJh
Z2UgPC0gaWYgc2V0LCB0cnkgdG8gZG8gZGFzaGJvYXJkIGNvdmVyYWdlIHRlc3RpbmcKLSAgaWYg
ISAke0RPX0NvdmVyYWdlK2ZhbHNlfTsgdGhlbgotICAgICBleHBvcnQgQ1hYRkxBR1M9Ii1mcHJv
ZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSIKLSAgICAgZXhwb3J0IExERkxBR1M9Ii1mcHJvZmls
ZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSIKLSAgICAgQ1RFU1RfVEVTVElOR19PUFRJT049Ii1EIEV4
cGVyaW1lbnRhbFRlc3QgLUQgRXhwZXJpbWVudGFsQ292ZXJhZ2UiCi0gICAgICNnY292IC0tdmVy
c2lvbgotICBmaQotZmkKLQotIyAgTmluamEgICAgICAgICAgICAgICAgICAgICAgICA9IEdlbmVy
YXRlcyBidWlsZC5uaW5qYSBmaWxlcy4KLWlmICR7QlVJTERfVE9PTCtmYWxzZX07IHRoZW4KLSAg
QlVJTERfVE9PTD0iTmluamEiCi0gIGV4cG9ydCBfQlVJTERfRVhFPW5pbmphCi0gIHdoaWNoIG5p
bmphCi0gIG5pbmphIC0tdmVyc2lvbgotZWxzZQotIyAgVW5peCBNYWtlZmlsZXMgICAgICAgICAg
ICAgICA9IEdlbmVyYXRlcyBzdGFuZGFyZCBVTklYIG1ha2VmaWxlcy4KLSAgZXhwb3J0IF9CVUlM
RF9FWEU9bWFrZQotZmkKLQotX0JVSUxEX0RJUl9OQU1FPSJidWlsZC1jbWFrZV8ke0JVSUxEX1RZ
UEV9XyR7TElCX1RZUEV9XyR7X0NPTVBJTEVSX05BTUV9XyR7X0JVSUxEX0VYRX0iCi1ta2RpciAt
cCAke19CVUlMRF9ESVJfTkFNRX0KLWNkICIke19CVUlMRF9ESVJfTkFNRX0iCi0gIGlmICR7QlVJ
TEROQU1FK2ZhbHNlfTsgdGhlbgotICAgICBfSE9TVE5BTUU9YGhvc3RuYW1lIC1zYAotICAgICBC
VUlMRE5BTUU9IiR7X0hPU1ROQU1FfV8ke0JVSUxEX1RZUEV9XyR7TElCX1RZUEV9XyR7X0NPTVBJ
TEVSX05BTUV9XyR7X0JVSUxEX0VYRX0iCi0gIGZpCi0gIGNtYWtlIFwKLSAgICAtRyAiJHtCVUlM
RF9UT09MfSIgXAotICAgIC1EQlVJTEROQU1FOlNUUklORz0iJHtCVUlMRE5BTUV9IiBcCi0gICAg
LURDTUFLRV9DWFhfQ09NUElMRVI6UEFUSD0ke0NYWH0gXAotICAgIC1EQ01BS0VfQlVJTERfVFlQ
RTpTVFJJTkc9JHtCVUlMRF9UWVBFfSBcCi0gICAgLURCVUlMRF9TSEFSRURfTElCUzpCT09MPSR7
X0NNQUtFX0JVSUxEX1NIQVJFRF9MSUJTfSBcCi0gICAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpQ
QVRIPSR7REVTVERJUn0gXAotICAgIC4uLwotCi0gIGN0ZXN0IC1DICR7QlVJTERfVFlQRX0gLUQg
RXhwZXJpbWVudGFsU3RhcnQgLUQgRXhwZXJpbWVudGFsQ29uZmlndXJlIC1EIEV4cGVyaW1lbnRh
bEJ1aWxkICR7Q1RFU1RfVEVTVElOR19PUFRJT059IC1EIEV4cGVyaW1lbnRhbFN1Ym1pdAotICAj
IEZpbmFsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoYXQgaW5zdGFsbGF0aW9uIHN1Y2NlZWRzCi0gIGNt
YWtlIC0tYnVpbGQgLiAtLWNvbmZpZyAke0JVSUxEX1RZUEV9IC0tdGFyZ2V0IGluc3RhbGwKLQot
ICBpZiBbICIke0RFU1RESVJ9IiAhPSAiL3Vzci9sb2NhbCIgXTsgdGhlbgotICAgICAke19CVUlM
RF9FWEV9IGluc3RhbGwKLSAgZmkKLWNkIC0KLQotaWYgJHtDTEVBTlVQK2ZhbHNlfTsgdGhlbgot
ICBlY2hvICJTa2lwcGluZyBjbGVhbnVwOiBidWlsZCBkaXJlY3Rvcnkgd2lsbCBwZXJzaXN0LiIK
LWVsc2UKLSAgcm0gLXIgIiR7X0JVSUxEX0RJUl9OQU1FfSIKLWZpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
Ly50cmF2aXNfc2NyaXB0cy9tZXNvbl9idWlsZGVyLnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMv
bWVzb25fYnVpbGRlci5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGJmMDNjYjJm
NThiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvbWVzb25fYnVpbGRl
ci5zaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHNoCi0j
IFRoaXMgc2NyaXB0IGNhbiBiZSB1c2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgZGlyZWN0bHkgdG8g
Y29uZmlndXJlIHNldmVyYWwKLSMgZGlmZmVyZW50IGJ1aWxkIGVudmlyb25tZW50cy4KLSMgVGhp
cyBpcyBjYWxsZWQgYnkgYC50cmF2aXMueW1sYCB2aWEgVHJhdmlzIENJLgotIyBUcmF2aXMgc3Vw
cGxpZXMgJFRSQVZJU19PU19OQU1FLgotIyAgaHR0cDovL2RvY3MudHJhdmlzLWNpLmNvbS91c2Vy
L211bHRpLW9zLwotIyBPdXIgLnRyYXZpcy55bWwgYWxzbyBkZWZpbmVzOgotCi0jICAgLSBCVUlM
RF9UWVBFPXJlbGVhc2UvZGVidWcKLSMgICAtIExJQl9UWVBFPXN0YXRpYy9zaGFyZWQKLQotZW52
X3NldD0xCi1pZiAke0JVSUxEX1RZUEUrZmFsc2V9OyB0aGVuCi0gIGVjaG8gIkJVSUxEX1RZUEUg
bm90IHNldCBpbiBlbnZpcm9ubWVudC4iCi0gIGVudl9zZXQ9MAotZmkKLWlmICR7TElCX1RZUEUr
ZmFsc2V9OyB0aGVuCi0gIGVjaG8gIkxJQl9UWVBFIG5vdCBzZXQgaW4gZW52aXJvbm1lbnQuIgot
ICBlbnZfc2V0PTAKLWZpCi1pZiAke0NYWCtmYWxzZX07IHRoZW4KLSAgZWNobyAiQ1hYIG5vdCBz
ZXQgaW4gZW52aXJvbm1lbnQuIgotICBlbnZfc2V0PTAKLWZpCi0KLQotaWYgWyAke2Vudl9zZXR9
IC1lcSAwIF07IHRoZW4KLSAgZWNobyAiVVNBR0U6ICBDWFg9JCh3aGljaCBjbGFuZysrKSAgQlVJ
TERfVFlQRT1bcmVsZWFzZXxkZWJ1Z10gTElCX1RZUEU9W3N0YXRpY3xzaGFyZWRdICQwIgotICBl
Y2hvICIiCi0gIGVjaG8gIkV4YW1wbGVzOiIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGlj
aCBjbGFuZysrKSBCVUlMRF9UWVBFPXJlbGVhc2UgTElCX1RZUEU9c2hhcmVkIERFU1RESVI9L3Rt
cC9tZXNvbl9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBjbGFu
ZysrKSBCVUlMRF9UWVBFPWRlYnVnICAgTElCX1RZUEU9c2hhcmVkIERFU1RESVI9L3RtcC9tZXNv
bl9qc29uX2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBjbGFuZysrKSBC
VUlMRF9UWVBFPXJlbGVhc2UgTElCX1RZUEU9c3RhdGljIERFU1RESVI9L3RtcC9tZXNvbl9qc29u
X2NwcCAkMCIKLSAgZWNobyAiICAgICAgICAgICBDWFg9JCh3aGljaCBjbGFuZysrKSBCVUlMRF9U
WVBFPWRlYnVnICAgTElCX1RZUEU9c3RhdGljIERFU1RESVI9L3RtcC9tZXNvbl9qc29uX2NwcCAk
MCIKLQotICBlY2hvICIgICAgICAgICAgIENYWD0kKHdoaWNoIGcrKykgICAgIEJVSUxEX1RZUEU9
cmVsZWFzZSBMSUJfVFlQRT1zaGFyZWQgREVTVERJUj0vdG1wL21lc29uX2pzb25fY3BwICQwIgot
ICBlY2hvICIgICAgICAgICAgIENYWD0kKHdoaWNoIGcrKykgICAgIEJVSUxEX1RZUEU9ZGVidWcg
ICBMSUJfVFlQRT1zaGFyZWQgREVTVERJUj0vdG1wL21lc29uX2pzb25fY3BwICQwIgotICBlY2hv
ICIgICAgICAgICAgIENYWD0kKHdoaWNoIGcrKykgICAgIEJVSUxEX1RZUEU9cmVsZWFzZSBMSUJf
VFlQRT1zdGF0aWMgREVTVERJUj0vdG1wL21lc29uX2pzb25fY3BwICQwIgotICBlY2hvICIgICAg
ICAgICAgIENYWD0kKHdoaWNoIGcrKykgICAgIEJVSUxEX1RZUEU9ZGVidWcgICBMSUJfVFlQRT1z
dGF0aWMgREVTVERJUj0vdG1wL21lc29uX2pzb25fY3BwICQwIgotCi0gIGV4aXQgLTEKLWZpCi0K
LWlmICR7REVTVERJUitmYWxzZX07IHRoZW4KLSAgREVTVERJUj0iL3Vzci9sb2NhbCIKLWZpCi0K
LSMgLWU6IGZhaWwgb24gZXJyb3IKLSMgLXY6IHNob3cgY29tbWFuZHMKLSMgLXg6IHNob3cgZXhw
YW5kZWQgY29tbWFuZHMKLXNldCAtdmV4Ci0KLQotZW52IHwgc29ydAotCi13aGljaCBweXRob24z
Ci13aGljaCBtZXNvbgotd2hpY2ggbmluamEKLWVjaG8gJHtDWFh9Ci0ke0NYWH0gLS12ZXJzaW9u
Ci1weXRob24zIC0tdmVyc2lvbgotbWVzb24gLS12ZXJzaW9uCi1uaW5qYSAtLXZlcnNpb24KLV9D
T01QSUxFUl9OQU1FPWBiYXNlbmFtZSAke0NYWH1gCi1fQlVJTERfRElSX05BTUU9ImJ1aWxkLSR7
QlVJTERfVFlQRX1fJHtMSUJfVFlQRX1fJHtfQ09NUElMRVJfTkFNRX0iCi1tZXNvbiAtLWJ1aWxk
dHlwZSAke0JVSUxEX1RZUEV9IC0tZGVmYXVsdC1saWJyYXJ5ICR7TElCX1RZUEV9IC4gIiR7X0JV
SUxEX0RJUl9OQU1FfSIKLW5pbmphIC12IC1qIDIgLUMgIiR7X0JVSUxEX0RJUl9OQU1FfSIKLSNu
aW5qYSAtdiAtaiAyIC1DICIke19CVUlMRF9ESVJfTkFNRX0iIHRlc3QKLWNkICIke19CVUlMRF9E
SVJfTkFNRX0iCi0gIG1lc29uIHRlc3QgLS1uby1yZWJ1aWxkIC0tcHJpbnQtZXJyb3Jsb2dzCi0K
LSAgaWYgWyAiJHtERVNURElSfSIgIT0gIi91c3IvbG9jYWwiIF07IHRoZW4KLSAgICAgbmluamEg
aW5zdGFsbAotICBmaQotY2QgLQotCi1pZiAke0NMRUFOVVArZmFsc2V9OyB0aGVuCi0gIGVjaG8g
IlNraXBwaW5nIGNsZWFudXA6ICBidWlsZCBkaXJlY3Rvcnkgd2lsbCBwZXJzaXN0LiIKLWVsc2UK
LSAgcm0gLXIgIiR7X0JVSUxEX0RJUl9OQU1FfSIKLWZpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2
aXNfc2NyaXB0cy90cmF2aXMuYmVmb3JlX2luc3RhbGwubGludXguc2ggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNf
c2NyaXB0cy90cmF2aXMuYmVmb3JlX2luc3RhbGwubGludXguc2gKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDliNTU2ZGUxNTVkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvLnRyYXZp
c19zY3JpcHRzL3RyYXZpcy5iZWZvcmVfaW5zdGFsbC5saW51eC5zaAorKysgL2Rldi9udWxsCkBA
IC0xLDggKzAsMCBAQAotc2V0IC12ZXgKLQotIyBQcmVpbnN0YWxsZWQgdmVyc2lvbnMgb2YgcHl0
aG9uIGFyZSBkZXBlbmRlbnQgb24gd2hpY2ggVWJ1bnR1IGRpc3RyaWJ1dGlvbgotIyB5b3UgYXJl
IHJ1bm5pbmcuIFRoZSBiZWxvdyB2ZXJzaW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQgd2hlbmV2ZXIg
d2Ugcm9sbAotIyB0aGUgVWJ1bnR1IHZlcnNpb24gdXNlZCBpbiBUcmF2aXMuCi0jIGh0dHBzOi8v
ZG9jcy50cmF2aXMtY2kuY29tL3VzZXIvbGFuZ3VhZ2VzL3B5dGhvbi8KLQotcHllbnYgZ2xvYmFs
IDMuNy4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuYmVmb3JlX2lu
c3RhbGwub3N4LnNoIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmJlZm9yZV9pbnN0YWxs
Lm9zeC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4M2MwYzcxZTZmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlzX3NjcmlwdHMvdHJhdmlzLmJlZm9yZV9pbnN0YWxs
Lm9zeC5zaAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgTk9USElORyBUTyBETyBIRVJF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuaW5zdGFsbC5saW51eC5z
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLmxpbnV4LnNoCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzU4NDZmMWE0MGUuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlLy50cmF2aXNfc2NyaXB0cy90cmF2aXMuaW5zdGFsbC5saW51eC5zaAorKysgL2Rldi9udWxs
CkBAIC0xLDEwICswLDAgQEAKLXNldCAtdmV4Ci0KLXdnZXQgaHR0cHM6Ly9naXRodWIuY29tL25p
bmphLWJ1aWxkL25pbmphL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjkuMC9uaW5qYS1saW51eC56aXAK
LXVuemlwIC1xIG5pbmphLWxpbnV4LnppcCAtZCBidWlsZAotCi1waXAzIGluc3RhbGwgbWVzb24K
LWVjaG8gJHtQQVRIfQotbHMgL3Vzci9sb2NhbAotbHMgL3Vzci9sb2NhbC9iaW4KLWV4cG9ydCBQ
QVRIPSIke1BXRH0iL2J1aWxkOi91c3IvbG9jYWwvYmluOi91c3IvYmluOiR7UEFUSH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvLnRyYXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLm9zeC5zaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
LnRyYXZpc19zY3JpcHRzL3RyYXZpcy5pbnN0YWxsLm9zeC5zaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNWQ4M2MwYzcxZTZmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS8udHJhdmlz
X3NjcmlwdHMvdHJhdmlzLmluc3RhbGwub3N4LnNoCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBA
QAotIyBOT1RISU5HIFRPIERPIEhFUkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvQVVUSE9SUyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
QVVUSE9SUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcyM2Q1NDZhNzVmLi4wMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS9BVVRIT1JTCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAg
QEAKLUJhcHRpc3RlIExlcGlsbGV1ciA8YmxlcEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLUFh
cm9uIEphY29icyA8YWFyb25qamFjb2JzQGdtYWlsLmNvbT4KLUFhcm9uIEphY29icyA8amFjb2Jz
YUBnb29nbGUuY29tPgotQWRhbSBCb3NlbGV5IDxBQm9zZWxleUBhZ2p1bmN0aW9uLmNvbT4KLUFk
YW0gQm9zZWxleSA8YWRhbS5ib3NlbGV5QGdtYWlsLmNvbT4KLUFsZWtzYW5kciBEZXJiZW5ldiA8
MTNhbGV4YWNAZ21haWwuY29tPgotQWxleGFuZGVyIEdhemFyb3YgPERyTWV0YWxsaXVzQHVzZXJz
Lm5vcmVwbHkuZ2l0aHViLmNvbT4KLUFsZXhhbmRlciBWLiBCcmV6Z2luIDxhYnJlemdpbkBhcHBs
aWVkdGVjaC5ydT4KLUFsZXhhbmRyIEJyZXpnaW4gPGFsYnJlemdpbkBtYWlsLnJ1PgotQWxleGV5
IEtydWNoaW5pbiA8YWxleGV5QG1vcGFscy5jb20+Ci1BbnRvbiBJbmRyYXdhbiA8YW50b24uaW5k
cmF3YW5AZ21haWwuY29tPgotQmFwdGlzdGUgSm9uZ2xleiA8Z2l0QGJpdHNvZm5ldHdvcmtzLm9y
Zz4KLUJhcHRpc3RlIExlcGlsbGV1ciA8YmFwdGlzdGUubGVwaWxsZXVyQGdtYWlsLmNvbT4KLUJh
cnVjaCBTaWFjaCA8YmFydWNoQHRrb3MuY28uaWw+Ci1CZW4gQm9lY2tlbCA8bWF0aHN0dWZAZ21h
aWwuY29tPgotQmVuamFtaW4gS25lY2h0IDxia25lY2h0QGxvZ2l0ZWNoLmNvbT4KLUJlcm5kIEt1
aGxzIDxiZXJuZC5rdWhsc0B0LW9ubGluZS5kZT4KLUJpbGx5IERvbmFodWUgPGJpbGx5ZG9uYWh1
ZUBnb29nbGUuY29tPgotQnJhZGVuIE1jRG9ybWFuIDxibWNkb3JtYW5AZ21haWwuY29tPgotQnJh
bmRvbiBNeWVycyA8Ym15ZXJzMTc4OEBnbWFpbC5jb20+Ci1CcmVuZGFuIERyZXcgPGJyZW5kYW4u
ZHJld0BkYXFyaS5jb20+Ci1jaGFzb24gPGN4Y2hhbzgwMkBnbWFpbC5jb20+Ci1DaHJpcyBHaWxs
aW5nIDxjZ2lsbGluZ0BpcGFyYWRpZ21zLmNvbT4KLUNocmlzdG9waGVyIERhd2VzIDxjaHJpc3Rv
cGhlci5kYXdlcy4xOTgxQGdvb2dsZW1haWwuY29tPgotQ2hyaXN0b3BoZXIgRHVubiA8Y2R1bm4y
MDAxQGdtYWlsLmNvbT4KLUNodWNrIEF0a2lucyA8Y2h1Y2suYXRraW5zQGtpdHdhcmUuY29tPgot
Q29keSBQIFNjaGFmZXIgPGRldkBjb2R5cHMuY29tPgotQ29ubm9yIE1hbm5pbmcgPGNvbm5vckBo
b2J1LmNvPgotQ29yeSBRdWFtbWVuIDxjb3J5LnF1YW1tZW5Aa2l0d2FyZS5jb20+Ci1DcmlzdG/M
gXZhzINvIEIgZGEgQ3J1eiBlIFNpbHZhIDxDcmlzWGVkQGdtYWlsLmNvbT4KLURhbmllbCBLcsO8
Z2xlciA8ZGFuaWVsLmtydWVnbGVyQGdtYWlsLmNvbT4KLURhbmktSHViIDxkYW5pZWwua3J1ZWds
ZXJAZ29vZ2xlbWFpbC5jb20+Ci1EYW4gTGl1IDxnemxpdWRhbj4KLWRhdGFkaW9kZSA8ZGF0YWRp
b2RlQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLWRhdGFkaW9kZSA8am9jaGVuLm5ldWJlY2tA
dm9kYWZvbmUuZGU+Ci1EYXZpZCBTZWlmZXJ0IDxzb2FwQGdlbnRvby5vcmc+Ci1EYXZpZCBXZXN0
IDxkYXZpZC13ZXN0QGlkZXh4LmNvbT4KLWRhd2VzYyA8Y2hyaXMuZGF3ZXNAZWZ0bGFiLmNvLnVr
PgotRGV2aW4gSmVhbnBpZXJyZSA8amVhbnBpZXJyZWRhQGdvb2dsZS5jb20+Ci1EbWl0cnkgTWFy
YWthc292IDxhbWRtaTNAYW1kbWkzLnJ1PgotZG9taW5pY3Blenp1dG8gPGRvbUBkb21wZXp6dXRv
LmNvbT4KLURvbiBNaWxoYW0gPGRtaWxoYW1AZ21haWwuY29tPgotZHJnbGVyIDxkYW5pZWwua3J1
ZWdsZXJAZ21haWwuY29tPgotZHMyODMgPEQuU2VlcnlAc3Vzc2V4LmFjLnVrPgotRWdvciBUZW5z
aW4gPEVnb3IuVGVuc2luQGdtYWlsLmNvbT4KLWVpZ2h0bm90ZWlnaHQgPG1yLmVpZ2h0bm90ZWln
aHRAZ21haWwuY29tPgotRXZpbmNlIDxiYW5leXVlQGdtYWlsLmNvbT4KLWZpbGlwanMgPGZpbGlw
anNAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotZmluZGJsYXIgPGZ0QGZpbmJhcnIuY2E+Ci1G
bG9yaWFuIE1laWVyIDxmbG9yaWFuLm1laWVyQGtvYWxvLmRlPgotR2HDq3RhbiBMZWhtYW5uIDxn
YWV0YW4ubGVobWFubkBnbWFpbC5jb20+Ci1HYXVyYXYgPGcuZ3VwdGFAc2Ftc3VuZy5jb20+Ci1H
ZXJnZWx5IE5hZ3kgPG5nZ0BuZ2cuaHU+Ci1HaWRhIFBhdGFraSA8Z2lkYS5wYXRha2lAcHJlemku
Y29tPgotSTNjayA8YnVja21hcnRpbkBidWNrbWFydGluLmRlPgotScOxYWtpIEJheiBDYXN0aWxs
byA8aWJjQGFsaWF4Lm5ldD4KLUphY2NvIDxqYWNjb0BnZXVsLm5ldD4KLUplYW4tQ2hyaXN0b3Bo
ZSBGaWxsaW9uLVJvYmluIDxqY2hyaXMuZmlsbGlvbnJAa2l0d2FyZS5jb20+Ci1Kb25hcyBQbGF0
dGUgPG1haWxAam9uYXNwbGF0dGUuZGU+Ci1Kb3JkYW4gQmF5bGVzIDxiYXlsZXMuam9yZGFuQGdt
YWlsLmNvbT4KLUrDtnJnIEtyYXVzZSA8am9lcmcua3JhdXNlQGVtYmVkZGVkLnJvY2tzPgotS2Vp
dGggTGVhIDxrZWl0aEB3aGFtY2l0eWxpZ2h0cy5jb20+Ci1LZXZpbiBHcmFudCA8a2JyYWRsZXln
cmFudEBnbWFpbC5jb20+Ci1LaXJpbGwgVi4gTHlhZHZpbnNreSA8amlhM2VwQGdtYWlsLmNvbT4K
LUtpcmlsbCBWLiBMeWFkdmluc2t5IDxtYWlsQGNvZGVhdGNwcC5jb20+Ci1Lb2JpIEd1cmthbiA8
a29iaWd1cmtAZ21haWwuY29tPgotTWFnbnVzIEJqZXJrZSBWaWsgPG1idmV0dEBnbWFpbC5jb20+
Ci1NYWxheSBTaGFoIDxtYWxheXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotTWFyYSBLaW0gPGhh
Y2tlci5yb290QGdtYWlsLmNvbT4KLU1hcmVrIEtvdGV3aWN6IDxtYXJlay5rb3Rld2ljekBnbWFp
bC5jb20+Ci1NYXJrIExha2F0YSA8bWFya0BsYWthdGEub3JnPgotTWFyayBaZXJlbiA8bXplcmVu
QHZtd2FyZS5jb20+Ci1NYXJ0aW4gQnVjayA8YnVja21hcnRpbkBidWNrbWFydGluLmRlPgotTWFy
dHluIEdpZ2cgPG1hcnR5bi5naWdnQGdtYWlsLmNvbT4KLU1hdHRlcyBEIDxnaXRodWJAeG9mdC5j
ej4KLU1hdHRoaWFzIExveSA8bWF0dGhpYXMubG95QGhibS5jb20+Ci1NZXJseW4gTW9yZ2FuLUdy
YWhhbSA8a2F2aWthQGdtYWlsLmNvbT4KLU1pY2hhZWwgU2hpZWxkcyA8bXNoaWVsZHNAZ29vZ2xl
LmNvbT4KLU1pY2hhxYIgR8Ozcm55IDxtZ29ybnlAZ2VudG9vLm9yZz4KLU1pa2UgTmFiZXJlem55
IDxtaWtlQG5hYmVyZXpueS5jb20+Ci1tbG95IDxtYXR0aGlhcy5sb3lAZ29vZ2xlbWFpbC5jb20+
Ci1Nb3R0aSA8bGFuemtyb25AZ21haWwuY29tPgotbm5rdXIgPG5ua3VyQG1haWwucnU+Ci1PbWth
ciBXYWdoIDxvd2FnaEBvd2FnaGxpbnV4Lm55LnRvd2VyLXJlc2VhcmNoLmNvbT4KLXBhdWxvIDxw
YXVsb2JyaXpvbGFyYUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1wYXZlbC5waW1lbm92IDxw
YXZlbC5waW1lbm92QGdtYWlsLmNvbT4KLVBhd2XFgiBCeWxpY2EgPGNoZmFzdEBnbWFpbC5jb20+
Ci1Qw6lyaWNsZXMgTG9wZXMgTWFjaGFkbyA8cGVyaWNsZXMucmFza29sbmlrb2ZmQGdtYWlsLmNv
bT4KLVBldGVyIFNwaWVzcy1LbmFmbCA8cHNrQGF1dGlzdGljaS5vcmc+Ci1wZmZhbmcgPHBmZmFu
Z0B2aXAucXEuY29tPgotUsOpbWkgVmVyc2NoZWxkZSA8cmVtaUB2ZXJzY2hlbGRlLmZyPgotcmVu
dTU1NSA8cmVudS50eWFnaUBzYW1zdW5nLmNvbT4KLVJvYmVydCBEYWlsZXkgPHJjZGFpbGV5QGdt
YWlsLmNvbT4KLVNhbSBDbGVnZyA8c2JjQGNocm9taXVtLm9yZz4KLXNlbGFzZWxhaCA8c2VsYWhA
b3V0bG9vay5jb20+Ci1TZXJnaXk4MCA8c2lsMjAwNEBnbWFpbC5jb20+Ci1zZXJnenViIDxzZXJn
enViQGdtYWlsLmNvbT4KLVN0ZWZhbiBTY2h3ZXRlciA8c3RlZmFuQHNjaHdldGVyLml0PgotU3Rl
ZmZlbiBLaWXDnyA8U3RlZmZlbi5LaWVzc0BpcHZzLnVuaS1zdHV0dGdhcnQuZGU+Ci1TdGV2ZW4g
SGFobiA8aGFobnNlQG9ybmwuZ292PgotU3R1YXJ0IEVpY2hlcnQgPHN0dWFydEBmaXZlbWljcm8u
Y29tPgotU3VwZXJNYW5pdHUgPHN1cGVybWFuaXR1QGdtYWlsLmNvbT4KLVRlY2h3b2xmIDxkcmlu
Z0BnMzNrd29ybGQubmV0PgotVGVuZ2l6IFNoYXJhZmlldiA8YnRvbGZhK2dpdGh1YkBnbWFpbC5j
b20+Ci1Ub21hc3ogTWFjaWVqZXdza2kgPHRtYWNpZWpld3NrQGdtYWlsLmNvbT4KLVZpY2VudGUg
T2xpdmVydCBSaWVyYSA8VmluY2VudC5SaWVyYUBpbWd0ZWMuY29tPgoteGlhb3l1cjM0NyA8eGlh
b3l1cjM0N0BnbWFpbC5jb20+Ci15Y3FpdSA8NDI5MTQ4ODQ4QHFxLmNvbT4KLXlpcWlqdSA8ZnJl
ZF9qdUBzZWxpbmMuY29tPgotWXUgWGlhb2xlaSA8ZHJlaWZhY2hzdGVpbkBnbWFpbC5jb20+Ci0K
LUdvb2dsZSBJbmMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9DTWFr
ZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxZDA4YjBhYjM0Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDE4NiArMCwwIEBACi0jIHZpbTogZXQgdHM9NCBzdHM9NCBzdz00IHR3PTAKLQotIyA9PT09IERl
ZmluZSBjbWFrZSBidWlsZCBwb2xpY2llcyB0aGF0IGFmZmVjdCBjb21waWxhdGlvbiBhbmQgbGlu
a2FnZSBkZWZhdWx0IGJlaGF2aW9ycwotIwotIyBTZXQgdGhlIEpTT05DUFBfTkVXRVNUX1ZBTElE
QVRFRF9QT0xJQ0lFU19WRVJTSU9OIHN0cmluZyB0byB0aGUgbmV3ZXN0IGNtYWtlIHZlcnNpb24K
LSMgcG9saWNpZXMgdGhhdCBwcm92aWRlIHN1Y2Nlc3NmdWwgYnVpbGRzLiBCeSBzZXR0aW5nIEpT
T05DUFBfTkVXRVNUX1ZBTElEQVRFRF9QT0xJQ0lFU19WRVJTSU9OCi0jIHRvIGEgdmFsdWUgZ3Jl
YXRlciB0aGFuIHRoZSBvbGRlc3QgcG9saWNpZXMsIGFsbCBwb2xpY2llcyBiZXR3ZWVuCi0jIEpT
T05DUFBfT0xERVNUX1ZBTElEQVRFRF9QT0xJQ0lFU19WRVJTSU9OIGFuZCBDTUFLRV9WRVJTSU9O
ICh1c2VkIGZvciB0aGlzIGJ1aWxkKQotIyBhcmUgc2V0IHRvIHRoZWlyIE5FVyBiZWhhaXZvciwg
dGhlcmVieSBzdXBwcmVzc2luZyBwb2xpY3kgd2FybmluZ3MgcmVsYXRlZCB0byBwb2xpY2llcwot
IyBiZXR3ZWVuIHRoZSBKU09OQ1BQX09MREVTVF9WQUxJREFURURfUE9MSUNJRVNfVkVSU0lPTiBh
bmQgQ01BS0VfVkVSU0lPTi4KLSMKLSMgQ01ha2UgdmVyc2lvbnMgZ3JlYXRlciB0aGFuIHRoZSBK
U09OQ1BQX05FV0VTVF9WQUxJREFURURfUE9MSUNJRVNfVkVSU0lPTiBwb2xpY2llcyB3aWxsCi0j
IGNvbnRpbnVlIHRvIGdlbmVyYXRlIHBvbGljeSB3YXJuaW5ncyAiQ01ha2UgV2FybmluZyAoZGV2
KS4uLlBvbGljeSBDTVAwWFhYIGlzIG5vdCBzZXQ6IgotIwotc2V0KEpTT05DUFBfT0xERVNUX1ZB
TElEQVRFRF9QT0xJQ0lFU19WRVJTSU9OICIzLjguMCIpCi1zZXQoSlNPTkNQUF9ORVdFU1RfVkFM
SURBVEVEX1BPTElDSUVTX1ZFUlNJT04gIjMuMTMuMiIpCi1jbWFrZV9taW5pbXVtX3JlcXVpcmVk
KFZFUlNJT04gJHtKU09OQ1BQX09MREVTVF9WQUxJREFURURfUE9MSUNJRVNfVkVSU0lPTn0pCi1p
ZigiJHtDTUFLRV9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICIke0pTT05DUFBfTkVXRVNUX1ZBTElE
QVRFRF9QT0xJQ0lFU19WRVJTSU9OfSIpCi0gICAgI1NldCBhbmQgdXNlIHRoZSBuZXdlc3QgYXZh
aWxhYmxlIGNtYWtlIHBvbGljaWVzIHRoYXQgYXJlIHZhbGlkYXRlZCB0byB3b3JrCi0gICAgc2V0
KEpTT05DUFBfQ01BS0VfUE9MSUNZX1ZFUlNJT04gIiR7Q01BS0VfVkVSU0lPTn0iKQotZWxzZSgp
Ci0gICAgc2V0KEpTT05DUFBfQ01BS0VfUE9MSUNZX1ZFUlNJT04gIiR7SlNPTkNQUF9ORVdFU1Rf
VkFMSURBVEVEX1BPTElDSUVTX1ZFUlNJT059IikKLWVuZGlmKCkKLWNtYWtlX3BvbGljeShWRVJT
SU9OICR7SlNPTkNQUF9DTUFLRV9QT0xJQ1lfVkVSU0lPTn0pCi0jCi0jIE5vdyBlbnVtZXJhdGUg
c3BlY2lmaWMgcG9saWNpZXMgbmV3ZXIgdGhhbiBKU09OQ1BQX05FV0VTVF9WQUxJREFURURfUE9M
SUNJRVNfVkVSU0lPTgotIyB0aGF0IG1heSBuZWVkIHRvIGJlIGluZGl2aWR1YWxseSBzZXQgdG8g
TkVXL09MRAotIwotZm9yZWFjaChwbmV3ICIiKSAjIEN1cnJlbnRseSBFbXB0eQotICAgIGlmKFBP
TElDWSAke3BuZXd9KQotICAgICAgICBjbWFrZV9wb2xpY3koU0VUICR7cG5ld30gTkVXKQotICAg
IGVuZGlmKCkKLWVuZGZvcmVhY2goKQotZm9yZWFjaChwb2xkICIiKSAjIEN1cnJlbnRseSBFbXB0
eQotICAgIGlmKFBPTElDWSAke3BvbGR9KQotICAgICAgICBjbWFrZV9wb2xpY3koU0VUICR7cG9s
ZH0gT0xEKQotICAgIGVuZGlmKCkKLWVuZGZvcmVhY2goKQotCi0jID09PT0gRGVmaW5lIGxhbmd1
YWdlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmluZyBhdCBsZWFzdCBjKysxMSBzdGFu
ZGFyZAotaWYoQ01BS0VfQ1hYX1NUQU5EQVJEIEVRVUFMICI5OCIgKQotICAgIG1lc3NhZ2UoRkFU
QUxfRVJST1IgIkNNQUtFX0NYWF9TVEFOREFSRDpTVFJJTkc9OTggaXMgbm90IHN1cHBvcnRlZC4i
KQotZW5kaWYoKQotCi0jIyMjIwotIyMgIFNldCB0aGUgZGVmYXVsdCB0YXJnZXQgcHJvcGVydGll
cwotaWYoTk9UIENNQUtFX0NYWF9TVEFOREFSRCkKLSAgICBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJE
IDExKSAjIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIGBgMTFgYCwgYGAxNGBgLCBhbmQgYGAxN2BgLgot
ZW5kaWYoKQotaWYoTk9UIENNQUtFX0NYWF9TVEFOREFSRF9SRVFVSVJFRCkKLSAgICBzZXQoQ01B
S0VfQ1hYX1NUQU5EQVJEX1JFUVVJUkVEIE9OKQotZW5kaWYoKQotaWYoTk9UIENNQUtFX0NYWF9F
WFRFTlNJT05TKQotICAgIHNldChDTUFLRV9DWFhfRVhURU5TSU9OUyBPRkYpCi1lbmRpZigpCi0K
LSMgPT09PQotCi0jIEVuc3VyZXMgdGhhdCBDTUFLRV9CVUlMRF9UWVBFIGhhcyBhIGRlZmF1bHQg
dmFsdWUKLWlmKE5PVCBERUZJTkVEIENNQUtFX0JVSUxEX1RZUEUpCi0gICAgc2V0KENNQUtFX0JV
SUxEX1RZUEUgUmVsZWFzZSBDQUNIRSBTVFJJTkcKLSAgICAgICAgIkNob29zZSB0aGUgdHlwZSBv
ZiBidWlsZCwgb3B0aW9ucyBhcmU6IE5vbmUgRGVidWcgUmVsZWFzZSBSZWxXaXRoRGViSW5mbyBN
aW5TaXplUmVsIENvdmVyYWdlLiIpCi1lbmRpZigpCi0KLXByb2plY3QoSlNPTkNQUAotICAgICAg
ICBWRVJTSU9OIDEuOS4wICMgPG1ham9yPlsuPG1pbm9yPlsuPHBhdGNoPlsuPHR3ZWFrPl1dXQot
ICAgICAgICBMQU5HVUFHRVMgQ1hYKQotCi1tZXNzYWdlKFNUQVRVUyAiSnNvbkNwcCBWZXJzaW9u
OiAke0pTT05DUFBfVkVSU0lPTl9NQUpPUn0uJHtKU09OQ1BQX1ZFUlNJT05fTUlOT1J9LiR7SlNP
TkNQUF9WRVJTSU9OX1BBVENIfSIpCi1zZXQoIEpTT05DUFBfU09WRVJTSU9OIDIxICkKLQotb3B0
aW9uKEpTT05DUFBfV0lUSF9URVNUUyAiQ29tcGlsZSBhbmQgKGZvciBqc29uY3BwX2NoZWNrKSBy
dW4gSnNvbkNwcCB0ZXN0IGV4ZWN1dGFibGVzIiBPTikKLW9wdGlvbihKU09OQ1BQX1dJVEhfUE9T
VF9CVUlMRF9VTklUVEVTVCAiQXV0b21hdGljYWxseSBydW4gdW5pdC10ZXN0cyBhcyBhIHBvc3Qg
YnVpbGQgc3RlcCIgT04pCi1vcHRpb24oSlNPTkNQUF9XSVRIX1dBUk5JTkdfQVNfRVJST1IgIkZv
cmNlIGNvbXBpbGF0aW9uIHRvIGZhaWwgaWYgYSB3YXJuaW5nIG9jY3VycyIgT0ZGKQotb3B0aW9u
KEpTT05DUFBfV0lUSF9TVFJJQ1RfSVNPICJJc3N1ZSBhbGwgdGhlIHdhcm5pbmdzIGRlbWFuZGVk
IGJ5IHN0cmljdCBJU08gQyBhbmQgSVNPIEMrKyIgT04pCi1vcHRpb24oSlNPTkNQUF9XSVRIX1BL
R0NPTkZJR19TVVBQT1JUICJHZW5lcmF0ZSBhbmQgaW5zdGFsbCAucGMgZmlsZXMiIE9OKQotb3B0
aW9uKEpTT05DUFBfV0lUSF9DTUFLRV9QQUNLQUdFICJHZW5lcmF0ZSBhbmQgaW5zdGFsbCBjbWFr
ZSBwYWNrYWdlIGZpbGVzIiBPTikKLW9wdGlvbihCVUlMRF9TSEFSRURfTElCUyAiQnVpbGQganNv
bmNwcF9saWIgYXMgYSBzaGFyZWQgbGlicmFyeS4iIE9GRikKLQotIyBFbmFibGUgcnVudGltZSBz
ZWFyY2ggcGF0aCBzdXBwb3J0IGZvciBkeW5hbWljIGxpYnJhcmllcyBvbiBPU1gKLWlmKEFQUExF
KQotICAgIHNldChDTUFLRV9NQUNPU1hfUlBBVEggMSkKLWVuZGlmKCkKLQotIyBBZGhlcmUgdG8g
R05VIGZpbGVzeXN0ZW0gbGF5b3V0IGNvbnZlbnRpb25zCi1pbmNsdWRlKEdOVUluc3RhbGxEaXJz
KQotCi1zZXQoREVCVUdfTElCTkFNRV9TVUZGSVggIiIgQ0FDSEUgU1RSSU5HICJPcHRpb25hbCBz
dWZmaXggdG8gYXBwZW5kIHRvIHRoZSBsaWJyYXJ5IG5hbWUgZm9yIGEgZGVidWcgYnVpbGQiKQot
Ci1zZXQoSlNPTkNQUF9VU0VfU0VDVVJFX01FTU9SWSAiMCIgQ0FDSEUgU1RSSU5HICItRC4uLj0x
IHRvIHVzZSBtZW1vcnktd2lwaW5nIGFsbG9jYXRvciBmb3IgU1RMIiApCi0KLSMgRmlsZSB2ZXJz
aW9uLmggaXMgb25seSByZWdlbmVyYXRlZCBvbiBDTWFrZSBjb25maWd1cmUgc3RlcAotY29uZmln
dXJlX2ZpbGUoICIke1BST0pFQ1RfU09VUkNFX0RJUn0vc3JjL2xpYl9qc29uL3ZlcnNpb24uaC5p
biIKLSAgICAgICAgICAgICAgICAiJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1ZGUvanNvbi92
ZXJzaW9uLmgiCi0gICAgICAgICAgICAgICAgTkVXTElORV9TVFlMRSBVTklYICkKLWNvbmZpZ3Vy
ZV9maWxlKCAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3ZlcnNpb24uaW4iCi0gICAgICAgICAgICAg
ICAgIiR7UFJPSkVDVF9CSU5BUllfRElSfS92ZXJzaW9uIgotICAgICAgICAgICAgICAgIE5FV0xJ
TkVfU1RZTEUgVU5JWCApCi0KLW1hY3JvKFVzZUNvbXBpbGF0aW9uV2FybmluZ0FzRXJyb3IpCi0g
ICAgaWYoTVNWQykKLSAgICAgICAgIyBPbmx5IGVuYWJsZWQgaW4gZGVidWcgYmVjYXVzZSBzb21l
IG9sZCB2ZXJzaW9ucyBvZiBWUyBTVEwgZ2VuZXJhdGUKLSAgICAgICAgIyB3YXJuaW5ncyB3aGVu
IGNvbXBpbGVkIGluIHJlbGVhc2UgY29uZmlndXJhdGlvbi4KLSAgICAgICAgYWRkX2NvbXBpbGVf
b3B0aW9ucygkPCQ8Q09ORklHOkRlYnVnPjovV1g+KQotICAgIGVsc2VpZihDTUFLRV9DWFhfQ09N
UElMRVJfSUQgU1RSRVFVQUwgIkdOVSIpCi0gICAgICAgIGFkZF9jb21waWxlX29wdGlvbnMoLVdl
cnJvcikKLSAgICAgICAgaWYoSlNPTkNQUF9XSVRIX1NUUklDVF9JU08pCi0gICAgICAgICAgICBh
ZGRfY29tcGlsZV9vcHRpb25zKC1wZWRhbnRpYy1lcnJvcnMpCi0gICAgICAgIGVuZGlmKCkKLSAg
ICBlbmRpZigpCi1lbmRtYWNybygpCi0KLSMgSW5jbHVkZSBvdXIgY29uZmlndXJhdGlvbiBoZWFk
ZXIKLWluY2x1ZGVfZGlyZWN0b3JpZXMoICR7anNvbmNwcF9TT1VSQ0VfRElSfS9pbmNsdWRlICkK
LQotaWYoTVNWQykKLSAgICAjIE9ubHkgZW5hYmxlZCBpbiBkZWJ1ZyBiZWNhdXNlIHNvbWUgb2xk
IHZlcnNpb25zIG9mIFZTIFNUTCBnZW5lcmF0ZQotICAgICMgdW5yZWFjaGFibGUgY29kZSB3YXJu
aW5nIHdoZW4gY29tcGlsZWQgaW4gcmVsZWFzZSBjb25maWd1cmF0aW9uLgotICAgIGFkZF9jb21w
aWxlX29wdGlvbnMoJDwkPENPTkZJRzpEZWJ1Zz46L1c0PikKLWVuZGlmKCkKLQotaWYoQ01BS0Vf
Q1hYX0NPTVBJTEVSX0lEIE1BVENIRVMgIkNsYW5nIikKLSAgICAjIHVzaW5nIHJlZ3VsYXIgQ2xh
bmcgb3IgQXBwbGVDbGFuZwotICAgIGFkZF9jb21waWxlX29wdGlvbnMoLVdhbGwgLVdjb252ZXJz
aW9uIC1Xc2hhZG93IC1XZXJyb3I9Y29udmVyc2lvbiAtV2Vycm9yPXNpZ24tY29tcGFyZSkKLWVs
c2VpZihDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkdOVSIpCi0gICAgIyB1c2luZyBH
Q0MKLSAgICBhZGRfY29tcGlsZV9vcHRpb25zKC1XYWxsIC1XY29udmVyc2lvbiAtV3NoYWRvdyAt
V2V4dHJhKQotICAgICMgbm90IHlldCByZWFkeSBmb3IgLVdzaWduLWNvbnZlcnNpb24KLQotICAg
IGlmKEpTT05DUFBfV0lUSF9TVFJJQ1RfSVNPKQotICAgICAgICBhZGRfY29tcGlsZV9vcHRpb25z
KC1wZWRhbnRpYykKLSAgICBlbmRpZigpCi0gICAgaWYoSlNPTkNQUF9XSVRIX1dBUk5JTkdfQVNf
RVJST1IpCi0gICAgICAgIGFkZF9jb21waWxlX29wdGlvbnMoLVdlcnJvcj1jb252ZXJzaW9uKQot
ICAgIGVuZGlmKCkKLWVsc2VpZihDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIkludGVs
IikKLSAgICAjwqB1c2luZyBJbnRlbCBjb21waWxlcgotICAgIGFkZF9jb21waWxlX29wdGlvbnMo
LVdhbGwgLVdjb252ZXJzaW9uIC1Xc2hhZG93IC1XZXh0cmEgLVdlcnJvcj1jb252ZXJzaW9uKQot
Ci0gICAgaWYoSlNPTkNQUF9XSVRIX1NUUklDVF9JU08gQU5EIE5PVCBKU09OQ1BQX1dJVEhfV0FS
TklOR19BU19FUlJPUikKLSAgICAgICAgYWRkX2NvbXBpbGVfb3B0aW9ucygtcGVkYW50aWMpCi0g
ICAgZW5kaWYoKQotZW5kaWYoKQotCi1maW5kX3Byb2dyYW0oQ0NBQ0hFX0ZPVU5EIGNjYWNoZSkK
LWlmKENDQUNIRV9GT1VORCkKLSAgICBzZXRfcHJvcGVydHkoR0xPQkFMIFBST1BFUlRZIFJVTEVf
TEFVTkNIX0NPTVBJTEUgY2NhY2hlKQotICAgIHNldF9wcm9wZXJ0eShHTE9CQUwgUFJPUEVSVFkg
UlVMRV9MQVVOQ0hfTElOSyBjY2FjaGUpCi1lbmRpZihDQ0FDSEVfRk9VTkQpCi0KLWlmKEpTT05D
UFBfV0lUSF9XQVJOSU5HX0FTX0VSUk9SKQotICAgIFVzZUNvbXBpbGF0aW9uV2FybmluZ0FzRXJy
b3IoKQotZW5kaWYoKQotCi1pZihKU09OQ1BQX1dJVEhfUEtHQ09ORklHX1NVUFBPUlQpCi0gICAg
Y29uZmlndXJlX2ZpbGUoCi0gICAgICAgICJwa2ctY29uZmlnL2pzb25jcHAucGMuaW4iCi0gICAg
ICAgICJwa2ctY29uZmlnL2pzb25jcHAucGMiCi0gICAgICAgIEBPTkxZKQotICAgIGluc3RhbGwo
RklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wa2ctY29uZmlnL2pzb25jcHAucGMi
Ci0gICAgICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWci
KQotZW5kaWYoKQotCi1pZihKU09OQ1BQX1dJVEhfQ01BS0VfUEFDS0FHRSkKLSAgICAgICAgaW5j
bHVkZSAoQ01ha2VQYWNrYWdlQ29uZmlnSGVscGVycykKLSAgICAgICAgaW5zdGFsbChFWFBPUlQg
anNvbmNwcAotICAgICAgICAgICAgICAgIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJE
SVJ9L2NtYWtlL2pzb25jcHAKLSAgICAgICAgICAgICAgICBGSUxFICAgICAgICBqc29uY3BwQ29u
ZmlnLmNtYWtlKQotICAgICAgICB3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmlsZSAoIiR7
Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9qc29uY3BwQ29uZmlnVmVyc2lvbi5jbWFrZSIKLSAg
ICAgICAgICAgICAgICBWRVJTSU9OICR7UFJPSkVDVF9WRVJTSU9OfQotICAgICAgICAgICAgICAg
IENPTVBBVElCSUxJVFkgU2FtZU1ham9yVmVyc2lvbikKLSAgICAgICAgaW5zdGFsbChGSUxFUyAk
e0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vanNvbmNwcENvbmZpZ1ZlcnNpb24uY21ha2UKLSAg
ICAgICAgICAgICAgICBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9q
c29uY3BwKQotZW5kaWYoKQotCi1pZihKU09OQ1BQX1dJVEhfVEVTVFMpCi0gIGVuYWJsZV90ZXN0
aW5nKCkKLSAgaW5jbHVkZShDVGVzdCkKLWVuZGlmKCkKLQotIyBCdWlsZCB0aGUgZGlmZmVyZW50
IGFwcGxpY2F0aW9ucwotYWRkX3N1YmRpcmVjdG9yeSggc3JjICkKLQotI2luc3RhbGwgdGhlIGlu
Y2x1ZGVzCi1hZGRfc3ViZGlyZWN0b3J5KCBpbmNsdWRlICkKLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9D
T05UUklCVVRJTkcubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL0NPTlRSSUJVVElORy5tZApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjdlNGFiN2FmZGZhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9DT05UUklC
VVRJTkcubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotIyBDb250cmlidXRpbmcg
dG8gSnNvbkNwcAotCi0jIyBCdWlsZGluZwotCi1Cb3RoIENNYWtlIGFuZCBNZXNvbiB0b29scyBh
cmUgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGEgdmFyaWV0eSBvZiBidWlsZCBlbnZpcm9ubWVudHMg
Zm9yIHlvdSBwcmVmZXJyZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi1Vc2luZyBjbWFrZSBv
ciBtZXNvbiB5b3UgY2FuIGdlbmVyYXRlIGFuIFhDb2RlLCBWaXN1YWwgU3R1ZGlvLCBVbml4IE1h
a2VmaWxlLCBOaW5qYSwgb3Igb3RoZXIgZW52aXJvbm1lbnQgdGhhdCBmaXRzIHlvdXIgbmVlZHMu
Ci0KLUFuIGV4YW1wbGUgb2YgYSBjb21tb24gTWVzb24vTmluamEgZW52aXJvbm1lbnQgaXMgZGVz
Y3JpYmVkIG5leHQuCi0KLSMjIEJ1aWxkaW5nIGFuZCB0ZXN0aW5nIHdpdGggTWVzb24vTmluamEK
LVRoYW5rcyB0byBEYXZpZCBTZWlmZXJ0IChAU29hcEdlbnRvbyksIHdlICh0aGUgbWFpbnRhaW5l
cnMpIG5vdyB1c2UKLVttZXNvbl0oaHR0cDovL21lc29uYnVpbGQuY29tLykgYW5kIFtuaW5qYV0o
aHR0cHM6Ly9uaW5qYS1idWlsZC5vcmcvKSB0byBidWlsZAotZm9yIGRlYnVnZ2luZywgYXMgd2Vs
bCBhcyBmb3IgY29udGludW91cyBpbnRlZ3JhdGlvbiAoc2VlCi1bYC4vdHJhdmlzX3NjcmlwdHMv
bWVzb25fYnVpbGRlci5zaGBdKC4vdHJhdmlzX3NjcmlwdHMvbWVzb25fYnVpbGRlci5zaCkgKS4g
T3RoZXIgc3lzdGVtcyBtYXkgd29yaywgYnV0IG1pbm9yCi10aGluZ3MgbGlrZSB2ZXJzaW9uIHN0
cmluZ3MgbWlnaHQgYnJlYWsuCi0KLUZpcnN0LCBpbnN0YWxsIGJvdGggbWVzb24gKHdoaWNoIHJl
cXVpcmVzIFB5dGhvbjMpIGFuZCBuaW5qYS4KLUlmIHlvdSB3aXNoIHRvIGluc3RhbGwgdG8gYSBk
aXJlY3Rvcnkgb3RoZXIgdGhhbiAvdXNyL2xvY2FsLCBzZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFi
bGUgY2FsbGVkIERFU1RESVIgd2l0aCB0aGUgZGVzaXJlZCBwYXRoOgotICAgIERFU1RESVI9L3Bh
dGgvdG8vaW5zdGFsbC9kaXIKLQotVGhlbiwKLQotICAgIGNkIGpzb25jcHAvCi0gICAgQlVJTERf
VFlQRT1kZWJ1ZwotICAgICNCVUlMRF9UWVBFPXJlbGVhc2UKLSAgICBMSUJfVFlQRT1zaGFyZWQK
LSAgICAjTElCX1RZUEU9c3RhdGljCi0gICAgbWVzb24gLS1idWlsZHR5cGUgJHtCVUlMRF9UWVBF
fSAtLWRlZmF1bHQtbGlicmFyeSAke0xJQl9UWVBFfSAuIGJ1aWxkLSR7TElCX1RZUEV9Ci0gICAg
I25pbmphIC12IC1DIGJ1aWxkLSR7TElCX1RZUEV9IHRlc3QgIyBUaGlzIHN0b3BwZWQgd29ya2lu
ZyBvbiBteSBNYWMuCi0gICAgbmluamEgLXYgLUMgYnVpbGQtJHtMSUJfVFlQRX0KLSAgICBjZCBi
dWlsZC0ke0xJQl9UWVBFfQotICAgIG1lc29uIHRlc3QgLS1uby1yZWJ1aWxkIC0tcHJpbnQtZXJy
b3Jsb2dzCi0gICAgc3VkbyBuaW5qYSBpbnN0YWxsCi0KLSMjIEJ1aWxkaW5nIGFuZCB0ZXN0aW5n
IHdpdGggb3RoZXIgYnVpbGQgc3lzdGVtcwotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNv
dXJjZS1wYXJzZXJzL2pzb25jcHAvd2lraS9CdWlsZGluZwotCi0jIyBSdW5uaW5nIHRoZSB0ZXN0
cyBtYW51YWxseQotCi1Zb3UgbmVlZCB0byBydW4gdGVzdHMgbWFudWFsbHkgb25seSBpZiB5b3Ug
YXJlIHRyb3VibGVzaG9vdGluZyBhbiBpc3N1ZS4KLQotSW4gdGhlIGluc3RydWN0aW9ucyBiZWxv
dywgcmVwbGFjZSBgcGF0aC90by9qc29udGVzdGAgd2l0aCB0aGUgcGF0aCBvZiB0aGUKLWBqc29u
dGVzdGAgZXhlY3V0YWJsZSB0aGF0IHdhcyBjb21waWxlZCBvbiB5b3VyIHBsYXRmb3JtLgotCi0g
ICAgY2QgdGVzdAotICAgICMgVGhpcyB3aWxsIHJ1biB0aGUgUmVhZGVyL1dyaXRlciB0ZXN0cwot
ICAgIHB5dGhvbiBydW5qc29udGVzdHMucHkgcGF0aC90by9qc29udGVzdAotCi0gICAgIyBUaGlz
IHdpbGwgcnVuIHRoZSBSZWFkZXIvV3JpdGVyIHRlc3RzLCB1c2luZyBKU09OQ2hlY2tlciB0ZXN0
IHN1aXRlCi0gICAgIyAoaHR0cDovL3d3dy5qc29uLm9yZy9KU09OX2NoZWNrZXIvKS4KLSAgICAj
IE5vdGVzOiBub3QgYWxsIHRlc3RzIHBhc3M6IEpzb25DcHAgaXMgdG9vIGxlbmllbnQgKGZvciBl
eGFtcGxlLAotICAgICMgaXQgYWxsb3dzIGFuIGludGVnZXIgdG8gc3RhcnQgd2l0aCAnMCcpLiBU
aGUgZ29hbCBpcyB0byBpbXByb3ZlCi0gICAgIyBzdHJpY3QgbW9kZSBwYXJzaW5nIHRvIGdldCBh
bGwgdGVzdHMgdG8gcGFzcy4KLSAgICBweXRob24gcnVuanNvbnRlc3RzLnB5IC0td2l0aC1qc29u
LWNoZWNrZXIgcGF0aC90by9qc29udGVzdAotCi0gICAgIyBUaGlzIHdpbGwgcnVuIHRoZSB1bml0
IHRlc3RzIChtb3N0bHkgVmFsdWUpCi0gICAgcHl0aG9uIHJ1bnVuaXR0ZXN0cy5weSBwYXRoL3Rv
L3Rlc3RfbGliX2pzb24KLQotICAgICMgWW91IGNhbiBydW4gdGhlIHRlc3RzIHVzaW5nIHZhbGdy
aW5kOgotICAgIHB5dGhvbiBydW51bml0dGVzdHMucHkgLS12YWxncmluZCBwYXRoL3RvL3Rlc3Rf
bGliX2pzb24KLQotIyMgQnVpbGRpbmcgdGhlIGRvY3VtZW50YXRpb24KLQotUnVuIHRoZSBQeXRo
b24gc2NyaXB0IGBkb3h5YnVpbGQucHlgIGZyb20gdGhlIHRvcCBkaXJlY3Rvcnk6Ci0KLSAgICBw
eXRob24gZG94eWJ1aWxkLnB5IC0tZG94eWdlbj0kKHdoaWNoIGRveHlnZW4pIC0tb3BlbiAtLXdp
dGgtZG90Ci0KLVNlZSBgZG94eWJ1aWxkLnB5IC0taGVscGAgZm9yIG9wdGlvbnMuCi0KLSMjIEFk
ZGluZyBhIHJlYWRlci93cml0ZXIgdGVzdAotCi1UbyBhZGQgYSB0ZXN0LCB5b3UgbmVlZCB0byBj
cmVhdGUgdHdvIGZpbGVzIGluIHRlc3QvZGF0YToKLQotKiBhIGBURVNUTkFNRS5qc29uYCBmaWxl
LCB0aGF0IGNvbnRhaW5zIHRoZSBpbnB1dCBkb2N1bWVudCBpbiBKU09OIGZvcm1hdC4KLSogYSBg
VEVTVE5BTUUuZXhwZWN0ZWRgIGZpbGUsIHRoYXQgY29udGFpbnMgYSBmbGF0ZW5lZCByZXByZXNl
bnRhdGlvbiBvZiB0aGUKLSAgaW5wdXQgZG9jdW1lbnQuCi0KLVRoZSBgVEVTVE5BTUUuZXhwZWN0
ZWRgIGZpbGUgZm9ybWF0IGlzIGFzIGZvbGxvd3M6Ci0KLSogRWFjaCBsaW5lIHJlcHJlc2VudHMg
YSBKU09OIGVsZW1lbnQgb2YgdGhlIGVsZW1lbnQgdHJlZSByZXByZXNlbnRlZCBieSB0aGUKLSAg
aW5wdXQgZG9jdW1lbnQuCi0qIEVhY2ggbGluZSBoYXMgdHdvIHBhcnRzOiB0aGUgcGF0aCB0byBh
Y2Nlc3MgdGhlIGVsZW1lbnQgc2VwYXJhdGVkIGZyb20gdGhlCi0gIGVsZW1lbnQgdmFsdWUgYnkg
YD1gLiBBcnJheSBhbmQgb2JqZWN0IHZhbHVlcyBhcmUgYWx3YXlzIGVtcHR5IChpLmUuCi0gIHJl
cHJlc2VudGVkIGJ5IGVpdGhlciBgW11gIG9yIGB7fWApLgotKiBFbGVtZW50IHBhdGggYC5gIHJl
cHJlc2VudHMgdGhlIHJvb3QgZWxlbWVudCwgYW5kIGlzIHVzZWQgdG8gc2VwYXJhdGUgb2JqZWN0
Ci0gIG1lbWJlcnMuIGBbTl1gIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgdmFsdWUgb2YgYW4gYXJy
YXkgZWxlbWVudCBhdCBpbmRleCBgTmAuCi0KLVNlZSB0aGUgZXhhbXBsZXMgYHRlc3RfY29tcGxl
eF8wMS5qc29uYCBhbmQgYHRlc3RfY29tcGxleF8wMS5leHBlY3RlZGAgdG8gYmV0dGVyIHVuZGVy
c3RhbmQgZWxlbWVudCBwYXRocy4KLQotIyMgVW5kZXJzdGFuZGluZyByZWFkZXIvd3JpdGVyIHRl
c3Qgb3V0cHV0Ci0KLVdoZW4gYSB0ZXN0IGlzIHJ1biwgb3V0cHV0IGZpbGVzIGFyZSBnZW5lcmF0
ZWQgYmVzaWRlIHRoZSBpbnB1dCB0ZXN0IGZpbGVzLiBCZWxvdyBpcyBhIHNob3J0IGRlc2NyaXB0
aW9uIG9mIHRoZSBjb250ZW50IG9mIGVhY2ggZmlsZToKLQotKiBgdGVzdF9jb21wbGV4XzAxLmpz
b25gOiBpbnB1dCBKU09OIGRvY3VtZW50LgotKiBgdGVzdF9jb21wbGV4XzAxLmV4cGVjdGVkYDog
ZmxhdHRlbmVkIEpTT04gZWxlbWVudCB0cmVlIHVzZWQgdG8gY2hlY2sgaWYKLSAgcGFyc2luZyB3
YXMgY29ycmVjdGVkLgotKiBgdGVzdF9jb21wbGV4XzAxLmFjdHVhbGA6IGZsYXR0ZW5lZCBKU09O
IGVsZW1lbnQgdHJlZSBwcm9kdWNlZCBieSBganNvbnRlc3RgCi0gIGZyb20gcmVhZGluZyBgdGVz
dF9jb21wbGV4XzAxLmpzb25gLgotKiBgdGVzdF9jb21wbGV4XzAxLnJld3JpdGVgOiBKU09OIGRv
Y3VtZW50IHdyaXR0ZW4gYnkgYGpzb250ZXN0YCB1c2luZyB0aGUKLSAgYEpzb246OlZhbHVlYCBw
YXJzZWQgZnJvbSBgdGVzdF9jb21wbGV4XzAxLmpzb25gIGFuZCBzZXJpYWxpemVkIHVzaW5nCi0g
IGBKc29uOjpTdHlsZWRXcml0dGVyYC4KLSogYHRlc3RfY29tcGxleF8wMS5hY3R1YWwtcmV3cml0
ZWA6IGZsYXR0ZW5lZCBKU09OIGVsZW1lbnQgdHJlZSBwcm9kdWNlZCBieQotICBganNvbnRlc3Rg
IGZyb20gcmVhZGluZyBgdGVzdF9jb21wbGV4XzAxLnJld3JpdGVgLgotKiBgdGVzdF9jb21wbGV4
XzAxLnByb2Nlc3Mtb3V0cHV0YDogYGpzb250ZXN0YCBvdXRwdXQsIHR5cGljYWxseSB1c2VmdWwg
Zm9yCi0gIHVuZGVyc3RhbmRpbmcgcGFyc2luZyBlcnJvcnMuCi0KLSMjIFZlcnNpb25pbmcgcnVs
ZXMKLQotQ29uc3VtZXJzIG9mIHRoaXMgbGlicmFyeSByZXF1aXJlIGEgc3RyaWN0IGFwcHJvYWNo
IHRvIGluY3JlbWVudGluZyB2ZXJzaW9uaW5nIG9mIHRoZSBKc29uQ3BwIGxpYnJhcnkuIEN1cnJl
bnRseSwgd2UgZm9sbG93IHRoZSBiZWxvdyBzZXQgb2YgcnVsZXM6Ci0KLSogQW55IG5ldyBwdWJs
aWMgc3ltYm9scyByZXF1aXJlIGEgbWlub3IgdmVyc2lvbiBidW1wLgotKiBBbnkgYWx0ZXJhdGlv
biBvciByZW1vdmFsIG9mIHB1YmxpYyBzeW1ib2xzIHJlcXVpcmVzIGEgbWFqb3IgdmVyc2lvbiBi
dW1wLCBpbmNsdWRpbmcgY2hhbmdpbmcgdGhlIHNpemUgb2YgYSBjbGFzcy4gVGhpcyBpcyBuZWNl
c3NhcnkgZm9yCi1jb25zdW1lcnMgdG8gZG8gZGVwZW5kZW5jeSBpbmplY3Rpb24gcHJvcGVybHku
Ci0KLSMjIFByZXBhcmluZyBjb2RlIGZvciBzdWJtaXNzaW9uCi0KLUdlbmVyYWxseSwgSnNvbkNw
cCdzIHN0eWxlIGd1aWRlIGhhcyBiZWVuIHByZXR0eSByZWxheGVkLCB3aXRoIHRoZSBmb2xsb3dp
bmcgY29tbW9uIHRoZW1lczoKLQotKiBWYXJpYWJsZXMgYW5kIGZ1bmN0aW9uIG5hbWVzIHVzZSBs
b3dlciBjYW1lbCBjYXNlIChFLmcuIHBhcnNlVmFsdWUgb3IgY29sbGVjdENvbW1lbnRzKS4KLSog
Q2xhc3MgdXNlIGNhbWVsIGNhc2UgKGUuZy4gT3VyUmVhZGVyKQotKiBNZW1iZXIgdmFyaWFibGVz
IGhhdmUgYSB0cmFpbGluZyB1bmRlcnNjb3JlCi0qIFByZWZlciBgbnVsbHB0cmAgb3ZlciBgTlVM
TGAuCi0qIFBhc3NpbmcgYnkgbm9uLWNvbnN0IHJlZmVyZW5jZSBpcyBhbGxvd2VkLgotKiBTaW5n
bGUgc3RhdGVtZW50IGlmIGJsb2NrcyBtYXkgb21pdCBicmFja2V0cy4KLSogR2VuZXJhbGx5IHBy
ZWZlciBsZXNzIHNwYWNlIG92ZXIgbW9yZSBzcGFjZS4KLQotRm9yIGFuIGV4YW1wbGU6Ci0KLWBg
YGMrKwotYm9vbCBSZWFkZXI6OmRlY29kZU51bWJlcihUb2tlbiYgdG9rZW4pIHsKLSAgVmFsdWUg
ZGVjb2RlZDsKLSAgaWYgKCFkZWNvZGVOdW1iZXIodG9rZW4sIGRlY29kZWQpKQotICAgIHJldHVy
biBmYWxzZTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJl
bnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJl
bnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4g
dHJ1ZTsKLX0KLWBgYAotCi1CZWZvcmUgc3VibWl0dGluZyB5b3VyIGNvZGUsIGVuc3VyZSB0aGF0
IHlvdSBtZWV0IHRoZSB2ZXJzaW9uaW5nIHJlcXVpcmVtZW50cyBhYm92ZSwgZm9sbG93IHRoZSBz
dHlsZSBndWlkZSBvZiB0aGUgZmlsZSB5b3UgYXJlIG1vZGlmeWluZyAob3IgdGhlIGFib3ZlIHJ1
bGVzIGZvciBuZXcgZmlsZXMpLCBhbmQgcnVuIGNsYW5nIGZvcm1hdC4gTWVzb24gZXhwb3NlcyBj
bGFuZyBmb3JtYXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6Ci0KLWBgYAotbmluamEgLXYg
LUMgYnVpbGQtJHtMSUJfVFlQRX0vIGNsYW5nLWZvcm1hdAotYGBgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5
MjgwYTZjNDhhOS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvTElDRU5TRQorKysgL2Rldi9udWxs
CkBAIC0xLDU1ICswLDAgQEAKLVRoZSBKc29uQ3BwIGxpYnJhcnkncyBzb3VyY2UgY29kZSwgaW5j
bHVkaW5nIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uLCAKLXRlc3RzIGFuZCBkZW1vbnN0cmF0
aW9uIGFwcGxpY2F0aW9ucywgYXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBmb2xsb3dpbmcKLWNvbmRp
dGlvbnMuLi4KLQotQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzIGV4
cGxpY2l0bHkgZGlzY2xhaW0gY29weXJpZ2h0IGluIGFsbCAKLWp1cmlzZGljdGlvbnMgd2hpY2gg
cmVjb2duaXplIHN1Y2ggYSBkaXNjbGFpbWVyLiBJbiBzdWNoIGp1cmlzZGljdGlvbnMsIAotdGhp
cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCBpbnRvIHRoZSBQdWJsaWMgRG9tYWluLgotCi1JbiBqdXJp
c2RpY3Rpb25zIHdoaWNoIGRvIG5vdCByZWNvZ25pemUgUHVibGljIERvbWFpbiBwcm9wZXJ0eSAo
ZS5nLiBHZXJtYW55IGFzIG9mCi0yMDEwKSwgdGhpcyBzb2Z0d2FyZSBpcyBDb3B5cmlnaHQgKGMp
IDIwMDctMjAxMCBieSBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kCi1UaGUgSnNvbkNwcCBBdXRob3Jz
LCBhbmQgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgTGljZW5zZSAoc2Vl
IGJlbG93KS4KLQotSW4ganVyaXNkaWN0aW9ucyB3aGljaCByZWNvZ25pemUgUHVibGljIERvbWFp
biBwcm9wZXJ0eSwgdGhlIHVzZXIgb2YgdGhpcyAKLXNvZnR3YXJlIG1heSBjaG9vc2UgdG8gYWNj
ZXB0IGl0IGVpdGhlciBhcyAxKSBQdWJsaWMgRG9tYWluLCAyKSB1bmRlciB0aGUgCi1jb25kaXRp
b25zIG9mIHRoZSBNSVQgTGljZW5zZSAoc2VlIGJlbG93KSwgb3IgMykgdW5kZXIgdGhlIHRlcm1z
IG9mIGR1YWwgCi1QdWJsaWMgRG9tYWluL01JVCBMaWNlbnNlIGNvbmRpdGlvbnMgZGVzY3JpYmVk
IGhlcmUsIGFzIHRoZXkgY2hvb3NlLgotCi1UaGUgTUlUIExpY2Vuc2UgaXMgYWJvdXQgYXMgY2xv
c2UgdG8gUHVibGljIERvbWFpbiBhcyBhIGxpY2Vuc2UgY2FuIGdldCwgYW5kIGlzCi1kZXNjcmli
ZWQgaW4gY2xlYXIsIGNvbmNpc2UgdGVybXMgYXQ6Ci0KLSAgIGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvTUlUX0xpY2Vuc2UKLSAgIAotVGhlIGZ1bGwgdGV4dCBvZiB0aGUgTUlUIExpY2Vu
c2UgZm9sbG93czoKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1Db3B5cmlnaHQgKGMpIDIwMDctMjAxMCBC
YXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLQotUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KLW9idGFpbmlu
ZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCi1m
aWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0Ci1y
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVz
ZSwgY29weSwKLW1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vciBzZWxsIGNvcGllcwotb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv
bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCi1pbmNsdWRlZCBpbiBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi1F
WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YKLU1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5ECi1OT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTCi1CRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLUFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCi1DT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi1TT0ZUV0FS
RS4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotKEVORCBMSUNFTlNFIFRFWFQpCi0KLVRoZSBNSVQgbGljZW5z
ZSBpcyBjb21wYXRpYmxlIHdpdGggYm90aCB0aGUgR1BMIGFuZCBjb21tZXJjaWFsCi1zb2Z0d2Fy
ZSwgYWZmb3JkaW5nIG9uZSBhbGwgb2YgdGhlIHJpZ2h0cyBvZiBQdWJsaWMgRG9tYWluIHdpdGgg
dGhlCi1taW5vciBudWlzYW5jZSBvZiBiZWluZyByZXF1aXJlZCB0byBrZWVwIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlCi1hbmQgbGljZW5zZSB0ZXh0IGluIHRoZSBzb3VyY2UgY29kZS4gTm90
ZSBhbHNvIHRoYXQgYnkgYWNjZXB0aW5nIHRoZQotUHVibGljIERvbWFpbiAibGljZW5zZSIgeW91
IGNhbiByZS1saWNlbnNlIHlvdXIgY29weSB1c2luZyB3aGF0ZXZlcgotbGljZW5zZSB5b3UgbGlr
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9SRUFETUUubWQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjODU4NzA2MGRiMi4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvUkVBRE1FLm1kCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotIyBKc29uQ3BwCi0K
LVshW2JhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2NvbmFuLmlvLWpzb25jcHAl
MkYxLjguMC1ncmVlbi5zdmc/bG9nbz1kYXRhOmltYWdlL3BuZztiYXNlNjQlMkNpVkJPUncwS0dn
b0FBQUFOU1VoRVVnQUFBQTRBQUFBT0NBTUFBQUFvbHQzakFBQUExVkJNVkVVQUFBQmhsY3RqbHN0
a2w4dGxtTXRsbU14bG1jeG1tY3hubXN4cG5NeHBuTTFxbmMxc244NXZvTTkxb00xMW9jMXhvdEIy
b2M1NnBORjZwTkoycHRKOHB0SjhwdE45cHROOHA5TjVxTko5cDlOOXA5UjhxdE9CcWRTQXF0T0Fx
dFIlMkJyTlNDck5KL3JkV0RyTldDc05XQ3NOYUpzOWVMczlpUnZOdVZ2ZHlWdjl5WHdkMlp3dDZh
eE42ZHh0JTJCZnglMkJDaHllR2l5dUdqeXVDanl1R2x5JTJCR2x6T0ttek9Hb3p1S296JTJCS3F6
JTJCT3EwT092MU9XdzFPV3cxZVd4MWVXeTF1YXkxJTJCYXoxJTJCYXoxJTJCZXoyT2UwMk9lMTJl
ZTIydWpVR3dIM0FBQUFBWFJTVGxNQVFPYllaZ0FBQUFGaVMwZEVBSWdGSFVnQUFBQUpjRWhaY3dB
QUN4TUFBQXNUQVFDYW5CZ0FBQUFIZEVsTlJRZmdCUWtSRXlPeEZJaC9BQUFBaWtsRVFWUUkxMk5n
QUFNYk93WTRzTFoyTnRRMWNvVktXTnZvYy9FcThYRHIyd0I1SWc2MmVremE5dmFPcXBLMlRwb016
T3hhRnR3cVp1YTJCbTRtYWtJTTdPek1Bam9hQ3FZdXhvb1NVcUpBTGpzN280eVZwYm93dnpTVXk4
N0txU3dteFFmbnNyUElTeUZ6V2VXQVhDa3BNYUJWSUM0Ym1Dc09kZ2lVS3doM0pvakxnQVE0WkNF
MEFNbTJEMjl0WndlNkFBQUFBRWxGVGtTdVFtQ0MpXShodHRwczovL2JpbnRyYXkuY29tL3RoZWly
aXgvY29uYW4tcmVwby9qc29uY3BwJTNBdGhlaXJpeCkKLQotW0pTT05dW2pzb24tb3JnXSBpcyBh
IGxpZ2h0d2VpZ2h0IGRhdGEtaW50ZXJjaGFuZ2UgZm9ybWF0LiBJdCBjYW4gcmVwcmVzZW50Ci1u
dW1iZXJzLCBzdHJpbmdzLCBvcmRlcmVkIHNlcXVlbmNlcyBvZiB2YWx1ZXMsIGFuZCBjb2xsZWN0
aW9ucyBvZiBuYW1lL3ZhbHVlCi1wYWlycy4KLQotW2pzb24tb3JnXTogaHR0cDovL2pzb24ub3Jn
LwotCi1Kc29uQ3BwIGlzIGEgQysrIGxpYnJhcnkgdGhhdCBhbGxvd3MgbWFuaXB1bGF0aW5nIEpT
T04gdmFsdWVzLCBpbmNsdWRpbmcKLXNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbiB0
byBhbmQgZnJvbSBzdHJpbmdzLiBJdCBjYW4gYWxzbyBwcmVzZXJ2ZQotZXhpc3RpbmcgY29tbWVu
dCBpbiB1bnNlcmlhbGl6YXRpb24vc2VyaWFsaXphdGlvbiBzdGVwcywgbWFraW5nIGl0IGEgY29u
dmVuaWVudAotZm9ybWF0IHRvIHN0b3JlIHVzZXIgaW5wdXQgZmlsZXMuCi0KLQotIyMgRG9jdW1l
bnRhdGlvbgotCi1bSnNvbkNwcCBkb2N1bWVudGF0aW9uXVtKc29uQ3BwLWRvY3VtZW50YXRpb25d
IGlzIGdlbmVyYXRlZCB1c2luZyBbRG94eWdlbl1bXS4KLQotW0pzb25DcHAtZG9jdW1lbnRhdGlv
bl06IGh0dHA6Ly9vcGVuLXNvdXJjZS1wYXJzZXJzLmdpdGh1Yi5pby9qc29uY3BwLWRvY3MvZG94
eWdlbi9pbmRleC5odG1sCi1bRG94eWdlbl06IGh0dHA6Ly93d3cuZG94eWdlbi5vcmcKLQotCi0j
IyBBIG5vdGUgb24gYmFja3dhcmQtY29tcGF0aWJpbGl0eQotCi0qIGAxLnkuemAgaXMgYnVpbHQg
d2l0aCBDKysxMS4KLSogYDAueS56YCBjYW4gYmUgdXNlZCB3aXRoIG9sZGVyIGNvbXBpbGVycy4K
LSogTWFqb3IgdmVyc2lvbnMgbWFpbnRhaW4gYmluYXJ5LWNvbXBhdGliaWxpdHkuCi0KLQotIyMg
VXNpbmcgSnNvbkNwcCBpbiB5b3VyIHByb2plY3QKLQotIyMjIEFtYWxnYW1hdGVkIHNvdXJjZQot
aHR0cHM6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcC93aWtpL0FtYWxn
YW1hdGVkCi0KLSMjIyBUaGUgTWVzb24gQnVpbGQgU3lzdGVtCi1JZiB5b3UgYXJlIHVzaW5nIHRo
ZSBbTWVzb24gQnVpbGQgU3lzdGVtXShodHRwOi8vbWVzb25idWlsZC5jb20pLCB0aGVuIHlvdSBj
YW4gZ2V0IGEgd3JhcCBmaWxlIGJ5IGRvd25sb2FkaW5nIGl0IGZyb20gW01lc29uIFdyYXBEQl0o
aHR0cHM6Ly93cmFwZGIubWVzb25idWlsZC5jb20vanNvbmNwcCksIG9yIHNpbXBseSB1c2UgYG1l
c29uIHdyYXAgaW5zdGFsbCBqc29uY3BwYC4KLQotIyMjIE90aGVyIHdheXMKLUlmIHlvdSBoYXZl
IHRyb3VibGUsIHNlZSB0aGUgV2lraSwgb3IgcG9zdCBhIHF1ZXN0aW9uIGFzIGFuIElzc3VlLgot
Ci0jIyBMaWNlbnNlCi0KLVNlZSB0aGUgYExJQ0VOU0VgIGZpbGUgZm9yIGRldGFpbHMuIEluIHN1
bW1hcnksIEpzb25DcHAgaXMgbGljZW5zZWQgdW5kZXIgdGhlCi1NSVQgbGljZW5zZSwgb3IgcHVi
bGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZCByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS9hbWFsZ2FtYXRlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hbWFsZ2FtYXRlLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTIyMTVhOGIyYjYuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2FtYWxnYW1hdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAot
IiIiQW1hbGdhbWF0ZSBqc29uLWNwcCBsaWJyYXJ5IHNvdXJjZXMgaW50byBhIHNpbmdsZSBzb3Vy
Y2UgYW5kIGhlYWRlciBmaWxlLgotCi1Xb3JrcyB3aXRoIHB5dGhvbjIuNisgYW5kIHB5dGhvbjMu
NCsuCi0KLUV4YW1wbGUgb2YgaW52b2NhdGlvbiAobXVzdCBiZSBpbnZva2VkIGZyb20ganNvbi1j
cHAgdG9wIGRpcmVjdG9yeSk6Ci1weXRob24gYW1hbGdhbWF0ZS5weQotIiIiCi1pbXBvcnQgb3MK
LWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi0KLWNsYXNzIEFtYWxnYW1hdGlvbkZpbGU6Ci0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvcF9kaXIpOgotICAgICAgICBzZWxmLnRvcF9kaXIgPSB0
b3BfZGlyCi0gICAgICAgIHNlbGYuYmxvY2tzID0gW10KLQotICAgIGRlZiBhZGRfdGV4dChzZWxm
LCB0ZXh0KToKLSAgICAgICAgaWYgbm90IHRleHQuZW5kc3dpdGgoIlxuIik6Ci0gICAgICAgICAg
ICB0ZXh0ICs9ICJcbiIKLSAgICAgICAgc2VsZi5ibG9ja3MuYXBwZW5kKHRleHQpCi0KLSAgICBk
ZWYgYWRkX2ZpbGUoc2VsZiwgcmVsYXRpdmVfaW5wdXRfcGF0aCwgd3JhcF9pbl9jb21tZW50PUZh
bHNlKToKLSAgICAgICAgZGVmIGFkZF9tYXJrZXIocHJlZml4KToKLSAgICAgICAgICAgIHNlbGYu
YWRkX3RleHQoIiIpCi0gICAgICAgICAgICBzZWxmLmFkZF90ZXh0KCIvLyAiICsgIi8iKjcwKQot
ICAgICAgICAgICAgc2VsZi5hZGRfdGV4dCgiLy8gJXMgb2YgY29udGVudCBvZiBmaWxlOiAlcyIg
JSAocHJlZml4LCByZWxhdGl2ZV9pbnB1dF9wYXRoLnJlcGxhY2UoIlxcIiwiLyIpKSkKLSAgICAg
ICAgICAgIHNlbGYuYWRkX3RleHQoIi8vICIgKyAiLyIqNzApCi0gICAgICAgICAgICBzZWxmLmFk
ZF90ZXh0KCIiKQotICAgICAgICBhZGRfbWFya2VyKCJCZWdpbm5pbmciKQotICAgICAgICBmID0g
b3Blbihvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGlyLCByZWxhdGl2ZV9pbnB1dF9wYXRoKSwgInJ0
IikKLSAgICAgICAgY29udGVudCA9IGYucmVhZCgpCi0gICAgICAgIGlmIHdyYXBfaW5fY29tbWVu
dDoKLSAgICAgICAgICAgIGNvbnRlbnQgPSAiLypcbiIgKyBjb250ZW50ICsgIlxuKi8iCi0gICAg
ICAgIHNlbGYuYWRkX3RleHQoY29udGVudCkKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGFk
ZF9tYXJrZXIoIkVuZCIpCi0gICAgICAgIHNlbGYuYWRkX3RleHQoIlxuXG5cblxuIikKLQotICAg
IGRlZiBnZXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAiIi5qb2luKHNlbGYuYmxvY2tz
KS5yZXBsYWNlKCJcclxuIiwiXG4iKQotCi0gICAgZGVmIHdyaXRlX3RvKHNlbGYsIG91dHB1dF9w
YXRoKToKLSAgICAgICAgb3V0cHV0X2RpciA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfcGF0aCkK
LSAgICAgICAgaWYgb3V0cHV0X2RpciBhbmQgbm90IG9zLnBhdGguaXNkaXIob3V0cHV0X2Rpcik6
Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhvdXRwdXRfZGlyKQotICAgICAgICBmID0gb3Blbihv
dXRwdXRfcGF0aCwgIndiIikKLSAgICAgICAgZi53cml0ZShzdHIuZW5jb2RlKHNlbGYuZ2V0X3Zh
bHVlKCksICdVVEYtOCcpKQotICAgICAgICBmLmNsb3NlKCkKLQotZGVmIGFtYWxnYW1hdGVfc291
cmNlKHNvdXJjZV90b3BfZGlyPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9z
b3VyY2VfcGF0aD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfaW5jbHVkZV9w
YXRoPU5vbmUpOgotICAgICIiIlByb2R1Y2VzIGFtYWxnYW1hdGVkIHNvdXJjZS4KLSAgICAgICBQ
YXJhbWV0ZXJzOgotICAgICAgICAgICBzb3VyY2VfdG9wX2RpcjogdG9wLWRpcmVjdG9yeQotICAg
ICAgICAgICB0YXJnZXRfc291cmNlX3BhdGg6IG91dHB1dCAuY3BwIHBhdGgKLSAgICAgICAgICAg
aGVhZGVyX2luY2x1ZGVfcGF0aDogZ2VuZXJhdGVkIGhlYWRlciBwYXRoIHJlbGF0aXZlIHRvIHRh
cmdldF9zb3VyY2VfcGF0aC4KLSAgICAiIiIKLSAgICBwcmludCgiQW1hbGdhbWF0aW5nIGhlYWRl
ci4uLiIpCi0gICAgaGVhZGVyID0gQW1hbGdhbWF0aW9uRmlsZShzb3VyY2VfdG9wX2RpcikKLSAg
ICBoZWFkZXIuYWRkX3RleHQoIi8vLyBKc29uLWNwcCBhbWFsZ2FtYXRlZCBoZWFkZXIgKGh0dHA6
Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC8pLiIpCi0gICAgaGVhZGVyLmFkZF90ZXh0KCcvLy8g
SXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoICNpbmNsdWRlICIlcyInICUgaGVhZGVyX2lu
Y2x1ZGVfcGF0aCkKLSAgICBoZWFkZXIuYWRkX2ZpbGUoIkxJQ0VOU0UiLCB3cmFwX2luX2NvbW1l
bnQ9VHJ1ZSkKLSAgICBoZWFkZXIuYWRkX3RleHQoIiNpZm5kZWYgSlNPTl9BTUFMR0FNQVRFRF9I
X0lOQ0xVREVEIikKLSAgICBoZWFkZXIuYWRkX3RleHQoIiMgZGVmaW5lIEpTT05fQU1BTEdBTUFU
RURfSF9JTkNMVURFRCIpCi0gICAgaGVhZGVyLmFkZF90ZXh0KCIvLy8gSWYgZGVmaW5lZCwgaW5k
aWNhdGVzIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGlzIGFtYWxnYW1hdGVkIikKLSAgICBoZWFkZXIu
YWRkX3RleHQoIi8vLyB0byBwcmV2ZW50IHByaXZhdGUgaGVhZGVyIGluY2x1c2lvbi4iKQotICAg
IGhlYWRlci5hZGRfdGV4dCgiI2RlZmluZSBKU09OX0lTX0FNQUxHQU1BVElPTiIpCi0gICAgaGVh
ZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pzb24vdmVyc2lvbi5oIikKLSAgICBoZWFkZXIuYWRkX2Zp
bGUoImluY2x1ZGUvanNvbi9hbGxvY2F0b3IuaCIpCi0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNs
dWRlL2pzb24vY29uZmlnLmgiKQotICAgIGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL2Zv
cndhcmRzLmgiKQotICAgIGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL2ZlYXR1cmVzLmgi
KQotICAgIGhlYWRlci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL3ZhbHVlLmgiKQotICAgIGhlYWRl
ci5hZGRfZmlsZSgiaW5jbHVkZS9qc29uL3JlYWRlci5oIikKLSAgICBoZWFkZXIuYWRkX2ZpbGUo
ImluY2x1ZGUvanNvbi93cml0ZXIuaCIpCi0gICAgaGVhZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pz
b24vYXNzZXJ0aW9ucy5oIikKLSAgICBoZWFkZXIuYWRkX3RleHQoIiNlbmRpZiAvL2lmbmRlZiBK
U09OX0FNQUxHQU1BVEVEX0hfSU5DTFVERUQiKQotCi0gICAgdGFyZ2V0X2hlYWRlcl9wYXRoID0g
b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSh0YXJnZXRfc291cmNlX3BhdGgpLCBoZWFkZXJf
aW5jbHVkZV9wYXRoKQotICAgIHByaW50KCJXcml0aW5nIGFtYWxnYW1hdGVkIGhlYWRlciB0byAl
ciIgJSB0YXJnZXRfaGVhZGVyX3BhdGgpCi0gICAgaGVhZGVyLndyaXRlX3RvKHRhcmdldF9oZWFk
ZXJfcGF0aCkKLQotICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX2luY2x1
ZGVfcGF0aCkKLSAgICBmb3J3YXJkX2hlYWRlcl9pbmNsdWRlX3BhdGggPSBiYXNlICsgIi1mb3J3
YXJkcyIgKyBleHQKLSAgICBwcmludCgiQW1hbGdhbWF0aW5nIGZvcndhcmQgaGVhZGVyLi4uIikK
LSAgICBoZWFkZXIgPSBBbWFsZ2FtYXRpb25GaWxlKHNvdXJjZV90b3BfZGlyKQotICAgIGhlYWRl
ci5hZGRfdGV4dCgiLy8vIEpzb24tY3BwIGFtYWxnYW1hdGVkIGZvcndhcmQgaGVhZGVyIChodHRw
Oi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvKS4iKQotICAgIGhlYWRlci5hZGRfdGV4dCgnLy8v
IEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCAjaW5jbHVkZSAiJXMiJyAlIGZvcndhcmRf
aGVhZGVyX2luY2x1ZGVfcGF0aCkKLSAgICBoZWFkZXIuYWRkX3RleHQoIi8vLyBUaGlzIGhlYWRl
ciBwcm92aWRlcyBmb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBhbGwgSnNvbkNwcCB0eXBlcy4iKQot
ICAgIGhlYWRlci5hZGRfZmlsZSgiTElDRU5TRSIsIHdyYXBfaW5fY29tbWVudD1UcnVlKQotICAg
IGhlYWRlci5hZGRfdGV4dCgiI2lmbmRlZiBKU09OX0ZPUldBUkRfQU1BTEdBTUFURURfSF9JTkNM
VURFRCIpCi0gICAgaGVhZGVyLmFkZF90ZXh0KCIjIGRlZmluZSBKU09OX0ZPUldBUkRfQU1BTEdB
TUFURURfSF9JTkNMVURFRCIpCi0gICAgaGVhZGVyLmFkZF90ZXh0KCIvLy8gSWYgZGVmaW5lZCwg
aW5kaWNhdGVzIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGlzIGFtYWxnYW1hdGVkIikKLSAgICBoZWFk
ZXIuYWRkX3RleHQoIi8vLyB0byBwcmV2ZW50IHByaXZhdGUgaGVhZGVyIGluY2x1c2lvbi4iKQot
ICAgIGhlYWRlci5hZGRfdGV4dCgiI2RlZmluZSBKU09OX0lTX0FNQUxHQU1BVElPTiIpCi0gICAg
aGVhZGVyLmFkZF9maWxlKCJpbmNsdWRlL2pzb24vY29uZmlnLmgiKQotICAgIGhlYWRlci5hZGRf
ZmlsZSgiaW5jbHVkZS9qc29uL2ZvcndhcmRzLmgiKQotICAgIGhlYWRlci5hZGRfdGV4dCgiI2Vu
ZGlmIC8vaWZuZGVmIEpTT05fRk9SV0FSRF9BTUFMR0FNQVRFRF9IX0lOQ0xVREVEIikKLQotICAg
IHRhcmdldF9mb3J3YXJkX2hlYWRlcl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFt
ZSh0YXJnZXRfc291cmNlX3BhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3J3YXJkX2hlYWRlcl9pbmNsdWRlX3BhdGgpCi0gICAgcHJpbnQoIldy
aXRpbmcgYW1hbGdhbWF0ZWQgZm9yd2FyZCBoZWFkZXIgdG8gJXIiICUgdGFyZ2V0X2ZvcndhcmRf
aGVhZGVyX3BhdGgpCi0gICAgaGVhZGVyLndyaXRlX3RvKHRhcmdldF9mb3J3YXJkX2hlYWRlcl9w
YXRoKQotCi0gICAgcHJpbnQoIkFtYWxnYW1hdGluZyBzb3VyY2UuLi4iKQotICAgIHNvdXJjZSA9
IEFtYWxnYW1hdGlvbkZpbGUoc291cmNlX3RvcF9kaXIpCi0gICAgc291cmNlLmFkZF90ZXh0KCIv
Ly8gSnNvbi1jcHAgYW1hbGdhbWF0ZWQgc291cmNlIChodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3Jn
ZS5uZXQvKS4iKQotICAgIHNvdXJjZS5hZGRfdGV4dCgnLy8vIEl0IGlzIGludGVuZGVkIHRvIGJl
IHVzZWQgd2l0aCAjaW5jbHVkZSAiJXMiJyAlIGhlYWRlcl9pbmNsdWRlX3BhdGgpCi0gICAgc291
cmNlLmFkZF9maWxlKCJMSUNFTlNFIiwgd3JhcF9pbl9jb21tZW50PVRydWUpCi0gICAgc291cmNl
LmFkZF90ZXh0KCIiKQotICAgIHNvdXJjZS5hZGRfdGV4dCgnI2luY2x1ZGUgIiVzIicgJSBoZWFk
ZXJfaW5jbHVkZV9wYXRoKQotICAgIHNvdXJjZS5hZGRfdGV4dCgiIiIKLSNpZm5kZWYgSlNPTl9J
U19BTUFMR0FNQVRJT04KLSNlcnJvciAiQ29tcGlsZSB3aXRoIC1JIFBBVEhfVE9fSlNPTl9ESVJF
Q1RPUlkiCi0jZW5kaWYKLSIiIikKLSAgICBzb3VyY2UuYWRkX3RleHQoIiIpCi0gICAgbGliX2pz
b24gPSAic3JjL2xpYl9qc29uIgotICAgIHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4obGli
X2pzb24sICJqc29uX3Rvb2wuaCIpKQotICAgIHNvdXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4o
bGliX2pzb24sICJqc29uX3JlYWRlci5jcHAiKSkKLSAgICBzb3VyY2UuYWRkX2ZpbGUob3MucGF0
aC5qb2luKGxpYl9qc29uLCAianNvbl92YWx1ZWl0ZXJhdG9yLmlubCIpKQotICAgIHNvdXJjZS5h
ZGRfZmlsZShvcy5wYXRoLmpvaW4obGliX2pzb24sICJqc29uX3ZhbHVlLmNwcCIpKQotICAgIHNv
dXJjZS5hZGRfZmlsZShvcy5wYXRoLmpvaW4obGliX2pzb24sICJqc29uX3dyaXRlci5jcHAiKSkK
LQotICAgIHByaW50KCJXcml0aW5nIGFtYWxnYW1hdGVkIHNvdXJjZSB0byAlciIgJSB0YXJnZXRf
c291cmNlX3BhdGgpCi0gICAgc291cmNlLndyaXRlX3RvKHRhcmdldF9zb3VyY2VfcGF0aCkKLQot
ZGVmIG1haW4oKToKLSAgICB1c2FnZSA9ICIiIiVwcm9nIFtvcHRpb25zXQotR2VuZXJhdGUgYSBz
aW5nbGUgYW1hbGdhbWF0ZWQgc291cmNlIGFuZCBoZWFkZXIgZmlsZSBmcm9tIHRoZSBzb3VyY2Vz
LgotIiIiCi0gICAgZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi0gICAgcGFyc2Vy
ID0gT3B0aW9uUGFyc2VyKHVzYWdlPXVzYWdlKQotICAgIHBhcnNlci5hbGxvd19pbnRlcnNwZXJz
ZWRfYXJncyA9IEZhbHNlCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc291cmNlIiwg
ZGVzdD0idGFyZ2V0X3NvdXJjZV9wYXRoIiwgYWN0aW9uPSJzdG9yZSIsIGRlZmF1bHQ9ImRpc3Qv
anNvbmNwcC5jcHAiLAotICAgICAgICBoZWxwPSIiIk91dHB1dCAuY3BwIHNvdXJjZSBwYXRoLiBb
RGVmYXVsdDogJWRlZmF1bHRdIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItaSIsICItLWlu
Y2x1ZGUiLCBkZXN0PSJoZWFkZXJfaW5jbHVkZV9wYXRoIiwgYWN0aW9uPSJzdG9yZSIsIGRlZmF1
bHQ9Impzb24vanNvbi5oIiwKLSAgICAgICAgaGVscD0iIiJIZWFkZXIgaW5jbHVkZSBwYXRoLiBV
c2VkIHRvIGluY2x1ZGUgdGhlIGhlYWRlciBmcm9tIHRoZSBhbWFsZ2FtYXRlZCBzb3VyY2UgZmls
ZS4gW0RlZmF1bHQ6ICVkZWZhdWx0XSIiIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXQiLCAi
LS10b3AtZGlyIiwgZGVzdD0idG9wX2RpciIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PW9zLmdl
dGN3ZCgpLAotICAgICAgICBoZWxwPSIiIlNvdXJjZSB0b3AtZGlyZWN0b3J5LiBbRGVmYXVsdDog
JWRlZmF1bHRdIiIiKQotICAgIHBhcnNlci5lbmFibGVfaW50ZXJzcGVyc2VkX2FyZ3MoKQotICAg
IG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICBtc2cgPSBhbWFsZ2Ft
YXRlX3NvdXJjZShzb3VyY2VfdG9wX2Rpcj1vcHRpb25zLnRvcF9kaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldF9zb3VyY2VfcGF0aD1vcHRpb25zLnRhcmdldF9zb3VyY2Vf
cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2luY2x1ZGVfcGF0aD1v
cHRpb25zLmhlYWRlcl9pbmNsdWRlX3BhdGgpCi0gICAgaWYgbXNnOgotICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKG1zZyArICJcbiIpCi0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgZWxzZToKLSAg
ICAgICAgcHJpbnQoIlNvdXJjZSBzdWNjZXNzZnVsbHkgYW1hbGdhbWF0ZWQiKQotCi1pZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hcHB2ZXlv
ci55bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL2FwcHZleW9yLnltbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGI5YzhmZTNmZWEwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9hcHB2ZXlvci55bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1jbG9uZV9mb2xkZXI6IGM6XHByb2plY3RzXGpzb25j
cHAKLQotZW52aXJvbm1lbnQ6Ci0gIG1hdHJpeDoKLSAgICAtIEFQUFZFWU9SX0JVSUxEX1dPUktF
Ul9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE1Ci0gICAgICBDTUFLRV9HRU5FUkFUT1I6IFZpc3Vh
bCBTdHVkaW8gMTQgMjAxNQotICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1
YWwgU3R1ZGlvIDIwMTUKLSAgICAgIENNQUtFX0dFTkVSQVRPUjogVmlzdWFsIFN0dWRpbyAxNCAy
MDE1IFdpbjY0Ci0gICAgLSBBUFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1BR0U6IFZpc3VhbCBTdHVk
aW8gMjAxNwotICAgICAgQ01BS0VfR0VORVJBVE9SOiBWaXN1YWwgU3R1ZGlvIDE1IDIwMTcKLSAg
ICAtIEFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE3Ci0gICAg
ICBDTUFLRV9HRU5FUkFUT1I6IFZpc3VhbCBTdHVkaW8gMTUgMjAxNyBXaW42NAotCi1idWlsZF9z
Y3JpcHQ6Ci0gIC0gY21ha2UgLS12ZXJzaW9uCi0gIC0gY2QgYzpccHJvamVjdHNcanNvbmNwcAot
ICAtIGNtYWtlIC1HICIlQ01BS0VfR0VORVJBVE9SJSIgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpQ
QVRIPSVDRDpcPS8lL2luc3RhbGwgLURCVUlMRF9TSEFSRURfTElCUzpCT09MPU9OIC4KLSAgIyBV
c2UgY3Rlc3QgdG8gbWFrZSBhIGRhc2hib2FyZCBidWlsZDoKLSAgIyAtIGN0ZXN0IC1EIEV4cGVy
aW1lbnRhbChTdGFydHxVcGRhdGV8Q29uZmlndXJlfEJ1aWxkfFRlc3R8Q292ZXJhZ2V8TWVtQ2hl
Y2t8U3VibWl0KQotICAjIE5PVEU6IFRlc3Rpbmcgb24gd2luZG93IGlzIG5vdCB5ZXQgZmluaXNo
ZWQ6Ci0gICMgLSBjdGVzdCAtQyBSZWxlYXNlIC1EIEV4cGVyaW1lbnRhbFN0YXJ0IC1EIEV4cGVy
aW1lbnRhbENvbmZpZ3VyZSAtRCBFeHBlcmltZW50YWxCdWlsZCAtRCBFeHBlcmltZW50YWxUZXN0
IC1EIEV4cGVyaW1lbnRhbFN1Ym1pdAotICAtIGN0ZXN0IC1DIFJlbGVhc2UgLUQgRXhwZXJpbWVu
dGFsU3RhcnQgLUQgRXhwZXJpbWVudGFsQ29uZmlndXJlIC1EIEV4cGVyaW1lbnRhbEJ1aWxkIC1E
IEV4cGVyaW1lbnRhbFN1Ym1pdAotICAjIEZpbmFsIHN0ZXAgaXMgdG8gdmVyaWZ5IHRoYXQgaW5z
dGFsbGF0aW9uIHN1Y2NlZWRzCi0gIC0gY21ha2UgLS1idWlsZCAuIC0tY29uZmlnIFJlbGVhc2Ug
LS10YXJnZXQgaW5zdGFsbAotCi1kZXBsb3k6Ci0gICAgcHJvdmlkZXI6IEdpdEh1YgotICAgIGF1
dGhfdG9rZW46Ci0gICAgICAgIHNlY3VyZTogSzJUcDFxOHBJWjdyczBPdDI0Wk1XdXdyMTJFdjZU
YzZRa2hNakdReG9RRzNuZzFwWHRnUGFzaUo0NUlEWEdkZwotICAgIG9uOgotICAgICAgICBicmFu
Y2g6IG1hc3RlcgotICAgICAgICBhcHB2ZXlvcl9yZXBvX3RhZzogdHJ1ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9kZXYubWFrZWZpbGUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rldi5tYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMWE0YmU2YTkxMzQ2Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXYubWFr
ZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIFRoaXMgaXMgb25seSBmb3Ig
anNvbmNwcCBkZXZlbG9wZXJzL2NvbnRyaWJ1dG9ycy4KLSMgV2UgdXNlIHRoaXMgdG8gc2lnbiBy
ZWxlYXNlcywgZ2VuZXJhdGUgZG9jdW1lbnRhdGlvbiwgZXRjLgotVkVSPz0kKHNoZWxsIGNhdCB2
ZXJzaW9uLnR4dCkKLQotZGVmYXVsdDoKLQlAZWNobyAiVkVSPSR7VkVSfSIKLXNpZ246IGpzb25j
cHAtJHtWRVJ9LnRhci5negotCWdwZyAtLWFybW9yIC0tZGV0YWNoLXNpZ24gJDwKLQlncGcgLS12
ZXJpZnkgJDwuYXNjCi0JIyBUaGVuIHVwbG9hZCAuYXNjIHRvIHRoZSByZWxlYXNlLgotanNvbmNw
cC0lLnRhci5nejoKLQljdXJsIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJz
L2pzb25jcHAvYXJjaGl2ZS8kKi50YXIuZ3ogLW8gJEAKLWRveDoKLQlweXRob24gZG94eWJ1aWxk
LnB5IC0tZG94eWdlbj0kJCh3aGljaCBkb3h5Z2VuKSAtLWluIGRvYy93ZWJfZG94eWZpbGUuaW4K
LQlyc3luYyAtdmEgLWMgLS1kZWxldGUgZGlzdC9kb3h5Z2VuL2pzb25jcHAtYXBpLWh0bWwtJHtW
RVJ9LyAuLi9qc29uY3BwLWRvY3MvZG94eWdlbi8KLQkjIFRoZW4gJ2dpdCBhZGQgLUEnIGFuZCAn
Z2l0IHB1c2gnIGluIGpzb25jcHAtZG9jcy4KLWJ1aWxkOgotCW1rZGlyIC1wIGJ1aWxkL2RlYnVn
Ci0JY2QgYnVpbGQvZGVidWc7IGNtYWtlIC1EQ01BS0VfQlVJTERfVFlQRT1kZWJ1ZyAtREJVSUxE
X1NIQVJFRF9MSUJTPU9OIC1HICJVbml4IE1ha2VmaWxlcyIgLi4vLi4KLQltYWtlIC1DIGJ1aWxk
L2RlYnVnCi0KLSMgQ3VycmVudGx5LCB0aGlzIGRlcGVuZHMgb24gaW5jbHVkZS9qc29uL3ZlcnNp
b24uaCBnZW5lcmF0ZWQKLSMgYnkgY21ha2UuCi10ZXN0LWFtYWxnYW1hdGU6Ci0JcHl0aG9uMi43
IGFtYWxnYW1hdGUucHkKLQlweXRob24zLjQgYW1hbGdhbWF0ZS5weQotCWNkIGRpc3Q7IGdjYyAt
SS4gLWMganNvbmNwcC5jcHAKLQotdmFsZ3JpbmQ6Ci0JdmFsZ3JpbmQgLS1lcnJvci1leGl0Y29k
ZT00MiAtLWxlYWstY2hlY2s9ZnVsbCAuL2J1aWxkL2RlYnVnL3NyYy90ZXN0X2xpYl9qc29uL2pz
b25jcHBfdGVzdAotCi1jbGVhbjoKLQlccm0gLXJmICouZ3ogKi5hc2MgZGlzdC8KLQotLlBIT05Z
OiBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9fX2luaXRfXy5weSBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2
dG9vbHMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNTFlNjUx
NDI1YS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvX19pbml0X18ucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxs
ZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0jIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNl
bnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91
ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0
IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSMgbW9kdWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50X3ZtdzcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvYWdl
bnRfdm13Ny5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDdiNzc3ZmU1ZDQu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50X3ZtdzcuanNvbgorKysgL2Rl
di9udWxsCkBAIC0xLDMzICswLDAgQEAKLXsKLSAgICAiY21ha2VfdmFyaWFudHMiIDogWwotICAg
ICAgICB7Im5hbWUiOiAiZ2VuZXJhdG9yIiwKLSAgICAgICAgICJnZW5lcmF0b3JzIjogWwotICAg
ICAgICAgICAgeyJnZW5lcmF0b3IiOiBbCi0gICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8g
NyAuTkVUIDIwMDMiLAotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIDkgMjAwOCIsCi0g
ICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8gOSAyMDA4IFdpbjY0IiwKLSAgICAgICAgICAg
ICAgICAiVmlzdWFsIFN0dWRpbyAxMCIsCi0gICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8g
MTAgV2luNjQiLAotICAgICAgICAgICAgICAgICJWaXN1YWwgU3R1ZGlvIDExIiwKLSAgICAgICAg
ICAgICAgICAiVmlzdWFsIFN0dWRpbyAxMSBXaW42NCIKLSAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgeyJnZW5lcmF0b3IiOiBbIk1pbkdXIE1ha2VmaWxlcyJd
LAotICAgICAgICAgICAgICJlbnZfcHJlcGVuZCI6IFt7InBhdGgiOiAiYzovd3V0L3ByZy9NaW5H
Vy9iaW4ifV0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAg
eyJuYW1lIjogInNoYXJlZF9kbGwiLAotICAgICAgICAgInZhcmlhYmxlcyI6IFsKLSAgICAgICAg
ICAgIFsiQlVJTERfU0hBUkVEX0xJQlM9dHJ1ZSJdLAotICAgICAgICAgICAgWyJCVUlMRF9TSEFS
RURfTElCUz1mYWxzZSJdCi0gICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Im5hbWUi
OiAiYnVpbGRfdHlwZSIsCi0gICAgICAgICAiYnVpbGRfdHlwZXMiOiBbCi0gICAgICAgICAgICAi
ZGVidWciLAotICAgICAgICAgICAgInJlbGVhc2UiCi0gICAgICAgICAgICBdCi0gICAgICAgIH0K
LSAgICBdCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50X3ZteHAuanNvbiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvZGV2dG9vbHMvYWdlbnRfdm14cC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmODJhMDc3M2EyZjEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FnZW50X3Zt
eHAuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLXsKLSAgICAiY21ha2VfdmFy
aWFudHMiIDogWwotICAgICAgICB7Im5hbWUiOiAiZ2VuZXJhdG9yIiwKLSAgICAgICAgICJnZW5l
cmF0b3JzIjogWwotICAgICAgICAgICAgeyJnZW5lcmF0b3IiOiBbCi0gICAgICAgICAgICAgICAg
IlZpc3VhbCBTdHVkaW8gNiIsCi0gICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8gNyIsCi0g
ICAgICAgICAgICAgICAgIlZpc3VhbCBTdHVkaW8gOCAyMDA1IgotICAgICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgeyJuYW1lIjog
InNoYXJlZF9kbGwiLAotICAgICAgICAgInZhcmlhYmxlcyI6IFsKLSAgICAgICAgICAgIFsiQlVJ
TERfU0hBUkVEX0xJQlM9dHJ1ZSJdLAotICAgICAgICAgICAgWyJCVUlMRF9TSEFSRURfTElCUz1m
YWxzZSJdCi0gICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Im5hbWUiOiAiYnVpbGRf
dHlwZSIsCi0gICAgICAgICAiYnVpbGRfdHlwZXMiOiBbCi0gICAgICAgICAgICAiZGVidWciLAot
ICAgICAgICAgICAgInJlbGVhc2UiCi0gICAgICAgICAgICBdCi0gICAgICAgIH0KLSAgICBdCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2FudGdsb2IucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2Fu
dGdsb2IucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NDM3NjU4Y2UwYi4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvYW50Z2xvYi5weQorKysgL2Rldi9udWxsCkBA
IC0xLDIwNSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgZW5jb2Rpbmc6IHV0Zi04
Ci0jIENvcHlyaWdodCAyMDA5IEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0
aG9ycwotIyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBp
ZiBkZXNpcmVkIGFuZAotIyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotIyBTZWUg
ZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vm
b3JnZS5uZXQvTElDRU5TRQotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
Ci1mcm9tIGRpcmNhY2hlIGltcG9ydCBsaXN0ZGlyCi1pbXBvcnQgcmUKLWltcG9ydCBmbm1hdGNo
Ci1pbXBvcnQgb3MucGF0aAotCi0KLSMgVGhlc2UgZm5tYXRjaCBleHByZXNzaW9ucyBhcmUgdXNl
ZCBieSBkZWZhdWx0IHRvIHBydW5lIHRoZSBkaXJlY3RvcnkgdHJlZQotIyB3aGlsZSBkb2luZyB0
aGUgcmVjdXJzaXZlIHRyYXZlcnNhbCBpbiB0aGUgZ2xvYl9pbXBsIG1ldGhvZCBvZiBnbG9iIGZ1
bmN0aW9uLgotcHJ1bmVfZGlycyA9ICcuZ2l0IC5ienIgLmhnIC5zdm4gX01UTiBfZGFyY3MgQ1ZT
IFNDQ1MgJwotCi0jIFRoZXNlIGZubWF0Y2ggZXhwcmVzc2lvbnMgYXJlIHVzZWQgYnkgZGVmYXVs
dCB0byBleGNsdWRlIGZpbGVzIGFuZCBkaXJzCi0jIHdoaWxlIGRvaW5nIHRoZSByZWN1cnNpdmUg
dHJhdmVyc2FsIGluIHRoZSBnbG9iX2ltcGwgbWV0aG9kIG9mIGdsb2IgZnVuY3Rpb24uCi0jI2V4
Y2x1ZGVfcGF0cyA9IHBydW5lX3BhdHMgKyAnKn4gIyojIC4jKiAlKiUgLl8qIC5naXRpZ25vcmUg
LmN2c2lnbm9yZSB2c3N2ZXIuc2NjIC5EU19TdG9yZScuc3BsaXQoKQotCi0jIFRoZXNlIGFudF9n
bG9iIGV4cHJlc3Npb25zIGFyZSB1c2VkIGJ5IGRlZmF1bHQgdG8gZXhjbHVkZSBmaWxlcyBhbmQg
ZGlycyBhbmQgYWxzbyBwcnVuZSB0aGUgZGlyZWN0b3J5IHRyZWUKLSMgd2hpbGUgZG9pbmcgdGhl
IHJlY3Vyc2l2ZSB0cmF2ZXJzYWwgaW4gdGhlIGdsb2JfaW1wbCBtZXRob2Qgb2YgZ2xvYiBmdW5j
dGlvbi4KLWRlZmF1bHRfZXhjbHVkZXMgPSAnJycKLSoqLyp+Ci0qKi8jKiMKLSoqLy4jKgotKiov
JSolCi0qKi8uXyoKLSoqL0NWUwotKiovQ1ZTLyoqCi0qKi8uY3ZzaWdub3JlCi0qKi9TQ0NTCi0q
Ki9TQ0NTLyoqCi0qKi92c3N2ZXIuc2NjCi0qKi8uc3ZuCi0qKi8uc3ZuLyoqCi0qKi8uZ2l0Ci0q
Ki8uZ2l0LyoqCi0qKi8uZ2l0aWdub3JlCi0qKi8uYnpyCi0qKi8uYnpyLyoqCi0qKi8uaGcKLSoq
Ly5oZy8qKgotKiovX01UTgotKiovX01UTi8qKgotKiovX2RhcmNzCi0qKi9fZGFyY3MvKioKLSoq
Ly5EU19TdG9yZSAnJycKLQotRElSID0gMQotRklMRSA9IDIKLURJUl9MSU5LID0gNAotRklMRV9M
SU5LID0gOAotTElOS1MgPSBESVJfTElOSyB8IEZJTEVfTElOSwotQUxMX05PX0xJTksgPSBESVIg
fCBGSUxFCi1BTEwgPSBESVIgfCBGSUxFIHwgTElOS1MKLQotX0FOVF9SRSA9IHJlLmNvbXBpbGUo
cicoL1wqXCovKXwoXCpcKi8pfCgvXCpcKil8KFwqKXwoLyl8KFteXCovXSopJykKLQotZGVmIGFu
dF9wYXR0ZXJuX3RvX3JlKGFudF9wYXR0ZXJuKToKLSAgICAiIiJHZW5lcmF0ZXMgYSByZWd1bGFy
IGV4cHJlc3Npb24gZnJvbSB0aGUgYW50IHBhdHRlcm4uCi0gICAgTWF0Y2hpbmcgY29udmVudGlv
bjoKLSAgICAqKi9hOiBtYXRjaCAnYScsICdkaXIvYScsICdkaXIxL2RpcjIvYScKLSAgICBhLyoq
L2I6IG1hdGNoICdhL2InLCAnYS9jL2InLCAnYS9kL2MvYicKLSAgICAqLnB5OiBtYXRjaCAnc2Ny
aXB0LnB5JyBidXQgbm90ICdhL3NjcmlwdC5weScKLSAgICAiIiIKLSAgICByZXggPSBbJ14nXQot
ICAgIG5leHRfcG9zID0gMAotICAgIHNlcF9yZXggPSByJyg/Oi98JXMpJyAlIHJlLmVzY2FwZShv
cy5wYXRoLnNlcCkKLSMjICAgIHByaW50ICdDb252ZXJ0aW5nJywgYW50X3BhdHRlcm4KLSAgICBm
b3IgbWF0Y2ggaW4gX0FOVF9SRS5maW5kaXRlcihhbnRfcGF0dGVybik6Ci0jIyAgICAgICAgcHJp
bnQgJ01hdGNoZWQnLCBtYXRjaC5ncm91cCgpCi0jIyAgICAgICAgcHJpbnQgbWF0Y2guc3RhcnQo
MCksIG5leHRfcG9zCi0gICAgICAgIGlmIG1hdGNoLnN0YXJ0KDApICE9IG5leHRfcG9zOgotICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBhbnQgcGF0dGVybiIpCi0gICAgICAg
IGlmIG1hdGNoLmdyb3VwKDEpOiAjIC8qKi8KLSAgICAgICAgICAgIHJleC5hcHBlbmQoc2VwX3Jl
eCArICcoPzouKiVzKT8nICUgc2VwX3JleCkKLSAgICAgICAgZWxpZiBtYXRjaC5ncm91cCgyKTog
IyAqKi8KLSAgICAgICAgICAgIHJleC5hcHBlbmQoJyg/Oi4qJXMpPycgJSBzZXBfcmV4KQotICAg
ICAgICBlbGlmIG1hdGNoLmdyb3VwKDMpOiAjIC8qKgotICAgICAgICAgICAgcmV4LmFwcGVuZChz
ZXBfcmV4ICsgJy4qJykKLSAgICAgICAgZWxpZiBtYXRjaC5ncm91cCg0KTogIyAqCi0gICAgICAg
ICAgICByZXguYXBwZW5kKCdbXi8lc10qJyAlIHJlLmVzY2FwZShvcy5wYXRoLnNlcCkpCi0gICAg
ICAgIGVsaWYgbWF0Y2guZ3JvdXAoNSk6ICMgLwotICAgICAgICAgICAgcmV4LmFwcGVuZChzZXBf
cmV4KQotICAgICAgICBlbHNlOiAjIHNvbWVwYXRoCi0gICAgICAgICAgICByZXguYXBwZW5kKHJl
LmVzY2FwZShtYXRjaC5ncm91cCg2KSkpCi0gICAgICAgIG5leHRfcG9zID0gbWF0Y2guZW5kKCkK
LSAgICByZXguYXBwZW5kKCckJykKLSAgICByZXR1cm4gcmUuY29tcGlsZSgnJy5qb2luKHJleCkp
Ci0KLWRlZiBfYXNfbGlzdChsKToKLSAgICBpZiBpc2luc3RhbmNlKGwsIGJhc2VzdHJpbmcpOgot
ICAgICAgICByZXR1cm4gbC5zcGxpdCgpCi0gICAgcmV0dXJuIGwKLQotZGVmIGdsb2IoZGlyX3Bh
dGgsCi0gICAgICAgICBpbmNsdWRlcyA9ICcqKi8qJywKLSAgICAgICAgIGV4Y2x1ZGVzID0gZGVm
YXVsdF9leGNsdWRlcywKLSAgICAgICAgIGVudHJ5X3R5cGUgPSBGSUxFLAotICAgICAgICAgcHJ1
bmVfZGlycyA9IHBydW5lX2RpcnMsCi0gICAgICAgICBtYXhfZGVwdGggPSAyNSk6Ci0gICAgaW5j
bHVkZV9maWx0ZXIgPSBbYW50X3BhdHRlcm5fdG9fcmUocCkgZm9yIHAgaW4gX2FzX2xpc3QoaW5j
bHVkZXMpXQotICAgIGV4Y2x1ZGVfZmlsdGVyID0gW2FudF9wYXR0ZXJuX3RvX3JlKHApIGZvciBw
IGluIF9hc19saXN0KGV4Y2x1ZGVzKV0KLSAgICBwcnVuZV9kaXJzID0gW3AucmVwbGFjZSgnLycs
b3MucGF0aC5zZXApIGZvciBwIGluIF9hc19saXN0KHBydW5lX2RpcnMpXQotICAgIGRpcl9wYXRo
ID0gZGlyX3BhdGgucmVwbGFjZSgnLycsb3MucGF0aC5zZXApCi0gICAgZW50cnlfdHlwZV9maWx0
ZXIgPSBlbnRyeV90eXBlCi0KLSAgICBkZWYgaXNfcHJ1bmVkX2RpcihkaXJfbmFtZSk6Ci0gICAg
ICAgIGZvciBwYXR0ZXJuIGluIHBydW5lX2RpcnM6Ci0gICAgICAgICAgICBpZiBmbm1hdGNoLmZu
bWF0Y2goZGlyX25hbWUsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGFwcGx5X2ZpbHRlcihmdWxsX3BhdGgsIGZp
bHRlcl9yZXhzKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgYXQgbGVhc3Qgb25lIG9mIHRo
ZSBmaWx0ZXIgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIGZ1bGxfcGF0aC4iIiIKLSAgICAgICAg
Zm9yIHJleCBpbiBmaWx0ZXJfcmV4czoKLSAgICAgICAgICAgIGlmIHJleC5tYXRjaChmdWxsX3Bh
dGgpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIGdsb2JfaW1wbChyb290X2Rpcl9wYXRoKToKLSAgICAgICAgY2hpbGRfZGlycyA9
IFtyb290X2Rpcl9wYXRoXQotICAgICAgICB3aGlsZSBjaGlsZF9kaXJzOgotICAgICAgICAgICAg
ZGlyX3BhdGggPSBjaGlsZF9kaXJzLnBvcCgpCi0gICAgICAgICAgICBmb3IgZW50cnkgaW4gbGlz
dGRpcihkaXJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2lu
KGRpcl9wYXRoLCBlbnRyeSkKLSMjICAgICAgICAgICAgICAgIHByaW50ICdUZXN0aW5nOicsIGZ1
bGxfcGF0aCwKLSAgICAgICAgICAgICAgICBpc19kaXIgPSBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0
aCkKLSAgICAgICAgICAgICAgICBpZiBpc19kaXIgYW5kIG5vdCBpc19wcnVuZWRfZGlyKGVudHJ5
KTogIyBleHBsb3JlIGNoaWxkIGRpcmVjdG9yeSA/Ci0jIyAgICAgICAgICAgICAgICAgICAgcHJp
bnQgJz09PT4gbWFya2VkIGZvciByZWN1cnNpb24nLAotICAgICAgICAgICAgICAgICAgICBjaGls
ZF9kaXJzLmFwcGVuZChmdWxsX3BhdGgpCi0gICAgICAgICAgICAgICAgaW5jbHVkZWQgPSBhcHBs
eV9maWx0ZXIoZnVsbF9wYXRoLCBpbmNsdWRlX2ZpbHRlcikKLSAgICAgICAgICAgICAgICByZWpl
Y3RlZCA9IGFwcGx5X2ZpbHRlcihmdWxsX3BhdGgsIGV4Y2x1ZGVfZmlsdGVyKQotICAgICAgICAg
ICAgICAgIGlmIG5vdCBpbmNsdWRlZCBvciByZWplY3RlZDogIyBkbyBub3QgaW5jbHVkZSBlbnRy
eSA/Ci0jIyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJz0+IG5vdCBpbmNsdWRlZCBvciByZWpl
Y3RlZCcKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBsaW5r
ID0gb3MucGF0aC5pc2xpbmsoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgIGlzX2ZpbGUgPSBv
cy5wYXRoLmlzZmlsZShmdWxsX3BhdGgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzX2ZpbGUg
YW5kIG5vdCBpc19kaXI6Ci0jIyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJz0+IHVua25vd24g
ZW50cnkgdHlwZScKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAg
ICBpZiBsaW5rOgotICAgICAgICAgICAgICAgICAgICBlbnRyeV90eXBlID0gaXNfZmlsZSBhbmQg
RklMRV9MSU5LIG9yIERJUl9MSU5LCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgZW50cnlfdHlwZSA9IGlzX2ZpbGUgYW5kIEZJTEUgb3IgRElSCi0jIyAgICAgICAg
ICAgICAgICBwcmludCAnPT4gdHlwZTogJWQnICUgZW50cnlfdHlwZSwgCi0gICAgICAgICAgICAg
ICAgaWYgKGVudHJ5X3R5cGUgJiBlbnRyeV90eXBlX2ZpbHRlcikgIT0gMDoKLSMjICAgICAgICAg
ICAgICAgICAgICBwcmludCAnID0+IEtFRVAnCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIG9z
LnBhdGguam9pbihkaXJfcGF0aCwgZW50cnkpCi0jIyAgICAgICAgICAgICAgICBlbHNlOgotIyMg
ICAgICAgICAgICAgICAgICAgIHByaW50ICcgPT4gVFlQRSBSRUpFQ1RFRCcKLSAgICByZXR1cm4g
bGlzdChnbG9iX2ltcGwoZGlyX3BhdGgpKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0KLSAgICBjbGFzcyBBbnRQYXR0ZXJuVG9SRVRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotIyMgICAgICAgIGRlZiB0ZXN0X2NvbnZlcnNpb24oc2VsZik6Ci0j
IyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ15zb21lcGF0aCQnLCBhbnRfcGF0dGVybl90
b19yZSgnc29tZXBhdGgnKS5wYXR0ZXJuKQotCi0gICAgICAgIGRlZiB0ZXN0X21hdGNoaW5nKHNl
bGYpOgotICAgICAgICAgICAgdGVzdF9jYXNlcyA9IFsgKCdwYXRoJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWydwYXRoJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
c29tZXBhdGgnLCAncGF0aHN1ZmZpeCcsICcvcGF0aCcsICcvcGF0aCddKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgnKi5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
c291cmNlLnB5JywgJ3NvdXJjZS5leHQucHknLCAnLnB5J10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsncGF0aC9zb3VyY2UucHknLCAnLy5weScsICdkaXIucHkveicsICd6LnB5Yycs
ICd6LmMnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyoqL3BhdGgnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbJ3BhdGgnLCAnL3BhdGgnLCAnL2EvcGF0aCcsICdjOi9h
L3BhdGgnLCAnL2EvYi9wYXRoJywgJy8vYS9wYXRoJywgJy9hL3BhdGgvYi9wYXRoJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsncGF0aC8nLCAnYS9wYXRoL2InLCAnZGlyLnB5L3on
LCAnc29tZXBhdGgnLCAncGF0aHN1ZmZpeCcsICdhL3NvbWVwYXRoJ10pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCdwYXRoLyoqJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WydwYXRoL2EnLCAncGF0aC9wYXRoL2EnLCAncGF0aC8vJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsncGF0aCcsICdzb21lcGF0aC9hJywgJ2EvcGF0aCcsICdhL3BhdGgvYScsICdw
YXRoc3VmZml4L2EnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJy8qKi9wYXRoJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvcGF0aCcsICcvYS9wYXRoJywgJy9hL2Iv
cGF0aC9wYXRoJywgJy9wYXRoL3BhdGgnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WydwYXRoJywgJ3BhdGgvJywgJ2EvcGF0aCcsICcvcGF0aHN1ZmZpeCcsICcvc29tZXBhdGgnXSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EvYicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnYS9iJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnc29tZWEv
YicsICdhL2JzdWZmaXgnLCAnYS9iL2MnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAo
JyoqLyoucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3NjcmlwdC5weScsICdz
cmMvc2NyaXB0LnB5JywgJ2EvYi9zY3JpcHQucHknLCAnL2EvYi9zY3JpcHQucHknXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWydzY3JpcHQucHljJywgJ3NjcmlwdC5weW8nLCAnYS5w
eS9iJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzcmMvKiovKi5weScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3JjL2EucHknLCAnc3JjL2Rpci9hLnB5J10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYS9zcmMvYS5weScsICcvc3JjL2EucHknXSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBmb3IgYW50X3BhdHRl
cm4sIGFjY2VwdGVkX21hdGNoZXMsIHJlamVjdGVkX21hdGNoZXMgaW4gbGlzdCh0ZXN0X2Nhc2Vz
KToKLSAgICAgICAgICAgICAgICBkZWYgbG9jYWxfcGF0aChwYXRocyk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbIHAucmVwbGFjZSgnLycsb3MucGF0aC5zZXApIGZvciBwIGluIHBhdGhz
IF0KLSAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VzLmFwcGVuZCgoYW50X3BhdHRlcm4sIGxvY2Fs
X3BhdGgoYWNjZXB0ZWRfbWF0Y2hlcyksIGxvY2FsX3BhdGgocmVqZWN0ZWRfbWF0Y2hlcykpKQot
ICAgICAgICAgICAgZm9yIGFudF9wYXR0ZXJuLCBhY2NlcHRlZF9tYXRjaGVzLCByZWplY3RlZF9t
YXRjaGVzIGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICAgICAgcmV4ID0gYW50X3BhdHRlcm5f
dG9fcmUoYW50X3BhdHRlcm4pCi0gICAgICAgICAgICAgICAgcHJpbnQoJ2FudF9wYXR0ZXJuOics
IGFudF9wYXR0ZXJuLCAnID0+ICcsIHJleC5wYXR0ZXJuKQotICAgICAgICAgICAgICAgIGZvciBh
Y2NlcHRlZF9tYXRjaCBpbiBhY2NlcHRlZF9tYXRjaGVzOgotICAgICAgICAgICAgICAgICAgICBw
cmludCgnQWNjZXB0ZWQ/OicsIGFjY2VwdGVkX21hdGNoKQotICAgICAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmV4Lm1hdGNoKGFjY2VwdGVkX21hdGNoKSBpcyBub3QgTm9uZSkKLSAg
ICAgICAgICAgICAgICBmb3IgcmVqZWN0ZWRfbWF0Y2ggaW4gcmVqZWN0ZWRfbWF0Y2hlczoKLSAg
ICAgICAgICAgICAgICAgICAgcHJpbnQoJ1JlamVjdGVkPzonLCByZWplY3RlZF9tYXRjaCkKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJleC5tYXRjaChyZWplY3RlZF9tYXRj
aCkgaXMgTm9uZSkKLQotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0
b29scy9iYXRjaGJ1aWxkLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kZXZ0b29scy9iYXRjaGJ1aWxkLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWIwNjkwZThjNmQuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL2RldnRvb2xzL2JhdGNoYnVpbGQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNzggKzAsMCBA
QAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IGNvbGxlY3Rp
b25zCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgb3Mu
cGF0aAotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgc3Vi
cHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IGNnaQotCi1jbGFzcyBCdWlsZERlc2M6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHByZXBlbmRfZW52cz1Ob25lLCB2YXJpYWJsZXM9Tm9uZSwgYnVp
bGRfdHlwZT1Ob25lLCBnZW5lcmF0b3I9Tm9uZSk6Ci0gICAgICAgIHNlbGYucHJlcGVuZF9lbnZz
ID0gcHJlcGVuZF9lbnZzIG9yIFtdICMgWyB7ICJ2YXIiOiAidmFsdWUiIH0gXQotICAgICAgICBz
ZWxmLnZhcmlhYmxlcyA9IHZhcmlhYmxlcyBvciBbXQotICAgICAgICBzZWxmLmJ1aWxkX3R5cGUg
PSBidWlsZF90eXBlCi0gICAgICAgIHNlbGYuZ2VuZXJhdG9yID0gZ2VuZXJhdG9yCi0KLSAgICBk
ZWYgbWVyZ2VkX3dpdGgoc2VsZiwgYnVpbGRfZGVzYyk6Ci0gICAgICAgICIiIlJldHVybnMgYSBu
ZXcgQnVpbGREZXNjIGJ5IG1lcmdpbmcgZmllbGQgY29udGVudC4KLSAgICAgICAgICAgUHJlZmVy
IGJ1aWxkX2Rlc2MgZmllbGRzIHRvIHNlbGYgZmllbGRzIGZvciBzaW5nbGUgdmFsdWVkIGZpZWxk
LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIEJ1aWxkRGVzYyhzZWxmLnByZXBlbmRfZW52
cyArIGJ1aWxkX2Rlc2MucHJlcGVuZF9lbnZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLnZhcmlhYmxlcyArIGJ1aWxkX2Rlc2MudmFyaWFibGVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWlsZF9kZXNjLmJ1aWxkX3R5cGUgb3Igc2VsZi5idWlsZF90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWlsZF9kZXNjLmdlbmVyYXRvciBvciBzZWxmLmdlbmVyYXRv
cikKLQotICAgIGRlZiBlbnYoc2VsZik6Ci0gICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uLmNv
cHkoKQotICAgICAgICBmb3IgdmFsdWVzX2J5X25hbWUgaW4gc2VsZi5wcmVwZW5kX2VudnM6Ci0g
ICAgICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBsaXN0KHZhbHVlc19ieV9uYW1lLml0ZW1zKCkp
OgotICAgICAgICAgICAgICAgIHZhciA9IHZhci51cHBlcigpCi0gICAgICAgICAgICAgICAgaWYg
dHlwZSh2YWx1ZSkgaXMgdW5pY29kZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1
ZS5lbmNvZGUoc3lzLmdldGRlZmF1bHRlbmNvZGluZygpKQotICAgICAgICAgICAgICAgIGlmIHZh
ciBpbiBlbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBlbnZpcm9uW3Zhcl0gPSB2YWx1ZSAr
IG9zLnBhdGhzZXAgKyBlbnZpcm9uW3Zhcl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICBlbnZpcm9uW3Zhcl0gPSB2YWx1ZQotICAgICAgICByZXR1cm4gZW52aXJv
bgotCi0gICAgZGVmIGNtYWtlX2FyZ3Moc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbIi1EJXMiICUg
dmFyIGZvciB2YXIgaW4gc2VsZi52YXJpYWJsZXNdCi0gICAgICAgICMgc2tpcCBidWlsZCB0eXBl
IGZvciBWaXN1YWwgU3R1ZGlvIHNvbHV0aW9uIGFzIGl0IGNhdXNlIHdhcm5pbmcKLSAgICAgICAg
aWYgc2VsZi5idWlsZF90eXBlIGFuZCAnVmlzdWFsJyBub3QgaW4gc2VsZi5nZW5lcmF0b3I6Ci0g
ICAgICAgICAgICBhcmdzLmFwcGVuZCgiLURDTUFLRV9CVUlMRF9UWVBFPSVzIiAlIHNlbGYuYnVp
bGRfdHlwZSkKLSAgICAgICAgaWYgc2VsZi5nZW5lcmF0b3I6Ci0gICAgICAgICAgICBhcmdzLmV4
dGVuZChbJy1HJywgc2VsZi5nZW5lcmF0b3JdKQotICAgICAgICByZXR1cm4gYXJncwotCi0gICAg
ZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkJ1aWxkRGVzYyglcywgYnVpbGRf
dHlwZT0lcykiICUgICgiICIuam9pbihzZWxmLmNtYWtlX2FyZ3MoKSksIHNlbGYuYnVpbGRfdHlw
ZSkKLQotY2xhc3MgQnVpbGREYXRhOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCB3b3Jr
X2Rpciwgc291cmNlX2Rpcik6Ci0gICAgICAgIHNlbGYuZGVzYyA9IGRlc2MKLSAgICAgICAgc2Vs
Zi53b3JrX2RpciA9IHdvcmtfZGlyCi0gICAgICAgIHNlbGYuc291cmNlX2RpciA9IHNvdXJjZV9k
aXIKLSAgICAgICAgc2VsZi5jbWFrZV9sb2dfcGF0aCA9IG9zLnBhdGguam9pbih3b3JrX2Rpciwg
J2JhdGNoYnVpbGRfY21ha2UubG9nJykKLSAgICAgICAgc2VsZi5idWlsZF9sb2dfcGF0aCA9IG9z
LnBhdGguam9pbih3b3JrX2RpciwgJ2JhdGNoYnVpbGRfYnVpbGQubG9nJykKLSAgICAgICAgc2Vs
Zi5jbWFrZV9zdWNjZWVkZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmJ1aWxkX3N1Y2NlZWRlZCA9
IEZhbHNlCi0KLSAgICBkZWYgZXhlY3V0ZV9idWlsZChzZWxmKToKLSAgICAgICAgcHJpbnQoJ0J1
aWxkICVzJyAlIHNlbGYuZGVzYykKLSAgICAgICAgc2VsZi5fbWFrZV9uZXdfd29ya19kaXIoKQot
ICAgICAgICBzZWxmLmNtYWtlX3N1Y2NlZWRlZCA9IHNlbGYuX2dlbmVyYXRlX21ha2VmaWxlcygp
Ci0gICAgICAgIGlmIHNlbGYuY21ha2Vfc3VjY2VlZGVkOgotICAgICAgICAgICAgc2VsZi5idWls
ZF9zdWNjZWVkZWQgPSBzZWxmLl9idWlsZF91c2luZ19tYWtlZmlsZXMoKQotICAgICAgICByZXR1
cm4gc2VsZi5idWlsZF9zdWNjZWVkZWQKLQotICAgIGRlZiBfZ2VuZXJhdGVfbWFrZWZpbGVzKHNl
bGYpOgotICAgICAgICBwcmludCgnICBHZW5lcmF0aW5nIG1ha2VmaWxlczogJywgZW5kPScgJykK
LSAgICAgICAgY21kID0gWydjbWFrZSddICsgc2VsZi5kZXNjLmNtYWtlX2FyZ3MoKSArIFtvcy5w
YXRoLmFic3BhdGgoc2VsZi5zb3VyY2VfZGlyKV0KLSAgICAgICAgc3VjY2VlZGVkID0gc2VsZi5f
ZXhlY3V0ZV9idWlsZF9zdWJwcm9jZXNzKGNtZCwgc2VsZi5kZXNjLmVudigpLCBzZWxmLmNtYWtl
X2xvZ19wYXRoKQotICAgICAgICBwcmludCgnZG9uZScgaWYgc3VjY2VlZGVkIGVsc2UgJ0ZBSUxF
RCcpCi0gICAgICAgIHJldHVybiBzdWNjZWVkZWQKLQotICAgIGRlZiBfYnVpbGRfdXNpbmdfbWFr
ZWZpbGVzKHNlbGYpOgotICAgICAgICBwcmludCgnICBCdWlsZGluZzonLCBlbmQ9JyAnKQotICAg
ICAgICBjbWQgPSBbJ2NtYWtlJywgJy0tYnVpbGQnLCBzZWxmLndvcmtfZGlyXQotICAgICAgICBp
ZiBzZWxmLmRlc2MuYnVpbGRfdHlwZToKLSAgICAgICAgICAgIGNtZCArPSBbJy0tY29uZmlnJywg
c2VsZi5kZXNjLmJ1aWxkX3R5cGVdCi0gICAgICAgIHN1Y2NlZWRlZCA9IHNlbGYuX2V4ZWN1dGVf
YnVpbGRfc3VicHJvY2VzcyhjbWQsIHNlbGYuZGVzYy5lbnYoKSwgc2VsZi5idWlsZF9sb2dfcGF0
aCkKLSAgICAgICAgcHJpbnQoJ2RvbmUnIGlmIHN1Y2NlZWRlZCBlbHNlICdGQUlMRUQnKQotICAg
ICAgICByZXR1cm4gc3VjY2VlZGVkCi0KLSAgICBkZWYgX2V4ZWN1dGVfYnVpbGRfc3VicHJvY2Vz
cyhzZWxmLCBjbWQsIGVudiwgbG9nX3BhdGgpOgotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vz
cy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCwgY3dkPXNlbGYud29ya19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbnY9ZW52KQotICAgICAgICBzdGRvdXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkK
LSAgICAgICAgc3VjY2VlZGVkID0gKHByb2Nlc3MucmV0dXJuY29kZSA9PSAwKQotICAgICAgICB3
aXRoIG9wZW4obG9nX3BhdGgsICd3YicpIGFzIGZsb2c6Ci0gICAgICAgICAgICBsb2cgPSAnICcu
am9pbihjbWQpICsgJ1xuJyArIHN0ZG91dCArICdcbkV4aXQgY29kZTogJXJcbicgJSBwcm9jZXNz
LnJldHVybmNvZGUKLSAgICAgICAgICAgIGZsb2cud3JpdGUoZml4X2VvbChsb2cpKQotICAgICAg
ICByZXR1cm4gc3VjY2VlZGVkCi0KLSAgICBkZWYgX21ha2VfbmV3X3dvcmtfZGlyKHNlbGYpOgot
ICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNlbGYud29ya19kaXIpOgotICAgICAgICAgICAgcHJp
bnQoJyAgUmVtb3Zpbmcgd29yayBkaXJlY3RvcnknLCBzZWxmLndvcmtfZGlyKQotICAgICAgICAg
ICAgc2h1dGlsLnJtdHJlZShzZWxmLndvcmtfZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCi0gICAg
ICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNlbGYud29ya19kaXIpOgotICAgICAgICAgICAgb3Mu
bWFrZWRpcnMoc2VsZi53b3JrX2RpcikKLQotZGVmIGZpeF9lb2woc3Rkb3V0KToKLSAgICAiIiJG
aXhlcyB3cm9uZyBFT0wgcHJvZHVjZWQgYnkgY21ha2UgLS1idWlsZCBvbiBXaW5kb3dzIChcclxy
XG4gaW5zdGVhZCBvZiBcclxuKS4KLSAgICAiIiIKLSAgICByZXR1cm4gcmUuc3ViKCdccipcbics
IG9zLmxpbmVzZXAsIHN0ZG91dCkKLQotZGVmIGxvYWRfYnVpbGRfdmFyaWFudHNfZnJvbV9jb25m
aWcoY29uZmlnX3BhdGgpOgotICAgIHdpdGggb3Blbihjb25maWdfcGF0aCwgJ3JiJykgYXMgZmNv
bmZpZzoKLSAgICAgICAgZGF0YSA9IGpzb24ubG9hZChmY29uZmlnKQotICAgIHZhcmlhbnRzID0g
ZGF0YVsgJ2NtYWtlX3ZhcmlhbnRzJyBdCi0gICAgYnVpbGRfZGVzY3NfYnlfYXhpcyA9IGNvbGxl
Y3Rpb25zLmRlZmF1bHRkaWN0KGxpc3QpCi0gICAgZm9yIGF4aXMgaW4gdmFyaWFudHM6Ci0gICAg
ICAgIGF4aXNfbmFtZSA9IGF4aXNbIm5hbWUiXQotICAgICAgICBidWlsZF9kZXNjcyA9IFtdCi0g
ICAgICAgIGlmICJnZW5lcmF0b3JzIiBpbiBheGlzOgotICAgICAgICAgICAgZm9yIGdlbmVyYXRv
cl9kYXRhIGluIGF4aXNbImdlbmVyYXRvcnMiXToKLSAgICAgICAgICAgICAgICBmb3IgZ2VuZXJh
dG9yIGluIGdlbmVyYXRvcl9kYXRhWyJnZW5lcmF0b3IiXToKLSAgICAgICAgICAgICAgICAgICAg
YnVpbGRfZGVzYyA9IEJ1aWxkRGVzYyhnZW5lcmF0b3I9Z2VuZXJhdG9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwZW5kX2VudnM9Z2VuZXJhdG9yX2Rh
dGEuZ2V0KCJlbnZfcHJlcGVuZCIpKQotICAgICAgICAgICAgICAgICAgICBidWlsZF9kZXNjcy5h
cHBlbmQoYnVpbGRfZGVzYykKLSAgICAgICAgZWxpZiAidmFyaWFibGVzIiBpbiBheGlzOgotICAg
ICAgICAgICAgZm9yIHZhcmlhYmxlcyBpbiBheGlzWyJ2YXJpYWJsZXMiXToKLSAgICAgICAgICAg
ICAgICBidWlsZF9kZXNjID0gQnVpbGREZXNjKHZhcmlhYmxlcz12YXJpYWJsZXMpCi0gICAgICAg
ICAgICAgICAgYnVpbGRfZGVzY3MuYXBwZW5kKGJ1aWxkX2Rlc2MpCi0gICAgICAgIGVsaWYgImJ1
aWxkX3R5cGVzIiBpbiBheGlzOgotICAgICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYXhpc1si
YnVpbGRfdHlwZXMiXToKLSAgICAgICAgICAgICAgICBidWlsZF9kZXNjID0gQnVpbGREZXNjKGJ1
aWxkX3R5cGU9YnVpbGRfdHlwZSkKLSAgICAgICAgICAgICAgICBidWlsZF9kZXNjcy5hcHBlbmQo
YnVpbGRfZGVzYykKLSAgICAgICAgYnVpbGRfZGVzY3NfYnlfYXhpc1theGlzX25hbWVdLmV4dGVu
ZChidWlsZF9kZXNjcykKLSAgICByZXR1cm4gYnVpbGRfZGVzY3NfYnlfYXhpcwotCi1kZWYgZ2Vu
ZXJhdGVfYnVpbGRfdmFyaWFudHMoYnVpbGRfZGVzY3NfYnlfYXhpcyk6Ci0gICAgIiIiUmV0dXJu
cyBhIGxpc3Qgb2YgQnVpbGREZXNjIGdlbmVyYXRlZCBmb3IgdGhlIHBhcnRpYWwgQnVpbGREZXNj
IGZvciBlYWNoIGF4aXMuIiIiCi0gICAgYXhpc19uYW1lcyA9IGxpc3QoYnVpbGRfZGVzY3NfYnlf
YXhpcy5rZXlzKCkpCi0gICAgYnVpbGRfZGVzY3MgPSBbXQotICAgIGZvciBheGlzX25hbWUsIGF4
aXNfYnVpbGRfZGVzY3MgaW4gbGlzdChidWlsZF9kZXNjc19ieV9heGlzLml0ZW1zKCkpOgotICAg
ICAgICBpZiBsZW4oYnVpbGRfZGVzY3MpOgotICAgICAgICAgICAgIyBmb3IgZWFjaCBleGlzdGlu
ZyBidWlsZF9kZXNjIGFuZCBlYWNoIGF4aXMgYnVpbGQgZGVzYywgY3JlYXRlIGEgbmV3IGJ1aWxk
X2Rlc2MKLSAgICAgICAgICAgIG5ld19idWlsZF9kZXNjcyA9IFtdCi0gICAgICAgICAgICBmb3Ig
cHJvdG90eXBlX2J1aWxkX2Rlc2MsIGF4aXNfYnVpbGRfZGVzYyBpbiBpdGVydG9vbHMucHJvZHVj
dChidWlsZF9kZXNjcywgYXhpc19idWlsZF9kZXNjcyk6Ci0gICAgICAgICAgICAgICAgbmV3X2J1
aWxkX2Rlc2NzLmFwcGVuZChwcm90b3R5cGVfYnVpbGRfZGVzYy5tZXJnZWRfd2l0aChheGlzX2J1
aWxkX2Rlc2MpKQotICAgICAgICAgICAgYnVpbGRfZGVzY3MgPSBuZXdfYnVpbGRfZGVzY3MKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1aWxkX2Rlc2NzID0gYXhpc19idWlsZF9kZXNjcwot
ICAgIHJldHVybiBidWlsZF9kZXNjcwotCi1IVE1MX1RFTVBMQVRFID0gc3RyaW5nLlRlbXBsYXRl
KCcnJzxodG1sPgotPGhlYWQ+Ci0gICAgPHRpdGxlPiR0aXRsZTwvdGl0bGU+Ci0gICAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KLSAgICB0ZC5mYWlsZWQge2JhY2tncm91bmQtY29sb3I6I2YwODA4
MDt9Ci0gICAgdGQub2sge2JhY2tncm91bmQtY29sb3I6I2MwZWVjMDt9Ci0gICAgPC9zdHlsZT4K
LTwvaGVhZD4KLTxib2R5PgotPHRhYmxlIGJvcmRlcj0iMSI+Ci08dGhlYWQ+Ci0gICAgPHRyPgot
ICAgICAgICA8dGg+VmFyaWFibGVzPC90aD4KLSAgICAgICAgJHRoX3ZhcnMKLSAgICA8L3RyPgot
ICAgIDx0cj4KLSAgICAgICAgPHRoPkJ1aWxkIHR5cGU8L3RoPgotICAgICAgICAkdGhfYnVpbGRf
dHlwZXMKLSAgICA8L3RyPgotPC90aGVhZD4KLTx0Ym9keT4KLSR0cl9idWlsZHMKLTwvdGJvZHk+
Ci08L3RhYmxlPgotPC9ib2R5PjwvaHRtbD4nJycpCi0KLWRlZiBnZW5lcmF0ZV9odG1sX3JlcG9y
dChodG1sX3JlcG9ydF9wYXRoLCBidWlsZHMpOgotICAgIHJlcG9ydF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUoaHRtbF9yZXBvcnRfcGF0aCkKLSAgICAjIFZlcnRpY2FsIGF4aXM6IGdlbmVyYXRvcgot
ICAgICMgSG9yaXpvbnRhbDogdmFyaWFibGVzLCB0aGVuIGJ1aWxkX3R5cGUKLSAgICBidWlsZHNf
YnlfZ2VuZXJhdG9yID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGlzdCkKLSAgICB2YXJpYWJs
ZXMgPSBzZXQoKQotICAgIGJ1aWxkX3R5cGVzX2J5X3ZhcmlhYmxlID0gY29sbGVjdGlvbnMuZGVm
YXVsdGRpY3Qoc2V0KQotICAgIGJ1aWxkX2J5X3Bvc19rZXkgPSB7fSAjIHsgKGdlbmVyYXRvciwg
dmFyX2tleSwgYnVpbGRfdHlwZSk6IGJ1aWxkIH0KLSAgICBmb3IgYnVpbGQgaW4gYnVpbGRzOgot
ICAgICAgICBidWlsZHNfYnlfZ2VuZXJhdG9yW2J1aWxkLmRlc2MuZ2VuZXJhdG9yXS5hcHBlbmQo
YnVpbGQpCi0gICAgICAgIHZhcl9rZXkgPSB0dXBsZShzb3J0ZWQoYnVpbGQuZGVzYy52YXJpYWJs
ZXMpKQotICAgICAgICB2YXJpYWJsZXMuYWRkKHZhcl9rZXkpCi0gICAgICAgIGJ1aWxkX3R5cGVz
X2J5X3ZhcmlhYmxlW3Zhcl9rZXldLmFkZChidWlsZC5kZXNjLmJ1aWxkX3R5cGUpCi0gICAgICAg
IHBvc19rZXkgPSAoYnVpbGQuZGVzYy5nZW5lcmF0b3IsIHZhcl9rZXksIGJ1aWxkLmRlc2MuYnVp
bGRfdHlwZSkKLSAgICAgICAgYnVpbGRfYnlfcG9zX2tleVtwb3Nfa2V5XSA9IGJ1aWxkCi0gICAg
dmFyaWFibGVzID0gc29ydGVkKHZhcmlhYmxlcykKLSAgICB0aF92YXJzID0gW10KLSAgICB0aF9i
dWlsZF90eXBlcyA9IFtdCi0gICAgZm9yIHZhcmlhYmxlIGluIHZhcmlhYmxlczoKLSAgICAgICAg
YnVpbGRfdHlwZXMgPSBzb3J0ZWQoYnVpbGRfdHlwZXNfYnlfdmFyaWFibGVbdmFyaWFibGVdKQot
ICAgICAgICBuYl9idWlsZF90eXBlID0gbGVuKGJ1aWxkX3R5cGVzX2J5X3ZhcmlhYmxlW3Zhcmlh
YmxlXSkKLSAgICAgICAgdGhfdmFycy5hcHBlbmQoJzx0aCBjb2xzcGFuPSIlZCI+JXM8L3RoPicg
JSAobmJfYnVpbGRfdHlwZSwgY2dpLmVzY2FwZSgnICcuam9pbih2YXJpYWJsZSkpKSkKLSAgICAg
ICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlwZXM6Ci0gICAgICAgICAgICB0aF9idWlsZF90
eXBlcy5hcHBlbmQoJzx0aD4lczwvdGg+JyAlIGNnaS5lc2NhcGUoYnVpbGRfdHlwZSkpCi0gICAg
dHJfYnVpbGRzID0gW10KLSAgICBmb3IgZ2VuZXJhdG9yIGluIHNvcnRlZChidWlsZHNfYnlfZ2Vu
ZXJhdG9yKToKLSAgICAgICAgdGRzID0gWyAnPHRkPiVzPC90ZD5cbicgJSBjZ2kuZXNjYXBlKGdl
bmVyYXRvcikgXQotICAgICAgICBmb3IgdmFyaWFibGUgaW4gdmFyaWFibGVzOgotICAgICAgICAg
ICAgYnVpbGRfdHlwZXMgPSBzb3J0ZWQoYnVpbGRfdHlwZXNfYnlfdmFyaWFibGVbdmFyaWFibGVd
KQotICAgICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gYnVpbGRfdHlwZXM6Ci0gICAgICAgICAg
ICAgICAgcG9zX2tleSA9IChnZW5lcmF0b3IsIHZhcmlhYmxlLCBidWlsZF90eXBlKQotICAgICAg
ICAgICAgICAgIGJ1aWxkID0gYnVpbGRfYnlfcG9zX2tleS5nZXQocG9zX2tleSkKLSAgICAgICAg
ICAgICAgICBpZiBidWlsZDoKLSAgICAgICAgICAgICAgICAgICAgY21ha2Vfc3RhdHVzID0gJ29r
JyBpZiBidWlsZC5jbWFrZV9zdWNjZWVkZWQgZWxzZSAnRkFJTEVEJwotICAgICAgICAgICAgICAg
ICAgICBidWlsZF9zdGF0dXMgPSAnb2snIGlmIGJ1aWxkLmJ1aWxkX3N1Y2NlZWRlZCBlbHNlICdG
QUlMRUQnCi0gICAgICAgICAgICAgICAgICAgIGNtYWtlX2xvZ191cmwgPSBvcy5wYXRoLnJlbHBh
dGgoYnVpbGQuY21ha2VfbG9nX3BhdGgsIHJlcG9ydF9kaXIpCi0gICAgICAgICAgICAgICAgICAg
IGJ1aWxkX2xvZ191cmwgPSBvcy5wYXRoLnJlbHBhdGgoYnVpbGQuYnVpbGRfbG9nX3BhdGgsIHJl
cG9ydF9kaXIpCi0gICAgICAgICAgICAgICAgICAgIHRkID0gJzx0ZCBjbGFzcz0iJXMiPjxhIGhy
ZWY9IiVzIiBjbGFzcz0iJXMiPkNNYWtlOiAlczwvYT4nICUgKCAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkX3N0YXR1cy5sb3dlcigpLCBjbWFrZV9sb2dfdXJsLCBjbWFrZV9zdGF0dXMubG93
ZXIoKSwgY21ha2Vfc3RhdHVzKQotICAgICAgICAgICAgICAgICAgICBpZiBidWlsZC5jbWFrZV9z
dWNjZWVkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZCArPSAnPGJyPjxhIGhyZWY9IiVz
IiBjbGFzcz0iJXMiPkJ1aWxkOiAlczwvYT4nICUgKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZF9sb2dfdXJsLCBidWlsZF9zdGF0dXMubG93ZXIoKSwgYnVpbGRfc3RhdHVzKQotICAg
ICAgICAgICAgICAgICAgICB0ZCArPSAnPC90ZD4nCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgdGQgPSAnPHRkPjwvdGQ+JwotICAgICAgICAgICAgICAgIHRkcy5h
cHBlbmQodGQpCi0gICAgICAgIHRyX2J1aWxkcy5hcHBlbmQoJzx0cj4lczwvdHI+JyAlICdcbicu
am9pbih0ZHMpKQotICAgIGh0bWwgPSBIVE1MX1RFTVBMQVRFLnN1YnN0aXR1dGUoICAgICAgICB0
aXRsZT0nQmF0Y2ggYnVpbGQgcmVwb3J0JywKLSAgICAgICAgdGhfdmFycz0nICcuam9pbih0aF92
YXJzKSwKLSAgICAgICAgdGhfYnVpbGRfdHlwZXM9JyAnLmpvaW4odGhfYnVpbGRfdHlwZXMpLAot
ICAgICAgICB0cl9idWlsZHM9J1xuJy5qb2luKHRyX2J1aWxkcykpCi0gICAgd2l0aCBvcGVuKGh0
bWxfcmVwb3J0X3BhdGgsICd3dCcpIGFzIGZodG1sOgotICAgICAgICBmaHRtbC53cml0ZShodG1s
KQotICAgIHByaW50KCdIVE1MIHJlcG9ydCBnZW5lcmF0ZWQgaW46JywgaHRtbF9yZXBvcnRfcGF0
aCkKLQotZGVmIG1haW4oKToKLSAgICB1c2FnZSA9IHIiIiIlcHJvZyBXT1JLX0RJUiBTT1VSQ0Vf
RElSIENPTkZJR19KU09OX1BBVEggW0NPTkZJRzJfSlNPTl9QQVRILi4uXQotQnVpbGQgYSBnaXZl
biBDTWFrZSBiYXNlZCBwcm9qZWN0IGxvY2F0ZWQgaW4gU09VUkNFX0RJUiB3aXRoIG11bHRpcGxl
IGdlbmVyYXRvcnMvb3B0aW9ucy5kcnlfcnVuCi1hcyBkZXNjcmliZWQgaW4gQ09ORklHX0pTT05f
UEFUSCBidWlsZGluZyBpbiBXT1JLX0RJUi4KLQotRXhhbXBsZSBvZiBjYWxsOgotcHl0aG9uIGRl
dnRvb2xzXGJhdGNoYnVpbGQucHkgZTpcYnVpbGRib3RzXGpzb25jcHBcYnVpbGQgLiBkZXZ0b29s
c1xhZ2VudF92bXc3Lmpzb24KLSIiIgotICAgIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBh
cnNlcgotICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLSAgICBwYXJzZXIu
YWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgPSBUcnVlCi0jICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
dicsICctLXZlcmJvc2UnLCBkZXN0PSJ2ZXJib3NlIiwgYWN0aW9uPSdzdG9yZV90cnVlJywKLSMg
ICAgICAgIGhlbHA9IiIiQmUgdmVyYm9zZS4iIiIpCi0gICAgcGFyc2VyLmVuYWJsZV9pbnRlcnNw
ZXJzZWRfYXJncygpCi0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAg
ICBpZiBsZW4oYXJncykgPCAzOgotICAgICAgICBwYXJzZXIuZXJyb3IoIk1pc3Npbmcgb25lIG9m
IFdPUktfRElSIFNPVVJDRV9ESVIgQ09ORklHX0pTT05fUEFUSC4iKQotICAgIHdvcmtfZGlyID0g
YXJnc1swXQotICAgIHNvdXJjZV9kaXIgPSBhcmdzWzFdLnJzdHJpcCgnL1xcJykKLSAgICBjb25m
aWdfcGF0aHMgPSBhcmdzWzI6XQotICAgIGZvciBjb25maWdfcGF0aCBpbiBjb25maWdfcGF0aHM6
Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWdfcGF0aCk6Ci0gICAgICAgICAg
ICBwYXJzZXIuZXJyb3IoIkNhbiBub3QgcmVhZDogJXIiICUgY29uZmlnX3BhdGgpCi0KLSAgICAj
IGdlbmVyYXRlIGJ1aWxkIHZhcmlhbnRzCi0gICAgYnVpbGRfZGVzY3MgPSBbXQotICAgIGZvciBj
b25maWdfcGF0aCBpbiBjb25maWdfcGF0aHM6Ci0gICAgICAgIGJ1aWxkX2Rlc2NzX2J5X2F4aXMg
PSBsb2FkX2J1aWxkX3ZhcmlhbnRzX2Zyb21fY29uZmlnKGNvbmZpZ19wYXRoKQotICAgICAgICBi
dWlsZF9kZXNjcy5leHRlbmQoZ2VuZXJhdGVfYnVpbGRfdmFyaWFudHMoYnVpbGRfZGVzY3NfYnlf
YXhpcykpCi0gICAgcHJpbnQoJ0J1aWxkIHZhcmlhbnRzICglZCk6JyAlIGxlbihidWlsZF9kZXNj
cykpCi0gICAgIyBhc3NpZ24gYnVpbGQgZGlyZWN0b3J5IGZvciBlYWNoIHZhcmlhbnQKLSAgICBp
ZiBub3Qgb3MucGF0aC5pc2Rpcih3b3JrX2Rpcik6Ci0gICAgICAgIG9zLm1ha2VkaXJzKHdvcmtf
ZGlyKQotICAgIGJ1aWxkcyA9IFtdCi0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih3b3JrX2Rp
ciwgJ21hdHJpeC1kaXItbWFwLnR4dCcpLCAnd3QnKSBhcyBmbWF0cml4bWFwOgotICAgICAgICBm
b3IgaW5kZXgsIGJ1aWxkX2Rlc2MgaW4gZW51bWVyYXRlKGJ1aWxkX2Rlc2NzKToKLSAgICAgICAg
ICAgIGJ1aWxkX2Rlc2Nfd29ya19kaXIgPSBvcy5wYXRoLmpvaW4od29ya19kaXIsICclMDNkJyAl
IChpbmRleCsxKSkKLSAgICAgICAgICAgIGJ1aWxkcy5hcHBlbmQoQnVpbGREYXRhKGJ1aWxkX2Rl
c2MsIGJ1aWxkX2Rlc2Nfd29ya19kaXIsIHNvdXJjZV9kaXIpKQotICAgICAgICAgICAgZm1hdHJp
eG1hcC53cml0ZSgnJXM6ICVzXG4nICUgKGJ1aWxkX2Rlc2Nfd29ya19kaXIsIGJ1aWxkX2Rlc2Mp
KQotICAgIGZvciBidWlsZCBpbiBidWlsZHM6Ci0gICAgICAgIGJ1aWxkLmV4ZWN1dGVfYnVpbGQo
KQotICAgIGh0bWxfcmVwb3J0X3BhdGggPSBvcy5wYXRoLmpvaW4od29ya19kaXIsICdiYXRjaGJ1
aWxkLXJlcG9ydC5odG1sJykKLSAgICBnZW5lcmF0ZV9odG1sX3JlcG9ydChodG1sX3JlcG9ydF9w
YXRoLCBidWlsZHMpCi0gICAgcHJpbnQoJ0RvbmUnKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gICAgbWFpbigpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvZml4ZW9sLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9kZXZ0b29scy9maXhlb2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ1MjUyYTA3ZDkyMy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZGV2dG9vbHMvZml4ZW9sLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMCBCYXB0aXN0
ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLSMgRGlzdHJpYnV0ZWQgdW5kZXIg
TUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLSMgcmVjb2duaXpl
ZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLSMgU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9y
IGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBz
eXMKLQotZGVmIGZpeF9zb3VyY2VfZW9sKHBhdGgsIGlzX2RyeV9ydW4gPSBUcnVlLCB2ZXJib3Nl
ID0gVHJ1ZSwgZW9sID0gJ1xuJyk6Ci0gICAgIiIiTWFrZXMgc3VyZSB0aGF0IGFsbCBzb3VyY2Vz
IGhhdmUgdGhlIHNwZWNpZmllZCBlb2wgc2VxdWVuY2UgKGRlZmF1bHQ6IHVuaXgpLiIiIgotICAg
IGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
UGF0aCAiJXMiIGlzIG5vdCBhIGZpbGUnICUgcGF0aCkKLSAgICB0cnk6Ci0gICAgICAgIGYgPSBv
cGVuKHBhdGgsICdyYicpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgbXNnOgotICAgICAgICBwcmlu
dCgiJXM6IEkvTyBFcnJvcjogJXMiICUgKGZpbGUsIHN0cihtc2cpKSwgZmlsZT1zeXMuc3RkZXJy
KQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAgIHJhd19saW5lcyA9IGYu
cmVhZGxpbmVzKCkKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKLSAgICBmaXhlZF9s
aW5lcyA9IFtsaW5lLnJzdHJpcCgnXHJcbicpICsgZW9sIGZvciBsaW5lIGluIHJhd19saW5lc10K
LSAgICBpZiByYXdfbGluZXMgIT0gZml4ZWRfbGluZXM6Ci0gICAgICAgIHByaW50KCclcyA9Picg
JSBwYXRoLCBlbmQ9JyAnKQotICAgICAgICBpZiBub3QgaXNfZHJ5X3J1bjoKLSAgICAgICAgICAg
IGYgPSBvcGVuKHBhdGgsICJ3YiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
Zi53cml0ZWxpbmVzKGZpeGVkX2xpbmVzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50
KGlzX2RyeV9ydW4gYW5kICcgTkVFRCBGSVgnIG9yICcgRklYRUQnKQotICAgIHJldHVybiBUcnVl
Ci0jIyAgICAKLSMjICAgIAotIyMKLSMjZGVmIF9kb19maXgoaXNfZHJ5X3J1biA9IFRydWUpOgot
IyMgICAgZnJvbSB3YWZ0b29scyBpbXBvcnQgYW50Z2xvYgotIyMgICAgcHl0aG9uX3NvdXJjZXMg
PSBhbnRnbG9iLmdsb2IoJy4nLAotIyMgICAgICAgIGluY2x1ZGVzID0gJyoqLyoucHkgKiovd3Nj
cmlwdCAqKi93c2NyaXB0X2J1aWxkJywKLSMjICAgICAgICBleGNsdWRlcyA9IGFudGdsb2IuZGVm
YXVsdF9leGNsdWRlcyArICcuL3dhZi5weScsCi0jIyAgICAgICAgcHJ1bmVfZGlycyA9IGFudGds
b2IucHJ1bmVfZGlycyArICd3YWYtKiAuL2J1aWxkJykKLSMjICAgIGZvciBwYXRoIGluIHB5dGhv
bl9zb3VyY2VzOgotIyMgICAgICAgIF9maXhfcHl0aG9uX3NvdXJjZShwYXRoLCBpc19kcnlfcnVu
KQotIyMKLSMjICAgIGNwcF9zb3VyY2VzID0gYW50Z2xvYi5nbG9iKCcuJywKLSMjICAgICAgICBp
bmNsdWRlcyA9ICcqKi8qLmNwcCAqKi8qLmggKiovKi5pbmwnLAotIyMgICAgICAgIHBydW5lX2Rp
cnMgPSBhbnRnbG9iLnBydW5lX2RpcnMgKyAnd2FmLSogLi9idWlsZCcpCi0jIyAgICBmb3IgcGF0
aCBpbiBjcHBfc291cmNlczoKLSMjICAgICAgICBfZml4X3NvdXJjZV9lb2wocGF0aCwgaXNfZHJ5
X3J1bikKLSMjCi0jIwotIyNkZWYgZHJ5X2ZpeChjb250ZXh0KToKLSMjICAgIF9kb19maXgoaXNf
ZHJ5X3J1biA9IFRydWUpCi0jIwotIyNkZWYgZml4KGNvbnRleHQpOgotIyMgICAgX2RvX2ZpeChp
c19kcnlfcnVuID0gRmFsc2UpCi0jIwotIyNkZWYgc2h1dGRvd24oKToKLSMjICAgIHBhc3MKLSMj
Ci0jI2RlZiBjaGVjayhjb250ZXh0KToKLSMjICAgICMgVW5pdCB0ZXN0cyBhcmUgcnVuIHdoZW4g
ImNoZWNrIiB0YXJnZXQgaXMgdXNlZAotIyMgICAgdXQgPSBVbml0VGVzdC51bml0X3Rlc3QoKQot
IyMgICAgdXQuY2hhbmdlX3RvX3Rlc3RmaWxlX2RpciA9IFRydWUKLSMjICAgIHV0LndhbnRfdG9f
c2VlX3Rlc3Rfb3V0cHV0ID0gVHJ1ZQotIyMgICAgdXQud2FudF90b19zZWVfdGVzdF9lcnJvciA9
IFRydWUKLSMjICAgIHV0LnJ1bigpCi0jIyAgICB1dC5wcmludF9yZXN1bHRzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvZGV2dG9vbHMvbGljZW5zZXVwZGF0ZXIucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2xpY2Vu
c2V1cGRhdGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmJkYjVjMDliNjEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL2xpY2Vuc2V1cGRhdGVyLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotIiIiVXBkYXRlcyB0aGUgbGljZW5zZSB0ZXh0IGlu
IHNvdXJjZSBmaWxlLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u
Ci0KLSMgQW4gZXhpc3RpbmcgbGljZW5zZSBpcyBmb3VuZCBpZiB0aGUgZmlsZSBzdGFydHMgd2l0
aCB0aGUgc3RyaW5nIGJlbG93LAotIyBhbmQgZW5kcyB3aXRoIHRoZSBmaXJzdCBibGFuayBsaW5l
LgotTElDRU5TRV9CRUdJTiA9ICIvLyBDb3B5cmlnaHQgIgotCi1CUklFRl9MSUNFTlNFID0gTElD
RU5TRV9CRUdJTiArICIiIjIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29u
Q3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMg
ZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9u
LgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25j
cHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotIiIiLnJlcGxhY2UoJ1xyXG4nLCdcbicpCi0K
LWRlZiB1cGRhdGVfbGljZW5zZShwYXRoLCBkcnlfcnVuLCBzaG93X2RpZmYpOgotICAgICIiIlVw
ZGF0ZSB0aGUgbGljZW5zZSBzdGF0ZW1lbnQgaW4gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIFBh
cmFtZXRlcnM6Ci0gICAgICBwYXRoOiBwYXRoIG9mIHRoZSBDKysgc291cmNlIGZpbGUgdG8gdXBk
YXRlLgotICAgICAgZHJ5X3J1bjogaWYgVHJ1ZSwganVzdCBwcmludCB0aGUgcGF0aCBvZiB0aGUg
ZmlsZSB0aGF0IHdvdWxkIGJlIHVwZGF0ZWQsCi0gICAgICAgICAgICAgICBidXQgZG9uJ3QgY2hh
bmdlIGl0LgotICAgICAgc2hvd19kaWZmOiBpZiBUcnVlLCBwcmludCB0aGUgcGF0aCBvZiB0aGUg
ZmlsZSB0aGF0IHdvdWxkIGJlIG1vZGlmaWVkLAotICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFz
IHRoZSBjaGFuZ2UgbWFkZSB0byB0aGUgZmlsZS4gCi0gICAgIiIiCi0gICAgd2l0aCBvcGVuKHBh
dGgsICdydCcpIGFzIGZpbjoKLSAgICAgICAgb3JpZ2luYWxfdGV4dCA9IGZpbi5yZWFkKCkucmVw
bGFjZSgnXHJcbicsJ1xuJykKLSAgICAgICAgbmV3bGluZSA9IGZpbi5uZXdsaW5lcyBhbmQgZmlu
Lm5ld2xpbmVzWzBdIG9yICdcbicKLSAgICBpZiBub3Qgb3JpZ2luYWxfdGV4dC5zdGFydHN3aXRo
KExJQ0VOU0VfQkVHSU4pOgotICAgICAgICAjIE5vIGV4aXN0aW5nIGxpY2Vuc2UgZm91bmQgPT4g
cHJlcGVuZCBpdAotICAgICAgICBuZXdfdGV4dCA9IEJSSUVGX0xJQ0VOU0UgKyBvcmlnaW5hbF90
ZXh0Ci0gICAgZWxzZToKLSAgICAgICAgbGljZW5zZV9lbmRfaW5kZXggPSBvcmlnaW5hbF90ZXh0
LmluZGV4KCdcblxuJykgIyBzZWFyY2ggZmlyc3QgYmxhbmsgbGluZQotICAgICAgICBuZXdfdGV4
dCA9IEJSSUVGX0xJQ0VOU0UgKyBvcmlnaW5hbF90ZXh0W2xpY2Vuc2VfZW5kX2luZGV4KzI6XQot
ICAgIGlmIG9yaWdpbmFsX3RleHQgIT0gbmV3X3RleHQ6Ci0gICAgICAgIGlmIG5vdCBkcnlfcnVu
OgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3YicpIGFzIGZvdXQ6Ci0gICAgICAgICAg
ICAgICAgZm91dC53cml0ZShuZXdfdGV4dC5yZXBsYWNlKCdcbicsIG5ld2xpbmUpKQotICAgICAg
ICBwcmludCgnVXBkYXRlZCcsIHBhdGgpCi0gICAgICAgIGlmIHNob3dfZGlmZjoKLSAgICAgICAg
ICAgIGltcG9ydCBkaWZmbGliCi0gICAgICAgICAgICBwcmludCgnXG4nLmpvaW4oZGlmZmxpYi51
bmlmaWVkX2RpZmYob3JpZ2luYWxfdGV4dC5zcGxpdCgnXG4nKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld190ZXh0LnNwbGl0KCdcbicpKSkp
Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiB1cGRhdGVfbGlj
ZW5zZV9pbl9zb3VyY2VfZGlyZWN0b3JpZXMoc291cmNlX2RpcnMsIGRyeV9ydW4sIHNob3dfZGlm
Zik6Ci0gICAgIiIiVXBkYXRlcyBsaWNlbnNlIHRleHQgaW4gQysrIHNvdXJjZSBmaWxlcyBmb3Vu
ZCBpbiBkaXJlY3Rvcnkgc291cmNlX2RpcnMuCi0gICAgUGFyYW1ldGVyczoKLSAgICAgIHNvdXJj
ZV9kaXJzOiBsaXN0IG9mIGRpcmVjdG9yeSB0byBzY2FuIGZvciBDKysgc291cmNlcy4gRGlyZWN0
b3JpZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgc2Nhbm5lZCByZWN1cnNpdmVseS4KLSAgICAg
IGRyeV9ydW46IGlmIFRydWUsIGp1c3QgcHJpbnQgdGhlIHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3
b3VsZCBiZSB1cGRhdGVkLAotICAgICAgICAgICAgICAgYnV0IGRvbid0IGNoYW5nZSBpdC4KLSAg
ICAgIHNob3dfZGlmZjogaWYgVHJ1ZSwgcHJpbnQgdGhlIHBhdGggb2YgdGhlIGZpbGUgdGhhdCB3
b3VsZCBiZSBtb2RpZmllZCwKLSAgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyB0aGUgY2hhbmdl
IG1hZGUgdG8gdGhlIGZpbGUuIAotICAgICIiIgotICAgIGZyb20gZGV2dG9vbHMgaW1wb3J0IGFu
dGdsb2IKLSAgICBwcnVuZV9kaXJzID0gYW50Z2xvYi5wcnVuZV9kaXJzICsgJ3Njb25zLWxvY2Fs
KiAuL2J1aWxkKiAuL2xpYnMgLi9kaXN0JwotICAgIGZvciBzb3VyY2VfZGlyIGluIHNvdXJjZV9k
aXJzOgotICAgICAgICBjcHBfc291cmNlcyA9IGFudGdsb2IuZ2xvYihzb3VyY2VfZGlyLAotICAg
ICAgICAgICAgaW5jbHVkZXMgPSAnJycqKi8qLmggKiovKi5jcHAgKiovKi5pbmwnJycsCi0gICAg
ICAgICAgICBwcnVuZV9kaXJzID0gcHJ1bmVfZGlycykKLSAgICAgICAgZm9yIHNvdXJjZSBpbiBj
cHBfc291cmNlczoKLSAgICAgICAgICAgIHVwZGF0ZV9saWNlbnNlKHNvdXJjZSwgZHJ5X3J1biwg
c2hvd19kaWZmKQotCi1kZWYgbWFpbigpOgotICAgIHVzYWdlID0gIiIiJXByb2cgRElSIFtESVIy
Li4uXQotVXBkYXRlcyBsaWNlbnNlIHRleHQgaW4gc291cmNlcyBvZiB0aGUgcHJvamVjdCBpbiBz
b3VyY2UgZmlsZXMgZm91bmQKLWluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIG9uIHRoZSBjb21t
YW5kLWxpbmUuCi0KLUV4YW1wbGUgb2YgY2FsbDoKLXB5dGhvbiBkZXZ0b29sc1xsaWNlbnNldXBk
YXRlci5weSBpbmNsdWRlIHNyYyAtbiAtLWRpZmYKLT0+IFNob3cgY2hhbmdlIHRoYXQgd291bGQg
YmUgbWFkZSB0byB0aGUgc291cmNlcy4KLQotcHl0aG9uIGRldnRvb2xzXGxpY2Vuc2V1cGRhdGVy
LnB5IGluY2x1ZGUgc3JjCi09PiBVcGRhdGUgbGljZW5zZSBzdGF0ZW1lbnQgb24gYWxsIHNvdXJj
ZXMgaW4gZGlyZWN0b3JpZXMgaW5jbHVkZS8gYW5kIHNyYy8uCi0iIiIKLSAgICBmcm9tIG9wdHBh
cnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9
dXNhZ2UpCi0gICAgcGFyc2VyLmFsbG93X2ludGVyc3BlcnNlZF9hcmdzID0gRmFsc2UKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLW4nLCAnLS1kcnktcnVuJywgZGVzdD0iZHJ5X3J1biIsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9IiIiT25seSBzaG93
IHdoYXQgZmlsZXMgYXJlIHVwZGF0ZWQsIGRvIG5vdCB1cGRhdGUgdGhlIGZpbGVzIiIiKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLWRpZmYnLCBkZXN0PSJzaG93X2RpZmYiLCBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIk9uIHVwZGF0ZSwgc2hv
dyBjaGFuZ2UgbWFkZSB0byB0aGUgZmlsZS4iIiIpCi0gICAgcGFyc2VyLmVuYWJsZV9pbnRlcnNw
ZXJzZWRfYXJncygpCi0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAg
ICB1cGRhdGVfbGljZW5zZV9pbl9zb3VyY2VfZGlyZWN0b3JpZXMoYXJncywgb3B0aW9ucy5kcnlf
cnVuLCBvcHRpb25zLnNob3dfZGlmZikKLSAgICBwcmludCgnRG9uZScpCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHN5cwotICAgIGltcG9ydCBvcy5wYXRoCi0gICAg
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0
aC5hYnNwYXRoKF9fZmlsZV9fKSkpKQotICAgIG1haW4oKQotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rl
dnRvb2xzL3RhcmJhbGwucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RldnRvb2xzL3RhcmJhbGwucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNjMGJhNjVlNzExYy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
ZGV2dG9vbHMvdGFyYmFsbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLSMgQ29w
eXJpZ2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0j
IERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2ly
ZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxlIExJ
Q0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5l
dC9MSUNFTlNFCi0KLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwotaW1wb3J0IG9zCi1p
bXBvcnQgdGFyZmlsZQotCi1UQVJHWl9ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMID0gOQotCi1k
ZWYgbWFrZV90YXJiYWxsKHRhcmJhbGxfcGF0aCwgc291cmNlcywgYmFzZV9kaXIsIHByZWZpeF9k
aXI9JycpOgotICAgICIiIlBhcmFtZXRlcnM6Ci0gICAgdGFyYmFsbF9wYXRoOiBvdXRwdXQgcGF0
aCBvZiB0aGUgLnRhci5neiBmaWxlCi0gICAgc291cmNlczogbGlzdCBvZiBzb3VyY2VzIHRvIGlu
Y2x1ZGUgaW4gdGhlIHRhcmJhbGwsIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeQot
ICAgIGJhc2VfZGlyOiBpZiBhIHNvdXJjZSBmaWxlIGlzIGluIGEgc3ViLWRpcmVjdG9yeSBvZiBi
YXNlX2RpciwgdGhlbiBiYXNlX2RpciBpcyBzdHJpcHBlZAotICAgICAgICBmcm9tIHBhdGggaW4g
dGhlIHRhcmJhbGwuCi0gICAgcHJlZml4X2RpcjogYWxsIGZpbGVzIHN0b3JlZCBpbiB0aGUgdGFy
YmFsbCBiZSBzdWItZGlyZWN0b3J5IG9mIHByZWZpeF9kaXIuIFNldCB0byAnJwotICAgICAgICB0
byBtYWtlIHRoZW0gY2hpbGQgb2Ygcm9vdC4KLSAgICAiIiIKLSAgICBiYXNlX2RpciA9IG9zLnBh
dGgubm9ybXBhdGgob3MucGF0aC5hYnNwYXRoKGJhc2VfZGlyKSkKLSAgICBkZWYgYXJjaGl2ZV9u
YW1lKHBhdGgpOgotICAgICAgICAiIiJNYWtlcyBwYXRoIHJlbGF0aXZlIHRvIGJhc2VfZGlyLiIi
IgotICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgocGF0aCkp
Ci0gICAgICAgIGNvbW1vbl9wYXRoID0gb3MucGF0aC5jb21tb25wcmVmaXgoKGJhc2VfZGlyLCBw
YXRoKSkKLSAgICAgICAgYXJjaGl2ZV9uYW1lID0gcGF0aFtsZW4oY29tbW9uX3BhdGgpOl0KLSAg
ICAgICAgaWYgb3MucGF0aC5pc2FicyhhcmNoaXZlX25hbWUpOgotICAgICAgICAgICAgYXJjaGl2
ZV9uYW1lID0gYXJjaGl2ZV9uYW1lWzE6XQotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHBy
ZWZpeF9kaXIsIGFyY2hpdmVfbmFtZSkKLSAgICBkZWYgdmlzaXQodGFyLCBkaXJuYW1lLCBuYW1l
cyk6Ci0gICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBh
dGguam9pbihkaXJuYW1lLCBuYW1lKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0
aCk6Ci0gICAgICAgICAgICAgICAgcGF0aF9pbl90YXIgPSBhcmNoaXZlX25hbWUocGF0aCkKLSAg
ICAgICAgICAgICAgICB0YXIuYWRkKHBhdGgsIHBhdGhfaW5fdGFyKQotICAgIGNvbXByZXNzaW9u
ID0gVEFSR1pfREVGQVVMVF9DT01QUkVTU0lPTl9MRVZFTAotICAgIHdpdGggY2xvc2luZyh0YXJm
aWxlLlRhckZpbGUub3Blbih0YXJiYWxsX3BhdGgsICd3Omd6JywKLSAgICAgICAgICAgIGNvbXBy
ZXNzbGV2ZWw9Y29tcHJlc3Npb24pKSBhcyB0YXI6Ci0gICAgICAgIGZvciBzb3VyY2UgaW4gc291
cmNlczoKLSAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlCi0gICAgICAgICAgICBpZiBv
cy5wYXRoLmlzZGlyKHNvdXJjZSk6Ci0gICAgICAgICAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5h
bWVzLCBmaWxlbmFtZXMgaW4gb3Mud2Fsayhzb3VyY2VfcGF0aCk6Ci0gICAgICAgICAgICAgICAg
ICAgIHZpc2l0KHRhciwgZGlycGF0aCwgZmlsZW5hbWVzKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBwYXRoX2luX3RhciA9IGFyY2hpdmVfbmFtZShzb3VyY2VfcGF0aCkKLSAg
ICAgICAgICAgICAgICB0YXIuYWRkKHNvdXJjZV9wYXRoLCBwYXRoX2luX3RhcikgICAgICAjIGZp
bGVuYW1lLCBhcmNuYW1lCi0KLWRlZiBkZWNvbXByZXNzKHRhcmJhbGxfcGF0aCwgYmFzZV9kaXIp
OgotICAgICIiIkRlY29tcHJlc3MgdGhlIGd6aXBwZWQgdGFyYmFsbCBpbnRvIGRpcmVjdG9yeSBi
YXNlX2Rpci4KLSAgICAiIiIKLSAgICB3aXRoIGNsb3NpbmcodGFyZmlsZS5UYXJGaWxlLm9wZW4o
dGFyYmFsbF9wYXRoKSkgYXMgdGFyOgotICAgICAgICB0YXIuZXh0cmFjdGFsbChiYXNlX2RpcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvZG9jL2RveHlmaWxlLmluIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvZG94eWZpbGUuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZjUxNGVhMzRkYy4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvZG9jL2RveHlmaWxlLmluCisrKyAvZGV2L251bGwKQEAgLTEsMjMwMiArMCww
IEBACi0jIERveHlmaWxlIDEuOC41Ci0KLSMgVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgc2V0dGlu
Z3MgdG8gYmUgdXNlZCBieSB0aGUgZG9jdW1lbnRhdGlvbiBzeXN0ZW0KLSMgZG94eWdlbiAod3d3
LmRveHlnZW4ub3JnKSBmb3IgYSBwcm9qZWN0LgotIwotIyBBbGwgdGV4dCBhZnRlciBhIGRvdWJs
ZSBoYXNoICgjIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIGlzIHBsYWNlZCBpbgotIyBm
cm9udCBvZiB0aGUgVEFHIGl0IGlzIHByZWNlZGluZy4KLSMKLSMgQWxsIHRleHQgYWZ0ZXIgYSBz
aW5nbGUgaGFzaCAoIykgaXMgY29uc2lkZXJlZCBhIGNvbW1lbnQgYW5kIHdpbGwgYmUgaWdub3Jl
ZC4KLSMgVGhlIGZvcm1hdCBpczoKLSMgVEFHID0gdmFsdWUgW3ZhbHVlLCAuLi5dCi0jIEZvciBs
aXN0cywgaXRlbXMgY2FuIGFsc28gYmUgYXBwZW5kZWQgdXNpbmc6Ci0jIFRBRyArPSB2YWx1ZSBb
dmFsdWUsIC4uLl0KLSMgVmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMgc2hvdWxkIGJlIHBsYWNl
ZCBiZXR3ZWVuIHF1b3RlcyAoXCIgXCIpLgotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFByb2pl
Y3QgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
IyBUaGlzIHRhZyBzcGVjaWZpZXMgdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCBjaGFyYWN0ZXJz
IGluIHRoZSBjb25maWcgZmlsZQotIyB0aGF0IGZvbGxvdy4gVGhlIGRlZmF1bHQgaXMgVVRGLTgg
d2hpY2ggaXMgYWxzbyB0aGUgZW5jb2RpbmcgdXNlZCBmb3IgYWxsIHRleHQKLSMgYmVmb3JlIHRo
ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoaXMgdGFnLiBEb3h5Z2VuIHVzZXMgbGliaWNvbnYgKG9y
IHRoZSBpY29udgotIyBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSBo
dHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYKLSMgZm9yIHRoZSBsaXN0IG9mIHBv
c3NpYmxlIGVuY29kaW5ncy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFVURi04LgotCi1ET1hZ
RklMRV9FTkNPRElORyAgICAgID0gVVRGLTgKLQotIyBUaGUgUFJPSkVDVF9OQU1FIHRhZyBpcyBh
IHNpbmdsZSB3b3JkIChvciBhIHNlcXVlbmNlIG9mIHdvcmRzIHN1cnJvdW5kZWQgYnkKLSMgZG91
YmxlLXF1b3RlcywgdW5sZXNzIHlvdSBhcmUgdXNpbmcgRG94eXdpemFyZCkgdGhhdCBzaG91bGQg
aWRlbnRpZnkgdGhlCi0jIHByb2plY3QgZm9yIHdoaWNoIHRoZSBkb2N1bWVudGF0aW9uIGlzIGdl
bmVyYXRlZC4gVGhpcyBuYW1lIGlzIHVzZWQgaW4gdGhlCi0jIHRpdGxlIG9mIG1vc3QgZ2VuZXJh
dGVkIHBhZ2VzIGFuZCBpbiBhIGZldyBvdGhlciBwbGFjZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBNeSBQcm9qZWN0LgotCi1QUk9KRUNUX05BTUUgICAgICAgICAgID0gIkpzb25DcHAiCi0K
LSMgVGhlIFBST0pFQ1RfTlVNQkVSIHRhZyBjYW4gYmUgdXNlZCB0byBlbnRlciBhIHByb2plY3Qg
b3IgcmV2aXNpb24gbnVtYmVyLiBUaGlzCi0jIGNvdWxkIGJlIGhhbmR5IGZvciBhcmNoaXZpbmcg
dGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9yIGlmIHNvbWUgdmVyc2lvbgotIyBjb250cm9s
IHN5c3RlbSBpcyB1c2VkLgotCi1QUk9KRUNUX05VTUJFUiAgICAgICAgID0gJUpTT05DUFBfVkVS
U0lPTiUKLQotIyBVc2luZyB0aGUgUFJPSkVDVF9CUklFRiB0YWcgb25lIGNhbiBwcm92aWRlIGFu
IG9wdGlvbmFsIG9uZSBsaW5lIGRlc2NyaXB0aW9uCi0jIGZvciBhIHByb2plY3QgdGhhdCBhcHBl
YXJzIGF0IHRoZSB0b3Agb2YgZWFjaCBwYWdlIGFuZCBzaG91bGQgZ2l2ZSB2aWV3ZXIgYQotIyBx
dWljayBpZGVhIGFib3V0IHRoZSBwdXJwb3NlIG9mIHRoZSBwcm9qZWN0LiBLZWVwIHRoZSBkZXNj
cmlwdGlvbiBzaG9ydC4KLQotUFJPSkVDVF9CUklFRiAgICAgICAgICA9Ci0KLSMgV2l0aCB0aGUg
UFJPSkVDVF9MT0dPIHRhZyBvbmUgY2FuIHNwZWNpZnkgYW4gbG9nbyBvciBpY29uIHRoYXQgaXMg
aW5jbHVkZWQgaW4KLSMgdGhlIGRvY3VtZW50YXRpb24uIFRoZSBtYXhpbXVtIGhlaWdodCBvZiB0
aGUgbG9nbyBzaG91bGQgbm90IGV4Y2VlZCA1NSBwaXhlbHMKLSMgYW5kIHRoZSBtYXhpbXVtIHdp
ZHRoIHNob3VsZCBub3QgZXhjZWVkIDIwMCBwaXhlbHMuIERveHlnZW4gd2lsbCBjb3B5IHRoZSBs
b2dvCi0jIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LgotCi1QUk9KRUNUX0xPR08gICAgICAgICAg
ID0KLQotIyBUaGUgT1VUUFVUX0RJUkVDVE9SWSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAo
cmVsYXRpdmUgb3IgYWJzb2x1dGUpIHBhdGgKLSMgaW50byB3aGljaCB0aGUgZ2VuZXJhdGVkIGRv
Y3VtZW50YXRpb24gd2lsbCBiZSB3cml0dGVuLiBJZiBhIHJlbGF0aXZlIHBhdGggaXMKLSMgZW50
ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gd2hlcmUgZG94eWdlbiB3
YXMgc3RhcnRlZC4gSWYKLSMgbGVmdCBibGFuayB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCBi
ZSB1c2VkLgotCi1PVVRQVVRfRElSRUNUT1JZICAgICAgID0gJURPQ19UT1BESVIlCi0KLSMgSWYg
dGhlIENSRUFURV9TVUJESVJTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBj
cmVhdGUgNDA5NiBzdWItCi0jIGRpcmVjdG9yaWVzIChpbiAyIGxldmVscykgdW5kZXIgdGhlIG91
dHB1dCBkaXJlY3Rvcnkgb2YgZWFjaCBvdXRwdXQgZm9ybWF0IGFuZAotIyB3aWxsIGRpc3RyaWJ1
dGUgdGhlIGdlbmVyYXRlZCBmaWxlcyBvdmVyIHRoZXNlIGRpcmVjdG9yaWVzLiBFbmFibGluZyB0
aGlzCi0jIG9wdGlvbiBjYW4gYmUgdXNlZnVsIHdoZW4gZmVlZGluZyBkb3h5Z2VuIGEgaHVnZSBh
bW91bnQgb2Ygc291cmNlIGZpbGVzLCB3aGVyZQotIyBwdXR0aW5nIGFsbCBnZW5lcmF0ZWQgZmls
ZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdvdWxkIG90aGVyd2lzZSBjYXVzZXMKLSMgcGVyZm9y
bWFuY2UgcHJvYmxlbXMgZm9yIHRoZSBmaWxlIHN5c3RlbS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1DUkVBVEVfU1VCRElSUyAgICAgICAgID0gTk8KLQotIyBUaGUgT1VUUFVUX0xB
TkdVQUdFIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGxhbmd1YWdlIGluIHdoaWNoIGFsbAot
IyBkb2N1bWVudGF0aW9uIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGlzIHdyaXR0ZW4uIERveHlnZW4g
d2lsbCB1c2UgdGhpcwotIyBpbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBhbGwgY29uc3RhbnQgb3V0
cHV0IGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2UuCi0jIFBvc3NpYmxlIHZhbHVlcyBhcmU6IEFmcmlr
YWFucywgQXJhYmljLCBCcmF6aWxpYW4sIENhdGFsYW4sIENoaW5lc2UsIENoaW5lc2UtCi0jIFRy
YWRpdGlvbmFsLCBDcm9hdGlhbiwgQ3plY2gsIERhbmlzaCwgRHV0Y2gsIEVuZ2xpc2gsIEVzcGVy
YW50bywgRmFyc2ksCi0jIEZpbm5pc2gsIEZyZW5jaCwgR2VybWFuLCBHcmVlaywgSHVuZ2FyaWFu
LCBJdGFsaWFuLCBKYXBhbmVzZSwgSmFwYW5lc2UtZW4sCi0jIEtvcmVhbiwgS29yZWFuLWVuLCBM
YXR2aWFuLCBOb3J3ZWdpYW4sIE1hY2Vkb25pYW4sIFBlcnNpYW4sIFBvbGlzaCwKLSMgUG9ydHVn
dWVzZSwgUm9tYW5pYW4sIFJ1c3NpYW4sIFNlcmJpYW4sIFNsb3ZhaywgU2xvdmVuZSwgU3Bhbmlz
aCwgU3dlZGlzaCwKLSMgVHVya2lzaCwgVWtyYWluaWFuIGFuZCBWaWV0bmFtZXNlLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogRW5nbGlzaC4KLQotT1VUUFVUX0xBTkdVQUdFICAgICAgICA9IEVu
Z2xpc2gKLQotIyBJZiB0aGUgQlJJRUZfTUVNQkVSX0RFU0MgdGFnIGlzIHNldCB0byBZRVMgZG94
eWdlbiB3aWxsIGluY2x1ZGUgYnJpZWYgbWVtYmVyCi0jIGRlc2NyaXB0aW9ucyBhZnRlciB0aGUg
bWVtYmVycyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIGZpbGUgYW5kIGNsYXNzCi0jIGRvY3VtZW50
YXRpb24gKHNpbWlsYXIgdG8gSmF2YWRvYykuIFNldCB0byBOTyB0byBkaXNhYmxlIHRoaXMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUJSSUVGX01FTUJFUl9ERVNDICAgICAgPSBZ
RVMKLQotIyBJZiB0aGUgUkVQRUFUX0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2ls
bCBwcmVwZW5kIHRoZSBicmllZgotIyBkZXNjcmlwdGlvbiBvZiBhIG1lbWJlciBvciBmdW5jdGlv
biBiZWZvcmUgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uCi0jCi0jIE5vdGU6IElmIGJvdGggSElE
RV9VTkRPQ19NRU1CRVJTIGFuZCBCUklFRl9NRU1CRVJfREVTQyBhcmUgc2V0IHRvIE5PLCB0aGUK
LSMgYnJpZWYgZGVzY3JpcHRpb25zIHdpbGwgYmUgY29tcGxldGVseSBzdXBwcmVzc2VkLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1SRVBFQVRfQlJJRUYgICAgICAgICAgID0gWUVT
Ci0KLSMgVGhpcyB0YWcgaW1wbGVtZW50cyBhIHF1YXNpLWludGVsbGlnZW50IGJyaWVmIGRlc2Ny
aXB0aW9uIGFiYnJldmlhdG9yIHRoYXQgaXMKLSMgdXNlZCB0byBmb3JtIHRoZSB0ZXh0IGluIHZh
cmlvdXMgbGlzdGluZ3MuIEVhY2ggc3RyaW5nIGluIHRoaXMgbGlzdCwgaWYgZm91bmQKLSMgYXMg
dGhlIGxlYWRpbmcgdGV4dCBvZiB0aGUgYnJpZWYgZGVzY3JpcHRpb24sIHdpbGwgYmUgc3RyaXBw
ZWQgZnJvbSB0aGUgdGV4dAotIyBhbmQgdGhlIHJlc3VsdCwgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUg
d2hvbGUgbGlzdCwgaXMgdXNlZCBhcyB0aGUgYW5ub3RhdGVkCi0jIHRleHQuIE90aGVyd2lzZSwg
dGhlIGJyaWVmIGRlc2NyaXB0aW9uIGlzIHVzZWQgYXMtaXMuIElmIGxlZnQgYmxhbmssIHRoZQot
IyBmb2xsb3dpbmcgdmFsdWVzIGFyZSB1c2VkICgkbmFtZSBpcyBhdXRvbWF0aWNhbGx5IHJlcGxh
Y2VkIHdpdGggdGhlIG5hbWUgb2YKLSMgdGhlIGVudGl0eSk6VGhlICRuYW1lIGNsYXNzLCBUaGUg
JG5hbWUgd2lkZ2V0LCBUaGUgJG5hbWUgZmlsZSwgaXMsIHByb3ZpZGVzLAotIyBzcGVjaWZpZXMs
IGNvbnRhaW5zLCByZXByZXNlbnRzLCBhLCBhbiBhbmQgdGhlLgotCi1BQkJSRVZJQVRFX0JSSUVG
ICAgICAgID0gIlRoZSAkbmFtZSBjbGFzcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICJU
aGUgJG5hbWUgd2lkZ2V0IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSAkbmFtZSBm
aWxlIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaXMgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3ZpZGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICByZXByZXNlbnRzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBhbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0KLSMg
SWYgdGhlIEFMV0FZU19ERVRBSUxFRF9TRUMgYW5kIFJFUEVBVF9CUklFRiB0YWdzIGFyZSBib3Ro
IHNldCB0byBZRVMgdGhlbgotIyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZXRhaWxlZCBzZWN0
aW9uIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBhIGJyaWVmCi0jIGRlc2NyaXB0aW9uLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUFMV0FZU19ERVRBSUxFRF9TRUMgICAgPSBOTwotCi0j
IElmIHRoZSBJTkxJTkVfSU5IRVJJVEVEX01FTUIgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4g
d2lsbCBzaG93IGFsbAotIyBpbmhlcml0ZWQgbWVtYmVycyBvZiBhIGNsYXNzIGluIHRoZSBkb2N1
bWVudGF0aW9uIG9mIHRoYXQgY2xhc3MgYXMgaWYgdGhvc2UKLSMgbWVtYmVycyB3ZXJlIG9yZGlu
YXJ5IGNsYXNzIG1lbWJlcnMuIENvbnN0cnVjdG9ycywgZGVzdHJ1Y3RvcnMgYW5kIGFzc2lnbm1l
bnQKLSMgb3BlcmF0b3JzIG9mIHRoZSBiYXNlIGNsYXNzZXMgd2lsbCBub3QgYmUgc2hvd24uCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSU5MSU5FX0lOSEVSSVRFRF9NRU1CICA9IE5P
Ci0KLSMgSWYgdGhlIEZVTExfUEFUSF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdp
bGwgcHJlcGVuZCB0aGUgZnVsbCBwYXRoCi0jIGJlZm9yZSBmaWxlcyBuYW1lIGluIHRoZSBmaWxl
IGxpc3QgYW5kIGluIHRoZSBoZWFkZXIgZmlsZXMuIElmIHNldCB0byBOTyB0aGUKLSMgc2hvcnRl
c3QgcGF0aCB0aGF0IG1ha2VzIHRoZSBmaWxlIG5hbWUgdW5pcXVlIHdpbGwgYmUgdXNlZAotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1GVUxMX1BBVEhfTkFNRVMgICAgICAgID0gWUVT
Ci0KLSMgVGhlIFNUUklQX0ZST01fUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3RyaXAgYSB1c2Vy
LWRlZmluZWQgcGFydCBvZiB0aGUgcGF0aC4KLSMgU3RyaXBwaW5nIGlzIG9ubHkgZG9uZSBpZiBv
bmUgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmdzIG1hdGNoZXMgdGhlIGxlZnQtaGFuZAotIyBwYXJ0
IG9mIHRoZSBwYXRoLiBUaGUgdGFnIGNhbiBiZSB1c2VkIHRvIHNob3cgcmVsYXRpdmUgcGF0aHMg
aW4gdGhlIGZpbGUgbGlzdC4KLSMgSWYgbGVmdCBibGFuayB0aGUgZGlyZWN0b3J5IGZyb20gd2hp
Y2ggZG94eWdlbiBpcyBydW4gaXMgdXNlZCBhcyB0aGUgcGF0aCB0bwotIyBzdHJpcC4KLSMKLSMg
Tm90ZSB0aGF0IHlvdSBjYW4gc3BlY2lmeSBhYnNvbHV0ZSBwYXRocyBoZXJlLCBidXQgYWxzbyBy
ZWxhdGl2ZSBwYXRocywgd2hpY2gKLSMgd2lsbCBiZSByZWxhdGl2ZSBmcm9tIHRoZSBkaXJlY3Rv
cnkgd2hlcmUgZG94eWdlbiBpcyBzdGFydGVkLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgRlVMTF9QQVRIX05BTUVTIGlzIHNldCB0byBZRVMuCi0KLVNUUklQX0ZST01fUEFUSCAg
ICAgICAgPSAlVE9QRElSJQotCi0jIFRoZSBTVFJJUF9GUk9NX0lOQ19QQVRIIHRhZyBjYW4gYmUg
dXNlZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIHRoZQotIyBwYXRoIG1lbnRpb25l
ZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBhIGNsYXNzLCB3aGljaCB0ZWxscyB0aGUgcmVhZGVy
IHdoaWNoCi0jIGhlYWRlciBmaWxlIHRvIGluY2x1ZGUgaW4gb3JkZXIgdG8gdXNlIGEgY2xhc3Mu
IElmIGxlZnQgYmxhbmsgb25seSB0aGUgbmFtZSBvZgotIyB0aGUgaGVhZGVyIGZpbGUgY29udGFp
bmluZyB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkLiBPdGhlcndpc2Ugb25lIHNob3VsZAot
IyBzcGVjaWZ5IHRoZSBsaXN0IG9mIGluY2x1ZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgcGFz
c2VkIHRvIHRoZSBjb21waWxlcgotIyB1c2luZyB0aGUgLUkgZmxhZy4KLQotU1RSSVBfRlJPTV9J
TkNfUEFUSCAgICA9ICVUT1BESVIlL2luY2x1ZGUKLQotIyBJZiB0aGUgU0hPUlRfTkFNRVMgdGFn
IGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBtdWNoIHNob3J0ZXIgKGJ1dAot
IyBsZXNzIHJlYWRhYmxlKSBmaWxlIG5hbWVzLiBUaGlzIGNhbiBiZSB1c2VmdWwgaXMgeW91ciBm
aWxlIHN5c3RlbXMgZG9lc24ndAotIyBzdXBwb3J0IGxvbmcgbmFtZXMgbGlrZSBvbiBET1MsIE1h
Yywgb3IgQ0QtUk9NLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNIT1JUX05BTUVT
ICAgICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBKQVZBRE9DX0FVVE9CUklFRiB0YWcgaXMgc2V0
IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBpbnRlcnByZXQgdGhlCi0jIGZpcnN0IGxpbmUgKHVu
dGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEgSmF2YWRvYy1zdHlsZSBjb21tZW50IGFzIHRoZSBicmll
ZgotIyBkZXNjcmlwdGlvbi4gSWYgc2V0IHRvIE5PLCB0aGUgSmF2YWRvYy1zdHlsZSB3aWxsIGJl
aGF2ZSBqdXN0IGxpa2UgcmVndWxhciBRdC0KLSMgc3R5bGUgY29tbWVudHMgKHRodXMgcmVxdWly
aW5nIGFuIGV4cGxpY2l0IEBicmllZiBjb21tYW5kIGZvciBhIGJyaWVmCi0jIGRlc2NyaXB0aW9u
LikKLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1KQVZBRE9DX0FVVE9CUklFRiAgICAg
ID0gWUVTCi0KLSMgSWYgdGhlIFFUX0FVVE9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRv
eHlnZW4gd2lsbCBpbnRlcnByZXQgdGhlIGZpcnN0Ci0jIGxpbmUgKHVudGlsIHRoZSBmaXJzdCBk
b3QpIG9mIGEgUXQtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYgZGVzY3JpcHRpb24uIElmCi0j
IHNldCB0byBOTywgdGhlIFF0LXN0eWxlIHdpbGwgYmVoYXZlIGp1c3QgbGlrZSByZWd1bGFyIFF0
LXN0eWxlIGNvbW1lbnRzICh0aHVzCi0jIHJlcXVpcmluZyBhbiBleHBsaWNpdCBcYnJpZWYgY29t
bWFuZCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbi4pCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLQotUVRfQVVUT0JSSUVGICAgICAgICAgICA9IE5PCi0KLSMgVGhlIE1VTFRJTElORV9DUFBf
SVNfQlJJRUYgdGFnIGNhbiBiZSBzZXQgdG8gWUVTIHRvIG1ha2UgZG94eWdlbiB0cmVhdCBhCi0j
IG11bHRpLWxpbmUgQysrIHNwZWNpYWwgY29tbWVudCBibG9jayAoaS5lLiBhIGJsb2NrIG9mIC8v
ISBvciAvLy8gY29tbWVudHMpIGFzCi0jIGEgYnJpZWYgZGVzY3JpcHRpb24uIFRoaXMgdXNlZCB0
byBiZSB0aGUgZGVmYXVsdCBiZWhhdmlvci4gVGhlIG5ldyBkZWZhdWx0IGlzCi0jIHRvIHRyZWF0
IGEgbXVsdGktbGluZSBDKysgY29tbWVudCBibG9jayBhcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9u
LiBTZXQgdGhpcwotIyB0YWcgdG8gWUVTIGlmIHlvdSBwcmVmZXIgdGhlIG9sZCBiZWhhdmlvciBp
bnN0ZWFkLgotIwotIyBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIHRhZyB0byBZRVMgYWxzbyBtZWFu
cyB0aGF0IHJhdGlvbmFsIHJvc2UgY29tbWVudHMgYXJlCi0jIG5vdCByZWNvZ25pemVkIGFueSBt
b3JlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLU1VTFRJTElORV9DUFBfSVNfQlJJ
RUYgPSBOTwotCi0jIElmIHRoZSBJTkhFUklUX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBh
biB1bmRvY3VtZW50ZWQgbWVtYmVyIGluaGVyaXRzIHRoZQotIyBkb2N1bWVudGF0aW9uIGZyb20g
YW55IGRvY3VtZW50ZWQgbWVtYmVyIHRoYXQgaXQgcmUtaW1wbGVtZW50cy4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLQotSU5IRVJJVF9ET0NTICAgICAgICAgICA9IFlFUwotCi0jIElm
IHRoZSBTRVBBUkFURV9NRU1CRVJfUEFHRVMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdl
biB3aWxsIHByb2R1Y2UgYQotIyBuZXcgcGFnZSBmb3IgZWFjaCBtZW1iZXIuIElmIHNldCB0byBO
TywgdGhlIGRvY3VtZW50YXRpb24gb2YgYSBtZW1iZXIgd2lsbCBiZQotIyBwYXJ0IG9mIHRoZSBm
aWxlL2NsYXNzL25hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGl0LgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0KLVNFUEFSQVRFX01FTUJFUl9QQUdFUyAgPSBOTwotCi0jIFRoZSBUQUJfU0la
RSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBudW1iZXIgb2Ygc3BhY2VzIGluIGEgdGFiLiBE
b3h5Z2VuCi0jIHVzZXMgdGhpcyB2YWx1ZSB0byByZXBsYWNlIHRhYnMgYnkgc3BhY2VzIGluIGNv
ZGUgZnJhZ21lbnRzLgotIyBNaW5pbXVtIHZhbHVlOiAxLCBtYXhpbXVtIHZhbHVlOiAxNiwgZGVm
YXVsdCB2YWx1ZTogNC4KLQotVEFCX1NJWkUgICAgICAgICAgICAgICA9IDMKLQotIyBUaGlzIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbnVtYmVyIG9mIGFsaWFzZXMgdGhhdCBhY3QgYXMg
Y29tbWFuZHMgaW4KLSMgdGhlIGRvY3VtZW50YXRpb24uIEFuIGFsaWFzIGhhcyB0aGUgZm9ybToK
LSMgbmFtZT12YWx1ZQotIyBGb3IgZXhhbXBsZSBhZGRpbmcKLSMgInNpZGVlZmZlY3Q9QHBhciBT
aWRlIEVmZmVjdHM6XG4iCi0jIHdpbGwgYWxsb3cgeW91IHRvIHB1dCB0aGUgY29tbWFuZCBcc2lk
ZWVmZmVjdCAob3IgQHNpZGVlZmZlY3QpIGluIHRoZQotIyBkb2N1bWVudGF0aW9uLCB3aGljaCB3
aWxsIHJlc3VsdCBpbiBhIHVzZXItZGVmaW5lZCBwYXJhZ3JhcGggd2l0aCBoZWFkaW5nCi0jICJT
aWRlIEVmZmVjdHM6Ii4gWW91IGNhbiBwdXQgXG4ncyBpbiB0aGUgdmFsdWUgcGFydCBvZiBhbiBh
bGlhcyB0byBpbnNlcnQKLSMgbmV3bGluZXMuCi0KLUFMSUFTRVMgICAgICAgICAgICAgICAgPSAi
dGVzdENhc2VTZXR1cD1cbGluayBDcHBVVDo6VGVzdENhc2U6OnNldFVwKCkgc2V0VXAoKVxlbmRs
aW5rIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RDYXNlUnVuPVxsaW5rIENwcFVU
OjpUZXN0Q2FzZTo6cnVuKCkgcnVuKClcZW5kbGluayIgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXN0Q2FzZVRlYXJEb3duPVxsaW5rIENwcFVUOjpUZXN0Q2FzZTo6dGVhckRvd24oKSB0
ZWFyRG93bigpXGVuZGxpbmsiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAianNvbl9yZWY9
PGEgSFJFRj0naHR0cDovL3d3dy5qc29uLm9yZy8nPkpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5v
dGF0aW9uKTwvYT4iCi0KLSMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJl
ciBvZiB3b3JkLWtleXdvcmQgbWFwcGluZ3MgKFRDTCBvbmx5KS4KLSMgQSBtYXBwaW5nIGhhcyB0
aGUgZm9ybSAibmFtZT12YWx1ZSIuIEZvciBleGFtcGxlIGFkZGluZyAiY2xhc3M9aXRjbDo6Y2xh
c3MiCi0jIHdpbGwgYWxsb3cgeW91IHRvIHVzZSB0aGUgY29tbWFuZCBjbGFzcyBpbiB0aGUgaXRj
bDo6Y2xhc3MgbWVhbmluZy4KLQotVENMX1NVQlNUICAgICAgICAgICAgICA9Ci0KLSMgU2V0IHRo
ZSBPUFRJTUlaRV9PVVRQVVRfRk9SX0MgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lz
dHMgb2YgQyBzb3VyY2VzCi0jIG9ubHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1
dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQgZm9yIEMuIEZvcgotIyBpbnN0YW5jZSwgc29tZSBvZiB0
aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3aWxsIGJlIGRpZmZlcmVudC4gVGhlIGxpc3Qgb2YgYWxs
Ci0jIG1lbWJlcnMgd2lsbCBiZSBvbWl0dGVkLCBldGMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLQotT1BUSU1JWkVfT1VUUFVUX0ZPUl9DICA9IE5PCi0KLSMgU2V0IHRoZSBPUFRJTUla
RV9PVVRQVVRfSkFWQSB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBKYXZh
IG9yCi0jIFB5dGhvbiBzb3VyY2VzIG9ubHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91
dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQKLSMgZm9yIHRoYXQgbGFuZ3VhZ2UuIEZvciBpbnN0
YW5jZSwgbmFtZXNwYWNlcyB3aWxsIGJlIHByZXNlbnRlZCBhcyBwYWNrYWdlcywKLSMgcXVhbGlm
aWVkIHNjb3BlcyB3aWxsIGxvb2sgZGlmZmVyZW50LCBldGMuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBOTy4KLQotT1BUSU1JWkVfT1VUUFVUX0pBVkEgICA9IE5PCi0KLSMgU2V0IHRoZSBPUFRJ
TUlaRV9GT1JfRk9SVFJBTiB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBG
b3J0cmFuCi0jIHNvdXJjZXMuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0
IGlzIHRhaWxvcmVkIGZvciBGb3J0cmFuLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LU9QVElNSVpFX0ZPUl9GT1JUUkFOICAgPSBOTwotCi0jIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVU
X1ZIREwgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgVkhETAotIyBzb3Vy
Y2VzLiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWlsb3JlZCBm
b3IgVkhETC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1PUFRJTUlaRV9PVVRQVVRf
VkhETCAgID0gTk8KLQotIyBEb3h5Z2VuIHNlbGVjdHMgdGhlIHBhcnNlciB0byB1c2UgZGVwZW5k
aW5nIG9uIHRoZSBleHRlbnNpb24gb2YgdGhlIGZpbGVzIGl0Ci0jIHBhcnNlcy4gV2l0aCB0aGlz
IHRhZyB5b3UgY2FuIGFzc2lnbiB3aGljaCBwYXJzZXIgdG8gdXNlIGZvciBhIGdpdmVuCi0jIGV4
dGVuc2lvbi4gRG94eWdlbiBoYXMgYSBidWlsdC1pbiBtYXBwaW5nLCBidXQgeW91IGNhbiBvdmVy
cmlkZSBvciBleHRlbmQgaXQKLSMgdXNpbmcgdGhpcyB0YWcuIFRoZSBmb3JtYXQgaXMgZXh0PWxh
bmd1YWdlLCB3aGVyZSBleHQgaXMgYSBmaWxlIGV4dGVuc2lvbiwgYW5kCi0jIGxhbmd1YWdlIGlz
IG9uZSBvZiB0aGUgcGFyc2VycyBzdXBwb3J0ZWQgYnkgZG94eWdlbjogSURMLCBKYXZhLCBKYXZh
U2NyaXB0LAotIyBDIywgQywgQysrLCBELCBQSFAsIE9iamVjdGl2ZS1DLCBQeXRob24sIEZvcnRy
YW4sIFZIREwuIEZvciBpbnN0YW5jZSB0byBtYWtlCi0jIGRveHlnZW4gdHJlYXQgLmluYyBmaWxl
cyBhcyBGb3J0cmFuIGZpbGVzIChkZWZhdWx0IGlzIFBIUCksIGFuZCAuZiBmaWxlcyBhcyBDCi0j
IChkZWZhdWx0IGlzIEZvcnRyYW4pLCB1c2U6IGluYz1Gb3J0cmFuIGY9Qy4KLSMKLSMgTm90ZSBG
b3IgZmlsZXMgd2l0aG91dCBleHRlbnNpb24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEg
cGxhY2Vob2xkZXIuCi0jCi0jIE5vdGUgdGhhdCBmb3IgY3VzdG9tIGV4dGVuc2lvbnMgeW91IGFs
c28gbmVlZCB0byBzZXQgRklMRV9QQVRURVJOUyBvdGhlcndpc2UKLSMgdGhlIGZpbGVzIGFyZSBu
b3QgcmVhZCBieSBkb3h5Z2VuLgotCi1FWFRFTlNJT05fTUFQUElORyAgICAgID0KLQotIyBJZiB0
aGUgTUFSS0RPV05fU1VQUE9SVCB0YWcgaXMgZW5hYmxlZCB0aGVuIGRveHlnZW4gcHJlLXByb2Nl
c3NlcyBhbGwgY29tbWVudHMKLSMgYWNjb3JkaW5nIHRvIHRoZSBNYXJrZG93biBmb3JtYXQsIHdo
aWNoIGFsbG93cyBmb3IgbW9yZSByZWFkYWJsZQotIyBkb2N1bWVudGF0aW9uLiBTZWUgaHR0cDov
L2RhcmluZ2ZpcmViYWxsLm5ldC9wcm9qZWN0cy9tYXJrZG93bi8gZm9yIGRldGFpbHMuCi0jIFRo
ZSBvdXRwdXQgb2YgbWFya2Rvd24gcHJvY2Vzc2luZyBpcyBmdXJ0aGVyIHByb2Nlc3NlZCBieSBk
b3h5Z2VuLCBzbyB5b3UgY2FuCi0jIG1peCBkb3h5Z2VuLCBIVE1MLCBhbmQgWE1MIGNvbW1hbmRz
IHdpdGggTWFya2Rvd24gZm9ybWF0dGluZy4gRGlzYWJsZSBvbmx5IGluCi0jIGNhc2Ugb2YgYmFj
a3dhcmQgY29tcGF0aWJpbGl0aWVzIGlzc3Vlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlF
Uy4KLQotTUFSS0RPV05fU1VQUE9SVCAgICAgICA9IFlFUwotCi0jIFdoZW4gZW5hYmxlZCBkb3h5
Z2VuIHRyaWVzIHRvIGxpbmsgd29yZHMgdGhhdCBjb3JyZXNwb25kIHRvIGRvY3VtZW50ZWQKLSMg
Y2xhc3Nlcywgb3IgbmFtZXNwYWNlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIGRvY3VtZW50YXRp
b24uIFN1Y2ggYSBsaW5rIGNhbgotIyBiZSBwcmV2ZW50ZWQgaW4gaW5kaXZpZHVhbCBjYXNlcyBi
eSBieSBwdXR0aW5nIGEgJSBzaWduIGluIGZyb250IG9mIHRoZSB3b3JkCi0jIG9yIGdsb2JhbGx5
IGJ5IHNldHRpbmcgQVVUT0xJTktfU1VQUE9SVCB0byBOTy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IFlFUy4KLQotQVVUT0xJTktfU1VQUE9SVCAgICAgICA9IFlFUwotCi0jIElmIHlvdSB1c2Ug
U1RMIGNsYXNzZXMgKGkuZS4gc3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yLCBldGMuKSBidXQgZG8g
bm90IHdhbnQKLSMgdG8gaW5jbHVkZSAoYSB0YWcgZmlsZSBmb3IpIHRoZSBTVEwgc291cmNlcyBh
cyBpbnB1dCwgdGhlbiB5b3Ugc2hvdWxkIHNldCB0aGlzCi0jIHRhZyB0byBZRVMgaW4gb3JkZXIg
dG8gbGV0IGRveHlnZW4gbWF0Y2ggZnVuY3Rpb25zIGRlY2xhcmF0aW9ucyBhbmQKLSMgZGVmaW5p
dGlvbnMgd2hvc2UgYXJndW1lbnRzIGNvbnRhaW4gU1RMIGNsYXNzZXMgKGUuZy4gZnVuYyhzdGQ6
OnN0cmluZyk7Ci0jIHZlcnN1cyBmdW5jKHN0ZDo6c3RyaW5nKSB7fSkuIFRoaXMgYWxzbyBtYWtl
IHRoZSBpbmhlcml0YW5jZSBhbmQgY29sbGFib3JhdGlvbgotIyBkaWFncmFtcyB0aGF0IGludm9s
dmUgU1RMIGNsYXNzZXMgbW9yZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUuCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBOTy4KLQotQlVJTFRJTl9TVExfU1VQUE9SVCAgICA9IFlFUwotCi0jIElmIHlv
dSB1c2UgTWljcm9zb2Z0J3MgQysrL0NMSSBsYW5ndWFnZSwgeW91IHNob3VsZCBzZXQgdGhpcyBv
cHRpb24gdG8gWUVTIHRvCi0jIGVuYWJsZSBwYXJzaW5nIHN1cHBvcnQuCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBOTy4KLQotQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PCi0KLSMgU2V0IHRo
ZSBTSVBfU1VQUE9SVCB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBzaXAg
KHNlZToKLSMgaHR0cDovL3d3dy5yaXZlcmJhbmtjb21wdXRpbmcuY28udWsvc29mdHdhcmUvc2lw
L2ludHJvKSBzb3VyY2VzIG9ubHkuIERveHlnZW4KLSMgd2lsbCBwYXJzZSB0aGVtIGxpa2Ugbm9y
bWFsIEMrKyBidXQgd2lsbCBhc3N1bWUgYWxsIGNsYXNzZXMgdXNlIHB1YmxpYyBpbnN0ZWFkCi0j
IG9mIHByaXZhdGUgaW5oZXJpdGFuY2Ugd2hlbiBubyBleHBsaWNpdCBwcm90ZWN0aW9uIGtleXdv
cmQgaXMgcHJlc2VudC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TSVBfU1VQUE9S
VCAgICAgICAgICAgID0gTk8KLQotIyBGb3IgTWljcm9zb2Z0J3MgSURMIHRoZXJlIGFyZSBwcm9w
Z2V0IGFuZCBwcm9wcHV0IGF0dHJpYnV0ZXMgdG8gaW5kaWNhdGUKLSMgZ2V0dGVyIGFuZCBzZXR0
ZXIgbWV0aG9kcyBmb3IgYSBwcm9wZXJ0eS4gU2V0dGluZyB0aGlzIG9wdGlvbiB0byBZRVMgd2ls
bCBtYWtlCi0jIGRveHlnZW4gdG8gcmVwbGFjZSB0aGUgZ2V0IGFuZCBzZXQgbWV0aG9kcyBieSBh
IHByb3BlcnR5IGluIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGlzIHdpbGwgb25seSB3b3JrIGlm
IHRoZSBtZXRob2RzIGFyZSBpbmRlZWQgZ2V0dGluZyBvciBzZXR0aW5nIGEgc2ltcGxlCi0jIHR5
cGUuIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBvciB5b3Ugd2FudCB0byBzaG93IHRoZSBtZXRo
b2RzIGFueXdheSwgeW91Ci0jIHNob3VsZCBzZXQgdGhpcyBvcHRpb24gdG8gTk8uCi0jIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUlETF9QUk9QRVJUWV9TVVBQT1JUICAgPSBZRVMKLQot
IyBJZiBtZW1iZXIgZ3JvdXBpbmcgaXMgdXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhl
IERJU1RSSUJVVEVfR1JPVVBfRE9DCi0jIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4g
d2lsbCByZXVzZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QKLSMgbWVtYmVyIGluIHRo
ZSBncm91cCAoaWYgYW55KSBmb3IgdGhlIG90aGVyIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiBCeSBk
ZWZhdWx0Ci0jIGFsbCBtZW1iZXJzIG9mIGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxp
Y2l0bHkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRElTVFJJQlVURV9HUk9VUF9E
T0MgICA9IE5PCi0KLSMgU2V0IHRoZSBTVUJHUk9VUElORyB0YWcgdG8gWUVTIHRvIGFsbG93IGNs
YXNzIG1lbWJlciBncm91cHMgb2YgdGhlIHNhbWUgdHlwZQotIyAoZm9yIGluc3RhbmNlIGEgZ3Jv
dXAgb2YgcHVibGljIGZ1bmN0aW9ucykgdG8gYmUgcHV0IGFzIGEgc3ViZ3JvdXAgb2YgdGhhdAot
IyB0eXBlIChlLmcuIHVuZGVyIHRoZSBQdWJsaWMgRnVuY3Rpb25zIHNlY3Rpb24pLiBTZXQgaXQg
dG8gTk8gdG8gcHJldmVudAotIyBzdWJncm91cGluZy4gQWx0ZXJuYXRpdmVseSwgdGhpcyBjYW4g
YmUgZG9uZSBwZXIgY2xhc3MgdXNpbmcgdGhlCi0jIFxub3N1Ymdyb3VwaW5nIGNvbW1hbmQuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNVQkdST1VQSU5HICAgICAgICAgICAgPSBZ
RVMKLQotIyBXaGVuIHRoZSBJTkxJTkVfR1JPVVBFRF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVT
LCBjbGFzc2VzLCBzdHJ1Y3RzIGFuZCB1bmlvbnMKLSMgYXJlIHNob3duIGluc2lkZSB0aGUgZ3Jv
dXAgaW4gd2hpY2ggdGhleSBhcmUgaW5jbHVkZWQgKGUuZy4gdXNpbmcgXGluZ3JvdXApCi0jIGlu
c3RlYWQgb2Ygb24gYSBzZXBhcmF0ZSBwYWdlIChmb3IgSFRNTCBhbmQgTWFuIHBhZ2VzKSBvciBz
ZWN0aW9uIChmb3IgTGFUZVgKLSMgYW5kIFJURikuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGZlYXR1
cmUgZG9lcyBub3Qgd29yayBpbiBjb21iaW5hdGlvbiB3aXRoCi0jIFNFUEFSQVRFX01FTUJFUl9Q
QUdFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTkxJTkVfR1JPVVBFRF9DTEFT
U0VTID0gTk8KLQotIyBXaGVuIHRoZSBJTkxJTkVfU0lNUExFX1NUUlVDVFMgdGFnIGlzIHNldCB0
byBZRVMsIHN0cnVjdHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMKLSMgd2l0aCBvbmx5IHB1YmxpYyBk
YXRhIGZpZWxkcyBvciBzaW1wbGUgdHlwZWRlZiBmaWVsZHMgd2lsbCBiZSBzaG93biBpbmxpbmUg
aW4KLSMgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIHNjb3BlIGluIHdoaWNoIHRoZXkgYXJlIGRl
ZmluZWQgKGkuZS4gZmlsZSwKLSMgbmFtZXNwYWNlLCBvciBncm91cCBkb2N1bWVudGF0aW9uKSwg
cHJvdmlkZWQgdGhpcyBzY29wZSBpcyBkb2N1bWVudGVkLiBJZiBzZXQKLSMgdG8gTk8sIHN0cnVj
dHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMgYXJlIHNob3duIG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9y
IEhUTUwgYW5kCi0jIE1hbiBwYWdlcykgb3Igc2VjdGlvbiAoZm9yIExhVGVYIGFuZCBSVEYpLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUlOTElORV9TSU1QTEVfU1RSVUNUUyAgPSBO
TwotCi0jIFdoZW4gVFlQRURFRl9ISURFU19TVFJVQ1QgdGFnIGlzIGVuYWJsZWQsIGEgdHlwZWRl
ZiBvZiBhIHN0cnVjdCwgdW5pb24sIG9yCi0jIGVudW0gaXMgZG9jdW1lbnRlZCBhcyBzdHJ1Y3Qs
IHVuaW9uLCBvciBlbnVtIHdpdGggdGhlIG5hbWUgb2YgdGhlIHR5cGVkZWYuIFNvCi0jIHR5cGVk
ZWYgc3RydWN0IFR5cGVTIHt9IFR5cGVULCB3aWxsIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhcyBhIHN0cnVjdAotIyB3aXRoIG5hbWUgVHlwZVQuIFdoZW4gZGlzYWJsZWQgdGhlIHR5cGVk
ZWYgd2lsbCBhcHBlYXIgYXMgYSBtZW1iZXIgb2YgYSBmaWxlLAotIyBuYW1lc3BhY2UsIG9yIGNs
YXNzLiBBbmQgdGhlIHN0cnVjdCB3aWxsIGJlIG5hbWVkIFR5cGVTLiBUaGlzIGNhbiB0eXBpY2Fs
bHkgYmUKLSMgdXNlZnVsIGZvciBDIGNvZGUgaW4gY2FzZSB0aGUgY29kaW5nIGNvbnZlbnRpb24g
ZGljdGF0ZXMgdGhhdCBhbGwgY29tcG91bmQKLSMgdHlwZXMgYXJlIHR5cGVkZWYnZWQgYW5kIG9u
bHkgdGhlIHR5cGVkZWYgaXMgcmVmZXJlbmNlZCwgbmV2ZXIgdGhlIHRhZyBuYW1lLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVRZUEVERUZfSElERVNfU1RSVUNUICAgPSBOTwotCi0j
IFRoZSBzaXplIG9mIHRoZSBzeW1ib2wgbG9va3VwIGNhY2hlIGNhbiBiZSBzZXQgdXNpbmcgTE9P
S1VQX0NBQ0hFX1NJWkUuIFRoaXMKLSMgY2FjaGUgaXMgdXNlZCB0byByZXNvbHZlIHN5bWJvbHMg
Z2l2ZW4gdGhlaXIgbmFtZSBhbmQgc2NvcGUuIFNpbmNlIHRoaXMgY2FuIGJlCi0jIGFuIGV4cGVu
c2l2ZSBwcm9jZXNzIGFuZCBvZnRlbiB0aGUgc2FtZSBzeW1ib2wgYXBwZWFycyBtdWx0aXBsZSB0
aW1lcyBpbiB0aGUKLSMgY29kZSwgZG94eWdlbiBrZWVwcyBhIGNhY2hlIG9mIHByZS1yZXNvbHZl
ZCBzeW1ib2xzLiBJZiB0aGUgY2FjaGUgaXMgdG9vIHNtYWxsCi0jIGRveHlnZW4gd2lsbCBiZWNv
bWUgc2xvd2VyLiBJZiB0aGUgY2FjaGUgaXMgdG9vIGxhcmdlLCBtZW1vcnkgaXMgd2FzdGVkLiBU
aGUKLSMgY2FjaGUgc2l6ZSBpcyBnaXZlbiBieSB0aGlzIGZvcm11bGE6IDJeKDE2K0xPT0tVUF9D
QUNIRV9TSVpFKS4gVGhlIHZhbGlkIHJhbmdlCi0jIGlzIDAuLjksIHRoZSBkZWZhdWx0IGlzIDAs
IGNvcnJlc3BvbmRpbmcgdG8gYSBjYWNoZSBzaXplIG9mIDJeMTY9NjU1MzYKLSMgc3ltYm9scy4g
QXQgdGhlIGVuZCBvZiBhIHJ1biBkb3h5Z2VuIHdpbGwgcmVwb3J0IHRoZSBjYWNoZSB1c2FnZSBh
bmQgc3VnZ2VzdAotIyB0aGUgb3B0aW1hbCBjYWNoZSBzaXplIGZyb20gYSBzcGVlZCBwb2ludCBv
ZiB2aWV3LgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5LCBkZWZhdWx0IHZh
bHVlOiAwLgotCi1MT09LVVBfQ0FDSEVfU0laRSAgICAgID0gMAotCi0jLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0jIEJ1aWxkIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCi0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSMgSWYgdGhlIEVYVFJBQ1RfQUxMIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4g
d2lsbCBhc3N1bWUgYWxsIGVudGl0aWVzIGluCi0jIGRvY3VtZW50YXRpb24gYXJlIGRvY3VtZW50
ZWQsIGV2ZW4gaWYgbm8gZG9jdW1lbnRhdGlvbiB3YXMgYXZhaWxhYmxlLiBQcml2YXRlCi0jIGNs
YXNzIG1lbWJlcnMgYW5kIHN0YXRpYyBmaWxlIG1lbWJlcnMgd2lsbCBiZSBoaWRkZW4gdW5sZXNz
IHRoZQotIyBFWFRSQUNUX1BSSVZBVEUgcmVzcGVjdGl2ZWx5IEVYVFJBQ1RfU1RBVElDIHRhZ3Mg
YXJlIHNldCB0byBZRVMuCi0jIE5vdGU6IFRoaXMgd2lsbCBhbHNvIGRpc2FibGUgdGhlIHdhcm5p
bmdzIGFib3V0IHVuZG9jdW1lbnRlZCBtZW1iZXJzIHRoYXQgYXJlCi0jIG5vcm1hbGx5IHByb2R1
Y2VkIHdoZW4gV0FSTklOR1MgaXMgc2V0IHRvIFlFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IE5PLgotCi1FWFRSQUNUX0FMTCAgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEVYVFJBQ1Rf
UFJJVkFURSB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xhc3Mg
d2lsbAotIyBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1FWFRSQUNUX1BSSVZBVEUgICAgICAgID0gTk8KLQotIyBJZiB0aGUg
RVhUUkFDVF9QQUNLQUdFIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBtZW1iZXJzIHdpdGggcGFja2Fn
ZSBvciBpbnRlcm5hbAotIyBzY29wZSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0
aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVYVFJBQ1RfUEFDS0FHRSAgICAg
ICAgPSBOTwotCi0jIElmIHRoZSBFWFRSQUNUX1NUQVRJQyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwg
c3RhdGljIG1lbWJlcnMgb2YgYSBmaWxlIHdpbGwgYmUKLSMgaW5jbHVkZWQgaW4gdGhlIGRvY3Vt
ZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRVhUUkFDVF9TVEFUSUMg
ICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgdGFnIGlzIHNl
dCB0byBZRVMgY2xhc3NlcyAoYW5kIHN0cnVjdHMpIGRlZmluZWQKLSMgbG9jYWxseSBpbiBzb3Vy
Y2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRv
IE5PCi0jIG9ubHkgY2xhc3NlcyBkZWZpbmVkIGluIGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQu
IERvZXMgbm90IGhhdmUgYW55IGVmZmVjdAotIyBmb3IgSmF2YSBzb3VyY2VzLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1FWFRSQUNUX0xPQ0FMX0NMQVNTRVMgID0gTk8KLQotIyBU
aGlzIGZsYWcgaXMgb25seSB1c2VmdWwgZm9yIE9iamVjdGl2ZS1DIGNvZGUuIFdoZW4gc2V0IHRv
IFlFUyBsb2NhbCBtZXRob2RzLAotIyB3aGljaCBhcmUgZGVmaW5lZCBpbiB0aGUgaW1wbGVtZW50
YXRpb24gc2VjdGlvbiBidXQgbm90IGluIHRoZSBpbnRlcmZhY2UgYXJlCi0jIGluY2x1ZGVkIGlu
IHRoZSBkb2N1bWVudGF0aW9uLiBJZiBzZXQgdG8gTk8gb25seSBtZXRob2RzIGluIHRoZSBpbnRl
cmZhY2UgYXJlCi0jIGluY2x1ZGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVY
VFJBQ1RfTE9DQUxfTUVUSE9EUyAgPSBOTwotCi0jIElmIHRoaXMgZmxhZyBpcyBzZXQgdG8gWUVT
LCB0aGUgbWVtYmVycyBvZiBhbm9ueW1vdXMgbmFtZXNwYWNlcyB3aWxsIGJlCi0jIGV4dHJhY3Rl
ZCBhbmQgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgbmFtZXNwYWNlIGNhbGxlZAot
IyAnYW5vbnltb3VzX25hbWVzcGFjZXtmaWxlfScsIHdoZXJlIGZpbGUgd2lsbCBiZSByZXBsYWNl
ZCB3aXRoIHRoZSBiYXNlIG5hbWUgb2YKLSMgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgYW5v
bnltb3VzIG5hbWVzcGFjZS4gQnkgZGVmYXVsdCBhbm9ueW1vdXMgbmFtZXNwYWNlCi0jIGFyZSBo
aWRkZW4uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRVhUUkFDVF9BTk9OX05TUEFD
RVMgICA9IE5PCi0KLSMgSWYgdGhlIEhJREVfVU5ET0NfTUVNQkVSUyB0YWcgaXMgc2V0IHRvIFlF
UywgZG94eWdlbiB3aWxsIGhpZGUgYWxsCi0jIHVuZG9jdW1lbnRlZCBtZW1iZXJzIGluc2lkZSBk
b2N1bWVudGVkIGNsYXNzZXMgb3IgZmlsZXMuIElmIHNldCB0byBOTyB0aGVzZQotIyBtZW1iZXJz
IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlvdXMgb3ZlcnZpZXdzLCBidXQgbm8gZG9jdW1l
bnRhdGlvbgotIyBzZWN0aW9uIGlzIGdlbmVyYXRlZC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVj
dCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFibGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLUhJREVfVU5ET0NfTUVNQkVSUyAgICAgPSBOTwotCi0jIElmIHRoZSBISURFX1VORE9DX0NM
QVNTRVMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbAotIyB1bmRvY3Vt
ZW50ZWQgY2xhc3NlcyB0aGF0IGFyZSBub3JtYWxseSB2aXNpYmxlIGluIHRoZSBjbGFzcyBoaWVy
YXJjaHkuIElmIHNldAotIyB0byBOTyB0aGVzZSBjbGFzc2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4g
dGhlIHZhcmlvdXMgb3ZlcnZpZXdzLiBUaGlzIG9wdGlvbiBoYXMKLSMgbm8gZWZmZWN0IGlmIEVY
VFJBQ1RfQUxMIGlzIGVuYWJsZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSElE
RV9VTkRPQ19DTEFTU0VTICAgICA9IE5PCi0KLSMgSWYgdGhlIEhJREVfRlJJRU5EX0NPTVBPVU5E
UyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYWxsIGZyaWVuZAotIyAoY2xh
c3N8c3RydWN0fHVuaW9uKSBkZWNsYXJhdGlvbnMuIElmIHNldCB0byBOTyB0aGVzZSBkZWNsYXJh
dGlvbnMgd2lsbCBiZQotIyBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1ISURFX0ZSSUVORF9DT01QT1VORFMgID0gTk8KLQotIyBJ
ZiB0aGUgSElERV9JTl9CT0RZX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBo
aWRlIGFueQotIyBkb2N1bWVudGF0aW9uIGJsb2NrcyBmb3VuZCBpbnNpZGUgdGhlIGJvZHkgb2Yg
YSBmdW5jdGlvbi4gSWYgc2V0IHRvIE5PIHRoZXNlCi0jIGJsb2NrcyB3aWxsIGJlIGFwcGVuZGVk
IHRvIHRoZSBmdW5jdGlvbidzIGRldGFpbGVkIGRvY3VtZW50YXRpb24gYmxvY2suCi0jIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSElERV9JTl9CT0RZX0RPQ1MgICAgICA9IE5PCi0KLSMg
VGhlIElOVEVSTkFMX0RPQ1MgdGFnIGRldGVybWluZXMgaWYgZG9jdW1lbnRhdGlvbiB0aGF0IGlz
IHR5cGVkIGFmdGVyIGEKLSMgXGludGVybmFsIGNvbW1hbmQgaXMgaW5jbHVkZWQuIElmIHRoZSB0
YWcgaXMgc2V0IHRvIE5PIHRoZW4gdGhlIGRvY3VtZW50YXRpb24KLSMgd2lsbCBiZSBleGNsdWRl
ZC4gU2V0IGl0IHRvIFlFUyB0byBpbmNsdWRlIHRoZSBpbnRlcm5hbCBkb2N1bWVudGF0aW9uLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUlOVEVSTkFMX0RPQ1MgICAgICAgICAgPSBZ
RVMKLQotIyBJZiB0aGUgQ0FTRV9TRU5TRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gZG94
eWdlbiB3aWxsIG9ubHkgZ2VuZXJhdGUgZmlsZQotIyBuYW1lcyBpbiBsb3dlci1jYXNlIGxldHRl
cnMuIElmIHNldCB0byBZRVMgdXBwZXItY2FzZSBsZXR0ZXJzIGFyZSBhbHNvCi0jIGFsbG93ZWQu
IFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGNsYXNzZXMgb3IgZmlsZXMgd2hvc2UgbmFtZXMg
b25seSBkaWZmZXIKLSMgaW4gY2FzZSBhbmQgaWYgeW91ciBmaWxlIHN5c3RlbSBzdXBwb3J0cyBj
YXNlIHNlbnNpdGl2ZSBmaWxlIG5hbWVzLiBXaW5kb3dzCi0jIGFuZCBNYWMgdXNlcnMgYXJlIGFk
dmlzZWQgdG8gc2V0IHRoaXMgb3B0aW9uIHRvIE5PLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
c3lzdGVtIGRlcGVuZGVudC4KLQotQ0FTRV9TRU5TRV9OQU1FUyAgICAgICA9IE5PCi0KLSMgSWYg
dGhlIEhJREVfU0NPUEVfTkFNRVMgdGFnIGlzIHNldCB0byBOTyB0aGVuIGRveHlnZW4gd2lsbCBz
aG93IG1lbWJlcnMgd2l0aAotIyB0aGVpciBmdWxsIGNsYXNzIGFuZCBuYW1lc3BhY2Ugc2NvcGVz
IGluIHRoZSBkb2N1bWVudGF0aW9uLiBJZiBzZXQgdG8gWUVTIHRoZQotIyBzY29wZSB3aWxsIGJl
IGhpZGRlbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1ISURFX1NDT1BFX05BTUVT
ICAgICAgID0gTk8KLQotIyBJZiB0aGUgU0hPV19JTkNMVURFX0ZJTEVTIHRhZyBpcyBzZXQgdG8g
WUVTIHRoZW4gZG94eWdlbiB3aWxsIHB1dCBhIGxpc3Qgb2YKLSMgdGhlIGZpbGVzIHRoYXQgYXJl
IGluY2x1ZGVkIGJ5IGEgZmlsZSBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZpbGUuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNIT1dfSU5DTFVERV9GSUxFUyAgICAgPSBZ
RVMKLQotIyBJZiB0aGUgRk9SQ0VfTE9DQUxfSU5DTFVERVMgdGFnIGlzIHNldCB0byBZRVMgdGhl
biBkb3h5Z2VuIHdpbGwgbGlzdCBpbmNsdWRlCi0jIGZpbGVzIHdpdGggZG91YmxlIHF1b3RlcyBp
biB0aGUgZG9jdW1lbnRhdGlvbiByYXRoZXIgdGhhbiB3aXRoIHNoYXJwIGJyYWNrZXRzLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUZPUkNFX0xPQ0FMX0lOQ0xVREVTICAgPSBOTwot
Ci0jIElmIHRoZSBJTkxJTkVfSU5GTyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGEgdGFnIFtpbmxp
bmVdIGlzIGluc2VydGVkIGluIHRoZQotIyBkb2N1bWVudGF0aW9uIGZvciBpbmxpbmUgbWVtYmVy
cy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotSU5MSU5FX0lORk8gICAgICAgICAg
ICA9IFlFUwotCi0jIElmIHRoZSBTT1JUX01FTUJFUl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRo
ZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlCi0jIChkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBm
aWxlIGFuZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcgotIyBuYW1lLiBJ
ZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gZGVjbGFyYXRpb24gb3JkZXIu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNPUlRfTUVNQkVSX0RPQ1MgICAgICAg
PSBZRVMKLQotIyBJZiB0aGUgU09SVF9CUklFRl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4g
ZG94eWdlbiB3aWxsIHNvcnQgdGhlIGJyaWVmCi0jIGRlc2NyaXB0aW9ucyBvZiBmaWxlLCBuYW1l
c3BhY2UgYW5kIGNsYXNzIG1lbWJlcnMgYWxwaGFiZXRpY2FsbHkgYnkgbWVtYmVyCi0jIG5hbWUu
IElmIHNldCB0byBOTyB0aGUgbWVtYmVycyB3aWxsIGFwcGVhciBpbiBkZWNsYXJhdGlvbiBvcmRl
ci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TT1JUX0JSSUVGX0RPQ1MgICAgICAg
ID0gTk8KLQotIyBJZiB0aGUgU09SVF9NRU1CRVJTX0NUT1JTXzFTVCB0YWcgaXMgc2V0IHRvIFlF
UyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZQotIyAoYnJpZWYgYW5kIGRldGFpbGVkKSBkb2N1
bWVudGF0aW9uIG9mIGNsYXNzIG1lbWJlcnMgc28gdGhhdCBjb25zdHJ1Y3RvcnMgYW5kCi0jIGRl
c3RydWN0b3JzIGFyZSBsaXN0ZWQgZmlyc3QuIElmIHNldCB0byBOTyB0aGUgY29uc3RydWN0b3Jz
IHdpbGwgYXBwZWFyIGluIHRoZQotIyByZXNwZWN0aXZlIG9yZGVycyBkZWZpbmVkIGJ5IFNPUlRf
QlJJRUZfRE9DUyBhbmQgU09SVF9NRU1CRVJfRE9DUy4KLSMgTm90ZTogSWYgU09SVF9CUklFRl9E
T0NTIGlzIHNldCB0byBOTyB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciBzb3J0aW5nIGJyaWVm
Ci0jIG1lbWJlciBkb2N1bWVudGF0aW9uLgotIyBOb3RlOiBJZiBTT1JUX01FTUJFUl9ET0NTIGlz
IHNldCB0byBOTyB0aGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciBzb3J0aW5nCi0jIGRldGFpbGVk
IG1lbWJlciBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNP
UlRfTUVNQkVSU19DVE9SU18xU1QgPSBOTwotCi0jIElmIHRoZSBTT1JUX0dST1VQX05BTUVTIHRh
ZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlIGhpZXJhcmNoeQotIyBv
ZiBncm91cCBuYW1lcyBpbnRvIGFscGhhYmV0aWNhbCBvcmRlci4gSWYgc2V0IHRvIE5PIHRoZSBn
cm91cCBuYW1lcyB3aWxsCi0jIGFwcGVhciBpbiB0aGVpciBkZWZpbmVkIG9yZGVyLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNPUlRfR1JPVVBfTkFNRVMgICAgICAgPSBOTwotCi0j
IElmIHRoZSBTT1JUX0JZX1NDT1BFX05BTUUgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBjbGFzcyBs
aXN0IHdpbGwgYmUgc29ydGVkIGJ5Ci0jIGZ1bGx5LXF1YWxpZmllZCBuYW1lcywgaW5jbHVkaW5n
IG5hbWVzcGFjZXMuIElmIHNldCB0byBOTywgdGhlIGNsYXNzIGxpc3Qgd2lsbAotIyBiZSBzb3J0
ZWQgb25seSBieSBjbGFzcyBuYW1lLCBub3QgaW5jbHVkaW5nIHRoZSBuYW1lc3BhY2UgcGFydC4K
LSMgTm90ZTogVGhpcyBvcHRpb24gaXMgbm90IHZlcnkgdXNlZnVsIGlmIEhJREVfU0NPUEVfTkFN
RVMgaXMgc2V0IHRvIFlFUy4KLSMgTm90ZTogVGhpcyBvcHRpb24gYXBwbGllcyBvbmx5IHRvIHRo
ZSBjbGFzcyBsaXN0LCBub3QgdG8gdGhlIGFscGhhYmV0aWNhbAotIyBsaXN0LgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0KLVNPUlRfQllfU0NPUEVfTkFNRSAgICAgPSBZRVMKLQotIyBJ
ZiB0aGUgU1RSSUNUX1BST1RPX01BVENISU5HIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBkb3h5Z2Vu
IGZhaWxzIHRvIGRvIHByb3BlcgotIyB0eXBlIHJlc29sdXRpb24gb2YgYWxsIHBhcmFtZXRlcnMg
b2YgYSBmdW5jdGlvbiBpdCB3aWxsIHJlamVjdCBhIG1hdGNoIGJldHdlZW4KLSMgdGhlIHByb3Rv
dHlwZSBhbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgbWVtYmVyIGZ1bmN0aW9uIGV2ZW4gaWYg
dGhlcmUgaXMKLSMgb25seSBvbmUgY2FuZGlkYXRlIG9yIGl0IGlzIG9idmlvdXMgd2hpY2ggY2Fu
ZGlkYXRlIHRvIGNob29zZSBieSBkb2luZyBhCi0jIHNpbXBsZSBzdHJpbmcgbWF0Y2guIEJ5IGRp
c2FibGluZyBTVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgZG94eWdlbiB3aWxsIHN0aWxsCi0jIGFjY2Vw
dCBhIG1hdGNoIGJldHdlZW4gcHJvdG90eXBlIGFuZCBpbXBsZW1lbnRhdGlvbiBpbiBzdWNoIGNh
c2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNUUklDVF9QUk9UT19NQVRDSElO
RyAgPSBOTwotCi0jIFRoZSBHRU5FUkFURV9UT0RPTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5h
YmxlICggWUVTKSBvciBkaXNhYmxlICggTk8pIHRoZQotIyB0b2RvIGxpc3QuIFRoaXMgbGlzdCBp
cyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRvZG8gY29tbWFuZHMgaW4gdGhlCi0jIGRvY3VtZW50YXRp
b24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUdFTkVSQVRFX1RPRE9MSVNUICAg
ICAgPSBZRVMKLQotIyBUaGUgR0VORVJBVEVfVEVTVExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVu
YWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKLSMgdGVzdCBsaXN0LiBUaGlzIGxpc3Qg
aXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0ZXN0IGNvbW1hbmRzIGluIHRoZQotIyBkb2N1bWVudGF0
aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFURV9URVNUTElTVCAg
ICAgID0gTk8KLQotIyBUaGUgR0VORVJBVEVfQlVHTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5h
YmxlICggWUVTKSBvciBkaXNhYmxlICggTk8pIHRoZSBidWcKLSMgbGlzdC4gVGhpcyBsaXN0IGlz
IGNyZWF0ZWQgYnkgcHV0dGluZyBcYnVnIGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFURV9CVUdMSVNUICAgICAgID0g
Tk8KLQotIyBUaGUgR0VORVJBVEVfREVQUkVDQVRFRExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVu
YWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKQotIyB0aGUgZGVwcmVjYXRlZCBsaXN0LiBUaGlz
IGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxkZXByZWNhdGVkIGNvbW1hbmRzIGluCi0jIHRo
ZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFU
RV9ERVBSRUNBVEVETElTVD0gWUVTCi0KLSMgVGhlIEVOQUJMRURfU0VDVElPTlMgdGFnIGNhbiBi
ZSB1c2VkIHRvIGVuYWJsZSBjb25kaXRpb25hbCBkb2N1bWVudGF0aW9uCi0jIHNlY3Rpb25zLCBt
YXJrZWQgYnkgXGlmIDxzZWN0aW9uX2xhYmVsPiAuLi4gXGVuZGlmIGFuZCBcY29uZCA8c2VjdGlv
bl9sYWJlbD4KLSMgLi4uIFxlbmRjb25kIGJsb2Nrcy4KLQotRU5BQkxFRF9TRUNUSU9OUyAgICAg
ICA9Ci0KLSMgVGhlIE1BWF9JTklUSUFMSVpFUl9MSU5FUyB0YWcgZGV0ZXJtaW5lcyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgbGluZXMgdGhhdCB0aGUKLSMgaW5pdGlhbCB2YWx1ZSBvZiBhIHZhcmlh
YmxlIG9yIG1hY3JvIC8gZGVmaW5lIGNhbiBoYXZlIGZvciBpdCB0byBhcHBlYXIgaW4gdGhlCi0j
IGRvY3VtZW50YXRpb24uIElmIHRoZSBpbml0aWFsaXplciBjb25zaXN0cyBvZiBtb3JlIGxpbmVz
IHRoYW4gc3BlY2lmaWVkIGhlcmUKLSMgaXQgd2lsbCBiZSBoaWRkZW4uIFVzZSBhIHZhbHVlIG9m
IDAgdG8gaGlkZSBpbml0aWFsaXplcnMgY29tcGxldGVseS4gVGhlCi0jIGFwcGVhcmFuY2Ugb2Yg
dGhlIHZhbHVlIG9mIGluZGl2aWR1YWwgdmFyaWFibGVzIGFuZCBtYWNyb3MgLyBkZWZpbmVzIGNh
biBiZQotIyBjb250cm9sbGVkIHVzaW5nIFxzaG93aW5pdGlhbGl6ZXIgb3IgXGhpZGVpbml0aWFs
aXplciBjb21tYW5kIGluIHRoZQotIyBkb2N1bWVudGF0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhpcyBz
ZXR0aW5nLgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwMCwgZGVmYXVs
dCB2YWx1ZTogMzAuCi0KLU1BWF9JTklUSUFMSVpFUl9MSU5FUyAgPSAzMAotCi0jIFNldCB0aGUg
U0hPV19VU0VEX0ZJTEVTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBsaXN0IG9mIGZpbGVzIGdl
bmVyYXRlZCBhdAotIyB0aGUgYm90dG9tIG9mIHRoZSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzZXMg
YW5kIHN0cnVjdHMuIElmIHNldCB0byBZRVMgdGhlIGxpc3QKLSMgd2lsbCBtZW50aW9uIHRoZSBm
aWxlcyB0aGF0IHdlcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotU0hPV19VU0VEX0ZJTEVTICAgICAgICA9IFlFUwot
Ci0jIFNldCB0aGUgU0hPV19GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlv
biBvZiB0aGUgRmlsZXMgcGFnZS4gVGhpcwotIyB3aWxsIHJlbW92ZSB0aGUgRmlsZXMgZW50cnkg
ZnJvbSB0aGUgUXVpY2sgSW5kZXggYW5kIGZyb20gdGhlIEZvbGRlciBUcmVlIFZpZXcKLSMgKGlm
IHNwZWNpZmllZCkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNIT1dfRklMRVMg
ICAgICAgICAgICAgPSBZRVMKLQotIyBTZXQgdGhlIFNIT1dfTkFNRVNQQUNFUyB0YWcgdG8gTk8g
dG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgTmFtZXNwYWNlcwotIyBwYWdlLiBUaGlz
IHdpbGwgcmVtb3ZlIHRoZSBOYW1lc3BhY2VzIGVudHJ5IGZyb20gdGhlIFF1aWNrIEluZGV4IGFu
ZCBmcm9tIHRoZQotIyBGb2xkZXIgVHJlZSBWaWV3IChpZiBzcGVjaWZpZWQpLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1TSE9XX05BTUVTUEFDRVMgICAgICAgID0gWUVTCi0KLSMg
VGhlIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9n
cmFtIG9yIHNjcmlwdCB0aGF0Ci0jIGRveHlnZW4gc2hvdWxkIGludm9rZSB0byBnZXQgdGhlIGN1
cnJlbnQgdmVyc2lvbiBmb3IgZWFjaCBmaWxlICh0eXBpY2FsbHkgZnJvbQotIyB0aGUgdmVyc2lv
biBjb250cm9sIHN5c3RlbSkuIERveHlnZW4gd2lsbCBpbnZva2UgdGhlIHByb2dyYW0gYnkgZXhl
Y3V0aW5nICh2aWEKLSMgcG9wZW4oKSkgdGhlIGNvbW1hbmQgY29tbWFuZCBpbnB1dC1maWxlLCB3
aGVyZSBjb21tYW5kIGlzIHRoZSB2YWx1ZSBvZiB0aGUKLSMgRklMRV9WRVJTSU9OX0ZJTFRFUiB0
YWcsIGFuZCBpbnB1dC1maWxlIGlzIHRoZSBuYW1lIG9mIGFuIGlucHV0IGZpbGUgcHJvdmlkZWQK
LSMgYnkgZG94eWdlbi4gV2hhdGV2ZXIgdGhlIHByb2dyYW0gd3JpdGVzIHRvIHN0YW5kYXJkIG91
dHB1dCBpcyB1c2VkIGFzIHRoZSBmaWxlCi0jIHZlcnNpb24uIEZvciBhbiBleGFtcGxlIHNlZSB0
aGUgZG9jdW1lbnRhdGlvbi4KLQotRklMRV9WRVJTSU9OX0ZJTFRFUiAgICA9Ci0KLSMgVGhlIExB
WU9VVF9GSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbGF5b3V0IGZpbGUgd2hpY2gg
d2lsbCBiZSBwYXJzZWQKLSMgYnkgZG94eWdlbi4gVGhlIGxheW91dCBmaWxlIGNvbnRyb2xzIHRo
ZSBnbG9iYWwgc3RydWN0dXJlIG9mIHRoZSBnZW5lcmF0ZWQKLSMgb3V0cHV0IGZpbGVzIGluIGFu
IG91dHB1dCBmb3JtYXQgaW5kZXBlbmRlbnQgd2F5LiBUbyBjcmVhdGUgdGhlIGxheW91dCBmaWxl
Ci0jIHRoYXQgcmVwcmVzZW50cyBkb3h5Z2VuJ3MgZGVmYXVsdHMsIHJ1biBkb3h5Z2VuIHdpdGgg
dGhlIC1sIG9wdGlvbi4gWW91IGNhbgotIyBvcHRpb25hbGx5IHNwZWNpZnkgYSBmaWxlIG5hbWUg
YWZ0ZXIgdGhlIG9wdGlvbiwgaWYgb21pdHRlZCBEb3h5Z2VuTGF5b3V0LnhtbAotIyB3aWxsIGJl
IHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGxheW91dCBmaWxlLgotIwotIyBOb3RlIHRoYXQgaWYg
eW91IHJ1biBkb3h5Z2VuIGZyb20gYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIGZpbGUgY2FsbGVk
Ci0jIERveHlnZW5MYXlvdXQueG1sLCBkb3h5Z2VuIHdpbGwgcGFyc2UgaXQgYXV0b21hdGljYWxs
eSBldmVuIGlmIHRoZSBMQVlPVVRfRklMRQotIyB0YWcgaXMgbGVmdCBlbXB0eS4KLQotTEFZT1VU
X0ZJTEUgICAgICAgICAgICA9Ci0KLSMgVGhlIENJVEVfQklCX0ZJTEVTIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGJpYiBmaWxlcyBjb250YWluaW5nCi0jIHRoZSByZWZl
cmVuY2UgZGVmaW5pdGlvbnMuIFRoaXMgbXVzdCBiZSBhIGxpc3Qgb2YgLmJpYiBmaWxlcy4gVGhl
IC5iaWIKLSMgZXh0ZW5zaW9uIGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQgaWYgb21pdHRlZC4g
VGhpcyByZXF1aXJlcyB0aGUgYmlidGV4IHRvb2wKLSMgdG8gYmUgaW5zdGFsbGVkLiBTZWUgYWxz
byBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpYlRlWCBmb3IgbW9yZSBpbmZvLgotIyBG
b3IgTGFUZVggdGhlIHN0eWxlIG9mIHRoZSBiaWJsaW9ncmFwaHkgY2FuIGJlIGNvbnRyb2xsZWQg
dXNpbmcKLSMgTEFURVhfQklCX1NUWUxFLiBUbyB1c2UgdGhpcyBmZWF0dXJlIHlvdSBuZWVkIGJp
YnRleCBhbmQgcGVybCBhdmFpbGFibGUgaW4gdGhlCi0jIHNlYXJjaCBwYXRoLiBEbyBub3QgdXNl
IGZpbGUgbmFtZXMgd2l0aCBzcGFjZXMsIGJpYnRleCBjYW5ub3QgaGFuZGxlIHRoZW0uIFNlZQot
IyBhbHNvIFxjaXRlIGZvciBpbmZvIGhvdyB0byBjcmVhdGUgcmVmZXJlbmNlcy4KLQotQ0lURV9C
SUJfRklMRVMgICAgICAgICA9Ci0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlv
biBvcHRpb25zIHJlbGF0ZWQgdG8gd2FybmluZyBhbmQgcHJvZ3Jlc3MgbWVzc2FnZXMKLSMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgUVVJRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24v
b2ZmIHRoZSBtZXNzYWdlcyB0aGF0IGFyZSBnZW5lcmF0ZWQgdG8KLSMgc3RhbmRhcmQgb3V0cHV0
IGJ5IGRveHlnZW4uIElmIFFVSUVUIGlzIHNldCB0byBZRVMgdGhpcyBpbXBsaWVzIHRoYXQgdGhl
Ci0jIG1lc3NhZ2VzIGFyZSBvZmYuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUVVJ
RVQgICAgICAgICAgICAgICAgICA9IE5PCi0KLSMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUgdXNl
ZCB0byB0dXJuIG9uL29mZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGFyZQotIyBnZW5lcmF0
ZWQgdG8gc3RhbmRhcmQgZXJyb3IgKCBzdGRlcnIpIGJ5IGRveHlnZW4uIElmIFdBUk5JTkdTIGlz
IHNldCB0byBZRVMKLSMgdGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdhcm5pbmdzIGFyZSBvbi4KLSMK
LSMgVGlwOiBUdXJuIHdhcm5pbmdzIG9uIHdoaWxlIHdyaXRpbmcgdGhlIGRvY3VtZW50YXRpb24u
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVdBUk5JTkdTICAgICAgICAgICAgICAg
PSBZRVMKLQotIyBJZiB0aGUgV0FSTl9JRl9VTkRPQ1VNRU5URUQgdGFnIGlzIHNldCB0byBZRVMs
IHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlCi0jIHdhcm5pbmdzIGZvciB1bmRvY3VtZW50ZWQg
bWVtYmVycy4gSWYgRVhUUkFDVF9BTEwgaXMgc2V0IHRvIFlFUyB0aGVuIHRoaXMgZmxhZwotIyB3
aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGlzYWJsZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0KLVdBUk5fSUZfVU5ET0NVTUVOVEVEICAgPSBZRVMKLQotIyBJZiB0aGUgV0FSTl9JRl9E
T0NfRVJST1IgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB3YXJuaW5n
cyBmb3IKLSMgcG90ZW50aWFsIGVycm9ycyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBu
b3QgZG9jdW1lbnRpbmcgc29tZSBwYXJhbWV0ZXJzCi0jIGluIGEgZG9jdW1lbnRlZCBmdW5jdGlv
biwgb3IgZG9jdW1lbnRpbmcgcGFyYW1ldGVycyB0aGF0IGRvbid0IGV4aXN0IG9yIHVzaW5nCi0j
IG1hcmt1cCBjb21tYW5kcyB3cm9uZ2x5LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgot
Ci1XQVJOX0lGX0RPQ19FUlJPUiAgICAgID0gWUVTCi0KLSMgVGhpcyBXQVJOX05PX1BBUkFNRE9D
IG9wdGlvbiBjYW4gYmUgZW5hYmxlZCB0byBnZXQgd2FybmluZ3MgZm9yIGZ1bmN0aW9ucyB0aGF0
Ci0jIGFyZSBkb2N1bWVudGVkLCBidXQgaGF2ZSBubyBkb2N1bWVudGF0aW9uIGZvciB0aGVpciBw
YXJhbWV0ZXJzIG9yIHJldHVybgotIyB2YWx1ZS4gSWYgc2V0IHRvIE5PIGRveHlnZW4gd2lsbCBv
bmx5IHdhcm4gYWJvdXQgd3Jvbmcgb3IgaW5jb21wbGV0ZSBwYXJhbWV0ZXIKLSMgZG9jdW1lbnRh
dGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5jZSBvZiBkb2N1bWVudGF0aW9uLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVdBUk5fTk9fUEFSQU1ET0MgICAgICAgPSBOTwotCi0j
IFRoZSBXQVJOX0ZPUk1BVCB0YWcgZGV0ZXJtaW5lcyB0aGUgZm9ybWF0IG9mIHRoZSB3YXJuaW5n
IG1lc3NhZ2VzIHRoYXQgZG94eWdlbgotIyBjYW4gcHJvZHVjZS4gVGhlIHN0cmluZyBzaG91bGQg
Y29udGFpbiB0aGUgJGZpbGUsICRsaW5lLCBhbmQgJHRleHQgdGFncywgd2hpY2gKLSMgd2lsbCBi
ZSByZXBsYWNlZCBieSB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgZnJvbSB3aGljaCB0aGUgd2Fy
bmluZyBvcmlnaW5hdGVkCi0jIGFuZCB0aGUgd2FybmluZyB0ZXh0LiBPcHRpb25hbGx5IHRoZSBm
b3JtYXQgbWF5IGNvbnRhaW4gJHZlcnNpb24sIHdoaWNoIHdpbGwKLSMgYmUgcmVwbGFjZWQgYnkg
dGhlIHZlcnNpb24gb2YgdGhlIGZpbGUgKGlmIGl0IGNvdWxkIGJlIG9idGFpbmVkIHZpYQotIyBG
SUxFX1ZFUlNJT05fRklMVEVSKQotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogJGZpbGU6JGxpbmU6
ICR0ZXh0LgotCi1XQVJOX0ZPUk1BVCAgICAgICAgICAgID0gIiRmaWxlOiRsaW5lOiAkdGV4dCIK
LQotIyBUaGUgV0FSTl9MT0dGSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB0
byB3aGljaCB3YXJuaW5nIGFuZCBlcnJvcgotIyBtZXNzYWdlcyBzaG91bGQgYmUgd3JpdHRlbi4g
SWYgbGVmdCBibGFuayB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gdG8gc3RhbmRhcmQKLSMgZXJyb3Ig
KHN0ZGVycikuCi0KLVdBUk5fTE9HRklMRSAgICAgICAgICAgPSAlV0FSTklOR19MT0dfUEFUSCUK
LQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0
byB0aGUgaW5wdXQgZmlsZXMKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgSU5QVVQgdGFn
IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgY29u
dGFpbgotIyBkb2N1bWVudGVkIHNvdXJjZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVz
IGxpa2UgbXlmaWxlLmNwcCBvcgotIyBkaXJlY3RvcmllcyBsaWtlIC91c3Ivc3JjL215cHJvamVj
dC4gU2VwYXJhdGUgdGhlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpdGgKLSMgc3BhY2VzLgotIyBO
b3RlOiBJZiB0aGlzIHRhZyBpcyBlbXB0eSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNo
ZWQuCi0KLUlOUFVUICAgICAgICAgICAgICAgICAgPSAuLi9pbmNsdWRlIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAuLi9zcmMvbGliX2pzb24gXAotICAgICAgICAgICAgICAgICAgICAgICAg
IC4KLQotIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5j
b2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxlcwotIyB0aGF0IGRveHlnZW4gcGFyc2VzLiBJbnRlcm5h
bGx5IGRveHlnZW4gdXNlcyB0aGUgVVRGLTggZW5jb2RpbmcuIERveHlnZW4gdXNlcwotIyBsaWJp
Y29udiAob3IgdGhlIGljb252IGJ1aWx0IGludG8gbGliYykgZm9yIHRoZSB0cmFuc2NvZGluZy4g
U2VlIHRoZSBsaWJpY29udgotIyBkb2N1bWVudGF0aW9uIChzZWU6IGh0dHA6Ly93d3cuZ251Lm9y
Zy9zb2Z0d2FyZS9saWJpY29udikgZm9yIHRoZSBsaXN0IG9mCi0jIHBvc3NpYmxlIGVuY29kaW5n
cy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFVURi04LgotCi1JTlBVVF9FTkNPRElORyAgICAg
ICAgID0gVVRGLTgKLQotIyBJZiB0aGUgdmFsdWUgb2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBk
aXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlCi0jIEZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNp
Znkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgKGxpa2UgKi5jcHAgYW5kCi0jICouaCkg
dG8gZmlsdGVyIG91dCB0aGUgc291cmNlLWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVm
dCBibGFuayB0aGUKLSMgZm9sbG93aW5nIHBhdHRlcm5zIGFyZSB0ZXN0ZWQ6Ki5jLCAqLmNjLCAq
LmN4eCwgKi5jcHAsICouYysrLCAqLmphdmEsICouaWksCi0jICouaXh4LCAqLmlwcCwgKi5pKyss
ICouaW5sLCAqLmlkbCwgKi5kZGwsICoub2RsLCAqLmgsICouaGgsICouaHh4LCAqLmhwcCwKLSMg
Ki5oKyssICouY3MsICouZCwgKi5waHAsICoucGhwNCwgKi5waHA1LCAqLnBodG1sLCAqLmluYywg
Ki5tLCAqLm1hcmtkb3duLAotIyAqLm1kLCAqLm1tLCAqLmRveCwgKi5weSwgKi5mOTAsICouZiwg
Ki5mb3IsICoudGNsLCAqLnZoZCwgKi52aGRsLCAqLnVjZiwKLSMgKi5xc2YsICouYXMgYW5kICou
anMuCi0KLUZJTEVfUEFUVEVSTlMgICAgICAgICAgPSAqLmggXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICouY3BwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqLmlubCBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgKi5kb3gKLQotIyBUaGUgUkVDVVJTSVZFIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IHdoZXRoZXIgb3Igbm90IHN1YmRpcmVjdG9yaWVzIHNob3VsZAotIyBiZSBz
ZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgYXMgd2VsbC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IE5PLgotCi1SRUNVUlNJVkUgICAgICAgICAgICAgID0gWUVTCi0KLSMgVGhlIEVYQ0xVREUgdGFn
IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgc2hv
dWxkIGJlCi0jIGV4Y2x1ZGVkIGZyb20gdGhlIElOUFVUIHNvdXJjZSBmaWxlcy4gVGhpcyB3YXkg
eW91IGNhbiBlYXNpbHkgZXhjbHVkZSBhCi0jIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5
IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgotIwotIyBO
b3RlIHRoYXQgcmVsYXRpdmUgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgZnJv
bSB3aGljaCBkb3h5Z2VuIGlzCi0jIHJ1bi4KLQotRVhDTFVERSAgICAgICAgICAgICAgICA9Ci0K
LSMgVGhlIEVYQ0xVREVfU1lNTElOS1MgdGFnIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB3aGV0aGVy
IG9yIG5vdCBmaWxlcyBvcgotIyBkaXJlY3RvcmllcyB0aGF0IGFyZSBzeW1ib2xpYyBsaW5rcyAo
YSBVbml4IGZpbGUgc3lzdGVtIGZlYXR1cmUpIGFyZSBleGNsdWRlZAotIyBmcm9tIHRoZSBpbnB1
dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWENMVURFX1NZTUxJTktTICAgICAg
ID0gTk8KLQotIyBJZiB0aGUgdmFsdWUgb2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBkaXJlY3Rv
cmllcywgeW91IGNhbiB1c2UgdGhlCi0jIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkg
b25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZQotIyBjZXJ0YWluIGZpbGVz
IGZyb20gdGhvc2UgZGlyZWN0b3JpZXMuCi0jCi0jIE5vdGUgdGhhdCB0aGUgd2lsZGNhcmRzIGFy
ZSBtYXRjaGVkIGFnYWluc3QgdGhlIGZpbGUgd2l0aCBhYnNvbHV0ZSBwYXRoLCBzbyB0bwotIyBl
eGNsdWRlIGFsbCB0ZXN0IGRpcmVjdG9yaWVzIGZvciBleGFtcGxlIHVzZSB0aGUgcGF0dGVybiAq
L3Rlc3QvKgotCi1FWENMVURFX1BBVFRFUk5TICAgICAgID0KLQotIyBUaGUgRVhDTFVERV9TWU1C
T0xTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHN5bWJvbCBuYW1lcwot
IyAobmFtZXNwYWNlcywgY2xhc3NlcywgZnVuY3Rpb25zLCBldGMuKSB0aGF0IHNob3VsZCBiZSBl
eGNsdWRlZCBmcm9tIHRoZQotIyBvdXRwdXQuIFRoZSBzeW1ib2wgbmFtZSBjYW4gYmUgYSBmdWxs
eSBxdWFsaWZpZWQgbmFtZSwgYSB3b3JkLCBvciBpZiB0aGUKLSMgd2lsZGNhcmQgKiBpcyB1c2Vk
LCBhIHN1YnN0cmluZy4gRXhhbXBsZXM6IEFOYW1lc3BhY2UsIEFDbGFzcywKLSMgQUNsYXNzOjpB
TmFtZXNwYWNlLCBBTmFtZXNwYWNlOjoqVGVzdAotIwotIyBOb3RlIHRoYXQgdGhlIHdpbGRjYXJk
cyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaWxlIHdpdGggYWJzb2x1dGUgcGF0aCwgc28gdG8K
LSMgZXhjbHVkZSBhbGwgdGVzdCBkaXJlY3RvcmllcyB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoK
LQotRVhDTFVERV9TWU1CT0xTICAgICAgICA9Ci0KLSMgVGhlIEVYQU1QTEVfUEFUSCB0YWcgY2Fu
IGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBmaWxlcyBvciBkaXJlY3RvcmllcwotIyB0
aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2RlIGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2Vl
IHRoZSBcaW5jbHVkZQotIyBjb21tYW5kKS4KLQotRVhBTVBMRV9QQVRIICAgICAgICAgICA9IC4u
Ci0KLSMgSWYgdGhlIHZhbHVlIG9mIHRoZSBFWEFNUExFX1BBVEggdGFnIGNvbnRhaW5zIGRpcmVj
dG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUKLSMgRVhBTVBMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lm
eSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBwYXR0ZXJuIChsaWtlICouY3BwIGFuZAotIyAqLmgpIHRv
IGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQg
YmxhbmsgYWxsCi0jIGZpbGVzIGFyZSBpbmNsdWRlZC4KLQotRVhBTVBMRV9QQVRURVJOUyAgICAg
ICA9ICoKLQotIyBJZiB0aGUgRVhBTVBMRV9SRUNVUlNJVkUgdGFnIGlzIHNldCB0byBZRVMgdGhl
biBzdWJkaXJlY3RvcmllcyB3aWxsIGJlCi0jIHNlYXJjaGVkIGZvciBpbnB1dCBmaWxlcyB0byBi
ZSB1c2VkIHdpdGggdGhlIFxpbmNsdWRlIG9yIFxkb250aW5jbHVkZSBjb21tYW5kcwotIyBpcnJl
c3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mIHRoZSBSRUNVUlNJVkUgdGFnLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogTk8uCi0KLUVYQU1QTEVfUkVDVVJTSVZFICAgICAgPSBOTwotCi0jIFRoZSBJ
TUFHRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9y
IGRpcmVjdG9yaWVzCi0jIHRoYXQgY29udGFpbiBpbWFnZXMgdGhhdCBhcmUgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSB0aGUKLSMgXGltYWdlIGNvbW1hbmQpLgotCi1J
TUFHRV9QQVRIICAgICAgICAgICAgID0KLQotIyBUaGUgSU5QVVRfRklMVEVSIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgcHJvZ3JhbSB0aGF0IGRveHlnZW4gc2hvdWxkCi0jIGludm9rZSB0
byBmaWx0ZXIgZm9yIGVhY2ggaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgZmls
dGVyIHByb2dyYW0KLSMgYnkgZXhlY3V0aW5nICh2aWEgcG9wZW4oKSkgdGhlIGNvbW1hbmQ6Ci0j
Ci0jIDxmaWx0ZXI+IDxpbnB1dC1maWxlPgotIwotIyB3aGVyZSA8ZmlsdGVyPiBpcyB0aGUgdmFs
dWUgb2YgdGhlIElOUFVUX0ZJTFRFUiB0YWcsIGFuZCA8aW5wdXQtZmlsZT4gaXMgdGhlCi0jIG5h
bWUgb2YgYW4gaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIHRoZW4gdXNlIHRoZSBvdXRwdXQgdGhh
dCB0aGUgZmlsdGVyCi0jIHByb2dyYW0gd3JpdGVzIHRvIHN0YW5kYXJkIG91dHB1dC4gSWYgRklM
VEVSX1BBVFRFUk5TIGlzIHNwZWNpZmllZCwgdGhpcyB0YWcKLSMgd2lsbCBiZSBpZ25vcmVkLgot
IwotIyBOb3RlIHRoYXQgdGhlIGZpbHRlciBtdXN0IG5vdCBhZGQgb3IgcmVtb3ZlIGxpbmVzOyBp
dCBpcyBhcHBsaWVkIGJlZm9yZSB0aGUKLSMgY29kZSBpcyBzY2FubmVkLCBidXQgbm90IHdoZW4g
dGhlIG91dHB1dCBjb2RlIGlzIGdlbmVyYXRlZC4gSWYgbGluZXMgYXJlIGFkZGVkCi0jIG9yIHJl
bW92ZWQsIHRoZSBhbmNob3JzIHdpbGwgbm90IGJlIHBsYWNlZCBjb3JyZWN0bHkuCi0KLUlOUFVU
X0ZJTFRFUiAgICAgICAgICAgPQotCi0jIFRoZSBGSUxURVJfUEFUVEVSTlMgdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgZmlsdGVycyBvbiBhIHBlciBmaWxlIHBhdHRlcm4KLSMgYmFzaXMuIERv
eHlnZW4gd2lsbCBjb21wYXJlIHRoZSBmaWxlIG5hbWUgd2l0aCBlYWNoIHBhdHRlcm4gYW5kIGFw
cGx5IHRoZQotIyBmaWx0ZXIgaWYgdGhlcmUgaXMgYSBtYXRjaC4gVGhlIGZpbHRlcnMgYXJlIGEg
bGlzdCBvZiB0aGUgZm9ybTogcGF0dGVybj1maWx0ZXIKLSMgKGxpa2UgKi5jcHA9bXlfY3BwX2Zp
bHRlcikuIFNlZSBJTlBVVF9GSUxURVIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gaG93Ci0j
IGZpbHRlcnMgYXJlIHVzZWQuIElmIHRoZSBGSUxURVJfUEFUVEVSTlMgdGFnIGlzIGVtcHR5IG9y
IGlmIG5vbmUgb2YgdGhlCi0jIHBhdHRlcm5zIG1hdGNoIHRoZSBmaWxlIG5hbWUsIElOUFVUX0ZJ
TFRFUiBpcyBhcHBsaWVkLgotCi1GSUxURVJfUEFUVEVSTlMgICAgICAgID0KLQotIyBJZiB0aGUg
RklMVEVSX1NPVVJDRV9GSUxFUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAo
aWYgc2V0IHVzaW5nCi0jIElOUFVUX0ZJTFRFUiApIHdpbGwgYWxzbyBiZSB1c2VkIHRvIGZpbHRl
ciB0aGUgaW5wdXQgZmlsZXMgdGhhdCBhcmUgdXNlZCBmb3IKLSMgcHJvZHVjaW5nIHRoZSBzb3Vy
Y2UgZmlsZXMgdG8gYnJvd3NlIChpLmUuIHdoZW4gU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlF
UykuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotRklMVEVSX1NPVVJDRV9GSUxFUyAg
ICA9IE5PCi0KLSMgVGhlIEZJTFRFUl9TT1VSQ0VfUEFUVEVSTlMgdGFnIGNhbiBiZSB1c2VkIHRv
IHNwZWNpZnkgc291cmNlIGZpbHRlcnMgcGVyIGZpbGUKLSMgcGF0dGVybi4gQSBwYXR0ZXJuIHdp
bGwgb3ZlcnJpZGUgdGhlIHNldHRpbmcgZm9yIEZJTFRFUl9QQVRURVJOIChpZiBhbnkpIGFuZAot
IyBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRpc2FibGUgc291cmNlIGZpbHRlcmluZyBmb3IgYSBz
cGVjaWZpYyBwYXR0ZXJuIHVzaW5nCi0jICouZXh0PSAoc28gd2l0aG91dCBuYW1pbmcgYSBmaWx0
ZXIpLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRklMVEVSX1NPVVJDRV9GSUxF
UyBpcyBzZXQgdG8gWUVTLgotCi1GSUxURVJfU09VUkNFX1BBVFRFUk5TID0KLQotIyBJZiB0aGUg
VVNFX01ERklMRV9BU19NQUlOUEFHRSB0YWcgcmVmZXJzIHRvIHRoZSBuYW1lIG9mIGEgbWFya2Rv
d24gZmlsZSB0aGF0Ci0jIGlzIHBhcnQgb2YgdGhlIGlucHV0LCBpdHMgY29udGVudHMgd2lsbCBi
ZSBwbGFjZWQgb24gdGhlIG1haW4gcGFnZQotIyAoaW5kZXguaHRtbCkuIFRoaXMgY2FuIGJlIHVz
ZWZ1bCBpZiB5b3UgaGF2ZSBhIHByb2plY3Qgb24gZm9yIGluc3RhbmNlIEdpdEh1YgotIyBhbmQg
d2FudCB0byByZXVzZSB0aGUgaW50cm9kdWN0aW9uIHBhZ2UgYWxzbyBmb3IgdGhlIGRveHlnZW4g
b3V0cHV0LgotCi1VU0VfTURGSUxFX0FTX01BSU5QQUdFID0KLQotIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBzb3VyY2UgYnJvd3NpbmcKLSMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldCB0
byBZRVMgdGhlbiBhIGxpc3Qgb2Ygc291cmNlIGZpbGVzIHdpbGwgYmUKLSMgZ2VuZXJhdGVkLiBE
b2N1bWVudGVkIGVudGl0aWVzIHdpbGwgYmUgY3Jvc3MtcmVmZXJlbmNlZCB3aXRoIHRoZXNlIHNv
dXJjZXMuCi0jCi0jIE5vdGU6IFRvIGdldCByaWQgb2YgYWxsIHNvdXJjZSBjb2RlIGluIHRoZSBn
ZW5lcmF0ZWQgb3V0cHV0LCBtYWtlIHN1cmUgdGhhdAotIyBhbHNvIFZFUkJBVElNX0hFQURFUlMg
aXMgc2V0IHRvIE5PLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNPVVJDRV9CUk9X
U0VSICAgICAgICAgPSBZRVMKLQotIyBTZXR0aW5nIHRoZSBJTkxJTkVfU09VUkNFUyB0YWcgdG8g
WUVTIHdpbGwgaW5jbHVkZSB0aGUgYm9keSBvZiBmdW5jdGlvbnMsCi0jIGNsYXNzZXMgYW5kIGVu
dW1zIGRpcmVjdGx5IGludG8gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBOTy4KLQotSU5MSU5FX1NPVVJDRVMgICAgICAgICA9IE5PCi0KLSMgU2V0dGluZyB0aGUg
U1RSSVBfQ09ERV9DT01NRU5UUyB0YWcgdG8gWUVTIHdpbGwgaW5zdHJ1Y3QgZG94eWdlbiB0byBo
aWRlIGFueQotIyBzcGVjaWFsIGNvbW1lbnQgYmxvY2tzIGZyb20gZ2VuZXJhdGVkIHNvdXJjZSBj
b2RlIGZyYWdtZW50cy4gTm9ybWFsIEMsIEMrKyBhbmQKLSMgRm9ydHJhbiBjb21tZW50cyB3aWxs
IGFsd2F5cyByZW1haW4gdmlzaWJsZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQot
U1RSSVBfQ09ERV9DT01NRU5UUyAgICA9IFlFUwotCi0jIElmIHRoZSBSRUZFUkVOQ0VEX0JZX1JF
TEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZm9yIGVhY2ggZG9jdW1lbnRlZAotIyBmdW5j
dGlvbiBhbGwgZG9jdW1lbnRlZCBmdW5jdGlvbnMgcmVmZXJlbmNpbmcgaXQgd2lsbCBiZSBsaXN0
ZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUkVGRVJFTkNFRF9CWV9SRUxBVElP
TiA9IFlFUwotCi0jIElmIHRoZSBSRUZFUkVOQ0VTX1JFTEFUSU9OIHRhZyBpcyBzZXQgdG8gWUVT
IHRoZW4gZm9yIGVhY2ggZG9jdW1lbnRlZCBmdW5jdGlvbgotIyBhbGwgZG9jdW1lbnRlZCBlbnRp
dGllcyBjYWxsZWQvdXNlZCBieSB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgbGlzdGVkLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVJFRkVSRU5DRVNfUkVMQVRJT04gICAgPSBZRVMKLQot
IyBJZiB0aGUgUkVGRVJFTkNFU19MSU5LX1NPVVJDRSB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgU09V
UkNFX0JST1dTRVIgdGFnIGlzIHNldAotIyB0byBZRVMsIHRoZW4gdGhlIGh5cGVybGlua3MgZnJv
bSBmdW5jdGlvbnMgaW4gUkVGRVJFTkNFU19SRUxBVElPTiBhbmQKLSMgUkVGRVJFTkNFRF9CWV9S
RUxBVElPTiBsaXN0cyB3aWxsIGxpbmsgdG8gdGhlIHNvdXJjZSBjb2RlLiBPdGhlcndpc2UgdGhl
eSB3aWxsCi0jIGxpbmsgdG8gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBZRVMuCi0KLVJFRkVSRU5DRVNfTElOS19TT1VSQ0UgPSBZRVMKLQotIyBJZiBTT1VSQ0Vf
VE9PTFRJUFMgaXMgZW5hYmxlZCAodGhlIGRlZmF1bHQpIHRoZW4gaG92ZXJpbmcgYSBoeXBlcmxp
bmsgaW4gdGhlCi0jIHNvdXJjZSBjb2RlIHdpbGwgc2hvdyBhIHRvb2x0aXAgd2l0aCBhZGRpdGlv
bmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgcHJvdG90eXBlLAotIyBicmllZiBkZXNjcmlwdGlvbiBh
bmQgbGlua3MgdG8gdGhlIGRlZmluaXRpb24gYW5kIGRvY3VtZW50YXRpb24uIFNpbmNlIHRoaXMK
LSMgd2lsbCBtYWtlIHRoZSBIVE1MIGZpbGUgbGFyZ2VyIGFuZCBsb2FkaW5nIG9mIGxhcmdlIGZp
bGVzIGEgYml0IHNsb3dlciwgeW91Ci0jIGNhbiBvcHQgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBTT1VSQ0VfQlJPV1NFUiBpcyBzZXQgdG8gWUVTLgotCi1TT1VSQ0VfVE9PTFRJUFMg
ICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFVTRV9IVEFHUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVu
IHRoZSByZWZlcmVuY2VzIHRvIHNvdXJjZSBjb2RlIHdpbGwKLSMgcG9pbnQgdG8gdGhlIEhUTUwg
Z2VuZXJhdGVkIGJ5IHRoZSBodGFncygxKSB0b29sIGluc3RlYWQgb2YgZG94eWdlbiBidWlsdC1p
bgotIyBzb3VyY2UgYnJvd3Nlci4gVGhlIGh0YWdzIHRvb2wgaXMgcGFydCBvZiBHTlUncyBnbG9i
YWwgc291cmNlIHRhZ2dpbmcgc3lzdGVtCi0jIChzZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3
YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlvdSB3aWxsIG5lZWQgdmVyc2lvbgotIyA0LjguNiBv
ciBoaWdoZXIuCi0jCi0jIFRvIHVzZSBpdCBkbyB0aGUgZm9sbG93aW5nOgotIyAtIEluc3RhbGwg
dGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGdsb2JhbAotIyAtIEVuYWJsZSBTT1VSQ0VfQlJPV1NFUiBh
bmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWcgZmlsZQotIyAtIE1ha2Ugc3VyZSB0aGUgSU5QVVQg
cG9pbnRzIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZQotIyAtIFJ1biBkb3h5Z2VuIGFz
IG5vcm1hbAotIwotIyBEb3h5Z2VuIHdpbGwgaW52b2tlIGh0YWdzIChhbmQgdGhhdCB3aWxsIGlu
IHR1cm4gaW52b2tlIGd0YWdzKSwgc28gdGhlc2UKLSMgdG9vbHMgbXVzdCBiZSBhdmFpbGFibGUg
ZnJvbSB0aGUgY29tbWFuZCBsaW5lIChpLmUuIGluIHRoZSBzZWFyY2ggcGF0aCkuCi0jCi0jIFRo
ZSByZXN1bHQ6IGluc3RlYWQgb2YgdGhlIHNvdXJjZSBicm93c2VyIGdlbmVyYXRlZCBieSBkb3h5
Z2VuLCB0aGUgbGlua3MgdG8KLSMgc291cmNlIGNvZGUgd2lsbCBub3cgcG9pbnQgdG8gdGhlIG91
dHB1dCBvZiBodGFncy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KLQotVVNF
X0hUQUdTICAgICAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIFZFUkJBVElNX0hFQURFUlMgdGFn
IGlzIHNldCB0aGUgWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKLSMgdmVyYmF0aW0g
Y29weSBvZiB0aGUgaGVhZGVyIGZpbGUgZm9yIGVhY2ggY2xhc3MgZm9yIHdoaWNoIGFuIGluY2x1
ZGUgaXMKLSMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgotIyBTZWUgYWxz
bzogU2VjdGlvbiBcY2xhc3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVZFUkJB
VElNX0hFQURFUlMgICAgICAgPSBZRVMKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1
cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgYWxwaGFiZXRpY2FsIGNsYXNzIGluZGV4Ci0j
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEFMUEhBQkVUSUNBTF9JTkRFWCB0YWcgaXMg
c2V0IHRvIFlFUywgYW4gYWxwaGFiZXRpY2FsIGluZGV4IG9mIGFsbAotIyBjb21wb3VuZHMgd2ls
bCBiZSBnZW5lcmF0ZWQuIEVuYWJsZSB0aGlzIGlmIHRoZSBwcm9qZWN0IGNvbnRhaW5zIGEgbG90
IG9mCi0jIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogWUVTLgotCi1BTFBIQUJFVElDQUxfSU5ERVggICAgID0gWUVTCi1UT0Nf
SU5DTFVERV9IRUFESU5HUyA9IDIKLQotIyBUaGUgQ09MU19JTl9BTFBIQV9JTkRFWCB0YWcgY2Fu
IGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4KLSMgd2hpY2ggdGhl
IGFscGhhYmV0aWNhbCBpbmRleCBsaXN0IHdpbGwgYmUgc3BsaXQuCi0jIE1pbmltdW0gdmFsdWU6
IDEsIG1heGltdW0gdmFsdWU6IDIwLCBkZWZhdWx0IHZhbHVlOiA1LgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgQUxQSEFCRVRJQ0FMX0lOREVYIGlzIHNldCB0byBZRVMuCi0KLUNP
TFNfSU5fQUxQSEFfSU5ERVggICAgPSA1Ci0KLSMgSW4gY2FzZSBhbGwgY2xhc3NlcyBpbiBhIHBy
b2plY3Qgc3RhcnQgd2l0aCBhIGNvbW1vbiBwcmVmaXgsIGFsbCBjbGFzc2VzIHdpbGwKLSMgYmUg
cHV0IHVuZGVyIHRoZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiBUaGUg
SUdOT1JFX1BSRUZJWCB0YWcKLSMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByZWZpeCAob3Ig
YSBsaXN0IG9mIHByZWZpeGVzKSB0aGF0IHNob3VsZCBiZSBpZ25vcmVkCi0jIHdoaWxlIGdlbmVy
YXRpbmcgdGhlIGluZGV4IGhlYWRlcnMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh
ZyBBTFBIQUJFVElDQUxfSU5ERVggaXMgc2V0IHRvIFlFUy4KLQotSUdOT1JFX1BSRUZJWCAgICAg
ICAgICA9Ci0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJl
bGF0ZWQgdG8gdGhlIEhUTUwgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhl
IEdFTkVSQVRFX0hUTUwgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIEhU
TUwgb3V0cHV0Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUdFTkVSQVRFX0hUTUwg
ICAgICAgICAgPSBZRVMKLQotIyBUaGUgSFRNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lm
eSB3aGVyZSB0aGUgSFRNTCBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGgg
aXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBm
cm9udCBvZgotIyBpdC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBodG1sLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgot
Ci1IVE1MX09VVFBVVCAgICAgICAgICAgID0gJUhUTUxfT1VUUFVUJQotCi0jIFRoZSBIVE1MX0ZJ
TEVfRVhURU5TSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lv
biBmb3IgZWFjaAotIyBnZW5lcmF0ZWQgSFRNTCBwYWdlIChmb3IgZXhhbXBsZTogLmh0bSwgLnBo
cCwgLmFzcCkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiAuaHRtbC4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9G
SUxFX0VYVEVOU0lPTiAgICA9IC5odG1sCi0KLSMgVGhlIEhUTUxfSEVBREVSIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgdXNlci1kZWZpbmVkIEhUTUwgaGVhZGVyIGZpbGUgZm9yCi0jIGVh
Y2ggZ2VuZXJhdGVkIEhUTUwgcGFnZS4gSWYgdGhlIHRhZyBpcyBsZWZ0IGJsYW5rIGRveHlnZW4g
d2lsbCBnZW5lcmF0ZSBhCi0jIHN0YW5kYXJkIGhlYWRlci4KLSMKLSMgVG8gZ2V0IHZhbGlkIEhU
TUwgdGhlIGhlYWRlciBmaWxlIHRoYXQgaW5jbHVkZXMgYW55IHNjcmlwdHMgYW5kIHN0eWxlIHNo
ZWV0cwotIyB0aGF0IGRveHlnZW4gbmVlZHMsIHdoaWNoIGlzIGRlcGVuZGVudCBvbiB0aGUgY29u
ZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgKGUuZy4KLSMgdGhlIHNldHRpbmcgR0VORVJBVEVfVFJF
RVZJRVcpLiBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gc3RhcnQgd2l0aCBhCi0jIGRlZmF1
bHQgaGVhZGVyIHVzaW5nCi0jIGRveHlnZW4gLXcgaHRtbCBuZXdfaGVhZGVyLmh0bWwgbmV3X2Zv
b3Rlci5odG1sIG5ld19zdHlsZXNoZWV0LmNzcwotIyBZb3VyQ29uZmlnRmlsZQotIyBhbmQgdGhl
biBtb2RpZnkgdGhlIGZpbGUgbmV3X2hlYWRlci5odG1sLiBTZWUgYWxzbyBzZWN0aW9uICJEb3h5
Z2VuIHVzYWdlIgotIyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZh
dWx0IGhlYWRlciB0aGF0IGRveHlnZW4gbm9ybWFsbHkKLSMgdXNlcy4KLSMgTm90ZTogVGhlIGhl
YWRlciBpcyBzdWJqZWN0IHRvIGNoYW5nZSBzbyB5b3UgdHlwaWNhbGx5IGhhdmUgdG8gcmVnZW5l
cmF0ZSB0aGUKLSMgZGVmYXVsdCBoZWFkZXIgd2hlbiB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJz
aW9uIG9mIGRveHlnZW4uIEZvciBhIGRlc2NyaXB0aW9uCi0jIG9mIHRoZSBwb3NzaWJsZSBtYXJr
ZXJzIGFuZCBibG9jayBuYW1lcyBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxf
SEVBREVSICAgICAgICAgICAgPSBoZWFkZXIuaHRtbAotCi0jIFRoZSBIVE1MX0ZPT1RFUiB0YWcg
Y2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBIVE1MIGZvb3RlciBmb3IgZWFj
aAotIyBnZW5lcmF0ZWQgSFRNTCBwYWdlLiBJZiB0aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdl
biB3aWxsIGdlbmVyYXRlIGEgc3RhbmRhcmQKLSMgZm9vdGVyLiBTZWUgSFRNTF9IRUFERVIgZm9y
IG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIGEgZGVmYXVsdAotIyBmb290ZXIg
YW5kIHdoYXQgc3BlY2lhbCBjb21tYW5kcyBjYW4gYmUgdXNlZCBpbnNpZGUgdGhlIGZvb3Rlci4g
U2VlIGFsc28KLSMgc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhv
dyB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBmb290ZXIKLSMgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5
IHVzZXMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUhUTUxfRk9PVEVSICAgICAgICAgICAgPSBmb290ZXIuaHRtbAotCi0j
IFRoZSBIVE1MX1NUWUxFU0hFRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRl
ZmluZWQgY2FzY2FkaW5nIHN0eWxlCi0jIHNoZWV0IHRoYXQgaXMgdXNlZCBieSBlYWNoIEhUTUwg
cGFnZS4gSXQgY2FuIGJlIHVzZWQgdG8gZmluZS10dW5lIHRoZSBsb29rIG9mCi0jIHRoZSBIVE1M
IG91dHB1dC4gSWYgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0
eWxlIHNoZWV0LgotIyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3Jt
YXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBzdHlsZQotIyBzaGVldCB0aGF0IGRveHlnZW4g
bm9ybWFsbHkgdXNlcy4KLSMgTm90ZTogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIEhUTUxfRVhU
UkFfU1RZTEVTSEVFVCBpbnN0ZWFkIG9mIHRoaXMgdGFnLCBhcwotIyBpdCBpcyBtb3JlIHJvYnVz
dCBhbmQgdGhpcyB0YWcgKEhUTUxfU1RZTEVTSEVFVCkgd2lsbCBpbiB0aGUgZnV0dXJlIGJlY29t
ZQotIyBvYnNvbGV0ZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9TVFlMRVNIRUVUICAgICAgICA9Ci0KLSMgVGhl
IEhUTUxfRVhUUkFfU1RZTEVTSEVFVCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhZGRp
dGlvbmFsIHVzZXItCi0jIGRlZmluZWQgY2FzY2FkaW5nIHN0eWxlIHNoZWV0IHRoYXQgaXMgaW5j
bHVkZWQgYWZ0ZXIgdGhlIHN0YW5kYXJkIHN0eWxlIHNoZWV0cwotIyBjcmVhdGVkIGJ5IGRveHln
ZW4uIFVzaW5nIHRoaXMgb3B0aW9uIG9uZSBjYW4gb3ZlcnJ1bGUgY2VydGFpbiBzdHlsZSBhc3Bl
Y3RzLgotIyBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIEhUTUxfU1RZTEVTSEVFVCBzaW5j
ZSBpdCBkb2VzIG5vdCByZXBsYWNlIHRoZQotIyBzdGFuZGFyZCBzdHlsZSBzaGVldCBhbmQgaXMg
dGhlcmVmb3JlIG1vcmUgcm9idXN0IGFnYWluc3QgZnV0dXJlIHVwZGF0ZXMuCi0jIERveHlnZW4g
d2lsbCBjb3B5IHRoZSBzdHlsZSBzaGVldCBmaWxlIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LiBG
b3IgYW4gZXhhbXBsZQotIyBzZWUgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfRVhU
UkFfU1RZTEVTSEVFVCAgPQotCi0jIFRoZSBIVE1MX0VYVFJBX0ZJTEVTIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4dHJhIGltYWdlcyBvcgotIyBvdGhlciBzb3VyY2Ug
ZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCB0byB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5
LiBOb3RlCi0jIHRoYXQgdGhlc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGJhc2UgSFRN
TCBvdXRwdXQgZGlyZWN0b3J5LiBVc2UgdGhlCi0jICRyZWxwYXRoXiBtYXJrZXIgaW4gdGhlIEhU
TUxfSEVBREVSIGFuZC9vciBIVE1MX0ZPT1RFUiBmaWxlcyB0byBsb2FkIHRoZXNlCi0jIGZpbGVz
LiBJbiB0aGUgSFRNTF9TVFlMRVNIRUVUIGZpbGUsIHVzZSB0aGUgZmlsZSBuYW1lIG9ubHkuIEFs
c28gbm90ZSB0aGF0IHRoZQotIyBmaWxlcyB3aWxsIGJlIGNvcGllZCBhcy1pczsgdGhlcmUgYXJl
IG5vIGNvbW1hbmRzIG9yIG1hcmtlcnMgYXZhaWxhYmxlLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0VYVFJBX0ZJ
TEVTICAgICAgID0KLQotIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0hVRSB0YWcgY29udHJvbHMgdGhl
IGNvbG9yIG9mIHRoZSBIVE1MIG91dHB1dC4gRG94eWdlbgotIyB3aWxsIGFkanVzdCB0aGUgY29s
b3JzIGluIHRoZSBzdHlsZXNoZWV0IGFuZCBiYWNrZ3JvdW5kIGltYWdlcyBhY2NvcmRpbmcgdG8K
LSMgdGhpcyBjb2xvci4gSHVlIGlzIHNwZWNpZmllZCBhcyBhbiBhbmdsZSBvbiBhIGNvbG9yd2hl
ZWwsIHNlZQotIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0h1ZSBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4gRm9yIGluc3RhbmNlIHRoZSB2YWx1ZQotIyAwIHJlcHJlc2VudHMgcmVkLCA2MCBp
cyB5ZWxsb3csIDEyMCBpcyBncmVlbiwgMTgwIGlzIGN5YW4sIDI0MCBpcyBibHVlLCAzMDAKLSMg
cHVycGxlLCBhbmQgMzYwIGlzIHJlZCBhZ2Fpbi4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11
bSB2YWx1ZTogMzU5LCBkZWZhdWx0IHZhbHVlOiAyMjAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfQ09MT1JTVFlM
RV9IVUUgICAgPSAyMjAKLQotIyBUaGUgSFRNTF9DT0xPUlNUWUxFX1NBVCB0YWcgY29udHJvbHMg
dGhlIHB1cml0eSAob3Igc2F0dXJhdGlvbikgb2YgdGhlIGNvbG9ycwotIyBpbiB0aGUgSFRNTCBv
dXRwdXQuIEZvciBhIHZhbHVlIG9mIDAgdGhlIG91dHB1dCB3aWxsIHVzZSBncmF5c2NhbGVzIG9u
bHkuIEEKLSMgdmFsdWUgb2YgMjU1IHdpbGwgcHJvZHVjZSB0aGUgbW9zdCB2aXZpZCBjb2xvcnMu
Ci0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDI1NSwgZGVmYXVsdCB2YWx1ZTog
MTAwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBz
ZXQgdG8gWUVTLgotCi1IVE1MX0NPTE9SU1RZTEVfU0FUICAgID0gMTAwCi0KLSMgVGhlIEhUTUxf
Q09MT1JTVFlMRV9HQU1NQSB0YWcgY29udHJvbHMgdGhlIGdhbW1hIGNvcnJlY3Rpb24gYXBwbGll
ZCB0byB0aGUKLSMgbHVtaW5hbmNlIGNvbXBvbmVudCBvZiB0aGUgY29sb3JzIGluIHRoZSBIVE1M
IG91dHB1dC4gVmFsdWVzIGJlbG93IDEwMAotIyBncmFkdWFsbHkgbWFrZSB0aGUgb3V0cHV0IGxp
Z2h0ZXIsIHdoZXJlYXMgdmFsdWVzIGFib3ZlIDEwMCBtYWtlIHRoZSBvdXRwdXQKLSMgZGFya2Vy
LiBUaGUgdmFsdWUgZGl2aWRlZCBieSAxMDAgaXMgdGhlIGFjdHVhbCBnYW1tYSBhcHBsaWVkLCBz
byA4MCByZXByZXNlbnRzCi0jIGEgZ2FtbWEgb2YgMC44LCBUaGUgdmFsdWUgMjIwIHJlcHJlc2Vu
dHMgYSBnYW1tYSBvZiAyLjIsIGFuZCAxMDAgZG9lcyBub3QKLSMgY2hhbmdlIHRoZSBnYW1tYS4K
LSMgTWluaW11bSB2YWx1ZTogNDAsIG1heGltdW0gdmFsdWU6IDI0MCwgZGVmYXVsdCB2YWx1ZTog
ODAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNl
dCB0byBZRVMuCi0KLUhUTUxfQ09MT1JTVFlMRV9HQU1NQSAgPSA4MAotCi0jIElmIHRoZSBIVE1M
X1RJTUVTVEFNUCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBmb290ZXIgb2YgZWFjaCBnZW5l
cmF0ZWQgSFRNTAotIyBwYWdlIHdpbGwgY29udGFpbiB0aGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRo
ZSBwYWdlIHdhcyBnZW5lcmF0ZWQuIFNldHRpbmcgdGhpcwotIyB0byBOTyBjYW4gaGVscCB3aGVu
IGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIG11bHRpcGxlIHJ1bnMuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9I
VE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfVElNRVNUQU1QICAgICAgICAgPSBZRVMKLQotIyBJ
ZiB0aGUgSFRNTF9EWU5BTUlDX1NFQ1RJT05TIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGdl
bmVyYXRlZCBIVE1MCi0jIGRvY3VtZW50YXRpb24gd2lsbCBjb250YWluIHNlY3Rpb25zIHRoYXQg
Y2FuIGJlIGhpZGRlbiBhbmQgc2hvd24gYWZ0ZXIgdGhlCi0jIHBhZ2UgaGFzIGxvYWRlZC4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0RZTkFNSUNfU0VDVElPTlMg
ID0gWUVTCi0KLSMgV2l0aCBIVE1MX0lOREVYX05VTV9FTlRSSUVTIG9uZSBjYW4gY29udHJvbCB0
aGUgcHJlZmVycmVkIG51bWJlciBvZiBlbnRyaWVzCi0jIHNob3duIGluIHRoZSB2YXJpb3VzIHRy
ZWUgc3RydWN0dXJlZCBpbmRpY2VzIGluaXRpYWxseTsgdGhlIHVzZXIgY2FuIGV4cGFuZAotIyBh
bmQgY29sbGFwc2UgZW50cmllcyBkeW5hbWljYWxseSBsYXRlciBvbi4gRG94eWdlbiB3aWxsIGV4
cGFuZCB0aGUgdHJlZSB0bwotIyBzdWNoIGEgbGV2ZWwgdGhhdCBhdCBtb3N0IHRoZSBzcGVjaWZp
ZWQgbnVtYmVyIG9mIGVudHJpZXMgYXJlIHZpc2libGUgKHVubGVzcwotIyBhIGZ1bGx5IGNvbGxh
cHNlZCB0cmVlIGFscmVhZHkgZXhjZWVkcyB0aGlzIGFtb3VudCkuIFNvIHNldHRpbmcgdGhlIG51
bWJlciBvZgotIyBlbnRyaWVzIDEgd2lsbCBwcm9kdWNlIGEgZnVsbCBjb2xsYXBzZWQgdHJlZSBi
eSBkZWZhdWx0LiAwIGlzIGEgc3BlY2lhbCB2YWx1ZQotIyByZXByZXNlbnRpbmcgYW4gaW5maW5p
dGUgbnVtYmVyIG9mIGVudHJpZXMgYW5kIHdpbGwgcmVzdWx0IGluIGEgZnVsbCBleHBhbmRlZAot
IyB0cmVlIGJ5IGRlZmF1bHQuCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDk5
OTksIGRlZmF1bHQgdmFsdWU6IDEwMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9JTkRFWF9OVU1fRU5UUklFUyA9
IDEwMAotCi0jIElmIHRoZSBHRU5FUkFURV9ET0NTRVQgdGFnIGlzIHNldCB0byBZRVMsIGFkZGl0
aW9uYWwgaW5kZXggZmlsZXMgd2lsbCBiZQotIyBnZW5lcmF0ZWQgdGhhdCBjYW4gYmUgdXNlZCBh
cyBpbnB1dCBmb3IgQXBwbGUncyBYY29kZSAzIGludGVncmF0ZWQgZGV2ZWxvcG1lbnQKLSMgZW52
aXJvbm1lbnQgKHNlZTogaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vdG9vbHMveGNvZGUvKSwg
aW50cm9kdWNlZCB3aXRoCi0jIE9TWCAxMC41IChMZW9wYXJkKS4gVG8gY3JlYXRlIGEgZG9jdW1l
bnRhdGlvbiBzZXQsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhCi0jIE1ha2VmaWxlIGluIHRoZSBI
VE1MIG91dHB1dCBkaXJlY3RvcnkuIFJ1bm5pbmcgbWFrZSB3aWxsIHByb2R1Y2UgdGhlIGRvY3Nl
dCBpbgotIyB0aGF0IGRpcmVjdG9yeSBhbmQgcnVubmluZyBtYWtlIGluc3RhbGwgd2lsbCBpbnN0
YWxsIHRoZSBkb2NzZXQgaW4KLSMgfi9MaWJyYXJ5L0RldmVsb3Blci9TaGFyZWQvRG9jdW1lbnRh
dGlvbi9Eb2NTZXRzIHNvIHRoYXQgWGNvZGUgd2lsbCBmaW5kIGl0IGF0Ci0jIHN0YXJ0dXAuIFNl
ZSBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90b29scy9jcmVhdGluZ2RvY3NldHN3aXRoZG94
eWdlbi5odG1sCi0jIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUdFTkVSQVRFX0RPQ1NFVCAgICAgICAgPSBOTwotCi0jIFRoaXMgdGFn
IGRldGVybWluZXMgdGhlIG5hbWUgb2YgdGhlIGRvY3NldCBmZWVkLiBBIGRvY3VtZW50YXRpb24g
ZmVlZCBwcm92aWRlcwotIyBhbiB1bWJyZWxsYSB1bmRlciB3aGljaCBtdWx0aXBsZSBkb2N1bWVu
dGF0aW9uIHNldHMgZnJvbSBhIHNpbmdsZSBwcm92aWRlcgotIyAoc3VjaCBhcyBhIGNvbXBhbnkg
b3IgcHJvZHVjdCBzdWl0ZSkgY2FuIGJlIGdyb3VwZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBEb3h5Z2VuIGdlbmVyYXRlZCBkb2NzLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgR0VORVJBVEVfRE9DU0VUIGlzIHNldCB0byBZRVMuCi0KLURPQ1NFVF9GRUVETkFNRSAgICAg
ICAgPSAiRG94eWdlbiBnZW5lcmF0ZWQgZG9jcyIKLQotIyBUaGlzIHRhZyBzcGVjaWZpZXMgYSBz
dHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGRvY3VtZW50YXRpb24KLSMg
c2V0IGJ1bmRsZS4gVGhpcyBzaG91bGQgYmUgYSByZXZlcnNlIGRvbWFpbi1uYW1lIHN0eWxlIHN0
cmluZywgZS5nLgotIyBjb20ubXljb21wYW55Lk15RG9jU2V0LiBEb3h5Z2VuIHdpbGwgYXBwZW5k
IC5kb2NzZXQgdG8gdGhlIG5hbWUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdl
bi5Qcm9qZWN0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfRE9D
U0VUIGlzIHNldCB0byBZRVMuCi0KLURPQ1NFVF9CVU5ETEVfSUQgICAgICAgPSBvcmcuZG94eWdl
bi5Qcm9qZWN0Ci0KLSMgVGhlIERPQ1NFVF9QVUJMSVNIRVJfSUQgdGFnIHNwZWNpZmllcyBhIHN0
cmluZyB0aGF0IHNob3VsZCB1bmlxdWVseSBpZGVudGlmeQotIyB0aGUgZG9jdW1lbnRhdGlvbiBw
dWJsaXNoZXIuIFRoaXMgc2hvdWxkIGJlIGEgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZQotIyBz
dHJpbmcsIGUuZy4gY29tLm15Y29tcGFueS5NeURvY1NldC5kb2N1bWVudGF0aW9uLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHVibGlzaGVyLgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfRE9DU0VUIGlzIHNldCB0byBZRVMuCi0KLURPQ1NF
VF9QVUJMSVNIRVJfSUQgICAgPSBvcmcuZG94eWdlbi5QdWJsaXNoZXIKLQotIyBUaGUgRE9DU0VU
X1BVQkxJU0hFUl9OQU1FIHRhZyBpZGVudGlmaWVzIHRoZSBkb2N1bWVudGF0aW9uIHB1Ymxpc2hl
ci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFB1Ymxpc2hlci4KLSMgVGhpcyB0YWcgcmVxdWly
ZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgotCi1ET0NTRVRf
UFVCTElTSEVSX05BTUUgID0gUHVibGlzaGVyCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0hUTUxIRUxQ
IHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiBnZW5lcmF0ZXMgdGhyZWUKLSMgYWRkaXRp
b25hbCBIVE1MIGluZGV4IGZpbGVzOiBpbmRleC5oaHAsIGluZGV4LmhoYywgYW5kIGluZGV4Lmho
ay4gVGhlCi0jIGluZGV4LmhocCBpcyBhIHByb2plY3QgZmlsZSB0aGF0IGNhbiBiZSByZWFkIGJ5
IE1pY3Jvc29mdCdzIEhUTUwgSGVscCBXb3Jrc2hvcAotIyAoc2VlOiBodHRwOi8vd3d3Lm1pY3Jv
c29mdC5jb20vZW4tdXMvZG93bmxvYWQvZGV0YWlscy5hc3B4P2lkPTIxMTM4KSBvbgotIyBXaW5k
b3dzLgotIwotIyBUaGUgSFRNTCBIZWxwIFdvcmtzaG9wIGNvbnRhaW5zIGEgY29tcGlsZXIgdGhh
dCBjYW4gY29udmVydCBhbGwgSFRNTCBvdXRwdXQKLSMgZ2VuZXJhdGVkIGJ5IGRveHlnZW4gaW50
byBhIHNpbmdsZSBjb21waWxlZCBIVE1MIGZpbGUgKC5jaG0pLiBDb21waWxlZCBIVE1MCi0jIGZp
bGVzIGFyZSBub3cgdXNlZCBhcyB0aGUgV2luZG93cyA5OCBoZWxwIGZvcm1hdCwgYW5kIHdpbGwg
cmVwbGFjZSB0aGUgb2xkCi0jIFdpbmRvd3MgaGVscCBmb3JtYXQgKC5obHApIG9uIGFsbCBXaW5k
b3dzIHBsYXRmb3JtcyBpbiB0aGUgZnV0dXJlLiBDb21wcmVzc2VkCi0jIEhUTUwgZmlsZXMgYWxz
byBjb250YWluIGFuIGluZGV4LCBhIHRhYmxlIG9mIGNvbnRlbnRzLCBhbmQgeW91IGNhbiBzZWFy
Y2ggZm9yCi0jIHdvcmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgSFRNTCB3b3Jrc2hvcCBh
bHNvIGNvbnRhaW5zIGEgdmlld2VyIGZvcgotIyBjb21wcmVzc2VkIEhUTUwgZmlsZXMuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotR0VORVJBVEVfSFRNTEhFTFAgICAgICA9
ICVIVE1MX0hFTFAlCi0KLSMgVGhlIENITV9GSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5
IHRoZSBmaWxlIG5hbWUgb2YgdGhlIHJlc3VsdGluZyAuY2htCi0jIGZpbGUuIFlvdSBjYW4gYWRk
IGEgcGF0aCBpbiBmcm9udCBvZiB0aGUgZmlsZSBpZiB0aGUgcmVzdWx0IHNob3VsZCBub3QgYmUK
LSMgd3JpdHRlbiB0byB0aGUgaHRtbCBvdXRwdXQgZGlyZWN0b3J5LgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotQ0hN
X0ZJTEUgICAgICAgICAgICAgICA9IGpzb25jcHAtJUpTT05DUFBfVkVSU0lPTiUuY2htCi0KLSMg
VGhlIEhIQ19MT0NBVElPTiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24g
KGFic29sdXRlIHBhdGgKLSMgaW5jbHVkaW5nIGZpbGUgbmFtZSkgb2YgdGhlIEhUTUwgaGVscCBj
b21waWxlciAoIGhoYy5leGUpLiBJZiBub24tZW1wdHkKLSMgZG94eWdlbiB3aWxsIHRyeSB0byBy
dW4gdGhlIEhUTUwgaGVscCBjb21waWxlciBvbiB0aGUgZ2VuZXJhdGVkIGluZGV4LmhocC4KLSMg
VGhlIGZpbGUgaGFzIHRvIGJlIHNwZWNpZmllZCB3aXRoIGZ1bGwgcGF0aC4KLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCi0K
LUhIQ19MT0NBVElPTiAgICAgICAgICAgPSAiYzpcUHJvZ3JhbSBGaWxlc1xIVE1MIEhlbHAgV29y
a3Nob3BcaGhjLmV4ZSIKLQotIyBUaGUgR0VORVJBVEVfQ0hJIGZsYWcgY29udHJvbHMgaWYgYSBz
ZXBhcmF0ZSAuY2hpIGluZGV4IGZpbGUgaXMgZ2VuZXJhdGVkICgKLSMgWUVTKSBvciB0aGF0IGl0
IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbWFzdGVyIC5jaG0gZmlsZSAoIE5PKS4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
R0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotR0VORVJBVEVfQ0hJICAgICAgICAg
ICA9IFlFUwotCi0jIFRoZSBDSE1fSU5ERVhfRU5DT0RJTkcgaXMgdXNlZCB0byBlbmNvZGUgSHRt
bEhlbHAgaW5kZXggKCBoaGspLCBjb250ZW50ICggaGhjKQotIyBhbmQgcHJvamVjdCBmaWxlIGNv
bnRlbnQuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVM
UCBpcyBzZXQgdG8gWUVTLgotCi1DSE1fSU5ERVhfRU5DT0RJTkcgICAgID0KLQotIyBUaGUgQklO
QVJZX1RPQyBmbGFnIGNvbnRyb2xzIHdoZXRoZXIgYSBiaW5hcnkgdGFibGUgb2YgY29udGVudHMg
aXMgZ2VuZXJhdGVkICgKLSMgWUVTKSBvciBhIG5vcm1hbCB0YWJsZSBvZiBjb250ZW50cyAoIE5P
KSBpbiB0aGUgLmNobSBmaWxlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVT
LgotCi1CSU5BUllfVE9DICAgICAgICAgICAgID0gWUVTCi0KLSMgVGhlIFRPQ19FWFBBTkQgZmxh
ZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBhZGQgZXh0cmEgaXRlbXMgZm9yIGdyb3VwIG1lbWJlcnMg
dG8KLSMgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG9mIHRoZSBIVE1MIGhlbHAgZG9jdW1lbnRhdGlv
biBhbmQgdG8gdGhlIHRyZWUgdmlldy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRv
IFlFUy4KLQotVE9DX0VYUEFORCAgICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBHRU5FUkFU
RV9RSFAgdGFnIGlzIHNldCB0byBZRVMgYW5kIGJvdGggUUhQX05BTUVTUEFDRSBhbmQKLSMgUUhQ
X1ZJUlRVQUxfRk9MREVSIGFyZSBzZXQsIGFuIGFkZGl0aW9uYWwgaW5kZXggZmlsZSB3aWxsIGJl
IGdlbmVyYXRlZCB0aGF0Ci0jIGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBRdCdzIHFoZWxwZ2Vu
ZXJhdG9yIHRvIGdlbmVyYXRlIGEgUXQgQ29tcHJlc3NlZCBIZWxwCi0jICgucWNoKSBvZiB0aGUg
Z2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5P
LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQg
dG8gWUVTLgotCi1HRU5FUkFURV9RSFAgICAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgUUhHX0xP
Q0FUSU9OIHRhZyBpcyBzcGVjaWZpZWQsIHRoZSBRQ0hfRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8g
c3BlY2lmeQotIyB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgLnFjaCBmaWxlLiBUaGUg
cGF0aCBzcGVjaWZpZWQgaXMgcmVsYXRpdmUgdG8KLSMgdGhlIEhUTUwgb3V0cHV0IGZvbGRlci4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8g
WUVTLgotCi1RQ0hfRklMRSAgICAgICAgICAgICAgID0KLQotIyBUaGUgUUhQX05BTUVTUEFDRSB0
YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3BhY2UgdG8gdXNlIHdoZW4gZ2VuZXJhdGluZyBRdCBIZWxw
Ci0jIFByb2plY3Qgb3V0cHV0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhl
bHAgUHJvamVjdCAvIE5hbWVzcGFjZQotIyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9j
L3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjbmFtZXNwYWNlKS4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhQX05BTUVTUEFDRSAgICAgICAg
ICA9Ci0KLSMgVGhlIFFIUF9WSVJUVUFMX0ZPTERFUiB0YWcgc3BlY2lmaWVzIHRoZSBuYW1lc3Bh
Y2UgdG8gdXNlIHdoZW4gZ2VuZXJhdGluZyBRdAotIyBIZWxwIFByb2plY3Qgb3V0cHV0LiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0IEhlbHAgUHJvamVjdCAvIFZpcnR1YWwKLSMg
Rm9sZGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9q
ZWN0Lmh0bWwjdmlydHVhbC0KLSMgZm9sZGVycykuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBk
b2MuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0
IHRvIFlFUy4KLQotUUhQX1ZJUlRVQUxfRk9MREVSICAgICA9IGRvYwotCi0jIElmIHRoZSBRSFBf
Q1VTVF9GSUxURVJfTkFNRSB0YWcgaXMgc2V0LCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSBj
dXN0b20KLSMgZmlsdGVyIHRvIGFkZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBR
dCBIZWxwIFByb2plY3QgLyBDdXN0b20KLSMgRmlsdGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVj
dC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjY3VzdG9tLQotIyBmaWx0ZXJzKS4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8g
WUVTLgotCi1RSFBfQ1VTVF9GSUxURVJfTkFNRSAgID0KLQotIyBUaGUgUUhQX0NVU1RfRklMVEVS
X0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlCi0j
IGN1c3RvbSBmaWx0ZXIgdG8gYWRkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIFF0
IEhlbHAgUHJvamVjdCAvIEN1c3RvbQotIyBGaWx0ZXJzIChzZWU6IGh0dHA6Ly9xdC1wcm9qZWN0
Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNjdXN0b20tCi0jIGZpbHRlcnMpLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZ
RVMuCi0KLVFIUF9DVVNUX0ZJTFRFUl9BVFRSUyAgPQotCi0jIFRoZSBRSFBfU0VDVF9GSUxURVJf
QVRUUlMgdGFnIHNwZWNpZmllcyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyB0aGlzCi0jIHBy
b2plY3QncyBmaWx0ZXIgc2VjdGlvbiBtYXRjaGVzLiBRdCBIZWxwIFByb2plY3QgLyBGaWx0ZXIg
QXR0cmlidXRlcyAoc2VlOgotIyBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhl
bHBwcm9qZWN0Lmh0bWwjZmlsdGVyLWF0dHJpYnV0ZXMpLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0KLVFIUF9TRUNUX0ZJTFRF
Ul9BVFRSUyAgPQotCi0jIFRoZSBRSEdfTE9DQVRJT04gdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNp
ZnkgdGhlIGxvY2F0aW9uIG9mIFF0J3MKLSMgcWhlbHBnZW5lcmF0b3IuIElmIG5vbi1lbXB0eSBk
b3h5Z2VuIHdpbGwgdHJ5IHRvIHJ1biBxaGVscGdlbmVyYXRvciBvbiB0aGUKLSMgZ2VuZXJhdGVk
IC5xaHAgZmlsZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FI
UCBpcyBzZXQgdG8gWUVTLgotCi1RSEdfTE9DQVRJT04gICAgICAgICAgID0KLQotIyBJZiB0aGUg
R0VORVJBVEVfRUNMSVBTRUhFTFAgdGFnIGlzIHNldCB0byBZRVMsIGFkZGl0aW9uYWwgaW5kZXgg
ZmlsZXMgd2lsbCBiZQotIyBnZW5lcmF0ZWQsIHRvZ2V0aGVyIHdpdGggdGhlIEhUTUwgZmlsZXMs
IHRoZXkgZm9ybSBhbiBFY2xpcHNlIGhlbHAgcGx1Z2luLiBUbwotIyBpbnN0YWxsIHRoaXMgcGx1
Z2luIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSB1bmRlciB0aGUgaGVscCBjb250ZW50cyBtZW51IGlu
Ci0jIEVjbGlwc2UsIHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhl
IEhUTUwgYW5kIFhNTCBmaWxlcyBuZWVkcwotIyB0byBiZSBjb3BpZWQgaW50byB0aGUgcGx1Z2lu
cyBkaXJlY3Rvcnkgb2YgZWNsaXBzZS4gVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeQotIyB3aXRo
aW4gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRUNMSVBT
RV9ET0NfSUQgdmFsdWUuCi0jIEFmdGVyIGNvcHlpbmcgRWNsaXBzZSBuZWVkcyB0byBiZSByZXN0
YXJ0ZWQgYmVmb3JlIHRoZSBoZWxwIGFwcGVhcnMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0
IHRvIFlFUy4KLQotR0VORVJBVEVfRUNMSVBTRUhFTFAgICA9IE5PCi0KLSMgQSB1bmlxdWUgaWRl
bnRpZmllciBmb3IgdGhlIEVjbGlwc2UgaGVscCBwbHVnaW4uIFdoZW4gaW5zdGFsbGluZyB0aGUg
cGx1Z2luCi0jIHRoZSBkaXJlY3RvcnkgbmFtZSBjb250YWluaW5nIHRoZSBIVE1MIGFuZCBYTUwg
ZmlsZXMgc2hvdWxkIGFsc28gaGF2ZSB0aGlzCi0jIG5hbWUuIEVhY2ggZG9jdW1lbnRhdGlvbiBz
ZXQgc2hvdWxkIGhhdmUgaXRzIG93biBpZGVudGlmaWVyLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogb3JnLmRveHlnZW4uUHJvamVjdC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0VDTElQU0VIRUxQIGlzIHNldCB0byBZRVMuCi0KLUVDTElQU0VfRE9DX0lEICAg
ICAgICAgPSBvcmcuZG94eWdlbi5Qcm9qZWN0Ci0KLSMgSWYgeW91IHdhbnQgZnVsbCBjb250cm9s
IG92ZXIgdGhlIGxheW91dCBvZiB0aGUgZ2VuZXJhdGVkIEhUTUwgcGFnZXMgaXQgbWlnaHQKLSMg
YmUgbmVjZXNzYXJ5IHRvIGRpc2FibGUgdGhlIGluZGV4IGFuZCByZXBsYWNlIGl0IHdpdGggeW91
ciBvd24uIFRoZQotIyBESVNBQkxFX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29m
ZiB0aGUgY29uZGVuc2VkIGluZGV4ICh0YWJzKSBhdCB0b3AKLSMgb2YgZWFjaCBIVE1MIHBhZ2Uu
IEEgdmFsdWUgb2YgTk8gZW5hYmxlcyB0aGUgaW5kZXggYW5kIHRoZSB2YWx1ZSBZRVMgZGlzYWJs
ZXMKLSMgaXQuIFNpbmNlIHRoZSB0YWJzIGluIHRoZSBpbmRleCBjb250YWluIHRoZSBzYW1lIGlu
Zm9ybWF0aW9uIGFzIHRoZSBuYXZpZ2F0aW9uCi0jIHRyZWUsIHlvdSBjYW4gc2V0IHRoaXMgb3B0
aW9uIHRvIFlFUyBpZiB5b3UgYWxzbyBzZXQgR0VORVJBVEVfVFJFRVZJRVcgdG8gWUVTLgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh
ZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLURJU0FCTEVfSU5ERVggICAgICAgICAg
PSBOTwotCi0jIFRoZSBHRU5FUkFURV9UUkVFVklFVyB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdo
ZXRoZXIgYSB0cmVlLWxpa2UgaW5kZXgKLSMgc3RydWN0dXJlIHNob3VsZCBiZSBnZW5lcmF0ZWQg
dG8gZGlzcGxheSBoaWVyYXJjaGljYWwgaW5mb3JtYXRpb24uIElmIHRoZSB0YWcKLSMgdmFsdWUg
aXMgc2V0IHRvIFlFUywgYSBzaWRlIHBhbmVsIHdpbGwgYmUgZ2VuZXJhdGVkIGNvbnRhaW5pbmcg
YSB0cmVlLWxpa2UKLSMgaW5kZXggc3RydWN0dXJlIChqdXN0IGxpa2UgdGhlIG9uZSB0aGF0IGlz
IGdlbmVyYXRlZCBmb3IgSFRNTCBIZWxwKS4gRm9yIHRoaXMKLSMgdG8gd29yayBhIGJyb3dzZXIg
dGhhdCBzdXBwb3J0cyBKYXZhU2NyaXB0LCBESFRNTCwgQ1NTIGFuZCBmcmFtZXMgaXMgcmVxdWly
ZWQKLSMgKGkuZS4gYW55IG1vZGVybiBicm93c2VyKS4gV2luZG93cyB1c2VycyBhcmUgcHJvYmFi
bHkgYmV0dGVyIG9mZiB1c2luZyB0aGUKLSMgSFRNTCBoZWxwIGZlYXR1cmUuIFZpYSBjdXN0b20g
c3R5bGVzaGVldHMgKHNlZSBIVE1MX0VYVFJBX1NUWUxFU0hFRVQpIG9uZSBjYW4KLSMgZnVydGhl
ciBmaW5lLXR1bmUgdGhlIGxvb2sgb2YgdGhlIGluZGV4LiBBcyBhbiBleGFtcGxlLCB0aGUgZGVm
YXVsdCBzdHlsZQotIyBzaGVldCBnZW5lcmF0ZWQgYnkgZG94eWdlbiBoYXMgYW4gZXhhbXBsZSB0
aGF0IHNob3dzIGhvdyB0byBwdXQgYW4gaW1hZ2UgYXQKLSMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUg
aW5zdGVhZCBvZiB0aGUgUFJPSkVDVF9OQU1FLiBTaW5jZSB0aGUgdHJlZSBiYXNpY2FsbHkgaGFz
Ci0jIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIHRoZSB0YWIgaW5kZXgsIHlvdSBjb3VsZCBjb25z
aWRlciBzZXR0aW5nCi0jIERJU0FCTEVfSU5ERVggdG8gWUVTIHdoZW4gZW5hYmxpbmcgdGhpcyBv
cHRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotR0VORVJBVEVfVFJF
RVZJRVcgICAgICA9IE5PCi0KLSMgVGhlIEVOVU1fVkFMVUVTX1BFUl9MSU5FIHRhZyBjYW4gYmUg
dXNlZCB0byBzZXQgdGhlIG51bWJlciBvZiBlbnVtIHZhbHVlcyB0aGF0Ci0jIGRveHlnZW4gd2ls
bCBncm91cCBvbiBvbmUgbGluZSBpbiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4K
LSMKLSMgTm90ZSB0aGF0IGEgdmFsdWUgb2YgMCB3aWxsIGNvbXBsZXRlbHkgc3VwcHJlc3MgdGhl
IGVudW0gdmFsdWVzIGZyb20gYXBwZWFyaW5nCi0jIGluIHRoZSBvdmVydmlldyBzZWN0aW9uLgot
IyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNC4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRv
IFlFUy4KLQotRU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQKLQotIyBJZiB0aGUgdHJlZXZpZXcg
aXMgZW5hYmxlZCAoc2VlIEdFTkVSQVRFX1RSRUVWSUVXKSB0aGVuIHRoaXMgdGFnIGNhbiBiZSB1
c2VkCi0jIHRvIHNldCB0aGUgaW5pdGlhbCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZnJhbWUg
aW4gd2hpY2ggdGhlIHRyZWUgaXMgc2hvd24uCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0g
dmFsdWU6IDE1MDAsIGRlZmF1bHQgdmFsdWU6IDI1MC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotVFJFRVZJRVdfV0lEVEgg
ICAgICAgICA9IDI1MAotCi0jIFdoZW4gdGhlIEVYVF9MSU5LU19JTl9XSU5ET1cgb3B0aW9uIGlz
IHNldCB0byBZRVMgZG94eWdlbiB3aWxsIG9wZW4gbGlua3MgdG8KLSMgZXh0ZXJuYWwgc3ltYm9s
cyBpbXBvcnRlZCB2aWEgdGFnIGZpbGVzIGluIGEgc2VwYXJhdGUgd2luZG93LgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5F
UkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUVYVF9MSU5LU19JTl9XSU5ET1cgICAgPSBOTwot
Ci0jIFVzZSB0aGlzIHRhZyB0byBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBvZiBMYVRlWCBmb3JtdWxh
cyBpbmNsdWRlZCBhcyBpbWFnZXMgaW4KLSMgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbi4gV2hlbiB5
b3UgY2hhbmdlIHRoZSBmb250IHNpemUgYWZ0ZXIgYSBzdWNjZXNzZnVsCi0jIGRveHlnZW4gcnVu
IHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlbW92ZSBhbnkgZm9ybV8qLnBuZyBpbWFnZXMgZnJvbSB0
aGUgSFRNTAotIyBvdXRwdXQgZGlyZWN0b3J5IHRvIGZvcmNlIHRoZW0gdG8gYmUgcmVnZW5lcmF0
ZWQuCi0jIE1pbmltdW0gdmFsdWU6IDgsIG1heGltdW0gdmFsdWU6IDUwLCBkZWZhdWx0IHZhbHVl
OiAxMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMg
c2V0IHRvIFlFUy4KLQotRk9STVVMQV9GT05UU0laRSAgICAgICA9IDEwCi0KLSMgVXNlIHRoZSBG
T1JNVUxBX1RSQU5QQVJFTlQgdGFnIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgaW1h
Z2VzCi0jIGdlbmVyYXRlZCBmb3IgZm9ybXVsYXMgYXJlIHRyYW5zcGFyZW50IFBOR3MuIFRyYW5z
cGFyZW50IFBOR3MgYXJlIG5vdAotIyBzdXBwb3J0ZWQgcHJvcGVybHkgZm9yIElFIDYuMCwgYnV0
IGFyZSBzdXBwb3J0ZWQgb24gYWxsIG1vZGVybiBicm93c2Vycy4KLSMKLSMgTm90ZSB0aGF0IHdo
ZW4gY2hhbmdpbmcgdGhpcyBvcHRpb24geW91IG5lZWQgdG8gZGVsZXRlIGFueSBmb3JtXyoucG5n
IGZpbGVzIGluCi0jIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjaGFuZ2Vz
IGhhdmUgZWZmZWN0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1GT1JN
VUxBX1RSQU5TUEFSRU5UICAgID0gWUVTCi0KLSMgRW5hYmxlIHRoZSBVU0VfTUFUSEpBWCBvcHRp
b24gdG8gcmVuZGVyIExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhKYXggKHNlZQotIyBodHRwOi8v
d3d3Lm1hdGhqYXgub3JnKSB3aGljaCB1c2VzIGNsaWVudCBzaWRlIEphdmFTY3JpcHQgZm9yIHRo
ZSByZW5kZXJpbmcKLSMgaW5zdGVhZCBvZiB1c2luZyBwcmVyZW5kZXJlZCBiaXRtYXBzLiBVc2Ug
dGhpcyBpZiB5b3UgZG8gbm90IGhhdmUgTGFUZVgKLSMgaW5zdGFsbGVkIG9yIGlmIHlvdSB3YW50
IHRvIGZvcm11bGFzIGxvb2sgcHJldHRpZXIgaW4gdGhlIEhUTUwgb3V0cHV0LiBXaGVuCi0jIGVu
YWJsZWQgeW91IG1heSBhbHNvIG5lZWQgdG8gaW5zdGFsbCBNYXRoSmF4IHNlcGFyYXRlbHkgYW5k
IGNvbmZpZ3VyZSB0aGUgcGF0aAotIyB0byBpdCB1c2luZyB0aGUgTUFUSEpBWF9SRUxQQVRIIG9w
dGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1VU0VfTUFUSEpBWCAg
ICAgICAgICAgID0gTk8KLQotIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgY2FuIHNldCB0
aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0IHRvIGJlIHVzZWQgZm9yCi0jIHRoZSBNYXRoSmF4IG91
dHB1dC4gU2VlIHRoZSBNYXRoSmF4IHNpdGUgKHNlZToKLSMgaHR0cDovL2RvY3MubWF0aGpheC5v
cmcvZW4vbGF0ZXN0L291dHB1dC5odG1sKSBmb3IgbW9yZSBkZXRhaWxzLgotIyBQb3NzaWJsZSB2
YWx1ZXMgYXJlOiBIVE1MLUNTUyAod2hpY2ggaXMgc2xvd2VyLCBidXQgaGFzIHRoZSBiZXN0Ci0j
IGNvbXBhdGliaWxpdHkpLCBOYXRpdmVNTUwgKGkuZS4gTWF0aE1MKSBhbmQgU1ZHLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogSFRNTC1DU1MuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBVU0VfTUFUSEpBWCBpcyBzZXQgdG8gWUVTLgotCi1NQVRISkFYX0ZPUk1BVCAgICAgICAg
ID0gSFRNTC1DU1MKLQotIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgbmVlZCB0byBzcGVj
aWZ5IHRoZSBsb2NhdGlvbiByZWxhdGl2ZSB0byB0aGUgSFRNTAotIyBvdXRwdXQgZGlyZWN0b3J5
IHVzaW5nIHRoZSBNQVRISkFYX1JFTFBBVEggb3B0aW9uLiBUaGUgZGVzdGluYXRpb24gZGlyZWN0
b3J5Ci0jIHNob3VsZCBjb250YWluIHRoZSBNYXRoSmF4LmpzIHNjcmlwdC4gRm9yIGluc3RhbmNl
LCBpZiB0aGUgbWF0aGpheCBkaXJlY3RvcnkKLSMgaXMgbG9jYXRlZCBhdCB0aGUgc2FtZSBsZXZl
bCBhcyB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LCB0aGVuCi0jIE1BVEhKQVhfUkVMUEFUSCBz
aG91bGQgYmUgLi4vbWF0aGpheC4gVGhlIGRlZmF1bHQgdmFsdWUgcG9pbnRzIHRvIHRoZSBNYXRo
SmF4Ci0jIENvbnRlbnQgRGVsaXZlcnkgTmV0d29yayBzbyB5b3UgY2FuIHF1aWNrbHkgc2VlIHRo
ZSByZXN1bHQgd2l0aG91dCBpbnN0YWxsaW5nCi0jIE1hdGhKYXguIEhvd2V2ZXIsIGl0IGlzIHN0
cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYSBsb2NhbCBjb3B5IG9mCi0jIE1hdGhKYXgg
ZnJvbSBodHRwOi8vd3d3Lm1hdGhqYXgub3JnIGJlZm9yZSBkZXBsb3ltZW50LgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogaHR0cDovL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdC4KLSMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMu
Ci0KLU1BVEhKQVhfUkVMUEFUSCAgICAgICAgPSBodHRwOi8vY2RuLm1hdGhqYXgub3JnL21hdGhq
YXgvbGF0ZXN0Ci0KLSMgVGhlIE1BVEhKQVhfRVhURU5TSU9OUyB0YWcgY2FuIGJlIHVzZWQgdG8g
c3BlY2lmeSBvbmUgb3IgbW9yZSBNYXRoSmF4Ci0jIGV4dGVuc2lvbiBuYW1lcyB0aGF0IHNob3Vs
ZCBiZSBlbmFibGVkIGR1cmluZyBNYXRoSmF4IHJlbmRlcmluZy4gRm9yIGV4YW1wbGUKLSMgTUFU
SEpBWF9FWFRFTlNJT05TID0gVGVYL0FNU21hdGggVGVYL0FNU3N5bWJvbHMKLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCi0KLU1BVEhK
QVhfRVhURU5TSU9OUyAgICAgPQotCi0jIFRoZSBNQVRISkFYX0NPREVGSUxFIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB3aXRoIGphdmFzY3JpcHQgcGllY2VzCi0jIG9mIGNvZGUg
dGhhdCB3aWxsIGJlIHVzZWQgb24gc3RhcnR1cCBvZiB0aGUgTWF0aEpheCBjb2RlLiBTZWUgdGhl
IE1hdGhKYXggc2l0ZQotIyAoc2VlOiBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qv
b3V0cHV0Lmh0bWwpIGZvciBtb3JlIGRldGFpbHMuIEZvciBhbgotIyBleGFtcGxlIHNlZSB0aGUg
ZG9jdW1lbnRhdGlvbi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRI
SkFYIGlzIHNldCB0byBZRVMuCi0KLU1BVEhKQVhfQ09ERUZJTEUgICAgICAgPQotCi0jIFdoZW4g
dGhlIFNFQVJDSEVOR0lORSB0YWcgaXMgZW5hYmxlZCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBz
ZWFyY2ggYm94IGZvcgotIyB0aGUgSFRNTCBvdXRwdXQuIFRoZSB1bmRlcmx5aW5nIHNlYXJjaCBl
bmdpbmUgdXNlcyBqYXZhc2NyaXB0IGFuZCBESFRNTCBhbmQKLSMgc2hvdWxkIHdvcmsgb24gYW55
IG1vZGVybiBicm93c2VyLiBOb3RlIHRoYXQgd2hlbiB1c2luZyBIVE1MIGhlbHAKLSMgKEdFTkVS
QVRFX0hUTUxIRUxQKSwgUXQgaGVscCAoR0VORVJBVEVfUUhQKSwgb3IgZG9jc2V0cyAoR0VORVJB
VEVfRE9DU0VUKQotIyB0aGVyZSBpcyBhbHJlYWR5IGEgc2VhcmNoIGZ1bmN0aW9uIHNvIHRoaXMg
b25lIHNob3VsZCB0eXBpY2FsbHkgYmUgZGlzYWJsZWQuCi0jIEZvciBsYXJnZSBwcm9qZWN0cyB0
aGUgamF2YXNjcmlwdCBiYXNlZCBzZWFyY2ggZW5naW5lIGNhbiBiZSBzbG93LCB0aGVuCi0jIGVu
YWJsaW5nIFNFUlZFUl9CQVNFRF9TRUFSQ0ggbWF5IHByb3ZpZGUgYSBiZXR0ZXIgc29sdXRpb24u
IEl0IGlzIHBvc3NpYmxlIHRvCi0jIHNlYXJjaCB1c2luZyB0aGUga2V5Ym9hcmQ7IHRvIGp1bXAg
dG8gdGhlIHNlYXJjaCBib3ggdXNlIDxhY2Nlc3Mga2V5PiArIFMKLSMgKHdoYXQgdGhlIDxhY2Nl
c3Mga2V5PiBpcyBkZXBlbmRzIG9uIHRoZSBPUyBhbmQgYnJvd3NlciwgYnV0IGl0IGlzIHR5cGlj
YWxseQotIyA8Q1RSTD4sIDxBTFQ+LzxvcHRpb24+LCBvciBib3RoKS4gSW5zaWRlIHRoZSBzZWFy
Y2ggYm94IHVzZSB0aGUgPGN1cnNvciBkb3duCi0jIGtleT4gdG8ganVtcCBpbnRvIHRoZSBzZWFy
Y2ggcmVzdWx0cyB3aW5kb3csIHRoZSByZXN1bHRzIGNhbiBiZSBuYXZpZ2F0ZWQKLSMgdXNpbmcg
dGhlIDxjdXJzb3Iga2V5cz4uIFByZXNzIDxFbnRlcj4gdG8gc2VsZWN0IGFuIGl0ZW0gb3IgPGVz
Y2FwZT4gdG8gY2FuY2VsCi0jIHRoZSBzZWFyY2guIFRoZSBmaWx0ZXIgb3B0aW9ucyBjYW4gYmUg
c2VsZWN0ZWQgd2hlbiB0aGUgY3Vyc29yIGlzIGluc2lkZSB0aGUKLSMgc2VhcmNoIGJveCBieSBw
cmVzc2luZyA8U2hpZnQ+KzxjdXJzb3IgZG93bj4uIEFsc28gaGVyZSB1c2UgdGhlIDxjdXJzb3Ig
a2V5cz4KLSMgdG8gc2VsZWN0IGEgZmlsdGVyIGFuZCA8RW50ZXI+IG9yIDxlc2NhcGU+IHRvIGFj
dGl2YXRlIG9yIGNhbmNlbCB0aGUgZmlsdGVyCi0jIG9wdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hU
TUwgaXMgc2V0IHRvIFlFUy4KLQotU0VBUkNIRU5HSU5FICAgICAgICAgICA9IE5PCi0KLSMgV2hl
biB0aGUgU0VSVkVSX0JBU0VEX1NFQVJDSCB0YWcgaXMgZW5hYmxlZCB0aGUgc2VhcmNoIGVuZ2lu
ZSB3aWxsIGJlCi0jIGltcGxlbWVudGVkIHVzaW5nIGEgd2ViIHNlcnZlciBpbnN0ZWFkIG9mIGEg
d2ViIGNsaWVudCB1c2luZyBKYXZhU2NyaXB0LiBUaGVyZQotIyBhcmUgdHdvIGZsYXZvdXJzIG9m
IHdlYiBzZXJ2ZXIgYmFzZWQgc2VhcmNoaW5nIGRlcGVuZGluZyBvbiB0aGUKLSMgRVhURVJOQUxf
U0VBUkNIIHNldHRpbmcuIFdoZW4gZGlzYWJsZWQsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIFBI
UCBzY3JpcHQgZm9yCi0jIHNlYXJjaGluZyBhbmQgYW4gaW5kZXggZmlsZSB1c2VkIGJ5IHRoZSBz
Y3JpcHQuIFdoZW4gRVhURVJOQUxfU0VBUkNIIGlzCi0jIGVuYWJsZWQgdGhlIGluZGV4aW5nIGFu
ZCBzZWFyY2hpbmcgbmVlZHMgdG8gYmUgcHJvdmlkZWQgYnkgZXh0ZXJuYWwgdG9vbHMuIFNlZQot
IyB0aGUgc2VjdGlvbiAiRXh0ZXJuYWwgSW5kZXhpbmcgYW5kIFNlYXJjaGluZyIgZm9yIGRldGFp
bHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgotCi1TRVJWRVJfQkFTRURfU0VB
UkNIICAgID0gTk8KLQotIyBXaGVuIEVYVEVSTkFMX1NFQVJDSCB0YWcgaXMgZW5hYmxlZCBkb3h5
Z2VuIHdpbGwgbm8gbG9uZ2VyIGdlbmVyYXRlIHRoZSBQSFAKLSMgc2NyaXB0IGZvciBzZWFyY2hp
bmcuIEluc3RlYWQgdGhlIHNlYXJjaCByZXN1bHRzIGFyZSB3cml0dGVuIHRvIGFuIFhNTCBmaWxl
Ci0jIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBhbiBleHRlcm5hbCBpbmRleGVyLiBE
b3h5Z2VuIHdpbGwgaW52b2tlIGFuCi0jIGV4dGVybmFsIHNlYXJjaCBlbmdpbmUgcG9pbnRlZCB0
byBieSB0aGUgU0VBUkNIRU5HSU5FX1VSTCBvcHRpb24gdG8gb2J0YWluIHRoZQotIyBzZWFyY2gg
cmVzdWx0cy4KLSMKLSMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoIGRv
eHlpbmRleGVyKSBhbmQgc2VhcmNoIGVuZ2luZQotIyAoZG94eXNlYXJjaC5jZ2kpIHdoaWNoIGFy
ZSBiYXNlZCBvbiB0aGUgb3BlbiBzb3VyY2Ugc2VhcmNoIGVuZ2luZSBsaWJyYXJ5Ci0jIFhhcGlh
biAoc2VlOiBodHRwOi8veGFwaWFuLm9yZy8pLgotIwotIyBTZWUgdGhlIHNlY3Rpb24gIkV4dGVy
bmFsIEluZGV4aW5nIGFuZCBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJ
TkUgaXMgc2V0IHRvIFlFUy4KLQotRVhURVJOQUxfU0VBUkNIICAgICAgICA9IE5PCi0KLSMgVGhl
IFNFQVJDSEVOR0lORV9VUkwgc2hvdWxkIHBvaW50IHRvIGEgc2VhcmNoIGVuZ2luZSBob3N0ZWQg
YnkgYSB3ZWIgc2VydmVyCi0jIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBzZWFyY2ggcmVzdWx0cyB3
aGVuIEVYVEVSTkFMX1NFQVJDSCBpcyBlbmFibGVkLgotIwotIyBEb3h5Z2VuIHNoaXBzIHdpdGgg
YW4gZXhhbXBsZSBpbmRleGVyICggZG94eWluZGV4ZXIpIGFuZCBzZWFyY2ggZW5naW5lCi0jIChk
b3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBvcGVuIHNvdXJjZSBzZWFyY2gg
ZW5naW5lIGxpYnJhcnkKLSMgWGFwaWFuIChzZWU6IGh0dHA6Ly94YXBpYW4ub3JnLykuIFNlZSB0
aGUgc2VjdGlvbiAiRXh0ZXJuYWwgSW5kZXhpbmcgYW5kCi0jIFNlYXJjaGluZyIgZm9yIGRldGFp
bHMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0
IHRvIFlFUy4KLQotU0VBUkNIRU5HSU5FX1VSTCAgICAgICA9Ci0KLSMgV2hlbiBTRVJWRVJfQkFT
RURfU0VBUkNIIGFuZCBFWFRFUk5BTF9TRUFSQ0ggYXJlIGJvdGggZW5hYmxlZCB0aGUgdW5pbmRl
eGVkCi0jIHNlYXJjaCBkYXRhIGlzIHdyaXR0ZW4gdG8gYSBmaWxlIGZvciBpbmRleGluZyBieSBh
biBleHRlcm5hbCB0b29sLiBXaXRoIHRoZQotIyBTRUFSQ0hEQVRBX0ZJTEUgdGFnIHRoZSBuYW1l
IG9mIHRoaXMgZmlsZSBjYW4gYmUgc3BlY2lmaWVkLgotIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBz
ZWFyY2hkYXRhLnhtbC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVO
R0lORSBpcyBzZXQgdG8gWUVTLgotCi1TRUFSQ0hEQVRBX0ZJTEUgICAgICAgID0gc2VhcmNoZGF0
YS54bWwKLQotIyBXaGVuIFNFUlZFUl9CQVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJDSCBh
cmUgYm90aCBlbmFibGVkIHRoZQotIyBFWFRFUk5BTF9TRUFSQ0hfSUQgdGFnIGNhbiBiZSB1c2Vk
IGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBwcm9qZWN0LiBUaGlzIGlzCi0jIHVzZWZ1bCBpbiBj
b21iaW5hdGlvbiB3aXRoIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyB0byBzZWFyY2ggdGhyb3VnaCBt
dWx0aXBsZQotIyBwcm9qZWN0cyBhbmQgcmVkaXJlY3QgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUg
cmlnaHQgcHJvamVjdC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVO
R0lORSBpcyBzZXQgdG8gWUVTLgotCi1FWFRFUk5BTF9TRUFSQ0hfSUQgICAgID0KLQotIyBUaGUg
RVhUUkFfU0VBUkNIX01BUFBJTkdTIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgc2VhcmNoaW5n
IHRocm91Z2ggZG94eWdlbgotIyBwcm9qZWN0cyBvdGhlciB0aGFuIHRoZSBvbmUgZGVmaW5lZCBi
eSB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoYXQgYXJlCi0jIGFsbCBhZGRlZCB0byB0
aGUgc2FtZSBleHRlcm5hbCBzZWFyY2ggaW5kZXguIEVhY2ggcHJvamVjdCBuZWVkcyB0byBoYXZl
IGEKLSMgdW5pcXVlIGlkIHNldCB2aWEgRVhURVJOQUxfU0VBUkNIX0lELiBUaGUgc2VhcmNoIG1h
cHBpbmcgdGhlbiBtYXBzIHRoZSBpZCBvZgotIyB0byBhIHJlbGF0aXZlIGxvY2F0aW9uIHdoZXJl
IHRoZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZC4gVGhlIGZvcm1hdCBpczoKLSMgRVhUUkFf
U0VBUkNIX01BUFBJTkdTID0gdGFnbmFtZTE9bG9jMSB0YWduYW1lMj1sb2MyIC4uLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0K
LUVYVFJBX1NFQVJDSF9NQVBQSU5HUyAgPQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZp
Z3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBMYVRlWCBvdXRwdXQKLSMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJBVEVfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94
eWdlbiB3aWxsIGdlbmVyYXRlIExhVGVYIG91dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IFlFUy4KLQotR0VORVJBVEVfTEFURVggICAgICAgICA9IE5PCi0KLSMgVGhlIExBVEVYX09VVFBV
VCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0
LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJ
UkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgotIyBpdC4KLSMgVGhlIGRlZmF1bHQgZGly
ZWN0b3J5IGlzOiBsYXRleC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVS
QVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX09VVFBVVCAgICAgICAgICAgPSBsYXRl
eAotCi0jIFRoZSBMQVRFWF9DTURfTkFNRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUg
TGFUZVggY29tbWFuZCBuYW1lIHRvIGJlCi0jIGludm9rZWQuCi0jCi0jIE5vdGUgdGhhdCB3aGVu
IGVuYWJsaW5nIFVTRV9QREZMQVRFWCB0aGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgZm9yIGdlbmVy
YXRpbmcKLSMgYml0bWFwcyBmb3IgZm9ybXVsYXMgaW4gdGhlIEhUTUwgb3V0cHV0LCBidXQgbm90
IGluIHRoZSBNYWtlZmlsZSB0aGF0IGlzCi0jIHdyaXR0ZW4gdG8gdGhlIG91dHB1dCBkaXJlY3Rv
cnkuCi0jIFRoZSBkZWZhdWx0IGZpbGUgaXM6IGxhdGV4LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfQ01EX05B
TUUgICAgICAgICA9IGxhdGV4Ci0KLSMgVGhlIE1BS0VJTkRFWF9DTURfTkFNRSB0YWcgY2FuIGJl
IHVzZWQgdG8gc3BlY2lmeSB0aGUgY29tbWFuZCBuYW1lIHRvIGdlbmVyYXRlCi0jIGluZGV4IGZv
ciBMYVRlWC4KLSMgVGhlIGRlZmF1bHQgZmlsZSBpczogbWFrZWluZGV4LgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTUFL
RUlOREVYX0NNRF9OQU1FICAgICA9IG1ha2VpbmRleAotCi0jIElmIHRoZSBDT01QQUNUX0xBVEVY
IHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gZ2VuZXJhdGVzIG1vcmUgY29tcGFjdCBMYVRlWAot
IyBkb2N1bWVudHMuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1h
eSBoZWxwIHRvIHNhdmUgc29tZQotIyB0cmVlcyBpbiBnZW5lcmFsLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9M
QVRFWCBpcyBzZXQgdG8gWUVTLgotCi1DT01QQUNUX0xBVEVYICAgICAgICAgID0gTk8KLQotIyBU
aGUgUEFQRVJfVFlQRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBwYXBlciB0eXBlIHRoYXQg
aXMgdXNlZCBieSB0aGUKLSMgcHJpbnRlci4KLSMgUG9zc2libGUgdmFsdWVzIGFyZTogYTQgKDIx
MCB4IDI5NyBtbSksIGxldHRlciAoOC41IHggMTEgaW5jaGVzKSwgbGVnYWwgKDguNSB4Ci0jIDE0
IGluY2hlcykgYW5kIGV4ZWN1dGl2ZSAoNy4yNSB4IDEwLjUgaW5jaGVzKS4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IGE0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJB
VEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotUEFQRVJfVFlQRSAgICAgICAgICAgICA9IGE0d2lk
ZQotCi0jIFRoZSBFWFRSQV9QQUNLQUdFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUg
b3IgbW9yZSBMYVRlWCBwYWNrYWdlIG5hbWVzCi0jIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGlu
IHRoZSBMYVRlWCBvdXRwdXQuIFRvIGdldCB0aGUgdGltZXMgZm9udCBmb3IKLSMgaW5zdGFuY2Ug
eW91IGNhbiBzcGVjaWZ5Ci0jIEVYVFJBX1BBQ0tBR0VTPXRpbWVzCi0jIElmIGxlZnQgYmxhbmsg
bm8gZXh0cmEgcGFja2FnZXMgd2lsbCBiZSBpbmNsdWRlZC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUVYVFJBX1BBQ0tB
R0VTICAgICAgICAgPQotCi0jIFRoZSBMQVRFWF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNw
ZWNpZnkgYSBwZXJzb25hbCBMYVRlWCBoZWFkZXIgZm9yIHRoZQotIyBnZW5lcmF0ZWQgTGFUZVgg
ZG9jdW1lbnQuIFRoZSBoZWFkZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyB1bnRpbCB0aGUg
Zmlyc3QKLSMgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJh
dGUgYSBzdGFuZGFyZCBoZWFkZXIuIFNlZQotIyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3Ig
aW5mb3JtYXRpb24gb24gaG93IHRvIGxldCBkb3h5Z2VuIHdyaXRlIHRoZQotIyBkZWZhdWx0IGhl
YWRlciB0byBhIHNlcGFyYXRlIGZpbGUuCi0jCi0jIE5vdGU6IE9ubHkgdXNlIGEgdXNlci1kZWZp
bmVkIGhlYWRlciBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFRoZQotIyBmb2xsb3dp
bmcgY29tbWFuZHMgaGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBpbnNpZGUgdGhlIGhlYWRlcjogJHRp
dGxlLAotIyAkZGF0ZXRpbWUsICRkYXRlLCAkZG94eWdlbnZlcnNpb24sICRwcm9qZWN0bmFtZSwg
JHByb2plY3RudW1iZXIuIERveHlnZW4gd2lsbAotIyByZXBsYWNlIHRoZW0gYnkgcmVzcGVjdGl2
ZWx5IHRoZSB0aXRsZSBvZiB0aGUgcGFnZSwgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSwKLSMg
b25seSB0aGUgY3VycmVudCBkYXRlLCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgZG94eWdlbiwgdGhl
IHByb2plY3QgbmFtZSAoc2VlCi0jIFBST0pFQ1RfTkFNRSksIG9yIHRoZSBwcm9qZWN0IG51bWJl
ciAoc2VlIFBST0pFQ1RfTlVNQkVSKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0hFQURFUiAgICAgICAgICAg
PQotCi0jIFRoZSBMQVRFWF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJz
b25hbCBMYVRlWCBmb290ZXIgZm9yIHRoZQotIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRo
ZSBmb290ZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdAotIyBjaGFw
dGVyLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJk
IGZvb3Rlci4KLSMKLSMgTm90ZTogT25seSB1c2UgYSB1c2VyLWRlZmluZWQgZm9vdGVyIGlmIHlv
dSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEKLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0ZPT1RFUiAgICAgICAg
ICAgPQotCi0jIFRoZSBMQVRFWF9FWFRSQV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lm
eSBvbmUgb3IgbW9yZSBleHRyYSBpbWFnZXMgb3IKLSMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNo
IHNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIExBVEVYX09VVFBVVCBvdXRwdXQKLSMgZGlyZWN0b3J5
LiBOb3RlIHRoYXQgdGhlIGZpbGVzIHdpbGwgYmUgY29waWVkIGFzLWlzOyB0aGVyZSBhcmUgbm8g
Y29tbWFuZHMgb3IKLSMgbWFya2VycyBhdmFpbGFibGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9FWFRSQV9G
SUxFUyAgICAgID0KLQotIyBJZiB0aGUgUERGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMs
IHRoZSBMYVRlWCB0aGF0IGlzIGdlbmVyYXRlZCBpcwotIyBwcmVwYXJlZCBmb3IgY29udmVyc2lv
biB0byBQREYgKHVzaW5nIHBzMnBkZiBvciBwZGZsYXRleCkuIFRoZSBQREYgZmlsZSB3aWxsCi0j
IGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTCBvdXRwdXQpIGluc3RlYWQgb2YgcGFn
ZSByZWZlcmVuY2VzLiBUaGlzCi0jIG1ha2VzIHRoZSBvdXRwdXQgc3VpdGFibGUgZm9yIG9ubGlu
ZSBicm93c2luZyB1c2luZyBhIFBERiB2aWV3ZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBz
ZXQgdG8gWUVTLgotCi1QREZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KLQotIyBJZiB0aGUgTEFU
RVhfUERGTEFURVggdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCB1c2UgcGRmbGF0ZXgg
dG8gZ2VuZXJhdGUKLSMgdGhlIFBERiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIExhVGVYIGZpbGVz
LiBTZXQgdGhpcyBvcHRpb24gdG8gWUVTIHRvIGdldCBhCi0jIGhpZ2hlciBxdWFsaXR5IFBERiBk
b2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotVVNF
X1BERkxBVEVYICAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIExBVEVYX0JBVENITU9ERSB0YWcg
aXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGFkZCB0aGUgXGJhdGNobW9kZQotIyBjb21tYW5k
IHRvIHRoZSBnZW5lcmF0ZWQgTGFUZVggZmlsZXMuIFRoaXMgd2lsbCBpbnN0cnVjdCBMYVRlWCB0
byBrZWVwIHJ1bm5pbmcKLSMgaWYgZXJyb3JzIG9jY3VyLCBpbnN0ZWFkIG9mIGFza2luZyB0aGUg
dXNlciBmb3IgaGVscC4gVGhpcyBvcHRpb24gaXMgYWxzbyB1c2VkCi0jIHdoZW4gZ2VuZXJhdGlu
ZyBmb3JtdWxhcyBpbiBIVE1MLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMg
dGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgot
Ci1MQVRFWF9CQVRDSE1PREUgICAgICAgID0gTk8KLQotIyBJZiB0aGUgTEFURVhfSElERV9JTkRJ
Q0VTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIG5vdCBpbmNsdWRlIHRoZQot
IyBpbmRleCBjaGFwdGVycyAoc3VjaCBhcyBGaWxlIEluZGV4LCBDb21wb3VuZCBJbmRleCwgZXRj
LikgaW4gdGhlIG91dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQot
TEFURVhfSElERV9JTkRJQ0VTICAgICA9IE5PCi0KLSMgSWYgdGhlIExBVEVYX1NPVVJDRV9DT0RF
IHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGluY2x1ZGUgc291cmNlCi0jIGNv
ZGUgd2l0aCBzeW50YXggaGlnaGxpZ2h0aW5nIGluIHRoZSBMYVRlWCBvdXRwdXQuCi0jCi0jIE5v
dGUgdGhhdCB3aGljaCBzb3VyY2VzIGFyZSBzaG93biBhbHNvIGRlcGVuZHMgb24gb3RoZXIgc2V0
dGluZ3Mgc3VjaCBhcwotIyBTT1VSQ0VfQlJPV1NFUi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMg
c2V0IHRvIFlFUy4KLQotTEFURVhfU09VUkNFX0NPREUgICAgICA9IE5PCi0KLSMgVGhlIExBVEVY
X0JJQl9TVFlMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgc3R5bGUgdG8gdXNlIGZv
ciB0aGUKLSMgYmlibGlvZ3JhcGh5LCBlLmcuIHBsYWlubmF0LCBvciBpZWVldHIuIFNlZQotIyBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpYlRlWCBhbmQgXGNpdGUgZm9yIG1vcmUgaW5m
by4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IHBsYWluLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQotTEFURVhfQklCX1NU
WUxFICAgICAgICA9IHBsYWluCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlv
biBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFJURiBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotIyBJZiB0aGUgR0VORVJBVEVfUlRGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBn
ZW5lcmF0ZSBSVEYgb3V0cHV0LiBUaGUKLSMgUlRGIG91dHB1dCBpcyBvcHRpbWl6ZWQgZm9yIFdv
cmQgOTcgYW5kIG1heSBub3QgbG9vayB0b28gcHJldHR5IHdpdGggb3RoZXIgUlRGCi0jIHJlYWRl
cnMvZWRpdG9ycy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9SVEYg
ICAgICAgICAgID0gTk8KLQotIyBUaGUgUlRGX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5
IHdoZXJlIHRoZSBSVEYgZG9jcyB3aWxsIGJlIHB1dC4gSWYgYQotIyByZWxhdGl2ZSBwYXRoIGlz
IGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJv
bnQgb2YKLSMgaXQuCi0jIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogcnRmLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCi0KLVJU
Rl9PVVRQVVQgICAgICAgICAgICAgPSBydGYKLQotIyBJZiB0aGUgQ09NUEFDVF9SVEYgdGFnIGlz
IHNldCB0byBZRVMgZG94eWdlbiBnZW5lcmF0ZXMgbW9yZSBjb21wYWN0IFJURgotIyBkb2N1bWVu
dHMuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRv
IHNhdmUgc29tZQotIyB0cmVlcyBpbiBnZW5lcmFsLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0
IHRvIFlFUy4KLQotQ09NUEFDVF9SVEYgICAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIFJURl9I
WVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgUlRGIHRoYXQgaXMgZ2VuZXJhdGVkIHdp
bGwKLSMgY29udGFpbiBoeXBlcmxpbmsgZmllbGRzLiBUaGUgUlRGIGZpbGUgd2lsbCBjb250YWlu
IGxpbmtzIChqdXN0IGxpa2UgdGhlIEhUTUwKLSMgb3V0cHV0KSBpbnN0ZWFkIG9mIHBhZ2UgcmVm
ZXJlbmNlcy4gVGhpcyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUKLSMgYnJv
d3NpbmcgdXNpbmcgV29yZCBvciBzb21lIG90aGVyIFdvcmQgY29tcGF0aWJsZSByZWFkZXJzIHRo
YXQgc3VwcG9ydCB0aG9zZQotIyBmaWVsZHMuCi0jCi0jIE5vdGU6IFdvcmRQYWQgKHdyaXRlKSBh
bmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IGxpbmtzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9SVEYgaXMgc2V0
IHRvIFlFUy4KLQotUlRGX0hZUEVSTElOS1MgICAgICAgICA9IE5PCi0KLSMgTG9hZCBzdHlsZXNo
ZWV0IGRlZmluaXRpb25zIGZyb20gZmlsZS4gU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidz
IGNvbmZpZwotIyBmaWxlLCBpLmUuIGEgc2VyaWVzIG9mIGFzc2lnbm1lbnRzLiBZb3Ugb25seSBo
YXZlIHRvIHByb3ZpZGUgcmVwbGFjZW1lbnRzLAotIyBtaXNzaW5nIGRlZmluaXRpb25zIGFyZSBz
ZXQgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZS4KLSMKLSMgU2VlIGFsc28gc2VjdGlvbiAiRG94eWdl
biB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSB0aGUKLSMgZGVmYXVs
dCBzdHlsZSBzaGVldCB0aGF0IGRveHlnZW4gbm9ybWFsbHkgdXNlcy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1SVEZfU1RZ
TEVTSEVFVF9GSUxFICAgID0KLQotIyBTZXQgb3B0aW9uYWwgdmFyaWFibGVzIHVzZWQgaW4gdGhl
IGdlbmVyYXRpb24gb2YgYW4gUlRGIGRvY3VtZW50LiBTeW50YXggaXMKLSMgc2ltaWxhciB0byBk
b3h5Z2VuJ3MgY29uZmlnIGZpbGUuIEEgdGVtcGxhdGUgZXh0ZW5zaW9ucyBmaWxlIGNhbiBiZSBn
ZW5lcmF0ZWQKLSMgdXNpbmcgZG94eWdlbiAtZSBydGYgZXh0ZW5zaW9uRmlsZS4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1S
VEZfRVhURU5TSU9OU19GSUxFICAgID0KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1
cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgbWFuIHBhZ2Ugb3V0cHV0Ci0jLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX01BTiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5
Z2VuIHdpbGwgZ2VuZXJhdGUgbWFuIHBhZ2VzIGZvcgotIyBjbGFzc2VzIGFuZCBmaWxlcy4KLSMg
VGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1HRU5FUkFURV9NQU4gICAgICAgICAgID0gTk8K
LQotIyBUaGUgTUFOX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBtYW4g
cGFnZXMgd2lsbCBiZSBwdXQuIElmIGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2
YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCi0jIGl0LiBB
IGRpcmVjdG9yeSBtYW4zIHdpbGwgYmUgY3JlYXRlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeSBzcGVj
aWZpZWQgYnkKLSMgTUFOX09VVFBVVC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBtYW4u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9NQU4gaXMgc2V0IHRv
IFlFUy4KLQotTUFOX09VVFBVVCAgICAgICAgICAgICA9IG1hbgotCi0jIFRoZSBNQU5fRVhURU5T
SU9OIHRhZyBkZXRlcm1pbmVzIHRoZSBleHRlbnNpb24gdGhhdCBpcyBhZGRlZCB0byB0aGUgZ2Vu
ZXJhdGVkCi0jIG1hbiBwYWdlcy4gSW4gY2FzZSB0aGUgbWFudWFsIHNlY3Rpb24gZG9lcyBub3Qg
c3RhcnQgd2l0aCBhIG51bWJlciwgdGhlIG51bWJlcgotIyAzIGlzIHByZXBlbmRlZC4gVGhlIGRv
dCAoLikgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgTUFOX0VYVEVOU0lPTiB0YWcgaXMKLSMgb3B0
aW9uYWwuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiAuMy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgotCi1NQU5fRVhURU5TSU9O
ICAgICAgICAgID0gLjMKLQotIyBJZiB0aGUgTUFOX0xJTktTIHRhZyBpcyBzZXQgdG8gWUVTIGFu
ZCBkb3h5Z2VuIGdlbmVyYXRlcyBtYW4gb3V0cHV0LCB0aGVuIGl0Ci0jIHdpbGwgZ2VuZXJhdGUg
b25lIGFkZGl0aW9uYWwgbWFuIGZpbGUgZm9yIGVhY2ggZW50aXR5IGRvY3VtZW50ZWQgaW4gdGhl
IHJlYWwKLSMgbWFuIHBhZ2UocykuIFRoZXNlIGFkZGl0aW9uYWwgZmlsZXMgb25seSBzb3VyY2Ug
dGhlIHJlYWwgbWFuIHBhZ2UsIGJ1dCB3aXRob3V0Ci0jIHRoZW0gdGhlIG1hbiBjb21tYW5kIHdv
dWxkIGJlIHVuYWJsZSB0byBmaW5kIHRoZSBjb3JyZWN0IHBhZ2UuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01B
TiBpcyBzZXQgdG8gWUVTLgotCi1NQU5fTElOS1MgICAgICAgICAgICAgID0gTk8KLQotIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgWE1M
IG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9YTUwgdGFn
IGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGFuIFhNTCBmaWxlIHRoYXQKLSMg
Y2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50
YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfWE1MICAgICAg
ICAgICA9IE5PCi0KLSMgVGhlIFhNTF9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVy
ZSB0aGUgWE1MIHBhZ2VzIHdpbGwgYmUgcHV0LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGggaXMgZW50
ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBv
ZgotIyBpdC4KLSMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiB4bWwuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4KLQotWE1MX09V
VFBVVCAgICAgICAgICAgICA9IHhtbAotCi0jIFRoZSBYTUxfU0NIRU1BIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IGEgWE1MIHNjaGVtYSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYQotIyB2YWxp
ZGF0aW5nIFhNTCBwYXJzZXIgdG8gY2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgWE1MIGZpbGVzLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0byBZ
RVMuCi0KLVhNTF9TQ0hFTUEgICAgICAgICAgICAgPQotCi0jIFRoZSBYTUxfRFREIHRhZyBjYW4g
YmUgdXNlZCB0byBzcGVjaWZ5IGEgWE1MIERURCwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYQotIyB2
YWxpZGF0aW5nIFhNTCBwYXJzZXIgdG8gY2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgWE1MIGZpbGVz
LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0
byBZRVMuCi0KLVhNTF9EVEQgICAgICAgICAgICAgICAgPQotCi0jIElmIHRoZSBYTUxfUFJPR1JB
TUxJU1RJTkcgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGR1bXAgdGhlIHByb2dyYW0K
LSMgbGlzdGluZ3MgKGluY2x1ZGluZyBzeW50YXggaGlnaGxpZ2h0aW5nIGFuZCBjcm9zcy1yZWZl
cmVuY2luZyBpbmZvcm1hdGlvbikgdG8KLSMgdGhlIFhNTCBvdXRwdXQuIE5vdGUgdGhhdCBlbmFi
bGluZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgc2l6ZQotIyBvZiB0aGUg
WE1MIG91dHB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1hNTCBpcyBzZXQgdG8gWUVTLgotCi1YTUxfUFJP
R1JBTUxJU1RJTkcgICAgID0gWUVTCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJh
dGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIERPQ0JPT0sgb3V0cHV0Ci0jLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX0RPQ0JPT0sgdGFnIGlzIHNldCB0byBZRVMgZG94
eWdlbiB3aWxsIGdlbmVyYXRlIERvY2Jvb2sgZmlsZXMKLSMgdGhhdCBjYW4gYmUgdXNlZCB0byBn
ZW5lcmF0ZSBQREYuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfRE9D
Qk9PSyAgICAgICA9IE5PCi0KLSMgVGhlIERPQ0JPT0tfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNw
ZWNpZnkgd2hlcmUgdGhlIERvY2Jvb2sgcGFnZXMgd2lsbCBiZSBwdXQuCi0jIElmIGEgcmVsYXRp
dmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUg
cHV0IGluCi0jIGZyb250IG9mIGl0LgotIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IGRvY2Jv
b2suCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NCT09LIGlz
IHNldCB0byBZRVMuCi0KLURPQ0JPT0tfT1VUUFVUICAgICAgICAgPSBkb2Nib29rCi0KLSMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXV0b0dlbiBE
ZWZpbml0aW9ucyBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJB
VEVfQVVUT0dFTl9ERUYgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGFu
IEF1dG9HZW4KLSMgRGVmaW5pdGlvbnMgKHNlZSBodHRwOi8vYXV0b2dlbi5zZi5uZXQpIGZpbGUg
dGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mCi0jIHRoZSBjb2RlIGluY2x1ZGluZyBhbGwg
ZG9jdW1lbnRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBzdGlsbAotIyBleHBlcmlt
ZW50YWwgYW5kIGluY29tcGxldGUgYXQgdGhlIG1vbWVudC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1HRU5FUkFURV9BVVRPR0VOX0RFRiAgID0gTk8KLQotIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUGVybCBtb2R1bGUg
b3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEdFTkVSQVRFX1BFUkxNT0Qg
dGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgUGVybCBtb2R1bGUKLSMg
ZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUgaW5jbHVkaW5nIGFs
bCBkb2N1bWVudGF0aW9uLgotIwotIyBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4
cGVyaW1lbnRhbCBhbmQgaW5jb21wbGV0ZSBhdCB0aGUgbW9tZW50LgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0KLUdFTkVSQVRFX1BFUkxNT0QgICAgICAgPSBOTwotCi0jIElmIHRoZSBQ
RVJMTU9EX0xBVEVYIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB0aGUg
bmVjZXNzYXJ5Ci0jIE1ha2VmaWxlIHJ1bGVzLCBQZXJsIHNjcmlwdHMgYW5kIExhVGVYIGNvZGUg
dG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBQREYgYW5kIERWSQotIyBvdXRwdXQgZnJvbSB0aGUgUGVy
bCBtb2R1bGUgb3V0cHV0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMuCi0K
LVBFUkxNT0RfTEFURVggICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBQRVJMTU9EX1BSRVRUWSB0
YWcgaXMgc2V0IHRvIFlFUyB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbmljZWx5Ci0j
IGZvcm1hdHRlZCBzbyBpdCBjYW4gYmUgcGFyc2VkIGJ5IGEgaHVtYW4gcmVhZGVyLiBUaGlzIGlz
IHVzZWZ1bCBpZiB5b3Ugd2FudCB0bwotIyB1bmRlcnN0YW5kIHdoYXQgaXMgZ29pbmcgb24uIE9u
IHRoZSBvdGhlciBoYW5kLCBpZiB0aGlzIHRhZyBpcyBzZXQgdG8gTk8gdGhlCi0jIHNpemUgb2Yg
dGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3aWxsIGJlIG11Y2ggc21hbGxlciBhbmQgUGVybCB3aWxs
IHBhcnNlIGl0Ci0jIGp1c3QgdGhlIHNhbWUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMu
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNl
dCB0byBZRVMuCi0KLVBFUkxNT0RfUFJFVFRZICAgICAgICAgPSBZRVMKLQotIyBUaGUgbmFtZXMg
b2YgdGhlIG1ha2UgdmFyaWFibGVzIGluIHRoZSBnZW5lcmF0ZWQgZG94eXJ1bGVzLm1ha2UgZmls
ZSBhcmUKLSMgcHJlZml4ZWQgd2l0aCB0aGUgc3RyaW5nIGNvbnRhaW5lZCBpbiBQRVJMTU9EX01B
S0VWQVJfUFJFRklYLiBUaGlzIGlzIHVzZWZ1bAotIyBzbyBkaWZmZXJlbnQgZG94eXJ1bGVzLm1h
a2UgZmlsZXMgaW5jbHVkZWQgYnkgdGhlIHNhbWUgTWFrZWZpbGUgZG9uJ3QKLSMgb3ZlcndyaXRl
IGVhY2ggb3RoZXIncyB2YXJpYWJsZXMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRh
ZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMuCi0KLVBFUkxNT0RfTUFLRVZBUl9QUkVG
SVggPQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxh
dGVkIHRvIHRoZSBwcmVwcm9jZXNzb3IKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUg
RU5BQkxFX1BSRVBST0NFU1NJTkcgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGV2YWx1
YXRlIGFsbAotIyBDLXByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGZvdW5kIGluIHRoZSBzb3VyY2Vz
IGFuZCBpbmNsdWRlIGZpbGVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1FTkFC
TEVfUFJFUFJPQ0VTU0lORyAgID0gWUVTCi0KLSMgSWYgdGhlIE1BQ1JPX0VYUEFOU0lPTiB0YWcg
aXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZXhwYW5kIGFsbCBtYWNybyBuYW1lcwotIyBpbiB0
aGUgc291cmNlIGNvZGUuIElmIHNldCB0byBOTyBvbmx5IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9u
IHdpbGwgYmUKLSMgcGVyZm9ybWVkLiBNYWNybyBleHBhbnNpb24gY2FuIGJlIGRvbmUgaW4gYSBj
b250cm9sbGVkIHdheSBieSBzZXR0aW5nCi0jIEVYUEFORF9PTkxZX1BSRURFRiB0byBZRVMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLU1BQ1JPX0VYUEFOU0lP
TiAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgRVhQQU5EX09OTFlfUFJFREVGIGFuZCBNQUNST19F
WFBBTlNJT04gdGFncyBhcmUgYm90aCBzZXQgdG8gWUVTIHRoZW4KLSMgdGhlIG1hY3JvIGV4cGFu
c2lvbiBpcyBsaW1pdGVkIHRvIHRoZSBtYWNyb3Mgc3BlY2lmaWVkIHdpdGggdGhlIFBSRURFRklO
RUQgYW5kCi0jIEVYUEFORF9BU19ERUZJTkVEIHRhZ3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNT
SU5HIGlzIHNldCB0byBZRVMuCi0KLUVYUEFORF9PTkxZX1BSRURFRiAgICAgPSBOTwotCi0jIElm
IHRoZSBTRUFSQ0hfSU5DTFVERVMgdGFnIGlzIHNldCB0byBZRVMgdGhlIGluY2x1ZGVzIGZpbGVz
IGluIHRoZQotIyBJTkNMVURFX1BBVEggd2lsbCBiZSBzZWFyY2hlZCBpZiBhICNpbmNsdWRlIGlz
IGZvdW5kLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJl
cyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KLQotU0VB
UkNIX0lOQ0xVREVTICAgICAgICA9IFlFUwotCi0jIFRoZSBJTkNMVURFX1BBVEggdGFnIGNhbiBi
ZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdAotIyBjb250YWlu
IGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgbm90IGlucHV0IGZpbGVzIGJ1dCBzaG91bGQgYmUgcHJv
Y2Vzc2VkIGJ5IHRoZQotIyBwcmVwcm9jZXNzb3IuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBTRUFSQ0hfSU5DTFVERVMgaXMgc2V0IHRvIFlFUy4KLQotSU5DTFVERV9QQVRIICAg
ICAgICAgICA9IC4uL2luY2x1ZGUKLQotIyBZb3UgY2FuIHVzZSB0aGUgSU5DTFVERV9GSUxFX1BB
VFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkCi0jIHBhdHRlcm5zIChs
aWtlICouaCBhbmQgKi5ocHApIHRvIGZpbHRlciBvdXQgdGhlIGhlYWRlci1maWxlcyBpbiB0aGUK
LSMgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmssIHRoZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0
aCBGSUxFX1BBVFRFUk5TIHdpbGwgYmUKLSMgdXNlZC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLUlOQ0xVREVf
RklMRV9QQVRURVJOUyAgPSAqLmgKLQotIyBUaGUgUFJFREVGSU5FRCB0YWcgY2FuIGJlIHVzZWQg
dG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBtYWNybyBuYW1lcyB0aGF0IGFyZQotIyBkZWZpbmVkIGJl
Zm9yZSB0aGUgcHJlcHJvY2Vzc29yIGlzIHN0YXJ0ZWQgKHNpbWlsYXIgdG8gdGhlIC1EIG9wdGlv
biBvZiBlLmcuCi0jIGdjYykuIFRoZSBhcmd1bWVudCBvZiB0aGUgdGFnIGlzIGEgbGlzdCBvZiBt
YWNyb3Mgb2YgdGhlIGZvcm06IG5hbWUgb3IKLSMgbmFtZT1kZWZpbml0aW9uIChubyBzcGFjZXMp
LiBJZiB0aGUgZGVmaW5pdGlvbiBhbmQgdGhlICI9IiBhcmUgb21pdHRlZCwgIj0xIgotIyBpcyBh
c3N1bWVkLiBUbyBwcmV2ZW50IGEgbWFjcm8gZGVmaW5pdGlvbiBmcm9tIGJlaW5nIHVuZGVmaW5l
ZCB2aWEgI3VuZGVmIG9yCi0jIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIHVzZSB0aGUgOj0gb3BlcmF0
b3IgaW5zdGVhZCBvZiB0aGUgPSBvcGVyYXRvci4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLVBSRURFRklORUQg
ICAgICAgICAgICAgPSAiX01TQ19WRVI9MTgwMCIgXAotICAgICAgICAgICAgICAgICAgICAgICAg
IF9DUFBSVFRJIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfV0lOMzIgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT05DUFBfRE9DX0VYQ0xVREVfSU1QTEVNRU5UQVRJT04KLQotIyBJ
ZiB0aGUgTUFDUk9fRVhQQU5TSU9OIGFuZCBFWFBBTkRfT05MWV9QUkVERUYgdGFncyBhcmUgc2V0
IHRvIFlFUyB0aGVuIHRoaXMKLSMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsaXN0IG9m
IG1hY3JvIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGV4cGFuZGVkLiBUaGUKLSMgbWFjcm8gZGVmaW5p
dGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gVXNlIHRoZSBQ
UkVERUZJTkVECi0jIHRhZyBpZiB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgbWFjcm8gZGVm
aW5pdGlvbiB0aGF0IG92ZXJydWxlcyB0aGUKLSMgZGVmaW5pdGlvbiBmb3VuZCBpbiB0aGUgc291
cmNlIGNvZGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJP
Q0VTU0lORyBpcyBzZXQgdG8gWUVTLgotCi1FWFBBTkRfQVNfREVGSU5FRCAgICAgID0KLQotIyBJ
ZiB0aGUgU0tJUF9GVU5DVElPTl9NQUNST1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2Vu
J3MgcHJlcHJvY2Vzc29yIHdpbGwKLSMgcmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9u
LWxpa2UgbWFjcm9zIHRoYXQgYXJlIGFsb25lIG9uIGEgbGluZSwgaGF2ZSBhbgotIyBhbGwgdXBw
ZXJjYXNlIG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggZnVuY3Rp
b24gbWFjcm9zIGFyZQotIyB0eXBpY2FsbHkgdXNlZCBmb3IgYm9pbGVyLXBsYXRlIGNvZGUsIGFu
ZCB3aWxsIGNvbmZ1c2UgdGhlIHBhcnNlciBpZiBub3QKLSMgcmVtb3ZlZC4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJM
RV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLVNLSVBfRlVOQ1RJT05fTUFDUk9TICAg
PSBZRVMKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVs
YXRlZCB0byBleHRlcm5hbCByZWZlcmVuY2VzCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhl
IFRBR0ZJTEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZyBmaWxl
cy4gRm9yIGVhY2ggdGFnCi0jIGZpbGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBkb2N1
bWVudGF0aW9uIHNob3VsZCBiZSBhZGRlZC4gVGhlIGZvcm1hdCBvZgotIyBhIHRhZyBmaWxlIHdp
dGhvdXQgdGhpcyBsb2NhdGlvbiBpcyBhcyBmb2xsb3dzOgotIyBUQUdGSUxFUyA9IGZpbGUxIGZp
bGUyIC4uLgotIyBBZGRpbmcgbG9jYXRpb24gZm9yIHRoZSB0YWcgZmlsZXMgaXMgZG9uZSBhcyBm
b2xsb3dzOgotIyBUQUdGSUxFUyA9IGZpbGUxPWxvYzEgImZpbGUyID0gbG9jMiIgLi4uCi0jIHdo
ZXJlIGxvYzEgYW5kIGxvYzIgY2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIG9yIFVS
THMuIFNlZSB0aGUKLSMgc2VjdGlvbiAiTGlua2luZyB0byBleHRlcm5hbCBkb2N1bWVudGF0aW9u
IiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlCi0jIG9mIHRhZyBmaWxlcy4KLSMg
Tm90ZTogRWFjaCB0YWcgZmlsZSBtdXN0IGhhdmUgYW4gdW5pcXVlIG5hbWUgKHdoZXJlIHRoZSBu
YW1lIGRvZXMgTk9UIGluY2x1ZGUKLSMgdGhlIHBhdGgpLiBJZiBhIHRhZyBmaWxlIGlzIG5vdCBs
b2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggZG94eWdlbiBpcwotIyBydW4sIHlvdSBt
dXN0IGFsc28gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgdGFnZmlsZSBoZXJlLgotCi1UQUdGSUxF
UyAgICAgICAgICAgICAgID0KLQotIyBXaGVuIGEgZmlsZSBuYW1lIGlzIHNwZWNpZmllZCBhZnRl
ciBHRU5FUkFURV9UQUdGSUxFLCBkb3h5Z2VuIHdpbGwgY3JlYXRlIGEKLSMgdGFnIGZpbGUgdGhh
dCBpcyBiYXNlZCBvbiB0aGUgaW5wdXQgZmlsZXMgaXQgcmVhZHMuIFNlZSBzZWN0aW9uICJMaW5r
aW5nIHRvCi0jIGV4dGVybmFsIGRvY3VtZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSB1c2FnZSBvZiB0YWcgZmlsZXMuCi0KLUdFTkVSQVRFX1RBR0ZJTEUgICAgICAgPQot
Ci0jIElmIHRoZSBBTExFWFRFUk5BTFMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGNs
YXNzIHdpbGwgYmUgbGlzdGVkIGluIHRoZQotIyBjbGFzcyBpbmRleC4gSWYgc2V0IHRvIE5PIG9u
bHkgdGhlIGluaGVyaXRlZCBleHRlcm5hbCBjbGFzc2VzIHdpbGwgYmUgbGlzdGVkLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUFMTEVYVEVSTkFMUyAgICAgICAgICAgPSBOTwotCi0j
IElmIHRoZSBFWFRFUk5BTF9HUk9VUFMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVybmFsIGdy
b3VwcyB3aWxsIGJlIGxpc3RlZCBpbgotIyB0aGUgbW9kdWxlcyBpbmRleC4gSWYgc2V0IHRvIE5P
LCBvbmx5IHRoZSBjdXJyZW50IHByb2plY3QncyBncm91cHMgd2lsbCBiZQotIyBsaXN0ZWQuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUVYVEVSTkFMX0dST1VQUyAgICAgICAgPSBZ
RVMKLQotIyBJZiB0aGUgRVhURVJOQUxfUEFHRVMgdGFnIGlzIHNldCB0byBZRVMgYWxsIGV4dGVy
bmFsIHBhZ2VzIHdpbGwgYmUgbGlzdGVkIGluCi0jIHRoZSByZWxhdGVkIHBhZ2VzIGluZGV4LiBJ
ZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1cnJlbnQgcHJvamVjdCdzIHBhZ2VzIHdpbGwKLSMgYmUg
bGlzdGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1FWFRFUk5BTF9QQUdFUyAg
ICAgICAgID0gWUVTCi0KLSMgVGhlIFBFUkxfUEFUSCBzaG91bGQgYmUgdGhlIGFic29sdXRlIHBh
dGggYW5kIG5hbWUgb2YgdGhlIHBlcmwgc2NyaXB0Ci0jIGludGVycHJldGVyIChpLmUuIHRoZSBy
ZXN1bHQgb2YgJ3doaWNoIHBlcmwnKS4KLSMgVGhlIGRlZmF1bHQgZmlsZSAod2l0aCBhYnNvbHV0
ZSBwYXRoKSBpczogL3Vzci9iaW4vcGVybC4KLQotUEVSTF9QQVRIICAgICAgICAgICAgICA9IC91
c3IvYmluL3BlcmwKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlv
bnMgcmVsYXRlZCB0byB0aGUgZG90IHRvb2wKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0
aGUgQ0xBU1NfRElBR1JBTVMgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRl
IGEgY2xhc3MgZGlhZ3JhbQotIyAoaW4gSFRNTCBhbmQgTGFUZVgpIGZvciBjbGFzc2VzIHdpdGgg
YmFzZSBvciBzdXBlciBjbGFzc2VzLiBTZXR0aW5nIHRoZSB0YWcgdG8KLSMgTk8gdHVybnMgdGhl
IGRpYWdyYW1zIG9mZi4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGFsc28gd29ya3Mgd2l0aCBIQVZF
X0RPVAotIyBkaXNhYmxlZCwgYnV0IGl0IGlzIHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYW5kIHVz
ZSBkb3QsIHNpbmNlIGl0IHlpZWxkcyBtb3JlCi0jIHBvd2VyZnVsIGdyYXBocy4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotQ0xBU1NfRElBR1JBTVMgICAgICAgICA9IE5PCi0KLSMg
WW91IGNhbiBkZWZpbmUgbWVzc2FnZSBzZXF1ZW5jZSBjaGFydHMgd2l0aGluIGRveHlnZW4gY29t
bWVudHMgdXNpbmcgdGhlIFxtc2MKLSMgY29tbWFuZC4gRG94eWdlbiB3aWxsIHRoZW4gcnVuIHRo
ZSBtc2NnZW4gdG9vbCAoc2VlOgotIyBodHRwOi8vd3d3Lm1jdGVybmFuLm1lLnVrL21zY2dlbi8p
KSB0byBwcm9kdWNlIHRoZSBjaGFydCBhbmQgaW5zZXJ0IGl0IGluIHRoZQotIyBkb2N1bWVudGF0
aW9uLiBUaGUgTVNDR0VOX1BBVEggdGFnIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgZGlyZWN0
b3J5IHdoZXJlCi0jIHRoZSBtc2NnZW4gdG9vbCByZXNpZGVzLiBJZiBsZWZ0IGVtcHR5IHRoZSB0
b29sIGlzIGFzc3VtZWQgdG8gYmUgZm91bmQgaW4gdGhlCi0jIGRlZmF1bHQgc2VhcmNoIHBhdGgu
Ci0KLU1TQ0dFTl9QQVRIICAgICAgICAgICAgPQotCi0jIElmIHNldCB0byBZRVMsIHRoZSBpbmhl
cml0YW5jZSBhbmQgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBoaWRlIGluaGVyaXRhbmNlCi0j
IGFuZCB1c2FnZSByZWxhdGlvbnMgaWYgdGhlIHRhcmdldCBpcyB1bmRvY3VtZW50ZWQgb3IgaXMg
bm90IGEgY2xhc3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUhJREVfVU5ET0Nf
UkVMQVRJT05TICAgPSBOTwotCi0jIElmIHlvdSBzZXQgdGhlIEhBVkVfRE9UIHRhZyB0byBZRVMg
dGhlbiBkb3h5Z2VuIHdpbGwgYXNzdW1lIHRoZSBkb3QgdG9vbCBpcwotIyBhdmFpbGFibGUgZnJv
bSB0aGUgcGF0aC4gVGhpcyB0b29sIGlzIHBhcnQgb2YgR3JhcGh2aXogKHNlZToKLSMgaHR0cDov
L3d3dy5ncmFwaHZpei5vcmcvKSwgYSBncmFwaCB2aXN1YWxpemF0aW9uIHRvb2xraXQgZnJvbSBB
VCZUIGFuZCBMdWNlbnQKLSMgQmVsbCBMYWJzLiBUaGUgb3RoZXIgb3B0aW9ucyBpbiB0aGlzIHNl
Y3Rpb24gaGF2ZSBubyBlZmZlY3QgaWYgdGhpcyBvcHRpb24gaXMKLSMgc2V0IHRvIE5PCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSEFWRV9ET1QgICAgICAgICAgICAgICA9ICVIQVZF
X0RPVCUKLQotIyBUaGUgRE9UX05VTV9USFJFQURTIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRv
dCBpbnZvY2F0aW9ucyBkb3h5Z2VuIGlzIGFsbG93ZWQKLSMgdG8gcnVuIGluIHBhcmFsbGVsLiBX
aGVuIHNldCB0byAwIGRveHlnZW4gd2lsbCBiYXNlIHRoaXMgb24gdGhlIG51bWJlciBvZgotIyBw
cm9jZXNzb3JzIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLiBZb3UgY2FuIHNldCBpdCBleHBsaWNp
dGx5IHRvIGEgdmFsdWUKLSMgbGFyZ2VyIHRoYW4gMCB0byBnZXQgY29udHJvbCBvdmVyIHRoZSBi
YWxhbmNlIGJldHdlZW4gQ1BVIGxvYWQgYW5kIHByb2Nlc3NpbmcKLSMgc3BlZWQuCi0jIE1pbmlt
dW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDMyLCBkZWZhdWx0IHZhbHVlOiAwLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9U
X05VTV9USFJFQURTICAgICAgICA9IDAKLQotIyBXaGVuIHlvdSB3YW50IGEgZGlmZmVyZW50bHkg
bG9va2luZyBmb250IG4gdGhlIGRvdCBmaWxlcyB0aGF0IGRveHlnZW4KLSMgZ2VuZXJhdGVzIHlv
dSBjYW4gc3BlY2lmeSB0aGUgZm9udCBuYW1lIHVzaW5nIERPVF9GT05UTkFNRS4gWW91IG5lZWQg
dG8gbWFrZQotIyBzdXJlIGRvdCBpcyBhYmxlIHRvIGZpbmQgdGhlIGZvbnQsIHdoaWNoIGNhbiBi
ZSBkb25lIGJ5IHB1dHRpbmcgaXQgaW4gYQotIyBzdGFuZGFyZCBsb2NhdGlvbiBvciBieSBzZXR0
aW5nIHRoZSBET1RGT05UUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieQotIyBzZXR0aW5n
IERPVF9GT05UUEFUSCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZvbnQuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBIZWx2ZXRpY2EuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1ET1RfRk9OVE5BTUUgICAgICAgICAg
ID0gRnJlZVNhbnMKLQotIyBUaGUgRE9UX0ZPTlRTSVpFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQg
dGhlIHNpemUgKGluIHBvaW50cykgb2YgdGhlIGZvbnQgb2YKLSMgZG90IGdyYXBocy4KLSMgTWlu
aW11bSB2YWx1ZTogNCwgbWF4aW11bSB2YWx1ZTogMjQsIGRlZmF1bHQgdmFsdWU6IDEwLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
RE9UX0ZPTlRTSVpFICAgICAgICAgICA9IDEwCi0KLSMgQnkgZGVmYXVsdCBkb3h5Z2VuIHdpbGwg
dGVsbCBkb3QgdG8gdXNlIHRoZSBkZWZhdWx0IGZvbnQgYXMgc3BlY2lmaWVkIHdpdGgKLSMgRE9U
X0ZPTlROQU1FLiBJZiB5b3Ugc3BlY2lmeSBhIGRpZmZlcmVudCBmb250IHVzaW5nIERPVF9GT05U
TkFNRSB5b3UgY2FuIHNldAotIyB0aGUgcGF0aCB3aGVyZSBkb3QgY2FuIGZpbmQgaXQgdXNpbmcg
dGhpcyB0YWcuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBz
ZXQgdG8gWUVTLgotCi1ET1RfRk9OVFBBVEggICAgICAgICAgID0KLQotIyBJZiB0aGUgQ0xBU1Nf
R1JBUEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFw
aCBmb3IKLSMgZWFjaCBkb2N1bWVudGVkIGNsYXNzIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5k
aXJlY3QgaW5oZXJpdGFuY2UgcmVsYXRpb25zLgotIyBTZXR0aW5nIHRoaXMgdGFnIHRvIFlFUyB3
aWxsIGZvcmNlIHRoZSBDTEFTU19ESUFHUkFNUyB0YWcgdG8gTk8uCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBp
cyBzZXQgdG8gWUVTLgotCi1DTEFTU19HUkFQSCAgICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhl
IENPTExBQk9SQVRJT05fR1JBUEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwg
Z2VuZXJhdGUgYQotIyBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIGNsYXNzIHNob3dpbmcgdGhl
IGRpcmVjdCBhbmQgaW5kaXJlY3QgaW1wbGVtZW50YXRpb24KLSMgZGVwZW5kZW5jaWVzIChpbmhl
cml0YW5jZSwgY29udGFpbm1lbnQsIGFuZCBjbGFzcyByZWZlcmVuY2VzIHZhcmlhYmxlcykgb2Yg
dGhlCi0jIGNsYXNzIHdpdGggb3RoZXIgZG9jdW1lbnRlZCBjbGFzc2VzLgotIyBUaGUgZGVmYXVs
dCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9E
T1QgaXMgc2V0IHRvIFlFUy4KLQotQ09MTEFCT1JBVElPTl9HUkFQSCAgICA9IFlFUwotCi0jIElm
IHRoZSBHUk9VUF9HUkFQSFMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2Vu
ZXJhdGUgYSBncmFwaCBmb3IKLSMgZ3JvdXBzLCBzaG93aW5nIHRoZSBkaXJlY3QgZ3JvdXBzIGRl
cGVuZGVuY2llcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUdST1VQX0dSQVBI
UyAgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgVU1MX0xPT0sgdGFnIGlzIHNldCB0byBZRVMg
ZG94eWdlbiB3aWxsIGdlbmVyYXRlIGluaGVyaXRhbmNlIGFuZAotIyBjb2xsYWJvcmF0aW9uIGRp
YWdyYW1zIGluIGEgc3R5bGUgc2ltaWxhciB0byB0aGUgT01HJ3MgVW5pZmllZCBNb2RlbGluZwot
IyBMYW5ndWFnZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotVU1MX0xPT0sgICAg
ICAgICAgICAgICA9ICVVTUxfTE9PSyUKLQotIyBJZiB0aGUgVU1MX0xPT0sgdGFnIGlzIGVuYWJs
ZWQsIHRoZSBmaWVsZHMgYW5kIG1ldGhvZHMgYXJlIHNob3duIGluc2lkZSB0aGUKLSMgY2xhc3Mg
bm9kZS4gSWYgdGhlcmUgYXJlIG1hbnkgZmllbGRzIG9yIG1ldGhvZHMgYW5kIG1hbnkgbm9kZXMg
dGhlIGdyYXBoIG1heQotIyBiZWNvbWUgdG9vIGJpZyB0byBiZSB1c2VmdWwuIFRoZSBVTUxfTElN
SVRfTlVNX0ZJRUxEUyB0aHJlc2hvbGQgbGltaXRzIHRoZQotIyBudW1iZXIgb2YgaXRlbXMgZm9y
IGVhY2ggdHlwZSB0byBtYWtlIHRoZSBzaXplIG1vcmUgbWFuYWdlYWJsZS4gU2V0IHRoaXMgdG8g
MAotIyBmb3Igbm8gbGltaXQuIE5vdGUgdGhhdCB0aGUgdGhyZXNob2xkIG1heSBiZSBleGNlZWRl
ZCBieSA1MCUgYmVmb3JlIHRoZSBsaW1pdAotIyBpcyBlbmZvcmNlZC4gU28gd2hlbiB5b3Ugc2V0
IHRoZSB0aHJlc2hvbGQgdG8gMTAsIHVwIHRvIDE1IGZpZWxkcyBtYXkgYXBwZWFyLAotIyBidXQg
aWYgdGhlIG51bWJlciBleGNlZWRzIDE1LCB0aGUgdG90YWwgYW1vdW50IG9mIGZpZWxkcyBzaG93
biBpcyBsaW1pdGVkIHRvCi0jIDEwLgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVl
OiAxMDAsIGRlZmF1bHQgdmFsdWU6IDEwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotVU1MX0xJTUlUX05VTV9GSUVMRFMgICA9IDEw
Ci0KLSMgSWYgdGhlIFRFTVBMQVRFX1JFTEFUSU9OUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRo
ZSBpbmhlcml0YW5jZSBhbmQKLSMgY29sbGFib3JhdGlvbiBncmFwaHMgd2lsbCBzaG93IHRoZSBy
ZWxhdGlvbnMgYmV0d2VlbiB0ZW1wbGF0ZXMgYW5kIHRoZWlyCi0jIGluc3RhbmNlcy4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
SEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotVEVNUExBVEVfUkVMQVRJT05TICAgICA9IFlFUwot
Ci0jIElmIHRoZSBJTkNMVURFX0dSQVBILCBFTkFCTEVfUFJFUFJPQ0VTU0lORyBhbmQgU0VBUkNI
X0lOQ0xVREVTIHRhZ3MgYXJlIHNldCB0bwotIyBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJh
dGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1bWVudGVkIGZpbGUgc2hvd2luZyB0aGUKLSMgZGlyZWN0
IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRlcGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3aXRoIG90aGVy
IGRvY3VtZW50ZWQKLSMgZmlsZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1J
TkNMVURFX0dSQVBIICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIElOQ0xVREVEX0JZX0dSQVBI
LCBFTkFCTEVfUFJFUFJPQ0VTU0lORyBhbmQgU0VBUkNIX0lOQ0xVREVTIHRhZ3MgYXJlCi0jIHNl
dCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBncmFwaCBmb3IgZWFjaCBkb2N1
bWVudGVkIGZpbGUgc2hvd2luZwotIyB0aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRl
cGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3aXRoIG90aGVyIGRvY3VtZW50ZWQKLSMgZmlsZXMuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1JTkNMVURFRF9CWV9HUkFQSCAgICAgID0g
WUVTCi0KLSMgSWYgdGhlIENBTExfR1JBUEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2Vu
IHdpbGwgZ2VuZXJhdGUgYSBjYWxsCi0jIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGV2ZXJ5IGdsb2Jh
bCBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QuCi0jCi0jIE5vdGUgdGhhdCBlbmFibGluZyB0aGlz
IG9wdGlvbiB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHRpbWUgb2YgYSBydW4uCi0j
IFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGwgZ3JhcGhz
IGZvciBzZWxlY3RlZAotIyBmdW5jdGlvbnMgb25seSB1c2luZyB0aGUgXGNhbGxncmFwaCBjb21t
YW5kLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1DQUxMX0dSQVBIICAgICAgICAg
ICAgID0gTk8KLQotIyBJZiB0aGUgQ0FMTEVSX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4g
ZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgY2FsbGVyCi0jIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGV2
ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QuCi0jCi0jIE5vdGUgdGhhdCBlbmFi
bGluZyB0aGlzIG9wdGlvbiB3aWxsIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGhlIHRpbWUgb2Yg
YSBydW4uCi0jIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNh
bGxlciBncmFwaHMgZm9yIHNlbGVjdGVkCi0jIGZ1bmN0aW9ucyBvbmx5IHVzaW5nIHRoZSBcY2Fs
bGVyZ3JhcGggY29tbWFuZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotQ0FMTEVS
X0dSQVBIICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBHUkFQSElDQUxfSElFUkFSQ0hZIHRh
ZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdyYXBoaWNhbAotIyBoaWVyYXJjaHkg
b2YgYWxsIGNsYXNzZXMgaW5zdGVhZCBvZiBhIHRleHR1YWwgb25lLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1Qg
aXMgc2V0IHRvIFlFUy4KLQotR1JBUEhJQ0FMX0hJRVJBUkNIWSAgICA9IFlFUwotCi0jIElmIHRo
ZSBESVJFQ1RPUllfR1JBUEggdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc2hv
dyB0aGUKLSMgZGVwZW5kZW5jaWVzIGEgZGlyZWN0b3J5IGhhcyBvbiBvdGhlciBkaXJlY3Rvcmll
cyBpbiBhIGdyYXBoaWNhbCB3YXkuIFRoZQotIyBkZXBlbmRlbmN5IHJlbGF0aW9ucyBhcmUgZGV0
ZXJtaW5lZCBieSB0aGUgI2luY2x1ZGUgcmVsYXRpb25zIGJldHdlZW4gdGhlCi0jIGZpbGVzIGlu
IHRoZSBkaXJlY3Rvcmllcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURJUkVD
VE9SWV9HUkFQSCAgICAgICAgPSBZRVMKLQotIyBUaGUgRE9UX0lNQUdFX0ZPUk1BVCB0YWcgY2Fu
IGJlIHVzZWQgdG8gc2V0IHRoZSBpbWFnZSBmb3JtYXQgb2YgdGhlIGltYWdlcwotIyBnZW5lcmF0
ZWQgYnkgZG90LgotIyBOb3RlOiBJZiB5b3UgY2hvb3NlIHN2ZyB5b3UgbmVlZCB0byBzZXQgSFRN
TF9GSUxFX0VYVEVOU0lPTiB0byB4aHRtbCBpbiBvcmRlcgotIyB0byBtYWtlIHRoZSBTVkcgZmls
ZXMgdmlzaWJsZSBpbiBJRSA5KyAob3RoZXIgYnJvd3NlcnMgZG8gbm90IGhhdmUgdGhpcwotIyBy
ZXF1aXJlbWVudCkuCi0jIFBvc3NpYmxlIHZhbHVlcyBhcmU6IHBuZywganBnLCBnaWYgYW5kIHN2
Zy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IHBuZy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9JTUFHRV9GT1JNQVQgICAg
ICAgPSBwbmcKLQotIyBJZiBET1RfSU1BR0VfRk9STUFUIGlzIHNldCB0byBzdmcsIHRoZW4gdGhp
cyBvcHRpb24gY2FuIGJlIHNldCB0byBZRVMgdG8KLSMgZW5hYmxlIGdlbmVyYXRpb24gb2YgaW50
ZXJhY3RpdmUgU1ZHIGltYWdlcyB0aGF0IGFsbG93IHpvb21pbmcgYW5kIHBhbm5pbmcuCi0jCi0j
IE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIGEgbW9kZXJuIGJyb3dzZXIgb3RoZXIgdGhhbiBJbnRl
cm5ldCBFeHBsb3Jlci4gVGVzdGVkCi0jIGFuZCB3b3JraW5nIGFyZSBGaXJlZm94LCBDaHJvbWUs
IFNhZmFyaSwgYW5kIE9wZXJhLgotIyBOb3RlOiBGb3IgSUUgOSsgeW91IG5lZWQgdG8gc2V0IEhU
TUxfRklMRV9FWFRFTlNJT04gdG8geGh0bWwgaW4gb3JkZXIgdG8gbWFrZQotIyB0aGUgU1ZHIGZp
bGVzIHZpc2libGUuIE9sZGVyIHZlcnNpb25zIG9mIElFIGRvIG5vdCBoYXZlIFNWRyBzdXBwb3J0
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1JTlRFUkFDVElWRV9TVkcgICAgICAg
ID0gTk8KLQotIyBUaGUgRE9UX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIHBh
dGggd2hlcmUgdGhlIGRvdCB0b29sIGNhbiBiZQotIyBmb3VuZC4gSWYgbGVmdCBibGFuaywgaXQg
aXMgYXNzdW1lZCB0aGUgZG90IHRvb2wgY2FuIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9U
X1BBVEggICAgICAgICAgICAgICA9ICVET1RfUEFUSCUKLQotIyBUaGUgRE9URklMRV9ESVJTIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQKLSMg
Y29udGFpbiBkb3QgZmlsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24g
KHNlZSB0aGUgXGRvdGZpbGUKLSMgY29tbWFuZCkuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1ET1RGSUxFX0RJUlMgICAgICAgICAg
ID0KLQotIyBUaGUgTVNDRklMRV9ESVJTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBv
ciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQKLSMgY29udGFpbiBtc2MgZmlsZXMgdGhhdCBhcmUgaW5j
bHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSB0aGUgXG1zY2ZpbGUKLSMgY29tbWFuZCku
Ci0KLU1TQ0ZJTEVfRElSUyAgICAgICAgICAgPQotCi0jIFRoZSBET1RfR1JBUEhfTUFYX05PREVT
IHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5vZGVzCi0jIHRo
YXQgd2lsbCBiZSBzaG93biBpbiB0aGUgZ3JhcGguIElmIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4g
YSBncmFwaCBiZWNvbWVzCi0jIGxhcmdlciB0aGFuIHRoaXMgdmFsdWUsIGRveHlnZW4gd2lsbCB0
cnVuY2F0ZSB0aGUgZ3JhcGgsIHdoaWNoIGlzIHZpc3VhbGl6ZWQKLSMgYnkgcmVwcmVzZW50aW5n
IGEgbm9kZSBhcyBhIHJlZCBib3guIE5vdGUgdGhhdCBkb3h5Z2VuIGlmIHRoZSBudW1iZXIgb2Yg
ZGlyZWN0Ci0jIGNoaWxkcmVuIG9mIHRoZSByb290IG5vZGUgaW4gYSBncmFwaCBpcyBhbHJlYWR5
IGxhcmdlciB0aGFuCi0jIERPVF9HUkFQSF9NQVhfTk9ERVMgdGhlbiB0aGUgZ3JhcGggd2lsbCBu
b3QgYmUgc2hvd24gYXQgYWxsLiBBbHNvIG5vdGUgdGhhdAotIyB0aGUgc2l6ZSBvZiBhIGdyYXBo
IGNhbiBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgTUFYX0RPVF9HUkFQSF9ERVBUSC4KLSMgTWlu
aW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwMDAsIGRlZmF1bHQgdmFsdWU6IDUwLgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4K
LQotRE9UX0dSQVBIX01BWF9OT0RFUyAgICA9IDUwCi0KLSMgVGhlIE1BWF9ET1RfR1JBUEhfREVQ
VEggdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgZ3JhcGhz
Ci0jIGdlbmVyYXRlZCBieSBkb3QuIEEgZGVwdGggdmFsdWUgb2YgMyBtZWFucyB0aGF0IG9ubHkg
bm9kZXMgcmVhY2hhYmxlIGZyb20gdGhlCi0jIHJvb3QgYnkgZm9sbG93aW5nIGEgcGF0aCB2aWEg
YXQgbW9zdCAzIGVkZ2VzIHdpbGwgYmUgc2hvd24uIE5vZGVzIHRoYXQgbGF5Ci0jIGZ1cnRoZXIg
ZnJvbSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgb21pdHRlZC4gTm90ZSB0aGF0IHNldHRpbmcgdGhp
cyBvcHRpb24gdG8gMQotIyBvciAyIG1heSBncmVhdGx5IHJlZHVjZSB0aGUgY29tcHV0YXRpb24g
dGltZSBuZWVkZWQgZm9yIGxhcmdlIGNvZGUgYmFzZXMuIEFsc28KLSMgbm90ZSB0aGF0IHRoZSBz
aXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieQotIyBET1RfR1JBUEhf
TUFYX05PREVTLiBVc2luZyBhIGRlcHRoIG9mIDAgbWVhbnMgbm8gZGVwdGggcmVzdHJpY3Rpb24u
Ci0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMDAsIGRlZmF1bHQgdmFsdWU6
IDAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8g
WUVTLgotCi1NQVhfRE9UX0dSQVBIX0RFUFRIICAgID0gMTAwMAotCi0jIFNldCB0aGUgRE9UX1RS
QU5TUEFSRU5UIHRhZyB0byBZRVMgdG8gZ2VuZXJhdGUgaW1hZ2VzIHdpdGggYSB0cmFuc3BhcmVu
dAotIyBiYWNrZ3JvdW5kLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGJlY2F1c2UgZG90
IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2VlbQotIyB0byBzdXBwb3J0IHRoaXMgb3V0IG9mIHRoZSBi
b3guCi0jCi0jIFdhcm5pbmc6IERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gdXNlZCwgZW5hYmxp
bmcgdGhpcyBvcHRpb24gbWF5IGxlYWQgdG8KLSMgYmFkbHkgYW50aS1hbGlhc2VkIGxhYmVscyBv
biB0aGUgZWRnZXMgb2YgYSBncmFwaCAoaS5lLiB0aGV5IGJlY29tZSBoYXJkIHRvCi0jIHJlYWQp
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1ET1RfVFJBTlNQQVJFTlQgICAgICAg
ID0gTk8KLQotIyBTZXQgdGhlIERPVF9NVUxUSV9UQVJHRVRTIHRhZyB0byBZRVMgYWxsb3cgZG90
IHRvIGdlbmVyYXRlIG11bHRpcGxlIG91dHB1dAotIyBmaWxlcyBpbiBvbmUgcnVuIChpLmUuIG11
bHRpcGxlIC1vIGFuZCAtVCBvcHRpb25zIG9uIHRoZSBjb21tYW5kIGxpbmUpLiBUaGlzCi0jIG1h
a2VzIGRvdCBydW4gZmFzdGVyLCBidXQgc2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3Qg
KD4xLjguMTApIHN1cHBvcnQKLSMgdGhpcywgdGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9NVUxUSV9UQVJHRVRT
ICAgICAgPSBZRVMKLQotIyBJZiB0aGUgR0VORVJBVEVfTEVHRU5EIHRhZyBpcyBzZXQgdG8gWUVT
IGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGxlZ2VuZCBwYWdlCi0jIGV4cGxhaW5pbmcgdGhlIG1l
YW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIGFycm93cyBpbiB0aGUgZG90IGdlbmVyYXRl
ZAotIyBncmFwaHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9M
RUdFTkQgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIERPVF9DTEVBTlVQIHRhZyBpcyBzZXQgdG8g
WUVTIGRveHlnZW4gd2lsbCByZW1vdmUgdGhlIGludGVybWVkaWF0ZSBkb3QKLSMgZmlsZXMgdGhh
dCBhcmUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdmFyaW91cyBncmFwaHMuCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RP
VCBpcyBzZXQgdG8gWUVTLgotCi1ET1RfQ0xFQU5VUCAgICAgICAgICAgID0gWUVTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2RvYy9mb290ZXIuaHRtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL2Zvb3Rlci5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjRiZjJiOWI0N2UuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL2RvYy9mb290ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTwhLS0g
SFRNTCBmb290ZXIgZm9yIGRveHlnZW4gMS44LjEzLS0+Ci08IS0tIHN0YXJ0IGZvb3RlciBwYXJ0
IC0tPgotPCEtLUJFR0lOIEdFTkVSQVRFX1RSRUVWSUVXLS0+Ci08ZGl2IGlkPSJuYXYtcGF0aCIg
Y2xhc3M9Im5hdnBhdGgiPjwhLS0gaWQgaXMgbmVlZGVkIGZvciB0cmVldmlldyBmdW5jdGlvbiEg
LS0+Ci0gIDx1bD4KLSAgICAkbmF2cGF0aAotICAgIDxsaSBjbGFzcz0iZm9vdGVyIj4kZ2VuZXJh
dGVkYnkKLSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgot
ICAgIDxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSIkcmVscGF0aF5kb3h5Z2VuLnBuZyIgYWx0PSJk
b3h5Z2VuIi8+PC9hPiAkZG94eWdlbnZlcnNpb24gPC9saT4KLSAgPC91bD4KLTwvZGl2PgotPCEt
LUVORCBHRU5FUkFURV9UUkVFVklFVy0tPgotPCEtLUJFR0lOICFHRU5FUkFURV9UUkVFVklFVy0t
PgotPGhyIGNsYXNzPSJmb290ZXIiLz48YWRkcmVzcyBjbGFzcz0iZm9vdGVyIj48c21hbGw+Ci0k
Z2VuZXJhdGVkYnkgJiMxNjA7PGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5o
dG1sIj4KLTxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSIkcmVscGF0aF5kb3h5Z2VuLnBuZyIgYWx0
PSJkb3h5Z2VuIi8+Ci08L2E+ICRkb3h5Z2VudmVyc2lvbgotPC9zbWFsbD48L2FkZHJlc3M+Ci08
IS0tRU5EICFHRU5FUkFURV9UUkVFVklFVy0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9kb2MvaGVhZGVyLmh0bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9oZWFkZXIuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiOTNlMDg0ZDViLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS9kb2MvaGVhZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08IS0tIEhU
TUwgaGVhZGVyIGZvciBkb3h5Z2VuIDEuOC4xMy0tPgotPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEg
aHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1l
PSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gJGRveHlnZW52ZXJzaW9uIi8+Ci08bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEiLz4KLTxsaW5rIGhyZWY9IiRyZWxwYXRoXnRhYnMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5
cGU9InRleHQvY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIkcmVs
cGF0aF5qcXVlcnkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iJHJlbHBhdGheZHluc2VjdGlvbnMuanMiPjwvc2NyaXB0PgotJHRyZWV2aWV3Ci0kc2Vh
cmNoCi0kbWF0aGpheAotPGxpbmsgaHJlZj0iJHJlbHBhdGheJHN0eWxlc2hlZXQiIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci0kZXh0cmFzdHlsZXNoZWV0Ci08L2hlYWQ+Ci08
Ym9keT4KLTxkaXYgaWQ9InRvcCI+PCEtLSBkbyBub3QgcmVtb3ZlIHRoaXMgZGl2LCBpdCBpcyBj
bG9zZWQgYnkgZG94eWdlbiEgLS0+Ci0KLTwhLS1CRUdJTiBUSVRMRUFSRUEtLT4KLTxkaXYgaWQ9
InRpdGxlYXJlYSI+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KLSA8
dGJvZHk+Ci0gPHRyIHN0eWxlPSJoZWlnaHQ6IDU2cHg7Ij4KLSAgPCEtLUJFR0lOIFBST0pFQ1Rf
TE9HTy0tPgotICA8dGQgaWQ9InByb2plY3Rsb2dvIj48aW1nIGFsdD0iTG9nbyIgc3JjPSIkcmVs
cGF0aF4kcHJvamVjdGxvZ28iLz48L3RkPgotICA8IS0tRU5EIFBST0pFQ1RfTE9HTy0tPgotICA8
IS0tQkVHSU4gRElTQUJMRV9JTkRFWC0tPgotICAgPCEtLUJFR0lOIFNFQVJDSEVOR0lORS0tPgot
ICAgPHRkPiRzZWFyY2hib3g8L3RkPgotICAgPCEtLUVORCBTRUFSQ0hFTkdJTkUtLT4KLSAgPCEt
LUVORCBESVNBQkxFX0lOREVYLS0+Ci0gPC90cj4KLSA8L3Rib2R5PgotPC90YWJsZT4KLTwvZGl2
PgotPCEtLUVORCBUSVRMRUFSRUEtLT4KLTxib2R5IGJnY29sb3I9IiNmZmZmZmYiPgotPHRhYmxl
IHdpZHRoPSIxMDAlIj4KLSAgPHRyPgotICAgIDx0ZCB3aWR0aD0iMzAlIiBhbGlnbj0ibGVmdCIg
dmFsaWduPSJjZW50ZXIiPgotICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29wZW4t
c291cmNlLXBhcnNlcnMvanNvbmNwcCI+Ci0gICAgICBKc29uQ3BwIHByb2plY3QgcGFnZQotICAg
ICAgPC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIHdpZHRoPSIyMCUiIGFsaWduPSJjZW50ZXIiIHZh
bGlnbj0iY2VudGVyIj4KLSAgICAgIDxhIGhyZWY9ImhpZXJhcmNoeS5odG1sIj4KLSAgICAgICAg
Q2xhc3NlcwotICAgICAgPC9hPgotICAgIDwvdGQ+Ci0gICAgPHRkIHdpZHRoPSIyMCUiIGFsaWdu
PSJjZW50ZXIiIHZhbGlnbj0iY2VudGVyIj4KLSAgICAgIDxhIGhyZWY9Im5hbWVzcGFjZV9qc29u
Lmh0bWwiPgotICAgICAgICBOYW1lc3BhY2UKLSAgICAgIDwvYT4KLSAgICA8L3RkPgotICAgIDx0
ZCB3aWR0aD0iMzAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0iY2VudGVyIj4KLSAgICAgIDxhIGhy
ZWY9Imh0dHA6Ly9vcGVuLXNvdXJjZS1wYXJzZXJzLmdpdGh1Yi5pby9qc29uY3BwLWRvY3MvZG94
eWdlbi8iPkpzb25DcHAgaG9tZSBwYWdlPC9hPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxl
PgotCi08aHI+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG9j
L2pzb25jcHAuZG94IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS9kb2MvanNvbmNwcC5kb3gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ3ZWZjOGEzNTc2Yy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL2pzb25j
cHAuZG94CisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qKgotXG1haW5wYWdlCi1c
c2VjdGlvbiBfaW50cm8gSW50cm9kdWN0aW9uCi0KLTxhIEhSRUY9Imh0dHA6Ly93d3cuanNvbi5v
cmcvIj5KU09OIChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbik8L2E+Ci0gaXMgYSBsaWdodHdl
aWdodCBkYXRhLWludGVyY2hhbmdlIGZvcm1hdC4gCi0KLUhlcmUgaXMgYW4gZXhhbXBsZSBvZiBK
U09OIGRhdGE6Ci1cdmVyYmF0aW0KLXsKLSAgICAiZW5jb2RpbmciIDogIlVURi04IiwKLSAgICAi
cGx1Zy1pbnMiIDogWwotICAgICAgICAicHl0aG9uIiwKLSAgICAgICAgImMrKyIsCi0gICAgICAg
ICJydWJ5IgotICAgICAgICBdLAotICAgICJpbmRlbnQiIDogeyAibGVuZ3RoIiA6IDMsICJ1c2Vf
c3BhY2UiOiB0cnVlIH0KLX0KLVxlbmR2ZXJiYXRpbQotPGI+SnNvbkNwcDwvYj4gc3VwcG9ydHMg
Y29tbWVudHMgYXMgPGk+bWV0YS1kYXRhPC9pPjoKLVxjb2RlCi0vLyBDb25maWd1cmF0aW9uIG9w
dGlvbnMKLXsKLSAgICAvLyBEZWZhdWx0IGVuY29kaW5nIGZvciB0ZXh0Ci0gICAgImVuY29kaW5n
IiA6ICJVVEYtOCIsCi0gICAgCi0gICAgLy8gUGx1Zy1pbnMgbG9hZGVkIGF0IHN0YXJ0LXVwCi0g
ICAgInBsdWctaW5zIiA6IFsKLSAgICAgICAgInB5dGhvbiIsCi0gICAgICAgICJjKysiLCAgLy8g
dHJhaWxpbmcgY29tbWVudAotICAgICAgICAicnVieSIKLSAgICAgICAgXSwKLSAgICAgICAgCi0g
ICAgLy8gVGFiIGluZGVudCBzaXplCi0gICAgLy8gKG11bHRpLWxpbmUgY29tbWVudCkKLSAgICAi
aW5kZW50IiA6IHsgLyplbWJlZGRlZCBjb21tZW50Ki8gImxlbmd0aCIgOiAzLCAidXNlX3NwYWNl
IjogdHJ1ZSB9Ci19Ci1cZW5kY29kZQotCi1cc2VjdGlvbiBfZmVhdHVyZXMgRmVhdHVyZXMKLS0g
cmVhZCBhbmQgd3JpdGUgSlNPTiBkb2N1bWVudAotLSBhdHRhY2ggQysrIHN0eWxlIGNvbW1lbnRz
IHRvIGVsZW1lbnQgZHVyaW5nIHBhcnNpbmcKLS0gcmV3cml0ZSBKU09OIGRvY3VtZW50IHByZXNl
cnZpbmcgb3JpZ2luYWwgY29tbWVudHMKLQotTm90ZXM6IENvbW1lbnRzIHVzZWQgdG8gYmUgc3Vw
cG9ydGVkIGluIEpTT04gYnV0IHdlcmUgcmVtb3ZlZCBmb3IKLXBvcnRhYmlsaXR5IChDIGxpa2Ug
Y29tbWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gUHl0aG9uKS4gU2luY2UKLWNvbW1lbnRzIGFy
ZSB1c2VmdWwgaW4gY29uZmlndXJhdGlvbi9pbnB1dCBmaWxlLCB0aGlzIGZlYXR1cmUgd2FzCi1w
cmVzZXJ2ZWQuCi0KLVxzZWN0aW9uIF9leGFtcGxlIENvZGUgZXhhbXBsZQotCi1cY29kZQotSnNv
bjo6VmFsdWUgcm9vdDsgICAvLyAncm9vdCcgd2lsbCBjb250YWluIHRoZSByb290IHZhbHVlIGFm
dGVyIHBhcnNpbmcuCi1zdGQ6OmNpbiA+PiByb290OwotCi0vLyBZb3UgY2FuIGFsc28gcmVhZCBp
bnRvIGEgcGFydGljdWxhciBzdWItdmFsdWUuCi1zdGQ6OmNpbiA+PiByb290WyJzdWJ0cmVlIl07
Ci0KLS8vIEdldCB0aGUgdmFsdWUgb2YgdGhlIG1lbWJlciBvZiByb290IG5hbWVkICdlbmNvZGlu
ZycsCi0vLyBhbmQgcmV0dXJuICdVVEYtOCcgaWYgdGhlcmUgaXMgbm8gc3VjaCBtZW1iZXIuCi1z
dGQ6OnN0cmluZyBlbmNvZGluZyA9IHJvb3QuZ2V0KCJlbmNvZGluZyIsICJVVEYtOCIgKS5hc1N0
cmluZygpOwotCi0vLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSBtZW1iZXIgb2Ygcm9vdCBuYW1lZCAn
cGx1Zy1pbnMnOyByZXR1cm4gYSAnbnVsbCcgdmFsdWUgaWYKLS8vIHRoZXJlIGlzIG5vIHN1Y2gg
bWVtYmVyLgotY29uc3QgSnNvbjo6VmFsdWUgcGx1Z2lucyA9IHJvb3RbInBsdWctaW5zIl07Ci0K
LS8vIEl0ZXJhdGUgb3ZlciB0aGUgc2VxdWVuY2UgZWxlbWVudHMuCi1mb3IgKCBpbnQgaW5kZXgg
PSAwOyBpbmRleCA8IHBsdWdpbnMuc2l6ZSgpOyArK2luZGV4ICkKLSAgIGxvYWRQbHVnSW4oIHBs
dWdpbnNbaW5kZXhdLmFzU3RyaW5nKCkgKTsKLSAgIAotLy8gVHJ5IG90aGVyIGRhdGF0eXBlcy4g
U29tZSBhcmUgYXV0by1jb252ZXJ0aWJsZSB0byBvdGhlcnMuCi1mb286OnNldEluZGVudExlbmd0
aCggcm9vdFsiaW5kZW50Il0uZ2V0KCJsZW5ndGgiLCAzKS5hc0ludCgpICk7Ci1mb286OnNldElu
ZGVudFVzZVNwYWNlKCByb290WyJpbmRlbnQiXS5nZXQoInVzZV9zcGFjZSIsIHRydWUpLmFzQm9v
bCgpICk7Ci0KLS8vIFNpbmNlIEpzb246OlZhbHVlIGhhcyBhbiBpbXBsaWNpdCBjb25zdHJ1Y3Rv
ciBmb3IgYWxsIHZhbHVlIHR5cGVzLCBpdCBpcyBub3QKLS8vIG5lY2Vzc2FyeSB0byBleHBsaWNp
dGx5IGNvbnN0cnVjdCB0aGUgSnNvbjo6VmFsdWUgb2JqZWN0Lgotcm9vdFsiZW5jb2RpbmciXSA9
IGZvbzo6Z2V0Q3VycmVudEVuY29kaW5nKCk7Ci1yb290WyJpbmRlbnQiXVsibGVuZ3RoIl0gPSBm
b286OmdldEN1cnJlbnRJbmRlbnRMZW5ndGgoKTsKLXJvb3RbImluZGVudCJdWyJ1c2Vfc3BhY2Ui
XSA9IGZvbzo6Z2V0Q3VycmVudEluZGVudFVzZVNwYWNlKCk7Ci0KLS8vIElmIHlvdSBsaWtlIHRo
ZSBkZWZhdWx0cywgeW91IGNhbiBpbnNlcnQgZGlyZWN0bHkgaW50byBhIHN0cmVhbS4KLXN0ZDo6
Y291dCA8PCByb290OwotLy8gT2YgY291cnNlLCB5b3UgY2FuIHdyaXRlIHRvIGBzdGQ6Om9zdHJp
bmdzdHJlYW1gIGlmIHlvdSBwcmVmZXIuCi0KLS8vIElmIGRlc2lyZWQsIHJlbWVtYmVyIHRvIGFk
ZCBhIGxpbmVmZWVkIGFuZCBmbHVzaC4KLXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Ci1cZW5kY29k
ZQotCi1cc2VjdGlvbiBfYWR2YW5jZWQgQWR2YW5jZWQgdXNhZ2UKLQotQ29uZmlndXJlICpidWls
ZGVycyogdG8gY3JlYXRlICpyZWFkZXJzKiBhbmQgKndyaXRlcnMqLiBGb3IKLWNvbmZpZ3VyYXRp
b24sIHdlIHVzZSBvdXIgb3duIGBKc29uOjpWYWx1ZWAgKHJhdGhlciB0aGFuCi1zdGFuZGFyZCBz
ZXR0ZXJzL2dldHRlcnMpIHNvIHRoYXQgd2UgY2FuIGFkZAotZmVhdHVyZXMgd2l0aG91dCBsb3Np
bmcgYmluYXJ5LWNvbXBhdGliaWxpdHkuCi0KLVxjb2RlCi0vLyBGb3IgY29udmVuaWVuY2UsIHVz
ZSBgd3JpdGVTdHJpbmcoKWAgd2l0aCBhIHNwZWNpYWxpemVkIGJ1aWxkZXIuCi1Kc29uOjpTdHJl
YW1Xcml0ZXJCdWlsZGVyIHdidWlsZGVyOwotd2J1aWxkZXJbImluZGVudGF0aW9uIl0gPSAiXHQi
Owotc3RkOjpzdHJpbmcgZG9jdW1lbnQgPSBKc29uOjp3cml0ZVN0cmluZyh3YnVpbGRlciwgcm9v
dCk7Ci0KLS8vIEhlcmUsIHVzaW5nIGEgc3BlY2lhbGl6ZWQgQnVpbGRlciwgd2UgZGlzY2FyZCBj
b21tZW50cyBhbmQKLS8vIHJlY29yZCBlcnJvcnMgYXMgd2UgcGFyc2UuCi1Kc29uOjpDaGFyUmVh
ZGVyQnVpbGRlciByYnVpbGRlcjsKLXJidWlsZGVyWyJjb2xsZWN0Q29tbWVudHMiXSA9IGZhbHNl
Owotc3RkOjpzdHJpbmcgZXJyczsKLWJvb2wgb2sgPSBKc29uOjpwYXJzZUZyb21TdHJlYW0ocmJ1
aWxkZXIsIHN0ZDo6Y2luLCAmcm9vdCwgJmVycnMpOwotXGVuZGNvZGUKLQotWWVzLCBjb21waWxl
LXRpbWUgY29uZmlndXJhdGlvbi1jaGVja2luZyB3b3VsZCBiZSBoZWxwZnVsLAotYnV0IGBKc29u
OjpWYWx1ZWAgbGV0cyB5b3UKLXdyaXRlIGFuZCByZWFkIHRoZSBidWlsZGVyIGNvbmZpZ3VyYXRp
b24sIHdoaWNoIGlzIGJldHRlciEgSW4gb3RoZXIgd29yZHMsCi15b3UgY2FuIGNvbmZpZ3VyZSB5
b3VyIEpTT04gcGFyc2VyIHVzaW5nIEpTT04uCi0KLUNoYXJSZWFkZXJzIGFuZCBTdHJlYW1Xcml0
ZXJzIGFyZSBub3QgdGhyZWFkLXNhZmUsIGJ1dCB0aGV5IGFyZSByZS11c2FibGUuCi1cY29kZQot
SnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgcmJ1aWxkZXI7Ci1jZmcgPj4gcmJ1aWxkZXIuc2V0dGlu
Z3NfOwotc3RkOjp1bmlxdWVfcHRyPEpzb246OkNoYXJSZWFkZXI+IGNvbnN0IHJlYWRlcihyYnVp
bGRlci5uZXdDaGFyUmVhZGVyKCkpOwotcmVhZGVyLT5wYXJzZShzdGFydCwgc3RvcCwgJnZhbHVl
MSwgJmVycnMpOwotLy8gLi4uCi1yZWFkZXItPnBhcnNlKHN0YXJ0LCBzdG9wLCAmdmFsdWUyLCAm
ZXJycyk7Ci0vLyBldGMuCi1cZW5kY29kZQotCi1cc2VjdGlvbiBfcGJ1aWxkIEJ1aWxkIGluc3Ry
dWN0aW9ucwotVGhlIGJ1aWxkIGluc3RydWN0aW9ucyBhcmUgbG9jYXRlZCBpbiB0aGUgZmlsZSAK
LTxhIEhSRUY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAv
YmxvYi9tYXN0ZXIvUkVBRE1FLm1kIj5SRUFETUUubWQ8L2E+IGluIHRoZSB0b3AtZGlyZWN0b3J5
IG9mIHRoZSBwcm9qZWN0LgotCi1UaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHNvdXJjZSBpcyBh
dmFpbGFibGUgaW4gdGhlIHByb2plY3QncyBHaXRIdWIgcmVwb3NpdG9yeToKLTxhIEhSRUY9Imh0
dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvIj4KLWpzb25jcHA8
L2E+Ci0KLVxzZWN0aW9uIF9uZXdzIFdoYXQncyBOZXc/Ci1UaGUgZGVzY3JpcHRpb24gb2YgbGF0
ZXN0IGNoYW5nZXMgY2FuIGJlIGZvdW5kIGluIAotPGEgSFJFRj0iaHR0cHM6Ly9naXRodWIuY29t
L29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcC93aWtpL05FV1MiPgotICB0aGUgTkVXUyB3aWtp
Ci08L2E+LgotCi1cc2VjdGlvbiBfcmxpbmtzIFJlbGF0ZWQgbGlua3MKLS0gPGEgSFJFRj0iaHR0
cDovL3d3dy5qc29uLm9yZy8iPkpTT048L2E+IFNwZWNpZmljYXRpb24gYW5kIGFsdGVybmF0ZSBs
YW5ndWFnZSBpbXBsZW1lbnRhdGlvbnMuCi0tIDxhIEhSRUY9Imh0dHA6Ly93d3cueWFtbC5vcmcv
Ij5ZQU1MPC9hPiBBIGRhdGEgZm9ybWF0IGRlc2lnbmVkIGZvciBodW1hbiByZWFkYWJpbGl0eS4K
LS0gPGEgSFJFRj0iaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3VuaWNvZGUuaHRtbCI+
VVRGLTggYW5kIFVuaWNvZGUgRkFRPC9hPi4KLQotXHNlY3Rpb24gX3BsaW5rcyBPbGQgcHJvamVj
dCBsaW5rcwotLSA8YSBocmVmPSJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9qc29u
Y3BwLyI+aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvanNvbmNwcC88L2E+Ci0tIDxh
IGhyZWY9Imh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldCI+aHR0cDovL2pzb25jcHAuc291
cmNlZm9yZ2UubmV0PC9hPgotLSA8YSBocmVmPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2pl
Y3RzL2pzb25jcHAvZmlsZXMvIj5odHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2pzb25j
cHAvZmlsZXMvPC9hPgotLSA8YSBocmVmPSJodHRwOi8vanNvbmNwcC5zdm4uc291cmNlZm9yZ2Uu
bmV0L3N2bnJvb3QvanNvbmNwcC90cnVuay8iPmh0dHA6Ly9qc29uY3BwLnN2bi5zb3VyY2Vmb3Jn
ZS5uZXQvc3Zucm9vdC9qc29uY3BwL3RydW5rLzwvYT4KLS0gPGEgaHJlZj0iaHR0cDovL2pzb25j
cHAuc291cmNlZm9yZ2UubmV0L29sZC5odG1sIj5odHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5u
ZXQvb2xkLmh0bWw8L2E+Ci0KLVxzZWN0aW9uIF9saWNlbnNlIExpY2Vuc2UKLVNlZSBmaWxlIDxh
IGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvYmxv
Yi9tYXN0ZXIvTElDRU5TRSI+PGNvZGU+TElDRU5TRTwvY29kZT48L2E+IGluIHRoZSB0b3AtZGly
ZWN0b3J5IG9mIHRoZSBwcm9qZWN0LgotCi1CYXNpY2FsbHkgSnNvbkNwcCBpcyBsaWNlbnNlZCB1
bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIAotYW5kIHJlY29n
bml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0KLVxhdXRob3IgQmFwdGlzdGUgTGVwaWxsZXVy
IDxibGVwQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gKG9yaWdpbmF0b3IpCi1cYXV0aG9yIENocmlz
dG9waGVyIER1bm4gPGNkdW5uMjAwMUBnbWFpbC5jb20+IChwcmltYXJ5IG1haW50YWluZXIpCi1c
dmVyc2lvbiBcaW5jbHVkZSB2ZXJzaW9uCi1XZSBtYWtlIHN0cm9uZyBndWFyYW50ZWVzIGFib3V0
IGJpbmFyeS1jb21wYXRpYmlsaXR5LCBjb25zaXN0ZW50IHdpdGgKLTxhIGhyZWY9Imh0dHA6Ly9h
cHIuYXBhY2hlLm9yZy92ZXJzaW9uaW5nLmh0bWwiPnRoZSBBcGFjaGUgdmVyc2lvbmluZyBzY2hl
bWU8L2E+LgotXHNhIHZlcnNpb24uaAotKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG9jL3JlYWRtZS50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL2RvYy9yZWFkbWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
ZTQyY2RmYjRjZmQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9yZWFkbWUudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGhlIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJhdGVkIHVz
aW5nIGRveHlnZW4gKGh0dHA6Ly93d3cuZG94eWdlbi5vcmcpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9k
b2Mvcm9hZG1hcC5kb3ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy9yb2FkbWFwLmRveApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMTIyOTRiYmJkMjlkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb2Mvcm9h
ZG1hcC5kb3gKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8qISBccGFnZSByb2FkbWFw
IEpzb25DcHAgcm9hZG1hcAotICBNb3ZlZCB0bzogaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc291
cmNlLXBhcnNlcnMvanNvbmNwcC93aWtpL1JvYWRtYXAKLSovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2Rv
Yy93ZWJfZG94eWZpbGUuaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2RvYy93ZWJfZG94eWZpbGUuaW4KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRmMDlkY2NhZWM1MC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
ZG9jL3dlYl9kb3h5ZmlsZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDIyOTAgKzAsMCBAQAotIyBE
b3h5ZmlsZSAxLjguNQotCi0jIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIHNldHRpbmdzIHRvIGJl
IHVzZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gc3lzdGVtCi0jIGRveHlnZW4gKHd3dy5kb3h5Z2Vu
Lm9yZykgZm9yIGEgcHJvamVjdC4KLSMKLSMgQWxsIHRleHQgYWZ0ZXIgYSBkb3VibGUgaGFzaCAo
IyMpIGlzIGNvbnNpZGVyZWQgYSBjb21tZW50IGFuZCBpcyBwbGFjZWQgaW4KLSMgZnJvbnQgb2Yg
dGhlIFRBRyBpdCBpcyBwcmVjZWRpbmcuCi0jCi0jIEFsbCB0ZXh0IGFmdGVyIGEgc2luZ2xlIGhh
c2ggKCMpIGlzIGNvbnNpZGVyZWQgYSBjb21tZW50IGFuZCB3aWxsIGJlIGlnbm9yZWQuCi0jIFRo
ZSBmb3JtYXQgaXM6Ci0jIFRBRyA9IHZhbHVlIFt2YWx1ZSwgLi4uXQotIyBGb3IgbGlzdHMsIGl0
ZW1zIGNhbiBhbHNvIGJlIGFwcGVuZGVkIHVzaW5nOgotIyBUQUcgKz0gdmFsdWUgW3ZhbHVlLCAu
Li5dCi0jIFZhbHVlcyB0aGF0IGNvbnRhaW4gc3BhY2VzIHNob3VsZCBiZSBwbGFjZWQgYmV0d2Vl
biBxdW90ZXMgKFwiIFwiKS4KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBQcm9qZWN0IHJlbGF0
ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhpcyB0
YWcgc3BlY2lmaWVzIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgY2hhcmFjdGVycyBpbiB0aGUg
Y29uZmlnIGZpbGUKLSMgdGhhdCBmb2xsb3cuIFRoZSBkZWZhdWx0IGlzIFVURi04IHdoaWNoIGlz
IGFsc28gdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCB0ZXh0Ci0jIGJlZm9yZSB0aGUgZmlyc3Qg
b2NjdXJyZW5jZSBvZiB0aGlzIHRhZy4gRG94eWdlbiB1c2VzIGxpYmljb252IChvciB0aGUgaWNv
bnYKLSMgYnVpbHQgaW50byBsaWJjKSBmb3IgdGhlIHRyYW5zY29kaW5nLiBTZWUgaHR0cDovL3d3
dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252Ci0jIGZvciB0aGUgbGlzdCBvZiBwb3NzaWJsZSBl
bmNvZGluZ3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYtOC4KLQotRE9YWUZJTEVfRU5D
T0RJTkcgICAgICA9IFVURi04Ci0KLSMgVGhlIFBST0pFQ1RfTkFNRSB0YWcgaXMgYSBzaW5nbGUg
d29yZCAob3IgYSBzZXF1ZW5jZSBvZiB3b3JkcyBzdXJyb3VuZGVkIGJ5Ci0jIGRvdWJsZS1xdW90
ZXMsIHVubGVzcyB5b3UgYXJlIHVzaW5nIERveHl3aXphcmQpIHRoYXQgc2hvdWxkIGlkZW50aWZ5
IHRoZQotIyBwcm9qZWN0IGZvciB3aGljaCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQu
IFRoaXMgbmFtZSBpcyB1c2VkIGluIHRoZQotIyB0aXRsZSBvZiBtb3N0IGdlbmVyYXRlZCBwYWdl
cyBhbmQgaW4gYSBmZXcgb3RoZXIgcGxhY2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTXkg
UHJvamVjdC4KLQotUFJPSkVDVF9OQU1FICAgICAgICAgICA9ICJKc29uQ3BwIgotCi0jIFRoZSBQ
Uk9KRUNUX05VTUJFUiB0YWcgY2FuIGJlIHVzZWQgdG8gZW50ZXIgYSBwcm9qZWN0IG9yIHJldmlz
aW9uIG51bWJlci4gVGhpcwotIyBjb3VsZCBiZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBnZW5l
cmF0ZWQgZG9jdW1lbnRhdGlvbiBvciBpZiBzb21lIHZlcnNpb24KLSMgY29udHJvbCBzeXN0ZW0g
aXMgdXNlZC4KLQotUFJPSkVDVF9OVU1CRVIgICAgICAgICA9ICVKU09OQ1BQX1ZFUlNJT04lCi0K
LSMgVXNpbmcgdGhlIFBST0pFQ1RfQlJJRUYgdGFnIG9uZSBjYW4gcHJvdmlkZSBhbiBvcHRpb25h
bCBvbmUgbGluZSBkZXNjcmlwdGlvbgotIyBmb3IgYSBwcm9qZWN0IHRoYXQgYXBwZWFycyBhdCB0
aGUgdG9wIG9mIGVhY2ggcGFnZSBhbmQgc2hvdWxkIGdpdmUgdmlld2VyIGEKLSMgcXVpY2sgaWRl
YSBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGUgcHJvamVjdC4gS2VlcCB0aGUgZGVzY3JpcHRpb24g
c2hvcnQuCi0KLVBST0pFQ1RfQlJJRUYgICAgICAgICAgID0gIkpTT04gZGF0YSBmb3JtYXQgbWFu
aXB1bGF0aW9uIGxpYnJhcnkiCi0KLSMgV2l0aCB0aGUgUFJPSkVDVF9MT0dPIHRhZyBvbmUgY2Fu
IHNwZWNpZnkgYW4gbG9nbyBvciBpY29uIHRoYXQgaXMgaW5jbHVkZWQgaW4KLSMgdGhlIGRvY3Vt
ZW50YXRpb24uIFRoZSBtYXhpbXVtIGhlaWdodCBvZiB0aGUgbG9nbyBzaG91bGQgbm90IGV4Y2Vl
ZCA1NSBwaXhlbHMKLSMgYW5kIHRoZSBtYXhpbXVtIHdpZHRoIHNob3VsZCBub3QgZXhjZWVkIDIw
MCBwaXhlbHMuIERveHlnZW4gd2lsbCBjb3B5IHRoZSBsb2dvCi0jIHRvIHRoZSBvdXRwdXQgZGly
ZWN0b3J5LgotCi1QUk9KRUNUX0xPR08gICAgICAgICAgID0KLQotIyBUaGUgT1VUUFVUX0RJUkVD
VE9SWSB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAocmVsYXRpdmUgb3IgYWJzb2x1dGUpIHBh
dGgKLSMgaW50byB3aGljaCB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSB3cml0
dGVuLiBJZiBhIHJlbGF0aXZlIHBhdGggaXMKLSMgZW50ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2
ZSB0byB0aGUgbG9jYXRpb24gd2hlcmUgZG94eWdlbiB3YXMgc3RhcnRlZC4gSWYKLSMgbGVmdCBi
bGFuayB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkLgotCi1PVVRQVVRfRElSRUNU
T1JZICAgICAgID0gJURPQ19UT1BESVIlCi0KLSMgSWYgdGhlIENSRUFURV9TVUJESVJTIHRhZyBp
cyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCBjcmVhdGUgNDA5NiBzdWItCi0jIGRpcmVj
dG9yaWVzIChpbiAyIGxldmVscykgdW5kZXIgdGhlIG91dHB1dCBkaXJlY3Rvcnkgb2YgZWFjaCBv
dXRwdXQgZm9ybWF0IGFuZAotIyB3aWxsIGRpc3RyaWJ1dGUgdGhlIGdlbmVyYXRlZCBmaWxlcyBv
dmVyIHRoZXNlIGRpcmVjdG9yaWVzLiBFbmFibGluZyB0aGlzCi0jIG9wdGlvbiBjYW4gYmUgdXNl
ZnVsIHdoZW4gZmVlZGluZyBkb3h5Z2VuIGEgaHVnZSBhbW91bnQgb2Ygc291cmNlIGZpbGVzLCB3
aGVyZQotIyBwdXR0aW5nIGFsbCBnZW5lcmF0ZWQgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
IHdvdWxkIG90aGVyd2lzZSBjYXVzZXMKLSMgcGVyZm9ybWFuY2UgcHJvYmxlbXMgZm9yIHRoZSBm
aWxlIHN5c3RlbS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1DUkVBVEVfU1VCRElS
UyAgICAgICAgID0gTk8KLQotIyBUaGUgT1VUUFVUX0xBTkdVQUdFIHRhZyBpcyB1c2VkIHRvIHNw
ZWNpZnkgdGhlIGxhbmd1YWdlIGluIHdoaWNoIGFsbAotIyBkb2N1bWVudGF0aW9uIGdlbmVyYXRl
ZCBieSBkb3h5Z2VuIGlzIHdyaXR0ZW4uIERveHlnZW4gd2lsbCB1c2UgdGhpcwotIyBpbmZvcm1h
dGlvbiB0byBnZW5lcmF0ZSBhbGwgY29uc3RhbnQgb3V0cHV0IGluIHRoZSBwcm9wZXIgbGFuZ3Vh
Z2UuCi0jIFBvc3NpYmxlIHZhbHVlcyBhcmU6IEFmcmlrYWFucywgQXJhYmljLCBCcmF6aWxpYW4s
IENhdGFsYW4sIENoaW5lc2UsIENoaW5lc2UtCi0jIFRyYWRpdGlvbmFsLCBDcm9hdGlhbiwgQ3pl
Y2gsIERhbmlzaCwgRHV0Y2gsIEVuZ2xpc2gsIEVzcGVyYW50bywgRmFyc2ksCi0jIEZpbm5pc2gs
IEZyZW5jaCwgR2VybWFuLCBHcmVlaywgSHVuZ2FyaWFuLCBJdGFsaWFuLCBKYXBhbmVzZSwgSmFw
YW5lc2UtZW4sCi0jIEtvcmVhbiwgS29yZWFuLWVuLCBMYXR2aWFuLCBOb3J3ZWdpYW4sIE1hY2Vk
b25pYW4sIFBlcnNpYW4sIFBvbGlzaCwKLSMgUG9ydHVndWVzZSwgUm9tYW5pYW4sIFJ1c3NpYW4s
IFNlcmJpYW4sIFNsb3ZhaywgU2xvdmVuZSwgU3BhbmlzaCwgU3dlZGlzaCwKLSMgVHVya2lzaCwg
VWtyYWluaWFuIGFuZCBWaWV0bmFtZXNlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogRW5nbGlz
aC4KLQotT1VUUFVUX0xBTkdVQUdFICAgICAgICA9IEVuZ2xpc2gKLQotIyBJZiB0aGUgQlJJRUZf
TUVNQkVSX0RFU0MgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGluY2x1ZGUgYnJpZWYg
bWVtYmVyCi0jIGRlc2NyaXB0aW9ucyBhZnRlciB0aGUgbWVtYmVycyB0aGF0IGFyZSBsaXN0ZWQg
aW4gdGhlIGZpbGUgYW5kIGNsYXNzCi0jIGRvY3VtZW50YXRpb24gKHNpbWlsYXIgdG8gSmF2YWRv
YykuIFNldCB0byBOTyB0byBkaXNhYmxlIHRoaXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0KLUJSSUVGX01FTUJFUl9ERVNDICAgICAgPSBZRVMKLQotIyBJZiB0aGUgUkVQRUFUX0JS
SUVGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBwcmVwZW5kIHRoZSBicmllZgotIyBk
ZXNjcmlwdGlvbiBvZiBhIG1lbWJlciBvciBmdW5jdGlvbiBiZWZvcmUgdGhlIGRldGFpbGVkIGRl
c2NyaXB0aW9uCi0jCi0jIE5vdGU6IElmIGJvdGggSElERV9VTkRPQ19NRU1CRVJTIGFuZCBCUklF
Rl9NRU1CRVJfREVTQyBhcmUgc2V0IHRvIE5PLCB0aGUKLSMgYnJpZWYgZGVzY3JpcHRpb25zIHdp
bGwgYmUgY29tcGxldGVseSBzdXBwcmVzc2VkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVT
LgotCi1SRVBFQVRfQlJJRUYgICAgICAgICAgID0gWUVTCi0KLSMgVGhpcyB0YWcgaW1wbGVtZW50
cyBhIHF1YXNpLWludGVsbGlnZW50IGJyaWVmIGRlc2NyaXB0aW9uIGFiYnJldmlhdG9yIHRoYXQg
aXMKLSMgdXNlZCB0byBmb3JtIHRoZSB0ZXh0IGluIHZhcmlvdXMgbGlzdGluZ3MuIEVhY2ggc3Ry
aW5nIGluIHRoaXMgbGlzdCwgaWYgZm91bmQKLSMgYXMgdGhlIGxlYWRpbmcgdGV4dCBvZiB0aGUg
YnJpZWYgZGVzY3JpcHRpb24sIHdpbGwgYmUgc3RyaXBwZWQgZnJvbSB0aGUgdGV4dAotIyBhbmQg
dGhlIHJlc3VsdCwgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgd2hvbGUgbGlzdCwgaXMgdXNlZCBhcyB0
aGUgYW5ub3RhdGVkCi0jIHRleHQuIE90aGVyd2lzZSwgdGhlIGJyaWVmIGRlc2NyaXB0aW9uIGlz
IHVzZWQgYXMtaXMuIElmIGxlZnQgYmxhbmssIHRoZQotIyBmb2xsb3dpbmcgdmFsdWVzIGFyZSB1
c2VkICgkbmFtZSBpcyBhdXRvbWF0aWNhbGx5IHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YKLSMg
dGhlIGVudGl0eSk6VGhlICRuYW1lIGNsYXNzLCBUaGUgJG5hbWUgd2lkZ2V0LCBUaGUgJG5hbWUg
ZmlsZSwgaXMsIHByb3ZpZGVzLAotIyBzcGVjaWZpZXMsIGNvbnRhaW5zLCByZXByZXNlbnRzLCBh
LCBhbiBhbmQgdGhlLgotCi1BQkJSRVZJQVRFX0JSSUVGICAgICAgID0gIlRoZSAkbmFtZSBjbGFz
cyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgJG5hbWUgd2lkZ2V0IiBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIlRoZSAkbmFtZSBmaWxlIiBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgaXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRhaW5zIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnRzIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhbiBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0KLSMgSWYgdGhlIEFMV0FZU19ERVRBSUxFRF9T
RUMgYW5kIFJFUEVBVF9CUklFRiB0YWdzIGFyZSBib3RoIHNldCB0byBZRVMgdGhlbgotIyBkb3h5
Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZXRhaWxlZCBzZWN0aW9uIGV2ZW4gaWYgdGhlcmUgaXMgb25s
eSBhIGJyaWVmCi0jIGRlc2NyaXB0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LUFMV0FZU19ERVRBSUxFRF9TRUMgICAgPSBOTwotCi0jIElmIHRoZSBJTkxJTkVfSU5IRVJJVEVE
X01FTUIgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBzaG93IGFsbAotIyBpbmhlcml0
ZWQgbWVtYmVycyBvZiBhIGNsYXNzIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgY2xhc3Mg
YXMgaWYgdGhvc2UKLSMgbWVtYmVycyB3ZXJlIG9yZGluYXJ5IGNsYXNzIG1lbWJlcnMuIENvbnN0
cnVjdG9ycywgZGVzdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQKLSMgb3BlcmF0b3JzIG9mIHRoZSBi
YXNlIGNsYXNzZXMgd2lsbCBub3QgYmUgc2hvd24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBO
Ty4KLQotSU5MSU5FX0lOSEVSSVRFRF9NRU1CICA9IE5PCi0KLSMgSWYgdGhlIEZVTExfUEFUSF9O
QU1FUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgcHJlcGVuZCB0aGUgZnVsbCBwYXRo
Ci0jIGJlZm9yZSBmaWxlcyBuYW1lIGluIHRoZSBmaWxlIGxpc3QgYW5kIGluIHRoZSBoZWFkZXIg
ZmlsZXMuIElmIHNldCB0byBOTyB0aGUKLSMgc2hvcnRlc3QgcGF0aCB0aGF0IG1ha2VzIHRoZSBm
aWxlIG5hbWUgdW5pcXVlIHdpbGwgYmUgdXNlZAotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVT
LgotCi1GVUxMX1BBVEhfTkFNRVMgICAgICAgID0gWUVTCi0KLSMgVGhlIFNUUklQX0ZST01fUEFU
SCB0YWcgY2FuIGJlIHVzZWQgdG8gc3RyaXAgYSB1c2VyLWRlZmluZWQgcGFydCBvZiB0aGUgcGF0
aC4KLSMgU3RyaXBwaW5nIGlzIG9ubHkgZG9uZSBpZiBvbmUgb2YgdGhlIHNwZWNpZmllZCBzdHJp
bmdzIG1hdGNoZXMgdGhlIGxlZnQtaGFuZAotIyBwYXJ0IG9mIHRoZSBwYXRoLiBUaGUgdGFnIGNh
biBiZSB1c2VkIHRvIHNob3cgcmVsYXRpdmUgcGF0aHMgaW4gdGhlIGZpbGUgbGlzdC4KLSMgSWYg
bGVmdCBibGFuayB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggZG94eWdlbiBpcyBydW4gaXMgdXNl
ZCBhcyB0aGUgcGF0aCB0bwotIyBzdHJpcC4KLSMKLSMgTm90ZSB0aGF0IHlvdSBjYW4gc3BlY2lm
eSBhYnNvbHV0ZSBwYXRocyBoZXJlLCBidXQgYWxzbyByZWxhdGl2ZSBwYXRocywgd2hpY2gKLSMg
d2lsbCBiZSByZWxhdGl2ZSBmcm9tIHRoZSBkaXJlY3Rvcnkgd2hlcmUgZG94eWdlbiBpcyBzdGFy
dGVkLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRlVMTF9QQVRIX05BTUVTIGlz
IHNldCB0byBZRVMuCi0KLVNUUklQX0ZST01fUEFUSCAgICAgICAgPSAlVE9QRElSJQotCi0jIFRo
ZSBTVFJJUF9GUk9NX0lOQ19QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXItZGVm
aW5lZCBwYXJ0IG9mIHRoZQotIyBwYXRoIG1lbnRpb25lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBv
ZiBhIGNsYXNzLCB3aGljaCB0ZWxscyB0aGUgcmVhZGVyIHdoaWNoCi0jIGhlYWRlciBmaWxlIHRv
IGluY2x1ZGUgaW4gb3JkZXIgdG8gdXNlIGEgY2xhc3MuIElmIGxlZnQgYmxhbmsgb25seSB0aGUg
bmFtZSBvZgotIyB0aGUgaGVhZGVyIGZpbGUgY29udGFpbmluZyB0aGUgY2xhc3MgZGVmaW5pdGlv
biBpcyB1c2VkLiBPdGhlcndpc2Ugb25lIHNob3VsZAotIyBzcGVjaWZ5IHRoZSBsaXN0IG9mIGlu
Y2x1ZGUgcGF0aHMgdGhhdCBhcmUgbm9ybWFsbHkgcGFzc2VkIHRvIHRoZSBjb21waWxlcgotIyB1
c2luZyB0aGUgLUkgZmxhZy4KLQotU1RSSVBfRlJPTV9JTkNfUEFUSCAgICA9ICVUT1BESVIlL2lu
Y2x1ZGUKLQotIyBJZiB0aGUgU0hPUlRfTkFNRVMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4g
d2lsbCBnZW5lcmF0ZSBtdWNoIHNob3J0ZXIgKGJ1dAotIyBsZXNzIHJlYWRhYmxlKSBmaWxlIG5h
bWVzLiBUaGlzIGNhbiBiZSB1c2VmdWwgaXMgeW91ciBmaWxlIHN5c3RlbXMgZG9lc24ndAotIyBz
dXBwb3J0IGxvbmcgbmFtZXMgbGlrZSBvbiBET1MsIE1hYywgb3IgQ0QtUk9NLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0KLVNIT1JUX05BTUVTICAgICAgICAgICAgPSBOTwotCi0jIElm
IHRoZSBKQVZBRE9DX0FVVE9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2ls
bCBpbnRlcnByZXQgdGhlCi0jIGZpcnN0IGxpbmUgKHVudGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEg
SmF2YWRvYy1zdHlsZSBjb21tZW50IGFzIHRoZSBicmllZgotIyBkZXNjcmlwdGlvbi4gSWYgc2V0
IHRvIE5PLCB0aGUgSmF2YWRvYy1zdHlsZSB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVndWxhciBR
dC0KLSMgc3R5bGUgY29tbWVudHMgKHRodXMgcmVxdWlyaW5nIGFuIGV4cGxpY2l0IEBicmllZiBj
b21tYW5kIGZvciBhIGJyaWVmCi0jIGRlc2NyaXB0aW9uLikKLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1KQVZBRE9DX0FVVE9CUklFRiAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFFUX0FV
VE9CUklFRiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBpbnRlcnByZXQgdGhl
IGZpcnN0Ci0jIGxpbmUgKHVudGlsIHRoZSBmaXJzdCBkb3QpIG9mIGEgUXQtc3R5bGUgY29tbWVu
dCBhcyB0aGUgYnJpZWYgZGVzY3JpcHRpb24uIElmCi0jIHNldCB0byBOTywgdGhlIFF0LXN0eWxl
IHdpbGwgYmVoYXZlIGp1c3QgbGlrZSByZWd1bGFyIFF0LXN0eWxlIGNvbW1lbnRzICh0aHVzCi0j
IHJlcXVpcmluZyBhbiBleHBsaWNpdCBcYnJpZWYgY29tbWFuZCBmb3IgYSBicmllZiBkZXNjcmlw
dGlvbi4pCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUVRfQVVUT0JSSUVGICAgICAg
ICAgICA9IE5PCi0KLSMgVGhlIE1VTFRJTElORV9DUFBfSVNfQlJJRUYgdGFnIGNhbiBiZSBzZXQg
dG8gWUVTIHRvIG1ha2UgZG94eWdlbiB0cmVhdCBhCi0jIG11bHRpLWxpbmUgQysrIHNwZWNpYWwg
Y29tbWVudCBibG9jayAoaS5lLiBhIGJsb2NrIG9mIC8vISBvciAvLy8gY29tbWVudHMpIGFzCi0j
IGEgYnJpZWYgZGVzY3JpcHRpb24uIFRoaXMgdXNlZCB0byBiZSB0aGUgZGVmYXVsdCBiZWhhdmlv
ci4gVGhlIG5ldyBkZWZhdWx0IGlzCi0jIHRvIHRyZWF0IGEgbXVsdGktbGluZSBDKysgY29tbWVu
dCBibG9jayBhcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uLiBTZXQgdGhpcwotIyB0YWcgdG8gWUVT
IGlmIHlvdSBwcmVmZXIgdGhlIG9sZCBiZWhhdmlvciBpbnN0ZWFkLgotIwotIyBOb3RlIHRoYXQg
c2V0dGluZyB0aGlzIHRhZyB0byBZRVMgYWxzbyBtZWFucyB0aGF0IHJhdGlvbmFsIHJvc2UgY29t
bWVudHMgYXJlCi0jIG5vdCByZWNvZ25pemVkIGFueSBtb3JlLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0KLU1VTFRJTElORV9DUFBfSVNfQlJJRUYgPSBOTwotCi0jIElmIHRoZSBJTkhF
UklUX0RPQ1MgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhbiB1bmRvY3VtZW50ZWQgbWVtYmVyIGlu
aGVyaXRzIHRoZQotIyBkb2N1bWVudGF0aW9uIGZyb20gYW55IGRvY3VtZW50ZWQgbWVtYmVyIHRo
YXQgaXQgcmUtaW1wbGVtZW50cy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotSU5I
RVJJVF9ET0NTICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBTRVBBUkFURV9NRU1CRVJfUEFH
RVMgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIHByb2R1Y2UgYQotIyBuZXcg
cGFnZSBmb3IgZWFjaCBtZW1iZXIuIElmIHNldCB0byBOTywgdGhlIGRvY3VtZW50YXRpb24gb2Yg
YSBtZW1iZXIgd2lsbCBiZQotIyBwYXJ0IG9mIHRoZSBmaWxlL2NsYXNzL25hbWVzcGFjZSB0aGF0
IGNvbnRhaW5zIGl0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNFUEFSQVRFX01F
TUJFUl9QQUdFUyAgPSBOTwotCi0jIFRoZSBUQUJfU0laRSB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0
IHRoZSBudW1iZXIgb2Ygc3BhY2VzIGluIGEgdGFiLiBEb3h5Z2VuCi0jIHVzZXMgdGhpcyB2YWx1
ZSB0byByZXBsYWNlIHRhYnMgYnkgc3BhY2VzIGluIGNvZGUgZnJhZ21lbnRzLgotIyBNaW5pbXVt
IHZhbHVlOiAxLCBtYXhpbXVtIHZhbHVlOiAxNiwgZGVmYXVsdCB2YWx1ZTogNC4KLQotVEFCX1NJ
WkUgICAgICAgICAgICAgICA9IDMKLQotIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5
IGEgbnVtYmVyIG9mIGFsaWFzZXMgdGhhdCBhY3QgYXMgY29tbWFuZHMgaW4KLSMgdGhlIGRvY3Vt
ZW50YXRpb24uIEFuIGFsaWFzIGhhcyB0aGUgZm9ybToKLSMgbmFtZT12YWx1ZQotIyBGb3IgZXhh
bXBsZSBhZGRpbmcKLSMgInNpZGVlZmZlY3Q9QHBhciBTaWRlIEVmZmVjdHM6XG4iCi0jIHdpbGwg
YWxsb3cgeW91IHRvIHB1dCB0aGUgY29tbWFuZCBcc2lkZWVmZmVjdCAob3IgQHNpZGVlZmZlY3Qp
IGluIHRoZQotIyBkb2N1bWVudGF0aW9uLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIHVzZXItZGVm
aW5lZCBwYXJhZ3JhcGggd2l0aCBoZWFkaW5nCi0jICJTaWRlIEVmZmVjdHM6Ii4gWW91IGNhbiBw
dXQgXG4ncyBpbiB0aGUgdmFsdWUgcGFydCBvZiBhbiBhbGlhcyB0byBpbnNlcnQKLSMgbmV3bGlu
ZXMuCi0KLUFMSUFTRVMgICAgICAgICAgICAgICAgPSAidGVzdENhc2VTZXR1cD1cbGluayBDcHBV
VDo6VGVzdENhc2U6OnNldFVwKCkgc2V0VXAoKVxlbmRsaW5rIiBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3RDYXNlUnVuPVxsaW5rIENwcFVUOjpUZXN0Q2FzZTo6cnVuKCkgcnVuKClc
ZW5kbGluayIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0Q2FzZVRlYXJEb3duPVxs
aW5rIENwcFVUOjpUZXN0Q2FzZTo6dGVhckRvd24oKSB0ZWFyRG93bigpXGVuZGxpbmsiIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAianNvbl9yZWY9PGEgSFJFRj0naHR0cDovL3d3dy5qc29u
Lm9yZy8nPkpTT04gKEphdmFTY3JpcHQgT2JqZWN0IE5vdGF0aW9uKTwvYT4iCi0KLSMgVGhpcyB0
YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiB3b3JkLWtleXdvcmQgbWFwcGlu
Z3MgKFRDTCBvbmx5KS4KLSMgQSBtYXBwaW5nIGhhcyB0aGUgZm9ybSAibmFtZT12YWx1ZSIuIEZv
ciBleGFtcGxlIGFkZGluZyAiY2xhc3M9aXRjbDo6Y2xhc3MiCi0jIHdpbGwgYWxsb3cgeW91IHRv
IHVzZSB0aGUgY29tbWFuZCBjbGFzcyBpbiB0aGUgaXRjbDo6Y2xhc3MgbWVhbmluZy4KLQotVENM
X1NVQlNUICAgICAgICAgICAgICA9Ci0KLSMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfRk9SX0Mg
dGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgQyBzb3VyY2VzCi0jIG9ubHku
IERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9yZWQg
Zm9yIEMuIEZvcgotIyBpbnN0YW5jZSwgc29tZSBvZiB0aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3
aWxsIGJlIGRpZmZlcmVudC4gVGhlIGxpc3Qgb2YgYWxsCi0jIG1lbWJlcnMgd2lsbCBiZSBvbWl0
dGVkLCBldGMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotT1BUSU1JWkVfT1VUUFVU
X0ZPUl9DICA9IE5PCi0KLSMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfSkFWQSB0YWcgdG8gWUVT
IGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBKYXZhIG9yCi0jIFB5dGhvbiBzb3VyY2VzIG9u
bHkuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIG1vcmUgdGFpbG9y
ZWQKLSMgZm9yIHRoYXQgbGFuZ3VhZ2UuIEZvciBpbnN0YW5jZSwgbmFtZXNwYWNlcyB3aWxsIGJl
IHByZXNlbnRlZCBhcyBwYWNrYWdlcywKLSMgcXVhbGlmaWVkIHNjb3BlcyB3aWxsIGxvb2sgZGlm
ZmVyZW50LCBldGMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotT1BUSU1JWkVfT1VU
UFVUX0pBVkEgICA9IE5PCi0KLSMgU2V0IHRoZSBPUFRJTUlaRV9GT1JfRk9SVFJBTiB0YWcgdG8g
WUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBGb3J0cmFuCi0jIHNvdXJjZXMuIERveHln
ZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIHRhaWxvcmVkIGZvciBGb3J0cmFu
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLU9QVElNSVpFX0ZPUl9GT1JUUkFOICAg
PSBOTwotCi0jIFNldCB0aGUgT1BUSU1JWkVfT1VUUFVUX1ZIREwgdGFnIHRvIFlFUyBpZiB5b3Vy
IHByb2plY3QgY29uc2lzdHMgb2YgVkhETAotIyBzb3VyY2VzLiBEb3h5Z2VuIHdpbGwgdGhlbiBn
ZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWlsb3JlZCBmb3IgVkhETC4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1PUFRJTUlaRV9PVVRQVVRfVkhETCAgID0gTk8KLQotIyBEb3h5Z2Vu
IHNlbGVjdHMgdGhlIHBhcnNlciB0byB1c2UgZGVwZW5kaW5nIG9uIHRoZSBleHRlbnNpb24gb2Yg
dGhlIGZpbGVzIGl0Ci0jIHBhcnNlcy4gV2l0aCB0aGlzIHRhZyB5b3UgY2FuIGFzc2lnbiB3aGlj
aCBwYXJzZXIgdG8gdXNlIGZvciBhIGdpdmVuCi0jIGV4dGVuc2lvbi4gRG94eWdlbiBoYXMgYSBi
dWlsdC1pbiBtYXBwaW5nLCBidXQgeW91IGNhbiBvdmVycmlkZSBvciBleHRlbmQgaXQKLSMgdXNp
bmcgdGhpcyB0YWcuIFRoZSBmb3JtYXQgaXMgZXh0PWxhbmd1YWdlLCB3aGVyZSBleHQgaXMgYSBm
aWxlIGV4dGVuc2lvbiwgYW5kCi0jIGxhbmd1YWdlIGlzIG9uZSBvZiB0aGUgcGFyc2VycyBzdXBw
b3J0ZWQgYnkgZG94eWdlbjogSURMLCBKYXZhLCBKYXZhU2NyaXB0LAotIyBDIywgQywgQysrLCBE
LCBQSFAsIE9iamVjdGl2ZS1DLCBQeXRob24sIEZvcnRyYW4sIFZIREwuIEZvciBpbnN0YW5jZSB0
byBtYWtlCi0jIGRveHlnZW4gdHJlYXQgLmluYyBmaWxlcyBhcyBGb3J0cmFuIGZpbGVzIChkZWZh
dWx0IGlzIFBIUCksIGFuZCAuZiBmaWxlcyBhcyBDCi0jIChkZWZhdWx0IGlzIEZvcnRyYW4pLCB1
c2U6IGluYz1Gb3J0cmFuIGY9Qy4KLSMKLSMgTm90ZSBGb3IgZmlsZXMgd2l0aG91dCBleHRlbnNp
b24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEgcGxhY2Vob2xkZXIuCi0jCi0jIE5vdGUg
dGhhdCBmb3IgY3VzdG9tIGV4dGVuc2lvbnMgeW91IGFsc28gbmVlZCB0byBzZXQgRklMRV9QQVRU
RVJOUyBvdGhlcndpc2UKLSMgdGhlIGZpbGVzIGFyZSBub3QgcmVhZCBieSBkb3h5Z2VuLgotCi1F
WFRFTlNJT05fTUFQUElORyAgICAgID0KLQotIyBJZiB0aGUgTUFSS0RPV05fU1VQUE9SVCB0YWcg
aXMgZW5hYmxlZCB0aGVuIGRveHlnZW4gcHJlLXByb2Nlc3NlcyBhbGwgY29tbWVudHMKLSMgYWNj
b3JkaW5nIHRvIHRoZSBNYXJrZG93biBmb3JtYXQsIHdoaWNoIGFsbG93cyBmb3IgbW9yZSByZWFk
YWJsZQotIyBkb2N1bWVudGF0aW9uLiBTZWUgaHR0cDovL2RhcmluZ2ZpcmViYWxsLm5ldC9wcm9q
ZWN0cy9tYXJrZG93bi8gZm9yIGRldGFpbHMuCi0jIFRoZSBvdXRwdXQgb2YgbWFya2Rvd24gcHJv
Y2Vzc2luZyBpcyBmdXJ0aGVyIHByb2Nlc3NlZCBieSBkb3h5Z2VuLCBzbyB5b3UgY2FuCi0jIG1p
eCBkb3h5Z2VuLCBIVE1MLCBhbmQgWE1MIGNvbW1hbmRzIHdpdGggTWFya2Rvd24gZm9ybWF0dGlu
Zy4gRGlzYWJsZSBvbmx5IGluCi0jIGNhc2Ugb2YgYmFja3dhcmQgY29tcGF0aWJpbGl0aWVzIGlz
c3Vlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotTUFSS0RPV05fU1VQUE9SVCAg
ICAgICA9IFlFUwotCi0jIFdoZW4gZW5hYmxlZCBkb3h5Z2VuIHRyaWVzIHRvIGxpbmsgd29yZHMg
dGhhdCBjb3JyZXNwb25kIHRvIGRvY3VtZW50ZWQKLSMgY2xhc3Nlcywgb3IgbmFtZXNwYWNlcyB0
byB0aGVpciBjb3JyZXNwb25kaW5nIGRvY3VtZW50YXRpb24uIFN1Y2ggYSBsaW5rIGNhbgotIyBi
ZSBwcmV2ZW50ZWQgaW4gaW5kaXZpZHVhbCBjYXNlcyBieSBieSBwdXR0aW5nIGEgJSBzaWduIGlu
IGZyb250IG9mIHRoZSB3b3JkCi0jIG9yIGdsb2JhbGx5IGJ5IHNldHRpbmcgQVVUT0xJTktfU1VQ
UE9SVCB0byBOTy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotQVVUT0xJTktfU1VQ
UE9SVCAgICAgICA9IFlFUwotCi0jIElmIHlvdSB1c2UgU1RMIGNsYXNzZXMgKGkuZS4gc3RkOjpz
dHJpbmcsIHN0ZDo6dmVjdG9yLCBldGMuKSBidXQgZG8gbm90IHdhbnQKLSMgdG8gaW5jbHVkZSAo
YSB0YWcgZmlsZSBmb3IpIHRoZSBTVEwgc291cmNlcyBhcyBpbnB1dCwgdGhlbiB5b3Ugc2hvdWxk
IHNldCB0aGlzCi0jIHRhZyB0byBZRVMgaW4gb3JkZXIgdG8gbGV0IGRveHlnZW4gbWF0Y2ggZnVu
Y3Rpb25zIGRlY2xhcmF0aW9ucyBhbmQKLSMgZGVmaW5pdGlvbnMgd2hvc2UgYXJndW1lbnRzIGNv
bnRhaW4gU1RMIGNsYXNzZXMgKGUuZy4gZnVuYyhzdGQ6OnN0cmluZyk7Ci0jIHZlcnN1cyBmdW5j
KHN0ZDo6c3RyaW5nKSB7fSkuIFRoaXMgYWxzbyBtYWtlIHRoZSBpbmhlcml0YW5jZSBhbmQgY29s
bGFib3JhdGlvbgotIyBkaWFncmFtcyB0aGF0IGludm9sdmUgU1RMIGNsYXNzZXMgbW9yZSBjb21w
bGV0ZSBhbmQgYWNjdXJhdGUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotQlVJTFRJ
Tl9TVExfU1VQUE9SVCAgICA9IFlFUwotCi0jIElmIHlvdSB1c2UgTWljcm9zb2Z0J3MgQysrL0NM
SSBsYW5ndWFnZSwgeW91IHNob3VsZCBzZXQgdGhpcyBvcHRpb24gdG8gWUVTIHRvCi0jIGVuYWJs
ZSBwYXJzaW5nIHN1cHBvcnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotQ1BQX0NM
SV9TVVBQT1JUICAgICAgICA9IE5PCi0KLSMgU2V0IHRoZSBTSVBfU1VQUE9SVCB0YWcgdG8gWUVT
IGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBzaXAgKHNlZToKLSMgaHR0cDovL3d3dy5yaXZl
cmJhbmtjb21wdXRpbmcuY28udWsvc29mdHdhcmUvc2lwL2ludHJvKSBzb3VyY2VzIG9ubHkuIERv
eHlnZW4KLSMgd2lsbCBwYXJzZSB0aGVtIGxpa2Ugbm9ybWFsIEMrKyBidXQgd2lsbCBhc3N1bWUg
YWxsIGNsYXNzZXMgdXNlIHB1YmxpYyBpbnN0ZWFkCi0jIG9mIHByaXZhdGUgaW5oZXJpdGFuY2Ug
d2hlbiBubyBleHBsaWNpdCBwcm90ZWN0aW9uIGtleXdvcmQgaXMgcHJlc2VudC4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1TSVBfU1VQUE9SVCAgICAgICAgICAgID0gTk8KLQotIyBG
b3IgTWljcm9zb2Z0J3MgSURMIHRoZXJlIGFyZSBwcm9wZ2V0IGFuZCBwcm9wcHV0IGF0dHJpYnV0
ZXMgdG8gaW5kaWNhdGUKLSMgZ2V0dGVyIGFuZCBzZXR0ZXIgbWV0aG9kcyBmb3IgYSBwcm9wZXJ0
eS4gU2V0dGluZyB0aGlzIG9wdGlvbiB0byBZRVMgd2lsbCBtYWtlCi0jIGRveHlnZW4gdG8gcmVw
bGFjZSB0aGUgZ2V0IGFuZCBzZXQgbWV0aG9kcyBieSBhIHByb3BlcnR5IGluIHRoZSBkb2N1bWVu
dGF0aW9uLgotIyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIHRoZSBtZXRob2RzIGFyZSBpbmRlZWQg
Z2V0dGluZyBvciBzZXR0aW5nIGEgc2ltcGxlCi0jIHR5cGUuIElmIHRoaXMgaXMgbm90IHRoZSBj
YXNlLCBvciB5b3Ugd2FudCB0byBzaG93IHRoZSBtZXRob2RzIGFueXdheSwgeW91Ci0jIHNob3Vs
ZCBzZXQgdGhpcyBvcHRpb24gdG8gTk8uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0K
LUlETF9QUk9QRVJUWV9TVVBQT1JUICAgPSBZRVMKLQotIyBJZiBtZW1iZXIgZ3JvdXBpbmcgaXMg
dXNlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIERJU1RSSUJVVEVfR1JPVVBfRE9DCi0j
IHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCByZXVzZSB0aGUgZG9jdW1lbnRh
dGlvbiBvZiB0aGUgZmlyc3QKLSMgbWVtYmVyIGluIHRoZSBncm91cCAoaWYgYW55KSBmb3IgdGhl
IG90aGVyIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiBCeSBkZWZhdWx0Ci0jIGFsbCBtZW1iZXJzIG9m
IGEgZ3JvdXAgbXVzdCBiZSBkb2N1bWVudGVkIGV4cGxpY2l0bHkuCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLQotRElTVFJJQlVURV9HUk9VUF9ET0MgICA9IE5PCi0KLSMgU2V0IHRoZSBT
VUJHUk9VUElORyB0YWcgdG8gWUVTIHRvIGFsbG93IGNsYXNzIG1lbWJlciBncm91cHMgb2YgdGhl
IHNhbWUgdHlwZQotIyAoZm9yIGluc3RhbmNlIGEgZ3JvdXAgb2YgcHVibGljIGZ1bmN0aW9ucykg
dG8gYmUgcHV0IGFzIGEgc3ViZ3JvdXAgb2YgdGhhdAotIyB0eXBlIChlLmcuIHVuZGVyIHRoZSBQ
dWJsaWMgRnVuY3Rpb25zIHNlY3Rpb24pLiBTZXQgaXQgdG8gTk8gdG8gcHJldmVudAotIyBzdWJn
cm91cGluZy4gQWx0ZXJuYXRpdmVseSwgdGhpcyBjYW4gYmUgZG9uZSBwZXIgY2xhc3MgdXNpbmcg
dGhlCi0jIFxub3N1Ymdyb3VwaW5nIGNvbW1hbmQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0KLVNVQkdST1VQSU5HICAgICAgICAgICAgPSBZRVMKLQotIyBXaGVuIHRoZSBJTkxJTkVf
R1JPVVBFRF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTLCBjbGFzc2VzLCBzdHJ1Y3RzIGFuZCB1
bmlvbnMKLSMgYXJlIHNob3duIGluc2lkZSB0aGUgZ3JvdXAgaW4gd2hpY2ggdGhleSBhcmUgaW5j
bHVkZWQgKGUuZy4gdXNpbmcgXGluZ3JvdXApCi0jIGluc3RlYWQgb2Ygb24gYSBzZXBhcmF0ZSBw
YWdlIChmb3IgSFRNTCBhbmQgTWFuIHBhZ2VzKSBvciBzZWN0aW9uIChmb3IgTGFUZVgKLSMgYW5k
IFJURikuCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgZG9lcyBub3Qgd29yayBpbiBjb21i
aW5hdGlvbiB3aXRoCi0jIFNFUEFSQVRFX01FTUJFUl9QQUdFUy4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IE5PLgotCi1JTkxJTkVfR1JPVVBFRF9DTEFTU0VTID0gTk8KLQotIyBXaGVuIHRoZSBJ
TkxJTkVfU0lNUExFX1NUUlVDVFMgdGFnIGlzIHNldCB0byBZRVMsIHN0cnVjdHMsIGNsYXNzZXMs
IGFuZCB1bmlvbnMKLSMgd2l0aCBvbmx5IHB1YmxpYyBkYXRhIGZpZWxkcyBvciBzaW1wbGUgdHlw
ZWRlZiBmaWVsZHMgd2lsbCBiZSBzaG93biBpbmxpbmUgaW4KLSMgdGhlIGRvY3VtZW50YXRpb24g
b2YgdGhlIHNjb3BlIGluIHdoaWNoIHRoZXkgYXJlIGRlZmluZWQgKGkuZS4gZmlsZSwKLSMgbmFt
ZXNwYWNlLCBvciBncm91cCBkb2N1bWVudGF0aW9uKSwgcHJvdmlkZWQgdGhpcyBzY29wZSBpcyBk
b2N1bWVudGVkLiBJZiBzZXQKLSMgdG8gTk8sIHN0cnVjdHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMg
YXJlIHNob3duIG9uIGEgc2VwYXJhdGUgcGFnZSAoZm9yIEhUTUwgYW5kCi0jIE1hbiBwYWdlcykg
b3Igc2VjdGlvbiAoZm9yIExhVGVYIGFuZCBSVEYpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCi0KLUlOTElORV9TSU1QTEVfU1RSVUNUUyAgPSBOTwotCi0jIFdoZW4gVFlQRURFRl9ISURF
U19TVFJVQ1QgdGFnIGlzIGVuYWJsZWQsIGEgdHlwZWRlZiBvZiBhIHN0cnVjdCwgdW5pb24sIG9y
Ci0jIGVudW0gaXMgZG9jdW1lbnRlZCBhcyBzdHJ1Y3QsIHVuaW9uLCBvciBlbnVtIHdpdGggdGhl
IG5hbWUgb2YgdGhlIHR5cGVkZWYuIFNvCi0jIHR5cGVkZWYgc3RydWN0IFR5cGVTIHt9IFR5cGVU
LCB3aWxsIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhcyBhIHN0cnVjdAotIyB3aXRoIG5h
bWUgVHlwZVQuIFdoZW4gZGlzYWJsZWQgdGhlIHR5cGVkZWYgd2lsbCBhcHBlYXIgYXMgYSBtZW1i
ZXIgb2YgYSBmaWxlLAotIyBuYW1lc3BhY2UsIG9yIGNsYXNzLiBBbmQgdGhlIHN0cnVjdCB3aWxs
IGJlIG5hbWVkIFR5cGVTLiBUaGlzIGNhbiB0eXBpY2FsbHkgYmUKLSMgdXNlZnVsIGZvciBDIGNv
ZGUgaW4gY2FzZSB0aGUgY29kaW5nIGNvbnZlbnRpb24gZGljdGF0ZXMgdGhhdCBhbGwgY29tcG91
bmQKLSMgdHlwZXMgYXJlIHR5cGVkZWYnZWQgYW5kIG9ubHkgdGhlIHR5cGVkZWYgaXMgcmVmZXJl
bmNlZCwgbmV2ZXIgdGhlIHRhZyBuYW1lLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LVRZUEVERUZfSElERVNfU1RSVUNUICAgPSBOTwotCi0jIFRoZSBzaXplIG9mIHRoZSBzeW1ib2wg
bG9va3VwIGNhY2hlIGNhbiBiZSBzZXQgdXNpbmcgTE9PS1VQX0NBQ0hFX1NJWkUuIFRoaXMKLSMg
Y2FjaGUgaXMgdXNlZCB0byByZXNvbHZlIHN5bWJvbHMgZ2l2ZW4gdGhlaXIgbmFtZSBhbmQgc2Nv
cGUuIFNpbmNlIHRoaXMgY2FuIGJlCi0jIGFuIGV4cGVuc2l2ZSBwcm9jZXNzIGFuZCBvZnRlbiB0
aGUgc2FtZSBzeW1ib2wgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUKLSMgY29kZSwgZG94
eWdlbiBrZWVwcyBhIGNhY2hlIG9mIHByZS1yZXNvbHZlZCBzeW1ib2xzLiBJZiB0aGUgY2FjaGUg
aXMgdG9vIHNtYWxsCi0jIGRveHlnZW4gd2lsbCBiZWNvbWUgc2xvd2VyLiBJZiB0aGUgY2FjaGUg
aXMgdG9vIGxhcmdlLCBtZW1vcnkgaXMgd2FzdGVkLiBUaGUKLSMgY2FjaGUgc2l6ZSBpcyBnaXZl
biBieSB0aGlzIGZvcm11bGE6IDJeKDE2K0xPT0tVUF9DQUNIRV9TSVpFKS4gVGhlIHZhbGlkIHJh
bmdlCi0jIGlzIDAuLjksIHRoZSBkZWZhdWx0IGlzIDAsIGNvcnJlc3BvbmRpbmcgdG8gYSBjYWNo
ZSBzaXplIG9mIDJeMTY9NjU1MzYKLSMgc3ltYm9scy4gQXQgdGhlIGVuZCBvZiBhIHJ1biBkb3h5
Z2VuIHdpbGwgcmVwb3J0IHRoZSBjYWNoZSB1c2FnZSBhbmQgc3VnZ2VzdAotIyB0aGUgb3B0aW1h
bCBjYWNoZSBzaXplIGZyb20gYSBzcGVlZCBwb2ludCBvZiB2aWV3LgotIyBNaW5pbXVtIHZhbHVl
OiAwLCBtYXhpbXVtIHZhbHVlOiA5LCBkZWZhdWx0IHZhbHVlOiAwLgotCi1MT09LVVBfQ0FDSEVf
U0laRSAgICAgID0gMAotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJ1aWxkIHJlbGF0ZWQgY29u
ZmlndXJhdGlvbiBvcHRpb25zCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgdGhlIEVYVFJB
Q1RfQUxMIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBhc3N1bWUgYWxsIGVudGl0aWVz
IGluCi0jIGRvY3VtZW50YXRpb24gYXJlIGRvY3VtZW50ZWQsIGV2ZW4gaWYgbm8gZG9jdW1lbnRh
dGlvbiB3YXMgYXZhaWxhYmxlLiBQcml2YXRlCi0jIGNsYXNzIG1lbWJlcnMgYW5kIHN0YXRpYyBm
aWxlIG1lbWJlcnMgd2lsbCBiZSBoaWRkZW4gdW5sZXNzIHRoZQotIyBFWFRSQUNUX1BSSVZBVEUg
cmVzcGVjdGl2ZWx5IEVYVFJBQ1RfU1RBVElDIHRhZ3MgYXJlIHNldCB0byBZRVMuCi0jIE5vdGU6
IFRoaXMgd2lsbCBhbHNvIGRpc2FibGUgdGhlIHdhcm5pbmdzIGFib3V0IHVuZG9jdW1lbnRlZCBt
ZW1iZXJzIHRoYXQgYXJlCi0jIG5vcm1hbGx5IHByb2R1Y2VkIHdoZW4gV0FSTklOR1MgaXMgc2V0
IHRvIFlFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWFRSQUNUX0FMTCAgICAg
ICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEVYVFJBQ1RfUFJJVkFURSB0YWcgaXMgc2V0IHRvIFlF
UyBhbGwgcHJpdmF0ZSBtZW1iZXJzIG9mIGEgY2xhc3Mgd2lsbAotIyBiZSBpbmNsdWRlZCBpbiB0
aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1FWFRSQUNU
X1BSSVZBVEUgICAgICAgID0gTk8KLQotIyBJZiB0aGUgRVhUUkFDVF9QQUNLQUdFIHRhZyBpcyBz
ZXQgdG8gWUVTIGFsbCBtZW1iZXJzIHdpdGggcGFja2FnZSBvciBpbnRlcm5hbAotIyBzY29wZSB3
aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0KLUVYVFJBQ1RfUEFDS0FHRSAgICAgICAgPSBOTwotCi0jIElmIHRoZSBFWFRS
QUNUX1NUQVRJQyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgc3RhdGljIG1lbWJlcnMgb2YgYSBmaWxl
IHdpbGwgYmUKLSMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBOTy4KLQotRVhUUkFDVF9TVEFUSUMgICAgICAgICA9IFlFUwotCi0jIElmIHRo
ZSBFWFRSQUNUX0xPQ0FMX0NMQVNTRVMgdGFnIGlzIHNldCB0byBZRVMgY2xhc3NlcyAoYW5kIHN0
cnVjdHMpIGRlZmluZWQKLSMgbG9jYWxseSBpbiBzb3VyY2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRl
ZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PCi0jIG9ubHkgY2xhc3NlcyBkZWZp
bmVkIGluIGhlYWRlciBmaWxlcyBhcmUgaW5jbHVkZWQuIERvZXMgbm90IGhhdmUgYW55IGVmZmVj
dAotIyBmb3IgSmF2YSBzb3VyY2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1F
WFRSQUNUX0xPQ0FMX0NMQVNTRVMgID0gTk8KLQotIyBUaGlzIGZsYWcgaXMgb25seSB1c2VmdWwg
Zm9yIE9iamVjdGl2ZS1DIGNvZGUuIFdoZW4gc2V0IHRvIFlFUyBsb2NhbCBtZXRob2RzLAotIyB3
aGljaCBhcmUgZGVmaW5lZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gc2VjdGlvbiBidXQgbm90IGlu
IHRoZSBpbnRlcmZhY2UgYXJlCi0jIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLiBJZiBz
ZXQgdG8gTk8gb25seSBtZXRob2RzIGluIHRoZSBpbnRlcmZhY2UgYXJlCi0jIGluY2x1ZGVkLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVYVFJBQ1RfTE9DQUxfTUVUSE9EUyAgPSBO
TwotCi0jIElmIHRoaXMgZmxhZyBpcyBzZXQgdG8gWUVTLCB0aGUgbWVtYmVycyBvZiBhbm9ueW1v
dXMgbmFtZXNwYWNlcyB3aWxsIGJlCi0jIGV4dHJhY3RlZCBhbmQgYXBwZWFyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFzIGEgbmFtZXNwYWNlIGNhbGxlZAotIyAnYW5vbnltb3VzX25hbWVzcGFjZXtm
aWxlfScsIHdoZXJlIGZpbGUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBiYXNlIG5hbWUgb2YK
LSMgdGhlIGZpbGUgdGhhdCBjb250YWlucyB0aGUgYW5vbnltb3VzIG5hbWVzcGFjZS4gQnkgZGVm
YXVsdCBhbm9ueW1vdXMgbmFtZXNwYWNlCi0jIGFyZSBoaWRkZW4uCi0jIFRoZSBkZWZhdWx0IHZh
bHVlIGlzOiBOTy4KLQotRVhUUkFDVF9BTk9OX05TUEFDRVMgICA9IE5PCi0KLSMgSWYgdGhlIEhJ
REVfVU5ET0NfTUVNQkVSUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYWxs
Ci0jIHVuZG9jdW1lbnRlZCBtZW1iZXJzIGluc2lkZSBkb2N1bWVudGVkIGNsYXNzZXMgb3IgZmls
ZXMuIElmIHNldCB0byBOTyB0aGVzZQotIyBtZW1iZXJzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhl
IHZhcmlvdXMgb3ZlcnZpZXdzLCBidXQgbm8gZG9jdW1lbnRhdGlvbgotIyBzZWN0aW9uIGlzIGdl
bmVyYXRlZC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZiBFWFRSQUNUX0FMTCBpcyBlbmFi
bGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUhJREVfVU5ET0NfTUVNQkVSUyAg
ICAgPSBOTwotCi0jIElmIHRoZSBISURFX1VORE9DX0NMQVNTRVMgdGFnIGlzIHNldCB0byBZRVMs
IGRveHlnZW4gd2lsbCBoaWRlIGFsbAotIyB1bmRvY3VtZW50ZWQgY2xhc3NlcyB0aGF0IGFyZSBu
b3JtYWxseSB2aXNpYmxlIGluIHRoZSBjbGFzcyBoaWVyYXJjaHkuIElmIHNldAotIyB0byBOTyB0
aGVzZSBjbGFzc2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlvdXMgb3ZlcnZpZXdzLiBU
aGlzIG9wdGlvbiBoYXMKLSMgbm8gZWZmZWN0IGlmIEVYVFJBQ1RfQUxMIGlzIGVuYWJsZWQuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotSElERV9VTkRPQ19DTEFTU0VTICAgICA9IE5P
Ci0KLSMgSWYgdGhlIEhJREVfRlJJRU5EX0NPTVBPVU5EUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94
eWdlbiB3aWxsIGhpZGUgYWxsIGZyaWVuZAotIyAoY2xhc3N8c3RydWN0fHVuaW9uKSBkZWNsYXJh
dGlvbnMuIElmIHNldCB0byBOTyB0aGVzZSBkZWNsYXJhdGlvbnMgd2lsbCBiZQotIyBpbmNsdWRl
ZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1I
SURFX0ZSSUVORF9DT01QT1VORFMgID0gTk8KLQotIyBJZiB0aGUgSElERV9JTl9CT0RZX0RPQ1Mg
dGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFueQotIyBkb2N1bWVudGF0aW9u
IGJsb2NrcyBmb3VuZCBpbnNpZGUgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbi4gSWYgc2V0IHRvIE5P
IHRoZXNlCi0jIGJsb2NrcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBmdW5jdGlvbidzIGRldGFp
bGVkIGRvY3VtZW50YXRpb24gYmxvY2suCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQot
SElERV9JTl9CT0RZX0RPQ1MgICAgICA9IE5PCi0KLSMgVGhlIElOVEVSTkFMX0RPQ1MgdGFnIGRl
dGVybWluZXMgaWYgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIHR5cGVkIGFmdGVyIGEKLSMgXGludGVy
bmFsIGNvbW1hbmQgaXMgaW5jbHVkZWQuIElmIHRoZSB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gdGhl
IGRvY3VtZW50YXRpb24KLSMgd2lsbCBiZSBleGNsdWRlZC4gU2V0IGl0IHRvIFlFUyB0byBpbmNs
dWRlIHRoZSBpbnRlcm5hbCBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
Tk8uCi0KLUlOVEVSTkFMX0RPQ1MgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgQ0FTRV9TRU5T
RV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gZG94eWdlbiB3aWxsIG9ubHkgZ2VuZXJhdGUg
ZmlsZQotIyBuYW1lcyBpbiBsb3dlci1jYXNlIGxldHRlcnMuIElmIHNldCB0byBZRVMgdXBwZXIt
Y2FzZSBsZXR0ZXJzIGFyZSBhbHNvCi0jIGFsbG93ZWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBo
YXZlIGNsYXNzZXMgb3IgZmlsZXMgd2hvc2UgbmFtZXMgb25seSBkaWZmZXIKLSMgaW4gY2FzZSBh
bmQgaWYgeW91ciBmaWxlIHN5c3RlbSBzdXBwb3J0cyBjYXNlIHNlbnNpdGl2ZSBmaWxlIG5hbWVz
LiBXaW5kb3dzCi0jIGFuZCBNYWMgdXNlcnMgYXJlIGFkdmlzZWQgdG8gc2V0IHRoaXMgb3B0aW9u
IHRvIE5PLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogc3lzdGVtIGRlcGVuZGVudC4KLQotQ0FT
RV9TRU5TRV9OQU1FUyAgICAgICA9IE5PCi0KLSMgSWYgdGhlIEhJREVfU0NPUEVfTkFNRVMgdGFn
IGlzIHNldCB0byBOTyB0aGVuIGRveHlnZW4gd2lsbCBzaG93IG1lbWJlcnMgd2l0aAotIyB0aGVp
ciBmdWxsIGNsYXNzIGFuZCBuYW1lc3BhY2Ugc2NvcGVzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBJ
ZiBzZXQgdG8gWUVTIHRoZQotIyBzY29wZSB3aWxsIGJlIGhpZGRlbi4KLSMgVGhlIGRlZmF1bHQg
dmFsdWUgaXM6IE5PLgotCi1ISURFX1NDT1BFX05BTUVTICAgICAgID0gTk8KLQotIyBJZiB0aGUg
U0hPV19JTkNMVURFX0ZJTEVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHB1
dCBhIGxpc3Qgb2YKLSMgdGhlIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGJ5IGEgZmlsZSBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZpbGUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0KLVNIT1dfSU5DTFVERV9GSUxFUyAgICAgPSBZRVMKLQotIyBJZiB0aGUgRk9SQ0VfTE9D
QUxfSU5DTFVERVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgbGlzdCBpbmNs
dWRlCi0jIGZpbGVzIHdpdGggZG91YmxlIHF1b3RlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiByYXRo
ZXIgdGhhbiB3aXRoIHNoYXJwIGJyYWNrZXRzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0KLUZPUkNFX0xPQ0FMX0lOQ0xVREVTICAgPSBOTwotCi0jIElmIHRoZSBJTkxJTkVfSU5GTyB0
YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGEgdGFnIFtpbmxpbmVdIGlzIGluc2VydGVkIGluIHRoZQot
IyBkb2N1bWVudGF0aW9uIGZvciBpbmxpbmUgbWVtYmVycy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IFlFUy4KLQotSU5MSU5FX0lORk8gICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBTT1JU
X01FTUJFUl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhl
Ci0jIChkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIGFuZCBjbGFzcyBtZW1iZXJzIGFs
cGhhYmV0aWNhbGx5IGJ5IG1lbWJlcgotIyBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMg
d2lsbCBhcHBlYXIgaW4gZGVjbGFyYXRpb24gb3JkZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBZRVMuCi0KLVNPUlRfTUVNQkVSX0RPQ1MgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgU09SVF9C
UklFRl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlIGJy
aWVmCi0jIGRlc2NyaXB0aW9ucyBvZiBmaWxlLCBuYW1lc3BhY2UgYW5kIGNsYXNzIG1lbWJlcnMg
YWxwaGFiZXRpY2FsbHkgYnkgbWVtYmVyCi0jIG5hbWUuIElmIHNldCB0byBOTyB0aGUgbWVtYmVy
cyB3aWxsIGFwcGVhciBpbiBkZWNsYXJhdGlvbiBvcmRlci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1TT1JUX0JSSUVGX0RPQ1MgICAgICAgID0gTk8KLQotIyBJZiB0aGUgU09SVF9N
RU1CRVJTX0NUT1JTXzFTVCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0
IHRoZQotIyAoYnJpZWYgYW5kIGRldGFpbGVkKSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzIG1lbWJl
cnMgc28gdGhhdCBjb25zdHJ1Y3RvcnMgYW5kCi0jIGRlc3RydWN0b3JzIGFyZSBsaXN0ZWQgZmly
c3QuIElmIHNldCB0byBOTyB0aGUgY29uc3RydWN0b3JzIHdpbGwgYXBwZWFyIGluIHRoZQotIyBy
ZXNwZWN0aXZlIG9yZGVycyBkZWZpbmVkIGJ5IFNPUlRfQlJJRUZfRE9DUyBhbmQgU09SVF9NRU1C
RVJfRE9DUy4KLSMgTm90ZTogSWYgU09SVF9CUklFRl9ET0NTIGlzIHNldCB0byBOTyB0aGlzIG9w
dGlvbiBpcyBpZ25vcmVkIGZvciBzb3J0aW5nIGJyaWVmCi0jIG1lbWJlciBkb2N1bWVudGF0aW9u
LgotIyBOb3RlOiBJZiBTT1JUX01FTUJFUl9ET0NTIGlzIHNldCB0byBOTyB0aGlzIG9wdGlvbiBp
cyBpZ25vcmVkIGZvciBzb3J0aW5nCi0jIGRldGFpbGVkIG1lbWJlciBkb2N1bWVudGF0aW9uLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNPUlRfTUVNQkVSU19DVE9SU18xU1QgPSBO
TwotCi0jIElmIHRoZSBTT1JUX0dST1VQX05BTUVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94
eWdlbiB3aWxsIHNvcnQgdGhlIGhpZXJhcmNoeQotIyBvZiBncm91cCBuYW1lcyBpbnRvIGFscGhh
YmV0aWNhbCBvcmRlci4gSWYgc2V0IHRvIE5PIHRoZSBncm91cCBuYW1lcyB3aWxsCi0jIGFwcGVh
ciBpbiB0aGVpciBkZWZpbmVkIG9yZGVyLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LVNPUlRfR1JPVVBfTkFNRVMgICAgICAgPSBOTwotCi0jIElmIHRoZSBTT1JUX0JZX1NDT1BFX05B
TUUgdGFnIGlzIHNldCB0byBZRVMsIHRoZSBjbGFzcyBsaXN0IHdpbGwgYmUgc29ydGVkIGJ5Ci0j
IGZ1bGx5LXF1YWxpZmllZCBuYW1lcywgaW5jbHVkaW5nIG5hbWVzcGFjZXMuIElmIHNldCB0byBO
TywgdGhlIGNsYXNzIGxpc3Qgd2lsbAotIyBiZSBzb3J0ZWQgb25seSBieSBjbGFzcyBuYW1lLCBu
b3QgaW5jbHVkaW5nIHRoZSBuYW1lc3BhY2UgcGFydC4KLSMgTm90ZTogVGhpcyBvcHRpb24gaXMg
bm90IHZlcnkgdXNlZnVsIGlmIEhJREVfU0NPUEVfTkFNRVMgaXMgc2V0IHRvIFlFUy4KLSMgTm90
ZTogVGhpcyBvcHRpb24gYXBwbGllcyBvbmx5IHRvIHRoZSBjbGFzcyBsaXN0LCBub3QgdG8gdGhl
IGFscGhhYmV0aWNhbAotIyBsaXN0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLVNP
UlRfQllfU0NPUEVfTkFNRSAgICAgPSBZRVMKLQotIyBJZiB0aGUgU1RSSUNUX1BST1RPX01BVENI
SU5HIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBkb3h5Z2VuIGZhaWxzIHRvIGRvIHByb3BlcgotIyB0
eXBlIHJlc29sdXRpb24gb2YgYWxsIHBhcmFtZXRlcnMgb2YgYSBmdW5jdGlvbiBpdCB3aWxsIHJl
amVjdCBhIG1hdGNoIGJldHdlZW4KLSMgdGhlIHByb3RvdHlwZSBhbmQgdGhlIGltcGxlbWVudGF0
aW9uIG9mIGEgbWVtYmVyIGZ1bmN0aW9uIGV2ZW4gaWYgdGhlcmUgaXMKLSMgb25seSBvbmUgY2Fu
ZGlkYXRlIG9yIGl0IGlzIG9idmlvdXMgd2hpY2ggY2FuZGlkYXRlIHRvIGNob29zZSBieSBkb2lu
ZyBhCi0jIHNpbXBsZSBzdHJpbmcgbWF0Y2guIEJ5IGRpc2FibGluZyBTVFJJQ1RfUFJPVE9fTUFU
Q0hJTkcgZG94eWdlbiB3aWxsIHN0aWxsCi0jIGFjY2VwdCBhIG1hdGNoIGJldHdlZW4gcHJvdG90
eXBlIGFuZCBpbXBsZW1lbnRhdGlvbiBpbiBzdWNoIGNhc2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogTk8uCi0KLVNUUklDVF9QUk9UT19NQVRDSElORyAgPSBOTwotCi0jIFRoZSBHRU5FUkFU
RV9UT0RPTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlICggWUVTKSBvciBkaXNhYmxlICgg
Tk8pIHRoZQotIyB0b2RvIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRv
ZG8gY29tbWFuZHMgaW4gdGhlCi0jIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBZRVMuCi0KLUdFTkVSQVRFX1RPRE9MSVNUICAgICAgPSBZRVMKLQotIyBUaGUgR0VORVJB
VEVfVEVTVExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAo
IE5PKSB0aGUKLSMgdGVzdCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFx0
ZXN0IGNvbW1hbmRzIGluIHRoZQotIyBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1
ZSBpczogWUVTLgotCi1HRU5FUkFURV9URVNUTElTVCAgICAgID0gTk8KLQotIyBUaGUgR0VORVJB
VEVfQlVHTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlICggWUVTKSBvciBkaXNhYmxlICgg
Tk8pIHRoZSBidWcKLSMgbGlzdC4gVGhpcyBsaXN0IGlzIGNyZWF0ZWQgYnkgcHV0dGluZyBcYnVn
IGNvbW1hbmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
WUVTLgotCi1HRU5FUkFURV9CVUdMSVNUICAgICAgID0gTk8KLQotIyBUaGUgR0VORVJBVEVfREVQ
UkVDQVRFRExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAo
IE5PKQotIyB0aGUgZGVwcmVjYXRlZCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0
aW5nIFxkZXByZWNhdGVkIGNvbW1hbmRzIGluCi0jIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFURV9ERVBSRUNBVEVETElTVD0gWUVTCi0K
LSMgVGhlIEVOQUJMRURfU0VDVElPTlMgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb25kaXRp
b25hbCBkb2N1bWVudGF0aW9uCi0jIHNlY3Rpb25zLCBtYXJrZWQgYnkgXGlmIDxzZWN0aW9uX2xh
YmVsPiAuLi4gXGVuZGlmIGFuZCBcY29uZCA8c2VjdGlvbl9sYWJlbD4KLSMgLi4uIFxlbmRjb25k
IGJsb2Nrcy4KLQotRU5BQkxFRF9TRUNUSU9OUyAgICAgICA9Ci0KLSMgVGhlIE1BWF9JTklUSUFM
SVpFUl9MSU5FUyB0YWcgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdGhh
dCB0aGUKLSMgaW5pdGlhbCB2YWx1ZSBvZiBhIHZhcmlhYmxlIG9yIG1hY3JvIC8gZGVmaW5lIGNh
biBoYXZlIGZvciBpdCB0byBhcHBlYXIgaW4gdGhlCi0jIGRvY3VtZW50YXRpb24uIElmIHRoZSBp
bml0aWFsaXplciBjb25zaXN0cyBvZiBtb3JlIGxpbmVzIHRoYW4gc3BlY2lmaWVkIGhlcmUKLSMg
aXQgd2lsbCBiZSBoaWRkZW4uIFVzZSBhIHZhbHVlIG9mIDAgdG8gaGlkZSBpbml0aWFsaXplcnMg
Y29tcGxldGVseS4gVGhlCi0jIGFwcGVhcmFuY2Ugb2YgdGhlIHZhbHVlIG9mIGluZGl2aWR1YWwg
dmFyaWFibGVzIGFuZCBtYWNyb3MgLyBkZWZpbmVzIGNhbiBiZQotIyBjb250cm9sbGVkIHVzaW5n
IFxzaG93aW5pdGlhbGl6ZXIgb3IgXGhpZGVpbml0aWFsaXplciBjb21tYW5kIGluIHRoZQotIyBk
b2N1bWVudGF0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhpcyBzZXR0aW5nLgotIyBNaW5pbXVtIHZhbHVl
OiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwMCwgZGVmYXVsdCB2YWx1ZTogMzAuCi0KLU1BWF9JTklU
SUFMSVpFUl9MSU5FUyAgPSAzMAotCi0jIFNldCB0aGUgU0hPV19VU0VEX0ZJTEVTIHRhZyB0byBO
TyB0byBkaXNhYmxlIHRoZSBsaXN0IG9mIGZpbGVzIGdlbmVyYXRlZCBhdAotIyB0aGUgYm90dG9t
IG9mIHRoZSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzZXMgYW5kIHN0cnVjdHMuIElmIHNldCB0byBZ
RVMgdGhlIGxpc3QKLSMgd2lsbCBtZW50aW9uIHRoZSBmaWxlcyB0aGF0IHdlcmUgdXNlZCB0byBn
ZW5lcmF0ZSB0aGUgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4K
LQotU0hPV19VU0VEX0ZJTEVTICAgICAgICA9IFlFUwotCi0jIFNldCB0aGUgU0hPV19GSUxFUyB0
YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgRmlsZXMgcGFnZS4gVGhp
cwotIyB3aWxsIHJlbW92ZSB0aGUgRmlsZXMgZW50cnkgZnJvbSB0aGUgUXVpY2sgSW5kZXggYW5k
IGZyb20gdGhlIEZvbGRlciBUcmVlIFZpZXcKLSMgKGlmIHNwZWNpZmllZCkuCi0jIFRoZSBkZWZh
dWx0IHZhbHVlIGlzOiBZRVMuCi0KLVNIT1dfRklMRVMgICAgICAgICAgICAgPSBZRVMKLQotIyBT
ZXQgdGhlIFNIT1dfTkFNRVNQQUNFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlv
biBvZiB0aGUgTmFtZXNwYWNlcwotIyBwYWdlLiBUaGlzIHdpbGwgcmVtb3ZlIHRoZSBOYW1lc3Bh
Y2VzIGVudHJ5IGZyb20gdGhlIFF1aWNrIEluZGV4IGFuZCBmcm9tIHRoZQotIyBGb2xkZXIgVHJl
ZSBWaWV3IChpZiBzcGVjaWZpZWQpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1T
SE9XX05BTUVTUEFDRVMgICAgICAgID0gWUVTCi0KLSMgVGhlIEZJTEVfVkVSU0lPTl9GSUxURVIg
dGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIG9yIHNjcmlwdCB0aGF0Ci0jIGRv
eHlnZW4gc2hvdWxkIGludm9rZSB0byBnZXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBmb3IgZWFjaCBm
aWxlICh0eXBpY2FsbHkgZnJvbQotIyB0aGUgdmVyc2lvbiBjb250cm9sIHN5c3RlbSkuIERveHln
ZW4gd2lsbCBpbnZva2UgdGhlIHByb2dyYW0gYnkgZXhlY3V0aW5nICh2aWEKLSMgcG9wZW4oKSkg
dGhlIGNvbW1hbmQgY29tbWFuZCBpbnB1dC1maWxlLCB3aGVyZSBjb21tYW5kIGlzIHRoZSB2YWx1
ZSBvZiB0aGUKLSMgRklMRV9WRVJTSU9OX0ZJTFRFUiB0YWcsIGFuZCBpbnB1dC1maWxlIGlzIHRo
ZSBuYW1lIG9mIGFuIGlucHV0IGZpbGUgcHJvdmlkZWQKLSMgYnkgZG94eWdlbi4gV2hhdGV2ZXIg
dGhlIHByb2dyYW0gd3JpdGVzIHRvIHN0YW5kYXJkIG91dHB1dCBpcyB1c2VkIGFzIHRoZSBmaWxl
Ci0jIHZlcnNpb24uIEZvciBhbiBleGFtcGxlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4KLQotRklM
RV9WRVJTSU9OX0ZJTFRFUiAgICA9Ci0KLSMgVGhlIExBWU9VVF9GSUxFIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IGEgbGF5b3V0IGZpbGUgd2hpY2ggd2lsbCBiZSBwYXJzZWQKLSMgYnkgZG94
eWdlbi4gVGhlIGxheW91dCBmaWxlIGNvbnRyb2xzIHRoZSBnbG9iYWwgc3RydWN0dXJlIG9mIHRo
ZSBnZW5lcmF0ZWQKLSMgb3V0cHV0IGZpbGVzIGluIGFuIG91dHB1dCBmb3JtYXQgaW5kZXBlbmRl
bnQgd2F5LiBUbyBjcmVhdGUgdGhlIGxheW91dCBmaWxlCi0jIHRoYXQgcmVwcmVzZW50cyBkb3h5
Z2VuJ3MgZGVmYXVsdHMsIHJ1biBkb3h5Z2VuIHdpdGggdGhlIC1sIG9wdGlvbi4gWW91IGNhbgot
IyBvcHRpb25hbGx5IHNwZWNpZnkgYSBmaWxlIG5hbWUgYWZ0ZXIgdGhlIG9wdGlvbiwgaWYgb21p
dHRlZCBEb3h5Z2VuTGF5b3V0LnhtbAotIyB3aWxsIGJlIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhl
IGxheW91dCBmaWxlLgotIwotIyBOb3RlIHRoYXQgaWYgeW91IHJ1biBkb3h5Z2VuIGZyb20gYSBk
aXJlY3RvcnkgY29udGFpbmluZyBhIGZpbGUgY2FsbGVkCi0jIERveHlnZW5MYXlvdXQueG1sLCBk
b3h5Z2VuIHdpbGwgcGFyc2UgaXQgYXV0b21hdGljYWxseSBldmVuIGlmIHRoZSBMQVlPVVRfRklM
RQotIyB0YWcgaXMgbGVmdCBlbXB0eS4KLQotTEFZT1VUX0ZJTEUgICAgICAgICAgICA9Ci0KLSMg
VGhlIENJVEVfQklCX0ZJTEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3Jl
IGJpYiBmaWxlcyBjb250YWluaW5nCi0jIHRoZSByZWZlcmVuY2UgZGVmaW5pdGlvbnMuIFRoaXMg
bXVzdCBiZSBhIGxpc3Qgb2YgLmJpYiBmaWxlcy4gVGhlIC5iaWIKLSMgZXh0ZW5zaW9uIGlzIGF1
dG9tYXRpY2FsbHkgYXBwZW5kZWQgaWYgb21pdHRlZC4gVGhpcyByZXF1aXJlcyB0aGUgYmlidGV4
IHRvb2wKLSMgdG8gYmUgaW5zdGFsbGVkLiBTZWUgYWxzbyBodHRwOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL0JpYlRlWCBmb3IgbW9yZSBpbmZvLgotIyBGb3IgTGFUZVggdGhlIHN0eWxlIG9mIHRo
ZSBiaWJsaW9ncmFwaHkgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcKLSMgTEFURVhfQklCX1NUWUxF
LiBUbyB1c2UgdGhpcyBmZWF0dXJlIHlvdSBuZWVkIGJpYnRleCBhbmQgcGVybCBhdmFpbGFibGUg
aW4gdGhlCi0jIHNlYXJjaCBwYXRoLiBEbyBub3QgdXNlIGZpbGUgbmFtZXMgd2l0aCBzcGFjZXMs
IGJpYnRleCBjYW5ub3QgaGFuZGxlIHRoZW0uIFNlZQotIyBhbHNvIFxjaXRlIGZvciBpbmZvIGhv
dyB0byBjcmVhdGUgcmVmZXJlbmNlcy4KLQotQ0lURV9CSUJfRklMRVMgICAgICAgICA9Ci0KLSMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gd2Fy
bmluZyBhbmQgcHJvZ3Jlc3MgbWVzc2FnZXMKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBUaGUg
UVVJRVQgdGFnIGNhbiBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIHRoZSBtZXNzYWdlcyB0aGF0IGFy
ZSBnZW5lcmF0ZWQgdG8KLSMgc3RhbmRhcmQgb3V0cHV0IGJ5IGRveHlnZW4uIElmIFFVSUVUIGlz
IHNldCB0byBZRVMgdGhpcyBpbXBsaWVzIHRoYXQgdGhlCi0jIG1lc3NhZ2VzIGFyZSBvZmYuCi0j
IFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotUVVJRVQgICAgICAgICAgICAgICAgICA9IE5P
Ci0KLSMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgd2Fy
bmluZyBtZXNzYWdlcyB0aGF0IGFyZQotIyBnZW5lcmF0ZWQgdG8gc3RhbmRhcmQgZXJyb3IgKCBz
dGRlcnIpIGJ5IGRveHlnZW4uIElmIFdBUk5JTkdTIGlzIHNldCB0byBZRVMKLSMgdGhpcyBpbXBs
aWVzIHRoYXQgdGhlIHdhcm5pbmdzIGFyZSBvbi4KLSMKLSMgVGlwOiBUdXJuIHdhcm5pbmdzIG9u
IHdoaWxlIHdyaXRpbmcgdGhlIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBZRVMuCi0KLVdBUk5JTkdTICAgICAgICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgV0FSTl9J
Rl9VTkRPQ1VNRU5URUQgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVy
YXRlCi0jIHdhcm5pbmdzIGZvciB1bmRvY3VtZW50ZWQgbWVtYmVycy4gSWYgRVhUUkFDVF9BTEwg
aXMgc2V0IHRvIFlFUyB0aGVuIHRoaXMgZmxhZwotIyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGlz
YWJsZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVdBUk5fSUZfVU5ET0NVTUVO
VEVEICAgPSBZRVMKLQotIyBJZiB0aGUgV0FSTl9JRl9ET0NfRVJST1IgdGFnIGlzIHNldCB0byBZ
RVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSB3YXJuaW5ncyBmb3IKLSMgcG90ZW50aWFsIGVycm9y
cyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgc3VjaCBhcyBub3QgZG9jdW1lbnRpbmcgc29tZSBwYXJh
bWV0ZXJzCi0jIGluIGEgZG9jdW1lbnRlZCBmdW5jdGlvbiwgb3IgZG9jdW1lbnRpbmcgcGFyYW1l
dGVycyB0aGF0IGRvbid0IGV4aXN0IG9yIHVzaW5nCi0jIG1hcmt1cCBjb21tYW5kcyB3cm9uZ2x5
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1XQVJOX0lGX0RPQ19FUlJPUiAgICAg
ID0gWUVTCi0KLSMgVGhpcyBXQVJOX05PX1BBUkFNRE9DIG9wdGlvbiBjYW4gYmUgZW5hYmxlZCB0
byBnZXQgd2FybmluZ3MgZm9yIGZ1bmN0aW9ucyB0aGF0Ci0jIGFyZSBkb2N1bWVudGVkLCBidXQg
aGF2ZSBubyBkb2N1bWVudGF0aW9uIGZvciB0aGVpciBwYXJhbWV0ZXJzIG9yIHJldHVybgotIyB2
YWx1ZS4gSWYgc2V0IHRvIE5PIGRveHlnZW4gd2lsbCBvbmx5IHdhcm4gYWJvdXQgd3Jvbmcgb3Ig
aW5jb21wbGV0ZSBwYXJhbWV0ZXIKLSMgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUg
YWJzZW5jZSBvZiBkb2N1bWVudGF0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LVdBUk5fTk9fUEFSQU1ET0MgICAgICAgPSBOTwotCi0jIFRoZSBXQVJOX0ZPUk1BVCB0YWcgZGV0
ZXJtaW5lcyB0aGUgZm9ybWF0IG9mIHRoZSB3YXJuaW5nIG1lc3NhZ2VzIHRoYXQgZG94eWdlbgot
IyBjYW4gcHJvZHVjZS4gVGhlIHN0cmluZyBzaG91bGQgY29udGFpbiB0aGUgJGZpbGUsICRsaW5l
LCBhbmQgJHRleHQgdGFncywgd2hpY2gKLSMgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZmlsZSBh
bmQgbGluZSBudW1iZXIgZnJvbSB3aGljaCB0aGUgd2FybmluZyBvcmlnaW5hdGVkCi0jIGFuZCB0
aGUgd2FybmluZyB0ZXh0LiBPcHRpb25hbGx5IHRoZSBmb3JtYXQgbWF5IGNvbnRhaW4gJHZlcnNp
b24sIHdoaWNoIHdpbGwKLSMgYmUgcmVwbGFjZWQgYnkgdGhlIHZlcnNpb24gb2YgdGhlIGZpbGUg
KGlmIGl0IGNvdWxkIGJlIG9idGFpbmVkIHZpYQotIyBGSUxFX1ZFUlNJT05fRklMVEVSKQotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogJGZpbGU6JGxpbmU6ICR0ZXh0LgotCi1XQVJOX0ZPUk1BVCAg
ICAgICAgICAgID0gIiRmaWxlOiRsaW5lOiAkdGV4dCIKLQotIyBUaGUgV0FSTl9MT0dGSUxFIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB0byB3aGljaCB3YXJuaW5nIGFuZCBlcnJv
cgotIyBtZXNzYWdlcyBzaG91bGQgYmUgd3JpdHRlbi4gSWYgbGVmdCBibGFuayB0aGUgb3V0cHV0
IGlzIHdyaXR0ZW4gdG8gc3RhbmRhcmQKLSMgZXJyb3IgKHN0ZGVycikuCi0KLVdBUk5fTE9HRklM
RSAgICAgICAgICAgPSAlV0FSTklOR19MT0dfUEFUSCUKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
IyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgaW5wdXQgZmlsZXMKLSMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgSU5QVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUg
ZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgY29udGFpbgotIyBkb2N1bWVudGVkIHNvdXJj
ZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVzIGxpa2UgbXlmaWxlLmNwcCBvcgotIyBk
aXJlY3RvcmllcyBsaWtlIC91c3Ivc3JjL215cHJvamVjdC4gU2VwYXJhdGUgdGhlIGZpbGVzIG9y
IGRpcmVjdG9yaWVzIHdpdGgKLSMgc3BhY2VzLgotIyBOb3RlOiBJZiB0aGlzIHRhZyBpcyBlbXB0
eSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCi0KLUlOUFVUICAgICAgICAgICAg
ICAgICAgPSAuLi9pbmNsdWRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAuLi9zcmMvbGli
X2pzb24gXAotICAgICAgICAgICAgICAgICAgICAgICAgIC4KLQotIyBUaGlzIHRhZyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxl
cwotIyB0aGF0IGRveHlnZW4gcGFyc2VzLiBJbnRlcm5hbGx5IGRveHlnZW4gdXNlcyB0aGUgVVRG
LTggZW5jb2RpbmcuIERveHlnZW4gdXNlcwotIyBsaWJpY29udiAob3IgdGhlIGljb252IGJ1aWx0
IGludG8gbGliYykgZm9yIHRoZSB0cmFuc2NvZGluZy4gU2VlIHRoZSBsaWJpY29udgotIyBkb2N1
bWVudGF0aW9uIChzZWU6IGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udikgZm9y
IHRoZSBsaXN0IG9mCi0jIHBvc3NpYmxlIGVuY29kaW5ncy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IFVURi04LgotCi1JTlBVVF9FTkNPRElORyAgICAgICAgID0gVVRGLTgKLQotIyBJZiB0aGUg
dmFsdWUgb2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2Ug
dGhlCi0jIEZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQg
cGF0dGVybnMgKGxpa2UgKi5jcHAgYW5kCi0jICouaCkgdG8gZmlsdGVyIG91dCB0aGUgc291cmNl
LWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVmdCBibGFuayB0aGUKLSMgZm9sbG93aW5n
IHBhdHRlcm5zIGFyZSB0ZXN0ZWQ6Ki5jLCAqLmNjLCAqLmN4eCwgKi5jcHAsICouYysrLCAqLmph
dmEsICouaWksCi0jICouaXh4LCAqLmlwcCwgKi5pKyssICouaW5sLCAqLmlkbCwgKi5kZGwsICou
b2RsLCAqLmgsICouaGgsICouaHh4LCAqLmhwcCwKLSMgKi5oKyssICouY3MsICouZCwgKi5waHAs
ICoucGhwNCwgKi5waHA1LCAqLnBodG1sLCAqLmluYywgKi5tLCAqLm1hcmtkb3duLAotIyAqLm1k
LCAqLm1tLCAqLmRveCwgKi5weSwgKi5mOTAsICouZiwgKi5mb3IsICoudGNsLCAqLnZoZCwgKi52
aGRsLCAqLnVjZiwKLSMgKi5xc2YsICouYXMgYW5kICouanMuCi0KLUZJTEVfUEFUVEVSTlMgICAg
ICAgICAgPSAqLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICouY3BwIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAqLmlubCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi5kb3gK
LQotIyBUaGUgUkVDVVJTSVZFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHdoZXRoZXIgb3Ig
bm90IHN1YmRpcmVjdG9yaWVzIHNob3VsZAotIyBiZSBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMg
YXMgd2VsbC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1SRUNVUlNJVkUgICAgICAg
ICAgICAgID0gWUVTCi0KLSMgVGhlIEVYQ0xVREUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkg
ZmlsZXMgYW5kL29yIGRpcmVjdG9yaWVzIHRoYXQgc2hvdWxkIGJlCi0jIGV4Y2x1ZGVkIGZyb20g
dGhlIElOUFVUIHNvdXJjZSBmaWxlcy4gVGhpcyB3YXkgeW91IGNhbiBlYXNpbHkgZXhjbHVkZSBh
Ci0jIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVj
aWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgotIwotIyBOb3RlIHRoYXQgcmVsYXRpdmUgcGF0aHMg
YXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBkb3h5Z2VuIGlzCi0jIHJ1
bi4KLQotRVhDTFVERSAgICAgICAgICAgICAgICA9Ci0KLSMgVGhlIEVYQ0xVREVfU1lNTElOS1Mg
dGFnIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB3aGV0aGVyIG9yIG5vdCBmaWxlcyBvcgotIyBkaXJl
Y3RvcmllcyB0aGF0IGFyZSBzeW1ib2xpYyBsaW5rcyAoYSBVbml4IGZpbGUgc3lzdGVtIGZlYXR1
cmUpIGFyZSBleGNsdWRlZAotIyBmcm9tIHRoZSBpbnB1dC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1FWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KLQotIyBJZiB0aGUgdmFsdWUg
b2YgdGhlIElOUFVUIHRhZyBjb250YWlucyBkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlCi0j
IEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0
dGVybnMgdG8gZXhjbHVkZQotIyBjZXJ0YWluIGZpbGVzIGZyb20gdGhvc2UgZGlyZWN0b3JpZXMu
Ci0jCi0jIE5vdGUgdGhhdCB0aGUgd2lsZGNhcmRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIGZp
bGUgd2l0aCBhYnNvbHV0ZSBwYXRoLCBzbyB0bwotIyBleGNsdWRlIGFsbCB0ZXN0IGRpcmVjdG9y
aWVzIGZvciBleGFtcGxlIHVzZSB0aGUgcGF0dGVybiAqL3Rlc3QvKgotCi1FWENMVURFX1BBVFRF
Uk5TICAgICAgID0KLQotIyBUaGUgRVhDTFVERV9TWU1CT0xTIHRhZyBjYW4gYmUgdXNlZCB0byBz
cGVjaWZ5IG9uZSBvciBtb3JlIHN5bWJvbCBuYW1lcwotIyAobmFtZXNwYWNlcywgY2xhc3Nlcywg
ZnVuY3Rpb25zLCBldGMuKSB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZQotIyBvdXRw
dXQuIFRoZSBzeW1ib2wgbmFtZSBjYW4gYmUgYSBmdWxseSBxdWFsaWZpZWQgbmFtZSwgYSB3b3Jk
LCBvciBpZiB0aGUKLSMgd2lsZGNhcmQgKiBpcyB1c2VkLCBhIHN1YnN0cmluZy4gRXhhbXBsZXM6
IEFOYW1lc3BhY2UsIEFDbGFzcywKLSMgQUNsYXNzOjpBTmFtZXNwYWNlLCBBTmFtZXNwYWNlOjoq
VGVzdAotIwotIyBOb3RlIHRoYXQgdGhlIHdpbGRjYXJkcyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRo
ZSBmaWxlIHdpdGggYWJzb2x1dGUgcGF0aCwgc28gdG8KLSMgZXhjbHVkZSBhbGwgdGVzdCBkaXJl
Y3RvcmllcyB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoKLQotRVhDTFVERV9TWU1CT0xTICAgICAg
ICA9Ci0KLSMgVGhlIEVYQU1QTEVfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUg
b3IgbW9yZSBmaWxlcyBvciBkaXJlY3RvcmllcwotIyB0aGF0IGNvbnRhaW4gZXhhbXBsZSBjb2Rl
IGZyYWdtZW50cyB0aGF0IGFyZSBpbmNsdWRlZCAoc2VlIHRoZSBcaW5jbHVkZQotIyBjb21tYW5k
KS4KLQotRVhBTVBMRV9QQVRIICAgICAgICAgICA9IC4uCi0KLSMgSWYgdGhlIHZhbHVlIG9mIHRo
ZSBFWEFNUExFX1BBVEggdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUK
LSMgRVhBTVBMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZCBw
YXR0ZXJuIChsaWtlICouY3BwIGFuZAotIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1m
aWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsgYWxsCi0jIGZpbGVzIGFyZSBp
bmNsdWRlZC4KLQotRVhBTVBMRV9QQVRURVJOUyAgICAgICA9ICoKLQotIyBJZiB0aGUgRVhBTVBM
RV9SRUNVUlNJVkUgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBzdWJkaXJlY3RvcmllcyB3aWxsIGJl
Ci0jIHNlYXJjaGVkIGZvciBpbnB1dCBmaWxlcyB0byBiZSB1c2VkIHdpdGggdGhlIFxpbmNsdWRl
IG9yIFxkb250aW5jbHVkZSBjb21tYW5kcwotIyBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9m
IHRoZSBSRUNVUlNJVkUgdGFnLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUVYQU1Q
TEVfUkVDVVJTSVZFICAgICAgPSBOTwotCi0jIFRoZSBJTUFHRV9QQVRIIHRhZyBjYW4gYmUgdXNl
ZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIGRpcmVjdG9yaWVzCi0jIHRoYXQgY29u
dGFpbiBpbWFnZXMgdGhhdCBhcmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24g
KHNlZSB0aGUKLSMgXGltYWdlIGNvbW1hbmQpLgotCi1JTUFHRV9QQVRIICAgICAgICAgICAgID0K
LQotIyBUaGUgSU5QVVRfRklMVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcHJvZ3Jh
bSB0aGF0IGRveHlnZW4gc2hvdWxkCi0jIGludm9rZSB0byBmaWx0ZXIgZm9yIGVhY2ggaW5wdXQg
ZmlsZS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgZmlsdGVyIHByb2dyYW0KLSMgYnkgZXhlY3V0
aW5nICh2aWEgcG9wZW4oKSkgdGhlIGNvbW1hbmQ6Ci0jCi0jIDxmaWx0ZXI+IDxpbnB1dC1maWxl
PgotIwotIyB3aGVyZSA8ZmlsdGVyPiBpcyB0aGUgdmFsdWUgb2YgdGhlIElOUFVUX0ZJTFRFUiB0
YWcsIGFuZCA8aW5wdXQtZmlsZT4gaXMgdGhlCi0jIG5hbWUgb2YgYW4gaW5wdXQgZmlsZS4gRG94
eWdlbiB3aWxsIHRoZW4gdXNlIHRoZSBvdXRwdXQgdGhhdCB0aGUgZmlsdGVyCi0jIHByb2dyYW0g
d3JpdGVzIHRvIHN0YW5kYXJkIG91dHB1dC4gSWYgRklMVEVSX1BBVFRFUk5TIGlzIHNwZWNpZmll
ZCwgdGhpcyB0YWcKLSMgd2lsbCBiZSBpZ25vcmVkLgotIwotIyBOb3RlIHRoYXQgdGhlIGZpbHRl
ciBtdXN0IG5vdCBhZGQgb3IgcmVtb3ZlIGxpbmVzOyBpdCBpcyBhcHBsaWVkIGJlZm9yZSB0aGUK
LSMgY29kZSBpcyBzY2FubmVkLCBidXQgbm90IHdoZW4gdGhlIG91dHB1dCBjb2RlIGlzIGdlbmVy
YXRlZC4gSWYgbGluZXMgYXJlIGFkZGVkCi0jIG9yIHJlbW92ZWQsIHRoZSBhbmNob3JzIHdpbGwg
bm90IGJlIHBsYWNlZCBjb3JyZWN0bHkuCi0KLUlOUFVUX0ZJTFRFUiAgICAgICAgICAgPQotCi0j
IFRoZSBGSUxURVJfUEFUVEVSTlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZmlsdGVycyBv
biBhIHBlciBmaWxlIHBhdHRlcm4KLSMgYmFzaXMuIERveHlnZW4gd2lsbCBjb21wYXJlIHRoZSBm
aWxlIG5hbWUgd2l0aCBlYWNoIHBhdHRlcm4gYW5kIGFwcGx5IHRoZQotIyBmaWx0ZXIgaWYgdGhl
cmUgaXMgYSBtYXRjaC4gVGhlIGZpbHRlcnMgYXJlIGEgbGlzdCBvZiB0aGUgZm9ybTogcGF0dGVy
bj1maWx0ZXIKLSMgKGxpa2UgKi5jcHA9bXlfY3BwX2ZpbHRlcikuIFNlZSBJTlBVVF9GSUxURVIg
Zm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gaG93Ci0jIGZpbHRlcnMgYXJlIHVzZWQuIElmIHRo
ZSBGSUxURVJfUEFUVEVSTlMgdGFnIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlCi0jIHBhdHRl
cm5zIG1hdGNoIHRoZSBmaWxlIG5hbWUsIElOUFVUX0ZJTFRFUiBpcyBhcHBsaWVkLgotCi1GSUxU
RVJfUEFUVEVSTlMgICAgICAgID0KLQotIyBJZiB0aGUgRklMVEVSX1NPVVJDRV9GSUxFUyB0YWcg
aXMgc2V0IHRvIFlFUywgdGhlIGlucHV0IGZpbHRlciAoaWYgc2V0IHVzaW5nCi0jIElOUFVUX0ZJ
TFRFUiApIHdpbGwgYWxzbyBiZSB1c2VkIHRvIGZpbHRlciB0aGUgaW5wdXQgZmlsZXMgdGhhdCBh
cmUgdXNlZCBmb3IKLSMgcHJvZHVjaW5nIHRoZSBzb3VyY2UgZmlsZXMgdG8gYnJvd3NlIChpLmUu
IHdoZW4gU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUykuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBOTy4KLQotRklMVEVSX1NPVVJDRV9GSUxFUyAgICA9IE5PCi0KLSMgVGhlIEZJTFRFUl9T
T1VSQ0VfUEFUVEVSTlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgc291cmNlIGZpbHRlcnMg
cGVyIGZpbGUKLSMgcGF0dGVybi4gQSBwYXR0ZXJuIHdpbGwgb3ZlcnJpZGUgdGhlIHNldHRpbmcg
Zm9yIEZJTFRFUl9QQVRURVJOIChpZiBhbnkpIGFuZAotIyBpdCBpcyBhbHNvIHBvc3NpYmxlIHRv
IGRpc2FibGUgc291cmNlIGZpbHRlcmluZyBmb3IgYSBzcGVjaWZpYyBwYXR0ZXJuIHVzaW5nCi0j
ICouZXh0PSAoc28gd2l0aG91dCBuYW1pbmcgYSBmaWx0ZXIpLgotIyBUaGlzIHRhZyByZXF1aXJl
cyB0aGF0IHRoZSB0YWcgRklMVEVSX1NPVVJDRV9GSUxFUyBpcyBzZXQgdG8gWUVTLgotCi1GSUxU
RVJfU09VUkNFX1BBVFRFUk5TID0KLQotIyBJZiB0aGUgVVNFX01ERklMRV9BU19NQUlOUEFHRSB0
YWcgcmVmZXJzIHRvIHRoZSBuYW1lIG9mIGEgbWFya2Rvd24gZmlsZSB0aGF0Ci0jIGlzIHBhcnQg
b2YgdGhlIGlucHV0LCBpdHMgY29udGVudHMgd2lsbCBiZSBwbGFjZWQgb24gdGhlIG1haW4gcGFn
ZQotIyAoaW5kZXguaHRtbCkuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhIHByb2pl
Y3Qgb24gZm9yIGluc3RhbmNlIEdpdEh1YgotIyBhbmQgd2FudCB0byByZXVzZSB0aGUgaW50cm9k
dWN0aW9uIHBhZ2UgYWxzbyBmb3IgdGhlIGRveHlnZW4gb3V0cHV0LgotCi1VU0VfTURGSUxFX0FT
X01BSU5QQUdFID0KLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlv
bnMgcmVsYXRlZCB0byBzb3VyY2UgYnJvd3NpbmcKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJ
ZiB0aGUgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIGxpc3Qgb2Ygc291
cmNlIGZpbGVzIHdpbGwgYmUKLSMgZ2VuZXJhdGVkLiBEb2N1bWVudGVkIGVudGl0aWVzIHdpbGwg
YmUgY3Jvc3MtcmVmZXJlbmNlZCB3aXRoIHRoZXNlIHNvdXJjZXMuCi0jCi0jIE5vdGU6IFRvIGdl
dCByaWQgb2YgYWxsIHNvdXJjZSBjb2RlIGluIHRoZSBnZW5lcmF0ZWQgb3V0cHV0LCBtYWtlIHN1
cmUgdGhhdAotIyBhbHNvIFZFUkJBVElNX0hFQURFUlMgaXMgc2V0IHRvIE5PLgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0KLVNPVVJDRV9CUk9XU0VSICAgICAgICAgPSBOTwotCi0jIFNl
dHRpbmcgdGhlIElOTElORV9TT1VSQ0VTIHRhZyB0byBZRVMgd2lsbCBpbmNsdWRlIHRoZSBib2R5
IG9mIGZ1bmN0aW9ucywKLSMgY2xhc3NlcyBhbmQgZW51bXMgZGlyZWN0bHkgaW50byB0aGUgZG9j
dW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1JTkxJTkVfU09VUkNF
UyAgICAgICAgID0gTk8KLQotIyBTZXR0aW5nIHRoZSBTVFJJUF9DT0RFX0NPTU1FTlRTIHRhZyB0
byBZRVMgd2lsbCBpbnN0cnVjdCBkb3h5Z2VuIHRvIGhpZGUgYW55Ci0jIHNwZWNpYWwgY29tbWVu
dCBibG9ja3MgZnJvbSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgZnJhZ21lbnRzLiBOb3JtYWwgQywg
QysrIGFuZAotIyBGb3J0cmFuIGNvbW1lbnRzIHdpbGwgYWx3YXlzIHJlbWFpbiB2aXNpYmxlLgot
IyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1TVFJJUF9DT0RFX0NPTU1FTlRTICAgID0g
WUVTCi0KLSMgSWYgdGhlIFJFRkVSRU5DRURfQllfUkVMQVRJT04gdGFnIGlzIHNldCB0byBZRVMg
dGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkCi0jIGZ1bmN0aW9uIGFsbCBkb2N1bWVudGVkIGZ1bmN0
aW9ucyByZWZlcmVuY2luZyBpdCB3aWxsIGJlIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1SRUZFUkVOQ0VEX0JZX1JFTEFUSU9OID0gTk8KLQotIyBJZiB0aGUgUkVGRVJF
TkNFU19SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQg
ZnVuY3Rpb24KLSMgYWxsIGRvY3VtZW50ZWQgZW50aXRpZXMgY2FsbGVkL3VzZWQgYnkgdGhhdCBm
dW5jdGlvbiB3aWxsIGJlIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1S
RUZFUkVOQ0VTX1JFTEFUSU9OICAgID0gTk8KLQotIyBJZiB0aGUgUkVGRVJFTkNFU19MSU5LX1NP
VVJDRSB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldAotIyB0
byBZRVMsIHRoZW4gdGhlIGh5cGVybGlua3MgZnJvbSBmdW5jdGlvbnMgaW4gUkVGRVJFTkNFU19S
RUxBVElPTiBhbmQKLSMgUkVGRVJFTkNFRF9CWV9SRUxBVElPTiBsaXN0cyB3aWxsIGxpbmsgdG8g
dGhlIHNvdXJjZSBjb2RlLiBPdGhlcndpc2UgdGhleSB3aWxsCi0jIGxpbmsgdG8gdGhlIGRvY3Vt
ZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVJFRkVSRU5DRVNfTElO
S19TT1VSQ0UgPSBZRVMKLQotIyBJZiBTT1VSQ0VfVE9PTFRJUFMgaXMgZW5hYmxlZCAodGhlIGRl
ZmF1bHQpIHRoZW4gaG92ZXJpbmcgYSBoeXBlcmxpbmsgaW4gdGhlCi0jIHNvdXJjZSBjb2RlIHdp
bGwgc2hvdyBhIHRvb2x0aXAgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgcHJv
dG90eXBlLAotIyBicmllZiBkZXNjcmlwdGlvbiBhbmQgbGlua3MgdG8gdGhlIGRlZmluaXRpb24g
YW5kIGRvY3VtZW50YXRpb24uIFNpbmNlIHRoaXMKLSMgd2lsbCBtYWtlIHRoZSBIVE1MIGZpbGUg
bGFyZ2VyIGFuZCBsb2FkaW5nIG9mIGxhcmdlIGZpbGVzIGEgYml0IHNsb3dlciwgeW91Ci0jIGNh
biBvcHQgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZ
RVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTT1VSQ0VfQlJPV1NFUiBpcyBz
ZXQgdG8gWUVTLgotCi1TT1VSQ0VfVE9PTFRJUFMgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIFVT
RV9IVEFHUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSByZWZlcmVuY2VzIHRvIHNvdXJjZSBj
b2RlIHdpbGwKLSMgcG9pbnQgdG8gdGhlIEhUTUwgZ2VuZXJhdGVkIGJ5IHRoZSBodGFncygxKSB0
b29sIGluc3RlYWQgb2YgZG94eWdlbiBidWlsdC1pbgotIyBzb3VyY2UgYnJvd3Nlci4gVGhlIGh0
YWdzIHRvb2wgaXMgcGFydCBvZiBHTlUncyBnbG9iYWwgc291cmNlIHRhZ2dpbmcgc3lzdGVtCi0j
IChzZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlv
dSB3aWxsIG5lZWQgdmVyc2lvbgotIyA0LjguNiBvciBoaWdoZXIuCi0jCi0jIFRvIHVzZSBpdCBk
byB0aGUgZm9sbG93aW5nOgotIyAtIEluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGdsb2Jh
bAotIyAtIEVuYWJsZSBTT1VSQ0VfQlJPV1NFUiBhbmQgVVNFX0hUQUdTIGluIHRoZSBjb25maWcg
ZmlsZQotIyAtIE1ha2Ugc3VyZSB0aGUgSU5QVVQgcG9pbnRzIHRvIHRoZSByb290IG9mIHRoZSBz
b3VyY2UgdHJlZQotIyAtIFJ1biBkb3h5Z2VuIGFzIG5vcm1hbAotIwotIyBEb3h5Z2VuIHdpbGwg
aW52b2tlIGh0YWdzIChhbmQgdGhhdCB3aWxsIGluIHR1cm4gaW52b2tlIGd0YWdzKSwgc28gdGhl
c2UKLSMgdG9vbHMgbXVzdCBiZSBhdmFpbGFibGUgZnJvbSB0aGUgY29tbWFuZCBsaW5lIChpLmUu
IGluIHRoZSBzZWFyY2ggcGF0aCkuCi0jCi0jIFRoZSByZXN1bHQ6IGluc3RlYWQgb2YgdGhlIHNv
dXJjZSBicm93c2VyIGdlbmVyYXRlZCBieSBkb3h5Z2VuLCB0aGUgbGlua3MgdG8KLSMgc291cmNl
IGNvZGUgd2lsbCBub3cgcG9pbnQgdG8gdGhlIG91dHB1dCBvZiBodGFncy4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNF
X0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KLQotVVNFX0hUQUdTICAgICAgICAgICAgICA9IE5PCi0K
LSMgSWYgdGhlIFZFUkJBVElNX0hFQURFUlMgdGFnIGlzIHNldCB0aGUgWUVTIHRoZW4gZG94eWdl
biB3aWxsIGdlbmVyYXRlIGEKLSMgdmVyYmF0aW0gY29weSBvZiB0aGUgaGVhZGVyIGZpbGUgZm9y
IGVhY2ggY2xhc3MgZm9yIHdoaWNoIGFuIGluY2x1ZGUgaXMKLSMgc3BlY2lmaWVkLiBTZXQgdG8g
Tk8gdG8gZGlzYWJsZSB0aGlzLgotIyBTZWUgYWxzbzogU2VjdGlvbiBcY2xhc3MuCi0jIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLVZFUkJBVElNX0hFQURFUlMgICAgICAgPSBOTwotCi0j
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRo
ZSBhbHBoYWJldGljYWwgY2xhc3MgaW5kZXgKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0
aGUgQUxQSEFCRVRJQ0FMX0lOREVYIHRhZyBpcyBzZXQgdG8gWUVTLCBhbiBhbHBoYWJldGljYWwg
aW5kZXggb2YgYWxsCi0jIGNvbXBvdW5kcyB3aWxsIGJlIGdlbmVyYXRlZC4gRW5hYmxlIHRoaXMg
aWYgdGhlIHByb2plY3QgY29udGFpbnMgYSBsb3Qgb2YKLSMgY2xhc3Nlcywgc3RydWN0cywgdW5p
b25zIG9yIGludGVyZmFjZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0KLUFMUEhB
QkVUSUNBTF9JTkRFWCAgICAgPSBZRVMKLVRPQ19JTkNMVURFX0hFQURJTkdTID0gMgotCi0jIFRo
ZSBDT0xTX0lOX0FMUEhBX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1i
ZXIgb2YgY29sdW1ucyBpbgotIyB3aGljaCB0aGUgYWxwaGFiZXRpY2FsIGluZGV4IGxpc3Qgd2ls
bCBiZSBzcGxpdC4KLSMgTWluaW11bSB2YWx1ZTogMSwgbWF4aW11bSB2YWx1ZTogMjAsIGRlZmF1
bHQgdmFsdWU6IDUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBBTFBIQUJFVElD
QUxfSU5ERVggaXMgc2V0IHRvIFlFUy4KLQotQ09MU19JTl9BTFBIQV9JTkRFWCAgICA9IDUKLQot
IyBJbiBjYXNlIGFsbCBjbGFzc2VzIGluIGEgcHJvamVjdCBzdGFydCB3aXRoIGEgY29tbW9uIHBy
ZWZpeCwgYWxsIGNsYXNzZXMgd2lsbAotIyBiZSBwdXQgdW5kZXIgdGhlIHNhbWUgaGVhZGVyIGlu
IHRoZSBhbHBoYWJldGljYWwgaW5kZXguIFRoZSBJR05PUkVfUFJFRklYIHRhZwotIyBjYW4gYmUg
dXNlZCB0byBzcGVjaWZ5IGEgcHJlZml4IChvciBhIGxpc3Qgb2YgcHJlZml4ZXMpIHRoYXQgc2hv
dWxkIGJlIGlnbm9yZWQKLSMgd2hpbGUgZ2VuZXJhdGluZyB0aGUgaW5kZXggaGVhZGVycy4KLSMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEFMUEhBQkVUSUNBTF9JTkRFWCBpcyBzZXQg
dG8gWUVTLgotCi1JR05PUkVfUFJFRklYICAgICAgICAgID0KLQotIy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgSFRNTCBvdXRwdXQKLSMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJBVEVfSFRNTCB0YWcgaXMgc2V0IHRv
IFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgSFRNTCBvdXRwdXQKLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLQotR0VORVJBVEVfSFRNTCAgICAgICAgICA9IFlFUwotCi0jIFRoZSBIVE1M
X09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBIVE1MIGRvY3Mgd2lsbCBi
ZSBwdXQuIElmIGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQ
VVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCi0jIGl0LgotIyBUaGUgZGVmYXVs
dCBkaXJlY3RvcnkgaXM6IGh0bWwuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBH
RU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfT1VUUFVUICAgICAgICAgICAgPSAl
SFRNTF9PVVRQVVQlCi0KLSMgVGhlIEhUTUxfRklMRV9FWFRFTlNJT04gdGFnIGNhbiBiZSB1c2Vk
IHRvIHNwZWNpZnkgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBlYWNoCi0jIGdlbmVyYXRlZCBIVE1M
IHBhZ2UgKGZvciBleGFtcGxlOiAuaHRtLCAucGhwLCAuYXNwKS4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IC5odG1sLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVf
SFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1MX0ZJTEVfRVhURU5TSU9OICAgID0gLmh0bWwKLQot
IyBUaGUgSFRNTF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmlu
ZWQgSFRNTCBoZWFkZXIgZmlsZSBmb3IKLSMgZWFjaCBnZW5lcmF0ZWQgSFRNTCBwYWdlLiBJZiB0
aGUgdGFnIGlzIGxlZnQgYmxhbmsgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEKLSMgc3RhbmRhcmQg
aGVhZGVyLgotIwotIyBUbyBnZXQgdmFsaWQgSFRNTCB0aGUgaGVhZGVyIGZpbGUgdGhhdCBpbmNs
dWRlcyBhbnkgc2NyaXB0cyBhbmQgc3R5bGUgc2hlZXRzCi0jIHRoYXQgZG94eWdlbiBuZWVkcywg
d2hpY2ggaXMgZGVwZW5kZW50IG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdXNlZCAoZS5n
LgotIyB0aGUgc2V0dGluZyBHRU5FUkFURV9UUkVFVklFVykuIEl0IGlzIGhpZ2hseSByZWNvbW1l
bmRlZCB0byBzdGFydCB3aXRoIGEKLSMgZGVmYXVsdCBoZWFkZXIgdXNpbmcKLSMgZG94eWdlbiAt
dyBodG1sIG5ld19oZWFkZXIuaHRtbCBuZXdfZm9vdGVyLmh0bWwgbmV3X3N0eWxlc2hlZXQuY3Nz
Ci0jIFlvdXJDb25maWdGaWxlCi0jIGFuZCB0aGVuIG1vZGlmeSB0aGUgZmlsZSBuZXdfaGVhZGVy
Lmh0bWwuIFNlZSBhbHNvIHNlY3Rpb24gIkRveHlnZW4gdXNhZ2UiCi0jIGZvciBpbmZvcm1hdGlv
biBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIGRlZmF1bHQgaGVhZGVyIHRoYXQgZG94eWdlbiBub3Jt
YWxseQotIyB1c2VzLgotIyBOb3RlOiBUaGUgaGVhZGVyIGlzIHN1YmplY3QgdG8gY2hhbmdlIHNv
IHlvdSB0eXBpY2FsbHkgaGF2ZSB0byByZWdlbmVyYXRlIHRoZQotIyBkZWZhdWx0IGhlYWRlciB3
aGVuIHVwZ3JhZGluZyB0byBhIG5ld2VyIHZlcnNpb24gb2YgZG94eWdlbi4gRm9yIGEgZGVzY3Jp
cHRpb24KLSMgb2YgdGhlIHBvc3NpYmxlIG1hcmtlcnMgYW5kIGJsb2NrIG5hbWVzIHNlZSB0aGUg
ZG9jdW1lbnRhdGlvbi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9IRUFERVIgICAgICAgICAgICA9IGhlYWRlci5o
dG1sCi0KLSMgVGhlIEhUTUxfRk9PVEVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgdXNl
ci1kZWZpbmVkIEhUTUwgZm9vdGVyIGZvciBlYWNoCi0jIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElm
IHRoZSB0YWcgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFyZAot
IyBmb290ZXIuIFNlZSBIVE1MX0hFQURFUiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8g
Z2VuZXJhdGUgYSBkZWZhdWx0Ci0jIGZvb3RlciBhbmQgd2hhdCBzcGVjaWFsIGNvbW1hbmRzIGNh
biBiZSB1c2VkIGluc2lkZSB0aGUgZm9vdGVyLiBTZWUgYWxzbwotIyBzZWN0aW9uICJEb3h5Z2Vu
IHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGZv
b3RlcgotIyB0aGF0IGRveHlnZW4gbm9ybWFsbHkgdXNlcy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMg
dGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9GT09URVIg
ICAgICAgICAgICA9IGZvb3Rlci5odG1sCi0KLSMgVGhlIEhUTUxfU1RZTEVTSEVFVCB0YWcgY2Fu
IGJlIHVzZWQgdG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBjYXNjYWRpbmcgc3R5bGUKLSMgc2hl
ZXQgdGhhdCBpcyB1c2VkIGJ5IGVhY2ggSFRNTCBwYWdlLiBJdCBjYW4gYmUgdXNlZCB0byBmaW5l
LXR1bmUgdGhlIGxvb2sgb2YKLSMgdGhlIEhUTUwgb3V0cHV0LiBJZiBsZWZ0IGJsYW5rIGRveHln
ZW4gd2lsbCBnZW5lcmF0ZSBhIGRlZmF1bHQgc3R5bGUgc2hlZXQuCi0jIFNlZSBhbHNvIHNlY3Rp
b24gIkRveHlnZW4gdXNhZ2UiIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgdGhl
IHN0eWxlCi0jIHNoZWV0IHRoYXQgZG94eWdlbiBub3JtYWxseSB1c2VzLgotIyBOb3RlOiBJdCBp
cyByZWNvbW1lbmRlZCB0byB1c2UgSFRNTF9FWFRSQV9TVFlMRVNIRUVUIGluc3RlYWQgb2YgdGhp
cyB0YWcsIGFzCi0jIGl0IGlzIG1vcmUgcm9idXN0IGFuZCB0aGlzIHRhZyAoSFRNTF9TVFlMRVNI
RUVUKSB3aWxsIGluIHRoZSBmdXR1cmUgYmVjb21lCi0jIG9ic29sZXRlLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1IVE1M
X1NUWUxFU0hFRVQgICAgICAgID0KLQotIyBUaGUgSFRNTF9FWFRSQV9TVFlMRVNIRUVUIHRhZyBj
YW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFkZGl0aW9uYWwgdXNlci0KLSMgZGVmaW5lZCBjYXNj
YWRpbmcgc3R5bGUgc2hlZXQgdGhhdCBpcyBpbmNsdWRlZCBhZnRlciB0aGUgc3RhbmRhcmQgc3R5
bGUgc2hlZXRzCi0jIGNyZWF0ZWQgYnkgZG94eWdlbi4gVXNpbmcgdGhpcyBvcHRpb24gb25lIGNh
biBvdmVycnVsZSBjZXJ0YWluIHN0eWxlIGFzcGVjdHMuCi0jIFRoaXMgaXMgcHJlZmVycmVkIG92
ZXIgdXNpbmcgSFRNTF9TVFlMRVNIRUVUIHNpbmNlIGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlCi0j
IHN0YW5kYXJkIHN0eWxlIHNoZWV0IGFuZCBpcyB0aGVyZWZvcmUgbW9yZSByb2J1c3QgYWdhaW5z
dCBmdXR1cmUgdXBkYXRlcy4KLSMgRG94eWdlbiB3aWxsIGNvcHkgdGhlIHN0eWxlIHNoZWV0IGZp
bGUgdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuIEZvciBhbiBleGFtcGxlCi0jIHNlZSB0aGUgZG9j
dW1lbnRhdGlvbi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hU
TUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9FWFRSQV9TVFlMRVNIRUVUICA9Ci0KLSMgVGhlIEhU
TUxfRVhUUkFfRklMRVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZXh0
cmEgaW1hZ2VzIG9yCi0jIG90aGVyIHNvdXJjZSBmaWxlcyB3aGljaCBzaG91bGQgYmUgY29waWVk
IHRvIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkuIE5vdGUKLSMgdGhhdCB0aGVzZSBmaWxlcyB3
aWxsIGJlIGNvcGllZCB0byB0aGUgYmFzZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkuIFVzZSB0aGUK
LSMgJHJlbHBhdGheIG1hcmtlciBpbiB0aGUgSFRNTF9IRUFERVIgYW5kL29yIEhUTUxfRk9PVEVS
IGZpbGVzIHRvIGxvYWQgdGhlc2UKLSMgZmlsZXMuIEluIHRoZSBIVE1MX1NUWUxFU0hFRVQgZmls
ZSwgdXNlIHRoZSBmaWxlIG5hbWUgb25seS4gQWxzbyBub3RlIHRoYXQgdGhlCi0jIGZpbGVzIHdp
bGwgYmUgY29waWVkIGFzLWlzOyB0aGVyZSBhcmUgbm8gY29tbWFuZHMgb3IgbWFya2VycyBhdmFp
bGFibGUuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUhUTUxfRVhUUkFfRklMRVMgICAgICAgPQotCi0jIFRoZSBIVE1MX0NP
TE9SU1RZTEVfSFVFIHRhZyBjb250cm9scyB0aGUgY29sb3Igb2YgdGhlIEhUTUwgb3V0cHV0LiBE
b3h5Z2VuCi0jIHdpbGwgYWRqdXN0IHRoZSBjb2xvcnMgaW4gdGhlIHN0eWxlc2hlZXQgYW5kIGJh
Y2tncm91bmQgaW1hZ2VzIGFjY29yZGluZyB0bwotIyB0aGlzIGNvbG9yLiBIdWUgaXMgc3BlY2lm
aWVkIGFzIGFuIGFuZ2xlIG9uIGEgY29sb3J3aGVlbCwgc2VlCi0jIGh0dHA6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvSHVlIGZvciBtb3JlIGluZm9ybWF0aW9uLiBGb3IgaW5zdGFuY2UgdGhlIHZh
bHVlCi0jIDAgcmVwcmVzZW50cyByZWQsIDYwIGlzIHllbGxvdywgMTIwIGlzIGdyZWVuLCAxODAg
aXMgY3lhbiwgMjQwIGlzIGJsdWUsIDMwMAotIyBwdXJwbGUsIGFuZCAzNjAgaXMgcmVkIGFnYWlu
LgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAzNTksIGRlZmF1bHQgdmFsdWU6
IDIyMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMg
c2V0IHRvIFlFUy4KLQotSFRNTF9DT0xPUlNUWUxFX0hVRSAgICA9IDIyMAotCi0jIFRoZSBIVE1M
X0NPTE9SU1RZTEVfU0FUIHRhZyBjb250cm9scyB0aGUgcHVyaXR5IChvciBzYXR1cmF0aW9uKSBv
ZiB0aGUgY29sb3JzCi0jIGluIHRoZSBIVE1MIG91dHB1dC4gRm9yIGEgdmFsdWUgb2YgMCB0aGUg
b3V0cHV0IHdpbGwgdXNlIGdyYXlzY2FsZXMgb25seS4gQQotIyB2YWx1ZSBvZiAyNTUgd2lsbCBw
cm9kdWNlIHRoZSBtb3N0IHZpdmlkIGNvbG9ycy4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11
bSB2YWx1ZTogMjU1LCBkZWZhdWx0IHZhbHVlOiAxMDAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUhUTUxfQ09MT1JTVFlM
RV9TQVQgICAgPSAxMDAKLQotIyBUaGUgSFRNTF9DT0xPUlNUWUxFX0dBTU1BIHRhZyBjb250cm9s
cyB0aGUgZ2FtbWEgY29ycmVjdGlvbiBhcHBsaWVkIHRvIHRoZQotIyBsdW1pbmFuY2UgY29tcG9u
ZW50IG9mIHRoZSBjb2xvcnMgaW4gdGhlIEhUTUwgb3V0cHV0LiBWYWx1ZXMgYmVsb3cgMTAwCi0j
IGdyYWR1YWxseSBtYWtlIHRoZSBvdXRwdXQgbGlnaHRlciwgd2hlcmVhcyB2YWx1ZXMgYWJvdmUg
MTAwIG1ha2UgdGhlIG91dHB1dAotIyBkYXJrZXIuIFRoZSB2YWx1ZSBkaXZpZGVkIGJ5IDEwMCBp
cyB0aGUgYWN0dWFsIGdhbW1hIGFwcGxpZWQsIHNvIDgwIHJlcHJlc2VudHMKLSMgYSBnYW1tYSBv
ZiAwLjgsIFRoZSB2YWx1ZSAyMjAgcmVwcmVzZW50cyBhIGdhbW1hIG9mIDIuMiwgYW5kIDEwMCBk
b2VzIG5vdAotIyBjaGFuZ2UgdGhlIGdhbW1hLgotIyBNaW5pbXVtIHZhbHVlOiA0MCwgbWF4aW11
bSB2YWx1ZTogMjQwLCBkZWZhdWx0IHZhbHVlOiA4MC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9DT0xPUlNUWUxF
X0dBTU1BICA9IDgwCi0KLSMgSWYgdGhlIEhUTUxfVElNRVNUQU1QIHRhZyBpcyBzZXQgdG8gWUVT
IHRoZW4gdGhlIGZvb3RlciBvZiBlYWNoIGdlbmVyYXRlZCBIVE1MCi0jIHBhZ2Ugd2lsbCBjb250
YWluIHRoZSBkYXRlIGFuZCB0aW1lIHdoZW4gdGhlIHBhZ2Ugd2FzIGdlbmVyYXRlZC4gU2V0dGlu
ZyB0aGlzCi0jIHRvIE5PIGNhbiBoZWxwIHdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgbXVs
dGlwbGUgcnVucy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotSFRNTF9U
SU1FU1RBTVAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIEhUTUxfRFlOQU1JQ19TRUNUSU9OUyB0
YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSBnZW5lcmF0ZWQgSFRNTAotIyBkb2N1bWVudGF0aW9u
IHdpbGwgY29udGFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBoaWRkZW4gYW5kIHNob3duIGFmdGVy
IHRoZQotIyBwYWdlIGhhcyBsb2FkZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlF
Uy4KLQotSFRNTF9EWU5BTUlDX1NFQ1RJT05TICA9IFlFUwotCi0jIFdpdGggSFRNTF9JTkRFWF9O
VU1fRU5UUklFUyBvbmUgY2FuIGNvbnRyb2wgdGhlIHByZWZlcnJlZCBudW1iZXIgb2YgZW50cmll
cwotIyBzaG93biBpbiB0aGUgdmFyaW91cyB0cmVlIHN0cnVjdHVyZWQgaW5kaWNlcyBpbml0aWFs
bHk7IHRoZSB1c2VyIGNhbiBleHBhbmQKLSMgYW5kIGNvbGxhcHNlIGVudHJpZXMgZHluYW1pY2Fs
bHkgbGF0ZXIgb24uIERveHlnZW4gd2lsbCBleHBhbmQgdGhlIHRyZWUgdG8KLSMgc3VjaCBhIGxl
dmVsIHRoYXQgYXQgbW9zdCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBlbnRyaWVzIGFyZSB2aXNp
YmxlICh1bmxlc3MKLSMgYSBmdWxseSBjb2xsYXBzZWQgdHJlZSBhbHJlYWR5IGV4Y2VlZHMgdGhp
cyBhbW91bnQpLiBTbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YKLSMgZW50cmllcyAxIHdpbGwgcHJv
ZHVjZSBhIGZ1bGwgY29sbGFwc2VkIHRyZWUgYnkgZGVmYXVsdC4gMCBpcyBhIHNwZWNpYWwgdmFs
dWUKLSMgcmVwcmVzZW50aW5nIGFuIGluZmluaXRlIG51bWJlciBvZiBlbnRyaWVzIGFuZCB3aWxs
IHJlc3VsdCBpbiBhIGZ1bGwgZXhwYW5kZWQKLSMgdHJlZSBieSBkZWZhdWx0LgotIyBNaW5pbXVt
IHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5OTk5LCBkZWZhdWx0IHZhbHVlOiAxMDAuCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMu
Ci0KLUhUTUxfSU5ERVhfTlVNX0VOVFJJRVMgPSAxMDAKLQotIyBJZiB0aGUgR0VORVJBVEVfRE9D
U0VUIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKLSMg
Z2VuZXJhdGVkIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEFwcGxlJ3MgWGNvZGUgMyBp
bnRlZ3JhdGVkIGRldmVsb3BtZW50Ci0jIGVudmlyb25tZW50IChzZWU6IGh0dHA6Ly9kZXZlbG9w
ZXIuYXBwbGUuY29tL3Rvb2xzL3hjb2RlLyksIGludHJvZHVjZWQgd2l0aAotIyBPU1ggMTAuNSAo
TGVvcGFyZCkuIFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2Vu
ZXJhdGUgYQotIyBNYWtlZmlsZSBpbiB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBSdW5uaW5n
IG1ha2Ugd2lsbCBwcm9kdWNlIHRoZSBkb2NzZXQgaW4KLSMgdGhhdCBkaXJlY3RvcnkgYW5kIHJ1
bm5pbmcgbWFrZSBpbnN0YWxsIHdpbGwgaW5zdGFsbCB0aGUgZG9jc2V0IGluCi0jIH4vTGlicmFy
eS9EZXZlbG9wZXIvU2hhcmVkL0RvY3VtZW50YXRpb24vRG9jU2V0cyBzbyB0aGF0IFhjb2RlIHdp
bGwgZmluZCBpdCBhdAotIyBzdGFydHVwLiBTZWUgaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20v
dG9vbHMvY3JlYXRpbmdkb2NzZXRzd2l0aGRveHlnZW4uaHRtbAotIyBmb3IgbW9yZSBpbmZvcm1h
dGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1HRU5FUkFURV9ET0NT
RVQgICAgICAgID0gTk8KLQotIyBUaGlzIHRhZyBkZXRlcm1pbmVzIHRoZSBuYW1lIG9mIHRoZSBk
b2NzZXQgZmVlZC4gQSBkb2N1bWVudGF0aW9uIGZlZWQgcHJvdmlkZXMKLSMgYW4gdW1icmVsbGEg
dW5kZXIgd2hpY2ggbXVsdGlwbGUgZG9jdW1lbnRhdGlvbiBzZXRzIGZyb20gYSBzaW5nbGUgcHJv
dmlkZXIKLSMgKHN1Y2ggYXMgYSBjb21wYW55IG9yIHByb2R1Y3Qgc3VpdGUpIGNhbiBiZSBncm91
cGVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogRG94eWdlbiBnZW5lcmF0ZWQgZG9jcy4KLSMg
VGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8g
WUVTLgotCi1ET0NTRVRfRkVFRE5BTUUgICAgICAgID0gIkRveHlnZW4gZ2VuZXJhdGVkIGRvY3Mi
Ci0KLSMgVGhpcyB0YWcgc3BlY2lmaWVzIGEgc3RyaW5nIHRoYXQgc2hvdWxkIHVuaXF1ZWx5IGlk
ZW50aWZ5IHRoZSBkb2N1bWVudGF0aW9uCi0jIHNldCBidW5kbGUuIFRoaXMgc2hvdWxkIGJlIGEg
cmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZSBzdHJpbmcsIGUuZy4KLSMgY29tLm15Y29tcGFueS5N
eURvY1NldC4gRG94eWdlbiB3aWxsIGFwcGVuZCAuZG9jc2V0IHRvIHRoZSBuYW1lLgotIyBUaGUg
ZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHJvamVjdC4KLSMgVGhpcyB0YWcgcmVxdWly
ZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgotCi1ET0NTRVRf
QlVORExFX0lEICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAotCi0jIFRoZSBET0NTRVRfUFVC
TElTSEVSX0lEIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRl
bnRpZnkKLSMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLiBUaGlzIHNob3VsZCBiZSBhIHJl
dmVyc2UgZG9tYWluLW5hbWUgc3R5bGUKLSMgc3RyaW5nLCBlLmcuIGNvbS5teWNvbXBhbnkuTXlE
b2NTZXQuZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2Vu
LlB1Ymxpc2hlci4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RP
Q1NFVCBpcyBzZXQgdG8gWUVTLgotCi1ET0NTRVRfUFVCTElTSEVSX0lEICAgID0gb3JnLmRveHln
ZW4uUHVibGlzaGVyCi0KLSMgVGhlIERPQ1NFVF9QVUJMSVNIRVJfTkFNRSB0YWcgaWRlbnRpZmll
cyB0aGUgZG9jdW1lbnRhdGlvbiBwdWJsaXNoZXIuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBQ
dWJsaXNoZXIuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NT
RVQgaXMgc2V0IHRvIFlFUy4KLQotRE9DU0VUX1BVQkxJU0hFUl9OQU1FICA9IFB1Ymxpc2hlcgot
Ci0jIElmIHRoZSBHRU5FUkFURV9IVE1MSEVMUCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHln
ZW4gZ2VuZXJhdGVzIHRocmVlCi0jIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBmaWxlczogaW5kZXgu
aGhwLCBpbmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQotIyBpbmRleC5oaHAgaXMgYSBwcm9q
ZWN0IGZpbGUgdGhhdCBjYW4gYmUgcmVhZCBieSBNaWNyb3NvZnQncyBIVE1MIEhlbHAgV29ya3No
b3AKLSMgKHNlZTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFp
bHMuYXNweD9pZD0yMTEzOCkgb24KLSMgV2luZG93cy4KLSMKLSMgVGhlIEhUTUwgSGVscCBXb3Jr
c2hvcCBjb250YWlucyBhIGNvbXBpbGVyIHRoYXQgY2FuIGNvbnZlcnQgYWxsIEhUTUwgb3V0cHV0
Ci0jIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGludG8gYSBzaW5nbGUgY29tcGlsZWQgSFRNTCBmaWxl
ICguY2htKS4gQ29tcGlsZWQgSFRNTAotIyBmaWxlcyBhcmUgbm93IHVzZWQgYXMgdGhlIFdpbmRv
d3MgOTggaGVscCBmb3JtYXQsIGFuZCB3aWxsIHJlcGxhY2UgdGhlIG9sZAotIyBXaW5kb3dzIGhl
bHAgZm9ybWF0ICguaGxwKSBvbiBhbGwgV2luZG93cyBwbGF0Zm9ybXMgaW4gdGhlIGZ1dHVyZS4g
Q29tcHJlc3NlZAotIyBIVE1MIGZpbGVzIGFsc28gY29udGFpbiBhbiBpbmRleCwgYSB0YWJsZSBv
ZiBjb250ZW50cywgYW5kIHlvdSBjYW4gc2VhcmNoIGZvcgotIyB3b3JkcyBpbiB0aGUgZG9jdW1l
bnRhdGlvbi4gVGhlIEhUTUwgd29ya3Nob3AgYWxzbyBjb250YWlucyBhIHZpZXdlciBmb3IKLSMg
Y29tcHJlc3NlZCBIVE1MIGZpbGVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMu
Ci0KLUdFTkVSQVRFX0hUTUxIRUxQICAgICAgPSAlSFRNTF9IRUxQJQotCi0jIFRoZSBDSE1fRklM
RSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSBuYW1lIG9mIHRoZSByZXN1bHRp
bmcgLmNobQotIyBmaWxlLiBZb3UgY2FuIGFkZCBhIHBhdGggaW4gZnJvbnQgb2YgdGhlIGZpbGUg
aWYgdGhlIHJlc3VsdCBzaG91bGQgbm90IGJlCi0jIHdyaXR0ZW4gdG8gdGhlIGh0bWwgb3V0cHV0
IGRpcmVjdG9yeS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hU
TUxIRUxQIGlzIHNldCB0byBZRVMuCi0KLUNITV9GSUxFICAgICAgICAgICAgICAgPSBqc29uY3Bw
LSVKU09OQ1BQX1ZFUlNJT04lLmNobQotCi0jIFRoZSBISENfTE9DQVRJT04gdGFnIGNhbiBiZSB1
c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIChhYnNvbHV0ZSBwYXRoCi0jIGluY2x1ZGluZyBm
aWxlIG5hbWUpIG9mIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgKCBoaGMuZXhlKS4gSWYgbm9uLWVt
cHR5Ci0jIGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIHRoZSBIVE1MIGhlbHAgY29tcGlsZXIgb24g
dGhlIGdlbmVyYXRlZCBpbmRleC5oaHAuCi0jIFRoZSBmaWxlIGhhcyB0byBiZSBzcGVjaWZpZWQg
d2l0aCBmdWxsIHBhdGguCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU
RV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgotCi1ISENfTE9DQVRJT04gICAgICAgICAgID0gImM6
XFByb2dyYW0gRmlsZXNcSFRNTCBIZWxwIFdvcmtzaG9wXGhoYy5leGUiCi0KLSMgVGhlIEdFTkVS
QVRFX0NISSBmbGFnIGNvbnRyb2xzIGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdl
bmVyYXRlZCAoCi0jIFlFUykgb3IgdGhhdCBpdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIG1h
c3RlciAuY2htIGZpbGUgKCBOTykuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZ
RVMuCi0KLUdFTkVSQVRFX0NISSAgICAgICAgICAgPSBZRVMKLQotIyBUaGUgQ0hNX0lOREVYX0VO
Q09ESU5HIGlzIHVzZWQgdG8gZW5jb2RlIEh0bWxIZWxwIGluZGV4ICggaGhrKSwgY29udGVudCAo
IGhoYykKLSMgYW5kIHByb2plY3QgZmlsZSBjb250ZW50LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotQ0hNX0lOREVY
X0VOQ09ESU5HICAgICA9Ci0KLSMgVGhlIEJJTkFSWV9UT0MgZmxhZyBjb250cm9scyB3aGV0aGVy
IGEgYmluYXJ5IHRhYmxlIG9mIGNvbnRlbnRzIGlzIGdlbmVyYXRlZCAoCi0jIFlFUykgb3IgYSBu
b3JtYWwgdGFibGUgb2YgY29udGVudHMgKCBOTykgaW4gdGhlIC5jaG0gZmlsZS4KLSMgVGhlIGRl
ZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VO
RVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KLQotQklOQVJZX1RPQyAgICAgICAgICAgICA9
IFlFUwotCi0jIFRoZSBUT0NfRVhQQU5EIGZsYWcgY2FuIGJlIHNldCB0byBZRVMgdG8gYWRkIGV4
dHJhIGl0ZW1zIGZvciBncm91cCBtZW1iZXJzIHRvCi0jIHRoZSB0YWJsZSBvZiBjb250ZW50cyBv
ZiB0aGUgSFRNTCBoZWxwIGRvY3VtZW50YXRpb24gYW5kIHRvIHRoZSB0cmVlIHZpZXcuCi0jIFRo
ZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFn
IEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCi0KLVRPQ19FWFBBTkQgICAgICAgICAg
ICAgPSBZRVMKLQotIyBJZiB0aGUgR0VORVJBVEVfUUhQIHRhZyBpcyBzZXQgdG8gWUVTIGFuZCBi
b3RoIFFIUF9OQU1FU1BBQ0UgYW5kCi0jIFFIUF9WSVJUVUFMX0ZPTERFUiBhcmUgc2V0LCBhbiBh
ZGRpdGlvbmFsIGluZGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgdGhhdAotIyBjYW4gYmUgdXNl
ZCBhcyBpbnB1dCBmb3IgUXQncyBxaGVscGdlbmVyYXRvciB0byBnZW5lcmF0ZSBhIFF0IENvbXBy
ZXNzZWQgSGVscAotIyAoLnFjaCkgb2YgdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24u
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQotR0VORVJBVEVfUUhQICAgICAg
ICAgICA9IE5PCi0KLSMgSWYgdGhlIFFIR19MT0NBVElPTiB0YWcgaXMgc3BlY2lmaWVkLCB0aGUg
UUNIX0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkKLSMgdGhlIGZpbGUgbmFtZSBvZiB0
aGUgcmVzdWx0aW5nIC5xY2ggZmlsZS4gVGhlIHBhdGggc3BlY2lmaWVkIGlzIHJlbGF0aXZlIHRv
Ci0jIHRoZSBIVE1MIG91dHB1dCBmb2xkZXIuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUNIX0ZJTEUgICAgICAgICAgICAg
ICA9Ci0KLSMgVGhlIFFIUF9OQU1FU1BBQ0UgdGFnIHNwZWNpZmllcyB0aGUgbmFtZXNwYWNlIHRv
IHVzZSB3aGVuIGdlbmVyYXRpbmcgUXQgSGVscAotIyBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUg
aW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBOYW1lc3BhY2UKLSMgKHNl
ZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI25h
bWVzcGFjZSkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0Lgot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZ
RVMuCi0KLVFIUF9OQU1FU1BBQ0UgICAgICAgICAgPQotCi0jIFRoZSBRSFBfVklSVFVBTF9GT0xE
RVIgdGFnIHNwZWNpZmllcyB0aGUgbmFtZXNwYWNlIHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgUXQK
LSMgSGVscCBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBR
dCBIZWxwIFByb2plY3QgLyBWaXJ0dWFsCi0jIEZvbGRlcnMgKHNlZTogaHR0cDovL3F0LXByb2pl
Y3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI3ZpcnR1YWwtCi0jIGZvbGRlcnMp
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogZG9jLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0
IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCi0KLVFIUF9WSVJUVUFMX0ZPTERF
UiAgICAgPSBkb2MKLQotIyBJZiB0aGUgUUhQX0NVU1RfRklMVEVSX05BTUUgdGFnIGlzIHNldCwg
aXQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgY3VzdG9tCi0jIGZpbHRlciB0byBhZGQuIEZvciBt
b3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gQ3VzdG9tCi0jIEZp
bHRlcnMgKHNlZTogaHR0cDovL3F0LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVj
dC5odG1sI2N1c3RvbS0KLSMgZmlsdGVycykuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhl
IHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhQX0NVU1RfRklMVEVSX05BTUUg
ICA9Ci0KLSMgVGhlIFFIUF9DVVNUX0ZJTFRFUl9BVFRSUyB0YWcgc3BlY2lmaWVzIHRoZSBsaXN0
IG9mIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZQotIyBjdXN0b20gZmlsdGVyIHRvIGFkZC4gRm9yIG1v
cmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBDdXN0b20KLSMgRmls
dGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0
Lmh0bWwjY3VzdG9tLQotIyBmaWx0ZXJzKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgotCi1RSFBfQ1VTVF9GSUxURVJfQVRUUlMg
ID0KLQotIyBUaGUgUUhQX1NFQ1RfRklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qg
b2YgdGhlIGF0dHJpYnV0ZXMgdGhpcwotIyBwcm9qZWN0J3MgZmlsdGVyIHNlY3Rpb24gbWF0Y2hl
cy4gUXQgSGVscCBQcm9qZWN0IC8gRmlsdGVyIEF0dHJpYnV0ZXMgKHNlZToKLSMgaHR0cDovL3F0
LXByb2plY3Qub3JnL2RvYy9xdC00LjgvcXRoZWxwcHJvamVjdC5odG1sI2ZpbHRlci1hdHRyaWJ1
dGVzKS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBz
ZXQgdG8gWUVTLgotCi1RSFBfU0VDVF9GSUxURVJfQVRUUlMgID0KLQotIyBUaGUgUUhHX0xPQ0FU
SU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBRdCdzCi0jIHFo
ZWxwZ2VuZXJhdG9yLiBJZiBub24tZW1wdHkgZG94eWdlbiB3aWxsIHRyeSB0byBydW4gcWhlbHBn
ZW5lcmF0b3Igb24gdGhlCi0jIGdlbmVyYXRlZCAucWhwIGZpbGUuCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KLQotUUhHX0xPQ0FU
SU9OICAgICAgICAgICA9Ci0KLSMgSWYgdGhlIEdFTkVSQVRFX0VDTElQU0VIRUxQIHRhZyBpcyBz
ZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKLSMgZ2VuZXJhdGVkLCB0
b2dldGhlciB3aXRoIHRoZSBIVE1MIGZpbGVzLCB0aGV5IGZvcm0gYW4gRWNsaXBzZSBoZWxwIHBs
dWdpbi4gVG8KLSMgaW5zdGFsbCB0aGlzIHBsdWdpbiBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdW5k
ZXIgdGhlIGhlbHAgY29udGVudHMgbWVudSBpbgotIyBFY2xpcHNlLCB0aGUgY29udGVudHMgb2Yg
dGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBIVE1MIGFuZCBYTUwgZmlsZXMgbmVlZHMKLSMg
dG8gYmUgY29waWVkIGludG8gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IG9mIGVjbGlwc2UuIFRoZSBu
YW1lIG9mIHRoZSBkaXJlY3RvcnkKLSMgd2l0aGluIHRoZSBwbHVnaW5zIGRpcmVjdG9yeSBzaG91
bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEVDTElQU0VfRE9DX0lEIHZhbHVlLgotIyBBZnRlciBjb3B5
aW5nIEVjbGlwc2UgbmVlZHMgdG8gYmUgcmVzdGFydGVkIGJlZm9yZSB0aGUgaGVscCBhcHBlYXJz
LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUdFTkVSQVRFX0VDTElQU0VI
RUxQICAgPSBOTwotCi0jIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBFY2xpcHNlIGhlbHAg
cGx1Z2luLiBXaGVuIGluc3RhbGxpbmcgdGhlIHBsdWdpbgotIyB0aGUgZGlyZWN0b3J5IG5hbWUg
Y29udGFpbmluZyB0aGUgSFRNTCBhbmQgWE1MIGZpbGVzIHNob3VsZCBhbHNvIGhhdmUgdGhpcwot
IyBuYW1lLiBFYWNoIGRvY3VtZW50YXRpb24gc2V0IHNob3VsZCBoYXZlIGl0cyBvd24gaWRlbnRp
Zmllci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlByb2plY3QuCi0jIFRo
aXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9FQ0xJUFNFSEVMUCBpcyBzZXQg
dG8gWUVTLgotCi1FQ0xJUFNFX0RPQ19JRCAgICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAot
Ci0jIElmIHlvdSB3YW50IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBsYXlvdXQgb2YgdGhlIGdlbmVy
YXRlZCBIVE1MIHBhZ2VzIGl0IG1pZ2h0Ci0jIGJlIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHRoZSBp
bmRleCBhbmQgcmVwbGFjZSBpdCB3aXRoIHlvdXIgb3duLiBUaGUKLSMgRElTQUJMRV9JTkRFWCB0
YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIGNvbmRlbnNlZCBpbmRleCAodGFicykg
YXQgdG9wCi0jIG9mIGVhY2ggSFRNTCBwYWdlLiBBIHZhbHVlIG9mIE5PIGVuYWJsZXMgdGhlIGlu
ZGV4IGFuZCB0aGUgdmFsdWUgWUVTIGRpc2FibGVzCi0jIGl0LiBTaW5jZSB0aGUgdGFicyBpbiB0
aGUgaW5kZXggY29udGFpbiB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgbmF2aWdhdGlvbgot
IyB0cmVlLCB5b3UgY2FuIHNldCB0aGlzIG9wdGlvbiB0byBZRVMgaWYgeW91IGFsc28gc2V0IEdF
TkVSQVRFX1RSRUVWSUVXIHRvIFlFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVT
LgotCi1ESVNBQkxFX0lOREVYICAgICAgICAgID0gTk8KLQotIyBUaGUgR0VORVJBVEVfVFJFRVZJ
RVcgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGEgdHJlZS1saWtlIGluZGV4Ci0jIHN0
cnVjdHVyZSBzaG91bGQgYmUgZ2VuZXJhdGVkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIGluZm9y
bWF0aW9uLiBJZiB0aGUgdGFnCi0jIHZhbHVlIGlzIHNldCB0byBZRVMsIGEgc2lkZSBwYW5lbCB3
aWxsIGJlIGdlbmVyYXRlZCBjb250YWluaW5nIGEgdHJlZS1saWtlCi0jIGluZGV4IHN0cnVjdHVy
ZSAoanVzdCBsaWtlIHRoZSBvbmUgdGhhdCBpcyBnZW5lcmF0ZWQgZm9yIEhUTUwgSGVscCkuIEZv
ciB0aGlzCi0jIHRvIHdvcmsgYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgSmF2YVNjcmlwdCwgREhU
TUwsIENTUyBhbmQgZnJhbWVzIGlzIHJlcXVpcmVkCi0jIChpLmUuIGFueSBtb2Rlcm4gYnJvd3Nl
cikuIFdpbmRvd3MgdXNlcnMgYXJlIHByb2JhYmx5IGJldHRlciBvZmYgdXNpbmcgdGhlCi0jIEhU
TUwgaGVscCBmZWF0dXJlLiBWaWEgY3VzdG9tIHN0eWxlc2hlZXRzIChzZWUgSFRNTF9FWFRSQV9T
VFlMRVNIRUVUKSBvbmUgY2FuCi0jIGZ1cnRoZXIgZmluZS10dW5lIHRoZSBsb29rIG9mIHRoZSBp
bmRleC4gQXMgYW4gZXhhbXBsZSwgdGhlIGRlZmF1bHQgc3R5bGUKLSMgc2hlZXQgZ2VuZXJhdGVk
IGJ5IGRveHlnZW4gaGFzIGFuIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gcHV0IGFuIGltYWdl
IGF0Ci0jIHRoZSByb290IG9mIHRoZSB0cmVlIGluc3RlYWQgb2YgdGhlIFBST0pFQ1RfTkFNRS4g
U2luY2UgdGhlIHRyZWUgYmFzaWNhbGx5IGhhcwotIyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0
aGUgdGFiIGluZGV4LCB5b3UgY291bGQgY29uc2lkZXIgc2V0dGluZwotIyBESVNBQkxFX0lOREVY
IHRvIFlFUyB3aGVuIGVuYWJsaW5nIHRoaXMgb3B0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLUdFTkVSQVRFX1RSRUVWSUVXICAgICAgPSBZRVMKLQotIyBUaGUgRU5V
TV9WQUxVRVNfUEVSX0xJTkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIGVu
dW0gdmFsdWVzIHRoYXQKLSMgZG94eWdlbiB3aWxsIGdyb3VwIG9uIG9uZSBsaW5lIGluIHRoZSBn
ZW5lcmF0ZWQgSFRNTCBkb2N1bWVudGF0aW9uLgotIwotIyBOb3RlIHRoYXQgYSB2YWx1ZSBvZiAw
IHdpbGwgY29tcGxldGVseSBzdXBwcmVzcyB0aGUgZW51bSB2YWx1ZXMgZnJvbSBhcHBlYXJpbmcK
LSMgaW4gdGhlIG92ZXJ2aWV3IHNlY3Rpb24uCi0jIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0g
dmFsdWU6IDIwLCBkZWZhdWx0IHZhbHVlOiA0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRo
ZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1FTlVNX1ZBTFVFU19QRVJfTElO
RSAgID0gNAotCi0jIElmIHRoZSB0cmVldmlldyBpcyBlbmFibGVkIChzZWUgR0VORVJBVEVfVFJF
RVZJRVcpIHRoZW4gdGhpcyB0YWcgY2FuIGJlIHVzZWQKLSMgdG8gc2V0IHRoZSBpbml0aWFsIHdp
ZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBmcmFtZSBpbiB3aGljaCB0aGUgdHJlZSBpcyBzaG93bi4K
LSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTUwMCwgZGVmYXVsdCB2YWx1ZTog
MjUwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBz
ZXQgdG8gWUVTLgotCi1UUkVFVklFV19XSURUSCAgICAgICAgID0gMjUwCi0KLSMgV2hlbiB0aGUg
RVhUX0xJTktTX0lOX1dJTkRPVyBvcHRpb24gaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgb3Bl
biBsaW5rcyB0bwotIyBleHRlcm5hbCBzeW1ib2xzIGltcG9ydGVkIHZpYSB0YWcgZmlsZXMgaW4g
YSBzZXBhcmF0ZSB3aW5kb3cuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KLQot
RVhUX0xJTktTX0lOX1dJTkRPVyAgICA9IE5PCi0KLSMgVXNlIHRoaXMgdGFnIHRvIGNoYW5nZSB0
aGUgZm9udCBzaXplIG9mIExhVGVYIGZvcm11bGFzIGluY2x1ZGVkIGFzIGltYWdlcyBpbgotIyB0
aGUgSFRNTCBkb2N1bWVudGF0aW9uLiBXaGVuIHlvdSBjaGFuZ2UgdGhlIGZvbnQgc2l6ZSBhZnRl
ciBhIHN1Y2Nlc3NmdWwKLSMgZG94eWdlbiBydW4geW91IG5lZWQgdG8gbWFudWFsbHkgcmVtb3Zl
IGFueSBmb3JtXyoucG5nIGltYWdlcyBmcm9tIHRoZSBIVE1MCi0jIG91dHB1dCBkaXJlY3Rvcnkg
dG8gZm9yY2UgdGhlbSB0byBiZSByZWdlbmVyYXRlZC4KLSMgTWluaW11bSB2YWx1ZTogOCwgbWF4
aW11bSB2YWx1ZTogNTAsIGRlZmF1bHQgdmFsdWU6IDEwLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1GT1JNVUxBX0ZPTlRT
SVpFICAgICAgID0gMTAKLQotIyBVc2UgdGhlIEZPUk1VTEFfVFJBTlBBUkVOVCB0YWcgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBpbWFnZXMKLSMgZ2VuZXJhdGVkIGZvciBmb3JtdWxh
cyBhcmUgdHJhbnNwYXJlbnQgUE5Hcy4gVHJhbnNwYXJlbnQgUE5HcyBhcmUgbm90Ci0jIHN1cHBv
cnRlZCBwcm9wZXJseSBmb3IgSUUgNi4wLCBidXQgYXJlIHN1cHBvcnRlZCBvbiBhbGwgbW9kZXJu
IGJyb3dzZXJzLgotIwotIyBOb3RlIHRoYXQgd2hlbiBjaGFuZ2luZyB0aGlzIG9wdGlvbiB5b3Ug
bmVlZCB0byBkZWxldGUgYW55IGZvcm1fKi5wbmcgZmlsZXMgaW4KLSMgdGhlIEhUTUwgb3V0cHV0
IGRpcmVjdG9yeSBiZWZvcmUgdGhlIGNoYW5nZXMgaGF2ZSBlZmZlY3QuCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU
RV9IVE1MIGlzIHNldCB0byBZRVMuCi0KLUZPUk1VTEFfVFJBTlNQQVJFTlQgICAgPSBZRVMKLQot
IyBFbmFibGUgdGhlIFVTRV9NQVRISkFYIG9wdGlvbiB0byByZW5kZXIgTGFUZVggZm9ybXVsYXMg
dXNpbmcgTWF0aEpheCAoc2VlCi0jIGh0dHA6Ly93d3cubWF0aGpheC5vcmcpIHdoaWNoIHVzZXMg
Y2xpZW50IHNpZGUgSmF2YVNjcmlwdCBmb3IgdGhlIHJlbmRlcmluZwotIyBpbnN0ZWFkIG9mIHVz
aW5nIHByZXJlbmRlcmVkIGJpdG1hcHMuIFVzZSB0aGlzIGlmIHlvdSBkbyBub3QgaGF2ZSBMYVRl
WAotIyBpbnN0YWxsZWQgb3IgaWYgeW91IHdhbnQgdG8gZm9ybXVsYXMgbG9vayBwcmV0dGllciBp
biB0aGUgSFRNTCBvdXRwdXQuIFdoZW4KLSMgZW5hYmxlZCB5b3UgbWF5IGFsc28gbmVlZCB0byBp
bnN0YWxsIE1hdGhKYXggc2VwYXJhdGVseSBhbmQgY29uZmlndXJlIHRoZSBwYXRoCi0jIHRvIGl0
IHVzaW5nIHRoZSBNQVRISkFYX1JFTFBBVEggb3B0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlz
IHNldCB0byBZRVMuCi0KLVVTRV9NQVRISkFYICAgICAgICAgICAgPSBOTwotCi0jIFdoZW4gTWF0
aEpheCBpcyBlbmFibGVkIHlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0IG91dHB1dCBmb3JtYXQgdG8g
YmUgdXNlZCBmb3IKLSMgdGhlIE1hdGhKYXggb3V0cHV0LiBTZWUgdGhlIE1hdGhKYXggc2l0ZSAo
c2VlOgotIyBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qvb3V0cHV0Lmh0bWwpIGZv
ciBtb3JlIGRldGFpbHMuCi0jIFBvc3NpYmxlIHZhbHVlcyBhcmU6IEhUTUwtQ1NTICh3aGljaCBp
cyBzbG93ZXIsIGJ1dCBoYXMgdGhlIGJlc3QKLSMgY29tcGF0aWJpbGl0eSksIE5hdGl2ZU1NTCAo
aS5lLiBNYXRoTUwpIGFuZCBTVkcuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBIVE1MLUNTUy4K
LSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZ
RVMuCi0KLU1BVEhKQVhfRk9STUFUICAgICAgICAgPSBIVE1MLUNTUwotCi0jIFdoZW4gTWF0aEph
eCBpcyBlbmFibGVkIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIHJlbGF0aXZlIHRv
IHRoZSBIVE1MCi0jIG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgdGhlIE1BVEhKQVhfUkVMUEFUSCBv
cHRpb24uIFRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkKLSMgc2hvdWxkIGNvbnRhaW4gdGhlIE1h
dGhKYXguanMgc2NyaXB0LiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBtYXRoamF4IGRpcmVjdG9yeQot
IyBpcyBsb2NhdGVkIGF0IHRoZSBzYW1lIGxldmVsIGFzIHRoZSBIVE1MIG91dHB1dCBkaXJlY3Rv
cnksIHRoZW4KLSMgTUFUSEpBWF9SRUxQQVRIIHNob3VsZCBiZSAuLi9tYXRoamF4LiBUaGUgZGVm
YXVsdCB2YWx1ZSBwb2ludHMgdG8gdGhlIE1hdGhKYXgKLSMgQ29udGVudCBEZWxpdmVyeSBOZXR3
b3JrIHNvIHlvdSBjYW4gcXVpY2tseSBzZWUgdGhlIHJlc3VsdCB3aXRob3V0IGluc3RhbGxpbmcK
LSMgTWF0aEpheC4gSG93ZXZlciwgaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gaW5zdGFs
bCBhIGxvY2FsIGNvcHkgb2YKLSMgTWF0aEpheCBmcm9tIGh0dHA6Ly93d3cubWF0aGpheC5vcmcg
YmVmb3JlIGRlcGxveW1lbnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBodHRwOi8vY2RuLm1h
dGhqYXgub3JnL21hdGhqYXgvbGF0ZXN0LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0
YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4KLQotTUFUSEpBWF9SRUxQQVRIICAgICAgICA9
IGh0dHA6Ly9jZG4ubWF0aGpheC5vcmcvbWF0aGpheC9sYXRlc3QKLQotIyBUaGUgTUFUSEpBWF9F
WFRFTlNJT05TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIE1hdGhKYXgK
LSMgZXh0ZW5zaW9uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgZHVyaW5nIE1hdGhKYXgg
cmVuZGVyaW5nLiBGb3IgZXhhbXBsZQotIyBNQVRISkFYX0VYVEVOU0lPTlMgPSBUZVgvQU1TbWF0
aCBUZVgvQU1Tc3ltYm9scwotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgVVNFX01B
VEhKQVggaXMgc2V0IHRvIFlFUy4KLQotTUFUSEpBWF9FWFRFTlNJT05TICAgICA9Ci0KLSMgVGhl
IE1BVEhKQVhfQ09ERUZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBmaWxlIHdpdGgg
amF2YXNjcmlwdCBwaWVjZXMKLSMgb2YgY29kZSB0aGF0IHdpbGwgYmUgdXNlZCBvbiBzdGFydHVw
IG9mIHRoZSBNYXRoSmF4IGNvZGUuIFNlZSB0aGUgTWF0aEpheCBzaXRlCi0jIChzZWU6IGh0dHA6
Ly9kb2NzLm1hdGhqYXgub3JnL2VuL2xhdGVzdC9vdXRwdXQuaHRtbCkgZm9yIG1vcmUgZGV0YWls
cy4gRm9yIGFuCi0jIGV4YW1wbGUgc2VlIHRoZSBkb2N1bWVudGF0aW9uLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4KLQotTUFUSEpB
WF9DT0RFRklMRSAgICAgICA9Ci0KLSMgV2hlbiB0aGUgU0VBUkNIRU5HSU5FIHRhZyBpcyBlbmFi
bGVkIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHNlYXJjaCBib3ggZm9yCi0jIHRoZSBIVE1MIG91
dHB1dC4gVGhlIHVuZGVybHlpbmcgc2VhcmNoIGVuZ2luZSB1c2VzIGphdmFzY3JpcHQgYW5kIERI
VE1MIGFuZAotIyBzaG91bGQgd29yayBvbiBhbnkgbW9kZXJuIGJyb3dzZXIuIE5vdGUgdGhhdCB3
aGVuIHVzaW5nIEhUTUwgaGVscAotIyAoR0VORVJBVEVfSFRNTEhFTFApLCBRdCBoZWxwIChHRU5F
UkFURV9RSFApLCBvciBkb2NzZXRzIChHRU5FUkFURV9ET0NTRVQpCi0jIHRoZXJlIGlzIGFscmVh
ZHkgYSBzZWFyY2ggZnVuY3Rpb24gc28gdGhpcyBvbmUgc2hvdWxkIHR5cGljYWxseSBiZSBkaXNh
YmxlZC4KLSMgRm9yIGxhcmdlIHByb2plY3RzIHRoZSBqYXZhc2NyaXB0IGJhc2VkIHNlYXJjaCBl
bmdpbmUgY2FuIGJlIHNsb3csIHRoZW4KLSMgZW5hYmxpbmcgU0VSVkVSX0JBU0VEX1NFQVJDSCBt
YXkgcHJvdmlkZSBhIGJldHRlciBzb2x1dGlvbi4gSXQgaXMgcG9zc2libGUgdG8KLSMgc2VhcmNo
IHVzaW5nIHRoZSBrZXlib2FyZDsgdG8ganVtcCB0byB0aGUgc2VhcmNoIGJveCB1c2UgPGFjY2Vz
cyBrZXk+ICsgUwotIyAod2hhdCB0aGUgPGFjY2VzcyBrZXk+IGlzIGRlcGVuZHMgb24gdGhlIE9T
IGFuZCBicm93c2VyLCBidXQgaXQgaXMgdHlwaWNhbGx5Ci0jIDxDVFJMPiwgPEFMVD4vPG9wdGlv
bj4sIG9yIGJvdGgpLiBJbnNpZGUgdGhlIHNlYXJjaCBib3ggdXNlIHRoZSA8Y3Vyc29yIGRvd24K
LSMga2V5PiB0byBqdW1wIGludG8gdGhlIHNlYXJjaCByZXN1bHRzIHdpbmRvdywgdGhlIHJlc3Vs
dHMgY2FuIGJlIG5hdmlnYXRlZAotIyB1c2luZyB0aGUgPGN1cnNvciBrZXlzPi4gUHJlc3MgPEVu
dGVyPiB0byBzZWxlY3QgYW4gaXRlbSBvciA8ZXNjYXBlPiB0byBjYW5jZWwKLSMgdGhlIHNlYXJj
aC4gVGhlIGZpbHRlciBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCB3aGVuIHRoZSBjdXJzb3IgaXMg
aW5zaWRlIHRoZQotIyBzZWFyY2ggYm94IGJ5IHByZXNzaW5nIDxTaGlmdD4rPGN1cnNvciBkb3du
Pi4gQWxzbyBoZXJlIHVzZSB0aGUgPGN1cnNvciBrZXlzPgotIyB0byBzZWxlY3QgYSBmaWx0ZXIg
YW5kIDxFbnRlcj4gb3IgPGVzY2FwZT4gdG8gYWN0aXZhdGUgb3IgY2FuY2VsIHRoZSBmaWx0ZXIK
LSMgb3B0aW9uLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgotCi1TRUFSQ0hF
TkdJTkUgICAgICAgICAgID0gTk8KLQotIyBXaGVuIHRoZSBTRVJWRVJfQkFTRURfU0VBUkNIIHRh
ZyBpcyBlbmFibGVkIHRoZSBzZWFyY2ggZW5naW5lIHdpbGwgYmUKLSMgaW1wbGVtZW50ZWQgdXNp
bmcgYSB3ZWIgc2VydmVyIGluc3RlYWQgb2YgYSB3ZWIgY2xpZW50IHVzaW5nIEphdmFTY3JpcHQu
IFRoZXJlCi0jIGFyZSB0d28gZmxhdm91cnMgb2Ygd2ViIHNlcnZlciBiYXNlZCBzZWFyY2hpbmcg
ZGVwZW5kaW5nIG9uIHRoZQotIyBFWFRFUk5BTF9TRUFSQ0ggc2V0dGluZy4gV2hlbiBkaXNhYmxl
ZCwgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgUEhQIHNjcmlwdCBmb3IKLSMgc2VhcmNoaW5nIGFu
ZCBhbiBpbmRleCBmaWxlIHVzZWQgYnkgdGhlIHNjcmlwdC4gV2hlbiBFWFRFUk5BTF9TRUFSQ0gg
aXMKLSMgZW5hYmxlZCB0aGUgaW5kZXhpbmcgYW5kIHNlYXJjaGluZyBuZWVkcyB0byBiZSBwcm92
aWRlZCBieSBleHRlcm5hbCB0b29scy4gU2VlCi0jIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRl
eGluZyBhbmQgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6
IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNl
dCB0byBZRVMuCi0KLVNFUlZFUl9CQVNFRF9TRUFSQ0ggICAgPSBOTwotCi0jIFdoZW4gRVhURVJO
QUxfU0VBUkNIIHRhZyBpcyBlbmFibGVkIGRveHlnZW4gd2lsbCBubyBsb25nZXIgZ2VuZXJhdGUg
dGhlIFBIUAotIyBzY3JpcHQgZm9yIHNlYXJjaGluZy4gSW5zdGVhZCB0aGUgc2VhcmNoIHJlc3Vs
dHMgYXJlIHdyaXR0ZW4gdG8gYW4gWE1MIGZpbGUKLSMgd2hpY2ggbmVlZHMgdG8gYmUgcHJvY2Vz
c2VkIGJ5IGFuIGV4dGVybmFsIGluZGV4ZXIuIERveHlnZW4gd2lsbCBpbnZva2UgYW4KLSMgZXh0
ZXJuYWwgc2VhcmNoIGVuZ2luZSBwb2ludGVkIHRvIGJ5IHRoZSBTRUFSQ0hFTkdJTkVfVVJMIG9w
dGlvbiB0byBvYnRhaW4gdGhlCi0jIHNlYXJjaCByZXN1bHRzLgotIwotIyBEb3h5Z2VuIHNoaXBz
IHdpdGggYW4gZXhhbXBsZSBpbmRleGVyICggZG94eWluZGV4ZXIpIGFuZCBzZWFyY2ggZW5naW5l
Ci0jIChkb3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBvcGVuIHNvdXJjZSBz
ZWFyY2ggZW5naW5lIGxpYnJhcnkKLSMgWGFwaWFuIChzZWU6IGh0dHA6Ly94YXBpYW4ub3JnLyku
Ci0jCi0jIFNlZSB0aGUgc2VjdGlvbiAiRXh0ZXJuYWwgSW5kZXhpbmcgYW5kIFNlYXJjaGluZyIg
Zm9yIGRldGFpbHMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgotCi1FWFRFUk5B
TF9TRUFSQ0ggICAgICAgID0gTk8KLQotIyBUaGUgU0VBUkNIRU5HSU5FX1VSTCBzaG91bGQgcG9p
bnQgdG8gYSBzZWFyY2ggZW5naW5lIGhvc3RlZCBieSBhIHdlYiBzZXJ2ZXIKLSMgd2hpY2ggd2ls
bCByZXR1cm4gdGhlIHNlYXJjaCByZXN1bHRzIHdoZW4gRVhURVJOQUxfU0VBUkNIIGlzIGVuYWJs
ZWQuCi0jCi0jIERveHlnZW4gc2hpcHMgd2l0aCBhbiBleGFtcGxlIGluZGV4ZXIgKCBkb3h5aW5k
ZXhlcikgYW5kIHNlYXJjaCBlbmdpbmUKLSMgKGRveHlzZWFyY2guY2dpKSB3aGljaCBhcmUgYmFz
ZWQgb24gdGhlIG9wZW4gc291cmNlIHNlYXJjaCBlbmdpbmUgbGlicmFyeQotIyBYYXBpYW4gKHNl
ZTogaHR0cDovL3hhcGlhbi5vcmcvKS4gU2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGlu
ZyBhbmQKLSMgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgotCi1TRUFSQ0hFTkdJTkVfVVJM
ICAgICAgID0KLQotIyBXaGVuIFNFUlZFUl9CQVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJD
SCBhcmUgYm90aCBlbmFibGVkIHRoZSB1bmluZGV4ZWQKLSMgc2VhcmNoIGRhdGEgaXMgd3JpdHRl
biB0byBhIGZpbGUgZm9yIGluZGV4aW5nIGJ5IGFuIGV4dGVybmFsIHRvb2wuIFdpdGggdGhlCi0j
IFNFQVJDSERBVEFfRklMRSB0YWcgdGhlIG5hbWUgb2YgdGhpcyBmaWxlIGNhbiBiZSBzcGVjaWZp
ZWQuCi0jIFRoZSBkZWZhdWx0IGZpbGUgaXM6IHNlYXJjaGRhdGEueG1sLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0KLVNFQVJD
SERBVEFfRklMRSAgICAgICAgPSBzZWFyY2hkYXRhLnhtbAotCi0jIFdoZW4gU0VSVkVSX0JBU0VE
X1NFQVJDSCBhbmQgRVhURVJOQUxfU0VBUkNIIGFyZSBib3RoIGVuYWJsZWQgdGhlCi0jIEVYVEVS
TkFMX1NFQVJDSF9JRCB0YWcgY2FuIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBmb3IgdGhlIHBy
b2plY3QuIFRoaXMgaXMKLSMgdXNlZnVsIGluIGNvbWJpbmF0aW9uIHdpdGggRVhUUkFfU0VBUkNI
X01BUFBJTkdTIHRvIHNlYXJjaCB0aHJvdWdoIG11bHRpcGxlCi0jIHByb2plY3RzIGFuZCByZWRp
cmVjdCB0aGUgcmVzdWx0cyBiYWNrIHRvIHRoZSByaWdodCBwcm9qZWN0LgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCi0KLUVYVEVS
TkFMX1NFQVJDSF9JRCAgICAgPQotCi0jIFRoZSBFWFRSQV9TRUFSQ0hfTUFQUElOR1MgdGFnIGNh
biBiZSB1c2VkIHRvIGVuYWJsZSBzZWFyY2hpbmcgdGhyb3VnaCBkb3h5Z2VuCi0jIHByb2plY3Rz
IG90aGVyIHRoYW4gdGhlIG9uZSBkZWZpbmVkIGJ5IHRoaXMgY29uZmlndXJhdGlvbiBmaWxlLCBi
dXQgdGhhdCBhcmUKLSMgYWxsIGFkZGVkIHRvIHRoZSBzYW1lIGV4dGVybmFsIHNlYXJjaCBpbmRl
eC4gRWFjaCBwcm9qZWN0IG5lZWRzIHRvIGhhdmUgYQotIyB1bmlxdWUgaWQgc2V0IHZpYSBFWFRF
Uk5BTF9TRUFSQ0hfSUQuIFRoZSBzZWFyY2ggbWFwcGluZyB0aGVuIG1hcHMgdGhlIGlkIG9mCi0j
IHRvIGEgcmVsYXRpdmUgbG9jYXRpb24gd2hlcmUgdGhlIGRvY3VtZW50YXRpb24gY2FuIGJlIGZv
dW5kLiBUaGUgZm9ybWF0IGlzOgotIyBFWFRSQV9TRUFSQ0hfTUFQUElOR1MgPSB0YWduYW1lMT1s
b2MxIHRhZ25hbWUyPWxvYzIgLi4uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBT
RUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KLQotRVhUUkFfU0VBUkNIX01BUFBJTkdTICA9Ci0K
LSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8g
dGhlIExhVGVYIG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFU
RV9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgTGFUZVggb3V0
cHV0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1HRU5FUkFURV9MQVRFWCAgICAg
ICAgID0gTk8KLQotIyBUaGUgTEFURVhfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hl
cmUgdGhlIExhVGVYIGRvY3Mgd2lsbCBiZSBwdXQuIElmIGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBl
bnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250
IG9mCi0jIGl0LgotIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IGxhdGV4LgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KLQot
TEFURVhfT1VUUFVUICAgICAgICAgICA9IGxhdGV4Ci0KLSMgVGhlIExBVEVYX0NNRF9OQU1FIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBMYVRlWCBjb21tYW5kIG5hbWUgdG8gYmUKLSMg
aW52b2tlZC4KLSMKLSMgTm90ZSB0aGF0IHdoZW4gZW5hYmxpbmcgVVNFX1BERkxBVEVYIHRoaXMg
b3B0aW9uIGlzIG9ubHkgdXNlZCBmb3IgZ2VuZXJhdGluZwotIyBiaXRtYXBzIGZvciBmb3JtdWxh
cyBpbiB0aGUgSFRNTCBvdXRwdXQsIGJ1dCBub3QgaW4gdGhlIE1ha2VmaWxlIHRoYXQgaXMKLSMg
d3JpdHRlbiB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4KLSMgVGhlIGRlZmF1bHQgZmlsZSBpczog
bGF0ZXguCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBp
cyBzZXQgdG8gWUVTLgotCi1MQVRFWF9DTURfTkFNRSAgICAgICAgID0gbGF0ZXgKLQotIyBUaGUg
TUFLRUlOREVYX0NNRF9OQU1FIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21tYW5k
IG5hbWUgdG8gZ2VuZXJhdGUKLSMgaW5kZXggZm9yIExhVGVYLgotIyBUaGUgZGVmYXVsdCBmaWxl
IGlzOiBtYWtlaW5kZXguCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU
RV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1NQUtFSU5ERVhfQ01EX05BTUUgICAgID0gbWFrZWlu
ZGV4Ci0KLSMgSWYgdGhlIENPTVBBQ1RfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiBn
ZW5lcmF0ZXMgbW9yZSBjb21wYWN0IExhVGVYCi0jIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNl
ZnVsIGZvciBzbWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gc2F2ZSBzb21lCi0jIHRyZWVz
IGluIGdlbmVyYWwuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUNPTVBB
Q1RfTEFURVggICAgICAgICAgPSBOTwotCi0jIFRoZSBQQVBFUl9UWVBFIHRhZyBjYW4gYmUgdXNl
ZCB0byBzZXQgdGhlIHBhcGVyIHR5cGUgdGhhdCBpcyB1c2VkIGJ5IHRoZQotIyBwcmludGVyLgot
IyBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBhNCAoMjEwIHggMjk3IG1tKSwgbGV0dGVyICg4LjUgeCAx
MSBpbmNoZXMpLCBsZWdhbCAoOC41IHgKLSMgMTQgaW5jaGVzKSBhbmQgZXhlY3V0aXZlICg3LjI1
IHggMTAuNSBpbmNoZXMpLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogYTQuCi0jIFRoaXMgdGFn
IHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1Q
QVBFUl9UWVBFICAgICAgICAgICAgID0gYTR3aWRlCi0KLSMgVGhlIEVYVFJBX1BBQ0tBR0VTIHRh
ZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIExhVGVYIHBhY2thZ2UgbmFtZXMK
LSMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIExhVGVYIG91dHB1dC4gVG8gZ2V0IHRo
ZSB0aW1lcyBmb250IGZvcgotIyBpbnN0YW5jZSB5b3UgY2FuIHNwZWNpZnkKLSMgRVhUUkFfUEFD
S0FHRVM9dGltZXMKLSMgSWYgbGVmdCBibGFuayBubyBleHRyYSBwYWNrYWdlcyB3aWxsIGJlIGlu
Y2x1ZGVkLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVgg
aXMgc2V0IHRvIFlFUy4KLQotRVhUUkFfUEFDS0FHRVMgICAgICAgICA9Ci0KLSMgVGhlIExBVEVY
X0hFQURFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHBlcnNvbmFsIExhVGVYIGhlYWRl
ciBmb3IgdGhlCi0jIGdlbmVyYXRlZCBMYVRlWCBkb2N1bWVudC4gVGhlIGhlYWRlciBzaG91bGQg
Y29udGFpbiBldmVyeXRoaW5nIHVudGlsIHRoZSBmaXJzdAotIyBjaGFwdGVyLiBJZiBpdCBpcyBs
ZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJkIGhlYWRlci4gU2VlCi0j
IHNlY3Rpb24gIkRveHlnZW4gdXNhZ2UiIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbGV0IGRv
eHlnZW4gd3JpdGUgdGhlCi0jIGRlZmF1bHQgaGVhZGVyIHRvIGEgc2VwYXJhdGUgZmlsZS4KLSMK
LSMgTm90ZTogT25seSB1c2UgYSB1c2VyLWRlZmluZWQgaGVhZGVyIGlmIHlvdSBrbm93IHdoYXQg
eW91IGFyZSBkb2luZyEgVGhlCi0jIGZvbGxvd2luZyBjb21tYW5kcyBoYXZlIGEgc3BlY2lhbCBt
ZWFuaW5nIGluc2lkZSB0aGUgaGVhZGVyOiAkdGl0bGUsCi0jICRkYXRldGltZSwgJGRhdGUsICRk
b3h5Z2VudmVyc2lvbiwgJHByb2plY3RuYW1lLCAkcHJvamVjdG51bWJlci4gRG94eWdlbiB3aWxs
Ci0jIHJlcGxhY2UgdGhlbSBieSByZXNwZWN0aXZlbHkgdGhlIHRpdGxlIG9mIHRoZSBwYWdlLCB0
aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLAotIyBvbmx5IHRoZSBjdXJyZW50IGRhdGUsIHRoZSB2
ZXJzaW9uIG51bWJlciBvZiBkb3h5Z2VuLCB0aGUgcHJvamVjdCBuYW1lIChzZWUKLSMgUFJPSkVD
VF9OQU1FKSwgb3IgdGhlIHByb2plY3QgbnVtYmVyIChzZWUgUFJPSkVDVF9OVU1CRVIpLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlF
Uy4KLQotTEFURVhfSEVBREVSICAgICAgICAgICA9Ci0KLSMgVGhlIExBVEVYX0ZPT1RFUiB0YWcg
Y2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHBlcnNvbmFsIExhVGVYIGZvb3RlciBmb3IgdGhlCi0j
IGdlbmVyYXRlZCBMYVRlWCBkb2N1bWVudC4gVGhlIGZvb3RlciBzaG91bGQgY29udGFpbiBldmVy
eXRoaW5nIGFmdGVyIHRoZSBsYXN0Ci0jIGNoYXB0ZXIuIElmIGl0IGlzIGxlZnQgYmxhbmsgZG94
eWdlbiB3aWxsIGdlbmVyYXRlIGEgc3RhbmRhcmQgZm9vdGVyLgotIwotIyBOb3RlOiBPbmx5IHVz
ZSBhIHVzZXItZGVmaW5lZCBmb290ZXIgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIQot
IyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRv
IFlFUy4KLQotTEFURVhfRk9PVEVSICAgICAgICAgICA9Ci0KLSMgVGhlIExBVEVYX0VYVFJBX0ZJ
TEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4dHJhIGltYWdlcyBv
cgotIyBvdGhlciBzb3VyY2UgZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCB0byB0aGUgTEFU
RVhfT1VUUFVUIG91dHB1dAotIyBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGUgZmlsZXMgd2lsbCBi
ZSBjb3BpZWQgYXMtaXM7IHRoZXJlIGFyZSBubyBjb21tYW5kcyBvcgotIyBtYXJrZXJzIGF2YWls
YWJsZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlz
IHNldCB0byBZRVMuCi0KLUxBVEVYX0VYVFJBX0ZJTEVTICAgICAgPQotCi0jIElmIHRoZSBQREZf
SFlQRVJMSU5LUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlIExhVGVYIHRoYXQgaXMgZ2VuZXJhdGVk
IGlzCi0jIHByZXBhcmVkIGZvciBjb252ZXJzaW9uIHRvIFBERiAodXNpbmcgcHMycGRmIG9yIHBk
ZmxhdGV4KS4gVGhlIFBERiBmaWxlIHdpbGwKLSMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRo
ZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIFRoaXMKLSMgbWFrZXMg
dGhlIG91dHB1dCBzdWl0YWJsZSBmb3Igb25saW5lIGJyb3dzaW5nIHVzaW5nIGEgUERGIHZpZXdl
ci4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLVBERl9IWVBFUkxJTktT
ICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBMQVRFWF9QREZMQVRFWCB0YWcgaXMgc2V0IHRvIFlF
UywgZG94eWdlbiB3aWxsIHVzZSBwZGZsYXRleCB0byBnZW5lcmF0ZQotIyB0aGUgUERGIGZpbGUg
ZGlyZWN0bHkgZnJvbSB0aGUgTGFUZVggZmlsZXMuIFNldCB0aGlzIG9wdGlvbiB0byBZRVMgdG8g
Z2V0IGEKLSMgaGlnaGVyIHF1YWxpdHkgUERGIGRvY3VtZW50YXRpb24uCi0jIFRoZSBkZWZhdWx0
IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFU
RV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1VU0VfUERGTEFURVggICAgICAgICAgID0gTk8KLQot
IyBJZiB0aGUgTEFURVhfQkFUQ0hNT0RFIHRhZyBpcyBzZXQgdG8gWUVTLCBkb3h5Z2VuIHdpbGwg
YWRkIHRoZSBcYmF0Y2htb2RlCi0jIGNvbW1hbmQgdG8gdGhlIGdlbmVyYXRlZCBMYVRlWCBmaWxl
cy4gVGhpcyB3aWxsIGluc3RydWN0IExhVGVYIHRvIGtlZXAgcnVubmluZwotIyBpZiBlcnJvcnMg
b2NjdXIsIGluc3RlYWQgb2YgYXNraW5nIHRoZSB1c2VyIGZvciBoZWxwLiBUaGlzIG9wdGlvbiBp
cyBhbHNvIHVzZWQKLSMgd2hlbiBnZW5lcmF0aW5nIGZvcm11bGFzIGluIEhUTUwuCi0jIFRoZSBk
ZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdF
TkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCi0KLUxBVEVYX0JBVENITU9ERSAgICAgICAgPSBO
TwotCi0jIElmIHRoZSBMQVRFWF9ISURFX0lORElDRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBk
b3h5Z2VuIHdpbGwgbm90IGluY2x1ZGUgdGhlCi0jIGluZGV4IGNoYXB0ZXJzIChzdWNoIGFzIEZp
bGUgSW5kZXgsIENvbXBvdW5kIEluZGV4LCBldGMuKSBpbiB0aGUgb3V0cHV0LgotIyBUaGUgZGVm
YXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5F
UkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9ISURFX0lORElDRVMgICAgID0gTk8K
LQotIyBJZiB0aGUgTEFURVhfU09VUkNFX0NPREUgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5
Z2VuIHdpbGwgaW5jbHVkZSBzb3VyY2UKLSMgY29kZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcg
aW4gdGhlIExhVGVYIG91dHB1dC4KLSMKLSMgTm90ZSB0aGF0IHdoaWNoIHNvdXJjZXMgYXJlIHNo
b3duIGFsc28gZGVwZW5kcyBvbiBvdGhlciBzZXR0aW5ncyBzdWNoIGFzCi0jIFNPVVJDRV9CUk9X
U0VSLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgotCi1MQVRFWF9TT1VSQ0Vf
Q09ERSAgICAgID0gTk8KLQotIyBUaGUgTEFURVhfQklCX1NUWUxFIHRhZyBjYW4gYmUgdXNlZCB0
byBzcGVjaWZ5IHRoZSBzdHlsZSB0byB1c2UgZm9yIHRoZQotIyBiaWJsaW9ncmFwaHksIGUuZy4g
cGxhaW5uYXQsIG9yIGllZWV0ci4gU2VlCi0jIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv
QmliVGVYIGFuZCBcY2l0ZSBmb3IgbW9yZSBpbmZvLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczog
cGxhaW4uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBp
cyBzZXQgdG8gWUVTLgotCi1MQVRFWF9CSUJfU1RZTEUgICAgICAgID0gcGxhaW4KLQotIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUlRG
IG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHRoZSBHRU5FUkFURV9SVEYgdGFn
IGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIFJURiBvdXRwdXQuIFRoZQotIyBS
VEYgb3V0cHV0IGlzIG9wdGltaXplZCBmb3IgV29yZCA5NyBhbmQgbWF5IG5vdCBsb29rIHRvbyBw
cmV0dHkgd2l0aCBvdGhlciBSVEYKLSMgcmVhZGVycy9lZGl0b3JzLgotIyBUaGUgZGVmYXVsdCB2
YWx1ZSBpczogTk8uCi0KLUdFTkVSQVRFX1JURiAgICAgICAgICAgPSBOTwotCi0jIFRoZSBSVEZf
T1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIFJURiBkb2NzIHdpbGwgYmUg
cHV0LiBJZiBhCi0jIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVU
X0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgotIyBpdC4KLSMgVGhlIGRlZmF1bHQg
ZGlyZWN0b3J5IGlzOiBydGYuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5F
UkFURV9SVEYgaXMgc2V0IHRvIFlFUy4KLQotUlRGX09VVFBVVCAgICAgICAgICAgICA9IHJ0Zgot
Ci0jIElmIHRoZSBDT01QQUNUX1JURiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRl
cyBtb3JlIGNvbXBhY3QgUlRGCi0jIGRvY3VtZW50cy4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBz
bWFsbCBwcm9qZWN0cyBhbmQgbWF5IGhlbHAgdG8gc2F2ZSBzb21lCi0jIHRyZWVzIGluIGdlbmVy
YWwuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1DT01QQUNUX1JURiAgICAg
ICAgICAgID0gTk8KLQotIyBJZiB0aGUgUlRGX0hZUEVSTElOS1MgdGFnIGlzIHNldCB0byBZRVMs
IHRoZSBSVEYgdGhhdCBpcyBnZW5lcmF0ZWQgd2lsbAotIyBjb250YWluIGh5cGVybGluayBmaWVs
ZHMuIFRoZSBSVEYgZmlsZSB3aWxsIGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTAot
IyBvdXRwdXQpIGluc3RlYWQgb2YgcGFnZSByZWZlcmVuY2VzLiBUaGlzIG1ha2VzIHRoZSBvdXRw
dXQgc3VpdGFibGUgZm9yIG9ubGluZQotIyBicm93c2luZyB1c2luZyBXb3JkIG9yIHNvbWUgb3Ro
ZXIgV29yZCBjb21wYXRpYmxlIHJlYWRlcnMgdGhhdCBzdXBwb3J0IHRob3NlCi0jIGZpZWxkcy4K
LSMKLSMgTm90ZTogV29yZFBhZCAod3JpdGUpIGFuZCBvdGhlcnMgZG8gbm90IHN1cHBvcnQgbGlu
a3MuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgotCi1SVEZfSFlQRVJMSU5LUyAg
ICAgICAgID0gTk8KLQotIyBMb2FkIHN0eWxlc2hlZXQgZGVmaW5pdGlvbnMgZnJvbSBmaWxlLiBT
eW50YXggaXMgc2ltaWxhciB0byBkb3h5Z2VuJ3MgY29uZmlnCi0jIGZpbGUsIGkuZS4gYSBzZXJp
ZXMgb2YgYXNzaWdubWVudHMuIFlvdSBvbmx5IGhhdmUgdG8gcHJvdmlkZSByZXBsYWNlbWVudHMs
Ci0jIG1pc3NpbmcgZGVmaW5pdGlvbnMgYXJlIHNldCB0byB0aGVpciBkZWZhdWx0IHZhbHVlLgot
IwotIyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24g
aG93IHRvIGdlbmVyYXRlIHRoZQotIyBkZWZhdWx0IHN0eWxlIHNoZWV0IHRoYXQgZG94eWdlbiBu
b3JtYWxseSB1c2VzLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVf
UlRGIGlzIHNldCB0byBZRVMuCi0KLVJURl9TVFlMRVNIRUVUX0ZJTEUgICAgPQotCi0jIFNldCBv
cHRpb25hbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBSVEYgZG9jdW1l
bnQuIFN5bnRheCBpcwotIyBzaW1pbGFyIHRvIGRveHlnZW4ncyBjb25maWcgZmlsZS4gQSB0ZW1w
bGF0ZSBleHRlbnNpb25zIGZpbGUgY2FuIGJlIGdlbmVyYXRlZAotIyB1c2luZyBkb3h5Z2VuIC1l
IHJ0ZiBleHRlbnNpb25GaWxlLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VO
RVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCi0KLVJURl9FWFRFTlNJT05TX0ZJTEUgICAgPQotCi0j
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRo
ZSBtYW4gcGFnZSBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJB
VEVfTUFOIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBtYW4gcGFnZXMg
Zm9yCi0jIGNsYXNzZXMgYW5kIGZpbGVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0K
LUdFTkVSQVRFX01BTiAgICAgICAgICAgPSBOTwotCi0jIFRoZSBNQU5fT1VUUFVUIHRhZyBpcyB1
c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIG1hbiBwYWdlcyB3aWxsIGJlIHB1dC4gSWYgYQotIyBy
ZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2ls
bCBiZSBwdXQgaW4gZnJvbnQgb2YKLSMgaXQuIEEgZGlyZWN0b3J5IG1hbjMgd2lsbCBiZSBjcmVh
dGVkIGluc2lkZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieQotIyBNQU5fT1VUUFVULgotIyBU
aGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IG1hbi4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgotCi1NQU5fT1VUUFVUICAgICAgICAg
ICAgID0gbWFuCi0KLSMgVGhlIE1BTl9FWFRFTlNJT04gdGFnIGRldGVybWluZXMgdGhlIGV4dGVu
c2lvbiB0aGF0IGlzIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQKLSMgbWFuIHBhZ2VzLiBJbiBjYXNl
IHRoZSBtYW51YWwgc2VjdGlvbiBkb2VzIG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLCB0aGUgbnVt
YmVyCi0jIDMgaXMgcHJlcGVuZGVkLiBUaGUgZG90ICguKSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBNQU5fRVhURU5TSU9OIHRhZyBpcwotIyBvcHRpb25hbC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IC4zLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlz
IHNldCB0byBZRVMuCi0KLU1BTl9FWFRFTlNJT04gICAgICAgICAgPSAuMwotCi0jIElmIHRoZSBN
QU5fTElOS1MgdGFnIGlzIHNldCB0byBZRVMgYW5kIGRveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRw
dXQsIHRoZW4gaXQKLSMgd2lsbCBnZW5lcmF0ZSBvbmUgYWRkaXRpb25hbCBtYW4gZmlsZSBmb3Ig
ZWFjaCBlbnRpdHkgZG9jdW1lbnRlZCBpbiB0aGUgcmVhbAotIyBtYW4gcGFnZShzKS4gVGhlc2Ug
YWRkaXRpb25hbCBmaWxlcyBvbmx5IHNvdXJjZSB0aGUgcmVhbCBtYW4gcGFnZSwgYnV0IHdpdGhv
dXQKLSMgdGhlbSB0aGUgbWFuIGNvbW1hbmQgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgdGhlIGNv
cnJlY3QgcGFnZS4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1
aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuCi0KLU1BTl9MSU5L
UyAgICAgICAgICAgICAgPSBOTwotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRp
b24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBYTUwgb3V0cHV0Ci0jLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0KLSMgSWYgdGhlIEdFTkVSQVRFX1hNTCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwg
Z2VuZXJhdGUgYW4gWE1MIGZpbGUgdGhhdAotIyBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mIHRo
ZSBjb2RlIGluY2x1ZGluZyBhbGwgZG9jdW1lbnRhdGlvbi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUg
aXM6IE5PLgotCi1HRU5FUkFURV9YTUwgICAgICAgICAgID0gTk8KLQotIyBUaGUgWE1MX09VVFBV
VCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBYTUwgcGFnZXMgd2lsbCBiZSBwdXQu
IElmIGEKLSMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElS
RUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCi0jIGl0LgotIyBUaGUgZGVmYXVsdCBkaXJl
Y3RvcnkgaXM6IHhtbC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRF
X1hNTCBpcyBzZXQgdG8gWUVTLgotCi1YTUxfT1VUUFVUICAgICAgICAgICAgID0geG1sCi0KLSMg
SWYgdGhlIFhNTF9QUk9HUkFNTElTVElORyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwg
ZHVtcCB0aGUgcHJvZ3JhbQotIyBsaXN0aW5ncyAoaW5jbHVkaW5nIHN5bnRheCBoaWdobGlnaHRp
bmcgYW5kIGNyb3NzLXJlZmVyZW5jaW5nIGluZm9ybWF0aW9uKSB0bwotIyB0aGUgWE1MIG91dHB1
dC4gTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgd2lsbCBzaWduaWZpY2FudGx5IGluY3JlYXNlIHRo
ZSBzaXplCi0jIG9mIHRoZSBYTUwgb3V0cHV0LgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVT
LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfWE1MIGlzIHNldCB0
byBZRVMuCi0KLVhNTF9QUk9HUkFNTElTVElORyAgICAgPSBZRVMKLQotIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgRE9DQk9PSyBvdXRw
dXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUgR0VORVJBVEVfRE9DQk9PSyB0YWcg
aXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgRG9jYm9vayBmaWxlcwotIyB0aGF0
IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIFBERi4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5P
LgotCi1HRU5FUkFURV9ET0NCT09LICAgICAgID0gTk8KLQotIyBUaGUgRE9DQk9PS19PVVRQVVQg
dGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgRG9jYm9vayBwYWdlcyB3aWxsIGJlIHB1
dC4KLSMgSWYgYSByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9E
SVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4KLSMgZnJvbnQgb2YgaXQuCi0jIFRoZSBkZWZhdWx0IGRp
cmVjdG9yeSBpczogZG9jYm9vay4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdF
TkVSQVRFX0RPQ0JPT0sgaXMgc2V0IHRvIFlFUy4KLQotRE9DQk9PS19PVVRQVVQgICAgICAgICA9
IGRvY2Jvb2sKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDb25maWd1cmF0aW9uIG9wdGlvbnMg
Zm9yIHRoZSBBdXRvR2VuIERlZmluaXRpb25zIG91dHB1dAotIy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci0jIElmIHRoZSBHRU5FUkFURV9BVVRPR0VOX0RFRiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2Vu
IHdpbGwgZ2VuZXJhdGUgYW4gQXV0b0dlbgotIyBEZWZpbml0aW9ucyAoc2VlIGh0dHA6Ly9hdXRv
Z2VuLnNmLm5ldCkgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YKLSMgdGhlIGNv
ZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlz
IHN0aWxsCi0jIGV4cGVyaW1lbnRhbCBhbmQgaW5jb21wbGV0ZSBhdCB0aGUgbW9tZW50LgotIyBU
aGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0KLUdFTkVSQVRFX0FVVE9HRU5fREVGICAgPSBOTwot
Ci0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRv
IHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB0aGUg
R0VORVJBVEVfUEVSTE1PRCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUg
YSBQZXJsIG1vZHVsZQotIyBmaWxlIHRoYXQgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUg
Y29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uCi0jCi0jIE5vdGUgdGhhdCB0aGlzIGZl
YXR1cmUgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotR0VORVJBVEVfUEVSTE1PRCAgICAgICA9
IE5PCi0KLSMgSWYgdGhlIFBFUkxNT0RfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3
aWxsIGdlbmVyYXRlIHRoZSBuZWNlc3NhcnkKLSMgTWFrZWZpbGUgcnVsZXMsIFBlcmwgc2NyaXB0
cyBhbmQgTGFUZVggY29kZSB0byBiZSBhYmxlIHRvIGdlbmVyYXRlIFBERiBhbmQgRFZJCi0jIG91
dHB1dCBmcm9tIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlz
OiBOTy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0Qg
aXMgc2V0IHRvIFlFUy4KLQotUEVSTE1PRF9MQVRFWCAgICAgICAgICA9IE5PCi0KLSMgSWYgdGhl
IFBFUkxNT0RfUFJFVFRZIHRhZyBpcyBzZXQgdG8gWUVTIHRoZSBQZXJsIG1vZHVsZSBvdXRwdXQg
d2lsbCBiZSBuaWNlbHkKLSMgZm9ybWF0dGVkIHNvIGl0IGNhbiBiZSBwYXJzZWQgYnkgYSBodW1h
biByZWFkZXIuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvCi0jIHVuZGVyc3RhbmQgd2hh
dCBpcyBnb2luZyBvbi4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoaXMgdGFnIGlzIHNldCB0byBO
TyB0aGUKLSMgc2l6ZSBvZiB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbXVjaCBzbWFs
bGVyIGFuZCBQZXJsIHdpbGwgcGFyc2UgaXQKLSMganVzdCB0aGUgc2FtZS4KLSMgVGhlIGRlZmF1
bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVS
QVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4KLQotUEVSTE1PRF9QUkVUVFkgICAgICAgICA9IFlF
UwotCi0jIFRoZSBuYW1lcyBvZiB0aGUgbWFrZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRlZCBk
b3h5cnVsZXMubWFrZSBmaWxlIGFyZQotIyBwcmVmaXhlZCB3aXRoIHRoZSBzdHJpbmcgY29udGFp
bmVkIGluIFBFUkxNT0RfTUFLRVZBUl9QUkVGSVguIFRoaXMgaXMgdXNlZnVsCi0jIHNvIGRpZmZl
cmVudCBkb3h5cnVsZXMubWFrZSBmaWxlcyBpbmNsdWRlZCBieSB0aGUgc2FtZSBNYWtlZmlsZSBk
b24ndAotIyBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIHZhcmlhYmxlcy4KLSMgVGhpcyB0YWcgcmVx
dWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1BFUkxNT0QgaXMgc2V0IHRvIFlFUy4KLQotUEVS
TE1PRF9NQUtFVkFSX1BSRUZJWCA9Ci0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ29uZmlndXJh
dGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHByZXByb2Nlc3NvcgotIy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0jIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORyB0YWcgaXMgc2V0IHRvIFlFUyBk
b3h5Z2VuIHdpbGwgZXZhbHVhdGUgYWxsCi0jIEMtcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZm91
bmQgaW4gdGhlIHNvdXJjZXMgYW5kIGluY2x1ZGUgZmlsZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVl
IGlzOiBZRVMuCi0KLUVOQUJMRV9QUkVQUk9DRVNTSU5HICAgPSBZRVMKLQotIyBJZiB0aGUgTUFD
Uk9fRVhQQU5TSU9OIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBleHBhbmQgYWxsIG1h
Y3JvIG5hbWVzCi0jIGluIHRoZSBzb3VyY2UgY29kZS4gSWYgc2V0IHRvIE5PIG9ubHkgY29uZGl0
aW9uYWwgY29tcGlsYXRpb24gd2lsbCBiZQotIyBwZXJmb3JtZWQuIE1hY3JvIGV4cGFuc2lvbiBj
YW4gYmUgZG9uZSBpbiBhIGNvbnRyb2xsZWQgd2F5IGJ5IHNldHRpbmcKLSMgRVhQQU5EX09OTFlf
UFJFREVGIHRvIFlFUy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyBy
ZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4K
LQotTUFDUk9fRVhQQU5TSU9OICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBFWFBBTkRfT05MWV9Q
UkVERUYgYW5kIE1BQ1JPX0VYUEFOU0lPTiB0YWdzIGFyZSBib3RoIHNldCB0byBZRVMgdGhlbgot
IyB0aGUgbWFjcm8gZXhwYW5zaW9uIGlzIGxpbWl0ZWQgdG8gdGhlIG1hY3JvcyBzcGVjaWZpZWQg
d2l0aCB0aGUgUFJFREVGSU5FRCBhbmQKLSMgRVhQQU5EX0FTX0RFRklORUQgdGFncy4KLSMgVGhl
IGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcg
RU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KLQotRVhQQU5EX09OTFlfUFJFREVG
ICAgICA9IE5PCi0KLSMgSWYgdGhlIFNFQVJDSF9JTkNMVURFUyB0YWcgaXMgc2V0IHRvIFlFUyB0
aGUgaW5jbHVkZXMgZmlsZXMgaW4gdGhlCi0jIElOQ0xVREVfUEFUSCB3aWxsIGJlIHNlYXJjaGVk
IGlmIGEgI2luY2x1ZGUgaXMgZm91bmQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0j
IFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBz
ZXQgdG8gWUVTLgotCi1TRUFSQ0hfSU5DTFVERVMgICAgICAgID0gWUVTCi0KLSMgVGhlIElOQ0xV
REVfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3Rvcmll
cyB0aGF0Ci0jIGNvbnRhaW4gaW5jbHVkZSBmaWxlcyB0aGF0IGFyZSBub3QgaW5wdXQgZmlsZXMg
YnV0IHNob3VsZCBiZSBwcm9jZXNzZWQgYnkgdGhlCi0jIHByZXByb2Nlc3Nvci4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSF9JTkNMVURFUyBpcyBzZXQgdG8gWUVTLgot
Ci1JTkNMVURFX1BBVEggICAgICAgICAgID0gLi4vaW5jbHVkZQotCi0jIFlvdSBjYW4gdXNlIHRo
ZSBJTkNMVURFX0ZJTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNh
cmQKLSMgcGF0dGVybnMgKGxpa2UgKi5oIGFuZCAqLmhwcCkgdG8gZmlsdGVyIG91dCB0aGUgaGVh
ZGVyLWZpbGVzIGluIHRoZQotIyBkaXJlY3Rvcmllcy4gSWYgbGVmdCBibGFuaywgdGhlIHBhdHRl
cm5zIHNwZWNpZmllZCB3aXRoIEZJTEVfUEFUVEVSTlMgd2lsbCBiZQotIyB1c2VkLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRv
IFlFUy4KLQotSU5DTFVERV9GSUxFX1BBVFRFUk5TICA9ICouaAotCi0jIFRoZSBQUkVERUZJTkVE
IHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIG1hY3JvIG5hbWVzIHRoYXQg
YXJlCi0jIGRlZmluZWQgYmVmb3JlIHRoZSBwcmVwcm9jZXNzb3IgaXMgc3RhcnRlZCAoc2ltaWxh
ciB0byB0aGUgLUQgb3B0aW9uIG9mIGUuZy4KLSMgZ2NjKS4gVGhlIGFyZ3VtZW50IG9mIHRoZSB0
YWcgaXMgYSBsaXN0IG9mIG1hY3JvcyBvZiB0aGUgZm9ybTogbmFtZSBvcgotIyBuYW1lPWRlZmlu
aXRpb24gKG5vIHNwYWNlcykuIElmIHRoZSBkZWZpbml0aW9uIGFuZCB0aGUgIj0iIGFyZSBvbWl0
dGVkLCAiPTEiCi0jIGlzIGFzc3VtZWQuIFRvIHByZXZlbnQgYSBtYWNybyBkZWZpbml0aW9uIGZy
b20gYmVpbmcgdW5kZWZpbmVkIHZpYSAjdW5kZWYgb3IKLSMgcmVjdXJzaXZlbHkgZXhwYW5kZWQg
dXNlIHRoZSA6PSBvcGVyYXRvciBpbnN0ZWFkIG9mIHRoZSA9IG9wZXJhdG9yLgotIyBUaGlzIHRh
ZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlF
Uy4KLQotUFJFREVGSU5FRCAgICAgICAgICAgICA9ICJfTVNDX1ZFUj0xODAwIiBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgX0NQUFJUVEkgXAotICAgICAgICAgICAgICAgICAgICAgICAgIF9X
SU4zMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgSlNPTkNQUF9ET0NfRVhDTFVERV9JTVBM
RU1FTlRBVElPTgotCi0jIElmIHRoZSBNQUNST19FWFBBTlNJT04gYW5kIEVYUEFORF9PTkxZX1BS
RURFRiB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gdGhpcwotIyB0YWcgY2FuIGJlIHVzZWQgdG8g
c3BlY2lmeSBhIGxpc3Qgb2YgbWFjcm8gbmFtZXMgdGhhdCBzaG91bGQgYmUgZXhwYW5kZWQuIFRo
ZQotIyBtYWNybyBkZWZpbml0aW9uIHRoYXQgaXMgZm91bmQgaW4gdGhlIHNvdXJjZXMgd2lsbCBi
ZSB1c2VkLiBVc2UgdGhlIFBSRURFRklORUQKLSMgdGFnIGlmIHlvdSB3YW50IHRvIHVzZSBhIGRp
ZmZlcmVudCBtYWNybyBkZWZpbml0aW9uIHRoYXQgb3ZlcnJ1bGVzIHRoZQotIyBkZWZpbml0aW9u
IGZvdW5kIGluIHRoZSBzb3VyY2UgY29kZS4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCi0KLUVYUEFORF9BU19ERUZJ
TkVEICAgICAgPQotCi0jIElmIHRoZSBTS0lQX0ZVTkNUSU9OX01BQ1JPUyB0YWcgaXMgc2V0IHRv
IFlFUyB0aGVuIGRveHlnZW4ncyBwcmVwcm9jZXNzb3Igd2lsbAotIyByZW1vdmUgYWxsIHJlZmVy
ZW5jZXMgdG8gZnVuY3Rpb24tbGlrZSBtYWNyb3MgdGhhdCBhcmUgYWxvbmUgb24gYSBsaW5lLCBo
YXZlIGFuCi0jIGFsbCB1cHBlcmNhc2UgbmFtZSwgYW5kIGRvIG5vdCBlbmQgd2l0aCBhIHNlbWlj
b2xvbi4gU3VjaCBmdW5jdGlvbiBtYWNyb3MgYXJlCi0jIHR5cGljYWxseSB1c2VkIGZvciBib2ls
ZXItcGxhdGUgY29kZSwgYW5kIHdpbGwgY29uZnVzZSB0aGUgcGFyc2VyIGlmIG5vdAotIyByZW1v
dmVkLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0
aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KLQotU0tJUF9G
VU5DVElPTl9NQUNST1MgICA9IFlFUwotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENvbmZpZ3Vy
YXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGV4dGVybmFsIHJlZmVyZW5jZXMKLSMtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotIyBUaGUgVEFHRklMRVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25l
IG9yIG1vcmUgdGFnIGZpbGVzLiBGb3IgZWFjaCB0YWcKLSMgZmlsZSB0aGUgbG9jYXRpb24gb2Yg
dGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGFkZGVkLiBUaGUgZm9ybWF0IG9m
Ci0jIGEgdGFnIGZpbGUgd2l0aG91dCB0aGlzIGxvY2F0aW9uIGlzIGFzIGZvbGxvd3M6Ci0jIFRB
R0ZJTEVTID0gZmlsZTEgZmlsZTIgLi4uCi0jIEFkZGluZyBsb2NhdGlvbiBmb3IgdGhlIHRhZyBm
aWxlcyBpcyBkb25lIGFzIGZvbGxvd3M6Ci0jIFRBR0ZJTEVTID0gZmlsZTE9bG9jMSAiZmlsZTIg
PSBsb2MyIiAuLi4KLSMgd2hlcmUgbG9jMSBhbmQgbG9jMiBjYW4gYmUgcmVsYXRpdmUgb3IgYWJz
b2x1dGUgcGF0aHMgb3IgVVJMcy4gU2VlIHRoZQotIyBzZWN0aW9uICJMaW5raW5nIHRvIGV4dGVy
bmFsIGRvY3VtZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2UKLSMg
b2YgdGFnIGZpbGVzLgotIyBOb3RlOiBFYWNoIHRhZyBmaWxlIG11c3QgaGF2ZSBhbiB1bmlxdWUg
bmFtZSAod2hlcmUgdGhlIG5hbWUgZG9lcyBOT1QgaW5jbHVkZQotIyB0aGUgcGF0aCkuIElmIGEg
dGFnIGZpbGUgaXMgbm90IGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBkb3h5Z2Vu
IGlzCi0jIHJ1biwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSB0YWdmaWxl
IGhlcmUuCi0KLVRBR0ZJTEVTICAgICAgICAgICAgICAgPQotCi0jIFdoZW4gYSBmaWxlIG5hbWUg
aXMgc3BlY2lmaWVkIGFmdGVyIEdFTkVSQVRFX1RBR0ZJTEUsIGRveHlnZW4gd2lsbCBjcmVhdGUg
YQotIyB0YWcgZmlsZSB0aGF0IGlzIGJhc2VkIG9uIHRoZSBpbnB1dCBmaWxlcyBpdCByZWFkcy4g
U2VlIHNlY3Rpb24gIkxpbmtpbmcgdG8KLSMgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiIgZm9yIG1v
cmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzYWdlIG9mIHRhZyBmaWxlcy4KLQotR0VORVJBVEVf
VEFHRklMRSAgICAgICA9Ci0KLSMgSWYgdGhlIEFMTEVYVEVSTkFMUyB0YWcgaXMgc2V0IHRvIFlF
UyBhbGwgZXh0ZXJuYWwgY2xhc3Mgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlCi0jIGNsYXNzIGluZGV4
LiBJZiBzZXQgdG8gTk8gb25seSB0aGUgaW5oZXJpdGVkIGV4dGVybmFsIGNsYXNzZXMgd2lsbCBi
ZSBsaXN0ZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLQotQUxMRVhURVJOQUxTICAg
ICAgICAgICA9IE5PCi0KLSMgSWYgdGhlIEVYVEVSTkFMX0dST1VQUyB0YWcgaXMgc2V0IHRvIFlF
UyBhbGwgZXh0ZXJuYWwgZ3JvdXBzIHdpbGwgYmUgbGlzdGVkIGluCi0jIHRoZSBtb2R1bGVzIGlu
ZGV4LiBJZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1cnJlbnQgcHJvamVjdCdzIGdyb3VwcyB3aWxs
IGJlCi0jIGxpc3RlZC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLQotRVhURVJOQUxf
R1JPVVBTICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBFWFRFUk5BTF9QQUdFUyB0YWcgaXMgc2V0
IHRvIFlFUyBhbGwgZXh0ZXJuYWwgcGFnZXMgd2lsbCBiZSBsaXN0ZWQgaW4KLSMgdGhlIHJlbGF0
ZWQgcGFnZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3Mg
cGFnZXMgd2lsbAotIyBiZSBsaXN0ZWQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0K
LUVYVEVSTkFMX1BBR0VTICAgICAgICAgPSBZRVMKLQotIyBUaGUgUEVSTF9QQVRIIHNob3VsZCBi
ZSB0aGUgYWJzb2x1dGUgcGF0aCBhbmQgbmFtZSBvZiB0aGUgcGVybCBzY3JpcHQKLSMgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhlIHJlc3VsdCBvZiAnd2hpY2ggcGVybCcpLgotIyBUaGUgZGVmYXVsdCBm
aWxlICh3aXRoIGFic29sdXRlIHBhdGgpIGlzOiAvdXNyL2Jpbi9wZXJsLgotCi1QRVJMX1BBVEgg
ICAgICAgICAgICAgID0gL3Vzci9iaW4vcGVybAotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENv
bmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkb3QgdG9vbAotIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi0jIElmIHRoZSBDTEFTU19ESUFHUkFNUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5
Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjbGFzcyBkaWFncmFtCi0jIChpbiBIVE1MIGFuZCBMYVRlWCkg
Zm9yIGNsYXNzZXMgd2l0aCBiYXNlIG9yIHN1cGVyIGNsYXNzZXMuIFNldHRpbmcgdGhlIHRhZyB0
bwotIyBOTyB0dXJucyB0aGUgZGlhZ3JhbXMgb2ZmLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gYWxz
byB3b3JrcyB3aXRoIEhBVkVfRE9UCi0jIGRpc2FibGVkLCBidXQgaXQgaXMgcmVjb21tZW5kZWQg
dG8gaW5zdGFsbCBhbmQgdXNlIGRvdCwgc2luY2UgaXQgeWllbGRzIG1vcmUKLSMgcG93ZXJmdWwg
Z3JhcGhzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgotCi1DTEFTU19ESUFHUkFNUyAg
ICAgICAgID0gTk8KLQotIyBZb3UgY2FuIGRlZmluZSBtZXNzYWdlIHNlcXVlbmNlIGNoYXJ0cyB3
aXRoaW4gZG94eWdlbiBjb21tZW50cyB1c2luZyB0aGUgXG1zYwotIyBjb21tYW5kLiBEb3h5Z2Vu
IHdpbGwgdGhlbiBydW4gdGhlIG1zY2dlbiB0b29sIChzZWU6Ci0jIGh0dHA6Ly93d3cubWN0ZXJu
YW4ubWUudWsvbXNjZ2VuLykpIHRvIHByb2R1Y2UgdGhlIGNoYXJ0IGFuZCBpbnNlcnQgaXQgaW4g
dGhlCi0jIGRvY3VtZW50YXRpb24uIFRoZSBNU0NHRU5fUEFUSCB0YWcgYWxsb3dzIHlvdSB0byBz
cGVjaWZ5IHRoZSBkaXJlY3Rvcnkgd2hlcmUKLSMgdGhlIG1zY2dlbiB0b29sIHJlc2lkZXMuIElm
IGxlZnQgZW1wdHkgdGhlIHRvb2wgaXMgYXNzdW1lZCB0byBiZSBmb3VuZCBpbiB0aGUKLSMgZGVm
YXVsdCBzZWFyY2ggcGF0aC4KLQotTVNDR0VOX1BBVEggICAgICAgICAgICA9Ci0KLSMgSWYgc2V0
IHRvIFlFUywgdGhlIGluaGVyaXRhbmNlIGFuZCBjb2xsYWJvcmF0aW9uIGdyYXBocyB3aWxsIGhp
ZGUgaW5oZXJpdGFuY2UKLSMgYW5kIHVzYWdlIHJlbGF0aW9ucyBpZiB0aGUgdGFyZ2V0IGlzIHVu
ZG9jdW1lbnRlZCBvciBpcyBub3QgYSBjbGFzcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlF
Uy4KLQotSElERV9VTkRPQ19SRUxBVElPTlMgICA9IE5PCi0KLSMgSWYgeW91IHNldCB0aGUgSEFW
RV9ET1QgdGFnIHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBhc3N1bWUgdGhlIGRvdCB0b29sIGlz
Ci0jIGF2YWlsYWJsZSBmcm9tIHRoZSBwYXRoLiBUaGlzIHRvb2wgaXMgcGFydCBvZiBHcmFwaHZp
eiAoc2VlOgotIyBodHRwOi8vd3d3LmdyYXBodml6Lm9yZy8pLCBhIGdyYXBoIHZpc3VhbGl6YXRp
b24gdG9vbGtpdCBmcm9tIEFUJlQgYW5kIEx1Y2VudAotIyBCZWxsIExhYnMuIFRoZSBvdGhlciBv
cHRpb25zIGluIHRoaXMgc2VjdGlvbiBoYXZlIG5vIGVmZmVjdCBpZiB0aGlzIG9wdGlvbiBpcwot
IyBzZXQgdG8gTk8KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotCi1IQVZFX0RPVCAgICAg
ICAgICAgICAgID0gJUhBVkVfRE9UJQotCi0jIFRoZSBET1RfTlVNX1RIUkVBRFMgc3BlY2lmaWVz
IHRoZSBudW1iZXIgb2YgZG90IGludm9jYXRpb25zIGRveHlnZW4gaXMgYWxsb3dlZAotIyB0byBy
dW4gaW4gcGFyYWxsZWwuIFdoZW4gc2V0IHRvIDAgZG94eWdlbiB3aWxsIGJhc2UgdGhpcyBvbiB0
aGUgbnVtYmVyIG9mCi0jIHByb2Nlc3NvcnMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0uIFlvdSBj
YW4gc2V0IGl0IGV4cGxpY2l0bHkgdG8gYSB2YWx1ZQotIyBsYXJnZXIgdGhhbiAwIHRvIGdldCBj
b250cm9sIG92ZXIgdGhlIGJhbGFuY2UgYmV0d2VlbiBDUFUgbG9hZCBhbmQgcHJvY2Vzc2luZwot
IyBzcGVlZC4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMzIsIGRlZmF1bHQg
dmFsdWU6IDAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBz
ZXQgdG8gWUVTLgotCi1ET1RfTlVNX1RIUkVBRFMgICAgICAgID0gMAotCi0jIFdoZW4geW91IHdh
bnQgYSBkaWZmZXJlbnRseSBsb29raW5nIGZvbnQgbiB0aGUgZG90IGZpbGVzIHRoYXQgZG94eWdl
bgotIyBnZW5lcmF0ZXMgeW91IGNhbiBzcGVjaWZ5IHRoZSBmb250IG5hbWUgdXNpbmcgRE9UX0ZP
TlROQU1FLiBZb3UgbmVlZCB0byBtYWtlCi0jIHN1cmUgZG90IGlzIGFibGUgdG8gZmluZCB0aGUg
Zm9udCwgd2hpY2ggY2FuIGJlIGRvbmUgYnkgcHV0dGluZyBpdCBpbiBhCi0jIHN0YW5kYXJkIGxv
Y2F0aW9uIG9yIGJ5IHNldHRpbmcgdGhlIERPVEZPTlRQQVRIIGVudmlyb25tZW50IHZhcmlhYmxl
IG9yIGJ5Ci0jIHNldHRpbmcgRE9UX0ZPTlRQQVRIIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmlu
ZyB0aGUgZm9udC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IEhlbHZldGljYS4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9G
T05UTkFNRSAgICAgICAgICAgPSBGcmVlU2FucwotCi0jIFRoZSBET1RfRk9OVFNJWkUgdGFnIGNh
biBiZSB1c2VkIHRvIHNldCB0aGUgc2l6ZSAoaW4gcG9pbnRzKSBvZiB0aGUgZm9udCBvZgotIyBk
b3QgZ3JhcGhzLgotIyBNaW5pbXVtIHZhbHVlOiA0LCBtYXhpbXVtIHZhbHVlOiAyNCwgZGVmYXVs
dCB2YWx1ZTogMTAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBp
cyBzZXQgdG8gWUVTLgotCi1ET1RfRk9OVFNJWkUgICAgICAgICAgID0gMTAKLQotIyBCeSBkZWZh
dWx0IGRveHlnZW4gd2lsbCB0ZWxsIGRvdCB0byB1c2UgdGhlIGRlZmF1bHQgZm9udCBhcyBzcGVj
aWZpZWQgd2l0aAotIyBET1RfRk9OVE5BTUUuIElmIHlvdSBzcGVjaWZ5IGEgZGlmZmVyZW50IGZv
bnQgdXNpbmcgRE9UX0ZPTlROQU1FIHlvdSBjYW4gc2V0Ci0jIHRoZSBwYXRoIHdoZXJlIGRvdCBj
YW4gZmluZCBpdCB1c2luZyB0aGlzIHRhZy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUg
dGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9GT05UUEFUSCAgICAgICAgICAgPQot
Ci0jIElmIHRoZSBDTEFTU19HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2ls
bCBnZW5lcmF0ZSBhIGdyYXBoIGZvcgotIyBlYWNoIGRvY3VtZW50ZWQgY2xhc3Mgc2hvd2luZyB0
aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmhlcml0YW5jZSByZWxhdGlvbnMuCi0jIFNldHRpbmcg
dGhpcyB0YWcgdG8gWUVTIHdpbGwgZm9yY2UgdGhlIENMQVNTX0RJQUdSQU1TIHRhZyB0byBOTy4K
LSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0
aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUNMQVNTX0dSQVBIICAgICAgICAgICAg
PSBZRVMKLQotIyBJZiB0aGUgQ09MTEFCT1JBVElPTl9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0
aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhCi0jIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQg
Y2xhc3Mgc2hvd2luZyB0aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbXBsZW1lbnRhdGlvbgotIyBk
ZXBlbmRlbmNpZXMgKGluaGVyaXRhbmNlLCBjb250YWlubWVudCwgYW5kIGNsYXNzIHJlZmVyZW5j
ZXMgdmFyaWFibGVzKSBvZiB0aGUKLSMgY2xhc3Mgd2l0aCBvdGhlciBkb2N1bWVudGVkIGNsYXNz
ZXMuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRo
YXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1DT0xMQUJPUkFUSU9OX0dSQVBI
ICAgID0gWUVTCi0KLSMgSWYgdGhlIEdST1VQX0dSQVBIUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVu
IGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvcgotIyBncm91cHMsIHNob3dpbmcgdGhl
IGRpcmVjdCBncm91cHMgZGVwZW5kZW5jaWVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVT
LgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlF
Uy4KLQotR1JPVVBfR1JBUEhTICAgICAgICAgICA9IFlFUwotCi0jIElmIHRoZSBVTUxfTE9PSyB0
YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgaW5oZXJpdGFuY2UgYW5kCi0j
IGNvbGxhYm9yYXRpb24gZGlhZ3JhbXMgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIHRoZSBPTUcncyBV
bmlmaWVkIE1vZGVsaW5nCi0jIExhbmd1YWdlLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8u
Ci0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVT
LgotCi1VTUxfTE9PSyAgICAgICAgICAgICAgID0gJVVNTF9MT09LJQotCi0jIElmIHRoZSBVTUxf
TE9PSyB0YWcgaXMgZW5hYmxlZCwgdGhlIGZpZWxkcyBhbmQgbWV0aG9kcyBhcmUgc2hvd24gaW5z
aWRlIHRoZQotIyBjbGFzcyBub2RlLiBJZiB0aGVyZSBhcmUgbWFueSBmaWVsZHMgb3IgbWV0aG9k
cyBhbmQgbWFueSBub2RlcyB0aGUgZ3JhcGggbWF5Ci0jIGJlY29tZSB0b28gYmlnIHRvIGJlIHVz
ZWZ1bC4gVGhlIFVNTF9MSU1JVF9OVU1fRklFTERTIHRocmVzaG9sZCBsaW1pdHMgdGhlCi0jIG51
bWJlciBvZiBpdGVtcyBmb3IgZWFjaCB0eXBlIHRvIG1ha2UgdGhlIHNpemUgbW9yZSBtYW5hZ2Vh
YmxlLiBTZXQgdGhpcyB0byAwCi0jIGZvciBubyBsaW1pdC4gTm90ZSB0aGF0IHRoZSB0aHJlc2hv
bGQgbWF5IGJlIGV4Y2VlZGVkIGJ5IDUwJSBiZWZvcmUgdGhlIGxpbWl0Ci0jIGlzIGVuZm9yY2Vk
LiBTbyB3aGVuIHlvdSBzZXQgdGhlIHRocmVzaG9sZCB0byAxMCwgdXAgdG8gMTUgZmllbGRzIG1h
eSBhcHBlYXIsCi0jIGJ1dCBpZiB0aGUgbnVtYmVyIGV4Y2VlZHMgMTUsIHRoZSB0b3RhbCBhbW91
bnQgb2YgZmllbGRzIHNob3duIGlzIGxpbWl0ZWQgdG8KLSMgMTAuCi0jIE1pbmltdW0gdmFsdWU6
IDAsIG1heGltdW0gdmFsdWU6IDEwMCwgZGVmYXVsdCB2YWx1ZTogMTAuCi0jIFRoaXMgdGFnIHJl
cXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1VTUxfTElNSVRf
TlVNX0ZJRUxEUyAgID0gMTAKLQotIyBJZiB0aGUgVEVNUExBVEVfUkVMQVRJT05TIHRhZyBpcyBz
ZXQgdG8gWUVTIHRoZW4gdGhlIGluaGVyaXRhbmNlIGFuZAotIyBjb2xsYWJvcmF0aW9uIGdyYXBo
cyB3aWxsIHNob3cgdGhlIHJlbGF0aW9ucyBiZXR3ZWVuIHRlbXBsYXRlcyBhbmQgdGhlaXIKLSMg
aW5zdGFuY2VzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCi0jIFRoaXMgdGFnIHJlcXVp
cmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1URU1QTEFURV9SRUxB
VElPTlMgICAgID0gWUVTCi0KLSMgSWYgdGhlIElOQ0xVREVfR1JBUEgsIEVOQUJMRV9QUkVQUk9D
RVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUgc2V0IHRvCi0jIFlFUyB0aGVuIGRv
eHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgZmlsZSBzaG93
aW5nIHRoZQotIyBkaXJlY3QgYW5kIGluZGlyZWN0IGluY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIHRo
ZSBmaWxlIHdpdGggb3RoZXIgZG9jdW1lbnRlZAotIyBmaWxlcy4KLSMgVGhlIGRlZmF1bHQgdmFs
dWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlz
IHNldCB0byBZRVMuCi0KLUlOQ0xVREVfR1JBUEggICAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUg
SU5DTFVERURfQllfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVE
RVMgdGFncyBhcmUKLSMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdy
YXBoIGZvciBlYWNoIGRvY3VtZW50ZWQgZmlsZSBzaG93aW5nCi0jIHRoZSBkaXJlY3QgYW5kIGlu
ZGlyZWN0IGluY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBmaWxlIHdpdGggb3RoZXIgZG9jdW1l
bnRlZAotIyBmaWxlcy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcg
cmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUlOQ0xVREVE
X0JZX0dSQVBIICAgICAgPSBZRVMKLQotIyBJZiB0aGUgQ0FMTF9HUkFQSCB0YWcgaXMgc2V0IHRv
IFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNhbGwKLSMgZGVwZW5kZW5jeSBncmFw
aCBmb3IgZXZlcnkgZ2xvYmFsIGZ1bmN0aW9uIG9yIGNsYXNzIG1ldGhvZC4KLSMKLSMgTm90ZSB0
aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUg
dGltZSBvZiBhIHJ1bi4KLSMgU28gaW4gbW9zdCBjYXNlcyBpdCB3aWxsIGJlIGJldHRlciB0byBl
bmFibGUgY2FsbCBncmFwaHMgZm9yIHNlbGVjdGVkCi0jIGZ1bmN0aW9ucyBvbmx5IHVzaW5nIHRo
ZSBcY2FsbGdyYXBoIGNvbW1hbmQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhp
cyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUNB
TExfR1JBUEggICAgICAgICAgICAgPSBOTwotCi0jIElmIHRoZSBDQUxMRVJfR1JBUEggdGFnIGlz
IHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjYWxsZXIKLSMgZGVwZW5k
ZW5jeSBncmFwaCBmb3IgZXZlcnkgZ2xvYmFsIGZ1bmN0aW9uIG9yIGNsYXNzIG1ldGhvZC4KLSMK
LSMgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNy
ZWFzZSB0aGUgdGltZSBvZiBhIHJ1bi4KLSMgU28gaW4gbW9zdCBjYXNlcyBpdCB3aWxsIGJlIGJl
dHRlciB0byBlbmFibGUgY2FsbGVyIGdyYXBocyBmb3Igc2VsZWN0ZWQKLSMgZnVuY3Rpb25zIG9u
bHkgdXNpbmcgdGhlIFxjYWxsZXJncmFwaCBjb21tYW5kLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogTk8uCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQg
dG8gWUVTLgotCi1DQUxMRVJfR1JBUEggICAgICAgICAgID0gWUVTCi0KLSMgSWYgdGhlIEdSQVBI
SUNBTF9ISUVSQVJDSFkgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ3JhcGhp
Y2FsCi0jIGhpZXJhcmNoeSBvZiBhbGwgY2xhc3NlcyBpbnN0ZWFkIG9mIGEgdGV4dHVhbCBvbmUu
Ci0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQg
dGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgotCi1HUkFQSElDQUxfSElFUkFSQ0hZICAg
ID0gWUVTCi0KLSMgSWYgdGhlIERJUkVDVE9SWV9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVu
IGRveHlnZW4gd2lsbCBzaG93IHRoZQotIyBkZXBlbmRlbmNpZXMgYSBkaXJlY3RvcnkgaGFzIG9u
IG90aGVyIGRpcmVjdG9yaWVzIGluIGEgZ3JhcGhpY2FsIHdheS4gVGhlCi0jIGRlcGVuZGVuY3kg
cmVsYXRpb25zIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSAjaW5jbHVkZSByZWxhdGlvbnMgYmV0d2Vl
biB0aGUKLSMgZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBp
czogWUVTLgotIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0
IHRvIFlFUy4KLQotRElSRUNUT1JZX0dSQVBIICAgICAgICA9IFlFUwotCi0jIFRoZSBET1RfSU1B
R0VfRk9STUFUIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGltYWdlIGZvcm1hdCBvZiB0aGUg
aW1hZ2VzCi0jIGdlbmVyYXRlZCBieSBkb3QuCi0jIE5vdGU6IElmIHlvdSBjaG9vc2Ugc3ZnIHlv
dSBuZWVkIHRvIHNldCBIVE1MX0ZJTEVfRVhURU5TSU9OIHRvIHhodG1sIGluIG9yZGVyCi0jIHRv
IG1ha2UgdGhlIFNWRyBmaWxlcyB2aXNpYmxlIGluIElFIDkrIChvdGhlciBicm93c2VycyBkbyBu
b3QgaGF2ZSB0aGlzCi0jIHJlcXVpcmVtZW50KS4KLSMgUG9zc2libGUgdmFsdWVzIGFyZTogcG5n
LCBqcGcsIGdpZiBhbmQgc3ZnLgotIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogcG5nLgotIyBUaGlz
IHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQotRE9U
X0lNQUdFX0ZPUk1BVCAgICAgICA9IHBuZwotCi0jIElmIERPVF9JTUFHRV9GT1JNQVQgaXMgc2V0
IHRvIHN2ZywgdGhlbiB0aGlzIG9wdGlvbiBjYW4gYmUgc2V0IHRvIFlFUyB0bwotIyBlbmFibGUg
Z2VuZXJhdGlvbiBvZiBpbnRlcmFjdGl2ZSBTVkcgaW1hZ2VzIHRoYXQgYWxsb3cgem9vbWluZyBh
bmQgcGFubmluZy4KLSMKLSMgTm90ZSB0aGF0IHRoaXMgcmVxdWlyZXMgYSBtb2Rlcm4gYnJvd3Nl
ciBvdGhlciB0aGFuIEludGVybmV0IEV4cGxvcmVyLiBUZXN0ZWQKLSMgYW5kIHdvcmtpbmcgYXJl
IEZpcmVmb3gsIENocm9tZSwgU2FmYXJpLCBhbmQgT3BlcmEuCi0jIE5vdGU6IEZvciBJRSA5KyB5
b3UgbmVlZCB0byBzZXQgSFRNTF9GSUxFX0VYVEVOU0lPTiB0byB4aHRtbCBpbiBvcmRlciB0byBt
YWtlCi0jIHRoZSBTVkcgZmlsZXMgdmlzaWJsZS4gT2xkZXIgdmVyc2lvbnMgb2YgSUUgZG8gbm90
IGhhdmUgU1ZHIHN1cHBvcnQuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLUlOVEVS
QUNUSVZFX1NWRyAgICAgICAgPSBOTwotCi0jIFRoZSBET1RfUEFUSCB0YWcgY2FuIGJlIHVzZWQg
dG8gc3BlY2lmeSB0aGUgcGF0aCB3aGVyZSB0aGUgZG90IHRvb2wgY2FuIGJlCi0jIGZvdW5kLiBJ
ZiBsZWZ0IGJsYW5rLCBpdCBpcyBhc3N1bWVkIHRoZSBkb3QgdG9vbCBjYW4gYmUgZm91bmQgaW4g
dGhlIHBhdGguCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBz
ZXQgdG8gWUVTLgotCi1ET1RfUEFUSCAgICAgICAgICAgICAgID0gJURPVF9QQVRIJQotCi0jIFRo
ZSBET1RGSUxFX0RJUlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGly
ZWN0b3JpZXMgdGhhdAotIyBjb250YWluIGRvdCBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0
aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSBcZG90ZmlsZQotIyBjb21tYW5kKS4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVEZJ
TEVfRElSUyAgICAgICAgICAgPQotCi0jIFRoZSBNU0NGSUxFX0RJUlMgdGFnIGNhbiBiZSB1c2Vk
IHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdAotIyBjb250YWluIG1zYyBm
aWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSBcbXNj
ZmlsZQotIyBjb21tYW5kKS4KLQotTVNDRklMRV9ESVJTICAgICAgICAgICA9Ci0KLSMgVGhlIERP
VF9HUkFQSF9NQVhfTk9ERVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBudW1i
ZXIgb2Ygbm9kZXMKLSMgdGhhdCB3aWxsIGJlIHNob3duIGluIHRoZSBncmFwaC4gSWYgdGhlIG51
bWJlciBvZiBub2RlcyBpbiBhIGdyYXBoIGJlY29tZXMKLSMgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1
ZSwgZG94eWdlbiB3aWxsIHRydW5jYXRlIHRoZSBncmFwaCwgd2hpY2ggaXMgdmlzdWFsaXplZAot
IyBieSByZXByZXNlbnRpbmcgYSBub2RlIGFzIGEgcmVkIGJveC4gTm90ZSB0aGF0IGRveHlnZW4g
aWYgdGhlIG51bWJlciBvZiBkaXJlY3QKLSMgY2hpbGRyZW4gb2YgdGhlIHJvb3Qgbm9kZSBpbiBh
IGdyYXBoIGlzIGFscmVhZHkgbGFyZ2VyIHRoYW4KLSMgRE9UX0dSQVBIX01BWF9OT0RFUyB0aGVu
IHRoZSBncmFwaCB3aWxsIG5vdCBiZSBzaG93biBhdCBhbGwuIEFsc28gbm90ZSB0aGF0Ci0jIHRo
ZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSBNQVhfRE9UX0dS
QVBIX0RFUFRILgotIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwMCwgZGVm
YXVsdCB2YWx1ZTogNTAuCi0jIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RP
VCBpcyBzZXQgdG8gWUVTLgotCi1ET1RfR1JBUEhfTUFYX05PREVTICAgID0gNTAKLQotIyBUaGUg
TUFYX0RPVF9HUkFQSF9ERVBUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGRl
cHRoIG9mIHRoZSBncmFwaHMKLSMgZ2VuZXJhdGVkIGJ5IGRvdC4gQSBkZXB0aCB2YWx1ZSBvZiAz
IG1lYW5zIHRoYXQgb25seSBub2RlcyByZWFjaGFibGUgZnJvbSB0aGUKLSMgcm9vdCBieSBmb2xs
b3dpbmcgYSBwYXRoIHZpYSBhdCBtb3N0IDMgZWRnZXMgd2lsbCBiZSBzaG93bi4gTm9kZXMgdGhh
dCBsYXkKLSMgZnVydGhlciBmcm9tIHRoZSByb290IG5vZGUgd2lsbCBiZSBvbWl0dGVkLiBOb3Rl
IHRoYXQgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxCi0jIG9yIDIgbWF5IGdyZWF0bHkgcmVkdWNl
IHRoZSBjb21wdXRhdGlvbiB0aW1lIG5lZWRlZCBmb3IgbGFyZ2UgY29kZSBiYXNlcy4gQWxzbwot
IyBub3RlIHRoYXQgdGhlIHNpemUgb2YgYSBncmFwaCBjYW4gYmUgZnVydGhlciByZXN0cmljdGVk
IGJ5Ci0jIERPVF9HUkFQSF9NQVhfTk9ERVMuIFVzaW5nIGEgZGVwdGggb2YgMCBtZWFucyBubyBk
ZXB0aCByZXN0cmljdGlvbi4KLSMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAw
MCwgZGVmYXVsdCB2YWx1ZTogMC4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhB
VkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLU1BWF9ET1RfR1JBUEhfREVQVEggICAgPSAxMDAwCi0K
LSMgU2V0IHRoZSBET1RfVFJBTlNQQVJFTlQgdGFnIHRvIFlFUyB0byBnZW5lcmF0ZSBpbWFnZXMg
d2l0aCBhIHRyYW5zcGFyZW50Ci0jIGJhY2tncm91bmQuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVm
YXVsdCwgYmVjYXVzZSBkb3Qgb24gV2luZG93cyBkb2VzIG5vdCBzZWVtCi0jIHRvIHN1cHBvcnQg
dGhpcyBvdXQgb2YgdGhlIGJveC4KLSMKLSMgV2FybmluZzogRGVwZW5kaW5nIG9uIHRoZSBwbGF0
Zm9ybSB1c2VkLCBlbmFibGluZyB0aGlzIG9wdGlvbiBtYXkgbGVhZCB0bwotIyBiYWRseSBhbnRp
LWFsaWFzZWQgbGFiZWxzIG9uIHRoZSBlZGdlcyBvZiBhIGdyYXBoIChpLmUuIHRoZXkgYmVjb21l
IGhhcmQgdG8KLSMgcmVhZCkuCi0jIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KLSMgVGhpcyB0
YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9U
UkFOU1BBUkVOVCAgICAgICAgPSBOTwotCi0jIFNldCB0aGUgRE9UX01VTFRJX1RBUkdFVFMgdGFn
IHRvIFlFUyBhbGxvdyBkb3QgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgb3V0cHV0Ci0jIGZpbGVzIGlu
IG9uZSBydW4gKGkuZS4gbXVsdGlwbGUgLW8gYW5kIC1UIG9wdGlvbnMgb24gdGhlIGNvbW1hbmQg
bGluZSkuIFRoaXMKLSMgbWFrZXMgZG90IHJ1biBmYXN0ZXIsIGJ1dCBzaW5jZSBvbmx5IG5ld2Vy
IHZlcnNpb25zIG9mIGRvdCAoPjEuOC4xMCkgc3VwcG9ydAotIyB0aGlzLCB0aGlzIGZlYXR1cmUg
aXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgotIyBU
aGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KLQot
RE9UX01VTFRJX1RBUkdFVFMgICAgICA9IFlFUwotCi0jIElmIHRoZSBHRU5FUkFURV9MRUdFTkQg
dGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgbGVnZW5kIHBhZ2UKLSMg
ZXhwbGFpbmluZyB0aGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBib3hlcyBhbmQgYXJyb3dzIGlu
IHRoZSBkb3QgZ2VuZXJhdGVkCi0jIGdyYXBocy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlF
Uy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZ
RVMuCi0KLUdFTkVSQVRFX0xFR0VORCAgICAgICAgPSBZRVMKLQotIyBJZiB0aGUgRE9UX0NMRUFO
VVAgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHJlbW92ZSB0aGUgaW50ZXJtZWRpYXRl
IGRvdAotIyBmaWxlcyB0aGF0IGFyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIGdyYXBo
cy4KLSMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KLSMgVGhpcyB0YWcgcmVxdWlyZXMgdGhh
dCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCi0KLURPVF9DTEVBTlVQICAgICAgICAg
ICAgPSBZRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvZG94eWJ1aWxkLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9kb3h5YnVpbGQu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MmMxZjQzZmY0Yi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvZG94eWJ1aWxkLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAg
QEAKLSIiIlNjcmlwdCB0byBnZW5lcmF0ZSBkb3h5Z2VuIGRvY3VtZW50YXRpb24uCi0iIiIKLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgdW5pY29kZV9saXRlcmFscwotZnJvbSBkZXZ0b29scyBpbXBvcnQgdGFyYmFsbAotZnJvbSBj
b250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9y
dCB0cmFjZWJhY2sKLWltcG9ydCByZQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2h1
dGlsCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIGNkKG5ld2Rpcik6Ci0gICAgIiIiCi0gICAgaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80MzE2ODQvaG93LWRvLWktY2QtaW4tcHl0
aG9uCi0gICAgIiIiCi0gICAgcHJldmRpciA9IG9zLmdldGN3ZCgpCi0gICAgb3MuY2hkaXIobmV3
ZGlyKQotICAgIHRyeToKLSAgICAgICAgeWllbGQKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy5j
aGRpcihwcmV2ZGlyKQotCi1kZWYgZmluZF9wcm9ncmFtKCpmaWxlbmFtZXMpOgotICAgICIiImZp
bmQgYSBwcm9ncmFtIGluIGZvbGRlcnMgcGF0aF9sc3QsIGFuZCBzZXRzIGVudlt2YXJdCi0gICAg
QHBhcmFtIGZpbGVuYW1lczogYSBsaXN0IG9mIHBvc3NpYmxlIG5hbWVzIG9mIHRoZSBwcm9ncmFt
IHRvIHNlYXJjaCBmb3IKLSAgICBAcmV0dXJuOiB0aGUgZnVsbCBwYXRoIG9mIHRoZSBmaWxlbmFt
ZSBpZiBmb3VuZCwgb3IgJycgaWYgZmlsZW5hbWUgY291bGQgbm90IGJlIGZvdW5kCi0iIiIKLSAg
ICBwYXRocyA9IG9zLmVudmlyb24uZ2V0KCdQQVRIJywgJycpLnNwbGl0KG9zLnBhdGhzZXApCi0g
ICAgc3VmZml4ZXMgPSAoJ3dpbjMyJyBpbiBzeXMucGxhdGZvcm0pIGFuZCAnLmV4ZSAuY29tIC5i
YXQgLmNtZCcgb3IgJycKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICBm
b3IgbmFtZSBpbiBbZmlsZW5hbWUrZXh0IGZvciBleHQgaW4gc3VmZml4ZXMuc3BsaXQoJyAnKV06
Ci0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHBhdGhzOgotICAgICAgICAgICAgICAgIGZ1
bGxfcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIG5hbWUpCi0gICAgICAgICAgICAgICAg
aWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZ1bGxfcGF0aAotICAgIHJldHVybiAnJwotCi1kZWYgZG9fc3Vic3RfaW5fZmlsZSh0YXJnZXRm
aWxlLCBzb3VyY2VmaWxlLCBkaWN0KToKLSAgICAiIiJSZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2Yg
dGhlIGtleXMgb2YgZGljdCB3aXRoIHRoZWlyIHZhbHVlcy4KLSAgICBGb3IgZXhhbXBsZSwgaWYg
ZGljdCBpcyB7JyVWRVJTSU9OJSc6ICcxLjIzNDUnLCAnJUJBU0UlJzogJ015UHJvZyd9LAotICAg
IHRoZW4gYWxsIGluc3RhbmNlcyBvZiAlVkVSU0lPTiUgaW4gdGhlIGZpbGUgd2lsbCBiZSByZXBs
YWNlZCB3aXRoIDEuMjM0NSBldGMuCi0gICAgIiIiCi0gICAgd2l0aCBvcGVuKHNvdXJjZWZpbGUs
ICdyJykgYXMgZjoKLSAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQotICAgIGZvciAoayx2KSBp
biBsaXN0KGRpY3QuaXRlbXMoKSk6Ci0gICAgICAgIHYgPSB2LnJlcGxhY2UoJ1xcJywnXFxcXCcp
IAotICAgICAgICBjb250ZW50cyA9IHJlLnN1YihrLCB2LCBjb250ZW50cykKLSAgICB3aXRoIG9w
ZW4odGFyZ2V0ZmlsZSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQotCi1k
ZWYgZ2V0c3RhdHVzb3V0cHV0KGNtZCk6Ci0gICAgIiIiY21kIGlzIGEgbGlzdC4KLSAgICAiIiIK
LSAgICB0cnk6Ci0gICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBvdXRw
dXQsIF8gPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgc3RhdHVzID0gcHJvY2Vzcy5y
ZXR1cm5jb2RlCi0gICAgZXhjZXB0OgotICAgICAgICBzdGF0dXMgPSAtMQotICAgICAgICBvdXRw
dXQgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgcmV0dXJuIHN0YXR1cywgb3V0cHV0Ci0K
LWRlZiBydW5fY21kKGNtZCwgc2lsZW50PUZhbHNlKToKLSAgICAiIiJSYWlzZSBleGNlcHRpb24g
b24gZmFpbHVyZS4KLSAgICAiIiIKLSAgICBpbmZvID0gJ1J1bm5pbmc6ICVyIGluICVyJyAlKCcg
Jy5qb2luKGNtZCksIG9zLmdldGN3ZCgpKQotICAgIHByaW50KGluZm8pCi0gICAgc3lzLnN0ZG91
dC5mbHVzaCgpCi0gICAgaWYgc2lsZW50OgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IGdldHN0
YXR1c291dHB1dChjbWQpCi0gICAgZWxzZToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzdWJw
cm9jZXNzLmNhbGwoY21kKSwgJycKLSAgICBpZiBzdGF0dXM6Ci0gICAgICAgIG1zZyA9ICdFcnJv
ciB3aGlsZSAlcyAuLi5cblx0ZXJyb3I9JWQsIG91dHB1dD0iIiIlcyIiIicgJShpbmZvLCBzdGF0
dXMsIG91dHB1dCkKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykKLQotZGVmIGFzc2VydF9p
c19leGUocGF0aCk6Ci0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
cGF0aCBpcyBlbXB0eS4nKQotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCclciBpcyBub3QgYSBmaWxlLicgJXBhdGgpCi0gICAgaWYgbm90
IG9zLmFjY2VzcyhwYXRoLCBvcy5YX09LKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclciBp
cyBub3QgZXhlY3V0YWJsZSBieSB0aGlzIHVzZXIuJyAlcGF0aCkKLQotZGVmIHJ1bl9kb3h5Z2Vu
KGRveHlnZW5fcGF0aCwgY29uZmlnX2ZpbGUsIHdvcmtpbmdfZGlyLCBpc19zaWxlbnQpOgotICAg
IGFzc2VydF9pc19leGUoZG94eWdlbl9wYXRoKQotICAgIGNvbmZpZ19maWxlID0gb3MucGF0aC5h
YnNwYXRoKGNvbmZpZ19maWxlKQotICAgIHdpdGggY2Qod29ya2luZ19kaXIpOgotICAgICAgICBj
bWQgPSBbZG94eWdlbl9wYXRoLCBjb25maWdfZmlsZV0KLSAgICAgICAgcnVuX2NtZChjbWQsIGlz
X3NpbGVudCkKLQotZGVmIGJ1aWxkX2RvYyhvcHRpb25zLCAgbWFrZV9yZWxlYXNlPUZhbHNlKToK
LSAgICBpZiBtYWtlX3JlbGVhc2U6Ci0gICAgICAgIG9wdGlvbnMubWFrZV90YXJiYWxsID0gVHJ1
ZQotICAgICAgICBvcHRpb25zLndpdGhfZG90ID0gVHJ1ZQotICAgICAgICBvcHRpb25zLndpdGhf
aHRtbF9oZWxwID0gVHJ1ZQotICAgICAgICBvcHRpb25zLndpdGhfdW1sX2xvb2sgPSBUcnVlCi0g
ICAgICAgIG9wdGlvbnMub3BlbiA9IEZhbHNlCi0gICAgICAgIG9wdGlvbnMuc2lsZW50ID0gVHJ1
ZQotCi0gICAgdmVyc2lvbiA9IG9wZW4oJ3ZlcnNpb24nLCAncnQnKS5yZWFkKCkuc3RyaXAoKQot
ICAgIG91dHB1dF9kaXIgPSAnZGlzdC9kb3h5Z2VuJyAjIHJlbGF0aXZlIHRvIGRvYy9kb3h5Zmls
ZSBsb2NhdGlvbi4KLSAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihvdXRwdXRfZGlyKToKLSAgICAg
ICAgb3MubWFrZWRpcnMob3V0cHV0X2RpcikKLSAgICB0b3BfZGlyID0gb3MucGF0aC5hYnNwYXRo
KCcuJykKLSAgICBodG1sX291dHB1dF9kaXJuYW1lID0gJ2pzb25jcHAtYXBpLWh0bWwtJyArIHZl
cnNpb24KLSAgICB0YXJiYWxsX3BhdGggPSBvcy5wYXRoLmpvaW4oJ2Rpc3QnLCBodG1sX291dHB1
dF9kaXJuYW1lICsgJy50YXIuZ3onKQotICAgIHdhcm5pbmdfbG9nX3BhdGggPSBvcy5wYXRoLmpv
aW4ob3V0cHV0X2RpciwgJy4uL2pzb25jcHAtZG94eWdlbi13YXJuaW5nLmxvZycpCi0gICAgaHRt
bF9vdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBodG1sX291dHB1dF9kaXJu
YW1lKQotICAgIGRlZiB5ZXNubyhib29sKToKLSAgICAgICAgcmV0dXJuIGJvb2wgYW5kICdZRVMn
IG9yICdOTycKLSAgICBzdWJzdF9rZXlzID0gewotICAgICAgICAnJUpTT05DUFBfVkVSU0lPTiUn
OiB2ZXJzaW9uLAotICAgICAgICAnJURPQ19UT1BESVIlJzogJycsCi0gICAgICAgICclVE9QRElS
JSc6IHRvcF9kaXIsCi0gICAgICAgICclSFRNTF9PVVRQVVQlJzogb3MucGF0aC5qb2luKCcuLics
IG91dHB1dF9kaXIsIGh0bWxfb3V0cHV0X2Rpcm5hbWUpLAotICAgICAgICAnJUhBVkVfRE9UJSc6
IHllc25vKG9wdGlvbnMud2l0aF9kb3QpLAotICAgICAgICAnJURPVF9QQVRIJSc6IG9zLnBhdGgu
c3BsaXQob3B0aW9ucy5kb3RfcGF0aClbMF0sCi0gICAgICAgICclSFRNTF9IRUxQJSc6IHllc25v
KG9wdGlvbnMud2l0aF9odG1sX2hlbHApLAotICAgICAgICAnJVVNTF9MT09LJSc6IHllc25vKG9w
dGlvbnMud2l0aF91bWxfbG9vayksCi0gICAgICAgICclV0FSTklOR19MT0dfUEFUSCUnOiBvcy5w
YXRoLmpvaW4oJy4uJywgd2FybmluZ19sb2dfcGF0aCkKLSAgICAgICAgfQotCi0gICAgaWYgb3Mu
cGF0aC5pc2RpcihvdXRwdXRfZGlyKToKLSAgICAgICAgcHJpbnQoJ0RlbGV0aW5nIGRpcmVjdG9y
eTonLCBvdXRwdXRfZGlyKQotICAgICAgICBzaHV0aWwucm10cmVlKG91dHB1dF9kaXIpCi0gICAg
aWYgbm90IG9zLnBhdGguaXNkaXIob3V0cHV0X2Rpcik6Ci0gICAgICAgIG9zLm1ha2VkaXJzKG91
dHB1dF9kaXIpCi0KLSAgICBkb19zdWJzdF9pbl9maWxlKCdkb2MvZG94eWZpbGUnLCBvcHRpb25z
LmRveHlmaWxlX2lucHV0X3BhdGgsIHN1YnN0X2tleXMpCi0gICAgcnVuX2RveHlnZW4ob3B0aW9u
cy5kb3h5Z2VuX3BhdGgsICdkb2MvZG94eWZpbGUnLCAnZG9jJywgaXNfc2lsZW50PW9wdGlvbnMu
c2lsZW50KQotICAgIGlmIG5vdCBvcHRpb25zLnNpbGVudDoKLSAgICAgICAgcHJpbnQob3Blbih3
YXJuaW5nX2xvZ19wYXRoLCAncicpLnJlYWQoKSkKLSAgICBpbmRleF9wYXRoID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguam9pbignZG9jJywgc3Vic3Rfa2V5c1snJUhUTUxfT1VUUFVUJSddLCAn
aW5kZXguaHRtbCcpKQotICAgIHByaW50KCdHZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBjYW4gYmUg
Zm91bmQgaW46JykKLSAgICBwcmludChpbmRleF9wYXRoKQotICAgIGlmIG9wdGlvbnMub3BlbjoK
LSAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICAgICAgd2ViYnJvd3Nlci5vcGVuKCdmaWxl
Oi8vJyArIGluZGV4X3BhdGgpCi0gICAgaWYgb3B0aW9ucy5tYWtlX3RhcmJhbGw6Ci0gICAgICAg
IHByaW50KCdHZW5lcmF0aW5nIGRvYyB0YXJiYWxsIHRvJywgdGFyYmFsbF9wYXRoKQotICAgICAg
ICB0YXJiYWxsX3NvdXJjZXMgPSBbCi0gICAgICAgICAgICBvdXRwdXRfZGlyLAotICAgICAgICAg
ICAgJ1JFQURNRS5tZCcsCi0gICAgICAgICAgICAnTElDRU5TRScsCi0gICAgICAgICAgICAnTkVX
Uy50eHQnLAotICAgICAgICAgICAgJ3ZlcnNpb24nCi0gICAgICAgICAgICBdCi0gICAgICAgIHRh
cmJhbGxfYmFzZWRpciA9IG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBodG1sX291dHB1dF9kaXJu
YW1lKQotICAgICAgICB0YXJiYWxsLm1ha2VfdGFyYmFsbCh0YXJiYWxsX3BhdGgsIHRhcmJhbGxf
c291cmNlcywgdGFyYmFsbF9iYXNlZGlyLCBodG1sX291dHB1dF9kaXJuYW1lKQotICAgIHJldHVy
biB0YXJiYWxsX3BhdGgsIGh0bWxfb3V0cHV0X2Rpcm5hbWUKLQotZGVmIG1haW4oKToKLSAgICB1
c2FnZSA9ICIiIiVwcm9nCi0gICAgR2VuZXJhdGVzIGRveHlnZW4gZG9jdW1lbnRhdGlvbiBpbiBi
dWlsZC9kb3h5Z2VuLgotICAgIE9wdGlvbmFsbHkgbWFrZXMgYSB0YXJiYWxsIG9mIHRoZSBkb2N1
bWVudGF0aW9uIHRvIGRpc3QvLgotCi0gICAgTXVzdCBiZSBzdGFydGVkIGluIHRoZSBwcm9qZWN0
IHRvcCBkaXJlY3RvcnkuICAgIAotICAgICIiIgotICAgIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9w
dGlvblBhcnNlcgotICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcih1c2FnZT11c2FnZSkKLSAgICBw
YXJzZXIuYWxsb3dfaW50ZXJzcGVyc2VkX2FyZ3MgPSBGYWxzZQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLXdpdGgtZG90JywgZGVzdD0id2l0aF9kb3QiLCBhY3Rpb249J3N0b3JlX3RydWUnLCBk
ZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIkVuYWJsZSB1c2FnZSBvZiBET1QgdG8gZ2Vu
ZXJhdGUgY29sbGFib3JhdGlvbiBkaWFncmFtIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWRvdCcsIGRlc3Q9ImRvdF9wYXRoIiwgYWN0aW9uPSdzdG9yZScsIGRlZmF1bHQ9ZmluZF9wcm9n
cmFtKCdkb3QnKSwKLSAgICAgICAgaGVscD0iIiJQYXRoIHRvIEdyYXBoVml6IGRvdCB0b29sLiBN
dXN0IGJlIGZ1bGwgcXVhbGlmaWVkIHBhdGguIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy0tZG94eWdlbicsIGRlc3Q9ImRveHlnZW5fcGF0aCIsIGFjdGlv
bj0nc3RvcmUnLCBkZWZhdWx0PWZpbmRfcHJvZ3JhbSgnZG94eWdlbicpLAotICAgICAgICBoZWxw
PSIiIlBhdGggdG8gRG94eWdlbiB0b29sLiBbRGVmYXVsdDogJWRlZmF1bHRdIiIiKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLWluJywgZGVzdD0iZG94eWZpbGVfaW5wdXRfcGF0aCIsIGFjdGlv
bj0nc3RvcmUnLCBkZWZhdWx0PSdkb2MvZG94eWZpbGUuaW4nLAotICAgICAgICBoZWxwPSIiIlBh
dGggdG8gZG94eWdlbiBpbnB1dHMuIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0td2l0aC1odG1sLWhlbHAnLCBkZXN0PSJ3aXRoX2h0bWxfaGVscCIsIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9IiIiRW5hYmxl
IGdlbmVyYXRpb24gb2YgTWljcm9zb2Z0IEhUTUwgSEVMUCIiIikKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1uby11bWwtbG9vaycsIGRlc3Q9IndpdGhfdW1sX2xvb2siLCBhY3Rpb249J3N0b3Jl
X2ZhbHNlJywgZGVmYXVsdD1UcnVlLAotICAgICAgICBoZWxwPSIiIkdlbmVyYXRlcyBET1QgZ3Jh
cGggd2l0aG91dCBVTUwgbG9vayBbRGVmYXVsdDogRmFsc2VdIiIiKQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctLW9wZW4nLCBkZXN0PSJvcGVuIiwgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJPcGVuIHRoZSBIVE1MIGluZGV4IGluIHRoZSB3ZWIg
YnJvd3NlciBhZnRlciBnZW5lcmF0aW9uIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRh
cmJhbGwnLCBkZXN0PSJtYWtlX3RhcmJhbGwiLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0
PUZhbHNlLAotICAgICAgICBoZWxwPSIiIkdlbmVyYXRlcyBhIHRhcmJhbGwgb2YgdGhlIGRvY3Vt
ZW50YXRpb24gaW4gZGlzdC8gZGlyZWN0b3J5IiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
cycsICctLXNpbGVudCcsIGRlc3Q9InNpbGVudCIsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1
bHQ9RmFsc2UsCi0gICAgICAgIGhlbHA9IiIiSGlkZXMgZG94eWdlbiBvdXRwdXQiIiIpCi0gICAg
cGFyc2VyLmVuYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgb3B0aW9ucywgYXJncyA9IHBh
cnNlci5wYXJzZV9hcmdzKCkKLSAgICBidWlsZF9kb2Mob3B0aW9ucykKLQotaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmFjZmFiMWM1YTNiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNs
dWRlL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1maWxlKEdM
T0IgSU5DTFVERV9GSUxFUyAianNvbi8qLmgiKQotaW5zdGFsbChGSUxFUwotICAgICR7SU5DTFVE
RV9GSUxFU30KLSAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0vaW5jbHVkZS9qc29uL3ZlcnNpb24u
aAotICAgIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9JTkNMVURFRElSfS9qc29uKQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9q
c29uL2FsbG9jYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWY5ODdlOTdi
MzEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hbGxvY2F0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlz
dGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRl
ciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2du
aXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFp
bCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNp
Zm5kZWYgQ1BQVExfSlNPTl9BTExPQ0FUT1JfSF9JTkNMVURFRAotI2RlZmluZSBDUFBUTF9KU09O
X0FMTE9DQVRPUl9IX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPG1l
bW9yeT4KLQotI3ByYWdtYSBwYWNrKHB1c2gsIDgpCi0KLW5hbWVzcGFjZSBKc29uIHsKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBTZWN1cmVBbGxvY2F0b3IgewotcHVibGljOgotICAvLyBU
eXBlIGRlZmluaXRpb25zCi0gIHVzaW5nIHZhbHVlX3R5cGUgPSBUOwotICB1c2luZyBwb2ludGVy
ID0gVCo7Ci0gIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSBjb25zdCBUKjsKLSAgdXNpbmcgcmVmZXJl
bmNlID0gVCY7Ci0gIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9IGNvbnN0IFQmOwotICB1c2luZyBz
aXplX3R5cGUgPSBzdGQ6OnNpemVfdDsKLSAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpw
dHJkaWZmX3Q7Ci0KLSAgLyoqCi0gICAqIEFsbG9jYXRlIG1lbW9yeSBmb3IgTiBpdGVtcyB1c2lu
ZyB0aGUgc3RhbmRhcmQgYWxsb2NhdG9yLgotICAgKi8KLSAgcG9pbnRlciBhbGxvY2F0ZShzaXpl
X3R5cGUgbikgewotICAgIC8vIGFsbG9jYXRlIHVzaW5nICJnbG9iYWwgb3BlcmF0b3IgbmV3Igot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb2ludGVyPig6Om9wZXJhdG9yIG5ldyhuICogc2l6ZW9m
KFQpKSk7Ci0gIH0KLQotICAvKioKLSAgICogUmVsZWFzZSBtZW1vcnkgd2hpY2ggd2FzIGFsbG9j
YXRlZCBmb3IgTiBpdGVtcyBhdCBwb2ludGVyIFAuCi0gICAqCi0gICAqIFRoZSBtZW1vcnkgYmxv
Y2sgaXMgZmlsbGVkIHdpdGggemVyb2VzIGJlZm9yZSBiZWluZyByZWxlYXNlZC4KLSAgICogVGhl
IHBvaW50ZXIgYXJndW1lbnQgaXMgdGFnZ2VkIGFzICJ2b2xhdGlsZSIgdG8gcHJldmVudCB0aGUK
LSAgICogY29tcGlsZXIgb3B0aW1pemluZyBvdXQgdGhpcyBjcml0aWNhbCBzdGVwLgotICAgKi8K
LSAgdm9pZCBkZWFsbG9jYXRlKHZvbGF0aWxlIHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4pIHsKLSAg
ICBzdGQ6Om1lbXNldChwLCAwLCBuICogc2l6ZW9mKFQpKTsKLSAgICAvLyBmcmVlIHVzaW5nICJn
bG9iYWwgb3BlcmF0b3IgZGVsZXRlIgotICAgIDo6b3BlcmF0b3IgZGVsZXRlKHApOwotICB9Ci0K
LSAgLyoqCi0gICAqIENvbnN0cnVjdCBhbiBpdGVtIGluLXBsYWNlIGF0IHBvaW50ZXIgUC4KLSAg
ICovCi0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIGNvbnN0cnVjdChwb2ludGVy
IHAsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgLy8gY29uc3RydWN0IHVzaW5nICJwbGFjZW1lbnQg
bmV3IiBhbmQgInBlcmZlY3QgZm9yd2FyZGluZyIKLSAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9p
ZCo+KHApKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gIH0KLQotICBzaXplX3R5
cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKFQpOyB9Ci0K
LSAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB4KSBjb25zdCB7IHJldHVybiBzdGQ6OmFkZHJl
c3NvZih4KTsgfQotCi0gIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgeCkg
Y29uc3QgeyByZXR1cm4gc3RkOjphZGRyZXNzb2YoeCk7IH0KLQotICAvKioKLSAgICogRGVzdHJv
eSBhbiBpdGVtIGluLXBsYWNlIGF0IHBvaW50ZXIgUC4KLSAgICovCi0gIHZvaWQgZGVzdHJveShw
b2ludGVyIHApIHsKLSAgICAvLyBkZXN0cm95IHVzaW5nICJleHBsaWNpdCBkZXN0cnVjdG9yIgot
ICAgIHAtPn5UKCk7Ci0gIH0KLQotICAvLyBCb2lsZXJwbGF0ZQotICBTZWN1cmVBbGxvY2F0b3Io
KSB7fQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gU2VjdXJlQWxsb2NhdG9yKGNvbnN0IFNlY3Vy
ZUFsbG9jYXRvcjxVPiYpIHt9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdHJ1Y3QgcmViaW5k
IHsgdXNpbmcgb3RoZXIgPSBTZWN1cmVBbGxvY2F0b3I8VT47IH07Ci19OwotCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBTZWN1cmVBbGxv
Y2F0b3I8VD4mLCBjb25zdCBTZWN1cmVBbGxvY2F0b3I8VT4mKSB7Ci0gIHJldHVybiB0cnVlOwot
fQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWJvb2wgb3BlcmF0b3IhPShj
b25zdCBTZWN1cmVBbGxvY2F0b3I8VD4mLCBjb25zdCBTZWN1cmVBbGxvY2F0b3I8VT4mKSB7Ci0g
IHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSnNvbgotCi0jcHJhZ21hIHBhY2so
cG9wKQotCi0jZW5kaWYgLy8gQ1BQVExfSlNPTl9BTExPQ0FUT1JfSF9JTkNMVURFRApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vYXNzZXJ0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24v
YXNzZXJ0aW9ucy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDcxNmIwNjc0YmEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hc3NlcnRpb25zLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3Rl
IExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIg
TUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6
ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwg
b3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWZu
ZGVmIENQUFRMX0pTT05fQVNTRVJUSU9OU19IX0lOQ0xVREVECi0jZGVmaW5lIENQUFRMX0pTT05f
QVNTRVJUSU9OU19IX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPHNz
dHJlYW0+Ci0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlICJj
b25maWcuaCIKLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLQot
LyoqIEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgZm9yIGEgbWFsaWNpb3VzbHkgZGVzaWduZWQg
ZmlsZSB0bwotICogIGNhdXNlIGFuIGFib3J0KCkgb3Igc2VnLWZhdWx0LCBzbyB0aGVzZSBtYWNy
b3MgYXJlIHVzZWQgb25seQotICogIGZvciBwcmUtY29uZGl0aW9uIHZpb2xhdGlvbnMgYW5kIGlu
dGVybmFsIGxvZ2ljIGVycm9ycy4KLSAqLwotI2lmIEpTT05fVVNFX0VYQ0VQVElPTgotCi0vLyBA
dG9kbyA8PSBhZGQgZGV0YWlsIGFib3V0IGNvbmRpdGlvbiBpbiBleGNlcHRpb24KLSNkZWZpbmUg
SlNPTl9BU1NFUlQoY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICghKGNvbmRp
dGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgIEpzb246OnRocm93TG9naWNFcnJvcigiYXNzZXJ0IGpzb24gZmFpbGVk
Iik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICB9Ci0KLSNkZWZpbmUgSlNPTl9GQUlMX01FU1NBR0UobWVzc2FnZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIE9TdHJpbmdTdHJlYW0gb3NzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvc3MgPDwgbWVzc2FnZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
SnNvbjo6dGhyb3dMb2dpY0Vycm9yKG9zcy5zdHIoKSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIGFib3J0KCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfQotCi0jZWxz
ZSAvLyBKU09OX1VTRV9FWENFUFRJT04KLQotI2RlZmluZSBKU09OX0FTU0VSVChjb25kaXRpb24p
IGFzc2VydChjb25kaXRpb24pCi0KLS8vIFRoZSBjYWxsIHRvIGFzc2VydCgpIHdpbGwgc2hvdyB0
aGUgZmFpbHVyZSBtZXNzYWdlIGluIGRlYnVnIGJ1aWxkcy4gSW4KLS8vIHJlbGVhc2UgYnVpbGRz
IHdlIGFib3J0LCBmb3IgYSBjb3JlLWR1bXAgb3IgZGVidWdnZXIuCi0jZGVmaW5lIEpTT05fRkFJ
TF9NRVNTQUdFKG1lc3NhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBPU3RyaW5nU3RyZWFtIG9zczsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgb3NzIDw8IG1lc3NhZ2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGFzc2VydChmYWxzZSAmJiBvc3Muc3RyKCku
Y19zdHIoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBh
Ym9ydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gIH0KLQotI2VuZGlmCi0KLSNkZWZpbmUgSlNPTl9BU1NFUlRf
TUVTU0FHRShjb25kaXRpb24sIG1lc3NhZ2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gIGlmICghKGNvbmRpdGlvbikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEpTT05fRkFJTF9NRVNTQUdFKG1lc3Nh
Z2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
fQotCi0jZW5kaWYgLy8gQ1BQVExfSlNPTl9BU1NFUlRJT05TX0hfSU5DTFVERUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvaW5jbHVkZS9qc29uL2F1dG9saW5rLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hdXRv
bGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmMwZjAwMjRmYzguLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9hdXRvbGluay5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxl
dXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNl
bnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlv
dXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkg
YXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBKU09O
X0FVVE9MSU5LX0hfSU5DTFVERUQKLSNkZWZpbmUgSlNPTl9BVVRPTElOS19IX0lOQ0xVREVECi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmZGVmIEpTT05fSU5fQ1BQVEwKLSNpbmNsdWRlIDxj
cHB0bC9jcHB0bF9hdXRvbGluay5oPgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChKU09OX05PX0FV
VE9MSU5LKSAmJiAhZGVmaW5lZChKU09OX0RMTF9CVUlMRCkgJiYgICAgICAgICAgICAgICAgICBc
Ci0gICAgIWRlZmluZWQoSlNPTl9JTl9DUFBUTCkKLSNkZWZpbmUgQ1BQVExfQVVUT0xJTktfTkFN
RSAianNvbiIKLSN1bmRlZiBDUFBUTF9BVVRPTElOS19ETEwKLSNpZmRlZiBKU09OX0RMTAotI2Rl
ZmluZSBDUFBUTF9BVVRPTElOS19ETEwKLSNlbmRpZgotI2luY2x1ZGUgImF1dG9saW5rLmgiCi0j
ZW5kaWYKLQotI2VuZGlmIC8vIEpTT05fQVVUT0xJTktfSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9pbmNsdWRlL2pzb24vY29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9jb25maWcuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyNGFkOTVhMGU4Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODAg
KzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRo
ZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBw
dWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNk
aWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDov
L2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBKU09OX0NPTkZJR19I
X0lOQ0xVREVECi0jZGVmaW5lIEpTT05fQ09ORklHX0hfSU5DTFVERUQKLSNpbmNsdWRlIDxjc3Rk
ZGVmPgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxt
ZW1vcnk+Ci0jaW5jbHVkZSA8b3N0cmVhbT4KLSNpbmNsdWRlIDxzc3RyZWFtPgotI2luY2x1ZGUg
PHN0cmluZz4KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLQotLy8vIElmIGRlZmluZWQsIGluZGlj
YXRlcyB0aGF0IGpzb24gbGlicmFyeSBpcyBlbWJlZGRlZCBpbiBDcHBUTCBsaWJyYXJ5LgotLy8j
IGRlZmluZSBKU09OX0lOX0NQUFRMIDEKLQotLy8vIElmIGRlZmluZWQsIGluZGljYXRlcyB0aGF0
IGpzb24gbWF5IGxldmVyYWdlIENwcFRMIGxpYnJhcnkKLS8vIyAgZGVmaW5lIEpTT05fVVNFX0NQ
UFRMIDEKLS8vLyBJZiBkZWZpbmVkLCBpbmRpY2F0ZXMgdGhhdCBjcHB0bCB2ZWN0b3IgYmFzZWQg
bWFwIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YKLS8vLyBzdGQ6Om1hcAotLy8vIGFzIFZhbHVl
IGNvbnRhaW5lci4KLS8vIyAgZGVmaW5lIEpTT05fVVNFX0NQUFRMX1NNQUxMTUFQIDEKLQotLy8g
SWYgbm9uLXplcm8sIHRoZSBsaWJyYXJ5IHVzZXMgZXhjZXB0aW9ucyB0byByZXBvcnQgYmFkIGlu
cHV0IGluc3RlYWQgb2YgQwotLy8gYXNzZXJ0aW9uIG1hY3Jvcy4gVGhlIGRlZmF1bHQgaXMgdG8g
dXNlIGV4Y2VwdGlvbnMuCi0jaWZuZGVmIEpTT05fVVNFX0VYQ0VQVElPTgotI2RlZmluZSBKU09O
X1VTRV9FWENFUFRJT04gMQotI2VuZGlmCi0KLS8vIFRlbXBvcmFyeSwgdHJhY2tlZCBmb3IgcmVt
b3ZhbCB3aXRoIGlzc3VlICM5ODIuCi0jaWZuZGVmIEpTT05fVVNFX05VTExSRUYKLSNkZWZpbmUg
SlNPTl9VU0VfTlVMTFJFRiAxCi0jZW5kaWYKLQotLy8vIElmIGRlZmluZWQsIGluZGljYXRlcyB0
aGF0IHRoZSBzb3VyY2UgZmlsZSBpcyBhbWFsZ2FtYXRlZAotLy8vIHRvIHByZXZlbnQgcHJpdmF0
ZSBoZWFkZXIgaW5jbHVzaW9uLgotLy8vIFJlbWFya3M6IGl0IGlzIGF1dG9tYXRpY2FsbHkgZGVm
aW5lZCBpbiB0aGUgZ2VuZXJhdGVkIGFtYWxnYW1hdGVkIGhlYWRlci4KLS8vICNkZWZpbmUgSlNP
Tl9JU19BTUFMR0FNQVRJT04KLQotI2lmZGVmIEpTT05fSU5fQ1BQVEwKLSNpbmNsdWRlIDxjcHB0
bC9jb25maWcuaD4KLSNpZm5kZWYgSlNPTl9VU0VfQ1BQVEwKLSNkZWZpbmUgSlNPTl9VU0VfQ1BQ
VEwgMQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIEpTT05fSU5fQ1BQVEwKLSNkZWZpbmUgSlNP
Tl9BUEkgQ1BQVExfQVBJCi0jZWxpZiBkZWZpbmVkKEpTT05fRExMX0JVSUxEKQotI2lmIGRlZmlu
ZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19NSU5HVzMyX18pCi0jZGVmaW5lIEpTT05fQVBJIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KQotI2RlZmluZSBKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFD
RV9XQVJOSU5HCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykK
LSNkZWZpbmUgSlNPTl9BUEkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkK
LSNlbmRpZiAvLyBpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2VsaWYgZGVmaW5lZChKU09OX0RMTCkK
LSNpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKQotI2RlZmluZSBK
U09OX0FQSSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSNkZWZpbmUgSlNPTkNQUF9ESVNBQkxFX0RM
TF9JTlRFUkZBQ0VfV0FSTklORwotI2VuZGlmIC8vIGlmIGRlZmluZWQoX01TQ19WRVIpCi0jZW5k
aWYgLy8gaWZkZWYgSlNPTl9JTl9DUFBUTAotI2lmICFkZWZpbmVkKEpTT05fQVBJKQotI2RlZmlu
ZSBKU09OX0FQSQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8
IDE4MDAKLSNlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIkVSUk9SOiAgVmlzdWFsIFN0dWRp
byAxMiAoMjAxMykgd2l0aCBfTVNDX1ZFUj0xODAwIGlzIHRoZSBvbGRlc3Qgc3VwcG9ydGVkIGNv
bXBpbGVyIHdpdGggc3VmZmljaWVudCBDKysxMSBjYXBhYmlsaXRpZXMiCi0jZW5kaWYKLQotI2lm
IGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSIDwgMTkwMAotLy8gQXMgcmVjb21tZW5kZWQg
YXQKLS8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI5MTU2NzIvc25wcmlu
dGYtYW5kLXZpc3VhbC1zdHVkaW8tMjAxMAotZXh0ZXJuIEpTT05fQVBJIGludAotbXN2Y19wcmUx
OTAwX2M5OV9zbnByaW50ZihjaGFyKiBvdXRCdWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLik7Ci0jZGVmaW5lIGpzb25jcHBfc25wcmludGYgbXN2Y19wcmUxOTAwX2M5OV9z
bnByaW50ZgotI2Vsc2UKLSNkZWZpbmUganNvbmNwcF9zbnByaW50ZiBzdGQ6OnNucHJpbnRmCi0j
ZW5kaWYKLQotLy8gSWYgSlNPTl9OT19JTlQ2NCBpcyBkZWZpbmVkLCB0aGVuIEpzb24gb25seSBz
dXBwb3J0IEMrKyAiaW50IiB0eXBlIGZvcgotLy8gaW50ZWdlcgotLy8gU3RvcmFnZXMsIGFuZCA2
NCBiaXRzIGludGVnZXIgc3VwcG9ydCBpcyBkaXNhYmxlZC4KLS8vICNkZWZpbmUgSlNPTl9OT19J
TlQ2NCAxCi0KLS8vIEpTT05DUFBfT1ZFUlJJREUgaXMgbWFpbnRhaW5lZCBmb3IgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkgb2YgZXh0ZXJuYWwgdG9vbHMuCi0vLyBDKysxMSBzaG91bGQgYmUgdXNl
ZCBkaXJlY3RseSBpbiBKU09OQ1BQLgotI2RlZmluZSBKU09OQ1BQX09WRVJSSURFIG92ZXJyaWRl
Ci0KLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCi0jZGVmaW5lIEpTT05DUFBfTk9FWENFUFQg
bm9leGNlcHQKLSNkZWZpbmUgSlNPTkNQUF9PUF9FWFBMSUNJVCBleHBsaWNpdAotI2VsaWYgZGVm
aW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxOTAwCi0jZGVmaW5lIEpTT05DUFBfTk9FWENF
UFQgdGhyb3coKQotI2RlZmluZSBKU09OQ1BQX09QX0VYUExJQ0lUIGV4cGxpY2l0Ci0jZWxpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxOTAwCi0jZGVmaW5lIEpTT05DUFBfTk9F
WENFUFQgbm9leGNlcHQKLSNkZWZpbmUgSlNPTkNQUF9PUF9FWFBMSUNJVCBleHBsaWNpdAotI2Vs
c2UKLSNkZWZpbmUgSlNPTkNQUF9OT0VYQ0VQVCB0aHJvdygpCi0jZGVmaW5lIEpTT05DUFBfT1Bf
RVhQTElDSVQKLSNlbmRpZgotCi0jaWZkZWYgX19jbGFuZ19fCi0jaWYgX19oYXNfZXh0ZW5zaW9u
KGF0dHJpYnV0ZV9kZXByZWNhdGVkX3dpdGhfbWVzc2FnZSkKLSNkZWZpbmUgSlNPTkNQUF9ERVBS
RUNBVEVEKG1lc3NhZ2UpIF9fYXR0cmlidXRlX18oKGRlcHJlY2F0ZWQobWVzc2FnZSkpKQotI2Vu
ZGlmCi0jZWxpZiBkZWZpbmVkIF9fR05VQ19fIC8vIG5vdCBjbGFuZyAoZ2NjIGNvbWVzIGxhdGVy
IHNpbmNlIGNsYW5nIGVtdWxhdGVzIGdjYykKLSNpZiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNf
XyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDUpKQotI2RlZmluZSBKU09OQ1BQX0RFUFJFQ0FU
RUQobWVzc2FnZSkgX19hdHRyaWJ1dGVfXygoZGVwcmVjYXRlZChtZXNzYWdlKSkpCi0jZWxpZiAo
X19HTlVDX18gPiAzIHx8IChfX0dOVUNfXyA9PSAzICYmIF9fR05VQ19NSU5PUl9fID49IDEpKQot
I2RlZmluZSBKU09OQ1BQX0RFUFJFQ0FURUQobWVzc2FnZSkgX19hdHRyaWJ1dGVfXygoX19kZXBy
ZWNhdGVkX18pKQotI2VuZGlmICAgICAgICAgICAgICAgICAgLy8gR05VQyB2ZXJzaW9uCi0jZWxp
ZiBkZWZpbmVkKF9NU0NfVkVSKSAvLyBNU1ZDIChhZnRlciBjbGFuZyBiZWNhdXNlIGNsYW5nIG9u
IFdpbmRvd3MgZW11bGF0ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1TVkMpCi0jZGVm
aW5lIEpTT05DUFBfREVQUkVDQVRFRChtZXNzYWdlKSBfX2RlY2xzcGVjKGRlcHJlY2F0ZWQobWVz
c2FnZSkpCi0jZW5kaWYgLy8gX19jbGFuZ19fIHx8IF9fR05VQ19fIHx8IF9NU0NfVkVSCi0KLSNp
ZiAhZGVmaW5lZChKU09OQ1BQX0RFUFJFQ0FURUQpCi0jZGVmaW5lIEpTT05DUFBfREVQUkVDQVRF
RChtZXNzYWdlKQotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05DUFBfREVQUkVDQVRFRCkKLQot
I2lmIF9fR05VQ19fID49IDYKLSNkZWZpbmUgSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJ
T04gMQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLQotI2lu
Y2x1ZGUgImFsbG9jYXRvci5oIgotI2luY2x1ZGUgInZlcnNpb24uaCIKLQotI2VuZGlmIC8vIGlm
ICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotCi1uYW1lc3BhY2UgSnNvbiB7Ci10eXBl
ZGVmIGludCBJbnQ7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSW50OwotI2lmIGRlZmluZWQoSlNP
Tl9OT19JTlQ2NCkKLXR5cGVkZWYgaW50IExhcmdlc3RJbnQ7Ci10eXBlZGVmIHVuc2lnbmVkIGlu
dCBMYXJnZXN0VUludDsKLSN1bmRlZiBKU09OX0hBU19JTlQ2NAotI2Vsc2UgICAgICAgICAgICAg
ICAgIC8vIGlmIGRlZmluZWQoSlNPTl9OT19JTlQ2NCkKLS8vIEZvciBNaWNyb3NvZnQgVmlzdWFs
IHVzZSBzcGVjaWZpYyB0eXBlcyBhcyBsb25nIGxvbmcgaXMgbm90IHN1cHBvcnRlZAotI2lmIGRl
ZmluZWQoX01TQ19WRVIpIC8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCi10eXBlZGVmIF9faW50
NjQgSW50NjQ7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVUludDY0OwotI2Vsc2UgICAgICAg
ICAgICAgICAgIC8vIGlmIGRlZmluZWQoX01TQ19WRVIpIC8vIE90aGVyIHBsYXRmb3JtcywgdXNl
IGxvbmcgbG9uZwotdHlwZWRlZiBpbnQ2NF90IEludDY0OwotdHlwZWRlZiB1aW50NjRfdCBVSW50
NjQ7Ci0jZW5kaWYgICAgICAgICAgICAgICAgLy8gaWYgZGVmaW5lZChfTVNDX1ZFUikKLXR5cGVk
ZWYgSW50NjQgTGFyZ2VzdEludDsKLXR5cGVkZWYgVUludDY0IExhcmdlc3RVSW50OwotI2RlZmlu
ZSBKU09OX0hBU19JTlQ2NAotI2VuZGlmIC8vIGlmIGRlZmluZWQoSlNPTl9OT19JTlQ2NCkKLQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci11c2luZyBBbGxvY2F0b3IgPSB0eXBlbmFtZSBzdGQ6OmNv
bmRpdGlvbmFsPEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VjdXJlQWxsb2NhdG9yPFQ+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFsbG9jYXRvcjxUPj46OnR5
cGU7Ci11c2luZyBTdHJpbmcgPSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJh
aXRzPGNoYXI+LCBBbGxvY2F0b3I8Y2hhcj4+OwotdXNpbmcgSVN0cmluZ1N0cmVhbSA9IHN0ZDo6
YmFzaWNfaXN0cmluZ3N0cmVhbTxTdHJpbmc6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6dHJhaXRzX3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6YWxsb2Nh
dG9yX3R5cGU+OwotdXNpbmcgT1N0cmluZ1N0cmVhbSA9IHN0ZDo6YmFzaWNfb3N0cmluZ3N0cmVh
bTxTdHJpbmc6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZzo6dHJhaXRzX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzo6YWxsb2NhdG9yX3R5cGU+OwotdXNpbmcg
SVN0cmVhbSA9IHN0ZDo6aXN0cmVhbTsKLXVzaW5nIE9TdHJlYW0gPSBzdGQ6Om9zdHJlYW07Ci19
IC8vIG5hbWVzcGFjZSBKc29uCi0KLS8vIExlZ2FjeSBuYW1lcyAoZm9ybWVybHkgbWFjcm9zKS4K
LXVzaW5nIEpTT05DUFBfU1RSSU5HID0gSnNvbjo6U3RyaW5nOwotdXNpbmcgSlNPTkNQUF9JU1RS
SU5HU1RSRUFNID0gSnNvbjo6SVN0cmluZ1N0cmVhbTsKLXVzaW5nIEpTT05DUFBfT1NUUklOR1NU
UkVBTSA9IEpzb246Ok9TdHJpbmdTdHJlYW07Ci11c2luZyBKU09OQ1BQX0lTVFJFQU0gPSBKc29u
OjpJU3RyZWFtOwotdXNpbmcgSlNPTkNQUF9PU1RSRUFNID0gSnNvbjo6T1N0cmVhbTsKLQotI2Vu
ZGlmIC8vIEpTT05fQ09ORklHX0hfSU5DTFVERUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9q
c29uL2ZlYXR1cmVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYTI1ZThkYTY0NmEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L2luY2x1ZGUvanNvbi9mZWF0dXJlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3Bw
IEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9t
YWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgot
Ly8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAu
c291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBDUFBUTF9KU09OX0ZFQVRVUkVTX0hf
SU5DTFVERUQKLSNkZWZpbmUgQ1BQVExfSlNPTl9GRUFUVVJFU19IX0lOQ0xVREVECi0KLSNpZiAh
ZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlICJmb3J3YXJkcy5oIgotI2Vu
ZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotCi0jcHJhZ21hIHBhY2so
cHVzaCwgOCkKLQotbmFtZXNwYWNlIEpzb24gewotCi0vKiogXGJyaWVmIENvbmZpZ3VyYXRpb24g
cGFzc2VkIHRvIHJlYWRlciBhbmQgd3JpdGVyLgotICogVGhpcyBjb25maWd1cmF0aW9uIG9iamVj
dCBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgUmVhZGVyIG9yIFdyaXRlcgotICogdG8gYmVoYXZl
IGluIGEgc3RhbmRhcmQgY29uZm9ybWluZyB3YXkuCi0gKi8KLWNsYXNzIEpTT05fQVBJIEZlYXR1
cmVzIHsKLXB1YmxpYzoKLSAgLyoqIFxicmllZiBBIGNvbmZpZ3VyYXRpb24gdGhhdCBhbGxvd3Mg
YWxsIGZlYXR1cmVzIGFuZCBhc3N1bWVzIGFsbCBzdHJpbmdzCi0gICAqIGFyZSBVVEYtOC4KLSAg
ICogLSBDICYgQysrIGNvbW1lbnRzIGFyZSBhbGxvd2VkCi0gICAqIC0gUm9vdCBvYmplY3QgY2Fu
IGJlIGFueSBKU09OIHZhbHVlCi0gICAqIC0gQXNzdW1lcyBWYWx1ZSBzdHJpbmdzIGFyZSBlbmNv
ZGVkIGluIFVURi04Ci0gICAqLwotICBzdGF0aWMgRmVhdHVyZXMgYWxsKCk7Ci0KLSAgLyoqIFxi
cmllZiBBIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBzdHJpY3RseSBjb21wYXRpYmxlIHdpdGggdGhl
IEpTT04KLSAgICogc3BlY2lmaWNhdGlvbi4KLSAgICogLSBDb21tZW50cyBhcmUgZm9yYmlkZGVu
LgotICAgKiAtIFJvb3Qgb2JqZWN0IG11c3QgYmUgZWl0aGVyIGFuIGFycmF5IG9yIGFuIG9iamVj
dCB2YWx1ZS4KLSAgICogLSBBc3N1bWVzIFZhbHVlIHN0cmluZ3MgYXJlIGVuY29kZWQgaW4gVVRG
LTgKLSAgICovCi0gIHN0YXRpYyBGZWF0dXJlcyBzdHJpY3RNb2RlKCk7Ci0KLSAgLyoqIFxicmll
ZiBJbml0aWFsaXplIHRoZSBjb25maWd1cmF0aW9uIGxpa2UgSnNvbkNvbmZpZzo6YWxsRmVhdHVy
ZXM7Ci0gICAqLwotICBGZWF0dXJlcygpOwotCi0gIC8vLyBcYyB0cnVlIGlmIGNvbW1lbnRzIGFy
ZSBhbGxvd2VkLiBEZWZhdWx0OiBcYyB0cnVlLgotICBib29sIGFsbG93Q29tbWVudHNfe3RydWV9
OwotCi0gIC8vLyBcYyB0cnVlIGlmIHJvb3QgbXVzdCBiZSBlaXRoZXIgYW4gYXJyYXkgb3IgYW4g
b2JqZWN0IHZhbHVlLiBEZWZhdWx0OiBcYwotICAvLy8gZmFsc2UuCi0gIGJvb2wgc3RyaWN0Um9v
dF97ZmFsc2V9OwotCi0gIC8vLyBcYyB0cnVlIGlmIGRyb3BwZWQgbnVsbCBwbGFjZWhvbGRlcnMg
YXJlIGFsbG93ZWQuIERlZmF1bHQ6IFxjIGZhbHNlLgotICBib29sIGFsbG93RHJvcHBlZE51bGxQ
bGFjZWhvbGRlcnNfe2ZhbHNlfTsKLQotICAvLy8gXGMgdHJ1ZSBpZiBudW1lcmljIG9iamVjdCBr
ZXkgYXJlIGFsbG93ZWQuIERlZmF1bHQ6IFxjIGZhbHNlLgotICBib29sIGFsbG93TnVtZXJpY0tl
eXNfe2ZhbHNlfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KLQotI3ByYWdtYSBwYWNrKHBv
cCkKLQotI2VuZGlmIC8vIENQUFRMX0pTT05fRkVBVFVSRVNfSF9JTkNMVURFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS9pbmNsdWRlL2pzb24vZm9yd2FyZHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2Zvcndh
cmRzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OGI1YmNjODAzNC4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL2ZvcndhcmRzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1
ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vu
c2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91
ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBh
dCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWZuZGVmIEpTT05f
Rk9SV0FSRFNfSF9JTkNMVURFRAotI2RlZmluZSBKU09OX0ZPUldBUkRTX0hfSU5DTFVERUQKLQot
I2lmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotCi1uYW1lc3BhY2Ug
SnNvbiB7Ci0KLS8vIHdyaXRlci5oCi1jbGFzcyBTdHJlYW1Xcml0ZXI7Ci1jbGFzcyBTdHJlYW1X
cml0ZXJCdWlsZGVyOwotY2xhc3MgV3JpdGVyOwotY2xhc3MgRmFzdFdyaXRlcjsKLWNsYXNzIFN0
eWxlZFdyaXRlcjsKLWNsYXNzIFN0eWxlZFN0cmVhbVdyaXRlcjsKLQotLy8gcmVhZGVyLmgKLWNs
YXNzIFJlYWRlcjsKLWNsYXNzIENoYXJSZWFkZXI7Ci1jbGFzcyBDaGFyUmVhZGVyQnVpbGRlcjsK
LQotLy8gZmVhdHVyZXMuaAotY2xhc3MgRmVhdHVyZXM7Ci0KLS8vIHZhbHVlLmgKLXR5cGVkZWYg
dW5zaWduZWQgaW50IEFycmF5SW5kZXg7Ci1jbGFzcyBTdGF0aWNTdHJpbmc7Ci1jbGFzcyBQYXRo
OwotY2xhc3MgUGF0aEFyZ3VtZW50OwotY2xhc3MgVmFsdWU7Ci1jbGFzcyBWYWx1ZUl0ZXJhdG9y
QmFzZTsKLWNsYXNzIFZhbHVlSXRlcmF0b3I7Ci1jbGFzcyBWYWx1ZUNvbnN0SXRlcmF0b3I7Ci0K
LX0gLy8gbmFtZXNwYWNlIEpzb24KLQotI2VuZGlmIC8vIEpTT05fRk9SV0FSRFNfSF9JTkNMVURF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vanNvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pz
b24vanNvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWYxNGMyNjY0YTYuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9qc29uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1
ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vu
c2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91
ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBh
dCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWZuZGVmIEpTT05f
SlNPTl9IX0lOQ0xVREVECi0jZGVmaW5lIEpTT05fSlNPTl9IX0lOQ0xVREVECi0KLSNpbmNsdWRl
ICJhdXRvbGluay5oIgotI2luY2x1ZGUgImZlYXR1cmVzLmgiCi0jaW5jbHVkZSAicmVhZGVyLmgi
Ci0jaW5jbHVkZSAidmFsdWUuaCIKLSNpbmNsdWRlICJ3cml0ZXIuaCIKLQotI2VuZGlmIC8vIEpT
T05fSlNPTl9IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9yZWFkZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvaW5jbHVkZS9qc29uL3JlYWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwZjQ4OWQ2YWRiMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL2luY2x1ZGUvanNvbi9y
ZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAw
Ny0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlz
dHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBh
bmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNF
TlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQv
TElDRU5TRQotCi0jaWZuZGVmIENQUFRMX0pTT05fUkVBREVSX0hfSU5DTFVERUQKLSNkZWZpbmUg
Q1BQVExfSlNPTl9SRUFERVJfSF9JTkNMVURFRAotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFM
R0FNQVRJT04pCi0jaW5jbHVkZSAiZmVhdHVyZXMuaCIKLSNpbmNsdWRlICJ2YWx1ZS5oIgotI2Vu
ZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgPGRlcXVl
PgotI2luY2x1ZGUgPGlvc2Z3ZD4KLSNpbmNsdWRlIDxpc3RyZWFtPgotI2luY2x1ZGUgPHN0YWNr
PgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy8gRGlzYWJsZSB3YXJuaW5nIEM0MjUxOiA8ZGF0YSBt
ZW1iZXI+OiA8dHlwZT4gbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvCi0vLyBiZSB1c2Vk
IGJ5Li4uCi0jaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9XQVJOSU5H
KQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEp
Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9XQVJO
SU5HKQotCi0jcHJhZ21hIHBhY2socHVzaCwgOCkKLQotbmFtZXNwYWNlIEpzb24gewotCi0vKiog
XGJyaWVmIFVuc2VyaWFsaXplIGEgPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNPTjwv
YT4gZG9jdW1lbnQgaW50byBhCi0gKlZhbHVlLgotICoKLSAqIFxkZXByZWNhdGVkIFVzZSBDaGFy
UmVhZGVyIGFuZCBDaGFyUmVhZGVyQnVpbGRlci4KLSAqLwotY2xhc3MgSlNPTl9BUEkgUmVhZGVy
IHsKLXB1YmxpYzoKLSAgdHlwZWRlZiBjaGFyIENoYXI7Ci0gIHR5cGVkZWYgY29uc3QgQ2hhciog
TG9jYXRpb247Ci0KLSAgLyoqIFxicmllZiBBbiBlcnJvciB0YWdnZWQgd2l0aCB3aGVyZSBpbiB0
aGUgSlNPTiB0ZXh0IGl0IHdhcyBlbmNvdW50ZXJlZC4KLSAgICoKLSAgICogVGhlIG9mZnNldHMg
Z2l2ZSB0aGUgW3N0YXJ0LCBsaW1pdCkgcmFuZ2Ugb2YgYnl0ZXMgd2l0aGluIHRoZSB0ZXh0LiBO
b3RlCi0gICAqIHRoYXQgdGhpcyBpcyBieXRlcywgbm90IGNvZGVwb2ludHMuCi0gICAqCi0gICAq
LwotICBzdHJ1Y3QgU3RydWN0dXJlZEVycm9yIHsKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0X3N0YXJ0
OwotICAgIHB0cmRpZmZfdCBvZmZzZXRfbGltaXQ7Ci0gICAgU3RyaW5nIG1lc3NhZ2U7Ci0gIH07
Ci0KLSAgLyoqIFxicmllZiBDb25zdHJ1Y3RzIGEgUmVhZGVyIGFsbG93aW5nIGFsbCBmZWF0dXJl
cwotICAgKiBmb3IgcGFyc2luZy4KLSAgICovCi0gIEpTT05DUFBfREVQUkVDQVRFRCgiVXNlIENo
YXJSZWFkZXIgYW5kIENoYXJSZWFkZXJCdWlsZGVyIGluc3RlYWQiKQotICBSZWFkZXIoKTsKLQot
ICAvKiogXGJyaWVmIENvbnN0cnVjdHMgYSBSZWFkZXIgYWxsb3dpbmcgdGhlIHNwZWNpZmllZCBm
ZWF0dXJlIHNldAotICAgKiBmb3IgcGFyc2luZy4KLSAgICovCi0gIEpTT05DUFBfREVQUkVDQVRF
RCgiVXNlIENoYXJSZWFkZXIgYW5kIENoYXJSZWFkZXJCdWlsZGVyIGluc3RlYWQiKQotICBSZWFk
ZXIoY29uc3QgRmVhdHVyZXMmIGZlYXR1cmVzKTsKLQotICAvKiogXGJyaWVmIFJlYWQgYSBWYWx1
ZSBmcm9tIGEgPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNPTjwvYT4KLSAgICogZG9j
dW1lbnQuCi0gICAqIFxwYXJhbSBkb2N1bWVudCBVVEYtOCBlbmNvZGVkIHN0cmluZyBjb250YWlu
aW5nIHRoZSBkb2N1bWVudCB0byByZWFkLgotICAgKiBccGFyYW0gcm9vdCBbb3V0XSBDb250YWlu
cyB0aGUgcm9vdCB2YWx1ZSBvZiB0aGUgZG9jdW1lbnQgaWYgaXQgd2FzCi0gICAqICAgICAgICAg
ICAgIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAqIFxwYXJhbSBjb2xsZWN0Q29tbWVudHMgXGMg
dHJ1ZSB0byBjb2xsZWN0IGNvbW1lbnQgYW5kIGFsbG93IHdyaXRpbmcgdGhlbQotICAgKiBiYWNr
IGR1cmluZwotICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24sIFxjIGZh
bHNlIHRvIGRpc2NhcmQgY29tbWVudHMuCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgVGhp
cyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBpZgotICAgKiBGZWF0dXJlczo6YWxsb3dDb21tZW50c18K
LSAgICogICAgICAgICAgICAgICAgICAgICAgICBpcyBcYyBmYWxzZS4KLSAgICogXHJldHVybiBc
YyB0cnVlIGlmIHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgXGMgZmFsc2Ug
aWYgYW4KLSAgICogZXJyb3Igb2NjdXJyZWQuCi0gICAqLwotICBib29sCi0gIHBhcnNlKGNvbnN0
IHN0ZDo6c3RyaW5nJiBkb2N1bWVudCwgVmFsdWUmIHJvb3QsIGJvb2wgY29sbGVjdENvbW1lbnRz
ID0gdHJ1ZSk7Ci0KLSAgLyoqIFxicmllZiBSZWFkIGEgVmFsdWUgZnJvbSBhIDxhIEhSRUY9Imh0
dHA6Ly93d3cuanNvbi5vcmciPkpTT048L2E+Ci0gICBkb2N1bWVudC4KLSAgICogXHBhcmFtIGJl
Z2luRG9jIFBvaW50ZXIgb24gdGhlIGJlZ2lubmluZyBvZiB0aGUgVVRGLTggZW5jb2RlZCBzdHJp
bmcgb2YgdGhlCi0gICBkb2N1bWVudCB0byByZWFkLgotICAgKiBccGFyYW0gZW5kRG9jIFBvaW50
ZXIgb24gdGhlIGVuZCBvZiB0aGUgVVRGLTggZW5jb2RlZCBzdHJpbmcgb2YgdGhlCi0gICBkb2N1
bWVudCB0byByZWFkLgotICAgKiAgICAgICAgICAgICAgIE11c3QgYmUgPj0gYmVnaW5Eb2MuCi0g
ICAqIFxwYXJhbSByb290IFtvdXRdIENvbnRhaW5zIHRoZSByb290IHZhbHVlIG9mIHRoZSBkb2N1
bWVudCBpZiBpdCB3YXMKLSAgICogICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4KLSAg
ICogXHBhcmFtIGNvbGxlY3RDb21tZW50cyBcYyB0cnVlIHRvIGNvbGxlY3QgY29tbWVudCBhbmQg
YWxsb3cgd3JpdGluZyB0aGVtCi0gICBiYWNrIGR1cmluZwotICAgKiAgICAgICAgICAgICAgICAg
ICAgICAgIHNlcmlhbGl6YXRpb24sIFxjIGZhbHNlIHRvIGRpc2NhcmQgY29tbWVudHMuCi0gICAq
ICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBpZgotICAg
RmVhdHVyZXM6OmFsbG93Q29tbWVudHNfCi0gICAqICAgICAgICAgICAgICAgICAgICAgICAgaXMg
XGMgZmFsc2UuCi0gICAqIFxyZXR1cm4gXGMgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2FzIHN1Y2Nl
c3NmdWxseSBwYXJzZWQsIFxjIGZhbHNlIGlmIGFuCi0gICBlcnJvciBvY2N1cnJlZC4KLSAgICov
Ci0gIGJvb2wgcGFyc2UoY29uc3QgY2hhciogYmVnaW5Eb2MsCi0gICAgICAgICAgICAgY29uc3Qg
Y2hhciogZW5kRG9jLAotICAgICAgICAgICAgIFZhbHVlJiByb290LAotICAgICAgICAgICAgIGJv
b2wgY29sbGVjdENvbW1lbnRzID0gdHJ1ZSk7Ci0KLSAgLy8vIFxicmllZiBQYXJzZSBmcm9tIGlu
cHV0IHN0cmVhbS4KLSAgLy8vIFxzZWUgSnNvbjo6b3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0mLCBK
c29uOjpWYWx1ZSYpLgotICBib29sIHBhcnNlKElTdHJlYW0mIGlzLCBWYWx1ZSYgcm9vdCwgYm9v
bCBjb2xsZWN0Q29tbWVudHMgPSB0cnVlKTsKLQotICAvKiogXGJyaWVmIFJldHVybnMgYSB1c2Vy
IGZyaWVuZGx5IHN0cmluZyB0aGF0IGxpc3QgZXJyb3JzIGluIHRoZSBwYXJzZWQKLSAgICogZG9j
dW1lbnQuCi0gICAqIFxyZXR1cm4gRm9ybWF0dGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgbGlz
dCBvZiBlcnJvcnMgd2l0aCB0aGVpciBsb2NhdGlvbgotICAgKiBpbgotICAgKiAgICAgICAgIHRo
ZSBwYXJzZWQgZG9jdW1lbnQuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiBubyBlcnJv
cgotICAgKiBvY2N1cnJlZAotICAgKiAgICAgICAgIGR1cmluZyBwYXJzaW5nLgotICAgKiBcZGVw
cmVjYXRlZCBVc2UgZ2V0Rm9ybWF0dGVkRXJyb3JNZXNzYWdlcygpIGluc3RlYWQgKHR5cG8gZml4
KS4KLSAgICovCi0gIEpTT05DUFBfREVQUkVDQVRFRCgiVXNlIGdldEZvcm1hdHRlZEVycm9yTWVz
c2FnZXMoKSBpbnN0ZWFkLiIpCi0gIFN0cmluZyBnZXRGb3JtYXRlZEVycm9yTWVzc2FnZXMoKSBj
b25zdDsKLQotICAvKiogXGJyaWVmIFJldHVybnMgYSB1c2VyIGZyaWVuZGx5IHN0cmluZyB0aGF0
IGxpc3QgZXJyb3JzIGluIHRoZSBwYXJzZWQKLSAgICogZG9jdW1lbnQuCi0gICAqIFxyZXR1cm4g
Rm9ybWF0dGVkIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgbGlzdCBvZiBlcnJvcnMgd2l0aCB0aGVp
ciBsb2NhdGlvbgotICAgKiBpbgotICAgKiAgICAgICAgIHRoZSBwYXJzZWQgZG9jdW1lbnQuIEFu
IGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiBubyBlcnJvcgotICAgKiBvY2N1cnJlZAotICAg
KiAgICAgICAgIGR1cmluZyBwYXJzaW5nLgotICAgKi8KLSAgU3RyaW5nIGdldEZvcm1hdHRlZEVy
cm9yTWVzc2FnZXMoKSBjb25zdDsKLQotICAvKiogXGJyaWVmIFJldHVybnMgYSB2ZWN0b3Igb2Yg
c3RydWN0dXJlZCBlcnJvcyBlbmNvdW50ZWQgd2hpbGUgcGFyc2luZy4KLSAgICogXHJldHVybiBB
IChwb3NzaWJseSBlbXB0eSkgdmVjdG9yIG9mIFN0cnVjdHVyZWRFcnJvciBvYmplY3RzLiBDdXJy
ZW50bHkKLSAgICogICAgICAgICBvbmx5IG9uZSBlcnJvciBjYW4gYmUgcmV0dXJuZWQsIGJ1dCB0
aGUgY2FsbGVyIHNob3VsZCB0b2xlcmF0ZQotICAgKiBtdWx0aXBsZQotICAgKiAgICAgICAgIGVy
cm9ycy4gIFRoaXMgY2FuIG9jY3VyIGlmIHRoZSBwYXJzZXIgcmVjb3ZlcnMgZnJvbSBhIG5vbi1m
YXRhbAotICAgKiAgICAgICAgIHBhcnNlIGVycm9yIGFuZCB0aGVuIGVuY291bnRlcnMgYWRkaXRp
b25hbCBlcnJvcnMuCi0gICAqLwotICBzdGQ6OnZlY3RvcjxTdHJ1Y3R1cmVkRXJyb3I+IGdldFN0
cnVjdHVyZWRFcnJvcnMoKSBjb25zdDsKLQotICAvKiogXGJyaWVmIEFkZCBhIHNlbWFudGljIGVy
cm9yIG1lc3NhZ2UuCi0gICAqIFxwYXJhbSB2YWx1ZSBKU09OIFZhbHVlIGxvY2F0aW9uIGFzc29j
aWF0ZWQgd2l0aCB0aGUgZXJyb3IKLSAgICogXHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9yIG1lc3Nh
Z2UuCi0gICAqIFxyZXR1cm4gXGMgdHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIHN1Y2Nlc3NmdWxseSBh
ZGRlZCwgXGMgZmFsc2UgaWYgdGhlCi0gICAqIFZhbHVlIG9mZnNldCBleGNlZWRzIHRoZSBkb2N1
bWVudCBzaXplLgotICAgKi8KLSAgYm9vbCBwdXNoRXJyb3IoY29uc3QgVmFsdWUmIHZhbHVlLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gIC8qKiBcYnJpZWYgQWRkIGEgc2VtYW50aWMgZXJy
b3IgbWVzc2FnZSB3aXRoIGV4dHJhIGNvbnRleHQuCi0gICAqIFxwYXJhbSB2YWx1ZSBKU09OIFZh
bHVlIGxvY2F0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3IKLSAgICogXHBhcmFtIG1lc3Nh
Z2UgVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAqIFxwYXJhbSBleHRyYSBBZGRpdGlvbmFsIEpTT04g
VmFsdWUgbG9jYXRpb24gdG8gY29udGV4dHVhbGl6ZSB0aGUgZXJyb3IKLSAgICogXHJldHVybiBc
YyB0cnVlIGlmIHRoZSBlcnJvciB3YXMgc3VjY2Vzc2Z1bGx5IGFkZGVkLCBcYyBmYWxzZSBpZiBl
aXRoZXIKLSAgICogVmFsdWUgb2Zmc2V0IGV4Y2VlZHMgdGhlIGRvY3VtZW50IHNpemUuCi0gICAq
LwotICBib29sIHB1c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgVmFsdWUmIGV4dHJhKTsKLQotICAvKiogXGJyaWVmIFJldHVybiB3aGV0aGVy
IHRoZXJlIGFyZSBhbnkgZXJyb3JzLgotICAgKiBccmV0dXJuIFxjIHRydWUgaWYgdGhlcmUgYXJl
IG5vIGVycm9ycyB0byByZXBvcnQgXGMgZmFsc2UgaWYKLSAgICogZXJyb3JzIGhhdmUgb2NjdXJy
ZWQuCi0gICAqLwotICBib29sIGdvb2QoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgZW51bSBUb2tl
blR5cGUgewotICAgIHRva2VuRW5kT2ZTdHJlYW0gPSAwLAotICAgIHRva2VuT2JqZWN0QmVnaW4s
Ci0gICAgdG9rZW5PYmplY3RFbmQsCi0gICAgdG9rZW5BcnJheUJlZ2luLAotICAgIHRva2VuQXJy
YXlFbmQsCi0gICAgdG9rZW5TdHJpbmcsCi0gICAgdG9rZW5OdW1iZXIsCi0gICAgdG9rZW5UcnVl
LAotICAgIHRva2VuRmFsc2UsCi0gICAgdG9rZW5OdWxsLAotICAgIHRva2VuQXJyYXlTZXBhcmF0
b3IsCi0gICAgdG9rZW5NZW1iZXJTZXBhcmF0b3IsCi0gICAgdG9rZW5Db21tZW50LAotICAgIHRv
a2VuRXJyb3IKLSAgfTsKLQotICBjbGFzcyBUb2tlbiB7Ci0gIHB1YmxpYzoKLSAgICBUb2tlblR5
cGUgdHlwZV87Ci0gICAgTG9jYXRpb24gc3RhcnRfOwotICAgIExvY2F0aW9uIGVuZF87Ci0gIH07
Ci0KLSAgY2xhc3MgRXJyb3JJbmZvIHsKLSAgcHVibGljOgotICAgIFRva2VuIHRva2VuXzsKLSAg
ICBTdHJpbmcgbWVzc2FnZV87Ci0gICAgTG9jYXRpb24gZXh0cmFfOwotICB9OwotCi0gIHR5cGVk
ZWYgc3RkOjpkZXF1ZTxFcnJvckluZm8+IEVycm9yczsKLQotICBib29sIHJlYWRUb2tlbihUb2tl
biYgdG9rZW4pOwotICB2b2lkIHNraXBTcGFjZXMoKTsKLSAgYm9vbCBtYXRjaChMb2NhdGlvbiBw
YXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCk7Ci0gIGJvb2wgcmVhZENvbW1lbnQoKTsKLSAgYm9v
bCByZWFkQ1N0eWxlQ29tbWVudCgpOwotICBib29sIHJlYWRDcHBTdHlsZUNvbW1lbnQoKTsKLSAg
Ym9vbCByZWFkU3RyaW5nKCk7Ci0gIHZvaWQgcmVhZE51bWJlcigpOwotICBib29sIHJlYWRWYWx1
ZSgpOwotICBib29sIHJlYWRPYmplY3QoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCByZWFkQXJyYXko
VG9rZW4mIHRva2VuKTsKLSAgYm9vbCBkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuKTsKLSAgYm9v
bCBkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7Ci0gIGJvb2wgZGVj
b2RlU3RyaW5nKFRva2VuJiB0b2tlbik7Ci0gIGJvb2wgZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tl
biwgU3RyaW5nJiBkZWNvZGVkKTsKLSAgYm9vbCBkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuKTsK
LSAgYm9vbCBkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7Ci0gIGJv
b2wgZGVjb2RlVW5pY29kZUNvZGVQb2ludChUb2tlbiYgdG9rZW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCYgdW5pY29kZSk7Ci0gIGJvb2wgZGVjb2RlVW5pY29kZUVzY2FwZVNlcXVlbmNlKFRv
a2VuJiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24m
IGN1cnJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIGVu
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50JiB1bmlj
b2RlKTsKLSAgYm9vbCBhZGRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFRva2VuJiB0b2tl
biwgTG9jYXRpb24gZXh0cmEgPSBudWxscHRyKTsKLSAgYm9vbCByZWNvdmVyRnJvbUVycm9yKFRv
a2VuVHlwZSBza2lwVW50aWxUb2tlbik7Ci0gIGJvb2wgYWRkRXJyb3JBbmRSZWNvdmVyKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4mIHRva2Vu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBUb2tlblR5cGUgc2tpcFVudGlsVG9rZW4pOwot
ICB2b2lkIHNraXBVbnRpbFNwYWNlKCk7Ci0gIFZhbHVlJiBjdXJyZW50VmFsdWUoKTsKLSAgQ2hh
ciBnZXROZXh0Q2hhcigpOwotICB2b2lkCi0gIGdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2Nh
dGlvbiBsb2NhdGlvbiwgaW50JiBsaW5lLCBpbnQmIGNvbHVtbikgY29uc3Q7Ci0gIFN0cmluZyBn
ZXRMb2NhdGlvbkxpbmVBbmRDb2x1bW4oTG9jYXRpb24gbG9jYXRpb24pIGNvbnN0OwotICB2b2lk
IGFkZENvbW1lbnQoTG9jYXRpb24gYmVnaW4sIExvY2F0aW9uIGVuZCwgQ29tbWVudFBsYWNlbWVu
dCBwbGFjZW1lbnQpOwotICB2b2lkIHNraXBDb21tZW50VG9rZW5zKFRva2VuJiB0b2tlbik7Ci0K
LSAgc3RhdGljIGJvb2wgY29udGFpbnNOZXdMaW5lKExvY2F0aW9uIGJlZ2luLCBMb2NhdGlvbiBl
bmQpOwotICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZUVPTChMb2NhdGlvbiBiZWdpbiwgTG9jYXRp
b24gZW5kKTsKLQotICB0eXBlZGVmIHN0ZDo6c3RhY2s8VmFsdWUqPiBOb2RlczsKLSAgTm9kZXMg
bm9kZXNfOwotICBFcnJvcnMgZXJyb3JzXzsKLSAgU3RyaW5nIGRvY3VtZW50XzsKLSAgTG9jYXRp
b24gYmVnaW5fe307Ci0gIExvY2F0aW9uIGVuZF97fTsKLSAgTG9jYXRpb24gY3VycmVudF97fTsK
LSAgTG9jYXRpb24gbGFzdFZhbHVlRW5kX3t9OwotICBWYWx1ZSogbGFzdFZhbHVlX3t9OwotICBT
dHJpbmcgY29tbWVudHNCZWZvcmVfOwotICBGZWF0dXJlcyBmZWF0dXJlc187Ci0gIGJvb2wgY29s
bGVjdENvbW1lbnRzX3t9OwotfTsgLy8gUmVhZGVyCi0KLS8qKiBJbnRlcmZhY2UgZm9yIHJlYWRp
bmcgSlNPTiBmcm9tIGEgY2hhciBhcnJheS4KLSAqLwotY2xhc3MgSlNPTl9BUEkgQ2hhclJlYWRl
ciB7Ci1wdWJsaWM6Ci0gIHZpcnR1YWwgfkNoYXJSZWFkZXIoKSA9IGRlZmF1bHQ7Ci0gIC8qKiBc
YnJpZWYgUmVhZCBhIFZhbHVlIGZyb20gYSA8YSBIUkVGPSJodHRwOi8vd3d3Lmpzb24ub3JnIj5K
U09OPC9hPgotICAgZG9jdW1lbnQuCi0gICAqIFRoZSBkb2N1bWVudCBtdXN0IGJlIGEgVVRGLTgg
ZW5jb2RlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZG9jdW1lbnQgdG8KLSAgIHJlYWQuCi0gICAq
Ci0gICAqIFxwYXJhbSBiZWdpbkRvYyBQb2ludGVyIG9uIHRoZSBiZWdpbm5pbmcgb2YgdGhlIFVU
Ri04IGVuY29kZWQgc3RyaW5nIG9mIHRoZQotICAgZG9jdW1lbnQgdG8gcmVhZC4KLSAgICogXHBh
cmFtIGVuZERvYyBQb2ludGVyIG9uIHRoZSBlbmQgb2YgdGhlIFVURi04IGVuY29kZWQgc3RyaW5n
IG9mIHRoZQotICAgZG9jdW1lbnQgdG8gcmVhZC4KLSAgICogICAgICAgIE11c3QgYmUgPj0gYmVn
aW5Eb2MuCi0gICAqIFxwYXJhbSByb290IFtvdXRdIENvbnRhaW5zIHRoZSByb290IHZhbHVlIG9m
IHRoZSBkb2N1bWVudCBpZiBpdCB3YXMKLSAgICogICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHBh
cnNlZC4KLSAgICogXHBhcmFtIGVycnMgW291dF0gRm9ybWF0dGVkIGVycm9yIG1lc3NhZ2VzIChp
ZiBub3QgTlVMTCkKLSAgICogICAgICAgIGEgdXNlciBmcmllbmRseSBzdHJpbmcgdGhhdCBsaXN0
cyBlcnJvcnMgaW4gdGhlIHBhcnNlZAotICAgKiBkb2N1bWVudC4KLSAgICogXHJldHVybiBcYyB0
cnVlIGlmIHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZCwgXGMgZmFsc2UgaWYg
YW4KLSAgIGVycm9yIG9jY3VycmVkLgotICAgKi8KLSAgdmlydHVhbCBib29sIHBhcnNlKGNoYXIg
Y29uc3QqIGJlZ2luRG9jLAotICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCogZW5kRG9j
LAotICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJvb3QsCi0gICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcqIGVycnMpID0gMDsKLQotICBjbGFzcyBKU09OX0FQSSBGYWN0b3J5IHsKLSAgcHVi
bGljOgotICAgIHZpcnR1YWwgfkZhY3RvcnkoKSA9IGRlZmF1bHQ7Ci0gICAgLyoqIFxicmllZiBB
bGxvY2F0ZSBhIENoYXJSZWFkZXIgdmlhIG9wZXJhdG9yIG5ldygpLgotICAgICAqIFx0aHJvdyBz
dGQ6OmV4Y2VwdGlvbiBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyAoZS5nLiBpbnZhbGlkIHNldHRp
bmdzKQotICAgICAqLwotICAgIHZpcnR1YWwgQ2hhclJlYWRlciogbmV3Q2hhclJlYWRlcigpIGNv
bnN0ID0gMDsKLSAgfTsgLy8gRmFjdG9yeQotfTsgICAvLyBDaGFyUmVhZGVyCi0KLS8qKiBcYnJp
ZWYgQnVpbGQgYSBDaGFyUmVhZGVyIGltcGxlbWVudGF0aW9uLgotCi1Vc2FnZToKLVxjb2RlCi0g
IHVzaW5nIG5hbWVzcGFjZSBKc29uOwotICBDaGFyUmVhZGVyQnVpbGRlciBidWlsZGVyOwotICBi
dWlsZGVyWyJjb2xsZWN0Q29tbWVudHMiXSA9IGZhbHNlOwotICBWYWx1ZSB2YWx1ZTsKLSAgU3Ry
aW5nIGVycnM7Ci0gIGJvb2wgb2sgPSBwYXJzZUZyb21TdHJlYW0oYnVpbGRlciwgc3RkOjpjaW4s
ICZ2YWx1ZSwgJmVycnMpOwotXGVuZGNvZGUKLSovCi1jbGFzcyBKU09OX0FQSSBDaGFyUmVhZGVy
QnVpbGRlciA6IHB1YmxpYyBDaGFyUmVhZGVyOjpGYWN0b3J5IHsKLXB1YmxpYzoKLSAgLy8gTm90
ZTogV2UgdXNlIGEgSnNvbjo6VmFsdWUgc28gdGhhdCB3ZSBjYW4gYWRkIGRhdGEtbWVtYmVycyB0
byB0aGlzIGNsYXNzCi0gIC8vIHdpdGhvdXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXAuCi0gIC8qKiBD
b25maWd1cmF0aW9uIG9mIHRoaXMgYnVpbGRlci4KLSAgICBUaGVzZSBhcmUgY2FzZS1zZW5zaXRp
dmUuCi0gICAgQXZhaWxhYmxlIHNldHRpbmdzIChjYXNlLXNlbnNpdGl2ZSk6Ci0gICAgLSBgImNv
bGxlY3RDb21tZW50cyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIHRydWUgdG8gY29sbGVjdCBj
b21tZW50IGFuZCBhbGxvdyB3cml0aW5nIHRoZW0KLSAgICAgICAgYmFjayBkdXJpbmcgc2VyaWFs
aXphdGlvbiwgZmFsc2UgdG8gZGlzY2FyZCBjb21tZW50cy4KLSAgICAgICAgVGhpcyBwYXJhbWV0
ZXIgaXMgaWdub3JlZCBpZiBhbGxvd0NvbW1lbnRzIGlzIGZhbHNlLgotICAgIC0gYCJhbGxvd0Nv
bW1lbnRzIjogZmFsc2Ugb3IgdHJ1ZWAKLSAgICAgIC0gdHJ1ZSBpZiBjb21tZW50cyBhcmUgYWxs
b3dlZC4KLSAgICAtIGAic3RyaWN0Um9vdCI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIHRydWUg
aWYgcm9vdCBtdXN0IGJlIGVpdGhlciBhbiBhcnJheSBvciBhbiBvYmplY3QgdmFsdWUKLSAgICAt
IGAiYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVycyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAt
IHRydWUgaWYgZHJvcHBlZCBudWxsIHBsYWNlaG9sZGVycyBhcmUgYWxsb3dlZC4gKFNlZQotICAg
IFN0cmVhbVdyaXRlckJ1aWxkZXIuKQotICAgIC0gYCJhbGxvd051bWVyaWNLZXlzIjogZmFsc2Ug
b3IgdHJ1ZWAKLSAgICAgIC0gdHJ1ZSBpZiBudW1lcmljIG9iamVjdCBrZXlzIGFyZSBhbGxvd2Vk
LgotICAgIC0gYCJhbGxvd1NpbmdsZVF1b3RlcyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIHRy
dWUgaWYgJycgYXJlIGFsbG93ZWQgZm9yIHN0cmluZ3MgKGJvdGgga2V5cyBhbmQgdmFsdWVzKQot
ICAgIC0gYCJzdGFja0xpbWl0IjogaW50ZWdlcmAKLSAgICAgIC0gRXhjZWVkaW5nIHN0YWNrTGlt
aXQgKHJlY3Vyc2l2ZSBkZXB0aCBvZiBgcmVhZFZhbHVlKClgKSB3aWxsCi0gICAgICAgIGNhdXNl
IGFuIGV4Y2VwdGlvbi4KLSAgICAgIC0gVGhpcyBpcyBhIHNlY3VyaXR5IGlzc3VlIChzZWctZmF1
bHRzIGNhdXNlZCBieSBkZWVwbHkgbmVzdGVkIEpTT04pLAotICAgICAgICBzbyB0aGUgZGVmYXVs
dCBpcyBsb3cuCi0gICAgLSBgImZhaWxJZkV4dHJhIjogZmFsc2Ugb3IgdHJ1ZWAKLSAgICAgIC0g
SWYgdHJ1ZSwgYHBhcnNlKClgIHJldHVybnMgZmFsc2Ugd2hlbiBleHRyYSBub24td2hpdGVzcGFj
ZSB0cmFpbHMKLSAgICAgICAgdGhlIEpTT04gdmFsdWUgaW4gdGhlIGlucHV0IHN0cmluZy4KLSAg
ICAtIGAicmVqZWN0RHVwS2V5cyI6IGZhbHNlIG9yIHRydWVgCi0gICAgICAtIElmIHRydWUsIGBw
YXJzZSgpYCByZXR1cm5zIGZhbHNlIHdoZW4gYSBrZXkgaXMgZHVwbGljYXRlZCB3aXRoaW4gYW4K
LSAgICBvYmplY3QuCi0gICAgLSBgImFsbG93U3BlY2lhbEZsb2F0cyI6IGZhbHNlIG9yIHRydWVg
Ci0gICAgICAtIElmIHRydWUsIHNwZWNpYWwgZmxvYXQgdmFsdWVzIChOYU5zIGFuZCBpbmZpbml0
aWVzKSBhcmUgYWxsb3dlZAotICAgICAgICBhbmQgdGhlaXIgdmFsdWVzIGFyZSBsb3NzZnJlZSBy
ZXN0b3JhYmxlLgotCi0gICAgWW91IGNhbiBleGFtaW5lICdzZXR0aW5nc19gIHlvdXJzZWxmCi0g
ICAgdG8gc2VlIHRoZSBkZWZhdWx0cy4gWW91IGNhbiBhbHNvIHdyaXRlIGFuZCByZWFkIHRoZW0g
anVzdCBsaWtlIGFueQotICAgIEpTT04gVmFsdWUuCi0gICAgXHNhIHNldERlZmF1bHRzKCkKLSAg
ICAqLwotICBKc29uOjpWYWx1ZSBzZXR0aW5nc187Ci0KLSAgQ2hhclJlYWRlckJ1aWxkZXIoKTsK
LSAgfkNoYXJSZWFkZXJCdWlsZGVyKCkgb3ZlcnJpZGU7Ci0KLSAgQ2hhclJlYWRlciogbmV3Q2hh
clJlYWRlcigpIGNvbnN0IG92ZXJyaWRlOwotCi0gIC8qKiBccmV0dXJuIHRydWUgaWYgJ3NldHRp
bmdzJyBhcmUgbGVnYWwgYW5kIGNvbnNpc3RlbnQ7Ci0gICAqICAgb3RoZXJ3aXNlLCBpbmRpY2F0
ZSBiYWQgc2V0dGluZ3MgdmlhICdpbnZhbGlkJy4KLSAgICovCi0gIGJvb2wgdmFsaWRhdGUoSnNv
bjo6VmFsdWUqIGludmFsaWQpIGNvbnN0OwotCi0gIC8qKiBBIHNpbXBsZSB3YXkgdG8gdXBkYXRl
IGEgc3BlY2lmaWMgc2V0dGluZy4KLSAgICovCi0gIFZhbHVlJiBvcGVyYXRvcltdKGNvbnN0IFN0
cmluZyYga2V5KTsKLQotICAvKiogQ2FsbGVkIGJ5IGN0b3IsIGJ1dCB5b3UgY2FuIHVzZSB0aGlz
IHRvIHJlc2V0IHNldHRpbmdzXy4KLSAgICogXHByZSAnc2V0dGluZ3MnICE9IE5VTEwgKGJ1dCBK
c29uOjpudWxsIGlzIGZpbmUpCi0gICAqIFxyZW1hcmsgRGVmYXVsdHM6Ci0gICAqIFxzbmlwcGV0
IHNyYy9saWJfanNvbi9qc29uX3JlYWRlci5jcHAgQ2hhclJlYWRlckJ1aWxkZXJEZWZhdWx0cwot
ICAgKi8KLSAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHMoSnNvbjo6VmFsdWUqIHNldHRpbmdzKTsK
LSAgLyoqIFNhbWUgYXMgb2xkIEZlYXR1cmVzOjpzdHJpY3RNb2RlKCkuCi0gICAqIFxwcmUgJ3Nl
dHRpbmdzJyAhPSBOVUxMIChidXQgSnNvbjo6bnVsbCBpcyBmaW5lKQotICAgKiBccmVtYXJrIERl
ZmF1bHRzOgotICAgKiBcc25pcHBldCBzcmMvbGliX2pzb24vanNvbl9yZWFkZXIuY3BwIENoYXJS
ZWFkZXJCdWlsZGVyU3RyaWN0TW9kZQotICAgKi8KLSAgc3RhdGljIHZvaWQgc3RyaWN0TW9kZShK
c29uOjpWYWx1ZSogc2V0dGluZ3MpOwotfTsKLQotLyoqIENvbnN1bWUgZW50aXJlIHN0cmVhbSBh
bmQgdXNlIGl0cyBiZWdpbi9lbmQuCi0gKiBTb21lZGF5IHdlIG1pZ2h0IGhhdmUgYSByZWFsIFN0
cmVhbVJlYWRlciwgYnV0IGZvciBub3cgdGhpcwotICogaXMgY29udmVuaWVudC4KLSAqLwotYm9v
bCBKU09OX0FQSSBwYXJzZUZyb21TdHJlYW0oQ2hhclJlYWRlcjo6RmFjdG9yeSBjb25zdCYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU3RyZWFtJiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKiByb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nKiBlcnJzKTsKLQotLyoqIFxicmllZiBSZWFkIGZyb20gJ3NpbicgaW50byAncm9vdCcu
Ci0KLSBBbHdheXMga2VlcCBjb21tZW50cyBmcm9tIHRoZSBpbnB1dCBKU09OLgotCi0gVGhpcyBj
YW4gYmUgdXNlZCB0byByZWFkIGEgZmlsZSBpbnRvIGEgcGFydGljdWxhciBzdWItb2JqZWN0Lgot
IEZvciBleGFtcGxlOgotIFxjb2RlCi0gSnNvbjo6VmFsdWUgcm9vdDsKLSBjaW4gPj4gcm9vdFsi
ZGlyIl1bImZpbGUiXTsKLSBjb3V0IDw8IHJvb3Q7Ci0gXGVuZGNvZGUKLSBSZXN1bHQ6Ci0gXHZl
cmJhdGltCi0gewotICJkaXIiOiB7Ci0gICAgICJmaWxlIjogewotICAgICAvLyBUaGUgaW5wdXQg
c3RyZWFtIEpTT04gd291bGQgYmUgbmVzdGVkIGhlcmUuCi0gICAgIH0KLSB9Ci0gfQotIFxlbmR2
ZXJiYXRpbQotIFx0aHJvdyBzdGQ6OmV4Y2VwdGlvbiBvbiBwYXJzZSBlcnJvci4KLSBcc2VlIEpz
b246Om9wZXJhdG9yPDwoKQotKi8KLUpTT05fQVBJIElTdHJlYW0mIG9wZXJhdG9yPj4oSVN0cmVh
bSYsIFZhbHVlJik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb24KLQotI3ByYWdtYSBwYWNrKHBvcCkK
LQotI2lmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZBQ0VfV0FSTklORykKLSNw
cmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVf
RExMX0lOVEVSRkFDRV9XQVJOSU5HKQotCi0jZW5kaWYgLy8gQ1BQVExfSlNPTl9SRUFERVJfSF9J
TkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pzb24vdmFsdWUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5j
bHVkZS9qc29uL3ZhbHVlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1N2YzZjZm
Njc2NS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL3ZhbHVlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw5MDcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0
ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVy
IE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25p
emVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWls
IG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lm
bmRlZiBDUFBUTF9KU09OX0hfSU5DTFVERUQKLSNkZWZpbmUgQ1BQVExfSlNPTl9IX0lOQ0xVREVE
Ci0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlICJmb3J3YXJk
cy5oIgotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1
ZGUgPGFycmF5PgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5j
bHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lmbmRlZiBKU09OX1VTRV9DUFBU
TF9TTUFMTE1BUAotI2luY2x1ZGUgPG1hcD4KLSNlbHNlCi0jaW5jbHVkZSA8Y3BwdGwvc21hbGxt
YXAuaD4KLSNlbmRpZgotI2lmZGVmIEpTT05fVVNFX0NQUFRMCi0jaW5jbHVkZSA8Y3BwdGwvZm9y
d2FyZHMuaD4KLSNlbmRpZgotCi0vLyBEaXNhYmxlIHdhcm5pbmcgQzQyNTE6IDxkYXRhIG1lbWJl
cj46IDx0eXBlPiBuZWVkcyB0byBoYXZlIGRsbC1pbnRlcmZhY2UgdG8KLS8vIGJlIHVzZWQgYnku
Li4KLSNpZiBkZWZpbmVkKEpTT05DUFBfRElTQUJMRV9ETExfSU5URVJGQUNFX1dBUk5JTkcpCi0j
cHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSkKLSNl
bmRpZiAvLyBpZiBkZWZpbmVkKEpTT05DUFBfRElTQUJMRV9ETExfSU5URVJGQUNFX1dBUk5JTkcp
Ci0KLSNwcmFnbWEgcGFjayhwdXNoLCA4KQotCi0vKiogXGJyaWVmIEpTT04gKEphdmFTY3JpcHQg
T2JqZWN0IE5vdGF0aW9uKS4KLSAqLwotbmFtZXNwYWNlIEpzb24gewotCi0jaWYgSlNPTl9VU0Vf
RVhDRVBUSU9OCi0vKiogQmFzZSBjbGFzcyBmb3IgYWxsIGV4Y2VwdGlvbnMgd2UgdGhyb3cuCi0g
KgotICogV2UgdXNlIG5vdGhpbmcgYnV0IHRoZXNlIGludGVybmFsbHkuIE9mIGNvdXJzZSwgU1RM
IGNhbiB0aHJvdyBvdGhlcnMuCi0gKi8KLWNsYXNzIEpTT05fQVBJIEV4Y2VwdGlvbiA6IHB1Ymxp
YyBzdGQ6OmV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gIEV4Y2VwdGlvbihTdHJpbmcgbXNnKTsKLSAg
fkV4Y2VwdGlvbigpIEpTT05DUFBfTk9FWENFUFQgb3ZlcnJpZGU7Ci0gIGNoYXIgY29uc3QqIHdo
YXQoKSBjb25zdCBKU09OQ1BQX05PRVhDRVBUIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gIFN0
cmluZyBtc2dfOwotfTsKLQotLyoqIEV4Y2VwdGlvbnMgd2hpY2ggdGhlIHVzZXIgY2Fubm90IGVh
c2lseSBhdm9pZC4KLSAqCi0gKiBFLmcuIG91dC1vZi1tZW1vcnkgKHdoZW4gd2UgdXNlIG1hbGxv
YyksIHN0YWNrLW92ZXJmbG93LCBtYWxpY2lvdXMgaW5wdXQKLSAqCi0gKiBccmVtYXJrIGRlcml2
ZWQgZnJvbSBKc29uOjpFeGNlcHRpb24KLSAqLwotY2xhc3MgSlNPTl9BUEkgUnVudGltZUVycm9y
IDogcHVibGljIEV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gIFJ1bnRpbWVFcnJvcihTdHJpbmcgY29u
c3QmIG1zZyk7Ci19OwotCi0vKiogRXhjZXB0aW9ucyB0aHJvd24gYnkgSlNPTl9BU1NFUlQvSlNP
Tl9GQUlMIG1hY3Jvcy4KLSAqCi0gKiBUaGVzZSBhcmUgcHJlY29uZGl0aW9uLXZpb2xhdGlvbnMg
KHVzZXIgYnVncykgYW5kIGludGVybmFsIGVycm9ycyAob3VyIGJ1Z3MpLgotICoKLSAqIFxyZW1h
cmsgZGVyaXZlZCBmcm9tIEpzb246OkV4Y2VwdGlvbgotICovCi1jbGFzcyBKU09OX0FQSSBMb2dp
Y0Vycm9yIDogcHVibGljIEV4Y2VwdGlvbiB7Ci1wdWJsaWM6Ci0gIExvZ2ljRXJyb3IoU3RyaW5n
IGNvbnN0JiBtc2cpOwotfTsKLSNlbmRpZgotCi0vLy8gdXNlZCBpbnRlcm5hbGx5Ci1bW25vcmV0
dXJuXV0gdm9pZCB0aHJvd1J1bnRpbWVFcnJvcihTdHJpbmcgY29uc3QmIG1zZyk7Ci0vLy8gdXNl
ZCBpbnRlcm5hbGx5Ci1bW25vcmV0dXJuXV0gdm9pZCB0aHJvd0xvZ2ljRXJyb3IoU3RyaW5nIGNv
bnN0JiBtc2cpOwotCi0vKiogXGJyaWVmIFR5cGUgb2YgdGhlIHZhbHVlIGhlbGQgYnkgYSBWYWx1
ZSBvYmplY3QuCi0gKi8KLWVudW0gVmFsdWVUeXBlIHsKLSAgbnVsbFZhbHVlID0gMCwgLy8vPCAn
bnVsbCcgdmFsdWUKLSAgaW50VmFsdWUsICAgICAgLy8vPCBzaWduZWQgaW50ZWdlciB2YWx1ZQot
ICB1aW50VmFsdWUsICAgICAvLy88IHVuc2lnbmVkIGludGVnZXIgdmFsdWUKLSAgcmVhbFZhbHVl
LCAgICAgLy8vPCBkb3VibGUgdmFsdWUKLSAgc3RyaW5nVmFsdWUsICAgLy8vPCBVVEYtOCBzdHJp
bmcgdmFsdWUKLSAgYm9vbGVhblZhbHVlLCAgLy8vPCBib29sIHZhbHVlCi0gIGFycmF5VmFsdWUs
ICAgIC8vLzwgYXJyYXkgdmFsdWUgKG9yZGVyZWQgbGlzdCkKLSAgb2JqZWN0VmFsdWUgICAgLy8v
PCBvYmplY3QgdmFsdWUgKGNvbGxlY3Rpb24gb2YgbmFtZS92YWx1ZSBwYWlycykuCi19OwotCi1l
bnVtIENvbW1lbnRQbGFjZW1lbnQgewotICBjb21tZW50QmVmb3JlID0gMCwgICAgICAvLy88IGEg
Y29tbWVudCBwbGFjZWQgb24gdGhlIGxpbmUgYmVmb3JlIGEgdmFsdWUKLSAgY29tbWVudEFmdGVy
T25TYW1lTGluZSwgLy8vPCBhIGNvbW1lbnQganVzdCBhZnRlciBhIHZhbHVlIG9uIHRoZSBzYW1l
IGxpbmUKLSAgY29tbWVudEFmdGVyLCAvLy88IGEgY29tbWVudCBvbiB0aGUgbGluZSBhZnRlciBh
IHZhbHVlIChvbmx5IG1ha2Ugc2Vuc2UgZm9yCi0gIC8vLyByb290IHZhbHVlKQotICBudW1iZXJP
ZkNvbW1lbnRQbGFjZW1lbnQKLX07Ci0KLS8qKiBcYnJpZWYgVHlwZSBvZiBwcmVjaXNpb24gZm9y
IGZvcm1hdHRpbmcgb2YgcmVhbCB2YWx1ZXMuCi0gKi8KLWVudW0gUHJlY2lzaW9uVHlwZSB7Ci0g
IHNpZ25pZmljYW50RGlnaXRzID0gMCwgLy8vPCB3ZSBzZXQgbWF4IG51bWJlciBvZiBzaWduaWZp
Y2FudCBkaWdpdHMgaW4gc3RyaW5nCi0gIGRlY2ltYWxQbGFjZXMgICAgICAgICAgLy8vPCB3ZSBz
ZXQgbWF4IG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgIi4iIGluIHN0cmluZwotfTsKLQotLy8jIGlm
ZGVmIEpTT05fVVNFX0NQUFRMCi0vLyAgIHR5cGVkZWYgQ3BwVEw6OkFueUVudW1lcmF0b3I8Y29u
c3QgY2hhciAqPiBFbnVtTWVtYmVyTmFtZXM7Ci0vLyAgIHR5cGVkZWYgQ3BwVEw6OkFueUVudW1l
cmF0b3I8Y29uc3QgVmFsdWUgJj4gRW51bVZhbHVlczsKLS8vIyBlbmRpZgotCi0vKiogXGJyaWVm
IExpZ2h0d2VpZ2h0IHdyYXBwZXIgdG8gdGFnIHN0YXRpYyBzdHJpbmcuCi0gKgotICogVmFsdWUg
Y29uc3RydWN0b3IgYW5kIG9iamVjdFZhbHVlIG1lbWJlciBhc3NpZ25tZW50IHRha2VzIGFkdmFu
dGFnZSBvZiB0aGUKLSAqIFN0YXRpY1N0cmluZyBhbmQgYXZvaWQgdGhlIGNvc3Qgb2Ygc3RyaW5n
IGR1cGxpY2F0aW9uIHdoZW4gc3RvcmluZyB0aGUKLSAqIHN0cmluZyBvciB0aGUgbWVtYmVyIG5h
bWUuCi0gKgotICogRXhhbXBsZSBvZiB1c2FnZToKLSAqIFxjb2RlCi0gKiBKc29uOjpWYWx1ZSBh
VmFsdWUoIFN0YXRpY1N0cmluZygic29tZSB0ZXh0IikgKTsKLSAqIEpzb246OlZhbHVlIG9iamVj
dDsKLSAqIHN0YXRpYyBjb25zdCBTdGF0aWNTdHJpbmcgY29kZSgiY29kZSIpOwotICogb2JqZWN0
W2NvZGVdID0gMTIzNDsKLSAqIFxlbmRjb2RlCi0gKi8KLWNsYXNzIEpTT05fQVBJIFN0YXRpY1N0
cmluZyB7Ci1wdWJsaWM6Ci0gIGV4cGxpY2l0IFN0YXRpY1N0cmluZyhjb25zdCBjaGFyKiBjenN0
cmluZykgOiBjX3N0cl8oY3pzdHJpbmcpIHt9Ci0KLSAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBj
b25zdCB7IHJldHVybiBjX3N0cl87IH0KLQotICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsg
cmV0dXJuIGNfc3RyXzsgfQotCi1wcml2YXRlOgotICBjb25zdCBjaGFyKiBjX3N0cl87Ci19Owot
Ci0vKiogXGJyaWVmIFJlcHJlc2VudHMgYSA8YSBIUkVGPSJodHRwOi8vd3d3Lmpzb24ub3JnIj5K
U09OPC9hPiB2YWx1ZS4KLSAqCi0gKiBUaGlzIGNsYXNzIGlzIGEgZGlzY3JpbWluYXRlZCB1bmlv
biB3cmFwcGVyIHRoYXQgY2FuIHJlcHJlc2VudHMgYToKLSAqIC0gc2lnbmVkIGludGVnZXIgW3Jh
bmdlOiBWYWx1ZTo6bWluSW50IC0gVmFsdWU6Om1heEludF0KLSAqIC0gdW5zaWduZWQgaW50ZWdl
ciAocmFuZ2U6IDAgLSBWYWx1ZTo6bWF4VUludCkKLSAqIC0gZG91YmxlCi0gKiAtIFVURi04IHN0
cmluZwotICogLSBib29sZWFuCi0gKiAtICdudWxsJwotICogLSBhbiBvcmRlcmVkIGxpc3Qgb2Yg
VmFsdWUKLSAqIC0gY29sbGVjdGlvbiBvZiBuYW1lL3ZhbHVlIHBhaXJzIChqYXZhc2NyaXB0IG9i
amVjdCkKLSAqCi0gKiBUaGUgdHlwZSBvZiB0aGUgaGVsZCB2YWx1ZSBpcyByZXByZXNlbnRlZCBi
eSBhICNWYWx1ZVR5cGUgYW5kCi0gKiBjYW4gYmUgb2J0YWluZWQgdXNpbmcgdHlwZSgpLgotICoK
LSAqIFZhbHVlcyBvZiBhbiAjb2JqZWN0VmFsdWUgb3IgI2FycmF5VmFsdWUgY2FuIGJlIGFjY2Vz
c2VkIHVzaW5nIG9wZXJhdG9yW10oKQotICogbWV0aG9kcy4KLSAqIE5vbi1jb25zdCBtZXRob2Rz
IHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIGEgI251bGxWYWx1ZSBlbGVtZW50Ci0gKiBp
ZiBpdCBkb2VzIG5vdCBleGlzdC4KLSAqIFRoZSBzZXF1ZW5jZSBvZiBhbiAjYXJyYXlWYWx1ZSB3
aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVzaXplZCBhbmQgaW5pdGlhbGl6ZWQKLSAqIHdpdGggI251
bGxWYWx1ZS4gcmVzaXplKCkgY2FuIGJlIHVzZWQgdG8gZW5sYXJnZSBvciB0cnVuY2F0ZSBhbiAj
YXJyYXlWYWx1ZS4KLSAqCi0gKiBUaGUgZ2V0KCkgbWV0aG9kcyBjYW4gYmUgdXNlZCB0byBvYnRh
aW4gZGVmYXVsdCB2YWx1ZSBpbiB0aGUgY2FzZSB0aGUKLSAqIHJlcXVpcmVkIGVsZW1lbnQgZG9l
cyBub3QgZXhpc3QuCi0gKgotICogSXQgaXMgcG9zc2libGUgdG8gaXRlcmF0ZSBvdmVyIHRoZSBs
aXN0IG9mIG1lbWJlciBrZXlzIG9mIGFuIG9iamVjdCB1c2luZwotICogdGhlIGdldE1lbWJlck5h
bWVzKCkgbWV0aG9kLgotICoKLSAqIFxub3RlICNWYWx1ZSBzdHJpbmctbGVuZ3RoIGZpdCBpbiBz
aXplX3QsIGJ1dCBrZXlzIG11c3QgYmUgPCAyXjMwLgotICogKFRoZSByZWFzb24gaXMgYW4gaW1w
bGVtZW50YXRpb24gZGV0YWlsLikgQSAjQ2hhclJlYWRlciB3aWxsIHJhaXNlIGFuCi0gKiBleGNl
cHRpb24gaWYgYSBib3VuZCBpcyBleGNlZWRlZCB0byBhdm9pZCBzZWN1cml0eSBob2xlcyBpbiB5
b3VyIGFwcCwKLSAqIGJ1dCB0aGUgVmFsdWUgQVBJIGRvZXMgKm5vdCogY2hlY2sgYm91bmRzLiBU
aGF0IGlzIHRoZSByZXNwb25zaWJpbGl0eQotICogb2YgdGhlIGNhbGxlci4KLSAqLwotY2xhc3Mg
SlNPTl9BUEkgVmFsdWUgewotICBmcmllbmQgY2xhc3MgVmFsdWVJdGVyYXRvckJhc2U7Ci0KLXB1
YmxpYzoKLSAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxTdHJpbmc+IE1lbWJlcnM7Ci0gIHR5cGVkZWYg
VmFsdWVJdGVyYXRvciBpdGVyYXRvcjsKLSAgdHlwZWRlZiBWYWx1ZUNvbnN0SXRlcmF0b3IgY29u
c3RfaXRlcmF0b3I7Ci0gIHR5cGVkZWYgSnNvbjo6VUludCBVSW50OwotICB0eXBlZGVmIEpzb246
OkludCBJbnQ7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgdHlwZWRlZiBKc29uOjpV
SW50NjQgVUludDY0OwotICB0eXBlZGVmIEpzb246OkludDY0IEludDY0OwotI2VuZGlmIC8vIGRl
ZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gIHR5cGVkZWYgSnNvbjo6TGFyZ2VzdEludCBMYXJnZXN0
SW50OwotICB0eXBlZGVmIEpzb246Okxhcmdlc3RVSW50IExhcmdlc3RVSW50OwotICB0eXBlZGVm
IEpzb246OkFycmF5SW5kZXggQXJyYXlJbmRleDsKLQotICAvLyBSZXF1aXJlZCBmb3IgYm9vc3Qg
aW50ZWdyYXRpb24sIGUuIGcuIEJPT1NUX1RFU1QKLSAgdHlwZWRlZiBzdGQ6OnN0cmluZyB2YWx1
ZV90eXBlOwotCi0jaWYgSlNPTl9VU0VfTlVMTFJFRgotICAvLyBCaW5hcnkgY29tcGF0aWJpbGl0
eSBrbHVkZ2VzLCBkbyBub3QgdXNlLgotICBzdGF0aWMgY29uc3QgVmFsdWUmIG51bGw7Ci0gIHN0
YXRpYyBjb25zdCBWYWx1ZSYgbnVsbFJlZjsKLSNlbmRpZgotCi0gIC8vIG51bGwgYW5kIG51bGxS
ZWYgYXJlIGRlcHJlY2F0ZWQsIHVzZSB0aGlzIGluc3RlYWQuCi0gIHN0YXRpYyBWYWx1ZSBjb25z
dCYgbnVsbFNpbmdsZXRvbigpOwotCi0gIC8vLyBNaW5pbXVtIHNpZ25lZCBpbnRlZ2VyIHZhbHVl
IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgTGFy
Z2VzdEludCBtaW5MYXJnZXN0SW50OwotICAvLy8gTWF4aW11bSBzaWduZWQgaW50ZWdlciB2YWx1
ZSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSBKc29uOjpWYWx1ZS4KLSAgc3RhdGljIGNvbnN0IExh
cmdlc3RJbnQgbWF4TGFyZ2VzdEludDsKLSAgLy8vIE1heGltdW0gdW5zaWduZWQgaW50ZWdlciB2
YWx1ZSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSBKc29uOjpWYWx1ZS4KLSAgc3RhdGljIGNvbnN0
IExhcmdlc3RVSW50IG1heExhcmdlc3RVSW50OwotCi0gIC8vLyBNaW5pbXVtIHNpZ25lZCBpbnQg
dmFsdWUgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgSnNvbjo6VmFsdWUuCi0gIHN0YXRpYyBjb25z
dCBJbnQgbWluSW50OwotICAvLy8gTWF4aW11bSBzaWduZWQgaW50IHZhbHVlIHRoYXQgY2FuIGJl
IHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgSW50IG1heEludDsKLSAg
Ly8vIE1heGltdW0gdW5zaWduZWQgaW50IHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpz
b246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgVUludCBtYXhVSW50OwotCi0jaWYgZGVmaW5lZChK
U09OX0hBU19JTlQ2NCkKLSAgLy8vIE1pbmltdW0gc2lnbmVkIDY0IGJpdHMgaW50IHZhbHVlIHRo
YXQgY2FuIGJlIHN0b3JlZCBpbiBhIEpzb246OlZhbHVlLgotICBzdGF0aWMgY29uc3QgSW50NjQg
bWluSW50NjQ7Ci0gIC8vLyBNYXhpbXVtIHNpZ25lZCA2NCBiaXRzIGludCB2YWx1ZSB0aGF0IGNh
biBiZSBzdG9yZWQgaW4gYSBKc29uOjpWYWx1ZS4KLSAgc3RhdGljIGNvbnN0IEludDY0IG1heElu
dDY0OwotICAvLy8gTWF4aW11bSB1bnNpZ25lZCA2NCBiaXRzIGludCB2YWx1ZSB0aGF0IGNhbiBi
ZSBzdG9yZWQgaW4gYSBKc29uOjpWYWx1ZS4KLSAgc3RhdGljIGNvbnN0IFVJbnQ2NCBtYXhVSW50
NjQ7Ci0jZW5kaWYgLy8gZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLQotICAvLy8gRGVmYXVsdCBw
cmVjaXNpb24gZm9yIHJlYWwgdmFsdWUgZm9yIHN0cmluZyByZXByZXNlbnRhdGlvbi4KLSAgc3Rh
dGljIGNvbnN0IFVJbnQgZGVmYXVsdFJlYWxQcmVjaXNpb247Ci0KLS8vIFdvcmthcm91bmQgZm9y
IGJ1ZyBpbiB0aGUgTlZJRElBcyBDVURBIDkuMSBudmNjIGNvbXBpbGVyCi0vLyB3aGVuIHVzaW5n
IGdjYyBhbmQgY2xhbmcgYmFja2VuZCBjb21waWxlcnMuICBDWlN0cmluZwotLy8gY2Fubm90IGJl
IGRlZmluZWQgYXMgcHJpdmF0ZS4gIFNlZSBpc3N1ZSAjNDg2Ci0jaWZkZWYgX19OVkNDX18KLXB1
YmxpYzoKLSNlbHNlCi1wcml2YXRlOgotI2VuZGlmCi0jaWZuZGVmIEpTT05DUFBfRE9DX0VYQ0xV
REVfSU1QTEVNRU5UQVRJT04KLSAgY2xhc3MgQ1pTdHJpbmcgewotICBwdWJsaWM6Ci0gICAgZW51
bSBEdXBsaWNhdGlvblBvbGljeSB7IG5vRHVwbGljYXRpb24gPSAwLCBkdXBsaWNhdGUsIGR1cGxp
Y2F0ZU9uQ29weSB9OwotICAgIENaU3RyaW5nKEFycmF5SW5kZXggaW5kZXgpOwotICAgIENaU3Ry
aW5nKGNoYXIgY29uc3QqIHN0ciwgdW5zaWduZWQgbGVuZ3RoLCBEdXBsaWNhdGlvblBvbGljeSBh
bGxvY2F0ZSk7Ci0gICAgQ1pTdHJpbmcoQ1pTdHJpbmcgY29uc3QmIG90aGVyKTsKLSAgICBDWlN0
cmluZyhDWlN0cmluZyYmIG90aGVyKTsKLSAgICB+Q1pTdHJpbmcoKTsKLSAgICBDWlN0cmluZyYg
b3BlcmF0b3I9KGNvbnN0IENaU3RyaW5nJiBvdGhlcik7Ci0gICAgQ1pTdHJpbmcmIG9wZXJhdG9y
PShDWlN0cmluZyYmIG90aGVyKTsKLQotICAgIGJvb2wgb3BlcmF0b3I8KENaU3RyaW5nIGNvbnN0
JiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KENaU3RyaW5nIGNvbnN0JiBvdGhl
cikgY29uc3Q7Ci0gICAgQXJyYXlJbmRleCBpbmRleCgpIGNvbnN0OwotICAgIC8vIGNvbnN0IGNo
YXIqIGNfc3RyKCkgY29uc3Q7IC8vLzwgXGRlcHJlY2F0ZWQKLSAgICBjaGFyIGNvbnN0KiBkYXRh
KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0YXRp
Y1N0cmluZygpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBzd2FwKENaU3RyaW5nJiBv
dGhlcik7Ci0KLSAgICBzdHJ1Y3QgU3RyaW5nU3RvcmFnZSB7Ci0gICAgICB1bnNpZ25lZCBwb2xp
Y3lfIDogMjsKLSAgICAgIHVuc2lnbmVkIGxlbmd0aF8gOiAzMDsgLy8gMUdCIG1heAotICAgIH07
Ci0KLSAgICBjaGFyIGNvbnN0KiBjc3RyXzsgLy8gYWN0dWFsbHksIGEgcHJlZml4ZWQgc3RyaW5n
LCB1bmxlc3MgcG9saWN5IGlzIG5vRHVwCi0gICAgdW5pb24gewotICAgICAgQXJyYXlJbmRleCBp
bmRleF87Ci0gICAgICBTdHJpbmdTdG9yYWdlIHN0b3JhZ2VfOwotICAgIH07Ci0gIH07Ci0KLXB1
YmxpYzoKLSNpZm5kZWYgSlNPTl9VU0VfQ1BQVExfU01BTExNQVAKLSAgdHlwZWRlZiBzdGQ6Om1h
cDxDWlN0cmluZywgVmFsdWU+IE9iamVjdFZhbHVlczsKLSNlbHNlCi0gIHR5cGVkZWYgQ3BwVEw6
OlNtYWxsTWFwPENaU3RyaW5nLCBWYWx1ZT4gT2JqZWN0VmFsdWVzOwotI2VuZGlmIC8vIGlmbmRl
ZiBKU09OX1VTRV9DUFBUTF9TTUFMTE1BUAotI2VuZGlmIC8vIGlmbmRlZiBKU09OQ1BQX0RPQ19F
WENMVURFX0lNUExFTUVOVEFUSU9OCi0KLXB1YmxpYzoKLSAgLyoqIFxicmllZiBDcmVhdGUgYSBk
ZWZhdWx0IFZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlLgotCi0gICAgVGhpcyBpcyBhIHZlcnkgdXNl
ZnVsIGNvbnN0cnVjdG9yLgotICAgIFRvIGNyZWF0ZSBhbiBlbXB0eSBhcnJheSwgcGFzcyBhcnJh
eVZhbHVlLgotICAgIFRvIGNyZWF0ZSBhbiBlbXB0eSBvYmplY3QsIHBhc3Mgb2JqZWN0VmFsdWUu
Ci0gICAgQW5vdGhlciBWYWx1ZSBjYW4gdGhlbiBiZSBzZXQgdG8gdGhpcyBvbmUgYnkgYXNzaWdu
bWVudC4KLVRoaXMgaXMgdXNlZnVsIHNpbmNlIGNsZWFyKCkgYW5kIHJlc2l6ZSgpIHdpbGwgbm90
IGFsdGVyIHR5cGVzLgotCi0gICAgRXhhbXBsZXM6Ci1cY29kZQotSnNvbjo6VmFsdWUgbnVsbF92
YWx1ZTsgLy8gbnVsbAotSnNvbjo6VmFsdWUgYXJyX3ZhbHVlKEpzb246OmFycmF5VmFsdWUpOyAv
LyBbXQotSnNvbjo6VmFsdWUgb2JqX3ZhbHVlKEpzb246Om9iamVjdFZhbHVlKTsgLy8ge30KLVxl
bmRjb2RlCi0gICovCi0gIFZhbHVlKFZhbHVlVHlwZSB0eXBlID0gbnVsbFZhbHVlKTsKLSAgVmFs
dWUoSW50IHZhbHVlKTsKLSAgVmFsdWUoVUludCB2YWx1ZSk7Ci0jaWYgZGVmaW5lZChKU09OX0hB
U19JTlQ2NCkKLSAgVmFsdWUoSW50NjQgdmFsdWUpOwotICBWYWx1ZShVSW50NjQgdmFsdWUpOwot
I2VuZGlmIC8vIGlmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gIFZhbHVlKGRvdWJsZSB2YWx1
ZSk7Ci0gIFZhbHVlKGNvbnN0IGNoYXIqIHZhbHVlKTsgLy8vPCBDb3B5IHRpbCBmaXJzdCAwLiAo
TlVMTCBjYXVzZXMgdG8gc2VnLWZhdWx0LikKLSAgVmFsdWUoY29uc3QgY2hhciogYmVnaW4sIGNv
bnN0IGNoYXIqIGVuZCk7IC8vLzwgQ29weSBhbGwsIGluY2wgemVyb2VzLgotICAvKiogXGJyaWVm
IENvbnN0cnVjdHMgYSB2YWx1ZSBmcm9tIGEgc3RhdGljIHN0cmluZy4KLQotICAgKiBMaWtlIG90
aGVyIHZhbHVlIHN0cmluZyBjb25zdHJ1Y3RvciBidXQgZG8gbm90IGR1cGxpY2F0ZSB0aGUgc3Ry
aW5nIGZvcgotICAgKiBpbnRlcm5hbCBzdG9yYWdlLiBUaGUgZ2l2ZW4gc3RyaW5nIG11c3QgcmVt
YWluIGFsaXZlIGFmdGVyIHRoZSBjYWxsIHRvIHRoaXMKLSAgICogY29uc3RydWN0b3IuCi0gICAq
IFxub3RlIFRoaXMgd29ya3Mgb25seSBmb3IgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MuIChXZSBj
YW5ub3QgY2hhbmdlIHRoZQotICAgKiAgIHNpemUgb2YgdGhpcyBjbGFzcywgc28gd2UgaGF2ZSBu
b3doZXJlIHRvIHN0b3JlIHRoZSBsZW5ndGgsCi0gICAqICAgd2hpY2ggbWlnaHQgYmUgY29tcHV0
ZWQgbGF0ZXIgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4pCi0gICAqCi0gICAqIEV4YW1wbGUgb2Yg
dXNhZ2U6Ci0gICAqIFxjb2RlCi0gICAqIHN0YXRpYyBTdGF0aWNTdHJpbmcgZm9vKCJzb21lIHRl
eHQiKTsKLSAgICogSnNvbjo6VmFsdWUgYVZhbHVlKGZvbyk7Ci0gICAqIFxlbmRjb2RlCi0gICAq
LwotICBWYWx1ZShjb25zdCBTdGF0aWNTdHJpbmcmIHZhbHVlKTsKLSAgVmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7IC8vLzwgQ29weSBkYXRhKCkgdGlsIHNpemUoKS4gRW1iZWRkZWQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgemVyb2VzIHRvby4KLSNpZmRlZiBKU09OX1VT
RV9DUFBUTAotICBWYWx1ZShjb25zdCBDcHBUTDo6Q29uc3RTdHJpbmcmIHZhbHVlKTsKLSNlbmRp
ZgotICBWYWx1ZShib29sIHZhbHVlKTsKLSAgVmFsdWUoY29uc3QgVmFsdWUmIG90aGVyKTsKLSAg
VmFsdWUoVmFsdWUmJiBvdGhlcik7Ci0gIH5WYWx1ZSgpOwotCi0gIC8vLyBcbm90ZSBPdmVyd3Jp
dGUgZXhpc3RpbmcgY29tbWVudHMuIFRvIHByZXNlcnZlIGNvbW1lbnRzLCB1c2UKLSAgLy8vICNz
d2FwUGF5bG9hZCgpLgotICBWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFZhbHVlJiBvdGhlcik7Ci0g
IFZhbHVlJiBvcGVyYXRvcj0oVmFsdWUmJiBvdGhlcik7Ci0KLSAgLy8vIFN3YXAgZXZlcnl0aGlu
Zy4KLSAgdm9pZCBzd2FwKFZhbHVlJiBvdGhlcik7Ci0gIC8vLyBTd2FwIHZhbHVlcyBidXQgbGVh
dmUgY29tbWVudHMgYW5kIHNvdXJjZSBvZmZzZXRzIGluIHBsYWNlLgotICB2b2lkIHN3YXBQYXls
b2FkKFZhbHVlJiBvdGhlcik7Ci0KLSAgLy8vIGNvcHkgZXZlcnl0aGluZy4KLSAgdm9pZCBjb3B5
KGNvbnN0IFZhbHVlJiBvdGhlcik7Ci0gIC8vLyBjb3B5IHZhbHVlcyBidXQgbGVhdmUgY29tbWVu
dHMgYW5kIHNvdXJjZSBvZmZzZXRzIGluIHBsYWNlLgotICB2b2lkIGNvcHlQYXlsb2FkKGNvbnN0
IFZhbHVlJiBvdGhlcik7Ci0KLSAgVmFsdWVUeXBlIHR5cGUoKSBjb25zdDsKLQotICAvLy8gQ29t
cGFyZSBwYXlsb2FkIG9ubHksIG5vdCBjb21tZW50cyBldGMuCi0gIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFZhbHVlJiBvdGhlcikgY29uc3Q7Ci0gIGJvb2wgb3BlcmF0b3I8PShjb25zdCBWYWx1ZSYg
b3RoZXIpIGNvbnN0OwotICBib29sIG9wZXJhdG9yPj0oY29uc3QgVmFsdWUmIG90aGVyKSBjb25z
dDsKLSAgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdDsKLSAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFZhbHVlJiBvdGhlcikgY29uc3Q7Ci0gIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBWYWx1ZSYgb3RoZXIpIGNvbnN0OwotICBpbnQgY29tcGFyZShjb25zdCBWYWx1ZSYgb3Ro
ZXIpIGNvbnN0OwotCi0gIGNvbnN0IGNoYXIqIGFzQ1N0cmluZygpIGNvbnN0OyAvLy88IEVtYmVk
ZGVkIHplcm9lcyBjb3VsZCBjYXVzZSB5b3UgdHJvdWJsZSEKLSNpZiBKU09OQ1BQX1VTSU5HX1NF
Q1VSRV9NRU1PUlkKLSAgdW5zaWduZWQgZ2V0Q1N0cmluZ0xlbmd0aCgpIGNvbnN0OyAvLyBBbGxv
d3MgeW91IHRvIHVuZGVyc3RhbmQgdGhlIGxlbmd0aCBvZgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBDU3RyaW5nCi0jZW5kaWYKLSAgU3RyaW5nIGFzU3RyaW5n
KCkgY29uc3Q7IC8vLzwgRW1iZWRkZWQgemVyb2VzIGFyZSBwb3NzaWJsZS4KLSAgLyoqIEdldCBy
YXcgY2hhciogb2Ygc3RyaW5nLXZhbHVlLgotICAgKiAgXHJldHVybiBmYWxzZSBpZiAhc3RyaW5n
LiAoU2VnLWZhdWx0IGlmIHN0ciBvciBlbmQgYXJlIE5VTEwuKQotICAgKi8KLSAgYm9vbCBnZXRT
dHJpbmcoY2hhciBjb25zdCoqIGJlZ2luLCBjaGFyIGNvbnN0KiogZW5kKSBjb25zdDsKLSNpZmRl
ZiBKU09OX1VTRV9DUFBUTAotICBDcHBUTDo6Q29uc3RTdHJpbmcgYXNDb25zdFN0cmluZygpIGNv
bnN0OwotI2VuZGlmCi0gIEludCBhc0ludCgpIGNvbnN0OwotICBVSW50IGFzVUludCgpIGNvbnN0
OwotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gIEludDY0IGFzSW50NjQoKSBjb25zdDsK
LSAgVUludDY0IGFzVUludDY0KCkgY29uc3Q7Ci0jZW5kaWYgLy8gaWYgZGVmaW5lZChKU09OX0hB
U19JTlQ2NCkKLSAgTGFyZ2VzdEludCBhc0xhcmdlc3RJbnQoKSBjb25zdDsKLSAgTGFyZ2VzdFVJ
bnQgYXNMYXJnZXN0VUludCgpIGNvbnN0OwotICBmbG9hdCBhc0Zsb2F0KCkgY29uc3Q7Ci0gIGRv
dWJsZSBhc0RvdWJsZSgpIGNvbnN0OwotICBib29sIGFzQm9vbCgpIGNvbnN0OwotCi0gIGJvb2wg
aXNOdWxsKCkgY29uc3Q7Ci0gIGJvb2wgaXNCb29sKCkgY29uc3Q7Ci0gIGJvb2wgaXNJbnQoKSBj
b25zdDsKLSAgYm9vbCBpc0ludDY0KCkgY29uc3Q7Ci0gIGJvb2wgaXNVSW50KCkgY29uc3Q7Ci0g
IGJvb2wgaXNVSW50NjQoKSBjb25zdDsKLSAgYm9vbCBpc0ludGVncmFsKCkgY29uc3Q7Ci0gIGJv
b2wgaXNEb3VibGUoKSBjb25zdDsKLSAgYm9vbCBpc051bWVyaWMoKSBjb25zdDsKLSAgYm9vbCBp
c1N0cmluZygpIGNvbnN0OwotICBib29sIGlzQXJyYXkoKSBjb25zdDsKLSAgYm9vbCBpc09iamVj
dCgpIGNvbnN0OwotCi0gIGJvb2wgaXNDb252ZXJ0aWJsZVRvKFZhbHVlVHlwZSBvdGhlcikgY29u
c3Q7Ci0KLSAgLy8vIE51bWJlciBvZiB2YWx1ZXMgaW4gYXJyYXkgb3Igb2JqZWN0Ci0gIEFycmF5
SW5kZXggc2l6ZSgpIGNvbnN0OwotCi0gIC8vLyBcYnJpZWYgUmV0dXJuIHRydWUgaWYgZW1wdHkg
YXJyYXksIGVtcHR5IG9iamVjdCwgb3IgbnVsbDsKLSAgLy8vIG90aGVyd2lzZSwgZmFsc2UuCi0g
IGJvb2wgZW1wdHkoKSBjb25zdDsKLQotICAvLy8gUmV0dXJuICFpc051bGwoKQotICBKU09OQ1BQ
X09QX0VYUExJQ0lUIG9wZXJhdG9yIGJvb2woKSBjb25zdDsKLQotICAvLy8gUmVtb3ZlIGFsbCBv
YmplY3QgbWVtYmVycyBhbmQgYXJyYXkgZWxlbWVudHMuCi0gIC8vLyBccHJlIHR5cGUoKSBpcyBh
cnJheVZhbHVlLCBvYmplY3RWYWx1ZSwgb3IgbnVsbFZhbHVlCi0gIC8vLyBccG9zdCB0eXBlKCkg
aXMgdW5jaGFuZ2VkCi0gIHZvaWQgY2xlYXIoKTsKLQotICAvLy8gUmVzaXplIHRoZSBhcnJheSB0
byBuZXdTaXplIGVsZW1lbnRzLgotICAvLy8gTmV3IGVsZW1lbnRzIGFyZSBpbml0aWFsaXplZCB0
byBudWxsLgotICAvLy8gTWF5IG9ubHkgYmUgY2FsbGVkIG9uIG51bGxWYWx1ZSBvciBhcnJheVZh
bHVlLgotICAvLy8gXHByZSB0eXBlKCkgaXMgYXJyYXlWYWx1ZSBvciBudWxsVmFsdWUKLSAgLy8v
IFxwb3N0IHR5cGUoKSBpcyBhcnJheVZhbHVlCi0gIHZvaWQgcmVzaXplKEFycmF5SW5kZXggbmV3
U2l6ZSk7Ci0KLSAgLy8vIEFjY2VzcyBhbiBhcnJheSBlbGVtZW50ICh6ZXJvIGJhc2VkIGluZGV4
ICkuCi0gIC8vLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgbGVzcyB0aGFuIGluZGV4IGVsZW1lbnQs
IHRoZW4gbnVsbCB2YWx1ZSBhcmUKLSAgLy8vIGluc2VydGVkCi0gIC8vLyBpbiB0aGUgYXJyYXkg
c28gdGhhdCBpdHMgc2l6ZSBpcyBpbmRleCsxLgotICAvLy8gKFlvdSBtYXkgbmVlZCB0byBzYXkg
J3ZhbHVlWzB1XScgdG8gZ2V0IHlvdXIgY29tcGlsZXIgdG8gZGlzdGluZ3Vpc2gKLSAgLy8vICB0
aGlzIGZyb20gdGhlIG9wZXJhdG9yW10gd2hpY2ggdGFrZXMgYSBzdHJpbmcuKQotICBWYWx1ZSYg
b3BlcmF0b3JbXShBcnJheUluZGV4IGluZGV4KTsKLQotICAvLy8gQWNjZXNzIGFuIGFycmF5IGVs
ZW1lbnQgKHplcm8gYmFzZWQgaW5kZXggKS4KLSAgLy8vIElmIHRoZSBhcnJheSBjb250YWlucyBs
ZXNzIHRoYW4gaW5kZXggZWxlbWVudCwgdGhlbiBudWxsIHZhbHVlIGFyZQotICAvLy8gaW5zZXJ0
ZWQKLSAgLy8vIGluIHRoZSBhcnJheSBzbyB0aGF0IGl0cyBzaXplIGlzIGluZGV4KzEuCi0gIC8v
LyAoWW91IG1heSBuZWVkIHRvIHNheSAndmFsdWVbMHVdJyB0byBnZXQgeW91ciBjb21waWxlciB0
byBkaXN0aW5ndWlzaAotICAvLy8gIHRoaXMgZnJvbSB0aGUgb3BlcmF0b3JbXSB3aGljaCB0YWtl
cyBhIHN0cmluZy4pCi0gIFZhbHVlJiBvcGVyYXRvcltdKGludCBpbmRleCk7Ci0KLSAgLy8vIEFj
Y2VzcyBhbiBhcnJheSBlbGVtZW50ICh6ZXJvIGJhc2VkIGluZGV4ICkKLSAgLy8vIChZb3UgbWF5
IG5lZWQgdG8gc2F5ICd2YWx1ZVswdV0nIHRvIGdldCB5b3VyIGNvbXBpbGVyIHRvIGRpc3Rpbmd1
aXNoCi0gIC8vLyAgdGhpcyBmcm9tIHRoZSBvcGVyYXRvcltdIHdoaWNoIHRha2VzIGEgc3RyaW5n
LikKLSAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oQXJyYXlJbmRleCBpbmRleCkgY29uc3Q7Ci0K
LSAgLy8vIEFjY2VzcyBhbiBhcnJheSBlbGVtZW50ICh6ZXJvIGJhc2VkIGluZGV4ICkKLSAgLy8v
IChZb3UgbWF5IG5lZWQgdG8gc2F5ICd2YWx1ZVswdV0nIHRvIGdldCB5b3VyIGNvbXBpbGVyIHRv
IGRpc3Rpbmd1aXNoCi0gIC8vLyAgdGhpcyBmcm9tIHRoZSBvcGVyYXRvcltdIHdoaWNoIHRha2Vz
IGEgc3RyaW5nLikKLSAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oaW50IGluZGV4KSBjb25zdDsK
LQotICAvLy8gSWYgdGhlIGFycmF5IGNvbnRhaW5zIGF0IGxlYXN0IGluZGV4KzEgZWxlbWVudHMs
IHJldHVybnMgdGhlIGVsZW1lbnQKLSAgLy8vIHZhbHVlLAotICAvLy8gb3RoZXJ3aXNlIHJldHVy
bnMgZGVmYXVsdFZhbHVlLgotICBWYWx1ZSBnZXQoQXJyYXlJbmRleCBpbmRleCwgY29uc3QgVmFs
dWUmIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0gIC8vLyBSZXR1cm4gdHJ1ZSBpZiBpbmRleCA8IHNp
emUoKS4KLSAgYm9vbCBpc1ZhbGlkSW5kZXgoQXJyYXlJbmRleCBpbmRleCkgY29uc3Q7Ci0gIC8v
LyBcYnJpZWYgQXBwZW5kIHZhbHVlIHRvIGFycmF5IGF0IHRoZSBlbmQuCi0gIC8vLwotICAvLy8g
RXF1aXZhbGVudCB0byBqc29udmFsdWVbanNvbnZhbHVlLnNpemUoKV0gPSB2YWx1ZTsKLSAgVmFs
dWUmIGFwcGVuZChjb25zdCBWYWx1ZSYgdmFsdWUpOwotICBWYWx1ZSYgYXBwZW5kKFZhbHVlJiYg
dmFsdWUpOwotCi0gIC8vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIGNyZWF0ZSBh
IG51bGwgbWVtYmVyIGlmIGl0IGRvZXMgbm90IGV4aXN0LgotICAvLy8gXG5vdGUgQmVjYXVzZSBv
ZiBvdXIgaW1wbGVtZW50YXRpb24sIGtleXMgYXJlIGxpbWl0ZWQgdG8gMl4zMCAtMSBjaGFycy4K
LSAgLy8vICBFeGNlZWRpbmcgdGhhdCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbi4KLSAgVmFsdWUm
IG9wZXJhdG9yW10oY29uc3QgY2hhcioga2V5KTsKLSAgLy8vIEFjY2VzcyBhbiBvYmplY3QgdmFs
dWUgYnkgbmFtZSwgcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1lbWJlciB3aXRoCi0gIC8v
LyB0aGF0IG5hbWUuCi0gIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKGNvbnN0IGNoYXIqIGtleSkg
Y29uc3Q7Ci0gIC8vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIGNyZWF0ZSBhIG51
bGwgbWVtYmVyIGlmIGl0IGRvZXMgbm90IGV4aXN0LgotICAvLy8gXHBhcmFtIGtleSBtYXkgY29u
dGFpbiBlbWJlZGRlZCBudWxscy4KLSAgVmFsdWUmIG9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBr
ZXkpOwotICAvLy8gQWNjZXNzIGFuIG9iamVjdCB2YWx1ZSBieSBuYW1lLCByZXR1cm5zIG51bGwg
aWYgdGhlcmUgaXMgbm8gbWVtYmVyIHdpdGgKLSAgLy8vIHRoYXQgbmFtZS4KLSAgLy8vIFxwYXJh
bSBrZXkgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbHMuCi0gIGNvbnN0IFZhbHVlJiBvcGVyYXRv
cltdKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKLSAgLyoqIFxicmllZiBBY2Nlc3MgYW4gb2Jq
ZWN0IHZhbHVlIGJ5IG5hbWUsIGNyZWF0ZSBhIG51bGwgbWVtYmVyIGlmIGl0IGRvZXMgbm90Ci0g
ICBleGlzdC4KLQotICAgKiBJZiB0aGUgb2JqZWN0IGhhcyBubyBlbnRyeSBmb3IgdGhhdCBuYW1l
LCB0aGVuIHRoZSBtZW1iZXIgbmFtZSB1c2VkIHRvCi0gICBzdG9yZQotICAgKiB0aGUgbmV3IGVu
dHJ5IGlzIG5vdCBkdXBsaWNhdGVkLgotICAgKiBFeGFtcGxlIG9mIHVzZToKLSAgICogXGNvZGUK
LSAgICogSnNvbjo6VmFsdWUgb2JqZWN0OwotICAgKiBzdGF0aWMgY29uc3QgU3RhdGljU3RyaW5n
IGNvZGUoImNvZGUiKTsKLSAgICogb2JqZWN0W2NvZGVdID0gMTIzNDsKLSAgICogXGVuZGNvZGUK
LSAgICovCi0gIFZhbHVlJiBvcGVyYXRvcltdKGNvbnN0IFN0YXRpY1N0cmluZyYga2V5KTsKLSNp
ZmRlZiBKU09OX1VTRV9DUFBUTAotICAvLy8gQWNjZXNzIGFuIG9iamVjdCB2YWx1ZSBieSBuYW1l
LCBjcmVhdGUgYSBudWxsIG1lbWJlciBpZiBpdCBkb2VzIG5vdCBleGlzdC4KLSAgVmFsdWUmIG9w
ZXJhdG9yW10oY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiBrZXkpOwotICAvLy8gQWNjZXNzIGFu
IG9iamVjdCB2YWx1ZSBieSBuYW1lLCByZXR1cm5zIG51bGwgaWYgdGhlcmUgaXMgbm8gbWVtYmVy
IHdpdGgKLSAgLy8vIHRoYXQgbmFtZS4KLSAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oY29uc3Qg
Q3BwVEw6OkNvbnN0U3RyaW5nJiBrZXkpIGNvbnN0OwotI2VuZGlmCi0gIC8vLyBSZXR1cm4gdGhl
IG1lbWJlciBuYW1lZCBrZXkgaWYgaXQgZXhpc3QsIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuCi0g
IC8vLyBcbm90ZSBkZWVwIGNvcHkKLSAgVmFsdWUgZ2V0KGNvbnN0IGNoYXIqIGtleSwgY29uc3Qg
VmFsdWUmIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0gIC8vLyBSZXR1cm4gdGhlIG1lbWJlciBuYW1l
ZCBrZXkgaWYgaXQgZXhpc3QsIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuCi0gIC8vLyBcbm90ZSBk
ZWVwIGNvcHkKLSAgLy8vIFxub3RlIGtleSBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxscy4KLSAg
VmFsdWUKLSAgZ2V0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQsIGNvbnN0IFZh
bHVlJiBkZWZhdWx0VmFsdWUpIGNvbnN0OwotICAvLy8gUmV0dXJuIHRoZSBtZW1iZXIgbmFtZWQg
a2V5IGlmIGl0IGV4aXN0LCBkZWZhdWx0VmFsdWUgb3RoZXJ3aXNlLgotICAvLy8gXG5vdGUgZGVl
cCBjb3B5Ci0gIC8vLyBccGFyYW0ga2V5IG1heSBjb250YWluIGVtYmVkZGVkIG51bGxzLgotICBW
YWx1ZSBnZXQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFZhbHVlJiBkZWZhdWx0VmFsdWUpIGNv
bnN0OwotI2lmZGVmIEpTT05fVVNFX0NQUFRMCi0gIC8vLyBSZXR1cm4gdGhlIG1lbWJlciBuYW1l
ZCBrZXkgaWYgaXQgZXhpc3QsIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuCi0gIC8vLyBcbm90ZSBk
ZWVwIGNvcHkKLSAgVmFsdWUgZ2V0KGNvbnN0IENwcFRMOjpDb25zdFN0cmluZyYga2V5LCBjb25z
dCBWYWx1ZSYgZGVmYXVsdFZhbHVlKSBjb25zdDsKLSNlbmRpZgotICAvLy8gTW9zdCBnZW5lcmFs
IGFuZCBlZmZpY2llbnQgdmVyc2lvbiBvZiBpc01lbWJlcigpY29uc3QsIGdldCgpY29uc3QsCi0g
IC8vLyBhbmQgb3BlcmF0b3JbXWNvbnN0Ci0gIC8vLyBcbm90ZSBBcyBzdGF0ZWQgZWxzZXdoZXJl
LCBiZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgKGVuZC1iZWdpbikgPj0gMl4zMAotICBWYWx1ZSBj
b25zdCogZmluZChjaGFyIGNvbnN0KiBiZWdpbiwgY2hhciBjb25zdCogZW5kKSBjb25zdDsKLSAg
Ly8vIE1vc3QgZ2VuZXJhbCBhbmQgZWZmaWNpZW50IHZlcnNpb24gb2Ygb2JqZWN0LW11dGF0b3Jz
LgotICAvLy8gXG5vdGUgQXMgc3RhdGVkIGVsc2V3aGVyZSwgYmVoYXZpb3IgaXMgdW5kZWZpbmVk
IGlmIChlbmQtYmVnaW4pID49IDJeMzAKLSAgLy8vIFxyZXR1cm4gbm9uLXplcm8sIGJ1dCBKU09O
X0FTU0VSVCBpZiB0aGlzIGlzIG5laXRoZXIgb2JqZWN0IG5vciBudWxsVmFsdWUuCi0gIFZhbHVl
KiBkZW1hbmQoY2hhciBjb25zdCogYmVnaW4sIGNoYXIgY29uc3QqIGVuZCk7Ci0gIC8vLyBcYnJp
ZWYgUmVtb3ZlIGFuZCByZXR1cm4gdGhlIG5hbWVkIG1lbWJlci4KLSAgLy8vCi0gIC8vLyBEbyBu
b3RoaW5nIGlmIGl0IGRpZCBub3QgZXhpc3QuCi0gIC8vLyBccHJlIHR5cGUoKSBpcyBvYmplY3RW
YWx1ZSBvciBudWxsVmFsdWUKLSAgLy8vIFxwb3N0IHR5cGUoKSBpcyB1bmNoYW5nZWQKLSAgdm9p
ZCByZW1vdmVNZW1iZXIoY29uc3QgY2hhcioga2V5KTsKLSAgLy8vIFNhbWUgYXMgcmVtb3ZlTWVt
YmVyKGNvbnN0IGNoYXIqKQotICAvLy8gXHBhcmFtIGtleSBtYXkgY29udGFpbiBlbWJlZGRlZCBu
dWxscy4KLSAgdm9pZCByZW1vdmVNZW1iZXIoY29uc3QgU3RyaW5nJiBrZXkpOwotICAvLy8gU2Ft
ZSBhcyByZW1vdmVNZW1iZXIoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCwgVmFs
dWUqIHJlbW92ZWQpLAotICAvLy8gYnV0ICdrZXknIGlzIG51bGwtdGVybWluYXRlZC4KLSAgYm9v
bCByZW1vdmVNZW1iZXIoY29uc3QgY2hhcioga2V5LCBWYWx1ZSogcmVtb3ZlZCk7Ci0gIC8qKiBc
YnJpZWYgUmVtb3ZlIHRoZSBuYW1lZCBtYXAgbWVtYmVyLgotCi0gICAgICBVcGRhdGUgJ3JlbW92
ZWQnIGlmZiByZW1vdmVkLgotICAgICAgXHBhcmFtIGtleSBtYXkgY29udGFpbiBlbWJlZGRlZCBu
dWxscy4KLSAgICAgIFxyZXR1cm4gdHJ1ZSBpZmYgcmVtb3ZlZCAobm8gZXhjZXB0aW9ucykKLSAg
Ki8KLSAgYm9vbCByZW1vdmVNZW1iZXIoU3RyaW5nIGNvbnN0JiBrZXksIFZhbHVlKiByZW1vdmVk
KTsKLSAgLy8vIFNhbWUgYXMgcmVtb3ZlTWVtYmVyKFN0cmluZyBjb25zdCYga2V5LCBWYWx1ZSog
cmVtb3ZlZCkKLSAgYm9vbCByZW1vdmVNZW1iZXIoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNo
YXIqIGVuZCwgVmFsdWUqIHJlbW92ZWQpOwotICAvKiogXGJyaWVmIFJlbW92ZSB0aGUgaW5kZXhl
ZCBhcnJheSBlbGVtZW50LgotCi0gICAgICBPKG4pIGV4cGVuc2l2ZSBvcGVyYXRpb25zLgotICAg
ICAgVXBkYXRlICdyZW1vdmVkJyBpZmYgcmVtb3ZlZC4KLSAgICAgIFxyZXR1cm4gdHJ1ZSBpZiBy
ZW1vdmVkIChubyBleGNlcHRpb25zKQotICAqLwotICBib29sIHJlbW92ZUluZGV4KEFycmF5SW5k
ZXggaW5kZXgsIFZhbHVlKiByZW1vdmVkKTsKLQotICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIG9i
amVjdCBoYXMgYSBtZW1iZXIgbmFtZWQga2V5LgotICAvLy8gXG5vdGUgJ2tleScgbXVzdCBiZSBu
dWxsLXRlcm1pbmF0ZWQuCi0gIGJvb2wgaXNNZW1iZXIoY29uc3QgY2hhcioga2V5KSBjb25zdDsK
LSAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaGFzIGEgbWVtYmVyIG5hbWVkIGtleS4K
LSAgLy8vIFxwYXJhbSBrZXkgbWF5IGNvbnRhaW4gZW1iZWRkZWQgbnVsbHMuCi0gIGJvb2wgaXNN
ZW1iZXIoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAvLy8gU2FtZSBhcyBpc01lbWJlcihT
dHJpbmcgY29uc3QmIGtleSljb25zdAotICBib29sIGlzTWVtYmVyKGNvbnN0IGNoYXIqIGJlZ2lu
LCBjb25zdCBjaGFyKiBlbmQpIGNvbnN0OwotI2lmZGVmIEpTT05fVVNFX0NQUFRMCi0gIC8vLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGhhcyBhIG1lbWJlciBuYW1lZCBrZXkuCi0gIGJvb2wg
aXNNZW1iZXIoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiBrZXkpIGNvbnN0OwotI2VuZGlmCi0K
LSAgLy8vIFxicmllZiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBtZW1iZXIgbmFtZXMuCi0gIC8vLwot
ICAvLy8gSWYgbnVsbCwgcmV0dXJuIGFuIGVtcHR5IGxpc3QuCi0gIC8vLyBccHJlIHR5cGUoKSBp
cyBvYmplY3RWYWx1ZSBvciBudWxsVmFsdWUKLSAgLy8vIFxwb3N0IGlmIHR5cGUoKSB3YXMgbnVs
bFZhbHVlLCBpdCByZW1haW5zIG51bGxWYWx1ZQotICBNZW1iZXJzIGdldE1lbWJlck5hbWVzKCkg
Y29uc3Q7Ci0KLSAgLy8jIGlmZGVmIEpTT05fVVNFX0NQUFRMCi0gIC8vICAgICAgRW51bU1lbWJl
ck5hbWVzIGVudW1NZW1iZXJOYW1lcygpIGNvbnN0OwotICAvLyAgICAgIEVudW1WYWx1ZXMgZW51
bVZhbHVlcygpIGNvbnN0OwotICAvLyMgZW5kaWYKLQotICAvLy8gXGRlcHJlY2F0ZWQgQWx3YXlz
IHBhc3MgbGVuLgotICBKU09OQ1BQX0RFUFJFQ0FURUQoIlVzZSBzZXRDb21tZW50KFN0cmluZyBj
b25zdCYpIGluc3RlYWQuIikKLSAgdm9pZCBzZXRDb21tZW50KGNvbnN0IGNoYXIqIGNvbW1lbnQs
IENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSB7Ci0gICAgc2V0Q29tbWVudChTdHJpbmcoY29t
bWVudCwgc3RybGVuKGNvbW1lbnQpKSwgcGxhY2VtZW50KTsKLSAgfQotICAvLy8gQ29tbWVudHMg
bXVzdCBiZSAvLy4uLiBvciAvKiAuLi4gKi8KLSAgdm9pZCBzZXRDb21tZW50KGNvbnN0IGNoYXIq
IGNvbW1lbnQsIHNpemVfdCBsZW4sIENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSB7Ci0gICAg
c2V0Q29tbWVudChTdHJpbmcoY29tbWVudCwgbGVuKSwgcGxhY2VtZW50KTsKLSAgfQotICAvLy8g
Q29tbWVudHMgbXVzdCBiZSAvLy4uLiBvciAvKiAuLi4gKi8KLSAgdm9pZCBzZXRDb21tZW50KFN0
cmluZyBjb21tZW50LCBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCk7Ci0gIGJvb2wgaGFzQ29t
bWVudChDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCkgY29uc3Q7Ci0gIC8vLyBJbmNsdWRlIGRl
bGltaXRlcnMgYW5kIGVtYmVkZGVkIG5ld2xpbmVzLgotICBTdHJpbmcgZ2V0Q29tbWVudChDb21t
ZW50UGxhY2VtZW50IHBsYWNlbWVudCkgY29uc3Q7Ci0KLSAgU3RyaW5nIHRvU3R5bGVkU3RyaW5n
KCkgY29uc3Q7Ci0KLSAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3Q7Ci0KLSAgaXRlcmF0b3IgYmVnaW4oKTsKLSAgaXRlcmF0b3IgZW5k
KCk7Ci0KLSAgLy8gQWNjZXNzb3JzIGZvciB0aGUgW3N0YXJ0LCBsaW1pdCkgcmFuZ2Ugb2YgYnl0
ZXMgd2l0aGluIHRoZSBKU09OIHRleHQgZnJvbQotICAvLyB3aGljaCB0aGlzIHZhbHVlIHdhcyBw
YXJzZWQsIGlmIGFueS4KLSAgdm9pZCBzZXRPZmZzZXRTdGFydChwdHJkaWZmX3Qgc3RhcnQpOwot
ICB2b2lkIHNldE9mZnNldExpbWl0KHB0cmRpZmZfdCBsaW1pdCk7Ci0gIHB0cmRpZmZfdCBnZXRP
ZmZzZXRTdGFydCgpIGNvbnN0OwotICBwdHJkaWZmX3QgZ2V0T2Zmc2V0TGltaXQoKSBjb25zdDsK
LQotcHJpdmF0ZToKLSAgdm9pZCBzZXRUeXBlKFZhbHVlVHlwZSB2KSB7Ci0gICAgYml0c18udmFs
dWVfdHlwZV8gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2KTsKLSAgfQotICBib29sIGlz
QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gYml0c18uYWxsb2NhdGVkXzsgfQotICB2b2lkIHNl
dElzQWxsb2NhdGVkKGJvb2wgdikgeyBiaXRzXy5hbGxvY2F0ZWRfID0gdjsgfQotCi0gIHZvaWQg
aW5pdEJhc2ljKFZhbHVlVHlwZSB0eXBlLCBib29sIGFsbG9jYXRlZCA9IGZhbHNlKTsKLSAgdm9p
ZCBkdXBQYXlsb2FkKGNvbnN0IFZhbHVlJiBvdGhlcik7Ci0gIHZvaWQgcmVsZWFzZVBheWxvYWQo
KTsKLSAgdm9pZCBkdXBNZXRhKGNvbnN0IFZhbHVlJiBvdGhlcik7Ci0KLSAgVmFsdWUmIHJlc29s
dmVSZWZlcmVuY2UoY29uc3QgY2hhcioga2V5KTsKLSAgVmFsdWUmIHJlc29sdmVSZWZlcmVuY2Uo
Y29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiBlbmQpOwotCi0gIC8vIHN0cnVjdCBNZW1iZXJO
YW1lc1RyYW5zZm9ybQotICAvL3sKLSAgLy8gICB0eXBlZGVmIGNvbnN0IGNoYXIgKnJlc3VsdF90
eXBlOwotICAvLyAgIGNvbnN0IGNoYXIgKm9wZXJhdG9yKCkoIGNvbnN0IENaU3RyaW5nICZuYW1l
ICkgY29uc3QKLSAgLy8gICB7Ci0gIC8vICAgICAgcmV0dXJuIG5hbWUuY19zdHIoKTsKLSAgLy8g
ICB9Ci0gIC8vfTsKLQotICB1bmlvbiBWYWx1ZUhvbGRlciB7Ci0gICAgTGFyZ2VzdEludCBpbnRf
OwotICAgIExhcmdlc3RVSW50IHVpbnRfOwotICAgIGRvdWJsZSByZWFsXzsKLSAgICBib29sIGJv
b2xfOwotICAgIGNoYXIqIHN0cmluZ187IC8vIGlmIGFsbG9jYXRlZF8sIHB0ciB0byB7IHVuc2ln
bmVkLCBjaGFyW10gfS4KLSAgICBPYmplY3RWYWx1ZXMqIG1hcF87Ci0gIH0gdmFsdWVfOwotCi0g
IHN0cnVjdCB7Ci0gICAgLy8gUmVhbGx5IGEgVmFsdWVUeXBlLCBidXQgdHlwZXMgc2hvdWxkIGFn
cmVlIGZvciBiaXRmaWVsZCBwYWNraW5nLgotICAgIHVuc2lnbmVkIGludCB2YWx1ZV90eXBlXyA6
IDg7Ci0gICAgLy8gVW5sZXNzIGFsbG9jYXRlZF8sIHN0cmluZ18gbXVzdCBiZSBudWxsLXRlcm1p
bmF0ZWQuCi0gICAgdW5zaWduZWQgaW50IGFsbG9jYXRlZF8gOiAxOwotICB9IGJpdHNfOwotCi0g
IGNsYXNzIENvbW1lbnRzIHsKLSAgcHVibGljOgotICAgIENvbW1lbnRzKCkgPSBkZWZhdWx0Owot
ICAgIENvbW1lbnRzKGNvbnN0IENvbW1lbnRzJiB0aGF0KTsKLSAgICBDb21tZW50cyhDb21tZW50
cyYmIHRoYXQpOwotICAgIENvbW1lbnRzJiBvcGVyYXRvcj0oY29uc3QgQ29tbWVudHMmIHRoYXQp
OwotICAgIENvbW1lbnRzJiBvcGVyYXRvcj0oQ29tbWVudHMmJiB0aGF0KTsKLSAgICBib29sIGhh
cyhDb21tZW50UGxhY2VtZW50IHNsb3QpIGNvbnN0OwotICAgIFN0cmluZyBnZXQoQ29tbWVudFBs
YWNlbWVudCBzbG90KSBjb25zdDsKLSAgICB2b2lkIHNldChDb21tZW50UGxhY2VtZW50IHNsb3Qs
IFN0cmluZyBzKTsKLQotICBwcml2YXRlOgotICAgIHVzaW5nIEFycmF5ID0gc3RkOjphcnJheTxT
dHJpbmcsIG51bWJlck9mQ29tbWVudFBsYWNlbWVudD47Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5PiBwdHJfOwotICB9OwotICBDb21tZW50cyBjb21tZW50c187Ci0KLSAgLy8gW3N0YXJ0LCBs
aW1pdCkgYnl0ZSBvZmZzZXRzIGluIHRoZSBzb3VyY2UgSlNPTiB0ZXh0IGZyb20gd2hpY2ggdGhp
cyBWYWx1ZQotICAvLyB3YXMgZXh0cmFjdGVkLgotICBwdHJkaWZmX3Qgc3RhcnRfOwotICBwdHJk
aWZmX3QgbGltaXRfOwotfTsKLQotLyoqIFxicmllZiBFeHBlcmltZW50YWwgYW5kIHVudGVzdGVk
OiByZXByZXNlbnRzIGFuIGVsZW1lbnQgb2YgdGhlICJwYXRoIiB0bwotICogYWNjZXNzIGEgbm9k
ZS4KLSAqLwotY2xhc3MgSlNPTl9BUEkgUGF0aEFyZ3VtZW50IHsKLXB1YmxpYzoKLSAgZnJpZW5k
IGNsYXNzIFBhdGg7Ci0KLSAgUGF0aEFyZ3VtZW50KCk7Ci0gIFBhdGhBcmd1bWVudChBcnJheUlu
ZGV4IGluZGV4KTsKLSAgUGF0aEFyZ3VtZW50KGNvbnN0IGNoYXIqIGtleSk7Ci0gIFBhdGhBcmd1
bWVudChjb25zdCBTdHJpbmcmIGtleSk7Ci0KLXByaXZhdGU6Ci0gIGVudW0gS2luZCB7IGtpbmRO
b25lID0gMCwga2luZEluZGV4LCBraW5kS2V5IH07Ci0gIFN0cmluZyBrZXlfOwotICBBcnJheUlu
ZGV4IGluZGV4X3t9OwotICBLaW5kIGtpbmRfe2tpbmROb25lfTsKLX07Ci0KLS8qKiBcYnJpZWYg
RXhwZXJpbWVudGFsIGFuZCB1bnRlc3RlZDogcmVwcmVzZW50cyBhICJwYXRoIiB0byBhY2Nlc3Mg
YSBub2RlLgotICoKLSAqIFN5bnRheDoKLSAqIC0gIi4iID0+IHJvb3Qgbm9kZQotICogLSAiLltu
XSIgPT4gZWxlbWVudHMgYXQgaW5kZXggJ24nIG9mIHJvb3Qgbm9kZSAoYW4gYXJyYXkgdmFsdWUp
Ci0gKiAtICIubmFtZSIgPT4gbWVtYmVyIG5hbWVkICduYW1lJyBvZiByb290IG5vZGUgKGFuIG9i
amVjdCB2YWx1ZSkKLSAqIC0gIi5uYW1lMS5uYW1lMi5uYW1lMyIKLSAqIC0gIi5bMF1bMV1bMl0u
bmFtZTFbM10iCi0gKiAtICIuJSIgPT4gbWVtYmVyIG5hbWUgaXMgcHJvdmlkZWQgYXMgcGFyYW1l
dGVyCi0gKiAtICIuWyVdIiA9PiBpbmRleCBpcyBwcm92aWVkIGFzIHBhcmFtZXRlcgotICovCi1j
bGFzcyBKU09OX0FQSSBQYXRoIHsKLXB1YmxpYzoKLSAgUGF0aChjb25zdCBTdHJpbmcmIHBhdGgs
Ci0gICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhMSA9IFBhdGhBcmd1bWVudCgpLAotICAgICAg
IGNvbnN0IFBhdGhBcmd1bWVudCYgYTIgPSBQYXRoQXJndW1lbnQoKSwKLSAgICAgICBjb25zdCBQ
YXRoQXJndW1lbnQmIGEzID0gUGF0aEFyZ3VtZW50KCksCi0gICAgICAgY29uc3QgUGF0aEFyZ3Vt
ZW50JiBhNCA9IFBhdGhBcmd1bWVudCgpLAotICAgICAgIGNvbnN0IFBhdGhBcmd1bWVudCYgYTUg
PSBQYXRoQXJndW1lbnQoKSk7Ci0KLSAgY29uc3QgVmFsdWUmIHJlc29sdmUoY29uc3QgVmFsdWUm
IHJvb3QpIGNvbnN0OwotICBWYWx1ZSByZXNvbHZlKGNvbnN0IFZhbHVlJiByb290LCBjb25zdCBW
YWx1ZSYgZGVmYXVsdFZhbHVlKSBjb25zdDsKLSAgLy8vIENyZWF0ZXMgdGhlICJwYXRoIiB0byBh
Y2Nlc3MgdGhlIHNwZWNpZmllZCBub2RlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIG9uCi0gIC8v
LyB0aGUgbm9kZS4KLSAgVmFsdWUmIG1ha2UoVmFsdWUmIHJvb3QpIGNvbnN0OwotCi1wcml2YXRl
OgotICB0eXBlZGVmIHN0ZDo6dmVjdG9yPGNvbnN0IFBhdGhBcmd1bWVudCo+IEluQXJnczsKLSAg
dHlwZWRlZiBzdGQ6OnZlY3RvcjxQYXRoQXJndW1lbnQ+IEFyZ3M7Ci0KLSAgdm9pZCBtYWtlUGF0
aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEluQXJncyYgaW4pOwotICB2b2lkIGFkZFBhdGhJ
bkFyZyhjb25zdCBTdHJpbmcmIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEluQXJn
cyYgaW4sCi0gICAgICAgICAgICAgICAgICAgIEluQXJnczo6Y29uc3RfaXRlcmF0b3ImIGl0SW5B
cmcsCi0gICAgICAgICAgICAgICAgICAgIFBhdGhBcmd1bWVudDo6S2luZCBraW5kKTsKLSAgc3Rh
dGljIHZvaWQgaW52YWxpZFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQgbG9jYXRpb24pOwot
Ci0gIEFyZ3MgYXJnc187Ci19OwotCi0vKiogXGJyaWVmIGJhc2UgY2xhc3MgZm9yIFZhbHVlIGl0
ZXJhdG9ycy4KLSAqCi0gKi8KLWNsYXNzIEpTT05fQVBJIFZhbHVlSXRlcmF0b3JCYXNlIHsKLXB1
YmxpYzoKLSAgdHlwZWRlZiBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwotICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7Ci0gIHR5cGVkZWYgaW50
IGRpZmZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiBWYWx1ZUl0ZXJhdG9yQmFzZSBTZWxmVHlwZTsK
LQotICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VsZlR5cGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBpc0VxdWFsKG90aGVyKTsgfQotCi0gIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTZWxmVHlwZSYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFpc0VxdWFsKG90aGVyKTsgfQotCi0gIGRpZmZlcmVuY2Vf
dHlwZSBvcGVyYXRvci0oY29uc3QgU2VsZlR5cGUmIG90aGVyKSBjb25zdCB7Ci0gICAgcmV0dXJu
IG90aGVyLmNvbXB1dGVEaXN0YW5jZSgqdGhpcyk7Ci0gIH0KLQotICAvLy8gUmV0dXJuIGVpdGhl
ciB0aGUgaW5kZXggb3IgdGhlIG1lbWJlciBuYW1lIG9mIHRoZSByZWZlcmVuY2VkIHZhbHVlIGFz
IGEKLSAgLy8vIFZhbHVlLgotICBWYWx1ZSBrZXkoKSBjb25zdDsKLQotICAvLy8gUmV0dXJuIHRo
ZSBpbmRleCBvZiB0aGUgcmVmZXJlbmNlZCBWYWx1ZSwgb3IgLTEgaWYgaXQgaXMgbm90IGFuCi0g
IC8vLyBhcnJheVZhbHVlLgotICBVSW50IGluZGV4KCkgY29uc3Q7Ci0KLSAgLy8vIFJldHVybiB0
aGUgbWVtYmVyIG5hbWUgb2YgdGhlIHJlZmVyZW5jZWQgVmFsdWUsIG9yICIiIGlmIGl0IGlzIG5v
dCBhbgotICAvLy8gb2JqZWN0VmFsdWUuCi0gIC8vLyBcbm90ZSBBdm9pZCBgY19zdHIoKWAgb24g
cmVzdWx0LCBhcyBlbWJlZGRlZCB6ZXJvZXMgYXJlIHBvc3NpYmxlLgotICBTdHJpbmcgbmFtZSgp
IGNvbnN0OwotCi0gIC8vLyBSZXR1cm4gdGhlIG1lbWJlciBuYW1lIG9mIHRoZSByZWZlcmVuY2Vk
IFZhbHVlLiAiIiBpZiBpdCBpcyBub3QgYW4KLSAgLy8vIG9iamVjdFZhbHVlLgotICAvLy8gXGRl
cHJlY2F0ZWQgVGhpcyBjYW5ub3QgYmUgdXNlZCBmb3IgVVRGLTggc3RyaW5ncywgc2luY2UgdGhl
cmUgY2FuIGJlCi0gIC8vLyBlbWJlZGRlZCBudWxscy4KLSAgSlNPTkNQUF9ERVBSRUNBVEVEKCJV
c2UgYGtleSA9IG5hbWUoKTtgIGluc3RlYWQuIikKLSAgY2hhciBjb25zdCogbWVtYmVyTmFtZSgp
IGNvbnN0OwotICAvLy8gUmV0dXJuIHRoZSBtZW1iZXIgbmFtZSBvZiB0aGUgcmVmZXJlbmNlZCBW
YWx1ZSwgb3IgTlVMTCBpZiBpdCBpcyBub3QgYW4KLSAgLy8vIG9iamVjdFZhbHVlLgotICAvLy8g
XG5vdGUgQmV0dGVyIHZlcnNpb24gdGhhbiBtZW1iZXJOYW1lKCkuIEFsbG93cyBlbWJlZGRlZCBu
dWxscy4KLSAgY2hhciBjb25zdCogbWVtYmVyTmFtZShjaGFyIGNvbnN0KiogZW5kKSBjb25zdDsK
LQotcHJvdGVjdGVkOgotICBWYWx1ZSYgZGVyZWYoKSBjb25zdDsKLQotICB2b2lkIGluY3JlbWVu
dCgpOwotCi0gIHZvaWQgZGVjcmVtZW50KCk7Ci0KLSAgZGlmZmVyZW5jZV90eXBlIGNvbXB1dGVE
aXN0YW5jZShjb25zdCBTZWxmVHlwZSYgb3RoZXIpIGNvbnN0OwotCi0gIGJvb2wgaXNFcXVhbChj
b25zdCBTZWxmVHlwZSYgb3RoZXIpIGNvbnN0OwotCi0gIHZvaWQgY29weShjb25zdCBTZWxmVHlw
ZSYgb3RoZXIpOwotCi1wcml2YXRlOgotICBWYWx1ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciBj
dXJyZW50XzsKLSAgLy8gSW5kaWNhdGVzIHRoYXQgaXRlcmF0b3IgaXMgZm9yIGEgbnVsbCB2YWx1
ZS4KLSAgYm9vbCBpc051bGxfe3RydWV9OwotCi1wdWJsaWM6Ci0gIC8vIEZvciBzb21lIHJlYXNv
biwgQk9STEFORCBuZWVkcyB0aGVzZSBhdCB0aGUgZW5kLCByYXRoZXIKLSAgLy8gdGhhbiBlYXJs
aWVyLiBObyBpZGVhIHdoeS4KLSAgVmFsdWVJdGVyYXRvckJhc2UoKTsKLSAgZXhwbGljaXQgVmFs
dWVJdGVyYXRvckJhc2UoY29uc3QgVmFsdWU6Ok9iamVjdFZhbHVlczo6aXRlcmF0b3ImIGN1cnJl
bnQpOwotfTsKLQotLyoqIFxicmllZiBjb25zdCBpdGVyYXRvciBmb3Igb2JqZWN0IGFuZCBhcnJh
eSB2YWx1ZS4KLSAqCi0gKi8KLWNsYXNzIEpTT05fQVBJIFZhbHVlQ29uc3RJdGVyYXRvciA6IHB1
YmxpYyBWYWx1ZUl0ZXJhdG9yQmFzZSB7Ci0gIGZyaWVuZCBjbGFzcyBWYWx1ZTsKLQotcHVibGlj
OgotICB0eXBlZGVmIGNvbnN0IFZhbHVlIHZhbHVlX3R5cGU7Ci0gIC8vIHR5cGVkZWYgdW5zaWdu
ZWQgaW50IHNpemVfdDsKLSAgLy8gdHlwZWRlZiBpbnQgZGlmZmVyZW5jZV90eXBlOwotICB0eXBl
ZGVmIGNvbnN0IFZhbHVlJiByZWZlcmVuY2U7Ci0gIHR5cGVkZWYgY29uc3QgVmFsdWUqIHBvaW50
ZXI7Ci0gIHR5cGVkZWYgVmFsdWVDb25zdEl0ZXJhdG9yIFNlbGZUeXBlOwotCi0gIFZhbHVlQ29u
c3RJdGVyYXRvcigpOwotICBWYWx1ZUNvbnN0SXRlcmF0b3IoVmFsdWVJdGVyYXRvciBjb25zdCYg
b3RoZXIpOwotCi1wcml2YXRlOgotICAvKiEgXGludGVybmFsIFVzZSBieSBWYWx1ZSB0byBjcmVh
dGUgYW4gaXRlcmF0b3IuCi0gICAqLwotICBleHBsaWNpdCBWYWx1ZUNvbnN0SXRlcmF0b3IoY29u
c3QgVmFsdWU6Ok9iamVjdFZhbHVlczo6aXRlcmF0b3ImIGN1cnJlbnQpOwotCi1wdWJsaWM6Ci0g
IFNlbGZUeXBlJiBvcGVyYXRvcj0oY29uc3QgVmFsdWVJdGVyYXRvckJhc2UmIG90aGVyKTsKLQot
ICBTZWxmVHlwZSBvcGVyYXRvcisrKGludCkgewotICAgIFNlbGZUeXBlIHRlbXAoKnRoaXMpOwot
ICAgICsrKnRoaXM7Ci0gICAgcmV0dXJuIHRlbXA7Ci0gIH0KLQotICBTZWxmVHlwZSBvcGVyYXRv
ci0tKGludCkgewotICAgIFNlbGZUeXBlIHRlbXAoKnRoaXMpOwotICAgIC0tKnRoaXM7Ci0gICAg
cmV0dXJuIHRlbXA7Ci0gIH0KLQotICBTZWxmVHlwZSYgb3BlcmF0b3ItLSgpIHsKLSAgICBkZWNy
ZW1lbnQoKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICBTZWxmVHlwZSYgb3BlcmF0b3Ir
KygpIHsKLSAgICBpbmNyZW1lbnQoKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICByZWZl
cmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZGVyZWYoKTsgfQotCi0gIHBvaW50ZXIg
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZkZXJlZigpOyB9Ci19OwotCi0vKiogXGJyaWVm
IEl0ZXJhdG9yIGZvciBvYmplY3QgYW5kIGFycmF5IHZhbHVlLgotICovCi1jbGFzcyBKU09OX0FQ
SSBWYWx1ZUl0ZXJhdG9yIDogcHVibGljIFZhbHVlSXRlcmF0b3JCYXNlIHsKLSAgZnJpZW5kIGNs
YXNzIFZhbHVlOwotCi1wdWJsaWM6Ci0gIHR5cGVkZWYgVmFsdWUgdmFsdWVfdHlwZTsKLSAgdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwotICB0eXBlZGVmIGludCBkaWZmZXJlbmNlX3R5cGU7
Ci0gIHR5cGVkZWYgVmFsdWUmIHJlZmVyZW5jZTsKLSAgdHlwZWRlZiBWYWx1ZSogcG9pbnRlcjsK
LSAgdHlwZWRlZiBWYWx1ZUl0ZXJhdG9yIFNlbGZUeXBlOwotCi0gIFZhbHVlSXRlcmF0b3IoKTsK
LSAgZXhwbGljaXQgVmFsdWVJdGVyYXRvcihjb25zdCBWYWx1ZUNvbnN0SXRlcmF0b3ImIG90aGVy
KTsKLSAgVmFsdWVJdGVyYXRvcihjb25zdCBWYWx1ZUl0ZXJhdG9yJiBvdGhlcik7Ci0KLXByaXZh
dGU6Ci0gIC8qISBcaW50ZXJuYWwgVXNlIGJ5IFZhbHVlIHRvIGNyZWF0ZSBhbiBpdGVyYXRvci4K
LSAgICovCi0gIGV4cGxpY2l0IFZhbHVlSXRlcmF0b3IoY29uc3QgVmFsdWU6Ok9iamVjdFZhbHVl
czo6aXRlcmF0b3ImIGN1cnJlbnQpOwotCi1wdWJsaWM6Ci0gIFNlbGZUeXBlJiBvcGVyYXRvcj0o
Y29uc3QgU2VsZlR5cGUmIG90aGVyKTsKLQotICBTZWxmVHlwZSBvcGVyYXRvcisrKGludCkgewot
ICAgIFNlbGZUeXBlIHRlbXAoKnRoaXMpOwotICAgICsrKnRoaXM7Ci0gICAgcmV0dXJuIHRlbXA7
Ci0gIH0KLQotICBTZWxmVHlwZSBvcGVyYXRvci0tKGludCkgewotICAgIFNlbGZUeXBlIHRlbXAo
KnRoaXMpOwotICAgIC0tKnRoaXM7Ci0gICAgcmV0dXJuIHRlbXA7Ci0gIH0KLQotICBTZWxmVHlw
ZSYgb3BlcmF0b3ItLSgpIHsKLSAgICBkZWNyZW1lbnQoKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0g
IH0KLQotICBTZWxmVHlwZSYgb3BlcmF0b3IrKygpIHsKLSAgICBpbmNyZW1lbnQoKTsKLSAgICBy
ZXR1cm4gKnRoaXM7Ci0gIH0KLQotICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gZGVyZWYoKTsgfQotCi0gIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZk
ZXJlZigpOyB9Ci19OwotCi1pbmxpbmUgdm9pZCBzd2FwKFZhbHVlJiBhLCBWYWx1ZSYgYikgeyBh
LnN3YXAoYik7IH0KLQotfSAvLyBuYW1lc3BhY2UgSnNvbgotCi0jcHJhZ21hIHBhY2socG9wKQot
Ci0jaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9XQVJOSU5HKQotI3By
YWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAvLyBpZiBkZWZpbmVkKEpTT05DUFBfRElTQUJMRV9E
TExfSU5URVJGQUNFX1dBUk5JTkcpCi0KLSNlbmRpZiAvLyBDUFBUTF9KU09OX0hfSU5DTFVERUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL3dyaXRlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9pbmNsdWRlL2pz
b24vd3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZmQzNmE3YTg0NS4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvaW5jbHVkZS9qc29uL3dyaXRlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzY4ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVw
aWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQg
bGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBp
biB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBj
b3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZm5kZWYg
SlNPTl9XUklURVJfSF9JTkNMVURFRAotI2RlZmluZSBKU09OX1dSSVRFUl9IX0lOQ0xVREVECi0K
LSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlICJ2YWx1ZS5oIgot
I2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1BTEdBTUFUSU9OKQotI2luY2x1ZGUgPG9z
dHJlYW0+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotLy8gRGlzYWJs
ZSB3YXJuaW5nIEM0MjUxOiA8ZGF0YSBtZW1iZXI+OiA8dHlwZT4gbmVlZHMgdG8gaGF2ZSBkbGwt
aW50ZXJmYWNlIHRvCi0vLyBiZSB1c2VkIGJ5Li4uCi0jaWYgZGVmaW5lZChKU09OQ1BQX0RJU0FC
TEVfRExMX0lOVEVSRkFDRV9XQVJOSU5HKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3
YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEpCi0jZW5kaWYgLy8g
aWYgZGVmaW5lZChKU09OQ1BQX0RJU0FCTEVfRExMX0lOVEVSRkFDRV9XQVJOSU5HKQotCi0jcHJh
Z21hIHBhY2socHVzaCwgOCkKLQotbmFtZXNwYWNlIEpzb24gewotCi1jbGFzcyBWYWx1ZTsKLQot
LyoqCi0KLVVzYWdlOgotXGNvZGUKLSAgdXNpbmcgbmFtZXNwYWNlIEpzb247Ci0gIHZvaWQgd3Jp
dGVUb1N0ZG91dChTdHJlYW1Xcml0ZXI6OkZhY3RvcnkgY29uc3QmIGZhY3RvcnksIFZhbHVlIGNv
bnN0JiB2YWx1ZSkgewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1Xcml0ZXI+IGNvbnN0IHdy
aXRlcigKLSAgICAgIGZhY3RvcnkubmV3U3RyZWFtV3JpdGVyKCkpOwotICAgIHdyaXRlci0+d3Jp
dGUodmFsdWUsICZzdGQ6OmNvdXQpOwotICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7ICAvLyBh
ZGQgbGYgYW5kIGZsdXNoCi0gIH0KLVxlbmRjb2RlCi0qLwotY2xhc3MgSlNPTl9BUEkgU3RyZWFt
V3JpdGVyIHsKLXByb3RlY3RlZDoKLSAgT1N0cmVhbSogc291dF87IC8vIG5vdCBvd25lZDsgd2ls
bCBub3QgZGVsZXRlCi1wdWJsaWM6Ci0gIFN0cmVhbVdyaXRlcigpOwotICB2aXJ0dWFsIH5TdHJl
YW1Xcml0ZXIoKTsKLSAgLyoqIFdyaXRlIFZhbHVlIGludG8gZG9jdW1lbnQgYXMgY29uZmlndXJl
ZCBpbiBzdWItY2xhc3MuCi0gICAgICBEbyBub3QgdGFrZSBvd25lcnNoaXAgb2Ygc291dCwgYnV0
IG1haW50YWluIGEgcmVmZXJlbmNlIGR1cmluZyBmdW5jdGlvbi4KLSAgICAgIFxwcmUgc291dCAh
PSBOVUxMCi0gICAgICBccmV0dXJuIHplcm8gb24gc3VjY2VzcyAoRm9yIG5vdywgd2UgYWx3YXlz
IHJldHVybiB6ZXJvLCBzbyBjaGVjayB0aGUKLSAgICAgc3RyZWFtIGluc3RlYWQuKSBcdGhyb3cg
c3RkOjpleGNlcHRpb24gcG9zc2libHksIGRlcGVuZGluZyBvbiBjb25maWd1cmF0aW9uCi0gICAq
LwotICB2aXJ0dWFsIGludCB3cml0ZShWYWx1ZSBjb25zdCYgcm9vdCwgT1N0cmVhbSogc291dCkg
PSAwOwotCi0gIC8qKiBcYnJpZWYgQSBzaW1wbGUgYWJzdHJhY3QgZmFjdG9yeS4KLSAgICovCi0g
IGNsYXNzIEpTT05fQVBJIEZhY3RvcnkgewotICBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RmFjdG9y
eSgpOwotICAgIC8qKiBcYnJpZWYgQWxsb2NhdGUgYSBDaGFyUmVhZGVyIHZpYSBvcGVyYXRvciBu
ZXcoKS4KLSAgICAgKiBcdGhyb3cgc3RkOjpleGNlcHRpb24gaWYgc29tZXRoaW5nIGdvZXMgd3Jv
bmcgKGUuZy4gaW52YWxpZCBzZXR0aW5ncykKLSAgICAgKi8KLSAgICB2aXJ0dWFsIFN0cmVhbVdy
aXRlciogbmV3U3RyZWFtV3JpdGVyKCkgY29uc3QgPSAwOwotICB9OyAvLyBGYWN0b3J5Ci19OyAg
IC8vIFN0cmVhbVdyaXRlcgotCi0vKiogXGJyaWVmIFdyaXRlIGludG8gc3RyaW5nc3RyZWFtLCB0
aGVuIHJldHVybiBzdHJpbmcsIGZvciBjb252ZW5pZW5jZS4KLSAqIEEgU3RyZWFtV3JpdGVyIHdp
bGwgYmUgY3JlYXRlZCBmcm9tIHRoZSBmYWN0b3J5LCB1c2VkLCBhbmQgdGhlbiBkZWxldGVkLgot
ICovCi1TdHJpbmcgSlNPTl9BUEkgd3JpdGVTdHJpbmcoU3RyZWFtV3JpdGVyOjpGYWN0b3J5IGNv
bnN0JiBmYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGNvbnN0JiBy
b290KTsKLQotLyoqIFxicmllZiBCdWlsZCBhIFN0cmVhbVdyaXRlciBpbXBsZW1lbnRhdGlvbi4K
LQotVXNhZ2U6Ci1cY29kZQotICB1c2luZyBuYW1lc3BhY2UgSnNvbjsKLSAgVmFsdWUgdmFsdWUg
PSAuLi47Ci0gIFN0cmVhbVdyaXRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgYnVpbGRlclsiY29tbWVu
dFN0eWxlIl0gPSAiTm9uZSI7Ci0gIGJ1aWxkZXJbImluZGVudGF0aW9uIl0gPSAiICAgIjsgIC8v
IG9yIHdoYXRldmVyIHlvdSBsaWtlCi0gIHN0ZDo6dW5pcXVlX3B0cjxKc29uOjpTdHJlYW1Xcml0
ZXI+IHdyaXRlcigKLSAgICAgIGJ1aWxkZXIubmV3U3RyZWFtV3JpdGVyKCkpOwotICB3cml0ZXIt
PndyaXRlKHZhbHVlLCAmc3RkOjpjb3V0KTsKLSAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsgIC8v
IGFkZCBsZiBhbmQgZmx1c2gKLVxlbmRjb2RlCi0qLwotY2xhc3MgSlNPTl9BUEkgU3RyZWFtV3Jp
dGVyQnVpbGRlciA6IHB1YmxpYyBTdHJlYW1Xcml0ZXI6OkZhY3RvcnkgewotcHVibGljOgotICAv
LyBOb3RlOiBXZSB1c2UgYSBKc29uOjpWYWx1ZSBzbyB0aGF0IHdlIGNhbiBhZGQgZGF0YS1tZW1i
ZXJzIHRvIHRoaXMgY2xhc3MKLSAgLy8gd2l0aG91dCBhIG1ham9yIHZlcnNpb24gYnVtcC4KLSAg
LyoqIENvbmZpZ3VyYXRpb24gb2YgdGhpcyBidWlsZGVyLgotICAgIEF2YWlsYWJsZSBzZXR0aW5n
cyAoY2FzZS1zZW5zaXRpdmUpOgotICAgIC0gImNvbW1lbnRTdHlsZSI6ICJOb25lIiBvciAiQWxs
IgotICAgIC0gImluZGVudGF0aW9uIjogICI8YW55dGhpbmc+Ii4KLSAgICAgIC0gU2V0dGluZyB0
aGlzIHRvIGFuIGVtcHR5IHN0cmluZyBhbHNvIG9taXRzIG5ld2xpbmUgY2hhcmFjdGVycy4KLSAg
ICAtICJlbmFibGVZQU1MQ29tcGF0aWJpbGl0eSI6IGZhbHNlIG9yIHRydWUKLSAgICAgIC0gc2xp
Z2h0bHkgY2hhbmdlIHRoZSB3aGl0ZXNwYWNlIGFyb3VuZCBjb2xvbnMKLSAgICAtICJkcm9wTnVs
bFBsYWNlaG9sZGVycyI6IGZhbHNlIG9yIHRydWUKLSAgICAgIC0gRHJvcCB0aGUgIm51bGwiIHN0
cmluZyBmcm9tIHRoZSB3cml0ZXIncyBvdXRwdXQgZm9yIG51bGxWYWx1ZXMuCi0gICAgICAgIFN0
cmljdGx5IHNwZWFraW5nLCB0aGlzIGlzIG5vdCB2YWxpZCBKU09OLiBCdXQgd2hlbiB0aGUgb3V0
cHV0IGlzIGJlaW5nCi0gICAgICAgIGZlZCB0byBhIGJyb3dzZXIncyBKYXZhU2NyaXB0LCBpdCBt
YWtlcyBmb3Igc21hbGxlciBvdXRwdXQgYW5kIHRoZQotICAgICAgICBicm93c2VyIGNhbiBoYW5k
bGUgdGhlIG91dHB1dCBqdXN0IGZpbmUuCi0gICAgLSAidXNlU3BlY2lhbEZsb2F0cyI6IGZhbHNl
IG9yIHRydWUKLSAgICAgIC0gSWYgdHJ1ZSwgb3V0cHV0cyBub24tZmluaXRlIGZsb2F0aW5nIHBv
aW50IHZhbHVlcyBpbiB0aGUgZm9sbG93aW5nIHdheToKLSAgICAgICAgTmFOIHZhbHVlcyBhcyAi
TmFOIiwgcG9zaXRpdmUgaW5maW5pdHkgYXMgIkluZmluaXR5IiwgYW5kIG5lZ2F0aXZlCi0gICAg
aW5maW5pdHkgYXMgIi1JbmZpbml0eSIuCi0gICAgLSAicHJlY2lzaW9uIjogaW50Ci0gICAgICAt
IE51bWJlciBvZiBwcmVjaXNpb24gZGlnaXRzIGZvciBmb3JtYXR0aW5nIG9mIHJlYWwgdmFsdWVz
LgotICAgIC0gInByZWNpc2lvblR5cGUiOiAic2lnbmlmaWNhbnQiKGRlZmF1bHQpIG9yICJkZWNp
bWFsIgotICAgICAgLSBUeXBlIG9mIHByZWNpc2lvbiBmb3IgZm9ybWF0dGluZyBvZiByZWFsIHZh
bHVlcy4KLQotICAgIFlvdSBjYW4gZXhhbWluZSAnc2V0dGluZ3NfYCB5b3Vyc2VsZgotICAgIHRv
IHNlZSB0aGUgZGVmYXVsdHMuIFlvdSBjYW4gYWxzbyB3cml0ZSBhbmQgcmVhZCB0aGVtIGp1c3Qg
bGlrZSBhbnkKLSAgICBKU09OIFZhbHVlLgotICAgIFxzYSBzZXREZWZhdWx0cygpCi0gICAgKi8K
LSAgSnNvbjo6VmFsdWUgc2V0dGluZ3NfOwotCi0gIFN0cmVhbVdyaXRlckJ1aWxkZXIoKTsKLSAg
flN0cmVhbVdyaXRlckJ1aWxkZXIoKSBvdmVycmlkZTsKLQotICAvKioKLSAgICogXHRocm93IHN0
ZDo6ZXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIChlLmcuIGludmFsaWQgc2V0dGlu
Z3MpCi0gICAqLwotICBTdHJlYW1Xcml0ZXIqIG5ld1N0cmVhbVdyaXRlcigpIGNvbnN0IG92ZXJy
aWRlOwotCi0gIC8qKiBccmV0dXJuIHRydWUgaWYgJ3NldHRpbmdzJyBhcmUgbGVnYWwgYW5kIGNv
bnNpc3RlbnQ7Ci0gICAqICAgb3RoZXJ3aXNlLCBpbmRpY2F0ZSBiYWQgc2V0dGluZ3MgdmlhICdp
bnZhbGlkJy4KLSAgICovCi0gIGJvb2wgdmFsaWRhdGUoSnNvbjo6VmFsdWUqIGludmFsaWQpIGNv
bnN0OwotICAvKiogQSBzaW1wbGUgd2F5IHRvIHVwZGF0ZSBhIHNwZWNpZmljIHNldHRpbmcuCi0g
ICAqLwotICBWYWx1ZSYgb3BlcmF0b3JbXShjb25zdCBTdHJpbmcmIGtleSk7Ci0KLSAgLyoqIENh
bGxlZCBieSBjdG9yLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0byByZXNldCBzZXR0aW5nc18uCi0g
ICAqIFxwcmUgJ3NldHRpbmdzJyAhPSBOVUxMIChidXQgSnNvbjo6bnVsbCBpcyBmaW5lKQotICAg
KiBccmVtYXJrIERlZmF1bHRzOgotICAgKiBcc25pcHBldCBzcmMvbGliX2pzb24vanNvbl93cml0
ZXIuY3BwIFN0cmVhbVdyaXRlckJ1aWxkZXJEZWZhdWx0cwotICAgKi8KLSAgc3RhdGljIHZvaWQg
c2V0RGVmYXVsdHMoSnNvbjo6VmFsdWUqIHNldHRpbmdzKTsKLX07Ci0KLS8qKiBcYnJpZWYgQWJz
dHJhY3QgY2xhc3MgZm9yIHdyaXRlcnMuCi0gKiBcZGVwcmVjYXRlZCBVc2UgU3RyZWFtV3JpdGVy
LiAoQW5kIHJlYWxseSwgdGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuKQotICovCi1j
bGFzcyBKU09OQ1BQX0RFUFJFQ0FURUQoIlVzZSBTdHJlYW1Xcml0ZXIgaW5zdGVhZCIpIEpTT05f
QVBJIFdyaXRlciB7Ci1wdWJsaWM6Ci0gIHZpcnR1YWwgfldyaXRlcigpOwotCi0gIHZpcnR1YWwg
U3RyaW5nIHdyaXRlKGNvbnN0IFZhbHVlJiByb290KSA9IDA7Ci19OwotCi0vKiogXGJyaWVmIE91
dHB1dHMgYSBWYWx1ZSBpbiA8YSBIUkVGPSJodHRwOi8vd3d3Lmpzb24ub3JnIj5KU09OPC9hPiBm
b3JtYXQKLSAqd2l0aG91dCBmb3JtYXR0aW5nIChub3QgaHVtYW4gZnJpZW5kbHkpLgotICoKLSAq
IFRoZSBKU09OIGRvY3VtZW50IGlzIHdyaXR0ZW4gaW4gYSBzaW5nbGUgbGluZS4gSXQgaXMgbm90
IGludGVuZGVkIGZvciAnaHVtYW4nCi0gKmNvbnN1bXB0aW9uLAotICogYnV0IG1heSBiZSB1c2Vm
dWwgdG8gc3VwcG9ydCBmZWF0dXJlIHN1Y2ggYXMgUlBDIHdoZXJlIGJhbmR3aWR0aCBpcyBsaW1p
dGVkLgotICogXHNhIFJlYWRlciwgVmFsdWUKLSAqIFxkZXByZWNhdGVkIFVzZSBTdHJlYW1Xcml0
ZXJCdWlsZGVyLgotICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhw
dXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2KSAvLyBEZXJpdmluZyBmcm9tIGRl
cHJlY2F0ZWQgY2xhc3MKLSNlbmRpZgotY2xhc3MgSlNPTkNQUF9ERVBSRUNBVEVEKCJVc2UgU3Ry
ZWFtV3JpdGVyQnVpbGRlciBpbnN0ZWFkIikgSlNPTl9BUEkgRmFzdFdyaXRlcgotICAgIDogcHVi
bGljIFdyaXRlciB7Ci1wdWJsaWM6Ci0gIEZhc3RXcml0ZXIoKTsKLSAgfkZhc3RXcml0ZXIoKSBv
dmVycmlkZSA9IGRlZmF1bHQ7Ci0KLSAgdm9pZCBlbmFibGVZQU1MQ29tcGF0aWJpbGl0eSgpOwot
Ci0gIC8qKiBcYnJpZWYgRHJvcCB0aGUgIm51bGwiIHN0cmluZyBmcm9tIHRoZSB3cml0ZXIncyBv
dXRwdXQgZm9yIG51bGxWYWx1ZXMuCi0gICAqIFN0cmljdGx5IHNwZWFraW5nLCB0aGlzIGlzIG5v
dCB2YWxpZCBKU09OLiBCdXQgd2hlbiB0aGUgb3V0cHV0IGlzIGJlaW5nCi0gICAqIGZlZCB0byBh
IGJyb3dzZXIncyBKYXZhU2NyaXB0LCBpdCBtYWtlcyBmb3Igc21hbGxlciBvdXRwdXQgYW5kIHRo
ZQotICAgKiBicm93c2VyIGNhbiBoYW5kbGUgdGhlIG91dHB1dCBqdXN0IGZpbmUuCi0gICAqLwot
ICB2b2lkIGRyb3BOdWxsUGxhY2Vob2xkZXJzKCk7Ci0KLSAgdm9pZCBvbWl0RW5kaW5nTGluZUZl
ZWQoKTsKLQotcHVibGljOiAvLyBvdmVycmlkZGVuIGZyb20gV3JpdGVyCi0gIFN0cmluZyB3cml0
ZShjb25zdCBWYWx1ZSYgcm9vdCkgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gIHZvaWQgd3JpdGVW
YWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotCi0gIFN0cmluZyBkb2N1bWVudF87Ci0gIGJvb2wg
eWFtbENvbXBhdGliaWxpdHlFbmFibGVkX3tmYWxzZX07Ci0gIGJvb2wgZHJvcE51bGxQbGFjZWhv
bGRlcnNfe2ZhbHNlfTsKLSAgYm9vbCBvbWl0RW5kaW5nTGluZUZlZWRfe2ZhbHNlfTsKLX07Ci0j
aWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLyoq
IFxicmllZiBXcml0ZXMgYSBWYWx1ZSBpbiA8YSBIUkVGPSJodHRwOi8vd3d3Lmpzb24ub3JnIj5K
U09OPC9hPiBmb3JtYXQgaW4gYQotICpodW1hbiBmcmllbmRseSB3YXkuCi0gKgotICogVGhlIHJ1
bGVzIGZvciBsaW5lIGJyZWFrIGFuZCBpbmRlbnQgYXJlIGFzIGZvbGxvdzoKLSAqIC0gT2JqZWN0
IHZhbHVlOgotICogICAgIC0gaWYgZW1wdHkgdGhlbiBwcmludCB7fSB3aXRob3V0IGluZGVudCBh
bmQgbGluZSBicmVhawotICogICAgIC0gaWYgbm90IGVtcHR5IHRoZSBwcmludCAneycsIGxpbmUg
YnJlYWsgJiBpbmRlbnQsIHByaW50IG9uZSB2YWx1ZSBwZXIKLSAqbGluZQotICogICAgICAgYW5k
IHRoZW4gdW5pbmRlbnQgYW5kIGxpbmUgYnJlYWsgYW5kIHByaW50ICd9Jy4KLSAqIC0gQXJyYXkg
dmFsdWU6Ci0gKiAgICAgLSBpZiBlbXB0eSB0aGVuIHByaW50IFtdIHdpdGhvdXQgaW5kZW50IGFu
ZCBsaW5lIGJyZWFrCi0gKiAgICAgLSBpZiB0aGUgYXJyYXkgY29udGFpbnMgbm8gb2JqZWN0IHZh
bHVlLCBlbXB0eSBhcnJheSBvciBzb21lIG90aGVyIHZhbHVlCi0gKnR5cGVzLAotICogICAgICAg
YW5kIGFsbCB0aGUgdmFsdWVzIGZpdCBvbiBvbmUgbGluZXMsIHRoZW4gcHJpbnQgdGhlIGFycmF5
IG9uIGEgc2luZ2xlCi0gKmxpbmUuCi0gKiAgICAgLSBvdGhlcndpc2UsIGl0IHRoZSB2YWx1ZXMg
ZG8gbm90IGZpdCBvbiBvbmUgbGluZSwgb3IgdGhlIGFycmF5IGNvbnRhaW5zCi0gKiAgICAgICBv
YmplY3Qgb3Igbm9uIGVtcHR5IGFycmF5LCB0aGVuIHByaW50IG9uZSB2YWx1ZSBwZXIgbGluZS4K
LSAqCi0gKiBJZiB0aGUgVmFsdWUgaGF2ZSBjb21tZW50cyB0aGVuIHRoZXkgYXJlIG91dHB1dGVk
IGFjY29yZGluZyB0byB0aGVpcgotICojQ29tbWVudFBsYWNlbWVudC4KLSAqCi0gKiBcc2EgUmVh
ZGVyLCBWYWx1ZSwgVmFsdWU6OnNldENvbW1lbnQoKQotICogXGRlcHJlY2F0ZWQgVXNlIFN0cmVh
bVdyaXRlckJ1aWxkZXIuCi0gKi8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJu
aW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ5OTYpIC8vIERlcml2aW5nIGZy
b20gZGVwcmVjYXRlZCBjbGFzcwotI2VuZGlmCi1jbGFzcyBKU09OQ1BQX0RFUFJFQ0FURUQoIlVz
ZSBTdHJlYW1Xcml0ZXJCdWlsZGVyIGluc3RlYWQiKSBKU09OX0FQSQotICAgIFN0eWxlZFdyaXRl
ciA6IHB1YmxpYyBXcml0ZXIgewotcHVibGljOgotICBTdHlsZWRXcml0ZXIoKTsKLSAgflN0eWxl
ZFdyaXRlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQotcHVibGljOiAvLyBvdmVycmlkZGVuIGZy
b20gV3JpdGVyCi0gIC8qKiBcYnJpZWYgU2VyaWFsaXplIGEgVmFsdWUgaW4gPGEgSFJFRj0iaHR0
cDovL3d3dy5qc29uLm9yZyI+SlNPTjwvYT4gZm9ybWF0LgotICAgKiBccGFyYW0gcm9vdCBWYWx1
ZSB0byBzZXJpYWxpemUuCi0gICAqIFxyZXR1cm4gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIEpTT04g
ZG9jdW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSByb290IHZhbHVlLgotICAgKi8KLSAgU3RyaW5n
IHdyaXRlKGNvbnN0IFZhbHVlJiByb290KSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgdm9pZCB3
cml0ZVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIHZvaWQgd3JpdGVBcnJheVZhbHVlKGNv
bnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIGJvb2wgaXNNdWx0aWxpbmVBcnJheShjb25zdCBWYWx1ZSYg
dmFsdWUpOwotICB2b2lkIHB1c2hWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgdm9pZCB3
cml0ZUluZGVudCgpOwotICB2b2lkIHdyaXRlV2l0aEluZGVudChjb25zdCBTdHJpbmcmIHZhbHVl
KTsKLSAgdm9pZCBpbmRlbnQoKTsKLSAgdm9pZCB1bmluZGVudCgpOwotICB2b2lkIHdyaXRlQ29t
bWVudEJlZm9yZVZhbHVlKGNvbnN0IFZhbHVlJiByb290KTsKLSAgdm9pZCB3cml0ZUNvbW1lbnRB
ZnRlclZhbHVlT25TYW1lTGluZShjb25zdCBWYWx1ZSYgcm9vdCk7Ci0gIHN0YXRpYyBib29sIGhh
c0NvbW1lbnRGb3JWYWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotICBzdGF0aWMgU3RyaW5nIG5v
cm1hbGl6ZUVPTChjb25zdCBTdHJpbmcmIHRleHQpOwotCi0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8
U3RyaW5nPiBDaGlsZFZhbHVlczsKLQotICBDaGlsZFZhbHVlcyBjaGlsZFZhbHVlc187Ci0gIFN0
cmluZyBkb2N1bWVudF87Ci0gIFN0cmluZyBpbmRlbnRTdHJpbmdfOwotICB1bnNpZ25lZCBpbnQg
cmlnaHRNYXJnaW5fezc0fTsKLSAgdW5zaWduZWQgaW50IGluZGVudFNpemVfezN9OwotICBib29s
IGFkZENoaWxkVmFsdWVzX3tmYWxzZX07Ci19OwotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJh
Z21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8qKiBcYnJpZWYgV3JpdGVzIGEgVmFsdWUgaW4g
PGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNPTjwvYT4gZm9ybWF0IGluIGEKLSBodW1h
biBmcmllbmRseSB3YXksCi0gICAgIHRvIGEgc3RyZWFtIHJhdGhlciB0aGFuIHRvIGEgc3RyaW5n
LgotICoKLSAqIFRoZSBydWxlcyBmb3IgbGluZSBicmVhayBhbmQgaW5kZW50IGFyZSBhcyBmb2xs
b3c6Ci0gKiAtIE9iamVjdCB2YWx1ZToKLSAqICAgICAtIGlmIGVtcHR5IHRoZW4gcHJpbnQge30g
d2l0aG91dCBpbmRlbnQgYW5kIGxpbmUgYnJlYWsKLSAqICAgICAtIGlmIG5vdCBlbXB0eSB0aGUg
cHJpbnQgJ3snLCBsaW5lIGJyZWFrICYgaW5kZW50LCBwcmludCBvbmUgdmFsdWUgcGVyCi0gbGlu
ZQotICogICAgICAgYW5kIHRoZW4gdW5pbmRlbnQgYW5kIGxpbmUgYnJlYWsgYW5kIHByaW50ICd9
Jy4KLSAqIC0gQXJyYXkgdmFsdWU6Ci0gKiAgICAgLSBpZiBlbXB0eSB0aGVuIHByaW50IFtdIHdp
dGhvdXQgaW5kZW50IGFuZCBsaW5lIGJyZWFrCi0gKiAgICAgLSBpZiB0aGUgYXJyYXkgY29udGFp
bnMgbm8gb2JqZWN0IHZhbHVlLCBlbXB0eSBhcnJheSBvciBzb21lIG90aGVyIHZhbHVlCi0gdHlw
ZXMsCi0gKiAgICAgICBhbmQgYWxsIHRoZSB2YWx1ZXMgZml0IG9uIG9uZSBsaW5lcywgdGhlbiBw
cmludCB0aGUgYXJyYXkgb24gYSBzaW5nbGUKLSBsaW5lLgotICogICAgIC0gb3RoZXJ3aXNlLCBp
dCB0aGUgdmFsdWVzIGRvIG5vdCBmaXQgb24gb25lIGxpbmUsIG9yIHRoZSBhcnJheSBjb250YWlu
cwotICogICAgICAgb2JqZWN0IG9yIG5vbiBlbXB0eSBhcnJheSwgdGhlbiBwcmludCBvbmUgdmFs
dWUgcGVyIGxpbmUuCi0gKgotICogSWYgdGhlIFZhbHVlIGhhdmUgY29tbWVudHMgdGhlbiB0aGV5
IGFyZSBvdXRwdXRlZCBhY2NvcmRpbmcgdG8gdGhlaXIKLSAjQ29tbWVudFBsYWNlbWVudC4KLSAq
Ci0gKiBcc2EgUmVhZGVyLCBWYWx1ZSwgVmFsdWU6OnNldENvbW1lbnQoKQotICogXGRlcHJlY2F0
ZWQgVXNlIFN0cmVhbVdyaXRlckJ1aWxkZXIuCi0gKi8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQot
I3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ5OTYpIC8v
IERlcml2aW5nIGZyb20gZGVwcmVjYXRlZCBjbGFzcwotI2VuZGlmCi1jbGFzcyBKU09OQ1BQX0RF
UFJFQ0FURUQoIlVzZSBTdHJlYW1Xcml0ZXJCdWlsZGVyIGluc3RlYWQiKSBKU09OX0FQSQotICAg
IFN0eWxlZFN0cmVhbVdyaXRlciB7Ci1wdWJsaWM6Ci0gIC8qKgotICAgKiBccGFyYW0gaW5kZW50
YXRpb24gRWFjaCBsZXZlbCB3aWxsIGJlIGluZGVudGVkIGJ5IHRoaXMgYW1vdW50IGV4dHJhLgot
ICAgKi8KLSAgU3R5bGVkU3RyZWFtV3JpdGVyKFN0cmluZyBpbmRlbnRhdGlvbiA9ICJcdCIpOwot
ICB+U3R5bGVkU3RyZWFtV3JpdGVyKCkgPSBkZWZhdWx0OwotCi1wdWJsaWM6Ci0gIC8qKiBcYnJp
ZWYgU2VyaWFsaXplIGEgVmFsdWUgaW4gPGEgSFJFRj0iaHR0cDovL3d3dy5qc29uLm9yZyI+SlNP
TjwvYT4gZm9ybWF0LgotICAgKiBccGFyYW0gb3V0IFN0cmVhbSB0byB3cml0ZSB0by4gKENhbiBi
ZSBvc3RyaW5nc3RyZWFtLCBlLmcuKQotICAgKiBccGFyYW0gcm9vdCBWYWx1ZSB0byBzZXJpYWxp
emUuCi0gICAqIFxub3RlIFRoZXJlIGlzIG5vIHBvaW50IGluIGRlcml2aW5nIGZyb20gV3JpdGVy
LCBzaW5jZSB3cml0ZSgpIHNob3VsZCBub3QKLSAgICogcmV0dXJuIGEgdmFsdWUuCi0gICAqLwot
ICB2b2lkIHdyaXRlKE9TdHJlYW0mIG91dCwgY29uc3QgVmFsdWUmIHJvb3QpOwotCi1wcml2YXRl
OgotICB2b2lkIHdyaXRlVmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKTsKLSAgdm9pZCB3cml0ZUFy
cmF5VmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKTsKLSAgYm9vbCBpc011bHRpbGluZUFycmF5KGNv
bnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIHZvaWQgcHVzaFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUp
OwotICB2b2lkIHdyaXRlSW5kZW50KCk7Ci0gIHZvaWQgd3JpdGVXaXRoSW5kZW50KGNvbnN0IFN0
cmluZyYgdmFsdWUpOwotICB2b2lkIGluZGVudCgpOwotICB2b2lkIHVuaW5kZW50KCk7Ci0gIHZv
aWQgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY29uc3QgVmFsdWUmIHJvb3QpOwotICB2b2lkIHdy
aXRlQ29tbWVudEFmdGVyVmFsdWVPblNhbWVMaW5lKGNvbnN0IFZhbHVlJiByb290KTsKLSAgc3Rh
dGljIGJvb2wgaGFzQ29tbWVudEZvclZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSk7Ci0gIHN0YXRp
YyBTdHJpbmcgbm9ybWFsaXplRU9MKGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0KLSAgdHlwZWRlZiBz
dGQ6OnZlY3RvcjxTdHJpbmc+IENoaWxkVmFsdWVzOwotCi0gIENoaWxkVmFsdWVzIGNoaWxkVmFs
dWVzXzsKLSAgT1N0cmVhbSogZG9jdW1lbnRfOwotICBTdHJpbmcgaW5kZW50U3RyaW5nXzsKLSAg
dW5zaWduZWQgaW50IHJpZ2h0TWFyZ2luX3s3NH07Ci0gIFN0cmluZyBpbmRlbnRhdGlvbl87Ci0g
IGJvb2wgYWRkQ2hpbGRWYWx1ZXNfIDogMTsKLSAgYm9vbCBpbmRlbnRlZF8gOiAxOwotfTsKLSNp
ZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWYg
ZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLVN0cmluZyBKU09OX0FQSSB2YWx1ZVRvU3RyaW5nKElu
dCB2YWx1ZSk7Ci1TdHJpbmcgSlNPTl9BUEkgdmFsdWVUb1N0cmluZyhVSW50IHZhbHVlKTsKLSNl
bmRpZiAvLyBpZiBkZWZpbmVkKEpTT05fSEFTX0lOVDY0KQotU3RyaW5nIEpTT05fQVBJIHZhbHVl
VG9TdHJpbmcoTGFyZ2VzdEludCB2YWx1ZSk7Ci1TdHJpbmcgSlNPTl9BUEkgdmFsdWVUb1N0cmlu
ZyhMYXJnZXN0VUludCB2YWx1ZSk7Ci1TdHJpbmcgSlNPTl9BUEkKLXZhbHVlVG9TdHJpbmcoZG91
YmxlIHZhbHVlLAotICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJlY2lzaW9uID0gVmFsdWU6
OmRlZmF1bHRSZWFsUHJlY2lzaW9uLAotICAgICAgICAgICAgICBQcmVjaXNpb25UeXBlIHByZWNp
c2lvblR5cGUgPSBQcmVjaXNpb25UeXBlOjpzaWduaWZpY2FudERpZ2l0cyk7Ci1TdHJpbmcgSlNP
Tl9BUEkgdmFsdWVUb1N0cmluZyhib29sIHZhbHVlKTsKLVN0cmluZyBKU09OX0FQSSB2YWx1ZVRv
UXVvdGVkU3RyaW5nKGNvbnN0IGNoYXIqIHZhbHVlKTsKLQotLy8vIFxicmllZiBPdXRwdXQgdXNp
bmcgdGhlIFN0eWxlZFN0cmVhbVdyaXRlci4KLS8vLyBcc2VlIEpzb246Om9wZXJhdG9yPj4oKQot
SlNPTl9BUEkgT1N0cmVhbSYgb3BlcmF0b3I8PChPU3RyZWFtJiwgY29uc3QgVmFsdWUmIHJvb3Qp
OwotCi19IC8vIG5hbWVzcGFjZSBKc29uCi0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLSNpZiBkZWZp
bmVkKEpTT05DUFBfRElTQUJMRV9ETExfSU5URVJGQUNFX1dBUk5JTkcpCi0jcHJhZ21hIHdhcm5p
bmcocG9wKQotI2VuZGlmIC8vIGlmIGRlZmluZWQoSlNPTkNQUF9ESVNBQkxFX0RMTF9JTlRFUkZB
Q0VfV0FSTklORykKLQotI2VuZGlmIC8vIEpTT05fV1JJVEVSX0hfSU5DTFVERUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvbWFrZXJlbGVhc2UucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL21ha2VyZWxlYXNlLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzcxNmNiYWIzYzMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L21ha2VyZWxlYXNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkwICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0jIERp
c3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2lyZWQg
YW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxlIExJQ0VO
U0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9M
SUNFTlNFCi0KLSIiIlRhZyB0aGUgc2FuZGJveCBmb3IgcmVsZWFzZSwgbWFrZSBzb3VyY2UgYW5k
IGRvYyB0YXJiYWxscy4KLQotUmVxdWlyZXMgUHl0aG9uIDIuNgotCi1FeGFtcGxlIG9mIGludm9j
YXRpb24gKHVzZSB0byB0ZXN0IHRoZSBzY3JpcHQpOgotcHl0aG9uIG1ha2VyZWxlYXNlLnB5IC0t
cGxhdGZvcm09bXN2YzYsbXN2YzcxLG1zdmM4MCxtc3ZjOTAsbWluZ3cgLXVibGVwIDAuNi4wIDAu
Ny4wLWRldgotCi1XaGVuIHRlc3RpbmcgdGhpcyBzY3JpcHQ6Ci1weXRob24gbWFrZXJlbGVhc2Uu
cHkgLS1mb3JjZSAtLXJldGFnIC0tcGxhdGZvcm09bXN2YzYsbXN2YzcxLG1zdmM4MCxtaW5ndyAt
dWJsZXAgdGVzdC0wLjYuMCB0ZXN0LTAuNi4xLWRldgotCi1FeGFtcGxlIG9mIGludm9jYXRpb24g
d2hlbiBkb2luZyBhIHJlbGVhc2U6Ci1weXRob24gbWFrZXJlbGVhc2UucHkgMC41LjAgMC42LjAt
ZGV2Ci0KLU5vdGU6IFRoaXMgd2FzIGZvciBTdWJ2ZXJzaW9uLiBOb3cgdGhhdCB3ZSBhcmUgaW4g
R2l0SHViLCB3ZSBkbyBub3QKLW5lZWQgdG8gYnVpbGQgdmVyc2lvbmVkIHRhcmJhbGxzIGFueW1v
cmUsIHNvIG1ha2VyZWxlYXNlLnB5IGlzIGRlZnVuY3QuCi0iIiIKLQotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBwcmludF9mdW5jdGlvbgotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzdWJwcm9jZXNz
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgZG94eWJ1aWxkCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0
IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFbGVtZW50VHJlZQotaW1wb3J0IHNodXRpbAotaW1w
b3J0IHVybGxpYjIKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IG9zCi1pbXBvcnQgdGltZQotZnJv
bSBkZXZ0b29scyBpbXBvcnQgYW50Z2xvYiwgZml4ZW9sLCB0YXJiYWxsCi1pbXBvcnQgYW1hbGdh
bWF0ZQotCi1TVk5fUk9PVCA9ICdodHRwczovL2pzb25jcHAuc3ZuLnNvdXJjZWZvcmdlLm5ldC9z
dm5yb290L2pzb25jcHAvJwotU1ZOX1RBR19ST09UID0gU1ZOX1JPT1QgKyAndGFncy9qc29uY3Bw
JwotU0NPTlNfTE9DQUxfVVJMID0gJ2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc2Nv
bnMvZmlsZXMvc2NvbnMtbG9jYWwvMS4yLjAvc2NvbnMtbG9jYWwtMS4yLjAudGFyLmd6L2Rvd25s
b2FkJwotU09VUkNFRk9SR0VfUFJPSkVDVCA9ICdqc29uY3BwJwotCi1kZWYgc2V0X3ZlcnNpb24o
dmVyc2lvbik6Ci0gICAgd2l0aCBvcGVuKCd2ZXJzaW9uJywnd2InKSBhcyBmOgotICAgICAgICBm
LndyaXRlKHZlcnNpb24uc3RyaXAoKSkKLQotZGVmIHJtZGlyX2lmX2V4aXN0KGRpcl9wYXRoKToK
LSAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcl9wYXRoKToKLSAgICAgICAgc2h1dGlsLnJtdHJlZShk
aXJfcGF0aCkKLQotY2xhc3MgU1ZORXJyb3IoRXhjZXB0aW9uKToKLSAgICBwYXNzCi0KLWRlZiBz
dm5fY29tbWFuZChjb21tYW5kLCAqYXJncyk6Ci0gICAgY21kID0gWydzdm4nLCAnLS1ub24taW50
ZXJhY3RpdmUnLCBjb21tYW5kXSArIGxpc3QoYXJncykKLSAgICBwcmludCgnUnVubmluZzonLCAn
ICcuam9pbihjbWQpKQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAg
IHN0ZG91dCA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKVswXQotICAgIGlmIHByb2Nlc3MucmV0dXJu
Y29kZToKLSAgICAgICAgZXJyb3IgPSBTVk5FcnJvcignU1ZOIGNvbW1hbmQgZmFpbGVkOlxuJyAr
IHN0ZG91dCkKLSAgICAgICAgZXJyb3IucmV0dXJuY29kZSA9IHByb2Nlc3MucmV0dXJuY29kZQot
ICAgICAgICByYWlzZSBlcnJvcgotICAgIHJldHVybiBzdGRvdXQKLQotZGVmIGNoZWNrX25vX3Bl
bmRpbmdfY29tbWl0KCk6Ci0gICAgIiIiQ2hlY2tzIHRoYXQgdGhlcmUgaXMgbm8gcGVuZGluZyBj
b21taXQgaW4gdGhlIHNhbmRib3guIiIiCi0gICAgc3Rkb3V0ID0gc3ZuX2NvbW1hbmQoJ3N0YXR1
cycsICctLXhtbCcpCi0gICAgZXRyZWUgPSBFbGVtZW50VHJlZS5mcm9tc3RyaW5nKHN0ZG91dCkK
LSAgICBtc2cgPSBbXQotICAgIGZvciBlbnRyeSBpbiBldHJlZS5nZXRpdGVyYXRvcignZW50cnkn
KToKLSAgICAgICAgcGF0aCA9IGVudHJ5LmdldCgncGF0aCcpCi0gICAgICAgIHN0YXR1cyA9IGVu
dHJ5LmZpbmQoJ3djLXN0YXR1cycpLmdldCgnaXRlbScpCi0gICAgICAgIGlmIHN0YXR1cyAhPSAn
dW52ZXJzaW9uZWQnIGFuZCBwYXRoICE9ICd2ZXJzaW9uJzoKLSAgICAgICAgICAgIG1zZy5hcHBl
bmQoJ0ZpbGUgIiVzIiBoYXMgcGVuZGluZyBjaGFuZ2UgKHN0YXR1cz0iJXMiKScgJSAocGF0aCwg
c3RhdHVzKSkKLSAgICBpZiBtc2c6Ci0gICAgICAgIG1zZy5pbnNlcnQoMCwgJ1BlbmRpbmcgY2hh
bmdlIHRvIGNvbW1pdCBmb3VuZCBpbiBzYW5kYm94LiBDb21taXQgdGhlbSBmaXJzdCEnKQotICAg
IHJldHVybiAnXG4nLmpvaW4obXNnKQotCi1kZWYgc3ZuX2pvaW5fdXJsKGJhc2VfdXJsLCBzdWZm
aXgpOgotICAgIGlmIG5vdCBiYXNlX3VybC5lbmRzd2l0aCgnLycpOgotICAgICAgICBiYXNlX3Vy
bCArPSAnLycKLSAgICBpZiBzdWZmaXguc3RhcnRzd2l0aCgnLycpOgotICAgICAgICBzdWZmaXgg
PSBzdWZmaXhbMTpdCi0gICAgcmV0dXJuIGJhc2VfdXJsICsgc3VmZml4Ci0KLWRlZiBzdm5fY2hl
Y2tfaWZfdGFnX2V4aXN0KHRhZ191cmwpOgotICAgICIiIkNoZWNrcyBpZiBhIHRhZyBleGlzdC4K
LSAgICBSZXR1cm5zOiBUcnVlIGlmIHRoZSB0YWcgZXhpc3QsIEZhbHNlIG90aGVyd2lzZS4KLSAg
ICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGxpc3Rfc3Rkb3V0ID0gc3ZuX2NvbW1hbmQoJ2xpc3Qn
LCB0YWdfdXJsKQotICAgIGV4Y2VwdCBTVk5FcnJvciBhcyBlOgotICAgICAgICBpZiBlLnJldHVy
bmNvZGUgIT0gMSBvciBub3Qgc3RyKGUpLmZpbmQoJ3RhZ191cmwnKToKLSAgICAgICAgICAgIHJh
aXNlIGUKLSAgICAgICAgIyBvdGhlcndpc2UgaWdub3JlIGVycm9yLCBtZWFuaW5nIHRhZyBkb2Vz
IG5vdCBleGlzdAotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi1kZWYg
c3ZuX2NvbW1pdChtZXNzYWdlKToKLSAgICAiIiJDb21taXQgdGhlIHNhbmRib3gsIHByb3ZpZGlu
ZyB0aGUgc3BlY2lmaWVkIGNvbW1lbnQuCi0gICAgIiIiCi0gICAgc3ZuX2NvbW1hbmQoJ2NpJywg
Jy1tJywgbWVzc2FnZSkKLQotZGVmIHN2bl90YWdfc2FuZGJveCh0YWdfdXJsLCBtZXNzYWdlKToK
LSAgICAiIiJNYWtlcyBhIHRhZyBiYXNlZCBvbiB0aGUgc2FuZGJveCByZXZpc2lvbnMuCi0gICAg
IiIiCi0gICAgc3ZuX2NvbW1hbmQoJ2NvcHknLCAnLW0nLCBtZXNzYWdlLCAnLicsIHRhZ191cmwp
Ci0KLWRlZiBzdm5fcmVtb3ZlX3RhZyh0YWdfdXJsLCBtZXNzYWdlKToKLSAgICAiIiJSZW1vdmVz
IGFuIGV4aXN0aW5nIHRhZy4KLSAgICAiIiIKLSAgICBzdm5fY29tbWFuZCgnZGVsZXRlJywgJy1t
JywgbWVzc2FnZSwgdGFnX3VybCkKLQotZGVmIHN2bl9leHBvcnQodGFnX3VybCwgZXhwb3J0X2Rp
cik6Ci0gICAgIiIiRXhwb3J0cyB0aGUgdGFnX3VybCByZXZpc2lvbiB0byBleHBvcnRfZGlyLgot
ICAgICAgIFRhcmdldCBkaXJlY3RvcnksIGluY2x1ZGluZyBpdHMgcGFyZW50IGlzIGNyZWF0ZWQg
aWYgaXQgZG9lcyBub3QgZXhpc3QuCi0gICAgICAgSWYgdGhlIGRpcmVjdG9yeSBleHBvcnRfZGly
IGV4aXN0LCBpdCBpcyBkZWxldGVkIGJlZm9yZSBleHBvcnQgcHJvY2VlZC4KLSAgICAiIiIKLSAg
ICBybWRpcl9pZl9leGlzdChleHBvcnRfZGlyKQotICAgIHN2bl9jb21tYW5kKCdleHBvcnQnLCB0
YWdfdXJsLCBleHBvcnRfZGlyKQotCi1kZWYgZml4X3NvdXJjZXNfZW9sKGRpc3RfZGlyKToKLSAg
ICAiIiJTZXQgZmlsZSBFT0wgZm9yIHRhcmJhbGwgZGlzdHJpYnV0aW9uLgotICAgICIiIgotICAg
IHByaW50KCdQcmVwYXJpbmcgZXhwb3J0ZWQgc291cmNlIGZpbGUgRU9MIGZvciBkaXN0cmlidXRp
b24uLi4nKQotICAgIHBydW5lX2RpcnMgPSBhbnRnbG9iLnBydW5lX2RpcnMgKyAnc2NvbnMtbG9j
YWwqIC4vYnVpbGQqIC4vbGlicyAuL2Rpc3QnCi0gICAgd2luX3NvdXJjZXMgPSBhbnRnbG9iLmds
b2IoZGlzdF9kaXIsIAotICAgICAgICBpbmNsdWRlcyA9ICcqKi8qLnNsbiAqKi8qLnZjcHJvaics
Ci0gICAgICAgIHBydW5lX2RpcnMgPSBwcnVuZV9kaXJzKQotICAgIHVuaXhfc291cmNlcyA9IGFu
dGdsb2IuZ2xvYihkaXN0X2RpciwKLSAgICAgICAgaW5jbHVkZXMgPSAnJycqKi8qLmggKiovKi5j
cHAgKiovKi5pbmwgKiovKi50eHQgKiovKi5kb3ggKiovKi5weSAqKi8qLmh0bWwgKiovKi5pbgot
ICAgICAgICBzY29uc2NyaXB0ICouanNvbiAqLmV4cGVjdGVkIEFVVEhPUlMgTElDRU5TRScnJywK
LSAgICAgICAgZXhjbHVkZXMgPSBhbnRnbG9iLmRlZmF1bHRfZXhjbHVkZXMgKyAnc2NvbnMucHkg
c2NvbnNpZ24ucHkgc2NvbnMtKicsCi0gICAgICAgIHBydW5lX2RpcnMgPSBwcnVuZV9kaXJzKQot
ICAgIGZvciBwYXRoIGluIHdpbl9zb3VyY2VzOgotICAgICAgICBmaXhlb2wuZml4X3NvdXJjZV9l
b2wocGF0aCwgaXNfZHJ5X3J1biA9IEZhbHNlLCB2ZXJib3NlID0gVHJ1ZSwgZW9sID0gJ1xyXG4n
KQotICAgIGZvciBwYXRoIGluIHVuaXhfc291cmNlczoKLSAgICAgICAgZml4ZW9sLmZpeF9zb3Vy
Y2VfZW9sKHBhdGgsIGlzX2RyeV9ydW4gPSBGYWxzZSwgdmVyYm9zZSA9IFRydWUsIGVvbCA9ICdc
bicpCi0KLWRlZiBkb3dubG9hZCh1cmwsIHRhcmdldF9wYXRoKToKLSAgICAiIiJEb3dubG9hZCBm
aWxlIHJlcHJlc2VudGVkIGJ5IHVybCB0byB0YXJnZXRfcGF0aC4KLSAgICAiIiIKLSAgICBmID0g
dXJsbGliMi51cmxvcGVuKHVybCkKLSAgICB0cnk6Ci0gICAgICAgIGRhdGEgPSBmLnJlYWQoKQot
ICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQotICAgIGZvdXQgPSBvcGVuKHRhcmdldF9w
YXRoLCAnd2InKQotICAgIHRyeToKLSAgICAgICAgZm91dC53cml0ZShkYXRhKQotICAgIGZpbmFs
bHk6Ci0gICAgICAgIGZvdXQuY2xvc2UoKQotCi1kZWYgY2hlY2tfY29tcGlsZShkaXN0Y2hlY2tf
dG9wX2RpciwgcGxhdGZvcm0pOgotICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJ3Njb25zLnB5
JywgJ3BsYXRmb3JtPSVzJyAlIHBsYXRmb3JtLCAnY2hlY2snXQotICAgIHByaW50KCdSdW5uaW5n
OicsICcgJy5qb2luKGNtZCkpCi0gICAgbG9nX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlzdGNoZWNr
X3RvcF9kaXIsICdidWlsZC0lcy5sb2cnICUgcGxhdGZvcm0pCi0gICAgZmxvZyA9IG9wZW4obG9n
X3BhdGgsICd3YicpCi0gICAgdHJ5OgotICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Bl
bihjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZmxvZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1kaXN0Y2hlY2tf
dG9wX2RpcikKLSAgICAgICAgc3Rkb3V0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdCi0gICAg
ICAgIHN0YXR1cyA9IChwcm9jZXNzLnJldHVybmNvZGUgPT0gMCkKLSAgICBmaW5hbGx5OgotICAg
ICAgICBmbG9nLmNsb3NlKCkKLSAgICByZXR1cm4gKHN0YXR1cywgbG9nX3BhdGgpCi0KLWRlZiB3
cml0ZV90ZW1wZmlsZShjb250ZW50LCAqKmt3YXJncyk6Ci0gICAgZmQsIHBhdGggPSB0ZW1wZmls
ZS5ta3N0ZW1wKCoqa3dhcmdzKQotICAgIGYgPSBvcy5mZG9wZW4oZmQsICd3dCcpCi0gICAgdHJ5
OgotICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgZmluYWxseToKLSAgICAgICAgZi5jbG9z
ZSgpCi0gICAgcmV0dXJuIHBhdGgKLQotY2xhc3MgU0ZUUEVycm9yKEV4Y2VwdGlvbik6Ci0gICAg
cGFzcwotCi1kZWYgcnVuX3NmdHBfYmF0Y2godXNlcmhvc3QsIHNmdHAsIGJhdGNoLCByZXRyeT0w
KToKLSAgICBwYXRoID0gd3JpdGVfdGVtcGZpbGUoYmF0Y2gsIHN1ZmZpeD0nLnNmdHAnLCB0ZXh0
PVRydWUpCi0gICAgIyBwc2Z0cCAtYWdlbnQgLUMgYmxlcCxqc29uY3BwQHdlYi5zb3VyY2Vmb3Jn
ZS5uZXQgLWJhdGNoIC1iIGJhdGNoLnNmdHAgLWJjCi0gICAgY21kID0gW3NmdHAsICctYWdlbnQn
LCAnLUMnLCAnLWJhdGNoJywgJy1iJywgcGF0aCwgJy1iYycsIHVzZXJob3N0XQotICAgIGVycm9y
ID0gTm9uZQotICAgIGZvciByZXRyeV9pbmRleCBpbiByYW5nZSgwLCBtYXgoMSxyZXRyeSkpOgot
ICAgICAgICBoZWFkaW5nID0gcmV0cnlfaW5kZXggPT0gMCBhbmQgJ1J1bm5pbmc6JyBvciAnUmV0
cnlpbmc6JwotICAgICAgICBwcmludChoZWFkaW5nLCAnICcuam9pbihjbWQpKQotICAgICAgICBw
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0
ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc3Rkb3V0ID0gcHJvY2Vzcy5jb21tdW5p
Y2F0ZSgpWzBdCi0gICAgICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICAg
ICAgZXJyb3IgPSBTRlRQRXJyb3IoJ1NGVFAgYmF0Y2ggZmFpbGVkOlxuJyArIHN0ZG91dCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgZXJyb3I6Ci0gICAgICAgIHJh
aXNlIGVycm9yCi0gICAgcmV0dXJuIHN0ZG91dAotCi1kZWYgc291cmNlZm9yZ2Vfd2ViX3N5bmNo
cm8oc291cmNlZm9yZ2VfcHJvamVjdCwgZG9jX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlcj1Ob25lLCBzZnRwPSdzZnRwJyk6Ci0gICAgIiIiTm90ZXM6IGRvZXMgbm90IHN5
bmNocm9uaXplIHN1Yi1kaXJlY3Rvcnkgb2YgZG9jLWRpci4KLSAgICAiIiIKLSAgICB1c2VyaG9z
dCA9ICclcywlc0B3ZWIuc291cmNlZm9yZ2UubmV0JyAlICh1c2VyLCBzb3VyY2Vmb3JnZV9wcm9q
ZWN0KQotICAgIHN0ZG91dCA9IHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAiIiIKLWNk
IGh0ZG9jcwotZGlyCi1leGl0Ci0iIiIpCi0gICAgZXhpc3RpbmdfcGF0aHMgPSBzZXQoKQotICAg
IGNvbGxlY3QgPSAwCi0gICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0KCdcbicpOgotICAgICAg
ICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBjb2xsZWN0IGFuZCBsaW5lLmVu
ZHN3aXRoKCc+IGRpcicpOgotICAgICAgICAgICAgY29sbGVjdCA9IFRydWUKLSAgICAgICAgZWxp
ZiBjb2xsZWN0IGFuZCBsaW5lLmVuZHN3aXRoKCc+IGV4aXQnKToKLSAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgIGVsaWYgY29sbGVjdCA9PSAxOgotICAgICAgICAgICAgY29sbGVjdCA9IDIKLSAg
ICAgICAgZWxpZiBjb2xsZWN0ID09IDI6Ci0gICAgICAgICAgICBwYXRoID0gbGluZS5zdHJpcCgp
LnNwbGl0KClbLTE6XQotICAgICAgICAgICAgaWYgcGF0aCBhbmQgcGF0aFswXSBub3QgaW4gKCcu
JywgJy4uJyk6Ci0gICAgICAgICAgICAgICAgZXhpc3RpbmdfcGF0aHMuYWRkKHBhdGhbMF0pCi0g
ICAgdXBsb2FkX3BhdGhzID0gc2V0KFtvcy5wYXRoLmJhc2VuYW1lKHApIGZvciBwIGluIGFudGds
b2IuZ2xvYihkb2NfZGlyKV0pCi0gICAgcGF0aHNfdG9fcmVtb3ZlID0gZXhpc3RpbmdfcGF0aHMg
LSB1cGxvYWRfcGF0aHMKLSAgICBpZiBwYXRoc190b19yZW1vdmU6Ci0gICAgICAgIHByaW50KCdS
ZW1vdmluZyB0aGUgZm9sbG93aW5nIGZpbGUgZnJvbSB3ZWI6JykKLSAgICAgICAgcHJpbnQoJ1xu
Jy5qb2luKHBhdGhzX3RvX3JlbW92ZSkpCi0gICAgICAgIHN0ZG91dCA9IHJ1bl9zZnRwX2JhdGNo
KHVzZXJob3N0LCBzZnRwLCAiIiJjZCBodGRvY3MKLXJtICVzCi1leGl0IiIiICUgJyAnLmpvaW4o
cGF0aHNfdG9fcmVtb3ZlKSkKLSAgICBwcmludCgnVXBsb2FkaW5nICVkIGZpbGVzOicgJSBsZW4o
dXBsb2FkX3BhdGhzKSkKLSAgICBiYXRjaF9zaXplID0gMTAKLSAgICB1cGxvYWRfcGF0aHMgPSBs
aXN0KHVwbG9hZF9wYXRocykKLSAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICBmb3Ig
aW5kZXggaW4gcmFuZ2UoMCxsZW4odXBsb2FkX3BhdGhzKSxiYXRjaF9zaXplKToKLSAgICAgICAg
cGF0aHMgPSB1cGxvYWRfcGF0aHNbaW5kZXg6aW5kZXgrYmF0Y2hfc2l6ZV0KLSAgICAgICAgZmls
ZV9wZXJfc2VjID0gKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgLyAoaW5kZXgrMSkKLSAgICAg
ICAgcmVtYWluaW5nX2ZpbGVzID0gbGVuKHVwbG9hZF9wYXRocykgLSBpbmRleAotICAgICAgICBy
ZW1haW5pbmdfc2VjID0gZmlsZV9wZXJfc2VjICogcmVtYWluaW5nX2ZpbGVzCi0gICAgICAgIHBy
aW50KCclZC8lZCwgRVRBPSUuMWZzJyAlIChpbmRleCsxLCBsZW4odXBsb2FkX3BhdGhzKSwgcmVt
YWluaW5nX3NlYykpCi0gICAgICAgIHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAiIiJj
ZCBodGRvY3MKLWxjZCAlcwotbXB1dCAlcwotZXhpdCIiIiAlIChkb2NfZGlyLCAnICcuam9pbihw
YXRocykpLCByZXRyeT0zKQotCi1kZWYgc291cmNlZm9yZ2VfcmVsZWFzZV90YXJiYWxsKHNvdXJj
ZWZvcmdlX3Byb2plY3QsIHBhdGhzLCB1c2VyPU5vbmUsIHNmdHA9J3NmdHAnKToKLSAgICB1c2Vy
aG9zdCA9ICclcywlc0BmcnMuc291cmNlZm9yZ2UubmV0JyAlICh1c2VyLCBzb3VyY2Vmb3JnZV9w
cm9qZWN0KQotICAgIHJ1bl9zZnRwX2JhdGNoKHVzZXJob3N0LCBzZnRwLCAiIiIKLW1wdXQgJXMK
LWV4aXQKLSIiIiAlICgnICcuam9pbihwYXRocyksKSkKLQotCi1kZWYgbWFpbigpOgotICAgIHVz
YWdlID0gIiIiJXByb2cgcmVsZWFzZV92ZXJzaW9uIG5leHRfZGV2X3ZlcnNpb24KLVVwZGF0ZSAn
dmVyc2lvbicgZmlsZSB0byByZWxlYXNlX3ZlcnNpb24gYW5kIGNvbW1pdC4KLUdlbmVyYXRlcyB0
aGUgZG9jdW1lbnQgdGFyYmFsbC4KLVRhZ3MgdGhlIHNhbmRib3ggcmV2aXNpb24gd2l0aCByZWxl
YXNlX3ZlcnNpb24uCi1VcGRhdGUgJ3ZlcnNpb24nIGZpbGUgdG8gbmV4dF9kZXZfdmVyc2lvbiBh
bmQgY29tbWl0LgotCi1QZXJmb3JtcyBhbiBzdm4gZXhwb3J0IG9mIHRhZyByZWxlYXNlIHZlcnNp
b24sIGFuZCBidWlsZCBhIHNvdXJjZSB0YXJiYWxsLiAgICAKLQotTXVzdCBiZSBzdGFydGVkIGlu
IHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkuCi0KLVdhcm5pbmc6IC0tZm9yY2Ugc2hvdWxkIG9u
bHkgYmUgdXNlZCB3aGVuIGRldmVsb3BpbmcvdGVzdGluZyB0aGUgcmVsZWFzZSBzY3JpcHQuCi0i
IiIKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJzZXIgPSBP
cHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCi0gICAgcGFyc2VyLmFsbG93X2ludGVyc3BlcnNlZF9h
cmdzID0gRmFsc2UKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kb3QnLCBkZXN0PSJkb3RfcGF0
aCIsIGFjdGlvbj0nc3RvcmUnLCBkZWZhdWx0PWRveHlidWlsZC5maW5kX3Byb2dyYW0oJ2RvdCcp
LAotICAgICAgICBoZWxwPSIiIlBhdGggdG8gR3JhcGhWaXogZG90IHRvb2wuIE11c3QgYmUgZnVs
bCBxdWFsaWZpZWQgcGF0aC4gW0RlZmF1bHQ6ICVkZWZhdWx0XSIiIikKLSAgICBwYXJzZXIuYWRk
X29wdGlvbignLS1kb3h5Z2VuJywgZGVzdD0iZG94eWdlbl9wYXRoIiwgYWN0aW9uPSdzdG9yZScs
IGRlZmF1bHQ9ZG94eWJ1aWxkLmZpbmRfcHJvZ3JhbSgnZG94eWdlbicpLAotICAgICAgICBoZWxw
PSIiIlBhdGggdG8gRG94eWdlbiB0b29sLiBbRGVmYXVsdDogJWRlZmF1bHRdIiIiKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLWZvcmNlJywgZGVzdD0iaWdub3JlX3BlbmRpbmdfY29tbWl0Iiwg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJJZ25v
cmUgcGVuZGluZyBjb21taXQuIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tcmV0YWcnLCBkZXN0PSJyZXRhZ19yZWxlYXNlIiwgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iIiJPdmVyd3JpdGUgcmVsZWFzZSBl
eGlzdGluZyB0YWcgaWYgaXQgZXhpc3QuIFtEZWZhdWx0OiAlZGVmYXVsdF0iIiIpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcGxhdGZvcm1zJywgZGVzdD0icGxhdGZvcm1zIiwgYWN0
aW9uPSdzdG9yZScsIGRlZmF1bHQ9JycsCi0gICAgICAgIGhlbHA9IiIiQ29tbWEgc2VwYXJhdGVk
IGxpc3Qgb2YgcGxhdGZvcm0gcGFzc2VkIHRvIHNjb25zIGZvciBidWlsZCBjaGVjay4iIiIpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbm8tdGVzdCcsIGRlc3Q9Im5vX3Rlc3QiLCBhY3Rpb249
J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIiIlNraXBzIGJ1aWxk
IGNoZWNrLiIiIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1uby13ZWInLCBkZXN0PSJub193
ZWIiLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSIi
IkRvIG5vdCB1cGRhdGUgd2ViIHNpdGUuIiIiKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdScs
ICctLXVwbG9hZC11c2VyJywgZGVzdD0idXNlciIsIGFjdGlvbj0nc3RvcmUnLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IiIiU291cmNlZm9yZ2UgdXNlciBmb3IgU0ZUUCBkb2N1bWVudGF0
aW9uIHVwbG9hZC4iIiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc2Z0cCcsIGRlc3Q9J3Nm
dHAnLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD1kb3h5YnVpbGQuZmluZF9wcm9ncmFtKCdwc2Z0
cCcsICdzZnRwJyksCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0iIiJQYXRoIG9mIHRoZSBT
RlRQIGNvbXBhdGlibGUgYmluYXJ5IHVzZWQgdG8gdXBsb2FkIHRoZSBkb2N1bWVudGF0aW9uLiIi
IikKLSAgICBwYXJzZXIuZW5hYmxlX2ludGVyc3BlcnNlZF9hcmdzKCkKLSAgICBvcHRpb25zLCBh
cmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDI6Ci0gICAg
ICAgIHBhcnNlci5lcnJvcigncmVsZWFzZV92ZXJzaW9uIG1pc3Npbmcgb24gY29tbWFuZC1saW5l
LicpCi0gICAgcmVsZWFzZV92ZXJzaW9uID0gYXJnc1swXQotICAgIG5leHRfdmVyc2lvbiA9IGFy
Z3NbMV0KLQotICAgIGlmIG5vdCBvcHRpb25zLnBsYXRmb3JtcyBhbmQgbm90IG9wdGlvbnMubm9f
dGVzdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCdZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciAtLXBs
YXRmb3JtIG9yIC0tbm8tdGVzdCBvcHRpb24uJykKLQotICAgIGlmIG9wdGlvbnMuaWdub3JlX3Bl
bmRpbmdfY29tbWl0OgotICAgICAgICBtc2cgPSAnJwotICAgIGVsc2U6Ci0gICAgICAgIG1zZyA9
IGNoZWNrX25vX3BlbmRpbmdfY29tbWl0KCkKLSAgICBpZiBub3QgbXNnOgotICAgICAgICBwcmlu
dCgnU2V0dGluZyB2ZXJzaW9uIHRvJywgcmVsZWFzZV92ZXJzaW9uKQotICAgICAgICBzZXRfdmVy
c2lvbihyZWxlYXNlX3ZlcnNpb24pCi0gICAgICAgIHN2bl9jb21taXQoJ1JlbGVhc2UgJyArIHJl
bGVhc2VfdmVyc2lvbikKLSAgICAgICAgdGFnX3VybCA9IHN2bl9qb2luX3VybChTVk5fVEFHX1JP
T1QsIHJlbGVhc2VfdmVyc2lvbikKLSAgICAgICAgaWYgc3ZuX2NoZWNrX2lmX3RhZ19leGlzdCh0
YWdfdXJsKToKLSAgICAgICAgICAgIGlmIG9wdGlvbnMucmV0YWdfcmVsZWFzZToKLSAgICAgICAg
ICAgICAgICBzdm5fcmVtb3ZlX3RhZyh0YWdfdXJsLCAnT3ZlcndyaXRpbmcgcHJldmlvdXMgdGFn
JykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0Fib3J0aW5nLCB0
YWcgJXMgYWxyZWFkeSBleGlzdC4gVXNlIC0tcmV0YWcgdG8gb3ZlcndyaXRlIGl0IScgJSB0YWdf
dXJsKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHN2bl90YWdfc2FuZGJv
eCh0YWdfdXJsLCAnUmVsZWFzZSAnICsgcmVsZWFzZV92ZXJzaW9uKQotCi0gICAgICAgIHByaW50
KCdHZW5lcmF0ZWQgZG94eWdlbiBkb2N1bWVudC4uLicpCi0jIyAgICAgICAgZG9jX2Rpcm5hbWUg
PSByJ2pzb25jcHAtYXBpLWh0bWwtMC41LjAnCi0jIyAgICAgICAgZG9jX3RhcmJhbGxfcGF0aCA9
IHInZTpccHJnXHZjXExpYlxqc29uY3BwLXRydW5rXGRpc3RcanNvbmNwcC1hcGktaHRtbC0wLjUu
MC50YXIuZ3onCi0gICAgICAgIGRvY190YXJiYWxsX3BhdGgsIGRvY19kaXJuYW1lID0gZG94eWJ1
aWxkLmJ1aWxkX2RvYyhvcHRpb25zLCBtYWtlX3JlbGVhc2U9VHJ1ZSkKLSAgICAgICAgZG9jX2Rp
c3RjaGVja19kaXIgPSAnZGlzdC9kb2NjaGVjaycKLSAgICAgICAgdGFyYmFsbC5kZWNvbXByZXNz
KGRvY190YXJiYWxsX3BhdGgsIGRvY19kaXN0Y2hlY2tfZGlyKQotICAgICAgICBkb2NfZGlzdGNo
ZWNrX3RvcF9kaXIgPSBvcy5wYXRoLmpvaW4oZG9jX2Rpc3RjaGVja19kaXIsIGRvY19kaXJuYW1l
KQotICAgICAgICAKLSAgICAgICAgZXhwb3J0X2RpciA9ICdkaXN0L2V4cG9ydCcKLSAgICAgICAg
c3ZuX2V4cG9ydCh0YWdfdXJsLCBleHBvcnRfZGlyKQotICAgICAgICBmaXhfc291cmNlc19lb2wo
ZXhwb3J0X2RpcikKLSAgICAgICAgCi0gICAgICAgIHNvdXJjZV9kaXIgPSAnanNvbmNwcC1zcmMt
JyArIHJlbGVhc2VfdmVyc2lvbgotICAgICAgICBzb3VyY2VfdGFyYmFsbF9wYXRoID0gJ2Rpc3Qv
JXMudGFyLmd6JyAlIHNvdXJjZV9kaXIKLSAgICAgICAgcHJpbnQoJ0dlbmVyYXRpbmcgc291cmNl
IHRhcmJhbGwgdG8nLCBzb3VyY2VfdGFyYmFsbF9wYXRoKQotICAgICAgICB0YXJiYWxsLm1ha2Vf
dGFyYmFsbChzb3VyY2VfdGFyYmFsbF9wYXRoLCBbZXhwb3J0X2Rpcl0sIGV4cG9ydF9kaXIsIHBy
ZWZpeF9kaXI9c291cmNlX2RpcikKLQotICAgICAgICBhbWFsZ2FtYXRpb25fdGFyYmFsbF9wYXRo
ID0gJ2Rpc3QvJXMtYW1hbGdhbWF0aW9uLnRhci5neicgJSBzb3VyY2VfZGlyCi0gICAgICAgIHBy
aW50KCdHZW5lcmF0aW5nIGFtYWxnYW1hdGlvbiBzb3VyY2UgdGFyYmFsbCB0bycsIGFtYWxnYW1h
dGlvbl90YXJiYWxsX3BhdGgpCi0gICAgICAgIGFtYWxnYW1hdGlvbl9kaXIgPSAnZGlzdC9hbWFs
Z2FtYXRpb24nCi0gICAgICAgIGFtYWxnYW1hdGUuYW1hbGdhbWF0ZV9zb3VyY2UoZXhwb3J0X2Rp
ciwgJyVzL2pzb25jcHAuY3BwJyAlIGFtYWxnYW1hdGlvbl9kaXIsICdqc29uL2pzb24uaCcpCi0g
ICAgICAgIGFtYWxnYW1hdGlvbl9zb3VyY2VfZGlyID0gJ2pzb25jcHAtc3JjLWFtYWxnYW1hdGlv
bicgKyByZWxlYXNlX3ZlcnNpb24KLSAgICAgICAgdGFyYmFsbC5tYWtlX3RhcmJhbGwoYW1hbGdh
bWF0aW9uX3RhcmJhbGxfcGF0aCwgW2FtYWxnYW1hdGlvbl9kaXJdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW1hbGdhbWF0aW9uX2RpciwgcHJlZml4X2Rpcj1hbWFsZ2FtYXRpb25f
c291cmNlX2RpcikKLQotICAgICAgICAjIERlY29tcHJlc3Mgc291cmNlIHRhcmJhbGwsIGRvd25s
b2FkIGFuZCBpbnN0YWxsIHNjb25zLWxvY2FsCi0gICAgICAgIGRpc3RjaGVja19kaXIgPSAnZGlz
dC9kaXN0Y2hlY2snCi0gICAgICAgIGRpc3RjaGVja190b3BfZGlyID0gZGlzdGNoZWNrX2RpciAr
ICcvJyArIHNvdXJjZV9kaXIKLSAgICAgICAgcHJpbnQoJ0RlY29tcHJlc3Npbmcgc291cmNlIHRh
cmJhbGwgdG8nLCBkaXN0Y2hlY2tfZGlyKQotICAgICAgICBybWRpcl9pZl9leGlzdChkaXN0Y2hl
Y2tfZGlyKQotICAgICAgICB0YXJiYWxsLmRlY29tcHJlc3Moc291cmNlX3RhcmJhbGxfcGF0aCwg
ZGlzdGNoZWNrX2RpcikKLSAgICAgICAgc2NvbnNfbG9jYWxfcGF0aCA9ICdkaXN0L3Njb25zLWxv
Y2FsLnRhci5neicKLSAgICAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHNjb25zLWxvY2FsIHRvJywg
c2NvbnNfbG9jYWxfcGF0aCkKLSAgICAgICAgZG93bmxvYWQoU0NPTlNfTE9DQUxfVVJMLCBzY29u
c19sb2NhbF9wYXRoKQotICAgICAgICBwcmludCgnRGVjb21wcmVzc2luZyBzY29ucy1sb2NhbCB0
bycsIGRpc3RjaGVja190b3BfZGlyKQotICAgICAgICB0YXJiYWxsLmRlY29tcHJlc3Moc2NvbnNf
bG9jYWxfcGF0aCwgZGlzdGNoZWNrX3RvcF9kaXIpCi0KLSAgICAgICAgIyBSdW4gY29tcGlsYXRp
b24KLSAgICAgICAgcHJpbnQoJ0NvbXBpbGluZyBkZWNvbXByZXNzZWQgdGFyYmFsbCcpCi0gICAg
ICAgIGFsbF9idWlsZF9zdGF0dXMgPSBUcnVlCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBvcHRp
b25zLnBsYXRmb3Jtcy5zcGxpdCgnLCcpOgotICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgcGxh
dGZvcm06JywgcGxhdGZvcm0pCi0gICAgICAgICAgICBidWlsZF9zdGF0dXMsIGxvZ19wYXRoID0g
Y2hlY2tfY29tcGlsZShkaXN0Y2hlY2tfdG9wX2RpciwgcGxhdGZvcm0pCi0gICAgICAgICAgICBw
cmludCgnc2VlIGJ1aWxkIGxvZzonLCBsb2dfcGF0aCkKLSAgICAgICAgICAgIHByaW50KGJ1aWxk
X3N0YXR1cyBhbmQgJz0+IG9rJyBvciAnPT4gRkFJTEVEJykKLSAgICAgICAgICAgIGFsbF9idWls
ZF9zdGF0dXMgPSBhbGxfYnVpbGRfc3RhdHVzIGFuZCBidWlsZF9zdGF0dXMKLSAgICAgICAgaWYg
bm90IGJ1aWxkX3N0YXR1czoKLSAgICAgICAgICAgIHByaW50KCdUZXN0aW5nIGZhaWxlZCBvbiBh
dCBsZWFzdCBvbmUgcGxhdGZvcm0sIGFib3J0aW5nLi4uJykKLSAgICAgICAgICAgIHN2bl9yZW1v
dmVfdGFnKHRhZ191cmwsICdSZW1vdmluZyB0YWcgZHVlIHRvIGZhaWxlZCB0ZXN0aW5nJykKLSAg
ICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGlmIG9wdGlvbnMudXNlcjoKLSAgICAgICAg
ICAgIGlmIG5vdCBvcHRpb25zLm5vX3dlYjoKLSAgICAgICAgICAgICAgICBwcmludCgnVXBsb2Fk
aW5nIGRvY3VtZW50YXRpb24gdXNpbmcgdXNlcicsIG9wdGlvbnMudXNlcikKLSAgICAgICAgICAg
ICAgICBzb3VyY2Vmb3JnZV93ZWJfc3luY2hybyhTT1VSQ0VGT1JHRV9QUk9KRUNULCBkb2NfZGlz
dGNoZWNrX3RvcF9kaXIsIHVzZXI9b3B0aW9ucy51c2VyLCBzZnRwPW9wdGlvbnMuc2Z0cCkKLSAg
ICAgICAgICAgICAgICBwcmludCgnQ29tcGxldGVkIGRvY3VtZW50YXRpb24gdXBsb2FkJykKLSAg
ICAgICAgICAgIHByaW50KCdVcGxvYWRpbmcgc291cmNlIGFuZCBkb2N1bWVudGF0aW9uIHRhcmJh
bGxzIGZvciByZWxlYXNlIHVzaW5nIHVzZXInLCBvcHRpb25zLnVzZXIpCi0gICAgICAgICAgICBz
b3VyY2Vmb3JnZV9yZWxlYXNlX3RhcmJhbGwoU09VUkNFRk9SR0VfUFJPSkVDVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvdXJjZV90YXJiYWxsX3BhdGgsIGRv
Y190YXJiYWxsX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VyPW9wdGlvbnMudXNlciwgc2Z0cD1vcHRpb25zLnNmdHApCi0gICAgICAgICAgICBwcmlu
dCgnU291cmNlIGFuZCBkb2MgcmVsZWFzZSB0YXJiYWxscyB1cGxvYWRlZCcpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBwcmludCgnTm8gdXBsb2FkIHVzZXIgc3BlY2lmaWVkLiBXZWIgc2l0
ZSBhbmQgZG93bmxvYWQgdGFyYmFsbCB3ZXJlIG5vdCB1cGxvYWRlZC4nKQotICAgICAgICAgICAg
cHJpbnQoJ1RhcmJhbGwgY2FuIGJlIGZvdW5kIGF0OicsIGRvY190YXJiYWxsX3BhdGgpCi0KLSAg
ICAgICAgIyBTZXQgbmV4dCB2ZXJzaW9uIG51bWJlciBhbmQgY29tbWl0ICAgICAgICAgICAgCi0g
ICAgICAgIHNldF92ZXJzaW9uKG5leHRfdmVyc2lvbikKLSAgICAgICAgc3ZuX2NvbW1pdCgnUmVs
ZWFzZWQgJyArIHJlbGVhc2VfdmVyc2lvbikKLSAgICBlbHNlOgotICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKG1zZyArICdcbicpCi0gCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1h
aW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9tZXNvbi5idWlsZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvbWVzb24uYnVpbGQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZTk0N2M0Y2RmOC4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvbWVzb24uYnVpbGQKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotcHJv
amVjdCgKLSAgJ2pzb25jcHAnLAotICAnY3BwJywKLSAgdmVyc2lvbiA6ICcxLjkuMCcsCi0gIGRl
ZmF1bHRfb3B0aW9ucyA6IFsKLSAgICAnYnVpbGR0eXBlPXJlbGVhc2UnLAotICAgICdjcHBfc3Rk
PWMrKzExJywKLSAgICAnd2FybmluZ19sZXZlbD0xJ10sCi0gIGxpY2Vuc2UgOiAnUHVibGljIERv
bWFpbicsCi0gIG1lc29uX3ZlcnNpb24gOiAnPj0gMC41MC4wJykKLQotanNvbmNwcF92ZXJfYXJy
ID0gbWVzb24ucHJvamVjdF92ZXJzaW9uKCkuc3BsaXQoJy4nKQotanNvbmNwcF9tYWpvcl92ZXJz
aW9uID0ganNvbmNwcF92ZXJfYXJyWzBdCi1qc29uY3BwX21pbm9yX3ZlcnNpb24gPSBqc29uY3Bw
X3Zlcl9hcnJbMV0KLWpzb25jcHBfcGF0Y2hfdmVyc2lvbiA9IGpzb25jcHBfdmVyX2FyclsyXQot
Ci1qc29uY3BwX2NkYXRhID0gY29uZmlndXJhdGlvbl9kYXRhKCkKLWpzb25jcHBfY2RhdGEuc2V0
KCdKU09OQ1BQX1ZFUlNJT04nLCBtZXNvbi5wcm9qZWN0X3ZlcnNpb24oKSkKLWpzb25jcHBfY2Rh
dGEuc2V0KCdKU09OQ1BQX1ZFUlNJT05fTUFKT1InLCBqc29uY3BwX21ham9yX3ZlcnNpb24pCi1q
c29uY3BwX2NkYXRhLnNldCgnSlNPTkNQUF9WRVJTSU9OX01JTk9SJywganNvbmNwcF9taW5vcl92
ZXJzaW9uKQotanNvbmNwcF9jZGF0YS5zZXQoJ0pTT05DUFBfVkVSU0lPTl9QQVRDSCcsIGpzb25j
cHBfcGF0Y2hfdmVyc2lvbikKLWpzb25jcHBfY2RhdGEuc2V0KCdKU09OQ1BQX1VTRV9TRUNVUkVf
TUVNT1JZJywwKQotCi1qc29uY3BwX2dlbl9zb3VyY2VzID0gY29uZmlndXJlX2ZpbGUoCi0gIGlu
cHV0IDogJ3NyYy9saWJfanNvbi92ZXJzaW9uLmguaW4nLAotICBvdXRwdXQgOiAndmVyc2lvbi5o
JywKLSAgY29uZmlndXJhdGlvbiA6IGpzb25jcHBfY2RhdGEsCi0gIGluc3RhbGwgOiB0cnVlLAot
ICBpbnN0YWxsX2RpciA6IGpvaW5fcGF0aHMoZ2V0X29wdGlvbigncHJlZml4JyksIGdldF9vcHRp
b24oJ2luY2x1ZGVkaXInKSwgJ2pzb24nKQotKQotCi1qc29uY3BwX2hlYWRlcnMgPSBbCi0gICdp
bmNsdWRlL2pzb24vYWxsb2NhdG9yLmgnLAotICAnaW5jbHVkZS9qc29uL2Fzc2VydGlvbnMuaCcs
Ci0gICdpbmNsdWRlL2pzb24vYXV0b2xpbmsuaCcsCi0gICdpbmNsdWRlL2pzb24vY29uZmlnLmgn
LAotICAnaW5jbHVkZS9qc29uL2ZlYXR1cmVzLmgnLAotICAnaW5jbHVkZS9qc29uL2ZvcndhcmRz
LmgnLAotICAnaW5jbHVkZS9qc29uL2pzb24uaCcsCi0gICdpbmNsdWRlL2pzb24vcmVhZGVyLmgn
LAotICAnaW5jbHVkZS9qc29uL3ZhbHVlLmgnLAotICAnaW5jbHVkZS9qc29uL3dyaXRlci5oJ10K
LWpzb25jcHBfaW5jbHVkZV9kaXJlY3RvcmllcyA9IGluY2x1ZGVfZGlyZWN0b3JpZXMoJ2luY2x1
ZGUnKQotCi1pbnN0YWxsX2hlYWRlcnMoCi0gIGpzb25jcHBfaGVhZGVycywKLSAgc3ViZGlyIDog
J2pzb24nKQotCi1pZiBnZXRfb3B0aW9uKCdkZWZhdWx0X2xpYnJhcnknKSA9PSAnc2hhcmVkJyBh
bmQgbWVzb24uZ2V0X2NvbXBpbGVyKCdjcHAnKS5nZXRfaWQoKSA9PSAnbXN2YycKLSAgZGxsX2V4
cG9ydF9mbGFnID0gJy1ESlNPTl9ETExfQlVJTEQnCi0gIGRsbF9pbXBvcnRfZmxhZyA9ICctREpT
T05fRExMJwotZWxzZQotICBkbGxfZXhwb3J0X2ZsYWcgPSBbXQotICBkbGxfaW1wb3J0X2ZsYWcg
PSBbXQotZW5kaWYKLQotanNvbmNwcF9saWIgPSBsaWJyYXJ5KAotICAnanNvbmNwcCcsCi0gIFsg
anNvbmNwcF9nZW5fc291cmNlcywKLSAgICBqc29uY3BwX2hlYWRlcnMsCi0gICAgJ3NyYy9saWJf
anNvbi9qc29uX3Rvb2wuaCcsCi0gICAgJ3NyYy9saWJfanNvbi9qc29uX3JlYWRlci5jcHAnLAot
ICAgICdzcmMvbGliX2pzb24vanNvbl92YWx1ZS5jcHAnLAotICAgICdzcmMvbGliX2pzb24vanNv
bl93cml0ZXIuY3BwJ10sCi0gIHNvdmVyc2lvbiA6IDIxLAotICBpbnN0YWxsIDogdHJ1ZSwKLSAg
aW5jbHVkZV9kaXJlY3RvcmllcyA6IGpzb25jcHBfaW5jbHVkZV9kaXJlY3RvcmllcywKLSAgY3Bw
X2FyZ3M6IGRsbF9leHBvcnRfZmxhZykKLQotaW1wb3J0KCdwa2djb25maWcnKS5nZW5lcmF0ZSgK
LSAgbGlicmFyaWVzIDoganNvbmNwcF9saWIsCi0gIHZlcnNpb24gOiBtZXNvbi5wcm9qZWN0X3Zl
cnNpb24oKSwKLSAgbmFtZSA6ICdqc29uY3BwJywKLSAgZmlsZWJhc2UgOiAnanNvbmNwcCcsCi0g
IGRlc2NyaXB0aW9uIDogJ0EgQysrIGxpYnJhcnkgZm9yIGludGVyYWN0aW5nIHdpdGggSlNPTicp
Ci0KLSMgZm9yIGxpYnJhcmllcyBidW5kbGluZyBqc29uY3BwCi1qc29uY3BwX2RlcCA9IGRlY2xh
cmVfZGVwZW5kZW5jeSgKLSAgaW5jbHVkZV9kaXJlY3RvcmllcyA6IGpzb25jcHBfaW5jbHVkZV9k
aXJlY3RvcmllcywKLSAgbGlua193aXRoIDoganNvbmNwcF9saWIsCi0gIHZlcnNpb24gOiBtZXNv
bi5wcm9qZWN0X3ZlcnNpb24oKSwKLSAgc291cmNlcyA6IGpzb25jcHBfZ2VuX3NvdXJjZXMpCi0K
LSMgdGVzdHMKLXB5dGhvbiA9IGltcG9ydCgncHl0aG9uMycpLmZpbmRfcHl0aG9uKCkKLQotanNv
bmNwcF90ZXN0ID0gZXhlY3V0YWJsZSgKLSAgJ2pzb25jcHBfdGVzdCcsCi0gIFsgJ3NyYy90ZXN0
X2xpYl9qc29uL2pzb250ZXN0LmNwcCcsCi0gICAgJ3NyYy90ZXN0X2xpYl9qc29uL2pzb250ZXN0
LmgnLAotICAgICdzcmMvdGVzdF9saWJfanNvbi9tYWluLmNwcCcsCi0gICAgJ3NyYy90ZXN0X2xp
Yl9qc29uL2Z1enouY3BwJ10sCi0gIGluY2x1ZGVfZGlyZWN0b3JpZXMgOiBqc29uY3BwX2luY2x1
ZGVfZGlyZWN0b3JpZXMsCi0gIGxpbmtfd2l0aCA6IGpzb25jcHBfbGliLAotICBpbnN0YWxsIDog
ZmFsc2UsCi0gIGNwcF9hcmdzOiBkbGxfaW1wb3J0X2ZsYWcpCi10ZXN0KAotICAndW5pdHRlc3Rf
anNvbmNwcF90ZXN0JywKLSAganNvbmNwcF90ZXN0KQotCi1qc29udGVzdHJ1bm5lciA9IGV4ZWN1
dGFibGUoCi0gICdqc29udGVzdHJ1bm5lcicsCi0gICdzcmMvanNvbnRlc3RydW5uZXIvbWFpbi5j
cHAnLAotICBpbmNsdWRlX2RpcmVjdG9yaWVzIDoganNvbmNwcF9pbmNsdWRlX2RpcmVjdG9yaWVz
LAotICBsaW5rX3dpdGggOiBqc29uY3BwX2xpYiwKLSAgaW5zdGFsbCA6IGZhbHNlLAotICBjcHBf
YXJnczogZGxsX2ltcG9ydF9mbGFnKQotdGVzdCgKLSAgJ3VuaXR0ZXN0X2pzb250ZXN0cnVubmVy
JywKLSAgcHl0aG9uLAotICBhcmdzIDogWwotICAgICctQicsCi0gICAgam9pbl9wYXRocyhtZXNv
bi5jdXJyZW50X3NvdXJjZV9kaXIoKSwgJ3Rlc3QvcnVuanNvbnRlc3RzLnB5JyksCi0gICAganNv
bnRlc3RydW5uZXIsCi0gICAgam9pbl9wYXRocyhtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwg
J3Rlc3QvZGF0YScpXQotICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3BrZy1jb25maWcvanNvbmNwcC5w
Yy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvcGtnLWNvbmZpZy9qc29uY3BwLnBjLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZWE1MWY1MTI1YTIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3BrZy1jb25m
aWcvanNvbmNwcC5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotbGliZGlyPUBD
TUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAotaW5jbHVkZWRpcj1AQ01BS0VfSU5TVEFMTF9GVUxM
X0lOQ0xVREVESVJACi0KLU5hbWU6IGpzb25jcHAKLURlc2NyaXB0aW9uOiBBIEMrKyBsaWJyYXJ5
IGZvciBpbnRlcmFjdGluZyB3aXRoIEpTT04KLVZlcnNpb246IEBKU09OQ1BQX1ZFUlNJT05ACi1V
Ukw6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAKLUxpYnM6
IC1MJHtsaWJkaXJ9IC1sanNvbmNwcAotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2Uvc3JjL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvQ01ha2VMaXN0cy50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmODJhNzQ2MzMxMi4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2Uvc3JjL0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBA
Ci1hZGRfc3ViZGlyZWN0b3J5KGxpYl9qc29uKQotaWYoSlNPTkNQUF9XSVRIX1RFU1RTKQotICAg
IGFkZF9zdWJkaXJlY3RvcnkoanNvbnRlc3RydW5uZXIpCi0gICAgYWRkX3N1YmRpcmVjdG9yeSh0
ZXN0X2xpYl9qc29uKQotZW5kaWYoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvanNvbnRlc3RydW5u
ZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9qc29udGVzdHJ1bm5lci9DTWFrZUxpc3RzLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIzYTQ0ZTY0YmE1Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9zcmMvanNvbnRlc3RydW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwzNiArMCwwIEBACi1maW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwIDIuNikKLQot
YWRkX2V4ZWN1dGFibGUoanNvbnRlc3RydW5uZXJfZXhlCi0gICAgICAgICAgICAgICBtYWluLmNw
cAotICAgICAgICAgICAgICAgKQotCi1pZihCVUlMRF9TSEFSRURfTElCUykKLSAgICBhZGRfY29t
cGlsZV9kZWZpbml0aW9ucyggSlNPTl9ETEwgKQotZW5kaWYoKQotdGFyZ2V0X2xpbmtfbGlicmFy
aWVzKGpzb250ZXN0cnVubmVyX2V4ZSBqc29uY3BwX2xpYikKLQotc2V0X3RhcmdldF9wcm9wZXJ0
aWVzKGpzb250ZXN0cnVubmVyX2V4ZSBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FIGpzb250ZXN0cnVu
bmVyX2V4ZSkKLQotaWYoUFlUSE9OSU5URVJQX0ZPVU5EKQotICAgICMgUnVuIGVuZCB0byBlbmQg
cGFyc2VyL3dyaXRlciB0ZXN0cwotICAgIHNldChURVNUX0RJUiAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vLi4vLi4vdGVzdCkKLSAgICBzZXQoUlVOSlNPTlRFU1RTX1BBVEggJHtURVNUX0RJ
Un0vcnVuanNvbnRlc3RzLnB5KQotCi0gICAgIyBSdW4gdW5pdCB0ZXN0cyBpbiBwb3N0LWJ1aWxk
Ci0gICAgIyAoZGVmYXVsdCBjbWFrZSB3b3JrZmxvdyBoaWRlcyBhd2F5IHRoZSB0ZXN0IHJlc3Vs
dCBpbnRvIGEgZmlsZSwgcmVzdWx0aW5nIGluIHBvb3IgZGV2IHdvcmtmbG93PyE/KQotICAgIGFk
ZF9jdXN0b21fdGFyZ2V0KGpzb25jcHBfcmVhZGVyd3JpdGVyX3Rlc3RzCi0gICAgICAgICAgICAg
ICAgICAgICAgIiR7UFlUSE9OX0VYRUNVVEFCTEV9IiAtQiAiJHtSVU5KU09OVEVTVFNfUEFUSH0i
ICQ8VEFSR0VUX0ZJTEU6anNvbnRlc3RydW5uZXJfZXhlPiAiJHtURVNUX0RJUn0vZGF0YSIKLSAg
ICAgICAgICAgICAgICAgICAgICBERVBFTkRTIGpzb250ZXN0cnVubmVyX2V4ZSBqc29uY3BwX3Rl
c3QKLSAgICAgICAgICAgICAgICAgICAgICApCi0gICAgYWRkX2N1c3RvbV90YXJnZXQoanNvbmNw
cF9jaGVjayBERVBFTkRTIGpzb25jcHBfcmVhZGVyd3JpdGVyX3Rlc3RzKQotCi0gICAgIyMgQ3Jl
YXRlIHRlc3RzIGZvciBkYXNoYm9hcmQgc3VibWlzc2lvbiwgYWxsb3dzIGVhc3kgcmV2aWV3IG9m
IENJIHJlc3VsdHMgaHR0cHM6Ly9teS5jZGFzaC5vcmcvaW5kZXgucGhwP3Byb2plY3Q9anNvbmNw
cAotICAgIGFkZF90ZXN0KE5BTUUganNvbmNwcF9yZWFkZXJ3cml0ZXIKLSAgICAgICAgICAgICBD
T01NQU5EICIke1BZVEhPTl9FWEVDVVRBQkxFfSIgLUIgIiR7UlVOSlNPTlRFU1RTX1BBVEh9IiAk
PFRBUkdFVF9GSUxFOmpzb250ZXN0cnVubmVyX2V4ZT4gIiR7VEVTVF9ESVJ9L2RhdGEiCi0gICAg
ICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgIiR7VEVTVF9ESVJ9L2RhdGEiCi0gICAgKQotICAg
IGFkZF90ZXN0KE5BTUUganNvbmNwcF9yZWFkZXJ3cml0ZXJfanNvbl9jaGVja2VyCi0gICAgICAg
ICAgICAgQ09NTUFORCAiJHtQWVRIT05fRVhFQ1VUQUJMRX0iIC1CICIke1JVTkpTT05URVNUU19Q
QVRIfSIgLS13aXRoLWpzb24tY2hlY2tlciAgJDxUQVJHRVRfRklMRTpqc29udGVzdHJ1bm5lcl9l
eGU+ICIke1RFU1RfRElSfS9kYXRhIgotICAgICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICIk
e1RFU1RfRElSfS9kYXRhIgotICAgICkKLWVuZGlmKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2pz
b250ZXN0cnVubmVyL21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvanNvbnRlc3RydW5uZXIvbWFpbi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZDQxYWE1ZmQ5OS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2Uvc3JjL2pzb250ZXN0cnVubmVyL21haW4uY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzAwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVwaWxsZXVy
IGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5z
ZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5b3Vy
IGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0
IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZiBkZWZpbmVkKF9f
R05VQ19fKQotI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIEdDQyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZWxpZiBkZWZpbmVkKF9N
U0NfVkVSKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0OTk2KQotI2VuZGlmCi0KLS8qIFRo
aXMgZXhlY3V0YWJsZSBpcyB1c2VkIGZvciB0ZXN0aW5nIHBhcnNlci93cml0ZXIgdXNpbmcgcmVh
bCBKU09OIGZpbGVzLgotICovCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIHNvcnQKLSNpbmNs
dWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8anNvbi9qc29uLmg+Ci0jaW5jbHVkZSA8c3N0cmVhbT4K
LQotc3RydWN0IE9wdGlvbnMgewotICBKc29uOjpTdHJpbmcgcGF0aDsKLSAgSnNvbjo6RmVhdHVy
ZXMgZmVhdHVyZXM7Ci0gIGJvb2wgcGFyc2VPbmx5OwotICB1c2luZyB3cml0ZUZ1bmNUeXBlID0g
SnNvbjo6U3RyaW5nICgqKShKc29uOjpWYWx1ZSBjb25zdCYpOwotICB3cml0ZUZ1bmNUeXBlIHdy
aXRlOwotfTsKLQotc3RhdGljIEpzb246OlN0cmluZyBub3JtYWxpemVGbG9hdGluZ1BvaW50U3Ry
KGRvdWJsZSB2YWx1ZSkgewotICBjaGFyIGJ1ZmZlclszMl07Ci0gIGpzb25jcHBfc25wcmludGYo
YnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUuMTZnIiwgdmFsdWUpOwotICBidWZmZXJbc2l6ZW9m
KGJ1ZmZlcikgLSAxXSA9IDA7Ci0gIEpzb246OlN0cmluZyBzKGJ1ZmZlcik7Ci0gIEpzb246OlN0
cmluZzo6c2l6ZV90eXBlIGluZGV4ID0gcy5maW5kX2xhc3Rfb2YoImVFIik7Ci0gIGlmIChpbmRl
eCAhPSBKc29uOjpTdHJpbmc6Om5wb3MpIHsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBo
YXNTaWduID0KLSAgICAgICAgKHNbaW5kZXggKyAxXSA9PSAnKycgfHwgc1tpbmRleCArIDFdID09
ICctJykgPyAxIDogMDsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBleHBvbmVudFN0YXJ0
SW5kZXggPSBpbmRleCArIDEgKyBoYXNTaWduOwotICAgIEpzb246OlN0cmluZyBub3JtYWxpemVk
ID0gcy5zdWJzdHIoMCwgZXhwb25lbnRTdGFydEluZGV4KTsKLSAgICBKc29uOjpTdHJpbmc6OnNp
emVfdHlwZSBpbmRleERpZ2l0ID0KLSAgICAgICAgcy5maW5kX2ZpcnN0X25vdF9vZignMCcsIGV4
cG9uZW50U3RhcnRJbmRleCk7Ci0gICAgSnNvbjo6U3RyaW5nIGV4cG9uZW50ID0gIjAiOwotICAg
IGlmIChpbmRleERpZ2l0ICE9IEpzb246OlN0cmluZzo6bnBvcykgLy8gVGhlcmUgaXMgYW4gZXhw
b25lbnQgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBmcm9tIDAKLSAgICB7Ci0gICAgICBleHBvbmVudCA9IHMuc3Vic3RyKGluZGV4RGlnaXQp
OwotICAgIH0KLSAgICByZXR1cm4gbm9ybWFsaXplZCArIGV4cG9uZW50OwotICB9Ci0gIHJldHVy
biBzOwotfQotCi1zdGF0aWMgSnNvbjo6U3RyaW5nIHJlYWRJbnB1dFRlc3RGaWxlKGNvbnN0IGNo
YXIqIHBhdGgpIHsKLSAgRklMRSogZmlsZSA9IGZvcGVuKHBhdGgsICJyYiIpOwotICBpZiAoIWZp
bGUpCi0gICAgcmV0dXJuICIiOwotICBmc2VlayhmaWxlLCAwLCBTRUVLX0VORCk7Ci0gIGxvbmcg
Y29uc3Qgc2l6ZSA9IGZ0ZWxsKGZpbGUpOwotICBzaXplX3QgY29uc3QgdXNpemUgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihzaXplKTsKLSAgZnNlZWsoZmlsZSwgMCwgU0VFS19TRVQpOwot
ICBjaGFyKiBidWZmZXIgPSBuZXcgY2hhcltzaXplICsgMV07Ci0gIGJ1ZmZlcltzaXplXSA9IDA7
Ci0gIEpzb246OlN0cmluZyB0ZXh0OwotICBpZiAoZnJlYWQoYnVmZmVyLCAxLCB1c2l6ZSwgZmls
ZSkgPT0gdXNpemUpCi0gICAgdGV4dCA9IGJ1ZmZlcjsKLSAgZmNsb3NlKGZpbGUpOwotICBkZWxl
dGVbXSBidWZmZXI7Ci0gIHJldHVybiB0ZXh0OwotfQotCi1zdGF0aWMgdm9pZAotcHJpbnRWYWx1
ZVRyZWUoRklMRSogZm91dCwgSnNvbjo6VmFsdWUmIHZhbHVlLCBjb25zdCBKc29uOjpTdHJpbmcm
IHBhdGggPSAiLiIpIHsKLSAgaWYgKHZhbHVlLmhhc0NvbW1lbnQoSnNvbjo6Y29tbWVudEJlZm9y
ZSkpIHsKLSAgICBmcHJpbnRmKGZvdXQsICIlc1xuIiwgdmFsdWUuZ2V0Q29tbWVudChKc29uOjpj
b21tZW50QmVmb3JlKS5jX3N0cigpKTsKLSAgfQotICBzd2l0Y2ggKHZhbHVlLnR5cGUoKSkgewot
ICBjYXNlIEpzb246Om51bGxWYWx1ZToKLSAgICBmcHJpbnRmKGZvdXQsICIlcz1udWxsXG4iLCBw
YXRoLmNfc3RyKCkpOwotICAgIGJyZWFrOwotICBjYXNlIEpzb246OmludFZhbHVlOgotICAgIGZw
cmludGYoZm91dCwgIiVzPSVzXG4iLCBwYXRoLmNfc3RyKCksCi0gICAgICAgICAgICBKc29uOjp2
YWx1ZVRvU3RyaW5nKHZhbHVlLmFzTGFyZ2VzdEludCgpKS5jX3N0cigpKTsKLSAgICBicmVhazsK
LSAgY2FzZSBKc29uOjp1aW50VmFsdWU6Ci0gICAgZnByaW50Zihmb3V0LCAiJXM9JXNcbiIsIHBh
dGguY19zdHIoKSwKLSAgICAgICAgICAgIEpzb246OnZhbHVlVG9TdHJpbmcodmFsdWUuYXNMYXJn
ZXN0VUludCgpKS5jX3N0cigpKTsKLSAgICBicmVhazsKLSAgY2FzZSBKc29uOjpyZWFsVmFsdWU6
Ci0gICAgZnByaW50Zihmb3V0LCAiJXM9JXNcbiIsIHBhdGguY19zdHIoKSwKLSAgICAgICAgICAg
IG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIodmFsdWUuYXNEb3VibGUoKSkuY19zdHIoKSk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgSnNvbjo6c3RyaW5nVmFsdWU6Ci0gICAgZnByaW50Zihmb3V0LCAi
JXM9XCIlc1wiXG4iLCBwYXRoLmNfc3RyKCksIHZhbHVlLmFzU3RyaW5nKCkuY19zdHIoKSk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgSnNvbjo6Ym9vbGVhblZhbHVlOgotICAgIGZwcmludGYoZm91dCwg
IiVzPSVzXG4iLCBwYXRoLmNfc3RyKCksIHZhbHVlLmFzQm9vbCgpID8gInRydWUiIDogImZhbHNl
Iik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgSnNvbjo6YXJyYXlWYWx1ZTogewotICAgIGZwcmludGYo
Zm91dCwgIiVzPVtdXG4iLCBwYXRoLmNfc3RyKCkpOwotICAgIEpzb246OkFycmF5SW5kZXggc2l6
ZSA9IHZhbHVlLnNpemUoKTsKLSAgICBmb3IgKEpzb246OkFycmF5SW5kZXggaW5kZXggPSAwOyBp
bmRleCA8IHNpemU7ICsraW5kZXgpIHsKLSAgICAgIHN0YXRpYyBjaGFyIGJ1ZmZlclsxNl07Ci0g
ICAgICBqc29uY3BwX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJbJXVdIiwgaW5k
ZXgpOwotICAgICAgcHJpbnRWYWx1ZVRyZWUoZm91dCwgdmFsdWVbaW5kZXhdLCBwYXRoICsgYnVm
ZmVyKTsKLSAgICB9Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgSnNvbjo6b2JqZWN0VmFsdWU6IHsKLSAg
ICBmcHJpbnRmKGZvdXQsICIlcz17fVxuIiwgcGF0aC5jX3N0cigpKTsKLSAgICBKc29uOjpWYWx1
ZTo6TWVtYmVycyBtZW1iZXJzKHZhbHVlLmdldE1lbWJlck5hbWVzKCkpOwotICAgIHN0ZDo6c29y
dChtZW1iZXJzLmJlZ2luKCksIG1lbWJlcnMuZW5kKCkpOwotICAgIEpzb246OlN0cmluZyBzdWZm
aXggPSAqKHBhdGguZW5kKCkgLSAxKSA9PSAnLicgPyAiIiA6ICIuIjsKLSAgICBmb3IgKGF1dG8g
bmFtZSA6IG1lbWJlcnMpIHsKLSAgICAgIHByaW50VmFsdWVUcmVlKGZvdXQsIHZhbHVlW25hbWVd
LCBwYXRoICsgc3VmZml4ICsgbmFtZSk7Ci0gICAgfQotICB9IGJyZWFrOwotICBkZWZhdWx0Ogot
ICAgIGJyZWFrOwotICB9Ci0KLSAgaWYgKHZhbHVlLmhhc0NvbW1lbnQoSnNvbjo6Y29tbWVudEFm
dGVyKSkgewotICAgIGZwcmludGYoZm91dCwgIiVzXG4iLCB2YWx1ZS5nZXRDb21tZW50KEpzb246
OmNvbW1lbnRBZnRlcikuY19zdHIoKSk7Ci0gIH0KLX0KLQotc3RhdGljIGludCBwYXJzZUFuZFNh
dmVWYWx1ZVRyZWUoY29uc3QgSnNvbjo6U3RyaW5nJiBpbnB1dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgYWN0dWFsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSnNvbjo6U3RyaW5nJiBraW5kLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSnNvbjo6RmVhdHVyZXMmIGZlYXR1cmVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJzZU9ubHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKc29uOjpWYWx1ZSogcm9vdCkgewotICBKc29uOjpS
ZWFkZXIgcmVhZGVyKGZlYXR1cmVzKTsKLSAgYm9vbCBwYXJzaW5nU3VjY2Vzc2Z1bCA9Ci0gICAg
ICByZWFkZXIucGFyc2UoaW5wdXQuZGF0YSgpLCBpbnB1dC5kYXRhKCkgKyBpbnB1dC5zaXplKCks
ICpyb290KTsKLSAgaWYgKCFwYXJzaW5nU3VjY2Vzc2Z1bCkgewotICAgIHByaW50ZigiRmFpbGVk
IHRvIHBhcnNlICVzIGZpbGU6IFxuJXNcbiIsIGtpbmQuY19zdHIoKSwKLSAgICAgICAgICAgcmVh
ZGVyLmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKS5jX3N0cigpKTsKLSAgICByZXR1cm4gMTsK
LSAgfQotICBpZiAoIXBhcnNlT25seSkgewotICAgIEZJTEUqIGZhY3R1YWwgPSBmb3BlbihhY3R1
YWwuY19zdHIoKSwgInd0Iik7Ci0gICAgaWYgKCFmYWN0dWFsKSB7Ci0gICAgICBwcmludGYoIkZh
aWxlZCB0byBjcmVhdGUgJXMgYWN0dWFsIGZpbGUuXG4iLCBraW5kLmNfc3RyKCkpOwotICAgICAg
cmV0dXJuIDI7Ci0gICAgfQotICAgIHByaW50VmFsdWVUcmVlKGZhY3R1YWwsICpyb290KTsKLSAg
ICBmY2xvc2UoZmFjdHVhbCk7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0vLyBzdGF0aWMgSnNvbjo6
U3RyaW5nIHVzZUZhc3RXcml0ZXIoSnNvbjo6VmFsdWUgY29uc3QmIHJvb3QpIHsKLS8vICAgSnNv
bjo6RmFzdFdyaXRlciB3cml0ZXI7Ci0vLyAgIHdyaXRlci5lbmFibGVZQU1MQ29tcGF0aWJpbGl0
eSgpOwotLy8gICByZXR1cm4gd3JpdGVyLndyaXRlKHJvb3QpOwotLy8gfQotc3RhdGljIEpzb246
OlN0cmluZyB1c2VTdHlsZWRXcml0ZXIoSnNvbjo6VmFsdWUgY29uc3QmIHJvb3QpIHsKLSAgSnNv
bjo6U3R5bGVkV3JpdGVyIHdyaXRlcjsKLSAgcmV0dXJuIHdyaXRlci53cml0ZShyb290KTsKLX0K
LXN0YXRpYyBKc29uOjpTdHJpbmcgdXNlU3R5bGVkU3RyZWFtV3JpdGVyKEpzb246OlZhbHVlIGNv
bnN0JiByb290KSB7Ci0gIEpzb246OlN0eWxlZFN0cmVhbVdyaXRlciB3cml0ZXI7Ci0gIEpzb246
Ok9TdHJpbmdTdHJlYW0gc291dDsKLSAgd3JpdGVyLndyaXRlKHNvdXQsIHJvb3QpOwotICByZXR1
cm4gc291dC5zdHIoKTsKLX0KLXN0YXRpYyBKc29uOjpTdHJpbmcgdXNlQnVpbHRTdHlsZWRTdHJl
YW1Xcml0ZXIoSnNvbjo6VmFsdWUgY29uc3QmIHJvb3QpIHsKLSAgSnNvbjo6U3RyZWFtV3JpdGVy
QnVpbGRlciBidWlsZGVyOwotICByZXR1cm4gSnNvbjo6d3JpdGVTdHJpbmcoYnVpbGRlciwgcm9v
dCk7Ci19Ci1zdGF0aWMgaW50IHJld3JpdGVWYWx1ZVRyZWUoY29uc3QgSnNvbjo6U3RyaW5nJiBy
ZXdyaXRlUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKc29uOjpWYWx1
ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zOjp3cml0ZUZ1bmNU
eXBlIHdyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzb246OlN0cmluZyogcmV3
cml0ZSkgewotICAqcmV3cml0ZSA9IHdyaXRlKHJvb3QpOwotICBGSUxFKiBmb3V0ID0gZm9wZW4o
cmV3cml0ZVBhdGguY19zdHIoKSwgInd0Iik7Ci0gIGlmICghZm91dCkgewotICAgIHByaW50Zigi
RmFpbGVkIHRvIGNyZWF0ZSByZXdyaXRlIGZpbGU6ICVzXG4iLCByZXdyaXRlUGF0aC5jX3N0cigp
KTsKLSAgICByZXR1cm4gMjsKLSAgfQotICBmcHJpbnRmKGZvdXQsICIlc1xuIiwgcmV3cml0ZS0+
Y19zdHIoKSk7Ci0gIGZjbG9zZShmb3V0KTsKLSAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBKc29u
OjpTdHJpbmcgcmVtb3ZlU3VmZml4KGNvbnN0IEpzb246OlN0cmluZyYgcGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgZXh0ZW5zaW9uKSB7
Ci0gIGlmIChleHRlbnNpb24ubGVuZ3RoKCkgPj0gcGF0aC5sZW5ndGgoKSkKLSAgICByZXR1cm4g
SnNvbjo6U3RyaW5nKCIiKTsKLSAgSnNvbjo6U3RyaW5nIHN1ZmZpeCA9IHBhdGguc3Vic3RyKHBh
dGgubGVuZ3RoKCkgLSBleHRlbnNpb24ubGVuZ3RoKCkpOwotICBpZiAoc3VmZml4ICE9IGV4dGVu
c2lvbikKLSAgICByZXR1cm4gSnNvbjo6U3RyaW5nKCIiKTsKLSAgcmV0dXJuIHBhdGguc3Vic3Ry
KDAsIHBhdGgubGVuZ3RoKCkgLSBleHRlbnNpb24ubGVuZ3RoKCkpOwotfQotCi1zdGF0aWMgdm9p
ZCBwcmludENvbmZpZygpIHsKLS8vIFByaW50IHRoZSBjb25maWd1cmF0aW9uIHVzZWQgdG8gY29t
cGlsZSBKc29uQ3BwCi0jaWYgZGVmaW5lZChKU09OX05PX0lOVDY0KQotICBwcmludGYoIkpTT05f
Tk9fSU5UNjQ9MVxuIik7Ci0jZWxzZQotICBwcmludGYoIkpTT05fTk9fSU5UNjQ9MFxuIik7Ci0j
ZW5kaWYKLX0KLQotc3RhdGljIGludCBwcmludFVzYWdlKGNvbnN0IGNoYXIqIGFyZ3ZbXSkgewot
ICBwcmludGYoIlVzYWdlOiAlcyBbLS1zdHJpY3RdIGlucHV0LWpzb24tZmlsZSIsIGFyZ3ZbMF0p
OwotICByZXR1cm4gMzsKLX0KLQotc3RhdGljIGludCBwYXJzZUNvbW1hbmRMaW5lKGludCBhcmdj
LCBjb25zdCBjaGFyKiBhcmd2W10sIE9wdGlvbnMqIG9wdHMpIHsKLSAgb3B0cy0+cGFyc2VPbmx5
ID0gZmFsc2U7Ci0gIG9wdHMtPndyaXRlID0gJnVzZVN0eWxlZFdyaXRlcjsKLSAgaWYgKGFyZ2Mg
PCAyKSB7Ci0gICAgcmV0dXJuIHByaW50VXNhZ2UoYXJndik7Ci0gIH0KLSAgaW50IGluZGV4ID0g
MTsKLSAgaWYgKEpzb246OlN0cmluZyhhcmd2W2luZGV4XSkgPT0gIi0tanNvbi1jaGVja2VyIikg
ewotICAgIG9wdHMtPmZlYXR1cmVzID0gSnNvbjo6RmVhdHVyZXM6OnN0cmljdE1vZGUoKTsKLSAg
ICBvcHRzLT5wYXJzZU9ubHkgPSB0cnVlOwotICAgICsraW5kZXg7Ci0gIH0KLSAgaWYgKEpzb246
OlN0cmluZyhhcmd2W2luZGV4XSkgPT0gIi0tanNvbi1jb25maWciKSB7Ci0gICAgcHJpbnRDb25m
aWcoKTsKLSAgICByZXR1cm4gMzsKLSAgfQotICBpZiAoSnNvbjo6U3RyaW5nKGFyZ3ZbaW5kZXhd
KSA9PSAiLS1qc29uLXdyaXRlciIpIHsKLSAgICArK2luZGV4OwotICAgIEpzb246OlN0cmluZyBj
b25zdCB3cml0ZXJOYW1lKGFyZ3ZbaW5kZXgrK10pOwotICAgIGlmICh3cml0ZXJOYW1lID09ICJT
dHlsZWRXcml0ZXIiKSB7Ci0gICAgICBvcHRzLT53cml0ZSA9ICZ1c2VTdHlsZWRXcml0ZXI7Ci0g
ICAgfSBlbHNlIGlmICh3cml0ZXJOYW1lID09ICJTdHlsZWRTdHJlYW1Xcml0ZXIiKSB7Ci0gICAg
ICBvcHRzLT53cml0ZSA9ICZ1c2VTdHlsZWRTdHJlYW1Xcml0ZXI7Ci0gICAgfSBlbHNlIGlmICh3
cml0ZXJOYW1lID09ICJCdWlsdFN0eWxlZFN0cmVhbVdyaXRlciIpIHsKLSAgICAgIG9wdHMtPndy
aXRlID0gJnVzZUJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOwotICAgIH0gZWxzZSB7Ci0gICAgICBw
cmludGYoIlVua25vd24gJy0tanNvbi13cml0ZXIgJXMnXG4iLCB3cml0ZXJOYW1lLmNfc3RyKCkp
OwotICAgICAgcmV0dXJuIDQ7Ci0gICAgfQotICB9Ci0gIGlmIChpbmRleCA9PSBhcmdjIHx8IGlu
ZGV4ICsgMSA8IGFyZ2MpIHsKLSAgICByZXR1cm4gcHJpbnRVc2FnZShhcmd2KTsKLSAgfQotICBv
cHRzLT5wYXRoID0gYXJndltpbmRleF07Ci0gIHJldHVybiAwOwotfQotc3RhdGljIGludCBydW5U
ZXN0KE9wdGlvbnMgY29uc3QmIG9wdHMpIHsKLSAgaW50IGV4aXRDb2RlID0gMDsKLQotICBKc29u
OjpTdHJpbmcgaW5wdXQgPSByZWFkSW5wdXRUZXN0RmlsZShvcHRzLnBhdGguY19zdHIoKSk7Ci0g
IGlmIChpbnB1dC5lbXB0eSgpKSB7Ci0gICAgcHJpbnRmKCJGYWlsZWQgdG8gcmVhZCBpbnB1dCBv
ciBlbXB0eSBpbnB1dDogJXNcbiIsIG9wdHMucGF0aC5jX3N0cigpKTsKLSAgICByZXR1cm4gMzsK
LSAgfQotCi0gIEpzb246OlN0cmluZyBiYXNlUGF0aCA9IHJlbW92ZVN1ZmZpeChvcHRzLnBhdGgs
ICIuanNvbiIpOwotICBpZiAoIW9wdHMucGFyc2VPbmx5ICYmIGJhc2VQYXRoLmVtcHR5KCkpIHsK
LSAgICBwcmludGYoIkJhZCBpbnB1dCBwYXRoLiBQYXRoIGRvZXMgbm90IGVuZCB3aXRoICcuZXhw
ZWN0ZWQnOlxuJXNcbiIsCi0gICAgICAgICAgIG9wdHMucGF0aC5jX3N0cigpKTsKLSAgICByZXR1
cm4gMzsKLSAgfQotCi0gIEpzb246OlN0cmluZyBjb25zdCBhY3R1YWxQYXRoID0gYmFzZVBhdGgg
KyAiLmFjdHVhbCI7Ci0gIEpzb246OlN0cmluZyBjb25zdCByZXdyaXRlUGF0aCA9IGJhc2VQYXRo
ICsgIi5yZXdyaXRlIjsKLSAgSnNvbjo6U3RyaW5nIGNvbnN0IHJld3JpdGVBY3R1YWxQYXRoID0g
YmFzZVBhdGggKyAiLmFjdHVhbC1yZXdyaXRlIjsKLQotICBKc29uOjpWYWx1ZSByb290OwotICBl
eGl0Q29kZSA9IHBhcnNlQW5kU2F2ZVZhbHVlVHJlZShpbnB1dCwgYWN0dWFsUGF0aCwgImlucHV0
Iiwgb3B0cy5mZWF0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
cy5wYXJzZU9ubHksICZyb290KTsKLSAgaWYgKGV4aXRDb2RlIHx8IG9wdHMucGFyc2VPbmx5KSB7
Ci0gICAgcmV0dXJuIGV4aXRDb2RlOwotICB9Ci0gIEpzb246OlN0cmluZyByZXdyaXRlOwotICBl
eGl0Q29kZSA9IHJld3JpdGVWYWx1ZVRyZWUocmV3cml0ZVBhdGgsIHJvb3QsIG9wdHMud3JpdGUs
ICZyZXdyaXRlKTsKLSAgaWYgKGV4aXRDb2RlKSB7Ci0gICAgcmV0dXJuIGV4aXRDb2RlOwotICB9
Ci0gIEpzb246OlZhbHVlIHJld3JpdGVSb290OwotICBleGl0Q29kZSA9IHBhcnNlQW5kU2F2ZVZh
bHVlVHJlZShyZXdyaXRlLCByZXdyaXRlQWN0dWFsUGF0aCwgInJld3JpdGUiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZlYXR1cmVzLCBvcHRzLnBhcnNlT25seSwg
JnJld3JpdGVSb290KTsKLSAgaWYgKGV4aXRDb2RlKSB7Ci0gICAgcmV0dXJuIGV4aXRDb2RlOwot
ICB9Ci0gIHJldHVybiAwOwotfQotaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkgewotICBPcHRpb25zIG9wdHM7Ci0gIHRyeSB7Ci0gICAgaW50IGV4aXRDb2RlID0gcGFyc2VD
b21tYW5kTGluZShhcmdjLCBhcmd2LCAmb3B0cyk7Ci0gICAgaWYgKGV4aXRDb2RlICE9IDApIHsK
LSAgICAgIHByaW50ZigiRmFpbGVkIHRvIHBhcnNlIGNvbW1hbmQtbGluZS4iKTsKLSAgICAgIHJl
dHVybiBleGl0Q29kZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ1blRlc3Qob3B0cyk7Ci0gIH0gY2F0
Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgcHJpbnRmKCJVbmhhbmRsZWQgZXhj
ZXB0aW9uOlxuJXNcbiIsIGUud2hhdCgpKTsKLSAgICByZXR1cm4gMTsKLSAgfQotfQotCi0jaWYg
ZGVmaW5lZChfX0dOVUNfXykKLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGli
X2pzb24vQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOTIw
OTJhZjdhNS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL0NNYWtlTGlzdHMu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLWlmKCBDTUFLRV9DT01QSUxFUl9J
U19HTlVDWFggKQotICAgICNHZXQgY29tcGlsZXIgdmVyc2lvbi4KLSAgICBleGVjdXRlX3Byb2Nl
c3MoIENPTU1BTkQgJHtDTUFLRV9DWFhfQ09NUElMRVJ9IC1kdW1wdmVyc2lvbgotICAgICAgICAg
ICAgICAgICAgICAgT1VUUFVUX1ZBUklBQkxFIEdOVUNYWF9WRVJTSU9OICkKLQotICAgICMtV2Vy
cm9yPSogd2FzIGludHJvZHVjZWQgLWFmdGVyLSBHQ0MgNC4xLjIKLSAgICBpZiggR05VQ1hYX1ZF
UlNJT04gVkVSU0lPTl9HUkVBVEVSIDQuMS4yICkKLSAgICAgICAgc2V0KENNQUtFX0NYWF9GTEFH
UyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XZXJyb3I9c3RyaWN0LWFsaWFzaW5nIikKLSAgICBlbmRp
ZigpCi1lbmRpZiggQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYICkKLQotaW5jbHVkZShDaGVja0lu
Y2x1ZGVGaWxlQ1hYKQotaW5jbHVkZShDaGVja1R5cGVTaXplKQotaW5jbHVkZShDaGVja1N0cnVj
dEhhc01lbWJlcikKLWluY2x1ZGUoQ2hlY2tDWFhTeW1ib2xFeGlzdHMpCi0KLWNoZWNrX2luY2x1
ZGVfZmlsZV9jeHgoY2xvY2FsZSBIQVZFX0NMT0NBTEUpCi1jaGVja19jeHhfc3ltYm9sX2V4aXN0
cyhsb2NhbGVjb252IGNsb2NhbGUgSEFWRV9MT0NBTEVDT05WKQotCi1pZihDTUFLRV9WRVJTSU9O
IFZFUlNJT05fTEVTUyAzLjAuMCkKLSAgICAjIFRoZSAiTEFOR1VBR0UgQ1hYIiBwYXJhbWV0ZXIg
aXMgbm90IHN1cHBvcnRlZCBpbiBDTWFrZSB2ZXJzaW9ucyBiZWxvdyAzLAotICAgICMgc28gdGhl
IEMgY29tcGlsZXIgYW5kIGhlYWRlciBoYXMgdG8gYmUgdXNlZC4KLSAgICBjaGVja19pbmNsdWRl
X2ZpbGUobG9jYWxlLmggSEFWRV9MT0NBTEVfSCkKLSAgICBzZXQoQ01BS0VfRVhUUkFfSU5DTFVE
RV9GSUxFUyBsb2NhbGUuaCkKLSAgICBjaGVja190eXBlX3NpemUoInN0cnVjdCBsY29udiIgTENP
TlZfU0laRSkKLSAgICB1bnNldChDTUFLRV9FWFRSQV9JTkNMVURFX0ZJTEVTKQotICAgIGNoZWNr
X3N0cnVjdF9oYXNfbWVtYmVyKCJzdHJ1Y3QgbGNvbnYiIGRlY2ltYWxfcG9pbnQgbG9jYWxlLmgg
SEFWRV9ERUNJTUFMX1BPSU5UKQotZWxzZSgpCi0gICAgc2V0KENNQUtFX0VYVFJBX0lOQ0xVREVf
RklMRVMgY2xvY2FsZSkKLSAgICBjaGVja190eXBlX3NpemUobGNvbnYgTENPTlZfU0laRSBMQU5H
VUFHRSBDWFgpCi0gICAgdW5zZXQoQ01BS0VfRVhUUkFfSU5DTFVERV9GSUxFUykKLSAgICBjaGVj
a19zdHJ1Y3RfaGFzX21lbWJlcihsY29udiBkZWNpbWFsX3BvaW50IGNsb2NhbGUgSEFWRV9ERUNJ
TUFMX1BPSU5UIExBTkdVQUdFIENYWCkKLWVuZGlmKCkKLQotaWYoTk9UIChIQVZFX0NMT0NBTEUg
QU5EIEhBVkVfTENPTlZfU0laRSBBTkQgSEFWRV9ERUNJTUFMX1BPSU5UIEFORCBIQVZFX0xPQ0FM
RUNPTlYpKQotICAgIG1lc3NhZ2UoV0FSTklORyAiTG9jYWxlIGZ1bmN0aW9uYWxpdHkgaXMgbm90
IHN1cHBvcnRlZCIpCi0gICAgYWRkX2NvbXBpbGVfZGVmaW5pdGlvbnMoSlNPTkNQUF9OT19MT0NB
TEVfU1VQUE9SVCkKLWVuZGlmKCkKLQotc2V0KCBKU09OQ1BQX0lOQ0xVREVfRElSIC4uLy4uL2lu
Y2x1ZGUgKQotCi1zZXQoIFBVQkxJQ19IRUFERVJTCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElS
fS9qc29uL2NvbmZpZy5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL2ZvcndhcmRz
LmgKLSAgICAke0pTT05DUFBfSU5DTFVERV9ESVJ9L2pzb24vZmVhdHVyZXMuaAotICAgICR7SlNP
TkNQUF9JTkNMVURFX0RJUn0vanNvbi92YWx1ZS5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElS
fS9qc29uL3JlYWRlci5oCi0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL3dyaXRlci5o
Ci0gICAgJHtKU09OQ1BQX0lOQ0xVREVfRElSfS9qc29uL2Fzc2VydGlvbnMuaAotICAgICR7UFJP
SkVDVF9CSU5BUllfRElSfS9pbmNsdWRlL2pzb24vdmVyc2lvbi5oCi0gICAgKQotCi1zb3VyY2Vf
Z3JvdXAoICJQdWJsaWMgQVBJIiBGSUxFUyAke1BVQkxJQ19IRUFERVJTfSApCi0KLXNldChqc29u
Y3BwX3NvdXJjZXMKLSAgICAgICAgICAgICAgICBqc29uX3Rvb2wuaAotICAgICAgICAgICAgICAg
IGpzb25fcmVhZGVyLmNwcAotICAgICAgICAgICAgICAgIGpzb25fdmFsdWVpdGVyYXRvci5pbmwK
LSAgICAgICAgICAgICAgICBqc29uX3ZhbHVlLmNwcAotICAgICAgICAgICAgICAgIGpzb25fd3Jp
dGVyLmNwcAotICAgICAgICAgICAgICAgIHZlcnNpb24uaC5pbikKLQotIyBJbnN0YWxsIGluc3Ry
dWN0aW9ucyBmb3IgdGhpcyB0YXJnZXQKLWlmKEpTT05DUFBfV0lUSF9DTUFLRV9QQUNLQUdFKQot
ICAgIHNldChJTlNUQUxMX0VYUE9SVCBFWFBPUlQganNvbmNwcCkKLWVsc2UoSlNPTkNQUF9XSVRI
X0NNQUtFX1BBQ0tBR0UpCi0gICAgc2V0KElOU1RBTExfRVhQT1JUKQotZW5kaWYoKQotCi1pZihC
VUlMRF9TSEFSRURfTElCUykKLSAgICBhZGRfY29tcGlsZV9kZWZpbml0aW9ucyggSlNPTl9ETExf
QlVJTEQgKQotZW5kaWYoKQotCi0KLWFkZF9saWJyYXJ5KGpzb25jcHBfbGliICR7UFVCTElDX0hF
QURFUlN9ICR7anNvbmNwcF9zb3VyY2VzfSkKLXNldF90YXJnZXRfcHJvcGVydGllcygganNvbmNw
cF9saWIgUFJPUEVSVElFUyBWRVJTSU9OICR7SlNPTkNQUF9WRVJTSU9OfSBTT1ZFUlNJT04gJHtK
U09OQ1BQX1NPVkVSU0lPTn0pCi1zZXRfdGFyZ2V0X3Byb3BlcnRpZXMoIGpzb25jcHBfbGliIFBS
T1BFUlRJRVMgT1VUUFVUX05BTUUganNvbmNwcAotICAgICAgICAgICAgICAgICAgICAgICAgREVC
VUdfT1VUUFVUX05BTUUganNvbmNwcCR7REVCVUdfTElCTkFNRV9TVUZGSVh9ICkKLXNldF90YXJn
ZXRfcHJvcGVydGllcygganNvbmNwcF9saWIgUFJPUEVSVElFUyBQT1NJVElPTl9JTkRFUEVOREVO
VF9DT0RFIE9OKQotCi0jIFNldCBsaWJyYXJ5J3MgcnVudGltZSBzZWFyY2ggcGF0aCBvbiBPU1gK
LWlmKEFQUExFKQotICAgIHNldF90YXJnZXRfcHJvcGVydGllcygganNvbmNwcF9saWIgUFJPUEVS
VElFUyBJTlNUQUxMX1JQQVRIICJAbG9hZGVyX3BhdGgvLiIgKQotZW5kaWYoKQotCi0jIFNwZWNp
ZnkgY29tcGlsZXIgZmVhdHVyZXMgcmVxdWlyZWQgd2hlbiBjb21waWxpbmcgYSBnaXZlbiB0YXJn
ZXQuCi0jIFNlZSBodHRwczovL2NtYWtlLm9yZy9jbWFrZS9oZWxwL3YzLjEvcHJvcF9nYmwvQ01B
S0VfQ1hYX0tOT1dOX0ZFQVRVUkVTLmh0bWwjcHJvcF9nYmw6Q01BS0VfQ1hYX0tOT1dOX0ZFQVRV
UkVTCi0jIGZvciBjb21wbGV0ZSBsaXN0IG9mIGZlYXR1cmVzIGF2YWlsYWJsZQotdGFyZ2V0X2Nv
bXBpbGVfZmVhdHVyZXMoanNvbmNwcF9saWIgUFVCTElDCi0gICAgICAgIGN4eF9zdGRfMTEgIyBD
b21waWxlciBtb2RlIGlzIGF3YXJlIG9mIEMrKyAxMS4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhf
YWxpZ25hcyAjIEFsaWdubWVudCBjb250cm9sIGFsaWduYXMsIGFzIGRlZmluZWQgaW4gTjIzNDEu
Ci0gICAgICAgICNNU1ZDIDE5MDAgY3h4X2FsaWdub2YgIyBBbGlnbm1lbnQgY29udHJvbCBhbGln
bm9mLCBhcyBkZWZpbmVkIGluIE4yMzQxLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9hdHRyaWJ1
dGVzICMgR2VuZXJpYyBhdHRyaWJ1dGVzLCBhcyBkZWZpbmVkIGluIE4yNzYxLgotICAgICAgICBj
eHhfYXV0b190eXBlICMgQXV0b21hdGljIHR5cGUgZGVkdWN0aW9uLCBhcyBkZWZpbmVkIGluIE4x
OTg0LgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9jb25zdGV4cHIgIyBDb25zdGFudCBleHByZXNz
aW9ucywgYXMgZGVmaW5lZCBpbiBOMjIzNS4KLSAgICAgICAgY3h4X2RlY2x0eXBlICMgRGVjbHR5
cGUsIGFzIGRlZmluZWQgaW4gTjIzNDMuCi0gICAgICAgIGN4eF9kZWZhdWx0X2Z1bmN0aW9uX3Rl
bXBsYXRlX2FyZ3MgIyBEZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gdGVt
cGxhdGVzLCBhcyBkZWZpbmVkIGluIERSMjI2Ci0gICAgICAgIGN4eF9kZWZhdWx0ZWRfZnVuY3Rp
b25zICMgRGVmYXVsdGVkIGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiBOMjM0Ni4KLSAgICAgICAg
I01TVkMgMTkwMCBjeHhfZGVmYXVsdGVkX21vdmVfaW5pdGlhbGl6ZXJzICMgRGVmYXVsdGVkIG1v
dmUgaW5pdGlhbGl6ZXJzLCBhcyBkZWZpbmVkIGluIE4zMDUzLgotICAgICAgICBjeHhfZGVsZWdh
dGluZ19jb25zdHJ1Y3RvcnMgIyBEZWxlZ2F0aW5nIGNvbnN0cnVjdG9ycywgYXMgZGVmaW5lZCBp
biBOMTk4Ni4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfZGVsZXRlZF9mdW5jdGlvbnMgIyBEZWxl
dGVkIGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiBOMjM0Ni4KLSAgICAgICAgY3h4X2VudW1fZm9y
d2FyZF9kZWNsYXJhdGlvbnMgIyBFbnVtIGZvcndhcmQgZGVjbGFyYXRpb25zLCBhcyBkZWZpbmVk
IGluIE4yNzY0LgotICAgICAgICBjeHhfZXhwbGljaXRfY29udmVyc2lvbnMgIyBFeHBsaWNpdCBj
b252ZXJzaW9uIG9wZXJhdG9ycywgYXMgZGVmaW5lZCBpbiBOMjQzNy4KLSAgICAgICAgY3h4X2V4
dGVuZGVkX2ZyaWVuZF9kZWNsYXJhdGlvbnMgIyBFeHRlbmRlZCBmcmllbmQgZGVjbGFyYXRpb25z
LCBhcyBkZWZpbmVkIGluIE4xNzkxLgotICAgICAgICBjeHhfZXh0ZXJuX3RlbXBsYXRlcyAjIEV4
dGVybiB0ZW1wbGF0ZXMsIGFzIGRlZmluZWQgaW4gTjE5ODcuCi0gICAgICAgIGN4eF9maW5hbCAj
IE92ZXJyaWRlIGNvbnRyb2wgZmluYWwga2V5d29yZCwgYXMgZGVmaW5lZCBpbiBOMjkyOCwgTjMy
MDYgYW5kIE4zMjcyLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9mdW5jX2lkZW50aWZpZXIgIyBQ
cmVkZWZpbmVkIF9fZnVuY19fIGlkZW50aWZpZXIsIGFzIGRlZmluZWQgaW4gTjIzNDAuCi0gICAg
ICAgICNNU1ZDIDE5MDAgY3h4X2dlbmVyYWxpemVkX2luaXRpYWxpemVycyAjIEluaXRpYWxpemVy
IGxpc3RzLCBhcyBkZWZpbmVkIGluIE4yNjcyLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9pbmhl
cml0aW5nX2NvbnN0cnVjdG9ycyAjIEluaGVyaXRpbmcgY29uc3RydWN0b3JzLCBhcyBkZWZpbmVk
IGluIE4yNTQwLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9pbmxpbmVfbmFtZXNwYWNlcyAjIElu
bGluZSBuYW1lc3BhY2VzLCBhcyBkZWZpbmVkIGluIE4yNTM1LgotICAgICAgICBjeHhfbGFtYmRh
cyAjIExhbWJkYSBmdW5jdGlvbnMsIGFzIGRlZmluZWQgaW4gTjI5MjcuCi0gICAgICAgICNNU1ZD
IDE5MDAgY3h4X2xvY2FsX3R5cGVfdGVtcGxhdGVfYXJncyAjIExvY2FsIGFuZCB1bm5hbWVkIHR5
cGVzIGFzIHRlbXBsYXRlIGFyZ3VtZW50cywgYXMgZGVmaW5lZCBpbiBOMjY1Ny4KLSAgICAgICAg
Y3h4X2xvbmdfbG9uZ190eXBlICMgbG9uZyBsb25nIHR5cGUsIGFzIGRlZmluZWQgaW4gTjE4MTEu
Ci0gICAgICAgICNNU1ZDIDE5MDAgY3h4X25vZXhjZXB0ICMgRXhjZXB0aW9uIHNwZWNpZmljYXRp
b25zLCBhcyBkZWZpbmVkIGluIE4zMDUwLgotICAgICAgICAjTVNWQyAxOTAwIGN4eF9ub25zdGF0
aWNfbWVtYmVyX2luaXQgIyBOb24tc3RhdGljIGRhdGEgbWVtYmVyIGluaXRpYWxpemF0aW9uLCBh
cyBkZWZpbmVkIGluIE4yNzU2LgotICAgICAgICBjeHhfbnVsbHB0ciAjIE51bGwgcG9pbnRlciwg
YXMgZGVmaW5lZCBpbiBOMjQzMS4KLSAgICAgICAgY3h4X292ZXJyaWRlICMgT3ZlcnJpZGUgY29u
dHJvbCBvdmVycmlkZSBrZXl3b3JkLCBhcyBkZWZpbmVkIGluIE4yOTI4LCBOMzIwNiBhbmQgTjMy
NzIuCi0gICAgICAgIGN4eF9yYW5nZV9mb3IgIyBSYW5nZS1iYXNlZCBmb3IsIGFzIGRlZmluZWQg
aW4gTjI5MzAuCi0gICAgICAgIGN4eF9yYXdfc3RyaW5nX2xpdGVyYWxzICMgUmF3IHN0cmluZyBs
aXRlcmFscywgYXMgZGVmaW5lZCBpbiBOMjQ0Mi4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfcmVm
ZXJlbmNlX3F1YWxpZmllZF9mdW5jdGlvbnMgIyBSZWZlcmVuY2UgcXVhbGlmaWVkIGZ1bmN0aW9u
cywgYXMgZGVmaW5lZCBpbiBOMjQzOS4KLSAgICAgICAgY3h4X3JpZ2h0X2FuZ2xlX2JyYWNrZXRz
ICMgUmlnaHQgYW5nbGUgYnJhY2tldCBwYXJzaW5nLCBhcyBkZWZpbmVkIGluIE4xNzU3LgotICAg
ICAgICBjeHhfcnZhbHVlX3JlZmVyZW5jZXMgIyBSLXZhbHVlIHJlZmVyZW5jZXMsIGFzIGRlZmlu
ZWQgaW4gTjIxMTguCi0gICAgICAgICNNU1ZDIDE5MDAgY3h4X3NpemVvZl9tZW1iZXIgIyBTaXpl
IG9mIG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLCBhcyBkZWZpbmVkIGluIE4yMjUzLgotICAgICAg
ICBjeHhfc3RhdGljX2Fzc2VydCAjIFN0YXRpYyBhc3NlcnQsIGFzIGRlZmluZWQgaW4gTjE3MjAu
Ci0gICAgICAgIGN4eF9zdHJvbmdfZW51bXMgIyBTdHJvbmdseSB0eXBlZCBlbnVtcywgYXMgZGVm
aW5lZCBpbiBOMjM0Ny4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfdGhyZWFkX2xvY2FsICMgVGhy
ZWFkLWxvY2FsIHZhcmlhYmxlcywgYXMgZGVmaW5lZCBpbiBOMjY1OS4KLSAgICAgICAgY3h4X3Ry
YWlsaW5nX3JldHVybl90eXBlcyAjIEF1dG9tYXRpYyBmdW5jdGlvbiByZXR1cm4gdHlwZSwgYXMg
ZGVmaW5lZCBpbiBOMjU0MS4KLSAgICAgICAgI01TVkMgMTkwMCBjeHhfdW5pY29kZV9saXRlcmFs
cyAjIFVuaWNvZGUgc3RyaW5nIGxpdGVyYWxzLCBhcyBkZWZpbmVkIGluIE4yNDQyLgotICAgICAg
ICBjeHhfdW5pZm9ybV9pbml0aWFsaXphdGlvbiAjIFVuaWZvcm0gaW5pdGlhbGl6YXRpb24sIGFz
IGRlZmluZWQgaW4gTjI2NDAuCi0gICAgICAgICNNU1ZDIDE5MDAgY3h4X3VucmVzdHJpY3RlZF91
bmlvbnMgIyBVbnJlc3RyaWN0ZWQgdW5pb25zLCBhcyBkZWZpbmVkIGluIE4yNTQ0LgotICAgICAg
ICAjTVNWQyAxOTAwIGN4eF91c2VyX2xpdGVyYWxzICMgVXNlci1kZWZpbmVkIGxpdGVyYWxzLCBh
cyBkZWZpbmVkIGluIE4yNzY1LgotICAgICAgICBjeHhfdmFyaWFkaWNfbWFjcm9zICMgVmFyaWFk
aWMgbWFjcm9zLCBhcyBkZWZpbmVkIGluIE4xNjUzLgotICAgICAgICBjeHhfdmFyaWFkaWNfdGVt
cGxhdGVzICMgVmFyaWFkaWMgdGVtcGxhdGVzLCBhcyBkZWZpbmVkIGluIE4yMjQyLgotKQotCi1p
bnN0YWxsKCBUQVJHRVRTIGpzb25jcHBfbGliICR7SU5TVEFMTF9FWFBPUlR9Ci0gICAgICAgICAg
UlVOVElNRSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfQotICAgICAgICAgIExJ
QlJBUlkgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0KLSAgICAgICAgICBBUkNI
SVZFIERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9KQotCi1pZihOT1QgQ01BS0Vf
VkVSU0lPTiBWRVJTSU9OX0xFU1MgMi44LjExKQotICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9y
aWVzKCBqc29uY3BwX2xpYiBQVUJMSUMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JDxJTlNUQUxMX0lOVEVSRkFDRToke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0+Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVO
VF9MSVNUX0RJUn0vJHtKU09OQ1BQX0lOQ0xVREVfRElSfT4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJDxCVUlMRF9JTlRFUkZBQ0U6JHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2luY2x1
ZGUvanNvbj4pCi1lbmRpZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3Jl
YWRlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3JlYWRlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwNWFiMjY4OTI3Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
c3JjL2xpYl9qc29uL2pzb25fcmVhZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMTcgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMSBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBK
c29uQ3BwIEF1dGhvcnMKLS8vIENvcHlyaWdodCAoQykgMjAxNiBJbmZvVGVDUyBKU0MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVi
bGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGlj
dGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9q
c29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSNpZiAhZGVmaW5lZChKU09OX0lTX0FN
QUxHQU1BVElPTikKLSNpbmNsdWRlICJqc29uX3Rvb2wuaCIKLSNpbmNsdWRlIDxqc29uL2Fzc2Vy
dGlvbnMuaD4KLSNpbmNsdWRlIDxqc29uL3JlYWRlci5oPgotI2luY2x1ZGUgPGpzb24vdmFsdWUu
aD4KLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRl
IDxjYXNzZXJ0PgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNs
dWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KLSNpbmNsdWRl
IDxzc3RyZWFtPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaWYg
X19jcGx1c3BsdXMgPj0gMjAxMTAzTAotCi0jaWYgIWRlZmluZWQoc3NjYW5mKQotI2RlZmluZSBz
c2NhbmYgc3RkOjpzc2NhbmYKLSNlbmRpZgotCi0jZW5kaWYgLy9fX2NwbHVzcGx1cwotCi0jaWYg
ZGVmaW5lZChfTVNDX1ZFUikKLSNpZiAhZGVmaW5lZChfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURf
U1RBTkRBUkRfTkFNRVMpCi0jZGVmaW5lIF9DUlRfU0VDVVJFX0NQUF9PVkVSTE9BRF9TVEFOREFS
RF9OQU1FUyAxCi0jZW5kaWYgLy9fQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFN
RVMKLSNlbmRpZiAvL19NU0NfVkVSCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotLy8gRGlzYWJs
ZSB3YXJuaW5nIGFib3V0IHN0cmR1cCBiZWluZyBkZXByZWNhdGVkLgotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGUgOiA0OTk2KQotI2VuZGlmCi0KLS8vIERlZmluZSBKU09OQ1BQX0RFUFJFQ0FURURf
U1RBQ0tfTElNSVQgYXMgYW4gYXBwcm9wcmlhdGUgaW50ZWdlciBhdCBjb21waWxlCi0vLyB0aW1l
IHRvIGNoYW5nZSB0aGUgc3RhY2sgbGltaXQKLSNpZiAhZGVmaW5lZChKU09OQ1BQX0RFUFJFQ0FU
RURfU1RBQ0tfTElNSVQpCi0jZGVmaW5lIEpTT05DUFBfREVQUkVDQVRFRF9TVEFDS19MSU1JVCAx
MDAwCi0jZW5kaWYKLQotc3RhdGljIHNpemVfdCBjb25zdCBzdGFja0xpbWl0X2cgPQotICAgIEpT
T05DUFBfREVQUkVDQVRFRF9TVEFDS19MSU1JVDsgLy8gc2VlIHJlYWRWYWx1ZSgpCi0KLW5hbWVz
cGFjZSBKc29uIHsKLQotI2lmIF9fY3BsdXNwbHVzID49IDIwMTEwM0wgfHwgKGRlZmluZWQoX0NQ
UExJQl9WRVIpICYmIF9DUFBMSUJfVkVSID49IDUyMCkKLXR5cGVkZWYgc3RkOjp1bmlxdWVfcHRy
PENoYXJSZWFkZXI+IENoYXJSZWFkZXJQdHI7Ci0jZWxzZQotdHlwZWRlZiBzdGQ6OmF1dG9fcHRy
PENoYXJSZWFkZXI+IENoYXJSZWFkZXJQdHI7Ci0jZW5kaWYKLQotLy8gSW1wbGVtZW50YXRpb24g
b2YgY2xhc3MgRmVhdHVyZXMKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0K
LUZlYXR1cmVzOjpGZWF0dXJlcygpID0gZGVmYXVsdDsKLQotRmVhdHVyZXMgRmVhdHVyZXM6OmFs
bCgpIHsgcmV0dXJuIHt9OyB9Ci0KLUZlYXR1cmVzIEZlYXR1cmVzOjpzdHJpY3RNb2RlKCkgewot
ICBGZWF0dXJlcyBmZWF0dXJlczsKLSAgZmVhdHVyZXMuYWxsb3dDb21tZW50c18gPSBmYWxzZTsK
LSAgZmVhdHVyZXMuc3RyaWN0Um9vdF8gPSB0cnVlOwotICBmZWF0dXJlcy5hbGxvd0Ryb3BwZWRO
dWxsUGxhY2Vob2xkZXJzXyA9IGZhbHNlOwotICBmZWF0dXJlcy5hbGxvd051bWVyaWNLZXlzXyA9
IGZhbHNlOwotICByZXR1cm4gZmVhdHVyZXM7Ci19Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9mIGNs
YXNzIFJlYWRlcgotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotYm9vbCBS
ZWFkZXI6OmNvbnRhaW5zTmV3TGluZShSZWFkZXI6OkxvY2F0aW9uIGJlZ2luLCBSZWFkZXI6Okxv
Y2F0aW9uIGVuZCkgewotICBmb3IgKDsgYmVnaW4gPCBlbmQ7ICsrYmVnaW4pCi0gICAgaWYgKCpi
ZWdpbiA9PSAnXG4nIHx8ICpiZWdpbiA9PSAnXHInKQotICAgICAgcmV0dXJuIHRydWU7Ci0gIHJl
dHVybiBmYWxzZTsKLX0KLQotLy8gQ2xhc3MgUmVhZGVyCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotUmVhZGVy
OjpSZWFkZXIoKQotICAgIDogZXJyb3JzXygpLCBkb2N1bWVudF8oKSwgY29tbWVudHNCZWZvcmVf
KCksIGZlYXR1cmVzXyhGZWF0dXJlczo6YWxsKCkpIHt9Ci0KLVJlYWRlcjo6UmVhZGVyKGNvbnN0
IEZlYXR1cmVzJiBmZWF0dXJlcykKLSAgICA6IGVycm9yc18oKSwgZG9jdW1lbnRfKCksIGJlZ2lu
XygpLCBlbmRfKCksIGN1cnJlbnRfKCksIGxhc3RWYWx1ZUVuZF8oKSwKLSAgICAgIGxhc3RWYWx1
ZV8oKSwgY29tbWVudHNCZWZvcmVfKCksIGZlYXR1cmVzXyhmZWF0dXJlcyksIGNvbGxlY3RDb21t
ZW50c18oKSB7Ci19Ci0KLWJvb2wgUmVhZGVyOjpwYXJzZShjb25zdCBzdGQ6OnN0cmluZyYgZG9j
dW1lbnQsCi0gICAgICAgICAgICAgICAgICAgVmFsdWUmIHJvb3QsCi0gICAgICAgICAgICAgICAg
ICAgYm9vbCBjb2xsZWN0Q29tbWVudHMpIHsKLSAgZG9jdW1lbnRfLmFzc2lnbihkb2N1bWVudC5i
ZWdpbigpLCBkb2N1bWVudC5lbmQoKSk7Ci0gIGNvbnN0IGNoYXIqIGJlZ2luID0gZG9jdW1lbnRf
LmNfc3RyKCk7Ci0gIGNvbnN0IGNoYXIqIGVuZCA9IGJlZ2luICsgZG9jdW1lbnRfLmxlbmd0aCgp
OwotICByZXR1cm4gcGFyc2UoYmVnaW4sIGVuZCwgcm9vdCwgY29sbGVjdENvbW1lbnRzKTsKLX0K
LQotYm9vbCBSZWFkZXI6OnBhcnNlKHN0ZDo6aXN0cmVhbSYgaXMsIFZhbHVlJiByb290LCBib29s
IGNvbGxlY3RDb21tZW50cykgewotICAvLyBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8Y2hhcj4gYmVn
aW4oaXMpOwotICAvLyBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8Y2hhcj4gZW5kOwotICAvLyBUaG9z
ZSB3b3VsZCBhbGxvdyBzdHJlYW1lZCBpbnB1dCBmcm9tIGEgZmlsZSwgaWYgcGFyc2UoKSB3ZXJl
IGEKLSAgLy8gdGVtcGxhdGUgZnVuY3Rpb24uCi0KLSAgLy8gU2luY2UgU3RyaW5nIGlzIHJlZmVy
ZW5jZS1jb3VudGVkLCB0aGlzIGF0IGxlYXN0IGRvZXMgbm90Ci0gIC8vIGNyZWF0ZSBhbiBleHRy
YSBjb3B5LgotICBTdHJpbmcgZG9jOwotICBzdGQ6OmdldGxpbmUoaXMsIGRvYywgKGNoYXIpRU9G
KTsKLSAgcmV0dXJuIHBhcnNlKGRvYy5kYXRhKCksIGRvYy5kYXRhKCkgKyBkb2Muc2l6ZSgpLCBy
b290LCBjb2xsZWN0Q29tbWVudHMpOwotfQotCi1ib29sIFJlYWRlcjo6cGFyc2UoY29uc3QgY2hh
ciogYmVnaW5Eb2MsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZW5kRG9jLAotICAg
ICAgICAgICAgICAgICAgIFZhbHVlJiByb290LAotICAgICAgICAgICAgICAgICAgIGJvb2wgY29s
bGVjdENvbW1lbnRzKSB7Ci0gIGlmICghZmVhdHVyZXNfLmFsbG93Q29tbWVudHNfKSB7Ci0gICAg
Y29sbGVjdENvbW1lbnRzID0gZmFsc2U7Ci0gIH0KLQotICBiZWdpbl8gPSBiZWdpbkRvYzsKLSAg
ZW5kXyA9IGVuZERvYzsKLSAgY29sbGVjdENvbW1lbnRzXyA9IGNvbGxlY3RDb21tZW50czsKLSAg
Y3VycmVudF8gPSBiZWdpbl87Ci0gIGxhc3RWYWx1ZUVuZF8gPSBudWxscHRyOwotICBsYXN0VmFs
dWVfID0gbnVsbHB0cjsKLSAgY29tbWVudHNCZWZvcmVfLmNsZWFyKCk7Ci0gIGVycm9yc18uY2xl
YXIoKTsKLSAgd2hpbGUgKCFub2Rlc18uZW1wdHkoKSkKLSAgICBub2Rlc18ucG9wKCk7Ci0gIG5v
ZGVzXy5wdXNoKCZyb290KTsKLQotICBib29sIHN1Y2Nlc3NmdWwgPSByZWFkVmFsdWUoKTsKLSAg
VG9rZW4gdG9rZW47Ci0gIHNraXBDb21tZW50VG9rZW5zKHRva2VuKTsKLSAgaWYgKGNvbGxlY3RD
b21tZW50c18gJiYgIWNvbW1lbnRzQmVmb3JlXy5lbXB0eSgpKQotICAgIHJvb3Quc2V0Q29tbWVu
dChjb21tZW50c0JlZm9yZV8sIGNvbW1lbnRBZnRlcik7Ci0gIGlmIChmZWF0dXJlc18uc3RyaWN0
Um9vdF8pIHsKLSAgICBpZiAoIXJvb3QuaXNBcnJheSgpICYmICFyb290LmlzT2JqZWN0KCkpIHsK
LSAgICAgIC8vIFNldCBlcnJvciBsb2NhdGlvbiB0byBzdGFydCBvZiBkb2MsIGlkZWFsbHkgc2hv
dWxkIGJlIGZpcnN0IHRva2VuIGZvdW5kCi0gICAgICAvLyBpbiBkb2MKLSAgICAgIHRva2VuLnR5
cGVfID0gdG9rZW5FcnJvcjsKLSAgICAgIHRva2VuLnN0YXJ0XyA9IGJlZ2luRG9jOwotICAgICAg
dG9rZW4uZW5kXyA9IGVuZERvYzsKLSAgICAgIGFkZEVycm9yKAotICAgICAgICAgICJBIHZhbGlk
IEpTT04gZG9jdW1lbnQgbXVzdCBiZSBlaXRoZXIgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IHZhbHVl
LiIsCi0gICAgICAgICAgdG9rZW4pOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgfQot
ICByZXR1cm4gc3VjY2Vzc2Z1bDsKLX0KLQotYm9vbCBSZWFkZXI6OnJlYWRWYWx1ZSgpIHsKLSAg
Ly8gcmVhZFZhbHVlKCkgbWF5IGNhbGwgaXRzZWxmIG9ubHkgaWYgaXQgY2FsbHMgcmVhZE9iamVj
dCgpIG9yIFJlYWRBcnJheSgpLgotICAvLyBUaGVzZSBtZXRob2RzIGV4ZWN1dGUgbm9kZXNfLnB1
c2goKSBqdXN0IGJlZm9yZSBhbmQgbm9kZXNfLnBvcCkoKSBqdXN0Ci0gIC8vIGFmdGVyIGNhbGxp
bmcgcmVhZFZhbHVlKCkuIHBhcnNlKCkgZXhlY3V0ZXMgb25lIG5vZGVzXy5wdXNoKCksIHNvID4g
aW5zdGVhZAotICAvLyBvZiA+PS4KLSAgaWYgKG5vZGVzXy5zaXplKCkgPiBzdGFja0xpbWl0X2cp
Ci0gICAgdGhyb3dSdW50aW1lRXJyb3IoIkV4Y2VlZGVkIHN0YWNrTGltaXQgaW4gcmVhZFZhbHVl
KCkuIik7Ci0KLSAgVG9rZW4gdG9rZW47Ci0gIHNraXBDb21tZW50VG9rZW5zKHRva2VuKTsKLSAg
Ym9vbCBzdWNjZXNzZnVsID0gdHJ1ZTsKLQotICBpZiAoY29sbGVjdENvbW1lbnRzXyAmJiAhY29t
bWVudHNCZWZvcmVfLmVtcHR5KCkpIHsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRDb21tZW50KGNv
bW1lbnRzQmVmb3JlXywgY29tbWVudEJlZm9yZSk7Ci0gICAgY29tbWVudHNCZWZvcmVfLmNsZWFy
KCk7Ci0gIH0KLQotICBzd2l0Y2ggKHRva2VuLnR5cGVfKSB7Ci0gIGNhc2UgdG9rZW5PYmplY3RC
ZWdpbjoKLSAgICBzdWNjZXNzZnVsID0gcmVhZE9iamVjdCh0b2tlbik7Ci0gICAgY3VycmVudFZh
bHVlKCkuc2V0T2Zmc2V0TGltaXQoY3VycmVudF8gLSBiZWdpbl8pOwotICAgIGJyZWFrOwotICBj
YXNlIHRva2VuQXJyYXlCZWdpbjoKLSAgICBzdWNjZXNzZnVsID0gcmVhZEFycmF5KHRva2VuKTsK
LSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdChjdXJyZW50XyAtIGJlZ2luXyk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgdG9rZW5OdW1iZXI6Ci0gICAgc3VjY2Vzc2Z1bCA9IGRlY29kZU51
bWJlcih0b2tlbik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgdG9rZW5TdHJpbmc6Ci0gICAgc3VjY2Vz
c2Z1bCA9IGRlY29kZVN0cmluZyh0b2tlbik7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgdG9rZW5UcnVl
OiB7Ci0gICAgVmFsdWUgdih0cnVlKTsKLSAgICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZCh2
KTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdp
bl8pOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdp
bl8pOwotICB9IGJyZWFrOwotICBjYXNlIHRva2VuRmFsc2U6IHsKLSAgICBWYWx1ZSB2KGZhbHNl
KTsKLSAgICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZCh2KTsKLSAgICBjdXJyZW50VmFsdWUo
KS5zZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1
ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICB9IGJyZWFrOwotICBj
YXNlIHRva2VuTnVsbDogewotICAgIFZhbHVlIHY7Ci0gICAgY3VycmVudFZhbHVlKCkuc3dhcFBh
eWxvYWQodik7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRf
IC0gYmVnaW5fKTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRf
IC0gYmVnaW5fKTsKLSAgfSBicmVhazsKLSAgY2FzZSB0b2tlbkFycmF5U2VwYXJhdG9yOgotICBj
YXNlIHRva2VuT2JqZWN0RW5kOgotICBjYXNlIHRva2VuQXJyYXlFbmQ6Ci0gICAgaWYgKGZlYXR1
cmVzXy5hbGxvd0Ryb3BwZWROdWxsUGxhY2Vob2xkZXJzXykgewotICAgICAgLy8gIlVuLXJlYWQi
IHRoZSBjdXJyZW50IHRva2VuIGFuZCBtYXJrIHRoZSBjdXJyZW50IHZhbHVlIGFzIGEgbnVsbAot
ICAgICAgLy8gdG9rZW4uCi0gICAgICBjdXJyZW50Xy0tOwotICAgICAgVmFsdWUgdjsKLSAgICAg
IGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgICAgY3VycmVudFZhbHVlKCkuc2V0
T2Zmc2V0U3RhcnQoY3VycmVudF8gLSBiZWdpbl8gLSAxKTsKLSAgICAgIGN1cnJlbnRWYWx1ZSgp
LnNldE9mZnNldExpbWl0KGN1cnJlbnRfIC0gYmVnaW5fKTsKLSAgICAgIGJyZWFrOwotICAgIH0g
Ly8gRWxzZSwgZmFsbCB0aHJvdWdoLi4uCi0gIGRlZmF1bHQ6Ci0gICAgY3VycmVudFZhbHVlKCku
c2V0T2Zmc2V0U3RhcnQodG9rZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgICBjdXJyZW50VmFsdWUo
KS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVnaW5fKTsKLSAgICByZXR1cm4gYWRkRXJy
b3IoIlN5bnRheCBlcnJvcjogdmFsdWUsIG9iamVjdCBvciBhcnJheSBleHBlY3RlZC4iLCB0b2tl
bik7Ci0gIH0KLQotICBpZiAoY29sbGVjdENvbW1lbnRzXykgewotICAgIGxhc3RWYWx1ZUVuZF8g
PSBjdXJyZW50XzsKLSAgICBsYXN0VmFsdWVfID0gJmN1cnJlbnRWYWx1ZSgpOwotICB9Ci0KLSAg
cmV0dXJuIHN1Y2Nlc3NmdWw7Ci19Ci0KLXZvaWQgUmVhZGVyOjpza2lwQ29tbWVudFRva2VucyhU
b2tlbiYgdG9rZW4pIHsKLSAgaWYgKGZlYXR1cmVzXy5hbGxvd0NvbW1lbnRzXykgewotICAgIGRv
IHsKLSAgICAgIHJlYWRUb2tlbih0b2tlbik7Ci0gICAgfSB3aGlsZSAodG9rZW4udHlwZV8gPT0g
dG9rZW5Db21tZW50KTsKLSAgfSBlbHNlIHsKLSAgICByZWFkVG9rZW4odG9rZW4pOwotICB9Ci19
Ci0KLWJvb2wgUmVhZGVyOjpyZWFkVG9rZW4oVG9rZW4mIHRva2VuKSB7Ci0gIHNraXBTcGFjZXMo
KTsKLSAgdG9rZW4uc3RhcnRfID0gY3VycmVudF87Ci0gIENoYXIgYyA9IGdldE5leHRDaGFyKCk7
Ci0gIGJvb2wgb2sgPSB0cnVlOwotICBzd2l0Y2ggKGMpIHsKLSAgY2FzZSAneyc6Ci0gICAgdG9r
ZW4udHlwZV8gPSB0b2tlbk9iamVjdEJlZ2luOwotICAgIGJyZWFrOwotICBjYXNlICd9JzoKLSAg
ICB0b2tlbi50eXBlXyA9IHRva2VuT2JqZWN0RW5kOwotICAgIGJyZWFrOwotICBjYXNlICdbJzoK
LSAgICB0b2tlbi50eXBlXyA9IHRva2VuQXJyYXlCZWdpbjsKLSAgICBicmVhazsKLSAgY2FzZSAn
XSc6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbkFycmF5RW5kOwotICAgIGJyZWFrOwotICBjYXNl
ICciJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuU3RyaW5nOwotICAgIG9rID0gcmVhZFN0cmlu
ZygpOwotICAgIGJyZWFrOwotICBjYXNlICcvJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuQ29t
bWVudDsKLSAgICBvayA9IHJlYWRDb21tZW50KCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJzAnOgot
ICBjYXNlICcxJzoKLSAgY2FzZSAnMic6Ci0gIGNhc2UgJzMnOgotICBjYXNlICc0JzoKLSAgY2Fz
ZSAnNSc6Ci0gIGNhc2UgJzYnOgotICBjYXNlICc3JzoKLSAgY2FzZSAnOCc6Ci0gIGNhc2UgJzkn
OgotICBjYXNlICctJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuTnVtYmVyOwotICAgIHJlYWRO
dW1iZXIoKTsKLSAgICBicmVhazsKLSAgY2FzZSAndCc6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tl
blRydWU7Ci0gICAgb2sgPSBtYXRjaCgicnVlIiwgMyk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ2Yn
OgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5GYWxzZTsKLSAgICBvayA9IG1hdGNoKCJhbHNlIiwg
NCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ24nOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5OdWxs
OwotICAgIG9rID0gbWF0Y2goInVsbCIsIDMpOwotICAgIGJyZWFrOwotICBjYXNlICcsJzoKLSAg
ICB0b2tlbi50eXBlXyA9IHRva2VuQXJyYXlTZXBhcmF0b3I7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
JzonOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5NZW1iZXJTZXBhcmF0b3I7Ci0gICAgYnJlYWs7
Ci0gIGNhc2UgMDoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuRW5kT2ZTdHJlYW07Ci0gICAgYnJl
YWs7Ci0gIGRlZmF1bHQ6Ci0gICAgb2sgPSBmYWxzZTsKLSAgICBicmVhazsKLSAgfQotICBpZiAo
IW9rKQotICAgIHRva2VuLnR5cGVfID0gdG9rZW5FcnJvcjsKLSAgdG9rZW4uZW5kXyA9IGN1cnJl
bnRfOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSZWFkZXI6OnNraXBTcGFjZXMoKSB7Ci0g
IHdoaWxlIChjdXJyZW50XyAhPSBlbmRfKSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnRfOwotICAg
IGlmIChjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJykKLSAg
ICAgICsrY3VycmVudF87Ci0gICAgZWxzZQotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotYm9vbCBS
ZWFkZXI6Om1hdGNoKExvY2F0aW9uIHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoKSB7Ci0gIGlm
IChlbmRfIC0gY3VycmVudF8gPCBwYXR0ZXJuTGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsKLSAg
aW50IGluZGV4ID0gcGF0dGVybkxlbmd0aDsKLSAgd2hpbGUgKGluZGV4LS0pCi0gICAgaWYgKGN1
cnJlbnRfW2luZGV4XSAhPSBwYXR0ZXJuW2luZGV4XSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAg
Y3VycmVudF8gKz0gcGF0dGVybkxlbmd0aDsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVh
ZGVyOjpyZWFkQ29tbWVudCgpIHsKLSAgTG9jYXRpb24gY29tbWVudEJlZ2luID0gY3VycmVudF8g
LSAxOwotICBDaGFyIGMgPSBnZXROZXh0Q2hhcigpOwotICBib29sIHN1Y2Nlc3NmdWwgPSBmYWxz
ZTsKLSAgaWYgKGMgPT0gJyonKQotICAgIHN1Y2Nlc3NmdWwgPSByZWFkQ1N0eWxlQ29tbWVudCgp
OwotICBlbHNlIGlmIChjID09ICcvJykKLSAgICBzdWNjZXNzZnVsID0gcmVhZENwcFN0eWxlQ29t
bWVudCgpOwotICBpZiAoIXN1Y2Nlc3NmdWwpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChj
b2xsZWN0Q29tbWVudHNfKSB7Ci0gICAgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQgPSBjb21t
ZW50QmVmb3JlOwotICAgIGlmIChsYXN0VmFsdWVFbmRfICYmICFjb250YWluc05ld0xpbmUobGFz
dFZhbHVlRW5kXywgY29tbWVudEJlZ2luKSkgewotICAgICAgaWYgKGMgIT0gJyonIHx8ICFjb250
YWluc05ld0xpbmUoY29tbWVudEJlZ2luLCBjdXJyZW50XykpCi0gICAgICAgIHBsYWNlbWVudCA9
IGNvbW1lbnRBZnRlck9uU2FtZUxpbmU7Ci0gICAgfQotCi0gICAgYWRkQ29tbWVudChjb21tZW50
QmVnaW4sIGN1cnJlbnRfLCBwbGFjZW1lbnQpOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1T
dHJpbmcgUmVhZGVyOjpub3JtYWxpemVFT0woUmVhZGVyOjpMb2NhdGlvbiBiZWdpbiwgUmVhZGVy
OjpMb2NhdGlvbiBlbmQpIHsKLSAgU3RyaW5nIG5vcm1hbGl6ZWQ7Ci0gIG5vcm1hbGl6ZWQucmVz
ZXJ2ZShzdGF0aWNfY2FzdDxzaXplX3Q+KGVuZCAtIGJlZ2luKSk7Ci0gIFJlYWRlcjo6TG9jYXRp
b24gY3VycmVudCA9IGJlZ2luOwotICB3aGlsZSAoY3VycmVudCAhPSBlbmQpIHsKLSAgICBjaGFy
IGMgPSAqY3VycmVudCsrOwotICAgIGlmIChjID09ICdccicpIHsKLSAgICAgIGlmIChjdXJyZW50
ICE9IGVuZCAmJiAqY3VycmVudCA9PSAnXG4nKQotICAgICAgICAvLyBjb252ZXJ0IGRvcyBFT0wK
LSAgICAgICAgKytjdXJyZW50OwotICAgICAgLy8gY29udmVydCBNYWMgRU9MCi0gICAgICBub3Jt
YWxpemVkICs9ICdcbic7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG5vcm1hbGl6ZWQgKz0gYzsKLSAg
ICB9Ci0gIH0KLSAgcmV0dXJuIG5vcm1hbGl6ZWQ7Ci19Ci0KLXZvaWQgUmVhZGVyOjphZGRDb21t
ZW50KExvY2F0aW9uIGJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQpIHsK
LSAgYXNzZXJ0KGNvbGxlY3RDb21tZW50c18pOwotICBjb25zdCBTdHJpbmcmIG5vcm1hbGl6ZWQg
PSBub3JtYWxpemVFT0woYmVnaW4sIGVuZCk7Ci0gIGlmIChwbGFjZW1lbnQgPT0gY29tbWVudEFm
dGVyT25TYW1lTGluZSkgewotICAgIGFzc2VydChsYXN0VmFsdWVfICE9IG51bGxwdHIpOwotICAg
IGxhc3RWYWx1ZV8tPnNldENvbW1lbnQobm9ybWFsaXplZCwgcGxhY2VtZW50KTsKLSAgfSBlbHNl
IHsKLSAgICBjb21tZW50c0JlZm9yZV8gKz0gbm9ybWFsaXplZDsKLSAgfQotfQotCi1ib29sIFJl
YWRlcjo6cmVhZENTdHlsZUNvbW1lbnQoKSB7Ci0gIHdoaWxlICgoY3VycmVudF8gKyAxKSA8IGVu
ZF8pIHsKLSAgICBDaGFyIGMgPSBnZXROZXh0Q2hhcigpOwotICAgIGlmIChjID09ICcqJyAmJiAq
Y3VycmVudF8gPT0gJy8nKQotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIGdldE5leHRDaGFy
KCkgPT0gJy8nOwotfQotCi1ib29sIFJlYWRlcjo6cmVhZENwcFN0eWxlQ29tbWVudCgpIHsKLSAg
d2hpbGUgKGN1cnJlbnRfICE9IGVuZF8pIHsKLSAgICBDaGFyIGMgPSBnZXROZXh0Q2hhcigpOwot
ICAgIGlmIChjID09ICdcbicpCi0gICAgICBicmVhazsKLSAgICBpZiAoYyA9PSAnXHInKSB7Ci0g
ICAgICAvLyBDb25zdW1lIERPUyBFT0wuIEl0IHdpbGwgYmUgbm9ybWFsaXplZCBpbiBhZGRDb21t
ZW50LgotICAgICAgaWYgKGN1cnJlbnRfICE9IGVuZF8gJiYgKmN1cnJlbnRfID09ICdcbicpCi0g
ICAgICAgIGdldE5leHRDaGFyKCk7Ci0gICAgICAvLyBCcmVhayBvbiBNb2MgT1MgOSBFT0wuCi0g
ICAgICBicmVhazsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUmVhZGVy
OjpyZWFkTnVtYmVyKCkgewotICBjb25zdCBjaGFyKiBwID0gY3VycmVudF87Ci0gIGNoYXIgYyA9
ICcwJzsgLy8gc3RvcGdhcCBmb3IgYWxyZWFkeSBjb25zdW1lZCBjaGFyYWN0ZXIKLSAgLy8gaW50
ZWdyYWwgcGFydAotICB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgYyA9IChjdXJy
ZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAnXDAnOwotICAvLyBmcmFjdGlvbmFsIHBhcnQKLSAg
aWYgKGMgPT0gJy4nKSB7Ci0gICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAn
XDAnOwotICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgIGMgPSAoY3VycmVu
dF8gPSBwKSA8IGVuZF8gPyAqcCsrIDogJ1wwJzsKLSAgfQotICAvLyBleHBvbmVudGlhbCBwYXJ0
Ci0gIGlmIChjID09ICdlJyB8fCBjID09ICdFJykgewotICAgIGMgPSAoY3VycmVudF8gPSBwKSA8
IGVuZF8gPyAqcCsrIDogJ1wwJzsKLSAgICBpZiAoYyA9PSAnKycgfHwgYyA9PSAnLScpCi0gICAg
ICBjID0gKGN1cnJlbnRfID0gcCkgPCBlbmRfID8gKnArKyA6ICdcMCc7Ci0gICAgd2hpbGUgKGMg
Pj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpw
KysgOiAnXDAnOwotICB9Ci19Ci0KLWJvb2wgUmVhZGVyOjpyZWFkU3RyaW5nKCkgewotICBDaGFy
IGMgPSAnXDAnOwotICB3aGlsZSAoY3VycmVudF8gIT0gZW5kXykgewotICAgIGMgPSBnZXROZXh0
Q2hhcigpOwotICAgIGlmIChjID09ICdcXCcpCi0gICAgICBnZXROZXh0Q2hhcigpOwotICAgIGVs
c2UgaWYgKGMgPT0gJyInKQotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIGMgPT0gJyInOwot
fQotCi1ib29sIFJlYWRlcjo6cmVhZE9iamVjdChUb2tlbiYgdG9rZW4pIHsKLSAgVG9rZW4gdG9r
ZW5OYW1lOwotICBTdHJpbmcgbmFtZTsKLSAgVmFsdWUgaW5pdChvYmplY3RWYWx1ZSk7Ci0gIGN1
cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKGluaXQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZz
ZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICB3aGlsZSAocmVhZFRva2VuKHRva2Vu
TmFtZSkpIHsKLSAgICBib29sIGluaXRpYWxUb2tlbk9rID0gdHJ1ZTsKLSAgICB3aGlsZSAodG9r
ZW5OYW1lLnR5cGVfID09IHRva2VuQ29tbWVudCAmJiBpbml0aWFsVG9rZW5PaykKLSAgICAgIGlu
aXRpYWxUb2tlbk9rID0gcmVhZFRva2VuKHRva2VuTmFtZSk7Ci0gICAgaWYgKCFpbml0aWFsVG9r
ZW5PaykKLSAgICAgIGJyZWFrOwotICAgIGlmICh0b2tlbk5hbWUudHlwZV8gPT0gdG9rZW5PYmpl
Y3RFbmQgJiYgbmFtZS5lbXB0eSgpKSAvLyBlbXB0eSBvYmplY3QKLSAgICAgIHJldHVybiB0cnVl
OwotICAgIG5hbWUuY2xlYXIoKTsKLSAgICBpZiAodG9rZW5OYW1lLnR5cGVfID09IHRva2VuU3Ry
aW5nKSB7Ci0gICAgICBpZiAoIWRlY29kZVN0cmluZyh0b2tlbk5hbWUsIG5hbWUpKQotICAgICAg
ICByZXR1cm4gcmVjb3ZlckZyb21FcnJvcih0b2tlbk9iamVjdEVuZCk7Ci0gICAgfSBlbHNlIGlm
ICh0b2tlbk5hbWUudHlwZV8gPT0gdG9rZW5OdW1iZXIgJiYgZmVhdHVyZXNfLmFsbG93TnVtZXJp
Y0tleXNfKSB7Ci0gICAgICBWYWx1ZSBudW1iZXJOYW1lOwotICAgICAgaWYgKCFkZWNvZGVOdW1i
ZXIodG9rZW5OYW1lLCBudW1iZXJOYW1lKSkKLSAgICAgICAgcmV0dXJuIHJlY292ZXJGcm9tRXJy
b3IodG9rZW5PYmplY3RFbmQpOwotICAgICAgbmFtZSA9IFN0cmluZyhudW1iZXJOYW1lLmFzQ1N0
cmluZygpKTsKLSAgICB9IGVsc2UgewotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgVG9rZW4g
Y29sb247Ci0gICAgaWYgKCFyZWFkVG9rZW4oY29sb24pIHx8IGNvbG9uLnR5cGVfICE9IHRva2Vu
TWVtYmVyU2VwYXJhdG9yKSB7Ci0gICAgICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNz
aW5nICc6JyBhZnRlciBvYmplY3QgbWVtYmVyIG5hbWUiLCBjb2xvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW5PYmplY3RFbmQpOwotICAgIH0KLSAgICBWYWx1ZSYgdmFs
dWUgPSBjdXJyZW50VmFsdWUoKVtuYW1lXTsKLSAgICBub2Rlc18ucHVzaCgmdmFsdWUpOwotICAg
IGJvb2wgb2sgPSByZWFkVmFsdWUoKTsKLSAgICBub2Rlc18ucG9wKCk7Ci0gICAgaWYgKCFvaykg
Ly8gZXJyb3IgYWxyZWFkeSBzZXQKLSAgICAgIHJldHVybiByZWNvdmVyRnJvbUVycm9yKHRva2Vu
T2JqZWN0RW5kKTsKLQotICAgIFRva2VuIGNvbW1hOwotICAgIGlmICghcmVhZFRva2VuKGNvbW1h
KSB8fAotICAgICAgICAoY29tbWEudHlwZV8gIT0gdG9rZW5PYmplY3RFbmQgJiYgY29tbWEudHlw
ZV8gIT0gdG9rZW5BcnJheVNlcGFyYXRvciAmJgotICAgICAgICAgY29tbWEudHlwZV8gIT0gdG9r
ZW5Db21tZW50KSkgewotICAgICAgcmV0dXJuIGFkZEVycm9yQW5kUmVjb3ZlcigiTWlzc2luZyAn
LCcgb3IgJ30nIGluIG9iamVjdCBkZWNsYXJhdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hLCB0b2tlbk9iamVjdEVuZCk7Ci0gICAgfQotICAgIGJvb2wgZmluYWxp
emVUb2tlbk9rID0gdHJ1ZTsKLSAgICB3aGlsZSAoY29tbWEudHlwZV8gPT0gdG9rZW5Db21tZW50
ICYmIGZpbmFsaXplVG9rZW5PaykKLSAgICAgIGZpbmFsaXplVG9rZW5PayA9IHJlYWRUb2tlbihj
b21tYSk7Ci0gICAgaWYgKGNvbW1hLnR5cGVfID09IHRva2VuT2JqZWN0RW5kKQotICAgICAgcmV0
dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGFkZEVycm9yQW5kUmVjb3ZlcigiTWlzc2luZyAnfScg
b3Igb2JqZWN0IG1lbWJlciBuYW1lIiwgdG9rZW5OYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuT2JqZWN0RW5kKTsKLX0KLQotYm9vbCBSZWFkZXI6OnJlYWRBcnJheShUb2tl
biYgdG9rZW4pIHsKLSAgVmFsdWUgaW5pdChhcnJheVZhbHVlKTsKLSAgY3VycmVudFZhbHVlKCku
c3dhcFBheWxvYWQoaW5pdCk7Ci0gIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2Vu
LnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIHNraXBTcGFjZXMoKTsKLSAgaWYgKGN1cnJlbnRfICE9IGVu
ZF8gJiYgKmN1cnJlbnRfID09ICddJykgLy8gZW1wdHkgYXJyYXkKLSAgewotICAgIFRva2VuIGVu
ZEFycmF5OwotICAgIHJlYWRUb2tlbihlbmRBcnJheSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0K
LSAgaW50IGluZGV4ID0gMDsKLSAgZm9yICg7OykgewotICAgIFZhbHVlJiB2YWx1ZSA9IGN1cnJl
bnRWYWx1ZSgpW2luZGV4KytdOwotICAgIG5vZGVzXy5wdXNoKCZ2YWx1ZSk7Ci0gICAgYm9vbCBv
ayA9IHJlYWRWYWx1ZSgpOwotICAgIG5vZGVzXy5wb3AoKTsKLSAgICBpZiAoIW9rKSAvLyBlcnJv
ciBhbHJlYWR5IHNldAotICAgICAgcmV0dXJuIHJlY292ZXJGcm9tRXJyb3IodG9rZW5BcnJheUVu
ZCk7Ci0KLSAgICBUb2tlbiBjdXJyZW50VG9rZW47Ci0gICAgLy8gQWNjZXB0IENvbW1lbnQgYWZ0
ZXIgbGFzdCBpdGVtIGluIHRoZSBhcnJheS4KLSAgICBvayA9IHJlYWRUb2tlbihjdXJyZW50VG9r
ZW4pOwotICAgIHdoaWxlIChjdXJyZW50VG9rZW4udHlwZV8gPT0gdG9rZW5Db21tZW50ICYmIG9r
KSB7Ci0gICAgICBvayA9IHJlYWRUb2tlbihjdXJyZW50VG9rZW4pOwotICAgIH0KLSAgICBib29s
IGJhZFRva2VuVHlwZSA9IChjdXJyZW50VG9rZW4udHlwZV8gIT0gdG9rZW5BcnJheVNlcGFyYXRv
ciAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbi50eXBlXyAhPSB0b2tl
bkFycmF5RW5kKTsKLSAgICBpZiAoIW9rIHx8IGJhZFRva2VuVHlwZSkgewotICAgICAgcmV0dXJu
IGFkZEVycm9yQW5kUmVjb3ZlcigiTWlzc2luZyAnLCcgb3IgJ10nIGluIGFycmF5IGRlY2xhcmF0
aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuLCB0b2tl
bkFycmF5RW5kKTsKLSAgICB9Ci0gICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlXyA9PSB0b2tlbkFy
cmF5RW5kKQotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVh
ZGVyOjpkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuKSB7Ci0gIFZhbHVlIGRlY29kZWQ7Ci0gIGlm
ICghZGVjb2RlTnVtYmVyKHRva2VuLCBkZWNvZGVkKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGN1
cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKGRlY29kZWQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRP
ZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICBjdXJyZW50VmFsdWUoKS5zZXRP
ZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVnaW5fKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgUmVhZGVyOjpkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCkgewot
ICAvLyBBdHRlbXB0cyB0byBwYXJzZSB0aGUgbnVtYmVyIGFzIGFuIGludGVnZXIuIElmIHRoZSBu
dW1iZXIgaXMKLSAgLy8gbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc3VwcG9ydGVkIHZhbHVlIG9m
IGFuIGludGVnZXIgdGhlbgotICAvLyB3ZSBkZWNvZGUgdGhlIG51bWJlciBhcyBhIGRvdWJsZS4K
LSAgTG9jYXRpb24gY3VycmVudCA9IHRva2VuLnN0YXJ0XzsKLSAgYm9vbCBpc05lZ2F0aXZlID0g
KmN1cnJlbnQgPT0gJy0nOwotICBpZiAoaXNOZWdhdGl2ZSkKLSAgICArK2N1cnJlbnQ7Ci0gIC8v
IFRPRE86IEhlbHAgdGhlIGNvbXBpbGVyIGRvIHRoZSBkaXYgYW5kIG1vZCBhdCBjb21waWxlIHRp
bWUgb3IgZ2V0IHJpZCBvZgotICAvLyB0aGVtLgotICBWYWx1ZTo6TGFyZ2VzdFVJbnQgbWF4SW50
ZWdlclZhbHVlID0KLSAgICAgIGlzTmVnYXRpdmUgPyBWYWx1ZTo6TGFyZ2VzdFVJbnQoVmFsdWU6
Om1heExhcmdlc3RJbnQpICsgMQotICAgICAgICAgICAgICAgICA6IFZhbHVlOjptYXhMYXJnZXN0
VUludDsKLSAgVmFsdWU6Okxhcmdlc3RVSW50IHRocmVzaG9sZCA9IG1heEludGVnZXJWYWx1ZSAv
IDEwOwotICBWYWx1ZTo6TGFyZ2VzdFVJbnQgdmFsdWUgPSAwOwotICB3aGlsZSAoY3VycmVudCA8
IHRva2VuLmVuZF8pIHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIGlmIChjIDwgJzAn
IHx8IGMgPiAnOScpCi0gICAgICByZXR1cm4gZGVjb2RlRG91YmxlKHRva2VuLCBkZWNvZGVkKTsK
LSAgICBhdXRvIGRpZ2l0KHN0YXRpY19jYXN0PFZhbHVlOjpVSW50PihjIC0gJzAnKSk7Ci0gICAg
aWYgKHZhbHVlID49IHRocmVzaG9sZCkgewotICAgICAgLy8gV2UndmUgaGl0IG9yIGV4Y2VlZGVk
IHRoZSBtYXggdmFsdWUgZGl2aWRlZCBieSAxMCAocm91bmRlZCBkb3duKS4gSWYKLSAgICAgIC8v
IGEpIHdlJ3ZlIG9ubHkganVzdCB0b3VjaGVkIHRoZSBsaW1pdCwgYikgdGhpcyBpcyB0aGUgbGFz
dCBkaWdpdCwgYW5kCi0gICAgICAvLyBjKSBpdCdzIHNtYWxsIGVub3VnaCB0byBmaXQgaW4gdGhh
dCByb3VuZGluZyBkZWx0YSwgd2UncmUgb2theS4KLSAgICAgIC8vIE90aGVyd2lzZSB0cmVhdCB0
aGlzIG51bWJlciBhcyBhIGRvdWJsZSB0byBhdm9pZCBvdmVyZmxvdy4KLSAgICAgIGlmICh2YWx1
ZSA+IHRocmVzaG9sZCB8fCBjdXJyZW50ICE9IHRva2VuLmVuZF8gfHwKLSAgICAgICAgICBkaWdp
dCA+IG1heEludGVnZXJWYWx1ZSAlIDEwKSB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVEb3VibGUo
dG9rZW4sIGRlY29kZWQpOwotICAgICAgfQotICAgIH0KLSAgICB2YWx1ZSA9IHZhbHVlICogMTAg
KyBkaWdpdDsKLSAgfQotICBpZiAoaXNOZWdhdGl2ZSAmJiB2YWx1ZSA9PSBtYXhJbnRlZ2VyVmFs
dWUpCi0gICAgZGVjb2RlZCA9IFZhbHVlOjptaW5MYXJnZXN0SW50OwotICBlbHNlIGlmIChpc05l
Z2F0aXZlKQotICAgIGRlY29kZWQgPSAtVmFsdWU6Okxhcmdlc3RJbnQodmFsdWUpOwotICBlbHNl
IGlmICh2YWx1ZSA8PSBWYWx1ZTo6TGFyZ2VzdFVJbnQoVmFsdWU6Om1heEludCkpCi0gICAgZGVj
b2RlZCA9IFZhbHVlOjpMYXJnZXN0SW50KHZhbHVlKTsKLSAgZWxzZQotICAgIGRlY29kZWQgPSB2
YWx1ZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZGVyOjpkZWNvZGVEb3VibGUoVG9r
ZW4mIHRva2VuKSB7Ci0gIFZhbHVlIGRlY29kZWQ7Ci0gIGlmICghZGVjb2RlRG91YmxlKHRva2Vu
LCBkZWNvZGVkKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXls
b2FkKGRlY29kZWQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFy
dF8gLSBiZWdpbl8pOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5lbmRf
IC0gYmVnaW5fKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZGVyOjpkZWNvZGVEb3Vi
bGUoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCkgewotICBkb3VibGUgdmFsdWUgPSAwOwot
ICBTdHJpbmcgYnVmZmVyKHRva2VuLnN0YXJ0XywgdG9rZW4uZW5kXyk7Ci0gIElTdHJpbmdTdHJl
YW0gaXMoYnVmZmVyKTsKLSAgaWYgKCEoaXMgPj4gdmFsdWUpKQotICAgIHJldHVybiBhZGRFcnJv
cigKLSAgICAgICAgIiciICsgU3RyaW5nKHRva2VuLnN0YXJ0XywgdG9rZW4uZW5kXykgKyAiJyBp
cyBub3QgYSBudW1iZXIuIiwgdG9rZW4pOwotICBkZWNvZGVkID0gdmFsdWU7Ci0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIFJlYWRlcjo6ZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbikgewotICBT
dHJpbmcgZGVjb2RlZF9zdHJpbmc7Ci0gIGlmICghZGVjb2RlU3RyaW5nKHRva2VuLCBkZWNvZGVk
X3N0cmluZykpCi0gICAgcmV0dXJuIGZhbHNlOwotICBWYWx1ZSBkZWNvZGVkKGRlY29kZWRfc3Ry
aW5nKTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJlbnRW
YWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJlbnRW
YWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBSZWFkZXI6OmRlY29kZVN0cmluZyhUb2tlbiYgdG9rZW4sIFN0cmluZyYg
ZGVjb2RlZCkgewotICBkZWNvZGVkLnJlc2VydmUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih0b2tlbi5l
bmRfIC0gdG9rZW4uc3RhcnRfIC0gMikpOwotICBMb2NhdGlvbiBjdXJyZW50ID0gdG9rZW4uc3Rh
cnRfICsgMTsgLy8gc2tpcCAnIicKLSAgTG9jYXRpb24gZW5kID0gdG9rZW4uZW5kXyAtIDE7ICAg
ICAgIC8vIGRvIG5vdCBpbmNsdWRlICciJwotICB3aGlsZSAoY3VycmVudCAhPSBlbmQpIHsKLSAg
ICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIGlmIChjID09ICciJykKLSAgICAgIGJyZWFrOwot
ICAgIGVsc2UgaWYgKGMgPT0gJ1xcJykgewotICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAg
ICAgICByZXR1cm4gYWRkRXJyb3IoIkVtcHR5IGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmciLCB0
b2tlbiwgY3VycmVudCk7Ci0gICAgICBDaGFyIGVzY2FwZSA9ICpjdXJyZW50Kys7Ci0gICAgICBz
d2l0Y2ggKGVzY2FwZSkgewotICAgICAgY2FzZSAnIic6Ci0gICAgICAgIGRlY29kZWQgKz0gJyIn
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJy8nOgotICAgICAgICBkZWNvZGVkICs9ICcv
JzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdcXCc6Ci0gICAgICAgIGRlY29kZWQgKz0g
J1xcJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdiJzoKLSAgICAgICAgZGVjb2RlZCAr
PSAnXGInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2YnOgotICAgICAgICBkZWNvZGVk
ICs9ICdcZic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnbic6Ci0gICAgICAgIGRlY29k
ZWQgKz0gJ1xuJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdyJzoKLSAgICAgICAgZGVj
b2RlZCArPSAnXHInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3QnOgotICAgICAgICBk
ZWNvZGVkICs9ICdcdCc7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAndSc6IHsKLSAgICAg
ICAgdW5zaWduZWQgaW50IHVuaWNvZGU7Ci0gICAgICAgIGlmICghZGVjb2RlVW5pY29kZUNvZGVQ
b2ludCh0b2tlbiwgY3VycmVudCwgZW5kLCB1bmljb2RlKSkKLSAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGRlY29kZWQgKz0gY29kZVBvaW50VG9VVEY4KHVuaWNvZGUpOwotICAgICAg
fSBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBhZGRFcnJvcigiQmFkIGVz
Y2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmciLCB0b2tlbiwgY3VycmVudCk7Ci0gICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgIGRlY29kZWQgKz0gYzsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgUmVhZGVyOjpkZWNvZGVVbmljb2RlQ29kZVBvaW50KFRva2VuJiB0b2tlbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uJiBjdXJyZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gZW5kLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50JiB1bmljb2RlKSB7Ci0K
LSAgaWYgKCFkZWNvZGVVbmljb2RlRXNjYXBlU2VxdWVuY2UodG9rZW4sIGN1cnJlbnQsIGVuZCwg
dW5pY29kZSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAodW5pY29kZSA+PSAweEQ4MDAgJiYg
dW5pY29kZSA8PSAweERCRkYpIHsKLSAgICAvLyBzdXJyb2dhdGUgcGFpcnMKLSAgICBpZiAoZW5k
IC0gY3VycmVudCA8IDYpCi0gICAgICByZXR1cm4gYWRkRXJyb3IoCi0gICAgICAgICAgImFkZGl0
aW9uYWwgc2l4IGNoYXJhY3RlcnMgZXhwZWN0ZWQgdG8gcGFyc2UgdW5pY29kZSBzdXJyb2dhdGUg
cGFpci4iLAotICAgICAgICAgIHRva2VuLCBjdXJyZW50KTsKLSAgICBpZiAoKihjdXJyZW50Kysp
ID09ICdcXCcgJiYgKihjdXJyZW50KyspID09ICd1JykgewotICAgICAgdW5zaWduZWQgaW50IHN1
cnJvZ2F0ZVBhaXI7Ci0gICAgICBpZiAoZGVjb2RlVW5pY29kZUVzY2FwZVNlcXVlbmNlKHRva2Vu
LCBjdXJyZW50LCBlbmQsIHN1cnJvZ2F0ZVBhaXIpKSB7Ci0gICAgICAgIHVuaWNvZGUgPSAweDEw
MDAwICsgKCh1bmljb2RlICYgMHgzRkYpIDw8IDEwKSArIChzdXJyb2dhdGVQYWlyICYgMHgzRkYp
OwotICAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9IGVsc2UKLSAgICAg
IHJldHVybiBhZGRFcnJvcigiZXhwZWN0aW5nIGFub3RoZXIgXFx1IHRva2VuIHRvIGJlZ2luIHRo
ZSBzZWNvbmQgaGFsZiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgImEgdW5pY29kZSBzdXJy
b2dhdGUgcGFpciIsCi0gICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIGN1cnJlbnQpOwotICB9
Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFJlYWRlcjo6ZGVjb2RlVW5pY29kZUVzY2FwZVNl
cXVlbmNlKFRva2VuJiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTG9jYXRpb24mIGN1cnJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50JiByZXRfdW5pY29kZSkgewotICBpZiAoZW5kIC0gY3VycmVu
dCA8IDQpCi0gICAgcmV0dXJuIGFkZEVycm9yKAotICAgICAgICAiQmFkIHVuaWNvZGUgZXNjYXBl
IHNlcXVlbmNlIGluIHN0cmluZzogZm91ciBkaWdpdHMgZXhwZWN0ZWQuIiwgdG9rZW4sCi0gICAg
ICAgIGN1cnJlbnQpOwotICBpbnQgdW5pY29kZSA9IDA7Ci0gIGZvciAoaW50IGluZGV4ID0gMDsg
aW5kZXggPCA0OyArK2luZGV4KSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnQrKzsKLSAgICB1bmlj
b2RlICo9IDE2OwotICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgIHVuaWNvZGUg
Kz0gYyAtICcwJzsKLSAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgIHVu
aWNvZGUgKz0gYyAtICdhJyArIDEwOwotICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0Yn
KQotICAgICAgdW5pY29kZSArPSBjIC0gJ0EnICsgMTA7Ci0gICAgZWxzZQotICAgICAgcmV0dXJu
IGFkZEVycm9yKAotICAgICAgICAgICJCYWQgdW5pY29kZSBlc2NhcGUgc2VxdWVuY2UgaW4gc3Ry
aW5nOiBoZXhhZGVjaW1hbCBkaWdpdCBleHBlY3RlZC4iLAotICAgICAgICAgIHRva2VuLCBjdXJy
ZW50KTsKLSAgfQotICByZXRfdW5pY29kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5p
Y29kZSk7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIFJlYWRlcjo6YWRkRXJyb3IoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBUb2tlbiYgdG9rZW4sIExvY2F0aW9uIGV4dHJhKSB7Ci0gIEVycm9y
SW5mbyBpbmZvOwotICBpbmZvLnRva2VuXyA9IHRva2VuOwotICBpbmZvLm1lc3NhZ2VfID0gbWVz
c2FnZTsKLSAgaW5mby5leHRyYV8gPSBleHRyYTsKLSAgZXJyb3JzXy5wdXNoX2JhY2soaW5mbyk7
Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZWFkZXI6OnJlY292ZXJGcm9tRXJyb3IoVG9r
ZW5UeXBlIHNraXBVbnRpbFRva2VuKSB7Ci0gIHNpemVfdCBjb25zdCBlcnJvckNvdW50ID0gZXJy
b3JzXy5zaXplKCk7Ci0gIFRva2VuIHNraXA7Ci0gIGZvciAoOzspIHsKLSAgICBpZiAoIXJlYWRU
b2tlbihza2lwKSkKLSAgICAgIGVycm9yc18ucmVzaXplKGVycm9yQ291bnQpOyAvLyBkaXNjYXJk
IGVycm9ycyBjYXVzZWQgYnkgcmVjb3ZlcnkKLSAgICBpZiAoc2tpcC50eXBlXyA9PSBza2lwVW50
aWxUb2tlbiB8fCBza2lwLnR5cGVfID09IHRva2VuRW5kT2ZTdHJlYW0pCi0gICAgICBicmVhazsK
LSAgfQotICBlcnJvcnNfLnJlc2l6ZShlcnJvckNvdW50KTsKLSAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIFJlYWRlcjo6YWRkRXJyb3JBbmRSZWNvdmVyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4mIHRva2VuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUb2tlblR5cGUgc2tpcFVudGlsVG9rZW4pIHsKLSAgYWRk
RXJyb3IobWVzc2FnZSwgdG9rZW4pOwotICByZXR1cm4gcmVjb3ZlckZyb21FcnJvcihza2lwVW50
aWxUb2tlbik7Ci19Ci0KLVZhbHVlJiBSZWFkZXI6OmN1cnJlbnRWYWx1ZSgpIHsgcmV0dXJuICoo
bm9kZXNfLnRvcCgpKTsgfQotCi1SZWFkZXI6OkNoYXIgUmVhZGVyOjpnZXROZXh0Q2hhcigpIHsK
LSAgaWYgKGN1cnJlbnRfID09IGVuZF8pCi0gICAgcmV0dXJuIDA7Ci0gIHJldHVybiAqY3VycmVu
dF8rKzsKLX0KLQotdm9pZCBSZWFkZXI6OmdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2NhdGlv
biBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBs
aW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGNvbHVtbikg
Y29uc3QgewotICBMb2NhdGlvbiBjdXJyZW50ID0gYmVnaW5fOwotICBMb2NhdGlvbiBsYXN0TGlu
ZVN0YXJ0ID0gY3VycmVudDsKLSAgbGluZSA9IDA7Ci0gIHdoaWxlIChjdXJyZW50IDwgbG9jYXRp
b24gJiYgY3VycmVudCAhPSBlbmRfKSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnQrKzsKLSAgICBp
ZiAoYyA9PSAnXHInKSB7Ci0gICAgICBpZiAoKmN1cnJlbnQgPT0gJ1xuJykKLSAgICAgICAgKytj
dXJyZW50OwotICAgICAgbGFzdExpbmVTdGFydCA9IGN1cnJlbnQ7Ci0gICAgICArK2xpbmU7Ci0g
ICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKLSAgICAgIGxhc3RMaW5lU3RhcnQgPSBjdXJyZW50
OwotICAgICAgKytsaW5lOwotICAgIH0KLSAgfQotICAvLyBjb2x1bW4gJiBsaW5lIHN0YXJ0IGF0
IDEKLSAgY29sdW1uID0gaW50KGxvY2F0aW9uIC0gbGFzdExpbmVTdGFydCkgKyAxOwotICArK2xp
bmU7Ci19Ci0KLVN0cmluZyBSZWFkZXI6OmdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2NhdGlv
biBsb2NhdGlvbikgY29uc3QgewotICBpbnQgbGluZSwgY29sdW1uOwotICBnZXRMb2NhdGlvbkxp
bmVBbmRDb2x1bW4obG9jYXRpb24sIGxpbmUsIGNvbHVtbik7Ci0gIGNoYXIgYnVmZmVyWzE4ICsg
MTYgKyAxNiArIDFdOwotICBqc29uY3BwX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
ICJMaW5lICVkLCBDb2x1bW4gJWQiLCBsaW5lLCBjb2x1bW4pOwotICByZXR1cm4gYnVmZmVyOwot
fQotCi0vLyBEZXByZWNhdGVkLiBQcmVzZXJ2ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkK
LVN0cmluZyBSZWFkZXI6OmdldEZvcm1hdGVkRXJyb3JNZXNzYWdlcygpIGNvbnN0IHsKLSAgcmV0
dXJuIGdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKTsKLX0KLQotU3RyaW5nIFJlYWRlcjo6Z2V0
Rm9ybWF0dGVkRXJyb3JNZXNzYWdlcygpIGNvbnN0IHsKLSAgU3RyaW5nIGZvcm1hdHRlZE1lc3Nh
Z2U7Ci0gIGZvciAoY29uc3QgYXV0byYgZXJyb3IgOiBlcnJvcnNfKSB7Ci0gICAgZm9ybWF0dGVk
TWVzc2FnZSArPQotICAgICAgICAiKiAiICsgZ2V0TG9jYXRpb25MaW5lQW5kQ29sdW1uKGVycm9y
LnRva2VuXy5zdGFydF8pICsgIlxuIjsKLSAgICBmb3JtYXR0ZWRNZXNzYWdlICs9ICIgICIgKyBl
cnJvci5tZXNzYWdlXyArICJcbiI7Ci0gICAgaWYgKGVycm9yLmV4dHJhXykKLSAgICAgIGZvcm1h
dHRlZE1lc3NhZ2UgKz0KLSAgICAgICAgICAiU2VlICIgKyBnZXRMb2NhdGlvbkxpbmVBbmRDb2x1
bW4oZXJyb3IuZXh0cmFfKSArICIgZm9yIGRldGFpbC5cbiI7Ci0gIH0KLSAgcmV0dXJuIGZvcm1h
dHRlZE1lc3NhZ2U7Ci19Ci0KLXN0ZDo6dmVjdG9yPFJlYWRlcjo6U3RydWN0dXJlZEVycm9yPiBS
ZWFkZXI6OmdldFN0cnVjdHVyZWRFcnJvcnMoKSBjb25zdCB7Ci0gIHN0ZDo6dmVjdG9yPFJlYWRl
cjo6U3RydWN0dXJlZEVycm9yPiBhbGxFcnJvcnM7Ci0gIGZvciAoY29uc3QgYXV0byYgZXJyb3Ig
OiBlcnJvcnNfKSB7Ci0gICAgUmVhZGVyOjpTdHJ1Y3R1cmVkRXJyb3Igc3RydWN0dXJlZDsKLSAg
ICBzdHJ1Y3R1cmVkLm9mZnNldF9zdGFydCA9IGVycm9yLnRva2VuXy5zdGFydF8gLSBiZWdpbl87
Ci0gICAgc3RydWN0dXJlZC5vZmZzZXRfbGltaXQgPSBlcnJvci50b2tlbl8uZW5kXyAtIGJlZ2lu
XzsKLSAgICBzdHJ1Y3R1cmVkLm1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlXzsKLSAgICBhbGxFcnJv
cnMucHVzaF9iYWNrKHN0cnVjdHVyZWQpOwotICB9Ci0gIHJldHVybiBhbGxFcnJvcnM7Ci19Ci0K
LWJvb2wgUmVhZGVyOjpwdXNoRXJyb3IoY29uc3QgVmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIHsKLSAgcHRyZGlmZl90IGNvbnN0IGxlbmd0aCA9IGVuZF8gLSBiZWdpbl87Ci0g
IGlmICh2YWx1ZS5nZXRPZmZzZXRTdGFydCgpID4gbGVuZ3RoIHx8IHZhbHVlLmdldE9mZnNldExp
bWl0KCkgPiBsZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwotICBUb2tlbiB0b2tlbjsKLSAgdG9r
ZW4udHlwZV8gPSB0b2tlbkVycm9yOwotICB0b2tlbi5zdGFydF8gPSBiZWdpbl8gKyB2YWx1ZS5n
ZXRPZmZzZXRTdGFydCgpOwotICB0b2tlbi5lbmRfID0gYmVnaW5fICsgdmFsdWUuZ2V0T2Zmc2V0
TGltaXQoKTsKLSAgRXJyb3JJbmZvIGluZm87Ci0gIGluZm8udG9rZW5fID0gdG9rZW47Ci0gIGlu
Zm8ubWVzc2FnZV8gPSBtZXNzYWdlOwotICBpbmZvLmV4dHJhXyA9IG51bGxwdHI7Ci0gIGVycm9y
c18ucHVzaF9iYWNrKGluZm8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBSZWFkZXI6OnB1
c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWUmIGV4
dHJhKSB7Ci0gIHB0cmRpZmZfdCBjb25zdCBsZW5ndGggPSBlbmRfIC0gYmVnaW5fOwotICBpZiAo
dmFsdWUuZ2V0T2Zmc2V0U3RhcnQoKSA+IGxlbmd0aCB8fCB2YWx1ZS5nZXRPZmZzZXRMaW1pdCgp
ID4gbGVuZ3RoIHx8Ci0gICAgICBleHRyYS5nZXRPZmZzZXRMaW1pdCgpID4gbGVuZ3RoKQotICAg
IHJldHVybiBmYWxzZTsKLSAgVG9rZW4gdG9rZW47Ci0gIHRva2VuLnR5cGVfID0gdG9rZW5FcnJv
cjsKLSAgdG9rZW4uc3RhcnRfID0gYmVnaW5fICsgdmFsdWUuZ2V0T2Zmc2V0U3RhcnQoKTsKLSAg
dG9rZW4uZW5kXyA9IGJlZ2luXyArIHZhbHVlLmdldE9mZnNldExpbWl0KCk7Ci0gIEVycm9ySW5m
byBpbmZvOwotICBpbmZvLnRva2VuXyA9IHRva2VuOwotICBpbmZvLm1lc3NhZ2VfID0gbWVzc2Fn
ZTsKLSAgaW5mby5leHRyYV8gPSBiZWdpbl8gKyBleHRyYS5nZXRPZmZzZXRTdGFydCgpOwotICBl
cnJvcnNfLnB1c2hfYmFjayhpbmZvKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUmVhZGVy
Ojpnb29kKCkgY29uc3QgeyByZXR1cm4gZXJyb3JzXy5lbXB0eSgpOyB9Ci0KLS8vIE9yaWdpbmFs
bHkgY29waWVkIGZyb20gdGhlIEZlYXR1cmVzIGNsYXNzIChub3cgZGVwcmVjYXRlZCksIHVzZWQg
aW50ZXJuYWxseQotLy8gZm9yIGZlYXR1cmVzIGltcGxlbWVudGF0aW9uLgotY2xhc3MgT3VyRmVh
dHVyZXMgewotcHVibGljOgotICBzdGF0aWMgT3VyRmVhdHVyZXMgYWxsKCk7Ci0gIGJvb2wgYWxs
b3dDb21tZW50c187Ci0gIGJvb2wgc3RyaWN0Um9vdF87Ci0gIGJvb2wgYWxsb3dEcm9wcGVkTnVs
bFBsYWNlaG9sZGVyc187Ci0gIGJvb2wgYWxsb3dOdW1lcmljS2V5c187Ci0gIGJvb2wgYWxsb3dT
aW5nbGVRdW90ZXNfOwotICBib29sIGZhaWxJZkV4dHJhXzsKLSAgYm9vbCByZWplY3REdXBLZXlz
XzsKLSAgYm9vbCBhbGxvd1NwZWNpYWxGbG9hdHNfOwotICBzaXplX3Qgc3RhY2tMaW1pdF87Ci19
OyAvLyBPdXJGZWF0dXJlcwotCi1PdXJGZWF0dXJlcyBPdXJGZWF0dXJlczo6YWxsKCkgeyByZXR1
cm4ge307IH0KLQotLy8gSW1wbGVtZW50YXRpb24gb2YgY2xhc3MgUmVhZGVyCi0vLyAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBPcmlnaW5hbGx5IGNvcGllZCBmcm9tIHRo
ZSBSZWFkZXIgY2xhc3MgKG5vdyBkZXByZWNhdGVkKSwgdXNlZCBpbnRlcm5hbGx5Ci0vLyBmb3Ig
aW1wbGVtZW50aW5nIEpTT04gcmVhZGluZy4KLWNsYXNzIE91clJlYWRlciB7Ci1wdWJsaWM6Ci0g
IHR5cGVkZWYgY2hhciBDaGFyOwotICB0eXBlZGVmIGNvbnN0IENoYXIqIExvY2F0aW9uOwotICBz
dHJ1Y3QgU3RydWN0dXJlZEVycm9yIHsKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0X3N0YXJ0OwotICAg
IHB0cmRpZmZfdCBvZmZzZXRfbGltaXQ7Ci0gICAgU3RyaW5nIG1lc3NhZ2U7Ci0gIH07Ci0KLSAg
T3VyUmVhZGVyKE91ckZlYXR1cmVzIGNvbnN0JiBmZWF0dXJlcyk7Ci0gIGJvb2wgcGFyc2UoY29u
c3QgY2hhciogYmVnaW5Eb2MsCi0gICAgICAgICAgICAgY29uc3QgY2hhciogZW5kRG9jLAotICAg
ICAgICAgICAgIFZhbHVlJiByb290LAotICAgICAgICAgICAgIGJvb2wgY29sbGVjdENvbW1lbnRz
ID0gdHJ1ZSk7Ci0gIFN0cmluZyBnZXRGb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKCkgY29uc3Q7Ci0g
IHN0ZDo6dmVjdG9yPFN0cnVjdHVyZWRFcnJvcj4gZ2V0U3RydWN0dXJlZEVycm9ycygpIGNvbnN0
OwotICBib29sIHB1c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0gIGJvb2wgcHVzaEVycm9yKGNvbnN0IFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBWYWx1ZSYgZXh0cmEpOwotICBib29sIGdvb2QoKSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgT3VyUmVhZGVyKE91clJlYWRlciBjb25zdCYpOyAgICAgIC8vIG5vIGltcGwK
LSAgdm9pZCBvcGVyYXRvcj0oT3VyUmVhZGVyIGNvbnN0Jik7IC8vIG5vIGltcGwKLQotICBlbnVt
IFRva2VuVHlwZSB7Ci0gICAgdG9rZW5FbmRPZlN0cmVhbSA9IDAsCi0gICAgdG9rZW5PYmplY3RC
ZWdpbiwKLSAgICB0b2tlbk9iamVjdEVuZCwKLSAgICB0b2tlbkFycmF5QmVnaW4sCi0gICAgdG9r
ZW5BcnJheUVuZCwKLSAgICB0b2tlblN0cmluZywKLSAgICB0b2tlbk51bWJlciwKLSAgICB0b2tl
blRydWUsCi0gICAgdG9rZW5GYWxzZSwKLSAgICB0b2tlbk51bGwsCi0gICAgdG9rZW5OYU4sCi0g
ICAgdG9rZW5Qb3NJbmYsCi0gICAgdG9rZW5OZWdJbmYsCi0gICAgdG9rZW5BcnJheVNlcGFyYXRv
ciwKLSAgICB0b2tlbk1lbWJlclNlcGFyYXRvciwKLSAgICB0b2tlbkNvbW1lbnQsCi0gICAgdG9r
ZW5FcnJvcgotICB9OwotCi0gIGNsYXNzIFRva2VuIHsKLSAgcHVibGljOgotICAgIFRva2VuVHlw
ZSB0eXBlXzsKLSAgICBMb2NhdGlvbiBzdGFydF87Ci0gICAgTG9jYXRpb24gZW5kXzsKLSAgfTsK
LQotICBjbGFzcyBFcnJvckluZm8gewotICBwdWJsaWM6Ci0gICAgVG9rZW4gdG9rZW5fOwotICAg
IFN0cmluZyBtZXNzYWdlXzsKLSAgICBMb2NhdGlvbiBleHRyYV87Ci0gIH07Ci0KLSAgdHlwZWRl
ZiBzdGQ6OmRlcXVlPEVycm9ySW5mbz4gRXJyb3JzOwotCi0gIGJvb2wgcmVhZFRva2VuKFRva2Vu
JiB0b2tlbik7Ci0gIHZvaWQgc2tpcFNwYWNlcygpOwotICBib29sIG1hdGNoKExvY2F0aW9uIHBh
dHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoKTsKLSAgYm9vbCByZWFkQ29tbWVudCgpOwotICBib29s
IHJlYWRDU3R5bGVDb21tZW50KCk7Ci0gIGJvb2wgcmVhZENwcFN0eWxlQ29tbWVudCgpOwotICBi
b29sIHJlYWRTdHJpbmcoKTsKLSAgYm9vbCByZWFkU3RyaW5nU2luZ2xlUXVvdGUoKTsKLSAgYm9v
bCByZWFkTnVtYmVyKGJvb2wgY2hlY2tJbmYpOwotICBib29sIHJlYWRWYWx1ZSgpOwotICBib29s
IHJlYWRPYmplY3QoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCByZWFkQXJyYXkoVG9rZW4mIHRva2Vu
KTsKLSAgYm9vbCBkZWNvZGVOdW1iZXIoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCBkZWNvZGVOdW1i
ZXIoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7Ci0gIGJvb2wgZGVjb2RlU3RyaW5nKFRv
a2VuJiB0b2tlbik7Ci0gIGJvb2wgZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbiwgU3RyaW5nJiBk
ZWNvZGVkKTsKLSAgYm9vbCBkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuKTsKLSAgYm9vbCBkZWNv
ZGVEb3VibGUoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCk7Ci0gIGJvb2wgZGVjb2RlVW5p
Y29kZUNvZGVQb2ludChUb2tlbiYgdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2NhdGlvbiYgY3VycmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0
aW9uIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCYgdW5p
Y29kZSk7Ci0gIGJvb2wgZGVjb2RlVW5pY29kZUVzY2FwZVNlcXVlbmNlKFRva2VuJiB0b2tlbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24mIGN1cnJlbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50JiB1bmljb2RlKTsKLSAgYm9v
bCBhZGRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFRva2VuJiB0b2tlbiwgTG9jYXRpb24g
ZXh0cmEgPSBudWxscHRyKTsKLSAgYm9vbCByZWNvdmVyRnJvbUVycm9yKFRva2VuVHlwZSBza2lw
VW50aWxUb2tlbik7Ci0gIGJvb2wgYWRkRXJyb3JBbmRSZWNvdmVyKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4mIHRva2VuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBUb2tlblR5cGUgc2tpcFVudGlsVG9rZW4pOwotICB2b2lkIHNraXBV
bnRpbFNwYWNlKCk7Ci0gIFZhbHVlJiBjdXJyZW50VmFsdWUoKTsKLSAgQ2hhciBnZXROZXh0Q2hh
cigpOwotICB2b2lkCi0gIGdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2NhdGlvbiBsb2NhdGlv
biwgaW50JiBsaW5lLCBpbnQmIGNvbHVtbikgY29uc3Q7Ci0gIFN0cmluZyBnZXRMb2NhdGlvbkxp
bmVBbmRDb2x1bW4oTG9jYXRpb24gbG9jYXRpb24pIGNvbnN0OwotICB2b2lkIGFkZENvbW1lbnQo
TG9jYXRpb24gYmVnaW4sIExvY2F0aW9uIGVuZCwgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQp
OwotICB2b2lkIHNraXBDb21tZW50VG9rZW5zKFRva2VuJiB0b2tlbik7Ci0KLSAgc3RhdGljIFN0
cmluZyBub3JtYWxpemVFT0woTG9jYXRpb24gYmVnaW4sIExvY2F0aW9uIGVuZCk7Ci0gIHN0YXRp
YyBib29sIGNvbnRhaW5zTmV3TGluZShMb2NhdGlvbiBiZWdpbiwgTG9jYXRpb24gZW5kKTsKLQot
ICB0eXBlZGVmIHN0ZDo6c3RhY2s8VmFsdWUqPiBOb2RlczsKLSAgTm9kZXMgbm9kZXNfOwotICBF
cnJvcnMgZXJyb3JzXzsKLSAgU3RyaW5nIGRvY3VtZW50XzsKLSAgTG9jYXRpb24gYmVnaW5fOwot
ICBMb2NhdGlvbiBlbmRfOwotICBMb2NhdGlvbiBjdXJyZW50XzsKLSAgTG9jYXRpb24gbGFzdFZh
bHVlRW5kXzsKLSAgVmFsdWUqIGxhc3RWYWx1ZV87Ci0gIFN0cmluZyBjb21tZW50c0JlZm9yZV87
Ci0KLSAgT3VyRmVhdHVyZXMgY29uc3QgZmVhdHVyZXNfOwotICBib29sIGNvbGxlY3RDb21tZW50
c187Ci19OyAvLyBPdXJSZWFkZXIKLQotLy8gY29tcGxldGUgY29weSBvZiBSZWFkIGltcGwsIGZv
ciBPdXJSZWFkZXIKLQotYm9vbCBPdXJSZWFkZXI6OmNvbnRhaW5zTmV3TGluZShPdXJSZWFkZXI6
OkxvY2F0aW9uIGJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXJSZWFk
ZXI6OkxvY2F0aW9uIGVuZCkgewotICBmb3IgKDsgYmVnaW4gPCBlbmQ7ICsrYmVnaW4pCi0gICAg
aWYgKCpiZWdpbiA9PSAnXG4nIHx8ICpiZWdpbiA9PSAnXHInKQotICAgICAgcmV0dXJuIHRydWU7
Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotT3VyUmVhZGVyOjpPdXJSZWFkZXIoT3VyRmVhdHVyZXMg
Y29uc3QmIGZlYXR1cmVzKQotICAgIDogZXJyb3JzXygpLCBkb2N1bWVudF8oKSwgYmVnaW5fKCks
IGVuZF8oKSwgY3VycmVudF8oKSwgbGFzdFZhbHVlRW5kXygpLAotICAgICAgbGFzdFZhbHVlXygp
LCBjb21tZW50c0JlZm9yZV8oKSwgZmVhdHVyZXNfKGZlYXR1cmVzKSwgY29sbGVjdENvbW1lbnRz
XygpIHsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OnBhcnNlKGNvbnN0IGNoYXIqIGJlZ2luRG9jLAot
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVuZERvYywKLSAgICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSYgcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbGxlY3RD
b21tZW50cykgewotICBpZiAoIWZlYXR1cmVzXy5hbGxvd0NvbW1lbnRzXykgewotICAgIGNvbGxl
Y3RDb21tZW50cyA9IGZhbHNlOwotICB9Ci0KLSAgYmVnaW5fID0gYmVnaW5Eb2M7Ci0gIGVuZF8g
PSBlbmREb2M7Ci0gIGNvbGxlY3RDb21tZW50c18gPSBjb2xsZWN0Q29tbWVudHM7Ci0gIGN1cnJl
bnRfID0gYmVnaW5fOwotICBsYXN0VmFsdWVFbmRfID0gbnVsbHB0cjsKLSAgbGFzdFZhbHVlXyA9
IG51bGxwdHI7Ci0gIGNvbW1lbnRzQmVmb3JlXy5jbGVhcigpOwotICBlcnJvcnNfLmNsZWFyKCk7
Ci0gIHdoaWxlICghbm9kZXNfLmVtcHR5KCkpCi0gICAgbm9kZXNfLnBvcCgpOwotICBub2Rlc18u
cHVzaCgmcm9vdCk7Ci0KLSAgYm9vbCBzdWNjZXNzZnVsID0gcmVhZFZhbHVlKCk7Ci0gIG5vZGVz
Xy5wb3AoKTsKLSAgVG9rZW4gdG9rZW47Ci0gIHNraXBDb21tZW50VG9rZW5zKHRva2VuKTsKLSAg
aWYgKGZlYXR1cmVzXy5mYWlsSWZFeHRyYV8pIHsKLSAgICBpZiAoKGZlYXR1cmVzXy5zdHJpY3RS
b290XyB8fCB0b2tlbi50eXBlXyAhPSB0b2tlbkVycm9yKSAmJgotICAgICAgICB0b2tlbi50eXBl
XyAhPSB0b2tlbkVuZE9mU3RyZWFtKSB7Ci0gICAgICBhZGRFcnJvcigiRXh0cmEgbm9uLXdoaXRl
c3BhY2UgYWZ0ZXIgSlNPTiB2YWx1ZS4iLCB0b2tlbik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICB9Ci0gIGlmIChjb2xsZWN0Q29tbWVudHNfICYmICFjb21tZW50c0JlZm9yZV8uZW1w
dHkoKSkKLSAgICByb290LnNldENvbW1lbnQoY29tbWVudHNCZWZvcmVfLCBjb21tZW50QWZ0ZXIp
OwotICBpZiAoZmVhdHVyZXNfLnN0cmljdFJvb3RfKSB7Ci0gICAgaWYgKCFyb290LmlzQXJyYXko
KSAmJiAhcm9vdC5pc09iamVjdCgpKSB7Ci0gICAgICAvLyBTZXQgZXJyb3IgbG9jYXRpb24gdG8g
c3RhcnQgb2YgZG9jLCBpZGVhbGx5IHNob3VsZCBiZSBmaXJzdCB0b2tlbiBmb3VuZAotICAgICAg
Ly8gaW4gZG9jCi0gICAgICB0b2tlbi50eXBlXyA9IHRva2VuRXJyb3I7Ci0gICAgICB0b2tlbi5z
dGFydF8gPSBiZWdpbkRvYzsKLSAgICAgIHRva2VuLmVuZF8gPSBlbmREb2M7Ci0gICAgICBhZGRF
cnJvcigKLSAgICAgICAgICAiQSB2YWxpZCBKU09OIGRvY3VtZW50IG11c3QgYmUgZWl0aGVyIGFu
IGFycmF5IG9yIGFuIG9iamVjdCB2YWx1ZS4iLAotICAgICAgICAgIHRva2VuKTsKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN1Y2Nlc3NmdWw7Ci19Ci0KLWJvb2wg
T3VyUmVhZGVyOjpyZWFkVmFsdWUoKSB7Ci0gIC8vICBUbyBwcmVzZXJ2ZSB0aGUgb2xkIGJlaGF2
aW91ciB3ZSBjYXN0IHNpemVfdCB0byBpbnQuCi0gIGlmIChub2Rlc18uc2l6ZSgpID4gZmVhdHVy
ZXNfLnN0YWNrTGltaXRfKQotICAgIHRocm93UnVudGltZUVycm9yKCJFeGNlZWRlZCBzdGFja0xp
bWl0IGluIHJlYWRWYWx1ZSgpLiIpOwotICBUb2tlbiB0b2tlbjsKLSAgc2tpcENvbW1lbnRUb2tl
bnModG9rZW4pOwotICBib29sIHN1Y2Nlc3NmdWwgPSB0cnVlOwotCi0gIGlmIChjb2xsZWN0Q29t
bWVudHNfICYmICFjb21tZW50c0JlZm9yZV8uZW1wdHkoKSkgewotICAgIGN1cnJlbnRWYWx1ZSgp
LnNldENvbW1lbnQoY29tbWVudHNCZWZvcmVfLCBjb21tZW50QmVmb3JlKTsKLSAgICBjb21tZW50
c0JlZm9yZV8uY2xlYXIoKTsKLSAgfQotCi0gIHN3aXRjaCAodG9rZW4udHlwZV8pIHsKLSAgY2Fz
ZSB0b2tlbk9iamVjdEJlZ2luOgotICAgIHN1Y2Nlc3NmdWwgPSByZWFkT2JqZWN0KHRva2VuKTsK
LSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdChjdXJyZW50XyAtIGJlZ2luXyk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgdG9rZW5BcnJheUJlZ2luOgotICAgIHN1Y2Nlc3NmdWwgPSByZWFk
QXJyYXkodG9rZW4pOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KGN1cnJlbnRf
IC0gYmVnaW5fKTsKLSAgICBicmVhazsKLSAgY2FzZSB0b2tlbk51bWJlcjoKLSAgICBzdWNjZXNz
ZnVsID0gZGVjb2RlTnVtYmVyKHRva2VuKTsKLSAgICBicmVhazsKLSAgY2FzZSB0b2tlblN0cmlu
ZzoKLSAgICBzdWNjZXNzZnVsID0gZGVjb2RlU3RyaW5nKHRva2VuKTsKLSAgICBicmVhazsKLSAg
Y2FzZSB0b2tlblRydWU6IHsKLSAgICBWYWx1ZSB2KHRydWUpOwotICAgIGN1cnJlbnRWYWx1ZSgp
LnN3YXBQYXlsb2FkKHYpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2Vu
LnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQodG9r
ZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgdG9rZW5GYWxzZTogewotICAg
IFZhbHVlIHYoZmFsc2UpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAg
IGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0g
ICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0g
IH0gYnJlYWs7Ci0gIGNhc2UgdG9rZW5OdWxsOiB7Ci0gICAgVmFsdWUgdjsKLSAgICBjdXJyZW50
VmFsdWUoKS5zd2FwUGF5bG9hZCh2KTsKLSAgICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFy
dCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldExp
bWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICB9IGJyZWFrOwotICBjYXNlIHRva2VuTmFOOiB7
Ci0gICAgVmFsdWUgdihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsK
LSAgICBjdXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZCh2KTsKLSAgICBjdXJyZW50VmFsdWUoKS5z
ZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1ZSgp
LnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICB9IGJyZWFrOwotICBjYXNl
IHRva2VuUG9zSW5mOiB7Ci0gICAgVmFsdWUgdihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKHYpOwotICAgIGN1
cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gICAg
Y3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAtIGJlZ2luXyk7Ci0gIH0g
YnJlYWs7Ci0gIGNhc2UgdG9rZW5OZWdJbmY6IHsKLSAgICBWYWx1ZSB2KC1zdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnN3YXBQYXls
b2FkKHYpOwotICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAt
IGJlZ2luXyk7Ci0gICAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0TGltaXQodG9rZW4uZW5kXyAt
IGJlZ2luXyk7Ci0gIH0gYnJlYWs7Ci0gIGNhc2UgdG9rZW5BcnJheVNlcGFyYXRvcjoKLSAgY2Fz
ZSB0b2tlbk9iamVjdEVuZDoKLSAgY2FzZSB0b2tlbkFycmF5RW5kOgotICAgIGlmIChmZWF0dXJl
c18uYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVyc18pIHsKLSAgICAgIC8vICJVbi1yZWFkIiB0
aGUgY3VycmVudCB0b2tlbiBhbmQgbWFyayB0aGUgY3VycmVudCB2YWx1ZSBhcyBhIG51bGwKLSAg
ICAgIC8vIHRva2VuLgotICAgICAgY3VycmVudF8tLTsKLSAgICAgIFZhbHVlIHY7Ci0gICAgICBj
dXJyZW50VmFsdWUoKS5zd2FwUGF5bG9hZCh2KTsKLSAgICAgIGN1cnJlbnRWYWx1ZSgpLnNldE9m
ZnNldFN0YXJ0KGN1cnJlbnRfIC0gYmVnaW5fIC0gMSk7Ci0gICAgICBjdXJyZW50VmFsdWUoKS5z
ZXRPZmZzZXRMaW1pdChjdXJyZW50XyAtIGJlZ2luXyk7Ci0gICAgICBicmVhazsKLSAgICB9IC8v
IGVsc2UsIGZhbGwgdGhyb3VnaCAuLi4KLSAgZGVmYXVsdDoKLSAgICBjdXJyZW50VmFsdWUoKS5z
ZXRPZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICAgIGN1cnJlbnRWYWx1ZSgp
LnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICAgIHJldHVybiBhZGRFcnJv
cigiU3ludGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5IGV4cGVjdGVkLiIsIHRva2Vu
KTsKLSAgfQotCi0gIGlmIChjb2xsZWN0Q29tbWVudHNfKSB7Ci0gICAgbGFzdFZhbHVlRW5kXyA9
IGN1cnJlbnRfOwotICAgIGxhc3RWYWx1ZV8gPSAmY3VycmVudFZhbHVlKCk7Ci0gIH0KLQotICBy
ZXR1cm4gc3VjY2Vzc2Z1bDsKLX0KLQotdm9pZCBPdXJSZWFkZXI6OnNraXBDb21tZW50VG9rZW5z
KFRva2VuJiB0b2tlbikgewotICBpZiAoZmVhdHVyZXNfLmFsbG93Q29tbWVudHNfKSB7Ci0gICAg
ZG8gewotICAgICAgcmVhZFRva2VuKHRva2VuKTsKLSAgICB9IHdoaWxlICh0b2tlbi50eXBlXyA9
PSB0b2tlbkNvbW1lbnQpOwotICB9IGVsc2UgewotICAgIHJlYWRUb2tlbih0b2tlbik7Ci0gIH0K
LX0KLQotYm9vbCBPdXJSZWFkZXI6OnJlYWRUb2tlbihUb2tlbiYgdG9rZW4pIHsKLSAgc2tpcFNw
YWNlcygpOwotICB0b2tlbi5zdGFydF8gPSBjdXJyZW50XzsKLSAgQ2hhciBjID0gZ2V0TmV4dENo
YXIoKTsKLSAgYm9vbCBvayA9IHRydWU7Ci0gIHN3aXRjaCAoYykgewotICBjYXNlICd7JzoKLSAg
ICB0b2tlbi50eXBlXyA9IHRva2VuT2JqZWN0QmVnaW47Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ30n
OgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5PYmplY3RFbmQ7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
J1snOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5BcnJheUJlZ2luOwotICAgIGJyZWFrOwotICBj
YXNlICddJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuQXJyYXlFbmQ7Ci0gICAgYnJlYWs7Ci0g
IGNhc2UgJyInOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5TdHJpbmc7Ci0gICAgb2sgPSByZWFk
U3RyaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ1wnJzoKLSAgICBpZiAoZmVhdHVyZXNfLmFs
bG93U2luZ2xlUXVvdGVzXykgewotICAgICAgdG9rZW4udHlwZV8gPSB0b2tlblN0cmluZzsKLSAg
ICAgIG9rID0gcmVhZFN0cmluZ1NpbmdsZVF1b3RlKCk7Ci0gICAgICBicmVhazsKLSAgICB9IC8v
IGVsc2UgZmFsbCB0aHJvdWdoCi0gIGNhc2UgJy8nOgotICAgIHRva2VuLnR5cGVfID0gdG9rZW5D
b21tZW50OwotICAgIG9rID0gcmVhZENvbW1lbnQoKTsKLSAgICBicmVhazsKLSAgY2FzZSAnMCc6
Ci0gIGNhc2UgJzEnOgotICBjYXNlICcyJzoKLSAgY2FzZSAnMyc6Ci0gIGNhc2UgJzQnOgotICBj
YXNlICc1JzoKLSAgY2FzZSAnNic6Ci0gIGNhc2UgJzcnOgotICBjYXNlICc4JzoKLSAgY2FzZSAn
OSc6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbk51bWJlcjsKLSAgICByZWFkTnVtYmVyKGZhbHNl
KTsKLSAgICBicmVhazsKLSAgY2FzZSAnLSc6Ci0gICAgaWYgKHJlYWROdW1iZXIodHJ1ZSkpIHsK
LSAgICAgIHRva2VuLnR5cGVfID0gdG9rZW5OdW1iZXI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHRv
a2VuLnR5cGVfID0gdG9rZW5OZWdJbmY7Ci0gICAgICBvayA9IGZlYXR1cmVzXy5hbGxvd1NwZWNp
YWxGbG9hdHNfICYmIG1hdGNoKCJuZmluaXR5IiwgNyk7Ci0gICAgfQotICAgIGJyZWFrOwotICBj
YXNlICd0JzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuVHJ1ZTsKLSAgICBvayA9IG1hdGNoKCJy
dWUiLCAzKTsKLSAgICBicmVhazsKLSAgY2FzZSAnZic6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tl
bkZhbHNlOwotICAgIG9rID0gbWF0Y2goImFsc2UiLCA0KTsKLSAgICBicmVhazsKLSAgY2FzZSAn
bic6Ci0gICAgdG9rZW4udHlwZV8gPSB0b2tlbk51bGw7Ci0gICAgb2sgPSBtYXRjaCgidWxsIiwg
Myk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJ04nOgotICAgIGlmIChmZWF0dXJlc18uYWxsb3dTcGVj
aWFsRmxvYXRzXykgewotICAgICAgdG9rZW4udHlwZV8gPSB0b2tlbk5hTjsKLSAgICAgIG9rID0g
bWF0Y2goImFOIiwgMik7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG9rID0gZmFsc2U7Ci0gICAgfQot
ICAgIGJyZWFrOwotICBjYXNlICdJJzoKLSAgICBpZiAoZmVhdHVyZXNfLmFsbG93U3BlY2lhbEZs
b2F0c18pIHsKLSAgICAgIHRva2VuLnR5cGVfID0gdG9rZW5Qb3NJbmY7Ci0gICAgICBvayA9IG1h
dGNoKCJuZmluaXR5IiwgNyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIG9rID0gZmFsc2U7Ci0gICAg
fQotICAgIGJyZWFrOwotICBjYXNlICcsJzoKLSAgICB0b2tlbi50eXBlXyA9IHRva2VuQXJyYXlT
ZXBhcmF0b3I7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgJzonOgotICAgIHRva2VuLnR5cGVfID0gdG9r
ZW5NZW1iZXJTZXBhcmF0b3I7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMDoKLSAgICB0b2tlbi50eXBl
XyA9IHRva2VuRW5kT2ZTdHJlYW07Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgb2sgPSBm
YWxzZTsKLSAgICBicmVhazsKLSAgfQotICBpZiAoIW9rKQotICAgIHRva2VuLnR5cGVfID0gdG9r
ZW5FcnJvcjsKLSAgdG9rZW4uZW5kXyA9IGN1cnJlbnRfOwotICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBPdXJSZWFkZXI6OnNraXBTcGFjZXMoKSB7Ci0gIHdoaWxlIChjdXJyZW50XyAhPSBlbmRf
KSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnRfOwotICAgIGlmIChjID09ICcgJyB8fCBjID09ICdc
dCcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJykKLSAgICAgICsrY3VycmVudF87Ci0gICAgZWxz
ZQotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotYm9vbCBPdXJSZWFkZXI6Om1hdGNoKExvY2F0aW9u
IHBhdHRlcm4sIGludCBwYXR0ZXJuTGVuZ3RoKSB7Ci0gIGlmIChlbmRfIC0gY3VycmVudF8gPCBw
YXR0ZXJuTGVuZ3RoKQotICAgIHJldHVybiBmYWxzZTsKLSAgaW50IGluZGV4ID0gcGF0dGVybkxl
bmd0aDsKLSAgd2hpbGUgKGluZGV4LS0pCi0gICAgaWYgKGN1cnJlbnRfW2luZGV4XSAhPSBwYXR0
ZXJuW2luZGV4XSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgY3VycmVudF8gKz0gcGF0dGVybkxl
bmd0aDsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpyZWFkQ29tbWVudCgp
IHsKLSAgTG9jYXRpb24gY29tbWVudEJlZ2luID0gY3VycmVudF8gLSAxOwotICBDaGFyIGMgPSBn
ZXROZXh0Q2hhcigpOwotICBib29sIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKLSAgaWYgKGMgPT0gJyon
KQotICAgIHN1Y2Nlc3NmdWwgPSByZWFkQ1N0eWxlQ29tbWVudCgpOwotICBlbHNlIGlmIChjID09
ICcvJykKLSAgICBzdWNjZXNzZnVsID0gcmVhZENwcFN0eWxlQ29tbWVudCgpOwotICBpZiAoIXN1
Y2Nlc3NmdWwpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIGlmIChjb2xsZWN0Q29tbWVudHNfKSB7
Ci0gICAgQ29tbWVudFBsYWNlbWVudCBwbGFjZW1lbnQgPSBjb21tZW50QmVmb3JlOwotICAgIGlm
IChsYXN0VmFsdWVFbmRfICYmICFjb250YWluc05ld0xpbmUobGFzdFZhbHVlRW5kXywgY29tbWVu
dEJlZ2luKSkgewotICAgICAgaWYgKGMgIT0gJyonIHx8ICFjb250YWluc05ld0xpbmUoY29tbWVu
dEJlZ2luLCBjdXJyZW50XykpCi0gICAgICAgIHBsYWNlbWVudCA9IGNvbW1lbnRBZnRlck9uU2Ft
ZUxpbmU7Ci0gICAgfQotCi0gICAgYWRkQ29tbWVudChjb21tZW50QmVnaW4sIGN1cnJlbnRfLCBw
bGFjZW1lbnQpOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgT3VyUmVhZGVyOjpu
b3JtYWxpemVFT0woT3VyUmVhZGVyOjpMb2NhdGlvbiBiZWdpbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPdXJSZWFkZXI6OkxvY2F0aW9uIGVuZCkgewotICBTdHJpbmcgbm9ybWFs
aXplZDsKLSAgbm9ybWFsaXplZC5yZXNlcnZlKHN0YXRpY19jYXN0PHNpemVfdD4oZW5kIC0gYmVn
aW4pKTsKLSAgT3VyUmVhZGVyOjpMb2NhdGlvbiBjdXJyZW50ID0gYmVnaW47Ci0gIHdoaWxlIChj
dXJyZW50ICE9IGVuZCkgewotICAgIGNoYXIgYyA9ICpjdXJyZW50Kys7Ci0gICAgaWYgKGMgPT0g
J1xyJykgewotICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kICYmICpjdXJyZW50ID09ICdcbicpCi0g
ICAgICAgIC8vIGNvbnZlcnQgZG9zIEVPTAotICAgICAgICArK2N1cnJlbnQ7Ci0gICAgICAvLyBj
b252ZXJ0IE1hYyBFT0wKLSAgICAgIG5vcm1hbGl6ZWQgKz0gJ1xuJzsKLSAgICB9IGVsc2Ugewot
ICAgICAgbm9ybWFsaXplZCArPSBjOwotICAgIH0KLSAgfQotICByZXR1cm4gbm9ybWFsaXplZDsK
LX0KLQotdm9pZCBPdXJSZWFkZXI6OmFkZENvbW1lbnQoTG9jYXRpb24gYmVnaW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVudCkgewotICBhc3NlcnQoY29sbGVjdENvbW1l
bnRzXyk7Ci0gIGNvbnN0IFN0cmluZyYgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUVPTChiZWdpbiwg
ZW5kKTsKLSAgaWYgKHBsYWNlbWVudCA9PSBjb21tZW50QWZ0ZXJPblNhbWVMaW5lKSB7Ci0gICAg
YXNzZXJ0KGxhc3RWYWx1ZV8gIT0gbnVsbHB0cik7Ci0gICAgbGFzdFZhbHVlXy0+c2V0Q29tbWVu
dChub3JtYWxpemVkLCBwbGFjZW1lbnQpOwotICB9IGVsc2UgewotICAgIGNvbW1lbnRzQmVmb3Jl
XyArPSBub3JtYWxpemVkOwotICB9Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpyZWFkQ1N0eWxlQ29t
bWVudCgpIHsKLSAgd2hpbGUgKChjdXJyZW50XyArIDEpIDwgZW5kXykgewotICAgIENoYXIgYyA9
IGdldE5leHRDaGFyKCk7Ci0gICAgaWYgKGMgPT0gJyonICYmICpjdXJyZW50XyA9PSAnLycpCi0g
ICAgICBicmVhazsKLSAgfQotICByZXR1cm4gZ2V0TmV4dENoYXIoKSA9PSAnLyc7Ci19Ci0KLWJv
b2wgT3VyUmVhZGVyOjpyZWFkQ3BwU3R5bGVDb21tZW50KCkgewotICB3aGlsZSAoY3VycmVudF8g
IT0gZW5kXykgewotICAgIENoYXIgYyA9IGdldE5leHRDaGFyKCk7Ci0gICAgaWYgKGMgPT0gJ1xu
JykKLSAgICAgIGJyZWFrOwotICAgIGlmIChjID09ICdccicpIHsKLSAgICAgIC8vIENvbnN1bWUg
RE9TIEVPTC4gSXQgd2lsbCBiZSBub3JtYWxpemVkIGluIGFkZENvbW1lbnQuCi0gICAgICBpZiAo
Y3VycmVudF8gIT0gZW5kXyAmJiAqY3VycmVudF8gPT0gJ1xuJykKLSAgICAgICAgZ2V0TmV4dENo
YXIoKTsKLSAgICAgIC8vIEJyZWFrIG9uIE1vYyBPUyA5IEVPTC4KLSAgICAgIGJyZWFrOwotICAg
IH0KLSAgfQotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OnJlYWROdW1iZXIo
Ym9vbCBjaGVja0luZikgewotICBjb25zdCBjaGFyKiBwID0gY3VycmVudF87Ci0gIGlmIChjaGVj
a0luZiAmJiBwICE9IGVuZF8gJiYgKnAgPT0gJ0knKSB7Ci0gICAgY3VycmVudF8gPSArK3A7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGNoYXIgYyA9ICcwJzsgLy8gc3RvcGdhcCBmb3IgYWxy
ZWFkeSBjb25zdW1lZCBjaGFyYWN0ZXIKLSAgLy8gaW50ZWdyYWwgcGFydAotICB3aGlsZSAoYyA+
PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysg
OiAnXDAnOwotICAvLyBmcmFjdGlvbmFsIHBhcnQKLSAgaWYgKGMgPT0gJy4nKSB7Ci0gICAgYyA9
IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAnXDAnOwotICAgIHdoaWxlIChjID49ICcw
JyAmJiBjIDw9ICc5JykKLSAgICAgIGMgPSAoY3VycmVudF8gPSBwKSA8IGVuZF8gPyAqcCsrIDog
J1wwJzsKLSAgfQotICAvLyBleHBvbmVudGlhbCBwYXJ0Ci0gIGlmIChjID09ICdlJyB8fCBjID09
ICdFJykgewotICAgIGMgPSAoY3VycmVudF8gPSBwKSA8IGVuZF8gPyAqcCsrIDogJ1wwJzsKLSAg
ICBpZiAoYyA9PSAnKycgfHwgYyA9PSAnLScpCi0gICAgICBjID0gKGN1cnJlbnRfID0gcCkgPCBl
bmRfID8gKnArKyA6ICdcMCc7Ci0gICAgd2hpbGUgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAg
ICAgYyA9IChjdXJyZW50XyA9IHApIDwgZW5kXyA/ICpwKysgOiAnXDAnOwotICB9Ci0gIHJldHVy
biB0cnVlOwotfQotYm9vbCBPdXJSZWFkZXI6OnJlYWRTdHJpbmcoKSB7Ci0gIENoYXIgYyA9IDA7
Ci0gIHdoaWxlIChjdXJyZW50XyAhPSBlbmRfKSB7Ci0gICAgYyA9IGdldE5leHRDaGFyKCk7Ci0g
ICAgaWYgKGMgPT0gJ1xcJykKLSAgICAgIGdldE5leHRDaGFyKCk7Ci0gICAgZWxzZSBpZiAoYyA9
PSAnIicpCi0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gYyA9PSAnIic7Ci19Ci0KLWJvb2wg
T3VyUmVhZGVyOjpyZWFkU3RyaW5nU2luZ2xlUXVvdGUoKSB7Ci0gIENoYXIgYyA9IDA7Ci0gIHdo
aWxlIChjdXJyZW50XyAhPSBlbmRfKSB7Ci0gICAgYyA9IGdldE5leHRDaGFyKCk7Ci0gICAgaWYg
KGMgPT0gJ1xcJykKLSAgICAgIGdldE5leHRDaGFyKCk7Ci0gICAgZWxzZSBpZiAoYyA9PSAnXCcn
KQotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIGMgPT0gJ1wnJzsKLX0KLQotYm9vbCBPdXJS
ZWFkZXI6OnJlYWRPYmplY3QoVG9rZW4mIHRva2VuKSB7Ci0gIFRva2VuIHRva2VuTmFtZTsKLSAg
U3RyaW5nIG5hbWU7Ci0gIFZhbHVlIGluaXQob2JqZWN0VmFsdWUpOwotICBjdXJyZW50VmFsdWUo
KS5zd2FwUGF5bG9hZChpbml0KTsKLSAgY3VycmVudFZhbHVlKCkuc2V0T2Zmc2V0U3RhcnQodG9r
ZW4uc3RhcnRfIC0gYmVnaW5fKTsKLSAgd2hpbGUgKHJlYWRUb2tlbih0b2tlbk5hbWUpKSB7Ci0g
ICAgYm9vbCBpbml0aWFsVG9rZW5PayA9IHRydWU7Ci0gICAgd2hpbGUgKHRva2VuTmFtZS50eXBl
XyA9PSB0b2tlbkNvbW1lbnQgJiYgaW5pdGlhbFRva2VuT2spCi0gICAgICBpbml0aWFsVG9rZW5P
ayA9IHJlYWRUb2tlbih0b2tlbk5hbWUpOwotICAgIGlmICghaW5pdGlhbFRva2VuT2spCi0gICAg
ICBicmVhazsKLSAgICBpZiAodG9rZW5OYW1lLnR5cGVfID09IHRva2VuT2JqZWN0RW5kICYmIG5h
bWUuZW1wdHkoKSkgLy8gZW1wdHkgb2JqZWN0Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBuYW1l
LmNsZWFyKCk7Ci0gICAgaWYgKHRva2VuTmFtZS50eXBlXyA9PSB0b2tlblN0cmluZykgewotICAg
ICAgaWYgKCFkZWNvZGVTdHJpbmcodG9rZW5OYW1lLCBuYW1lKSkKLSAgICAgICAgcmV0dXJuIHJl
Y292ZXJGcm9tRXJyb3IodG9rZW5PYmplY3RFbmQpOwotICAgIH0gZWxzZSBpZiAodG9rZW5OYW1l
LnR5cGVfID09IHRva2VuTnVtYmVyICYmIGZlYXR1cmVzXy5hbGxvd051bWVyaWNLZXlzXykgewot
ICAgICAgVmFsdWUgbnVtYmVyTmFtZTsKLSAgICAgIGlmICghZGVjb2RlTnVtYmVyKHRva2VuTmFt
ZSwgbnVtYmVyTmFtZSkpCi0gICAgICAgIHJldHVybiByZWNvdmVyRnJvbUVycm9yKHRva2VuT2Jq
ZWN0RW5kKTsKLSAgICAgIG5hbWUgPSBudW1iZXJOYW1lLmFzU3RyaW5nKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAobmFtZS5sZW5ndGgoKSA+PSAoMVUgPDwg
MzApKQotICAgICAgdGhyb3dSdW50aW1lRXJyb3IoImtleWxlbmd0aCA+PSAyXjMwIik7Ci0gICAg
aWYgKGZlYXR1cmVzXy5yZWplY3REdXBLZXlzXyAmJiBjdXJyZW50VmFsdWUoKS5pc01lbWJlcihu
YW1lKSkgewotICAgICAgU3RyaW5nIG1zZyA9ICJEdXBsaWNhdGUga2V5OiAnIiArIG5hbWUgKyAi
JyI7Ci0gICAgICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKG1zZywgdG9rZW5OYW1lLCB0b2tl
bk9iamVjdEVuZCk7Ci0gICAgfQotCi0gICAgVG9rZW4gY29sb247Ci0gICAgaWYgKCFyZWFkVG9r
ZW4oY29sb24pIHx8IGNvbG9uLnR5cGVfICE9IHRva2VuTWVtYmVyU2VwYXJhdG9yKSB7Ci0gICAg
ICByZXR1cm4gYWRkRXJyb3JBbmRSZWNvdmVyKCJNaXNzaW5nICc6JyBhZnRlciBvYmplY3QgbWVt
YmVyIG5hbWUiLCBjb2xvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5P
YmplY3RFbmQpOwotICAgIH0KLSAgICBWYWx1ZSYgdmFsdWUgPSBjdXJyZW50VmFsdWUoKVtuYW1l
XTsKLSAgICBub2Rlc18ucHVzaCgmdmFsdWUpOwotICAgIGJvb2wgb2sgPSByZWFkVmFsdWUoKTsK
LSAgICBub2Rlc18ucG9wKCk7Ci0gICAgaWYgKCFvaykgLy8gZXJyb3IgYWxyZWFkeSBzZXQKLSAg
ICAgIHJldHVybiByZWNvdmVyRnJvbUVycm9yKHRva2VuT2JqZWN0RW5kKTsKLQotICAgIFRva2Vu
IGNvbW1hOwotICAgIGlmICghcmVhZFRva2VuKGNvbW1hKSB8fAotICAgICAgICAoY29tbWEudHlw
ZV8gIT0gdG9rZW5PYmplY3RFbmQgJiYgY29tbWEudHlwZV8gIT0gdG9rZW5BcnJheVNlcGFyYXRv
ciAmJgotICAgICAgICAgY29tbWEudHlwZV8gIT0gdG9rZW5Db21tZW50KSkgewotICAgICAgcmV0
dXJuIGFkZEVycm9yQW5kUmVjb3ZlcigiTWlzc2luZyAnLCcgb3IgJ30nIGluIG9iamVjdCBkZWNs
YXJhdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hLCB0b2tlbk9i
amVjdEVuZCk7Ci0gICAgfQotICAgIGJvb2wgZmluYWxpemVUb2tlbk9rID0gdHJ1ZTsKLSAgICB3
aGlsZSAoY29tbWEudHlwZV8gPT0gdG9rZW5Db21tZW50ICYmIGZpbmFsaXplVG9rZW5PaykKLSAg
ICAgIGZpbmFsaXplVG9rZW5PayA9IHJlYWRUb2tlbihjb21tYSk7Ci0gICAgaWYgKGNvbW1hLnR5
cGVfID09IHRva2VuT2JqZWN0RW5kKQotICAgICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJu
IGFkZEVycm9yQW5kUmVjb3ZlcigiTWlzc2luZyAnfScgb3Igb2JqZWN0IG1lbWJlciBuYW1lIiwg
dG9rZW5OYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuT2JqZWN0RW5kKTsK
LX0KLQotYm9vbCBPdXJSZWFkZXI6OnJlYWRBcnJheShUb2tlbiYgdG9rZW4pIHsKLSAgVmFsdWUg
aW5pdChhcnJheVZhbHVlKTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQoaW5pdCk7Ci0g
IGN1cnJlbnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0g
IHNraXBTcGFjZXMoKTsKLSAgaWYgKGN1cnJlbnRfICE9IGVuZF8gJiYgKmN1cnJlbnRfID09ICdd
JykgLy8gZW1wdHkgYXJyYXkKLSAgewotICAgIFRva2VuIGVuZEFycmF5OwotICAgIHJlYWRUb2tl
bihlbmRBcnJheSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgaW50IGluZGV4ID0gMDsKLSAg
Zm9yICg7OykgewotICAgIFZhbHVlJiB2YWx1ZSA9IGN1cnJlbnRWYWx1ZSgpW2luZGV4KytdOwot
ICAgIG5vZGVzXy5wdXNoKCZ2YWx1ZSk7Ci0gICAgYm9vbCBvayA9IHJlYWRWYWx1ZSgpOwotICAg
IG5vZGVzXy5wb3AoKTsKLSAgICBpZiAoIW9rKSAvLyBlcnJvciBhbHJlYWR5IHNldAotICAgICAg
cmV0dXJuIHJlY292ZXJGcm9tRXJyb3IodG9rZW5BcnJheUVuZCk7Ci0KLSAgICBUb2tlbiBjdXJy
ZW50VG9rZW47Ci0gICAgLy8gQWNjZXB0IENvbW1lbnQgYWZ0ZXIgbGFzdCBpdGVtIGluIHRoZSBh
cnJheS4KLSAgICBvayA9IHJlYWRUb2tlbihjdXJyZW50VG9rZW4pOwotICAgIHdoaWxlIChjdXJy
ZW50VG9rZW4udHlwZV8gPT0gdG9rZW5Db21tZW50ICYmIG9rKSB7Ci0gICAgICBvayA9IHJlYWRU
b2tlbihjdXJyZW50VG9rZW4pOwotICAgIH0KLSAgICBib29sIGJhZFRva2VuVHlwZSA9IChjdXJy
ZW50VG9rZW4udHlwZV8gIT0gdG9rZW5BcnJheVNlcGFyYXRvciAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRUb2tlbi50eXBlXyAhPSB0b2tlbkFycmF5RW5kKTsKLSAgICBpZiAo
IW9rIHx8IGJhZFRva2VuVHlwZSkgewotICAgICAgcmV0dXJuIGFkZEVycm9yQW5kUmVjb3Zlcigi
TWlzc2luZyAnLCcgb3IgJ10nIGluIGFycmF5IGRlY2xhcmF0aW9uIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuLCB0b2tlbkFycmF5RW5kKTsKLSAgICB9Ci0g
ICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlXyA9PSB0b2tlbkFycmF5RW5kKQotICAgICAgYnJlYWs7
Ci0gIH0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpkZWNvZGVOdW1iZXIo
VG9rZW4mIHRva2VuKSB7Ci0gIFZhbHVlIGRlY29kZWQ7Ci0gIGlmICghZGVjb2RlTnVtYmVyKHRv
a2VuLCBkZWNvZGVkKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGN1cnJlbnRWYWx1ZSgpLnN3YXBQ
YXlsb2FkKGRlY29kZWQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRTdGFydCh0b2tlbi5z
dGFydF8gLSBiZWdpbl8pOwotICBjdXJyZW50VmFsdWUoKS5zZXRPZmZzZXRMaW1pdCh0b2tlbi5l
bmRfIC0gYmVnaW5fKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpkZWNv
ZGVOdW1iZXIoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCkgewotICAvLyBBdHRlbXB0cyB0
byBwYXJzZSB0aGUgbnVtYmVyIGFzIGFuIGludGVnZXIuIElmIHRoZSBudW1iZXIgaXMKLSAgLy8g
bGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gc3VwcG9ydGVkIHZhbHVlIG9mIGFuIGludGVnZXIgdGhl
bgotICAvLyB3ZSBkZWNvZGUgdGhlIG51bWJlciBhcyBhIGRvdWJsZS4KLSAgTG9jYXRpb24gY3Vy
cmVudCA9IHRva2VuLnN0YXJ0XzsKLSAgYm9vbCBpc05lZ2F0aXZlID0gKmN1cnJlbnQgPT0gJy0n
OwotICBpZiAoaXNOZWdhdGl2ZSkKLSAgICArK2N1cnJlbnQ7Ci0KLSAgLy8gVE9ETyhpc3N1ZSAj
OTYwKTogQ2hhbmdlIHRvIGNvbnN0ZXhwcgotICBzdGF0aWMgY29uc3QgYXV0byBwb3NpdGl2ZV90
aHJlc2hvbGQgPSBWYWx1ZTo6bWF4TGFyZ2VzdFVJbnQgLyAxMDsKLSAgc3RhdGljIGNvbnN0IGF1
dG8gcG9zaXRpdmVfbGFzdF9kaWdpdCA9IFZhbHVlOjptYXhMYXJnZXN0VUludCAlIDEwOwotICBz
dGF0aWMgY29uc3QgYXV0byBuZWdhdGl2ZV90aHJlc2hvbGQgPQotICAgICAgVmFsdWU6Okxhcmdl
c3RVSW50KFZhbHVlOjptaW5MYXJnZXN0SW50KSAvIDEwOwotICBzdGF0aWMgY29uc3QgYXV0byBu
ZWdhdGl2ZV9sYXN0X2RpZ2l0ID0KLSAgICAgIFZhbHVlOjpMYXJnZXN0VUludChWYWx1ZTo6bWlu
TGFyZ2VzdEludCkgJSAxMDsKLQotICBjb25zdCBhdXRvIHRocmVzaG9sZCA9IGlzTmVnYXRpdmUg
PyBuZWdhdGl2ZV90aHJlc2hvbGQgOiBwb3NpdGl2ZV90aHJlc2hvbGQ7Ci0gIGNvbnN0IGF1dG8g
bGFzdF9kaWdpdCA9Ci0gICAgICBpc05lZ2F0aXZlID8gbmVnYXRpdmVfbGFzdF9kaWdpdCA6IHBv
c2l0aXZlX2xhc3RfZGlnaXQ7Ci0KLSAgVmFsdWU6Okxhcmdlc3RVSW50IHZhbHVlID0gMDsKLSAg
d2hpbGUgKGN1cnJlbnQgPCB0b2tlbi5lbmRfKSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnQrKzsK
LSAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQotICAgICAgcmV0dXJuIGRlY29kZURvdWJsZSh0
b2tlbiwgZGVjb2RlZCk7Ci0KLSAgICBjb25zdCBhdXRvIGRpZ2l0KHN0YXRpY19jYXN0PFZhbHVl
OjpVSW50PihjIC0gJzAnKSk7Ci0gICAgaWYgKHZhbHVlID49IHRocmVzaG9sZCkgewotICAgICAg
Ly8gV2UndmUgaGl0IG9yIGV4Y2VlZGVkIHRoZSBtYXggdmFsdWUgZGl2aWRlZCBieSAxMCAocm91
bmRlZCBkb3duKS4gSWYKLSAgICAgIC8vIGEpIHdlJ3ZlIG9ubHkganVzdCB0b3VjaGVkIHRoZSBs
aW1pdCwgbWVhaW5nIHZhbHVlID09IHRocmVzaG9sZCwKLSAgICAgIC8vIGIpIHRoaXMgaXMgdGhl
IGxhc3QgZGlnaXQsIG9yCi0gICAgICAvLyBjKSBpdCdzIHNtYWxsIGVub3VnaCB0byBmaXQgaW4g
dGhhdCByb3VuZGluZyBkZWx0YSwgd2UncmUgb2theS4KLSAgICAgIC8vIE90aGVyd2lzZSB0cmVh
dCB0aGlzIG51bWJlciBhcyBhIGRvdWJsZSB0byBhdm9pZCBvdmVyZmxvdy4KLSAgICAgIGlmICh2
YWx1ZSA+IHRocmVzaG9sZCB8fCBjdXJyZW50ICE9IHRva2VuLmVuZF8gfHwgZGlnaXQgPiBsYXN0
X2RpZ2l0KSB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVEb3VibGUodG9rZW4sIGRlY29kZWQpOwot
ICAgICAgfQotICAgIH0KLSAgICB2YWx1ZSA9IHZhbHVlICogMTAgKyBkaWdpdDsKLSAgfQotCi0g
IGlmIChpc05lZ2F0aXZlKQotICAgIGRlY29kZWQgPSAtVmFsdWU6Okxhcmdlc3RJbnQodmFsdWUp
OwotICBlbHNlIGlmICh2YWx1ZSA8PSBWYWx1ZTo6TGFyZ2VzdFVJbnQoVmFsdWU6Om1heExhcmdl
c3RJbnQpKQotICAgIGRlY29kZWQgPSBWYWx1ZTo6TGFyZ2VzdEludCh2YWx1ZSk7Ci0gIGVsc2UK
LSAgICBkZWNvZGVkID0gdmFsdWU7Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVh
ZGVyOjpkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuKSB7Ci0gIFZhbHVlIGRlY29kZWQ7Ci0gIGlm
ICghZGVjb2RlRG91YmxlKHRva2VuLCBkZWNvZGVkKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGN1
cnJlbnRWYWx1ZSgpLnN3YXBQYXlsb2FkKGRlY29kZWQpOwotICBjdXJyZW50VmFsdWUoKS5zZXRP
ZmZzZXRTdGFydCh0b2tlbi5zdGFydF8gLSBiZWdpbl8pOwotICBjdXJyZW50VmFsdWUoKS5zZXRP
ZmZzZXRMaW1pdCh0b2tlbi5lbmRfIC0gYmVnaW5fKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgT3VyUmVhZGVyOjpkZWNvZGVEb3VibGUoVG9rZW4mIHRva2VuLCBWYWx1ZSYgZGVjb2RlZCkg
ewotICBkb3VibGUgdmFsdWUgPSAwOwotICBjb25zdCBpbnQgYnVmZmVyU2l6ZSA9IDMyOwotICBp
bnQgY291bnQ7Ci0gIHB0cmRpZmZfdCBjb25zdCBsZW5ndGggPSB0b2tlbi5lbmRfIC0gdG9rZW4u
c3RhcnRfOwotCi0gIC8vIFNhbml0eSBjaGVjayB0byBhdm9pZCBidWZmZXIgb3ZlcmZsb3cgZXhw
bG9pdHMuCi0gIGlmIChsZW5ndGggPCAwKSB7Ci0gICAgcmV0dXJuIGFkZEVycm9yKCJVbmFibGUg
dG8gcGFyc2UgdG9rZW4gbGVuZ3RoIiwgdG9rZW4pOwotICB9Ci0gIGF1dG8gY29uc3QgdWxlbmd0
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKTsKLQotICAvLyBBdm9pZCB1c2luZyBhIHN0
cmluZyBjb25zdGFudCBmb3IgdGhlIGZvcm1hdCBjb250cm9sIHN0cmluZyBnaXZlbiB0bwotICAv
LyBzc2NhbmYsIGFzIHRoaXMgY2FuIGNhdXNlIGhhcmQgdG8gZGVidWcgY3Jhc2hlcyBvbiBPUyBY
LiBTZWUgaGVyZSBmb3IgbW9yZQotICAvLyBpbmZvOgotICAvLwotICAvLyAgICAgaHR0cDovL2Rl
dmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI0RPQ1VNRU5UQVRJT04vRGV2ZWxvcGVyVG9v
bHMvZ2NjLTQuMC4xL2djYy9JbmNvbXBhdGliaWxpdGllcy5odG1sCi0gIGNoYXIgZm9ybWF0W10g
PSAiJWxmIjsKLQotICBpZiAobGVuZ3RoIDw9IGJ1ZmZlclNpemUpIHsKLSAgICBDaGFyIGJ1ZmZl
cltidWZmZXJTaXplICsgMV07Ci0gICAgbWVtY3B5KGJ1ZmZlciwgdG9rZW4uc3RhcnRfLCB1bGVu
Z3RoKTsKLSAgICBidWZmZXJbbGVuZ3RoXSA9IDA7Ci0gICAgZml4TnVtZXJpY0xvY2FsZUlucHV0
KGJ1ZmZlciwgYnVmZmVyICsgbGVuZ3RoKTsKLSAgICBjb3VudCA9IHNzY2FuZihidWZmZXIsIGZv
cm1hdCwgJnZhbHVlKTsKLSAgfSBlbHNlIHsKLSAgICBTdHJpbmcgYnVmZmVyKHRva2VuLnN0YXJ0
XywgdG9rZW4uZW5kXyk7Ci0gICAgY291bnQgPSBzc2NhbmYoYnVmZmVyLmNfc3RyKCksIGZvcm1h
dCwgJnZhbHVlKTsKLSAgfQotCi0gIGlmIChjb3VudCAhPSAxKQotICAgIHJldHVybiBhZGRFcnJv
cigKLSAgICAgICAgIiciICsgU3RyaW5nKHRva2VuLnN0YXJ0XywgdG9rZW4uZW5kXykgKyAiJyBp
cyBub3QgYSBudW1iZXIuIiwgdG9rZW4pOwotICBkZWNvZGVkID0gdmFsdWU7Ci0gIHJldHVybiB0
cnVlOwotfQotCi1ib29sIE91clJlYWRlcjo6ZGVjb2RlU3RyaW5nKFRva2VuJiB0b2tlbikgewot
ICBTdHJpbmcgZGVjb2RlZF9zdHJpbmc7Ci0gIGlmICghZGVjb2RlU3RyaW5nKHRva2VuLCBkZWNv
ZGVkX3N0cmluZykpCi0gICAgcmV0dXJuIGZhbHNlOwotICBWYWx1ZSBkZWNvZGVkKGRlY29kZWRf
c3RyaW5nKTsKLSAgY3VycmVudFZhbHVlKCkuc3dhcFBheWxvYWQoZGVjb2RlZCk7Ci0gIGN1cnJl
bnRWYWx1ZSgpLnNldE9mZnNldFN0YXJ0KHRva2VuLnN0YXJ0XyAtIGJlZ2luXyk7Ci0gIGN1cnJl
bnRWYWx1ZSgpLnNldE9mZnNldExpbWl0KHRva2VuLmVuZF8gLSBiZWdpbl8pOwotICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6OmRlY29kZVN0cmluZyhUb2tlbiYgdG9rZW4sIFN0
cmluZyYgZGVjb2RlZCkgewotICBkZWNvZGVkLnJlc2VydmUoc3RhdGljX2Nhc3Q8c2l6ZV90Pih0
b2tlbi5lbmRfIC0gdG9rZW4uc3RhcnRfIC0gMikpOwotICBMb2NhdGlvbiBjdXJyZW50ID0gdG9r
ZW4uc3RhcnRfICsgMTsgLy8gc2tpcCAnIicKLSAgTG9jYXRpb24gZW5kID0gdG9rZW4uZW5kXyAt
IDE7ICAgICAgIC8vIGRvIG5vdCBpbmNsdWRlICciJwotICB3aGlsZSAoY3VycmVudCAhPSBlbmQp
IHsKLSAgICBDaGFyIGMgPSAqY3VycmVudCsrOwotICAgIGlmIChjID09ICciJykKLSAgICAgIGJy
ZWFrOwotICAgIGVsc2UgaWYgKGMgPT0gJ1xcJykgewotICAgICAgaWYgKGN1cnJlbnQgPT0gZW5k
KQotICAgICAgICByZXR1cm4gYWRkRXJyb3IoIkVtcHR5IGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJp
bmciLCB0b2tlbiwgY3VycmVudCk7Ci0gICAgICBDaGFyIGVzY2FwZSA9ICpjdXJyZW50Kys7Ci0g
ICAgICBzd2l0Y2ggKGVzY2FwZSkgewotICAgICAgY2FzZSAnIic6Ci0gICAgICAgIGRlY29kZWQg
Kz0gJyInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJy8nOgotICAgICAgICBkZWNvZGVk
ICs9ICcvJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdcXCc6Ci0gICAgICAgIGRlY29k
ZWQgKz0gJ1xcJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdiJzoKLSAgICAgICAgZGVj
b2RlZCArPSAnXGInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2YnOgotICAgICAgICBk
ZWNvZGVkICs9ICdcZic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnbic6Ci0gICAgICAg
IGRlY29kZWQgKz0gJ1xuJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdyJzoKLSAgICAg
ICAgZGVjb2RlZCArPSAnXHInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3QnOgotICAg
ICAgICBkZWNvZGVkICs9ICdcdCc7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAndSc6IHsK
LSAgICAgICAgdW5zaWduZWQgaW50IHVuaWNvZGU7Ci0gICAgICAgIGlmICghZGVjb2RlVW5pY29k
ZUNvZGVQb2ludCh0b2tlbiwgY3VycmVudCwgZW5kLCB1bmljb2RlKSkKLSAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGRlY29kZWQgKz0gY29kZVBvaW50VG9VVEY4KHVuaWNvZGUpOwot
ICAgICAgfSBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBhZGRFcnJvcigi
QmFkIGVzY2FwZSBzZXF1ZW5jZSBpbiBzdHJpbmciLCB0b2tlbiwgY3VycmVudCk7Ci0gICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRlY29kZWQgKz0gYzsKLSAgICB9Ci0gIH0KLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgT3VyUmVhZGVyOjpkZWNvZGVVbmljb2RlQ29kZVBvaW50KFRva2Vu
JiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9u
JiBjdXJyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRp
b24gZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50JiB1bmljb2RlKSB7Ci0KLSAgaWYgKCFkZWNvZGVVbmljb2RlRXNjYXBlU2VxdWVuY2UodG9r
ZW4sIGN1cnJlbnQsIGVuZCwgdW5pY29kZSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAodW5p
Y29kZSA+PSAweEQ4MDAgJiYgdW5pY29kZSA8PSAweERCRkYpIHsKLSAgICAvLyBzdXJyb2dhdGUg
cGFpcnMKLSAgICBpZiAoZW5kIC0gY3VycmVudCA8IDYpCi0gICAgICByZXR1cm4gYWRkRXJyb3Io
Ci0gICAgICAgICAgImFkZGl0aW9uYWwgc2l4IGNoYXJhY3RlcnMgZXhwZWN0ZWQgdG8gcGFyc2Ug
dW5pY29kZSBzdXJyb2dhdGUgcGFpci4iLAotICAgICAgICAgIHRva2VuLCBjdXJyZW50KTsKLSAg
ICBpZiAoKihjdXJyZW50KyspID09ICdcXCcgJiYgKihjdXJyZW50KyspID09ICd1JykgewotICAg
ICAgdW5zaWduZWQgaW50IHN1cnJvZ2F0ZVBhaXI7Ci0gICAgICBpZiAoZGVjb2RlVW5pY29kZUVz
Y2FwZVNlcXVlbmNlKHRva2VuLCBjdXJyZW50LCBlbmQsIHN1cnJvZ2F0ZVBhaXIpKSB7Ci0gICAg
ICAgIHVuaWNvZGUgPSAweDEwMDAwICsgKCh1bmljb2RlICYgMHgzRkYpIDw8IDEwKSArIChzdXJy
b2dhdGVQYWlyICYgMHgzRkYpOwotICAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9IGVsc2UKLSAgICAgIHJldHVybiBhZGRFcnJvcigiZXhwZWN0aW5nIGFub3RoZXIgXFx1
IHRva2VuIHRvIGJlZ2luIHRoZSBzZWNvbmQgaGFsZiBvZiAiCi0gICAgICAgICAgICAgICAgICAg
ICAgImEgdW5pY29kZSBzdXJyb2dhdGUgcGFpciIsCi0gICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4sIGN1cnJlbnQpOwotICB9Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE91clJlYWRlcjo6
ZGVjb2RlVW5pY29kZUVzY2FwZVNlcXVlbmNlKFRva2VuJiB0b2tlbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24mIGN1cnJlbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIGVuZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50JiByZXRf
dW5pY29kZSkgewotICBpZiAoZW5kIC0gY3VycmVudCA8IDQpCi0gICAgcmV0dXJuIGFkZEVycm9y
KAotICAgICAgICAiQmFkIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZzogZm91ciBk
aWdpdHMgZXhwZWN0ZWQuIiwgdG9rZW4sCi0gICAgICAgIGN1cnJlbnQpOwotICBpbnQgdW5pY29k
ZSA9IDA7Ci0gIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCA0OyArK2luZGV4KSB7Ci0gICAg
Q2hhciBjID0gKmN1cnJlbnQrKzsKLSAgICB1bmljb2RlICo9IDE2OwotICAgIGlmIChjID49ICcw
JyAmJiBjIDw9ICc5JykKLSAgICAgIHVuaWNvZGUgKz0gYyAtICcwJzsKLSAgICBlbHNlIGlmIChj
ID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgIHVuaWNvZGUgKz0gYyAtICdhJyArIDEwOwotICAg
IGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQotICAgICAgdW5pY29kZSArPSBjIC0gJ0En
ICsgMTA7Ci0gICAgZWxzZQotICAgICAgcmV0dXJuIGFkZEVycm9yKAotICAgICAgICAgICJCYWQg
dW5pY29kZSBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nOiBoZXhhZGVjaW1hbCBkaWdpdCBleHBl
Y3RlZC4iLAotICAgICAgICAgIHRva2VuLCBjdXJyZW50KTsKLSAgfQotICByZXRfdW5pY29kZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5pY29kZSk7Ci0gIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIE91clJlYWRlcjo6YWRkRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBUb2tlbiYg
dG9rZW4sIExvY2F0aW9uIGV4dHJhKSB7Ci0gIEVycm9ySW5mbyBpbmZvOwotICBpbmZvLnRva2Vu
XyA9IHRva2VuOwotICBpbmZvLm1lc3NhZ2VfID0gbWVzc2FnZTsKLSAgaW5mby5leHRyYV8gPSBl
eHRyYTsKLSAgZXJyb3JzXy5wdXNoX2JhY2soaW5mbyk7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQot
Ym9vbCBPdXJSZWFkZXI6OnJlY292ZXJGcm9tRXJyb3IoVG9rZW5UeXBlIHNraXBVbnRpbFRva2Vu
KSB7Ci0gIHNpemVfdCBlcnJvckNvdW50ID0gZXJyb3JzXy5zaXplKCk7Ci0gIFRva2VuIHNraXA7
Ci0gIGZvciAoOzspIHsKLSAgICBpZiAoIXJlYWRUb2tlbihza2lwKSkKLSAgICAgIGVycm9yc18u
cmVzaXplKGVycm9yQ291bnQpOyAvLyBkaXNjYXJkIGVycm9ycyBjYXVzZWQgYnkgcmVjb3ZlcnkK
LSAgICBpZiAoc2tpcC50eXBlXyA9PSBza2lwVW50aWxUb2tlbiB8fCBza2lwLnR5cGVfID09IHRv
a2VuRW5kT2ZTdHJlYW0pCi0gICAgICBicmVhazsKLSAgfQotICBlcnJvcnNfLnJlc2l6ZShlcnJv
ckNvdW50KTsKLSAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE91clJlYWRlcjo6YWRkRXJyb3JB
bmRSZWNvdmVyKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVG9rZW4mIHRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUb2tlblR5cGUgc2tpcFVudGlsVG9rZW4pIHsKLSAgYWRkRXJyb3IobWVzc2FnZSwgdG9r
ZW4pOwotICByZXR1cm4gcmVjb3ZlckZyb21FcnJvcihza2lwVW50aWxUb2tlbik7Ci19Ci0KLVZh
bHVlJiBPdXJSZWFkZXI6OmN1cnJlbnRWYWx1ZSgpIHsgcmV0dXJuICoobm9kZXNfLnRvcCgpKTsg
fQotCi1PdXJSZWFkZXI6OkNoYXIgT3VyUmVhZGVyOjpnZXROZXh0Q2hhcigpIHsKLSAgaWYgKGN1
cnJlbnRfID09IGVuZF8pCi0gICAgcmV0dXJuIDA7Ci0gIHJldHVybiAqY3VycmVudF8rKzsKLX0K
LQotdm9pZCBPdXJSZWFkZXI6OmdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2NhdGlvbiBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBsaW5l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGNvbHVtbikg
Y29uc3QgewotICBMb2NhdGlvbiBjdXJyZW50ID0gYmVnaW5fOwotICBMb2NhdGlvbiBsYXN0TGlu
ZVN0YXJ0ID0gY3VycmVudDsKLSAgbGluZSA9IDA7Ci0gIHdoaWxlIChjdXJyZW50IDwgbG9jYXRp
b24gJiYgY3VycmVudCAhPSBlbmRfKSB7Ci0gICAgQ2hhciBjID0gKmN1cnJlbnQrKzsKLSAgICBp
ZiAoYyA9PSAnXHInKSB7Ci0gICAgICBpZiAoKmN1cnJlbnQgPT0gJ1xuJykKLSAgICAgICAgKytj
dXJyZW50OwotICAgICAgbGFzdExpbmVTdGFydCA9IGN1cnJlbnQ7Ci0gICAgICArK2xpbmU7Ci0g
ICAgfSBlbHNlIGlmIChjID09ICdcbicpIHsKLSAgICAgIGxhc3RMaW5lU3RhcnQgPSBjdXJyZW50
OwotICAgICAgKytsaW5lOwotICAgIH0KLSAgfQotICAvLyBjb2x1bW4gJiBsaW5lIHN0YXJ0IGF0
IDEKLSAgY29sdW1uID0gaW50KGxvY2F0aW9uIC0gbGFzdExpbmVTdGFydCkgKyAxOwotICArK2xp
bmU7Ci19Ci0KLVN0cmluZyBPdXJSZWFkZXI6OmdldExvY2F0aW9uTGluZUFuZENvbHVtbihMb2Nh
dGlvbiBsb2NhdGlvbikgY29uc3QgewotICBpbnQgbGluZSwgY29sdW1uOwotICBnZXRMb2NhdGlv
bkxpbmVBbmRDb2x1bW4obG9jYXRpb24sIGxpbmUsIGNvbHVtbik7Ci0gIGNoYXIgYnVmZmVyWzE4
ICsgMTYgKyAxNiArIDFdOwotICBqc29uY3BwX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksICJMaW5lICVkLCBDb2x1bW4gJWQiLCBsaW5lLCBjb2x1bW4pOwotICByZXR1cm4gYnVmZmVy
OwotfQotCi1TdHJpbmcgT3VyUmVhZGVyOjpnZXRGb3JtYXR0ZWRFcnJvck1lc3NhZ2VzKCkgY29u
c3QgewotICBTdHJpbmcgZm9ybWF0dGVkTWVzc2FnZTsKLSAgZm9yIChjb25zdCBhdXRvJiBlcnJv
ciA6IGVycm9yc18pIHsKLSAgICBmb3JtYXR0ZWRNZXNzYWdlICs9Ci0gICAgICAgICIqICIgKyBn
ZXRMb2NhdGlvbkxpbmVBbmRDb2x1bW4oZXJyb3IudG9rZW5fLnN0YXJ0XykgKyAiXG4iOwotICAg
IGZvcm1hdHRlZE1lc3NhZ2UgKz0gIiAgIiArIGVycm9yLm1lc3NhZ2VfICsgIlxuIjsKLSAgICBp
ZiAoZXJyb3IuZXh0cmFfKQotICAgICAgZm9ybWF0dGVkTWVzc2FnZSArPQotICAgICAgICAgICJT
ZWUgIiArIGdldExvY2F0aW9uTGluZUFuZENvbHVtbihlcnJvci5leHRyYV8pICsgIiBmb3IgZGV0
YWlsLlxuIjsKLSAgfQotICByZXR1cm4gZm9ybWF0dGVkTWVzc2FnZTsKLX0KLQotc3RkOjp2ZWN0
b3I8T3VyUmVhZGVyOjpTdHJ1Y3R1cmVkRXJyb3I+IE91clJlYWRlcjo6Z2V0U3RydWN0dXJlZEVy
cm9ycygpIGNvbnN0IHsKLSAgc3RkOjp2ZWN0b3I8T3VyUmVhZGVyOjpTdHJ1Y3R1cmVkRXJyb3I+
IGFsbEVycm9yczsKLSAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGVycm9yc18pIHsKLSAgICBP
dXJSZWFkZXI6OlN0cnVjdHVyZWRFcnJvciBzdHJ1Y3R1cmVkOwotICAgIHN0cnVjdHVyZWQub2Zm
c2V0X3N0YXJ0ID0gZXJyb3IudG9rZW5fLnN0YXJ0XyAtIGJlZ2luXzsKLSAgICBzdHJ1Y3R1cmVk
Lm9mZnNldF9saW1pdCA9IGVycm9yLnRva2VuXy5lbmRfIC0gYmVnaW5fOwotICAgIHN0cnVjdHVy
ZWQubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2VfOwotICAgIGFsbEVycm9ycy5wdXNoX2JhY2soc3Ry
dWN0dXJlZCk7Ci0gIH0KLSAgcmV0dXJuIGFsbEVycm9yczsKLX0KLQotYm9vbCBPdXJSZWFkZXI6
OnB1c2hFcnJvcihjb25zdCBWYWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewot
ICBwdHJkaWZmX3QgbGVuZ3RoID0gZW5kXyAtIGJlZ2luXzsKLSAgaWYgKHZhbHVlLmdldE9mZnNl
dFN0YXJ0KCkgPiBsZW5ndGggfHwgdmFsdWUuZ2V0T2Zmc2V0TGltaXQoKSA+IGxlbmd0aCkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0gIFRva2VuIHRva2VuOwotICB0b2tlbi50eXBlXyA9IHRva2VuRXJy
b3I7Ci0gIHRva2VuLnN0YXJ0XyA9IGJlZ2luXyArIHZhbHVlLmdldE9mZnNldFN0YXJ0KCk7Ci0g
IHRva2VuLmVuZF8gPSBiZWdpbl8gKyB2YWx1ZS5nZXRPZmZzZXRMaW1pdCgpOwotICBFcnJvcklu
Zm8gaW5mbzsKLSAgaW5mby50b2tlbl8gPSB0b2tlbjsKLSAgaW5mby5tZXNzYWdlXyA9IG1lc3Nh
Z2U7Ci0gIGluZm8uZXh0cmFfID0gbnVsbHB0cjsKLSAgZXJyb3JzXy5wdXNoX2JhY2soaW5mbyk7
Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIE91clJlYWRlcjo6cHVzaEVycm9yKGNvbnN0IFZh
bHVlJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYWx1ZSYgZXh0cmEpIHsKLSAg
cHRyZGlmZl90IGxlbmd0aCA9IGVuZF8gLSBiZWdpbl87Ci0gIGlmICh2YWx1ZS5nZXRPZmZzZXRT
dGFydCgpID4gbGVuZ3RoIHx8IHZhbHVlLmdldE9mZnNldExpbWl0KCkgPiBsZW5ndGggfHwKLSAg
ICAgIGV4dHJhLmdldE9mZnNldExpbWl0KCkgPiBsZW5ndGgpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBUb2tlbiB0b2tlbjsKLSAgdG9rZW4udHlwZV8gPSB0b2tlbkVycm9yOwotICB0b2tlbi5zdGFy
dF8gPSBiZWdpbl8gKyB2YWx1ZS5nZXRPZmZzZXRTdGFydCgpOwotICB0b2tlbi5lbmRfID0gYmVn
aW5fICsgdmFsdWUuZ2V0T2Zmc2V0TGltaXQoKTsKLSAgRXJyb3JJbmZvIGluZm87Ci0gIGluZm8u
dG9rZW5fID0gdG9rZW47Ci0gIGluZm8ubWVzc2FnZV8gPSBtZXNzYWdlOwotICBpbmZvLmV4dHJh
XyA9IGJlZ2luXyArIGV4dHJhLmdldE9mZnNldFN0YXJ0KCk7Ci0gIGVycm9yc18ucHVzaF9iYWNr
KGluZm8pOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXJSZWFkZXI6Omdvb2QoKSBjb25z
dCB7IHJldHVybiBlcnJvcnNfLmVtcHR5KCk7IH0KLQotY2xhc3MgT3VyQ2hhclJlYWRlciA6IHB1
YmxpYyBDaGFyUmVhZGVyIHsKLSAgYm9vbCBjb25zdCBjb2xsZWN0Q29tbWVudHNfOwotICBPdXJS
ZWFkZXIgcmVhZGVyXzsKLQotcHVibGljOgotICBPdXJDaGFyUmVhZGVyKGJvb2wgY29sbGVjdENv
bW1lbnRzLCBPdXJGZWF0dXJlcyBjb25zdCYgZmVhdHVyZXMpCi0gICAgICA6IGNvbGxlY3RDb21t
ZW50c18oY29sbGVjdENvbW1lbnRzKSwgcmVhZGVyXyhmZWF0dXJlcykge30KLSAgYm9vbCBwYXJz
ZShjaGFyIGNvbnN0KiBiZWdpbkRvYywKLSAgICAgICAgICAgICBjaGFyIGNvbnN0KiBlbmREb2Ms
Ci0gICAgICAgICAgICAgVmFsdWUqIHJvb3QsCi0gICAgICAgICAgICAgU3RyaW5nKiBlcnJzKSBv
dmVycmlkZSB7Ci0gICAgYm9vbCBvayA9IHJlYWRlcl8ucGFyc2UoYmVnaW5Eb2MsIGVuZERvYywg
KnJvb3QsIGNvbGxlY3RDb21tZW50c18pOwotICAgIGlmIChlcnJzKSB7Ci0gICAgICAqZXJycyA9
IHJlYWRlcl8uZ2V0Rm9ybWF0dGVkRXJyb3JNZXNzYWdlcygpOwotICAgIH0KLSAgICByZXR1cm4g
b2s7Ci0gIH0KLX07Ci0KLUNoYXJSZWFkZXJCdWlsZGVyOjpDaGFyUmVhZGVyQnVpbGRlcigpIHsg
c2V0RGVmYXVsdHMoJnNldHRpbmdzXyk7IH0KLUNoYXJSZWFkZXJCdWlsZGVyOjp+Q2hhclJlYWRl
ckJ1aWxkZXIoKSA9IGRlZmF1bHQ7Ci1DaGFyUmVhZGVyKiBDaGFyUmVhZGVyQnVpbGRlcjo6bmV3
Q2hhclJlYWRlcigpIGNvbnN0IHsKLSAgYm9vbCBjb2xsZWN0Q29tbWVudHMgPSBzZXR0aW5nc19b
ImNvbGxlY3RDb21tZW50cyJdLmFzQm9vbCgpOwotICBPdXJGZWF0dXJlcyBmZWF0dXJlcyA9IE91
ckZlYXR1cmVzOjphbGwoKTsKLSAgZmVhdHVyZXMuYWxsb3dDb21tZW50c18gPSBzZXR0aW5nc19b
ImFsbG93Q29tbWVudHMiXS5hc0Jvb2woKTsKLSAgZmVhdHVyZXMuc3RyaWN0Um9vdF8gPSBzZXR0
aW5nc19bInN0cmljdFJvb3QiXS5hc0Jvb2woKTsKLSAgZmVhdHVyZXMuYWxsb3dEcm9wcGVkTnVs
bFBsYWNlaG9sZGVyc18gPQotICAgICAgc2V0dGluZ3NfWyJhbGxvd0Ryb3BwZWROdWxsUGxhY2Vo
b2xkZXJzIl0uYXNCb29sKCk7Ci0gIGZlYXR1cmVzLmFsbG93TnVtZXJpY0tleXNfID0gc2V0dGlu
Z3NfWyJhbGxvd051bWVyaWNLZXlzIl0uYXNCb29sKCk7Ci0gIGZlYXR1cmVzLmFsbG93U2luZ2xl
UXVvdGVzXyA9IHNldHRpbmdzX1siYWxsb3dTaW5nbGVRdW90ZXMiXS5hc0Jvb2woKTsKLQotICAv
LyBTdGFjayBsaW1pdCBpcyBhbHdheXMgYSBzaXplX3QsIHNvIHdlIGdldCB0aGlzIGFzIGFuIHVu
c2lnbmVkIGludAotICAvLyByZWdhcmRsZXNzIG9mIGl0IHdlIGhhdmUgNjQtYml0IGludGVnZXIg
c3VwcG9ydCBlbmFibGVkLgotICBmZWF0dXJlcy5zdGFja0xpbWl0XyA9IHN0YXRpY19jYXN0PHNp
emVfdD4oc2V0dGluZ3NfWyJzdGFja0xpbWl0Il0uYXNVSW50KCkpOwotICBmZWF0dXJlcy5mYWls
SWZFeHRyYV8gPSBzZXR0aW5nc19bImZhaWxJZkV4dHJhIl0uYXNCb29sKCk7Ci0gIGZlYXR1cmVz
LnJlamVjdER1cEtleXNfID0gc2V0dGluZ3NfWyJyZWplY3REdXBLZXlzIl0uYXNCb29sKCk7Ci0g
IGZlYXR1cmVzLmFsbG93U3BlY2lhbEZsb2F0c18gPSBzZXR0aW5nc19bImFsbG93U3BlY2lhbEZs
b2F0cyJdLmFzQm9vbCgpOwotICByZXR1cm4gbmV3IE91ckNoYXJSZWFkZXIoY29sbGVjdENvbW1l
bnRzLCBmZWF0dXJlcyk7Ci19Ci1zdGF0aWMgdm9pZCBnZXRWYWxpZFJlYWRlcktleXMoc3RkOjpz
ZXQ8U3RyaW5nPiogdmFsaWRfa2V5cykgewotICB2YWxpZF9rZXlzLT5jbGVhcigpOwotICB2YWxp
ZF9rZXlzLT5pbnNlcnQoImNvbGxlY3RDb21tZW50cyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQo
ImFsbG93Q29tbWVudHMiKTsKLSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJzdHJpY3RSb290Iik7Ci0g
IHZhbGlkX2tleXMtPmluc2VydCgiYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVycyIpOwotICB2
YWxpZF9rZXlzLT5pbnNlcnQoImFsbG93TnVtZXJpY0tleXMiKTsKLSAgdmFsaWRfa2V5cy0+aW5z
ZXJ0KCJhbGxvd1NpbmdsZVF1b3RlcyIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoInN0YWNrTGlt
aXQiKTsKLSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJmYWlsSWZFeHRyYSIpOwotICB2YWxpZF9rZXlz
LT5pbnNlcnQoInJlamVjdER1cEtleXMiKTsKLSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJhbGxvd1Nw
ZWNpYWxGbG9hdHMiKTsKLX0KLWJvb2wgQ2hhclJlYWRlckJ1aWxkZXI6OnZhbGlkYXRlKEpzb246
OlZhbHVlKiBpbnZhbGlkKSBjb25zdCB7Ci0gIEpzb246OlZhbHVlIG15X2ludmFsaWQ7Ci0gIGlm
ICghaW52YWxpZCkKLSAgICBpbnZhbGlkID0gJm15X2ludmFsaWQ7IC8vIHNvIHdlIGRvIG5vdCBu
ZWVkIHRvIHRlc3QgZm9yIE5VTEwKLSAgSnNvbjo6VmFsdWUmIGludiA9ICppbnZhbGlkOwotICBz
dGQ6OnNldDxTdHJpbmc+IHZhbGlkX2tleXM7Ci0gIGdldFZhbGlkUmVhZGVyS2V5cygmdmFsaWRf
a2V5cyk7Ci0gIFZhbHVlOjpNZW1iZXJzIGtleXMgPSBzZXR0aW5nc18uZ2V0TWVtYmVyTmFtZXMo
KTsKLSAgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
OyArK2kpIHsKLSAgICBTdHJpbmcgY29uc3QmIGtleSA9IGtleXNbaV07Ci0gICAgaWYgKHZhbGlk
X2tleXMuZmluZChrZXkpID09IHZhbGlkX2tleXMuZW5kKCkpIHsKLSAgICAgIGludltrZXldID0g
c2V0dGluZ3NfW2tleV07Ci0gICAgfQotICB9Ci0gIHJldHVybiBpbnYuZW1wdHkoKTsKLX0KLVZh
bHVlJiBDaGFyUmVhZGVyQnVpbGRlcjo6b3BlcmF0b3JbXShjb25zdCBTdHJpbmcmIGtleSkgewot
ICByZXR1cm4gc2V0dGluZ3NfW2tleV07Ci19Ci0vLyBzdGF0aWMKLXZvaWQgQ2hhclJlYWRlckJ1
aWxkZXI6OnN0cmljdE1vZGUoSnNvbjo6VmFsdWUqIHNldHRpbmdzKSB7Ci0gIC8vISBbQ2hhclJl
YWRlckJ1aWxkZXJTdHJpY3RNb2RlXQotICAoKnNldHRpbmdzKVsiYWxsb3dDb21tZW50cyJdID0g
ZmFsc2U7Ci0gICgqc2V0dGluZ3MpWyJzdHJpY3RSb290Il0gPSB0cnVlOwotICAoKnNldHRpbmdz
KVsiYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVycyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3Mp
WyJhbGxvd051bWVyaWNLZXlzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbImFsbG93U2luZ2xl
UXVvdGVzIl0gPSBmYWxzZTsKLSAgKCpzZXR0aW5ncylbInN0YWNrTGltaXQiXSA9IDEwMDA7Ci0g
ICgqc2V0dGluZ3MpWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgKCpzZXR0aW5ncylbInJlamVj
dER1cEtleXMiXSA9IHRydWU7Ci0gICgqc2V0dGluZ3MpWyJhbGxvd1NwZWNpYWxGbG9hdHMiXSA9
IGZhbHNlOwotICAvLyEgW0NoYXJSZWFkZXJCdWlsZGVyU3RyaWN0TW9kZV0KLX0KLS8vIHN0YXRp
Ywotdm9pZCBDaGFyUmVhZGVyQnVpbGRlcjo6c2V0RGVmYXVsdHMoSnNvbjo6VmFsdWUqIHNldHRp
bmdzKSB7Ci0gIC8vISBbQ2hhclJlYWRlckJ1aWxkZXJEZWZhdWx0c10KLSAgKCpzZXR0aW5ncylb
ImNvbGxlY3RDb21tZW50cyJdID0gdHJ1ZTsKLSAgKCpzZXR0aW5ncylbImFsbG93Q29tbWVudHMi
XSA9IHRydWU7Ci0gICgqc2V0dGluZ3MpWyJzdHJpY3RSb290Il0gPSBmYWxzZTsKLSAgKCpzZXR0
aW5ncylbImFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRlcnMiXSA9IGZhbHNlOwotICAoKnNldHRp
bmdzKVsiYWxsb3dOdW1lcmljS2V5cyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3MpWyJhbGxvd1Np
bmdsZVF1b3RlcyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3MpWyJzdGFja0xpbWl0Il0gPSAxMDAw
OwotICAoKnNldHRpbmdzKVsiZmFpbElmRXh0cmEiXSA9IGZhbHNlOwotICAoKnNldHRpbmdzKVsi
cmVqZWN0RHVwS2V5cyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3MpWyJhbGxvd1NwZWNpYWxGbG9h
dHMiXSA9IGZhbHNlOwotICAvLyEgW0NoYXJSZWFkZXJCdWlsZGVyRGVmYXVsdHNdCi19Ci0KLS8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIGdsb2JhbCBmdW5jdGlvbnMKLQot
Ym9vbCBwYXJzZUZyb21TdHJlYW0oQ2hhclJlYWRlcjo6RmFjdG9yeSBjb25zdCYgZmFjdCwKLSAg
ICAgICAgICAgICAgICAgICAgIElTdHJlYW0mIHNpbiwKLSAgICAgICAgICAgICAgICAgICAgIFZh
bHVlKiByb290LAotICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKiBlcnJzKSB7Ci0gIE9TdHJp
bmdTdHJlYW0gc3NpbjsKLSAgc3NpbiA8PCBzaW4ucmRidWYoKTsKLSAgU3RyaW5nIGRvYyA9IHNz
aW4uc3RyKCk7Ci0gIGNoYXIgY29uc3QqIGJlZ2luID0gZG9jLmRhdGEoKTsKLSAgY2hhciBjb25z
dCogZW5kID0gYmVnaW4gKyBkb2Muc2l6ZSgpOwotICAvLyBOb3RlIHRoYXQgd2UgZG8gbm90IGFj
dHVhbGx5IG5lZWQgYSBudWxsLXRlcm1pbmF0b3IuCi0gIENoYXJSZWFkZXJQdHIgY29uc3QgcmVh
ZGVyKGZhY3QubmV3Q2hhclJlYWRlcigpKTsKLSAgcmV0dXJuIHJlYWRlci0+cGFyc2UoYmVnaW4s
IGVuZCwgcm9vdCwgZXJycyk7Ci19Ci0KLUlTdHJlYW0mIG9wZXJhdG9yPj4oSVN0cmVhbSYgc2lu
LCBWYWx1ZSYgcm9vdCkgewotICBDaGFyUmVhZGVyQnVpbGRlciBiOwotICBTdHJpbmcgZXJyczsK
LSAgYm9vbCBvayA9IHBhcnNlRnJvbVN0cmVhbShiLCBzaW4sICZyb290LCAmZXJycyk7Ci0gIGlm
ICghb2spIHsKLSAgICB0aHJvd1J1bnRpbWVFcnJvcihlcnJzKTsKLSAgfQotICByZXR1cm4gc2lu
OwotfQotCi19IC8vIG5hbWVzcGFjZSBKc29uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNv
bi9qc29uX3Rvb2wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fdG9vbC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1YzEzZjFmZWQyMDcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3NyYy9saWJfanNvbi9qc29uX3Rvb2wuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25D
cHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBk
b21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24u
Ci0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNw
cC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaWZuZGVmIExJQl9KU09OQ1BQX0pTT05fVE9P
TF9IX0lOQ0xVREVECi0jZGVmaW5lIExJQl9KU09OQ1BQX0pTT05fVE9PTF9IX0lOQ0xVREVECi0K
LSNpZiAhZGVmaW5lZChKU09OX0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlIDxqc29uL2NvbmZp
Zy5oPgotI2VuZGlmCi0KLS8vIEFsc28gc3VwcG9ydCBvbGQgZmxhZyBOT19MT0NBTEVfU1VQUE9S
VAotI2lmZGVmIE5PX0xPQ0FMRV9TVVBQT1JUCi0jZGVmaW5lIEpTT05DUFBfTk9fTE9DQUxFX1NV
UFBPUlQKLSNlbmRpZgotCi0jaWZuZGVmIEpTT05DUFBfTk9fTE9DQUxFX1NVUFBPUlQKLSNpbmNs
dWRlIDxjbG9jYWxlPgotI2VuZGlmCi0KLS8qIFRoaXMgaGVhZGVyIHByb3ZpZGVzIGNvbW1vbiBz
dHJpbmcgbWFuaXB1bGF0aW9uIHN1cHBvcnQsIHN1Y2ggYXMgVVRGLTgsCi0gKiBwb3J0YWJsZSBj
b252ZXJzaW9uIGZyb20vdG8gc3RyaW5nLi4uCi0gKgotICogSXQgaXMgYW4gaW50ZXJuYWwgaGVh
ZGVyIHRoYXQgbXVzdCBub3QgYmUgZXhwb3NlZC4KLSAqLwotCi1uYW1lc3BhY2UgSnNvbiB7Ci1z
dGF0aWMgaW5saW5lIGNoYXIgZ2V0RGVjaW1hbFBvaW50KCkgewotI2lmZGVmIEpTT05DUFBfTk9f
TE9DQUxFX1NVUFBPUlQKLSAgcmV0dXJuICdcMCc7Ci0jZWxzZQotICBzdHJ1Y3QgbGNvbnYqIGxj
ID0gbG9jYWxlY29udigpOwotICByZXR1cm4gbGMgPyAqKGxjLT5kZWNpbWFsX3BvaW50KSA6ICdc
MCc7Ci0jZW5kaWYKLX0KLQotLy8vIENvbnZlcnRzIGEgdW5pY29kZSBjb2RlLXBvaW50IHRvIFVU
Ri04Lgotc3RhdGljIGlubGluZSBTdHJpbmcgY29kZVBvaW50VG9VVEY4KHVuc2lnbmVkIGludCBj
cCkgewotICBTdHJpbmcgcmVzdWx0OwotCi0gIC8vIGJhc2VkIG9uIGRlc2NyaXB0aW9uIGZyb20g
aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOAotCi0gIGlmIChjcCA8PSAweDdmKSB7
Ci0gICAgcmVzdWx0LnJlc2l6ZSgxKTsKLSAgICByZXN1bHRbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PihjcCk7Ci0gIH0gZWxzZSBpZiAoY3AgPD0gMHg3RkYpIHsKLSAgICByZXN1bHQucmVzaXplKDIp
OwotICAgIHJlc3VsdFsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCAoMHgzZiAmIGNwKSk7
Ci0gICAgcmVzdWx0WzBdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oMHhDMCB8ICgweDFmICYgKGNwID4+
IDYpKSk7Ci0gIH0gZWxzZSBpZiAoY3AgPD0gMHhGRkZGKSB7Ci0gICAgcmVzdWx0LnJlc2l6ZSgz
KTsKLSAgICByZXN1bHRbMl0gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4M2YgJiBjcCkp
OwotICAgIHJlc3VsdFsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCAoMHgzZiAmIChjcCA+
PiA2KSkpOwotICAgIHJlc3VsdFswXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4RTAgfCAoMHhmICYg
KGNwID4+IDEyKSkpOwotICB9IGVsc2UgaWYgKGNwIDw9IDB4MTBGRkZGKSB7Ci0gICAgcmVzdWx0
LnJlc2l6ZSg0KTsKLSAgICByZXN1bHRbM10gPSBzdGF0aWNfY2FzdDxjaGFyPigweDgwIHwgKDB4
M2YgJiBjcCkpOwotICAgIHJlc3VsdFsyXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAgfCAoMHgz
ZiAmIChjcCA+PiA2KSkpOwotICAgIHJlc3VsdFsxXSA9IHN0YXRpY19jYXN0PGNoYXI+KDB4ODAg
fCAoMHgzZiAmIChjcCA+PiAxMikpKTsKLSAgICByZXN1bHRbMF0gPSBzdGF0aWNfY2FzdDxjaGFy
PigweEYwIHwgKDB4NyAmIChjcCA+PiAxOCkpKTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19
Ci0KLWVudW0gewotICAvLy8gQ29uc3RhbnQgdGhhdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBi
dWZmZXIgdGhhdCBtdXN0IGJlIHBhc3NlZCB0bwotICAvLy8gdWludFRvU3RyaW5nLgotICB1aW50
VG9TdHJpbmdCdWZmZXJTaXplID0gMyAqIHNpemVvZihMYXJnZXN0VUludCkgKyAxCi19OwotCi0v
LyBEZWZpbmVzIGEgY2hhciBidWZmZXIgZm9yIHVzZSB3aXRoIHVpbnRUb1N0cmluZygpLgotdHlw
ZWRlZiBjaGFyIFVJbnRUb1N0cmluZ0J1ZmZlclt1aW50VG9TdHJpbmdCdWZmZXJTaXplXTsKLQot
LyoqIENvbnZlcnRzIGFuIHVuc2lnbmVkIGludGVnZXIgdG8gc3RyaW5nLgotICogQHBhcmFtIHZh
bHVlIFVuc2lnbmVkIGludGVnZXIgdG8gY29udmVydCB0byBzdHJpbmcKLSAqIEBwYXJhbSBjdXJy
ZW50IElucHV0L091dHB1dCBzdHJpbmcgYnVmZmVyLgotICogICAgICAgIE11c3QgaGF2ZSBhdCBs
ZWFzdCB1aW50VG9TdHJpbmdCdWZmZXJTaXplIGNoYXJzIGZyZWUuCi0gKi8KLXN0YXRpYyBpbmxp
bmUgdm9pZCB1aW50VG9TdHJpbmcoTGFyZ2VzdFVJbnQgdmFsdWUsIGNoYXIqJiBjdXJyZW50KSB7
Ci0gICotLWN1cnJlbnQgPSAwOwotICBkbyB7Ci0gICAgKi0tY3VycmVudCA9IHN0YXRpY19jYXN0
PGNoYXI+KHZhbHVlICUgMTBVICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCcwJykpOwotICAgIHZh
bHVlIC89IDEwOwotICB9IHdoaWxlICh2YWx1ZSAhPSAwKTsKLX0KLQotLyoqIENoYW5nZSAnLCcg
dG8gJy4nIGV2ZXJ5d2hlcmUgaW4gYnVmZmVyLgotICoKLSAqIFdlIGhhZCBhIHNvcGhpc3RpY2F0
ZWQgd2F5LCBidXQgaXQgZGlkIG5vdCB3b3JrIGluIFdpbkNFLgotICogQHNlZSBodHRwczovL2dp
dGh1Yi5jb20vb3Blbi1zb3VyY2UtcGFyc2Vycy9qc29uY3BwL3B1bGwvOQotICovCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgSXRlcj4gSXRlciBmaXhOdW1lcmljTG9jYWxlKEl0ZXIgYmVnaW4sIEl0ZXIg
ZW5kKSB7Ci0gIGZvciAoOyBiZWdpbiAhPSBlbmQ7ICsrYmVnaW4pIHsKLSAgICBpZiAoKmJlZ2lu
ID09ICcsJykgewotICAgICAgKmJlZ2luID0gJy4nOwotICAgIH0KLSAgfQotICByZXR1cm4gYmVn
aW47Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPiB2b2lkIGZpeE51bWVyaWNMb2NhbGVJ
bnB1dChJdGVyIGJlZ2luLCBJdGVyIGVuZCkgewotICBjaGFyIGRlY2ltYWxQb2ludCA9IGdldERl
Y2ltYWxQb2ludCgpOwotICBpZiAoZGVjaW1hbFBvaW50ID09ICdcMCcgfHwgZGVjaW1hbFBvaW50
ID09ICcuJykgewotICAgIHJldHVybjsKLSAgfQotICBmb3IgKDsgYmVnaW4gIT0gZW5kOyArK2Jl
Z2luKSB7Ci0gICAgaWYgKCpiZWdpbiA9PSAnLicpIHsKLSAgICAgICpiZWdpbiA9IGRlY2ltYWxQ
b2ludDsKLSAgICB9Ci0gIH0KLX0KLQotLyoqCi0gKiBSZXR1cm4gaXRlcmF0b3IgdGhhdCB3b3Vs
ZCBiZSB0aGUgbmV3IGVuZCBvZiB0aGUgcmFuZ2UgW2JlZ2luLGVuZCksIGlmIHdlCi0gKiB3ZXJl
IHRvIGRlbGV0ZSB6ZXJvcyBpbiB0aGUgZW5kIG9mIHN0cmluZywgYnV0IG5vdCB0aGUgbGFzdCB6
ZXJvIGJlZm9yZSAnLicuCi0gKi8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPiBJdGVyIGZpeFpl
cm9zSW5UaGVFbmQoSXRlciBiZWdpbiwgSXRlciBlbmQpIHsKLSAgZm9yICg7IGJlZ2luICE9IGVu
ZDsgLS1lbmQpIHsKLSAgICBpZiAoKihlbmQgLSAxKSAhPSAnMCcpIHsKLSAgICAgIHJldHVybiBl
bmQ7Ci0gICAgfQotICAgIC8vIERvbid0IGRlbGV0ZSB0aGUgbGFzdCB6ZXJvIGJlZm9yZSB0aGUg
ZGVjaW1hbCBwb2ludC4KLSAgICBpZiAoYmVnaW4gIT0gKGVuZCAtIDEpICYmICooZW5kIC0gMikg
PT0gJy4nKSB7Ci0gICAgICByZXR1cm4gZW5kOwotICAgIH0KLSAgfQotICByZXR1cm4gZW5kOwot
fQotCi19IC8vIG5hbWVzcGFjZSBKc29uCi0KLSNlbmRpZiAvLyBMSUJfSlNPTkNQUF9KU09OX1RP
T0xfSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl92YWx1ZS5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDgxM2MxNmEwZThkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGli
X2pzb24vanNvbl92YWx1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzA3ICswLDAgQEAKLS8v
IENvcHlyaWdodCAyMDExIEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9y
cwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYg
ZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUg
ZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vm
b3JnZS5uZXQvTElDRU5TRQotCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0j
aW5jbHVkZSA8anNvbi9hc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8anNvbi92YWx1ZS5oPgotI2lu
Y2x1ZGUgPGpzb24vd3JpdGVyLmg+Ci0jZW5kaWYgLy8gaWYgIWRlZmluZWQoSlNPTl9JU19BTUFM
R0FNQVRJT04pCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRl
IDxjc3RyaW5nPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpZmRl
ZiBKU09OX1VTRV9DUFBUTAotI2luY2x1ZGUgPGNwcHRsL2NvbnN0c3RyaW5nLmg+Ci0jZW5kaWYK
LSNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIG1pbigpCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAvLyBz
aXplX3QKLQotLy8gUHJvdmlkZSBpbXBsZW1lbnRhdGlvbiBlcXVpdmFsZW50IG9mIHN0ZDo6c25w
cmludGYgZm9yIG9sZGVyIF9NU0MgY29tcGlsZXJzCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
X01TQ19WRVIgPCAxOTAwCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci1zdGF0aWMgaW50IG1zdmNfcHJl
MTkwMF9jOTlfdnNucHJpbnRmKGNoYXIqIG91dEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFfbGlzdCBhcCkgewotICBpbnQgY291bnQgPSAtMTsKLSAgaWYgKHNpemUg
IT0gMCkKLSAgICBjb3VudCA9IF92c25wcmludGZfcyhvdXRCdWYsIHNpemUsIF9UUlVOQ0FURSwg
Zm9ybWF0LCBhcCk7Ci0gIGlmIChjb3VudCA9PSAtMSkKLSAgICBjb3VudCA9IF92c2NwcmludGYo
Zm9ybWF0LCBhcCk7Ci0gIHJldHVybiBjb3VudDsKLX0KLQotaW50IEpTT05fQVBJIG1zdmNfcHJl
MTkwMF9jOTlfc25wcmludGYoY2hhciogb3V0QnVmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuLi4pIHsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQoYXAsIGZvcm1h
dCk7Ci0gIGNvbnN0IGludCBjb3VudCA9IG1zdmNfcHJlMTkwMF9jOTlfdnNucHJpbnRmKG91dEJ1
Ziwgc2l6ZSwgZm9ybWF0LCBhcCk7Ci0gIHZhX2VuZChhcCk7Ci0gIHJldHVybiBjb3VudDsKLX0K
LSNlbmRpZgotCi0vLyBEaXNhYmxlIHdhcm5pbmcgQzQ3MDIgOiB1bnJlYWNoYWJsZSBjb2RlCi0j
aWYgZGVmaW5lZChfTVNDX1ZFUikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcwMikKLSNl
bmRpZgotCi0jZGVmaW5lIEpTT05fQVNTRVJUX1VOUkVBQ0hBQkxFIGFzc2VydChmYWxzZSkKLQot
bmFtZXNwYWNlIEpzb24gewotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFQ+IGNsb25lVW5pcXVlKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUPiYgcCkgewotICBz
dGQ6OnVuaXF1ZV9wdHI8VD4gcjsKLSAgaWYgKHApIHsKLSAgICByID0gc3RkOjp1bmlxdWVfcHRy
PFQ+KG5ldyBUKCpwKSk7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLS8vIFRoaXMgaXMgYSB3YWxr
YXJvdW5kIHRvIGF2b2lkIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb2YgVmFsdWU6Om51bGwu
Ci0vLyBrTnVsbCBtdXN0IGJlIHdvcmQtYWxpZ25lZCB0byBhdm9pZCBjcmFzaGluZyBvbiBBUk0u
ICBXZSB1c2UgYW4gYWxpZ25tZW50IG9mCi0vLyA4IChpbnN0ZWFkIG9mIDQpIGFzIGEgYml0IG9m
IGZ1dHVyZS1wcm9vZmluZy4KLSNpZiBkZWZpbmVkKF9fQVJNRUxfXykKLSNkZWZpbmUgQUxJR05B
UyhieXRlX2FsaWdubWVudCkgX19hdHRyaWJ1dGVfXygoYWxpZ25lZChieXRlX2FsaWdubWVudCkp
KQotI2Vsc2UKLSNkZWZpbmUgQUxJR05BUyhieXRlX2FsaWdubWVudCkKLSNlbmRpZgotCi0vLyBz
dGF0aWMKLVZhbHVlIGNvbnN0JiBWYWx1ZTo6bnVsbFNpbmdsZXRvbigpIHsKLSAgc3RhdGljIFZh
bHVlIGNvbnN0IG51bGxTdGF0aWM7Ci0gIHJldHVybiBudWxsU3RhdGljOwotfQotCi0jaWYgSlNP
Tl9VU0VfTlVMTFJFRgotLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSdsbCBsZWF2
ZSB0aGVzZSBnbG9iYWwgcmVmZXJlbmNlcyBhcm91bmQsIGJ1dAotLy8gRE8gTk9UIHVzZSB0aGVt
IGluIEpTT05DUFAgbGlicmFyeSBjb2RlIGFueSBtb3JlIQotLy8gc3RhdGljCi1WYWx1ZSBjb25z
dCYgVmFsdWU6Om51bGwgPSBWYWx1ZTo6bnVsbFNpbmdsZXRvbigpOwotCi0vLyBzdGF0aWMKLVZh
bHVlIGNvbnN0JiBWYWx1ZTo6bnVsbFJlZiA9IFZhbHVlOjpudWxsU2luZ2xldG9uKCk7Ci0jZW5k
aWYKLQotY29uc3QgSW50IFZhbHVlOjptaW5JbnQgPSBJbnQofihVSW50KC0xKSAvIDIpKTsKLWNv
bnN0IEludCBWYWx1ZTo6bWF4SW50ID0gSW50KFVJbnQoLTEpIC8gMik7Ci1jb25zdCBVSW50IFZh
bHVlOjptYXhVSW50ID0gVUludCgtMSk7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLWNv
bnN0IEludDY0IFZhbHVlOjptaW5JbnQ2NCA9IEludDY0KH4oVUludDY0KC0xKSAvIDIpKTsKLWNv
bnN0IEludDY0IFZhbHVlOjptYXhJbnQ2NCA9IEludDY0KFVJbnQ2NCgtMSkgLyAyKTsKLWNvbnN0
IFVJbnQ2NCBWYWx1ZTo6bWF4VUludDY0ID0gVUludDY0KC0xKTsKLS8vIFRoZSBjb25zdGFudCBp
cyBoYXJkLWNvZGVkIGJlY2F1c2Ugc29tZSBjb21waWxlciBoYXZlIHRyb3VibGUKLS8vIGNvbnZl
cnRpbmcgVmFsdWU6Om1heFVJbnQ2NCB0byBhIGRvdWJsZSBjb3JyZWN0bHkgKEFJWC94bEMpLgot
Ly8gQXNzdW1lcyB0aGF0IFVJbnQ2NCBpcyBhIDY0IGJpdHMgaW50ZWdlci4KLXN0YXRpYyBjb25z
dCBkb3VibGUgbWF4VUludDY0QXNEb3VibGUgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNS4wOwotI2Vu
ZGlmIC8vIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi1jb25zdCBMYXJnZXN0SW50IFZhbHVlOjpt
aW5MYXJnZXN0SW50ID0gTGFyZ2VzdEludCh+KExhcmdlc3RVSW50KC0xKSAvIDIpKTsKLWNvbnN0
IExhcmdlc3RJbnQgVmFsdWU6Om1heExhcmdlc3RJbnQgPSBMYXJnZXN0SW50KExhcmdlc3RVSW50
KC0xKSAvIDIpOwotY29uc3QgTGFyZ2VzdFVJbnQgVmFsdWU6Om1heExhcmdlc3RVSW50ID0gTGFy
Z2VzdFVJbnQoLTEpOwotCi1jb25zdCBVSW50IFZhbHVlOjpkZWZhdWx0UmVhbFByZWNpc2lvbiA9
IDE3OwotCi0jaWYgIWRlZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0YXRpYyBpbmxpbmUgYm9vbCBJblJh
bmdlKGRvdWJsZSBkLCBUIG1pbiwgVSBtYXgpIHsKLSAgLy8gVGhlIGNhc3RzIGNhbiBsb3NlIHBy
ZWNpc2lvbiwgYnV0IHdlIGFyZSBsb29raW5nIG9ubHkgZm9yCi0gIC8vIGFuIGFwcHJveGltYXRl
IHJhbmdlLiBNaWdodCBmYWlsIG9uIGVkZ2UgY2FzZXMgdGhvdWdoLiB+Y2R1bm4KLSAgLy8gcmV0
dXJuIGQgPj0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtaW4pICYmIGQgPD0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihtYXgpOwotICByZXR1cm4gZCA+PSBtaW4gJiYgZCA8PSBtYXg7Ci19Ci0jZWxzZSAgLy8g
aWYgIWRlZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi1zdGF0aWMgaW5s
aW5lIGRvdWJsZSBpbnRlZ2VyVG9Eb3VibGUoSnNvbjo6VUludDY0IHZhbHVlKSB7Ci0gIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KEludDY0KHZhbHVlIC8gMikpICogMi4wICsKLSAgICAgICAg
IHN0YXRpY19jYXN0PGRvdWJsZT4oSW50NjQodmFsdWUgJiAxKSk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgaW5saW5lIGRvdWJsZSBpbnRlZ2VyVG9Eb3VibGUoVCB2YWx1ZSkg
ewotICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSk7Ci19Ci0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotc3RhdGljIGlubGluZSBib29sIEluUmFuZ2UoZG91Ymxl
IGQsIFQgbWluLCBVIG1heCkgewotICByZXR1cm4gZCA+PSBpbnRlZ2VyVG9Eb3VibGUobWluKSAm
JiBkIDw9IGludGVnZXJUb0RvdWJsZShtYXgpOwotfQotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpT
T05fVVNFX0lOVDY0X0RPVUJMRV9DT05WRVJTSU9OKQotCi0vKiogRHVwbGljYXRlcyB0aGUgc3Bl
Y2lmaWVkIHN0cmluZyB2YWx1ZS4KLSAqIEBwYXJhbSB2YWx1ZSBQb2ludGVyIHRvIHRoZSBzdHJp
bmcgdG8gZHVwbGljYXRlLiBNdXN0IGJlIHplcm8tdGVybWluYXRlZCBpZgotICogICAgICAgICAg
ICAgIGxlbmd0aCBpcyAidW5rbm93biIuCi0gKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiB0aGUg
dmFsdWUuIGlmIGVxdWFscyB0byB1bmtub3duLCB0aGVuIGl0IHdpbGwgYmUKLSAqICAgICAgICAg
ICAgICAgY29tcHV0ZWQgdXNpbmcgc3RybGVuKHZhbHVlKS4KLSAqIEByZXR1cm4gUG9pbnRlciBv
biB0aGUgZHVwbGljYXRlIGluc3RhbmNlIG9mIHN0cmluZy4KLSAqLwotc3RhdGljIGlubGluZSBj
aGFyKiBkdXBsaWNhdGVTdHJpbmdWYWx1ZShjb25zdCBjaGFyKiB2YWx1ZSwgc2l6ZV90IGxlbmd0
aCkgewotICAvLyBBdm9pZCBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIHRoZSBjYWxsIHRvIG1hbGxv
YyBiZWxvdyBieSBsaW1pdGluZyBsZW5ndGgKLSAgLy8gdG8gYSBzYW5lIHZhbHVlLgotICBpZiAo
bGVuZ3RoID49IHN0YXRpY19jYXN0PHNpemVfdD4oVmFsdWU6Om1heEludCkpCi0gICAgbGVuZ3Ro
ID0gVmFsdWU6Om1heEludCAtIDE7Ci0KLSAgY2hhciogbmV3U3RyaW5nID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KG1hbGxvYyhsZW5ndGggKyAxKSk7Ci0gIGlmIChuZXdTdHJpbmcgPT0gbnVsbHB0cikg
ewotICAgIHRocm93UnVudGltZUVycm9yKCJpbiBKc29uOjpWYWx1ZTo6ZHVwbGljYXRlU3RyaW5n
VmFsdWUoKTogIgotICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgc3Ry
aW5nIHZhbHVlIGJ1ZmZlciIpOwotICB9Ci0gIG1lbWNweShuZXdTdHJpbmcsIHZhbHVlLCBsZW5n
dGgpOwotICBuZXdTdHJpbmdbbGVuZ3RoXSA9IDA7Ci0gIHJldHVybiBuZXdTdHJpbmc7Ci19Ci0K
LS8qIFJlY29yZCB0aGUgbGVuZ3RoIGFzIGEgcHJlZml4LgotICovCi1zdGF0aWMgaW5saW5lIGNo
YXIqIGR1cGxpY2F0ZUFuZFByZWZpeFN0cmluZ1ZhbHVlKGNvbnN0IGNoYXIqIHZhbHVlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbGVuZ3RoKSB7Ci0gIC8vIEF2b2lkIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGNhbGwg
dG8gbWFsbG9jIGJlbG93IGJ5IGxpbWl0aW5nIGxlbmd0aAotICAvLyB0byBhIHNhbmUgdmFsdWUu
Ci0gIEpTT05fQVNTRVJUX01FU1NBR0UobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihW
YWx1ZTo6bWF4SW50KSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
b2YodW5zaWduZWQpIC0gMVUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVl
OjpkdXBsaWNhdGVBbmRQcmVmaXhTdHJpbmdWYWx1ZSgpOiAiCi0gICAgICAgICAgICAgICAgICAg
ICAgImxlbmd0aCB0b28gYmlnIGZvciBwcmVmaXhpbmciKTsKLSAgdW5zaWduZWQgYWN0dWFsTGVu
Z3RoID0gbGVuZ3RoICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemVvZih1bnNpZ25lZCkpICsg
MVU7Ci0gIGNoYXIqIG5ld1N0cmluZyA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoYWN0dWFs
TGVuZ3RoKSk7Ci0gIGlmIChuZXdTdHJpbmcgPT0gbnVsbHB0cikgewotICAgIHRocm93UnVudGlt
ZUVycm9yKCJpbiBKc29uOjpWYWx1ZTo6ZHVwbGljYXRlQW5kUHJlZml4U3RyaW5nVmFsdWUoKTog
IgotICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgc3RyaW5nIHZhbHVl
IGJ1ZmZlciIpOwotICB9Ci0gICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4obmV3U3RyaW5n
KSA9IGxlbmd0aDsKLSAgbWVtY3B5KG5ld1N0cmluZyArIHNpemVvZih1bnNpZ25lZCksIHZhbHVl
LCBsZW5ndGgpOwotICBuZXdTdHJpbmdbYWN0dWFsTGVuZ3RoIC0gMVVdID0KLSAgICAgIDA7IC8v
IHRvIGF2b2lkIGJ1ZmZlciBvdmVyLXJ1biBhY2NpZGVudHMgYnkgdXNlcnMgbGF0ZXIKLSAgcmV0
dXJuIG5ld1N0cmluZzsKLX0KLWlubGluZSBzdGF0aWMgdm9pZCBkZWNvZGVQcmVmaXhlZFN0cmlu
Zyhib29sIGlzUHJlZml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciBjb25zdCogcHJlZml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQqIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIGNvbnN0KiogdmFsdWUpIHsKLSAgaWYgKCFpc1ByZWZpeGVkKSB7Ci0g
ICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJsZW4ocHJlZml4ZWQpKTsKLSAg
ICAqdmFsdWUgPSBwcmVmaXhlZDsKLSAgfSBlbHNlIHsKLSAgICAqbGVuZ3RoID0gKnJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY29uc3QqPihwcmVmaXhlZCk7Ci0gICAgKnZhbHVlID0gcHJlZml4
ZWQgKyBzaXplb2YodW5zaWduZWQpOwotICB9Ci19Ci0vKiogRnJlZSB0aGUgc3RyaW5nIGR1cGxp
Y2F0ZWQgYnkKLSAqIGR1cGxpY2F0ZVN0cmluZ1ZhbHVlKCkvZHVwbGljYXRlQW5kUHJlZml4U3Ry
aW5nVmFsdWUoKS4KLSAqLwotI2lmIEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWQotc3RhdGlj
IGlubGluZSB2b2lkIHJlbGVhc2VQcmVmaXhlZFN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlKSB7Ci0g
IHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gIGNoYXIgY29uc3QqIHZhbHVlRGVjb2RlZDsKLSAgZGVj
b2RlUHJlZml4ZWRTdHJpbmcodHJ1ZSwgdmFsdWUsICZsZW5ndGgsICZ2YWx1ZURlY29kZWQpOwot
ICBzaXplX3QgY29uc3Qgc2l6ZSA9IHNpemVvZih1bnNpZ25lZCkgKyBsZW5ndGggKyAxVTsKLSAg
bWVtc2V0KHZhbHVlLCAwLCBzaXplKTsKLSAgZnJlZSh2YWx1ZSk7Ci19Ci1zdGF0aWMgaW5saW5l
IHZvaWQgcmVsZWFzZVN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlLCB1bnNpZ25lZCBsZW5ndGgpIHsK
LSAgLy8gbGVuZ3RoPT0wID0+IHdlIGFsbG9jYXRlZCB0aGUgc3RyaW5ncyBtZW1vcnkKLSAgc2l6
ZV90IHNpemUgPSAobGVuZ3RoID09IDApID8gc3RybGVuKHZhbHVlKSA6IGxlbmd0aDsKLSAgbWVt
c2V0KHZhbHVlLCAwLCBzaXplKTsKLSAgZnJlZSh2YWx1ZSk7Ci19Ci0jZWxzZSAgLy8gIUpTT05D
UFBfVVNJTkdfU0VDVVJFX01FTU9SWQotc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VQcmVmaXhl
ZFN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlKSB7IGZyZWUodmFsdWUpOyB9Ci1zdGF0aWMgaW5saW5l
IHZvaWQgcmVsZWFzZVN0cmluZ1ZhbHVlKGNoYXIqIHZhbHVlLCB1bnNpZ25lZCkgeyBmcmVlKHZh
bHVlKTsgfQotI2VuZGlmIC8vIEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWQotCi19IC8vIG5h
bWVzcGFjZSBKc29uCi0KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LS8vIFZhbHVlSW50ZXJuYWxzLi4uCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vCi0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0KLSNpbmNsdWRlICJq
c29uX3ZhbHVlaXRlcmF0b3IuaW5sIgotI2VuZGlmIC8vIGlmICFkZWZpbmVkKEpTT05fSVNfQU1B
TEdBTUFUSU9OKQotCi1uYW1lc3BhY2UgSnNvbiB7Ci0KLSNpZiBKU09OX1VTRV9FWENFUFRJT04K
LUV4Y2VwdGlvbjo6RXhjZXB0aW9uKFN0cmluZyBtc2cpIDogbXNnXyhzdGQ6Om1vdmUobXNnKSkg
e30KLUV4Y2VwdGlvbjo6fkV4Y2VwdGlvbigpIEpTT05DUFBfTk9FWENFUFQge30KLWNoYXIgY29u
c3QqIEV4Y2VwdGlvbjo6d2hhdCgpIGNvbnN0IEpTT05DUFBfTk9FWENFUFQgeyByZXR1cm4gbXNn
Xy5jX3N0cigpOyB9Ci1SdW50aW1lRXJyb3I6OlJ1bnRpbWVFcnJvcihTdHJpbmcgY29uc3QmIG1z
ZykgOiBFeGNlcHRpb24obXNnKSB7fQotTG9naWNFcnJvcjo6TG9naWNFcnJvcihTdHJpbmcgY29u
c3QmIG1zZykgOiBFeGNlcHRpb24obXNnKSB7fQotW1tub3JldHVybl1dIHZvaWQgdGhyb3dSdW50
aW1lRXJyb3IoU3RyaW5nIGNvbnN0JiBtc2cpIHsKLSAgdGhyb3cgUnVudGltZUVycm9yKG1zZyk7
Ci19Ci1bW25vcmV0dXJuXV0gdm9pZCB0aHJvd0xvZ2ljRXJyb3IoU3RyaW5nIGNvbnN0JiBtc2cp
IHsKLSAgdGhyb3cgTG9naWNFcnJvcihtc2cpOwotfQotI2Vsc2UgLy8gIUpTT05fVVNFX0VYQ0VQ
VElPTgotW1tub3JldHVybl1dIHZvaWQgdGhyb3dSdW50aW1lRXJyb3IoU3RyaW5nIGNvbnN0JiBt
c2cpIHsgYWJvcnQoKTsgfQotW1tub3JldHVybl1dIHZvaWQgdGhyb3dMb2dpY0Vycm9yKFN0cmlu
ZyBjb25zdCYgbXNnKSB7IGFib3J0KCk7IH0KLSNlbmRpZgotCi0vLyAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBjbGFzcyBWYWx1ZTo6Q1pTdHJpbmcKLS8vIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gTm90ZXM6IHBvbGljeV8gaW5k
aWNhdGVzIGlmIHRoZSBzdHJpbmcgd2FzIGFsbG9jYXRlZCB3aGVuCi0vLyBhIHN0cmluZyBpcyBz
dG9yZWQuCi0KLVZhbHVlOjpDWlN0cmluZzo6Q1pTdHJpbmcoQXJyYXlJbmRleCBpbmRleCkgOiBj
c3RyXyhudWxscHRyKSwgaW5kZXhfKGluZGV4KSB7fQotCi1WYWx1ZTo6Q1pTdHJpbmc6OkNaU3Ry
aW5nKGNoYXIgY29uc3QqIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGlvblBvbGljeSBhbGxv
Y2F0ZSkKLSAgICA6IGNzdHJfKHN0cikgewotICAvLyBhbGxvY2F0ZSAhPSBkdXBsaWNhdGUKLSAg
c3RvcmFnZV8ucG9saWN5XyA9IGFsbG9jYXRlICYgMHgzOwotICBzdG9yYWdlXy5sZW5ndGhfID0g
bGVuZ3RoICYgMHgzRkZGRkZGRjsKLX0KLQotVmFsdWU6OkNaU3RyaW5nOjpDWlN0cmluZyhjb25z
dCBDWlN0cmluZyYgb3RoZXIpIHsKLSAgY3N0cl8gPSAob3RoZXIuc3RvcmFnZV8ucG9saWN5XyAh
PSBub0R1cGxpY2F0aW9uICYmIG90aGVyLmNzdHJfICE9IG51bGxwdHIKLSAgICAgICAgICAgICAg
ID8gZHVwbGljYXRlU3RyaW5nVmFsdWUob3RoZXIuY3N0cl8sIG90aGVyLnN0b3JhZ2VfLmxlbmd0
aF8pCi0gICAgICAgICAgICAgICA6IG90aGVyLmNzdHJfKTsKLSAgc3RvcmFnZV8ucG9saWN5XyA9
Ci0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oCi0gICAgICAgICAgb3RoZXIuY3N0cl8KLSAg
ICAgICAgICAgICAgPyAoc3RhdGljX2Nhc3Q8RHVwbGljYXRpb25Qb2xpY3k+KG90aGVyLnN0b3Jh
Z2VfLnBvbGljeV8pID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbm9EdXBsaWNhdGlvbgot
ICAgICAgICAgICAgICAgICAgICAgPyBub0R1cGxpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAg
ICA6IGR1cGxpY2F0ZSkKLSAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxEdXBsaWNhdGlvblBv
bGljeT4ob3RoZXIuc3RvcmFnZV8ucG9saWN5XykpICYKLSAgICAgIDNVOwotICBzdG9yYWdlXy5s
ZW5ndGhfID0gb3RoZXIuc3RvcmFnZV8ubGVuZ3RoXzsKLX0KLQotVmFsdWU6OkNaU3RyaW5nOjpD
WlN0cmluZyhDWlN0cmluZyYmIG90aGVyKQotICAgIDogY3N0cl8ob3RoZXIuY3N0cl8pLCBpbmRl
eF8ob3RoZXIuaW5kZXhfKSB7Ci0gIG90aGVyLmNzdHJfID0gbnVsbHB0cjsKLX0KLQotVmFsdWU6
OkNaU3RyaW5nOjp+Q1pTdHJpbmcoKSB7Ci0gIGlmIChjc3RyXyAmJiBzdG9yYWdlXy5wb2xpY3lf
ID09IGR1cGxpY2F0ZSkgewotICAgIHJlbGVhc2VTdHJpbmdWYWx1ZShjb25zdF9jYXN0PGNoYXIq
Pihjc3RyXyksCi0gICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VfLmxlbmd0aF8gKyAxdSk7
IC8vICsxIGZvciBudWxsIHRlcm1pbmF0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBmb3Igc2FrZSBvZgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZW5lc3MgYnV0IG5v
dCBhY3R1YWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBuZWNlc3NhcnkKLSAgfQotfQotCi12b2lkIFZhbHVlOjpDWlN0cmluZzo6c3dhcChDWlN0
cmluZyYgb3RoZXIpIHsKLSAgc3RkOjpzd2FwKGNzdHJfLCBvdGhlci5jc3RyXyk7Ci0gIHN0ZDo6
c3dhcChpbmRleF8sIG90aGVyLmluZGV4Xyk7Ci19Ci0KLVZhbHVlOjpDWlN0cmluZyYgVmFsdWU6
OkNaU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgQ1pTdHJpbmcmIG90aGVyKSB7Ci0gIGNzdHJfID0g
b3RoZXIuY3N0cl87Ci0gIGluZGV4XyA9IG90aGVyLmluZGV4XzsKLSAgcmV0dXJuICp0aGlzOwot
fQotCi1WYWx1ZTo6Q1pTdHJpbmcmIFZhbHVlOjpDWlN0cmluZzo6b3BlcmF0b3I9KENaU3RyaW5n
JiYgb3RoZXIpIHsKLSAgY3N0cl8gPSBvdGhlci5jc3RyXzsKLSAgaW5kZXhfID0gb3RoZXIuaW5k
ZXhfOwotICBvdGhlci5jc3RyXyA9IG51bGxwdHI7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotYm9v
bCBWYWx1ZTo6Q1pTdHJpbmc6Om9wZXJhdG9yPChjb25zdCBDWlN0cmluZyYgb3RoZXIpIGNvbnN0
IHsKLSAgaWYgKCFjc3RyXykKLSAgICByZXR1cm4gaW5kZXhfIDwgb3RoZXIuaW5kZXhfOwotICAv
LyByZXR1cm4gc3RyY21wKGNzdHJfLCBvdGhlci5jc3RyXykgPCAwOwotICAvLyBBc3N1bWUgYm90
aCBhcmUgc3RyaW5ncy4KLSAgdW5zaWduZWQgdGhpc19sZW4gPSB0aGlzLT5zdG9yYWdlXy5sZW5n
dGhfOwotICB1bnNpZ25lZCBvdGhlcl9sZW4gPSBvdGhlci5zdG9yYWdlXy5sZW5ndGhfOwotICB1
bnNpZ25lZCBtaW5fbGVuID0gc3RkOjptaW48dW5zaWduZWQ+KHRoaXNfbGVuLCBvdGhlcl9sZW4p
OwotICBKU09OX0FTU0VSVCh0aGlzLT5jc3RyXyAmJiBvdGhlci5jc3RyXyk7Ci0gIGludCBjb21w
ID0gbWVtY21wKHRoaXMtPmNzdHJfLCBvdGhlci5jc3RyXywgbWluX2xlbik7Ci0gIGlmIChjb21w
IDwgMCkKLSAgICByZXR1cm4gdHJ1ZTsKLSAgaWYgKGNvbXAgPiAwKQotICAgIHJldHVybiBmYWxz
ZTsKLSAgcmV0dXJuICh0aGlzX2xlbiA8IG90aGVyX2xlbik7Ci19Ci0KLWJvb2wgVmFsdWU6OkNa
U3RyaW5nOjpvcGVyYXRvcj09KGNvbnN0IENaU3RyaW5nJiBvdGhlcikgY29uc3QgewotICBpZiAo
IWNzdHJfKQotICAgIHJldHVybiBpbmRleF8gPT0gb3RoZXIuaW5kZXhfOwotICAvLyByZXR1cm4g
c3RyY21wKGNzdHJfLCBvdGhlci5jc3RyXykgPT0gMDsKLSAgLy8gQXNzdW1lIGJvdGggYXJlIHN0
cmluZ3MuCi0gIHVuc2lnbmVkIHRoaXNfbGVuID0gdGhpcy0+c3RvcmFnZV8ubGVuZ3RoXzsKLSAg
dW5zaWduZWQgb3RoZXJfbGVuID0gb3RoZXIuc3RvcmFnZV8ubGVuZ3RoXzsKLSAgaWYgKHRoaXNf
bGVuICE9IG90aGVyX2xlbikKLSAgICByZXR1cm4gZmFsc2U7Ci0gIEpTT05fQVNTRVJUKHRoaXMt
PmNzdHJfICYmIG90aGVyLmNzdHJfKTsKLSAgaW50IGNvbXAgPSBtZW1jbXAodGhpcy0+Y3N0cl8s
IG90aGVyLmNzdHJfLCB0aGlzX2xlbik7Ci0gIHJldHVybiBjb21wID09IDA7Ci19Ci0KLUFycmF5
SW5kZXggVmFsdWU6OkNaU3RyaW5nOjppbmRleCgpIGNvbnN0IHsgcmV0dXJuIGluZGV4XzsgfQot
Ci0vLyBjb25zdCBjaGFyKiBWYWx1ZTo6Q1pTdHJpbmc6OmNfc3RyKCkgY29uc3QgeyByZXR1cm4g
Y3N0cl87IH0KLWNvbnN0IGNoYXIqIFZhbHVlOjpDWlN0cmluZzo6ZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIGNzdHJfOyB9Ci11bnNpZ25lZCBWYWx1ZTo6Q1pTdHJpbmc6Omxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIHN0b3JhZ2VfLmxlbmd0aF87IH0KLWJvb2wgVmFsdWU6OkNaU3RyaW5nOjppc1N0YXRp
Y1N0cmluZygpIGNvbnN0IHsKLSAgcmV0dXJuIHN0b3JhZ2VfLnBvbGljeV8gPT0gbm9EdXBsaWNh
dGlvbjsKLX0KLQotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8g
Y2xhc3MgVmFsdWU6OlZhbHVlCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0KLS8qISBcaW50ZXJuYWwgRGVmYXVsdCBjb25zdHJ1Y3RvciBpbml0aWFsaXphdGlvbiBt
dXN0IGJlIGVxdWl2YWxlbnQgdG86Ci0gKiBtZW1zZXQoIHRoaXMsIDAsIHNpemVvZihWYWx1ZSkg
KQotICogVGhpcyBvcHRpbWl6YXRpb24gaXMgdXNlZCBpbiBWYWx1ZUludGVybmFsTWFwIGZhc3Qg
YWxsb2NhdG9yLgotICovCi1WYWx1ZTo6VmFsdWUoVmFsdWVUeXBlIHR5cGUpIHsKLSAgc3RhdGlj
IGNoYXIgY29uc3QgZW1wdHlTdHJpbmdbXSA9ICIiOwotICBpbml0QmFzaWModHlwZSk7Ci0gIHN3
aXRjaCAodHlwZSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgICBicmVhazsKLSAgY2FzZSBpbnRW
YWx1ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgdmFsdWVfLmludF8gPSAwOwotICAgIGJyZWFr
OwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICB2YWx1ZV8ucmVhbF8gPSAwLjA7Ci0gICAgYnJlYWs7
Ci0gIGNhc2Ugc3RyaW5nVmFsdWU6Ci0gICAgLy8gYWxsb2NhdGVkXyA9PSBmYWxzZSwgc28gdGhp
cyBpcyBzYWZlLgotICAgIHZhbHVlXy5zdHJpbmdfID0gY29uc3RfY2FzdDxjaGFyKj4oc3RhdGlj
X2Nhc3Q8Y2hhciBjb25zdCo+KGVtcHR5U3RyaW5nKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgYXJy
YXlWYWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICB2YWx1ZV8ubWFwXyA9IG5ldyBPYmpl
Y3RWYWx1ZXMoKTsKLSAgICBicmVhazsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgdmFsdWVf
LmJvb2xfID0gZmFsc2U7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgSlNPTl9BU1NFUlRf
VU5SRUFDSEFCTEU7Ci0gIH0KLX0KLQotVmFsdWU6OlZhbHVlKEludCB2YWx1ZSkgewotICBpbml0
QmFzaWMoaW50VmFsdWUpOwotICB2YWx1ZV8uaW50XyA9IHZhbHVlOwotfQotCi1WYWx1ZTo6VmFs
dWUoVUludCB2YWx1ZSkgewotICBpbml0QmFzaWModWludFZhbHVlKTsKLSAgdmFsdWVfLnVpbnRf
ID0gdmFsdWU7Ci19Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLVZhbHVlOjpWYWx1ZShJ
bnQ2NCB2YWx1ZSkgewotICBpbml0QmFzaWMoaW50VmFsdWUpOwotICB2YWx1ZV8uaW50XyA9IHZh
bHVlOwotfQotVmFsdWU6OlZhbHVlKFVJbnQ2NCB2YWx1ZSkgewotICBpbml0QmFzaWModWludFZh
bHVlKTsKLSAgdmFsdWVfLnVpbnRfID0gdmFsdWU7Ci19Ci0jZW5kaWYgLy8gZGVmaW5lZChKU09O
X0hBU19JTlQ2NCkKLQotVmFsdWU6OlZhbHVlKGRvdWJsZSB2YWx1ZSkgewotICBpbml0QmFzaWMo
cmVhbFZhbHVlKTsKLSAgdmFsdWVfLnJlYWxfID0gdmFsdWU7Ci19Ci0KLVZhbHVlOjpWYWx1ZShj
b25zdCBjaGFyKiB2YWx1ZSkgewotICBpbml0QmFzaWMoc3RyaW5nVmFsdWUsIHRydWUpOwotICBK
U09OX0FTU0VSVF9NRVNTQUdFKHZhbHVlICE9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgIk51bGwgVmFsdWUgUGFzc2VkIHRvIFZhbHVlIENvbnN0cnVjdG9yIik7Ci0gIHZhbHVlXy5z
dHJpbmdfID0gZHVwbGljYXRlQW5kUHJlZml4U3RyaW5nVmFsdWUoCi0gICAgICB2YWx1ZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0cmxlbih2YWx1ZSkpKTsKLX0KLQotVmFsdWU6OlZhbHVlKGNv
bnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIHsKLSAgaW5pdEJhc2ljKHN0cmluZ1Zh
bHVlLCB0cnVlKTsKLSAgdmFsdWVfLnN0cmluZ18gPQotICAgICAgZHVwbGljYXRlQW5kUHJlZml4
U3RyaW5nVmFsdWUoYmVnaW4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBiZWdpbikpOwot
fQotCi1WYWx1ZTo6VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgewotICBpbml0QmFzaWMoc3Ry
aW5nVmFsdWUsIHRydWUpOwotICB2YWx1ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFuZFByZWZpeFN0
cmluZ1ZhbHVlKAotICAgICAgdmFsdWUuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmFs
dWUubGVuZ3RoKCkpKTsKLX0KLQotVmFsdWU6OlZhbHVlKGNvbnN0IFN0YXRpY1N0cmluZyYgdmFs
dWUpIHsKLSAgaW5pdEJhc2ljKHN0cmluZ1ZhbHVlKTsKLSAgdmFsdWVfLnN0cmluZ18gPSBjb25z
dF9jYXN0PGNoYXIqPih2YWx1ZS5jX3N0cigpKTsKLX0KLQotI2lmZGVmIEpTT05fVVNFX0NQUFRM
Ci1WYWx1ZTo6VmFsdWUoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiB2YWx1ZSkgewotICBpbml0
QmFzaWMoc3RyaW5nVmFsdWUsIHRydWUpOwotICB2YWx1ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFu
ZFByZWZpeFN0cmluZ1ZhbHVlKAotICAgICAgdmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
YWx1ZS5sZW5ndGgoKSkpOwotfQotI2VuZGlmCi0KLVZhbHVlOjpWYWx1ZShib29sIHZhbHVlKSB7
Ci0gIGluaXRCYXNpYyhib29sZWFuVmFsdWUpOwotICB2YWx1ZV8uYm9vbF8gPSB2YWx1ZTsKLX0K
LQotVmFsdWU6OlZhbHVlKGNvbnN0IFZhbHVlJiBvdGhlcikgewotICBkdXBQYXlsb2FkKG90aGVy
KTsKLSAgZHVwTWV0YShvdGhlcik7Ci19Ci0KLVZhbHVlOjpWYWx1ZShWYWx1ZSYmIG90aGVyKSB7
Ci0gIGluaXRCYXNpYyhudWxsVmFsdWUpOwotICBzd2FwKG90aGVyKTsKLX0KLQotVmFsdWU6On5W
YWx1ZSgpIHsKLSAgcmVsZWFzZVBheWxvYWQoKTsKLSAgdmFsdWVfLnVpbnRfID0gMDsKLX0KLQot
VmFsdWUmIFZhbHVlOjpvcGVyYXRvcj0oY29uc3QgVmFsdWUmIG90aGVyKSB7Ci0gIFZhbHVlKG90
aGVyKS5zd2FwKCp0aGlzKTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1WYWx1ZSYgVmFsdWU6Om9w
ZXJhdG9yPShWYWx1ZSYmIG90aGVyKSB7Ci0gIG90aGVyLnN3YXAoKnRoaXMpOwotICByZXR1cm4g
KnRoaXM7Ci19Ci0KLXZvaWQgVmFsdWU6OnN3YXBQYXlsb2FkKFZhbHVlJiBvdGhlcikgewotICBz
dGQ6OnN3YXAoYml0c18sIG90aGVyLmJpdHNfKTsKLSAgc3RkOjpzd2FwKHZhbHVlXywgb3RoZXIu
dmFsdWVfKTsKLX0KLQotdm9pZCBWYWx1ZTo6Y29weVBheWxvYWQoY29uc3QgVmFsdWUmIG90aGVy
KSB7Ci0gIHJlbGVhc2VQYXlsb2FkKCk7Ci0gIGR1cFBheWxvYWQob3RoZXIpOwotfQotCi12b2lk
IFZhbHVlOjpzd2FwKFZhbHVlJiBvdGhlcikgewotICBzd2FwUGF5bG9hZChvdGhlcik7Ci0gIHN0
ZDo6c3dhcChjb21tZW50c18sIG90aGVyLmNvbW1lbnRzXyk7Ci0gIHN0ZDo6c3dhcChzdGFydF8s
IG90aGVyLnN0YXJ0Xyk7Ci0gIHN0ZDo6c3dhcChsaW1pdF8sIG90aGVyLmxpbWl0Xyk7Ci19Ci0K
LXZvaWQgVmFsdWU6OmNvcHkoY29uc3QgVmFsdWUmIG90aGVyKSB7Ci0gIGNvcHlQYXlsb2FkKG90
aGVyKTsKLSAgZHVwTWV0YShvdGhlcik7Ci19Ci0KLVZhbHVlVHlwZSBWYWx1ZTo6dHlwZSgpIGNv
bnN0IHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlVHlwZT4oYml0c18udmFsdWVfdHlwZV8p
OwotfQotCi1pbnQgVmFsdWU6OmNvbXBhcmUoY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdCB7Ci0g
IGlmICgqdGhpcyA8IG90aGVyKQotICAgIHJldHVybiAtMTsKLSAgaWYgKCp0aGlzID4gb3RoZXIp
Ci0gICAgcmV0dXJuIDE7Ci0gIHJldHVybiAwOwotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcjwo
Y29uc3QgVmFsdWUmIG90aGVyKSBjb25zdCB7Ci0gIGludCB0eXBlRGVsdGEgPSB0eXBlKCkgLSBv
dGhlci50eXBlKCk7Ci0gIGlmICh0eXBlRGVsdGEpCi0gICAgcmV0dXJuIHR5cGVEZWx0YSA8IDAg
PyB0cnVlIDogZmFsc2U7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2UgbnVsbFZhbHVlOgot
ICAgIHJldHVybiBmYWxzZTsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLmlu
dF8gPCBvdGhlci52YWx1ZV8uaW50XzsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHZh
bHVlXy51aW50XyA8IG90aGVyLnZhbHVlXy51aW50XzsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAg
cmV0dXJuIHZhbHVlXy5yZWFsXyA8IG90aGVyLnZhbHVlXy5yZWFsXzsKLSAgY2FzZSBib29sZWFu
VmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA8IG90aGVyLnZhbHVlXy5ib29sXzsKLSAg
Y2FzZSBzdHJpbmdWYWx1ZTogewotICAgIGlmICgodmFsdWVfLnN0cmluZ18gPT0gbnVsbHB0cikg
fHwgKG90aGVyLnZhbHVlXy5zdHJpbmdfID09IG51bGxwdHIpKSB7Ci0gICAgICBpZiAob3RoZXIu
dmFsdWVfLnN0cmluZ18pCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZWxzZQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHVuc2lnbmVkIHRoaXNfbGVuOwotICAgIHVuc2ln
bmVkIG90aGVyX2xlbjsKLSAgICBjaGFyIGNvbnN0KiB0aGlzX3N0cjsKLSAgICBjaGFyIGNvbnN0
KiBvdGhlcl9zdHI7Ci0gICAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNBbGxvY2F0ZWQo
KSwgdGhpcy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAmdGhpc19zdHIpOwotICAgIGRlY29kZVByZWZpeGVkU3RyaW5nKG90aGVyLmlzQWxsb2Nh
dGVkKCksIG90aGVyLnZhbHVlXy5zdHJpbmdfLCAmb3RoZXJfbGVuLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICZvdGhlcl9zdHIpOwotICAgIHVuc2lnbmVkIG1pbl9sZW4gPSBzdGQ6Om1pbjx1
bnNpZ25lZD4odGhpc19sZW4sIG90aGVyX2xlbik7Ci0gICAgSlNPTl9BU1NFUlQodGhpc19zdHIg
JiYgb3RoZXJfc3RyKTsKLSAgICBpbnQgY29tcCA9IG1lbWNtcCh0aGlzX3N0ciwgb3RoZXJfc3Ry
LCBtaW5fbGVuKTsKLSAgICBpZiAoY29tcCA8IDApCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoY29tcCA+IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICh0aGlzX2xlbiA8
IG90aGVyX2xlbik7Ci0gIH0KLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVl
OiB7Ci0gICAgaW50IGRlbHRhID0gaW50KHZhbHVlXy5tYXBfLT5zaXplKCkgLSBvdGhlci52YWx1
ZV8ubWFwXy0+c2l6ZSgpKTsKLSAgICBpZiAoZGVsdGEpCi0gICAgICByZXR1cm4gZGVsdGEgPCAw
OwotICAgIHJldHVybiAoKnZhbHVlXy5tYXBfKSA8ICgqb3RoZXIudmFsdWVfLm1hcF8pOwotICB9
Ci0gIGRlZmF1bHQ6Ci0gICAgSlNPTl9BU1NFUlRfVU5SRUFDSEFCTEU7Ci0gIH0KLSAgcmV0dXJu
IGZhbHNlOyAvLyB1bnJlYWNoYWJsZQotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcjw9KGNvbnN0
IFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIShvdGhlciA8ICp0aGlzKTsgfQotCi1ib29s
IFZhbHVlOjpvcGVyYXRvcj49KGNvbnN0IFZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA8IG90aGVyKTsgfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvcj4oY29uc3QgVmFsdWUmIG90
aGVyKSBjb25zdCB7IHJldHVybiBvdGhlciA8ICp0aGlzOyB9Ci0KLWJvb2wgVmFsdWU6Om9wZXJh
dG9yPT0oY29uc3QgVmFsdWUmIG90aGVyKSBjb25zdCB7Ci0gIGlmICh0eXBlKCkgIT0gb3RoZXIu
dHlwZSgpKQotICAgIHJldHVybiBmYWxzZTsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBu
dWxsVmFsdWU6Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJu
IHZhbHVlXy5pbnRfID09IG90aGVyLnZhbHVlXy5pbnRfOwotICBjYXNlIHVpbnRWYWx1ZToKLSAg
ICByZXR1cm4gdmFsdWVfLnVpbnRfID09IG90aGVyLnZhbHVlXy51aW50XzsKLSAgY2FzZSByZWFs
VmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXyA9PSBvdGhlci52YWx1ZV8ucmVhbF87Ci0g
IGNhc2UgYm9vbGVhblZhbHVlOgotICAgIHJldHVybiB2YWx1ZV8uYm9vbF8gPT0gb3RoZXIudmFs
dWVfLmJvb2xfOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgaWYgKCh2YWx1ZV8uc3RyaW5n
XyA9PSBudWxscHRyKSB8fCAob3RoZXIudmFsdWVfLnN0cmluZ18gPT0gbnVsbHB0cikpIHsKLSAg
ICAgIHJldHVybiAodmFsdWVfLnN0cmluZ18gPT0gb3RoZXIudmFsdWVfLnN0cmluZ18pOwotICAg
IH0KLSAgICB1bnNpZ25lZCB0aGlzX2xlbjsKLSAgICB1bnNpZ25lZCBvdGhlcl9sZW47Ci0gICAg
Y2hhciBjb25zdCogdGhpc19zdHI7Ci0gICAgY2hhciBjb25zdCogb3RoZXJfc3RyOwotICAgIGRl
Y29kZVByZWZpeGVkU3RyaW5nKHRoaXMtPmlzQWxsb2NhdGVkKCksIHRoaXMtPnZhbHVlXy5zdHJp
bmdfLCAmdGhpc19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnRoaXNfc3RyKTsKLSAg
ICBkZWNvZGVQcmVmaXhlZFN0cmluZyhvdGhlci5pc0FsbG9jYXRlZCgpLCBvdGhlci52YWx1ZV8u
c3RyaW5nXywgJm90aGVyX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXJfc3Ry
KTsKLSAgICBpZiAodGhpc19sZW4gIT0gb3RoZXJfbGVuKQotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIEpTT05fQVNTRVJUKHRoaXNfc3RyICYmIG90aGVyX3N0cik7Ci0gICAgaW50IGNvbXAgPSBt
ZW1jbXAodGhpc19zdHIsIG90aGVyX3N0ciwgdGhpc19sZW4pOwotICAgIHJldHVybiBjb21wID09
IDA7Ci0gIH0KLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIHJl
dHVybiB2YWx1ZV8ubWFwXy0+c2l6ZSgpID09IG90aGVyLnZhbHVlXy5tYXBfLT5zaXplKCkgJiYK
LSAgICAgICAgICAgKCp2YWx1ZV8ubWFwXykgPT0gKCpvdGhlci52YWx1ZV8ubWFwXyk7Ci0gIGRl
ZmF1bHQ6Ci0gICAgSlNPTl9BU1NFUlRfVU5SRUFDSEFCTEU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNl
OyAvLyB1bnJlYWNoYWJsZQotfQotCi1ib29sIFZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IFZhbHVl
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotY29uc3QgY2hh
ciogVmFsdWU6OmFzQ1N0cmluZygpIGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0eXBl
KCkgPT0gc3RyaW5nVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVl
Ojphc0NTdHJpbmcoKTogcmVxdWlyZXMgc3RyaW5nVmFsdWUiKTsKLSAgaWYgKHZhbHVlXy5zdHJp
bmdfID09IG51bGxwdHIpCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIHVuc2lnbmVkIHRoaXNfbGVu
OwotICBjaGFyIGNvbnN0KiB0aGlzX3N0cjsKLSAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+
aXNBbGxvY2F0ZWQoKSwgdGhpcy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgJnRoaXNfc3RyKTsKLSAgcmV0dXJuIHRoaXNfc3RyOwotfQotCi0jaWYg
SlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi11bnNpZ25lZCBWYWx1ZTo6Z2V0Q1N0cmluZ0xl
bmd0aCgpIGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0eXBlKCkgPT0gc3RyaW5nVmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjphc0NTdHJpbmcoKTog
cmVxdWlyZXMgc3RyaW5nVmFsdWUiKTsKLSAgaWYgKHZhbHVlXy5zdHJpbmdfID09IDApCi0gICAg
cmV0dXJuIDA7Ci0gIHVuc2lnbmVkIHRoaXNfbGVuOwotICBjaGFyIGNvbnN0KiB0aGlzX3N0cjsK
LSAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhpcy0+aXNBbGxvY2F0ZWQoKSwgdGhpcy0+dmFsdWVf
LnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgJnRoaXNfc3RyKTsK
LSAgcmV0dXJuIHRoaXNfbGVuOwotfQotI2VuZGlmCi0KLWJvb2wgVmFsdWU6OmdldFN0cmluZyhj
aGFyIGNvbnN0KiogYmVnaW4sIGNoYXIgY29uc3QqKiBlbmQpIGNvbnN0IHsKLSAgaWYgKHR5cGUo
KSAhPSBzdHJpbmdWYWx1ZSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmICh2YWx1ZV8uc3RyaW5n
XyA9PSBudWxscHRyKQotICAgIHJldHVybiBmYWxzZTsKLSAgdW5zaWduZWQgbGVuZ3RoOwotICBk
ZWNvZGVQcmVmaXhlZFN0cmluZyh0aGlzLT5pc0FsbG9jYXRlZCgpLCB0aGlzLT52YWx1ZV8uc3Ry
aW5nXywgJmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4pOwotICAqZW5kID0g
KmJlZ2luICsgbGVuZ3RoOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFZhbHVlOjphc1N0
cmluZygpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBudWxsVmFsdWU6Ci0g
ICAgcmV0dXJuICIiOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgaWYgKHZhbHVlXy5zdHJp
bmdfID09IG51bGxwdHIpCi0gICAgICByZXR1cm4gIiI7Ci0gICAgdW5zaWduZWQgdGhpc19sZW47
Ci0gICAgY2hhciBjb25zdCogdGhpc19zdHI7Ci0gICAgZGVjb2RlUHJlZml4ZWRTdHJpbmcodGhp
cy0+aXNBbGxvY2F0ZWQoKSwgdGhpcy0+dmFsdWVfLnN0cmluZ18sICZ0aGlzX2xlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAmdGhpc19zdHIpOwotICAgIHJldHVybiBTdHJpbmcodGhpc19z
dHIsIHRoaXNfbGVuKTsKLSAgfQotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAgICByZXR1cm4gdmFs
dWVfLmJvb2xfID8gInRydWUiIDogImZhbHNlIjsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1
cm4gdmFsdWVUb1N0cmluZyh2YWx1ZV8uaW50Xyk7Ci0gIGNhc2UgdWludFZhbHVlOgotICAgIHJl
dHVybiB2YWx1ZVRvU3RyaW5nKHZhbHVlXy51aW50Xyk7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAg
IHJldHVybiB2YWx1ZVRvU3RyaW5nKHZhbHVlXy5yZWFsXyk7Ci0gIGRlZmF1bHQ6Ci0gICAgSlNP
Tl9GQUlMX01FU1NBR0UoIlR5cGUgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHN0cmluZyIpOwotICB9
Ci19Ci0KLSNpZmRlZiBKU09OX1VTRV9DUFBUTAotQ3BwVEw6OkNvbnN0U3RyaW5nIFZhbHVlOjph
c0NvbnN0U3RyaW5nKCkgY29uc3QgewotICB1bnNpZ25lZCBsZW47Ci0gIGNoYXIgY29uc3QqIHN0
cjsKLSAgZGVjb2RlUHJlZml4ZWRTdHJpbmcoaXNBbGxvY2F0ZWQoKSwgdmFsdWVfLnN0cmluZ18s
ICZsZW4sICZzdHIpOwotICByZXR1cm4gQ3BwVEw6OkNvbnN0U3RyaW5nKHN0ciwgbGVuKTsKLX0K
LSNlbmRpZgotCi1WYWx1ZTo6SW50IFZhbHVlOjphc0ludCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0
eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKGlzSW50
KCksICJMYXJnZXN0SW50IG91dCBvZiBJbnQgcmFuZ2UiKTsKLSAgICByZXR1cm4gSW50KHZhbHVl
Xy5pbnRfKTsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgSlNPTl9BU1NFUlRfTUVTU0FHRShpc0lu
dCgpLCAiTGFyZ2VzdFVJbnQgb3V0IG9mIEludCByYW5nZSIpOwotICAgIHJldHVybiBJbnQodmFs
dWVfLnVpbnRfKTsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgSlNPTl9BU1NFUlRfTUVTU0FHRShJ
blJhbmdlKHZhbHVlXy5yZWFsXywgbWluSW50LCBtYXhJbnQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgImRvdWJsZSBvdXQgb2YgSW50IHJhbmdlIik7Ci0gICAgcmV0dXJuIEludCh2YWx1ZV8u
cmVhbF8pOwotICBjYXNlIG51bGxWYWx1ZToKLSAgICByZXR1cm4gMDsKLSAgY2FzZSBib29sZWFu
VmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA/IDEgOiAwOwotICBkZWZhdWx0OgotICAg
IGJyZWFrOwotICB9Ci0gIEpTT05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGli
bGUgdG8gSW50LiIpOwotfQotCi1WYWx1ZTo6VUludCBWYWx1ZTo6YXNVSW50KCkgY29uc3Qgewot
ICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIGludFZhbHVlOgotICAgIEpTT05fQVNTRVJUX01F
U1NBR0UoaXNVSW50KCksICJMYXJnZXN0SW50IG91dCBvZiBVSW50IHJhbmdlIik7Ci0gICAgcmV0
dXJuIFVJbnQodmFsdWVfLmludF8pOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VS
VF9NRVNTQUdFKGlzVUludCgpLCAiTGFyZ2VzdFVJbnQgb3V0IG9mIFVJbnQgcmFuZ2UiKTsKLSAg
ICByZXR1cm4gVUludCh2YWx1ZV8udWludF8pOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBKU09O
X0FTU0VSVF9NRVNTQUdFKEluUmFuZ2UodmFsdWVfLnJlYWxfLCAwLCBtYXhVSW50KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJkb3VibGUgb3V0IG9mIFVJbnQgcmFuZ2UiKTsKLSAgICByZXR1
cm4gVUludCh2YWx1ZV8ucmVhbF8pOwotICBjYXNlIG51bGxWYWx1ZToKLSAgICByZXR1cm4gMDsK
LSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXyA/IDEgOiAwOwot
ICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIEpTT05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBp
cyBub3QgY29udmVydGlibGUgdG8gVUludC4iKTsKLX0KLQotI2lmIGRlZmluZWQoSlNPTl9IQVNf
SU5UNjQpCi0KLVZhbHVlOjpJbnQ2NCBWYWx1ZTo6YXNJbnQ2NCgpIGNvbnN0IHsKLSAgc3dpdGNo
ICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gSW50NjQodmFsdWVfLmlu
dF8pOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKGlzSW50NjQo
KSwgIkxhcmdlc3RVSW50IG91dCBvZiBJbnQ2NCByYW5nZSIpOwotICAgIHJldHVybiBJbnQ2NCh2
YWx1ZV8udWludF8pOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdF
KEluUmFuZ2UodmFsdWVfLnJlYWxfLCBtaW5JbnQ2NCwgbWF4SW50NjQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgImRvdWJsZSBvdXQgb2YgSW50NjQgcmFuZ2UiKTsKLSAgICByZXR1cm4gSW50
NjQodmFsdWVfLnJlYWxfKTsKLSAgY2FzZSBudWxsVmFsdWU6Ci0gICAgcmV0dXJuIDA7Ci0gIGNh
c2UgYm9vbGVhblZhbHVlOgotICAgIHJldHVybiB2YWx1ZV8uYm9vbF8gPyAxIDogMDsKLSAgZGVm
YXVsdDoKLSAgICBicmVhazsKLSAgfQotICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUgaXMgbm90
IGNvbnZlcnRpYmxlIHRvIEludDY0LiIpOwotfQotCi1WYWx1ZTo6VUludDY0IFZhbHVlOjphc1VJ
bnQ2NCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAg
ICBKU09OX0FTU0VSVF9NRVNTQUdFKGlzVUludDY0KCksICJMYXJnZXN0SW50IG91dCBvZiBVSW50
NjQgcmFuZ2UiKTsKLSAgICByZXR1cm4gVUludDY0KHZhbHVlXy5pbnRfKTsKLSAgY2FzZSB1aW50
VmFsdWU6Ci0gICAgcmV0dXJuIFVJbnQ2NCh2YWx1ZV8udWludF8pOwotICBjYXNlIHJlYWxWYWx1
ZToKLSAgICBKU09OX0FTU0VSVF9NRVNTQUdFKEluUmFuZ2UodmFsdWVfLnJlYWxfLCAwLCBtYXhV
SW50NjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImRvdWJsZSBvdXQgb2YgVUludDY0IHJh
bmdlIik7Ci0gICAgcmV0dXJuIFVJbnQ2NCh2YWx1ZV8ucmVhbF8pOwotICBjYXNlIG51bGxWYWx1
ZToKLSAgICByZXR1cm4gMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVl
Xy5ib29sXyA/IDEgOiAwOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIEpTT05fRkFJ
TF9NRVNTQUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGlibGUgdG8gVUludDY0LiIpOwotfQotI2Vu
ZGlmIC8vIGlmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0KLUxhcmdlc3RJbnQgVmFsdWU6OmFz
TGFyZ2VzdEludCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05fTk9fSU5UNjQpCi0gIHJldHVy
biBhc0ludCgpOwotI2Vsc2UKLSAgcmV0dXJuIGFzSW50NjQoKTsKLSNlbmRpZgotfQotCi1MYXJn
ZXN0VUludCBWYWx1ZTo6YXNMYXJnZXN0VUludCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05f
Tk9fSU5UNjQpCi0gIHJldHVybiBhc1VJbnQoKTsKLSNlbHNlCi0gIHJldHVybiBhc1VJbnQ2NCgp
OwotI2VuZGlmCi19Ci0KLWRvdWJsZSBWYWx1ZTo6YXNEb3VibGUoKSBjb25zdCB7Ci0gIHN3aXRj
aCAodHlwZSgpKSB7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRv
dWJsZT4odmFsdWVfLmludF8pOwotICBjYXNlIHVpbnRWYWx1ZToKLSNpZiAhZGVmaW5lZChKU09O
X1VTRV9JTlQ2NF9ET1VCTEVfQ09OVkVSU0lPTikKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZV8udWludF8pOwotI2Vsc2UgIC8vIGlmICFkZWZpbmVkKEpTT05fVVNFX0lOVDY0
X0RPVUJMRV9DT05WRVJTSU9OKQotICAgIHJldHVybiBpbnRlZ2VyVG9Eb3VibGUodmFsdWVfLnVp
bnRfKTsKLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VCTEVfQ09OVkVS
U0lPTikKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXzsKLSAgY2Fz
ZSBudWxsVmFsdWU6Ci0gICAgcmV0dXJuIDAuMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAg
cmV0dXJuIHZhbHVlXy5ib29sXyA/IDEuMCA6IDAuMDsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsK
LSAgfQotICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGRv
dWJsZS4iKTsKLX0KLQotZmxvYXQgVmFsdWU6OmFzRmxvYXQoKSBjb25zdCB7Ci0gIHN3aXRjaCAo
dHlwZSgpKSB7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
Pih2YWx1ZV8uaW50Xyk7Ci0gIGNhc2UgdWludFZhbHVlOgotI2lmICFkZWZpbmVkKEpTT05fVVNF
X0lOVDY0X0RPVUJMRV9DT05WRVJTSU9OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
dmFsdWVfLnVpbnRfKTsKLSNlbHNlICAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9JTlQ2NF9ET1VC
TEVfQ09OVkVSU0lPTikKLSAgICAvLyBUaGlzIGNhbiBmYWlsIChzaWxlbnRseT8pIGlmIHRoZSB2
YWx1ZSBpcyBiaWdnZXIgdGhhbiBNQVhfRkxPQVQuCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0PihpbnRlZ2VyVG9Eb3VibGUodmFsdWVfLnVpbnRfKSk7Ci0jZW5kaWYgLy8gaWYgIWRlZmlu
ZWQoSlNPTl9VU0VfSU5UNjRfRE9VQkxFX0NPTlZFUlNJT04pCi0gIGNhc2UgcmVhbFZhbHVlOgot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWVfLnJlYWxfKTsKLSAgY2FzZSBudWxs
VmFsdWU6Ci0gICAgcmV0dXJuIDAuMDsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJu
IHZhbHVlXy5ib29sXyA/IDEuMGYgOiAwLjBmOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9
Ci0gIEpTT05fRkFJTF9NRVNTQUdFKCJWYWx1ZSBpcyBub3QgY29udmVydGlibGUgdG8gZmxvYXQu
Iik7Ci19Ci0KLWJvb2wgVmFsdWU6OmFzQm9vbCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkp
IHsKLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5ib29sXzsKLSAgY2Fz
ZSBudWxsVmFsdWU6Ci0gICAgcmV0dXJuIGZhbHNlOwotICBjYXNlIGludFZhbHVlOgotICAgIHJl
dHVybiB2YWx1ZV8uaW50XyA/IHRydWUgOiBmYWxzZTsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAg
cmV0dXJuIHZhbHVlXy51aW50XyA/IHRydWUgOiBmYWxzZTsKLSAgY2FzZSByZWFsVmFsdWU6IHsK
LSAgICAvLyBBY2NvcmRpbmcgdG8gSmF2YVNjcmlwdCBsYW5ndWFnZSB6ZXJvIG9yIE5hTiBpcyBy
ZWdhcmRlZCBhcyBmYWxzZQotICAgIGNvbnN0IGF1dG8gdmFsdWVfY2xhc3NpZmljYXRpb24gPSBz
dGQ6OmZwY2xhc3NpZnkodmFsdWVfLnJlYWxfKTsKLSAgICByZXR1cm4gdmFsdWVfY2xhc3NpZmlj
YXRpb24gIT0gRlBfWkVSTyAmJiB2YWx1ZV9jbGFzc2lmaWNhdGlvbiAhPSBGUF9OQU47Ci0gIH0K
LSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotICBKU09OX0ZBSUxfTUVTU0FHRSgiVmFsdWUg
aXMgbm90IGNvbnZlcnRpYmxlIHRvIGJvb2wuIik7Ci19Ci0KLWJvb2wgVmFsdWU6OmlzQ29udmVy
dGlibGVUbyhWYWx1ZVR5cGUgb3RoZXIpIGNvbnN0IHsKLSAgc3dpdGNoIChvdGhlcikgewotICBj
YXNlIG51bGxWYWx1ZToKLSAgICByZXR1cm4gKGlzTnVtZXJpYygpICYmIGFzRG91YmxlKCkgPT0g
MC4wKSB8fAotICAgICAgICAgICAodHlwZSgpID09IGJvb2xlYW5WYWx1ZSAmJiB2YWx1ZV8uYm9v
bF8gPT0gZmFsc2UpIHx8Ci0gICAgICAgICAgICh0eXBlKCkgPT0gc3RyaW5nVmFsdWUgJiYgYXNT
dHJpbmcoKS5lbXB0eSgpKSB8fAotICAgICAgICAgICAodHlwZSgpID09IGFycmF5VmFsdWUgJiYg
dmFsdWVfLm1hcF8tPmVtcHR5KCkpIHx8Ci0gICAgICAgICAgICh0eXBlKCkgPT0gb2JqZWN0VmFs
dWUgJiYgdmFsdWVfLm1hcF8tPmVtcHR5KCkpIHx8Ci0gICAgICAgICAgIHR5cGUoKSA9PSBudWxs
VmFsdWU7Ci0gIGNhc2UgaW50VmFsdWU6Ci0gICAgcmV0dXJuIGlzSW50KCkgfHwKLSAgICAgICAg
ICAgKHR5cGUoKSA9PSByZWFsVmFsdWUgJiYgSW5SYW5nZSh2YWx1ZV8ucmVhbF8sIG1pbkludCwg
bWF4SW50KSkgfHwKLSAgICAgICAgICAgdHlwZSgpID09IGJvb2xlYW5WYWx1ZSB8fCB0eXBlKCkg
PT0gbnVsbFZhbHVlOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gaXNVSW50KCkgfHwK
LSAgICAgICAgICAgKHR5cGUoKSA9PSByZWFsVmFsdWUgJiYgSW5SYW5nZSh2YWx1ZV8ucmVhbF8s
IDAsIG1heFVJbnQpKSB8fAotICAgICAgICAgICB0eXBlKCkgPT0gYm9vbGVhblZhbHVlIHx8IHR5
cGUoKSA9PSBudWxsVmFsdWU7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAgIHJldHVybiBpc051bWVy
aWMoKSB8fCB0eXBlKCkgPT0gYm9vbGVhblZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0g
IGNhc2UgYm9vbGVhblZhbHVlOgotICAgIHJldHVybiBpc051bWVyaWMoKSB8fCB0eXBlKCkgPT0g
Ym9vbGVhblZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIGNhc2Ugc3RyaW5nVmFsdWU6
Ci0gICAgcmV0dXJuIGlzTnVtZXJpYygpIHx8IHR5cGUoKSA9PSBib29sZWFuVmFsdWUgfHwgdHlw
ZSgpID09IHN0cmluZ1ZhbHVlIHx8Ci0gICAgICAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0g
IGNhc2UgYXJyYXlWYWx1ZToKLSAgICByZXR1cm4gdHlwZSgpID09IGFycmF5VmFsdWUgfHwgdHlw
ZSgpID09IG51bGxWYWx1ZTsKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICByZXR1cm4gdHlwZSgp
ID09IG9iamVjdFZhbHVlIHx8IHR5cGUoKSA9PSBudWxsVmFsdWU7Ci0gIH0KLSAgSlNPTl9BU1NF
UlRfVU5SRUFDSEFCTEU7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotLy8vIE51bWJlciBvZiB2YWx1
ZXMgaW4gYXJyYXkgb3Igb2JqZWN0Ci1BcnJheUluZGV4IFZhbHVlOjpzaXplKCkgY29uc3Qgewot
ICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgY2FzZSBpbnRWYWx1ZToK
LSAgY2FzZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVlOgotICBjYXNlIGJvb2xlYW5WYWx1
ZToKLSAgY2FzZSBzdHJpbmdWYWx1ZToKLSAgICByZXR1cm4gMDsKLSAgY2FzZSBhcnJheVZhbHVl
OiAvLyBzaXplIG9mIHRoZSBhcnJheSBpcyBoaWdoZXN0IGluZGV4ICsgMQotICAgIGlmICghdmFs
dWVfLm1hcF8tPmVtcHR5KCkpIHsKLSAgICAgIE9iamVjdFZhbHVlczo6Y29uc3RfaXRlcmF0b3Ig
aXRMYXN0ID0gdmFsdWVfLm1hcF8tPmVuZCgpOwotICAgICAgLS1pdExhc3Q7Ci0gICAgICByZXR1
cm4gKCppdExhc3QpLmZpcnN0LmluZGV4KCkgKyAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSAg
Y2FzZSBvYmplY3RWYWx1ZToKLSAgICByZXR1cm4gQXJyYXlJbmRleCh2YWx1ZV8ubWFwXy0+c2l6
ZSgpKTsKLSAgfQotICBKU09OX0FTU0VSVF9VTlJFQUNIQUJMRTsKLSAgcmV0dXJuIDA7IC8vIHVu
cmVhY2hhYmxlOwotfQotCi1ib29sIFZhbHVlOjplbXB0eSgpIGNvbnN0IHsKLSAgaWYgKGlzTnVs
bCgpIHx8IGlzQXJyYXkoKSB8fCBpc09iamVjdCgpKQotICAgIHJldHVybiBzaXplKCkgPT0gMHU7
Ci0gIGVsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZhbHVlOjpvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9Ci0KLXZvaWQgVmFsdWU6OmNsZWFyKCkgewotICBK
U09OX0FTU0VSVF9NRVNTQUdFKHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IGFycmF5
VmFsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSgpID09IG9iamVjdFZhbHVl
LAotICAgICAgICAgICAgICAgICAgICAgICJpbiBKc29uOjpWYWx1ZTo6Y2xlYXIoKTogcmVxdWly
ZXMgY29tcGxleCB2YWx1ZSIpOwotICBzdGFydF8gPSAwOwotICBsaW1pdF8gPSAwOwotICBzd2l0
Y2ggKHR5cGUoKSkgewotICBjYXNlIGFycmF5VmFsdWU6Ci0gIGNhc2Ugb2JqZWN0VmFsdWU6Ci0g
ICAgdmFsdWVfLm1hcF8tPmNsZWFyKCk7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgYnJl
YWs7Ci0gIH0KLX0KLQotdm9pZCBWYWx1ZTo6cmVzaXplKEFycmF5SW5kZXggbmV3U2l6ZSkgewot
ICBKU09OX0FTU0VSVF9NRVNTQUdFKHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IGFy
cmF5VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgImluIEpzb246OlZhbHVlOjpyZXNpemUo
KTogcmVxdWlyZXMgYXJyYXlWYWx1ZSIpOwotICBpZiAodHlwZSgpID09IG51bGxWYWx1ZSkKLSAg
ICAqdGhpcyA9IFZhbHVlKGFycmF5VmFsdWUpOwotICBBcnJheUluZGV4IG9sZFNpemUgPSBzaXpl
KCk7Ci0gIGlmIChuZXdTaXplID09IDApCi0gICAgY2xlYXIoKTsKLSAgZWxzZSBpZiAobmV3U2l6
ZSA+IG9sZFNpemUpCi0gICAgdGhpcy0+b3BlcmF0b3JbXShuZXdTaXplIC0gMSk7Ci0gIGVsc2Ug
ewotICAgIGZvciAoQXJyYXlJbmRleCBpbmRleCA9IG5ld1NpemU7IGluZGV4IDwgb2xkU2l6ZTsg
KytpbmRleCkgewotICAgICAgdmFsdWVfLm1hcF8tPmVyYXNlKGluZGV4KTsKLSAgICB9Ci0gICAg
SlNPTl9BU1NFUlQoc2l6ZSgpID09IG5ld1NpemUpOwotICB9Ci19Ci0KLVZhbHVlJiBWYWx1ZTo6
b3BlcmF0b3JbXShBcnJheUluZGV4IGluZGV4KSB7Ci0gIEpTT05fQVNTRVJUX01FU1NBR0UoCi0g
ICAgICB0eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBhcnJheVZhbHVlLAotICAgICAg
ImluIEpzb246OlZhbHVlOjpvcGVyYXRvcltdKEFycmF5SW5kZXgpOiByZXF1aXJlcyBhcnJheVZh
bHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgICp0aGlzID0gVmFsdWUoYXJy
YXlWYWx1ZSk7Ci0gIENaU3RyaW5nIGtleShpbmRleCk7Ci0gIGF1dG8gaXQgPSB2YWx1ZV8ubWFw
Xy0+bG93ZXJfYm91bmQoa2V5KTsKLSAgaWYgKGl0ICE9IHZhbHVlXy5tYXBfLT5lbmQoKSAmJiAo
Kml0KS5maXJzdCA9PSBrZXkpCi0gICAgcmV0dXJuICgqaXQpLnNlY29uZDsKLQotICBPYmplY3RW
YWx1ZXM6OnZhbHVlX3R5cGUgZGVmYXVsdFZhbHVlKGtleSwgbnVsbFNpbmdsZXRvbigpKTsKLSAg
aXQgPSB2YWx1ZV8ubWFwXy0+aW5zZXJ0KGl0LCBkZWZhdWx0VmFsdWUpOwotICByZXR1cm4gKCpp
dCkuc2Vjb25kOwotfQotCi1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9yW10oaW50IGluZGV4KSB7Ci0g
IEpTT05fQVNTRVJUX01FU1NBR0UoCi0gICAgICBpbmRleCA+PSAwLAotICAgICAgImluIEpzb246
OlZhbHVlOjpvcGVyYXRvcltdKGludCBpbmRleCk6IGluZGV4IGNhbm5vdCBiZSBuZWdhdGl2ZSIp
OwotICByZXR1cm4gKCp0aGlzKVtBcnJheUluZGV4KGluZGV4KV07Ci19Ci0KLWNvbnN0IFZhbHVl
JiBWYWx1ZTo6b3BlcmF0b3JbXShBcnJheUluZGV4IGluZGV4KSBjb25zdCB7Ci0gIEpTT05fQVNT
RVJUX01FU1NBR0UoCi0gICAgICB0eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBhcnJh
eVZhbHVlLAotICAgICAgImluIEpzb246OlZhbHVlOjpvcGVyYXRvcltdKEFycmF5SW5kZXgpY29u
c3Q6IHJlcXVpcmVzIGFycmF5VmFsdWUiKTsKLSAgaWYgKHR5cGUoKSA9PSBudWxsVmFsdWUpCi0g
ICAgcmV0dXJuIG51bGxTaW5nbGV0b24oKTsKLSAgQ1pTdHJpbmcga2V5KGluZGV4KTsKLSAgT2Jq
ZWN0VmFsdWVzOjpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlXy5tYXBfLT5maW5kKGtleSk7Ci0g
IGlmIChpdCA9PSB2YWx1ZV8ubWFwXy0+ZW5kKCkpCi0gICAgcmV0dXJuIG51bGxTaW5nbGV0b24o
KTsKLSAgcmV0dXJuICgqaXQpLnNlY29uZDsKLX0KLQotY29uc3QgVmFsdWUmIFZhbHVlOjpvcGVy
YXRvcltdKGludCBpbmRleCkgY29uc3QgewotICBKU09OX0FTU0VSVF9NRVNTQUdFKAotICAgICAg
aW5kZXggPj0gMCwKLSAgICAgICJpbiBKc29uOjpWYWx1ZTo6b3BlcmF0b3JbXShpbnQgaW5kZXgp
IGNvbnN0OiBpbmRleCBjYW5ub3QgYmUgbmVnYXRpdmUiKTsKLSAgcmV0dXJuICgqdGhpcylbQXJy
YXlJbmRleChpbmRleCldOwotfQotCi12b2lkIFZhbHVlOjppbml0QmFzaWMoVmFsdWVUeXBlIHR5
cGUsIGJvb2wgYWxsb2NhdGVkKSB7Ci0gIHNldFR5cGUodHlwZSk7Ci0gIHNldElzQWxsb2NhdGVk
KGFsbG9jYXRlZCk7Ci0gIGNvbW1lbnRzXyA9IENvbW1lbnRze307Ci0gIHN0YXJ0XyA9IDA7Ci0g
IGxpbWl0XyA9IDA7Ci19Ci0KLXZvaWQgVmFsdWU6OmR1cFBheWxvYWQoY29uc3QgVmFsdWUmIG90
aGVyKSB7Ci0gIHNldFR5cGUob3RoZXIudHlwZSgpKTsKLSAgc2V0SXNBbGxvY2F0ZWQoZmFsc2Up
OwotICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1ZToKLSAgY2FzZSBpbnRWYWx1
ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVlOgotICBjYXNlIGJvb2xlYW5W
YWx1ZToKLSAgICB2YWx1ZV8gPSBvdGhlci52YWx1ZV87Ci0gICAgYnJlYWs7Ci0gIGNhc2Ugc3Ry
aW5nVmFsdWU6Ci0gICAgaWYgKG90aGVyLnZhbHVlXy5zdHJpbmdfICYmIG90aGVyLmlzQWxsb2Nh
dGVkKCkpIHsKLSAgICAgIHVuc2lnbmVkIGxlbjsKLSAgICAgIGNoYXIgY29uc3QqIHN0cjsKLSAg
ICAgIGRlY29kZVByZWZpeGVkU3RyaW5nKG90aGVyLmlzQWxsb2NhdGVkKCksIG90aGVyLnZhbHVl
Xy5zdHJpbmdfLCAmbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cik7Ci0gICAg
ICB2YWx1ZV8uc3RyaW5nXyA9IGR1cGxpY2F0ZUFuZFByZWZpeFN0cmluZ1ZhbHVlKHN0ciwgbGVu
KTsKLSAgICAgIHNldElzQWxsb2NhdGVkKHRydWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICB2YWx1
ZV8uc3RyaW5nXyA9IG90aGVyLnZhbHVlXy5zdHJpbmdfOwotICAgIH0KLSAgICBicmVhazsKLSAg
Y2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIHZhbHVlXy5tYXBfID0g
bmV3IE9iamVjdFZhbHVlcygqb3RoZXIudmFsdWVfLm1hcF8pOwotICAgIGJyZWFrOwotICBkZWZh
dWx0OgotICAgIEpTT05fQVNTRVJUX1VOUkVBQ0hBQkxFOwotICB9Ci19Ci0KLXZvaWQgVmFsdWU6
OnJlbGVhc2VQYXlsb2FkKCkgewotICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIG51bGxWYWx1
ZToKLSAgY2FzZSBpbnRWYWx1ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gIGNhc2UgcmVhbFZhbHVl
OgotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAgICBicmVhazsKLSAgY2FzZSBzdHJpbmdWYWx1ZToK
LSAgICBpZiAoaXNBbGxvY2F0ZWQoKSkKLSAgICAgIHJlbGVhc2VQcmVmaXhlZFN0cmluZ1ZhbHVl
KHZhbHVlXy5zdHJpbmdfKTsKLSAgICBicmVhazsKLSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNl
IG9iamVjdFZhbHVlOgotICAgIGRlbGV0ZSB2YWx1ZV8ubWFwXzsKLSAgICBicmVhazsKLSAgZGVm
YXVsdDoKLSAgICBKU09OX0FTU0VSVF9VTlJFQUNIQUJMRTsKLSAgfQotfQotCi12b2lkIFZhbHVl
OjpkdXBNZXRhKGNvbnN0IFZhbHVlJiBvdGhlcikgewotICBjb21tZW50c18gPSBvdGhlci5jb21t
ZW50c187Ci0gIHN0YXJ0XyA9IG90aGVyLnN0YXJ0XzsKLSAgbGltaXRfID0gb3RoZXIubGltaXRf
OwotfQotCi0vLyBBY2Nlc3MgYW4gb2JqZWN0IHZhbHVlIGJ5IG5hbWUsIGNyZWF0ZSBhIG51bGwg
bWVtYmVyIGlmIGl0IGRvZXMgbm90IGV4aXN0LgotLy8gQHByZSBUeXBlIG9mICcqdGhpcycgaXMg
b2JqZWN0IG9yIG51bGwuCi0vLyBAcGFyYW0ga2V5IGlzIG51bGwtdGVybWluYXRlZC4KLVZhbHVl
JiBWYWx1ZTo6cmVzb2x2ZVJlZmVyZW5jZShjb25zdCBjaGFyKiBrZXkpIHsKLSAgSlNPTl9BU1NF
UlRfTUVTU0FHRSgKLSAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IG9iamVj
dFZhbHVlLAotICAgICAgImluIEpzb246OlZhbHVlOjpyZXNvbHZlUmVmZXJlbmNlKCk6IHJlcXVp
cmVzIG9iamVjdFZhbHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgICp0aGlz
ID0gVmFsdWUob2JqZWN0VmFsdWUpOwotICBDWlN0cmluZyBhY3R1YWxLZXkoa2V5LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RybGVuKGtleSkpLAotICAgICAgICAgICAgICAgICAgICAgQ1pTdHJp
bmc6Om5vRHVwbGljYXRpb24pOyAvLyBOT1RFIQotICBhdXRvIGl0ID0gdmFsdWVfLm1hcF8tPmxv
d2VyX2JvdW5kKGFjdHVhbEtleSk7Ci0gIGlmIChpdCAhPSB2YWx1ZV8ubWFwXy0+ZW5kKCkgJiYg
KCppdCkuZmlyc3QgPT0gYWN0dWFsS2V5KQotICAgIHJldHVybiAoKml0KS5zZWNvbmQ7Ci0KLSAg
T2JqZWN0VmFsdWVzOjp2YWx1ZV90eXBlIGRlZmF1bHRWYWx1ZShhY3R1YWxLZXksIG51bGxTaW5n
bGV0b24oKSk7Ci0gIGl0ID0gdmFsdWVfLm1hcF8tPmluc2VydChpdCwgZGVmYXVsdFZhbHVlKTsK
LSAgVmFsdWUmIHZhbHVlID0gKCppdCkuc2Vjb25kOwotICByZXR1cm4gdmFsdWU7Ci19Ci0KLS8v
IEBwYXJhbSBrZXkgaXMgbm90IG51bGwtdGVybWluYXRlZC4KLVZhbHVlJiBWYWx1ZTo6cmVzb2x2
ZVJlZmVyZW5jZShjaGFyIGNvbnN0KiBrZXksIGNoYXIgY29uc3QqIGVuZCkgewotICBKU09OX0FT
U0VSVF9NRVNTQUdFKAotICAgICAgdHlwZSgpID09IG51bGxWYWx1ZSB8fCB0eXBlKCkgPT0gb2Jq
ZWN0VmFsdWUsCi0gICAgICAiaW4gSnNvbjo6VmFsdWU6OnJlc29sdmVSZWZlcmVuY2Uoa2V5LCBl
bmQpOiByZXF1aXJlcyBvYmplY3RWYWx1ZSIpOwotICBpZiAodHlwZSgpID09IG51bGxWYWx1ZSkK
LSAgICAqdGhpcyA9IFZhbHVlKG9iamVjdFZhbHVlKTsKLSAgQ1pTdHJpbmcgYWN0dWFsS2V5KGtl
eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGtleSksCi0gICAgICAgICAgICAgICAgICAg
ICBDWlN0cmluZzo6ZHVwbGljYXRlT25Db3B5KTsKLSAgYXV0byBpdCA9IHZhbHVlXy5tYXBfLT5s
b3dlcl9ib3VuZChhY3R1YWxLZXkpOwotICBpZiAoaXQgIT0gdmFsdWVfLm1hcF8tPmVuZCgpICYm
ICgqaXQpLmZpcnN0ID09IGFjdHVhbEtleSkKLSAgICByZXR1cm4gKCppdCkuc2Vjb25kOwotCi0g
IE9iamVjdFZhbHVlczo6dmFsdWVfdHlwZSBkZWZhdWx0VmFsdWUoYWN0dWFsS2V5LCBudWxsU2lu
Z2xldG9uKCkpOwotICBpdCA9IHZhbHVlXy5tYXBfLT5pbnNlcnQoaXQsIGRlZmF1bHRWYWx1ZSk7
Ci0gIFZhbHVlJiB2YWx1ZSA9ICgqaXQpLnNlY29uZDsKLSAgcmV0dXJuIHZhbHVlOwotfQotCi1W
YWx1ZSBWYWx1ZTo6Z2V0KEFycmF5SW5kZXggaW5kZXgsIGNvbnN0IFZhbHVlJiBkZWZhdWx0VmFs
dWUpIGNvbnN0IHsKLSAgY29uc3QgVmFsdWUqIHZhbHVlID0gJigoKnRoaXMpW2luZGV4XSk7Ci0g
IHJldHVybiB2YWx1ZSA9PSAmbnVsbFNpbmdsZXRvbigpID8gZGVmYXVsdFZhbHVlIDogKnZhbHVl
OwotfQotCi1ib29sIFZhbHVlOjppc1ZhbGlkSW5kZXgoQXJyYXlJbmRleCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5kZXggPCBzaXplKCk7IH0KLQotVmFsdWUgY29uc3QqIFZhbHVlOjpmaW5kKGNo
YXIgY29uc3QqIGJlZ2luLCBjaGFyIGNvbnN0KiBlbmQpIGNvbnN0IHsKLSAgSlNPTl9BU1NFUlRf
TUVTU0FHRSh0eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBvYmplY3RWYWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAiaW4gSnNvbjo6VmFsdWU6OmZpbmQoYmVnaW4sIGVuZCk6IHJl
cXVpcmVzICIKLSAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0VmFsdWUgb3IgbnVsbFZhbHVl
Iik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgIHJldHVybiBudWxscHRyOwotICBD
WlN0cmluZyBhY3R1YWxLZXkoYmVnaW4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBiZWdp
biksCi0gICAgICAgICAgICAgICAgICAgICBDWlN0cmluZzo6bm9EdXBsaWNhdGlvbik7Ci0gIE9i
amVjdFZhbHVlczo6Y29uc3RfaXRlcmF0b3IgaXQgPSB2YWx1ZV8ubWFwXy0+ZmluZChhY3R1YWxL
ZXkpOwotICBpZiAoaXQgPT0gdmFsdWVfLm1hcF8tPmVuZCgpKQotICAgIHJldHVybiBudWxscHRy
OwotICByZXR1cm4gJigqaXQpLnNlY29uZDsKLX0KLVZhbHVlKiBWYWx1ZTo6ZGVtYW5kKGNoYXIg
Y29uc3QqIGJlZ2luLCBjaGFyIGNvbnN0KiBlbmQpIHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSh0
eXBlKCkgPT0gbnVsbFZhbHVlIHx8IHR5cGUoKSA9PSBvYmplY3RWYWx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAiaW4gSnNvbjo6VmFsdWU6OmRlbWFuZChiZWdpbiwgZW5kKTogcmVxdWlyZXMg
IgotICAgICAgICAgICAgICAgICAgICAgICJvYmplY3RWYWx1ZSBvciBudWxsVmFsdWUiKTsKLSAg
cmV0dXJuICZyZXNvbHZlUmVmZXJlbmNlKGJlZ2luLCBlbmQpOwotfQotY29uc3QgVmFsdWUmIFZh
bHVlOjpvcGVyYXRvcltdKGNvbnN0IGNoYXIqIGtleSkgY29uc3QgewotICBWYWx1ZSBjb25zdCog
Zm91bmQgPSBmaW5kKGtleSwga2V5ICsgc3RybGVuKGtleSkpOwotICBpZiAoIWZvdW5kKQotICAg
IHJldHVybiBudWxsU2luZ2xldG9uKCk7Ci0gIHJldHVybiAqZm91bmQ7Ci19Ci1WYWx1ZSBjb25z
dCYgVmFsdWU6Om9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0IHsKLSAgVmFsdWUg
Y29uc3QqIGZvdW5kID0gZmluZChrZXkuZGF0YSgpLCBrZXkuZGF0YSgpICsga2V5Lmxlbmd0aCgp
KTsKLSAgaWYgKCFmb3VuZCkKLSAgICByZXR1cm4gbnVsbFNpbmdsZXRvbigpOwotICByZXR1cm4g
KmZvdW5kOwotfQotCi1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9yW10oY29uc3QgY2hhcioga2V5KSB7
Ci0gIHJldHVybiByZXNvbHZlUmVmZXJlbmNlKGtleSwga2V5ICsgc3RybGVuKGtleSkpOwotfQot
Ci1WYWx1ZSYgVmFsdWU6Om9wZXJhdG9yW10oY29uc3QgU3RyaW5nJiBrZXkpIHsKLSAgcmV0dXJu
IHJlc29sdmVSZWZlcmVuY2Uoa2V5LmRhdGEoKSwga2V5LmRhdGEoKSArIGtleS5sZW5ndGgoKSk7
Ci19Ci0KLVZhbHVlJiBWYWx1ZTo6b3BlcmF0b3JbXShjb25zdCBTdGF0aWNTdHJpbmcmIGtleSkg
ewotICByZXR1cm4gcmVzb2x2ZVJlZmVyZW5jZShrZXkuY19zdHIoKSk7Ci19Ci0KLSNpZmRlZiBK
U09OX1VTRV9DUFBUTAotVmFsdWUmIFZhbHVlOjpvcGVyYXRvcltdKGNvbnN0IENwcFRMOjpDb25z
dFN0cmluZyYga2V5KSB7Ci0gIHJldHVybiByZXNvbHZlUmVmZXJlbmNlKGtleS5jX3N0cigpLCBr
ZXkuZW5kX2Nfc3RyKCkpOwotfQotVmFsdWUgY29uc3QmIFZhbHVlOjpvcGVyYXRvcltdKENwcFRM
OjpDb25zdFN0cmluZyBjb25zdCYga2V5KSBjb25zdCB7Ci0gIFZhbHVlIGNvbnN0KiBmb3VuZCA9
IGZpbmQoa2V5LmNfc3RyKCksIGtleS5lbmRfY19zdHIoKSk7Ci0gIGlmICghZm91bmQpCi0gICAg
cmV0dXJuIG51bGxTaW5nbGV0b24oKTsKLSAgcmV0dXJuICpmb3VuZDsKLX0KLSNlbmRpZgotCi1W
YWx1ZSYgVmFsdWU6OmFwcGVuZChjb25zdCBWYWx1ZSYgdmFsdWUpIHsgcmV0dXJuICgqdGhpcylb
c2l6ZSgpXSA9IHZhbHVlOyB9Ci0KLVZhbHVlJiBWYWx1ZTo6YXBwZW5kKFZhbHVlJiYgdmFsdWUp
IHsKLSAgcmV0dXJuICgqdGhpcylbc2l6ZSgpXSA9IHN0ZDo6bW92ZSh2YWx1ZSk7Ci19Ci0KLVZh
bHVlIFZhbHVlOjpnZXQoY2hhciBjb25zdCogYmVnaW4sCi0gICAgICAgICAgICAgICAgIGNoYXIg
Y29uc3QqIGVuZCwKLSAgICAgICAgICAgICAgICAgVmFsdWUgY29uc3QmIGRlZmF1bHRWYWx1ZSkg
Y29uc3QgewotICBWYWx1ZSBjb25zdCogZm91bmQgPSBmaW5kKGJlZ2luLCBlbmQpOwotICByZXR1
cm4gIWZvdW5kID8gZGVmYXVsdFZhbHVlIDogKmZvdW5kOwotfQotVmFsdWUgVmFsdWU6OmdldChj
aGFyIGNvbnN0KiBrZXksIFZhbHVlIGNvbnN0JiBkZWZhdWx0VmFsdWUpIGNvbnN0IHsKLSAgcmV0
dXJuIGdldChrZXksIGtleSArIHN0cmxlbihrZXkpLCBkZWZhdWx0VmFsdWUpOwotfQotVmFsdWUg
VmFsdWU6OmdldChTdHJpbmcgY29uc3QmIGtleSwgVmFsdWUgY29uc3QmIGRlZmF1bHRWYWx1ZSkg
Y29uc3QgewotICByZXR1cm4gZ2V0KGtleS5kYXRhKCksIGtleS5kYXRhKCkgKyBrZXkubGVuZ3Ro
KCksIGRlZmF1bHRWYWx1ZSk7Ci19Ci0KLWJvb2wgVmFsdWU6OnJlbW92ZU1lbWJlcihjb25zdCBj
aGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kLCBWYWx1ZSogcmVtb3ZlZCkgewotICBpZiAodHlw
ZSgpICE9IG9iamVjdFZhbHVlKSB7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIENaU3RyaW5n
IGFjdHVhbEtleShiZWdpbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIGJlZ2luKSwKLSAg
ICAgICAgICAgICAgICAgICAgIENaU3RyaW5nOjpub0R1cGxpY2F0aW9uKTsKLSAgYXV0byBpdCA9
IHZhbHVlXy5tYXBfLT5maW5kKGFjdHVhbEtleSk7Ci0gIGlmIChpdCA9PSB2YWx1ZV8ubWFwXy0+
ZW5kKCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAocmVtb3ZlZCkKLSAgICAqcmVtb3ZlZCA9
IHN0ZDo6bW92ZShpdC0+c2Vjb25kKTsKLSAgdmFsdWVfLm1hcF8tPmVyYXNlKGl0KTsKLSAgcmV0
dXJuIHRydWU7Ci19Ci1ib29sIFZhbHVlOjpyZW1vdmVNZW1iZXIoY29uc3QgY2hhcioga2V5LCBW
YWx1ZSogcmVtb3ZlZCkgewotICByZXR1cm4gcmVtb3ZlTWVtYmVyKGtleSwga2V5ICsgc3RybGVu
KGtleSksIHJlbW92ZWQpOwotfQotYm9vbCBWYWx1ZTo6cmVtb3ZlTWVtYmVyKFN0cmluZyBjb25z
dCYga2V5LCBWYWx1ZSogcmVtb3ZlZCkgewotICByZXR1cm4gcmVtb3ZlTWVtYmVyKGtleS5kYXRh
KCksIGtleS5kYXRhKCkgKyBrZXkubGVuZ3RoKCksIHJlbW92ZWQpOwotfQotdm9pZCBWYWx1ZTo6
cmVtb3ZlTWVtYmVyKGNvbnN0IGNoYXIqIGtleSkgewotICBKU09OX0FTU0VSVF9NRVNTQUdFKHR5
cGUoKSA9PSBudWxsVmFsdWUgfHwgdHlwZSgpID09IG9iamVjdFZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICJpbiBKc29uOjpWYWx1ZTo6cmVtb3ZlTWVtYmVyKCk6IHJlcXVpcmVzIG9iamVj
dFZhbHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVsbFZhbHVlKQotICAgIHJldHVybjsKLQotICBD
WlN0cmluZyBhY3R1YWxLZXkoa2V5LCB1bnNpZ25lZChzdHJsZW4oa2V5KSksIENaU3RyaW5nOjpu
b0R1cGxpY2F0aW9uKTsKLSAgdmFsdWVfLm1hcF8tPmVyYXNlKGFjdHVhbEtleSk7Ci19Ci12b2lk
IFZhbHVlOjpyZW1vdmVNZW1iZXIoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmVtb3ZlTWVtYmVyKGtl
eS5jX3N0cigpKTsgfQotCi1ib29sIFZhbHVlOjpyZW1vdmVJbmRleChBcnJheUluZGV4IGluZGV4
LCBWYWx1ZSogcmVtb3ZlZCkgewotICBpZiAodHlwZSgpICE9IGFycmF5VmFsdWUpIHsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0gIH0KLSAgQ1pTdHJpbmcga2V5KGluZGV4KTsKLSAgYXV0byBpdCA9IHZh
bHVlXy5tYXBfLT5maW5kKGtleSk7Ci0gIGlmIChpdCA9PSB2YWx1ZV8ubWFwXy0+ZW5kKCkpIHsK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKHJlbW92ZWQpCi0gICAgKnJlbW92ZWQgPSBp
dC0+c2Vjb25kOwotICBBcnJheUluZGV4IG9sZFNpemUgPSBzaXplKCk7Ci0gIC8vIHNoaWZ0IGxl
ZnQgYWxsIGl0ZW1zIGxlZnQsIGludG8gdGhlIHBsYWNlIG9mIHRoZSAicmVtb3ZlZCIKLSAgZm9y
IChBcnJheUluZGV4IGkgPSBpbmRleDsgaSA8IChvbGRTaXplIC0gMSk7ICsraSkgewotICAgIENa
U3RyaW5nIGtlZXkoaSk7Ci0gICAgKCp2YWx1ZV8ubWFwXylba2VleV0gPSAoKnRoaXMpW2kgKyAx
XTsKLSAgfQotICAvLyBlcmFzZSB0aGUgbGFzdCBvbmUgKCJsZWZ0b3ZlciIpCi0gIENaU3RyaW5n
IGtleUxhc3Qob2xkU2l6ZSAtIDEpOwotICBhdXRvIGl0TGFzdCA9IHZhbHVlXy5tYXBfLT5maW5k
KGtleUxhc3QpOwotICB2YWx1ZV8ubWFwXy0+ZXJhc2UoaXRMYXN0KTsKLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLSNpZmRlZiBKU09OX1VTRV9DUFBUTAotVmFsdWUgVmFsdWU6OmdldChjb25zdCBDcHBU
TDo6Q29uc3RTdHJpbmcmIGtleSwKLSAgICAgICAgICAgICAgICAgY29uc3QgVmFsdWUmIGRlZmF1
bHRWYWx1ZSkgY29uc3QgewotICByZXR1cm4gZ2V0KGtleS5jX3N0cigpLCBrZXkuZW5kX2Nfc3Ry
KCksIGRlZmF1bHRWYWx1ZSk7Ci19Ci0jZW5kaWYKLQotYm9vbCBWYWx1ZTo6aXNNZW1iZXIoY2hh
ciBjb25zdCogYmVnaW4sIGNoYXIgY29uc3QqIGVuZCkgY29uc3QgewotICBWYWx1ZSBjb25zdCog
dmFsdWUgPSBmaW5kKGJlZ2luLCBlbmQpOwotICByZXR1cm4gbnVsbHB0ciAhPSB2YWx1ZTsKLX0K
LWJvb2wgVmFsdWU6OmlzTWVtYmVyKGNoYXIgY29uc3QqIGtleSkgY29uc3QgewotICByZXR1cm4g
aXNNZW1iZXIoa2V5LCBrZXkgKyBzdHJsZW4oa2V5KSk7Ci19Ci1ib29sIFZhbHVlOjppc01lbWJl
cihTdHJpbmcgY29uc3QmIGtleSkgY29uc3QgewotICByZXR1cm4gaXNNZW1iZXIoa2V5LmRhdGEo
KSwga2V5LmRhdGEoKSArIGtleS5sZW5ndGgoKSk7Ci19Ci0KLSNpZmRlZiBKU09OX1VTRV9DUFBU
TAotYm9vbCBWYWx1ZTo6aXNNZW1iZXIoY29uc3QgQ3BwVEw6OkNvbnN0U3RyaW5nJiBrZXkpIGNv
bnN0IHsKLSAgcmV0dXJuIGlzTWVtYmVyKGtleS5jX3N0cigpLCBrZXkuZW5kX2Nfc3RyKCkpOwot
fQotI2VuZGlmCi0KLVZhbHVlOjpNZW1iZXJzIFZhbHVlOjpnZXRNZW1iZXJOYW1lcygpIGNvbnN0
IHsKLSAgSlNPTl9BU1NFUlRfTUVTU0FHRSgKLSAgICAgIHR5cGUoKSA9PSBudWxsVmFsdWUgfHwg
dHlwZSgpID09IG9iamVjdFZhbHVlLAotICAgICAgImluIEpzb246OlZhbHVlOjpnZXRNZW1iZXJO
YW1lcygpLCB2YWx1ZSBtdXN0IGJlIG9iamVjdFZhbHVlIik7Ci0gIGlmICh0eXBlKCkgPT0gbnVs
bFZhbHVlKQotICAgIHJldHVybiBWYWx1ZTo6TWVtYmVycygpOwotICBNZW1iZXJzIG1lbWJlcnM7
Ci0gIG1lbWJlcnMucmVzZXJ2ZSh2YWx1ZV8ubWFwXy0+c2l6ZSgpKTsKLSAgT2JqZWN0VmFsdWVz
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlXy5tYXBfLT5iZWdpbigpOwotICBPYmplY3RWYWx1
ZXM6OmNvbnN0X2l0ZXJhdG9yIGl0RW5kID0gdmFsdWVfLm1hcF8tPmVuZCgpOwotICBmb3IgKDsg
aXQgIT0gaXRFbmQ7ICsraXQpIHsKLSAgICBtZW1iZXJzLnB1c2hfYmFjayhTdHJpbmcoKCppdCku
Zmlyc3QuZGF0YSgpLCAoKml0KS5maXJzdC5sZW5ndGgoKSkpOwotICB9Ci0gIHJldHVybiBtZW1i
ZXJzOwotfQotLy8KLS8vIyBpZmRlZiBKU09OX1VTRV9DUFBUTAotLy8gRW51bU1lbWJlck5hbWVz
Ci0vLyBWYWx1ZTo6ZW51bU1lbWJlck5hbWVzKCkgY29uc3QKLS8vewotLy8gICBpZiAoIHR5cGUo
KSA9PSBvYmplY3RWYWx1ZSApCi0vLyAgIHsKLS8vICAgICAgcmV0dXJuIENwcFRMOjpFbnVtOjph
bnkoICBDcHBUTDo6RW51bTo6dHJhbnNmb3JtKAotLy8gICAgICAgICBDcHBUTDo6RW51bTo6a2V5
cyggKih2YWx1ZV8ubWFwXyksIENwcFRMOjpUeXBlPGNvbnN0IENaU3RyaW5nICY+KCkgKSwKLS8v
ICAgICAgICAgTWVtYmVyTmFtZXNUcmFuc2Zvcm0oKSApICk7Ci0vLyAgIH0KLS8vICAgcmV0dXJu
IEVudW1NZW1iZXJOYW1lcygpOwotLy99Ci0vLwotLy8KLS8vIEVudW1WYWx1ZXMKLS8vIFZhbHVl
OjplbnVtVmFsdWVzKCkgY29uc3QKLS8vewotLy8gICBpZiAoIHR5cGUoKSA9PSBvYmplY3RWYWx1
ZSAgfHwgIHR5cGUoKSA9PSBhcnJheVZhbHVlICkKLS8vICAgICAgcmV0dXJuIENwcFRMOjpFbnVt
OjphbnlWYWx1ZXMoICoodmFsdWVfLm1hcF8pLAotLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ3BwVEw6OlR5cGU8Y29uc3QgVmFsdWUgJj4oKSApOwotLy8gICByZXR1cm4g
RW51bVZhbHVlcygpOwotLy99Ci0vLwotLy8jIGVuZGlmCi0KLXN0YXRpYyBib29sIElzSW50ZWdy
YWwoZG91YmxlIGQpIHsKLSAgZG91YmxlIGludGVncmFsX3BhcnQ7Ci0gIHJldHVybiBtb2RmKGQs
ICZpbnRlZ3JhbF9wYXJ0KSA9PSAwLjA7Ci19Ci0KLWJvb2wgVmFsdWU6OmlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBudWxsVmFsdWU7IH0KLQotYm9vbCBWYWx1ZTo6aXNCb29sKCkg
Y29uc3QgeyByZXR1cm4gdHlwZSgpID09IGJvb2xlYW5WYWx1ZTsgfQotCi1ib29sIFZhbHVlOjpp
c0ludCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSNp
ZiBkZWZpbmVkKEpTT05fSEFTX0lOVDY0KQotICAgIHJldHVybiB2YWx1ZV8uaW50XyA+PSBtaW5J
bnQgJiYgdmFsdWVfLmludF8gPD0gbWF4SW50OwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnVpbnRfIDw9IFVJbnQo
bWF4SW50KTsKLSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcmV0dXJuIHZhbHVlXy5yZWFsXyA+PSBt
aW5JbnQgJiYgdmFsdWVfLnJlYWxfIDw9IG1heEludCAmJgotICAgICAgICAgICBJc0ludGVncmFs
KHZhbHVlXy5yZWFsXyk7Ci0gIGRlZmF1bHQ6Ci0gICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIFZhbHVlOjppc1VJbnQoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgp
KSB7Ci0gIGNhc2UgaW50VmFsdWU6Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAgICBy
ZXR1cm4gdmFsdWVfLmludF8gPj0gMCAmJiBMYXJnZXN0VUludCh2YWx1ZV8uaW50XykgPD0gTGFy
Z2VzdFVJbnQobWF4VUludCk7Ci0jZWxzZQotICAgIHJldHVybiB2YWx1ZV8uaW50XyA+PSAwOwot
I2VuZGlmCi0gIGNhc2UgdWludFZhbHVlOgotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0g
ICAgcmV0dXJuIHZhbHVlXy51aW50XyA8PSBtYXhVSW50OwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgotICBjYXNlIHJlYWxWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnJlYWxfID49
IDAgJiYgdmFsdWVfLnJlYWxfIDw9IG1heFVJbnQgJiYKLSAgICAgICAgICAgSXNJbnRlZ3JhbCh2
YWx1ZV8ucmVhbF8pOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBWYWx1ZTo6aXNJbnQ2NCgpIGNvbnN0IHsKLSNpZiBkZWZpbmVkKEpTT05f
SEFTX0lOVDY0KQotICBzd2l0Y2ggKHR5cGUoKSkgewotICBjYXNlIGludFZhbHVlOgotICAgIHJl
dHVybiB0cnVlOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLnVpbnRfIDw9
IFVJbnQ2NChtYXhJbnQ2NCk7Ci0gIGNhc2UgcmVhbFZhbHVlOgotICAgIC8vIE5vdGUgdGhhdCBt
YXhJbnQ2NCAoPSAyXjYzIC0gMSkgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhCi0g
ICAgLy8gZG91YmxlLCBzbyBkb3VibGUobWF4SW50NjQpIHdpbGwgYmUgcm91bmRlZCB1cCB0byAy
XjYzLiBUaGVyZWZvcmUgd2UKLSAgICAvLyByZXF1aXJlIHRoZSB2YWx1ZSB0byBiZSBzdHJpY3Rs
eSBsZXNzIHRoYW4gdGhlIGxpbWl0LgotICAgIHJldHVybiB2YWx1ZV8ucmVhbF8gPj0gZG91Ymxl
KG1pbkludDY0KSAmJgotICAgICAgICAgICB2YWx1ZV8ucmVhbF8gPCBkb3VibGUobWF4SW50NjQp
ICYmIElzSW50ZWdyYWwodmFsdWVfLnJlYWxfKTsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAg
fQotI2VuZGlmIC8vIEpTT05fSEFTX0lOVDY0Ci0gIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBW
YWx1ZTo6aXNVSW50NjQoKSBjb25zdCB7Ci0jaWYgZGVmaW5lZChKU09OX0hBU19JTlQ2NCkKLSAg
c3dpdGNoICh0eXBlKCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICByZXR1cm4gdmFsdWVfLmlu
dF8gPj0gMDsKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGNhc2UgcmVh
bFZhbHVlOgotICAgIC8vIE5vdGUgdGhhdCBtYXhVSW50NjQgKD0gMl42NCAtIDEpIGlzIG5vdCBl
eGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYQotICAgIC8vIGRvdWJsZSwgc28gZG91YmxlKG1heFVJ
bnQ2NCkgd2lsbCBiZSByb3VuZGVkIHVwIHRvIDJeNjQuIFRoZXJlZm9yZSB3ZQotICAgIC8vIHJl
cXVpcmUgdGhlIHZhbHVlIHRvIGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgbGltaXQuCi0gICAg
cmV0dXJuIHZhbHVlXy5yZWFsXyA+PSAwICYmIHZhbHVlXy5yZWFsXyA8IG1heFVJbnQ2NEFzRG91
YmxlICYmCi0gICAgICAgICAgIElzSW50ZWdyYWwodmFsdWVfLnJlYWxfKTsKLSAgZGVmYXVsdDoK
LSAgICBicmVhazsKLSAgfQotI2VuZGlmIC8vIEpTT05fSEFTX0lOVDY0Ci0gIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBWYWx1ZTo6aXNJbnRlZ3JhbCgpIGNvbnN0IHsKLSAgc3dpdGNoICh0eXBl
KCkpIHsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgY2FzZSB1aW50VmFsdWU6Ci0gICAgcmV0dXJuIHRy
dWU7Ci0gIGNhc2UgcmVhbFZhbHVlOgotI2lmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0gICAg
Ly8gTm90ZSB0aGF0IG1heFVJbnQ2NCAoPSAyXjY0IC0gMSkgaXMgbm90IGV4YWN0bHkgcmVwcmVz
ZW50YWJsZSBhcyBhCi0gICAgLy8gZG91YmxlLCBzbyBkb3VibGUobWF4VUludDY0KSB3aWxsIGJl
IHJvdW5kZWQgdXAgdG8gMl42NC4gVGhlcmVmb3JlIHdlCi0gICAgLy8gcmVxdWlyZSB0aGUgdmFs
dWUgdG8gYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBsaW1pdC4KLSAgICByZXR1cm4gdmFsdWVf
LnJlYWxfID49IGRvdWJsZShtaW5JbnQ2NCkgJiYKLSAgICAgICAgICAgdmFsdWVfLnJlYWxfIDwg
bWF4VUludDY0QXNEb3VibGUgJiYgSXNJbnRlZ3JhbCh2YWx1ZV8ucmVhbF8pOwotI2Vsc2UKLSAg
ICByZXR1cm4gdmFsdWVfLnJlYWxfID49IG1pbkludCAmJiB2YWx1ZV8ucmVhbF8gPD0gbWF4VUlu
dCAmJgotICAgICAgICAgICBJc0ludGVncmFsKHZhbHVlXy5yZWFsXyk7Ci0jZW5kaWYgLy8gSlNP
Tl9IQVNfSU5UNjQKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgVmFsdWU6OmlzRG91YmxlKCkgY29uc3QgewotICByZXR1cm4gdHlwZSgpID09
IGludFZhbHVlIHx8IHR5cGUoKSA9PSB1aW50VmFsdWUgfHwgdHlwZSgpID09IHJlYWxWYWx1ZTsK
LX0KLQotYm9vbCBWYWx1ZTo6aXNOdW1lcmljKCkgY29uc3QgeyByZXR1cm4gaXNEb3VibGUoKTsg
fQotCi1ib29sIFZhbHVlOjppc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBzdHJp
bmdWYWx1ZTsgfQotCi1ib29sIFZhbHVlOjppc0FycmF5KCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IGFycmF5VmFsdWU7IH0KLQotYm9vbCBWYWx1ZTo6aXNPYmplY3QoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gb2JqZWN0VmFsdWU7IH0KLQotVmFsdWU6OkNvbW1lbnRzOjpDb21tZW50cyhj
b25zdCBDb21tZW50cyYgdGhhdCkKLSAgICA6IHB0cl97Y2xvbmVVbmlxdWUodGhhdC5wdHJfKX0g
e30KLQotVmFsdWU6OkNvbW1lbnRzOjpDb21tZW50cyhDb21tZW50cyYmIHRoYXQpIDogcHRyX3tz
dGQ6Om1vdmUodGhhdC5wdHJfKX0ge30KLQotVmFsdWU6OkNvbW1lbnRzJiBWYWx1ZTo6Q29tbWVu
dHM6Om9wZXJhdG9yPShjb25zdCBDb21tZW50cyYgdGhhdCkgewotICBwdHJfID0gY2xvbmVVbmlx
dWUodGhhdC5wdHJfKTsKLSAgcmV0dXJuICp0aGlzOwotfQotCi1WYWx1ZTo6Q29tbWVudHMmIFZh
bHVlOjpDb21tZW50czo6b3BlcmF0b3I9KENvbW1lbnRzJiYgdGhhdCkgewotICBwdHJfID0gc3Rk
Ojptb3ZlKHRoYXQucHRyXyk7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotYm9vbCBWYWx1ZTo6Q29t
bWVudHM6OmhhcyhDb21tZW50UGxhY2VtZW50IHNsb3QpIGNvbnN0IHsKLSAgcmV0dXJuIHB0cl8g
JiYgISgqcHRyXylbc2xvdF0uZW1wdHkoKTsKLX0KLQotU3RyaW5nIFZhbHVlOjpDb21tZW50czo6
Z2V0KENvbW1lbnRQbGFjZW1lbnQgc2xvdCkgY29uc3QgewotICBpZiAoIXB0cl8pCi0gICAgcmV0
dXJuIHt9OwotICByZXR1cm4gKCpwdHJfKVtzbG90XTsKLX0KLQotdm9pZCBWYWx1ZTo6Q29tbWVu
dHM6OnNldChDb21tZW50UGxhY2VtZW50IHNsb3QsIFN0cmluZyBjb21tZW50KSB7Ci0gIGlmICgh
cHRyXykgewotICAgIHB0cl8gPSBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+KG5ldyBBcnJheSgpKTsK
LSAgfQotICAoKnB0cl8pW3Nsb3RdID0gc3RkOjptb3ZlKGNvbW1lbnQpOwotfQotCi12b2lkIFZh
bHVlOjpzZXRDb21tZW50KFN0cmluZyBjb21tZW50LCBDb21tZW50UGxhY2VtZW50IHBsYWNlbWVu
dCkgewotICBpZiAoIWNvbW1lbnQuZW1wdHkoKSAmJiAoY29tbWVudC5iYWNrKCkgPT0gJ1xuJykp
IHsKLSAgICAvLyBBbHdheXMgZGlzY2FyZCB0cmFpbGluZyBuZXdsaW5lLCB0byBhaWQgaW5kZW50
YXRpb24uCi0gICAgY29tbWVudC5wb3BfYmFjaygpOwotICB9Ci0gIEpTT05fQVNTRVJUKCFjb21t
ZW50LmVtcHR5KCkpOwotICBKU09OX0FTU0VSVF9NRVNTQUdFKAotICAgICAgY29tbWVudFswXSA9
PSAnXDAnIHx8IGNvbW1lbnRbMF0gPT0gJy8nLAotICAgICAgImluIEpzb246OlZhbHVlOjpzZXRD
b21tZW50KCk6IENvbW1lbnRzIG11c3Qgc3RhcnQgd2l0aCAvIik7Ci0gIGNvbW1lbnRzXy5zZXQo
cGxhY2VtZW50LCBzdGQ6Om1vdmUoY29tbWVudCkpOwotfQotCi1ib29sIFZhbHVlOjpoYXNDb21t
ZW50KENvbW1lbnRQbGFjZW1lbnQgcGxhY2VtZW50KSBjb25zdCB7Ci0gIHJldHVybiBjb21tZW50
c18uaGFzKHBsYWNlbWVudCk7Ci19Ci0KLVN0cmluZyBWYWx1ZTo6Z2V0Q29tbWVudChDb21tZW50
UGxhY2VtZW50IHBsYWNlbWVudCkgY29uc3QgewotICByZXR1cm4gY29tbWVudHNfLmdldChwbGFj
ZW1lbnQpOwotfQotCi12b2lkIFZhbHVlOjpzZXRPZmZzZXRTdGFydChwdHJkaWZmX3Qgc3RhcnQp
IHsgc3RhcnRfID0gc3RhcnQ7IH0KLQotdm9pZCBWYWx1ZTo6c2V0T2Zmc2V0TGltaXQocHRyZGlm
Zl90IGxpbWl0KSB7IGxpbWl0XyA9IGxpbWl0OyB9Ci0KLXB0cmRpZmZfdCBWYWx1ZTo6Z2V0T2Zm
c2V0U3RhcnQoKSBjb25zdCB7IHJldHVybiBzdGFydF87IH0KLQotcHRyZGlmZl90IFZhbHVlOjpn
ZXRPZmZzZXRMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIGxpbWl0XzsgfQotCi1TdHJpbmcgVmFsdWU6
OnRvU3R5bGVkU3RyaW5nKCkgY29uc3QgewotICBTdHJlYW1Xcml0ZXJCdWlsZGVyIGJ1aWxkZXI7
Ci0KLSAgU3RyaW5nIG91dCA9IHRoaXMtPmhhc0NvbW1lbnQoY29tbWVudEJlZm9yZSkgPyAiXG4i
IDogIiI7Ci0gIG91dCArPSBKc29uOjp3cml0ZVN0cmluZyhidWlsZGVyLCAqdGhpcyk7Ci0gIG91
dCArPSAnXG4nOwotCi0gIHJldHVybiBvdXQ7Ci19Ci0KLVZhbHVlOjpjb25zdF9pdGVyYXRvciBW
YWx1ZTo6YmVnaW4oKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0gIGNhc2UgYXJyYXlW
YWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1hcF8pCi0gICAgICBy
ZXR1cm4gY29uc3RfaXRlcmF0b3IodmFsdWVfLm1hcF8tPmJlZ2luKCkpOwotICAgIGJyZWFrOwot
ICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiB7fTsKLX0KLQotVmFsdWU6OmNv
bnN0X2l0ZXJhdG9yIFZhbHVlOjplbmQoKSBjb25zdCB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0g
IGNhc2UgYXJyYXlWYWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1h
cF8pCi0gICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodmFsdWVfLm1hcF8tPmVuZCgpKTsKLSAg
ICBicmVhazsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKLSAgfQotICByZXR1cm4ge307Ci19Ci0K
LVZhbHVlOjppdGVyYXRvciBWYWx1ZTo6YmVnaW4oKSB7Ci0gIHN3aXRjaCAodHlwZSgpKSB7Ci0g
IGNhc2UgYXJyYXlWYWx1ZToKLSAgY2FzZSBvYmplY3RWYWx1ZToKLSAgICBpZiAodmFsdWVfLm1h
cF8pCi0gICAgICByZXR1cm4gaXRlcmF0b3IodmFsdWVfLm1hcF8tPmJlZ2luKCkpOwotICAgIGJy
ZWFrOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBpdGVyYXRvcigpOwot
fQotCi1WYWx1ZTo6aXRlcmF0b3IgVmFsdWU6OmVuZCgpIHsKLSAgc3dpdGNoICh0eXBlKCkpIHsK
LSAgY2FzZSBhcnJheVZhbHVlOgotICBjYXNlIG9iamVjdFZhbHVlOgotICAgIGlmICh2YWx1ZV8u
bWFwXykKLSAgICAgIHJldHVybiBpdGVyYXRvcih2YWx1ZV8ubWFwXy0+ZW5kKCkpOwotICAgIGJy
ZWFrOwotICBkZWZhdWx0OgotICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBpdGVyYXRvcigpOwot
fQotCi0vLyBjbGFzcyBQYXRoQXJndW1lbnQKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1QYXRoQXJndW1lbnQ6
OlBhdGhBcmd1bWVudCgpIDoga2V5XygpIHt9Ci0KLVBhdGhBcmd1bWVudDo6UGF0aEFyZ3VtZW50
KEFycmF5SW5kZXggaW5kZXgpCi0gICAgOiBrZXlfKCksIGluZGV4XyhpbmRleCksIGtpbmRfKGtp
bmRJbmRleCkge30KLQotUGF0aEFyZ3VtZW50OjpQYXRoQXJndW1lbnQoY29uc3QgY2hhcioga2V5
KQotICAgIDoga2V5XyhrZXkpLCBpbmRleF8oKSwga2luZF8oa2luZEtleSkge30KLQotUGF0aEFy
Z3VtZW50OjpQYXRoQXJndW1lbnQoY29uc3QgU3RyaW5nJiBrZXkpCi0gICAgOiBrZXlfKGtleS5j
X3N0cigpKSwgaW5kZXhfKCksIGtpbmRfKGtpbmRLZXkpIHt9Ci0KLS8vIGNsYXNzIFBhdGgKLS8v
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwotCi1QYXRoOjpQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwKLSAgICAgICAgICAg
Y29uc3QgUGF0aEFyZ3VtZW50JiBhMSwKLSAgICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBh
MiwKLSAgICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhMywKLSAgICAgICAgICAgY29uc3Qg
UGF0aEFyZ3VtZW50JiBhNCwKLSAgICAgICAgICAgY29uc3QgUGF0aEFyZ3VtZW50JiBhNSkgewot
ICBJbkFyZ3MgaW47Ci0gIGluLnJlc2VydmUoNSk7Ci0gIGluLnB1c2hfYmFjaygmYTEpOwotICBp
bi5wdXNoX2JhY2soJmEyKTsKLSAgaW4ucHVzaF9iYWNrKCZhMyk7Ci0gIGluLnB1c2hfYmFjaygm
YTQpOwotICBpbi5wdXNoX2JhY2soJmE1KTsKLSAgbWFrZVBhdGgocGF0aCwgaW4pOwotfQotCi12
b2lkIFBhdGg6Om1ha2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSW5BcmdzJiBpbikg
ewotICBjb25zdCBjaGFyKiBjdXJyZW50ID0gcGF0aC5jX3N0cigpOwotICBjb25zdCBjaGFyKiBl
bmQgPSBjdXJyZW50ICsgcGF0aC5sZW5ndGgoKTsKLSAgYXV0byBpdEluQXJnID0gaW4uYmVnaW4o
KTsKLSAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kKSB7Ci0gICAgaWYgKCpjdXJyZW50ID09ICdbJykg
ewotICAgICAgKytjdXJyZW50OwotICAgICAgaWYgKCpjdXJyZW50ID09ICclJykKLSAgICAgICAg
YWRkUGF0aEluQXJnKHBhdGgsIGluLCBpdEluQXJnLCBQYXRoQXJndW1lbnQ6OmtpbmRJbmRleCk7
Ci0gICAgICBlbHNlIHsKLSAgICAgICAgQXJyYXlJbmRleCBpbmRleCA9IDA7Ci0gICAgICAgIGZv
ciAoOyBjdXJyZW50ICE9IGVuZCAmJiAqY3VycmVudCA+PSAnMCcgJiYgKmN1cnJlbnQgPD0gJzkn
OyArK2N1cnJlbnQpCi0gICAgICAgICAgaW5kZXggPSBpbmRleCAqIDEwICsgQXJyYXlJbmRleCgq
Y3VycmVudCAtICcwJyk7Ci0gICAgICAgIGFyZ3NfLnB1c2hfYmFjayhpbmRleCk7Ci0gICAgICB9
Ci0gICAgICBpZiAoY3VycmVudCA9PSBlbmQgfHwgKisrY3VycmVudCAhPSAnXScpCi0gICAgICAg
IGludmFsaWRQYXRoKHBhdGgsIGludChjdXJyZW50IC0gcGF0aC5jX3N0cigpKSk7Ci0gICAgfSBl
bHNlIGlmICgqY3VycmVudCA9PSAnJScpIHsKLSAgICAgIGFkZFBhdGhJbkFyZyhwYXRoLCBpbiwg
aXRJbkFyZywgUGF0aEFyZ3VtZW50OjpraW5kS2V5KTsKLSAgICAgICsrY3VycmVudDsKLSAgICB9
IGVsc2UgaWYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnXScpIHsKLSAgICAgICsr
Y3VycmVudDsKLSAgICB9IGVsc2UgewotICAgICAgY29uc3QgY2hhciogYmVnaW5OYW1lID0gY3Vy
cmVudDsKLSAgICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiAhc3RyY2hyKCJbLiIsICpjdXJy
ZW50KSkKLSAgICAgICAgKytjdXJyZW50OwotICAgICAgYXJnc18ucHVzaF9iYWNrKFN0cmluZyhi
ZWdpbk5hbWUsIGN1cnJlbnQpKTsKLSAgICB9Ci0gIH0KLX0KLQotdm9pZCBQYXRoOjphZGRQYXRo
SW5BcmcoY29uc3QgU3RyaW5nJiAvKnBhdGgqLywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEluQXJncyYgaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBJbkFyZ3M6OmNvbnN0X2l0
ZXJhdG9yJiBpdEluQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgUGF0aEFyZ3VtZW50OjpL
aW5kIGtpbmQpIHsKLSAgaWYgKGl0SW5BcmcgPT0gaW4uZW5kKCkpIHsKLSAgICAvLyBFcnJvcjog
bWlzc2luZyBhcmd1bWVudCAlZAotICB9IGVsc2UgaWYgKCgqaXRJbkFyZyktPmtpbmRfICE9IGtp
bmQpIHsKLSAgICAvLyBFcnJvcjogYmFkIGFyZ3VtZW50IHR5cGUKLSAgfSBlbHNlIHsKLSAgICBh
cmdzXy5wdXNoX2JhY2soKippdEluQXJnKyspOwotICB9Ci19Ci0KLXZvaWQgUGF0aDo6aW52YWxp
ZFBhdGgoY29uc3QgU3RyaW5nJiAvKnBhdGgqLywgaW50IC8qbG9jYXRpb24qLykgewotICAvLyBF
cnJvcjogaW52YWxpZCBwYXRoLgotfQotCi1jb25zdCBWYWx1ZSYgUGF0aDo6cmVzb2x2ZShjb25z
dCBWYWx1ZSYgcm9vdCkgY29uc3QgewotICBjb25zdCBWYWx1ZSogbm9kZSA9ICZyb290OwotICBm
b3IgKGNvbnN0IGF1dG8mIGFyZyA6IGFyZ3NfKSB7Ci0gICAgaWYgKGFyZy5raW5kXyA9PSBQYXRo
QXJndW1lbnQ6OmtpbmRJbmRleCkgewotICAgICAgaWYgKCFub2RlLT5pc0FycmF5KCkgfHwgIW5v
ZGUtPmlzVmFsaWRJbmRleChhcmcuaW5kZXhfKSkgewotICAgICAgICAvLyBFcnJvcjogdW5hYmxl
IHRvIHJlc29sdmUgcGF0aCAoYXJyYXkgdmFsdWUgZXhwZWN0ZWQgYXQgcG9zaXRpb24uLi4gKQot
ICAgICAgICByZXR1cm4gVmFsdWU6Om51bGxTaW5nbGV0b24oKTsKLSAgICAgIH0KLSAgICAgIG5v
ZGUgPSAmKCgqbm9kZSlbYXJnLmluZGV4X10pOwotICAgIH0gZWxzZSBpZiAoYXJnLmtpbmRfID09
IFBhdGhBcmd1bWVudDo6a2luZEtleSkgewotICAgICAgaWYgKCFub2RlLT5pc09iamVjdCgpKSB7
Ci0gICAgICAgIC8vIEVycm9yOiB1bmFibGUgdG8gcmVzb2x2ZSBwYXRoIChvYmplY3QgdmFsdWUg
ZXhwZWN0ZWQgYXQgcG9zaXRpb24uLi4pCi0gICAgICAgIHJldHVybiBWYWx1ZTo6bnVsbFNpbmds
ZXRvbigpOwotICAgICAgfQotICAgICAgbm9kZSA9ICYoKCpub2RlKVthcmcua2V5X10pOwotICAg
ICAgaWYgKG5vZGUgPT0gJlZhbHVlOjpudWxsU2luZ2xldG9uKCkpIHsKLSAgICAgICAgLy8gRXJy
b3I6IHVuYWJsZSB0byByZXNvbHZlIHBhdGggKG9iamVjdCBoYXMgbm8gbWVtYmVyIG5hbWVkICcn
IGF0Ci0gICAgICAgIC8vIHBvc2l0aW9uLi4uKQotICAgICAgICByZXR1cm4gVmFsdWU6Om51bGxT
aW5nbGV0b24oKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuICpub2RlOwotfQotCi1W
YWx1ZSBQYXRoOjpyZXNvbHZlKGNvbnN0IFZhbHVlJiByb290LCBjb25zdCBWYWx1ZSYgZGVmYXVs
dFZhbHVlKSBjb25zdCB7Ci0gIGNvbnN0IFZhbHVlKiBub2RlID0gJnJvb3Q7Ci0gIGZvciAoY29u
c3QgYXV0byYgYXJnIDogYXJnc18pIHsKLSAgICBpZiAoYXJnLmtpbmRfID09IFBhdGhBcmd1bWVu
dDo6a2luZEluZGV4KSB7Ci0gICAgICBpZiAoIW5vZGUtPmlzQXJyYXkoKSB8fCAhbm9kZS0+aXNW
YWxpZEluZGV4KGFyZy5pbmRleF8pKQotICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwotICAg
ICAgbm9kZSA9ICYoKCpub2RlKVthcmcuaW5kZXhfXSk7Ci0gICAgfSBlbHNlIGlmIChhcmcua2lu
ZF8gPT0gUGF0aEFyZ3VtZW50OjpraW5kS2V5KSB7Ci0gICAgICBpZiAoIW5vZGUtPmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gICAgICBub2RlID0gJigoKm5vZGUp
W2FyZy5rZXlfXSk7Ci0gICAgICBpZiAobm9kZSA9PSAmVmFsdWU6Om51bGxTaW5nbGV0b24oKSkK
LSAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuICpub2Rl
OwotfQotCi1WYWx1ZSYgUGF0aDo6bWFrZShWYWx1ZSYgcm9vdCkgY29uc3QgewotICBWYWx1ZSog
bm9kZSA9ICZyb290OwotICBmb3IgKGNvbnN0IGF1dG8mIGFyZyA6IGFyZ3NfKSB7Ci0gICAgaWYg
KGFyZy5raW5kXyA9PSBQYXRoQXJndW1lbnQ6OmtpbmRJbmRleCkgewotICAgICAgaWYgKCFub2Rl
LT5pc0FycmF5KCkpIHsKLSAgICAgICAgLy8gRXJyb3I6IG5vZGUgaXMgbm90IGFuIGFycmF5IGF0
IHBvc2l0aW9uIC4uLgotICAgICAgfQotICAgICAgbm9kZSA9ICYoKCpub2RlKVthcmcuaW5kZXhf
XSk7Ci0gICAgfSBlbHNlIGlmIChhcmcua2luZF8gPT0gUGF0aEFyZ3VtZW50OjpraW5kS2V5KSB7
Ci0gICAgICBpZiAoIW5vZGUtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgLy8gRXJyb3I6IG5vZGUg
aXMgbm90IGFuIG9iamVjdCBhdCBwb3NpdGlvbi4uLgotICAgICAgfQotICAgICAgbm9kZSA9ICYo
KCpub2RlKVthcmcua2V5X10pOwotICAgIH0KLSAgfQotICByZXR1cm4gKm5vZGU7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL2pzb25fdmFs
dWVpdGVyYXRvci5pbmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVlaXRlcmF0b3IuaW5s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTNkMjEwZGUzMWMuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3ZhbHVlaXRlcmF0b3IuaW5sCisrKyAvZGV2
L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3LTIwMTAgQmFwdGlzdGUg
TGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1bmRlciBN
SVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVjb2duaXpl
ZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBv
ciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLS8vIGlu
Y2x1ZGVkIGJ5IGpzb25fdmFsdWUuY3BwCi0KLW5hbWVzcGFjZSBKc29uIHsKLQotLy8gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gY2xhc3MgVmFsdWVJdGVyYXRvckJh
c2UKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotVmFsdWVJdGVy
YXRvckJhc2U6OlZhbHVlSXRlcmF0b3JCYXNlKCkgOiBjdXJyZW50XygpIHt9Ci0KLVZhbHVlSXRl
cmF0b3JCYXNlOjpWYWx1ZUl0ZXJhdG9yQmFzZSgKLSAgICBjb25zdCBWYWx1ZTo6T2JqZWN0VmFs
dWVzOjppdGVyYXRvciYgY3VycmVudCkKLSAgICA6IGN1cnJlbnRfKGN1cnJlbnQpLCBpc051bGxf
KGZhbHNlKSB7fQotCi1WYWx1ZSYgVmFsdWVJdGVyYXRvckJhc2U6OmRlcmVmKCkgY29uc3QgeyBy
ZXR1cm4gY3VycmVudF8tPnNlY29uZDsgfQotCi12b2lkIFZhbHVlSXRlcmF0b3JCYXNlOjppbmNy
ZW1lbnQoKSB7ICsrY3VycmVudF87IH0KLQotdm9pZCBWYWx1ZUl0ZXJhdG9yQmFzZTo6ZGVjcmVt
ZW50KCkgeyAtLWN1cnJlbnRfOyB9Ci0KLVZhbHVlSXRlcmF0b3JCYXNlOjpkaWZmZXJlbmNlX3R5
cGUKLVZhbHVlSXRlcmF0b3JCYXNlOjpjb21wdXRlRGlzdGFuY2UoY29uc3QgU2VsZlR5cGUmIG90
aGVyKSBjb25zdCB7Ci0jaWZkZWYgSlNPTl9VU0VfQ1BQVExfU01BTExNQVAKLSAgcmV0dXJuIG90
aGVyLmN1cnJlbnRfIC0gY3VycmVudF87Ci0jZWxzZQotICAvLyBJdGVyYXRvciBmb3IgbnVsbCB2
YWx1ZSBhcmUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGRlZmF1bHQKLSAgLy8gY29uc3RydWN0b3Is
IHdoaWNoIGluaXRpYWxpemUgY3VycmVudF8gdG8gdGhlIGRlZmF1bHQKLSAgLy8gc3RkOjptYXA6
Oml0ZXJhdG9yLiBBcyBiZWdpbigpIGFuZCBlbmQoKSBhcmUgdHdvIGluc3RhbmNlCi0gIC8vIG9m
IHRoZSBkZWZhdWx0IHN0ZDo6bWFwOjppdGVyYXRvciwgdGhleSBjYW4gbm90IGJlIGNvbXBhcmVk
LgotICAvLyBUbyBhbGxvdyB0aGlzLCB3ZSBoYW5kbGUgdGhpcyBjb21wYXJpc29uIHNwZWNpZmlj
YWxseS4KLSAgaWYgKGlzTnVsbF8gJiYgb3RoZXIuaXNOdWxsXykgewotICAgIHJldHVybiAwOwot
ICB9Ci0KLSAgLy8gVXNhZ2Ugb2Ygc3RkOjpkaXN0YW5jZSBpcyBub3QgcG9ydGFibGUgKGRvZXMg
bm90IGNvbXBpbGUgd2l0aCBTdW4gU3R1ZGlvIDEyCi0gIC8vIFJvZ3VlV2F2ZSBTVEwsCi0gIC8v
IHdoaWNoIGlzIHRoZSBvbmUgdXNlZCBieSBkZWZhdWx0KS4KLSAgLy8gVXNpbmcgYSBwb3J0YWJs
ZSBoYW5kLW1hZGUgdmVyc2lvbiBmb3Igbm9uIHJhbmRvbSBpdGVyYXRvciBpbnN0ZWFkOgotICAv
LyAgIHJldHVybiBkaWZmZXJlbmNlX3R5cGUoIHN0ZDo6ZGlzdGFuY2UoIGN1cnJlbnRfLCBvdGhl
ci5jdXJyZW50XyApICk7Ci0gIGRpZmZlcmVuY2VfdHlwZSBteURpc3RhbmNlID0gMDsKLSAgZm9y
IChWYWx1ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciBpdCA9IGN1cnJlbnRfOyBpdCAhPSBvdGhl
ci5jdXJyZW50XzsKLSAgICAgICArK2l0KSB7Ci0gICAgKytteURpc3RhbmNlOwotICB9Ci0gIHJl
dHVybiBteURpc3RhbmNlOwotI2VuZGlmCi19Ci0KLWJvb2wgVmFsdWVJdGVyYXRvckJhc2U6Omlz
RXF1YWwoY29uc3QgU2VsZlR5cGUmIG90aGVyKSBjb25zdCB7Ci0gIGlmIChpc051bGxfKSB7Ci0g
ICAgcmV0dXJuIG90aGVyLmlzTnVsbF87Ci0gIH0KLSAgcmV0dXJuIGN1cnJlbnRfID09IG90aGVy
LmN1cnJlbnRfOwotfQotCi12b2lkIFZhbHVlSXRlcmF0b3JCYXNlOjpjb3B5KGNvbnN0IFNlbGZU
eXBlJiBvdGhlcikgewotICBjdXJyZW50XyA9IG90aGVyLmN1cnJlbnRfOwotICBpc051bGxfID0g
b3RoZXIuaXNOdWxsXzsKLX0KLQotVmFsdWUgVmFsdWVJdGVyYXRvckJhc2U6OmtleSgpIGNvbnN0
IHsKLSAgY29uc3QgVmFsdWU6OkNaU3RyaW5nIGN6c3RyaW5nID0gKCpjdXJyZW50XykuZmlyc3Q7
Ci0gIGlmIChjenN0cmluZy5kYXRhKCkpIHsKLSAgICBpZiAoY3pzdHJpbmcuaXNTdGF0aWNTdHJp
bmcoKSkKLSAgICAgIHJldHVybiBWYWx1ZShTdGF0aWNTdHJpbmcoY3pzdHJpbmcuZGF0YSgpKSk7
Ci0gICAgcmV0dXJuIFZhbHVlKGN6c3RyaW5nLmRhdGEoKSwgY3pzdHJpbmcuZGF0YSgpICsgY3pz
dHJpbmcubGVuZ3RoKCkpOwotICB9Ci0gIHJldHVybiBWYWx1ZShjenN0cmluZy5pbmRleCgpKTsK
LX0KLQotVUludCBWYWx1ZUl0ZXJhdG9yQmFzZTo6aW5kZXgoKSBjb25zdCB7Ci0gIGNvbnN0IFZh
bHVlOjpDWlN0cmluZyBjenN0cmluZyA9ICgqY3VycmVudF8pLmZpcnN0OwotICBpZiAoIWN6c3Ry
aW5nLmRhdGEoKSkKLSAgICByZXR1cm4gY3pzdHJpbmcuaW5kZXgoKTsKLSAgcmV0dXJuIFZhbHVl
OjpVSW50KC0xKTsKLX0KLQotU3RyaW5nIFZhbHVlSXRlcmF0b3JCYXNlOjpuYW1lKCkgY29uc3Qg
ewotICBjaGFyIGNvbnN0KiBrZWV5OwotICBjaGFyIGNvbnN0KiBlbmQ7Ci0gIGtlZXkgPSBtZW1i
ZXJOYW1lKCZlbmQpOwotICBpZiAoIWtlZXkpCi0gICAgcmV0dXJuIFN0cmluZygpOwotICByZXR1
cm4gU3RyaW5nKGtlZXksIGVuZCk7Ci19Ci0KLWNoYXIgY29uc3QqIFZhbHVlSXRlcmF0b3JCYXNl
OjptZW1iZXJOYW1lKCkgY29uc3QgewotICBjb25zdCBjaGFyKiBjbmFtZSA9ICgqY3VycmVudF8p
LmZpcnN0LmRhdGEoKTsKLSAgcmV0dXJuIGNuYW1lID8gY25hbWUgOiAiIjsKLX0KLQotY2hhciBj
b25zdCogVmFsdWVJdGVyYXRvckJhc2U6Om1lbWJlck5hbWUoY2hhciBjb25zdCoqIGVuZCkgY29u
c3QgewotICBjb25zdCBjaGFyKiBjbmFtZSA9ICgqY3VycmVudF8pLmZpcnN0LmRhdGEoKTsKLSAg
aWYgKCFjbmFtZSkgewotICAgICplbmQgPSBudWxscHRyOwotICAgIHJldHVybiBudWxscHRyOwot
ICB9Ci0gICplbmQgPSBjbmFtZSArICgqY3VycmVudF8pLmZpcnN0Lmxlbmd0aCgpOwotICByZXR1
cm4gY25hbWU7Ci19Ci0KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LS8vIGNsYXNzIFZhbHVlQ29uc3RJdGVyYXRvcgotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotCi1WYWx1ZUNvbnN0SXRlcmF0b3I6OlZhbHVlQ29uc3RJdGVyYXRvcigp
ID0gZGVmYXVsdDsKLQotVmFsdWVDb25zdEl0ZXJhdG9yOjpWYWx1ZUNvbnN0SXRlcmF0b3IoCi0g
ICAgY29uc3QgVmFsdWU6Ok9iamVjdFZhbHVlczo6aXRlcmF0b3ImIGN1cnJlbnQpCi0gICAgOiBW
YWx1ZUl0ZXJhdG9yQmFzZShjdXJyZW50KSB7fQotCi1WYWx1ZUNvbnN0SXRlcmF0b3I6OlZhbHVl
Q29uc3RJdGVyYXRvcihWYWx1ZUl0ZXJhdG9yIGNvbnN0JiBvdGhlcikKLSAgICA6IFZhbHVlSXRl
cmF0b3JCYXNlKG90aGVyKSB7fQotCi1WYWx1ZUNvbnN0SXRlcmF0b3ImIFZhbHVlQ29uc3RJdGVy
YXRvcjo6Ci1vcGVyYXRvcj0oY29uc3QgVmFsdWVJdGVyYXRvckJhc2UmIG90aGVyKSB7Ci0gIGNv
cHkob3RoZXIpOwotICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIGNsYXNzIFZhbHVlSXRlcmF0b3IKLS8vIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotVmFsdWVJdGVyYXRvcjo6VmFsdWVJdGVyYXRv
cigpID0gZGVmYXVsdDsKLQotVmFsdWVJdGVyYXRvcjo6VmFsdWVJdGVyYXRvcihjb25zdCBWYWx1
ZTo6T2JqZWN0VmFsdWVzOjppdGVyYXRvciYgY3VycmVudCkKLSAgICA6IFZhbHVlSXRlcmF0b3JC
YXNlKGN1cnJlbnQpIHt9Ci0KLVZhbHVlSXRlcmF0b3I6OlZhbHVlSXRlcmF0b3IoY29uc3QgVmFs
dWVDb25zdEl0ZXJhdG9yJiBvdGhlcikKLSAgICA6IFZhbHVlSXRlcmF0b3JCYXNlKG90aGVyKSB7
Ci0gIHRocm93UnVudGltZUVycm9yKCJDb25zdEl0ZXJhdG9yIHRvIEl0ZXJhdG9yIHNob3VsZCBu
ZXZlciBiZSBhbGxvd2VkLiIpOwotfQotCi1WYWx1ZUl0ZXJhdG9yOjpWYWx1ZUl0ZXJhdG9yKGNv
bnN0IFZhbHVlSXRlcmF0b3ImIG90aGVyKSA9IGRlZmF1bHQ7Ci0KLVZhbHVlSXRlcmF0b3ImIFZh
bHVlSXRlcmF0b3I6Om9wZXJhdG9yPShjb25zdCBTZWxmVHlwZSYgb3RoZXIpIHsKLSAgY29weShv
dGhlcik7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSnNvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS9zcmMvbGliX2pzb24vanNvbl93cml0ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvbGliX2pz
b24vanNvbl93cml0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWRmZDhj
ZjYwOGMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi9qc29uX3dyaXRlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUzICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDExIEJh
cHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQg
dW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJl
Y29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBk
ZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQot
Ci0jaWYgIWRlZmluZWQoSlNPTl9JU19BTUFMR0FNQVRJT04pCi0jaW5jbHVkZSAianNvbl90b29s
LmgiCi0jaW5jbHVkZSA8anNvbi93cml0ZXIuaD4KLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09O
X0lTX0FNQUxHQU1BVElPTikKLSNpbmNsdWRlIDxjYXNzZXJ0PgotI2luY2x1ZGUgPGNzdHJpbmc+
Ci0jaW5jbHVkZSA8aW9tYW5pcD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8c2V0Pgot
I2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2lmIF9fY3BsdXNwbHVz
ID49IDIwMTEwM0wKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0KLSNpZiAh
ZGVmaW5lZChpc25hbikKLSNkZWZpbmUgaXNuYW4gc3RkOjppc25hbgotI2VuZGlmCi0KLSNpZiAh
ZGVmaW5lZChpc2Zpbml0ZSkKLSNkZWZpbmUgaXNmaW5pdGUgc3RkOjppc2Zpbml0ZQotI2VuZGlm
Ci0KLSNlbHNlCi0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotCi0jaWYgZGVm
aW5lZChfTVNDX1ZFUikKLSNpZiAhZGVmaW5lZChpc25hbikKLSNpbmNsdWRlIDxmbG9hdC5oPgot
I2RlZmluZSBpc25hbiBfaXNuYW4KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoaXNmaW5pdGUpCi0j
aW5jbHVkZSA8ZmxvYXQuaD4KLSNkZWZpbmUgaXNmaW5pdGUgX2Zpbml0ZQotI2VuZGlmCi0KLSNp
ZiAhZGVmaW5lZChfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVMpCi0jZGVm
aW5lIF9DUlRfU0VDVVJFX0NQUF9PVkVSTE9BRF9TVEFOREFSRF9OQU1FUyAxCi0jZW5kaWYgLy9f
Q1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVMKLQotI2VuZGlmIC8vX01TQ19W
RVIKLQotI2lmIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KSAvLyBTb2xhcmlzCi0j
aWYgIWRlZmluZWQoaXNmaW5pdGUpCi0jaW5jbHVkZSA8aWVlZWZwLmg+Ci0jZGVmaW5lIGlzZmlu
aXRlIGZpbml0ZQotI2VuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19ocHV4KQotI2lmICFk
ZWZpbmVkKGlzZmluaXRlKQotI2lmIGRlZmluZWQoX19pYTY0KSAmJiAhZGVmaW5lZChmaW5pdGUp
Ci0jZGVmaW5lIGlzZmluaXRlKHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKHNpemVvZih4KSA9PSBzaXplb2YoZmxvYXQp
ID8gX0lzZmluaXRlZih4KSA6IF9Jc0Zpbml0ZSh4KSkpCi0jZW5kaWYKLSNlbmRpZgotI2VuZGlm
Ci0KLSNpZiAhZGVmaW5lZChpc25hbikKLS8vIElFRUUgc3RhbmRhcmQgc3RhdGVzIHRoYXQgTmFO
IHZhbHVlcyB3aWxsIG5vdCBjb21wYXJlIHRvIHRoZW1zZWx2ZXMKLSNkZWZpbmUgaXNuYW4oeCkg
KHggIT0geCkKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoX19BUFBMRV9fKQotI2lmICFkZWZpbmVk
KGlzZmluaXRlKQotI2RlZmluZSBpc2Zpbml0ZSBmaW5pdGUKLSNlbmRpZgotI2VuZGlmCi0jZW5k
aWYKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0vLyBEaXNhYmxlIHdhcm5pbmcgYWJvdXQgc3Ry
ZHVwIGJlaW5nIGRlcHJlY2F0ZWQuCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ5OTYpCi0j
ZW5kaWYKLQotbmFtZXNwYWNlIEpzb24gewotCi0jaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTCB8
fCAoZGVmaW5lZChfQ1BQTElCX1ZFUikgJiYgX0NQUExJQl9WRVIgPj0gNTIwKQotdHlwZWRlZiBz
dGQ6OnVuaXF1ZV9wdHI8U3RyZWFtV3JpdGVyPiBTdHJlYW1Xcml0ZXJQdHI7Ci0jZWxzZQotdHlw
ZWRlZiBzdGQ6OmF1dG9fcHRyPFN0cmVhbVdyaXRlcj4gU3RyZWFtV3JpdGVyUHRyOwotI2VuZGlm
Ci0KLVN0cmluZyB2YWx1ZVRvU3RyaW5nKExhcmdlc3RJbnQgdmFsdWUpIHsKLSAgVUludFRvU3Ry
aW5nQnVmZmVyIGJ1ZmZlcjsKLSAgY2hhciogY3VycmVudCA9IGJ1ZmZlciArIHNpemVvZihidWZm
ZXIpOwotICBpZiAodmFsdWUgPT0gVmFsdWU6Om1pbkxhcmdlc3RJbnQpIHsKLSAgICB1aW50VG9T
dHJpbmcoTGFyZ2VzdFVJbnQoVmFsdWU6Om1heExhcmdlc3RJbnQpICsgMSwgY3VycmVudCk7Ci0g
ICAgKi0tY3VycmVudCA9ICctJzsKLSAgfSBlbHNlIGlmICh2YWx1ZSA8IDApIHsKLSAgICB1aW50
VG9TdHJpbmcoTGFyZ2VzdFVJbnQoLXZhbHVlKSwgY3VycmVudCk7Ci0gICAgKi0tY3VycmVudCA9
ICctJzsKLSAgfSBlbHNlIHsKLSAgICB1aW50VG9TdHJpbmcoTGFyZ2VzdFVJbnQodmFsdWUpLCBj
dXJyZW50KTsKLSAgfQotICBhc3NlcnQoY3VycmVudCA+PSBidWZmZXIpOwotICByZXR1cm4gY3Vy
cmVudDsKLX0KLQotU3RyaW5nIHZhbHVlVG9TdHJpbmcoTGFyZ2VzdFVJbnQgdmFsdWUpIHsKLSAg
VUludFRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgY2hhciogY3VycmVudCA9IGJ1ZmZlciArIHNp
emVvZihidWZmZXIpOwotICB1aW50VG9TdHJpbmcodmFsdWUsIGN1cnJlbnQpOwotICBhc3NlcnQo
Y3VycmVudCA+PSBidWZmZXIpOwotICByZXR1cm4gY3VycmVudDsKLX0KLQotI2lmIGRlZmluZWQo
SlNPTl9IQVNfSU5UNjQpCi0KLVN0cmluZyB2YWx1ZVRvU3RyaW5nKEludCB2YWx1ZSkgeyByZXR1
cm4gdmFsdWVUb1N0cmluZyhMYXJnZXN0SW50KHZhbHVlKSk7IH0KLQotU3RyaW5nIHZhbHVlVG9T
dHJpbmcoVUludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWVUb1N0cmluZyhMYXJnZXN0VUludCh2YWx1
ZSkpOyB9Ci0KLSNlbmRpZiAvLyAjIGlmIGRlZmluZWQoSlNPTl9IQVNfSU5UNjQpCi0KLW5hbWVz
cGFjZSB7Ci1TdHJpbmcgdmFsdWVUb1N0cmluZyhkb3VibGUgdmFsdWUsCi0gICAgICAgICAgICAg
ICAgICAgICBib29sIHVzZVNwZWNpYWxGbG9hdHMsCi0gICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgUHJlY2lzaW9uVHlwZSBw
cmVjaXNpb25UeXBlKSB7Ci0gIC8vIFByaW50IGludG8gdGhlIGJ1ZmZlci4gV2UgbmVlZCBub3Qg
cmVxdWVzdCB0aGUgYWx0ZXJuYXRpdmUgcmVwcmVzZW50YXRpb24KLSAgLy8gdGhhdCBhbHdheXMg
aGFzIGEgZGVjaW1hbCBwb2ludCBiZWNhdXNlIEpTT04gZG9lc24ndCBkaXN0aW5ndWlzaCB0aGUK
LSAgLy8gY29uY2VwdHMgb2YgcmVhbHMgYW5kIGludGVnZXJzLgotICBpZiAoIWlzZmluaXRlKHZh
bHVlKSkgewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZXBzWzJdWzNdID0ge3siTmFO
IiwgIi1JbmZpbml0eSIsICJJbmZpbml0eSJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsibnVsbCIsICItMWUrOTk5OSIsICIxZSs5OTk5In19OwotICAgIHJl
dHVybiByZXBzW3VzZVNwZWNpYWxGbG9hdHMgPyAwIDogMV0KLSAgICAgICAgICAgICAgIFtpc25h
bih2YWx1ZSkgPyAwIDogKHZhbHVlIDwgMCkgPyAxIDogMl07Ci0gIH0KLQotICBTdHJpbmcgYnVm
ZmVyKHNpemVfdCgzNiksICdcMCcpOwotICB3aGlsZSAodHJ1ZSkgewotICAgIGludCBsZW4gPSBq
c29uY3BwX3NucHJpbnRmKAotICAgICAgICAmKmJ1ZmZlci5iZWdpbigpLCBidWZmZXIuc2l6ZSgp
LAotICAgICAgICAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb25UeXBlOjpzaWduaWZpY2FudERp
Z2l0cykgPyAiJS4qZyIgOiAiJS4qZiIsCi0gICAgICAgIHByZWNpc2lvbiwgdmFsdWUpOwotICAg
IGFzc2VydChsZW4gPj0gMCk7Ci0gICAgYXV0byB3b3VsZFByaW50ID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW4pOwotICAgIGlmICh3b3VsZFByaW50ID49IGJ1ZmZlci5zaXplKCkpIHsKLSAgICAg
IGJ1ZmZlci5yZXNpemUod291bGRQcmludCArIDEpOwotICAgICAgY29udGludWU7Ci0gICAgfQot
ICAgIGJ1ZmZlci5yZXNpemUod291bGRQcmludCk7Ci0gICAgYnJlYWs7Ci0gIH0KLQotICBidWZm
ZXIuZXJhc2UoZml4TnVtZXJpY0xvY2FsZShidWZmZXIuYmVnaW4oKSwgYnVmZmVyLmVuZCgpKSwg
YnVmZmVyLmVuZCgpKTsKLQotICAvLyBzdHJpcCB0aGUgemVybyBwYWRkaW5nIGZyb20gdGhlIHJp
Z2h0Ci0gIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvblR5cGU6OmRlY2ltYWxQbGFjZXMp
IHsKLSAgICBidWZmZXIuZXJhc2UoZml4WmVyb3NJblRoZUVuZChidWZmZXIuYmVnaW4oKSwgYnVm
ZmVyLmVuZCgpKSwgYnVmZmVyLmVuZCgpKTsKLSAgfQotCi0gIC8vIHRyeSB0byBlbnN1cmUgd2Ug
cHJlc2VydmUgdGhlIGZhY3QgdGhhdCB0aGlzIHdhcyBnaXZlbiB0byB1cyBhcyBhIGRvdWJsZSBv
bgotICAvLyBpbnB1dAotICBpZiAoYnVmZmVyLmZpbmQoJy4nKSA9PSBidWZmZXIubnBvcyAmJiBi
dWZmZXIuZmluZCgnZScpID09IGJ1ZmZlci5ucG9zKSB7Ci0gICAgYnVmZmVyICs9ICIuMCI7Ci0g
IH0KLSAgcmV0dXJuIGJ1ZmZlcjsKLX0KLX0gLy8gbmFtZXNwYWNlCi0KLVN0cmluZyB2YWx1ZVRv
U3RyaW5nKGRvdWJsZSB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBw
cmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICBQcmVjaXNpb25UeXBlIHByZWNpc2lvblR5
cGUpIHsKLSAgcmV0dXJuIHZhbHVlVG9TdHJpbmcodmFsdWUsIGZhbHNlLCBwcmVjaXNpb24sIHBy
ZWNpc2lvblR5cGUpOwotfQotCi1TdHJpbmcgdmFsdWVUb1N0cmluZyhib29sIHZhbHVlKSB7IHJl
dHVybiB2YWx1ZSA/ICJ0cnVlIiA6ICJmYWxzZSI7IH0KLQotc3RhdGljIGJvb2wgaXNBbnlDaGFy
UmVxdWlyZWRRdW90aW5nKGNoYXIgY29uc3QqIHMsIHNpemVfdCBuKSB7Ci0gIGFzc2VydChzIHx8
ICFuKTsKLQotICBjaGFyIGNvbnN0KiBjb25zdCBlbmQgPSBzICsgbjsKLSAgZm9yIChjaGFyIGNv
bnN0KiBjdXIgPSBzOyBjdXIgPCBlbmQ7ICsrY3VyKSB7Ci0gICAgaWYgKCpjdXIgPT0gJ1xcJyB8
fCAqY3VyID09ICdcIicgfHwgKmN1ciA8ICcgJyB8fAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPigqY3VyKSA8IDB4ODApCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgfQotICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdXRmOFRvQ29kZXBvaW50KGNvbnN0
IGNoYXIqJiBzLCBjb25zdCBjaGFyKiBlKSB7Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBSRVBMQUNF
TUVOVF9DSEFSQUNURVIgPSAweEZGRkQ7Ci0KLSAgdW5zaWduZWQgaW50IGZpcnN0Qnl0ZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpzKTsKLQotICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkK
LSAgICByZXR1cm4gZmlyc3RCeXRlOwotCi0gIGlmIChmaXJzdEJ5dGUgPCAweEUwKSB7Ci0gICAg
aWYgKGUgLSBzIDwgMikKLSAgICAgIHJldHVybiBSRVBMQUNFTUVOVF9DSEFSQUNURVI7Ci0KLSAg
ICB1bnNpZ25lZCBpbnQgY2FsY3VsYXRlZCA9Ci0gICAgICAgICgoZmlyc3RCeXRlICYgMHgxRikg
PDwgNikgfCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzWzFdKSAmIDB4M0YpOwotICAgIHMg
Kz0gMTsKLSAgICAvLyBvdmVyc2l6ZWQgZW5jb2RlZCBjaGFyYWN0ZXJzIGFyZSBpbnZhbGlkCi0g
ICAgcmV0dXJuIGNhbGN1bGF0ZWQgPCAweDgwID8gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSIDogY2Fs
Y3VsYXRlZDsKLSAgfQotCi0gIGlmIChmaXJzdEJ5dGUgPCAweEYwKSB7Ci0gICAgaWYgKGUgLSBz
IDwgMykKLSAgICAgIHJldHVybiBSRVBMQUNFTUVOVF9DSEFSQUNURVI7Ci0KLSAgICB1bnNpZ25l
ZCBpbnQgY2FsY3VsYXRlZCA9ICgoZmlyc3RCeXRlICYgMHgwRikgPDwgMTIpIHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzWzFdKSAm
IDB4M0YpIDw8IDYpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHNbMl0pICYgMHgzRik7Ci0gICAgcyArPSAyOwotICAgIC8vIHN1cnJv
Z2F0ZXMgYXJlbid0IHZhbGlkIGNvZGVwb2ludHMgaXRzZWxmCi0gICAgLy8gc2hvdWxkbid0IGJl
IFVURi04IGVuY29kZWQKLSAgICBpZiAoY2FsY3VsYXRlZCA+PSAweEQ4MDAgJiYgY2FsY3VsYXRl
ZCA8PSAweERGRkYpCi0gICAgICByZXR1cm4gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotICAgIC8v
IG92ZXJzaXplZCBlbmNvZGVkIGNoYXJhY3RlcnMgYXJlIGludmFsaWQKLSAgICByZXR1cm4gY2Fs
Y3VsYXRlZCA8IDB4ODAwID8gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSIDogY2FsY3VsYXRlZDsKLSAg
fQotCi0gIGlmIChmaXJzdEJ5dGUgPCAweEY4KSB7Ci0gICAgaWYgKGUgLSBzIDwgNCkKLSAgICAg
IHJldHVybiBSRVBMQUNFTUVOVF9DSEFSQUNURVI7Ci0KLSAgICB1bnNpZ25lZCBpbnQgY2FsY3Vs
YXRlZCA9ICgoZmlyc3RCeXRlICYgMHgwNykgPDwgMTgpIHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzWzFdKSAmIDB4M0YpIDw8IDEy
KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oc1syXSkgJiAweDNGKSA8PCA2KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzWzNdKSAmIDB4M0YpOwotICAgIHMgKz0gMzsK
LSAgICAvLyBvdmVyc2l6ZWQgZW5jb2RlZCBjaGFyYWN0ZXJzIGFyZSBpbnZhbGlkCi0gICAgcmV0
dXJuIGNhbGN1bGF0ZWQgPCAweDEwMDAwID8gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSIDogY2FsY3Vs
YXRlZDsKLSAgfQotCi0gIHJldHVybiBSRVBMQUNFTUVOVF9DSEFSQUNURVI7Ci19Ci0KLXN0YXRp
YyBjb25zdCBjaGFyIGhleDJbXSA9ICIwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMDExMTIxMzE0MTUxNjE3MTgxOTFhMWIxYzFk
MWUxZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDIxMjIyMzI0MjUyNjI3MjgyOTJh
MmIyYzJkMmUyZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIzMDMxMzIzMzM0MzUzNjM3
MzgzOTNhM2IzYzNkM2UzZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICI0MDQxNDI0MzQ0
NDU0NjQ3NDg0OTRhNGI0YzRkNGU0ZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICI1MDUx
NTI1MzU0NTU1NjU3NTg1OTVhNWI1YzVkNWU1ZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICI2MDYxNjI2MzY0NjU2NjY3Njg2OTZhNmI2YzZkNmU2ZiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI3MDcxNzI3Mzc0NzU3Njc3Nzg3OTdhN2I3YzdkN2U3ZiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI4MDgxODI4Mzg0ODU4Njg3ODg4OThhOGI4YzhkOGU4ZiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI5MDkxOTI5Mzk0OTU5Njk3OTg5OTlhOWI5YzlkOWU5ZiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhMGExYTJhM2E0YTVhNmE3YThhOWFhYWJhY2FkYWVh
ZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJiMGIxYjJiM2I0YjViNmI3YjhiOWJhYmJi
Y2JkYmViZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjMGMxYzJjM2M0YzVjNmM3Yzhj
OWNhY2JjY2NkY2VjZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJkMGQxZDJkM2Q0ZDVk
NmQ3ZDhkOWRhZGJkY2RkZGVkZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJlMGUxZTJl
M2U0ZTVlNmU3ZThlOWVhZWJlY2VkZWVlZiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
MGYxZjJmM2Y0ZjVmNmY3ZjhmOWZhZmJmY2ZkZmVmZiI7Ci0KLXN0YXRpYyBTdHJpbmcgdG9IZXgx
NkJpdCh1bnNpZ25lZCBpbnQgeCkgewotICBjb25zdCB1bnNpZ25lZCBpbnQgaGkgPSAoeCA+PiA4
KSAmIDB4ZmY7Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBsbyA9IHggJiAweGZmOwotICBTdHJpbmcg
cmVzdWx0KDQsICcgJyk7Ci0gIHJlc3VsdFswXSA9IGhleDJbMiAqIGhpXTsKLSAgcmVzdWx0WzFd
ID0gaGV4MlsyICogaGkgKyAxXTsKLSAgcmVzdWx0WzJdID0gaGV4MlsyICogbG9dOwotICByZXN1
bHRbM10gPSBoZXgyWzIgKiBsbyArIDFdOwotICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMg
U3RyaW5nIHZhbHVlVG9RdW90ZWRTdHJpbmdOKGNvbnN0IGNoYXIqIHZhbHVlLCB1bnNpZ25lZCBs
ZW5ndGgpIHsKLSAgaWYgKHZhbHVlID09IG51bGxwdHIpCi0gICAgcmV0dXJuICIiOwotCi0gIGlm
ICghaXNBbnlDaGFyUmVxdWlyZWRRdW90aW5nKHZhbHVlLCBsZW5ndGgpKQotICAgIHJldHVybiBT
dHJpbmcoIlwiIikgKyB2YWx1ZSArICJcIiI7Ci0gIC8vIFdlIGhhdmUgdG8gd2FsayB2YWx1ZSBh
bmQgZXNjYXBlIGFueSBzcGVjaWFsIGNoYXJhY3RlcnMuCi0gIC8vIEFwcGVuZGluZyB0byBTdHJp
bmcgaXMgbm90IGVmZmljaWVudCwgYnV0IHRoaXMgc2hvdWxkIGJlIHJhcmUuCi0gIC8vIChOb3Rl
OiBmb3J3YXJkIHNsYXNoZXMgYXJlICpub3QqIHJhcmUsIGJ1dCBJIGFtIG5vdCBlc2NhcGluZyB0
aGVtLikKLSAgU3RyaW5nOjpzaXplX3R5cGUgbWF4c2l6ZSA9IGxlbmd0aCAqIDIgKyAzOyAvLyBh
bGxlc2NhcGVkK3F1b3RlcytOVUxMCi0gIFN0cmluZyByZXN1bHQ7Ci0gIHJlc3VsdC5yZXNlcnZl
KG1heHNpemUpOyAvLyB0byBhdm9pZCBsb3RzIG9mIG1hbGxvY3MKLSAgcmVzdWx0ICs9ICJcIiI7
Ci0gIGNoYXIgY29uc3QqIGVuZCA9IHZhbHVlICsgbGVuZ3RoOwotICBmb3IgKGNvbnN0IGNoYXIq
IGMgPSB2YWx1ZTsgYyAhPSBlbmQ7ICsrYykgewotICAgIHN3aXRjaCAoKmMpIHsKLSAgICBjYXNl
ICdcIic6Ci0gICAgICByZXN1bHQgKz0gIlxcXCIiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAn
XFwnOgotICAgICAgcmVzdWx0ICs9ICJcXFxcIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xi
JzoKLSAgICAgIHJlc3VsdCArPSAiXFxiIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xmJzoK
LSAgICAgIHJlc3VsdCArPSAiXFxmIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xuJzoKLSAg
ICAgIHJlc3VsdCArPSAiXFxuIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1xyJzoKLSAgICAg
IHJlc3VsdCArPSAiXFxyIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgJ1x0JzoKLSAgICAgIHJl
c3VsdCArPSAiXFx0IjsKLSAgICAgIGJyZWFrOwotICAgIC8vIGNhc2UgJy8nOgotICAgIC8vIEV2
ZW4gdGhvdWdoIFwvIGlzIGNvbnNpZGVyZWQgYSBsZWdhbCBlc2NhcGUgaW4gSlNPTiwgYSBiYXJl
Ci0gICAgLy8gc2xhc2ggaXMgYWxzbyBsZWdhbCwgc28gSSBzZWUgbm8gcmVhc29uIHRvIGVzY2Fw
ZSBpdC4KLSAgICAvLyAoSSBob3BlIEkgYW0gbm90IG1pc3VuZGVyc3RhbmRpbmcgc29tZXRoaW5n
LikKLSAgICAvLyBibGVwIG5vdGVzOiBhY3R1YWxseSBlc2NhcGluZyBcLyBtYXkgYmUgdXNlZnVs
IGluIGphdmFzY3JpcHQgdG8gYXZvaWQgPC8KLSAgICAvLyBzZXF1ZW5jZS4KLSAgICAvLyBTaG91
bGQgYWRkIGEgZmxhZyB0byBhbGxvdyB0aGlzIGNvbXBhdGliaWxpdHkgbW9kZSBhbmQgcHJldmVu
dCB0aGlzCi0gICAgLy8gc2VxdWVuY2UgZnJvbSBvY2N1cnJpbmcuCi0gICAgZGVmYXVsdDogewot
ICAgICAgdW5zaWduZWQgaW50IGNwID0gdXRmOFRvQ29kZXBvaW50KGMsIGVuZCk7Ci0gICAgICAv
LyBkb24ndCBlc2NhcGUgbm9uLWNvbnRyb2wgY2hhcmFjdGVycwotICAgICAgLy8gKHNob3J0IGVz
Y2FwZSBzZXF1ZW5jZSBhcmUgYXBwbGllZCBhYm92ZSkKLSAgICAgIGlmIChjcCA8IDB4ODAgJiYg
Y3AgPj0gMHgyMCkKLSAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PGNoYXI+KGNwKTsKLSAg
ICAgIGVsc2UgaWYgKGNwIDwgMHgxMDAwMCkgeyAvLyBjb2RlcG9pbnQgaXMgaW4gQmFzaWMgTXVs
dGlsaW5ndWFsIFBsYW5lCi0gICAgICAgIHJlc3VsdCArPSAiXFx1IjsKLSAgICAgICAgcmVzdWx0
ICs9IHRvSGV4MTZCaXQoY3ApOwotICAgICAgfSBlbHNlIHsgLy8gY29kZXBvaW50IGlzIG5vdCBp
biBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUKLSAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8g
c3Vycm9nYXRlIHBhaXIgZmlyc3QKLSAgICAgICAgY3AgLT0gMHgxMDAwMDsKLSAgICAgICAgcmVz
dWx0ICs9ICJcXHUiOwotICAgICAgICByZXN1bHQgKz0gdG9IZXgxNkJpdCgoY3AgPj4gMTApICsg
MHhEODAwKTsKLSAgICAgICAgcmVzdWx0ICs9ICJcXHUiOwotICAgICAgICByZXN1bHQgKz0gdG9I
ZXgxNkJpdCgoY3AgJiAweDNGRikgKyAweERDMDApOwotICAgICAgfQotICAgIH0gYnJlYWs7Ci0g
ICAgfQotICB9Ci0gIHJlc3VsdCArPSAiXCIiOwotICByZXR1cm4gcmVzdWx0OwotfQotCi1TdHJp
bmcgdmFsdWVUb1F1b3RlZFN0cmluZyhjb25zdCBjaGFyKiB2YWx1ZSkgewotICByZXR1cm4gdmFs
dWVUb1F1b3RlZFN0cmluZ04odmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RybGVu
KHZhbHVlKSkpOwotfQotCi0vLyBDbGFzcyBXcml0ZXIKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotV3JpdGVyOjp+
V3JpdGVyKCkgPSBkZWZhdWx0OwotCi0vLyBDbGFzcyBGYXN0V3JpdGVyCi0vLyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LQotRmFzdFdyaXRlcjo6RmFzdFdyaXRlcigpCi0KLSAgICA9IGRlZmF1bHQ7Ci0KLXZvaWQgRmFz
dFdyaXRlcjo6ZW5hYmxlWUFNTENvbXBhdGliaWxpdHkoKSB7IHlhbWxDb21wYXRpYmlsaXR5RW5h
YmxlZF8gPSB0cnVlOyB9Ci0KLXZvaWQgRmFzdFdyaXRlcjo6ZHJvcE51bGxQbGFjZWhvbGRlcnMo
KSB7IGRyb3BOdWxsUGxhY2Vob2xkZXJzXyA9IHRydWU7IH0KLQotdm9pZCBGYXN0V3JpdGVyOjpv
bWl0RW5kaW5nTGluZUZlZWQoKSB7IG9taXRFbmRpbmdMaW5lRmVlZF8gPSB0cnVlOyB9Ci0KLVN0
cmluZyBGYXN0V3JpdGVyOjp3cml0ZShjb25zdCBWYWx1ZSYgcm9vdCkgewotICBkb2N1bWVudF8u
Y2xlYXIoKTsKLSAgd3JpdGVWYWx1ZShyb290KTsKLSAgaWYgKCFvbWl0RW5kaW5nTGluZUZlZWRf
KQotICAgIGRvY3VtZW50XyArPSAnXG4nOwotICByZXR1cm4gZG9jdW1lbnRfOwotfQotCi12b2lk
IEZhc3RXcml0ZXI6OndyaXRlVmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKSB7Ci0gIHN3aXRjaCAo
dmFsdWUudHlwZSgpKSB7Ci0gIGNhc2UgbnVsbFZhbHVlOgotICAgIGlmICghZHJvcE51bGxQbGFj
ZWhvbGRlcnNfKQotICAgICAgZG9jdW1lbnRfICs9ICJudWxsIjsKLSAgICBicmVhazsKLSAgY2Fz
ZSBpbnRWYWx1ZToKLSAgICBkb2N1bWVudF8gKz0gdmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdl
c3RJbnQoKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgdWludFZhbHVlOgotICAgIGRvY3VtZW50XyAr
PSB2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gICAgYnJlYWs7Ci0gIGNh
c2UgcmVhbFZhbHVlOgotICAgIGRvY3VtZW50XyArPSB2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzRG91
YmxlKCkpOwotICAgIGJyZWFrOwotICBjYXNlIHN0cmluZ1ZhbHVlOiB7Ci0gICAgLy8gSXMgTlVM
TCBwb3NzaWJsZSBmb3IgdmFsdWUuc3RyaW5nXz8gTm8uCi0gICAgY2hhciBjb25zdCogc3RyOwot
ICAgIGNoYXIgY29uc3QqIGVuZDsKLSAgICBib29sIG9rID0gdmFsdWUuZ2V0U3RyaW5nKCZzdHIs
ICZlbmQpOwotICAgIGlmIChvaykKLSAgICAgIGRvY3VtZW50XyArPSB2YWx1ZVRvUXVvdGVkU3Ry
aW5nTihzdHIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdHIpKTsKLSAgICBicmVhazsK
LSAgfQotICBjYXNlIGJvb2xlYW5WYWx1ZToKLSAgICBkb2N1bWVudF8gKz0gdmFsdWVUb1N0cmlu
Zyh2YWx1ZS5hc0Jvb2woKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgYXJyYXlWYWx1ZTogewotICAg
IGRvY3VtZW50XyArPSAnWyc7Ci0gICAgQXJyYXlJbmRleCBzaXplID0gdmFsdWUuc2l6ZSgpOwot
ICAgIGZvciAoQXJyYXlJbmRleCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewot
ICAgICAgaWYgKGluZGV4ID4gMCkKLSAgICAgICAgZG9jdW1lbnRfICs9ICcsJzsKLSAgICAgIHdy
aXRlVmFsdWUodmFsdWVbaW5kZXhdKTsKLSAgICB9Ci0gICAgZG9jdW1lbnRfICs9ICddJzsKLSAg
fSBicmVhazsKLSAgY2FzZSBvYmplY3RWYWx1ZTogewotICAgIFZhbHVlOjpNZW1iZXJzIG1lbWJl
cnModmFsdWUuZ2V0TWVtYmVyTmFtZXMoKSk7Ci0gICAgZG9jdW1lbnRfICs9ICd7JzsKLSAgICBm
b3IgKGF1dG8gaXQgPSBtZW1iZXJzLmJlZ2luKCk7IGl0ICE9IG1lbWJlcnMuZW5kKCk7ICsraXQp
IHsKLSAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICppdDsKLSAgICAgIGlmIChpdCAhPSBtZW1i
ZXJzLmJlZ2luKCkpCi0gICAgICAgIGRvY3VtZW50XyArPSAnLCc7Ci0gICAgICBkb2N1bWVudF8g
Kz0gdmFsdWVUb1F1b3RlZFN0cmluZ04obmFtZS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbWUubGVuZ3RoKCkp
KTsKLSAgICAgIGRvY3VtZW50XyArPSB5YW1sQ29tcGF0aWJpbGl0eUVuYWJsZWRfID8gIjogIiA6
ICI6IjsKLSAgICAgIHdyaXRlVmFsdWUodmFsdWVbbmFtZV0pOwotICAgIH0KLSAgICBkb2N1bWVu
dF8gKz0gJ30nOwotICB9IGJyZWFrOwotICB9Ci19Ci0KLS8vIENsYXNzIFN0eWxlZFdyaXRlcgot
Ly8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0KLVN0eWxlZFdyaXRlcjo6U3R5bGVkV3JpdGVyKCkgPSBkZWZhdWx0Owot
Ci1TdHJpbmcgU3R5bGVkV3JpdGVyOjp3cml0ZShjb25zdCBWYWx1ZSYgcm9vdCkgewotICBkb2N1
bWVudF8uY2xlYXIoKTsKLSAgYWRkQ2hpbGRWYWx1ZXNfID0gZmFsc2U7Ci0gIGluZGVudFN0cmlu
Z18uY2xlYXIoKTsKLSAgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUocm9vdCk7Ci0gIHdyaXRlVmFs
dWUocm9vdCk7Ci0gIHdyaXRlQ29tbWVudEFmdGVyVmFsdWVPblNhbWVMaW5lKHJvb3QpOwotICBk
b2N1bWVudF8gKz0gJ1xuJzsKLSAgcmV0dXJuIGRvY3VtZW50XzsKLX0KLQotdm9pZCBTdHlsZWRX
cml0ZXI6OndyaXRlVmFsdWUoY29uc3QgVmFsdWUmIHZhbHVlKSB7Ci0gIHN3aXRjaCAodmFsdWUu
dHlwZSgpKSB7Ci0gIGNhc2UgbnVsbFZhbHVlOgotICAgIHB1c2hWYWx1ZSgibnVsbCIpOwotICAg
IGJyZWFrOwotICBjYXNlIGludFZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZh
bHVlLmFzTGFyZ2VzdEludCgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgdWludFZhbHVlOgotICAg
IHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzTGFyZ2VzdFVJbnQoKSkpOwotICAgIGJy
ZWFrOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1
ZS5hc0RvdWJsZSgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ugc3RyaW5nVmFsdWU6IHsKLSAgICAv
LyBJcyBOVUxMIHBvc3NpYmxlIGZvciB2YWx1ZS5zdHJpbmdfPyBOby4KLSAgICBjaGFyIGNvbnN0
KiBzdHI7Ci0gICAgY2hhciBjb25zdCogZW5kOwotICAgIGJvb2wgb2sgPSB2YWx1ZS5nZXRTdHJp
bmcoJnN0ciwgJmVuZCk7Ci0gICAgaWYgKG9rKQotICAgICAgcHVzaFZhbHVlKHZhbHVlVG9RdW90
ZWRTdHJpbmdOKHN0ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHN0cikpKTsKLSAgICBl
bHNlCi0gICAgICBwdXNoVmFsdWUoIiIpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYm9vbGVh
blZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzQm9vbCgpKSk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgYXJyYXlWYWx1ZToKLSAgICB3cml0ZUFycmF5VmFsdWUodmFsdWUp
OwotICAgIGJyZWFrOwotICBjYXNlIG9iamVjdFZhbHVlOiB7Ci0gICAgVmFsdWU6Ok1lbWJlcnMg
bWVtYmVycyh2YWx1ZS5nZXRNZW1iZXJOYW1lcygpKTsKLSAgICBpZiAobWVtYmVycy5lbXB0eSgp
KQotICAgICAgcHVzaFZhbHVlKCJ7fSIpOwotICAgIGVsc2UgewotICAgICAgd3JpdGVXaXRoSW5k
ZW50KCJ7Iik7Ci0gICAgICBpbmRlbnQoKTsKLSAgICAgIGF1dG8gaXQgPSBtZW1iZXJzLmJlZ2lu
KCk7Ci0gICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9ICppdDsK
LSAgICAgICAgY29uc3QgVmFsdWUmIGNoaWxkVmFsdWUgPSB2YWx1ZVtuYW1lXTsKLSAgICAgICAg
d3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgIHdyaXRlV2l0aElu
ZGVudCh2YWx1ZVRvUXVvdGVkU3RyaW5nKG5hbWUuY19zdHIoKSkpOwotICAgICAgICBkb2N1bWVu
dF8gKz0gIiA6ICI7Ci0gICAgICAgIHdyaXRlVmFsdWUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgIGlm
ICgrK2l0ID09IG1lbWJlcnMuZW5kKCkpIHsKLSAgICAgICAgICB3cml0ZUNvbW1lbnRBZnRlclZh
bHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBkb2N1bWVudF8gKz0gJywnOwotICAgICAgICB3cml0ZUNvbW1lbnRBZnRlclZhbHVl
T25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgIH0KLSAgICAgIHVuaW5kZW50KCk7Ci0gICAg
ICB3cml0ZVdpdGhJbmRlbnQoIn0iKTsKLSAgICB9Ci0gIH0gYnJlYWs7Ci0gIH0KLX0KLQotdm9p
ZCBTdHlsZWRXcml0ZXI6OndyaXRlQXJyYXlWYWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpIHsKLSAg
dW5zaWduZWQgc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAgaWYgKHNpemUgPT0gMCkKLSAgICBwdXNo
VmFsdWUoIltdIik7Ci0gIGVsc2UgewotICAgIGJvb2wgaXNBcnJheU11bHRpTGluZSA9IGlzTXVs
dGlsaW5lQXJyYXkodmFsdWUpOwotICAgIGlmIChpc0FycmF5TXVsdGlMaW5lKSB7Ci0gICAgICB3
cml0ZVdpdGhJbmRlbnQoIlsiKTsKLSAgICAgIGluZGVudCgpOwotICAgICAgYm9vbCBoYXNDaGls
ZFZhbHVlID0gIWNoaWxkVmFsdWVzXy5lbXB0eSgpOwotICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwotICAgICAgZm9yICg7OykgewotICAgICAgICBjb25zdCBWYWx1ZSYgY2hpbGRWYWx1ZSA9IHZh
bHVlW2luZGV4XTsKLSAgICAgICAgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY2hpbGRWYWx1ZSk7
Ci0gICAgICAgIGlmIChoYXNDaGlsZFZhbHVlKQotICAgICAgICAgIHdyaXRlV2l0aEluZGVudChj
aGlsZFZhbHVlc19baW5kZXhdKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgd3JpdGVJbmRl
bnQoKTsKLSAgICAgICAgICB3cml0ZVZhbHVlKGNoaWxkVmFsdWUpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICgrK2luZGV4ID09IHNpemUpIHsKLSAgICAgICAgICB3cml0ZUNvbW1lbnRBZnRlclZh
bHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBkb2N1bWVudF8gKz0gJywnOwotICAgICAgICB3cml0ZUNvbW1lbnRBZnRlclZhbHVl
T25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgIH0KLSAgICAgIHVuaW5kZW50KCk7Ci0gICAg
ICB3cml0ZVdpdGhJbmRlbnQoIl0iKTsKLSAgICB9IGVsc2UgLy8gb3V0cHV0IG9uIGEgc2luZ2xl
IGxpbmUKLSAgICB7Ci0gICAgICBhc3NlcnQoY2hpbGRWYWx1ZXNfLnNpemUoKSA9PSBzaXplKTsK
LSAgICAgIGRvY3VtZW50XyArPSAiWyAiOwotICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPiAwKQotICAgICAg
ICAgIGRvY3VtZW50XyArPSAiLCAiOwotICAgICAgICBkb2N1bWVudF8gKz0gY2hpbGRWYWx1ZXNf
W2luZGV4XTsKLSAgICAgIH0KLSAgICAgIGRvY3VtZW50XyArPSAiIF0iOwotICAgIH0KLSAgfQot
fQotCi1ib29sIFN0eWxlZFdyaXRlcjo6aXNNdWx0aWxpbmVBcnJheShjb25zdCBWYWx1ZSYgdmFs
dWUpIHsKLSAgQXJyYXlJbmRleCBjb25zdCBzaXplID0gdmFsdWUuc2l6ZSgpOwotICBib29sIGlz
TXVsdGlMaW5lID0gc2l6ZSAqIDMgPj0gcmlnaHRNYXJnaW5fOwotICBjaGlsZFZhbHVlc18uY2xl
YXIoKTsKLSAgZm9yIChBcnJheUluZGV4IGluZGV4ID0gMDsgaW5kZXggPCBzaXplICYmICFpc011
bHRpTGluZTsgKytpbmRleCkgewotICAgIGNvbnN0IFZhbHVlJiBjaGlsZFZhbHVlID0gdmFsdWVb
aW5kZXhdOwotICAgIGlzTXVsdGlMaW5lID0gKChjaGlsZFZhbHVlLmlzQXJyYXkoKSB8fCBjaGls
ZFZhbHVlLmlzT2JqZWN0KCkpICYmCi0gICAgICAgICAgICAgICAgICAgIWNoaWxkVmFsdWUuZW1w
dHkoKSk7Ci0gIH0KLSAgaWYgKCFpc011bHRpTGluZSkgLy8gY2hlY2sgaWYgbGluZSBsZW5ndGgg
PiBtYXggbGluZSBsZW5ndGgKLSAgewotICAgIGNoaWxkVmFsdWVzXy5yZXNlcnZlKHNpemUpOwot
ICAgIGFkZENoaWxkVmFsdWVzXyA9IHRydWU7Ci0gICAgQXJyYXlJbmRleCBsaW5lTGVuZ3RoID0g
NCArIChzaXplIC0gMSkgKiAyOyAvLyAnWyAnICsgJywgJypuICsgJyBdJwotICAgIGZvciAoQXJy
YXlJbmRleCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAgICAgaWYgKGhh
c0NvbW1lbnRGb3JWYWx1ZSh2YWx1ZVtpbmRleF0pKSB7Ci0gICAgICAgIGlzTXVsdGlMaW5lID0g
dHJ1ZTsKLSAgICAgIH0KLSAgICAgIHdyaXRlVmFsdWUodmFsdWVbaW5kZXhdKTsKLSAgICAgIGxp
bmVMZW5ndGggKz0gc3RhdGljX2Nhc3Q8QXJyYXlJbmRleD4oY2hpbGRWYWx1ZXNfW2luZGV4XS5s
ZW5ndGgoKSk7Ci0gICAgfQotICAgIGFkZENoaWxkVmFsdWVzXyA9IGZhbHNlOwotICAgIGlzTXVs
dGlMaW5lID0gaXNNdWx0aUxpbmUgfHwgbGluZUxlbmd0aCA+PSByaWdodE1hcmdpbl87Ci0gIH0K
LSAgcmV0dXJuIGlzTXVsdGlMaW5lOwotfQotCi12b2lkIFN0eWxlZFdyaXRlcjo6cHVzaFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpIHsKLSAgaWYgKGFkZENoaWxkVmFsdWVzXykKLSAgICBjaGls
ZFZhbHVlc18ucHVzaF9iYWNrKHZhbHVlKTsKLSAgZWxzZQotICAgIGRvY3VtZW50XyArPSB2YWx1
ZTsKLX0KLQotdm9pZCBTdHlsZWRXcml0ZXI6OndyaXRlSW5kZW50KCkgewotICBpZiAoIWRvY3Vt
ZW50Xy5lbXB0eSgpKSB7Ci0gICAgY2hhciBsYXN0ID0gZG9jdW1lbnRfW2RvY3VtZW50Xy5sZW5n
dGgoKSAtIDFdOwotICAgIGlmIChsYXN0ID09ICcgJykgLy8gYWxyZWFkeSBpbmRlbnRlZAotICAg
ICAgcmV0dXJuOwotICAgIGlmIChsYXN0ICE9ICdcbicpIC8vIENvbW1lbnRzIG1heSBhZGQgbmV3
LWxpbmUKLSAgICAgIGRvY3VtZW50XyArPSAnXG4nOwotICB9Ci0gIGRvY3VtZW50XyArPSBpbmRl
bnRTdHJpbmdfOwotfQotCi12b2lkIFN0eWxlZFdyaXRlcjo6d3JpdGVXaXRoSW5kZW50KGNvbnN0
IFN0cmluZyYgdmFsdWUpIHsKLSAgd3JpdGVJbmRlbnQoKTsKLSAgZG9jdW1lbnRfICs9IHZhbHVl
OwotfQotCi12b2lkIFN0eWxlZFdyaXRlcjo6aW5kZW50KCkgeyBpbmRlbnRTdHJpbmdfICs9IFN0
cmluZyhpbmRlbnRTaXplXywgJyAnKTsgfQotCi12b2lkIFN0eWxlZFdyaXRlcjo6dW5pbmRlbnQo
KSB7Ci0gIGFzc2VydChpbmRlbnRTdHJpbmdfLnNpemUoKSA+PSBpbmRlbnRTaXplXyk7Ci0gIGlu
ZGVudFN0cmluZ18ucmVzaXplKGluZGVudFN0cmluZ18uc2l6ZSgpIC0gaW5kZW50U2l6ZV8pOwot
fQotCi12b2lkIFN0eWxlZFdyaXRlcjo6d3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY29uc3QgVmFs
dWUmIHJvb3QpIHsKLSAgaWYgKCFyb290Lmhhc0NvbW1lbnQoY29tbWVudEJlZm9yZSkpCi0gICAg
cmV0dXJuOwotCi0gIGRvY3VtZW50XyArPSAnXG4nOwotICB3cml0ZUluZGVudCgpOwotICBjb25z
dCBTdHJpbmcmIGNvbW1lbnQgPSByb290LmdldENvbW1lbnQoY29tbWVudEJlZm9yZSk7Ci0gIFN0
cmluZzo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGNvbW1lbnQuYmVnaW4oKTsKLSAgd2hpbGUgKGl0
ZXIgIT0gY29tbWVudC5lbmQoKSkgewotICAgIGRvY3VtZW50XyArPSAqaXRlcjsKLSAgICBpZiAo
Kml0ZXIgPT0gJ1xuJyAmJiAoKGl0ZXIgKyAxKSAhPSBjb21tZW50LmVuZCgpICYmICooaXRlciAr
IDEpID09ICcvJykpCi0gICAgICB3cml0ZUluZGVudCgpOwotICAgICsraXRlcjsKLSAgfQotCi0g
IC8vIENvbW1lbnRzIGFyZSBzdHJpcHBlZCBvZiB0cmFpbGluZyBuZXdsaW5lcywgc28gYWRkIG9u
ZSBoZXJlCi0gIGRvY3VtZW50XyArPSAnXG4nOwotfQotCi12b2lkIFN0eWxlZFdyaXRlcjo6d3Jp
dGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY29uc3QgVmFsdWUmIHJvb3QpIHsKLSAgaWYg
KHJvb3QuaGFzQ29tbWVudChjb21tZW50QWZ0ZXJPblNhbWVMaW5lKSkKLSAgICBkb2N1bWVudF8g
Kz0gIiAiICsgcm9vdC5nZXRDb21tZW50KGNvbW1lbnRBZnRlck9uU2FtZUxpbmUpOwotCi0gIGlm
IChyb290Lmhhc0NvbW1lbnQoY29tbWVudEFmdGVyKSkgewotICAgIGRvY3VtZW50XyArPSAnXG4n
OwotICAgIGRvY3VtZW50XyArPSByb290LmdldENvbW1lbnQoY29tbWVudEFmdGVyKTsKLSAgICBk
b2N1bWVudF8gKz0gJ1xuJzsKLSAgfQotfQotCi1ib29sIFN0eWxlZFdyaXRlcjo6aGFzQ29tbWVu
dEZvclZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICByZXR1cm4gdmFsdWUuaGFzQ29tbWVu
dChjb21tZW50QmVmb3JlKSB8fAotICAgICAgICAgdmFsdWUuaGFzQ29tbWVudChjb21tZW50QWZ0
ZXJPblNhbWVMaW5lKSB8fAotICAgICAgICAgdmFsdWUuaGFzQ29tbWVudChjb21tZW50QWZ0ZXIp
OwotfQotCi0vLyBDbGFzcyBTdHlsZWRTdHJlYW1Xcml0ZXIKLS8vIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1TdHls
ZWRTdHJlYW1Xcml0ZXI6OlN0eWxlZFN0cmVhbVdyaXRlcihTdHJpbmcgaW5kZW50YXRpb24pCi0g
ICAgOiBkb2N1bWVudF8obnVsbHB0ciksIGluZGVudGF0aW9uXyhzdGQ6Om1vdmUoaW5kZW50YXRp
b24pKSwKLSAgICAgIGFkZENoaWxkVmFsdWVzXygpLCBpbmRlbnRlZF8oZmFsc2UpIHt9Ci0KLXZv
aWQgU3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZShPU3RyZWFtJiBvdXQsIGNvbnN0IFZhbHVlJiBy
b290KSB7Ci0gIGRvY3VtZW50XyA9ICZvdXQ7Ci0gIGFkZENoaWxkVmFsdWVzXyA9IGZhbHNlOwot
ICBpbmRlbnRTdHJpbmdfLmNsZWFyKCk7Ci0gIGluZGVudGVkXyA9IHRydWU7Ci0gIHdyaXRlQ29t
bWVudEJlZm9yZVZhbHVlKHJvb3QpOwotICBpZiAoIWluZGVudGVkXykKLSAgICB3cml0ZUluZGVu
dCgpOwotICBpbmRlbnRlZF8gPSB0cnVlOwotICB3cml0ZVZhbHVlKHJvb3QpOwotICB3cml0ZUNv
bW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShyb290KTsKLSAgKmRvY3VtZW50XyA8PCAiXG4iOwot
ICBkb2N1bWVudF8gPSBudWxscHRyOyAvLyBGb3JnZXQgdGhlIHN0cmVhbSwgZm9yIHNhZmV0eS4K
LX0KLQotdm9pZCBTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlVmFsdWUoY29uc3QgVmFsdWUmIHZh
bHVlKSB7Ci0gIHN3aXRjaCAodmFsdWUudHlwZSgpKSB7Ci0gIGNhc2UgbnVsbFZhbHVlOgotICAg
IHB1c2hWYWx1ZSgibnVsbCIpOwotICAgIGJyZWFrOwotICBjYXNlIGludFZhbHVlOgotICAgIHB1
c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFzTGFyZ2VzdEludCgpKSk7Ci0gICAgYnJlYWs7
Ci0gIGNhc2UgdWludFZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3RyaW5nKHZhbHVlLmFz
TGFyZ2VzdFVJbnQoKSkpOwotICAgIGJyZWFrOwotICBjYXNlIHJlYWxWYWx1ZToKLSAgICBwdXNo
VmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0RvdWJsZSgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNh
c2Ugc3RyaW5nVmFsdWU6IHsKLSAgICAvLyBJcyBOVUxMIHBvc3NpYmxlIGZvciB2YWx1ZS5zdHJp
bmdfPyBOby4KLSAgICBjaGFyIGNvbnN0KiBzdHI7Ci0gICAgY2hhciBjb25zdCogZW5kOwotICAg
IGJvb2wgb2sgPSB2YWx1ZS5nZXRTdHJpbmcoJnN0ciwgJmVuZCk7Ci0gICAgaWYgKG9rKQotICAg
ICAgcHVzaFZhbHVlKHZhbHVlVG9RdW90ZWRTdHJpbmdOKHN0ciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVuZCAtIHN0cikpKTsKLSAgICBlbHNlCi0gICAgICBwdXNoVmFsdWUoIiIpOwotICAgIGJy
ZWFrOwotICB9Ci0gIGNhc2UgYm9vbGVhblZhbHVlOgotICAgIHB1c2hWYWx1ZSh2YWx1ZVRvU3Ry
aW5nKHZhbHVlLmFzQm9vbCgpKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgYXJyYXlWYWx1ZToKLSAg
ICB3cml0ZUFycmF5VmFsdWUodmFsdWUpOwotICAgIGJyZWFrOwotICBjYXNlIG9iamVjdFZhbHVl
OiB7Ci0gICAgVmFsdWU6Ok1lbWJlcnMgbWVtYmVycyh2YWx1ZS5nZXRNZW1iZXJOYW1lcygpKTsK
LSAgICBpZiAobWVtYmVycy5lbXB0eSgpKQotICAgICAgcHVzaFZhbHVlKCJ7fSIpOwotICAgIGVs
c2UgewotICAgICAgd3JpdGVXaXRoSW5kZW50KCJ7Iik7Ci0gICAgICBpbmRlbnQoKTsKLSAgICAg
IGF1dG8gaXQgPSBtZW1iZXJzLmJlZ2luKCk7Ci0gICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNv
bnN0IFN0cmluZyYgbmFtZSA9ICppdDsKLSAgICAgICAgY29uc3QgVmFsdWUmIGNoaWxkVmFsdWUg
PSB2YWx1ZVtuYW1lXTsKLSAgICAgICAgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY2hpbGRWYWx1
ZSk7Ci0gICAgICAgIHdyaXRlV2l0aEluZGVudCh2YWx1ZVRvUXVvdGVkU3RyaW5nKG5hbWUuY19z
dHIoKSkpOwotICAgICAgICAqZG9jdW1lbnRfIDw8ICIgOiAiOwotICAgICAgICB3cml0ZVZhbHVl
KGNoaWxkVmFsdWUpOwotICAgICAgICBpZiAoKytpdCA9PSBtZW1iZXJzLmVuZCgpKSB7Ci0gICAg
ICAgICAgd3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgKmRvY3VtZW50XyA8PCAiLCI7Ci0gICAg
ICAgIHdyaXRlQ29tbWVudEFmdGVyVmFsdWVPblNhbWVMaW5lKGNoaWxkVmFsdWUpOwotICAgICAg
fQotICAgICAgdW5pbmRlbnQoKTsKLSAgICAgIHdyaXRlV2l0aEluZGVudCgifSIpOwotICAgIH0K
LSAgfSBicmVhazsKLSAgfQotfQotCi12b2lkIFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVBcnJh
eVZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICB1bnNpZ25lZCBzaXplID0gdmFsdWUuc2l6
ZSgpOwotICBpZiAoc2l6ZSA9PSAwKQotICAgIHB1c2hWYWx1ZSgiW10iKTsKLSAgZWxzZSB7Ci0g
ICAgYm9vbCBpc0FycmF5TXVsdGlMaW5lID0gaXNNdWx0aWxpbmVBcnJheSh2YWx1ZSk7Ci0gICAg
aWYgKGlzQXJyYXlNdWx0aUxpbmUpIHsKLSAgICAgIHdyaXRlV2l0aEluZGVudCgiWyIpOwotICAg
ICAgaW5kZW50KCk7Ci0gICAgICBib29sIGhhc0NoaWxkVmFsdWUgPSAhY2hpbGRWYWx1ZXNfLmVt
cHR5KCk7Ci0gICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICBmb3IgKDs7KSB7Ci0gICAg
ICAgIGNvbnN0IFZhbHVlJiBjaGlsZFZhbHVlID0gdmFsdWVbaW5kZXhdOwotICAgICAgICB3cml0
ZUNvbW1lbnRCZWZvcmVWYWx1ZShjaGlsZFZhbHVlKTsKLSAgICAgICAgaWYgKGhhc0NoaWxkVmFs
dWUpCi0gICAgICAgICAgd3JpdGVXaXRoSW5kZW50KGNoaWxkVmFsdWVzX1tpbmRleF0pOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAoIWluZGVudGVkXykKLSAgICAgICAgICAgIHdyaXRl
SW5kZW50KCk7Ci0gICAgICAgICAgaW5kZW50ZWRfID0gdHJ1ZTsKLSAgICAgICAgICB3cml0ZVZh
bHVlKGNoaWxkVmFsdWUpOwotICAgICAgICAgIGluZGVudGVkXyA9IGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIGlmICgrK2luZGV4ID09IHNpemUpIHsKLSAgICAgICAgICB3cml0ZUNvbW1lbnRB
ZnRlclZhbHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICAqZG9jdW1lbnRfIDw8ICIsIjsKLSAgICAgICAgd3JpdGVDb21tZW50QWZ0
ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICB9Ci0gICAgICB1bmluZGVudCgp
OwotICAgICAgd3JpdGVXaXRoSW5kZW50KCJdIik7Ci0gICAgfSBlbHNlIC8vIG91dHB1dCBvbiBh
IHNpbmdsZSBsaW5lCi0gICAgewotICAgICAgYXNzZXJ0KGNoaWxkVmFsdWVzXy5zaXplKCkgPT0g
c2l6ZSk7Ci0gICAgICAqZG9jdW1lbnRfIDw8ICJbICI7Ci0gICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBzaXplOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChpbmRleCA+IDAp
Ci0gICAgICAgICAgKmRvY3VtZW50XyA8PCAiLCAiOwotICAgICAgICAqZG9jdW1lbnRfIDw8IGNo
aWxkVmFsdWVzX1tpbmRleF07Ci0gICAgICB9Ci0gICAgICAqZG9jdW1lbnRfIDw8ICIgXSI7Ci0g
ICAgfQotICB9Ci19Ci0KLWJvb2wgU3R5bGVkU3RyZWFtV3JpdGVyOjppc011bHRpbGluZUFycmF5
KGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICBBcnJheUluZGV4IGNvbnN0IHNpemUgPSB2YWx1ZS5z
aXplKCk7Ci0gIGJvb2wgaXNNdWx0aUxpbmUgPSBzaXplICogMyA+PSByaWdodE1hcmdpbl87Ci0g
IGNoaWxkVmFsdWVzXy5jbGVhcigpOwotICBmb3IgKEFycmF5SW5kZXggaW5kZXggPSAwOyBpbmRl
eCA8IHNpemUgJiYgIWlzTXVsdGlMaW5lOyArK2luZGV4KSB7Ci0gICAgY29uc3QgVmFsdWUmIGNo
aWxkVmFsdWUgPSB2YWx1ZVtpbmRleF07Ci0gICAgaXNNdWx0aUxpbmUgPSAoKGNoaWxkVmFsdWUu
aXNBcnJheSgpIHx8IGNoaWxkVmFsdWUuaXNPYmplY3QoKSkgJiYKLSAgICAgICAgICAgICAgICAg
ICAhY2hpbGRWYWx1ZS5lbXB0eSgpKTsKLSAgfQotICBpZiAoIWlzTXVsdGlMaW5lKSAvLyBjaGVj
ayBpZiBsaW5lIGxlbmd0aCA+IG1heCBsaW5lIGxlbmd0aAotICB7Ci0gICAgY2hpbGRWYWx1ZXNf
LnJlc2VydmUoc2l6ZSk7Ci0gICAgYWRkQ2hpbGRWYWx1ZXNfID0gdHJ1ZTsKLSAgICBBcnJheUlu
ZGV4IGxpbmVMZW5ndGggPSA0ICsgKHNpemUgLSAxKSAqIDI7IC8vICdbICcgKyAnLCAnKm4gKyAn
IF0nCi0gICAgZm9yIChBcnJheUluZGV4IGluZGV4ID0gMDsgaW5kZXggPCBzaXplOyArK2luZGV4
KSB7Ci0gICAgICBpZiAoaGFzQ29tbWVudEZvclZhbHVlKHZhbHVlW2luZGV4XSkpIHsKLSAgICAg
ICAgaXNNdWx0aUxpbmUgPSB0cnVlOwotICAgICAgfQotICAgICAgd3JpdGVWYWx1ZSh2YWx1ZVtp
bmRleF0pOwotICAgICAgbGluZUxlbmd0aCArPSBzdGF0aWNfY2FzdDxBcnJheUluZGV4PihjaGls
ZFZhbHVlc19baW5kZXhdLmxlbmd0aCgpKTsKLSAgICB9Ci0gICAgYWRkQ2hpbGRWYWx1ZXNfID0g
ZmFsc2U7Ci0gICAgaXNNdWx0aUxpbmUgPSBpc011bHRpTGluZSB8fCBsaW5lTGVuZ3RoID49IHJp
Z2h0TWFyZ2luXzsKLSAgfQotICByZXR1cm4gaXNNdWx0aUxpbmU7Ci19Ci0KLXZvaWQgU3R5bGVk
U3RyZWFtV3JpdGVyOjpwdXNoVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgewotICBpZiAoYWRk
Q2hpbGRWYWx1ZXNfKQotICAgIGNoaWxkVmFsdWVzXy5wdXNoX2JhY2sodmFsdWUpOwotICBlbHNl
Ci0gICAgKmRvY3VtZW50XyA8PCB2YWx1ZTsKLX0KLQotdm9pZCBTdHlsZWRTdHJlYW1Xcml0ZXI6
OndyaXRlSW5kZW50KCkgewotICAvLyBibGVwIGludGVuZGVkIHRoaXMgdG8gbG9vayBhdCB0aGUg
c28tZmFyLXdyaXR0ZW4gc3RyaW5nCi0gIC8vIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIGFyZSBh
bHJlYWR5IGluZGVudGVkLCBidXQKLSAgLy8gd2l0aCBhIHN0cmVhbSB3ZSBjYW5ub3QgZG8gdGhh
dC4gU28gd2UgcmVseSBvbiBzb21lIHNhdmVkIHN0YXRlLgotICAvLyBUaGUgY2FsbGVyIGNoZWNr
cyBpbmRlbnRlZF8uCi0gICpkb2N1bWVudF8gPDwgJ1xuJyA8PCBpbmRlbnRTdHJpbmdfOwotfQot
Ci12b2lkIFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVXaXRoSW5kZW50KGNvbnN0IFN0cmluZyYg
dmFsdWUpIHsKLSAgaWYgKCFpbmRlbnRlZF8pCi0gICAgd3JpdGVJbmRlbnQoKTsKLSAgKmRvY3Vt
ZW50XyA8PCB2YWx1ZTsKLSAgaW5kZW50ZWRfID0gZmFsc2U7Ci19Ci0KLXZvaWQgU3R5bGVkU3Ry
ZWFtV3JpdGVyOjppbmRlbnQoKSB7IGluZGVudFN0cmluZ18gKz0gaW5kZW50YXRpb25fOyB9Ci0K
LXZvaWQgU3R5bGVkU3RyZWFtV3JpdGVyOjp1bmluZGVudCgpIHsKLSAgYXNzZXJ0KGluZGVudFN0
cmluZ18uc2l6ZSgpID49IGluZGVudGF0aW9uXy5zaXplKCkpOwotICBpbmRlbnRTdHJpbmdfLnJl
c2l6ZShpbmRlbnRTdHJpbmdfLnNpemUoKSAtIGluZGVudGF0aW9uXy5zaXplKCkpOwotfQotCi12
b2lkIFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVDb21tZW50QmVmb3JlVmFsdWUoY29uc3QgVmFs
dWUmIHJvb3QpIHsKLSAgaWYgKCFyb290Lmhhc0NvbW1lbnQoY29tbWVudEJlZm9yZSkpCi0gICAg
cmV0dXJuOwotCi0gIGlmICghaW5kZW50ZWRfKQotICAgIHdyaXRlSW5kZW50KCk7Ci0gIGNvbnN0
IFN0cmluZyYgY29tbWVudCA9IHJvb3QuZ2V0Q29tbWVudChjb21tZW50QmVmb3JlKTsKLSAgU3Ry
aW5nOjpjb25zdF9pdGVyYXRvciBpdGVyID0gY29tbWVudC5iZWdpbigpOwotICB3aGlsZSAoaXRl
ciAhPSBjb21tZW50LmVuZCgpKSB7Ci0gICAgKmRvY3VtZW50XyA8PCAqaXRlcjsKLSAgICBpZiAo
Kml0ZXIgPT0gJ1xuJyAmJiAoKGl0ZXIgKyAxKSAhPSBjb21tZW50LmVuZCgpICYmICooaXRlciAr
IDEpID09ICcvJykpCi0gICAgICAvLyB3cml0ZUluZGVudCgpOyAgLy8gd291bGQgaW5jbHVkZSBu
ZXdsaW5lCi0gICAgICAqZG9jdW1lbnRfIDw8IGluZGVudFN0cmluZ187Ci0gICAgKytpdGVyOwot
ICB9Ci0gIGluZGVudGVkXyA9IGZhbHNlOwotfQotCi12b2lkIFN0eWxlZFN0cmVhbVdyaXRlcjo6
d3JpdGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY29uc3QgVmFsdWUmIHJvb3QpIHsKLSAg
aWYgKHJvb3QuaGFzQ29tbWVudChjb21tZW50QWZ0ZXJPblNhbWVMaW5lKSkKLSAgICAqZG9jdW1l
bnRfIDw8ICcgJyA8PCByb290LmdldENvbW1lbnQoY29tbWVudEFmdGVyT25TYW1lTGluZSk7Ci0K
LSAgaWYgKHJvb3QuaGFzQ29tbWVudChjb21tZW50QWZ0ZXIpKSB7Ci0gICAgd3JpdGVJbmRlbnQo
KTsKLSAgICAqZG9jdW1lbnRfIDw8IHJvb3QuZ2V0Q29tbWVudChjb21tZW50QWZ0ZXIpOwotICB9
Ci0gIGluZGVudGVkXyA9IGZhbHNlOwotfQotCi1ib29sIFN0eWxlZFN0cmVhbVdyaXRlcjo6aGFz
Q29tbWVudEZvclZhbHVlKGNvbnN0IFZhbHVlJiB2YWx1ZSkgewotICByZXR1cm4gdmFsdWUuaGFz
Q29tbWVudChjb21tZW50QmVmb3JlKSB8fAotICAgICAgICAgdmFsdWUuaGFzQ29tbWVudChjb21t
ZW50QWZ0ZXJPblNhbWVMaW5lKSB8fAotICAgICAgICAgdmFsdWUuaGFzQ29tbWVudChjb21tZW50
QWZ0ZXIpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQnVpbHRTdHlsZWRT
dHJlYW1Xcml0ZXIKLQotLy8vIFNjb3BlZCBlbnVtcyBhcmUgbm90IGF2YWlsYWJsZSB1bnRpbCBD
KysxMS4KLXN0cnVjdCBDb21tZW50U3R5bGUgewotICAvLy8gRGVjaWRlIHdoZXRoZXIgdG8gd3Jp
dGUgY29tbWVudHMuCi0gIGVudW0gRW51bSB7Ci0gICAgTm9uZSwgLy8vPCBEcm9wIGFsbCBjb21t
ZW50cy4KLSAgICBNb3N0LCAvLy88IFJlY292ZXIgb2RkIGJlaGF2aW9yIG9mIHByZXZpb3VzIHZl
cnNpb25zIChub3QgaW1wbGVtZW50ZWQgeWV0KS4KLSAgICBBbGwgICAvLy88IEtlZXAgYWxsIGNv
bW1lbnRzLgotICB9OwotfTsKLQotc3RydWN0IEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyIDogcHVi
bGljIFN0cmVhbVdyaXRlciB7Ci0gIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyKFN0cmluZyBpbmRl
bnRhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVudFN0eWxlOjpFbnVtIGNz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29sb25TeW1ib2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBudWxsU3ltYm9sLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgZW5kaW5nTGluZUZlZWRTeW1ib2wsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdXNlU3BlY2lhbEZsb2F0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlY2lz
aW9uVHlwZSBwcmVjaXNpb25UeXBlKTsKLSAgaW50IHdyaXRlKFZhbHVlIGNvbnN0JiByb290LCBP
U3RyZWFtKiBzb3V0KSBvdmVycmlkZTsKLQotcHJpdmF0ZToKLSAgdm9pZCB3cml0ZVZhbHVlKFZh
bHVlIGNvbnN0JiB2YWx1ZSk7Ci0gIHZvaWQgd3JpdGVBcnJheVZhbHVlKFZhbHVlIGNvbnN0JiB2
YWx1ZSk7Ci0gIGJvb2wgaXNNdWx0aWxpbmVBcnJheShWYWx1ZSBjb25zdCYgdmFsdWUpOwotICB2
b2lkIHB1c2hWYWx1ZShTdHJpbmcgY29uc3QmIHZhbHVlKTsKLSAgdm9pZCB3cml0ZUluZGVudCgp
OwotICB2b2lkIHdyaXRlV2l0aEluZGVudChTdHJpbmcgY29uc3QmIHZhbHVlKTsKLSAgdm9pZCBp
bmRlbnQoKTsKLSAgdm9pZCB1bmluZGVudCgpOwotICB2b2lkIHdyaXRlQ29tbWVudEJlZm9yZVZh
bHVlKFZhbHVlIGNvbnN0JiByb290KTsKLSAgdm9pZCB3cml0ZUNvbW1lbnRBZnRlclZhbHVlT25T
YW1lTGluZShWYWx1ZSBjb25zdCYgcm9vdCk7Ci0gIHN0YXRpYyBib29sIGhhc0NvbW1lbnRGb3JW
YWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpOwotCi0gIHR5cGVkZWYgc3RkOjp2ZWN0b3I8U3RyaW5n
PiBDaGlsZFZhbHVlczsKLQotICBDaGlsZFZhbHVlcyBjaGlsZFZhbHVlc187Ci0gIFN0cmluZyBp
bmRlbnRTdHJpbmdfOwotICB1bnNpZ25lZCBpbnQgcmlnaHRNYXJnaW5fOwotICBTdHJpbmcgaW5k
ZW50YXRpb25fOwotICBDb21tZW50U3R5bGU6OkVudW0gY3NfOwotICBTdHJpbmcgY29sb25TeW1i
b2xfOwotICBTdHJpbmcgbnVsbFN5bWJvbF87Ci0gIFN0cmluZyBlbmRpbmdMaW5lRmVlZFN5bWJv
bF87Ci0gIGJvb2wgYWRkQ2hpbGRWYWx1ZXNfIDogMTsKLSAgYm9vbCBpbmRlbnRlZF8gOiAxOwot
ICBib29sIHVzZVNwZWNpYWxGbG9hdHNfIDogMTsKLSAgdW5zaWduZWQgaW50IHByZWNpc2lvbl87
Ci0gIFByZWNpc2lvblR5cGUgcHJlY2lzaW9uVHlwZV87Ci19OwotQnVpbHRTdHlsZWRTdHJlYW1X
cml0ZXI6OkJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyKFN0cmluZyBpbmRlbnRhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tZW50U3R5bGU6
OkVudW0gY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nIGNvbG9uU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyBudWxsU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBlbmRpbmdMaW5lRmVlZFN5bWJvbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVz
ZVNwZWNpYWxGbG9hdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVjaXNpb25UeXBlIHByZWNpc2lvblR5cGUpCi0g
ICAgOiByaWdodE1hcmdpbl8oNzQpLCBpbmRlbnRhdGlvbl8oc3RkOjptb3ZlKGluZGVudGF0aW9u
KSksIGNzXyhjcyksCi0gICAgICBjb2xvblN5bWJvbF8oc3RkOjptb3ZlKGNvbG9uU3ltYm9sKSks
IG51bGxTeW1ib2xfKHN0ZDo6bW92ZShudWxsU3ltYm9sKSksCi0gICAgICBlbmRpbmdMaW5lRmVl
ZFN5bWJvbF8oc3RkOjptb3ZlKGVuZGluZ0xpbmVGZWVkU3ltYm9sKSksCi0gICAgICBhZGRDaGls
ZFZhbHVlc18oZmFsc2UpLCBpbmRlbnRlZF8oZmFsc2UpLAotICAgICAgdXNlU3BlY2lhbEZsb2F0
c18odXNlU3BlY2lhbEZsb2F0cyksIHByZWNpc2lvbl8ocHJlY2lzaW9uKSwKLSAgICAgIHByZWNp
c2lvblR5cGVfKHByZWNpc2lvblR5cGUpIHt9Ci1pbnQgQnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXI6
OndyaXRlKFZhbHVlIGNvbnN0JiByb290LCBPU3RyZWFtKiBzb3V0KSB7Ci0gIHNvdXRfID0gc291
dDsKLSAgYWRkQ2hpbGRWYWx1ZXNfID0gZmFsc2U7Ci0gIGluZGVudGVkXyA9IHRydWU7Ci0gIGlu
ZGVudFN0cmluZ18uY2xlYXIoKTsKLSAgd3JpdGVDb21tZW50QmVmb3JlVmFsdWUocm9vdCk7Ci0g
IGlmICghaW5kZW50ZWRfKQotICAgIHdyaXRlSW5kZW50KCk7Ci0gIGluZGVudGVkXyA9IHRydWU7
Ci0gIHdyaXRlVmFsdWUocm9vdCk7Ci0gIHdyaXRlQ29tbWVudEFmdGVyVmFsdWVPblNhbWVMaW5l
KHJvb3QpOwotICAqc291dF8gPDwgZW5kaW5nTGluZUZlZWRTeW1ib2xfOwotICBzb3V0XyA9IG51
bGxwdHI7Ci0gIHJldHVybiAwOwotfQotdm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6d3Jp
dGVWYWx1ZShWYWx1ZSBjb25zdCYgdmFsdWUpIHsKLSAgc3dpdGNoICh2YWx1ZS50eXBlKCkpIHsK
LSAgY2FzZSBudWxsVmFsdWU6Ci0gICAgcHVzaFZhbHVlKG51bGxTeW1ib2xfKTsKLSAgICBicmVh
azsKLSAgY2FzZSBpbnRWYWx1ZToKLSAgICBwdXNoVmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5h
c0xhcmdlc3RJbnQoKSkpOwotICAgIGJyZWFrOwotICBjYXNlIHVpbnRWYWx1ZToKLSAgICBwdXNo
VmFsdWUodmFsdWVUb1N0cmluZyh2YWx1ZS5hc0xhcmdlc3RVSW50KCkpKTsKLSAgICBicmVhazsK
LSAgY2FzZSByZWFsVmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZhbHVlVG9TdHJpbmcodmFsdWUuYXNE
b3VibGUoKSwgdXNlU3BlY2lhbEZsb2F0c18sIHByZWNpc2lvbl8sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlY2lzaW9uVHlwZV8pKTsKLSAgICBicmVhazsKLSAgY2FzZSBzdHJpbmdW
YWx1ZTogewotICAgIC8vIElzIE5VTEwgaXMgcG9zc2libGUgZm9yIHZhbHVlLnN0cmluZ18/IE5v
LgotICAgIGNoYXIgY29uc3QqIHN0cjsKLSAgICBjaGFyIGNvbnN0KiBlbmQ7Ci0gICAgYm9vbCBv
ayA9IHZhbHVlLmdldFN0cmluZygmc3RyLCAmZW5kKTsKLSAgICBpZiAob2spCi0gICAgICBwdXNo
VmFsdWUodmFsdWVUb1F1b3RlZFN0cmluZ04oc3RyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5k
IC0gc3RyKSkpOwotICAgIGVsc2UKLSAgICAgIHB1c2hWYWx1ZSgiIik7Ci0gICAgYnJlYWs7Ci0g
IH0KLSAgY2FzZSBib29sZWFuVmFsdWU6Ci0gICAgcHVzaFZhbHVlKHZhbHVlVG9TdHJpbmcodmFs
dWUuYXNCb29sKCkpKTsKLSAgICBicmVhazsKLSAgY2FzZSBhcnJheVZhbHVlOgotICAgIHdyaXRl
QXJyYXlWYWx1ZSh2YWx1ZSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ugb2JqZWN0VmFsdWU6IHsKLSAg
ICBWYWx1ZTo6TWVtYmVycyBtZW1iZXJzKHZhbHVlLmdldE1lbWJlck5hbWVzKCkpOwotICAgIGlm
IChtZW1iZXJzLmVtcHR5KCkpCi0gICAgICBwdXNoVmFsdWUoInt9Iik7Ci0gICAgZWxzZSB7Ci0g
ICAgICB3cml0ZVdpdGhJbmRlbnQoInsiKTsKLSAgICAgIGluZGVudCgpOwotICAgICAgYXV0byBp
dCA9IG1lbWJlcnMuYmVnaW4oKTsKLSAgICAgIGZvciAoOzspIHsKLSAgICAgICAgU3RyaW5nIGNv
bnN0JiBuYW1lID0gKml0OwotICAgICAgICBWYWx1ZSBjb25zdCYgY2hpbGRWYWx1ZSA9IHZhbHVl
W25hbWVdOwotICAgICAgICB3cml0ZUNvbW1lbnRCZWZvcmVWYWx1ZShjaGlsZFZhbHVlKTsKLSAg
ICAgICAgd3JpdGVXaXRoSW5kZW50KHZhbHVlVG9RdW90ZWRTdHJpbmdOKAotICAgICAgICAgICAg
bmFtZS5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW1lLmxlbmd0aCgpKSkpOwotICAg
ICAgICAqc291dF8gPDwgY29sb25TeW1ib2xfOwotICAgICAgICB3cml0ZVZhbHVlKGNoaWxkVmFs
dWUpOwotICAgICAgICBpZiAoKytpdCA9PSBtZW1iZXJzLmVuZCgpKSB7Ci0gICAgICAgICAgd3Jp
dGVDb21tZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgKnNvdXRfIDw8ICIsIjsKLSAgICAgICAgd3JpdGVDb21t
ZW50QWZ0ZXJWYWx1ZU9uU2FtZUxpbmUoY2hpbGRWYWx1ZSk7Ci0gICAgICB9Ci0gICAgICB1bmlu
ZGVudCgpOwotICAgICAgd3JpdGVXaXRoSW5kZW50KCJ9Iik7Ci0gICAgfQotICB9IGJyZWFrOwot
ICB9Ci19Ci0KLXZvaWQgQnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXI6OndyaXRlQXJyYXlWYWx1ZShW
YWx1ZSBjb25zdCYgdmFsdWUpIHsKLSAgdW5zaWduZWQgc2l6ZSA9IHZhbHVlLnNpemUoKTsKLSAg
aWYgKHNpemUgPT0gMCkKLSAgICBwdXNoVmFsdWUoIltdIik7Ci0gIGVsc2UgewotICAgIGJvb2wg
aXNNdWx0aUxpbmUgPSAoY3NfID09IENvbW1lbnRTdHlsZTo6QWxsKSB8fCBpc011bHRpbGluZUFy
cmF5KHZhbHVlKTsKLSAgICBpZiAoaXNNdWx0aUxpbmUpIHsKLSAgICAgIHdyaXRlV2l0aEluZGVu
dCgiWyIpOwotICAgICAgaW5kZW50KCk7Ci0gICAgICBib29sIGhhc0NoaWxkVmFsdWUgPSAhY2hp
bGRWYWx1ZXNfLmVtcHR5KCk7Ci0gICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICBmb3Ig
KDs7KSB7Ci0gICAgICAgIFZhbHVlIGNvbnN0JiBjaGlsZFZhbHVlID0gdmFsdWVbaW5kZXhdOwot
ICAgICAgICB3cml0ZUNvbW1lbnRCZWZvcmVWYWx1ZShjaGlsZFZhbHVlKTsKLSAgICAgICAgaWYg
KGhhc0NoaWxkVmFsdWUpCi0gICAgICAgICAgd3JpdGVXaXRoSW5kZW50KGNoaWxkVmFsdWVzX1tp
bmRleF0pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBpZiAoIWluZGVudGVkXykKLSAgICAg
ICAgICAgIHdyaXRlSW5kZW50KCk7Ci0gICAgICAgICAgaW5kZW50ZWRfID0gdHJ1ZTsKLSAgICAg
ICAgICB3cml0ZVZhbHVlKGNoaWxkVmFsdWUpOwotICAgICAgICAgIGluZGVudGVkXyA9IGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGlmICgrK2luZGV4ID09IHNpemUpIHsKLSAgICAgICAgICB3
cml0ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICAqc291dF8gPDwgIiwiOwotICAgICAgICB3cml0ZUNv
bW1lbnRBZnRlclZhbHVlT25TYW1lTGluZShjaGlsZFZhbHVlKTsKLSAgICAgIH0KLSAgICAgIHVu
aW5kZW50KCk7Ci0gICAgICB3cml0ZVdpdGhJbmRlbnQoIl0iKTsKLSAgICB9IGVsc2UgLy8gb3V0
cHV0IG9uIGEgc2luZ2xlIGxpbmUKLSAgICB7Ci0gICAgICBhc3NlcnQoY2hpbGRWYWx1ZXNfLnNp
emUoKSA9PSBzaXplKTsKLSAgICAgICpzb3V0XyA8PCAiWyI7Ci0gICAgICBpZiAoIWluZGVudGF0
aW9uXy5lbXB0eSgpKQotICAgICAgICAqc291dF8gPDwgIiAiOwotICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXgg
PiAwKQotICAgICAgICAgICpzb3V0XyA8PCAoKCFpbmRlbnRhdGlvbl8uZW1wdHkoKSkgPyAiLCAi
IDogIiwiKTsKLSAgICAgICAgKnNvdXRfIDw8IGNoaWxkVmFsdWVzX1tpbmRleF07Ci0gICAgICB9
Ci0gICAgICBpZiAoIWluZGVudGF0aW9uXy5lbXB0eSgpKQotICAgICAgICAqc291dF8gPDwgIiAi
OwotICAgICAgKnNvdXRfIDw8ICJdIjsKLSAgICB9Ci0gIH0KLX0KLQotYm9vbCBCdWlsdFN0eWxl
ZFN0cmVhbVdyaXRlcjo6aXNNdWx0aWxpbmVBcnJheShWYWx1ZSBjb25zdCYgdmFsdWUpIHsKLSAg
QXJyYXlJbmRleCBjb25zdCBzaXplID0gdmFsdWUuc2l6ZSgpOwotICBib29sIGlzTXVsdGlMaW5l
ID0gc2l6ZSAqIDMgPj0gcmlnaHRNYXJnaW5fOwotICBjaGlsZFZhbHVlc18uY2xlYXIoKTsKLSAg
Zm9yIChBcnJheUluZGV4IGluZGV4ID0gMDsgaW5kZXggPCBzaXplICYmICFpc011bHRpTGluZTsg
KytpbmRleCkgewotICAgIFZhbHVlIGNvbnN0JiBjaGlsZFZhbHVlID0gdmFsdWVbaW5kZXhdOwot
ICAgIGlzTXVsdGlMaW5lID0gKChjaGlsZFZhbHVlLmlzQXJyYXkoKSB8fCBjaGlsZFZhbHVlLmlz
T2JqZWN0KCkpICYmCi0gICAgICAgICAgICAgICAgICAgIWNoaWxkVmFsdWUuZW1wdHkoKSk7Ci0g
IH0KLSAgaWYgKCFpc011bHRpTGluZSkgLy8gY2hlY2sgaWYgbGluZSBsZW5ndGggPiBtYXggbGlu
ZSBsZW5ndGgKLSAgewotICAgIGNoaWxkVmFsdWVzXy5yZXNlcnZlKHNpemUpOwotICAgIGFkZENo
aWxkVmFsdWVzXyA9IHRydWU7Ci0gICAgQXJyYXlJbmRleCBsaW5lTGVuZ3RoID0gNCArIChzaXpl
IC0gMSkgKiAyOyAvLyAnWyAnICsgJywgJypuICsgJyBdJwotICAgIGZvciAoQXJyYXlJbmRleCBp
bmRleCA9IDA7IGluZGV4IDwgc2l6ZTsgKytpbmRleCkgewotICAgICAgaWYgKGhhc0NvbW1lbnRG
b3JWYWx1ZSh2YWx1ZVtpbmRleF0pKSB7Ci0gICAgICAgIGlzTXVsdGlMaW5lID0gdHJ1ZTsKLSAg
ICAgIH0KLSAgICAgIHdyaXRlVmFsdWUodmFsdWVbaW5kZXhdKTsKLSAgICAgIGxpbmVMZW5ndGgg
Kz0gc3RhdGljX2Nhc3Q8QXJyYXlJbmRleD4oY2hpbGRWYWx1ZXNfW2luZGV4XS5sZW5ndGgoKSk7
Ci0gICAgfQotICAgIGFkZENoaWxkVmFsdWVzXyA9IGZhbHNlOwotICAgIGlzTXVsdGlMaW5lID0g
aXNNdWx0aUxpbmUgfHwgbGluZUxlbmd0aCA+PSByaWdodE1hcmdpbl87Ci0gIH0KLSAgcmV0dXJu
IGlzTXVsdGlMaW5lOwotfQotCi12b2lkIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjpwdXNoVmFs
dWUoU3RyaW5nIGNvbnN0JiB2YWx1ZSkgewotICBpZiAoYWRkQ2hpbGRWYWx1ZXNfKQotICAgIGNo
aWxkVmFsdWVzXy5wdXNoX2JhY2sodmFsdWUpOwotICBlbHNlCi0gICAgKnNvdXRfIDw8IHZhbHVl
OwotfQotCi12b2lkIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZUluZGVudCgpIHsKLSAg
Ly8gYmxlcCBpbnRlbmRlZCB0aGlzIHRvIGxvb2sgYXQgdGhlIHNvLWZhci13cml0dGVuIHN0cmlu
ZwotICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBhcmUgYWxyZWFkeSBpbmRlbnRlZCwgYnV0
Ci0gIC8vIHdpdGggYSBzdHJlYW0gd2UgY2Fubm90IGRvIHRoYXQuIFNvIHdlIHJlbHkgb24gc29t
ZSBzYXZlZCBzdGF0ZS4KLSAgLy8gVGhlIGNhbGxlciBjaGVja3MgaW5kZW50ZWRfLgotCi0gIGlm
ICghaW5kZW50YXRpb25fLmVtcHR5KCkpIHsKLSAgICAvLyBJbiB0aGlzIGNhc2UsIGRyb3AgbmV3
bGluZXMgdG9vLgotICAgICpzb3V0XyA8PCAnXG4nIDw8IGluZGVudFN0cmluZ187Ci0gIH0KLX0K
LQotdm9pZCBCdWlsdFN0eWxlZFN0cmVhbVdyaXRlcjo6d3JpdGVXaXRoSW5kZW50KFN0cmluZyBj
b25zdCYgdmFsdWUpIHsKLSAgaWYgKCFpbmRlbnRlZF8pCi0gICAgd3JpdGVJbmRlbnQoKTsKLSAg
KnNvdXRfIDw8IHZhbHVlOwotICBpbmRlbnRlZF8gPSBmYWxzZTsKLX0KLQotdm9pZCBCdWlsdFN0
eWxlZFN0cmVhbVdyaXRlcjo6aW5kZW50KCkgeyBpbmRlbnRTdHJpbmdfICs9IGluZGVudGF0aW9u
XzsgfQotCi12b2lkIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjp1bmluZGVudCgpIHsKLSAgYXNz
ZXJ0KGluZGVudFN0cmluZ18uc2l6ZSgpID49IGluZGVudGF0aW9uXy5zaXplKCkpOwotICBpbmRl
bnRTdHJpbmdfLnJlc2l6ZShpbmRlbnRTdHJpbmdfLnNpemUoKSAtIGluZGVudGF0aW9uXy5zaXpl
KCkpOwotfQotCi12b2lkIEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyOjp3cml0ZUNvbW1lbnRCZWZv
cmVWYWx1ZShWYWx1ZSBjb25zdCYgcm9vdCkgewotICBpZiAoY3NfID09IENvbW1lbnRTdHlsZTo6
Tm9uZSkKLSAgICByZXR1cm47Ci0gIGlmICghcm9vdC5oYXNDb21tZW50KGNvbW1lbnRCZWZvcmUp
KQotICAgIHJldHVybjsKLQotICBpZiAoIWluZGVudGVkXykKLSAgICB3cml0ZUluZGVudCgpOwot
ICBjb25zdCBTdHJpbmcmIGNvbW1lbnQgPSByb290LmdldENvbW1lbnQoY29tbWVudEJlZm9yZSk7
Ci0gIFN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGNvbW1lbnQuYmVnaW4oKTsKLSAgd2hp
bGUgKGl0ZXIgIT0gY29tbWVudC5lbmQoKSkgewotICAgICpzb3V0XyA8PCAqaXRlcjsKLSAgICBp
ZiAoKml0ZXIgPT0gJ1xuJyAmJiAoKGl0ZXIgKyAxKSAhPSBjb21tZW50LmVuZCgpICYmICooaXRl
ciArIDEpID09ICcvJykpCi0gICAgICAvLyB3cml0ZUluZGVudCgpOyAgLy8gd291bGQgd3JpdGUg
ZXh0cmEgbmV3bGluZQotICAgICAgKnNvdXRfIDw8IGluZGVudFN0cmluZ187Ci0gICAgKytpdGVy
OwotICB9Ci0gIGluZGVudGVkXyA9IGZhbHNlOwotfQotCi12b2lkIEJ1aWx0U3R5bGVkU3RyZWFt
V3JpdGVyOjp3cml0ZUNvbW1lbnRBZnRlclZhbHVlT25TYW1lTGluZSgKLSAgICBWYWx1ZSBjb25z
dCYgcm9vdCkgewotICBpZiAoY3NfID09IENvbW1lbnRTdHlsZTo6Tm9uZSkKLSAgICByZXR1cm47
Ci0gIGlmIChyb290Lmhhc0NvbW1lbnQoY29tbWVudEFmdGVyT25TYW1lTGluZSkpCi0gICAgKnNv
dXRfIDw8ICIgIiArIHJvb3QuZ2V0Q29tbWVudChjb21tZW50QWZ0ZXJPblNhbWVMaW5lKTsKLQot
ICBpZiAocm9vdC5oYXNDb21tZW50KGNvbW1lbnRBZnRlcikpIHsKLSAgICB3cml0ZUluZGVudCgp
OwotICAgICpzb3V0XyA8PCByb290LmdldENvbW1lbnQoY29tbWVudEFmdGVyKTsKLSAgfQotfQot
Ci0vLyBzdGF0aWMKLWJvb2wgQnVpbHRTdHlsZWRTdHJlYW1Xcml0ZXI6Omhhc0NvbW1lbnRGb3JW
YWx1ZShjb25zdCBWYWx1ZSYgdmFsdWUpIHsKLSAgcmV0dXJuIHZhbHVlLmhhc0NvbW1lbnQoY29t
bWVudEJlZm9yZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVyT25T
YW1lTGluZSkgfHwKLSAgICAgICAgIHZhbHVlLmhhc0NvbW1lbnQoY29tbWVudEFmdGVyKTsKLX0K
LQotLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJlYW1Xcml0ZXIKLQotU3RyZWFtV3JpdGVyOjpTdHJl
YW1Xcml0ZXIoKSA6IHNvdXRfKG51bGxwdHIpIHt9Ci1TdHJlYW1Xcml0ZXI6On5TdHJlYW1Xcml0
ZXIoKSA9IGRlZmF1bHQ7Ci1TdHJlYW1Xcml0ZXI6OkZhY3Rvcnk6On5GYWN0b3J5KCkgPSBkZWZh
dWx0OwotU3RyZWFtV3JpdGVyQnVpbGRlcjo6U3RyZWFtV3JpdGVyQnVpbGRlcigpIHsgc2V0RGVm
YXVsdHMoJnNldHRpbmdzXyk7IH0KLVN0cmVhbVdyaXRlckJ1aWxkZXI6On5TdHJlYW1Xcml0ZXJC
dWlsZGVyKCkgPSBkZWZhdWx0OwotU3RyZWFtV3JpdGVyKiBTdHJlYW1Xcml0ZXJCdWlsZGVyOjpu
ZXdTdHJlYW1Xcml0ZXIoKSBjb25zdCB7Ci0gIFN0cmluZyBpbmRlbnRhdGlvbiA9IHNldHRpbmdz
X1siaW5kZW50YXRpb24iXS5hc1N0cmluZygpOwotICBTdHJpbmcgY3Nfc3RyID0gc2V0dGluZ3Nf
WyJjb21tZW50U3R5bGUiXS5hc1N0cmluZygpOwotICBTdHJpbmcgcHRfc3RyID0gc2V0dGluZ3Nf
WyJwcmVjaXNpb25UeXBlIl0uYXNTdHJpbmcoKTsKLSAgYm9vbCBleWMgPSBzZXR0aW5nc19bImVu
YWJsZVlBTUxDb21wYXRpYmlsaXR5Il0uYXNCb29sKCk7Ci0gIGJvb2wgZG5wID0gc2V0dGluZ3Nf
WyJkcm9wTnVsbFBsYWNlaG9sZGVycyJdLmFzQm9vbCgpOwotICBib29sIHVzZiA9IHNldHRpbmdz
X1sidXNlU3BlY2lhbEZsb2F0cyJdLmFzQm9vbCgpOwotICB1bnNpZ25lZCBpbnQgcHJlID0gc2V0
dGluZ3NfWyJwcmVjaXNpb24iXS5hc1VJbnQoKTsKLSAgQ29tbWVudFN0eWxlOjpFbnVtIGNzID0g
Q29tbWVudFN0eWxlOjpBbGw7Ci0gIGlmIChjc19zdHIgPT0gIkFsbCIpIHsKLSAgICBjcyA9IENv
bW1lbnRTdHlsZTo6QWxsOwotICB9IGVsc2UgaWYgKGNzX3N0ciA9PSAiTm9uZSIpIHsKLSAgICBj
cyA9IENvbW1lbnRTdHlsZTo6Tm9uZTsKLSAgfSBlbHNlIHsKLSAgICB0aHJvd1J1bnRpbWVFcnJv
cigiY29tbWVudFN0eWxlIG11c3QgYmUgJ0FsbCcgb3IgJ05vbmUnIik7Ci0gIH0KLSAgUHJlY2lz
aW9uVHlwZSBwcmVjaXNpb25UeXBlKHNpZ25pZmljYW50RGlnaXRzKTsKLSAgaWYgKHB0X3N0ciA9
PSAic2lnbmlmaWNhbnQiKSB7Ci0gICAgcHJlY2lzaW9uVHlwZSA9IFByZWNpc2lvblR5cGU6OnNp
Z25pZmljYW50RGlnaXRzOwotICB9IGVsc2UgaWYgKHB0X3N0ciA9PSAiZGVjaW1hbCIpIHsKLSAg
ICBwcmVjaXNpb25UeXBlID0gUHJlY2lzaW9uVHlwZTo6ZGVjaW1hbFBsYWNlczsKLSAgfSBlbHNl
IHsKLSAgICB0aHJvd1J1bnRpbWVFcnJvcigicHJlY2lzaW9uVHlwZSBtdXN0IGJlICdzaWduaWZp
Y2FudCcgb3IgJ2RlY2ltYWwnIik7Ci0gIH0KLSAgU3RyaW5nIGNvbG9uU3ltYm9sID0gIiA6ICI7
Ci0gIGlmIChleWMpIHsKLSAgICBjb2xvblN5bWJvbCA9ICI6ICI7Ci0gIH0gZWxzZSBpZiAoaW5k
ZW50YXRpb24uZW1wdHkoKSkgewotICAgIGNvbG9uU3ltYm9sID0gIjoiOwotICB9Ci0gIFN0cmlu
ZyBudWxsU3ltYm9sID0gIm51bGwiOwotICBpZiAoZG5wKSB7Ci0gICAgbnVsbFN5bWJvbC5jbGVh
cigpOwotICB9Ci0gIGlmIChwcmUgPiAxNykKLSAgICBwcmUgPSAxNzsKLSAgU3RyaW5nIGVuZGlu
Z0xpbmVGZWVkU3ltYm9sOwotICByZXR1cm4gbmV3IEJ1aWx0U3R5bGVkU3RyZWFtV3JpdGVyKGlu
ZGVudGF0aW9uLCBjcywgY29sb25TeW1ib2wsIG51bGxTeW1ib2wsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5kaW5nTGluZUZlZWRTeW1ib2wsIHVzZiwgcHJlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvblR5cGUpOwotfQotc3Rh
dGljIHZvaWQgZ2V0VmFsaWRXcml0ZXJLZXlzKHN0ZDo6c2V0PFN0cmluZz4qIHZhbGlkX2tleXMp
IHsKLSAgdmFsaWRfa2V5cy0+Y2xlYXIoKTsKLSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJpbmRlbnRh
dGlvbiIpOwotICB2YWxpZF9rZXlzLT5pbnNlcnQoImNvbW1lbnRTdHlsZSIpOwotICB2YWxpZF9r
ZXlzLT5pbnNlcnQoImVuYWJsZVlBTUxDb21wYXRpYmlsaXR5Iik7Ci0gIHZhbGlkX2tleXMtPmlu
c2VydCgiZHJvcE51bGxQbGFjZWhvbGRlcnMiKTsKLSAgdmFsaWRfa2V5cy0+aW5zZXJ0KCJ1c2VT
cGVjaWFsRmxvYXRzIik7Ci0gIHZhbGlkX2tleXMtPmluc2VydCgicHJlY2lzaW9uIik7Ci0gIHZh
bGlkX2tleXMtPmluc2VydCgicHJlY2lzaW9uVHlwZSIpOwotfQotYm9vbCBTdHJlYW1Xcml0ZXJC
dWlsZGVyOjp2YWxpZGF0ZShKc29uOjpWYWx1ZSogaW52YWxpZCkgY29uc3QgewotICBKc29uOjpW
YWx1ZSBteV9pbnZhbGlkOwotICBpZiAoIWludmFsaWQpCi0gICAgaW52YWxpZCA9ICZteV9pbnZh
bGlkOyAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byB0ZXN0IGZvciBOVUxMCi0gIEpzb246OlZhbHVl
JiBpbnYgPSAqaW52YWxpZDsKLSAgc3RkOjpzZXQ8U3RyaW5nPiB2YWxpZF9rZXlzOwotICBnZXRW
YWxpZFdyaXRlcktleXMoJnZhbGlkX2tleXMpOwotICBWYWx1ZTo6TWVtYmVycyBrZXlzID0gc2V0
dGluZ3NfLmdldE1lbWJlck5hbWVzKCk7Ci0gIHNpemVfdCBuID0ga2V5cy5zaXplKCk7Ci0gIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgU3RyaW5nIGNvbnN0JiBrZXkgPSBr
ZXlzW2ldOwotICAgIGlmICh2YWxpZF9rZXlzLmZpbmQoa2V5KSA9PSB2YWxpZF9rZXlzLmVuZCgp
KSB7Ci0gICAgICBpbnZba2V5XSA9IHNldHRpbmdzX1trZXldOwotICAgIH0KLSAgfQotICByZXR1
cm4gaW52LmVtcHR5KCk7Ci19Ci1WYWx1ZSYgU3RyZWFtV3JpdGVyQnVpbGRlcjo6b3BlcmF0b3Jb
XShjb25zdCBTdHJpbmcmIGtleSkgewotICByZXR1cm4gc2V0dGluZ3NfW2tleV07Ci19Ci0vLyBz
dGF0aWMKLXZvaWQgU3RyZWFtV3JpdGVyQnVpbGRlcjo6c2V0RGVmYXVsdHMoSnNvbjo6VmFsdWUq
IHNldHRpbmdzKSB7Ci0gIC8vISBbU3RyZWFtV3JpdGVyQnVpbGRlckRlZmF1bHRzXQotICAoKnNl
dHRpbmdzKVsiY29tbWVudFN0eWxlIl0gPSAiQWxsIjsKLSAgKCpzZXR0aW5ncylbImluZGVudGF0
aW9uIl0gPSAiXHQiOwotICAoKnNldHRpbmdzKVsiZW5hYmxlWUFNTENvbXBhdGliaWxpdHkiXSA9
IGZhbHNlOwotICAoKnNldHRpbmdzKVsiZHJvcE51bGxQbGFjZWhvbGRlcnMiXSA9IGZhbHNlOwot
ICAoKnNldHRpbmdzKVsidXNlU3BlY2lhbEZsb2F0cyJdID0gZmFsc2U7Ci0gICgqc2V0dGluZ3Mp
WyJwcmVjaXNpb24iXSA9IDE3OwotICAoKnNldHRpbmdzKVsicHJlY2lzaW9uVHlwZSJdID0gInNp
Z25pZmljYW50IjsKLSAgLy8hIFtTdHJlYW1Xcml0ZXJCdWlsZGVyRGVmYXVsdHNdCi19Ci0KLVN0
cmluZyB3cml0ZVN0cmluZyhTdHJlYW1Xcml0ZXI6OkZhY3RvcnkgY29uc3QmIGZhY3RvcnksIFZh
bHVlIGNvbnN0JiByb290KSB7Ci0gIE9TdHJpbmdTdHJlYW0gc291dDsKLSAgU3RyZWFtV3JpdGVy
UHRyIGNvbnN0IHdyaXRlcihmYWN0b3J5Lm5ld1N0cmVhbVdyaXRlcigpKTsKLSAgd3JpdGVyLT53
cml0ZShyb290LCAmc291dCk7Ci0gIHJldHVybiBzb3V0LnN0cigpOwotfQotCi1PU3RyZWFtJiBv
cGVyYXRvcjw8KE9TdHJlYW0mIHNvdXQsIFZhbHVlIGNvbnN0JiByb290KSB7Ci0gIFN0cmVhbVdy
aXRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgU3RyZWFtV3JpdGVyUHRyIGNvbnN0IHdyaXRlcihidWls
ZGVyLm5ld1N0cmVhbVdyaXRlcigpKTsKLSAgd3JpdGVyLT53cml0ZShyb290LCAmc291dCk7Ci0g
IHJldHVybiBzb3V0OwotfQotCi19IC8vIG5hbWVzcGFjZSBKc29uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3NyYy9saWJfanNvbi92ZXJzaW9uLmguaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy9saWJfanNvbi92ZXJzaW9uLmgu
aW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZjQzOWNjYzhiMy4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2Uvc3JjL2xpYl9qc29uL3ZlcnNpb24uaC5pbgorKysgL2Rldi9udWxsCkBA
IC0xLDIyICswLDAgQEAKLS8vIERPIE5PVCBFRElULiBUaGlzIGZpbGUgKGFuZCAidmVyc2lvbiIp
IGlzIGEgdGVtcGxhdGUgdXNlZCBieSB0aGUgYnVpbGQgc3lzdGVtCi0vLyAoZWl0aGVyIENNYWtl
IG9yIE1lc29uKSB0byBnZW5lcmF0ZSBhICJ2ZXJzaW9uLmgiIGhlYWRlciBmaWxlLgotI2lmbmRl
ZiBKU09OX1ZFUlNJT05fSF9JTkNMVURFRAotI2RlZmluZSBKU09OX1ZFUlNJT05fSF9JTkNMVURF
RAotCi0jZGVmaW5lIEpTT05DUFBfVkVSU0lPTl9TVFJJTkcgIkBKU09OQ1BQX1ZFUlNJT05AIgot
I2RlZmluZSBKU09OQ1BQX1ZFUlNJT05fTUFKT1IgQEpTT05DUFBfVkVSU0lPTl9NQUpPUkAKLSNk
ZWZpbmUgSlNPTkNQUF9WRVJTSU9OX01JTk9SIEBKU09OQ1BQX1ZFUlNJT05fTUlOT1JACi0jZGVm
aW5lIEpTT05DUFBfVkVSU0lPTl9QQVRDSCBASlNPTkNQUF9WRVJTSU9OX1BBVENIQAotI2RlZmlu
ZSBKU09OQ1BQX1ZFUlNJT05fUVVBTElGSUVSCi0jZGVmaW5lIEpTT05DUFBfVkVSU0lPTl9IRVhB
ICgoSlNPTkNQUF9WRVJTSU9OX01BSk9SIDw8IDI0KSBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAoSlNPTkNQUF9WRVJTSU9OX01JTk9SIDw8IDE2KSBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAoSlNPTkNQUF9WRVJTSU9OX1BBVENIIDw8IDgpKQotCi0jaWZkZWYgSlNP
TkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi0jdW5kZWYgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVN
T1JZCi0jZW5kaWYKLSNkZWZpbmUgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZIEBKU09OQ1BQ
X1VTRV9TRUNVUkVfTUVNT1JZQAotLy8gSWYgbm9uLXplcm8sIHRoZSBsaWJyYXJ5IHplcm9lcyBh
bnkgbWVtb3J5IHRoYXQgaXQgaGFzIGFsbG9jYXRlZCBiZWZvcmUKLS8vIGl0IGZyZWVzIGl0cyBt
ZW1vcnkuCi0KLSNlbmRpZiAvLyBKU09OX1ZFUlNJT05fSF9JTkNMVURFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS9zcmMvdGVzdF9saWJfanNvbi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGli
X2pzb24vQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYjE4
MTM2MWIyYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vQ01ha2VM
aXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIHZpbTogZXQgdHM9NCBz
dHM9NCBzdz00IHR3PTAKLQotYWRkX2V4ZWN1dGFibGUoIGpzb25jcHBfdGVzdAotICAgICAgICAg
ICAgICAgIGpzb250ZXN0LmNwcAotICAgICAgICAgICAgICAgIGpzb250ZXN0LmgKLSAgICAgICAg
ICAgICAgICBmdXp6LmNwcAotICAgICAgICAgICAgICAgIGZ1enouaAotICAgICAgICAgICAgICAg
IG1haW4uY3BwCi0gICAgICAgICAgICAgICAgKQotCi0KLWlmKEJVSUxEX1NIQVJFRF9MSUJTKQot
ICAgIGFkZF9jb21waWxlX2RlZmluaXRpb25zKCBKU09OX0RMTCApCi1lbmRpZigpCi10YXJnZXRf
bGlua19saWJyYXJpZXMoanNvbmNwcF90ZXN0IGpzb25jcHBfbGliKQotCi0jIGFub3RoZXIgd2F5
IHRvIHNvbHZlIGlzc3VlICM5MAotI3NldF90YXJnZXRfcHJvcGVydGllcyhqc29uY3BwX3Rlc3Qg
UFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTIC1mZmxvYXQtc3RvcmUpCi0KLSMgUnVuIHVuaXQgdGVz
dHMgaW4gcG9zdC1idWlsZAotIyAoZGVmYXVsdCBjbWFrZSB3b3JrZmxvdyBoaWRlcyBhd2F5IHRo
ZSB0ZXN0IHJlc3VsdCBpbnRvIGEgZmlsZSwgcmVzdWx0aW5nIGluIHBvb3IgZGV2IHdvcmtmbG93
PyE/KQotaWYoSlNPTkNQUF9XSVRIX1BPU1RfQlVJTERfVU5JVFRFU1QpCi0gICAgaWYoQlVJTERf
U0hBUkVEX0xJQlMpCi0gICAgICAgICMgRmlyc3QsIGNvcHkgdGhlIHNoYXJlZCBsaWIsIGZvciBN
aWNyb3NvZnQuCi0gICAgICAgICMgVGhlbiwgcnVuIHRoZSB0ZXN0IGV4ZWN1dGFibGUuCi0gICAg
ICAgIGFkZF9jdXN0b21fY29tbWFuZCggVEFSR0VUIGpzb25jcHBfdGVzdAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBPU1RfQlVJTEQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
T01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weV9pZl9kaWZmZXJlbnQgJDxUQVJHRVRfRklM
RTpqc29uY3BwX2xpYj4gJDxUQVJHRVRfRklMRV9ESVI6anNvbmNwcF90ZXN0PgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DUk9TU0NPTVBJTElOR19FTVVMQVRP
Un0gJDxUQVJHRVRfRklMRTpqc29uY3BwX3Rlc3Q+KQotICAgIGVsc2UoQlVJTERfU0hBUkVEX0xJ
QlMpCi0gICAgICAgICMgSnVzdCBydW4gdGhlIHRlc3QgZXhlY3V0YWJsZS4KLSAgICAgICAgYWRk
X2N1c3RvbV9jb21tYW5kKCBUQVJHRVQganNvbmNwcF90ZXN0Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUE9TVF9CVUlMRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1BTkQg
JHtDTUFLRV9DUk9TU0NPTVBJTElOR19FTVVMQVRPUn0gJDxUQVJHRVRfRklMRTpqc29uY3BwX3Rl
c3Q+KQotICAgIGVuZGlmKCkKLSAgICAjIyBDcmVhdGUgdGVzdHMgZm9yIGRhc2hib2FyZCBzdWJt
aXNzaW9uLCBhbGxvd3MgZWFzeSByZXZpZXcgb2YgQ0kgcmVzdWx0cyBodHRwczovL215LmNkYXNo
Lm9yZy9pbmRleC5waHA/cHJvamVjdD1qc29uY3BwCi0gICAgYWRkX3Rlc3QoTkFNRSBqc29uY3Bw
X3Rlc3QKLSAgICAgICBDT01NQU5EICR7Q01BS0VfQ1JPU1NDT01QSUxJTkdfRU1VTEFUT1J9ICAk
PFRBUkdFVF9GSUxFOmpzb25jcHBfdGVzdD4KLSAgICApCi1lbmRpZigpCi0KLXNldF90YXJnZXRf
cHJvcGVydGllcyhqc29uY3BwX3Rlc3QgUFJPUEVSVElFUyBPVVRQVVRfTkFNRSBqc29uY3BwX3Rl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29uL2Z1enouY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9z
cmMvdGVzdF9saWJfanNvbi9mdXp6LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Zjc5ZjE5ZmZlZTRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9m
dXp6LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA3
LTIwMTkgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vu
c2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6ZWQgaW4geW91
ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBh
dCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jaW5jbHVkZSAiZnV6
ei5oIgotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDxqc29uL2NvbmZpZy5oPgotI2lu
Y2x1ZGUgPGpzb24vanNvbi5oPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxzdGRpbnQu
aD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBKc29uIHsKLWNsYXNzIEV4Y2VwdGlv
bjsKLX0KLQotZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICBKc29uOjpDaGFyUmVhZGVyQnVpbGRlciBidWls
ZGVyOwotCi0gIGlmIChzaXplIDwgc2l6ZW9mKHVpbnQzMl90KSkgewotICAgIHJldHVybiAwOwot
ICB9Ci0KLSAgdWludDMyX3QgaGFzaF9zZXR0aW5ncyA9ICooY29uc3QgdWludDMyX3QqKWRhdGE7
Ci0gIGRhdGEgKz0gc2l6ZW9mKHVpbnQzMl90KTsKLQotICBidWlsZGVyLnNldHRpbmdzX1siZmFp
bElmRXh0cmEiXSA9IGhhc2hfc2V0dGluZ3MgJiAoMSA8PCAwKTsKLSAgYnVpbGRlci5zZXR0aW5n
c19bImFsbG93Q29tbWVudHNfIl0gPSBoYXNoX3NldHRpbmdzICYgKDEgPDwgMSk7Ci0gIGJ1aWxk
ZXIuc2V0dGluZ3NfWyJzdHJpY3RSb290XyJdID0gaGFzaF9zZXR0aW5ncyAmICgxIDw8IDIpOwot
ICBidWlsZGVyLnNldHRpbmdzX1siYWxsb3dEcm9wcGVkTnVsbFBsYWNlaG9sZGVyc18iXSA9IGhh
c2hfc2V0dGluZ3MgJiAoMSA8PCAzKTsKLSAgYnVpbGRlci5zZXR0aW5nc19bImFsbG93TnVtZXJp
Y0tleXNfIl0gPSBoYXNoX3NldHRpbmdzICYgKDEgPDwgNCk7Ci0gIGJ1aWxkZXIuc2V0dGluZ3Nf
WyJhbGxvd1NpbmdsZVF1b3Rlc18iXSA9IGhhc2hfc2V0dGluZ3MgJiAoMSA8PCA1KTsKLSAgYnVp
bGRlci5zZXR0aW5nc19bImZhaWxJZkV4dHJhXyJdID0gaGFzaF9zZXR0aW5ncyAmICgxIDw8IDYp
OwotICBidWlsZGVyLnNldHRpbmdzX1sicmVqZWN0RHVwS2V5c18iXSA9IGhhc2hfc2V0dGluZ3Mg
JiAoMSA8PCA3KTsKLSAgYnVpbGRlci5zZXR0aW5nc19bImFsbG93U3BlY2lhbEZsb2F0c18iXSA9
IGhhc2hfc2V0dGluZ3MgJiAoMSA8PCA4KTsKLQotICBzdGQ6OnVuaXF1ZV9wdHI8SnNvbjo6Q2hh
clJlYWRlcj4gcmVhZGVyKGJ1aWxkZXIubmV3Q2hhclJlYWRlcigpKTsKLQotICBKc29uOjpWYWx1
ZSByb290OwotICBjb25zdCBjaGFyKiBkYXRhX3N0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpOwotICB0cnkgewotICAgIHJlYWRlci0+cGFyc2UoZGF0YV9zdHIsIGRhdGFf
c3RyICsgc2l6ZSwgJnJvb3QsIG51bGxwdHIpOwotICB9IGNhdGNoIChKc29uOjpFeGNlcHRpb24g
Y29uc3QmKSB7Ci0gIH0KLSAgLy8gV2hldGhlciBpdCBzdWNjZWVkZWQgb3Igbm90IGRvZXNuJ3Qg
bWF0dGVyLgotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pz
b24vZnV6ei5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9mdXp6LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDA4MTZkMjc1N2NlNS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3Jj
L3Rlc3RfbGliX2pzb24vZnV6ei5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotLy8g
Q29weXJpZ2h0IDIwMDctMjAxMCBUaGUgSnNvbkNwcCBBdXRob3JzCi0vLyBEaXN0cmlidXRlZCB1
bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBkZXNpcmVkIGFuZAotLy8gcmVj
b2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRl
dGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0K
LSNpZm5kZWYgRlVaWl9IX0lOQ0xVREVECi0jZGVmaW5lIEZVWlpfSF9JTkNMVURFRAotCi0jaW5j
bHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotZXh0ZXJuICJDIiBpbnQgTExW
TUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSk7Ci0K
LSNlbmRpZiAvLyBpZm5kZWYgRlVaWl9IX0lOQ0xVREVECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3NyYy90
ZXN0X2xpYl9qc29uL2pzb250ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vanNvbnRl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGI1Mjk2ZDkzNzcuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3NyYy90ZXN0X2xpYl9qc29uL2pzb250ZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDQzNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNy0yMDEwIEJhcHRpc3Rl
IExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9ycwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIg
TUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4gaWYgZGVzaXJlZCBhbmQKLS8vIHJlY29nbml6
ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0vLyBTZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwg
b3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXQvTElDRU5TRQotCi0jZGVm
aW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIDEgLy8gUHJldmVudHMgZGVwcmVjYXRpb24gd2Fy
bmluZyB3aXRoIE1TVkMKLSNpbmNsdWRlICJqc29udGVzdC5oIgotI2luY2x1ZGUgPGNzdGRpbz4K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotLy8gVXNlZCB0byBp
bnN0YWxsIGEgcmVwb3J0IGhvb2sgdGhhdCBwcmV2ZW50IGRpYWxvZyBvbiBhc3NlcnRpb24gYW5k
IGVycm9yLgotI2luY2x1ZGUgPGNydGRiZy5oPgotI2VuZGlmIC8vIGlmIGRlZmluZWQoX01TQ19W
RVIpCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikKLS8vIFVzZWQgdG8gcHJldmVudCBkaWFsb2cgb24g
bWVtb3J5IGZhdWx0LgotLy8gTGltaXRzIGhlYWRlcnMgaW5jbHVkZWQgYnkgV2luZG93cy5oCi0j
ZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSNkZWZpbmUgTk9TRVJWSUNFCi0jZGVmaW5lIE5P
TUNYCi0jZGVmaW5lIE5PSU1FCi0jZGVmaW5lIE5PU09VTkQKLSNkZWZpbmUgTk9DT01NCi0jZGVm
aW5lIE5PUlBDCi0jZGVmaW5lIE5PR0RJCi0jZGVmaW5lIE5PVVNFUgotI2RlZmluZSBOT0RSSVZF
UlMKLSNkZWZpbmUgTk9MT0dFUlJPUgotI2RlZmluZSBOT1BST0ZJTEVSCi0jZGVmaW5lIE5PTUVN
TUdSCi0jZGVmaW5lIE5PTEZJTEVJTwotI2RlZmluZSBOT09QRU5GSUxFCi0jZGVmaW5lIE5PUkVT
T1VSQ0UKLSNkZWZpbmUgTk9BVE9NCi0jZGVmaW5lIE5PTEFOR1VBR0UKLSNkZWZpbmUgTk9MU1RS
SU5HCi0jZGVmaW5lIE5PREJDUwotI2RlZmluZSBOT0tFWUJPQVJESU5GTwotI2RlZmluZSBOT0dE
SUNBUE1BU0tTCi0jZGVmaW5lIE5PQ09MT1IKLSNkZWZpbmUgTk9HRElPQkoKLSNkZWZpbmUgTk9E
UkFXVEVYVAotI2RlZmluZSBOT1RFWFRNRVRSSUMKLSNkZWZpbmUgTk9TQ0FMQUJMRUZPTlQKLSNk
ZWZpbmUgTk9CSVRNQVAKLSNkZWZpbmUgTk9SQVNURVJPUFMKLSNkZWZpbmUgTk9NRVRBRklMRQot
I2RlZmluZSBOT1NZU01FVFJJQ1MKLSNkZWZpbmUgTk9TWVNURU1QQVJBTVNJTkZPCi0jZGVmaW5l
IE5PTVNHCi0jZGVmaW5lIE5PV0lOU1RZTEVTCi0jZGVmaW5lIE5PV0lOT0ZGU0VUUwotI2RlZmlu
ZSBOT1NIT1dXSU5ET1cKLSNkZWZpbmUgTk9ERUZFUldJTkRPV1BPUwotI2RlZmluZSBOT1ZJUlRV
QUxLRVlDT0RFUwotI2RlZmluZSBOT0tFWVNUQVRFUwotI2RlZmluZSBOT1dICi0jZGVmaW5lIE5P
TUVOVVMKLSNkZWZpbmUgTk9TQ1JPTEwKLSNkZWZpbmUgTk9DTElQQk9BUkQKLSNkZWZpbmUgTk9J
Q09OUwotI2RlZmluZSBOT01CCi0jZGVmaW5lIE5PU1lTQ09NTUFORFMKLSNkZWZpbmUgTk9NREkK
LSNkZWZpbmUgTk9DVExNR1IKLSNkZWZpbmUgTk9XSU5NRVNTQUdFUwotI2luY2x1ZGUgPHdpbmRv
d3MuaD4KLSNlbmRpZiAvLyBpZiBkZWZpbmVkKF9XSU4zMikKLQotbmFtZXNwYWNlIEpzb25UZXN0
IHsKLQotLy8gY2xhc3MgVGVzdFJlc3VsdAotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLVRlc3RSZXN1bHQ6OlRl
c3RSZXN1bHQoKSB7Ci0gIC8vIFRoZSByb290IHByZWRpY2F0ZSBoYXMgaWQgMAotICByb290UHJl
ZGljYXRlTm9kZV8uaWRfID0gMDsKLSAgcm9vdFByZWRpY2F0ZU5vZGVfLm5leHRfID0gbnVsbHB0
cjsKLSAgcHJlZGljYXRlU3RhY2tUYWlsXyA9ICZyb290UHJlZGljYXRlTm9kZV87Ci19Ci0KLXZv
aWQgVGVzdFJlc3VsdDo6c2V0VGVzdE5hbWUoY29uc3QgSnNvbjo6U3RyaW5nJiBuYW1lKSB7IG5h
bWVfID0gbmFtZTsgfQotCi1UZXN0UmVzdWx0JgotVGVzdFJlc3VsdDo6YWRkRmFpbHVyZShjb25z
dCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSwgY29uc3QgY2hhciogZXhwcikgewotICAv
Ly8gV2Fsa3MgdGhlIFByZWRpY2F0ZUNvbnRleHQgc3RhY2sgYWRkaW5nIHRoZW0gdG8gZmFpbHVy
ZXNfIGlmIG5vdCBhbHJlYWR5Ci0gIC8vLyBhZGRlZC4KLSAgdW5zaWduZWQgaW50IG5lc3RpbmdM
ZXZlbCA9IDA7Ci0gIFByZWRpY2F0ZUNvbnRleHQqIGxhc3ROb2RlID0gcm9vdFByZWRpY2F0ZU5v
ZGVfLm5leHRfOwotICBmb3IgKDsgbGFzdE5vZGUgIT0gbnVsbHB0cjsgbGFzdE5vZGUgPSBsYXN0
Tm9kZS0+bmV4dF8pIHsKLSAgICBpZiAobGFzdE5vZGUtPmlkXyA+IGxhc3RVc2VkUHJlZGljYXRl
SWRfKSAvLyBuZXcgUHJlZGljYXRlQ29udGV4dAotICAgIHsKLSAgICAgIGxhc3RVc2VkUHJlZGlj
YXRlSWRfID0gbGFzdE5vZGUtPmlkXzsKLSAgICAgIGFkZEZhaWx1cmVJbmZvKGxhc3ROb2RlLT5m
aWxlXywgbGFzdE5vZGUtPmxpbmVfLCBsYXN0Tm9kZS0+ZXhwcl8sCi0gICAgICAgICAgICAgICAg
ICAgICBuZXN0aW5nTGV2ZWwpOwotICAgICAgLy8gTGluayB0aGUgUHJlZGljYXRlQ29udGV4dCB0
byB0aGUgZmFpbHVyZSBmb3IgbWVzc2FnZSB0YXJnZXQgd2hlbgotICAgICAgLy8gcG9wcGluZyB0
aGUgUHJlZGljYXRlQ29udGV4dC4KLSAgICAgIGxhc3ROb2RlLT5mYWlsdXJlXyA9ICYoZmFpbHVy
ZXNfLmJhY2soKSk7Ci0gICAgfQotICAgICsrbmVzdGluZ0xldmVsOwotICB9Ci0KLSAgLy8gQWRk
cyB0aGUgZmFpbGVkIGFzc2VydGlvbgotICBhZGRGYWlsdXJlSW5mbyhmaWxlLCBsaW5lLCBleHBy
LCBuZXN0aW5nTGV2ZWwpOwotICBtZXNzYWdlVGFyZ2V0XyA9ICYoZmFpbHVyZXNfLmJhY2soKSk7
Ci0gIHJldHVybiAqdGhpczsKLX0KLQotdm9pZCBUZXN0UmVzdWx0OjphZGRGYWlsdXJlSW5mbyhj
b25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
ZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5lc3Rp
bmdMZXZlbCkgewotICBGYWlsdXJlIGZhaWx1cmU7Ci0gIGZhaWx1cmUuZmlsZV8gPSBmaWxlOwot
ICBmYWlsdXJlLmxpbmVfID0gbGluZTsKLSAgaWYgKGV4cHIpIHsKLSAgICBmYWlsdXJlLmV4cHJf
ID0gZXhwcjsKLSAgfQotICBmYWlsdXJlLm5lc3RpbmdMZXZlbF8gPSBuZXN0aW5nTGV2ZWw7Ci0g
IGZhaWx1cmVzXy5wdXNoX2JhY2soZmFpbHVyZSk7Ci19Ci0KLVRlc3RSZXN1bHQmIFRlc3RSZXN1
bHQ6OnBvcFByZWRpY2F0ZUNvbnRleHQoKSB7Ci0gIFByZWRpY2F0ZUNvbnRleHQqIGxhc3ROb2Rl
ID0gJnJvb3RQcmVkaWNhdGVOb2RlXzsKLSAgd2hpbGUgKGxhc3ROb2RlLT5uZXh0XyAhPSBudWxs
cHRyICYmIGxhc3ROb2RlLT5uZXh0Xy0+bmV4dF8gIT0gbnVsbHB0cikgewotICAgIGxhc3ROb2Rl
ID0gbGFzdE5vZGUtPm5leHRfOwotICB9Ci0gIC8vIFNldCBtZXNzYWdlIHRhcmdldCB0byBwb3Bw
ZWQgZmFpbHVyZQotICBQcmVkaWNhdGVDb250ZXh0KiB0YWlsID0gbGFzdE5vZGUtPm5leHRfOwot
ICBpZiAodGFpbCAhPSBudWxscHRyICYmIHRhaWwtPmZhaWx1cmVfICE9IG51bGxwdHIpIHsKLSAg
ICBtZXNzYWdlVGFyZ2V0XyA9IHRhaWwtPmZhaWx1cmVfOwotICB9Ci0gIC8vIFJlbW92ZSB0YWls
IGZyb20gbGlzdAotICBwcmVkaWNhdGVTdGFja1RhaWxfID0gbGFzdE5vZGU7Ci0gIGxhc3ROb2Rl
LT5uZXh0XyA9IG51bGxwdHI7Ci0gIHJldHVybiAqdGhpczsKLX0KLQotYm9vbCBUZXN0UmVzdWx0
OjpmYWlsZWQoKSBjb25zdCB7IHJldHVybiAhZmFpbHVyZXNfLmVtcHR5KCk7IH0KLQotdm9pZCBU
ZXN0UmVzdWx0OjpwcmludEZhaWx1cmUoYm9vbCBwcmludFRlc3ROYW1lKSBjb25zdCB7Ci0gIGlm
IChmYWlsdXJlc18uZW1wdHkoKSkgewotICAgIHJldHVybjsKLSAgfQotCi0gIGlmIChwcmludFRl
c3ROYW1lKSB7Ci0gICAgcHJpbnRmKCIqIERldGFpbCBvZiAlcyB0ZXN0IGZhaWx1cmU6XG4iLCBu
YW1lXy5jX3N0cigpKTsKLSAgfQotCi0gIC8vIFByaW50IGluIHJldmVyc2UgdG8gZGlzcGxheSB0
aGUgY2FsbHN0YWNrIGluIHRoZSByaWdodCBvcmRlcgotICBmb3IgKGNvbnN0IGF1dG8mIGZhaWx1
cmUgOiBmYWlsdXJlc18pIHsKLSAgICBKc29uOjpTdHJpbmcgaW5kZW50KGZhaWx1cmUubmVzdGlu
Z0xldmVsXyAqIDIsICcgJyk7Ci0gICAgaWYgKGZhaWx1cmUuZmlsZV8pIHsKLSAgICAgIHByaW50
ZigiJXMlcygldSk6ICIsIGluZGVudC5jX3N0cigpLCBmYWlsdXJlLmZpbGVfLCBmYWlsdXJlLmxp
bmVfKTsKLSAgICB9Ci0gICAgaWYgKCFmYWlsdXJlLmV4cHJfLmVtcHR5KCkpIHsKLSAgICAgIHBy
aW50ZigiJXNcbiIsIGZhaWx1cmUuZXhwcl8uY19zdHIoKSk7Ci0gICAgfSBlbHNlIGlmIChmYWls
dXJlLmZpbGVfKSB7Ci0gICAgICBwcmludGYoIlxuIik7Ci0gICAgfQotICAgIGlmICghZmFpbHVy
ZS5tZXNzYWdlXy5lbXB0eSgpKSB7Ci0gICAgICBKc29uOjpTdHJpbmcgcmVpbmRlbnRlZCA9IGlu
ZGVudFRleHQoZmFpbHVyZS5tZXNzYWdlXywgaW5kZW50ICsgIiAgIik7Ci0gICAgICBwcmludGYo
IiVzXG4iLCByZWluZGVudGVkLmNfc3RyKCkpOwotICAgIH0KLSAgfQotfQotCi1Kc29uOjpTdHJp
bmcgVGVzdFJlc3VsdDo6aW5kZW50VGV4dChjb25zdCBKc29uOjpTdHJpbmcmIHRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKc29uOjpTdHJpbmcmIGluZGVu
dCkgewotICBKc29uOjpTdHJpbmcgcmVpbmRlbnRlZDsKLSAgSnNvbjo6U3RyaW5nOjpzaXplX3R5
cGUgbGFzdEluZGV4ID0gMDsKLSAgd2hpbGUgKGxhc3RJbmRleCA8IHRleHQuc2l6ZSgpKSB7Ci0g
ICAgSnNvbjo6U3RyaW5nOjpzaXplX3R5cGUgbmV4dEluZGV4ID0gdGV4dC5maW5kKCdcbicsIGxh
c3RJbmRleCk7Ci0gICAgaWYgKG5leHRJbmRleCA9PSBKc29uOjpTdHJpbmc6Om5wb3MpIHsKLSAg
ICAgIG5leHRJbmRleCA9IHRleHQuc2l6ZSgpIC0gMTsKLSAgICB9Ci0gICAgcmVpbmRlbnRlZCAr
PSBpbmRlbnQ7Ci0gICAgcmVpbmRlbnRlZCArPSB0ZXh0LnN1YnN0cihsYXN0SW5kZXgsIG5leHRJ
bmRleCAtIGxhc3RJbmRleCArIDEpOwotICAgIGxhc3RJbmRleCA9IG5leHRJbmRleCArIDE7Ci0g
IH0KLSAgcmV0dXJuIHJlaW5kZW50ZWQ7Ci19Ci0KLVRlc3RSZXN1bHQmIFRlc3RSZXN1bHQ6OmFk
ZFRvTGFzdEZhaWx1cmUoY29uc3QgSnNvbjo6U3RyaW5nJiBtZXNzYWdlKSB7Ci0gIGlmIChtZXNz
YWdlVGFyZ2V0XyAhPSBudWxscHRyKSB7Ci0gICAgbWVzc2FnZVRhcmdldF8tPm1lc3NhZ2VfICs9
IG1lc3NhZ2U7Ci0gIH0KLSAgcmV0dXJuICp0aGlzOwotfQotCi1UZXN0UmVzdWx0JiBUZXN0UmVz
dWx0OjpvcGVyYXRvcjw8KEpzb246OkludDY0IHZhbHVlKSB7Ci0gIHJldHVybiBhZGRUb0xhc3RG
YWlsdXJlKEpzb246OnZhbHVlVG9TdHJpbmcodmFsdWUpKTsKLX0KLQotVGVzdFJlc3VsdCYgVGVz
dFJlc3VsdDo6b3BlcmF0b3I8PChKc29uOjpVSW50NjQgdmFsdWUpIHsKLSAgcmV0dXJuIGFkZFRv
TGFzdEZhaWx1cmUoSnNvbjo6dmFsdWVUb1N0cmluZyh2YWx1ZSkpOwotfQotCi1UZXN0UmVzdWx0
JiBUZXN0UmVzdWx0OjpvcGVyYXRvcjw8KGJvb2wgdmFsdWUpIHsKLSAgcmV0dXJuIGFkZFRvTGFz
dEZhaWx1cmUodmFsdWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLX0KLQotLy8gY2xhc3MgVGVzdENh
c2UKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi1UZXN0Q2FzZTo6VGVzdENhc2UoKSA9IGRlZmF1bHQ7Ci0KLVRl
c3RDYXNlOjp+VGVzdENhc2UoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgVGVzdENhc2U6OnJ1bihUZXN0
UmVzdWx0JiByZXN1bHQpIHsKLSAgcmVzdWx0XyA9ICZyZXN1bHQ7Ci0gIHJ1blRlc3RDYXNlKCk7
Ci19Ci0KLS8vIGNsYXNzIFJ1bm5lcgotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLVJ1bm5lcjo6UnVubmVyKCkg
PSBkZWZhdWx0OwotCi1SdW5uZXImIFJ1bm5lcjo6YWRkKFRlc3RDYXNlRmFjdG9yeSBmYWN0b3J5
KSB7Ci0gIHRlc3RzXy5wdXNoX2JhY2soZmFjdG9yeSk7Ci0gIHJldHVybiAqdGhpczsKLX0KLQot
c2l6ZV90IFJ1bm5lcjo6dGVzdENvdW50KCkgY29uc3QgeyByZXR1cm4gdGVzdHNfLnNpemUoKTsg
fQotCi1Kc29uOjpTdHJpbmcgUnVubmVyOjp0ZXN0TmFtZUF0KHNpemVfdCBpbmRleCkgY29uc3Qg
ewotICBUZXN0Q2FzZSogdGVzdCA9IHRlc3RzX1tpbmRleF0oKTsKLSAgSnNvbjo6U3RyaW5nIG5h
bWUgPSB0ZXN0LT50ZXN0TmFtZSgpOwotICBkZWxldGUgdGVzdDsKLSAgcmV0dXJuIG5hbWU7Ci19
Ci0KLXZvaWQgUnVubmVyOjpydW5UZXN0QXQoc2l6ZV90IGluZGV4LCBUZXN0UmVzdWx0JiByZXN1
bHQpIGNvbnN0IHsKLSAgVGVzdENhc2UqIHRlc3QgPSB0ZXN0c19baW5kZXhdKCk7Ci0gIHJlc3Vs
dC5zZXRUZXN0TmFtZSh0ZXN0LT50ZXN0TmFtZSgpKTsKLSAgcHJpbnRmKCJUZXN0aW5nICVzOiAi
LCB0ZXN0LT50ZXN0TmFtZSgpKTsKLSAgZmZsdXNoKHN0ZG91dCk7Ci0jaWYgSlNPTl9VU0VfRVhD
RVBUSU9OCi0gIHRyeSB7Ci0jZW5kaWYgLy8gaWYgSlNPTl9VU0VfRVhDRVBUSU9OCi0gICAgdGVz
dC0+cnVuKHJlc3VsdCk7Ci0jaWYgSlNPTl9VU0VfRVhDRVBUSU9OCi0gIH0gY2F0Y2ggKGNvbnN0
IHN0ZDo6ZXhjZXB0aW9uJiBlKSB7Ci0gICAgcmVzdWx0LmFkZEZhaWx1cmUoX19GSUxFX18sIF9f
TElORV9fLCAiVW5leHBlY3RlZCBleGNlcHRpb24gY2F1Z2h0OiIpCi0gICAgICAgIDw8IGUud2hh
dCgpOwotICB9Ci0jZW5kaWYgLy8gaWYgSlNPTl9VU0VfRVhDRVBUSU9OCi0gIGRlbGV0ZSB0ZXN0
OwotICBjb25zdCBjaGFyKiBzdGF0dXMgPSByZXN1bHQuZmFpbGVkKCkgPyAiRkFJTEVEIiA6ICJP
SyI7Ci0gIHByaW50ZigiJXNcbiIsIHN0YXR1cyk7Ci0gIGZmbHVzaChzdGRvdXQpOwotfQotCi1i
b29sIFJ1bm5lcjo6cnVuQWxsVGVzdChib29sIHByaW50U3VtbWFyeSkgY29uc3QgewotICBzaXpl
X3QgY29uc3QgY291bnQgPSB0ZXN0Q291bnQoKTsKLSAgc3RkOjpkZXF1ZTxUZXN0UmVzdWx0PiBm
YWlsdXJlczsKLSAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KSB7Ci0gICAgVGVzdFJlc3VsdCByZXN1bHQ7Ci0gICAgcnVuVGVzdEF0KGluZGV4LCByZXN1bHQp
OwotICAgIGlmIChyZXN1bHQuZmFpbGVkKCkpIHsKLSAgICAgIGZhaWx1cmVzLnB1c2hfYmFjayhy
ZXN1bHQpOwotICAgIH0KLSAgfQotCi0gIGlmIChmYWlsdXJlcy5lbXB0eSgpKSB7Ci0gICAgaWYg
KHByaW50U3VtbWFyeSkgewotICAgICAgcHJpbnRmKCJBbGwgJXp1IHRlc3RzIHBhc3NlZFxuIiwg
Y291bnQpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIHsKLSAgICBmb3IgKGF1
dG8mIHJlc3VsdCA6IGZhaWx1cmVzKSB7Ci0gICAgICByZXN1bHQucHJpbnRGYWlsdXJlKGNvdW50
ID4gMSk7Ci0gICAgfQotCi0gICAgaWYgKHByaW50U3VtbWFyeSkgewotICAgICAgc2l6ZV90IGNv
bnN0IGZhaWxlZENvdW50ID0gZmFpbHVyZXMuc2l6ZSgpOwotICAgICAgc2l6ZV90IGNvbnN0IHBh
c3NlZENvdW50ID0gY291bnQgLSBmYWlsZWRDb3VudDsKLSAgICAgIHByaW50ZigiJXp1LyV6dSB0
ZXN0cyBwYXNzZWQgKCV6dSBmYWlsdXJlKHMpKVxuIiwgcGFzc2VkQ291bnQsIGNvdW50LAotICAg
ICAgICAgICAgIGZhaWxlZENvdW50KTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci19
Ci0KLWJvb2wgUnVubmVyOjp0ZXN0SW5kZXgoY29uc3QgSnNvbjo6U3RyaW5nJiB0ZXN0TmFtZSwg
c2l6ZV90JiBpbmRleE91dCkgY29uc3QgewotICBjb25zdCBzaXplX3QgY291bnQgPSB0ZXN0Q291
bnQoKTsKLSAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7
Ci0gICAgaWYgKHRlc3ROYW1lQXQoaW5kZXgpID09IHRlc3ROYW1lKSB7Ci0gICAgICBpbmRleE91
dCA9IGluZGV4OwotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICB9Ci0gIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBSdW5uZXI6Omxpc3RUZXN0cygpIGNvbnN0IHsKLSAgY29uc3Qgc2l6ZV90
IGNvdW50ID0gdGVzdENvdW50KCk7Ci0gIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBj
b3VudDsgKytpbmRleCkgewotICAgIHByaW50ZigiJXNcbiIsIHRlc3ROYW1lQXQoaW5kZXgpLmNf
c3RyKCkpOwotICB9Ci19Ci0KLWludCBSdW5uZXI6OnJ1bkNvbW1hbmRMaW5lKGludCBhcmdjLCBj
b25zdCBjaGFyKiBhcmd2W10pIGNvbnN0IHsKLSAgLy8gdHlwZWRlZiBzdGQ6OmRlcXVlPFN0cmlu
Zz4gVGVzdE5hbWVzOwotICBSdW5uZXIgc3VicnVubmVyOwotICBmb3IgKGludCBpbmRleCA9IDE7
IGluZGV4IDwgYXJnYzsgKytpbmRleCkgewotICAgIEpzb246OlN0cmluZyBvcHQgPSBhcmd2W2lu
ZGV4XTsKLSAgICBpZiAob3B0ID09ICItLWxpc3QtdGVzdHMiKSB7Ci0gICAgICBsaXN0VGVzdHMo
KTsKLSAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSBpZiAob3B0ID09ICItLXRlc3QtYXV0byIp
IHsKLSAgICAgIHByZXZlbnREaWFsb2dPbkNyYXNoKCk7Ci0gICAgfSBlbHNlIGlmIChvcHQgPT0g
Ii0tdGVzdCIpIHsKLSAgICAgICsraW5kZXg7Ci0gICAgICBpZiAoaW5kZXggPCBhcmdjKSB7Ci0g
ICAgICAgIHNpemVfdCB0ZXN0TmFtZUluZGV4OwotICAgICAgICBpZiAodGVzdEluZGV4KGFyZ3Zb
aW5kZXhdLCB0ZXN0TmFtZUluZGV4KSkgewotICAgICAgICAgIHN1YnJ1bm5lci5hZGQodGVzdHNf
W3Rlc3ROYW1lSW5kZXhdKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlRlc3QgJyVzJyBkb2VzIG5vdCBleGlzdCFcbiIsIGFyZ3ZbaW5kZXhdKTsKLSAgICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcHJpbnRV
c2FnZShhcmd2WzBdKTsKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgIHByaW50VXNhZ2UoYXJndlswXSk7Ci0gICAgICByZXR1cm4gMjsKLSAgICB9Ci0gIH0K
LSAgYm9vbCBzdWNjZWVkZWQ7Ci0gIGlmIChzdWJydW5uZXIudGVzdENvdW50KCkgPiAwKSB7Ci0g
ICAgc3VjY2VlZGVkID0gc3VicnVubmVyLnJ1bkFsbFRlc3Qoc3VicnVubmVyLnRlc3RDb3VudCgp
ID4gMSk7Ci0gIH0gZWxzZSB7Ci0gICAgc3VjY2VlZGVkID0gcnVuQWxsVGVzdCh0cnVlKTsKLSAg
fQotICByZXR1cm4gc3VjY2VlZGVkID8gMCA6IDE7Ci19Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVS
KSAmJiBkZWZpbmVkKF9ERUJVRykKLS8vIEhvb2sgTVNWQ1JUIGFzc2VydGlvbnMgdG8gcHJldmVu
dCBkaWFsb2cgZnJvbSBhcHBlYXJpbmcKLXN0YXRpYyBpbnQKLW1zdmNydFNpbGVudFJlcG9ydEhv
b2soaW50IHJlcG9ydFR5cGUsIGNoYXIqIG1lc3NhZ2UsIGludCogLypyZXR1cm5WYWx1ZSovKSB7
Ci0gIC8vIFRoZSBkZWZhdWx0IENSVCBoYW5kbGluZyBvZiBlcnJvciBhbmQgYXNzZXJ0aW9uIGlz
IHRvIGRpc3BsYXkKLSAgLy8gYW4gZXJyb3IgZGlhbG9nIHRvIHRoZSB1c2VyLgotICAvLyBJbnN0
ZWFkLCB3aGVuIGFuIGVycm9yIG9yIGFuIGFzc2VydGlvbiBvY2N1cnMsIHdlIGZvcmNlIHRoZQot
ICAvLyBhcHBsaWNhdGlvbiB0byB0ZXJtaW5hdGUgdXNpbmcgYWJvcnQoKSBhZnRlciBkaXNwbGF5
Ci0gIC8vIHRoZSBtZXNzYWdlIG9uIHN0ZGVyci4KLSAgaWYgKHJlcG9ydFR5cGUgPT0gX0NSVF9F
UlJPUiB8fCByZXBvcnRUeXBlID09IF9DUlRfQVNTRVJUKSB7Ci0gICAgLy8gY2FsbGluZyBhYm9y
dCgpIGNhdXNlIHRoZSBSZXBvcnRIb29rIHRvIGJlIGNhbGxlZAotICAgIC8vIFRoZSBmb2xsb3dp
bmcgaXMgdXNlZCB0byBkZXRlY3QgdGhpcyBjYXNlIGFuZCBsZXQncyB0aGUKLSAgICAvLyBlcnJv
ciBoYW5kbGVyIGZhbGxiYWNrIG9uIGl0cyBkZWZhdWx0IGJlaGF2aW91ciAoCi0gICAgLy8gZGlz
cGxheSBhIHdhcm5pbmcgbWVzc2FnZSkKLSAgICBzdGF0aWMgdm9sYXRpbGUgYm9vbCBpc0Fib3J0
aW5nID0gZmFsc2U7Ci0gICAgaWYgKGlzQWJvcnRpbmcpIHsKLSAgICAgIHJldHVybiBUUlVFOwot
ICAgIH0KLSAgICBpc0Fib3J0aW5nID0gdHJ1ZTsKLQotICAgIGZwcmludGYoc3RkZXJyLCAiQ1JU
IEVycm9yL0Fzc2VydDpcbiVzXG4iLCBtZXNzYWdlKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLSAg
ICBhYm9ydCgpOwotICB9Ci0gIC8vIExldCdzIG90aGVyIHJlcG9ydFR5cGUgKF9DUlRfV0FSTklO
RykgYmUgaGFuZGxlZCBhcyB0aGV5IHdvdWxkIGJ5IGRlZmF1bHQKLSAgcmV0dXJuIEZBTFNFOwot
fQotI2VuZGlmIC8vIGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLXZvaWQgUnVubmVyOjpwcmV2ZW50
RGlhbG9nT25DcmFzaCgpIHsKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9ERUJV
RykKLSAgLy8gSW5zdGFsbCBhIGhvb2sgdG8gcHJldmVudCBNU1ZDUlQgZXJyb3IgYW5kIGFzc2Vy
dGlvbiBmcm9tCi0gIC8vIHBvcHBpbmcgYSBkaWFsb2cKLSAgLy8gVGhpcyBmdW5jdGlvbiBhIE5P
LU9QIGluIHJlbGVhc2UgY29uZmlndXJhdGlvbgotICAvLyAod2hpY2ggY2F1c2Ugd2FybmluZyBz
aW5jZSBtc3ZjcnRTaWxlbnRSZXBvcnRIb29rIGlzIG5vdCByZWZlcmVuY2VkKQotICBfQ3J0U2V0
UmVwb3J0SG9vaygmbXN2Y3J0U2lsZW50UmVwb3J0SG9vayk7Ci0jZW5kaWYgLy8gaWYgZGVmaW5l
ZChfTVNDX1ZFUikKLQotICAvLyBAdG9kbyBpbnZlc3RpZ2F0ZSB0aGlzIGhhbmRsZXIgKGZvciBi
dWZmZXIgb3ZlcmZsb3cpCi0gIC8vIF9zZXRfc2VjdXJpdHlfZXJyb3JfaGFuZGxlcgotCi0jaWYg
ZGVmaW5lZChfV0lOMzIpCi0gIC8vIFByZXZlbnRzIHRoZSBzeXN0ZW0gZnJvbSBwb3BwaW5nIGEg
ZGlhbG9nIGZvciBkZWJ1Z2dpbmcgaWYgdGhlCi0gIC8vIGFwcGxpY2F0aW9uIGZhaWxzIGR1ZSB0
byBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MuCi0gIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FM
RVJST1JTIHwgU0VNX05PR1BGQVVMVEVSUk9SQk9YIHwKLSAgICAgICAgICAgICAgIFNFTV9OT09Q
RU5GSUxFRVJST1JCT1gpOwotI2VuZGlmIC8vIGlmIGRlZmluZWQoX1dJTjMyKQotfQotCi12b2lk
IFJ1bm5lcjo6cHJpbnRVc2FnZShjb25zdCBjaGFyKiBhcHBOYW1lKSB7Ci0gIHByaW50ZigiVXNh
Z2U6ICVzIFtvcHRpb25zXVxuIgotICAgICAgICAgIlxuIgotICAgICAgICAgIklmIC0tdGVzdCBp
cyBub3Qgc3BlY2lmaWVkLCB0aGVuIGFsbCB0aGUgdGVzdCBjYXNlcyBiZSBydW4uXG4iCi0gICAg
ICAgICAiXG4iCi0gICAgICAgICAiVmFsaWQgb3B0aW9uczpcbiIKLSAgICAgICAgICItLWxpc3Qt
dGVzdHM6IHByaW50IHRoZSBuYW1lIG9mIGFsbCB0ZXN0IGNhc2VzIG9uIHRoZSBzdGFuZGFyZFxu
IgotICAgICAgICAgIiAgICAgICAgICAgICAgb3V0cHV0IGFuZCBleGl0LlxuIgotICAgICAgICAg
Ii0tdGVzdCBURVNUTkFNRTogZXhlY3V0ZXMgdGhlIHRlc3QgY2FzZSB3aXRoIHRoZSBzcGVjaWZp
ZWQgbmFtZS5cbiIKLSAgICAgICAgICIgICAgICAgICAgICAgICAgIE1heSBiZSByZXBlYXRlZC5c
biIKLSAgICAgICAgICItLXRlc3QtYXV0bzogcHJldmVudCBkaWFsb2cgcHJvbXB0aW5nIGZvciBk
ZWJ1Z2dpbmcgb24gY3Jhc2guXG4iLAotICAgICAgICAgYXBwTmFtZSk7Ci19Ci0KLS8vIEFzc2Vy
dGlvbiBmdW5jdGlvbnMKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1Kc29uOjpTdHJpbmcgVG9Kc29uU3RyaW5n
KGNvbnN0IGNoYXIqIHRvQ29udmVydCkgewotICByZXR1cm4gSnNvbjo6U3RyaW5nKHRvQ29udmVy
dCk7Ci19Ci0KLUpzb246OlN0cmluZyBUb0pzb25TdHJpbmcoSnNvbjo6U3RyaW5nIGluKSB7IHJl
dHVybiBpbjsgfQotCi0jaWYgSlNPTkNQUF9VU0lOR19TRUNVUkVfTUVNT1JZCi1Kc29uOjpTdHJp
bmcgVG9Kc29uU3RyaW5nKHN0ZDo6c3RyaW5nIGluKSB7Ci0gIHJldHVybiBKc29uOjpTdHJpbmco
aW4uZGF0YSgpLCBpbi5kYXRhKCkgKyBpbi5sZW5ndGgoKSk7Ci19Ci0jZW5kaWYKLQotVGVzdFJl
c3VsdCYgY2hlY2tTdHJpbmdFcXVhbChUZXN0UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEpzb246OlN0cmluZyYgYWN0dWFsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogZXhwcikgewotICBpZiAoZXhwZWN0ZWQgIT0gYWN0dWFsKSB7Ci0gICAg
cmVzdWx0LmFkZEZhaWx1cmUoZmlsZSwgbGluZSwgZXhwcik7Ci0gICAgcmVzdWx0IDw8ICJFeHBl
Y3RlZDogJyIgPDwgZXhwZWN0ZWQgPDwgIidcbiI7Ci0gICAgcmVzdWx0IDw8ICJBY3R1YWwgIDog
JyIgPDwgYWN0dWFsIDw8ICInIjsKLSAgfQotICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBKc29uVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9qc29u
dGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9qc29udGVzdC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlOWMxMWE0NzA3ZDIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Ny
Yy90ZXN0X2xpYl9qc29uL2pzb250ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNzYgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IDIwMDctMjAxMCBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29u
Q3BwIEF1dGhvcnMKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMg
ZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0vLyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9u
LgotLy8gU2VlIGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25j
cHAuc291cmNlZm9yZ2UubmV0L0xJQ0VOU0UKLQotI2lmbmRlZiBKU09OVEVTVF9IX0lOQ0xVREVE
Ci0jZGVmaW5lIEpTT05URVNUX0hfSU5DTFVERUQKLQotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNs
dWRlIDxkZXF1ZT4KLSNpbmNsdWRlIDxqc29uL2NvbmZpZy5oPgotI2luY2x1ZGUgPGpzb24vdmFs
dWUuaD4KLSNpbmNsdWRlIDxqc29uL3dyaXRlci5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5j
bHVkZSA8c3RyaW5nPgotCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gTWluaSBVbml0
IFRlc3RpbmcgZnJhbWV3b3JrCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vKiogXGJy
aWVmIFVuaXQgdGVzdGluZyBmcmFtZXdvcmsuCi0gKiBcd2FybmluZzogYWxsIGFzc2VydGlvbnMg
YXJlIG5vbi1hYm9ydGluZywgdGVzdCBjYXNlIGV4ZWN1dGlvbiB3aWxsIGNvbnRpbnVlCi0gKiAg
ICAgICAgICAgZXZlbiBpZiBhbiBhc3NlcnRpb24gbmFtZXNwYWNlLgotICogICAgICAgICAgIFRo
aXMgY29uc3RyYWludCBpcyBmb3IgcG9ydGFiaWxpdHk6IHRoZSBmcmFtZXdvcmsgbmVlZHMgdG8g
Y29tcGlsZQotICogICAgICAgICAgIG9uIFZpc3VhbCBTdHVkaW8gNiBhbmQgbXVzdCBub3QgcmVx
dWlyZSBleGNlcHRpb24gdXNhZ2UuCi0gKi8KLW5hbWVzcGFjZSBKc29uVGVzdCB7Ci0KLWNsYXNz
IEZhaWx1cmUgewotcHVibGljOgotICBjb25zdCBjaGFyKiBmaWxlXzsKLSAgdW5zaWduZWQgaW50
IGxpbmVfOwotICBKc29uOjpTdHJpbmcgZXhwcl87Ci0gIEpzb246OlN0cmluZyBtZXNzYWdlXzsK
LSAgdW5zaWduZWQgaW50IG5lc3RpbmdMZXZlbF87Ci19OwotCi0vLy8gQ29udGV4dCB1c2VkIHRv
IGNyZWF0ZSB0aGUgYXNzZXJ0aW9uIGNhbGxzdGFjayBvbiBmYWlsdXJlLgotLy8vIE11c3QgYmUg
YSBQT0QgdG8gYWxsb3cgaW5saW5lIGluaXRpYWxpc2F0aW9uIHdpdGhvdXQgc3RlcHBpbmcKLS8v
LyBpbnRvIHRoZSBkZWJ1Z2dlci4KLXN0cnVjdCBQcmVkaWNhdGVDb250ZXh0IHsKLSAgdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgSWQ7Ci0gIElkIGlkXzsKLSAgY29uc3QgY2hhciogZmlsZV87Ci0gIHVu
c2lnbmVkIGludCBsaW5lXzsKLSAgY29uc3QgY2hhciogZXhwcl87Ci0gIFByZWRpY2F0ZUNvbnRl
eHQqIG5leHRfOwotICAvLy8gUmVsYXRlZCBGYWlsdXJlLCBzZXQgd2hlbiB0aGUgUHJlZGljYXRl
Q29udGV4dCBpcyBjb252ZXJ0ZWQKLSAgLy8vIGludG8gYSBGYWlsdXJlLgotICBGYWlsdXJlKiBm
YWlsdXJlXzsKLX07Ci0KLWNsYXNzIFRlc3RSZXN1bHQgewotcHVibGljOgotICBUZXN0UmVzdWx0
KCk7Ci0KLSAgLy8vIFxpbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiBkZXRhaWwgZm9yIGFzc2VydGlv
biBtYWNyb3MKLSAgLy8vIE5vdCBlbmNhcHN1bGF0ZWQgdG8gcHJldmVudCBzdGVwIGludG8gd2hl
biBkZWJ1Z2dpbmcgZmFpbGVkIGFzc2VydGlvbnMKLSAgLy8vIEluY3JlbWVudGVkIGJ5IG9uZSBv
biBhc3NlcnRpb24gcHJlZGljYXRlIGVudHJ5LCBkZWNyZWFzZWQgYnkgb25lCi0gIC8vLyBieSBh
ZGRQcmVkaWNhdGVDb250ZXh0KCkuCi0gIFByZWRpY2F0ZUNvbnRleHQ6OklkIHByZWRpY2F0ZUlk
X3sxfTsKLQotICAvLy8gXGludGVybmFsIEltcGxlbWVudGF0aW9uIGRldGFpbCBmb3IgcHJlZGlj
YXRlIG1hY3JvcwotICBQcmVkaWNhdGVDb250ZXh0KiBwcmVkaWNhdGVTdGFja1RhaWxfOwotCi0g
IHZvaWQgc2V0VGVzdE5hbWUoY29uc3QgSnNvbjo6U3RyaW5nJiBuYW1lKTsKLQotICAvLy8gQWRk
cyBhbiBhc3NlcnRpb24gZmFpbHVyZS4KLSAgVGVzdFJlc3VsdCYKLSAgYWRkRmFpbHVyZShjb25z
dCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSwgY29uc3QgY2hhciogZXhwciA9IG51bGxw
dHIpOwotCi0gIC8vLyBSZW1vdmVzIHRoZSBsYXN0IFByZWRpY2F0ZUNvbnRleHQgYWRkZWQgdG8g
dGhlIHByZWRpY2F0ZSBzdGFjawotICAvLy8gY2hhaW5lZCBsaXN0LgotICAvLy8gTmV4dCBtZXNz
YWdlcyB3aWxsIGJlIHRhcmdlZCBhdCB0aGUgUHJlZGljYXRlQ29udGV4dCB0aGF0IHdhcyByZW1v
dmVkLgotICBUZXN0UmVzdWx0JiBwb3BQcmVkaWNhdGVDb250ZXh0KCk7Ci0KLSAgYm9vbCBmYWls
ZWQoKSBjb25zdDsKLQotICB2b2lkIHByaW50RmFpbHVyZShib29sIHByaW50VGVzdE5hbWUpIGNv
bnN0OwotCi0gIC8vIEdlbmVyaWMgb3BlcmF0b3IgdGhhdCB3aWxsIHdvcmsgd2l0aCBhbnl0aGlu
ZyBvc3RyZWFtIGNhbiBkZWFsIHdpdGguCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUZXN0UmVz
dWx0JiBvcGVyYXRvcjw8KGNvbnN0IFQmIHZhbHVlKSB7Ci0gICAgSnNvbjo6T1N0cmluZ1N0cmVh
bSBvc3M7Ci0gICAgb3NzLnByZWNpc2lvbigxNik7Ci0gICAgb3NzLnNldGYoc3RkOjppb3NfYmFz
ZTo6ZmxvYXRmaWVsZCk7Ci0gICAgb3NzIDw8IHZhbHVlOwotICAgIHJldHVybiBhZGRUb0xhc3RG
YWlsdXJlKG9zcy5zdHIoKSk7Ci0gIH0KLQotICAvLyBTcGVjaWFsaXplZCB2ZXJzaW9ucy4KLSAg
VGVzdFJlc3VsdCYgb3BlcmF0b3I8PChib29sIHZhbHVlKTsKLSAgLy8gc3RkOm9zdHJlYW0gZG9l
cyBub3Qgc3VwcG9ydCA2NGJpdHMgaW50ZWdlcnMgb24gYWxsIFNUTCBpbXBsZW1lbnRhdGlvbgot
ICBUZXN0UmVzdWx0JiBvcGVyYXRvcjw8KEpzb246OkludDY0IHZhbHVlKTsKLSAgVGVzdFJlc3Vs
dCYgb3BlcmF0b3I8PChKc29uOjpVSW50NjQgdmFsdWUpOwotCi1wcml2YXRlOgotICBUZXN0UmVz
dWx0JiBhZGRUb0xhc3RGYWlsdXJlKGNvbnN0IEpzb246OlN0cmluZyYgbWVzc2FnZSk7Ci0gIC8v
LyBBZGRzIGEgZmFpbHVyZSBvciBhIHByZWRpY2F0ZSBjb250ZXh0Ci0gIHZvaWQgYWRkRmFpbHVy
ZUluZm8oY29uc3QgY2hhciogZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBleHByLAotICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuZXN0aW5nTGV2ZWwpOwotICBzdGF0aWMgSnNv
bjo6U3RyaW5nIGluZGVudFRleHQoY29uc3QgSnNvbjo6U3RyaW5nJiB0ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSnNvbjo6U3RyaW5nJiBpbmRlbnQpOwotCi0g
IHR5cGVkZWYgc3RkOjpkZXF1ZTxGYWlsdXJlPiBGYWlsdXJlczsKLSAgRmFpbHVyZXMgZmFpbHVy
ZXNfOwotICBKc29uOjpTdHJpbmcgbmFtZV87Ci0gIFByZWRpY2F0ZUNvbnRleHQgcm9vdFByZWRp
Y2F0ZU5vZGVfOwotICBQcmVkaWNhdGVDb250ZXh0OjpJZCBsYXN0VXNlZFByZWRpY2F0ZUlkX3sw
fTsKLSAgLy8vIEZhaWx1cmUgd2hpY2ggaXMgdGhlIHRhcmdldCBvZiB0aGUgbWVzc2FnZXMgYWRk
ZWQgdXNpbmcgb3BlcmF0b3IgPDwKLSAgRmFpbHVyZSogbWVzc2FnZVRhcmdldF97bnVsbHB0cn07
Ci19OwotCi1jbGFzcyBUZXN0Q2FzZSB7Ci1wdWJsaWM6Ci0gIFRlc3RDYXNlKCk7Ci0KLSAgdmly
dHVhbCB+VGVzdENhc2UoKTsKLQotICB2b2lkIHJ1bihUZXN0UmVzdWx0JiByZXN1bHQpOwotCi0g
IHZpcnR1YWwgY29uc3QgY2hhciogdGVzdE5hbWUoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoK
LSAgVGVzdFJlc3VsdCogcmVzdWx0X3tudWxscHRyfTsKLQotcHJpdmF0ZToKLSAgdmlydHVhbCB2
b2lkIHJ1blRlc3RDYXNlKCkgPSAwOwotfTsKLQotLy8vIEZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBm
b3IgVGVzdENhc2UgZmFjdG9yeQotdHlwZWRlZiBUZXN0Q2FzZSogKCpUZXN0Q2FzZUZhY3Rvcnkp
KCk7Ci0KLWNsYXNzIFJ1bm5lciB7Ci1wdWJsaWM6Ci0gIFJ1bm5lcigpOwotCi0gIC8vLyBBZGRz
IGEgdGVzdCB0byB0aGUgc3VpdGUKLSAgUnVubmVyJiBhZGQoVGVzdENhc2VGYWN0b3J5IGZhY3Rv
cnkpOwotCi0gIC8vLyBSdW5zIHRlc3QgYXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUK
LSAgLy8vIElmIG5vIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCBydW4gYWxs
IHRlc3RzLgotICAvLy8gSWYgLS1saXN0LXRlc3RzIGlzIHByb3ZpZGVkLCB0aGVuIHByaW50IHRo
ZSBsaXN0IG9mIGFsbCB0ZXN0IGNhc2VzCi0gIC8vLyBJZiAtLXRlc3QgPHRlc3RuYW1lPiBpcyBw
cm92aWRlZCwgdGhlbiBydW4gdGVzdCB0ZXN0bmFtZS4KLSAgaW50IHJ1bkNvbW1hbmRMaW5lKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pIGNvbnN0OwotCi0gIC8vLyBSdW5zIGFsbCB0aGUg
dGVzdCBjYXNlcwotICBib29sIHJ1bkFsbFRlc3QoYm9vbCBwcmludFN1bW1hcnkpIGNvbnN0Owot
Ci0gIC8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGVzdCBjYXNlIGluIHRoZSBzdWl0ZQotICBz
aXplX3QgdGVzdENvdW50KCkgY29uc3Q7Ci0KLSAgLy8vIFJldHVybnMgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgY2FzZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4Ci0gIEpzb246OlN0cmluZyB0ZXN0TmFt
ZUF0KHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSAgLy8vIFJ1bnMgdGhlIHRlc3QgY2FzZSBhdCB0
aGUgc3BlY2lmaWVkIGluZGV4IHVzaW5nIHRoZSBzcGVjaWZpZWQgVGVzdFJlc3VsdAotICB2b2lk
IHJ1blRlc3RBdChzaXplX3QgaW5kZXgsIFRlc3RSZXN1bHQmIHJlc3VsdCkgY29uc3Q7Ci0KLSAg
c3RhdGljIHZvaWQgcHJpbnRVc2FnZShjb25zdCBjaGFyKiBhcHBOYW1lKTsKLQotcHJpdmF0ZTog
Ly8gcHJldmVudHMgY29weSBjb25zdHJ1Y3Rpb24gYW5kIGFzc2lnbm1lbnQKLSAgUnVubmVyKGNv
bnN0IFJ1bm5lciYgb3RoZXIpID0gZGVsZXRlOwotICBSdW5uZXImIG9wZXJhdG9yPShjb25zdCBS
dW5uZXImIG90aGVyKSA9IGRlbGV0ZTsKLQotcHJpdmF0ZToKLSAgdm9pZCBsaXN0VGVzdHMoKSBj
b25zdDsKLSAgYm9vbCB0ZXN0SW5kZXgoY29uc3QgSnNvbjo6U3RyaW5nJiB0ZXN0TmFtZSwgc2l6
ZV90JiBpbmRleE91dCkgY29uc3Q7Ci0gIHN0YXRpYyB2b2lkIHByZXZlbnREaWFsb2dPbkNyYXNo
KCk7Ci0KLXByaXZhdGU6Ci0gIHR5cGVkZWYgc3RkOjpkZXF1ZTxUZXN0Q2FzZUZhY3Rvcnk+IEZh
Y3RvcmllczsKLSAgRmFjdG9yaWVzIHRlc3RzXzsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgotVGVzdFJlc3VsdCYgY2hlY2tFcXVhbChUZXN0UmVzdWx0JiByZXN1bHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIFQgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgIFUgYWN0dWFsLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlLAot
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGluZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogZXhwcikgewotICBpZiAoc3RhdGljX2Nhc3Q8VT4oZXhwZWN0
ZWQpICE9IGFjdHVhbCkgewotICAgIHJlc3VsdC5hZGRGYWlsdXJlKGZpbGUsIGxpbmUsIGV4cHIp
OwotICAgIHJlc3VsdCA8PCAiRXhwZWN0ZWQ6ICIgPDwgc3RhdGljX2Nhc3Q8VT4oZXhwZWN0ZWQp
IDw8ICJcbiI7Ci0gICAgcmVzdWx0IDw8ICJBY3R1YWwgIDogIiA8PCBhY3R1YWw7Ci0gIH0KLSAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotSnNvbjo6U3RyaW5nIFRvSnNvblN0cmluZyhjb25zdCBjaGFy
KiB0b0NvbnZlcnQpOwotSnNvbjo6U3RyaW5nIFRvSnNvblN0cmluZyhKc29uOjpTdHJpbmcgaW4p
OwotI2lmIEpTT05DUFBfVVNJTkdfU0VDVVJFX01FTU9SWQotSnNvbjo6U3RyaW5nIFRvSnNvblN0
cmluZyhzdGQ6OnN0cmluZyBpbik7Ci0jZW5kaWYKLQotVGVzdFJlc3VsdCYgY2hlY2tTdHJpbmdF
cXVhbChUZXN0UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEpzb246OlN0cmluZyYgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEpzb246OlN0cmluZyYgYWN0dWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXhw
cik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpzb25UZXN0Ci0KLS8vLyBcYnJpZWYgQXNzZXJ0cyB0aGF0
IHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIHRydWUuCi0vLy8gSlNPTlRFU1RfQVNTRVJUKCB4ID09
IHkgKSA8PCAieD0iIDw8IHggPDwgIiwgeT0iIDw8IHk7Ci0vLy8gSlNPTlRFU1RfQVNTRVJUKCB4
ID09IHkgKTsKLSNkZWZpbmUgSlNPTlRFU1RfQVNTRVJUKGV4cHIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGlmIChleHByKSB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICB9IGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXN1bHRfLT5hZGRGYWlsdXJlKF9fRklM
RV9fLCBfX0xJTkVfXywgI2V4cHIpCi0KLS8vLyBcYnJpZWYgQXNzZXJ0cyB0aGF0IHRoZSBnaXZl
biBwcmVkaWNhdGUgaXMgdHJ1ZS4KLS8vLyBUaGUgcHJlZGljYXRlIG1heSBkbyBvdGhlciBhc3Nl
cnRpb25zIGFuZCBiZSBhIG1lbWJlciBmdW5jdGlvbiBvZiB0aGUKLS8vLyBmaXh0dXJlLgotI2Rl
ZmluZSBKU09OVEVTVF9BU1NFUlRfUFJFRChleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgSnNvblRl
c3Q6OlByZWRpY2F0ZUNvbnRleHQgX21pbml0ZXN0X0NvbnRleHQgPSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXN1bHRfLT5wcmVkaWNhdGVJZF8sIF9fRklMRV9fLCBf
X0xJTkVfXywgI2V4cHIsIE5VTEwsIE5VTEx9OyAgICAgICAgIFwKLSAgICByZXN1bHRfLT5wcmVk
aWNhdGVTdGFja1RhaWxfLT5uZXh0XyA9ICZfbWluaXRlc3RfQ29udGV4dDsgICAgICAgICAgICAg
ICAgICBcCi0gICAgcmVzdWx0Xy0+cHJlZGljYXRlSWRfICs9IDE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlc3VsdF8tPnByZWRpY2F0ZVN0
YWNrVGFpbF8gPSAmX21pbml0ZXN0X0NvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAoZXhwcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVzdWx0Xy0+cG9wUHJlZGljYXRlQ29udGV4
dCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9Ci0K
LS8vLyBcYnJpZWYgQXNzZXJ0cyB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFscy4KLSNkZWZpbmUg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKGV4cGVjdGVkLCBhY3R1YWwpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gIEpzb25UZXN0OjpjaGVja0VxdWFsKCpyZXN1bHRfLCBleHBlY3Rl
ZCwgYWN0dWFsLCBfX0ZJTEVfXywgX19MSU5FX18sICAgICAgICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAjZXhwZWN0ZWQgIiA9PSAiICNhY3R1YWwpCi0KLS8vLyBcYnJpZWYgQXNzZXJ0cyB0
aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFscy4KLSNkZWZpbmUgSlNPTlRFU1RfQVNTRVJUX1NUUklO
R19FUVVBTChleHBlY3RlZCwgYWN0dWFsKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIEpz
b25UZXN0OjpjaGVja1N0cmluZ0VxdWFsKCpyZXN1bHRfLCBKc29uVGVzdDo6VG9Kc29uU3RyaW5n
KGV4cGVjdGVkKSwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVGVz
dDo6VG9Kc29uU3RyaW5nKGFjdHVhbCksIF9fRklMRV9fLCAgICAgICAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19MSU5FX18sICNleHBlY3RlZCAiID09ICIgI2FjdHVhbCkKLQot
Ly8vIFxicmllZiBBc3NlcnRzIHRoYXQgYSBnaXZlbiBleHByZXNzaW9uIHRocm93cyBhbiBleGNl
cHRpb24KLSNkZWZpbmUgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhleHByKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIGJvb2wgX3RocmV3ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBl
eHByOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIH0gY2F0Y2ggKC4uLikgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIF90aHJldyA9
IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICghX3RocmV3KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgIHJlc3VsdF8tPmFkZEZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJl
eHBlY3RlZCBleGNlcHRpb24gdGhyb3duOiAiICNleHByKTsgICAgICAgICAgICAgICAgXAotICB9
Ci0KLS8vLyBcYnJpZWYgQmVnaW4gYSBmaXh0dXJlIHRlc3QgY2FzZS4KLSNkZWZpbmUgSlNPTlRF
U1RfRklYVFVSRShGaXh0dXJlVHlwZSwgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gIGNsYXNzIFRlc3QjI0ZpeHR1cmVUeXBlIyNuYW1lIDogcHVibGljIEZpeHR1
cmVUeXBlIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBwdWJsaWM6ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBzdGF0aWMgSnNvblRlc3Q6OlRlc3RDYXNlKiBmYWN0b3J5KCkgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICByZXR1cm4gbmV3IFRlc3QjI0ZpeHR1
cmVUeXBlIyNuYW1lKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHB1YmxpYzog
Lyogb3ZlcnJpZGRlbiBmcm9tIFRlc3RDYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIGNvbnN0IGNoYXIqIHRlc3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gI0ZpeHR1cmVUeXBlICIvIiAjbmFtZTsgfSAgIFwKLSAgICB2b2lkIHJ1blRlc3RD
YXNlKCkgb3ZlcnJpZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgdm9pZCBUZXN0IyNGaXh0dXJlVHlwZSMjbmFtZTo6cnVuVGVzdENhc2UoKQotCi0jZGVmaW5l
IEpTT05URVNUX0ZJWFRVUkVfRkFDVE9SWShGaXh0dXJlVHlwZSwgbmFtZSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAmVGVzdCMjRml4dHVyZVR5cGUjI25hbWU6OmZhY3RvcnkKLQot
I2RlZmluZSBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgRml4dHVyZVR5cGUsIG5h
bWUpICAgICAgICAgICAgICAgICAgIFwKLSAgKHJ1bm5lcikuYWRkKEpTT05URVNUX0ZJWFRVUkVf
RkFDVE9SWShGaXh0dXJlVHlwZSwgbmFtZSkpCi0KLSNlbmRpZiAvLyBpZm5kZWYgSlNPTlRFU1Rf
SF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS9zcmMvdGVzdF9saWJfanNvbi9tYWluLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2Uvc3JjL3Rlc3RfbGliX2pzb24vbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZjZGE2MGU4MWM0Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uvc3JjL3Rlc3RfbGli
X2pzb24vbWFpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjU3ICswLDAgQEAKLS8vIENvcHly
aWdodCAyMDA3LTIwMTAgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3Jz
Ci0vLyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBk
ZXNpcmVkIGFuZAotLy8gcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLS8vIFNlZSBm
aWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZv
cmdlLm5ldC9MSUNFTlNFCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBwdXNoCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRl
ZC1kZWNsYXJhdGlvbnMiCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGUgOiA0OTk2KQotI2VuZGlmCi0KLSNpbmNsdWRlICJmdXp6LmgiCi0jaW5jbHVkZSAi
anNvbnRlc3QuaCIKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1
ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8anNvbi9jb25maWcu
aD4KLSNpbmNsdWRlIDxqc29uL2pzb24uaD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8
c3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0KLS8vIE1ha2UgbnVtZXJpYyBsaW1pdHMgbW9y
ZSBjb252ZW5pZW50IHRvIHRhbGsgYWJvdXQuCi0vLyBBc3N1bWVzIGludCB0eXBlIGluIDMyIGJp
dHMuCi0jZGVmaW5lIGtpbnQzMm1heCBKc29uOjpWYWx1ZTo6bWF4SW50Ci0jZGVmaW5lIGtpbnQz
Mm1pbiBKc29uOjpWYWx1ZTo6bWluSW50Ci0jZGVmaW5lIGt1aW50MzJtYXggSnNvbjo6VmFsdWU6
Om1heFVJbnQKLSNkZWZpbmUga2ludDY0bWF4IEpzb246OlZhbHVlOjptYXhJbnQ2NAotI2RlZmlu
ZSBraW50NjRtaW4gSnNvbjo6VmFsdWU6Om1pbkludDY0Ci0jZGVmaW5lIGt1aW50NjRtYXggSnNv
bjo6VmFsdWU6Om1heFVJbnQ2NAotCi0vLyBzdGF0aWMgY29uc3QgZG91YmxlIGtkaW50NjRtYXgg
PSBkb3VibGUoa2ludDY0bWF4KTsKLS8vIHN0YXRpYyBjb25zdCBmbG9hdCBrZmludDY0bWF4ID0g
ZmxvYXQoa2ludDY0bWF4KTsKLXN0YXRpYyBjb25zdCBmbG9hdCBrZmludDMybWF4ID0gZmxvYXQo
a2ludDMybWF4KTsKLXN0YXRpYyBjb25zdCBmbG9hdCBrZnVpbnQzMm1heCA9IGZsb2F0KGt1aW50
MzJtYXgpOwotCi0vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSnNvbiBMaWJyYXJ5IHRl
c3QgY2FzZXMKLS8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZiAhZGVmaW5lZChKU09O
X1VTRV9JTlQ2NF9ET1VCTEVfQ09OVkVSU0lPTikKLXN0YXRpYyBpbmxpbmUgZG91YmxlIHVpbnQ2
NFRvRG91YmxlKEpzb246OlVJbnQ2NCB2YWx1ZSkgewotICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSk7Ci19Ci0jZWxzZSAgLy8gaWYgIWRlZmluZWQoSlNPTl9VU0VfSU5UNjRfRE9V
QkxFX0NPTlZFUlNJT04pCi1zdGF0aWMgaW5saW5lIGRvdWJsZSB1aW50NjRUb0RvdWJsZShKc29u
OjpVSW50NjQgdmFsdWUpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oSnNvbjo6SW50
NjQodmFsdWUgLyAyKSkgKiAyLjAgKwotICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihKc29u
OjpJbnQ2NCh2YWx1ZSAmIDEpKTsKLX0KLSNlbmRpZiAvLyBpZiAhZGVmaW5lZChKU09OX1VTRV9J
TlQ2NF9ET1VCTEVfQ09OVkVSU0lPTikKLQotc3RydWN0IFZhbHVlVGVzdCA6IEpzb25UZXN0OjpU
ZXN0Q2FzZSB7Ci0gIEpzb246OlZhbHVlIG51bGxfOwotICBKc29uOjpWYWx1ZSBlbXB0eUFycmF5
XzsKLSAgSnNvbjo6VmFsdWUgZW1wdHlPYmplY3RfOwotICBKc29uOjpWYWx1ZSBpbnRlZ2VyXzsK
LSAgSnNvbjo6VmFsdWUgdW5zaWduZWRJbnRlZ2VyXzsKLSAgSnNvbjo6VmFsdWUgc21hbGxVbnNp
Z25lZEludGVnZXJfOwotICBKc29uOjpWYWx1ZSByZWFsXzsKLSAgSnNvbjo6VmFsdWUgZmxvYXRf
OwotICBKc29uOjpWYWx1ZSBhcnJheTFfOwotICBKc29uOjpWYWx1ZSBvYmplY3QxXzsKLSAgSnNv
bjo6VmFsdWUgZW1wdHlTdHJpbmdfOwotICBKc29uOjpWYWx1ZSBzdHJpbmcxXzsKLSAgSnNvbjo6
VmFsdWUgc3RyaW5nXzsKLSAgSnNvbjo6VmFsdWUgdHJ1ZV87Ci0gIEpzb246OlZhbHVlIGZhbHNl
XzsKLQotICBWYWx1ZVRlc3QoKQotICAgICAgOiBlbXB0eUFycmF5XyhKc29uOjphcnJheVZhbHVl
KSwgZW1wdHlPYmplY3RfKEpzb246Om9iamVjdFZhbHVlKSwKLSAgICAgICAgaW50ZWdlcl8oMTIz
NDU2Nzg5KSwgdW5zaWduZWRJbnRlZ2VyXygzNDU2Nzg5MHUpLAotICAgICAgICBzbWFsbFVuc2ln
bmVkSW50ZWdlcl8oSnNvbjo6VmFsdWU6OlVJbnQoSnNvbjo6VmFsdWU6Om1heEludCkpLAotICAg
ICAgICByZWFsXygxMjM0LjU2Nzg5KSwgZmxvYXRfKDAuMDAzOTA2MjVmKSwgZW1wdHlTdHJpbmdf
KCIiKSwgc3RyaW5nMV8oImEiKSwKLSAgICAgICAgc3RyaW5nXygic29tZXRleHQgd2l0aCBzcGFj
ZSIpLCB0cnVlXyh0cnVlKSwgZmFsc2VfKGZhbHNlKSB7Ci0gICAgYXJyYXkxXy5hcHBlbmQoMTIz
NCk7Ci0gICAgb2JqZWN0MV9bImlkIl0gPSAxMjM0OwotICB9Ci0KLSAgc3RydWN0IElzQ2hlY2sg
ewotICAgIC8vLyBJbml0aWFsaXplIGFsbCBjaGVja3MgdG8gXGMgZmFsc2UgYnkgZGVmYXVsdC4K
LSAgICBJc0NoZWNrKCk7Ci0KLSAgICBib29sIGlzT2JqZWN0X3tmYWxzZX07Ci0gICAgYm9vbCBp
c0FycmF5X3tmYWxzZX07Ci0gICAgYm9vbCBpc0Jvb2xfe2ZhbHNlfTsKLSAgICBib29sIGlzU3Ry
aW5nX3tmYWxzZX07Ci0gICAgYm9vbCBpc051bGxfe2ZhbHNlfTsKLQotICAgIGJvb2wgaXNJbnRf
e2ZhbHNlfTsKLSAgICBib29sIGlzSW50NjRfe2ZhbHNlfTsKLSAgICBib29sIGlzVUludF97ZmFs
c2V9OwotICAgIGJvb2wgaXNVSW50NjRfe2ZhbHNlfTsKLSAgICBib29sIGlzSW50ZWdyYWxfe2Zh
bHNlfTsKLSAgICBib29sIGlzRG91YmxlX3tmYWxzZX07Ci0gICAgYm9vbCBpc051bWVyaWNfe2Zh
bHNlfTsKLSAgfTsKLQotICB2b2lkIGNoZWNrQ29uc3RNZW1iZXJDb3VudChjb25zdCBKc29uOjpW
YWx1ZSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
eHBlY3RlZENvdW50KTsKLQotICB2b2lkIGNoZWNrTWVtYmVyQ291bnQoSnNvbjo6VmFsdWUmIHZh
bHVlLCB1bnNpZ25lZCBpbnQgZXhwZWN0ZWRDb3VudCk7Ci0KLSAgdm9pZCBjaGVja0lzKGNvbnN0
IEpzb246OlZhbHVlJiB2YWx1ZSwgY29uc3QgSXNDaGVjayYgY2hlY2spOwotCi0gIHZvaWQgY2hl
Y2tJc0xlc3MoY29uc3QgSnNvbjo6VmFsdWUmIHgsIGNvbnN0IEpzb246OlZhbHVlJiB5KTsKLQot
ICB2b2lkIGNoZWNrSXNFcXVhbChjb25zdCBKc29uOjpWYWx1ZSYgeCwgY29uc3QgSnNvbjo6VmFs
dWUmIHkpOwotCi0gIC8vLyBOb3JtYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0aW5n
LXBvaW50IG51bWJlciBieSBzdHJpcHBlZCBsZWFkaW5nCi0gIC8vLyAwIGluIGV4cG9uZW50Lgot
ICBzdGF0aWMgSnNvbjo6U3RyaW5nIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoY29uc3QgSnNv
bjo6U3RyaW5nJiBzKTsKLX07Ci0KLUpzb246OlN0cmluZyBWYWx1ZVRlc3Q6Om5vcm1hbGl6ZUZs
b2F0aW5nUG9pbnRTdHIoY29uc3QgSnNvbjo6U3RyaW5nJiBzKSB7Ci0gIEpzb246OlN0cmluZzo6
c2l6ZV90eXBlIGluZGV4ID0gcy5maW5kX2xhc3Rfb2YoImVFIik7Ci0gIGlmIChpbmRleCAhPSBK
c29uOjpTdHJpbmc6Om5wb3MpIHsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBoYXNTaWdu
ID0KLSAgICAgICAgKHNbaW5kZXggKyAxXSA9PSAnKycgfHwgc1tpbmRleCArIDFdID09ICctJykg
PyAxIDogMDsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlwZSBleHBvbmVudFN0YXJ0SW5kZXgg
PSBpbmRleCArIDEgKyBoYXNTaWduOwotICAgIEpzb246OlN0cmluZyBub3JtYWxpemVkID0gcy5z
dWJzdHIoMCwgZXhwb25lbnRTdGFydEluZGV4KTsKLSAgICBKc29uOjpTdHJpbmc6OnNpemVfdHlw
ZSBpbmRleERpZ2l0ID0KLSAgICAgICAgcy5maW5kX2ZpcnN0X25vdF9vZignMCcsIGV4cG9uZW50
U3RhcnRJbmRleCk7Ci0gICAgSnNvbjo6U3RyaW5nIGV4cG9uZW50ID0gIjAiOwotICAgIGlmIChp
bmRleERpZ2l0ICE9IEpzb246OlN0cmluZzo6bnBvcykgLy8gVGhlcmUgaXMgYW4gZXhwb25lbnQg
ZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBm
cm9tIDAKLSAgICB7Ci0gICAgICBleHBvbmVudCA9IHMuc3Vic3RyKGluZGV4RGlnaXQpOwotICAg
IH0KLSAgICByZXR1cm4gbm9ybWFsaXplZCArIGV4cG9uZW50OwotICB9Ci0gIHJldHVybiBzOwot
fQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgY2hlY2tOb3JtYWxpemVGbG9hdGluZ1Bv
aW50U3RyKSB7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAuMCIsIG5vcm1hbGl6
ZUZsb2F0aW5nUG9pbnRTdHIoIjAuMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVB
TCgiMGUwIiwgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMGUwIikpOwotICBKU09OVEVTVF9B
U1NFUlRfU1RSSU5HX0VRVUFMKCIxMjM0LjAiLCBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIx
MjM0LjAiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzQuMGUwIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIx
MjM0LjBlMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMTIzNC4wZSswIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3Ry
KCIxMjM0LjBlKzAiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlLTEi
LCBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIxMjM0ZS0xIikpOwotICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKCIxMjM0ZTEwIiwgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIz
NGUxMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMTIzNGUxMCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cigiMTIz
NGUwMTAiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlKzEwIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKCIx
MjM0ZSswMTAiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlLTEwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVGbG9hdGluZ1BvaW50U3Ry
KCIxMjM0ZS0wMTAiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEyMzRlKzEw
MCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2lu
dFN0cigiMTIzNGUrMTAwIikpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIxMjM0
ZS0xMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUZsb2F0aW5n
UG9pbnRTdHIoIjEyMzRlLTEwMCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgi
MTIzNGUrMSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplRmxvYXRp
bmdQb2ludFN0cigiMTIzNGUrMDAxIikpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVz
dCwgbWVtYmVyQ291bnQpIHsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3Vu
dChlbXB0eUFycmF5XywgMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJlckNv
dW50KGVtcHR5T2JqZWN0XywgMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJl
ckNvdW50KGFycmF5MV8sIDEpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJD
b3VudChvYmplY3QxXywgMSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja01lbWJlckNv
dW50KG51bGxfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVyQ291bnQo
aW50ZWdlcl8sIDApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tNZW1iZXJDb3VudCh1
bnNpZ25lZEludGVnZXJfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrTWVtYmVy
Q291bnQoc21hbGxVbnNpZ25lZEludGVnZXJfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVE
KGNoZWNrTWVtYmVyQ291bnQocmVhbF8sIDApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hl
Y2tNZW1iZXJDb3VudChlbXB0eVN0cmluZ18sIDApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tNZW1iZXJDb3VudChzdHJpbmdfLCAwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNo
ZWNrTWVtYmVyQ291bnQodHJ1ZV8sIDApKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRl
c3QsIG9iamVjdHMpIHsKLSAgLy8gVHlwZXMKLSAgSXNDaGVjayBjaGVja3M7Ci0gIGNoZWNrcy5p
c09iamVjdF8gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKGVtcHR5T2Jq
ZWN0XywgY2hlY2tzKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXMob2JqZWN0MV8s
IGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpvYmplY3RWYWx1ZSwg
ZW1wdHlPYmplY3RfLnR5cGUoKSk7Ci0KLSAgLy8gRW1wdHkgb2JqZWN0IG9rYXkKLSAgSlNPTlRF
U1RfQVNTRVJUKGVtcHR5T2JqZWN0Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7
Ci0KLSAgLy8gTm9uLWVtcHR5IG9iamVjdCBub3Qgb2theQotICBKU09OVEVTVF9BU1NFUlQoIW9i
amVjdDFfLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLQotICAvLyBBbHdheXMg
b2theQotICBKU09OVEVTVF9BU1NFUlQoZW1wdHlPYmplY3RfLmlzQ29udmVydGlibGVUbyhKc29u
OjpvYmplY3RWYWx1ZSkpOwotCi0gIC8vIE5ldmVyIG9rYXkKLSAgSlNPTlRFU1RfQVNTRVJUKCFl
bXB0eU9iamVjdF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKCFlbXB0eU9iamVjdF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7
Ci0gIEpTT05URVNUX0FTU0VSVCghZW1wdHlPYmplY3RfLmlzQ29udmVydGlibGVUbyhKc29uOjp1
aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0eU9iamVjdF8uaXNDb252ZXJ0aWJs
ZVRvKEpzb246OnJlYWxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIWVtcHR5T2JqZWN0Xy5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCgh
ZW1wdHlPYmplY3RfLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotCi0gIC8v
IEFjY2VzcyB0aHJvdWdoIGNvbnN0IHJlZmVyZW5jZQotICBjb25zdCBKc29uOjpWYWx1ZSYgY29u
c3RPYmplY3QgPSBvYmplY3QxXzsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFs
dWUoMTIzNCksIGNvbnN0T2JqZWN0WyJpZCJdKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpz
b246OlZhbHVlKCksIGNvbnN0T2JqZWN0WyJ1bmtub3duIGlkIl0pOwotCi0gIC8vIEFjY2VzcyB0
aHJvdWdoIGZpbmQoKQotICBjb25zdCBjaGFyIGlkS2V5W10gPSAiaWQiOwotICBjb25zdCBKc29u
OjpWYWx1ZSogZm91bmRJZCA9IG9iamVjdDFfLmZpbmQoaWRLZXksIGlkS2V5ICsgc3RybGVuKGlk
S2V5KSk7Ci0gIEpTT05URVNUX0FTU0VSVChmb3VuZElkICE9IG51bGxwdHIpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTIzNCksICpmb3VuZElkKTsKLQotICBjb25zdCBj
aGFyIHVua25vd25JZEtleVtdID0gInVua25vd24gaWQiOwotICBjb25zdCBKc29uOjpWYWx1ZSog
Zm91bmRVbmtub3duSWQgPQotICAgICAgb2JqZWN0MV8uZmluZCh1bmtub3duSWRLZXksIHVua25v
d25JZEtleSArIHN0cmxlbih1bmtub3duSWRLZXkpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KG51bGxwdHIsIGZvdW5kVW5rbm93bklkKTsKLQotICAvLyBBY2Nlc3MgdGhyb3VnaCBkZW1hbmQo
KQotICBjb25zdCBjaGFyIHlldEFub3RoZXJJZEtleVtdID0gInlldCBhbm90aGVyIGlkIjsKLSAg
Y29uc3QgSnNvbjo6VmFsdWUqIGZvdW5kWWV0QW5vdGhlcklkID0KLSAgICAgIG9iamVjdDFfLmZp
bmQoeWV0QW5vdGhlcklkS2V5LCB5ZXRBbm90aGVySWRLZXkgKyBzdHJsZW4oeWV0QW5vdGhlcklk
S2V5KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChudWxscHRyLCBmb3VuZFlldEFub3RoZXJJ
ZCk7Ci0gIEpzb246OlZhbHVlKiBkZW1hbmRlZFlldEFub3RoZXJJZCA9IG9iamVjdDFfLmRlbWFu
ZCgKLSAgICAgIHlldEFub3RoZXJJZEtleSwgeWV0QW5vdGhlcklkS2V5ICsgc3RybGVuKHlldEFu
b3RoZXJJZEtleSkpOwotICBKU09OVEVTVF9BU1NFUlQoZGVtYW5kZWRZZXRBbm90aGVySWQgIT0g
bnVsbHB0cik7Ci0gICpkZW1hbmRlZFlldEFub3RoZXJJZCA9ICJiYXoiOwotCi0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgiYmF6IiksIG9iamVjdDFfWyJ5ZXQgYW5vdGhlciBp
ZCJdKTsKLQotICAvLyBBY2Nlc3MgdGhyb3VnaCBub24tY29uc3QgcmVmZXJlbmNlCi0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgxMjM0KSwgb2JqZWN0MV9bImlkIl0pOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoKSwgb2JqZWN0MV9bInVua25vd24gaWQi
XSk7Ci0KLSAgb2JqZWN0MV9bInNvbWUgb3RoZXIgaWQiXSA9ICJmb28iOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoImZvbyIpLCBvYmplY3QxX1sic29tZSBvdGhlciBpZCJd
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCJmb28iKSwgb2JqZWN0MV9b
InNvbWUgb3RoZXIgaWQiXSk7Ci0KLSAgLy8gUmVtb3ZlLgotICBKc29uOjpWYWx1ZSBnb3Q7Ci0g
IGJvb2wgZGlkOwotICBkaWQgPSBvYmplY3QxXy5yZW1vdmVNZW1iZXIoInNvbWUgb3RoZXIgaWQi
LCAmZ290KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCJmb28iKSwgZ290
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIGRpZCk7Ci0gIGdvdCA9IEpzb246OlZh
bHVlKCJiYXIiKTsKLSAgZGlkID0gb2JqZWN0MV8ucmVtb3ZlTWVtYmVyKCJzb21lIG90aGVyIGlk
IiwgJmdvdCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpWYWx1ZSgiYmFyIiksIGdv
dCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgZGlkKTsKLQotICBvYmplY3QxX1si
c29tZSBvdGhlciBpZCJdID0gImZvbyI7Ci0gIEpzb246OlZhbHVlKiBnb3RQdHIgPSBudWxscHRy
OwotICBkaWQgPSBvYmplY3QxXy5yZW1vdmVNZW1iZXIoInNvbWUgb3RoZXIgaWQiLCBnb3RQdHIp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwobnVsbHB0ciwgZ290UHRyKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKHRydWUsIGRpZCk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0
LCBhcnJheXMpIHsKLSAgY29uc3QgdW5zaWduZWQgaW50IGluZGV4MCA9IDA7Ci0KLSAgLy8gVHlw
ZXMKLSAgSXNDaGVjayBjaGVja3M7Ci0gIGNoZWNrcy5pc0FycmF5XyA9IHRydWU7Ci0gIEpTT05U
RVNUX0FTU0VSVF9QUkVEKGNoZWNrSXMoZW1wdHlBcnJheV8sIGNoZWNrcykpOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzKGFycmF5MV8sIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTChKc29uOjphcnJheVZhbHVlLCBhcnJheTFfLnR5cGUoKSk7Ci0KLSAgLy8gRW1w
dHkgYXJyYXkgb2theQotICBKU09OVEVTVF9BU1NFUlQoZW1wdHlBcnJheV8uaXNDb252ZXJ0aWJs
ZVRvKEpzb246Om51bGxWYWx1ZSkpOwotCi0gIC8vIE5vbi1lbXB0eSBhcnJheSBub3Qgb2theQot
ICBKU09OVEVTVF9BU1NFUlQoIWFycmF5MV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1
ZSkpOwotCi0gIC8vIEFsd2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVChlbXB0eUFycmF5Xy5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJyYXlWYWx1ZSkpOwotCi0gIC8vIE5ldmVyIG9rYXkKLSAg
SlNPTlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6b2JqZWN0
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghZW1wdHlBcnJh
eV8uaXNDb252ZXJ0aWJsZVRvKEpzb246OnJlYWxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQo
IWVtcHR5QXJyYXlfLmlzQ29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCFlbXB0eUFycmF5Xy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6c3RyaW5nVmFs
dWUpKTsKLQotICAvLyBBY2Nlc3MgdGhyb3VnaCBjb25zdCByZWZlcmVuY2UKLSAgY29uc3QgSnNv
bjo6VmFsdWUmIGNvbnN0QXJyYXkgPSBhcnJheTFfOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6VmFsdWUoMTIzNCksIGNvbnN0QXJyYXlbaW5kZXgwXSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChKc29uOjpWYWx1ZSgxMjM0KSwgY29uc3RBcnJheVswXSk7Ci0KLSAgLy8gQWNjZXNz
IHRocm91Z2ggbm9uLWNvbnN0IHJlZmVyZW5jZQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNv
bjo6VmFsdWUoMTIzNCksIGFycmF5MV9baW5kZXgwXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjpWYWx1ZSgxMjM0KSwgYXJyYXkxX1swXSk7Ci0KLSAgYXJyYXkxX1syXSA9IEpzb246
OlZhbHVlKDE3KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCksIGFycmF5
MV9bMV0pOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFsdWUoMTcpLCBhcnJheTFf
WzJdKTsKLSAgSnNvbjo6VmFsdWUgZ290OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwg
YXJyYXkxXy5yZW1vdmVJbmRleCgyLCAmZ290KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChK
c29uOjpWYWx1ZSgxNyksIGdvdCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgYXJy
YXkxXy5yZW1vdmVJbmRleCgyLCAmZ290KSk7IC8vIGdvbmUgbm93Ci19Ci1KU09OVEVTVF9GSVhU
VVJFKFZhbHVlVGVzdCwgYXJyYXlJc3N1ZTI1MikgewotICBpbnQgY291bnQgPSA1OwotICBKc29u
OjpWYWx1ZSByb290OwotICBKc29uOjpWYWx1ZSBpdGVtOwotICByb290WyJhcnJheSJdID0gSnNv
bjo6VmFsdWU6Om51bGxSZWY7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewot
ICAgIGl0ZW1bImEiXSA9IGk7Ci0gICAgaXRlbVsiYiJdID0gaTsKLSAgICByb290WyJhcnJheSJd
W2ldID0gaXRlbTsKLSAgfQotICAvLyBKU09OVEVTVF9BU1NFUlRfRVFVQUwoNSwgcm9vdFsiYXJy
YXkiXS5zaXplKCkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgbnVsbCkgewot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6bnVsbFZhbHVlLCBudWxsXy50eXBlKCkpOwot
Ci0gIElzQ2hlY2sgY2hlY2tzOwotICBjaGVja3MuaXNOdWxsXyA9IHRydWU7Ci0gIEpTT05URVNU
X0FTU0VSVF9QUkVEKGNoZWNrSXMobnVsbF8sIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VS
VChudWxsXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FT
U0VSVChudWxsXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFsdWUpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1
ZSkpOwotICBKU09OVEVTVF9BU1NFUlQobnVsbF8uaXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG51bGxfLmlzQ29udmVydGlibGVUbyhKc29uOjpv
YmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpJbnQoMCksIG51
bGxfLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6TGFyZ2VzdEludCgw
KSwgbnVsbF8uYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6
VUludCgwKSwgbnVsbF8uYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6
TGFyZ2VzdFVJbnQoMCksIG51bGxfLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgwLjAsIG51bGxfLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
MC4wLCBudWxsXy5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIi
LCBudWxsXy5hc1N0cmluZygpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6VmFs
dWU6Om51bGwsIG51bGxfKTsKLQotICAvLyBUZXN0IHVzaW5nIGEgVmFsdWUgaW4gYSBib29sZWFu
IGNvbnRleHQgKGZhbHNlIGlmZiBudWxsKQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwobnVsbF8s
IGZhbHNlKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKG9iamVjdDFfLCB0cnVlKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKCFudWxsXywgdHJ1ZSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCghb2JqZWN0MV8sIGZhbHNlKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIHN0
cmluZ3MpIHsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnN0cmluZ1ZhbHVlLCBzdHJp
bmcxXy50eXBlKCkpOwotCi0gIElzQ2hlY2sgY2hlY2tzOwotICBjaGVja3MuaXNTdHJpbmdfID0g
dHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyhlbXB0eVN0cmluZ18sIGNoZWNr
cykpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHN0cmluZ18sIGNoZWNrcykpOwot
ICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHN0cmluZzFfLCBjaGVja3MpKTsKLQotICAv
LyBFbXB0eSBzdHJpbmcgb2theQotICBKU09OVEVTVF9BU1NFUlQoZW1wdHlTdHJpbmdfLmlzQ29u
dmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLQotICAvLyBOb24tZW1wdHkgc3RyaW5nIG5v
dCBva2F5Ci0gIEpTT05URVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246
Om51bGxWYWx1ZSkpOwotCi0gIC8vIEFsd2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVChzdHJp
bmcxXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6c3RyaW5nVmFsdWUpKTsKLQotICAvLyBOZXZlciBv
a2F5Ci0gIEpTT05URVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om9i
amVjdFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghc3RyaW5nMV8uaXNDb252ZXJ0aWJsZVRv
KEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFzdHJpbmcxXy5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCFzdHJpbmcxXy5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghc3Ry
aW5nMV8uaXNDb252ZXJ0aWJsZVRvKEpzb246OnJlYWxWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoImEiLCBzdHJpbmcxXy5hc1N0cmluZygpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX1NUUklOR19FUVVBTCgiYSIsIHN0cmluZzFfLmFzQ1N0cmluZygpKTsKLX0KLQotSlNP
TlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIGJvb2xzKSB7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjpib29sZWFuVmFsdWUsIGZhbHNlXy50eXBlKCkpOwotCi0gIElzQ2hlY2sgY2hlY2tz
OwotICBjaGVja3MuaXNCb29sXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXMoZmFsc2VfLCBjaGVja3MpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh0cnVl
XywgY2hlY2tzKSk7Ci0KLSAgLy8gRmFsc2Ugb2theQotICBKU09OVEVTVF9BU1NFUlQoZmFsc2Vf
LmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLQotICAvLyBUcnVlIG5vdCBva2F5
Ci0gIEpTT05URVNUX0FTU0VSVCghdHJ1ZV8uaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1
ZSkpOwotCi0gIC8vIEFsd2F5cyBva2F5Ci0gIEpTT05URVNUX0FTU0VSVCh0cnVlXy5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlzQ29u
dmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVfLmlz
Q29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHRydWVf
LmlzQ29udmVydGlibGVUbyhKc29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
KHRydWVfLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotCi0gIC8vIE5ldmVy
IG9rYXkKLSAgSlNPTlRFU1RfQVNTRVJUKCF0cnVlXy5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJy
YXlWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXRydWVfLmlzQ29udmVydGlibGVUbyhKc29u
OjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB0cnVlXy5h
c0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLCB0cnVlXy5hc0ludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEsIHRydWVfLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKDEsIHRydWVfLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKDEsIHRydWVfLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgx
LjAsIHRydWVfLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMS4wLCB0cnVl
Xy5hc0Zsb2F0KCkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgZmFsc2VfLmFz
Qm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIGZhbHNlXy5hc0ludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIGZhbHNlXy5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgwLCBmYWxzZV8uYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoMCwgZmFsc2VfLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgwLjAsIGZhbHNlXy5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwg
ZmFsc2VfLmFzRmxvYXQoKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBpbnRl
Z2VycykgewotICBJc0NoZWNrIGNoZWNrczsKLSAgSnNvbjo6VmFsdWUgdmFsOwotCi0gIC8vIENv
bnZlcnNpb25zIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIHRoZSB2YWx1ZS4KLSAgSlNPTlRFU1RfQVNT
RVJUKEpzb246OlZhbHVlKDE3KS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVhbFZhbHVlKSk7Ci0g
IEpTT05URVNUX0FTU0VSVChKc29uOjpWYWx1ZSgxNykuaXNDb252ZXJ0aWJsZVRvKEpzb246OnN0
cmluZ1ZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVChKc29uOjpWYWx1ZSgxNykuaXNDb252ZXJ0
aWJsZVRvKEpzb246OmJvb2xlYW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZh
bHVlKDE3KS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJyYXlWYWx1ZSkpOwotICBKU09OVEVTVF9B
U1NFUlQoIUpzb246OlZhbHVlKDE3KS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6b2JqZWN0VmFsdWUp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQoSnNvbjo6VmFsdWUoMTdVKS5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6cmVhbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVChKc29uOjpWYWx1ZSgxN1UpLmlz
Q29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoSnNv
bjo6VmFsdWUoMTdVKS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpT
T05URVNUX0FTU0VSVCghSnNvbjo6VmFsdWUoMTdVKS5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6YXJy
YXlWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZhbHVlKDE3VSkuaXNDb252ZXJ0
aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKEpzb246OlZh
bHVlKDE3LjApLmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKEpzb246OlZhbHVlKDE3LjApLmlzQ29udmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1
ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoSnNvbjo6VmFsdWUoMTcuMCkuaXNDb252ZXJ0aWJsZVRv
KEpzb246OmJvb2xlYW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIUpzb246OlZhbHVlKDE3
LjApLmlzQ29udmVydGlibGVUbyhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VS
VCghSnNvbjo6VmFsdWUoMTcuMCkuaXNDb252ZXJ0aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7
Ci0KLSAgLy8gRGVmYXVsdCBpbnQKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6aW50VmFsdWUp
OwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7
Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hl
Y2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3Mu
aXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VS
VCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NF
UlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NF
UlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoMCwgdmFsLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwg
dmFsLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc1VJ
bnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNMYXJnZXN0VUludCgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoMC4wLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKGZhbHNlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KCIwIiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIERlZmF1bHQgdWludAotICB2YWwgPSBKc29u
OjpWYWx1ZShKc29uOjp1aW50VmFsdWUpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29u
Ojp1aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hl
Y2tzLmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5p
c1VJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0lu
dGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNO
dW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVj
a3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxs
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWlu
dFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0ludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
MCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZh
bC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRmxvYXQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMCIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBE
ZWZhdWx0IHJlYWwKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6cmVhbFZhbHVlKTsKLQotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBK
U09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0K
LSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3MuaXNV
SW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlz
RG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCgwLCB2YWwuYXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNM
YXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzVUludCgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoMC4wLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgwLjAsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmFs
c2UsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAuMCIs
IHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBaZXJvIChzaWduZWQgY29uc3RydWN0b3IgYXJnKQot
ICB2YWwgPSBKc29uOjpWYWx1ZSgwKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6
aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tz
LmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJ
bnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVn
cmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1l
cmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3Mp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFs
dWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFs
dWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZh
bHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0ludCgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgwLCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwg
dmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLjAsIHZhbC5h
c0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFsLmFzRmxvYXQoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMCIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBaZXJv
ICh1bnNpZ25lZCBjb25zdHJ1Y3RvciBhcmcpCi0gIHZhbCA9IEpzb246OlZhbHVlKDB1KTsKLQot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6dWludFZhbHVlLCB2YWwudHlwZSgpKTsKLQot
ICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0ludF8gPSB0cnVlOwotICBjaGVja3Mu
aXNJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJ
bnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNE
b3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9B
U1NFUlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKHZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgwLCB2YWwuYXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwu
YXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMCwgdmFsLmFzVUludCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoMC4wLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgwLjAsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
ZmFsc2UsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjAi
LCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gWmVybyAoZmxvYXRpbmctcG9pbnQgY29uc3RydWN0
b3IgYXJnKQotICB2YWwgPSBKc29uOjpWYWx1ZSgwLjApOwotCi0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2so
KTsKLSAgY2hlY2tzLmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0g
IGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNo
ZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBj
aGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXMo
dmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0lu
dCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTCgwLCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoMCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgwLjAsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDAuMCwgdmFs
LmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmYWxzZSwgdmFsLmFzQm9vbCgp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiMC4wIiwgdmFsLmFzU3RyaW5nKCkp
OwotCi0gIC8vIDJeMjAgKHNpZ25lZCBjb25zdHJ1Y3RvciBhcmcpCi0gIHZhbCA9IEpzb246OlZh
bHVlKDEgPDwgMjApOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1ZSwg
dmFsLnR5cGUoKSk7Ci0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50XyA9IHRy
dWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpT
T05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpT
T05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIx
MDQ4NTc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIDJeMjAgKHVuc2lnbmVkIGNvbnN0cnVj
dG9yIGFyZykKLSAgdmFsID0gSnNvbjo6VmFsdWUoSnNvbjo6VUludCgxIDw8IDIwKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnVpbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAg
Y2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlz
SW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50
NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91
YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFs
LmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
KDEgPDwgMjApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
KDEgPDwgMjApLCB2YWwuYXNVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwg
MjApLCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8
IDIwKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKDEgPDwgMjAp
LCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jv
b2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwNDg1NzYiLCB2YWwuYXNT
dHJpbmcoKSk7Ci0KLSAgLy8gMl4yMCAoZmxvYXRpbmctcG9pbnQgY29uc3RydWN0b3IgYXJnKQot
ICB2YWwgPSBKc29uOjpWYWx1ZSgoMSA8PCAyMCkgLyAxLjApOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hl
Y2soKTsKLSAgY2hlY2tzLmlzSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7
Ci0gIGNoZWNrcy5pc1VJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0g
IGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwot
ICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJs
ZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJs
ZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8PCAy
MCksIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFs
LmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFs
LmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzTGFy
Z2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoMSA8PCAyMCksIHZhbC5hc0Rv
dWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCgxIDw8IDIwKSwgdmFsLmFzRmxvYXQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09O
VEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKAotICAgICAgIjEwNDg1NzYuMCIsCi0gICAgICBub3Jt
YWxpemVGbG9hdGluZ1BvaW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3RyaW5n
KCkpKSk7Ci0KLSAgLy8gLTJeMjAKLSAgdmFsID0gSnNvbjo6VmFsdWUoLSgxIDw8IDIwKSk7Ci0K
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OmludFZhbHVlLCB2YWwudHlwZSgpKTsKLQot
ICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0ludF8gPSB0cnVlOwotICBjaGVja3Mu
aXNJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3Mu
aXNEb3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
KCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NF
UlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NF
UlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKC0oMSA8PCAyMCksIHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKC0oMSA8PCAyMCksIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgtKDEgPDwgMjApLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCgtKDEgPDwgMjApLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIi0x
MDQ4NTc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDMyIG1heAotICB2YWwgPSBKc29u
OjpWYWx1ZShraW50MzJtYXgpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRW
YWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJ
bnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzVUludF8g
PSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxf
ID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNf
ID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwot
Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVl
KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1heCwgdmFsLmFzSW50KCkpOwot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa2ludDMybWF4LCB2YWwuYXNMYXJnZXN0SW50KCkpOwot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa2ludDMybWF4LCB2YWwuYXNVSW50KCkpOwotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoa2ludDMybWF4LCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1heCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoa2ZpbnQzMm1heCwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5H
X0VRVUFMKCIyMTQ3NDgzNjQ3IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDMyIG1pbgot
ICB2YWwgPSBKc29uOjpWYWx1ZShraW50MzJtaW4pOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwot
ICBjaGVja3MuaXNJbnRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hl
Y2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNo
ZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2
YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8o
SnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRv
KEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChraW50MzJtaW4s
IHZhbC5hc0ludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1pbiwgdmFsLmFz
TGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQzMm1pbiwgdmFsLmFz
RG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoa2ludDMybWluLCB2YWwuYXNGbG9h
dCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIi0yMTQ3NDgzNjQ4IiwgdmFsLmFzU3RyaW5nKCkp
OwotCi0gIC8vIHVpbnQzMiBtYXgKLSAgdmFsID0gSnNvbjo6VmFsdWUoa3VpbnQzMm1heCk7Ci0K
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnVpbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0K
LSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVlOwotICBjaGVj
a3MuaXNVSW50XyA9IHRydWU7Ci0gIGNoZWNrcy5pc1VJbnQ2NF8gPSB0cnVlOwotICBjaGVja3Mu
aXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHZhbCwg
Y2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246
Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNv
bjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNv
bjo6dWludFZhbHVlKSk7Ci0KLSNpZm5kZWYgSlNPTl9OT19JTlQ2NAotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwoa3VpbnQzMm1heCwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSNlbmRpZgotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoa3VpbnQzMm1heCwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGt1aW50MzJtYXgsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoa3VpbnQzMm1heCwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoa2Z1aW50MzJtYXgsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwodHJ1ZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTCgiNDI5NDk2NzI5NSIsIHZhbC5hc1N0cmluZygpKTsKLQotI2lmZGVmIEpTT05fTk9fSU5U
NjQKLSAgLy8gaW50NjQgbWF4Ci0gIHZhbCA9IEpzb246OlZhbHVlKGRvdWJsZShraW50NjRtYXgp
KTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgp
KTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwot
ICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGli
bGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRp
YmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGRvdWJs
ZShraW50NjRtYXgpLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChm
bG9hdChraW50NjRtYXgpLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjku
MjIzMzdlKzE4IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIGludDY0IG1pbgotICB2YWwgPSBK
c29uOjpWYWx1ZShkb3VibGUoa2ludDY0bWluKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwot
ICBjaGVja3MuaXNEb3VibGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwot
ICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRF
U1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTChkb3VibGUoa2ludDY0bWluKSwgdmFsLmFzRG91YmxlKCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmxvYXQoa2ludDY0bWluKSwgdmFsLmFzRmxvYXQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09O
VEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCItOS4yMjMzN2UrMTgiLCB2YWwuYXNTdHJpbmcoKSk7
Ci0KLSAgLy8gdWludDY0IG1heAotICB2YWwgPSBKc29uOjpWYWx1ZShkb3VibGUoa3VpbnQ2NG1h
eCkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBl
KCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hl
Y2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGli
bGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZG91
YmxlKGt1aW50NjRtYXgpLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChmbG9hdChrdWludDY0bWF4KSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFM
KCIxLjg0NDY3ZSsxOSIsIHZhbC5hc1N0cmluZygpKTsKLSNlbHNlIC8vIGlmZGVmIEpTT05fTk9f
SU5UNjQKLSAgLy8gMl40MCAoc2lnbmVkIGNvbnN0cnVjdG9yIGFyZykKLSAgdmFsID0gSnNvbjo6
VmFsdWUoSnNvbjo6SW50NjQoMSkgPDwgNDApOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChK
c29uOjppbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBj
aGVja3MuaXNJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hl
Y2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNo
ZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2
YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRv
KEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVU
byhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246Oklu
dDY0KDEpIDw8IDQwKSwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgo
SnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzVUludDY0KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzTGFyZ2Vz
dFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDAp
LCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQo
MSkgPDwgNDApLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUs
IHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwOTk1MTE2
Mjc3NzYiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gMl40MCAodW5zaWduZWQgY29uc3RydWN0
b3IgYXJnKQotICB2YWwgPSBKc29uOjpWYWx1ZShKc29uOjpVSW50NjQoMSkgPDwgNDApOwotCi0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjp1aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0g
IGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0gIGNoZWNr
cy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05U
RVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NF
UlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FT
U0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9B
U1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKChKc29uOjpJbnQ2NCgxKSA8PCA0MCksIHZhbC5hc0ludDY0KCkpOwot
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzTGFy
Z2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKChKc29uOjpJbnQ2NCgxKSA8PCA0
MCksIHZhbC5hc1VJbnQ2NCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKChKc29uOjpJbnQ2
NCgxKSA8PCA0MCksIHZhbC5hc0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKCIxMDk5NTExNjI3Nzc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8v
IDJeNDAgKGZsb2F0aW5nLXBvaW50IGNvbnN0cnVjdG9yIGFyZykKLSAgdmFsID0gSnNvbjo6VmFs
dWUoKEpzb246OkludDY0KDEpIDw8IDQwKSAvIDEuMCk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygp
OwotICBjaGVja3MuaXNJbnQ2NF8gPSB0cnVlOwotICBjaGVja3MuaXNVSW50NjRfID0gdHJ1ZTsK
LSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hl
Y2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGli
bGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpz
b246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCgoSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFzVUludDY0KCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoKEpzb246OkludDY0KDEpIDw8IDQwKSwgdmFsLmFz
TGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkg
PDwgNDApLCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6
SW50NjQoMSkgPDwgNDApLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoCi0g
ICAgICAiMTA5OTUxMTYyNzc3Ni4wIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIo
SnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyAtMl40MAot
ICB2YWwgPSBKc29uOjpWYWx1ZSgtKEpzb246OkludDY0KDEpIDw8IDQwKSk7Ci0KLSAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKEpzb246OmludFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3Mg
PSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVn
cmFsXyA9IHRydWU7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1l
cmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3Mp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRW
YWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWlu
dFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0oSnNvbjo6SW50NjQoMSkgPDwg
NDApLCB2YWwuYXNJbnQ2NCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0oSnNvbjo6SW50
NjQoMSkgPDwgNDApLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoLShKc29uOjpJbnQ2NCgxKSA8PCA0MCksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKC0oSnNvbjo6SW50NjQoMSkgPDwgNDApLCB2YWwuYXNGbG9hdCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoIi0xMDk5NTExNjI3Nzc2IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0g
IC8vIGludDY0IG1heAotICB2YWwgPSBKc29uOjpWYWx1ZShKc29uOjpJbnQ2NChraW50NjRtYXgp
KTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6aW50VmFsdWUsIHZhbC50eXBlKCkp
OwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzSW50NjRfID0gdHJ1ZTsKLSAg
Y2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0g
IGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQ2NG1heCwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChraW50NjRtYXgsIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChraW50NjRtYXgsIHZhbC5hc1VJbnQ2NCgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGtpbnQ2NG1heCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTChkb3VibGUoa2ludDY0bWF4KSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoZmxvYXQoa2ludDY0bWF4KSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKCI5MjIzMzcyMDM2ODU0Nzc1ODA3IiwgdmFsLmFzU3RyaW5nKCkpOwot
Ci0gIC8vIGludDY0IG1heCAoZmxvYXRpbmcgcG9pbnQgY29uc3RydWN0b3IpLiBOb3RlIHRoYXQg
a2ludDY0bWF4IGlzIG5vdCBleGFjdGx5Ci0gIC8vIHJlcHJlc2VudGFibGUgYXMgYSBkb3VibGUs
IGFuZCB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gYmUgaGlnaGVyLgotICB2YWwgPSBKc29uOjpWYWx1
ZShkb3VibGUoa2ludDY0bWF4KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJl
YWxWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3Mu
aXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tz
LmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VS
VCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FT
U0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoSnNvbjo6VUludDY0KDEpIDw8IDYzLCB2YWwuYXNVSW50NjQoKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpVSW50NjQoMSkgPDwgNjMsIHZhbC5hc0xhcmdl
c3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodWludDY0VG9Eb3VibGUoSnNvbjo6
VUludDY0KDEpIDw8IDYzKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoZmxvYXQoSnNvbjo6VUludDY0KDEpIDw8IDYzKSwgdmFsLmFzRmxvYXQoKSk7Ci0KLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9TVFJJTkdfRVFVQUwoCi0gICAgICAiOS4yMjMzNzIwMzY4NTQ3NzU4ZSsxOCIsCi0gICAgICBu
b3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3Ry
aW5nKCkpKSk7Ci0KLSAgLy8gaW50NjQgbWluCi0gIHZhbCA9IEpzb246OlZhbHVlKEpzb246Oklu
dDY0KGtpbnQ2NG1pbikpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjppbnRWYWx1
ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNJbnQ2
NF8gPSB0cnVlOwotICBjaGVja3MuaXNJbnRlZ3JhbF8gPSB0cnVlOwotICBjaGVja3MuaXNEb3Vi
bGVfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NF
UlRfUFJFRChjaGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwu
aXNDb252ZXJ0aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6aW50VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2
YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTChraW50NjRtaW4sIHZhbC5hc0ludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoa2ludDY0bWluLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoZG91YmxlKGtpbnQ2NG1pbiksIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKGZsb2F0KGtpbnQ2NG1pbiksIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwodHJ1ZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTCgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiLCB2YWwuYXNTdHJpbmcoKSk7Ci0KLSAgLy8gaW50
NjQgbWluIChmbG9hdGluZyBwb2ludCBjb25zdHJ1Y3RvcikuIE5vdGUgdGhhdCBraW50NjRtaW4g
KmlzKiBleGFjdGx5Ci0gIC8vIHJlcHJlc2VudGFibGUgYXMgYSBkb3VibGUuCi0gIHZhbCA9IEpz
b246OlZhbHVlKGRvdWJsZShraW50NjRtaW4pKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0g
IGNoZWNrcy5pc0ludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7Ci0g
IGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVT
VF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKGtpbnQ2NG1pbiwgdmFsLmFzSW50NjQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChraW50NjRtaW4sIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgtOTIyMzM3MjAzNjg1NDc3NTgwOC4wLCB2YWwuYXNEb3VibGUoKSk7
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtOTIyMzM3MjAzNjg1NDc3NTgwOC4wLCB2YWwuYXNG
bG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoCi0gICAgICAiLTkuMjIzMzcyMDM2ODU0Nzc1
OGUrMTgiLAotICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cihKc29uVGVzdDo6VG9Kc29u
U3RyaW5nKHZhbC5hc1N0cmluZygpKSkpOwotCi0gIC8vIDEwXjE5Ci0gIGNvbnN0IGF1dG8gdGVu
X3RvXzE5ID0gc3RhdGljX2Nhc3Q8SnNvbjo6VUludDY0PigxZTE5KTsKLSAgdmFsID0gSnNvbjo6
VmFsdWUoSnNvbjo6VUludDY0KHRlbl90b18xOSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjp1aW50VmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNrcyA9IElzQ2hlY2soKTsK
LSAgY2hlY2tzLmlzVUludDY0XyA9IHRydWU7Ci0gIGNoZWNrcy5pc0ludGVncmFsXyA9IHRydWU7
Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09O
VEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpT
T05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBK
U09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0K
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRlbl90b18xOSwgdmFsLmFzVUludDY0KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwodGVuX3RvXzE5LCB2YWwuYXNMYXJnZXN0VUludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKHVpbnQ2NFRvRG91YmxlKHRlbl90b18xOSksIHZhbC5hc0Rv
dWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0KHVpbnQ2NFRvRG91YmxlKHRl
bl90b18xOSkpLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUs
IHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjEwMDAwMDAw
MDAwMDAwMDAwMDAwIiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIDEwXjE5IChkb3VibGUgY29u
c3RydWN0b3IpLiBOb3RlIHRoYXQgMTBeMTkgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZQot
ICAvLyBhcyBhIGRvdWJsZS4KLSAgdmFsID0gSnNvbjo6VmFsdWUodWludDY0VG9Eb3VibGUodGVu
X3RvXzE5KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1ZSwgdmFs
LnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNVSW50NjRfID0g
dHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9
IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BS
RUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXND
b252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlz
Q29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoMWUxOSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMWUxOSwg
dmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29s
KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKAotICAgICAgIjFlKzE5IiwKLSAg
ICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwu
YXNTdHJpbmcoKSkpKTsKLQotICAvLyB1aW50NjQgbWF4Ci0gIHZhbCA9IEpzb246OlZhbHVlKEpz
b246OlVJbnQ2NChrdWludDY0bWF4KSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246
OnVpbnRWYWx1ZSwgdmFsLnR5cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVj
a3MuaXNVSW50NjRfID0gdHJ1ZTsKLSAgY2hlY2tzLmlzSW50ZWdyYWxfID0gdHJ1ZTsKLSAgY2hl
Y2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNP
TlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FT
U0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNU
X0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLQotICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoa3VpbnQ2NG1heCwgdmFsLmFzVUludDY0KCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoa3VpbnQ2NG1heCwgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCh1aW50NjRUb0RvdWJsZShrdWludDY0bWF4KSwgdmFsLmFzRG91Ymxl
KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZmxvYXQodWludDY0VG9Eb3VibGUoa3VpbnQ2
NG1heCkpLCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZh
bC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIjE4NDQ2NzQ0MDcz
NzA5NTUxNjE1IiwgdmFsLmFzU3RyaW5nKCkpOwotCi0gIC8vIHVpbnQ2NCBtYXggKGZsb2F0aW5n
IHBvaW50IGNvbnN0cnVjdG9yKS4gTm90ZSB0aGF0IGt1aW50NjRtYXggaXMgbm90Ci0gIC8vIGV4
YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGRvdWJsZSwgYW5kIHdpbGwgYmUgcm91bmRlZCB1cCB0
byBiZSBoaWdoZXIuCi0gIHZhbCA9IEpzb246OlZhbHVlKHVpbnQ2NFRvRG91YmxlKGt1aW50NjRt
YXgpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlw
ZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVl
OwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNo
ZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRp
YmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVy
dGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDE4
NDQ2NzQ0MDczNzA5NTUxNjE2LjAsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDE4NDQ2NzQ0MDczNzA5NTUxNjE2LjAsIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwodHJ1ZSwgdmFsLmFzQm9vbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NU
UklOR19FUVVBTCgKLSAgICAgICIxLjg0NDY3NDQwNzM3MDk1NTJlKzE5IiwKLSAgICAgIG5vcm1h
bGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmco
KSkpKTsKLSNlbmRpZgotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgbm9uSW50ZWdl
cnMpIHsKLSAgSXNDaGVjayBjaGVja3M7Ci0gIEpzb246OlZhbHVlIHZhbDsKLQotICAvLyBTbWFs
bCBwb3NpdGl2ZSBudW1iZXIKLSAgdmFsID0gSnNvbjo6VmFsdWUoMS41KTsKLQotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZhbHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3Mg
PSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0RvdWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1l
cmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3Mp
KTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1
ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFs
dWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6cmVhbFZh
bHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmJvb2xl
YW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpz
dHJpbmdWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZlcnRpYmxlVG8oSnNv
bjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVU
byhKc29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLjUsIHZh
bC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEuNSwgdmFsLmFzRmxvYXQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLCB2YWwuYXNJbnQoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCgxLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoMSwgdmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDEsIHZhbC5h
c0xhcmdlc3RVSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgdmFsLmFzQm9v
bCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKCIxLjUiLCB2YWwuYXNTdHJpbmcoKSk7Ci0K
LSAgLy8gU21hbGwgbmVnYXRpdmUgbnVtYmVyCi0gIHZhbCA9IEpzb246OlZhbHVlKC0xLjUpOwot
Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwot
Ci0gIGNoZWNrcyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNo
ZWNrcy5pc051bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2
YWwsIGNoZWNrcykpOwotCi0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpz
b246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpz
b246OnJlYWxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpib29sZWFuVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxl
VG8oSnNvbjo6c3RyaW5nVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246Om51bGxWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5pc0NvbnZl
cnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlz
Q29udmVydGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9F
UVVBTCgtMS41LCB2YWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMS41
LCB2YWwuYXNGbG9hdCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0xLCB2YWwuYXNJbnQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgiLTEuNSIsIHZhbC5hc1N0cmluZygpKTsKLQotICAvLyBBIGJpdCBvdmVyIGlu
dDMyIG1heAotICB2YWwgPSBKc29uOjpWYWx1ZShraW50MzJtYXggKyAwLjUpOwotCi0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChKc29uOjpyZWFsVmFsdWUsIHZhbC50eXBlKCkpOwotCi0gIGNoZWNr
cyA9IElzQ2hlY2soKTsKLSAgY2hlY2tzLmlzRG91YmxlXyA9IHRydWU7Ci0gIGNoZWNrcy5pc051
bWVyaWNfID0gdHJ1ZTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJcyh2YWwsIGNoZWNr
cykpOwotCi0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnVpbnRW
YWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFs
VmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9v
bGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246
OnN0cmluZ1ZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhK
c29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRv
KEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVU
byhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFsLmlzQ29udmVydGli
bGVUbyhKc29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgyMTQ3
NDgzNjQ3LjUsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0
KDIxNDc0ODM2NDcuNSksIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
MjE0NzQ4MzY0N1UsIHZhbC5hc1VJbnQoKSk7Ci0jaWZkZWYgSlNPTl9IQVNfSU5UNjQKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDIxNDc0ODM2NDdMLCB2YWwuYXNMYXJnZXN0SW50KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoMjE0NzQ4MzY0N1UsIHZhbC5hc0xhcmdlc3RVSW50KCkpOwot
I2VuZGlmCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCh0cnVlLCB2YWwuYXNCb29sKCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoCi0gICAgICAiMjE0NzQ4MzY0Ny41IiwKLSAgICAgIG5vcm1h
bGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmco
KSkpKTsKLQotICAvLyBBIGJpdCB1bmRlciBpbnQzMiBtaW4KLSAgdmFsID0gSnNvbjo6VmFsdWUo
a2ludDMybWluIC0gMC41KTsKLQotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6cmVhbFZh
bHVlLCB2YWwudHlwZSgpKTsKLQotICBjaGVja3MgPSBJc0NoZWNrKCk7Ci0gIGNoZWNrcy5pc0Rv
dWJsZV8gPSB0cnVlOwotICBjaGVja3MuaXNOdW1lcmljXyA9IHRydWU7Ci0gIEpTT05URVNUX0FT
U0VSVF9QUkVEKGNoZWNrSXModmFsLCBjaGVja3MpKTsKLQotICBKU09OVEVTVF9BU1NFUlQodmFs
LmlzQ29udmVydGlibGVUbyhKc29uOjpyZWFsVmFsdWUpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6Ym9vbGVhblZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VS
VCh2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OnN0cmluZ1ZhbHVlKSk7Ci0gIEpTT05URVNUX0FT
U0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpudWxsVmFsdWUpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmludFZhbHVlKSk7Ci0gIEpTT05URVNU
X0FTU0VSVCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjp1aW50VmFsdWUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246OmFycmF5VmFsdWUpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCF2YWwuaXNDb252ZXJ0aWJsZVRvKEpzb246Om9iamVjdFZhbHVlKSk7Ci0K
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC0yMTQ3NDgzNjQ4LjUsIHZhbC5hc0RvdWJsZSgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZsb2F0KC0yMTQ3NDgzNjQ4LjUpLCB2YWwuYXNGbG9h
dCgpKTsKLSNpZmRlZiBKU09OX0hBU19JTlQ2NAotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoLShK
c29uOjpJbnQ2NCgxKSA8PCAzMSksIHZhbC5hc0xhcmdlc3RJbnQoKSk7Ci0jZW5kaWYKLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9FUVVBTCgKLSAgICAgICItMjE0NzQ4MzY0OC41IiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5n
UG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAv
LyBBIGJpdCBvdmVyIHVpbnQzMiBtYXgKLSAgdmFsID0gSnNvbjo6VmFsdWUoa3VpbnQzMm1heCAr
IDAuNSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OnJlYWxWYWx1ZSwgdmFsLnR5
cGUoKSk7Ci0KLSAgY2hlY2tzID0gSXNDaGVjaygpOwotICBjaGVja3MuaXNEb3VibGVfID0gdHJ1
ZTsKLSAgY2hlY2tzLmlzTnVtZXJpY18gPSB0cnVlOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChj
aGVja0lzKHZhbCwgY2hlY2tzKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJUKHZhbC5pc0NvbnZlcnRp
YmxlVG8oSnNvbjo6cmVhbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCh2YWwuaXNDb252ZXJ0
aWJsZVRvKEpzb246OmJvb2xlYW5WYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQodmFsLmlzQ29u
dmVydGlibGVUbyhKc29uOjpzdHJpbmdWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZhbC5p
c0NvbnZlcnRpYmxlVG8oSnNvbjo6bnVsbFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCghdmFs
LmlzQ29udmVydGlibGVUbyhKc29uOjppbnRWYWx1ZSkpOwotICBKU09OVEVTVF9BU1NFUlQoIXZh
bC5pc0NvbnZlcnRpYmxlVG8oSnNvbjo6dWludFZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VSVCgh
dmFsLmlzQ29udmVydGlibGVUbyhKc29uOjphcnJheVZhbHVlKSk7Ci0gIEpTT05URVNUX0FTU0VS
VCghdmFsLmlzQ29udmVydGlibGVUbyhKc29uOjpvYmplY3RWYWx1ZSkpOwotCi0gIEpTT05URVNU
X0FTU0VSVF9FUVVBTCg0Mjk0OTY3Mjk1LjUsIHZhbC5hc0RvdWJsZSgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKGZsb2F0KDQyOTQ5NjcyOTUuNSksIHZhbC5hc0Zsb2F0KCkpOwotI2lmZGVm
IEpTT05fSEFTX0lOVDY0Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgoSnNvbjo6SW50NjQoMSkg
PDwgMzIpIC0gMSwgdmFsLmFzTGFyZ2VzdEludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFM
KChKc29uOjpVSW50NjQoMSkgPDwgMzIpIC0gSnNvbjo6VUludDY0KDEpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsLmFzTGFyZ2VzdFVJbnQoKSk7Ci0jZW5kaWYKLSAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKHRydWUsIHZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgK
LSAgICAgICI0Mjk0OTY3Mjk1LjUiLAotICAgICAgbm9ybWFsaXplRmxvYXRpbmdQb2ludFN0cihK
c29uVGVzdDo6VG9Kc29uU3RyaW5nKHZhbC5hc1N0cmluZygpKSkpOwotCi0gIHZhbCA9IEpzb246
OlZhbHVlKDEuMjM0NTY3ODkwMTIzNCk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwo
Ci0gICAgICAiMS4yMzQ1Njc4OTAxMjM0MDAxIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0aW5nUG9p
bnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQotICAvLyBB
IDE2LWRpZ2l0IGZsb2F0aW5nIHBvaW50IG51bWJlci4KLSAgdmFsID0gSnNvbjo6VmFsdWUoMjE5
OTAyMzI1NTU1MjAwMC4wZik7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9hdCgyMTk5MDIz
MjU1NTUyMDAwLjBmKSwgdmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdf
RVFVQUwoCi0gICAgICAiMjE5OTAyMzI1NTU1MjAwMC4wIiwKLSAgICAgIG5vcm1hbGl6ZUZsb2F0
aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmcoKSkpKTsKLQot
ICAvLyBBIHZlcnkgbGFyZ2UgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgotICB2YWwgPSBKc29uOjpW
YWx1ZSgzLjQwMjgyMzQ2NjM4NTI4OWUzOCk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChmbG9h
dCgzLjQwMjgyMzQ2NjM4NTI4OWUzOCksIHZhbC5hc0Zsb2F0KCkpOwotICBKU09OVEVTVF9BU1NF
UlRfU1RSSU5HX0VRVUFMKAotICAgICAgIjMuNDAyODIzNDY2Mzg1Mjg5ZSszOCIsCi0gICAgICBu
b3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKEpzb25UZXN0OjpUb0pzb25TdHJpbmcodmFsLmFzU3Ry
aW5nKCkpKSk7Ci0KLSAgLy8gQW4gZXZlbiBsYXJnZXIgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgot
ICB2YWwgPSBKc29uOjpWYWx1ZSgxLjIzNDU2NzhlMzAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKGRvdWJsZSgxLjIzNDU2NzhlMzAwKSwgdmFsLmFzRG91YmxlKCkpOwotICBKU09OVEVTVF9B
U1NFUlRfU1RSSU5HX0VRVUFMKAotICAgICAgIjEuMjM0NTY3OGUrMzAwIiwKLSAgICAgIG5vcm1h
bGl6ZUZsb2F0aW5nUG9pbnRTdHIoSnNvblRlc3Q6OlRvSnNvblN0cmluZyh2YWwuYXNTdHJpbmco
KSkpKTsKLX0KLQotdm9pZCBWYWx1ZVRlc3Q6OmNoZWNrQ29uc3RNZW1iZXJDb3VudChjb25zdCBK
c29uOjpWYWx1ZSYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBleHBlY3RlZENvdW50KSB7Ci0gIHVuc2lnbmVkIGludCBjb3VudCA9IDA7
Ci0gIEpzb246OlZhbHVlOjpjb25zdF9pdGVyYXRvciBpdEVuZCA9IHZhbHVlLmVuZCgpOwotICBm
b3IgKEpzb246OlZhbHVlOjpjb25zdF9pdGVyYXRvciBpdCA9IHZhbHVlLmJlZ2luKCk7IGl0ICE9
IGl0RW5kOyArK2l0KSB7Ci0gICAgKytjb3VudDsKLSAgfQotICBKU09OVEVTVF9BU1NFUlRfRVFV
QUwoZXhwZWN0ZWRDb3VudCwgY291bnQpIDw8ICJKc29uOjpWYWx1ZTo6Y29uc3RfaXRlcmF0b3Ii
OwotfQotCi12b2lkIFZhbHVlVGVzdDo6Y2hlY2tNZW1iZXJDb3VudChKc29uOjpWYWx1ZSYgdmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhwZWN0
ZWRDb3VudCkgewotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZXhwZWN0ZWRDb3VudCwgdmFsdWUu
c2l6ZSgpKTsKLQotICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwotICBKc29uOjpWYWx1ZTo6aXRl
cmF0b3IgaXRFbmQgPSB2YWx1ZS5lbmQoKTsKLSAgZm9yIChKc29uOjpWYWx1ZTo6aXRlcmF0b3Ig
aXQgPSB2YWx1ZS5iZWdpbigpOyBpdCAhPSBpdEVuZDsgKytpdCkgewotICAgICsrY291bnQ7Ci0g
IH0KLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGV4cGVjdGVkQ291bnQsIGNvdW50KSA8PCAiSnNv
bjo6VmFsdWU6Oml0ZXJhdG9yIjsKLQotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0NvbnN0
TWVtYmVyQ291bnQodmFsdWUsIGV4cGVjdGVkQ291bnQpKTsKLX0KLQotVmFsdWVUZXN0OjpJc0No
ZWNrOjpJc0NoZWNrKCkKLQotICAgID0gZGVmYXVsdDsKLQotdm9pZCBWYWx1ZVRlc3Q6OmNoZWNr
SXMoY29uc3QgSnNvbjo6VmFsdWUmIHZhbHVlLCBjb25zdCBJc0NoZWNrJiBjaGVjaykgewotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoY2hlY2suaXNPYmplY3RfLCB2YWx1ZS5pc09iamVjdCgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzQXJyYXlfLCB2YWx1ZS5pc0FycmF5KCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoY2hlY2suaXNCb29sXywgdmFsdWUuaXNCb29sKCkp
OwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoY2hlY2suaXNEb3VibGVfLCB2YWx1ZS5pc0RvdWJs
ZSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzSW50XywgdmFsdWUuaXNJbnQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChjaGVjay5pc1VJbnRfLCB2YWx1ZS5pc1VJbnQo
KSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChjaGVjay5pc0ludGVncmFsXywgdmFsdWUuaXNJ
bnRlZ3JhbCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzTnVtZXJpY18sIHZh
bHVlLmlzTnVtZXJpYygpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGNoZWNrLmlzU3RyaW5n
XywgdmFsdWUuaXNTdHJpbmcoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChjaGVjay5pc051
bGxfLCB2YWx1ZS5pc051bGwoKSk7Ci0KLSNpZmRlZiBKU09OX0hBU19JTlQ2NAotICBKU09OVEVT
VF9BU1NFUlRfRVFVQUwoY2hlY2suaXNJbnQ2NF8sIHZhbHVlLmlzSW50NjQoKSk7Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTChjaGVjay5pc1VJbnQ2NF8sIHZhbHVlLmlzVUludDY0KCkpOwotI2Vs
c2UKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCB2YWx1ZS5pc0ludDY0KCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoZmFsc2UsIHZhbHVlLmlzVUludDY0KCkpOwotI2VuZGlmCi19
Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlTnVsbCkgewotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwoSnNvbjo6VmFsdWUoKSwgSnNvbjo6VmFsdWUoKSkp
OwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgY29tcGFyZUludCkgewotICBKU09O
VEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcygwLCAxMCkpOwotICBKU09OVEVTVF9BU1NFUlRf
UFJFRChjaGVja0lzRXF1YWwoMTAsIDEwKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXNFcXVhbCgtMTAsIC0xMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcygt
MTAsIDApKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIGNvbXBhcmVVSW50KSB7
Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKDB1LCAxMHUpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1BSRUQoY2hlY2tJc0xlc3MoMHUsIEpzb246OlZhbHVlOjptYXhVSW50KSk7Ci0g
IEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbCgxMHUsIDEwdSkpOwotfQotCi1KU09O
VEVTVF9GSVhUVVJFKFZhbHVlVGVzdCwgY29tcGFyZURvdWJsZSkgewotICBKU09OVEVTVF9BU1NF
UlRfUFJFRChjaGVja0lzTGVzcygwLjAsIDEwLjApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQo
Y2hlY2tJc0VxdWFsKDEwLjAsIDEwLjApKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJ
c0VxdWFsKC0xMC4wLCAtMTAuMCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVz
cygtMTAuMCwgMC4wKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJl
U3RyaW5nKSB7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKCIiLCAiICIpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0xlc3MoIiIsICJhIikpOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcygiYWJjZCIsICJ6eXVpIikpOwotICBKU09OVEVTVF9B
U1NFUlRfUFJFRChjaGVja0lzTGVzcygiYWJjIiwgImFiY2QiKSk7Ci0gIEpTT05URVNUX0FTU0VS
VF9QUkVEKGNoZWNrSXNFcXVhbCgiYWJjZCIsICJhYmNkIikpOwotICBKU09OVEVTVF9BU1NFUlRf
UFJFRChjaGVja0lzRXF1YWwoIiAiLCAiICIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hl
Y2tJc0xlc3MoIkFCQ0QiLCAiYWJjZCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJ
c0VxdWFsKCJBQkNEIiwgIkFCQ0QiKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0
LCBjb21wYXJlQm9vbGVhbikgewotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhm
YWxzZSwgdHJ1ZSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwoZmFsc2Us
IGZhbHNlKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbCh0cnVlLCB0cnVl
KSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBjb21wYXJlQXJyYXkpIHsKLSAg
Ly8gYXJyYXkgY29tcGFyZSBzaXplIHRoZW4gY29udGVudAotICBKc29uOjpWYWx1ZSBlbXB0eUFy
cmF5KEpzb246OmFycmF5VmFsdWUpOwotICBKc29uOjpWYWx1ZSBsMWFBcnJheTsKLSAgbDFhQXJy
YXkuYXBwZW5kKDApOwotICBKc29uOjpWYWx1ZSBsMWJBcnJheTsKLSAgbDFiQXJyYXkuYXBwZW5k
KDEwKTsKLSAgSnNvbjo6VmFsdWUgbDJhQXJyYXk7Ci0gIGwyYUFycmF5LmFwcGVuZCgwKTsKLSAg
bDJhQXJyYXkuYXBwZW5kKDApOwotICBKc29uOjpWYWx1ZSBsMmJBcnJheTsKLSAgbDJiQXJyYXku
YXBwZW5kKDApOwotICBsMmJBcnJheS5hcHBlbmQoMTApOwotICBKU09OVEVTVF9BU1NFUlRfUFJF
RChjaGVja0lzTGVzcyhlbXB0eUFycmF5LCBsMWFBcnJheSkpOwotICBKU09OVEVTVF9BU1NFUlRf
UFJFRChjaGVja0lzTGVzcyhlbXB0eUFycmF5LCBsMmFBcnJheSkpOwotICBKU09OVEVTVF9BU1NF
UlRfUFJFRChjaGVja0lzTGVzcyhsMWFBcnJheSwgbDJhQXJyYXkpKTsKLSAgSlNPTlRFU1RfQVNT
RVJUX1BSRUQoY2hlY2tJc0xlc3MobDJhQXJyYXksIGwyYkFycmF5KSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9QUkVEKGNoZWNrSXNFcXVhbChlbXB0eUFycmF5LCBKc29uOjpWYWx1ZShlbXB0eUFycmF5
KSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwobDFhQXJyYXksIEpzb246
OlZhbHVlKGwxYUFycmF5KSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwo
bDJiQXJyYXksIEpzb246OlZhbHVlKGwyYkFycmF5KSkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJF
KFZhbHVlVGVzdCwgY29tcGFyZU9iamVjdCkgewotICAvLyBvYmplY3QgY29tcGFyZSBzaXplIHRo
ZW4gY29udGVudAotICBKc29uOjpWYWx1ZSBlbXB0eU9iamVjdChKc29uOjpvYmplY3RWYWx1ZSk7
Ci0gIEpzb246OlZhbHVlIGwxYU9iamVjdDsKLSAgbDFhT2JqZWN0WyJrZXkxIl0gPSAwOwotICBK
c29uOjpWYWx1ZSBsMWJPYmplY3Q7Ci0gIGwxYU9iamVjdFsia2V5MSJdID0gMTA7Ci0gIEpzb246
OlZhbHVlIGwyYU9iamVjdDsKLSAgbDJhT2JqZWN0WyJrZXkxIl0gPSAwOwotICBsMmFPYmplY3Rb
ImtleTIiXSA9IDA7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKGVtcHR5T2Jq
ZWN0LCBsMWFPYmplY3QpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1BSRUQoY2hlY2tJc0xlc3MoZW1w
dHlPYmplY3QsIGwyYU9iamVjdCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVz
cyhsMWFPYmplY3QsIGwyYU9iamVjdCkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lz
RXF1YWwoZW1wdHlPYmplY3QsIEpzb246OlZhbHVlKGVtcHR5T2JqZWN0KSkpOwotICBKU09OVEVT
VF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwobDFhT2JqZWN0LCBKc29uOjpWYWx1ZShsMWFPYmpl
Y3QpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNFcXVhbChsMmFPYmplY3QsIEpz
b246OlZhbHVlKGwyYU9iamVjdCkpKTsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3Qs
IGNvbXBhcmVUeXBlKSB7Ci0gIC8vIG9iamVjdCBvZiBkaWZmZXJlbnQgdHlwZSBhcmUgb3JkZXJl
ZCBhY2NvcmRpbmcgdG8gdGhlaXIgdHlwZQotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lz
TGVzcyhKc29uOjpWYWx1ZSgpLCBKc29uOjpWYWx1ZSgxKSkpOwotICBKU09OVEVTVF9BU1NFUlRf
UFJFRChjaGVja0lzTGVzcyhKc29uOjpWYWx1ZSgxKSwgSnNvbjo6VmFsdWUoMXUpKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9QUkVEKGNoZWNrSXNMZXNzKEpzb246OlZhbHVlKDF1KSwgSnNvbjo6VmFs
dWUoMS4wKSkpOwotICBKU09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzTGVzcyhKc29uOjpWYWx1
ZSgxLjApLCBKc29uOjpWYWx1ZSgiYSIpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXNMZXNzKEpzb246OlZhbHVlKCJhIiksIEpzb246OlZhbHVlKHRydWUpKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9QUkVEKAotICAgICAgY2hlY2tJc0xlc3MoSnNvbjo6VmFsdWUodHJ1ZSksIEpzb246
OlZhbHVlKEpzb246OmFycmF5VmFsdWUpKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9QUkVEKGNoZWNr
SXNMZXNzKEpzb246OlZhbHVlKEpzb246OmFycmF5VmFsdWUpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBKc29uOjpWYWx1ZShKc29uOjpvYmplY3RWYWx1ZSkpKTsKLX0KLQot
SlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIENvcHlPYmplY3QpIHsKLSAgSnNvbjo6VmFsdWUg
YXJyYXlWYWw7Ci0gIGFycmF5VmFsLmFwcGVuZCgidmFsMSIpOwotICBhcnJheVZhbC5hcHBlbmQo
InZhbDIiKTsKLSAgYXJyYXlWYWwuYXBwZW5kKCJ2YWwzIik7Ci0gIEpzb246OlZhbHVlIHN0cmlu
Z1ZhbCgic3RyaW5nIHZhbHVlIik7Ci0gIEpzb246OlZhbHVlIGNvcHkxLCBjb3B5MjsKLSAgewot
ICAgIEpzb246OlZhbHVlIGFycmF5Q29weSwgc3RyaW5nQ29weTsKLSAgICBhcnJheUNvcHkuY29w
eShhcnJheVZhbCk7Ci0gICAgc3RyaW5nQ29weS5jb3B5KHN0cmluZ1ZhbCk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX1BSRUQoY2hlY2tJc0VxdWFsKGFycmF5Q29weSwgYXJyYXlWYWwpKTsKLSAgICBK
U09OVEVTVF9BU1NFUlRfUFJFRChjaGVja0lzRXF1YWwoc3RyaW5nQ29weSwgc3RyaW5nVmFsKSk7
Ci0gICAgYXJyYXlDb3B5LmFwcGVuZCgidmFsNCIpOwotICAgIEpTT05URVNUX0FTU0VSVChhcnJh
eUNvcHkuc2l6ZSgpID09IDQpOwotICAgIGFycmF5VmFsLmFwcGVuZCgibmV3NCIpOwotICAgIGFy
cmF5VmFsLmFwcGVuZCgibmV3NSIpOwotICAgIEpTT05URVNUX0FTU0VSVChhcnJheVZhbC5zaXpl
KCkgPT0gNSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKCEoYXJyYXlDb3B5ID09IGFycmF5VmFsKSk7
Ci0gICAgc3RyaW5nQ29weSA9ICJhbm90aGVyIHN0cmluZyI7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
KCEoc3RyaW5nQ29weSA9PSBzdHJpbmdWYWwpKTsKLSAgICBjb3B5MS5jb3B5KGFycmF5Q29weSk7
Ci0gICAgY29weTIuY29weShzdHJpbmdDb3B5KTsKLSAgfQotICBKU09OVEVTVF9BU1NFUlQoYXJy
YXlWYWwuc2l6ZSgpID09IDUpOwotICBKU09OVEVTVF9BU1NFUlQoc3RyaW5nVmFsID09ICJzdHJp
bmcgdmFsdWUiKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGNvcHkxLnNpemUoKSA9PSA0KTsKLSAgSlNP
TlRFU1RfQVNTRVJUKGNvcHkyID09ICJhbm90aGVyIHN0cmluZyIpOwotICBjb3B5MS5jb3B5KHN0
cmluZ1ZhbCk7Ci0gIEpTT05URVNUX0FTU0VSVChjb3B5MSA9PSAic3RyaW5nIHZhbHVlIik7Ci0g
IGNvcHkyLmNvcHkoYXJyYXlWYWwpOwotICBKU09OVEVTVF9BU1NFUlQoY29weTIuc2l6ZSgpID09
IDUpOwotfQotCi12b2lkIFZhbHVlVGVzdDo6Y2hlY2tJc0xlc3MoY29uc3QgSnNvbjo6VmFsdWUm
IHgsIGNvbnN0IEpzb246OlZhbHVlJiB5KSB7Ci0gIEpTT05URVNUX0FTU0VSVCh4IDwgeSk7Ci0g
IEpTT05URVNUX0FTU0VSVCh5ID4geCk7Ci0gIEpTT05URVNUX0FTU0VSVCh4IDw9IHkpOwotICBK
U09OVEVTVF9BU1NFUlQoeSA+PSB4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA9PSB5KSk7Ci0g
IEpTT05URVNUX0FTU0VSVCghKHkgPT0geCkpOwotICBKU09OVEVTVF9BU1NFUlQoISh4ID49IHkp
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeSA8PSB4KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghKHgg
PiB5KSk7Ci0gIEpTT05URVNUX0FTU0VSVCghKHkgPCB4KSk7Ci0gIEpTT05URVNUX0FTU0VSVCh4
LmNvbXBhcmUoeSkgPCAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHkuY29tcGFyZSh4KSA+PSAwKTsK
LX0KLQotdm9pZCBWYWx1ZVRlc3Q6OmNoZWNrSXNFcXVhbChjb25zdCBKc29uOjpWYWx1ZSYgeCwg
Y29uc3QgSnNvbjo6VmFsdWUmIHkpIHsKLSAgSlNPTlRFU1RfQVNTRVJUKHggPT0geSk7Ci0gIEpT
T05URVNUX0FTU0VSVCh5ID09IHgpOwotICBKU09OVEVTVF9BU1NFUlQoeCA8PSB5KTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHkgPD0geCk7Ci0gIEpTT05URVNUX0FTU0VSVCh4ID49IHkpOwotICBKU09O
VEVTVF9BU1NFUlQoeSA+PSB4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA8IHkpKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCEoeSA8IHgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKCEoeCA+IHkpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUKCEoeSA+IHgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHguY29tcGFyZSh5
KSA9PSAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHkuY29tcGFyZSh4KSA9PSAwKTsKLX0KLQotSlNP
TlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIHR5cGVDaGVja3NUaHJvd0V4Y2VwdGlvbnMpIHsKLSNp
ZiBKU09OX1VTRV9FWENFUFRJT04KLQotICBKc29uOjpWYWx1ZSBpbnRWYWwoMSk7Ci0gIEpzb246
OlZhbHVlIHN0clZhbCgiVGVzdCIpOwotICBKc29uOjpWYWx1ZSBvYmpWYWwoSnNvbjo6b2JqZWN0
VmFsdWUpOwotICBKc29uOjpWYWx1ZSBhcnJWYWwoSnNvbjo6YXJyYXlWYWx1ZSk7Ci0KLSAgSlNP
TlRFU1RfQVNTRVJUX1RIUk9XUyhpbnRWYWxbInRlc3QiXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9U
SFJPV1Moc3RyVmFsWyJ0ZXN0Il0pOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbFsi
dGVzdCJdKTsKLQotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGludFZhbC5yZW1vdmVNZW1iZXIo
InRlc3QiKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsLnJlbW92ZU1lbWJlcigi
dGVzdCIpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhhcnJWYWwucmVtb3ZlTWVtYmVyKCJ0
ZXN0IikpOwotCi0gIEpTT05URVNUX0FTU0VSVF9USFJPV1MoaW50VmFsLmdldE1lbWJlck5hbWVz
KCkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKHN0clZhbC5nZXRNZW1iZXJOYW1lcygpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhhcnJWYWwuZ2V0TWVtYmVyTmFtZXMoKSk7Ci0KLSAg
SlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhpbnRWYWxbMF0pOwotICBKU09OVEVTVF9BU1NFUlRfVEhS
T1dTKG9ialZhbFswXSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsWzBdKTsKLQot
ICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGludFZhbC5jbGVhcigpKTsKLQotICBKU09OVEVTVF9B
U1NFUlRfVEhST1dTKGludFZhbC5yZXNpemUoMSkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dT
KHN0clZhbC5yZXNpemUoMSkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKG9ialZhbC5yZXNp
emUoMSkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9USFJPV1MoaW50VmFsLmFzQ1N0cmluZygpKTsK
LQotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKG9ialZhbC5hc1N0cmluZygpKTsKLSAgSlNPTlRF
U1RfQVNTRVJUX1RIUk9XUyhhcnJWYWwuYXNTdHJpbmcoKSk7Ci0KLSAgSlNPTlRFU1RfQVNTRVJU
X1RIUk9XUyhzdHJWYWwuYXNJbnQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFs
LmFzSW50KCkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbC5hc0ludCgpKTsKLQot
ICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKHN0clZhbC5hc1VJbnQoKSk7Ci0gIEpTT05URVNUX0FT
U0VSVF9USFJPV1Mob2JqVmFsLmFzVUludCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhh
cnJWYWwuYXNVSW50KCkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Moc3RyVmFsLmFzSW50
NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFsLmFzSW50NjQoKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9USFJPV1MoYXJyVmFsLmFzSW50NjQoKSk7Ci0KLSAgSlNPTlRFU1RfQVNT
RVJUX1RIUk9XUyhzdHJWYWwuYXNVSW50NjQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mo
b2JqVmFsLmFzVUludDY0KCkpOwotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKGFyclZhbC5hc1VJ
bnQ2NCgpKTsKLQotICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKHN0clZhbC5hc0RvdWJsZSgpKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhvYmpWYWwuYXNEb3VibGUoKSk7Ci0gIEpTT05URVNU
X0FTU0VSVF9USFJPV1MoYXJyVmFsLmFzRG91YmxlKCkpOwotCi0gIEpTT05URVNUX0FTU0VSVF9U
SFJPV1Moc3RyVmFsLmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1Mob2JqVmFs
LmFzRmxvYXQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJPV1MoYXJyVmFsLmFzRmxvYXQoKSk7
Ci0KLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUyhzdHJWYWwuYXNCb29sKCkpOwotICBKU09OVEVT
VF9BU1NFUlRfVEhST1dTKG9ialZhbC5hc0Jvb2woKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9USFJP
V1MoYXJyVmFsLmFzQm9vbCgpKTsKLQotI2VuZGlmCi19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFs
dWVUZXN0LCBvZmZzZXRBY2Nlc3NvcnMpIHsKLSAgSnNvbjo6VmFsdWUgeDsKLSAgSlNPTlRFU1Rf
QVNTRVJUKHguZ2V0T2Zmc2V0U3RhcnQoKSA9PSAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHguZ2V0
T2Zmc2V0TGltaXQoKSA9PSAwKTsKLSAgeC5zZXRPZmZzZXRTdGFydCgxMCk7Ci0gIHguc2V0T2Zm
c2V0TGltaXQoMjApOwotICBKU09OVEVTVF9BU1NFUlQoeC5nZXRPZmZzZXRTdGFydCgpID09IDEw
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHguZ2V0T2Zmc2V0TGltaXQoKSA9PSAyMCk7Ci0gIEpzb246
OlZhbHVlIHkoeCk7Ci0gIEpTT05URVNUX0FTU0VSVCh5LmdldE9mZnNldFN0YXJ0KCkgPT0gMTAp
OwotICBKU09OVEVTVF9BU1NFUlQoeS5nZXRPZmZzZXRMaW1pdCgpID09IDIwKTsKLSAgSnNvbjo6
VmFsdWUgejsKLSAgei5zd2FwKHkpOwotICBKU09OVEVTVF9BU1NFUlQoei5nZXRPZmZzZXRTdGFy
dCgpID09IDEwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHouZ2V0T2Zmc2V0TGltaXQoKSA9PSAyMCk7
Ci0gIEpTT05URVNUX0FTU0VSVCh5LmdldE9mZnNldFN0YXJ0KCkgPT0gMCk7Ci0gIEpTT05URVNU
X0FTU0VSVCh5LmdldE9mZnNldExpbWl0KCkgPT0gMCk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUo
VmFsdWVUZXN0LCBTdGF0aWNTdHJpbmcpIHsKLSAgY2hhciBtdXRhbnRbXSA9ICJoZWxsbyI7Ci0g
IEpzb246OlN0YXRpY1N0cmluZyBzcyhtdXRhbnQpOwotICBKc29uOjpTdHJpbmcgcmVndWxhciht
dXRhbnQpOwotICBtdXRhbnRbMV0gPSAnYSc7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFV
QUwoImhhbGxvIiwgc3MuY19zdHIoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwo
ImhlbGxvIiwgcmVndWxhci5jX3N0cigpKTsKLSAgewotICAgIEpzb246OlZhbHVlIHJvb3Q7Ci0g
ICAgcm9vdFsidG9wIl0gPSBzczsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJo
YWxsbyIsIHJvb3RbInRvcCJdLmFzU3RyaW5nKCkpOwotICAgIG11dGFudFsxXSA9ICd1JzsKLSAg
ICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJodWxsbyIsIHJvb3RbInRvcCJdLmFzU3Ry
aW5nKCkpOwotICB9Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHJvb3RbInRvcCJd
ID0gcmVndWxhcjsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJoZWxsbyIsIHJv
b3RbInRvcCJdLmFzU3RyaW5nKCkpOwotICAgIG11dGFudFsxXSA9ICd1JzsKLSAgICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJoZWxsbyIsIHJvb3RbInRvcCJdLmFzU3RyaW5nKCkpOwot
ICB9Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBXaWRlU3RyaW5nKSB7Ci0gIC8v
IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXNvdXJjZS1wYXJzZXJzL2pzb25jcHAvaXNzdWVzLzc1
NgotICBjb25zdCBzdGQ6OnN0cmluZyB1bmkgPSB1OCLlvI/vvIzov5siOyAvLyAiXHU1ZjBmXHVm
ZjBjXHU4ZmRiIgotICBzdGQ6OnN0cmluZyBzdHlsZWQ7Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSB2
OwotICAgIHZbImFiYyJdID0gdW5pOwotICAgIHN0eWxlZCA9IHYudG9TdHlsZWRTdHJpbmcoKTsK
LSAgfQotICBKc29uOjpWYWx1ZSByb290OwotICB7Ci0gICAgSlNPTkNQUF9TVFJJTkcgZXJyczsK
LSAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzKHN0eWxlZCk7Ci0gICAgYm9vbCBvayA9IHBhcnNl
RnJvbVN0cmVhbShKc29uOjpDaGFyUmVhZGVyQnVpbGRlcigpLCBpc3MsICZyb290LCAmZXJycyk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICBzdGQ6OmNl
cnIgPDwgImVycnM6ICIgPDwgZXJycyA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotICB9Ci0gIEpTT05U
RVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwocm9vdFsiYWJjIl0uYXNTdHJpbmcoKSwgdW5pKTsKLX0K
LQotSlNPTlRFU1RfRklYVFVSRShWYWx1ZVRlc3QsIENvbW1lbnRCZWZvcmUpIHsKLSAgSnNvbjo6
VmFsdWUgdmFsOyAvLyBmaWxsIHZhbAotICB2YWwuc2V0Q29tbWVudChKc29uOjpTdHJpbmcoIi8v
IHRoaXMgY29tbWVudCBzaG91bGQgYXBwZWFyIGJlZm9yZSIpLAotICAgICAgICAgICAgICAgICBK
c29uOjpjb21tZW50QmVmb3JlKTsKLSAgSnNvbjo6U3RyZWFtV3JpdGVyQnVpbGRlciB3YnVpbGRl
cjsKLSAgd2J1aWxkZXIuc2V0dGluZ3NfWyJjb21tZW50U3R5bGUiXSA9ICJBbGwiOwotICB7Ci0g
ICAgY2hhciBjb25zdCBleHBlY3RlZFtdID0gIi8vIHRoaXMgY29tbWVudCBzaG91bGQgYXBwZWFy
IGJlZm9yZVxubnVsbCI7Ci0gICAgSnNvbjo6U3RyaW5nIHJlc3VsdCA9IEpzb246OndyaXRlU3Ry
aW5nKHdidWlsZGVyLCB2YWwpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhw
ZWN0ZWQsIHJlc3VsdCk7Ci0gICAgSnNvbjo6U3RyaW5nIHJlczIgPSB2YWwudG9TdHlsZWRTdHJp
bmcoKTsKLSAgICBKc29uOjpTdHJpbmcgZXhwMiA9ICJcbiI7Ci0gICAgZXhwMiArPSBleHBlY3Rl
ZDsKLSAgICBleHAyICs9ICJcbiI7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChl
eHAyLCByZXMyKTsKLSAgfQotICBKc29uOjpWYWx1ZSBvdGhlciA9ICJoZWxsbyI7Ci0gIHZhbC5z
d2FwUGF5bG9hZChvdGhlcik7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGV4cGVjdGVkW10gPSAiLy8g
dGhpcyBjb21tZW50IHNob3VsZCBhcHBlYXIgYmVmb3JlXG5cImhlbGxvXCIiOwotICAgIEpzb246
OlN0cmluZyByZXN1bHQgPSBKc29uOjp3cml0ZVN0cmluZyh3YnVpbGRlciwgdmFsKTsKLSAgICBK
U09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwotICAgIEpzb246
OlN0cmluZyByZXMyID0gdmFsLnRvU3R5bGVkU3RyaW5nKCk7Ci0gICAgSnNvbjo6U3RyaW5nIGV4
cDIgPSAiXG4iOwotICAgIGV4cDIgKz0gZXhwZWN0ZWQ7Ci0gICAgZXhwMiArPSAiXG4iOwotICAg
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwMiwgcmVzMik7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUX1NUUklOR19FUVVBTCgibnVsbFxuIiwgb3RoZXIudG9TdHlsZWRTdHJpbmcoKSk7Ci0g
IH0KLSAgdmFsID0gImhlbGxvIjsKLSAgLy8gdmFsLnNldENvbW1lbnQoIi8vIHRoaXMgY29tbWVu
dCBzaG91bGQgYXBwZWFyIGJlZm9yZSIsCi0gIC8vIEpzb246OkNvbW1lbnRQbGFjZW1lbnQ6OmNv
bW1lbnRCZWZvcmUpOyBBc3NpZ25tZW50IG92ZXItd3JpdGVzIGNvbW1lbnRzLgotICB7Ci0gICAg
Y2hhciBjb25zdCBleHBlY3RlZFtdID0gIlwiaGVsbG9cIiI7Ci0gICAgSnNvbjo6U3RyaW5nIHJl
c3VsdCA9IEpzb246OndyaXRlU3RyaW5nKHdidWlsZGVyLCB2YWwpOwotICAgIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0gICAgSnNvbjo6U3RyaW5nIHJl
czIgPSB2YWwudG9TdHlsZWRTdHJpbmcoKTsKLSAgICBKc29uOjpTdHJpbmcgZXhwMiA9ICIiOwot
ICAgIGV4cDIgKz0gZXhwZWN0ZWQ7Ci0gICAgZXhwMiArPSAiXG4iOwotICAgIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoZXhwMiwgcmVzMik7Ci0gIH0KLX0KLQotSlNPTlRFU1RfRklYVFVS
RShWYWx1ZVRlc3QsIHplcm9lcykgewotICBjaGFyIGNvbnN0IGNzdHJbXSA9ICJoXDBpIjsKLSAg
SnNvbjo6U3RyaW5nIGJpbmFyeShjc3RyLCBzaXplb2YoY3N0cikpOyAvLyBpbmNsdWRlIHRyYWls
aW5nIDAKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDRVLCBiaW5hcnkubGVuZ3RoKCkpOwotICBK
c29uOjpTdHJlYW1Xcml0ZXJCdWlsZGVyIGI7Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSByb290Owot
ICAgIHJvb3QgPSBiaW5hcnk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChiaW5h
cnksIHJvb3QuYXNTdHJpbmcoKSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgdG9wW10gPSAi
dG9wIjsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHJvb3RbdG9wXSA9IGJpbmFyeTsKLSAg
ICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGJpbmFyeSwgcm9vdFt0b3BdLmFzU3RyaW5n
KCkpOwotICAgIEpzb246OlZhbHVlIHJlbW92ZWQ7Ci0gICAgYm9vbCBkaWQ7Ci0gICAgZGlkID0g
cm9vdC5yZW1vdmVNZW1iZXIodG9wLCB0b3AgKyBzaXplb2YodG9wKSAtIDFVLCAmcmVtb3ZlZCk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUKGRpZCk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19F
UVVBTChiaW5hcnksIHJlbW92ZWQuYXNTdHJpbmcoKSk7Ci0gICAgZGlkID0gcm9vdC5yZW1vdmVN
ZW1iZXIodG9wLCB0b3AgKyBzaXplb2YodG9wKSAtIDFVLCAmcmVtb3ZlZCk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUKCFkaWQpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoYmluYXJ5
LCByZW1vdmVkLmFzU3RyaW5nKCkpOyAvLyBzdGlsbAotICB9Ci19Ci0KLUpTT05URVNUX0ZJWFRV
UkUoVmFsdWVUZXN0LCB6ZXJvZXNJbktleXMpIHsKLSAgY2hhciBjb25zdCBjc3RyW10gPSAiaFww
aSI7Ci0gIEpzb246OlN0cmluZyBiaW5hcnkoY3N0ciwgc2l6ZW9mKGNzdHIpKTsgLy8gaW5jbHVk
ZSB0cmFpbGluZyAwCi0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCg0VSwgYmluYXJ5Lmxlbmd0aCgp
KTsKLSAgewotICAgIEpzb246OlZhbHVlIHJvb3Q7Ci0gICAgcm9vdFtiaW5hcnldID0gInRoZXJl
IjsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ0aGVyZSIsIHJvb3RbYmluYXJ5
XS5hc1N0cmluZygpKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoIXJvb3QuaXNNZW1iZXIoImgiKSk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUKHJvb3QuaXNNZW1iZXIoYmluYXJ5KSk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX1NUUklOR19FUVVBTCgKLSAgICAgICAgInRoZXJlIiwgcm9vdC5nZXQoYmluYXJ5
LCBKc29uOjpWYWx1ZTo6bnVsbFJlZikuYXNTdHJpbmcoKSk7Ci0gICAgSnNvbjo6VmFsdWUgcmVt
b3ZlZDsKLSAgICBib29sIGRpZDsKLSAgICBkaWQgPSByb290LnJlbW92ZU1lbWJlcihiaW5hcnku
ZGF0YSgpLCBiaW5hcnkuZGF0YSgpICsgYmluYXJ5Lmxlbmd0aCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZyZW1vdmVkKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoZGlkKTsKLSAgICBK
U09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ0aGVyZSIsIHJlbW92ZWQuYXNTdHJpbmcoKSk7
Ci0gICAgZGlkID0gcm9vdC5yZW1vdmVNZW1iZXIoYmluYXJ5LmRhdGEoKSwgYmluYXJ5LmRhdGEo
KSArIGJpbmFyeS5sZW5ndGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVtb3Zl
ZCk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKCFkaWQpOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJ
TkdfRVFVQUwoInRoZXJlIiwgcmVtb3ZlZC5hc1N0cmluZygpKTsgLy8gc3RpbGwKLSAgICBKU09O
VEVTVF9BU1NFUlQoIXJvb3QuaXNNZW1iZXIoYmluYXJ5KSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X1NUUklOR19FUVVBTCgKLSAgICAgICAgIiIsIHJvb3QuZ2V0KGJpbmFyeSwgSnNvbjo6VmFsdWU6
Om51bGxSZWYpLmFzU3RyaW5nKCkpOwotICB9Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVU
ZXN0LCBzcGVjaWFsRmxvYXRzKSB7Ci0gIEpzb246OlN0cmVhbVdyaXRlckJ1aWxkZXIgYjsKLSAg
Yi5zZXR0aW5nc19bInVzZVNwZWNpYWxGbG9hdHMiXSA9IHRydWU7Ci0KLSAgSnNvbjo6VmFsdWUg
diA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0gIEpzb246OlN0
cmluZyBleHBlY3RlZCA9ICJOYU4iOwotICBKc29uOjpTdHJpbmcgcmVzdWx0ID0gSnNvbjo6d3Jp
dGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQs
IHJlc3VsdCk7Ci0KLSAgdiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsKLSAgZXhwZWN0ZWQgPSAiSW5maW5pdHkiOwotICByZXN1bHQgPSBKc29uOjp3cml0ZVN0cmlu
ZyhiLCB2KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChleHBlY3RlZCwgcmVzdWx0
KTsKLQotICB2ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAg
ZXhwZWN0ZWQgPSAiLUluZmluaXR5IjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwg
dik7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci19
Ci0KLUpTT05URVNUX0ZJWFRVUkUoVmFsdWVUZXN0LCBwcmVjaXNpb24pIHsKLSAgSnNvbjo6U3Ry
ZWFtV3JpdGVyQnVpbGRlciBiOwotICBiLnNldHRpbmdzX1sicHJlY2lzaW9uIl0gPSA1OwotCi0g
IEpzb246OlZhbHVlIHYgPSAxMDAuMCAvIDM7Ci0gIEpzb246OlN0cmluZyBleHBlY3RlZCA9ICIz
My4zMzMiOwotICBKc29uOjpTdHJpbmcgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7
Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAg
diA9IDAuMjUwMDAwMDA7Ci0gIGV4cGVjdGVkID0gIjAuMjUiOwotICByZXN1bHQgPSBKc29uOjp3
cml0ZVN0cmluZyhiLCB2KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTChleHBlY3Rl
ZCwgcmVzdWx0KTsKLQotICB2ID0gMC4yNTYzNDU2OwotICBleHBlY3RlZCA9ICIwLjI1NjM1IjsK
LSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VSVF9T
VFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0aW5nc19bInByZWNpc2lv
biJdID0gMTsKLSAgZXhwZWN0ZWQgPSAiMC4zIjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJp
bmcoYiwgdik7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3Vs
dCk7Ci0KLSAgYi5zZXR0aW5nc19bInByZWNpc2lvbiJdID0gMTc7Ci0gIHYgPSAxMjM0ODU3NDc2
MzA1LjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAgZXhwZWN0ZWQgPSAiMTIzNDg1NzQ3NjMwNS4y
NTYzIjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0gIEpTT05URVNUX0FT
U0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5zZXR0aW5nc19bInBy
ZWNpc2lvbiJdID0gMjQ7Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAgZXhwZWN0
ZWQgPSAiMC4yNTYzNDU2OTQ4NzM3NDA1NCI7Ci0gIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5n
KGIsIHYpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQp
OwotCi0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb24iXSA9IDU7Ci0gIGIuc2V0dGluZ3NfWyJwcmVj
aXNpb25UeXBlIl0gPSAiZGVjaW1hbCI7Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsK
LSAgZXhwZWN0ZWQgPSAiMC4yNTYzNSI7Ci0gIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5nKGIs
IHYpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwot
Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb24iXSA9IDE7Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNp
b25UeXBlIl0gPSAiZGVjaW1hbCI7Ci0gIHYgPSAwLjI1NjM0NTY5NDg3Mzc0MDU0NTA2ODsKLSAg
ZXhwZWN0ZWQgPSAiMC4zIjsKLSAgcmVzdWx0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgdik7Ci0g
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIHJlc3VsdCk7Ci0KLSAgYi5z
ZXR0aW5nc19bInByZWNpc2lvbiJdID0gMTA7Ci0gIGIuc2V0dGluZ3NfWyJwcmVjaXNpb25UeXBl
Il0gPSAiZGVjaW1hbCI7Ci0gIHYgPSAwLjIzMzAwMDAwOwotICBleHBlY3RlZCA9ICIwLjIzMyI7
Ci0gIHJlc3VsdCA9IEpzb246OndyaXRlU3RyaW5nKGIsIHYpOwotICBKU09OVEVTVF9BU1NFUlRf
U1RSSU5HX0VRVUFMKGV4cGVjdGVkLCByZXN1bHQpOwotfQotCi1zdHJ1Y3QgV3JpdGVyVGVzdCA6
IEpzb25UZXN0OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShXcml0ZXJUZXN0LCBk
cm9wTnVsbFBsYWNlaG9sZGVycykgewotICBKc29uOjpGYXN0V3JpdGVyIHdyaXRlcjsKLSAgSnNv
bjo6VmFsdWUgbnVsbFZhbHVlOwotICBKU09OVEVTVF9BU1NFUlQod3JpdGVyLndyaXRlKG51bGxW
YWx1ZSkgPT0gIm51bGxcbiIpOwotCi0gIHdyaXRlci5kcm9wTnVsbFBsYWNlaG9sZGVycygpOwot
ICBKU09OVEVTVF9BU1NFUlQod3JpdGVyLndyaXRlKG51bGxWYWx1ZSkgPT0gIlxuIik7Ci19Ci0K
LXN0cnVjdCBTdHJlYW1Xcml0ZXJUZXN0IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09O
VEVTVF9GSVhUVVJFKFN0cmVhbVdyaXRlclRlc3QsIGRyb3BOdWxsUGxhY2Vob2xkZXJzKSB7Ci0g
IEpzb246OlN0cmVhbVdyaXRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6VmFsdWUgbnVsbFZhbHVlOwot
ICBiLnNldHRpbmdzX1siZHJvcE51bGxQbGFjZWhvbGRlcnMiXSA9IGZhbHNlOwotICBKU09OVEVT
VF9BU1NFUlQoSnNvbjo6d3JpdGVTdHJpbmcoYiwgbnVsbFZhbHVlKSA9PSAibnVsbCIpOwotICBi
LnNldHRpbmdzX1siZHJvcE51bGxQbGFjZWhvbGRlcnMiXSA9IHRydWU7Ci0gIEpTT05URVNUX0FT
U0VSVChKc29uOjp3cml0ZVN0cmluZyhiLCBudWxsVmFsdWUpLmVtcHR5KCkpOwotfQotCi1KU09O
VEVTVF9GSVhUVVJFKFN0cmVhbVdyaXRlclRlc3QsIHdyaXRlWmVyb2VzKSB7Ci0gIEpzb246OlN0
cmluZyBiaW5hcnkoImhpIiwgMyk7IC8vIGluY2x1ZGUgdHJhaWxpbmcgMAotICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoMywgYmluYXJ5Lmxlbmd0aCgpKTsKLSAgSnNvbjo6U3RyaW5nIGV4cGVjdGVk
KCJcImhpXFx1MDAwMFwiIik7IC8vIHVuaWNvZGVkIHplcm8KLSAgSnNvbjo6U3RyZWFtV3JpdGVy
QnVpbGRlciBiOwotICB7Ci0gICAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgICByb290ID0gYmluYXJ5
OwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoYmluYXJ5LCByb290LmFzU3RyaW5n
KCkpOwotICAgIEpzb246OlN0cmluZyBvdXQgPSBKc29uOjp3cml0ZVN0cmluZyhiLCByb290KTsK
LSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoZXhwZWN0ZWQuc2l6ZSgpLCBvdXQuc2l6ZSgpKTsK
LSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGV4cGVjdGVkLCBvdXQpOwotICB9Ci0g
IHsKLSAgICBKc29uOjpWYWx1ZSByb290OwotICAgIHJvb3RbInRvcCJdID0gYmluYXJ5OwotICAg
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoYmluYXJ5LCByb290WyJ0b3AiXS5hc1N0cmlu
ZygpKTsKLSAgICBKc29uOjpTdHJpbmcgb3V0ID0gSnNvbjo6d3JpdGVTdHJpbmcoYiwgcm9vdFsi
dG9wIl0pOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoZXhwZWN0ZWQsIG91dCk7
Ci0gIH0KLX0KLQotc3RydWN0IFJlYWRlclRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0K
LUpTT05URVNUX0ZJWFRVUkUoUmVhZGVyVGVzdCwgcGFyc2VXaXRoTm9FcnJvcnMpIHsKLSAgSnNv
bjo6UmVhZGVyIHJlYWRlcjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgYm9vbCBvayA9IHJlYWRl
ci5wYXJzZSgieyBcInByb3BlcnR5XCIgOiBcInZhbHVlXCIgfSIsIHJvb3QpOwotICBKU09OVEVT
VF9BU1NFUlQob2spOwotICBKU09OVEVTVF9BU1NFUlQocmVhZGVyLmdldEZvcm1hdHRlZEVycm9y
TWVzc2FnZXMoKS5lbXB0eSgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJlYWRlci5nZXRTdHJ1Y3R1
cmVkRXJyb3JzKCkuZW1wdHkoKSk7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoUmVhZGVyVGVzdCwg
cGFyc2VXaXRoTm9FcnJvcnNUZXN0aW5nT2Zmc2V0cykgewotICBKc29uOjpSZWFkZXIgcmVhZGVy
OwotICBKc29uOjpWYWx1ZSByb290OwotICBib29sIG9rID0gcmVhZGVyLnBhcnNlKCJ7IFwicHJv
cGVydHlcIiA6IFtcInZhbHVlXCIsIFwidmFsdWUyXCJdLCBcIm9ialwiIDogIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICJ7IFwibmVzdGVkXCIgOiAxMjMsIFwiYm9vbFwiIDogdHJ1ZX0sIFwi
bnVsbFwiIDogIgotICAgICAgICAgICAgICAgICAgICAgICAgICJudWxsLCBcImZhbHNlXCIgOiBm
YWxzZSB9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByb290KTsKLSAgSlNPTlRFU1RfQVNT
RVJUKG9rKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJlYWRlci5nZXRGb3JtYXR0ZWRFcnJvck1lc3Nh
Z2VzKCkuZW1wdHkoKSk7Ci0gIEpTT05URVNUX0FTU0VSVChyZWFkZXIuZ2V0U3RydWN0dXJlZEVy
cm9ycygpLmVtcHR5KCkpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsicHJvcGVydHkiXS5nZXRP
ZmZzZXRTdGFydCgpID09IDE1KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3RbInByb3BlcnR5Il0u
Z2V0T2Zmc2V0TGltaXQoKSA9PSAzNCk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJwcm9wZXJ0
eSJdWzBdLmdldE9mZnNldFN0YXJ0KCkgPT0gMTYpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsi
cHJvcGVydHkiXVswXS5nZXRPZmZzZXRMaW1pdCgpID09IDIzKTsKLSAgSlNPTlRFU1RfQVNTRVJU
KHJvb3RbInByb3BlcnR5Il1bMV0uZ2V0T2Zmc2V0U3RhcnQoKSA9PSAyNSk7Ci0gIEpTT05URVNU
X0FTU0VSVChyb290WyJwcm9wZXJ0eSJdWzFdLmdldE9mZnNldExpbWl0KCkgPT0gMzMpOwotICBK
U09OVEVTVF9BU1NFUlQocm9vdFsib2JqIl0uZ2V0T2Zmc2V0U3RhcnQoKSA9PSA0NCk7Ci0gIEpT
T05URVNUX0FTU0VSVChyb290WyJvYmoiXS5nZXRPZmZzZXRMaW1pdCgpID09IDc2KTsKLSAgSlNP
TlRFU1RfQVNTRVJUKHJvb3RbIm9iaiJdWyJuZXN0ZWQiXS5nZXRPZmZzZXRTdGFydCgpID09IDU3
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3RbIm9iaiJdWyJuZXN0ZWQiXS5nZXRPZmZzZXRMaW1p
dCgpID09IDYwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3RbIm9iaiJdWyJib29sIl0uZ2V0T2Zm
c2V0U3RhcnQoKSA9PSA3MSk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJvYmoiXVsiYm9vbCJd
LmdldE9mZnNldExpbWl0KCkgPT0gNzUpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsibnVsbCJd
LmdldE9mZnNldFN0YXJ0KCkgPT0gODcpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsibnVsbCJd
LmdldE9mZnNldExpbWl0KCkgPT0gOTEpOwotICBKU09OVEVTVF9BU1NFUlQocm9vdFsiZmFsc2Ui
XS5nZXRPZmZzZXRTdGFydCgpID09IDEwMyk7Ci0gIEpTT05URVNUX0FTU0VSVChyb290WyJmYWxz
ZSJdLmdldE9mZnNldExpbWl0KCkgPT0gMTA4KTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3QuZ2V0
T2Zmc2V0U3RhcnQoKSA9PSAwKTsKLSAgSlNPTlRFU1RfQVNTRVJUKHJvb3QuZ2V0T2Zmc2V0TGlt
aXQoKSA9PSAxMTApOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKFJlYWRlclRlc3QsIHBhcnNlV2l0
aE9uZUVycm9yKSB7Ci0gIEpzb246OlJlYWRlciByZWFkZXI7Ci0gIEpzb246OlZhbHVlIHJvb3Q7
Ci0gIGJvb2wgb2sgPSByZWFkZXIucGFyc2UoInsgXCJwcm9wZXJ0eVwiIDo6IFwidmFsdWVcIiB9
Iiwgcm9vdCk7Ci0gIEpTT05URVNUX0FTU0VSVCghb2spOwotICBKU09OVEVTVF9BU1NFUlQocmVh
ZGVyLmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKSA9PQotICAgICAgICAgICAgICAgICAgIiog
TGluZSAxLCBDb2x1bW4gMTVcbiAgU3ludGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5
ICIKLSAgICAgICAgICAgICAgICAgICJleHBlY3RlZC5cbiIpOwotICBzdGQ6OnZlY3RvcjxKc29u
OjpSZWFkZXI6OlN0cnVjdHVyZWRFcnJvcj4gZXJyb3JzID0KLSAgICAgIHJlYWRlci5nZXRTdHJ1
Y3R1cmVkRXJyb3JzKCk7Ci0gIEpTT05URVNUX0FTU0VSVChlcnJvcnMuc2l6ZSgpID09IDEpOwot
ICBKU09OVEVTVF9BU1NFUlQoZXJyb3JzLmF0KDApLm9mZnNldF9zdGFydCA9PSAxNCk7Ci0gIEpT
T05URVNUX0FTU0VSVChlcnJvcnMuYXQoMCkub2Zmc2V0X2xpbWl0ID09IDE1KTsKLSAgSlNPTlRF
U1RfQVNTRVJUKGVycm9ycy5hdCgwKS5tZXNzYWdlID09Ci0gICAgICAgICAgICAgICAgICAiU3lu
dGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5IGV4cGVjdGVkLiIpOwotfQotCi1KU09O
VEVTVF9GSVhUVVJFKFJlYWRlclRlc3QsIHBhcnNlQ2hpbmVzZVdpdGhPbmVFcnJvcikgewotICBK
c29uOjpSZWFkZXIgcmVhZGVyOwotICBKc29uOjpWYWx1ZSByb290OwotICBib29sIG9rID0gcmVh
ZGVyLnBhcnNlKCJ7IFwicHLkvZDol6RlcnR5XCIgOjogXCJ2YWx1ZVwiIH0iLCByb290KTsKLSAg
SlNPTlRFU1RfQVNTRVJUKCFvayk7Ci0gIEpTT05URVNUX0FTU0VSVChyZWFkZXIuZ2V0Rm9ybWF0
dGVkRXJyb3JNZXNzYWdlcygpID09Ci0gICAgICAgICAgICAgICAgICAiKiBMaW5lIDEsIENvbHVt
biAxOVxuICBTeW50YXggZXJyb3I6IHZhbHVlLCBvYmplY3Qgb3IgYXJyYXkgIgotICAgICAgICAg
ICAgICAgICAgImV4cGVjdGVkLlxuIik7Ci0gIHN0ZDo6dmVjdG9yPEpzb246OlJlYWRlcjo6U3Ry
dWN0dXJlZEVycm9yPiBlcnJvcnMgPQotICAgICAgcmVhZGVyLmdldFN0cnVjdHVyZWRFcnJvcnMo
KTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycm9ycy5zaXplKCkgPT0gMSk7Ci0gIEpTT05URVNUX0FT
U0VSVChlcnJvcnMuYXQoMCkub2Zmc2V0X3N0YXJ0ID09IDE4KTsKLSAgSlNPTlRFU1RfQVNTRVJU
KGVycm9ycy5hdCgwKS5vZmZzZXRfbGltaXQgPT0gMTkpOwotICBKU09OVEVTVF9BU1NFUlQoZXJy
b3JzLmF0KDApLm1lc3NhZ2UgPT0KLSAgICAgICAgICAgICAgICAgICJTeW50YXggZXJyb3I6IHZh
bHVlLCBvYmplY3Qgb3IgYXJyYXkgZXhwZWN0ZWQuIik7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUo
UmVhZGVyVGVzdCwgcGFyc2VXaXRoRGV0YWlsRXJyb3IpIHsKLSAgSnNvbjo6UmVhZGVyIHJlYWRl
cjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgYm9vbCBvayA9IHJlYWRlci5wYXJzZSgieyBcInBy
b3BlcnR5XCIgOiBcInZcXGFsdWVcIiB9Iiwgcm9vdCk7Ci0gIEpTT05URVNUX0FTU0VSVCghb2sp
OwotICBKU09OVEVTVF9BU1NFUlQocmVhZGVyLmdldEZvcm1hdHRlZEVycm9yTWVzc2FnZXMoKSA9
PQotICAgICAgICAgICAgICAgICAgIiogTGluZSAxLCBDb2x1bW4gMTZcbiAgQmFkIGVzY2FwZSBz
ZXF1ZW5jZSBpbiBzdHJpbmdcblNlZSAiCi0gICAgICAgICAgICAgICAgICAiTGluZSAxLCBDb2x1
bW4gMjAgZm9yIGRldGFpbC5cbiIpOwotICBzdGQ6OnZlY3RvcjxKc29uOjpSZWFkZXI6OlN0cnVj
dHVyZWRFcnJvcj4gZXJyb3JzID0KLSAgICAgIHJlYWRlci5nZXRTdHJ1Y3R1cmVkRXJyb3JzKCk7
Ci0gIEpTT05URVNUX0FTU0VSVChlcnJvcnMuc2l6ZSgpID09IDEpOwotICBKU09OVEVTVF9BU1NF
UlQoZXJyb3JzLmF0KDApLm9mZnNldF9zdGFydCA9PSAxNSk7Ci0gIEpTT05URVNUX0FTU0VSVChl
cnJvcnMuYXQoMCkub2Zmc2V0X2xpbWl0ID09IDIzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycm9y
cy5hdCgwKS5tZXNzYWdlID09ICJCYWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyIpOwotfQot
Ci1zdHJ1Y3QgQ2hhclJlYWRlclRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05U
RVNUX0ZJWFRVUkUoQ2hhclJlYWRlclRlc3QsIHBhcnNlV2l0aE5vRXJyb3JzKSB7Ci0gIEpzb246
OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0No
YXJSZWFkZXIoKSk7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBKc29uOjpWYWx1ZSByb290Owot
ICBjaGFyIGNvbnN0IGRvY1tdID0gInsgXCJwcm9wZXJ0eVwiIDogXCJ2YWx1ZVwiIH0iOwotICBi
b29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290
LCAmZXJycyk7Ci0gIEpTT05URVNUX0FTU0VSVChvayk7Ci0gIEpTT05URVNUX0FTU0VSVChlcnJz
LmVtcHR5KCkpOwotICBkZWxldGUgcmVhZGVyOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJS
ZWFkZXJUZXN0LCBwYXJzZVdpdGhOb0Vycm9yc1Rlc3RpbmdPZmZzZXRzKSB7Ci0gIEpzb246OkNo
YXJSZWFkZXJCdWlsZGVyIGI7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJS
ZWFkZXIoKSk7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBKc29uOjpWYWx1ZSByb290OwotICBj
aGFyIGNvbnN0IGRvY1tdID0gInsgXCJwcm9wZXJ0eVwiIDogW1widmFsdWVcIiwgXCJ2YWx1ZTJc
Il0sIFwib2JqXCIgOiAiCi0gICAgICAgICAgICAgICAgICAgICAieyBcIm5lc3RlZFwiIDogMTIz
LCBcImJvb2xcIiA6IHRydWV9LCBcIm51bGxcIiA6ICIKLSAgICAgICAgICAgICAgICAgICAgICJu
dWxsLCBcImZhbHNlXCIgOiBmYWxzZSB9IjsKLSAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9j
LCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICBKU09OVEVTVF9BU1NF
UlQob2spOwotICBKU09OVEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAgZGVsZXRlIHJlYWRl
cjsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShDaGFyUmVhZGVyVGVzdCwgcGFyc2VXaXRoT25lRXJy
b3IpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6Q2hhclJlYWRlciog
cmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246
OlZhbHVlIHJvb3Q7Ci0gIGNoYXIgY29uc3QgZG9jW10gPSAieyBcInByb3BlcnR5XCIgOjogXCJ2
YWx1ZVwiIH0iOwotICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3Ry
bGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gIEpTT05URVNUX0FTU0VSVCghb2spOwotICBKU09O
VEVTVF9BU1NFUlQoZXJycyA9PQotICAgICAgICAgICAgICAgICAgIiogTGluZSAxLCBDb2x1bW4g
MTVcbiAgU3ludGF4IGVycm9yOiB2YWx1ZSwgb2JqZWN0IG9yIGFycmF5ICIKLSAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZC5cbiIpOwotICBkZWxldGUgcmVhZGVyOwotfQotCi1KU09OVEVTVF9G
SVhUVVJFKENoYXJSZWFkZXJUZXN0LCBwYXJzZUNoaW5lc2VXaXRoT25lRXJyb3IpIHsKLSAgSnNv
bjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3
Q2hhclJlYWRlcigpKTsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OlZhbHVlIHJvb3Q7
Ci0gIGNoYXIgY29uc3QgZG9jW10gPSAieyBcInBy5L2Q6JekZXJ0eVwiIDo6IFwidmFsdWVcIiB9
IjsKLSAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2Mp
LCAmcm9vdCwgJmVycnMpOwotICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAgSlNPTlRFU1RfQVNT
RVJUKGVycnMgPT0KLSAgICAgICAgICAgICAgICAgICIqIExpbmUgMSwgQ29sdW1uIDE5XG4gIFN5
bnRheCBlcnJvcjogdmFsdWUsIG9iamVjdCBvciBhcnJheSAiCi0gICAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQuXG4iKTsKLSAgZGVsZXRlIHJlYWRlcjsKLX0KLQotSlNPTlRFU1RfRklYVFVSRShD
aGFyUmVhZGVyVGVzdCwgcGFyc2VXaXRoRGV0YWlsRXJyb3IpIHsKLSAgSnNvbjo6Q2hhclJlYWRl
ckJ1aWxkZXIgYjsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigp
KTsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIGNoYXIgY29u
c3QgZG9jW10gPSAieyBcInByb3BlcnR5XCIgOiBcInZcXGFsdWVcIiB9IjsKLSAgYm9vbCBvayA9
IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMp
OwotICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAgSlNPTlRFU1RfQVNTRVJUKGVycnMgPT0KLSAg
ICAgICAgICAgICAgICAgICIqIExpbmUgMSwgQ29sdW1uIDE2XG4gIEJhZCBlc2NhcGUgc2VxdWVu
Y2UgaW4gc3RyaW5nXG5TZWUgIgotICAgICAgICAgICAgICAgICAgIkxpbmUgMSwgQ29sdW1uIDIw
IGZvciBkZXRhaWwuXG4iKTsKLSAgZGVsZXRlIHJlYWRlcjsKLX0KLQotSlNPTlRFU1RfRklYVFVS
RShDaGFyUmVhZGVyVGVzdCwgcGFyc2VXaXRoU3RhY2tMaW1pdCkgewotICBKc29uOjpDaGFyUmVh
ZGVyQnVpbGRlciBiOwotICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0g
InsgXCJwcm9wZXJ0eVwiIDogXCJ2YWx1ZVwiIH0iOwotICB7Ci0gICAgYi5zZXR0aW5nc19bInN0
YWNrTGltaXQiXSA9IDI7Ci0gICAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJl
YWRlcigpKTsKLSAgICBKc29uOjpTdHJpbmcgZXJyczsKLSAgICBib29sIG9rID0gcmVhZGVyLT5w
YXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUKG9rKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAg
ICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoInZhbHVlIiwgcm9vdFsicHJvcGVydHkiXSk7Ci0gICAg
ZGVsZXRlIHJlYWRlcjsKLSAgfQotICB7Ci0gICAgYi5zZXR0aW5nc19bInN0YWNrTGltaXQiXSA9
IDE7Ci0gICAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAg
ICBKc29uOjpTdHJpbmcgZXJyczsKLSAgICBKU09OVEVTVF9BU1NFUlRfVEhST1dTKAotICAgICAg
ICByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJz
KSk7Ci0gICAgZGVsZXRlIHJlYWRlcjsKLSAgfQotfQotCi1zdHJ1Y3QgQ2hhclJlYWRlclN0cmlj
dE1vZGVUZXN0IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENo
YXJSZWFkZXJTdHJpY3RNb2RlVGVzdCwgZHVwS2V5cykgewotICBKc29uOjpDaGFyUmVhZGVyQnVp
bGRlciBiOwotICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0KLSAgICAg
ICJ7IFwicHJvcGVydHlcIiA6IFwidmFsdWVcIiwgXCJrZXlcIiA6IFwidmFsMVwiLCBcImtleVwi
IDogXCJ2YWwyXCIgfSI7Ci0gIHsKLSAgICBiLnN0cmljdE1vZGUoJmIuc2V0dGluZ3NfKTsKLSAg
ICBKc29uOjpDaGFyUmVhZGVyKiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246
OlN0cmluZyBlcnJzOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3Rk
OjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoIW9rKTsK
LSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIqIExpbmUgMSwgQ29sdW1uIDQxXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBEdXBsaWNhdGUga2V5OiAna2V5
J1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnMpOwotICAgIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgidmFsMSIsIHJvb3RbImtleSJdKTsgLy8gc28gZmFyCi0gICAgZGVs
ZXRlIHJlYWRlcjsKLSAgfQotfQotc3RydWN0IENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QgOiBK
c29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZhaWxJ
ZkV4dHJhVGVzdCwgaXNzdWUxNjQpIHsKLSAgLy8gVGhpcyBpcyBpbnRlcnByZXRlZCBhcyBhIHN0
cmluZyB2YWx1ZSBmb2xsb3dlZCBieSBhIGNvbG9uLgotICBKc29uOjpDaGFyUmVhZGVyQnVpbGRl
ciBiOwotICBKc29uOjpWYWx1ZSByb290OwotICBjaGFyIGNvbnN0IGRvY1tdID0gIiBcInByb3Bl
cnR5XCIgOiBcInZhbHVlXCIgfSI7Ci0gIHsKLSAgICBiLnNldHRpbmdzX1siZmFpbElmRXh0cmEi
XSA9IGZhbHNlOwotICAgIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIo
KSk7Ci0gICAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2Uo
ZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNU
X0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKGVycnMuZW1wdHkoKSk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKCJwcm9wZXJ0eSIsIHJvb3QpOwotICAgIGRlbGV0ZSByZWFkZXI7
Ci0gIH0KLSAgewotICAgIGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgICBK
c29uOjpDaGFyUmVhZGVyKiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246OlN0
cmluZyBlcnJzOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpz
dHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoIW9rKTsKLSAg
ICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKGVycnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiKiBMaW5lIDEsIENvbHVtbiAxM1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgRXh0cmEgbm9uLXdoaXRlc3BhY2UgYWZ0ZXIgSlNPTiB2YWx1ZS5c
biIpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgicHJvcGVydHkiLCByb290KTsKLSAgICBk
ZWxldGUgcmVhZGVyOwotICB9Ci0gIHsKLSAgICBiLnNldHRpbmdzX1siZmFpbElmRXh0cmEiXSA9
IGZhbHNlOwotICAgIGIuc3RyaWN0TW9kZSgmYi5zZXR0aW5nc18pOwotICAgIEpzb246OkNoYXJS
ZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gICAgSnNvbjo6U3RyaW5nIGVycnM7
Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2Mp
LCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVCghb2spOwotICAgIEpTT05URVNU
X0FTU0VSVF9TVFJJTkdfRVFVQUwoZXJycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIqIExpbmUgMSwgQ29sdW1uIDEzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICBFeHRyYSBub24td2hpdGVzcGFjZSBhZnRlciBKU09OIHZhbHVlLlxuIik7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKCJwcm9wZXJ0eSIsIHJvb3QpOwotICAgIGRlbGV0ZSByZWFk
ZXI7Ci0gIH0KLX0KLUpTT05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwg
aXNzdWUxMDcpIHsKLSAgLy8gVGhpcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBpbnQgdmFsdWUgZm9s
bG93ZWQgYnkgYSBjb2xvbi4KLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6
VmFsdWUgcm9vdDsKLSAgY2hhciBjb25zdCBkb2NbXSA9ICIxOjI6MyI7Ci0gIGIuc2V0dGluZ3Nf
WyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3
Q2hhclJlYWRlcigpKTsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIGJvb2wgb2sgPSByZWFkZXIt
PnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgSlNP
TlRFU1RfQVNTRVJUKCFvayk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiogTGlu
ZSAxLCBDb2x1bW4gMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEV4dHJh
IG5vbi13aGl0ZXNwYWNlIGFmdGVyIEpTT04gdmFsdWUuXG4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycnMpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMSwgcm9vdC5hc0lu
dCgpKTsKLSAgZGVsZXRlIHJlYWRlcjsKLX0KLUpTT05URVNUX0ZJWFRVUkUoQ2hhclJlYWRlckZh
aWxJZkV4dHJhVGVzdCwgY29tbWVudEFmdGVyT2JqZWN0KSB7Ci0gIEpzb246OkNoYXJSZWFkZXJC
dWlsZGVyIGI7Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1td
ID0gInsgXCJwcm9wZXJ0eVwiIDogXCJ2YWx1ZVwiIH0gLy90cmFpbGluZ1xuLy9jb21tZW50XG4i
OwotICAgIGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJdID0gdHJ1ZTsKLSAgICBKc29uOjpDaGFy
UmVhZGVyKiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICAgIEpzb246OlN0cmluZyBlcnJz
OwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9j
KSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNU
X0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVB
TCgidmFsdWUiLCByb290WyJwcm9wZXJ0eSJdKTsKLSAgICBkZWxldGUgcmVhZGVyOwotICB9Ci19
Ci1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGNvbW1lbnRBZnRl
ckFycmF5KSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIEpzb246OlZhbHVlIHJv
b3Q7Ci0gIGNoYXIgY29uc3QgZG9jW10gPSAiWyBcInByb3BlcnR5XCIgLCBcInZhbHVlXCIgXSAv
L3RyYWlsaW5nXG4vL2NvbW1lbnRcbiI7Ci0gIGIuc2V0dGluZ3NfWyJmYWlsSWZFeHRyYSJdID0g
dHJ1ZTsKLSAgSnNvbjo6Q2hhclJlYWRlciogcmVhZGVyKGIubmV3Q2hhclJlYWRlcigpKTsKLSAg
SnNvbjo6U3RyaW5nIGVycnM7Ci0gIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsg
c3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgSlNPTlRFU1RfQVNTRVJUKG9rKTsK
LSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gIEpTT05URVNUX0FT
U0VSVF9FUVVBTCgidmFsdWUiLCByb290WzF1XSk7Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci1KU09O
VEVTVF9GSVhUVVJFKENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGNvbW1lbnRBZnRlckJvb2wp
IHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAg
Y2hhciBjb25zdCBkb2NbXSA9ICIgdHJ1ZSAvKnRyYWlsaW5nXG5jb21tZW50Ki8iOwotICBiLnNl
dHRpbmdzX1siZmFpbElmRXh0cmEiXSA9IHRydWU7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRl
cihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBib29sIG9rID0g
cmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7
Ci0gIEpTT05URVNUX0FTU0VSVChvayk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwo
IiIsIGVycnMpOwotICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcm9vdC5hc0Jvb2woKSk7
Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci1zdHJ1Y3QgQ2hhclJlYWRlckFsbG93RHJvcE51bGxUZXN0
IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJB
bGxvd0Ryb3BOdWxsVGVzdCwgaXNzdWUxNzgpIHsKLSAgSnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIg
YjsKLSAgYi5zZXR0aW5nc19bImFsbG93RHJvcHBlZE51bGxQbGFjZWhvbGRlcnMiXSA9IHRydWU7
Ci0gIEpzb246OlZhbHVlIHJvb3Q7Ci0gIEpzb246OlN0cmluZyBlcnJzOwotICBKc29uOjpDaGFy
UmVhZGVyKiByZWFkZXIoYi5uZXdDaGFyUmVhZGVyKCkpOwotICB7Ci0gICAgY2hhciBjb25zdCBk
b2NbXSA9ICJ7XCJhXCI6LFwiYlwiOnRydWV9IjsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJz
ZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUKG9rKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIiLCBlcnJz
KTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwoMnUsIHJvb3Quc2l6ZSgpKTsKLSAgICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6bnVsbFZhbHVlLCByb290LmdldCgiYSIsIHRydWUpKTsK
LSAgfQotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJ7XCJhXCI6fSI7Ci0gICAgYm9vbCBv
ayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVy
cnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklO
R19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDF1LCByb290LnNp
emUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246Om51bGxWYWx1ZSwgcm9vdC5n
ZXQoImEiLCB0cnVlKSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10gPSAiW10iOwot
ICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwg
JnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FT
U0VSVChlcnJzLmVtcHR5KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgwdSwgcm9vdC5z
aXplKCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTChKc29uOjphcnJheVZhbHVlLCByb290
KTsKLSAgfQotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJbbnVsbF0iOwotICAgIGJvb2wg
b2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZl
cnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVChlcnJz
LmVtcHR5KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxdSwgcm9vdC5zaXplKCkpOwot
ICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIlssXSI7Ci0gICAgYm9vbCBvayA9IHJl
YWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwot
ICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVB
TCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7
Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10gPSAiWywsLF0iOwotICAgIGJvb2wgb2sg
PSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJz
KTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9TVFJJTkdf
RVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCg0dSwgcm9vdC5zaXpl
KCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIltudWxsLF0iOwotICAgIGJv
b2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3Qs
ICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9T
VFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgydSwgcm9v
dC5zaXplKCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIlssbnVsbF0iOwot
ICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwg
JnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FT
U0VSVChlcnJzLmVtcHR5KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgydSwgcm9vdC5z
aXplKCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIlssLF0iOwotICAgIGJv
b2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpzdHJsZW4oZG9jKSwgJnJvb3Qs
ICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAgIEpTT05URVNUX0FTU0VSVF9T
VFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTCgzdSwgcm9v
dC5zaXplKCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIltudWxsLCxdIjsK
LSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRvYyArIHN0ZDo6c3RybGVuKGRvYyks
ICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUKG9rKTsKLSAgICBKU09OVEVTVF9B
U1NFUlRfU1RSSU5HX0VRVUFMKCIiLCBlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
M3UsIHJvb3Quc2l6ZSgpKTsKLSAgfQotICB7Ci0gICAgY2hhciBjb25zdCBkb2NbXSA9ICJbLG51
bGwsXSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxl
bihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDN1LCByb290LnNpemUoKSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9jW10g
PSAiWywsbnVsbF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3Rk
OjpzdHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwot
ICAgIEpTT05URVNUX0FTU0VSVChlcnJzLmVtcHR5KCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9F
UVVBTCgzdSwgcm9vdC5zaXplKCkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0g
IltbXSwsLF0iOwotICAgIGJvb2wgb2sgPSByZWFkZXItPnBhcnNlKGRvYywgZG9jICsgc3RkOjpz
dHJsZW4oZG9jKSwgJnJvb3QsICZlcnJzKTsKLSAgICBKU09OVEVTVF9BU1NFUlQob2spOwotICAg
IEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoIiIsIGVycnMpOwotICAgIEpTT05URVNUX0FT
U0VSVF9FUVVBTCg0dSwgcm9vdC5zaXplKCkpOwotICAgIEpTT05URVNUX0FTU0VSVF9FUVVBTChK
c29uOjphcnJheVZhbHVlLCByb290WzB1XSk7Ci0gIH0KLSAgewotICAgIGNoYXIgY29uc3QgZG9j
W10gPSAiWyxbXSwsXSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBz
dGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKDR1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VR
VUFMKEpzb246OmFycmF5VmFsdWUsIHJvb3RbMXVdKTsKLSAgfQotICB7Ci0gICAgY2hhciBjb25z
dCBkb2NbXSA9ICJbLCwsW11dIjsKLSAgICBib29sIG9rID0gcmVhZGVyLT5wYXJzZShkb2MsIGRv
YyArIHN0ZDo6c3RybGVuKGRvYyksICZyb290LCAmZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
KG9rKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoZXJycy5lbXB0eSgpKTsKLSAgICBKU09OVEVTVF9B
U1NFUlRfRVFVQUwoNHUsIHJvb3Quc2l6ZSgpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
SnNvbjo6YXJyYXlWYWx1ZSwgcm9vdFszdV0pOwotICB9Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0K
LXN0cnVjdCBDaGFyUmVhZGVyQWxsb3dTaW5nbGVRdW90ZXNUZXN0IDogSnNvblRlc3Q6OlRlc3RD
YXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJBbGxvd1NpbmdsZVF1b3Rlc1Rl
c3QsIGlzc3VlMTgyKSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7Ci0gIGIuc2V0dGlu
Z3NfWyJhbGxvd1NpbmdsZVF1b3RlcyJdID0gdHJ1ZTsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAg
SnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJS
ZWFkZXIoKSk7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsnYSc6dHJ1ZSxcImJcIjp0
cnVlfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxl
bihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKHRydWUs
IHJvb3QuZ2V0KCJhIiwgZmFsc2UpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwg
cm9vdC5nZXQoImIiLCBmYWxzZSkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0g
InsnYSc6ICd4JywgXCJiXCI6J3knfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9j
LCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FT
U0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0g
ICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1Rf
QVNTRVJUX1NUUklOR19FUVVBTCgieCIsIHJvb3RbImEiXS5hc1N0cmluZygpKTsKLSAgICBKU09O
VEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ5Iiwgcm9vdFsiYiJdLmFzU3RyaW5nKCkpOwotICB9
Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBDaGFyUmVhZGVyQWxsb3daZXJvZXNUZXN0
IDogSnNvblRlc3Q6OlRlc3RDYXNlIHt9OwotCi1KU09OVEVTVF9GSVhUVVJFKENoYXJSZWFkZXJB
bGxvd1plcm9lc1Rlc3QsIGlzc3VlMTc2KSB7Ci0gIEpzb246OkNoYXJSZWFkZXJCdWlsZGVyIGI7
Ci0gIGIuc2V0dGluZ3NfWyJhbGxvd1NpbmdsZVF1b3RlcyJdID0gdHJ1ZTsKLSAgSnNvbjo6VmFs
dWUgcm9vdDsKLSAgSnNvbjo6U3RyaW5nIGVycnM7Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRl
cihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gInsnYSc6
dHJ1ZSxcImJcIjp0cnVlfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2Mg
KyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChv
ayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJU
X0VRVUFMKHRydWUsIHJvb3QuZ2V0KCJhIiwgZmFsc2UpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwodHJ1ZSwgcm9vdC5nZXQoImIiLCBmYWxzZSkpOwotICB9Ci0gIHsKLSAgICBjaGFyIGNv
bnN0IGRvY1tdID0gInsnYSc6ICd4JywgXCJiXCI6J3knfSI7Ci0gICAgYm9vbCBvayA9IHJlYWRl
ci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAg
IEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgi
IiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0g
ICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgieCIsIHJvb3RbImEiXS5hc1N0cmluZygp
KTsKLSAgICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VRVUFMKCJ5Iiwgcm9vdFsiYiJdLmFzU3Ry
aW5nKCkpOwotICB9Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBDaGFyUmVhZGVyQWxs
b3dTcGVjaWFsRmxvYXRzVGVzdCA6IEpzb25UZXN0OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1Rf
RklYVFVSRShDaGFyUmVhZGVyQWxsb3dTcGVjaWFsRmxvYXRzVGVzdCwgaXNzdWUyMDkpIHsKLSAg
SnNvbjo6Q2hhclJlYWRlckJ1aWxkZXIgYjsKLSAgYi5zZXR0aW5nc19bImFsbG93U3BlY2lhbEZs
b2F0cyJdID0gdHJ1ZTsKLSAgSnNvbjo6VmFsdWUgcm9vdDsKLSAgSnNvbjo6U3RyaW5nIGVycnM7
Ci0gIEpzb246OkNoYXJSZWFkZXIqIHJlYWRlcihiLm5ld0NoYXJSZWFkZXIoKSk7Ci0gIHsKLSAg
ICBjaGFyIGNvbnN0IGRvY1tdID0gIntcImFcIjpOYU4sXCJiXCI6SW5maW5pdHksXCJjXCI6LUlu
ZmluaXR5fSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0
cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpTT05URVNUX0FTU0VSVChvayk7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwgZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNT
RVJUX0VRVUFMKDN1LCByb290LnNpemUoKSk7Ci0gICAgZG91YmxlIG4gPSByb290WyJhIl0uYXNE
b3VibGUoKTsKLSAgICBKU09OVEVTVF9BU1NFUlQoc3RkOjppc25hbihuKSk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5nZXQoImIiLCAwLjApKTsKLSAgICBKU09O
VEVTVF9BU1NFUlRfRVFVQUwoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5nZXQoImMiLCAwLjApKTsKLSAgfQot
Ci0gIHN0cnVjdCBUZXN0RGF0YSB7Ci0gICAgaW50IGxpbmU7Ci0gICAgYm9vbCBvazsKLSAgICBK
c29uOjpTdHJpbmcgaW47Ci0gIH07Ci0gIGNvbnN0IFRlc3REYXRhIHRlc3RfZGF0YVtdID0gewot
ICAgICAge19fTElORV9fLCB0cnVlLCAie1wiYVwiOjl9In0sICAgICAgICAgIC8vCi0gICAgICB7
X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOjBJbmZpbml0eX0ifSwgLy8KLSAgICAgIHtfX0xJTkVf
XywgZmFsc2UsICJ7XCJhXCI6MUluZmluaXR5fSJ9LCAvLwotICAgICAge19fTElORV9fLCBmYWxz
ZSwgIntcImFcIjo5SW5maW5pdHl9In0sIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wi
YVwiOjBuZmluaXR5fSJ9LCAgLy8KLSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJhXCI6MW5m
aW5pdHl9In0sICAvLwotICAgICAge19fTElORV9fLCBmYWxzZSwgIntcImFcIjo5bmZpbml0eX0i
fSwgIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOm5maW5pdHl9In0sICAgLy8K
LSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJhXCI6Lm5maW5pdHl9In0sICAvLwotICAgICAg
e19fTElORV9fLCBmYWxzZSwgIntcImFcIjo5bmZpbml0eX0ifSwgIC8vCi0gICAgICB7X19MSU5F
X18sIGZhbHNlLCAie1wiYVwiOi1uZmluaXR5fSJ9LCAgLy8KLSAgICAgIHtfX0xJTkVfXywgdHJ1
ZSwgIntcImFcIjpJbmZpbml0eX0ifSwgICAvLwotICAgICAge19fTElORV9fLCBmYWxzZSwgIntc
ImFcIjouSW5maW5pdHl9In0sIC8vCi0gICAgICB7X19MSU5FX18sIGZhbHNlLCAie1wiYVwiOl9J
bmZpbml0eX0ifSwgLy8KLSAgICAgIHtfX0xJTkVfXywgZmFsc2UsICJ7XCJhXCI6X25maW5pdHl9
In0sICAvLwotICAgICAge19fTElORV9fLCB0cnVlLCAie1wiYVwiOi1JbmZpbml0eX0ifSAgIC8v
Ci0gIH07Ci0gIGZvciAoY29uc3QgYXV0byYgdGQgOiB0ZXN0X2RhdGEpIHsKLSAgICBib29sIG9r
ID0gcmVhZGVyLT5wYXJzZSgmKnRkLmluLmJlZ2luKCksICYqdGQuaW4uYmVnaW4oKSArIHRkLmlu
LnNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm9vdCwgJmVycnMpOwotICAg
IEpTT05URVNUX0FTU0VSVCh0ZC5vayA9PSBvaykgPDwgImxpbmU6IiA8PCB0ZC5saW5lIDw8ICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGV4cGVjdGVkOiB7Igot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIm9rOiIgPDwgdGQub2sgPDwgIiwg
aW46XCciIDw8IHRkLmluIDw8ICJcJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8ICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBhY3R1YWw6
IHsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAib2s6IiA8PCBvayA8PCAi
fVxuIjsKLSAgfQotCi0gIHsKLSAgICBjaGFyIGNvbnN0IGRvY1tdID0gIntcInBvc0luZlwiOiBJ
bmZpbml0eSwgXCJOZWdJbmZcIjogLUluZmluaXR5fSI7Ci0gICAgYm9vbCBvayA9IHJlYWRlci0+
cGFyc2UoZG9jLCBkb2MgKyBzdGQ6OnN0cmxlbihkb2MpLCAmcm9vdCwgJmVycnMpOwotICAgIEpT
T05URVNUX0FTU0VSVChvayk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVBTCgiIiwg
ZXJycyk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKDJ1LCByb290LnNpemUoKSk7Ci0gICAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5p
dHkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFsicG9zSW5mIl0uYXNEb3VibGUo
KSk7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OmluZmluaXR5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbIk5lZ0luZiJd
LmFzRG91YmxlKCkpOwotICB9Ci0gIGRlbGV0ZSByZWFkZXI7Ci19Ci0KLXN0cnVjdCBCdWlsZGVy
VGVzdCA6IEpzb25UZXN0OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShCdWlsZGVy
VGVzdCwgc2V0dGluZ3MpIHsKLSAgewotICAgIEpzb246OlZhbHVlIGVycnM7Ci0gICAgSnNvbjo6
Q2hhclJlYWRlckJ1aWxkZXIgcmI7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCBy
Yi5zZXR0aW5nc18uaXNNZW1iZXIoImZvbyIpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwo
dHJ1ZSwgcmIudmFsaWRhdGUoJmVycnMpKTsKLSAgICByYlsiZm9vIl0gPSAiYmFyIjsKLSAgICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgcmIuc2V0dGluZ3NfLmlzTWVtYmVyKCJmb28iKSk7
Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCByYi52YWxpZGF0ZSgmZXJycykpOwot
ICB9Ci0gIHsKLSAgICBKc29uOjpWYWx1ZSBlcnJzOwotICAgIEpzb246OlN0cmVhbVdyaXRlckJ1
aWxkZXIgd2I7Ci0gICAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKGZhbHNlLCB3Yi5zZXR0aW5nc18u
aXNNZW1iZXIoImZvbyIpKTsKLSAgICBKU09OVEVTVF9BU1NFUlRfRVFVQUwodHJ1ZSwgd2IudmFs
aWRhdGUoJmVycnMpKTsKLSAgICB3YlsiZm9vIl0gPSAiYmFyIjsKLSAgICBKU09OVEVTVF9BU1NF
UlRfRVFVQUwodHJ1ZSwgd2Iuc2V0dGluZ3NfLmlzTWVtYmVyKCJmb28iKSk7Ci0gICAgSlNPTlRF
U1RfQVNTRVJUX0VRVUFMKGZhbHNlLCB3Yi52YWxpZGF0ZSgmZXJycykpOwotICB9Ci19Ci0KLXN0
cnVjdCBJdGVyYXRvclRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLUpTT05URVNUX0ZJ
WFRVUkUoSXRlcmF0b3JUZXN0LCBkaXN0YW5jZSkgewotICBKc29uOjpWYWx1ZSBqc29uOwotICBq
c29uWyJrMSJdID0gImEiOwotICBqc29uWyJrMiJdID0gImIiOwotICBpbnQgZGlzdCA9IDA7Ci0g
IEpzb246OlN0cmluZyBzdHI7Ci0gIGZvciAoSnNvbjo6VmFsdWVJdGVyYXRvciBpdCA9IGpzb24u
YmVnaW4oKTsgaXQgIT0ganNvbi5lbmQoKTsgKytpdCkgewotICAgIGRpc3QgPSBpdCAtIGpzb24u
YmVnaW4oKTsKLSAgICBzdHIgPSBpdC0+YXNTdHJpbmcoKS5jX3N0cigpOwotICB9Ci0gIEpTT05U
RVNUX0FTU0VSVF9FUVVBTCgxLCBkaXN0KTsKLSAgSlNPTlRFU1RfQVNTRVJUX1NUUklOR19FUVVB
TCgiYiIsIHN0cik7Ci19Ci0KLUpTT05URVNUX0ZJWFRVUkUoSXRlcmF0b3JUZXN0LCBuYW1lcykg
ewotICBKc29uOjpWYWx1ZSBqc29uOwotICBqc29uWyJrMSJdID0gImEiOwotICBqc29uWyJrMiJd
ID0gImIiOwotICBKc29uOjpWYWx1ZUl0ZXJhdG9yIGl0ID0ganNvbi5iZWdpbigpOwotICBKU09O
VEVTVF9BU1NFUlQoaXQgIT0ganNvbi5lbmQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTChK
c29uOjpWYWx1ZSgiazEiKSwgaXQua2V5KCkpOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VR
VUFMKCJrMSIsIGl0Lm5hbWUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgtMSwgaXQuaW5k
ZXgoKSk7Ci0gICsraXQ7Ci0gIEpTT05URVNUX0FTU0VSVChpdCAhPSBqc29uLmVuZCgpKTsKLSAg
SlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKCJrMiIpLCBpdC5rZXkoKSk7Ci0gIEpT
T05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwoImsyIiwgaXQubmFtZSgpKTsKLSAgSlNPTlRFU1Rf
QVNTRVJUX0VRVUFMKC0xLCBpdC5pbmRleCgpKTsKLSAgKytpdDsKLSAgSlNPTlRFU1RfQVNTRVJU
KGl0ID09IGpzb24uZW5kKCkpOwotfQotCi1KU09OVEVTVF9GSVhUVVJFKEl0ZXJhdG9yVGVzdCwg
aW5kZXhlcykgewotICBKc29uOjpWYWx1ZSBqc29uOwotICBqc29uWzBdID0gImEiOwotICBqc29u
WzFdID0gImIiOwotICBKc29uOjpWYWx1ZUl0ZXJhdG9yIGl0ID0ganNvbi5iZWdpbigpOwotICBK
U09OVEVTVF9BU1NFUlQoaXQgIT0ganNvbi5lbmQoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVB
TChKc29uOjpWYWx1ZShKc29uOjpBcnJheUluZGV4KDApKSwgaXQua2V5KCkpOwotICBKU09OVEVT
VF9BU1NFUlRfU1RSSU5HX0VRVUFMKCIiLCBpdC5uYW1lKCkpOwotICBKU09OVEVTVF9BU1NFUlRf
RVFVQUwoMCwgaXQuaW5kZXgoKSk7Ci0gICsraXQ7Ci0gIEpTT05URVNUX0FTU0VSVChpdCAhPSBq
c29uLmVuZCgpKTsKLSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKEpzb246OlZhbHVlKEpzb246OkFy
cmF5SW5kZXgoMSkpLCBpdC5rZXkoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9TVFJJTkdfRVFVQUwo
IiIsIGl0Lm5hbWUoKSk7Ci0gIEpTT05URVNUX0FTU0VSVF9FUVVBTCgxLCBpdC5pbmRleCgpKTsK
LSAgKytpdDsKLSAgSlNPTlRFU1RfQVNTRVJUKGl0ID09IGpzb24uZW5kKCkpOwotfQotCi1KU09O
VEVTVF9GSVhUVVJFKEl0ZXJhdG9yVGVzdCwgY29uc3QpIHsKLSAgSnNvbjo6VmFsdWUgY29uc3Qg
djsKLSAgSlNPTlRFU1RfQVNTRVJUX1RIUk9XUygKLSAgICAgIEpzb246OlZhbHVlOjppdGVyYXRv
ciBpdCh2LmJlZ2luKCkpIC8vIENvbXBpbGUsIGJ1dCB0aHJvdy4KLSAgKTsKLQotICBKc29uOjpW
YWx1ZSB2YWx1ZTsKLQotICBmb3IgKGludCBpID0gOTsgaSA8IDEyOyArK2kpIHsKLSAgICBKc29u
OjpPU3RyaW5nU3RyZWFtIG91dDsKLSAgICBvdXQgPDwgc3RkOjpzZXR3KDIpIDw8IGk7Ci0gICAg
SnNvbjo6U3RyaW5nIHN0ciA9IG91dC5zdHIoKTsKLSAgICB2YWx1ZVtzdHJdID0gc3RyOwotICB9
Ci0KLSAgSnNvbjo6T1N0cmluZ1N0cmVhbSBvdXQ7Ci0gIC8vIGluIG9sZCBjb2RlLCB0aGlzIHdp
bGwgZ2V0IGEgY29tcGlsZSBlcnJvcgotICBKc29uOjpWYWx1ZTo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHZhbHVlLmJlZ2luKCk7Ci0gIGZvciAoOyBpdGVyICE9IHZhbHVlLmVuZCgpOyArK2l0ZXIp
IHsKLSAgICBvdXQgPDwgKml0ZXIgPDwgJywnOwotICB9Ci0gIEpzb246OlN0cmluZyBleHBlY3Rl
ZCA9ICJcIiA5XCIsXCIxMFwiLFwiMTFcIiwiOwotICBKU09OVEVTVF9BU1NFUlRfU1RSSU5HX0VR
VUFMKGV4cGVjdGVkLCBvdXQuc3RyKCkpOwotfQotCi1zdHJ1Y3QgUlZhbHVlVGVzdCA6IEpzb25U
ZXN0OjpUZXN0Q2FzZSB7fTsKLQotSlNPTlRFU1RfRklYVFVSRShSVmFsdWVUZXN0LCBtb3ZlQ29u
c3RydWN0aW9uKSB7Ci0gIEpzb246OlZhbHVlIGpzb247Ci0gIGpzb25bImtleSJdID0gInZhbHVl
IjsKLSAgSnNvbjo6VmFsdWUgbW92ZWQgPSBzdGQ6Om1vdmUoanNvbik7Ci0gIEpTT05URVNUX0FT
U0VSVChtb3ZlZCAhPSBqc29uKTsgLy8gUG9zc2libHkgbm90IG51bGxWYWx1ZTsgZGVmaW5pdGVs
eSBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlcXVhbC4KLSAgSlNP
TlRFU1RfQVNTRVJUX0VRVUFMKEpzb246Om9iamVjdFZhbHVlLCBtb3ZlZC50eXBlKCkpOwotICBK
U09OVEVTVF9BU1NFUlRfRVFVQUwoSnNvbjo6c3RyaW5nVmFsdWUsIG1vdmVkWyJrZXkiXS50eXBl
KCkpOwotfQotCi1zdHJ1Y3QgRnV6elRlc3QgOiBKc29uVGVzdDo6VGVzdENhc2Uge307Ci0KLS8v
IEJ1aWxkIGFuZCBydW4gdGhlIGZ1enogdGVzdCB3aXRob3V0IGFueSBmdXp6ZXIsIHNvIHRoYXQg
aXQncyBndWFyYW50ZWVkIG5vdAotLy8gZ28gb3V0IG9mIGRhdGUsIGV2ZW4gaWYgaXQncyBuZXZl
ciBydW4gYXMgYW4gYWN0dWFsIGZ1enogdGVzdC4KLUpTT05URVNUX0ZJWFRVUkUoRnV6elRlc3Qs
IGZ1enpEb2VzbnRDcmFzaCkgewotICBjb25zdCBzdGQ6OnN0cmluZyBleGFtcGxlID0gInt9IjsK
LSAgSlNPTlRFU1RfQVNTRVJUX0VRVUFMKAotICAgICAgMCwKLSAgICAgIExMVk1GdXp6ZXJUZXN0
T25lSW5wdXQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZXhhbXBsZS5jX3N0cigp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZS5zaXplKCkpKTsKLX0KLQot
aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkgewotICBKc29uVGVzdDo6UnVu
bmVyIHJ1bm5lcjsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVz
dCwgY2hlY2tOb3JtYWxpemVGbG9hdGluZ1BvaW50U3RyKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgbWVtYmVyQ291bnQpOwotICBKU09OVEVTVF9SRUdJ
U1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBvYmplY3RzKTsKLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgYXJyYXlzKTsKLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgYXJyYXlJc3N1ZTI1Mik7Ci0gIEpTT05U
RVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG51bGwpOwotICBKU09OVEVT
VF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBzdHJpbmdzKTsKLSAgSlNPTlRF
U1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgYm9vbHMpOwotICBKU09OVEVT
VF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBpbnRlZ2Vycyk7Ci0gIEpTT05U
RVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG5vbkludGVnZXJzKTsKLSAg
SlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFyZU51bGwp
OwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBjb21wYXJl
SW50KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29t
cGFyZVVJbnQpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgVmFsdWVUZXN0
LCBjb21wYXJlRG91YmxlKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZh
bHVlVGVzdCwgY29tcGFyZVN0cmluZyk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVu
bmVyLCBWYWx1ZVRlc3QsIGNvbXBhcmVCb29sZWFuKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklY
VFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFyZUFycmF5KTsKLSAgSlNPTlRFU1RfUkVHSVNU
RVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgY29tcGFyZU9iamVjdCk7Ci0gIEpTT05URVNU
X1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIGNvbXBhcmVUeXBlKTsKLSAgSlNP
TlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgQ29weU9iamVjdCk7Ci0g
IEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG9mZnNldEFjY2Vz
c29ycyk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIHR5
cGVDaGVja3NUaHJvd0V4Y2VwdGlvbnMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1
bm5lciwgVmFsdWVUZXN0LCBTdGF0aWNTdHJpbmcpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhU
VVJFKHJ1bm5lciwgVmFsdWVUZXN0LCBXaWRlU3RyaW5nKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgQ29tbWVudEJlZm9yZSk7Ci0gIC8vIEpTT05URVNU
X1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIG51bGxzKTsKLSAgSlNPTlRFU1Rf
UkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgemVyb2VzKTsKLSAgSlNPTlRFU1Rf
UkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgemVyb2VzSW5LZXlzKTsKLSAgSlNP
TlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFZhbHVlVGVzdCwgc3BlY2lhbEZsb2F0cyk7
Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBWYWx1ZVRlc3QsIHByZWNpc2lv
bik7Ci0KLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFdyaXRlclRlc3QsIGRy
b3BOdWxsUGxhY2Vob2xkZXJzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IFN0cmVhbVdyaXRlclRlc3QsIGRyb3BOdWxsUGxhY2Vob2xkZXJzKTsKLSAgSlNPTlRFU1RfUkVH
SVNURVJfRklYVFVSRShydW5uZXIsIFN0cmVhbVdyaXRlclRlc3QsIHdyaXRlWmVyb2VzKTsKLQot
ICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgUmVhZGVyVGVzdCwgcGFyc2VXaXRo
Tm9FcnJvcnMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgUmVhZGVyVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVdpdGhOb0Vycm9yc1Rlc3RpbmdP
ZmZzZXRzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIFJlYWRlclRlc3Qs
IHBhcnNlV2l0aE9uZUVycm9yKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIs
IFJlYWRlclRlc3QsIHBhcnNlQ2hpbmVzZVdpdGhPbmVFcnJvcik7Ci0gIEpTT05URVNUX1JFR0lT
VEVSX0ZJWFRVUkUocnVubmVyLCBSZWFkZXJUZXN0LCBwYXJzZVdpdGhEZXRhaWxFcnJvcik7Ci0K
LSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJUZXN0LCBwYXJz
ZVdpdGhOb0Vycm9ycyk7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBDaGFy
UmVhZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVdpdGhOb0Vycm9y
c1Rlc3RpbmdPZmZzZXRzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENo
YXJSZWFkZXJUZXN0LCBwYXJzZVdpdGhPbmVFcnJvcik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJ
WFRVUkUocnVubmVyLCBDaGFyUmVhZGVyVGVzdCwgcGFyc2VDaGluZXNlV2l0aE9uZUVycm9yKTsK
LSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJUZXN0LCBwYXJz
ZVdpdGhEZXRhaWxFcnJvcik7Ci0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBD
aGFyUmVhZGVyVGVzdCwgcGFyc2VXaXRoU3RhY2tMaW1pdCk7Ci0KLSAgSlNPTlRFU1RfUkVHSVNU
RVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJTdHJpY3RNb2RlVGVzdCwgZHVwS2V5cyk7Ci0K
LSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJGYWlsSWZFeHRy
YVRlc3QsIGlzc3VlMTY0KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENo
YXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsIGlzc3VlMTA3KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWVudEFmdGVyT2JqZWN0KTsKLSAgSlNPTlRFU1RfUkVHSVNURVJf
RklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJGYWlsSWZFeHRyYVRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWVudEFmdGVyQXJyYXkpOwotICBKU09OVEVTVF9SRUdJU1RFUl9G
SVhUVVJFKHJ1bm5lciwgQ2hhclJlYWRlckZhaWxJZkV4dHJhVGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tZW50QWZ0ZXJCb29sKTsKLQotICBKU09OVEVTVF9SRUdJU1RFUl9G
SVhUVVJFKHJ1bm5lciwgQ2hhclJlYWRlckFsbG93RHJvcE51bGxUZXN0LCBpc3N1ZTE3OCk7Ci0K
LSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShydW5uZXIsIENoYXJSZWFkZXJBbGxvd1Npbmds
ZVF1b3Rlc1Rlc3QsIGlzc3VlMTgyKTsKLQotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1
bm5lciwgQ2hhclJlYWRlckFsbG93WmVyb2VzVGVzdCwgaXNzdWUxNzYpOwotCi0gIEpTT05URVNU
X1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBDaGFyUmVhZGVyQWxsb3dTcGVjaWFsRmxvYXRzVGVz
dCwgaXNzdWUyMDkpOwotCi0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVyLCBCdWls
ZGVyVGVzdCwgc2V0dGluZ3MpOwotCi0gIEpTT05URVNUX1JFR0lTVEVSX0ZJWFRVUkUocnVubmVy
LCBJdGVyYXRvclRlc3QsIGRpc3RhbmNlKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklYVFVSRShy
dW5uZXIsIEl0ZXJhdG9yVGVzdCwgbmFtZXMpOwotICBKU09OVEVTVF9SRUdJU1RFUl9GSVhUVVJF
KHJ1bm5lciwgSXRlcmF0b3JUZXN0LCBpbmRleGVzKTsKLSAgSlNPTlRFU1RfUkVHSVNURVJfRklY
VFVSRShydW5uZXIsIEl0ZXJhdG9yVGVzdCwgY29uc3QpOwotCi0gIEpTT05URVNUX1JFR0lTVEVS
X0ZJWFRVUkUocnVubmVyLCBSVmFsdWVUZXN0LCBtb3ZlQ29uc3RydWN0aW9uKTsKLQotICBKU09O
VEVTVF9SRUdJU1RFUl9GSVhUVVJFKHJ1bm5lciwgRnV6elRlc3QsIGZ1enpEb2VzbnRDcmFzaCk7
Ci0KLSAgcmV0dXJuIHJ1bm5lci5ydW5Db21tYW5kTGluZShhcmdjLCBhcmd2KTsKLX0KLQotI2lm
IGRlZmluZWQoX19HTlVDX18pCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvY2xlYW50ZXN0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9jbGVhbnRlc3Rz
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNmQ1YjliNDYxMDQuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvY2xlYW50ZXN0cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDcgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNv
bkNwcCBBdXRob3JzCi0jIERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMg
ZG9tYWluIGlmIGRlc2lyZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24u
Ci0jIFNlZSBmaWxlIExJQ0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3Bw
LnNvdXJjZWZvcmdlLm5ldC9MSUNFTlNFCi0KLSIiIlJlbW92ZXMgYWxsIGZpbGVzIGNyZWF0ZWQg
ZHVyaW5nIHRlc3RpbmcuIiIiCi0KLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKLQotcGF0aHMgPSBb
XQotZm9yIHBhdHRlcm4gaW4gWyAnKi5hY3R1YWwnLCAnKi5hY3R1YWwtcmV3cml0ZScsICcqLnJl
d3JpdGUnLCAnKi5wcm9jZXNzLW91dHB1dCcgXToKLSAgICBwYXRocyArPSBnbG9iLmdsb2IoJ2Rh
dGEvJyArIHBhdHRlcm4pCi0KLWZvciBwYXRoIGluIHBhdGhzOgotICAgIG9zLnVubGluayhwYXRo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvZmFpbF90ZXN0X2FycmF5XzAxLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS9mYWlsX3Rlc3RfYXJyYXlfMDEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjcyYTZkMDc3NDk0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvZmFpbF90ZXN0X2FycmF5XzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1b
IDEgMiAzXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvZmFpbF90ZXN0X3N0YWNrX2xpbWl0
Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS9mYWlsX3Rlc3Rfc3RhY2tfbGltaXQuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUyNGUwYmJiOTU1Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvZmFpbF90ZXN0X3N0YWNrX2xpbWl0Lmpzb24KKysrIC9kZXYvbnVsbApA
QCAtMSArMCwwIEBACi1bW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW11dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0
X2FycmF5XzAxLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5leHBlY3Rl
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0MWZmNzUzY2IzLi4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5leHBlY3RlZAorKysgL2Rldi9u
dWxsCkBAIC0xICswLDAgQEAKLS49W10KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YXJyYXlfMDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDEuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1MTQ4OGM3MDY2Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotW10KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDIuZXhwZWN0
ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlZjFmMjYyM2RlMDYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2FycmF5XzAyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi0uPVtdCi0uWzBdPTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlf
MDIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDIuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzY2MDg3M2QxMDMxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9hcnJheV8wMi5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
WzFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzAzLmV4cGVjdGVkIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2Q4ZGMxOGViMWU5Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9hcnJheV8wMy5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAot
Lj1bXQotLlswXT0xCi0uWzFdPTIKLS5bMl09MwotLlszXT00Ci0uWzRdPTUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YXJyYXlfMDMuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzZjkyNDc1NTkw
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wMy5qc29uCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyAxLCAyICwgIDMsNCw1XQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNC5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfYXJyYXlfMDQuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkNGFk
ZDk3OTQ2Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQu
ZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLS49W10KLS5bMF09MQotLlsx
XT0iYWJjIgotLlsyXT0xMi4zCi0uWzNdPS00CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2FycmF5XzA0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA0Lmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjY2E1NDZiMmM2NC4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDQuanNvbgorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLVsxLCAiYWJjIiAsIDEyLjMsIC00XQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9hcnJheV8wNS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDUu
ZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2ZmODdjMmFiMC4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDUuZXhwZWN0ZWQKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLj1bXQotLlswXT0xCi0uWzFdPTIKLS5bMl09
MwotLlszXT00Ci0uWzRdPTUKLS5bNV09NgotLls2XT03Ci0uWzddPTgKLS5bOF09OQotLls5XT0x
MAotLlsxMF09MTEKLS5bMTFdPTEyCi0uWzEyXT0xMwotLlsxM109MTQKLS5bMTRdPTE1Ci0uWzE1
XT0xNgotLlsxNl09MTcKLS5bMTddPTE4Ci0uWzE4XT0xOQotLlsxOV09MjAKLS5bMjBdPTIxCi0u
WzIxXT0yMgotLlsyMl09MjMKLS5bMjNdPTI0Ci0uWzI0XT0yNQotLlsyNV09MjYKLS5bMjZdPTI3
Ci0uWzI3XT0yOAotLlsyOF09MjkKLS5bMjldPTMwCi0uWzMwXT0zMQotLlszMV09MzIKLS5bMzJd
PTMzCi0uWzMzXT0zNAotLlszNF09MzUKLS5bMzVdPTM2Ci0uWzM2XT0zNwotLlszN109MzgKLS5b
MzhdPTM5Ci0uWzM5XT00MAotLls0MF09NDEKLS5bNDFdPTQyCi0uWzQyXT00MwotLls0M109NDQK
LS5bNDRdPTQ1Ci0uWzQ1XT00NgotLls0Nl09NDcKLS5bNDddPTQ4Ci0uWzQ4XT00OQotLls0OV09
NTAKLS5bNTBdPTUxCi0uWzUxXT01MgotLls1Ml09NTMKLS5bNTNdPTU0Ci0uWzU0XT01NQotLls1
NV09NTYKLS5bNTZdPTU3Ci0uWzU3XT01OAotLls1OF09NTkKLS5bNTldPTYwCi0uWzYwXT02MQot
Lls2MV09NjIKLS5bNjJdPTYzCi0uWzYzXT02NAotLls2NF09NjUKLS5bNjVdPTY2Ci0uWzY2XT02
NwotLls2N109NjgKLS5bNjhdPTY5Ci0uWzY5XT03MAotLls3MF09NzEKLS5bNzFdPTcyCi0uWzcy
XT03MwotLls3M109NzQKLS5bNzRdPTc1Ci0uWzc1XT03NgotLls3Nl09NzcKLS5bNzddPTc4Ci0u
Wzc4XT03OQotLls3OV09ODAKLS5bODBdPTgxCi0uWzgxXT04MgotLls4Ml09ODMKLS5bODNdPTg0
Ci0uWzg0XT04NQotLls4NV09ODYKLS5bODZdPTg3Ci0uWzg3XT04OAotLls4OF09ODkKLS5bODld
PTkwCi0uWzkwXT05MQotLls5MV09OTIKLS5bOTJdPTkzCi0uWzkzXT05NAotLls5NF09OTUKLS5b
OTVdPTk2Ci0uWzk2XT05NwotLls5N109OTgKLS5bOThdPTk5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2FycmF5XzA1Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA1
Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MDlkNmM5YTFhZC4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDUuanNvbgorKysgL2Rldi9u
dWxsCkBAIC0xICswLDAgQEAKLVsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEy
LCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYs
IDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwg
NDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1
NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5
LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMs
IDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5Nywg
OTgsIDk5XQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfYXJyYXlfMDYuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5
XzA2LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzlmNDhlYWFjZDUu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA2LmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0uPVtdCi0uWzBdPSJhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiCi0uWzFdPSJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi
YmJiYmJiYmJiYmJiIgotLlsyXT0iY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MiCi0uWzNdPSJkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNi5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9hcnJheV8wNi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjZjNTE2
YWZkZWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2FycmF5XzA2Lmpz
b24KKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVsgImFhYWFhYWFhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYSIsIAotICAiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi
YmJiYiIsCi0gICJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyIsCi0gICJkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIiBdClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5leHBl
Y3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDcuZXhwZWN0ZWQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVlMmZhZmMwMTBlMi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDcuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIy
ICswLDAgQEAKLS49W10KLS5bMF09W10KLS5bMF1bMF09IkEiCi0uWzBdWzFdPTAKLS5bMF1bMl09
MQotLlswXVszXT0yCi0uWzBdWzRdPTMKLS5bMF1bNV09NAotLlswXVs2XT01Ci0uWzBdWzddPTYK
LS5bMF1bOF09NwotLlswXVs5XT04Ci0uWzBdWzEwXT05Ci0uWzBdWzExXT0xMAotLlswXVsxMl09
MTEKLS5bMF1bMTNdPTEyCi0uWzBdWzE0XT0xMwotLlswXVsxNV09MTQKLS5bMF1bMTZdPTE1Ci0u
WzBdWzE3XT0xNgotLlswXVsxOF09MTcKLS5bMF1bMTldPTE4Ci0uWzBdWzIwXT0xOQotLlswXVsy
MV09MjAKLS5bMF1bMjJdPTIxCi0uWzBdWzIzXT0yMgotLlswXVsyNF09MjMKLS5bMF1bMjVdPTI0
Ci0uWzBdWzI2XT0yNQotLlswXVsyN109MjYKLS5bMF1bMjhdPTI3Ci0uWzBdWzI5XT0yOAotLlsw
XVszMF09MjkKLS5bMF1bMzFdPTMwCi0uWzBdWzMyXT0zMQotLlswXVszM109MzIKLS5bMF1bMzRd
PTMzCi0uWzBdWzM1XT0zNAotLlswXVszNl09MzUKLS5bMF1bMzddPTM2Ci0uWzBdWzM4XT0zNwot
LlswXVszOV09MzgKLS5bMF1bNDBdPTM5Ci0uWzBdWzQxXT00MAotLlswXVs0Ml09NDEKLS5bMF1b
NDNdPTQyCi0uWzBdWzQ0XT00MwotLlswXVs0NV09NDQKLS5bMF1bNDZdPTQ1Ci0uWzBdWzQ3XT00
NgotLlswXVs0OF09NDcKLS5bMF1bNDldPTQ4Ci0uWzBdWzUwXT00OQotLlswXVs1MV09NTAKLS5b
MF1bNTJdPTUxCi0uWzBdWzUzXT01MgotLlswXVs1NF09NTMKLS5bMF1bNTVdPTU0Ci0uWzBdWzU2
XT01NQotLlswXVs1N109NTYKLS5bMF1bNThdPTU3Ci0uWzBdWzU5XT01OAotLlswXVs2MF09NTkK
LS5bMF1bNjFdPTYwCi0uWzBdWzYyXT02MQotLlswXVs2M109NjIKLS5bMF1bNjRdPTYzCi0uWzBd
WzY1XT02NAotLlswXVs2Nl09NjUKLS5bMF1bNjddPTY2Ci0uWzBdWzY4XT02NwotLlswXVs2OV09
NjgKLS5bMF1bNzBdPTY5Ci0uWzBdWzcxXT03MAotLlswXVs3Ml09NzEKLS5bMF1bNzNdPTcyCi0u
WzBdWzc0XT03MwotLlswXVs3NV09NzQKLS5bMF1bNzZdPTc1Ci0uWzBdWzc3XT03NgotLlswXVs3
OF09NzcKLS5bMF1bNzldPTc4Ci0uWzBdWzgwXT03OQotLlswXVs4MV09ODAKLS5bMF1bODJdPTgx
Ci0uWzBdWzgzXT04MgotLlswXVs4NF09ODMKLS5bMF1bODVdPTg0Ci0uWzBdWzg2XT04NQotLlsw
XVs4N109ODYKLS5bMF1bODhdPTg3Ci0uWzBdWzg5XT04OAotLlswXVs5MF09ODkKLS5bMF1bOTFd
PTkwCi0uWzBdWzkyXT05MQotLlswXVs5M109OTIKLS5bMF1bOTRdPTkzCi0uWzBdWzk1XT05NAot
LlswXVs5Nl09OTUKLS5bMF1bOTddPTk2Ci0uWzBdWzk4XT05NwotLlswXVs5OV09OTgKLS5bMF1b
MTAwXT05OQotLlswXVsxMDFdPTEwMAotLlswXVsxMDJdPTEwMQotLlswXVsxMDNdPTEwMgotLlsw
XVsxMDRdPTEwMwotLlswXVsxMDVdPTEwNAotLlswXVsxMDZdPTEwNQotLlswXVsxMDddPTEwNgot
LlswXVsxMDhdPTEwNwotLlswXVsxMDldPTEwOAotLlswXVsxMTBdPTEwOQotLlswXVsxMTFdPTEx
MAotLlswXVsxMTJdPTExMQotLlswXVsxMTNdPTExMgotLlswXVsxMTRdPTExMwotLlswXVsxMTVd
PTExNAotLlswXVsxMTZdPTExNQotLlswXVsxMTddPTExNgotLlswXVsxMThdPTExNwotLlswXVsx
MTldPTExOAotLlswXVsxMjBdPTExOQotLlswXVsxMjFdPTEyMAotLlswXVsxMjJdPTEyMQotLlsw
XVsxMjNdPTEyMgotLlswXVsxMjRdPTEyMwotLlswXVsxMjVdPTEyNAotLlswXVsxMjZdPTEyNQot
LlswXVsxMjddPTEyNgotLlswXVsxMjhdPTEyNwotLlswXVsxMjldPTEyOAotLlswXVsxMzBdPTEy
OQotLlswXVsxMzFdPTEzMAotLlswXVsxMzJdPTEzMQotLlswXVsxMzNdPTEzMgotLlswXVsxMzRd
PTEzMwotLlswXVsxMzVdPTEzNAotLlswXVsxMzZdPTEzNQotLlswXVsxMzddPTEzNgotLlswXVsx
MzhdPTEzNwotLlswXVsxMzldPTEzOAotLlswXVsxNDBdPTEzOQotLlswXVsxNDFdPTE0MAotLlsw
XVsxNDJdPTE0MQotLlswXVsxNDNdPTE0MgotLlswXVsxNDRdPTE0MwotLlswXVsxNDVdPTE0NAot
LlswXVsxNDZdPTE0NQotLlswXVsxNDddPTE0NgotLlswXVsxNDhdPTE0NwotLlswXVsxNDldPTE0
OAotLlswXVsxNTBdPTE0OQotLlswXVsxNTFdPTE1MAotLlswXVsxNTJdPTE1MQotLlswXVsxNTNd
PTE1MgotLlswXVsxNTRdPTE1MwotLlswXVsxNTVdPTE1NAotLlswXVsxNTZdPTE1NQotLlswXVsx
NTddPTE1NgotLlswXVsxNThdPTE1NwotLlswXVsxNTldPTE1OAotLlswXVsxNjBdPTE1OQotLlsw
XVsxNjFdPTE2MAotLlswXVsxNjJdPTE2MQotLlswXVsxNjNdPTE2MgotLlswXVsxNjRdPTE2Mwot
LlswXVsxNjVdPTE2NAotLlswXVsxNjZdPTE2NQotLlswXVsxNjddPTE2NgotLlswXVsxNjhdPTE2
NwotLlswXVsxNjldPTE2OAotLlswXVsxNzBdPTE2OQotLlswXVsxNzFdPTE3MAotLlswXVsxNzJd
PTE3MQotLlswXVsxNzNdPTE3MgotLlswXVsxNzRdPTE3MwotLlswXVsxNzVdPTE3NAotLlswXVsx
NzZdPTE3NQotLlswXVsxNzddPTE3NgotLlswXVsxNzhdPTE3NwotLlswXVsxNzldPTE3OAotLlsw
XVsxODBdPTE3OQotLlswXVsxODFdPTE4MAotLlswXVsxODJdPTE4MQotLlswXVsxODNdPTE4Mgot
LlswXVsxODRdPTE4MwotLlswXVsxODVdPTE4NAotLlswXVsxODZdPTE4NQotLlswXVsxODddPTE4
NgotLlswXVsxODhdPTE4NwotLlswXVsxODldPTE4OAotLlswXVsxOTBdPTE4OQotLlswXVsxOTFd
PTE5MAotLlswXVsxOTJdPTE5MQotLlswXVsxOTNdPTE5MgotLlswXVsxOTRdPTE5MwotLlswXVsx
OTVdPTE5NAotLlswXVsxOTZdPTE5NQotLlswXVsxOTddPTE5NgotLlswXVsxOThdPTE5NwotLlsw
XVsxOTldPTE5OAotLlswXVsyMDBdPTE5OQotLlswXVsyMDFdPTIwMAotLlswXVsyMDJdPTIwMQot
LlswXVsyMDNdPTIwMgotLlswXVsyMDRdPTIwMwotLlswXVsyMDVdPTIwNAotLlswXVsyMDZdPTIw
NQotLlswXVsyMDddPTIwNgotLlswXVsyMDhdPTIwNwotLlswXVsyMDldPTIwOAotLlswXVsyMTBd
PTIwOQotLlswXVsyMTFdPTIxMAotLlswXVsyMTJdPTIxMQotLlswXVsyMTNdPTIxMgotLlswXVsy
MTRdPTIxMwotLlswXVsyMTVdPTIxNAotLlswXVsyMTZdPTIxNQotLlswXVsyMTddPTIxNgotLlsw
XVsyMThdPTIxNwotLlswXVsyMTldPTIxOAotLlswXVsyMjBdPTIxOQotLlswXVsyMjFdPTIyMAot
LlswXVsyMjJdPTIyMQotLlswXVsyMjNdPTIyMgotLlswXVsyMjRdPTIyMwotLlswXVsyMjVdPTIy
NAotLlswXVsyMjZdPTIyNQotLlswXVsyMjddPTIyNgotLlswXVsyMjhdPTIyNwotLlswXVsyMjld
PTIyOAotLlswXVsyMzBdPTIyOQotLlswXVsyMzFdPTIzMAotLlswXVsyMzJdPTIzMQotLlswXVsy
MzNdPTIzMgotLlswXVsyMzRdPTIzMwotLlswXVsyMzVdPTIzNAotLlswXVsyMzZdPTIzNQotLlsw
XVsyMzddPTIzNgotLlswXVsyMzhdPTIzNwotLlswXVsyMzldPTIzOAotLlswXVsyNDBdPTIzOQot
LlswXVsyNDFdPTI0MAotLlswXVsyNDJdPTI0MQotLlswXVsyNDNdPTI0MgotLlswXVsyNDRdPTI0
MwotLlswXVsyNDVdPTI0NAotLlswXVsyNDZdPTI0NQotLlswXVsyNDddPTI0NgotLlswXVsyNDhd
PTI0NwotLlswXVsyNDldPTI0OAotLlswXVsyNTBdPTI0OQotLlswXVsyNTFdPTI1MAotLlswXVsy
NTJdPTI1MQotLlswXVsyNTNdPTI1MgotLlswXVsyNTRdPTI1MwotLlswXVsyNTVdPTI1NAotLlsw
XVsyNTZdPTI1NQotLlswXVsyNTddPTI1NgotLlswXVsyNThdPTI1NwotLlswXVsyNTldPTI1OAot
LlswXVsyNjBdPTI1OQotLlswXVsyNjFdPTI2MAotLlswXVsyNjJdPTI2MQotLlswXVsyNjNdPTI2
MgotLlswXVsyNjRdPTI2MwotLlswXVsyNjVdPTI2NAotLlswXVsyNjZdPTI2NQotLlswXVsyNjdd
PTI2NgotLlswXVsyNjhdPTI2NwotLlswXVsyNjldPTI2OAotLlswXVsyNzBdPTI2OQotLlswXVsy
NzFdPTI3MAotLlswXVsyNzJdPTI3MQotLlswXVsyNzNdPTI3MgotLlswXVsyNzRdPTI3MwotLlsw
XVsyNzVdPTI3NAotLlswXVsyNzZdPTI3NQotLlswXVsyNzddPTI3NgotLlswXVsyNzhdPTI3Nwot
LlswXVsyNzldPTI3OAotLlswXVsyODBdPTI3OQotLlswXVsyODFdPTI4MAotLlswXVsyODJdPTI4
MQotLlswXVsyODNdPTI4MgotLlswXVsyODRdPTI4MwotLlswXVsyODVdPTI4NAotLlswXVsyODZd
PTI4NQotLlswXVsyODddPTI4NgotLlswXVsyODhdPTI4NwotLlswXVsyODldPTI4OAotLlswXVsy
OTBdPTI4OQotLlswXVsyOTFdPTI5MAotLlswXVsyOTJdPTI5MQotLlswXVsyOTNdPTI5MgotLlsw
XVsyOTRdPTI5MwotLlswXVsyOTVdPTI5NAotLlswXVsyOTZdPTI5NQotLlswXVsyOTddPTI5Ngot
LlswXVsyOThdPTI5NwotLlswXVsyOTldPTI5OAotLlswXVszMDBdPTI5OQotLlswXVszMDFdPTMw
MAotLlswXVszMDJdPTMwMQotLlswXVszMDNdPTMwMgotLlswXVszMDRdPTMwMwotLlswXVszMDVd
PTMwNAotLlswXVszMDZdPTMwNQotLlswXVszMDddPTMwNgotLlswXVszMDhdPTMwNwotLlswXVsz
MDldPTMwOAotLlswXVszMTBdPTMwOQotLlswXVszMTFdPTMxMAotLlswXVszMTJdPTMxMQotLlsw
XVszMTNdPTMxMgotLlswXVszMTRdPTMxMwotLlswXVszMTVdPTMxNAotLlswXVszMTZdPTMxNQot
LlswXVszMTddPTMxNgotLlswXVszMThdPTMxNwotLlswXVszMTldPTMxOAotLlswXVszMjBdPTMx
OQotLlswXVszMjFdPTMyMAotLlswXVszMjJdPTMyMQotLlswXVszMjNdPTMyMgotLlswXVszMjRd
PTMyMwotLlswXVszMjVdPTMyNAotLlswXVszMjZdPTMyNQotLlswXVszMjddPTMyNgotLlswXVsz
MjhdPTMyNwotLlswXVszMjldPTMyOAotLlswXVszMzBdPTMyOQotLlswXVszMzFdPTMzMAotLlsw
XVszMzJdPTMzMQotLlswXVszMzNdPTMzMgotLlswXVszMzRdPTMzMwotLlswXVszMzVdPTMzNAot
LlswXVszMzZdPTMzNQotLlswXVszMzddPTMzNgotLlswXVszMzhdPTMzNwotLlswXVszMzldPTMz
OAotLlswXVszNDBdPTMzOQotLlswXVszNDFdPTM0MAotLlswXVszNDJdPTM0MQotLlswXVszNDNd
PTM0MgotLlswXVszNDRdPTM0MwotLlswXVszNDVdPTM0NAotLlswXVszNDZdPTM0NQotLlswXVsz
NDddPTM0NgotLlswXVszNDhdPTM0NwotLlswXVszNDldPTM0OAotLlswXVszNTBdPTM0OQotLlsw
XVszNTFdPTM1MAotLlswXVszNTJdPTM1MQotLlswXVszNTNdPTM1MgotLlswXVszNTRdPTM1Mwot
LlswXVszNTVdPTM1NAotLlswXVszNTZdPTM1NQotLlswXVszNTddPTM1NgotLlswXVszNThdPTM1
NwotLlswXVszNTldPTM1OAotLlswXVszNjBdPTM1OQotLlswXVszNjFdPTM2MAotLlswXVszNjJd
PTM2MQotLlswXVszNjNdPTM2MgotLlswXVszNjRdPTM2MwotLlswXVszNjVdPTM2NAotLlswXVsz
NjZdPTM2NQotLlswXVszNjddPTM2NgotLlswXVszNjhdPTM2NwotLlswXVszNjldPTM2OAotLlsw
XVszNzBdPTM2OQotLlswXVszNzFdPTM3MAotLlswXVszNzJdPTM3MQotLlswXVszNzNdPTM3Mgot
LlswXVszNzRdPTM3MwotLlswXVszNzVdPTM3NAotLlswXVszNzZdPTM3NQotLlswXVszNzddPTM3
NgotLlswXVszNzhdPTM3NwotLlswXVszNzldPTM3OAotLlswXVszODBdPTM3OQotLlswXVszODFd
PTM4MAotLlswXVszODJdPTM4MQotLlswXVszODNdPTM4MgotLlswXVszODRdPTM4MwotLlswXVsz
ODVdPTM4NAotLlswXVszODZdPTM4NQotLlswXVszODddPTM4NgotLlswXVszODhdPTM4NwotLlsw
XVszODldPTM4OAotLlswXVszOTBdPTM4OQotLlswXVszOTFdPTM5MAotLlswXVszOTJdPTM5MQot
LlswXVszOTNdPTM5MgotLlswXVszOTRdPTM5MwotLlswXVszOTVdPTM5NAotLlswXVszOTZdPTM5
NQotLlswXVszOTddPTM5NgotLlswXVszOThdPTM5NwotLlswXVszOTldPTM5OAotLlswXVs0MDBd
PTM5OQotLlswXVs0MDFdPTQwMAotLlswXVs0MDJdPTQwMQotLlswXVs0MDNdPTQwMgotLlswXVs0
MDRdPTQwMwotLlswXVs0MDVdPTQwNAotLlswXVs0MDZdPTQwNQotLlswXVs0MDddPTQwNgotLlsw
XVs0MDhdPTQwNwotLlswXVs0MDldPTQwOAotLlswXVs0MTBdPTQwOQotLlswXVs0MTFdPTQxMAot
LlswXVs0MTJdPTQxMQotLlswXVs0MTNdPTQxMgotLlswXVs0MTRdPTQxMwotLlswXVs0MTVdPTQx
NAotLlswXVs0MTZdPTQxNQotLlswXVs0MTddPTQxNgotLlswXVs0MThdPTQxNwotLlswXVs0MTld
PTQxOAotLlswXVs0MjBdPTQxOQotLlswXVs0MjFdPTQyMAotLlswXVs0MjJdPTQyMQotLlswXVs0
MjNdPTQyMgotLlswXVs0MjRdPTQyMwotLlswXVs0MjVdPTQyNAotLlswXVs0MjZdPTQyNQotLlsw
XVs0MjddPTQyNgotLlswXVs0MjhdPTQyNwotLlswXVs0MjldPTQyOAotLlswXVs0MzBdPTQyOQot
LlswXVs0MzFdPTQzMAotLlswXVs0MzJdPTQzMQotLlswXVs0MzNdPTQzMgotLlswXVs0MzRdPTQz
MwotLlswXVs0MzVdPTQzNAotLlswXVs0MzZdPTQzNQotLlswXVs0MzddPTQzNgotLlswXVs0Mzhd
PTQzNwotLlswXVs0MzldPTQzOAotLlswXVs0NDBdPTQzOQotLlswXVs0NDFdPTQ0MAotLlswXVs0
NDJdPTQ0MQotLlswXVs0NDNdPTQ0MgotLlswXVs0NDRdPTQ0MwotLlswXVs0NDVdPTQ0NAotLlsw
XVs0NDZdPTQ0NQotLlswXVs0NDddPTQ0NgotLlswXVs0NDhdPTQ0NwotLlswXVs0NDldPTQ0OAot
LlswXVs0NTBdPTQ0OQotLlswXVs0NTFdPTQ1MAotLlswXVs0NTJdPTQ1MQotLlswXVs0NTNdPTQ1
MgotLlswXVs0NTRdPTQ1MwotLlswXVs0NTVdPTQ1NAotLlswXVs0NTZdPTQ1NQotLlswXVs0NTdd
PTQ1NgotLlswXVs0NThdPTQ1NwotLlswXVs0NTldPTQ1OAotLlswXVs0NjBdPTQ1OQotLlswXVs0
NjFdPTQ2MAotLlswXVs0NjJdPTQ2MQotLlswXVs0NjNdPTQ2MgotLlswXVs0NjRdPTQ2MwotLlsw
XVs0NjVdPTQ2NAotLlswXVs0NjZdPTQ2NQotLlswXVs0NjddPTQ2NgotLlswXVs0NjhdPTQ2Nwot
LlswXVs0NjldPTQ2OAotLlswXVs0NzBdPTQ2OQotLlswXVs0NzFdPTQ3MAotLlswXVs0NzJdPTQ3
MQotLlswXVs0NzNdPTQ3MgotLlswXVs0NzRdPTQ3MwotLlswXVs0NzVdPTQ3NAotLlswXVs0NzZd
PTQ3NQotLlswXVs0NzddPTQ3NgotLlswXVs0NzhdPTQ3NwotLlswXVs0NzldPTQ3OAotLlswXVs0
ODBdPTQ3OQotLlswXVs0ODFdPTQ4MAotLlswXVs0ODJdPTQ4MQotLlswXVs0ODNdPTQ4MgotLlsw
XVs0ODRdPTQ4MwotLlswXVs0ODVdPTQ4NAotLlswXVs0ODZdPTQ4NQotLlswXVs0ODddPTQ4Ngot
LlswXVs0ODhdPTQ4NwotLlswXVs0ODldPTQ4OAotLlswXVs0OTBdPTQ4OQotLlswXVs0OTFdPTQ5
MAotLlswXVs0OTJdPTQ5MQotLlswXVs0OTNdPTQ5MgotLlswXVs0OTRdPTQ5MwotLlswXVs0OTVd
PTQ5NAotLlswXVs0OTZdPTQ5NQotLlswXVs0OTddPTQ5NgotLlswXVs0OThdPTQ5NwotLlswXVs0
OTldPTQ5OAotLlswXVs1MDBdPTQ5OQotLlswXVs1MDFdPTUwMAotLlswXVs1MDJdPTUwMQotLlsw
XVs1MDNdPTUwMgotLlswXVs1MDRdPTUwMwotLlswXVs1MDVdPTUwNAotLlswXVs1MDZdPTUwNQot
LlswXVs1MDddPTUwNgotLlswXVs1MDhdPTUwNwotLlswXVs1MDldPTUwOAotLlswXVs1MTBdPTUw
OQotLlswXVs1MTFdPTUxMAotLlswXVs1MTJdPTUxMQotLlswXVs1MTNdPTUxMgotLlswXVs1MTRd
PTUxMwotLlswXVs1MTVdPTUxNAotLlswXVs1MTZdPTUxNQotLlswXVs1MTddPTUxNgotLlswXVs1
MThdPTUxNwotLlswXVs1MTldPTUxOAotLlswXVs1MjBdPTUxOQotLlswXVs1MjFdPTUyMAotLlsw
XVs1MjJdPTUyMQotLlswXVs1MjNdPTUyMgotLlswXVs1MjRdPTUyMwotLlswXVs1MjVdPTUyNAot
LlswXVs1MjZdPTUyNQotLlswXVs1MjddPTUyNgotLlswXVs1MjhdPTUyNwotLlswXVs1MjldPTUy
OAotLlswXVs1MzBdPTUyOQotLlswXVs1MzFdPTUzMAotLlswXVs1MzJdPTUzMQotLlswXVs1MzNd
PTUzMgotLlswXVs1MzRdPTUzMwotLlswXVs1MzVdPTUzNAotLlswXVs1MzZdPTUzNQotLlswXVs1
MzddPTUzNgotLlswXVs1MzhdPTUzNwotLlswXVs1MzldPTUzOAotLlswXVs1NDBdPTUzOQotLlsw
XVs1NDFdPTU0MAotLlswXVs1NDJdPTU0MQotLlswXVs1NDNdPTU0MgotLlswXVs1NDRdPTU0Mwot
LlswXVs1NDVdPTU0NAotLlswXVs1NDZdPTU0NQotLlswXVs1NDddPTU0NgotLlswXVs1NDhdPTU0
NwotLlswXVs1NDldPTU0OAotLlswXVs1NTBdPTU0OQotLlswXVs1NTFdPTU1MAotLlswXVs1NTJd
PTU1MQotLlswXVs1NTNdPTU1MgotLlswXVs1NTRdPTU1MwotLlswXVs1NTVdPTU1NAotLlswXVs1
NTZdPTU1NQotLlswXVs1NTddPTU1NgotLlswXVs1NThdPTU1NwotLlswXVs1NTldPTU1OAotLlsw
XVs1NjBdPTU1OQotLlswXVs1NjFdPTU2MAotLlswXVs1NjJdPTU2MQotLlswXVs1NjNdPTU2Mgot
LlswXVs1NjRdPTU2MwotLlswXVs1NjVdPTU2NAotLlswXVs1NjZdPTU2NQotLlswXVs1NjddPTU2
NgotLlswXVs1NjhdPTU2NwotLlswXVs1NjldPTU2OAotLlswXVs1NzBdPTU2OQotLlswXVs1NzFd
PTU3MAotLlswXVs1NzJdPTU3MQotLlswXVs1NzNdPTU3MgotLlswXVs1NzRdPTU3MwotLlswXVs1
NzVdPTU3NAotLlswXVs1NzZdPTU3NQotLlswXVs1NzddPTU3NgotLlswXVs1NzhdPTU3NwotLlsw
XVs1NzldPTU3OAotLlswXVs1ODBdPTU3OQotLlswXVs1ODFdPTU4MAotLlswXVs1ODJdPTU4MQot
LlswXVs1ODNdPTU4MgotLlswXVs1ODRdPTU4MwotLlswXVs1ODVdPTU4NAotLlswXVs1ODZdPTU4
NQotLlswXVs1ODddPTU4NgotLlswXVs1ODhdPTU4NwotLlswXVs1ODldPTU4OAotLlswXVs1OTBd
PTU4OQotLlswXVs1OTFdPTU5MAotLlswXVs1OTJdPTU5MQotLlswXVs1OTNdPTU5MgotLlswXVs1
OTRdPTU5MwotLlswXVs1OTVdPTU5NAotLlswXVs1OTZdPTU5NQotLlswXVs1OTddPTU5NgotLlsw
XVs1OThdPTU5NwotLlswXVs1OTldPTU5OAotLlswXVs2MDBdPTU5OQotLlswXVs2MDFdPTYwMAot
LlswXVs2MDJdPTYwMQotLlswXVs2MDNdPTYwMgotLlswXVs2MDRdPTYwMwotLlswXVs2MDVdPTYw
NAotLlswXVs2MDZdPTYwNQotLlswXVs2MDddPTYwNgotLlswXVs2MDhdPTYwNwotLlswXVs2MDld
PTYwOAotLlswXVs2MTBdPTYwOQotLlswXVs2MTFdPTYxMAotLlswXVs2MTJdPTYxMQotLlswXVs2
MTNdPTYxMgotLlswXVs2MTRdPTYxMwotLlswXVs2MTVdPTYxNAotLlswXVs2MTZdPTYxNQotLlsw
XVs2MTddPTYxNgotLlswXVs2MThdPTYxNwotLlswXVs2MTldPTYxOAotLlswXVs2MjBdPTYxOQot
LlswXVs2MjFdPTYyMAotLlswXVs2MjJdPTYyMQotLlswXVs2MjNdPTYyMgotLlswXVs2MjRdPTYy
MwotLlswXVs2MjVdPTYyNAotLlswXVs2MjZdPTYyNQotLlswXVs2MjddPTYyNgotLlswXVs2Mjhd
PTYyNwotLlswXVs2MjldPTYyOAotLlswXVs2MzBdPTYyOQotLlswXVs2MzFdPTYzMAotLlswXVs2
MzJdPTYzMQotLlswXVs2MzNdPTYzMgotLlswXVs2MzRdPTYzMwotLlswXVs2MzVdPTYzNAotLlsw
XVs2MzZdPTYzNQotLlswXVs2MzddPTYzNgotLlswXVs2MzhdPTYzNwotLlswXVs2MzldPTYzOAot
LlswXVs2NDBdPTYzOQotLlswXVs2NDFdPTY0MAotLlswXVs2NDJdPTY0MQotLlswXVs2NDNdPTY0
MgotLlswXVs2NDRdPTY0MwotLlswXVs2NDVdPTY0NAotLlswXVs2NDZdPTY0NQotLlswXVs2NDdd
PTY0NgotLlswXVs2NDhdPTY0NwotLlswXVs2NDldPTY0OAotLlswXVs2NTBdPTY0OQotLlswXVs2
NTFdPTY1MAotLlswXVs2NTJdPTY1MQotLlswXVs2NTNdPTY1MgotLlswXVs2NTRdPTY1MwotLlsw
XVs2NTVdPTY1NAotLlswXVs2NTZdPTY1NQotLlswXVs2NTddPTY1NgotLlswXVs2NThdPTY1Nwot
LlswXVs2NTldPTY1OAotLlswXVs2NjBdPTY1OQotLlswXVs2NjFdPTY2MAotLlswXVs2NjJdPTY2
MQotLlswXVs2NjNdPTY2MgotLlswXVs2NjRdPTY2MwotLlswXVs2NjVdPTY2NAotLlswXVs2NjZd
PTY2NQotLlswXVs2NjddPTY2NgotLlswXVs2NjhdPTY2NwotLlswXVs2NjldPTY2OAotLlswXVs2
NzBdPTY2OQotLlswXVs2NzFdPTY3MAotLlswXVs2NzJdPTY3MQotLlswXVs2NzNdPTY3MgotLlsw
XVs2NzRdPTY3MwotLlswXVs2NzVdPTY3NAotLlswXVs2NzZdPTY3NQotLlswXVs2NzddPTY3Ngot
LlswXVs2NzhdPTY3NwotLlswXVs2NzldPTY3OAotLlswXVs2ODBdPTY3OQotLlswXVs2ODFdPTY4
MAotLlswXVs2ODJdPTY4MQotLlswXVs2ODNdPTY4MgotLlswXVs2ODRdPTY4MwotLlswXVs2ODVd
PTY4NAotLlswXVs2ODZdPTY4NQotLlswXVs2ODddPTY4NgotLlswXVs2ODhdPTY4NwotLlswXVs2
ODldPTY4OAotLlswXVs2OTBdPTY4OQotLlswXVs2OTFdPTY5MAotLlswXVs2OTJdPTY5MQotLlsw
XVs2OTNdPTY5MgotLlswXVs2OTRdPTY5MwotLlswXVs2OTVdPTY5NAotLlswXVs2OTZdPTY5NQot
LlswXVs2OTddPTY5NgotLlswXVs2OThdPTY5NwotLlswXVs2OTldPTY5OAotLlswXVs3MDBdPTY5
OQotLlswXVs3MDFdPTcwMAotLlswXVs3MDJdPTcwMQotLlswXVs3MDNdPTcwMgotLlswXVs3MDRd
PTcwMwotLlswXVs3MDVdPTcwNAotLlswXVs3MDZdPTcwNQotLlswXVs3MDddPTcwNgotLlswXVs3
MDhdPTcwNwotLlswXVs3MDldPTcwOAotLlswXVs3MTBdPTcwOQotLlswXVs3MTFdPTcxMAotLlsw
XVs3MTJdPTcxMQotLlswXVs3MTNdPTcxMgotLlswXVs3MTRdPTcxMwotLlswXVs3MTVdPTcxNAot
LlswXVs3MTZdPTcxNQotLlswXVs3MTddPTcxNgotLlswXVs3MThdPTcxNwotLlswXVs3MTldPTcx
OAotLlswXVs3MjBdPTcxOQotLlswXVs3MjFdPTcyMAotLlswXVs3MjJdPTcyMQotLlswXVs3MjNd
PTcyMgotLlswXVs3MjRdPTcyMwotLlswXVs3MjVdPTcyNAotLlswXVs3MjZdPTcyNQotLlswXVs3
MjddPTcyNgotLlswXVs3MjhdPTcyNwotLlswXVs3MjldPTcyOAotLlswXVs3MzBdPTcyOQotLlsw
XVs3MzFdPTczMAotLlswXVs3MzJdPTczMQotLlswXVs3MzNdPTczMgotLlswXVs3MzRdPTczMwot
LlswXVs3MzVdPTczNAotLlswXVs3MzZdPTczNQotLlswXVs3MzddPTczNgotLlswXVs3MzhdPTcz
NwotLlswXVs3MzldPTczOAotLlswXVs3NDBdPTczOQotLlswXVs3NDFdPTc0MAotLlswXVs3NDJd
PTc0MQotLlswXVs3NDNdPTc0MgotLlswXVs3NDRdPTc0MwotLlswXVs3NDVdPTc0NAotLlswXVs3
NDZdPTc0NQotLlswXVs3NDddPTc0NgotLlswXVs3NDhdPTc0NwotLlswXVs3NDldPTc0OAotLlsw
XVs3NTBdPTc0OQotLlswXVs3NTFdPTc1MAotLlswXVs3NTJdPTc1MQotLlswXVs3NTNdPTc1Mgot
LlswXVs3NTRdPTc1MwotLlswXVs3NTVdPTc1NAotLlswXVs3NTZdPTc1NQotLlswXVs3NTddPTc1
NgotLlswXVs3NThdPTc1NwotLlswXVs3NTldPTc1OAotLlswXVs3NjBdPTc1OQotLlswXVs3NjFd
PTc2MAotLlswXVs3NjJdPTc2MQotLlswXVs3NjNdPTc2MgotLlswXVs3NjRdPTc2MwotLlswXVs3
NjVdPTc2NAotLlswXVs3NjZdPTc2NQotLlswXVs3NjddPTc2NgotLlswXVs3NjhdPTc2NwotLlsw
XVs3NjldPTc2OAotLlswXVs3NzBdPTc2OQotLlswXVs3NzFdPTc3MAotLlswXVs3NzJdPTc3MQot
LlswXVs3NzNdPTc3MgotLlswXVs3NzRdPTc3MwotLlswXVs3NzVdPTc3NAotLlswXVs3NzZdPTc3
NQotLlswXVs3NzddPTc3NgotLlswXVs3NzhdPTc3NwotLlswXVs3NzldPTc3OAotLlswXVs3ODBd
PTc3OQotLlswXVs3ODFdPTc4MAotLlswXVs3ODJdPTc4MQotLlswXVs3ODNdPTc4MgotLlswXVs3
ODRdPTc4MwotLlswXVs3ODVdPTc4NAotLlswXVs3ODZdPTc4NQotLlswXVs3ODddPTc4NgotLlsw
XVs3ODhdPTc4NwotLlswXVs3ODldPTc4OAotLlswXVs3OTBdPTc4OQotLlswXVs3OTFdPTc5MAot
LlswXVs3OTJdPTc5MQotLlswXVs3OTNdPTc5MgotLlswXVs3OTRdPTc5MwotLlswXVs3OTVdPTc5
NAotLlswXVs3OTZdPTc5NQotLlswXVs3OTddPTc5NgotLlswXVs3OThdPTc5NwotLlswXVs3OTld
PTc5OAotLlswXVs4MDBdPTc5OQotLlswXVs4MDFdPTgwMAotLlswXVs4MDJdPTgwMQotLlswXVs4
MDNdPTgwMgotLlswXVs4MDRdPTgwMwotLlswXVs4MDVdPTgwNAotLlswXVs4MDZdPTgwNQotLlsw
XVs4MDddPTgwNgotLlswXVs4MDhdPTgwNwotLlswXVs4MDldPTgwOAotLlswXVs4MTBdPTgwOQot
LlswXVs4MTFdPTgxMAotLlswXVs4MTJdPTgxMQotLlswXVs4MTNdPTgxMgotLlswXVs4MTRdPTgx
MwotLlswXVs4MTVdPTgxNAotLlswXVs4MTZdPTgxNQotLlswXVs4MTddPTgxNgotLlswXVs4MThd
PTgxNwotLlswXVs4MTldPTgxOAotLlswXVs4MjBdPTgxOQotLlswXVs4MjFdPTgyMAotLlswXVs4
MjJdPTgyMQotLlswXVs4MjNdPTgyMgotLlswXVs4MjRdPTgyMwotLlswXVs4MjVdPTgyNAotLlsw
XVs4MjZdPTgyNQotLlswXVs4MjddPTgyNgotLlswXVs4MjhdPTgyNwotLlswXVs4MjldPTgyOAot
LlswXVs4MzBdPTgyOQotLlswXVs4MzFdPTgzMAotLlswXVs4MzJdPTgzMQotLlswXVs4MzNdPTgz
MgotLlswXVs4MzRdPTgzMwotLlswXVs4MzVdPTgzNAotLlswXVs4MzZdPTgzNQotLlswXVs4Mzdd
PTgzNgotLlswXVs4MzhdPTgzNwotLlswXVs4MzldPTgzOAotLlswXVs4NDBdPTgzOQotLlswXVs4
NDFdPTg0MAotLlswXVs4NDJdPTg0MQotLlswXVs4NDNdPTg0MgotLlswXVs4NDRdPTg0MwotLlsw
XVs4NDVdPTg0NAotLlswXVs4NDZdPTg0NQotLlswXVs4NDddPTg0NgotLlswXVs4NDhdPTg0Nwot
LlswXVs4NDldPTg0OAotLlswXVs4NTBdPTg0OQotLlswXVs4NTFdPTg1MAotLlswXVs4NTJdPTg1
MQotLlswXVs4NTNdPTg1MgotLlswXVs4NTRdPTg1MwotLlswXVs4NTVdPTg1NAotLlswXVs4NTZd
PTg1NQotLlswXVs4NTddPTg1NgotLlswXVs4NThdPTg1NwotLlswXVs4NTldPTg1OAotLlswXVs4
NjBdPTg1OQotLlswXVs4NjFdPTg2MAotLlswXVs4NjJdPTg2MQotLlswXVs4NjNdPTg2MgotLlsw
XVs4NjRdPTg2MwotLlswXVs4NjVdPTg2NAotLlswXVs4NjZdPTg2NQotLlswXVs4NjddPTg2Ngot
LlswXVs4NjhdPTg2NwotLlswXVs4NjldPTg2OAotLlswXVs4NzBdPTg2OQotLlswXVs4NzFdPTg3
MAotLlswXVs4NzJdPTg3MQotLlswXVs4NzNdPTg3MgotLlswXVs4NzRdPTg3MwotLlswXVs4NzVd
PTg3NAotLlswXVs4NzZdPTg3NQotLlswXVs4NzddPTg3NgotLlswXVs4NzhdPTg3NwotLlswXVs4
NzldPTg3OAotLlswXVs4ODBdPTg3OQotLlswXVs4ODFdPTg4MAotLlswXVs4ODJdPTg4MQotLlsw
XVs4ODNdPTg4MgotLlswXVs4ODRdPTg4MwotLlswXVs4ODVdPTg4NAotLlswXVs4ODZdPTg4NQot
LlswXVs4ODddPTg4NgotLlswXVs4ODhdPTg4NwotLlswXVs4ODldPTg4OAotLlswXVs4OTBdPTg4
OQotLlswXVs4OTFdPTg5MAotLlswXVs4OTJdPTg5MQotLlswXVs4OTNdPTg5MgotLlswXVs4OTRd
PTg5MwotLlswXVs4OTVdPTg5NAotLlswXVs4OTZdPTg5NQotLlswXVs4OTddPTg5NgotLlswXVs4
OThdPTg5NwotLlswXVs4OTldPTg5OAotLlswXVs5MDBdPTg5OQotLlswXVs5MDFdPTkwMAotLlsw
XVs5MDJdPTkwMQotLlswXVs5MDNdPTkwMgotLlswXVs5MDRdPTkwMwotLlswXVs5MDVdPTkwNAot
LlswXVs5MDZdPTkwNQotLlswXVs5MDddPTkwNgotLlswXVs5MDhdPTkwNwotLlswXVs5MDldPTkw
OAotLlswXVs5MTBdPTkwOQotLlswXVs5MTFdPTkxMAotLlswXVs5MTJdPTkxMQotLlswXVs5MTNd
PTkxMgotLlswXVs5MTRdPTkxMwotLlswXVs5MTVdPTkxNAotLlswXVs5MTZdPTkxNQotLlswXVs5
MTddPTkxNgotLlswXVs5MThdPTkxNwotLlswXVs5MTldPTkxOAotLlswXVs5MjBdPTkxOQotLlsw
XVs5MjFdPTkyMAotLlswXVs5MjJdPTkyMQotLlswXVs5MjNdPTkyMgotLlswXVs5MjRdPTkyMwot
LlswXVs5MjVdPTkyNAotLlswXVs5MjZdPTkyNQotLlswXVs5MjddPTkyNgotLlswXVs5MjhdPTky
NwotLlswXVs5MjldPTkyOAotLlswXVs5MzBdPTkyOQotLlswXVs5MzFdPTkzMAotLlswXVs5MzJd
PTkzMQotLlswXVs5MzNdPTkzMgotLlswXVs5MzRdPTkzMwotLlswXVs5MzVdPTkzNAotLlswXVs5
MzZdPTkzNQotLlswXVs5MzddPTkzNgotLlswXVs5MzhdPTkzNwotLlswXVs5MzldPTkzOAotLlsw
XVs5NDBdPTkzOQotLlswXVs5NDFdPTk0MAotLlswXVs5NDJdPTk0MQotLlswXVs5NDNdPTk0Mgot
LlswXVs5NDRdPTk0MwotLlswXVs5NDVdPTk0NAotLlswXVs5NDZdPTk0NQotLlswXVs5NDddPTk0
NgotLlswXVs5NDhdPTk0NwotLlswXVs5NDldPTk0OAotLlswXVs5NTBdPTk0OQotLlswXVs5NTFd
PTk1MAotLlswXVs5NTJdPTk1MQotLlswXVs5NTNdPTk1MgotLlswXVs5NTRdPTk1MwotLlswXVs5
NTVdPTk1NAotLlswXVs5NTZdPTk1NQotLlswXVs5NTddPTk1NgotLlswXVs5NThdPTk1NwotLlsw
XVs5NTldPTk1OAotLlswXVs5NjBdPTk1OQotLlswXVs5NjFdPTk2MAotLlswXVs5NjJdPTk2MQot
LlswXVs5NjNdPTk2MgotLlswXVs5NjRdPTk2MwotLlswXVs5NjVdPTk2NAotLlswXVs5NjZdPTk2
NQotLlswXVs5NjddPTk2NgotLlswXVs5NjhdPTk2NwotLlswXVs5NjldPTk2OAotLlswXVs5NzBd
PTk2OQotLlswXVs5NzFdPTk3MAotLlswXVs5NzJdPTk3MQotLlswXVs5NzNdPTk3MgotLlswXVs5
NzRdPTk3MwotLlswXVs5NzVdPTk3NAotLlswXVs5NzZdPTk3NQotLlswXVs5NzddPTk3NgotLlsw
XVs5NzhdPTk3NwotLlswXVs5NzldPTk3OAotLlswXVs5ODBdPTk3OQotLlswXVs5ODFdPTk4MAot
LlswXVs5ODJdPTk4MQotLlswXVs5ODNdPTk4MgotLlswXVs5ODRdPTk4MwotLlswXVs5ODVdPTk4
NAotLlswXVs5ODZdPTk4NQotLlswXVs5ODddPTk4NgotLlswXVs5ODhdPTk4NwotLlswXVs5ODld
PTk4OAotLlswXVs5OTBdPTk4OQotLlswXVs5OTFdPTk5MAotLlswXVs5OTJdPTk5MQotLlswXVs5
OTNdPTk5MgotLlswXVs5OTRdPTk5MwotLlswXVs5OTVdPTk5NAotLlswXVs5OTZdPTk5NQotLlsw
XVs5OTddPTk5NgotLlswXVs5OThdPTk5NwotLlswXVs5OTldPTk5OAotLlswXVsxMDAwXT05OTkK
LS5bMF1bMTAwMV09MTAwMAotLlswXVsxMDAyXT0xMDAxCi0uWzBdWzEwMDNdPTEwMDIKLS5bMF1b
MTAwNF09MTAwMwotLlswXVsxMDA1XT0xMDA0Ci0uWzBdWzEwMDZdPTEwMDUKLS5bMF1bMTAwN109
MTAwNgotLlswXVsxMDA4XT0xMDA3Ci0uWzBdWzEwMDldPTEwMDgKLS5bMF1bMTAxMF09MTAwOQot
LlswXVsxMDExXT0xMDEwCi0uWzBdWzEwMTJdPTEwMTEKLS5bMF1bMTAxM109MTAxMgotLlswXVsx
MDE0XT0xMDEzCi0uWzBdWzEwMTVdPTEwMTQKLS5bMF1bMTAxNl09MTAxNQotLlswXVsxMDE3XT0x
MDE2Ci0uWzBdWzEwMThdPTEwMTcKLS5bMF1bMTAxOV09MTAxOAotLlswXVsxMDIwXT0xMDE5Ci0u
WzBdWzEwMjFdPTEwMjAKLS5bMF1bMTAyMl09MTAyMQotLlswXVsxMDIzXT0xMDIyCi0uWzBdWzEw
MjRdPTEwMjMKLS5bMF1bMTAyNV09MTAyNAotLlswXVsxMDI2XT0xMDI1Ci0uWzBdWzEwMjddPTEw
MjYKLS5bMF1bMTAyOF09MTAyNwotLlswXVsxMDI5XT0xMDI4Ci0uWzBdWzEwMzBdPTEwMjkKLS5b
MF1bMTAzMV09MTAzMAotLlswXVsxMDMyXT0xMDMxCi0uWzBdWzEwMzNdPTEwMzIKLS5bMF1bMTAz
NF09MTAzMwotLlswXVsxMDM1XT0xMDM0Ci0uWzBdWzEwMzZdPTEwMzUKLS5bMF1bMTAzN109MTAz
NgotLlswXVsxMDM4XT0xMDM3Ci0uWzBdWzEwMzldPTEwMzgKLS5bMF1bMTA0MF09MTAzOQotLlsw
XVsxMDQxXT0xMDQwCi0uWzBdWzEwNDJdPTEwNDEKLS5bMF1bMTA0M109MTA0MgotLlswXVsxMDQ0
XT0xMDQzCi0uWzBdWzEwNDVdPTEwNDQKLS5bMF1bMTA0Nl09MTA0NQotLlswXVsxMDQ3XT0xMDQ2
Ci0uWzBdWzEwNDhdPTEwNDcKLS5bMF1bMTA0OV09MTA0OAotLlswXVsxMDUwXT0xMDQ5Ci0uWzBd
WzEwNTFdPTEwNTAKLS5bMF1bMTA1Ml09MTA1MQotLlswXVsxMDUzXT0xMDUyCi0uWzBdWzEwNTRd
PTEwNTMKLS5bMF1bMTA1NV09MTA1NAotLlswXVsxMDU2XT0xMDU1Ci0uWzBdWzEwNTddPTEwNTYK
LS5bMF1bMTA1OF09MTA1NwotLlswXVsxMDU5XT0xMDU4Ci0uWzBdWzEwNjBdPTEwNTkKLS5bMF1b
MTA2MV09MTA2MAotLlswXVsxMDYyXT0xMDYxCi0uWzBdWzEwNjNdPTEwNjIKLS5bMF1bMTA2NF09
MTA2MwotLlswXVsxMDY1XT0xMDY0Ci0uWzBdWzEwNjZdPTEwNjUKLS5bMF1bMTA2N109MTA2Ngot
LlswXVsxMDY4XT0xMDY3Ci0uWzBdWzEwNjldPTEwNjgKLS5bMF1bMTA3MF09MTA2OQotLlswXVsx
MDcxXT0xMDcwCi0uWzBdWzEwNzJdPTEwNzEKLS5bMF1bMTA3M109MTA3MgotLlswXVsxMDc0XT0x
MDczCi0uWzBdWzEwNzVdPTEwNzQKLS5bMF1bMTA3Nl09MTA3NQotLlswXVsxMDc3XT0xMDc2Ci0u
WzBdWzEwNzhdPTEwNzcKLS5bMF1bMTA3OV09MTA3OAotLlswXVsxMDgwXT0xMDc5Ci0uWzBdWzEw
ODFdPTEwODAKLS5bMF1bMTA4Ml09MTA4MQotLlswXVsxMDgzXT0xMDgyCi0uWzBdWzEwODRdPTEw
ODMKLS5bMF1bMTA4NV09MTA4NAotLlswXVsxMDg2XT0xMDg1Ci0uWzBdWzEwODddPTEwODYKLS5b
MF1bMTA4OF09MTA4NwotLlswXVsxMDg5XT0xMDg4Ci0uWzBdWzEwOTBdPTEwODkKLS5bMF1bMTA5
MV09MTA5MAotLlswXVsxMDkyXT0xMDkxCi0uWzBdWzEwOTNdPTEwOTIKLS5bMF1bMTA5NF09MTA5
MwotLlswXVsxMDk1XT0xMDk0Ci0uWzBdWzEwOTZdPTEwOTUKLS5bMF1bMTA5N109MTA5NgotLlsw
XVsxMDk4XT0xMDk3Ci0uWzBdWzEwOTldPTEwOTgKLS5bMF1bMTEwMF09MTA5OQotLlswXVsxMTAx
XT0xMTAwCi0uWzBdWzExMDJdPTExMDEKLS5bMF1bMTEwM109MTEwMgotLlswXVsxMTA0XT0xMTAz
Ci0uWzBdWzExMDVdPTExMDQKLS5bMF1bMTEwNl09MTEwNQotLlswXVsxMTA3XT0xMTA2Ci0uWzBd
WzExMDhdPTExMDcKLS5bMF1bMTEwOV09MTEwOAotLlswXVsxMTEwXT0xMTA5Ci0uWzBdWzExMTFd
PTExMTAKLS5bMF1bMTExMl09MTExMQotLlswXVsxMTEzXT0xMTEyCi0uWzBdWzExMTRdPTExMTMK
LS5bMF1bMTExNV09MTExNAotLlswXVsxMTE2XT0xMTE1Ci0uWzBdWzExMTddPTExMTYKLS5bMF1b
MTExOF09MTExNwotLlswXVsxMTE5XT0xMTE4Ci0uWzBdWzExMjBdPTExMTkKLS5bMF1bMTEyMV09
MTEyMAotLlswXVsxMTIyXT0xMTIxCi0uWzBdWzExMjNdPTExMjIKLS5bMF1bMTEyNF09MTEyMwot
LlswXVsxMTI1XT0xMTI0Ci0uWzBdWzExMjZdPTExMjUKLS5bMF1bMTEyN109MTEyNgotLlswXVsx
MTI4XT0xMTI3Ci0uWzBdWzExMjldPTExMjgKLS5bMF1bMTEzMF09MTEyOQotLlswXVsxMTMxXT0x
MTMwCi0uWzBdWzExMzJdPTExMzEKLS5bMF1bMTEzM109MTEzMgotLlswXVsxMTM0XT0xMTMzCi0u
WzBdWzExMzVdPTExMzQKLS5bMF1bMTEzNl09MTEzNQotLlswXVsxMTM3XT0xMTM2Ci0uWzBdWzEx
MzhdPTExMzcKLS5bMF1bMTEzOV09MTEzOAotLlswXVsxMTQwXT0xMTM5Ci0uWzBdWzExNDFdPTEx
NDAKLS5bMF1bMTE0Ml09MTE0MQotLlswXVsxMTQzXT0xMTQyCi0uWzBdWzExNDRdPTExNDMKLS5b
MF1bMTE0NV09MTE0NAotLlswXVsxMTQ2XT0xMTQ1Ci0uWzBdWzExNDddPTExNDYKLS5bMF1bMTE0
OF09MTE0NwotLlswXVsxMTQ5XT0xMTQ4Ci0uWzBdWzExNTBdPTExNDkKLS5bMF1bMTE1MV09MTE1
MAotLlswXVsxMTUyXT0xMTUxCi0uWzBdWzExNTNdPTExNTIKLS5bMF1bMTE1NF09MTE1MwotLlsw
XVsxMTU1XT0xMTU0Ci0uWzBdWzExNTZdPTExNTUKLS5bMF1bMTE1N109MTE1NgotLlswXVsxMTU4
XT0xMTU3Ci0uWzBdWzExNTldPTExNTgKLS5bMF1bMTE2MF09MTE1OQotLlswXVsxMTYxXT0xMTYw
Ci0uWzBdWzExNjJdPTExNjEKLS5bMF1bMTE2M109MTE2MgotLlswXVsxMTY0XT0xMTYzCi0uWzBd
WzExNjVdPTExNjQKLS5bMF1bMTE2Nl09MTE2NQotLlswXVsxMTY3XT0xMTY2Ci0uWzBdWzExNjhd
PTExNjcKLS5bMF1bMTE2OV09MTE2OAotLlswXVsxMTcwXT0xMTY5Ci0uWzBdWzExNzFdPTExNzAK
LS5bMF1bMTE3Ml09MTE3MQotLlswXVsxMTczXT0xMTcyCi0uWzBdWzExNzRdPTExNzMKLS5bMF1b
MTE3NV09MTE3NAotLlswXVsxMTc2XT0xMTc1Ci0uWzBdWzExNzddPTExNzYKLS5bMF1bMTE3OF09
MTE3NwotLlswXVsxMTc5XT0xMTc4Ci0uWzBdWzExODBdPTExNzkKLS5bMF1bMTE4MV09MTE4MAot
LlswXVsxMTgyXT0xMTgxCi0uWzBdWzExODNdPTExODIKLS5bMF1bMTE4NF09MTE4MwotLlswXVsx
MTg1XT0xMTg0Ci0uWzBdWzExODZdPTExODUKLS5bMF1bMTE4N109MTE4NgotLlswXVsxMTg4XT0x
MTg3Ci0uWzBdWzExODldPTExODgKLS5bMF1bMTE5MF09MTE4OQotLlswXVsxMTkxXT0xMTkwCi0u
WzBdWzExOTJdPTExOTEKLS5bMF1bMTE5M109MTE5MgotLlswXVsxMTk0XT0xMTkzCi0uWzBdWzEx
OTVdPTExOTQKLS5bMF1bMTE5Nl09MTE5NQotLlswXVsxMTk3XT0xMTk2Ci0uWzBdWzExOThdPTEx
OTcKLS5bMF1bMTE5OV09MTE5OAotLlswXVsxMjAwXT0xMTk5Ci0uWzBdWzEyMDFdPTEyMDAKLS5b
MF1bMTIwMl09MTIwMQotLlswXVsxMjAzXT0xMjAyCi0uWzBdWzEyMDRdPTEyMDMKLS5bMF1bMTIw
NV09MTIwNAotLlswXVsxMjA2XT0xMjA1Ci0uWzBdWzEyMDddPTEyMDYKLS5bMF1bMTIwOF09MTIw
NwotLlswXVsxMjA5XT0xMjA4Ci0uWzBdWzEyMTBdPTEyMDkKLS5bMF1bMTIxMV09MTIxMAotLlsw
XVsxMjEyXT0xMjExCi0uWzBdWzEyMTNdPTEyMTIKLS5bMF1bMTIxNF09MTIxMwotLlswXVsxMjE1
XT0xMjE0Ci0uWzBdWzEyMTZdPTEyMTUKLS5bMF1bMTIxN109MTIxNgotLlswXVsxMjE4XT0xMjE3
Ci0uWzBdWzEyMTldPTEyMTgKLS5bMF1bMTIyMF09MTIxOQotLlswXVsxMjIxXT0xMjIwCi0uWzBd
WzEyMjJdPTEyMjEKLS5bMF1bMTIyM109MTIyMgotLlswXVsxMjI0XT0xMjIzCi0uWzBdWzEyMjVd
PTEyMjQKLS5bMF1bMTIyNl09MTIyNQotLlswXVsxMjI3XT0xMjI2Ci0uWzBdWzEyMjhdPTEyMjcK
LS5bMF1bMTIyOV09MTIyOAotLlswXVsxMjMwXT0xMjI5Ci0uWzBdWzEyMzFdPTEyMzAKLS5bMF1b
MTIzMl09MTIzMQotLlswXVsxMjMzXT0xMjMyCi0uWzBdWzEyMzRdPTEyMzMKLS5bMF1bMTIzNV09
MTIzNAotLlswXVsxMjM2XT0xMjM1Ci0uWzBdWzEyMzddPTEyMzYKLS5bMF1bMTIzOF09MTIzNwot
LlswXVsxMjM5XT0xMjM4Ci0uWzBdWzEyNDBdPTEyMzkKLS5bMF1bMTI0MV09MTI0MAotLlswXVsx
MjQyXT0xMjQxCi0uWzBdWzEyNDNdPTEyNDIKLS5bMF1bMTI0NF09MTI0MwotLlswXVsxMjQ1XT0x
MjQ0Ci0uWzBdWzEyNDZdPTEyNDUKLS5bMF1bMTI0N109MTI0NgotLlswXVsxMjQ4XT0xMjQ3Ci0u
WzBdWzEyNDldPTEyNDgKLS5bMF1bMTI1MF09MTI0OQotLlswXVsxMjUxXT0xMjUwCi0uWzBdWzEy
NTJdPTEyNTEKLS5bMF1bMTI1M109MTI1MgotLlswXVsxMjU0XT0xMjUzCi0uWzBdWzEyNTVdPTEy
NTQKLS5bMF1bMTI1Nl09MTI1NQotLlswXVsxMjU3XT0xMjU2Ci0uWzBdWzEyNThdPTEyNTcKLS5b
MF1bMTI1OV09MTI1OAotLlswXVsxMjYwXT0xMjU5Ci0uWzBdWzEyNjFdPTEyNjAKLS5bMF1bMTI2
Ml09MTI2MQotLlswXVsxMjYzXT0xMjYyCi0uWzBdWzEyNjRdPTEyNjMKLS5bMF1bMTI2NV09MTI2
NAotLlswXVsxMjY2XT0xMjY1Ci0uWzBdWzEyNjddPTEyNjYKLS5bMF1bMTI2OF09MTI2NwotLlsw
XVsxMjY5XT0xMjY4Ci0uWzBdWzEyNzBdPTEyNjkKLS5bMF1bMTI3MV09MTI3MAotLlswXVsxMjcy
XT0xMjcxCi0uWzBdWzEyNzNdPTEyNzIKLS5bMF1bMTI3NF09MTI3MwotLlswXVsxMjc1XT0xMjc0
Ci0uWzBdWzEyNzZdPTEyNzUKLS5bMF1bMTI3N109MTI3NgotLlswXVsxMjc4XT0xMjc3Ci0uWzBd
WzEyNzldPTEyNzgKLS5bMF1bMTI4MF09MTI3OQotLlswXVsxMjgxXT0xMjgwCi0uWzBdWzEyODJd
PTEyODEKLS5bMF1bMTI4M109MTI4MgotLlswXVsxMjg0XT0xMjgzCi0uWzBdWzEyODVdPTEyODQK
LS5bMF1bMTI4Nl09MTI4NQotLlswXVsxMjg3XT0xMjg2Ci0uWzBdWzEyODhdPTEyODcKLS5bMF1b
MTI4OV09MTI4OAotLlswXVsxMjkwXT0xMjg5Ci0uWzBdWzEyOTFdPTEyOTAKLS5bMF1bMTI5Ml09
MTI5MQotLlswXVsxMjkzXT0xMjkyCi0uWzBdWzEyOTRdPTEyOTMKLS5bMF1bMTI5NV09MTI5NAot
LlswXVsxMjk2XT0xMjk1Ci0uWzBdWzEyOTddPTEyOTYKLS5bMF1bMTI5OF09MTI5NwotLlswXVsx
Mjk5XT0xMjk4Ci0uWzBdWzEzMDBdPTEyOTkKLS5bMF1bMTMwMV09MTMwMAotLlswXVsxMzAyXT0x
MzAxCi0uWzBdWzEzMDNdPTEzMDIKLS5bMF1bMTMwNF09MTMwMwotLlswXVsxMzA1XT0xMzA0Ci0u
WzBdWzEzMDZdPTEzMDUKLS5bMF1bMTMwN109MTMwNgotLlswXVsxMzA4XT0xMzA3Ci0uWzBdWzEz
MDldPTEzMDgKLS5bMF1bMTMxMF09MTMwOQotLlswXVsxMzExXT0xMzEwCi0uWzBdWzEzMTJdPTEz
MTEKLS5bMF1bMTMxM109MTMxMgotLlswXVsxMzE0XT0xMzEzCi0uWzBdWzEzMTVdPTEzMTQKLS5b
MF1bMTMxNl09MTMxNQotLlswXVsxMzE3XT0xMzE2Ci0uWzBdWzEzMThdPTEzMTcKLS5bMF1bMTMx
OV09MTMxOAotLlswXVsxMzIwXT0xMzE5Ci0uWzBdWzEzMjFdPTEzMjAKLS5bMF1bMTMyMl09MTMy
MQotLlswXVsxMzIzXT0xMzIyCi0uWzBdWzEzMjRdPTEzMjMKLS5bMF1bMTMyNV09MTMyNAotLlsw
XVsxMzI2XT0xMzI1Ci0uWzBdWzEzMjddPTEzMjYKLS5bMF1bMTMyOF09MTMyNwotLlswXVsxMzI5
XT0xMzI4Ci0uWzBdWzEzMzBdPTEzMjkKLS5bMF1bMTMzMV09MTMzMAotLlswXVsxMzMyXT0xMzMx
Ci0uWzBdWzEzMzNdPTEzMzIKLS5bMF1bMTMzNF09MTMzMwotLlswXVsxMzM1XT0xMzM0Ci0uWzBd
WzEzMzZdPTEzMzUKLS5bMF1bMTMzN109MTMzNgotLlswXVsxMzM4XT0xMzM3Ci0uWzBdWzEzMzld
PTEzMzgKLS5bMF1bMTM0MF09MTMzOQotLlswXVsxMzQxXT0xMzQwCi0uWzBdWzEzNDJdPTEzNDEK
LS5bMF1bMTM0M109MTM0MgotLlswXVsxMzQ0XT0xMzQzCi0uWzBdWzEzNDVdPTEzNDQKLS5bMF1b
MTM0Nl09MTM0NQotLlswXVsxMzQ3XT0xMzQ2Ci0uWzBdWzEzNDhdPTEzNDcKLS5bMF1bMTM0OV09
MTM0OAotLlswXVsxMzUwXT0xMzQ5Ci0uWzBdWzEzNTFdPTEzNTAKLS5bMF1bMTM1Ml09MTM1MQot
LlswXVsxMzUzXT0xMzUyCi0uWzBdWzEzNTRdPTEzNTMKLS5bMF1bMTM1NV09MTM1NAotLlswXVsx
MzU2XT0xMzU1Ci0uWzBdWzEzNTddPTEzNTYKLS5bMF1bMTM1OF09MTM1NwotLlswXVsxMzU5XT0x
MzU4Ci0uWzBdWzEzNjBdPTEzNTkKLS5bMF1bMTM2MV09MTM2MAotLlswXVsxMzYyXT0xMzYxCi0u
WzBdWzEzNjNdPTEzNjIKLS5bMF1bMTM2NF09MTM2MwotLlswXVsxMzY1XT0xMzY0Ci0uWzBdWzEz
NjZdPTEzNjUKLS5bMF1bMTM2N109MTM2NgotLlswXVsxMzY4XT0xMzY3Ci0uWzBdWzEzNjldPTEz
NjgKLS5bMF1bMTM3MF09MTM2OQotLlswXVsxMzcxXT0xMzcwCi0uWzBdWzEzNzJdPTEzNzEKLS5b
MF1bMTM3M109MTM3MgotLlswXVsxMzc0XT0xMzczCi0uWzBdWzEzNzVdPTEzNzQKLS5bMF1bMTM3
Nl09MTM3NQotLlswXVsxMzc3XT0xMzc2Ci0uWzBdWzEzNzhdPTEzNzcKLS5bMF1bMTM3OV09MTM3
OAotLlswXVsxMzgwXT0xMzc5Ci0uWzBdWzEzODFdPTEzODAKLS5bMF1bMTM4Ml09MTM4MQotLlsw
XVsxMzgzXT0xMzgyCi0uWzBdWzEzODRdPTEzODMKLS5bMF1bMTM4NV09MTM4NAotLlswXVsxMzg2
XT0xMzg1Ci0uWzBdWzEzODddPTEzODYKLS5bMF1bMTM4OF09MTM4NwotLlswXVsxMzg5XT0xMzg4
Ci0uWzBdWzEzOTBdPTEzODkKLS5bMF1bMTM5MV09MTM5MAotLlswXVsxMzkyXT0xMzkxCi0uWzBd
WzEzOTNdPTEzOTIKLS5bMF1bMTM5NF09MTM5MwotLlswXVsxMzk1XT0xMzk0Ci0uWzBdWzEzOTZd
PTEzOTUKLS5bMF1bMTM5N109MTM5NgotLlswXVsxMzk4XT0xMzk3Ci0uWzBdWzEzOTldPTEzOTgK
LS5bMF1bMTQwMF09MTM5OQotLlswXVsxNDAxXT0xNDAwCi0uWzBdWzE0MDJdPTE0MDEKLS5bMF1b
MTQwM109MTQwMgotLlswXVsxNDA0XT0xNDAzCi0uWzBdWzE0MDVdPTE0MDQKLS5bMF1bMTQwNl09
MTQwNQotLlswXVsxNDA3XT0xNDA2Ci0uWzBdWzE0MDhdPTE0MDcKLS5bMF1bMTQwOV09MTQwOAot
LlswXVsxNDEwXT0xNDA5Ci0uWzBdWzE0MTFdPTE0MTAKLS5bMF1bMTQxMl09MTQxMQotLlswXVsx
NDEzXT0xNDEyCi0uWzBdWzE0MTRdPTE0MTMKLS5bMF1bMTQxNV09MTQxNAotLlswXVsxNDE2XT0x
NDE1Ci0uWzBdWzE0MTddPTE0MTYKLS5bMF1bMTQxOF09MTQxNwotLlswXVsxNDE5XT0xNDE4Ci0u
WzBdWzE0MjBdPTE0MTkKLS5bMF1bMTQyMV09MTQyMAotLlswXVsxNDIyXT0xNDIxCi0uWzBdWzE0
MjNdPTE0MjIKLS5bMF1bMTQyNF09MTQyMwotLlswXVsxNDI1XT0xNDI0Ci0uWzBdWzE0MjZdPTE0
MjUKLS5bMF1bMTQyN109MTQyNgotLlswXVsxNDI4XT0xNDI3Ci0uWzBdWzE0MjldPTE0MjgKLS5b
MF1bMTQzMF09MTQyOQotLlswXVsxNDMxXT0xNDMwCi0uWzBdWzE0MzJdPTE0MzEKLS5bMF1bMTQz
M109MTQzMgotLlswXVsxNDM0XT0xNDMzCi0uWzBdWzE0MzVdPTE0MzQKLS5bMF1bMTQzNl09MTQz
NQotLlswXVsxNDM3XT0xNDM2Ci0uWzBdWzE0MzhdPTE0MzcKLS5bMF1bMTQzOV09MTQzOAotLlsw
XVsxNDQwXT0xNDM5Ci0uWzBdWzE0NDFdPTE0NDAKLS5bMF1bMTQ0Ml09MTQ0MQotLlswXVsxNDQz
XT0xNDQyCi0uWzBdWzE0NDRdPTE0NDMKLS5bMF1bMTQ0NV09MTQ0NAotLlswXVsxNDQ2XT0xNDQ1
Ci0uWzBdWzE0NDddPTE0NDYKLS5bMF1bMTQ0OF09MTQ0NwotLlswXVsxNDQ5XT0xNDQ4Ci0uWzBd
WzE0NTBdPTE0NDkKLS5bMF1bMTQ1MV09MTQ1MAotLlswXVsxNDUyXT0xNDUxCi0uWzBdWzE0NTNd
PTE0NTIKLS5bMF1bMTQ1NF09MTQ1MwotLlswXVsxNDU1XT0xNDU0Ci0uWzBdWzE0NTZdPTE0NTUK
LS5bMF1bMTQ1N109MTQ1NgotLlswXVsxNDU4XT0xNDU3Ci0uWzBdWzE0NTldPTE0NTgKLS5bMF1b
MTQ2MF09MTQ1OQotLlswXVsxNDYxXT0xNDYwCi0uWzBdWzE0NjJdPTE0NjEKLS5bMF1bMTQ2M109
MTQ2MgotLlswXVsxNDY0XT0xNDYzCi0uWzBdWzE0NjVdPTE0NjQKLS5bMF1bMTQ2Nl09MTQ2NQot
LlswXVsxNDY3XT0xNDY2Ci0uWzBdWzE0NjhdPTE0NjcKLS5bMF1bMTQ2OV09MTQ2OAotLlswXVsx
NDcwXT0xNDY5Ci0uWzBdWzE0NzFdPTE0NzAKLS5bMF1bMTQ3Ml09MTQ3MQotLlswXVsxNDczXT0x
NDcyCi0uWzBdWzE0NzRdPTE0NzMKLS5bMF1bMTQ3NV09MTQ3NAotLlswXVsxNDc2XT0xNDc1Ci0u
WzBdWzE0NzddPTE0NzYKLS5bMF1bMTQ3OF09MTQ3NwotLlswXVsxNDc5XT0xNDc4Ci0uWzBdWzE0
ODBdPTE0NzkKLS5bMF1bMTQ4MV09MTQ4MAotLlswXVsxNDgyXT0xNDgxCi0uWzBdWzE0ODNdPTE0
ODIKLS5bMF1bMTQ4NF09MTQ4MwotLlswXVsxNDg1XT0xNDg0Ci0uWzBdWzE0ODZdPTE0ODUKLS5b
MF1bMTQ4N109MTQ4NgotLlswXVsxNDg4XT0xNDg3Ci0uWzBdWzE0ODldPTE0ODgKLS5bMF1bMTQ5
MF09MTQ4OQotLlswXVsxNDkxXT0xNDkwCi0uWzBdWzE0OTJdPTE0OTEKLS5bMF1bMTQ5M109MTQ5
MgotLlswXVsxNDk0XT0xNDkzCi0uWzBdWzE0OTVdPTE0OTQKLS5bMF1bMTQ5Nl09MTQ5NQotLlsw
XVsxNDk3XT0xNDk2Ci0uWzBdWzE0OThdPTE0OTcKLS5bMF1bMTQ5OV09MTQ5OAotLlswXVsxNTAw
XT0xNDk5Ci0uWzBdWzE1MDFdPTE1MDAKLS5bMF1bMTUwMl09MTUwMQotLlswXVsxNTAzXT0xNTAy
Ci0uWzBdWzE1MDRdPTE1MDMKLS5bMF1bMTUwNV09MTUwNAotLlswXVsxNTA2XT0xNTA1Ci0uWzBd
WzE1MDddPTE1MDYKLS5bMF1bMTUwOF09MTUwNwotLlswXVsxNTA5XT0xNTA4Ci0uWzBdWzE1MTBd
PTE1MDkKLS5bMF1bMTUxMV09MTUxMAotLlswXVsxNTEyXT0xNTExCi0uWzBdWzE1MTNdPTE1MTIK
LS5bMF1bMTUxNF09MTUxMwotLlswXVsxNTE1XT0xNTE0Ci0uWzBdWzE1MTZdPTE1MTUKLS5bMF1b
MTUxN109MTUxNgotLlswXVsxNTE4XT0xNTE3Ci0uWzBdWzE1MTldPTE1MTgKLS5bMF1bMTUyMF09
MTUxOQotLlswXVsxNTIxXT0xNTIwCi0uWzBdWzE1MjJdPTE1MjEKLS5bMF1bMTUyM109MTUyMgot
LlswXVsxNTI0XT0xNTIzCi0uWzBdWzE1MjVdPTE1MjQKLS5bMF1bMTUyNl09MTUyNQotLlswXVsx
NTI3XT0xNTI2Ci0uWzBdWzE1MjhdPTE1MjcKLS5bMF1bMTUyOV09MTUyOAotLlswXVsxNTMwXT0x
NTI5Ci0uWzBdWzE1MzFdPTE1MzAKLS5bMF1bMTUzMl09MTUzMQotLlswXVsxNTMzXT0xNTMyCi0u
WzBdWzE1MzRdPTE1MzMKLS5bMF1bMTUzNV09MTUzNAotLlswXVsxNTM2XT0xNTM1Ci0uWzBdWzE1
MzddPTE1MzYKLS5bMF1bMTUzOF09MTUzNwotLlswXVsxNTM5XT0xNTM4Ci0uWzBdWzE1NDBdPTE1
MzkKLS5bMF1bMTU0MV09MTU0MAotLlswXVsxNTQyXT0xNTQxCi0uWzBdWzE1NDNdPTE1NDIKLS5b
MF1bMTU0NF09MTU0MwotLlswXVsxNTQ1XT0xNTQ0Ci0uWzBdWzE1NDZdPTE1NDUKLS5bMF1bMTU0
N109MTU0NgotLlswXVsxNTQ4XT0xNTQ3Ci0uWzBdWzE1NDldPTE1NDgKLS5bMF1bMTU1MF09MTU0
OQotLlswXVsxNTUxXT0xNTUwCi0uWzBdWzE1NTJdPTE1NTEKLS5bMF1bMTU1M109MTU1MgotLlsw
XVsxNTU0XT0xNTUzCi0uWzBdWzE1NTVdPTE1NTQKLS5bMF1bMTU1Nl09MTU1NQotLlswXVsxNTU3
XT0xNTU2Ci0uWzBdWzE1NThdPTE1NTcKLS5bMF1bMTU1OV09MTU1OAotLlswXVsxNTYwXT0xNTU5
Ci0uWzBdWzE1NjFdPTE1NjAKLS5bMF1bMTU2Ml09MTU2MQotLlswXVsxNTYzXT0xNTYyCi0uWzBd
WzE1NjRdPTE1NjMKLS5bMF1bMTU2NV09MTU2NAotLlswXVsxNTY2XT0xNTY1Ci0uWzBdWzE1Njdd
PTE1NjYKLS5bMF1bMTU2OF09MTU2NwotLlswXVsxNTY5XT0xNTY4Ci0uWzBdWzE1NzBdPTE1NjkK
LS5bMF1bMTU3MV09MTU3MAotLlswXVsxNTcyXT0xNTcxCi0uWzBdWzE1NzNdPTE1NzIKLS5bMF1b
MTU3NF09MTU3MwotLlswXVsxNTc1XT0xNTc0Ci0uWzBdWzE1NzZdPTE1NzUKLS5bMF1bMTU3N109
MTU3NgotLlswXVsxNTc4XT0xNTc3Ci0uWzBdWzE1NzldPTE1NzgKLS5bMF1bMTU4MF09MTU3OQot
LlswXVsxNTgxXT0xNTgwCi0uWzBdWzE1ODJdPTE1ODEKLS5bMF1bMTU4M109MTU4MgotLlswXVsx
NTg0XT0xNTgzCi0uWzBdWzE1ODVdPTE1ODQKLS5bMF1bMTU4Nl09MTU4NQotLlswXVsxNTg3XT0x
NTg2Ci0uWzBdWzE1ODhdPTE1ODcKLS5bMF1bMTU4OV09MTU4OAotLlswXVsxNTkwXT0xNTg5Ci0u
WzBdWzE1OTFdPTE1OTAKLS5bMF1bMTU5Ml09MTU5MQotLlswXVsxNTkzXT0xNTkyCi0uWzBdWzE1
OTRdPTE1OTMKLS5bMF1bMTU5NV09MTU5NAotLlswXVsxNTk2XT0xNTk1Ci0uWzBdWzE1OTddPTE1
OTYKLS5bMF1bMTU5OF09MTU5NwotLlswXVsxNTk5XT0xNTk4Ci0uWzBdWzE2MDBdPTE1OTkKLS5b
MF1bMTYwMV09MTYwMAotLlswXVsxNjAyXT0xNjAxCi0uWzBdWzE2MDNdPTE2MDIKLS5bMF1bMTYw
NF09MTYwMwotLlswXVsxNjA1XT0xNjA0Ci0uWzBdWzE2MDZdPTE2MDUKLS5bMF1bMTYwN109MTYw
NgotLlswXVsxNjA4XT0xNjA3Ci0uWzBdWzE2MDldPTE2MDgKLS5bMF1bMTYxMF09MTYwOQotLlsw
XVsxNjExXT0xNjEwCi0uWzBdWzE2MTJdPTE2MTEKLS5bMF1bMTYxM109MTYxMgotLlswXVsxNjE0
XT0xNjEzCi0uWzBdWzE2MTVdPTE2MTQKLS5bMF1bMTYxNl09MTYxNQotLlswXVsxNjE3XT0xNjE2
Ci0uWzBdWzE2MThdPTE2MTcKLS5bMF1bMTYxOV09MTYxOAotLlswXVsxNjIwXT0xNjE5Ci0uWzBd
WzE2MjFdPTE2MjAKLS5bMF1bMTYyMl09MTYyMQotLlswXVsxNjIzXT0xNjIyCi0uWzBdWzE2MjRd
PTE2MjMKLS5bMF1bMTYyNV09MTYyNAotLlswXVsxNjI2XT0xNjI1Ci0uWzBdWzE2MjddPTE2MjYK
LS5bMF1bMTYyOF09MTYyNwotLlswXVsxNjI5XT0xNjI4Ci0uWzBdWzE2MzBdPTE2MjkKLS5bMF1b
MTYzMV09MTYzMAotLlswXVsxNjMyXT0xNjMxCi0uWzBdWzE2MzNdPTE2MzIKLS5bMF1bMTYzNF09
MTYzMwotLlswXVsxNjM1XT0xNjM0Ci0uWzBdWzE2MzZdPTE2MzUKLS5bMF1bMTYzN109MTYzNgot
LlswXVsxNjM4XT0xNjM3Ci0uWzBdWzE2MzldPTE2MzgKLS5bMF1bMTY0MF09MTYzOQotLlswXVsx
NjQxXT0xNjQwCi0uWzBdWzE2NDJdPTE2NDEKLS5bMF1bMTY0M109MTY0MgotLlswXVsxNjQ0XT0x
NjQzCi0uWzBdWzE2NDVdPTE2NDQKLS5bMF1bMTY0Nl09MTY0NQotLlswXVsxNjQ3XT0xNjQ2Ci0u
WzBdWzE2NDhdPTE2NDcKLS5bMF1bMTY0OV09MTY0OAotLlswXVsxNjUwXT0xNjQ5Ci0uWzBdWzE2
NTFdPTE2NTAKLS5bMF1bMTY1Ml09MTY1MQotLlswXVsxNjUzXT0xNjUyCi0uWzBdWzE2NTRdPTE2
NTMKLS5bMF1bMTY1NV09MTY1NAotLlswXVsxNjU2XT0xNjU1Ci0uWzBdWzE2NTddPTE2NTYKLS5b
MF1bMTY1OF09MTY1NwotLlswXVsxNjU5XT0xNjU4Ci0uWzBdWzE2NjBdPTE2NTkKLS5bMF1bMTY2
MV09MTY2MAotLlswXVsxNjYyXT0xNjYxCi0uWzBdWzE2NjNdPTE2NjIKLS5bMF1bMTY2NF09MTY2
MwotLlswXVsxNjY1XT0xNjY0Ci0uWzBdWzE2NjZdPTE2NjUKLS5bMF1bMTY2N109MTY2NgotLlsw
XVsxNjY4XT0xNjY3Ci0uWzBdWzE2NjldPTE2NjgKLS5bMF1bMTY3MF09MTY2OQotLlswXVsxNjcx
XT0xNjcwCi0uWzBdWzE2NzJdPTE2NzEKLS5bMF1bMTY3M109MTY3MgotLlswXVsxNjc0XT0xNjcz
Ci0uWzBdWzE2NzVdPTE2NzQKLS5bMF1bMTY3Nl09MTY3NQotLlswXVsxNjc3XT0xNjc2Ci0uWzBd
WzE2NzhdPTE2NzcKLS5bMF1bMTY3OV09MTY3OAotLlswXVsxNjgwXT0xNjc5Ci0uWzBdWzE2ODFd
PTE2ODAKLS5bMF1bMTY4Ml09MTY4MQotLlswXVsxNjgzXT0xNjgyCi0uWzBdWzE2ODRdPTE2ODMK
LS5bMF1bMTY4NV09MTY4NAotLlswXVsxNjg2XT0xNjg1Ci0uWzBdWzE2ODddPTE2ODYKLS5bMF1b
MTY4OF09MTY4NwotLlswXVsxNjg5XT0xNjg4Ci0uWzBdWzE2OTBdPTE2ODkKLS5bMF1bMTY5MV09
MTY5MAotLlswXVsxNjkyXT0xNjkxCi0uWzBdWzE2OTNdPTE2OTIKLS5bMF1bMTY5NF09MTY5Mwot
LlswXVsxNjk1XT0xNjk0Ci0uWzBdWzE2OTZdPTE2OTUKLS5bMF1bMTY5N109MTY5NgotLlswXVsx
Njk4XT0xNjk3Ci0uWzBdWzE2OTldPTE2OTgKLS5bMF1bMTcwMF09MTY5OQotLlswXVsxNzAxXT0x
NzAwCi0uWzBdWzE3MDJdPTE3MDEKLS5bMF1bMTcwM109MTcwMgotLlswXVsxNzA0XT0xNzAzCi0u
WzBdWzE3MDVdPTE3MDQKLS5bMF1bMTcwNl09MTcwNQotLlswXVsxNzA3XT0xNzA2Ci0uWzBdWzE3
MDhdPTE3MDcKLS5bMF1bMTcwOV09MTcwOAotLlswXVsxNzEwXT0xNzA5Ci0uWzBdWzE3MTFdPTE3
MTAKLS5bMF1bMTcxMl09MTcxMQotLlswXVsxNzEzXT0xNzEyCi0uWzBdWzE3MTRdPTE3MTMKLS5b
MF1bMTcxNV09MTcxNAotLlswXVsxNzE2XT0xNzE1Ci0uWzBdWzE3MTddPTE3MTYKLS5bMF1bMTcx
OF09MTcxNwotLlswXVsxNzE5XT0xNzE4Ci0uWzBdWzE3MjBdPTE3MTkKLS5bMF1bMTcyMV09MTcy
MAotLlswXVsxNzIyXT0xNzIxCi0uWzBdWzE3MjNdPTE3MjIKLS5bMF1bMTcyNF09MTcyMwotLlsw
XVsxNzI1XT0xNzI0Ci0uWzBdWzE3MjZdPTE3MjUKLS5bMF1bMTcyN109MTcyNgotLlswXVsxNzI4
XT0xNzI3Ci0uWzBdWzE3MjldPTE3MjgKLS5bMF1bMTczMF09MTcyOQotLlswXVsxNzMxXT0xNzMw
Ci0uWzBdWzE3MzJdPTE3MzEKLS5bMF1bMTczM109MTczMgotLlswXVsxNzM0XT0xNzMzCi0uWzBd
WzE3MzVdPTE3MzQKLS5bMF1bMTczNl09MTczNQotLlswXVsxNzM3XT0xNzM2Ci0uWzBdWzE3Mzhd
PTE3MzcKLS5bMF1bMTczOV09MTczOAotLlswXVsxNzQwXT0xNzM5Ci0uWzBdWzE3NDFdPTE3NDAK
LS5bMF1bMTc0Ml09MTc0MQotLlswXVsxNzQzXT0xNzQyCi0uWzBdWzE3NDRdPTE3NDMKLS5bMF1b
MTc0NV09MTc0NAotLlswXVsxNzQ2XT0xNzQ1Ci0uWzBdWzE3NDddPTE3NDYKLS5bMF1bMTc0OF09
MTc0NwotLlswXVsxNzQ5XT0xNzQ4Ci0uWzBdWzE3NTBdPTE3NDkKLS5bMF1bMTc1MV09MTc1MAot
LlswXVsxNzUyXT0xNzUxCi0uWzBdWzE3NTNdPTE3NTIKLS5bMF1bMTc1NF09MTc1MwotLlswXVsx
NzU1XT0xNzU0Ci0uWzBdWzE3NTZdPTE3NTUKLS5bMF1bMTc1N109MTc1NgotLlswXVsxNzU4XT0x
NzU3Ci0uWzBdWzE3NTldPTE3NTgKLS5bMF1bMTc2MF09MTc1OQotLlswXVsxNzYxXT0xNzYwCi0u
WzBdWzE3NjJdPTE3NjEKLS5bMF1bMTc2M109MTc2MgotLlswXVsxNzY0XT0xNzYzCi0uWzBdWzE3
NjVdPTE3NjQKLS5bMF1bMTc2Nl09MTc2NQotLlswXVsxNzY3XT0xNzY2Ci0uWzBdWzE3NjhdPTE3
NjcKLS5bMF1bMTc2OV09MTc2OAotLlswXVsxNzcwXT0xNzY5Ci0uWzBdWzE3NzFdPTE3NzAKLS5b
MF1bMTc3Ml09MTc3MQotLlswXVsxNzczXT0xNzcyCi0uWzBdWzE3NzRdPTE3NzMKLS5bMF1bMTc3
NV09MTc3NAotLlswXVsxNzc2XT0xNzc1Ci0uWzBdWzE3NzddPTE3NzYKLS5bMF1bMTc3OF09MTc3
NwotLlswXVsxNzc5XT0xNzc4Ci0uWzBdWzE3ODBdPTE3NzkKLS5bMF1bMTc4MV09MTc4MAotLlsw
XVsxNzgyXT0xNzgxCi0uWzBdWzE3ODNdPTE3ODIKLS5bMF1bMTc4NF09MTc4MwotLlswXVsxNzg1
XT0xNzg0Ci0uWzBdWzE3ODZdPTE3ODUKLS5bMF1bMTc4N109MTc4NgotLlswXVsxNzg4XT0xNzg3
Ci0uWzBdWzE3ODldPTE3ODgKLS5bMF1bMTc5MF09MTc4OQotLlswXVsxNzkxXT0xNzkwCi0uWzBd
WzE3OTJdPTE3OTEKLS5bMF1bMTc5M109MTc5MgotLlswXVsxNzk0XT0xNzkzCi0uWzBdWzE3OTVd
PTE3OTQKLS5bMF1bMTc5Nl09MTc5NQotLlswXVsxNzk3XT0xNzk2Ci0uWzBdWzE3OThdPTE3OTcK
LS5bMF1bMTc5OV09MTc5OAotLlswXVsxODAwXT0xNzk5Ci0uWzBdWzE4MDFdPTE4MDAKLS5bMF1b
MTgwMl09MTgwMQotLlswXVsxODAzXT0xODAyCi0uWzBdWzE4MDRdPTE4MDMKLS5bMF1bMTgwNV09
MTgwNAotLlswXVsxODA2XT0xODA1Ci0uWzBdWzE4MDddPTE4MDYKLS5bMF1bMTgwOF09MTgwNwot
LlswXVsxODA5XT0xODA4Ci0uWzBdWzE4MTBdPTE4MDkKLS5bMF1bMTgxMV09MTgxMAotLlswXVsx
ODEyXT0xODExCi0uWzBdWzE4MTNdPTE4MTIKLS5bMF1bMTgxNF09MTgxMwotLlswXVsxODE1XT0x
ODE0Ci0uWzBdWzE4MTZdPTE4MTUKLS5bMF1bMTgxN109MTgxNgotLlswXVsxODE4XT0xODE3Ci0u
WzBdWzE4MTldPTE4MTgKLS5bMF1bMTgyMF09MTgxOQotLlswXVsxODIxXT0xODIwCi0uWzBdWzE4
MjJdPTE4MjEKLS5bMF1bMTgyM109MTgyMgotLlswXVsxODI0XT0xODIzCi0uWzBdWzE4MjVdPTE4
MjQKLS5bMF1bMTgyNl09MTgyNQotLlswXVsxODI3XT0xODI2Ci0uWzBdWzE4MjhdPTE4MjcKLS5b
MF1bMTgyOV09MTgyOAotLlswXVsxODMwXT0xODI5Ci0uWzBdWzE4MzFdPTE4MzAKLS5bMF1bMTgz
Ml09MTgzMQotLlswXVsxODMzXT0xODMyCi0uWzBdWzE4MzRdPTE4MzMKLS5bMF1bMTgzNV09MTgz
NAotLlswXVsxODM2XT0xODM1Ci0uWzBdWzE4MzddPTE4MzYKLS5bMF1bMTgzOF09MTgzNwotLlsw
XVsxODM5XT0xODM4Ci0uWzBdWzE4NDBdPTE4MzkKLS5bMF1bMTg0MV09MTg0MAotLlswXVsxODQy
XT0xODQxCi0uWzBdWzE4NDNdPTE4NDIKLS5bMF1bMTg0NF09MTg0MwotLlswXVsxODQ1XT0xODQ0
Ci0uWzBdWzE4NDZdPTE4NDUKLS5bMF1bMTg0N109MTg0NgotLlswXVsxODQ4XT0xODQ3Ci0uWzBd
WzE4NDldPTE4NDgKLS5bMF1bMTg1MF09MTg0OQotLlswXVsxODUxXT0xODUwCi0uWzBdWzE4NTJd
PTE4NTEKLS5bMF1bMTg1M109MTg1MgotLlswXVsxODU0XT0xODUzCi0uWzBdWzE4NTVdPTE4NTQK
LS5bMF1bMTg1Nl09MTg1NQotLlswXVsxODU3XT0xODU2Ci0uWzBdWzE4NThdPTE4NTcKLS5bMF1b
MTg1OV09MTg1OAotLlswXVsxODYwXT0xODU5Ci0uWzBdWzE4NjFdPTE4NjAKLS5bMF1bMTg2Ml09
MTg2MQotLlswXVsxODYzXT0xODYyCi0uWzBdWzE4NjRdPTE4NjMKLS5bMF1bMTg2NV09MTg2NAot
LlswXVsxODY2XT0xODY1Ci0uWzBdWzE4NjddPTE4NjYKLS5bMF1bMTg2OF09MTg2NwotLlswXVsx
ODY5XT0xODY4Ci0uWzBdWzE4NzBdPTE4NjkKLS5bMF1bMTg3MV09MTg3MAotLlswXVsxODcyXT0x
ODcxCi0uWzBdWzE4NzNdPTE4NzIKLS5bMF1bMTg3NF09MTg3MwotLlswXVsxODc1XT0xODc0Ci0u
WzBdWzE4NzZdPTE4NzUKLS5bMF1bMTg3N109MTg3NgotLlswXVsxODc4XT0xODc3Ci0uWzBdWzE4
NzldPTE4NzgKLS5bMF1bMTg4MF09MTg3OQotLlswXVsxODgxXT0xODgwCi0uWzBdWzE4ODJdPTE4
ODEKLS5bMF1bMTg4M109MTg4MgotLlswXVsxODg0XT0xODgzCi0uWzBdWzE4ODVdPTE4ODQKLS5b
MF1bMTg4Nl09MTg4NQotLlswXVsxODg3XT0xODg2Ci0uWzBdWzE4ODhdPTE4ODcKLS5bMF1bMTg4
OV09MTg4OAotLlswXVsxODkwXT0xODg5Ci0uWzBdWzE4OTFdPTE4OTAKLS5bMF1bMTg5Ml09MTg5
MQotLlswXVsxODkzXT0xODkyCi0uWzBdWzE4OTRdPTE4OTMKLS5bMF1bMTg5NV09MTg5NAotLlsw
XVsxODk2XT0xODk1Ci0uWzBdWzE4OTddPTE4OTYKLS5bMF1bMTg5OF09MTg5NwotLlswXVsxODk5
XT0xODk4Ci0uWzBdWzE5MDBdPTE4OTkKLS5bMF1bMTkwMV09MTkwMAotLlswXVsxOTAyXT0xOTAx
Ci0uWzBdWzE5MDNdPTE5MDIKLS5bMF1bMTkwNF09MTkwMwotLlswXVsxOTA1XT0xOTA0Ci0uWzBd
WzE5MDZdPTE5MDUKLS5bMF1bMTkwN109MTkwNgotLlswXVsxOTA4XT0xOTA3Ci0uWzBdWzE5MDld
PTE5MDgKLS5bMF1bMTkxMF09MTkwOQotLlswXVsxOTExXT0xOTEwCi0uWzBdWzE5MTJdPTE5MTEK
LS5bMF1bMTkxM109MTkxMgotLlswXVsxOTE0XT0xOTEzCi0uWzBdWzE5MTVdPTE5MTQKLS5bMF1b
MTkxNl09MTkxNQotLlswXVsxOTE3XT0xOTE2Ci0uWzBdWzE5MThdPTE5MTcKLS5bMF1bMTkxOV09
MTkxOAotLlswXVsxOTIwXT0xOTE5Ci0uWzBdWzE5MjFdPTE5MjAKLS5bMF1bMTkyMl09MTkyMQot
LlswXVsxOTIzXT0xOTIyCi0uWzBdWzE5MjRdPTE5MjMKLS5bMF1bMTkyNV09MTkyNAotLlswXVsx
OTI2XT0xOTI1Ci0uWzBdWzE5MjddPTE5MjYKLS5bMF1bMTkyOF09MTkyNwotLlswXVsxOTI5XT0x
OTI4Ci0uWzBdWzE5MzBdPTE5MjkKLS5bMF1bMTkzMV09MTkzMAotLlswXVsxOTMyXT0xOTMxCi0u
WzBdWzE5MzNdPTE5MzIKLS5bMF1bMTkzNF09MTkzMwotLlswXVsxOTM1XT0xOTM0Ci0uWzBdWzE5
MzZdPTE5MzUKLS5bMF1bMTkzN109MTkzNgotLlswXVsxOTM4XT0xOTM3Ci0uWzBdWzE5MzldPTE5
MzgKLS5bMF1bMTk0MF09MTkzOQotLlswXVsxOTQxXT0xOTQwCi0uWzBdWzE5NDJdPTE5NDEKLS5b
MF1bMTk0M109MTk0MgotLlswXVsxOTQ0XT0xOTQzCi0uWzBdWzE5NDVdPTE5NDQKLS5bMF1bMTk0
Nl09MTk0NQotLlswXVsxOTQ3XT0xOTQ2Ci0uWzBdWzE5NDhdPTE5NDcKLS5bMF1bMTk0OV09MTk0
OAotLlswXVsxOTUwXT0xOTQ5Ci0uWzBdWzE5NTFdPTE5NTAKLS5bMF1bMTk1Ml09MTk1MQotLlsw
XVsxOTUzXT0xOTUyCi0uWzBdWzE5NTRdPTE5NTMKLS5bMF1bMTk1NV09MTk1NAotLlswXVsxOTU2
XT0xOTU1Ci0uWzBdWzE5NTddPTE5NTYKLS5bMF1bMTk1OF09MTk1NwotLlswXVsxOTU5XT0xOTU4
Ci0uWzBdWzE5NjBdPTE5NTkKLS5bMF1bMTk2MV09MTk2MAotLlswXVsxOTYyXT0xOTYxCi0uWzBd
WzE5NjNdPTE5NjIKLS5bMF1bMTk2NF09MTk2MwotLlswXVsxOTY1XT0xOTY0Ci0uWzBdWzE5NjZd
PTE5NjUKLS5bMF1bMTk2N109MTk2NgotLlswXVsxOTY4XT0xOTY3Ci0uWzBdWzE5NjldPTE5NjgK
LS5bMF1bMTk3MF09MTk2OQotLlswXVsxOTcxXT0xOTcwCi0uWzBdWzE5NzJdPTE5NzEKLS5bMF1b
MTk3M109MTk3MgotLlswXVsxOTc0XT0xOTczCi0uWzBdWzE5NzVdPTE5NzQKLS5bMF1bMTk3Nl09
MTk3NQotLlswXVsxOTc3XT0xOTc2Ci0uWzBdWzE5NzhdPTE5NzcKLS5bMF1bMTk3OV09MTk3OAot
LlswXVsxOTgwXT0xOTc5Ci0uWzBdWzE5ODFdPTE5ODAKLS5bMF1bMTk4Ml09MTk4MQotLlswXVsx
OTgzXT0xOTgyCi0uWzBdWzE5ODRdPTE5ODMKLS5bMF1bMTk4NV09MTk4NAotLlswXVsxOTg2XT0x
OTg1Ci0uWzBdWzE5ODddPTE5ODYKLS5bMF1bMTk4OF09MTk4NwotLlswXVsxOTg5XT0xOTg4Ci0u
WzBdWzE5OTBdPTE5ODkKLS5bMF1bMTk5MV09MTk5MAotLlswXVsxOTkyXT0xOTkxCi0uWzBdWzE5
OTNdPTE5OTIKLS5bMF1bMTk5NF09MTk5MwotLlswXVsxOTk1XT0xOTk0Ci0uWzBdWzE5OTZdPTE5
OTUKLS5bMF1bMTk5N109MTk5NgotLlswXVsxOTk4XT0xOTk3Ci0uWzBdWzE5OTldPTE5OTgKLS5b
MF1bMjAwMF09MTk5OQotLlswXVsyMDAxXT0yMDAwCi0uWzBdWzIwMDJdPTIwMDEKLS5bMF1bMjAw
M109MjAwMgotLlswXVsyMDA0XT0yMDAzCi0uWzBdWzIwMDVdPTIwMDQKLS5bMF1bMjAwNl09MjAw
NQotLlswXVsyMDA3XT0yMDA2Ci0uWzBdWzIwMDhdPTIwMDcKLS5bMF1bMjAwOV09MjAwOAotLlsw
XVsyMDEwXT0yMDA5Ci0uWzBdWzIwMTFdPTIwMTAKLS5bMF1bMjAxMl09MjAxMQotLlswXVsyMDEz
XT0yMDEyCi0uWzBdWzIwMTRdPTIwMTMKLS5bMF1bMjAxNV09MjAxNAotLlswXVsyMDE2XT0yMDE1
Ci0uWzBdWzIwMTddPTIwMTYKLS5bMF1bMjAxOF09MjAxNwotLlswXVsyMDE5XT0yMDE4Ci0uWzBd
WzIwMjBdPTIwMTkKLS5bMF1bMjAyMV09MjAyMAotLlswXVsyMDIyXT0yMDIxCi0uWzBdWzIwMjNd
PTIwMjIKLS5bMF1bMjAyNF09MjAyMwotLlswXVsyMDI1XT0yMDI0Ci0uWzBdWzIwMjZdPTIwMjUK
LS5bMF1bMjAyN109MjAyNgotLlswXVsyMDI4XT0yMDI3Ci0uWzBdWzIwMjldPTIwMjgKLS5bMF1b
MjAzMF09MjAyOQotLlswXVsyMDMxXT0yMDMwCi0uWzBdWzIwMzJdPTIwMzEKLS5bMF1bMjAzM109
MjAzMgotLlswXVsyMDM0XT0yMDMzCi0uWzBdWzIwMzVdPTIwMzQKLS5bMF1bMjAzNl09MjAzNQot
LlswXVsyMDM3XT0yMDM2Ci0uWzBdWzIwMzhdPTIwMzcKLS5bMF1bMjAzOV09MjAzOAotLlswXVsy
MDQwXT0yMDM5Ci0uWzBdWzIwNDFdPTIwNDAKLS5bMF1bMjA0Ml09MjA0MQotLlswXVsyMDQzXT0y
MDQyCi0uWzBdWzIwNDRdPTIwNDMKLS5bMF1bMjA0NV09MjA0NAotLlswXVsyMDQ2XT0yMDQ1Ci0u
WzBdWzIwNDddPTIwNDYKLS5bMF1bMjA0OF09MjA0NwotLlswXVsyMDQ5XT0yMDQ4Ci0uWzBdWzIw
NTBdPTIwNDkKLS5bMF1bMjA1MV09MjA1MAotLlswXVsyMDUyXT0yMDUxCi0uWzBdWzIwNTNdPTIw
NTIKLS5bMF1bMjA1NF09MjA1MwotLlswXVsyMDU1XT0yMDU0Ci0uWzBdWzIwNTZdPTIwNTUKLS5b
MF1bMjA1N109MjA1NgotLlswXVsyMDU4XT0yMDU3Ci0uWzBdWzIwNTldPTIwNTgKLS5bMF1bMjA2
MF09MjA1OQotLlswXVsyMDYxXT0yMDYwCi0uWzBdWzIwNjJdPTIwNjEKLS5bMF1bMjA2M109MjA2
MgotLlswXVsyMDY0XT0yMDYzCi0uWzBdWzIwNjVdPTIwNjQKLS5bMF1bMjA2Nl09MjA2NQotLlsw
XVsyMDY3XT0yMDY2Ci0uWzBdWzIwNjhdPTIwNjcKLS5bMF1bMjA2OV09MjA2OAotLlswXVsyMDcw
XT0yMDY5Ci0uWzBdWzIwNzFdPTIwNzAKLS5bMF1bMjA3Ml09MjA3MQotLlswXVsyMDczXT0yMDcy
Ci0uWzBdWzIwNzRdPTIwNzMKLS5bMF1bMjA3NV09MjA3NAotLlswXVsyMDc2XT0yMDc1Ci0uWzBd
WzIwNzddPTIwNzYKLS5bMF1bMjA3OF09MjA3NwotLlswXVsyMDc5XT0yMDc4Ci0uWzBdWzIwODBd
PTIwNzkKLS5bMF1bMjA4MV09MjA4MAotLlswXVsyMDgyXT0yMDgxCi0uWzBdWzIwODNdPTIwODIK
LS5bMF1bMjA4NF09MjA4MwotLlswXVsyMDg1XT0yMDg0Ci0uWzBdWzIwODZdPTIwODUKLS5bMF1b
MjA4N109MjA4NgotLlswXVsyMDg4XT0yMDg3Ci0uWzBdWzIwODldPTIwODgKLS5bMF1bMjA5MF09
MjA4OQotLlswXVsyMDkxXT0yMDkwCi0uWzBdWzIwOTJdPTIwOTEKLS5bMF1bMjA5M109MjA5Mgot
LlswXVsyMDk0XT0yMDkzCi0uWzBdWzIwOTVdPTIwOTQKLS5bMF1bMjA5Nl09MjA5NQotLlswXVsy
MDk3XT0yMDk2Ci0uWzBdWzIwOThdPTIwOTcKLS5bMF1bMjA5OV09MjA5OAotLlswXVsyMTAwXT0y
MDk5Ci0uWzBdWzIxMDFdPTIxMDAKLS5bMF1bMjEwMl09MjEwMQotLlswXVsyMTAzXT0yMTAyCi0u
WzBdWzIxMDRdPTIxMDMKLS5bMF1bMjEwNV09MjEwNAotLlswXVsyMTA2XT0yMTA1Ci0uWzBdWzIx
MDddPTIxMDYKLS5bMF1bMjEwOF09MjEwNwotLlswXVsyMTA5XT0yMTA4Ci0uWzBdWzIxMTBdPTIx
MDkKLS5bMF1bMjExMV09MjExMAotLlswXVsyMTEyXT0yMTExCi0uWzBdWzIxMTNdPTIxMTIKLS5b
MF1bMjExNF09MjExMwotLlswXVsyMTE1XT0yMTE0Ci0uWzBdWzIxMTZdPTIxMTUKLS5bMF1bMjEx
N109MjExNgotLlswXVsyMTE4XT0yMTE3Ci0uWzBdWzIxMTldPTIxMTgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfYXJyYXlfMDcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYXJy
YXlfMDcuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRhYjRjZDQzMzBjLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9hcnJheV8wNy5qc29uCisrKyAv
ZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1bWyJBIiwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDEx
LDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMw
LDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5
LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4
LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3
LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQs
MTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwx
MTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyNywxMjgsMTI5LDEzMCwxMzEsMTMyLDEz
MywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3
LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEs
MTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwx
NzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5
MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0
LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgs
MjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwy
MzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0
NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYx
LDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUs
Mjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwy
OTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMw
NCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4
LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIs
MzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0Niwz
NDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2
MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1
LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsMzg0LDM4NSwzODYsMzg3LDM4OCwzODks
MzkwLDM5MSwzOTIsMzkzLDM5NCwzOTUsMzk2LDM5NywzOTgsMzk5LDQwMCw0MDEsNDAyLDQwMyw0
MDQsNDA1LDQwNiw0MDcsNDA4LDQwOSw0MTAsNDExLDQxMiw0MTMsNDE0LDQxNSw0MTYsNDE3LDQx
OCw0MTksNDIwLDQyMSw0MjIsNDIzLDQyNCw0MjUsNDI2LDQyNyw0MjgsNDI5LDQzMCw0MzEsNDMy
LDQzMyw0MzQsNDM1LDQzNiw0MzcsNDM4LDQzOSw0NDAsNDQxLDQ0Miw0NDMsNDQ0LDQ0NSw0NDYs
NDQ3LDQ0OCw0NDksNDUwLDQ1MSw0NTIsNDUzLDQ1NCw0NTUsNDU2LDQ1Nyw0NTgsNDU5LDQ2MCw0
NjEsNDYyLDQ2Myw0NjQsNDY1LDQ2Niw0NjcsNDY4LDQ2OSw0NzAsNDcxLDQ3Miw0NzMsNDc0LDQ3
NSw0NzYsNDc3LDQ3OCw0NzksNDgwLDQ4MSw0ODIsNDgzLDQ4NCw0ODUsNDg2LDQ4Nyw0ODgsNDg5
LDQ5MCw0OTEsNDkyLDQ5Myw0OTQsNDk1LDQ5Niw0OTcsNDk4LDQ5OSw1MDAsNTAxLDUwMiw1MDMs
NTA0LDUwNSw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MTIsNTEzLDUxNCw1MTUsNTE2LDUxNyw1
MTgsNTE5LDUyMCw1MjEsNTIyLDUyMyw1MjQsNTI1LDUyNiw1MjcsNTI4LDUyOSw1MzAsNTMxLDUz
Miw1MzMsNTM0LDUzNSw1MzYsNTM3LDUzOCw1MzksNTQwLDU0MSw1NDIsNTQzLDU0NCw1NDUsNTQ2
LDU0Nyw1NDgsNTQ5LDU1MCw1NTEsNTUyLDU1Myw1NTQsNTU1LDU1Niw1NTcsNTU4LDU1OSw1NjAs
NTYxLDU2Miw1NjMsNTY0LDU2NSw1NjYsNTY3LDU2OCw1NjksNTcwLDU3MSw1NzIsNTczLDU3NCw1
NzUsNTc2LDU3Nyw1NzgsNTc5LDU4MCw1ODEsNTgyLDU4Myw1ODQsNTg1LDU4Niw1ODcsNTg4LDU4
OSw1OTAsNTkxLDU5Miw1OTMsNTk0LDU5NSw1OTYsNTk3LDU5OCw1OTksNjAwLDYwMSw2MDIsNjAz
LDYwNCw2MDUsNjA2LDYwNyw2MDgsNjA5LDYxMCw2MTEsNjEyLDYxMyw2MTQsNjE1LDYxNiw2MTcs
NjE4LDYxOSw2MjAsNjIxLDYyMiw2MjMsNjI0LDYyNSw2MjYsNjI3LDYyOCw2MjksNjMwLDYzMSw2
MzIsNjMzLDYzNCw2MzUsNjM2LDYzNyw2MzgsNjM5LDY0MCw2NDEsNjQyLDY0Myw2NDQsNjQ1LDY0
Niw2NDcsNjQ4LDY0OSw2NTAsNjUxLDY1Miw2NTMsNjU0LDY1NSw2NTYsNjU3LDY1OCw2NTksNjYw
LDY2MSw2NjIsNjYzLDY2NCw2NjUsNjY2LDY2Nyw2NjgsNjY5LDY3MCw2NzEsNjcyLDY3Myw2NzQs
Njc1LDY3Niw2NzcsNjc4LDY3OSw2ODAsNjgxLDY4Miw2ODMsNjg0LDY4NSw2ODYsNjg3LDY4OCw2
ODksNjkwLDY5MSw2OTIsNjkzLDY5NCw2OTUsNjk2LDY5Nyw2OTgsNjk5LDcwMCw3MDEsNzAyLDcw
Myw3MDQsNzA1LDcwNiw3MDcsNzA4LDcwOSw3MTAsNzExLDcxMiw3MTMsNzE0LDcxNSw3MTYsNzE3
LDcxOCw3MTksNzIwLDcyMSw3MjIsNzIzLDcyNCw3MjUsNzI2LDcyNyw3MjgsNzI5LDczMCw3MzEs
NzMyLDczMyw3MzQsNzM1LDczNiw3MzcsNzM4LDczOSw3NDAsNzQxLDc0Miw3NDMsNzQ0LDc0NSw3
NDYsNzQ3LDc0OCw3NDksNzUwLDc1MSw3NTIsNzUzLDc1NCw3NTUsNzU2LDc1Nyw3NTgsNzU5LDc2
MCw3NjEsNzYyLDc2Myw3NjQsNzY1LDc2Niw3NjcsNzY4LDc2OSw3NzAsNzcxLDc3Miw3NzMsNzc0
LDc3NSw3NzYsNzc3LDc3OCw3NzksNzgwLDc4MSw3ODIsNzgzLDc4NCw3ODUsNzg2LDc4Nyw3ODgs
Nzg5LDc5MCw3OTEsNzkyLDc5Myw3OTQsNzk1LDc5Niw3OTcsNzk4LDc5OSw4MDAsODAxLDgwMiw4
MDMsODA0LDgwNSw4MDYsODA3LDgwOCw4MDksODEwLDgxMSw4MTIsODEzLDgxNCw4MTUsODE2LDgx
Nyw4MTgsODE5LDgyMCw4MjEsODIyLDgyMyw4MjQsODI1LDgyNiw4MjcsODI4LDgyOSw4MzAsODMx
LDgzMiw4MzMsODM0LDgzNSw4MzYsODM3LDgzOCw4MzksODQwLDg0MSw4NDIsODQzLDg0NCw4NDUs
ODQ2LDg0Nyw4NDgsODQ5LDg1MCw4NTEsODUyLDg1Myw4NTQsODU1LDg1Niw4NTcsODU4LDg1OSw4
NjAsODYxLDg2Miw4NjMsODY0LDg2NSw4NjYsODY3LDg2OCw4NjksODcwLDg3MSw4NzIsODczLDg3
NCw4NzUsODc2LDg3Nyw4NzgsODc5LDg4MCw4ODEsODgyLDg4Myw4ODQsODg1LDg4Niw4ODcsODg4
LDg4OSw4OTAsODkxLDg5Miw4OTMsODk0LDg5NSw4OTYsODk3LDg5OCw4OTksOTAwLDkwMSw5MDIs
OTAzLDkwNCw5MDUsOTA2LDkwNyw5MDgsOTA5LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5
MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMwLDkz
MSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1
LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTks
OTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5
NzQsOTc1LDk3Niw5NzcsOTc4LDk3OSw5ODAsOTgxLDk4Miw5ODMsOTg0LDk4NSw5ODYsOTg3LDk4
OCw5ODksOTkwLDk5MSw5OTIsOTkzLDk5NCw5OTUsOTk2LDk5Nyw5OTgsOTk5LDEwMDAsMTAwMSwx
MDAyLDEwMDMsMTAwNCwxMDA1LDEwMDYsMTAwNywxMDA4LDEwMDksMTAxMCwxMDExLDEwMTIsMTAx
MywxMDE0LDEwMTUsMTAxNiwxMDE3LDEwMTgsMTAxOSwxMDIwLDEwMjEsMTAyMiwxMDIzLDEwMjQs
MTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEw
MzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3
LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwx
MDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3
MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEs
MTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEw
OTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0
LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwx
MTE2LDExMTcsMTExOCwxMTE5LDExMjAsMTEyMSwxMTIyLDExMjMsMTEyNCwxMTI1LDExMjYsMTEy
NywxMTI4LDExMjksMTEzMCwxMTMxLDExMzIsMTEzMywxMTM0LDExMzUsMTEzNiwxMTM3LDExMzgs
MTEzOSwxMTQwLDExNDEsMTE0MiwxMTQzLDExNDQsMTE0NSwxMTQ2LDExNDcsMTE0OCwxMTQ5LDEx
NTAsMTE1MSwxMTUyLDExNTMsMTE1NCwxMTU1LDExNTYsMTE1NywxMTU4LDExNTksMTE2MCwxMTYx
LDExNjIsMTE2MywxMTY0LDExNjUsMTE2NiwxMTY3LDExNjgsMTE2OSwxMTcwLDExNzEsMTE3Miwx
MTczLDExNzQsMTE3NSwxMTc2LDExNzcsMTE3OCwxMTc5LDExODAsMTE4MSwxMTgyLDExODMsMTE4
NCwxMTg1LDExODYsMTE4NywxMTg4LDExODksMTE5MCwxMTkxLDExOTIsMTE5MywxMTk0LDExOTUs
MTE5NiwxMTk3LDExOTgsMTE5OSwxMjAwLDEyMDEsMTIwMiwxMjAzLDEyMDQsMTIwNSwxMjA2LDEy
MDcsMTIwOCwxMjA5LDEyMTAsMTIxMSwxMjEyLDEyMTMsMTIxNCwxMjE1LDEyMTYsMTIxNywxMjE4
LDEyMTksMTIyMCwxMjIxLDEyMjIsMTIyMywxMjI0LDEyMjUsMTIyNiwxMjI3LDEyMjgsMTIyOSwx
MjMwLDEyMzEsMTIzMiwxMjMzLDEyMzQsMTIzNSwxMjM2LDEyMzcsMTIzOCwxMjM5LDEyNDAsMTI0
MSwxMjQyLDEyNDMsMTI0NCwxMjQ1LDEyNDYsMTI0NywxMjQ4LDEyNDksMTI1MCwxMjUxLDEyNTIs
MTI1MywxMjU0LDEyNTUsMTI1NiwxMjU3LDEyNTgsMTI1OSwxMjYwLDEyNjEsMTI2MiwxMjYzLDEy
NjQsMTI2NSwxMjY2LDEyNjcsMTI2OCwxMjY5LDEyNzAsMTI3MSwxMjcyLDEyNzMsMTI3NCwxMjc1
LDEyNzYsMTI3NywxMjc4LDEyNzksMTI4MCwxMjgxLDEyODIsMTI4MywxMjg0LDEyODUsMTI4Niwx
Mjg3LDEyODgsMTI4OSwxMjkwLDEyOTEsMTI5MiwxMjkzLDEyOTQsMTI5NSwxMjk2LDEyOTcsMTI5
OCwxMjk5LDEzMDAsMTMwMSwxMzAyLDEzMDMsMTMwNCwxMzA1LDEzMDYsMTMwNywxMzA4LDEzMDks
MTMxMCwxMzExLDEzMTIsMTMxMywxMzE0LDEzMTUsMTMxNiwxMzE3LDEzMTgsMTMxOSwxMzIwLDEz
MjEsMTMyMiwxMzIzLDEzMjQsMTMyNSwxMzI2LDEzMjcsMTMyOCwxMzI5LDEzMzAsMTMzMSwxMzMy
LDEzMzMsMTMzNCwxMzM1LDEzMzYsMTMzNywxMzM4LDEzMzksMTM0MCwxMzQxLDEzNDIsMTM0Mywx
MzQ0LDEzNDUsMTM0NiwxMzQ3LDEzNDgsMTM0OSwxMzUwLDEzNTEsMTM1MiwxMzUzLDEzNTQsMTM1
NSwxMzU2LDEzNTcsMTM1OCwxMzU5LDEzNjAsMTM2MSwxMzYyLDEzNjMsMTM2NCwxMzY1LDEzNjYs
MTM2NywxMzY4LDEzNjksMTM3MCwxMzcxLDEzNzIsMTM3MywxMzc0LDEzNzUsMTM3NiwxMzc3LDEz
NzgsMTM3OSwxMzgwLDEzODEsMTM4MiwxMzgzLDEzODQsMTM4NSwxMzg2LDEzODcsMTM4OCwxMzg5
LDEzOTAsMTM5MSwxMzkyLDEzOTMsMTM5NCwxMzk1LDEzOTYsMTM5NywxMzk4LDEzOTksMTQwMCwx
NDAxLDE0MDIsMTQwMywxNDA0LDE0MDUsMTQwNiwxNDA3LDE0MDgsMTQwOSwxNDEwLDE0MTEsMTQx
MiwxNDEzLDE0MTQsMTQxNSwxNDE2LDE0MTcsMTQxOCwxNDE5LDE0MjAsMTQyMSwxNDIyLDE0MjMs
MTQyNCwxNDI1LDE0MjYsMTQyNywxNDI4LDE0MjksMTQzMCwxNDMxLDE0MzIsMTQzMywxNDM0LDE0
MzUsMTQzNiwxNDM3LDE0MzgsMTQzOSwxNDQwLDE0NDEsMTQ0MiwxNDQzLDE0NDQsMTQ0NSwxNDQ2
LDE0NDcsMTQ0OCwxNDQ5LDE0NTAsMTQ1MSwxNDUyLDE0NTMsMTQ1NCwxNDU1LDE0NTYsMTQ1Nywx
NDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsMTQ2NiwxNDY3LDE0NjgsMTQ2
OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNDc2LDE0NzcsMTQ3OCwxNDc5LDE0ODAs
MTQ4MSwxNDgyLDE0ODMsMTQ4NCwxNDg1LDE0ODYsMTQ4NywxNDg4LDE0ODksMTQ5MCwxNDkxLDE0
OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAz
LDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCwx
NTE1LDE1MTYsMTUxNywxNTE4LDE1MTksMTUyMCwxNTIxLDE1MjIsMTUyMywxNTI0LDE1MjUsMTUy
NiwxNTI3LDE1MjgsMTUyOSwxNTMwLDE1MzEsMTUzMiwxNTMzLDE1MzQsMTUzNSwxNTM2LDE1Mzcs
MTUzOCwxNTM5LDE1NDAsMTU0MSwxNTQyLDE1NDMsMTU0NCwxNTQ1LDE1NDYsMTU0NywxNTQ4LDE1
NDksMTU1MCwxNTUxLDE1NTIsMTU1MywxNTU0LDE1NTUsMTU1NiwxNTU3LDE1NTgsMTU1OSwxNTYw
LDE1NjEsMTU2MiwxNTYzLDE1NjQsMTU2NSwxNTY2LDE1NjcsMTU2OCwxNTY5LDE1NzAsMTU3MSwx
NTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4
MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDE1OTEsMTU5MiwxNTkzLDE1OTQs
MTU5NSwxNTk2LDE1OTcsMTU5OCwxNTk5LDE2MDAsMTYwMSwxNjAyLDE2MDMsMTYwNCwxNjA1LDE2
MDYsMTYwNywxNjA4LDE2MDksMTYxMCwxNjExLDE2MTIsMTYxMywxNjE0LDE2MTUsMTYxNiwxNjE3
LDE2MTgsMTYxOSwxNjIwLDE2MjEsMTYyMiwxNjIzLDE2MjQsMTYyNSwxNjI2LDE2MjcsMTYyOCwx
NjI5LDE2MzAsMTYzMSwxNjMyLDE2MzMsMTYzNCwxNjM1LDE2MzYsMTYzNywxNjM4LDE2MzksMTY0
MCwxNjQxLDE2NDIsMTY0MywxNjQ0LDE2NDUsMTY0NiwxNjQ3LDE2NDgsMTY0OSwxNjUwLDE2NTEs
MTY1MiwxNjUzLDE2NTQsMTY1NSwxNjU2LDE2NTcsMTY1OCwxNjU5LDE2NjAsMTY2MSwxNjYyLDE2
NjMsMTY2NCwxNjY1LDE2NjYsMTY2NywxNjY4LDE2NjksMTY3MCwxNjcxLDE2NzIsMTY3MywxNjc0
LDE2NzUsMTY3NiwxNjc3LDE2NzgsMTY3OSwxNjgwLDE2ODEsMTY4MiwxNjgzLDE2ODQsMTY4NSwx
Njg2LDE2ODcsMTY4OCwxNjg5LDE2OTAsMTY5MSwxNjkyLDE2OTMsMTY5NCwxNjk1LDE2OTYsMTY5
NywxNjk4LDE2OTksMTcwMCwxNzAxLDE3MDIsMTcwMywxNzA0LDE3MDUsMTcwNiwxNzA3LDE3MDgs
MTcwOSwxNzEwLDE3MTEsMTcxMiwxNzEzLDE3MTQsMTcxNSwxNzE2LDE3MTcsMTcxOCwxNzE5LDE3
MjAsMTcyMSwxNzIyLDE3MjMsMTcyNCwxNzI1LDE3MjYsMTcyNywxNzI4LDE3MjksMTczMCwxNzMx
LDE3MzIsMTczMywxNzM0LDE3MzUsMTczNiwxNzM3LDE3MzgsMTczOSwxNzQwLDE3NDEsMTc0Miwx
NzQzLDE3NDQsMTc0NSwxNzQ2LDE3NDcsMTc0OCwxNzQ5LDE3NTAsMTc1MSwxNzUyLDE3NTMsMTc1
NCwxNzU1LDE3NTYsMTc1NywxNzU4LDE3NTksMTc2MCwxNzYxLDE3NjIsMTc2MywxNzY0LDE3NjUs
MTc2NiwxNzY3LDE3NjgsMTc2OSwxNzcwLDE3NzEsMTc3MiwxNzczLDE3NzQsMTc3NSwxNzc2LDE3
NzcsMTc3OCwxNzc5LDE3ODAsMTc4MSwxNzgyLDE3ODMsMTc4NCwxNzg1LDE3ODYsMTc4NywxNzg4
LDE3ODksMTc5MCwxNzkxLDE3OTIsMTc5MywxNzk0LDE3OTUsMTc5NiwxNzk3LDE3OTgsMTc5OSwx
ODAwLDE4MDEsMTgwMiwxODAzLDE4MDQsMTgwNSwxODA2LDE4MDcsMTgwOCwxODA5LDE4MTAsMTgx
MSwxODEyLDE4MTMsMTgxNCwxODE1LDE4MTYsMTgxNywxODE4LDE4MTksMTgyMCwxODIxLDE4MjIs
MTgyMywxODI0LDE4MjUsMTgyNiwxODI3LDE4MjgsMTgyOSwxODMwLDE4MzEsMTgzMiwxODMzLDE4
MzQsMTgzNSwxODM2LDE4MzcsMTgzOCwxODM5LDE4NDAsMTg0MSwxODQyLDE4NDMsMTg0NCwxODQ1
LDE4NDYsMTg0NywxODQ4LDE4NDksMTg1MCwxODUxLDE4NTIsMTg1MywxODU0LDE4NTUsMTg1Niwx
ODU3LDE4NTgsMTg1OSwxODYwLDE4NjEsMTg2MiwxODYzLDE4NjQsMTg2NSwxODY2LDE4NjcsMTg2
OCwxODY5LDE4NzAsMTg3MSwxODcyLDE4NzMsMTg3NCwxODc1LDE4NzYsMTg3NywxODc4LDE4Nzks
MTg4MCwxODgxLDE4ODIsMTg4MywxODg0LDE4ODUsMTg4NiwxODg3LDE4ODgsMTg4OSwxODkwLDE4
OTEsMTg5MiwxODkzLDE4OTQsMTg5NSwxODk2LDE4OTcsMTg5OCwxODk5LDE5MDAsMTkwMSwxOTAy
LDE5MDMsMTkwNCwxOTA1LDE5MDYsMTkwNywxOTA4LDE5MDksMTkxMCwxOTExLDE5MTIsMTkxMywx
OTE0LDE5MTUsMTkxNiwxOTE3LDE5MTgsMTkxOSwxOTIwLDE5MjEsMTkyMiwxOTIzLDE5MjQsMTky
NSwxOTI2LDE5MjcsMTkyOCwxOTI5LDE5MzAsMTkzMSwxOTMyLDE5MzMsMTkzNCwxOTM1LDE5MzYs
MTkzNywxOTM4LDE5MzksMTk0MCwxOTQxLDE5NDIsMTk0MywxOTQ0LDE5NDUsMTk0NiwxOTQ3LDE5
NDgsMTk0OSwxOTUwLDE5NTEsMTk1MiwxOTUzLDE5NTQsMTk1NSwxOTU2LDE5NTcsMTk1OCwxOTU5
LDE5NjAsMTk2MSwxOTYyLDE5NjMsMTk2NCwxOTY1LDE5NjYsMTk2NywxOTY4LDE5NjksMTk3MCwx
OTcxLDE5NzIsMTk3MywxOTc0LDE5NzUsMTk3NiwxOTc3LDE5NzgsMTk3OSwxOTgwLDE5ODEsMTk4
MiwxOTgzLDE5ODQsMTk4NSwxOTg2LDE5ODcsMTk4OCwxOTg5LDE5OTAsMTk5MSwxOTkyLDE5OTMs
MTk5NCwxOTk1LDE5OTYsMTk5NywxOTk4LDE5OTksMjAwMCwyMDAxLDIwMDIsMjAwMywyMDA0LDIw
MDUsMjAwNiwyMDA3LDIwMDgsMjAwOSwyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSwyMDE2
LDIwMTcsMjAxOCwyMDE5LDIwMjAsMjAyMSwyMDIyLDIwMjMsMjAyNCwyMDI1LDIwMjYsMjAyNywy
MDI4LDIwMjksMjAzMCwyMDMxLDIwMzIsMjAzMywyMDM0LDIwMzUsMjAzNiwyMDM3LDIwMzgsMjAz
OSwyMDQwLDIwNDEsMjA0MiwyMDQzLDIwNDQsMjA0NSwyMDQ2LDIwNDcsMjA0OCwyMDQ5LDIwNTAs
MjA1MSwyMDUyLDIwNTMsMjA1NCwyMDU1LDIwNTYsMjA1NywyMDU4LDIwNTksMjA2MCwyMDYxLDIw
NjIsMjA2MywyMDY0LDIwNjUsMjA2NiwyMDY3LDIwNjgsMjA2OSwyMDcwLDIwNzEsMjA3MiwyMDcz
LDIwNzQsMjA3NSwyMDc2LDIwNzcsMjA3OCwyMDc5LDIwODAsMjA4MSwyMDgyLDIwODMsMjA4NCwy
MDg1LDIwODYsMjA4NywyMDg4LDIwODksMjA5MCwyMDkxLDIwOTIsMjA5MywyMDk0LDIwOTUsMjA5
NiwyMDk3LDIwOTgsMjA5OSwyMTAwLDIxMDEsMjEwMiwyMTAzLDIxMDQsMjEwNSwyMTA2LDIxMDcs
MjEwOCwyMTA5LDIxMTAsMjExMSwyMTEyLDIxMTMsMjExNCwyMTE1LDIxMTYsMjExNywyMTE4XQot
XQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfYmFzaWNfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAxLmV4
cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzYxZmNlMWNjMDUuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAxLmV4cGVjdGVkCisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0xMjM0NTY3ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfYmFzaWNfMDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDEu
anNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFmMTFmOWJlM2JhLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMS5qc29uCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotMDEyMzQ1Njc4OQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9iYXNpY18wMi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDIuZXhw
ZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGUzN2NiYWFmMy4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDIuZXhwZWN0ZWQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi0uPS0xMjM0NTY3ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfYmFzaWNfMDIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDIu
anNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYxMWJjZWFjNzRmLi4wMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMi5qc29uCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotLTAxMjM0NTY3ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfYmFzaWNfMDMuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAzLmV4
cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGEyZDM5NWI4ZTkuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzAzLmV4cGVjdGVkCisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0uPTEuMjM0NTY3OAotCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFz
aWNfMDMuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyYjZiZDI4YjVmLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wMy5qc29uCisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0xLjIzNDU2NzgKLQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA0LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9i
YXNpY18wNC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzZjQyNGY5
MzIyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNC5leHBl
Y3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLj0iYWJjZGVmIgotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2Jhc2ljXzA0Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZWViOTll
MGIwYS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDQuanNv
bgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotImFiY2RlZiIKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfYmFzaWNfMDUuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZGI4
MjJlNTg0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDUu
ZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS49bnVsbAotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA1Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2Jhc2ljXzA1Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYWFlYTIx
MjZiOS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDUuanNv
bgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotbnVsbAotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA2LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9i
YXNpY18wNi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDliZTU1YTk2
NTRlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5leHBl
Y3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLj10cnVlCi0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YmFzaWNfMDYuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlYWQxZWU3NWYw
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNi5qc29uCisr
KyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi10cnVlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfYmFzaWNfMDcuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2lj
XzA3LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTU1YTZhODU0NjAu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA3LmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPWZhbHNlCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFz
aWNfMDcuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg2NGJjNDg3ZDRkLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wNy5qc29uCisrKyAv
ZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1mYWxzZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2Jhc2ljXzA4LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18w
OC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FmNTM1MmExMTM5Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOC5leHBlY3RlZAor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gQysrIHN0eWxlIGNvbW1lbnQKLS49bnVs
bAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA4Lmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA4Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZkNzg4MzdjMGM4Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
YmFzaWNfMDguanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gQysrIHN0eWxl
IGNvbW1lbnQKLW51bGwKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18w
OS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDkuZXhwZWN0ZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMTI5ZGE0MmU0Yy4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfYmFzaWNfMDkuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAt
MSw0ICswLDAgQEAKLS8qIEMgc3R5bGUgY29tbWVudAotICovCi0uPW51bGwKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9iYXNpY18wOS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9iYXNpY18wOS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzk1ZjBmNTE0
ZWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Jhc2ljXzA5Lmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8qIEMgc3R5bGUgY29tbWVudAotICovCi1u
dWxsCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMC5leHBlY3Rl
ZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMC5leHBlY3RlZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjg0YTc5N2Q3MTQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAwLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0vLyBDb21tZW50IGZvciBhcnJheQotLj1bXQotLy8gQ29tbWVudCB3aXRoaW4gYXJy
YXkKLS5bMF09Im9uZS1lbGVtZW50IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9j
b21tZW50XzAwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDAuanNvbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmNTc3YThhZTIyLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAwLmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLS8vIENvbW1lbnQgZm9yIGFycmF5Ci1bCi0gICAvLyBDb21tZW50IHdpdGhp
biBhcnJheQotICAgIm9uZS1lbGVtZW50IgotXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9jb21tZW50XzAxLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAx
LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWQwMWJhMTAwYzQuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDEuZXhwZWN0ZWQK
KysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0uPXt9Ci0vLyBDb21tZW50IGZvciBhcnJh
eQotLnRlc3Q9W10KLS8vIENvbW1lbnQgd2l0aGluIGFycmF5Ci0udGVzdFswXT17fQotLnRlc3Rb
MF0uYT0iYWFhIgotLnRlc3RbMV09e30KLS50ZXN0WzFdLmI9ImJiYiIKLS50ZXN0WzJdPXt9Ci0u
dGVzdFsyXS5jPSJjY2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRf
MDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMS5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2ZGVmZTQwMDQwNGEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2NvbW1lbnRfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDEwICsw
LDAgQEAKLXsKLSAgICAidGVzdCI6Ci0gICAgLy8gQ29tbWVudCBmb3IgYXJyYXkKLSAgICBbCi0g
ICAgICAgLy8gQ29tbWVudCB3aXRoaW4gYXJyYXkKLSAgICAgICB7ICJhIiA6ICJhYWEiIH0sIC8v
IENvbW1lbnQgZm9yIGEKLSAgICAgICB7ICJiIiA6ICJiYmIiIH0sIC8vIENvbW1lbnQgZm9yIGIK
LSAgICAgICB7ICJjIiA6ICJjY2MiIH0gLy8gQ29tbWVudCBmb3IgYwotICAgIF0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tbWVudF8wMi5leHBlY3RlZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfY29tbWVudF8wMi5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODk4NmRiYWMwNWViLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9jb21tZW50XzAyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLj17
fQotLyogQy1zdHlsZSBjb21tZW50Ci0KLSAgICBDLXN0eWxlLTIgY29tbWVudCAqLwotLmMtdGVz
dD17fQotLmMtdGVzdC5hPTEKLS8qIEludGVybmFsIGNvbW1lbnQgYy1zdHlsZSAqLwotLmMtdGVz
dC5iPTIKLS8vIEMrKy1zdHlsZSBjb21tZW50Ci0uY3BwLXRlc3Q9e30KLS8vIE11bHRpbGluZSBj
b21tZW50IGNwcC1zdHlsZQotLy8gU2Vjb25kIGxpbmUKLS5jcHAtdGVzdC5jPTMKLS8vIENvbW1l
bnQgYmVmb3JlIGRvdWJsZQotLmNwcC10ZXN0LmQ9NC4xCi0vLyBDb21tZW50IGJlZm9yZSBzdHJp
bmcKLS5jcHAtdGVzdC5lPSJlLXN0cmluZyIKLS8vIENvbW1lbnQgYmVmb3JlIHRydWUKLS5jcHAt
dGVzdC5mPXRydWUKLS8vIENvbW1lbnQgYmVmb3JlIGZhbHNlCi0uY3BwLXRlc3QuZz1mYWxzZQot
Ly8gQ29tbWVudCBiZWZvcmUgbnVsbAotLmNwcC10ZXN0Lmg9bnVsbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2Nv
bW1lbnRfMDIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNDJlMGRkNjhl
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9jb21tZW50XzAyLmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi17Ci0gICAvKiBDLXN0eWxlIGNvbW1lbnQK
LQotICAgIEMtc3R5bGUtMiBjb21tZW50ICovCi0gICAiYy10ZXN0IiA6IHsKLSAgICAgICJhIiA6
IDEsCi0gICAgICAvKiBJbnRlcm5hbCBjb21tZW50IGMtc3R5bGUgKi8KLSAgICAgICJiIiA6IDIK
LSAgIH0sCi0gICAvLyBDKystc3R5bGUgY29tbWVudAotICAgImNwcC10ZXN0IiA6IHsKLSAgICAg
IC8vIE11bHRpbGluZSBjb21tZW50IGNwcC1zdHlsZQotICAgICAgLy8gU2Vjb25kIGxpbmUKLSAg
ICAgICJjIiA6IDMsCi0gICAgICAvLyBDb21tZW50IGJlZm9yZSBkb3VibGUKLSAgICAgICJkIiA6
IDQuMSwKLSAgICAgIC8vIENvbW1lbnQgYmVmb3JlIHN0cmluZwotICAgICAgImUiIDogImUtc3Ry
aW5nIiwKLSAgICAgIC8vIENvbW1lbnQgYmVmb3JlIHRydWUKLSAgICAgICJmIiA6IHRydWUsCi0g
ICAgICAvLyBDb21tZW50IGJlZm9yZSBmYWxzZQotICAgICAgImciIDogZmFsc2UsCi0gICAgICAv
LyBDb21tZW50IGJlZm9yZSBudWxsCi0gICAgICAiaCIgOiBudWxsCi0gICB9Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbXBsZXhfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2NvbXBsZXhfMDEuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDc1NzNjODgxMmQ5Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
Y29tcGxleF8wMS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS49e30K
LS5hdHRyaWJ1dGU9W10KLS5hdHRyaWJ1dGVbMF09InJhbmRvbSIKLS5hdHRyaWJ1dGVbMV09InNo
b3J0IgotLmF0dHJpYnV0ZVsyXT0iYm9sZCIKLS5hdHRyaWJ1dGVbM109MTIKLS5hdHRyaWJ1dGVb
NF09e30KLS5hdHRyaWJ1dGVbNF0uaGVpZ2h0PTcKLS5hdHRyaWJ1dGVbNF0ud2lkdGg9NjQKLS5j
b3VudD0xMjM0Ci0ubmFtZT17fQotLm5hbWUuYWthPSJULkUuUy5ULiIKLS5uYW1lLmlkPTEyMzk4
NwotLnRlc3Q9e30KLS50ZXN0LjE9e30KLS50ZXN0LjEuMj17fQotLnRlc3QuMS4yLjM9e30KLS50
ZXN0LjEuMi4zLmNvb3JkPVtdCi0udGVzdC4xLjIuMy5jb29yZFswXT0xCi0udGVzdC4xLjIuMy5j
b29yZFsxXT0yCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2NvbXBsZXhfMDEuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfY29tcGxleF8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYzBmMzBmNWMzNDcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X2NvbXBsZXhfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK
LXsgCi0JImNvdW50IiA6IDEyMzQsCi0JIm5hbWUiIDogeyAiYWthIiA6ICJULkUuUy5ULiIsICJp
ZCIgOiAxMjM5ODcgfSwKLQkiYXR0cmlidXRlIiA6IFsgCi0JCSJyYW5kb20iLCAKLQkJInNob3J0
IiwgCi0JCSJib2xkIiwgCi0JCTEyLCAKLQkJeyAiaGVpZ2h0IiA6IDcsICJ3aWR0aCIgOiA2NCB9
IAotCQldLAotCSJ0ZXN0IjogeyAiMSIgOiAKLQkJeyAiMiIgOiAKLQkJCXsgIjMiIDogIHsgImNv
b3JkIiA6IFsgMSwyXSB9IAotCQkJfSAKLQkJfQotCX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfaW50ZWdlcl8wMS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50
ZWdlcl8wMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzZTE0OWRl
ODcxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAxLmV4
cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0vLyBNYXggc2lnbmVkIGludGVn
ZXIKLS49MjE0NzQ4MzY0NwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2Vy
XzAxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDEuanNvbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWFiMTJmZmVlNDEwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICsw
LDAgQEAKLS8vIE1heCBzaWduZWQgaW50ZWdlcgotMjE0NzQ4MzY0NwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAyLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9pbnRlZ2VyXzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzcz
ZTA4NTFhNDkuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJf
MDIuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS8vIE1pbiBzaWduZWQg
aW50ZWdlcgotLj0tMjE0NzQ4MzY0OApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9p
bnRlZ2VyXzAyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDIuanNvbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2Yzg1MDA2NTdjLi4wMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzAyLmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSwyICswLDAgQEAKLS8vIE1pbiBzaWduZWQgaW50ZWdlcgotLTIxNDc0ODM2NDgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMy5leHBlY3RlZCBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfaW50ZWdlcl8wMy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzdlZmZmNzk5ZWIzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9p
bnRlZ2VyXzAzLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0vLyBNYXgg
dW5zaWduZWQgaW50ZWdlcgotLj00Mjk0OTY3Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X2ludGVnZXJfMDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wMy5q
c29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmVmM2ZiYjg5NDguLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDMuanNvbgorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotLy8gTWF4IHVuc2lnbmVkIGludGVnZXIKLTQyOTQ5NjcyOTUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzlmODU2NzA0MGZjLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9pbnRlZ2VyXzA0LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0vLyBNaW4gdW5zaWduZWQgaW50ZWdlcgotLj0wCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfaW50ZWdlcl8wNC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA0
Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmODE0OTk0NTMzNi4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNC5qc29uCisrKyAvZGV2
L251bGwKQEAgLTEsMyArMCwwIEBACi0vLyBNaW4gdW5zaWduZWQgaW50ZWdlcgotMAotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDUuZXhwZWN0ZWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2ludGVnZXJfMDUuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBjYWVhOWQzZmQzNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfaW50ZWdlcl8wNS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotLj0x
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNS5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA1Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQ0NzRlMWI0ZDYyNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfaW50ZWdlcl8wNS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0xCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wNl82NGJpdHMuZXhwZWN0ZWQg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmV4cGVjdGVkCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFiMDg1ZmY1NjcuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmV4cGVjdGVkCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotLj05MjIzMzcyMDM2ODU0Nzc1ODA4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X2ludGVnZXJfMDZfNjRiaXRzLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGNmZWRmZTVlODA5MC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50
ZWdlcl8wNl82NGJpdHMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotOTIyMzM3
MjAzNjg1NDc3NTgwOAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2ludGVnZXJf
MDdfNjRiaXRzLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA3XzY0Yml0
cy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1MjRhMzJjN2E4Li4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA3XzY0Yml0cy5l
eHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS49LTkyMjMzNzIwMzY4NTQ3NzU4
MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wN182NGJpdHMuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wN182NGJpdHMuanNvbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2NGFkMmVkMjVhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA3XzY0Yml0cy5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi0tOTIyMzM3MjAzNjg1NDc3NTgwOAotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X2ludGVnZXJfMDhfNjRiaXRzLmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9pbnRlZ2VyXzA4XzY0Yml0cy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzIxYmJhNWE3MzgzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9pbnRlZ2VyXzA4XzY0Yml0cy5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LS49MTg0NDY3NDQwNzM3MDk1NTE2MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
aW50ZWdlcl8wOF82NGJpdHMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfaW50ZWdlcl8wOF82
NGJpdHMuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMxNWEwMWI0YTkxLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9pbnRlZ2VyXzA4XzY0Yml0cy5q
c29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0xODQ0Njc0NDA3MzcwOTU1MTYxNQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2xhcmdlXzAxLmV4cGVjdGVkIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWUyZmFmYzAxMGUyLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9sYXJnZV8wMS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIxMjIgKzAsMCBAQAot
Lj1bXQotLlswXT1bXQotLlswXVswXT0iQSIKLS5bMF1bMV09MAotLlswXVsyXT0xCi0uWzBdWzNd
PTIKLS5bMF1bNF09MwotLlswXVs1XT00Ci0uWzBdWzZdPTUKLS5bMF1bN109NgotLlswXVs4XT03
Ci0uWzBdWzldPTgKLS5bMF1bMTBdPTkKLS5bMF1bMTFdPTEwCi0uWzBdWzEyXT0xMQotLlswXVsx
M109MTIKLS5bMF1bMTRdPTEzCi0uWzBdWzE1XT0xNAotLlswXVsxNl09MTUKLS5bMF1bMTddPTE2
Ci0uWzBdWzE4XT0xNwotLlswXVsxOV09MTgKLS5bMF1bMjBdPTE5Ci0uWzBdWzIxXT0yMAotLlsw
XVsyMl09MjEKLS5bMF1bMjNdPTIyCi0uWzBdWzI0XT0yMwotLlswXVsyNV09MjQKLS5bMF1bMjZd
PTI1Ci0uWzBdWzI3XT0yNgotLlswXVsyOF09MjcKLS5bMF1bMjldPTI4Ci0uWzBdWzMwXT0yOQot
LlswXVszMV09MzAKLS5bMF1bMzJdPTMxCi0uWzBdWzMzXT0zMgotLlswXVszNF09MzMKLS5bMF1b
MzVdPTM0Ci0uWzBdWzM2XT0zNQotLlswXVszN109MzYKLS5bMF1bMzhdPTM3Ci0uWzBdWzM5XT0z
OAotLlswXVs0MF09MzkKLS5bMF1bNDFdPTQwCi0uWzBdWzQyXT00MQotLlswXVs0M109NDIKLS5b
MF1bNDRdPTQzCi0uWzBdWzQ1XT00NAotLlswXVs0Nl09NDUKLS5bMF1bNDddPTQ2Ci0uWzBdWzQ4
XT00NwotLlswXVs0OV09NDgKLS5bMF1bNTBdPTQ5Ci0uWzBdWzUxXT01MAotLlswXVs1Ml09NTEK
LS5bMF1bNTNdPTUyCi0uWzBdWzU0XT01MwotLlswXVs1NV09NTQKLS5bMF1bNTZdPTU1Ci0uWzBd
WzU3XT01NgotLlswXVs1OF09NTcKLS5bMF1bNTldPTU4Ci0uWzBdWzYwXT01OQotLlswXVs2MV09
NjAKLS5bMF1bNjJdPTYxCi0uWzBdWzYzXT02MgotLlswXVs2NF09NjMKLS5bMF1bNjVdPTY0Ci0u
WzBdWzY2XT02NQotLlswXVs2N109NjYKLS5bMF1bNjhdPTY3Ci0uWzBdWzY5XT02OAotLlswXVs3
MF09NjkKLS5bMF1bNzFdPTcwCi0uWzBdWzcyXT03MQotLlswXVs3M109NzIKLS5bMF1bNzRdPTcz
Ci0uWzBdWzc1XT03NAotLlswXVs3Nl09NzUKLS5bMF1bNzddPTc2Ci0uWzBdWzc4XT03NwotLlsw
XVs3OV09NzgKLS5bMF1bODBdPTc5Ci0uWzBdWzgxXT04MAotLlswXVs4Ml09ODEKLS5bMF1bODNd
PTgyCi0uWzBdWzg0XT04MwotLlswXVs4NV09ODQKLS5bMF1bODZdPTg1Ci0uWzBdWzg3XT04Ngot
LlswXVs4OF09ODcKLS5bMF1bODldPTg4Ci0uWzBdWzkwXT04OQotLlswXVs5MV09OTAKLS5bMF1b
OTJdPTkxCi0uWzBdWzkzXT05MgotLlswXVs5NF09OTMKLS5bMF1bOTVdPTk0Ci0uWzBdWzk2XT05
NQotLlswXVs5N109OTYKLS5bMF1bOThdPTk3Ci0uWzBdWzk5XT05OAotLlswXVsxMDBdPTk5Ci0u
WzBdWzEwMV09MTAwCi0uWzBdWzEwMl09MTAxCi0uWzBdWzEwM109MTAyCi0uWzBdWzEwNF09MTAz
Ci0uWzBdWzEwNV09MTA0Ci0uWzBdWzEwNl09MTA1Ci0uWzBdWzEwN109MTA2Ci0uWzBdWzEwOF09
MTA3Ci0uWzBdWzEwOV09MTA4Ci0uWzBdWzExMF09MTA5Ci0uWzBdWzExMV09MTEwCi0uWzBdWzEx
Ml09MTExCi0uWzBdWzExM109MTEyCi0uWzBdWzExNF09MTEzCi0uWzBdWzExNV09MTE0Ci0uWzBd
WzExNl09MTE1Ci0uWzBdWzExN109MTE2Ci0uWzBdWzExOF09MTE3Ci0uWzBdWzExOV09MTE4Ci0u
WzBdWzEyMF09MTE5Ci0uWzBdWzEyMV09MTIwCi0uWzBdWzEyMl09MTIxCi0uWzBdWzEyM109MTIy
Ci0uWzBdWzEyNF09MTIzCi0uWzBdWzEyNV09MTI0Ci0uWzBdWzEyNl09MTI1Ci0uWzBdWzEyN109
MTI2Ci0uWzBdWzEyOF09MTI3Ci0uWzBdWzEyOV09MTI4Ci0uWzBdWzEzMF09MTI5Ci0uWzBdWzEz
MV09MTMwCi0uWzBdWzEzMl09MTMxCi0uWzBdWzEzM109MTMyCi0uWzBdWzEzNF09MTMzCi0uWzBd
WzEzNV09MTM0Ci0uWzBdWzEzNl09MTM1Ci0uWzBdWzEzN109MTM2Ci0uWzBdWzEzOF09MTM3Ci0u
WzBdWzEzOV09MTM4Ci0uWzBdWzE0MF09MTM5Ci0uWzBdWzE0MV09MTQwCi0uWzBdWzE0Ml09MTQx
Ci0uWzBdWzE0M109MTQyCi0uWzBdWzE0NF09MTQzCi0uWzBdWzE0NV09MTQ0Ci0uWzBdWzE0Nl09
MTQ1Ci0uWzBdWzE0N109MTQ2Ci0uWzBdWzE0OF09MTQ3Ci0uWzBdWzE0OV09MTQ4Ci0uWzBdWzE1
MF09MTQ5Ci0uWzBdWzE1MV09MTUwCi0uWzBdWzE1Ml09MTUxCi0uWzBdWzE1M109MTUyCi0uWzBd
WzE1NF09MTUzCi0uWzBdWzE1NV09MTU0Ci0uWzBdWzE1Nl09MTU1Ci0uWzBdWzE1N109MTU2Ci0u
WzBdWzE1OF09MTU3Ci0uWzBdWzE1OV09MTU4Ci0uWzBdWzE2MF09MTU5Ci0uWzBdWzE2MV09MTYw
Ci0uWzBdWzE2Ml09MTYxCi0uWzBdWzE2M109MTYyCi0uWzBdWzE2NF09MTYzCi0uWzBdWzE2NV09
MTY0Ci0uWzBdWzE2Nl09MTY1Ci0uWzBdWzE2N109MTY2Ci0uWzBdWzE2OF09MTY3Ci0uWzBdWzE2
OV09MTY4Ci0uWzBdWzE3MF09MTY5Ci0uWzBdWzE3MV09MTcwCi0uWzBdWzE3Ml09MTcxCi0uWzBd
WzE3M109MTcyCi0uWzBdWzE3NF09MTczCi0uWzBdWzE3NV09MTc0Ci0uWzBdWzE3Nl09MTc1Ci0u
WzBdWzE3N109MTc2Ci0uWzBdWzE3OF09MTc3Ci0uWzBdWzE3OV09MTc4Ci0uWzBdWzE4MF09MTc5
Ci0uWzBdWzE4MV09MTgwCi0uWzBdWzE4Ml09MTgxCi0uWzBdWzE4M109MTgyCi0uWzBdWzE4NF09
MTgzCi0uWzBdWzE4NV09MTg0Ci0uWzBdWzE4Nl09MTg1Ci0uWzBdWzE4N109MTg2Ci0uWzBdWzE4
OF09MTg3Ci0uWzBdWzE4OV09MTg4Ci0uWzBdWzE5MF09MTg5Ci0uWzBdWzE5MV09MTkwCi0uWzBd
WzE5Ml09MTkxCi0uWzBdWzE5M109MTkyCi0uWzBdWzE5NF09MTkzCi0uWzBdWzE5NV09MTk0Ci0u
WzBdWzE5Nl09MTk1Ci0uWzBdWzE5N109MTk2Ci0uWzBdWzE5OF09MTk3Ci0uWzBdWzE5OV09MTk4
Ci0uWzBdWzIwMF09MTk5Ci0uWzBdWzIwMV09MjAwCi0uWzBdWzIwMl09MjAxCi0uWzBdWzIwM109
MjAyCi0uWzBdWzIwNF09MjAzCi0uWzBdWzIwNV09MjA0Ci0uWzBdWzIwNl09MjA1Ci0uWzBdWzIw
N109MjA2Ci0uWzBdWzIwOF09MjA3Ci0uWzBdWzIwOV09MjA4Ci0uWzBdWzIxMF09MjA5Ci0uWzBd
WzIxMV09MjEwCi0uWzBdWzIxMl09MjExCi0uWzBdWzIxM109MjEyCi0uWzBdWzIxNF09MjEzCi0u
WzBdWzIxNV09MjE0Ci0uWzBdWzIxNl09MjE1Ci0uWzBdWzIxN109MjE2Ci0uWzBdWzIxOF09MjE3
Ci0uWzBdWzIxOV09MjE4Ci0uWzBdWzIyMF09MjE5Ci0uWzBdWzIyMV09MjIwCi0uWzBdWzIyMl09
MjIxCi0uWzBdWzIyM109MjIyCi0uWzBdWzIyNF09MjIzCi0uWzBdWzIyNV09MjI0Ci0uWzBdWzIy
Nl09MjI1Ci0uWzBdWzIyN109MjI2Ci0uWzBdWzIyOF09MjI3Ci0uWzBdWzIyOV09MjI4Ci0uWzBd
WzIzMF09MjI5Ci0uWzBdWzIzMV09MjMwCi0uWzBdWzIzMl09MjMxCi0uWzBdWzIzM109MjMyCi0u
WzBdWzIzNF09MjMzCi0uWzBdWzIzNV09MjM0Ci0uWzBdWzIzNl09MjM1Ci0uWzBdWzIzN109MjM2
Ci0uWzBdWzIzOF09MjM3Ci0uWzBdWzIzOV09MjM4Ci0uWzBdWzI0MF09MjM5Ci0uWzBdWzI0MV09
MjQwCi0uWzBdWzI0Ml09MjQxCi0uWzBdWzI0M109MjQyCi0uWzBdWzI0NF09MjQzCi0uWzBdWzI0
NV09MjQ0Ci0uWzBdWzI0Nl09MjQ1Ci0uWzBdWzI0N109MjQ2Ci0uWzBdWzI0OF09MjQ3Ci0uWzBd
WzI0OV09MjQ4Ci0uWzBdWzI1MF09MjQ5Ci0uWzBdWzI1MV09MjUwCi0uWzBdWzI1Ml09MjUxCi0u
WzBdWzI1M109MjUyCi0uWzBdWzI1NF09MjUzCi0uWzBdWzI1NV09MjU0Ci0uWzBdWzI1Nl09MjU1
Ci0uWzBdWzI1N109MjU2Ci0uWzBdWzI1OF09MjU3Ci0uWzBdWzI1OV09MjU4Ci0uWzBdWzI2MF09
MjU5Ci0uWzBdWzI2MV09MjYwCi0uWzBdWzI2Ml09MjYxCi0uWzBdWzI2M109MjYyCi0uWzBdWzI2
NF09MjYzCi0uWzBdWzI2NV09MjY0Ci0uWzBdWzI2Nl09MjY1Ci0uWzBdWzI2N109MjY2Ci0uWzBd
WzI2OF09MjY3Ci0uWzBdWzI2OV09MjY4Ci0uWzBdWzI3MF09MjY5Ci0uWzBdWzI3MV09MjcwCi0u
WzBdWzI3Ml09MjcxCi0uWzBdWzI3M109MjcyCi0uWzBdWzI3NF09MjczCi0uWzBdWzI3NV09Mjc0
Ci0uWzBdWzI3Nl09Mjc1Ci0uWzBdWzI3N109Mjc2Ci0uWzBdWzI3OF09Mjc3Ci0uWzBdWzI3OV09
Mjc4Ci0uWzBdWzI4MF09Mjc5Ci0uWzBdWzI4MV09MjgwCi0uWzBdWzI4Ml09MjgxCi0uWzBdWzI4
M109MjgyCi0uWzBdWzI4NF09MjgzCi0uWzBdWzI4NV09Mjg0Ci0uWzBdWzI4Nl09Mjg1Ci0uWzBd
WzI4N109Mjg2Ci0uWzBdWzI4OF09Mjg3Ci0uWzBdWzI4OV09Mjg4Ci0uWzBdWzI5MF09Mjg5Ci0u
WzBdWzI5MV09MjkwCi0uWzBdWzI5Ml09MjkxCi0uWzBdWzI5M109MjkyCi0uWzBdWzI5NF09Mjkz
Ci0uWzBdWzI5NV09Mjk0Ci0uWzBdWzI5Nl09Mjk1Ci0uWzBdWzI5N109Mjk2Ci0uWzBdWzI5OF09
Mjk3Ci0uWzBdWzI5OV09Mjk4Ci0uWzBdWzMwMF09Mjk5Ci0uWzBdWzMwMV09MzAwCi0uWzBdWzMw
Ml09MzAxCi0uWzBdWzMwM109MzAyCi0uWzBdWzMwNF09MzAzCi0uWzBdWzMwNV09MzA0Ci0uWzBd
WzMwNl09MzA1Ci0uWzBdWzMwN109MzA2Ci0uWzBdWzMwOF09MzA3Ci0uWzBdWzMwOV09MzA4Ci0u
WzBdWzMxMF09MzA5Ci0uWzBdWzMxMV09MzEwCi0uWzBdWzMxMl09MzExCi0uWzBdWzMxM109MzEy
Ci0uWzBdWzMxNF09MzEzCi0uWzBdWzMxNV09MzE0Ci0uWzBdWzMxNl09MzE1Ci0uWzBdWzMxN109
MzE2Ci0uWzBdWzMxOF09MzE3Ci0uWzBdWzMxOV09MzE4Ci0uWzBdWzMyMF09MzE5Ci0uWzBdWzMy
MV09MzIwCi0uWzBdWzMyMl09MzIxCi0uWzBdWzMyM109MzIyCi0uWzBdWzMyNF09MzIzCi0uWzBd
WzMyNV09MzI0Ci0uWzBdWzMyNl09MzI1Ci0uWzBdWzMyN109MzI2Ci0uWzBdWzMyOF09MzI3Ci0u
WzBdWzMyOV09MzI4Ci0uWzBdWzMzMF09MzI5Ci0uWzBdWzMzMV09MzMwCi0uWzBdWzMzMl09MzMx
Ci0uWzBdWzMzM109MzMyCi0uWzBdWzMzNF09MzMzCi0uWzBdWzMzNV09MzM0Ci0uWzBdWzMzNl09
MzM1Ci0uWzBdWzMzN109MzM2Ci0uWzBdWzMzOF09MzM3Ci0uWzBdWzMzOV09MzM4Ci0uWzBdWzM0
MF09MzM5Ci0uWzBdWzM0MV09MzQwCi0uWzBdWzM0Ml09MzQxCi0uWzBdWzM0M109MzQyCi0uWzBd
WzM0NF09MzQzCi0uWzBdWzM0NV09MzQ0Ci0uWzBdWzM0Nl09MzQ1Ci0uWzBdWzM0N109MzQ2Ci0u
WzBdWzM0OF09MzQ3Ci0uWzBdWzM0OV09MzQ4Ci0uWzBdWzM1MF09MzQ5Ci0uWzBdWzM1MV09MzUw
Ci0uWzBdWzM1Ml09MzUxCi0uWzBdWzM1M109MzUyCi0uWzBdWzM1NF09MzUzCi0uWzBdWzM1NV09
MzU0Ci0uWzBdWzM1Nl09MzU1Ci0uWzBdWzM1N109MzU2Ci0uWzBdWzM1OF09MzU3Ci0uWzBdWzM1
OV09MzU4Ci0uWzBdWzM2MF09MzU5Ci0uWzBdWzM2MV09MzYwCi0uWzBdWzM2Ml09MzYxCi0uWzBd
WzM2M109MzYyCi0uWzBdWzM2NF09MzYzCi0uWzBdWzM2NV09MzY0Ci0uWzBdWzM2Nl09MzY1Ci0u
WzBdWzM2N109MzY2Ci0uWzBdWzM2OF09MzY3Ci0uWzBdWzM2OV09MzY4Ci0uWzBdWzM3MF09MzY5
Ci0uWzBdWzM3MV09MzcwCi0uWzBdWzM3Ml09MzcxCi0uWzBdWzM3M109MzcyCi0uWzBdWzM3NF09
MzczCi0uWzBdWzM3NV09Mzc0Ci0uWzBdWzM3Nl09Mzc1Ci0uWzBdWzM3N109Mzc2Ci0uWzBdWzM3
OF09Mzc3Ci0uWzBdWzM3OV09Mzc4Ci0uWzBdWzM4MF09Mzc5Ci0uWzBdWzM4MV09MzgwCi0uWzBd
WzM4Ml09MzgxCi0uWzBdWzM4M109MzgyCi0uWzBdWzM4NF09MzgzCi0uWzBdWzM4NV09Mzg0Ci0u
WzBdWzM4Nl09Mzg1Ci0uWzBdWzM4N109Mzg2Ci0uWzBdWzM4OF09Mzg3Ci0uWzBdWzM4OV09Mzg4
Ci0uWzBdWzM5MF09Mzg5Ci0uWzBdWzM5MV09MzkwCi0uWzBdWzM5Ml09MzkxCi0uWzBdWzM5M109
MzkyCi0uWzBdWzM5NF09MzkzCi0uWzBdWzM5NV09Mzk0Ci0uWzBdWzM5Nl09Mzk1Ci0uWzBdWzM5
N109Mzk2Ci0uWzBdWzM5OF09Mzk3Ci0uWzBdWzM5OV09Mzk4Ci0uWzBdWzQwMF09Mzk5Ci0uWzBd
WzQwMV09NDAwCi0uWzBdWzQwMl09NDAxCi0uWzBdWzQwM109NDAyCi0uWzBdWzQwNF09NDAzCi0u
WzBdWzQwNV09NDA0Ci0uWzBdWzQwNl09NDA1Ci0uWzBdWzQwN109NDA2Ci0uWzBdWzQwOF09NDA3
Ci0uWzBdWzQwOV09NDA4Ci0uWzBdWzQxMF09NDA5Ci0uWzBdWzQxMV09NDEwCi0uWzBdWzQxMl09
NDExCi0uWzBdWzQxM109NDEyCi0uWzBdWzQxNF09NDEzCi0uWzBdWzQxNV09NDE0Ci0uWzBdWzQx
Nl09NDE1Ci0uWzBdWzQxN109NDE2Ci0uWzBdWzQxOF09NDE3Ci0uWzBdWzQxOV09NDE4Ci0uWzBd
WzQyMF09NDE5Ci0uWzBdWzQyMV09NDIwCi0uWzBdWzQyMl09NDIxCi0uWzBdWzQyM109NDIyCi0u
WzBdWzQyNF09NDIzCi0uWzBdWzQyNV09NDI0Ci0uWzBdWzQyNl09NDI1Ci0uWzBdWzQyN109NDI2
Ci0uWzBdWzQyOF09NDI3Ci0uWzBdWzQyOV09NDI4Ci0uWzBdWzQzMF09NDI5Ci0uWzBdWzQzMV09
NDMwCi0uWzBdWzQzMl09NDMxCi0uWzBdWzQzM109NDMyCi0uWzBdWzQzNF09NDMzCi0uWzBdWzQz
NV09NDM0Ci0uWzBdWzQzNl09NDM1Ci0uWzBdWzQzN109NDM2Ci0uWzBdWzQzOF09NDM3Ci0uWzBd
WzQzOV09NDM4Ci0uWzBdWzQ0MF09NDM5Ci0uWzBdWzQ0MV09NDQwCi0uWzBdWzQ0Ml09NDQxCi0u
WzBdWzQ0M109NDQyCi0uWzBdWzQ0NF09NDQzCi0uWzBdWzQ0NV09NDQ0Ci0uWzBdWzQ0Nl09NDQ1
Ci0uWzBdWzQ0N109NDQ2Ci0uWzBdWzQ0OF09NDQ3Ci0uWzBdWzQ0OV09NDQ4Ci0uWzBdWzQ1MF09
NDQ5Ci0uWzBdWzQ1MV09NDUwCi0uWzBdWzQ1Ml09NDUxCi0uWzBdWzQ1M109NDUyCi0uWzBdWzQ1
NF09NDUzCi0uWzBdWzQ1NV09NDU0Ci0uWzBdWzQ1Nl09NDU1Ci0uWzBdWzQ1N109NDU2Ci0uWzBd
WzQ1OF09NDU3Ci0uWzBdWzQ1OV09NDU4Ci0uWzBdWzQ2MF09NDU5Ci0uWzBdWzQ2MV09NDYwCi0u
WzBdWzQ2Ml09NDYxCi0uWzBdWzQ2M109NDYyCi0uWzBdWzQ2NF09NDYzCi0uWzBdWzQ2NV09NDY0
Ci0uWzBdWzQ2Nl09NDY1Ci0uWzBdWzQ2N109NDY2Ci0uWzBdWzQ2OF09NDY3Ci0uWzBdWzQ2OV09
NDY4Ci0uWzBdWzQ3MF09NDY5Ci0uWzBdWzQ3MV09NDcwCi0uWzBdWzQ3Ml09NDcxCi0uWzBdWzQ3
M109NDcyCi0uWzBdWzQ3NF09NDczCi0uWzBdWzQ3NV09NDc0Ci0uWzBdWzQ3Nl09NDc1Ci0uWzBd
WzQ3N109NDc2Ci0uWzBdWzQ3OF09NDc3Ci0uWzBdWzQ3OV09NDc4Ci0uWzBdWzQ4MF09NDc5Ci0u
WzBdWzQ4MV09NDgwCi0uWzBdWzQ4Ml09NDgxCi0uWzBdWzQ4M109NDgyCi0uWzBdWzQ4NF09NDgz
Ci0uWzBdWzQ4NV09NDg0Ci0uWzBdWzQ4Nl09NDg1Ci0uWzBdWzQ4N109NDg2Ci0uWzBdWzQ4OF09
NDg3Ci0uWzBdWzQ4OV09NDg4Ci0uWzBdWzQ5MF09NDg5Ci0uWzBdWzQ5MV09NDkwCi0uWzBdWzQ5
Ml09NDkxCi0uWzBdWzQ5M109NDkyCi0uWzBdWzQ5NF09NDkzCi0uWzBdWzQ5NV09NDk0Ci0uWzBd
WzQ5Nl09NDk1Ci0uWzBdWzQ5N109NDk2Ci0uWzBdWzQ5OF09NDk3Ci0uWzBdWzQ5OV09NDk4Ci0u
WzBdWzUwMF09NDk5Ci0uWzBdWzUwMV09NTAwCi0uWzBdWzUwMl09NTAxCi0uWzBdWzUwM109NTAy
Ci0uWzBdWzUwNF09NTAzCi0uWzBdWzUwNV09NTA0Ci0uWzBdWzUwNl09NTA1Ci0uWzBdWzUwN109
NTA2Ci0uWzBdWzUwOF09NTA3Ci0uWzBdWzUwOV09NTA4Ci0uWzBdWzUxMF09NTA5Ci0uWzBdWzUx
MV09NTEwCi0uWzBdWzUxMl09NTExCi0uWzBdWzUxM109NTEyCi0uWzBdWzUxNF09NTEzCi0uWzBd
WzUxNV09NTE0Ci0uWzBdWzUxNl09NTE1Ci0uWzBdWzUxN109NTE2Ci0uWzBdWzUxOF09NTE3Ci0u
WzBdWzUxOV09NTE4Ci0uWzBdWzUyMF09NTE5Ci0uWzBdWzUyMV09NTIwCi0uWzBdWzUyMl09NTIx
Ci0uWzBdWzUyM109NTIyCi0uWzBdWzUyNF09NTIzCi0uWzBdWzUyNV09NTI0Ci0uWzBdWzUyNl09
NTI1Ci0uWzBdWzUyN109NTI2Ci0uWzBdWzUyOF09NTI3Ci0uWzBdWzUyOV09NTI4Ci0uWzBdWzUz
MF09NTI5Ci0uWzBdWzUzMV09NTMwCi0uWzBdWzUzMl09NTMxCi0uWzBdWzUzM109NTMyCi0uWzBd
WzUzNF09NTMzCi0uWzBdWzUzNV09NTM0Ci0uWzBdWzUzNl09NTM1Ci0uWzBdWzUzN109NTM2Ci0u
WzBdWzUzOF09NTM3Ci0uWzBdWzUzOV09NTM4Ci0uWzBdWzU0MF09NTM5Ci0uWzBdWzU0MV09NTQw
Ci0uWzBdWzU0Ml09NTQxCi0uWzBdWzU0M109NTQyCi0uWzBdWzU0NF09NTQzCi0uWzBdWzU0NV09
NTQ0Ci0uWzBdWzU0Nl09NTQ1Ci0uWzBdWzU0N109NTQ2Ci0uWzBdWzU0OF09NTQ3Ci0uWzBdWzU0
OV09NTQ4Ci0uWzBdWzU1MF09NTQ5Ci0uWzBdWzU1MV09NTUwCi0uWzBdWzU1Ml09NTUxCi0uWzBd
WzU1M109NTUyCi0uWzBdWzU1NF09NTUzCi0uWzBdWzU1NV09NTU0Ci0uWzBdWzU1Nl09NTU1Ci0u
WzBdWzU1N109NTU2Ci0uWzBdWzU1OF09NTU3Ci0uWzBdWzU1OV09NTU4Ci0uWzBdWzU2MF09NTU5
Ci0uWzBdWzU2MV09NTYwCi0uWzBdWzU2Ml09NTYxCi0uWzBdWzU2M109NTYyCi0uWzBdWzU2NF09
NTYzCi0uWzBdWzU2NV09NTY0Ci0uWzBdWzU2Nl09NTY1Ci0uWzBdWzU2N109NTY2Ci0uWzBdWzU2
OF09NTY3Ci0uWzBdWzU2OV09NTY4Ci0uWzBdWzU3MF09NTY5Ci0uWzBdWzU3MV09NTcwCi0uWzBd
WzU3Ml09NTcxCi0uWzBdWzU3M109NTcyCi0uWzBdWzU3NF09NTczCi0uWzBdWzU3NV09NTc0Ci0u
WzBdWzU3Nl09NTc1Ci0uWzBdWzU3N109NTc2Ci0uWzBdWzU3OF09NTc3Ci0uWzBdWzU3OV09NTc4
Ci0uWzBdWzU4MF09NTc5Ci0uWzBdWzU4MV09NTgwCi0uWzBdWzU4Ml09NTgxCi0uWzBdWzU4M109
NTgyCi0uWzBdWzU4NF09NTgzCi0uWzBdWzU4NV09NTg0Ci0uWzBdWzU4Nl09NTg1Ci0uWzBdWzU4
N109NTg2Ci0uWzBdWzU4OF09NTg3Ci0uWzBdWzU4OV09NTg4Ci0uWzBdWzU5MF09NTg5Ci0uWzBd
WzU5MV09NTkwCi0uWzBdWzU5Ml09NTkxCi0uWzBdWzU5M109NTkyCi0uWzBdWzU5NF09NTkzCi0u
WzBdWzU5NV09NTk0Ci0uWzBdWzU5Nl09NTk1Ci0uWzBdWzU5N109NTk2Ci0uWzBdWzU5OF09NTk3
Ci0uWzBdWzU5OV09NTk4Ci0uWzBdWzYwMF09NTk5Ci0uWzBdWzYwMV09NjAwCi0uWzBdWzYwMl09
NjAxCi0uWzBdWzYwM109NjAyCi0uWzBdWzYwNF09NjAzCi0uWzBdWzYwNV09NjA0Ci0uWzBdWzYw
Nl09NjA1Ci0uWzBdWzYwN109NjA2Ci0uWzBdWzYwOF09NjA3Ci0uWzBdWzYwOV09NjA4Ci0uWzBd
WzYxMF09NjA5Ci0uWzBdWzYxMV09NjEwCi0uWzBdWzYxMl09NjExCi0uWzBdWzYxM109NjEyCi0u
WzBdWzYxNF09NjEzCi0uWzBdWzYxNV09NjE0Ci0uWzBdWzYxNl09NjE1Ci0uWzBdWzYxN109NjE2
Ci0uWzBdWzYxOF09NjE3Ci0uWzBdWzYxOV09NjE4Ci0uWzBdWzYyMF09NjE5Ci0uWzBdWzYyMV09
NjIwCi0uWzBdWzYyMl09NjIxCi0uWzBdWzYyM109NjIyCi0uWzBdWzYyNF09NjIzCi0uWzBdWzYy
NV09NjI0Ci0uWzBdWzYyNl09NjI1Ci0uWzBdWzYyN109NjI2Ci0uWzBdWzYyOF09NjI3Ci0uWzBd
WzYyOV09NjI4Ci0uWzBdWzYzMF09NjI5Ci0uWzBdWzYzMV09NjMwCi0uWzBdWzYzMl09NjMxCi0u
WzBdWzYzM109NjMyCi0uWzBdWzYzNF09NjMzCi0uWzBdWzYzNV09NjM0Ci0uWzBdWzYzNl09NjM1
Ci0uWzBdWzYzN109NjM2Ci0uWzBdWzYzOF09NjM3Ci0uWzBdWzYzOV09NjM4Ci0uWzBdWzY0MF09
NjM5Ci0uWzBdWzY0MV09NjQwCi0uWzBdWzY0Ml09NjQxCi0uWzBdWzY0M109NjQyCi0uWzBdWzY0
NF09NjQzCi0uWzBdWzY0NV09NjQ0Ci0uWzBdWzY0Nl09NjQ1Ci0uWzBdWzY0N109NjQ2Ci0uWzBd
WzY0OF09NjQ3Ci0uWzBdWzY0OV09NjQ4Ci0uWzBdWzY1MF09NjQ5Ci0uWzBdWzY1MV09NjUwCi0u
WzBdWzY1Ml09NjUxCi0uWzBdWzY1M109NjUyCi0uWzBdWzY1NF09NjUzCi0uWzBdWzY1NV09NjU0
Ci0uWzBdWzY1Nl09NjU1Ci0uWzBdWzY1N109NjU2Ci0uWzBdWzY1OF09NjU3Ci0uWzBdWzY1OV09
NjU4Ci0uWzBdWzY2MF09NjU5Ci0uWzBdWzY2MV09NjYwCi0uWzBdWzY2Ml09NjYxCi0uWzBdWzY2
M109NjYyCi0uWzBdWzY2NF09NjYzCi0uWzBdWzY2NV09NjY0Ci0uWzBdWzY2Nl09NjY1Ci0uWzBd
WzY2N109NjY2Ci0uWzBdWzY2OF09NjY3Ci0uWzBdWzY2OV09NjY4Ci0uWzBdWzY3MF09NjY5Ci0u
WzBdWzY3MV09NjcwCi0uWzBdWzY3Ml09NjcxCi0uWzBdWzY3M109NjcyCi0uWzBdWzY3NF09Njcz
Ci0uWzBdWzY3NV09Njc0Ci0uWzBdWzY3Nl09Njc1Ci0uWzBdWzY3N109Njc2Ci0uWzBdWzY3OF09
Njc3Ci0uWzBdWzY3OV09Njc4Ci0uWzBdWzY4MF09Njc5Ci0uWzBdWzY4MV09NjgwCi0uWzBdWzY4
Ml09NjgxCi0uWzBdWzY4M109NjgyCi0uWzBdWzY4NF09NjgzCi0uWzBdWzY4NV09Njg0Ci0uWzBd
WzY4Nl09Njg1Ci0uWzBdWzY4N109Njg2Ci0uWzBdWzY4OF09Njg3Ci0uWzBdWzY4OV09Njg4Ci0u
WzBdWzY5MF09Njg5Ci0uWzBdWzY5MV09NjkwCi0uWzBdWzY5Ml09NjkxCi0uWzBdWzY5M109Njky
Ci0uWzBdWzY5NF09NjkzCi0uWzBdWzY5NV09Njk0Ci0uWzBdWzY5Nl09Njk1Ci0uWzBdWzY5N109
Njk2Ci0uWzBdWzY5OF09Njk3Ci0uWzBdWzY5OV09Njk4Ci0uWzBdWzcwMF09Njk5Ci0uWzBdWzcw
MV09NzAwCi0uWzBdWzcwMl09NzAxCi0uWzBdWzcwM109NzAyCi0uWzBdWzcwNF09NzAzCi0uWzBd
WzcwNV09NzA0Ci0uWzBdWzcwNl09NzA1Ci0uWzBdWzcwN109NzA2Ci0uWzBdWzcwOF09NzA3Ci0u
WzBdWzcwOV09NzA4Ci0uWzBdWzcxMF09NzA5Ci0uWzBdWzcxMV09NzEwCi0uWzBdWzcxMl09NzEx
Ci0uWzBdWzcxM109NzEyCi0uWzBdWzcxNF09NzEzCi0uWzBdWzcxNV09NzE0Ci0uWzBdWzcxNl09
NzE1Ci0uWzBdWzcxN109NzE2Ci0uWzBdWzcxOF09NzE3Ci0uWzBdWzcxOV09NzE4Ci0uWzBdWzcy
MF09NzE5Ci0uWzBdWzcyMV09NzIwCi0uWzBdWzcyMl09NzIxCi0uWzBdWzcyM109NzIyCi0uWzBd
WzcyNF09NzIzCi0uWzBdWzcyNV09NzI0Ci0uWzBdWzcyNl09NzI1Ci0uWzBdWzcyN109NzI2Ci0u
WzBdWzcyOF09NzI3Ci0uWzBdWzcyOV09NzI4Ci0uWzBdWzczMF09NzI5Ci0uWzBdWzczMV09NzMw
Ci0uWzBdWzczMl09NzMxCi0uWzBdWzczM109NzMyCi0uWzBdWzczNF09NzMzCi0uWzBdWzczNV09
NzM0Ci0uWzBdWzczNl09NzM1Ci0uWzBdWzczN109NzM2Ci0uWzBdWzczOF09NzM3Ci0uWzBdWzcz
OV09NzM4Ci0uWzBdWzc0MF09NzM5Ci0uWzBdWzc0MV09NzQwCi0uWzBdWzc0Ml09NzQxCi0uWzBd
Wzc0M109NzQyCi0uWzBdWzc0NF09NzQzCi0uWzBdWzc0NV09NzQ0Ci0uWzBdWzc0Nl09NzQ1Ci0u
WzBdWzc0N109NzQ2Ci0uWzBdWzc0OF09NzQ3Ci0uWzBdWzc0OV09NzQ4Ci0uWzBdWzc1MF09NzQ5
Ci0uWzBdWzc1MV09NzUwCi0uWzBdWzc1Ml09NzUxCi0uWzBdWzc1M109NzUyCi0uWzBdWzc1NF09
NzUzCi0uWzBdWzc1NV09NzU0Ci0uWzBdWzc1Nl09NzU1Ci0uWzBdWzc1N109NzU2Ci0uWzBdWzc1
OF09NzU3Ci0uWzBdWzc1OV09NzU4Ci0uWzBdWzc2MF09NzU5Ci0uWzBdWzc2MV09NzYwCi0uWzBd
Wzc2Ml09NzYxCi0uWzBdWzc2M109NzYyCi0uWzBdWzc2NF09NzYzCi0uWzBdWzc2NV09NzY0Ci0u
WzBdWzc2Nl09NzY1Ci0uWzBdWzc2N109NzY2Ci0uWzBdWzc2OF09NzY3Ci0uWzBdWzc2OV09NzY4
Ci0uWzBdWzc3MF09NzY5Ci0uWzBdWzc3MV09NzcwCi0uWzBdWzc3Ml09NzcxCi0uWzBdWzc3M109
NzcyCi0uWzBdWzc3NF09NzczCi0uWzBdWzc3NV09Nzc0Ci0uWzBdWzc3Nl09Nzc1Ci0uWzBdWzc3
N109Nzc2Ci0uWzBdWzc3OF09Nzc3Ci0uWzBdWzc3OV09Nzc4Ci0uWzBdWzc4MF09Nzc5Ci0uWzBd
Wzc4MV09NzgwCi0uWzBdWzc4Ml09NzgxCi0uWzBdWzc4M109NzgyCi0uWzBdWzc4NF09NzgzCi0u
WzBdWzc4NV09Nzg0Ci0uWzBdWzc4Nl09Nzg1Ci0uWzBdWzc4N109Nzg2Ci0uWzBdWzc4OF09Nzg3
Ci0uWzBdWzc4OV09Nzg4Ci0uWzBdWzc5MF09Nzg5Ci0uWzBdWzc5MV09NzkwCi0uWzBdWzc5Ml09
NzkxCi0uWzBdWzc5M109NzkyCi0uWzBdWzc5NF09NzkzCi0uWzBdWzc5NV09Nzk0Ci0uWzBdWzc5
Nl09Nzk1Ci0uWzBdWzc5N109Nzk2Ci0uWzBdWzc5OF09Nzk3Ci0uWzBdWzc5OV09Nzk4Ci0uWzBd
WzgwMF09Nzk5Ci0uWzBdWzgwMV09ODAwCi0uWzBdWzgwMl09ODAxCi0uWzBdWzgwM109ODAyCi0u
WzBdWzgwNF09ODAzCi0uWzBdWzgwNV09ODA0Ci0uWzBdWzgwNl09ODA1Ci0uWzBdWzgwN109ODA2
Ci0uWzBdWzgwOF09ODA3Ci0uWzBdWzgwOV09ODA4Ci0uWzBdWzgxMF09ODA5Ci0uWzBdWzgxMV09
ODEwCi0uWzBdWzgxMl09ODExCi0uWzBdWzgxM109ODEyCi0uWzBdWzgxNF09ODEzCi0uWzBdWzgx
NV09ODE0Ci0uWzBdWzgxNl09ODE1Ci0uWzBdWzgxN109ODE2Ci0uWzBdWzgxOF09ODE3Ci0uWzBd
WzgxOV09ODE4Ci0uWzBdWzgyMF09ODE5Ci0uWzBdWzgyMV09ODIwCi0uWzBdWzgyMl09ODIxCi0u
WzBdWzgyM109ODIyCi0uWzBdWzgyNF09ODIzCi0uWzBdWzgyNV09ODI0Ci0uWzBdWzgyNl09ODI1
Ci0uWzBdWzgyN109ODI2Ci0uWzBdWzgyOF09ODI3Ci0uWzBdWzgyOV09ODI4Ci0uWzBdWzgzMF09
ODI5Ci0uWzBdWzgzMV09ODMwCi0uWzBdWzgzMl09ODMxCi0uWzBdWzgzM109ODMyCi0uWzBdWzgz
NF09ODMzCi0uWzBdWzgzNV09ODM0Ci0uWzBdWzgzNl09ODM1Ci0uWzBdWzgzN109ODM2Ci0uWzBd
WzgzOF09ODM3Ci0uWzBdWzgzOV09ODM4Ci0uWzBdWzg0MF09ODM5Ci0uWzBdWzg0MV09ODQwCi0u
WzBdWzg0Ml09ODQxCi0uWzBdWzg0M109ODQyCi0uWzBdWzg0NF09ODQzCi0uWzBdWzg0NV09ODQ0
Ci0uWzBdWzg0Nl09ODQ1Ci0uWzBdWzg0N109ODQ2Ci0uWzBdWzg0OF09ODQ3Ci0uWzBdWzg0OV09
ODQ4Ci0uWzBdWzg1MF09ODQ5Ci0uWzBdWzg1MV09ODUwCi0uWzBdWzg1Ml09ODUxCi0uWzBdWzg1
M109ODUyCi0uWzBdWzg1NF09ODUzCi0uWzBdWzg1NV09ODU0Ci0uWzBdWzg1Nl09ODU1Ci0uWzBd
Wzg1N109ODU2Ci0uWzBdWzg1OF09ODU3Ci0uWzBdWzg1OV09ODU4Ci0uWzBdWzg2MF09ODU5Ci0u
WzBdWzg2MV09ODYwCi0uWzBdWzg2Ml09ODYxCi0uWzBdWzg2M109ODYyCi0uWzBdWzg2NF09ODYz
Ci0uWzBdWzg2NV09ODY0Ci0uWzBdWzg2Nl09ODY1Ci0uWzBdWzg2N109ODY2Ci0uWzBdWzg2OF09
ODY3Ci0uWzBdWzg2OV09ODY4Ci0uWzBdWzg3MF09ODY5Ci0uWzBdWzg3MV09ODcwCi0uWzBdWzg3
Ml09ODcxCi0uWzBdWzg3M109ODcyCi0uWzBdWzg3NF09ODczCi0uWzBdWzg3NV09ODc0Ci0uWzBd
Wzg3Nl09ODc1Ci0uWzBdWzg3N109ODc2Ci0uWzBdWzg3OF09ODc3Ci0uWzBdWzg3OV09ODc4Ci0u
WzBdWzg4MF09ODc5Ci0uWzBdWzg4MV09ODgwCi0uWzBdWzg4Ml09ODgxCi0uWzBdWzg4M109ODgy
Ci0uWzBdWzg4NF09ODgzCi0uWzBdWzg4NV09ODg0Ci0uWzBdWzg4Nl09ODg1Ci0uWzBdWzg4N109
ODg2Ci0uWzBdWzg4OF09ODg3Ci0uWzBdWzg4OV09ODg4Ci0uWzBdWzg5MF09ODg5Ci0uWzBdWzg5
MV09ODkwCi0uWzBdWzg5Ml09ODkxCi0uWzBdWzg5M109ODkyCi0uWzBdWzg5NF09ODkzCi0uWzBd
Wzg5NV09ODk0Ci0uWzBdWzg5Nl09ODk1Ci0uWzBdWzg5N109ODk2Ci0uWzBdWzg5OF09ODk3Ci0u
WzBdWzg5OV09ODk4Ci0uWzBdWzkwMF09ODk5Ci0uWzBdWzkwMV09OTAwCi0uWzBdWzkwMl09OTAx
Ci0uWzBdWzkwM109OTAyCi0uWzBdWzkwNF09OTAzCi0uWzBdWzkwNV09OTA0Ci0uWzBdWzkwNl09
OTA1Ci0uWzBdWzkwN109OTA2Ci0uWzBdWzkwOF09OTA3Ci0uWzBdWzkwOV09OTA4Ci0uWzBdWzkx
MF09OTA5Ci0uWzBdWzkxMV09OTEwCi0uWzBdWzkxMl09OTExCi0uWzBdWzkxM109OTEyCi0uWzBd
WzkxNF09OTEzCi0uWzBdWzkxNV09OTE0Ci0uWzBdWzkxNl09OTE1Ci0uWzBdWzkxN109OTE2Ci0u
WzBdWzkxOF09OTE3Ci0uWzBdWzkxOV09OTE4Ci0uWzBdWzkyMF09OTE5Ci0uWzBdWzkyMV09OTIw
Ci0uWzBdWzkyMl09OTIxCi0uWzBdWzkyM109OTIyCi0uWzBdWzkyNF09OTIzCi0uWzBdWzkyNV09
OTI0Ci0uWzBdWzkyNl09OTI1Ci0uWzBdWzkyN109OTI2Ci0uWzBdWzkyOF09OTI3Ci0uWzBdWzky
OV09OTI4Ci0uWzBdWzkzMF09OTI5Ci0uWzBdWzkzMV09OTMwCi0uWzBdWzkzMl09OTMxCi0uWzBd
WzkzM109OTMyCi0uWzBdWzkzNF09OTMzCi0uWzBdWzkzNV09OTM0Ci0uWzBdWzkzNl09OTM1Ci0u
WzBdWzkzN109OTM2Ci0uWzBdWzkzOF09OTM3Ci0uWzBdWzkzOV09OTM4Ci0uWzBdWzk0MF09OTM5
Ci0uWzBdWzk0MV09OTQwCi0uWzBdWzk0Ml09OTQxCi0uWzBdWzk0M109OTQyCi0uWzBdWzk0NF09
OTQzCi0uWzBdWzk0NV09OTQ0Ci0uWzBdWzk0Nl09OTQ1Ci0uWzBdWzk0N109OTQ2Ci0uWzBdWzk0
OF09OTQ3Ci0uWzBdWzk0OV09OTQ4Ci0uWzBdWzk1MF09OTQ5Ci0uWzBdWzk1MV09OTUwCi0uWzBd
Wzk1Ml09OTUxCi0uWzBdWzk1M109OTUyCi0uWzBdWzk1NF09OTUzCi0uWzBdWzk1NV09OTU0Ci0u
WzBdWzk1Nl09OTU1Ci0uWzBdWzk1N109OTU2Ci0uWzBdWzk1OF09OTU3Ci0uWzBdWzk1OV09OTU4
Ci0uWzBdWzk2MF09OTU5Ci0uWzBdWzk2MV09OTYwCi0uWzBdWzk2Ml09OTYxCi0uWzBdWzk2M109
OTYyCi0uWzBdWzk2NF09OTYzCi0uWzBdWzk2NV09OTY0Ci0uWzBdWzk2Nl09OTY1Ci0uWzBdWzk2
N109OTY2Ci0uWzBdWzk2OF09OTY3Ci0uWzBdWzk2OV09OTY4Ci0uWzBdWzk3MF09OTY5Ci0uWzBd
Wzk3MV09OTcwCi0uWzBdWzk3Ml09OTcxCi0uWzBdWzk3M109OTcyCi0uWzBdWzk3NF09OTczCi0u
WzBdWzk3NV09OTc0Ci0uWzBdWzk3Nl09OTc1Ci0uWzBdWzk3N109OTc2Ci0uWzBdWzk3OF09OTc3
Ci0uWzBdWzk3OV09OTc4Ci0uWzBdWzk4MF09OTc5Ci0uWzBdWzk4MV09OTgwCi0uWzBdWzk4Ml09
OTgxCi0uWzBdWzk4M109OTgyCi0uWzBdWzk4NF09OTgzCi0uWzBdWzk4NV09OTg0Ci0uWzBdWzk4
Nl09OTg1Ci0uWzBdWzk4N109OTg2Ci0uWzBdWzk4OF09OTg3Ci0uWzBdWzk4OV09OTg4Ci0uWzBd
Wzk5MF09OTg5Ci0uWzBdWzk5MV09OTkwCi0uWzBdWzk5Ml09OTkxCi0uWzBdWzk5M109OTkyCi0u
WzBdWzk5NF09OTkzCi0uWzBdWzk5NV09OTk0Ci0uWzBdWzk5Nl09OTk1Ci0uWzBdWzk5N109OTk2
Ci0uWzBdWzk5OF09OTk3Ci0uWzBdWzk5OV09OTk4Ci0uWzBdWzEwMDBdPTk5OQotLlswXVsxMDAx
XT0xMDAwCi0uWzBdWzEwMDJdPTEwMDEKLS5bMF1bMTAwM109MTAwMgotLlswXVsxMDA0XT0xMDAz
Ci0uWzBdWzEwMDVdPTEwMDQKLS5bMF1bMTAwNl09MTAwNQotLlswXVsxMDA3XT0xMDA2Ci0uWzBd
WzEwMDhdPTEwMDcKLS5bMF1bMTAwOV09MTAwOAotLlswXVsxMDEwXT0xMDA5Ci0uWzBdWzEwMTFd
PTEwMTAKLS5bMF1bMTAxMl09MTAxMQotLlswXVsxMDEzXT0xMDEyCi0uWzBdWzEwMTRdPTEwMTMK
LS5bMF1bMTAxNV09MTAxNAotLlswXVsxMDE2XT0xMDE1Ci0uWzBdWzEwMTddPTEwMTYKLS5bMF1b
MTAxOF09MTAxNwotLlswXVsxMDE5XT0xMDE4Ci0uWzBdWzEwMjBdPTEwMTkKLS5bMF1bMTAyMV09
MTAyMAotLlswXVsxMDIyXT0xMDIxCi0uWzBdWzEwMjNdPTEwMjIKLS5bMF1bMTAyNF09MTAyMwot
LlswXVsxMDI1XT0xMDI0Ci0uWzBdWzEwMjZdPTEwMjUKLS5bMF1bMTAyN109MTAyNgotLlswXVsx
MDI4XT0xMDI3Ci0uWzBdWzEwMjldPTEwMjgKLS5bMF1bMTAzMF09MTAyOQotLlswXVsxMDMxXT0x
MDMwCi0uWzBdWzEwMzJdPTEwMzEKLS5bMF1bMTAzM109MTAzMgotLlswXVsxMDM0XT0xMDMzCi0u
WzBdWzEwMzVdPTEwMzQKLS5bMF1bMTAzNl09MTAzNQotLlswXVsxMDM3XT0xMDM2Ci0uWzBdWzEw
MzhdPTEwMzcKLS5bMF1bMTAzOV09MTAzOAotLlswXVsxMDQwXT0xMDM5Ci0uWzBdWzEwNDFdPTEw
NDAKLS5bMF1bMTA0Ml09MTA0MQotLlswXVsxMDQzXT0xMDQyCi0uWzBdWzEwNDRdPTEwNDMKLS5b
MF1bMTA0NV09MTA0NAotLlswXVsxMDQ2XT0xMDQ1Ci0uWzBdWzEwNDddPTEwNDYKLS5bMF1bMTA0
OF09MTA0NwotLlswXVsxMDQ5XT0xMDQ4Ci0uWzBdWzEwNTBdPTEwNDkKLS5bMF1bMTA1MV09MTA1
MAotLlswXVsxMDUyXT0xMDUxCi0uWzBdWzEwNTNdPTEwNTIKLS5bMF1bMTA1NF09MTA1MwotLlsw
XVsxMDU1XT0xMDU0Ci0uWzBdWzEwNTZdPTEwNTUKLS5bMF1bMTA1N109MTA1NgotLlswXVsxMDU4
XT0xMDU3Ci0uWzBdWzEwNTldPTEwNTgKLS5bMF1bMTA2MF09MTA1OQotLlswXVsxMDYxXT0xMDYw
Ci0uWzBdWzEwNjJdPTEwNjEKLS5bMF1bMTA2M109MTA2MgotLlswXVsxMDY0XT0xMDYzCi0uWzBd
WzEwNjVdPTEwNjQKLS5bMF1bMTA2Nl09MTA2NQotLlswXVsxMDY3XT0xMDY2Ci0uWzBdWzEwNjhd
PTEwNjcKLS5bMF1bMTA2OV09MTA2OAotLlswXVsxMDcwXT0xMDY5Ci0uWzBdWzEwNzFdPTEwNzAK
LS5bMF1bMTA3Ml09MTA3MQotLlswXVsxMDczXT0xMDcyCi0uWzBdWzEwNzRdPTEwNzMKLS5bMF1b
MTA3NV09MTA3NAotLlswXVsxMDc2XT0xMDc1Ci0uWzBdWzEwNzddPTEwNzYKLS5bMF1bMTA3OF09
MTA3NwotLlswXVsxMDc5XT0xMDc4Ci0uWzBdWzEwODBdPTEwNzkKLS5bMF1bMTA4MV09MTA4MAot
LlswXVsxMDgyXT0xMDgxCi0uWzBdWzEwODNdPTEwODIKLS5bMF1bMTA4NF09MTA4MwotLlswXVsx
MDg1XT0xMDg0Ci0uWzBdWzEwODZdPTEwODUKLS5bMF1bMTA4N109MTA4NgotLlswXVsxMDg4XT0x
MDg3Ci0uWzBdWzEwODldPTEwODgKLS5bMF1bMTA5MF09MTA4OQotLlswXVsxMDkxXT0xMDkwCi0u
WzBdWzEwOTJdPTEwOTEKLS5bMF1bMTA5M109MTA5MgotLlswXVsxMDk0XT0xMDkzCi0uWzBdWzEw
OTVdPTEwOTQKLS5bMF1bMTA5Nl09MTA5NQotLlswXVsxMDk3XT0xMDk2Ci0uWzBdWzEwOThdPTEw
OTcKLS5bMF1bMTA5OV09MTA5OAotLlswXVsxMTAwXT0xMDk5Ci0uWzBdWzExMDFdPTExMDAKLS5b
MF1bMTEwMl09MTEwMQotLlswXVsxMTAzXT0xMTAyCi0uWzBdWzExMDRdPTExMDMKLS5bMF1bMTEw
NV09MTEwNAotLlswXVsxMTA2XT0xMTA1Ci0uWzBdWzExMDddPTExMDYKLS5bMF1bMTEwOF09MTEw
NwotLlswXVsxMTA5XT0xMTA4Ci0uWzBdWzExMTBdPTExMDkKLS5bMF1bMTExMV09MTExMAotLlsw
XVsxMTEyXT0xMTExCi0uWzBdWzExMTNdPTExMTIKLS5bMF1bMTExNF09MTExMwotLlswXVsxMTE1
XT0xMTE0Ci0uWzBdWzExMTZdPTExMTUKLS5bMF1bMTExN109MTExNgotLlswXVsxMTE4XT0xMTE3
Ci0uWzBdWzExMTldPTExMTgKLS5bMF1bMTEyMF09MTExOQotLlswXVsxMTIxXT0xMTIwCi0uWzBd
WzExMjJdPTExMjEKLS5bMF1bMTEyM109MTEyMgotLlswXVsxMTI0XT0xMTIzCi0uWzBdWzExMjVd
PTExMjQKLS5bMF1bMTEyNl09MTEyNQotLlswXVsxMTI3XT0xMTI2Ci0uWzBdWzExMjhdPTExMjcK
LS5bMF1bMTEyOV09MTEyOAotLlswXVsxMTMwXT0xMTI5Ci0uWzBdWzExMzFdPTExMzAKLS5bMF1b
MTEzMl09MTEzMQotLlswXVsxMTMzXT0xMTMyCi0uWzBdWzExMzRdPTExMzMKLS5bMF1bMTEzNV09
MTEzNAotLlswXVsxMTM2XT0xMTM1Ci0uWzBdWzExMzddPTExMzYKLS5bMF1bMTEzOF09MTEzNwot
LlswXVsxMTM5XT0xMTM4Ci0uWzBdWzExNDBdPTExMzkKLS5bMF1bMTE0MV09MTE0MAotLlswXVsx
MTQyXT0xMTQxCi0uWzBdWzExNDNdPTExNDIKLS5bMF1bMTE0NF09MTE0MwotLlswXVsxMTQ1XT0x
MTQ0Ci0uWzBdWzExNDZdPTExNDUKLS5bMF1bMTE0N109MTE0NgotLlswXVsxMTQ4XT0xMTQ3Ci0u
WzBdWzExNDldPTExNDgKLS5bMF1bMTE1MF09MTE0OQotLlswXVsxMTUxXT0xMTUwCi0uWzBdWzEx
NTJdPTExNTEKLS5bMF1bMTE1M109MTE1MgotLlswXVsxMTU0XT0xMTUzCi0uWzBdWzExNTVdPTEx
NTQKLS5bMF1bMTE1Nl09MTE1NQotLlswXVsxMTU3XT0xMTU2Ci0uWzBdWzExNThdPTExNTcKLS5b
MF1bMTE1OV09MTE1OAotLlswXVsxMTYwXT0xMTU5Ci0uWzBdWzExNjFdPTExNjAKLS5bMF1bMTE2
Ml09MTE2MQotLlswXVsxMTYzXT0xMTYyCi0uWzBdWzExNjRdPTExNjMKLS5bMF1bMTE2NV09MTE2
NAotLlswXVsxMTY2XT0xMTY1Ci0uWzBdWzExNjddPTExNjYKLS5bMF1bMTE2OF09MTE2NwotLlsw
XVsxMTY5XT0xMTY4Ci0uWzBdWzExNzBdPTExNjkKLS5bMF1bMTE3MV09MTE3MAotLlswXVsxMTcy
XT0xMTcxCi0uWzBdWzExNzNdPTExNzIKLS5bMF1bMTE3NF09MTE3MwotLlswXVsxMTc1XT0xMTc0
Ci0uWzBdWzExNzZdPTExNzUKLS5bMF1bMTE3N109MTE3NgotLlswXVsxMTc4XT0xMTc3Ci0uWzBd
WzExNzldPTExNzgKLS5bMF1bMTE4MF09MTE3OQotLlswXVsxMTgxXT0xMTgwCi0uWzBdWzExODJd
PTExODEKLS5bMF1bMTE4M109MTE4MgotLlswXVsxMTg0XT0xMTgzCi0uWzBdWzExODVdPTExODQK
LS5bMF1bMTE4Nl09MTE4NQotLlswXVsxMTg3XT0xMTg2Ci0uWzBdWzExODhdPTExODcKLS5bMF1b
MTE4OV09MTE4OAotLlswXVsxMTkwXT0xMTg5Ci0uWzBdWzExOTFdPTExOTAKLS5bMF1bMTE5Ml09
MTE5MQotLlswXVsxMTkzXT0xMTkyCi0uWzBdWzExOTRdPTExOTMKLS5bMF1bMTE5NV09MTE5NAot
LlswXVsxMTk2XT0xMTk1Ci0uWzBdWzExOTddPTExOTYKLS5bMF1bMTE5OF09MTE5NwotLlswXVsx
MTk5XT0xMTk4Ci0uWzBdWzEyMDBdPTExOTkKLS5bMF1bMTIwMV09MTIwMAotLlswXVsxMjAyXT0x
MjAxCi0uWzBdWzEyMDNdPTEyMDIKLS5bMF1bMTIwNF09MTIwMwotLlswXVsxMjA1XT0xMjA0Ci0u
WzBdWzEyMDZdPTEyMDUKLS5bMF1bMTIwN109MTIwNgotLlswXVsxMjA4XT0xMjA3Ci0uWzBdWzEy
MDldPTEyMDgKLS5bMF1bMTIxMF09MTIwOQotLlswXVsxMjExXT0xMjEwCi0uWzBdWzEyMTJdPTEy
MTEKLS5bMF1bMTIxM109MTIxMgotLlswXVsxMjE0XT0xMjEzCi0uWzBdWzEyMTVdPTEyMTQKLS5b
MF1bMTIxNl09MTIxNQotLlswXVsxMjE3XT0xMjE2Ci0uWzBdWzEyMThdPTEyMTcKLS5bMF1bMTIx
OV09MTIxOAotLlswXVsxMjIwXT0xMjE5Ci0uWzBdWzEyMjFdPTEyMjAKLS5bMF1bMTIyMl09MTIy
MQotLlswXVsxMjIzXT0xMjIyCi0uWzBdWzEyMjRdPTEyMjMKLS5bMF1bMTIyNV09MTIyNAotLlsw
XVsxMjI2XT0xMjI1Ci0uWzBdWzEyMjddPTEyMjYKLS5bMF1bMTIyOF09MTIyNwotLlswXVsxMjI5
XT0xMjI4Ci0uWzBdWzEyMzBdPTEyMjkKLS5bMF1bMTIzMV09MTIzMAotLlswXVsxMjMyXT0xMjMx
Ci0uWzBdWzEyMzNdPTEyMzIKLS5bMF1bMTIzNF09MTIzMwotLlswXVsxMjM1XT0xMjM0Ci0uWzBd
WzEyMzZdPTEyMzUKLS5bMF1bMTIzN109MTIzNgotLlswXVsxMjM4XT0xMjM3Ci0uWzBdWzEyMzld
PTEyMzgKLS5bMF1bMTI0MF09MTIzOQotLlswXVsxMjQxXT0xMjQwCi0uWzBdWzEyNDJdPTEyNDEK
LS5bMF1bMTI0M109MTI0MgotLlswXVsxMjQ0XT0xMjQzCi0uWzBdWzEyNDVdPTEyNDQKLS5bMF1b
MTI0Nl09MTI0NQotLlswXVsxMjQ3XT0xMjQ2Ci0uWzBdWzEyNDhdPTEyNDcKLS5bMF1bMTI0OV09
MTI0OAotLlswXVsxMjUwXT0xMjQ5Ci0uWzBdWzEyNTFdPTEyNTAKLS5bMF1bMTI1Ml09MTI1MQot
LlswXVsxMjUzXT0xMjUyCi0uWzBdWzEyNTRdPTEyNTMKLS5bMF1bMTI1NV09MTI1NAotLlswXVsx
MjU2XT0xMjU1Ci0uWzBdWzEyNTddPTEyNTYKLS5bMF1bMTI1OF09MTI1NwotLlswXVsxMjU5XT0x
MjU4Ci0uWzBdWzEyNjBdPTEyNTkKLS5bMF1bMTI2MV09MTI2MAotLlswXVsxMjYyXT0xMjYxCi0u
WzBdWzEyNjNdPTEyNjIKLS5bMF1bMTI2NF09MTI2MwotLlswXVsxMjY1XT0xMjY0Ci0uWzBdWzEy
NjZdPTEyNjUKLS5bMF1bMTI2N109MTI2NgotLlswXVsxMjY4XT0xMjY3Ci0uWzBdWzEyNjldPTEy
NjgKLS5bMF1bMTI3MF09MTI2OQotLlswXVsxMjcxXT0xMjcwCi0uWzBdWzEyNzJdPTEyNzEKLS5b
MF1bMTI3M109MTI3MgotLlswXVsxMjc0XT0xMjczCi0uWzBdWzEyNzVdPTEyNzQKLS5bMF1bMTI3
Nl09MTI3NQotLlswXVsxMjc3XT0xMjc2Ci0uWzBdWzEyNzhdPTEyNzcKLS5bMF1bMTI3OV09MTI3
OAotLlswXVsxMjgwXT0xMjc5Ci0uWzBdWzEyODFdPTEyODAKLS5bMF1bMTI4Ml09MTI4MQotLlsw
XVsxMjgzXT0xMjgyCi0uWzBdWzEyODRdPTEyODMKLS5bMF1bMTI4NV09MTI4NAotLlswXVsxMjg2
XT0xMjg1Ci0uWzBdWzEyODddPTEyODYKLS5bMF1bMTI4OF09MTI4NwotLlswXVsxMjg5XT0xMjg4
Ci0uWzBdWzEyOTBdPTEyODkKLS5bMF1bMTI5MV09MTI5MAotLlswXVsxMjkyXT0xMjkxCi0uWzBd
WzEyOTNdPTEyOTIKLS5bMF1bMTI5NF09MTI5MwotLlswXVsxMjk1XT0xMjk0Ci0uWzBdWzEyOTZd
PTEyOTUKLS5bMF1bMTI5N109MTI5NgotLlswXVsxMjk4XT0xMjk3Ci0uWzBdWzEyOTldPTEyOTgK
LS5bMF1bMTMwMF09MTI5OQotLlswXVsxMzAxXT0xMzAwCi0uWzBdWzEzMDJdPTEzMDEKLS5bMF1b
MTMwM109MTMwMgotLlswXVsxMzA0XT0xMzAzCi0uWzBdWzEzMDVdPTEzMDQKLS5bMF1bMTMwNl09
MTMwNQotLlswXVsxMzA3XT0xMzA2Ci0uWzBdWzEzMDhdPTEzMDcKLS5bMF1bMTMwOV09MTMwOAot
LlswXVsxMzEwXT0xMzA5Ci0uWzBdWzEzMTFdPTEzMTAKLS5bMF1bMTMxMl09MTMxMQotLlswXVsx
MzEzXT0xMzEyCi0uWzBdWzEzMTRdPTEzMTMKLS5bMF1bMTMxNV09MTMxNAotLlswXVsxMzE2XT0x
MzE1Ci0uWzBdWzEzMTddPTEzMTYKLS5bMF1bMTMxOF09MTMxNwotLlswXVsxMzE5XT0xMzE4Ci0u
WzBdWzEzMjBdPTEzMTkKLS5bMF1bMTMyMV09MTMyMAotLlswXVsxMzIyXT0xMzIxCi0uWzBdWzEz
MjNdPTEzMjIKLS5bMF1bMTMyNF09MTMyMwotLlswXVsxMzI1XT0xMzI0Ci0uWzBdWzEzMjZdPTEz
MjUKLS5bMF1bMTMyN109MTMyNgotLlswXVsxMzI4XT0xMzI3Ci0uWzBdWzEzMjldPTEzMjgKLS5b
MF1bMTMzMF09MTMyOQotLlswXVsxMzMxXT0xMzMwCi0uWzBdWzEzMzJdPTEzMzEKLS5bMF1bMTMz
M109MTMzMgotLlswXVsxMzM0XT0xMzMzCi0uWzBdWzEzMzVdPTEzMzQKLS5bMF1bMTMzNl09MTMz
NQotLlswXVsxMzM3XT0xMzM2Ci0uWzBdWzEzMzhdPTEzMzcKLS5bMF1bMTMzOV09MTMzOAotLlsw
XVsxMzQwXT0xMzM5Ci0uWzBdWzEzNDFdPTEzNDAKLS5bMF1bMTM0Ml09MTM0MQotLlswXVsxMzQz
XT0xMzQyCi0uWzBdWzEzNDRdPTEzNDMKLS5bMF1bMTM0NV09MTM0NAotLlswXVsxMzQ2XT0xMzQ1
Ci0uWzBdWzEzNDddPTEzNDYKLS5bMF1bMTM0OF09MTM0NwotLlswXVsxMzQ5XT0xMzQ4Ci0uWzBd
WzEzNTBdPTEzNDkKLS5bMF1bMTM1MV09MTM1MAotLlswXVsxMzUyXT0xMzUxCi0uWzBdWzEzNTNd
PTEzNTIKLS5bMF1bMTM1NF09MTM1MwotLlswXVsxMzU1XT0xMzU0Ci0uWzBdWzEzNTZdPTEzNTUK
LS5bMF1bMTM1N109MTM1NgotLlswXVsxMzU4XT0xMzU3Ci0uWzBdWzEzNTldPTEzNTgKLS5bMF1b
MTM2MF09MTM1OQotLlswXVsxMzYxXT0xMzYwCi0uWzBdWzEzNjJdPTEzNjEKLS5bMF1bMTM2M109
MTM2MgotLlswXVsxMzY0XT0xMzYzCi0uWzBdWzEzNjVdPTEzNjQKLS5bMF1bMTM2Nl09MTM2NQot
LlswXVsxMzY3XT0xMzY2Ci0uWzBdWzEzNjhdPTEzNjcKLS5bMF1bMTM2OV09MTM2OAotLlswXVsx
MzcwXT0xMzY5Ci0uWzBdWzEzNzFdPTEzNzAKLS5bMF1bMTM3Ml09MTM3MQotLlswXVsxMzczXT0x
MzcyCi0uWzBdWzEzNzRdPTEzNzMKLS5bMF1bMTM3NV09MTM3NAotLlswXVsxMzc2XT0xMzc1Ci0u
WzBdWzEzNzddPTEzNzYKLS5bMF1bMTM3OF09MTM3NwotLlswXVsxMzc5XT0xMzc4Ci0uWzBdWzEz
ODBdPTEzNzkKLS5bMF1bMTM4MV09MTM4MAotLlswXVsxMzgyXT0xMzgxCi0uWzBdWzEzODNdPTEz
ODIKLS5bMF1bMTM4NF09MTM4MwotLlswXVsxMzg1XT0xMzg0Ci0uWzBdWzEzODZdPTEzODUKLS5b
MF1bMTM4N109MTM4NgotLlswXVsxMzg4XT0xMzg3Ci0uWzBdWzEzODldPTEzODgKLS5bMF1bMTM5
MF09MTM4OQotLlswXVsxMzkxXT0xMzkwCi0uWzBdWzEzOTJdPTEzOTEKLS5bMF1bMTM5M109MTM5
MgotLlswXVsxMzk0XT0xMzkzCi0uWzBdWzEzOTVdPTEzOTQKLS5bMF1bMTM5Nl09MTM5NQotLlsw
XVsxMzk3XT0xMzk2Ci0uWzBdWzEzOThdPTEzOTcKLS5bMF1bMTM5OV09MTM5OAotLlswXVsxNDAw
XT0xMzk5Ci0uWzBdWzE0MDFdPTE0MDAKLS5bMF1bMTQwMl09MTQwMQotLlswXVsxNDAzXT0xNDAy
Ci0uWzBdWzE0MDRdPTE0MDMKLS5bMF1bMTQwNV09MTQwNAotLlswXVsxNDA2XT0xNDA1Ci0uWzBd
WzE0MDddPTE0MDYKLS5bMF1bMTQwOF09MTQwNwotLlswXVsxNDA5XT0xNDA4Ci0uWzBdWzE0MTBd
PTE0MDkKLS5bMF1bMTQxMV09MTQxMAotLlswXVsxNDEyXT0xNDExCi0uWzBdWzE0MTNdPTE0MTIK
LS5bMF1bMTQxNF09MTQxMwotLlswXVsxNDE1XT0xNDE0Ci0uWzBdWzE0MTZdPTE0MTUKLS5bMF1b
MTQxN109MTQxNgotLlswXVsxNDE4XT0xNDE3Ci0uWzBdWzE0MTldPTE0MTgKLS5bMF1bMTQyMF09
MTQxOQotLlswXVsxNDIxXT0xNDIwCi0uWzBdWzE0MjJdPTE0MjEKLS5bMF1bMTQyM109MTQyMgot
LlswXVsxNDI0XT0xNDIzCi0uWzBdWzE0MjVdPTE0MjQKLS5bMF1bMTQyNl09MTQyNQotLlswXVsx
NDI3XT0xNDI2Ci0uWzBdWzE0MjhdPTE0MjcKLS5bMF1bMTQyOV09MTQyOAotLlswXVsxNDMwXT0x
NDI5Ci0uWzBdWzE0MzFdPTE0MzAKLS5bMF1bMTQzMl09MTQzMQotLlswXVsxNDMzXT0xNDMyCi0u
WzBdWzE0MzRdPTE0MzMKLS5bMF1bMTQzNV09MTQzNAotLlswXVsxNDM2XT0xNDM1Ci0uWzBdWzE0
MzddPTE0MzYKLS5bMF1bMTQzOF09MTQzNwotLlswXVsxNDM5XT0xNDM4Ci0uWzBdWzE0NDBdPTE0
MzkKLS5bMF1bMTQ0MV09MTQ0MAotLlswXVsxNDQyXT0xNDQxCi0uWzBdWzE0NDNdPTE0NDIKLS5b
MF1bMTQ0NF09MTQ0MwotLlswXVsxNDQ1XT0xNDQ0Ci0uWzBdWzE0NDZdPTE0NDUKLS5bMF1bMTQ0
N109MTQ0NgotLlswXVsxNDQ4XT0xNDQ3Ci0uWzBdWzE0NDldPTE0NDgKLS5bMF1bMTQ1MF09MTQ0
OQotLlswXVsxNDUxXT0xNDUwCi0uWzBdWzE0NTJdPTE0NTEKLS5bMF1bMTQ1M109MTQ1MgotLlsw
XVsxNDU0XT0xNDUzCi0uWzBdWzE0NTVdPTE0NTQKLS5bMF1bMTQ1Nl09MTQ1NQotLlswXVsxNDU3
XT0xNDU2Ci0uWzBdWzE0NThdPTE0NTcKLS5bMF1bMTQ1OV09MTQ1OAotLlswXVsxNDYwXT0xNDU5
Ci0uWzBdWzE0NjFdPTE0NjAKLS5bMF1bMTQ2Ml09MTQ2MQotLlswXVsxNDYzXT0xNDYyCi0uWzBd
WzE0NjRdPTE0NjMKLS5bMF1bMTQ2NV09MTQ2NAotLlswXVsxNDY2XT0xNDY1Ci0uWzBdWzE0Njdd
PTE0NjYKLS5bMF1bMTQ2OF09MTQ2NwotLlswXVsxNDY5XT0xNDY4Ci0uWzBdWzE0NzBdPTE0NjkK
LS5bMF1bMTQ3MV09MTQ3MAotLlswXVsxNDcyXT0xNDcxCi0uWzBdWzE0NzNdPTE0NzIKLS5bMF1b
MTQ3NF09MTQ3MwotLlswXVsxNDc1XT0xNDc0Ci0uWzBdWzE0NzZdPTE0NzUKLS5bMF1bMTQ3N109
MTQ3NgotLlswXVsxNDc4XT0xNDc3Ci0uWzBdWzE0NzldPTE0NzgKLS5bMF1bMTQ4MF09MTQ3OQot
LlswXVsxNDgxXT0xNDgwCi0uWzBdWzE0ODJdPTE0ODEKLS5bMF1bMTQ4M109MTQ4MgotLlswXVsx
NDg0XT0xNDgzCi0uWzBdWzE0ODVdPTE0ODQKLS5bMF1bMTQ4Nl09MTQ4NQotLlswXVsxNDg3XT0x
NDg2Ci0uWzBdWzE0ODhdPTE0ODcKLS5bMF1bMTQ4OV09MTQ4OAotLlswXVsxNDkwXT0xNDg5Ci0u
WzBdWzE0OTFdPTE0OTAKLS5bMF1bMTQ5Ml09MTQ5MQotLlswXVsxNDkzXT0xNDkyCi0uWzBdWzE0
OTRdPTE0OTMKLS5bMF1bMTQ5NV09MTQ5NAotLlswXVsxNDk2XT0xNDk1Ci0uWzBdWzE0OTddPTE0
OTYKLS5bMF1bMTQ5OF09MTQ5NwotLlswXVsxNDk5XT0xNDk4Ci0uWzBdWzE1MDBdPTE0OTkKLS5b
MF1bMTUwMV09MTUwMAotLlswXVsxNTAyXT0xNTAxCi0uWzBdWzE1MDNdPTE1MDIKLS5bMF1bMTUw
NF09MTUwMwotLlswXVsxNTA1XT0xNTA0Ci0uWzBdWzE1MDZdPTE1MDUKLS5bMF1bMTUwN109MTUw
NgotLlswXVsxNTA4XT0xNTA3Ci0uWzBdWzE1MDldPTE1MDgKLS5bMF1bMTUxMF09MTUwOQotLlsw
XVsxNTExXT0xNTEwCi0uWzBdWzE1MTJdPTE1MTEKLS5bMF1bMTUxM109MTUxMgotLlswXVsxNTE0
XT0xNTEzCi0uWzBdWzE1MTVdPTE1MTQKLS5bMF1bMTUxNl09MTUxNQotLlswXVsxNTE3XT0xNTE2
Ci0uWzBdWzE1MThdPTE1MTcKLS5bMF1bMTUxOV09MTUxOAotLlswXVsxNTIwXT0xNTE5Ci0uWzBd
WzE1MjFdPTE1MjAKLS5bMF1bMTUyMl09MTUyMQotLlswXVsxNTIzXT0xNTIyCi0uWzBdWzE1MjRd
PTE1MjMKLS5bMF1bMTUyNV09MTUyNAotLlswXVsxNTI2XT0xNTI1Ci0uWzBdWzE1MjddPTE1MjYK
LS5bMF1bMTUyOF09MTUyNwotLlswXVsxNTI5XT0xNTI4Ci0uWzBdWzE1MzBdPTE1MjkKLS5bMF1b
MTUzMV09MTUzMAotLlswXVsxNTMyXT0xNTMxCi0uWzBdWzE1MzNdPTE1MzIKLS5bMF1bMTUzNF09
MTUzMwotLlswXVsxNTM1XT0xNTM0Ci0uWzBdWzE1MzZdPTE1MzUKLS5bMF1bMTUzN109MTUzNgot
LlswXVsxNTM4XT0xNTM3Ci0uWzBdWzE1MzldPTE1MzgKLS5bMF1bMTU0MF09MTUzOQotLlswXVsx
NTQxXT0xNTQwCi0uWzBdWzE1NDJdPTE1NDEKLS5bMF1bMTU0M109MTU0MgotLlswXVsxNTQ0XT0x
NTQzCi0uWzBdWzE1NDVdPTE1NDQKLS5bMF1bMTU0Nl09MTU0NQotLlswXVsxNTQ3XT0xNTQ2Ci0u
WzBdWzE1NDhdPTE1NDcKLS5bMF1bMTU0OV09MTU0OAotLlswXVsxNTUwXT0xNTQ5Ci0uWzBdWzE1
NTFdPTE1NTAKLS5bMF1bMTU1Ml09MTU1MQotLlswXVsxNTUzXT0xNTUyCi0uWzBdWzE1NTRdPTE1
NTMKLS5bMF1bMTU1NV09MTU1NAotLlswXVsxNTU2XT0xNTU1Ci0uWzBdWzE1NTddPTE1NTYKLS5b
MF1bMTU1OF09MTU1NwotLlswXVsxNTU5XT0xNTU4Ci0uWzBdWzE1NjBdPTE1NTkKLS5bMF1bMTU2
MV09MTU2MAotLlswXVsxNTYyXT0xNTYxCi0uWzBdWzE1NjNdPTE1NjIKLS5bMF1bMTU2NF09MTU2
MwotLlswXVsxNTY1XT0xNTY0Ci0uWzBdWzE1NjZdPTE1NjUKLS5bMF1bMTU2N109MTU2NgotLlsw
XVsxNTY4XT0xNTY3Ci0uWzBdWzE1NjldPTE1NjgKLS5bMF1bMTU3MF09MTU2OQotLlswXVsxNTcx
XT0xNTcwCi0uWzBdWzE1NzJdPTE1NzEKLS5bMF1bMTU3M109MTU3MgotLlswXVsxNTc0XT0xNTcz
Ci0uWzBdWzE1NzVdPTE1NzQKLS5bMF1bMTU3Nl09MTU3NQotLlswXVsxNTc3XT0xNTc2Ci0uWzBd
WzE1NzhdPTE1NzcKLS5bMF1bMTU3OV09MTU3OAotLlswXVsxNTgwXT0xNTc5Ci0uWzBdWzE1ODFd
PTE1ODAKLS5bMF1bMTU4Ml09MTU4MQotLlswXVsxNTgzXT0xNTgyCi0uWzBdWzE1ODRdPTE1ODMK
LS5bMF1bMTU4NV09MTU4NAotLlswXVsxNTg2XT0xNTg1Ci0uWzBdWzE1ODddPTE1ODYKLS5bMF1b
MTU4OF09MTU4NwotLlswXVsxNTg5XT0xNTg4Ci0uWzBdWzE1OTBdPTE1ODkKLS5bMF1bMTU5MV09
MTU5MAotLlswXVsxNTkyXT0xNTkxCi0uWzBdWzE1OTNdPTE1OTIKLS5bMF1bMTU5NF09MTU5Mwot
LlswXVsxNTk1XT0xNTk0Ci0uWzBdWzE1OTZdPTE1OTUKLS5bMF1bMTU5N109MTU5NgotLlswXVsx
NTk4XT0xNTk3Ci0uWzBdWzE1OTldPTE1OTgKLS5bMF1bMTYwMF09MTU5OQotLlswXVsxNjAxXT0x
NjAwCi0uWzBdWzE2MDJdPTE2MDEKLS5bMF1bMTYwM109MTYwMgotLlswXVsxNjA0XT0xNjAzCi0u
WzBdWzE2MDVdPTE2MDQKLS5bMF1bMTYwNl09MTYwNQotLlswXVsxNjA3XT0xNjA2Ci0uWzBdWzE2
MDhdPTE2MDcKLS5bMF1bMTYwOV09MTYwOAotLlswXVsxNjEwXT0xNjA5Ci0uWzBdWzE2MTFdPTE2
MTAKLS5bMF1bMTYxMl09MTYxMQotLlswXVsxNjEzXT0xNjEyCi0uWzBdWzE2MTRdPTE2MTMKLS5b
MF1bMTYxNV09MTYxNAotLlswXVsxNjE2XT0xNjE1Ci0uWzBdWzE2MTddPTE2MTYKLS5bMF1bMTYx
OF09MTYxNwotLlswXVsxNjE5XT0xNjE4Ci0uWzBdWzE2MjBdPTE2MTkKLS5bMF1bMTYyMV09MTYy
MAotLlswXVsxNjIyXT0xNjIxCi0uWzBdWzE2MjNdPTE2MjIKLS5bMF1bMTYyNF09MTYyMwotLlsw
XVsxNjI1XT0xNjI0Ci0uWzBdWzE2MjZdPTE2MjUKLS5bMF1bMTYyN109MTYyNgotLlswXVsxNjI4
XT0xNjI3Ci0uWzBdWzE2MjldPTE2MjgKLS5bMF1bMTYzMF09MTYyOQotLlswXVsxNjMxXT0xNjMw
Ci0uWzBdWzE2MzJdPTE2MzEKLS5bMF1bMTYzM109MTYzMgotLlswXVsxNjM0XT0xNjMzCi0uWzBd
WzE2MzVdPTE2MzQKLS5bMF1bMTYzNl09MTYzNQotLlswXVsxNjM3XT0xNjM2Ci0uWzBdWzE2Mzhd
PTE2MzcKLS5bMF1bMTYzOV09MTYzOAotLlswXVsxNjQwXT0xNjM5Ci0uWzBdWzE2NDFdPTE2NDAK
LS5bMF1bMTY0Ml09MTY0MQotLlswXVsxNjQzXT0xNjQyCi0uWzBdWzE2NDRdPTE2NDMKLS5bMF1b
MTY0NV09MTY0NAotLlswXVsxNjQ2XT0xNjQ1Ci0uWzBdWzE2NDddPTE2NDYKLS5bMF1bMTY0OF09
MTY0NwotLlswXVsxNjQ5XT0xNjQ4Ci0uWzBdWzE2NTBdPTE2NDkKLS5bMF1bMTY1MV09MTY1MAot
LlswXVsxNjUyXT0xNjUxCi0uWzBdWzE2NTNdPTE2NTIKLS5bMF1bMTY1NF09MTY1MwotLlswXVsx
NjU1XT0xNjU0Ci0uWzBdWzE2NTZdPTE2NTUKLS5bMF1bMTY1N109MTY1NgotLlswXVsxNjU4XT0x
NjU3Ci0uWzBdWzE2NTldPTE2NTgKLS5bMF1bMTY2MF09MTY1OQotLlswXVsxNjYxXT0xNjYwCi0u
WzBdWzE2NjJdPTE2NjEKLS5bMF1bMTY2M109MTY2MgotLlswXVsxNjY0XT0xNjYzCi0uWzBdWzE2
NjVdPTE2NjQKLS5bMF1bMTY2Nl09MTY2NQotLlswXVsxNjY3XT0xNjY2Ci0uWzBdWzE2NjhdPTE2
NjcKLS5bMF1bMTY2OV09MTY2OAotLlswXVsxNjcwXT0xNjY5Ci0uWzBdWzE2NzFdPTE2NzAKLS5b
MF1bMTY3Ml09MTY3MQotLlswXVsxNjczXT0xNjcyCi0uWzBdWzE2NzRdPTE2NzMKLS5bMF1bMTY3
NV09MTY3NAotLlswXVsxNjc2XT0xNjc1Ci0uWzBdWzE2NzddPTE2NzYKLS5bMF1bMTY3OF09MTY3
NwotLlswXVsxNjc5XT0xNjc4Ci0uWzBdWzE2ODBdPTE2NzkKLS5bMF1bMTY4MV09MTY4MAotLlsw
XVsxNjgyXT0xNjgxCi0uWzBdWzE2ODNdPTE2ODIKLS5bMF1bMTY4NF09MTY4MwotLlswXVsxNjg1
XT0xNjg0Ci0uWzBdWzE2ODZdPTE2ODUKLS5bMF1bMTY4N109MTY4NgotLlswXVsxNjg4XT0xNjg3
Ci0uWzBdWzE2ODldPTE2ODgKLS5bMF1bMTY5MF09MTY4OQotLlswXVsxNjkxXT0xNjkwCi0uWzBd
WzE2OTJdPTE2OTEKLS5bMF1bMTY5M109MTY5MgotLlswXVsxNjk0XT0xNjkzCi0uWzBdWzE2OTVd
PTE2OTQKLS5bMF1bMTY5Nl09MTY5NQotLlswXVsxNjk3XT0xNjk2Ci0uWzBdWzE2OThdPTE2OTcK
LS5bMF1bMTY5OV09MTY5OAotLlswXVsxNzAwXT0xNjk5Ci0uWzBdWzE3MDFdPTE3MDAKLS5bMF1b
MTcwMl09MTcwMQotLlswXVsxNzAzXT0xNzAyCi0uWzBdWzE3MDRdPTE3MDMKLS5bMF1bMTcwNV09
MTcwNAotLlswXVsxNzA2XT0xNzA1Ci0uWzBdWzE3MDddPTE3MDYKLS5bMF1bMTcwOF09MTcwNwot
LlswXVsxNzA5XT0xNzA4Ci0uWzBdWzE3MTBdPTE3MDkKLS5bMF1bMTcxMV09MTcxMAotLlswXVsx
NzEyXT0xNzExCi0uWzBdWzE3MTNdPTE3MTIKLS5bMF1bMTcxNF09MTcxMwotLlswXVsxNzE1XT0x
NzE0Ci0uWzBdWzE3MTZdPTE3MTUKLS5bMF1bMTcxN109MTcxNgotLlswXVsxNzE4XT0xNzE3Ci0u
WzBdWzE3MTldPTE3MTgKLS5bMF1bMTcyMF09MTcxOQotLlswXVsxNzIxXT0xNzIwCi0uWzBdWzE3
MjJdPTE3MjEKLS5bMF1bMTcyM109MTcyMgotLlswXVsxNzI0XT0xNzIzCi0uWzBdWzE3MjVdPTE3
MjQKLS5bMF1bMTcyNl09MTcyNQotLlswXVsxNzI3XT0xNzI2Ci0uWzBdWzE3MjhdPTE3MjcKLS5b
MF1bMTcyOV09MTcyOAotLlswXVsxNzMwXT0xNzI5Ci0uWzBdWzE3MzFdPTE3MzAKLS5bMF1bMTcz
Ml09MTczMQotLlswXVsxNzMzXT0xNzMyCi0uWzBdWzE3MzRdPTE3MzMKLS5bMF1bMTczNV09MTcz
NAotLlswXVsxNzM2XT0xNzM1Ci0uWzBdWzE3MzddPTE3MzYKLS5bMF1bMTczOF09MTczNwotLlsw
XVsxNzM5XT0xNzM4Ci0uWzBdWzE3NDBdPTE3MzkKLS5bMF1bMTc0MV09MTc0MAotLlswXVsxNzQy
XT0xNzQxCi0uWzBdWzE3NDNdPTE3NDIKLS5bMF1bMTc0NF09MTc0MwotLlswXVsxNzQ1XT0xNzQ0
Ci0uWzBdWzE3NDZdPTE3NDUKLS5bMF1bMTc0N109MTc0NgotLlswXVsxNzQ4XT0xNzQ3Ci0uWzBd
WzE3NDldPTE3NDgKLS5bMF1bMTc1MF09MTc0OQotLlswXVsxNzUxXT0xNzUwCi0uWzBdWzE3NTJd
PTE3NTEKLS5bMF1bMTc1M109MTc1MgotLlswXVsxNzU0XT0xNzUzCi0uWzBdWzE3NTVdPTE3NTQK
LS5bMF1bMTc1Nl09MTc1NQotLlswXVsxNzU3XT0xNzU2Ci0uWzBdWzE3NThdPTE3NTcKLS5bMF1b
MTc1OV09MTc1OAotLlswXVsxNzYwXT0xNzU5Ci0uWzBdWzE3NjFdPTE3NjAKLS5bMF1bMTc2Ml09
MTc2MQotLlswXVsxNzYzXT0xNzYyCi0uWzBdWzE3NjRdPTE3NjMKLS5bMF1bMTc2NV09MTc2NAot
LlswXVsxNzY2XT0xNzY1Ci0uWzBdWzE3NjddPTE3NjYKLS5bMF1bMTc2OF09MTc2NwotLlswXVsx
NzY5XT0xNzY4Ci0uWzBdWzE3NzBdPTE3NjkKLS5bMF1bMTc3MV09MTc3MAotLlswXVsxNzcyXT0x
NzcxCi0uWzBdWzE3NzNdPTE3NzIKLS5bMF1bMTc3NF09MTc3MwotLlswXVsxNzc1XT0xNzc0Ci0u
WzBdWzE3NzZdPTE3NzUKLS5bMF1bMTc3N109MTc3NgotLlswXVsxNzc4XT0xNzc3Ci0uWzBdWzE3
NzldPTE3NzgKLS5bMF1bMTc4MF09MTc3OQotLlswXVsxNzgxXT0xNzgwCi0uWzBdWzE3ODJdPTE3
ODEKLS5bMF1bMTc4M109MTc4MgotLlswXVsxNzg0XT0xNzgzCi0uWzBdWzE3ODVdPTE3ODQKLS5b
MF1bMTc4Nl09MTc4NQotLlswXVsxNzg3XT0xNzg2Ci0uWzBdWzE3ODhdPTE3ODcKLS5bMF1bMTc4
OV09MTc4OAotLlswXVsxNzkwXT0xNzg5Ci0uWzBdWzE3OTFdPTE3OTAKLS5bMF1bMTc5Ml09MTc5
MQotLlswXVsxNzkzXT0xNzkyCi0uWzBdWzE3OTRdPTE3OTMKLS5bMF1bMTc5NV09MTc5NAotLlsw
XVsxNzk2XT0xNzk1Ci0uWzBdWzE3OTddPTE3OTYKLS5bMF1bMTc5OF09MTc5NwotLlswXVsxNzk5
XT0xNzk4Ci0uWzBdWzE4MDBdPTE3OTkKLS5bMF1bMTgwMV09MTgwMAotLlswXVsxODAyXT0xODAx
Ci0uWzBdWzE4MDNdPTE4MDIKLS5bMF1bMTgwNF09MTgwMwotLlswXVsxODA1XT0xODA0Ci0uWzBd
WzE4MDZdPTE4MDUKLS5bMF1bMTgwN109MTgwNgotLlswXVsxODA4XT0xODA3Ci0uWzBdWzE4MDld
PTE4MDgKLS5bMF1bMTgxMF09MTgwOQotLlswXVsxODExXT0xODEwCi0uWzBdWzE4MTJdPTE4MTEK
LS5bMF1bMTgxM109MTgxMgotLlswXVsxODE0XT0xODEzCi0uWzBdWzE4MTVdPTE4MTQKLS5bMF1b
MTgxNl09MTgxNQotLlswXVsxODE3XT0xODE2Ci0uWzBdWzE4MThdPTE4MTcKLS5bMF1bMTgxOV09
MTgxOAotLlswXVsxODIwXT0xODE5Ci0uWzBdWzE4MjFdPTE4MjAKLS5bMF1bMTgyMl09MTgyMQot
LlswXVsxODIzXT0xODIyCi0uWzBdWzE4MjRdPTE4MjMKLS5bMF1bMTgyNV09MTgyNAotLlswXVsx
ODI2XT0xODI1Ci0uWzBdWzE4MjddPTE4MjYKLS5bMF1bMTgyOF09MTgyNwotLlswXVsxODI5XT0x
ODI4Ci0uWzBdWzE4MzBdPTE4MjkKLS5bMF1bMTgzMV09MTgzMAotLlswXVsxODMyXT0xODMxCi0u
WzBdWzE4MzNdPTE4MzIKLS5bMF1bMTgzNF09MTgzMwotLlswXVsxODM1XT0xODM0Ci0uWzBdWzE4
MzZdPTE4MzUKLS5bMF1bMTgzN109MTgzNgotLlswXVsxODM4XT0xODM3Ci0uWzBdWzE4MzldPTE4
MzgKLS5bMF1bMTg0MF09MTgzOQotLlswXVsxODQxXT0xODQwCi0uWzBdWzE4NDJdPTE4NDEKLS5b
MF1bMTg0M109MTg0MgotLlswXVsxODQ0XT0xODQzCi0uWzBdWzE4NDVdPTE4NDQKLS5bMF1bMTg0
Nl09MTg0NQotLlswXVsxODQ3XT0xODQ2Ci0uWzBdWzE4NDhdPTE4NDcKLS5bMF1bMTg0OV09MTg0
OAotLlswXVsxODUwXT0xODQ5Ci0uWzBdWzE4NTFdPTE4NTAKLS5bMF1bMTg1Ml09MTg1MQotLlsw
XVsxODUzXT0xODUyCi0uWzBdWzE4NTRdPTE4NTMKLS5bMF1bMTg1NV09MTg1NAotLlswXVsxODU2
XT0xODU1Ci0uWzBdWzE4NTddPTE4NTYKLS5bMF1bMTg1OF09MTg1NwotLlswXVsxODU5XT0xODU4
Ci0uWzBdWzE4NjBdPTE4NTkKLS5bMF1bMTg2MV09MTg2MAotLlswXVsxODYyXT0xODYxCi0uWzBd
WzE4NjNdPTE4NjIKLS5bMF1bMTg2NF09MTg2MwotLlswXVsxODY1XT0xODY0Ci0uWzBdWzE4NjZd
PTE4NjUKLS5bMF1bMTg2N109MTg2NgotLlswXVsxODY4XT0xODY3Ci0uWzBdWzE4NjldPTE4NjgK
LS5bMF1bMTg3MF09MTg2OQotLlswXVsxODcxXT0xODcwCi0uWzBdWzE4NzJdPTE4NzEKLS5bMF1b
MTg3M109MTg3MgotLlswXVsxODc0XT0xODczCi0uWzBdWzE4NzVdPTE4NzQKLS5bMF1bMTg3Nl09
MTg3NQotLlswXVsxODc3XT0xODc2Ci0uWzBdWzE4NzhdPTE4NzcKLS5bMF1bMTg3OV09MTg3OAot
LlswXVsxODgwXT0xODc5Ci0uWzBdWzE4ODFdPTE4ODAKLS5bMF1bMTg4Ml09MTg4MQotLlswXVsx
ODgzXT0xODgyCi0uWzBdWzE4ODRdPTE4ODMKLS5bMF1bMTg4NV09MTg4NAotLlswXVsxODg2XT0x
ODg1Ci0uWzBdWzE4ODddPTE4ODYKLS5bMF1bMTg4OF09MTg4NwotLlswXVsxODg5XT0xODg4Ci0u
WzBdWzE4OTBdPTE4ODkKLS5bMF1bMTg5MV09MTg5MAotLlswXVsxODkyXT0xODkxCi0uWzBdWzE4
OTNdPTE4OTIKLS5bMF1bMTg5NF09MTg5MwotLlswXVsxODk1XT0xODk0Ci0uWzBdWzE4OTZdPTE4
OTUKLS5bMF1bMTg5N109MTg5NgotLlswXVsxODk4XT0xODk3Ci0uWzBdWzE4OTldPTE4OTgKLS5b
MF1bMTkwMF09MTg5OQotLlswXVsxOTAxXT0xOTAwCi0uWzBdWzE5MDJdPTE5MDEKLS5bMF1bMTkw
M109MTkwMgotLlswXVsxOTA0XT0xOTAzCi0uWzBdWzE5MDVdPTE5MDQKLS5bMF1bMTkwNl09MTkw
NQotLlswXVsxOTA3XT0xOTA2Ci0uWzBdWzE5MDhdPTE5MDcKLS5bMF1bMTkwOV09MTkwOAotLlsw
XVsxOTEwXT0xOTA5Ci0uWzBdWzE5MTFdPTE5MTAKLS5bMF1bMTkxMl09MTkxMQotLlswXVsxOTEz
XT0xOTEyCi0uWzBdWzE5MTRdPTE5MTMKLS5bMF1bMTkxNV09MTkxNAotLlswXVsxOTE2XT0xOTE1
Ci0uWzBdWzE5MTddPTE5MTYKLS5bMF1bMTkxOF09MTkxNwotLlswXVsxOTE5XT0xOTE4Ci0uWzBd
WzE5MjBdPTE5MTkKLS5bMF1bMTkyMV09MTkyMAotLlswXVsxOTIyXT0xOTIxCi0uWzBdWzE5MjNd
PTE5MjIKLS5bMF1bMTkyNF09MTkyMwotLlswXVsxOTI1XT0xOTI0Ci0uWzBdWzE5MjZdPTE5MjUK
LS5bMF1bMTkyN109MTkyNgotLlswXVsxOTI4XT0xOTI3Ci0uWzBdWzE5MjldPTE5MjgKLS5bMF1b
MTkzMF09MTkyOQotLlswXVsxOTMxXT0xOTMwCi0uWzBdWzE5MzJdPTE5MzEKLS5bMF1bMTkzM109
MTkzMgotLlswXVsxOTM0XT0xOTMzCi0uWzBdWzE5MzVdPTE5MzQKLS5bMF1bMTkzNl09MTkzNQot
LlswXVsxOTM3XT0xOTM2Ci0uWzBdWzE5MzhdPTE5MzcKLS5bMF1bMTkzOV09MTkzOAotLlswXVsx
OTQwXT0xOTM5Ci0uWzBdWzE5NDFdPTE5NDAKLS5bMF1bMTk0Ml09MTk0MQotLlswXVsxOTQzXT0x
OTQyCi0uWzBdWzE5NDRdPTE5NDMKLS5bMF1bMTk0NV09MTk0NAotLlswXVsxOTQ2XT0xOTQ1Ci0u
WzBdWzE5NDddPTE5NDYKLS5bMF1bMTk0OF09MTk0NwotLlswXVsxOTQ5XT0xOTQ4Ci0uWzBdWzE5
NTBdPTE5NDkKLS5bMF1bMTk1MV09MTk1MAotLlswXVsxOTUyXT0xOTUxCi0uWzBdWzE5NTNdPTE5
NTIKLS5bMF1bMTk1NF09MTk1MwotLlswXVsxOTU1XT0xOTU0Ci0uWzBdWzE5NTZdPTE5NTUKLS5b
MF1bMTk1N109MTk1NgotLlswXVsxOTU4XT0xOTU3Ci0uWzBdWzE5NTldPTE5NTgKLS5bMF1bMTk2
MF09MTk1OQotLlswXVsxOTYxXT0xOTYwCi0uWzBdWzE5NjJdPTE5NjEKLS5bMF1bMTk2M109MTk2
MgotLlswXVsxOTY0XT0xOTYzCi0uWzBdWzE5NjVdPTE5NjQKLS5bMF1bMTk2Nl09MTk2NQotLlsw
XVsxOTY3XT0xOTY2Ci0uWzBdWzE5NjhdPTE5NjcKLS5bMF1bMTk2OV09MTk2OAotLlswXVsxOTcw
XT0xOTY5Ci0uWzBdWzE5NzFdPTE5NzAKLS5bMF1bMTk3Ml09MTk3MQotLlswXVsxOTczXT0xOTcy
Ci0uWzBdWzE5NzRdPTE5NzMKLS5bMF1bMTk3NV09MTk3NAotLlswXVsxOTc2XT0xOTc1Ci0uWzBd
WzE5NzddPTE5NzYKLS5bMF1bMTk3OF09MTk3NwotLlswXVsxOTc5XT0xOTc4Ci0uWzBdWzE5ODBd
PTE5NzkKLS5bMF1bMTk4MV09MTk4MAotLlswXVsxOTgyXT0xOTgxCi0uWzBdWzE5ODNdPTE5ODIK
LS5bMF1bMTk4NF09MTk4MwotLlswXVsxOTg1XT0xOTg0Ci0uWzBdWzE5ODZdPTE5ODUKLS5bMF1b
MTk4N109MTk4NgotLlswXVsxOTg4XT0xOTg3Ci0uWzBdWzE5ODldPTE5ODgKLS5bMF1bMTk5MF09
MTk4OQotLlswXVsxOTkxXT0xOTkwCi0uWzBdWzE5OTJdPTE5OTEKLS5bMF1bMTk5M109MTk5Mgot
LlswXVsxOTk0XT0xOTkzCi0uWzBdWzE5OTVdPTE5OTQKLS5bMF1bMTk5Nl09MTk5NQotLlswXVsx
OTk3XT0xOTk2Ci0uWzBdWzE5OThdPTE5OTcKLS5bMF1bMTk5OV09MTk5OAotLlswXVsyMDAwXT0x
OTk5Ci0uWzBdWzIwMDFdPTIwMDAKLS5bMF1bMjAwMl09MjAwMQotLlswXVsyMDAzXT0yMDAyCi0u
WzBdWzIwMDRdPTIwMDMKLS5bMF1bMjAwNV09MjAwNAotLlswXVsyMDA2XT0yMDA1Ci0uWzBdWzIw
MDddPTIwMDYKLS5bMF1bMjAwOF09MjAwNwotLlswXVsyMDA5XT0yMDA4Ci0uWzBdWzIwMTBdPTIw
MDkKLS5bMF1bMjAxMV09MjAxMAotLlswXVsyMDEyXT0yMDExCi0uWzBdWzIwMTNdPTIwMTIKLS5b
MF1bMjAxNF09MjAxMwotLlswXVsyMDE1XT0yMDE0Ci0uWzBdWzIwMTZdPTIwMTUKLS5bMF1bMjAx
N109MjAxNgotLlswXVsyMDE4XT0yMDE3Ci0uWzBdWzIwMTldPTIwMTgKLS5bMF1bMjAyMF09MjAx
OQotLlswXVsyMDIxXT0yMDIwCi0uWzBdWzIwMjJdPTIwMjEKLS5bMF1bMjAyM109MjAyMgotLlsw
XVsyMDI0XT0yMDIzCi0uWzBdWzIwMjVdPTIwMjQKLS5bMF1bMjAyNl09MjAyNQotLlswXVsyMDI3
XT0yMDI2Ci0uWzBdWzIwMjhdPTIwMjcKLS5bMF1bMjAyOV09MjAyOAotLlswXVsyMDMwXT0yMDI5
Ci0uWzBdWzIwMzFdPTIwMzAKLS5bMF1bMjAzMl09MjAzMQotLlswXVsyMDMzXT0yMDMyCi0uWzBd
WzIwMzRdPTIwMzMKLS5bMF1bMjAzNV09MjAzNAotLlswXVsyMDM2XT0yMDM1Ci0uWzBdWzIwMzdd
PTIwMzYKLS5bMF1bMjAzOF09MjAzNwotLlswXVsyMDM5XT0yMDM4Ci0uWzBdWzIwNDBdPTIwMzkK
LS5bMF1bMjA0MV09MjA0MAotLlswXVsyMDQyXT0yMDQxCi0uWzBdWzIwNDNdPTIwNDIKLS5bMF1b
MjA0NF09MjA0MwotLlswXVsyMDQ1XT0yMDQ0Ci0uWzBdWzIwNDZdPTIwNDUKLS5bMF1bMjA0N109
MjA0NgotLlswXVsyMDQ4XT0yMDQ3Ci0uWzBdWzIwNDldPTIwNDgKLS5bMF1bMjA1MF09MjA0OQot
LlswXVsyMDUxXT0yMDUwCi0uWzBdWzIwNTJdPTIwNTEKLS5bMF1bMjA1M109MjA1MgotLlswXVsy
MDU0XT0yMDUzCi0uWzBdWzIwNTVdPTIwNTQKLS5bMF1bMjA1Nl09MjA1NQotLlswXVsyMDU3XT0y
MDU2Ci0uWzBdWzIwNThdPTIwNTcKLS5bMF1bMjA1OV09MjA1OAotLlswXVsyMDYwXT0yMDU5Ci0u
WzBdWzIwNjFdPTIwNjAKLS5bMF1bMjA2Ml09MjA2MQotLlswXVsyMDYzXT0yMDYyCi0uWzBdWzIw
NjRdPTIwNjMKLS5bMF1bMjA2NV09MjA2NAotLlswXVsyMDY2XT0yMDY1Ci0uWzBdWzIwNjddPTIw
NjYKLS5bMF1bMjA2OF09MjA2NwotLlswXVsyMDY5XT0yMDY4Ci0uWzBdWzIwNzBdPTIwNjkKLS5b
MF1bMjA3MV09MjA3MAotLlswXVsyMDcyXT0yMDcxCi0uWzBdWzIwNzNdPTIwNzIKLS5bMF1bMjA3
NF09MjA3MwotLlswXVsyMDc1XT0yMDc0Ci0uWzBdWzIwNzZdPTIwNzUKLS5bMF1bMjA3N109MjA3
NgotLlswXVsyMDc4XT0yMDc3Ci0uWzBdWzIwNzldPTIwNzgKLS5bMF1bMjA4MF09MjA3OQotLlsw
XVsyMDgxXT0yMDgwCi0uWzBdWzIwODJdPTIwODEKLS5bMF1bMjA4M109MjA4MgotLlswXVsyMDg0
XT0yMDgzCi0uWzBdWzIwODVdPTIwODQKLS5bMF1bMjA4Nl09MjA4NQotLlswXVsyMDg3XT0yMDg2
Ci0uWzBdWzIwODhdPTIwODcKLS5bMF1bMjA4OV09MjA4OAotLlswXVsyMDkwXT0yMDg5Ci0uWzBd
WzIwOTFdPTIwOTAKLS5bMF1bMjA5Ml09MjA5MQotLlswXVsyMDkzXT0yMDkyCi0uWzBdWzIwOTRd
PTIwOTMKLS5bMF1bMjA5NV09MjA5NAotLlswXVsyMDk2XT0yMDk1Ci0uWzBdWzIwOTddPTIwOTYK
LS5bMF1bMjA5OF09MjA5NwotLlswXVsyMDk5XT0yMDk4Ci0uWzBdWzIxMDBdPTIwOTkKLS5bMF1b
MjEwMV09MjEwMAotLlswXVsyMTAyXT0yMTAxCi0uWzBdWzIxMDNdPTIxMDIKLS5bMF1bMjEwNF09
MjEwMwotLlswXVsyMTA1XT0yMTA0Ci0uWzBdWzIxMDZdPTIxMDUKLS5bMF1bMjEwN109MjEwNgot
LlswXVsyMTA4XT0yMTA3Ci0uWzBdWzIxMDldPTIxMDgKLS5bMF1bMjExMF09MjEwOQotLlswXVsy
MTExXT0yMTEwCi0uWzBdWzIxMTJdPTIxMTEKLS5bMF1bMjExM109MjExMgotLlswXVsyMTE0XT0y
MTEzCi0uWzBdWzIxMTVdPTIxMTQKLS5bMF1bMjExNl09MjExNQotLlswXVsyMTE3XT0yMTE2Ci0u
WzBdWzIxMThdPTIxMTcKLS5bMF1bMjExOV09MjExOApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9sYXJnZV8wMS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9sYXJnZV8wMS5qc29u
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGFiNGNkNDMzMGMuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X2xhcmdlXzAxLmpzb24KKysrIC9kZXYvbnVsbApA
QCAtMSwyICswLDAgQEAKLVtbIkEiLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQs
MTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMs
MzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIs
NTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEs
NzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAs
OTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEw
NywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIx
LDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3LDEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUs
MTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwx
NTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDE2
NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4
LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIs
MTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwy
MDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIy
MSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1
LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDks
MjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2Mywy
NjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3
OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjky
LDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYs
MzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwz
MjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMz
NSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5
LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMs
MzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3Nywz
NzgsMzc5LDM4MCwzODEsMzgyLDM4MywzODQsMzg1LDM4NiwzODcsMzg4LDM4OSwzOTAsMzkxLDM5
MiwzOTMsMzk0LDM5NSwzOTYsMzk3LDM5OCwzOTksNDAwLDQwMSw0MDIsNDAzLDQwNCw0MDUsNDA2
LDQwNyw0MDgsNDA5LDQxMCw0MTEsNDEyLDQxMyw0MTQsNDE1LDQxNiw0MTcsNDE4LDQxOSw0MjAs
NDIxLDQyMiw0MjMsNDI0LDQyNSw0MjYsNDI3LDQyOCw0MjksNDMwLDQzMSw0MzIsNDMzLDQzNCw0
MzUsNDM2LDQzNyw0MzgsNDM5LDQ0MCw0NDEsNDQyLDQ0Myw0NDQsNDQ1LDQ0Niw0NDcsNDQ4LDQ0
OSw0NTAsNDUxLDQ1Miw0NTMsNDU0LDQ1NSw0NTYsNDU3LDQ1OCw0NTksNDYwLDQ2MSw0NjIsNDYz
LDQ2NCw0NjUsNDY2LDQ2Nyw0NjgsNDY5LDQ3MCw0NzEsNDcyLDQ3Myw0NzQsNDc1LDQ3Niw0Nzcs
NDc4LDQ3OSw0ODAsNDgxLDQ4Miw0ODMsNDg0LDQ4NSw0ODYsNDg3LDQ4OCw0ODksNDkwLDQ5MSw0
OTIsNDkzLDQ5NCw0OTUsNDk2LDQ5Nyw0OTgsNDk5LDUwMCw1MDEsNTAyLDUwMyw1MDQsNTA1LDUw
Niw1MDcsNTA4LDUwOSw1MTAsNTExLDUxMiw1MTMsNTE0LDUxNSw1MTYsNTE3LDUxOCw1MTksNTIw
LDUyMSw1MjIsNTIzLDUyNCw1MjUsNTI2LDUyNyw1MjgsNTI5LDUzMCw1MzEsNTMyLDUzMyw1MzQs
NTM1LDUzNiw1MzcsNTM4LDUzOSw1NDAsNTQxLDU0Miw1NDMsNTQ0LDU0NSw1NDYsNTQ3LDU0OCw1
NDksNTUwLDU1MSw1NTIsNTUzLDU1NCw1NTUsNTU2LDU1Nyw1NTgsNTU5LDU2MCw1NjEsNTYyLDU2
Myw1NjQsNTY1LDU2Niw1NjcsNTY4LDU2OSw1NzAsNTcxLDU3Miw1NzMsNTc0LDU3NSw1NzYsNTc3
LDU3OCw1NzksNTgwLDU4MSw1ODIsNTgzLDU4NCw1ODUsNTg2LDU4Nyw1ODgsNTg5LDU5MCw1OTEs
NTkyLDU5Myw1OTQsNTk1LDU5Niw1OTcsNTk4LDU5OSw2MDAsNjAxLDYwMiw2MDMsNjA0LDYwNSw2
MDYsNjA3LDYwOCw2MDksNjEwLDYxMSw2MTIsNjEzLDYxNCw2MTUsNjE2LDYxNyw2MTgsNjE5LDYy
MCw2MjEsNjIyLDYyMyw2MjQsNjI1LDYyNiw2MjcsNjI4LDYyOSw2MzAsNjMxLDYzMiw2MzMsNjM0
LDYzNSw2MzYsNjM3LDYzOCw2MzksNjQwLDY0MSw2NDIsNjQzLDY0NCw2NDUsNjQ2LDY0Nyw2NDgs
NjQ5LDY1MCw2NTEsNjUyLDY1Myw2NTQsNjU1LDY1Niw2NTcsNjU4LDY1OSw2NjAsNjYxLDY2Miw2
NjMsNjY0LDY2NSw2NjYsNjY3LDY2OCw2NjksNjcwLDY3MSw2NzIsNjczLDY3NCw2NzUsNjc2LDY3
Nyw2NzgsNjc5LDY4MCw2ODEsNjgyLDY4Myw2ODQsNjg1LDY4Niw2ODcsNjg4LDY4OSw2OTAsNjkx
LDY5Miw2OTMsNjk0LDY5NSw2OTYsNjk3LDY5OCw2OTksNzAwLDcwMSw3MDIsNzAzLDcwNCw3MDUs
NzA2LDcwNyw3MDgsNzA5LDcxMCw3MTEsNzEyLDcxMyw3MTQsNzE1LDcxNiw3MTcsNzE4LDcxOSw3
MjAsNzIxLDcyMiw3MjMsNzI0LDcyNSw3MjYsNzI3LDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDcz
NCw3MzUsNzM2LDczNyw3MzgsNzM5LDc0MCw3NDEsNzQyLDc0Myw3NDQsNzQ1LDc0Niw3NDcsNzQ4
LDc0OSw3NTAsNzUxLDc1Miw3NTMsNzU0LDc1NSw3NTYsNzU3LDc1OCw3NTksNzYwLDc2MSw3NjIs
NzYzLDc2NCw3NjUsNzY2LDc2Nyw3NjgsNzY5LDc3MCw3NzEsNzcyLDc3Myw3NzQsNzc1LDc3Niw3
NzcsNzc4LDc3OSw3ODAsNzgxLDc4Miw3ODMsNzg0LDc4NSw3ODYsNzg3LDc4OCw3ODksNzkwLDc5
MSw3OTIsNzkzLDc5NCw3OTUsNzk2LDc5Nyw3OTgsNzk5LDgwMCw4MDEsODAyLDgwMyw4MDQsODA1
LDgwNiw4MDcsODA4LDgwOSw4MTAsODExLDgxMiw4MTMsODE0LDgxNSw4MTYsODE3LDgxOCw4MTks
ODIwLDgyMSw4MjIsODIzLDgyNCw4MjUsODI2LDgyNyw4MjgsODI5LDgzMCw4MzEsODMyLDgzMyw4
MzQsODM1LDgzNiw4MzcsODM4LDgzOSw4NDAsODQxLDg0Miw4NDMsODQ0LDg0NSw4NDYsODQ3LDg0
OCw4NDksODUwLDg1MSw4NTIsODUzLDg1NCw4NTUsODU2LDg1Nyw4NTgsODU5LDg2MCw4NjEsODYy
LDg2Myw4NjQsODY1LDg2Niw4NjcsODY4LDg2OSw4NzAsODcxLDg3Miw4NzMsODc0LDg3NSw4NzYs
ODc3LDg3OCw4NzksODgwLDg4MSw4ODIsODgzLDg4NCw4ODUsODg2LDg4Nyw4ODgsODg5LDg5MCw4
OTEsODkyLDg5Myw4OTQsODk1LDg5Niw4OTcsODk4LDg5OSw5MDAsOTAxLDkwMiw5MDMsOTA0LDkw
NSw5MDYsOTA3LDkwOCw5MDksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5
LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzAsOTMxLDkzMiw5MzMs
OTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5
NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2
Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCw5NzUsOTc2
LDk3Nyw5NzgsOTc5LDk4MCw5ODEsOTgyLDk4Myw5ODQsOTg1LDk4Niw5ODcsOTg4LDk4OSw5OTAs
OTkxLDk5Miw5OTMsOTk0LDk5NSw5OTYsOTk3LDk5OCw5OTksMTAwMCwxMDAxLDEwMDIsMTAwMywx
MDA0LDEwMDUsMTAwNiwxMDA3LDEwMDgsMTAwOSwxMDEwLDEwMTEsMTAxMiwxMDEzLDEwMTQsMTAx
NSwxMDE2LDEwMTcsMTAxOCwxMDE5LDEwMjAsMTAyMSwxMDIyLDEwMjMsMTAyNCwxMDI1LDEwMjYs
MTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEw
MzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5
LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwx
MDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3
MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMs
MTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEw
OTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2
LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywx
MTE4LDExMTksMTEyMCwxMTIxLDExMjIsMTEyMywxMTI0LDExMjUsMTEyNiwxMTI3LDExMjgsMTEy
OSwxMTMwLDExMzEsMTEzMiwxMTMzLDExMzQsMTEzNSwxMTM2LDExMzcsMTEzOCwxMTM5LDExNDAs
MTE0MSwxMTQyLDExNDMsMTE0NCwxMTQ1LDExNDYsMTE0NywxMTQ4LDExNDksMTE1MCwxMTUxLDEx
NTIsMTE1MywxMTU0LDExNTUsMTE1NiwxMTU3LDExNTgsMTE1OSwxMTYwLDExNjEsMTE2MiwxMTYz
LDExNjQsMTE2NSwxMTY2LDExNjcsMTE2OCwxMTY5LDExNzAsMTE3MSwxMTcyLDExNzMsMTE3NCwx
MTc1LDExNzYsMTE3NywxMTc4LDExNzksMTE4MCwxMTgxLDExODIsMTE4MywxMTg0LDExODUsMTE4
NiwxMTg3LDExODgsMTE4OSwxMTkwLDExOTEsMTE5MiwxMTkzLDExOTQsMTE5NSwxMTk2LDExOTcs
MTE5OCwxMTk5LDEyMDAsMTIwMSwxMjAyLDEyMDMsMTIwNCwxMjA1LDEyMDYsMTIwNywxMjA4LDEy
MDksMTIxMCwxMjExLDEyMTIsMTIxMywxMjE0LDEyMTUsMTIxNiwxMjE3LDEyMTgsMTIxOSwxMjIw
LDEyMjEsMTIyMiwxMjIzLDEyMjQsMTIyNSwxMjI2LDEyMjcsMTIyOCwxMjI5LDEyMzAsMTIzMSwx
MjMyLDEyMzMsMTIzNCwxMjM1LDEyMzYsMTIzNywxMjM4LDEyMzksMTI0MCwxMjQxLDEyNDIsMTI0
MywxMjQ0LDEyNDUsMTI0NiwxMjQ3LDEyNDgsMTI0OSwxMjUwLDEyNTEsMTI1MiwxMjUzLDEyNTQs
MTI1NSwxMjU2LDEyNTcsMTI1OCwxMjU5LDEyNjAsMTI2MSwxMjYyLDEyNjMsMTI2NCwxMjY1LDEy
NjYsMTI2NywxMjY4LDEyNjksMTI3MCwxMjcxLDEyNzIsMTI3MywxMjc0LDEyNzUsMTI3NiwxMjc3
LDEyNzgsMTI3OSwxMjgwLDEyODEsMTI4MiwxMjgzLDEyODQsMTI4NSwxMjg2LDEyODcsMTI4OCwx
Mjg5LDEyOTAsMTI5MSwxMjkyLDEyOTMsMTI5NCwxMjk1LDEyOTYsMTI5NywxMjk4LDEyOTksMTMw
MCwxMzAxLDEzMDIsMTMwMywxMzA0LDEzMDUsMTMwNiwxMzA3LDEzMDgsMTMwOSwxMzEwLDEzMTEs
MTMxMiwxMzEzLDEzMTQsMTMxNSwxMzE2LDEzMTcsMTMxOCwxMzE5LDEzMjAsMTMyMSwxMzIyLDEz
MjMsMTMyNCwxMzI1LDEzMjYsMTMyNywxMzI4LDEzMjksMTMzMCwxMzMxLDEzMzIsMTMzMywxMzM0
LDEzMzUsMTMzNiwxMzM3LDEzMzgsMTMzOSwxMzQwLDEzNDEsMTM0MiwxMzQzLDEzNDQsMTM0NSwx
MzQ2LDEzNDcsMTM0OCwxMzQ5LDEzNTAsMTM1MSwxMzUyLDEzNTMsMTM1NCwxMzU1LDEzNTYsMTM1
NywxMzU4LDEzNTksMTM2MCwxMzYxLDEzNjIsMTM2MywxMzY0LDEzNjUsMTM2NiwxMzY3LDEzNjgs
MTM2OSwxMzcwLDEzNzEsMTM3MiwxMzczLDEzNzQsMTM3NSwxMzc2LDEzNzcsMTM3OCwxMzc5LDEz
ODAsMTM4MSwxMzgyLDEzODMsMTM4NCwxMzg1LDEzODYsMTM4NywxMzg4LDEzODksMTM5MCwxMzkx
LDEzOTIsMTM5MywxMzk0LDEzOTUsMTM5NiwxMzk3LDEzOTgsMTM5OSwxNDAwLDE0MDEsMTQwMiwx
NDAzLDE0MDQsMTQwNSwxNDA2LDE0MDcsMTQwOCwxNDA5LDE0MTAsMTQxMSwxNDEyLDE0MTMsMTQx
NCwxNDE1LDE0MTYsMTQxNywxNDE4LDE0MTksMTQyMCwxNDIxLDE0MjIsMTQyMywxNDI0LDE0MjUs
MTQyNiwxNDI3LDE0MjgsMTQyOSwxNDMwLDE0MzEsMTQzMiwxNDMzLDE0MzQsMTQzNSwxNDM2LDE0
MzcsMTQzOCwxNDM5LDE0NDAsMTQ0MSwxNDQyLDE0NDMsMTQ0NCwxNDQ1LDE0NDYsMTQ0NywxNDQ4
LDE0NDksMTQ1MCwxNDUxLDE0NTIsMTQ1MywxNDU0LDE0NTUsMTQ1NiwxNDU3LDE0NTgsMTQ1OSwx
NDYwLDE0NjEsMTQ2MiwxNDYzLDE0NjQsMTQ2NSwxNDY2LDE0NjcsMTQ2OCwxNDY5LDE0NzAsMTQ3
MSwxNDcyLDE0NzMsMTQ3NCwxNDc1LDE0NzYsMTQ3NywxNDc4LDE0NzksMTQ4MCwxNDgxLDE0ODIs
MTQ4MywxNDg0LDE0ODUsMTQ4NiwxNDg3LDE0ODgsMTQ4OSwxNDkwLDE0OTEsMTQ5MiwxNDkzLDE0
OTQsMTQ5NSwxNDk2LDE0OTcsMTQ5OCwxNDk5LDE1MDAsMTUwMSwxNTAyLDE1MDMsMTUwNCwxNTA1
LDE1MDYsMTUwNywxNTA4LDE1MDksMTUxMCwxNTExLDE1MTIsMTUxMywxNTE0LDE1MTUsMTUxNiwx
NTE3LDE1MTgsMTUxOSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsMTUyNSwxNTI2LDE1MjcsMTUy
OCwxNTI5LDE1MzAsMTUzMSwxNTMyLDE1MzMsMTUzNCwxNTM1LDE1MzYsMTUzNywxNTM4LDE1Mzks
MTU0MCwxNTQxLDE1NDIsMTU0MywxNTQ0LDE1NDUsMTU0NiwxNTQ3LDE1NDgsMTU0OSwxNTUwLDE1
NTEsMTU1MiwxNTUzLDE1NTQsMTU1NSwxNTU2LDE1NTcsMTU1OCwxNTU5LDE1NjAsMTU2MSwxNTYy
LDE1NjMsMTU2NCwxNTY1LDE1NjYsMTU2NywxNTY4LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3Mywx
NTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4
NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMTU5MSwxNTkyLDE1OTMsMTU5NCwxNTk1LDE1OTYs
MTU5NywxNTk4LDE1OTksMTYwMCwxNjAxLDE2MDIsMTYwMywxNjA0LDE2MDUsMTYwNiwxNjA3LDE2
MDgsMTYwOSwxNjEwLDE2MTEsMTYxMiwxNjEzLDE2MTQsMTYxNSwxNjE2LDE2MTcsMTYxOCwxNjE5
LDE2MjAsMTYyMSwxNjIyLDE2MjMsMTYyNCwxNjI1LDE2MjYsMTYyNywxNjI4LDE2MjksMTYzMCwx
NjMxLDE2MzIsMTYzMywxNjM0LDE2MzUsMTYzNiwxNjM3LDE2MzgsMTYzOSwxNjQwLDE2NDEsMTY0
MiwxNjQzLDE2NDQsMTY0NSwxNjQ2LDE2NDcsMTY0OCwxNjQ5LDE2NTAsMTY1MSwxNjUyLDE2NTMs
MTY1NCwxNjU1LDE2NTYsMTY1NywxNjU4LDE2NTksMTY2MCwxNjYxLDE2NjIsMTY2MywxNjY0LDE2
NjUsMTY2NiwxNjY3LDE2NjgsMTY2OSwxNjcwLDE2NzEsMTY3MiwxNjczLDE2NzQsMTY3NSwxNjc2
LDE2NzcsMTY3OCwxNjc5LDE2ODAsMTY4MSwxNjgyLDE2ODMsMTY4NCwxNjg1LDE2ODYsMTY4Nywx
Njg4LDE2ODksMTY5MCwxNjkxLDE2OTIsMTY5MywxNjk0LDE2OTUsMTY5NiwxNjk3LDE2OTgsMTY5
OSwxNzAwLDE3MDEsMTcwMiwxNzAzLDE3MDQsMTcwNSwxNzA2LDE3MDcsMTcwOCwxNzA5LDE3MTAs
MTcxMSwxNzEyLDE3MTMsMTcxNCwxNzE1LDE3MTYsMTcxNywxNzE4LDE3MTksMTcyMCwxNzIxLDE3
MjIsMTcyMywxNzI0LDE3MjUsMTcyNiwxNzI3LDE3MjgsMTcyOSwxNzMwLDE3MzEsMTczMiwxNzMz
LDE3MzQsMTczNSwxNzM2LDE3MzcsMTczOCwxNzM5LDE3NDAsMTc0MSwxNzQyLDE3NDMsMTc0NCwx
NzQ1LDE3NDYsMTc0NywxNzQ4LDE3NDksMTc1MCwxNzUxLDE3NTIsMTc1MywxNzU0LDE3NTUsMTc1
NiwxNzU3LDE3NTgsMTc1OSwxNzYwLDE3NjEsMTc2MiwxNzYzLDE3NjQsMTc2NSwxNzY2LDE3Njcs
MTc2OCwxNzY5LDE3NzAsMTc3MSwxNzcyLDE3NzMsMTc3NCwxNzc1LDE3NzYsMTc3NywxNzc4LDE3
NzksMTc4MCwxNzgxLDE3ODIsMTc4MywxNzg0LDE3ODUsMTc4NiwxNzg3LDE3ODgsMTc4OSwxNzkw
LDE3OTEsMTc5MiwxNzkzLDE3OTQsMTc5NSwxNzk2LDE3OTcsMTc5OCwxNzk5LDE4MDAsMTgwMSwx
ODAyLDE4MDMsMTgwNCwxODA1LDE4MDYsMTgwNywxODA4LDE4MDksMTgxMCwxODExLDE4MTIsMTgx
MywxODE0LDE4MTUsMTgxNiwxODE3LDE4MTgsMTgxOSwxODIwLDE4MjEsMTgyMiwxODIzLDE4MjQs
MTgyNSwxODI2LDE4MjcsMTgyOCwxODI5LDE4MzAsMTgzMSwxODMyLDE4MzMsMTgzNCwxODM1LDE4
MzYsMTgzNywxODM4LDE4MzksMTg0MCwxODQxLDE4NDIsMTg0MywxODQ0LDE4NDUsMTg0NiwxODQ3
LDE4NDgsMTg0OSwxODUwLDE4NTEsMTg1MiwxODUzLDE4NTQsMTg1NSwxODU2LDE4NTcsMTg1OCwx
ODU5LDE4NjAsMTg2MSwxODYyLDE4NjMsMTg2NCwxODY1LDE4NjYsMTg2NywxODY4LDE4NjksMTg3
MCwxODcxLDE4NzIsMTg3MywxODc0LDE4NzUsMTg3NiwxODc3LDE4NzgsMTg3OSwxODgwLDE4ODEs
MTg4MiwxODgzLDE4ODQsMTg4NSwxODg2LDE4ODcsMTg4OCwxODg5LDE4OTAsMTg5MSwxODkyLDE4
OTMsMTg5NCwxODk1LDE4OTYsMTg5NywxODk4LDE4OTksMTkwMCwxOTAxLDE5MDIsMTkwMywxOTA0
LDE5MDUsMTkwNiwxOTA3LDE5MDgsMTkwOSwxOTEwLDE5MTEsMTkxMiwxOTEzLDE5MTQsMTkxNSwx
OTE2LDE5MTcsMTkxOCwxOTE5LDE5MjAsMTkyMSwxOTIyLDE5MjMsMTkyNCwxOTI1LDE5MjYsMTky
NywxOTI4LDE5MjksMTkzMCwxOTMxLDE5MzIsMTkzMywxOTM0LDE5MzUsMTkzNiwxOTM3LDE5Mzgs
MTkzOSwxOTQwLDE5NDEsMTk0MiwxOTQzLDE5NDQsMTk0NSwxOTQ2LDE5NDcsMTk0OCwxOTQ5LDE5
NTAsMTk1MSwxOTUyLDE5NTMsMTk1NCwxOTU1LDE5NTYsMTk1NywxOTU4LDE5NTksMTk2MCwxOTYx
LDE5NjIsMTk2MywxOTY0LDE5NjUsMTk2NiwxOTY3LDE5NjgsMTk2OSwxOTcwLDE5NzEsMTk3Miwx
OTczLDE5NzQsMTk3NSwxOTc2LDE5NzcsMTk3OCwxOTc5LDE5ODAsMTk4MSwxOTgyLDE5ODMsMTk4
NCwxOTg1LDE5ODYsMTk4NywxOTg4LDE5ODksMTk5MCwxOTkxLDE5OTIsMTk5MywxOTk0LDE5OTUs
MTk5NiwxOTk3LDE5OTgsMTk5OSwyMDAwLDIwMDEsMjAwMiwyMDAzLDIwMDQsMjAwNSwyMDA2LDIw
MDcsMjAwOCwyMDA5LDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCwyMDE1LDIwMTYsMjAxNywyMDE4
LDIwMTksMjAyMCwyMDIxLDIwMjIsMjAyMywyMDI0LDIwMjUsMjAyNiwyMDI3LDIwMjgsMjAyOSwy
MDMwLDIwMzEsMjAzMiwyMDMzLDIwMzQsMjAzNSwyMDM2LDIwMzcsMjAzOCwyMDM5LDIwNDAsMjA0
MSwyMDQyLDIwNDMsMjA0NCwyMDQ1LDIwNDYsMjA0NywyMDQ4LDIwNDksMjA1MCwyMDUxLDIwNTIs
MjA1MywyMDU0LDIwNTUsMjA1NiwyMDU3LDIwNTgsMjA1OSwyMDYwLDIwNjEsMjA2MiwyMDYzLDIw
NjQsMjA2NSwyMDY2LDIwNjcsMjA2OCwyMDY5LDIwNzAsMjA3MSwyMDcyLDIwNzMsMjA3NCwyMDc1
LDIwNzYsMjA3NywyMDc4LDIwNzksMjA4MCwyMDgxLDIwODIsMjA4MywyMDg0LDIwODUsMjA4Niwy
MDg3LDIwODgsMjA4OSwyMDkwLDIwOTEsMjA5MiwyMDkzLDIwOTQsMjA5NSwyMDk2LDIwOTcsMjA5
OCwyMDk5LDIxMDAsMjEwMSwyMTAyLDIxMDMsMjEwNCwyMTA1LDIxMDYsMjEwNywyMTA4LDIxMDks
MjExMCwyMTExLDIxMTIsMjExMywyMTE0LDIxMTUsMjExNiwyMTE3LDIxMThdCi1dClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmpl
Y3RfMDEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMS5leHBlY3RlZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0NDRlNTc5NGVmLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDEuZXhwZWN0ZWQKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi0uPXt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29i
amVjdF8wMS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDEuanNvbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2N2VmNDI0YmNlLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDEuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICsw
LDAgQEAKLXt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMi5leHBl
Y3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3OTM5MWMyYTZjYmQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMi5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIg
KzAsMCBAQAotLj17fQotLmNvdW50PTEyMzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3Rfb2JqZWN0XzAyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMi5qc29uCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGYyZmFjYWMzNjkuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMi5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAoteyAiY291bnQiIDogMTIzNCB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X29iamVjdF8wMy5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAz
LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTk2MTEzNzkyZDUuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wMy5leHBlY3RlZAor
KysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotLj17fQotLmF0dHJpYnV0ZT0icmFuZG9tIgot
LmNvdW50PTEyMzQKLS5uYW1lPSJ0ZXN0IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9vYmplY3RfMDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAzLmpzb24KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmY2Q0ZDgyMWQ0MC4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzAzLmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSw1ICswLDAgQEAKLXsgCi0JImNvdW50IiA6IDEyMzQsCi0JIm5hbWUiIDogInRlc3QiLAotCSJh
dHRyaWJ1dGUiIDogInJhbmRvbSIKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
b2JqZWN0XzA0LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9vYmplY3RfMDQuZXhwZWN0
ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMjk2NWIwY2FhZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfb2JqZWN0XzA0LmV4cGVjdGVkCisrKyAvZGV2
L251bGwKQEAgLTEsMiArMCwwIEBACi0uPXt9Ci0uPTEyMzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3Rfb2JqZWN0XzA0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8w
NC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTA3NjJkNzFlNTkuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X29iamVjdF8wNC5qc29uCisrKyAvZGV2
L251bGwKQEAgLTEsMyArMCwwIEBACi17IAotCSIiIDogMTIzNAotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9wcmVzZXJ2ZV9jb21tZW50XzAxLmV4cGVjdGVkIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9wcmVzZXJ2ZV9jb21tZW50XzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNzk3YWE3ZDZiZWQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3ByZXNlcnZlX2NvbW1lbnRfMDEuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMSArMCwwIEBACi0vKiBBIGNvbW1lbnQKLSAgIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZp
bGUuCi0gKi8KLS49e30KLS5maXJzdD0xCi0vKiBDb21tZW50IGJlZm9yZSAnc2Vjb25kJwotICov
Ci0uc2Vjb25kPTIKLS8qIEEgY29tbWVudCBhdCAKLSAgIHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0g
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcHJlc2VydmVfY29tbWVudF8wMS5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9wcmVzZXJ2ZV9jb21tZW50XzAxLmpzb24KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYmQ1NWRkOTY2My4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfcHJlc2VydmVfY29tbWVudF8wMS5qc29uCisrKyAvZGV2L251
bGwKQEAgLTEsMTQgKzAsMCBAQAotLyogQSBjb21tZW50Ci0gICBhdCB0aGUgYmVnaW5uaW5nIG9m
IHRoZSBmaWxlLgotICovCi17Ci0gICAiZmlyc3QiIDogMSwgLy8gY29tbWVudCBhZnRlciAnZmly
c3QnIG9uIHRoZSBzYW1lIGxpbmUKLQotLyogQ29tbWVudCBiZWZvcmUgJ3NlY29uZCcKLSAqLwot
ICAgInNlY29uZCIgOiAyCi19Ci0KLS8qIEEgY29tbWVudCBhdCAKLSAgIHRoZSBlbmQgb2YgdGhl
IGZpbGUuCi0gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wMS5leHBl
Y3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wMS5leHBlY3RlZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTUxNDgyNzA4YTBhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9yZWFsXzAxLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0vLyAyXjMzID0+IG91dCBvZiBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlCi0u
PTg1ODk5MzQ1OTIKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAxLmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzU4NDUyZDM4NzgwLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9yZWFsXzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIDJe
MzMgPT4gb3V0IG9mIGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3VibGUKLTg1ODk5MzQ1OTIK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAyLmV4cGVjdGVkIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiODBjMDA0ODExOTQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X3JlYWxfMDIuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIC0y
XjMyID0+IG91dCBvZiBzaWduZWQgaW50ZWdlciByYW5nZSwgc3dpdGNoIHRvIGRvdWJsZQotLj0t
NDI5NDk2NzI5NQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDIuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wMi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MzZjNzA2YjY4ZWMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X3JlYWxfMDIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gLTJe
MzIgPT4gb3V0IG9mIHNpZ25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlCi0tNDI5
NDk2NzI5NQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDMuZXhwZWN0
ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDMuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI4MGMwMDQ4MTE5NC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfcmVhbF8wMy5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotLy8gLTJeMzIgPT4gb3V0IG9mIHNpZ25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8gZG91
YmxlCi0uPS00Mjk0OTY3Mjk1Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8wMy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzAzLmpzb24KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkzNmM3MDZiNjhlYy4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfcmVhbF8wMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci0vLyAtMl4zMiA9PiBvdXQgb2Ygc2lnbmVkIGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3Vi
bGUKLS00Mjk0OTY3Mjk1Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8w
NC5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNC5leHBlY3RlZApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY3MWEyM2UxNDE1Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA0LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEs
MyArMCwwIEBACi0vLyAxLjIzNDU2NzgKLS49MS4yMzQ1Njc4Ci0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfcmVhbF8wNC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA0
Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZWI2ZDBjOTJjZi4uMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNC5qc29uCisrKyAvZGV2L251
bGwKQEAgLTEsMyArMCwwIEBACi0vLyAxLjIzNDU2NzgKLTEyMzQ1Njc4ZS03Ci0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRh
L3Rlc3RfcmVhbF8wNS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E0
NjA5MzJkN2I3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1
LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vLyAxMjM0NTY3LjgKLS49
MTIzNDU2Ny44Ci0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA1Lmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDUuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjc5MjNiYWI4OTgxLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9yZWFsXzA1Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8vIDEy
MzQ1NjcuOAotMC4xMjM0NTY3OGU3Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
cmVhbF8wNi5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNi5leHBlY3RlZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRhMDA0ZGViMTQwLi4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA2LmV4cGVjdGVkCisrKyAvZGV2L251bGwK
QEAgLTEsNCArMCwwIEBACi0vLyAtMS4yMzQ1Njc4Ci0uPS0xLjIzNDU2NzgKLQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfcmVhbF8wNi5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODU0MTlhMjc2
YzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDYuanNvbgor
KysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLy8gLTEuMjM0NTY3OAotLTEyMzQ1Njc4ZS03
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNy5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNy5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGMwMmE4OTU4MzExLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9yZWFsXzA3LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vLyAt
MTIzNDU2Ny44Ci0uPS0xMjM0NTY3LjgKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90
ZXN0X3JlYWxfMDcuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wNy5qc29uCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDEzZWI1YzlhNDMuLjAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDcuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotLy8gLTEyMzQ1NjcuOAotLTAuMTIzNDU2NzhlNwotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDguZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3Jl
YWxfMDguZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZGVlZjkxOWU5
NS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8wOC5leHBlY3Rl
ZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotLy8gT3V0IG9mIDMyLWJpdCBpbnRlZ2Vy
IHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlIGluIDMyLWJpdCBtb2RlLiBMZW5ndGggdGhlCi0vLyBz
YW1lIGFzIFVJTlRfTUFYIGluIGJhc2UgMTAgYW5kIGRpZ2l0IGxlc3MgdGhhbiBVSU5UX01BWCdz
IGxhc3QgZGlnaXQgaW4KLS8vIG9yZGVyIHRvIGNhdGNoIGEgYnVnIGluIHRoZSBwYXJzaW5nIGNv
ZGUuCi0uPTQzMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8w
OC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA4Lmpzb24KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNjYTk1MGQ5MzllYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9kYXRhL3Rlc3RfcmVhbF8wOC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0v
LyBPdXQgb2YgMzItYml0IGludGVnZXIgcmFuZ2UsIHN3aXRjaCB0byBkb3VibGUgaW4gMzItYml0
IG1vZGUuIExlbmd0aCB0aGUKLS8vIHNhbWUgYXMgVUlOVF9NQVggaW4gYmFzZSAxMCBhbmQgZGln
aXQgbGVzcyB0aGFuIFVJTlRfTUFYJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3JkZXIgdG8gY2F0Y2gg
YSBidWcgaW4gdGhlIHBhcnNpbmcgY29kZS4KLTQzMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3RfcmVhbF8wOS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8wOS5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEyZGJiMjg0OWQy
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA5LmV4cGVjdGVk
CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vLyBPdXQgb2YgNjQtYml0IGludGVnZXIg
cmFuZ2UsIHN3aXRjaCB0byBkb3VibGUgaW4gYWxsIG1vZGVzLiBMZW5ndGggdGhlIHNhbWUKLS8v
IGFzIFVMT05HX01BWCBpbiBiYXNlIDEwIGFuZCBkaWdpdCBsZXNzIHRoYW4gVUxPTkdfTUFYJ3Mg
bGFzdCBkaWdpdCBpbiBvcmRlcgotLy8gdG8gY2F0Y2ggYSBidWcgaW4gdGhlIHBhcnNpbmcgY29k
ZS4KLS49MS45ZSsxOQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzA5Lmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMDkuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTY1ZDUwYzk3YzZmLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2Rh
dGEvdGVzdF9yZWFsXzA5Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS8vIE91
dCBvZiA2NC1iaXQgaW50ZWdlciByYW5nZSwgc3dpdGNoIHRvIGRvdWJsZSBpbiBhbGwgbW9kZXMu
IExlbmd0aCB0aGUgc2FtZQotLy8gYXMgVUxPTkdfTUFYIGluIGJhc2UgMTAgYW5kIGRpZ2l0IGxl
c3MgdGhhbiBVTE9OR19NQVgncyBsYXN0IGRpZ2l0IGluIG9yZGVyCi0vLyB0byBjYXRjaCBhIGJ1
ZyBpbiB0aGUgcGFyc2luZyBjb2RlLgotMTkwMDAwMDAwMDAwMDAwMDAwMDEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMC5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfcmVhbF8xMC5leHBlY3RlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI4YTQz
MGVhYjRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEwLmV4
cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0vLyBPdXQgb2YgMzItYml0IHNp
Z25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8gZG91YmxlIGluIGFsbCBtb2Rlcy4gTGVuZ3Ro
Ci0vLyB0aGUgc2FtZSBhcyBJTlRfTUlOIGluIGJhc2UgMTAgYW5kIGRpZ2l0IGxlc3MgdGhhbiBJ
TlRfTUlOJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3JkZXIgdG8gY2F0Y2ggYSBidWcgaW4gdGhlIHBh
cnNpbmcgY29kZS4KLS49LTIyMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3RfcmVhbF8xMC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEwLmpzb24KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YThiY2VmNTBmNC4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi0vLyBPdXQgb2YgMzItYml0IHNpZ25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0Y2ggdG8g
ZG91YmxlIGluIGFsbCBtb2Rlcy4gTGVuZ3RoCi0vLyB0aGUgc2FtZSBhcyBJTlRfTUlOIGluIGJh
c2UgMTAgYW5kIGRpZ2l0IGxlc3MgdGhhbiBJTlRfTUlOJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3Jk
ZXIgdG8gY2F0Y2ggYSBidWcgaW4gdGhlIHBhcnNpbmcgY29kZS4KLS0yMjAwMDAwMDAxCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3JlYWxfMTEuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3JlYWxfMTEuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDI1NTE5NDZmNTJmNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVh
bF8xMS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotLy8gT3V0IG9mIDY0
LWJpdCBzaWduZWQgaW50ZWdlciByYW5nZSwgc3dpdGNoIHRvIGRvdWJsZSBpbiBhbGwgbW9kZXMu
IExlbmd0aAotLy8gdGhlIHNhbWUgYXMgTE9OR19NSU4gaW4gYmFzZSAxMCBhbmQgZGlnaXQgbGVz
cyB0aGFuIExPTkdfTUlOJ3MgbGFzdCBkaWdpdCBpbgotLy8gb3JkZXIgdG8gY2F0Y2ggYSBidWcg
aW4gdGhlIHBhcnNpbmcgY29kZS4KLS49LTkuM2UrMTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9k
YXRhL3Rlc3RfcmVhbF8xMS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzExLmpzb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2RiMzZmNGVjZC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMS5qc29uCisrKyAvZGV2L251bGwKQEAg
LTEsNCArMCwwIEBACi0vLyBPdXQgb2YgNjQtYml0IHNpZ25lZCBpbnRlZ2VyIHJhbmdlLCBzd2l0
Y2ggdG8gZG91YmxlIGluIGFsbCBtb2Rlcy4gTGVuZ3RoCi0vLyB0aGUgc2FtZSBhcyBMT05HX01J
TiBpbiBiYXNlIDEwIGFuZCBkaWdpdCBsZXNzIHRoYW4gTE9OR19NSU4ncyBsYXN0IGRpZ2l0IGlu
Ci0vLyBvcmRlciB0byBjYXRjaCBhIGJ1ZyBpbiB0aGUgcGFyc2luZyBjb2RlLgotLTkzMDAwMDAw
MDAwMDAwMDAwMDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMi5leHBl
Y3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3RfcmVhbF8xMi5leHBlY3RlZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTNlMjQxN2QzNDI0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2RhdGEvdGVzdF9yZWFsXzEyLmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi0vLyAyXjY0IC0+IHN3aXRjaCB0byBkb3VibGUuCi0uPTEuODQ0Njc0NDA3MzcwOTU1ZSsx
OQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFsXzEyLmpzb24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvZGF0YS90ZXN0X3JlYWxfMTIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGExM2VlZDIyMDBiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9yZWFs
XzEyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLS8vIDJeNjQgLT4gc3dpdGNo
IHRvIGRvdWJsZS4KLTE4NDQ2NzQ0MDczNzA5NTUxNjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3N0cmluZ18wMS5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5n
XzAxLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmQzN2IxZTBlN2Qu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMS5leHBlY3Rl
ZAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLS49IiEiIyQlJicoKSorLC0uLzAxMjM0NTY3
ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ent8fX4iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
c3RyaW5nXzAxLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZDBkYjQ0ZGZj
Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAxLmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0iIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6
Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXp7fH1+IgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIu
ZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMi5leHBlY3RlZApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0M2JjMzY0OWRiLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi0uPSIhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUm
JygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5f
YGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6
Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygp
KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9
Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygpKiss
LS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ent8fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygpKissLS4v
MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8
fX4hIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX
WFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygpKissLS4vMDEy
MzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4h
IiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
W1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1
Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ3eHl6e3x9fiEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hIiMk
JSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xd
Xl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9z
dHJpbmdfMDIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3ZTVkY2FkNDM5
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDIuanNvbgor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSIhXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7
PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUm
JygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1e
X2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIj
JCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltc
XF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1
Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4h
XCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEy
MzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNE
RUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8
fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4v
MDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKiss
LS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+
P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q
UVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygp
KissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2Bh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4hXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7
PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ent8fX4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMy5l
eHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmV4cGVjdGVkCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWQ2MjdhODUwMzEuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wMy5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0x
ICswLDAgQEAKLS49Imh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5ldC8iClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdf
MDMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmpzb24KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJkMzgxODBhZWExNC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzAzLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci0iaHR0cDpcL1wvanNvbmNwcC5zb3VyY2Vmb3JnZS5uZXRcLyIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0LmV4cGVjdGVkIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9z
dHJpbmdfMDQuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1N2Q1MjU2
YzQ5Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0LmV4
cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPSIiYWJjXGRlZiIiCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA0Lmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3N0cmluZ18wNC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MWZlNzUyNGNlYjcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmlu
Z18wNC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0iXCJhYmNcXGRlZlwiIgot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNS5leHBlY3RlZCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nXzA1LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5Nzk0ZGRkYjRkNzkuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0
YS90ZXN0X3N0cmluZ18wNS5leHBlY3RlZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
Lj0iXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcIgotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ18wNS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9zdHJpbmdfMDUuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1NjAyNGQ1
YWU1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfMDUuanNv
bgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIlxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCIK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMS5leHBl
Y3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDEuZXhwZWN0ZWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmM2JlN2ZiNjg3My4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDEuZXhwZWN0ZWQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi0uPSJhIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEv
dGVzdF9zdHJpbmdfdW5pY29kZV8wMS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdf
dW5pY29kZV8wMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjQxMTRiYzA5
NWYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2Rl
XzAxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0iXHUwMDYxIgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5n
X3VuaWNvZGVfMDIuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2Rl
XzAyLmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzg4ZjUzOTQzMmEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAy
LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotLj0iwqIiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAv
c291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAyLmpzb24gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
ZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAyLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ5NjEwMjRmYWI0My4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3Rfc3RyaW5nX3VuaWNvZGVfMDIuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSJc
dTAwQTIiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wMy5leHBlY3RlZCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rl
c3Rfc3RyaW5nX3VuaWNvZGVfMDMuZXhwZWN0ZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDliODBiMjcxOWYxOS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rf
c3RyaW5nX3VuaWNvZGVfMDMuZXhwZWN0ZWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0u
PSLigqwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAz
Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzAzLmpzb24KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZTFhOWUxMzg4YS4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDMuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLSJcdTIwQUMiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8wNC5leHBlY3RlZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDQuZXhwZWN0ZWQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZTdmZTNiN2Q1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9kYXRhL3Rlc3Rfc3RyaW5nX3VuaWNvZGVfMDQuZXhwZWN0ZWQKKysrIC9kZXYvbnVs
bApAQCAtMSArMCwwIEBACi0uPSLwnYSeIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVz
dF9zdHJpbmdfdW5pY29kZV8wNC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5p
Y29kZV8wNC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWU2NWM1MTU1NDYu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA0
Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0iXHVEODM0XHVERDFFIgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9kYXRhL3Rlc3Rfc3Ry
aW5nX3VuaWNvZGVfMDUuZXhwZWN0ZWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmlj
b2RlXzA1LmV4cGVjdGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmU2N2Y5OTgx
OWEuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2Rl
XzA1LmV4cGVjdGVkCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0uPSJaYcW8w7PFgsSH
IGfEmcWbbMSFIGphxbrFhCIKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJp
bmdfdW5pY29kZV8wNS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2RhdGEvdGVzdF9zdHJpbmdfdW5pY29kZV8w
NS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzcwNDEwOTQ2MmMuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvZGF0YS90ZXN0X3N0cmluZ191bmljb2RlXzA1Lmpzb24K
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0iWmHFvMOzxYLEhyBnxJnFm2zEhSBqYcW6xYQi
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2dlbmVy
YXRlX2V4cGVjdGVkLnB5IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2dlbmVyYXRlX2V4cGVjdGVkLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDQ5YWI1ZjRkMTIuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvZ2VuZXJhdGVfZXhwZWN0ZWQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww
IEBACi0jIENvcHlyaWdodCAyMDA3IEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAg
QXV0aG9ycwotIyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFp
biBpZiBkZXNpcmVkIGFuZAotIyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotIyBT
ZWUgZmlsZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3Vy
Y2Vmb3JnZS5uZXQvTElDRU5TRQotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0
aW9uCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zLnBhdGgKLWZvciBwYXRoIGluIGdsb2IuZ2xvYign
Ki5qc29uJyk6Ci0gICAgdGV4dCA9IGZpbGUocGF0aCwncnQnKS5yZWFkKCkKLSAgICB0YXJnZXQg
PSBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzBdICsgJy5leHBlY3RlZCcKLSAgICBpZiBvcy5wYXRo
LmV4aXN0cyh0YXJnZXQpOgotICAgICAgICBwcmludCgnc2tpcHBpbmc6JywgdGFyZ2V0KQotICAg
IGVsc2U6Ci0gICAgICAgIHByaW50KCdjcmVhdGluZzonLCB0YXJnZXQpCi0gICAgICAgIGZpbGUo
dGFyZ2V0LCd3dCcpLndyaXRlKHRleHQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxLmpzb24KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMTZiODY1ZjEwMi4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotIkEgSlNPTiBwYXlsb2FkIHNob3VsZCBiZSBhbiBvYmplY3Qgb3IgYXJyYXksIG5vdCBh
IHN0cmluZy4iClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwxMC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwx
MC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhjMDA0N2JkNTIuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDEwLmpzb24KKysrIC9kZXYv
bnVsbApAQCAtMSArMCwwIEBACi17IkV4dHJhIHZhbHVlIGFmdGVyIGNsb3NlIjogdHJ1ZX0gIm1p
c3BsYWNlZCBxdW90ZWQgdmFsdWUiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMS5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25j
aGVja2VyL2ZhaWwxMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmViOTVi
NDU4M2MuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDExLmpz
b24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17IklsbGVnYWwgZXhwcmVzc2lvbiI6IDEg
KyAyfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9q
c29uY2hlY2tlci9mYWlsMTIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTIuanNv
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc1ODBhNDUyMmQ4Li4wMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9q
c29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxMi5qc29uCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAoteyJJbGxlZ2FsIGludm9jYXRpb24iOiBhbGVydCgpfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWls
MTMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTMuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzc5NDA2YjU5YmRiLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwxMy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
eyJOdW1iZXJzIGNhbm5vdCBoYXZlIGxlYWRpbmcgemVyb2VzIjogMDEzfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTQu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNv
bmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTQuanNvbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGVkMzY2YjM4YTM0Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2pzb25jaGVja2VyL2ZhaWwxNC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJO
dW1iZXJzIGNhbm5vdCBiZSBoZXgiOiAweDE0fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTUuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9qc29uY2hlY2tlci9mYWlsMTUuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmM4Mzc2YjYwNWRhLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwxNS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJJbGxlZ2FsIGJhY2tzbGFz
aCBlc2NhcGU6IFx4MTUiXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tl
ci9mYWlsMTYuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlMjFkNGI1MzI0
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxNi5qc29uCisr
KyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotW1xuYWtlZF0KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE3Lmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE3Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDYyYjkyMTRhZWRhNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMTcuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiSWxsZWdhbCBi
YWNrc2xhc2ggZXNjYXBlOiBcMDE3Il0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDE4Lmpzb24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDE4Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkYWM5
MjcxNmYxOC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMTgu
anNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVtbW1tbW1tbW1tbW1tbW1tbW1tbIlRv
byBkZWVwIl1dXV1dXV1dXV1dXV1dXV1dXV1dClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwxOS5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2pzb25jaGVja2VyL2ZhaWwxOS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YjljNDZmYTlhMjkuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFp
bDE5Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17Ik1pc3NpbmcgY29sb24iIG51
bGx9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWwyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIuanNvbgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI3YzExZTVhNTY1Li4wMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyLmpzb24KKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi1bIlVuY2xvc2VkIGFycmF5IgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjAuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9qc29uY2hlY2tlci9mYWlsMjAuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjdjMWFmM2U3MmVlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwyMC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAoteyJEb3VibGUgY29sb24iOjog
bnVsbH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
anNvbmNoZWNrZXIvZmFpbDIxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIxLmpz
b24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNDc0NTczYjIxNi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjEuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLXsiQ29tbWEgaW5zdGVhZCBvZiBjb2xvbiIsIG51bGx9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwyMi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyMi5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNzc1MjU4MWJjZjcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci1bIkNvbG9uIGluc3RlYWQgb2YgY29tbWEiOiBmYWxzZV0KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIzLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDIzLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ5NGFkZDFjYTE5MC4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMjMuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiQmFkIHZhbHVl
IiwgdHJ1dGhdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwyNC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwy
NC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWZmMjM5YmZjMzYuLjAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI0Lmpzb24KKysrIC9kZXYv
bnVsbApAQCAtMSArMCwwIEBACi1bJ3NpbmdsZSBxdW90ZSddClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNS5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4YjdhZDIzZTAxMDMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNo
ZWNrZXIvZmFpbDI1Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bIgl0YWIJY2hh
cmFjdGVyCWluCXN0cmluZwkiXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjYuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hl
Y2tlci9mYWlsMjYuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ1ZDI2YTZh
NTQzLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyNi5qc29u
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotWyJ0YWJcICAgY2hhcmFjdGVyXCAgIGluXCAg
c3RyaW5nXCAgIl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI3Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFp
bDI3Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMDFhMmNhNGE5Ny4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjcuanNvbgorKysgL2Rl
di9udWxsCkBAIC0xLDIgKzAsMCBAQAotWyJsaW5lCi1icmVhayJdClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyOC5qc29u
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwyOC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2MjFhMDEwMWM2NjQuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDI4Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVsibGlu
ZVwKLWJyZWFrIl0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDI5Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFp
bDI5Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZWM0MjFiYjYyNC4uMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMjkuanNvbgorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLVswZV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9q
c29uY2hlY2tlci9mYWlsMy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjhj
ODFlYjc4NTMuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMu
anNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXt1bnF1b3RlZF9rZXk6ICJrZXlzIG11
c3QgYmUgcXVvdGVkIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDMwLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYjBiYzRiOGIyYy4u
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsMzAuanNvbgorKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVswZStdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMS5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L2pzb25jaGVja2VyL2ZhaWwzMS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxY2NlNjAyYjUxOGYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDMxLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bMGUrLTFdClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2Zh
aWwzMi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMi5qc29uCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0NWNiYTczOTZmZjcuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3Rlc3QvanNvbmNoZWNrZXIvZmFpbDMyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBA
Ci17IkNvbW1hIGluc3RlYWQgaWYgY2xvc2luZyBicmFjZSI6IHRydWUsClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMy5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29u
Y3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWwzMy5qc29uCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYTVlYjE5ZGM5N2YuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
anNvbmNoZWNrZXIvZmFpbDMzLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bIm1p
c21hdGNoIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvanNvbmNoZWNrZXIvZmFpbDQuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsNC5q
c29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGUxNjhiZjM0ZTIuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDQuanNvbgorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLVsiZXh0cmEgY29tbWEiLF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDUuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Uv
dGVzdC9qc29uY2hlY2tlci9mYWlsNS5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZGYzY2UzZDI0MDkuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
ZmFpbDUuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiZG91YmxlIGV4dHJhIGNv
bW1hIiwsXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVz
dC9qc29uY2hlY2tlci9mYWlsNi5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw2Lmpz
b24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTE1ODBlMWIxYy4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsNi5qc29uCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotWyAgICwgIjwtLSBtaXNzaW5nIHZhbHVlIl0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDcuanNv
biBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNw
cC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9mYWlsNy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4YTk2YWYzZTRlZTYuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNv
bmNoZWNrZXIvZmFpbDcuanNvbgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVsiQ29tbWEg
YWZ0ZXIgdGhlIGNsb3NlIl0sClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3Bw
L3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw4Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNr
ZXIvZmFpbDguanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4NDc5YzZlY2Iy
Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw4Lmpzb24KKysr
IC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bIkV4dHJhIGNsb3NlIl1dClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL2ZhaWw5Lmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvZmFpbDkuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTgxNTU3NGYzNjNlLi4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL2ZhaWw5Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17IkV4dHJh
IGNvbW1hIjogdHJ1ZSx9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3Nv
dXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MxLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIv
cGFzczEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBlMjY4NTQzNjkyLi4w
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MxLmpzb24KKysrIC9k
ZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1bCi0gICAgIkpTT04gVGVzdCBQYXR0ZXJuIHBhc3Mx
IiwKLSAgICB7Im9iamVjdCB3aXRoIDEgbWVtYmVyIjpbImFycmF5IHdpdGggMSBlbGVtZW50Il19
LAotICAgIHt9LAotICAgIFtdLAotICAgIC00MiwKLSAgICB0cnVlLAotICAgIGZhbHNlLAotICAg
IG51bGwsCi0gICAgewotICAgICAgICAiaW50ZWdlciI6IDEyMzQ1Njc4OTAsCi0gICAgICAgICJy
ZWFsIjogLTk4NzYuNTQzMjEwLAotICAgICAgICAiZSI6IDAuMTIzNDU2Nzg5ZS0xMiwKLSAgICAg
ICAgIkUiOiAxLjIzNDU2Nzg5MEUrMzQsCi0gICAgICAgICIiOiAgMjM0NTY3ODkwMTJFNjYsCi0g
ICAgICAgICJ6ZXJvIjogMCwKLSAgICAgICAgIm9uZSI6IDEsCi0gICAgICAgICJzcGFjZSI6ICIg
IiwKLSAgICAgICAgInF1b3RlIjogIlwiIiwKLSAgICAgICAgImJhY2tzbGFzaCI6ICJcXCIsCi0g
ICAgICAgICJjb250cm9scyI6ICJcYlxmXG5cclx0IiwKLSAgICAgICAgInNsYXNoIjogIi8gJiBc
LyIsCi0gICAgICAgICJhbHBoYSI6ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3l6IiwKLSAgICAg
ICAgIkFMUEhBIjogIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWVoiLAotICAgICAgICAiZGlnaXQi
OiAiMDEyMzQ1Njc4OSIsCi0gICAgICAgICIwMTIzNDU2Nzg5IjogImRpZ2l0IiwKLSAgICAgICAg
InNwZWNpYWwiOiAiYDF+IUAjJCVeJiooKV8rLT17JzpbLF19fDsuPC8+PyIsCi0gICAgICAgICJo
ZXgiOiAiXHUwMTIzXHU0NTY3XHU4OUFCXHVDREVGXHVhYmNkXHVlZjRBIiwKLSAgICAgICAgInRy
dWUiOiB0cnVlLAotICAgICAgICAiZmFsc2UiOiBmYWxzZSwKLSAgICAgICAgIm51bGwiOiBudWxs
LAotICAgICAgICAiYXJyYXkiOlsgIF0sCi0gICAgICAgICJvYmplY3QiOnsgIH0sCi0gICAgICAg
ICJhZGRyZXNzIjogIjUwIFN0LiBKYW1lcyBTdHJlZXQiLAotICAgICAgICAidXJsIjogImh0dHA6
Ly93d3cuSlNPTi5vcmcvIiwKLSAgICAgICAgImNvbW1lbnQiOiAiLy8gLyogPCEtLSAtLSIsCi0g
ICAgICAgICIjIC0tIC0tPiAqLyI6ICIgIiwKLSAgICAgICAgIiBzIHAgYSBjIGUgZCAiIDpbMSwy
ICwgMwotCi0sCi0KLTQgLCA1ICAgICAgICAsICAgICAgICAgIDYgICAgICAgICAgICw3ICAgICAg
ICBdLCJjb21wYWN0IjpbMSwyLDMsNCw1LDYsN10sCi0gICAgICAgICJqc29udGV4dCI6ICJ7XCJv
YmplY3Qgd2l0aCAxIG1lbWJlclwiOltcImFycmF5IHdpdGggMSBlbGVtZW50XCJdfSIsCi0gICAg
ICAgICJxdW90ZXMiOiAiJiMzNDsgXHUwMDIyICUyMiAweDIyIDAzNCAmI3gyMjsiLAotICAgICAg
ICAiXC9cXFwiXHVDQUZFXHVCQUJFXHVBQjk4XHVGQ0RFXHViY2RhXHVlZjRBXGJcZlxuXHJcdGAx
fiFAIyQlXiYqKClfKy09W117fXw7OicsLi88Pj8iCi06ICJBIGtleSBjYW4gYmUgYW55IHN0cmlu
ZyIKLSAgICB9LAotICAgIDAuNSAsOTguNgotLAotOTkuNDQKLSwKLQotMTA2NiwKLTFlMSwKLTAu
MWUxLAotMWUtMSwKLTFlMDAsMmUrMDAsMmUtMDAKLSwicm9zZWJ1ZCJdClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3MyLmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25j
cHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcGFzczIuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDNjNjNjN2FkODQ1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pz
b25jaGVja2VyL3Bhc3MyLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1bW1tbW1tb
W1tbW1tbW1tbW1tbIk5vdCB0b28gZGVlcCJdXV1dXV1dXV1dXV1dXV1dXV1dClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0L2pzb25jaGVja2VyL3Bhc3Mz
Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pz
b25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcGFzczMuanNvbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDUyOGQ1MWYxYWM2Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90ZXN0
L2pzb25jaGVja2VyL3Bhc3MzLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXsK
LSAgICAiSlNPTiBUZXN0IFBhdHRlcm4gcGFzczMiOiB7Ci0gICAgICAgICJUaGUgb3V0ZXJtb3N0
IHZhbHVlIjogIm11c3QgYmUgYW4gb2JqZWN0IG9yIGFycmF5LiIsCi0gICAgICAgICJJbiB0aGlz
IHRlc3QiOiAiSXQgaXMgYW4gb2JqZWN0LiIKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rl
c3QvanNvbmNoZWNrZXIvcmVhZG1lLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9qc29uY2hlY2tlci9yZWFkbWUu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjFkODlkOTk4ZWQuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L2pzb25jcHAvc291cmNlL3Rlc3QvanNvbmNoZWNrZXIvcmVhZG1lLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotVGVzdCBzdWl0ZSBmcm9tIGh0dHA6Ly9qc29uLm9yZy9KU09OX2No
ZWNrZXIvLgotCi1JZiB0aGUgSlNPTl9jaGVja2VyIGlzIHdvcmtpbmcgY29ycmVjdGx5LCBpdCBt
dXN0IGFjY2VwdCBhbGwgb2YgdGhlIHBhc3MqLmpzb24gZmlsZXMgYW5kIHJlamVjdCBhbGwgb2Yg
dGhlIGZhaWwqLmpzb24gZmlsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3QvcHlqc29udGVzdHJ1
bm5lci5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
anNvbmNwcC9zb3VyY2UvdGVzdC9weWpzb250ZXN0cnVubmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZDc0OWI1MzBmMzAuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNlL3Rlc3Qv
cHlqc29udGVzdHJ1bm5lci5weQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLSMgQ29w
eXJpZ2h0IDIwMDcgQmFwdGlzdGUgTGVwaWxsZXVyIGFuZCBUaGUgSnNvbkNwcCBBdXRob3JzCi0j
IERpc3RyaWJ1dGVkIHVuZGVyIE1JVCBsaWNlbnNlLCBvciBwdWJsaWMgZG9tYWluIGlmIGRlc2ly
ZWQgYW5kCi0jIHJlY29nbml6ZWQgaW4geW91ciBqdXJpc2RpY3Rpb24uCi0jIFNlZSBmaWxlIExJ
Q0VOU0UgZm9yIGRldGFpbCBvciBjb3B5IGF0IGh0dHA6Ly9qc29uY3BwLnNvdXJjZWZvcmdlLm5l
dC9MSUNFTlNFCi0KLSIiIlNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIGpzb24gdGVzdCBydW5u
ZXIgdG8gcnVuIHRoZSB0ZXN0IGFnYWluc3QKLWpzb24tcHkuIiIiCi0KLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLWltcG9ydCBzeXMKLWltcG9ydCBvcy5wYXRoCi1pbXBv
cnQganNvbgotaW1wb3J0IHR5cGVzCi0KLWlmIGxlbihzeXMuYXJndikgIT0gMjoKLSAgICBwcmlu
dCgiVXNhZ2U6ICVzIGlucHV0LWpzb24tZmlsZSIsIHN5cy5hcmd2WzBdKQotICAgIHN5cy5leGl0
KDMpCi0gICAgCi1pbnB1dF9wYXRoID0gc3lzLmFyZ3ZbMV0KLWJhc2VfcGF0aCA9IG9zLnBhdGgu
c3BsaXRleHQoaW5wdXRfcGF0aClbMF0KLWFjdHVhbF9wYXRoID0gYmFzZV9wYXRoICsgJy5hY3R1
YWwnCi1yZXdyaXRlX3BhdGggPSBiYXNlX3BhdGggKyAnLnJld3JpdGUnCi1yZXdyaXRlX2FjdHVh
bF9wYXRoID0gYmFzZV9wYXRoICsgJy5hY3R1YWwtcmV3cml0ZScKLQotZGVmIHZhbHVlVHJlZVRv
U3RyaW5nKGZvdXQsIHZhbHVlLCBwYXRoID0gJy4nKToKLSAgICB0eSA9IHR5cGUodmFsdWUpIAot
ICAgIGlmIHR5ICBpcyB0eXBlcy5EaWN0VHlwZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9e31c
bicgJSBwYXRoKQotICAgICAgICBzdWZmaXggPSBwYXRoWy0xXSAhPSAnLicgYW5kICcuJyBvciAn
JwotICAgICAgICBuYW1lcyA9IHZhbHVlLmtleXMoKQotICAgICAgICBuYW1lcy5zb3J0KCkKLSAg
ICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgICAgICB2YWx1ZVRyZWVUb1N0cmluZyhm
b3V0LCB2YWx1ZVtuYW1lXSwgcGF0aCArIHN1ZmZpeCArIG5hbWUpCi0gICAgZWxpZiB0eSBpcyB0
eXBlcy5MaXN0VHlwZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9W11cbicgJSBwYXRoKQotICAg
ICAgICBmb3IgaW5kZXgsIGNoaWxkVmFsdWUgaW4gemlwKHhyYW5nZSgwLGxlbih2YWx1ZSkpLCB2
YWx1ZSk6Ci0gICAgICAgICAgICB2YWx1ZVRyZWVUb1N0cmluZyhmb3V0LCBjaGlsZFZhbHVlLCBw
YXRoICsgJ1slZF0nICUgaW5kZXgpCi0gICAgZWxpZiB0eSBpcyB0eXBlcy5TdHJpbmdUeXBlOgot
ICAgICAgICBmb3V0LndyaXRlKCclcz0iJXMiXG4nICUgKHBhdGgsdmFsdWUpKQotICAgIGVsaWYg
dHkgaXMgdHlwZXMuSW50VHlwZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9JWRcbicgJSAocGF0
aCx2YWx1ZSkpCi0gICAgZWxpZiB0eSBpcyB0eXBlcy5GbG9hdFR5cGU6Ci0gICAgICAgIGZvdXQu
d3JpdGUoJyVzPSUuMTZnXG4nICUgKHBhdGgsdmFsdWUpKQotICAgIGVsaWYgdmFsdWUgaXMgVHJ1
ZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9dHJ1ZVxuJyAlIHBhdGgpCi0gICAgZWxpZiB2YWx1
ZSBpcyBGYWxzZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9ZmFsc2VcbicgJSBwYXRoKQotICAg
IGVsaWYgdmFsdWUgaXMgTm9uZToKLSAgICAgICAgZm91dC53cml0ZSgnJXM9bnVsbFxuJyAlIHBh
dGgpCi0gICAgZWxzZToKLSAgICAgICAgYXNzZXJ0IEZhbHNlIGFuZCAiVW5leHBlY3RlZCB2YWx1
ZSB0eXBlIgotICAgICAgICAKLWRlZiBwYXJzZUFuZFNhdmVWYWx1ZVRyZWUoaW5wdXQsIGFjdHVh
bF9wYXRoKToKLSAgICByb290ID0ganNvbi5sb2FkcyhpbnB1dCkKLSAgICBmb3V0ID0gZmlsZShh
Y3R1YWxfcGF0aCwgJ3d0JykKLSAgICB2YWx1ZVRyZWVUb1N0cmluZyhmb3V0LCByb290KQotICAg
IGZvdXQuY2xvc2UoKQotICAgIHJldHVybiByb290Ci0KLWRlZiByZXdyaXRlVmFsdWVUcmVlKHZh
bHVlLCByZXdyaXRlX3BhdGgpOgotICAgIHJld3JpdGUgPSBqc29uLmR1bXBzKHZhbHVlKQotICAg
ICNyZXdyaXRlID0gcmV3cml0ZVsxOi0xXSAgIyBTb21laG93IHRoZSBzdHJpbmcgaXMgcXVvdGVk
ICEganNvbnB5IGJ1ZyA/Ci0gICAgZmlsZShyZXdyaXRlX3BhdGgsICd3dCcpLndyaXRlKHJld3Jp
dGUgKyAnXG4nKQotICAgIHJldHVybiByZXdyaXRlCi0gICAgCi1pbnB1dCA9IGZpbGUoaW5wdXRf
cGF0aCwgJ3J0JykucmVhZCgpCi1yb290ID0gcGFyc2VBbmRTYXZlVmFsdWVUcmVlKGlucHV0LCBh
Y3R1YWxfcGF0aCkKLXJld3JpdGUgPSByZXdyaXRlVmFsdWVUcmVlKGpzb24ud3JpdGUocm9vdCks
IHJld3JpdGVfcGF0aCkKLXJld3JpdGVfcm9vdCA9IHBhcnNlQW5kU2F2ZVZhbHVlVHJlZShyZXdy
aXRlLCByZXdyaXRlX2FjdHVhbF9wYXRoKQotCi1zeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJj
ZS90ZXN0L3J1bmpzb250ZXN0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9ydW5qc29udGVzdHMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZGVjYTNlYWJmZS4uMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9z
b3VyY2UvdGVzdC9ydW5qc29udGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAwNyBCYXB0aXN0ZSBMZXBpbGxldXIgYW5kIFRoZSBKc29uQ3BwIEF1
dGhvcnMKLSMgRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIG9yIHB1YmxpYyBkb21haW4g
aWYgZGVzaXJlZCBhbmQKLSMgcmVjb2duaXplZCBpbiB5b3VyIGp1cmlzZGljdGlvbi4KLSMgU2Vl
IGZpbGUgTElDRU5TRSBmb3IgZGV0YWlsIG9yIGNvcHkgYXQgaHR0cDovL2pzb25jcHAuc291cmNl
Zm9yZ2UubmV0L0xJQ0VOU0UKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv
bgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi1mcm9tIGlvIGltcG9y
dCBvcGVuCi1mcm9tIGdsb2IgaW1wb3J0IGdsb2IKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1w
b3J0IG9zLnBhdGgKLWltcG9ydCBvcHRwYXJzZQotCi1WQUxHUklORF9DTUQgPSAndmFsZ3JpbmQg
LS10b29sPW1lbWNoZWNrIC0tbGVhay1jaGVjaz15ZXMgLS11bmRlZi12YWx1ZS1lcnJvcnM9eWVz
ICcKLQotZGVmIGdldFN0YXR1c091dHB1dChjbWQpOgotICAgICIiIgotICAgIFJldHVybiBpbnQs
IHVuaWNvZGUgKGZvciBib3RoIFB5dGhvbiAyIGFuZCAzKS4KLSAgICBOb3RlOiBvcy5wb3Blbigp
LmNsb3NlKCkgd291bGQgcmV0dXJuIE5vbmUgZm9yIDAuCi0gICAgIiIiCi0gICAgcHJpbnQoY21k
LCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgcGlwZSA9IG9zLnBvcGVuKGNtZCkKLSAgICBwcm9jZXNz
X291dHB1dCA9IHBpcGUucmVhZCgpCi0gICAgdHJ5OgotICAgICAgICAjIFdlIGhhdmUgYmVlbiB1
c2luZyBvcy5wb3BlbigpLiBXaGVuIHdlIHJlYWQoKSB0aGUgcmVzdWx0Ci0gICAgICAgICMgd2Ug
Z2V0ICdzdHInIChieXRlcykgaW4gcHkyLCBhbmQgJ3N0cicgKHVuaWNvZGUpIGluIHB5My4KLSAg
ICAgICAgIyBVZ2ghIFRoZXJlIG11c3QgYmUgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLgot
ICAgICAgICBwcm9jZXNzX291dHB1dCA9IHByb2Nlc3Nfb3V0cHV0LmRlY29kZSgndXRmLTgnKQot
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcGFzcyAgIyBweXRob24zCi0gICAg
c3RhdHVzID0gcGlwZS5jbG9zZSgpCi0gICAgcmV0dXJuIHN0YXR1cywgcHJvY2Vzc19vdXRwdXQK
LWRlZiBjb21wYXJlT3V0cHV0cyhleHBlY3RlZCwgYWN0dWFsLCBtZXNzYWdlKToKLSAgICBleHBl
Y3RlZCA9IGV4cGVjdGVkLnN0cmlwKCkucmVwbGFjZSgnXHInLCcnKS5zcGxpdCgnXG4nKQotICAg
IGFjdHVhbCA9IGFjdHVhbC5zdHJpcCgpLnJlcGxhY2UoJ1xyJywnJykuc3BsaXQoJ1xuJykKLSAg
ICBkaWZmX2xpbmUgPSAwCi0gICAgbWF4X2xpbmVfdG9fY29tcGFyZSA9IG1pbihsZW4oZXhwZWN0
ZWQpLCBsZW4oYWN0dWFsKSkKLSAgICBmb3IgaW5kZXggaW4gcmFuZ2UoMCxtYXhfbGluZV90b19j
b21wYXJlKToKLSAgICAgICAgaWYgZXhwZWN0ZWRbaW5kZXhdLnN0cmlwKCkgIT0gYWN0dWFsW2lu
ZGV4XS5zdHJpcCgpOgotICAgICAgICAgICAgZGlmZl9saW5lID0gaW5kZXggKyAxCi0gICAgICAg
ICAgICBicmVhawotICAgIGlmIGRpZmZfbGluZSA9PSAwIGFuZCBsZW4oZXhwZWN0ZWQpICE9IGxl
bihhY3R1YWwpOgotICAgICAgICBkaWZmX2xpbmUgPSBtYXhfbGluZV90b19jb21wYXJlKzEKLSAg
ICBpZiBkaWZmX2xpbmUgPT0gMDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBkZWYgc2FmZUdl
dExpbmUobGluZXMsIGluZGV4KToKLSAgICAgICAgaW5kZXggKz0gLTEKLSAgICAgICAgaWYgaW5k
ZXggPj0gbGVuKGxpbmVzKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICByZXR1cm4g
bGluZXNbaW5kZXhdLnN0cmlwKCkKLSAgICByZXR1cm4gIiIiICBEaWZmZXJlbmNlIGluICVzIGF0
IGxpbmUgJWQ6Ci0gIEV4cGVjdGVkOiAnJXMnCi0gIEFjdHVhbDogICAnJXMnCi0iIiIgJSAobWVz
c2FnZSwgZGlmZl9saW5lLAotICAgICAgIHNhZmVHZXRMaW5lKGV4cGVjdGVkLGRpZmZfbGluZSks
Ci0gICAgICAgc2FmZUdldExpbmUoYWN0dWFsLGRpZmZfbGluZSkpCi0KLWRlZiBzYWZlUmVhZEZp
bGUocGF0aCk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gb3BlbihwYXRoLCAncnQnLCBlbmNv
ZGluZyA9ICd1dGYtOCcpLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAg
IHJldHVybiAnPEZpbGUgIiVzIiBpcyBtaXNzaW5nOiAlcz4nICUgKHBhdGgsZSkKLQotZGVmIHJ1
bkFsbFRlc3RzKGpzb250ZXN0X2V4ZWN1dGFibGVfcGF0aCwgaW5wdXRfZGlyID0gTm9uZSwKLSAg
ICAgICAgICAgICAgICAgdXNlX3ZhbGdyaW5kPUZhbHNlLCB3aXRoX2pzb25fY2hlY2tlcj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgd3JpdGVyQ2xhc3M9J1N0eWxlZFdyaXRlcicpOgotICAgIGlm
IG5vdCBpbnB1dF9kaXI6Ci0gICAgICAgIGlucHV0X2RpciA9IG9zLnBhdGguam9pbihvcy5nZXRj
d2QoKSwgJ2RhdGEnKQotICAgIHRlc3RzID0gZ2xvYihvcy5wYXRoLmpvaW4oaW5wdXRfZGlyLCAn
Ki5qc29uJykpCi0gICAgaWYgd2l0aF9qc29uX2NoZWNrZXI6Ci0gICAgICAgIGFsbF90ZXN0X2pz
b25jaGVja2VyID0gZ2xvYihvcy5wYXRoLmpvaW4oaW5wdXRfZGlyLCAnLi4vanNvbmNoZWNrZXIn
LCAnKi5qc29uJykpCi0gICAgICAgICMgVGhlc2UgdGVzdHMgZmFpbCB3aXRoIHN0cmljdCBqc29u
IHN1cHBvcnQsIGJ1dCBwYXNzIHdpdGgganNvbmNwcCBleHRyYSBsaWVuaWVuY3kKLSAgICAgICAg
IiIiCi0gICAgICAgIEZhaWx1cmUgZGV0YWlsczoKLSAgICAgICAgKiBUZXN0IC4uL2pzb25jaGVj
a2VyL2ZhaWwyNS5qc29uCi0gICAgICAgIFBhcnNpbmcgc2hvdWxkIGhhdmUgZmFpbGVkOgotICAg
ICAgICBbIgl0YWIJY2hhcmFjdGVyCWluCXN0cmluZwkiXQotCi0gICAgICAgICogVGVzdCAuLi9q
c29uY2hlY2tlci9mYWlsMTMuanNvbgotICAgICAgICBQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxl
ZDoKLSAgICAgICAgeyJOdW1iZXJzIGNhbm5vdCBoYXZlIGxlYWRpbmcgemVyb2VzIjogMDEzfQot
Ci0gICAgICAgICogVGVzdCAuLi9qc29uY2hlY2tlci9mYWlsMTguanNvbgotICAgICAgICBQYXJz
aW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAgICAgICAgW1tbW1tbW1tbW1tbW1tbW1tbW1siVG9v
IGRlZXAiXV1dXV1dXV1dXV1dXV1dXV1dXV0KLQotICAgICAgICAqIFRlc3QgLi4vanNvbmNoZWNr
ZXIvZmFpbDguanNvbgotICAgICAgICBQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAgICAg
ICAgWyJFeHRyYSBjbG9zZSJdXQotCi0gICAgICAgICogVGVzdCAuLi9qc29uY2hlY2tlci9mYWls
Ny5qc29uCi0gICAgICAgIFBhcnNpbmcgc2hvdWxkIGhhdmUgZmFpbGVkOgotICAgICAgICBbIkNv
bW1hIGFmdGVyIHRoZSBjbG9zZSJdLAotCi0gICAgICAgICogVGVzdCAuLi9qc29uY2hlY2tlci9m
YWlsMTAuanNvbgotICAgICAgICBQYXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAgICAgICAg
eyJFeHRyYSB2YWx1ZSBhZnRlciBjbG9zZSI6IHRydWV9ICJtaXNwbGFjZWQgcXVvdGVkIHZhbHVl
IgotCi0gICAgICAgICogVGVzdCAuLi9qc29uY2hlY2tlci9mYWlsMjcuanNvbgotICAgICAgICBQ
YXJzaW5nIHNob3VsZCBoYXZlIGZhaWxlZDoKLSAgICAgICAgWyJsaW5lCi0gICAgICAgIGJyZWFr
Il0KLSAgICAgICAgIiIiCi0gICAgICAgIGtub3duX2RpZmZlcmVuY2VzX3dpdGhqc29uY2hlY2tl
ciA9IFsgImZhaWwyNS5qc29uIiwgImZhaWwxMy5qc29uIiwgImZhaWwxOC5qc29uIiwgImZhaWw4
Lmpzb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
YWlsNy5qc29uIiwgImZhaWwxMC5qc29uIiwgImZhaWwyNy5qc29uIiBdCi0gICAgICAgIHRlc3Rf
anNvbmNoZWNrZXIgPSBbIHRlc3QgZm9yIHRlc3QgaW4gYWxsX3Rlc3RfanNvbmNoZWNrZXIgaWYg
b3MucGF0aC5iYXNlbmFtZSh0ZXN0KSBub3QgaW4ga25vd25fZGlmZmVyZW5jZXNfd2l0aGpzb25j
aGVja2VyIF0KLQotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RfanNvbmNoZWNrZXIgPSBbXQotICAg
IGZhaWxlZF90ZXN0cyA9IFtdCi0gICAgdmFsZ3JpbmRfcGF0aCA9IHVzZV92YWxncmluZCBhbmQg
VkFMR1JJTkRfQ01EIG9yICcnCi0gICAgZm9yIGlucHV0X3BhdGggaW4gdGVzdHMgKyB0ZXN0X2pz
b25jaGVja2VyOgotICAgICAgICBleHBlY3RfZmFpbHVyZSA9IG9zLnBhdGguYmFzZW5hbWUoaW5w
dXRfcGF0aCkuc3RhcnRzd2l0aCgnZmFpbCcpCi0gICAgICAgIGlzX2pzb25fY2hlY2tlcl90ZXN0
ID0gKGlucHV0X3BhdGggaW4gdGVzdF9qc29uY2hlY2tlcikgb3IgZXhwZWN0X2ZhaWx1cmUKLSAg
ICAgICAgcHJpbnQoJ1RFU1RJTkc6JywgaW5wdXRfcGF0aCwgZW5kPScgJykKLSAgICAgICAgb3B0
aW9ucyA9IGlzX2pzb25fY2hlY2tlcl90ZXN0IGFuZCAnLS1qc29uLWNoZWNrZXInIG9yICcnCi0g
ICAgICAgIG9wdGlvbnMgKz0gJyAtLWpzb24td3JpdGVyICVzJyV3cml0ZXJDbGFzcwotICAgICAg
ICBjbWQgPSAnJXMlcyAlcyAiJXMiJyAlICggICAgICAgICAgICB2YWxncmluZF9wYXRoLCBqc29u
dGVzdF9leGVjdXRhYmxlX3BhdGgsIG9wdGlvbnMsCi0gICAgICAgICAgICBpbnB1dF9wYXRoKQot
ICAgICAgICBzdGF0dXMsIHByb2Nlc3Nfb3V0cHV0ID0gZ2V0U3RhdHVzT3V0cHV0KGNtZCkKLSAg
ICAgICAgaWYgaXNfanNvbl9jaGVja2VyX3Rlc3Q6Ci0gICAgICAgICAgICBpZiBleHBlY3RfZmFp
bHVyZToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgICAg
ICBwcmludCgnRkFJTEVEJykKLSAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzLmFwcGVu
ZCgoaW5wdXRfcGF0aCwgJ1BhcnNpbmcgc2hvdWxkIGhhdmUgZmFpbGVkOlxuJXMnICUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVSZWFkRmlsZShpbnB1dF9w
YXRoKSkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQo
J09LJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgc3RhdHVzOgotICAg
ICAgICAgICAgICAgICAgICBwcmludCgnRkFJTEVEJykKLSAgICAgICAgICAgICAgICAgICAgZmFp
bGVkX3Rlc3RzLmFwcGVuZCgoaW5wdXRfcGF0aCwgJ1BhcnNpbmcgZmFpbGVkOlxuJyArIHByb2Nl
c3Nfb3V0cHV0KSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBw
cmludCgnT0snKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFzZV9wYXRoID0gb3MucGF0
aC5zcGxpdGV4dChpbnB1dF9wYXRoKVswXQotICAgICAgICAgICAgYWN0dWFsX291dHB1dCA9IHNh
ZmVSZWFkRmlsZShiYXNlX3BhdGggKyAnLmFjdHVhbCcpCi0gICAgICAgICAgICBhY3R1YWxfcmV3
cml0ZV9vdXRwdXQgPSBzYWZlUmVhZEZpbGUoYmFzZV9wYXRoICsgJy5hY3R1YWwtcmV3cml0ZScp
Ci0gICAgICAgICAgICBvcGVuKGJhc2VfcGF0aCArICcucHJvY2Vzcy1vdXRwdXQnLCAnd3QnLCBl
bmNvZGluZyA9ICd1dGYtOCcpLndyaXRlKHByb2Nlc3Nfb3V0cHV0KQotICAgICAgICAgICAgaWYg
c3RhdHVzOgotICAgICAgICAgICAgICAgIHByaW50KCdwYXJzaW5nIGZhaWxlZCcpCi0gICAgICAg
ICAgICAgICAgZmFpbGVkX3Rlc3RzLmFwcGVuZCgoaW5wdXRfcGF0aCwgJ1BhcnNpbmcgZmFpbGVk
OlxuJyArIHByb2Nlc3Nfb3V0cHV0KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfb3V0cHV0X3BhdGggPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0X3BhdGgpWzBd
ICsgJy5leHBlY3RlZCcKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBvcGVuKGV4
cGVjdGVkX291dHB1dF9wYXRoLCAncnQnLCBlbmNvZGluZyA9ICd1dGYtOCcpLnJlYWQoKQotICAg
ICAgICAgICAgICAgIGRldGFpbCA9IChjb21wYXJlT3V0cHV0cyhleHBlY3RlZF9vdXRwdXQsIGFj
dHVhbF9vdXRwdXQsICdpbnB1dCcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgY29t
cGFyZU91dHB1dHMoZXhwZWN0ZWRfb3V0cHV0LCBhY3R1YWxfcmV3cml0ZV9vdXRwdXQsICdyZXdy
aXRlJykpCi0gICAgICAgICAgICAgICAgaWYgZGV0YWlsOgotICAgICAgICAgICAgICAgICAgICBw
cmludCgnRkFJTEVEJykKLSAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzLmFwcGVuZCgo
aW5wdXRfcGF0aCwgZGV0YWlsKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICBwcmludCgnT0snKQotCi0gICAgaWYgZmFpbGVkX3Rlc3RzOgotICAgICAgICBwcmlu
dCgpCi0gICAgICAgIHByaW50KCdGYWlsdXJlIGRldGFpbHM6JykKLSAgICAgICAgZm9yIGZhaWxl
ZF90ZXN0IGluIGZhaWxlZF90ZXN0czoKLSAgICAgICAgICAgIHByaW50KCcqIFRlc3QnLCBmYWls
ZWRfdGVzdFswXSkKLSAgICAgICAgICAgIHByaW50KGZhaWxlZF90ZXN0WzFdKQotICAgICAgICAg
ICAgcHJpbnQoKQotICAgICAgICBwcmludCgnVGVzdCByZXN1bHRzOiAlZCBwYXNzZWQsICVkIGZh
aWxlZC4nICUgKGxlbih0ZXN0cyktbGVuKGZhaWxlZF90ZXN0cyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGZhaWxlZF90ZXN0cykp
KQotICAgICAgICByZXR1cm4gMQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCdBbGwgJWQgdGVz
dHMgcGFzc2VkLicgJSBsZW4odGVzdHMpKQotICAgICAgICByZXR1cm4gMAotCi1kZWYgbWFpbigp
OgotICAgIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotICAgIHBhcnNlciA9IE9w
dGlvblBhcnNlcih1c2FnZT0iJXByb2cgW29wdGlvbnNdIDxwYXRoIHRvIGpzb250ZXN0cnVubmVy
LmV4ZT4gW3Rlc3QgY2FzZSBkaXJlY3RvcnldIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLS12
YWxncmluZCIsCi0gICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ2
YWxncmluZCIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBoZWxwPSJydW4gYWxs
IHRoZSB0ZXN0cyB1c2luZyB2YWxncmluZCB0byBkZXRlY3QgbWVtb3J5IGxlYWtzIikKLSAgICBw
YXJzZXIuYWRkX29wdGlvbigiLWMiLCAiLS13aXRoLWpzb24tY2hlY2tlciIsCi0gICAgICAgICAg
ICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ3aXRoX2pzb25fY2hlY2tlciIsIGRl
ZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBoZWxwPSJydW4gYWxsIHRoZSB0ZXN0cyBm
cm9tIHRoZSBvZmZpY2lhbCBKU09OQ2hlY2tlciB0ZXN0IHN1aXRlIG9mIGpzb24ub3JnIikKLSAg
ICBwYXJzZXIuZW5hYmxlX2ludGVyc3BlcnNlZF9hcmdzKCkKLSAgICBvcHRpb25zLCBhcmdzID0g
cGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMSBvciBsZW4oYXJncykg
PiAyOgotICAgICAgICBwYXJzZXIuZXJyb3IoJ011c3QgcHJvdmlkZXMgYXQgbGVhc3QgcGF0aCB0
byBqc29udGVzdHJ1bm5lciBleGVjdXRhYmxlLicpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAg
ICBqc29udGVzdF9leGVjdXRhYmxlX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJz
cGF0aChhcmdzWzBdKSkKLSAgICBpZiBsZW4oYXJncykgPiAxOgotICAgICAgICBpbnB1dF9wYXRo
ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgoYXJnc1sxXSkpCi0gICAgZWxzZToK
LSAgICAgICAgaW5wdXRfcGF0aCA9IE5vbmUKLSAgICBzdGF0dXMgPSBydW5BbGxUZXN0cyhqc29u
dGVzdF9leGVjdXRhYmxlX3BhdGgsIGlucHV0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgdXNlX3ZhbGdyaW5kPW9wdGlvbnMudmFsZ3JpbmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgd2l0aF9qc29uX2NoZWNrZXI9b3B0aW9ucy53aXRoX2pzb25fY2hlY2tlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICB3cml0ZXJDbGFzcz0nU3R5bGVkV3JpdGVyJykKLSAgICBpZiBzdGF0
dXM6Ci0gICAgICAgIHN5cy5leGl0KHN0YXR1cykKLSAgICBzdGF0dXMgPSBydW5BbGxUZXN0cyhq
c29udGVzdF9leGVjdXRhYmxlX3BhdGgsIGlucHV0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlX3ZhbGdyaW5kPW9wdGlvbnMudmFsZ3JpbmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgd2l0aF9qc29uX2NoZWNrZXI9b3B0aW9ucy53aXRoX2pzb25fY2hlY2tlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICB3cml0ZXJDbGFzcz0nU3R5bGVkU3RyZWFtV3JpdGVyJykKLSAg
ICBpZiBzdGF0dXM6Ci0gICAgICAgIHN5cy5leGl0KHN0YXR1cykKLSAgICBzdGF0dXMgPSBydW5B
bGxUZXN0cyhqc29udGVzdF9leGVjdXRhYmxlX3BhdGgsIGlucHV0X3BhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlX3ZhbGdyaW5kPW9wdGlvbnMudmFsZ3JpbmQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aF9qc29uX2NoZWNrZXI9b3B0aW9ucy53aXRoX2pzb25fY2hlY2tl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXJDbGFzcz0nQnVpbHRTdHlsZWRTdHJl
YW1Xcml0ZXInKQotICAgIGlmIHN0YXR1czoKLSAgICAgICAgc3lzLmV4aXQoc3RhdHVzKQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS90
ZXN0L3J1bnVuaXR0ZXN0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdGVzdC9ydW51bml0dGVzdHMucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MzRlNzI0MTk2Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3Vy
Y2UvdGVzdC9ydW51bml0dGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5IEJhcHRpc3RlIExlcGlsbGV1ciBhbmQgVGhlIEpzb25DcHAgQXV0aG9y
cwotIyBEaXN0cmlidXRlZCB1bmRlciBNSVQgbGljZW5zZSwgb3IgcHVibGljIGRvbWFpbiBpZiBk
ZXNpcmVkIGFuZAotIyByZWNvZ25pemVkIGluIHlvdXIganVyaXNkaWN0aW9uLgotIyBTZWUgZmls
ZSBMSUNFTlNFIGZvciBkZXRhaWwgb3IgY29weSBhdCBodHRwOi8vanNvbmNwcC5zb3VyY2Vmb3Jn
ZS5uZXQvTElDRU5TRQotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKLWZyb20gaW8gaW1wb3J0IG9w
ZW4KLWZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQg
b3MucGF0aAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBvcHRwYXJzZQotCi1WQUxHUklORF9D
TUQgPSAndmFsZ3JpbmQgLS10b29sPW1lbWNoZWNrIC0tbGVhay1jaGVjaz15ZXMgLS11bmRlZi12
YWx1ZS1lcnJvcnM9eWVzJwotCi1jbGFzcyBUZXN0UHJveHkob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgdGVzdF9leGVfcGF0aCwgdXNlX3ZhbGdyaW5kPUZhbHNlKToKLSAgICAgICAg
c2VsZi50ZXN0X2V4ZV9wYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgodGVz
dF9leGVfcGF0aCkpCi0gICAgICAgIHNlbGYudXNlX3ZhbGdyaW5kID0gdXNlX3ZhbGdyaW5kCi0K
LSAgICBkZWYgcnVuKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICBpZiBzZWxmLnVzZV92YWxncmlu
ZDoKLSAgICAgICAgICAgIGNtZCA9IFZBTEdSSU5EX0NNRC5zcGxpdCgpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBjbWQgPSBbXQotICAgICAgICBjbWQuZXh0ZW5kKFtzZWxmLnRlc3RfZXhl
X3BhdGgsICctLXRlc3QtYXV0byddICsgb3B0aW9ucykKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBF
LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAg
IHByaW50KGNtZCkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHN0ZG91dCA9IHByb2Nlc3Mu
Y29tbXVuaWNhdGUoKVswXQotICAgICAgICBpZiBwcm9jZXNzLnJldHVybmNvZGU6Ci0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UsIHN0ZG91dAotICAgICAgICByZXR1cm4gVHJ1ZSwgc3Rkb3V0Ci0K
LWRlZiBydW5BbGxUZXN0cyhleGVfcGF0aCwgdXNlX3ZhbGdyaW5kPUZhbHNlKToKLSAgICB0ZXN0
X3Byb3h5ID0gVGVzdFByb3h5KGV4ZV9wYXRoLCB1c2VfdmFsZ3JpbmQ9dXNlX3ZhbGdyaW5kKQot
ICAgIHN0YXR1cywgdGVzdF9uYW1lcyA9IHRlc3RfcHJveHkucnVuKFsnLS1saXN0LXRlc3RzJ10p
Ci0gICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBvYnRhaW4gdW5p
dCB0ZXN0cyBsaXN0OlxuIiArIHRlc3RfbmFtZXMsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAg
cmV0dXJuIDEKLSAgICB0ZXN0X25hbWVzID0gW25hbWUuc3RyaXAoKSBmb3IgbmFtZSBpbiB0ZXN0
X25hbWVzLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpLnNwbGl0KCdcbicpXQotICAgIGZhaWx1cmVz
ID0gW10KLSAgICBmb3IgbmFtZSBpbiB0ZXN0X25hbWVzOgotICAgICAgICBwcmludCgnVEVTVElO
RyAlczonICUgbmFtZSwgZW5kPScgJykKLSAgICAgICAgc3VjY2VlZCwgcmVzdWx0ID0gdGVzdF9w
cm94eS5ydW4oWyctLXRlc3QnLCBuYW1lXSkKLSAgICAgICAgaWYgc3VjY2VlZDoKLSAgICAgICAg
ICAgIHByaW50KCdPSycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmYWlsdXJlcy5hcHBl
bmQoKG5hbWUsIHJlc3VsdCkpCi0gICAgICAgICAgICBwcmludCgnRkFJTEVEJykKLSAgICBmYWls
ZWRfY291bnQgPSBsZW4oZmFpbHVyZXMpCi0gICAgcGFzc19jb3VudCA9IGxlbih0ZXN0X25hbWVz
KSAtIGZhaWxlZF9jb3VudAotICAgIGlmIGZhaWxlZF9jb3VudDoKLSAgICAgICAgcHJpbnQoKQot
ICAgICAgICBmb3IgbmFtZSwgcmVzdWx0IGluIGZhaWx1cmVzOgotICAgICAgICAgICAgcHJpbnQo
cmVzdWx0KQotICAgICAgICBwcmludCgnJWQvJWQgdGVzdHMgcGFzc2VkICglZCBmYWlsdXJlKHMp
KScgJSAoICAgICAgICAgICAgcGFzc19jb3VudCwgbGVuKHRlc3RfbmFtZXMpLCBmYWlsZWRfY291
bnQpKQotICAgICAgICByZXR1cm4gMQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCdBbGwgJWQg
dGVzdHMgcGFzc2VkJyAlIGxlbih0ZXN0X25hbWVzKSkKLSAgICAgICAgcmV0dXJuIDAKLQotZGVm
IG1haW4oKToKLSAgICBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLSAgICBwYXJz
ZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25zXSA8cGF0aCB0byB0ZXN0X2xp
Yl9qc29uLmV4ZT4iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXZhbGdyaW5kIiwKLSAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InZhbGdyaW5kIiwgZGVmYXVs
dD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGhlIHRlc3RzIHVzaW5n
IHZhbGdyaW5kIHRvIGRldGVjdCBtZW1vcnkgbGVha3MiKQotICAgIHBhcnNlci5lbmFibGVfaW50
ZXJzcGVyc2VkX2FyZ3MoKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygp
Ci0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgcGFyc2VyLmVycm9yKCdNdXN0IHBy
b3ZpZGVzIGF0IGxlYXN0IHBhdGggdG8gdGVzdF9saWJfanNvbiBleGVjdXRhYmxlLicpCi0gICAg
ICAgIHN5cy5leGl0KDEpCi0KLSAgICBleGl0X2NvZGUgPSBydW5BbGxUZXN0cyhhcmdzWzBdLCB1
c2VfdmFsZ3JpbmQ9b3B0aW9ucy52YWxncmluZCkKLSAgICBzeXMuZXhpdChleGl0X2NvZGUpCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291cmNl
L3ZlcnNpb24uaW4gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L2pzb25jcHAvc291cmNlL3ZlcnNpb24uaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJmYzAzZjdkZDcyOS4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2UvdmVyc2lvbi5pbgorKysg
L2Rldi9udWxsCkBAIC0xICswLDAgQEAKLUBKU09OQ1BQX1ZFUlNJT05ACmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2pzb25jcHAvc291
cmNlL3ZlcnNpb24udHh0IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS92ZXJzaW9uLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmZhMzYzZTc2ZWQ3Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZS92ZXJzaW9uLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTEuOC40CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmFmYTZhYjRiNzAxLi40ZDg2NzcxZjllZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MTUsMTUgKzI5MTUsNiBAQAogCQk1QzYwMjQ5NzFFNDk1
MEE1MDA4OEYwQjIgLyogc2N0cDZfdXNycmVxLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRCNEI0MzFFNDJDQTAwMDAyNjUxQzggLyogc2N0cDZfdXNy
cmVxLmMgKi87IH07CiAJCTVDNjAyNDk4MUU0OTUwQTUwMDg4RjBCMiAvKiBzY3RwNl92YXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEI0QjQ0MUU0
MkNBMDAwMDI2NTFDOCAvKiBzY3RwNl92YXIuaCAqLzsgfTsKIAkJNUM2MDI0OTkxRTQ5NTE2MTAw
ODhGMEIyIC8qIHNjdHBfcGNiLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzRCNEIwNDFFNDJDOUVGMDAyNjUxQzggLyogc2N0cF9wY2IuYyAqLzsgfTsK
LQkJNUM2M0Y4RDkxRTQxNkQ1MzAwMkNBNTMxIC8qIGFzc2VydGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGOEQwMUU0MTZENTMwMDJDQTUz
MSAvKiBhc3NlcnRpb25zLmggKi87IH07Ci0JCTVDNjNGOERBMUU0MTZENTMwMDJDQTUzMSAvKiBh
dXRvbGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM2M0Y4RDExRTQxNkQ1MzAwMkNBNTMxIC8qIGF1dG9saW5rLmggKi87IH07Ci0JCTVDNjNGOERC
MUU0MTZENTMwMDJDQTUzMSAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGOEQyMUU0MTZENTMwMDJDQTUzMSAvKiBjb25maWcuaCAq
LzsgfTsKLQkJNUM2M0Y4REMxRTQxNkQ1MzAwMkNBNTMxIC8qIGZlYXR1cmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRjhEMzFFNDE2RDUzMDAy
Q0E1MzEgLyogZmVhdHVyZXMuaCAqLzsgfTsKLQkJNUM2M0Y4REQxRTQxNkQ1MzAwMkNBNTMxIC8q
IGZvcndhcmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzYzRjhENDFFNDE2RDUzMDAyQ0E1MzEgLyogZm9yd2FyZHMuaCAqLzsgfTsKLQkJNUM2M0Y4
REUxRTQxNkQ1MzAwMkNBNTMxIC8qIGpzb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGOEQ1MUU0MTZENTMwMDJDQTUzMSAvKiBqc29uLmggKi87
IH07Ci0JCTVDNjNGOERGMUU0MTZENTMwMDJDQTUzMSAvKiByZWFkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNjNGOEQ2MUU0MTZENTMwMDJDQTUz
MSAvKiByZWFkZXIuaCAqLzsgfTsKLQkJNUM2M0Y4RTAxRTQxNkQ1MzAwMkNBNTMxIC8qIHZhbHVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzYzRjhE
NzFFNDE2RDUzMDAyQ0E1MzEgLyogdmFsdWUuaCAqLzsgfTsKLQkJNUM2M0Y4RTExRTQxNkQ1MzAw
MkNBNTMxIC8qIHdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM2M0Y4RDgxRTQxNkQ1MzAwMkNBNTMxIC8qIHdyaXRlci5oICovOyB9OwogCQk1
Q0QyODQ2NzFFNkE1N0Y0MDA5NEZEQzggLyogaTQyMF9idWZmZXIuY2MgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0QyODQ2MTFFNkE1N0Y0MDA5NEZEQzgg
LyogaTQyMF9idWZmZXIuY2MgKi87IH07CiAJCTVDRDI4NDY4MUU2QTU3RjQwMDk0RkRDOCAvKiBp
NDIwX2J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNEMjg0NjIxRTZBNTdGNDAwOTRGREM4IC8qIGk0MjBfYnVmZmVyLmggKi87IH07CiAJCTVD
RDI4NDY5MUU2QTU3RjQwMDk0RkRDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRDI4NDYzMUU2QTU3RjQwMDk0
RkRDOCAvKiB2aWRlb19mcmFtZV9idWZmZXIuaCAqLzsgfTsKQEAgLTcyODcsMTUgKzcyNzgsNiBA
QAogCQk1QzRCNEQ1OTFFNDMyM0Q0MDAyNjUxQzggLyogc2NhbGUuY2MgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzY2FsZS5jYzsgcGF0aCA9IHNvdXJjZS9zY2FsZS5jYzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0QjRENUExRTQzMjNENDAwMjY1MUM4IC8q
IHZpZGVvX2NvbW1vbi5jYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHZp
ZGVvX2NvbW1vbi5jYzsgcGF0aCA9IHNvdXJjZS92aWRlb19jb21tb24uY2M7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNUY0MDhGMUU5NzhGRDIwMEQ5NDI3OSAvKiBTaWdQcm9jX0ZJ
WF9zc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2lnUHJvY19GSVhfc3Nl
Lmg7IHBhdGggPSBzaWxrL3g4Ni9TaWdQcm9jX0ZJWF9zc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUM2M0Y4RDAxRTQxNkQ1MzAwMkNBNTMxIC8qIGFzc2VydGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXNzZXJ0aW9ucy5oOyBwYXRoID0ganNvbi9h
c3NlcnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNjNGOEQxMUU0MTZE
NTMwMDJDQTUzMSAvKiBhdXRvbGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBhdXRvbGluay5oOyBwYXRoID0ganNvbi9hdXRvbGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzYzRjhEMjFFNDE2RDUzMDAyQ0E1MzEgLyogY29uZmlnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGNvbmZpZy5oOyBwYXRoID0ganNvbi9jb25maWcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2M0Y4RDMxRTQxNkQ1MzAwMkNBNTMxIC8q
IGZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGZlYXR1cmVzLmg7
IHBhdGggPSBqc29uL2ZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVD
NjNGOEQ0MUU0MTZENTMwMDJDQTUzMSAvKiBmb3J3YXJkcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBmb3J3YXJkcy5oOyBwYXRoID0ganNvbi9mb3J3YXJkcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1QzYzRjhENTFFNDE2RDUzMDAyQ0E1MzEgLyoganNvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBqc29uLmg7IHBhdGggPSBqc29uL2pz
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM2M0Y4RDYxRTQxNkQ1MzAwMkNB
NTMxIC8qIHJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSByZWFkZXIu
aDsgcGF0aCA9IGpzb24vcmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVD
NjNGOEQ3MUU0MTZENTMwMDJDQTUzMSAvKiB2YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSB2YWx1ZS5oOyBwYXRoID0ganNvbi92YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1QzYzRjhEODFFNDE2RDUzMDAyQ0E1MzEgLyogd3JpdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHdyaXRlci5oOyBwYXRoID0ganNvbi93cml0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2M0ZDNjAxRTQxODQxMTAwMkNBNTMx
IC8qIGxpYmJvcmluZ3NzbC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJib3Jp
bmdzc2wuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUM4NUM0Q0Ex
RTU3ODBERDAwRDA5N0IxIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NG
TmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1Q0QyODQ2MTFF
NkE1N0Y0MDA5NEZEQzggLyogaTQyMF9idWZmZXIuY2MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBpNDIwX2J1ZmZlci5jYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEyODU3LDcgKzEyODM5LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxM0FEMTlFMjEy
NjVBQ0IwMDNGNzI2MyAvKiBhYnNlaWwtY3BwICovLAogCQkJCTVDNjNGQzYzMUU0MTg0QzAwMDJD
QTUzMSAvKiBib3Jpbmdzc2wgKi8sCi0JCQkJNUM2M0Y4Q0MxRTQxNkNFQjAwMkNBNTMxIC8qIGpz
b25jcHAgKi8sCiAJCQkJNUNERDkwODQxRTQzRDMwMzAwNjIxRTkyIC8qIGxpYnNydHAgKi8sCiAJ
CQkJNDEwNUVCNjQyMTJFMDE4QzAwOEMwQzIwIC8qIGxpYnZweCAqLywKIAkJCQlDREVCQjExRjI0
QzAxOTE4MDBBREJENDQgLyogbGlid2VibSAqLywKQEAgLTEyODcxLDQ2ICsxMjg1Miw2IEBACiAJ
CQlwYXRoID0gdGhpcmRfcGFydHk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owot
CQk1QzYzRjhDQzFFNDE2Q0VCMDAyQ0E1MzEgLyoganNvbmNwcCAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUM2M0Y4Q0QxRTQxNkQwQzAwMkNBNTMxIC8q
IHNvdXJjZSAqLywKLQkJCSk7Ci0JCQlwYXRoID0ganNvbmNwcDsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07Ci0JCTVDNjNGOENEMUU0MTZEMEMwMDJDQTUzMSAvKiBzb3VyY2UgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTVDNjNGOENFMUU0
MTZEMUMwMDJDQTUzMSAvKiBpbmNsdWRlICovLAotCQkJKTsKLQkJCXBhdGggPSBzb3VyY2U7Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk1QzYzRjhDRTFFNDE2RDFDMDAyQ0E1
MzEgLyogaW5jbHVkZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNUM2M0Y4Q0YxRTQxNkQ0NjAwMkNBNTMxIC8qIGpzb24gKi8sCi0JCQkpOwotCQkJcGF0
aCA9IGluY2x1ZGU7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQk1QzYzRjhD
RjFFNDE2RDQ2MDAyQ0E1MzEgLyoganNvbiAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNUM2M0Y4RDAxRTQxNkQ1MzAwMkNBNTMxIC8qIGFzc2VydGlvbnMu
aCAqLywKLQkJCQk1QzYzRjhEMTFFNDE2RDUzMDAyQ0E1MzEgLyogYXV0b2xpbmsuaCAqLywKLQkJ
CQk1QzYzRjhEMjFFNDE2RDUzMDAyQ0E1MzEgLyogY29uZmlnLmggKi8sCi0JCQkJNUM2M0Y4RDMx
RTQxNkQ1MzAwMkNBNTMxIC8qIGZlYXR1cmVzLmggKi8sCi0JCQkJNUM2M0Y4RDQxRTQxNkQ1MzAw
MkNBNTMxIC8qIGZvcndhcmRzLmggKi8sCi0JCQkJNUM2M0Y4RDUxRTQxNkQ1MzAwMkNBNTMxIC8q
IGpzb24uaCAqLywKLQkJCQk1QzYzRjhENjFFNDE2RDUzMDAyQ0E1MzEgLyogcmVhZGVyLmggKi8s
Ci0JCQkJNUM2M0Y4RDcxRTQxNkQ1MzAwMkNBNTMxIC8qIHZhbHVlLmggKi8sCi0JCQkJNUM2M0Y4
RDgxRTQxNkQ1MzAwMkNBNTMxIC8qIHdyaXRlci5oICovLAotCQkJKTsKLQkJCW5hbWUgPSBqc29u
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNUM2M0Y4RTIxRTQxNzMyQjAw
MkNBNTMxIC8qIGFwaSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xNTg2MSw3ICsxNTgwMiw2IEBACiAJCQkJNDEzMUMwNTIyMzRCODk4RDAwMjhBNjE1IC8q
IGFycmF5c2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQ0JCNzkyMUIxRkZDMDAwQTVERjI3
IC8qIGFzY2lpLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYyNjNCMTIxMjY4MEE4MDAyNzRGNTkg
LyogYXNtX2RlZmluZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDNjNGOEQ5MUU0MTZENTMwMDJD
QTUzMSAvKiBhc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMyM0E1QjI2NjUyOTRE
MDBCMzg2MjMgLyogc2NhbGFiaWxpdHlfc3RydWN0dXJlX2Z1bGxfc3ZjLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTMxQzAyNjIzNEI4OThEMDAyOEE2MTUgLyogYXN5bmNfaW52b2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEzMUMwNEIyMzRCODk4RDAwMjhBNjE1IC8qIGFzeW5jX2ludm9rZXJf
aW5sLmggaW4gSGVhZGVycyAqLywKQEAgLTE1OTY4LDcgKzE1OTA4LDYgQEAKIAkJCQk1Q0REOEEw
NTFFNDNCRkIzMDA2MjFFOTIgLyogYXVkaW9fdmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzA4ODUyOTFFNEE5OUQyMDA0MDM5OTUgLyogYXV0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEz
MUM0MDYyMzRDN0I3RTAwMjhBNjE1IC8qIGF1dG9fY29ycmVsYXRpb24uaCBpbiBIZWFkZXJzICov
LAotCQkJCTVDNjNGOERBMUU0MTZENTMwMDJDQTUzMSAvKiBhdXRvbGluay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNERDhBMDgxRTQzQkZCMzAwNjIxRTkyIC8qIGJhY2tncm91bmRfbm9pc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxQTA4QkM3MjEyNjk1REUwMDFENUQ3QiAvKiBiYWRfb3B0aW9u
YWxfYWNjZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTkyNDE4MjIxMjc0OTcxMDA2MzRGQ0Yg
LyogYmFkX3ZhcmlhbnRfYWNjZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTE2MDYzLDcgKzE2MDAy
LDYgQEAKIAkJCQk1Q0REODk0NTFFNDNCRjNBMDA2MjFFOTIgLyogY29tcG91bmRfcGFja2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTVGMUZBQjIxMjcyRkJBMDAwNjRDQkYgLyogY29tcHV0ZV9p
bnRlcnBvbGF0ZWRfZ2Fpbl9jdXJ2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1Rjg4QjkyNzM5
NjMyNjAwNDdBRDY0IC8qIGNsaXBwaW5nX3ByZWRpY3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NUM2M0Y4REIxRTQxNkQ1MzAwMkNBNTMxIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFGQ0JCNDAyMUIxRkRCODAwQTVERjI3IC8qIGNvbmdlc3Rpb25fd2luZG93X3B1c2hiYWNrX2Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMUNGMjM0QjhBNEIwMDI4QTYxNSAv
KiBjb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMxQzFFOTIzNEI4QTRCMDAyOEE2
MTUgLyogY29ubmVjdGlvbl9pbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTE2MjA4LDcgKzE2MTQ2
LDYgQEAKIAkJCQk0MTMxQzFEQjIzNEI4QTRCMDAyOEE2MTUgLyogZmFrZV9wb3J0X2FsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMUMwMjAyMzRCODk4RDAwMjhBNjE1IC8qIGZha2Vf
c3NsX2lkZW50aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5Mzk4QjI0MkE3MjUyMDA3RkRD
NDEgLyogZmFzdF9tYXRoLmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzYzRjhEQzFFNDE2RDUzMDAy
Q0E1MzEgLyogZmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOTI0MTNCMjEyNzM3MjQw
MDYzNEZDRiAvKiBmZWF0dXJlc19leHRyYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMx
QzMwQjIzNEI4REMyMDAyOEE2MTUgLyogZmVjX2NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxRTAyQzhDMjEyNzM0QjkwMEMyN0NENiAvKiBmZWNfY29udHJvbGxlcl9kZWZhdWx0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTE2MjU3LDcgKzE2MTk0LDYgQEAKIAkJCQk0MTMxQzAxRjIzNEI4
OThEMDAyOEE2MTUgLyogZm9ybWF0X21hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDg4
ODkxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29ycmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNERDg4ODcxRTQzQkUzQzAwNjIxRTkyIC8qIGZvcndhcmRfZXJyb3JfY29y
cmVjdGlvbl9pbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUM2M0Y4REQxRTQxNkQ1MzAw
MkNBNTMxIC8qIGZvcndhcmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODVDQTFFNkE2MzQz
MDA5NEZEQzggLyogZnJhbWVfYmxvY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMjNBQTAy
NjY1MkYxNzAwQjM4NjIzIC8qIHJ0cF9mcmFtZV9pZF9vbmx5X3JlZl9maW5kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDREQ4M0QwMUU0MzlBNkYwMDYyMUU5MiAvKiBmcmFtZV9idWZmZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTYzNTcsNyArMTYyOTMsNiBAQAogCQkJCTQxMzFDMzFGMjM0QjhE
QzIwMDI4QTYxNSAvKiBqc2VwX3Nlc3Npb25fZGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMzFCRjM0MjM0Qjg4MjAwMDI4QTYxNSAvKiBqc2VwX3RyYW5zcG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDEzMUJGMjgyMzRCODgyMDAwMjhBNjE1IC8qIGpzZXBfdHJhbnNwb3J0X2Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTVDNjNGOERFMUU0MTZENTMwMDJDQTUzMSAv
KiBqc29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzA4ODUzMDFFNEE5OUQyMDA0MDM5OTUgLyog
a2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0REODQyMDFFNDM5QjI5MDA2MjFFOTIgLyogbGVn
YWN5X2VuY29kZWRfYXVkaW9fZnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNUY4ODhDMjcz
OTYxNzEwMDQ3QUQ2NCAvKiBjYXB0dXJlX2Nsb2NrX29mZnNldF91cGRhdGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE2NTk4LDcgKzE2NTMzLDYgQEAKIAkJCQk0MUEwOEJDQjIxMjY5NjFGMDAxRDVE
N0IgLyogcmF3X2xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTMzMUU0QTk5RDIw
MDQwMzk5NSAvKiByZGIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMDg4NTM0MUU0QTk5RDIwMDQw
Mzk5NSAvKiByZGJ4LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzYzRjhERjFFNDE2RDUzMDAyQ0E1
MzEgLyogcmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNEM3ODFFNDMxRjlDMDAyNjUx
QzggLyogcmVhbF9mb3VyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzRCNEM3MzFFNDMxRjlD
MDAyNjUxQzggLyogcmVhbF9mb3VyaWVyX29vdXJhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlD
ODNDQTFGRTI0N0I0MDA0MEMzMEYgLyogcmVjZWl2ZV9zdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LywKQEAgLTE3MDk4LDcgKzE3MDMyLDYgQEAKIAkJCQk0MTMyM0ExQTI2NjUyODM4MDBCMzg2MjMg
LyogbGlidnB4X2ludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1RjFGQjYyMTI3MkZC
QTAwMDY0Q0JGIC8qIHZhZF93aXRoX2xldmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTMyM0E3
RjI2NjUyQzRDMDBCMzg2MjMgLyogYXVkaW9fc2FtcGxlc19zY2FsZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTVDNjNGOEUwMUU0MTZENTMwMDJDQTUzMSAvKiB2YWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDE1RjFGQjcyMTI3MkZCQTAwMDY0Q0JGIC8qIHZlY3Rvcl9mbG9hdF9mcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE4OTNBMDkyNDJBNzUzQzAwN0ZEQzQxIC8qIHZlY3Rvcl9tYXRo
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTJGRjlBRTI1NEIzRUZCMDAxREYwMzYgLyogdmlkZW9f
YWRhcHRhdGlvbl9jb3VudGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzIxNSw3ICsxNzE0OCw2
IEBACiAJCQkJNUM0QjRDODcxRTQzMUY5QzAwMjY1MUM4IC8qIHdpbmRvd19nZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDREQ4Qzk5MUU0M0M2NjAwMDYyMUU5MiAvKiB3cGRfbm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNERDhDOUMxRTQzQzY2MDAwNjIxRTkyIC8qIHdwZF90cmVl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1QzYzRjhFMTFFNDE2RDUzMDAyQ0E1MzEgLyogd3JpdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTJGRkExNjI1NEI0MEUxMDAxREYwMzYgLyogeWllbGQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDNEZEMjM0Qzg2Q0IwMDI4QTYxNSAvKiB5aWVsZF9w
b2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzFDMTJBMjM0Qjg5RTIwMDI4QTYxNSAvKiB6
ZXJvX21lbW9yeS5oIGluIEhlYWRlcnMgKi8sCi0tIAoyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>